Merge "Only try to add details to zip once." into nyc-dev
diff --git a/Android.mk b/Android.mk
index 2017404..f875be2 100644
--- a/Android.mk
+++ b/Android.mk
@@ -472,7 +472,8 @@
 
 LOCAL_AIDL_INCLUDES += \
 	frameworks/av/camera/aidl \
-	frameworks/native/aidl/gui
+	frameworks/native/aidl/gui \
+	system/netd/server/binder
 
 LOCAL_INTERMEDIATE_SOURCES := \
 			$(framework_res_source_path)/android/R.java \
@@ -688,6 +689,7 @@
 	frameworks/base/core/java/android/database/CursorWindow.aidl \
 	frameworks/base/core/java/android/service/quicksettings/Tile.aidl \
 	frameworks/native/aidl/binder/android/os/PersistableBundle.aidl \
+	system/netd/server/binder/android/net/UidRange.aidl \
 
 gen := $(TARGET_OUT_COMMON_INTERMEDIATES)/framework.aidl
 $(gen): PRIVATE_SRC_FILES := $(aidl_files)
diff --git a/api/current.txt b/api/current.txt
index 535ab01..61345fd 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -29527,7 +29527,7 @@
     field public static final int MEASUREMENT_BLUETOOTH_TX_MS = 10022; // 0x2726
     field public static final int MEASUREMENT_BLUETOOTH_TX_PACKETS = 10059; // 0x274b
     field public static final int MEASUREMENT_BUTTON_USER_ACTIVITY_COUNT = 10046; // 0x273e
-    field public static final int MEASUREMENT_CPU_POWER_MAUS = 10064; // 0x2750
+    field public static final int MEASUREMENT_CPU_POWER_MAMS = 10064; // 0x2750
     field public static final int MEASUREMENT_MOBILE_IDLE_MS = 10024; // 0x2728
     field public static final int MEASUREMENT_MOBILE_POWER_MAMS = 10027; // 0x272b
     field public static final int MEASUREMENT_MOBILE_RX_BYTES = 10048; // 0x2740
@@ -29539,11 +29539,11 @@
     field public static final int MEASUREMENT_OTHER_USER_ACTIVITY_COUNT = 10045; // 0x273d
     field public static final int MEASUREMENT_REALTIME_BATTERY_MS = 10001; // 0x2711
     field public static final int MEASUREMENT_REALTIME_SCREEN_OFF_BATTERY_MS = 10003; // 0x2713
-    field public static final int MEASUREMENT_SYSTEM_CPU_TIME_US = 10063; // 0x274f
+    field public static final int MEASUREMENT_SYSTEM_CPU_TIME_MS = 10063; // 0x274f
     field public static final int MEASUREMENT_TOUCH_USER_ACTIVITY_COUNT = 10047; // 0x273f
     field public static final int MEASUREMENT_UPTIME_BATTERY_MS = 10002; // 0x2712
     field public static final int MEASUREMENT_UPTIME_SCREEN_OFF_BATTERY_MS = 10004; // 0x2714
-    field public static final int MEASUREMENT_USER_CPU_TIME_US = 10062; // 0x274e
+    field public static final int MEASUREMENT_USER_CPU_TIME_MS = 10062; // 0x274e
     field public static final int MEASUREMENT_WIFI_FULL_LOCK_MS = 10029; // 0x272d
     field public static final int MEASUREMENT_WIFI_IDLE_MS = 10016; // 0x2720
     field public static final int MEASUREMENT_WIFI_MULTICAST_MS = 10031; // 0x272f
@@ -50589,16 +50589,13 @@
     method public static java.lang.Class<?> forName(java.lang.String, boolean, java.lang.ClassLoader) throws java.lang.ClassNotFoundException;
     method public A getAnnotation(java.lang.Class<A>);
     method public java.lang.annotation.Annotation[] getAnnotations();
-    method public T[] getAnnotationsByType(java.lang.Class<T>);
     method public java.lang.String getCanonicalName();
     method public java.lang.ClassLoader getClassLoader();
     method public java.lang.Class<?>[] getClasses();
     method public java.lang.Class<?> getComponentType();
     method public java.lang.reflect.Constructor<T> getConstructor(java.lang.Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
     method public java.lang.reflect.Constructor<?>[] getConstructors() throws java.lang.SecurityException;
-    method public T getDeclaredAnnotation(java.lang.Class<T>);
     method public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public T[] getDeclaredAnnotationsByType(java.lang.Class<T>);
     method public java.lang.Class<?>[] getDeclaredClasses();
     method public java.lang.reflect.Constructor<T> getDeclaredConstructor(java.lang.Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
     method public java.lang.reflect.Constructor<?>[] getDeclaredConstructors() throws java.lang.SecurityException;
@@ -50629,7 +50626,6 @@
     method public java.lang.Class<? super T> getSuperclass();
     method public synchronized java.lang.reflect.TypeVariable<java.lang.Class<T>>[] getTypeParameters();
     method public boolean isAnnotation();
-    method public boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
     method public boolean isAnonymousClass();
     method public boolean isArray();
     method public boolean isAssignableFrom(java.lang.Class<?>);
@@ -51172,10 +51168,10 @@
   public class Package implements java.lang.reflect.AnnotatedElement {
     method public A getAnnotation(java.lang.Class<A>);
     method public java.lang.annotation.Annotation[] getAnnotations();
-    method public T[] getAnnotationsByType(java.lang.Class<T>);
-    method public java.lang.annotation.Annotation getDeclaredAnnotation(java.lang.Class<T>);
+    method public A[] getAnnotationsByType(java.lang.Class<A>);
+    method public A getDeclaredAnnotation(java.lang.Class<A>);
     method public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public T[] getDeclaredAnnotationsByType(java.lang.Class<T>);
+    method public A[] getDeclaredAnnotationsByType(java.lang.Class<A>);
     method public java.lang.String getImplementationTitle();
     method public java.lang.String getImplementationVendor();
     method public java.lang.String getImplementationVersion();
@@ -51185,7 +51181,6 @@
     method public java.lang.String getSpecificationTitle();
     method public java.lang.String getSpecificationVendor();
     method public java.lang.String getSpecificationVersion();
-    method public boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
     method public boolean isCompatibleWith(java.lang.String) throws java.lang.NumberFormatException;
     method public boolean isSealed();
     method public boolean isSealed(java.net.URL);
@@ -51854,12 +51849,8 @@
     ctor protected AccessibleObject();
     method public T getAnnotation(java.lang.Class<T>);
     method public java.lang.annotation.Annotation[] getAnnotations();
-    method public T[] getAnnotationsByType(java.lang.Class<T>);
-    method public java.lang.annotation.Annotation getDeclaredAnnotation(java.lang.Class<T>);
     method public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public T[] getDeclaredAnnotationsByType(java.lang.Class<T>);
     method public boolean isAccessible();
-    method public boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
     method public static void setAccessible(java.lang.reflect.AccessibleObject[], boolean) throws java.lang.SecurityException;
     method public void setAccessible(boolean) throws java.lang.SecurityException;
   }
@@ -51867,11 +51858,11 @@
   public abstract interface AnnotatedElement {
     method public abstract T getAnnotation(java.lang.Class<T>);
     method public abstract java.lang.annotation.Annotation[] getAnnotations();
-    method public abstract T[] getAnnotationsByType(java.lang.Class<T>);
-    method public abstract java.lang.annotation.Annotation getDeclaredAnnotation(java.lang.Class<T>);
+    method public default T[] getAnnotationsByType(java.lang.Class<T>);
+    method public default java.lang.annotation.Annotation getDeclaredAnnotation(java.lang.Class<T>);
     method public abstract java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public abstract T[] getDeclaredAnnotationsByType(java.lang.Class<T>);
-    method public abstract boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
+    method public default T[] getDeclaredAnnotationsByType(java.lang.Class<T>);
+    method public default boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
   }
 
   public final class Array {
@@ -51934,6 +51925,7 @@
     method public java.lang.String getName();
     method public short getShort(java.lang.Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
     method public java.lang.Class<?> getType();
+    method public boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
     method public boolean isEnumConstant();
     method public boolean isSynthetic();
     method public void set(java.lang.Object, java.lang.Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
diff --git a/api/system-current.txt b/api/system-current.txt
index 2f39ac0..d44e157 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -32024,7 +32024,7 @@
     field public static final int MEASUREMENT_BLUETOOTH_TX_MS = 10022; // 0x2726
     field public static final int MEASUREMENT_BLUETOOTH_TX_PACKETS = 10059; // 0x274b
     field public static final int MEASUREMENT_BUTTON_USER_ACTIVITY_COUNT = 10046; // 0x273e
-    field public static final int MEASUREMENT_CPU_POWER_MAUS = 10064; // 0x2750
+    field public static final int MEASUREMENT_CPU_POWER_MAMS = 10064; // 0x2750
     field public static final int MEASUREMENT_MOBILE_IDLE_MS = 10024; // 0x2728
     field public static final int MEASUREMENT_MOBILE_POWER_MAMS = 10027; // 0x272b
     field public static final int MEASUREMENT_MOBILE_RX_BYTES = 10048; // 0x2740
@@ -32036,11 +32036,11 @@
     field public static final int MEASUREMENT_OTHER_USER_ACTIVITY_COUNT = 10045; // 0x273d
     field public static final int MEASUREMENT_REALTIME_BATTERY_MS = 10001; // 0x2711
     field public static final int MEASUREMENT_REALTIME_SCREEN_OFF_BATTERY_MS = 10003; // 0x2713
-    field public static final int MEASUREMENT_SYSTEM_CPU_TIME_US = 10063; // 0x274f
+    field public static final int MEASUREMENT_SYSTEM_CPU_TIME_MS = 10063; // 0x274f
     field public static final int MEASUREMENT_TOUCH_USER_ACTIVITY_COUNT = 10047; // 0x273f
     field public static final int MEASUREMENT_UPTIME_BATTERY_MS = 10002; // 0x2712
     field public static final int MEASUREMENT_UPTIME_SCREEN_OFF_BATTERY_MS = 10004; // 0x2714
-    field public static final int MEASUREMENT_USER_CPU_TIME_US = 10062; // 0x274e
+    field public static final int MEASUREMENT_USER_CPU_TIME_MS = 10062; // 0x274e
     field public static final int MEASUREMENT_WIFI_FULL_LOCK_MS = 10029; // 0x272d
     field public static final int MEASUREMENT_WIFI_IDLE_MS = 10016; // 0x2720
     field public static final int MEASUREMENT_WIFI_MULTICAST_MS = 10031; // 0x272f
@@ -32920,6 +32920,7 @@
     method public abstract void onConnected();
     method public abstract void onDisconnected();
     method public final void updateRecommendations(java.util.List<android.printservice.recommendation.RecommendationInfo>);
+    field public static final java.lang.String SERVICE_INTERFACE = "android.printservice.recommendation.RecommendationService";
   }
 
 }
@@ -53894,16 +53895,13 @@
     method public static java.lang.Class<?> forName(java.lang.String, boolean, java.lang.ClassLoader) throws java.lang.ClassNotFoundException;
     method public A getAnnotation(java.lang.Class<A>);
     method public java.lang.annotation.Annotation[] getAnnotations();
-    method public T[] getAnnotationsByType(java.lang.Class<T>);
     method public java.lang.String getCanonicalName();
     method public java.lang.ClassLoader getClassLoader();
     method public java.lang.Class<?>[] getClasses();
     method public java.lang.Class<?> getComponentType();
     method public java.lang.reflect.Constructor<T> getConstructor(java.lang.Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
     method public java.lang.reflect.Constructor<?>[] getConstructors() throws java.lang.SecurityException;
-    method public T getDeclaredAnnotation(java.lang.Class<T>);
     method public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public T[] getDeclaredAnnotationsByType(java.lang.Class<T>);
     method public java.lang.Class<?>[] getDeclaredClasses();
     method public java.lang.reflect.Constructor<T> getDeclaredConstructor(java.lang.Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
     method public java.lang.reflect.Constructor<?>[] getDeclaredConstructors() throws java.lang.SecurityException;
@@ -53934,7 +53932,6 @@
     method public java.lang.Class<? super T> getSuperclass();
     method public synchronized java.lang.reflect.TypeVariable<java.lang.Class<T>>[] getTypeParameters();
     method public boolean isAnnotation();
-    method public boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
     method public boolean isAnonymousClass();
     method public boolean isArray();
     method public boolean isAssignableFrom(java.lang.Class<?>);
@@ -54477,10 +54474,10 @@
   public class Package implements java.lang.reflect.AnnotatedElement {
     method public A getAnnotation(java.lang.Class<A>);
     method public java.lang.annotation.Annotation[] getAnnotations();
-    method public T[] getAnnotationsByType(java.lang.Class<T>);
-    method public java.lang.annotation.Annotation getDeclaredAnnotation(java.lang.Class<T>);
+    method public A[] getAnnotationsByType(java.lang.Class<A>);
+    method public A getDeclaredAnnotation(java.lang.Class<A>);
     method public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public T[] getDeclaredAnnotationsByType(java.lang.Class<T>);
+    method public A[] getDeclaredAnnotationsByType(java.lang.Class<A>);
     method public java.lang.String getImplementationTitle();
     method public java.lang.String getImplementationVendor();
     method public java.lang.String getImplementationVersion();
@@ -54490,7 +54487,6 @@
     method public java.lang.String getSpecificationTitle();
     method public java.lang.String getSpecificationVendor();
     method public java.lang.String getSpecificationVersion();
-    method public boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
     method public boolean isCompatibleWith(java.lang.String) throws java.lang.NumberFormatException;
     method public boolean isSealed();
     method public boolean isSealed(java.net.URL);
@@ -55159,12 +55155,8 @@
     ctor protected AccessibleObject();
     method public T getAnnotation(java.lang.Class<T>);
     method public java.lang.annotation.Annotation[] getAnnotations();
-    method public T[] getAnnotationsByType(java.lang.Class<T>);
-    method public java.lang.annotation.Annotation getDeclaredAnnotation(java.lang.Class<T>);
     method public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public T[] getDeclaredAnnotationsByType(java.lang.Class<T>);
     method public boolean isAccessible();
-    method public boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
     method public static void setAccessible(java.lang.reflect.AccessibleObject[], boolean) throws java.lang.SecurityException;
     method public void setAccessible(boolean) throws java.lang.SecurityException;
   }
@@ -55172,11 +55164,11 @@
   public abstract interface AnnotatedElement {
     method public abstract T getAnnotation(java.lang.Class<T>);
     method public abstract java.lang.annotation.Annotation[] getAnnotations();
-    method public abstract T[] getAnnotationsByType(java.lang.Class<T>);
-    method public abstract java.lang.annotation.Annotation getDeclaredAnnotation(java.lang.Class<T>);
+    method public default T[] getAnnotationsByType(java.lang.Class<T>);
+    method public default java.lang.annotation.Annotation getDeclaredAnnotation(java.lang.Class<T>);
     method public abstract java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public abstract T[] getDeclaredAnnotationsByType(java.lang.Class<T>);
-    method public abstract boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
+    method public default T[] getDeclaredAnnotationsByType(java.lang.Class<T>);
+    method public default boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
   }
 
   public final class Array {
@@ -55239,6 +55231,7 @@
     method public java.lang.String getName();
     method public short getShort(java.lang.Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
     method public java.lang.Class<?> getType();
+    method public boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
     method public boolean isEnumConstant();
     method public boolean isSynthetic();
     method public void set(java.lang.Object, java.lang.Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
diff --git a/api/test-current.txt b/api/test-current.txt
index 2ccf37a..4020993 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -29596,7 +29596,7 @@
     field public static final int MEASUREMENT_BLUETOOTH_TX_MS = 10022; // 0x2726
     field public static final int MEASUREMENT_BLUETOOTH_TX_PACKETS = 10059; // 0x274b
     field public static final int MEASUREMENT_BUTTON_USER_ACTIVITY_COUNT = 10046; // 0x273e
-    field public static final int MEASUREMENT_CPU_POWER_MAUS = 10064; // 0x2750
+    field public static final int MEASUREMENT_CPU_POWER_MAMS = 10064; // 0x2750
     field public static final int MEASUREMENT_MOBILE_IDLE_MS = 10024; // 0x2728
     field public static final int MEASUREMENT_MOBILE_POWER_MAMS = 10027; // 0x272b
     field public static final int MEASUREMENT_MOBILE_RX_BYTES = 10048; // 0x2740
@@ -29608,11 +29608,11 @@
     field public static final int MEASUREMENT_OTHER_USER_ACTIVITY_COUNT = 10045; // 0x273d
     field public static final int MEASUREMENT_REALTIME_BATTERY_MS = 10001; // 0x2711
     field public static final int MEASUREMENT_REALTIME_SCREEN_OFF_BATTERY_MS = 10003; // 0x2713
-    field public static final int MEASUREMENT_SYSTEM_CPU_TIME_US = 10063; // 0x274f
+    field public static final int MEASUREMENT_SYSTEM_CPU_TIME_MS = 10063; // 0x274f
     field public static final int MEASUREMENT_TOUCH_USER_ACTIVITY_COUNT = 10047; // 0x273f
     field public static final int MEASUREMENT_UPTIME_BATTERY_MS = 10002; // 0x2712
     field public static final int MEASUREMENT_UPTIME_SCREEN_OFF_BATTERY_MS = 10004; // 0x2714
-    field public static final int MEASUREMENT_USER_CPU_TIME_US = 10062; // 0x274e
+    field public static final int MEASUREMENT_USER_CPU_TIME_MS = 10062; // 0x274e
     field public static final int MEASUREMENT_WIFI_FULL_LOCK_MS = 10029; // 0x272d
     field public static final int MEASUREMENT_WIFI_IDLE_MS = 10016; // 0x2720
     field public static final int MEASUREMENT_WIFI_MULTICAST_MS = 10031; // 0x272f
@@ -50667,16 +50667,13 @@
     method public static java.lang.Class<?> forName(java.lang.String, boolean, java.lang.ClassLoader) throws java.lang.ClassNotFoundException;
     method public A getAnnotation(java.lang.Class<A>);
     method public java.lang.annotation.Annotation[] getAnnotations();
-    method public T[] getAnnotationsByType(java.lang.Class<T>);
     method public java.lang.String getCanonicalName();
     method public java.lang.ClassLoader getClassLoader();
     method public java.lang.Class<?>[] getClasses();
     method public java.lang.Class<?> getComponentType();
     method public java.lang.reflect.Constructor<T> getConstructor(java.lang.Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
     method public java.lang.reflect.Constructor<?>[] getConstructors() throws java.lang.SecurityException;
-    method public T getDeclaredAnnotation(java.lang.Class<T>);
     method public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public T[] getDeclaredAnnotationsByType(java.lang.Class<T>);
     method public java.lang.Class<?>[] getDeclaredClasses();
     method public java.lang.reflect.Constructor<T> getDeclaredConstructor(java.lang.Class<?>...) throws java.lang.NoSuchMethodException, java.lang.SecurityException;
     method public java.lang.reflect.Constructor<?>[] getDeclaredConstructors() throws java.lang.SecurityException;
@@ -50707,7 +50704,6 @@
     method public java.lang.Class<? super T> getSuperclass();
     method public synchronized java.lang.reflect.TypeVariable<java.lang.Class<T>>[] getTypeParameters();
     method public boolean isAnnotation();
-    method public boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
     method public boolean isAnonymousClass();
     method public boolean isArray();
     method public boolean isAssignableFrom(java.lang.Class<?>);
@@ -51250,10 +51246,10 @@
   public class Package implements java.lang.reflect.AnnotatedElement {
     method public A getAnnotation(java.lang.Class<A>);
     method public java.lang.annotation.Annotation[] getAnnotations();
-    method public T[] getAnnotationsByType(java.lang.Class<T>);
-    method public java.lang.annotation.Annotation getDeclaredAnnotation(java.lang.Class<T>);
+    method public A[] getAnnotationsByType(java.lang.Class<A>);
+    method public A getDeclaredAnnotation(java.lang.Class<A>);
     method public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public T[] getDeclaredAnnotationsByType(java.lang.Class<T>);
+    method public A[] getDeclaredAnnotationsByType(java.lang.Class<A>);
     method public java.lang.String getImplementationTitle();
     method public java.lang.String getImplementationVendor();
     method public java.lang.String getImplementationVersion();
@@ -51263,7 +51259,6 @@
     method public java.lang.String getSpecificationTitle();
     method public java.lang.String getSpecificationVendor();
     method public java.lang.String getSpecificationVersion();
-    method public boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
     method public boolean isCompatibleWith(java.lang.String) throws java.lang.NumberFormatException;
     method public boolean isSealed();
     method public boolean isSealed(java.net.URL);
@@ -51932,12 +51927,8 @@
     ctor protected AccessibleObject();
     method public T getAnnotation(java.lang.Class<T>);
     method public java.lang.annotation.Annotation[] getAnnotations();
-    method public T[] getAnnotationsByType(java.lang.Class<T>);
-    method public java.lang.annotation.Annotation getDeclaredAnnotation(java.lang.Class<T>);
     method public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public T[] getDeclaredAnnotationsByType(java.lang.Class<T>);
     method public boolean isAccessible();
-    method public boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
     method public static void setAccessible(java.lang.reflect.AccessibleObject[], boolean) throws java.lang.SecurityException;
     method public void setAccessible(boolean) throws java.lang.SecurityException;
   }
@@ -51945,11 +51936,11 @@
   public abstract interface AnnotatedElement {
     method public abstract T getAnnotation(java.lang.Class<T>);
     method public abstract java.lang.annotation.Annotation[] getAnnotations();
-    method public abstract T[] getAnnotationsByType(java.lang.Class<T>);
-    method public abstract java.lang.annotation.Annotation getDeclaredAnnotation(java.lang.Class<T>);
+    method public default T[] getAnnotationsByType(java.lang.Class<T>);
+    method public default java.lang.annotation.Annotation getDeclaredAnnotation(java.lang.Class<T>);
     method public abstract java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    method public abstract T[] getDeclaredAnnotationsByType(java.lang.Class<T>);
-    method public abstract boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
+    method public default T[] getDeclaredAnnotationsByType(java.lang.Class<T>);
+    method public default boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
   }
 
   public final class Array {
@@ -52012,6 +52003,7 @@
     method public java.lang.String getName();
     method public short getShort(java.lang.Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
     method public java.lang.Class<?> getType();
+    method public boolean isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>);
     method public boolean isEnumConstant();
     method public boolean isSynthetic();
     method public void set(java.lang.Object, java.lang.Object) throws java.lang.IllegalAccessException, java.lang.IllegalArgumentException;
diff --git a/cmds/dpm/src/com/android/commands/dpm/Dpm.java b/cmds/dpm/src/com/android/commands/dpm/Dpm.java
index b83484d..31c7421 100644
--- a/cmds/dpm/src/com/android/commands/dpm/Dpm.java
+++ b/cmds/dpm/src/com/android/commands/dpm/Dpm.java
@@ -44,6 +44,7 @@
     private static final String COMMAND_SET_ACTIVE_ADMIN = "set-active-admin";
     private static final String COMMAND_SET_DEVICE_OWNER = "set-device-owner";
     private static final String COMMAND_SET_PROFILE_OWNER = "set-profile-owner";
+    private static final String COMMAND_REMOVE_ACTIVE_ADMIN = "remove-active-admin";
 
     private IDevicePolicyManager mDevicePolicyManager;
     private int mUserId = UserHandle.USER_SYSTEM;
@@ -60,6 +61,8 @@
                 "[ --name <NAME> ] <COMPONENT>\n" +
                 "usage: dpm set-profile-owner [ --user <USER_ID> | current ] [ --name <NAME> ] " +
                 "<COMPONENT>\n" +
+                "usage: dpm remove-active-admin [ --user <USER_ID> | current ] [ --name <NAME> ] " +
+                "<COMPONENT>\n" +
                 "\n" +
                 "dpm set-active-admin: Sets the given component as active admin" +
                 " for an existing user.\n" +
@@ -68,7 +71,11 @@
                 " package as device owner.\n" +
                 "\n" +
                 "dpm set-profile-owner: Sets the given component as active admin and profile" +
-                " owner for an existing user.\n");
+                " owner for an existing user.\n" +
+                "\n" +
+                "dpm remove-active-admin: Disables an active admin, the admin must have declared" +
+                " android:testOnly in the application in its manifest. This will also remove" +
+                " device and profile owners\n");
     }
 
     @Override
@@ -91,6 +98,9 @@
             case COMMAND_SET_PROFILE_OWNER:
                 runSetProfileOwner();
                 break;
+            case COMMAND_REMOVE_ACTIVE_ADMIN:
+                runRemoveActiveAdmin();
+                break;
             default:
                 throw new IllegalArgumentException ("unknown command '" + command + "'");
         }
@@ -152,6 +162,12 @@
         System.out.println("Active admin set to component " + mComponent.toShortString());
     }
 
+    private void runRemoveActiveAdmin() throws RemoteException {
+        parseArgs(/*canHaveName=*/ false);
+        mDevicePolicyManager.forceRemoveActiveAdmin(mComponent, mUserId);
+        System.out.println("Success: Admin removed " + mComponent);
+    }
+
     private void runSetProfileOwner() throws RemoteException {
         parseArgs(/*canHaveName=*/ true);
         mDevicePolicyManager.setActiveAdmin(mComponent, true /*refreshing*/, mUserId);
diff --git a/core/java/android/animation/AnimatorSet.java b/core/java/android/animation/AnimatorSet.java
index e788d27..8ff38bb 100644
--- a/core/java/android/animation/AnimatorSet.java
+++ b/core/java/android/animation/AnimatorSet.java
@@ -559,7 +559,8 @@
         boolean previouslyPaused = mPaused;
         super.pause();
         if (!previouslyPaused && mPaused) {
-            if (mDelayAnim != null) {
+            if (mDelayAnim.isStarted()) {
+                // If delay hasn't passed, pause the start delay animator.
                 mDelayAnim.pause();
             } else {
                 int size = mNodes.size();
@@ -578,7 +579,8 @@
         boolean previouslyPaused = mPaused;
         super.resume();
         if (previouslyPaused && !mPaused) {
-            if (mDelayAnim != null) {
+            if (mDelayAnim.isStarted()) {
+                // If start delay hasn't passed, resume the previously paused start delay animator
                 mDelayAnim.resume();
             } else {
                 int size = mNodes.size();
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index cc76854..9bd648f 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -200,7 +200,7 @@
  *
  * <p>An activity has essentially four states:</p>
  * <ul>
- *     <li> If an activity in the foreground of the screen (at the top of
+ *     <li> If an activity is in the foreground of the screen (at the top of
  *         the stack),
  *         it is <em>active</em> or  <em>running</em>. </li>
  *     <li>If an activity has lost focus but is still visible (that is, a new non-full-sized
@@ -674,7 +674,7 @@
  * independently of the activity lifecycle itself.  An example may be a camera
  * application that allows you to upload a picture to a web site.  The upload
  * may take a long time, and the application should allow the user to leave
- * the application will it is executing.  To accomplish this, your Activity
+ * the application while it is executing.  To accomplish this, your Activity
  * should start a {@link Service} in which the upload takes place.  This allows
  * the system to properly prioritize your process (considering it to be more
  * important than other non-visible applications) for the duration of the
@@ -4077,28 +4077,10 @@
      * result callbacks including {@link #onRequestPermissionsResult(int, String[], int[])}.
      * </p>
      * <p>
-     * A sample permissions request looks like this:
+     * The <a href="http://developer.android.com/samples/RuntimePermissions/index.html">
+     * RuntimePermissions</a> sample app demonstrates how to use this method to
+     * request permissions at run time.
      * </p>
-     * <code><pre><p>
-     * private void showContacts() {
-     *     if (checkSelfPermission(Manifest.permission.READ_CONTACTS)
-     *             != PackageManager.PERMISSION_GRANTED) {
-     *         requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
-     *                 PERMISSIONS_REQUEST_READ_CONTACTS);
-     *     } else {
-     *         doShowContacts();
-     *     }
-     * }
-     *
-     * {@literal @}Override
-     * public void onRequestPermissionsResult(int requestCode, String[] permissions,
-     *         int[] grantResults) {
-     *     if (requestCode == PERMISSIONS_REQUEST_READ_CONTACTS
-     *             && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-     *         showContacts();
-     *     }
-     * }
-     * </code></pre></p>
      *
      * @param permissions The requested permissions. Must me non-null and not empty.
      * @param requestCode Application specific request code to match with a result
diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java
index ee4c2f7..4b8d9ee 100644
--- a/core/java/android/app/ActivityManagerInternal.java
+++ b/core/java/android/app/ActivityManagerInternal.java
@@ -139,4 +139,9 @@
      * minimized state.
      */
     public abstract void notifyDockedStackMinimizedChanged(boolean minimized);
+
+    /**
+     * Kill foreground apps from the specified user.
+     */
+    public abstract void killForegroundAppsForUser(int userHandle);
 }
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 7a18df6..0ca2e14 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -6391,6 +6391,24 @@
         }
     }
 
+    /**
+     * @hide
+     * Remove a test admin synchronously without sending it a broadcast about being removed.
+     * If the admin is a profile owner or device owner it will still be removed.
+     *
+     * @param userHandle user id to remove the admin for.
+     * @param admin The administration compononent to remove.
+     * @throws SecurityException if the caller is not shell / root or the admin package
+     *         isn't a test application see {@link ApplicationInfo#FLAG_TEST_APP}.
+     */
+    public void forceRemoveActiveAdmin(ComponentName adminReceiver, int userHandle) {
+        try {
+            mService.forceRemoveActiveAdmin(adminReceiver, userHandle);
+        } catch (RemoteException re) {
+            throw re.rethrowFromSystemServer();
+        }
+    }
+
     private void throwIfParentInstance(String functionName) {
         if (mParentInstance) {
             throw new SecurityException(functionName + " cannot be called on the parent instance");
diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl
index cba64c2..989e613 100644
--- a/core/java/android/app/admin/IDevicePolicyManager.aidl
+++ b/core/java/android/app/admin/IDevicePolicyManager.aidl
@@ -111,6 +111,7 @@
     boolean packageHasActiveAdmins(String packageName, int userHandle);
     void getRemoveWarning(in ComponentName policyReceiver, in RemoteCallback result, int userHandle);
     void removeActiveAdmin(in ComponentName policyReceiver, int userHandle);
+    void forceRemoveActiveAdmin(in ComponentName policyReceiver, int userHandle);
     boolean hasGrantedPolicy(in ComponentName policyReceiver, int usesPolicy, int userHandle);
 
     void setActivePasswordState(int quality, int length, int letters, int uppercase, int lowercase,
diff --git a/core/java/android/appwidget/package.html b/core/java/android/appwidget/package.html
index d4c0db0..29f2e2b 100644
--- a/core/java/android/appwidget/package.html
+++ b/core/java/android/appwidget/package.html
@@ -16,7 +16,7 @@
 android.appwidget.AppWidgetManager#ACTION_APPWIDGET_UPDATE} intent
 and provide some metadata about the app widget.  Android provides the
 {@link android.appwidget.AppWidgetProvider} class, which extends {@link
-android.content.BroadcastReceiver}, as a convenience class to define the app widget behavrio and aid
+android.content.BroadcastReceiver}, as a convenience class to define the app widget behavior and aid
 in handling the broadcasts.</p>
 
 <p>App widget hosts are the containers in which widgets can be placed.  Most of the look and feel
diff --git a/core/java/android/bluetooth/OobData.java b/core/java/android/bluetooth/OobData.java
index 70d47ee..8e659e0 100644
--- a/core/java/android/bluetooth/OobData.java
+++ b/core/java/android/bluetooth/OobData.java
@@ -22,7 +22,11 @@
 import android.util.Log;
 
 /**
- * Out Of Band Data for Bluetooth device.
+ * Out Of Band Data for Bluetooth device pairing.
+ *
+ * <p>This object represents optional data obtained from a remote device through
+ * an out-of-band channel (eg. NFC).
+ *
  * @hide
  */
 public class OobData implements Parcelable {
@@ -32,6 +36,11 @@
         return securityManagerTk;
     }
 
+    /**
+     * Sets the Temporary Key value to be used by the LE Security Manager during
+     * LE pairing. The value shall be 16 bytes. Please see Bluetooth CSSv6,
+     * Part A 1.8 for a detailed description.
+     */
     public void setSecurityManagerTk(byte[] securityManagerTk) {
         this.securityManagerTk = securityManagerTk;
     }
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index 15cc17d..8349d3d 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -2446,6 +2446,15 @@
      * <p>This function will throw {@link SecurityException} if you do not
      * have permission to start the given service.
      *
+     * <p class="note"><strong>Note:</strong> Each call to startService()
+     * results in significant work done by the system to manage service
+     * lifecycle surrounding the processing of the intent, which can take
+     * multiple milliseconds of CPU time. Due to this cost, startService()
+     * should not be used for frequent intent delivery to a service, and only
+     * for scheduling significant work. Use {@link #bindService bound services}
+     * for high frequency calls.
+     * </p>
+     *
      * @param service Identifies the service to be started.  The Intent must be either
      *      fully explicit (supplying a component name) or specify a specific package
      *      name it is targetted to.  Additional values
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index fb4dd84..996ccba 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -115,7 +115,7 @@
  *   </li>
  *   <li> <p><b>{@link #ACTION_VIEW} <i>tel:123</i></b> -- Display
  *     the phone dialer with the given number filled in.  Note how the
- *     VIEW action does what what is considered the most reasonable thing for
+ *     VIEW action does what is considered the most reasonable thing for
  *     a particular URI.</p>
  *   </li>
  *   <li> <p><b>{@link #ACTION_DIAL} <i>tel:123</i></b> -- Display
@@ -186,7 +186,7 @@
  *
  * <p>There are a variety of standard Intent action and category constants
  * defined in the Intent class, but applications can also define their own.
- * These strings use java style scoping, to ensure they are unique -- for
+ * These strings use Java-style scoping, to ensure they are unique -- for
  * example, the standard {@link #ACTION_VIEW} is called
  * "android.intent.action.VIEW".</p>
  *
@@ -339,7 +339,7 @@
  *     &lt;action android:name="{@link #ACTION_EDIT android.intent.action.EDIT}" /&gt;
  *     &lt;action android:name="{@link #ACTION_PICK android.intent.action.PICK}" /&gt;
  *     &lt;category android:name="{@link #CATEGORY_DEFAULT android.intent.category.DEFAULT}" /&gt;
- *     &lt;data mimeType:name="vnd.android.cursor.dir/<i>vnd.google.note</i>" /&gt;
+ *     &lt;data android:mimeType="vnd.android.cursor.dir/<i>vnd.google.note</i>" /&gt;
  * &lt;/intent-filter&gt;</pre>
  * <p>This declares the things that the activity can do on a directory of
  * notes.  The type being supported is given with the &lt;type&gt; tag, where
@@ -358,7 +358,7 @@
  *     &lt;category android:name="{@link #CATEGORY_DEFAULT android.intent.category.DEFAULT}" /&gt;
  *     &lt;data android:mimeType="vnd.android.cursor.item/<i>vnd.google.note</i>" /&gt;
  * &lt;/intent-filter&gt;</pre>
- * <p>This filter describes the ability return to the caller a note selected by
+ * <p>This filter describes the ability to return to the caller a note selected by
  * the user without needing to know where it came from.  The data type
  * <code>vnd.android.cursor.item/vnd.google.note</code> is a URI from which
  * a Cursor of exactly one (<code>vnd.android.cursor.item</code>) item can
@@ -1324,14 +1324,14 @@
             "android.intent.extra.ASSIST_INPUT_DEVICE_ID";
 
     /**
-     * Activity Action: List all available applications
+     * Activity Action: List all available applications.
      * <p>Input: Nothing.
      * <p>Output: nothing.
      */
     @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
     public static final String ACTION_ALL_APPS = "android.intent.action.ALL_APPS";
     /**
-     * Activity Action: Show settings for choosing wallpaper
+     * Activity Action: Show settings for choosing wallpaper.
      * <p>Input: Nothing.
      * <p>Output: Nothing.
      */
@@ -2070,7 +2070,7 @@
     /**
      * Broadcast Action: An existing application package has been removed from
      * the device.  The data contains the name of the package.  The package
-     * that is being installed does <em>not</em> receive this Intent.
+     * that is being removed does <em>not</em> receive this Intent.
      * <ul>
      * <li> {@link #EXTRA_UID} containing the integer uid previously assigned
      * to the package.
@@ -2104,9 +2104,9 @@
     public static final String ACTION_PACKAGE_FULLY_REMOVED
             = "android.intent.action.PACKAGE_FULLY_REMOVED";
     /**
-     * Broadcast Action: An existing application package has been changed (e.g.
-     * a component has been enabled or disabled).  The data contains the name of
-     * the package.
+     * Broadcast Action: An existing application package has been changed (for
+     * example, a component has been enabled or disabled).  The data contains
+     * the name of the package.
      * <ul>
      * <li> {@link #EXTRA_UID} containing the integer uid assigned to the package.
      * <li> {@link #EXTRA_CHANGED_COMPONENT_NAME_LIST} containing the class name
@@ -2202,9 +2202,9 @@
     public static final String ACTION_UID_REMOVED = "android.intent.action.UID_REMOVED";
 
     /**
-     * Broadcast Action: Sent to the installer package of an application
-     * when that application is first launched (that is the first time it
-     * is moved out of the stopped state).  The data contains the name of the package.
+     * Broadcast Action: Sent to the installer package of an application when
+     * that application is first launched (that is the first time it is moved
+     * out of the stopped state).  The data contains the name of the package.
      *
      * <p class="note">This is a protected intent that can only be sent
      * by the system.
@@ -2232,8 +2232,9 @@
     public static final String ACTION_PACKAGE_VERIFIED = "android.intent.action.PACKAGE_VERIFIED";
 
     /**
-     * Broadcast Action: Sent to the system intent filter verifier when an intent filter
-     * needs to be verified. The data contains the filter data hosts to be verified against.
+     * Broadcast Action: Sent to the system intent filter verifier when an
+     * intent filter needs to be verified. The data contains the filter data
+     * hosts to be verified against.
      * <p class="note">
      * This is a protected intent that can only be sent by the system.
      * </p>
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 787974d..496bae4 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -1736,7 +1736,7 @@
 
     /**
      * Feature for {@link #getSystemAvailableFeatures} and
-     * {@link #hasSystemFeature}: The heart rate sensor on this device is an Electrocargiogram.
+     * {@link #hasSystemFeature}: The heart rate sensor on this device is an Electrocardiogram.
      */
     @SdkConstant(SdkConstantType.FEATURE)
     public static final String FEATURE_SENSOR_HEART_RATE_ECG =
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 4108f6d..bb8bca4 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -131,12 +131,6 @@
     /** File name in an APK for the Android manifest. */
     private static final String ANDROID_MANIFEST_FILENAME = "AndroidManifest.xml";
 
-    /**
-     * File name in an APK for bytecode.  There may be additional bytecode files
-     * but this one is always required for an APK that has code.
-     */
-    private static final String BYTECODE_FILENAME = "classes.dex";
-
     /** Path prefix for apps on expanded storage */
     private static final String MNT_EXPAND = "/mnt/expand/";
 
@@ -1137,13 +1131,11 @@
 
         Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "collectCertificates");
         try {
-            collectCertificates(
-                    pkg, new File(pkg.baseCodePath), pkg.applicationInfo.flags, parseFlags);
+            collectCertificates(pkg, new File(pkg.baseCodePath), parseFlags);
 
             if (!ArrayUtils.isEmpty(pkg.splitCodePaths)) {
                 for (int i = 0; i < pkg.splitCodePaths.length; i++) {
-                    collectCertificates(
-                            pkg, new File(pkg.splitCodePaths[i]), pkg.splitFlags[i], parseFlags);
+                    collectCertificates(pkg, new File(pkg.splitCodePaths[i]), parseFlags);
                 }
             }
         } finally {
@@ -1151,10 +1143,8 @@
         }
     }
 
-    private static void collectCertificates(Package pkg, File apkFile, int apkFlags, int parseFlags)
+    private static void collectCertificates(Package pkg, File apkFile, int parseFlags)
             throws PackageParserException {
-        final boolean hasCode = (apkFlags & ApplicationInfo.FLAG_HAS_CODE) != 0;
-        final boolean requireCode = ((parseFlags & PARSE_ENFORCE_CODE) != 0) && hasCode;
         final String apkPath = apkFile.getAbsolutePath();
 
         // Try to verify the APK using APK Signature Scheme v2.
@@ -1202,7 +1192,6 @@
             }
         }
 
-        boolean codeFound = false;
         StrictJarFile jarFile = null;
         try {
             Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "strictJarFileCtor");
@@ -1226,10 +1215,6 @@
 
             // Optimization: early termination when APK already verified
             if (verified) {
-                if ((requireCode) && (jarFile.findEntry(BYTECODE_FILENAME) == null)) {
-                    throw new PackageParserException(INSTALL_PARSE_FAILED_MANIFEST_MALFORMED,
-                            "Package " + apkPath + " code is missing");
-                }
                 return;
             }
 
@@ -1249,19 +1234,11 @@
                     final String entryName = entry.getName();
                     if (entryName.startsWith("META-INF/")) continue;
                     if (entryName.equals(ANDROID_MANIFEST_FILENAME)) continue;
-                    if (entryName.equals(BYTECODE_FILENAME)) {
-                        codeFound = true;
-                    }
 
                     toVerify.add(entry);
                 }
             }
 
-            if (!codeFound && requireCode) {
-                throw new PackageParserException(INSTALL_PARSE_FAILED_MANIFEST_MALFORMED,
-                        "Package " + apkPath + " code is missing");
-            }
-
             // Verify that entries are signed consistently with the first entry
             // we encountered. Note that for splits, certificates may have
             // already been populated during an earlier parse of a base APK.
@@ -1349,7 +1326,7 @@
                 final Package tempPkg = new Package(null);
                 Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "collectCertificates");
                 try {
-                    collectCertificates(tempPkg, apkFile, 0 /*apkFlags*/, 0 /*flags*/);
+                    collectCertificates(tempPkg, apkFile, 0 /*parseFlags*/);
                 } finally {
                     Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
                 }
diff --git a/core/java/android/hardware/input/InputManager.java b/core/java/android/hardware/input/InputManager.java
index 47440de..f810fec 100644
--- a/core/java/android/hardware/input/InputManager.java
+++ b/core/java/android/hardware/input/InputManager.java
@@ -121,7 +121,7 @@
      * </p><p>
      * The <code>android:name</code> attribute specifies an identifier by which
      * the keyboard layout will be known in the package.
-     * The <code>android:label</code> attributes specifies a human-readable descriptive
+     * The <code>android:label</code> attribute specifies a human-readable descriptive
      * label to describe the keyboard layout in the user interface, such as "English (US)".
      * The <code>android:keyboardLayout</code> attribute refers to a
      * <a href="http://source.android.com/tech/input/key-character-map-files.html">
diff --git a/core/java/android/net/INetworkPolicyListener.aidl b/core/java/android/net/INetworkPolicyListener.aidl
index 31dc965a..812f1fe 100644
--- a/core/java/android/net/INetworkPolicyListener.aidl
+++ b/core/java/android/net/INetworkPolicyListener.aidl
@@ -22,5 +22,6 @@
     void onUidRulesChanged(int uid, int uidRules);
     void onMeteredIfacesChanged(in String[] meteredIfaces);
     void onRestrictBackgroundChanged(boolean restrictBackground);
+    void onRestrictBackgroundWhitelistChanged(int uid, boolean whitelisted);
 
 }
diff --git a/core/java/android/net/UidRange.aidl b/core/java/android/net/UidRange.aidl
deleted file mode 100644
index f9be628..0000000
--- a/core/java/android/net/UidRange.aidl
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net;
-
-/**
- * An inclusive range of UIDs.
- *
- * {@hide}
- */
-parcelable UidRange;
diff --git a/core/java/android/nfc/cardemulation/HostApduService.java b/core/java/android/nfc/cardemulation/HostApduService.java
index a299479..9208d63 100644
--- a/core/java/android/nfc/cardemulation/HostApduService.java
+++ b/core/java/android/nfc/cardemulation/HostApduService.java
@@ -36,9 +36,9 @@
  *
  * <div class="special reference">
  * <h3>Developer Guide</h3>
- * For a general introduction into the topic of card emulation,
- * please read the <a href="{@docRoot}guide/topics/nfc/ce.html">
- * NFC card emulation developer guide.</a></p>
+ * For a general introduction to card emulation, see
+ * <a href="{@docRoot}guide/topics/connectivity/nfc/hce.html">
+ * Host-based Card Emulation</a>.</p>
  * </div>
  *
  * <h3>NFC Protocols</h3>
diff --git a/core/java/android/nfc/tech/NfcBarcode.java b/core/java/android/nfc/tech/NfcBarcode.java
index 8901f28..421ba78 100644
--- a/core/java/android/nfc/tech/NfcBarcode.java
+++ b/core/java/android/nfc/tech/NfcBarcode.java
@@ -113,10 +113,10 @@
      * <p>Does not cause any RF activity and does not block.
      *
      * @return a byte array containing the barcode
-     * @see <a href="http://www.kovio.com/docs/kovionfcbarcode.pdf">
-     *      Kovio 128-bit NFC barcode datasheet</a>
-     * @see <a href="http://kovio.com/docs/kovio-128-nfc-barcode-data-format.pdf">
-     *      Kovio 128-bit NFC barcode data format</a>
+     * @see <a href="http://www.thinfilm.no/docs/thinfilm-nfc-barcode-datasheet.pdf">
+     *      Thinfilm NFC Barcode tag specification (previously Kovio NFC Barcode)</a>
+     * @see <a href="http://www.thinfilm.no/docs/thinfilm-nfc-barcode-data-format.pdf">
+     *      Thinfilm NFC Barcode data format (previously Kovio NFC Barcode)</a>
      */
     public byte[] getBarcode() {
         switch (mType) {
diff --git a/core/java/android/os/BaseBundle.java b/core/java/android/os/BaseBundle.java
index 6d74056..004b2ce 100644
--- a/core/java/android/os/BaseBundle.java
+++ b/core/java/android/os/BaseBundle.java
@@ -65,11 +65,12 @@
         sShouldDefuse = shouldDefuse;
     }
 
+    // A parcel cannot be obtained during compile-time initialization. Put the
+    // empty parcel into an inner class that can be initialized separately. This
+    // allows to initialize BaseBundle, and classes depending on it.
     /** {@hide} */
-    static final Parcel EMPTY_PARCEL;
-
-    static {
-        EMPTY_PARCEL = Parcel.obtain();
+    static final class NoImagePreloadHolder {
+        public static final Parcel EMPTY_PARCEL = Parcel.obtain();
     }
 
     // Invariant - exactly one of mMap / mParcelledData will be null
@@ -156,8 +157,8 @@
      */
     BaseBundle(BaseBundle b) {
         if (b.mParcelledData != null) {
-            if (b.mParcelledData == EMPTY_PARCEL) {
-                mParcelledData = EMPTY_PARCEL;
+            if (b.isEmptyParcel()) {
+                mParcelledData = NoImagePreloadHolder.EMPTY_PARCEL;
             } else {
                 mParcelledData = Parcel.obtain();
                 mParcelledData.appendFrom(b.mParcelledData, 0, b.mParcelledData.dataSize());
@@ -236,7 +237,7 @@
                     + "clobber all data inside!", new Throwable());
         }
 
-        if (mParcelledData == EMPTY_PARCEL) {
+        if (isEmptyParcel()) {
             if (DEBUG) Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this))
                     + ": empty");
             if (mMap == null) {
@@ -284,6 +285,13 @@
         return mParcelledData != null;
     }
 
+    /**
+     * @hide
+     */
+    public boolean isEmptyParcel() {
+        return mParcelledData == NoImagePreloadHolder.EMPTY_PARCEL;
+    }
+
     /** @hide */
     ArrayMap<String, Object> getMap() {
         unparcel();
@@ -1368,7 +1376,7 @@
         // Keep implementation in sync with writeToParcel() in
         // frameworks/native/libs/binder/PersistableBundle.cpp.
         if (mParcelledData != null) {
-            if (mParcelledData == EMPTY_PARCEL) {
+            if (isEmptyParcel()) {
                 parcel.writeInt(0);
             } else {
                 int length = mParcelledData.dataSize();
@@ -1416,7 +1424,7 @@
 
         } else if (length == 0) {
             // Empty Bundle or end of data.
-            mParcelledData = EMPTY_PARCEL;
+            mParcelledData = NoImagePreloadHolder.EMPTY_PARCEL;
             return;
         }
 
diff --git a/core/java/android/os/Bundle.java b/core/java/android/os/Bundle.java
index 1128074..ca64a96 100644
--- a/core/java/android/os/Bundle.java
+++ b/core/java/android/os/Bundle.java
@@ -38,12 +38,9 @@
 
     public static final Bundle EMPTY;
 
-    static final Parcel EMPTY_PARCEL;
-
     static {
         EMPTY = new Bundle();
         EMPTY.mMap = ArrayMap.EMPTY;
-        EMPTY_PARCEL = BaseBundle.EMPTY_PARCEL;
     }
 
     /**
@@ -1155,7 +1152,7 @@
     @Override
     public synchronized String toString() {
         if (mParcelledData != null) {
-            if (mParcelledData == EMPTY_PARCEL) {
+            if (isEmptyParcel()) {
                 return "Bundle[EMPTY_PARCEL]";
             } else {
                 return "Bundle[mParcelledData.dataSize=" +
diff --git a/core/java/android/os/PersistableBundle.java b/core/java/android/os/PersistableBundle.java
index b947c97..db9f4b1 100644
--- a/core/java/android/os/PersistableBundle.java
+++ b/core/java/android/os/PersistableBundle.java
@@ -38,12 +38,10 @@
         XmlUtils.WriteMapCallback {
     private static final String TAG_PERSISTABLEMAP = "pbundle_as_map";
     public static final PersistableBundle EMPTY;
-    static final Parcel EMPTY_PARCEL;
 
     static {
         EMPTY = new PersistableBundle();
         EMPTY.mMap = ArrayMap.EMPTY;
-        EMPTY_PARCEL = BaseBundle.EMPTY_PARCEL;
     }
 
     /** @hide */
@@ -278,7 +276,7 @@
     @Override
     synchronized public String toString() {
         if (mParcelledData != null) {
-            if (mParcelledData == EMPTY_PARCEL) {
+            if (isEmptyParcel()) {
                 return "PersistableBundle[EMPTY_PARCEL]";
             } else {
                 return "PersistableBundle[mParcelledData.dataSize=" +
diff --git a/core/java/android/os/health/UidHealthStats.java b/core/java/android/os/health/UidHealthStats.java
index c7d257f..337235a 100644
--- a/core/java/android/os/health/UidHealthStats.java
+++ b/core/java/android/os/health/UidHealthStats.java
@@ -261,16 +261,16 @@
     public static final int TIMER_MOBILE_RADIO_ACTIVE = HealthKeys.BASE_UID + 61;
 
     @HealthKeys.Constant(type=HealthKeys.TYPE_MEASUREMENT)
-    public static final int MEASUREMENT_USER_CPU_TIME_US = HealthKeys.BASE_UID + 62;
+    public static final int MEASUREMENT_USER_CPU_TIME_MS = HealthKeys.BASE_UID + 62;
 
     @HealthKeys.Constant(type=HealthKeys.TYPE_MEASUREMENT)
-    public static final int MEASUREMENT_SYSTEM_CPU_TIME_US = HealthKeys.BASE_UID + 63;
+    public static final int MEASUREMENT_SYSTEM_CPU_TIME_MS = HealthKeys.BASE_UID + 63;
 
     /**
      * An estimate of the number of milliamp-microsends used by this uid.
      */
     @HealthKeys.Constant(type=HealthKeys.TYPE_MEASUREMENT)
-    public static final int MEASUREMENT_CPU_POWER_MAUS = HealthKeys.BASE_UID + 64;
+    public static final int MEASUREMENT_CPU_POWER_MAMS = HealthKeys.BASE_UID + 64;
 
     /**
      * @hide
diff --git a/core/java/android/printservice/recommendation/RecommendationService.java b/core/java/android/printservice/recommendation/RecommendationService.java
index b7ea512..733629a 100644
--- a/core/java/android/printservice/recommendation/RecommendationService.java
+++ b/core/java/android/printservice/recommendation/RecommendationService.java
@@ -27,7 +27,6 @@
 import android.os.Message;
 import android.os.RemoteException;
 import android.util.Log;
-import com.android.internal.annotations.GuardedBy;
 
 import java.util.List;
 
@@ -46,8 +45,6 @@
     /**
      * The {@link Intent} action that must be declared as handled by a service in its manifest for
      * the system to recognize it as a print service recommendation service.
-     *
-     * @hide
      */
     public static final String SERVICE_INTERFACE =
             "android.printservice.recommendation.RecommendationService";
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 788a20c..6b60f47 100755
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -1569,15 +1569,17 @@
     }
 
     /**
-     * An app can use this method to check if it is currently allowed to draw on top of other
-     * apps. In order to be allowed to do so, an app must first declare the
-     * {@link android.Manifest.permission#SYSTEM_ALERT_WINDOW} permission in its manifest. If it
-     * is currently disallowed, it can prompt the user to grant it this capability through a
-     * management UI by sending an Intent with action
-     * {@link android.provider.Settings#ACTION_MANAGE_OVERLAY_PERMISSION}.
+     * Checks if the specified context can draw on top of other apps. As of API
+     * level 23, an app cannot draw on top of other apps unless it declares the
+     * {@link android.Manifest.permission#SYSTEM_ALERT_WINDOW} permission in its
+     * manifest, <em>and</em> the user specifically grants the app this
+     * capability. To prompt the user to grant this approval, the app must send an
+     * intent with the action
+     * {@link android.provider.Settings#ACTION_MANAGE_OVERLAY_PERMISSION}, which
+     * causes the system to display a permission management screen.
      *
-     * @param context A context
-     * @return true if the calling app can draw on top of other apps, false otherwise.
+     * @param context App context.
+     * @return true if the specified context can draw on top of other apps, false otherwise
      */
     public static boolean canDrawOverlays(Context context) {
         return Settings.isCallingPackageAllowedToDrawOverlays(context, Process.myUid(),
@@ -3886,14 +3888,16 @@
             Secure.WIFI_WATCHDOG_PING_TIMEOUT_MS;
 
         /**
-         * An app can use this method to check if it is currently allowed to write or modify system
-         * settings. In order to gain write access to the system settings, an app must declare the
-         * {@link android.Manifest.permission#WRITE_SETTINGS} permission in its manifest. If it is
-         * currently disallowed, it can prompt the user to grant it this capability through a
-         * management UI by sending an Intent with action
-         * {@link android.provider.Settings#ACTION_MANAGE_WRITE_SETTINGS}.
+         * Checks if the specified app can modify system settings. As of API
+         * level 23, an app cannot modify system settings unless it declares the
+         * {@link android.Manifest.permission#WRITE_SETTINGS}
+         * permission in its manifest, <em>and</em> the user specifically grants
+         * the app this capability. To prompt the user to grant this approval,
+         * the app must send an intent with the action {@link
+         * android.provider.Settings#ACTION_MANAGE_WRITE_SETTINGS}, which causes
+         * the system to display a permission management screen.
          *
-         * @param context A context
+         * @param context App context.
          * @return true if the calling app can write to system settings, false otherwise
          */
         public static boolean canWrite(Context context) {
diff --git a/core/java/android/text/NoCopySpan.java b/core/java/android/text/NoCopySpan.java
index 0855c0b..e754d76 100644
--- a/core/java/android/text/NoCopySpan.java
+++ b/core/java/android/text/NoCopySpan.java
@@ -18,7 +18,7 @@
 
 /**
  * This interface should be added to a span object that should not be copied
- * into a new Spenned when performing a slice or copy operation on the original
+ * into a new Spanned when performing a slice or copy operation on the original
  * Spanned it was placed in.
  */
 public interface NoCopySpan {
diff --git a/core/java/android/text/format/Time.java b/core/java/android/text/format/Time.java
index 66e2ec3..69c2cff 100644
--- a/core/java/android/text/format/Time.java
+++ b/core/java/android/text/format/Time.java
@@ -331,7 +331,7 @@
      * @throws IllegalArgumentException if {@link #allDay} is true but {@code
      *             hour}, {@code minute}, and {@code second} are not 0.
      * @return a negative result if {@code a} is earlier, a positive result if
-     *         {@code a} is earlier, or 0 if they are equal.
+     *         {@code b} is earlier, or 0 if they are equal.
      */
     public static int compare(Time a, Time b) {
         if (a == null) {
diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java
index 7f92777..3e72192 100644
--- a/core/java/android/view/MotionEvent.java
+++ b/core/java/android/view/MotionEvent.java
@@ -2067,7 +2067,7 @@
     
     /**
      * Return the pointer identifier associated with a particular pointer
-     * data index is this event.  The identifier tells you the actual pointer
+     * data index in this event.  The identifier tells you the actual pointer
      * number associated with the data, accounting for individual pointers
      * going up and down since the start of the current gesture.
      * @param pointerIndex Raw index of pointer to retrieve.  Value may be from 0
diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java
index ef50fdc..7da849a 100644
--- a/core/java/android/view/Surface.java
+++ b/core/java/android/view/Surface.java
@@ -102,13 +102,13 @@
     public @interface ScalingMode {}
     // From system/window.h
     /** @hide */
-    static final int SCALING_MODE_FREEZE = 0;
+    public static final int SCALING_MODE_FREEZE = 0;
     /** @hide */
-    static final int SCALING_MODE_SCALE_TO_WINDOW = 1;
+    public static final int SCALING_MODE_SCALE_TO_WINDOW = 1;
     /** @hide */
-    static final int SCALING_MODE_SCALE_CROP = 2;
+    public static final int SCALING_MODE_SCALE_CROP = 2;
     /** @hide */
-    static final int SCALING_MODE_NO_SCALE_CROP = 3;
+    public static final int SCALING_MODE_NO_SCALE_CROP = 3;
 
     /** @hide */
     @IntDef({ROTATION_0, ROTATION_90, ROTATION_180, ROTATION_270})
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index c30ede3..dc9014b 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -85,6 +85,8 @@
             IBinder displayToken, int mode);
     private static native void nativeDeferTransactionUntil(long nativeObject,
             IBinder handle, long frame);
+    private static native void nativeSetOverrideScalingMode(long nativeObject,
+            int scalingMode);
     private static native IBinder nativeGetHandle(long nativeObject);
 
 
@@ -376,6 +378,11 @@
         nativeDeferTransactionUntil(mNativeObject, handle, frame);
     }
 
+    public void setOverrideScalingMode(int scalingMode) {
+        checkNotReleased();
+        nativeSetOverrideScalingMode(mNativeObject, scalingMode);
+    }
+
     public IBinder getHandle() {
         return nativeGetHandle(mNativeObject);
     }
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 8a6b5da..97af8f4 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -161,7 +161,7 @@
  * that set them will vary among the different subclasses of views. Note that
  * properties that are known at build time can be set in the XML layout
  * files.</li>
- * <li><strong>Set focus:</strong> The framework will handled moving focus in
+ * <li><strong>Set focus:</strong> The framework will handle moving focus in
  * response to user input. To force focus to a specific view, call
  * {@link #requestFocus}.</li>
  * <li><strong>Set up listeners:</strong> Views allow clients to set listeners
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index e9ca623..9e4f26f 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -2716,11 +2716,11 @@
                     mAttachInfo.mHardwareRenderer.setStopped(false);
                 }
 
-                mAttachInfo.mHardwareRenderer.draw(mView, mAttachInfo, this);
-
                 if (updated) {
                     requestDrawWindow();
                 }
+
+                mAttachInfo.mHardwareRenderer.draw(mView, mAttachInfo, this);
             } else {
                 // If we get here with a disabled & requested hardware renderer, something went
                 // wrong (an invalidate posted right before we destroyed the hardware surface
diff --git a/core/java/android/widget/PopupWindow.java b/core/java/android/widget/PopupWindow.java
index bc8863f..1ab7a00 100644
--- a/core/java/android/widget/PopupWindow.java
+++ b/core/java/android/widget/PopupWindow.java
@@ -54,6 +54,8 @@
 
 import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_LAYOUT_CHILD_WINDOW_IN_PARENT_FRAME;
 import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_WILL_NOT_REPLACE_ON_RELAUNCH;
+import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
+import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
 
 /**
  * <p>
@@ -1305,15 +1307,15 @@
     private PopupBackgroundView createBackgroundView(View contentView) {
         final ViewGroup.LayoutParams layoutParams = mContentView.getLayoutParams();
         final int height;
-        if (layoutParams != null && layoutParams.height == ViewGroup.LayoutParams.WRAP_CONTENT) {
-            height = ViewGroup.LayoutParams.WRAP_CONTENT;
+        if (layoutParams != null && layoutParams.height == WRAP_CONTENT) {
+            height = WRAP_CONTENT;
         } else {
-            height = ViewGroup.LayoutParams.MATCH_PARENT;
+            height = MATCH_PARENT;
         }
 
         final PopupBackgroundView backgroundView = new PopupBackgroundView(mContext);
         final PopupBackgroundView.LayoutParams listParams = new PopupBackgroundView.LayoutParams(
-                ViewGroup.LayoutParams.MATCH_PARENT, height);
+                MATCH_PARENT, height);
         backgroundView.addView(contentView, listParams);
 
         return backgroundView;
@@ -1328,14 +1330,14 @@
     private PopupDecorView createDecorView(View contentView) {
         final ViewGroup.LayoutParams layoutParams = mContentView.getLayoutParams();
         final int height;
-        if (layoutParams != null && layoutParams.height == ViewGroup.LayoutParams.WRAP_CONTENT) {
-            height = ViewGroup.LayoutParams.WRAP_CONTENT;
+        if (layoutParams != null && layoutParams.height == WRAP_CONTENT) {
+            height = WRAP_CONTENT;
         } else {
-            height = ViewGroup.LayoutParams.MATCH_PARENT;
+            height = MATCH_PARENT;
         }
 
         final PopupDecorView decorView = new PopupDecorView(mContext);
-        decorView.addView(contentView, ViewGroup.LayoutParams.MATCH_PARENT, height);
+        decorView.addView(contentView, MATCH_PARENT, height);
         decorView.setClipChildren(false);
         decorView.setClipToPadding(false);
 
@@ -1522,11 +1524,15 @@
         // to fill in real width and height values.
         final Rect displayFrame = new Rect();
         anchor.getWindowVisibleDisplayFrame(displayFrame);
-        if (width < 0) {
+        if (width == MATCH_PARENT) {
             width = displayFrame.right - displayFrame.left;
+        } else if (width == WRAP_CONTENT) {
+            width = mContentView.getMeasuredWidth();
         }
-        if (height < 0) {
+        if (height == MATCH_PARENT) {
             height = displayFrame.bottom - displayFrame.top;
+        } else if (height == WRAP_CONTENT) {
+            height = mContentView.getMeasuredHeight();
         }
 
         // If we need to adjust for gravity RIGHT, align to the bottom-right
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 10afdb8..250d9b7 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -60,6 +60,7 @@
 import android.util.Xml;
 import android.view.Display;
 
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.net.NetworkStatsFactory;
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.FastPrintWriter;
@@ -1092,7 +1093,7 @@
         public void writeToParcel(Parcel out, long elapsedRealtimeUs) {
             if (DEBUG) Log.i(TAG, "**** WRITING TIMER #" + mType + ": mTotalTime="
                     + computeRunTimeLocked(mTimeBase.getRealtime(elapsedRealtimeUs)));
-            out.writeInt(mCount);
+            out.writeInt(computeCurrentCountLocked());
             out.writeInt(mLoadedCount);
             out.writeInt(mUnpluggedCount);
             out.writeLong(computeRunTimeLocked(mTimeBase.getRealtime(elapsedRealtimeUs)));
@@ -1109,7 +1110,7 @@
                         + " old mUnpluggedCount=" + mUnpluggedCount);
             }
             mUnpluggedTime = computeRunTimeLocked(baseRealtime);
-            mUnpluggedCount = mCount;
+            mUnpluggedCount = computeCurrentCountLocked();
             if (DEBUG && mType < 0) {
                 Log.v(TAG, "unplug #" + mType
                         + ": new mUnpluggedTime=" + mUnpluggedTime
@@ -1192,7 +1193,7 @@
         public void writeSummaryFromParcelLocked(Parcel out, long elapsedRealtimeUs) {
             long runTime = computeRunTimeLocked(mTimeBase.getRealtime(elapsedRealtimeUs));
             out.writeLong(runTime);
-            out.writeInt(mCount);
+            out.writeInt(computeCurrentCountLocked());
         }
 
         public void readSummaryFromParcelLocked(Parcel in) {
@@ -1249,7 +1250,8 @@
          */
         int mUpdateVersion;
 
-        SamplingTimer(Clocks clocks, TimeBase timeBase, Parcel in) {
+        @VisibleForTesting
+        public SamplingTimer(Clocks clocks, TimeBase timeBase, Parcel in) {
             super(clocks, 0, timeBase, in);
             mCurrentReportedCount = in.readInt();
             mUnpluggedReportedCount = in.readInt();
@@ -1259,7 +1261,8 @@
             mTimeBaseRunning = timeBase.isRunning();
         }
 
-        SamplingTimer(Clocks clocks, TimeBase timeBase, boolean trackReportedValues) {
+        @VisibleForTesting
+        public SamplingTimer(Clocks clocks, TimeBase timeBase, boolean trackReportedValues) {
             super(clocks, 0, timeBase);
             mTrackingReportedValues = trackReportedValues;
             mTimeBaseRunning = timeBase.isRunning();
diff --git a/core/java/com/android/internal/os/ProcessCpuTracker.java b/core/java/com/android/internal/os/ProcessCpuTracker.java
index d831902..b7e5718 100644
--- a/core/java/com/android/internal/os/ProcessCpuTracker.java
+++ b/core/java/com/android/internal/os/ProcessCpuTracker.java
@@ -34,9 +34,11 @@
 import java.io.FileInputStream;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.Date;
 import java.util.StringTokenizer;
 
 public class ProcessCpuTracker {
@@ -147,6 +149,9 @@
     private long mCurrentSampleRealTime;
     private long mLastSampleRealTime;
 
+    private long mCurrentSampleWallTime;
+    private long mLastSampleWallTime;
+
     private long mBaseUserTime;
     private long mBaseSystemTime;
     private long mBaseIoWaitTime;
@@ -305,6 +310,7 @@
 
         final long nowUptime = SystemClock.uptimeMillis();
         final long nowRealtime = SystemClock.elapsedRealtime();
+        final long nowWallTime = System.currentTimeMillis();
 
         final long[] sysCpu = mSystemCpuData;
         if (Process.readProcFile("/proc/stat", SYSTEM_CPU_FORMAT,
@@ -367,6 +373,8 @@
         mCurrentSampleTime = nowUptime;
         mLastSampleRealTime = mCurrentSampleRealTime;
         mCurrentSampleRealTime = nowRealtime;
+        mLastSampleWallTime = mCurrentSampleWallTime;
+        mCurrentSampleWallTime = nowWallTime;
 
         final StrictMode.ThreadPolicy savedPolicy = StrictMode.allowThreadDiskReads();
         try {
@@ -710,6 +718,8 @@
     }
 
     final public String printCurrentState(long now) {
+        final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+
         buildWorkingProcs();
 
         StringWriter sw = new StringWriter();
@@ -727,6 +737,11 @@
             pw.print(mCurrentSampleTime-now);
             pw.print("ms later");
         }
+        pw.print(" (");
+        pw.print(sdf.format(new Date(mLastSampleWallTime)));
+        pw.print(" to ");
+        pw.print(sdf.format(new Date(mCurrentSampleWallTime)));
+        pw.print(")");
 
         long sampleTime = mCurrentSampleTime - mLastSampleTime;
         long sampleRealTime = mCurrentSampleRealTime - mLastSampleRealTime;
diff --git a/core/java/com/android/internal/policy/BackdropFrameRenderer.java b/core/java/com/android/internal/policy/BackdropFrameRenderer.java
index b1598e7..b781fd4 100644
--- a/core/java/com/android/internal/policy/BackdropFrameRenderer.java
+++ b/core/java/com/android/internal/policy/BackdropFrameRenderer.java
@@ -16,8 +16,6 @@
 
 package com.android.internal.policy;
 
-import static android.view.WindowCallbacks.RESIZE_MODE_FREEFORM;
-
 import android.graphics.Rect;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
@@ -102,9 +100,6 @@
         mOldSystemInsets.set(systemInsets);
         mOldStableInsets.set(stableInsets);
         mResizeMode = resizeMode;
-        synchronized (this) {
-            redrawLocked(initialBounds, fullscreen, mSystemInsets, mStableInsets);
-        }
 
         // Kick off our draw thread.
         start();
@@ -160,7 +155,7 @@
             mSystemInsets.set(systemInsets);
             mStableInsets.set(stableInsets);
             // Notify of a bounds change.
-            pingRenderLocked();
+            pingRenderLocked(false /* drawImmediate */);
         }
     }
 
@@ -172,7 +167,7 @@
             if (mRenderer != null) {
                 // Enforce a window redraw.
                 mOldTargetRect.set(0, 0, 0, 0);
-                pingRenderLocked();
+                pingRenderLocked(false /* drawImmediate */);
             }
         }
     }
@@ -197,7 +192,7 @@
                 mRenderer = null;
 
                 // Exit the renderer loop.
-                pingRenderLocked();
+                pingRenderLocked(false /* drawImmediate */);
             }
         }
     }
@@ -208,9 +203,6 @@
             Looper.prepare();
             synchronized (this) {
                 mChoreographer = Choreographer.getInstance();
-
-                // Draw at least once.
-                mChoreographer.postFrameCallback(this);
             }
             Looper.loop();
         } finally {
@@ -236,18 +228,22 @@
                 Looper.myLooper().quit();
                 return;
             }
-            mNewTargetRect.set(mTargetRect);
-            if (!mNewTargetRect.equals(mOldTargetRect)
-                    || mOldFullscreen != mFullscreen
-                    || !mStableInsets.equals(mOldStableInsets)
-                    || !mSystemInsets.equals(mOldSystemInsets)
-                    || mReportNextDraw) {
-                mOldFullscreen = mFullscreen;
-                mOldTargetRect.set(mNewTargetRect);
-                mOldSystemInsets.set(mSystemInsets);
-                mOldStableInsets.set(mStableInsets);
-                redrawLocked(mNewTargetRect, mFullscreen, mSystemInsets, mStableInsets);
-            }
+            doFrameUncheckedLocked();
+        }
+    }
+
+    private void doFrameUncheckedLocked() {
+        mNewTargetRect.set(mTargetRect);
+        if (!mNewTargetRect.equals(mOldTargetRect)
+                || mOldFullscreen != mFullscreen
+                || !mStableInsets.equals(mOldStableInsets)
+                || !mSystemInsets.equals(mOldSystemInsets)
+                || mReportNextDraw) {
+            mOldFullscreen = mFullscreen;
+            mOldTargetRect.set(mNewTargetRect);
+            mOldSystemInsets.set(mSystemInsets);
+            mOldStableInsets.set(mStableInsets);
+            redrawLocked(mNewTargetRect, mFullscreen, mSystemInsets, mStableInsets);
         }
     }
 
@@ -288,7 +284,7 @@
         synchronized (this) {
             mReportNextDraw = reportNextDraw;
             mOldTargetRect.set(0, 0, 0, 0);
-            pingRenderLocked();
+            pingRenderLocked(true /* drawImmediate */);
         }
     }
 
@@ -403,10 +399,14 @@
      * Sends a message to the renderer to wake up and perform the next action which can be
      * either the next rendering or the self destruction if mRenderer is null.
      * Note: This call must be synchronized.
+     *
+     * @param drawImmediate if we should draw immediately instead of scheduling a frame
      */
-    private void pingRenderLocked() {
-        if (mChoreographer != null) {
+    private void pingRenderLocked(boolean drawImmediate) {
+        if (mChoreographer != null && !drawImmediate) {
             mChoreographer.postFrameCallback(this);
+        } else {
+            doFrameUncheckedLocked();
         }
     }
 
diff --git a/core/java/com/android/internal/policy/DividerSnapAlgorithm.java b/core/java/com/android/internal/policy/DividerSnapAlgorithm.java
index 669e1ef..b8bc161 100644
--- a/core/java/com/android/internal/policy/DividerSnapAlgorithm.java
+++ b/core/java/com/android/internal/policy/DividerSnapAlgorithm.java
@@ -330,6 +330,14 @@
         return snapTarget;
     }
 
+    public boolean isFirstSplitTargetAvailable() {
+        return mFirstSplitTarget != mMiddleTarget;
+    }
+
+    public boolean isLastSplitTargetAvailable() {
+        return mLastSplitTarget != mMiddleTarget;
+    }
+
     /**
      * Cycles through all non-dismiss targets with a stepping of {@param increment}. It moves left
      * if {@param increment} is negative and moves right otherwise.
diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
index 994bdeb..3d05422 100644
--- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
@@ -41,7 +41,6 @@
     void setImeWindowStatus(in IBinder token, int vis, int backDisposition,
             boolean showImeSwitcher);
     void expandSettingsPanel(String subPanel);
-    void setCurrentUser(int newUserId);
 
     // ---- Methods below are for use by the status bar policy services ----
     // You need the STATUS_BAR_SERVICE permission
@@ -63,48 +62,6 @@
             in NotificationVisibility[] noLongerVisibleKeys);
     void onNotificationExpansionChanged(in String key, in boolean userAction, in boolean expanded);
     void setSystemUiVisibility(int vis, int mask, String cause);
-    void setWindowState(int window, int state);
-
-    void showRecentApps(boolean triggeredFromAltTab, boolean fromHome);
-    void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey);
-    void toggleRecentApps();
-    void preloadRecentApps();
-    void cancelPreloadRecentApps();
-
-    void toggleKeyboardShortcutsMenu(int deviceId);
-
-    /**
-     * Notifies the status bar that an app transition is pending to delay applying some flags with
-     * visual impact until {@link #appTransitionReady} is called.
-     */
-    void appTransitionPending();
-
-    /**
-     * Notifies the status bar that a pending app transition has been cancelled.
-     */
-    void appTransitionCancelled();
-
-    /**
-     * Notifies the status bar that an app transition is now being executed.
-     *
-     * @param statusBarAnimationsStartTime the desired start time for all visual animations in the
-     *        status bar caused by this app transition in uptime millis
-     * @param statusBarAnimationsDuration the duration for all visual animations in the status
-     *        bar caused by this app transition in millis
-     */
-    void appTransitionStarting(long statusBarAnimationsStartTime, long statusBarAnimationsDuration);
-
-    void startAssist(in Bundle args);
-
-    /**
-     * Request picture-in-picture.
-     *
-     * <p>
-     * This is called when an user presses picture-in-picture key or equivalent.
-     * TV device may start picture-in-picture from foreground activity if there's none.
-     * Picture-in-picture overlay menu will be shown instead otherwise.
-     */
-    void requestTvPictureInPicture();
 
     void addTile(in ComponentName tile);
     void remTile(in ComponentName tile);
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index d8233a0..0590134 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -597,6 +597,13 @@
     ctrl->deferTransactionUntil(handle, frameNumber);
 }
 
+static void nativeSetOverrideScalingMode(JNIEnv* env, jclass clazz, jlong nativeObject,
+        jint scalingMode) {
+    auto ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
+
+    ctrl->setOverrideScalingMode(scalingMode);
+}
+
 static jobject nativeGetHandle(JNIEnv* env, jclass clazz, jlong nativeObject) {
     auto ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
 
@@ -676,6 +683,8 @@
             (void*)nativeSetDisplayPowerMode },
     {"nativeDeferTransactionUntil", "(JLandroid/os/IBinder;J)V",
             (void*)nativeDeferTransactionUntil },
+    {"nativeSetOverrideScalingMode", "(JI)V",
+            (void*)nativeSetOverrideScalingMode },
     {"nativeGetHandle", "(J)Landroid/os/IBinder;",
             (void*)nativeGetHandle }
 };
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 1ed93cc..a598096 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -481,7 +481,8 @@
     <!-- ====================================================================== -->
     <eat-comment />
 
-    <!-- Used for runtime permissions related to user's contacts and profile. -->
+    <!-- Used for runtime permissions related to contacts and profiles on this
+        device. -->
     <permission-group android:name="android.permission-group.CONTACTS"
         android:icon="@drawable/perm_group_contacts"
         android:label="@string/permgrouplab_contacts"
@@ -1070,7 +1071,7 @@
     <!-- =============================================================== -->
     <eat-comment />
 
-    <!-- Allows an application to modify and remove existing voicemails in the system
+    <!-- Allows an application to modify and remove existing voicemails in the system.
         <p>Protection level: signature|privileged
     -->
     <permission android:name="com.android.voicemail.permission.WRITE_VOICEMAIL"
@@ -1087,7 +1088,7 @@
     <!-- ======================================= -->
     <eat-comment />
 
-    <!-- Allows an application to access extra location provider commands
+    <!-- Allows an application to access extra location provider commands.
          <p>Protection level: normal
     -->
     <permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"
@@ -1133,7 +1134,7 @@
         android:label="@string/permlab_createNetworkSockets"
         android:protectionLevel="normal" />
 
-    <!-- Allows applications to access information about networks
+    <!-- Allows applications to access information about networks.
          <p>Protection level: normal
     -->
     <permission android:name="android.permission.ACCESS_NETWORK_STATE"
@@ -1275,7 +1276,15 @@
     <eat-comment />
 
     <!-- Allows access to the list of accounts in the Accounts Service.
-        <p>Protection level: normal
+
+    <p class="note"><strong>Note:</strong> Beginning with Android 6.0 (API level
+    23), if an app shares the signature of the authenticator that manages an
+    account, it does not need <code>"GET_ACCOUNTS"</code> permission to read
+    information about that account. On Android 5.1 and lower, all apps need
+    <code>"GET_ACCOUNTS"</code> permission to read information about any
+    account.</p>
+
+    <p>Protection level: dangerous
     -->
     <permission android:name="android.permission.GET_ACCOUNTS"
         android:permissionGroup="android.permission-group.CONTACTS"
@@ -1666,11 +1675,21 @@
     <!-- ================================== -->
     <eat-comment />
 
-    <!-- Allows an application to open windows using the type
+    <!-- Allows an app to create windows using the type
          {@link android.view.WindowManager.LayoutParams#TYPE_SYSTEM_ALERT},
-         shown on top of all other applications.  Very few applications
+         shown on top of all other apps.  Very few apps
          should use this permission; these windows are intended for
-         system-level interaction with the user. -->
+         system-level interaction with the user.
+
+         <p class="note"><strong>Note:</strong> If the app
+         targets API level 23 or higher, the app user must explicitly grant
+         this permission to the app through a permission management screen. The app requests
+         the user's approval by sending an intent with action
+         {@link android.provider.Settings#ACTION_MANAGE_OVERLAY_PERMISSION}.
+         The app can check whether it has this authorization by calling
+         {@link android.provider.Settings#canDrawOverlays
+         Settings.canDrawOverlays()}.
+         <p>Protection level: signature -->
     <permission android:name="android.permission.SYSTEM_ALERT_WINDOW"
         android:label="@string/permlab_systemAlertWindow"
         android:description="@string/permdesc_systemAlertWindow"
@@ -1793,7 +1812,16 @@
         android:protectionLevel="signature|privileged|development" />
 
     <!-- Allows an application to read or write the system settings.
-         <p>Protection level: signature
+
+        <p class="note"><strong>Note:</strong> If the app targets API level 23
+        or higher, the app user
+        must explicitly grant this permission to the app through a permission management screen.
+        The app requests the user's approval by sending an intent with action
+        {@link android.provider.Settings#ACTION_MANAGE_WRITE_SETTINGS}. The app
+        can check whether it has this authorization by calling {@link
+        android.provider.Settings.System#canWrite Settings.System.canWrite()}.
+
+        <p>Protection level: signature
     -->
     <permission android:name="android.permission.WRITE_SETTINGS"
         android:label="@string/permlab_writeSettings"
@@ -2208,7 +2236,7 @@
     <permission android:name="android.permission.BIND_PRINT_SPOOLER_SERVICE"
         android:protectionLevel="signature" />
 
-    <!-- Must be required by a TextService (e.g. SpellCheckerService)
+    <!-- Must be required by a TextService (eg SpellCheckerService)
          to ensure that only the system can bind to it.
          <p>Protection level: signature
     -->
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 85e0b88..5bfa2d4 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -3499,7 +3499,7 @@
              property is set to true by default but should be set to false if your adapter
              will display items of varying heights. When this property is set to true and
              your adapter displays items of varying heights, the scrollbar thumb will
-             change size as the user scrolls through the list. When set to fale, the list
+             change size as the user scrolls through the list. When set to false, the list
              will use only the number of items in the adapter and the number of items visible
              on screen to determine the scrollbar's properties. -->
         <attr name="smoothScrollbar" format="boolean" />
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 5b4364d..e040bea 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -2248,7 +2248,7 @@
         <attr name="name" />
     </declare-styleable>
 
-    <!-- Associate declared KeySets with upgrading capability -->
+    <!-- Associate declared KeySets with upgrading capability. -->
     <declare-styleable name="AndroidManifestUpgradeKeySet" parent="AndroidManifest">
       <attr name="name" />
     </declare-styleable>
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsSamplingTimerTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsSamplingTimerTest.java
new file mode 100644
index 0000000..51d41a4
--- /dev/null
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsSamplingTimerTest.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2016 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;
+
+import android.os.BatteryStats;
+import android.os.Parcel;
+import android.support.test.filters.SmallTest;
+
+import junit.framework.TestCase;
+
+public class BatteryStatsSamplingTimerTest extends TestCase {
+
+    @SmallTest
+    public void testSampleTimerSummaryParceling() throws Exception {
+        final MockClocks clocks = new MockClocks();
+        clocks.realtime = 0;
+        clocks.uptime = 0;
+
+        final BatteryStatsImpl.TimeBase timeBase = new BatteryStatsImpl.TimeBase();
+        timeBase.init(clocks.uptimeMillis(), clocks.elapsedRealtime());
+
+        BatteryStatsImpl.SamplingTimer timer = new BatteryStatsImpl.SamplingTimer(clocks, timeBase,
+                true);
+
+        // Start running on battery.
+        timeBase.setRunning(true, clocks.uptimeMillis(), clocks.elapsedRealtime());
+
+        // The first update on battery consumes the values as a way of starting cleanly.
+        timer.addCurrentReportedTotalTime(10);
+        timer.addCurrentReportedCount(1);
+
+        timer.addCurrentReportedTotalTime(10);
+        timer.addCurrentReportedCount(1);
+
+        clocks.realtime = 20;
+        clocks.uptime = 20;
+
+        assertEquals(10, timer.getTotalTimeLocked(clocks.elapsedRealtime(),
+                BatteryStats.STATS_SINCE_CHARGED));
+        assertEquals(1, timer.getCountLocked(BatteryStats.STATS_SINCE_CHARGED));
+
+        // Grab a summary parcel while on battery.
+        final Parcel onBatterySummaryParcel = Parcel.obtain();
+        timer.writeSummaryFromParcelLocked(onBatterySummaryParcel, clocks.elapsedRealtime() * 1000);
+        onBatterySummaryParcel.setDataPosition(0);
+
+        // Stop running on battery.
+        timeBase.setRunning(false, clocks.uptimeMillis(), clocks.elapsedRealtime());
+
+        assertEquals(10, timer.getTotalTimeLocked(clocks.elapsedRealtime(),
+                BatteryStats.STATS_SINCE_CHARGED));
+        assertEquals(1, timer.getCountLocked(BatteryStats.STATS_SINCE_CHARGED));
+
+        // Grab a summary parcel while not on battery.
+        final Parcel offBatterySummaryParcel = Parcel.obtain();
+        timer.writeSummaryFromParcelLocked(offBatterySummaryParcel,
+                clocks.elapsedRealtime() * 1000);
+        offBatterySummaryParcel.setDataPosition(0);
+
+        // Read the on battery summary from the parcel.
+        BatteryStatsImpl.SamplingTimer unparceledTimer = new BatteryStatsImpl.SamplingTimer(
+                clocks, timeBase, true);
+        unparceledTimer.readSummaryFromParcelLocked(onBatterySummaryParcel);
+
+        assertEquals(10, unparceledTimer.getTotalTimeLocked(0, BatteryStats.STATS_SINCE_CHARGED));
+        assertEquals(1, unparceledTimer.getCountLocked(BatteryStats.STATS_SINCE_CHARGED));
+
+        // Read the off battery summary from the parcel.
+        unparceledTimer = new BatteryStatsImpl.SamplingTimer(clocks, timeBase, true);
+        unparceledTimer.readSummaryFromParcelLocked(offBatterySummaryParcel);
+
+        assertEquals(10, unparceledTimer.getTotalTimeLocked(0, BatteryStats.STATS_SINCE_CHARGED));
+        assertEquals(1, unparceledTimer.getCountLocked(BatteryStats.STATS_SINCE_CHARGED));
+    }
+}
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsServTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsServTest.java
index 1c3cd38..5fd8225 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsServTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsServTest.java
@@ -16,20 +16,13 @@
 
 package com.android.internal.os;
 
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.ArrayList;
-
 import android.os.BatteryStats;
 import android.os.Parcel;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.util.Log;
+import android.support.test.filters.SmallTest;
 
 import junit.framework.Assert;
 import junit.framework.TestCase;
 
-import com.android.internal.os.BatteryStatsImpl;
-
 /**
  * Provides test cases for android.os.BatteryStats.
  */
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsTests.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsTests.java
index 05aa53c..78bcbbc 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsTests.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsTests.java
@@ -5,6 +5,7 @@
 
 @RunWith(Suite.class)
 @Suite.SuiteClasses({
+        BatteryStatsSamplingTimerTest.class,
         BatteryStatsServTest.class,
         BatteryStatsTimeBaseTest.class,
         BatteryStatsTimerTest.class,
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsTimeBaseTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsTimeBaseTest.java
index ab92f15..3190d9e 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsTimeBaseTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsTimeBaseTest.java
@@ -18,11 +18,10 @@
 
 import java.io.PrintWriter;
 import java.io.StringWriter;
-import java.util.ArrayList;
 
 import android.os.BatteryStats;
 import android.os.Parcel;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.support.test.filters.SmallTest;
 import android.util.Log;
 
 import junit.framework.Assert;
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsTimerTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsTimerTest.java
index 3e17fcb..98d0f7f 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsTimerTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsTimerTest.java
@@ -18,8 +18,7 @@
 
 import android.os.BatteryStats;
 import android.os.Parcel;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.util.Log;
+import android.support.test.filters.SmallTest;
 import android.util.StringBuilderPrinter;
 
 import junit.framework.Assert;
@@ -148,7 +147,7 @@
         timer.onTimeStarted(10, 20, 50);
         Assert.assertEquals(50, timer.lastComputeRunTimeRealtime);
         Assert.assertEquals(4, timer.getUnpluggedTime());
-        Assert.assertEquals(0, timer.getUnpluggedCount());
+        Assert.assertEquals(3000, timer.getUnpluggedCount());
 
         // Test that stopping the timer updates mTotalTime and mCount
         timer.nextComputeRunTime = 17;
@@ -168,15 +167,16 @@
         // Test write then read
         TestTimer timer1 = new TestTimer(clocks, 0, timeBase);
         timer1.setCount(1);
-        timer1.setLoadedCount(2);
-        timer1.setLastCount(3);
-        timer1.setUnpluggedCount(4);
+        timer1.setLoadedCount(3);
+        timer1.setLastCount(4);
+        timer1.setUnpluggedCount(5);
         timer1.setTotalTime(9223372036854775807L);
         timer1.setLoadedTime(9223372036854775806L);
         timer1.setLastTime(9223372036854775805L);
         timer1.setUnpluggedTime(9223372036854775804L);
         timer1.setTimeBeforeMark(9223372036854775803L);
         timer1.nextComputeRunTime = 201;
+        timer1.nextComputeCurrentCount = 2;
 
         Parcel parcel = Parcel.obtain();
         Timer.writeTimerToParcel(parcel, timer1, 77);
@@ -185,10 +185,10 @@
         Assert.assertTrue("parcel null object", parcel.readInt() != 0);
 
         TestTimer timer2 = new TestTimer(clocks, 0, timeBase, parcel);
-        Assert.assertEquals(1, timer2.getCount());
-        Assert.assertEquals(2, timer2.getLoadedCount());
+        Assert.assertEquals(2, timer2.getCount()); // from computeTotalCountLocked()
+        Assert.assertEquals(3, timer2.getLoadedCount());
         Assert.assertEquals(0, timer2.getLastCount()); // NOT saved
-        Assert.assertEquals(4, timer2.getUnpluggedCount());
+        Assert.assertEquals(5, timer2.getUnpluggedCount());
         Assert.assertEquals(201, timer2.getTotalTime()); // from computeRunTimeLocked()
         Assert.assertEquals(9223372036854775806L, timer2.getLoadedTime());
         Assert.assertEquals(0, timer2.getLastTime()); // NOT saved
@@ -309,6 +309,7 @@
 
         Parcel parcel = Parcel.obtain();
         timer1.nextComputeRunTime = 9223372036854775800L;
+        timer1.nextComputeCurrentCount = 1;
         timer1.writeSummaryFromParcelLocked(parcel, 201);
         Assert.assertEquals(40, timer1.lastComputeRunTimeRealtime);
 
diff --git a/docs/html-intl/intl/es/design/get-started/principles.jd b/docs/html-intl/intl/es/design/get-started/principles.jd
index 351a4f7..719a5ce 100644
--- a/docs/html-intl/intl/es/design/get-started/principles.jd
+++ b/docs/html-intl/intl/es/design/get-started/principles.jd
@@ -14,8 +14,8 @@
 
 <h2 id="enchant-me">Cautívame</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="delight-me">Deléitame de formas sorprendentes</h4>
 <p>Una superficie atractiva, una animación colocada en el lugar correcto o un efecto de sonido bien sincronizado suelen ser experiencias
@@ -23,7 +23,7 @@
 poderosa.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_delight.png">
 
@@ -32,15 +32,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="real-objects-more-fun">Los objetos reales son más divertidos que los botones y los menús</h4>
-<p>Permita que los usuarios toquen y manipulen directamente los objetos de su aplicación. Esto reduce el esfuerzo cognitivo
+<p>Permite que los usuarios toquen y manipulen directamente los objetos de tu aplicación. Esto reduce el esfuerzo cognitivo
 que se necesita para llevar a cabo una tarea que resulte satisfactoria a nivel emocional.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_real_objects.png">
 
@@ -49,16 +49,16 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="make-it-mine">Permíteme darle un toque personal</h4>
-<p>A los usuarios les gusta agregar toques personales, ya que esto los ayuda a sentirse cómodos y a sentir que tienen el control. Ofrezca
-opciones predeterminadas prácticas y atractivas, pero también tenga en cuenta personalizaciones opcionales y divertidas que no entorpezcan las
+<p>A los usuarios les gusta agregar toques personales, ya que esto los ayuda a sentirse cómodos y a sentir que tienen el control. Ofrece
+opciones predeterminadas prácticas y atractivas, pero también ten en cuenta personalizaciones opcionales y divertidas que no entorpezcan las
 tareas principales.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_make_it_mine.png">
 
@@ -67,15 +67,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="get-to-know-me">Conóceme</h4>
-<p>Con el paso del tiempo, conozca las preferencias de los usuarios. En lugar de pedirles a los usuarios que elijan las mismas cosas una y otra
+<p>Con el paso del tiempo, conoce las preferencias de los usuarios. En lugar de pedirles a los usuarios que elijan las mismas cosas una y otra
 vez, permita que puedan acceder fácilmente a las opciones que ya eligieron antes.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_get_to_know_me.png">
 
@@ -84,14 +84,14 @@
 
 <h2 id="simplify-my-life">Simplifica mi vida</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="keep-it-brief">Sé breve</h4>
 <p>Utilice frases cortas con palabras simples. Las personas tienden a omitir las oraciones largas.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_keep_it_brief.png">
 
@@ -100,15 +100,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="pictures-faster-than-words">Las imágenes son más prácticas que las palabras</h4>
-<p>Considere la idea de utilizar imágenes para explicar las ideas. Las imágenes atraen la atención de las personas y pueden ser mucho más eficientes
+<p>Considera la idea de utilizar imágenes para explicar las ideas. Las imágenes atraen la atención de las personas y pueden ser mucho más eficientes
 que las palabras.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_pictures.png">
 
@@ -117,15 +117,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="decide-for-me">Decide por mí, pero permíteme tener la última palabra</h4>
-<p>Siga su instinto y actúe sin preguntar primero. Tener que elegir demasiadas veces y tomar muchas decisiones hace que las personas
-se sientan molestas. Permita que los usuarios puedan deshacer sus elecciones en caso de que no sean lo que ellos desean.</p>
+<p>Sigue su instinto y actúa sin preguntar primero. Tener que elegir demasiadas veces y tomar muchas decisiones hace que las personas
+se sientan molestas. Permite que los usuarios puedan deshacer sus elecciones en caso de que no sean lo que ellos desean.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_decide_for_me.png">
 
@@ -134,15 +134,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="only-show-when-i-need-it">Solo muéstrame lo que necesito, cuando lo necesito</h4>
-<p>Los usuarios se sienten abrumados cuando se les presenta demasiada información al mismo tiempo. Divida las tareas y la información en fragmentos pequeños
-y fáciles de digerir. Oculte las opciones que no son fundamentales en el momento y capacite a los usuarios sobre la marcha.</p>
+<p>Los usuarios se sienten abrumados cuando se les presenta demasiada información al mismo tiempo. Divide las tareas y la información en fragmentos pequeños
+y fáciles de digerir. Oculta las opciones que no son fundamentales en el momento y capacita a los usuarios sobre la marcha.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_information_when_need_it.png">
 
@@ -151,15 +151,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="always-know-where-i-am">Siempre debo saber dónde me encuentro</h4>
-<p>Haga que los usuarios sientan que conocen el camino de regreso. Para ello, diseñe las distintas partes de su aplicación de modo tal que se vean diferentes y
-utilice transiciones para mostrar la relación entre las pantallas. Proporcione comentarios sobre las tareas que están en curso.</p>
+<p>Haz que los usuarios sientan que conocen el camino de regreso. Para ello, diseña las distintas partes de su aplicación de modo tal que se vean diferentes y
+utiliza transiciones para mostrar la relación entre las pantallas. Proporciona comentarios sobre las tareas que están en curso.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_navigation.png">
 
@@ -168,16 +168,16 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="never-lose-my-stuff">Nunca pierdas lo que es mío</h4>
-<p>Guarde aquellas cosas que los usuarios crearon y permítales acceder a ellas desde cualquier lugar. Recuerde las configuraciones,
+<p>Guarda aquellas cosas que los usuarios crearon y permíteles acceder a ellas desde cualquier lugar. Recuerda las configuraciones,
 los toques personales y las creaciones en todos los teléfonos, las tablets y las computadoras. Esta es la forma de hacer que las actualizaciones
 sean lo más simple del mundo.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_never_lose_stuff.png">
 
@@ -186,15 +186,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="looks-same-should-act-same">Si se ve igual, debe funcionar de la misma manera</h4>
-<p>Ayude a los usuarios a distinguir las diferencias funcionales al lograr que se vean diferentes en lugar de sutiles.
+<p>Ayuda a los usuarios a distinguir las diferencias funcionales al lograr que se vean diferentes en lugar de sutiles.
 Evite los modos, que son sitios que lucen similar pero actúan diferente ante la misma entrada.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_looks_same.png">
 
@@ -203,15 +203,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="interrupt-only-if-important">Solo interrúmpeme si es importante</h4>
 <p>Al igual que un buen asistente personal, evite a los usuarios los pormenores poco importantes. Las personas desean estar
 concentradas y, a menos que sea fundamental y esté sujeta a un plazo de tiempo, una interrupción puede resultar agobiante y frustrante.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_important_interruption.png">
 
@@ -220,16 +220,16 @@
 
 <h2 id="make-me-amazing">Permíteme ser asombroso</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
-<h4 id="give-me-tricks">Ofréceme trucos que funcionen en todos lados</h4>
-<p>Las personas se sienten muy bien cuando descubren cosas por sí mismos. Logre que su aplicación sea más simple de utilizar al
+<h4 id="give-me-tricks">Ofrézame trucos que funcionen en todos lados</h4>
+<p>Las personas se sienten muy bien cuando descubren cosas por sí mismos. Logra que su aplicación sea más simple de utilizar al
 aprovechar los patrones visuales y la memoria muscular de otras aplicaciones de Android. Por ejemplo, el gesto de deslizar rápidamente
 puede ser un buen acceso directo de navegación.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_tricks.png">
 
@@ -238,16 +238,16 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="its-not-my-fault">No es mi culpa</h4>
-<p>Sea sutil cuando les solicite a los usuarios que realicen correcciones. Ellos desean sentirse inteligentes cuando usan la
-aplicación que usted creó. Si hacen algo mal, bríndeles instrucciones claras de recuperación, pero evite darles detalles técnicos.
-Sería incluso mejor que usted lo solucione en segundo plano.</p>
+<p>Sé sutil cuando solicites a los usuarios que realicen correcciones. Ellos desean sentirse inteligentes cuando usan la
+aplicación que creaste. Si hacen algo mal, bríndales instrucciones claras de recuperación, pero evita darles detalles técnicos.
+Sería incluso mejor que tú lo soluciones en segundo plano.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_error.png">
 
@@ -256,15 +256,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="sprinkle-encouragement">Fomenta lo simple</h4>
-<p>Desglose las tareas complejas en pasos más pequeños que se puedan cumplir fácilmente. Ofrezca comentarios sobre las acciones,
+<p>Desglosa las tareas complejas en pasos más pequeños que se puedan cumplir fácilmente. Ofrece comentarios sobre las acciones,
 incluso si es simplemente un halago sutil.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_sprinkle_encouragement.png">
 
@@ -273,16 +273,16 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="do-heavy-lifting-for-me">Haz el trabajo pesado por mí</h4>
-<p>Haga que los principiantes se sientan como expertos al permitirles hacer cosas que pensaron que nunca podrían hacer. Por
-ejemplo, a través de los accesos directos en los que se combinan múltiples efectos de fotografías, puede lograr que las fotografías de principiantes se vean maravillosas
+<p>Haz que los principiantes se sientan como expertos al permitirles hacer cosas que pensaron que nunca podrían hacer. Por
+ejemplo, a través de los accesos directos en los que se combinan múltiples efectos de fotografías, puedes lograr que las fotografías de principiantes se vean maravillosas
 en solo algunos pasos.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_heavy_lifting.png">
 
@@ -291,15 +291,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="make-important-things-fast">Haz que lo importante sea rápido</h4>
-<p>No todas las acciones son iguales. Decida qué es lo más importante en su aplicación y haga
+<p>No todas las acciones son iguales. Decide qué es lo más importante en tu aplicación y haz
 que los usuarios lo puedan encontrar fácilmente y utilizar de forma rápida, como el obturador de una cámara o el botón de pausa de un reproductor de música.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_make_important_fast.png">
 
diff --git a/docs/html-intl/intl/es/design/material/index.jd b/docs/html-intl/intl/es/design/material/index.jd
index 8cd3428..8a8ac85 100644
--- a/docs/html-intl/intl/es/design/material/index.jd
+++ b/docs/html-intl/intl/es/design/material/index.jd
@@ -1,7 +1,7 @@
-page.title=Material Design
+page.title=Material Design para Android
 page.tags=Material,design
 page.type=design
-page.image=design/material/images/MaterialLight.png
+page.image=images/cards/design-material-for-android_2x.jpg
 
 @jd:body
 
@@ -41,11 +41,11 @@
 
 <p itemprop="description">Material Design es una guía integral para el diseño visual, de movimientos y
 de interacción en distintas plataformas y dispositivos. Android ahora es compatible con las aplicaciones de
-Material Design. Para usar Material Design en sus aplicaciones de Android, siga las pautas descritas
-en la <a href="http://www.google.com/design/spec">especificación de Material Design</a> y use los
+Material Design. Para usar Material Design en tus aplicaciones de Android, sigue las pautas descritas
+en la <a href="http://www.google.com/design/spec">especificación de Material Design</a> y usa los
 nuevos componentes y funcionalidades disponibles en Android 5.0 (nivel de API 21) y versiones posteriores.</p>
 
-<p>En Android, se proporcionan los siguientes elementos que le permitirán crear aplicaciones en Material Design:</p>
+<p>En Android, se proporcionan los siguientes elementos que te permitirán crear aplicaciones en Material Design:</p>
 
 <ul>
   <li>un tema nuevo;</li>
@@ -53,13 +53,13 @@
   <li>nuevas API (interfaces de programación de aplicaciones) para sombras y animaciones personalizadas.</li>
 </ul>
 
-<p>Para obtener más información sobre la implementación de Material Design en Android, consulte
+<p>Para obtener más información sobre la implementación de Material Design en Android, consulta
 <a href="{@docRoot}training/material/index.html">Creación de aplicaciones con Material Design</a>.</p>
 
 
 <h3>Tema Material</h3>
 
-<p>El tema Material le ofrece un nuevo estilo para su aplicación, widgets del sistema que le permiten configurar
+<p>El tema Material te ofrece un nuevo estilo para tu aplicación, widgets del sistema que te permiten configurar
 la paleta de colores y animaciones predeterminadas para información táctil y transiciones de actividades.</p>
 
 <!-- two columns -->
@@ -79,7 +79,7 @@
 <br style="clear:left"/>
 </div>
 
-<p>Para obtener más información, consulte <a href="{@docRoot}training/material/theme.html">Uso del tema
+<p>Para obtener más información, consulta <a href="{@docRoot}training/material/theme.html">Uso del tema
 Material</a>.</p>
 
 
@@ -97,13 +97,13 @@
 </div>
 <div style="float:left;width:250px;margin-right:0px;">
   <img src="{@docRoot}design/material/images/card_travel.png" width="500" height="426" />
-  <p>El nuevo widget <code>CardView</code> le permite mostrar extractos de información importante dentro de
+  <p>El nuevo widget <code>CardView</code> te permite mostrar extractos de información importante dentro de
  tarjetas que tienen apariencia y estilo coherentes.</p>
 </div>
 <br style="clear:left"/>
 </div>
 
-<p>Para obtener más información, consulte <a href="{@docRoot}training/material/lists-cards.html">Creación de listas
+<p>Para obtener más información, consulta <a href="{@docRoot}training/material/lists-cards.html">Creación de listas
 y tarjetas</a>.</p>
 
 
@@ -126,24 +126,24 @@
   </video>
   </div>
   <div style="font-size:10pt;margin-left:20px;margin-bottom:30px">
-    <em>Para volver a reproducir la película, haga clic en la pantalla del dispositivo.</em>
+    <em>Para volver a reproducir la película, haz clic en la pantalla del dispositivo.</em>
   </div>
 </div>
 
-<p>Para obtener más información, consulte <a href="{@docRoot}training/material/shadows-clipping.html">Definición
+<p>Para obtener más información, consulta <a href="{@docRoot}training/material/shadows-clipping.html">Definición
 de vistas de recorte y sombras</a>.</p>
 
 
 <h3>Animaciones</h3>
 
-<p>Las nuevas API de animaciones le permiten crear animaciones personalizadas para la información táctil en los controles de IU,
+<p>Las nuevas API de animaciones te permiten crear animaciones personalizadas para la información táctil en los controles de IU,
 además de realizar cambios en el estado de las vistas y transiciones entre actividades.</p>
 
-<p>Estas API le permiten hacer lo siguiente:</p>
+<p>Estas API te permiten hacer lo siguiente:</p>
 
 <ul>
 <li style="margin-bottom:15px">
-responder a los eventos táctiles de sus vistas mediante animaciones de <strong>información táctil</strong>;
+responder a los eventos táctiles de tus vistas mediante animaciones de <strong>información táctil</strong>;
 </li>
 <li style="margin-bottom:15px">
 ocultar y mostrar vistas con animaciones con <strong>efecto circular</strong>;
@@ -163,24 +163,24 @@
 </ul>
 
 <p>Las animaciones de la información táctil se concentran en diferentes vistas estándar, como los botones. Las nuevas API
-le permiten personalizar estas animaciones y agregarlas a sus vistas personalizadas.</p>
+te permiten personalizar estas animaciones y agregarlas a tus vistas personalizadas.</p>
 
-<p>Para obtener más información, consulte <a href="{@docRoot}training/material/animations.html">Definición de animaciones
+<p>Para obtener más información, consulta <a href="{@docRoot}training/material/animations.html">Definición de animaciones
 personalizadas</a>.</p>
 
 
 <h3>Elementos de diseño</h3>
 
-<p>Estas nuevas capacidades para los elementos de diseño le permiten implementar aplicaciones de Material Design:</p>
+<p>Estas nuevas capacidades para los elementos de diseño te permiten implementar aplicaciones de Material Design:</p>
 
 <ul>
 <li>Los <strong>dibujables en vector</strong> se pueden escalar sin perder definición y son perfectos
 para los iconos de las aplicaciones de un solo color.</li>
-<li>El <strong>teñido de los dibujables</strong> le permite definir mapas de bits como máscaras alfa y pintarlos con
+<li>El <strong>teñido de los dibujables</strong> te permite definir mapas de bits como máscaras alfa y pintarlos con
 un color durante el tiempo de ejecución.</li>
-<li>La <strong>extracción de color</strong> le permite extraer automáticamente colores prominentes de una
+<li>La <strong>extracción de color</strong> te permite extraer automáticamente colores prominentes de una
 imagen del mapa de bits.</li>
 </ul>
 
-<p>Para obtener más información, consulte <a href="{@docRoot}training/material/drawables.html">Trabajo con
+<p>Para obtener más información, consulta <a href="{@docRoot}training/material/drawables.html">Trabajo con
 elementos de diseño</a>.</p>
diff --git a/docs/html-intl/intl/es/design/patterns/compatibility.jd b/docs/html-intl/intl/es/design/patterns/compatibility.jd
new file mode 100644
index 0000000..fe16ede
--- /dev/null
+++ b/docs/html-intl/intl/es/design/patterns/compatibility.jd
@@ -0,0 +1,70 @@
+page.title=Compatibilidad con versiones anteriores
+page.tags="support"
+page.metaDescription=Notas sobre cómo Android 4.x adapta la IU diseñada para versiones de hardware y de SO anteriores.
+@jd:body
+
+<a class="notice-developers" href="{@docRoot}training/basics/supporting-devices/index.html">
+  <div>
+    <h3>Documentos para desarrolladores</h3>
+    <p>Compatible con diferentes dispositivos</p>
+  </div>
+</a>
+
+<p>Estos son algunos de los cambios importantes en Android 3.0:</p>
+<ul>
+<li>Se dejan de usar las teclas físicas de menú (Atrás, Menú, Búsqueda, Inicio) en favor de la navegación
+mediante controles virtuales (Back, Home, Recents).</li>
+<li>Patrón sólido para el uso de menús en las barras de acción.</li>
+</ul>
+<p>Android 4.0 incorpora estos cambios para tablets en la plataforma del teléfono.</p>
+
+<h2 id="older-hardware">Adaptar Android 4.0 a hardware y aplicaciones anteriores</h2>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>Teléfonos con controles de navegación virtuales</h4>
+<p>Las aplicaciones de Android escritas para Android 3.0 y versiones posteriores muestran acciones en la barra de acciones. Las acciones que no
+caben en la barra de acciones o que no son lo suficientemente importantes para que se las muestre en el nivel superior aparecen en la
+ampliación de acciones (action overflow).</p>
+<p>Los usuarios acceden a la ampliación de acciones (action overflow) tocando la barra de acciones.</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_virtual_nav.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>Teléfonos con teclas de navegación físicas</h4>
+<p>Los teléfonos con Android que tienen teclas físicas de navegación no muestran la barra de navegación virtual en
+la parte inferior de la pantalla. En cambio, la ampliación de acciones (action overflow) está disponible desde la tecla física de menú. La
+ventana emergente con acciones que se muestra tiene el mismo estilo que la del ejemplo anterior, pero aparece en la parte inferior de la pantalla.</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_physical_buttons.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>Aplicaciones heredadas en teléfonos con controles de navegación virtuales</h4>
+<p>Cuando se ejecuta una aplicación que fue generada para Android 2.3 o versiones anteriores en un teléfono con controles de
+navegación virtuales, aparece un control de ampliación de acciones (action overflow) a la derecha de la barra de navegación virtual. Se
+puede tocar el control para ver las acciones de la aplicación con el estilo del menú tradicional de Android.</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_legacy_apps.png">
+
+  </div>
+</div>
diff --git a/docs/html-intl/intl/es/design/patterns/confirming-acknowledging.jd b/docs/html-intl/intl/es/design/patterns/confirming-acknowledging.jd
index fbaa060..9e41189 100644
--- a/docs/html-intl/intl/es/design/patterns/confirming-acknowledging.jd
+++ b/docs/html-intl/intl/es/design/patterns/confirming-acknowledging.jd
@@ -2,14 +2,14 @@
 page.tags=dialog,toast,notification
 @jd:body
 
-<p>En algunos casos, cuando un usuario invoca una acción desde su aplicación, se recomienda <em>confirmar</em> o proporcionar un <em>reconocimiento</em> de dicha acción a través del texto.</p>
+<p>En algunos casos, cuando un usuario invoca una acción desde tu aplicación, se recomienda <em>confirmar</em> o proporcionar un <em>reconocimiento</em> de dicha acción a través del texto.</p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <img src="{@docRoot}design/media/confirm_ack_confirming.png">
     <p><strong>Confirmación</strong> es solicitarle al usuario que verifique que realmente desea proceder con una acción que acaba de invocar. En algunos casos, la confirmación se presenta junto con una advertencia o mensaje con información importante relacionada con la acción que el usuario debe aprobar.</p>
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/confirm_ack_acknowledge.png">
     <p>El <strong>reconocimiento</strong> hace referencia al hecho de mostrar un determinado texto para informarle al usuario que la acción que acaba de invocar ya se completó. De este modo, se elimina la incertidumbre sobre las operaciones implícitas que lleva a cabo el sistema. En algunos casos, el reconocimiento se presenta junto con una opción para deshacer la acción.</p>
   </div>
@@ -18,18 +18,18 @@
 <p>Comunicarse con los usuarios de este modo permite reducir la incertidumbre respecto de acciones pasadas o futuras. Mediante la confirmación o el reconocimiento también se puede evitar que los usuarios cometan errores de los que podrían arrepentirse.</p>
 
 <h2>Cuándo se debe solicitar una confirmación o proporcionar un reconocimiento de las acciones de los usuarios</h2>
-<p>No es necesario que se solicite una confirmación o se proporcione un reconocimiento para todas las acciones. Utilice este diagrama de flujo cuando tenga que tomar decisiones relacionadas con el diseño.</p>
+<p>No es necesario que se solicite una confirmación o se proporcione un reconocimiento para todas las acciones. Utiliza este diagrama de flujo cuando tengas que tomar decisiones relacionadas con el diseño.</p>
 <img src="{@docRoot}design/media/confirm_ack_flowchart.png">
 
 <h2>Confirmación</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>Ejemplo: Google Play Books</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_books.png">
     <p>En este ejemplo, el usuario solicitó eliminar un libro de su biblioteca de Google Play. Aparecerá una <a href="{@docRoot}design/building-blocks/dialogs.html#alerts">alerta</a> para confirmar esta acción porque es importante que el usuario comprenda que el libro ya no estará disponible desde ningún dispositivo.</p>
-    <p>Cuando diseñe un cuadro de diálogo de confirmación, asegúrese de que el título sea significativo y que incluya la acción solicitada.</p>
+    <p>Cuando diseñes un cuadro de diálogo de confirmación, asegúrate de que el título sea significativo y que incluya la acción solicitada.</p>
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <h4>Ejemplo: Android Beam</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_beam.png">
     <p>No es necesario que las confirmaciones se presenten en todas las alertas con dos botones. Luego de iniciar Android Beam, se le solicita al usuario que seleccione el contenido que desea compartir (en este ejemplo, se trata de una fotografía). Si el usuario decide no continuar, simplemente se descartará el teléfono de la lista.</p>
@@ -37,15 +37,15 @@
 </div>
 
 <h2>Reconocimiento</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>Ejemplo: Borrador de Gmail abandonado y guardado</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_draftsave.png">
     <p>En este ejemplo, si el usuario navega con los botones Back o Up desde la pantalla de redacción de Gmail, posiblemente ocurrirá algo inesperado: el borrador actual se guardará automáticamente. Esto se mostrará a través de un reconocimiento en forma de aviso. Dicho aviso desaparece luego de algunos segundos.</p>
     <p>En este caso, no se puede incluir la opción de deshacer porque el almacenamiento fue iniciado por la aplicación, no por el usuario. Gracias a esto, se puede continuar redactando el mensaje de forma rápida y fácil con solo navegar hasta la lista de borradores.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <h4>Ejemplo: Conversación de Gmail eliminada</h4>
     <img src="{@docRoot}design/media/confirm_ack_draft_deleted.png">
     <p>Después de que el usuario elimina una conversación de la lista de Gmail, aparece un mensaje de reconocimiento con la opción de deshacer la acción. Dicho reconocimiento seguirá en pantalla hasta que el usuario lleve a cabo una acción no relacionada, como desplazarse por la lista.</p>
@@ -53,14 +53,14 @@
 </div>
 
 <h2>Sin confirmación ni reconocimiento</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>Ejemplo: Hacer +1</h4>
     <img style="padding: 33px 0 30px;" src="{@docRoot}design/media/confirm_ack_ex_plus1.png">
-    <p><strong>No se necesita confirmación</strong>. Si el usuario hizo +1 sin querer, esto no es un problema. Simplemente, puede tocar el botón de nuevo para deshacer la acción.</p>
+    <p><strong>No se necesita confirmación</strong>. Si el usuario eligió +1 sin querer, esto no es un problema. Simplemente, puede tocar el botón de nuevo para deshacer la acción.</p>
     <p><strong>No se necesita un reconocimiento</strong>. El usuario verá que el botón +1 parpadea y cambia a color rojo. Esa es una señal muy clara.</p>
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <h4>Ejemplo: Eliminación de una aplicación de la pantalla de inicio</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_removeapp.png">
     <p><strong>No se necesita confirmación</strong>. Esta es una acción intencionada: el usuario debe arrastrar y colocar un elemento en un destino relativamente grande y aislado. Por lo tanto, es poco probable que se cometan errores. No obstante, si el usuario se arrepiente de la decisión que tomó, solo demorará algunos segundos en recuperar lo eliminado.</p>
diff --git a/docs/html-intl/intl/es/design/patterns/navigation.jd b/docs/html-intl/intl/es/design/patterns/navigation.jd
index 6332491..e7d73fd 100644
--- a/docs/html-intl/intl/es/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/es/design/patterns/navigation.jd
@@ -12,10 +12,10 @@
 
 <p itemprop="description">La navegación coherente es un componente fundamental de la experiencia general del usuario. Pocas situaciones frustran más a los
 usuarios que la navegación básica que se comporta de forma irregular e inesperada. En Android 3.0,
-se introdujeron cambios significativos en el comportamiento global de la navegación. Si sigue detalladamente
-las pautas de navegación con los botones Back y Up, la navegación en su aplicación será predecible y confiable para los usuarios.</p>
+se introdujeron cambios significativos en el comportamiento global de la navegación. Si sigues detalladamente
+las pautas de navegación con los botones Back y Up, la navegación en tu aplicación será predecible y confiable para los usuarios.</p>
 <p>En Android 2.3 y versiones anteriores, se confió en el botón <em>Back</em> del sistema para respaldar la navegación dentro de una
-aplicación. Con la introducción de las barras de acciones en Android 3.0, apareció un segundo mecanismo de navegación:
+aplicación. Con la introducción de las barras de acción en Android 3.0, apareció un segundo mecanismo de navegación:
 el botón <em>Up</em>, que consiste en el icono de la aplicación y una pequeña flecha a la izquierda.</p>
 
 <img src="{@docRoot}design/media/navigation_with_back_and_up.png">
@@ -26,7 +26,7 @@
 entre pantallas. Por ejemplo, si en la pantalla A se muestra una lista de elementos y, si se selecciona un elemento, se conduce al usuario a la
 pantalla B (en la que se presenta ese elemento de forma más detallada), entonces en la pantalla B se debe mostrar el botón Up para regresar
 a la pantalla A.</p>
-<p>Si una pantalla aparece en la parte superior de una aplicación (es decir, en el inicio de la aplicación), no debe incluir el botón Up
+<p>Si una pantalla aparece en la parte superior de una aplicación (es decir, en el inicio de la aplicación), no debes incluir el botón Up
 .</p>
 
 <p>El botón Back del sistema se utiliza para navegar, en orden cronológico inverso, por el historial
@@ -47,11 +47,11 @@
 <li>descartar las barras de acción contextuales y eliminar el resaltado de los elementos seleccionados;</li>
 <li>ocultar el teclado en la pantalla (IME [Editores de métodos de entrada]).</li>
 </ul>
-<h2 id="within-app">Navegación dentro de su aplicación</h2>
+<h2 id="within-app">Navegación dentro de tu aplicación</h2>
 
 <h4>Navegación hacia pantallas con múltiples puntos de entrada</h4>
 <p>En algunos casos, las pantallas no tienen una posición fija dentro de la jerarquía de la aplicación, y se puede acceder a ellas
-desde múltiples puntos de entrada (como la pantalla Configuración, a la que se puede acceder desde cualquier otra pantalla
+desde múltiples puntos de entrada (como la pantalla de configuración, a la que se puede acceder desde cualquier otra pantalla
 de la aplicación). En este caso, el botón Up debe permitir regresar a la pantalla remitente, por lo que se comportaría
 de forma idéntica al botón Back.</p>
 <h4>Cambio de vista dentro de una pantalla</h4>
@@ -66,7 +66,7 @@
 <li>modificación de las características de la pantalla (como el zoom).</li>
 </ul>
 <h4>Navegación entre pantallas relacionadas</h4>
-<p>Si su aplicación es compatible con la navegación desde una lista de elementos hacia una vista de detalles de alguno de esos elementos, generalmente,
+<p>Si tu aplicación es compatible con la navegación desde una lista de elementos hacia una vista de detalles de alguno de esos elementos, generalmente,
 es preferible respaldar la navegación de dirección desde ese elemento a otro anterior
 o siguiente en la lista. Por ejemplo, en Gmail, es fácil deslizarse hacia la izquierda o la derecha desde una conversación
 para ver una conversación anterior o más nueva en la misma bandeja de entrada. Al igual que cuando se cambia la vista dentro de una pantalla, en este tipo de
@@ -82,17 +82,17 @@
 
 <img src="{@docRoot}design/media/navigation_between_siblings_market1.png">
 
-<p>Usted puede lograr que el comportamiento del botón Up sea incluso más inteligente teniendo en cuenta sus conocimientos de la vista
+<p>Puedes lograr que el comportamiento del botón Up sea incluso más inteligente teniendo en cuenta tus conocimientos de la vista
 detallada. Si extendemos el ejemplo de Play Store mencionado antes, imaginemos que el usuario navegó desde el último
-libro visto hacia los detalles de la adaptación de la película. En ese caso, mediante el botón Up podrá regresar a un contenedor
+libro visto hacia los detalles de la adaptación de la película. En ese caso, mediante el botón Up podrás regresar a un contenedor
 (Películas) por el que el usuario no navegó anteriormente.</p>
 
 <img src="{@docRoot}design/media/navigation_between_siblings_market2.png">
 
 <h2 id="into-your-app">Navegación dentro de la aplicación a través de los widgets y las notificaciones de la pantalla de inicio</h2>
 
-<p>Podrá utilizar los widgets y las notificaciones de la pantalla de inicio para ayudar a los usuarios a navegar directamente hacia las pantallas
-que se encuentran en posiciones más profundas dentro de la jerarquía de su aplicación. Por ejemplo, tanto el widget de la bandeja de entrada de Gmail como las notificaciones de los mensajes nuevos
+<p>Podrás utilizar los widgets y las notificaciones de la pantalla de inicio para ayudar a los usuarios a navegar directamente hacia las pantallas
+que se encuentran en posiciones más profundas dentro de la jerarquía de tu aplicación. Por ejemplo, tanto el widget de la bandeja de entrada de Gmail como las notificaciones de los mensajes nuevos
  pueden omitir la pantalla Bandeja de entrada y llevar al usuario directamente hacia una vista de conversación.</p>
 
 <p>En ambos casos, el botón Up se debe utilizar de la siguiente manera:</p>
@@ -100,12 +100,12 @@
 <ul>
 <li><em>Si a la pantalla de destino generalmente se llega desde una determinada pantalla dentro de su
 aplicación</em>, el botón Up debe permitir la navegación hacia esa pantalla.</li>
-<li><em>De lo contrario, </em>el botón Up debe permitir la navegación hacia la pantalla que está en el nivel superior ("Inicio") de su aplicación.</li>
+<li><em>De lo contrario, </em>el botón Up debe permitir la navegación hacia la pantalla que está en el nivel superior ("Inicio") de tu aplicación.</li>
 </ul>
 
-<p>En el caso del botón Back, la navegación debe ser más predecible. Para ello, coloque en la
+<p>En el caso del botón Back, la navegación debe ser más predecible. Para ello, coloca en la
 pila de retroceso de la tarea la ruta completa de la navegación ascendente hacia la pantalla que se encuentra en el nivel superior de la aplicación. De este modo, los usuarios que
-no recuerdan cómo ingresaron a su aplicación podrán navegar hacia la pantalla del nivel superior de la aplicación antes de
+no recuerdan cómo ingresaron a tu aplicación podrán navegar hacia la pantalla del nivel superior de la aplicación antes de
 salir.</p>
 
 <p>A modo de ejemplo, el widget de la pantalla Inicio de Gmail posee un botón para llevar al usuario directamente a la pantalla de
@@ -116,7 +116,7 @@
 
 <h4>Notificaciones indirectas</h4>
 
-<p>Cuando su aplicación necesita presentar información sobre múltiples eventos de forma simultánea, puede utilizar una
+<p>Cuando tu aplicación necesita presentar información sobre múltiples eventos de forma simultánea, puede utilizar una
 sola notificación que dirija al usuario a una pantalla intersticial. En esta pantalla, se resumen dichos
 eventos y se proporcionan rutas para que el usuario navegue más profundamente por la aplicación. Las notificaciones de este estilo se
 denominan <em>notificaciones indirectas</em>.</p>
@@ -127,11 +127,11 @@
 pantalla intersticial, los botones Up y Back se comportan del mismo modo que lo hacen en las notificaciones estándar, como se describió antes:
 navegan dentro de la aplicación en lugar de regresar a la pantalla intersticial.</p>
 
-<p>Por ejemplo, supongamos que un usuario de Gmail recibe una notificación indirecta del calendario Si se toca
+<p>Por ejemplo, supongamos que un usuario de Gmail recibe una notificación indirecta del calendario. Si se toca
 esta notificación, se abrirá la pantalla intersticial, en la que se mostrarán recordatorios de varios
 eventos diferentes. Si se toca Back desde la pantalla intersticial, el usuario volverá a Gmail. Si se toca un evento
 en particular, el usuario saldrá de la pantalla intersticial e ingresará en la aplicación Calendario, donde se mostrarán detalles del
-evento. En la pantalla de detalles del evento, es posible navegar con los botones Up y Back hacia la vista superior del calendario.</p>
+evento. En la pantalla de detalles del evento, es posible navegar con los botones Up y Back hacia la visomunmenteta superior del calendario.</p>
 
 <img src="{@docRoot}design/media/navigation_indirect_notification.png">
 
@@ -154,19 +154,19 @@
 
 <p>Una de las principales ventajas del sistema Android es la capacidad de las aplicaciones de activarse
 mutuamente, por lo que el usuario puede navegar directamente desde una aplicación hacia otra. Por ejemplo, una
-aplicación que debe tomar una fotografía puede activar la aplicación de la cámara, la cual mostrará la fotografía
+aplicación que debe tomar una fotografía puede area appactivar la aplicación de la cámara, la cual mostrará la fotografía
 en la aplicación que la activó. Esto representa una gran ventaja tanto para el desarrollador, quien puede aprovechar fácilmente el
-código de otras aplicaciones, y también para el usuario, quien disfruta de una experiencia coherente para acciones
+código de otras aplicaciones, como para el usuario, quien disfruta de una experiencia coherente para acciones
 que se realizan comúnmente.</p>
 
-<p>Para comprender la navegación entre aplicaciones, es importante que entienda el comportamiento del marco de Android,
+<p>Para comprender la navegación entre aplicaciones, es importante que se entienda el comportamiento del framework de Android,
 que se explica a continuación.</p>
 
 <h4>Actividades, tareas e intentos</h4>
 
 <p>En Android, una <strong>actividad</strong> es un componente de la aplicación que define una pantalla de
-información y todas las acciones relacionadas que el usuario puede llevar a cabo. Su aplicación es un conjunto de
-actividades formado por las actividades que usted crea y aquellas que reutiliza de otras aplicaciones.</p>
+información y todas las acciones relacionadas que el usuario puede llevar a cabo. Tu aplicación es un conjunto de
+actividades formado por las actividades que creas y aquellas que reutilizas de otras aplicaciones.</p>
 
 <p>Una <strong>tarea</strong> es la secuencia de actividades que un usuario realiza para lograr un objetivo. En
 una sola tarea, se pueden utilizar actividades de una sola aplicación o se pueden utilizar actividades de varias
@@ -179,10 +179,10 @@
 
 <h4>Ejemplo: navegación entre aplicaciones para respaldar el uso compartido</h4>
 
-<p>Para comprender cómo las actividades, las tareas y los intentos funcionan en conjunto, considere cómo una aplicación les permite a los usuarios
-compartir contenido a través de otra aplicación. Por ejemplo, si ejecuta la aplicación Play Store desde la pantalla de inicio, se iniciará
-una nueva tarea A (vea la imagen a continuación). Después de navegar por Play Store y de tocar un libro promocionado
-para ver la información detallada, el usuario permanece en la misma tarea y la extiende al agregar actividades. Si se desencadena la acción
+<p>Para comprender cómo las actividades, las tareas y los intentos (intents) funcionan en conjunto, considera cómo una aplicación les permite a los usuarios
+compartir contenido a través de otra aplicación. Por ejemplo, si se ejecuta la aplicación Play Store desde la pantalla de inicio, se iniciará
+una nueva tarea A (consulta la imagen a continuación). Después de navegar por Play Store y de tocar un libro promocionado
+para ver su información detallada, el usuario permanece en la misma tarea y la extiende al agregar actividades. Si se desencadena la acción
 Compartir, se le mostrará al usuario un cuadro de diálogo con una lista de todas las actividades (provenientes de diferentes aplicaciones)
 que se registraron para concretar el intento de compartir.</p>
 
@@ -208,6 +208,6 @@
 Recientes). Si Gmail ya estaba ejecutando su propia tarea en segundo plano, esta se reemplazará con la
 tarea B, y el contexto anterior se abandonará para darle preferencia al nuevo objetivo del usuario.</p>
 
-<p>Cuando su aplicación se registre para manipular los intentos de una actividad que se encuentra en un nivel profundo dentro de la jerarquía de la aplicación,
-consulte <a href="#into-your-app">Navegación dentro de la aplicación a través de los widgets y
+<p>Cuando tu aplicación se registre para manipular los intentos de una actividad que se encuentra en un nivel profundo dentro de la jerarquía de la aplicación,
+consulta <a href="#into-your-app">Navegación dentro de la aplicación a través de los widgets y
 las notificaciones de la pantalla de inicio</a> para obtener información sobre cómo especificar la navegación del botón Up.</p>
diff --git a/docs/html-intl/intl/es/index.jd b/docs/html-intl/intl/es/index.jd
index 4065439..66f9bf0 100644
--- a/docs/html-intl/intl/es/index.jd
+++ b/docs/html-intl/intl/es/index.jd
@@ -5,42 +5,81 @@
 
 @jd:body
 
-<!-- <div class="dac-hero-carousel" data-carousel-query="collection:index/carousel">
-</div> -->
-<section class="dac-hero-carousel">
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
 
-<!-- <article class="dac-expand dac-hero dac-invert active" style="background-color: rgb(38, 50, 56);"> -->
-<article class="dac-expand dac-hero dac-invert dac-darken mprev active" style="background-color: #75d1ff;">
-<a href="/preview/index.html">
+<section class="dac-expand dac-hero dac-invert" style="background-color:#455A64">
   <div class="wrap" style="max-width:1100px;margin-top:0">
-    <div class="cols dac-hero-content">
-      <div class="col-8of16 col-push-6of16 dac-hero-figure mprev">
-      </div>
-      <div class="col-8of16 col-pull-7of16">
-        <div class="dac-hero-tag"></div>
-
-        <h1 class="dac-hero-title" style="white-space:nowrap;">Android 6.0 Marshmallow</h1>
-        <p class="dac-hero-description">Prepárese para la próxima versión de
-Android. Pruebe sus aplicaciones en Nexus 5, 6, 9 y Player. </p>
-
-        <a class="dac-hero-cta" href="{@docRoot}preview/index.html">
+    <div class="col-7of16 col-push-9of16" style="padding-left:2em;">
+      <a href="{@docRoot}preview/index.html">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
+        <p class="dac-hero-description">
+          Get ready for the next version of Android!
+          <strong>Test your apps</strong> on Nexus and other devices. Support new system
+          behaviors to <strong>save power and memory</strong>.
+          Extend your apps with <strong>multi-window UI</strong>,
+          <strong>direct reply notifications</strong> and more.
+        </p>
+        <a class="dac-hero-cta" href="/preview/index.html">
           <span class="dac-sprite dac-auto-chevron"></span>
-          ¡Empiece hoy mismo!</a><br>
-        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
+          Learn more
+        </a><!--<br>
+        <a class="dac-hero-cta" href="/preview/support.html">
           <span class="dac-sprite dac-auto-chevron"></span>
-          Developer Preview 3 (final SDK)</a>
+          Update to Developer Preview (final SDK)
+        </a><br>-->
+      </a>
+    </div>
+    <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:0em;padding-right:1.5em;">
+      <a href="{@docRoot}preview/index.html">
+        <img style="" class="dac-hero-image" src="/images/home/n-preview-hero.png"
+             srcset="/images/home/n-preview-hero.png 1x,
+             /images/home/n-preview-hero_2x.png 2x">
         </a>
-      </div>
     </div>
   </div>
-</a>
-</article></section>
+</section>
 
-<div class="actions-bar dac-expand dac-invert">
+<div id="useUpdatedTemplates" style="display:none" class="dac-section dac-slim dac-gray dac-expand">
   <div class="wrap dac-offset-parent">
     <a class="dac-fab dac-scroll-button" data-scroll-button href="#build-apps">
       <i class="dac-sprite dac-arrow-down-gray"></i>
     </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}sdk/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Get the SDK
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}samples/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Browse sample code
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}distribute/stories/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Watch stories
+        </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+    <a class="dac-fab dac-scroll-button" data-scroll-button="" href="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
     <div class="actions">
       <div><a href="{@docRoot}sdk/index.html">
         <span class="dac-sprite dac-auto-chevron-large"></span>
@@ -50,17 +89,15 @@
         <span class="dac-sprite dac-auto-chevron-large"></span>
         Browse Samples
       </a></div>
-      <div><a href="//www.youtube.com/user/androiddevelopers">
+      <div><a href="{@docRoot}distribute/stories/index.html">
         <span class="dac-sprite dac-auto-chevron-large"></span>
-        Watch Videos
+        Watch Stories
       </a></div>
     </div><!-- end .actions -->
   </div><!-- end .wrap -->
-</div><!-- end .actions-bar -->
+</div>
 
-
-
-<section class="dac-section dac-section-light" id="build-apps"><div class="wrap">
+<section class="dac-section dac-light" id="build-apps"><div class="wrap">
   <h1 class="dac-section-title">Build Beautiful Apps</h1>
   <div class="dac-section-subtitle">
     Resources to get you started with designing and developing for Android.
diff --git a/docs/html-intl/intl/es/preview/api-overview.jd b/docs/html-intl/intl/es/preview/api-overview.jd
deleted file mode 100644
index 1f3e9bf..0000000
--- a/docs/html-intl/intl/es/preview/api-overview.jd
+++ /dev/null
@@ -1,521 +0,0 @@
-page.title=Información general de la API
-page.keywords=preview,sdk,compatibility
-page.tags=previewresources, androidm
-sdk.platform.apiLevel=22-mnc
-page.image=images/cards/card-api-overview_16-9_2x.png
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Contenido del documento<a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
-
-        <span class="more">mostrar más</span>
-        <span class="less" style="display:none">mostrar menos</span></a></h2>
-
-<ol id="toc44" class="hide-nested">
-  <li><a href="#app-linking">Vinculación de la aplicación</a></li>
-  <li><a href="#backup">Copia de seguridad automática para aplicaciones</a></li>
-  <li><a href="#authentication">Autenticación</a>
-    <ol>
-      <li><a href="#fingerprint-authentication">Autenticación por huellas dactilares</a></li>
-      <li><a href="#confirm-credential">Confirmar credencial</a></li>
-    </ol>
-  </li>
-  <li><a href="#direct-share">Compartir de forma directa</a></li>
-  <li><a href="#voice-interactions">Interacciones de voz</a></li>
-  <li><a href="#assist">Asistencia de API</a></li>
-  <li><a href="#notifications">Notificaciones</a></li>
-  <li><a href="#bluetooth-stylus">Soporte del lápiz Bluetooth</a></li>
-  <li><a href="#ble-scanning">Exploración mejorada de Bluetooth de bajo consumo</a></li>
-  <li><a href="#hotspot">Soporte de Hotspot 2.0 versión 1</a></li>
-  <li><a href="#4K-display">Modo de pantalla 4K</a></li>
-  <li><a href="#behavior-themeable-colorstatelists">ColorStateLists para poder aplicar temas</a></li>
-  <li><a href="#audio">Características de audio</a></li>
-  <li><a href="#video">Características de video</a></li>
-  <li><a href="#camera">Características de la cámara</a>
-    <ol>
-      <li><a href="#flashlight">API para luz de flash</a></li>
-      <li><a href="#reprocessing">Reprocesamiento de la cámara</a></li>
-    </ol>
-  </li>
-  <li><a href="#afw">Características de Android for Work</a></li>
-</ol>
-
-<h2>Diferencias de las API</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">Nivel de API 22 para la versión preliminar de Android M &raquo;</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M Developer Preview le brinda una perspectiva avanzada de la próxima versión de la plataforma Android, que ofrece nuevas características para usuarios y desarrolladores de aplicaciones.
-
- En este documento, se brinda una introducción sobre las API más distinguidas.</p>
-
-<p>M Developer Preview está destinado a <strong>usuarios desarrolladores principiantes</strong> y <strong>evaluadores</strong>.
- Si le interesa influenciar la dirección del marco de trabajo de Android,
-<a href="{@docRoot}preview/setup-sdk.html">pruebe M Developer Preview y</a> envíenos sus comentarios.
-
-</p>
-
-<p class="caution"><strong>Advertencia:</strong> No publique las aplicaciones que utilizan M Developer Preview en la tienda de Google Play.
-</p>
-
-<p class="note"><strong>Nota:</strong> Este documento, a menudo, hace referencia a clases y métodos que aún no cuentan con materiales de referencia disponibles en <a href="{@docRoot}">developer.android.com</a>.
- Estos elementos de API tienen el formato {@code code style} en este documento (sin hipervínculos).
- Para obtener la documentación preliminar de la API para estos elementos, descargue la <a href="{@docRoot}preview/download.html#docs"> referencia de la versión preliminar</a>.
-</p>
-
-<h3>Importantes cambios en los comportamientos</h3>
-
-<p>Si publicó anteriormente una aplicación para Android, tenga en cuenta que su aplicación podría verse afectada por los cambios en la plataforma.
-</p>
-
-<p>Consulte la sección <a href="behavior-changes.html">Cambios en los comportamientos</a> para obtener información detallada.</p>
-
-<h2 id="app-linking">Vinculación de la aplicación</h2>
-<p>Esta versión preliminar mejora el sistema de intentos de Android al proporcionar una vinculación más sólida de la aplicación. Esta característica le permite asociar una aplicación con un dominio web propio.
- Según esta asociación, la plataforma puede determinar la aplicación predeterminada que se debe utilizar para controlar un vínculo web en particular y omitir el paso de pedirles a los usuarios que seleccionen una aplicación. Para aprender a implementar esta característica, consulte la sección
-<a href="{@docRoot}preview/features/app-linking.html">Vinculación de la aplicación</a>.
-
-
-
-<h2 id="backup">Copia de seguridad automática para aplicaciones</h2>
-<p>Ahora, el sistema realiza restauraciones y copias de seguridad de datos completas y automáticas para las aplicaciones. Este comportamiento se habilita de forma predeterminada para las aplicaciones que tienen como destino la versión preliminar de Android M; usted no necesita agregar ningún código adicional.
- Si los usuarios eliminan sus cuentas de Google, también se eliminarán sus datos de copias de seguridad.
- Para obtener información sobre cómo funciona esta característica y cómo configurar qué elementos incluir en la copia de seguridad del sistema de archivo, consulte la sección
-<a href="{@docRoot}preview/backup/index.html">Copia de seguridad automática para aplicaciones</a>.
-</p>
-
-<h2 id="authentication">Autenticación</h2>
-<p>Esta versión preliminar ofrece nuevas API para permitirle autenticar usuarios al usar escaneos de huellas dactilares en los dispositivos compatibles y verificar cuán reciente es la última autenticación del usuario al utilizar un mecanismo de desbloqueo de dispositivos (como una contraseña de pantalla de bloqueo).
-
- Use estas API junto con el <a href="{@docRoot}training/articles/keystore.html">sistema Android Keystore</a>.
-</p>
-
-<h3 id="fingerprint-authentication">Autenticación por huellas dactilares</h3>
-
-<p>Para autenticar usuarios mediante el escaneo de huellas dactilares, obtenga una instancia de la nueva clase
-{@code android.hardware.fingerprint.FingerprintManager} y llame al método
-{@code FingerprintManager.authenticate()}. Su aplicación se debe ejecutar en un dispositivo compatible con un sensor de huellas dactilares.
- Debe implementar la interfaz de usuario para el flujo de autenticación por huellas dactilares en su aplicación y debe utilizar el ícono de huella dactilar estándar de Android en la UI. El ícono de huella dactilar de Android ({@code c_fp_40px.png}) se incluye en la
-<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">aplicación de muestra</a>. Si está desarrollando múltiples aplicaciones que utilizan la autenticación por huellas dactilares, tenga en cuenta que cada aplicación debe autenticar la huella dactilar del usuario de manera independiente.
-
-
-
-</p>
-
-<p>Para utilizar esta característica en su aplicación, primero agregue el permiso {@code USE_FINGERPRINT} en su manifiesto.
-</p>
-
-<pre>
-&lt;uses-permission
-        android:name="android.permission.USE_FINGERPRINT" /&gt;
-</pre>
-
-<img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-
-<p>Para ver cómo una aplicación implementa la autenticación por huellas dactilares, consulte la sección
-<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">
-Ejemplo de diálogo de huella dactilar</a>.</p>
-
-<p>Si está evaluando esta característica, siga estos pasos:</p>
-<ol>
-<li>Instale la Revisión de herramientas del SDK de Android versión 24.3, si todavía no la instaló.</li>
-<li>Registre una huella dactilar nueva en el emulador; para hacerlo, vaya a
-<strong>Settings &gt; Security &gt; Fingerprint</strong>, luego siga las instrucciones de registro.</li>
-<li>Use un emulador para emular eventos táctiles de huellas dactilares con el siguiente comando.
- Utilice el mismo comando para emular eventos táctiles de huellas dactilares en la pantalla de bloqueo o en su aplicación.
-
-<pre class="no-prettyprint">
-adb -e emu finger touch &lt;finger_id&gt;
-</pre>
-<p>En Windows, posiblemente tenga que ejecutar {@code telnet 127.0.0.1 <emulator-id>} seguido de
-  {@code finger touch <finger_id>}.
-</p>
-</li>
-</ol>
-
-<h3 id="confirm-credential">Confirmar credencial</h3>
-<p>Su aplicación puede autenticar usuarios según el tiempo que haya pasado desde que desbloquearon su dispositivo por última vez. Esta característica evita que los usuarios tengan que recordar contraseñas adicionales específicas de la aplicación y elimina la necesidad de que usted tenga que implementar su propia interfaz de usuario de autenticación.
-
- Su aplicación debe utilizar esta característica junto con una implementación de clave pública o secreta para la autenticación del usuario.
-</p>
-
-<p>Para definir la duración del tiempo de espera en el que se puede volver a usar la misma clave después de que un usuario se haya autenticado correctamente, llame al nuevo método
-{@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()}
-cuando configure {@link javax.crypto.KeyGenerator} o
-{@link java.security.KeyPairGenerator}.
- Esta característica actualmente funciona para operaciones criptográficas simétricas.
-</p>
-
-<p>Evite mostrar el diálogo de nueva autenticación de forma excesiva: sus aplicaciones deben intentar utilizar el objeto criptográfico primero y, si se agota el tiempo de espera, deben usar el método
-{@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()}
-para volver a autenticar el usuario dentro de su aplicación.
-
-</p>
-
-<p>Para ver cómo la aplicación implementa esta característica, consulte la sección
-<a href="https://github.com/googlesamples/android-ConfirmCredential" class="external-link">
-Ejemplo de cómo confirmar la credencial</a>.</p>
-
-<h2 id="direct-share">Compartir de forma directa</h2>
-
-<img src="{@docRoot}preview/images/direct-share-screen.png" srcset="{@docRoot}preview/images/direct-share-screen.png 1x, {@docRoot}preview/images/direct-share-screen_2x.png 2x" style="float:right; margin:0 0 20px 30px" width="312" height="329" />
-
-<p>Esta versión preliminar le proporciona API para que la acción de compartir sea intuitiva y rápida para los usuarios. Ahora, puede definir <em>destinos para compartir de forma directa</em> que inician una actividad específica en su aplicación. Estos destinos para compartir de forma directa se exponen a los usuarios a través del menú <em>Share</em>.
-
- Esta característica les permite a los usuarios compartir contenido con los destinos, como contactos, dentro de otras aplicaciones.
- Por ejemplo, el destino para compartir de forma directa podría iniciar una actividad en otra aplicación de red social, lo que le permite al usuario compartir contenido directamente con una comunidad o un amigo específicos de esa aplicación.
-
-</p>
-
-<p>Para habilitar destinos para compartir de forma directa, debe definir una clase que extienda el
-{@code android.service.} <br>
-Clase {@code chooser.ChooserTargetService}. Declare su
-{@code ChooserTargetService} en el manifiesto. En esa declaración, especifique el permiso
-{@code BIND_CHOOSER_TARGET_SERVICE} y un filtro de intento con la acción
-{@code SERVICE_INTERFACE}.</p>
-<p>El ejemplo a continuación muestra de qué manera podría declarar {@code ChooserTargetService} en su manifiesto.
-</p>
-<pre>
-&lt;service android:name=".ChooserTargetService"
-        android:label="&#64;string/service_name"
-        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"&gt;
-    &lt;intent-filter&gt;
-        &lt;action android:name="android.service.chooser.ChooserTargetService" /&gt;
-    &lt;/intent-filter&gt;
-&lt;/service&gt;
-</pre>
-
-<p>Para cada actividad que desee exponer a {@code ChooserTargetService}, agregue un elemento
-{@code <meta-data>} con el nombre
-{@code "android.service.chooser.chooser_target_service"} en el manifiesto de su aplicación.
-</p>
-
-<pre>
-&lt;activity android:name=".MyShareActivity”
-        android:label="&#64;string/share_activity_label"&gt;
-    &lt;intent-filter>
-        &lt;action android:name="android.intent.action.SEND" /&gt;
-    &lt;/intent-filter>
-&lt;meta-data
-        android:name="android.service.chooser.chooser_target_service"
-        android:value=".ChooserTargetService" /&gt;
-&lt;/activity>
-</pre>
-
-<h2 id="voice-interactions">Interacciones de voz</h2>
-<p>
-Esta versión preliminar proporciona una nueva API de interacción de voz que, junto con las
-<a href="https://developers.google.com/voice-actions/" class="external-link">acciones de voz</a>,
-le permite compilar experiencias de conversaciones de voz en sus aplicaciones. Llame al método
-{@code android.app.Activity.isVoiceInteraction()} para determinar si su actividad se inició en respuesta a una acción de voz.
- De ser así, su aplicación puede utilizar la clase
-{@code android.app.VoiceInteractor} para solicitar una confirmación de voz por parte del usuario, realizar una selección de una lista de opciones y mucho más.
- Para obtener más información sobre cómo implementar acciones de voz, consulte el
-<a href="https://developers.google.com/voice-actions/interaction/" class="external-link">sitio para desarrolladores de acciones de voz</a>.
-</p>
-
-<h2 id="assist">Asistencia de API</h2>
-<p>
-Esta versión preliminar ofrece una nueva manera para que los usuarios interactúen con sus aplicaciones a través de un asistente. Si desea utilizar esta característica, el usuario debe habilitar el asistente para utilizar el contexto actual.
- Una vez habilitado, para invocar al asistente dentro de cualquier aplicación, el usuario debe mantener presionado el botón <strong>Home</strong>.
-</p>
-<p>Su aplicación puede optar por no compartir el contexto actual con el asistente al configurar la marca
-{@link android.view.WindowManager.LayoutParams#FLAG_SECURE}. Además del conjunto de información estándar que la plataforma le pasa al asistente, su aplicación puede compartir información adicional usando la nueva clase {@code android.app.Activity.AssistContent}.
-
-</p>
-
-<p>Para proporcionarle al asistente contexto adicional desde su aplicación, siga estos pasos:</p>
-
-<ol>
-<li>Implemente la interfaz {@link android.app.Application.OnProvideAssistDataListener}.</li>
-<li>Registre esta escucha usando
-{@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()}.</li>
-<li>Para proporcionar información contextual específica de la actividad, invalide la devolución de llamada
-{@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()}
-y, opcionalmente, la nueva devolución de llamada {@code Activity.onProvideAssistContent()}.
-</ol>
-
-<h2 id="notifications">Notificaciones</h2>
-<p>Esta versión preliminar agrega los siguientes cambios de API para las notificaciones:</p>
-<ul>
-  <li>Nuevo nivel de filtro {@code NotificationListenerService.INTERRUPTION_FILTER_ALARMS} que corresponde al nuevo modo ocupado <em>Solo alarmas</em>.
-</li>
-  <li>Nuevo valor de categoría {@code Notification.CATEGORY_REMINDER} que se utiliza para distinguir recordatorios programados por el usuario de otros eventos
- ({@link android.app.Notification#CATEGORY_EVENT}) y alarmas
- ({@link android.app.Notification#CATEGORY_ALARM}).
-</li>
-  <li>Nueva clase {@code android.graphics.drawable.Icon} que se puede adjuntar a sus notificaciones a través de los métodos {@code Notification.Builder.setSmallIcon(Icon)} y
-{@code Notification.Builder.setLargeIcon(Icon)}.
-</li>
-  <li>Nuevo método {@code NotificationManager.getActiveNotifications()} que permite que sus aplicaciones descubran qué notificaciones se encuentran actualmente activas.
- Para ver una implementación de la aplicación que utilice esta característica, consulte la sección <a href="https://github.com/googlesamples/android-ActiveNotifications" class="external-link">Ejemplo de notificaciones activas</a>.
-</li>
-</ul>
-
-<h2 id="bluetooth-stylus">Compatibilidad del lápiz Bluetooth</h2>
-<p>Esta versión preliminar ofrece soporte mejorado para las entradas de usuarios que utilizan un lápiz Bluetooth. Los usuarios pueden sincronizar y conectar un lápiz Bluetooth compatible con su teléfono o tablet.
-  Mientras está conectado, la información de posición de la pantalla táctil se fusiona con la información de los botones y la presión del lápiz para proporcionar una mayor variedad de expresiones que al utilizar la pantalla táctil solamente.
-
- Su aplicación puede obedecer cuando se presiona el botón del lápiz y cuando se realizan acciones secundarias al registrar las nuevas devoluciones de llamadas
-{@code View.onStylusButtonPressListener} y {@code GestureDetector.OnStylusButtonPressListener}
-en su actividad.
-</p>
-
-<p>Utilice las constantes y los métodos {@link android.view.MotionEvent} para detectar las interacciones del botón del lápiz:
-</p>
-<ul>
-<li>Si el usuario toca un lápiz con un botón en la pantalla de su aplicación, el método
-{@link android.view.MotionEvent#getToolType(int) getTooltype()} devuelve
-{@link android.view.MotionEvent#TOOL_TYPE_STYLUS}.</li>
-<li>Para las aplicaciones que tienen como destino la versión preliminar de Android M, el método
-{@link android.view.MotionEvent#getButtonState() getButtonState()}
-devuelve {@code MotionEvent.STYLUS_BUTTON_PRIMARY} cuando el usuario presiona el botón principal del lápiz.
- Si el lápiz tiene un segundo botón, el mismo método devuelve
-{@code MotionEvent.STYLUS_BUTTON_SECONDARY} cuando el usuario lo presiona. Si el usuario presiona ambos botones simultáneamente, el método devuelve ambos valores juntos separados por “OR” ({@code STYLUS_BUTTON_PRIMARY|STYLUS_BUTTON_SECONDARY}).
-
-</li>
-<li>
-Para las aplicaciones que tienen como destino una versión anterior de la plataforma, el método
-{@link android.view.MotionEvent#getButtonState() getButtonState()} devuelve
-{@link android.view.MotionEvent#BUTTON_SECONDARY} (cuando se presiona el botón principal),
-{@link android.view.MotionEvent#BUTTON_TERTIARY} (cuando se presiona el botón secundario) o ambos.
-</li>
-</ul>
-
-<h2 id="ble-scanning">Exploración mejorada de Bluetooth de bajo consumo</h2>
-<p>
-Si su aplicación realiza exploraciones de Bluetooth de bajo consumo, puede utilizar el nuevo método
-{@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} para especificar que usted desea que las devoluciones de llamadas se notifiquen solo cuando se encuentre por primera vez un paquete de anuncio que coincida con el conjunto
-{@link android.bluetooth.le.ScanFilter} y cuando no se vea durante un período determinado.
-
- Este enfoque de exploración es más eficaz en cuanto al consumo de energía que la que se proporciona en la versión anterior de la plataforma.
-
-</p>
-
-<h2 id="hotspot">Soporte de Hotspot 2.0 versión 1</h2>
-<p>
-Esta versión preliminar agrega soporte para la especificación de Hotspot 2.0 versión 1 en los dispositivos Nexus 6 y Nexus 9. Para proveer credenciales de Hotspot 2.0 en su aplicación, use los métodos nuevos de la clase
-{@link android.net.wifi.WifiEnterpriseConfig}, como {@code setPlmn()} y
-{@code setRealm()}.
- En el objeto {@link android.net.wifi.WifiConfiguration}, puede configurar los campos
-{@link android.net.wifi.WifiConfiguration#FQDN} y {@code providerFriendlyName}. La nueva propiedad {@code ScanResult.PasspointNetwork} indica si una red detectada representa un punto de acceso de Hotspot 2.0.
-
-
-</p>
-
-<h2 id="4K-display">Modo de pantalla 4K</h2>
-<p>Ahora, la plataforma permite que las aplicaciones soliciten que la resolución de pantalla se actualice a una representación 4K en el hardware compatible.
- Para consultar la resolución física actual, use las nuevas API
-{@code android.view.Display.Mode}. Si la UI se establece en una resolución lógica más baja y se aumenta a una resolución física más alta, tenga en cuenta que la resolución física que devuelve el método
-{@code Display.Mode.getPhysicalWidth()} puede ser diferente de la resolución lógica informada por {@link android.view.Display#getSize(android.graphics.Point) getSize()}.
-
-</p>
-
-<p>Puede pedirle al sistema que cambie la resolución física en su aplicación mientras se ejecuta y, para ello, debe configurar la propiedad {@code WindowManager.LayoutParams.preferredDisplayModeId} de la ventana de su aplicación.
-  Esta característica resulta útil si desea cambiar a la resolución de pantalla 4K.
- Mientras se encuentra en el modo de pantalla 4K, la UI se continúa representando en la resolución original (como 1080p) y se aumenta a 4K, pero los objetos
-{@link android.view.SurfaceView} pueden mostrar contenido en la resolución nativa.
-</p>
-
-<h2 id="behavior-themeable-colorstatelists">ColorStateLists para poder aplicar temas</h2>
-<p>Ahora, los atributos de tema se admiten en
-{@link android.content.res.ColorStateList} para los dispositivos que ejecutan la versión preliminar de Android M. Los métodos
-{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} y
-{@link android.content.res.Resources#getColor(int) getColor()} se dejaron de usar. Si desea llamar a estas API, en su lugar, llame a los métodos nuevos {@code Context.getColorStateList()} o
-{@code Context.getColor()}.
- Estos métodos también se encuentran disponibles en la biblioteca AppCompat v4 vía {@link android.support.v4.content.ContextCompat}.
-</p>
-
-<h2 id="audio">Características de audio</h2>
-
-<p>Esta versión preliminar agrega mejoras al procesamiento de audio en Android, lo que incluye lo siguiente: </p>
-<ul>
-  <li>Soporte para el protocolo <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a>
-, con las nuevas API {@code android.media.midi}. Utilice estas API para enviar y recibir eventos MIDI.
-</li>
-  <li>Clases nuevas {@code android.media.AudioRecord.Builder} y {@code android.media.AudioTrack.Builder}
- para crear capturas de audio digital y objetos de reproducción respectivamente, y configurar propiedades de receptores y fuentes de audio para invalidar los valores predeterminados del sistema.
-</li>
-  <li>Enlaces de API para asociar dispositivos de entrada y de audio. Esto resulta particularmente útil si su aplicación les permite a los usuarios iniciar una búsqueda por voz desde un controlador para juegos o un control remoto conectados a un TV con Android. El sistema invoca la nueva devolución de llamada {@code android.app.Activity.onSearchRequested()} cuando el usuario inicia una búsqueda.
-
-
- Para determinar si el dispositivo de entrada del usuario tiene un micrófono incorporado, recupere el objeto {@link android.view.InputDevice} de esa devolución de llamada y luego llame al nuevo método
-{@code InputDevice.hasMic()}.
-</li>
-  <li>Nueva clase {@code android.media.AudioDevicesManager}, que le permite recuperar una lista de todos los dispositivos de audio receptores y fuente adjuntos.
- También puede especificar un objeto
-{@code android.media.OnAudioDeviceConnectionListener} si desea que su aplicación reciba una notificación cuando se conecta o desconecta un dispositivo de audio.
-</li>
-</ul>
-
-<h2 id="video">Características de video</h2>
-<p>Esta versión preliminar agrega nuevas capacidades a las API de procesamiento de video, entre ellas, las siguientes:</p>
-<ul>
-<li>Nueva clase {@code android.media.MediaSync} que ayuda a las aplicaciones a representar de forma sincrónica transmisiones de audio y video.
- Los búferes de audio se envían de manera que no generan bloqueo y regresan mediante una devolución de llamada.
- Además, admite una velocidad de reproducción dinámica.
-</li>
-<li>Nuevo evento {@code MediaDrm.EVENT_SESSION_RECLAIMED}, que indica cuando una sesión abierta por la aplicación es reclamada por el administrador de recursos.
- Si su aplicación utiliza sesiones DRM, debe controlar este evento y asegurarse de no utilizar una sesión reclamada.
-
-</li>
-<li>Nuevo código de error {@code MediaCodec.CodecException.ERROR_RECLAIMED}, que indica que el administrador de recursos reclamó el recurso multimedia utilizado por el códec.
- Con esta excepción, se debe liberar el códec, ya que pasó al estado terminal.
-
-</li>
-<li>Nueva interfaz {@code MediaCodecInfo.CodecCapabilities.getMaxSupportedInstances()} para obtener una indicación de la cantidad máxima de instancias concurrentes de códec admitidas.
-
-</li>
-<li>Nuevo método {@code MediaPlayer.setPlaybackParams()} para configurar la velocidad de reproducción multimedia para reproducciones rápidas o lentas.
- Además, alarga o acelera la reproducción de audio de forma automática junto con el video.
-</li>
-</ul>
-
-<h2 id="camera">Características de la cámara</h2>
-<p>Esta versión preliminar incluye las siguientes API nuevas para acceder a la luz de flash de la cámara y para el reprocesamiento de imágenes de la cámara:
-</p>
-
-<h3 id="flashlight">API para luz de flash</h3>
-<p>Si un dispositivo de cámara cuenta con una unidad de flash, puede llamar al método {@code CameraManager.setTorchMode()}
-para activar o desactivar el modo linterna de una unidad de flash sin abrir el dispositivo de cámara. La aplicación no tiene propiedad exclusiva de la unidad de flash ni del dispositivo de cámara.
- El modo linterna se desactiva y deja de estar disponible cuando la cámara no se encuentra disponible o cuando otros recursos de la cámara que mantienen la linterna encendida dejan de estar disponibles.
-
- Otras aplicaciones también pueden llamar a {@code setTorchMode()}
-para desactivar el modo linterna. Cuando se cierra la última aplicación que activó el modo linterna, este modo se desactiva.
-</p>
-
-<p>Si desea registrar una devolución de llamada para recibir una notificación sobre el estado del modo linterna, llame al método
-{@code CameraManager.registerTorchCallback()}. La primera vez que se registra la devolución de llamada, se llama inmediatamente con el estado del modo linterna de todos los dispositivos de cámara que se conocen actualmente y que tengan una unidad de flash.
-
- Si el modo linterna se activa o desactiva correctamente, se invoca al método
-{@code CameraManager.TorchCallback.onTorchModeChanged()}.</p>
-
-<h3 id="reprocessing">API de reprocesamiento</h3>
-<p>La API {@link android.hardware.camera2 Camera2} se extiende para admitir el reprocesamiento de imágenes privadas de formato opaco y YUV.
- Su aplicación determina si las capacidades de reprocesamiento se encuentran disponibles vía {@code CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES}.
- Si un dispositivo admite el reprocesamiento, usted puede crear una sesión de captura de cámara reprocesable llamando a
-{@code CameraDevice.createReprocessableCaptureSession()} y puede crear solicitudes para el reprocesamiento de búferes de entrada.
-
-</p>
-
-<p>Utilice la clase {@code ImageWriter} para conectar el flujo del búfer de entrada a la entrada de reprocesamiento de la cámara.
- Para obtener un búfer vacío, siga el modelo de programación que se indica a continuación:</p>
-
-<ol>
-<li>Llame al método {@code ImageWriter.dequeueInputImage()}.</li>
-<li>Complete los datos en el búfer de entrada.</li>
-<li>Envíe el búfer a la cámara llamando al método {@code ImageWriter.queueInputImage()}.</li>
-</ol>
-
-<p>Si está utilizando un objeto {@code ImageWriter} junto con una imagen
-{@code android.graphics.ImageFormat.PRIVATE}, su aplicación no puede acceder a los datos de la imagen de forma directa.
- En cambio, pase la imagen {@code ImageFormat.PRIVATE} directamente a
-{@code ImageWriter} llamando al método {@code ImageWriter.queueInputImage()} sin ninguna copia del búfer.
-</p>
-
-<p>La clase {@code ImageReader} ahora admite secuencias de imagen de formato {@code android.graphics.ImageFormat.PRIVATE}.
- Este soporte le permite que su aplicación mantenga una cola de imagen circular de imágenes de salida
-{@code ImageReader}, seleccione una o más imágenes y las envíe a
-{@code ImageWriter} para el reprocesamiento de la cámara.</p>
-
-<h2 id="afw">Características de Android for Work</h2>
-<p>Esta versión preliminar incluye las siguientes API nuevas para Android for Work:</p>
-<ul>
-  <li><strong>Controles mejorados para dispositivos corporativos de uso único:</strong> El propietario de dispositivo ahora puede controlar las configuraciones que se describen a continuación para mejorar la administración de los dispositivos corporativos de uso único (Corporate-Owned, Single-Use, COSU).
-
-
-  <ul>
-    <li>Deshabilitar o volver a habilitar la protección de seguridad con el método
-{@code DevicePolicyManager.setKeyguardEnabledState()}.</li>
-    <li>Deshabilitar o volver a habilitar la barra de estado (lo que incluye configuraciones rápidas, notificaciones y el gesto de navegación al deslizar el dedo hacia arriba para iniciar Google Now) con el método
-{@code DevicePolicyManager.setStatusBarEnabledState()}.
-</li>
-    <li>Deshabilitar o volver a habilitar el inicio seguro con la constante {@link android.os.UserManager}
-{@code DISALLOW_SAFE_BOOT}.</li>
-    <li>Evitar que se apague la pantalla mientras el dispositivo se encuentra conectado con la constante
-  {@link android.provider.Settings.Global} {@code STAY_ON_WHILE_PLUGGED_IN}.</li>
-  </ul>
-  </li>
-  <li><strong>Instalación y desinstalación automáticas de aplicaciones por parte del propietario de dispositivo:</strong> Un propietario de dispositivo ahora puede instalar y desinstalar aplicaciones de manera automática con las API {@link android.content.pm.PackageInstaller}
-, independiente de Google Play for Work.
- Ahora, puede aprovisionar los dispositivos a través de un propietario de dispositivo que obtiene e instala aplicaciones sin interacción del usuario.
- Esta característica es útil para habilitar el aprovisionamiento con un toque de quioscos u otros dispositivos similares sin activar una cuenta de Google.
-</li>
-<li><strong>Acceso automático al certificado de empresa:</strong> Ahora cuando una aplicación llama a
-{@link android.security.KeyChain#choosePrivateKeyAlias(android.app.Activity,android.security.KeyChainAliasCallback,java.lang.String[],java.security.Principal[],java.lang.String,int,java.lang.String) choosePrivateKeyAlias()}, antes de que se indique al usuario que seleccione un certificado, el propietario de dispositivo o perfil puede llamar al método {@code DeviceAdminReceiver.onChoosePrivateKeyAlias()} para proporcionar el alias de forma automática a la aplicación que realiza la solicitud.
-
-
- Esta característica le permite conceder a las aplicaciones gestionadas acceso a certificados sin interacción del usuario.
-</li>
-<li><strong>Aceptación automática de actualizaciones del sistema:</strong> Al configurar una directiva de actualización del sistema con
-{@code DevicePolicyManager.setSystemUpdatePolicy()}, el propietario de dispositivo ahora puede aceptar automáticamente una actualización del sistema, por ejemplo, en el caso de un dispositivo de quiosco, o posponer la actualización y evitar que el usuario la ejecute durante un plazo de hasta 30 días.
-
- Además, un administrador puede configurar un período de tiempo diario en el que se debe ejecutar una actualización, por ejemplo, durante las horas en que no se usa el dispositivo de quiosco.
- Cuando hay una actualización del sistema disponible, el sistema verifica si la aplicación Work Policy Controller definió una directiva de actualización del sistema y se comporta según corresponda.
-
-
-</li>
-<li>
-<strong>Instalación delegada de certificados:</strong> Ahora, un propietario de dispositivo o perfil puede concederle a una aplicación de terceros la capacidad de llamar a estas API de administración de certificados {@link android.app.admin.DevicePolicyManager}:
-
-
-<ul>
-  <li>{@link android.app.admin.DevicePolicyManager#getInstalledCaCerts(android.content.ComponentName)
-getInstalledCaCerts()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#hasCaCertInstalled(android.content.ComponentName,byte[])
-hasCaCertInstalled()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#installCaCert(android.content.ComponentName,byte[])
-installCaCert()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#uninstallCaCert(android.content.ComponentName,byte[])
-uninstallCaCert()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#uninstallAllUserCaCerts(android.content.ComponentName)
-uninstallAllUserCaCerts()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#installKeyPair(android.content.ComponentName,java.security.PrivateKey,java.security.cert.Certificate,java.lang.String)
-installKeyPair()}</li>
-</ul>
-</li>
-<li><strong>Protección de restablecimiento de la configuración predeterminada de fábrica:</strong> Al aprovisionar a un propietario de dispositivo, ahora podrá configurar parámetros para desbloquear la protección de restablecimiento de la configuración predeterminada de fábrica (Factory Reset Protection, FRP) configurando el paquete
-{@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS}.
- Una aplicación de Programador NFC puede proporcionar estos parámetros después del restablecimiento de un dispositivo para desbloquear la FRP y aprovisionar al dispositivo sin requerir la cuenta de Google configurada previamente.
-
- Si no modifica estos parámetros, la FRP se conserva y evita que el dispositivo se active sin las credenciales de Google activadas previamente.
-
-
-<p>Además, al configurar las restricciones de la aplicación en los servicios de Google Play, los propietarios de dispositivos pueden especificar cuentas de Google alternativas para desbloquear la FRP y reemplazar las que se encuentran activadas en el dispositivo.
-</p>
-</li>
-<img src="{@docRoot}preview/images/work-profile-screen.png" srcset="{@docRoot}preview/images/work-profile-screen.png 1x, {@docRoot}preview/images/work-profile-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-<li><strong>Seguimiento del uso de datos:</strong> Ahora, un propietario de dispositivo o perfil puede consultar las estadísticas de uso de datos que se pueden ver en <strong>Settings &gt; Data</strong> utilizando los nuevos métodos
-{@code android.app.usage.NetworkStatsManager}.
- A los propietarios de perfiles se les concede automáticamente permiso para consultar los datos del perfil que administran, mientras que los propietarios de dispositivo obtienen acceso a los datos de uso del usuario principal administrado.
-
-</li>
-<li><strong>Administración de permisos de tiempo de ejecución:</strong>
-<p>Un propietario de dispositivo o perfil puede configurar una directiva de permisos para todas las solicitudes de tiempo de ejecución de todas las aplicaciones que utilizan
-{@code DevicePolicyManager.setPermissionPolicy()}, a fin de pedirle confirmación al usuario para conceder el permiso de manera normal, o bien, para conceder o negar el permiso automáticamente sin notificarlo.
-
- Si se configura la última directiva, el usuario no puede modificar la selección realizada por el propietario de dispositivo o perfil dentro de la pantalla de permisos de la aplicación en <strong>Settings</strong>.
-
-</p></li>
-<li><strong>VPN en Settings:</strong> Las aplicaciones de la VPN (red privada virtual) ahora se pueden ver en
-<strong>Settings &gt; More &gt; VPN</strong>. Además, las notificaciones que acompañan el uso de la VPN ahora son específicas para la manera en que dicha VPN está configurada.
-
- Para el propietario de perfil, las notificaciones son específicas dependiendo de si la VPN se configura para un perfil administrado, un perfil personal o ambos.
- Para un propietario de dispositivo, las notificaciones son específicas dependiendo de si la VPN se configura para todo el dispositivo.
-</li>
-<li><strong>Notificación del estado del trabajo:</strong> Ahora aparecerá un ícono de maletín en la barra de estado siempre que una aplicación del perfil administrado tenga una actividad en primer plano.
- Además, si el dispositivo se desbloquea directamente para la actividad de una aplicación del perfil administrado, se mostrará una notificación del sistema para informarle al usuario que se encuentra dentro del perfil de trabajo.
-
-
-</li>
-</ul>
-
-<p class="note">
-  Para obtener una vista detallada de todos los cambios de la API en M Developer Preview, consulte el <a href="{@docRoot}preview/download.html">Informe de diferencias de las API</a>.
-</p>
diff --git a/docs/html-intl/intl/es/preview/backup/index.jd b/docs/html-intl/intl/es/preview/backup/index.jd
deleted file mode 100644
index 7e23083..0000000
--- a/docs/html-intl/intl/es/preview/backup/index.jd
+++ /dev/null
@@ -1,327 +0,0 @@
-page.title=Copia de seguridad automática para aplicaciones
-page.tags=copia de seguridad, recursos de la versión preliminar, androidm
-page.keywords=copia de seguridad, copia de seguridad automática, versión preliminar
-page.image=images/cards/card-auto-backup_2x.png
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Contenido del documento</h2>
-      <ol>
-        <li><a href="#overview">Información general</a></li>
-        <li><a href="#configuring">Configuración de la copia de seguridad de datos</a></li>
-        <li><a href="#testing">Pruebas de la configuración de copia de seguridad</a></li>
-        <li><a href="#issues">Problemas conocidos</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  A menudo, los usuarios invierten tiempo y esfuerzo significativos para crear datos y configurar preferencias dentro de las aplicaciones.
- Preservar los datos de los usuarios en caso de que reemplacen un dispositivo averiado o se actualicen a uno nuevo es una parte importante para garantizar una excelente experiencia del usuario.
- Los dispositivos que ejecutan el sistema de la versión preliminar de Android M ayudan a garantizar una buena experiencia para los usuarios en estas circunstancias al realizar automáticamente copias de seguridad de los datos de la aplicación en Google Drive.
-
- Los datos de la aplicación se restauran automáticamente si un usuario cambia o actualiza un dispositivo.
-
-</p>
-
-<p>
-  Las copias de seguridad automáticas se habilitan para todas las aplicaciones instaladas en dispositivos que ejecuten la versión preliminar de Android M. No se requiere ningún código de aplicación adicional.
- El sistema les proporciona a los usuarios la capacidad de desactivar las copias de seguridad de datos automáticas.
- También puede optar por limitar qué datos de su aplicación se incluyen en la copia de seguridad.
-</p>
-
-<p>
-  En este documento, se describe el nuevo comportamiento del sistema y el modo de especificar qué datos incluir en la copia de seguridad de la aplicación.
-
-</p>
-
-<h2 id="overview">Información general</h2>
-
-<p>
-  Para preservar los datos que su aplicación crea en un dispositivo de usuario, la característica de copia de seguridad automática los carga a la cuenta de Google Drive del usuario y los cifra.
- No se aplican cargos para usted ni para el usuario por el almacenamiento de datos y los datos guardados no se consideran al calcular la capacidad máxima de la cuenta personal de Google Drive del usuario.
- Durante el período de la versión preliminar de Android M, los usuarios pueden almacenar hasta 25 MB por aplicación de Android.
-
-</p>
-
-<p>
-  Las copias de seguridad automáticas se realizan cada 24 horas, cuando el dispositivo está inactivo, se está cargando y está conectado a una red Wi-Fi.
- Cuando se cumplen estas condiciones, el servicio Backup Manager carga todos los datos de copia de seguridad disponibles a la nube.
- Cuando el usuario pasa a un dispositivo nuevo, o desinstala y vuelve a instalar la aplicación de la copia de seguridad, una operación de restauración copia los datos incluidos en la copia de seguridad en el directorio de datos de la aplicación recientemente instalada.
-
-
-</p>
-
-<p class="note">
-  <strong>Nota:</strong> Si su aplicación utiliza el <a href="{@docRoot}google/backup/index.html">servicio Android Backup</a> heredado, este nuevo comportamiento no se aplica y el comportamiento de copia de seguridad existente funciona de manera habitual.
-
-
-</p>
-
-
-<h3 id="auto-exclude">Archivos de datos automáticamente excluidos</h3>
-
-<p>
-  No todos los datos de la aplicación se deben incluir en la copia de seguridad, como los archivos temporales y los cachés, por lo que el servicio de copias de seguridad automáticas excluye ciertos archivos de datos de manera predeterminada:
-
-</p>
-
-<ul>
-  <li>Archivos de los directorios a los que hacen referencia los métodos {@link android.content.Context#getCacheDir
-    getCacheDir()} y {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()}
-.
-  </li>
-
-  <li>Archivos ubicados en almacenamiento externo, salvo que residan en el directorio al que hace referencia el método
-    {@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
-.
-  </li>
-
-  <li>Archivos ubicados en el directorio a los que hace referencia el método
-    {@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()}.
-  </li>
-</ul>
-
-<h2 id="configuring">Configuración de la copia de seguridad de datos</h2>
-
-<p>
-  Las copias de seguridad se realizan para los datos creados por cualquier aplicación instalada en un dispositivo con la versión preliminar de Android M, excepto en el caso de los archivos excluidos automáticamente que se mencionaron en la sección anterior.
- Usted puede limitar y configurar aún más los datos que se incluyen en la copia de seguridad de su aplicación y, para ello, debe utilizar configuraciones en el manifiesto de su aplicación.
-
-</p>
-
-<h3 id="include-exclude">Cómo incluir o excluir datos</h3>
-
-<p>
-  De acuerdo con los datos que su aplicación necesita y el modo en que usted guarda estos datos, es posible que tenga que definir reglas específicas para incluir o excluir ciertos archivos o directorios.
- El servicio de copias de seguridad automáticas admite la configuración de estas reglas de copias de seguridad a través del uso de un archivo de configuración XML y el manifiesto de la aplicación.
-
- En el manifiesto de la aplicación, puede especificar un archivo de configuración de esquema de la copia de seguridad, como se muestra en el siguiente ejemplo:
-
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:tools="http://schemas.android.com/tools"
-        package="com.my.appexample"&gt;
-    &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
-    &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
-    &lt;app ...
-<strong>        android:fullBackupContent="&#64;xml/mybackupscheme"&gt;</strong>
-    &lt;/app&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
-
-<p>
-  En este código de ejemplo, el atributo <code>android:fullBackupContent</code> especifica un archivo XML, ubicado en el directorio <code>res/xml/</code> del proyecto de desarrollo de su aplicación, con el nombre <code>mybackupscheme.xml</code>.
-
- Este archivo de configuración incluye reglas sobre los archivos para los que se realiza una copia de seguridad.
- El siguiente código de ejemplo muestra un archivo de configuración que excluye un archivo específico de las copias de seguridad:
-
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;full-backup-content&gt;
-    &lt;exclude domain="database" path="device_info.db"/&gt;
-&lt;/full-backup-content&gt;
-</pre>
-
-<p>
-  Este ejemplo de configuración de copia de seguridad solo excluye un archivo específico de base de datos que no se incluirá en la copia de seguridad.
-  Todos los demás archivos se incluirán en la copia de seguridad.
-</p>
-
-<h4>Sintaxis de la configuración de copia de seguridad</h4>
-
-<p>
-  La configuración del servicio de copias de seguridad le permite especificar qué archivos incluir en la copia de seguridad o excluir de ella.
- La sintaxis del archivo de configuración XML de copia de seguridad de datos es la siguiente:
-</p>
-
-<pre>
-&lt;full-backup-content&gt;
-    &lt;include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
-    &lt;exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
-&lt;/full-backup-content&gt;
-</pre>
-
-<p>
-  Los siguientes elementos y atributos le permiten especificar qué archivos incluir de la copia de seguridad o excluir de ella:
-
-</p>
-
-<ul>
-  <li>
-  <code>&lt;include&gt;</code>. Use este elemento si desea especificar un conjunto de recursos para realizar una copia de seguridad, en lugar de hacer que el sistema realice una copia de seguridad de todos los datos de su aplicación de forma predeterminada.
- Cuando especifica una etiqueta <code>&lt;include&gt;</code>, el sistema realiza una copia de seguridad <em>solo de los recursos que se especifican</em>
- con este elemento.
-
-  </li>
-
-  <li>
-  <code>&lt;exclude&gt;</code>. Use este elemento para especificar un conjunto de recursos para excluir de la copia de seguridad.
- El sistema realizará una copia de seguridad de todos los datos de su aplicación, excepto de los recursos que se especifican con este elemento.
-
-  </li>
-
-  <li>
-  <code>domain.</code> El tipo de recurso que desea incluir en la copia de seguridad o excluir de esta. Entre los valores válidos que usted puede especificar para este atributo se incluyen los siguientes:
-
-  </li>
-
-  <li style="list-style: none">
-  <ul>
-    <li>
-    <code>root</code>. Especifica que el recurso se encuentra en el directorio raíz de la aplicación.
-    </li>
-
-    <li>
-    <code>file</code>. Corresponde a un recurso del directorio devuelto por el método
-{@link android.content.Context#getFilesDir getFilesDir()}.
-    </li>
-
-    <li>
-    <code>database</code>. Corresponde a una base de datos devuelta por el método
-{@link android.content.Context#getDatabasePath getDatabasePath()} o mediante el uso de la clase
-{@link android.database.sqlite.SQLiteOpenHelper}.
-    </li>
-
-    <li>
-    <code>sharedpref</code>. Corresponde a un objeto {@link android.content.SharedPreferences} devuelto por el método {@link android.content.Context#getSharedPreferences getSharedPreferences()}
-.
-
-    </li>
-
-    <li>
-    <code>external</code>. Especifica que el recurso se encuentra en almacenamiento externo y corresponde a un archivo del directorio devuelto por el método
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()}.
-
-    </li>
-
-    <li>
-    <code>path</code>. La ruta de archivo para un recurso que desea incluir en la copia de seguridad o excluir de esta.
-
-    </li>
-  </ul>
-  </li>
-</ul>
-
-
-<h3 id="prohibit">Cómo prohibir las copias de seguridad de datos</h3>
-
-<p>
-  Puede optar por impedir que se realicen copias de seguridad automáticas de los datos de su aplicación y, para ello, debe configurar el atributo
-<code>android:allowBackup</code> en <code>false</code> en el elemento de la aplicación de su manifiesto.
- Esta configuración se ilustra en el siguiente código de ejemplo:
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:tools="http://schemas.android.com/tools"
-        package="com.my.appexample"&gt;
-    &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
-    &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
-    &lt;app ...
-<strong>        android:allowBackup="false"&gt;</strong>
-    &lt;/app&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
-
-
-<h2 id="testing">Pruebas de la configuración de copia de seguridad</h2>
-
-<p>
-  Cuando haya creado una configuración de copia de seguridad, debe probarla para garantizar que su aplicación guarde los datos y se pueda restaurar correctamente.
-
-</p>
-
-
-<h4>Cómo habilitar un registro de copias de seguridad</h4>
-
-<p>
-  Para ayudar a determinar la manera en que la característica de copia de seguridad está analizando su archivo XML, habilite el registro antes de realizar una copia de seguridad de prueba:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
-</pre>
-
-<h4>Cómo probar la copia de seguridad</h4>
-
-<p>Para ejecutar manualmente una copia de seguridad, primero debe inicializar Backup Manager llamando al siguiente comando:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr run
-</pre>
-
-<p>
-  Luego, realice una copia de seguridad de su aplicación manualmente utilizando el comando que se indica a continuación y especificando el nombre de paquete para su aplicación como el parámetro <code>&lt;PACKAGE&gt;</code>:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr fullbackup &lt;PACKAGE&gt;</pre>
-
-
-<h4>Cómo probar la restauración</h4>
-
-<p>
-  Para iniciar una restauración manualmente después de realizar una copia de seguridad de los datos, llame al comando que se indica a continuación y especifique el nombre de paquete para su aplicación como el parámetro <code>&lt;PACKAGE&gt;</code>:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr restore &lt;PACKAGE&gt;
-</pre>
-
-<p class="warning">
-  <b>Advertencia:</b> Esta acción detiene la aplicación y borra sus datos antes de realizar la operación de restauración.
-
-</p>
-
-<p>
-  Para iniciar el proceso de restauración de su aplicación, desinstale su aplicación y vuelva a instalarla. Los datos de la aplicación se restaurarán automáticamente desde la nube una vez que se complete la instalación.
-
-</p>
-
-
-<h4>Solución de problemas de las copias de seguridad</h4>
-
-<p>
-  Si tiene algún problema, borre los datos de la copia de seguridad y los metadatos asociados; para hacerlo, desactive y vuelva a activar la copia de seguridad en <strong>Settings &gt; Backup</strong>, restablezca el dispositivo a la configuración predeterminada de fábrica o llame al siguiente comando:
-
-
-</p>
-
-<pre>$ adb shell bmgr wipe &lt;TRANSPORT&gt; &lt;PACKAGE&gt;</pre>
-
-<p>
-  El valor <code>&lt;TRANSPORT&gt;</code> debe estar precedido por <code>com.google.android.gms</code>.
-  Para obtener una lista de transportes, llame al siguiente comando:
-</p>
-
-<pre>$ adb shell bmgr list transports</pre>
-
-<h2 id="issues">Problemas conocidos</h2>
-
-<p>Los siguientes son problemas conocidos del servicio de copias de seguridad automáticas:</p>
-
-<ul>
-  <li><strong>Google Cloud Messaging</strong>: En las aplicaciones que utilizan Google Cloud Messaging para notificaciones push, existe un problema conocido en el que al realizar una copia de seguridad de la Id. de registro devuelta por el registro de Google Cloud Messaging, se pueden romper las notificaciones push de la aplicación restaurada. Es importante realizar una consulta a la API para obtener una nueva Id. de registro después de realizar la instalación en un dispositivo nuevo, lo que no sucede si se realizó una copia de seguridad de la Id. de registro anterior.
-
-
-
-
- Para evitar esta situación, excluya la Id. de registro del conjunto de archivos para incluir en la copia de seguridad.
-
-  </li>
-</ul>
diff --git a/docs/html-intl/intl/es/preview/behavior-changes.jd b/docs/html-intl/intl/es/preview/behavior-changes.jd
deleted file mode 100644
index 75936bd..0000000
--- a/docs/html-intl/intl/es/preview/behavior-changes.jd
+++ /dev/null
@@ -1,403 +0,0 @@
-page.title=Cambios en los comportamientos
-page.keywords=versión preliminar,sdk,compatibilidad
-sdk.platform.apiLevel=MNC
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Contenido del documento</h2>
-
-<ol id="toc44" class="hide-nested">
-    <li><a href="#behavior-runtime-permissions">Permisos de tiempo de ejecución</a></li>
-    <li><a href="#behavior-power">Optimizaciones de ahorro de energía</a>
-        <ol>
-            <li><a href="#behavior-doze">Doze</a></li>
-            <li><a href="#behavior-app-standby">App Standby</a></li>
-        </ol>
-    </li>
-    <li><a href="#behavior-adoptable-storage">Dispositivos de almacenamiento adoptables</a></li>
-    <li><a href="#behavior-apache-http-client">Eliminación del cliente HTTP de Apache</a></li>
-    <li><a href="#behavior-audiomanager-Changes">Cambios en AudioManager</a></li>
-    <li><a href="#behavior-test-selection">Selección de texto</a></li>
-    <li><a href="#behavior-keystore">Cambios en Android Keystore</a></li>
-    <li><a href="#behavior-network">Cambios en las funciones de red y Wi-Fi</a></li>
-    <li><a href="#behavior-camera">Cambios en el servicio de cámara</a></li>
-    <li><a href="#behavior-art-runtime">Tiempo de ejecución de ART</a></li>
-    <li><a href="#behavior-apk-validation">Validación de APK</a></li>
-    <li><a href="#behavior-afw">Cambios en Android for Work</a></li>
-</ol>
-
-<h2>Diferencias de las API</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">Nivel de API 22 para la versión preliminar de Android M &raquo;</a> </li>
-</ol>
-
-
-<h2>Consulte también</h2>
-<ol>
-<li><a href="{@docRoot}preview/api-overview.html">Información general de la API de M Developer Preview</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>Además de nuevas características y capacidades, M Developer Preview incluye diversos cambios en el sistema y cambios en los comportamientos de la API.
- En este documento, se destacan algunos de los cambios principales que debe comprender y justificar en sus aplicaciones.
-</p>
-
-<p>Si publicó anteriormente una aplicación para Android, tenga en cuenta que su aplicación podría verse afectada por estos cambios en la plataforma.
-</p>
-
-<h2 id="behavior-runtime-permissions">Permisos de tiempo de ejecución</h1>
-<p>Esta versión preliminar introduce un nuevo modelo de permisos en el que los usuarios ahora pueden administrar directamente los permisos de la aplicación en tiempo de ejecución.
- Este modelo les proporciona a los usuarios mayor visibilidad y control sobre los permisos y, al mismo tiempo, simplifica los procesos de instalación y actualización automática para los desarrolladores de aplicaciones. Los usuarios pueden conceder o revocar permisos de forma individual para las aplicaciones instaladas.
-
- </p>
-
-<p>En sus aplicaciones que tienen como destino la versión preliminar de Android M, asegúrese de comprobar y solicitar los permisos en tiempo de ejecución.
- Para determinar si se concedió un permiso a su aplicación, llame al nuevo método {@code Context.checkSelfPermission()}.
- Para solicitar un permiso, llame al nuevo método
-{@code Activity.requestPermission()}. Incluso si su aplicación no tiene como destino la versión preliminar de Android M, debería probar su aplicación de acuerdo con el nuevo modelo de permisos.
-</p>
-
-<p>Para obtener detalles sobre la compatibilidad del nuevo modelo de permisos en su aplicación, consulte la página 
-<a href="{@docRoot}preview/features/runtime-permissions.html">
-Permisos</a> de la versión preliminar para desarrolladores. Para obtener consejos sobre cómo evaluar el impacto en su aplicación, consulte la <a href="{@docRoot}preview/testing/guide.html#runtime-permissions">Guía de prueba</a>.
-</p>
-
-<h2 id="behavior-power">Optimizaciones de ahorro de energía</h2>
-<p>Esta versión preliminar introduce nuevas optimizaciones de ahorro de energía para aplicaciones y dispositivos inactivos.</p>
-
-<h3 id="behavior-doze">Doze</h3>
-<p>Si un dispositivo está desconectado y permanece quieto con la pantalla apagada durante un período determinado, pasará al modo <em>Doze</em>, en el que el dispositivo intenta mantener el sistema en estado de suspensión.
- En este modo, los dispositivos reanudan periódicamente el funcionamiento normal durante períodos breves, de manera que la aplicación se pueda sincronizar y el sistema pueda realizar las operaciones pendientes.
-
-</p>
-
-<p>Durante el modo Doze, se aplican las siguientes restricciones a sus aplicaciones:</p>
-<ul>
-<li>Se deshabilita el acceso a la red, salvo que su aplicación reciba una señal de prioridad alta de Google Cloud Messaging (envío de mensajes a través de la nube de Google).
-</li>
-<li>Se ignoran los <a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">Wakelocks</a>.</li>
-<li>Se deshabilitan las alarmas programadas con la clase {@link android.app.AlarmManager}, salvo las alarmas que haya configurado con el método {@link android.app.AlarmManager#setAlarmClock setAlarmClock()}
-y con {@code AlarmManager.setAndAllowWhileIdle()}.
-</li>
-<li>No se realiza la detección de Wi-Fi.</li>
-<li>No se permite la ejecución de sincronizaciones ni trabajos para sus adaptadores de sincronización y {@link android.app.job.JobScheduler}.
-</li>
-</ul>
-</p>
-<p>Al salir del modo Doze, el dispositivo ejecuta los trabajos y las sincronizaciones pendientes.</p>
-<p>Para probar esta característica, conecte un dispositivo que esté ejecutando la versión preliminar de Android M a su equipo de desarrollo y llame a los siguientes comandos:
-
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-<p class="note"><strong>Nota:</strong> La próxima versión de
-<a href="https://developers.google.com/cloud-messaging/" class="external-link">
-Google Cloud Messaging</a> le permite designar mensajes de prioridad alta.
- Si su aplicación recibe mensajes de GCM de prioridad alta, se le concede un breve acceso a la red, incluso cuando el dispositivo se encuentra en modo Doze.
-
-</p>
-
-<p>Consulte la
-<a href="{@docRoot}preview/testing/guide.html#doze-standby">Guía de prueba</a> para obtener consejos sobre cómo probar el modo Doze en su aplicación.
- </p>
-
-<h3 id="behavior-app-standby">App Standby</h3>
-<p>Con esta versión preliminar, el sistema puede determinar que las aplicaciones se encuentran inactivas cuando no están en uso activo.
- La aplicación se considera inactiva después de un cierto período, salvo que el sistema detecte alguna de las siguientes señales:
-</p>
-
-<ul>
-<li>El usuario inicia explícitamente la aplicación.</li>
-<li>La aplicación actualmente tiene un proceso en primer plano (ya sea como una actividad o un servicio en primer plano, o en uso por parte de otra actividad u otro servicio en primer plano).
-</li>
-<li>La aplicación genera una notificación que los usuarios ven en la pantalla de bloqueo o en la bandeja de notificaciones.
-</li>
-<li>El usuario solicita explícitamente que la aplicación esté exenta de optimizaciones mediante las <strong>Configuraciones</strong>.
-</li>
-</ul>
-
-<p>Si el dispositivo está desconectado, las aplicaciones que se consideren inactivas tendrán deshabilitado el acceso a la red y se suspenderán sus sincronizaciones y trabajos.
- Cuando el dispositivo se conecte a un sistema de alimentación, estas aplicaciones se podrán conectar a la red y podrán ejecutar los trabajos y las sincronizaciones pendientes.
- Si el dispositivo queda inactivo durante períodos prolongados, las aplicaciones inactivas pueden acceder a la red aproximadamente una vez al día.
-</p>
-
-<p>Para probar esta característica, conecte un dispositivo que esté ejecutando la versión preliminar de Android M a su equipo de desarrollo y llame a los siguientes comandos:
-
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell am set-idle &lt;packageName&gt; true
-$ adb shell am set-idle &lt;packageName&gt; false
-$ adb shell am get-idle &lt;packageName&gt;
-</pre>
-
-<p class="note"><strong>Nota:</strong> La próxima versión de
-<a href="https://developers.google.com/cloud-messaging/" class="external-link">
-Google Cloud Messaging</a> (GCM) le permite designar mensajes de prioridad alta.
- Si su aplicación recibe mensajes de GCM de prioridad alta, se le concede un breve acceso a la red, incluso cuando la aplicación está inactiva.
-
-</p>
-
-<p>Consulte la
-<a href="{@docRoot}preview/testing/guide.html#doze-standby">Guía de prueba</a> para obtener consejos sobre cómo probar el modo App Standby en sus aplicaciones.
- </p>
-
-<h2 id="behavior-adoptable-storage">Dispositivos de almacenamiento adoptables</h2>
-<p>
-Con esta versión preliminar, los usuarios pueden <em>adoptar</em> dispositivos de almacenamiento externo, como tarjetas SD. Al adoptar un dispositivo de almacenamiento externo, el dispositivo se cifra y se formatea para que actúe como un elemento de almacenamiento interno.
- Esta característica les permite a los usuarios mover tanto las aplicaciones como los datos privados de esas aplicaciones entre dispositivos de almacenamiento.
- Al mover aplicaciones, el sistema respeta la preferencia 
-<a href="{@docRoot}guide/topics/manifest/manifest-element.html#install">{@code android:installLocation}</a>
-del manifiesto.
-</p>
-
-<p>Si su aplicación accede a las API o a los campos que se indican a continuación, tenga en cuenta que las rutas de archivo que devuelven se modificarán dinámicamente cuando la aplicación se mueva entre dispositivos de almacenamiento interno y externo. Al crear rutas de archivo, lo más recomendable es que siempre llame a estas API de forma dinámica. No use rutas de archivo codificadas de forma rígida ni continúe usando rutas de archivo completas que se hayan creado anteriormente.
-
-
-</p>
-
-<ul>
-<li>Métodos {@link android.content.Context}:
-    <ul>
-        <li>{@link android.content.Context#getFilesDir() getFilesDir()}</li>
-        <li>{@link android.content.Context#getCacheDir() getCacheDir()}</li>
-        <li>{@link android.content.Context#getCodeCacheDir() getCodeCacheDir()}</li>
-        <li>{@link android.content.Context#getDatabasePath(java.lang.String) getDatabasePath()}</li>
-        <li>{@link android.content.Context#getDir(java.lang.String,int) getDir()}</li>
-        <li>{@link android.content.Context#getNoBackupFilesDir() getNoBackupFilesDir()}</li>
-        <li>{@link android.content.Context#getFileStreamPath(java.lang.String) getFileStreamPath()}</li>
-        <li>{@link android.content.Context#getPackageCodePath() getPackageCodePath()}</li>
-        <li>{@link android.content.Context#getPackageResourcePath() getPackageResourcePath()}</li>
-    </ul>
-</li>
-<li>Campos {@link android.content.pm.ApplicationInfo}:
-    <ul>
-        <li>{@link android.content.pm.ApplicationInfo#dataDir dataDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#sourceDir sourceDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#nativeLibraryDir nativeLibraryDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#publicSourceDir publicSourceDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#splitSourceDirs splitSourceDirs}</li>
-        <li>{@link android.content.pm.ApplicationInfo#splitPublicSourceDirs splitPublicSourceDirs}</li>
-    </ul>
-</li>
-</ul>
-
-<p>Para depurar esta característica en la versión preliminar para desarrolladores, puede habilitar la opción de adoptar una unidad USB que esté conectada a un dispositivo Android mediante un cable USB On-The-Go (OTG) y para habilitarla puede ejecutar el siguiente comando:
-</p>
-
-<pre class="no-prettyprint">
-$ adb shell sm set-force-adoptable true
-</pre>
-
-<h2 id="behavior-apache-http-client">Eliminación del cliente HTTP de Apache</h2>
-<p>Esta versión preliminar elimina el soporte del cliente HTTP de Apache. Si su aplicación utiliza este cliente y tiene como destino Android 2.3 (API de nivel 9) o una versión posterior, use, en su lugar, la clase {@link java.net.HttpURLConnection}.
-
- Esta API es más eficaz porque reduce el uso de la red mediante compresión y almacenamiento de respuesta en caché transparentes, y minimiza el consumo de energía.
- Para continuar utilizando las API HTTP de Apache, primero debe declarar la siguiente dependencia en tiempo de compilación en su archivo {@code build.gradle}:
-
-</p>
-<pre>
-android {
-    useLibrary 'org.apache.http.legacy'
-}
-</pre>
-<p>Android está migrando de la biblioteca OpenSSL a 
-<a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a>
-. Si utiliza Android NDK en su aplicación, no vincule bibliotecas criptográficas que no forman parte de la API de NDK, como {@code libcrypto.so} y {@code libssl.so}.
- Estas bibliotecas no son API públicas y se pueden modificar o interrumpir sin aviso en todas las versiones y todos los dispositivos. Además, puede exponerse a vulnerabilidades de seguridad.
-
- En cambio, modifique su código nativo para llamar a las API de criptografía de Java a través de JNI o para vincular estáticamente una biblioteca criptográfica de su elección.
-
-</p>
-
-<h2 id="behavior-audiomanager-Changes">Cambios en AudioManager</h2>
-<p>Ya no se admitirán las funciones de ajustar el volumen de forma directa o silenciar secuencias específicas por medio de la clase {@link android.media.AudioManager}
-. El método {@link android.media.AudioManager#setStreamSolo(int,boolean)
-setStreamSolo()} es obsoleto, por lo que debe llamar al método
-{@code AudioManager.requestAudioFocus()} en su lugar. Del mismo modo, el método
-{@link android.media.AudioManager#setStreamMute(int,boolean) setStreamMute()} es obsoleto; en su lugar, llame al método{@code AudioManager.adjustStreamVolume()} y pase los valores de dirección {@code ADJUST_MUTE} o {@code ADJUST_UNMUTE}.
-
-</p>
-
-<h2 id="behavior-test-selection">Selección de texto</h2>
-
-<img src="{@docRoot}preview/images/text-selection.gif" style="float:right; margin:0 0 20px 30px" width="360" height="640" />
-
-<p>Ahora, cuando los usuarios seleccionen texto en su aplicación, usted puede mostrar acciones de selección de texto, como
-<em>cortar</em>, <em>copiar</em> y <em>pegar</em> en una
-<a href="http://www.google.com/design/spec/patterns/selection.html#selection-text-selection" class="external-link">barra de herramientas flotante</a>. La implementación de la interacción del usuario es similar a la de la barra de acciones contextuales, como se describe en la sección
-<a href="{@docRoot}guide/topics/ui/menus.html#CABforViews">
-Habilitación del modo de acción contextual para vistas individuales</a>.
-</p>
-
-<p>Si desea implementar una barra de herramientas flotante para selección de texto, realice los siguientes cambios en sus aplicaciones existentes:
-</p>
-<ol>
-<li>En su objeto {@link android.view.View} o {@link android.app.Activity}, cambie sus llamados
-{@link android.view.ActionMode} de
-{@code startActionMode(Callback)} a {@code startActionMode(Callback, ActionMode.TYPE_FLOATING)}.</li>
-<li>Tome su implementación existente de {@code ActionMode.Callback} y, en su lugar, haga que sea extendida
-{@code ActionMode.Callback2}.</li>
-<li>Invalide el método {@code Callback2.onGetContentRect()} para proporcionar las coordenadas del objeto {@link android.graphics.Rect} de contenido (como un rectángulo de selección de texto) en la vista.
-</li>
-<li>Si el posicionamiento del rectángulo ya no es válido y este es el único elemento por invalidar, llame al método {@code ActionMode.invalidateContentRect()}.
-</li>
-</ol>
-
-<p>Si utiliza la biblioteca <a href="{@docRoot}tools/support-library/index.html">
-Android Support Library</a> versión 22.2, tenga en cuenta que las barras de herramientas flotantes no son compatibles con versiones anteriores y AppCompat toma el control de los objetos {@link android.view.ActionMode} de forma predeterminada.
-
- Esto impide que se muestren las barras de herramientas flotantes. Para permitir la compatibilidad de
-{@link android.view.ActionMode} en 
-{@link android.support.v7.app.AppCompatActivity}, llame a
-{@code android.support.v7.app.AppCompatActivity.getDelegate()}, luego llame a
-{@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()} en el objeto
-{@link android.support.v7.app.AppCompatDelegate} devuelto y configure el parámetro de entrada como {@code false}.
- Esta llamada devuelve el control de los objetos {@link android.view.ActionMode} al marco de trabajo.
- En los dispositivos que ejecutan la versión preliminar de Android M, eso permite que el marco de trabajo admita los modos de barras de herramientas flotantes o
-{@link android.support.v7.app.ActionBar}, mientras que en los dispositivos anteriores a la versión preliminar de Android M solo se admiten los modos {@link android.support.v7.app.ActionBar}.
-</p>
-
-<h2 id="behavior-keystore">Cambios en Android Keystore</h2>
-<p>Con esta versión preliminar, el
-<a href="{@docRoot}training/articles/keystore.html">proveedor de Android Keystore</a> ya no admite DSA.
- Aún se admite ECDSA.</p>
-
-<p>Las claves que no requieren cifrado de datos estáticos ya no se eliminarán cuando se restablezca o deshabilite la pantalla de bloqueo seguro (por ejemplo, cuando lo haga el usuario o el administrador del dispositivo).
- Las claves que requieren el cifrado de datos estáticos se eliminarán durante estos eventos.
-</p>
-
-<h2 id="behavior-network">Cambios en las funciones de red y Wi-Fi</h2>
-
-<p>Esta versión preliminar introduce en las API de redes y Wi-Fi los siguientes cambios en los comportamientos.</p>
-<ul>
-<li>Ahora sus aplicaciones pueden cambiar el estado de los objetos {@link android.net.wifi.WifiConfiguration} solo si usted creó estos objetos.
- Usted no puede modificar ni eliminar objetos
-{@link android.net.wifi.WifiConfiguration} creados por el usuario o por otras aplicaciones.
-</li>
-<li>
-Anteriormente, si una aplicación forzaba al dispositivo a conectarse a una red Wi-Fi específica utilizando
-{@link android.net.wifi.WifiManager#enableNetwork(int,boolean) enableNetwork()} con la configuración
-{@code disableAllOthers=true}, el dispositivo se desconectaba de otras redes, como los datos móviles.
- En esta versión preliminar, el dispositivo ya no se desconectará de otras redes como estas. Si {@code targetSdkVersion} de su aplicación es {@code “20”} o inferior, se anclará a la red Wi-Fi seleccionada.
-
- Si {@code targetSdkVersion} de su aplicación es {@code “21”} o posterior, use las API de redes múltiples (como
-{@link android.net.Network#openConnection(java.net.URL) openConnection()},
-{@link android.net.Network#bindSocket(java.net.Socket) bindSocket()} y el nuevo método
-{@code ConnectivityManager.bindProcessToNetwork()}) para garantizar que el tráfico de su red se envíe a la red seleccionada.
-
-</li>
-</ul>
-
-<h2 id="behavior-camera">Cambios en el servicio de cámara</h2>
-<p>En esta versión preliminar, el modelo para acceder a los recursos compartidos en el servicio de cámara se cambió del modelo de acceso anterior “por orden de llegada” a un modelo de acceso en el que se favorecen los procesos de prioridad alta.
-
-  Los cambios en el comportamiento del servicio incluyen los siguientes:</p>
-<ul>
-<li>El acceso a los recursos del subsistema de la cámara, lo que incluye abrir y configurar un dispositivo de cámara, se concede según la “prioridad” del proceso de la aplicación cliente.
- Por lo general, los procesos de la aplicación con actividades en primer plano o visibles para el usuario, reciben una prioridad más alta, lo que hace que el uso y la adquisición de recursos de la cámara sean más dependientes.
-
-</li>
-<li>Los clientes con cámara activa para aplicaciones de menor prioridad pueden ser “expulsados” cuando una aplicación de mayor prioridad intenta utilizar la cámara.
-  En la API {@link android.hardware.Camera} obsoleta, esto hace que se llame al método
-{@link android.hardware.Camera.ErrorCallback#onError(int,android.hardware.Camera) onError()} para el cliente expulsado.
-
- En la API {@link android.hardware.camera2 Camera2}, esto hace que se llame al método
-{@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected(android.hardware.camera2.CameraDevice) onDisconnected()}
-para el cliente expulsado.</li>
-<li>En los dispositivos con hardware de cámara correcto, distintos procesos de la aplicación pueden abrir y utilizar de forma independiente dispositivos de cámara separados al mismo tiempo.
- Sin embargo, ahora el servicio de cámara detecta y no permite los casos de uso de procesos múltiples, donde el acceso simultáneo genera una degradación considerable del rendimiento o de las capacidades de cualquiera de los dispositivos de cámara abiertos.
-
- Este cambio puede generar “expulsiones” de clientes de menor prioridad, incluso cuando ninguna otra aplicación esté intentando acceder directamente al mismo dispositivo de cámara.
-
-
-</li>
-<li>
-Cambiar el usuario actual provoca que se expulsen los clientes con cámara activa en las aplicaciones que pertenecen a la cuenta de usuario anterior.
-  El acceso a la cámara se limita a perfiles de usuario que pertenecen al usuario actual del dispositivo. En la práctica, esto significa que una cuenta de “invitado”, por ejemplo, no podrá abandonar los procesos en ejecución que utilicen el subsistema de la cámara cuando el usuario haya cambiado a otra cuenta.
-
-
-</li>
-</ul>
-
-<h2 id="behavior-art-runtime">Tiempo de ejecución de ART</h2>
-<p>El tiempo de ejecución de ART ahora implementa correctamente reglas de acceso para el método
-{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()}. Este cambio soluciona el problema que ocurría con Dalvik, que comprobaba las reglas de acceso incorrectamente en las versiones anteriores. Si su aplicación utiliza el método
-{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} y usted desea invalidar comprobaciones de acceso, llame al método
-{@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()} con el parámetro de entrada configurado en {@code true}.
-
-
-
- Si su aplicación utiliza la
-<a href="{@docRoot}tools/support-library/features.html#v7-appcompat">biblioteca AppCompat versión 7</a> o la
-<a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">biblioteca RecyclerView versión 7</a>, debe actualizar su aplicación para utilizar las versiones más recientes de estas bibliotecas.
- De lo contrario, asegúrese de que las clases personalizadas a las que se haga referencia desde el XML estén actualizadas, de manera que se pueda acceder a sus constructores de clases.
-</p>
-
-<p>Esta versión preliminar actualiza el comportamiento del vinculador dinámico. El vinculador dinámico ahora entiende la diferencia entre {@code soname} de una biblioteca y su ruta de acceso (<a href="https://code.google.com/p/android/issues/detail?id=6670" class="external-link">
-error público 6670</a>), y ahora se implementa la búsqueda por {@code soname}.
-
-
- Las aplicaciones que anteriormente funcionaban y que tenían entradas {@code DT_NEEDED} incorrectas (generalmente, rutas absolutas en el sistema de archivo del equipo de compilación) pueden generar error al cargarse.
-</p>
-
-<p>Ahora se implementa correctamente la marca {@code dlopen(3) RTLD_LOCAL}. Tenga en cuenta que
-{@code RTLD_LOCAL} es lo predeterminado, por lo que se verán afectadas las llamadas a {@code dlopen(3)} que no utilizaron explícitamente 
-{@code RTLD_LOCAL} (salvo que su aplicación haya usado {@code RTLD_GLOBAL} explícitamente). Con
-{@code RTLD_LOCAL}, los símbolos no estarán disponibles para las bibliotecas cargadas por llamadas posteriores a
-{@code dlopen(3)} (a diferencia de lo que sucede al hacer referencia mediante entradas {@code DT_NEEDED}).</p>
-</p>
-
-<h2 id="behavior-apk-validation">Validación de APK</h2>
-<p>Ahora la plataforma realiza validaciones más estrictas de APK. El APK se considera dañado si un archivo está declarado en el manifiesto, pero no está presente en el APK en sí.
- Si se elimina algún contenido, se debe volver a firmar el APK.
-</p>
-
-<h2 id="behavior-afw">Cambios en Android for Work</h2>
-<p>Esta versión preliminar incluye los siguientes cambios en los comportamientos para Android for Work:</p>
-<ul>
-<li><strong>Contactos de trabajo en contextos personales:</strong> Ahora, el registro de llamadas de Google Dialer muestra los contactos de trabajo cuando el usuario ve las llamadas anteriores. Si se configura {@code DevicePolicyManager.setCrossProfileCallerIdDisabled()} en {@code true}, se ocultan los contactos de perfiles de trabajo en el registro de llamadas de Google Dialer.
-
-
- Los contactos de trabajo se pueden mostrar junto con los contactos personales en los dispositivos a través de Bluetooth solo si usted configura {@code DevicePolicyManager.setBluetoothContactSharingDisabled()} en {@code false}.
-
- De forma predeterminada, se configura en {@code true}.
-
-</li>
-<li><strong>Eliminación de configuraciones de Wi-Fi:</strong> Las configuraciones de Wi-Fi agregadas por un propietario de perfil (por ejemplo, al llamar al método
-{@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration)
-addNetwork()}) ahora se borran si se elimina ese perfil de trabajo.
-</li>
-<li><strong>Bloqueo de configuraciones de Wi-Fi:</strong> El usuario ya no puede modificar ni eliminar las configuraciones de Wi-Fi creadas por un propietario activo del dispositivo.
- El usuario aún puede crear y modificar sus propias configuraciones de Wi-Fi, siempre que no se haya definido la constante {@link android.os.UserManager} 
-{@link android.os.UserManager#DISALLOW_CONFIG_WIFI} para ese usuario.
-</li>
-<li><strong>Descarga de Work Policy Controller mediante la incorporación de una cuenta de Google:</strong> Cuando una cuenta de Google que requiere gestión a través de una aplicación de Work Policy Controller (WPC) se agrega a un dispositivo fuera de un contexto administrado, el flujo de incorporación de la cuenta ahora le pide al usuario que instale el WPC apropiado. Este comportamiento también se aplica a las cuentas agregadas mediante
-<strong>Settings &gt; Accounts</strong> en el asistente para instalación inicial del dispositivo.
-
-
-</li>
-<li><strong>Cambios en comportamientos específicos de la API DevicePolicyManager:</strong>
-Llamar al método {@link android.app.admin.DevicePolicyManager#setCameraDisabled(android.content.ComponentName,boolean) setCameraDisabled()}
-afecta la cámara solo del usuario que lo llama; llamarlo desde el perfil administrado no afecta las aplicaciones de cámara que se ejecutan en el usuario principal.
- Asimismo, el método
-{@link android.app.admin.DevicePolicyManager#setKeyguardDisabledFeatures(android.content.ComponentName,int) setKeyguardDisabledFeatures()}
-ahora se encuentra disponible para propietarios de perfiles, además de propietarios de dispositivos. Un propietario de perfil puede configurar las siguientes restricciones de protección de seguridad:
-
-<ul>
-<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_TRUST_AGENTS} y
-    {@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_FINGERPRINT}, que afectan las configuraciones de protección de seguridad para el usuario primario del perfil.
-</li>
-<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS}, que solo afecta las notificaciones generadas por aplicaciones en el perfil administrado.
-</li>
-</ul>
-</li>
-</ul>
diff --git a/docs/html-intl/intl/es/preview/download.jd b/docs/html-intl/intl/es/preview/download.jd
deleted file mode 100644
index d77242c..0000000
--- a/docs/html-intl/intl/es/preview/download.jd
+++ /dev/null
@@ -1,362 +0,0 @@
-page.title=Descargas
-page.image=images/cards/card-download_16-9_2x.png
-
-@jd:body
-
-<div style="position:relative; min-height:600px">
-
-  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
-    <p class="sdk-terms-intro">Antes de descargar e instalar los componentes del SDK de la versión preliminar de Android, debe aceptar los términos y las condiciones que se describen a continuación.
-</p>
-
-    <h2 class="norule">Términos y condiciones</h2>
-
-    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-Este es el Contrato de licencia de la versión preliminar del SDK de Android (el “Contrato de licencia”). 1.
-
- Introducción 1.1 Se le otorga la licencia de la versión preliminar del SDK de Android (denominada “Versión preliminar” en este Contrato de licencia y que incluye específicamente los archivos de sistema de Android, las API agrupadas y los archivos de biblioteca de la Versión preliminar, si se encuentran disponibles), sujeto a los términos del Contrato de licencia.
-
- El Contrato de licencia establece una relación legal vinculante entre usted y Google en relación con el uso que usted realice de la Versión preliminar. 1.2 “Android” hace referencia al conjunto de soluciones Android para dispositivos, según se encuentre disponible en el Proyecto de código abierto de Android (Android Open Source Project), que se encuentra en la siguiente URL: http://source.android.com/, y según se actualiza periódicamente. 1.3 “Google” hace referencia a Google Inc., una corporación de Delaware, con sede principal en 1600 Amphitheatre Parkway, Mountain View, CA 94043, Estados Unidos. 2.
-
-
-
-
-
- Aceptación del Contrato de licencia 2.1 Para poder utilizar la Versión preliminar, primero debe aceptar el Contrato de licencia.
-
- Si no acepta el Contrato de licencia, no podrá utilizar la Versión preliminar. 2.2 Al hacer clic para aceptar o utilizar la Versión preliminar, por medio del presente, usted acepta los términos del Contrato de licencia. 2.3 Usted no puede utilizar la Versión preliminar ni aceptar el Contrato de licencia si tiene prohibido recibir la Versión preliminar en virtud de las leyes de los Estados Unidos o de otros países, lo que incluye el país donde es residente o desde el que utilizará la Versión preliminar. 2.4 Si usted utilizará la Versión preliminar de forma interna, dentro de su compañía u organización, usted acepta quedar sujeto al Contrato de licencia en representación de su empleador u otra entidad, y expresa y garantiza que tiene plena autoridad legal para vincular a su empleador o a dicha entidad al Contrato de licencia.
-
-
-
-
-
- Si no posee la autoridad exigida, no podrá aceptar el Contrato de licencia ni usar la Versión preliminar en representación de su empleador u otra entidad. 3.
-
- Licencia de la Versión preliminar de Google 3.1 Sujeto a los términos del Contrato de licencia, Google le otorga una licencia libre de regalías, no asignable, no exclusiva, no transferible a terceros, limitada y revocable para utilizar la Versión preliminar, de forma personal o interna dentro de su compañía u organización, únicamente para desarrollar aplicaciones para ejecutar en la plataforma de Android. 3.2 Usted acepta que Google u otros terceros poseen todos los derechos legales, títulos e intereses en relación con la Versión preliminar, incluidos los Derechos de propiedad intelectual que existan en la Versión preliminar.
-
-
-
- Los “Derechos de propiedad intelectual” hacen referencia a todos y cada uno de los derechos en virtud de las leyes de patentes, derechos de autor, secreto comercial y marca comercial, y todos los demás derechos de propiedad. Google se reserva todos los derechos que no se le otorguen expresamente. 3.3 No podrá utilizar la Versión preliminar para ningún otro propósito que no esté expresamente permitido en el Contrato de licencia.
-
- Excepto en la medida que lo exijan las licencias correspondientes de terceros, no podrá: (a) copiar (excepto con fines de copia de seguridad), modificar, adaptar, redistribuir, descompilar, utilizar técnicas de ingeniería inversa, desarmar ni crear trabajos derivados de la Versión preliminar ni de ninguna de sus partes; ni (b) cargar ninguna parte de la Versión preliminar en un teléfono móvil ni en ningún otro dispositivo de hardware (a excepción de una computadora personal), ni podrá combinar ninguna parte de la Versión preliminar con otro software, ni distribuir algún software o dispositivo que incorpore alguna parte de la Versión preliminar. 3.4 Usted acepta que no tomará medidas que pudieran provocar la fragmentación de Android, incluidas, entre otras, la distribución y la participación en la creación o la promoción de un kit de desarrollo de software derivado de la Versión preliminar. 3.5 El uso, la reproducción y la distribución de los componentes de la Versión preliminar con licencia de software de código abierto están regidos exclusivamente por los términos de la licencia de ese software de código abierto y no de este Contrato de licencia.
-
-
-
- Usted acepta mantener la licencia en buenas condiciones con respecto a dichas licencias de software de código abierto en virtud de todos los derechos otorgados y acepta abstenerse de realizar alguna acción que pueda poner fin, suspender o violar dichos derechos. 3.6 Usted acepta que la forma y la naturaleza de la Versión preliminar que proporciona Google pueden cambiar sin brindarle aviso previo y que las versiones futuras de la Versión preliminar pueden ser incompatibles con las aplicaciones desarrolladas en versiones anteriores de la Versión preliminar.
-
- Usted acepta que Google puede (de forma permanente o temporal) dejar de proporcionarles la Versión preliminar (o cualquiera de las características incluidas en ella) a usted o a los usuarios, generalmente, a criterio exclusivo de Google, sin brindarle aviso previo. 3.7 Ninguna declaración de este Contrato de licencia le otorga el derecho de utilizar alguno de los nombres comerciales, las marcas comerciales, las marcas de servicio, los logotipos, los nombres de dominio ni otras características distintivas de marca de Google. 3.8 Usted acepta que no eliminará, ocultará ni alterará ninguno de los avisos de derechos de propiedad (lo que incluye los avisos de marca comercial y derechos de autor) que pudieran estar anexados o incluidos en la Versión preliminar. 4.
-
-
-
-
-
- Uso que usted realiza de la Versión preliminar 4.1 Google acepta que ninguna declaración del Contrato de licencia le concede a Google derecho, título o interés alguno de su parte (o de parte de sus licenciantes), en virtud del Contrato de licencia, con respecto a las aplicaciones de software que usted desarrolle mediante el uso de la Versión preliminar, lo que incluye los derechos de propiedad intelectual que conlleven esas aplicaciones. 4.2 Usted acepta utilizar la Versión preliminar y escribir aplicaciones únicamente conforme a lo que permite (a) este Contrato de licencia y (b) las leyes, regulaciones, o prácticas y pautas generalmente aceptadas pertinentes en las jurisdicciones relevantes (lo que incluye las leyes sobre la exportación de datos o software hacia los Estados Unidos u otros países relevantes y desde ellos). 4.3 Usted acepta que si utiliza la Versión preliminar para desarrollar aplicaciones, protegerá la privacidad y los derechos legales de los usuarios.
-
-
-
-
-
- Si los usuarios le proporcionan sus nombres de usuario, contraseñas u otra información de inicio de sesión o información personal, debe comunicarles a los usuarios que la información se encontrará disponible para su aplicación, y debe proporcionarles a dichos usuarios un aviso de privacidad con protección y validez legal. Si su aplicación almacena información personal o confidencial proporcionada por los usuarios, lo debe hacer de forma segura. Si los usuarios le proporcionan información sobre la cuenta de Google, su aplicación solo puede usar esa información para acceder a la cuenta de Google del usuario siempre que este le haya otorgado permiso para hacerlo y con los fines para los que se lo haya otorgado. 4.4 Usted acepta que no participará en ninguna actividad con la Versión preliminar (lo que incluye el desarrollo o la distribución de una aplicación) que interfiera, interrumpa, dañe o acceda sin autorización a servidores, redes u otras propiedades o servicios de Google o de algún tercero. 4.5 Usted acepta que es el único responsable (y que Google no asume responsabilidades hacia usted ni terceros) de los datos, el contenido o los recursos que usted cree, transmita o muestre a través de Android o las aplicaciones para Android, y de las consecuencias de sus acciones (lo que incluye la pérdida o el daño que Google pudiera sufrir) al hacerlo. 4.6 Usted acepta que es el único responsable (y que Google no asume responsabilidades hacia usted ni terceros) de cualquier incumplimiento de sus obligaciones en virtud de este Contrato de licencia, los contratos aplicables de terceros o los términos del servicio, o cualquier ley o regulación pertinentes, y de las consecuencias (lo que incluye las pérdidas o los daños que pudieran sufrir Google o algún tercero) de dichos incumplimientos. 4.7 La Versión preliminar se encuentra en desarrollo, y sus pruebas y comentarios son una parte importante del proceso de desarrollo.
-
-
-
-
-
-
-
- Al utilizar la Versión preliminar, usted reconoce que la implementación de algunas características aún se encuentra en desarrollo y que no debe confiar en que la Versión preliminar contará con todas las funcionalidades de una versión estable. Usted acepta no distribuir públicamente ni enviar ninguna aplicación que utilice esta Versión preliminar, ya que esta Versión preliminar ya no se admitirá tras el lanzamiento del SDK oficial de Android. 5.
-
- Sus credenciales de desarrollador 5.1 Usted acepta que es responsable de mantener la confidencialidad de toda credencial de desarrollador que Google pudiera otorgarle o que usted pudiera escoger, y que será el único responsable de todas las aplicaciones que se desarrollen con sus credenciales de desarrollador. 6.
-
-
-
- Privacidad e información 6.1 A fin de poder innovar y mejorar de forma continua la Versión preliminar, Google podría recopilar ciertas estadísticas de uso del software, lo que incluye, entre otras características, un identificador único, la dirección IP asociada, el número de versión del software e información sobre las herramientas o los servicios de la Versión preliminar que se estén utilizando y la manera en que se estén utilizando.
-
- Antes de que se recopile esta información, la Versión preliminar se lo notificará y le solicitará su permiso. Si no otorga su permiso, no se recopilará la información. 6.2 Los datos recopilados se analizan en el agregado para mejorar la Versión preliminar y se conservan de acuerdo con la política de privacidad de Google que se encuentra en el sitio http://www.google.com/policies/privacy/. 7.
-
-
-
- Aplicaciones de terceros 7.1 Si utiliza la Versión preliminar para ejecutar aplicaciones desarrolladas por un tercero o que accedan a datos, contenido o recursos proporcionados por un tercero, usted acepta que Google no es responsable de esas aplicaciones, datos, contenido ni recursos.
-
- Usted comprende que todos los datos, contenidos o recursos a los que podría acceder a través de esas aplicaciones de terceros son exclusiva responsabilidad de la persona que los origina y que Google no es responsable de las pérdidas ni los daños que usted pudiera experimentar como consecuencia del uso o acceso de cualquiera de esas aplicaciones, datos, contenido o recursos de terceros. 7.2 Usted debe saber que los datos, el contenido y los recursos que se le presentan a través de esa aplicación de un tercero pueden estar protegidos por derechos de propiedad intelectual que les pertenecen a sus proveedores (o a otras personas o compañías en representación de estos).
-
- No puede modificar, alquilar, arrendar, prestar, vender, distribuir ni crear obras derivadas basadas en esos datos, contenidos o recursos (en su totalidad o en parte), a menos que los propietarios pertinentes le hayan otorgado permiso específicamente para hacerlo. 7.3 Usted acepta que el uso que haga de las aplicaciones, los datos, el contenido o los recursos de ese tercero puede estar sujeto a términos independientes entre usted y el tercero correspondiente. 8.
-
-
-
- Uso de las API de Google 8.1 API de Google 8.1.1 Si utiliza alguna API para recuperar datos de Google, usted acepta que los datos pueden estar protegidos por derechos de propiedad intelectual que le pertenecen a Google o a las partes que proporcionan esos datos (o a otras personas o empresas en representación de estos).
-
-
-
- El uso que realice de cualquiera de esas API puede estar sujeto a términos de servicio adicionales. No puede modificar, alquilar, arrendar, prestar, vender, distribuir ni crear obras derivadas basadas en esos datos (en su totalidad o en parte), a menos que los términos de servicio correspondientes lo permitan. 8.1.2 Si utiliza alguna API para recuperar datos de un usuario de Google, usted acepta y acuerda que solo podrá recuperar datos con el consentimiento explícito del usuario y solo con los fines limitados para los que el usuario le haya otorgado permiso para hacerlo. 9.
-
-
-
- Finalización del Contrato de licencia 9.1 Este Contrato de licencia tendrá vigencia hasta que lo revoquen usted o Google, como se indica a continuación. 9.2 Si desea rescindir el Contrato de licencia, puede hacerlo al interrumpir el uso que realiza de la Versión preliminar y de las credenciales de desarrollador pertinentes. 9.3 Google puede, en cualquier momento, rescindir el Contrato de licencia, con causa o sin ella, después de notificárselo a usted. 9.4 El Contrato de licencia finalizará automáticamente, sin previo aviso ni acción alguna, tras la primera de las siguientes situaciones: (A) cuando Google deje de proporcionar la Versión preliminar o ciertas partes de esta a los usuarios en el país donde usted reside o desde el que utiliza el servicio; y (B) cuando Google emita una versión final del SDK de Android. 9.5 Si el Contrato de licencia se rescinde, se revocará la licencia que usted recibió en virtud de dicho contrato; usted deberá suspender inmediatamente todo uso de la Versión preliminar y las disposiciones de los párrafos 10, 11, 12 y 14 seguirán vigentes indefinidamente. 10.
-
-
-
-
-
-
-
-
-
-
-
-
-
- EXENCIONES DE RESPONSABILIDAD 10.1 USTED COMPRENDE Y ACEPTA EXPRESAMENTE QUE EL USO QUE REALICE DE LA VERSIÓN PRELIMINAR ES BAJO SU PROPIO RIESGO Y QUE LA VERSIÓN PRELIMINAR SE PROPORCIONA “EN LAS CONDICIONES EN LAS QUE SE ENCUENTRA” Y “SUJETA A DISPONIBILIDAD” SIN GARANTÍAS DE NINGÚN TIPO POR PARTE DE GOOGLE. 10.2 EL USO QUE USTED REALICE DE LA VERSIÓN PRELIMINAR Y DE TODO MATERIAL DESCARGADO U OBTENIDO DE ALGUNA OTRA MANERA MEDIANTE EL USO DE LA VERSIÓN PRELIMINAR ES A SU ENTERO RIESGO Y DISCRECIÓN, Y USTED ES EL ÚNICO RESPONSABLE DE CUALQUIER DAÑO QUE PUDIERA SUFRIR SU SISTEMA INFORMÁTICO U OTRO DISPOSITIVO, O DE LA PÉRDIDA DE DATOS COMO CONSECUENCIA DE DICHO USO.
-
-
-
- SIN PERJUICIO DE LO MENCIONADO ANTERIORMENTE, USTED COMPRENDE QUE LA VERSIÓN PRELIMINAR NO ES UNA VERSIÓN ESTABLE, Y PUEDE CONTENER ERRORES, DEFECTOS Y VULNERABILIDADES DE SEGURIDAD QUE PUEDEN PROVOCAR DAÑOS SIGNIFICATIVOS, LO QUE INCLUYE LA PÉRDIDA COMPLETA E IRRECUPERABLE DEL USO DE SU SISTEMA INFORMÁTICO U OTRO DISPOSITIVO. 10.3 GOOGLE TAMBIÉN RECHAZA TODAS LAS GARANTÍAS Y CONDICIONES DE CUALQUIER TIPO, EXPRESAS O IMPLÍCITAS, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS Y CONDICIONES DE COMERCIABILIDAD, IDONEIDAD PARA UN FIN DETERMINADO Y NO VIOLACIÓN. 11.
-
-
-
- LIMITACIÓN DE RESPONSABILIDADES 11.1 USTED COMPRENDE Y ACEPTA EXPRESAMENTE QUE GOOGLE, SUS SUBSIDIARIAS Y FILIALES, Y SUS LICENCIANTES NO SERÁN RESPONSABLES ANTE USTED, EN VIRTUD DE NINGUNA TEORÍA DE RESPONSABILIDAD, POR NINGÚN DAÑO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, RESULTANTE NI PUNITIVO EN EL QUE PODRÍA HABER INCURRIDO, LO QUE INCLUYE LA PÉRDIDA DE DATOS, YA SEA QUE SE LE HAYA NOTIFICADO O NO A GOOGLE O A SUS REPRESENTANTES, O SOBRE CUYA POSIBILIDAD ESTOS DEBERÍAN HABER SABIDO. 12.
-
-
-
- Indemnización 12.1 Hasta el grado máximo que permita la ley, usted acepta defender, indemnizar y eximir de responsabilidades a Google, sus filiales y sus respectivos directores, funcionarios, empleados y agentes, de todo tipo de reclamo, acción legal y proceso judicial, así como de las pérdidas, responsabilidades, daños, costos y gastos (incluidos los honorarios razonables de abogados) que surjan o se acumulen (a) del uso que usted realiza de la Versión preliminar, (b) de cualquier aplicación que desarrolle en la Versión preliminar que infrinja algún derecho de propiedad intelectual de cualquier persona, o que difame a cualquier persona o viole sus derechos de publicidad o privacidad, y (c) del incumplimiento por su parte del Contrato de licencia. 13.
-
-
-
- Cambios en el Contrato de licencia 13.1 Google puede realizar cambios en el Contrato de licencia a medida que distribuye nuevas versiones de la Versión preliminar.
-
- Cuando se realicen esos cambios, Google emitirá una nueva versión del Contrato de licencia, que estará disponible en el sitio web donde se ponga a la venta la Versión preliminar. 14.
-
- Términos legales generales 14.1 El Contrato de licencia constituye el contrato legal integral entre usted y Google, y rige el uso que usted realice de la Versión preliminar (a excepción de los servicios que Google pueda proporcionarle en virtud de un contrato por escrito independiente), y reemplaza totalmente cualquier contrato anterior entre usted y Google en relación con la Versión preliminar. 14.2 Usted acepta que, si Google no ejerce ni impone un derecho o recurso legal especificados en el Contrato de licencia (o sobre el que Google tenga beneficios conforme a cualquier ley aplicable), esto no se considerará una renuncia formal a los derechos por parte de Google y Google aún seguirá recibiendo los beneficios de esos derechos o recursos legales. 14.3 Si algún tribunal judicial con jurisdicción para decidir sobre este asunto determina que alguna de las disposiciones de este Contrato de licencia no es válida, se eliminará esa disposición del Contrato de licencia sin que eso afecte la validez del resto del contrato.
-
-
-
-
-
- Las disposiciones restantes del Contrato de licencia continuarán siendo válidas y aplicables. 14.4 Usted reconoce y acepta que cada miembro del grupo de compañías de las que Google es la compañía central serán terceros beneficiarios del Contrato de licencia, y que esas otras empresas tendrán el derecho de imponer directamente cualquier disposición y ampararse en las disposiciones de este Contrato de licencia que les confieran un beneficio (o que confieran derechos a su favor).
-
- Además de esto, ninguna otra persona o compañía serán terceros beneficiarios del Contrato de licencia. 14.5 RESTRICCIONES DE EXPORTACIÓN.
-
- LA VERSIÓN PRELIMINAR ESTÁ SUJETA A LAS LEYES Y REGULACIONES DE EXPORTACIÓN DE LOS ESTADOS UNIDOS. DEBE CUMPLIR CON TODAS LAS LEYES Y REGULACIONES DE EXPORTACIÓN NACIONALES E INTERNACIONALES QUE SE APLIQUEN A LA VERSIÓN PRELIMINAR. ESTAS LEYES INCLUYEN RESTRICCIONES EN RELACIÓN CON LOS DESTINOS, USUARIOS FINALES Y USO FINAL. 14.6 Usted no puede asignar ni transferir el Contrato de licencia sin la aprobación previa por escrito de Google y todo intento de asignación sin dicha aprobación no tendrá validez.
-
- No podrá delegar sus responsabilidades u obligaciones otorgados en virtud del Contrato de licencia sin la aprobación previa por escrito de Google. 14.7 El Contrato de licencia y su relación con Google conforme al Contrato de licencia se regirán por las leyes del estado de California, independientemente de los principios de conflictos entre leyes.
-
- Usted y Google aceptan presentarse ante la jurisdicción exclusiva de los tribunales del condado de Santa Clara, California, para resolver cualquier asunto legal que pudiera surgir del Contrato de licencia. Sin perjuicio de esto, usted acepta que Google aún podrá aplicar reparaciones conforme a mandato judicial (o a un tipo equivalente de desagravio legal) en cualquier jurisdicción.
-  </div><!-- sdk terms -->
-
-
-
-    <div id="sdk-terms-form">
-      <p>
-        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-        <label id="agreeLabel" for="agree">He leído y acepto los términos y las condiciones anteriores.</label>
-      </p>
-      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-    </div>
-
-
-  </div><!-- end TOS -->
-
-
-  <div id="landing">
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Contenido del documento</h2>
-      <ol>
-        <li><a href="#sdk">Android 6.0 SDK</a></li>
-        <li><a href="#docs">Documentación para desarrolladores</a></li>
-        <li><a href="#images">Imágenes del sistema de hardware</a></li>
-      </ol>
-
-      <h2>Legacy downloads</h2>
-        <ol>
-           <li><a href="{@docRoot}preview/download_mp1.html">Developer Preview 1</a></li>
-		   <li><a href="{@docRoot}preview/download_mp2.html">Developer Preview 2</a></li>
-
-        </ol>
-  </div>
-</div>
-
-
-<p>
-  El SDK de la versión preliminar de Android M incluye herramientas de desarrollo, archivos de sistema de Android y archivos de biblioteca que lo ayudarán a probar su aplicación y las nuevas API que se incluirán en la próxima versión de la plataforma.
- En este documento, se describe la manera de obtener los componentes que se pueden descargar de la versión preliminar para probar su aplicación.
-
-</p>
-
-
-<h2 id="sdk">Android 6.0 SDK</h2>
-
-<p>
-  El SDK de la versión preliminar se encuentra disponible para descargarlo a través del <a href="{@docRoot}tools/help/sdk-manager.html">Administrador de SDK de Android</a>. Para obtener más información sobre cómo descargar y configurar el SDK de la versión preliminar, consulte la sección <a href="{@docRoot}preview/setup-sdk.html#downloadSdk">Configurar el SDK de la versión preliminar</a>.
-
-</p>
-
-
-<h2 id="docs">Documentación para desarrolladores</h2>
-
-<p>
-  El paquete de descarga de documentación para desarrolladores brinda información detallada de referencia sobre las API y un informe de diferencias de las API para la versión preliminar.
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Description</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="docs-dl">
-    <td>Android M Preview 3<br>Developer Docs</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >m-preview-3-developer-docs.zip</a><br>
-      MD5: d99b14b0c06d31c8dfecb25072654ca3<br>
-      SHA-1: 9cefeeda07676130da606a1796e1c00fffc667c1
-    </td>
-  </tr>
-</table>
-
-
-<h2 id="images">Imágenes del sistema de hardware</h2>
-
-<p>
-  Estas imágenes del sistema le permiten instalar una versión preliminar de la plataforma en un dispositivo físico para realizar pruebas.
- Al configurar un dispositivo con una de estas imágenes, puede instalar y probar su aplicación para ver cómo funciona en la próxima versión de la plataforma.
- El proceso de instalación de una imagen del sistema en un dispositivo <em>elimina todos los datos del dispositivo</em>, por lo que debe hacer una copia de seguridad de los datos antes de instalar una imagen del sistema.
-
-
-</p>
-
-<p class="warning">
-  <b>Advertencia:</b> Las siguientes imágenes del sistema de Android son versiones preliminares y están sujetas a cambios. El uso que haga de estas imágenes del sistema se rige por el Contrato de licencia de la versión preliminar del SDK de Android.
- Las imágenes del sistema de la versión preliminar de Android no son versiones estables y pueden contener errores y defectos que pueden generar daños en sus sistemas informáticos, dispositivos y datos.
-
- Las imágenes del sistema de la versión preliminar de Android no se someten a las mismas pruebas que el OS de fábrica y podrían hacer que el teléfono, y las aplicaciones y los servicios instalados dejen de funcionar.
-
-
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Device</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="hammerhead">
-    <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >hammerhead-MPA44I-preview-2ebbc049.tgz</a><br>
-      MD5: 91a924fb0c9f8e716e3b4c9954fd0dbb<br>
-      SHA-1: 2ebbc049b68c4da8baeee3e42bb94d7a965ba4a3
-    </td>
-  </tr>
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-MPA44I-preview-62b9c486.tgz</a><br>
-      MD5: ac6e58da86125073d9c395257fd42664<br>
-      SHA-1: 62b9c486fd7a5020e228d53ca5acd5c1857e48ff
-    </td>
-  </tr>
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-MPA44I-preview-5c30a6e2.tgz</a><br>
-      MD5: 7f83768757913d3fea945a661020d185<br>
-      SHA-1: 5c30a6e2acd11a81f4105b12d23ff654f534f699
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-MPA44I-preview-2860040a.tgz</a><br>
-      MD5: 438da8d37da9e341a69cfb16a4001ac5<br>
-      SHA-1: 2860040a326582f1ff5f702bf9a1ef002717fc98
-    </td>
-  </tr>
-
-</table>
-
-<h3 id="install-image">Instalar una imagen en un dispositivo</h3>
-
-<p>
-  Si desea utilizar una imagen del dispositivo para realizar pruebas, debe instalarla en un dispositivo compatible. Siga las instrucciones que se ofrecen a continuación para instalar una imagen del sistema:
-
-</p>
-
-<ol>
-  <li>Descargue y descomprima uno de los paquetes de imágenes del sistema que se enumeran aquí.</li>
-  <li>Realice una copia de seguridad de los datos del dispositivo que desee conservar.</li>
-  <li>Siga las instrucciones que se describen en el sitio <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
- para actualizar la imagen en su dispositivo.
-</li>
-</ol>
-
-<p class="note">
-  <strong>Nota:</strong> Cuando haya actualizado un dispositivo de desarrollo con la imagen del sistema de la versión preliminar, se actualizará automáticamente con la próxima versión preliminar a través de actualizaciones OTA.
-
-</p>
-
-<h3 id="revertDevice">Restablecer las especificaciones de fábrica en un dispositivo</h3>
-
-<p>
-  Si desea desinstalar la versión preliminar y restablecer las especificaciones de fábrica en un dispositivo, visite el sitio <a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a> y descargue la imagen con la que desea actualizar su dispositivo.
-
- Siga las instrucciones que se describen en esa página para actualizar la imagen en su dispositivo.
-
-</p>
-
-  </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
-  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
-  function onDownload(link) {
-
-    $("#downloadForRealz").html("Download " + $(link).text());
-    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
-    $("#tos").fadeIn('fast');
-    $("#landing").fadeOut('fast');
-
-    return true;
-  }
-
-
-  function onAgreeChecked() {
-    /* verify that the TOS is agreed */
-    if ($("input#agree").is(":checked")) {
-      /* reveal the download button */
-      $("a#downloadForRealz").removeClass('disabled');
-    } else {
-      $("a#downloadForRealz").addClass('disabled');
-    }
-  }
-
-  function onDownloadForRealz(link) {
-    if ($("input#agree").is(':checked')) {
-    /*
-      $("#tos").fadeOut('fast');
-      $("#landing").fadeIn('fast');
-    */
-
-      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
-
-    /*
-      location.hash = "";
-    */
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  $(window).hashchange( function(){
-    if (location.hash == "") {
-      location.reload();
-    }
-  });
-
-</script>
diff --git a/docs/html-intl/intl/es/preview/features/app-linking.jd b/docs/html-intl/intl/es/preview/features/app-linking.jd
deleted file mode 100644
index bd63559..0000000
--- a/docs/html-intl/intl/es/preview/features/app-linking.jd
+++ /dev/null
@@ -1,123 +0,0 @@
-page.title=Vínculos de la aplicación
-page.image=images/cards/card-app-linking_2x.png
-page.keywords=vínculo de la aplicación, vínculos profundos, intentos
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Contenido del documento</h2>
-      <ol>
-        <li><a href="#web-assoc">Declarar la asociación de un sitio web</a></li>
-        <li><a href="#verfy-links">Solicitar verificación del vínculo de la aplicación</a></li>
-        <li><a href="#user-manage">Gestionar las configuraciones del vínculo de la aplicación</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  El sistema Android Intent es un mecanismo flexible para permitir a las aplicaciones controlar contenido y solicitudes.
-  Es posible que múltiples aplicaciones declaren modelos URI coincidentes en sus filtros de intento. Cuando un usuario hace clic en un vínculo web que no tiene un controlador de inicio predeterminado, la plataforma puede mostrar un diálogo para que el usuario seleccione una opción de una lista de aplicaciones que han declarado filtros de intento coincidentes.
-
-
-</p>
-
-<p>
-  Android M Developer Preview ofrece soporte para los vínculos de la aplicación, lo que mejora los controles de vínculos existentes al permitir a los desarrolladores de la aplicación asociar una aplicación con un dominio web propio.
- Cuando los desarrolladores crean esta asociación, la plataforma puede determinar automáticamente la aplicación predeterminada utilizada para controlar un vínculo web particular y omitir el paso de solicitarles esta información a los usuarios.
-
-
-</p>
-
-
-<h2 id="web-assoc">Declarar una asociación de sitio web</h2>
-
-<p>
-  Los propietarios de un sitio web deben declarar las asociaciones con las aplicaciones a fin de establecer el vínculo de una aplicación. El propietario del sitio declara la relación con una aplicación al alojar un archivo JSON, denominado {@code statements.json}, en la ubicación conocida del domino:
-
-
-</p>
-
-<pre>http://&lt;domain&gt;:&lt;optional port&gt;/.well-known/statements.json</pre>
-
-<p class="note">
-  <strong>Nota:</strong>
-  Durante el período de M Developer Preview, el archivo JSON se verifica vía el protocolo http. Para la versión oficial de la plataforma, el archivo se verifica mediante el protocolo https cifrado.
-
-</p>
-
-<p>
-  Este archivo JSON indica la aplicación Android que se debe utilizar como el controlador predeterminado para las URL de este dominio.
- Identifica la aplicación según estos campos:
-</p>
-
-<ul>
-  <li>{@code package_name}: El nombre de paquete declarado en el manifiesto de la aplicación.</li>
-
-  <li>{@code sha256_cert_fingerprints}: La huella dactilar SHA256 del certificado de firma de su aplicación.
-    Puede usar la herramienta Keytool de Java para generar la huella dactilar mediante el siguiente comando:
-    <pre>keytool -list -v -keystore my-release-key.keystore</pre>
-  </li>
-</ul>
-
-<p>
-  El siguiente listado de archivo muestra un ejemplo de los contenidos y del formato de un archivo
-{@code statements.json}:
-</p>
-
-<pre>
-[{
-  "relation": ["delegate_permission/common.handle_all_urls"],
-  "target": {
-    "namespace": "android_app",
-    "package_name": "<strong>&lt;package name&gt;</strong>",
-    "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
-  }
-}]
-</pre>
-
-
-<h2 id="verfy-links">Solicitar verificación del vínculo de la aplicación</h2>
-
-<p>
-  Una aplicación puede solicitar que la plataforma verifique automáticamente cualquier vínculo de aplicación definido por los nombres de host en los elementos de datos de sus filtros de intento, comparando con los archivos {@code statements.json} alojados en los respectivos dominios web.
-
- Para solicitar la verificación del vínculo de la aplicación, agregue un atributo {@code android:autoVerify} a cada filtro de intento deseado en el manifiesto, como se muestra en el siguiente fragmento de código de manifiesto:
-
-
-</p>
-
-<pre>
-&lt;activity ...&gt;
-    &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
-        &lt;action android:name="android.intent.action.VIEW" /&gt;
-        &lt;category android:name="android.intent.category.DEFAULT" /&gt;
-        &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
-        &lt;data android:scheme="http" android:host="www.android.com" /&gt;
-        &lt;data android:scheme="https" android:host="www.android.com" /&gt;
-    &lt;/intent-filter&gt;
-&lt;/activity&gt;
-</pre>
-
-<p>
-  Cuando el atributo {@code android:autoVerify} está presente en un manifiesto de aplicación, la plataforma intenta verificar los vínculos de la aplicación al instalar la aplicación.
- Si la plataforma no puede verificar exitosamente los vínculos de la aplicación, la aplicación no se configura como la aplicación preferida para controlar los vínculos web.
- La próxima vez que un usuario abra uno de estos vínculos, la plataforma recurrirá a mostrar al usuario un diálogo.
-
-
-</p>
-
-<p class="note">
-  <strong>Nota:</strong> Durante la prueba, existe la posibilidad de un falso positivo si la verificación falla, pero el usuario ha habilitado explícitamente la aplicación para que abra los vínculos compatibles sin preguntar, utilizando la aplicación de Configuraciones del sistema. En este caso, no se muestra el diálogo y el vínculo se dirige directamente a su aplicación, pero solo debido a la configuración del usuario y no porque la verificación se haya realizado correctamente.
-
-
-
-</p>
-
-
-<h2 id="user-manage">Gestionar las configuraciones del vínculo de la aplicación</h2>
-
-<p>
-  Los usuarios pueden cambiar las configuraciones del vínculo de la aplicación de manera que las URL se controlen como ellos lo prefieran. Puede revisar y gestionar los vínculos de la aplicación en la aplicación de Configuraciones del sistema, en <strong>Settings &gt; Apps &gt; App Info &gt; Open by default</strong>.
-
-
-</p>
diff --git a/docs/html-intl/intl/es/preview/features/runtime-permissions.jd b/docs/html-intl/intl/es/preview/features/runtime-permissions.jd
deleted file mode 100644
index ce94f5b..0000000
--- a/docs/html-intl/intl/es/preview/features/runtime-permissions.jd
+++ /dev/null
@@ -1,794 +0,0 @@
-page.title=Permisos
-page.tags=previewresources, androidm
-page.keywords=permissions, runtime, preview
-page.image={@docRoot}preview/features/images/permissions_check.png
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Quickview</h2>
-    <ul>
-      <li>Si su aplicación tiene como destino el SDK de la versión preliminar de Android M, se solicitará a los usuarios que concedan permisos durante el tiempo de ejecución, en lugar de durante la instalación.
-</li>
-      <li>Los usuarios pueden cancelar los permisos en cualquier momento desde la pantalla Settings de la aplicación.
-</li>
-      <li>La aplicación necesita controlar los permisos cada vez que se ejecuta.
-</li>
-    </ul>
-
-    <h2>Contenido del documento</h2>
-    <ol>
-      <li><a href="#overview">Información general</a></li>
-      <li><a href="#coding">Codificación para permisos de tiempo de ejecución</a></li>
-      <li><a href="#testing">Prueba de permisos de tiempo de ejecución</a></li>
-      <li><a href="#best-practices">Mejores prácticas</a></li>
-    </ol>
-
-<!--
-  <h2>Related Samples</h2>
-  <ol>
-    <li></li>
-  </ol>
--->
-
-<!--
-  <h2>See also</h2>
-  <ol>
-    <li></li>
-  </ol>
--->
-  </div> <!-- qv -->
-</div> <!-- qv-wrapper -->
-
-
-<p>
-  M Developer Preview introduce un nuevo modelo de permisos de la aplicación que facilita a los usuarios el proceso de instalación y actualización de aplicaciones.
- Si una aplicación que se ejecuta en la versión preliminar de Android M es compatible con el nuevo modelo de permisos, el usuario no tiene que conceder ningún permiso al instalar o actualizar la aplicación. En su lugar, la aplicación solicitará los permisos a medida que los vaya necesitado y el sistema mostrará al usuario un diálogo en el que le solicitará los permisos necesarios.
-
-
-
-
-</p>
-
-<p>
-  Si la aplicación es compatible con el nuevo modelo de permisos, podrá instalarse y ejecutarse en los dispositivos con versiones anteriores de Android, utilizando el modelo de permisos anterior en esos dispositivos.
-
-
-</p>
-
-<h2 id="overview">
-  Información general
-</h2>
-
-<p>
-  En M Developer Preview, la plataforma introduce un nuevo modelo
-de permisos de la aplicación. A continuación, se presenta un resumen de los componentes principales de este nuevo modelo:
-</p>
-
-<ul>
-  <li>
-    <strong>Declaración de los permisos:</strong> Al igual que en las plataformas anteriores de Android, la aplicación declara todos los permisos que necesita en el manifiesto.
-
-  </li>
-
-  <li>
-    <strong>Grupos de permisos:</strong> Según su función, los permisos se dividen en
-<em>grupos de permisos</em>. Por ejemplo, el grupo de permisos
-<code>CONTACTS</code> contiene permisos para leer y escribir los contactos y la información de perfil del usuario.
-
-  </li>
-
-  <li>
-    <p><strong>Permisos limitados concedidos durante la instalación:</strong> Cuando el usuario instala o actualiza la aplicación, el sistema le concede a la aplicación todos los permisos que la aplicación solicita que corresponden a {@link
-    android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}.
-
-
-    Por ejemplo, los permisos para la alarma y los permisos de intento corresponden a {@link
-    android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}, por lo que se conceden automáticamente durante la instalación.
-
-    </p>
-
-    <p>El sistema puede concederle a la aplicación permisos de firma y de sistema, como se especifica en la sección <a href="#system-apps">Permisos de firma y de sistema de la aplicación</a>.
-
- Al usuario <em>no</em> se le solicitará conceder ningún permiso durante la instalación.
-</p>
-  </li>
-
-  <li>
-    <strong>Solicitud de permisos al usuario durante el tiempo de ejecución:</strong> Cuando la aplicación solicita un permiso, el sistema le muestra al usuario un diálogo y luego llama a la función de devolución de llamada de la aplicación para notificarle si el permiso se otorgó.
-
- Si el usuario concede un permiso, la aplicación recibe todos los permisos del área funcional de dicho permiso, los cuales fueron declarados en el manifiesto de la aplicación.
-
-
-  </li>
-
-</ul>
-
-<p>
-  Este modelo de permisos cambia la forma en la que la aplicación se comporta para características que requieren permisos.
- A continuación, se presenta un resumen de las prácticas de desarrollo que debe seguir para ajustarse a este modelo:
-
-</p>
-
-<ul>
-
-  <li>
-    <strong>Siempre compruebe los permisos:</strong> Siempre que una aplicación necesite realizar una acción que requiere algún permiso, primero debe comprobar si ya tiene otorgado ese permiso.
-
- En caso de no tenerlo, solicitará que se le otorgue ese permiso.
-
-  </li>
-
-  <li>
-    <strong>Administre la falta de permisos correctamente:</strong> Si la aplicación no recibe un permiso adecuado, deberá administrar la falla sin errores.
-
-    Por ejemplo, si se necesita el permiso solo para una característica añadida, la aplicación puede desactivar esa característica.
- Si el permiso es fundamental para que la aplicación funcione, la aplicación podrá desactivar toda su funcionalidad e informar al usuario que se deben conceder dichos permisos.
-
-
-  </li>
-
-  <div class="figure" style="width:220px" id="fig-perms-screen">
-    <img src="{@docRoot}preview/features/images/app-permissions-screen_2x.png" srcset="{@docRoot}preview/features/images/app-permissions-screen.png 1x, {@docRoot}preview/features/images/app-permissions-screen_2x.png 2x" alt="" width="220">
-    <p class="img-caption">
-      <strong>Figura 1</strong> Pantalla de permisos en Settings de la aplicación.
-    </p>
-  </div>
-
-  <li>
-    <strong>Los permisos son revocables:</strong> Los usuarios pueden revocar los permisos en cualquier momento.
- Si un usuario desactiva los permisos de una aplicación, la aplicación <em>no</em> recibe ningún aviso.
- Nuevamente, la aplicación deberá verificar que cuenta con los permisos necesarios antes de realizar cualquier acción restringida.
-
-  </li>
-</ul>
-
-<p class="note">
-  <strong>Nota:</strong> Si una aplicación tiene como destino M Developer Preview, <em>debe</em> utilizar el nuevo modelo de permisos.
-
-</p>
-
-<p>
-  A partir del lanzamiento de M Developer Preview, no todas las aplicaciones de Google implementarán por completo el nuevo modelo de permisos.
- Google actualiza estas aplicaciones durante el transcurso de M Developer Preview para respetar adecuadamente las configuraciones de alternancia de los permisos.
-
-
-</p>
-
-<p class="note">
-  <strong>Nota:</strong> Si la aplicación cuenta con su propia superficie de API, no transmita permisos sin antes asegurarse de que el iniciador de la llamada cuente con los permisos requeridos para acceder a esa información.
-
-
-</p>
-
-<h3 id="system-apps">
-  Permisos de las aplicaciones de firma y de sistema
-</h3>
-
-<p>
-  Generalmente, cuando el usuario instala una aplicación, el sistema solo otorga a la aplicación
-{@link android.content.pm.PermissionInfo#PROTECTION_NORMAL
-  PROTECTION_NORMAL}. Sin embargo, en ciertas circunstancias, el sistema le concede a la aplicación más permisos:
-
-</p>
-
-<ul>
-  <li>Si una aplicación es parte de la imagen del sistema, la aplicación recibe automáticamente todos los permisos enumerados en el manifiesto.
-
-  </li>
-
-  <li>Si la aplicación solicita permisos en el manifiesto que corresponden a {@link
-  android.content.pm.PermissionInfo#PROTECTION_SIGNATURE PROTECTION_SIGNATURE} y la aplicación está firmada con el mismo certificado que el de la aplicación que declaró dichos permisos, el sistema le concede a la aplicación que los solicita esos permisos durante la instalación.
-
-
-
-  </li>
-</ul>
-
-<p>
-  En ambos casos, el usuario aún puede revocar los permisos en cualquier momento si accede a la pantalla <strong>Settings</strong> del sistema y selecciona <strong>Apps &gt;</strong>
-
- <i>app_name</i> <strong>&gt; Permissions</strong>. La aplicación debe seguir controlando los permisos al momento de la ejecución y solicitarlos si fuese necesario.
-
-
-</p>
-
-<h3 id="compatibility">
-  Compatibilidad con modelos anteriores y posteriores
-</h3>
-
-<p>
-  Si una aplicación no tiene como destino M Developer Preview, la aplicación continúa utilizando el modelo de permisos anterior, incluso en dispositivos con la versión preliminar de Android M.
- Cuando el usuario instala la aplicación, el sistema le solicita al usuario que otorgue todos los permisos enumerados en el manifiesto de la aplicación.
-
-
-</p>
-
-<p class="note">
-  <strong>Nota:</strong> En dispositivos que ejecutan M Developer Preview, el usuario puede desactivar los permisos para cualquier aplicación (incluso para aplicaciones heredadas) desde la pantalla Settings de la aplicación.
-
- Si un usuario desactiva permisos para una aplicación heredada, el sistema desactiva las funciones correspondientes de forma automática.
- Cuando la aplicación intenta realizar una operación que requiere ese permiso, la operación no generará necesariamente una excepción.
-
- En su lugar, devolverá un conjunto de datos vacíos, indicará un error o, de lo contrario, mostrará un comportamiento inesperado.
- Por ejemplo, si realiza una consulta sobre el calendario sin permisos, el método devuelve un conjunto de datos vacíos.
-
-</p>
-
-<p>
-  Si instala una aplicación que utiliza el nuevo modelo de permisos en un dispositivo que no ejecuta la versión preliminar de Android M, el sistema la trata como cualquier otra aplicación: el sistema le pide al usuario, durante la instalación, que conceda los permisos declarados.
-
-
-
-</p>
-
-<p class="note">
-  <strong>Nota:</strong> Para el lanzamiento de la versión preliminar, debe configurar la versión mínima del SDK en M Preview SDK para compilar con la versión del SDK preliminar.
- Esto significa que no podrá probar dichas aplicaciones en plataformas anteriores durante la versión preliminar para desarrolladores.
-
-
-</p>
-
-<h3 id="perms-vs-intents">Permisos frente a intentos</h3>
-
-<p>
-  En muchas situaciones, puede elegir entre dos formas para que sus aplicaciones realicen una tarea.
- Puede hacer que su aplicación solicite permiso para realizar la operación por sí misma.
- De lo contrario, puede hacer que la aplicación utilice un intento para que otra aplicación realice la tarea.
-
-</p>
-
-<p>
-  Por ejemplo, supongamos que su aplicación necesita poder tomar fotografías con la cámara del dispositivo.
- Su aplicación puede solicitar el permiso
-<code>android.permission.CAMERA</code>, lo que le permite a su aplicación acceder a la cámara directamente.
- Entonces, su aplicación utilizará las API de la cámara para controlar la cámara y tomar una fotografía.
- Este enfoque le otorga a su aplicación total control del proceso de fotografía y le permite incorporar la UI de la cámara en su aplicación.
-
-
-</p>
-
-<p>
-  Sin embargo, si no necesita dicho control, puede utilizar {@link
-  android.provider.MediaStore#ACTION_IMAGE_CAPTURE ACTION_IMAGE_CAPTURE} para solicitar una imagen.
- Cuando ejecute el intento, se le solicita al usuario que elija una aplicación de cámara (en caso de que no haya una aplicación de cámara predeterminada) y esa aplicación tomará la fotografía.
-
- La aplicación de cámara devuelve la fotografía al método {@link
-  android.app.Activity#onActivityResult onActivityResult()} de su aplicación.
-</p>
-
-<p>
-  De manera similar, si necesita realizar una llamada telefónica, acceder a los contactos del usuario, etc., lo puede hacer creando intentos apropiados o puede solicitar los permisos e ingresar directamente a los objetos apropiados.
-
- Cada enfoque tiene ventajas y desventajas.
-
-</p>
-
-<p>
-  Si utiliza los permisos:
-</p>
-
-<ul>
-  <li>La aplicación posee total control sobre la experiencia del usuario cuando usted realiza la operación.
- Sin embargo, un control tan amplio complica su tarea, ya que usted deberá diseñar una UI apropiada.
-
-  </li>
-
-  <li>Se le solicita al usuario otorgar el permiso una vez, la primera vez que usted realiza la operación.
- Luego, su aplicación puede realizar la operación sin requerir interacción adicional por parte del usuario.
- Sin embargo, si el usuario no concede el permiso (o lo revoca luego), su aplicación queda inhabilitada para realizar la operación.
-
-
-  </li>
-</ul>
-
-<p>
-  Si utiliza un intento:
-</p>
-
-<ul>
-  <li>No debe diseñar la UI para la operación. La aplicación que controla el intento provee la UI. Sin embargo, esto significa que usted no tiene control sobre la experiencia del usuario.
-
- El usuario podrá interactuar con una aplicación que usted no conoce.
-
-  </li>
-
-  <li>Si el usuario no tiene una aplicación predeterminada para la operación, el sistema le solicita al usuario que elija una aplicación. Si el usuario no designa un controlador predeterminado, es probable que surja un diálogo adicional cada vez que realice la operación.
-
-
-
-  </li>
-</ul>
-
-<h2 id="coding">Codificación para permisos de tiempo de ejecución</h2>
-
-<p>
-  Si su aplicación tiene como destino el nuevo M Developer Preview, deberá usar el nuevo modelo de permisos.
-  Esto significa que, además de declarar los permisos necesarios en el manifiesto, también debe comprobar si tiene los permisos de tiempo de ejecución y solicitarlos en caso de no tenerlos.
-
-
-
-</p>
-
-<h3 id="enabling">
-  Habilitar el nuevo modelo de permisos
-</h3>
-
-<p>
-  Para habilitar el nuevo modelo de permisos de M Developer Preview, configure el atributo
-<code>targetSdkVersion</code> de la aplicación en <code>"MNC"</code> y
-<code>compileSdkVersion</code> en <code>"android-MNC"</code>. Al hacerlo, se habilitan todas las características de los nuevos permisos.
-
-</p>
-
-<p>
-  Para el lanzamiento de la versión preliminar, debe establecer <code>minSdkVersion</code> en
-<code>"MNC"</code> para compilar con el SDK preliminar.
-</p>
-
-<h3 id="m-only-perm">
-  Establecer un permiso solo para la versión preliminar de Android M
-</h3>
-
-<p>
-  Puede utilizar el nuevo elemento <code>&lt;uses-permission-sdk-m&gt;</code> en el manifiesto de la aplicación para indicar que se necesita un permiso solo para M Developer Preview.
- Si declara un permiso de esta manera, cuando la aplicación se instale en un dispositivo anterior, el sistema no le solicitará al usuario el permiso ni se lo otorgará a la aplicación. Al usar el elemento <code>&lt;uses-permission-sdk-m&gt;</code>, puede añadir nuevos permisos a las versiones actualizadas de su aplicación sin forzar a los usuarios a otorgar permisos cuando instalen la actualización.
-
-
-
-
-
-
-</p>
-
-<p>
-  Si la aplicación se ejecuta en un dispositivo con M Developer Preview,
-<code>&lt;uses-permission-sdk-m&gt;</code> se comporta al igual que
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
-  El sistema no le solicita al usuario que otorgue ningún permiso al instalar la aplicación y la aplicación solicita los permisos a medida que se necesiten.
-
-</p>
-
-<h3 id="prompting">
-  Solicitar permisos
-</h3>
-
-<p>
-  Si su aplicación utiliza el nuevo modelo de permisos de M Developer Preview, no se le pedirá al usuario que otorgue todos los permisos cuando la aplicación se ejecute por primera vez en un dispositivo con la versión preliminar de Android M.
-
- En su lugar, su aplicación solicita los permisos a medida que los necesita.
- Cuando su aplicación solicita un permiso, el sistema le muestra un diálogo al usuario.
-
-</p>
-
-<p>
-  Si su aplicación se ejecuta en un dispositivo con SDK 22 o anterior, la aplicación utiliza el modelo de permisos anterior.
- Cuando el usuario instala la aplicación, se le solicita que otorgue todos los permisos que la aplicación requiere en su manifiesto, excepto aquellos permisos marcados con <code>&lt;uses-permission-sdk-m&gt;</code>.
-
-
-</p>
-
-<h4 id="check-platform">Controlar en qué plataforma se ejecuta la aplicación</h4>
-
-<p>
-  Este modelo de permisos es compatible solamente con dispositivos que ejecutan M Developer Preview.
- Antes de llamar a cualquiera de estos métodos, la aplicación debe verificar en qué plataforma se está ejecutando y, para hacerlo, se controla el valor de {@link android.os.Build.VERSION#CODENAME
-  Build.VERSION.CODENAME}.
-
- Si el dispositivo ejecuta M Developer Preview,
-{@link android.os.Build.VERSION#CODENAME CODENAME} es <code>"MNC"</code>.
-</p>
-
-<h4 id="check-for-permission">Controlar si la aplicación cuenta con los permisos necesarios</h4>
-
-<p>Cuando el usuario intenta realizar algo que requiere un permiso, la aplicación controla si ya tiene el permiso para realizar esa operación.
- Para hacerlo, la aplicación llama a <code>Context.checkSelfPermission(
-
-<i>permission_name</i>)</code>. La aplicación debe realizar este control incluso si sabe que el usuario ya ha concedido ese permiso, ya que el usuario puede revocar los permisos de una aplicación en cualquier momento.
-
-
- Por ejemplo, si un usuario quiere usar una aplicación para tomar una fotografía, la aplicación llama a <code>Context.checkSelfPermission(Manifest.permission.CAMERA)</code>.
-
-</p>
-
-<p class="table-caption" id="permission-groups">
-  <strong>Tabla 1.</strong> Permisos y grupo de permisos.</p>
-<table>
-  <tr>
-    <th scope="col">Grupo de permisos</th>
-    <th scope="col">Permisos</th>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CALENDAR</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_CALENDAR</code>
-        </li>
-      </ul>
-      <ul>
-        <li>
-          <code>android.permission.WRITE_CALENDAR</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CAMERA</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.CAMERA</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CONTACTS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_CONTACTS</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_CONTACTS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_PROFILE</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_PROFILE</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.LOCATION</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.ACCESS_FINE_LOCATION</code>
-        </li>
-        <li>
-          <code>android.permission.ACCESS_COARSE_LOCATION</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.MICROPHONE</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.RECORD_AUDIO</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.PHONE</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_PHONE_STATE</code>
-        </li>
-        <li>
-          <code>android.permission.CALL_PHONE</code>
-        </li>
-        <li>
-          <code>android.permission.READ_CALL_LOG</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_CALL_LOG</code>
-        </li>
-        <li>
-          <code>com.android.voicemail.permission.ADD_VOICEMAIL</code>
-        </li>
-        <li>
-          <code>android.permission.USE_SIP</code>
-        </li>
-        <li>
-          <code>android.permission.PROCESS_OUTGOING_CALLS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.SENSORS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.BODY_SENSORS</code>
-        </li>
-      </ul>
-      <ul>
-        <li>
-          <code>android.permission.USE_FINGERPRINT</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.SMS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.SEND_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_WAP_PUSH</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_MMS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_CELL_BROADCASTS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-</table>
-
-<h4 id="request-permissions">Solicitar permisos si se necesitan</h4>
-
-<p>Si la aplicación no posee los permisos que necesita, llama al método
-<code>Activity.requestPermissions(String[], int)</code> para solicitar el permiso o los permisos apropiados.
- La aplicación pasa el permiso o los permisos que necesita y un “código de solicitud” entero.
-
-  Este método funciona de manera asincrónica: realiza la devolución inmediatamente y cuando el usuario responde a la ventana de diálogo, el sistema llama al método de devolución de llamada de la aplicación con los resultados, y pasa el mismo “código de solicitud” que pasó la aplicación a
-<code>requestPermissions()</code>.
-
-</p>
-
-  <p>El siguiente código verifica si la aplicación tiene permisos para leer los contactos del usuario y solicita los permisos de ser necesario:
-</p>
-
-<pre>
-if (checkSelfPermission(Manifest.permission.READ_CONTACTS)
-        != PackageManager.PERMISSION_GRANTED) {
-    requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
-            MY_PERMISSIONS_REQUEST_READ_CONTACTS);
-
-    // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
-    // app-defined int constant
-
-    return;
-}
-</pre>
-
-<h4 id="handle-response">Administrar la respuesta a la solicitud de permisos</h4>
-
-<p>
-  Cuando una aplicación solicita permisos, el sistema le muestra al usuario una ventana de diálogo.
- Cuando el usuario responde, el sistema invoca
-<code>Activity.onRequestPermissionsResult(int, String[], int[])</code>
- de su aplicación y le transfiere la respuesta del usuario. Su aplicación necesita invalidar ese método. La devolución de llamada pasa el mismo código de solicitud que usted pasó a <code>requestPermissions()</code>.
-
- Por ejemplo, si una aplicación solicita acceso <code>READ_CONTACTS</code>, es posible que tenga el siguiente método de devolución de llamada:
-
-
-</p>
-
-<pre>
-&#64;Override
-public void onRequestPermissionsResult(int requestCode,
-        String permissions[], int[] grantResults) {
-    switch (requestCode) {
-        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
-            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-
-                // permission was granted, yay! do the
-                // calendar task you need to do.
-
-            } else {
-
-                // permission denied, boo! Disable the
-                // functionality that depends on this permission.
-            }
-            return;
-        }
-
-        // other 'switch' lines to check for other
-        // permissions this app might request
-    }
-}
-</pre>
-
-  <p>Si el usuario concede un permiso, el sistema le otorga a la aplicación todos los permisos enumerados en el manifiesto para esa área funcional.
- Se deben tomar acciones apropiadas si el usuario rechaza la solicitud.
- Por ejemplo, usted podría desactivar cualquier acción del menú que dependa de este permiso.
-
-  </li>
-</p>
-
-<p>
-  Cuando el sistema le solicita al usuario que otorgue un permiso, el usuario tiene la opción de indicarle al sistema que no solicite ese permiso de nuevo.
- En ese caso, cuando la aplicación utiliza <code>requestPermissions()</code> para solicitar ese permiso, el sistema rechaza la solicitud inmediatamente.
-
- En este caso, el sistema llama a su <code>onRequestPermissionsResult()</code> de la misma manera en que lo haría si el usuario hubiese rechazado explícitamente su solicitud nuevamente.
-
- Por esta razón, su aplicación no puede asumir que se ha llevado a cabo algún tipo de interacción con el usuario.
-
-</p>
-
-<h2 id="testing">Prueba de permisos de tiempo de ejecución</h2>
-
-
-<p>
-  Si su aplicación tiene como destino M Developer Preview, debe probar que administre los permisos correctamente.
- No debe asumir que su aplicación tiene algún permiso en particular cuando se ejecuta.
- Cuando la aplicación se ejecuta por primera vez, es muy probable que no tenga permisos y el usuario puede revocar o reestablecer los permisos en cualquier momento.
-
-
-</p>
-
-<p>
-  Debe probar su aplicación para asegurarse de que funciona correctamente en todas las situaciones de permisos.
- Con el SDK de la versión preliminar de Android M, hemos brindado nuevos comandos <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (adb)</a> que le permitirán probar su aplicación con cualquier configuración de permisos que necesite probar.
-
-
-
-</p>
-
-<h3>
-  Nuevas opciones y comandos adb
-</h3>
-
-<p>
-  Las herramientas de plataforma del SDK de la versión preliminar de Android M contienen varios comandos nuevos que le permiten probar la manera en que su aplicación administra los permisos.
-
-</p>
-
-<h4>
-  Instalar con permisos
-</h4>
-
-<p>
-  Puede utilizar la nueva opción <code>-g</code> del comando <a href="{@docRoot}tools/help/adb.html#move"><code>adb
-  install</code></a>, que instala la aplicación y concede todos los permisos enumerados en el manifiesto de la aplicación:
-
-</p>
-
-<pre class="no-pretty-print">
-$ adb install -g &lt;path_to_apk&gt;
-</pre>
-
-<h4>
-  Conceder y revocar permisos
-</h4>
-
-<p>
-  Puede utilizar los comandos ADB nuevos <a href="{@docRoot}tools/help/adb.html#pm">package manager (pm)</a> para conceder y revocar permisos a una aplicación instalada. Esta funcionalidad puede resultar útil para pruebas automáticas.
-
-
-</p>
-
-<p>
-  Para conceder un permiso, utilice el comando <code>grant</code> de package manager:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant &lt;package_name&gt; &lt;permission_name&gt;
-</pre>
-
-<p>
-  Por ejemplo, para conceder el paquete de permisos com.example.myapp para grabar audio utilice este comando:
-
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant com.example.myapp android.permission.RECORD_AUDIO
-</pre>
-
-<p>
-  Para revocar un permiso, utilice el comando <code>revoke</code> de package manager:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm revoke &lt;package_name&gt; &lt;permission_name&gt;
-</pre>
-
-<h2 id="best-practices">Mejores prácticas</h2>
-
-<p>
-  El nuevo modelo de permisos brinda a los usuarios una experiencia más fluida y les facilita la instalación de aplicaciones, además de hacerlos sentir cómodos con las actividades de sus aplicaciones.
-
- Sugerimos las siguientes mejores prácticas para obtener el mayor beneficio del nuevo modelo.
-
-</p>
-
-
-<h3 id="bp-what-you-need">Solicite solo los permisos que necesite</h3>
-
-<p>
-  Cada vez que solicite un permiso, usted obliga al usuario a tomar una decisión.
-  La funcionalidad de su aplicación se verá reducida si el usuario rechaza la solicitud.
-  Debe minimizar la cantidad de veces que realiza estas solicitudes.
-</p>
-
-<p>
-  Por ejemplo, a menudo, su aplicación puede obtener la funcionalidad necesaria a través de un <a href="{@docRoot}guide/components/intents-filters.html">intento</a> en lugar de una solicitud de permiso.
-
- Si su aplicación necesita tomar fotografías con la cámara del teléfono, la aplicación puede utilizar un intento {@link
-  android.provider.MediaStore#ACTION_IMAGE_CAPTURE
-  MediaStore.ACTION_IMAGE_CAPTURE}.
-  Cuando su aplicación ejecuta el intento, el sistema le solicita al usuario que elija una aplicación para la cámara que ya está instalada a fin de tomar la fotografía.
-
-
-</p>
-
-<h3 id="bp-dont-overwhelm">
-  No abrume al usuario
-</h3>
-
-<p>
-  Si expone al usuario a muchas solicitudes de permisos al mismo tiempo, lo abrumará y hará que deje de usar su aplicación. Por el contrario, debe pedir permisos en la medida que los necesite.
-
-
-</p>
-
-<p>
-  A veces, uno o más permisos pueden ser absolutamente necesarios para la aplicación. En ese caso, es recomendable pedir todos los permisos no bien se inicie la aplicación.
-
- Por ejemplo, si crea una aplicación de fotografía, la aplicación necesitará acceso a la cámara del dispositivo.
- Cuando el usuario inicie la aplicación por primera vez, no se sorprenderá si la aplicación le solicita permiso para usar la cámara.
-
- Sin embargo, si la misma aplicación además tuviese una característica para compartir fotografías con los contactos del usuario, <em>no</em> solicite ese permiso la primera vez que se ejecute.
-
- En su lugar, espere hasta que el usuario utilice la característica “compartir” para solicitar el permiso en ese momento.
-
-</p>
-
-<p>
-  Si su aplicación proporciona un tutorial, se recomienda que se pidan los permisos esenciales de la aplicación al final del tutorial.
-
-</p>
-
-<h3 id="bp-explain">
-  Explique por qué se necesitan los permisos
-</h3>
-
-<p>
-  El diálogo de permisos que muestra el sistema cuando llama a
- <code>requestPermissions()</code> informa qué permisos necesita su aplicación pero no establece el motivo.
- A veces, el usuario puede confundirse.
-  Es una buena idea explicarle al usuario los motivos por los que la aplicación necesita esos permisos antes de llamar a <code>requestPermissions()</code>.
-
-</p>
-
-<p>
-  Por ejemplo, una aplicación de fotografía puede solicitar servicios de ubicación para añadir una etiqueta geográfica a las fotografías.
- Es posible que un usuario típico no sepa que una fotografía puede contener información sobre la ubicación y se confundiría si una aplicación de fotografía solicita la ubicación.
-
- En este caso, es recomendable que la aplicación le informe al usuario acerca de esta característica <em>antes</em> de llamar a
-<code>requestPermissions()</code>.
-
-</p>
-
-<p>
-  Una forma de hacerlo es incorporar estas solicitudes en el tutorial de la aplicación. El tutorial puede mostrar todas las características de la aplicación, una por vez, y mientras lo hace explicar los permisos que son necesarios.
-
- Por ejemplo, el tutorial de la aplicación de fotografía puede mostrar la característica “compartir fotografías con contactos” y luego explicarle al usuario que debe otorgar permisos para que la aplicación vea los contactos del usuario.
-
-
- La aplicación puede entonces llamar a <code>requestPermissions()</code> para solicitarle al usuario ese acceso.
- Por supuesto, no todos los usuarios siguen el tutorial, por lo que aun así debe controlar y solicitar los permisos durante el funcionamiento normal de la aplicación.
-
-
-</p>
diff --git a/docs/html-intl/intl/es/preview/index.jd b/docs/html-intl/intl/es/preview/index.jd
deleted file mode 100644
index 547b5b0..0000000
--- a/docs/html-intl/intl/es/preview/index.jd
+++ /dev/null
@@ -1,72 +0,0 @@
-page.title=Android M Developer Preview
-page.tags="preview",
-meta.tags="preview, M preview", androidm
-fullpage=true
-section.landing=true
-header.hide=1
-footer.hide=1
-@jd:body
-
-<section class="dac-expand dac-hero dac-light" >
-  <div class="wrap">
-    <div class="cols dac-hero-content">
-      <div class="col-9of16 col-push-7of16 dac-hero-figure">
-        <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png" srcset="{@docRoot}images/home/devices-hero_620px.png 1x,
-             {@docRoot}images/home/devices-hero_620px_2x.png 2x">
-      </div>
-      <div class="col-7of16 col-pull-9of16">
-        <h1 class="dac-hero-title">Android M Developer Preview</h1>
-        <p class="dac-hero-description">
-          Prepárese para la próxima versión de Android. Pruebe sus aplicaciones en Nexus 5, 6, 9 y Player.
- Explore las novedades en los&mdash; <strong>permisos de ejecución</strong>, las características de ahorro de energía <strong>Doze</strong> y <strong>App Standby</strong>, la nueva <strong>tecnología de asistencia</strong> y mucho más.
-
-
-        </p>
-
-        <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          ¡Empiece hoy mismo!</a>
-<br>
-
-        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          Developer Preview 3 (final SDK)</a>
-
-      </div>
-    </div>
-    <div class="dac-section dac-small">
-      <div class="resource-widget resource-flow-layout col-16"
-           data-query="collection:preview/landing/resources"
-           data-cardSizes="6x2"
-           data-maxResults="6"></div>
-    </div>
-  </div>
-</section>
-
-<section class="dac-section dac-gray"><div class="wrap">
-  <h1 class="dac-section-title">Recursos</h1>
-  <div class="dac-section-subtitle">
-    Información esencial para ayudarlo a preparar sus aplicaciones para Android M.
-  </div>
-
-  <div class="resource-widget resource-flow-layout col-16"
-       data-query="collection:preview/landing/more"
-       data-cardSizes="6x6"
-       data-maxResults="16"></div>
-
-    <ul class="dac-section-links">
-      <li class="dac-section-link">
-        <a href="https://code.google.com/p/android-developer-preview/">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          Informe los problemas
-        </a>
-      </li>
-      <li class="dac-section-link"><a href="http://g.co/dev/AndroidMDevPreview">
-        <span class="dac-sprite dac-auto-chevron"></span>
-        Únase a la comunidad en G+        </a>
-
-      </li>
-    </ul>
-  </div>
-</section>
-
diff --git a/docs/html-intl/intl/es/preview/license.jd b/docs/html-intl/intl/es/preview/license.jd
deleted file mode 100644
index 7222801..0000000
--- a/docs/html-intl/intl/es/preview/license.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=Contrato de licencia
-
-@jd:body
-
-<p>
-Para comenzar con la versión preliminar del SDK de Android, debe aceptar los términos y las condiciones que se describen a continuación. 
-Como se describe a continuación, tenga en cuenta que esta es una versión preliminar del SDK de Android, que está sujeta a cambios y que usted utiliza bajo su cuenta y riesgo.  La versión preliminar del SDK de Android no es una versión estable y puede contener errores y defectos que pueden provocar daños graves a sus sistemas informáticos, dispositivos y datos.
-</p>
-
-<p>
-Este es el Contrato de licencia de la versión preliminar del SDK de Android (el “Contrato de licencia”).
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1. Introducción
-
-1.1 Se le otorga la licencia de la versión preliminar del SDK de Android (denominada “Versión preliminar” en el Contrato de licencia e incluye específicamente los archivos de sistema de Android, las API agrupadas y los archivos de biblioteca de la Versión preliminar, si se encuentran disponibles), sujeto a los términos del Contrato de licencia. El Contrato de licencia establece una relación legal vinculante entre usted y Google en relación con el uso que usted realice de la Versión preliminar.
-
-1.2 “Android” hace referencia al conjunto de soluciones Android para dispositivos, según se encuentre disponible en el Proyecto de código abierto de Android (Android Open Source Project), que se encuentra en la siguiente URL: http://source.android.com/, y según se actualiza periódicamente.
-
-1.3 “Google” hace referencia a Google Inc., una corporación de Delaware, con sede principal en 1600 Amphitheatre Parkway, Mountain View, CA 94043, Estados Unidos.
-
-2. Aceptación del Contrato de licencia
-
-2.1 Para poder utilizar la Versión preliminar, primero debe aceptar el Contrato de licencia. Si no acepta el Contrato de licencia, no podrá utilizar la Versión preliminar.
-
-2.2 Al hacer clic para aceptar o utilizar la Versión preliminar, por medio del presente, usted acepta los términos del Contrato de licencia.
-
-2.3 Usted no puede utilizar la Versión preliminar ni aceptar el Contrato de licencia si tiene prohibido recibir la Versión preliminar en virtud de las leyes de los Estados Unidos o de otros países, lo que incluye el país donde es residente o desde el que utilizará la Versión preliminar.
-
-2.4 Si usted utilizará la Versión preliminar de forma interna, dentro de su compañía u organización, usted acepta quedar sujeto al Contrato de licencia en representación de su empleador u otra entidad, y expresa y garantiza que tiene plena autoridad legal para vincular a su empleador o a dicha entidad al Contrato de licencia. Si no posee la autoridad exigida, no podrá aceptar el Contrato de licencia ni usar la Versión preliminar en representación de su empleador u otra entidad.
-
-3. Licencia de la Versión preliminar de Google
-
-3.1 Sujeto a los términos del Contrato de licencia, Google le otorga una licencia libre de regalías, no asignable, no exclusiva, no transferible a terceros, limitada y revocable para utilizar la Versión preliminar, de forma personal o interna dentro de su compañía u organización, únicamente para desarrollar aplicaciones para ejecutar en la plataforma de Android.
-
-3.2 Usted acepta que Google u otros terceros poseen todos los derechos legales, títulos e intereses en relación con la Versión preliminar, incluidos los Derechos de propiedad intelectual que existan en la Versión preliminar. Los “Derechos de propiedad intelectual” hacen referencia a todos y cada uno de los derechos en virtud de las leyes de patentes, derechos de autor, secreto comercial y marca comercial, y todos los demás derechos de propiedad. Google se reserva todos los derechos que no se le otorguen expresamente.
-
-3.3 No podrá utilizar la Versión preliminar para ningún otro propósito que no esté expresamente permitido en el Contrato de licencia. Excepto en la medida que lo exijan las licencias correspondientes de terceros, no podrá: (a) copiar (excepto con fines de copia de seguridad), modificar, adaptar, redistribuir, descompilar, utilizar técnicas de ingeniería inversa, desarmar ni crear trabajos derivados de la Versión preliminar ni de ninguna de sus partes; ni (b) cargar ninguna parte de la Versión preliminar en un teléfono móvil ni en ningún otro dispositivo de hardware (a excepción de una computadora personal), ni podrá combinar ninguna parte de la Versión preliminar con otro software, ni distribuir algún software o dispositivo que incorpore alguna parte de la Versión preliminar.
-
-3.4 Usted acepta que no tomará medidas que pudieran provocar la fragmentación de Android, incluidas, entre otras, la distribución y la participación en la creación o la promoción de un kit de desarrollo de software derivado de la Versión preliminar.
-
-3.5 El uso, la reproducción y la distribución de los componentes de la Versión preliminar con licencia de software de código abierto están regidos exclusivamente por los términos de la licencia de ese software de código abierto y no de este Contrato de licencia. Usted acepta mantener la licencia en buenas condiciones con respecto a dichas licencias de software de código abierto en virtud de todos los derechos otorgados y acepta abstenerse de realizar alguna acción que pueda poner fin, suspender o violar dichos derechos.
-
-3.6 Usted acepta que la forma y la naturaleza de la Versión preliminar que proporciona Google pueden cambiar sin brindarle aviso previo y que las versiones futuras de la Versión preliminar pueden ser incompatibles con las aplicaciones desarrolladas en versiones anteriores de la Versión preliminar. Usted acepta que Google puede (de forma permanente o temporal) dejar de proporcionarles la Versión preliminar (o cualquiera de las características incluidas en ella) a usted o a los usuarios, generalmente, a criterio exclusivo de Google, sin brindarle aviso previo.
-
-3.7 Ninguna declaración de este Contrato de licencia le otorga el derecho de utilizar alguno de los nombres comerciales, las marcas comerciales, las marcas de servicio, los logotipos, los nombres de dominio ni otras características distintivas de marca de Google.
-
-3.8 Usted acepta que no eliminará, ocultará ni alterará ninguno de los avisos de derechos de propiedad (lo que incluye los avisos de marca comercial y derechos de autor) que pudieran estar anexados o incluidos en la Versión preliminar.
-
-4. Uso que usted realiza de la Versión preliminar
-
-4.1 Google acepta que ninguna declaración del Contrato de licencia le concede a Google derecho, título o interés alguno de su parte (o de parte de sus licenciantes), en virtud del Contrato de licencia, con respecto a las aplicaciones de software que usted desarrolle mediante el uso de la Versión preliminar, lo que incluye los derechos de propiedad intelectual que conlleven esas aplicaciones.
-
-4.2 Usted acepta utilizar la Versión preliminar y escribir aplicaciones únicamente conforme a lo que permite (a) este Contrato de licencia y (b) las leyes, regulaciones, o prácticas y pautas generalmente aceptadas pertinentes en las jurisdicciones relevantes (lo que incluye las leyes sobre la exportación de datos o software hacia los Estados Unidos u otros países relevantes y desde ellos). 
-
-4.3 Usted acepta que si utiliza la Versión preliminar para desarrollar aplicaciones, protegerá la privacidad y los derechos legales de los usuarios. Si los usuarios le proporcionan sus nombres de usuario, contraseñas u otra información de inicio de sesión o información personal, debe comunicarles a los usuarios que la información se encontrará disponible para su aplicación, y debe proporcionarles a dichos usuarios un aviso de privacidad con protección y validez legal. Si su aplicación almacena información personal o confidencial proporcionada por los usuarios, lo debe hacer de forma segura. Si los usuarios le proporcionan información sobre la cuenta de Google, su aplicación solo puede usar esa información para acceder a la cuenta de Google del usuario siempre que este le haya otorgado permiso para hacerlo y con los fines para los que se lo haya otorgado.
-
-4.4 Usted acepta que no participará en ninguna actividad con la Versión preliminar (lo que incluye el desarrollo o la distribución de una aplicación) que interfiera, interrumpa, dañe o acceda sin autorización a servidores, redes u otras propiedades o servicios de Google o de algún tercero.
-
-4.5 Usted acepta que es el único responsable (y que Google no asume responsabilidades hacia usted ni terceros) de los datos, el contenido o los recursos que usted cree, transmita o muestre a través de Android o las aplicaciones para Android, y de las consecuencias de sus acciones (lo que incluye la pérdida o el daño que Google pudiera sufrir) al hacerlo.
-
-4.6 Usted acepta que es el único responsable (y que Google no asume responsabilidades hacia usted ni terceros) de cualquier incumplimiento de sus obligaciones en virtud de este Contrato de licencia, los contratos aplicables de terceros o los términos del servicio, o cualquier ley o regulación pertinentes, y de las consecuencias (lo que incluye las pérdidas o los daños que pudieran sufrir Google o algún tercero) de dichos incumplimientos.
-
-4.7 La Versión preliminar se encuentra en desarrollo, y sus pruebas y comentarios son una parte importante del proceso de desarrollo. Al utilizar la Versión preliminar, usted reconoce que la implementación de algunas características aún se encuentra en desarrollo y que no debe confiar en que la Versión preliminar contará con todas las funcionalidades de una versión estable. Usted acepta no distribuir públicamente ni enviar ninguna aplicación que utilice esta Versión preliminar, ya que esta Versión preliminar ya no se admitirá tras el lanzamiento del SDK oficial de Android.
-
-5. Sus credenciales de desarrollador
-
-5.1 Usted acepta que es responsable de mantener la confidencialidad de toda credencial de desarrollador que Google pudiera otorgarle o que usted pudiera escoger, y que será el único responsable de todas las aplicaciones que se desarrollen con sus credenciales de desarrollador.
-
-6. Privacidad e información
-
-6.1 A fin de poder innovar y mejorar de forma continua la Versión preliminar, Google podría recopilar ciertas estadísticas de uso del software, lo que incluye, entre otras características, un identificador único, la dirección IP asociada, el número de versión del software e información sobre las herramientas o los servicios de la Versión preliminar que se estén utilizando y la manera en que se estén utilizando. Antes de que se recopile esta información, la Versión preliminar se lo notificará y le solicitará su permiso. Si no otorga su permiso, no se recopilará la información.
-
-6.2 Los datos recopilados se analizan en el agregado para mejorar la Versión preliminar y se conservan de acuerdo con la política de privacidad de Google que se encuentra en el sitio http://www.google.com/policies/privacy/.
-
-7. Aplicaciones de terceros
-
-7.1 Si utiliza la Versión preliminar para ejecutar aplicaciones desarrolladas por un tercero o que accedan a datos, contenido o recursos proporcionados por un tercero, usted acepta que Google no es responsable de esas aplicaciones, datos, contenido ni recursos. Usted comprende que todos los datos, contenidos o recursos a los que podría acceder a través de esas aplicaciones de terceros son exclusiva responsabilidad de la persona que los origina y que Google no es responsable de las pérdidas ni los daños que usted pudiera experimentar como consecuencia del uso o acceso de cualquiera de esas aplicaciones, datos, contenido o recursos de terceros.
-
-7.2 Usted debe saber que los datos, el contenido y los recursos que se le presentan a través de esa aplicación de un tercero pueden estar protegidos por derechos de propiedad intelectual que les pertenecen a sus proveedores (o a otras personas o compañías en representación de estos). No puede modificar, alquilar, arrendar, prestar, vender, distribuir ni crear obras derivadas basadas en esos datos, contenidos o recursos (en su totalidad o en parte), a menos que los propietarios pertinentes le hayan otorgado permiso específicamente para hacerlo.
-
-7.3 Usted acepta que el uso que haga de las aplicaciones, los datos, el contenido o los recursos de ese tercero puede estar sujeto a términos independientes entre usted y el tercero correspondiente.
-
-8. Uso de las API de Google
-
-8.1 API de Google
-
-8.1.1 Si utiliza alguna API para recuperar datos de Google, usted acepta que los datos pueden estar protegidos por derechos de propiedad intelectual que le pertenecen a Google o a las partes que proporcionan esos datos (o a otras personas o empresas en representación de estos). El uso que realice de cualquiera de esas API puede estar sujeto a términos de servicio adicionales. No puede modificar, alquilar, arrendar, prestar, vender, distribuir ni crear obras derivadas basadas en esos datos (en su totalidad o en parte), a menos que los términos de servicio correspondientes lo permitan.
-
-8.1.2 Si utiliza alguna API para recuperar datos de un usuario de Google, usted acepta y acuerda que solo podrá recuperar datos con el consentimiento explícito del usuario y solo con los fines limitados para los que el usuario le haya otorgado permiso para hacerlo.
-
-9. Finalización del Contrato de licencia
-
-9.1 Este Contrato de licencia tendrá vigencia hasta que lo revoquen usted o Google, como se indica a continuación.
-
-9.2 Si desea rescindir el Contrato de licencia, puede hacerlo al interrumpir el uso que realiza de la Versión preliminar y de las credenciales de desarrollador pertinentes.
-
-9.3 Google puede, en cualquier momento, rescindir el Contrato de licencia, con causa o sin ella, después de notificárselo a usted.
-
-9.4 El Contrato de licencia finalizará automáticamente, sin previo aviso ni acción alguna, tras la primera de las siguientes situaciones:
-(A) cuando Google deje de proporcionar la Versión preliminar o ciertas partes de esta a los usuarios en el país donde usted reside o desde el que utiliza el servicio; y
-(B) cuando Google emita una versión final del SDK de Android.
-
-9.5 Si el Contrato de licencia se rescinde, se revocará la licencia que usted recibió en virtud de dicho contrato; usted deberá suspender inmediatamente todo uso de la Versión preliminar y las disposiciones de los párrafos 10, 11, 12 y 14 seguirán vigentes indefinidamente.
-
-10. EXENCIONES DE RESPONSABILIDAD
-
-10.1 USTED COMPRENDE Y ACEPTA EXPRESAMENTE QUE EL USO QUE REALICE DE LA VERSIÓN PRELIMINAR ES BAJO SU PROPIO RIESGO Y QUE LA VERSIÓN PRELIMINAR SE PROPORCIONA “EN LAS CONDICIONES EN LAS QUE SE ENCUENTRA” Y “SUJETA A DISPONIBILIDAD” SIN GARANTÍAS DE NINGÚN TIPO POR PARTE DE GOOGLE.
-
-10.2 EL USO QUE USTED REALICE DE LA VERSIÓN PRELIMINAR Y DE TODO MATERIAL DESCARGADO U OBTENIDO DE ALGUNA OTRA MANERA MEDIANTE EL USO DE LA VERSIÓN PRELIMINAR ES A SU ENTERO RIESGO Y DISCRECIÓN, Y USTED ES EL ÚNICO RESPONSABLE DE CUALQUIER DAÑO QUE PUDIERA SUFRIR SU SISTEMA INFORMÁTICO U OTRO DISPOSITIVO, O DE LA PÉRDIDA DE DATOS COMO CONSECUENCIA DE DICHO USO. SIN PERJUICIO DE LO MENCIONADO ANTERIORMENTE, USTED COMPRENDE QUE LA VERSIÓN PRELIMINAR NO ES UNA VERSIÓN ESTABLE, Y PUEDE CONTENER ERRORES, DEFECTOS Y VULNERABILIDADES DE SEGURIDAD QUE PUEDEN PROVOCAR DAÑOS SIGNIFICATIVOS, LO QUE INCLUYE LA PÉRDIDA COMPLETA E IRRECUPERABLE DEL USO DE SU SISTEMA INFORMÁTICO U OTRO DISPOSITIVO.
-
-10.3 GOOGLE TAMBIÉN RECHAZA TODAS LAS GARANTÍAS Y CONDICIONES DE CUALQUIER TIPO, EXPRESAS O IMPLÍCITAS, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS Y CONDICIONES DE COMERCIABILIDAD, IDONEIDAD PARA UN FIN DETERMINADO Y NO VIOLACIÓN.
-
-11. LIMITACIÓN DE RESPONSABILIDADES
-
-11.1 USTED COMPRENDE Y ACEPTA EXPRESAMENTE QUE GOOGLE, SUS SUBSIDIARIAS Y FILIALES, Y SUS LICENCIANTES NO SERÁN RESPONSABLES ANTE USTED, EN VIRTUD DE NINGUNA TEORÍA DE RESPONSABILIDAD, POR NINGÚN DAÑO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, RESULTANTE NI PUNITIVO EN EL QUE PODRÍA HABER INCURRIDO, LO QUE INCLUYE LA PÉRDIDA DE DATOS, YA SEA QUE SE LE HAYA NOTIFICADO O NO A GOOGLE O A SUS REPRESENTANTES, O SOBRE CUYA POSIBILIDAD ESTOS DEBERÍAN HABER SABIDO.
-
-12. Indemnización
-
-12.1 Hasta el grado máximo que permita la ley, usted acepta defender, indemnizar y eximir de responsabilidades a Google, sus filiales y sus respectivos directores, funcionarios, empleados y agentes, de todo tipo de reclamo, acción legal y proceso judicial, así como de las pérdidas, responsabilidades, daños, costos y gastos (incluidos los honorarios razonables de abogados) que surjan o se acumulen (a) del uso que usted realiza de la Versión preliminar, (b) de cualquier aplicación que desarrolle en la Versión preliminar que infrinja algún derecho de propiedad intelectual de cualquier persona, o que difame a cualquier persona o viole sus derechos de publicidad o privacidad, y (c) del incumplimiento por su parte del Contrato de licencia.
-
-13. Cambios en el Contrato de licencia
-
-13.1 Google puede realizar cambios en el Contrato de licencia a medida que distribuye nuevas versiones de la Versión preliminar. Cuando se realicen esos cambios, Google emitirá una nueva versión del Contrato de licencia, que estará disponible en el sitio web donde se ponga a la venta la Versión preliminar.
-
-14. Términos legales generales
-
-14.1 El Contrato de licencia constituye el contrato legal integral entre usted y Google, y rige el uso que usted realice de la Versión preliminar (a excepción de los servicios que Google pueda proporcionarle en virtud de un contrato por escrito independiente), y reemplaza totalmente cualquier contrato anterior entre usted y Google en relación con la Versión preliminar.
-
-14.2 Usted acepta que, si Google no ejerce ni impone un derecho o recurso legal especificados en el Contrato de licencia (o sobre el que Google tenga beneficios conforme a cualquier ley aplicable), esto no se considerará una renuncia formal a los derechos por parte de Google y Google aún seguirá recibiendo los beneficios de esos derechos o recursos legales.
-
-14.3 Si algún tribunal judicial con jurisdicción para decidir sobre este asunto determina que alguna de las disposiciones de este Contrato de licencia no es válida, se eliminará esa disposición del Contrato de licencia sin que eso afecte la validez del resto del contrato. Las disposiciones restantes del Contrato de licencia continuarán siendo válidas y aplicables.
-
-14.4 Usted reconoce y acepta que cada miembro del grupo de compañías de las que Google es la compañía central serán terceros beneficiarios del Contrato de licencia, y que esas otras empresas tendrán el derecho de imponer directamente cualquier disposición y ampararse en las disposiciones de este Contrato de licencia que les confieran un beneficio (o que confieran derechos a su favor). Además de esto, ninguna otra persona o compañía serán terceros beneficiarios del Contrato de licencia.
-
-14.5 RESTRICCIONES DE EXPORTACIÓN. LA VERSIÓN PRELIMINAR ESTÁ SUJETA A LAS LEYES Y REGULACIONES DE EXPORTACIÓN DE LOS ESTADOS UNIDOS. DEBE CUMPLIR CON TODAS LAS LEYES Y REGULACIONES DE EXPORTACIÓN NACIONALES E INTERNACIONALES QUE SE APLIQUEN A LA VERSIÓN PRELIMINAR. ESTAS LEYES INCLUYEN RESTRICCIONES EN RELACIÓN CON LOS DESTINOS, USUARIOS FINALES Y USO FINAL.
-
-14.6 Usted no puede asignar ni transferir el Contrato de licencia sin la aprobación previa por escrito de Google y todo intento de asignación sin dicha aprobación no tendrá validez. No podrá delegar sus responsabilidades u obligaciones otorgadas en virtud del Contrato de licencia sin la aprobación previa por escrito de Google.
-
-14.7 El Contrato de licencia y su relación con Google conforme al Contrato de licencia se regirán por las leyes del estado de California, independientemente de los principios de conflictos entre leyes. Usted y Google aceptan presentarse ante la jurisdicción exclusiva de los tribunales del condado de Santa Clara, California, para resolver cualquier asunto legal que pudiera surgir del Contrato de licencia. Sin perjuicio de esto, usted acepta que Google aún podrá aplicar reparaciones conforme a mandato judicial (o a un tipo equivalente de desagravio legal) en cualquier jurisdicción.
-
-
-</div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/es/preview/overview.jd b/docs/html-intl/intl/es/preview/overview.jd
deleted file mode 100644
index 2cd2130..0000000
--- a/docs/html-intl/intl/es/preview/overview.jd
+++ /dev/null
@@ -1,389 +0,0 @@
-page.title=Información general del programa
-page.metaDescription=Bienvenido a Android M Developer Preview, el programa que le brinda todo lo que necesita para probar y optimizar sus aplicaciones para la próxima versión de Android.
-page.image=images/cards/card-preview_16-9_2x.png
-page.tags="preview", "developer", "android"
-
-@jd:body
-
-<div class="cols" style=
-"background-color:#ffebc3; padding: 5px 0;margin-bottom:1em; text-align:center;">
-<h3>
-    Developer Preview 2 is now available
-  </h3>
-
- <ul class="dac-section-links">
-    <li class="dac-section-link">
-      <a href="{@docRoot}preview/support.html#preview2-notes">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Read the Notes</a>
-    </li>
-
-    <li class="dac-section-link">
-      <a href="{@docRoot}preview/support.html#preview2-get">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Get the Update</a>
-    </li>
-
-    <li class="dac-section-link">
-      <a href="https://code.google.com/p/android-developer-preview/">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Report Issues</a>
-    </li>
-  </ul>
-</div>
-
-<p>
-  Bienvenido a <strong>Android M Developer Preview</strong>, el programa que le brinda todo lo que necesita para probar y optimizar sus aplicaciones para la próxima versión de Android.
-
- Es gratis y puede comenzar a utilizarlo ahora mismo. Solo tiene que descargar las herramientas de M Developer Preview.
-
-</p>
-
-<div style="background-color:#eceff1;padding:1em;">
-<div class="wrap">
-  <div class="cols">
-    <div class="col-4of12">
-      <h5>
-        Imágenes del sistema emulador y de hardware
-      </h5>
-
-      <p>
-        Ejecute y pruebe sus aplicaciones en Nexus 5, 6, 9 y Player (para TV), además del emulador.
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        Último código de la plataforma
-      </h5>
-
-      <p>
-        Durante la versión preliminar, ofreceremos múltiples actualizaciones, por lo que usted realizará la prueba comparando los últimos cambios de la plataforma.
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        Actualizaciones vía OTA
-      </h5>
-
-      <p>
-        Luego de actualizar su dispositivo a la versión preliminar inicial, usted podrá obtener actualizaciones por red inalámbrica (over-the-air, OTA).
-
-      </p>
-    </div>
-  </div>
-
-  <div class="cols">
-
-
-    <div class="col-4of12">
-      <h5>
-        Nuevos comportamientos y capacidades
-      </h5>
-
-      <p>
-        Inicie el funcionamiento con anticipación para admitir los comportamientos de la nueva plataforma como el nuevo modelo de permisos de tiempos de ejecución y las opciones de ahorro de energía.
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        Ventana de prioridad para los problemas informados por los desarrolladores
-      </h5>
-
-      <p>
-        Durante las primeras semanas, daremos prioridad a los problemas informados por los desarrolladores; por lo tanto, realice las pruebas y envíe sus comentarios lo antes posible.
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        Comentarios y soporte
-      </h5>
-
-      <p>
-        Infórmenos los problemas y envíenos comentarios a través de nuestro <a href="https://code.google.com/p/android-developer-preview/">seguimiento de problemas</a>.
-        Póngase en contacto con otros desarrolladores de la comunidad <a href="http://g.co/dev/AndroidMDevPreview">M&nbsp;Developer Community</a>.
-
-      </p>
-    </div>
-  </div>
-</div>
-</div>
-
-<!--
-<p>
-  With the M Developer Preview, you'll get an early start on testing your apps,
-  with enough time to make adjustments before the public platform release later
-  in the year. We'll provide several updates to the Preview tools in the weeks
-  ahead, so you can keep in sync with the latest changes as the platform moves
-  toward launch.
-</p>
-<img src="{@docRoot}preview/images/m-preview-timeline.png" alt=
-"Preview program timeline" id="timeline">
-<p>
-  You can help us improve the platform by <a href=
-  "https://code.google.com/p/android-developer-preview/">reporting issues</a>
-  through our feedback channels. This is especially
-  critical in the first month of the preview, when we’ll be giving priority to
-  developer-reported issues and feedback.
-</p> -->
-
-
-<h2 id="timeline">
-  Escala de tiempo y actualizaciones
-</h2>
-<img src="{@docRoot}preview/images/m-preview-timeline-crop.png" alt="Preview program timeline" id="timeline">
-<p>
-  M Developer Preview estará disponible a partir del 28 de mayo hasta la versión final del SDK de Android M, que lanzaremos al poco tiempo del lanzamiento público durante el tercer trimestre de 2015.
-
-
-</p>
-
-<p>
-  En momentos clave del desarrollo, lanzaremos actualizaciones para sus dispositivos de prueba.
-  Los momentos clave tentativos son los siguientes:
-</p>
-
-<ul>
-  <li>
-    <strong>Preview&nbsp;1</strong> (lanzamiento inicial de la versión preliminar, fines de mayo)
-  </li>
-
-  <li>
-    <strong>Preview&nbsp;2</strong> (fines de junio, comienzos de julio)
-  </li>
-
-  <li>
-    <strong>Preview&nbsp;3</strong> (casi la versión final, a fines de julio)
-  </li>
-</ul>
-
-<p>
-  Estas actualizaciones terminan con el <strong>SDK final</strong> (más adelante durante el tercer trimestre), lo que proporcionará tanto las API oficiales para la nueva versión de Android como los comportamientos y las características finales del sistema.
-
-
-</p>
-
-<p>
-  A medida que usted prueba y desarrolla en Android M, le recomendamos que <strong>mantenga su entorno de desarrollo actualizado</strong> a medida que se lanzan las actualizaciones de la versión preliminar.
-
-  Para que el proceso sea más fácil, lanzaremos <strong>actualizaciones OTA</strong> para los dispositivos que ya hayan sido actualizados a una compilación de la versión preliminar y brindaremos imágenes del sistema que puede descargar y actualizar manualmente.
-
-
-</p>
-<p class="note">
-  <strong>Nota:</strong> El SDK final y las imágenes del sistema no se pueden proporcionar vía OTA y deberán <strong>actualizarse manualmente</strong> en sus dispositivos de prueba.</strong>
-
-
-</p>
-
-<p>
-  Le informaremos cuando las actualizaciones de la versión preliminar se encuentren disponibles a través del blog de Android para desarrolladores (<a href="http://android-developers.blogspot.com/">Android Developers Blog</a>), de este sitio y de la comunidad de desarrolladores <a href="http://g.co/dev/AndroidMDevPreview">Android M Developer Community</a>.
-
-
-</p>
-
-<h2 id="preview_tools">
-  ¿Qué ofrece la versión preliminar?
-</h2>
-
-<p>
-  M Developer Preview incluye todo lo que necesita para probar sus aplicaciones actuales en una variedad de tamaños de pantalla, de tecnologías de redes, de conjuntos de chip CPU/GPU y de arquitecturas de hardware.
-
-
-</p>
-
-<h4>
-  Herramientas del SDK
-</h4>
-
-<p>
-  Estos componentes se pueden descargar mediante SDK Manager en <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a>:
-</p>
-
-<ul>
-  <li><strong>Herramientas del SDK</strong> de M Developer Preview
-  </li>
-
-  <li><strong>Imagen del sistema emulador</strong> (32-bit y 64-bit) de M Developer Preview
-
-  </li>
-
-  <li><strong>Imagen del sistema emulador para Android TV</strong> (32-bit) de M Developer Preview
-
-  </li>
-</ul>
-
-<h4>
-  Imágenes del sistema de hardware
-</h4>
-
-<p>
-  Puede descargar estas imágenes del sistema de hardware para dispositivos Nexus desde la <a href="download.html">página de Descargas</a>:
-
-</p>
-
-<ul>
-  <li>
-    <strong>Nexus 5</strong> (GSM/LTE) imagen del sistema del dispositivo “hammerhead”
-  </li>
-
-  <li>
-    <strong>Nexus 6</strong> imagen del sistema del dispositivo “shamu”
-  </li>
-
-  <li>
-    <strong>Nexus 9</strong> (Wi-Fi) imagen del sistema del dispositivo “volantis”
-  </li>
-
-  <li>
-    <strong>Nexus Player</strong> (Android TV) imagen del sistema del dispositivo “fugu”
-  </li>
-</ul>
-
-<h4>
-  Documentación y código de muestra
-</h4>
-
-<p>
-  Estos recursos de documentación lo ayudan a obtener información sobre la versión preliminar:
-</p>
-
-<ul>
-  <li>
-    <a href="setup-sdk.html">Configurar el SDK</a>: contiene instrucciones paso a paso para comenzar.
-
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/testing/guide.html">Guía de prueba</a> y <a href="behavior-changes.html">Cambios en los comportamientos</a>: le indican las áreas más importantes que debe probar.
-  </li>
-
-  <li>Documentación sobre las nuevas API, lo que incluye <a href="api-overview.html">Información general de la API</a>, <a href="{@docRoot}preview/download.html#docs">Referencia de la API</a> que se puede descargar y guías detalladas para desarrolladores sobre características clave como <a href="{@docRoot}preview/features/runtime-permissions.html">permisos</a>, <a href="{@docRoot}preview/backup/index.html">copias de seguridad de la aplicación</a>, entre otras.
-
-
-
-
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/samples.html">Código de ejemplo</a>: indica cómo admitir permisos y otras características nuevas.
-
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/support.html#release-notes">Notas de la versión</a> para la versión actual de M Developer Preview, lo que incluye notas sobre los cambios e informes de diferencias.
-
-  </li>
-</ul>
-
-<h4>
-  Recursos de soporte
-</h4>
-
-<p>
-  Utilice los siguientes recursos de soporte durante el proceso de prueba y desarrollo en M Developer Preview:
-
-</p>
-
-<ul>
-  <li><a href="https://code.google.com/p/android-developer-preview/">El seguimiento de problemas de M Developer Preview</a> es su<strong> canal principal de comentarios.</strong>
-
- A través de este seguimiento de problemas, usted puede informarnos errores o problemas de rendimiento, y enviarnos comentarios generales.
- También puede buscar <a href="https://code.google.com/p/android-developer-preview/wiki/KnownIssues">problemas recurrentes</a> y encontrar soluciones alternativas detalladas.
-
-  </li>
-
-  <li><a href="http://g.co/dev/AndroidMDevPreview">Android M Developer Community</a> es una comunidad en Google+ donde usted puede <strong>contactarse con otros desarrolladores</strong> que estén trabajando con Android M. Puede compartir comentarios o ideas, o encontrar respuestas a sus dudas sobre Android M.
-
-
-
-  </li>
-</ul>
-
-
-<h2 id="preview_apis_and_publishing">
-  Selección del destino, API preliminares y publicación
-</h2>
-
-<p>
-  Android M Developer Preview es una versión solo para desarrollo y <strong>no tiene un nivel de API estándar</strong>.
- Si quiere darse de baja de los comportamientos de compatibilidad para probar su aplicación (lo que es muy recomendado), puede elegir como destino M Developer Preview estableciendo <code><a href=
-  "/guide/topics/manifest/uses-sdk-element.html">targetSdkVersion</a></code> de su aplicación como <code>“MNC”</code>.
-
-
-
-</p>
-
-<p>
-  Android M Developer Preview ofrece <strong>API preliminares</strong>
- &mdash; las API no serán oficiales hasta que se lance el SDK final, lo que actualmente está planeado para el tercer trimestre de 2015.
- Esto quiere decir que surgirán <strong>cambios menores en la API</strong> con el tiempo, particularmente durante las primeras semanas del programa.
-
- Con cada actualización de Android M Developer Preview, proporcionaremos un resumen con los cambios realizados.
-
-</p>
-
-<p class="note">
-  Tenga en cuenta que aunque las API preliminares pueden modificarse, los comportamientos del sistema subyacente, como los permisos de tiempo de ejecución y las opciones de ahorro de energía, se mantienen estables y disponibles para cualquier prueba inmediata.
-
-
-</p>
-
-<p>
-  En cuanto a la publicación, Google Play <strong>no permite que se publiquen aplicaciones que tienen como destino M Developer Preview</strong>.
- Una vez que el SDK final de Android M esté disponible, podrá seleccionar como destino el nivel de API oficial de Android M y publicar su aplicación en Google Play.
-
- Mientras tanto, si desea distribuir una aplicación con Android M como destino a otros evaluadores, lo puede hacer por correo electrónico o mediante descarga directa desde su sitio.
-
-
-</p>
-
-<h2 id="get_started">
-  ¿Cómo comenzar?
-</h2>
-
-<p>
-  Para comenzar a probar su aplicación:
-</p>
-
-<ol>
-  <li>Revise el artículo <a href="{@docRoot}preview/api-overview.html">Información general de la API</a> y <a href="{@docRoot}preview/behavior-changes.html">Cambios en los comportamientos</a> para obtener una idea sobre las novedades y cómo estas pueden afectar sus aplicaciones.
-
- En especial, infórmese sobre el nuevo modelo de <a href="{@docRoot}preview/features/runtime-permissions.html">permisos de tiempo de ejecución</a>, las opciones de ahorro de energía y las copias de seguridad automáticas.
-
-
-  </li>
-
-  <li>Configure su entorno siguiendo las instrucciones para <a href="{@docRoot}preview/setup-sdk.html">Configurar el SDK de la versión preliminar</a> y configurar los dispositivos de prueba.
-
-
-  </li>
-
-  <li>Siga las <a href="https://developers.google.com/android/nexus/images">instrucciones de actualización</a> para actualizar la última imagen del sistema del desarrollador de Android M para Nexus 5, 6, 9 y Player.
-
- Cuando haya actualizado su dispositivo de desarrollo, recibirá las actualizaciones de la versión preliminar mediante actualizaciones OTA.</a>
-
-  </li>
-
-  <li>Descargue la <a href="{@docRoot}preview/download.html#docs">Referencia de la API de M Preview</a> y los <a href="{@docRoot}preview/samples.html">Ejemplos de M Preview</a> para obtener más información sobre las nuevas características de la API y sobre cómo utilizarlas en su aplicación.
-
-
-
-  </li>
-
-  <li>Únase a la comunidad <a href="http://g.co/dev/AndroidMDevPreview">Android M Developer Community</a> para recibir las últimas noticias y para contactarse con otros desarrolladores que estén trabajando con la nueva plataforma.
-
-
-  </li>
-</ol>
-
-<p>
-  ¡Agradecemos su participación en el programa Android M Developer Preview!
-</p>
diff --git a/docs/html-intl/intl/es/preview/samples.jd b/docs/html-intl/intl/es/preview/samples.jd
deleted file mode 100644
index 03f41e4..0000000
--- a/docs/html-intl/intl/es/preview/samples.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Ejemplos
-page.image=images/cards/samples-new_2x.png
-@jd:body
-
-<p>
-  Los siguientes códigos de ejemplo se proporcionan para M Developer Preview. Para descargar los ejemplos en Android Studio, seleccione la opción del menú <b>File &gt; Import Samples</b>.
-
-</p>
-
-<p class="note">
-  <strong>Nota:</strong> Estos proyectos que se pueden descargar están diseñados para usarlos con Gradle y Android Studio.
-
-</p>
-
-
-<h3 id="RuntimePermissions">Permisos de tiempo de ejecución</h3>
-
-<p>
- Android M modifica la manera en que funcionan los permisos del sistema. Los usuarios deben aprobar solicitudes de permiso durante la ejecución, en lugar de durante la instalación.
- Este ejemplo muestra cómo solicitar estos permisos.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-RuntimePermissions">Obtener en GitHub</a></p>
-
-<h3 id="ConfirmCredentials">Confirmar credencial</h3>
-
-<p>
- Este ejemplo muestra cómo usar las credenciales del dispositivo como método de autenticación en su aplicación.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ConfirmCredential">Obtener en GitHub</a>
-</p>
-
-<h3 id="FingerprintDialog">Diálogo de huellas dactilares</h3>
-
-<p>
- Este ejemplo muestra cómo reconocer huellas dactilares registradas para autenticar al usuario en su aplicación.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-FingerprintDialog">Obtener en GitHub</a></p>
-
-<h3 id="AutomaticBackup">Copia de seguridad automática para aplicaciones</h3>
-
-<p>
- Android M incorpora la copia de seguridad automática para las configuraciones de la aplicación. Este ejemplo muestra cómo agregar reglas de filtrado en una aplicación para administrar la copia de seguridad de las configuraciones.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-AutoBackupForApps">Obtener en GitHub</a></p>
-
-<h3 id="CameraRaw">Camera 2 Raw</h3>
-
-<p>
-  Muestra cómo usar la API <code>Camera2</code> para capturar imágenes fotográficas RAW y guardarlas como archivos <code>DNG</code>.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-Camera2Raw">Obtener en GitHub</a></p>
-
-<h3 id="ActiveNotification">Notificación activa</h3>
-
-<p>
-  Este ejemplo muestra cómo <a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a> puede indicarle cuántas notificaciones está mostrando actualmente su aplicación.
-
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ActiveNotifications">Obtener en GitHub</a></p>
diff --git a/docs/html-intl/intl/es/preview/setup-sdk.jd b/docs/html-intl/intl/es/preview/setup-sdk.jd
deleted file mode 100644
index e3f400f..0000000
--- a/docs/html-intl/intl/es/preview/setup-sdk.jd
+++ /dev/null
@@ -1,207 +0,0 @@
-page.title=Configurar el SDK de la versión preliminar
-page.image=images/cards/card-set-up_16-9_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Contenido del documento</h2>
-      <ol>
-        <li><a href="#get-as13">Obtener Android Studio 1.3</a></li>
-        <li><a href="#get-sdk">Obtener el SDK de la versión preliminar</a></li>
-        <li><a href="#create-update">Crear o actualizar un proyecto</a></li>
-        <li><a href="#setup-test">Configurar para realizar pruebas</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>M Developer Preview SDK se encuentra disponible desde Android SDK Manager. En este documento, se asume que usted está familiarizado con el desarrollo de aplicaciones de Android, como el uso de Android SDK Manager y la creación de proyectos.
-
- Si no está familiarizado con Android, consulte primero la sección de capacitación <a href="{@docRoot}training/basics/firstapp/index.html">Desarrollo de su primera aplicación</a>.</a>
-
-</p>
-
-<h2 id="get-as13">Obtener Android Studio 1.3</h2>
-
-<p>La versión preliminar para desarrolladores funciona mejor con Android Studio 1.3, que es una versión preliminar.
- Se recomienda que instale la versión preliminar de Android Studio 1.3 para trabajar con el SDK de la versión preliminar.
-</p>
-
-<p class="caution"><strong>Advertencia:</strong> La versión preliminar Canary de Android Studio 1.3 aún se encuentra en desarrollo activo.
- Si utiliza su equipo de desarrollo principal para probar la versión preliminar para desarrolladores, puede instalar una segunda instancia de Android para realizar las pruebas.
-
-</p>
-
-<p>Para instalar la versión preliminar de Android Studio 1.3:</p>
-
-<ol>
-  <li>Descargue y ejecute <a href="{@docRoot}tools/studio/index.html">Android Studio</a>
-
-  </li>
-
-  <li>Abra la ventana <strong>Settings</strong> (en Windows, puede hacerlo desde <strong>File &gt; Settings</strong>).
- Seleccione el panel <strong>Appearance &amp; Behavior &gt; System  Settings &gt; Updates</strong>.
-
-
-
-    <p class="aside">En OSX, puede encontrar el panel <strong>Appearance &amp; Behavior</strong> en la ventana <strong>Preferences</strong> de Android Studio.
-
-</p>
-  </li>
-
-  <li> En el panel <strong>Updates</strong>, elija la opción <strong>Automatically check updates for:
- Canary Channel</strong>.
-  </li>
-
-  <li>En el panel <strong>Updates</strong>, elija <strong>Check Now</strong> para verificar la última compilación de Canary.
- Descargue e instale la compilación cuando se lo pida.
-
-  </li>
-</ol>
-
-<h2 id="get-sdk">Obtener el SDK de la versión preliminar</h2>
-
-<p>Para añadir los componentes del SDK de la versión preliminar a su entorno de desarrollo:</p>
-
-<ol>
-  <li>Ejecute la versión preliminar de Android Studio 1.3.
-  </li>
-
-  <li>Abra la ventana <strong>Settings</strong> (en Windows, puede hacerlo desde <strong>File &gt; Settings</strong>).
- Seleccione el panel <strong>Appearance &amp; Behavior &gt; System  Settings &gt; Updates</strong>.
-
-
-
-    <p class="aside">En OSX, puede encontrar el panel <strong>Appearance &amp; Behavior</strong> en la ventana <strong>Preferences</strong> de Android Studio.
-
-</p>
-  </li>
-
-  <li>En el panel <strong>Updates</strong>, elija las opciones <strong>Automatically check updates for:
- Canary Channel</strong> y <strong>Automatically check updates for Android SDK:
- Preview Channel</strong>.
-  </li>
-
-  <li>Ejecute <strong>Android SDK Manager</strong>. (En Android Studio 1.3, SDK Manager está integrado a Android Studio, en lugar de ser una aplicación independiente).
-
-
-  </li>
-
-  <li>En la sección <strong>Platforms</strong>, elija <strong>Android MNC Preview</strong>.
-
-  </li>
-
-  <li>En la sección <strong>Tools</strong>, elija las últimas <strong>SDK Tools</strong>, <strong>Platform-tools</strong> y <strong>Build-tools</strong> de Android.
-
-
-  </li>
-
-  <li>Seleccione <strong>Install packages</strong> y acepte el contrato de licencia para todos los paquetes.
-
-  </li>
-
-  <li>Verifique que M Developer Preview esté instalado; para hacerlo, abra la ventana <strong>Settings</strong> y elija el panel <strong>Appearance &amp; Behavior &gt; System Settings &gt; Android SDK</strong>.
-
-</li>
-
-  <li>En el panel <strong>Android SDK</strong>, elija la pestaña <strong>SDK Platforms</strong>.
- <strong>Android MNC Preview</strong> deberá figurar como <em>Installed</em>.
- Luego, abra la pestaña <strong>SDK Tools</strong> para verificar que estén instaladas las últimas herramientas.
-
-
-  </li>
-</ol>
-<p>Después de completar estos pasos, los componentes de la versión preliminar ya estarán disponibles en su entorno de desarrollo.
- </p>
-
-
-<h2 id="create-update">Crear o actualizar un proyecto</h2>
-
-<p>
-  Si desea utilizar las API de la versión preliminar, debe crear o actualizar un proyecto de desarrollo para utilizar los componentes de la versión preliminar.
-
-</p>
-
-
-<h3 id="create">Crear un proyecto nuevo</h3>
-
-<p>
-  Recomendamos que utilice Android Studio para crear un proyecto con la versión preliminar. Siga los pasos que se describen en <a href="{@docRoot}sdk/installing/create-project.html">Crear un proyecto</a> hasta que llegue a la pantalla <em>Form Factors</em> en el asistente.
-
- Luego, realice los siguientes pasos para crear un proyecto configurado para la versión preliminar.
-
-</p>
-
-<ul>
-  <li>Seleccione <strong>Phone and Tablet</strong>.</li>
-  <li>Seleccione <strong>MNC: Android M (Preview)</strong> en <strong>Minimum SDK</strong>.
-</li>
-</ul>
-
-
-<h3 id="update">Actualizar un proyecto existente</h3>
-
-<p>
-  Para proyectos existentes, debe modificar la configuración del proyecto para habilitar las API de la versión preliminar. En su entorno de desarrollo, abra el archivo 
-<code>build.gradle</code> para su módulo y configure estos valores de la siguiente manera:
-
-</p>
-
-<ul>
-  <li><code>compileSdkVersion</code> se configura en <code>'android-MNC'</code></li>
-  <li><code>minSdkVersion</code> se configura en <code>'MNC'</code></li>
-  <li><code>targetSdkVersion</code> se configura en <code>'MNC'</code></li>
-</ul>
-
-
-<h2 id="setup-test">Configurar para realizar pruebas</h2>
-
-<p>
-  Probar una aplicación con la versión preliminar requiere un dispositivo o un dispositivo virtual configurado con la versión preliminar de la plataforma.
- Si tiene un dispositivo compatible, puede instalar la plataforma de la versión preliminar para realizar la prueba.
- De lo contrario, puede configurar un dispositivo virtual para realizar la prueba.
-</p>
-
-<h3 id="setup-device">Configurar un dispositivo físico</h3>
-
-<p>
-  Si tiene un Nexus 5, Nexus 6, Nexus 9 o Android TV, puede instalar una imagen de sistema de la versión preliminar en estos dispositivos para probar su aplicación. Con la herramienta Android Virtual Device Manager, puede configurar un dispositivo virtual con la versión preliminar de la plataforma desde Android Studio 
-
-
-
-</p>
-
-<p class="caution">
-  <strong>Importante:</strong> El proceso de instalación de una imagen preliminar en un dispositivo <em>elimina todos los datos del dispositivo</em>, por lo que debe hacer una copia de seguridad de los datos antes de instalar una imagen preliminar.
-
-</p>
-
-<h3 id="setupAVD">Configurar un dispositivo virtual</h3>
-
-<p>
-  Con la herramienta Android Virtual Device, puede configurar un dispositivo virtual para la versión preliminar de la plataforma desde Android Studio.
-
-</p>
-
-<p>Crear un AVD (dispositivo virtual de Android) con AVD Manager:</p>
-
-<ol>
-  <li>Instale el SDK de la versión preliminar en su entorno de desarrollo, como se detalla en <a href="{@docRoot}preview/setup-sdk.html">Configurar el SDK de la versión preliminar</a>.
-
-</li>
-  <li>Siga los pasos en <a href="{@docRoot}tools/devices/managing-avds.html">Administración de los ADV con ADV Manager</a>.
-
- Utilice las siguientes configuraciones:
-    <ul>
-      <li><strong>Dispositivo:</strong> Nexus 5, Nexus 6, Nexus 9 o Android TV</li>
-      <li><strong>Destino:</strong>
-       Android M (versión preliminar) - Nivel de API M</li>
-      <li><strong>ABI:</strong> x86</li>
-    </ul>
-  </li>
-</ol>
-
-<p>
-  Para obtener más información sobre cómo crear dispositivos virtuales para realizar pruebas, consulte <a href="{@docRoot}tools/devices/index.html">Administración de dispositivos virtuales.</a>
-</p>
diff --git a/docs/html-intl/intl/es/preview/testing/guide.jd b/docs/html-intl/intl/es/preview/testing/guide.jd
deleted file mode 100644
index 138d6ca..0000000
--- a/docs/html-intl/intl/es/preview/testing/guide.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=Guía de prueba
-page.image=images/cards/card-build_16x9_2x.png
-page.keywords=recursos de la versión preliminar,androidm,pruebas,permisos
-
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Contenido del documento</h2>
-      <ol>
-        <li><a href="#runtime-permissions">Prueba de los permisos</a></li>
-        <li><a href="#doze-standby">Prueba de los modos Doze y App Standby</a></li>
-        <li><a href="#ids">Copia de seguridad automática e identificadores de dispositivos</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  Android M Developer Preview le brinda la oportunidad de garantizar que sus aplicaciones funcionen con la próxima versión de la plataforma.
- Esta versión preliminar incluye diversas API y cambios en los comportamientos que pueden tener impactos en su aplicación, como se describe en las secciones <a href="{@docRoot}preview/api-overview.html">Información general de la API</a> y <a href="{@docRoot}preview/behavior-changes.html">Cambios en los comportamientos</a>.
-
- Al probar su aplicación con la versión preliminar, se debe centrar en algunos cambios específicos del sistema para garantizar que los usuarios disfruten de una buena experiencia.
-
-
-</p>
-
-<p>
-  En esta guía, se describen qué y cómo probar las características preliminares con su aplicación. Debe priorizar la prueba de estas características específicas preliminares, puesto que podrían tener un alto impacto en el comportamiento de su aplicación:
-
-
-</p>
-
-<ul>
-  <li><a href="#runtime-permissions">Permisos</a>
-  </li>
-  <li><a href="#doze-standby">Modos Doze y App Standby</a>
-  </li>
-  <li><a href="#ids">Copia de seguridad automática e identificadores de dispositivos</a></li>
-</ul>
-
-<p>
-  Para obtener más información sobre cómo configurar dispositivos o dispositivos virtuales con una imagen del sistema de la versión preliminar para realizar pruebas, consulte la sección <a href="{@docRoot}preview/setup-sdk.html">Configurar el SDK de la versión preliminar</a>.
-
-</p>
-
-
-<h2 id="runtime-permissions">Prueba de los permisos</h2>
-
-<p>
-  El nuevo modelo de <a href="{@docRoot}preview/features/runtime-permissions.html">permisos</a> cambia el modo en que el usuario asigna permisos a su aplicación.
- En lugar de conceder todos los permisos durante el procedimiento de instalación, su aplicación debe solicitar al usuario los permisos individuales en el tiempo de ejecución.
-
- Para los usuarios, este comportamiento ofrece más control granular sobre las actividades de cada aplicación, así como un mejor contexto para comprender por qué la aplicación está solicitando un permiso específico.
- Los usuarios pueden conceder o revocar los permisos concedidos a una aplicación de forma individual en cualquier momento.
- Es muy probable que esta característica de la versión preliminar tenga un impacto en el comportamiento de su aplicación y puede hacer que algunas características de su aplicación no funcionen o funcionen en un estado degradado.
-
-
-</p>
-
-<p class="caution">
-  Este cambio afecta a todas las aplicaciones que se ejecutan en la nueva plataforma, incluso a aquellas que no tienen como destino la nueva versión de la plataforma.
- La plataforma ofrece un comportamiento de compatibilidad limitada para las aplicaciones heredadas, pero usted debe comenzar a planificar ahora la migración de su aplicación al nuevo modelo de permisos, con el objetivo de publicar una versión actualizada de su aplicación cuando se lance la plataforma oficial.
-
-
-</p>
-
-
-<h3 id="permission-test-tips">Consejos para pruebas</h3>
-
-<p>
-  Use los siguientes consejos para pruebas como ayuda para planificar y ejecutar las pruebas de su aplicación con el nuevo comportamiento de permisos.
-
-</p>
-
-<ul>
-  <li>Identifique los permisos actuales de su aplicación y las rutas de códigos relacionadas.</li>
-  <li>Pruebe los flujos del usuario en los datos y servicios protegidos por permisos.</li>
-  <li>Realice pruebas con varias combinaciones de permisos concedidos/revocados.</li>
-  <li>Use la herramienta {@code adb} para administrar permisos desde la línea de comando:
-    <ul>
-      <li>Enumere los permisos y estados por grupo:
-        <pre>adb shell pm list permissions -d -g</pre>
-      </li>
-      <li>Conceda o revoque un permiso o más permisos utilizando la siguiente sintaxis:<br>
-        <pre>adb shell pm [grant|revoke] &lt;permission.name&gt; ...</pre>
-      </li>
-    </ul>
-  </li>
-  <li>Analice su aplicación para detectar servicios que utilizan permisos.</li>
-</ul>
-
-<h3 id="permission-test-strategy">Estrategia de prueba</h3>
-
-<p>
-  El cambio en los permisos afecta la estructura y el diseño de su aplicación, además de la experiencia del usuario y los flujos que usted proporciona a los usuarios.
- Debe evaluar el uso de los permisos actuales de su aplicación y comenzar a planificar los nuevos flujos que desea ofrecer.
- La versión oficial de la plataforma proporciona un comportamiento de compatibilidad, pero debe prever la actualización de su aplicación y no depender de estos comportamientos.
-
-
-</p>
-
-<p>
-  Identifique los permisos que su aplicación verdaderamente necesita y utiliza, y luego busque las diversas rutas de códigos que utilizan los servicios protegidos por permisos.
- Puede realizar esto mediante una combinación de pruebas en la plataforma nueva y análisis de códigos.
- Al realizar las pruebas, debe centrarse en incluir permisos de tiempo de ejecución cambiando {@code targetSdkVersion} de la aplicación a la versión preliminar.
- Para obtener más información, consulte la sección <a href="{@docRoot}preview/setup-sdk.html#">Configurar el SDK de la versión preliminar</a>.
-
-</p>
-
-<p>
-  Realice pruebas con diversas combinaciones de permisos revocados y agregados, a fin de destacar los flujos del usuario que dependen de permisos.
- Cuando una dependencia no sea obvia ni lógica, debe considerar la opción de refactorizar o compartimentar ese flujo para eliminar la dependencia o aclarar por qué se necesita el permiso.
-
-
-</p>
-
-<p>
-  Para obtener más información sobre el comportamiento de los permisos de tiempo de ejecución, las pruebas y las mejores prácticas, consulte la página <a href="{@docRoot}preview/features/runtime-permissions.html">Permisos</a> de la versión preliminar para desarrolladores.
-
-
-</p>
-
-
-<h2 id="doze-standby">Prueba de los modos Doze y App Standby</h2>
-
-<p>
-  Las características de ahorro de energía de los modos Doze y App Standby limitan la cantidad de procesamiento en segundo plano que puede realizar su aplicación cuando un dispositivo se encuentra en estado inactivo o mientras su aplicación no está en foco.
- Entre las restricciones que el sistema puede imponer en las aplicaciones se incluyen el acceso limitado a la red o denegación de acceso, suspensión de las tareas en segundo plano, suspensión de notificaciones, y alarmas y solicitudes de reactivación ignoradas.
-
- Para garantizar que su aplicación tenga un comportamiento correcto con estas optimizaciones de ahorro de energía, debe probar su aplicación simulando estos estados de bajo consumo.
-
-
-</p>
-
-<h4 id="doze">Cómo probar la aplicación en modo Doze</h4>
-
-<p>Para probar el modo Doze con su aplicación, realice lo siguiente:</p>
-
-<ol>
-<li>Configure un dispositivo de hardware o un dispositivo virtual con una imagen del sistema de la versión preliminar de Android M.</li>
-<li>Conecte el dispositivo a su equipo de desarrollo e instale la aplicación.</li>
-<li>Ejecute su aplicación y déjela activa.</li>
-<li>Simule la activación del modo Doze en el dispositivo ejecutando los siguientes comandos:
-
-<pre>
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-
-  </li>
-  <li>Observe el comportamiento de su aplicación cuando se reactive el dispositivo. Asegúrese de que se recupere correctamente cuando el dispositivo salga del modo Doze.
-</li>
-</ol>
-
-
-<h4 id="standby">Cómo probar aplicaciones en modo App Standby</h4>
-
-<p>Para probar el modo App Standby con su aplicación, realice lo siguiente:</p>
-
-<ol>
-  <li>Configure un dispositivo de hardware o un dispositivo virtual con una imagen del sistema de la versión preliminar de Android M.</li>
-  <li>Conecte el dispositivo a su equipo de desarrollo e instale su aplicación.</li>
-  <li>Ejecute su aplicación y déjela activa.</li>
-  <li>Simule la activación del modo App Standby en la aplicación ejecutando los siguientes comandos:
-
-<pre>
-$ adb shell am broadcast -a android.os.action.DISCHARGING
-$ adb shell am set-idle &lt;packageName&gt; true
-</pre>
-
-  </li>
-  <li>Simule la activación de su aplicación con el siguiente comando:
-    <pre>$ adb shell am set-idle &lt;packageName&gt; false</pre>
-  </li>
-  <li>Observe el comportamiento de su aplicación al reactivarse. Asegúrese de que se recupere correctamente del modo App Standby.
- En particular, debe comprobar si los trabajos en segundo plano y las notificaciones de su aplicación continúan funcionando de la manera esperada.
-</li>
-</ol>
-
-<h2 id="ids">Copia de seguridad automática para aplicaciones e identificadores específicos del dispositivo</h2>
-
-<p>Si su aplicación continúa teniendo algún identificador específico del dispositivo, como la Id. de registro de Google Cloud Messaging, en el almacenamiento interno, asegúrese de seguir las mejores prácticas para excluir la ubicación de almacenamiento de la copia de seguridad automática, como se describe en la sección <a href="{@docRoot}preview/backup/index.html">Copia de seguridad automática para aplicaciones</a>.
-
-
-
- </p>
diff --git a/docs/html-intl/intl/es/preview/testing/performance.jd b/docs/html-intl/intl/es/preview/testing/performance.jd
deleted file mode 100644
index 7346976..0000000
--- a/docs/html-intl/intl/es/preview/testing/performance.jd
+++ /dev/null
@@ -1,656 +0,0 @@
-page.title=Prueba de rendimiento de video
-page.image=images/cards/card-test-performance_2x.png
-page.keywords=rendimiento, fotogramas por segundo, herramientas
-
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Contenido del documento</h2>
-      <ol>
-        <li><a href="#measure">Medición del rendimiento de la UI</a>
-          <ul>
-            <li><a href="#aggregate">Incorporación de Frame Stats</a></li>
-            <li><a href="#timing-info">Información precisa del intervalo del fotograma</a></li>
-            <li><a href="#timing-dump">Volcado simple del intervalo del fotograma</a></li>
-            <li><a href="#collection-window">Control del período de recopilación de datos</a></li>
-            <li><a href="#diagnose">Diagnóstico de regresiones de rendimiento</a></li>
-            <li><a href="#resources">Recursos adicionales</a></li>
-          </ul>
-        </li>
-        <li><a href="#automate">Automatización de las pruebas de rendimiento de la UI</a>
-          <ul>
-            <li><a href="#ui-tests">Configuración de las pruebas de UI</a></li>
-            <li><a href="#automated-tests">Configuración de las pruebas automatizadas de UI</a></li>
-            <li><a href="#triage">Clasificación y solución de problemas detectados</a></li>
-          </ul>
-        </li>
-      </ol>
-  </div>
-</div>
-
-
-<p>
-  La prueba de rendimiento de la UI le garantiza que su aplicación no solo cumpla con los requisitos funcionales sino que la interacción del usuario con su aplicación sea fluida y funcione constantemente a 60 fotogramas por segundo (<a href="https://www.youtube.com/watch?v=CaMTIgxCSqU&amp;index=25&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">Why 60fps?</a>) sin disminuir o retrasar fotogramas (lo que llamamos <em>“jank”</em>).
-
-
- Este documento explica las herramientas disponibles para medir el rendimiento de la UI y establece un enfoque para integrar las medidas de rendimiento de la UI en sus prácticas de prueba.
-
-
-</p>
-
-
-<h2 id="measure">Medición del rendimiento de la UI</h2>
-
-<p>
-  Para mejorar el rendimiento, primero necesita poder medir el rendimiento de su sistema y, luego, diagnosticar e identificar los problemas que puedan surgir debido a las varias secciones de su canalización.
-
-
-</p>
-
-<p>
-  <em><a href="https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></em> es una herramienta de Android que se ejecuta en el dispositivo y vuelca información útil sobre el estado de los servicios del sistema.
-
- Al pasar el comando <em>gxinfo</em> a dumsys, se obtiene una salida de logcat con información de rendimiento en relación con los fotogramas de animación que ocurren durante la fase de grabado.
-
-
-</p>
-
-<pre>
-&gt; adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt;
-</pre>
-
-<p>
-  Este comando puede crear múltiples variantes diferentes de datos del intervalo del fotograma.
-</p>
-
-<h3 id="aggregate">Incorporación de Frame Stats</h3>
-
-<p>
-  En la versión preliminar de Android M, el comando emite un análisis adicional a logcat sobre los datos del fotograma. Estos datos se recopilan en toda la duración del proceso.
- Por ejemplo:
-</p>
-
-<pre class="noprettyprint">
-Stats since: 752958278148ns
-Total frames rendered: 82189
-Janky frames: 35335 (42.99%)
-90th percentile: 34ms
-95th percentile: 42ms
-99th percentile: 69ms
-Number Missed Vsync: 4706
-Number High input latency: 142
-Number Slow UI thread: 17270
-Number Slow bitmap uploads: 1542
-Number Slow draw: 23342
-</pre>
-
-<p>
-  Estas estadísticas de alto nivel representan, en un nivel avanzado, el rendimiento de representación de la aplicación y su estabilidad en muchos fotogramas.
-
-</p>
-
-
-<h3 id="timing-info">Información precisa del intervalo del fotograma</h3>
-
-<p>
-  La versión preliminar de Android M ofrece un nuevo comando para gfxinfo, es <em>framestats</em> que brinda información extremadamente detallada sobre el intervalo del fotograma reciente, de manera que usted puede localizar y depurar errores de manera más precisa.
-
-
-</p>
-
-<pre>
-&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; framestats
-</pre>
-
-<p>
-  Este comando emite información sobre el intervalo del fotograma, medida en nanosegundos, de los últimos 120 fotogramas que produjo la aplicación. A continuación, se muestra un ejemplo sin formato de adb dumpsys gxinfo &lt;PACKAGE_NAME&gt; framestats:
-
-
-</p>
-
-<pre class="noprettyprint">
-0,49762224585003,49762241251670,9223372036854775807,0,49762257627204,49762257646058,49762257969704,49762258002100,49762265541631,49762273951162,49762300914808,49762303675954,
-0,49762445152142,49762445152142,9223372036854775807,0,49762446678818,49762446705589,49762447268818,49762447388037,49762453551527,49762457134131,49762474889027,49762476150120,
-0,49762462118845,49762462118845,9223372036854775807,0,49762462595381,49762462619287,49762462919964,49762462968454,49762476194547,49762476483454,49762480214964,49762480911527,
-0,49762479085548,49762479085548,9223372036854775807,0,49762480066370,49762480099339,49762481013089,49762481085850,49762482232152,49762482478350,49762485657620,49762486116683,
-</pre>
-
-<p>
-  Cada línea de esta salida representa un fotograma producido por la aplicación. Cada línea tiene un número fijo de columnas que describen el tiempo transcurrido en cada etapa de la canalización de producción de fotogramas.
- En la siguiente sección, se describe este formato en detalle y se explica qué representa cada columna.
-
-</p>
-
-
-<h4 id="fs-data-format">Formato de datos de framestats</h4>
-
-<p>
-  Debido a que el bloque de datos se emite en formato CSV, es muy sencillo pegarlo en su herramienta de hoja de cálculo preferida, o recopilar y redistribuir con un script.
- La siguiente tabla explica el formato de las columnas de los datos de salida.
- Las marcas de tiempo están en nanosegundos.
-</p>
-
-<ul>
-  <li>FLAGS
-    <ul>
-      <li>El tiempo total del fotograma de las filas con “0” en la columna FLAGS se puede calcular restando la columna INTENDED_VSYNC a la columna FRAME_COMPLETED.
-
-      </li>
-
-      <li>Si el resultado no es cero, la fila se debe ignorar, ya que se ha determinado que el fotograma contiene un valor atípico de rendimiento, donde se espera que el diseño y la imagen tomen más de 16 ms.
-
- Razones por las que esto puede suceder:
-        <ul>
-          <li>Se cambió el diseño de la ventana (ya sea el primer fotograma de la aplicación o luego de una rotación)
-
-          </li>
-
-          <li>También es posible que se haya omitido el fotograma. En ese caso, alguno de los valores tendrán marcas de tiempo no utilizables.
- Se puede omitir un fotograma si, por ejemplo, supera los 60 fotogramas por segundo o si no había nada desfasado en pantalla. Esto no necesariamente indica que la aplicación tenga algún problema.
-
-
-          </li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-
-  <li>INTENDED_VSYNC
-    <ul>
-      <li>El punto de partida previsto del fotograma. Si este valor es diferente de VSYNC, el subproceso de la interfaz de usuario se encontraba ocupado, lo que evitó la respuesta a la señal vsync de manera oportuna.
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>VSYNC
-    <ul>
-      <li>El valor de tiempo que se utilizó en todas las escuchas vsync y las imágenes para el fotograma (devolución de llamada del fotograma Choreographer, animaciones, View.getDrawingTime(), etc.).
-
-      </li>
-
-      <li>Para obtener más información sobre VSYNC y cómo influye en su aplicación, consulte el video <a href="https://www.youtube.com/watch?v=1iaHxmfZGGc&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=23">
-Understanding VSYNC</a>.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>OLDEST_INPUT_EVENT
-    <ul>
-      <li>La marca de tiempo del evento de entrada más antiguo de la cola de entrada, o Long.MAX_VALUE en caso de que el fotograma no tengan ninguna entrada.
-
-      </li>
-
-      <li>Este valor está diseñado principalmente para trabajar en la plataforma y tiene utilidad limitada para los desarrolladores de aplicaciones.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>NEWEST_INPUT_EVENT
-    <ul>
-      <li>La marca de tiempo del evento de entrada más reciente de la cola de entrada, o 0 en caso de que el fotograma no contenga ninguna entrada.
-
-      </li>
-
-      <li>Este valor está diseñado principalmente para trabajar en la plataforma y tiene utilidad limitada para los desarrolladores de aplicaciones.
-
-      </li>
-
-      <li>Sin embargo, puede obtener una idea general sobre la cantidad de latencia que la aplicación está añadiendo consultando (FRAME_COMPLETED - NEWEST_INPUT_EVENT).
-
-      </li>
-    </ul>
-  </li>
-
-  <li>HANDLE_INPUT_START
-    <ul>
-      <li>La marca de tiempo en que el evento de entrada se distribuye a la aplicación.
-      </li>
-
-      <li>Al observar el tiempo entre esto y ANIMATION_START, se puede medir cuánto tiempo dedicó la aplicación a la administración de eventos de entrada.
-
-      </li>
-
-      <li>Si este valor es alto (mayor a 2 ms), esto significa que la aplicación dedica tiempo poco común al proceso de los eventos de entrada, como View.onTouchEvent(), lo que indica que este proceso se debe optimizar o descargar a otro subproceso.
-
- Tenga en cuenta que, en algunas ocasiones, como cuando al hacer clic en un evento que lanza nuevas actividades o algo parecido, se espera y es aceptable que este valor sea alto.
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>ANIMATION_START
-    <ul>
-      <li>La marca de tiempo en la que se ejecutaron las animaciones registradas con Choreographer.
-      </li>
-
-      <li>Al observar el tiempo entre esto y PERFORM_TRANVERSALS_START, se puede determinar cuánto tiempo llevó evaluar todos los mecanismos de animación (los más comunes son ObjectAnimator, ViewPropertyAnimator y Transitions) que se estén ejecutando.
-
-
-      </li>
-
-      <li>Si este valor es alto (mayor a 2 ms), controle si su aplicación escribió alguna animación personalizada o qué campos está animando ObjectAnimators y asegúrese de que su animación sea adecuada.
-
-
-      </li>
-
-      <li>Para obtener más información sobre Choreographer, consulte el video <a href="https://developers.google.com/events/io/sessions/325418001">For Butter or Worse</a>.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>PERFORM_TRAVERSALS_START
-    <ul>
-      <li>Si a este valor le resta DRAW_START, puede saber cuánto tardaron en completarse las fases de medición y diseño. (Durante el desplazamiento o la animación, este número deberá ser cercano a cero).
-
-
-      </li>
-
-      <li>Para obtener más información sobre las fases de medición y diseño de la canalización de representación, consulte el video <a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">
-Invalidations, Layouts and Performance</a>.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>DRAW_START
-    <ul>
-      <li>El momento en que comenzó la fase de dibujo de performTraversals. Este es el punto inicial de grabación de la listas de visualización de cualquier vista invalidada.
-
-      </li>
-
-      <li>El tiempo entre esto y SYNC_START muestra cuánto se tardó en llamar a View.draw() en todas las vistas invalidadas en el árbol.
-
-      </li>
-
-      <li>Para obtener más información sobre el modelo de dibujo, consulte los videos <a href="{@docRoot}guide/topics/graphics/hardware-accel.html#hardware-model">Hardware Acceleration</a>
- o <a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">
-Invalidations, Layouts and Performance.</a>
-      </li>
-    </ul>
-  </li>
-
-  <li>SYNC_START
-    <ul>
-      <li>El momento en que comenzó la fase de sincronización del dibujo.
-      </li>
-
-      <li>Si el tiempo entre esto e ISSUE_DRAW_COMMANDS_START es muy alto (mayor a 0,4 ms o similar), generalmente esto significa que se dibujaron muchos mapas de bits que se deben subir a GPU.
-
-
-      </li>
-
-      <li>Para obtener más información sobre la fase de sincronización, consulte el video <a href="https://www.youtube.com/watch?v=VzYkVL1n4M8&amp;index=24&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">
-Profile GPU Rendering.</a>
-      </li>
-    </ul>
-  </li>
-
-  <li>ISSUE_DRAW_COMMANDS_START
-    <ul>
-      <li>El momento en que el representador de hardware comenzó a enviar comandos de dibujo a GPU.
-      </li>
-
-      <li>El tiempo entre esto y FRAME_COMPLETED permite obtener una idea general sobre cuánto trabajo le genera la aplicación a GPU.
- Aquí aparecen los problemas como el exceso de dibujos o efectos de representación ineficientes.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>SWAP_BUFFERS
-    <ul>
-      <li>El momento en que se llamó a eglSwapBuffers, generalmente de poca importancia fuera del trabajo en plataforma.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>FRAME_COMPLETED
-    <ul>
-      <li>¡Todo listo! El tiempo total dedicado al trabajo en este fotograma se puede calcular al hacer FRAME_COMPLETED - INTENDED_VSYNC.
-
-      </li>
-    </ul>
-  </li>
-
-</ul>
-
-<p>
-  Puede utilizar esta información de distintas maneras. Un método de visualización simple pero eficaz es el histograma que muestra la distribución de los tiempos del fotograma (FRAME_COMPLETED - INTENDED_VSYNC) en distintos bloques de latencia; vea la siguiente figura.
-
- Este gráfico indica brevemente que la mayoría de los fotogramas estuvieron muy bien, es decir, por debajo del límite de 16 ms (marcado en rojo). Sin embargo, algunos fotogramas estuvieron muy por arriba del límite.
-
- En el histograma, podemos observar los cambios con el correr del tiempo para ver la creación de los cambios totales o los nuevos valores atípicos.
- También puede graficar la latencia de entrada, el tiempo dedicado al diseño o cualquier otra medición interesante similar sobre las marcas de tiempo en los datos.
-
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-framestats.png">
-
-
-<h3 id="timing-dump">Volcado simple del intervalo del fotograma</h3>
-
-<p>
-  Si, en las Opciones de Desarrollador, <strong>Profile GPU rendering</strong> se configura en <strong>In adb shell dumpsys gfinfo</strong>, el comando <code>adb shell dumpsys gfxinfo</code> emite sobre el tiempo de los 120 fotogramas más recientes y los agrupa en algunas categorías diferentes con valores separados por tabulación.
-
-
- Esta información puede resultar útil para indicar qué partes de la canalización del dibujo podrían funcionar lento en un nivel alto.
-
-</p>
-
-<p>
-  Al igual que <a href="#fs-data-format">framestats</a>, es muy sencillo pegar esta información en su herramienta de hoja de cálculo preferida, o recolectar y redistribuir con un script.
-
- El siguiente gráfico detalla dónde pasaron tiempo muchos de los fotogramas generados por la aplicación.
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-frame-latency.png">
-
-<p>
-  El resultado de ejecutar gfxinfo, copiar la salida, pegar en una aplicación de hoja de cálculo y graficar la información en forma de barras apiladas.
-
-</p>
-
-<p>
-  Cada barra vertical representa un fotograma de animación, su altura representa la cantidad de milisegundos que le llevó calcular ese fotograma de animación.
- Cada segmento de color de la barra representa una etapa diferente de la canalización de representación, de manera que usted pueda observar qué partes de su aplicación pueden estar creando un cuello de botella.
-
- Para obtener más información sobre la canalización de representación y cómo optimizarla, consulte el video <a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;index=27&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">
-Invalidations Layouts and Performance</a>.
-
-</p>
-
-
-<h3 id="collection-window">Control del período de recopilación de datos</h3>
-
-<p>
-  Los intervalos de framestats y del fotograma simple recopilan datos durante un período muy breve: aproximadamente dos segundos que valen la pena representar.
- Para poder controlar este período con precisión, por ejemplo para limitar los datos a una animación en particular, puede restablecer todos los contadores y agregar los datos recopilados.
-
-
-</p>
-
-<pre>
-&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; reset
-</pre>
-
-<p>
-  Esto se puede usar junto con los comandos de volcado para recopilar y restablecer a una cadencia normal a fin de capturar continuamente períodos de fotogramas de menos de dos segundos.
-
-
-</p>
-
-
-<h3 id="diagnose">Diagnóstico de regresiones de rendimiento</h3>
-
-<p>
-  La identificación de regresiones es un buen primer paso para localizar los problemas y mantener la aplicación funcionando correctamente.
- Sin embargo, dumpsys solo identifica la existencia y la gravedad relativa de los problemas.
- Usted todavía debe diagnosticar la causa particular de los problemas de rendimiento y encontrar las soluciones adecuadas.
- Para esto, es sumamente recomendable que utilice la herramienta <a href="{@docRoot}tools/help/systrace.html">systrace</a>.
-
-</p>
-
-
-<h3 id="resources">Recursos adicionales</h3>
-
-<p>
-  Para obtener más información sobre el funcionamiento de la canalización de representación de Android, los problemas comunes que puede encontrar y cómo solucionarlos, es posible que algunos de los siguientes recursos le resulten útiles:
-
-
-</p>
-
-<ul>
-  <li>Rendering Performance 101
-  </li>
-  <li>Why 60fps?
-  </li>
-  <li>Android UI and the GPU
-  </li>
-  <li>Invalidations Layouts and performance
-  </li>
-  <li>Analyzing UI Performance with Systrace
-  </li>
-</ul>
-
-
-<h2 id="automate">Pruebas automatizadas de rendimiento de la UI</h2>
-
-<p>
-  Un enfoque para realizar la prueba de rendimiento de la UI es solicitar a un evaluador que realice una serie de operaciones de usuario en la aplicación objetivo para identificar visualmente jank, o bien, pasar mucho tiempo utilizando un enfoque basado en alguna herramienta para encontrar jank.
-
- Sin embargo, este enfoque manual tiene sus riesgos, la habilidad humana para percibir cambios en los índices de los fotogramas varía de manera alarmante. Además, este proceso lleva mucho tiempo, es tedioso y propenso a errores.
-
-
-</p>
-
-<p>
-  Un método más eficiente es registrarse y analizar las mediciones de rendimiento clave a partir de pruebas automatizadas de UI.
- Android M Developer Preview incluye nuevas capacidades de registro que facilitan la determinación de la cantidad y gravedad de jank en las animaciones de su aplicación y pueden utilizarse para crear un proceso estricto a fin de determinar su rendimiento actual y realizar un seguimiento de futuros objetivos de rendimiento.
-
-
-
-</p>
-
-<p>
-  Este artículo lo guía a través de un enfoque recomendado para utilizar esa información a fin de automatizar su prueba de rendimiento.
-
-</p>
-
-<p>
-  Esto se divide básicamente en dos acciones clave. Primero, identificar qué está probando y cómo lo prueba. Segundo, configurar y mantener un entorno de prueba automatizado.
-
-
-</p>
-
-
-<h3 id="ui-tests">Configuración de pruebas de UI</h3>
-
-<p>
-  Antes de comenzar con las pruebas automatizadas, es importante establecer algunas decisiones de alto nivel para entender correctamente el espacio de prueba y las necesidades que puede tener.
-
-</p>
-
-<h4>
-  Identifique flujos/animaciones clave que desea probar
-</h4>
-
-<p>
-  Recuerde que el usuario visualiza el rendimiento negativo cuando una animación fluida se interrumpe.
- Por lo tanto, al identificar qué tipo de acciones de UI desea probar, se recomienda centrarse en aquellas animaciones clave que el usuario ve más o que son más importantes para su experiencia.
-
- Por ejemplo, a continuación, se mencionan situaciones comunes que es útil identificar:
-</p>
-
-<ul>
-  <li>Desplazamiento por ListView o RecyclerView principales
-  </li>
-
-  <li>Animaciones durante ciclos de espera no sincronizados
-  </li>
-
-  <li>Animaciones que puedan contener manipulación o carga de mapa de bits
-  </li>
-
-  <li>Animaciones que incluyan combinación alfa
-  </li>
-
-  <li>Dibujos personalizados con Canvas
-  </li>
-</ul>
-
-<p>
-  Trabaje con los ingenieros, diseñadores y gerentes de productos de su equipo a fin de priorizar estas animaciones clave para la cobertura de la prueba.
-
-</p>
-
-<h4>
-  Establezca sus objetivos futuros y realice un seguimiento en virtud de ellos
-</h4>
-
-<p>
-  Desde un nivel alto, puede ser crítico identificar sus metas de rendimiento específicas y concentrarse en escribir pruebas y recopilar datos sobre ellas.
- Por ejemplo:
-</p>
-
-<ul>
-  <li>¿Simplemente desea comenzar a realizar un seguimiento del rendimiento de la UI por primera vez para obtener más información?
-  </li>
-
-  <li>¿Desea evitar regresiones que podrían aparecer en el futuro?
-  </li>
-
-  <li>¿Se encuentra hoy en un 90 % de fluidez de fotogramas y quiere alcanzar un 98 % en este trimestre?
-  </li>
-
-  <li>¿Se encuentra en un 98 % de fluidez de fotogramas y no quiere retroceder?
-  </li>
-
-  <li>¿Tiene como objetivo mejorar el rendimiento en dispositivos de gama baja?
-  </li>
-</ul>
-
-<p>
-  Para todas estas situaciones, es recomendable realizar un seguimiento que muestre el rendimiento en múltiples versiones de su aplicación.
-
-</p>
-
-<h4>
-  Identifique los dispositivos en los que desea realizar la prueba
-</h4>
-
-<p>
-  El rendimiento de la aplicación varía según el dispositivo en el que se ejecuta. Algunos dispositivos pueden tener menos memoria, GPU menos potentes o CPU más lentos.
- Esto significa que las animaciones que funcionan bien en un conjunto de hardware pueden no hacerlo en otros, o peor, pueden provocar un cuello de botella en diferentes secciones de la canalización.
-
- Por lo tanto, para justificar esta variación en lo que un usuario puede ver, seleccione una serie de dispositivos, tanto de alta gama como de baja, tablets, etc., en los que ejecutará las pruebas.
-
- Busque variedad en rendimiento de CPU, memoria RAM, resolución de pantalla, tamaño, etc.
- Las pruebas exitosas en un dispositivo de alta gama pueden fallar en uno de baja gama.
-
-</p>
-
-<h4>
-  Marcos básicos para pruebas de UI
-</h4>
-
-<p>
-  Algunos conjuntos de herramientas, como <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a> y <a href="{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a>, están diseñados para ayudar a automatizar el desplazamiento de un usuario por su aplicación.
-
- Estos son marcos simples que imitan la interacción del usuario con el dispositivo.
- Para utilizar estos marcos, debe crear con éxito scripts únicos que se ejecuten en un conjunto de acciones de usuarios y reproducirlos en el dispositivo en sí.
-
-
-</p>
-
-<p>
-  Al combinar estas pruebas automatizadas junto con <code>dumpsys gfxinfo</code>, puede crear rápidamente un sistema reproducible que le permite ejecutar una prueba y medir la información de rendimiento de esa condición particular.
-
-
-</p>
-
-
-<h3 id="automated-tests">Configurar pruebas automatizadas de UI</h3>
-
-<p>
-  Una vez que pueda ejecutar una prueba de UI y una canalización para recopilar datos de una sola prueba, el próximo paso importante es elegir un marco que pueda ejecutar esa prueba muchas veces en múltiples dispositivos y agregar los datos de rendimiento resultantes para que su equipo de desarrollo los analice mejor.
-
-
-
-</p>
-
-<h4>
-  Un marco para la automatización de pruebas
-</h4>
-
-<p>
-  Vale la pena mencionar que los marcos para pruebas de UI (como <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>) se ejecutan directamente en el emulador/dispositivo objetivo.
- A la recopilación de información de rendimiento realizada por 
-<em>dumpsys gfxinfo</em> la impulsa un equipo de host que envía comandos por ADB. Para ayudar a unir la automatización de estas entidades separadas, se diseñó el marco <a href="{@docRoot}tools/help/monkeyrunner_concepts.html">MonkeyRunner.</a> Un sistema de scripts que se ejecuta en su equipo de host y que puede emitir comandos a un conjunto de dispositivos conectados y recibir datos de ellos.
-
-
-
-</p>
-
-<p>
-  Al crear un conjunto de scripts para la automatización adecuada de las pruebas de rendimiento de UI, usted podrá, como mínimo, utilizar MonkeyRunner para realizar con éxito las siguientes tareas:
-
-</p>
-
-<ul>
-  <li>Cargar e iniciar un APK deseado en un dispositivo objetivo, en múltiples dispositivos o en un emulador.
-  </li>
-
-  <li>Iniciar una prueba de UI automatizada y permitir que se ejecute.
-  </li>
-
-  <li>Recopilar información de rendimiento mediante <em>dumpsys gfxinfo</em><em>.</em>
-  </li>
-
-  <li>Añadir información y presentársela de manera útil al desarrollador.
-  </li>
-</ul>
-
-
-<h3 id="triage">Clasificar y solucionar problemas detectados</h3>
-
-<p>
-  Una vez que se identifican los patrones de problemas o las regresiones, el paso siguiente es identificar y aplicar la solución.
- Si su marco de pruebas automatizadas preserva detalles precisos del intervalo para los fotogramas, puede ayudarlo a investigar cambios sospechosos de código o diseño (en el caso de una regresión), o delimitar la parte del sistema que está analizando al cambiar a una investigación manual.
-
-
- Para realizar una investigación manual, <a href="{@docRoot}tools/help/systrace.html">systrace</a> es un buen lugar para comenzar, ya que muestra información precisa sobre cada etapa de la canalización de representación, cada subproceso y núcleo del sistema, además de cualquier marca de evento personalizada que usted defina.
-
-
-</p>
-
-<h4>
-  Descripción adecuada de intervalos temporales
-</h4>
-
-<p>
-  Es importante mencionar las dificultades para obtener y medir los intervalos que son producto del rendimiento de la representación.
- Estos números son, por naturaleza, no deterministas y, a menudo, fluctúan según el estado del sistema, la cantidad de memoria disponible, el límite térmico y la última vez que un rayo solar tocó el área de la tierra donde se encuentra.
-
- El punto es que puede ejecutar la misma prueba dos veces y obtener números apenas diferentes que pueden estar cerca pero no ser iguales.
-
-
-</p>
-
-<p>
-  Para recopilar y definir datos correctamente de esta manera, deberá ejecutar la misma prueba muchas veces y acumular los resultados como un promedio o un valor promedio (para que resulte más fácil, lo llamaremos un “lote”). Esto le ofrece una aproximación estimada del rendimiento de la prueba, sin requerir intervalos exactos.
-
-
-
-</p>
-
-<p>
-  Los lotes se pueden usar entre cambios de código para verificar el impacto relativo que esos cambios tienen en el rendimiento.
- Si el índice de fotograma promedio para el lote previo al cambio es que el lote después del cambio, entonces, generalmente está en presencia de un incremento general en relación con el rendimiento para ese cambio particular.
-
-
-</p>
-
-<p>
-  Esto significa que cualquier prueba automatizada de UI que lleve a cabo debería tener en cuenta este concepto, además de justificar cualquier anomalía que pudiera surgir durante una prueba.
- Por ejemplo, si el rendimiento de su aplicación disminuye repentinamente debido a algún problema con el dispositivo (que no sea provocado por la aplicación), deberá volver a ejecutar el lote para obtener intervalos menos caóticos.
-
-
-
-</p>
-
-<p>
-  Entonces, ¿cuántas veces debe ejecutar una prueba para que los resultados sean significativos? El mínimo debe ser 10 veces y con números más altos, como 50 o 100, para obtener resultados más precisos (por supuesto, ahora cambia el tiempo por la precisión).
-
-
-</p>
diff --git a/docs/html-intl/intl/es/training/material/animations.jd b/docs/html-intl/intl/es/training/material/animations.jd
new file mode 100644
index 0000000..5bd289e
--- /dev/null
+++ b/docs/html-intl/intl/es/training/material/animations.jd
@@ -0,0 +1,550 @@
+page.title=Definir animaciones personalizadas
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Esta lección te enseña a realizar lo siguiente:</h2>
+<ol>
+  <li><a href="#Touch">Personalizar la respuesta táctil</a></li>
+  <li><a href="#Reveal">Usar el efecto Revelar</a></li>
+  <li><a href="#Transitions">Personalizar transiciones de actividades</a></li>
+  <li><a href="#ViewState">Animar cambios de estados de las vistas</a></li>
+  <li><a href="#AnimVector">Animar interfaces dibujables en vector</a></li>
+</ol>
+<h2>También deberías leer</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Especificación de Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design en Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Las animaciones en Material Design proporcionan a los usuarios comentarios sobre sus acciones y continuidad visual
+a medida que los usuarios interactúan con su aplicación. El tema material proporciona algunas animaciones predeterminadas
+para botones y transiciones de actividades; Android 5.0 (API nivel 21) y superior te permite personalizar estas
+animaciones y crear unas nuevas:</p>
+
+<ul>
+<li>Respuesta táctil</li>
+<li>Efecto revelar circular</li>
+<li>Transiciones de actividades</li>
+<li>Movimiento curvo</li>
+<li>Ver cambios de estados</li>
+</ul>
+
+
+<h2 id="Touch">Personalizar la respuesta táctil</h2>
+
+<p>La respuesta táctil en Material Design proporciona una confirmación visual instantánea en el punto
+de contacto cuando los usuarios interactúan con los elementos de la IU. Las animaciones predeterminadas de la respuesta táctil para
+botones usan la nueva clase {@link android.graphics.drawable.RippleDrawable}, que realiza una transición
+entre diferentes estados con un efecto de ondas.</p>
+
+<p>En la mayoría de los casos, debes aplicar esta funcionalidad en la vista XML especificando el fondo
+de la vista como:</p>
+
+<ul>
+<li><code>?android:attr/selectableItemBackground</code> para un efecto de ondas con límites.</li>
+<li><code>?android:attr/selectableItemBackgroundBorderless</code> para un efecto de ondas que se extiende más allá de
+la vista. Se lo dibujará en la vista primaria más cercana de la vista (que lo limitará) con un fondo de valor no
+nulo.</li>
+</ul>
+
+<p class="note"><strong>Nota:</strong> <code>selectableItemBackgroundBorderless</code> es un nuevo
+atributo introducido en la API de nivel 21.</p>
+
+
+<p>Alternativamente, puedes definir un {@link android.graphics.drawable.RippleDrawable}
+como un recurso XML que usa el elemento <code>ripple</code>.</p>
+
+<p>Puedes asignar un color a los objetos {@link android.graphics.drawable.RippleDrawable}. Para cambiar
+el color predeterminado de la respuesta táctil, usa el atributo <code>android:colorControlHighlight</code>
+del tema.</p>
+
+<p>Para más información, consulta la referencia de la API para la clase {@link
+android.graphics.drawable.RippleDrawable}.</p>
+
+
+<h2 id="Reveal">Usar el efecto revelar</h2>
+
+<p>Las animaciones del efecto revelar proporcionan a los usuarios una continuidad visual cuando muestras u ocultas un grupo de elementos
+de la IU. El método {@link android.view.ViewAnimationUtils#createCircularReveal
+ViewAnimationUtils.createCircularReveal()} te permite animar un círculo de recorte para
+revelar u ocultar una vista.</p>
+
+<p>Para revelar una vista previamente invisible usando este efecto:</p>
+
+<pre>
+// previously invisible view
+View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the final radius for the clipping circle
+int finalRadius = Math.max(myView.getWidth(), myView.getHeight());
+
+// create the animator for this view (the start radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);
+
+// make the view visible and start the animation
+myView.setVisibility(View.VISIBLE);
+anim.start();
+</pre>
+
+<p>Para ocultar una vista previamente invisible usando este efecto:</p>
+
+<pre>
+// previously visible view
+final View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the initial radius for the clipping circle
+int initialRadius = myView.getWidth();
+
+// create the animation (the final radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0);
+
+// make the view invisible when the animation is done
+anim.addListener(new AnimatorListenerAdapter() {
+    &#64;Override
+    public void onAnimationEnd(Animator animation) {
+        super.onAnimationEnd(animation);
+        myView.setVisibility(View.INVISIBLE);
+    }
+});
+
+// start the animation
+anim.start();
+</pre>
+
+
+<h2 id="Transitions">Personalizar transiciones de actividades</h2>
+
+<!-- shared transition video -->
+<div style="width:290px;margin-left:35px;float:right">
+  <div class="framed-nexus5-port-span-5">
+  <video class="play-on-hover" autoplay="">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.mp4">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.webm">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.ogv">
+  </video>
+  </div>
+  <div style="font-size:10pt;margin-left:20px;margin-bottom:30px">
+    <p class="img-caption" style="margin-top:3px;margin-bottom:10px"><strong>Figura 1</strong>: una
+transición con elementos compartidos.</p>
+    <em>Para volver a reproducir la película, haz clic en la pantalla del dispositivo.</em>
+  </div>
+</div>
+
+<p>Las transiciones de actividades en las aplicaciones de Material Design proporcionan conexiones visuales entre diferentes estados
+mediante el movimiento y las transformaciones entre elementos comunes. Puedes especificar las animaciones personalizadas para
+entrar y salir de las transiciones y para las transiciones de elementos compartidos entre actividades.</p>
+
+<ul>
+<li>Una transición de <strong>entrada</strong> determina cómo entran en escena las vistas en una actividad.
+Por ejemplo, en la transición de entrada <em>expandir</em>, las vistas entran en escena desde el exterior
+y vuelan hacia el centro de la pantalla.</li>
+
+<li>Una transición de <strong>salida</strong> determina cómo salen de escena las vistas en una actividad. Por
+ejemplo, en la transición de salida <em>expandir</em>, las vistas salen de escena lejos del
+centro.</li>
+
+<li>Una transición de <strong>elementos compartidos</strong> determina cómo las vistas que están compartidas entre
+dos actividades realizan la transición entre estas. Por ejemplo, si dos actividades tienen la misma
+imagen en diferentes posiciones y tamaños, la transición de elementos compartidos <em>changeImageTransform</em>
+traduce y escala la imagen suavemente entre estas actividades.</li>
+</ul>
+
+<p>Android 5.0 (API nivel 21) admite estas transiciones de entrada y salida:</p>
+
+<ul>
+<li><em>expandir</em>: desplaza vistas hacia adentro o hacia afuera del centro de la escena.</li>
+<li><em>deslizar</em>: desplaza vistas hacia adentro o hacia afuera de uno de los bordes de la escena.</li>
+<li><em>difuminar</em>: agrega o quita una vista de la escena al cambiar su opacidad.</li>
+</ul>
+
+<p>Toda transición que extiende la clase {@link android.transition.Visibility} se admite
+como una transición de entrada o salida. Para más información, consulta la referencia de la API para la clase
+{@link android.transition.Transition}.</p>
+
+<p>Android 5.0 (API nivel 21) también admite estas transiciones de elementos compartidos:</p>
+
+<ul>
+<li><em>changeBounds</em>: anima los cambios en los límites de las vistas de destino.</li>
+<li><em>changeClipBounds</em>: anima los cambios en los límites de recorte de las vistas de destino.</li>
+<li><em>changeTransform</em>: anima los cambios en escala y rotación de las vistas de destino.</li>
+<li><em>changeImageTransform</em>: anima los cambios de tamaño y escala de imágenes de destino.</li>
+</ul>
+
+<p>Cuando habilitas las transiciones de actividades en tu aplicación, la transición entre difuminados predeterminada se
+activa entre las actividades que ingresan y salen.</p>
+
+<img src="{@docRoot}training/material/images/SceneTransition.png" alt="" width="600" height="405" style="margin-top:20px" />
+<p class="img-caption">
+  <strong>Figura 2</strong>: una transición de escena con un elemento compartido.
+</p>
+
+<h3>Especificar transiciones personalizadas</h3>
+
+<p>Primero, habilita las transiciones de contenido de la ventana con el atributo <code>android:windowContentTransitions</code>
+cuando definas un estilo que herede del tema material. También puedes especificar
+transiciones de entrada, salida y elementos compartidos en tu definición de estilo:</p>
+
+<pre>
+&lt;style name="BaseAppTheme" parent="android:Theme.Material">
+  &lt;!-- enable window content transitions -->
+  &lt;item name="android:windowContentTransitions">true&lt;/item>
+
+  &lt;!-- specify enter and exit transitions -->
+  &lt;item name="android:windowEnterTransition">@transition/explode&lt;/item>
+  &lt;item name="android:windowExitTransition">@transition/explode&lt;/item>
+
+  &lt;!-- specify shared element transitions -->
+  &lt;item name="android:windowSharedElementEnterTransition">
+    &#64;transition/change_image_transform&lt;/item>
+  &lt;item name="android:windowSharedElementExitTransition">
+    &#64;transition/change_image_transform&lt;/item>
+&lt;/style>
+</pre>
+
+<p>La transición <code>change_image_transform</code> en este ejemplo se define en la siguiente forma:</p>
+
+<pre>
+&lt;!-- res/transition/change_image_transform.xml -->
+&lt;!-- (see also Shared Transitions below) -->
+&lt;transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;changeImageTransform/>
+&lt;/transitionSet>
+</pre>
+
+<p>El elemento <code>changeImageTransform</code> corresponde a la clase
+{@link android.transition.ChangeImageTransform}. Para más información, consulta la referencia de la
+API para {@link android.transition.Transition}.</p>
+
+<p>Para habilitar las transiciones del contenido de las ventanas en tu código, llama al método
+{@link android.view.Window#requestFeature Window.requestFeature()}:</p>
+
+<pre>
+// inside your activity (if you did not enable transitions in your theme)
+getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+
+// set an exit transition
+getWindow().setExitTransition(new Explode());
+</pre>
+
+<p>Para especificar transiciones en tu código, llama a estos métodos con un objeto {@link
+android.transition.Transition}:</p>
+
+<ul>
+  <li>{@link android.view.Window#setEnterTransition Window.setEnterTransition()}</li>
+  <li>{@link android.view.Window#setExitTransition Window.setExitTransition()}</li>
+  <li>{@link android.view.Window#setSharedElementEnterTransition
+      Window.setSharedElementEnterTransition()}</li>
+  <li>{@link android.view.Window#setSharedElementExitTransition
+      Window.setSharedElementExitTransition()}</li>
+</ul>
+
+<p>Los métodos {@link android.view.Window#setExitTransition setExitTransition()} y {@link
+android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} definen
+la transición de salida para la actividad que realiza la llamada. Los métodos {@link android.view.Window#setEnterTransition
+setEnterTransition()} y {@link android.view.Window#setSharedElementEnterTransition
+setSharedElementEnterTransition()} definen la transición de entrada para la actividad invocada.</p>
+
+<p>Para obtener el efecto completo de una transición, debes habilitar las transiciones de contenido de las ventanas tanto para las
+actividades que realizan la llamada como para aquellas que son invocadas. De lo contrario, la actividad que realiza la llamada comenzará la transición de salida,
+pero luego observarás una ventana de transición (como escalar o difuminar).</p>
+
+<p>Para comenzar una transición de entrada lo antes posible, usa el método
+{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}
+en la actividad invocada. Esto te permite tener transiciones de entrada más intensas.</p>
+
+<h3>Iniciar una actividad mediante el uso de transiciones</h3>
+
+<p>Si permites transiciones y estableces una transición de salida para una actividad, la transición se activa
+cuando inicias otra actividad, como alguna de las siguientes:</p>
+
+<pre>
+startActivity(intent,
+              ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
+</pre>
+
+<p>Si estableciste una transición de entrada para la segunda actividad, la transición también se activa
+cuando se inicia la actividad. Para deshabilitar las transiciones cuando inicias otra actividad, proporciona
+una agrupación de opciones <code>null</code>.</p>
+
+<h3>Iniciar una actividad con un elemento compartido</h3>
+
+<p>Para realizar una animación de transiciones de pantallas entre dos actividades que tienen un elemento compartido:</p>
+
+<ol>
+<li>Habilita las transiciones de contenido de ventanas en tu tema.</li>
+<li>Especifica una transición de elementos compartidos en tu estilo.</li>
+<li>Define tu transición como un recurso XML.</li>
+<li>Asigna un nombre en común para los elementos compartidos en ambos diseños con el atributo
+<code>android:transitionName</code>.</li>
+<li>Usa el método {@link android.app.ActivityOptions#makeSceneTransitionAnimation
+ActivityOptions.makeSceneTransitionAnimation()}.</li>
+</ol>
+
+<pre>
+// get the element that receives the click event
+final View imgContainerView = findViewById(R.id.img_container);
+
+// get the common element for the transition in this activity
+final View androidRobotView = findViewById(R.id.image_small);
+
+// define a click listener
+imgContainerView.setOnClickListener(new View.OnClickListener() {
+    &#64;Override
+    public void onClick(View view) {
+        Intent intent = new Intent(this, Activity2.class);
+        // create the transition animation - the images in the layouts
+        // of both activities are defined with android:transitionName="robot"
+        ActivityOptions options = ActivityOptions
+            .makeSceneTransitionAnimation(this, androidRobotView, "robot");
+        // start the new activity
+        startActivity(intent, options.toBundle());
+    }
+});
+</pre>
+
+<p>Para las vistas dinámicas compartidas que generas en tu código, usa el método
+{@link android.view.View#setTransitionName View.setTransitionName()} para especificar un nombre de
+elemento en común en ambas actividades.</p>
+
+<p>Para invertir la animación de transición de escenas cuando terminas la segunda actividad, llama al método
+{@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()}
+en lugar del {@link android.app.Activity#finish Activity.finish()}.</p>
+
+<h3>Iniciar una actividad con múltiples elementos compartidos</h3>
+
+<p>Para realizar una animación de transición de escenas entre dos actividades que tienen más de un elemento
+compartido, define los elementos compartidos en ambos diseños con el atributo <code>android:transitionName</code>
+(o usa el método {@link android.view.View#setTransitionName View.setTransitionName()}
+en ambas actividades) y crea un objeto {@link android.app.ActivityOptions} como se indica a continuación:</p>
+
+<pre>
+ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
+        Pair.create(view1, "agreedName1"),
+        Pair.create(view2, "agreedName2"));
+</pre>
+
+
+<h2 id="CurvedMotion">Usar movimiento curvo</h2>
+
+<p>Las animaciones en Material Design se basan en curvas para la interpolación de tiempo y los modelos de movimiento
+espacial. Con Android 5.0 (API nivel 21) y superior, puedes definir las curvas de sincronización personalizadas y
+los modelos de movimientos curvos para las animaciones.</p>
+
+<p>La clase {@link android.view.animation.PathInterpolator} es un nuevo interpolador que se basa en una curva
+Bézier o un objeto {@link android.graphics.Path}. Este interpolador especifica una curva de movimiento
+en un cuadrado de 1x1, con puntos de anclaje a (0,0) y (1,1), y puntos de control según lo especificado en los argumentos del
+constructor. También puedes definir un interpolador para la ruta de acceso como un recurso XML:</p>
+
+<pre>
+&lt;pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:controlX1="0.4"
+    android:controlY1="0"
+    android:controlX2="1"
+    android:controlY2="1"/>
+</pre>
+
+<p>El sistema proporciona recursos XML para las tres curvas básicas en la especificación
+de Material Design:</p>
+
+<ul>
+  <li><code>&#64;interpolator/fast_out_linear_in.xml</code></li>
+  <li><code>&#64;interpolator/fast_out_slow_in.xml</code></li>
+  <li><code>&#64;interpolator/linear_out_slow_in.xml</code></li>
+</ul>
+
+<p>Puedes pasar un objeto {@link android.view.animation.PathInterpolator} al método {@link
+android.animation.Animator#setInterpolator Animator.setInterpolator()}.</p>
+
+<p>La clase {@link android.animation.ObjectAnimator} tiene nuevos constructores que te permiten animar
+coordenadas junto a una ruta de acceso, usando dos o más propiedades a la vez. Por ejemplo, el siguiente animador
+usa un objeto{@link android.graphics.Path} para animar las propiedades X e Y de una vista:</p>
+
+<pre>
+ObjectAnimator mAnimator;
+mAnimator = ObjectAnimator.ofFloat(view, View.X, View.Y, path);
+...
+mAnimator.start();
+</pre>
+
+
+<h2 id="ViewState">Animar cambios de estados de las vistas</h2>
+
+<p>La clase {@link android.animation.StateListAnimator} te permite definir los animadores que se ejecutan cuando
+cambia el estado de una vista. En el siguiente ejemplo, se muestra cómo definir un {@link
+android.animation.StateListAnimator} como un recurso XML:</p>
+
+<pre>
+&lt;!-- animate the translationZ property of a view when pressed -->
+&lt;selector xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;item android:state_pressed="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="@android:integer/config_shortAnimTime"
+        android:valueTo="2dp"
+        android:valueType="floatType"/>
+        &lt;!-- you could have other objectAnimator elements
+             here for "x" and "y", or other properties -->
+    &lt;/set>
+  &lt;/item>
+  &lt;item android:state_enabled="true"
+    android:state_pressed="false"
+    android:state_focused="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="100"
+        android:valueTo="0"
+        android:valueType="floatType"/>
+    &lt;/set>
+  &lt;/item>
+&lt;/selector>
+</pre>
+
+<p>Para adjuntar animaciones personalizadas de los estados de visualizaciones, define un animador usando el elemento
+<code>selector</code> en un archivo de recurso XML como en este ejemplo y asígnalo a tu
+vista con el atributo <code>android:stateListAnimator</code>. Para asignar un animador de lista de estados
+a una vista en tu código, usa el método {@link android.animation.AnimatorInflater#loadStateListAnimator
+AnimationInflater.loadStateListAnimator()} y asigna el animador a tu vista con el método
+{@link android.view.View#setStateListAnimator View.setStateListAnimator()}.</p>
+
+<p>Cuando tu tema extiende al tema material, los botones tendrán una animación Z de manera predeterminada. Para evitar este
+comportamiento en los botones, establece el atributo <code>android:stateListAnimator</code> en
+<code>@null</code>.</p>
+
+<p>La clase {@link android.graphics.drawable.AnimatedStateListDrawable} te permite crear elementos de diseño
+que muestren animaciones entre los cambios de estados de la vista asociada. Algunos de los widgets del sistema en
+Android 5.0 usan estas animaciones de manera predeterminada. En el siguiente ejemplo, se muestra cómo
+definir un {@link android.graphics.drawable.AnimatedStateListDrawable} como un recurso XML:</p>
+
+<pre>
+&lt;!-- res/drawable/myanimstatedrawable.xml -->
+&lt;animated-selector
+    xmlns:android="http://schemas.android.com/apk/res/android">
+
+    &lt;!-- provide a different drawable for each state-->
+    &lt;item android:id="@+id/pressed" android:drawable="@drawable/drawableP"
+        android:state_pressed="true"/>
+    &lt;item android:id="@+id/focused" android:drawable="@drawable/drawableF"
+        android:state_focused="true"/>
+    &lt;item android:id="@id/default"
+        android:drawable="@drawable/drawableD"/>
+
+    &lt;!-- specify a transition -->
+    &lt;transition android:fromId="@+id/default" android:toId="@+id/pressed">
+        &lt;animation-list>
+            &lt;item android:duration="15" android:drawable="@drawable/dt1"/>
+            &lt;item android:duration="15" android:drawable="@drawable/dt2"/>
+            ...
+        &lt;/animation-list>
+    &lt;/transition>
+    ...
+&lt;/animated-selector>
+</pre>
+
+
+<h2 id="AnimVector">Animar interfaces dibujables en vector</h2>
+
+<p>Las <a href="{@docRoot}training/material/drawables.html#VectorDrawables">interfaces dibujables en vector</a> son
+escalables sin perder definición. La clase {@link android.graphics.drawable.AnimatedVectorDrawable}
+te permite animar las propiedades de un elemento de diseño en vector.</p>
+
+<p>Generalmente, las interfaces animadas dibujables en vector se definen en tres archivos XML:</p>
+
+<ul>
+<li>Una interfaz dibujable en vector con el elemento <code>&lt;vector&gt;</code> en
+<code>res/drawable/</code></li>
+<li>Una interfaz dibujable animada en vector con el elemento <code>&lt;animated-vector&gt;</code> en
+<code>res/drawable/</code></li>
+<li>Uno o más animadores de objeto con el elemento <code>&lt;objectAnimator&gt;</code> en
+<code>res/anim/</code></li>
+</ul>
+
+<p>Las interfaces animadas dibujables en vector pueden animar los atributos de los elementos <code>&lt;group&gt;</code> y
+<code>&lt;path&gt;</code>. Los elementos <code>&lt;group&gt;</code> definen un conjunto de
+rutas de acceso o subgrupos y el elemento <code>&lt;path&gt;</code> define rutas de acceso para dibujar.</p>
+
+<p>Cuando definas una interfaz dibujable en vector que desees animar, usa el atributo <code>android:name</code>
+para asignar un nombre único a grupos o rutas de acceso, de manera que puedas hacer referencia a ellos desde tus definiciones del
+animador. Por ejemplo:</p>
+
+<pre>
+&lt;!-- res/drawable/vectordrawable.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="64dp"
+    android:width="64dp"
+    android:viewportHeight="600"
+    android:viewportWidth="600">
+    &lt;group
+        <strong>android:name="rotationGroup"</strong>
+        android:pivotX="300.0"
+        android:pivotY="300.0"
+        android:rotation="45.0" >
+        &lt;path
+            <strong>android:name="v"</strong>
+            android:fillColor="#000000"
+            android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
+    &lt;/group>
+&lt;/vector>
+</pre>
+
+<p>La definición de la interfaz animada dibujable en vector hace referencia a grupos y rutas de acceso en el elemento de diseño en vector
+por sus nombres:</p>
+
+<pre>
+&lt;!-- res/drawable/animvectordrawable.xml -->
+&lt;animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+  android:drawable="@drawable/vectordrawable" >
+    &lt;target
+        android:name="rotationGroup"
+        android:animation="@anim/rotation" />
+    &lt;target
+        android:name="v"
+        android:animation="@anim/path_morph" />
+&lt;/animated-vector>
+</pre>
+
+<p>Las definiciones de animación representan objetos {@link android.animation.ObjectAnimator} o {@link
+android.animation.AnimatorSet}. El primer animador en este ejemplo rota el grupo
+objetivo unos 360 grados:</p>
+
+<pre>
+&lt;!-- res/anim/rotation.xml -->
+&lt;objectAnimator
+    android:duration="6000"
+    android:propertyName="rotation"
+    android:valueFrom="0"
+    android:valueTo="360" />
+</pre>
+
+<p>El segundo animador en este ejemplo transforma la ruta de acceso de la interfaz dibujable en vector de una forma a
+otra. Ambas rutas de acceso deben ser compatibles para transformarse: deben tener el mismo número de comandos
+y el mismo número de parámetros para cada comando.</p>
+
+<pre>
+&lt;!-- res/anim/path_morph.xml -->
+&lt;set xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;objectAnimator
+        android:duration="3000"
+        android:propertyName="pathData"
+        android:valueFrom="M300,70 l 0,-70 70,70 0,0   -70,70z"
+        android:valueTo="M300,70 l 0,-70 70,0  0,140 -70,0 z"
+        android:valueType="pathType" />
+&lt;/set>
+</pre>
+
+<p>Para más información, consulta la referencia de la API para {@link
+android.graphics.drawable.AnimatedVectorDrawable}.</p>
diff --git a/docs/html-intl/intl/es/training/material/compatibility.jd b/docs/html-intl/intl/es/training/material/compatibility.jd
new file mode 100644
index 0000000..ad2e953
--- /dev/null
+++ b/docs/html-intl/intl/es/training/material/compatibility.jd
@@ -0,0 +1,168 @@
+page.title=Mantener la compatibilidad
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Esta lección te enseña a realizar lo siguiente:</h2>
+<ol>
+  <li><a href="#Theme">Definir estilos alternativos</a></li>
+  <li><a href="#Layouts">Proporcionar diseños alternativos</a></li>
+  <li><a href="#SupportLib">Usar la Biblioteca de soporte</a></li>
+  <li><a href="#CheckVersion">Comprobar la versión del sistema</a></li>
+</ol>
+<h2>También deberías leer</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Especificación de Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design en Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Algunas características de Material Design, como el tema material y las transiciones de actividades personalizadas, solo
+están disponibles en Android 5.0 (API nivel 21) y superior. Sin embargo, puedes diseñar tus aplicaciones para
+usar estas características cuando se ejecutan en dispositivos que admiten Material Design y aún son compatibles
+con dispositivos que ejecutan versiones anteriores de Android.</p>
+
+
+<h2 id="Theme">Definir estilos alternativos</h2>
+
+<p>Puedes configurar tu aplicación para usar el tema material en los dispositivos que los admiten y revertir
+a un tema anterior en los dispositivos que ejecutan versiones anteriores de Android:</p>
+
+<ol>
+<li>Define un tema que herede de un tema anterior (como Holo) en
+<code>res/values/styles.xml</code>.</li>
+<li>Define un tema con el mismo nombre que hereda del tema material en
+<code>res/values-v21/styles.xml</code>.</li>
+<li>Establece este tema como el tema de tu aplicación en el archivo de manifiesto.</li>
+</ol>
+
+<p class="note"><strong>Nota:</strong>
+Si tu aplicación usa el tema material pero no proporciona un tema alternativo,
+tu aplicación no se ejecutará en versiones de Android anteriores a la versión 5.0.
+</p>
+
+
+<h2 id="Layouts">Proporcionar diseños alternativos</h2>
+
+<p>Si los diseños que realizas de acuerdo con las pautas de Material Design no usan ninguno de
+los nuevos atributos XML introducidos en Android 5.0 (API nivel 21), estos trabajarán en
+versiones anteriores de Android. De lo contrario, puedes proporcionar diseños alternativos. También puedes proporcionar diseños
+alternativos para personalizar la apariencia de tu aplicación en versiones anteriores de Android.</p>
+
+<p>Crea tus archivos de diseño para Android 5.0 (API nivel 21) dentro de <code>res/layout-v21/</code> y
+tus archivos de diseño alternativo para versiones anteriores de Android dentro de <code>res/layout/</code>.
+Por ejemplo, <code>res/layout/my_activity.xml</code> es un diseño alternativo para
+<code>res/layout-v21/my_activity.xml</code>.</p>
+
+<p>Para evitar duplicación de código, define tus estilos en <code>res/values/</code>, modifica
+estilos en <code>res/values-v21/</code> para las nuevas API y usa transmisión por herencia de estilos, definiendo estilos
+base en <code>res/values/</code> y heredando de los que están en <code>res/values-v21/</code>.</p>
+
+
+<h2 id="SupportLib">Usar la Biblioteca de soporte</h2>
+
+<p>Las <a href="{@docRoot}tools/support-library/features.html#v7">Bibliotecas de soporte v7</a>
+r21 y superiores incluyen las siguientes características de Material Design:</p>
+
+<ul>
+<li><a href="{@docRoot}training/material/theme.html">Estilos de Material Design</a> para algunos widgets
+del sistema cuando aplicas uno de los temas <code>Theme.AppCompat</code>.</li>
+<li><a href="{@docRoot}training/material/theme.html#ColorPalette">Atributos del tema de la paleta de colores</a>
+en los temas <code>Theme.AppCompat</code>.</li>
+<li>El widget {@link android.support.v7.widget.RecyclerView} para <a href="{@docRoot}training/material/lists-cards.html#RecyclerView">mostrar conjuntos
+de datos</a>.</li>
+<li>El widget {@link android.support.v7.widget.CardView} para <a href="{@docRoot}training/material/lists-cards.html#CardView">crear tarjetas</a>.</li>
+<li>La clase {@link android.support.v7.graphics.Palette} para <a href="{@docRoot}training/material/drawables.html#ColorExtract">extraer colores prominentes de
+imágenes</a>.</li>
+</ul>
+
+<h3>Widgets del sistema</h3>
+
+<p>Los temas <code>Theme.AppCompat</code> proporcionan estilos de Material Design para estos widgets:</p>
+
+<ul>
+  <li>{@link android.widget.EditText}</li>
+  <li>{@link android.widget.Spinner}</li>
+  <li>{@link android.widget.CheckBox}</li>
+  <li>{@link android.widget.RadioButton}</li>
+  <li>{@link android.support.v7.widget.SwitchCompat}</li>
+  <li>{@link android.widget.CheckedTextView}</li>
+</ul>
+
+<h3>Paleta de colores</h3>
+
+<p>Para obtener estilos de Material Design y personalizar la paleta de colores con la Biblioteca de soporte
+v7 de Android, aplica uno de los temas <code>Theme.AppCompat</code>:</p>
+
+<pre>
+&lt;!-- extend one of the Theme.AppCompat themes -->
+&lt;style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
+    &lt;!-- customize the color palette -->
+    &lt;item name="colorPrimary">@color/material_blue_500&lt;/item>
+    &lt;item name="colorPrimaryDark">@color/material_blue_700&lt;/item>
+    &lt;item name="colorAccent">@color/material_green_A200&lt;/item>
+&lt;/style>
+</pre>
+
+<h3>Listas y tarjetas</h3>
+
+<p>Los widgets {@link android.support.v7.widget.RecyclerView} y {@link
+android.support.v7.widget.CardView} están disponible en versiones anteriores de Android mediante
+la Biblioteca de soporte v7 con estas limitaciones:</p>
+<ul>
+<li>{@link android.support.v7.widget.CardView} regresa a una implementación de sombras programáticas
+mediante el uso de espaciado adicional.</li>
+<li>{@link android.support.v7.widget.CardView} no recorta las vistas de sus hijos que forman intersecciones
+con esquinas redondeadas.</li>
+</ul>
+
+
+<h3>Dependencias</h3>
+
+<p>Para usar estas características en versiones de Android anteriores a la 5.0 (API nivel 21), incluye
+en tu proyecto la Biblioteca de soporte v7 de Android como una <a href="{@docRoot}/sdk/installing/studio-build.html#dependencies">dependencia de Gradle</a>:</p>
+
+<pre>
+dependencies {
+    compile 'com.android.support:appcompat-v7:21.0.+'
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
+
+
+<h2 id="CheckVersion">Comprobar la versión del sistema</h2>
+
+<p>Las siguientes características están disponibles solo en Android 5.0 (nivel de API 21) y superior:</p>
+
+<ul>
+<li>Transiciones de actividades</li>
+<li>Respuesta táctil</li>
+<li>Animaciones con el efecto revelar</li>
+<li>Animaciones basadas en rutas</li>
+<li>Interfaces dibujables en vector</li>
+<li>Matiz de la interfaz dibujable</li>
+</ul>
+
+<p>Para conservar la compatibilidad con versiones anteriores de Android, comprueba la {@link
+android.os.Build.VERSION#SDK_INT version} del sistema en tiempo de ejecución antes de invocar las API para cualquiera de estas
+características:</p>
+
+<pre>
+// Check if we're running on Android 5.0 or higher
+if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+    // Call some material design APIs here
+} else {
+    // Implement this feature without material design
+}
+</pre>
+
+<p class="note"><strong>Nota:</strong> Para especificar qué versiones de Android admite tu aplicación,
+usa los atributos <code>android:minSdkVersion</code> y <code>android:targetSdkVersion</code>
+en tu archivo de manifiesto. Para usar las características de Material Design en Android 5.0, establece el
+atributo <code>android:targetSdkVersion</code> en <code>21</code>. Para más información, consulta
+la <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">guía de &lt;uses-sdk&gt; de la
+API</a>.</p>
diff --git a/docs/html-intl/intl/es/training/material/drawables.jd b/docs/html-intl/intl/es/training/material/drawables.jd
new file mode 100644
index 0000000..6bfeff9
--- /dev/null
+++ b/docs/html-intl/intl/es/training/material/drawables.jd
@@ -0,0 +1,126 @@
+page.title=Trabajar con interfaces dibujables
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Esta lección te enseña a realizar lo siguiente:</h2>
+<ol>
+  <li><a href="#DrawableTint">Cambiar el matiz de los recursos dibujables</a></li>
+  <li><a href="#ColorExtract">Extraer colores prominentes de una imagen</a></li>
+  <li><a href="#VectorDrawables">Crear interfaces dibujables en vector</a></li>
+</ol>
+<h2>También deberías leer</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Especificación de Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Diseño material en Android</a></li>
+</ul>
+</div>
+</div>
+
+<p>Las siguientes capacidades para las interfaces dibujables te ayudan a implementar Material Design en tus aplicaciones:</p>
+
+<ul>
+<li>Matiz de la interfaz dibujable</li>
+<li>Extracción de color prominente</li>
+<li>Interfaces dibujables en vector</li>
+</ul>
+
+<p>Esta lección te muestra cómo usar estas características en tu aplicación.</p>
+
+
+<h2 id="DrawableTint">Cambiar el matiz de los recursos dibujables</h2>
+
+<p>Con Android 5.0 (API nivel 21) y superior, puedes cambiar el matiz de los mapas de bits y nueve parches definidos como
+máscaras alfa. Puedes cambiar el matiz con recursos de colores o atributos de temas que se resuelven a
+recursos de colores (por ejemplo, <code>?android:attr/colorPrimary</code>). Generalmente, puedes crear estos recursos
+solo una vez y agregarles color automáticamente para que coincidan con tu tema.</p>
+
+<p>Puedes aplicar un matiz a los objetos {@link android.graphics.drawable.BitmapDrawable} o {@link
+android.graphics.drawable.NinePatchDrawable} con el método {@code setTint()}. También puedes
+establecer el color de matiz y el modo en tus diseños con los atributos <code>android:tint</code> y
+<code>android:tintMode</code>.</p>
+
+
+<h2 id="ColorExtract">Extraer colores prominentes de una imagen</h2>
+
+<p>La Biblioteca de soporte de Android r21 y superiores incluye la clase {@link
+android.support.v7.graphics.Palette}, que te permite extraer colores prominentes de una imagen.
+Esta clase extrae los siguientes colores prominentes:</p>
+
+<ul>
+<li>Brillante</li>
+<li>Oscuro brillante</li>
+<li>Claro brillante</li>
+<li>Apagado</li>
+<li>Oscuro apagado</li>
+<li>Claro apagado</li>
+</ul>
+
+<p>Para extraer estos colores, pasa un objeto {@link android.graphics.Bitmap} al método estático
+{@link android.support.v7.graphics.Palette#generate Palette.generate()} en el subproceso en
+segundo plano en donde cargas tus imágenes. Si no puedes usar dicho subproceso, llama al método
+{@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} y proporciona
+un gestor de eventos en su lugar.</p>
+
+<p>Puedes recuperar los colores prominentes de la imagen mediante los métodos de obtención en la clase
+<code>Palette</code>, como <code>Palette.getVibrantColor</code>.</p>
+
+<p>Para usar la clase {@link android.support.v7.graphics.Palette} en tu proyecto, agrega la siguiente
+<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">Dependencia Gradle</a> al módulo de
+tu aplicación:</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:palette-v7:21.0.0'
+}
+</pre>
+
+<p>Para más información, consulta la referencia de la API para la clase {@link android.support.v7.graphics.Palette}.
+</p>
+
+
+<h2 id="VectorDrawables">Crear interfaces dibujables en vector</h2>
+
+<!-- video box -->
+<a class="notice-developers-video" href="https://www.youtube.com/watch?v=wlFVIIstKmA" style="margin-top:18px">
+<div>
+    <h3>Video</h3>
+    <p>Gráficos en vector de Android</p>
+</div>
+</a>
+
+<p>En Android 5.0 (API nivel 21) y superiores, puedes definir las interfaces dibujables en vector, que escalan sin
+perder definición. Solo necesitas un archivo de recurso para una imagen en vector, en oposición a un archivo de recurso para
+la densidad de cada pantalla en el caso de imágenes de mapa de bits. Para crear una imagen en vector, defines los detalles
+de la forma dentro de un elemento XML <code>&lt;vector&gt;</code>.</p>
+
+<p>El siguiente ejemplo define una imagen en vector con la forma de un corazón:</p>
+
+<pre>
+&lt;!-- res/drawable/heart.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    &lt;!-- intrinsic size of the drawable -->
+    android:height="256dp"
+    android:width="256dp"
+    &lt;!-- size of the virtual canvas -->
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+
+  &lt;!-- draw a path -->
+  &lt;path android:fillColor="#8fff"
+      android:pathData="M20.5,9.5
+                        c-1.955,0,-3.83,1.268,-4.5,3
+                        c-0.67,-1.732,-2.547,-3,-4.5,-3
+                        C8.957,9.5,7,11.432,7,14
+                        c0,3.53,3.793,6.257,9,11.5
+                        c5.207,-5.242,9,-7.97,9,-11.5
+                        C25,11.432,23.043,9.5,20.5,9.5z" />
+&lt;/vector>
+</pre>
+
+<p>Las imágenes en vector están representadas en Android como objetos {@link android.graphics.drawable.VectorDrawable}.
+ Para más información sobre la sintaxis <code>pathData</code>, consulta la <a href="http://www.w3.org/TR/SVG11/paths.html#PathData">referencia de ruta de acceso SVG</a>. Para más información
+sobre la animación de las propiedades de las interfaces dibujables en vector, consulta
+<a href="{@docRoot}training/material/animations.html#AnimVector">Animación de interfaces dibujables en vector</a>.</p>
diff --git a/docs/html-intl/intl/es/training/material/get-started.jd b/docs/html-intl/intl/es/training/material/get-started.jd
new file mode 100644
index 0000000..bd67316
--- /dev/null
+++ b/docs/html-intl/intl/es/training/material/get-started.jd
@@ -0,0 +1,171 @@
+page.title=Comencemos
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Esta lección te enseña a realizar lo siguiente:</h2>
+<ol>
+  <li><a href="#ApplyTheme">Aplicar el tema Material</a></li>
+  <li><a href="#Layouts">Realizar tus diseños</a></li>
+  <li><a href="#Depth">Especificar la elevación en tus vistas</a></li>
+  <li><a href="#ListsCards">Crear listas y tarjetas</a></li>
+  <li><a href="#Animations">Personalizar tus animaciones</a></li>
+</ol>
+<h2>También deberías leer</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Especificación de Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design en Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Para crear aplicaciones con Material Design:</p>
+
+<ol>
+  <li style="margin-bottom:10px">
+    Revisar la <a href="http://www.google.com/design/spec">especificación de Material Design</a>.</li>
+  <li style="margin-bottom:10px">
+    Aplicar el <strong>tema</strong> material a tu aplicación.</li>
+  <li style="margin-bottom:10px">
+    Crear tus <strong>diseños</strong> siguiendo las pautas de Material Design.</li>
+  <li style="margin-bottom:10px">
+    Especificar la <strong>elevación</strong> de tus vistas para convertir sombras.</li>
+  <li style="margin-bottom:10px">
+    Usar <strong>widgets</strong> del sistema para listas y tarjetas.</li>
+  <li style="margin-bottom:10px">
+    Personalizar las <strong>animaciones</strong> en tu aplicación.</li>
+</ol>
+
+<h3>Mantener la compatibilidad con versiones anteriores</h3>
+
+<p>Puedes agregar muchas características de Material Design a tu aplicación mientras mantienes la compatibilidad con las
+versiones anteriores a Android 5.0. Para más información, consulta
+<a href="{@docRoot}training/material/compatibility.html">Mantener la compatibilidad</a>.</p>
+
+<h3>Actualización de tu aplicación con Material Design</h3>
+
+<p>Para actualizar una aplicación existente para incorporar Material Design, actualiza tus diseños siguiendo
+las pautas de Material Design. Además, asegúrate de incorporar profundidad, respuesta táctil y
+animaciones.</p>
+
+<h3>Crear nuevas aplicaciones con Material Design</h3>
+
+<p>Si creas una nueva aplicación con las características de Material Design, las <a href="http://www.google.com/design/spec">pautas de Material Design</a> te proporcionan un framework
+de diseño cohesivo. Sigue estas pautas y usa la nueva funcionalidad del framework de
+Android para diseñar y desarrollar tu aplicación.</p>
+
+
+<h2 id="ApplyTheme">Aplicar el tema Material</h2>
+
+<p>Para aplicar el tema material en tu aplicación, especifica el estilo que hereda de
+<code>android:Theme.Material</code>:</p>
+
+<pre>
+&lt;!-- res/values/styles.xml -->
+&lt;resources>
+  &lt;!-- your theme inherits from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- theme customizations -->
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<p>El tema material proporciona widgets de sistema actualizados y te permite establecer la paleta de colores y las animaciones
+predeterminadas para la respuesta táctil y las transiciones de actividades. Para obtener más detalles, consulta
+<a href="{@docRoot}training/material/theme.html">Usar el tema Material</a>.</p>
+
+
+<h2 id="Layouts">Realizar tus diseños</h2>
+
+<p>Además de aplicar y personalizar el tema material, tus diseños deben cumplir con
+las <a href="http://www.google.com/design/spec">pautas de Material Design</a>. Cuando realices
+tus diseños, presta especial atención a lo siguiente:</p>
+
+<ul>
+<li>Cuadrículas de referencia</li>
+<li>Líneas clave</li>
+<li>Espaciado</li>
+<li>Tamaño del objetivo táctil</li>
+<li>Estructura del diseño</li>
+</ul>
+
+
+<h2 id="Depth">Especificar la elevación en tus vistas</h2>
+
+<p>Las vistas pueden proyectar sombras y el valor de elevación de una vista
+determina el tamaño de su sombra y el orden en que será dibujada. Para establecer la elevación de una vista, usa el atributo
+<code>android:elevation</code> en tus diseños:</p>
+
+<pre>
+&lt;TextView
+    android:id="&#64;+id/my_textview"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:text="&#64;string/next"
+    android:background="&#64;color/white"
+    android:elevation="5dp" />
+</pre>
+
+<p>La nueva propiedad <code>translationZ</code> te permite crear animaciones que reflejen cambios
+temporales en la elevación de una vista. Los cambios de elevación pueden ser útiles cuando
+<a href="{@docRoot}training/material/animations.html#ViewState">responden a gestos
+táctiles</a>.</p>
+
+<p>Para obtener más detalles, consulta <a href="{@docRoot}training/material/shadows-clipping.html">Definir
+vistas de recorte y sombras</a>.</p>
+
+
+<h2 id="ListsCards">Crear listas y tarjetas</h2>
+
+<p>{@link android.support.v7.widget.RecyclerView} es una versión más acoplable de {@link
+android.widget.ListView} que admite diferentes tipos de diseños y proporciona mejoras en el rendimiento.
+{@link android.support.v7.widget.CardView} te permite mostrar partes de información dentro de las tarjetas con
+una apariencia uniforme entre distintas aplicaciones. El siguiente ejemplo de códigos muestra cómo incluir un
+{@link android.support.v7.widget.CardView} en tu diseño:</p>
+
+<pre>
+&lt;android.support.v7.widget.CardView
+    android:id="&#64;+id/card_view"
+    android:layout_width="200dp"
+    android:layout_height="200dp"
+    card_view:cardCornerRadius="3dp">
+    ...
+&lt;/android.support.v7.widget.CardView>
+</pre>
+
+<p>Para obtener más información, consulta <a href="{@docRoot}training/material/lists-cards.html">Crear listas
+y tarjetas</a>.</p>
+
+
+<h2 id="Animations">Personalizar tus animaciones</h2>
+
+<p>Android 5.0 (API nivel 21) incluye nuevas API para crear animaciones personalizadas en tu aplicación.
+Por ejemplo, puedes habilitar las transiciones de actividades y definir una transición de salida dentro de una
+actividad:</p>
+
+<pre>
+public class MyActivity extends Activity {
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // enable transitions
+        getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+        setContentView(R.layout.activity_my);
+    }
+
+    public void onSomeButtonClicked(View view) {
+        getWindow().setExitTransition(new Explode());
+        Intent intent = new Intent(this, MyOtherActivity.class);
+        startActivity(intent,
+                      ActivityOptions
+                          .makeSceneTransitionAnimation(this).toBundle());
+    }
+}
+</pre>
+
+<p>Cuando comienzas otra actividad desde esta actividad, se activa la transición de salida.</p>
+
+<p>Para más información sobre las nuevas API de animación, consulta <a href="{@docRoot}training/material/animations.html">Definir animaciones personalizadas</a>.</p>
diff --git a/docs/html-intl/intl/es/training/material/index.jd b/docs/html-intl/intl/es/training/material/index.jd
new file mode 100644
index 0000000..1af0ead
--- /dev/null
+++ b/docs/html-intl/intl/es/training/material/index.jd
@@ -0,0 +1,60 @@
+page.title=Material Design para desarrolladores
+page.image=images/cards/material_2x.png
+page.metaDescription=Aprende a aplicar Material Design a tus aplicaciones.
+
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+  <h2>Dependencias y requisitos previos</h2>
+  <ul>
+    <li>Android 5.0 (API nivel 21)</li>
+  </ul>
+</div>
+</div>
+
+<p>Material Design es una guía integral para el diseño visual, de movimientos y de interacción en distintas
+plataformas y dispositivos. Para usar Material Design en tus aplicaciones de Android, sigue las pautas
+descritas en la
+<a href="http://www.google.com/design/spec/material-design/introduction.html">especificación de Material
+Design</a> y usa los nuevos componentes y funcionalidades disponibles en Android 5.0
+(API nivel 21).</p>
+
+<p>Esta clase muestra cómo crear aplicaciones de Material Design con los siguientes elementos:</p>
+
+<ul>
+<li>Tema Material</li>
+<li>Widget para tarjetas y listas</li>
+<li>Personalizar sombras y ver recortes</li>
+<li>Interfaces dibujables en vector</li>
+<li>Animaciones personalizadas</li>
+</ul>
+
+<p>Esta clase también te enseña cómo mantener la compatibilidad con versiones anteriores de Android
+5.0 (API nivel 21) cuando usas las características de Material Design en tu aplicación.</p>
+
+<h2>Lecciones</h2>
+
+<dl>
+  <dt><a href="{@docRoot}training/material/get-started.html">Comencemos</a></dt>
+  <dd>Aprende a actualizar tu aplicación con las características de Material Design.</dd>
+
+  <dt><a href="{@docRoot}training/material/theme.html">Usar el tema Material</a></dt>
+  <dd>Aprende a aplicar los estilos de Material Design a tu aplicación.</dd>
+
+  <dt><a href="{@docRoot}training/material/lists-cards.html">Crear listas y tarjetas</a></dt>
+  <dd>Aprende a crear listas y tarjetas con un aspecto consistente mediante el uso de widgets del sistema.</dd>
+
+  <dt><a href="{@docRoot}training/material/shadows-clipping.html">Definir vistas de recorte y sombras</a></dt>
+  <dd>Aprende a establecer la elevación para tus vistas para crear sombras personalizadas y cómo recortar vistas.</dd>
+
+  <dt><a href="{@docRoot}training/material/drawables.html">Trabajar con interfaces dibujables</a></dt>
+  <dd>Aprende cómo crear interfaces dibujables en vector y cómo agregar un matiz a los recursos dibujables.</dd>
+
+  <dt><a href="{@docRoot}training/material/animations.html">Definir animaciones personalizadas</a></dt>
+  <dd>Aprende a crear animaciones personalizadas para vistas y transiciones de actividades con elementos compartidos.</dd>
+
+  <dt><a href="{@docRoot}training/material/compatibility.html">Mantener la compatibilidad</a></dt>
+  <dd>Aprende a mantener la compatibilidad con versiones de plataforma anteriores a Android 5.0.</dd>
+</dl>
diff --git a/docs/html-intl/intl/es/training/material/lists-cards.jd b/docs/html-intl/intl/es/training/material/lists-cards.jd
new file mode 100644
index 0000000..1d5db98
--- /dev/null
+++ b/docs/html-intl/intl/es/training/material/lists-cards.jd
@@ -0,0 +1,266 @@
+page.title=Crear listas y tarjetas
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Esta lección te enseña a realizar lo siguiente:</h2>
+<ol>
+  <li><a href="#RecyclerView">Crear listas</a></li>
+  <li><a href="#CardView">Crear tarjetas</a></li>
+  <li><a href="#Dependencies">Agregar dependencias</a></li>
+</ol>
+<h2>También deberías leer</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Especificación de Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design en Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Para crear listas completas y tarjetas con estilos de Material Design en tus aplicaciones, puedes usar los widgets
+{@link android.support.v7.widget.RecyclerView} y {@link android.support.v7.widget.CardView}.
+</p>
+
+
+<h2 id="RecyclerView">Crear listas</h2>
+
+<p>El widget {@link android.support.v7.widget.RecyclerView} es una versión más
+flexible y avanzada de {@link android.widget.ListView}. Este widget es un contenedor para mostrar grandes conjuntos de
+datos que se pueden desplazar de manera muy eficiente al mantener una cantidad limitada de vistas. Usa el widget
+{@link android.support.v7.widget.RecyclerView} cuando tengas conjuntos de datos cuyos elementos
+cambien en tiempo de ejecución sobre la base de la acción del usuario o los eventos de la red.</p>
+
+<p>La clase {@link android.support.v7.widget.RecyclerView} simplifica la pantalla y la manipulación de grandes conjuntos de
+datos al proporcionar lo siguiente:</p>
+
+<ul>
+  <li>Administradores de diseño para el posicionamiento de elementos</li>
+  <li>Animaciones predeterminadas para las operaciones comunes con elementos, como quitar o agregar elementos</li>
+</ul>
+
+<p>También tienes la flexibilidad para definir administradores de diseño personalizados y animaciones para los widgets {@link
+android.support.v7.widget.RecyclerView}.</p>
+
+<img src="{@docRoot}training/material/images/RecyclerView.png" alt="" width="550" height="106" />
+<p class="img-caption">
+<strong>Figura 1</strong>. El widget <code>RecyclerView</code>.
+</p>
+
+<p>Para usar el widget {@link android.support.v7.widget.RecyclerView}, tienes que especificar un
+adaptador y un administrador de diseño. Para crear un adaptador, extiende la clase {@link
+android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter}. Los detalles
+de la implementación dependen de las especificaciones de tu conjunto de datos y los tipos de vistas. Para más
+información, consulta los <a href="#RVExamples">ejemplos</a> que figuran a continuación.</p>
+
+<div style="float:right">
+<img src="{@docRoot}design/material/images/list_mail.png" alt="" width="250" height="426" />
+<p class="img-caption" style="margin-left:8px">
+<strong>Figura 2</strong>. Listas con <code>RecyclerView</code>.
+</p>
+</div>
+
+<p>Un <strong>administrador de diseño</strong> posiciona las vistas de artículos dentro de un {@link
+android.support.v7.widget.RecyclerView} y determina cuándo volver a usar las vistas de elementos que ya
+no están visibles para el usuario. Para reutilizar (o <em>reciclar</em>) una vista, un administrador de diseño puede solicitarle al
+adaptador que reemplace el contenido de la vista con un elemento diferente del conjunto de datos. De esta manera,
+cuando se reciclan las vistas se mejora el rendimiento al evitar la creación de vistas innecesarias o
+realizar búsquedas costosas de {@link android.app.Activity#findViewById findViewById()}.</p>
+
+<p>{@link android.support.v7.widget.RecyclerView} te proporciona estos administradores de diseño incorporados:</p>
+
+<ul>
+<li>{@link android.support.v7.widget.LinearLayoutManager} muestra elementos en una lista de desplazamiento horizontal o
+vertical.</li>
+<li>{@link android.support.v7.widget.GridLayoutManager} muestra elementos en una cuadrícula.</li>
+<li>{@link android.support.v7.widget.StaggeredGridLayoutManager} muestra elementos en una cuadrícula escalonada.</li>
+</ul>
+
+<p>Para crear un administrador de diseño personalizado, extiende la clase {@link
+android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager}.</p>
+
+<h3>Animaciones</h3>
+
+<p>Las animaciones para agregar o eliminar elementos están permitidas en forma predeterminada en {@link
+android.support.v7.widget.RecyclerView}. Para personalizar estas animaciones, extiende la clase
+{@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} y usa
+el método {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()}.
+</p>
+
+<h3 id="RVExamples">Ejemplos</h3>
+
+<p>El siguiente ejemplo de códigos demuestra cómo agregar el widget
+{@link android.support.v7.widget.RecyclerView} a un diseño:</p>
+
+<pre>
+&lt;!-- A RecyclerView with some commonly used attributes -->
+&lt;android.support.v7.widget.RecyclerView
+    android:id="@+id/my_recycler_view"
+    android:scrollbars="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"/>
+</pre>
+
+<p>Una vez que hayas agregado un widget {@link android.support.v7.widget.RecyclerView} a tu diseño,
+obtén un identificador para el objeto, conéctalo a un administrador de diseño y adjunta un adaptador para los datos
+que se van a mostrar:</p>
+
+<pre>
+public class MyActivity extends Activity {
+    private RecyclerView mRecyclerView;
+    private RecyclerView.Adapter mAdapter;
+    private RecyclerView.LayoutManager mLayoutManager;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.my_activity);
+        mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
+
+        // use this setting to improve performance if you know that changes
+        // in content do not change the layout size of the RecyclerView
+        mRecyclerView.setHasFixedSize(true);
+
+        // use a linear layout manager
+        mLayoutManager = new LinearLayoutManager(this);
+        mRecyclerView.setLayoutManager(mLayoutManager);
+
+        // specify an adapter (see also next example)
+        mAdapter = new MyAdapter(myDataset);
+        mRecyclerView.setAdapter(mAdapter);
+    }
+    ...
+}
+</pre>
+
+<p>El adaptador proporciona acceso a los elementos en tu conjunto de datos, crea vistas para los elementos y
+reemplaza el contenido de algunas de las vistas con estos elementos de datos nuevos cuando el elemento original ya no está
+visible. El siguiente ejemplo de código muestra una implementación simple para un conjunto de datos que consta
+de una matriz de cadenas mostradas mediante el uso de widgets {@link android.widget.TextView}:</p>
+
+<pre>
+public class MyAdapter extends RecyclerView.Adapter&lt;MyAdapter.ViewHolder> {
+    private String[] mDataset;
+
+    // Provide a reference to the views for each data item
+    // Complex data items may need more than one view per item, and
+    // you provide access to all the views for a data item in a view holder
+    public static class ViewHolder extends RecyclerView.ViewHolder {
+        // each data item is just a string in this case
+        public TextView mTextView;
+        public ViewHolder(TextView v) {
+            super(v);
+            mTextView = v;
+        }
+    }
+
+    // Provide a suitable constructor (depends on the kind of dataset)
+    public MyAdapter(String[] myDataset) {
+        mDataset = myDataset;
+    }
+
+    // Create new views (invoked by the layout manager)
+    &#64;Override
+    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
+                                                   int viewType) {
+        // create a new view
+        View v = LayoutInflater.from(parent.getContext())
+                               .inflate(R.layout.my_text_view, parent, false);
+        // set the view's size, margins, paddings and layout parameters
+        ...
+        ViewHolder vh = new ViewHolder(v);
+        return vh;
+    }
+
+    // Replace the contents of a view (invoked by the layout manager)
+    &#64;Override
+    public void onBindViewHolder(ViewHolder holder, int position) {
+        // - get element from your dataset at this position
+        // - replace the contents of the view with that element
+        holder.mTextView.setText(mDataset[position]);
+
+    }
+
+    // Return the size of your dataset (invoked by the layout manager)
+    &#64;Override
+    public int getItemCount() {
+        return mDataset.length;
+    }
+}
+</pre>
+
+
+<div style="float:right;margin-top:15px;margin-left:30px">
+<img src="{@docRoot}design/material/images/card_travel.png" alt="" width="225" height="383">
+<p class="img-caption" style="margin-left:12px">
+<strong>Figura 3</strong>. Ejemplos de tarjetas.
+</p>
+</div>
+
+<h2 id="CardView">Crear tarjetas</h2>
+
+<p>{@link android.support.v7.widget.CardView} extiende la clase {@link android.widget.FrameLayout}
+y te permite mostrar información dentro de tarjetas que tienen una apariencia uniforme en la plataforma. Los widgets {@link
+android.support.v7.widget.CardView} pueden tener sombras y esquinas redondeadas.</p>
+
+<p>Para crear una tarjeta con una sombra, usa el atributo <code>card_view:cardElevation</code>.
+{@link android.support.v7.widget.CardView} usa elevación real y sombras dinámicas en Android 5.0
+(API nivel 21) y superior, y regresa a una implementación de sombras programáticas en versiones anteriores.
+Para más información, consulta <a href="{@docRoot}training/material/compatibility.html">Mantener
+la compatibilidad</a>.</p>
+
+<p>Usa estas propiedades para personalizar la apariencia del widget
+{@link android.support.v7.widget.CardView}:</p>
+
+<ul>
+  <li>Para establecer el radio de la esquina en tus diseños, usa el atributo <code>card_view:cardCornerRadius</code>.
+</li>
+  <li>Para establecer el radio en tu código, usa el método <code>CardView.setRadius</code>.</li>
+  <li>Para establecer el color de fondo de una tarjeta, usa el atributo <code>card_view:cardBackgroundColor</code>.
+</li>
+</ul>
+
+<p>El siguiente ejemplo de código muestra cómo incluir un widget {@link android.support.v7.widget.CardView}
+en tu diseño:</p>
+
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    ... >
+    &lt;!-- A CardView that contains a TextView -->
+    &lt;android.support.v7.widget.CardView
+        xmlns:card_view="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/card_view"
+        android:layout_gravity="center"
+        android:layout_width="200dp"
+        android:layout_height="200dp"
+        card_view:cardCornerRadius="4dp">
+
+        &lt;TextView
+            android:id="@+id/info_text"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
+    &lt;/android.support.v7.widget.CardView>
+&lt;/LinearLayout>
+</pre>
+
+<p>Para más información, consulta la referencia de la API para {@link android.support.v7.widget.CardView}.</p>
+
+
+<h2 id="Dependencies">Agregar dependencias</h2>
+
+<p>Los widgets {@link android.support.v7.widget.RecyclerView} y {@link android.support.v7.widget.CardView}
+son parte de las <a href="{@docRoot}tools/support-library/features.html#v7">Bibliotecas de
+soporte v7</a>. Para usar estos widgets en tu proyecto, agrega estas
+<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">Dependencias de Gradle</a> al módulo
+de tu aplicación:</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
diff --git a/docs/html-intl/intl/es/training/material/shadows-clipping.jd b/docs/html-intl/intl/es/training/material/shadows-clipping.jd
new file mode 100644
index 0000000..5509fc8
--- /dev/null
+++ b/docs/html-intl/intl/es/training/material/shadows-clipping.jd
@@ -0,0 +1,133 @@
+page.title=Definir vistas de recorte y sombras
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Esta lección te enseña a realizar lo siguiente:</h2>
+<ol>
+  <li><a href="#Elevation">Asignar elevación a tus vistas</a></li>
+  <li><a href="#Shadows">Personalizar vistas de sombras y contornos</a></li>
+  <li><a href="#Clip">Recortar vistas</a></li>
+</ol>
+<h2>También deberías leer</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Especificación de Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design en Android</a></li>
+</ul>
+</div>
+</div>
+
+<p>Material Design introduce una elevación para los elementos de la IU. La elevación ayuda a los usuarios a comprender la
+importancia relativa de cada elemento y a centrar su atención en la tarea para realizar.</p>
+
+<p>La elevación de una vista, representada por la propiedad Z, determina la apariencia visual de su
+sombra: las vistas con valores Z superiores, proyectan sombras más grandes y suaves. Las vistas con valores Z superiores ocluyen
+las vistas con valores Z inferiores. Sin embargo, el valor Z de una vista no afecta el tamaño de la vista.</p>
+
+<p>El padre de la vista elevada se encarga de dibujar las sombras y así, sujetas al recorte de vista estándar, son
+recortadas por el padre de manera predeterminada.</p>
+
+<p>La elevación también es útil para crear animaciones donde los widgets suben temporalmente sobre el
+plano visual cuando realizan alguna acción.</p>
+
+<p>Para más información sobre la elevación en Material Design, consulta
+<a href="http://www.google.com/design/spec/what-is-material/objects-in-3d-space.html">Objetos
+en el espacio 3D</a>.</p>
+
+
+<h2 id="Elevation">Asignar elevación a tus vistas</h2>
+
+<p>El valor Z de una vista cualquiera tiene dos componentes:
+
+<ul>
+<li>Elevación: El componente estático.</li>
+<li>Traducción: El componente dinámico usado para las animaciones.</li>
+</ul>
+
+<p><code>Z = elevation + translationZ</code></p>
+
+<img src="{@docRoot}training/material/images/shadows-depth.png" width="580" height="261" alt="" />
+<p class="img-caption"><strong>Figura 1</strong>: sombras para diferentes elevaciones de vistas.</p>
+
+<p>Para establecer la elevación de una vista al definir un diseño, usa el atributo <code>android:elevation</code>.
+ Para establecer la elevación de una vista en el código de una actividad, usa el método
+{@link android.view.View#setElevation View.setElevation()}.</p>
+
+<p>Para establecer la traducción de una vista, usa el método {@link android.view.View#setTranslationZ
+View.setTranslationZ()}.</p>
+
+<p>Los nuevos métodos {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} y {@link
+android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} te permiten
+animar fácilmente la elevación de las vistas. Para más información, consulta la referencia de la API para
+{@link android.view.ViewPropertyAnimator} y la guía del desarrollador <a href="{@docRoot}guide/topics/graphics/prop-animation.html">Animación de propiedades</a>.
+</p>
+
+<p>También puedes usar un {@link android.animation.StateListAnimator} para
+especificar estas animaciones de manera declarativa. Esto es especialmente útil para casos en donde los cambios de
+estados desencadenan animaciones, como cuando un usuario pulsa un botón. Para más información, consulta
+<a href="{@docRoot}training/material/animations.html#ViewState">Animar cambios de estados de las vistas</a>.</p>
+
+<p>Los valores Z se miden en dp (píxeles independientes de la densidad).</p>
+
+
+<h2 id="Shadows">Personalizar visualización de sombras y contornos</h2>
+
+<p>Los límites de la interfaz dibujable en segundo plano de una vista determinan la forma predeterminada de su sombra.
+Los <strong>contornos</strong> representan la forma externa de un objeto gráfico y definen el área del efecto de ondas
+para la respuesta táctil.</p>
+
+<p>Examina esta vista, definida con una interfaz dibujable en segundo plano:</p>
+
+<pre>
+&lt;TextView
+    android:id="@+id/myview"
+    ...
+    android:elevation="2dp"
+    android:background="@drawable/myrect" />
+</pre>
+
+<p>La interfaz dibujable en segundo plano está definida como un rectángulo con esquinas redondeadas:</p>
+
+<pre>
+&lt;!-- res/drawable/myrect.xml -->
+&lt;shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+    &lt;solid android:color="#42000000" />
+    &lt;corners android:radius="5dp" />
+&lt;/shape>
+</pre>
+
+<p>La vista proyecta una sombra con esquinas redondeadas, ya que la interfaz dibujable en segundo plano
+define el contorno de la vista. Un contorno personalizado reemplazaría la forma predeterminada de la sombra de una vista.</p>
+
+<p>Para definir un contorno personalizado para una vista en tu código:<p>
+
+<ol>
+<li>Extiende la clase {@link android.view.ViewOutlineProvider}.</li>
+<li>Reemplaza el método {@link android.view.ViewOutlineProvider#getOutline getOutline()}.</li>
+<li>Asigna el nuevo proveedor de contornos a tu vista con el método {@link
+android.view.View#setOutlineProvider View.setOutlineProvider()}.</li>
+</ol>
+
+<p>Puedes crear contornos rectangulares y ovalados con esquinas redondeadas mediante el uso de métodos en la clase
+{@link android.graphics.Outline}. El proveedor de contornos predeterminado para las
+vistas obtiene el contorno a partir del plano de fondo de la vista. Para evitar que una vista proyecte una sombra, establece su proveedor de contornos
+en <code>null</code>.</p>
+
+
+<h2 id="Clip">Recortar vistas</h2>
+
+<p>Recortar vistas te permite cambiar fácilmente la forma de una vista. Puedes recortar vistas para
+mantener la uniformidad con otros elementos del diseño o para cambiar la forma de una vista en respuesta a una señal de entrada del usuario.
+Puedes recortar una vista a partir de su área de contorno mediante el método {@link android.view.View#setClipToOutline
+View.setClipToOutline()} o el atributo <code>android:clipToOutline</code>. Solo
+los contornos rectangulares, circulares y redondeados admiten el recorte, según lo determinado por el método
+{@link android.graphics.Outline#canClip Outline.canClip()}.</p>
+
+<p>Para recortar una vista a partir de una interfaz dibujable, establece la interfaz dibujable como el plano de fondo de la vista
+(como se muestra más arriba) y llama al método {@link android.view.View#setClipToOutline View.setClipToOutline()}.
+</p>
+
+<p>Recortar vistas es una operación costosa, así que no animes la forma que usas para
+recortar una vista. Para lograr este efecto, usa la animación <a href="{@docRoot}training/material/animations.html#Reveal">Efecto revelar</a>.</p>
diff --git a/docs/html-intl/intl/es/training/material/theme.jd b/docs/html-intl/intl/es/training/material/theme.jd
new file mode 100644
index 0000000..d748c43
--- /dev/null
+++ b/docs/html-intl/intl/es/training/material/theme.jd
@@ -0,0 +1,131 @@
+page.title=Usar el tema Material
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Esta lección te enseña a realizar lo siguiente:</h2>
+<ol>
+  <li><a href="#ColorPalette">Personalizar la paleta de colores</a></li>
+  <li><a href="#StatusBar">Personalizar la barra de estado</a></li>
+  <li><a href="#Inheritance">Cambiar el tema de vistas individuales</a></li>
+</ol>
+<h2>También deberías leer</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Especificación de Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design en Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>El nuevo tema material proporciona:</p>
+
+<ul>
+  <li>Widgets del sistema que te permiten establecer la paleta de colores.</li>
+  <li>Animaciones para la respuesta táctil de los widgets del sistema.</li>
+  <li>Animaciones para transiciones de actividades</li>
+</ul>
+
+<p>Puedes personalizar la apariencia del tema material
+según la identidad de tu marca, con una paleta de colores que esté bajo tu control. Puedes cambiar el matiz de la barra de acción y
+la barra de estado mediante atributos de temas, como se muestra en la <a href="#fig3">figura 3</a>.</p>
+
+<p>Los widgets del sistema tienen un nuevo diseño y animaciones para respuesta táctil. Puedes personalizar tu aplicación cambiando su
+paleta de colores, las animaciones de la respuesta táctil y sus transiciones de actividades.</p>
+
+<p>El tema material se define como:</p>
+
+<ul>
+  <li><code>@android:style/Theme.Material</code> (versión oscura)</li>
+  <li><code>@android:style/Theme.Material.Light</code> (versión clara)</li>
+  <li><code>@android:style/Theme.Material.Light.DarkActionBar</code></li>
+</ul>
+
+<p>Para obtener una lista de estilos de Material, consulta la referencia de la API para
+{@link android.R.style R.style}.</p>
+
+<!-- two columns, dark/light material theme example -->
+<div style="width:700px;margin-top:25px;margin-bottom:10px">
+<div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
+  <img src="{@docRoot}design/material/images/MaterialDark.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>Figura 1</strong>. Tema Material oscuro</p>
+  </div>
+</div>
+<div style="float:left;width:250px;margin-right:0px;">
+  <img src="{@docRoot}design/material/images/MaterialLight.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>Figura 2</strong>. Tema Material claro</p>
+  </div>
+</div>
+<br style="clear:left">
+</div>
+
+<p class="note">
+<strong>Nota:</strong> El tema material solo está disponible en Android 5.0 (API nivel 21) y
+superior. Las <a href="{@docRoot}tools/support-library/features.html#v7">Bibliotecas de soporte v7</a>
+proporcionan temas con estilos de Material Design para algunos widgets y admiten la personalización de la paleta de
+colores. Para más información, consulta
+<a href="{@docRoot}training/material/compatibility.html">Mantener la compatibilidad</a>.
+</p>
+
+
+<h2 id="ColorPalette">Personalizar la paleta de colores</h2>
+
+<p style="margin-bottom:30px">Si deseas personalizar los colores base del tema para que se adapten a tu marca, define
+tus colores personalizados mediante los atributos de temas cuando heredes del tema material:</p>
+
+<pre>
+&lt;resources>
+  &lt;!-- inherit from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- Main theme colors -->
+    &lt;!--   your app branding color for the app bar -->
+    &lt;item name="android:colorPrimary">@color/primary&lt;/item>
+    &lt;!--   darker variant for the status bar and contextual app bars -->
+    &lt;item name="android:colorPrimaryDark">@color/primary_dark&lt;/item>
+    &lt;!--   theme UI controls like checkboxes and text fields -->
+    &lt;item name="android:colorAccent">@color/accent&lt;/item>
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<div style="float:right;margin-left:25px;margin-top:20px;margin-bottom:10px" id="fig3">
+<img src="{@docRoot}training/material/images/ThemeColors.png" width="250" height="445" />
+<p class="img-caption" style="margin-bottom:0px">
+<strong>Figura 3</strong>. Personalizar el tema material.</p>
+</div>
+
+
+<h2 id="StatusBar">Personalizar la barra de estado</h2>
+
+<p>El tema material te permite personalizar fácilmente la barra de estado, especifica un
+color que se adapte a tu marca y proporciona suficiente contraste para mostrar los íconos de estado en blanco. Si
+quieres establecer un color personalizado para la barra de estado, usa el atributo <code>android:statusBarColor</code>
+cuando extiendas el tema material. <code>android:statusBarColor</code> hereda el
+valor de <code>android:colorPrimaryDark</code> en forma predeterminada.</p>
+
+<p>También puedes dibujar por detrás de la barra de estado. Por ejemplo, si quieres que la barra de estado se
+muestre en forma transparente sobre una foto, aplica un sutil degradado oscuro para garantizar que los íconos
+de estado blancos sigan visibles. Para hacerlo, establece el atributo <code>android:statusBarColor</code> en
+<code>&#64;android:color/transparent</code> y ajusta los indicadores de la ventana según lo requerido. También puedes
+usar el método {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} para
+las animaciones o el difuminado.</p>
+
+<p class="note">
+<strong>Nota:</strong> La barra de estado casi siempre debe estar delimitada claramente de la
+barra de herramientas principal, excepto para los casos en donde muestres imágenes de un extremo a otro o contenido multimedia detrás
+de estas barras, y también cuando uses un degradado para garantizar que los íconos aún sean visibles.
+</p>
+
+<p>Cuando personalizas la barra de navegación y la barra de estado, haz que ambas sean transparentes o modifica
+solo la barra de estado. La barra de navegación debe permanecer de color negro en todos los otros casos.</p>
+
+
+<h2 id="Inheritance">Vistas individuales del tema</h3>
+
+<p>Los elementos en las definiciones de diseño XML pueden especificar el atributo <code>android:theme</code>,
+que hace referencia al recurso del tema. Este atributo modifica el tema para el elemento y cualquier
+elemento secundario, y esto es útil para modificar las paletas de colores de los temas en una porción específica
+de una interfaz.</p>
diff --git a/docs/html-intl/intl/in/design/get-started/principles.jd b/docs/html-intl/intl/in/design/get-started/principles.jd
new file mode 100644
index 0000000..9aed08e
--- /dev/null
+++ b/docs/html-intl/intl/in/design/get-started/principles.jd
@@ -0,0 +1,307 @@
+page.title=Prinsip Desain Android
+@jd:body
+
+<p>Prinsip desain ini dikembangkan oleh dan untuk Tim Pengalaman Pengguna
+ Android agar selalu mempertimbangkan kepentingan pengguna.
+Untuk pengembang dan desainer Android, mereka terus
+meletakkan dasar pedoman desain yang lebih detail untuk beragam tipe
+perangkat.</p>
+
+<p>
+Perhatikan prinsip-prinsip ini saat Anda menerapkan
+kreativitas dan pemikiran desain sendiri. Menyimpang dengan sengaja.
+</p>
+
+<h2 id="enchant-me">Pikat Saya</h2>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="delight-me">Senangkan saya dengan cara yang mengejutkan</h4>
+<p>Permukaan yang cantik, animasi yang ditempatkan dengan hati-hati, atau efek suara di saat yang tepat sungguh menyenangkan untuk
+dinikmati. Efek yang lembut menimbulkan perasaan serba mudah dan kesadaran bahwa kekuatan yang
+bisa diandalkan ada dalam genggaman.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_delight.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="real-objects-more-fun">Objek sungguhan lebih menyenangkan daripada tombol dan menu</h4>
+<p>Biarkan orang langsung menyentuh dan memanipulasi objek dalam aplikasi Anda. Ini mengurangi upaya kognitif
+yang diperlukan untuk menjalankan tugas sekaligus membuatnya lebih memuaskan secara emosional.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_real_objects.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="make-it-mine">Biarkan saya memilikinya</h4>
+<p>Orang suka menambahkan sentuhan pribadi karena membantu mereka merasa betah dan memegang kendali. Memberikan
+default yang pantas dan indah, tetapi juga mempertimbangkan penyesuaian opsional yang menyenangkan, yang tidak mengganggu
+tugas utama.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_make_it_mine.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="get-to-know-me">Kenali saya</h4>
+<p>Pelajari preferensi orang dari waktu ke waktu. Daripada meminta mereka untuk membuat pilihan yang sama
+berulang-ulang, tempatkan pilihan sebelumnya agar mudah dijangkau.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_get_to_know_me.png">
+
+  </div>
+</div>
+
+<h2 id="simplify-my-life">Sederhanakan Hidup Saya</h2>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="keep-it-brief">Persingkat</h4>
+<p>Gunakan frasa pendek dengan kata-kata sederhana. Orang cenderung melewatkan kalimat-kalimat panjang.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_keep_it_brief.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="pictures-faster-than-words">Gambar lebih cepat dibanding kata-kata</h4>
+<p>Pertimbangkan menggunakan gambar untuk menjelaskan gagasan. Gambar menarik perhatian orang dan bisa jauh lebih efisien
+dibanding kata-kata.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_pictures.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="decide-for-me">Putuskan untuk saya tetapi biarkan saya yang menentukan</h4>
+<p>Gunakan tebakan terbaik Anda dan bertindaklah daripada meminta terlebih dahulu. Terlalu banyak pilihan dan keputusan membuat orang
+tidak suka. Untuk berjaga-jaga jika Anda salah, izinkan 'pembatalan'.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_decide_for_me.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="only-show-when-i-need-it">Cukup tunjukkan yang saya perlukan ketika saya memerlukannya</h4>
+<p>Orang merasa kewalahan ketika melihat terlalu banyak hal sekaligus. Uraikan tugas dan informasi menjadi potongan-potongan
+kecil yang mudah dicerna. Sembunyikan opsi yang tidak perlu pada saat ini, dan ajari orang sambil jalan.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_information_when_need_it.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="always-know-where-i-am">Saya harus selalu tahu di mana saya berada</h4>
+<p>Beri orang kepercayaan diri bahwa mereka tahu di mana berada. Buat agar tempat-tempat dalam aplikasi Anda terlihat berbeda dan
+gunakan transisi untuk menunjukkan hubungan antar layar. Berikan umpan balik tentang tugas yang sedang berlangsung.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_navigation.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="never-lose-my-stuff">Jangan sekali-kali menghilangkan milik saya</h4>
+<p>Simpan apa yang telah susah-payah dibuat orang dan biarkan mereka mengaksesnya dari mana saja. Ingat pengaturan,
+sentuhan pribadi, dan kreasi lintas ponsel, tablet, dan komputer. Itu membuat pemutakhiran menjadi
+hal termudah di dunia.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_never_lose_stuff.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="looks-same-should-act-same">Jika terlihat sama, seharusnya fungsinya sama</h4>
+<p>Bantu orang merasakan perbedaan fungsional dengan membuat mereka terlihat berbeda daripada mirip.
+Hindari mode, yaitu tempat yang terlihat mirip tetapi berbeda fungsinya pada input yang sama.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_looks_same.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="interrupt-only-if-important">Sela saya jika penting saja</h4>
+<p>Layaknya asisten pribadi yang baik, lindungi orang dari detail yang tidak penting. Orang ingin tetap
+fokus, dan kecuali jika memang penting dan sensitif waktu, interupsi bisa melelahkan dan menjengkelkan.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_important_interruption.png">
+
+  </div>
+</div>
+
+<h2 id="make-me-amazing">Buat Saya Terpesona</h2>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="give-me-tricks">Beri saya trik yang efektif di mana saja</h4>
+<p>Orang merasa senang ketika mereka memahami sendiri sesuatu. Jadikan aplikasi Anda lebih mudah dipelajari dengan
+memanfaatkan pola visual dan memori otot dari aplikasi Android lainnya. Misalnya, gerakan menggeser
+dapat menjadi pintasan navigasi yang bagus.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_tricks.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="its-not-my-fault">Bukan salah saya</h4>
+<p>Bersikap ramahlah dalam meminta orang untuk melakukan koreksi. Mereka ingin merasa pintar ketika menggunakan
+aplikasi Anda. Jika terjadi kesalahan, berikan petunjuk perbaikan yang jelas tetapi lepaskan mereka dari detail teknis.
+Jika Anda dapat memperbaikinya secara diam-diam, tentu lebih baik.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_error.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="sprinkle-encouragement">Berikan dorongan</h4>
+<p>Uraikan tugas-tugas rumit menjadi langkah-langkah kecil yang dapat dilakukan dengan mudah. Beri umpan balik tentang tindakan,
+meskipun hanya sesuatu yang sederhana.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_sprinkle_encouragement.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="do-heavy-lifting-for-me">Lakukan pekerjaan yang sulit untuk saya</h4>
+<p>Buatlah pemula merasa seperti ahli dengan memungkinkan mereka untuk melakukan hal-hal yang mereka pikir tidak akan bisa. 
+Misalnya, pintasan yang menggabungkan beberapa efek foto dapat membuat foto amatir terlihat mengagumkan hanya
+dalam beberapa langkah.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_heavy_lifting.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="make-important-things-fast">Percepat hal penting</h4>
+<p>Tidak semua tindakan itu sama. Putuskan apa yang terpenting dalam aplikasi Anda dan permudah untuk menemukannya serta
+cepat untuk digunakan, seperti tombol rana pada kamera, atau tombol jeda pada pemutar musik.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_make_important_fast.png">
+
+  </div>
+</div>
diff --git a/docs/html-intl/intl/in/design/material/index.jd b/docs/html-intl/intl/in/design/material/index.jd
new file mode 100644
index 0000000..0cb4dbc
--- /dev/null
+++ b/docs/html-intl/intl/in/design/material/index.jd
@@ -0,0 +1,186 @@
+page.title=Material Design for Android
+page.tags=Material,design
+page.type=design
+page.image=images/cards/design-material-for-android_2x.jpg
+
+@jd:body
+
+<!-- developer docs box -->
+<a class="notice-developers right" href="{@docRoot}training/material/index.html">
+  <div>
+    <h3>Dokumen Pengembang</h3>
+    <p>Membuat Aplikasi dengan Desain Bahan</p>
+  </div>
+</a>
+
+<!-- video box -->
+<a class="notice-developers-video" href="https://www.youtube.com/watch?v=p4gmvHyuZzw">
+<div>
+    <h3>Video</h3>
+    <p>Pengantar Desain Bahan</p>
+</div>
+</a>
+
+<!-- video box -->
+<a class="notice-developers-video" href="https://www.youtube.com/watch?v=YaG_ljfzeUw">
+<div>
+    <h3>Video</h3>
+    <p>Kertas dan Tinta: Bahan Penting</p>
+</div>
+</a>
+
+<!-- video box -->
+<a class="notice-developers-video" href="https://www.youtube.com/watch?v=XOcCOBe8PTc">
+<div>
+    <h3>Video</h3>
+    <p>Desain Bahan di Aplikasi Google I/O</p>
+</div>
+</a>
+
+
+
+<p itemprop="description">Desain bahan adalah panduan komprehensif untuk desain visual, gerak, dan
+interaksi lintas platform dan perangkat. Android kini menyertakan dukungan untuk
+aplikasi desain bahan. Untuk menggunakan desain bahan di aplikasi Android, ikuti panduan yang didefinisikan
+dalam <a href="http://www.google.com/design/spec">spesifikasi desain bahan</a> dan gunakan
+komponen dan fungsionalitas baru yang tersedia di Android 5.0 (API level 21) ke atas.</p>
+
+<p>Android menyediakan elemen berikut untuk membangun aplikasi desain bahan:</p>
+
+<ul>
+  <li>Tema baru</li>
+  <li>Widget baru untuk tampilan yang kompleks</li>
+  <li>API baru untuk animasi dan bayangan custom</li>
+</ul>
+
+<p>Untuk informasi selengkapnya tentang mengimplementasikan desain bahan pada Android, lihat
+<a href="{@docRoot}training/material/index.html">Membuat Aplikasi dengan Desain Bahan</a>.</p>
+
+
+<h3>Tema Bahan</h3>
+
+<p>Tema bahan menyediakan gaya baru untuk aplikasi Anda, widget sistem yang memungkinkan Anda mengatur
+palet warnanya, dan animasi default untuk umpan balik sentuh dan transisi aktivitas.</p>
+
+<!-- two columns -->
+<div style="width:700px;margin-top:25px;margin-bottom:20px">
+<div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
+  <img src="{@docRoot}design/material/images/MaterialDark.png" width="500" height="238" />
+  <div style="width:140px;margin:0 auto">
+  <p style="margin-top:8px">Tema bahan gelap</p>
+  </div>
+</div>
+<div style="float:left;width:250px;margin-right:0px;">
+  <img src="{@docRoot}design/material/images/MaterialLight.png" width="500" height="238" />
+  <div style="width:140px;margin:0 auto">
+  <p style="margin-top:8px">Tema bahan terang</p>
+  </div>
+</div>
+<br style="clear:left"/>
+</div>
+
+<p>Untuk informasi selengkapnya, lihat <a href="{@docRoot}training/material/theme.html">Menggunakan Tema
+Bahan</a>.</p>
+
+
+<h3>Daftar dan Kartu</h3>
+
+<p>Android menyediakan dua widget baru untuk menampilkan kartu dan daftar dengan gaya desain bahan
+dan animasi:</p>
+
+<!-- two columns -->
+<div style="width:700px;margin-top:25px;margin-bottom:20px">
+<div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
+  <img src="{@docRoot}design/material/images/list_mail.png" width="500" height="426" />
+  <p>Widget <code>RecyclerView</code> baru adalah versi <code>ListView</code>
+ yang lebih mudah dimasukkan dan mendukung beragam tipe layout serta memberikan peningkatan kinerja.</p>
+</div>
+<div style="float:left;width:250px;margin-right:0px;">
+  <img src="{@docRoot}design/material/images/card_travel.png" width="500" height="426" />
+  <p>Widget <code>CardView</code> baru memungkinkan Anda menampilkan potongan informasi penting dalam
+  kartu yang memiliki tampilan dan cara kerja yang konsisten.</p>
+</div>
+<br style="clear:left"/>
+</div>
+
+<p>Untuk informasi selengkapnya, lihat <a href="{@docRoot}training/material/lists-cards.html">Membuat Daftar
+dan Kartu</a>.</p>
+
+
+<h3>Bayangan Tampilan</h3>
+
+<p>Selain properti X dan Y, tampilan di Android kini memiliki
+properti Z. Properti baru ini mewakili ketinggian tampilan, yang menentukan:</p>
+
+<ul>
+<li>Ukuran bayangan: tampilan dengan nilai Z lebih tinggi menghasilkan bayangan lebih besar.</li>
+<li>Urutan penggambaran: tampilan dengan nilai Z lebih tinggi muncul di atas tampilan lainnya.</li>
+</ul>
+
+<div style="width:290px;margin-left:35px;float:right">
+  <div class="framed-nexus5-port-span-5">
+  <video class="play-on-hover" autoplay>
+    <source src="{@docRoot}design/material/videos/ContactsAnim.mp4"/>
+    <source src="{@docRoot}design/videos/ContactsAnim.webm"/>
+    <source src="{@docRoot}design/videos/ContactsAnim.ogv"/>
+  </video>
+  </div>
+  <div style="font-size:10pt;margin-left:20px;margin-bottom:30px">
+    <em>Untuk memutar ulang film, klik layar perangkat</em>
+  </div>
+</div>
+
+<p>Untuk informasi selengkapnya, lihat <a href="{@docRoot}training/material/shadows-clipping.html">Mendefinisikan
+Bayangan dan Memangkas Tampilan</a>.</p>
+
+
+<h3>Animasi</h3>
+
+<p>API animasi baru memungkinkan Anda membuat animasi custom untuk umpan balik sentuh dalam kontrol UI,
+perubahan status tampilan, dan transisi aktivitas.</p>
+
+<p>API ini memungkinkan Anda:</p>
+
+<ul>
+<li style="margin-bottom:15px">
+Merespons kejadian sentuh dalam tampilan Anda dengan animasi <strong>umpan balik sentuh</strong>.
+</li>
+<li style="margin-bottom:15px">
+Menyembunyikan dan memperlihatkan tampilan dengan animasi <strong>membuka melingkar</strong>.
+</li>
+<li style="margin-bottom:15px">
+Peralihan antar aktivitas dengan animasi <strong>transisi aktivitas</strong> custom.
+</li>
+<li style="margin-bottom:15px">
+Membuat animasi yang lebih alami dengan <strong>gerak melengkung</strong>.
+</li>
+<li style="margin-bottom:15px">
+Menganimasikan perubahan dalam satu atau beberapa properti tampilan dengan animasi <strong>perubahan status tampilan</strong>.
+</li>
+<li style="margin-bottom:15px">
+Menampilkan animasi di <strong>drawable daftar status</strong> di antara perubahan status tampilan.
+</li>
+</ul>
+
+<p>Animasi umpan balik sentuh dimasukkan ke dalam beberapa tampilan standar, misalnya tombol. API baru
+ini memungkinkan Anda menyesuaikan animasi ini dan menambahkannya ke tampilan custom Anda.</p>
+
+<p>Untuk informasi selengkapnya, lihat <a href="{@docRoot}training/material/animations.html">Mendefinisikan Animasi
+Custom</a>.</p>
+
+
+<h3>Drawable</h3>
+
+<p>Kemampuan baru untuk drawable ini membantu Anda mengimplementasikan aplikasi desain bahan:</p>
+
+<ul>
+<li><strong>Drawable vektor</strong> bisa diubah skalanya tanpa kehilangan definisi dan cocok
+untuk ikon satu-warna dalam-aplikasi.</li>
+<li><strong>Pewarnaan drawable</strong> memungkinkan Anda mendefinisikan bitmap sebagai alpha-mask dan mewarnainya
+saat runtime.</li>
+<li><strong>Ekstraksi warna</strong> memungkinkan Anda mengekstrak warna mencolok secara otomatis dari
+gambar bitmap.</li>
+</ul>
+
+<p>Untuk informasi selengkapnya, lihat <a href="{@docRoot}training/material/drawables.html">Bekerja dengan
+Drawable</a>.</p>
diff --git a/docs/html-intl/intl/in/design/patterns/compatibility.jd b/docs/html-intl/intl/in/design/patterns/compatibility.jd
new file mode 100644
index 0000000..cafaac4
--- /dev/null
+++ b/docs/html-intl/intl/in/design/patterns/compatibility.jd
@@ -0,0 +1,70 @@
+page.title=Kompatibilitas Mundur
+page.tags="support"
+page.metaDescription=Catatan tentang bagaimana Android 4.x menyesuaikan UI yang didesain untuk perangkat keras dan versi OS yang lebih lama.
+@jd:body
+
+<a class="notice-developers" href="{@docRoot}training/basics/supporting-devices/index.html">
+  <div>
+    <h3>Dokumen Pengembang</h3>
+    <p>Mendukung Perangkat Berbeda</p>
+  </div>
+</a>
+
+<p>Perubahan signifikan dalam Android 3.0 meliputi:</p>
+<ul>
+<li>Dihilangkannya tombol perangkat keras navigasi (Back, Menu, Search, Home) untuk membantu menangani navigasi
+  melalui kontrol maya (Back, Home, Recents).</li>
+<li>Pola yang tangguh untuk penggunaan menu pada action-bar.</li>
+</ul>
+<p>Android 4.0 membawa perubahan ini untuk tablet dengan platform ponsel.</p>
+
+<h2 id="older-hardware">Menyesuaikan Android 4.0 dengan Perangkat Keras dan Aplikasi yang Lebih Lama</h2>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>Ponsel dengan kontrol navigasi virtual</h4>
+<p>Aplikasi Android yang ditulis untuk Android 3.0 dan yang lebih baru menampilkan tindakan dalam action-bar. Tindakan yang tidak
+muat dalam action-bar atau tidak cukup penting untuk ditampilkan di tingkat atas akan muncul dalam
+action-overflow.</p>
+<p>Pengguna mengakses action-overflow dengan menyentuhnya dalam action-bar.</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_virtual_nav.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>Ponsel dengan tombol navigasi fisik</h4>
+<p>Ponsel Android dengan tombol perangkat keras navigasi biasa tidak menampilkan baris navigasi virtual di
+bagian bawah layar. Sebagai gantinya, action-overflow tersedia dari tombol perangkat keras menu. Popup
+tindakan yang dihasilkan memiliki gaya yang sama dengan contoh sebelumnya, tetapi ditampilkan di bagian bawah layar.</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_physical_buttons.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>Aplikasi lama pada ponsel dengan kontrol navigasi virtual</h4>
+<p>Bila Anda menjalankan aplikasi yang dibuat untuk Android 2.3 atau yang lebih lama pada ponsel
+dengan kontrol navigasi virtual, sebuah kontrol action-overflow akan muncul di sebelah kanan baris navigasi virtual. Anda
+dapat menyentuh kontrol itu untuk menampilkan tindakan aplikasi dalam gaya menu Android biasa.</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_legacy_apps.png">
+
+  </div>
+</div>
diff --git a/docs/html-intl/intl/in/design/patterns/confirming-acknowledging.jd b/docs/html-intl/intl/in/design/patterns/confirming-acknowledging.jd
new file mode 100644
index 0000000..d22e924
--- /dev/null
+++ b/docs/html-intl/intl/in/design/patterns/confirming-acknowledging.jd
@@ -0,0 +1,70 @@
+page.title=Mengonfirmasi &amp; Mengakui
+page.tags=dialog,toast,notification
+@jd:body
+
+<p>Dalam beberapa situasi, bila pengguna memanggil suatu tindakan dalam aplikasi Anda, ada baiknya <em>mengonfirmasi</em> atau <em>mengakui</em> tindakan itu melalui teks.</p>
+
+<div class="cols">
+  <div class="col-6">
+    <img src="{@docRoot}design/media/confirm_ack_confirming.png">
+    <p><strong>Mengonfirmasi</strong> adalah meminta pengguna untuk memverifikasi bahwa mereka benar-benar ingin melanjutkan tindakan yang baru saja mereka panggil. Dalam beberapa kasus, konfirmasi ditampilkan bersama-sama dengan peringatan atau informasi penting yang terkait dengan tindakan yang perlu mereka pertimbangkan.</p>
+  </div>
+  <div class="col-6">
+    <img src="{@docRoot}design/media/confirm_ack_acknowledge.png">
+    <p><strong>Mengakui</strong> adalah menampilkan teks untuk memberi tahu pengguna bahwa tindakan yang baru mereka panggil sudah dilakukan. Ini menghilangkan ketidakpastian tentang operasi implisit yang dilakukan sistem. Dalam beberapa kasus, pengakuan ditampilkan bersama dengan opsi untuk membatalkan tindakan.</p>
+  </div>
+</div>
+
+<p>Berkomunikasi pada pengguna dengan cara ini bisa membantu mengurangi ketidakpastian tentang hal-hal yang sudah atau akan terjadi. Mengonfirmasi atau mengakui juga dapat mencegah pengguna melakukan kesalahan yang akan mereka sesali.</p>
+
+<h2>Kapan Harus Mengonfirmasi atau Mengakui Tindakan Pengguna</h2>
+<p>Tidak semua tindakan memerlukan konfirmasi atau pengakuan. Gunakan bagan alur ini untuk memandu keputusan desain Anda.</p>
+<img src="{@docRoot}design/media/confirm_ack_flowchart.png">
+
+<h2>Mengonfirmasi</h2>
+<div class="cols">
+  <div class="col-6">
+    <h4>Contoh: Google Play Books</h4>
+    <img src="{@docRoot}design/media/confirm_ack_ex_books.png">
+    <p>Dalam contoh ini, pengguna telah meminta untuk menghapus sebuah buku dari perpustakaan Google Play mereka. Sebuah <a href="{@docRoot}design/building-blocks/dialogs.html#alerts">peringatan</a> muncul untuk mengonfirmasi tindakan ini karena perlu dipahami bahwa buku tersebut tidak akan tersedia lagi dari perangkat apa pun.</p>
+    <p>Saat membuat dialog konfirmasi, buat judul bermakna dengan mencerminkan tindakan yang diminta.</p>
+  </div>
+  <div class="col-7">
+    <h4>Contoh: Android Beam</h4>
+    <img src="{@docRoot}design/media/confirm_ack_ex_beam.png">
+    <p>Konfirmasi tidak harus ditampilkan dalam peringatan dengan dua tombol. Setelah menjalankan Android Beam, pengguna diminta untuk menyentuh konten yang akan dibagikan (dalam contoh ini, sebuah foto). Jika mereka memutuskan untuk tidak melanjutkan, mereka tinggal memindahkan ponsel.</p>
+  </div>
+</div>
+
+<h2>Mengakui</h2>
+<div class="cols">
+  <div class="col-6">
+    <h4>Contoh: Draf Gmail batal yang disimpan</h4>
+    <img src="{@docRoot}design/media/confirm_ack_ex_draftsave.png">
+    <p>Dalam contoh ini, jika pengguna menyusuri ke belakang atau ke atas dari layar pembuatan email di Gmail, sesuatu yang tak diharapkan bisa terjadi: draf saat itu akan disimpan secara otomatis. Pengakuan dalam bentuk pemberitahuan akan lebih jelas. Ini menghilang setelah beberapa detik.</p>
+    <p>Pembatalan tidak cocok di sini karena penyimpanan dilakukan oleh aplikasi, bukan pengguna. Cepat dan mudah untuk melanjutkan penulisan pesan dengan menyusuri daftar draf.</p>
+
+  </div>
+  <div class="col-6">
+    <h4>Contoh: Percakapan Gmail dihapus</h4>
+    <img src="{@docRoot}design/media/confirm_ack_draft_deleted.png">
+    <p>Setelah pengguna menghapus percakapan dari daftar dalam Gmail, sebuah pengakuan muncul tanpa opsi pembatalan. Pengakuan tetap ada sampai pengguna melakukan tindakan yang tidak berkaitan, seperti menggulir daftar.</p>
+  </div>
+</div>
+
+<h2>Tidak ada Konfirmasi atau Pengakuan</h2>
+<div class="cols">
+  <div class="col-6">
+    <h4>Contoh: memberikan +1</h4>
+    <img style="padding: 33px 0 30px;" src="{@docRoot}design/media/confirm_ack_ex_plus1.png">
+    <p><strong>Konfirmasi tidak diperlukan</strong>. Jika pengguna telah memberikan +1 secara tidak sengaja, tidak masalah. Mereka cukup menyentuh kembali tombol itu untuk membatalkan tindakan.</p>
+    <p><strong>Pengakuan tidak diperlukan</strong>. Pengguna akan melihat tombol +1 memantul dan berubah merah. Itu tanda yang sangat jelas.</p>
+  </div>
+  <div class="col-7">
+    <h4>Contoh: Menghapus aplikasi dari Layar Beranda</h4>
+    <img src="{@docRoot}design/media/confirm_ack_ex_removeapp.png">
+    <p><strong>Konfirmasi tidak diperlukan</strong>. Ini adalah tindakan yang disengaja: pengguna harus menyeret dan meletakkan sebuah item di atas target yang relatif besar dan terpisah. Karena itu, kecil kemungkinan terjadi ketidaksengajaan. Tetapi jika pengguna menyesali keputusan itu, maka hanya perlu beberapa detik untuk mengembalikannya lagi.</p>
+    <p><strong>Pengakuan tidak diperlukan</strong>. Pengguna akan mengetahui bahwa aplikasi itu tidak ada di Layar Beranda karena mereka menghilangkannya dengan cara menyeretnya.</p>
+
+  </div>
+</div>
diff --git a/docs/html-intl/intl/in/design/patterns/navigation.jd b/docs/html-intl/intl/in/design/patterns/navigation.jd
new file mode 100644
index 0000000..a8afaaa
--- /dev/null
+++ b/docs/html-intl/intl/in/design/patterns/navigation.jd
@@ -0,0 +1,213 @@
+page.title=Navigasi dengan Back dan Up
+page.tags="navigation","activity","task","up navigation","back navigation"
+page.image=/design/media/navigation_between_siblings_gmail.png
+@jd:body
+
+<a class="notice-developers" href="{@docRoot}training/implementing-navigation/index.html">
+  <div>
+    <h3>Dokumen Pengembang</h3>
+    <p>Mengimplementasikan Navigasi yang Efektif</p>
+  </div>
+</a>
+
+<p itemprop="description">Navigasi yang konsisten merupakan komponen penting dari keseluruhan pengalaman pengguna. Hampir tidak ada yang lebih membingungkan
+pengguna selain navigasi dasar yang perilakunya tidak konsisten dan tidak sesuai harapan. Android 3.0
+memperkenalkan perubahan besar dalam perilaku navigasi global. Mengikuti dengan saksama
+panduan untuk Back dan Up akan membuat navigasi aplikasi Anda dapat diprediksi dan dapat diandalkan pengguna.</p>
+<p>Android 2.3 dan versi sebelumnya mengandalkan tombol <em>Back</em> sistem untuk mendukung navigasi dalam
+aplikasi. Dengan diperkenalkannya action-bar dalam Android 3.0, mekanisme navigasi kedua muncul:
+tombol <em>Up</em>, yang terdiri dari ikon aplikasi dan tanda panah yang menunjuk ke kiri.</p>
+
+<img src="{@docRoot}design/media/navigation_with_back_and_up.png">
+
+<h2 id="up-vs-back">Up vs. Back</h2>
+
+<p>Tombol Up digunakan untuk berpindah dalam aplikasi berdasarkan hubungan hierarki
+antar layar. Misalnya, jika layar A menampilkan daftar item, dan memilih sebuah item akan membuka
+layar B (yang menampilkan item tersebut secara lebih detail), maka layar B akan menawarkan tombol Up untuk
+kembali ke layar A.</p>
+<p>Jika suatu layar merupakan yang teratas dalam aplikasi (yaitu layar Home aplikasi), maka tidak perlu menampilkan tombol
+Up.</p>
+
+<p>Tombol Back sistem digunakan untuk berpindah, dalam urutan kronologis terbalik, melalui riwayat
+layar yang baru dibuka oleh pengguna. Biasanya ini berdasarkan hubungan sementara
+antar layar, dan bukan hierarki aplikasi.</p>
+
+<p>Bila layar yang dilihat sebelumnya juga merupakan induk hierarki dari layar yang sekarang, menekan tombol
+Back akan sama hasilnya dengan menekan tombol Up&mdash;ini adalah kejadian
+biasa. Akan tetapi, berbeda dengan tombol Up, yang memastikan pengguna tetap berada dalam aplikasi Anda, tombol Back
+dapat mengembalikan pengguna ke layar Home, atau bahkan ke aplikasi lain.</p>
+
+<img src="{@docRoot}design/media/navigation_up_vs_back_gmail.png">
+
+<p>Tombol Back juga mendukung beberapa perilaku yang tidak terkait langsung dengan navigasi antar layar:
+</p>
+<ul>
+<li>Menghilangkan jendela mengambang (dialog, popup)</li>
+<li>Menghilangkan action-bar kontekstual, dan menghapus sorotan dari item yang dipilih</li>
+<li>Menyembunyikan keyboard di layar (IME)</li>
+</ul>
+<h2 id="within-app">Navigasi Dalam Aplikasi Anda</h2>
+
+<h4>Berpindah ke layar yang memiliki beberapa titik masuk</h4>
+<p>Kadang-kadang layar tidak memiliki posisi pasti dalam hierarki aplikasi, dan bisa dimasuki
+dari berbagai titik masuk&mdash;seperti layar pengaturan yang dapat dibuka dari layar lain
+dalam aplikasi Anda. Dalam hal ini, tombol Up akan memilih untuk kembali ke layar pengarah, yang cara kerjanya
+sama dengan tombol Back.</p>
+<h4>Mengubah tampilan dalam layar</h4>
+<p>Mengubah opsi tampilan untuk layar tidak mengubah perilaku Up atau Back: layar tetap
+berada di tempat yang sama dalam hierarki aplikasi, dan tidak dibuat riwayat navigasi yang baru.</p>
+<p>Contoh perubahan tampilan tersebut adalah:</p>
+<ul>
+<li>Mengganti tampilan menggunakan tab dan/atau geser kiri dan kanan</li>
+<li>Mengubah tampilan menggunakan tarik-turun (alias tab turun)</li>
+<li>Memfilter daftar</li>
+<li>Menyortir daftar</li>
+<li>Mengubah karakteristik tampilan (seperti zoom)</li>
+</ul>
+<h4>Berpindah antar layar yang seinduk</h4>
+<p>Bila aplikasi Anda mendukung navigasi dari daftar item ke tampilan detail salah satu item tersebut, aplikasi
+juga sering diharapkan mendukung navigasi langsung dari item itu ke item sebelumnya atau
+sesudahnya dalam daftar. Misalnya, dalam Gmail, begitu mudah untuk bergeser ke kiri atau kanan dari sebuah percakapan
+untuk melihat percakapan yang lebih baru atau lebih lama dalam Inbox yang sama. Sama seperti saat mengubah tampilan dalam layar, navigasi
+ini tidak mengubah perilaku Up atau Back.</p>
+
+<img src="{@docRoot}design/media/navigation_between_siblings_gmail.png">
+
+<p>Akan tetapi, pengecualian khusus terhadap hal ini terjadi saat menjelajah di antara tampilan detail terkait yang tidak disatukan
+oleh daftar yang merujuknya&mdash;misalnya, saat menjelajahi Play Store di antara aplikasi dari
+pengembang yang sama, atau album dari artis yang sama. Dalam hal ini, mengikuti setiap tautan akan membuat
+riwayat, sehingga tombol Back akan menyusuri setiap layar yang dilihat sebelumnya. Tombol Up akan terus
+melewatkan semua layar terkait ini dan berpindah ke layar kontainer yang terakhir dilihat.</p>
+
+<img src="{@docRoot}design/media/navigation_between_siblings_market1.png">
+
+<p>Anda dapat menjadikan perilaku tombol Up lebih cerdas lagi berdasarkan pengetahuan Anda tentang tampilan
+detail. Dengan memperluas contoh Play Store dari atas, bayangkan pengguna yang telah berpindah dari Buku
+terakhir yang dilihat ke detail untuk adaptasi Film. Dalam hal itu, tombol Up dapat kembali ke kontainer
+(Movies) yang sebelumnya belum dilalui pengguna.</p>
+
+<img src="{@docRoot}design/media/navigation_between_siblings_market2.png">
+
+<h2 id="into-your-app">Navigasi ke Aplikasi Anda melalui Widget dan Pemberitahuan Layar Home</h2>
+
+<p>Anda bisa menggunakan widget atau pemberitahuan layar Home untuk membantu pengguna berpindah langsung ke layar
+jauh dalam hierarki aplikasi Anda. Misalnya, widget Inbox dan pemberitahuan pesan baru di Gmail dapat
+melewatkan layar Inbox, dan membawa pengguna langsung ke tampilan percakapan.</p>
+
+<p>Untuk kedua kasus ini, tangani tombol Up sebagai berikut:</p>
+
+<ul>
+<li><em>Jika layar tujuan biasanya dicapai dari satu layar tertentu dalam aplikasi
+Anda</em>, tombol Up akan mengarahkannya ke layar itu.</li>
+<li><em>Jika tidak</em>, tombol Up akan mengarahkan ke layar teratas ("Home") dari aplikasi Anda.</li>
+</ul>
+
+<p>Dalam hal tombol Back, Anda harus membuat navigasi lebih bisa diprediksi dengan menyisipkan ke dalam
+back-stack tugas path navigasi naik lengkap menuju layar teratas aplikasi. Ini memungkinkan pengguna
+yang lupa cara masuk ke aplikasi Anda untuk berpindah ke layar teratas aplikasi sebelum
+keluar.</p>
+
+<p>Sebagai contoh, widget layar Home di Gmail memiliki tombol untuk menuju langsung ke layar
+Compose. Tombol Up atau Back dari layar Compose akan membawa pengguna ke Inbox, dan dari sana tombol
+Back berlanjut ke Home.</p>
+
+<img src="{@docRoot}design/media/navigation_from_outside_back.png">
+
+<h4>Pemberitahuan tidak langsung</h4>
+
+<p>Jika aplikasi Anda perlu menampilkan informasi tentang beberapa kejadian sekaligus, aplikasi dapat menggunakan
+pemberitahuan tunggal yang mengarahkan pengguna ke layar antara. Layar ini merangkum semua
+kejadian tersebut, dan menyediakan path bagi pengguna untuk menjelajah ke dalam aplikasi. Pemberitahuan dengan gaya seperti ini
+disebut <em>pemberitahuan tidak langsung</em>.</p>
+
+<p>Berbeda dengan pemberitahuan standar (langsung), menekan tombol Back dari 
+layar antara pada pemberitahuan tidak langsung akan mengembalikan pengguna ke titik pemicu pemberitahuan tersebut&mdash;tidak ada
+layar tambahan yang disisipkan ke dalam back-stack. Setelah pengguna melanjutkan ke dalam aplikasi dari
+layar antara, tombol Up dan Back akan berperilaku seperti pada pemberitahuan standar, sebagaimana dijelaskan di atas:
+menyusuri ke dalam aplikasi dan bukan kembali ke layar antara.</p>
+
+<p>Misalnya, anggaplah seorang pengguna di Gmail menerima pemberitahuan tidak langsung dari Kalender. Menyentuh
+pemberitahuan ini akan membuka layar antara, yang menampilkan pengingat beberapa macam
+kejadian. Menyentuh Back dari layar antara akan mengembalikan pengguna ke Gmail. Menyentuh kejadian
+tertentu akan membawa pengguna dari layar antara ke aplikasi Kalender lengkap untuk menampilkan detail
+kejadian. Dari detail kejadian, tombol Up dan Back akan mengarahkan ke tampilan Kalender tingkat atas.</p>
+
+<img src="{@docRoot}design/media/navigation_indirect_notification.png">
+
+<h4>Pemberitahuan pop-up</h4>
+
+<p><em>Pemberitahuan pop-up</em> akan melewatkan laci pemberitahuan, bukan muncul secara langsung di
+hadapan pengguna. Ini jarang digunakan, dan <strong>harus dicadangkan untuk peristiwa yang memerlukan respons tepat waktu
+dan diperlukan interupsi dari konteks pengguna</strong>. Misalnya,
+Talk menggunakan gaya ini untuk memberi tahu pengguna tentang ajakan dari teman untuk bergabung dalam chatting video, karena
+ajakan ini akan kedaluwarsa secara otomatis setelah beberapa detik.</p>
+
+<p>Dalam hal perilaku navigasi, pemberitahuan pop-up sangat mirip perilaku pemberitahuan
+tidak langsung pada layar antara. Tombol Back akan menghilangkan pemberitahuan pop-up. Jika pengguna berpindah
+dari pop-up ke aplikasi yang memberi tahu, tombol Up dan Back akan mengikuti aturan pemberitahuan standar,
+berpindah dalam aplikasi.</p>
+
+<img src="{@docRoot}design/media/navigation_popup_notification.png">
+
+<h2 id="between-apps">Navigasi Antar Aplikasi</h2>
+
+<p>Salah satu kekuatan dasar sistem Android adalah kemampuan aplikasi untuk saling
+mengaktifkan, sehingga pengguna dapat berpindah langsung dari satu aplikasi ke aplikasi lainnya. Misalnya, sebuah
+aplikasi yang perlu mengambil foto dapat mengaktifkan aplikasi Kamera, yang akan mengembalikan foto
+ke aplikasi perujuk. Ini sangat menguntungkan pengembang, yang bisa dengan mudah memanfaatkan
+kode dari aplikasi lain, maupun pengguna, yang menikmati pengalaman konsisten untuk tindakan yang biasa
+dilakukan.</p>
+
+<p>Untuk memahami navigasi antar aplikasi, maka perlu memahami perilaku kerangka kerja Android
+yang akan dibahas di bawah ini.</p>
+
+<h4>Aktivitas, tugas, dan intent</h4>
+
+<p>Dalam Android, <strong>aktivitas</strong> adalah komponen aplikasi yang mendefinisikan layar
+informasi dan semua tindakan terkait yang dapat dilakukan pengguna. Aplikasi Anda adalah kumpulan
+aktivitas, yang terdiri dari aktivitas yang Anda buat dan aktivitas yang Anda gunakan ulang dari aplikasi lain.</p>
+
+<p><strong>Tugas</strong> adalah urutan aktivitas yang diikuti pengguna untuk mencapai tujuan. 
+Tugas tunggal dapat memanfaatkan aktivitas dari satu aplikasi saja, atau dapat memanfaatkan aktivitas dari sejumlah
+aplikasi berbeda.</p>
+
+<p><strong>Intent</strong> adalah mekanisme bagi satu aplikasi untuk memberi isyarat minta bantuan
+aplikasi lain dalam menjalankan suatu tindakan. Aktivitas aplikasi dapat menunjukkan intent
+ apa saja yang dapat diresponsnya. Untuk intent umum seperti "Share", pengguna mungkin telah menginstal beberapa aplikasi
+yang dapat memenuhi permintaan itu.</p>
+
+<h4>Contoh: berpindah antar aplikasi untuk mendukung berbagi</h4>
+
+<p>Untuk memahami cara kerja sama aktivitas, tugas, dan intent, perhatikan bagaimana sebuah aplikasi memungkinkan pengguna
+untuk berbagi konten dengan menggunakan aplikasi lain. Misalnya, membuka aplikasi Play Store dari Home akan memulai
+Task A baru (lihat gambar di bawah). Setelah menyusuri Play Store dan menyentuh buku yang dipromosikan
+untuk melihat detailnya, pengguna tetap berada dalam tugas yang sama, memperluasnya dengan menambahkan aktivitas. Memicu
+tindakan Share akan memberi tahu pengguna dengan dialog berisi daftar aktivitas (dari aplikasi berbeda)
+yang telah terdaftar untuk menangani intent Share.</p>
+
+<img src="{@docRoot}design/media/navigation_between_apps_inward.png">
+
+<p>Bila pengguna memilih untuk berbagi melalui Gmail, aktivitas penulisan di Gmail akan ditambahkan sebagai kelanjutan dari
+Task A&mdash;tidak ada tugas baru yang dibuat. Jika Gmail sedang menjalankan tugasnya di latar belakang, maka
+tidak akan terpengaruh.</p>
+
+<p>Dari aktivitas penulisan, mengirim pesan atau menyentuh tombol Back akan mengembalikan pengguna ke
+aktivitas detail buku tersebut. Penyentuhan tombol Back berikutnya akan terus mengarahkan kembali melalui Play
+Store, sampai akhirnya tiba di Home.</p>
+
+<img src="{@docRoot}design/media/navigation_between_apps_back.png">
+
+<p>Akan tetapi, dengan menyentuh tombol Up dari aktivitas penulisan, pengguna menunjukkan keinginan untuk tetap berada di
+Gmail. Aktivitas daftar percakapan Gmail muncul, Task B yang baru akan dibuat untuk itu. Tugas baru
+selalu terkait ke Home, maka menyentuh tombol Back dari daftar percakapan akan mengembalikan ke sana.</p>
+
+<img src="{@docRoot}design/media/navigation_between_apps_up.png">
+
+<p>Task A tetap berjalan di latar belakang, dan pengguna nanti dapat kembali ke sana (misalnya, melalui layar
+Recents). Jika Gmail sedang menjalankan tugasnya di latar belakang, maka itu akan digantikan
+dengan Task B&mdash;konteks sebelumnya akan diabaikan demi tujuan baru pengguna.</p>
+
+<p>Jika register aplikasi Anda menangani intent dengan aktivitas yang jauh di dalam hierarki aplikasi,
+lihat <a href="#into-your-app">Navigasi Aplikasi Anda melalui Widget Layar Home dan
+Pemberitahuan</a> untuk panduan mengenai cara menetapkan navigasi Up.</p>
diff --git a/docs/html-intl/intl/in/guide/components/activities.jd b/docs/html-intl/intl/in/guide/components/activities.jd
new file mode 100644
index 0000000..6cac696
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/components/activities.jd
@@ -0,0 +1,756 @@
+page.title=Aktivitas
+page.tags=aktivitas,intent
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Dalam dokumen ini</h2>
+<ol>
+  <li><a href="#Creating">Membuat Aktivitas</a>
+    <ol>
+      <li><a href="#UI">Mengimplementasikan antarmuka pengguna</a></li>
+      <li><a href="#Declaring">Mendeklarasikan aktivitas dalam manifes</a></li>
+    </ol>
+  </li>
+  <li><a href="#StartingAnActivity">Memulai Aktivitas</a>
+    <ol>
+      <li><a href="#StartingAnActivityForResult">Memulai aktivitas agar berhasil</a></li>
+    </ol>
+  </li>
+  <li><a href="#ShuttingDown">Mematikan Aktivitas</a></li>
+  <li><a href="#Lifecycle">Mengelola Daur Hidup Aktivitas</a>
+    <ol>
+      <li><a href="#ImplementingLifecycleCallbacks">Mengimplementasikan callback daur hidup</a></li>
+      <li><a href="#SavingActivityState">Menyimpan status aktivitas</a></li>
+      <li><a href="#ConfigurationChanges">Menangani perubahan konfigurasi</a></li>
+      <li><a href="#CoordinatingActivities">Mengoordinasikan aktivitas</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>Kelas-kelas utama</h2>
+<ol>
+  <li>{@link android.app.Activity}</li>
+</ol>
+
+<h2>Lihat juga</h2>
+<ol>
+  <li><a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tugas dan
+Back-Stack</a></li>
+</ol>
+
+</div>
+</div>
+
+
+
+<p>{@link android.app.Activity} adalah sebuah komponen aplikasi yang menyediakan layar yang digunakan
+pengguna untuk berinteraksi guna melakukan sesuatu, misalnya memilih nomor telepon, mengambil foto, mengirim email, atau
+menampilkan peta. Tiap aktivitas diberi sebuah jendela untuk menggambar antarmuka penggunanya. Jendela ini
+biasanya mengisi layar, namun mungkin lebih kecil daripada layar dan mengambang di atas
+jendela lain.</p>
+
+<p> Sebuah aplikasi biasanya terdiri atas beberapa aktivitas yang terikat secara longgar
+satu sama lain. Biasanya, satu aktivitas dalam aplikasi ditetapkan sebagai aktivitas "utama", yang
+ditampilkan kepada pengguna saat membuka aplikasi untuk pertama kali. Tiap
+aktivitas kemudian bisa memulai aktivitas lain untuk melakukan berbagai tindakan. Tiap kali 
+aktivitas baru dimulai, aktivitas sebelumnya akan dihentikan, namun sistem mempertahankan aktivitas
+dalam sebuah tumpukan ("back-stack"). Bila sebuah aktivitas baru dimulai, aktivitas itu akan didorong ke atas back-stack dan
+mengambil fokus pengguna. Back-stack mematuhi mekanisme dasar tumpukan "masuk terakhir, keluar pertama",
+jadi, bila pengguna selesai dengan aktivitas saat ini dan menekan tombol <em>Back</em>, aktivitas
+akan dikeluarkan dari tumpukan (dan dimusnahkan) dan aktivitas sebelumnya akan dilanjutkan. (Back-stack
+dibahas selengkapnya dalam dokumen <a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tugas
+dan Back-Stack</a>.)</p>
+
+<p>Bila aktivitas dihentikan karena ada aktivitas baru yang dimulai, aktivitas lama akan diberi tahu tentang perubahan status ini
+melalui metode callback daur hidupnya.
+Ada beberapa metode callback yang mungkin diterima aktivitas, karena sebuah perubahan dalam
+statusnya&mdash;apakah sistem sedang membuatnya, menghentikannya, melanjutkannya, atau menghapuskannya&mdash;dan
+masing-masing callback memberi Anda kesempatan melakukan pekerjaan tertentu yang
+sesuai untuk perubahan status itu. Misalnya, bila dihentikan, aktivitas Anda harus melepas 
+objek besar, seperti koneksi jaringan atau database. Bila aktivitas dilanjutkan, Anda bisa
+memperoleh kembali sumber daya yang diperlukan dan melanjutkan tindakan yang terputus. Transisi status ini
+semuanya bagian dari daur hidup aktivitas.</p>
+
+<p>Bagian selebihnya dari dokumen ini membahas dasar-dasar cara membuat dan menggunakan aktivitas,
+yang meliputi satu pembahasan lengkap tentang cara kerja daur hidup aktivitas, sehingga Anda bisa dengan benar mengelola
+transisi di antara berbagai status aktivitas.</p>
+
+
+
+<h2 id="Creating">Membuat Aktivitas</h2>
+
+<p>Untuk membuat sebuah aktivitas, Anda harus membuat subkelas {@link android.app.Activity} (atau
+subkelasnya yang ada). Dalam subkelas itu, Anda perlu mengimplementasikan metode-metode callback yang
+dipanggil sistem saat aktivitas bertransisi di antara berbagai status daur hidupnya, misalnya saat
+aktivitas sedang dibuat, dihentikan, dilanjutkan, atau dimusnahkan. Dua metode callback
+terpenting adalah:</p>
+
+<dl>
+  <dt>{@link android.app.Activity#onCreate onCreate()}</dt>
+  <dd>Anda harus mengimplementasikan metode ini. Sistem memanggilnya saat membuat
+    aktivitas Anda. Dalam implementasi, Anda harus menginisialisasi komponen-komponen esensial 
+aktivitas.
+    Yang terpenting, inilah tempat Anda harus memanggil {@link android.app.Activity#setContentView
+    setContentView()} untuk mendefinisikan layout untuk antarmuka pengguna aktivitas.</dd>
+  <dt>{@link android.app.Activity#onPause onPause()}</dt>
+  <dd>Sistem memanggil metode ini sebagai pertanda pertama bahwa pengguna sedang meninggalkan
+aktivitas Anda (walau itu tidak selalu berarti aktivitas sedang dimusnahkan). Inilah biasanya tempat Anda
+harus mengikat setiap perubahan yang harus dipertahankan selepas sesi pengguna saat ini (karena
+pengguna mungkin tidak kembali).</dd>
+</dl>
+
+<p>Ada beberapa metode callback daur hidup lainnya yang harus Anda gunakan untuk memberikan
+pengalaman pengguna yang mengalir di antara aktivitas dan menangani interupsi tidak terduga yang menyebabkan aktivitas Anda
+dihentikan dan bahkan dimusnahkan. Semua metode callback daur hidup akan dibahas nanti, di
+bagian tentang <a href="#Lifecycle">Mengelola Daur Hidup Aktivitas</a>.</p>
+
+
+
+<h3 id="UI">Mengimplementasikan antarmuka pengguna</h3>
+
+<p> Antarmuka pengguna aktivitas disediakan oleh hierarki objek&mdash;tampilan yang diturunkan
+dari kelas {@link android.view.View}.  Tiap tampilan mengontrol sebuah ruang persegi panjang tertentu
+dalam jendela aktivitas dan bisa merespons interaksi pengguna. Misalnya, sebuah tampilan mungkin berupa sebuah
+tombol yang mengawali suatu tindakan bila pengguna menyentuhnya.</p>
+
+<p>Android menyediakan sejumlah tampilan siap-dibuat yang bisa Anda gunakan untuk mendesain dan mengatur
+layout. "Widget" adalah tampilan yang menyediakan elemen-elemen visual (dan interaktif) untuk layar, 
+misalnya tombol, bidang teks, kotak cek, atau sekadar sebuah gambar. "Layout" adalah tampilan yang diturunkan dari {@link
+android.view.ViewGroup} yang memberikan sebuah model layout unik untuk tampilan anaknya, misalnya
+layout linier, layout grid, atau layout relatif. Anda juga bisa mensubkelaskan kelas-kelas {@link android.view.View} dan
+{@link android.view.ViewGroup} (atau subkelas yang ada) untuk membuat widget dan
+layout Anda sendiri dan menerapkannya ke layout aktivitas Anda.</p>
+
+<p>Cara paling umum untuk mendefinisikan layout dengan menggunakan tampilan adalah dengan file layout XML yang disimpan dalam
+sumber daya aplikasi Anda. Dengan cara ini, Anda bisa memelihara desain antarmuka pengguna Anda secara terpisah dari
+kode yang mendefinisikan perilaku aktivitas. Anda bisa mengatur layout sebagai UI 
+aktivitas Anda dengan {@link android.app.Activity#setContentView(int) setContentView()}, dengan meneruskan
+ID sumber daya untuk layout itu. Akan tetapi, Anda juga bisa membuat {@link android.view.View} baru dalam
+kode aktivitas dan membuat hierarki tampilan dengan menyisipkan {@link
+android.view.View} baru ke dalam {@link android.view.ViewGroup}, kemudian menggunakan layout itu dengan meneruskan akar
+{@link android.view.ViewGroup} ke {@link android.app.Activity#setContentView(View)
+setContentView()}.</p>
+
+<p>Untuk informasi tentang cara membuat antarmuka pengguna, lihat dokumentasi <a href="{@docRoot}guide/topics/ui/index.html">Antarmuka Pengguna</a>.</p>
+
+
+
+<h3 id="Declaring">Mendeklarasikan aktivitas dalam manifes</h3>
+
+<p>Anda harus mendeklarasikan aktivitas dalam file manifes agar file itu
+bisa diakses oleh sistem. Untuk mendeklarasikan aktivitas, bukalah file manifes Anda dan tambahkan sebuah elemen <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+sebagai anak elemen <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>
+. Misalnya:</p>
+
+<pre>
+&lt;manifest ... &gt;
+  &lt;application ... &gt;
+      &lt;activity android:name=".ExampleActivity" /&gt;
+      ...
+  &lt;/application ... &gt;
+  ...
+&lt;/manifest &gt;
+</pre>
+
+<p>Ada beberapa atribut lain yang bisa Anda sertakan dalam elemen ini, untuk mendefinisikan properti
+misalnya label untuk aktivitas, ikon untuk aktivitas, atau tema untuk memberi gaya ke
+UI aktivitas. Atribut <a href="{@docRoot}guide/topics/manifest/activity-element.html#nm">{@code android:name}</a>
+ adalah satu-satunya atribut yang diperlukan&mdash;atribut ini menetapkan nama kelas aktivitas. Setelah
+Anda mempublikasikan aplikasi, Anda tidak boleh mengubah nama ini, karena jika melakukannya, Anda bisa merusak
+sebagian fungsionalitas, misalnya pintasan aplikasi (bacalah posting blog berjudul <a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">Things
+That Cannot Change</a>).</p>
+
+<p>Lihat acuan elemen <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+untuk informasi selengkapnya tentang cara mendeklarasikan aktivitas Anda dalam manifes.</p>
+
+
+<h4>Menggunakan filter intent</h4>
+
+<p>Elemen <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> juga bisa menetapkan berbagai filter intent&mdash;dengan menggunakan elemen <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> &mdash;untuk mendeklarasikan cara komponen aplikasi lain 
+mengaktifkannya.</p>
+
+<p>Bila Anda membuat aplikasi baru dengan Android SDK Tools, aktivitas stub
+yang dibuat untuk Anda secara otomatis menyertakan filter intent yang mendeklarasikan respons
+aktivitas pada tindakan "main" (utama) dan harus diletakkan dalam kategori "launcher"). Filter intent
+terlihat seperti ini:</p>
+
+<pre>
+&lt;activity android:name=".ExampleActivity" android:icon="@drawable/app_icon"&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p>Elemen <a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> menetapkan bahwa ini adalah titik masuk "main" ke aplikasi. Elemen <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> menetapkan bahwa aktivitas ini harus tercantum dalam launcher aplikasi
+sistem (untuk memungkinkan pengguna meluncurkan aktivitas ini).</p>
+
+<p>Jika Anda bermaksud agar aplikasi dimuat dengan sendirinya dan tidak memperbolehkan aplikasi lain
+mengaktifkan aktivitasnya, maka Anda tidak memerlukan filter intent lain. Hanya satu aktivitas yang boleh
+memiliki tindakan "main" dan kategori "launcher", seperti dalam contoh sebelumnya. Aktivitas yang
+tidak ingin Anda sediakan untuk aplikasi lain tidak boleh memiliki filter intent dan Anda bisa
+memulai sendiri aktivitas dengan menggunakan intent secara eksplisit (seperti dibahas di bagian berikut).</p>
+
+<p>Akan tetapi, jika ingin aktivitas Anda merespons intent implisit yang dikirim dari
+aplikasi lain (dan aplikasi Anda sendiri), maka Anda harus mendefinisikan filter intent tambahan untuk
+aktivitas. Untuk masing-masing tipe intent yang ingin direspons, Anda harus menyertakan sebuah <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> yang menyertakan elemen
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> dan, opsional, sebuah elemen <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> dan/atau elemen <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
+&lt;data&gt;}</a>. Elemen-elemen ini menetapkan tipe intent yang bisa
+direspons oleh aktivitas Anda.</p>
+
+<p>Untuk informasi selengkapnya tentang cara aktivitas Anda merespons intent, lihat dokumen <a href="{@docRoot}guide/components/intents-filters.html">Intent dan Filter Intent</a>.
+</p>
+
+
+
+<h2 id="StartingAnActivity">Memulai Aktivitas</h2>
+
+<p>Anda bisa memulai aktivitas lain dengan memanggil {@link android.app.Activity#startActivity
+  startActivity()}, dengan meneruskan sebuah {@link android.content.Intent} yang menjelaskan aktivitas
+  yang ingin Anda mulai. Intent menetapkan aktivitas persis yang ingin Anda mulai atau menjelaskan
+  tipe tindakan yang ingin Anda lakukan (dan sistem akan memilih aktivitas yang sesuai untuk Anda,
+yang bahkan
+  bisa berasal dari aplikasi berbeda). Intent juga bisa membawa sejumlah kecil data untuk
+  digunakan oleh aktivitas yang dimulai.</p>
+
+<p>Saat bekerja dalam aplikasi sendiri, Anda nanti akan sering meluncurkan aktivitas yang dikenal saja.
+ Anda bisa melakukannya dengan membuat intent yang mendefinisikan secara eksplisit aktivitas yang ingin Anda mulai,
+dengan menggunakan nama kelas. Misalnya, beginilah cara satu aktivitas memulai aktivitas lain bernama {@code
+SignInActivity}:</p>
+
+<pre>
+Intent intent = new Intent(this, SignInActivity.class);
+startActivity(intent);
+</pre>
+
+<p>Akan tetapi, aplikasi Anda mungkin juga perlu melakukan beberapa tindakan, misalnya mengirim email,
+  pesan teks, atau pembaruan status, dengan menggunakan data dari aktivitas Anda. Dalam hal ini, aplikasi Anda mungkin
+ tidak memiliki aktivitasnya sendiri untuk melakukan tindakan tersebut, sehingga Anda bisa memanfaatkan aktivitas
+  yang disediakan oleh aplikasi lain pada perangkat, yang bisa melakukan tindakan itu untuk Anda. Inilah saatnya
+intent benar-benar berharga&mdash;Anda bisa membuat intent yang menjelaskan tindakan yang ingin
+dilakukan dan sistem
+  akan meluncurkan aktivitas yang tepat dari aplikasi lain. Jika ada
+  beberapa aktivitas yang bisa menangani intent itu, pengguna bisa memilih aktivitas yang akan digunakan. Misalnya,
+  jika Anda ingin memperbolehkan pengguna mengirim pesan email, Anda bisa membuat
+  intent berikut:</p>
+
+<pre>
+Intent intent = new Intent(Intent.ACTION_SEND);
+intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
+startActivity(intent);
+</pre>
+
+<p>Ekstra {@link android.content.Intent#EXTRA_EMAIL} yang ditambahkan ke intent adalah sebuah larik string
+  alamat email yang menjadi tujuan pengiriman email. Bila aplikasi email merespons intent ini,
+ aplikasi itu akan membaca larik string yang disediakan dalam ekstra dan meletakkannya dalam bidang "to" 
+  pada formulir penulisan email. Dalam situasi ini, aktivitas aplikasi email dimulai dan bila
+  pengguna selesai, aktivitas Anda akan dilanjutkan.</p>
+
+
+
+
+<h3 id="StartingAnActivityForResult">Memulai aktivitas agar berhasil</h3>
+
+<p>Kadang-kadang, Anda mungkin ingin menerima hasil dari aktivitas yang Anda mulai. Dalam hal itu,
+  mulailah aktivitas dengan memanggil {@link android.app.Activity#startActivityForResult
+  startActivityForResult()} (sebagai ganti {@link android.app.Activity#startActivity
+  startActivity()}). Untuk menerima hasil dari
+aktivitas selanjutnya nanti, implementasikan metode callback {@link android.app.Activity#onActivityResult onActivityResult()}
+. Bila aktivitas selanjutnya selesai, aktivitas akan mengembalikan hasil dalam {@link
+android.content.Intent} kepada metode {@link android.app.Activity#onActivityResult onActivityResult()}
+Anda.</p>
+
+<p>Misalnya, mungkin Anda ingin pengguna mengambil salah satu kontaknya, sehingga aktivitas Anda bisa
+melakukan sesuatu dengan informasi dalam kontak itu. Begini caranya membuat intent tersebut dan
+menangani hasilnya:</p>
+
+<pre>
+private void pickContact() {
+    // Create an intent to "pick" a contact, as defined by the content provider URI
+    Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
+    startActivityForResult(intent, PICK_CONTACT_REQUEST);
+}
+
+&#64;Override
+protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+    // If the request went well (OK) and the request was PICK_CONTACT_REQUEST
+    if (resultCode == Activity.RESULT_OK &amp;&amp; requestCode == PICK_CONTACT_REQUEST) {
+        // Perform a query to the contact's content provider for the contact's name
+        Cursor cursor = getContentResolver().query(data.getData(),
+        new String[] {Contacts.DISPLAY_NAME}, null, null, null);
+        if (cursor.moveToFirst()) { // True if the cursor is not empty
+            int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
+            String name = cursor.getString(columnIndex);
+            // Do something with the selected contact's name...
+        }
+    }
+}
+</pre>
+
+<p>Contoh ini menunjukkan logika dasar yang harus Anda gunakan dalam metode {@link
+android.app.Activity#onActivityResult onActivityResult()} Anda untuk menangani 
+hasil aktivitas. Syarat pertama memeriksa apakah permintaan berhasil&mdash;jika ya, maka
+ {@code resultCode} akan berupa {@link android.app.Activity#RESULT_OK}&mdash;dan apakah permintaan
+yang direspons hasil ini dikenal&mdash;dalam hal ini, {@code requestCode} cocok dengan
+parameter kedua yang dikirim dengan {@link android.app.Activity#startActivityForResult
+startActivityForResult()}. Dari sana, kode akan menangani hasil aktivitas dengan membuat query
+data yang dihasilkan dalam{@link android.content.Intent} (parameter {@code data}).</p>
+
+<p>Yang terjadi adalah {@link
+android.content.ContentResolver} melakukan query terhadap penyedia konten, yang menghasilkan
+{@link android.database.Cursor} yang memperbolehkan data query dibaca. Untuk informasi selengkapnya, lihat dokumen
+<a href="{@docRoot}guide/topics/providers/content-providers.html">Penyedia Konten</a>.</p>
+
+<p>Untuk informasi selengkapnya tentang menggunakan intent, lihat dokumen <a href="{@docRoot}guide/components/intents-filters.html">Intent dan Filter
+Intent</a>.</p>
+
+
+<h2 id="ShuttingDown">Mematikan Aktivitas</h2>
+
+<p>Anda bisa mematikan aktivitas dengan memanggil metode {@link android.app.Activity#finish
+finish()}-nya. Anda juga bisa mematikan aktivitas terpisah yang sebelumnya Anda mulai dengan memanggil
+{@link android.app.Activity#finishActivity finishActivity()}.</p>
+
+<p class="note"><strong>Catatan:</strong> Pada umumnya, Anda tidak boleh secara eksplisit mengakhiri aktivitas
+dengan menggunakan metode-metode ini. Seperti yang dibahas di bagian berikut tentang daur hidup aktivitas,
+sistem Android mengelola hidup aktivitas untuk Anda, sehingga Anda tidak perlu menyelesaikan sendiri
+aktivitas tersebut. Memanggil metode-metode ini bisa berpengaruh negatif pada pengalaman
+pengguna yang diharapkan dan hanya boleh digunakan bila Anda benar-benar tidak ingin pengguna kembali ke
+instance aktivitas ini.</p>
+
+
+<h2 id="Lifecycle">Mengelola Daur Hidup Aktivitas</h2>
+
+<p>Mengelola daur hidup aktivitas dengan mengimplementasikan metode-metode callback sangat
+penting untuk mengembangkan
+aplikasi yang kuat dan fleksibel. Daur hidup aktivitas dipengaruhi langsung oleh kaitannya dengan
+aktivitas lain, tugasnya, serta back-stack.</p>
+
+<p>Pada dasarnya, sebuah aktivitas bisa berada dalam tiga status:</p>
+
+<dl>
+  <dt><i>Dilanjutkan</i></dt>
+    <dd>Aktivitas berada di latar depan layar dan mendapatkan fokus pengguna. (Status ini
+kadang-kadang disebut juga dengan "running" (berjalan).)</dd>
+
+  <dt><i>Dihentikan sementara</i></dt>
+    <dd>Aktivitas lain berada di latar depan dan mendapat fokus, namun aktivitas ini masih terlihat. Yakni,
+aktivitas lain terlihat di atas aplikasi ini dan aktivitas itu setengah transparan atau tidak
+menuutpi seluruh layar. Aktivitas yang dihentikan sementara adalah benar-benar hidup (objek {@link android.app.Activity}
+dipertahankan dalam memori, objek itu memelihara semua informasi status dan anggota, dan tetap dikaitkan dengan
+window manager), namun bisa dimatikan oleh sistem dalam situasi memori sangat rendah.</dd>
+
+  <dt><i>Dihentikan</i></dt>
+    <dd>Aktivitas ditutupi sepenuhnya oleh aktivitas lain (aktivitas sekarang berada di
+"latar belakang"). Aktivitas yang dihentikan juga masih hidup (objek {@link android.app.Activity}
+dipertahankan dalam memori, objek itu menjaga semua informasi status dan anggota, namun <em>tidak</em>
+dikaitkan dengan window manager). Akan tetapi, aktivitas tidak lagi terlihat bagi pengguna dan
+bisa dimatikan oleh sistem bila memori diperlukan di lain.</dd>
+</dl>
+
+<p>Jika aktivitas dihentikan sementara atau dihentikan, sistem bisa mengeluarkannya dari memori baik dengan memintanya agar
+diakhiri (memanggil metode {@link android.app.Activity#finish finish()}-nya), atau sekadar mematikan
+prosesnya.  Bila dibuka lagi (setelah diakhiri atau dimatikan), aktivitas harus dibuat dari
+awal.</p>
+
+
+
+<h3 id="ImplementingLifecycleCallbacks">Mengimplementasikan callback daur hidup</h3>
+
+<p>Saat bertransisi ke dalam dan ke luar berbagai status yang dijelaskan di atas, aktivitas diberi tahu
+melalui berbagai metode callback. Semua metode callback adalah sangkutan yang
+bisa Anda kesampingkan untuk melakukan pekerjaan yang sesuai saat status aktivitas Anda berubah. Aktivitas skeleton
+berikut menyertakan setiap metode daur hidup mendasar:</p>
+
+
+<pre>
+public class ExampleActivity extends Activity {
+    &#64;Override
+    public void {@link android.app.Activity#onCreate onCreate}(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // The activity is being created.
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onStart onStart()} {
+        super.onStart();
+        // The activity is about to become visible.
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onResume onResume()} {
+        super.onResume();
+        // The activity has become visible (it is now "resumed").
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onPause onPause()} {
+        super.onPause();
+        // Another activity is taking focus (this activity is about to be "paused").
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onStop onStop()} {
+        super.onStop();
+        // The activity is no longer visible (it is now "stopped")
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onDestroy onDestroy()} {
+        super.onDestroy();
+        // The activity is about to be destroyed.
+    }
+}
+</pre>
+
+<p class="note"><strong>Catatan:</strong> Implementasi Anda terhadap metode-metode daur hidup ini harus
+selalu memanggil implementasi superkelas sebelum melakukan pekerjaan apa pun, seperti yang ditampilkan dalam contoh-contoh di atas.</p>
+
+<p>Bersama-sama, semua metode ini mendefinisikan seluruh daur hidup sebuah aktivitas. Dengan mengimplementasikan
+metode-metode ini, Anda bisa memantau tiga loop tersarang (nested loop) dalam daur hidup aktivitas: </p>
+
+<ul>
+<li><b>Seluruh masa hidup</b> aktivitas berlangsung antara panggilan ke {@link
+android.app.Activity#onCreate onCreate()} dan panggilan ke {@link
+android.app.Activity#onDestroy}. Aktivitas Anda harus melakukan penyiapan
+status "global" (misalnya mendefinisikan layout) dalam {@link android.app.Activity#onCreate onCreate()}, dan
+melepas semua sisa sumber daya dalam {@link android.app.Activity#onDestroy}. Misalnya, jika
+aktivitas Anda memiliki sebuah thread yang berjalan di latar belakang untuk mengunduh data dari jaringan, aktivitas itu bisa membuat
+thread itu dalam {@link android.app.Activity#onCreate onCreate()} kemudian menghentikan thread dalam {@link
+android.app.Activity#onDestroy}.</li>
+
+<li><p><b>Masa pakai terlihat</b> (visible lifetime) aktivitas berlangsung antara panggilan ke {@link
+android.app.Activity#onStart onStart()} dan panggilan ke {@link
+android.app.Activity#onStop onStop()}. Selama ini, pengguna bisa melihat aktivitas
+pada layar dan berinteraksi dengannya. Misalnya, {@link android.app.Activity#onStop onStop()} dipanggil
+bila sebuah aktivitas baru dimulai dan aktivitas ini tidak lagi terlihat. Di antara dua metode ini, Anda bisa
+memelihara sumber daya yang diperlukan untuk menampilkan aktivitas kepada pengguna. Misalnya, Anda bisa mendaftarkan sebuah
+{@link android.content.BroadcastReceiver} dalam {@link
+android.app.Activity#onStart onStart()} untuk memantau perubahan yang berdampak pada UI Anda, dan mencabut pendaftarannya
+dalam {@link android.app.Activity#onStop onStop()} bila pengguna tidak bisa lagi melihat apa yang sedang Anda
+tampilkan. Sistem bisa memanggil {@link android.app.Activity#onStart onStart()} dan {@link
+android.app.Activity#onStop onStop()} beberapa kali selama masa pakai aktivitas, sambil
+aktivitas berganti-ganti antara terlihat dan tersembunyi bagi pengguna.</p></li>
+
+<li><p><b>Masa pakai latar depan</b> aktivitas berlangsung antara panggilan ke {@link
+android.app.Activity#onResume onResume()} dan panggilan ke {@link android.app.Activity#onPause
+onPause()}. Selama waktu ini, aktivitas berada di depan semua aktivitas lain pada layar dan mendapatkan
+fokus input pengguna.  Aktivitas bisa sering bertransisi ke dalam dan ke luar latar depan&mdash;misalnya,
+ {@link android.app.Activity#onPause onPause()} dipanggil bila perangkat masuk ke mode tidur atau
+bila dialog muncul. Karena status ini bisa sering bertransisi, kode dalam dua metode ini harus
+cukup ringan untuk menghindari transisi lamban yang membuat pengguna menunggu.</p></li>
+</ul>
+
+<p>Gambar 1 mengilustrasikan loop dan path yang mungkin diambil sebuah aktivitas di antara status-status.
+Persegi panjang mewakili metode callback yang bisa Anda implementasikan untuk melakukan operasi saat
+aktivitas bertransisi di antara status. <p>
+
+<img src="{@docRoot}images/activity_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Gambar 1.</strong> Daur hidup aktivitas.</p>
+
+<p>Metode-metode callback daur hidup yang sama tercantum dalam tabel 1, yang menjelaskan setiap metode callback
+secara lebih detail dan menentukan lokasinya masing-masing dalam
+daur hidup aktivitas keseluruhan, termasuk apakah sistem bisa mematikan aktivitas setelah
+metode callback selesai.</p>
+
+<p class="table-caption"><strong>Tabel 1.</strong> Rangkuman metode callback
+daur hidup aktivitas.</p>
+
+<table border="2" width="85%" frame="hsides" rules="rows">
+<colgroup align="left" span="3"></colgroup>
+<colgroup align="left"></colgroup>
+<colgroup align="center"></colgroup>
+<colgroup align="center"></colgroup>
+
+<thead>
+<tr><th colspan="3">Metode</th> <th>Keterangan</th> <th>Bisa dimatikan setelahnya?</th> <th>Berikutnya</th></tr>
+</thead>
+
+<tbody>
+<tr>
+  <td colspan="3" align="left"><code>{@link android.app.Activity#onCreate onCreate()}</code></td>
+  <td>Dipanggil saat aktivitas pertama kali dibuat.
+      Di sinilah Anda harus melakukan semua persiapan statis normal &mdash;
+      membuat tampilan, mengikat data ke daftar, dan sebagainya.  Metode ini diberi
+      sebuah objek Bundle yang berisi status aktivitas sebelumnya, jika
+      status itu tertangkap (lihat <a href="#actstate">Menyimpan Status Aktivitas</a>,
+      nanti).
+      <p>Selalu diikuti oleh {@code onStart()}.</p></td>
+  <td align="center">Tidak</td>
+      <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td rowspan="5" style="border-left: none; border-right: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onRestart
+onRestart()}</code></td>
+   <td>Dipanggil setelah aktivitas dihentikan, tepat sebelum
+       dimulai lagi.
+       <p>Selalu diikuti oleh {@code onStart()}</p></td>
+   <td align="center">Tidak</td>
+   <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStart onStart()}</code></td>
+   <td>Dipanggil tepat sebelum aktivitas menjadi terlihat bagi pengguna.
+       <p>Diikuti oleh {@code onResume()} jika aktivitas maju
+       ke latar depan, atau {@code onStop()} jika menjadi tersembunyi.</p></td>
+    <td align="center">Tidak</td>
+    <td align="center">{@code onResume()} <br/>atau<br/> {@code onStop()}</td>
+</tr>
+
+<tr>
+   <td rowspan="2" style="border-left: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td align="left"><code>{@link android.app.Activity#onResume onResume()}</code></td>
+   <td>Dipanggil tepat sebelum aktivitas mulai
+       berinteraksi dengan pengguna.  Pada titik ini, aktivitas berada di
+       puncak tumpukan aktivitas, dengan input pengguna menuju kepadanya.
+       <p>Selalu diikuti oleh {@code onPause()}.</p></td>
+   <td align="center">Tidak</td>
+   <td align="center">{@code onPause()}</td>
+</tr>
+
+<tr>
+   <td align="left"><code>{@link android.app.Activity#onPause onPause()}</code></td>
+   <td>Dipanggil bila sistem akan memulai pelanjutan
+       aktivitas lain.  Metode ini biasanya digunakan untuk menerapkan (commit) perubahan yang tidak tersimpan pada
+       data persisten, menghentikan animasi dan hal-hal lain yang mungkin menghabiskan
+       CPU, dan sebagainya.  Metode ini harus melakukan apa saja yang dilakukannya dengan sangat cepat, karena
+       aktivitas berikutnya tidak akan dilanjutkan hingga aktivitas ini kembali.
+       <p>Diikuti oleh {@code onResume()} jika aktivitas
+       kembali ke depan, atau oleh {@code onStop()} jika menjadi
+       tidak terlihat bagi pengguna.</td>
+   <td align="center"><strong style="color:#800000">Ya</strong></td>
+   <td align="center">{@code onResume()} <br/>atau<br/> {@code onStop()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStop onStop()}</code></td>
+   <td>Dipanggil bila aktivitas tidak lagi terlihat bagi pengguna.  Hal ini
+       bisa terjadi karena aktivitas sedang dimusnahkan, atau karena aktivitas lain
+       (aktivitas yang ada atau yang baru) telah dilanjutkan dan sedang menutupinya.
+       <p>Diikuti oleh {@code onRestart()} jika
+       aktivitas kembali untuk berinteraksi dengan pengguna, atau oleh
+       {@code onDestroy()} jika aktivitas ini akan menghilang.</p></td>
+   <td align="center"><strong style="color:#800000">Ya</strong></td>
+   <td align="center">{@code onRestart()} <br/>atau<br/> {@code onDestroy()}</td>
+</tr>
+
+<tr>
+   <td colspan="3" align="left"><code>{@link android.app.Activity#onDestroy
+onDestroy()}</code></td>
+   <td>Dipanggil sebelum aktivitas dimusnahkan.  Inilah panggilan terakhir
+       yang akan diterima aktivitas.  Metode ini bisa dipanggil karena
+       aktivitas selesai (seseorang memanggil <code>{@link android.app.Activity#finish
+       finish()}</code> padanya), atau karena sistem memusnahkan sementara
+       instance aktivitas ini untuk menghemat tempat.  Anda bisa membedakan
+       kedua skenario ini dengan metode <code>{@link
+       android.app.Activity#isFinishing isFinishing()}</code>.</td>
+   <td align="center"><strong style="color:#800000">Ya</strong></td>
+   <td align="center"><em>tidak ada</em></td>
+</tr>
+</tbody>
+</table>
+
+<p>Kolom berlabel "Bisa dimatikan setelahnya?" menunjukkan apakah sistem bisa
+atau tidak mematikan proses yang menjadi host aktivitas kapan saja <em>setelah metode kembali</em>, tanpa
+menjalankan baris lain pada kode aktivitas.  Tiga metode ini ditandai "ya": ({@link
+android.app.Activity#onPause
+onPause()}, {@link android.app.Activity#onStop onStop()}, dan {@link android.app.Activity#onDestroy
+onDestroy()}). Karena {@link android.app.Activity#onPause onPause()} adalah yang pertama
+dari tiga, begitu aktivitas dibuat, {@link android.app.Activity#onPause onPause()} adalah
+metode terakhir yang dipastikan akan dipanggil sebelum proses <em>bisa</em> dimatikan&mdash;jika
+sistem harus memulihkan memori dalam keadaan darurat, maka {@link
+android.app.Activity#onStop onStop()} dan {@link android.app.Activity#onDestroy onDestroy()} mungkin
+tidak dipanggil. Karena itu, Anda harus menggunakan {@link android.app.Activity#onPause onPause()} untuk menulis
+data persisten yang penting (misalnya hasil edit pengguna) ke penyimpanan. Akan tetapi, Anda harus selektif dalam hal
+informasi yang harus dipertahankan selama {@link android.app.Activity#onPause onPause()}, karena setiap
+prosedur pemblokiran dalam metode ini akan memblokir transisi ke aktivitas berikutnya dan memperlambat
+pengalaman pengguna.</p>
+
+<p> Metode-metode yang ditandai "Tidak" dalam kolom <b>Bisa dimatikan</b> melindungi proses yang menjadi host
+aktivitas dari dimatikan sejak saat metode dipanggil.  Jadi, aktivitas bisa dimatikan
+sejak {@link android.app.Activity#onPause onPause()} kembali hingga waktu
+{@link android.app.Activity#onResume onResume()} dipanggil. Aktivitas tidak akan lagi bisa dimatikan hingga
+{@link android.app.Activity#onPause onPause()} dipanggil lagi dan kembali. </p>
+
+<p class="note"><strong>Catatan:</strong> Aktivitas yang tidak "bisa dimatikan" secara teknis oleh
+definisi dalam tabel 1 masih bisa dimatikan oleh sistem&mdash;namun itu hany terjadi dalam
+situasi ekstrem bila tidak ada jalan lain. Kapan aktivitas bisa dimatikan
+akan dibahas selengkapnya dalam dokumen <a href="{@docRoot}guide/components/processes-and-threads.html">Proses dan
+Threading</a>.</p>
+
+
+<h3 id="SavingActivityState">Menyimpan status aktivitas</h3>
+
+<p>Pengantar untuk <a href="#Lifecycle">Mengelola Daur Hidup Aktivitas</a> secara ringkas menyebutkan
+bahwa
+bila aktivitas dihentikan sementara atau dihentikan, status aktivitas akan dipertahankan. Hal itu terjadi karena
+objek {@link android.app.Activity} masih ditahan dalam memori saat aktivitas dihentikan sementara atau
+dihentikan&mdash;semua informasi tentang anggota dan statusnya saat ini masih hidup. Jadi, setiap perubahan
+yang dibuat pengguna dalam aktivitas akan dipertahankan sehingga bila aktivitas kembali ke
+latar depan (bila "dilanjutkan"), perubahan itu masih ada.</p>
+
+<p>Akan tetapi, bila sistem memusnahkan aktivitas untuk memulihkan memori, objek {@link
+android.app.Activity} akan dimusnahkan, sehingga sistem tidak bisa sekadar melanjutkan aktivitas dengan status
+tidak berubah. Sebagai gantinya, sistem harus membuat ulang objek {@link android.app.Activity} jika pengguna
+menyusuri kembali ke aktivitas tersebut. Namun, pengguna tidak menyadari
+bahwa sistem memusnahkan aktivitas dan membuatnya kembali dan, karena itu, mungkin
+mengharapkan aktivitas untuk sama persis dengan sebelumnya. Dalam situasi ini, Anda bisa memastikan bahwa
+informasi penting tentang status aktivitas tetap terjaga dengan mengimplementasikan 
+metode callback tambahan yang memungkinkan Anda menyimpan informasi tentang status aktivitas: {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}.</p>
+
+<p>Sistem memanggil {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
+sebelum membuat aktivitas rawan terhadap pemusnahan. Sistem meneruskan ke metode ini
+sebuah {@link android.os.Bundle} tempat Anda bisa menyimpan 
+informasi status tentang aktivitas sebagai pasangan nama-nilai, dengan menggunakan metode-metode misalnya {@link
+android.os.Bundle#putString putString()} dan {@link
+android.os.Bundle#putInt putInt()}. Kemudian, jika sistem mematikan proses aplikasi Anda
+dan pengguna menyusuri kembali ke aktivitas tersebut, sistem akan membuat kembali aktivitas dan meneruskan
+{@link android.os.Bundle} ke {@link android.app.Activity#onCreate onCreate()} maupun {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}. Dengan menggunakan salah satu 
+metode ini, Anda bisa mengekstrak status tersimpan dari {@link android.os.Bundle} dan memulihkan
+status aktivitas. Jika tidak ada informasi status untuk dipulihkan, maka {@link
+android.os.Bundle} yang diteruskan kepada adalah Anda null (yang akan terjadi bila aktivitas dibuat untuk
+pertama kali).</p>
+
+<img src="{@docRoot}images/fundamentals/restore_instance.png" alt="" />
+<p class="img-caption"><strong>Gambar 2.</strong> Ada dua cara yang bisa digunakan aktivitas untuk kembali ke fokus pengguna
+dengan status tetap: aktivitas dimusnahkan, kemudian dibuat kembali, dan aktivitas harus memulihkan
+status yang disimpan sebelumnya, atau aktivitas dihentikan, kemudian dilanjutkan dengan status aktivitas
+tetap.</p>
+
+<p class="note"><strong>Catatan:</strong> Tidak ada jaminan bahwa {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} akan dipanggil sebelum
+aktivitas Anda dimusnahkan, karena bisa saja terjadi aktivitas tidak perlu menyimpan status
+(misalnya saat pengguna meninggalkan aktivitas Anda dengan menggunakan tombol <em>Back</em>, karena pengguna menutup aktivitas
+secara eksplisit
+). Jika sistem memanggil {@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()}, ini akan dilakukan sebelum {@link
+android.app.Activity#onStop onStop()} dan mungkin sebelum {@link android.app.Activity#onPause
+onPause()}.</p>
+
+<p>Akan tetapi, sekalipun Anda tidak melakukan apa-apa dan tidak mengimplementasikan {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}, beberapa status aktivitas
+akan dipulihkan oleh implementasi default {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} dalam kelas {@link android.app.Activity}. Khususnya, 
+implementasi default akan memanggil metode {@link
+android.view.View#onSaveInstanceState onSaveInstanceState()} yang sesuai untuk setiap {@link
+android.view.View} dalam layout, yang memungkinkan setiap tampilan untuk memberi informasi tentang dirinya
+yang harus disimpan. Hampir setiap widget dalam kerangka kerja Android mengimplementasikan metode ini
+sebagaimana mestinya, sehingga setiap perubahan yang terlihat pada UI akan disimpan dan dipulihkan secara otomatis bila
+aktivitas Anda dibuat kembali. Misalnya, widget {@link android.widget.EditText} menyimpan teks apa saja
+yang dimasukkan oleh pengguna dan widget {@link android.widget.CheckBox} menyimpan baik teks itu diperiksa maupun
+tidak. Satu-satunya pekerjaan yang Anda perlukan adalah memberikan ID unik (dengan atribut <a href="{@docRoot}guide/topics/resources/layout-resource.html#idvalue">{@code android:id}</a>
+) untuk masing-masing widget yang ingin disimpan statusnya. Jika widget tidak memiliki ID, maka sistem
+tidak bisa menyimpan statusnya.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<p>Anda juga bisa menghentikan secara eksplisit sebuah tampilan dalam layout Anda agar tidak menyimpan statusnya dengan mengatur atribut
+{@link android.R.attr#saveEnabled android:saveEnabled} ke {@code "false"} atau dengan memanggil
+metode {@link android.view.View#setSaveEnabled setSaveEnabled()}. Biasanya, Anda tidak boleh
+menonaktifkannya, namun Anda boleh melakukannya jika ingin memulihkan status UI aktivitas secara berbeda.</p>
+</div>
+</div>
+
+<p>Walaupun implementasi default {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} menyimpan informasi yang berguna tentang
+UI aktivitas, Anda mungkin masih perlu mengesampingkannya untuk menyimpan informasi tambahan.
+Misalnya, Anda mungkin perlu menyimpan nilai-nilai anggota yang berubah selama masa pakai aktivitas (yang
+mungkin berkorelasi dengan nilai-nilai yang dipulihkan dalam UI, namun anggota-anggota yang menyimpan nilai-nilai UI itu tidak
+dipulihkan, secara default).</p>
+
+<p>Karena implementasi default {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} membantu menyimpan status UI, jika
+Anda mengesampingkan metode ini untuk menyimpan informasi tambahan status, Anda harus selalu memanggil
+implementasi superkelas {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
+sebelum melakukan pekerjaan apa pun. Demikian pula, Anda juga harus memanggil implementasi superkelas {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} jika Anda mengesampingkannya, sehingga
+implementasi default bisa memulihkan status tampilan.</p>
+
+<p class="note"><strong>Catatan:</strong> Karena {@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()} tidak dijamin
+akan dipanggil, Anda harus menggunakannya hanya untuk mencatat status aktivitas sementara (transient) (status
+UI)&mdash;Anda tidak boleh menggunakannya untuk menyimpan data persisten.  Sebagai gantinya, Anda harus menggunakan {@link
+android.app.Activity#onPause onPause()} untuk menyimpan data persisten (misalnya data yang harus disimpan
+ke database) saat pengguna meninggalkan aktivitas.</p>
+
+<p>Salah satu cara yang baik untuk menguji kemampuan aplikasi dalam memulihkan statusnya adalah cukup dengan memutar
+perangkat sehingga orientasi layarnya berubah. Bila orientasi layar berubah, sistem
+akan memusnahkan dan membuat kembali aktivitas untuk menerapkan sumber daya alternatif yang mungkin tersedia
+untuk konfigurasi layar baru. Karena alasan ini saja, sangat penting bahwa aktivitas Anda
+memulihkan statusnya secara lengkap saat dibuat kembali, karena pengguna memutar layar secara rutin saat
+menggunakan aplikasi.</p>
+
+
+<h3 id="ConfigurationChanges">Menangani perubahan konfigurasi</h3>
+
+<p>Sebagian konfigurasi perangkat bisa berubah saat runtime (misalnya orientasi layar, ketersediaan keyboard
+, dan bahasa). Bila terjadi perubahan demikian, Android akan membuat kembali aktivitas yang berjalan
+(sistem akan memanggil {@link android.app.Activity#onDestroy}, kemudian segera memanggil {@link
+android.app.Activity#onCreate onCreate()}). Perilaku ini
+didesain untuk membantu aplikasi Anda menyesuaikan diri dengan konfigurasi baru dengan cara memuat ulang 
+aplikasi Anda secara otomatis dengan sumber daya alternatif yang telah Anda sediakan (misalnya layout yang berbeda untuk
+layar orientasi dan ukuran yang berbeda).</p>
+
+<p>Jika Anda mendesain aktivitas dengan benar untuk menangani restart karena perubahan orientasi layar dan
+memulihkan status aktivitas seperti yang dijelaskan di atas, aplikasi Anda akan lebih tahan terhadap
+kejadian tidak terduga lainnya dalam daur hidup aktivitas.</p>
+
+<p>Cara terbaik menangani restart tersebut adalah
+  menyimpan dan memulihkan status aktivitas Anda dengan menggunakan {@link
+  android.app.Activity#onSaveInstanceState onSaveInstanceState()} dan {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} (atau {@link
+android.app.Activity#onCreate onCreate()}), seperti yang dibahas di bagian sebelumnya.</p>
+
+<p>Untuk informasi selengkapnya tentang konfigurasi perubahan yang terjadi saat program berjalan dan cara menanganinya
+, bacalah panduan untuk <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Menangani
+Perubahan Runtime</a>.</p>
+
+
+
+<h3 id="CoordinatingActivities">Mengoordinasikan aktivitas</h3>
+
+ <p>Bila suatu aktivitas memulai aktivitas lain, keduanya akan mengalami transisi daur hidup. Aktivitas pertama
+akan berhenti sementara dan berhenti sama sekali (walau tidak akan berhenti jika masih terlihat di latar belakang), saat
+aktivitas lain dibuat. Jika aktivitas-aktivitas ini berbagi data yang disimpan ke disk atau di tempat lain, Anda perlu
+memahami bahwa aktivitas pertama tidak dihentikan sepenuhnya sebelum aktivitas kedua dibuat.
+Sebagai gantinya, proses akan memulai aktivitas kedua secara tumpang tindih dengan proses penghentian 
+aktivitas pertama.</p>
+
+<p>Urutan callback daur hidup didefinisikan dengan baik, khususnya bila kedua aktivitas berada dalam
+proses yang sama dan salah satunya memulai yang lain. Berikut ini adalah urutan operasi yang terjadi bila Aktivitas
+A memulai Aktivitas B: </p>
+
+<ol>
+<li>Metode {@link android.app.Activity#onPause onPause()} Aktivitas A berjalan.</li>
+
+<li>Metode-metode {@link android.app.Activity#onCreate onCreate()}, {@link
+android.app.Activity#onStart onStart()}, dan {@link android.app.Activity#onResume onResume()}
+Aktivitas B berjalan secara berurutan. (Aktivitas B sekarang mendapatkan fokus pengguna.)</li>
+
+<li>Kemudian, jika Aktivitas A tidak lagi terlihat di layar, metode {@link
+android.app.Activity#onStop onStop()}-nya akan dijalankan.</li>
+</ol>
+
+ <p>Urutan callback daur hidup yang bisa diramalkan ini memungkinkan Anda mengelola transisi
+informasi dari satu aktivitas ke aktivitas lainnya. Misalnya, jika Anda harus menulis ke database saat
+aktivitas pertama berhenti agar aktivitas berikutnya bisa membacanya, maka Anda harus menulis ke
+database selama {@link android.app.Activity#onPause onPause()} sebagai ganti selama {@link
+android.app.Activity#onStop onStop()}.</p>
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For more information about how Android maintains a history of activities and
+enables user multitasking, continue with the <b><a
+href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back
+Stack</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/in/guide/components/bound-services.jd b/docs/html-intl/intl/in/guide/components/bound-services.jd
new file mode 100644
index 0000000..5d1f65e
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/components/bound-services.jd
@@ -0,0 +1,658 @@
+page.title=Layanan Terikat
+parent.title=Layanan
+parent.link=services.html
+@jd:body
+
+
+<div id="qv-wrapper">
+<ol id="qv">
+<h2>Dalam dokumen ini</h2>
+<ol>
+  <li><a href="#Basics">Dasar-Dasar</a></li>
+  <li><a href="#Creating">Membuat Layanan Terikat</a>
+    <ol>
+      <li><a href="#Binder">Memperluas kelas Binder</a></li>
+      <li><a href="#Messenger">Menggunakan Messenger</a></li>
+    </ol>
+  </li>
+  <li><a href="#Binding">Mengikat ke Layanan</a></li>
+  <li><a href="#Lifecycle">Mengelola Daur Hidup Layanan Terikat</a></li>
+</ol>
+
+<h2>Kelas-kelas utama</h2>
+<ol>
+  <li>{@link android.app.Service}</li>
+  <li>{@link android.content.ServiceConnection}</li>
+  <li>{@link android.os.IBinder}</li>
+</ol>
+
+<h2>Contoh</h2>
+<ol>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html">{@code
+      RemoteService}</a></li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+      LocalService}</a></li>
+</ol>
+
+<h2>Lihat juga</h2>
+<ol>
+  <li><a href="{@docRoot}guide/components/services.html">Layanan</a></li>
+</ol>
+</div>
+
+
+<p>Layanan terikat adalah server di antarmuka klien-server. Layanan terikat memungkinkan komponen-komponen
+(seperti aktivitas) untuk diikat ke layanan, mengirim permintaan, menerima respons, dan bahkan melakukan
+komunikasi antarproses (IPC). Layanan terikat biasanya hidup hanya saat melayani
+komponen aplikasi lain dan tidak berjalan di latar belakang terus-menerus.</p>
+
+<p>Dokumen ini menampilkan cara membuat layanan terikat, termasuk cara mengikat
+ke layanan dari komponen aplikasi lain. Akan tetapi, Anda juga harus mengacu dokumen <a href="{@docRoot}guide/components/services.html">Layanan</a> untuk
+informasi tambahan tentang layanan secara umum, seperti cara menyampaikan pemberitahuan dari layanan, mengatur
+layanan agar berjalan di latar depan, dan lain-lain.</p>
+
+
+<h2 id="Basics">Dasar-Dasar</h2>
+
+<p>Layanan terikat adalah implementasi kelas {@link android.app.Service} yang memungkinkan
+aplikasi lain diikat padanya dan berinteraksi dengannya. Untuk menyediakan pengikatan bagi sebuah
+layanan, Anda harus mengimplementasikan metode callback {@link android.app.Service#onBind onBind()}. Metode ini
+menghasilkan objek {@link android.os.IBinder} yang mendefinisikan antarmuka pemprograman yang
+bisa digunakan klien untuk berinteraksi dengan layanan.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>Mengikat ke Layanan yang Sudah Dimulai</h3>
+
+<p>Seperti dibahas dalam dokumen <a href="{@docRoot}guide/components/services.html">Layanan</a>
+, Anda bisa membuat layanan yang dimulai sekaligus diikat. Yakni, layanan bisa
+dimulai dengan memanggil {@link android.content.Context#startService startService()}, yang memungkinkan
+layanan berjalan terus-menerus, dan juga membolehkan klien untuk mengikat ke layanan dengan memanggil {@link
+android.content.Context#bindService bindService()}.
+  <p>Jika Anda mengizinkan layanan dimulai dan diikat, lalu ketika layanan telah
+dimulai, sistem <em>tidak</em> menghapus layanan ketika semua klien melepas ikatan. Sebagai gantinya, Anda harus
+menghentikan layanan secara eksplisit, dengan memanggil {@link android.app.Service#stopSelf stopSelf()} atau {@link
+android.content.Context#stopService stopService()}.</p>
+
+<p>Walaupun Anda biasanya harus mengimplementasikan {@link android.app.Service#onBind onBind()}
+<em>atau</em> {@link android.app.Service#onStartCommand onStartCommand()}, kadang-kadang perlu
+mengimplementasikan keduanya. Misalnya, sebuah pemutar musik bisa merasakan manfaatnya karena layanannya boleh berjalan
+terus-menerus dan juga menyediakan pengikatan. Dengan cara ini, sebuah aktivitas bisa memulai layanan untuk memutar beberapa
+lagu dan musik terus dimainkan sekalipun pengguna meninggalkan aplikasi. Lalu, bila pengguna
+kembali ke aplikasi, aktivitas bisa mengikat ke layanan untuk mendapatkan kembali kontrol atas pemutaran.</p>
+
+<p>Pastikan membaca bagian tentang <a href="#Lifecycle">Mengelola Daur Hidup Layanan
+Terikat</a>, untuk informasi selengkapnya tentang daur hidup layanan saat menambahkan pengikatan ke
+layanan yang sudah dimulai.</p>
+</div>
+</div>
+
+<p>Klien bisa mengikat ke layanan dengan memanggil {@link android.content.Context#bindService
+bindService()}. Bila itu dilakukan, klien harus menyediakan implementasi {@link
+android.content.ServiceConnection}, yang memantau koneksi dengan layanan. Metode {@link
+android.content.Context#bindService bindService()} kembali dengan serta-merta tanpa sebuah nilai, namun
+bila sistem Android membuat koneksi antara klien
+dan layanan, sistem akan memanggil {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} pada {@link
+android.content.ServiceConnection} untuk mengirim {@link android.os.IBinder} yang
+bisa digunakan klien untuk berkomunikasi dengan layanan.</p>
+
+<p>Beberapa klien bisa terhubung ke layanan dengan serentak. Akan tetapi, sistem akan memanggil metode
+{@link android.app.Service#onBind onBind()} layanan Anda untuk mengambil {@link android.os.IBinder} hanya
+bila klien pertama mengikat. Sistem lalu memberikan {@link android.os.IBinder} yang sama ke setiap
+klien tambahan yang mengikat, tanpa memanggil {@link android.app.Service#onBind onBind()} lagi.</p>
+
+<p>Bila klien terakhir melepas ikatan dari layanan, sistem akan menghapus layanan (kecuali jika
+layanan juga dimulai oleh {@link android.content.Context#startService startService()}).</p>
+
+<p>Bila Anda mengimplementasikan layanan terikat, yang terpenting adalah mendefinisikan antarmuka
+yang dihasilkan metode callback {@link android.app.Service#onBind onBind()} Anda. Ada sedikit
+cara mendefinisikan antarmuka {@link android.os.IBinder} layanan Anda dan bagian berikut
+akan membahas masing-masing teknik.</p>
+
+
+
+<h2 id="Creating">Membuat Layanan Terikat</h2>
+
+<p>Saat membuat layanan yang menyediakan pengikatan, Anda harus menyediakan {@link android.os.IBinder}
+yang menyediakan antarmuka pemrograman yang bisa digunakan klien untuk berinteraksi dengan layanan. Ada
+tiga cara untuk mendefinisikan antarmuka:</p>
+
+<dl>
+  <dt><a href="#Binder">Memperluas kelas Binder</a></dt>
+  <dd>Jika layanan Anda bersifat privat untuk aplikasi Anda sendiri dan berjalan dalam proses yang sama dengan klien
+(biasanya), Anda harus membuat antarmuka dengan memperluas kelas {@link android.os.Binder}
+dan menghasilkan instance dari
+{@link android.app.Service#onBind onBind()}. Klien akan menerima {@link android.os.Binder} dan
+bisa menggunakannya untuk mengakses langsung metode publik yang tersedia dalam implementasi {@link android.os.Binder}
+atau bahkan {@link android.app.Service}.
+  <p>Inilah teknik yang lebih disukai bila layanan Anda sekadar pekerja latar belakang untuk aplikasi Anda
+sendiri. Satu-satunya alasan tidak membuat antarmuka dengan cara ini adalah karena
+layanan Anda akan digunakan oleh aplikasi lain atau pada proses-proses terpisah.</dd>
+
+  <dt><a href="#Messenger">Menggunakan Messenger</a></dt>
+  <dd>Jika antarmuka Anda perlu bekerja lintas proses, Anda bisa membuat
+antarmuka untuk layanan dengan {@link android.os.Messenger}. Dengan cara ini, layanan
+mendefinisikan {@link android.os.Handler} yang akan merespons aneka tipe objek {@link
+android.os.Message}. {@link android.os.Handler}
+ini adalah dasar bagi {@link android.os.Messenger} yang nanti bisa berbagi {@link android.os.IBinder}
+dengan klien, sehingga memungkinkan klien mengirim perintah ke layanan dengan menggunakan objek {@link
+android.os.Message}. Selain itu, klien bisa mendefinisikan sendiri {@link android.os.Messenger} 
+sehingga layanan bisa mengirim balik pesan.
+  <p>Inilah cara termudah melakukan komunikasi antarproses (IPC), karena {@link
+android.os.Messenger} akan mengantre semua permintaan ke dalam satu thread sehingga Anda tidak perlu mendesain
+layanan agar thread-safe.</p>
+  </dd>
+
+  <dt>Menggunakan AIDL</dt>
+  <dd>AIDL (Android Interface Definition Language) melakukan semua pekerjaan untuk mengurai objek menjadi
+primitif yang bisa dipahami dan diarahkan oleh sistem operasi ke berbagai proses untuk melakukan
+IPC. Teknik sebelumnya, dengan menggunakan {@link android.os.Messenger}, sebenarnya berdasarkan AIDL sebagai
+struktur yang mendasarinya. Seperti disebutkan di atas, {@link android.os.Messenger} membuat antrean
+semua permintaan klien dalam satu thread, sehingga layanan akan menerima permintaan satu per satu. Akan tetapi,
+jika ingin layanan Anda menangani beberapa permintaan sekaligus, Anda bisa menggunakan AIDL
+secara langsung. Dalam hal ini, layanan Anda harus mampu multi-thread dan dibuat thread-safe.
+  <p>Untuk menggunakan AIDL secara langsung, Anda harus
+membuat file {@code .aidl} yang mendefinisikan antarmuka pemrograman. Alat Android SDK menggunakan
+file ini untuk menghasilkan kelas abstrak yang mengimplementasikan antarmuka dan menangani IPC, yang nanti
+bisa Anda perluas dalam layanan.</p>
+  </dd>
+</dl>
+
+  <p class="note"><strong>Catatan:</strong> Umumnya aplikasi <strong>tidak boleh</strong> menggunakan AIDL untuk
+membuat layanan terikat, karena hal itu mungkin memerlukan kemampuan multi-thread dan
+bisa mengakibatkan implementasi yang lebih rumit. Dengan demikian, AIDL tidak cocok untuk sebagian besar aplikasi
+dan dokumen ini tidak membahas cara menggunakannya untuk layanan Anda. Jika Anda yakin perlu
+menggunakan AIDL secara langsung, lihat dokumen <a href="{@docRoot}guide/components/aidl.html">AIDL</a>
+.</p>
+
+
+
+
+<h3 id="Binder">Memperluas kelas Binder</h3>
+
+<p>Jika layanan Anda hanya digunakan oleh aplikasi lokal dan tidak perlu bekerja lintas proses,
+maka Anda bisa mengimplementasikan kelas {@link android.os.Binder} Anda sendiri yang memberi klien Anda
+akses langsung ke metode publik dalam layanan.</p>
+
+<p class="note"><strong>Catatan:</strong> Hal ini hanya berhasil jika klien dan layanan berada dalam
+aplikasi dan proses yang sama, suatu kondisi yang paling umum. Misalnya, cara ini sangat cocok untuk sebuah aplikasi musik
+yang perlu mengikat aktivitas ke layanannya sendiri, yakni memutar musik di
+latar belakang.</p>
+
+<p>Berikut cara menyiapkannya:</p>
+<ol>
+  <li>Dalam layanan Anda, buat sebuah instance {@link android.os.Binder} yang:
+    <ul>
+      <li>berisi metode publik yang bisa dipanggil klien</li>
+      <li>menghasilkan instance {@link android.app.Service} saat ini, yang memiliki metode publik yang
+bisa dipanggil klien</li>
+      <li>atau, menghasilkan instance kelas lain yang host-nya di layanan dengan metode publik yang
+bisa dipanggil klien</li>
+    </ul>
+  <li>Hasilkan instance {@link android.os.Binder} ini dari metode callback {@link
+android.app.Service#onBind onBind()}.</li>
+  <li>Di klien, terima {@link android.os.Binder} dari metode callback {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} dan
+buat panggilan ke layanan terikat dengan menggunakan metode yang disediakan.</li>
+</ol>
+
+<p class="note"><strong>Catatan:</strong> Alasan layanan dan klien harus berada dalam aplikasi yang sama
+adalah agar klien bisa mengkonversi objek yang dihasilkan dan memanggil API-nya dengan benar. Layanan
+dan klien juga harus berada dalam proses yang sama, karena teknik ini tidak melakukan
+pengarahan (marshalling) apa pun untuk lintas proses.</p>
+
+<p>Misalnya, berikut ini adalah layanan yang memberi klien akses ke metode-metode dalam layanan melalui
+implementasi {@link android.os.Binder}:</p>
+
+<pre>
+public class LocalService extends Service {
+    // Binder given to clients
+    private final IBinder mBinder = new LocalBinder();
+    // Random number generator
+    private final Random mGenerator = new Random();
+
+    /**
+     * Class used for the client Binder.  Because we know this service always
+     * runs in the same process as its clients, we don't need to deal with IPC.
+     */
+    public class LocalBinder extends Binder {
+        LocalService getService() {
+            // Return this instance of LocalService so clients can call public methods
+            return LocalService.this;
+        }
+    }
+
+    &#64;Override
+    public IBinder onBind(Intent intent) {
+        return mBinder;
+    }
+
+    /** method for clients */
+    public int getRandomNumber() {
+      return mGenerator.nextInt(100);
+    }
+}
+</pre>
+
+<p>{@code LocalBinder} menyediakan {@code getService()} metode bagi klien untuk mengambil
+instance {@code LocalService} saat ini. Cara ini memungkinkan klien memanggil metode publik dalam
+layanan. Misalnya, klien bisa memanggil {@code getRandomNumber()} dari layanan.</p>
+
+<p>Berikut ini adalah aktivitas yang mengikat ke {@code LocalService} dan memanggil {@code getRandomNumber()}
+bila tombol diklik:</p>
+
+<pre>
+public class BindingActivity extends Activity {
+    LocalService mService;
+    boolean mBound = false;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+
+    &#64;Override
+    protected void onStart() {
+        super.onStart();
+        // Bind to LocalService
+        Intent intent = new Intent(this, LocalService.class);
+        bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+    }
+
+    &#64;Override
+    protected void onStop() {
+        super.onStop();
+        // Unbind from the service
+        if (mBound) {
+            unbindService(mConnection);
+            mBound = false;
+        }
+    }
+
+    /** Called when a button is clicked (the button in the layout file attaches to
+      * this method with the android:onClick attribute) */
+    public void onButtonClick(View v) {
+        if (mBound) {
+            // Call a method from the LocalService.
+            // However, if this call were something that might hang, then this request should
+            // occur in a separate thread to avoid slowing down the activity performance.
+            int num = mService.getRandomNumber();
+            Toast.makeText(this, "number: " + num, Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    /** Defines callbacks for service binding, passed to bindService() */
+    private ServiceConnection mConnection = new ServiceConnection() {
+
+        &#64;Override
+        public void onServiceConnected(ComponentName className,
+                IBinder service) {
+            // We've bound to LocalService, cast the IBinder and get LocalService instance
+            LocalBinder binder = (LocalBinder) service;
+            mService = binder.getService();
+            mBound = true;
+        }
+
+        &#64;Override
+        public void onServiceDisconnected(ComponentName arg0) {
+            mBound = false;
+        }
+    };
+}
+</pre>
+
+<p>Contoh di atas menampilkan cara klien mengikat ke layanan dengan menggunakan implementasi
+{@link android.content.ServiceConnection} dan callback {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()}. Bagian
+berikut menyediakan informasi selengkapnya tentang proses pengikatan ke layanan.</p>
+
+<p class="note"><strong>Catatan:</strong> Contoh di atas tidak secara eksplisit melepas ikatan dari layanan,
+namun semua klien harus melepas ikatan pada waktu yang tepat (seperti saat aktivitas sedang jeda).</p>
+
+<p>Untuk contoh kode selengkapnya, lihat kelas <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+LocalService.java}</a> dan kelas <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceActivities.html">{@code
+LocalServiceActivities.java}</a> dalam <a href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a>.</p>
+
+
+
+
+
+<h3 id="Messenger">Menggunakan Messenger</h3>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h4>Dibandingkan dengan AIDL</h4>
+  <p>Bila Anda perlu melakukan IPC, menggunakan {@link android.os.Messenger} untuk antarmuka
+lebih sederhana daripada mengimplementasikannya dengan AIDL, karena {@link android.os.Messenger} mengantre
+semua panggilan ke layanan, sementara antarmuka AIDL murni mengirim permintaan serentak ke
+layanan, yang nanti harus menangani multi-threading.</p>
+  <p>Untuk sebagian besar aplikasi, layanan tidak perlu melakukan multi-threading, jadi dengan menggunakan {@link
+android.os.Messenger} memungkinkan layanan menangani panggilan satu per satu. Jika
+layanan harus multi-thread, Anda harus menggunakan <a href="{@docRoot}guide/components/aidl.html">AIDL</a> untuk mendefinisikan antarmuka.</p>
+</div>
+</div>
+
+<p>Jika layanan perlu berkomunikasi dengan proses jauh, Anda bisa menggunakan
+{@link android.os.Messenger} untuk menyediakan antarmuka bagi layanan Anda. Teknik ini memungkinkan
+Anda melakukan komunikasi antarproses (IPC) tanpa harus menggunakan AIDL.</p>
+
+<p>Berikut ini rangkuman cara menggunakan {@link android.os.Messenger}:</p>
+
+<ul>
+  <li>Layanan mengimplementasikan {@link android.os.Handler} yang menerima callback untuk tiap
+panggilan dari klien.</li>
+  <li>{@link android.os.Handler} digunakan untuk membuat objek {@link android.os.Messenger}
+(yang merupakan acuan ke {@link android.os.Handler}).</li>
+  <li>{@link android.os.Messenger} membuat {@link android.os.IBinder} yang
+dikembalikan layanan ke klien dari {@link android.app.Service#onBind onBind()}.</li>
+  <li>Klien menggunakan {@link android.os.IBinder} untuk membuat instance {@link android.os.Messenger}
+(yang mengacu {@link android.os.Handler} layanan), yang digunakan klien untuk mengirim
+objek {@link android.os.Message} ke layanan.</li>
+  <li>Layanan menerima setiap {@link android.os.Message} dalam {@link
+android.os.Handler}&mdash;secara spesifik, dalam metode {@link android.os.Handler#handleMessage
+handleMessage()}.</li>
+</ul>
+
+
+<p>Dengan cara ini, tidak ada "metode" untuk dipanggil klien pada layanan. Sebagai gantinya,
+klien mengirim "pesan" (objek-objek {@link android.os.Message}) yang diterima layanan dalam
+{@link android.os.Handler}-nya.</p>
+
+<p>Berikut ini contoh layanan sederhana yang menggunakan antarmuka {@link android.os.Messenger}:</p>
+
+<pre>
+public class MessengerService extends Service {
+    /** Command to the service to display a message */
+    static final int MSG_SAY_HELLO = 1;
+
+    /**
+     * Handler of incoming messages from clients.
+     */
+    class IncomingHandler extends Handler {
+        &#64;Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_SAY_HELLO:
+                    Toast.makeText(getApplicationContext(), "hello!", Toast.LENGTH_SHORT).show();
+                    break;
+                default:
+                    super.handleMessage(msg);
+            }
+        }
+    }
+
+    /**
+     * Target we publish for clients to send messages to IncomingHandler.
+     */
+    final Messenger mMessenger = new Messenger(new IncomingHandler());
+
+    /**
+     * When binding to the service, we return an interface to our messenger
+     * for sending messages to the service.
+     */
+    &#64;Override
+    public IBinder onBind(Intent intent) {
+        Toast.makeText(getApplicationContext(), "binding", Toast.LENGTH_SHORT).show();
+        return mMessenger.getBinder();
+    }
+}
+</pre>
+
+<p>Perhatikan bahwa metode {@link android.os.Handler#handleMessage handleMessage()} dalam
+{@link android.os.Handler} adalah tempat layanan menerima {@link android.os.Message}
+yang masuk dan memutuskan aksi yang harus dilakukan, berdasarkan anggota {@link android.os.Message#what}.</p>
+
+<p>Klien tinggal membuat {@link android.os.Messenger} berdasarkan {@link
+android.os.IBinder} yang dihasilkan layanan dan mengirim pesan menggunakan {@link
+android.os.Messenger#send send()}. Misalnya, berikut ini adalah aktivitas sederhana yang mengikat ke
+layanan dan mengirim pesan {@code MSG_SAY_HELLO} ke layanan:</p>
+
+<pre>
+public class ActivityMessenger extends Activity {
+    /** Messenger for communicating with the service. */
+    Messenger mService = null;
+
+    /** Flag indicating whether we have called bind on the service. */
+    boolean mBound;
+
+    /**
+     * Class for interacting with the main interface of the service.
+     */
+    private ServiceConnection mConnection = new ServiceConnection() {
+        public void onServiceConnected(ComponentName className, IBinder service) {
+            // This is called when the connection with the service has been
+            // established, giving us the object we can use to
+            // interact with the service.  We are communicating with the
+            // service using a Messenger, so here we get a client-side
+            // representation of that from the raw IBinder object.
+            mService = new Messenger(service);
+            mBound = true;
+        }
+
+        public void onServiceDisconnected(ComponentName className) {
+            // This is called when the connection with the service has been
+            // unexpectedly disconnected -- that is, its process crashed.
+            mService = null;
+            mBound = false;
+        }
+    };
+
+    public void sayHello(View v) {
+        if (!mBound) return;
+        // Create and send a message to the service, using a supported 'what' value
+        Message msg = Message.obtain(null, MessengerService.MSG_SAY_HELLO, 0, 0);
+        try {
+            mService.send(msg);
+        } catch (RemoteException e) {
+            e.printStackTrace();
+        }
+    }
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+
+    &#64;Override
+    protected void onStart() {
+        super.onStart();
+        // Bind to the service
+        bindService(new Intent(this, MessengerService.class), mConnection,
+            Context.BIND_AUTO_CREATE);
+    }
+
+    &#64;Override
+    protected void onStop() {
+        super.onStop();
+        // Unbind from the service
+        if (mBound) {
+            unbindService(mConnection);
+            mBound = false;
+        }
+    }
+}
+</pre>
+
+<p>Perhatikan bahwa contoh ini tidak menampilkan cara layanan merespons klien. Jika ingin
+layanan merespons, Anda juga perlu membuat {@link android.os.Messenger} di klien. Lalu
+saat menerima callback {@link android.content.ServiceConnection#onServiceConnected
+onServiceConnected()}, klien akan mengirim {@link android.os.Message} ke layanan yang berisi
+{@link android.os.Messenger} klien dalam parameter {@link android.os.Message#replyTo}
+metode {@link android.os.Messenger#send send()}.</p>
+
+<p>Anda bisa melihat contoh cara menyediakan pertukaran pesan dua arah dalam contoh <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerService.html">{@code
+MessengerService.java}</a> (layanan) dan <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerServiceActivities.html">{@code
+MessengerServiceActivities.java}</a> (klien).</p>
+
+
+
+
+
+<h2 id="Binding">Mengikat ke Layanan</h2>
+
+<p>Komponen-komponen aplikasi (klien) bisa mengikat ke layanan dengan memanggil
+{@link android.content.Context#bindService bindService()}. Sistem Android
+lalu memanggil metode {@link android.app.Service#onBind
+onBind()} layanan, yang menghasilkan {@link android.os.IBinder} untuk berinteraksi dengan layanan.</p>
+
+<p>Pengikatan ini bersifat asinkron. {@link android.content.Context#bindService
+bindService()} segera kembali dan <em>tidak</em> mengembalikan {@link android.os.IBinder} ke
+klien. Untuk menerima {@link android.os.IBinder}, klien harus membuat instance {@link
+android.content.ServiceConnection} dan meneruskannya ke {@link android.content.Context#bindService
+bindService()}. {@link android.content.ServiceConnection} berisi metode callback yang
+dipanggil sistem untuk mengirim {@link android.os.IBinder}.</p>
+
+<p class="note"><strong>Catatan:</strong> Hanya aktivitas, layanan, dan penyedia konten yang bisa mengikat
+ke layanan yang&mdash;Anda <strong>tidak bisa</strong> ikat ke layanan dari penerima siaran.</p>
+
+<p>Jadi, untuk mengikat ke layanan dari klien, Anda harus: </p>
+<ol>
+  <li>Mengimplementasikan {@link android.content.ServiceConnection}.
+    <p>Implementasi Anda harus mengesampingkan dua metode callback:</p>
+    <dl>
+      <dt>{@link android.content.ServiceConnection#onServiceConnected onServiceConnected()}</dt>
+        <dd>Sistem memanggil ini untuk mengirim {@link android.os.IBinder} yang dihasilkan oleh
+metode {@link android.app.Service#onBind onBind()} layanan.</dd>
+      <dt>{@link android.content.ServiceConnection#onServiceDisconnected
+onServiceDisconnected()}</dt>
+        <dd>Sistem Android memanggil ini bila koneksi ke layanan putus
+tanpa terduga, seperti ketika layanan mengalami crash atau dimatikan. Ini <em>tidak</em> dipanggil ketika
+klien melepas ikatan.</dd>
+    </dl>
+  </li>
+  <li>Panggil {@link
+android.content.Context#bindService bindService()}, dengan meneruskan implementasi {@link
+android.content.ServiceConnection}. </li>
+  <li>Bila sistem memanggil metode callback {@link android.content.ServiceConnection#onServiceConnected
+onServiceConnected()}, Anda bisa mulai membuat panggilan ke layanan, dengan menggunakan
+metode yang didefinisikan oleh antarmuka.</li>
+  <li>Untuk memutus koneksi dari layanan, panggil {@link
+android.content.Context#unbindService unbindService()}.
+    <p>Bila telah dimusnahkan (destroyed), klien Anda akan melepas ikatan dari layanan, namun Anda harus selalu melepas ikatan
+bila sudah selesai berinteraksi dengan layanan atau bila aktivitas Anda sedang jeda sehingga layanan bisa
+dimatikan saat tidak sedang digunakan. (Waktu yang tepat untuk mengikat dan melepas ikatan dibahas
+selengkapnya di bawah ini.)</p>
+  </li>
+</ol>
+
+<p>Misalnya, cuplikan berikut menghubungkan klien ke layanan yang dibuat di atas dengan
+<a href="#Binder">memperluas kelas Binder</a>, sehingga tinggal mengkonversi 
+{@link android.os.IBinder} yang dihasilkan ke kelas {@code LocalService} dan meminta instance {@code
+LocalService}:</p>
+
+<pre>
+LocalService mService;
+private ServiceConnection mConnection = new ServiceConnection() {
+    // Called when the connection with the service is established
+    public void onServiceConnected(ComponentName className, IBinder service) {
+        // Because we have bound to an explicit
+        // service that is running in our own process, we can
+        // cast its IBinder to a concrete class and directly access it.
+        LocalBinder binder = (LocalBinder) service;
+        mService = binder.getService();
+        mBound = true;
+    }
+
+    // Called when the connection with the service disconnects unexpectedly
+    public void onServiceDisconnected(ComponentName className) {
+        Log.e(TAG, "onServiceDisconnected");
+        mBound = false;
+    }
+};
+</pre>
+
+<p>Dengan {@link android.content.ServiceConnection} ini, klien bisa mengikat ke layanan dengan meneruskannya
+ke {@link android.content.Context#bindService bindService()}. Misalnya:</p>
+
+<pre>
+Intent intent = new Intent(this, LocalService.class);
+bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+</pre>
+
+<ul>
+  <li>Parameter pertama {@link android.content.Context#bindService bindService()} adalah sebuah 
+{@link android.content.Intent} yang secara eksplisit menyebutkan layanan yang akan diikat (walaupun intent
+boleh implisit).</li>
+<li>Parameter kedua adalah objek {@link android.content.ServiceConnection}.</li>
+<li>Parameter ketiga adalah tanda (flag) yang menunjukkan opsi pengikatan. Tanda ini biasanya harus {@link
+android.content.Context#BIND_AUTO_CREATE} agar dapat membuat layanan jika belum hidup.
+Nilai-nilai lain yang memungkinkan adalah {@link android.content.Context#BIND_DEBUG_UNBIND}
+dan {@link android.content.Context#BIND_NOT_FOREGROUND}, atau {@code 0} untuk tidak satu pun.</li>
+</ul>
+
+
+<h3>Catatan tambahan</h3>
+
+<p>Berikut ini beberapa catatan penting tentang mengikat ke layanan:</p>
+<ul>
+  <li>Anda harus selalu menjebak eksepsi {@link android.os.DeadObjectException}, yang dilontarkan
+bila koneksi terputus. Inilah satu-satunya eksepsi yang dilontarkan oleh metode jauh.</li>
+  <li>Objek adalah acuan yang dihitung lintas proses. </li>
+  <li>Anda biasanya harus memasangkan pengikatan dan pelepasan ikatan selama
+memasangkan momen membuat dan menghapus daur hidup klien. Misalnya:
+    <ul>
+      <li>Jika Anda hanya perlu berinteraksi dengan layanan saat aktivitas terlihat, Anda
+harus mengikat selama {@link android.app.Activity#onStart onStart()} dan melepas ikatan selama {@link
+android.app.Activity#onStop onStop()}.</li>
+      <li>Jika Anda ingin aktivitas menerima tanggapan bahkan saat dihentikan di
+latar belakang, Anda bisa mengikat selama {@link android.app.Activity#onCreate onCreate()} dan melepas ikatan
+selama {@link android.app.Activity#onDestroy onDestroy()}. Berhati-hatilah karena hal ini menyiratkan aktivitas
+Anda perlu menggunakan layanan selama dijalankan (sekalipun di latar belakang), jadi jika
+layanan berada dalam proses lain, Anda meningkatkan bobot proses dan semakin besar
+kemungkinan sistem akan mematikannya.</li>
+    </ul>
+    <p class="note"><strong>Catatan:</strong> Anda biasanya <strong>tidak</strong> boleh mengikat dan melepas ikatan
+selama {@link android.app.Activity#onResume onResume()} aktivitas Anda dan {@link
+android.app.Activity#onPause onPause()}, karena callback ini terjadi pada setiap transisi daur hidup
+dan Anda harus menjaga pemrosesan yang terjadi pada transisi ini tetap minim. Juga, jika
+banyak aktivitas dalam aplikasi Anda mengikat ke layanan yang sama dan ada transisi antara
+dua aktivitas, layanan bisa dimusnahkan dan dibuat lagi sambil aktivitas saat ini melepas ikatan
+(selama jeda) sebelum aktivitas berikutnya mengikat (selama lanjutkan). (Transisi aktivitas ini untuk cara
+aktivitas mengoordinasikan daur hidupnya dijelaskan dalam dokumen <a href="{@docRoot}guide/components/activities.html#CoordinatingActivities">Aktivitas</a>
+.)</p>
+</ul>
+
+<p>Untuk contoh kode selengkapnya, yang menampilkan cara mengikat ke layanan, lihat kelas <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html">{@code
+RemoteService.java}</a> dalam <a href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a>.</p>
+
+
+
+
+
+<h2 id="Lifecycle">Mengelola Daur Hidup Layanan Terikat</h2>
+
+<p>Bila layanan dilepas ikatannya dari semua klien, sistem Android akan menghapusnya (kecuali jika layanan juga
+dimulai dengan {@link android.app.Service#onStartCommand onStartCommand()}). Dengan demikian, Anda tidak harus
+mengelola daur hidup layanan jika layanan itu murni sebuah layanan
+terikat&mdash;yang dikelola sistem Android untuk Anda berdasarkan apakah layanan terikat ke klien atau tidak.</p>
+
+<p>Akan tetapi, Jika Anda memilih untuk mengimplementasikan metode callback {@link android.app.Service#onStartCommand
+onStartCommand()}, maka Anda harus menghentikan layanan secara eksplisit, karena layanan
+sekarang dianggap telah <em>dimulai</em>. Dalam hal ini, layanan akan berjalan hingga layanan
+menghentikan dirinya sendiri dengan {@link android.app.Service#stopSelf()} atau panggilan komponen lain {@link
+android.content.Context#stopService stopService()}, terlepas dari apakah layanan terikat ke
+klien atau tidak.</p>
+
+<p>Selain itu, jika layanan Anda telah dimulai dan menerima pengikatan, maka saat sistem memanggil
+metode {@link android.app.Service#onUnbind onUnbind()}, Anda bisa memilih untuk mengembalikan
+{@code true} jika ingin menerima panggilan ke {@link android.app.Service#onRebind
+onRebind()} bila nanti klien mengikat ke layanan (sebagai ganti menerima panggilan ke {@link
+android.app.Service#onBind onBind()}). {@link android.app.Service#onRebind
+onRebind()} akan menghasilkan void, namun klien tetap menerima {@link android.os.IBinder} dalam callback
+{@link android.content.ServiceConnection#onServiceConnected onServiceConnected()}.
+Di bawah ini adalah gambar 1 yang mengilustrasikan logika untuk jenis daur hidup ini.</p>
+
+
+<img src="{@docRoot}images/fundamentals/service_binding_tree_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Gambar 1.</strong> Daur hidup untuk layanan yang dimulai
+dan juga memungkinkan pengikatan.</p>
+
+
+<p>Untuk informasi selengkapnya tentang daur hidup layanan yang telah dimulai, lihat dokumen <a href="{@docRoot}guide/components/services.html#Lifecycle">Layanan</a>.</p>
+
+
+
+
diff --git a/docs/html-intl/intl/in/guide/components/fragments.jd b/docs/html-intl/intl/in/guide/components/fragments.jd
new file mode 100644
index 0000000..14d4ef3
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/components/fragments.jd
@@ -0,0 +1,812 @@
+page.title=Fragmen
+parent.title=Aktivitas
+parent.link=activities.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Dalam dokumen ini</h2>
+  <ol>
+    <li><a href="#Design">Filosofi Desain</a></li>
+    <li><a href="#Creating">Membuat Fragmen</a>
+      <ol>
+        <li><a href="#UI">Menambahkan antarmuka pengguna</a></li>
+        <li><a href="#Adding">Menambahkan fragmen ke aktivitas</a></li>
+      </ol>
+    </li>
+    <li><a href="#Managing">Mengelola Fragmen</a></li>
+    <li><a href="#Transactions">Melakukan Transaksi Fragmen</a></li>
+    <li><a href="#CommunicatingWithActivity">Berkomunikasi dengan Aktivitas</a>
+      <ol>
+        <li><a href="#EventCallbacks">Membuat callback kejadian pada aktivitas</a></li>
+        <li><a href="#ActionBar">Menambahkan item ke Action-Bar</a></li>
+      </ol>
+    </li>
+    <li><a href="#Lifecycle">Menangani Daur Hidup Fragmen</a>
+      <ol>
+        <li><a href="#CoordinatingWithActivity">Mengoordinasi dengan daur hidup aktivitas</a></li>
+      </ol>
+    </li>
+    <li><a href="#Example">Contoh</a></li>
+  </ol>
+
+  <h2>Kelas-kelas utama</h2>
+  <ol>
+    <li>{@link android.app.Fragment}</li>
+    <li>{@link android.app.FragmentManager}</li>
+    <li>{@link android.app.FragmentTransaction}</li>
+  </ol>
+  
+  <h2>Lihat juga</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/fragments/index.html">Membangun UI Dinamis dengan Fragmen</a></li>
+    <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">Mendukung Tablet
+dan Handset</a></li>
+  </ol>
+</div>
+</div>
+
+<p>{@link android.app.Fragment} mewakili perilaku atau bagian dari antarmuka pengguna dalam
+{@link android.app.Activity}. Anda bisa mengombinasikan beberapa fragmen dalam satu aktivitas untuk membangun UI 
+multipanel dan menggunakan kembali sebuah fragmen dalam beberapa aktivitas. Anda bisa menganggap fragmen sebagai bagian 
+modular dari aktivitas, yang memiliki daur hidup sendiri, menerima kejadian input sendiri, dan 
+yang bisa Anda tambahkan atau hapus saat aktivitas berjalan (semacam "sub aktivitas" yang 
+bisa digunakan kembali dalam aktivitas berbeda).</p>
+
+<p>Fragmen harus selalu tertanam dalam aktivitas dan daur hidup fragmen secara langsung 
+dipengaruhi oleh daur hidup aktivitas host-nya. Misalnya, saat aktivitas dihentikan sementara,
+semua fragmen di dalamnya juga dihentikan sementara, dan bila aktivitas dimusnahkan, semua fragmen juga demikian. Akan tetapi, saat
+aktivitas berjalan (dalam <a href="{@docRoot}guide/components/activities.html#Lifecycle">status daur hidup</a> <em>dilanjutkan</em>, Anda bisa 
+memanipulasi setiap fragmen secara terpisah, seperti menambah atau menghapusnya. Saat melakukan transaksi 
+fragmen, Anda juga bisa menambahkannya ke back-stack yang dikelola oleh aktivitas
+&mdash;setiap entri back-stack merupakan record transaksi fragmen yang 
+terjadi. Dengan back-stack pengguna dapat membalikkan transaksi fragmen (mengarah mundur),
+dengan menekan tombol <em>Back</em>.</p>
+
+<p>Bila Anda menambahkan fragmen sebagai bagian dari layout aktivitas, fragmen itu berada dalam {@link
+android.view.ViewGroup} di hierarki tampilan aktivitas tersebut dan fragmen mendefinisikan 
+layout
+tampilannya sendiri. Anda bisa menyisipkan fragmen ke dalam layout aktivitas dengan mendeklarasikan fragmen dalam file layout aktivitas
+, sebagai elemen {@code &lt;fragment&gt;}, atau dari kode aplikasi dengan menambahkannya ke
+ {@link android.view.ViewGroup} yang ada. Akan tetapi, fragmen tidak harus menjadi bagian dari 
+layout aktivitas; Anda juga bisa menggunakan fragmen tanpa UI-nya sendiri sebagai pekerja tak terlihat untuk 
+aktivitas tersebut.</p>
+
+<p>Dokumen ini menjelaskan cara membangun aplikasi menggunakan fragmen, termasuk 
+cara fragmen mempertahankan statusnya bila ditambahkan ke back-stack aktivitas, berbagi
+kejadian dengan aktivitas, dan fragmen lain dalam aktivitas, berkontribusi pada action-bar
+aktivitas, dan lainnya.</p>
+
+
+<h2 id="Design">Filosofi Desain</h2>
+
+<p>Android memperkenalkan fragmen di Android 3.0 (API level 11), terutama untuk mendukung desain UI yang lebih 
+dinamis dan fleksibel pada layar besar, seperti tablet. Karena 
+layar tablet jauh lebih besar daripada layar handset, maka lebih banyak ruang untuk mengombinasikan dan 
+bertukar komponen UI. Fragmen memungkinkan desain seperti itu tanpa perlu mengelola perubahan 
+kompleks pada hierarki tampilan. Dengan membagi layout aktivitas menjadi beberapa fragmen, Anda bisa 
+mengubah penampilan aktivitas saat runtime dan mempertahankan perubahan itu di back-stack 
+yang dikelola oleh aktivitas.</p>
+
+<p>Misalnya, aplikasi berita bisa menggunakan satu fragmen untuk menampilkan daftar artikel di 
+sebelah kiri dan fragmen lainnya untuk menampilkan artikel di sebelah kanan&mdash;kedua fragmen ini muncul di satu 
+aktivitas, berdampingan, dan masing-masing fragmen memiliki serangkaian metode callback daur hidup dan menangani kejadian input 
+penggunanya sendiri. Sehingga, sebagai ganti menggunakan satu aktivitas untuk memilih
+artikel dan aktivitas lainnya untuk membaca artikel, pengguna bisa memilih artikel dan membaca semuanya dalam 
+aktivitas yang sama, sebagaimana diilustrasikan dalam layout tablet pada gambar 1.</p>
+
+<p>Anda harus mendesain masing-masing fragmen sebagai komponen aktivitas modular dan bisa digunakan kembali. Yakni, karena 
+setiap fragmen mendefinisikan layoutnya dan perilakunya dengan callback daur hidupnya sendiri, Anda bisa memasukkan 
+satu fragmen dalam banyak aktivitas, sehingga Anda harus mendesainnya untuk digunakan kembali dan mencegah
+memanipulasi satu fragmen dari fragmen lain secara langsung. Ini terutama penting karena dengan 
+fragmen modular Anda bisa mengubah kombinasi fragmen untuk ukuran layar berbeda. Saat mendesain aplikasi 
+untuk mendukung tablet maupun handset, Anda bisa menggunakan kembali fragmen dalam 
+konfigurasi layout berbeda untuk mengoptimalkan pengalaman pengguna berdasarkan ruang layar yang tersedia. Misalnya
+, pada handset, fragmen mungkin perlu dipisahkan untuk menyediakan UI panel tunggal 
+bila lebih dari satu yang tidak cocok dalam aktivitas yang sama.</p>
+
+<img src="{@docRoot}images/fundamentals/fragments.png" alt="" />
+<p class="img-caption"><strong>Gambar 1.</strong> Contoh cara dua modul UI yang didefinisikan oleh
+ fragmen bisa digabungkan ke dalam satu aktivitas untuk desain tablet, namun dipisahkan untuk 
+desain handset.</p>
+
+<p>Misalnya&mdash;untuk melanjutkan contoh aplikasi berita&mdash; aplikasi bisa menanamkan
+dua fragmen dalam <em>Aktivitas A</em>, saat berjalan pada perangkat berukuran tablet. Akan tetapi, pada
+layar berukuran handset, ruang untuk kedua fragmen tidak cukup, sehingga <em>Aktivitas A</em> hanya 
+menyertakan fragmen untuk daftar artikel, dan saat pengguna memilih artikel, 
+<em>Aktivitas B</em> akan dimulai, termasuk fragmen kedua untuk membaca artikel. Sehingga, aplikasi mendukung 
+tablet dan handset dengan menggunakan kembali fragmen dalam kombinasi berbeda, seperti diilustrasikan dalam
+gambar 1.</p>
+
+<p>Untuk informasi selengkapnya tentang mendesain aplikasi menggunakan kombinasi fragmen berbeda 
+untuk konfigurasi layar berbeda, lihat panduan untuk <a href="{@docRoot}guide/practices/tablets-and-handsets.html">Mendukung Tablet dan Handset</a>.</p>
+
+
+
+<h2 id="Creating">Membuat Fragmen</h2>
+
+<div class="figure" style="width:327px">
+<img src="{@docRoot}images/fragment_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Gambar 2.</strong> Daur hidup fragmen (saat
+ aktivitasnya berjalan).</p>
+</div>
+
+<p>Untuk membuat fragmen, Anda harus membuat subkelas {@link android.app.Fragment} (atau 
+subkelasnya yang ada). Kelas {@link android.app.Fragment} memiliki kode yang mirip seperti 
+{@link android.app.Activity}. Kelas ini memiliki metode callback yang serupa dengan aktivitas, seperti
+ {@link android.app.Fragment#onCreate onCreate()}, {@link android.app.Fragment#onStart onStart()},
+{@link android.app.Fragment#onPause onPause()}, dan {@link android.app.Fragment#onStop onStop()}. Sebenarnya
+, jika Anda mengkonversi aplikasi Android saat ini untuk menggunakan fragmen, Anda mungkin cukup memindahkan
+kode dari metode callback aktivitas ke masing-masing metode callback 
+fragmen.</p>
+
+<p>Biasanya, Anda harus mengimplementasikan setidaknya metode daur hidup berikut ini:</p>
+
+<dl>
+  <dt>{@link android.app.Fragment#onCreate onCreate()}</dt>
+  <dd>Sistem akan memanggilnya saat membuat fragmen. Dalam implementasi, Anda harus 
+menginisialisasi komponen penting dari fragmen yang ingin dipertahankan saat fragmen 
+dihentikan sementara atau dihentikan, kemudian dilanjutkan.</dd>
+  <dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
+  <dd>Sistem akan memanggilnya saat fragmen menggambar antarmuka penggunanya 
+untuk yang pertama kali. Untuk menggambar UI fragmen, Anda harus mengembalikan {@link android.view.View} dari metode 
+ini yang menjadi akar layout fragmen. Hasil yang dikembalikan bisa berupa null jika 
+fragmen tidak menyediakan UI.</dd>
+  <dt>{@link android.app.Activity#onPause onPause()}</dt>
+  <dd>Sistem akan memanggil metode ini sebagai indikasi pertama bahwa pengguna sedang meninggalkan
+fragmen Anda (walau itu tidak selalu berarti fragmen sedang dimusnahkan). Inilah biasanya tempat Anda
+harus mengikat setiap perubahan yang harus dipertahankan selepas sesi pengguna saat ini (karena
+pengguna mungkin tidak kembali).</dd>
+</dl>
+
+<p>Kebanyakan aplikasi harus mengimplementasikan setidaknya tiga metode ini untuk setiap fragmen, namun ada
+beberapa metode callback lain yang juga harus Anda gunakan untuk menangani berbagai tahap
+daur hidup fragmen. Semua metode callback daur hidup akan dibahas secara lebih detail, di bagian 
+tentang <a href="#Lifecycle">Menangani Daur Hidup Fragmen</a>.</p>
+
+
+<p>Ada juga beberapa subkelas yang mungkin ingin diperpanjang, sebagai ganti kelas basis {@link
+android.app.Fragment}:</p>
+
+<dl>
+  <dt>{@link android.app.DialogFragment}</dt>
+  <dd>Menampilkan dialog mengambang. Penggunaan kelas ini untuk membuat dialog merupakan alternatif yang baik dari
+penggunaan metode helper dialog di kelas {@link android.app.Activity}, karena Anda bisa 
+menyatukan dialog fragmen ke dalam back-stack fragmen yang dikelola oleh aktivitas, 
+sehingga pengguna bisa kembali ke fragmen yang ditinggalkan.</dd>
+
+  <dt>{@link android.app.ListFragment}</dt>
+  <dd>Menampilkan daftar item yang dikelola oleh adaptor (seperti {@link
+android.widget.SimpleCursorAdapter}), serupa dengan {@link android.app.ListActivity}. Menampilkan
+beberapa metode pengelolaan daftar tampilan seperti callback {@link
+android.app.ListFragment#onListItemClick(ListView,View,int,long) onListItemClick()} untuk 
+menangani kejadian klik.</dd>
+
+  <dt>{@link android.preference.PreferenceFragment}</dt>
+  <dd>Menampilkan hierarki objek {@link android.preference.Preference} sebagai daftar, serupa dengan
+{@link android.preference.PreferenceActivity}. Hal ini berguna saat membuat aktivitas
+"pengaturan" untuk aplikasi Anda.</dd>
+</dl>
+
+
+<h3 id="UI">Menambahkan antarmuka pengguna</h3>
+
+<p>Fragmen biasanya digunakan sebagai bagian dari antarmuka pengguna aktivitas dan menyumbangkan
+layoutnya sendiri ke aktivitas.</p>
+
+<p>Untuk menyediakan layout fragmen, Anda harus mengimplementasikan metode callback {@link
+android.app.Fragment#onCreateView onCreateView()}, yang dipanggil sistem Android
+bila tiba saatnya fragmen menggambar layoutnya. Implementasi Anda atas metode ini harus mengembalikan 
+{@link android.view.View} yang menjadi akar layout fragmen.</p>
+
+<p class="note"><strong>Catatan:</strong> Jika fragmen adalah subkelas {@link
+android.app.ListFragment}, implementasi default akan mengembalikan {@link android.widget.ListView} dari
+{@link android.app.Fragment#onCreateView onCreateView()}, sehingga Anda tidak perlu mengimplementasikannya.</p>
+
+<p>Untuk mengembalikan layout dari {@link
+android.app.Fragment#onCreateView onCreateView()}, Anda bisa memekarkannya dari <a href="{@docRoot}guide/topics/resources/layout-resource.html">sumber daya layout</a> yang didefinisikan di XML. Untuk
+membantu melakukannya, {@link android.app.Fragment#onCreateView onCreateView()} menyediakan objek 
+{@link android.view.LayoutInflater}.</p>
+
+<p>Misalnya, ini adalah subkelas {@link android.app.Fragment} yang memuat layout dari file
+{@code example_fragment.xml}:</p>
+
+<pre>
+public static class ExampleFragment extends Fragment {
+    &#64;Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.example_fragment, container, false);
+    }
+}
+</pre>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>Membuat layout</h3>
+  <p>Dalam contoh di atas, {@code R.layout.example_fragment} merupakan acuan ke sumber daya layout
+bernama {@code example_fragment.xml} yang tersimpan dalam sumber daya aplikasi. Untuk informasi tentang cara
+membuat layout di XML, lihat dokumentasi 
+<a href="{@docRoot}guide/topics/ui/index.html">Antarmuka Pengguna</a>.</p>
+</div>
+</div>
+
+<p>Parameter {@code container} yang diteruskan ke {@link android.app.Fragment#onCreateView
+onCreateView()} adalah induk {@link android.view.ViewGroup} (dari layout aktivitas) tempat
+layout fragmen
+akan disisipkan. Parameter {@code savedInstanceState} adalah {@link android.os.Bundle} yang 
+menyediakan data tentang instance fragmen sebelumnya, jika fragmen dilanjutkan
+(status pemulihan dibahas selengkapnya di bagian tentang <a href="#Lifecycle">Menangani
+Daur Hidup Fragmen</a>).</p>
+
+<p>Metode {@link android.view.LayoutInflater#inflate(int,ViewGroup,boolean) inflate()} membutuhkan 
+tiga argumen:</p>
+<ul>
+  <li>ID sumber daya layout yang ingin dimekarkan.</li>
+  <li>{@link android.view.ViewGroup} akan menjadi induk dari layout yang dimekarkan. {@code
+container} perlu diteruskan agar sistem menerapkan parameter layout ke tampilan akar layout
+yang dimekarkan, yang ditetapkan dalam tampilan induk yang akan dituju.</li>
+  <li>Boolean yang menunjukkan apakah layout akan dimekarkan harus ditempelkan pada {@link
+android.view.ViewGroup} (parameter kedua) selama pemekaran. (Dalam hal ini, ini
+salah karena sistem sudah memasukkan layout yang dimekarkan ke dalam {@code
+container}&mdash;meneruskan benar akan membuat tampilan grup yang berlebihan dalam layout akhir.)</li>
+</ul>
+
+<p>Anda kini telah melihat cara membuat fragmen yang menyediakan layout. Berikutnya, Anda perlu menambahkan
+fragmen ke aktivitas.</p>
+
+
+
+<h3 id="Adding">Menambahkan fragmen ke aktivitas</h3>
+
+<p>Biasanya, fragmen berkontribusi pada sebagian UI ke aktivitas host, yang ditanamkan sebagai 
+bagian dari hierarki tampilan keseluruhan aktivitas. Ada dua cara untuk menambahkan fragmen ke layout
+aktivitas:</p>
+
+<ul>
+  <li><b>Deklarasikan fragmen dalam file layout aktivitas.</b>
+<p>Dalam hal ini, Anda bisa
+menetapkan properti layout fragmen seakan-akan sebuah tampilan. Misalnya, berikut ini adalah file
+layout untuk aktivitas dengan dua fragmen:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"&gt;
+    &lt;fragment android:name="com.example.news.ArticleListFragment"
+            android:id="@+id/list"
+            android:layout_weight="1"
+            android:layout_width="0dp"
+            android:layout_height="match_parent" /&gt;
+    &lt;fragment android:name="com.example.news.ArticleReaderFragment"
+            android:id="@+id/viewer"
+            android:layout_weight="2"
+            android:layout_width="0dp"
+            android:layout_height="match_parent" /&gt;
+&lt;/LinearLayout&gt;
+</pre>
+  <p>Atribut {@code android:name} dalam {@code &lt;fragment&gt;} menetapkan kelas {@link
+android.app.Fragment} untuk dibuat instance-nya dalam layout.</p>
+
+<p>Saat sistem membuat layout aktivitas, sistem membuat instance setiap fragmen sebagaimana yang ditetapkan dalam layout
+dan memanggil metode {@link android.app.Fragment#onCreateView onCreateView()} masing-masing,
+untuk mengambil setiap fragmen. Sistem akan menyisipkan {@link android.view.View} yang dikembalikan langsung oleh fragmen,
+ menggantikan elemen {@code &lt;fragment&gt;}.</p>
+
+<div class="note">
+  <p><strong>Catatan:</strong> Setiap fragmen memerlukan identifier
+unik yang bisa digunakan sistem untuk memulihkan fragmen jika aktivitas dimulai kembali (dan identifier yang bisa digunakan menangkap 
+fragmen untuk melakukan transaksi, seperti menghapusnya). Ada tiga cara untuk memberikan
+ID bagi fragmen:</p>
+  <ul>
+    <li>Memberikan atribut {@code android:id} bersama ID unik.</li>
+    <li>Memberikan atribut {@code android:tag} bersama string unik.</li>
+    <li>Jika Anda tidak memberikan dua hal tersebut, sistem akan menggunakan ID 
+tampilan kontainer.</li>
+  </ul>
+</div>
+  </li>
+
+  <li><b>Atau, secara programatis tambahkan fragmen ke {@link android.view.ViewGroup} yang ada.</b>
+<p>Kapan saja saat aktivitas berjalan, Anda bisa menambahkan fragmen ke layout aktivitas. Anda
+cukup menetapkan {@link
+android.view.ViewGroup} di tempat memasukkan fragmen.</p>
+  <p>Untuk membuat transaksi fragmen dalam aktivitas (seperti menambah, menghapus, atau mengganti
+fragmen), Anda harus menggunakan API dari {@link android.app.FragmentTransaction}. Anda bisa mengambil instance
+ {@link android.app.FragmentTransaction} dari {@link android.app.Activity} seperti ini:</p>
+
+<pre>
+FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()}
+FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
+</pre>
+
+<p>Selanjutnya Anda bisa menambahkan fragmen menggunakan metode {@link
+android.app.FragmentTransaction#add(int,Fragment) add()}, dengan menetapkan fragmen yang akan ditambahkan dan
+tampilan tempat menyisipkannya. Misalnya:</p>
+
+<pre>
+ExampleFragment fragment = new ExampleFragment();
+fragmentTransaction.add(R.id.fragment_container, fragment);
+fragmentTransaction.commit();
+</pre>
+
+  <p>Argumen pertama yang diteruskan ke {@link android.app.FragmentTransaction#add(int,Fragment) add()}
+ adalah {@link android.view.ViewGroup} tempat fragmen harus dimasukkan, yang ditetapkan oleh
+ID sumber daya, dan parameter kedua merupakan fragmen yang akan ditambahkan.</p>
+  <p>Setelah membuat perubahan dengan
+{@link android.app.FragmentTransaction}, Anda harus
+ memanggil {@link android.app.FragmentTransaction#commit} untuk menerapkan perubahan.</p>
+  </li>
+</ul>
+
+
+<h4 id="AddingWithoutUI">Menambahkan fragmen tanpa UI</h4>
+
+<p>Contoh di atas menampilkan cara menambahkan fragmen ke aktivitas untuk menyediakan UI. Akan tetapi,
+Anda juga bisa menggunakan fragmen untuk menyediakan perilaku latar belakang bagi aktivitas tanpa menampilkan UI
+tambahan.</p>
+
+<p>Untuk menambahkan fragmen tanpa UI, tambahkan fragmen dari aktivitas menggunakan {@link
+android.app.FragmentTransaction#add(Fragment,String)} (dengan menyediakan string unik "tag" untuk fragmen
+, bukan ID tampilan). Ini akan menambahkan fragmen, namun, karena tidak dikaitkan dengan tampilan
+dalam layout aktivitas, ini tidak akan menerima panggilan ke {@link
+android.app.Fragment#onCreateView onCreateView()}. Jadi Anda tidak perlu mengimplementasikan metode itu.</p>
+
+<p>Menyediakan tag string untuk fragmen tidak hanya untuk fragmen non-UI&mdash;Anda juga bisa 
+menyediakan tag string untuk fragmen yang memiliki UI&mdash;namun jika fragmen tidak memiliki UI
+, maka tag string adalah satu-satunya cara untuk mengidentifikasinya. Jika Anda ingin mendapatkan fragmen dari 
+aktivitas nantinya, Anda perlu menggunakan {@link android.app.FragmentManager#findFragmentByTag
+findFragmentByTag()}.</p>
+
+<p>Untuk contoh aktivitas yang menggunakan fragmen sebagai pekerja latar belakang, tanpa UI, lihat sampel {@code
+FragmentRetainInstance.java}, yang disertakan dalam sampel SDK (tersedia melalui 
+Android SDK Manager) dan terletak di sistem Anda sebagai 
+<code>&lt;sdk_root&gt;/APIDemos/app/src/main/java/com/example/android/apis/app/FragmentRetainInstance.java</code>.</p>
+
+
+
+<h2 id="Managing">Mengelola Fragmen</h2>
+
+<p>Untuk mengelola fragmen dalam aktivitas, Anda perlu menggunakan {@link android.app.FragmentManager}. Untuk
+mendapatkannya, panggil {@link android.app.Activity#getFragmentManager()} dari aktivitas Anda.</p>
+
+<p>Beberapa hal yang dapat Anda lakukan dengan {@link android.app.FragmentManager} antara lain:</p>
+
+<ul>
+  <li>Dapatkan fragmen yang ada di aktivitas dengan {@link
+android.app.FragmentManager#findFragmentById findFragmentById()} (untuk fragmen yang menyediakan UI dalam
+layout aktivitas) atau {@link android.app.FragmentManager#findFragmentByTag
+findFragmentByTag()} (untuk fragmen yang menyediakan atau tidak menyediakan UI).</li> 
+  <li>Tarik fragmen dari back-stack, dengan {@link
+android.app.FragmentManager#popBackStack()} (mensimulasikan perintah <em>Back</em> oleh pengguna).</li>
+  <li>Daftarkan listener untuk perubahan pada back-stack, dengan {@link
+android.app.FragmentManager#addOnBackStackChangedListener addOnBackStackChangedListener()}.</li>
+</ul>
+
+<p>Untuk informasi selengkapnya tentang metode ini dan hal lainnya, lihat dokumentasi kelas {@link
+android.app.FragmentManager}.</p>
+
+<p>Seperti yang ditunjukkan di bagian sebelumnya, Anda juga bisa menggunakan {@link android.app.FragmentManager}
+untuk membuka {@link android.app.FragmentTransaction}, sehingga Anda bisa melakukan transaksi, seperti
+menambah dan menghapus fragmen.</p>
+
+
+<h2 id="Transactions">Melakukan Transaksi Fragmen</h2>
+
+<p>Fitur menarik terkait penggunaan fragmen di aktivitas adalah kemampuan menambah, menghapus, mengganti, 
+dan melakukan tindakan lain dengannya, sebagai respons atas interaksi pengguna. Setiap set perubahan
+yang Anda lakukan untuk aktivitas disebut transaksi dan Anda bisa melakukan transaksi menggunakan API di {@link
+android.app.FragmentTransaction}. Anda juga bisa menyimpan setiap transaksi ke back-stack yang dikelola
+aktivitas, sehingga pengguna bisa mengarah mundur melalui perubahan fragmen (mirip mengarah
+mundur melalui aktivitas).</p>
+
+<p>Anda bisa mengambil instance {@link android.app.FragmentTransaction} dari {@link
+android.app.FragmentManager} seperti ini:</p>
+
+<pre>
+FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()};
+FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
+</pre>
+
+<p>Setiap transaksi merupakan serangkaian perubahan yang ingin dilakukan pada waktu yang sama. Anda bisa
+mengatur semua perubahan yang ingin dilakukan untuk transaksi mana saja menggunakan metode seperti {@link
+android.app.FragmentTransaction#add add()}, {@link android.app.FragmentTransaction#remove remove()},
+dan {@link android.app.FragmentTransaction#replace replace()}. Kemudian, untuk menerapkan transaksi
+pada aktivitas, Anda harus memanggil {@link android.app.FragmentTransaction#commit()}.</p>
+</dl>
+
+<p>Akan tetapi, sebelum memanggil {@link
+android.app.FragmentTransaction#commit()}, Anda mungkin perlu memanggil {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()}, untuk menambahkan transaksi
+ke back-stack dari transaksi fragmen. Back-stack ini dikelola oleh aktivitas dan memungkinkan
+pengguna kembali ke status fragmen sebelumnya, dengan menekan tombol <em>Back</em>.</p>
+
+<p>Misalnya, berikut ini cara mengganti satu fragmen dengan yang fragmen yang lain, dan mempertahankan 
+status sebelumnya di back-stack:</p>
+
+<pre>
+// Create new fragment and transaction
+Fragment newFragment = new ExampleFragment();
+FragmentTransaction transaction = getFragmentManager().beginTransaction();
+
+// Replace whatever is in the fragment_container view with this fragment,
+// and add the transaction to the back stack
+transaction.replace(R.id.fragment_container, newFragment);
+transaction.addToBackStack(null);
+
+// Commit the transaction
+transaction.commit();
+</pre>
+
+<p>Dalam contoh ini, {@code newFragment} menggantikan fragmen apa saja (jika ada) yang saat ini berada dalam
+kontainer layout yang diidentifikasi oleh ID {@code R.id.fragment_container}. Dengan memanggil @link
+android.app.FragmentTransaction#addToBackStack addToBackStack()}, transaksi yang diganti 
+disimpan ke back-stack sehingga pengguna bisa membalikkan transaksi dan mengembalikan fragmen 
+sebelumnya dengan menekan tombol <em>Back</em>.</p>
+
+<p>Jika Anda menambahkan beberapa perubahan pada transaksi (seperti {@link
+android.app.FragmentTransaction#add add()} atau {@link android.app.FragmentTransaction#remove
+remove()}) dan panggil {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()}, maka semua perubahan akan diterapkan 
+sebelum Anda memanggil {@link android.app.FragmentTransaction#commit commit()} akan ditambahkan ke 
+back-stack sebagai satu transaksi dan tombol <em>Back</em> akan membalikannya semua.</p>
+
+<p>Urutan menambahkan perubahan pada {@link android.app.FragmentTransaction} tidak berpengaruh, 
+kecuali:</p>
+<ul>
+  <li>Anda harus memanggil {@link android.app.FragmentTransaction#commit()} paling akhir</li>
+  <li>Jika Anda menambahkan beberapa fragmen ke kontainer yang sama, maka
+urutan penambahannya akan menentukan urutan munculnya dalam hierarki tampilan</li>
+</ul>
+
+<p>Jika Anda tidak memanggil {@link android.app.FragmentTransaction#addToBackStack(String)
+addToBackStack()} saat melakukan transaksi yang menghapus fragmen, maka fragmen itu 
+akan dimusnahkan bila transaksi diikat dan pengguna tidak bisa mengarah kembali ke sana. Sedangkan, jika
+Anda memanggil {@link android.app.FragmentTransaction#addToBackStack(String) addToBackStack()} saat 
+menghapus fragmen, maka fragmen itu akan <em>dihentikan</em> dan akan dilanjutkan jika pengguna mengarah
+kembali.</p>
+
+<p class="note"><strong>Tip:</strong> Untuk setiap transaksi fragmen, Anda bisa menerapkan animasi
+transisi, dengan memanggil {@link android.app.FragmentTransaction#setTransition setTransition()} sebelum
+mengikatnya.</p>
+
+<p>Memanggil {@link android.app.FragmentTransaction#commit()} tidak akan langsung menjalankan
+transaksi. Namun sebuah jadwal akan dibuat untuk dijalankan pada thread UI aktivitas (thread "utama") 
+begitu thread bisa melakukannya. Akan tetapi, jika perlu Anda bisa memanggil {@link
+android.app.FragmentManager#executePendingTransactions()} dari thread UI untuk segera 
+mengeksekusi transaksi yang diserahkan oleh {@link android.app.FragmentTransaction#commit()}. Hal itu
+biasanya tidak perlu kecuali jika transaksi merupakan dependensi bagi pekerjaan dalam thread lain.</p>
+
+<p class="caution"><strong>Perhatian:</strong> Anda bisa mengikat transaksi menggunakan {@link
+android.app.FragmentTransaction#commit commit()} hanya sebelum aktivitas <a href="{@docRoot}guide/components/activities.html#SavingActivityState">menyimpan
+statusnya</a> (saat pengguna meninggalkan aktivitas). Jika Anda mencoba mengikatnya setelah itu,
+eksepsi akan dilontarkan. Ini karena status setelah pengikatan bisa hilang jika aktivitas
+perlu dipulihkan. Untuk situasi yang memperbolehkan Anda meniadakan pengikatan (commit), gunakan {@link
+android.app.FragmentTransaction#commitAllowingStateLoss()}.</p>
+
+
+
+
+<h2 id="CommunicatingWithActivity">Berkomunikasi dengan Aktivitas</h2>
+
+<p>Meskipun {@link android.app.Fragment} diimplementasikan sebagai objek yang tidak bergantung pada
+{@link android.app.Activity} dan bisa digunakan dalam banyak aktivitas, instance tertentu
+dari fragmen secara langsung terkait dengan aktivitas yang dimuatnya.</p>
+
+<p>Khususnya, fragmen bisa mengakses instance {@link android.app.Activity} dengan {@link
+android.app.Fragment#getActivity()} dan dengan mudah melakukan tugas-tugas seperti mencari tampilan dalam
+ layout aktivitas:</p>
+
+<pre>
+View listView = {@link android.app.Fragment#getActivity()}.{@link android.app.Activity#findViewById findViewById}(R.id.list);
+</pre>
+
+<p>Demikian pula, aktivitas Anda bisa memanggil metode di fragmen dengan meminta acuan ke 
+{@link android.app.Fragment} dari {@link android.app.FragmentManager}, menggunakan {@link
+android.app.FragmentManager#findFragmentById findFragmentById()} atau {@link
+android.app.FragmentManager#findFragmentByTag findFragmentByTag()}. Misalnya:</p>
+
+<pre>
+ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
+</pre>
+
+
+<h3 id="EventCallbacks">Membuat callback kejadian pada aktivitas</h3>
+
+<p>Dalam beberapa kasus, Anda mungkin perlu fragmen untuk berbagi kejadian dengan aktivitas. Cara yang baik untuk melakukannya
+adalah mendefinisikan antarmuka callback di dalam fragmen dan mengharuskan aktivitas host
+mengimplementasikannya. Saat aktivitas menerima callback melalui antarmuka, aktivitas akan bisa berbagi informasi itu
+dengan fragmen lain dalam layout jika perlu.</p>
+
+<p>Misalnya, jika sebuah aplikasi berita memiliki dua fragmen dalam aktivitas&mdash;satu untuk menampilkan daftar
+artikel (fragmen A) dan satu lagi untuk menampilkan artikel (fragmen B)&mdash;maka fragmen A harus
+memberi tahu aktivitas bila item daftar dipilih sehingga aktivitas bisa memberi tahu fragmen B untuk menampilkan artikel. Dalam
+hal ini, antarmuka {@code OnArticleSelectedListener} dideklarasikan di dalam fragmen A:</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    ...
+    // Container Activity must implement this interface
+    public interface OnArticleSelectedListener {
+        public void onArticleSelected(Uri articleUri);
+    }
+    ...
+}
+</pre>
+
+<p>Selanjutnya aktivitas yang menjadi host fragmen akan mengimplementasikan antarmuka {@code OnArticleSelectedListener}
+ dan 
+mengesampingkan {@code onArticleSelected()} untuk memberi tahu fragmen B mengenai kejadian dari fragmen A. Untuk memastikan
+bahwa aktivitas host mengimplementasikan antarmuka ini, metode callback fragmen A {@link
+android.app.Fragment#onAttach onAttach()} (yang dipanggil sistem saat menambahkan
+fragmen ke aktivitas) membuat instance {@code OnArticleSelectedListener} dengan
+membuat {@link android.app.Activity} yang diteruskan ke {@link android.app.Fragment#onAttach
+onAttach()}:</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    OnArticleSelectedListener mListener;
+    ...
+    &#64;Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        try {
+            mListener = (OnArticleSelectedListener) activity;
+        } catch (ClassCastException e) {
+            throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener");
+        }
+    }
+    ...
+}
+</pre>
+
+<p>Jika aktivitas belum mengimplementasikan antarmuka, maka fragmen akan melontarkan
+{@link java.lang.ClassCastException}.
+Jika berhasil, anggota {@code mListener} yang menyimpan acuan ke implementasi aktivitas 
+{@code OnArticleSelectedListener}, sehingga fragmen A bisa berbagi kejadian dengan aktivitas, dengan memanggil metode
+yang didefinisikan oleh antarmuka {@code OnArticleSelectedListener}. Misalnya, jika fragmen A adalah
+ekstensi dari {@link android.app.ListFragment}, maka setiap kali
+pengguna mengklik item daftar, sistem akan memanggil {@link android.app.ListFragment#onListItemClick
+onListItemClick()} di fragmen, yang selanjutnya memanggil {@code onArticleSelected()} untuk berbagi
+kejadian dengan aktivitas:</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    OnArticleSelectedListener mListener;
+    ...
+    &#64;Override
+    public void onListItemClick(ListView l, View v, int position, long id) {
+        // Append the clicked item's row ID with the content provider Uri
+        Uri noteUri = ContentUris.{@link android.content.ContentUris#withAppendedId withAppendedId}(ArticleColumns.CONTENT_URI, id);
+        // Send the event and Uri to the host activity
+        mListener.onArticleSelected(noteUri);
+    }
+    ...
+}
+</pre>
+
+<p>Parameter {@code id} yang diteruskan ke {@link
+android.app.ListFragment#onListItemClick onListItemClick()} merupakan ID baris dari item yang diklik,
+yang digunakan aktivitas (atau fragmen lain) untuk mengambil artikel dari {@link
+android.content.ContentProvider} aplikasi.</p>
+
+<p><!--To see a complete implementation of this kind of callback interface, see the <a
+href="{@docRoot}resources/samples/NotePad/index.html">NotePad sample</a>. -->Informasi selengkapnya tentang
+menggunakan penyedia konten tersedia dalam dokumen <a href="{@docRoot}guide/topics/providers/content-providers.html">Penyedia Konten</a>.</p>
+
+
+
+<h3 id="ActionBar">Menambahkan item ke Action-Bar</h3>
+
+<p>Fragmen Anda bisa menyumbangkan item menu ke <a href="{@docRoot}guide/topics/ui/menus.html#options-menu">Menu Opsi</a> aktivitas (dan, konsekuensinya, <a href="{@docRoot}guide/topics/ui/actionbar.html">Action-Bar</a>) dengan mengimplementasikan
+{@link android.app.Fragment#onCreateOptionsMenu(Menu,MenuInflater) onCreateOptionsMenu()}. Agar
+metode ini bisa menerima panggilan, Anda harus memanggil {@link
+android.app.Fragment#setHasOptionsMenu(boolean) setHasOptionsMenu()} selama {@link
+android.app.Fragment#onCreate(Bundle) onCreate()}, untuk menunjukkan bahwa fragmen
+ingin menambahkan item ke Menu Opsi (jika tidak, fragmen tidak akan menerima panggilan ke
+{@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()}).</p>
+
+<p>Setiap item yang selanjutnya Anda tambahkan ke Menu Opsi dari fragmen akan ditambahkan ke item menu
+yang ada. Fragmen juga menerima callback ke {@link
+android.app.Fragment#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} bila item menu
+dipilih.</p>
+
+<p>Anda juga bisa mendaftarkan tampilan dalam layout fragmen untuk menyediakan menu konteks dengan memanggil {@link
+android.app.Fragment#registerForContextMenu(View) registerForContextMenu()}. Bila pengguna
+membuka menu konteks, fragmen akan menerima panggilan ke {@link
+android.app.Fragment#onCreateContextMenu(ContextMenu,View,ContextMenu.ContextMenuInfo)
+onCreateContextMenu()}. Bila pengguna memilih item, fragmen akan menerima panggilan ke @link
+android.app.Fragment#onContextItemSelected(MenuItem) onContextItemSelected()}.</p>
+
+<p class="note"><strong>Catatan:</strong> Walaupun fragmen menerima callback pada item yang dipilih
+untuk setiap item menu yang ditambahkannya, aktivitaslah yang pertama kali menerima masing-masing callback saat pengguna
+memilih item menu. Jika implementasi aktivitas dari callback bila-item-dipilih,
+tidak menangani item yang dipilih, maka kejadian akan diteruskan ke callback fragmen. Ini berlaku
+untuk Menu Opsi dan menu konteks.</p>
+
+<p>Untuk informasi selengkapnya tentang menu, lihat panduan pengembang <a href="{@docRoot}guide/topics/ui/menus.html">Menu</a> dan <a href="{@docRoot}guide/topics/ui/actionbar.html">Action-Bar</a>.</p>
+
+
+
+
+<h2 id="Lifecycle">Menangani Daur Hidup Fragmen</h2>
+
+<div class="figure" style="width:350px">
+<img src="{@docRoot}images/activity_fragment_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Gambar 3.</strong> Efek daur hidup aktivitas pada daur hidup
+fragmen.</p>
+</div>
+
+<p>Mengelola daur hidup fragmen mirip sekali dengan mengelola daur hidup aktivitas. Seperti
+aktivitas, fragmen bisa berada dalam tiga status:</p>
+
+<dl>
+  <dt><i>Dilanjutkan</i></dt>
+    <dd>Fragmen terlihat dalam aktivitas yang berjalan.</dd>
+
+  <dt><i>Dihentikan sementara</i></dt>
+    <dd>Aktivitas lain berada di latar depan dan memiliki fokus, namun aktivitas tempat fragmen berada
+masih terlihat (aktivitas latar depan sebagian terlihat atau tidak menutupi
+seluruh layar).</dd>
+
+  <dt><i>Dihentikan</i></dt>
+    <dd>Fragmen tidak terlihat. Aktivitas host telah dihentikan atau
+fragmen telah dihapus dari aktivitas namun ditambahkan ke back-stack. Fragmen yang dihentikan
+masih hidup (semua status dan informasi anggota masih disimpan oleh sistem). Akan tetapi, fragmen 
+tidak terlihat lagi oleh pengguna dan akan dimatikan jika aktivitas dimatikan.</dd>
+</dl>
+
+<p>Seperti halnya aktivitas, Anda bisa mempertahankan status fragmen menggunakan {@link
+android.os.Bundle}, jika proses aktivitas dimatikan dan Anda harus memulihkan status
+fragmen bila aktivitas dibuat kembali. Anda bisa menyimpan status selama callback {@link
+android.app.Fragment#onSaveInstanceState onSaveInstanceState()} fragmen dan memulihkannya selama
+{@link android.app.Fragment#onCreate onCreate()}, {@link
+android.app.Fragment#onCreateView onCreateView()}, atau {@link
+android.app.Fragment#onActivityCreated onActivityCreated()}. Untuk informasi selengkapnya tentang menyimpan
+status, lihat dokumen <a href="{@docRoot}guide/components/activities.html#SavingActivityState">Aktivitas</a>
+.</p>
+
+<p>Perbedaan paling signifikan dalam daur hidup antara aktivitas dan fragmen ada 
+pada cara penyimpanannya dalam back-stack masing-masing. Aktivitas ditempatkan ke back-stack aktivitas
+yang dikelola oleh sistem saat dihentikan, secara default (sehingga pengguna bisa mengarah kembali
+ke aktivitas dengan tombol <em>Back</em>, seperti yang dibahas dalam <a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tugas dan Back-Stack</a>). 
+Akan tetapi, fragmen yang ditempatkan ke back-stack dikelola oleh aktivitas host hanya saat
+Anda secara eksplisit meminta agar instance disimpan dengan memanggil {@link
+android.app.FragmentTransaction#addToBackStack(String) addToBackStack()} selama transaksi yang
+menghapus fragmen.</p>
+
+<p>Jika tidak, pengelolaan daur hidup fragmen mirip sekali dengan mengelola daur hidup
+aktivitas. Jadi, praktik yang sama untuk <a href="{@docRoot}guide/components/activities.html#Lifecycle">mengelola daur hidup
+aktivitas</a> juga berlaku untuk fragmen. Namun yang perlu juga Anda pahami adalah bagaimana hidup
+aktivitas memengaruhi hidup fragmen.</p>
+
+<p class="caution"><strong>Perhatian:</strong> Jika Anda memerlukan objek {@link android.content.Context}
+ dalam {@link android.app.Fragment}, Anda bisa memanggil {@link android.app.Fragment#getActivity()}.
+Akan tetapi, berhati-hatilah memanggil {@link android.app.Fragment#getActivity()} hanya bila fragmen
+terkait dengan aktivitas. Bila fragmen belum terkait, atau terlepas selama akhir daur
+hidupnya, {@link android.app.Fragment#getActivity()} akan kembali nol.</p>
+
+
+<h3 id="CoordinatingWithActivity">Mengoordinasi dengan daur hidup aktivitas</h3>
+
+<p>Daur hidup aktivitas tempat fragmen berada akan memengaruhi langsung siklus hidup
+fragmen sedemikian rupa sehingga setiap callback daur hidup aktivitas menghasilkan callback yang sama untuk masing-masing
+fragmen. Misalnya, bila aktivitas menerima {@link android.app.Activity#onPause}, masing-masing
+fragmen dalam aktivitas akan menerima {@link android.app.Fragment#onPause}.</p>
+
+<p>Namun fragmen memiliki beberapa callback daur hidup ekstra, yang menangani interaksi
+unik dengan aktivitas untuk melakukan tindakan seperti membangun dan memusnahkan UI fragmen. Metode callback
+tambahan ini adalah:</p>
+
+<dl>
+  <dt>{@link android.app.Fragment#onAttach onAttach()}</dt>
+    <dd>Dipanggil bila fragmen telah dikaitkan dengan aktivitas ({@link
+android.app.Activity} diteruskan di sini).</dd>
+  <dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
+    <dd>Dipanggil untuk membuat hierarki tampilan yang dikaitkan dengan fragmen.</dd>
+  <dt>{@link android.app.Fragment#onActivityCreated onActivityCreated()}</dt>
+    <dd>Dipanggil bila metode {@link android.app.Activity#onCreate
+onCreate()} aktivitas telah dikembalikan.</dd>
+  <dt>{@link android.app.Fragment#onDestroyView onDestroyView()}</dt>
+    <dd>Dipanggil bila hierarki tampilan yang terkait dengan fragmen dihapus.</dd>
+  <dt>{@link android.app.Fragment#onDetach onDetach()}</dt>
+    <dd>Dipanggil bila fragmen diputuskan dari aktivitas.</dd>
+</dl>
+
+<p>Aliran daur hidup fragmen, karena dipengaruhi oleh aktivitas host-nya, diilustrasikan oleh
+gambar 3. Dalam gambar ini, Anda bisa melihat bagaimana setiap status aktivitas menentukan
+metode callback mana yang mungkin diterima fragmen. Misalnya, saat aktivitas menerima call back {@link
+android.app.Activity#onCreate onCreate()}, fragmen dalam aktivitas akan menerima tidak lebih
+dari callback {@link android.app.Fragment#onActivityCreated onActivityCreated()}.</p>
+
+<p>Setelah status aktivitas diteruskan kembali, Anda bisa bebas menambah dan menghapus fragmen untuk
+aktivitas tersebut. Sehingga, hanya saat aktivitas berada dalam status dilanjutkan, daur hidup fragmen bisa
+berubah secara independen.</p>
+
+<p>Akan tetapi, saat aktivitas meninggalkan status dilanjutkan, fragmen akan kembali didorong
+melalui daur hidupnya oleh aktivitas.</p>
+
+
+
+
+<h2 id="Example">Contoh</h2>
+
+<p>Untuk merangkum semua yang telah dibahas dalam dokumen ini, berikut ini contoh aktivitas
+yang menggunakan dua fragmen untuk membuat layout dua panel. Aktivitas di bawah ini menyertakan satu fragmen untuk
+menampilkan daftar putar Shakespeare dan fragmen lainnya menampilkan rangkuman pemutaran bila dipilih dari
+daftar. Aktivitas ini juga menunjukkan cara menyediakan konfigurasi fragmen berbeda, 
+berdasarkan konfigurasi layar.</p>
+
+<p class="note"><strong>Catatan:</strong> Kode sumber lengkap untuk aktivitas ini tersedia di
+<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.html">{@code
+FragmentLayout.java}</a>.</p>
+
+<p>Aktivitas utama akan menerapkan layout seperti biasa, selama {@link
+android.app.Activity#onCreate onCreate()}:</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java main}
+
+<p>Layout yang diterapkan adalah {@code fragment_layout.xml}:</p>
+
+{@sample development/samples/ApiDemos/res/layout-land/fragment_layout.xml layout}
+
+<p>Dengan layout ini, sistem akan membuat instance {@code TitlesFragment} (yang mencantumkan 
+judul) segera setelah aktivitas memuat layout, sementara {@link android.widget.FrameLayout}
+ (lokasi penempatan fragmen untuk menampilkan rangkuman pemutaran) menempati ruang di sisi kanan
+layar, namun pada awalnya masih kosong. Seperti yang akan Anda lihat di bawah ini, sampai pengguna memilih item
+dari daftar maka fragmen baru akan ditempatkan ke dalam {@link android.widget.FrameLayout}.</p>
+
+<p>Akan tetapi, tidak semua konfigurasi layar cukup lebar untuk menampilkan
+daftar putar dan rangkuman secara berdampingan. Sehingga, layout di atas hanya digunakan untuk konfigurasi
+layar mendatar, dengan menyimpannya di {@code res/layout-land/fragment_layout.xml}.</p>
+
+<p>Sehingga, bila layar berada dalam orientasi tegak, sistem akan menerapkan layout berikut, yang
+tersimpan di {@code res/layout/fragment_layout.xml}:</p>
+
+{@sample development/samples/ApiDemos/res/layout/fragment_layout.xml layout}
+
+<p>Layout ini hanya menyertakan {@code TitlesFragment}. Ini artinya saat perangkat berada dalam
+orientasi tegak, hanya judul daftar putar yang terlihat. Jadi, saat pengguna mengklik item
+daftar dalam konfigurasi ini, aplikasi akan memulai aktivitas baru untuk menampilkan rangkuman, 
+sebagai ganti pemuatan fragmen kedua.</p>
+
+<p>Berikutnya, Anda bisa melihat bagaimana hal ini dilakukan dalam kelas fragmen. Pertama adalah {@code
+TitlesFragment}, yang menampilkan judul daftar putar Shakespeare. Fragmen ini membuat ekstensi {@link
+android.app.ListFragment} dan mengandalkannya itu untuk menangani sebagian besar pekerjaan tampilan daftar.</p>
+
+<p>Saat Anda memeriksa kode ini, perhatikan bahwa ada dua kemungkinan perilaku saat pengguna mengklik 
+item daftar: bergantung pada layout mana yang aktif, bisa membuat dan menampilkan fragmen
+baru untuk menampilkan detail dalam aktivitas yang sama (menambahkan fragmen ke {@link
+android.widget.FrameLayout}), atau memulai aktivitas baru (tempat fragmen ditampilkan).</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java titles}
+
+<p>Fragmen kedua, {@code DetailsFragment} menampilkan rangkuman pemutaran untuk item yang dipilih dari
+daftar dari {@code TitlesFragment}:</p>
+ 
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
+
+<p>Ingatlah dari kelas {@code TitlesFragment}, bahwa, jika pengguna mengklik item daftar dan
+layout saat ini <em>tidak</em> menyertakan tampilan {@code R.id.details} (yaitu tempat 
+{@code DetailsFragment} berada), maka aplikasi memulai aktivitas {@code DetailsActivity}
+untuk menampilkan konten item.</p>
+
+<p>Berikut ini adalah {@code DetailsActivity}, yang hanya menanamkan {@code DetailsFragment} untuk menampilkan rangkuman pemutaran
+yang dipilih saat layar dalam orientasi tegak:</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
+details_activity}
+ 
+<p>Perhatikan bahwa aktivitas ini selesai sendiri jika konfigurasi mendatar, sehingga aktivitas utama
+bisa mengambil alih dan menampilkan {@code DetailsFragment} bersama {@code TitlesFragment}.
+Ini bisa terjadi jika pengguna memulai {@code DetailsActivity} saat dalam orientasi tegak, namun kemudian
+memutarnya menjadi mendatar (yang akan memulai lagi aktivitas saat ini).</p>
+
+
+<p>Untuk contoh lainnya mengenai penggunaan fragmen (dan file sumber lengkap untuk contoh ini), 
+lihat aplikasi contoh Demo API yang tersedia di <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/index.html#Fragment">
+ApiDemos</a> (bisa diunduh dari <a href="{@docRoot}resources/samples/get.html">Komponen contoh SDK</a>).</p>
+
+
diff --git a/docs/html-intl/intl/in/guide/components/fundamentals.jd b/docs/html-intl/intl/in/guide/components/fundamentals.jd
new file mode 100644
index 0000000..bd9a500
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/components/fundamentals.jd
@@ -0,0 +1,480 @@
+page.title=Dasar-Dasar Aplikasi
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Dalam dokumen ini</h2>
+<ol>
+<li><a href="#Components">Komponen Aplikasi</a>
+  <ol>
+    <li><a href="#ActivatingComponents">Mengaktifkan komponen</a></li>
+  </ol>
+</li>
+<li><a href="#Manifest">File Manifes</a>
+  <ol>
+    <li><a href="#DeclaringComponents">Mendeklarasikan komponen</a></li>
+    <li><a href="#DeclaringRequirements">Mendeklarasikan kebutuhan aplikasi</a></li>
+  </ol>
+</li>
+<li><a href="#Resources">Sumber Daya Aplikasi</a></li>
+</ol>
+</div>
+</div>
+
+<p>Aplikasi Android ditulis dalam bahasa pemrograman Java. Android SDK Tools mengkompilasi 
+kode Anda&mdash;bersama data dan file sumber daya &mdash;ke dalam APK: <i>Paket Android</i>,
+yaitu file arsip berekstensi {@code .apk}. Satu file APK berisi semua konten 
+aplikasi Android dan merupakan file yang digunakan perangkat berbasis Android untuk menginstal aplikasi.</p>
+
+<p>Setelah diinstal di perangkat, setiap aplikasi Android tinggal di sandbox keamanannya sendiri: </p>
+
+<ul>
+ <li>Sistem operasi Android merupakan sistem Linux multi-pengguna yang di dalamnya setiap 
+aplikasi adalah pengguna berbeda.</li>
+
+<li>Secara default, sistem menetapkan ID pengguna Linux unik kepada setiap aplikasi (ID ini hanya
+ digunakan oleh sistem dan tidak diketahui aplikasi). Sistem menetapkan izin
+bagi semua file dalam aplikasi sehingga hanya ID pengguna yang diizinkan yang bisa mengaksesnya. </li>
+
+<li>Setiap proses memiliki mesin virtual (VM) sendiri, sehingga kode aplikasi yang berjalan secara terisolasi dari 
+aplikasi lainnya.</li>
+
+<li>Secara default, setiap aplikasi berjalan dalam proses Linux-nya sendiri. Android memulai proses 
+bila ada komponen aplikasi yang perlu dijalankan, kemudian mematikan proses bila tidak lagi diperlukan
+atau bila sistem harus memulihkan memori untuk digunakan aplikasi lain.</li>
+</ul>
+
+<p>Dengan cara ini, sistem Android mengimplementasikan <em>prinsip privilese minim</em>. Ini berarti, 
+secara default aplikasi hanya memiliki akses ke komponen yang diperlukannya untuk melakukan pekerjaannya dan
+tidak lebih dari itu. Hal ini menghasilkan lingkungan yang sangat aman sehingga aplikasi tidak bisa mengakses bagian 
+sistem bila tidak diberi izin.</p>
+
+<p>Akan tetapi, ada beberapa cara bagi aplikasi untuk berbagi data dengan aplikasi lain dan bagi aplikasi
+untuk mengakses layanan sistem:</p>
+
+<ul>
+  <li>Dua aplikasi bisa diatur untuk menggunakan ID pengguna Linux yang sama, 
+dalam hal ini keduanya bisa saling mengakses file masing-masing.  Untuk menghemat sumber daya sistem, aplikasi dengan ID
+pengguna yang sama juga bisa diatur agar berjalan dalam proses Linux yang sama dan menggunakan VM yang sama (
+aplikasi juga harus ditandatangani dengan sertifikat yang sama).</li>
+  <li>Aplikasi bisa meminta izin akses ke data perangkat seperti kontak 
+pengguna, pesan SMS, penyimpanan lepas-pasang (kartu SD), kamera, Bluetooth, dan lainnya. Semua 
+izin aplikasi harus diberikan oleh pengguna saat menginstal.</li>
+</ul>
+
+<p>Hal tersebut mencakup dasar-dasar tentang cara aplikasi Android berada di dalam sistem. Bagian dokumen
+selanjutnya memperkenalkan Anda pada:</p>
+<ul>
+  <li>Komponen kerangka kerja inti yang mendefinisikan aplikasi.</li>
+  <li>File manifes tempat Anda mendeklarasikan komponen dan fitur yang diperlukan perangkat
+untuk aplikasi.</li>
+  <li>Sumber daya yang terpisah dari kode aplikasi dan memungkinkan 
+aplikasi mengoptimalkan perilakunya untuk beragam konfigurasi perangkat.</li>
+</ul>
+
+
+
+<h2 id="Components">Komponen Aplikasi</h2>
+
+<p>Komponen aplikasi adalah blok pembangun penting dari aplikasi Android.
+Setiap komponen merupakan titik berbeda yang digunakan sistem untuk memasuki aplikasi. Tidak semua komponen 
+merupakan titik masuk sebenarnya bagi pengguna dan sebagian saling bergantung, namun masing-masing komponen tersedia 
+sebagai kesatuan sendiri dan memainkan peran tertentu&mdash;masing-masing merupakan
+blok pembangun unik yang mendefinisikan perilaku aplikasi secara keseluruhan.</p>
+
+<p>Ada empat macam tipe komponen aplikasi. Setiap tipe memiliki kegunaan tersendiri
+dan daur hidupnya sendiri yang mendefinisikan cara komponen dibuat dan dimusnahkan.</p>
+
+<p>Berikut ini empat tipe komponen aplikasi:</p>
+
+<dl>
+
+<dt><b>Aktivitas</b></dt>
+
+<dd>Sebuah <i>aktivitas</i> mewakili satu layar dengan antarmuka pengguna. Misalnya,
+aplikasi email mungkin memiliki satu aktivitas yang menampilkan daftar email 
+baru, aktivitas lain untuk menulis email, dan aktivitas satunya lagi untuk membaca email. Walaupun
+semua aktivitas bekerja sama untuk membentuk pengalaman pengguna yang kohesif dalam aplikasi email,
+masing-masing tidak saling bergantung. Karenanya, aplikasi berbeda bisa memulai
+salah satu aktivitas ini (jika aplikasi email mengizinkannya). Misalnya, aplikasi kamera bisa memulai
+aktivitas dalam aplikasi email yang membuat email baru agar pengguna bisa berbagi gambar.
+
+<p>Aktivitas diimplementasikan sebagai subkelas {@link android.app.Activity} dan Anda bisa mengetahui selengkapnya
+tentang hal ini dalam panduan pengembang <a href="{@docRoot}guide/components/activities.html">Aktivitas</a>
+.</p>
+</dd>
+
+
+<dt><b>Layanan</b></dt>
+
+<dd>Sebuah <i>layanan</i> adalah komponen yang berjalan di latar belakang untuk melakukan
+operasi yang berjalan lama atau untuk melakukan pekerjaan bagi proses jarak jauh. Layanan
+tidak menyediakan antarmuka pengguna. Misalnya, sebuah layanan bisa memutar musik di latar belakang sementara 
+pengguna berada dalam aplikasi lain, atau layanan bisa menarik data lewat jaringan tanpa
+memblokir interaksi pengguna dengan aktivitas. Komponen lain, seperti aktivitas, bisa memulai
+layanan dan membiarkannya berjalan atau mengikat layanan untuk berinteraksi dengannya.
+
+<p>Layanan diimplementasikan sebagai subkelas {@link android.app.Service} dan Anda bisa mengetahui selengkapnya
+tentang hal ini dalam panduan
+pengembang <a href="{@docRoot}guide/components/services.html">Layanan</a>.</p>
+</dd>
+
+
+<dt><b>Penyedia konten</b></dt>
+
+<dd>Sebuah <i>penyedia konten</i> mengelola seperangkat data-bersama aplikasi. Anda bisa menyimpan data
+dalam sistem file, database SQLite, di web, atau lokasi penyimpanan permanen lainnya
+yang bisa diakses aplikasi. Melalui penyedia konten, aplikasi lain bisa melakukan query atau bahkan 
+memodifikasi data (jika penyedia konten mengizinkannya). Misalnya, sistem Android menyediakan penyedia
+konten yang mengelola informasi kontak pengguna. Karenanya, setiap aplikasi
+dengan izin yang sesuai bisa melakukan query mengenai bagian dari penyedia konten (seperti {@link
+android.provider.ContactsContract.Data}) untuk membaca dan menulis informasi tentang orang tertentu.
+
+<p>Penyedia konten juga berguna untuk membaca dan menulis data privat ke aplikasi Anda
+dan tidak dibagikan. Misalnya, aplikasi contoh <a href="{@docRoot}resources/samples/NotePad/index.html">Note Pad</a> menggunakan
+penyedia konten untuk menyimpan catatan.</p>
+
+<p>Penyedia konten diimplementasikan sebagai subkelas {@link android.content.ContentProvider}
+dan harus mengimplementasikan seperangkat standar API yang memungkinkan aplikasi
+lain melakukan transaksi. Untuk informasi selengkapnya, lihat panduan pengembang 
+<a href="{@docRoot}guide/topics/providers/content-providers.html">Penyedia Konten</a>.</p>
+</dd>
+
+
+<dt><b>Penerima siaran</b></dt>
+
+<dd>Sebuah <i>penerima siaran</i> adalah komponen yang merespons pengumuman siaran dalam lingkup
+sistem.  Banyak siaran yang berasal dari sistem&mdash;misalnya, siaran yang mengumumkan bahwa
+layar telah dimatikan, baterai lemah, atau gambar telah direkam.
+Aplikasi juga bisa memulai siaran&mdash;misalnya untuk menginformasikan ke
+aplikasi lain bahwa sebagian data telah diunduh ke perangkat dan bisa digunakan aplikasi lain tersebut. Walaupun penerima
+siaran tidak menampilkan antarmuka pengguna, penerima bisa <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">membuat pemberitahuan baris status</a>
+untuk memberi tahu pengguna kapan kejadian siaran dilakukan. Meskipun penerima siaran umumnya cuma menjadi
+"gerbang" untuk komponen lain dan dimaksudkan untuk melakukan pekerjaan dalam jumlah sangat minim. Misalnya
+, penerima siaran bisa menjalankan layanan untuk melakukan beberapa pekerjaan berdasarkan kejadian.
+
+<p>Penerima siaran diimplementasikan sebagai subkelas {@link android.content.BroadcastReceiver}
+dan setiap siaran dikirim sebagai objek {@link android.content.Intent}. Untuk informasi selengkapnya,
+lihat kelas {@link android.content.BroadcastReceiver}.</p>
+</dd>
+
+</dl>
+
+
+
+<p>Aspek unik dari desain sistem Android adalah aplikasi mana pun bisa memulai 
+komponen aplikasi lain. Misalnya, jika Anda menginginkan pengguna mengambil
+foto dengan kamera perangkat, bisa saja aplikasi lain yang melakukannya dan aplikasi
+Anda bisa menggunakannya, sebagai ganti mengembangkan aktivitas sendiri untuk mengambil foto. Anda tidak
+harus menyatukan atau bahkan menautkan ke kode dari aplikasi kamera.
+Sebagai gantinya, Anda tinggal memulai aktivitas di aplikasi kamera yang akan mengambil
+foto. Bila selesai, foto akan dikembalikan ke aplikasi sehingga Anda bisa menggunakannya. Bagi pengguna,
+kamera seakan menjadi bagian dari aplikasi Anda.</p>
+
+<p>Saat sistem memulai komponen, sistem akan memulai proses untuk aplikasi itu (jika
+belum berjalan) dan membuat instance kelas yang diperlukan untuk komponen. Misalnya, jika aplikasi Anda
+memulai aktivitas dalam aplikasi kamera yang mengambil foto, aktivitas itu akan
+berjalan dalam proses yang dimiliki oleh aplikasi kamera, bukan dalam proses aplikasi Anda. 
+Karenanya, tidak seperti aplikasi di sebagian besar sistem lain, aplikasi Android tidak memiliki titik
+masuk tunggal (misalnya tidak ada fungsi {@code main()}).</p>
+
+<p>Karena sistem menjalankan setiap aplikasi dalam proses terpisah dengan izin file yang
+membatasi akses ke aplikasi lain, aplikasi Anda tidak bisa langsung mengaktifkan komponen dari aplikasi lain. Akan tetapi, sistem
+Android bisa melakukannya. Jadi, untuk mengaktifkan
+komponen dalam aplikasi lain, Anda harus mengirim pesan ke sistem yang menetapkan <em>intent</em> Anda untuk memulai
+komponen tertentu. Selanjutnya sistem akan mengaktifkan komponen untuk Anda.</p>
+
+
+<h3 id="ActivatingComponents">Mengaktifkan Komponen</h3>
+
+<p>Tiga dari empat tipe komponen&mdash;aktivitas, layanan, dan
+penerima siaran&mdash;diaktifkan oleh pesan asinkron yang disebut <em>intent</em>.
+Intent saling mengikat setiap komponen saat runtime (Anda bisa menganggapnya
+sebagai pembawa pesan yang meminta tindakan dari komponen lain), baik komponen itu milik aplikasi Anda
+atau milik aplikasi lain.</p>
+
+<p>Intent dibuat dengan objek {@link android.content.Intent}, yang mendefinisikan pesan untuk
+mengaktifkan komponen tertentu atau komponen <em>tipe</em> komponen tertentu&mdash;masing-masing intent
+bisa eksplisit atau implisit.</p>
+
+<p>Untuk aktivitas dan layanan, intent mendefinisikan tindakan yang akan dilakukan (misalnya, untuk "melihat" atau 
+"mengirim" sesuatu) dan mungkin menetapkan URI data untuk ditindaklanjuti (salah satu hal yang mungkin perlu diketahui 
+oleh komponen yang akan dimulai). Misalnya, intent mungkin menyampaikan permintaan suatu 
+aktivitas untuk menampilkan gambar atau membuka halaman web. Dalam beberapa kasus, Anda bisa memulai
+aktivitas untuk menerima hasil, dalam hal ini, aktivitas juga akan mengembalikan hasil 
+dalam {@link android.content.Intent} (misalnya Anda bisa mengeluarkan intent agar
+pengguna bisa memilih kontak pribadi dan memintanya dikembalikan kepada Anda&mdash;intent yang dikembalikan menyertakan URI yang 
+menunjuk ke kontak yang dipilih).</p>
+
+<p>Untuk penerima siaran, intent hanya mendefinisikan
+pengumuman yang sedang disiarkan (misalnya, siaran untuk menunjukkan baterai perangkat hampir habis
+hanya menyertakan string tindakan yang menunjukkan "baterai hampir habis").</p>
+
+<p>Tipe komponen lainnya dan penyedia konten, tidak diaktifkan oleh intent. Melainkan
+diaktifkan saat ditargetkan oleh permintaan dari {@link android.content.ContentResolver}. Resolver
+konten menangani semua transaksi langsung dengan penyedia konten sehingga komponen yang melakukan 
+transaksi dengan penyedia tidak perlu dan sebagai gantinya memanggil metode pada objek {@link
+android.content.ContentResolver}. Ini membuat lapisan abstraksi antara penyedia
+konten dan komponen yang meminta informasi (demi keamanan).</p>
+
+<p>Ada beberapa metode terpisah untuk mengaktifkan masing-masing tipe komponen:</p>
+<ul>
+  <li>Anda bisa memulai aktivitas (atau memberinya pekerjaan baru) dengan 
+meneruskan {@link android.content.Intent} ke {@link android.content.Context#startActivity
+startActivity()} atau {@link android.app.Activity#startActivityForResult startActivityForResult()}
+(bila Anda ingin aktivitas mengembalikan hasil).</li>
+  <li>Anda bisa memulai layanan (atau memberikan instruksi baru ke layanan yang sedang berlangsung) dengan 
+meneruskan {@link android.content.Intent} ke {@link android.content.Context#startService
+startService()}. Atau Anda bisa mengikat ke layanan dengan meneruskan {@link android.content.Intent} ke
+{@link android.content.Context#bindService bindService()}.</li>
+  <li>Anda bisa memulai siaran dengan meneruskan {@link android.content.Intent} ke metode seperti
+{@link android.content.Context#sendBroadcast(Intent) sendBroadcast()}, {@link
+android.content.Context#sendOrderedBroadcast(Intent, String) sendOrderedBroadcast()}, atau {@link
+android.content.Context#sendStickyBroadcast sendStickyBroadcast()}.</li>
+  <li>Anda bisa melakukan query ke penyedia konten dengan memanggil {@link
+android.content.ContentProvider#query query()} pada {@link android.content.ContentResolver}.</li>
+</ul>
+
+<p>Untuk informasi selengkapnya tentang menggunakan intent, lihat dokumen <a href="{@docRoot}guide/components/intents-filters.html">Intent dan Filter
+ Intent</a>. Informasi selengkapnya tentang mengaktifkan komponen 
+tertentu juga tersedia dalam dokumen berikut: <a href="{@docRoot}guide/components/activities.html">Aktivitas</a>, <a href="{@docRoot}guide/components/services.html">Layanan</a>, {@link
+android.content.BroadcastReceiver} dan <a href="{@docRoot}guide/topics/providers/content-providers.html">Penyedia Konten</a>.</p>
+
+
+<h2 id="Manifest">File Manifes</h2>
+
+<p>Sebelum sistem Android bisa memulai komponen aplikasi, sistem harus mengetahui
+keberadaan komponen dengan membaca file {@code AndroidManifest.xml} aplikasi (file 
+"manifes"). Aplikasi Anda harus mendeklarasikan semua komponennya dalam file ini, yang harus menjadi akar
+dari direktori proyek aplikasi.</p>
+
+<p>Manifes melakukan banyak hal selain mendeklarasikan komponen aplikasi,
+seperti:</p>
+<ul>
+  <li>Mengidentifikasi izin pengguna yang diperlukan aplikasi, seperti akses Internet atau
+akses-baca ke kontak pengguna.</li>
+  <li>Mendeklarasikan <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Level</a>
+ minimum yang diperlukan aplikasi, berdasarkan API yang digunakan aplikasi.</li>
+  <li>Mendeklarasikan fitur perangkat keras dan perangkat lunak yang diperlukan aplikasi, seperti kamera,
+layanan Bluetooth, atau layar multisentuh.</li>
+  <li>Pustaka API aplikasi perlu ditautkan (selain 
+API kerangka kerja Android), seperti pustaka 
+<a href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps.</a></li>
+  <li>Dan lainnya</li>
+</ul>
+
+
+<h3 id="DeclaringComponents">Mendeklarasikan komponen</h3>
+
+<p>Tugas utama manifes adalah menginformasikan komponen aplikasi pada sistem. Misalnya,
+file manifes bisa mendeklarasikan aktivitas sebagai berikut: </p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;manifest ... &gt;
+    &lt;application android:icon="@drawable/app_icon.png" ... &gt;
+        &lt;activity android:name="com.example.project.ExampleActivity"
+                  android:label="@string/example_label" ... &gt;
+        &lt;/activity&gt;
+        ...
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>Dalam elemen <code><a
+href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+, atribut {@code android:icon} menunjuk ke sumber daya untuk ikon yang mengidentifikasi
+aplikasi.</p>
+
+<p>Dalam elemen <code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>, 
+atribut {@code android:name} menetapkan nama kelas yang sepenuhnya memenuhi syarat subkelas {@link
+android.app.Activity} dan atribut {@code android:label} menetapkan string yang akan
+digunakan sebagai label yang terlihat oleh pengguna untuk aktivitas tersebut.</p>
+
+<p>Anda harus mendeklarasikan semua komponen aplikasi dengan cara ini:</p>
+<ul>
+  <li>Elemen <code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> untuk
+aktivitas</li>
+  <li>Elemen <code><a
+href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code> untuk
+layanan</li>
+  <li>Elemen <code><a
+href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code> untuk
+penerima siaran</li>
+  <li>Elemen <code><a
+href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> untuk
+penyedia konten</li>
+</ul>
+
+<p>Aktivitas, layanan, dan penyedia konten yang Anda sertakan dalam kode sumber, namun tidak
+dideklarasikan dalam manifes, tidak akan terlihat pada sistem dan, akibatnya, tidak pernah bisa berjalan.  Akan tetapi,
+penerima siaran 
+bisa dideklarasikan dalam manifes atau dibuat secara dinamis dalam kode (sebagai objek 
+{@link android.content.BroadcastReceiver}) dan didaftarkan pada sistem dengan memanggil
+{@link android.content.Context#registerReceiver registerReceiver()}.</p>
+
+<p>Untuk informasi selengkapnya tentang cara menstrukturkan file manifes untuk aplikasi Anda, 
+lihat dokumentasi <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">File AndroidManifest.xml</a>. </p>
+
+
+
+<h3 id="DeclaringComponentCapabilities">Mendeklarasikan kemampuan komponen</h3>
+
+<p>Seperti telah dibahas di atas, dalam <a href="#ActivatingComponents">Mengaktifkan Komponen</a>, Anda bisa menggunakan
+{@link android.content.Intent} untuk memulai aktivitas, layanan, dan penerima siaran. Anda bisa
+melakukannya dengan menamai komponen sasaran secara eksplisit (menggunakan nama kelas komponen) dalam intent. Akan tetapi,
+kemampuan intent sebenarnya ada pada konsep <em>intent implisit</em>. Intent implisit
+cuma menjelaskan tipe tindakan yang akan dilakukan (dan, secara opsional, data tempat Anda ingin
+melakukan tindakan) dan memungkinkan sistem untuk menemukan komponen pada perangkat yang bisa melakukan
+tindakan tersebut dan memulainya. Jika ada banyak komponen yang bisa melakukan tindakan yang dijelaskan oleh intent,
+maka pengguna bisa memilih komponen yang akan digunakan.</p>
+
+<p>Cara sistem mengidentifikasi komponen yang bisa merespons intent adalah dengan membandingkan
+intent yang diterima dengan <i>filter intent</i> yang disediakan dalam file manifes aplikasi lainnya pada
+perangkat.</p>
+
+<p>Bila mendeklarasikan aktivitas dalam manifes aplikasi, secara opsional Anda bisa menyertakan
+filter intent yang mendeklarasikan kemampuan aktivitas agar bisa merespons intent dari
+aplikasi lain. Anda bisa mendeklarasikan filter intent untuk komponen dengan
+menambahkan elemen <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> sebagai anak elemen deklarasi komponen.</p>
+
+<p>Misalnya, jika Anda telah membangun aplikasi email dengan aktivitas untuk menulis email baru, Anda bisa
+mendeklarasikan filter intent untuk merespons intent "kirim" (untuk mengirim email baru) seperti ini:</p>
+<pre>
+&lt;manifest ... >
+    ...
+    &lt;application ... &gt;
+        &lt;activity android:name="com.example.project.ComposeEmailActivity">
+            &lt;intent-filter>
+                &lt;action android:name="android.intent.action.SEND" />
+                &lt;data android:type="*/*" />
+                &lt;category android:name="android.intent.category.DEFAULT" />
+            &lt;/intent-filter>
+        &lt;/activity>
+    &lt;/application&gt;
+&lt;/manifest>
+</pre>
+
+<p>Kemudian, jika aplikasi lain membuat intent dengan tindakan {@link
+android.content.Intent#ACTION_SEND} dan meneruskannya ke {@link android.app.Activity#startActivity
+startActivity()}, sistem bisa memulai aktivitas Anda agar pengguna bisa menulis draf dan mengirim
+email.</p>
+
+<p>Untuk informasi selengkapnya tentang membuat filter intent, lihat dokumen <a href="{@docRoot}guide/components/intents-filters.html">Intent dan Filter Intent</a>.
+</p>
+
+
+
+<h3 id="DeclaringRequirements">Mendeklarasikan kebutuhan aplikasi</h3>
+
+<p>Ada berbagai macam perangkat yang didukung oleh Android dan tidak
+semuanya menyediakan fitur dan kemampuan yang sama. Agar aplikasi Anda tidak dihapus pada perangkat yang tidak memiliki
+fitur yang diperlukan aplikasi, Anda harus jelas mendefinisikan profil mengenai
+tipe perangkat yang didukung aplikasi dengan mendeklarasikan kebutuhan perangkat dan perangkat lunak dalam file
+manifes. Kebanyakan deklarasi ini hanya bersifat informasi dan sistem tidak
+membacanya, namun layanan eksternal seperti Google Play akan membacanya untuk menyediakan
+penyaringan bagi pengguna saat mereka mencari aplikasi dari perangkat.</p>
+
+<p>Misalnya, jika aplikasi memerlukan kamera dan menggunakan API yang disediakan dalam Android 2.1 (<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Level</a> 7)
+, Anda harus mendeklarasikannya sebagai kebutuhan dalam file manifes seperti ini:</p> 
+
+<pre>
+&lt;manifest ... >
+    &lt;uses-feature android:name="android.hardware.camera.any"
+                  android:required="true" />
+    &lt;uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" />
+    ...
+&lt;/manifest>
+</pre>
+
+<p>Sekarang, perangkat yang <em>tidak</em> memiliki kamera dan menggunakan 
+Android versi <em>lebih rendah</em> dari 2.1 tidak bisa menginstal aplikasi Anda dari Google Play.</p>
+
+<p>Akan tetapi, bisa juga mendeklarasikan bahwa aplikasi Anda menggunakan kamera, namun tidak 
+<em>mengharuskannya</em>. Dalam hal itu, aplikasi Anda harus mengatur atribut <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#required">{@code required}</a>
+ ke {@code "false"} dan memeriksa saat runtime apakah
+perangkat memiliki kamera dan menonaktifkan setiap fitur kamera yang sesuai.</p>
+
+<p>Informasi selengkapnya tentang cara mengelola kompatibilitas aplikasi dengan
+perangkat yang berbeda disediakan dalam dokumen
+<a href="{@docRoot}guide/practices/compatibility.html">Kompatibilitas Perangkat</a>.</p>
+
+
+
+<h2 id="Resources">Sumber Daya Aplikasi</h2>
+
+<p>Aplikasi Android tidak hanya terdiri dari kode&mdash;Aplikasi memerlukan sumber daya yang
+terpisah dari kode sumber, seperti gambar, file audio, dan apa saja yang berkaitan dengan
+presentasi visual dari aplikasi. Misalnya, Anda harus mendefinisikan animasi, menu, gaya, warna,
+dan layout antarmuka pengguna aktivitas dengan file XML. Penggunaan sumber daya aplikasi
+mempermudah pembaruan berbagai karakteristik aplikasi Anda tanpa memodifikasi kode dan&mdash;dengan menyediakan
+seperangkat sumber daya alternatif&mdash;memungkinkan Anda mengoptimalkan aplikasi untuk berbagai konfigurasi
+perangkat berbeda (seperti bahasa dan ukuran layar yang berbeda).</p>
+
+<p>Untuk setiap sumber daya yang Anda sertakan dalam proyek Android, alat bawaan SDK akan mendefinisikan ID integer
+unik, yang bisa Anda gunakan untuk mengacu sumber daya dari kode aplikasi atau dari sumber daya lainnya yang
+didefinisikan dalam XML. Misalnya, jika aplikasi berisi file gambar bernama {@code
+logo.png} (disimpan dalam direktori {@code res/drawable/}), alat SDK akan menghasilkan ID sumber daya
+bernama {@code R.drawable.logo}, yang bisa Anda gunakan untuk mengacu gambar dan memasukkannya dalam
+antarmuka pengguna.</p>
+
+<p>Salah satu aspek paling penting dari penyediaan sumber daya yang terpisah dari
+kode sumber adalah kemampuan Anda menyediakan sumber daya alternatif untuk konfigurasi perangkat
+yang berbeda. Misalnya, dengan mendefinisikan string UI dalam XML, Anda bisa menerjemahkan string ke dalam
+bahasa lain dan menyimpan string itu dalam file terpisah. Kemudian, berdasarkan <em>qualifier</em>
+bahasa yang ditambahkan ke nama direktori sumber daya (seperti {@code res/values-fr/} untuk nilai
+string Prancis) dan pengaturan bahasa pengguna, sistem Android akan menerapkan string bahasa yang sesuai
+untuk UI Anda.</p>
+
+<p>Android mendukung banyak <em>qualifier</em> berbeda untuk sumber daya alternatif Anda. Qualifier
+adalah string pendek yang Anda sertakan dalam nama direktori sumber
+daya untuk mendefinisikan konfigurasi perangkat yang harus digunakan sumber daya tersebut. Contoh lainnya,
+Anda harus sering membuat layout berbeda untuk aktivitas, bergantung pada
+orientasi layar dan ukuran perangkat. Misalnya, saat layar perangkat dalam orientasi
+tegak, Anda mungkin ingin layout tombolnya vertikal, tetapi saat layar dalam orientasi
+mendatar, tombolnya harus sejajar horizontal. Untuk mengubah layout
+sesuai orientasi, Anda bisa mendefinisikan dua layout berbeda dan menerapkan qualifier yang
+tepat untuk setiap nama direktori layout. Kemudian, sistem secara otomatis menerapkan
+layout yang tepat sesuai dengan orientasi perangkat saat ini.</p>
+
+<p>Untuk informasi selengkapnya tentang berbagai jenis sumber daya yang bisa disertakan dalam aplikasi dan cara
+membuat sumber daya alternatif untuk konfigurasi perangkat berbeda, bacalah <a href="{@docRoot}guide/topics/resources/providing-resources.html">Menyediakan Sumber Daya</a>.</p>
+
+
+
+<div class="next-docs">
+<div class="col-6">
+  <h2 class="norule">Teruskan membaca tentang:</h2>
+  <dl>
+    <dt><a href="{@docRoot}guide/components/intents-filters.html">Intent dan Filter Intent</a>
+    </dt>
+    <dd>Informasi tentang cara menggunakan API {@link android.content.Intent} untuk
+ mengaktifkan komponen aplikasi, seperti aktivitas dan layanan, dan cara menyediakan komponen aplikasi
+ untuk digunakan oleh aplikasi lain.</dd>
+    <dt><a href="{@docRoot}guide/components/activities.html">Aktivitas</a></dt>
+    <dd>Informasi tentang cara membuat instance kelas {@link android.app.Activity}, 
+yang menyediakan layar tersendiri dalam aplikasi bersama antarmuka pengguna.</dd>
+    <dt><a href="{@docRoot}guide/topics/resources/providing-resources.html">Menyediakan Sumber Daya</a></dt>
+    <dd>Informasi tentang cara aplikasi Android disusun untuk memisahkan sumber daya aplikasi dari
+kode aplikasi, termasuk cara Anda bisa menyediakan sumber daya alternatif untuk 
+konfigurasi perangkat tertentu.
+    </dd>
+  </dl>
+</div>
+<div class="col-6">
+  <h2 class="norule">Anda juga mungkin tertarik dengan:</h2>
+  <dl>
+    <dt><a href="{@docRoot}guide/practices/compatibility.html">Kompatibilitas Perangkat</a></dt>
+    <dd>Informasi tentang cara kerja Android pada berbagai tipe perangkat dan 
+pengenalan mengenai cara mengoptimalkan aplikasi untuk setiap perangkat atau membatasi ketersediaan aplikasi Anda untuk
+perangkat berbeda.</dd>
+    <dt><a href="{@docRoot}guide/topics/security/permissions.html">Izin Sistem</a></dt>
+    <dd>Informasi tentang cara Android membatasi akses aplikasi pada API tertentu dengan sistem izin 
+yang mengharuskan persetujuan pengguna agar aplikasi dapat menggunakan API tersebut.</dd>
+  </dl>
+</div>
+</div>
+
diff --git a/docs/html-intl/intl/in/guide/components/index.jd b/docs/html-intl/intl/in/guide/components/index.jd
new file mode 100644
index 0000000..a8dd5f8
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/components/index.jd
@@ -0,0 +1,57 @@
+page.title=Komponen Aplikasi
+page.landing=true
+page.landing.intro=Kerangka kerja aplikasi Android memungkinkan Anda membuat aplikasi yang kaya dan inovatif menggunakan seperangkat komponen yang dapat digunakan kembali. Bagian ini menjelaskan cara membangun komponen yang mendefinisikan blok pembangun aplikasi Anda dan cara menghubungkannya bersama menggunakan intent. 
+page.metaDescription=Kerangka kerja aplikasi Android memungkinkan Anda membuat aplikasi yang kaya dan inovatif menggunakan seperangkat komponen yang dapat digunakan kembali. Bagian ini menjelaskan cara membangun komponen yang mendefinisikan blok pembangun aplikasi Anda dan cara menghubungkannya bersama menggunakan intent. 
+page.landing.image=images/develop/app_components.png
+page.image=images/develop/app_components.png
+
+@jd:body
+
+<div class="landing-docs">
+
+  <div class="col-6">
+    <h3>Artikel Blog</h3>
+    
+    <a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
+      <h4>Menggunakan DialogFragments</h4>
+      <p>Dalam posting ini, saya akan menunjukkan cara menggunakan DialogFragments dengan pustaka dukungan v4 (untuk kompatibilitas mundur pada perangkat sebelum Honeycomb) untuk menunjukkan dialog edit sederhana dan mengembalikan hasil ke Aktivitas pemanggil menggunakan antarmuka.</p>
+    </a>
+
+    <a href="http://android-developers.blogspot.com/2011/03/fragments-for-all.html">
+      <h4>Fragmen Untuk Semua</h4>
+      <p>Hari ini kami telah merilis pustaka statis yang memperlihatkan API Fragment yang sama (serta LoaderManager baru dan beberapa kelas lain) agar aplikasi yang kompatibel dengan Android 1.6 atau yang lebih baru bisa menggunakan fragmen untuk membuat antarmuka pengguna yang kompatibel dengan tablet. </p>
+    </a>
+    
+    <a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
+      <h4>Multithreading untuk Kinerja</h4>
+      <p>Praktik yang baik dalam membuat aplikasi yang responsif adalah memastikan thread UI utama Anda
+melakukan pekerjaan minimum. Setiap tugas yang berpotensi lama dan dapat membuat aplikasi mogok harus
+ditangani di thread berbeda.</p>
+    </a>
+  </div>
+
+  <div class="col-6">
+    <h3>Pelatihan</h3>
+    
+    <a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
+      <h4>Mengelola Daur Hidup Aktivitas</h4>
+      <p>Bagian ini menjelaskan pentingnya metode callback daur hidup yang diterima setiap instance Aktivitas
+dan cara menggunakannya sehingga aktivitas Anda melakukan yang diharapkan pengguna dan tidak menghabiskan sumber daya sistem
+saat aktivitas tidak membutuhkannya.</p>
+    </a>
+
+    <a href="http://developer.android.com/training/basics/fragments/index.html">
+      <h4>Membangun UI Dinamis dengan Fragmen</h4>
+      <p>Bagian ini menunjukkan kepada Anda cara membuat pengalaman pengguna yang dinamis dengan fragmen dan mengoptimalkan
+pengalaman pengguna aplikasi Anda dengan berbagai ukuran layar, sekaligus terus mendukung
+perangkat yang menjalankan versi sebelumnya, sesudah versi Android 1.6.</p>
+    </a>
+
+    <a href="http://developer.android.com/training/sharing/index.html">
+      <h4>Berbagi Konten</h4>
+      <p>Bagian ini membahas beberapa cara umum untuk mengirim dan menerima konten antar
+aplikasi menggunakan API Intent dan objek ActionProvider.</p>
+    </a>
+  </div>
+
+</div>
diff --git a/docs/html-intl/intl/in/guide/components/intents-filters.jd b/docs/html-intl/intl/in/guide/components/intents-filters.jd
new file mode 100644
index 0000000..8e89b5d
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/components/intents-filters.jd
@@ -0,0 +1,899 @@
+page.title=Intent dan Filter Intent
+page.tags="IntentFilter"
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Dalam dokumen ini</h2>
+<ol>
+  <li><a href="#Types">Tipe Intent</a></li>
+  <li><a href="#Building">Membangun Intent</a>
+    <ol>
+      <li><a href="#ExampleExplicit">Contoh intent eksplisit</a></li>
+      <li><a href="#ExampleSend">Contoh intent implisit</a></li>
+      <li><a href="#ForceChooser">Memaksakan pemilih aplikasi</a></li>
+    </ol>
+  </li>
+  <li><a href="#Receiving">Menerima Intent Implisit</a>
+    <ol>
+      <li><a href="#ExampleFilters">Contoh filter</a></li>
+    </ol>
+  </li>
+  <li><a href="#PendingIntent">Menggunakan Intent Tertunda</a></li>
+  <li><a href="#Resolution">Resolusi Intent</a>
+    <ol>
+      <li><a href="#ActionTest">Pengujian tindakan</a></li>
+      <li><a href="#CategoryTest">Pengujian kategori</a></li>
+      <li><a href="#DataTest">Pengujian data</a></li>
+      <li><a href="#imatch">Pencocokan intent</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>Lihat juga</h2>
+<ol>
+<li><a href="{@docRoot}training/basics/intents/index.html">Berinteraksi dengan Aplikasi Lain</a></li>
+<li><a href="{@docRoot}training/sharing/index.html">Berbagi Konten</a></li>
+</ol>
+
+</div>
+</div>
+
+
+
+
+<p>{@link android.content.Intent} merupakan objek pertukaran pesan yang bisa Anda gunakan untuk meminta tindakan
+dari <a href="{@docRoot}guide/components/fundamentals.html#Components">komponen aplikasi</a> lain.
+Walaupun intent memudahkan komunikasi antarkomponen dalam beberapa cara, ada tiga
+kasus-penggunaan dasar:</p>
+
+<ul>
+<li><b>Untuk memulai aktivitas:</b>
+<p>{@link android.app.Activity} menyatakan satu layar dalam aplikasi. Anda bisa memulai instance
+baru {@link android.app.Activity} dengan meneruskan {@link android.content.Intent}
+ke {@link android.content.Context#startActivity startActivity()}. {@link android.content.Intent}
+menjelaskan aktivitas yang akan dimulai dan membawa data yang diperlukan.</p>
+
+<p>Jika Anda ingin menerima hasil dari aktivitas bila selesai,
+panggil {@link android.app.Activity#startActivityForResult
+startActivityForResult()}. Aktivitas Anda menerima hasil
+sebagai objek {@link android.content.Intent} terpisah dalam callback {@link
+android.app.Activity#onActivityResult onActivityResult()} aktivitas Anda.
+Untuk informasi selengkapnya, lihat panduan <a href="{@docRoot}guide/components/activities.html">Aktivitas</a>.</p></li>
+
+<li><b>Untuk memulai layanan:</b>
+<p>{@link android.app.Service} adalah komponen yang melakukan operasi di latar belakang
+tanpa antarmuka pengguna. Anda bisa memulai layanan untuk melakukan operasi satu-kali
+(misalnya mengunduh file) dengan meneruskan {@link android.content.Intent}
+ke {@link android.content.Context#startService startService()}. {@link android.content.Intent}
+menjelaskan layanan yang akan dimulai dan membawa data yang diperlukan.</p>
+
+<p>Jika layanan didesain dengan antarmuka pengguna klien-server, Anda bisa mengikat ke layanan
+dari komponen lain dengan meneruskan {@link android.content.Intent} ke {@link
+android.content.Context#bindService bindService()}</code>. Untuk informasi selengkapnya, lihat panduan <a href="{@docRoot}guide/components/services.html">Layanan</a>.</p></li>
+
+<li><b>Untuk mengirim siaran:</b>
+<p>Siaran adalah pesan yang bisa diterima aplikasi apa saja. Sistem menyampaikan beragam siaran
+untuk kejadian sistem, misalnya saat sistem booting atau saat perangkat mulai mengisi daya.
+Anda bisa mengirim siaran ke aplikasi lain dengan meneruskan {@link android.content.Intent}
+ke {@link android.content.Context#sendBroadcast(Intent) sendBroadcast()},
+{@link android.content.Context#sendOrderedBroadcast(Intent, String)
+sendOrderedBroadcast()}, atau {@link
+android.content.Context#sendStickyBroadcast sendStickyBroadcast()}.</p>
+</li>
+</ul>
+
+
+
+
+<h2 id="Types">Tipe Intent</h2>
+
+<p>Ada dua tipe intent:</p>
+
+<ul>
+<li><b>Intent eksplisit</b> menetapkan komponen untuk memulai dengan nama (
+nama kelas yang sepenuhnya memenuhi syarat). Anda biasanya akan menggunakan intent eksplisit untuk memulai sebuah komponen
+dalam aplikasi sendiri, karena Anda mengetahui nama kelas dari aktivitas atau layanan yang ingin dimulai.
+Misalnya, mulai aktivitas baru sebagai respons terhadap tindakan pengguna atau mulai layanan untuk mengunduh
+file di latar belakang.</li>
+
+<li><b>Intent implisit</b> tidak menetapkan komponen tertentu, melainkan mendeklarasikan tindakan umum
+yang dilakukan, yang memungkinkan komponen aplikasi lain untuk menanganinya. Misalnya, jika Anda ingin
+menampilkan sebuah lokasi di peta pada pengguna, Anda bisa menggunakan intent implisit untuk meminta aplikasi lain
+yang mampu untuk menunjukkan lokasi yang telah ditetapkan di peta tersebut.</li>
+</ul>
+
+<p>Saat Anda membuat intent eksplisit untuk memulai aktivitas atau layanan, sistem akan segera
+memulai komponen aplikasi yang telah ditetapkan dalam objek {@link android.content.Intent}.</p>
+
+<div class="figure" style="width:446px">
+<img src="{@docRoot}images/components/intent-filters@2x.png" width="446" alt="" />
+<p class="img-caption"><strong>Gambar 1.</strong> Ilustrasi yang menggambarkan cara intent implisit
+disampaikan melalui sistem untuk memulai aktivitas lain: <b>[1]</b> <em>Aktivitas A</em> membuat sebuah
+{@link android.content.Intent} dengan keterangan tindakan dan meneruskannya ke {@link
+android.content.Context#startActivity startActivity()}. <b>[2]</b> Sistem Android akan mencari semua
+aplikasi untuk filter intent yang cocok dengan intent tersebut. Bila cocok, <b>[3]</b> sistem akan
+memulai aktivitas mencocokkan (<em>Aktivitas B</em>) dengan memanggil metode {@link
+android.app.Activity#onCreate onCreate()} dan meneruskannya ke {@link android.content.Intent}.
+</p>
+</div>
+
+<p>Bila Anda membuat intent implisit, sistem Android akan menemukan komponen yang sesuai untuk memulai
+dengan membandingkan konten intent dengan <em>filter intent</em> yang dideklarasikan dalam <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">file manifes</a> aplikasi lain di
+perangkat. Jika intent cocok dengan filter intent, sistem akan memulai komponen tersebut dan mengiriminya
+objek {@link android.content.Intent}. Jika banyak filter intent yang kompatibel, sistem
+menampilkan dialog sehingga pengguna bisa memilih aplikasi yang akan digunakan.</p>
+
+<p>Filter intent adalah ekspresi dalam file manifes aplikasi yang
+menetapkan tipe intent yang akan diterima
+komponen. Misalnya, dengan mendeklarasikan intent filter untuk aktivitas,
+Anda akan memungkinkan aplikasi lain untuk langsung memulai aktivitas Anda dengan intent tertentu.
+Demikian pula, jika Anda <em>tidak</em> mendeklarasikan filter intent untuk suatu aktivitas, maka aktivitas tersebut hanya bisa dimulai
+dengan intent eksplisit.</p>
+
+<p class="caution"><strong>Perhatian:</strong> Untuk memastikan aplikasi Anda aman, selalu gunakan intent
+eksplisit saat memulai {@link android.app.Service} dan jangan
+mendeklarasikan filter intent untuk layanan. Menggunakan intent implisit untuk memulai layanan akan menimbulkan
+bahaya keamanan karena Anda tidak bisa memastikan layanan apa yang akan merespons intent,
+dan pengguna tidak bisa melihat layanan mana yang dimulai. Mulai dari Android 5.0 (API level 21), sistem
+melontarkan eksepsi jika Anda memanggil {@link android.content.Context#bindService bindService()}
+dengan intent implisit.</p>
+
+
+
+
+
+<h2 id="Building">Membangun Intent</h2>
+
+<p>Objek {@link android.content.Intent} membawa informasi yang digunakan sistem Android
+untuk menentukan komponen mana yang akan dimulai (misalnya nama persis dari suatu komponen atau kategori
+komponen yang seharusnya menerima intent), ditambah informasi yang digunakan komponen penerima untuk
+melakukan tindakan dengan benar (misalnya tindakan yang harus dilakukan dan data yang harus diolah).</p>
+
+
+<p>Informasi utama yang dimuat dalam {@link android.content.Intent} adalah sebagai berikut:</p>
+
+<dl>
+
+<dt><b>Nama komponen</b></dt>
+<dd>Nama komponen yang akan dimulai.
+
+<p>Ini opsional, namun merupakan bagian informasi penting yang membuat intent
+menjadi <b>eksplisit</b>, yaitu intent harus dikirim hanya ke komponen aplikasi
+yang didefinisikan oleh nama komponen. Tanpa nama komponen, intent menjadi <b>implisit</b> dan
+sistem akan memutuskan komponen mana yang harus menerima intent berdasarkan informasi intent lain
+(misalnya tindakan, data, dan kategori&mdash;yang dijelaskan di bawah ini). Jadi jika Anda ingin memulai komponen
+tertentu dalam aplikasi, Anda harus menetapkan nama komponen tersebut.</p>
+
+<p class="note"><strong>Catatan:</strong> Saat memulai {@link android.app.Service}, Anda harus
+<strong>selalu menetapkan nama komponen</strong>. Jika tidak, maka Anda tidak bisa memastikan layanan apa
+yang akan merespons intent tersebut, dan pengguna tidak bisa melihat layanan mana yang dimulai.</p>
+
+<p>Bidang {@link android.content.Intent} ini adalah objek
+{@link android.content.ComponentName}, yang bisa Anda tetapkan menggunakan
+nama kelas yang sepenuhnya memenuhi syarat dari komponen target, termasuk nama paket aplikasi. Misalnya,
+{@code com.example.ExampleActivity}. Anda bisa mengatur nama komponen dengan {@link
+android.content.Intent#setComponent setComponent()}, {@link android.content.Intent#setClass
+setClass()}, {@link android.content.Intent#setClassName(String, String) setClassName()}, atau dengan konstruktor
+{@link android.content.Intent}.</p>
+
+</dd>
+
+<p><dt><b>Tindakan</b></dt>
+<dd>String yang menetapkan tindakan generik untuk dilakukan (misalnya <em>lihat</em> atau <em>pilih</em>).
+
+<p>Dalam hal intent siaran, ini adalah tindakan yang terjadi dan dilaporkan.
+Tindakan ini sangat menentukan bagaimana keseluruhan intent disusun&mdash;terutama
+apa yang dimuat dalam data dan ekstra.
+
+<p>Anda bisa menetapkan tindakan sendiri yang akan digunakan oleh intent dalam aplikasi Anda (atau digunakan oleh aplikasi
+lain untuk memanggil komponen dalam aplikasi Anda), namun Anda harus menggunakan konstanta tindakan
+yang didefinisikan oleh kelas {@link android.content.Intent} atau kelas kerangka kerja lain. Berikut ini adalah beberapa
+tindakan umum untuk memulai sebuah aktivitas:</p>
+
+<dl>
+<dt>{@link android.content.Intent#ACTION_VIEW}</dt>
+   <dd>Gunakan tindakan ini dalam intent dengan {@link
+   android.content.Context#startActivity startActivity()} saat Anda memiliki beberapa informasi yang
+ bisa ditampilkan aktivitas kepada pengguna, misalnya foto yang bisa dilihat dalam aplikasi galeri, atau alamat
+ yang bisa dilihat dalam aplikasi peta.</dd>
+
+<dt>{@link android.content.Intent#ACTION_SEND}</dt>
+   <dd>Juga dikenal dengan intent "berbagi", Anda harus menggunakannya dalam intent dengan {@link
+   android.content.Context#startActivity startActivity()} bila Anda memiliki data yang bisa digunakan pengguna untuk
+ berbagi melalui aplikasi lain, misalnya aplikasi email atau aplikasi jaringan sosial.</dd>
+</dl>
+
+<p>Lihat referensi kelas {@link android.content.Intent} untuk konstanta
+selengkapnya yang mendefinisikan tindakan generik.  Tindakan lain yang didefinisikan
+di tempat lain dalam kerangka kerja Android, misalnya dalam {@link android.provider.Settings} untuk tindakan
+yang membuka layar tertentu dalam aplikasi Settings di sistem.</p>
+
+<p>Anda bisa menetapkan tindakan untuk sebuah intent dengan {@link android.content.Intent#setAction
+setAction()} atau dengan konstruktor {@link android.content.Intent}.</p>
+
+<p>Jika mendefinisikan tindakan Anda sendiri, pastikan untuk memasukkan nama paket aplikasi Anda
+sebagai awalan. Misalnya:</p>
+<pre>static final String ACTION_TIMETRAVEL = "com.example.action.TIMETRAVEL";</pre>
+</dd>
+
+<dt><b>Data</b></dt>
+<dd>URI (objek {@link android.net.Uri}) yang mengacu data untuk diolah dan/atau
+tipe MIME dari data tersebut. Tipe data yang disediakan umumnya didikte oleh tindakan intent.
+Misalnya, jika tindakan merupakan {@link android.content.Intent#ACTION_EDIT}, data harus berisi
+URI dari dokumen untuk diedit.
+
+<p>Saat membuat intent,
+seringkali tipe data (tipe MIME-nya) selain URI perlu ditetapkan.
+Misalnya, aktivitas yang mampu menampilkan gambar mungkin tidak mampu
+memutar file audio, walaupun format URI mungkin serupa.
+Jadi menetapkan tipe MIME data Anda akan membantu sistem
+Android menemukan komponen terbaik untuk diterima intent.
+Akan tetapi, tipe MIME seringkali bisa diambil dari URI&mdash;terutama saat datanya merupakan URI
+{@code content:}, yang menunjukkan data tersebut berada di perangkat dan dikontrol oleh
+{@link android.content.ContentProvider}, yang membuat data tipe MIME terlihat di sistem.</p>
+
+<p>Untuk mengatur data URI saja, panggil {@link android.content.Intent#setData setData()}.
+Untuk mengatur tipe MIME saja, panggil {@link android.content.Intent#setType setType()}. Jika perlu, Anda
+bisa mengatur keduanya secara eksplisit dengan {@link
+android.content.Intent#setDataAndType setDataAndType()}.</p>
+
+<p class="caution"><strong>Perhatian:</strong> Jika ingin mengatur tipe URI dan MIME,
+<strong>jangan</strong> panggil {@link android.content.Intent#setData setData()} dan
+{@link android.content.Intent#setType setType()} karena mereka saling menghapuskan nilai satu sama lain.
+Selalu gunakan {@link android.content.Intent#setDataAndType setDataAndType()} untuk mengatur
+tipe URI maupun MIME.</p>
+</dd>
+
+<p><dt><b>Kategori</b></dt>
+<dd>String yang berisi informasi tambahan tentang jenis komponen
+yang harus menangani intent.  Keterangan kategori dalam jumlah berapa pun bisa
+dimasukkan dalam intent, namun sebagian besar intent tidak memerlukan kategori.
+Berikut ini adalah beberapa kategori umum:
+
+<dl>
+<dt>{@link android.content.Intent#CATEGORY_BROWSABLE}</dt>
+  <dd>Aktivitas target memungkinkannya dimulai oleh browser web untuk menampilkan data
+yang diacu oleh tautan&mdash;misalnya gambar atau pesan e-mail.
+  </dd>
+<dt>{@link android.content.Intent#CATEGORY_LAUNCHER}</dt>
+  <dd>Aktivitas tersebut adalah aktivitas awal dari sebuah tugas dan dicantumkan dalam
+       launcher aplikasi sistem.
+  </dd>
+</dl>
+
+<p>Lihat keterangan kelas {@link android.content.Intent} untuk mengetahui daftar lengkap
+kategori.</p>
+
+<p>Anda bisa menetapkan kategori dengan {@link android.content.Intent#addCategory addCategory()}.</p>
+</dd>
+</dl>
+
+
+<p>Properti yang tercantum di atas (nama komponen, tindakan, data, dan kategori) menyatakan
+karakteristik yang mendefinisikan intent. Dengan membaca properti ini, sistem Android
+mampu memutuskan komponen aplikasi yang harus dimulainya.</p>
+
+<p>Akan tetapi, intent bisa membawa informasi tambahan yang tidak memengaruhi
+cara intent ditetapkan pada komponen aplikasi. Intent juga bisa menyediakan:</p>
+
+<dl>
+<dt><b>Ekstra</b></dt>
+<dd>Pasangan nilai-kunci yang membawa informasi yang diperlukan untuk menghasilkan tindakan yang diminta.
+Seperti halnya beberapa tindakan menggunakan jenis tertentu URI data, beberapa tindakan juga menggunakan ekstra tertentu.
+
+<p>Anda bisa menambahkan data ekstra dengan beragam metode {@link android.content.Intent#putExtra putExtra()},
+masing-masing menerima dua parameter: nama kunci dan nilainya.
+Anda juga bisa membuat objek {@link android.os.Bundle} dengan semua data ekstra, kemudian memasukkan
+{@link android.os.Bundle} dalam {@link android.content.Intent} dengan {@link
+android.content.Intent#putExtras putExtras()}.</p>
+
+<p>Misalnya, saat membuat intent yang akan dikirimkan bersama email
+{@link android.content.Intent#ACTION_SEND}, Anda bisa menetapkan penerima "kepada" dengan kunci
+{@link android.content.Intent#EXTRA_EMAIL}, dan menetapkan "subjek" dengan kunci
+{@link android.content.Intent#EXTRA_SUBJECT}.</p>
+
+<p>Kelas {@link android.content.Intent} menetapkan beberapa konstanta {@code EXTRA_*}
+untuk tipe data standar. Jika Anda ingin mendeklarasikan kunci ekstra sendiri (untuk intent yang
+diterima aplikasi Anda), pastikan untuk memasukkan nama paket aplikasi
+sebagai awalan. Misalnya:</p>
+<pre>static final String EXTRA_GIGAWATTS = "com.example.EXTRA_GIGAWATTS";</pre>
+</dd>
+
+<dt><b>Flag</b></dt>
+<dd>Flag didefinisikan dalam kelas {@link android.content.Intent} yang berfungsi sebagai metadata untuk
+intent. Flag menginstruksikan cara meluncurkan aktivitas (misalnya,
+<a href="{@docRoot}guide/components/tasks-and-back-stack.html">tugas</a> mana yang harus dimiliki suatu aktivitas
+) dan cara memperlakukannya setelah diluncurkan (misalnya, apakah aktivitas tersebut masuk ke dalam daftar aktivitas
+terbaru) pada sistem Android.
+
+<p>Untuk informasi selengkapnya, lihat metode {@link android.content.Intent#setFlags setFlags()} .</p>
+</dd>
+
+</dl>
+
+
+
+
+<h3 id="ExampleExplicit">Contoh intent eksplisit</h3>
+
+<p>Intent eksplisit adalah intent yang Anda gunakan untuk meluncurkan komponen aplikasi tertentu, seperti
+aktivitas tertentu atau layanan dalam aplikasi Anda. Untuk membuat intent eksplisit, definisikan
+nama komponen untuk objek {@link android.content.Intent} &mdash;semua
+properti intent lain bersifat opsional.</p>
+
+<p>Misalnya, jika Anda ingin membangun layanan dalam aplikasi Anda, bernama {@code DownloadService},
+yang didesain untuk mengunduh file dari web, Anda bisa memulainya dengan kode berikut ini:</p>
+
+<pre>
+// Executed in an Activity, so 'this' is the {@link android.content.Context}
+// The fileUrl is a string URL, such as "http://www.example.com/image.png"
+Intent downloadIntent = new Intent(this, DownloadService.class);
+downloadIntent.setData({@link android.net.Uri#parse Uri.parse}(fileUrl));
+startService(downloadIntent);
+</pre>
+
+<p>Konstruktor {@link android.content.Intent#Intent(Context,Class)}
+ menyediakan {@link android.content.Context} aplikasi dan
+objek {@link java.lang.Class} pada komponen. Dengan demikian,
+intent ini memulai secara eksplisit kelas {@code DownloadService} dalam aplikasi.</p>
+
+<p>Untuk informasi selengkapnya tentang membangun dan memulai layanan, lihat panduan
+<a href="{@docRoot}guide/components/services.html">Layanan</a>.</p>
+
+
+
+
+<h3 id="ExampleSend">Contoh intent implisit</h3>
+
+<p>Intent implisit menetapkan tindakan yang bisa memanggil aplikasi pada perangkat yang mampu
+melakukan tindakan. Menggunakan intent implisit berguna bila aplikasi Anda tidak bisa melakukan
+tindakan, namun aplikasi lain mungkin bisa melakukannya dan Anda ingin pengguna untuk memilih aplikasi mana yang ingin digunakan.</p>
+
+<p>Misalnya, jika memiliki konten yang Anda ingin agar pengguna berbagi konten itu dengan orang lain, buatlah intent
+dengan tindakan {@link android.content.Intent#ACTION_SEND}
+dan tambahkan ekstra yang menetapkan konten yang akan dibagikan. Bila Anda memanggil
+{@link android.content.Context#startActivity startActivity()} dengan intent tersebut, pengguna bisa
+memilih aplikasi yang akan digunakan untuk berbagi konten.</p>
+
+<p class="caution"><strong>Perhatian:</strong> Ada kemungkinan pengguna tidak memiliki <em>suatu</em>
+aplikasi yang menangani intent implisit yang Anda kirimkan ke {@link android.content.Context#startActivity
+startActivity()}. Jika itu terjadi, panggilan akan gagal dan aplikasi Anda akan crash. Untuk memeriksa
+apakah aktivitas bisa menerima intent, panggil {@link android.content.Intent#resolveActivity
+resolveActivity()} pada objek {@link android.content.Intent} Anda. Jika hasilnya bukan nol,
+berarti setidaknya ada satu aplikasi yang bisa menangani intent tersebut dan aman untuk memanggil
+{@link android.content.Context#startActivity startActivity()}. Jika hasilnya nol,
+Anda tidak boleh menggunakan intent tersebut dan, jika memungkinkan, Anda harus menonaktifkan fitur yang mengeluarkan
+intent tersebut.</p>
+
+
+<pre>
+// Create the text message with a string
+Intent sendIntent = new Intent();
+sendIntent.setAction(Intent.ACTION_SEND);
+sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
+sendIntent.setType("text/plain");
+
+// Verify that the intent will resolve to an activity
+if (sendIntent.resolveActivity(getPackageManager()) != null) {
+    startActivity(sendIntent);
+}
+</pre>
+
+<p class="note"><strong>Catatan:</strong> Dalam hal ini, URI tidak digunakan, namun tipe data intent
+dideklarasikan untuk menetapkan konten yang dibawa oleh ekstra.</p>
+
+
+<p>Saat {@link android.content.Context#startActivity startActivity()} dipanggil, sistem akan
+memeriksa semua aplikasi yang terinstal untuk menentukan aplikasi mana yang bisa menangani intent jenis ini (
+intent dengan tindakan {@link android.content.Intent#ACTION_SEND} dan yang membawa data
+"teks/polos"). Jika hanya ada satu aplikasi yang bisa menanganinya, aplikasi tersebut akan langsung terbuka dan diberi
+intent tersebut. Jika banyak aktivitas menerima intent, sistem akan
+menampilkan dialog sehingga pengguna bisa memilih aplikasi mana yang digunakan.</p>
+
+
+<div class="figure" style="width:200px">
+  <img src="{@docRoot}images/training/basics/intent-chooser.png" alt="">
+  <p class="img-caption"><strong>Gambar 2.</strong> Dialog pemilih.</p>
+</div>
+
+<h3 id="ForceChooser">Memaksakan pemilih aplikasi</h3>
+
+<p>Bila ada lebih dari satu aplikasi yang merespons intent implisit Anda,
+pengguna bisa memilih aplikasi mana yang digunakan dan membuat aplikasi tersebut pilihan default untuk
+tindakan tersebut. Ini sangat membantu saat melakukan tindakan di mana pengguna
+mungkin ingin menggunakan aplikasi yang sama untuk seterusnya, seperti saat membuka halaman web (pengguna
+biasanya memilih hanya satu browser web).</p>
+
+<p>Akan tetapi, jika ada banyak aplikasi yang bisa merespons intent tersebut dan pengguna mungkin ingin menggunakan aplikasi
+yang berbeda untuk setiap kalinya, Anda harus menampilkan dialog pemilih secara eksplisit. Dialog pemilih akan meminta
+pengguna memilih aplikasi yang akan digunakan untuk tindakan tertentu setiap kali (pengguna tidak bisa memilih aplikasi default untuk
+tindakan tersebut). Misalnya, saat aplikasi Anda melakukan "berbagi" dengan tindakan {@link
+android.content.Intent#ACTION_SEND}, pengguna mungkin ingin berbagi menggunakan aplikasi berbeda sesuai
+dengan situasi mereka saat itu, jadi Anda harus selalu menggunakan dialog pemilih, seperti yang ditampilkan dalam gambar 2.</p>
+
+
+
+
+<p>Untuk menampilkan pemilih, buatlah {@link android.content.Intent} menggunakan {@link
+android.content.Intent#createChooser createChooser()} dan teruskan ke {@link
+android.app.Activity#startActivity startActivity()}. Misalnya:</p>
+
+<pre>
+Intent sendIntent = new Intent(Intent.ACTION_SEND);
+...
+
+// Always use string resources for UI text.
+// This says something like "Share this photo with"
+String title = getResources().getString(R.string.chooser_title);
+// Create intent to show the chooser dialog
+Intent chooser = Intent.createChooser(sendIntent, title);
+
+// Verify the original intent will resolve to at least one activity
+if (sendIntent.resolveActivity(getPackageManager()) != null) {
+    startActivity(chooser);
+}
+</pre>
+
+<p>Ini menampilkan dialog dengan daftar aplikasi yang merespons intent yang diteruskan ke metode {@link
+android.content.Intent#createChooser createChooser()} dan menggunakan teks yang disediakan sebagai
+judul dialog.</p>
+
+
+
+
+
+
+
+
+
+<h2 id="Receiving">Menerima Intent Implisit</h2>
+
+<p>Untuk mengiklankan intent implisit yang bisa diterima aplikasi Anda, deklarasikan satu atau beberapa filter intent untuk
+tiap komponen aplikasi dengan elemen <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a>
+dalam <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">file manifes</a> Anda.
+Tiap filter intent menetapkan tipe intent yang diterimanya berdasarkan tindakan intent,
+data, dan kategori. Sistem akan mengirim intent implisit ke komponen aplikasi Anda hanya jika
+intent tersebut bisa diteruskan melalui salah satu filter intent.</p>
+
+<p class="note"><strong>Catatan:</strong> Intent eksplisit selalu dikirimkan ke targetnya,
+apa pun filter intent yang dideklarasikan komponen.</p>
+
+<p>Komponen aplikasi harus mendeklarasikan filter terpisah untuk setiap pekerjaan unik yang bisa dilakukannya.
+Misalnya, satu aktivitas dalam aplikasi galeri gambar bisa memiliki dua filter: satu filter
+untuk melihat gambar, dan filter lainnya untuk mengedit gambar. Bila aktivitas dimulai,
+aktivitas akan memeriksa {@link android.content.Intent} dan menentukan cara berperilaku berdasarkan informasi
+dalam {@link android.content.Intent} (misalnya menampilkan kontrol editor atau tidak).</p>
+
+<p>Tiap filter intent didefinisikan oleh elemen <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a>
+dalam file manifes aplikasi, yang tersarang dalam komponen aplikasi terkait (seperti
+elemen <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+). Di dalam <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a>,
+Anda bisa menetapkan tipe intent yang akan diterima dengan menggunakan salah satu atau beberapa
+dari tiga elemen ini:</p>
+
+<dl>
+<dt><a href="{@docRoot}guide/topics/manifest/action-element.html">{@code &lt;action&gt;}</a></dt>
+  <dd>Mendeklarasikan tindakan intent yang diterima, dalam atribut {@code name}. Nilai
+  haruslah nilai string literal dari tindakan, bukan konstanta kelas.</dd>
+<dt><a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a></dt>
+  <dd>Mendeklarasikan tipe data yang diterima, menggunakan salah satu atau beberapa atribut yang menetapkan beragam
+  aspek URI data (<code>scheme</code>, <code>host</code>, <code>port</code>,
+  <code>path</code>, dll.) dan tipe MIME.</dd>
+<dt><a href="{@docRoot}guide/topics/manifest/category-element.html">{@code &lt;category&gt;}</a></dt>
+  <dd>Mendeklarasikan kategori intent yang diterima, dalam atribut {@code name}. Nilai
+  haruslah nilai string literal dari tindakan, bukan konstanta kelas.
+
+  <p class="note"><strong>Catatan:</strong> Untuk menerima intent implisit, Anda
+  <strong>harus menyertakan</strong> kategori
+{@link android.content.Intent#CATEGORY_DEFAULT} dalam filter intent. Metode
+  {@link android.app.Activity#startActivity startActivity()}dan
+  {@link android.app.Activity#startActivityForResult startActivityForResult()} memperlakukan semua intent
+  seolah-olah mendeklarasikan kategori {@link android.content.Intent#CATEGORY_DEFAULT}.
+  Jika tidak mendeklarasikan kategori ini dalam filter intent Anda, tidak ada intent implisit yang ditetapkan untuk
+ aktivitas Anda.</p>
+  </dd>
+</dl>
+
+<p>Misalnya, ini adalah deklarasi aktivitas dengan filter intent yang diterima intent
+{@link android.content.Intent#ACTION_SEND} bila tipe data berupa teks:</p>
+
+<pre>
+&lt;activity android:name="ShareActivity">
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="text/plain"/>
+    &lt;/intent-filter>
+&lt;/activity>
+</pre>
+
+<p>Anda bisa membuat filter yang menyertakan lebih dari satu instance
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code &lt;action&gt;}</a>,
+<a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>, atau
+<a href="{@docRoot}guide/topics/manifest/category-element.html">{@code &lt;category&gt;}</a>.
+Jika Anda melakukannya, Anda hanya perlu memastikan bahwa komponen bisa menangani semua kombinasi
+elemen filter tersebut.</p>
+
+<p>Bila ingin menangani beragam jenis intent, namun hanya dalam kombinasi
+tindakan, data, dan tipe kategori tertentu, maka Anda harus membuat banyak filter intent.</p>
+
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>Membatasi akses ke komponen</h2>
+<p>Menggunakan filter intent bukanlah cara yang aman untuk mencegah aplikasi lain memulai
+komponen Anda. Walaupun filter intent membatasi komponen agar hanya merespons
+jenis intent implisit tertentu, aplikasi lain bisa saja memulai komponen aplikasi Anda
+dengan menggunakan intent eksplisit jika pengembangnya menentukan nama komponen Anda.
+Jika perlu <em>hanya aplikasi Anda sendiri</em> yang mampu memulai salah satu komponen,
+atur atribut <a href="{@docRoot}guide/topics/manifest/activity-element.html#exported">{@code
+exported}</a> ke {@code "false"} untuk komponen itu.
+</p>
+</div>
+</div>
+
+<p>Intent implisit diuji terhadap filter dengan membandingkan intent dengan masing-masing
+dari ketiga elemen. Agar dikirim ke komponen, intent harus lolos ketiga pengujian tersebut.
+Jika intent gagal dalam salah satu pengujian, sistem Android tidak akan mengirim intent ke
+komponen.  Akan tetapi, karena sebuah komponen dapat memiliki beberapa filter intent, intent yang tidak
+lolos melalui salah satu filter komponen mungkin akan lolos di filter lain.
+Informasi selengkapnya tentang cara sistem menetapkan intent disediakan dalam bagian di bawah ini
+tentang <a href="#Resolution">Resolusi Intent</a>.</p>
+
+<p class="caution"><strong>Perhatian:</strong> Untuk menghindari menjalankan
+{@link android.app.Service} aplikasi yang berbeda secara tidak sengaja, selalu gunakan intent eksplisit untuk memulai layanan Anda sendiri dan jangan
+deklarasikan filter intent untuk layanan Anda.</p>
+
+<p class="note"><strong>Catatan:</strong>
+Untuk semua aktivitas, Anda harus mendeklarasikan filter intent dalam file manifes.
+Akan tetapi, filter untuk penerima siaran bisa didaftarkan secara dinamis dengan memanggil
+{@link android.content.Context#registerReceiver(BroadcastReceiver, IntentFilter, String,
+Handler) registerReceiver()}. Anda nanti bisa mencabut pendaftaran penerima dengan {@link
+android.content.Context#unregisterReceiver unregisterReceiver()}. Dengan begitu aplikasi Anda
+bisa mendengarkan siaran tertentu hanya selama periode waktu yang telah ditetapkan saat aplikasi Anda
+berjalan.</p>
+
+
+
+
+
+
+
+<h3 id="ExampleFilters">Contoh filter</h3>
+
+<p>Untuk lebih memahami beberapa perilaku filter intent, lihatlah cuplikan berikut
+dari file manifes aplikasi berbagi di jaringan sosial.</p>
+
+<pre>
+&lt;activity android:name="MainActivity">
+    &lt;!-- This activity is the main entry, should appear in app launcher -->
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.MAIN" />
+        &lt;category android:name="android.intent.category.LAUNCHER" />
+    &lt;/intent-filter>
+&lt;/activity>
+
+&lt;activity android:name="ShareActivity">
+    &lt;!-- This activity handles "SEND" actions with text data -->
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="text/plain"/>
+    &lt;/intent-filter&gt;
+    &lt;!-- This activity also handles "SEND" and "SEND_MULTIPLE" with media data -->
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;action android:name="android.intent.action.SEND_MULTIPLE"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="application/vnd.google.panorama360+jpg"/>
+        &lt;data android:mimeType="image/*"/>
+        &lt;data android:mimeType="video/*"/>
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p>Aktivitas pertama, {@code MainActivity}, merupakan titik masuk utama aplikasi&mdash;aplikasi yang
+terbuka saat pengguna meluncurkan aplikasi dengan ikon launcher:</p>
+<ul>
+  <li>Tindakan {@link android.content.Intent#ACTION_MAIN}
+  menunjukkan ini adalah titik masuk utama dan tidak mengharapkan data intent apa pun.</li>
+  <li>Kategori {@link android.content.Intent#CATEGORY_LAUNCHER} menunjukjkan bahwa ikon
+  aktivitas ini harus ditempatkan dalam launcher aplikasi sistem. Jika elemen <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+  tidak menetapkan ikon dengan{@code icon}, maka sistem akan menggunakan ikon dari elemen
+<a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>.</li>
+</ul>
+<p>Keduanya harus dipasangkan bersama agar aktivitas muncul dalam launcher aplikasi.</p>
+
+<p>Aktivitas kedua, {@code ShareActivity}, dimaksudkan untuk memudahkan berbagi teks dan konten
+media. Walaupun pengguna mungkin memasuki aktivitas ini dengan mengarah ke aktivitas dari {@code MainActivity},
+pengguna juga bisa memasukkan {@code ShareActivity} secara langsung dari aplikasi lain yang mengeluarkan intent
+implisit yang cocok dengan salah satu dari kedua filter intent.</p>
+
+<p class="note"><strong>Catatan:</strong> Tipe MIME,
+<a href="https://developers.google.com/panorama/android/">{@code
+application/vnd.google.panorama360+jpg}</a>, merupakan tipe data khusus yang menetapkan
+foto panorama, yang bisa Anda tangani dengan API <a href="{@docRoot}reference/com/google/android/gms/panorama/package-summary.html">panorama
+Google</a>.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h2 id="PendingIntent">Menggunakan Intent Tertunda</h2>
+
+<p>Objek {@link android.app.PendingIntent} merupakan pembungkus objek {@link
+android.content.Intent}. Tujuan utama {@link android.app.PendingIntent}
+adalah memberikan izin pada aplikasi asing
+untuk menggunakan {@link android.content.Intent} yang termuat seolah-olah dieksekusi dari
+proses aplikasi Anda sendiri.</p>
+
+<p>Kasus penggunaan utama untuk intent tertunda antara lain:</p>
+<ul>
+  <li>Mendeklarasikan intent untuk dieksekusi saat pengguna melakukan tindakan dengan <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Pemberitahuan</a>
+  ({@link android.app.NotificationManager}
+  sistem Android akan mengeksekusi {@link android.content.Intent}) Anda.
+  <li>Mendeklarasikan intent untuk dieksekusi saat pengguna melakukan tindakan dengan
+<a href="{@docRoot}guide/topics/appwidgets/index.html">App Widget</a>
+  (aplikasi layar Home mengeksekusi {@link android.content.Intent}).
+  <li>Mendeklarasikan intent untuk dieksekusi di waktu yang telah ditetapkan di masa mendatang
+({@link android.app.AlarmManager}  sistem Android akan mengeksekusi {@link android.content.Intent}).
+</ul>
+
+<p>Karena setiap objek {@link android.content.Intent} didesain untuk ditangani oleh tipe
+tertentu dari komponen aplikasi (baik {@link android.app.Activity}, {@link android.app.Service}, maupun
+ {@link android.content.BroadcastReceiver}), jadi {@link android.app.PendingIntent} harus
+dibuat dengan pertimbangan yang sama. Saat menggunakan intent tertunda, aplikasi Anda tidak akan
+mengeksekusi intent dengan panggilan seperti {@link android.content.Context#startActivity
+startActivity()}. Anda harus mendeklarasikan tipe komponen yang dimaksud saat membuat
+{@link android.app.PendingIntent} dengan memanggil metode kreator masing-masing:</p>
+
+<ul>
+  <li>{@link android.app.PendingIntent#getActivity PendingIntent.getActivity()} untuk
+  {@link android.content.Intent} yang memulai {@link android.app.Activity}.</li>
+  <li>{@link android.app.PendingIntent#getService PendingIntent.getService()} untuk
+  {@link android.content.Intent} yang memulai {@link android.app.Service}.</li>
+  <li>{@link android.app.PendingIntent#getBroadcast PendingIntent.getBroadcast()} untuk
+  {@link android.content.Intent} yang memulai {@link android.content.BroadcastReceiver}.</li>
+</ul>
+
+<p>Kecuali jika aplikasi Anda <em>menerima</em> intent tertunda dari aplikasi lain,
+metode di atas untuk membuat {@link android.app.PendingIntent} menjadi satu-satunya metode
+{@link android.app.PendingIntent} yang mungkin Anda butuhkan.</p>
+
+<p>Tiap metode mengambil {@link android.content.Context} aplikasi saat itu,
+{@link android.content.Intent} yang ingin Anda bungkus, dan satu atau beberapa flag yang menetapkan
+cara penggunaan intent (misalnya apakah intent bisa digunakan lebih dari sekali).</p>
+
+<p>Informasi selengkapnya tentang intent tertunda disediakan pada dokumentasi untuk setiap
+kasus penggunaan yang bersangkutan, seperti dalam panduan API <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Notifications</a>
+dan <a href="{@docRoot}guide/topics/appwidgets/index.html">App Widgets</a>.</p>
+
+
+
+
+
+
+
+<h2 id="Resolution">Resolusi Intent</h2>
+
+
+<p>Saat sistem menerima intent implisit yang memulai suatu aktivitas, sistem tersebut akan mencari
+aktivitas terbaik untuk intent dengan membandingkan intent dengan filter intent berdasarkan tiga aspek:</p>
+
+<ul>
+  <li>Tindakan intent
+  <li>Data intent (baik URI maupun tipe data)
+  <li>Kategori intent
+</ul>
+
+<p>Bagian berikut menjelaskan cara pencocokan intent dengan komponen yang sesuai
+sehubungan dengan cara pendeklarasian filter intent dalam file manifes aplikasi.</p>
+
+
+<h3 id="ActionTest">Pengujian tindakan</h3>
+
+<p>Untuk menetapkan tindakan intent yang diterima, filter intent bisa mendeklarasikan nol atau beberapa elemen
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a>.  Misalnya:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.EDIT" /&gt;
+    &lt;action android:name="android.intent.action.VIEW" /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>Untuk melewati filter ini, tindakan yang ditetapkan dalam {@link android.content.Intent}
+harus sesuai dengan salah satu tindakan yang tercantum dalam filter.</p>
+
+<p>Jika filter tidak mencantumkan tindakan apa pun, maka tidak ada intent
+yang dicocokkan, jadi semua intent gagal dalam pengujian. Akan tetapi, jika sebuah {@link android.content.Intent}
+tidak menetapkan suatu tindakan, maka akan lolos pengujian (asalkan filter
+berisi setidaknya satu tindakan).</p>
+
+
+
+<h3 id="CategoryTest">Pengujian kategori</h3>
+
+<p>Untuk menetapkan kategori intent yang diterima, filter intent bisa mendeklarasikan nol atau beberapa elemen
+<a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a>.  Misalnya:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+    &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>Agar intent bisa lolos pengujian kategori, setiap kategori dalam {@link android.content.Intent}
+harus sesuai dengan kategori dalam filter. Kebalikannya tidak diperlukan&mdash;filter intent bisa
+mendeklarasikan kategori lebih banyak daripada yang ditetapkan dalam {@link android.content.Intent} dan
+{@link android.content.Intent} tetap akan lolos. Oleh karena itu, intent tanpa kategori harus
+selalu lolos pengujian ini, kategori apa pun yang dideklarasikan dalam filter.</p>
+
+<p class="note"><strong>Catatan:</strong>
+Android secara otomatis menerapkan kategori {@link android.content.Intent#CATEGORY_DEFAULT}
+untuk semua intent implisit yang diteruskan ke {@link
+android.content.Context#startActivity startActivity()} dan {@link
+android.app.Activity#startActivityForResult startActivityForResult()}.
+Jadi jika ingin aktivitas Anda menerima intent implisit, aktivitas tersebut harus
+menyertakan kategori untuk{@code "android.intent.category.DEFAULT"} dalam filter intent (seperti
+yang ditampilkan dalam contoh{@code &lt;intent-filter&gt;} sebelumnya.</p>
+
+
+
+<h3 id="DataTest">Pengujian data</h3>
+
+<p>Untuk menetapkan data intent yang diterima, filter intent bisa mendeklarasikan nol atau beberapa elemen
+<a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
+&lt;data&gt;}</a>.  Misalnya:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:mimeType="video/mpeg" android:scheme="http" ... /&gt;
+    &lt;data android:mimeType="audio/mpeg" android:scheme="http" ... /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>Tiap elemen <code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code>
+bisa menetapkan struktur URI dan tipe data (tipe media MIME).  Ada atribut
+terpisah &mdash; {@code scheme}, {@code host}, {@code port},
+dan {@code path} &mdash; untuk setiap bagian URI:
+</p>
+
+<p style="margin-left: 2em">{@code &lt;scheme&gt;://&lt;host&gt;:&lt;port&gt;/&lt;path&gt;}</p>
+
+<p>
+Misalnya:
+</p>
+
+<p style="margin-left: 2em">{@code content://com.example.project:200/folder/subfolder/etc}</p>
+
+<p>Dalam URI ini, skemanya adalah {@code content}, host-nya adalah {@code com.example.project},
+port-nya adalah {@code 200}, dan path-nya adalah {@code folder/subfolder/etc}.
+</p>
+
+<p>Tiap atribut bersifat opsional dalam elemen <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>,
+namun ada dependensi linear:</p>
+<ul>
+  <li>Jika skema tidak ditetapkan, host akan diabaikan.</li>
+  <li>Jika host tidak ditetapkan, port akan diabaikan.</li>
+  <li>Jika skema dan host tidak ditetapkan, path akan diabaikan.</li>
+</ul>
+
+<p>Bila URI dalam intent dibandingkan dengan spesifikasi URI dalam filter,
+pembandingannya hanya dengan bagian URI yang disertakan dalam filter. Misalnya:</p>
+<ul>
+  <li>Jika sebuah filter menetapkan hanya satu skema, semua URI dengan skema tersebut akan cocok
+dengan filter.</li>
+  <li>Jika sebuah filter menetapkan satu skema dan satu otoritas namun tanpa path, semua URI
+dengan skema dan otoritas yang sama akan lolos dari filter, apa pun path-nya.</li>
+  <li>Jika sebuah filter menetapkan satu skema, otoritas dan path, hanya URI dengan skema,
+otoritas, dan path sama yang bisa lolos dari filter.</li>
+</ul>
+
+<p class="note"><strong>Catatan:</strong> Spesifikasi path bisa berisi
+wildcard bintang (*) untuk hanya mencocokkan nama path secara parsial.</p>
+
+<p>Pengujian data membandingkan URI maupun tipe MIME dalam intent dengan URI
+dan tipe MIME yang ditetapkan dalam filter.  Aturannya adalah sebagai berikut:
+</p>
+
+<ol type="a">
+<li>Intent yang tidak berisi URI maupun tipe MIME hanya akan lolos
+pengujian jika filter tersebut tidak menetapkan URI atau tipe MIME apa pun.</li>
+
+<li>Intent yang berisi URI namun tidak berisi tipe MIME (baik secara eksplisit maupun tidak langsung dari
+URI) hanya akan lolos pengujian jika URI-nya cocok dengan format URI filter
+dan filternya juga tidak menetapkan tipe MIME.</li>
+
+<li>Intent yang berisi tipe MIME namun tidak berisi URI hanya akan lolos pengujian
+jika filter mencantumkan tipe MIME yang sama dan tidak menetapkan format URI.</li>
+
+<li>Intent yang berisi URI maupun tipe MIME (baik secara eksplisit maupun tidak langsung dari
+URI) hanya akan lolos pengujian bagian tipe MIME jika
+tipe tersebut cocok dengan tipe yang dicantumkan dalam filter.  Ini akan lolos pengujian bagian URI
+jika URI-nya cocok dengan URI dalam filter atau memiliki {@code content:}
+atau URI {@code file:} dan filter tidak menetapkan URI. Dengan kata lain,
+komponen dianggap mendukung data {@code content:} dan {@code file:} jika
+filternya <em>hanya</em> mencantumkan tipe MIME.</p></li>
+</ol>
+
+<p>
+Aturan terakhir ini, aturan (d), mencerminkan harapan
+bahwa komponen mampu mendapatkan data lokal dari file atau penyedia konten.
+Oleh karena itu, filter mereka mencatumkan tipe data saja dan tidak secara eksplisit
+harus menamai skema {@code content:} dan {@code file:}.
+Ini adalah kasus umum.  Elemen <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>
+seperti berikut ini, misalnya, memberi tahu Android bahwa komponen bisa mengambil data gambar dari penyedia
+konten dan menampilkannya:
+</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:mimeType="image/*" /&gt;
+    ...
+&lt;/intent-filter&gt;</pre>
+
+<p>
+Karena sebagian besar data yang tersedia dikeluarkan oleh penyedia konten, filter yang
+menetapkan tipe data namun bukan URI mungkin adalah yang paling umum.
+</p>
+
+<p>
+Konfigurasi umum yang lain adalah filter dengan skema dan tipe data.  Misalnya
+, elemen <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>
+ seperti berikut ini akan memberi tahu Android bahwa
+komponen bisa mengambil data video dari jaringan untuk melakukan tindakan:
+</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:scheme="http" android:type="video/*" /&gt;
+    ...
+&lt;/intent-filter&gt;</pre>
+
+
+
+<h3 id="imatch">Pencocokan intent</h3>
+
+<p>Intent dicocokkan dengan filter intent selain untuk menemukan komponen
+target yang akan diaktifkan, juga untuk menemukan sesuatu tentang rangkaian
+komponen pada perangkat.  Misalnya, aplikasi Home akan menempatkan launcher aplikasi
+dengan mencari semua aktivitas dengan filter intent yang menetapkan tindakan
+{@link android.content.Intent#ACTION_MAIN} dan
+kategori {@link android.content.Intent#CATEGORY_LAUNCHER}.</p>
+
+<p>Aplikasi Anda bisa menggunakan pencocokan intent dengan cara serupa.
+{@link android.content.pm.PackageManager} memiliki seperangkat metode {@code query...()}
+yang mengembalikan semua komponen yang bisa menerima intent tertentu, dan
+serangkaian metode{@code resolve...()} serupa yang menentukan komponen
+terbaik untuk merespons intent.  Misalnya,
+{@link android.content.pm.PackageManager#queryIntentActivities
+queryIntentActivities()} akan mengembalikan daftar semua aktivitas yang bisa melakukan
+intent yang diteruskan sebagai argumen, dan {@link
+android.content.pm.PackageManager#queryIntentServices
+queryIntentServices()} akan mengembalikan daftar layanan serupa.
+Tidak ada metode yang akan mengaktifkan komponen; mereka hanya mencantumkan komponen yang
+bisa merespons.  Ada metode serupa,
+{@link android.content.pm.PackageManager#queryBroadcastReceivers
+queryBroadcastReceivers()}, untuk penerima siaran.
+</p>
+
+
+
+
diff --git a/docs/html-intl/intl/in/guide/components/loaders.jd b/docs/html-intl/intl/in/guide/components/loaders.jd
new file mode 100644
index 0000000..cd0379b
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/components/loaders.jd
@@ -0,0 +1,494 @@
+page.title=Aktivitas
+parent.title=Loader
+parent.link=activities.html
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+    <h2>Dalam dokumen ini</h2>
+    <ol>
+    <li><a href="#summary">Rangkuman Loader API</a></li>
+    <li><a href="#app">Menggunakan Loader dalam Aplikasi</a>
+      <ol>
+        <li><a href="#requirements"></a></li>
+        <li><a href="#starting">Memulai Loader</a></li>
+        <li><a href="#restarting">Me-restart Loader</a></li>
+        <li><a href="#callback">Menggunakan Callback LoaderManager</a></li>
+      </ol>
+    </li>
+    <li><a href="#example">Contoh</a>
+       <ol>
+         <li><a href="#more_examples">Contoh Selengkapnya</a></li>
+        </ol>
+    </li>
+  </ol>
+    
+  <h2>Kelas-kelas utama</h2>
+    <ol>
+      <li>{@link android.app.LoaderManager}</li>
+      <li>{@link android.content.Loader}</li>
+
+    </ol>   
+    
+    <h2>Contoh-contoh terkait</h2>
+   <ol>
+     <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
+LoaderCursor</a></li>
+     <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html">
+LoaderThrottle</a></li>
+   </ol>
+  </div>
+</div>
+
+<p>Diperkenalkan di Android 3.0, loader memudahkan pemuatan data asinkron
+dalam aktivitas atau fragmen. Loader memiliki karakteristik ini:</p>
+  <ul>
+    <li>Loader tersedia untuk setiap {@link android.app.Activity} dan {@link
+android.app.Fragment}.</li>
+    <li>Loader menyediakan pemuatan data asinkron.</li>
+    <li>Loader memantau sumber data mereka dan memberikan hasil baru bila
+konten berubah.</li>
+    <li>Loader secara otomatis menghubungkan kembali ke kursor loader lalu saat
+dibuat kembali setelah perubahan konfigurasi. Karena itu, loader tidak perlu melakukan query ulang
+datanya.</li>
+  </ul>
+ 
+<h2 id="summary">Rangkuman Loader API</h2>
+
+<p>Ada beberapa kelas dan antarmuka yang mungkin dilibatkan dalam menggunakan
+loader pada aplikasi. Semuanya dirangkum dalam tabel ini:</p>
+
+<table>
+  <tr>
+    <th>Kelas/Antarmuka</th>
+    <th>Keterangan</th>
+  </tr>
+  <tr>
+    <td>{@link android.app.LoaderManager}</td>
+    <td>Kelas abstrak yang dikaitkan dengan {@link android.app.Activity} atau 
+{@link android.app.Fragment} untuk mengelola satu atau beberapa instance {@link
+android.content.Loader}. Ini membantu aplikasi mengelola
+operasi berjalan lebih lama bersamaan dengan daur hidup {@link android.app.Activity}
+atau {@link android.app.Fragment}; penggunaan paling umumnya adalah dengan 
+{@link android.content.CursorLoader}, akan tetapi aplikasi bebas menulis loader-nya
+ sendiri untuk memuat tipe data lainnya.
+    <br />
+    <br />
+    Hanya ada satu {@link android.app.LoaderManager} per aktivitas atau fragmen. Namun {@link android.app.LoaderManager} bisa memiliki
+beberapa loader.</td>
+  </tr>
+  <tr>
+    <td>{@link android.app.LoaderManager.LoaderCallbacks}</td>
+    <td>Antarmuka callback untuk klien berinteraksi dengan {@link
+android.app.LoaderManager}. Misalnya, Anda menggunakan metode callback {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}
+untuk membuat loader baru.</td>
+  </tr>
+  <tr>
+    <td>{@link android.content.Loader}</td>
+    <td>Kelas abstrak yang melakukan pemuatan data asinkron. Ini
+adalah kelas dasar untuk loader. Biasanya Anda akan menggunakan {@link
+android.content.CursorLoader}, namun Anda bisa menerapkan subkelas sendiri. Selagi
+loader aktif, loader harus memantau sumber datanya dan memberikan hasil
+baru bila konten berubah. </td>
+  </tr>
+  <tr>
+    <td>{@link android.content.AsyncTaskLoader}</td>
+    <td>Loader abstrak yang menyediakan {@link android.os.AsyncTask} untuk melakukan pekerjaan.</td>
+  </tr>
+  <tr>
+    <td>{@link android.content.CursorLoader}</td>
+    <td>Subkelas {@link android.content.AsyncTaskLoader} yang meng-query 
+{@link android.content.ContentResolver} dan mengembalikan {@link
+android.database.Cursor}. Kelas ini mengimplementasikan protokol {@link
+android.content.Loader} dengan cara standar untuk query kursor,
+yang dibuat berdasarkan {@link android.content.AsyncTaskLoader} untuk melakukan query kursor
+pada thread latar belakang agar tidak memblokir UI aplikasi. Menggunakan loader
+ini merupakan cara terbaik untuk memuat data secara asinkron dari {@link
+android.content.ContentProvider}, sebagai ganti melakukan query terkelola melalui
+fragmen atau API aktivitas.</td>
+  </tr>
+</table>
+
+<p>Kelas dan antarmuka dalam tabel di atas merupakan komponen
+esensial yang akan Anda gunakan untuk mengimplementasikan loader dalam aplikasi Anda. Anda tidak memerlukan semuanya
+untuk setiap loader yang dibuat, namun Anda akan selalu memerlukan acuan ke {@link
+android.app.LoaderManager} untuk memulai loader dan implementasi
+kelas {@link android.content.Loader} seperti {@link
+android.content.CursorLoader}. Bagian berikut ini menunjukkan kepada Anda cara menggunakan
+kelas dan antarmuka ini dalam aplikasi.</p>
+
+<h2 id ="app">Menggunakan Loader dalam Aplikasi</h2>
+<p>Bagian ini menjelaskan cara menggunakan loader dalam aplikasi Android. Aplikasi
+yang menggunakan loader biasanya berisi yang berikut ini:</p>
+<ul>
+  <li>{@link android.app.Activity} atau {@link android.app.Fragment}.</li>
+  <li>Instance {@link android.app.LoaderManager}.</li>
+  <li>{@link android.content.CursorLoader} akan memuat data yang didukung oleh {@link
+android.content.ContentProvider}. Atau, Anda dapat mengimplementasikan subkelas sendiri 
+ dari {@link android.content.Loader} atau {@link android.content.AsyncTaskLoader} untuk
+memuat data dari beberapa sumber lain.</li>
+  <li>Implementasi untuk {@link android.app.LoaderManager.LoaderCallbacks}.
+Di sinilah Anda membuat loader baru dan mengelola acuan bagi loader
+yang ada.</li> 
+<li>Cara menampilkan data loader, seperti {@link
+android.widget.SimpleCursorAdapter}.</li>
+  <li>Sumber data, seperti {@link android.content.ContentProvider}, saat menggunakan 
+{@link android.content.CursorLoader}.</li>
+</ul>
+<h3 id="starting">Memulai Loader</h3>
+
+<p>{@link android.app.LoaderManager} mengelola satu atau beberapa instance {@link
+android.content.Loader} dalam {@link android.app.Activity} atau
+{@link android.app.Fragment}. Hanya ada satu {@link
+android.app.LoaderManager} per aktivitas atau fragmen.</p> 
+
+<p>Anda biasanya
+memulai {@link android.content.Loader} dalam metode {@link
+android.app.Activity#onCreate onCreate()} aktivitas, atau dalam metode 
+{@link android.app.Fragment#onActivityCreated onActivityCreated()} fragmen. Anda
+melakukannya dengan cara berikut ini:</p>
+
+<pre>// Prepare the loader.  Either re-connect with an existing one,
+// or start a new one.
+getLoaderManager().initLoader(0, null, this);</pre>
+
+<p>Metode {@link android.app.LoaderManager#initLoader initLoader()} mengambil
+parameter berikut:</p>
+<ul>
+  <li>ID unik yang mengidentifikasi loader. Dalam contoh ini, ID-nya adalah 0.</li>
+<li>Argumen opsional untuk dipasok ke loader
+pada saat pembuatan (dalam contoh ini <code>null</code>).</li> 
+
+<li>Implementasi {@link android.app.LoaderManager.LoaderCallbacks}, yang
+akan dipanggil {@link android.app.LoaderManager} untuk melaporkan kejadian loader. Dalam contoh
+ini, kelas lokal mengimplementasikan antarmuka {@link
+android.app.LoaderManager.LoaderCallbacks}, sehingga meneruskan acuan
+ke dirinya sendiri, {@code this}.</li> 
+</ul>
+<p>Panggilan {@link android.app.LoaderManager#initLoader initLoader()} memastikan bahwa loader
+telah dimulai dan aktif. Ia memiliki dua kemungkinan hasil:</p>
+<ul>
+  <li>Jika loader yang disebutkan oleh ID sudah ada, loader yang dibuat terakhir akan digunakan
+kembali.</li>
+  <li>Jika loader yang disebutkan oleh ID <em>tidak</em> ada,
+{@link android.app.LoaderManager#initLoader initLoader()} akan memicu metode
+{@link android.app.LoaderManager.LoaderCallbacks} {@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}.
+Di sinilah Anda mengimplementasikan kode untuk membuat instance dan mengembalikan loader baru.
+Untuk diskusi selengkapnya, lihat bagian <a href="#onCreateLoader">onCreateLoader</a>.</li>
+</ul>
+<p>Dalam hal ini, implementasi {@link android.app.LoaderManager.LoaderCallbacks}
+yang ditentukan akan dikaitkan dengan loader, dan akan dipanggil bila
+status loader berubah.  Jika saat panggilan ini status pemanggil sudah
+dimulai, dan loader yang diminta sudah ada dan telah menghasilkan
+datanya, maka sistem segera memanggil {@link
+android.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()}
+(selama {@link android.app.LoaderManager#initLoader initLoader()}),
+sehingga Anda harus siap bila hal ini terjadi. Lihat <a href="#onLoadFinished">
+onLoadFinished</a> untuk diskusi selengkapnya mengenai callback ini</p>
+
+<p>Perhatikan bahwa metode {@link android.app.LoaderManager#initLoader initLoader()}
+mengembalikan {@link android.content.Loader} yang dibuat, namun Anda tidak
+perlu menangkap acuan ke sana. {@link android.app.LoaderManager} mengelola
+masa hidup loader secara otomatis. {@link android.app.LoaderManager}
+memulai dan menghentikan pemuatan jika perlu, dan menjaga status loader
+dan konten terkaitnya. Seperti yang tersirat di sini, Anda akan jarang berinteraksi dengan loader
+secara langsung (meskipun misalnya menggunakan metode loader untuk menyempurnakan perilaku
+loader, lihat contoh <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a>). 
+Anda paling sering akan menggunakan metode {@link
+android.app.LoaderManager.LoaderCallbacks} untuk mengintervensi proses
+pemuatan saat terjadi kejadian tertentu. Untuk diskusi selengkapnya mengenai topik ini, lihat <a href="#callback">Menggunakan Callback LoaderManager</a>.</p>
+
+<h3 id="restarting">Me-restart Loader</h3>
+
+<p>Bila Anda menggunakan {@link android.app.LoaderManager#initLoader initLoader()}, seperti
+ditampilkan di atas, loader yang ada akan digunakan dengan ID yang ditetapkan jika ada.
+Jika tidak ada, ID akan dibuat. Namun kadang-kadang Anda perlu membuang data lama
+dan mulai dari awal.</p>
+
+<p>Untuk membuang data lama, gunakan {@link
+android.app.LoaderManager#restartLoader restartLoader()}. Misalnya, implementasi
+{@link android.widget.SearchView.OnQueryTextListener} ini akan me-restart
+bila query pengguna berubah. Loader perlu di-restart
+agar dapat menggunakan filter pencarian yang telah direvisi untuk melakukan query baru:</p>
+
+<pre>
+public boolean onQueryTextChanged(String newText) {
+    // Called when the action bar search text has changed.  Update
+    // the search filter, and restart the loader to do a new query
+    // with this filter.
+    mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+    getLoaderManager().restartLoader(0, null, this);
+    return true;
+}</pre>
+
+<h3 id="callback">Menggunakan Callback LoaderManager</h3>
+
+<p>{@link android.app.LoaderManager.LoaderCallbacks} adalah antarmuka callback
+yang memungkinkan klien berinteraksi dengan {@link android.app.LoaderManager}. </p>
+<p>Loader, khususnya {@link android.content.CursorLoader}, diharapkan
+mempertahankan datanya setelah dihentikan. Ini memungkinkan aplikasi mempertahankan
+datanya di aktivitas atau metode {@link android.app.Activity#onStop
+onStop()} fragmen dan {@link android.app.Activity#onStart onStart()}, sehingga
+bila pengguna kembali ke aplikasi, mereka tidak harus menunggu data
+dimuat kembali. Anda menggunakan metode {@link android.app.LoaderManager.LoaderCallbacks}
+untuk mengetahui waktu membuat loader baru, dan memberi tahu aplikasi kapan
+berhenti menggunakan data loader.</p>
+
+<p>{@link android.app.LoaderManager.LoaderCallbacks} berisi metode
+ini:</p>
+<ul>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()} —
+Membuat instance dan mengembalikan {@link android.content.Loader} baru untuk ID yang diberikan.
+</li></ul>
+<ul>
+  <li> {@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()}
+— Dipanggil bila loader yang dibuat sebelumnya selesai dimuat.
+</li></ul>
+<ul>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}  
+    — Dipanggil bila loader yang dibuat sebelumnya sedang di-reset, sehingga datanya
+tidak tersedia.
+</li>
+</ul>
+<p>Metode ini dijelaskan lebih detail dalam bagian berikutnya.</p>
+
+<h4 id ="onCreateLoader">onCreateLoader</h4>
+
+<p>Saat Anda mencoba mengakses loader (misalnya, melalui {@link
+android.app.LoaderManager#initLoader initLoader()}), ia akan memeriksa untuk mengetahui adanya
+loader yang ditetapkan oleh ID. Jika tidak ada, ia akan memicu metode {@link
+android.app.LoaderManager.LoaderCallbacks} {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}. Di
+sinilah Anda membuat loader baru. Biasanya ini adalah {@link
+android.content.CursorLoader}, namun Anda bisa mengimplementasikan sendiri subkelas {@link
+android.content.Loader}. </p>
+
+<p>Dalam contoh ini, metode callback {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}
+ akan membuat {@link android.content.CursorLoader}. Anda harus membuat
+{@link android.content.CursorLoader} menggunakan metode konstruktornya, yang
+memerlukan set informasi lengkap untuk melakukan query ke {@link
+android.content.ContentProvider}. Secara khusus, ia memerlukan:</p>
+<ul>
+  <li><em>uri</em> — URI untuk konten yang akan diambil. </li>
+  <li><em>projection</em> — Daftar berisi kolom yang akan dikembalikan. Meneruskan
+<code>null</code> akan mengembalikan semua kolom, jadi tidak efisien. </li>
+  <li><em>selection</em> — Filter yang mendeklarasikan baris yang akan dikembalikan,
+diformat sebagai klausa SQL WHERE (tidak termasuk WHERE itu sendiri). Meneruskan
+<code>null</code> akan mengembalikan semua baris untuk URI yang diberikan. </li>
+  <li><em>selectionArgs</em> — Anda dapat menyertakan ?s dalam pilihan, yang akan
+digantikan dengan nilai dari <em>selectionArgs</em>, agar muncul dalam
+pilihan. Nilai-nilai akan diikat sebagai String. </li>
+  <li><em>sortOrder</em> — Cara menyusun baris, diformat sebagai klausa SQL
+ORDER BY (tidak termasuk ORDER BY itu sendiri). Meneruskan <code>null</code> akan
+menggunakan urutan sortir default, yang mungkin tidak berurutan.</li>
+</ul>
+<p>Misalnya:</p>
+<pre>
+ // If non-null, this is the current filter the user has provided.
+String mCurFilter;
+...
+public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+    // This is called when a new Loader needs to be created.  This
+    // sample only has one Loader, so we don't care about the ID.
+    // First, pick the base URI to use depending on whether we are
+    // currently filtering.
+    Uri baseUri;
+    if (mCurFilter != null) {
+        baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+                  Uri.encode(mCurFilter));
+    } else {
+        baseUri = Contacts.CONTENT_URI;
+    }
+
+    // Now create and return a CursorLoader that will take care of
+    // creating a Cursor for the data being displayed.
+    String select = &quot;((&quot; + Contacts.DISPLAY_NAME + &quot; NOTNULL) AND (&quot;
+            + Contacts.HAS_PHONE_NUMBER + &quot;=1) AND (&quot;
+            + Contacts.DISPLAY_NAME + &quot; != '' ))&quot;;
+    return new CursorLoader(getActivity(), baseUri,
+            CONTACTS_SUMMARY_PROJECTION, select, null,
+            Contacts.DISPLAY_NAME + &quot; COLLATE LOCALIZED ASC&quot;);
+}</pre>
+<h4 id="onLoadFinished">onLoadFinished</h4>
+
+<p>Metode ini dipanggil bila loader yang dibuat sebelumnya selesai dimuat.
+Metode ini dijamin dipanggil sebelum pelepasan data terakhir
+yang disediakan untuk loader ini.  Di titik ini Anda harus menyingkirkan semua penggunaan
+data lama (karena akan segera dilepas), namun jangan melepas sendiri
+data tersebut karena loader memilikinya dan akan menanganinya.</p>
+
+
+<p>Loader akan melepas data setelah mengetahui bahwa aplikasi tidak
+lagi menggunakannya.  Misalnya, jika data adalah kursor dari {@link
+android.content.CursorLoader}, Anda tidak boleh memanggil {@link
+android.database.Cursor#close close()} sendiri. Jika kursor ditempatkan 
+dalam {@link android.widget.CursorAdapter}, Anda harus menggunakan metode {@link
+android.widget.SimpleCursorAdapter#swapCursor swapCursor()} agar
+{@link android.database.Cursor} lama tidak ditutup. Misalnya:</p>
+
+<pre>
+// This is the Adapter being used to display the list's data.<br
+/>SimpleCursorAdapter mAdapter;
+...
+
+public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
+    // Swap the new cursor in.  (The framework will take care of closing the
+    // old cursor once we return.)
+    mAdapter.swapCursor(data);
+}</pre>
+
+<h4 id="onLoaderReset">onLoaderReset</h4>
+
+<p>Metode ini dipanggil bila loader yang dibuat sebelumnya sedang di-reset, sehingga datanya
+tidak tersedia. Callback ini memungkinkan Anda mengetahui
+kapan data akan dilepas sehingga dapat menghapus acuannya ke callback.  </p>
+<p>Implementasi ini memanggil 
+{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}
+dengan nilai <code>null</code>:</p>
+
+<pre>
+// This is the Adapter being used to display the list's data.
+SimpleCursorAdapter mAdapter;
+...
+
+public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
+    // This is called when the last Cursor provided to onLoadFinished()
+    // above is about to be closed.  We need to make sure we are no
+    // longer using it.
+    mAdapter.swapCursor(null);
+}</pre>
+
+
+<h2 id="example">Contoh</h2>
+
+<p>Sebagai contoh, berikut ini adalah implementasi penuh {@link
+android.app.Fragment} yang menampilkan {@link android.widget.ListView} berisi
+hasil query terhadap penyedia konten kontak. Ia menggunakan {@link
+android.content.CursorLoader} untuk mengelola query pada penyedia.</p>
+ 
+<p>Agar aplikasi dapat mengakses kontak pengguna, seperti yang ditampilkan dalam contoh ini,
+manifesnya harus menyertakan izin
+{@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS}.</p>
+
+<pre>
+public static class CursorLoaderListFragment extends ListFragment
+        implements OnQueryTextListener, LoaderManager.LoaderCallbacks&lt;Cursor&gt; {
+
+    // This is the Adapter being used to display the list's data.
+    SimpleCursorAdapter mAdapter;
+
+    // If non-null, this is the current filter the user has provided.
+    String mCurFilter;
+
+    @Override public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        // Give some text to display if there is no data.  In a real
+        // application this would come from a resource.
+        setEmptyText(&quot;No phone numbers&quot;);
+
+        // We have a menu item to show in action bar.
+        setHasOptionsMenu(true);
+
+        // Create an empty adapter we will use to display the loaded data.
+        mAdapter = new SimpleCursorAdapter(getActivity(),
+                android.R.layout.simple_list_item_2, null,
+                new String[] { Contacts.DISPLAY_NAME, Contacts.CONTACT_STATUS },
+                new int[] { android.R.id.text1, android.R.id.text2 }, 0);
+        setListAdapter(mAdapter);
+
+        // Prepare the loader.  Either re-connect with an existing one,
+        // or start a new one.
+        getLoaderManager().initLoader(0, null, this);
+    }
+
+    @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        // Place an action bar item for searching.
+        MenuItem item = menu.add(&quot;Search&quot;);
+        item.setIcon(android.R.drawable.ic_menu_search);
+        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+        SearchView sv = new SearchView(getActivity());
+        sv.setOnQueryTextListener(this);
+        item.setActionView(sv);
+    }
+
+    public boolean onQueryTextChange(String newText) {
+        // Called when the action bar search text has changed.  Update
+        // the search filter, and restart the loader to do a new query
+        // with this filter.
+        mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+        getLoaderManager().restartLoader(0, null, this);
+        return true;
+    }
+
+    @Override public boolean onQueryTextSubmit(String query) {
+        // Don't care about this.
+        return true;
+    }
+
+    @Override public void onListItemClick(ListView l, View v, int position, long id) {
+        // Insert desired behavior here.
+        Log.i(&quot;FragmentComplexList&quot;, &quot;Item clicked: &quot; + id);
+    }
+
+    // These are the Contacts rows that we will retrieve.
+    static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
+        Contacts._ID,
+        Contacts.DISPLAY_NAME,
+        Contacts.CONTACT_STATUS,
+        Contacts.CONTACT_PRESENCE,
+        Contacts.PHOTO_ID,
+        Contacts.LOOKUP_KEY,
+    };
+    public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+        // This is called when a new Loader needs to be created.  This
+        // sample only has one Loader, so we don't care about the ID.
+        // First, pick the base URI to use depending on whether we are
+        // currently filtering.
+        Uri baseUri;
+        if (mCurFilter != null) {
+            baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+                    Uri.encode(mCurFilter));
+        } else {
+            baseUri = Contacts.CONTENT_URI;
+        }
+
+        // Now create and return a CursorLoader that will take care of
+        // creating a Cursor for the data being displayed.
+        String select = &quot;((&quot; + Contacts.DISPLAY_NAME + &quot; NOTNULL) AND (&quot;
+                + Contacts.HAS_PHONE_NUMBER + &quot;=1) AND (&quot;
+                + Contacts.DISPLAY_NAME + &quot; != '' ))&quot;;
+        return new CursorLoader(getActivity(), baseUri,
+                CONTACTS_SUMMARY_PROJECTION, select, null,
+                Contacts.DISPLAY_NAME + &quot; COLLATE LOCALIZED ASC&quot;);
+    }
+
+    public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
+        // Swap the new cursor in.  (The framework will take care of closing the
+        // old cursor once we return.)
+        mAdapter.swapCursor(data);
+    }
+
+    public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
+        // This is called when the last Cursor provided to onLoadFinished()
+        // above is about to be closed.  We need to make sure we are no
+        // longer using it.
+        mAdapter.swapCursor(null);
+    }
+}</pre>
+<h3 id="more_examples">Contoh Selengkapnya</h3>
+
+<p>Ada beberapa contoh berbeda dalam <strong>ApiDemos</strong> yang
+mengilustrasikan cara menggunakan loader:</p>
+<ul>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
+LoaderCursor</a> — Versi lengkap dari
+cuplikan yang ditampilkan di atas.</li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> — Contoh cara penggunaan throttling untuk
+mengurangi jumlah query dari penyedia konten saat datanya berubah.</li>
+</ul>
+
+<p>Untuk informasi tentang mengunduh dan menginstal contoh SDK, lihat <a href="http://developer.android.com/resources/samples/get.html"> Mendapatkan
+Contoh</a>. </p>
+
diff --git a/docs/html-intl/intl/in/guide/components/processes-and-threads.jd b/docs/html-intl/intl/in/guide/components/processes-and-threads.jd
new file mode 100644
index 0000000..44051bf
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/components/processes-and-threads.jd
@@ -0,0 +1,411 @@
+page.title=Proses dan Thread
+page.tags=daur hidup,latar belakang
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Dalam dokumen ini</h2>
+<ol>
+<li><a href="#Processes">Proses</a>
+  <ol>
+    <li><a href="#Lifecycle">Daur hidup proses</a></li>
+  </ol>
+</li>
+<li><a href="#Threads">Thread</a>
+  <ol>
+    <li><a href="#WorkerThreads">Thread pekerja</a></li>
+    <li><a href="#ThreadSafe">Metode thread-safe</a></li>
+  </ol>
+</li>
+<li><a href="#IPC">Komunikasi antarproses</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Bila komponen aplikasi dimulai dan tidak ada komponen aplikasi lain yang 
+berjalan, sistem Android akan memulai proses Linux baru untuk aplikasi dengan satu thread 
+eksekusi. Secara default, semua komponen aplikasi yang sama berjalan dalam proses dan 
+thread yang sama (disebut thread "utama"). Jika komponen aplikasi dimulai dan sudah ada 
+proses untuk aplikasi itu (karena komponen lain dari aplikasi itu sudah ada), maka komponen 
+akan dimulai dalam proses itu dan menggunakan thread eksekusi yang sama. Akan tetapi, Anda bisa 
+mengatur komponen berbeda di aplikasi agar berjalan di proses terpisah, dan Anda bisa membuat thread tambahan untuk 
+setiap proses.</p>
+
+<p>Dokumen ini membahas cara kerja proses dan thread di aplikasi Android.</p>
+
+
+<h2 id="Processes">Proses</h2>
+
+<p>Secara default, semua komponen aplikasi yang sama berjalan dalam proses yang sama dan kebanyakan 
+aplikasi tidak boleh mengubah ini. Akan tetapi, jika Anda merasa perlu mengontrol proses milik
+komponen tertentu, Anda dapat melakukannya dalam file manifes.</p>
+
+<p>Entri manifes untuk setiap tipe elemen komponen&mdash;<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a>, <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code
+&lt;service&gt;}</a>, <a href="{@docRoot}guide/topics/manifest/receiver-element.html">{@code
+&lt;receiver&gt;}</a>, dan <a href="{@docRoot}guide/topics/manifest/provider-element.html">{@code
+&lt;provider&gt;}</a>&mdash;mendukung atribut {@code android:process} yang bisa menetapkan 
+dalam proses mana komponen harus dijalankan. Anda bisa mengatur atribut ini agar setiap komponen 
+berjalan dalam prosesnya sendiri atau agar beberapa komponen menggunakan proses yang sama sementara yang lainnya tidak.  Anda juga bisa mengatur
+{@code android:process} agar komponen aplikasi yang berbeda berjalan dalam proses yang sama
+&mdash;sepanjang aplikasi menggunakan ID Linux yang sama dan ditandatangani 
+dengan sertifikat yang sama.</p>
+
+<p>Elemen <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code
+&lt;application&gt;}</a> juga mendukung atribut {@code android:process}, untuk mengatur 
+nilai default yang berlaku bagi semua komponen.</p>
+
+<p>Android bisa memutuskan untuk mematikan proses pada waktu tertentu, bila memori tinggal sedikit dan diperlukan oleh 
+proses lain yang lebih mendesak untuk melayani pengguna. Komponen
+aplikasi yang berjalan dalam proses yang dimatikan maka sebagai konsekuensinya juga akan dimusnahkan.  Proses dimulai 
+kembali untuk komponen itu bila ada lagi pekerjaan untuk mereka lakukan.</p>
+
+<p>Saat memutuskan proses yang akan dimatikan, sistem Android akan mempertimbangkan kepentingan relatifnya bagi
+pengguna.  Misalnya, sistem lebih mudah menghentikan proses yang menjadi host aktivitas yang tidak
+ lagi terlihat di layar, dibandingkan dengan proses yang menjadi host aktivitas yang terlihat. Karena itu, keputusan 
+untuk menghentikan proses bergantung pada keadaan komponen yang berjalan dalam proses tersebut. Aturan
+yang digunakan untuk menentukan proses yang akan dihentikan dibahas di bawah ini. </p>
+
+
+<h3 id="Lifecycle">Daur hidup proses</h3>
+
+<p>Sistem Android mencoba mempertahankan proses aplikasi selama mungkin, namun 
+pada akhirnya perlu menghapus proses lama untuk mengambil kembali memori bagi proses baru atau yang lebih penting.  Untuk
+menentukan proses yang akan
+dipertahankan dan yang harus dimatikan, sistem menempatkan setiap proses ke dalam "hierarki prioritas" berdasarkan 
+komponen yang berjalan dalam proses dan status komponen tersebut.  Proses yang memiliki 
+prioritas terendah akan dimatikan terlebih dahulu, kemudian yang terendah berikutnya, dan seterusnya, jika perlu
+untuk memulihkan sumber daya sistem.</p>
+
+<p>Ada lima tingkatan dalam hierarki prioritas. Daftar berikut berisi beberapa 
+tipe proses berdasarkan urutan prioritas (proses pertama adalah yang <em>terpenting</em> dan 
+<em>dimatikan terakhir</em>):</p>
+
+<ol>
+  <li><b>Proses latar depan</b>
+    <p>Proses yang diperlukan untuk aktivitas yang sedang dilakukan pengguna.  Proses 
+dianggap berada di latar depan jika salah satu kondisi berikut terpenuhi:</p>
+
+      <ul>
+        <li>Proses menjadi host {@link android.app.Activity} yang berinteraksi dengan pengguna dengan metode ({@link
+android.app.Activity}{@link android.app.Activity#onResume onResume()} telah 
+dipanggil).</li>
+
+        <li>Proses menjadi host {@link android.app.Service} yang terikat dengan aktivitas yang sedang berinteraksi dengan 
+pengguna.</li>
+
+        <li>Proses menjadi host {@link android.app.Service} yang berjalan "di latar depan"&mdash;
+layanan telah memanggil{@link android.app.Service#startForeground startForeground()}.
+
+        <li>Proses menjadi host {@link android.app.Service} yang menjalankan salah satu callback
+daur hidupnya ({@link android.app.Service#onCreate onCreate()}, {@link android.app.Service#onStart
+onStart()}, atau {@link android.app.Service#onDestroy onDestroy()}).</li>
+
+        <li>Proses menjadi host {@link android.content.BroadcastReceiver} yang menjalankan metode {@link
+        android.content.BroadcastReceiver#onReceive onReceive()}-nya.</li>
+    </ul>
+
+    <p>Secara umum, hanya ada beberapa proses latar depan pada waktu yang diberikan.  Proses dimatikan hanya sebagai 
+upaya terakhir&mdash; jika memori hampir habis sehingga semuanya tidak bisa terus berjalan.  Pada umumnya, pada 
+titik itu, perangkat dalam keadaan memory paging, sehingga menghentikan beberapa proses latar depan 
+diperlukan agar antarmuka pengguna tetap responsif.</p></li>
+
+  <li><b>Proses yang terlihat</b>
+    <p>Proses yang tidak memiliki komponen latar depan, namun masih bisa 
+memengaruhi apa yang dilihat pengguna di layar. Proses dianggap terlihat jika salah satu kondisi 
+berikut terpenuhi:</p>
+
+      <ul>
+        <li>Proses ini menjadi host {@link android.app.Activity} yang tidak berada di latar depan, namun masih
+terlihat oleh penggunanya (metode {@link android.app.Activity#onPause onPause()} telah dipanggil). 
+Ini bisa terjadi, misalnya, jika aktivitas latar depan memulai dialog, sehingga 
+aktivitas sebelumnya terlihat berada di belakangnya.</li>
+
+        <li>Proses menjadi host {@link android.app.Service} yang terikat dengan aktivitas yang terlihat (atau latar 
+depan)</li>
+      </ul>
+
+      <p>Proses yang terlihat dianggap sangat penting dan tidak akan dimatikan kecuali jika hal itu
+diperlukan agar semua proses latar depan tetap berjalan. </p>
+    </li>
+
+  <li><b>Proses layanan</b>
+    <p>Proses yang menjalankan layanan yang telah dimulai dengan metode {@link
+android.content.Context#startService startService()} dan tidak termasuk dalam salah satu dari dua kategori 
+yang lebih tinggi. Walaupun proses pelayanan tidak langsung terkait dengan semua yang dilihat oleh pengguna, proses ini 
+umumnya melakukan hal-hal yang dipedulikan pengguna (seperti memutar musik di latar belakang 
+atau mengunduh data di jaringan), jadi sistem membuat proses tetap berjalan kecuali memori tidak cukup untuk 
+mempertahankannya bersama semua proses latar depan dan proses yang terlihat. </p>
+  </li>
+
+  <li><b>Proses latar belakang</b>
+    <p>Proses yang menampung aktivitas yang saat ini tidak terlihat oleh pengguna (metode 
+{@link android.app.Activity#onStop onStop()} aktivitas telah dipanggil). Proses ini tidak memiliki dampak 
+langsung pada pengalaman pengguna, dan sistem bisa menghentikannya kapan saja untuk memperoleh kembali memori bagi 
+proses latar depan, proses yang terlihat, 
+atau proses layanan. Biasanya ada banyak proses latar belakang yang berjalan, sehingga disimpan 
+dalam daftar LRU (least recently used atau paling sedikit digunakan) untuk memastikan bahwa proses dengan aktivitas yang paling baru 
+terlihat oleh pengguna sebagai yang terakhir untuk dimatikan. Jika aktivitas mengimplementasikan metode
+ daur hidupnya dengan benar, dan menyimpan statusnya saat ini, menghentikan prosesnya tidak akan memiliki efek 
+yang terlihat pada pengalaman pengguna, karena ketika pengguna kembali ke aktivitas, aktivitas itu memulihkan 
+semua statusnya yang terlihat. Lihat dokumen <a href="{@docRoot}guide/components/activities.html#SavingActivityState">Aktivitas</a>
+ untuk mendapatkan informasi tentang menyimpan dan memulihkan status.</p>
+  </li>
+
+  <li><b>Proses kosong</b>
+    <p>Sebuah proses yang tidak berisi komponen aplikasi aktif apa pun.  Alasan satu-satunya mempertahankan proses 
+seperti ini tetap hidup adalah untuk keperluan caching, meningkatkan waktu mulai (startup) bila
+nanti komponen perlu dijalankan di dalamnya.  Sistem sering menghentikan proses ini untuk menyeimbangkan sumber 
+daya sistem secara keseluruhan antara proses cache dan cache kernel yang mendasarinya.</p>
+  </li>
+</ol>
+
+
+  <p>Android sebisa mungkin memeringkat proses setinggi
+mungkin, berdasarkan prioritas komponen yang sedang aktif dalam proses.  Misalnya, jika suatu proses menjadi host sebuah layanan dan 
+aktivitas yang terlihat, proses akan diperingkat sebagai proses yang terlihat, bukan sebagai proses layanan.</p>
+
+  <p>Selain itu, peringkat proses dapat meningkat karena adanya proses lain yang bergantung padanya
+&mdash;proses yang melayani proses lain tidak bisa diperingkat lebih rendah daripada proses yang 
+sedang dilayaninya. Misalnya, jika penyedia konten dalam proses A melayani klien dalam proses B, atau 
+jika layanan dalam proses A terikat dengan komponen dalam proses B, proses A selalu dipertimbangkan sebagai paling rendah 
+prioritasnya dibandingkan dengan proses B.</p>
+
+  <p>Karena proses yang menjalankan layanan diperingkat lebih tinggi daripada aktivitas latar belakang, 
+aktivitas yang memulai operasi yang berjalan lama mungkin lebih baik memulai <a href="{@docRoot}guide/components/services.html">layanan</a> untuk operasi itu, daripada hanya 
+membuat thread pekerja&mdash;khususnya jika operasi mungkin akan berlangsung lebih lama daripada aktivitas.
+ Misalnya, aktivitas yang mengunggah gambar ke situs web harus memulai layanan 
+untuk mengunggah sehingga unggahan bisa terus berjalan di latar belakang meskipun pengguna meninggalkan aktivitas tersebut.
+Menggunakan layanan akan memastikan operasi paling tidak memiliki prioritas "proses layanan", 
+apa pun yang terjadi pada aktivitas. Ini menjadi alasan yang sama yang membuat penerima siaran harus 
+menjalankan layanan daripada hanya menempatkan operasi yang menghabiskan waktu di thread.</p>
+
+
+
+
+<h2 id="Threads">Thread</h2>
+
+<p>Bila aplikasi diluncurkan, sistem akan membuat thread eksekusi untuk aplikasi tersebut, yang diberi nama, 
+"main". Thread ini sangat penting karena bertugas mengirim kejadian ke widget
+antarmuka pengguna yang sesuai, termasuk kejadian menggambar. Ini juga merupakan thread yang
+membuat aplikasi berinteraksi dengan komponen dari Android UI toolkit (komponen dari paket {@link
+android.widget} dan {@link android.view}). Karena itu, thread 'main' juga terkadang 
+disebut thread UI.</p>
+
+<p>Sistem ini <em>tidak</em> membuat thread terpisah untuk setiap instance komponen. Semua 
+komponen yang berjalan di proses yang sama akan dibuat instance-nya dalam thread UI, dan sistem akan memanggil 
+setiap komponen yang dikirim dari thread itu. Akibatnya, metode yang merespons callback sistem
+ (seperti {@link android.view.View#onKeyDown onKeyDown()} untuk melaporkan tindakan pengguna atau metode callback daur hidup)
+ selalu berjalan di thread UI proses.</p>
+
+<p>Misalnya saat pengguna menyentuh tombol pada layar, thread UI aplikasi akan mengirim kejadian 
+sentuh ke widget, yang selanjutnya menetapkan status ditekan dan mengirim permintaan yang tidak divalidasi ke 
+antrean kejadian. Thread UI akan menghapus antrean permintaan dan memberi tahu widget bahwa widget harus menggambar
+dirinya sendiri.</p>
+
+<p>Saat aplikasi melakukan pekerjaan intensif sebagai respons terhadap interaksi pengguna, model 
+thread tunggal ini bisa menghasilkan kinerja yang buruk kecuali jika Anda mengimplementasikan aplikasi dengan benar. Khususnya jika
+ semua terjadi di thread UI, melakukan operasi yang panjang seperti akses ke jaringan atau query
+database akan memblokir seluruh UI. Bila thread diblokir, tidak ada kejadian yang bisa dikirim,
+termasuk kejadian menggambar. Dari sudut pandang pengguna, aplikasi 
+tampak mogok (hang). Lebih buruk lagi, jika thread UI diblokir selama lebih dari beberapa detik
+(saat ini sekitar 5 detik) pengguna akan ditampilkan dialog "<a href="http://developer.android.com/guide/practices/responsiveness.html">aplikasi tidak
+merespons</a>" (ANR) yang populer karena reputasi buruknya. Pengguna nanti bisa memutuskan untuk keluar dari aplikasi dan menghapus aplikasi 
+jika mereka tidak suka.</p>
+
+<p>Selain itu, toolkit Android UI <em>bukan</em> thread-safe. Jadi, Anda tidak harus memanipulasi 
+UI dari thread pekerja&mdash;Anda harus melakukan semua manipulasi pada antarmuka pengguna dari thread
+UI. Sehingga hanya ada dua aturan untuk model thread tunggal Android:</p>
+
+<ol>
+<li>Jangan memblokir thread UI
+<li>Jangan mengakses toolkit Android UI dari luar thread UI
+</ol>
+
+<h3 id="WorkerThreads">Thread pekerja</h3>
+
+<p>Karena model thread tunggal yang dijelaskan di atas, Anda dilarang memblokir thread 
+UI demi daya respons UI aplikasi. Jika memiliki operasi untuk dijalankan
+yang tidak seketika, Anda harus memastikan untuk melakukannya di thread terpisah (thread "latar belakang" atau
+thread "pekerja").</p>
+
+<p>Misalnya, berikut ini beberapa kode untuk listener klik yang mengunduh gambar dari 
+thread terpisah dan menampilkannya dalam {@link android.widget.ImageView}:</p>
+
+<pre>
+public void onClick(View v) {
+    new Thread(new Runnable() {
+        public void run() {
+            Bitmap b = loadImageFromNetwork("http://example.com/image.png");
+            mImageView.setImageBitmap(b);
+        }
+    }).start();
+}
+</pre>
+
+<p>Awalnya hal ini tampak bekerja dengan baik, karena menciptakan thread baru untuk menangani 
+operasi jaringan. Akan tetapi, hal tersebut melanggar aturan kedua model thread tunggal: <em>jangan mengakses
+ toolkit Android UI dari luar thread UI</em>&mdash;sampel ini memodifikasi {@link
+android.widget.ImageView} dari thread pekerja sebagai ganti thread UI. Ini bisa
+mengakibatkan perilaku yang tidak terdefinisi dan tidak diharapkan, yang bisa menyulitkan dan menghabiskan waktu untuk melacaknya.</p>
+
+<p>Untuk memperbaiki masalah ini, Android menawarkan beberapa cara untuk mengakses thread UI dari 
+thread lainnya. Berikut ini daftar metode yang bisa membantu:</p>
+
+<ul>
+<li>{@link android.app.Activity#runOnUiThread(java.lang.Runnable)
+Activity.runOnUiThread(Runnable)}</li>
+<li>{@link android.view.View#post(java.lang.Runnable) View.post(Runnable)}</li>
+<li>{@link android.view.View#postDelayed(java.lang.Runnable, long) View.postDelayed(Runnable,
+long)}</li>
+</ul>
+
+<p>Misalnya, Anda bisa memperbaiki kode di atas dengan menggunakan metode {@link
+android.view.View#post(java.lang.Runnable) View.post(Runnable)}:</p>
+
+<pre>
+public void onClick(View v) {
+    new Thread(new Runnable() {
+        public void run() {
+            final Bitmap bitmap = loadImageFromNetwork("http://example.com/image.png");
+            mImageView.post(new Runnable() {
+                public void run() {
+                    mImageView.setImageBitmap(bitmap);
+                }
+            });
+        }
+    }).start();
+}
+</pre>
+
+<p>Kini implementasi ini thread-safe: operasi jaringan dilakukan terpisah dari thread
+ sementara {@link android.widget.ImageView} dimanipulasi dari thread UI.</p>
+
+<p>Akan tetapi, karena operasi semakin kompleks, jenis kode seperti ini bisa semakin rumit 
+dan sulit dipertahankan. Untuk menangani interaksi yang lebih kompleks dengan thread pekerja, Anda bisa mempertimbangkan 
+ penggunaan {@link android.os.Handler}di thread pekerja, untuk memproses pesan yang dikirim dari
+ thread UI. Mungkin solusi terbaiknya adalah memperpanjang kelas {@link android.os.AsyncTask}, 
+yang akan menyederhanakan eksekusi tugas-tugas thread pekerja yang perlu berinteraksi dengan UI.</p>
+
+
+<h4 id="AsyncTask">Menggunakan AsyncTask</h4>
+
+<p>Dengan {@link android.os.AsyncTask}, Anda bisa melakukan pekerjaan asinkron pada antarmuka
+pengguna. AsyncTask memblokir operasi di thread pekerja kemudian mempublikasikan hasilnya
+di thread UI, tanpa mengharuskan Anda untuk menangani sendiri thread dan/atau handler sendiri.</p>
+
+<p>Untuk menggunakannya, Anda harus menempatkan {@link android.os.AsyncTask} sebagai subkelas dan mengimplementasikan metode callback {@link
+android.os.AsyncTask#doInBackground doInBackground()} yang berjalan di kumpulan 
+thread latar belakang. Untuk memperbarui UI, Anda harus mengimplementasikan {@link
+android.os.AsyncTask#onPostExecute onPostExecute()}, yang memberikan hasil dari {@link
+android.os.AsyncTask#doInBackground doInBackground()} dan berjalan di thread UI, jadi Anda bisa 
+memperbarui UI dengan aman. Selanjutnya Anda bisa menjalankan tugas dengan memanggil {@link android.os.AsyncTask#execute execute()}
+dari thread UI.</p>
+
+<p>Misalnya, Anda bisa mengimplementasikan contoh sebelumnya menggunakan {@link android.os.AsyncTask} dengan cara
+ini:</p>
+
+<pre>
+public void onClick(View v) {
+    new DownloadImageTask().execute("http://example.com/image.png");
+}
+
+private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
+    /** The system calls this to perform work in a worker thread and
+      * delivers it the parameters given to AsyncTask.execute() */
+    protected Bitmap doInBackground(String... urls) {
+        return loadImageFromNetwork(urls[0]);
+    }
+    
+    /** The system calls this to perform work in the UI thread and delivers
+      * the result from doInBackground() */
+    protected void onPostExecute(Bitmap result) {
+        mImageView.setImageBitmap(result);
+    }
+}
+</pre>
+
+<p>Kini UI aman dan kode jadi lebih sederhana, karena memisahkan pekerjaan ke 
+dalam bagian-bagian yang harus dilakukan pada thread pekerja dan thread UI.</p>
+
+<p>Anda harus membaca acuan {@link android.os.AsyncTask} untuk memahami sepenuhnya 
+cara menggunakan kelas ini, namun berikut ini ikhtisar singkat cara kerjanya:</p>
+
+<ul>
+<li>Anda bisa menetapkan tipe parameter, nilai kemajuan, dan nilai
+ akhir tugas, dengan menggunakan generik</li>
+<li>Metode {@link android.os.AsyncTask#doInBackground doInBackground()} berjalan secara otomatis pada 
+thread pekerja</li>
+<li>{@link android.os.AsyncTask#onPreExecute onPreExecute()}, {@link
+android.os.AsyncTask#onPostExecute onPostExecute()}, dan {@link
+android.os.AsyncTask#onProgressUpdate onProgressUpdate()} semuanya dipanggil pada thread UI</li>
+<li>Nilai yang dikembalikan oleh {@link android.os.AsyncTask#doInBackground doInBackground()} akan dikirim ke
+{@link android.os.AsyncTask#onPostExecute onPostExecute()}</li>
+<li>Anda bisa memangil {@link android.os.AsyncTask#publishProgress publishProgress()} setiap saat di {@link
+android.os.AsyncTask#doInBackground doInBackground()} untuk mengeksekusi {@link
+android.os.AsyncTask#onProgressUpdate onProgressUpdate()} pada thread UI</li>
+<li>Anda bisa membatalkan tugas ini kapan saja, dari thread mana saja</li>
+</ul>
+
+<p class="caution"><strong>Perhatian:</strong> Masalah lain yang mungkin Anda temui saat menggunakan
+thread pekerja adalah restart tak terduga dalam aktivitas karena <a href="{@docRoot}guide/topics/resources/runtime-changes.html">perubahan konfigurasi runtime</a>
+ (seperti saat pengguna mengubah orientasi layar), yang bisa memusnahkan thread pekerja. Untuk 
+melihat cara mempertahankan tugas selama restart ini dan cara membatalkan 
+tugas dengan benar saat aktivitas dimusnahkan, lihat kode sumber untuk aplikasi sampel <a href="http://code.google.com/p/shelves/">Shelves</a>.</p>
+
+
+<h3 id="ThreadSafe">Metode thread-safe</h3>
+
+<p> Dalam beberapa situasi, metode yang Anda implementasikan bisa dipanggil dari lebih dari satu thread, 
+dan karena itu harus ditulis agar menjadi thread-safe. </p>
+
+<p>Ini terutama terjadi untuk metode yang bisa dipanggil dari jauh &mdash;seperti metode dalam <a href="{@docRoot}guide/components/bound-services.html">layanan terikat</a>. Bila sebuah panggilan pada 
+metode yang dijalankan dalam {@link android.os.IBinder} berasal dari proses yang sama di mana 
+{@link android.os.IBinder IBinder} berjalan, metode ini akan dieksekusi di thread pemanggil.
+Akan tetapi, bila panggilan berasal proses lain, metode akan dieksekusi dalam thread yang dipilih dari
+ kumpulan (pool) thread yang dipertahankan sistem dalam proses yang sama seperti{@link android.os.IBinder
+IBinder} (tidak dieksekusi dalam thread UI proses).  Misalnya, karena metode 
+{@link android.app.Service#onBind onBind()} layanan akan dipanggil dari thread UI 
+proses layanan, metode yang diimplementasikan dalam objek yang dikembalikan {@link android.app.Service#onBind
+onBind()} (misalnya, subkelas yang mengimplementasikan metode RPC) akan dipanggil dari thread
+di pool. Karena layanan bisa memiliki lebih dari satu klien, maka lebih dari satu pool thread bisa melibatkan
+ metode {@link android.os.IBinder IBinder} yang sama sekaligus. Metode {@link android.os.IBinder
+IBinder} karenanya harus diimplementasikan sebagai thread-safe.</p>
+
+<p> Penyedia konten juga bisa menerima permintaan data yang berasal dalam proses lain.
+Meskipun kelas {@link android.content.ContentResolver} dan {@link android.content.ContentProvider}
+ menyembunyikan detail cara komunikasi antarproses dikelola, metode {@link
+android.content.ContentProvider} yang merespons permintaan itu&mdash;metode {@link
+android.content.ContentProvider#query query()}, {@link android.content.ContentProvider#insert
+insert()}, {@link android.content.ContentProvider#delete delete()}, {@link
+android.content.ContentProvider#update update()}, dan {@link android.content.ContentProvider#getType
+getType()}&mdash; dipanggil dari pool thread pada proses penyedia konten, bukan thread UI 
+untuk proses tersebut.  Mengingat metode ini bisa dipanggil dari thread mana pun 
+sekaligus, metode-metode ini juga harus diimplementasikan sebagai thread-safe. </p>
+
+
+<h2 id="IPC">Komunikasi Antarproses</h2>
+
+<p>Android menawarkan mekanisme komunikasi antarproses (IPC) menggunakan panggilan prosedur jauh
+ (RPC), yang mana metode ini dipanggil oleh aktivitas atau komponen aplikasi lain, namun dieksekusi dari 
+jauh (di proses lain), bersama hasil yang dikembalikan ke
+pemanggil. Ini mengharuskan penguraian panggilan metode dan datanya ke tingkat yang bisa 
+dipahami sistem operasi, mentransmisikannya dari proses lokal dan ruang alamat untuk proses jauh 
+dan ruang proses, kemudian merakit kembali dan menetapkannya kembali di sana.  Nilai-nilai yang dikembalikan 
+akan ditransmisikan dalam arah berlawanan.  Android menyediakan semua kode untuk melakukan transaksi IPC
+ ini, sehingga Anda bisa fokus pada pendefinisian dan implementasi antarmuka pemrograman RPC. </p>
+
+<p>Untuk melakukan IPC, aplikasi Anda harus diikat ke layanan, dengan menggunakan {@link
+android.content.Context#bindService bindService()}. Untuk informasi selengkapnya, lihat panduan pengembang <a href="{@docRoot}guide/components/services.html">Layanan</a>.</p>
+
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For information about how to perform work in the background for an indefinite period of time
+(without a user interface), continue with the <b><a
+href="{@docRoot}guide/components/services.html">Services</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/in/guide/components/recents.jd b/docs/html-intl/intl/in/guide/components/recents.jd
new file mode 100644
index 0000000..dcfcda7
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/components/recents.jd
@@ -0,0 +1,256 @@
+page.title=Layar Ikhtisar
+page.tags="recents","overview"
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>Dalam dokumen ini</h2>
+  <ol>
+    <li><a href="#adding">Menambahkan Tugas ke Layar Ikhtisar</a>
+      <ol>
+        <li><a href="#flag-new-doc">Menggunakan flag Intent untuk menambahkan tugas</a></li>
+        <li><a href="#attr-doclaunch">Menggunakan atribut Aktivitas untuk menambahkan tugas</a></li>
+      </ol>
+    </li>
+    <li><a href="#removing">Menghapus Tugas</a>
+      <ol>
+        <li><a href="#apptask-remove">Menggunakan kelas AppTask untuk menghapus tugas</a></li>
+        <li><a href="#retain-finished">Mempertahankan tugas yang telah selesai</a></li>
+      </ol>
+    </li>
+  </ol>
+
+  <h2>Kelas-kelas utama</h2>
+  <ol>
+    <li>{@link android.app.ActivityManager.AppTask}</li>
+    <li>{@link android.content.Intent}</li>
+  </ol>
+
+  <h2>Kode contoh</h2>
+  <ol>
+    <li><a href="{@docRoot}samples/DocumentCentricApps/index.html">Aplikasi yang berorientasi dokumen</a></li>
+  </ol>
+
+</div>
+</div>
+
+<p>Layar ikhtisar (juga disebut sebagai layar terbaru, daftar tugas terbaru, atau aplikasi terbaru)
+UI tingkat sistem yang mencantumkan <a href="{@docRoot}guide/components/activities.html">
+aktivitas</a> dan <a href="{@docRoot}guide/components/tasks-and-back-stack.html">tugas</a> yang baru saja diakses. Pengguna
+bisa menyusuri daftar ini dan memilih satu tugas untuk dilanjutkan, atau pengguna bisa menghapus tugas dari
+daftar dengan gerakan mengusap. Dengan dirilisnya Android 5.0 (API level 21), beberapa instance aktivitas yang
+sama yang berisi dokumen berbeda dapat muncul sebagai tugas di layar ikhtisar. Misalnya,
+Google Drive mungkin memiliki satu tugas untuk setiap beberapa dokumen Google. Setiap dokumen muncul sebagai
+tugas dalam layar ikhtisar.</p>
+
+<img src="{@docRoot}images/components/recents.png" alt="" width="284" />
+<p class="img-caption"><strong>Gambar 1.</strong> Layar ikhtisar menampilkan tiga dokumen
+Google Drive, masing-masing dinyatakan sebagai tugas terpisah.</p>
+
+<p>Biasanya Anda harus mengizinkan sistem mendefinisikan cara menyatakan tugas dan
+aktivitas di layar ikhtisar, dan Anda tidak perlu memodifikasi perilaku ini.
+Akan tetapi, aplikasi Anda dapat menentukan cara dan waktu munculnya aktivitas di layar ikhtisar. Kelas
+{@link android.app.ActivityManager.AppTask} memungkinkan Anda mengelola tugas, dan flag
+ aktivitas kelas {@link android.content.Intent} memungkinkan Anda menentukan kapan aktivitas ditambahkan atau dihapus dari
+layar ikhtisar. Selain itu, atribut <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
+&lt;activity&gt;</a></code> memungkinkan Anda menetapkan perilaku di manifes.</p>
+
+<h2 id="adding">Menambahkan Tugas ke Layar Ikhtisar</h2>
+
+<p>Penggunaan flag kelas {@link android.content.Intent} untuk menambahkan tugas memberi kontrol lebih besar
+atas waktu dan cara dokumen dibuka atau dibuka kembali di layar ikhtisar. Bila menggunakan atribut 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+, Anda dapat memilih antara selalu membuka dokumen dalam tugas baru atau menggunakan kembali tugas 
+yang ada untuk dokumen tersebut.</p>
+
+<h3 id="flag-new-doc">Menggunakan flag Intent untuk menambahkan tugas</h3>
+
+<p>Bila membuat dokumen baru untuk aktivitas, Anda memanggil metode 
+{@link android.app.ActivityManager.AppTask#startActivity(android.content.Context, android.content.Intent, android.os.Bundle) startActivity()}
+ dari kelas {@link android.app.ActivityManager.AppTask}, dengan meneruskannya ke intent yang 
+menjalankan aktivitas tersebut. Untuk menyisipkan jeda logis agar sistem memperlakukan aktivitas Anda sebagai tugas
+baru di layar ikhtisar, teruskan flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} 
+dalam metode {@link android.content.Intent#addFlags(int) addFlags()} dari {@link android.content.Intent}
+yang memulai aktivitas itu.</p>
+
+<p class="note"><strong>Catatan:</strong> Flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+menggantikan flag {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET}, 
+yang tidak digunakan lagi pada Android 5.0 (API level 21).</p>
+
+<p>Jika Anda menetapkan flag {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} saat membuat
+dokumen baru, sistem akan selalu membuat tugas baru dengan aktivitas target sebagai akar.
+Dengan pengaturan ini, dokumen yang sama dapat dibuka di lebih dari satu tugas. Kode berikut memperagakan
+cara aktivitas utama melakukannya:</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+DocumentCentricActivity.java</a></p>
+<pre>
+public void createNewDocument(View view) {
+      final Intent newDocumentIntent = newDocumentIntent();
+      if (useMultipleTasks) {
+          newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
+      }
+      startActivity(newDocumentIntent);
+  }
+
+  private Intent newDocumentIntent() {
+      boolean useMultipleTasks = mCheckbox.isChecked();
+      final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
+      newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
+      newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());
+      return newDocumentIntent;
+  }
+
+  private static int incrementAndGet() {
+      Log.d(TAG, "incrementAndGet(): " + mDocumentCounter);
+      return mDocumentCounter++;
+  }
+}
+</pre>
+
+<p class="note"><strong>Catatan:</strong> Aktivitas yang dimulai dengan flag {@code FLAG_ACTIVITY_NEW_DOCUMENT}
+ harus telah menetapkan nilai atribut {@code android:launchMode="standard"} (default) dalam
+manifes.</p>
+
+<p>Bila aktivitas utama memulai aktivitas baru, sistem akan mencari tugas yang intent
+-nya cocok dengan nama komponen intent dalam tugas-tugas yang sudah ada dan mencari aktivitas dalam data Intent. Jika tugas
+tidak ditemukan, atau intent ada dalam flag {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}
+, tugas baru akan dibuat dengan aktivitas tersebut sebagai akarnya. Jika ditemukan, sistem akan
+mengedepankan tugas itu dan meneruskan intent baru ke {@link android.app.Activity#onNewIntent onNewIntent()}.
+Aktivitas baru akan mendapatkan intent dan membuat dokumen baru di layar ikhtisar, seperti dalam
+contoh berikut:</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+NewDocumentActivity.java</a></p>
+<pre>
+&#64;Override
+protected void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_new_document);
+    mDocumentCount = getIntent()
+            .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0);
+    mDocumentCounterTextView = (TextView) findViewById(
+            R.id.hello_new_document_text_view);
+    setDocumentCounterText(R.string.hello_new_document_counter);
+}
+
+&#64;Override
+protected void onNewIntent(Intent intent) {
+    super.onNewIntent(intent);
+    /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this activity
+    is reused to create a new document.
+     */
+    setDocumentCounterText(R.string.reusing_document_counter);
+}
+</pre>
+
+
+<h3 id="#attr-doclaunch">Menggunakan atribut Aktivitas untuk menambahkan tugas</h3>
+
+<p>Aktivitas juga dapat menetapkan dalam manifesnya agar selalu dimulai ke dalam tugas baru dengan menggunakan
+atribut <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+, <a href="{@docRoot}guide/topics/manifest/activity-element.html#dlmode">
+{@code android:documentLaunchMode}</a>. Atribut ini memiliki empat nilai yang menghasilkan efek berikut
+bila pengguna membuka dokumen dengan aplikasi:</p>
+
+<dl>
+  <dt>"{@code intoExisting}"</dt>
+  <dd>Aktivitas menggunakan kembali tugas yang ada untuk dokumen tersebut. Ini sama dengan mengatur flag
+ {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} <em>tanpa</em> mengatur flag
+ {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}, seperti dijelaskan dalam
+ <a href="#flag-new-doc">Menggunakan flag Intent untuk menambahkan tugas</a>, di atas.</dd>
+
+  <dt>"{@code always}"</dt>
+  <dd>Aktivitas ini membuat tugas baru untuk dokumen, meski dokumen sudah dibuka. Menggunakan
+ nilai ini sama dengan menetapkan flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+ maupun {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}.</dd>
+
+  <dt>"{@code none”}"</dt>
+  <dd>Aktivitas ini tidak membuat tugas baru untuk dokumen. Layar ikhtisar memperlakukan
+ aktivitas seperti itu secara default: satu tugas ditampilkan untuk aplikasi, yang 
+dilanjutkan dari aktivitas apa pun yang terakhir dipanggil pengguna.</dd>
+
+  <dt>"{@code never}"</dt>
+  <dd>Aktivitas ini tidak membuat tugas baru untuk dokumen. Mengatur nilai ini akan mengesampingkan
+ perilaku flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+ dan {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}, jika salah satunya ditetapkan di 
+intent, dan layar ikhtisar menampilkan satu tugas untuk aplikasi, yang dilanjutkan dari
+ aktivitas apa pun yang terakhir dipanggil pengguna.</dd>
+</dl>
+
+<p class="note"><strong>Catatan:</strong> Untuk nilai selain {@code none} dan {@code never}, 
+aktivitas harus didefinisikan dengan {@code launchMode="standard"}. Jika atribut ini tidak ditetapkan, maka
+{@code documentLaunchMode="none"} akan digunakan.</p>
+
+<h2 id="removing">Menghapus Tugas</h2>
+
+<p>Secara default, tugas dokumen secara otomatis dihapus dari layar ikhtisar bila aktivitasnya
+selesai. Anda bisa mengesampingkan perilaku ini dengan kelas {@link android.app.ActivityManager.AppTask},
+dengan flag {@link android.content.Intent} atau atribut <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
+&lt;activity&gt;</a></code>.</p>
+
+<p>Kapan saja Anda bisa mengecualikan tugas dari layar ikhtisar secara keseluruhan dengan menetapkan atribut
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+, <a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">
+{@code android:excludeFromRecents}</a> hingga {@code true}.</p>
+
+<p>Anda bisa menetapkan jumlah maksimum tugas yang dapat disertakan aplikasi Anda dalam layar ikhtisar dengan menetapkan
+atribut <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+ <a href="{@docRoot}guide/topics/manifest/activity-element.html#maxrecents">{@code android:maxRecents}
+</a> ke satu nilai integer. Nilai default-nya adalah 16. Bila telah mencapai jumlah maksimum, tugas yang terakhir
+digunakan akan dihapus dari layar ikhtisar. Nilai maksimum {@code android:maxRecents}
+ adalah 50 (25 pada perangkat dengan memori sedikit); nilai yang kurang dari 1 tidak berlaku.</p>
+
+<h3 id="#apptask-remove">Menggunakan kelas AppTask untuk menghapus tugas</h3>
+
+<p>Dalam aktivitas yang membuat tugas baru di layar ikhtisar, Anda bisa
+menetapkan kapan menghapus tugas dan menyelesaikan semua aktivitas yang terkait dengannya
+dengan memanggil metode {@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()}.</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+NewDocumentActivity.java</a></p>
+<pre>
+public void onRemoveFromRecents(View view) {
+    // The document is no longer needed; remove its task.
+    finishAndRemoveTask();
+}
+</pre>
+
+<p class="note"><strong>Catatan:</strong> Penggunaan metode
+{@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()} 
+akan mengesampingkan penggunaan tag {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS}, seperti 
+dibahas di bawah ini.</p>
+
+<h3 id="#retain-finished">Mempertahankan tugas yang telah selesai</h3>
+
+<p>Jika Anda ingin mempertahankan tugas di layar ikhtisar, sekalipun aktivitas sudah selesai, teruskan
+flag {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} dalam metode
+{@link android.content.Intent#addFlags(int) addFlags()} dari Intent yang memulai aktivitas itu.</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+DocumentCentricActivity.java</a></p>
+<pre>
+private Intent newDocumentIntent() {
+    final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
+    newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
+      android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS);
+    newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());
+    return newDocumentIntent;
+}
+</pre>
+
+<p>Untuk memperoleh efek yang sama, tetapkan atribut
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+ <a href="{@docRoot}guide/topics/manifest/activity-element.html#autoremrecents">
+{@code android:autoRemoveFromRecents}</a> hingga {@code false}. Nilai default-nya adalah {@code true}
+untuk aktivitas dokumen, dan {@code false} untuk aktivitas biasa. Penggunaan atribut ini akan mengesampingkan flag
+{@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS}, yang telah dibahas sebelumnya.</p>
+
+
+
+
+
+
+
diff --git a/docs/html-intl/intl/in/guide/components/services.jd b/docs/html-intl/intl/in/guide/components/services.jd
new file mode 100644
index 0000000..7ecd8cd
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/components/services.jd
@@ -0,0 +1,813 @@
+page.title=Layanan
+@jd:body
+
+<div id="qv-wrapper">
+<ol id="qv">
+<h2>Dalam dokumen ini</h2>
+<ol>
+<li><a href="#Basics">Dasar-Dasar</a></li>
+<ol>
+  <li><a href="#Declaring">Mendeklarasikan layanan dalam manifes</a></li>
+</ol>
+<li><a href="#CreatingAService">Membuat Layanan yang Sudah Dimulai</a>
+  <ol>
+    <li><a href="#ExtendingIntentService">Memperluas kelas IntentService</a></li>
+    <li><a href="#ExtendingService">Memperluas kelas Layanan</a></li>
+    <li><a href="#StartingAService">Memulai layanan</a></li>
+    <li><a href="#Stopping">Menghentikan layanan</a></li>
+  </ol>
+</li>
+<li><a href="#CreatingBoundService">Membuat Layanan Terikat</a></li>
+<li><a href="#Notifications">Mengirim Pemberitahuan ke Pengguna</a></li>
+<li><a href="#Foreground">Menjalankan Layanan di Latar Depan</a></li>
+<li><a href="#Lifecycle">Mengelola Daur Hidup Layanan</a>
+<ol>
+  <li><a href="#LifecycleCallbacks">Mengimplementasikan callback daur hidup</a></li>
+</ol>
+</li>
+</ol>
+
+<h2>Kelas-kelas utama</h2>
+<ol>
+  <li>{@link android.app.Service}</li>
+  <li>{@link android.app.IntentService}</li>
+</ol>
+
+<h2>Contoh</h2>
+<ol>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.html">{@code
+      ServiceStartArguments}</a></li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+      LocalService}</a></li>
+</ol>
+
+<h2>Lihat juga</h2>
+<ol>
+<li><a href="{@docRoot}guide/components/bound-services.html">Layanan Terikat</a></li>
+</ol>
+
+</div>
+
+
+<p>{@link android.app.Service} adalah sebuah komponen aplikasi yang bisa melakukan
+operasi yang berjalan lama di latar belakang dan tidak menyediakan antarmuka pengguna. Komponen
+aplikasi lain bisa memulai layanan dan komponen aplikasi tersebut akan terus berjalan
+di latar belakang walaupun pengguna beralih ke aplikasi lain. Selain itu, komponen bisa mengikat ke layanan
+untuk berinteraksi dengannya dan bahkan melakukan komunikasi antarproses (IPC). Misalnya, layanan mungkin
+menangani transaksi jaringan, memutar musik, melakukan file I/O, atau berinteraksi dengan penyedia konten
+dari latar belakang.</p>
+
+<p>Ada dua bentuk dasar layanan:</p>
+
+<dl>
+  <dt>Sudah Dimulai</dt>
+  <dd>Layanan "sudah dimulai" bila komponen aplikasi (misalnya aktivitas) memulainya dengan
+memanggil {@link android.content.Context#startService startService()}. Sesudah dimulai, layanan
+bisa berjalan terus-menerus di latar belakang walaupun komponen yang memulainya telah dimusnahkan. Biasanya,
+layanan yang sudah dimulai akan melakukan operasi tunggal dan tidak mengembalikan hasil ke pemanggilnya.
+Misalnya, layanan bisa mengunduh atau mengunggah file melalui jaringan. Bila operasi selesai,
+layanan seharusnya berhenti sendiri.</dd>
+  <dt>Terikat</dt>
+  <dd>Layanan "terikat" bila komponen aplikasi mengikat kepadanya dengan memanggil {@link
+android.content.Context#bindService bindService()}. Layanan terikat menawarkan antarmuka
+klien-server yang memungkinkan komponen berinteraksi dengan layanan tersebut, mengirim permintaan, mendapatkan hasil dan bahkan
+melakukannya pada sejumlah proses dengan komunikasi antarproses (IPC). Layanan terikat hanya berjalan selama
+ada komponen aplikasi lain yang terikat padanya. Sejumlah komponen bisa terikat pada layanan secara bersamaan,
+namun bila semuanya melepas ikatan, layanan tersebut akan dimusnahkan.</dd>
+</dl>
+
+<p>Walaupun dokumentasi ini secara umum membahas kedua jenis layanan secara terpisah, layanan
+Anda bisa menggunakan keduanya&mdash;layanan bisa dimulai (untuk berjalan terus-menerus) sekaligus memungkinkan pengikatan.
+Cukup mengimplementasikan dua metode callback: {@link
+android.app.Service#onStartCommand onStartCommand()} untuk memungkinkan komponen memulainya dan {@link
+android.app.Service#onBind onBind()} untuk memungkinkan pengikatan.</p>
+
+<p>Apakah aplikasi Anda sudah dimulai, terikat, atau keduanya, semua komponen aplikasi
+bisa menggunakan layanan (bahkan dari aplikasi terpisah), demikian pula semua komponen bisa menggunakan
+suatu aktivitas&mdash;dengan memulainya dengan {@link android.content.Intent}. Akan tetapi, Anda bisa mendeklarasikan
+layanan sebagai privat, pada file manifes, dan memblokir akses dari aplikasi lain. Hal ini
+dibahas selengkapnya di bagian tentang <a href="#Declaring">Mendeklarasikan layanan dalam
+manifes</a>.</p>
+
+<p class="caution"><strong>Perhatian:</strong> Layanan berjalan di
+thread utama proses yang menjadi host-nya&mdash;layanan <strong>tidak</strong> membuat thread-nya sendiri
+dan <strong>tidak</strong> berjalan pada proses terpisah (kecuali bila Anda tentukan demikian). Artinya,
+jika layanan Anda akan melakukan pekerjaan yang membutuhkan tenaga CPU besar atau operasi yang memblokir (seperti
+pemutaran MP3 atau jaringan), Anda perlu membuat thread baru dalam layanan untuk melakukan pekerjaan tersebut. Dengan menggunakan
+thread terpisah, Anda mengurangi risiko terjadinya kesalahan Aplikasi Tidak Merespons (Application Not Responding/ANR) dan
+thread utama aplikasi bisa tetap dikhususkan pada interaksi pengguna dengan aktivitas Anda.</p>
+
+
+<h2 id="Basics">Dasar-Dasar</h2>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>Haruskah menggunakan layanan atau thread?</h3>
+  <p>Layanan sekadar komponen yang bisa berjalan di latar belakang walaupun pengguna sedang tidak
+berinteraksi dengan aplikasi Anda. Sehingga, Anda harus membuat layanan bila memang itu
+yang dibutuhkan.</p>
+  <p>Bila Anda perlu melakukan pekerjaan di luar thread utama, namun hanya bila pengguna sedang berinteraksi
+dengan aplikasi, maka Anda harus membuat thread baru sebagai ganti layanan baru. Misalnya,
+bila Anda ingin memutar musik, namun hanya saat aktivitas Anda berjalan, Anda bisa membuat
+thread dalam {@link android.app.Activity#onCreate onCreate()}, mulai menjalankannya di {@link
+android.app.Activity#onStart onStart()}, kemudian menghentikannya di {@link android.app.Activity#onStop
+onStop()}. Pertimbangkan juga untuk menggunakan {@link android.os.AsyncTask} atau {@link android.os.HandlerThread},
+sebagai ganti kelas {@link java.lang.Thread} yang lazim digunakan. Lihat dokumen <a href="{@docRoot}guide/components/processes-and-threads.html#Threads">Proses dan
+Threading</a> untuk informasi selengkapnya tentang thread.</p>
+  <p>Ingatlah jika menggunakan layanan, layanan tersebut tetap berjalan di thread utama aplikasi Anda secara
+default, jadi Anda harus tetap membuat thread baru dalam layanan bila layanan tersebut melakukan operasi yang intensif
+atau operasi yang memblokir.</p>
+</div>
+</div>
+
+<p>Untuk membuat layanan, Anda harus membuat subkelas {@link android.app.Service} (atau
+salah satu dari subkelasnya yang ada). Dalam implementasi, Anda perlu mengesampingkan sebagian metode callback yang
+menangani aspek utama daur hidup layanan dan memberikan mekanisme bagi komponen untuk mengikat
+pada layanan, bila dibutuhkan. Metode callback terpenting yang perlu Anda kesampingkan adalah:</p>
+
+<dl>
+  <dt>{@link android.app.Service#onStartCommand onStartCommand()}</dt>
+    <dd>Sistem akan memanggil metode ini bila komponen lain, misalnya aktivitas,
+meminta dimulainya layanan, dengan memanggil {@link android.content.Context#startService
+startService()}. Setelah metode ini dieksekusi, layanan akan dimulai dan bisa berjalan di
+latar belakang terus-menerus. Jika mengimplementasikan ini, Anda bertanggung jawab menghentikan layanan bila
+bila pekerjaannya selesai, dengan memanggil {@link android.app.Service#stopSelf stopSelf()} atau {@link
+android.content.Context#stopService stopService()}. (Jika hanya ingin menyediakan pengikatan, Anda tidak
+perlu mengimplementasikan metode ini.)</dd>
+  <dt>{@link android.app.Service#onBind onBind()}</dt>
+    <dd>Sistem akan memanggil metode ini bila komponen lain ingin mengikat pada
+layanan (misalnya untuk melakukan RPC), dengan memanggil {@link android.content.Context#bindService
+bindService()}. Dalam mengimplementasikan metode ini, Anda harus menyediakan antarmuka yang digunakan
+klien untuk berkomunikasi dengan layanan, dengan mengembalikan {@link android.os.IBinder}. Anda harus selalu
+mengimplementasikan metode ini, namun jika tidak ingin mengizinkan pengikatan, Anda perlu mengembalikan null.</dd>
+  <dt>{@link android.app.Service#onCreate()}</dt>
+    <dd>Sistem memanggil metode ini bila layanan dibuat untuk pertama kalinya, untuk melakukan prosedur
+penyiapan satu kali (sebelum memanggil {@link android.app.Service#onStartCommand onStartCommand()} atau
+{@link android.app.Service#onBind onBind()}). Bila layanan sudah berjalan, metode ini tidak
+dipanggil.</dd>
+  <dt>{@link android.app.Service#onDestroy()}</dt>
+    <dd>Sistem memanggil metode ini bila layanan tidak lagi digunakan dan sedang dimusnahkan.
+Layanan Anda perlu mengimplementasikannya untuk membersihkan sumber daya seperti thread, listener
+terdaftar, penerima, dll. Ini adalah panggilan terakhir yang diterima layanan.</dd>
+</dl>
+
+<p>Bila komponen memulai layanan dengan memanggil {@link
+android.content.Context#startService startService()} (yang menyebabkan panggilan ke {@link
+android.app.Service#onStartCommand onStartCommand()}), maka layanan
+terus berjalan hingga terhenti sendiri dengan {@link android.app.Service#stopSelf()} atau bila komponen
+lain menghentikannya dengan memanggil {@link android.content.Context#stopService stopService()}.</p>
+
+<p>Bila komponen memanggil
+{@link android.content.Context#bindService bindService()} untuk membuat layanan (dan {@link
+android.app.Service#onStartCommand onStartCommand()} <em>tidak</em> dipanggil), maka layanan hanya berjalan
+selama komponen terikat kepadanya. Setelah layanan dilepas ikatannya dari semua klien,
+sistem akan menghancurkannya.</p>
+
+<p>Sistem Android akan menghentikan paksa layanan hanya bila memori tinggal sedikit dan sistem harus memulihkan
+sumber daya sistem untuk aktivitas yang mendapatkan fokus pengguna. Jika layanan terikat pada suatu aktivitas yang mendapatkan
+fokus pengguna, layanan tersebut lebih kecil kemungkinannya untuk dimatikan, dan jika layanan dideklarasikan untuk <a href="#Foreground">berjalan di latar depan</a> (akan dibahas kemudian), maka sudah hampir pasti ia tidak akan dimatikan.
+Sebaliknya, bila layanan sudah dimulai dan berjalan lama, maka sistem akan menurunkan posisinya
+dalam daftar tugas latar belakang seiring waktu dan layanan akan sangat rentan untuk
+dimatikan&mdash;bila layanan Anda dimulai, maka Anda harus mendesainnya agar bisa menangani restart
+oleh sistem dengan baik. Jika sistem mematikan layanan Anda, layanan akan dimulai kembali begitu sumber daya
+kembali tersedia (tetapi ini juga bergantung pada nilai yang Anda kembalikan dari {@link
+android.app.Service#onStartCommand onStartCommand()}, sebagaimana akan dibahas nanti). Untuk informasi selengkapnya
+tentang kapan sistem mungkin akan memusnahkan layanan, lihat dokumen
+<a href="{@docRoot}guide/components/processes-and-threads.html">Proses dan Threading</a>.</p>
+
+<p>Dalam bagian selanjutnya, Anda akan melihat bagaimana membuat masing-masing tipe layanan dan cara menggunakannya
+dari komponen aplikasi lain.</p>
+
+
+
+<h3 id="Declaring">Mendeklarasikan layanan dalam manifes</h3>
+
+<p>Sebagaimana aktivitas (dan komponen lainnya), Anda harus mendeklarasikan semua layanan dalam file manifes
+aplikasi Anda.</p>
+
+<p>Untuk mendeklarasikan layanan Anda, tambahkan sebuah elemen <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a>
+sebagai anak 
+elemen <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>. Misalnya:</p>
+
+<pre>
+&lt;manifest ... &gt;
+  ...
+  &lt;application ... &gt;
+      &lt;service android:name=".ExampleService" /&gt;
+      ...
+  &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+
+<p>Lihat acuan elemen <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a>
+untuk informasi selengkapnya tentang cara mendeklarasikan layanan Anda dalam manifes.</p>
+
+<p>Ada atribut lain yang bisa Anda sertakan dalam elemen <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> untuk
+mendefinisikan properti seperti izin yang dibutuhkan untuk memulai layanan dan proses
+tempat berjalannya layanan. <a href="{@docRoot}guide/topics/manifest/service-element.html#nm">{@code android:name}</a> adalah satu-satunya atribut yang diperlukan
+&mdash;atribut tersebut menetapkan nama kelas layanan. Setelah
+mempublikasikan aplikasi, Anda tidak boleh mengubah nama ini, karena jika melakukannya, Anda bisa merusak
+kode karena dependensi terhadap intent eksplisit untuk memulai atau mengikat layanan (bacalah posting blog berjudul <a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">Things
+That Cannot Change</a>).
+
+<p>Untuk memastikan aplikasi Anda aman, <strong>selalu gunakan intent eksplisit saat memulai atau mengikat
+{@link android.app.Service} Anda</strong> dan jangan mendeklarasikan filter intent untuk layanan. Jika
+Anda perlu membiarkan adanya ambiguitas tentang layanan mana yang dimulai, Anda bisa
+menyediakan filter intent bagi layanan dan tidak memasukkan nama komponen pada {@link
+android.content.Intent}, namun Anda juga harus menyesuaikan paket bagi intent tersebut dengan {@link
+android.content.Intent#setPackage setPackage()}, yang memberikan klarifikasi memadai bagi
+target layanan.</p>
+
+<p>Anda juga bisa memastikan layanan tersedia hanya bagi aplikasi Anda dengan
+menyertakan atribut <a href="{@docRoot}guide/topics/manifest/service-element.html#exported">{@code android:exported}</a>
+dan mengaturnya ke {@code "false"}. Hal ini efektif menghentikan aplikasi lain agar tidak memulai
+layanan Anda, bahkan saat menggunakan intent eksplisit.</p>
+
+
+
+
+<h2 id="CreatingStartedService">Membuat Layanan yang Sudah Dimulai</h2>
+
+<p>Layanan yang sudah dimulai adalah layanan yang dimulai komponen lain dengan memanggil {@link
+android.content.Context#startService startService()}, yang menyebabkan panggilan ke metode
+{@link android.app.Service#onStartCommand onStartCommand()} layanan.</p>
+
+<p>Bila layanan sudah dimulai, layanan tersebut memiliki daur hidup yang tidak bergantung pada
+komponen yang memulainya dan bisa berjalan terus-menerus di latar belakang walaupun
+komponen yang memulainya dimusnahkan. Dengan sendirinya, layanan akan berhenti sendiri bila pekerjaannya
+selesai dengan memanggil {@link android.app.Service#stopSelf stopSelf()}, atau komponen lain bisa menghentikannya
+dengan memanggil {@link android.content.Context#stopService stopService()}.</p>
+
+<p>Komponen aplikasi seperti aktivitas bisa memulai layanan dengan memanggil {@link
+android.content.Context#startService startService()} dan meneruskan {@link android.content.Intent}
+yang menetapkan layanan dan menyertakan data untuk digunakan layanan. Layanan menerima
+{@link android.content.Intent} ini dalam metode {@link android.app.Service#onStartCommand
+onStartCommand()}.</p>
+
+<p>Sebagai contoh, anggaplah aktivitas perlu menyimpan data ke database online. Aktivitas tersebut bisa
+memulai layanan pendamping dan mengiriminya data untuk disimpan dengan meneruskan intent ke {@link
+android.content.Context#startService startService()}. Layanan akan menerima intent dalam {@link
+android.app.Service#onStartCommand onStartCommand()}, menghubungkan ke Internet dan melakukan
+transaksi database. Bila transaksi selesai, layanan akan berhenti sendiri dan
+dimusnahkan.</p>
+
+<p class="caution"><strong>Perhatian:</strong> Layanan berjalan dalam proses yang sama dengan aplikasi
+tempatnya dideklarasikan dan dalam thread utama aplikasi tersebut, secara default. Jadi, bila layanan Anda
+melakukan operasi yang intensif atau operasi pemblokiran saat pengguna berinteraksi dengan aktivitas dari
+aplikasi yang sama, layanan akan memperlambat kinerja aktivitas. Agar tidak memengaruhi
+kinerja aplikasi, Anda harus memulai thread baru di dalam layanan.</p>
+
+<p>Biasanya, ada dua kelas yang bisa Anda perluas untuk membuat layanan yang sudah dimulai:</p>
+<dl>
+  <dt>{@link android.app.Service}</dt>
+  <dd>Ini adalah kelas dasar untuk semua layanan. Bila memperluas kelas ini, Anda perlu
+membuat thread baru sebagai tempat melaksanakan semua pekerjaan layanan tersebut, karena layanan
+menggunakan thread utama aplikasi Anda secara default, dan hal ini bisa memperlambat
+kinerja aktivitas yang dijalankan aplikasi Anda.</dd>
+  <dt>{@link android.app.IntentService}</dt>
+  <dd>Ini adalah subkelas {@link android.app.Service} yang menggunakan thread pekerja untuk menangani
+semua permintaan memulai, satu per satu. Ini adalah pilihan terbaik jika Anda tidak mengharuskan layanan
+menangani beberapa permintaan sekaligus. Anda cukup mengimplementasikan {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}, yang menerima intent untuk setiap
+permintaan memulai agar bisa melakukan pekerjaan latar belakang.</dd>
+</dl>
+
+<p>Bagian selanjutnya membahas cara mengimplementasikan layanan Anda menggunakan
+salah satu dari kelas-kelas ini.</p>
+
+
+<h3 id="ExtendingIntentService">Memperluas kelas IntentService</h3>
+
+<p>Mengingat kebanyakan layanan yang sudah dimulai tidak perlu menangani beberapa permintaan
+sekaligus (yang bisa berupa skenario multi-threading berbahaya), mungkin Anda sebaiknya mengimplementasikan
+layanan menggunakan kelas {@link android.app.IntentService}.</p>
+
+<p>Berikut ini yang dilakukan {@link android.app.IntentService}:</p>
+
+<ul>
+  <li>Membuat thread pekerja default yang menjalankan semua intent yang disampaikan ke {@link
+android.app.Service#onStartCommand onStartCommand()} terpisah dari thread utama aplikasi
+Anda.</li>
+  <li>Membuat antrean pekerjaan yang meneruskan intent satu per satu ke implementasi {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}, sehingga Anda tidak perlu
+mengkhawatirkan multi-threading.</li>
+  <li>Menghentikan layanan setelah semua permintaan memulai telah ditangani, jadi Anda tidak perlu memanggil
+{@link android.app.Service#stopSelf}.</li>
+  <li>Menyediakan implementasi default {@link android.app.IntentService#onBind onBind()} yang
+mengembalikan null.</li>
+  <li>Menyediakan implementasi default {@link android.app.IntentService#onStartCommand
+onStartCommand()} yang mengirimkan intent ke antrean pekerjaan kemudian ke implementasi {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} Anda.</li>
+</ul>
+
+<p>Oleh karena itu, Anda hanya perlu mengimplementasikan {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} untuk melakukan pekerjaan yang diberikan oleh
+klien. (Akan tetapi, Anda juga perlu menyediakan konstruktor kecil bagi layanan.)</p>
+
+<p>Berikut ini contoh implementasi {@link android.app.IntentService}:</p>
+
+<pre>
+public class HelloIntentService extends IntentService {
+
+  /**
+   * A constructor is required, and must call the super {@link android.app.IntentService#IntentService}
+   * constructor with a name for the worker thread.
+   */
+  public HelloIntentService() {
+      super("HelloIntentService");
+  }
+
+  /**
+   * The IntentService calls this method from the default worker thread with
+   * the intent that started the service. When this method returns, IntentService
+   * stops the service, as appropriate.
+   */
+  &#64;Override
+  protected void onHandleIntent(Intent intent) {
+      // Normally we would do some work here, like download a file.
+      // For our sample, we just sleep for 5 seconds.
+      long endTime = System.currentTimeMillis() + 5*1000;
+      while (System.currentTimeMillis() &lt; endTime) {
+          synchronized (this) {
+              try {
+                  wait(endTime - System.currentTimeMillis());
+              } catch (Exception e) {
+              }
+          }
+      }
+  }
+}
+</pre>
+
+<p>Anda hanya memerlukan: konstruktor dan implementasi {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}.</p>
+
+<p>Jika Anda memutuskan untuk juga mengesampingkan metode callback lain, seperti {@link
+android.app.IntentService#onCreate onCreate()}, {@link
+android.app.IntentService#onStartCommand onStartCommand()}, atau {@link
+android.app.IntentService#onDestroy onDestroy()}, pastikan memanggil implementasi super, sehingga
+{@link android.app.IntentService} bisa menangani hidup thread pekerja dengan baik.</p>
+
+<p>Misalnya, {@link android.app.IntentService#onStartCommand onStartCommand()} harus mengembalikan
+implementasi default (yang merupakan cara penyampaian intent ke {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}):</p>
+
+<pre>
+&#64;Override
+public int onStartCommand(Intent intent, int flags, int startId) {
+    Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
+    return super.onStartCommand(intent,flags,startId);
+}
+</pre>
+
+<p>Selain {@link android.app.IntentService#onHandleIntent onHandleIntent()}, satu-satunya metode lain
+yang tidak mengharuskan Anda memanggil super kelas adalah {@link android.app.IntentService#onBind
+onBind()} (namun Anda hanya perlu mengimplementasikannya bila layanan mengizinkan pengikatan).</p>
+
+<p>Dalam bagian berikutnya, Anda akan melihat bagaimana layanan serupa diimplementasikan saat
+memperluas kelas {@link android.app.Service} basis, yang membutuhkan kode lebih banyak lagi, namun mungkin
+cocok jika Anda perlu menangani beberapa permintaan memulai sekaligus.</p>
+
+
+<h3 id="ExtendingService">Memperluas kelas Layanan</h3>
+
+<p>Seperti telah Anda lihat di bagian sebelumnya, menggunakan {@link android.app.IntentService} membuat
+implementasi layanan yang sudah dimulai jadi sangat sederhana. Namun, bila Anda mengharuskan layanan untuk
+melakukan multi-threading (sebagai ganti memproses permintaan memulai melalui antrean pekerjaan), maka Anda
+bisa memperluas kelas {@link android.app.Service} untuk menangani masing-masing intent.</p>
+
+<p>Sebagai perbandingan, contoh kode berikut ini adalah implementasi kelas {@link
+android.app.Service} yang melakukan pekerjaan yang persis sama dengan contoh di atas menggunakan {@link
+android.app.IntentService}. Artinya, untuk setiap permintaan memulai, kode tersebut akan menggunakan thread pekerja
+untuk melakukan pekerjaan dan memproses permintaan satu per satu.</p>
+
+<pre>
+public class HelloService extends Service {
+  private Looper mServiceLooper;
+  private ServiceHandler mServiceHandler;
+
+  // Handler that receives messages from the thread
+  private final class ServiceHandler extends Handler {
+      public ServiceHandler(Looper looper) {
+          super(looper);
+      }
+      &#64;Override
+      public void handleMessage(Message msg) {
+          // Normally we would do some work here, like download a file.
+          // For our sample, we just sleep for 5 seconds.
+          long endTime = System.currentTimeMillis() + 5*1000;
+          while (System.currentTimeMillis() &lt; endTime) {
+              synchronized (this) {
+                  try {
+                      wait(endTime - System.currentTimeMillis());
+                  } catch (Exception e) {
+                  }
+              }
+          }
+          // Stop the service using the startId, so that we don't stop
+          // the service in the middle of handling another job
+          stopSelf(msg.arg1);
+      }
+  }
+
+  &#64;Override
+  public void onCreate() {
+    // Start up the thread running the service.  Note that we create a
+    // separate thread because the service normally runs in the process's
+    // main thread, which we don't want to block.  We also make it
+    // background priority so CPU-intensive work will not disrupt our UI.
+    HandlerThread thread = new HandlerThread("ServiceStartArguments",
+            Process.THREAD_PRIORITY_BACKGROUND);
+    thread.start();
+
+    // Get the HandlerThread's Looper and use it for our Handler
+    mServiceLooper = thread.getLooper();
+    mServiceHandler = new ServiceHandler(mServiceLooper);
+  }
+
+  &#64;Override
+  public int onStartCommand(Intent intent, int flags, int startId) {
+      Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
+
+      // For each start request, send a message to start a job and deliver the
+      // start ID so we know which request we're stopping when we finish the job
+      Message msg = mServiceHandler.obtainMessage();
+      msg.arg1 = startId;
+      mServiceHandler.sendMessage(msg);
+
+      // If we get killed, after returning from here, restart
+      return START_STICKY;
+  }
+
+  &#64;Override
+  public IBinder onBind(Intent intent) {
+      // We don't provide binding, so return null
+      return null;
+  }
+
+  &#64;Override
+  public void onDestroy() {
+    Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();
+  }
+}
+</pre>
+
+<p>Seperti yang bisa Anda lihat, ini membutuhkan lebih banyak pekerjaan daripada menggunakan {@link android.app.IntentService}.</p>
+
+<p>Akan tetapi, karena Anda menangani sendiri setiap panggilan ke {@link android.app.Service#onStartCommand
+onStartCommand()}, Anda bisa melakukan beberapa permintaan sekaligus. Itu bukan yang
+dilakukan contoh ini, namun jika itu yang diinginkan, Anda bisa membuat thread baru untuk setiap
+permintaan dan langsung menjalankannya (sebagai ganti menunggu permintaan sebelumnya selesai).</p>
+
+<p>Perhatikan bahwa metode {@link android.app.Service#onStartCommand onStartCommand()} harus mengembalikan
+integer. Integer tersebut merupakan nilai yang menjelaskan cara sistem melanjutkan layanan dalam
+kejadian yang dimatikan oleh sistem (sebagaimana dibahas di atas, implementasi default {@link
+android.app.IntentService} menangani hal ini untuk Anda, walaupun Anda bisa memodifikasinya). Nilai yang dikembalikan
+dari {@link android.app.Service#onStartCommand onStartCommand()} harus berupa salah satu
+konstanta berikut ini:</p>
+
+<dl>
+  <dt>{@link android.app.Service#START_NOT_STICKY}</dt>
+    <dd>Jika sistem mematikan layanan setelah {@link android.app.Service#onStartCommand
+onStartCommand()} dikembalikan, <em>jangan</em> membuat lagi layanan tersebut, kecuali jika ada intent
+tertunda yang akan disampaikan. Inilah pilihan teraman untuk menghindari menjalankan layanan Anda
+bila tidak diperlukan dan bila aplikasi Anda bisa me-restart pekerjaan yang belum selesai.</dd>
+  <dt>{@link android.app.Service#START_STICKY}</dt>
+    <dd>Jika sistem mematikan layanan setelah {@link android.app.Service#onStartCommand
+onStartCommand()} dikembalikan, buat kembali layanan dan panggil {@link
+android.app.Service#onStartCommand onStartCommand()}, namun <em>jangan</em> menyampaikan ulang intent terakhir.
+Sebagai gantinya, sistem akan memanggil {@link android.app.Service#onStartCommand onStartCommand()} dengan
+intent null, kecuali jika ada intent tertunda untuk memulai layanan, dan dalam hal ini,
+intent tersebut disampaikan. Ini cocok bagi pemutar media (atau layanan serupa) yang tidak
+mengeksekusi perintah, namun berjalan terus-menerus dan menunggu pekerjaan.</dd>
+  <dt>{@link android.app.Service#START_REDELIVER_INTENT}</dt>
+    <dd>Jika sistem mematikan layanan setelah {@link android.app.Service#onStartCommand
+onStartCommand()} kembali, buat kembali layanan dan panggil {@link
+android.app.Service#onStartCommand onStartCommand()} dengan intent terakhir yang disampaikan ke
+layanan. Intent yang tertunda akan disampaikan pada gilirannya. Ini cocok bagi layanan yang
+aktif melakukan pekerjaan yang harus segera dilanjutkan, misalnya mengunduh file.</dd>
+</dl>
+<p>Untuk detail selengkapnya tentang nilai pengembalian ini, lihat dokumentasi acuan untuk setiap
+konstanta.</p>
+
+
+
+<h3 id="StartingAService">Memulai Layanan</h3>
+
+<p>Anda bisa memulai layanan dari aktivitas atau komponen aplikasi lain dengan meneruskan
+{@link android.content.Intent} (yang menetapkan layanan yang akan dimulai) ke {@link
+android.content.Context#startService startService()}. Sistem Android akan memanggil metode {@link
+android.app.Service#onStartCommand onStartCommand()} layanan dan meneruskan {@link
+android.content.Intent} padanya. (Jangan sekali-kali memanggil {@link android.app.Service#onStartCommand
+onStartCommand()} secara langsung.)</p>
+
+<p>Misalnya, aktivitas bisa memulai contoh layanan di bagian sebelumnya ({@code
+HelloSevice}) menggunakan intent eksplisit dengan {@link android.content.Context#startService
+startService()}:</p>
+
+<pre>
+Intent intent = new Intent(this, HelloService.class);
+startService(intent);
+</pre>
+
+<p>Metode {@link android.content.Context#startService startService()} segera kembali dan
+sistem Android akan memanggil metode {@link android.app.Service#onStartCommand
+onStartCommand()} layanan. Jika layanan belum berjalan, sistem mula-mula memanggil {@link
+android.app.Service#onCreate onCreate()}, kemudian memanggil {@link android.app.Service#onStartCommand
+onStartCommand()}.</p>
+
+<p>Jika layanan juga tidak menyediakan pengikatan, intent yang disampaikan dengan {@link
+android.content.Context#startService startService()} adalah satu-satunya mode komunikasi antara
+komponen aplikasi dan layanan. Akan tetapi, jika Anda ingin agar layanan mengirimkan hasilnya kembali, maka
+klien yang memulai layanan bisa membuat {@link android.app.PendingIntent} untuk siaran
+(dengan {@link android.app.PendingIntent#getBroadcast getBroadcast()}) dan menyampaikannya ke layanan
+dalam {@link android.content.Intent} yang memulai layanan. Layanan kemudian bisa menggunakan
+siaran untuk menyampaikan hasil.</p>
+
+<p>Beberapa permintaan untuk memulai layanan menghasilkan beberapa panggilan pula ke
+{@link android.app.Service#onStartCommand onStartCommand()} layanan. Akan tetapi, hanya satu permintaan untuk menghentikan
+layanan (dengan {@link android.app.Service#stopSelf stopSelf()} atau {@link
+android.content.Context#stopService stopService()}) dibutuhkan untuk menghentikannya.</p>
+
+
+<h3 id="Stopping">Menghentikan layanan</h3>
+
+<p>Layanan yang sudah dimulai harus mengelola daur hidupnya sendiri. Artinya, sistem tidak menghentikan atau
+memusnahkan layanan kecuali jika harus memulihkan memori sistem dan layanan
+terus berjalan setelah {@link android.app.Service#onStartCommand onStartCommand()} kembali. Jadi,
+layanan tersebut harus berhenti sendiri dengan memanggil {@link android.app.Service#stopSelf stopSelf()} atau
+komponen lain bisa menghentikannya dengan memanggil {@link android.content.Context#stopService stopService()}.</p>
+
+<p>Setelah diminta untuk berhenti dengan {@link android.app.Service#stopSelf stopSelf()} atau {@link
+android.content.Context#stopService stopService()}, sistem akan menghapus layanan 
+secepatnya.</p>
+
+<p>Akan tetapi, bila layanan Anda menangani beberapa permintaan ke {@link
+android.app.Service#onStartCommand onStartCommand()} sekaligus, Anda tidak boleh menghentikan
+layanan bila Anda baru selesai memproses permintaan memulai, karena setelah itu mungkin Anda sudah menerima permintaan memulai
+yang baru (berhenti pada permintaan pertama akan menghentikan permintaan kedua). Untuk menghindari
+masalah ini, Anda bisa menggunakan {@link android.app.Service#stopSelf(int)} untuk memastikan bahwa permintaan
+Anda untuk menghentikan layanan selalu berdasarkan pada permintaan memulai terbaru. Artinya, bila Anda memanggil {@link
+android.app.Service#stopSelf(int)}, Anda akan meneruskan ID permintaan memulai (<code>startId</code>
+yang disampaikan ke {@link android.app.Service#onStartCommand onStartCommand()}) yang terkait dengan permintaan berhenti
+Anda. Kemudian jika layanan menerima permintaan memulai baru sebelum Anda bisa memanggil {@link
+android.app.Service#stopSelf(int)}, maka ID tidak akan sesuai dan layanan tidak akan berhenti.</p>
+
+<p class="caution"><strong>Perhatian:</strong> Aplikasi Anda perlu menghentikan layanannya
+bila selesai bekerja untuk menghindari pemborosan sumber daya sistem dan tenaga baterai. Jika perlu,
+komponen lain bisa menghentikan layanan secara eksplisit dengan memanggil {@link
+android.content.Context#stopService stopService()}. Bahkan jika Anda mengaktifkan pengikatan bagi layanan,
+Anda harus selalu menghentikan layanan sendiri jika layanan tersebut menerima panggilan ke {@link
+android.app.Service#onStartCommand onStartCommand()}.</p>
+
+<p>Untuk informasi selengkapnya tentang daur hidup layanan, lihat bagian di bawah ini tentang <a href="#Lifecycle">Mengelola Daur Hidup Layanan</a>.</p>
+
+
+
+<h2 id="CreatingBoundService">Membuat Layanan Terikat</h2>
+
+<p>Layanan terikat adalah layanan yang memungkinkan komponen aplikasi untuk mengikatnya dengan memanggil {@link
+android.content.Context#bindService bindService()} guna membuat koneksi yang berlangsung lama
+(dan umumnya tidak mengizinkan komponen untuk <em>memulainya</em> dengan memanggil {@link
+android.content.Context#startService startService()}).</p>
+
+<p>Anda sebaiknya membuat layanan terikat bila ingin berinteraksi dengan layanan dari aktivitas
+dan komponen lain dalam aplikasi Anda atau mengeskpos sebagian fungsionalitas aplikasi Anda ke
+ke aplikasi lain, melalui komunikasi antarproses (IPC).</p>
+
+<p>Untuk membuat layanan terikat, Anda harus mengimplementasikan metode callback {@link
+android.app.Service#onBind onBind()} untuk mengembalikan {@link android.os.IBinder} yang
+mendefinisikan antarmuka bagi komunikasi dengan layanan. Komponen aplikasi lain kemudian bisa memanggil
+{@link android.content.Context#bindService bindService()} untuk mengambil antarmuka dan
+mulai memanggil metode pada layanan. Layanan hanya hidup untuk melayani komponen aplikasi yang
+terikat padanya, jadi bila tidak ada komponen yang terikat pada layanan, sistem akan memusnahkannya
+(Anda <em>tidak</em> perlu menghentikan layanan terikat seperti halnya bila layanan dimulai
+melalui {@link android.app.Service#onStartCommand onStartCommand()}).</p>
+
+<p>Untuk membuat layanan terikat, hal yang perlu dilakukan pertama kali adalah mendefinisikan antarmuka yang menetapkan
+cara klien berkomunikasi dengan layanan. Antarmuka antara layanan
+dan klien ini harus berupa implementasi {@link android.os.IBinder} dan yang harus dikembalikan
+layanan Anda dari metode callback {@link android.app.Service#onBind
+onBind()}. Setelah menerima {@link android.os.IBinder}, klien bisa mulai
+berinteraksi dengan layanan melalui antarmuka tersebut.</p>
+
+<p>Beberapa klien bisa mengikat ke layanan sekaligus. Bila klien selesai berinteraksi dengan
+layanan, klien akan memanggil {@link android.content.Context#unbindService unbindService()} untuk melepas ikatan. Bila
+tidak ada klien yang terikat pada layanan, sistem akan menghapus layanan tersebut.</p>
+
+<p>Ada beberapa cara untuk mengimplementasikan layanan terikat dan implementasinya lebih
+rumit daripada layanan yang sudah dimulai, jadi layanan terikat dibahas dalam dokumen
+terpisah tentang <a href="{@docRoot}guide/components/bound-services.html">Layanan Terikat</a>.</p>
+
+
+
+<h2 id="Notifications">Mengirim Pemberitahuan ke Pengguna</h2>
+
+<p>Setelah berjalan, layanan bisa memberi tahu pengguna tentang suatu kejadian menggunakan <a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">Pemberitahuan Toast</a> atau <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Pemberitahuan Baris Status</a>.</p>
+
+<p>Pemberitahuan Toast adalah pesan yang muncul sebentar pada permukaan jendela saat ini
+kemudian menghilang, sementara pemberitahuan baris status memberikan ikon di baris status dengan
+pesan yang bisa dipilih oleh pengguna untuk melakukan suatu tindakan (misalnya memulai suatu aktivitas).</p>
+
+<p>Biasanya, pemberitahuan baris status adalah teknik terbaik bila ada pekerjaan latar belakang yang sudah selesai
+(misalnya file selesai
+diunduh) dan pengguna kini bisa menggunakannya. Bila pengguna memilih pemberitahuan dari
+tampilan diperluas, pemberitahuan akan bisa memulai aktivitas (misalnya menampilkan file yang baru diunduh).</p>
+
+<p>Lihat panduan pengembang <a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">Pemberitahuan Toast</a> atau <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Pemberitahuan Baris Status</a>
+untuk informasi selengkapnya.</p>
+
+
+
+<h2 id="Foreground">Menjalankan Layanan di Latar Depan</h2>
+
+<p>Layanan latar depan adalah layanan yang dianggap sebagai sesuatu yang
+diketahui secara aktif oleh pengguna, jadi bukan sesuatu yang akan dihapus oleh sistem bila memori menipis. Sebuah
+layanan latar depan harus memberikan pemberitahuan bagi baris status, yang ditempatkan pada
+heading "Ongoing" yang artinya pemberitahuan tersebut tidak bisa diabaikan kecuali jika layanan
+dihentikan atau dihapus dari latar depan.</p>
+
+<p>Misalnya, pemutar musik yang memutar musik dari suatu layanan harus diatur untuk berjalan di
+latar depan, karena pengguna mengetahui operasi tersebut
+secara eksplisit. Pemberitahuan di baris status bisa menunjukkan lagu saat ini dan memungkinkan
+pengguna untuk menjalankan suatu aktivitas untuk berinteraksi dengan pemutar musik.</p>
+
+<p>Untuk meminta agar layanan Anda berjalan di latar depan, panggil {@link
+android.app.Service#startForeground startForeground()}. Metode ini memerlukan dua parameter: sebuah integer
+yang mengidentifikasi pemberitahuan secara unik dan {@link
+android.app.Notification} untuk baris status. Misalnya:</p>
+
+<pre>
+Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text),
+        System.currentTimeMillis());
+Intent notificationIntent = new Intent(this, ExampleActivity.class);
+PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
+notification.setLatestEventInfo(this, getText(R.string.notification_title),
+        getText(R.string.notification_message), pendingIntent);
+startForeground(ONGOING_NOTIFICATION_ID, notification);
+</pre>
+
+<p class="caution"><strong>Perhatian:</strong> ID integer yang Anda berikan ke {@link
+android.app.Service#startForeground startForeground()} tidak boleh 0.</p>
+
+
+<p>Untuk menghapus layanan dari latar depan, panggil {@link
+android.app.Service#stopForeground stopForeground()}. Metode ini memerlukan boolean, yang menunjukkan
+apakah pemberitahuan baris status juga akan dihapus. Metode ini <em>tidak</em> menghentikan
+layanan. Akan tetapi, jika Anda menghentikan layanan saat masih berjalan di latar depan
+maka pemberitahuan juga akan dihapus.</p>
+
+<p>Untuk informasi selengkapnya tentang pemberitahuan, lihat <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Membuat Pemberitahuan
+Baris Status</a>.</p>
+
+
+
+<h2 id="Lifecycle">Mengelola Daur Hidup Layanan</h2>
+
+<p>Daur hidup layanan jauh lebih sederhana daripada daur hidup aktivitas. Akan tetapi, lebih penting lagi adalah
+memerhatikan dengan cermat bagaimana layanan Anda dibuat dan dimusnahkan, karena suatu layanan
+bisa berjalan di latar belakang tanpa disadari oleh pengguna.</p>
+
+<p>Daur hidup layanan&mdash;dari saat dibuat hingga dimusnahkan&mdash;bisa mengikuti
+dua path berbeda:</p>
+
+<ul>
+<li>Layanan yang sudah dimulai
+  <p>Layanan dibuat bila komponen lain memanggil {@link
+android.content.Context#startService startService()}. Layanan kemudian berjalan terus-menerus dan harus
+berhenti sendiri dengan memanggil {@link
+android.app.Service#stopSelf() stopSelf()}. Komponen lain juga bisa menghentikan
+layanan dengan memanggil {@link android.content.Context#stopService
+stopService()}. Bila layanan dihentikan, sistem akan menghancurkannya.</p></li>
+
+<li>Layanan terikat
+  <p>Layanan dibuat bila komponen lain (klien) memanggil {@link
+android.content.Context#bindService bindService()}. Klien kemudian berkomunikasi dengan layanan
+melalui antarmuka {@link android.os.IBinder}. Klien bisa menutup koneksi dengan memanggil
+{@link android.content.Context#unbindService unbindService()}. Sejumlah klien bisa mengikat pada
+layanan yang sama dan bila semuanya melepas ikatan, sistem akan memusnahkan layanan tersebut. (Layanan
+<em>tidak</em> perlu berhenti sendiri.)</p></li>
+</ul>
+
+<p>Kedua path tersebut tidak benar-benar terpisah. Artinya, Anda bisa mengikat ke layanan yang sudah
+dimulai dengan {@link android.content.Context#startService startService()}. Misalnya, layanan
+musik latar belakang bisa dimulai dengan memanggil {@link android.content.Context#startService
+startService()} dengan {@link android.content.Intent} yang mengidentifikasi musik yang akan diputar. Kemudian,
+mungkin saat pengguna ingin mengontrol pemutar musik atau mendapatkan informasi
+tentang lagu yang diputar, aktivitas bisa mengikat ke layanan dengan memanggil {@link
+android.content.Context#bindService bindService()}. Dalam kasus seperti ini, {@link
+android.content.Context#stopService stopService()} atau {@link android.app.Service#stopSelf
+stopSelf()} tidak menghentikan layanan sampai semua klien melepas ikatan. </p>
+
+
+<h3 id="LifecycleCallbacks">Mengimplementasikan callback daur hidup</h3>
+
+<p>Seperti halnya aktivitas, layanan memiliki metode callback daur hidup yang bisa Anda implementasikan
+untuk memantau perubahan status layanan dan melakukan pekerjaan pada waktu yang tepat. Layanan skeleton
+berikut memperagakan setiap metode daur hidup:</p>
+
+<pre>
+public class ExampleService extends Service {
+    int mStartMode;       // indicates how to behave if the service is killed
+    IBinder mBinder;      // interface for clients that bind
+    boolean mAllowRebind; // indicates whether onRebind should be used
+
+    &#64;Override
+    public void {@link android.app.Service#onCreate onCreate}() {
+        // The service is being created
+    }
+    &#64;Override
+    public int {@link android.app.Service#onStartCommand onStartCommand}(Intent intent, int flags, int startId) {
+        // The service is starting, due to a call to {@link android.content.Context#startService startService()}
+        return <em>mStartMode</em>;
+    }
+    &#64;Override
+    public IBinder {@link android.app.Service#onBind onBind}(Intent intent) {
+        // A client is binding to the service with {@link android.content.Context#bindService bindService()}
+        return <em>mBinder</em>;
+    }
+    &#64;Override
+    public boolean {@link android.app.Service#onUnbind onUnbind}(Intent intent) {
+        // All clients have unbound with {@link android.content.Context#unbindService unbindService()}
+        return <em>mAllowRebind</em>;
+    }
+    &#64;Override
+    public void {@link android.app.Service#onRebind onRebind}(Intent intent) {
+        // A client is binding to the service with {@link android.content.Context#bindService bindService()},
+        // after onUnbind() has already been called
+    }
+    &#64;Override
+    public void {@link android.app.Service#onDestroy onDestroy}() {
+        // The service is no longer used and is being destroyed
+    }
+}
+</pre>
+
+<p class="note"><strong>Catatan:</strong> Tidak seperti metode callback daur hidup aktivitas, Anda
+<em>tidak</em> perlu memanggil implementasi superkelas metode callback tersebut.</p>
+
+<img src="{@docRoot}images/service_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Gambar 2.</strong> Daur hidup layanan. Diagram di sebelah kiri
+menampilkan daur hidup bila layanan dibuat dengan {@link android.content.Context#startService
+startService()} dan diagram di sebelah kanan menampilkan daur hidup bila layanan dibuat
+dengan {@link android.content.Context#bindService bindService()}.</p>
+
+<p>Dengan mengimplementasikan metode-metode ini, Anda bisa memantau dua loop tersarang (nested loop) daur hidup layanan: </p>
+
+<ul>
+<li><strong>Seluruh masa pakai</strong> layanan terjadi antara saat {@link
+android.app.Service#onCreate onCreate()} dipanggil dan saat {@link
+android.app.Service#onDestroy} kembali. Seperti halnya aktivitas, layanan melakukan penyiapan awal di
+{@link android.app.Service#onCreate onCreate()} dan melepaskan semua sisa sumber daya yang ada di {@link
+android.app.Service#onDestroy onDestroy()}.  Misalnya,
+layanan pemutar musik bisa membuat thread tempat musik akan diputar dalam {@link
+android.app.Service#onCreate onCreate()}, kemudian menghentikan thread tersebut dalam {@link
+android.app.Service#onDestroy onDestroy()}.
+
+<p>Metode {@link android.app.Service#onCreate onCreate()} dan {@link android.app.Service#onDestroy
+onDestroy()} diperlukan semua layanan, baik yang
+dibuat oleh {@link android.content.Context#startService startService()} maupun {@link
+android.content.Context#bindService bindService()}.</p></li>
+
+<li><strong>Masa pakai aktif</strong> layanan dimulai dengan panggilan ke {@link
+android.app.Service#onStartCommand onStartCommand()} atau {@link android.app.Service#onBind onBind()}.
+Masing-masing metode diberikan {@link
+android.content.Intent} yang diteruskan ke {@link android.content.Context#startService
+startService()} atau {@link android.content.Context#bindService bindService()}.
+<p>Jika layanan telah dimulai, masa pakai aktif akan berakhir pada saat yang sama dengan
+berakhirnya seluruh masa pakai (layanan masih aktif bahkan setelah {@link android.app.Service#onStartCommand
+onStartCommand()} kembali). Jika layanan tersebut terikat, masa pakai aktifnya akan berakhir bila {@link
+android.app.Service#onUnbind onUnbind()} kembali.</p>
+</li>
+</ul>
+
+<p class="note"><strong>Catatan:</strong> Meskipun layanan yang sudah dimulai dihentikan dengan panggilan ke
+{@link android.app.Service#stopSelf stopSelf()} atau {@link
+android.content.Context#stopService stopService()}, tidak ada callback tersendiri bagi
+layanan tersebut (tidak ada callback {@code onStop()}). Jadi, kecuali jika layanan terikat ke klien,
+sistem akan memusnahkannya bila layanan dihentikan&mdash;{@link
+android.app.Service#onDestroy onDestroy()} adalah satu-satunya callback yang diterima.</p>
+
+<p>Gambar 2 mengilustrasikan metode callback yang lazim bagi suatu layanan. Walaupun gambar tersebut memisahkan
+layanan yang dibuat oleh {@link android.content.Context#startService startService()} dari layanan
+yang dibuat oleh {@link android.content.Context#bindService bindService()}, ingatlah
+bahwa suatu layanan, bagaimana pun dimulainya, bisa memungkinkan klien mengikat padanya.
+Jadi, suatu layanan yang awalnya dimulai dengan {@link android.app.Service#onStartCommand
+onStartCommand()} (oleh klien yang memanggil {@link android.content.Context#startService startService()})
+masih bisa menerima panggilan ke {@link android.app.Service#onBind onBind()} (bila klien memanggil
+{@link android.content.Context#bindService bindService()}).</p>
+
+<p>Untuk informasi selengkapnya tentang membuat layanan yang menyediakan pengikatan, lihat dokumen <a href="{@docRoot}guide/components/bound-services.html">Layanan Terikat</a>,
+yang menyertakan informasi selengkapnya tentang metode callback {@link android.app.Service#onRebind onRebind()}
+di bagian tentang <a href="{@docRoot}guide/components/bound-services.html#Lifecycle">Mengelola Daur Hidup
+Layanan Terikat</a>.</p>
+
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>To learn how to query data from the system or other applications (such as contacts or media
+stored on the device), continue with the <b><a
+href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a></b>
+document.</p>
+-->
diff --git a/docs/html-intl/intl/in/guide/components/tasks-and-back-stack.jd b/docs/html-intl/intl/in/guide/components/tasks-and-back-stack.jd
new file mode 100644
index 0000000..279442f
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/components/tasks-and-back-stack.jd
@@ -0,0 +1,578 @@
+page.title=Tugas dan Back-Stack
+parent.title=Aktivitas
+parent.link=activities.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Dalam dokumen ini</h2>
+<ol>
+<li><a href="#ActivityState">Menyimpan Status Aktivitas</a></li></li>
+<li><a href="#ManagingTasks">Mengelola Tugas</a>
+  <ol>
+    <li><a href="#TaskLaunchModes">Mendefinisikan mode peluncuran</a></li>
+    <li><a href="#Affinities">Menangani afinitas</a></li>
+    <li><a href="#Clearing">Menghapus back-stack</a></li>
+    <li><a href="#Starting">Memulai tugas</a></li>
+  </ol>
+</li>
+</ol>
+
+<h2>Artikel</h2>
+<ol>
+  <li><a href="http://android-developers.blogspot.com/2010/04/multitasking-android-way.html">
+  Multitasking Ala Android</a></li>
+</ol>
+
+<h2>Lihat juga</h2>
+<ol>
+  <li><a href="{@docRoot}design/patterns/navigation.html">Desain Android:
+Navigasi</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html">Elemen manifes 
+{@code &lt;activity&gt;}</a></li>
+  <li><a href="{@docRoot}guide/components/recents.html">Layar Ikhtisar</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>Sebuah aplikasi biasanya berisi beberapa <a href="{@docRoot}guide/components/activities.html">aktivitas</a>. Setiap aktivitas
+harus didesain dengan jenis tindakan tertentu yang bisa dilakukan pengguna dan bisa memulai aktivitas
+lain. Misalnya, aplikasi email mungkin memiliki satu aktivitas untuk menampilkan daftar pesan baru.
+Bila pengguna memilih sebuah pesan, aktivitas baru akan terbuka untuk melihat pesan tersebut.</p>
+
+<p>Aktivitas bahkan bisa memulai aktivitas yang ada dalam aplikasi lain di perangkat. Misalnya
+, jika aplikasi Anda ingin mengirim pesan email, Anda bisa mendefinisikan intent untuk melakukan tindakan
+"kirim" dan menyertakan sejumlah data, seperti alamat email dan pesan. Aktivitas dari aplikasi
+lain yang mendeklarasikan dirinya untuk menangani jenis intent ini akan terbuka. Dalam hal ini, intent
+tersebut untuk mengirim email, sehingga aktivitas "menulis" pada aplikasi email akan dimulai (jika beberapa aktivitas
+mendukung intent yang sama, maka sistem akan memungkinkan pengguna memilih mana yang akan digunakan). Bila email telah
+dikirim, aktivitas Anda akan dilanjutkan dan seolah-olah aktivitas email adalah bagian dari aplikasi Anda. Meskipun
+aktivitas mungkin dari aplikasi yang berbeda, Android akan tetap mempertahankan pengalaman pengguna yang mulus
+dengan menjalankan kedua aktivitas dalam <em>tugas</em> yang sama.</p>
+
+<p>Tugas adalah kumpulan aktivitas yang berinteraksi dengan pengguna 
+saat melakukan pekerjaan tertentu. Aktivitas tersebut diatur dalam tumpukan (<em>back-stack</em>), dalam
+urutan membuka setiap aktivitas.</p>
+
+<!-- SAVE FOR WHEN THE FRAGMENT DOC IS ADDED
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h3>Adding fragments to a task's back stack</h3>
+
+<p>Your activity can also include {@link android.app.Fragment}s to the back stack. For example,
+suppose you have a two-pane layout using fragments, one of which is a list view (fragment A) and the
+other being a layout to display an item from the list (fragment B). When the user selects an item
+from the list, fragment B is replaced by a new fragment (fragment C). In this case, it might be
+desireable for the user to navigate back to reveal fragment B, using the <em>Back</em> button.</p>
+<p>In order to add fragment B to the back stack so that this is possible, you must call {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()} before you {@link
+android.app.FragmentTransaction#commit()} the transaction that replaces fragment B with fragment
+C.</p>
+<p>For more information about using fragments and adding them to the back stack, see the {@link
+android.app.Fragment} class documentation.</p>
+
+</div>
+</div>
+-->
+
+<p>Layar Home perangkat adalah tempat memulai hampir semua tugas. Bila pengguna menyentuh ikon di launcher
+aplikasi
+(atau pintasan pada layar Home), tugas aplikasi tersebut akan muncul pada latar depan. Jika tidak ada
+tugas untuk aplikasi (aplikasi tidak digunakan baru-baru ini), maka tugas baru
+akan dibuat dan aktivitas "utama" untuk aplikasi tersebut akan terbuka sebagai aktivitas akar dalam back-stack.</p>
+
+<p>Bila aktivitas saat ini dimulai lagi, aktivitas baru akan didorong ke atas back-stack dan
+mengambil fokus. Aktivitas sebelumnya tetap dalam back-stack, namun dihentikan. Bila aktivitas
+dihentikan, sistem akan mempertahankan status antarmuka penggunanya saat ini. Bila pengguna menekan tombol
+<em>Back</em>
+, aktivitas saat ini akan dikeluarkan dari atas back-stack (aktivitas dimusnahkan) dan
+ aktivitas sebelumnya dilanjutkan (status UI sebelumnya dipulihkan). Aktivitas dalam back-stack
+tidak pernah disusun ulang, hanya didorong dan dikeluarkan dari back-stack&mdash;yang didorong ke back-stack saat dimulai oleh
+aktivitas saat ini dan dikeluarkan bila pengguna meninggalkannya menggunakan tombol <em>Back</em>. Dengan demikian,
+back-stack
+beroperasi sebagai struktur objek "masuk terakhir, keluar pertama". Gambar 1 melukiskan perilaku
+ini dengan jangka waktu yang menunjukkan kemajuan antar aktivitas beserta 
+back-stack pada setiap waktu.</p>
+
+<img src="{@docRoot}images/fundamentals/diagram_backstack.png" alt="" />
+<p class="img-caption"><strong>Gambar 1.</strong> Representasi tentang cara setiap aktivitas baru dalam
+tugas menambahkan item ke back-stack. Bila pengguna menekan tombol <em>Back</em>, aktivitas
+saat ini
+akan dimusnahkan dan aktivitas sebelumnya dilanjutkan.</p>
+
+
+<p>Jika pengguna terus menekan <em>Back</em>, maka setiap aktivitas dalam back-stack akan dikeluarkan untuk
+menampilkan
+yang sebelumnya, sampai pengguna kembali ke layar Home (atau aktivitas mana pun yang sedang dijalankan saat tugas
+dimulai. Bila semua aktivitas telah dihapus dari back-stack, maka tugas tidak akan ada lagi.</p>
+
+<div class="figure" style="width:287px">
+<img src="{@docRoot}images/fundamentals/diagram_multitasking.png" alt="" /> <p
+class="img-caption"><strong>Gambar 2.</strong> Dua tugas: Tugas B menerima interaksi pengguna
+di latar depan, sedangkan Tugas A di latar belakang, menunggu untuk dilanjutkan.</p>
+</div>
+<div class="figure" style="width:215px">
+  <img src="{@docRoot}images/fundamentals/diagram_multiple_instances.png" alt="" /> <p
+class="img-caption"><strong>Gambar 3.</strong> Satu aktivitas dibuat instance-nya beberapa kali.</p>
+</div>
+
+<p>Tugas adalah unit kohesif yang bisa dipindahkan ke "latar belakang" bila pengguna memulai tugas baru atau masuk ke
+layar Home, melalui tombol<em>Home</em>. Sementara di latar belakang, semua aktivitas dalam
+tugas
+dihentikan, namun back-stack untuk tugas tidak berubah&mdash;tugas kehilangan fokus saat
+tugas lain berlangsung, seperti yang ditampilkan dalam gambar 2. Kemudian, tugas bisa kembali ke "latar depan" agar pengguna
+bisa melanjutkan tugas di tempat menghentikannya. Anggaplah, misalnya, tugas saat ini (Tugas A) memiliki tiga
+aktivitas dalam back-stack&mdash;dua pada aktivitas saat ini. Pengguna menekan tombol <em>Home</em>
+, kemudian
+memulai aplikasi baru dari launcher aplikasi. Bila muncul layar Home, Tugas A akan beralih
+ke latar belakang. Bila aplikasi baru dimulai, sistem akan memulai tugas untuk aplikasi tersebut
+(Tugas B) dengan back-stack aktivitas sendiri. Setelah berinteraksi dengan aplikasi
+tersebut, pengguna akan kembali ke Home lagi dan memilih aplikasi yang semula
+memulai Tugas A. Sekarang, Tugas A muncul di
+latar depan&mdash;ketiga aktivitas dalam back-stack tidak berubah dan aktivitas di atas
+back-stack akan dilanjutkan. Pada
+titik ini pengguna juga bisa beralih kembali ke Tugas B dengan masuk ke Home dan memilih ikon aplikasi
+yang memulai tugas tersebut (atau dengan memilih tugas aplikasi dari
+<a href="{@docRoot}guide/components/recents.html">layar ikhtisar</a>).
+Ini adalah contoh dari melakukan multitasking di Android.</p>
+
+<p class="note"><strong>Catatan:</strong> Beberapa tugas bisa berlangsung di latar belakang secara bersamaan.
+Akan tetapi, jika pengguna menjalankan banyak tugas di latar belakang sekaligus, sistem mungkin mulai
+menghapus aktivitas latar belakang untuk memulihkan memori, yang akan menyebabkan status aktivitas hilang.
+Lihat bagian berikut tentang <a href="#ActivityState">Status aktivitas</a>.</p>
+
+<p>Karena aktivitas di back-stack tidak pernah diatur ulang, jika aplikasi Anda memungkinkan
+pengguna untuk memulai aktivitas tertentu dari lebih dari satu aktivitas, instance baru
+aktivitas tersebut akan dibuat dan didorong ke back-stack (bukannya memunculkan instance sebelumnya dari
+aktivitas ke atas). Dengan demikian, satu aktivitas pada aplikasi Anda mungkin dibuat beberapa
+kali (bahkan dari beberapa tugas), seperti yang ditampilkan dalam gambar 3. Dengan demikian, jika pengguna mengarahkan mundur
+menggunakan tombol <em>Back</em>, setiap instance aktivitas ini akan ditampilkan dalam urutan saat 
+dibuka (masing-masing
+dengan status UI sendiri). Akan tetapi, Anda bisa memodifikasi perilaku ini jika tidak ingin aktivitas
+dibuat instance-nya lebih dari sekali. Caranya dibahas di bagian selanjutnya tentang <a href="#ManagingTasks">Mengelola Tugas</a>.</p>
+
+
+<p>Untuk meringkas perilaku default aktivitas dan tugas:</p>
+
+<ul>
+  <li>Bila Aktivitas A memulai Aktivitas B, Aktivitas A dihentikan, namun sistem mempertahankan statusnya
+(seperti posisi gulir dan teks yang dimasukkan ke dalam formulir).
+Jika pengguna menekan tombol <em>Back</em> saat dalam Aktivitas B, Aktivitas A akan dilanjutkan dengan status
+yang dipulihkan.</li>
+  <li>Bila pengguna meninggalkan tugas dengan menekan tombol <em>Home</em> aktivitas saat ini akan
+dihentikan dan
+tugas beralih ke latar belakang. Sistem akan mempertahankan status setiap aktivitas dalam tugas. Jika
+nanti pengguna melanjutkan tugas dengan memilih ikon launcher yang memulai tugas, tugas tersebut akan
+beralih ke latar depan dan melanjutkan aktivitas di atas back-stack.</li>
+  <li>Jika pengguna menekan tombol <em>Back</em>, aktivitas saat ini akan dikeluarkan dari back-stack
+dan
+dimusnahkan. Aktivitas sebelumnya dalam back-stack akan dilanjutkan. Bila suatu aktivitas dimusnahkan, sistem
+<em>tidak akan</em>mempertahankan status aktivitas.</li>
+  <li>Aktivitas bisa dibuat instance-nya beberapa kali, bahkan dari tugas-tugas lainnya.</li>
+</ul>
+
+
+<div class="note design">
+<p><strong>Desain Navigasi</strong></p>
+  <p>Untuk mengetahui selengkapnya tentang cara kerja navigasi aplikasi di Android, baca panduan <a href="{@docRoot}design/patterns/navigation.html">Navigasi</a> Desain Android.</p>
+</div>
+
+
+<h2 id="ActivityState">Menyimpan Status Aktivitas</h2>
+
+<p>Seperti dibahas di atas, perilaku default sistem akan mempertahankan status aktivitas bila
+dihentikan. Dengan cara ini, bila pengguna mengarah kembali ke aktivitas sebelumnya, antarmuka pengguna akan muncul
+seperti saat ditinggalkan. Akan tetapi, Anda bisa&mdash;dan <strong>harus</strong>&mdash;secara proaktif mempertahankan
+status aktivitas menggunakan metode callback, jika aktivitas ini dimusnahkan dan harus
+dibuat kembali.</p>
+
+<p>Bila sistem menghentikan salah satu aktivitas (seperti saat aktivitas baru dimulai atau tugas
+dipindah ke latar belakang), sistem mungkin memusnahkan aktivitas sepenuhnya jika perlu memulihkan
+memori sistem. Bila hal ini terjadi, informasi tentang status aktivitas akan hilang. Jika hal ini terjadi, sistem
+masih
+mengetahui bahwa aktivitas memiliki tempat di back-stack, namun saat aktivitas tersebut dibawa ke bagian teratas
+back-stack, sistem harus membuatnya kembali (bukan melanjutkannya). Untuk
+menghindari hilangnya pekerjaan pengguna, Anda harus secara proaktif mempertahankannya dengan menerapkan metode callback
+{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
+dalam aktivitas.</p>
+
+<p>Untuk informasi selengkapnya tentang cara menyimpan status aktivitas Anda, lihat dokumen
+<a href="{@docRoot}guide/components/activities.html#SavingActivityState">Aktivitas</a>.</p>
+
+
+
+<h2 id="ManagingTasks">Mengelola Tugas</h2>
+
+<p>Cara Android mengelola tugas dan back-stack, seperti yang dijelaskan di atas&mdash;dengan menempatkan semua
+aktivitas yang dimulai secara berurutan dalam tugas yang sama dan dalam back-stack "masuk terakhir, keluar pertama"&mdash;berfungsi
+dengan baik untuk kebanyakan aplikasi dan Anda tidak perlu khawatir tentang cara mengaitkan aktivitas
+dengan tugas atau cara penempatannya di back-stack. Akan tetapi, Anda bisa memutuskan apakah ingin menyela
+perilaku normal. Mungkin Anda ingin agar suatu aktivitas dalam aplikasi untuk memulai tugas baru bila telah
+dimulai (sebagai ganti menempatkannya dalam tugas saat ini); atau, bila memulai aktivitas, Anda ingin
+memajukan instance yang ada (sebagai ganti membuat instance
+baru pada bagian teratas back-stack); atau, Anda ingin back-stack dihapus dari semua
+aktivitas selain untuk aktivitas akar bila pengguna meninggalkan tugas.</p>
+
+<p>Anda bisa melakukan semua ini dan lainnya, dengan atribut dalam elemen manifes
+<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+dan dengan flag pada intent yang Anda teruskan ke
+{@link android.app.Activity#startActivity startActivity()}.</p>
+
+<p>Dalam hal ini, atribut<a href="{@docRoot}guide/topics/manifest/activity-element.html">
+{@code &lt;activity&gt;}</a> utama yang bisa Anda gunakan adalah:</p>
+
+<ul class="nolist">
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">
+  {@code taskAffinity}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">
+  {@code launchMode}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">
+  {@code allowTaskReparenting}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">
+  {@code clearTaskOnLaunch}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
+  {@code alwaysRetainTaskState}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">
+  {@code finishOnTaskLaunch}</a></li>
+</ul>
+
+<p>Dan flag intent utama yang bisa Anda gunakan adalah:</p>
+
+<ul class="nolist">
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</li>
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</li>
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</li>
+</ul>
+
+<p>Dalam bagian berikut, Anda akan melihat cara menggunakan beberapa atribut manifes ini dan flag
+intent untuk mendefinisikan cara mengaitkan aktivitas dengan tugas dan cara perilakunya di back-stack.</p>
+
+<p>Juga, pertimbangan cara menyatakan dan mengelola tugas dan aktivitas
+dibahas secara terpisah di layar ikhtisar. Lihat <a href="{@docRoot}guide/components/recents.html">Layar Ikhtisar</a>
+untuk informasi selengkapnya. Biasanya Anda harus mengizinkan sistem mendefinisikan cara menyatakan tugas dan
+aktivitas di layar ikhtisar, dan Anda tidak perlu memodifikasi perilaku ini.</p>
+
+<p class="caution"><strong>Perhatian:</strong> Kebanyakan aplikasi tidak harus menyela perilaku
+default untuk aktivitas dan tugas. Jika merasa bahwa aktivitas Anda perlu memodifikasi
+perilaku default, lakukan dengan hati-hati dan pastikan menguji kegunaan aktivitas selama
+dijalankan dan saat mengarahkan kembali ke sana dari aktivitas dan tugas lain dengan tombol <em>Back</em>.
+Pastikan menguji perilaku navigasi yang mungkin bertentangan dengan perilaku yang diharapkan pengguna.</p>
+
+
+<h3 id="TaskLaunchModes">Mendefinisikan mode peluncuran</h3>
+
+<p>Mode peluncuran memungkinkan Anda mendefinisikan cara mengaitkan instance baru dari suatu aktivitas dengan
+tugas saat ini. Anda bisa mendefinisikan beragam mode peluncuran dalam dua cara:</p>
+<ul class="nolist">
+  <li><a href="#ManifestForTasks">Menggunakan file manifes</a>
+    <p>Bila Anda mendeklarasikan aktivitas dalam file manifes, Anda bisa menetapkan cara mengaitkan aktivitas
+dengan tugas-tugas saat mulai.</li>
+  <li><a href="#IntentFlagsForTasks">Menggunakan flag intent</a>
+    <p>Saat memanggil{@link android.app.Activity#startActivity startActivity()},
+Anda bisa menyertakan flag dalam {@link android.content.Intent} yang menyatakan cara (atau
+apakah) aktivitas baru tersebut harus dikaitkan dengan tugas saat ini.</p></li>
+</ul>
+
+<p>Dengan demikian, jika Aktivitas A memulai Aktivitas B, Aktivitas B bisa mendefinisikan dalam manifesnya cara
+mengaitkan dengan tugas saat ini (jika sama sekali) dan Aktivitas A juga bisa meminta cara mengaitkan Aktivitas B
+dengan tugas saat ini. Jika kedua aktivitas mendefinisikan cara mengaitkan Aktivitas B
+dengan tugas, maka permintaan Aktivitas A (sebagaimana didefinisikan dalam intent) lebih dihargai daripada
+permintaan Aktivitas B (sebagaimana didefinisikan dalam manifesnya).</p>
+
+<p class="note"><strong>Catatan:</strong> Beberapa mode peluncuran yang tersedia untuk file manifes
+tidak tersedia sebagai flag untuk intent dan, juga, beberapa mode peluncuran yang tersedia sebagai flag
+untuk intent tidak bisa didefinisikan dalam manifest.</p>
+
+
+<h4 id="ManifestForTasks">Menggunakan file manifes</h4>
+
+<p>Saat mendeklarasikan aktivitas dalam file manifes, Anda bisa menetapkan cara mengaitkan aktivitas
+dengan tugas menggunakan <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+melalui atribut <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
+launchMode}</a> elemen.</p>
+
+<p>Atribut <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
+launchMode}</a> menetapkan instruksi tentang cara meluncurkan aktivitas
+ke dalam tugas. Ada empat macam mode peluncuran yang bisa Anda tetapkan ke atribut
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">launchMode</a></code>
+:</p>
+
+<dl>
+<dt>{@code "standard"} (mode default)</dt>
+  <dd>Default. Sistem membuat instance baru aktivitas dalam tugas yang
+akan menjadi tempat memulainya dan mengarahkan intent ke sana. Aktivitas ini bisa dibuat instance-nya beberapa kali,
+masing-masing instance bisa dimiliki oleh tugas berbeda, dan satu tugas bisa memiliki beberapa instance.</dd>
+<dt>{@code "singleTop"}</dt>
+  <dd>Jika instance aktivitas sudah ada di bagian teratas tugas saat ini, sistem
+akan mengarahkan intent ke instance tersebut melalui panggilan ke metode {@link
+android.app.Activity#onNewIntent onNewIntent()}, bukan membuat instance baru dari
+aktivitas tersebut. Aktivitas bisa dibuat instance-nya beberapa kali, masing-masing instance bisa dimiliki
+oleh tugas berbeda, dan satu tugas bisa memiliki beberapa instance (namun hanya jika
+aktivitas di bagian teratas back-stack <em>bukan</em> instance yang ada dari aktivitas tersebut).
+  <p>Misalnya, anggaplah back-stack tugas terdiri dari aktivitas A akar dengan aktivitas B, C,
+dan D di bagian teratas (back-stack adalah A-B-C-D; D yang teratas). Intent masuk untuk aktivitas tipe D.
+Jika D memiliki mode peluncuran {@code "standard"} default, instance baru dari kelas ini akan diluncurkan dan
+back-stack menjadi A-B-C-D-D. Namun, jika mode peluncuran D adalah {@code "singleTop"}, instance
+yang ada dari D akan menerima intent melalui {@link
+android.app.Activity#onNewIntent onNewIntent()}, karena ada di bagian teratas back-stack&mdash;
+back-stack tetap A-B-C-D. Akan tetapi, jika intent masuk untuk aktivitas tipe B, maka
+instance B baru akan ditambahkan ke back-stack, sekalipun mode peluncuran adalah{@code "singleTop"}.</p>
+  <p class="note"><strong>Catatan:</strong> Bila instance dari aktivitas baru telah dibuat,
+pengguna bisa menekan tombol <em>Back</em> untuk kembali ke aktivitas sebelumnya. Namun bila instance
+yang ada dari
+aktivitas menangani intent baru, pengguna tidak bisa menekan tombol <em>Back</em> untuk kembali ke
+status
+aktivitas sebelum intent baru masuk di {@link android.app.Activity#onNewIntent
+onNewIntent()}.</p>
+</dd>
+
+<dt>{@code "singleTask"}</dt>
+  <dd>Sistem membuat tugas baru dan membuat instance aktivitas di akar tugas baru.
+Akan tetapi, jika instance aktivitas sudah ada dalam tugas terpisah, sistem akan mengarahkan
+intent ke instance yang ada melalui panggilan ke metode {@link
+android.app.Activity#onNewIntent onNewIntent()}, bukan membuat instance baru. Hanya
+boleh ada satu instance aktivitas untuk setiap kalinya.
+  <p class="note"><strong>Catatan:</strong> Meskipun aktivitas dimulai di tugas baru, tombol
+<em>Back</em> tetap akan mengembalikan pengguna ke aktivitas sebelumnya.</p></dd>
+<dt>{@code "singleInstance"}.</dt>
+  <dd>Sama seperti {@code "singleTask"}, namun sistem tidak meluncurkan aktivitas lain ke
+tugas yang menyimpan instance. Aktivitas selalu satu dan satu-satunya anggota dari tugasnya;
+aktivitas apa pun yang dimulai dengan ini akan dibuka di tugas yang terpisah.</dd>
+</dl>
+
+
+<p>Sebagai contoh lainnya, aplikasi Browser Android mendeklarasikan bahwa aktivitas browser web harus
+selalu dibuka dalam tugasnya sendiri&mdash;dengan menetapkan mode pembuka {@code singleTask} dalam elemen<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>.
+Ini berarti bahwa jika aplikasi Anda mengeluarkan
+intent untuk membuka Browser Android, aktivitasnya <em>tidak</em> akan ditempatkan dalam tugas
+yang sama seperti aplikasi Anda. Sebagai gantinya, tugas baru akan dimulai untuk Browser atau, jika Browser 
+sudah memiliki tugas yang berjalan di latar belakang, tugas tersebut akan dimajukan untuk menangani intent
+baru.</p>
+
+<p>Baik aktivitas dimulai dalam tugas baru atau maupun dalam tugas yang sama seperti aktivitas yang memulainya, tombol
+<em>Back</em> selalu membawa pengguna ke aktivitas sebelumnya. Akan tetapi, jika
+Anda memulai aktivitas yang menetapkan mode pembuka {@code singleTask}, maka jika instance
+aktivitas tersebut ada dalam tugas latar belakang, seluruh tugas tersebut akan dibawa ke latar depan. Pada titik
+ini, back-stack sekarang menyertakan semua aktivitas dari tugas yang dimajukan, di atas
+back-stack. Gambar 4 mengilustrasikan tipe skenario ini.</p>
+
+<img src="{@docRoot}images/fundamentals/diagram_backstack_singletask_multiactivity.png" alt="" />
+<p class="img-caption"><strong>Gambar 4.</strong> Representasi tentang cara aktivitas dengan
+mode pembuka "singleTask" ditambahkan ke back-stack. Jika aktivitas tersebut sudah menjadi bagian dari
+tugas latar belakang dengan back-stack sendiri, maka seluruh back-stack juga
+dimajukan, di atas tugas saat ini.</p>
+
+<p>Untuk informasi selengkapnya tentang menggunakan mode pembuka dalam file manifes, lihat dokumentasi elemen
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+, di mana atribut {@code launchMode} dan nilai-nilai yang diterima
+akan dibahas selengkapnya.</p>
+
+<p class="note"><strong>Catatan:</strong> Perilaku yang Anda tentukan untuk aktivitas dengan atribut <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
+bisa dikesampingkan dengan flag yang disertakan bersama intent yang memulai aktivitas Anda, seperti dibahas dalam
+bagian berikutnya.</p>
+
+
+
+<h4 id="#IntentFlagsForTasks">Menggunakan flag Intent</h4>
+
+<p>Saat memulai aktivitas, Anda bisa memodifikasi asosiasi default aktivitas pada tugasnya
+ dengan menyertakan flag dalam intent yang Anda kirimkan ke {@link
+android.app.Activity#startActivity startActivity()}. Flag yang bisa Anda gunakan untuk memodifikasi perilaku default
+adalah:</p>
+
+<p>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</dt>
+    <dd>Memulai aktivitas dalam tugas baru. Jika tugas sudah dijalankan untuk aktivitas yang sekarang
+Anda mulai, tugas tersebut akan dibawa ke latar depan dengan status terakhir yang dipulihkan dan aktivitas
+akan menerima intent baru dalam {@link android.app.Activity#onNewIntent onNewIntent()}.
+    <p>Ini menghasilkan perilaku yang sama dengan nilai {@code "singleTask"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> 
+yang dibahas di bagian sebelumnya.</p></dd>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</dt>
+    <dd>Jika aktivitas yang dimulai adalah aktivitas saat ini (di bagian teratas back-stack), maka
+instance yang ada akan menerima panggilan ke {@link android.app.Activity#onNewIntent onNewIntent()}
+sebagai ganti membuat instance baru aktivitas.
+    <p>Ini menghasilkan perilaku yang sama dengan nilai {@code "singleTop"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> 
+yang dibahas di bagian sebelumnya.</p></dd>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</dt>
+    <dd>Jika aktivitas yang dimulai sudah berjalan dalam tugas saat ini, maka sebagai
+ganti meluncurkan instance baru aktivitas tersebut, semua kegiatan lain di atasnya akan
+dimusnahkan dan intent ini akan disampaikan ke instance aktivitas yang dilanjutkan (sekarang di atas),
+melalui {@link android.app.Activity#onNewIntent onNewIntent()}).
+    <p>Tidak ada nilai untuk atribut <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
+ yang menghasilkan perilaku ini.</p>
+    <p>{@code FLAG_ACTIVITY_CLEAR_TOP} paling sering digunakan bersama dengan
+    {@code FLAG_ACTIVITY_NEW_TASK}.
+Bila digunakan bersama-sama, flag ini adalah cara penempatan aktivitas yang ada
+dalam tugas lain dan meletakkannya dalam posisi yang memungkinkannya merespons intent. </p>
+    <p class="note"><strong>Catatan:</strong> Jika mode pembuka aktivitas yang didesain adalah
+{@code "standard"},
+ini juga akan dihapus dari back-stack dan instance baru akan diluncurkan di tempatnya untuk menangani
+intent yang masuk.  Itu karena instance baru selalu dibuat untuk intent baru bila
+mode peluncuran adalah {@code "standard"}. </p>
+</dd>
+</dl>
+
+
+
+
+
+<h3 id="Affinities">Menangani afinitas</h3>
+
+<p><em>Afinitas</em> menunjukkan tugas mana yang disukai aktivitas untuk dimiliki. Secara default, semua
+aktivitas aplikasi yang sama memiliki afinitas untuk satu sama lain. Jadi, secara default, semua
+aktivitas dalam aplikasi yang sama lebih menyukai berada dalam tugas yang sama. Akan tetapi, Anda bisa memodifikasi
+afinitas default untuk suatu aktivitas. Aktivitas yang didefinisikan dalam
+aplikasi yang berbeda bisa berbagi afinitas, atau aktivitas yang didefinisikan dalam aplikasi yang sama bisa
+diberi afinitas tugas yang berbeda.</p>
+
+<p>Anda bisa memodifikasi afinitas untuk setiap yang diberikan 
+dengan atribut <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a> 
+elemen <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>.</p>
+
+<p>Atribut <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
+mengambil nilai string, yang harus unik dari nama paket default
+yang dideklarasikan dalam elemen <a href="{@docRoot}guide/topics/manifest/manifest-element.html">
+{@code &lt;manifest&gt;}
+</a>, karena sistem menggunakan nama untuk mengidentifikasi afinitas
+tugas default untuk aplikasi.</p>
+
+<p>Afinitas berperan dalam dua keadaan:</p>
+<ul>
+  <li>Bila intent yang meluncurkan aktivitas berisi flag
+  {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}
+.
+
+<p>Aktivitas baru, secara default, diluncurkan ke dalam tugas aktivitas 
+yang disebut {@link android.app.Activity#startActivity startActivity()}. Ini didorong ke back-stack
+yang sama seperti caller.  Akan tetapi, jika intent yang diteruskan ke
+{@link android.app.Activity#startActivity startActivity()}
+berisi flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}
+, maka sistem akan mencari tugas yang berbeda untuk menampung aktivitas baru. Sering kali, itu adalah tugas baru.
+Akan tetapi, tidak harus demikian.  Jika sudah ada tugas lama dengan afinitas yang sama seperti
+aktivitas baru, aktivitas ini akan diluncurkan ke dalam tugas tersebut.  Jika tidak, tugas baru akan dimulai.</p>
+
+<p>Jika flag ini menyebabkan aktivitas memulai tugas baru dan pengguna menekan tombol <em>Home</em>
+untuk meninggalkannya,
+harus ada cara bagi pengguna untuk mengarahkan kembali ke tugas. Beberapa entitas (seperti
+notification manager) selalu memulai aktivitas dalam tugas eksternal, tidak pernah sebagai bagian dari miliknya sendiri, jadi
+selalu menempatkan {@code FLAG_ACTIVITY_NEW_TASK} dalam intent yang diteruskan ke
+{@link android.app.Activity#startActivity startActivity()}.
+Jika Anda memiliki aktivitas yang bisa dipanggil melalui
+entitas eksternal yang mungkin menggunakan flag ini, hati-hatilah karena pengguna memiliki cara independen untuk kembali
+ke tugas yang telah dimulai, seperti dengan ikon launcher (aktivitas akar dari tugas
+memiliki filter intent {@link android.content.Intent#CATEGORY_LAUNCHER}; lihat bagian <a href="#Starting">Memulai tugas</a> di bawah ini).</p>
+</li>
+
+  <li>Bila aktivitas memiliki atribut <a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">
+{@code allowTaskReparenting}</a> sendiri yang diatur ke {@code "true"}.
+  <p>Dalam hal ini, aktivitas bisa berpindah dari tugas yang dimulainya ke tugas yang afinitasnya
+dimilikinya, bila tugas tersebut di bawa ke latar depan.</p>
+  <p>Misalnya, anggaplah sebuah aktivitas melaporkan kondisi cuaca di sejumlah kota terpilih
+yang didefinisikan sebagai bagian dari aplikasi perjalanan.  Aktivitas memiliki afinitas yang sama dengan aktivitas lain dalam aplikasi
+yang sama (afinitas aplikasi default) dan aktivitas ini memungkinkan re-parenting dengan atribut ini.
+Bila salah satu aktivitas Anda memulai aktivitas laporan cuaca, awalnya aktivitas ini dimiliki oleh tugas
+yang sama dengan aktivitas Anda. Akan tetapi, bila tugas aplikasi perjalanan di bawa ke latar depan, 
+aktivitas laporan cuaca akan ditetapkan kembali ke tugas itu dan ditampilkan di dalamnya.</p>
+</li>
+</ul>
+
+<p class="note"><strong>Tip:</strong> Jika file {@code .apk} berisi lebih dari satu "aplikasi"
+dari sudut pandang pengguna, Anda mungkin perlu menggunakan atribut <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
+ untuk menetapkan afinitas berbeda pada aktivitas yang terkait dengan setiap "aplikasi".</p>
+
+
+
+<h3 id="Clearing">Menghapus back-stack</h3>
+
+<p>Jika pengguna meninggalkan tugas dalam waktu yang lama, sistem akan menghapus tugas semua aktivitas kecuali
+aktivitas akar.  Bila pengguna kembali ke tugas itu lagi, hanya aktivitas akar yang akan dipulihkan.
+Sistem berperilaku seperti ini, karena, setelah sekian waktu, pengguna mungkin telah mengabaikan
+apa yang mereka kerjakan sebelum dan kembali ke tugas itu untuk memulai sesuatu yang baru. </p>
+
+<p>Ada beberapa atribut aktivitas yang bisa Anda gunakan untuk memodifikasi perilaku ini: </p>
+
+<dl>
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#always">alwaysRetainTaskState</a></code>
+</dt>
+<dd>Jika atribut ini ditetapkan ke {@code "true"} dalam aktivitas akar tugas, 
+perilaku default yang baru dijelaskan tidak akan terjadi.
+ Tugas akan mempertahankan semua aktivitas dalam back-stack bahkan setelah sekian lama.</dd>
+
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#clear">clearTaskOnLaunch</a></code></dt>
+<dd>Jika atribut ini diatur ke {@code "true"} dalam aktivitas akar tugas, back-
+stack akan dihapus hingga aktivitas akar bila pengguna meninggalkan tugas
+dan kembali lagi.  Dengan kata lain, ini adalah lawan dari
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
+{@code alwaysRetainTaskState}</a>. Pengguna selalu kembali ke tugas dengan
+status awalnya, walaupun hanya sebentar meninggalkan tugas.</dd>
+
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTaskLaunch</a></code>
+</dt>
+<dd>Atribut ini seperti <a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">{@code clearTaskOnLaunch}</a>,
+namun beroperasi pada
+satu aktivitas, bukan pada seluruh tugas.  Hal ini juga bisa menyebabkan aktivitas
+hilang, termasuk aktivitas akar.  Bila ini diatur ke {@code "true"}, 
+aktivitas akan tetap menjadi bagian dari tugas hanya untuk sesi saat ini.  Jika pengguna
+keluar dan kemudian kembali ke tugas tersebut, tugas tidak akan ada lagi.</dd>
+</dl>
+
+
+
+
+<h3 id="Starting">Memulai tugas</h3>
+
+<p>Anda bisa mengatur aktivitas sebagai titik masuk untuk tugas dengan memberikan filter intent dengan
+{@code "android.intent.action.MAIN"} sebagai tindakan yang ditetapkan dan
+{@code "android.intent.category.LAUNCHER"}
+sebagai kategori yang ditetapkan. Misalnya:</p>
+
+<pre>
+&lt;activity ... &gt;
+    &lt;intent-filter ... &gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+    ...
+&lt;/activity&gt;
+</pre>
+
+<p>Filter intent semacam ini akan menyebabkan ikon dan label untuk
+aktivitas ditampilkan dalam launcher aplikasi, yang akan memberi cara kepada pengguna untuk meluncurkan aktivitas dan
+kembali ke tugas yang dibuatnya kapan saja setelah ia telah diluncurkan.
+</p>
+
+<p>Kemampuan kedua ini penting: Pengguna harus bisa meninggalkan tugas dan kemudian kembali ke tugas tersebut
+nanti dengan menggunakan launcher aktivitas ini. Karena itu, kedua <a href="#LaunchModes">mode
+pembuka</a> yang menandai aktivitas selalu memulai tugas, {@code "singleTask"} dan
+{@code "singleInstance"}, hanya boleh digunakan bila aktivitas memiliki filter
+{@link android.content.Intent#ACTION_MAIN}
+dan {@link android.content.Intent#CATEGORY_LAUNCHER}. Bayangkan, misalnya, apa yang akan
+terjadi jika filter tidak ada: Intent meluncurkan aktivitas{@code "singleTask"}, memulai 
+tugas yang baru, dan pengguna menghabiskan lebih banyak waktu mengerjakan tugas tersebut. Pengguna kemudian menekan tombol 
+<em>Home</em>. Tugas kini dikirim ke latar belakang dan tidak terlihat. Sekarang pengguna tidak memiliki cara untuk kembali
+ke tugas tersebut, karena tidak dinyatakan dalam launcher aplikasi.</p>
+
+<p>Untuk kasus-kasus di mana Anda tidak ingin pengguna bisa kembali ke aktivitas, atur dalam 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+ pada 
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">{@code finishOnTaskLaunch}</a>
+elemen ke {@code "true"} (lihat <a href="#Clearing">Menghapus back-stack</a>).</p>
+
+<p>Informasi lebih jauh tentang cara menyatakan dan mengelola tugas dan aktivitas dalam
+layar ikhtisar tersedia dalam<a href="{@docRoot}guide/components/recents.html">
+Layar Ikhtisar</a>.</p>
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For more information about how to use intents to
+activate other application components and publish the intents to which your components
+respond, continue with the <b><a
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent
+Filters</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/in/guide/index.jd b/docs/html-intl/intl/in/guide/index.jd
new file mode 100644
index 0000000..f24fab6
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/index.jd
@@ -0,0 +1,74 @@
+page.title=Pengantar Android
+
+@jd:body
+
+
+<div class="sidebox" style="width:220px"><!-- width to match col-4 below -->
+<p>Untuk mempelajari cara kerja aplikasi, mulailah dengan
+<a href="{@docRoot}guide/components/fundamentals.html">Dasar-Dasar Aplikasi</a>.</p>
+<p>Untuk langsung memulai pemrograman, bacalah <a href="{@docRoot}training/basics/firstapp/index.html">Membangun Aplikasi Pertama Anda.</a></p>
+</div>
+
+<p>Android menyediakan kerangka kerja aplikasi yang kaya dan memungkinkan Anda membangun aplikasi dan permainan
+inovatif untuk perangkat seluler di lingkungan bahasa pemrograman Java. Dokumen yang tercantum di navigasi
+sebelah kiri menyediakan detail tentang cara membangun aplikasi menggunakan berbagai API Android.</p>
+
+<p>Jika Anda masih baru dengan pengembangan Android, Anda perlu memahami
+konsep dasar berikut mengenai kerangka kerja aplikasi Android:</p>
+
+
+<div class="landing-banner">
+
+<div class="col-6">
+
+<h4>Aplikasi menyediakan beberapa titik masuk</h4>
+
+<p>Aplikasi Android dibangun sebagai kombinasi beragam komponen yang bisa dipanggil
+satu per satu. Misalnya, satu <em>aktivitas</em> individual menyediakan satu
+layar untuk antarmuka pengguna, dan <em>layanan</em> yang secara terpisah melakukan
+tugas di latar belakang.</p>
+
+<p>Dari satu komponen Anda dapat memulai komponen lainnya menggunakan <em>intent</em>. Anda bahkan dapat memulai
+satu komponen dalam aplikasi berbeda, seperti aktivitas dalam aplikasi peta untuk menampilkan alamat. Model ini
+menyediakan beberapa titik masuk untuk aplikasi tunggal dan memungkinkan setiap aplikasi untuk berfungsi sebagai "default"
+pengguna bagi tindakan yang dapat dipanggil aplikasi lain.</p>
+
+
+<p><b>Ketahui selengkapnya:</b></p>
+<ul class="nolist">
+<li><a href="{@docRoot}guide/components/fundamentals.html">Dasar-Dasar Aplikasi</a>
+<li><a href="{@docRoot}guide/components/intents-filters.html">Intent dan Filter Intent</a>
+<li><a href="{@docRoot}guide/components/activities.html">Aktivitas</a>
+</ul>
+
+</div>
+
+
+<div class="col-6">
+
+<h4>Aplikasi beradaptasi dengan perangkat berbeda</h4>
+
+<p>Android menyediakan kerangka kerja aplikasi adaptif yang memungkinkan Anda menyediakan sumber daya unik
+bagi konfigurasi perangkat yang berbeda-beda. Misalnya, Anda bisa membuat berbagai file layout
+XML untuk ukuran layar yang berbeda-beda dan sistem akan menentukan
+layout yang akan diterapkan berdasarkan ukuran layar perangkat yang ada saat ini.</p>
+
+<p>Anda dapat melakukan query ketersediaan fitur perangkat saat dijalankan (runtime) jika ada fitur aplikasi yang memerlukan
+perangkat keras spesifik seperti kamera. Jika diperlukan, Anda juga bisa mendeklarasikan fitur yang dibutuhkan aplikasi
+agar pasar aplikasi seperti Google Play Store tidak mengizinkan instalasi pada perangkat yang tidak
+mendukung fitur itu.</p>
+
+
+<p><b>Ketahui selengkapnya:</b></p>
+<ul class="nolist">
+<li><a href="{@docRoot}guide/practices/compatibility.html">Kompatibilitas Perangkat</a>
+<li><a href="{@docRoot}guide/topics/resources/overview.html">Ikhtisar Sumber Daya</a>
+<li><a href="{@docRoot}guide/topics/ui/overview.html">Ikhtisar Antarmuka Pengguna</a>
+</ul>
+
+</div>
+
+</div><!-- end landing-banner -->
+
+
+
diff --git a/docs/html-intl/intl/in/guide/topics/manifest/manifest-intro.jd b/docs/html-intl/intl/in/guide/topics/manifest/manifest-intro.jd
new file mode 100644
index 0000000..6d6a3ad
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/manifest/manifest-intro.jd
@@ -0,0 +1,517 @@
+page.title=Manifes Aplikasi
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Dalam dokumen ini</h2>
+<ol>
+<li><a href="#filestruct">Struktur File Manifes</a></li>
+<li><a href="#filec">Konvensi File</a>
+<li><a href="#filef">Fitur File</a>
+	<ol>
+	<li><a href="#ifs">Filter Intent</a></li>
+	<li><a href="#iconlabel">Ikon dan Label</a></li>
+	<li><a href="#perms">Izin</a></li>
+	<li><a href="#libs">Pustaka</a></li>
+	</ol></li>
+</ol>
+</div>
+</div>
+
+<p>
+  Setiap aplikasi harus memiliki file AndroidManifest.xml (bernama persis seperti ini) di direktori akar.
+ <span itemprop="description">File manifes
+ menyediakan informasi penting tentang aplikasi ke sistem Android,
+ informasi yang harus dimiliki sistem agar bisa menjalankan setiap kode 
+aplikasi.</span> Di antaranya, manifes melakukan hal berikut ini:
+</p>
+
+<ul>
+<li>Menamai paket Java untuk aplikasi.
+Nama paket berfungsi sebagai identifier unik untuk aplikasi.</li>
+
+<li>Menjelaskan berbagai komponen aplikasi&mdash;aktivitas,
+ layanan, penerima siaran, dan penyedia konten 
+yang membentuk aplikasi.  Menamai kelas yang mengimplementasikan setiap komponen dan 
+mempublikasikan kemampuannya (misalnya, pesan {@link android.content.Intent 
+Intent} mana yang bisa ditanganinya).  Deklarasi ini memberi tahu sistem Android mengenai 
+komponennya dan dalam kondisi apa bisa diluncurkan.</li>
+
+<li>Menentukan proses yang akan menjadi host komponen aplikasi.</li>  
+
+<li>Mendeklarasikan izin aplikasi mana yang harus dimiliki untuk 
+mengakses bagian yang dilindungi pada API dan berinteraksi dengan aplikasi lain.</li>  
+
+<li>Juga mendeklarasikan izin lain yang harus dimiliki untuk 
+untuk berinteraksi dengan komponen aplikasi.</li>
+
+<li>Mencantumkan daftar kelas {@link android.app.Instrumentation} yang memberikan 
+profil dan informasi lain saat aplikasi berjalan.  Deklarasi ini 
+hanya ada di manifes saat aplikasi dibuat dan diuji;
+ deklarasi dihapus sebelum aplikasi dipublikasikan.</li>
+
+<li>Mendeklarasikan tingkat minimum API Android yang diperlukan 
+aplikasi.</li>
+
+<li>Mencantumkan daftar pustaka yang harus ditautkan aplikasi.</li>
+</ul>
+
+
+<h2 id="filestruct">Struktur File Manifes</h2>
+
+<p>
+Diagram di bawah ini menampilkan struktur umum file manifes dan setiap 
+elemen yang bisa ditampungnya.  Setiap elemen, bersama 
+atributnya, didokumentasikan secara lengkap dalam file terpisah.  Untuk melihat 
+informasi terperinci tentang setiap elemen, klik nama elemen dalam diagram, 
+dalam daftar abjad elemen yang mengikuti diagram, atau penyebutan nama 
+elemen lainnya. 
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
+
+    <a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration /&gt;</a>  <!-- ##api level 3## -->
+    <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature /&gt;</a>  <!-- ##api level 4## -->
+    <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens /&gt;</a>  <!-- ##api level 4## -->
+    <a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html">&lt;compatible-screens /&gt;</a>  <!-- ##api level 9## -->
+    <a href="{@docRoot}guide/topics/manifest/supports-gl-texture-element.html">&lt;supports-gl-texture /&gt;</a>  <!-- ##api level 11## -->
+
+    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action /&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category /&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;/activity&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;/activity-alias&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data/&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;/service&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;/receiver&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/path-permission-element.html">&lt;path-permission /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;/provider&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library /&gt;</a>
+
+    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;/application&gt;</a>
+
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;/manifest&gt;</a>
+</pre>
+
+<p>
+Semua elemen yang bisa muncul dalam file manifes tercantum di bawah ini 
+dalam urutan abjad.  Ini adalah satu-satunya elemen legal; Anda tidak bisa 
+menambahkan elemen atau atribut sendiri.  
+</p>
+
+<p style="margin-left: 2em">
+<code><a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens&gt;</a></code>  <!-- ##api level 4## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration&gt;</a></code>  <!-- ##api level 3## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature&gt;</a></code>  <!-- ##api level 4## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</a></code>
+</p>
+
+
+    
+
+<h2 id="filec">Konvensi File</h2>
+
+<p>
+Sebagian konvensi dan aturan berlaku secara umum untuk semua elemen 
+dan atribut di manifes:
+</p>
+
+<dl>
+<dt><b>Elemen</b></dt>
+<dd>Hanya elemen 
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> dan
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+yang diwajibkan, masing-masing harus ada dan hanya boleh terjadi sekali.  
+Umumnya elemen lain bisa terjadi berkali-kali atau sama sekali tidak terjadi &mdash; meskipun 
+setidaknya sebagian dari elemen itu harus ada untuk agar manifes mencapai sesuatu yang 
+berarti.
+
+<p>
+Jika elemen tidak berisi apa pun, berarti elemen itu berisi elemen lain.  
+Semua nilai diatur melalui atribut, bukan sebagai data karakter dalam elemen.
+</p>
+
+<p>
+Elemen yang sama tingkatan umumnya tidak diurutkan.  Misalnya, elemen 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>, 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>, dan 
+<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code> 
+bisa dicampur dalam urutan apa pun.  (Elemen 
+<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
+ merupakan eksepsi untuk aturan ini:  Elemen ini harus mengikuti 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 
+ini aliasnya.)
+</p></dd>
+
+<dt><b>Atribut</b></dt>
+<dd>Secara formal, semua atribut opsional.  Akan tetapi, ada sebagian 
+yang harus ditetapkan agar elemen bisa mencapai tujuannya.  Gunakan 
+dokumentasi sebagai panduan.  Bagi atribut yang benar-benar opsional, ini menyebutkan 
+nilai default atau menyatakan apa yang terjadi jika tidak ada spesifikasi.
+
+<p>Selain untuk beberapa atribut elemen akar 
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>,
+ semua nama atribut dimulai dengan awalan {@code android:} &mdash; 
+misalnya, {@code android:alwaysRetainTaskState}.  Karena awalan ini universal, dokumentasi umumnya meniadakannya saat mengacu atribut 
+dengan nama.
+</p></dd>
+
+<dt><b>Mendeklarasikan nama kelas</b></dt>
+<dd>Banyak elemen berhubungan dengan objek Java, termasuk elemen 
+aplikasi itu sendiri (elemen 
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+) dan aktivitas komponen &mdash; utamanya 
+(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>), 
+layanan 
+(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>), 
+penerima siaran 
+(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>), 
+dan penyedia konten 
+(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>).  
+
+<p>
+Jika mendefinisikan subkelas, seperti yang selalu Anda definisikan untuk kelas komponen 
+({@link android.app.Activity}, {@link android.app.Service}, 
+{@link android.content.BroadcastReceiver}, dan {@link android.content.ContentProvider}), 
+subkelas dideklarasikan melalui atribut {@code name}.  Nama harus menyertakan tujuan 
+paket lengkap.  
+Misalnya, subkelas {@link android.app.Service} mungkin dideklarasikan sebagai berikut:
+</p>
+
+<pre>&lt;manifest . . . &gt;
+    &lt;application . . . &gt;
+        &lt;service android:name="com.example.project.SecretService" . . . &gt;
+            . . .
+        &lt;/service&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+Akan tetapi, sebagai shorthand, jika karakter pertama string adalah titik, 
+string akan ditambahkan ke nama paket aplikasi (seperti yang ditetapkan dalam elemen 
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> 
+ melalui atribut 
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
+).  Penetapan berikut sama dengan di atas: 
+</p>
+
+<pre>&lt;manifest package="com.example.project" . . . &gt;
+    &lt;application . . . &gt;
+        &lt;service android:name=".SecretService" . . . &gt;
+            . . .
+        &lt;/service&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+Saat memulai komponen, Android akan membuat instance subkelas yang diberi nama.  
+Jika subkelas tidak ditetapkan, maka akak dibuat instance kelas dasar.
+</p></dd>
+
+<dt><b>Banyak nilai</b></dt>
+<dd>Jika lebih dari satu nilai yang dapat ditetapkan, elemen ini hampir selalu 
+diulangi, bukan menampilkan daftar banyak nilai dalam satu elemen.  
+Misalnya, filter intent dapat mencantumkan beberapa tindakan:
+
+<pre>&lt;intent-filter . . . &gt;
+    &lt;action android:name="android.intent.action.EDIT" /&gt;
+    &lt;action android:name="android.intent.action.INSERT" /&gt;
+    &lt;action android:name="android.intent.action.DELETE" /&gt;
+    . . .
+&lt;/intent-filter&gt;</pre></dd>
+
+<dt><b>Nilai sumber daya</b></dt>
+<dd>Beberapa atribut memiliki nilai yang bisa ditampilkan kepada pengguna &mdash; misalnya
+, label dan ikon aktivitas.  Nilai atribut ini 
+harus dilokalkan dan karenanya ditetapkan dari sumber daya atau tema.  Nilai sumber 
+daya dinyatakan dalam format berikut,</p>
+
+<p style="margin-left: 2em">{@code @[<i>package</i>:]<i>type</i>:<i>name</i>}</p>
+
+<p>
+dalam hal ini nama <i>package</i> boleh dihilangkan jika sumber daya ada dalam paket yang sama dengan 
+dengan aplikasi, <i>type</i> adalah tipe sumber daya &mdash; seperti "string" atau 
+"drawable" &mdash; dan <i>name</i> adalah nama yang mengidentifikasi sumber daya tertentu.  
+Misalnya:
+</p>
+
+<pre>&lt;activity android:icon="@drawable/smallPic" . . . &gt</pre>
+
+<p>
+Nilai tema diekspresikan dengan cara yang sama, namun dengan awal '{@code ?}' 
+dan bukan '{@code @}':
+</p>
+
+<p style="margin-left: 2em">{@code ?[<i>package</i>:]<i>type</i>:<i>name</i>}
+</p></dd>
+
+<dt><b>Nilai-nilai string</b></dt>
+<dd>Bila nilai atribut adalah string, dua garis miring kiri ('{@code \\}') 
+harus digunakan untuk meninggalkan karakter &mdash; misalnya, '{@code \\n}' untuk 
+baris baru atau '{@code \\uxxxx}' untuk karakter Unicode.</dd>
+</dl>
+
+
+<h2 id="filef">Fitur File</h2>
+
+<p>
+Bagian berikut menjelaskan cara menerapkan sebagian fitur Android 
+dalam file manifest.
+</p>
+
+
+<h3 id="ifs">Filter Intent</h3>
+
+<p>
+Komponen inti dari aplikasi (aktivitasnya, layanannya, dan penerima 
+siaran) diaktifkan oleh <i>intent</i>.  Intent adalah 
+sekumpulan informasi (objek {@link android.content.Intent}) yang menjelaskan 
+tindakan yang diinginkan &mdash; termasuk data yang akan ditindaklanjuti, kategori 
+komponen yang harus melakukan tindakan, dan petunjuk terkait lainnya.  
+Android mencari komponen yang sesuai untuk merespons intent, meluncurkan 
+instance komponen baru jika diperlukan, dan meneruskannya ke 
+objek Intent.
+</p>
+
+<p>
+Komponen mengiklankan kemampuannya &mdash; jenis intent yang bisa diresponsnya 
+ &mdash; melalui <i>filter intent</i>.  Karena sistem Android 
+harus mempelajari intent yang dapat ditangani komponen sebelum meluncurkan komponen, 
+filter intent ditetapkan dalam manifes sebagai elemen 
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+.  Sebuah komponen dapat memiliki filter dalam jumlah berapa saja, masing-masing menjelaskan 
+kemampuan yang berbeda.
+</p>
+
+<p>
+Intent yang secara eksplisit menamai komponen target akan mengaktifkan komponen itu;
+filter tidak berperan.  Namun intent yang tidak menetapkan target 
+dengan nama dapat mengaktifkan komponen hanya jika dapat melewati salah satu filter 
+komponen.
+</p>
+
+<p>
+Untuk informasi tentang cara objek Intent diuji terhadap filter intent, 
+lihat dokumen terpisah, 
+<a href="{@docRoot}guide/components/intents-filters.html">Intent 
+dan Filter Intent</a>.
+</p>
+
+
+<h3 id="iconlabel">Ikon dan Label</h3>
+
+<p>
+Sejumlah elemen memiliki atribut {@code icon} dan {@code label} untuk 
+ikon kecil dan label teks yang bisa ditampilkan kepada pengguna.  Sebagian ada juga yang memiliki atribut 
+{@code description}untuk teks penjelasan yang lebih panjang yang juga bisa 
+ditampilkan pada layar.  Misalnya, elemen 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+ memiliki ketiga atribut ini, jadi saat pengguna ditanya apakah akan 
+memberi izin bagi aplikasi yang memintanya, ikon yang mewakili 
+izin, nama izin, dan keterangan yang 
+mengikutinya bisa ditampilkan kepada pengguna.
+</p>
+
+<p>
+Dalam setiap kasus, ikon dan label yang ditetapkan dalam elemen yang memuatnya menjadi 
+{@code icon} default dan pengaturan {@code label} untuk semua subelemen kontainer ini.  
+Karena itu, ikon dan label yang ditetapkan dalam elemen 
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+adalah ikon dan label default untuk setiap komponen aplikasi.  
+Demikian pula, ikon dan label yang ditetapkan untuk komponen &mdash; misalnya, elemen 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 
+&mdash; adalah pengaturan default untuk setiap elemen komponen 
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+.  Jika elemen 
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+menetapkan label, namun suatu aktivitas dan filter intent-nya tidak menetapkan label, 
+maka label aplikasi akan dianggap sama-sama sebagai label aktvitas dan 
+filter intent.
+</p>
+
+<p>
+Ikon dan label yang ditetapkan untuk filter intent digunakan untuk mewakili komponen 
+kapan saja komponen ditampilkan kepada pengguna saat memenuhi fungsi yang 
+diiklankan oleh filter.  Misalnya, filter dengan pengaturan 
+"{@code android.intent.action.MAIN}" dan 
+"{@code android.intent.category.LAUNCHER}" mengiklankan aktivitas 
+sebagai aktivitas yang memulai aplikasi&mdash;, yaitu 
+sebagai salah satu aktivitas yang harus ditampilkan dalam launcher aplikasi.  Ikon dan label yang 
+diatur dalam filter karenanya adalah ikon dan label yang ditampilkan dalam launcher.
+</p>
+
+
+<h3 id="perms">Izin</h3>
+
+<p>
+Sebuah <i>izin</i> adalah pembatasan yang membatasi akses ke bagian 
+kode atau ke data pada perangkat.   Pembatasan diberlakukan untuk melindungi data dan kode 
+penting yang bisa disalahgunakan untuk mengganggu atau merusak pengalaman pengguna.  
+</p>
+
+<p>
+Setiap izin diidentifikasi melalui label yang unik.  Sering kali, label menunjukkan 
+tindakan yang dibatasi.  Misalnya, berikut ini adalah beberapa izin yang didefinisikan 
+oleh Android:
+</p>
+
+<p style="margin-left: 2em">{@code android.permission.CALL_EMERGENCY_NUMBERS}
+<br/>{@code android.permission.READ_OWNER_DATA}
+<br/>{@code android.permission.SET_WALLPAPER}
+<br/>{@code android.permission.DEVICE_POWER}</p>
+
+<p>
+Sebuah fitur bisa dilindungi paling banyak oleh satu izin.
+</p>
+
+<p>
+Jika aplikasi memerlukan akses ke fitur yang dilindungi oleh izin, 
+aplikasi harus mendeklarasikan bahwa aplikasi memerlukan izin itu dengan elemen 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+ dalam manifes.  Kemudian, bila aplikasi telah diinstal pada 
+perangkat, installer akan menentukan apakah izin yang diminta akan diberikan atau tidak 
+dengan memeriksa otoritas yang menandatangani 
+sertifikat aplikasi dan, dalam beberapa kasus, bertanya pada pengguna.  
+Jika izin diberikan, aplikasi tersebut bisa menggunakan 
+fitur yang dilindungi.  Jika tidak, upaya aplikasi untuk mengakses fitur tersebut akan gagal 
+tanpa ada pemberitahuan apa pun kepada pengguna. 
+</p>
+
+<p>
+Aplikasi juga bisa melindungi komponennya sendiri (aktivitas, layanan, 
+penerima siaran, dan penyedia konten) dengan izin.  Aplikasi bisa menerapkan 
+izin mana pun yang didefinisikan oleh Android (tercantum dalam 
+{@link android.Manifest.permission android.Manifest.permission}) atau dideklarasikan 
+oleh aplikasi lain.  Atau aplikasi bisa mendefinisikannya sendiri.  Izin baru dideklarasikan 
+dengan elemen 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+.  Misalnya, aktivitas dapat dilindungi sebagai berikut:
+</p>
+
+<pre>
+&lt;manifest . . . &gt;
+    &lt;permission android:name="com.example.project.DEBIT_ACCT" . . . /&gt;
+    &lt;uses-permission android:name="com.example.project.DEBIT_ACCT" /&gt;
+    . . .
+    &lt;application . . .&gt;
+        &lt;activity android:name="com.example.project.FreneticActivity"
+                  android:permission="com.example.project.DEBIT_ACCT"
+                  . . . &gt;
+            . . .
+        &lt;/activity&gt;
+    &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+
+<p>
+Perhatikan, dalam contoh ini izin {@code DEBIT_ACCT} tidak hanya 
+dideklarasikan dengan elemen 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+, penggunaannya juga diminta dengan elemen 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+.  Penggunaannya harus diminta agar komponen 
+aplikasi lainnya bisa menjalankan aktivitas yang dilindungi, meskipun perlindungan itu 
+diberlakukan oleh aplikasi itu sendiri.  
+</p>
+
+<p>
+Dalam contoh yang sama, jika atribut {@code permission} ditetapkan 
+untuk izin yang dideklarasikan di tempat lain 
+lain (seperti {@code android.permission.CALL_EMERGENCY_NUMBERS}, maka atribut 
+tidak perlu mendeklarasikannya lagi dengan elemen 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+.  Akan tetapi, penggunaannya masih perlu dengan 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>. 
+</p>
+
+<p>
+Elemen 
+<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code> 
+mendeklarasikan namespace untuk grup izin yang akan didefinisikan dalam 
+kode.  Dan 
+<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+mendefinisikan label untuk seperangkat izin (yang sama-sama dideklarasikan dalam manifes dengan elemen 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 
+dan yang dideklarasikan di tempat lain).  Ini hanya memengaruhi cara izin 
+dikelompokkan saat ditampilkan kepada pengguna.  Elemen 
+<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+ tidak menetapkan izin mana dimiliki grup; 
+elemen hanya memberi nama grup.  Izin ditempatkan dalam grup
+dengan memberikan nama grup ke elemen 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 
+ melalui atribut 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code> 
+.
+</p>
+
+
+<h3 id="libs">Pustaka</h3>
+
+<p>
+Setiap aplikasi ditautkan dengan pustaka default Android, yang 
+menyertakan paket dasar untuk membangun aplikasi (dengan kelas umum 
+seperti Activity, Service, Intent, View, Button, Application, ContentProvider, 
+dan sebagainya).
+</p>
+
+<p>
+Akan tetapi, sebagian paket berada dalam pustakanya sendiri.  Jika aplikasi Anda 
+menggunakan kode salah satu paket ini, aplikasi secara eksplisit meminta untuk ditautkan dengan 
+paket tersebut.  Manifes harus berisi elemen 
+<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code> yang 
+terpisah untuk menamai setiap pustaka.  (Nama pustaka bisa ditemukan 
+dalam dokumentasi paket.)
+</p>
diff --git a/docs/html-intl/intl/in/guide/topics/providers/calendar-provider.jd b/docs/html-intl/intl/in/guide/topics/providers/calendar-provider.jd
new file mode 100644
index 0000000..76bc991
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/providers/calendar-provider.jd
@@ -0,0 +1,1184 @@
+page.title=Penyedia Kalender
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+    <h2>Dalam dokumen ini</h2>
+    <ol>
+  <li><a href="#overview">Dasar-Dasar</a></li>
+  <li><a href="#manifest">Izin Pengguna</a></li>
+  <li><a href="#calendar">Tabel kalender</a>
+<ol>
+      <li><a href="#query">Membuat query kalender</a></li>
+      <li><a href="#modify-calendar">Memodifikasi kalender</a></li>
+      <li><a href="#insert-calendar">Menyisipkan kalender</a></li>
+    </ol>
+  </li>
+  <li><a href="#events">Tabel Events</a>
+<ol>
+      <li><a href="#add-event">Menambahkan Kejadian</a></li>
+      <li><a href="#update-event">Memperbarui Kejadian</a></li>
+      <li><a href="#delete-event">Menghapus Kejadian</a></li>
+    </ol>
+  </li>
+  <li><a href="#attendees">Tabel peserta</a>
+<ol>
+      <li><a href="#add-attendees">Menambahkan Peserta</a></li>
+    </ol>
+  </li>
+  <li><a href="#reminders">Tabel pengingat</a>
+<ol>
+      <li><a href="#add-reminders">Menambahkan Pengingat</a></li>
+    </ol>
+  </li>
+  <li><a href="#instances">Tabel Instances</a>
+  <ol>
+      <li><a href="#query-instances">Membuat query tabel Instance</a></li>
+  </ol></li>
+  <li><a href="#intents">Intent Kalender</a>
+  <ol>
+      <li><a href="#intent-insert">Menggunakan intent untuk menyisipkan kejadian</a></li>
+      <li><a href="#intent-edit">Menggunakan intent untuk mengedit kejadian</a></li>
+      <li><a href="#intent-view">Menggunakan intent untuk menampilkan data kalender</a></li>
+    </ol>
+  </li>
+  
+  <li><a href="#sync-adapter">Adaptor Sinkronisasi</a></li>
+</ol>
+
+    <h2>Kelas-kelas utama</h2>
+    <ol>
+      <li>{@link android.provider.CalendarContract.Calendars}</li>
+      <li>{@link android.provider.CalendarContract.Events}</li>
+      <li>{@link android.provider.CalendarContract.Attendees}</li>
+      <li>{@link android.provider.CalendarContract.Reminders}</li>
+    </ol>
+</div>
+</div>
+
+<p>Penyedia Kalender adalah repository untuk kejadian kalender seorang pengguna. API
+Penyedia Kalender memungkinkan Anda melakukan query, menyisipkan, memperbarui, dan menghapus
+pada kalender, kejadian, peserta, pengingat, dan seterusnya.</p>
+
+
+<p>API Penyedia Kalender bisa digunakan oleh aplikasi dan adaptor sinkronisasi. Aturannya
+bervariasi menurut tipe program yang membuat panggilan. Dokumen ini
+terutama berfokus pada penggunaan API Penyedia Kalender sebagai sebuah aplikasi. Untuk 
+pembahasan ragam adaptor sinkronisasi, lihat 
+<a href="#sync-adapter">Adaptor Sinkronisasi</a>.</p>
+
+
+<p>Biasanya, untuk membaca atau menulis data kalender, manifes aplikasi harus
+berisi izin yang sesuai, yang dijelaskan dalam <a href="#manifest">Izin
+Pengguna</a>. Untuk mempermudah dilakukannya operasi umum,
+Penyedia Kalender menyediakan satu set intent, seperti dijelaskan dalam <a href="#intents">Intent
+Kalender</a>. Semua intent ini membawa pengguna ke aplikasi Kalender untuk menyisipkan, menampilkan,
+dan mengedit kejadian. Pengguna berinteraksi dengan aplikasi Kalender kemudian
+kembali ke aplikasi semula. Jadi, aplikasi Anda tidak perlu meminta izin,
+juga tidak perlu menyediakan antarmuka pengguna untuk menampilkan atau membuat kejadian.</p>
+
+<h2 id="overview">Dasar-Dasar</h2>
+
+<p><a href="{@docRoot}guide/topics/providers/content-providers.html">Penyedia konten</a> menyimpan data dan menjadikannya bisa diakses oleh
+aplikasi. Penyedia konten yang ditawarkan oleh platform Android (termasuk Penyedia Kalender) biasanya mengekspos data sebagai satu set tabel berdasarkan
+model database relasional, dengan tiap baris berupa record dan tiap kolom berupa data
+yang memiliki tipe dan arti tertentu. Melalui API Penyedia Kalender, aplikasi
+dan adaptor sinkronisasi bisa mendapatkan akses baca/tulis ke tabel-tabel database yang menyimpan
+data kalender seorang pengguna.</p>
+
+<p>Setiap penyedia konten membuka sebuah URI publik (yang dibungkus sebagai objek
+{@link android.net.Uri}
+) yang mengidentifikasikan set datanya secara unik.  Penyedia konten yang mengontrol
+ beberapa set data (beberapa tabel) mengekspos URI terpisah untuk tiap set.  Semua 
+URI untuk penyedia diawali dengan string "content://".  String ini
+mengidentifikasi data sebagai dikontrol oleh penyedia konten. Penyedia Kalender
+mendefinisikan konstanta untuk URI masing-masing kelas (tabel). URI ini
+memiliki format <code><em>&lt;class&gt;</em>.CONTENT_URI</code>. Misalnya,
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.</p>
+
+<p>Gambar 1 menampilkan representasi grafis model data Penyedia Kalender. Gambar ini menampilkan
+tabel dan bidang utama yang saling berkaitan.</p>
+
+<img src="{@docRoot}images/providers/datamodel.png" alt="Calendar Provider Data Model" />
+<p class="img-caption"><strong>Gambar 1.</strong> Model data Penyedia Kalender.</p>
+
+<p>Seorang pengguna bisa memiliki beberapa kalender, dan kalender yang berbeda bisa dikaitkan dengan tipe akun yang berbeda (Google Calendar, Exchange, dan seterusnya).</p>
+
+<p>{@link android.provider.CalendarContract} mendefinisikan model data dari informasi yang terkait dengan kalender dan kejadian. Data ini disimpan di sejumlah tabel, yang dicantumkan di bawah ini.</p>
+
+<table>
+  <tr>
+    <th>Tabel (Kelas)</th>
+    <th>Keterangan</th>
+  </tr>
+  <tr>
+    <td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
+    
+    <td>Tabel ini menyimpan 
+informasi khusus kalender. Tiap baris dalam tabel ini berisi data untuk
+satu kalender, seperti nama, warna, informasi sinkronisasi, dan seterusnya.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Events}</td>
+    
+    <td>Tabel ini menyimpan
+informasi khusus kejadian. Tiap baris dalam tabel ini berisi informasi untuk satu
+kejadian&mdash;misalnya, judul kejadian, lokasi, waktu mulai, waktu
+selesai, dan seterusnya. Kejadian bisa terjadi satu kali atau bisa berulang beberapa kali. Peserta,
+pengingat, dan properti perluasan disimpan dalam tabel terpisah. 
+Masing-masing memiliki sebuah {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 
+yang mengacu {@link android.provider.BaseColumns#_ID} dalam tabel Events.</td>
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances}</td>
+    
+    <td>Tabel ini menyimpan
+waktu mulai dan waktu selesai setiap bentuk kejadian. Tiap baris dalam tabel ini
+mewakili satu bentuk kejadian. Untuk kejadian satu kali ada pemetaan 1:1
+antara instance dan kejadian. Untuk kejadian berulang, beberapa baris akan dibuat
+secara otomatis yang sesuai dengan beberapa kejadian itu.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Attendees}</td>
+    
+    <td>Tabel ini menyimpan
+informasi peserta (tamu) kejadian. Tiap baris mewakili satu tamu
+kejadian. Ini menetapkan tipe tamu dan respons kehadiran tamu
+untuk kejadian.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Reminders}</td>
+    
+    <td>Tabel ini menyimpan
+data peringatan/pemberitahuan. Tiap baris mewakili satu peringatan untuk sebuah kejadian. Sebuah
+kejadian bisa memiliki beberapa pengingat. Jumlah maksimum pengingat per kejadian
+ditetapkan dalam 
+{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS}, 
+yang diatur oleh adaptor sinkronisasi yang
+memiliki kalender yang diberikan. Pengingat ditetapkan dalam menit sebelum kejadian
+dan memiliki metode yang menentukan cara pengguna akan diperingatkan.</td>
+  </tr>
+  
+</table>
+
+<p>API Penyedia Kalender didesain agar luwes dan tangguh. Sementara itu
+, Anda perlu memberikan pengalaman pengguna akhir yang baik dan
+melindungi integritas kalender dan datanya. Untuk mencapainya, berikut ini adalah
+beberapa hal yang harus diingat saat menggunakan API ini:</p>
+
+<ul>
+
+<li><strong>Menyisipkan, memperbarui, dan menampilkan kejadian kalender.</strong> Untuk menyisipkan, mengubah, dan membaca kejadian secara langsung dari Penyedia Kalender, Anda memerlukan <a href="#manifest">izin</a> yang sesuai. Akan tetapi, jika Anda tidak sedang membuat aplikasi atau adaptor sinkronisasi kalender berfitur lengkap, maka tidak perlu meminta izin. Sebagai gantinya, Anda bisa menggunakan intent yang didukung oleh aplikasi Kalender Android untuk menyerahkan operasi baca dan tulis ke aplikasi itu. Bila menggunakan intent, aplikasi Anda akan mengirim pengguna ke aplikasi Kalender untuk melakukan operasi yang diinginkan
+dalam sebuah formulir yang sudah diisi. Setelah operasi selesai, formulir dikembalikan ke aplikasi Anda.
+Dengan mendesain aplikasi untuk melakukan operasi umum melalui Kalender,
+Anda akan memberi pengguna sebuah antarmuka pengguna yang konsisten dan tangguh. Inilah
+pendekatan yang disarankan. Untuk informasi selengkapnya, lihat <a href="#intents">Intent
+Kalender</a>.</p>
+
+
+<li><strong>Adaptor sinkronisasi.</strong> Adaptor sinkronisasi menyinkronkan data kalender
+pada perangkat pengguna dengan server atau sumber data lain. Dalam tabel 
+{@link android.provider.CalendarContract.Calendars} dan
+{@link android.provider.CalendarContract.Events}, 
+ada kolom yang dicadangkan untuk digunakan adaptor sinkronisasi.
+Penyedia dan aplikasi tidak boleh memodifikasinya. Sebenarnya, tabel-tabel itu tidak
+terlihat kecuali jika diakses sebagai adaptor sinkronisasi. Untuk informasi selengkapnya tentang
+adaptor sinkronisasi, lihat <a href="#sync-adapter">Adaptor Sinkronisasi</a>.</li>
+
+</ul>
+
+
+<h2 id="manifest">Izin Pengguna</h2>
+
+<p>Untuk membaca data kalender, aplikasi harus menyertakan izin {@link
+android.Manifest.permission#READ_CALENDAR} dalam file manifesnya. File
+harus menyertakan izin {@link android.Manifest.permission#WRITE_CALENDAR}
+untuk menghapus, menyisipkan, atau memperbarui data kalender:</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;...&gt;
+    &lt;uses-sdk android:minSdkVersion=&quot;14&quot; /&gt;
+    &lt;uses-permission android:name=&quot;android.permission.READ_CALENDAR&quot; /&gt;
+    &lt;uses-permission android:name=&quot;android.permission.WRITE_CALENDAR&quot; /&gt;
+    ...
+&lt;/manifest&gt;
+</pre>
+
+
+<h2 id="calendar">Tabel Kalender</h2>
+
+<p>Tabel {@link android.provider.CalendarContract.Calendars} berisi data
+untuk tiap kalender. Kolom-kolom
+berikut ini bisa ditulisi oleh aplikasi maupun <a href="#sync-adapter">adaptor sinkronisasi</a>. 
+Untuk mengetahui daftar lengkap bidang-bidang yang didukung, lihat
+acuan {@link android.provider.CalendarContract.Calendars}.</p>
+<table>
+  <tr>
+    <th>Konstanta</th>
+    <th>Keterangan</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#NAME}</td>
+    <td>Nama kalender.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#CALENDAR_DISPLAY_NAME}</td>
+    <td>Nama kalender ini yang ditampilkan kepada pengguna.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
+    
+    <td>Sebuah boolean yang menunjukkan apakah kalender dipilih untuk ditampilkan. Nilai
+0 menunjukkan bahwa kejadian yang terkait dengan kalender ini tidak boleh
+ditampilkan.  Nilai 1 menunjukkan bahwa kejadian yang terkait dengan kalender ini harus
+ditampilkan. Nilai ini memengaruhi pembuatan baris dalam tabel {@link
+android.provider.CalendarContract.Instances}.</td>
+
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
+    
+    <td>Sebuah boolean yang menunjukkan apakah kalender harus disinkronkan dan apakah
+kejadiannya harus disimpan pada perangkat. Nilai 0 berarti jangan menyinkronkan kalender ini atau
+simpan kejadiannya pada perangkat.  Nilai 1 berarti menyinkronkan kejadian untuk kalender ini
+dan simpan kejadiannya pada perangkat.</td>
+  </tr>
+</table>
+
+<h3 id="query">Membuat query kalender</h3>
+
+<p>Berikut ini adalah contoh yang menampilkan cara mendapatkan kalender yang dimiliki oleh
+pengguna tertentu. Untuk memudahkan, dalam contoh ini, operasi query ditampilkan dalam
+thread antarmuka pengguna ("thread utama"). Dalam praktiknya, hal ini harus dilakukan dalam
+thread asinkron, sebagai ganti pada thread utama. Untuk diskusi selengkapnya, lihat 
+<a href="{@docRoot}guide/components/loaders.html">Loader</a>. Jika Anda tidak sekadar 
+membaca data melainkan memodifikasinya, lihat {@link android.content.AsyncQueryHandler}.
+</p>
+
+
+<pre>
+// Projection array. Creating indices for this array instead of doing
+// dynamic lookups improves performance.
+public static final String[] EVENT_PROJECTION = new String[] {
+    Calendars._ID,                           // 0
+    Calendars.ACCOUNT_NAME,                  // 1
+    Calendars.CALENDAR_DISPLAY_NAME,         // 2
+    Calendars.OWNER_ACCOUNT                  // 3
+};
+  
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
+private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
+private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
+  
+
+<div class="sidebox-wrapper"> <div class="sidebox"> <h3>Mengapa Anda harus menyertakan
+ACCOUNT_TYPE?</h3> <p>Jika Anda membuat query pada {@link
+android.provider.CalendarContract.Calendars#ACCOUNT_NAME
+Calendars.ACCOUNT_NAME}, Anda juga harus menyertakan 
+{@link android.provider.CalendarContract.Calendars#ACCOUNT_TYPE Calendars.ACCOUNT_TYPE}
+dalam pemilihan. Itu karena akun yang bersangkutan
+hanya dianggap unik mengingat <code>ACCOUNT_NAME</code> dan
+<code>ACCOUNT_TYPE</code>-nya. <code>ACCOUNT_TYPE</code> adalah string yang sesuai dengan
+autentikator akun yang digunakan bila akun didaftarkan dengan
+{@link android.accounts.AccountManager}. Ada juga sebuah tipe akun khusus yang disebut {@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} untuk kalender
+yang tidak terkait dengan akun perangkat. Akun {@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} tidak
+disinkronkan.</p> </div> </div> 
+
+
+<p> Di bagian berikutnya pada contoh ini, Anda akan membuat query. Pemilihan
+akan menetapkan kriteria untuk query. Dalam contoh ini, query mencari
+kalender yang memiliki <code>ACCOUNT_NAME</code>
+"sampleuser@google.com", <code>ACCOUNT_TYPE</code>
+"com.google", dan <code>OWNER_ACCOUNT</code>
+"sampleuser@google.com". Jika Anda ingin melihat semua kalender yang
+telah ditampilkan pengguna, bukan hanya kalender yang dimiliki pengguna, hilangkan <code>OWNER_ACCOUNT</code>.
+Query tersebut akan menghasilkan objek {@link android.database.Cursor}
+yang bisa Anda gunakan untuk menyusuri set hasil yang dikembalikan oleh
+query database. Untuk diskusi selengkapnya tentang penggunaan query dalam penyedia konten, 
+lihat <a href="{@docRoot}guide/topics/providers/content-providers.html">Penyedia Kalender</a>.</p>
+
+
+<pre>// Run query
+Cursor cur = null;
+ContentResolver cr = getContentResolver();
+Uri uri = Calendars.CONTENT_URI;   
+String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND (" 
+                        + Calendars.ACCOUNT_TYPE + " = ?) AND ("
+                        + Calendars.OWNER_ACCOUNT + " = ?))";
+String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
+        "sampleuser@gmail.com"}; 
+// Submit the query and get a Cursor object back. 
+cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
+
+<p>Bagian berikutnya ini menggunakan kursor untuk merunut set hasil. Bagian ini menggunakan
+konstanta yang disiapkan pada awal contoh ini untuk menghasilkan nilai-nilai
+bagi tiap bidang.</p>
+    
+<pre>// Use the cursor to step through the returned records
+while (cur.moveToNext()) {
+    long calID = 0;
+    String displayName = null;
+    String accountName = null;
+    String ownerName = null;
+      
+    // Get the field values
+    calID = cur.getLong(PROJECTION_ID_INDEX);
+    displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
+    accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
+    ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
+              
+    // Do something with the values...
+
+   ...
+}
+</pre>
+  
+<h3 id="modify-calendar">Memodifikasi kalender</h3>
+
+<p>Untuk melakukan pembaruan kalender, Anda bisa menyediakan {@link
+android.provider.BaseColumns#_ID} kalender itu baik sebagai ID yang ditambahkan ke
+URI 
+
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 
+atau sebagai item pemilihan pertama. Pemilihan
+harus diawali dengan <code>&quot;_id=?&quot;</code>, dan
+<code>selectionArg</code> pertama harus berupa {@link
+android.provider.BaseColumns#_ID} kalender. 
+Anda juga bisa melakukan pembaruan dengan menuliskan kode ID dalam URI. Contoh ini mengubah
+nama tampilan kalender dengan pendekatan 
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 
+:</p>
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long calID = 2;
+ContentValues values = new ContentValues();
+// The new display name for the calendar
+values.put(Calendars.CALENDAR_DISPLAY_NAME, &quot;Trevor's Calendar&quot;);
+Uri updateUri = ContentUris.withAppendedId(Calendars.CONTENT_URI, calID);
+int rows = getContentResolver().update(updateUri, values, null, null);
+Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);</pre>
+
+<h3 id="insert-calendar">Menyisipkan kalender</h2>
+
+<p>Kalender didesain untuk dikelola terutama oleh sebuah adaptor sinkronisasi, sehingga Anda
+hanya boleh menyisipkan kalender baru sebagai adaptor sinkronisasi. Biasanya,
+aplikasi hanya bisa membuat perubahan semu pada kalender, misalnya mengubah nama tampilan. Jika
+perlu membuat sebuah kalender lokal, aplikasi bisa melakukannya dengan melakukan
+penyisipan kalender sebagai adaptor sinkronisasi, menggunakan {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} dari {@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}.
+{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} 
+adalah sebuah tipe akun khusus untuk kalender yang tidak
+terkait dengan akun perangkat. Kalender tipe ini tidak disinkronkan dengan server. Untuk
+diskusi tentang adaptor sinkronisasi, lihat <a href="#sync-adapter">Adaptor Sinkronisasi</a>.</p>
+
+<h2 id="events">Tabel Events</h2>
+
+<p>Tabel {@link android.provider.CalendarContract.Events} berisi detail
+untuk tiap kejadian. Untuk menambah, memperbarui, atau menghapus kejadian, aplikasi harus
+menyertakan izin {@link android.Manifest.permission#WRITE_CALENDAR} dalam
+<a href="#manifest">file manifesnya</a>.</p>
+
+<p>Kolom-kolom Events berikut ini bisa ditulis oleh aplikasi maupun
+adaptor sinkronisasi. Untuk mengetahui daftar lengkap bidang-bidang yang didukung, lihat acuan {@link
+android.provider.CalendarContract.Events}.</p>
+
+<table>
+  <tr>
+    <th>Konstanta</th>
+    <th>Keterangan</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#CALENDAR_ID}</td>
+    <td>{@link android.provider.BaseColumns#_ID} kalender yang dimiliki kejadian.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#ORGANIZER}</td>
+    <td>Email pengatur (pemilik) kejadian.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#TITLE}</td>
+    <td>Judul kejadian.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION}</td>
+    <td>Tempat kejadian. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION}</td>
+    <td>Keterangan kejadian.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DTSTART}</td>
+    <td>Waktu mulai kejadian dalam milidetik UTC sejak waktu patokan. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DTEND}</td>
+    <td>Waktu selesai kejadian dalam milidetik UTC sejak waktu patokan. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}</td>
+    <td>Zona waktu kejadian.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_END_TIMEZONE}</td>
+    <td>Zona waktu untuk waktu selesai kejadian.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
+    
+    <td>Durasi kejadian dalam format <a href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RFC5545</a>.
+Misalnya, nilai <code>&quot;PT1H&quot;</code> menyatakan bahwa kejadian
+akan berlangsung satu jam, dan nilai <code>&quot;P2W&quot;</code> menunjukkan
+durasi 2 minggu. </td>
+
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
+    
+    <td>Nilai 1 menunjukkan kejadian ini memakan waktu sehari penuh, seperti yang didefinisikan oleh
+zona waktu lokal. Nilai 0 menunjukkan kejadian adalah kejadian biasa yang mungkin dimulai
+dan selesai pada sembarang waktu selama suatu hari.</td>
+
+    
+  </tr>
+  
+  
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
+    
+    <td>Aturan perulangan untuk format kejadian. Misalnya,
+<code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code>. Anda bisa menemukan
+contoh selengkapnya <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">di sini</a>.</td>
+    
+  </tr>
+  
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
+    <td>Tanggal perulangan kejadian. 
+    Anda biasanya menggunakan {@link android.provider.CalendarContract.EventsColumns#RDATE} 
+    bersama dengan {@link android.provider.CalendarContract.EventsColumns#RRULE} 
+    untuk mendefinisikan satu set agregat
+kejadian berulang. Untuk diskusi selengkapnya, lihat <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.2">Spesifikasi RFC5545</a>.</td>
+</tr>
+ 
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY}</td>
+    
+    <td>Jika kejadian ini dihitung sebagai waktu sibuk atau waktu bebas yang bisa 
+dijadwalkan. </td>
+    
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
+    <td>Apakah tamu bisa memodifikasi kejadian atau tidak. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_INVITE_OTHERS}</td>
+    <td>Apakah tamu bisa mengundang tamu lain atau tidak. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_SEE_GUESTS}</td>
+    <td>Apakah tamu bisa membaca daftar peserta atau tidak.</td>
+  </tr>
+</table>
+
+<h3 id="add-event">Menambahkan Kejadian</h3>
+
+<p>Bila aplikasi Anda menyisipkan kejadian baru, sebaiknya Anda menggunakan
+Intent {@link android.content.Intent#ACTION_INSERT INSERT}, seperti dijelaskan dalam <a href="#intent-insert">Menggunakan intent untuk menyisipkan kejadian</a>. Akan tetapi, jika
+perlu, Anda bisa menyisipkan kejadian secara langsung. Bagian ini menjelaskan
+caranya.</p>
+
+
+<p>Berikut ini adalah aturan untuk menyisipkan kejadian baru: </p>
+<ul>
+
+  <li>Anda harus menyertakan {@link
+android.provider.CalendarContract.EventsColumns#CALENDAR_ID} dan {@link
+android.provider.CalendarContract.EventsColumns#DTSTART}.</li>
+
+<li>Anda harus menyertakan {@link
+android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}. Untuk mendapatkan daftar
+ID zona waktu yang diinstal pada sistem, gunakan {@link
+java.util.TimeZone#getAvailableIDs()}. Perhatikan bahwa aturan ini tidak berlaku jika
+Anda menyisipkan kejadian melalui Intent {@link
+android.content.Intent#ACTION_INSERT INSERT}, yang dijelaskan dalam <a href="#intent-insert">Menggunakan intent untuk menyisipkan kejadian</a>&mdash;dalam
+skenario itu, sebuah zona waktu default akan diberikan.</li>
+  
+  <li>Untuk kejadian tidak-berulang, Anda harus menyertakan {@link
+android.provider.CalendarContract.EventsColumns#DTEND}. </li>
+  
+  
+  <li>Untuk kejadian berulang, Anda harus menyertakan sebuah {@link
+android.provider.CalendarContract.EventsColumns#DURATION} selain {@link
+android.provider.CalendarContract.EventsColumns#RRULE} atau {@link
+android.provider.CalendarContract.EventsColumns#RDATE}. Perhatikan bahwa aturan ini tidak berlaku jika
+Anda menyisipkan kejadian melalui Intent {@link
+android.content.Intent#ACTION_INSERT INSERT}, yang dijelaskan dalam <a href="#intent-insert">Menggunakan intent untuk menyisipkan kejadian</a>&mdash;dalam
+skenario itu, Anda bisa menggunakan {@link
+android.provider.CalendarContract.EventsColumns#RRULE} bersama {@link android.provider.CalendarContract.EventsColumns#DTSTART} dan {@link android.provider.CalendarContract.EventsColumns#DTEND}, dan aplikasi Calendar 
+akan mengubahnya menjadi durasi secara otomatis.</li>
+  
+</ul>
+
+<p>Berikut ini adalah contoh penyisipan kejadian. Penyisipan ini dilakukan dalam thread UI
+demi kemudahan. Dalam praktiknya, penyisipan dan pembaruan harus dilakukan di
+thread asinkron untuk memindahkan tindakan ke dalam thread latar belakang. Untuk
+informasi selengkapnya, lihat {@link android.content.AsyncQueryHandler}.</p>
+
+
+<pre>
+long calID = 3;
+long startMillis = 0; 
+long endMillis = 0;     
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2012, 9, 14, 7, 30);
+startMillis = beginTime.getTimeInMillis();
+Calendar endTime = Calendar.getInstance();
+endTime.set(2012, 9, 14, 8, 45);
+endMillis = endTime.getTimeInMillis();
+...
+
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Events.DTSTART, startMillis);
+values.put(Events.DTEND, endMillis);
+values.put(Events.TITLE, &quot;Jazzercise&quot;);
+values.put(Events.DESCRIPTION, &quot;Group workout&quot;);
+values.put(Events.CALENDAR_ID, calID);
+values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");
+Uri uri = cr.insert(Events.CONTENT_URI, values);
+
+// get the event ID that is the last element in the Uri
+long eventID = Long.parseLong(uri.getLastPathSegment());
+// 
+// ... do something with event ID
+//
+//</pre>
+
+<p class="note"><strong>Catatan:</strong> Perhatikan cara contoh ini menangkap ID kejadian
+setelah kejadian dibuat. Inilah cara termudah untuk mendapatkan ID kejadian. Anda akan sering
+memerlukan ID kejadian untuk melakukan operasi kalender lainnya&mdash;misalnya, untuk menambahkan
+peserta atau pengingat ke kejadian.</p>
+
+
+<h3 id="update-event">Memperbarui Kejadian</h3>
+
+<p>Bila aplikasi Anda ingin memperbolehkan pengguna mengedit kejadian, sebaiknya
+gunakan Intent {@link android.content.Intent#ACTION_EDIT EDIT}, seperti
+dijelaskan dalam <a href="#intent-edit">Menggunakan intent untuk mengedit kejadian</a>.
+Akan tetapi, jika perlu, Anda bisa mengedit kejadian secara langsung. Untuk melakukan pembaruan
+suatu kejadian, Anda bisa memberikan <code>_ID</code> 
+kejadian itu sebagai ID yang ditambahkan ke URI ({@link
+android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 
+atau sebagai item pemilihan pertama. 
+Pemilihan harus dimulai dengan <code>&quot;_id=?&quot;</code>, dan
+<code>selectionArg</code> yang pertama harus berupa <code>_ID</code> kejadian. Anda juga bisa
+melakukan pembaruan dengan menggunakan pemilihan tanpa ID. Berikut ini adalah contoh pembaruan
+kejadian. Contoh ini mengubah judul kejadian dengan pendekatan 
+{@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}
+:</p>
+
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long eventID = 188;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+Uri updateUri = null;
+// The new title for the event
+values.put(Events.TITLE, &quot;Kickboxing&quot;); 
+updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+int rows = getContentResolver().update(updateUri, values, null, null);
+Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);  </pre>
+
+<h3 id="delete-event">Menghapus Kejadian</h3>
+
+<p>Anda bisa menghapus kejadian dengan {@link
+android.provider.BaseColumns#_ID} sebagai ID yang ditambahkan pada URI, atau dengan
+pemilihan standar. Jika Anda menggunakan ID yang ditambahkan, Anda tidak bisa melakukan pemilihan.
+Ada dua versi penghapusan: sebagai aplikasi dan sebagai adaptor sinkronisasi. Penghapusan
+aplikasi mengatur kolom yang <em>dihapus</em> ke 1. Flag ini yang memberi tahu
+adaptor sinkronisasi bahwa baris telah dihapus dan bahwa penghapusan ini harus
+diberitahukan ke server. Penghapusan adaptor sinkronisasi menghapus kejadian dari
+database bersama semua data terkaitnya. Berikut ini adalah contoh aplikasi
+yang menghapus kejadian melalui {@link android.provider.BaseColumns#_ID}-nya:</p>
+
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long eventID = 201;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+Uri deleteUri = null;
+deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+int rows = getContentResolver().delete(deleteUri, null, null);
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);  
+</pre>
+
+<h2 id="attendees">Tabel Peserta</h2>
+
+<p>Tiap baris tabel {@link android.provider.CalendarContract.Attendees}
+mewakili satu peserta atau tamu dari sebuah kejadian. Memanggil 
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} 
+akan menghasilkan daftar peserta untuk
+kejadian dengan {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} yang diberikan. 
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} ini 
+harus cocok dengan {@link
+android.provider.BaseColumns#_ID} kejadian tertentu.</p> 
+
+<p>Tabel berikut mencantumkan
+bidang-bidang yang bisa ditulis. Saat menyisipkan peserta baru, Anda harus menyertakan semuanya 
+kecuali <code>ATTENDEE_NAME</code>.
+</p>
+
+
+<table>
+  <tr>
+    <th>Konstanta</th>
+    <th>Keterangan</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}</td>
+    <td>ID kejadian.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_NAME}</td>
+    <td>Nama peserta.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_EMAIL}</td>
+    <td>Alamat email peserta.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_RELATIONSHIP}</td>
+    <td><p>Hubungan peserta dengan kejadian. Salah satu dari:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_ATTENDEE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_NONE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_ORGANIZER}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_PERFORMER}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_SPEAKER}</li>
+    </ul>
+    </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_TYPE}</td>
+    <td><p>Tipe peserta. Salah satu dari: </p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#TYPE_REQUIRED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#TYPE_OPTIONAL}</li>
+    </ul></td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS}</td>
+    <td><p>Status kehadiran peserta. Salah satu dari:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_ACCEPTED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_DECLINED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_INVITED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_NONE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_TENTATIVE}</li>
+    </ul></td>
+  </tr>
+</table>
+
+<h3 id="add-attendees">Menambahkan Peserta</h3>
+
+<p>Berikut ini adalah contoh yang menambahkan satu peserta ke kejadian. Perhatikan bahwa
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 
+diperlukan:</p>
+
+<pre>
+long eventID = 202;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Attendees.ATTENDEE_NAME, &quot;Trevor&quot;);
+values.put(Attendees.ATTENDEE_EMAIL, &quot;trevor@example.com&quot;);
+values.put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ATTENDEE);
+values.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_OPTIONAL);
+values.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_INVITED);
+values.put(Attendees.EVENT_ID, eventID);
+Uri uri = cr.insert(Attendees.CONTENT_URI, values);
+</pre>
+
+<h2 id="reminders">Tabel Pengingat</h2>
+
+<p>Tiap baris tabel {@link android.provider.CalendarContract.Reminders}
+mewakili satu pengingat untuk sebuah kejadian. Memanggil 
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} akan menghasilkan daftar pengingat untuk
+kejadian dengan 
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} yang diberikan.</p>
+
+
+<p>Tabel berikut mencantumkan bidang-bidang yang bisa ditulis untuk pengingat. Semua bidang harus
+disertakan saat menyisipkan pengingat baru. Perhatikan bahwa adaptor sinkronisasi menetapkan
+tipe pengingat yang didukungnya dalam tabel {@link
+android.provider.CalendarContract.Calendars}. Lihat 
+{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS} 
+untuk detailnya.</p>
+
+
+<table>
+  <tr>
+    <th>Konstanta</th>
+    <th>Keterangan</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#EVENT_ID}</td>
+    <td>ID kejadian.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#MINUTES}</td>
+    <td>Menit yang ditunggu untuk memicu kejadian pengingat.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#METHOD}</td>
+    <td><p>Metode alarm, seperti yang diatur pada server. Salah satu dari:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_ALERT}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_DEFAULT}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_EMAIL}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_SMS}</li>
+    </ul></td>
+  </tr>
+</table>
+
+<h3 id="add-reminders">Menambahkan Pengingat</h3>
+
+<p>Contoh ini menambahkan pengingat ke kejadian. Pengingat dipicu 15
+menit sebelum kejadian.</p>
+<pre>
+long eventID = 221;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Reminders.MINUTES, 15);
+values.put(Reminders.EVENT_ID, eventID);
+values.put(Reminders.METHOD, Reminders.METHOD_ALERT);
+Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
+
+<h2 id="instances">Tabel Instances</h2>
+
+<p>Tabel 
+{@link android.provider.CalendarContract.Instances} menyimpan
+waktu mulai dan waktu selesai kejadian. Tiap baris dalam tabel ini
+mewakili satu bentuk kejadian. Tabel instance tidak bisa ditulis dan hanya
+menyediakan sebuah cara untuk membuat query kejadian. </p>
+
+<p>Tabel berikut mencantumkan beberapa bidang yang bisa Anda query untuk suatu instance. Perhatikan 
+bahwa zona waktu didefinisikan oleh 
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE} 
+dan 
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES}.</p>
+
+
+<table>
+  <tr>
+    <th>Konstanta</th>
+    <th>Keterangan</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#BEGIN}</td>
+    <td>Waktu mulai instance, dalam milidetik UTC.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END}</td>
+    <td>Waktu selesai instance, dalam milidetik UTC.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
+    
+    <td>Hari selesai Julian dari instance, relatif terhadap
+zona waktu Kalender. 
+    
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
+    
+    <td>Menit selesai dari instance yang diukur dari tengah malam di zona waktu
+Kalender.</td>
+    
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
+    <td>Kejadian <code>_ID</code> untuk instance ini.</td>
+  </tr>
+    <tr>
+    <td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
+    <td>Hari mulai Julian dari instance, relatif terhadap zona waktu Kalender. 
+ </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
+    
+    <td>Menit mulai dari instance yang diukur dari tengah malam, relatif terhadap
+zona waktu Kalender. 
+</td>
+    
+  </tr>
+
+</table>
+
+<h3 id="query-instances">Membuat query tabel Instance</h3>
+
+<p>Untuk membuat query tabel Instances, Anda perlu menetapkan rentang waktu query
+dalam URI. Dalam contoh ini, {@link android.provider.CalendarContract.Instances}
+mendapatkan akses ke bidang {@link
+android.provider.CalendarContract.EventsColumns#TITLE} melalui
+implementasi antarmuka {@link android.provider.CalendarContract.EventsColumns}-nya. 
+Dengan kata lain, {@link
+android.provider.CalendarContract.EventsColumns#TITLE} dihasilkan melalui
+tampilan database, bukan melalui query terhadap tabel {@link
+android.provider.CalendarContract.Instances} mentah.</p>
+
+<pre>
+private static final String DEBUG_TAG = "MyActivity";
+public static final String[] INSTANCE_PROJECTION = new String[] {
+    Instances.EVENT_ID,      // 0
+    Instances.BEGIN,         // 1
+    Instances.TITLE          // 2
+  };
+  
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_BEGIN_INDEX = 1;
+private static final int PROJECTION_TITLE_INDEX = 2;
+...
+
+// Specify the date range you want to search for recurring
+// event instances
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2011, 9, 23, 8, 0);
+long startMillis = beginTime.getTimeInMillis();
+Calendar endTime = Calendar.getInstance();
+endTime.set(2011, 10, 24, 8, 0);
+long endMillis = endTime.getTimeInMillis();
+  
+Cursor cur = null;
+ContentResolver cr = getContentResolver();
+
+// The ID of the recurring event whose instances you are searching
+// for in the Instances table
+String selection = Instances.EVENT_ID + " = ?";
+String[] selectionArgs = new String[] {"207"};
+
+// Construct the query with the desired date range.
+Uri.Builder builder = Instances.CONTENT_URI.buildUpon();
+ContentUris.appendId(builder, startMillis);
+ContentUris.appendId(builder, endMillis);
+
+// Submit the query
+cur =  cr.query(builder.build(), 
+    INSTANCE_PROJECTION, 
+    selection, 
+    selectionArgs, 
+    null);
+   
+while (cur.moveToNext()) {
+    String title = null;
+    long eventID = 0;
+    long beginVal = 0;    
+    
+    // Get the field values
+    eventID = cur.getLong(PROJECTION_ID_INDEX);
+    beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
+    title = cur.getString(PROJECTION_TITLE_INDEX);
+              
+    // Do something with the values. 
+    Log.i(DEBUG_TAG, "Event:  " + title); 
+    Calendar calendar = Calendar.getInstance();
+    calendar.setTimeInMillis(beginVal);  
+    DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
+    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));    
+    }
+ }</pre>
+
+<h2 id="intents">Intent Kalender</h2>
+<p>Aplikasi Anda tidak memerlukan <a href="#manifest">izin</a> untuk membaca dan menulis data kalender. Sebagai gantinya, aplikasi bisa menggunakan intent yang didukung oleh aplikasi Kalender Android untuk menyerahkan operasi baca dan tulis ke aplikasi itu. Tabel berikut mencantumkan intent yang didukung oleh Penyedia Kalender:</p>
+<table>
+  <tr>
+    <th>Tindakan</th>
+    <th>URI</th>
+
+    <th>Keterangan</th>
+    <th>Ekstra</th>
+  </tr>
+  <tr>
+    <td><br>
+    {@link android.content.Intent#ACTION_VIEW VIEW} <br></td>
+    <td><p><code>content://com.android.calendar/time/&lt;ms_since_epoch&gt;</code></p>
+    Anda juga bisa mengacu ke URI dengan 
+{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}. 
+Untuk contoh yang menggunakan intent ini, lihat <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Menggunakan intent untuk menampilkan data kalender</a>. 
+
+    </td>
+    <td>Membuka kalender pada waktu yang ditetapkan oleh <code>&lt;ms_since_epoch&gt;</code>.</td>
+    <td>Tidak ada.</td>
+  </tr>
+  <tr>
+    <td><p>{@link android.content.Intent#ACTION_VIEW VIEW} </p>
+
+     </td>
+    <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
+    
+    Anda juga bisa mengacu ke URI dengan 
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}. 
+Untuk contoh yang menggunakan intent ini, lihat <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Menggunakan intent untuk menampilkan data kalender</a>.
+    
+    </td>
+    <td>Menampilkan kejadian yang ditetapkan oleh <code>&lt;event_id&gt;</code>.</td>
+
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}<br>
+      <br>
+      <br>
+    {@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}</td>
+  </tr>
+
+  <tr>
+    <td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
+    <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
+    
+  Anda juga bisa mengacu ke URI dengan 
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}. 
+Untuk contoh penggunaan intent ini, lihat <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">Menggunakan intent untuk mengedit kejadian</a>.
+    
+    
+    </td>
+    <td>Mengedit kejadian yang ditetapkan oleh <code>&lt;event_id&gt;</code>.</td>
+
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}<br>
+      <br>
+      <br>
+    {@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}</td>
+  </tr>
+
+  <tr>
+    <td>{@link android.content.Intent#ACTION_EDIT EDIT} <br>
+    <br>
+    {@link android.content.Intent#ACTION_INSERT INSERT} </td>
+    <td><p><code>content://com.android.calendar/events</code></p>
+    
+   Anda juga bisa mengacu ke URI dengan 
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}. 
+Untuk contoh penggunaan intent ini, lihat <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">Menggunakan intent untuk menyisipkan kejadian</a>.
+    
+    </td>
+
+    <td>Membuat sebuah kejadian.</td>
+    <td>Ekstra apa saja yang tercantum dalam tabel di bawah.</td>
+  </tr>
+</table>
+
+<p>Tabel berikut mencantumkan ekstra intent yang didukung oleh Penyedia Kalender:
+</p>
+<table>
+  <tr>
+    <th>Ekstra Intent</th>
+    <th>Keterangan</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#TITLE Events.TITLE}</td>
+    <td>Nama kejadian.</td>
+  </tr>
+  <tr>
+  
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
+CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
+    <td>Waktu mulai kejadian dalam milidetik sejak waktu patokan.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME
+CalendarContract.EXTRA_EVENT_END_TIME}</td>
+    
+    <td>Waktu selesai kejadian dalam milidetik sejak waktu patokan.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY
+CalendarContract.EXTRA_EVENT_ALL_DAY}</td>
+    
+    <td>Sebuah boolean yang menunjukkan bahwa kejadian sehari penuh. Nilai bisa
+<code>true</code> atau <code>false</code>.</td> </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION
+Events.EVENT_LOCATION}</td>
+    
+    <td>Lokasi kejadian.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION
+Events.DESCRIPTION}</td>
+    
+    <td>Keterangan kejadian.</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}</td>
+    <td>Alamat email mereka yang harus diundang berupa daftar yang dipisahkan koma.</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.provider.CalendarContract.EventsColumns#RRULE Events.RRULE}</td>
+    <td>Aturan perulangan kejadian.</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL
+Events.ACCESS_LEVEL}</td>
+    
+    <td>Apakah kejadian bersifat privat atau publik.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY
+Events.AVAILABILITY}</td>
+    
+    <td>Jika kejadian ini dihitung sebagai waktu sibuk atau waktu bebas yang bisa dijadwalkan.</td>
+    
+</table> 
+<p>Bagian berikut menjelaskan cara menggunakan semua intent ini.</p>
+
+
+<h3 id="intent-insert">Menggunakan intent untuk menyisipkan kejadian</h3>
+
+<p>Penggunaan Intent {@link android.content.Intent#ACTION_INSERT INSERT}
+akan memungkinkan aplikasi Anda menyerahkan tugas penyisipan kejadian ke Kalender itu sendiri.
+Dengan pendekatan ini, aplikasi Anda bahkan tidak perlu menyertakan izin {@link
+android.Manifest.permission#WRITE_CALENDAR} dalam <a href="#manifest">file manifesnya</a>.</p>
+
+  
+<p>Bila pengguna menjalankan aplikasi yang menggunakan pendekatan ini, aplikasi akan mengirim
+izin ke Kalender untuk menyelesaikan penambahan kejadian. Intent {@link
+android.content.Intent#ACTION_INSERT INSERT} menggunakan bidang-bidang ekstra
+untuk mengisi formulir lebih dahulu dengan detail kejadian dalam Kalender. Pengguna nanti bisa
+membatalkan kejadian, mengedit formulir sebagaimana diperlukan, atau menyimpan kejadian ke
+kalender mereka.</p>
+  
+
+
+<p>Berikut ini adalah cuplikan kode yang menjadwalkan kejadian pada tanggal 19 Januari 2012, yang berjalan
+dari 7:30 pagi hingga 8:30 pagi Perhatikan hal-hal berikut tentang cuplikan kode ini:</p>
+
+<ul>
+  <li>Cuplikan kode ini menetapkan {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} 
+  sebagai URI-nya.</li>
+  
+  <li>Cuplikan kode ini menggunakan bidang-bidang ekstra {@link
+android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
+CalendarContract.EXTRA_EVENT_BEGIN_TIME} dan {@link
+android.provider.CalendarContract#EXTRA_EVENT_END_TIME
+CalendarContract.EXTRA_EVENT_END_TIME} untuk mengisi dahulu formulir
+dengan waktu kejadian. Nilai-nilai untuk waktu ini harus dalam milidetik UTC
+sejak waktu patokan.</li>
+  
+  <li>Cuplikan kode ini menggunakan bidang ekstra {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}
+untuk memberikan daftar undangan yang dipisah koma, yang ditetapkan melalui alamat email.</li>
+  
+</ul>
+<pre>
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2012, 0, 19, 7, 30);
+Calendar endTime = Calendar.getInstance();
+endTime.set(2012, 0, 19, 8, 30);
+Intent intent = new Intent(Intent.ACTION_INSERT)
+        .setData(Events.CONTENT_URI)
+        .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())
+        .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis())
+        .putExtra(Events.TITLE, &quot;Yoga&quot;)
+        .putExtra(Events.DESCRIPTION, &quot;Group class&quot;)
+        .putExtra(Events.EVENT_LOCATION, &quot;The gym&quot;)
+        .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY)
+        .putExtra(Intent.EXTRA_EMAIL, &quot;rowan@example.com,trevor@example.com&quot;);
+startActivity(intent);
+</pre>
+
+<h3 id="intent-edit">Menggunakan intent untuk mengedit kejadian</h3>
+
+<p>Anda bisa memperbarui kejadian secara langsung, seperti dijelaskan dalam <a href="#update-event">Memperbarui kejadian</a>. Namun penggunaan Intent {@link
+android.content.Intent#ACTION_EDIT EDIT} memungkinkan aplikasi yang
+tidak memiliki izin untuk menyerahkan pengeditan kejadian ke aplikasi Kalender.
+Bila pengguna selesai mengedit kejadian dalam Kalender, pengguna akan dikembalikan ke
+aplikasi semula.</p> <p>Berikut ini adalah contoh intent yang mengatur
+judul baru bagi kejadian yang ditetapkan dan memungkinkan pengguna mengedit kejadian dalam Kalender.</p>
+
+
+<pre>long eventID = 208;
+Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+Intent intent = new Intent(Intent.ACTION_EDIT)
+    .setData(uri)
+    .putExtra(Events.TITLE, &quot;My New Title&quot;);
+startActivity(intent);</pre>
+
+<h3 id="intent-view">Menggunakan intent untuk menampilkan data kalender</h3>
+<p>Penyedia Kalender menyediakan dua cara menggunakan Intent {@link android.content.Intent#ACTION_VIEW VIEW}:</p>
+<ul>
+  <li>Untuk membuka Kalender pada tanggal tertentu.</li>
+  <li>Untuk menampilkan sebuah kejadian.</li>
+
+</ul>
+<p>Berikut ini adalah contoh yang menampilkan cara membuka Kalender pada tanggal tertentu:</p>
+<pre>// A date-time specified in milliseconds since the epoch.
+long startMillis;
+...
+Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
+builder.appendPath(&quot;time&quot;);
+ContentUris.appendId(builder, startMillis);
+Intent intent = new Intent(Intent.ACTION_VIEW)
+    .setData(builder.build());
+startActivity(intent);</pre>
+
+<p>Berikut ini adalah contoh yang menampilkan cara membuka kejadian untuk menampilkan:</p>
+<pre>long eventID = 208;
+...
+Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+Intent intent = new Intent(Intent.ACTION_VIEW)
+   .setData(uri);
+startActivity(intent);
+</pre>
+
+
+<h2 id="sync-adapter">Adaptor Sinkronisasi</h2>
+
+
+<p>Hanya ada perbedaan kecil dalam cara aplikasi dan adaptor sinkronisasi
+mengakses Penyedia Kalender:</p>
+
+<ul>
+  <li>Adaptor sinkronisasi perlu menetapkan bahwa dirinya sebuah adaptor sinkronisasi dengan mengatur {@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER} ke <code>true</code>.</li>
+  
+  
+  <li>Adaptor sinkronisasi perlu memberikan {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME} dan {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} sebagai parameter query dalam URI. </li>
+  
+  <li>Adaptor sinkronisasi memiliki akses tulis ke lebih banyak kolom daripada aplikasi atau widget.
+  Misalnya, aplikasi hanya bisa mengubah sedikit karakteristik kalender, 
+  misalnya nama, nama tampilan, pengaturan visibilitas, dan apakah kalender
+  disinkronkan atau tidak. Sebagai perbandingan, adaptor sinkronisasi bisa mengakses bukan hanya kolom-kolom itu, namun banyak kolom lainnya,
+  misalnya warna kalender, zona waktu, tingkat akses, lokasi, dan seterusnya.
+Akan tetapi, adaptor sinkronisasi dibatasi pada <code>ACCOUNT_NAME</code> dan 
+<code>ACCOUNT_TYPE</code> yang ditetapkannya.</li> </ul>
+
+<p>Berikut ini adalah metode pembantu yang bisa Anda gunakan untuk menghasilkan URI bagi penggunaan dengan adaptor sinkronisasi:</p>
+<pre> static Uri asSyncAdapter(Uri uri, String account, String accountType) {
+    return uri.buildUpon()
+        .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,&quot;true&quot;)
+        .appendQueryParameter(Calendars.ACCOUNT_NAME, account)
+        .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
+ }
+</pre>
+<p>Untuk contoh implementasi adaptor sinkronisasi (yang tidak terkait secara khusus dengan Kalender), lihat 
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>.
diff --git a/docs/html-intl/intl/in/guide/topics/providers/contacts-provider.jd b/docs/html-intl/intl/in/guide/topics/providers/contacts-provider.jd
new file mode 100644
index 0000000..994c56b
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/providers/contacts-provider.jd
@@ -0,0 +1,2356 @@
+page.title=Penyedia Kontak
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Tampilan Cepat</h2>
+<ul>
+    <li>Repository informasi Android tentang orang.</li>
+    <li>
+        Sinkronisasi dengan web.
+    </li>
+    <li>
+        Mengintegrasikan data aliran sosial.
+    </li>
+</ul>
+<h2>Dalam dokumen ini</h2>
+<ol>
+    <li>
+        <a href="#InformationTypes">Organisasi Penyedia Kontak</a>
+    </li>
+    <li>
+        <a href="#RawContactBasics">Kontak mentah</a>
+    </li>
+    <li>
+        <a href="#DataBasics">Data</a>
+    </li>
+    <li>
+        <a href="#ContactBasics">Kontak</a>
+    </li>
+    <li>
+        <a href="#Sources">Data Dari Adaptor Sinkronisasi</a>
+    </li>
+    <li>
+        <a href="#Permissions">Izin yang Diperlukan</a>
+    </li>
+    <li>
+        <a href="#UserProfile">Profil Pengguna</a>
+    </li>
+    <li>
+        <a href="#ContactsProviderMetadata">Metadata Penyedia Kontak</a>
+    </li>
+    <li>
+        <a href="#Access">Akses Penyedia Kontak</a>
+    <li>
+    </li>
+    <li>
+        <a href="#SyncAdapters">Adaptor Sinkronisasi Penyedia Kontak</a>
+    </li>
+    <li>
+        <a href="#SocialStream">Data Aliran Sosial</a>
+    </li>
+    <li>
+        <a href="#AdditionalFeatures">Fitur Tambahan Penyedia Kontak</a>
+    </li>
+</ol>
+<h2>Kelas-kelas utama</h2>
+<ol>
+    <li>{@link android.provider.ContactsContract.Contacts}</li>
+    <li>{@link android.provider.ContactsContract.RawContacts}</li>
+    <li>{@link android.provider.ContactsContract.Data}</li>
+    <li>{@code android.provider.ContactsContract.StreamItems}</li>
+</ol>
+<h2>Contoh-Contoh Terkait</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}resources/samples/ContactManager/index.html">
+        Contact Manager
+        </a>
+    </li>
+    <li>
+        <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+        Contoh Adaptor Sinkronisasi</a>
+    </li>
+</ol>
+<h2>Lihat Juga</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        Dasar-Dasar Penyedia Konten
+        </a>
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    Penyedia Kontak adalah komponen Android yang tangguh dan fleksibel dalam mengelola
+ repository data pusat tentang orang di perangkat. Penyedia Kontak adalah sumber data
+ yang Anda lihat dalam aplikasi kontak perangkat, dan Anda juga bisa mengakses datanya dalam aplikasi
+    Anda sendiri serta mentransfer data antara perangkat dan layanan online. Penyedia mengakomodasi
+    berbagai sumber data dan mencoba mengelola data sebanyak mungkin untuk setiap orang, sehingga
+   organisasinya menjadi kompleks. Karena itu, API penyedia menyertakan
+    satu set kelas kontrak dan antarmuka ekstensif yang membantu pengambilan dan
+    modifikasi data.
+</p>
+<p>
+    Panduan ini menjelaskan hal-hal berikut:
+</p>
+    <ul>
+        <li>
+            Struktur penyedia dasar.
+        </li>
+        <li>
+            Cara mengambil data dari penyedia.
+        </li>
+        <li>
+            Cara memodifikasi data di penyedia.
+        </li>
+        <li>
+            Cara menulis adaptor sinkronisasi untuk menyinkronkan data dari server Anda ke
+            Penyedia Kontak.
+        </li>
+    </ul>
+<p>
+    Panduan ini beranggapan bahwa Anda mengetahui dasar-dasar penyedia konten Android. Untuk mengetahui selengkapnya
+    tentang penyedia konten Android, bacalah
+    panduan<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+    Dasar-Dasar Penyedia Konten</a>. Contoh aplikasi
+    <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">Sample Sync Adapter</a>
+    adalah contoh penggunaan adaptor sinkronisasi untuk mentransfer data antara Penyedia Kontak
+    dan contoh aplikasi yang memiliki host di Google Web Services.
+</p>
+<h2 id="InformationTypes">Organisasi Penyedia Kontak</h2>
+<p>
+    Penyedia Kontak adalah komponen penyedia konten Android. Komponen ini memelihara tiga tipe
+    data tentang seseorang, masing-masing disesuaikan dengan tabel yang ditawarkan oleh penyedia, seperti
+    yang terlihat dalam gambar 1:
+</p>
+<img src="{@docRoot}images/providers/contacts_structure.png" alt="" height="364" id="figure1" />
+<p class="img-caption">
+  <strong>Gambar 1.</strong> Struktur tabel Penyedia Kontak.
+</p>
+<p>
+    Ketiga tabel disebut secara umum menurut nama kelas kontrak. Kelas
+    mendefinisikan konstanta untuk URI konten, nama kolom, dan nilai kolom yang digunakan oleh tabel-tabel:
+</p>
+<dl>
+    <dt>
+        Tabel {@link android.provider.ContactsContract.Contacts}
+    </dt>
+    <dd>
+        Baris mewakili orang yang berbeda, berdasarkan agregrasi baris kontak mentah.
+    </dd>
+    <dt>
+        Tabel {@link android.provider.ContactsContract.RawContacts}
+    </dt>
+    <dd>
+        Baris berisi rangkuman data seseorang, untuk tipe dan akun pengguna tertentu.
+    </dd>
+    <dt>
+        Tabel {@link android.provider.ContactsContract.Data}
+    </dt>
+    <dd>
+        Baris berisi data untuk kontak mentah, seperti alamat email atau nomor telepon.
+    </dd>
+</dl>
+<p>
+    Tabel lain yang diwakili oleh kelas kontrak dalam {@link android.provider.ContactsContract}
+    adalah tabel tambahan yang digunakan Penyedia Kontak untuk mengelola operasinya atau mendukung
+    fungsi tertentu dalam kontak atau aplikasi telepon perangkat.
+</p>
+<h2 id="RawContactBasics">Kontak mentah</h2>
+<p>
+    Kontak mentah mewakili data seseorang yang berasal dari satu tipe akun dan nama
+  akun. Karena Penyedia Kontak memungkinkan lebih dari satu layanan online sebagai sumber
+    data untuk satu orang, Penyedia Kontak memungkinkan multikontak mentah untuk orang yang sama.
+    Multikontak mentah juga memungkinkan seorang pengguna mengombinasikan data seseorang dari lebih dari satu akun
+    bertipe akun yang sama.
+</p>
+<p>
+    Sebagian besar data untuk kontak mentah tidak disimpan dalam
+    tabel {@link android.provider.ContactsContract.RawContacts}. Sebagai gantinya, data tersebut disimpan dalam satu atau beberapa baris
+    dalam tabel {@link android.provider.ContactsContract.Data}. Setiap baris data memiliki kolom
+    {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID Data.RAW_CONTACT_ID} yang
+    berisi nilai {@code android.provider.BaseColumns#_ID RawContacts._ID} dari
+    baris {@link android.provider.ContactsContract.RawContacts} induknya.
+</p>
+<h3 id="RawContactsColumns">Kolom-kolom kontak mentah yang penting</h3>
+<p>
+    Kolom-kolom penting dalam tabel {@link android.provider.ContactsContract.RawContacts}
+    tercantum pada tabel 1. Bacalah catatan yang diberikan setelah tabel:
+</p>
+<p class="table-caption" id="table1">
+    <strong>Tabel 1.</strong> Kolom-kolom kontak mentah yang penting.
+</p>
+<table>
+    <tr>
+        <th scope="col">Nama kolom</th>
+        <th scope="col">Kegunaan</th>
+        <th scope="col">Catatan</th>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_NAME}
+        </td>
+        <td>
+            Nama akun untuk tipe akun yang merupakan sumber kontak mentah ini.
+            Misalnya, nama akun dari akun Google adalah salah satu alamat Gmail
+   pemilik perangkat. Lihat entri berikutnya untuk
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE} untuk informasi
+            selengkapnya.
+        </td>
+        <td>
+            Format nama ini khusus untuk tipe akun ini. Format ini tidak
+            harus alamat email.
+        </td>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}
+        </td>
+        <td>
+            Tipe akun yang merupakan sumber kontak mentah ini. Misalnya, tipe
+           akun dari akun Google adalah <code>com.google</code>. Selalu batasi tipe akun Anda
+            dengan identifier domain untuk domain yang Anda miliki atau kontrol. Hal ini akan memastikan bahwa tipe
+            akun Anda bersifat unik.
+        </td>
+        <td>
+            Tipe akun yang menawarkan data kontak biasanya memiliki adaptor sinkronisasi terkait yang
+            menyinkronkan dengan Penyedia Kontak.
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.RawContactsColumns#DELETED}
+        </td>
+        <td>
+            Flag "deleted" untuk kontak mentah.
+        </td>
+        <td>
+            Flag ini memungkinkan Penyedia Kontak memelihara baris secara internal hingga adaptor
+            sinkronisasi bisa menghapus baris dari server mereka dan akhirnya menghapus baris
+            dari repository.
+        </td>
+    </tr>
+</table>
+<h4>Catatan</h4>
+<p>
+    Berikut ini adalah catatan penting tentang
+    tabel {@link android.provider.ContactsContract.RawContacts}:
+</p>
+<ul>
+    <li>
+        Nama kontak mentah tidak disimpan di barisnya dalam
+        {@link android.provider.ContactsContract.RawContacts}. Sebagai gantinya, nama tersebut disimpan dalam
+         tabel {@link android.provider.ContactsContract.Data}, pada
+        baris {@link android.provider.ContactsContract.CommonDataKinds.StructuredName}. Kontak mentah
+        hanya memiliki satu baris dari tipe ini dalam tabel {@link android.provider.ContactsContract.Data}.
+    </li>
+    <li>
+        <strong>Perhatian:</strong> Untuk menggunakan data akun sendiri dalam baris kontak mentah, akun harus
+        didaftarkan lebih dahulu dengan {@link android.accounts.AccountManager}. Caranya, mintalah
+        pengguna untuk menambahkan tipe akun dan nama akun ke dalam daftar akun. Jika Anda tidak
+        melakukannya, Penyedia Kontak secara otomatis akan menghapus baris kontak mentah Anda.
+        <p>
+            Misalnya, Anda menginginkan aplikasi memelihara data kontak untuk layanan berbasis web
+            dengan domain {@code com.example.dataservice}, dan akun pengguna untuk layanan Anda
+            adalah {@code becky.sharp@dataservice.example.com}, pengguna harus menambahkan lebih dahulu "type"
+            akun ({@code com.example.dataservice}) dan "name" akun
+            ({@code becky.smart@dataservice.example.com}) sebelum aplikasi Anda bisa menambahkan baris kontak mentah.
+            Anda bisa menjelaskan ketentuan ini kepada pengguna dalam dokumentasi, atau meminta
+            pengguna untuk menambahkan tipe dan nama, atau keduanya. Tipe akun dan nama akun
+            dijelaskan lebih detail di bagian berikutnya.
+    </li>
+</ul>
+<h3 id="RawContactsExample">Sumber data kontak mentah</h3>
+<p>
+    Untuk memahami cara kerja kontak mentah, perhatikan pengguna "Emily Dickinson" yang mendefinisikan
+    tiga akun pengguna berikut pada perangkatnya:
+</p>
+<ul>
+    <li><code>emily.dickinson@gmail.com</code></li>
+    <li><code>emilyd@gmail.com</code></li>
+    <li>Akun Twitter "belle_of_amherst"</li>
+</ul>
+<p>
+    Pengguna ini telah mengaktifkan <em>Sync Contacts</em> untuk ketiga akun dalam pengaturan
+    <em>Accounts</em>.
+</p>
+<p>
+    Anggaplah Emily Dickinson membuka jendela browser, masuk ke Gmail sebagai
+    <code>emily.dickinson@gmail.com</code>, membuka
+    Contacts, dan menambahkan "Thomas Higginson". Kemudian, ia masuk ke Gmail sebagai
+    <code>emilyd@gmail.com</code> dan mengirimkan email kepada "Thomas Higginson", yang
+    menambahkan Thomas secara otomatis sebagai kontak. Ia juga mengikuti "colonel_tom" (ID Twitter Thomas Higginson) di
+    Twitter.
+</p>
+<p>
+    Penyedia Kontak membuat tiga kontak mentah akibat pekerjaan ini:
+</p>
+<ol>
+    <li>
+        Kontak mentah untuk "Thomas Higginson" yang dikaitkan dengan <code>emily.dickinson@gmail.com</code>.
+        Tipe akun penggunanya adalah Google.
+    </li>
+    <li>
+        Kontak mentah kedua untuk "Thomas Higginson" yang dikaitkan dengan <code>emilyd@gmail.com</code>.
+        Tipe akun pengguna juga Google. Ada kontak mentah kedua
+       meskipun nama tersebut identik dengan nama sebelumnya karena orang bersangkutan ditambahkan untuk
+        akun pengguna yang berbeda.
+    </li>
+    <li>
+        Kontak mentah ketiga untuk "Thomas Higginson" yang dikaitkan dengan "belle_of_amherst". Tipe
+        akun penggunanya adalah Twitter.
+    </li>
+</ol>
+<h2 id="DataBasics">Data</h2>
+<p>
+    Seperti yang telah disebutkan, data untuk kontak mentah disimpan dalam
+    baris {@link android.provider.ContactsContract.Data} yang ditautkan dengan nilai
+    <code>_ID</code> kontak mentah. Cara ini memungkinkan satu kontak mentah memiliki beberapa instance tipe data
+    yang sama dengan alamat email atau nomor telepon. Misalnya, jika
+    "Thomas Higginson" untuk {@code emilyd@gmail.com} (baris kontak mentah untuk Thomas Higginson
+   yang dikaitkan dengan akun Google <code>emilyd@gmail.com</code>) memiliki alamat email rumah
+    <code>thigg@gmail.com</code> dan alamat email kerja
+    <code>thomas.higginson@gmail.com</code>, Penyedia Kontak akan menyimpan dua baris alamat
+    email dan menautkan keduanya ke kontak mentah.
+</p>
+<p>
+    Perhatikan bahwa tipe data yang berbeda disimpan dalam satu tabel ini. Baris-baris nama tampilan,
+    nomor telepon, email, alamat surat, foto, dan data situs web semuanya bisa ditemukan dalam
+    tabel {@link android.provider.ContactsContract.Data}. Untuk membantu mengelola ini,
+    tabel {@link android.provider.ContactsContract.Data} memiliki beberapa kolom dengan nama deskriptif,
+    dalam kolom lain dengan nama generik. Konten kolom bernama deskriptif memiliki arti yang sama
+    terlepas dari tipe data dalam barisnya, sedangkan konten kolom bernama generik memiliki
+    arti yang berbeda-beda sesuai dengan tipe data.
+</p>
+<h3 id="DescriptiveColumns">Nama kolom deskriptif</h3>
+<p>
+    Beberapa contoh nama kolom deskriptif adalah:
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.Data#RAW_CONTACT_ID}
+    </dt>
+    <dd>
+        Nilai kolom <code>_ID</code> kontak mentah untuk data ini.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.Data#MIMETYPE}
+    </dt>
+    <dd>
+        Tipe data yang disimpan dalam baris ini, dinyatakan berupa tipe MIME custom. Penyedia Kontak
+        menggunakan tipe MIME yang didefinisikan dalam subkelas
+        {@link android.provider.ContactsContract.CommonDataKinds}. Tipe MIME ini adalah sumber terbuka,
+        dan bisa digunakan oleh setiap aplikasi atau adaptor sinkronisasi yang bisa digunakan bersama Penyedia Kontak.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY}
+    </dt>
+    <dd>
+        Jika tipe baris data ini bisa terjadi lebih dari satu kali untuk suatu kontak mentah,
+        kolom {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY}
+        menandai baris data yang berisi data utama untuk tipe itu. Misalnya, jika
+        pengguna menekan lama sebuah nomor telepon untuk kontak dan memilih <strong>Set default</strong>,
+       maka baris {@link android.provider.ContactsContract.Data} yang berisi angka itu
+        mengatur kolom {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY}-nya ke suatu
+        nilai bukan nol.
+    </dd>
+</dl>
+<h3 id="GenericColumns">Nama kolom generik</h3>
+<p>
+    Ada 15 kolom generik bernama <code>DATA1</code> hingga
+    <code>DATA15</code> yang tersedia secara umum dan empat kolom generik
+    tambahan <code>SYNC1</code> hingga <code>SYNC4</code> yang harus digunakan hanya oleh adaptor
+    sinkronisasi. Konstanta nama kolom generik selalu berfungsi, terlepas dari tipe
+    data dalam baris .
+</p>
+<p>
+    Kolom <code>DATA1</code> diindeks.  Penyedia Kontak selalu menggunakan kolom ini untuk
+    data yang diharapkan penyedia akan menjadi target yang paling sering dari suatu query. Misalnya,
+    dalam baris email, kolom ini berisi alamat email sebenarnya.
+</p>
+<p>
+    Sesuai konvensi, kolom <code>DATA15</code> dicadangkan untuk menyimpan data Binary Large Object
+    (BLOB) seperti thumbnail foto.
+</p>
+<h3 id="TypeSpecificNames">Nama kolom bertipe spesifik</h3>
+<p>
+    Guna memudahkan pekerjaan dengan kolom untuk tipe baris tertentu, Penyedia Kontak
+    juga menyediakan konstanta nama kolom bertipe spesifik, yang didefinisikan dalam subkelas
+    {@link android.provider.ContactsContract.CommonDataKinds}. Konstanta cuma memberikan nama
+    konstanta yang berbeda ke nama kolom yang sama, yang membantu Anda mengakses data dalam baris
+    bertipe spesifik.
+</p>
+<p>
+    Misalnya, kelas {@link android.provider.ContactsContract.CommonDataKinds.Email} mendefinisikan
+    konstanta nama kolom bertipe spesifik untuk baris {@link android.provider.ContactsContract.Data}
+    yang memiliki tipe MIME
+    {@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
+    Email.CONTENT_ITEM_TYPE}. Kelas ini berisi konstanta
+    {@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS} untuk kolom
+    alamat email. Nilai sesungguhnya dari
+    {@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS} adalah "data1", yang
+    sama dengan nama generik kolom.
+</p>
+<p class="caution">
+    <strong>Perhatian:</strong> Jangan tambahkan data custom Anda sendiri ke
+    tabel {@link android.provider.ContactsContract.Data} dengan menggunakan baris yang memiliki salah satu
+    tipe MIME yang telah didefinisikan penyedia. Jika melakukannya, Anda bisa kehilangan data atau menyebabkan penyedia
+    gagal berfungsi. Misalnya, Anda seharusnya tidak menambahkan baris bertipe MIME
+    {@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
+    Email.CONTENT_ITEM_TYPE} yang berisi nama pengguna sebagai ganti alamat email dalam
+    kolom <code>DATA1</code>. Jika Anda menggunakan tipe MIME custom sendiri untuk baris bersangkutan, maka Anda bebas
+    untuk mendefinisikan nama kolom bertipe spesifik dan menggunakan kolom sekehendak Anda.
+</p>
+<p>
+    Gambar 2 menampilkan cara kolom deskriptif dan kolom data muncul dalam
+    baris {@link android.provider.ContactsContract.Data}, dan cara nama kolom bertipe spesifik "melapisi"
+    nama kolom generik
+</p>
+<img src="{@docRoot}images/providers/data_columns.png" alt="How type-specific column names map to generic column names" height="311" id="figure2" />
+<p class="img-caption">
+  <strong>Gambar 2.</strong> Nama kolom bertipe spesifik dan nama kolom generik.
+</p>
+<h3 id="ColumnMaps">Kelas nama kolom bertipe spesifik</h3>
+<p>
+    Tabel 2 berisi daftar kelas nama kolom bertipe spesifik yang paling umum digunakan:
+</p>
+<p class="table-caption" id="table2">
+  <strong>Tabel 2.</strong> Kelas nama kolom bertipe spesifik</p>
+<table>
+  <tr>
+    <th scope="col">Kelas pemetaan</th>
+    <th scope="col">Tipe data</th>
+    <th scope="col">Catatan</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredName}</td>
+    <td>Data nama untuk kontak mentah yang dikaitkan dengan baris data ini.</td>
+    <td>Kontak mentah hanya memiliki salah satu baris ini.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Photo}</td>
+    <td>Foto utama untuk kontak mentah yang dikaitkan dengan baris data ini.</td>
+    <td>Kontak mentah hanya memiliki salah satu baris ini.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Email}</td>
+    <td>Alamat email untuk kontak mentah yang dikaitkan dengan baris data ini.</td>
+    <td>Kontak mentah bisa memiliki beberapa alamat email.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal}</td>
+    <td>Alamat pos untuk kontak mentah yang dikaitkan dengan baris data ini.</td>
+    <td>Kontak mentah bisa memiliki beberapa alamat email.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.GroupMembership}</td>
+    <td>Identifier yang menautkan kontak mentah ke salah satu grup dalam Penyedia Kontak.</td>
+    <td>
+        Grup adalah fitur opsional pada tipe akun dan nama akun. Grup dijelaskan
+       lebih detail di bagian <a href="#Groups">Grup kontak</a>.
+    </td>
+  </tr>
+</table>
+<h3 id="ContactBasics">Kontak</h3>
+<p>
+    Penyedia Kontak mengombinasikan baris kontak mentah di semua tipe akun dan nama akun
+    untuk membentuk <strong>kontak</strong>. Hal ini memudahkan menampilkan dan memodifikasi semua data
+    yang telah dikumpulkan pengguna untuk seseorang. Penyedia Kontak mengelola pembuatan baris
+    kontak baru, dan agregasi kontak mentah dengan baris kontak yang ada. Baik aplikasi maupun adaptor sinkronisasi
+    tidak boleh menambahkan kontak dan sebagian kolom dalam baris kontak yang bersifat hanya baca.
+</p>
+<p class="note">
+    <strong>Catatan:</strong> Jika Anda mencoba menambahkan kontak ke Penyedia Kontak dengan
+    {@link android.content.ContentResolver#insert(Uri,ContentValues) insert()}, Anda akan mendapatkan
+    eksepsi {@link java.lang.UnsupportedOperationException}. Jika Anda mencoba memperbarui sebuah kolom
+   yang tercantum sebagai "hanya-baca", pembaruan akan diabaikan.
+</p>
+<p>
+    Penyedia Kontak membuat kontak baru untuk merespons penambahan kontak mentah baru
+    yang tidak cocok dengan kontak yang ada. Penyedia juga melakukan ini jika data
+    kontak mentah yang ada berubah sehingga tidak lagi cocok dengan kontak yang
+    sebelumnya dihubungkan. Jika aplikasi atau adaptor sinkronisasi membuat kontak mentah baru yang
+    <em>memang</em> cocok dengan kontak yang ada, kontak mentah baru akan diagregasikan ke kontak
+    yang ada.
+</p>
+<p>
+    Penyedia Kontak menautkan baris kontak ke baris kontak mentahnya dengan kolom
+    <code>_ID</code> dari baris kontak dalam tabel {@link android.provider.ContactsContract.Contacts Contacts}.
+ Kolom <code>CONTACT_ID</code> tabel kontak mentah
+    {@link android.provider.ContactsContract.RawContacts} berisi nilai <code>_ID</code> untuk
+    baris kontak yang dikaitkan dengan tiap baris kontak mentah.
+</p>
+<p>
+    Tabel {@link android.provider.ContactsContract.Contacts} juga memiliki kolom
+    {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} yang merupakan
+    tautan "permanen" ke baris kontak. Karena memelihara kontak
+    secara otomatis, Penyedia Kontak bisa mengubah nilai {@code android.provider.BaseColumns#_ID} baris kontak
+    untuk merespons agregasi atau sinkronisasi. Sekalipun ini terjadi, URI konten
+    {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI} yang dikombinasikan dengan
+    {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} kontak akan tetap
+    menunjuk ke baris kontak itu, sehingga Anda bisa menggunakan
+    {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}
+   untuk memelihara tautan ke kontak "favorit", dan seterusnya. Kolom ini memiliki formatnya sendiri, yang
+    tidak terkait dengan format kolom {@code android.provider.BaseColumns#_ID}.
+</p>
+<p>
+    Gambar 3 menampilkan cara ketiga tabel utama terkait satu sama lain.
+</p>
+<img src="{@docRoot}images/providers/contacts_tables.png" alt="Contacts provider main tables" height="514" id="figure4" />
+<p class="img-caption">
+  <strong>Gambar 3.</strong> Hubungan tabel Contacts, Raw Contacts, dan Details.
+</p>
+<h2 id="Sources">Data Dari Adaptor Sinkronisasi</h2>
+<p>
+    Pengguna memasukkan data kontak secara langsung ke dalam perangkat, namun data juga mengalir masuk ke Penyedia Kontak
+    dari layanan web melalui <strong>adaptor sinkronisasi</strong>, yang mengotomatiskan
+    transfer data antara perangkat dan layanan. Adaptor sinkronisasi berjalan di latar belakang
+    di bawah kontrol sistem, dan memanggil metode {@link android.content.ContentResolver}
+   untuk mengelola data.
+</p>
+<p>
+    Di Android, layanan web yang digunakan adaptor sinkronisasi diidentifikasi melalui tipe akun.
+    Setiap adaptor sinkronisasi bekerja dengan satu tipe akun, tetapi bisa mendukung beberapa nama akun untuk
+    tipe itu. Tipe akun dan nama akun dijelaskan secara singkat di bagian
+    <a href="#RawContactsExample">Sumber data kontak mentah</a>. Definisi berikut menyediakan
+    detail selengkapnya, dan menjelaskan cara tipe dan nama akun berkaitan dengan adaptor sinkronisasi dan layanan.
+</p>
+<dl>
+    <dt>
+        Tipe akun
+    </dt>
+    <dd>
+        Mengidentifikasi layanan tempat pengguna menyimpan data. Sering kali, pengguna harus
+        mengautentikasi diri dengan layanan. Misalnya, Google Contacts adalah tipe akun, yang diidentifikasi
+        dengan kode <code>google.com</code>. Nilai ini sesuai dengan tipe akun yang digunakan oleh
+        {@link android.accounts.AccountManager}.
+    </dd>
+    <dt>
+        Nama akun
+    </dt>
+    <dd>
+        Mengidentifikasi akun atau login tertentu untuk suatu tipe akun. Akun Google Contacts
+        sama dengan akun Google, yang memiliki alamat email sebagai nama akun.
+        Layanan lain mungkin menggunakan nama pengguna satu-kata atau identitas berupa angka.
+    </dd>
+</dl>
+<p>
+    Tipe akun tidak harus unik. Pengguna boleh mengonfigurasi beberapa akun Google Contacts
+    dan mengunduh data ke Penyedia Kontak; ini mungkin terjadi jika pengguna memiliki satu set
+    kontak pribadi untuk satu nama akun pribadi, dan satu set lagi untuk pekerjaan. Nama akun
+    biasanya unik. Bersama-sama, keduanya mengidentifikasi aliran data tertentu antara Penyedia Kontak dan
+    layanan eksternal.
+</p>
+<p>
+    Jika Anda ingin mentransfer data layanan ke Penyedia Kontak, Anda perlu menulis
+    adaptor sinkronisasi sendiri. Hal ini dijelaskan lebih detail di bagian
+    <a href="#SyncAdapters">Adaptor Sinkronisasi Penyedia Kontak</a>.
+</p>
+<p>
+    Gambar 4 menampilkan cara Penyedia Kontak dimasukkan ke dalam aliran data
+    tentang orang. Dalam kotak bertanda "sync adapters", setiap adaptor diberi label menurut tipe akunnya.
+</p>
+<img src="{@docRoot}images/providers/ContactsDataFlow.png" alt="Flow of data about people" height="252" id="figure5" />
+<p class="img-caption">
+  <strong>Gambar 4.</strong> Aliran data Penyedia Kontak.
+</p>
+<h2 id="Permissions">Izin yang Diperlukan</h2>
+<p>
+    Aplikasi yang ingin mengakses Penyedia Kontak harus meminta izin
+   berikut:
+</p>
+<dl>
+    <dt>Akses baca ke satu atau beberapa tabel</dt>
+    <dd>
+        {@link android.Manifest.permission#READ_CONTACTS}, yang ditetapkan dalam
+        <code>AndroidManifest.xml</code> dengan elemen
+        <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code> sebagai
+        <code>&lt;uses-permission android:name="android.permission.READ_CONTACTS"&gt;</code>.
+    </dd>
+    <dt>Akses tulis ke satu atau beberapa tabel</dt>
+    <dd>
+        {@link android.Manifest.permission#WRITE_CONTACTS}, yang ditetapkan dalam
+        <code>AndroidManifest.xml</code> dengan elemen
+        <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code> sebagai
+        <code>&lt;uses-permission android:name="android.permission.WRITE_CONTACTS"&gt;</code>.
+    </dd>
+</dl>
+<p>
+    Izin ini tidak diperluas ke data profil pengguna. Profil pengguna dan izin
+   yang diperlukan dibahas di bagian berikut,
+    <a href="#UserProfile">Profil Pengguna</a>.
+</p>
+<p>
+    Ingatlah bahwa data kontak pengguna bersifat pribadi dan sensitif. Pengguna mempersoalkan
+    privasinya, sehingga tidak ingin aplikasi mengumpulkan data tentang diri atau kontak mereka.
+    Jika alasan Anda memerlukan izin untuk mengakses data kontak tidak jelas, pengguna mungkin memberi
+    aplikasi Anda peringkat rendah atau langsung menolak menginstalnya.
+</p>
+<h2 id="UserProfile">Profil Pengguna</h2>
+<p>
+    Tabel {@link android.provider.ContactsContract.Contacts} berisi satu baris yang berisi
+    data profil untuk pengguna perangkat. Data ini menjelaskan data perangkat  <code>user</code> bukannya
+    salah satu kontak pengguna. Baris kontak profil ditautkan ke baris
+     kontak mentah untuk setiap sistem yang menggunakan profil.
+    Setiap baris kontak mentah profil bisa memiliki beberapa baris data. Konstanta untuk mengakses profil
+    pengguna tersedia dalam kelas {@link android.provider.ContactsContract.Profile}.
+</p>
+<p>
+    Akses ke profil pengguna memerlukan izin khusus. Selain itu, izin
+    {@link android.Manifest.permission#READ_CONTACTS} dan
+    {@link android.Manifest.permission#WRITE_CONTACTS} diperlukan untuk membaca dan menulis, akses
+    ke profil pengguna memerlukan masing-masing izin {@code android.Manifest.permission#READ_PROFILE} dan
+    {@code android.Manifest.permission#WRITE_PROFILE} untuk akses baca dan tulis.
+
+</p>
+<p>
+    Ingatlah bahwa Anda harus mempertimbangkan profil pengguna bersifat sensitif. Izin
+    {@code android.Manifest.permission#READ_PROFILE} memungkinkan Anda mengakses data yang mengidentifikasi secara pribadi
+    pengguna perangkat. Pastikan memberi tahu pengguna alasan
+    Anda memerlukan izin akses profil pengguna dalam keterangan aplikasi Anda.
+</p>
+<p>
+    Untuk mengambil baris kontak berisi profil pengguna,
+    panggil {@link android.content.ContentResolver#query(Uri,String[], String, String[], String)
+    ContentResolver.query()}. Atur URI konten ke
+    {@link android.provider.ContactsContract.Profile#CONTENT_URI} dan jangan sediakan
+    kriteria pemilihan apa pun. Anda juga bisa menggunakan URI konten ini sebagai URI dasar untuk mengambil kontak
+    mentah atau data untuk profil. Misalnya, cuplikan kode ini mengambil data untuk profil:
+</p>
+<pre>
+// Sets the columns to retrieve for the user profile
+mProjection = new String[]
+    {
+        Profile._ID,
+        Profile.DISPLAY_NAME_PRIMARY,
+        Profile.LOOKUP_KEY,
+        Profile.PHOTO_THUMBNAIL_URI
+    };
+
+// Retrieves the profile from the Contacts Provider
+mProfileCursor =
+        getContentResolver().query(
+                Profile.CONTENT_URI,
+                mProjection ,
+                null,
+                null,
+                null);
+</pre>
+<p class="note">
+    <strong>Catatan:</strong> Jika Anda mengambil beberapa baris kontak, dan ingin menentukan apakah salah satu baris
+    adalah profil pengguna, uji
+    kolom {@link android.provider.ContactsContract.ContactsColumns#IS_USER_PROFILE} pada baris tersebut. Kolom ini
+    diatur ke "1" jika kontak adalah profil pengguna.
+</p>
+<h2 id="ContactsProviderMetadata">Metadata Penyedia Kontak</h2>
+<p>
+    Penyedia Kontak mengelola data yang mencatat status data kontak dalam
+    repository. Metadata repository ini disimpan di berbagai tempat, termasuk baris-baris tabel
+    Raw Contacts, Data, dan Contacts,
+    tabel {@link android.provider.ContactsContract.Settings}, dan
+    tabel {@link android.provider.ContactsContract.SyncState}. Tabel berikut menampilkan
+    efek setiap potongan metadata ini:
+</p>
+<p class="table-caption" id="table3">
+  <strong>Tabel 3.</strong> Metadata di Penyedia Kontak</p>
+<table>
+    <tr>
+        <th scope="col">Tabel</th>
+        <th scope="col">Kolom</th>
+        <th scope="col">Nilai</th>
+        <th scope="col">Arti</th>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.RawContacts}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.SyncColumns#DIRTY}</td>
+        <td>"0" - tidak berubah sejak sinkronisasi terakhir.</td>
+        <td rowspan="2">
+            Menandai kontak mentah yang berubah pada perangkat dan telah disinkronkan kembali ke
+           server. Nilai diatur secara otomatis oleh Penyedia Kontak bila aplikasi
+            Android memperbarui baris.
+            <p>
+                Adaptor sinkronisasi yang memodifikasi kontak mentah atau tabel data harus selalu menambahkan
+                string {@link android.provider.ContactsContract#CALLER_IS_SYNCADAPTER} ke
+                URI konten yang digunakannya. Ini mencegah penyedia menandai baris sebagai kotor.
+                Sebaliknya, modifikasi oleh adaptor sinkronisasi tampak seperti modifikasi lokal dan
+                dikirim ke server, meskipun server adalah sumber modifikasi.
+            </p>
+        </td>
+    </tr>
+    <tr>
+            <td>"1" - berubah sejak sinkronisasi terakhir, harus disinkronkan kembali ke server.</td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#VERSION}</td>
+        <td>Nomor versi baris ini.</td>
+        <td>
+            Penyedia Kontak menambahkan nilai ini secara otomatis bila baris atau
+            data terkaitnya berubah.
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.Data}</td>
+        <td>{@link android.provider.ContactsContract.DataColumns#DATA_VERSION}</td>
+        <td>Nomor versi baris ini.</td>
+        <td>
+            Penyedia Kontak menambahkan nilai ini secara otomatis bila baris data
+            berubah.
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}</td>
+        <td>
+            Nilai string yang mengidentifikasi secara unik kontak mentah ini ke akun tempat
+            kontak dibuat.
+        </td>
+        <td>
+            Bila adaptor sinkronisasi membuat kontak mentah baru, kolom ini harus diatur ke
+            ID unik server untuk kontak mentah itu. Bila aplikasi Android membuat kontak mentah
+            baru, aplikasi harus membiarkan kolom ini kosong. Ini mengisyaratkan pada adaptor
+            sinkronisasi bahwa adaptor harus membuat kontak mentah baru pada server, dan mendapatkan
+            nilai untuk {@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}.
+            <p>
+                Khususnya, id sumber harus <strong>unik</strong> untuk setiap tipe
+                akun dan stabil di semua sinkronisasi:
+            </p>
+                <ul>
+                    <li>
+                        Unik: Setiap kontak mentah untuk satu akun harus memiliki id sumbernya sendiri. Jika Anda
+                        tidak memberlakukan aturan ini, masalah akan timbul dalam aplikasi kontak.
+                        Perhatikan bahwa dua kontak mentah untuk tipe akun yang <em>sama</em> boleh memiliki
+                       id sumber yang sama. Misalnya, kontak mentah "Thomas Higginson" untuk
+                        akun {@code emily.dickinson@gmail.com} boleh memiliki id sumber
+                        yang sama dengan kontak mentah "Thomas Higginson" untuk akun
+                        {@code emilyd@gmail.com}.
+                    </li>
+                    <li>
+                        Stabil: Id sumber adalah bagian tetap dari data layanan online untuk
+                        kontak mentah. Misalnya, jika pengguna membersihkan Contacts Storage dari
+                        pengaturan aplikasi dan menyinkronkan ulang, kontak mentah yang dipulihkan akan memiliki id sumber
+                        yang sama dengan sebelumnya. Jika Anda tidak memberlakukan hal ini, pintasan akan berhenti
+                        berfungsi.
+                    </li>
+                </ul>
+        </td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Groups}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.GroupsColumns#GROUP_VISIBLE}</td>
+        <td>"0" - Kontak dalam grup ini tidak boleh terlihat dalam UI aplikasi Android.</td>
+        <td>
+            Kolom ini digunakan untuk kompatibilitas dengan server yang memungkinkan pengguna menyembunyikan kontak dalam
+            grup tertentu.
+        </td>
+    </tr>
+    <tr>
+        <td>"1" - Kontak dalam grup ini boleh terlihat dalam UI aplikasi.</td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Settings}</td>
+        <td rowspan="2">
+            {@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE}</td>
+        <td>
+            "0" - Untuk akun dan tipe akun ini, kontak yang bukan milik grup
+            tidak akan terlihat pada UI aplikasi Android.
+        </td>
+        <td rowspan="2">
+            Secara default, kontak tidak terlihat jika tidak satu pun kontak mentahnya milik grup
+            (Keanggotaan grup untuk kontak mentah ditandai oleh satu atau beberapa baris
+            {@link android.provider.ContactsContract.CommonDataKinds.GroupMembership}
+            dalam tabel {@link android.provider.ContactsContract.Data}).
+            Dengan mengatur flag ini dalam baris tabel {@link android.provider.ContactsContract.Settings}
+            untuk tipe akun dan akun, Anda bisa memaksakan kontak tanpa grup agar terlihat.
+            Satu kegunaan flag ini adalah menampilkan kontak dari server yang tidak menggunakan grup.
+        </td>
+    </tr>
+    <tr>
+        <td>
+            "1" - Untuk akun dan tipe akun ini, kontak yang bukan milik grup
+            akan terlihat pada UI aplikasi.
+        </td>
+
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.SyncState}</td>
+        <td>(semua)</td>
+        <td>
+            Gunakan tabel ini untuk menyimpan metadata bagi adaptor sinkronisasi Anda.
+        </td>
+        <td>
+            Dengan tabel ini, Anda bisa menyimpan status sinkronisasi dan data lain yang terkait dengan sinkronisasi secara persisten pada
+            perangkat.
+        </td>
+    </tr>
+</table>
+<h2 id="Access">Akses Penyedia Kontak</h2>
+<p>
+    Bagian ini menjelaskan panduan untuk mengakses data dari Penyedia Kontak, yang berfokus pada
+    hal-hal berikut:
+</p>
+<ul>
+    <li>
+        Query entitas.
+    </li>
+    <li>
+        Modifikasi batch.
+    </li>
+    <li>
+        Pengambilan dan modifikasi dengan intent.
+    </li>
+    <li>
+        Integritas data.
+    </li>
+</ul>
+<p>
+    Membuat modifikasi dari adaptor sinkronisasi juga secara lebih detail di bagian
+    <a href="#SyncAdapters">Adaptor Sinkronisasi Penyedia Kontak</a>.
+</p>
+<h3 id="Entities">Membuat query entitas</h3>
+<p>
+    Karena disusun secara hierarki, tabel-tabel Penyedia Kontak sering kali berguna untuk
+    mengambil baris dan semua baris "anak" yang ditautkan dengannya. Misalnya, untuk menampilkan
+    semua informasi untuk satu orang, Anda mungkin ingin mengambil semua
+    baris {@link android.provider.ContactsContract.RawContacts} untuk satu baris
+    {@link android.provider.ContactsContract.Contacts}, atau semua
+    baris {@link android.provider.ContactsContract.CommonDataKinds.Email} untuk satu baris
+    {@link android.provider.ContactsContract.RawContacts}. Untuk memudahkan hal ini, Penyedia Kontak
+    menawarkan konstruksi <strong>entitas</strong>, yang berfungsi seperti gabungan database di antara
+    tabel-tabel.
+</p>
+<p>
+    Entitas adalah seperti tabel yang terdiri atas kolom-kolom terpilih dari tabel induk dan tabel anaknya.
+    Bila membuat query sebuah entitas, Anda memberikan proyeksi dan kriteria pencarian berdasarkan kolom-kolom
+    yang tersedia dari entitas itu. Hasilnya adalah sebuah {@link android.database.Cursor} yang
+    berisi satu baris untuk setiap baris tabel anak yang diambil. Misalnya, jika Anda membuat query
+    {@link android.provider.ContactsContract.Contacts.Entity} untuk satu nama kontak
+    dan semua baris {@link android.provider.ContactsContract.CommonDataKinds.Email} untuk semua
+    kontak mentah bagi nama itu, Anda akan mendapatkan kembali {@link android.database.Cursor} berisi satu baris
+    untuk setiap baris {@link android.provider.ContactsContract.CommonDataKinds.Email}.
+</p>
+<p>
+    Entitas menyederhanakan query. Dengan entitas, Anda bisa mengambil semua data kontak untuk satu
+    kontak atau kontak mentah sekaligus, sebagai ganti harus membuat query tabel induk terlebih dahulu untuk mendapatkan
+    ID, lalu harus membuat query tabel anak dengan ID itu. Selain itu, Penyedia Kontak akan memproses
+    query terhadap entitas dalam satu transaksi, yang memastikan bahwa data yang diambil
+    konsisten secara internal.
+</p>
+<p class="note">
+    <strong>Catatan:</strong> Entitas biasanya tidak berisi semua kolom tabel induk dan
+    anak. Jika Anda mencoba menggunakan nama kolom yang tidak ada dalam daftar konstanta
+    nama kolom untuk entitas, Anda akan mendapatkan {@link java.lang.Exception}.
+</p>
+<p>
+    Cuplikan berikut menampilkan cara mengambil semua baris kontak mentah untuk sebuah kontak. Cuplikan ini
+    adalah bagian dari aplikasi lebih besar yang memiliki dua aktivitas, "main" dan "detail". Aktivitas utama
+    menampilkan daftar baris kontak; bila pengguna memilih satu baris, aktivitas akan mengirimkan ID-nya ke aktivitas
+    detail. Aktivitas detail menggunakan{@link android.provider.ContactsContract.Contacts.Entity}
+    untuk menampilkan semua baris data dari semua kontak mentah yang dikaitkan dengan kontak
+    terpilih.
+</p>
+<p>
+    Cuplikan ini diambil dari aktivitas "detail":
+</p>
+<pre>
+...
+    /*
+     * Appends the entity path to the URI. In the case of the Contacts Provider, the
+     * expected URI is content://com.google.contacts/#/entity (# is the ID value).
+     */
+    mContactUri = Uri.withAppendedPath(
+            mContactUri,
+            ContactsContract.Contacts.Entity.CONTENT_DIRECTORY);
+
+    // Initializes the loader identified by LOADER_ID.
+    getLoaderManager().initLoader(
+            LOADER_ID,  // The identifier of the loader to initialize
+            null,       // Arguments for the loader (in this case, none)
+            this);      // The context of the activity
+
+    // Creates a new cursor adapter to attach to the list view
+    mCursorAdapter = new SimpleCursorAdapter(
+            this,                        // the context of the activity
+            R.layout.detail_list_item,   // the view item containing the detail widgets
+            mCursor,                     // the backing cursor
+            mFromColumns,                // the columns in the cursor that provide the data
+            mToViews,                    // the views in the view item that display the data
+            0);                          // flags
+
+    // Sets the ListView's backing adapter.
+    mRawContactList.setAdapter(mCursorAdapter);
+...
+&#64;Override
+public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+
+    /*
+     * Sets the columns to retrieve.
+     * RAW_CONTACT_ID is included to identify the raw contact associated with the data row.
+     * DATA1 contains the first column in the data row (usually the most important one).
+     * MIMETYPE indicates the type of data in the data row.
+     */
+    String[] projection =
+        {
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID,
+            ContactsContract.Contacts.Entity.DATA1,
+            ContactsContract.Contacts.Entity.MIMETYPE
+        };
+
+    /*
+     * Sorts the retrieved cursor by raw contact id, to keep all data rows for a single raw
+     * contact collated together.
+     */
+    String sortOrder =
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID +
+            " ASC";
+
+    /*
+     * Returns a new CursorLoader. The arguments are similar to
+     * ContentResolver.query(), except for the Context argument, which supplies the location of
+     * the ContentResolver to use.
+     */
+    return new CursorLoader(
+            getApplicationContext(),  // The activity's context
+            mContactUri,              // The entity content URI for a single contact
+            projection,               // The columns to retrieve
+            null,                     // Retrieve all the raw contacts and their data rows.
+            null,                     //
+            sortOrder);               // Sort by the raw contact ID.
+}
+</pre>
+<p>
+    Bila selesai dimuat, {@link android.app.LoaderManager} akan memicu callback ke
+    {@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished(Loader, D)
+    onLoadFinished()}. Salah satu argumen masuk pada metode ini adalah
+    {@link android.database.Cursor} bersama hasil query. Dalam aplikasi Anda sendiri, Anda bisa memperoleh
+    data dari {@link android.database.Cursor} ini untuk menampilkannya atau menggunakannya lebih jauh.
+</p>
+<h3 id="Transactions">Modifikasi batch</h3>
+<p>
+    Bila memungkinkan, Anda harus menyisipkan, memperbarui, dan menghapus data dalam Penyedia Kontak dengan
+    "batch mode", dengan membuat {@link java.util.ArrayList} dari
+    objek-objek {@link android.content.ContentProviderOperation} dan memanggil
+    {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}. Karena
+    Penyedia Kontak menjalankan semua operasi dalam satu
+    {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} transaksi,
+    modifikasi Anda tidak akan pernah meninggalkan repository kontak dalam keadaan
+    tidak konsisten. Modifikasi batch juga memudahkan penyisipan kontak mentah dan data detailnya
+    sekaligus.
+</p>
+<p class="note">
+    <strong>Catatan:</strong> Untuk memodifikasi <em>satu</em> kontak mentah, pertimbangkan untuk mengirim intent ke
+    aplikasi kontak perangkat daripada menangani modifikasi dalam aplikasi Anda.
+    Cara ini dijelaskan lebih detail di bagian
+    <a href="#Intents">Pengambilan dan modifikasi dengan intent</a>.
+</p>
+<h4>Yield point</h4>
+<p>
+    Modifikasi batch yang berisi operasi dalam jumlah besar bisa memblokir proses lain,
+    yang mengakibatkan pengalaman pengguna yang buruk secara keseluruhan. Untuk menata semua modifikasi yang ingin Anda
+    jalankan dalam sesedikit mungkin daftar terpisah, sambil mencegah modifikasi dari
+    memblokir sistem, Anda harus menetapkan <strong>yield point</strong> untuk satu atau beberapa operasi.
+    Yield point (titik hasil) adalah objek {@link android.content.ContentProviderOperation} yang mengatur
+    nilai {@link android.content.ContentProviderOperation#isYieldAllowed()}-nya ke
+    <code>true</code>. Bila menemui yield point, Penyedia Kontak akan menghentikan pekerjaannya untuk
+    membiarkan proses lain berjalan dan menutup transaksi saat ini. Bila dimulai lagi, penyedia akan
+    melanjutkan dengan operasi berikutnya di {@link java.util.ArrayList} dan memulai transaksi
+    baru.
+</p>
+<p>
+    Yield point memang menyebabkan lebih dari satu transaksi per panggilan ke
+    {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}. Karena
+    itu, Anda harus menetapkan yield point pada operasi terakhir untuk satu set baris terkait.
+    Misalnya, Anda harus menetapkan yield point pada operasi terakhir di satu set yang menambahkan
+    baris kontak mentah dan baris data terkait, atau operasi terakhir untuk satu set baris yang terkait
+    dengan satu kontak.
+</p>
+<p>
+    Yield point juga merupakan unit operasi atomis. Semua akses antara dua yield point bisa
+    saja berhasil atau gagal sebagai satu unit. Jika Anda mengatur yield point, operasi
+    atomis terkecil adalah seluruh batch operasi. Jika menggunakan yield point, Anda akan mencegah
+    operasi menurunkan kinerja sistem, sekaligus memastikan subset
+    operasi bersifat atomis.
+</p>
+<h4>Acuan balik modifikasi</h4>
+<p>
+    Saat Anda menyisipkan baris kontak mentah baru dan baris data terkaitnya sebagai satu set
+    objek {@link android.content.ContentProviderOperation}, Anda harus menautkan baris data ke
+    baris kontak mentah dengan memasukkan nilai
+    {@code android.provider.BaseColumns#_ID} kontak mentah sebagai
+    nilai {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}. Akan tetapi, nilai
+    ini tidak tersedia saat Anda membuat {@link android.content.ContentProviderOperation}
+    untuk baris data, karena Anda belum menerapkan
+    {@link android.content.ContentProviderOperation} untuk baris kontak mentah. Solusinya,
+     kelas {@link android.content.ContentProviderOperation.Builder} memiliki metode
+    {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}.
+    Metode ini memungkinkan Anda menyisipkan atau mengubah kolom dengan
+    hasil dari operasi sebelumnya.
+</p>
+<p>
+    Metode {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+    memiliki dua argumen:
+</p>
+    <dl>
+        <dt>
+            <code>key</code>
+        </dt>
+        <dd>
+            Kunci dari pasangan kunci-nilai. Nilai argumen ini harus berupa nama kolom
+            dalam tabel yang Anda modifikasi.
+        </dd>
+        <dt>
+            <code>previousResult</code>
+        </dt>
+        <dd>
+            Indeks berbasis 0 dari nilai pada larik
+            objek {@link android.content.ContentProviderResult} dari
+            {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}. Saat
+            operasi batch diterapkan, hasil tiap operasi akan disimpan dalam
+            larik hasil antara. Nilai <code>previousResult</code> adalah indeks
+            dari salah satu hasil ini, yang diambil dan disimpan bersama nilai <code>key</code>.
+ Cara ini memungkinkan Anda menyisipkan record kontak mentah baru dan mendapatkan kembali nilai
+            {@code android.provider.BaseColumns#_ID}-nya, lalu membuat "acuan balik" ke
+            nilai itu saat Anda menambahkan baris {@link android.provider.ContactsContract.Data}.
+            <p>
+                Seluruh larik hasil dibuat saat Anda memanggil
+                {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} untuk pertama kali,
+                dengan ukuran setara dengan ukuran {@link java.util.ArrayList} dari
+                objek {@link android.content.ContentProviderOperation} yang Anda sediakan. Akan tetapi, semua
+                elemen dalam larik hasil diatur ke <code>null</code>, dan jika Anda mencoba
+                melakukan acuan balik ke hasil untuk operasi yang belum diterapkan,
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+                akan mengeluarkan {@link java.lang.Exception}.
+
+            </p>
+        </dd>
+    </dl>
+<p>
+    Cuplikan kode berikut menampilkan cara menyisipkan kontak mentah baru dan data secara batch. Cuplikan kode ini
+    menyertakan kode yang menetapkan yield point dan menggunakan acuan balik. Cuplikan kode ini adalah
+    versi perluasan dari metode<code>createContacEntry()</code>, yang merupakan bagian dari kelas
+    <code>ContactAdder</code> dalam
+    aplikasi contoh <code><a href="{@docRoot}resources/samples/ContactManager/index.html">
+    Contact Manager</a></code>.
+</p>
+<p>
+    Cuplikan pertama mengambil data kontak dari UI. Pada saat ini, pengguna sudah
+    memilih akun tempat kontak mentah baru harus ditambahkan.
+</p>
+<pre>
+// Creates a contact entry from the current UI values, using the currently-selected account.
+protected void createContactEntry() {
+    /*
+     * Gets values from the UI
+     */
+    String name = mContactNameEditText.getText().toString();
+    String phone = mContactPhoneEditText.getText().toString();
+    String email = mContactEmailEditText.getText().toString();
+
+    int phoneType = mContactPhoneTypes.get(
+            mContactPhoneTypeSpinner.getSelectedItemPosition());
+
+    int emailType = mContactEmailTypes.get(
+            mContactEmailTypeSpinner.getSelectedItemPosition());
+</pre>
+<p>
+    Cuplikan berikutnya membuat operasi untuk menyisipkan baris kontak mentah ke dalam
+    tabel {@link android.provider.ContactsContract.RawContacts}:
+</p>
+<pre>
+    /*
+     * Prepares the batch operation for inserting a new raw contact and its data. Even if
+     * the Contacts Provider does not have any data for this person, you can't add a Contact,
+     * only a raw contact. The Contacts Provider will then add a Contact automatically.
+     */
+
+     // Creates a new array of ContentProviderOperation objects.
+    ArrayList&lt;ContentProviderOperation&gt; ops =
+            new ArrayList&lt;ContentProviderOperation&gt;();
+
+    /*
+     * Creates a new raw contact with its account type (server type) and account name
+     * (user's account). Remember that the display name is not stored in this row, but in a
+     * StructuredName data row. No other data is required.
+     */
+    ContentProviderOperation.Builder op =
+            ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
+            .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType())
+            .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    Berikutnya, kode akan membuat baris data untuk baris-baris nama tampilan, telepon, dan email.
+</p>
+<p>
+    Setiap objek pembangun operasi menggunakan
+    {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+    untuk mendapatkan
+    {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}. Acuan menunjuk
+    balik ke objek {@link android.content.ContentProviderResult} dari operasi pertama,
+    yang menambahkan baris kontak mentah dan mengembalikan nilai {@code android.provider.BaseColumns#_ID}
+    barunya. Hasilnya, setiap data ditautkan secara otomatis oleh
+    {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}-nya
+    ke baris {@link android.provider.ContactsContract.RawContacts} baru yang memilikinya.
+</p>
+<p>
+    Objek {@link android.content.ContentProviderOperation.Builder} yang menambahkan baris email
+    diberi flag {@link android.content.ContentProviderOperation.Builder#withYieldAllowed(boolean)
+    withYieldAllowed()}, yang mengatur yield point:
+</p>
+<pre>
+    // Creates the display name for the new raw contact, as a StructuredName data row.
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * withValueBackReference sets the value of the first argument to the value of
+             * the ContentProviderResult indexed by the second argument. In this particular
+             * call, the raw contact ID column of the StructuredName data row is set to the
+             * value of the result returned by the first operation, which is the one that
+             * actually adds the raw contact row.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to StructuredName
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
+
+            // Sets the data row's display name to the name in the UI.
+            .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified phone number and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Phone
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
+
+            // Sets the phone number and type
+            .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone)
+            .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified email and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Email
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
+
+            // Sets the email address and type
+            .withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email)
+            .withValue(ContactsContract.CommonDataKinds.Email.TYPE, emailType);
+
+    /*
+     * Demonstrates a yield point. At the end of this insert, the batch operation's thread
+     * will yield priority to other threads. Use after every set of operations that affect a
+     * single contact, to avoid degrading performance.
+     */
+    op.withYieldAllowed(true);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    Cuplikan terakhir menampilkan panggilan ke
+    {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} yang
+    menyisipkan baris-baris kontak mentah dan data baru.
+</p>
+<pre>
+    // Ask the Contacts Provider to create a new contact
+    Log.d(TAG,"Selected account: " + mSelectedAccount.getName() + " (" +
+            mSelectedAccount.getType() + ")");
+    Log.d(TAG,"Creating contact: " + name);
+
+    /*
+     * Applies the array of ContentProviderOperation objects in batch. The results are
+     * discarded.
+     */
+    try {
+
+            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
+    } catch (Exception e) {
+
+            // Display a warning
+            Context ctx = getApplicationContext();
+
+            CharSequence txt = getString(R.string.contactCreationFailure);
+            int duration = Toast.LENGTH_SHORT;
+            Toast toast = Toast.makeText(ctx, txt, duration);
+            toast.show();
+
+            // Log exception
+            Log.e(TAG, "Exception encountered while inserting contact: " + e);
+    }
+}
+</pre>
+<p>
+    Operasi batch juga memungkinkan Anda menerapkan <strong>kontrol konkurensi optimistis</strong>,
+    sebuah metode yang menerapkan transaksi modifikasi tanpa harus mengunci repository yang mendasari.
+    Untuk menggunakan metode ini, terapkan transaksi dan periksa modifikasi lain yang
+    mungkin telah dibuat bersamaan. Jika ternyata modifikasi tidak konsisten, Anda
+    mengembalikan transaksi ke kondisi semula dan mencobanya kembali.
+</p>
+<p>
+    Kontrol konkurensi optimistis berguna untuk perangkat seluler, apabila hanya ada satu pengguna setiap
+   kalinya, dan akses simultan ke repository data jarang terjadi. Karena penguncian tidak digunakan,
+    tidak ada waktu yang terbuang untuk memasang kunci atau menunggu transaksi lain untuk melepas kunci.
+</p>
+<p>
+    Untuk menggunakan kontrol konkurensi optimistis saat memperbarui satu baris
+    {@link android.provider.ContactsContract.RawContacts}, ikuti langkah-langkah ini:
+</p>
+<ol>
+    <li>
+        Ambil kolom {@link android.provider.ContactsContract.SyncColumns#VERSION}
+        kontak mentah bersama data lain yang Anda ambil.
+    </li>
+    <li>
+        Buat sebuah objek {@link android.content.ContentProviderOperation.Builder} yang cocok untuk
+        memberlakukan batasan, dengan menggunakan metode
+        {@link android.content.ContentProviderOperation#newAssertQuery(Uri)}. Untuk URI konten,
+        gunakan {@link android.provider.ContactsContract.RawContacts#CONTENT_URI
+        RawContacts.CONTENT_URI}
+        dengan {@code android.provider.BaseColumns#_ID} kontak mentah yang ditambahkan padanya.
+    </li>
+    <li>
+        Untuk objek {@link android.content.ContentProviderOperation.Builder}, panggil
+        {@link android.content.ContentProviderOperation.Builder#withValue(String, Object)
+        withValue()} untuk membandingkan kolom {@link android.provider.ContactsContract.SyncColumns#VERSION}
+        dengan nomor versi yang baru saja Anda ambil.
+    </li>
+    <li>
+        Untuk {@link android.content.ContentProviderOperation.Builder} yang sama, panggil
+        {@link android.content.ContentProviderOperation.Builder#withExpectedCount(int)
+        withExpectedCount()} untuk memastikan bahwa hanya satu baris yang diuji oleh pernyataan ini.
+    </li>
+    <li>
+        Panggil {@link android.content.ContentProviderOperation.Builder#build()} untuk membuat
+        objek {@link android.content.ContentProviderOperation}, kemudian tambahkan objek ini sebagai
+        objek pertama di {@link java.util.ArrayList} yang Anda teruskan ke
+        {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}.
+    </li>
+    <li>
+        Terapkan transaksi batch.
+    </li>
+</ol>
+<p>
+    Jika baris kontak mentah diperbarui oleh operasi lain antara waktu Anda membaca baris dan
+    waktu Anda mencoba memodifikasinya, "asert" {@link android.content.ContentProviderOperation}
+    akan gagal, dan seluruh batch operasi akan dibatalkan. Anda nanti bisa memilih untuk mencoba ulang
+    batch atau melakukan tindakan lain.
+</p>
+<p>
+    Cuplikan berikut memperagakan cara membuat "asert"
+    {@link android.content.ContentProviderOperation} setelah membuat query satu kontak mentah yang menggunakan
+     {@link android.content.CursorLoader}:
+</p>
+<pre>
+/*
+ * The application uses CursorLoader to query the raw contacts table. The system calls this method
+ * when the load is finished.
+ */
+public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor cursor) {
+
+    // Gets the raw contact's _ID and VERSION values
+    mRawContactID = cursor.getLong(cursor.getColumnIndex(BaseColumns._ID));
+    mVersion = cursor.getInt(cursor.getColumnIndex(SyncColumns.VERSION));
+}
+
+...
+
+// Sets up a Uri for the assert operation
+Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, mRawContactID);
+
+// Creates a builder for the assert operation
+ContentProviderOperation.Builder assertOp = ContentProviderOperation.netAssertQuery(rawContactUri);
+
+// Adds the assertions to the assert operation: checks the version and count of rows tested
+assertOp.withValue(SyncColumns.VERSION, mVersion);
+assertOp.withExpectedCount(1);
+
+// Creates an ArrayList to hold the ContentProviderOperation objects
+ArrayList ops = new ArrayList&lt;ContentProviderOperationg&gt;;
+
+ops.add(assertOp.build());
+
+// You would add the rest of your batch operations to "ops" here
+
+...
+
+// Applies the batch. If the assert fails, an Exception is thrown
+try
+    {
+        ContentProviderResult[] results =
+                getContentResolver().applyBatch(AUTHORITY, ops);
+
+    } catch (OperationApplicationException e) {
+
+        // Actions you want to take if the assert operation fails go here
+    }
+</pre>
+<h3 id="Intents">Pengambilan dan modifikasi dengan intent</h3>
+<p>
+    Mengirimkan intent ke aplikasi kontak perangkat memungkinkan Anda mengakses Penyedia Kontak
+    secara tidak langsung. Intent akan memulai UI aplikasi kontak perangkat, tempat pengguna bisa
+    melakukan pekerjaan yang terkait dengan kontak. Dengan tipe akses ini, pengguna bisa:
+    <ul>
+        <li>Memilih kontak dari daftar dan meneruskannya ke aplikasi untuk pekerjaan lebih jauh.</li>
+        <li>Mengedit data kontak yang ada.</li>
+        <li>Memasukkan kontak mentah baru untuk akun mereka.</li>
+        <li>Menghapus kontak atau data kontak.</li>
+    </ul>
+<p>
+    Jika pengguna menyisipkan atau memperbarui data, Anda bisa mengumpulkan data lebih dahulu dan mengirimkannya sebagai
+    bagian dari intent.
+</p>
+<p>
+    Bila Anda menggunakan intent untuk mengakses Penyedia Kontak melalui aplikasi kontak perangkat, Anda
+    tidak perlu menulis UI atau kode sendiri untuk mengakses penyedia. Anda juga tidak harus
+   meminta izin untuk membaca dari atau menulis ke penyedia. Aplikasi kontak perangkat bisa
+    mendelegasikan izin membaca untuk kontak kepada Anda, dan karena Anda membuat modifikasi pada
+    penyedia melalui aplikasi lain, Anda tidak perlu memiliki izin menulis.
+</p>
+<p>
+    Proses umum pengiriman intent untuk mengakses penyedia dijelaskan secara detail dalam panduan
+    <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+    Dasar-Dasar Penyedia Konten</a> di bagian "Akses data melalui intent". Tindakan,
+    tipe MIME, dan nilai data yang Anda gunakan untuk tugas yang tersedia dirangkum dalam Tabel 4, sedangkan
+    nilai ekstra yang bisa Anda gunakan bersama
+    {@link android.content.Intent#putExtra(String, String) putExtra()} tercantum dalam
+    dokumentasi acuan untuk {@link android.provider.ContactsContract.Intents.Insert}:
+</p>
+<p class="table-caption" id="table4">
+  <strong>Tabel 4.</strong> Intent Penyedia Kontak.
+</p>
+<table style="width:75%">
+    <tr>
+        <th scope="col" style="width:10%">Tugas</th>
+        <th scope="col" style="width:5%">Tindakan</th>
+        <th scope="col" style="width:10%">Data</th>
+        <th scope="col" style="width:10%">Tipe MIME</th>
+        <th scope="col" style="width:25%">Catatan</th>
+    </tr>
+    <tr>
+        <td><strong>Memilih kontak dari daftar</strong></td>
+        <td>{@link android.content.Intent#ACTION_PICK}</td>
+        <td>
+            Salah satu dari:
+            <ul>
+                <li>
+{@link android.provider.ContactsContract.Contacts#CONTENT_URI Contacts.CONTENT_URI},
+                    yang menampilkan daftar kontak.
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Phone#CONTENT_URI Phone.CONTENT_URI},
+                    yang menampilkan daftar nomor telepon untuk kontak mentah.
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal#CONTENT_URI
+StructuredPostal.CONTENT_URI},
+                    yang menampilkan daftar alamat pos untuk kontak mentah.
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_URI Email.CONTENT_URI},
+                    yang menampilkan daftar alamat email untuk kontak baru.
+                </li>
+            </ul>
+        </td>
+        <td>
+            Tidak digunakan
+        </td>
+        <td>
+            Menampilkan daftar kontak mentah atau daftar data dari kontak mentah, sesuai dengan tipe
+            URI konten yang Anda sediakan.
+            <p>
+                Panggil
+         {@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()},
+                yang menghasilkan URI konten dari baris terpilih. Bentuk URI adalah
+                URI konten tabel dengan <code>LOOKUP_ID</code> baris yang ditambahkan padanya.
+                Aplikasi kontak perangkat mendelegasikan izin membaca dan menulis untuk URI konten ini
+                selama masa pakai aktivitas Anda. Lihat panduan
+                <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+                Dasar-Dasar Penyedia Konten</a> untuk detail selengkapnya.
+            </p>
+        </td>
+    </tr>
+    <tr>
+        <td><strong>Menyisipkan kontak mentah baru</strong></td>
+        <td>{@link android.provider.ContactsContract.Intents.Insert#ACTION Insert.ACTION}</td>
+        <td>N/A</td>
+        <td>
+            {@link android.provider.ContactsContract.RawContacts#CONTENT_TYPE
+            RawContacts.CONTENT_TYPE}, tipe MIME untuk satu set kontak mentah.
+        </td>
+        <td>
+            Menampilkan layar <strong>Add Contact</strong> aplikasi kontak perangkat. Nilai
+            ekstra yang Anda tambahkan ke intent akan ditampilkan. Jika dikirimkan bersama
+        {@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()},
+            URI konten dari kontak mentah yang baru saja ditambahkan akan dikembalikan ke
+            {@link android.app.Activity#onActivityResult(int, int, Intent) onActivityResult()}
+           metode callback aktivitas Anda pada argumen {@link android.content.Intent}, di
+            bidang "data". Untuk mendapatkan nilainya, panggil {@link android.content.Intent#getData()}.
+        </td>
+    </tr>
+    <tr>
+        <td><strong>Mengedit kontak</strong></td>
+        <td>{@link android.content.Intent#ACTION_EDIT}</td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI} untuk
+            kontak. Aktivitas editor memungkinkan pengguna mengedit setiap data yang dikaitkan
+            dengan kontak ini.
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE
+            Contacts.CONTENT_ITEM_TYPE}, kontak tunggal.</td>
+        <td>
+            Menampilkan layar Edit Contact dalam aplikasi kontak. Nilai ekstra yang Anda tambahkan
+            ke intent akan ditampilkan. Bila pengguna mengklik <strong>Done</strong> untuk menyimpan
+            hasil edit, aktivitas Anda kembali ke latar depan.
+        </td>
+    </tr>
+    <tr>
+        <td><strong>Menampilkan picker yang juga bisa menambahkan data.</strong></td>
+        <td>{@link android.content.Intent#ACTION_INSERT_OR_EDIT}</td>
+        <td>
+            N/A
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE}
+        </td>
+         <td>
+            Intent ini selalu menampilkan layar picker aplikasi kontak. Pengguna bisa memilih
+            kontak untuk diedit, atau menambahkan kontak baru. Layar edit atau layar tambah
+            akan muncul, sesuai dengan pilihan pengguna, dan data ekstra yang Anda kirimkan dalam intent
+            akan ditampilkan. Jika aplikasi Anda menampilkan data kontak seperti email atau nomor telepon, gunakan
+            intent ini untuk memungkinkan pengguna menambahkan data ke kontak yang ada.
+
+            <p class="note">
+                <strong>Catatan:</strong> Tidak perlu mengirimkan nilai nama dalam ekstra intent ini,
+                karena pengguna selalu mengambil nama yang ada atau menambahkan nama baru. Lebih-lebih,
+                jika Anda mengirimkan nama, dan pengguna memilih untuk melakukan edit, aplikasi kontak akan
+                menampilkan nama yang Anda kirimkan, yang menimpa nilai sebelumnya. Jika pengguna tidak
+                menyadari hal ini dan menyimpan hasil edit, nilai lama akan hilang.
+            </p>
+         </td>
+    </tr>
+</table>
+<p>
+    Aplikasi kontak perangkat tidak memperbolehkan Anda menghapus kontak mentah atau datanya dengan
+    intent. Sebagai gantinya, untuk menghapus kontak mentah, gunakan
+    {@link android.content.ContentResolver#delete(Uri, String, String[]) ContentResolver.delete()}
+    atau {@link android.content.ContentProviderOperation#newDelete(Uri)
+    ContentProviderOperation.newDelete()}.
+</p>
+<p>
+    Cuplikan berikut menampilkan cara menyusun dan mengirimkan intent yang menyisipkan kontak dan data
+    mentah baru:
+</p>
+<pre>
+// Gets values from the UI
+String name = mContactNameEditText.getText().toString();
+String phone = mContactPhoneEditText.getText().toString();
+String email = mContactEmailEditText.getText().toString();
+
+String company = mCompanyName.getText().toString();
+String jobtitle = mJobTitle.getText().toString();
+
+// Creates a new intent for sending to the device's contacts application
+Intent insertIntent = new Intent(ContactsContract.Intents.Insert.ACTION);
+
+// Sets the MIME type to the one expected by the insertion activity
+insertIntent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
+
+// Sets the new contact name
+insertIntent.putExtra(ContactsContract.Intents.Insert.NAME, name);
+
+// Sets the new company and job title
+insertIntent.putExtra(ContactsContract.Intents.Insert.COMPANY, company);
+insertIntent.putExtra(ContactsContract.Intents.Insert.JOB_TITLE, jobtitle);
+
+/*
+ * Demonstrates adding data rows as an array list associated with the DATA key
+ */
+
+// Defines an array list to contain the ContentValues objects for each row
+ArrayList&lt;ContentValues&gt; contactData = new ArrayList&lt;ContentValues&gt;();
+
+
+/*
+ * Defines the raw contact row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues rawContactRow = new ContentValues();
+
+// Adds the account type and name to the row
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType());
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+// Adds the row to the array
+contactData.add(rawContactRow);
+
+/*
+ * Sets up the phone number data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues phoneRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+phoneRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
+);
+
+// Adds the phone number and its type to the row
+phoneRow.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone);
+
+// Adds the row to the array
+contactData.add(phoneRow);
+
+/*
+ * Sets up the email data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues emailRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+emailRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE
+);
+
+// Adds the email address and its type to the row
+emailRow.put(ContactsContract.CommonDataKinds.Email.ADDRESS, email);
+
+// Adds the row to the array
+contactData.add(emailRow);
+
+/*
+ * Adds the array to the intent's extras. It must be a parcelable object in order to
+ * travel between processes. The device's contacts app expects its key to be
+ * Intents.Insert.DATA
+ */
+insertIntent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, contactData);
+
+// Send out the intent to start the device's contacts app in its add contact activity.
+startActivity(insertIntent);
+</pre>
+<h3 id="DataIntegrity">Integritas data</h3>
+<p>
+    Karena repository kontak berisi data penting dan sensitif yang diharapkan pengguna agar
+    benar dan terbaru. Penyedia Kontak memiliki aturan yang didefinisikan dengan baik demi integritas data. Anda
+    bertanggung jawab untuk mematuhi aturan ini saat memodifikasi data kontak. Aturan-aturan penting itu
+    dicantumkan di sini:
+</p>
+<dl>
+    <dt>
+        Selalu tambahkan baris {@link android.provider.ContactsContract.CommonDataKinds.StructuredName}
+        untuk setiap baris {@link android.provider.ContactsContract.RawContacts} yang Anda tambahkan.
+    </dt>
+    <dd>
+        Baris {@link android.provider.ContactsContract.RawContacts} tanpa
+        baris {@link android.provider.ContactsContract.CommonDataKinds.StructuredName} dalam
+        tabel {@link android.provider.ContactsContract.Data} bisa menyebabkan masalah selama
+       agregasi.
+    </dd>
+    <dt>
+        Selalu tautkan baris {@link android.provider.ContactsContract.Data} baru ke baris
+        {@link android.provider.ContactsContract.RawContacts} induknya.
+    </dt>
+    <dd>
+        Baris {@link android.provider.ContactsContract.Data} yang tidak ditautkan ke
+        {@link android.provider.ContactsContract.RawContacts} tidak akan terlihat dalam aplikasi kontak
+        perangkat, dan itu bisa menimbulkan masalah dengan adaptor sinkronisasi.
+    </dd>
+    <dt>
+        Ubah data hanya untuk kontak mentah yang Anda miliki.
+    </dt>
+    <dd>
+        Ingatlah bahwa Penyedia Kontak biasanya mengelola data dari berbagai
+        tipe akun/layanan online. Anda harus memastikan bahwa aplikasi Anda hanya memodifikasi
+        atau menghapus data untuk baris milik Anda, dan bahwa aplikasi hanya menyisipkan data dengan
+        tipe akun dan nama yang Anda kontrol.
+    </dd>
+    <dt>
+        Selalu gunakan konstanta yang didefinisikan dalam {@link android.provider.ContactsContract} dan
+        subkelasnya untuk otoritas, URI konten, URI path, nama kolom, tipe MIME, dan
+        nilai {@link android.provider.ContactsContract.CommonDataKinds.CommonColumns#TYPE}.
+    </dt>
+    <dd>
+        Menggunakan konstanta ini membantu Anda menghindari kesalahan. Anda juga akan diberi tahu dengan peringatan
+        compiler jika salah satu konstanta sudah usang.
+    </dd>
+</dl>
+<h3 id="CustomData">Baris data custom</h3>
+<p>
+    Dengan membuat dan menggunakan tipe MIME custom sendiri, Anda bisa menyisipkan, mengedit, menghapus, dan mengambil
+    baris data sendiri dalam tabel {@link android.provider.ContactsContract.Data}. Baris Anda
+    dibatasi untuk menggunakan kolom yang didefinisikan dalam
+    {@link android.provider.ContactsContract.DataColumns}, meskipun Anda bisa memetakan nama kolom
+    bertipe spesifik sendiri ke nama kolom default. Dalam aplikasi kontak perangkat,
+    data untuk baris Anda ditampilkan, tetapi tidak bisa diedit atau dihapus, dan pengguna tidak bisa menambahkan
+    data lain. Untuk memudahkan pengguna mengubah baris data custom Anda, Anda harus menyediakan aktivitas
+    editor dalam aplikasi Anda sendiri.
+</p>
+<p>
+    Untuk menampilkan data custom, sediakan file <code>contacts.xml</code> berisi elemen
+    <code>&lt;ContactsAccountType&gt;</code> dan satu atau beberapa elemen anak
+    <code>&lt;ContactsDataKind&gt;</code>. Hal ini dijelaskan lebih detail di
+    bagian <a href="#SocialStreamDataKind"><code>&lt;ContactsDataKind&gt; element</code></a>.
+</p>
+<p>
+    Untuk mengetahui selengkapnya tentang tipe MIME custom, bacalah panduan
+    <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+    Membuat Penyedia Konten</a>.
+</p>
+<h2 id="SyncAdapters">Adaptor Sinkronisasi Penyedia Kontak</h2>
+<p>
+    Penyedia Kontak didesain khusus untuk menangani <strong>sinkronisasi</strong>
+    data kontak antara perangkat dan layanan online. Hal ini memungkinkan pengguna mengunduh
+    data yang ada dari perangkat baru dan mengunggah data yang ada ke akun baru.
+    Sinkronisasi juga memastikan bahwa pengguna memiliki data terbaru, apa pun
+    sumber penambahan dan perubahan itu. Keuntungan lain dari sinkronisasi adalah membuat
+    data kontak tersedia sekalipun perangkat tidak terhubung ke jaringan.
+</p>
+<p>
+    Walaupun Anda bisa menerapkan sinkronisasi dengan berbagai cara, sistem Android menyediakan
+    kerangka kerja sinkronisasi plug-in yang mengotomatiskan tugas-tugas berikut:
+    <ul>
+
+    <li>
+        Memeriksa ketersediaan jaringan.
+    </li>
+    <li>
+        Menjadwalkan dan menjalankan sinkronisasi, berdasarkan preferensi pengguna.
+    </li>
+    <li>
+        Memulai kembali sinkronisasi yang telah berhenti.
+    </li>
+    </ul>
+<p>
+    Untuk menggunakan kerangka kerja ini, Anda harus menyediakan plug-in adaptor sinkronisasi. Setiap adaptor sinkronisasi bersifat unik bagi
+    layanan dan penyedia konten, tetapi mampu menangani beberapa nama akun untuk layanan yang sama. Kerangka
+    kerja ini juga memungkinkan beberapa adaptor sinkronisasi untuk layanan dan penyedia yang sama.
+</p>
+<h3 id="SyncClassesFiles">Kelas dan file adaptor sinkronisasi</h3>
+<p>
+    Anda mengimplementasikan adaptor sinkronisasi sebagai subkelas
+    {@link android.content.AbstractThreadedSyncAdapter} dan menginstalnya sebagai bagian dari aplikasi
+    Android. Sistem akan mempelajari adaptor sinkronisasi dari elemen-elemen di manifes
+     aplikasi Anda dan dari file XML khusus yang ditunjuk oleh manifes. File XML mendefinisikan
+    tipe akun untuk layanan online dan otoritas untuk penyedia konten, yang bersama-sama
+    mengidentifikasi adaptor secara unik. Adaptor sinkronisasi tidak menjadi aktif hingga pengguna menambahkan
+    akun untuk tipe akun adaptor sinkronisasi dan memungkinkan sinkronisasi untuk penyedia
+    konten yang disinkronkan dengan adaptor sinkronisasi.  Pada saat itu, sistem mulai mengelola adaptor,
+    memanggilnya seperlunya untuk menyinkronkan antara penyedia konten dan server.
+</p>
+<p class="note">
+    <strong>Catatan:</strong> Menggunakan tipe akun sebagai bagian dari identifikasi adaptor sinkronisasi memungkinkan
+    sistem mendeteksi dan menghimpun adaptor-adaptor sinkronisasi yang mengakses berbagai layanan dari
+    organisasi yang sama. Misalnya, adaptor sinkronisasi untuk semua layanan online Google semuanya memiliki tipe akun
+    yang sama <code>com.google</code>. Bila pengguna menambahkan akun Google ke perangkatnya, semua
+    adaptor sinkronisasi yang terinstal untuk layanan Google akan dicantumkan bersama; setiap adaptor sinkronisasi
+    yang tercantum akan menyinkronkan diri dengan berbagai penyedia konten pada perangkat.
+</p>
+<p>
+    Karena sebagian besar layanan mengharuskan pengguna untuk memeriksa identitas sebelum mengakses
+    data, sistem Android menawarkan kerangka kerja autentikasi yang serupa dengan, dan sering kali
+    digunakan bersama, kerangka kerja adaptor sinkronisasi. Kerangka kerja autentikasi menggunakan
+    autentikator plug-in yang merupakan subkelas
+    {@link android.accounts.AbstractAccountAuthenticator}. Autentikator memeriksa
+    identitas pengguna dalam langkah-langkah berikut:
+    <ol>
+        <li>
+            Mengumpulkan nama pengguna, kata sandi, atau informasi serupa (
+            <strong>kredensial</strong> pengguna).
+        </li>
+        <li>
+            Mengirimkan kredensial ke layanan
+        </li>
+        <li>
+            Memeriksa balasan layanan.
+        </li>
+    </ol>
+<p>
+    Jika layanan menerima kredensial, autentikator bisa
+    menyimpan kredensial itu untuk digunakan nanti. Karena kerangka kerja autentikator plug-in,
+    {@link android.accounts.AccountManager} bisa menyediakan akses ke setiap token autentikasi yang didukung suatu autentikator
+    dan dipilihnya untuk diekspos, seperti token autentikasi OAuth2.
+</p>
+<p>
+    Meskipun autentikasi tidak diharuskan, sebagian besar layanan kontak menggunakannya.
+    Akan tetapi, Anda tidak wajib menggunakan kerangka kerja autentikasi Android untuk melakukan autentikasi.
+</p>
+<h3 id="SyncAdapterImplementing">Implementasi adaptor sinkronisasi</h3>
+<p>
+    Untuk mengimplementasikan adaptor sinkronisasi bagi Penyedia Kontak, perlu Anda memulai dengan membuat
+    aplikasi Android yang berisi elemen-elemen berikut:
+</p>
+    <dl>
+        <dt>
+            Komponen {@link android.app.Service} yang merespons permintaan sistem untuk
+            mengikat ke adaptor sinkronisasi.
+        </dt>
+        <dd>
+            Bila sistem ingin menjalankan sinkronisasi, sistem akan memanggil metode
+            {@link android.app.Service#onBind(Intent) onBind()} layanan untuk mendapatkan
+            {@link android.os.IBinder} bagi adaptor sinkronisasi. Hal ini memungkinkan sistem melakukan
+            panggilan lintas proses ke metode adaptor.
+            <p>
+                Dalam contoh aplikasi <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+               Sample Sync Adapter</a>, nama kelas layanan ini adalah
+                <code>com.example.android.samplesync.syncadapter.SyncService</code>.
+            </p>
+        </dd>
+        <dt>
+            Adaptor sinkronisasi yang sesungguhnya, diimplementasikan sebagai subkelas konkret dari
+            {@link android.content.AbstractThreadedSyncAdapter}.
+        </dt>
+        <dd>
+            Kelas ini melakukan pekerjaan mengunduh data dari server, mengunggah data ke
+            perangkat, dan menyelesaikan konflik. Pekerjaan utama adaptor
+            diselesaikan dengan metode {@link android.content.AbstractThreadedSyncAdapter#onPerformSync(
+            Account, Bundle, String, ContentProviderClient, SyncResult)
+            onPerformSync()}. Instance kelas ini harus dibuat sebagai singleton.
+            <p>
+                Dalam contoh aplikasi <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+               Sample Sync Adapter</a>, adaptor sinkronisasi didefinisikan dalam kelas
+                <code>com.example.android.samplesync.syncadapter.SyncAdapter</code>.
+            </p>
+        </dd>
+        <dt>
+            Subkelas {@link android.app.Application}.
+        </dt>
+        <dd>
+            Kelas ini berfungsi sebagai pabrik untuk singleton adaptor sinkronisasi. Gunakan
+            metode {@link android.app.Application#onCreate()} untuk membuat instance adaptor sinkronisasi , dan
+            menyediakan metode "getter" statis untuk mengembalikan singleton ke
+            metode {@link android.app.Service#onBind(Intent) onBind()} dari layanan
+            adaptor sinkronisasi.
+        </dd>
+        <dt>
+            <strong>Opsional:</strong> Komponen {@link android.app.Service} yang merespons
+            permintaan dari sistem untuk autentikasi pengguna.
+        </dt>
+        <dd>
+            {@link android.accounts.AccountManager} memulai layanan ini untuk memulai proses
+            autentikasi. Metode {@link android.app.Service#onCreate()} layanan membuat instance
+            objek autentikator. Bila sistem ingin mengautentikasi akun pengguna untuk
+            adaptor sinkronisasi aplikasi, sistem akan memanggil metode
+{@link android.app.Service#onBind(Intent) onBind()}            layanan guna mendapatkan
+            {@link android.os.IBinder} bagi autentikator. Hal ini memungkinkan sistem melakukan
+            panggilan lintas proses ke metode autentikator.
+            <p>
+                Dalam contoh aplikasi <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+               Sample Sync Adapter</a>, nama kelas layanan ini adalah
+                <code>com.example.android.samplesync.authenticator.AuthenticationService</code>.
+            </p>
+        </dd>
+        <dt>
+            <strong>Opsional:</strong> Subkelas konkret
+            {@link android.accounts.AbstractAccountAuthenticator} yang menangani permintaan
+            autentikasi.
+        </dt>
+        <dd>
+            Kelas ini menyediakan metode yang dipicu {@link android.accounts.AccountManager}
+            untuk mengautentikasi kredensial pengguna dengan layanan. Detail
+            proses autentikasi sangat bervariasi, berdasarkan teknologi server yang digunakan. Anda harus
+            mengacu ke dokumentasi bagi perangkat lunak server untuk mengetahui selengkapnya tentang autentikasi.
+            <p>
+                Dalam contoh aplikasi <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+               Sample Sync Adapter</a>, autentikator didefinisikan dalam kelas
+                <code>com.example.android.samplesync.authenticator.Authenticator</code>.
+            </p>
+        </dd>
+        <dt>
+            File XML yang mendefinisikan adaptor sinkronisasi dan autentikator bagi sistem.
+        </dt>
+        <dd>
+            Komponen-komponen layanan adaptor sinkronisasi dan autentikator
+            didefinisikan dalam elemen-elemen
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/service-element.html">service</a>&gt;</code>
+            di manifes aplikasi. Elemen-elemen ini
+            berisi
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+elemen anak yang menyediakan data tertentu ke
+            sistem:
+            <ul>
+                <li>
+                    Elemen
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+                    untuk layanan adaptor sinkronisasi menunjuk ke
+                    file XML <code>res/xml/syncadapter.xml</code>. Pada gilirannya, file ini mendefinisikan
+                    URI untuk layanan web yang akan disinkronkan dengan Penyedia Kontak,
+                    dan tipe akun untuk layanan web.
+                </li>
+                <li>
+                    <strong>Opsional:</strong> Elemen
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+                   untuk autentikator menunjuk ke file XML
+                    <code>res/xml/authenticator.xml</code>. Pada gilirannya, file ini menetapkan
+                    tipe akun yang didukung autentikator, serta sumber daya UI yang
+                    muncul selama proses autentikasi. Tipe akun yang ditetapkan dalam elemen ini
+                    harus sama dengan tipe akun yang ditetapkan untuk adaptor
+                    sinkronisasi.
+                </li>
+            </ul>
+        </dd>
+    </dl>
+<h2 id="SocialStream">Data Aliran Sosial</h2>
+<p>
+    Tabel-tabel {@code android.provider.ContactsContract.StreamItems} dan
+    {@code android.provider.ContactsContract.StreamItemPhotos}
+    mengelola data yang masuk dari jaringan sosial. Anda bisa menulis adaptor sinkronisasi yang menambahkan data aliran
+    dari jaringan Anda sendiri ke tabel-tabel ini, atau Anda bisa membaca data aliran dari tabel-tabel ini dan
+    menampilkannya dalam aplikasi sendiri, atau keduanya. Dengan fitur-fitur ini, layanan dan aplikasi
+    jaringan sosial Anda bisa diintegrasikan ke dalam pengalaman jaringan sosial Android.
+</p>
+<h3 id="StreamText">Teks aliran sosial</h3>
+<p>
+    Item aliran selalu dikaitkan dengan kontak mentah.
+    {@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID} menautkan ke
+    nilai <code>_ID</code> untuk kontak mentah. Tipe akun dan nama akun kontak
+    mentah juga disimpan dalam baris item aliran.
+</p>
+<p>
+    Simpanlah data dari aliran Anda dalam kolom-kolom berikut:
+</p>
+<dl>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_TYPE}
+    </dt>
+    <dd>
+        <strong>Diperlukan.</strong> Tipe akun pengguna untuk kontak mentah yang dikaitkan dengan
+        item aliran ini. Ingatlah untuk mengatur nilai ini saat Anda menyisipkan item aliran.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_NAME}
+    </dt>
+    <dd>
+        <strong>Diperlukan.</strong> Nama akun pengguna untuk kontak mentah yang dikaitkan dengan
+        item aliran ini. Ingatlah untuk mengatur nilai ini saat Anda menyisipkan item aliran.
+    </dd>
+    <dt>
+        Kolom identifier
+    </dt>
+    <dd>
+        <strong>Diperlukan.</strong> Anda harus memasukkan kolom identifier berikut saat
+        menyisipkan item aliran:
+        <ul>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_ID}:
+                Nilai {@code android.provider.BaseColumns#_ID} kontak yang dikaitkan dengan item aliran
+                ini.
+            </li>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_LOOKUP_KEY}:
+                Nilai {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}
+                kontak yang dikaitkan dengan item aliran ini.
+            </li>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}:
+                Nilai {@code android.provider.BaseColumns#_ID} kontak mentah yang dikaitkan dengan item aliran
+                ini.
+            </li>
+        </ul>
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#COMMENTS}
+    </dt>
+    <dd>
+        Opsional. Menyimpan informasi rangkuman yang bisa Anda tampilkan di awal item aliran.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#TEXT}
+    </dt>
+    <dd>
+        Teks item aliran, baik konten yang diposting oleh sumber item,
+        maupun keterangan beberapa tindakan yang menghasilkan item aliran. Kolom ini bisa berisi
+        sembarang gambar sumber daya pemformatan dan tertanam yang bisa dirender oleh
+        {@link android.text.Html#fromHtml(String) fromHtml()}. Penyedia bisa memotong atau
+        menghapus konten yang panjang, tetapi penyedia akan mencoba menghindari memutus tag.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP}
+    </dt>
+    <dd>
+        String teks berisi waktu item aliran yang disisipkan atau diperbarui, berupa
+        <em>milidetik</em> sejak waktu patokan. Aplikasi yang menyisipkan atau memperbarui item aliran
+        bertanggung jawab memelihara kolom ini; aplikasi tidak dipelihara secara otomatis oleh
+        Penyedia Kontak.
+    </dd>
+</dl>
+<p>
+    Untuk menampilkan informasi pengidentifikasi item aliran Anda, gunakan
+    {@code android.provider.ContactsContract.StreamItemsColumns#RES_ICON},
+    {@code android.provider.ContactsContract.StreamItemsColumns#RES_LABEL}, dan
+    {@code android.provider.ContactsContract.StreamItemsColumns#RES_PACKAGE} untuk menautkan ke sumber daya
+    dalam aplikasi Anda.
+</p>
+<p>
+    Tabel {@code android.provider.ContactsContract.StreamItems} juga berisi kolom-kolom
+    {@code android.provider.ContactsContract.StreamItemsColumns#SYNC1} hingga
+    {@code android.provider.ContactsContract.StreamItemsColumns#SYNC4} untuk penggunaan eksklusif oleh
+    adaptor sinkronisasi.
+</p>
+<h3 id="StreamPhotos">Foto aliran sosial</h3>
+<p>
+   Tabel {@code android.provider.ContactsContract.StreamItemPhotos} menyimpan foto-foto yang dikaitkan
+   dengan item aliran. Kolom
+{@code android.provider.ContactsContract.StreamItemPhotosColumns#STREAM_ITEM_ID}   tabel ini
+   menautkan ke nilai dalam kolom {@code android.provider.BaseColumns#_ID}
+   tabel {@code android.provider.ContactsContract.StreamItems}. Acuan foto disimpan dalam
+   tabel pada kolom-kolom ini:
+</p>
+<dl>
+    <dt>
+        Kolom {@code android.provider.ContactsContract.StreamItemPhotos#PHOTO} (BLOB).
+    </dt>
+    <dd>
+        Representasi biner foto, yang diubah ukurannya oleh penyedia untuk penyimpanan dan tampilan.
+        Kolom ini tersedia untuk kompatibilitas ke belakang dengan versi Penyedia Kontak
+        sebelumnya yang menggunakannya untuk menyimpan foto. Akan tetapi, pada versi saat ini
+        Anda tidak boleh menggunakan kolom ini untuk menyimpan foto. Sebagai gantinya, gunakan
+         {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID} atau
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI} (keduanya
+        dijelaskan dalam poin-poin berikut) untuk menyimpan foto di file. Kolom ini sekarang
+        berisi thumbnail foto, yang tersedia untuk dibaca.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID}
+    </dt>
+    <dd>
+        Identifier numerik foto untuk kontak mentah. Tambahkan nilai ini ke konstanta
+        {@link android.provider.ContactsContract.DisplayPhoto#CONTENT_URI DisplayPhoto.CONTENT_URI}
+        untuk mendapatkan URI konten yang menunjuk ke satu file foto, kemudian panggil
+        {@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
+        openAssetFileDescriptor()} untuk mendapatkan handle ke file foto.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI}
+    </dt>
+    <dd>
+        URI konten menunjuk langsung ke file foto untuk foto yang diwakili oleh baris ini.
+        Panggillah {@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
+        openAssetFileDescriptor()} dengan URI ini untuk mendapatkan handle ke file foto.
+    </dd>
+</dl>
+<h3 id="SocialStreamTables">Menggunakan tabel aliran sosial</h3>
+<p>
+    Tabel-tabel ini sama fungsinya dengan tabel-tabel utama lainnya dalam Penyedia Kontak, kecuali:
+</p>
+    <ul>
+        <li>
+            Tabel-tabel ini memerlukan izin akses tambahan. Untuk membaca dari tabel, aplikasi Anda
+            harus memiliki izin {@code android.Manifest.permission#READ_SOCIAL_STREAM}. Untuk memodifikasi
+            tabel, aplikasi Anda harus memiliki izin
+            {@code android.Manifest.permission#WRITE_SOCIAL_STREAM}.
+        </li>
+        <li>
+            Untuk tabel {@code android.provider.ContactsContract.StreamItems}, jumlah baris
+            yang disimpan bagi setiap kontak mentah adalah terbatas. Setelah batasnya tercapai,
+            Penyedia Kontak akan membuat ruang untuk baris item aliran baru dengan menghapus secara otomatis
+            baris yang memiliki
+            {@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP} terlama. Untuk mendapatkan
+            batas, keluarkan query ke URI konten
+            {@code android.provider.ContactsContract.StreamItems#CONTENT_LIMIT_URI}. Anda bisa membiarkan
+            semua argumen selain URI konten diatur ke <code>null</code>. Query
+            menghasilkan sebuah Kursor yang berisi baris tunggal, dengan kolom tunggal
+            {@code android.provider.ContactsContract.StreamItems#MAX_ITEMS}.
+        </li>
+    </ul>
+
+<p>
+    Kelas {@code android.provider.ContactsContract.StreamItems.StreamItemPhotos} mendefinisikan
+    subtabel {@code android.provider.ContactsContract.StreamItemPhotos} yang berisi
+    baris foto untuk satu item aliran.
+</p>
+<h3 id="SocialStreamInteraction">Interaksi aliran sosial</h3>
+<p>
+    Data aliran sosial yang dikelola oleh Penyedia Kontak, bersama aplikasi kontak
+    perangkat, menawarkan cara andal untuk menghubungkan sistem jaringan sosial Anda
+    dengan kontak yang ada. Tersedia fitur-fitur berikut:
+</p>
+    <ul>
+        <li>
+            Dengan menyinkronkan layanan jaringan sosial ke Penyedia Kontak dengan adaptor
+            sinkronisasi, Anda bisa mengambil aktivitas terbaru untuk kontak pengguna dan menyimpannya dalam tabel-tabel
+             {@code android.provider.ContactsContract.StreamItems} dan
+            {@code android.provider.ContactsContract.StreamItemPhotos} untuk digunakan nanti.
+        </li>
+        <li>
+            Selain sinkronisasi rutin, Anda bisa memicu adaptor sinkronisasi agar mengambil
+            data tambahan bila pengguna memilih sebuah kontak untuk ditampilkan. Hal ini memungkinkan adaptor sinkronisasi Anda
+            mengambil foto resolusi tinggi dan item aliran terbaru untuk kontak.
+        </li>
+        <li>
+            Dengan mendaftarkan pemberitahuan pada aplikasi kontak perangkat dan Penyedia Kontak,
+            Anda bisa <em>menerima</em> intent saat kontak ditampilkan, dan pada saat itu
+            memperbarui status kontak dari layanan Anda. Pendekatan ini mungkin lebih cepat dan menggunakan
+            bandwidth lebih sedikit daripada melakukan sinkronisasi penuh dengan adaptor sinkronisasi.
+        </li>
+        <li>
+            Pengguna bisa menambahkan kontak ke layanan jaringan sosial Anda sambil melihat kontak
+            dalam aplikasi kontak perangkat. Anda mengaktifkannya dengan fitur "invite contact",
+            yang Anda aktifkan dengan kombinasi aktivitas yang menambahkan kontak yang ada ke jaringan
+           Anda, dan file XML yang menyediakan aplikasi kontak perangkat dan
+            Penyedia Kontak dengan detail aplikasi Anda.
+        </li>
+    </ul>
+<p>
+    Sinkronisasi rutin item aliran dengan Penyedia Kontak sama dengan
+    sinkronisasi lainnya. Untuk mengetahui selengkapnya tentang sinkronisasi, lihat bagian
+    <a href="#SyncAdapters">Adaptor Sinkronisasi Penyedia Kontak</a>. Mendaftarkan pemberitahuan dan
+    mengundang kontak dibahas dalam dua bagian berikutnya.
+</p>
+<h4>Pendaftaran untuk menangani tampilan jaringan sosial</h4>
+<p>
+    Untuk mendaftarkan adaptor sinkronisasi agar menerima pemberitahuan saat pengguna menampilkan kontak
+    yang dikelola oleh adaptor sinkronisasi Anda:
+</p>
+<ol>
+    <li>
+        Buat file yang bernama <code>contacts.xml</code> dalam direktori <code>res/xml/</code>
+        proyek Anda. Jika sudah memiliki file ini, langkah ini boleh dilewati.
+    </li>
+    <li>
+        Dalam file ini, tambahkan elemen
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>.
+        Jika elemen ini sudah ada, langkah ini boleh dilewati.
+    </li>
+    <li>
+        Untuk mendaftarkan layanan yang diberitahukan saat pengguna membuka halaman detail kontak dalam
+        aplikasi kontak perangkat, tambahkan atribut
+        <code>viewContactNotifyService="<em>serviceclass</em>"</code> ke elemen, dengan
+        <code><em>serviceclass</em></code> sebagai nama kelas mutlak (fully qualified) dari layanan
+        yang seharusnya menerima intent dari aplikasi kontak perangkat. Untuk layanan
+        notifier, gunakan kelas yang memperluas {@link android.app.IntentService}, guna memudahkan layanan
+        untuk menerima intent. Data dalam intent yang masuk berisi URI konten dari kontak
+        mentah yang diklik pengguna. Untuk layanan notifier, Anda bisa mengikatnya ke kemudian memanggil
+        adaptor sinkronisasi Anda untuk memperbarui data bagi kontak mentah.
+    </li>
+</ol>
+<p>
+    Untuk mendaftarkan aktivitas agar dipanggil saat pengguna mengklik item aliran atau foto atau keduanya:
+</p>
+<ol>
+    <li>
+        Buat file yang bernama <code>contacts.xml</code> dalam direktori <code>res/xml/</code>
+        proyek Anda. Jika sudah memiliki file ini, langkah ini boleh dilewati.
+    </li>
+    <li>
+        Dalam file ini, tambahkan elemen
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>.
+        Jika elemen ini sudah ada, langkah ini boleh dilewati.
+    </li>
+    <li>
+        Untuk mendaftarkan salah satu aktivitas Anda guna menangani klik oleh pengguna pada item aliran dalam
+        aplikasi kontak perangkat, tambahkan atribut
+        <code>viewStreamItemActivity="<em>activityclass</em>"</code> ke elemen, dengan
+        <code><em>activityclass</em></code> sebagai nama kelas mutlak (fully-qualified) dari aktivitas
+        yang harus menerima intent dari aplikasi kontak perangkat.
+    </li>
+    <li>
+        Untuk mendaftarkan salah satu aktivitas Anda guna menangani klik oleh pengguna pada foto aliran dalam
+        aplikasi kontak perangkat, tambahkan atribut
+        <code>viewStreamItemPhotoActivity="<em>activityclass</em>"</code> ke elemen, dengan
+        <code><em>activityclass</em></code> adalah kelas nama mutlak aktivitas
+        yang harus menerima intent dari aplikasi kontak perangkat.
+    </li>
+</ol>
+<p>
+    Elemen <code>&lt;ContactsAccountType&gt;</code> dijelaskan lebih detail di
+    bagian <a href="#SocialStreamAcctType">Elemen &lt;ContactsAccountType&gt;</a>.
+</p>
+<p>
+    Intent yang masuk berisi URI konten dari materi atau foto yang diklik pengguna.
+    Untuk mendapatkan aktivitas terpisah bagi item teks dan foto, gunakan kedua atribut dalam file yang sama.
+</p>
+<h4>Berinteraksi dengan layanan jaringan sosial Anda</h4>
+<p>
+    Pengguna tidak harus meninggalkan aplikasi perangkat kontak untuk mengundang kontak ke situs
+    jaringan sosial Anda. Sebagai gantinya, Anda bisa meminta aplikasi kontak perangkat mengirimkan intent untuk mengundang
+    kontak ke salah satu aktivitas Anda. Untuk mempersiapkannya:
+</p>
+<ol>
+    <li>
+        Buat file yang bernama <code>contacts.xml</code> dalam direktori <code>res/xml/</code>
+        proyek Anda. Jika sudah memiliki file ini, langkah ini boleh dilewati.
+    </li>
+    <li>
+        Dalam file ini, tambahkan elemen
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>.
+        Jika elemen ini sudah ada, langkah ini boleh dilewati.
+    </li>
+    <li>
+        Tambahkan atribut-atribut berikut:
+        <ul>
+            <li><code>inviteContactActivity="<em>activityclass</em>"</code></li>
+            <li>
+                <code>inviteContactActionLabel="&#64;string/<em>invite_action_label</em>"</code>
+            </li>
+        </ul>
+        Nilai <code><em>activityclass</em></code> adalah nama kelas mutlak
+        aktivitas yang harus menerima intent ini. Nilai <code><em>invite_action_label</em></code>
+        adalah string teks yang ditampilkan dalam menu <strong>Add Connection</strong> dalam
+        aplikasi kontak perangkat.
+    </li>
+</ol>
+<p class="note">
+    <strong>Catatan:</strong> <code>ContactsSource</code> adalah nama tag yang sudah usang untuk
+    <code>ContactsAccountType</code>.
+</p>
+<h3 id="ContactsFile">Acuan contacts.xml</h3>
+<p>
+    File <code>contacts.xml</code> berisi elemen XML yang mengontrol interaksi adaptor sinkronisasi
+    Anda dan aplikasi dengan aplikasi kontak dan Penyedia Kontak. Elemen-elemen ini
+    dijelaskan di bagian-bagian selanjutnya.
+</p>
+<h4 id="SocialStreamAcctType">Elemen &lt;ContactsAccountType&gt;</h4>
+<p>
+    Elemen <code>&lt;ContactsAccountType&gt;</code> mengontrol interaksi aplikasi
+    Anda dengan aplikasi kontak. Sintaksnya adalah sebagai berikut:
+</p>
+<pre>
+&lt;ContactsAccountType
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        inviteContactActivity="<em>activity_name</em>"
+        inviteContactActionLabel="<em>invite_command_text</em>"
+        viewContactNotifyService="<em>view_notify_service</em>"
+        viewGroupActivity="<em>group_view_activity</em>"
+        viewGroupActionLabel="<em>group_action_text</em>"
+        viewStreamItemActivity="<em>viewstream_activity_name</em>"
+        viewStreamItemPhotoActivity="<em>viewphotostream_activity_name</em>"&gt;
+</pre>
+<p>
+    <strong>dimuat dalam:</strong>
+</p>
+<p>
+    <code>res/xml/contacts.xml</code>
+</p>
+<p>
+    <strong>bisa berisi:</strong>
+</p>
+<p>
+    <strong><code>&lt;ContactsDataKind&gt;</code></strong>
+</p>
+<p>
+    <strong>Keterangan:</strong>
+</p>
+<p>
+    Mendeklarasikan komponen Android dan label UI yang memungkinkan pengguna mengundang salah satu kontak ke
+    jaringan sosial, memberi tahu pengguna bila salah satu aliran jaringan sosial diperbarui, dan
+    seterusnya.
+</p>
+<p>
+    Perhatikan bahwa awalan atribut <code>android:</code> tidak perlu untuk atribut-atribut
+    <code>&lt;ContactsAccountType&gt;</code>.
+</p>
+<p>
+    <strong>Atribut:</strong>
+</p>
+<dl>
+    <dt>{@code inviteContactActivity}</dt>
+    <dd>
+        Nama kelas mutlak aktivitas dalam aplikasi yang Anda ingin
+        aktifkan bila pengguna memilih <strong>Add connection</strong> dari aplikasi kontak
+        perangkat.
+    </dd>
+    <dt>{@code inviteContactActionLabel}</dt>
+    <dd>
+        String teks yang ditampilkan untuk aktivitas yang ditetapkan dalam
+        {@code inviteContactActivity}, dalam menu <strong>Add connection</strong>.
+        Misalnya, Anda bisa menggunakan string "Ikuti di jaringan saya". Anda bisa menggunakan identifier sumber daya
+        string untuk tabel ini.
+    </dd>
+    <dt>{@code viewContactNotifyService}</dt>
+    <dd>
+        Nama kelas mutlak layanan dalam aplikasi Anda yang harus menerima
+        pemberitahuan saat pengguna menampilkan kontak. Pemberitahuan ini dikirimkan oleh aplikasi kontak
+        perangkat; hal ini memungkinkan aplikasi Anda menunda operasi yang banyak memproses data
+        hingga dibutuhkan. Misalnya, aplikasi Anda bisa merespons pemberitahuan ini
+        dengan membaca dalam dan menampilkan foto resolusi tinggi kontak dan item aliran sosial
+        terbaru. Fitur ini dijelaskan lebih detail di bagian
+        <a href="#SocialStreamInteraction">Interaksi aliran sosial</a>. Anda bisa melihat
+        contoh layanan pemberitahuan dalam file <code>NotifierService.java</code> dalam contoh aplikasi
+        <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">Sample Sync Adapter</a>.
+
+    </dd>
+    <dt>{@code viewGroupActivity}</dt>
+    <dd>
+        Nama kelas mutlak aktivitas dalam aplikasi yang bisa menampilkan
+        informasi grup. Bila pengguna mengklik label grup dalam aplikasi
+        kontak perangkat, UI aktivitas ini akan ditampilkan.
+    </dd>
+    <dt>{@code viewGroupActionLabel}</dt>
+    <dd>
+        Label yang ditampilkan aplikasi kontak untuk kontrol UI yang memungkinkan
+        pengguna melihat grup dalam aplikasi Anda.
+        <p>
+            Misalnya, jika Anda menginstal aplikasi Google+ di perangkat dan menyinkronkan
+            Google+ dengan aplikasi kontak, Anda akan melihat lingkaran Google+ tercantum sebagai grup
+            dalam tab <strong>Groups</strong> aplikasi kontak Anda. Jika Anda mengklik
+            lingkaran Google+, Anda akan melihat orang-orang di lingkaran itu tercantum sebagai satu "grup". Di atas
+            tampilan, Anda akan melihat ikon Google+; jika mengklik ikon itu, kontrol akan beralih ke
+            aplikasi Google+. Aplikasi kontak melakukan ini dengan
+            {@code viewGroupActivity}, yang menggunakan ikon Google+ sebagai nilai
+            {@code viewGroupActionLabel}.
+        </p>
+        <p>
+            Identifier sumber daya string diperbolehkan untuk atribut ini.
+        </p>
+    </dd>
+    <dt>{@code viewStreamItemActivity}</dt>
+    <dd>
+        Nama kelas mutlak aktivitas dalam aplikasi Anda
+        yang diluncurkan aplikasi kontak perangkat bila pengguna mengklik item aliran untuk kontak mentah.
+    </dd>
+    <dt>{@code viewStreamItemPhotoActivity}</dt>
+    <dd>
+        Nama kelas mutlak aktivitas yang diluncurkan
+        aplikasi kontak perangkat bila pengguna mengklik foto dalam item aliran
+        untuk kontak mentah.
+    </dd>
+</dl>
+<h4 id="SocialStreamDataKind">Elemen &lt;ContactsDataKind&gt;</h4>
+<p>
+    Elemen <code>&lt;ContactsDataKind&gt;</code> mengontrol tampilan baris data custom
+    aplikasi Anda dalam UI aplikasi kontak. Sintaksnya adalah sebagai berikut:
+</p>
+<pre>
+&lt;ContactsDataKind
+        android:mimeType="<em>MIMEtype</em>"
+        android:icon="<em>icon_resources</em>"
+        android:summaryColumn="<em>column_name</em>"
+        android:detailColumn="<em>column_name</em>"&gt;
+</pre>
+<p>
+    <strong>dimuat dalam:</strong>
+</p>
+<code>&lt;ContactsAccountType&gt;</code>
+<p>
+    <strong>Keterangan:</strong>
+</p>
+<p>
+    Gunakan elemen ini untuk memerintahkan aplikasi kontak agar menampilkan konten baris data custom sebagai
+    bagian dari detail kontak mentah. Setiap elemen anak <code>&lt;ContactsDataKind&gt;</code>
+    <code>&lt;ContactsAccountType&gt;</code> mewakili tipe baris data custom yang
+    ditambahkan adaptor sinkronisasi Anda ke tabel {@link android.provider.ContactsContract.Data}. Tambahkan satu
+    elemen <code>&lt;ContactsDataKind&gt;</code> untuk setiap tipe MIME custom yang Anda gunakan. Anda tidak harus
+    menambahkan elemen jika Anda memiliki baris data custom yang datanya tidak ingin ditampilkan.
+</p>
+<p>
+    <strong>Atribut:</strong>
+</p>
+<dl>
+    <dt>{@code android:mimeType}</dt>
+    <dd>
+        Tipe MIME custom yang telah Anda definisikan untuk salah satu tipe baris data custom dalam
+        tabel {@link android.provider.ContactsContract.Data}. Misalnya, nilai
+        <code>vnd.android.cursor.item/vnd.example.locationstatus</code> bisa berupa tipe MIME
+       custom untuk baris data yang mencatat lokasi kontak yang terakhir diketahui.
+    </dd>
+    <dt>{@code android:icon}</dt>
+    <dd>
+
+        <a href="{@docRoot}guide/topics/resources/drawable-resource.html">Sumber daya drawable</a>
+        Android yang ditampilkan aplikasi kontak di samping data Anda. Gunakan ini untuk menunjukkan kepada
+        pengguna bahwa data berasal dari layanan Anda.
+    </dd>
+    <dt>{@code android:summaryColumn}</dt>
+    <dd>
+        Nama kolom untuk yang pertama dari dua nilai yang diambil dari baris data. Nilai
+        ditampilkan sebagai baris pertama entri untuk baris data ini. Baris pertama
+        dimaksudkan untuk digunakan sebagai rangkuman data, tetapi itu bersifat opsional. Lihat juga
+        <a href="#detailColumn">android:detailColumn</a>.
+    </dd>
+    <dt>{@code android:detailColumn}</dt>
+    <dd>
+        Nama kolom untuk yang kedua dari dua nilai yang diambil dari baris data. Nilai
+        ditampilkan sebagai baris kedua entri untuk baris data ini. Lihat juga
+        {@code android:summaryColumn}.
+    </dd>
+</dl>
+<h2 id="AdditionalFeatures">Fitur Tambahan Penyedia Kontak</h2>
+<p>
+    Di samping fitur-fitur utama yang dijelaskan di bagian sebelumnya, Penyedia Kontak menawarkan
+   fitur-fitur berguna ini untuk digunakan bersama data kontak:
+</p>
+    <ul>
+       <li>Grup kontak</li>
+       <li>Fitur foto</li>
+    </ul>
+<h3 id="Groups">Grup kontak</h3>
+<p>
+    Penyedia Kontak secara opsional bisa melabeli kumpulan kontak terkait dengan data
+    <strong>grup</strong>. Jika server yang dikaitkan dengan akun pengguna
+    ingin mempertahankan grup, adaptor sinkronisasi untuk tipe akun dari akun itu harus mentransfer
+    data grup antara Penyedia Kontak dan server. Bila pengguna menambahkan kontak baru ke
+    server, kemudian memasukkan kontak ini dalam grup baru, adaptor sinkronisasi harus menambahkan grup baru
+    ke tabel {@link android.provider.ContactsContract.Groups}. Grup atau grup-grup yang memiliki kontak
+    disimpan dalam tabel {@link android.provider.ContactsContract.Data}, dengan menggunakan
+    tipe MIME {@link android.provider.ContactsContract.CommonDataKinds.GroupMembership}.
+</p>
+<p>
+    Jika Anda mendesain adaptor sinkronisasi yang akan menambahkan data kontak mentah dari
+    server ke Penyedia Kontak, dan Anda tidak menggunakan grup, maka Anda harus memberi tahu
+    penyedia itu agar membuat data Anda terlihat. Dalam kode yang dijalankan bila pengguna menambahkan akun
+    ke perangkat, perbarui baris {@link android.provider.ContactsContract.Settings}
+    yang ditambahkan Penyedia Kontak untuk akunnya. Dalam baris ini, atur nilai kolom
+    {@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE
+    Settings.UNGROUPED_VISIBLE} ke 1. Bila melakukannya, Penyedia Kontak akan selalu
+    membuat data kontak Anda terlihat, meskipun Anda tidak menggunakan grup.
+</p>
+<h3 id="Photos">Foto kontak</h3>
+<p>
+    Tabel {@link android.provider.ContactsContract.Data} menyimpan foto sebagai baris dengan tipe MIME
+    {@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
+    Photo.CONTENT_ITEM_TYPE}. Kolom
+    {@link android.provider.ContactsContract.RawContactsColumns#CONTACT_ID} baris yang ditautkan ke
+    kolom {@code android.provider.BaseColumns#_ID} kontak mentah yang memiliki kolom itu.
+    Kelas {@link android.provider.ContactsContract.Contacts.Photo} mendefinisikan subtabel
+    {@link android.provider.ContactsContract.Contacts} yang berisi informasi foto untuk foto
+    utama kontak, yang merupakan foto utama dari kontak mentah utama kontak itu. Demikian pula,
+    kelas {@link android.provider.ContactsContract.RawContacts.DisplayPhoto} mendefinisikan subtabel
+    {@link android.provider.ContactsContract.RawContacts} yang berisi informasi foto untuk
+    foto utama kontak mentah.
+</p>
+<p>
+    Dokumentasi acuan untuk {@link android.provider.ContactsContract.Contacts.Photo} dan
+    {@link android.provider.ContactsContract.RawContacts.DisplayPhoto} berisi contoh-contoh
+    pengambilan informasi foto. Tidak ada kelas praktis untuk mengambil
+    thumbnail utama kontak mentah, tetapi Anda bisa mengirim query ke
+    tabel {@link android.provider.ContactsContract.Data}, dengan memilih
+    {@code android.provider.BaseColumns#_ID} kontak mentah,
+    {@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
+    Photo.CONTENT_ITEM_TYPE}, dan kolom {@link android.provider.ContactsContract.Data#IS_PRIMARY}
+    untuk menemukan baris foto utama kontak mentah.
+</p>
+<p>
+    Data aliran sosial untuk seseorang bisa juga disertai foto. Data ini disimpan dalam
+    tabel {@code android.provider.ContactsContract.StreamItemPhotos}, yang dijelaskan lebih detail
+    di bagian <a href="#StreamPhotos">Foto aliran sosial</a>.
+</p>
diff --git a/docs/html-intl/intl/in/guide/topics/providers/content-provider-basics.jd b/docs/html-intl/intl/in/guide/topics/providers/content-provider-basics.jd
new file mode 100644
index 0000000..c4003ca
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/providers/content-provider-basics.jd
@@ -0,0 +1,1196 @@
+page.title=Dasar-Dasar Penyedia Konten
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<!-- In this document -->
+<h2>Dalam dokumen ini</h2>
+<ol>
+    <li>
+        <a href="#Basics">Ikhtisar</a>
+        <ol>
+            <li>
+                <a href="#ClientProvider">Mengakses penyedia</a>
+            </li>
+            <li>
+                <a href="#ContentURIs">URI Konten</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#SimpleQuery">Mengambil Data dari Penyedia</a>
+        <ol>
+            <li>
+                <a href="#RequestPermissions">Meminta izin akses baca</a>
+            </li>
+            <li>
+                <a href="#Query">Membuat query</a>
+            </li>
+            <li>
+                <a href="#DisplayResults">Menampilkan hasil query</a>
+            </li>
+            <li>
+                <a href="#GettingResults">Mendapatkan data dari hasil query</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#Permissions">Izin Penyedia Konten</a>
+    </li>
+    <li>
+        <a href="#Modifications">Menyisipkan, Memperbarui, dan Menghapus Data</a>
+        <ol>
+            <li>
+                <a href="#Inserting">Menyisipkan data</a>
+            </li>
+            <li>
+                <a href="#Updating">Memperbarui data</a>
+            </li>
+            <li>
+                <a href="#Deleting">Menghapus data</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#DataTypes">Tipe Data Penyedia</a>
+    </li>
+    <li>
+        <a href="#AltForms">Bentuk-Bentuk Alternatif Akses Penyedia</a>
+        <ol>
+            <li>
+                <a href="#Batch">Akses batch</a>
+            </li>
+            <li>
+                <a href="#Intents">Akses data melalui intent</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#ContractClasses">Kelas-kelas Kontrak</a>
+    </li>
+    <li>
+        <a href="#MIMETypeReference">Acuan Tipe MIME</a>
+    </li>
+</ol>
+
+    <!-- Key Classes -->
+<h2>Kelas-kelas utama</h2>
+    <ol>
+        <li>
+            {@link android.content.ContentProvider}
+        </li>
+        <li>
+            {@link android.content.ContentResolver}
+        </li>
+        <li>
+            {@link android.database.Cursor}
+        </li>
+        <li>
+            {@link android.net.Uri}
+        </li>
+    </ol>
+
+    <!-- Related Samples -->
+<h2>Contoh-Contoh Terkait</h2>
+    <ol>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html">
+        Kursor (Orang)</a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html">
+        Kursor (Telepon)</a>
+        </li>
+    </ol>
+
+    <!-- See also -->
+<h2>Lihat juga</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+            Membuat Penyedia Konten</a>
+        </li>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+            Penyedia Kalender</a>
+        </li>
+    </ol>
+</div>
+</div>
+
+    <!-- Intro paragraphs -->
+<p>
+    Penyedia konten mengelola akses ke repository data pusat. Penyedia
+    adalah bagian dari aplikasi Android, yang sering menyediakan UI-nya sendiri untuk menggunakan
+    data. Akan tetapi, penyedia konten terutama dimaksudkan untuk digunakan oleh
+    aplikasi lain, yang mengakses penyedia itu melalui objek klien penyedia. Bersama-sama, penyedia
+    dan klien penyedia menawarkan antarmuka standar yang konsisten ke data yang juga menangani
+    komunikasi antar-proses dan akses data aman.
+</p>
+<p>
+    Topik ini menerangkan dasar-dasar dari hal-hal berikut:
+</p>
+    <ul>
+        <li>Cara kerja penyedia konten.</li>
+        <li>API yang Anda gunakan untuk mengambil data dari penyedia konten.</li>
+        <li>API yang Anda gunakan untuk menyisipkan, memperbarui, atau menghapus data dalam penyedia konten.</li>
+        <li>Fitur API lainnya yang memudahkan kita menggunakan penyedia.</li>
+    </ul>
+
+    <!-- Basics -->
+<h2 id="Basics">Ikhtisar</h2>
+<p>
+    Penyedia konten menyajikan data ke aplikasi eksternal sebagai satu atau beberapa tabel yang
+    serupa dengan tabel-tabel yang ditemukan dalam database relasional. Sebuah baris mewakili instance beberapa tipe
+    data yang dikumpulkan penyedia, dan tiap kolom dalam baris mewakili sepotong
+    data yang dikumpulkan untuk sebuah instance.
+</p>
+<p>
+    Misalnya, salah satu penyedia bawaan di platform Android adalah kamus pengguna, yang
+    menyimpan ejaan kata-kata tidak-standar yang ingin disimpan pengguna. Tabel 1 mengilustrasikan
+    wujud data yang mungkin ada dalam tabel penyedia ini:
+</p>
+<p class="table-caption">
+    <strong>Tabel 1:</strong> Contoh tabel kamus pengguna.
+</p>
+<table id="table1" style="width: 50%;">
+    <tr>
+        <th style="width:20%" align="center" scope="col">word</th>
+        <th style="width:20%" align="center" scope="col">app id</th>
+        <th style="width:20%" align="center" scope="col">frequency</th>
+        <th style="width:20%" align="center" scope="col">locale</th>
+        <th style="width:20%" align="center" scope="col">_ID</th>
+    </tr>
+    <tr>
+        <td align="center" scope="row">mapreduce</td>
+        <td align="center">user1</td>
+        <td align="center">100</td>
+        <td align="center">en_US</td>
+        <td align="center">1</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">precompiler</td>
+        <td align="center">user14</td>
+        <td align="center">200</td>
+        <td align="center">fr_FR</td>
+        <td align="center">2</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">applet</td>
+        <td align="center">user2</td>
+        <td align="center">225</td>
+        <td align="center">fr_CA</td>
+        <td align="center">3</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">const</td>
+        <td align="center">user1</td>
+        <td align="center">255</td>
+        <td align="center">pt_BR</td>
+        <td align="center">4</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">int</td>
+        <td align="center">user5</td>
+        <td align="center">100</td>
+        <td align="center">en_UK</td>
+        <td align="center">5</td>
+    </tr>
+</table>
+<p>
+    Dalam tabel 1, tiap baris mewakili instance sebuah kata yang mungkin tidak
+    ditemukan dalam kamus standar. Tiap kolom mewakili beberapa data untuk kata itu, misalnya
+    bahasa lokal tempat kata itu ditemukan kali pertama. Header kolom adalah nama kolom yang disimpan dalam
+    penyedia. Untuk mengacu ke bahasa lokal suatu baris, Anda mengacu ke kolom <code>locale</code>-nya. Untuk
+    penyedia ini, kolom <code>_ID</code> berfungsi sebagai "kunci utama" kolom yang
+    dipelihara oleh penyedia secara otomatis.
+</p>
+<p class="note">
+    <strong>Catatan:</strong> Penyedia tidak diharuskan memiliki kunci utama, dan tidak diharuskan
+    menggunakan <code>_ID</code> sebagai nama kolom kunci utama jika kunci itu ada. Akan tetapi,
+    jika Anda ingin mengikat data dari penyedia ke {@link android.widget.ListView}, salah satu
+    nama kolom harus <code>_ID</code>. Ketentuan ini dijelaskan secara lebih detail di bagian
+    <a href="#DisplayResults">Menampilkan hasil query</a>.
+</p>
+<h3 id="ClientProvider">Mengakses penyedia</h3>
+<p>
+    Aplikasi mengakses data dari penyedia konten dengan
+    sebuah objek klien {@link android.content.ContentResolver}. Objek ini memiliki metode yang memanggil
+    metode dengan nama identik dalam objek penyedia, instance salah satu
+    subkelas konkret dari {@link android.content.ContentProvider}. Metode-metode
+    {@link android.content.ContentResolver} menyediakan fungsi-fungsi dasar
+    "CRUD" (create, retrieve, update, dan delete) pada penyimpanan yang persisten.
+</p>
+<p>
+    Objek {@link android.content.ContentResolver} dalam
+    proses aplikasi klien dan objek {@link android.content.ContentProvider} dalam aplikasi yang memiliki
+    penyedia itu secara otomatis akan menangani komunikasi antar-proses.
+    {@link android.content.ContentProvider} juga berfungsi sebagai lapisan abstraksi antara
+    repository datanya dan penampilan eksternal data sebagai tabel.
+</p>
+<p class="note">
+    <strong>Catatan:</strong> Untuk mengakses penyedia, aplikasi Anda biasanya harus meminta
+    izin tertentu dalam file manifesnya. Hal ini dijelaskan lebih detail di bagian
+    <a href="#Permissions">Izin Penyedia Konten</a>
+</p>
+<p>
+    Misalnya, untuk mendapatkan daftar kata dan lokalnya dari Penyedia Kamus Pengguna,
+    Anda memanggil {@link android.content.ContentResolver#query ContentResolver.query()}.
+    Metode {@link android.content.ContentResolver#query query()} memanggil
+    metode {@link android.content.ContentProvider#query ContentProvider.query()} yang didefinisikan oleh 
+    Penyedia Kamus Pengguna. Baris-baris kode berikut menunjukkan sebuah
+    panggilan {@link android.content.ContentResolver#query ContentResolver.query()}:
+<p>
+<pre>
+// Queries the user dictionary and returns results
+mCursor = getContentResolver().query(
+    UserDictionary.Words.CONTENT_URI,   // The content URI of the words table
+    mProjection,                        // The columns to return for each row
+    mSelectionClause                    // Selection criteria
+    mSelectionArgs,                     // Selection criteria
+    mSortOrder);                        // The sort order for the returned rows
+</pre>
+<p>
+    Tabel 2 menampilkan cara argumen untuk
+    {@link android.content.ContentResolver#query 
+    query(Uri,projection,selection,selectionArgs,sortOrder)} cocok dengan sebuah pernyataan SELECT di SQL:
+</p>
+<p class="table-caption">
+    <strong>Tabel 2:</strong> Query() dibandingkan dengan query SQL.
+</p>
+<table id="table2" style="width: 75%;">
+    <tr>
+        <th style="width:25%" align="center" scope="col">Argumen query()</th>
+        <th style="width:25%" align="center" scope="col">Kata kunci/parameter SELECT</th>
+        <th style="width:50%" align="center" scope="col">Catatan</th>
+    </tr>
+    <tr>
+        <td align="center"><code>Uri</code></td>
+        <td align="center"><code>FROM <em>table_name</em></code></td>
+        <td><code>Uri</code> memetakan ke tabel dalam penyedia yang bernama <em>table_name</em>.</td>
+    </tr>
+    <tr>
+        <td align="center"><code>projection</code></td>
+        <td align="center"><code><em>col,col,col,...</em></code></td>
+        <td>
+            <code>projection</code> adalah satu larik kolom yang harus disertakan untuk tiap baris
+            yang diambil.
+        </td>
+    </tr>
+    <tr>
+        <td align="center"><code>selection</code></td>
+        <td align="center"><code>WHERE <em>col</em> = <em>value</em></code></td>
+        <td><code>selection</code> menetapkan kriteria untuk memilih baris.</td>
+    </tr>
+    <tr>
+        <td align="center"><code>selectionArgs</code></td>
+        <td align="center">
+            (Tidak ada padanan persis. Argumen pemilihan mengganti <code>?</code> placeholder dalam
+            klausa pemilihan.)
+        </td>
+    </tr>
+    <tr>
+        <td align="center"><code>sortOrder</code></td>
+        <td align="center"><code>ORDER BY <em>col,col,...</em></code></td>
+        <td>
+            <code>sortOrder</code> menetapkan urutan munculnya baris dalam
+            {@link android.database.Cursor} yang dihasilkan.
+        </td>
+    </tr>
+</table>
+<h3 id="ContentURIs">URI Konten</h3>
+<p>
+    <strong>URI konten</strong> adalah URI yang mengidentifikasi data dalam penyedia. URI Konten
+    menyertakan nama simbolis seluruh penyedia (<strong>otoritas</strong>nya) dan sebuah
+    nama yang menunjuk ke tabel (<strong>path</strong>). Bila Anda memanggil
+    metode klien untuk mengakses tabel dalam penyedia, URI konten untuk tabel itu adalah salah satu
+    argumennya.
+</p>
+<p>
+    Dalam baris kode sebelumnya, konstanta
+    {@link android.provider.UserDictionary.Words#CONTENT_URI} mengandung URI konten dari
+    tabel "words" kamus pengguna. Objek {@link android.content.ContentResolver}
+    akan mengurai otoritas URI, dan menggunakannya untuk "mengetahui" penyedia dengan
+    membandingkan otoritas tersebut dengan sebuah tabel sistem berisi penyedia yang dikenal. 
+{@link android.content.ContentResolver}    kemudian bisa mengirim argumen query ke penyedia
+    yang benar.
+</p>
+<p>
+    {@link android.content.ContentProvider} menggunakan bagian path dari URI konten untuk memilih
+    tabel yang akan diakses. Penyedia biasanya memiliki <strong>path</strong> untuk tiap tabel yang dieksposnya.
+</p>
+<p>
+    Dalam baris kode sebelumnya, URI lengkap untuk tabel "words" adalah:
+</p>
+<pre>
+content://user_dictionary/words
+</pre>
+<p>
+    dalam hal ini string <code>user_dictionary</code> adalah otoritas penyedia, dan string
+    <code>words</code> adalah path tabel. String
+    <code>content://</code> (<strong>skema</strong>) selalu ada,
+    dan mengidentifikasinya sebagai URI konten.
+</p>
+<p>
+    Banyak penyedia yang memperbolehkan Anda mengakses satu baris dalam tabel dengan menambahkan sebuah ID nilai
+    ke akhir URI. Misalnya, untuk mengambil sebuah baris yang <code>_ID</code>-nya adalah
+    <code>4</code> dari kamus pengguna, Anda bisa menggunakan URI konten ini:
+</p>
+<pre>
+Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);
+</pre>
+<p>
+    Anda akan sering menggunakan nilai-nilai ID bila telah mengambil satu set baris kemudian ingin memperbarui atau menghapus
+    salah satunya.
+</p>
+<p class="note">
+    <strong>Catatan:</strong> Kelas-kelas {@link android.net.Uri} dan {@link android.net.Uri.Builder} 
+    berisi metode praktis untuk membangun objek dari string URI yang tersusun dengan baik. 
+{@link android.content.ContentUris}    berisi metode praktis untuk menambahkan nilai ID ke
+    URI. Cuplikan kode sebelumnya menggunakan {@link android.content.ContentUris#withAppendedId
+    withAppendedId()} untuk menambahkan id ke URI konten User Dictionary.
+</p>
+
+
+    <!-- Retrieving Data from the Provider -->
+<h2 id="SimpleQuery">Mengambil Data dari Penyedia</h2>
+<p>
+    Bagian ini menerangkan cara mengambil data dari penyedia, dengan menggunakan Penyedia Kamus Pengguna
+    sebagai contoh.
+</p>
+<p class="note">
+    Demi kejelasan, cuplikan kode di bagian ini memanggil
+    {@link android.content.ContentResolver#query ContentResolver.query()} pada "UI thread"". Akan tetapi, dalam 
+    kode sesungguhnya, Anda harus melakukan query secara asinkron pada sebuah thread terpisah. Satu cara melakukannya 
+    adalah menggunakan kelas {@link android.content.CursorLoader}, yang dijelaskan
+    lebih detail dalam panduan <a href="{@docRoot}guide/components/loaders.html">
+    Loader</a>. Juga, baris-baris kode tersebut hanyalah cuplikan; tidak menunjukkan sebuah aplikasi
+     lengkap.
+</p>
+<p>
+    Untuk mengambil data dari penyedia, ikutilah langkah-langkah dasar ini:
+</p>
+<ol>
+   <li>
+        Minta izin akses baca untuk penyedia itu.
+   </li>
+   <li>
+        Definisikan kode yang mengirim query ke penyedia.
+   </li>
+</ol>
+<h3 id="RequestPermissions">Meminta izin akses baca</h3>
+<p>
+    Untuk mengambil data dari penyedia, aplikasi Anda memerlukan "izin akses baca" untuk
+    penyedia itu. Anda tidak bisa meminta izin ini saat runtime; sebagai gantinya, Anda harus menetapkan bahwa
+    Anda memerlukan izin ini dalam manifes, dengan menggunakan elemen
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+    dan nama persis izin yang didefinisikan oleh
+    penyedia itu. Bila menetapkan elemen ini dalam manifes, Anda secara efektif "meminta"
+    izin ini untuk aplikasi Anda. Bila pengguna menginstal aplikasi Anda, mereka secara implisit akan memberikan
+    permintaan ini.
+</p>
+<p>
+    Untuk menemukan nama persis dari izin akses baca untuk penyedia yang sedang Anda gunakan, serta
+    nama-nama izin akses lain yang digunakan oleh penyedia, lihatlah dalam
+    dokumentasi penyedia.
+</p>
+<p>
+    Peran izin dalam yang mengakses penyedia dijelaskan lebih detail di bagian
+    <a href="#Permissions">Izin Penyedia Konten</a>.
+</p>
+<p>
+    Penyedia Kamus Pengguna mendefinisikan izin
+    <code>android.permission.READ_USER_DICTIONARY</code> dalam file manifesnya, sehingga
+    aplikasi yang ingin membaca dari penyedia itu harus meminta izin ini.
+</p>
+<!-- Constructing the query -->
+<h3 id="Query">Membuat query</h3>
+<p>
+    Langkah berikutnya dalam mengambil data penyedia adalah membuat query. Cuplikan kode pertama ini
+    mendefinisikan beberapa variabel untuk mengakses Penyedia Kamus Pengguna:
+</p>
+<pre class="prettyprint">
+
+// A "projection" defines the columns that will be returned for each row
+String[] mProjection =
+{
+    UserDictionary.Words._ID,    // Contract class constant for the _ID column name
+    UserDictionary.Words.WORD,   // Contract class constant for the word column name
+    UserDictionary.Words.LOCALE  // Contract class constant for the locale column name
+};
+
+// Defines a string to contain the selection clause
+String mSelectionClause = null;
+
+// Initializes an array to contain selection arguments
+String[] mSelectionArgs = {""};
+
+</pre>
+<p>
+    Cuplikan berikutnya menampilkan cara menggunakan
+    {@link android.content.ContentResolver#query ContentResolver.query()}, dengan menggunakan Penyedia Kamus Pengguna
+    sebagai contoh. Query klien penyedia serupa dengan query SQL, dan berisi satu 
+    set kolom yang akan dihasilkan, satu set kriteria pemilihan, dan urutan sortir.
+</p>
+<p>
+    Set kolom yang harus dikembalikan query disebut dengan <strong>proyeksi</strong>
+    (variabel <code>mProjection</code>).
+</p>
+<p>
+    Ekspresi yang menetapkan baris yang harus diambil dipecah menjadi klausa pemilihan dan
+    argumen pemilihan. Klausa pemilihan adalah kombinasi ekspresi logis dan boolean,
+    nama kolom, dan nilai (variabel <code>mSelectionClause</code>). Jika Anda menetapkan 
+    parameter <code>?</code> yang bisa diganti, sebagai ganti nilai, metode query akan mengambil nilai 
+    dari larik argumen pemilihan (variabel <code>mSelectionArgs</code>).
+</p>
+<p>
+    Dalam cuplikan berikutnya, jika pengguna tidak memasukkan sebuah kata, klausa pemilihan akan diatur ke
+    <code>null</code>, dan query menghasilkan semua kata dalam penyedia. Jika pengguna memasukkan
+    sebuah kata, klausa pemilihan akan diatur ke <code>UserDictionary.Words.WORD + " = ?"</code> dan
+    elemen pertama larik argumen pemilihan diatur ke kata yang dimasukkan pengguna.
+</p>
+<pre class="prettyprint">
+/*
+ * This defines a one-element String array to contain the selection argument.
+ */
+String[] mSelectionArgs = {""};
+
+// Gets a word from the UI
+mSearchString = mSearchWord.getText().toString();
+
+// Remember to insert code here to check for invalid or malicious input.
+
+// If the word is the empty string, gets everything
+if (TextUtils.isEmpty(mSearchString)) {
+    // Setting the selection clause to null will return all words
+    mSelectionClause = null;
+    mSelectionArgs[0] = "";
+
+} else {
+    // Constructs a selection clause that matches the word that the user entered.
+    mSelectionClause = UserDictionary.Words.WORD + " = ?";
+
+    // Moves the user's input string to the selection arguments.
+    mSelectionArgs[0] = mSearchString;
+
+}
+
+// Does a query against the table and returns a Cursor object
+mCursor = getContentResolver().query(
+    UserDictionary.Words.CONTENT_URI,  // The content URI of the words table
+    mProjection,                       // The columns to return for each row
+    mSelectionClause                   // Either null, or the word the user entered
+    mSelectionArgs,                    // Either empty, or the string the user entered
+    mSortOrder);                       // The sort order for the returned rows
+
+// Some providers return null if an error occurs, others throw an exception
+if (null == mCursor) {
+    /*
+     * Insert code here to handle the error. Be sure not to use the cursor! You may want to
+     * call android.util.Log.e() to log this error.
+     *
+     */
+// If the Cursor is empty, the provider found no matches
+} else if (mCursor.getCount() &lt; 1) {
+
+    /*
+     * Insert code here to notify the user that the search was unsuccessful. This isn't necessarily
+     * an error. You may want to offer the user the option to insert a new row, or re-type the
+     * search term.
+     */
+
+} else {
+    // Insert code here to do something with the results
+
+}
+</pre>
+<p>
+    Query ini analog dengan pernyataan SQL:
+</p>
+<pre>
+SELECT _ID, word, locale FROM words WHERE word = &lt;userinput&gt; ORDER BY word ASC;
+</pre>
+<p>
+    Dalam pernyataan SQL ini, nama kolom yang sesungguhnya digunakan sebagai ganti konstanta kelas kontrak.
+</p>
+<h4 id="Injection">Melindungi dari input merusak</h4>
+<p>
+    Jika data dikelola oleh penyedia konten berada dalam database SQL, memasukkan data tak dipercaya eksternal
+    ke dalam pernyataan SQL mentah bisa menyebabkan injeksi SQL.
+</p>
+<p>
+    Perhatikan klausa pemilihan ini:
+</p>
+<pre>
+// Constructs a selection clause by concatenating the user's input to the column name
+String mSelectionClause =  "var = " + mUserInput;
+</pre>
+<p>
+    Jika melakukannya, Anda akan membuat pengguna menyambungkan SQL merusak ke pernyataan SQL Anda.
+    Misalnya, pengguna bisa memasukkan "nothing; DROP TABLE *;"  untuk <code>mUserInput</code>, yang
+    akan menghasilkan klausa pemilihan <code>var = nothing; DROP TABLE *;</code>. Karena
+    klausa pemilihan diperlakukan sebagai pernyataan SQL, hal ini bisa menyebabkan penyedia itu menghapus semua
+    tabel dalam database SQLite yang mendasarinya (kecuali penyedia disiapkan untuk menangkap upaya
+    <a href="http://en.wikipedia.org/wiki/SQL_injection">injeksi SQL</a>).
+</p>
+<p>
+    Untuk menghindari masalah ini, gunakan klausa pemilihan yang menggunakan <code>?</code> sebagai
+    parameter yang bisa diganti dan larik argumen pemilihan yang terpisah. Bila Anda melakukannya, input pengguna
+    akan dibatasi secara langsung pada query agar tidak ditafsirkan sebagai bagian dari pernyataan SQL.
+    Karena tidak diperlakukan sebagai SQL, input pengguna tidak bisa menyuntikkan SQL merusak. Sebagai ganti menggunakan
+    penyambungan untuk menyertakan input pengguna, gunakan klausa pemilihan ini:
+</p>
+<pre>
+// Constructs a selection clause with a replaceable parameter
+String mSelectionClause =  "var = ?";
+</pre>
+<p>
+    Buat larik argumen pemilihan seperti ini:
+</p>
+<pre>
+// Defines an array to contain the selection arguments
+String[] selectionArgs = {""};
+</pre>
+<p>
+    Masukkan nilai dalam larik argumen pemilihan seperti ini:
+</p>
+<pre>
+// Sets the selection argument to the user's input
+selectionArgs[0] = mUserInput;
+</pre>
+<p>
+    Sebuah klausa pemilihan yang menggunakan <code>?</code> sebagai parameter yang bisa diganti dan sebuah larik 
+    argumen pemilihan adalah cara yang lebih disukai untuk menyebutkan pemilihan, sekalipun penyedia tidak
+    dibuat berdasarkan database SQL.
+</p>
+<!-- Displaying the results -->
+<h3 id="DisplayResults">Menampilkan hasil query</h3>
+<p>
+    Metode klien {@link android.content.ContentResolver#query ContentResolver.query()} selalu 
+    menghasilkan {@link android.database.Cursor} berisi kolom-kolom yang ditetapkan oleh 
+    proyeksi query untuk baris yang cocok dengan kriteria pemilihan query. Objek
+    {@link android.database.Cursor} menyediakan akses baca acak ke baris dan kolom yang 
+    dimuatnya. Dengan metode {@link android.database.Cursor}, Anda bisa mengulang baris-baris dalam 
+    hasil, menentukan tipe data tiap kolom, mengambil data dari kolom, dan memeriksa
+    properti lain dari hasil. Beberapa implementasi {@link android.database.Cursor} 
+    akan memperbarui objek secara otomatis bila data penyedia berubah, atau memicu metode dalam objek pengamat 
+    bila {@link android.database.Cursor} berubah, atau keduanya.
+</p>
+<p class="note">
+    <strong>Catatan:</strong> Penyedia bisa membatasi akses ke kolom berdasarkan sifat
+    objek yang membuat query. Misalnya, Penyedia Kontak membatasi akses untuk beberapa kolom pada
+    adaptor sinkronisasi, sehingga tidak akan mengembalikannya ke aktivitas atau layanan.
+</p>
+<p>
+    Jika tidak ada baris yang cocok dengan kriteria pemilihan, penyedia
+    akan mengembalikan objek {@link android.database.Cursor} dengan
+    {@link android.database.Cursor#getCount Cursor.getCount()} adalah 0 (kursor kosong).
+</p>
+<p>
+    Jika terjadi kesalahan internal, hasil query akan bergantung pada penyedia tertentu. Penyedia bisa
+    memilih untuk menghasilkan <code>null</code>, atau melontarkan {@link java.lang.Exception}.
+</p>
+<p>
+    Karena {@link android.database.Cursor} adalah "daftar" baris, cara yang cocok untuk menampilkan
+    konten {@link android.database.Cursor} adalah mengaitkannya dengan {@link android.widget.ListView}
+    melalui {@link android.widget.SimpleCursorAdapter}.
+</p>
+<p>
+    Cuplikan berikut melanjutkan kode dari cuplikan sebelumnya. Cuplikan ini membuat
+    objek {@link android.widget.SimpleCursorAdapter} berisi {@link android.database.Cursor}
+    yang diambil oleh query, dan mengatur objek ini menjadi adaptor bagi
+    {@link android.widget.ListView}:
+</p>
+<pre class="prettyprint">
+// Defines a list of columns to retrieve from the Cursor and load into an output row
+String[] mWordListColumns =
+{
+    UserDictionary.Words.WORD,   // Contract class constant containing the word column name
+    UserDictionary.Words.LOCALE  // Contract class constant containing the locale column name
+};
+
+// Defines a list of View IDs that will receive the Cursor columns for each row
+int[] mWordListItems = { R.id.dictWord, R.id.locale};
+
+// Creates a new SimpleCursorAdapter
+mCursorAdapter = new SimpleCursorAdapter(
+    getApplicationContext(),               // The application's Context object
+    R.layout.wordlistrow,                  // A layout in XML for one row in the ListView
+    mCursor,                               // The result from the query
+    mWordListColumns,                      // A string array of column names in the cursor
+    mWordListItems,                        // An integer array of view IDs in the row layout
+    0);                                    // Flags (usually none are needed)
+
+// Sets the adapter for the ListView
+mWordList.setAdapter(mCursorAdapter);
+</pre>
+<p class="note">
+    <strong>Catatan:</strong> Untuk mendukung {@link android.widget.ListView} dengan
+    {@link android.database.Cursor}, kursor harus berisi kolom bernama <code>_ID</code>.
+    Karena itu, query yang ditampilkan sebelumnya mengambil kolom <code>_ID</code> untuk
+    tabel "words", walaupun {@link android.widget.ListView} tidak menampilkannya.
+    Pembatasan ini juga menjelaskan mengapa sebagian besar penyedia memiliki kolom <code>_ID</code> untuk masing-masing
+    tabelnya.
+</p>
+
+        <!-- Getting data from query results -->
+<h3 id="GettingResults">Mendapatkan data dari hasil query</h3>
+<p>
+    Daripada sekadar menampilkan hasil query, Anda bisa menggunakannya untuk tugas-tugas lain. Misalnya,
+    Anda bisa mengambil ejaan dari kamus pengguna kemudian mencarinya dalam
+    penyedia lain. Caranya, ulangi baris-baris dalam {@link android.database.Cursor}:
+</p>
+<pre class="prettyprint">
+
+// Determine the column index of the column named "word"
+int index = mCursor.getColumnIndex(UserDictionary.Words.WORD);
+
+/*
+ * Only executes if the cursor is valid. The User Dictionary Provider returns null if
+ * an internal error occurs. Other providers may throw an Exception instead of returning null.
+ */
+
+if (mCursor != null) {
+    /*
+     * Moves to the next row in the cursor. Before the first movement in the cursor, the
+     * "row pointer" is -1, and if you try to retrieve data at that position you will get an
+     * exception.
+     */
+    while (mCursor.moveToNext()) {
+
+        // Gets the value from the column.
+        newWord = mCursor.getString(index);
+
+        // Insert code here to process the retrieved word.
+
+        ...
+
+        // end of while loop
+    }
+} else {
+
+    // Insert code here to report an error if the cursor is null or the provider threw an exception.
+}
+</pre>
+<p>
+    Implementasi {@link android.database.Cursor} berisi beberapa metode "get" untuk
+    mengambil berbagai tipe data dari objek. Misalnya, cuplikan sebelumnya
+    menggunakan {@link android.database.Cursor#getString getString()}. Implementasi juga memiliki
+    metode {@link android.database.Cursor#getType getType()} yang menghasilkan nilai yang menunjukkan
+    tipe data kolom.
+</p>
+
+
+    <!-- Requesting permissions -->
+<h2 id="Permissions">Izin Penyedia Konten</h2>
+<p>
+    Aplikasi penyedia bisa menetapkan izin yang harus dimiliki aplikasi lain untuk
+    mengakses data penyedia. Izin ini akan memastikan bahwa pengguna mengetahui data
+    yang coba diakses oleh aplikasi. Berdasarkan ketentuan penyedia, aplikasi lain
+    meminta izin yang diperlukannya untuk mengakses penyedia. Pengguna akhir akan melihat
+    izin yang diminta saat menginstal aplikasi.
+</p>
+<p>
+    Jika aplikasi penyedia tidak menetapkan izin apa pun, maka aplikasi lain tidak memiliki
+    akses ke data penyedia. Akan tetapi, komponen-komponen dalam aplikasi penyedia selalu memiliki
+    akses penuh untuk baca dan tulis, izin apa pun yang ditetapkan.
+</p>
+<p>
+    Seperti disebutkan sebelumnya, Penyedia Kamus Pengguna mensyaratkan izin
+    <code>android.permission.READ_USER_DICTIONARY</code> untuk mengambil data darinya.
+    Penyedia memiliki izin <code>android.permission.WRITE_USER_DICTIONARY</code>
+    yang terpisah untuk menyisipkan, memperbarui, atau menghapus data.
+</p>
+<p>
+    Untuk mendapatkan izin yang diperlukan untuk mengakses penyedia, aplikasi memintanya dengan elemen
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+    dalam file manifesnya. Bila Android Package Manager memasang aplikasi, pengguna 
+    harus menyetujui semua izin yang diminta aplikasi. Jika pengguna menyetujui semuanya, 
+    Package Manager akan melanjutkan instalasi; jika pengguna tidak menyetujui, Package Manager
+    akan membatalkan instalasi.
+</p>
+<p>
+    Elemen
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 
+    berikut meminta akses baca ke Penyedia Kamus Pengguna:
+</p>
+<pre>
+    &lt;uses-permission android:name="android.permission.READ_USER_DICTIONARY"&gt;
+</pre>
+<p>
+    Dampak izin pada akses penyedia dijelaskan secara lebih detail dalam panduan
+    <a href="{@docRoot}guide/topics/security/security.html">Keamanan dan Izin</a>.
+</p>
+
+
+<!-- Inserting, Updating, and Deleting Data -->
+<h2 id="Modifications">Menyisipkan, Memperbarui, dan Menghapus Data</h2>
+<p>
+    Lewat cara yang sama dengan cara mengambil data dari penyedia, Anda juga menggunakan interaksi antara
+    klien penyedia dan {@link android.content.ContentProvider} penyedia untuk memodifikasi data.
+    Anda memanggil metode {@link android.content.ContentResolver} dengan argumen yang diteruskan ke
+    metode {@link android.content.ContentProvider} yang sesuai. Penyedia dan klien penyedia
+    menangani secara otomatis keamanan dan komunikasi antar-proses.
+</p>
+<h3 id="Inserting">Menyisipkan data</h3>
+<p>
+    Untuk menyisipkan data ke penyedia, Anda memanggil metode
+    {@link android.content.ContentResolver#insert ContentResolver.insert()}.
+ Metode ini menyisipkan sebuah baris baru ke penyedia itu dan menghasilkan URI konten untuk baris itu.
+    Cuplikan ini menampilkan cara menyisipkan sebuah kata baru ke Penyedia Kamus Pengguna:
+</p>
+<pre class="prettyprint">
+// Defines a new Uri object that receives the result of the insertion
+Uri mNewUri;
+
+...
+
+// Defines an object to contain the new values to insert
+ContentValues mNewValues = new ContentValues();
+
+/*
+ * Sets the values of each column and inserts the word. The arguments to the "put"
+ * method are "column name" and "value"
+ */
+mNewValues.put(UserDictionary.Words.APP_ID, "example.user");
+mNewValues.put(UserDictionary.Words.LOCALE, "en_US");
+mNewValues.put(UserDictionary.Words.WORD, "insert");
+mNewValues.put(UserDictionary.Words.FREQUENCY, "100");
+
+mNewUri = getContentResolver().insert(
+    UserDictionary.Word.CONTENT_URI,   // the user dictionary content URI
+    mNewValues                          // the values to insert
+);
+</pre>
+<p>
+    Data untuk baris baru masuk ke dalam satu objek {@link android.content.ContentValues}, yang
+    serupa bentuknya dengan kursor satu-baris. Kolom dalam objek ini tidak perlu memiliki
+    tipe data yang sama, dan jika Anda tidak ingin menetapkan nilai sama sekali, Anda bisa mengatur kolom
+    ke <code>null</code> dengan menggunakan {@link android.content.ContentValues#putNull ContentValues.putNull()}.
+</p>
+<p>
+    Cuplikan ini tidak menambahkan kolom <code>_ID</code>, karena kolom ini dipelihara
+    secara otomatis. Penyedia menetapkan sebuah nilai unik <code>_ID</code> ke setiap baris yang
+    ditambahkan. Penyedia biasanya menggunakan nilai ini sebagai kunci utama tabel.
+</p>
+<p>
+    URI konten yang dihasilkan dalam <code>newUri</code> akan mengidentifikasi baris yang baru ditambahkan, dengan
+    format berikut:
+</p>
+<pre>
+content://user_dictionary/words/&lt;id_value&gt;
+</pre>
+<p>
+    <code>&lt;id_value&gt;</code> adalah konten <code>_ID</code> untuk baris baru.
+    Kebanyakan penyedia bisa mendeteksi bentuk URI konten ini secara otomatis kemudian melakukan
+    operasi yang diminta pada baris tersebut.
+</p>
+<p>
+    Untuk mendapatkan nilai <code>_ID</code> dari {@link android.net.Uri} yang dihasilkan, panggil
+    {@link android.content.ContentUris#parseId ContentUris.parseId()}.
+</p>
+<h3 id="Updating">Memperbarui data</h3>
+<p>
+    Untuk memperbarui sebuah baris, gunakan objek {@link android.content.ContentValues} dengan
+    nilai-nilai yang diperbarui, persis seperti yang Anda lakukan pada penyisipan, dan kriteria pemilihan persis seperti yang Anda lakukan pada query.
+    Metode klien yang Anda gunakan adalah
+    {@link android.content.ContentResolver#update ContentResolver.update()}. Anda hanya perlu menambahkan 
+    nilai-nilai ke objek {@link android.content.ContentValues} untuk kolom yang sedang Anda perbarui. Jika Anda 
+    ingin membersihkan konten kolom, aturlah nilai ke <code>null</code>.
+</p>
+<p>
+    Cuplikan berikut mengubah semua baris yang kolom lokalnya memiliki bahasa "en" ke
+    lokal <code>null</code>. Nilai hasil adalah jumlah baris yang diperbarui:
+</p>
+<pre>
+// Defines an object to contain the updated values
+ContentValues mUpdateValues = new ContentValues();
+
+// Defines selection criteria for the rows you want to update
+String mSelectionClause = UserDictionary.Words.LOCALE +  "LIKE ?";
+String[] mSelectionArgs = {"en_%"};
+
+// Defines a variable to contain the number of updated rows
+int mRowsUpdated = 0;
+
+...
+
+/*
+ * Sets the updated value and updates the selected words.
+ */
+mUpdateValues.putNull(UserDictionary.Words.LOCALE);
+
+mRowsUpdated = getContentResolver().update(
+    UserDictionary.Words.CONTENT_URI,   // the user dictionary content URI
+    mUpdateValues                       // the columns to update
+    mSelectionClause                    // the column to select on
+    mSelectionArgs                      // the value to compare to
+);
+</pre>
+<p>
+    Anda juga harus membersihkan input pengguna bila memanggil
+    {@link android.content.ContentResolver#update ContentResolver.update()}. Untuk mengetahui selengkapnya tentang 
+    hal ini, bacalah bagian <a href="#Injection">Melindungi dari input merusak</a>.
+</p>
+<h3 id="Deleting">Menghapus data</h3>
+<p>
+    Menghapus baris serupa dengan mengambil baris data: Anda menetapkan kriteria pemilihan untuk baris
+    yang ingin Anda hapus dan metode klien akan menghasilkan jumlah baris yang dihapus.
+    Cuplikan berikut menghapus baris yang appid-nya sama dengan "user". Metode menghasilkan
+    jumlah baris yang dihapus.
+</p>
+<pre>
+
+// Defines selection criteria for the rows you want to delete
+String mSelectionClause = UserDictionary.Words.APP_ID + " LIKE ?";
+String[] mSelectionArgs = {"user"};
+
+// Defines a variable to contain the number of rows deleted
+int mRowsDeleted = 0;
+
+...
+
+// Deletes the words that match the selection criteria
+mRowsDeleted = getContentResolver().delete(
+    UserDictionary.Words.CONTENT_URI,   // the user dictionary content URI
+    mSelectionClause                    // the column to select on
+    mSelectionArgs                      // the value to compare to
+);
+</pre>
+<p>
+    Anda juga harus membersihkan input pengguna bila memanggil
+    {@link android.content.ContentResolver#delete ContentResolver.delete()}. Untuk mengetahui selengkapnya tentang 
+    hal ini, bacalah bagian <a href="#Injection">Melindungi dari input merusak</a>.
+</p>
+<!-- Provider Data Types -->
+<h2 id="DataTypes">Tipe Data Penyedia</h2>
+<p>
+    Penyedia konten bisa menawarkan berbagai tipe data. Penyedia Kamus Pengguna hanya menawarkan
+    teks, namun penyedia juga bisa menawarkan format berikut:
+</p>
+    <ul>
+        <li>
+            integer
+        </li>
+        <li>
+            long integer (long)
+        </li>
+        <li>
+            floating point
+        </li>
+        <li>
+            long floating point (double)
+        </li>
+    </ul>
+<p>
+    Tipe data lain yang sering digunakan penyedia adalah Binary Large OBject (BLOB) yang diimplementasikan sebagai
+    larik byte 64 KB. Anda bisa melihat tipe data yang tersedia dengan memperhatikan metode "get" 
+    kelas {@link android.database.Cursor}.
+</p>
+<p>
+    Tipe data tiap kolom dalam penyedia biasanya tercantum dalam dokumentasinya.
+    Tipe data untuk Penyedia Kamus Pengguna tercantum dalam dokumentasi acuan
+    untuk kelas kontraknya {@link android.provider.UserDictionary.Words} (kelas kontrak
+    dijelaskan di bagian <a href="#ContractClasses">Kelas-kelas Kontrak</a>).
+    Anda juga bisa menentukan tipe data dengan memanggil {@link android.database.Cursor#getType
+    Cursor.getType()}.
+</p>
+<p>
+    Penyedia juga memelihara informasi tipe data MIME untuk tiap URI konten yang didefinisikannya. Anda bisa
+    menggunakan informasi tipe MIME untuk mengetahui apakah aplikasi Anda bisa menangani data yang
+    disediakan penyedia, atau memilih tipe penanganan berdasarkan tipe MIME. Anda biasanya memerlukan
+    tipe MIME saat menggunakan penyedia yang berisi
+    struktur atau file data yang kompleks. Misalnya, tabel {@link android.provider.ContactsContract.Data}
+    dalam Penyedia Kontak menggunakan tipe MIME untuk memberi label tipe data kontak yang disimpan di tiap
+    baris. Untuk mendapatkan tipe MIME yang sesuai dengan URI konten, panggil
+    {@link android.content.ContentResolver#getType ContentResolver.getType()}.
+</p>
+<p>
+    Bagian <a href="#MIMETypeReference">Acuan Tipe MIME</a> menerangkan 
+    sintaks tipe MIME baik yang standar maupun custom.
+</p>
+
+
+<!-- Alternative Forms of Provider Access -->
+<h2 id="AltForms">Bentuk-Bentuk Alternatif Akses Penyedia</h2>
+<p>
+    Tiga bentuk alternatif akses penyedia adalah penting dalam pengembangan aplikasi:
+</p>
+<ul>
+    <li>
+        <a href="#Batch">Akses batch</a>: Anda bisa membuat sebuah batch panggilan akses dengan metode-metode dalam
+        kelas {@link android.content.ContentProviderOperation}, kemudian menerapkannya dengan
+        {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}.
+    </li>
+    <li>
+        Query asinkron: Anda harus melakukan query dalam thread terpisah. Satu cara melakukannya adalah
+        menggunakan objek {@link android.content.CursorLoader}. Contoh-contoh dalam panduan
+        <a href="{@docRoot}guide/components/loaders.html">Loader</a> memperagakan
+        cara melakukannya.
+    </li>
+    <li>
+        <a href="#Intents">Akses data melalui intent</a>: Walaupun tidak bisa mengirim intent
+        ke penyedia secara langsung, Anda bisa mengirim intent ke aplikasi penyedia, yang
+        biasanya paling lengkap dibekali untuk memodifikasi data penyedia.
+    </li>
+</ul>
+<p>
+    Akses batch dan modifikasi melalui intent dijelaskan dalam bagian-bagian berikut.
+</p>
+<h3 id="Batch">Akses batch</h3>
+<p>
+    Akses batch ke penyedia berguna untuk menyisipkan baris dalam jumlah besar, atau menyisipkan
+    baris ke dalam beberapa tabel dalam panggilan metode yang sama, atau biasanya melakukan satu set
+    operasi lintas batas proses sebagai transaksi (operasi atomik).
+</p>
+<p>
+    Untuk mengakses penyedia dalam "mode batch",
+    buat satu larik objek {@link android.content.ContentProviderOperation}, kemudian
+    kirim larik itu ke penyedia konten dengan
+    {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}. Anda meneruskan 
+    <em>otoritas</em> penyedia konten ke metode ini, daripada URI konten tertentu. 
+    Ini memungkinkan tiap objek {@link android.content.ContentProviderOperation} dalam larik untuk bekerja 
+    terhadap tabel yang berbeda. Panggilan ke {@link android.content.ContentResolver#applyBatch
+    ContentResolver.applyBatch()} menghasilkan satu larik hasil.
+</p>
+<p>
+    Keterangan kelas kontrak {@link android.provider.ContactsContract.RawContacts}
+    menyertakan cuplikan kode yang memperagakan penyisipan batch. Contoh aplikasi
+    <a href="{@docRoot}resources/samples/ContactManager/index.html">Contacts Manager</a>
+    berisi contoh akses batch dalam file sumber <code>ContactAdder.java</code>-nya
+.
+</p>
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>Menampilkan data dengan aplikasi pembantu</h2>
+<p>
+    Jika aplikasi Anda <em>memang</em> memiliki izin akses, Anda masih mungkin perlu menggunakan
+    intent untuk menampilkan data dalam aplikasi lain. Misalnya, aplikasi Kalender menerima
+    intent {@link android.content.Intent#ACTION_VIEW}, yang menampilkan tanggal atau kejadian tertentu.
+    Hal ini memungkinkan Anda menampilkan informasi kalender tanpa harus membuat UI sendiri.
+    Untuk mengetahui selengkapnya tentang fitur ini, lihat panduan
+    <a href="{@docRoot}guide/topics/providers/calendar-provider.html">Penyedia Kalender</a>.
+</p>
+<p>
+    Aplikasi yang Anda kirimi intent tidak harus aplikasi
+    yang terkait dengan penyedia. Misalnya, Anda bisa mengambil satu kontak dari
+    Penyedia Kontak, kemudian mengirim intent {@link android.content.Intent#ACTION_VIEW}
+    berisi URI konten untuk gambar kontak itu ke penampil gambar.
+</p>
+</div>
+</div>
+<h3 id="Intents">Akses data melalui intent</h3>
+<p>
+    Intent bisa menyediakan akses tidak langsung ke penyedia konten. Anda memperbolehkan pengguna mengakses
+    data dalam penyedia sekalipun aplikasi Anda tidak memiliki izin akses, baik dengan
+    mendapatkan intent yang dihasilkan aplikasi yang memiliki izin, atau dengan mengaktifkan
+    aplikasi yang memiliki izin dan membiarkan pengguna melakukan pekerjaan di dalamnya.
+</p>
+<h4>Mendapatkan akses dengan izin sementara</h4>
+<p>
+    Anda bisa mengakses data dalam penyedia konten, sekalipun tidak memiliki
+    izin akses yang sesuai, dengan mengirimkan intent ke aplikasi yang memang memiliki izin dan
+    menerima hasil berupa intent berisi izin "URI".
+    Inilah izin untuk URI konten tertentu yang berlaku hingga aktivitas yang menerima
+    izin selesai. Aplikasi yang memiliki izin tetap akan memberikan
+    izin sementara dengan mengatur flag dalam intent yang dihasilkan:
+</p>
+<ul>
+    <li>
+        <strong>Izin baca:</strong>
+        {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}
+    </li>
+    <li>
+        <strong>Izin tulis:</strong>
+        {@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}
+    </li>
+</ul>
+<p class="note">
+    <strong>Catatan:</strong> Flag ini tidak memberikan akses baca atau tulis umum ke penyedia
+    yang otoritasnya dimuat dalam URI konten. Aksesnya hanya untuk URI itu sendiri.
+</p>
+<p>
+    Penyedia mendefinisikan izin URI untuk URI konten dalam manifesnya, dengan menggunakan atribut
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">android:grantUriPermission</a></code>
+    dari elemen 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+,   serta elemen anak
+<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
+    dari elemen
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>.
+ Mekanisme izin URI dijelaskan secara lebih detail dalam panduan
+    <a href="{@docRoot}guide/topics/security/security.html">Keamanan dan Izin</a>,
+    di bagian "Izin URI".
+</p>
+<p>
+    Misalnya, Anda bisa mengambil data untuk satu kontak di Penyedia Kontak, sekalipun tidak
+    memiliki izin {@link android.Manifest.permission#READ_CONTACTS}. Anda mungkin ingin melakukan
+    ini dalam aplikasi yang mengirim kartu ucapan elektronik ke seorang kenalan pada hari ulang tahunnya. Sebagai ganti
+    meminta {@link android.Manifest.permission#READ_CONTACTS}, yang memberi Anda akses ke semua
+    kontak pengguna dan semua informasinya, Anda lebih baik membiarkan pengguna mengontrol
+    kontak-kontak yang akan digunakan oleh aplikasi Anda. Caranya, gunakan proses berikut:
+</p>
+<ol>
+    <li>
+        Aplikasi Anda akan mengirim intent berisi tindakan
+        {@link android.content.Intent#ACTION_PICK} dan tipe MIME "contacts"
+        {@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE}, dengan menggunakan
+        metode {@link android.app.Activity#startActivityForResult
+        startActivityForResult()}.
+    </li>
+    <li>
+        Karena intent ini cocok dengan filter intent untuk
+        aktivitas "pemilihan" aplikasi People, aktivitas akan muncul ke latar depan.
+    </li>
+    <li>
+        Dalam aktivitas pemilihan, pengguna memilih sebuah
+        kontak untuk diperbarui. Bila ini terjadi, aktivitas pemilihan akan memanggil
+        {@link android.app.Activity#setResult setResult(resultcode, intent)}
+        untuk membuat intent yang akan diberikan kembali ke aplikasi Anda. Intent itu berisi URI konten
+        kontak yang dipilih pengguna, dan flag "extras"
+        {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}. Semua flag ini memberikan
+        izin URI ke aplikasi Anda untuk membaca data kontak yang ditunjuk oleh
+        URI konten. Aktivitas pemilihan kemudian memanggil {@link android.app.Activity#finish()} untuk
+        mengembalikan kontrol ke aplikasi Anda.
+    </li>
+    <li>
+        Aktivitas Anda akan kembali ke latar depan, dan sistem memanggil metode
+        {@link android.app.Activity#onActivityResult onActivityResult()}
+        aktivitas Anda. Metode ini menerima intent yang dihasilkan oleh aktivitas pemilihan dalam
+        aplikasi People.
+    </li>
+    <li>
+        Dengan URI konten dari intent yang dihasilkan, Anda bisa membaca data kontak
+        dari Penyedia Kontak, sekalipun Anda tidak meminta izin akses baca tetap
+        ke penyedia dalam manifes Anda. Anda kemudian bisa mendapatkan informasi hari ulang tahun si kontak
+        atau alamat emailnya, kemudian mengirim kartu ucapan elektronik.
+    </li>
+</ol>
+<h4>Menggunakan aplikasi lain</h4>
+<p>
+    Satu cara mudah agar pengguna bisa memodifikasi data yang izin aksesnya tidak Anda miliki adalah
+    mengaktifkan aplikasi yang memiliki izin dan membiarkan pengguna melakukan pekerjaannya di sana.
+</p>
+<p>
+    Misalnya, aplikasi Kalender menerima
+    intent {@link android.content.Intent#ACTION_INSERT}, yang memungkinkan Anda mengaktifkan
+    UI penyisipan aplikasi itu. Anda bisa meneruskan data "extras" dalam intent ini, yang
+    digunakan aplikasi untuk mengisi dahulu UI-nya. Karena kejadian berulang memiliki sintaks yang rumit,
+    cara yang lebih disukai untuk menyisipkan kejadian ke dalam Penyedia Kalender adalah mengaktifkan aplikasi Kalender dengan
+    {@link android.content.Intent#ACTION_INSERT}, kemudian membiarkan pengguna menyisipkan kejadian di sana.
+</p>
+<!-- Contract Classes -->
+<h2 id="ContractClasses">Kelas-kelas Kontrak</h2>
+<p>
+    Kelas kontrak mendefinisikan konstanta yang membantu aplikasi menggunakan URI konten, nama
+    kolom, tindakan intent, dan fitur lain pada penyedia konten. Kelas kontrak tidak
+    disertakan secara otomatis bersama penyedia; pengembang penyedia harus mendefinisikannya kemudian
+    membuatnya tersedia bagi pengembang lain. Banyak penyedia yang disertakan pada platform Android
+    memiliki kelas kontrak yang sesuai dalam {@link android.provider} paketnya.
+</p>
+<p>
+    Misalnya, Penyedia Kamus Pengguna memiliki kelas kontrak
+    {@link android.provider.UserDictionary} yang berisi URI konten dan konstanta nama kolom. URI
+    konten untuk tabel "words" didefinisikan dalam konstanta
+    {@link android.provider.UserDictionary.Words#CONTENT_URI UserDictionary.Words.CONTENT_URI}.
+    Kelas {@link android.provider.UserDictionary.Words} juga berisi konstanta nama kolom,
+    yang digunakan dalam cuplikan contoh pada panduan ini. Misalnya, sebuah proyeksi query bisa
+    didefinisikan sebagai:
+</p>
+<pre>
+String[] mProjection =
+{
+    UserDictionary.Words._ID,
+    UserDictionary.Words.WORD,
+    UserDictionary.Words.LOCALE
+};
+</pre>
+<p>
+    Kelas kontrak lain adalah {@link android.provider.ContactsContract} untuk Penyedia Kontak.
+    Dokumentasi acuan untuk kelas ini menyertakan contoh cuplikan kode. Salah satu
+    subkelasnya, {@link android.provider.ContactsContract.Intents.Insert}, adalah
+    kelas kontrak yang berisi konstanta untuk intent dan data intent.
+</p>
+
+
+<!-- MIME Type Reference -->
+<h2 id="MIMETypeReference">Acuan Tipe MIME</h2>
+<p>
+    Penyedia konten bisa menghasilkan tipe media MIME standar, atau string tipe MIME custom, atau keduanya.
+</p>
+<p>
+    Tipe MIME memiliki format
+</p>
+<pre>
+<em>type</em>/<em>subtype</em>
+</pre>
+<p>
+    Misalnya, tipe MIME <code>text/html</code> yang dikenal luas memiliki tipe <code>text</code> dan
+    subtipe <code>html</code>. Jika penyedia menghasilkan tipe ini untuk sebuah URI, artinya
+    query dengan URI itu akan menghasilkan teks berisi tag HTML.
+</p>
+<p>
+    String tipe MIME custom, yang juga disebut dengan tipe MIME "khusus vendor", memiliki nilai-nilai
+    <em>tipe</em> dan <em>subtipe</em> yang lebih kompleks. Nilai <em>tipe</em> selalu
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>
+</pre>
+<p>
+    untuk beberapa baris, atau
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>
+</pre>
+<p>
+    untuk satu baris.
+</p>
+<p>
+    <em>Subtipe</em> adalah khusus penyedia. Penyedia bawaan Android biasanya memiliki subtipe
+    sederhana. Misalnya, bila aplikasi Contacts membuat satu baris untuk nomor telepon,
+    aplikasi akan mengatur tipe MIME berikut di baris itu:
+</p>
+<pre>
+vnd.android.cursor.item/phone_v2
+</pre>
+<p>
+    Perhatikan bahwa nilai subtipe adalah sekadar <code>phone_v2</code>.
+</p>
+<p>
+    Pengembang penyedia lain bisa membuat pola subtipe sendiri berdasarkan
+    otoritas dan nama-nama tabel penyedia. Misalnya, perhatikan penyedia yang berisi jadwal kereta api.
+    Otoritas penyedia adalah <code>com.example.trains</code>, dan berisi tabel-tabel
+    Line1, Line2, dan Line3. Untuk merespons URI konten
+</p>
+<p>
+<pre>
+content://com.example.trains/Line1
+</pre>
+<p>
+    untuk tabel Line1, penyedia menghasilkan tipe MIME
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>/vnd.example.line1
+</pre>
+<p>
+     Untuk merespons URI konten
+</p>
+<pre>
+content://com.example.trains/Line2/5
+</pre>
+<p>
+    untuk baris 5 di tabel Line2, penyedia menghasilkan tipe MIME
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>/vnd.example.line2
+</pre>
+<p>
+    Kebanyakan penyedia konten mendefinisikan konstanta kelas kontrak untuk tipe MIME yang digunakannya. Kelas kontrak 
+    {@link android.provider.ContactsContract.RawContacts} pada Penyedia Kontak
+    misalnya, mendefinisikan konstanta
+    {@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE} untuk tipe MIME
+    baris kontak mentah tunggal.
+</p>
+<p>
+    URI konten untuk baris-baris tunggal dijelaskan di bagian
+    <a href="#ContentURIs">URI Konten</a>.
+</p>
diff --git a/docs/html-intl/intl/in/guide/topics/providers/content-provider-creating.jd b/docs/html-intl/intl/in/guide/topics/providers/content-provider-creating.jd
new file mode 100644
index 0000000..fefce70
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/providers/content-provider-creating.jd
@@ -0,0 +1,1214 @@
+page.title=Membuat Penyedia Konten
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+
+<h2>Dalam dokumen ini</h2>
+<ol>
+    <li>
+        <a href="#DataStorage">Mendesain Penyimpanan Data</a>
+    </li>
+    <li>
+        <a href="#ContentURI">Mendesain URI Konten</a>
+    </li>
+    <li>
+        <a href="#ContentProvider">Mengimplementasikan Kelas ContentProvider</a>
+        <ol>
+            <li>
+                <a href="#RequiredAccess">Metode-Metode yang Diperlukan</a>
+            </li>
+            <li>
+                <a href="#Query">Mengimplementasikan metode query()</a>
+            </li>
+            <li>
+                <a href="#Insert">Mengimplementasikan metode insert()</a>
+            </li>
+            <li>
+                <a href="#Delete">Mengimplementasikan metode delete()</a>
+            </li>
+            <li>
+                <a href="#Update">Mengimplementasikan metode update()</a>
+            </li>
+            <li>
+                <a href="#OnCreate">Mengimplementasikan metode onCreate()</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#MIMETypes">Mengimplementasikan Tipe MIME Penyedia Konten</a>
+        <ol>
+            <li>
+                <a href="#TableMIMETypes">Tipe MIME untuk tabel</a>
+            </li>
+            <li>
+                <a href="#FileMIMETypes">Tipe MIME untuk file</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#ContractClass">Mengimplementasikan Kelas Kontrak</a>
+    </li>
+    <li>
+        <a href="#Permissions">Mengimplementasikan Izin Penyedia Konten</a>
+    </li>
+    <li>
+        <a href="#ProviderElement">Elemen &lt;provider&gt;</a>
+    </li>
+    <li>
+        <a href="#Intents">Intent dan Akses Data</a>
+    </li>
+</ol>
+<h2>Kelas-kelas utama</h2>
+    <ol>
+        <li>
+            {@link android.content.ContentProvider}
+        </li>
+        <li>
+            {@link android.database.Cursor}
+        </li>
+        <li>
+            {@link android.net.Uri}
+        </li>
+    </ol>
+<h2>Contoh-Contoh Terkait</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}resources/samples/NotePad/index.html">
+                Aplikasi contoh Note Pad
+            </a>
+        </li>
+    </ol>
+<h2>Lihat juga</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+            Dasar-Dasar Penyedia Konten</a>
+        </li>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+            Penyedia Kalender</a>
+        </li>
+    </ol>
+</div>
+</div>
+
+
+<p>
+    Penyedia konten mengelola akses ke repository data pusat. Anda mengimplementasikan
+    penyedia sebagai satu atau beberapa kelas dalam aplikasi Android, bersama elemen-elemen dalam
+    file manifes. Salah satu kelas Anda mengimplementasikan subkelas
+    {@link android.content.ContentProvider}, yang merupakan antarmuka antara penyedia Anda dan
+    aplikasi lain. Walaupun penyedia konten dimaksudkan untuk menyediakan data bagi
+    aplikasi lain, Anda tentu saja bisa memiliki aktivitas dalam aplikasi yang memungkinkan pengguna
+    melakukan query dan memodifikasi data yang dikelola oleh penyedia Anda.
+</p>
+<p>
+    Bagian selebihnya dalam topik ini adalah daftar langkah-langkah dasar untuk membangun penyedia konten dan daftar
+    API yang akan digunakan.
+</p>
+
+
+<!-- Before You Start Building -->
+<h2 id="BeforeYouStart">Sebelum Anda Mulai Membangun</h2>
+<p>
+    Sebelum Anda mulai membangun penyedia, lakukanlah hal-hal berikut:
+</p>
+<ol>
+    <li>
+        <strong>Putuskan apakah Anda memerlukan penyedia konten</strong>. Anda perlu membangun sebuah
+        penyedia konten jika ingin menyediakan salah satu atau beberapa dari fitur berikut:
+        <ul>
+            <li>Anda ingin menawarkan data atau file yang kompleks ke aplikasi lain.</li>
+            <li>Anda ingin memungkinkan pengguna menyalin data yang kompleks dari aplikasi Anda ke dalam aplikasi lain.</li>
+            <li>Anda ingin menyediakan saran pencarian custom dengan menggunakan kerangka kerja pencarian.</li>
+        </ul>
+    <p>
+        Anda <em>tidak</em> mengharuskan penyedia untuk menggunakan database SQLite jika hanya digunakan dalam
+        aplikasi sendiri.
+    </p>
+    </li>
+    <li>
+        Jika Anda belum siap melakukannya, bacalah topik
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        Dasar-Dasar Penyedia Konten</a> untuk mengetahui selengkapnya tentang penyedia.
+    </li>
+</ol>
+<p>
+    Berikutnya, ikuti langkah-langkah ini untuk membangun penyedia:
+</p>
+<ol>
+    <li>
+        Desain penyimpanan mentah untuk data Anda. Penyedia konten menawarkan data dengan dua cara:
+        <dl>
+            <dt>
+                Data file
+            </dt>
+            <dd>
+                Data yang biasanya masuk ke dalam file, misalnya
+                foto, audio, atau video. Simpan file dalam ruang privat
+                aplikasi Anda. Untuk merespons permintaan file dari aplikasi lain,
+                penyedia Anda bisa menawarkan handle ke file tersebut.
+            </dd>
+            <dt>
+                Data "terstruktur"
+            </dt>
+            <dd>
+                Data yang biasanya masuk ke dalam database, larik, atau struktur serupa.
+                Simpan data dalam bentuk yang kompatibel dengan tabel berisi baris dan kolom. Baris
+                mewakili entitas, misalnya satu orang atau satu barang inventori. Kolom mewakili
+                beberapa data untuk entitas itu, misalnya nama orang atau harga barang. Cara umum untuk
+                menyimpan tipe data ini adalah dalam database SQLite, namun Anda bisa menggunakan tipe
+                penyimpanan apa saja yang persisten. Untuk mengetahui selengkapnya tentang tipe penyimpanan yang tersedia di
+                sistem Android, lihat bagian <a href="#DataStorage">
+                Mendesain Penyimpanan Data</a>.
+            </dd>
+        </dl>
+    </li>
+    <li>
+        Definisikan sebuah implementasi konkret kelas {@link android.content.ContentProvider} dan
+        metode yang diperlukannya. Kelas ini adalah antarmuka antara data Anda dan bagian selebihnya pada
+        sistem Android. Untuk informasi selengkapnya tentang kelas ini, lihat bagian
+        <a href="#ContentProvider">Mengimplementasikan Kelas ContentProvider</a>.
+    </li>
+    <li>
+        Definisikan string otoritas, semua URI isinya, dan nama-nama kolom penyedia. Jika Anda ingin
+        penyedia aplikasi menangani intent, definisikan juga semua tindakan intent, data ekstra,
+        dan flag. Definisikan juga izin yang akan Anda syaratkan terhadap aplikasi yang ingin
+        mengakses data Anda. Anda harus mempertimbangkan pendefinisian semua nilai ini sebagai konstanta di
+        kelas kontrak terpisah; nantinya, Anda bisa mengekspos kelas ini kepada pengembang lain. Untuk
+        informasi selengkapnya tentang URI konten, lihat
+        bagian <a href="#ContentURI">Mendesain URI Konten</a>.
+        Untuk informasi selengkapnya tentang intent, lihat
+        bagian <a href="#Intents">Intent dan Akses Data</a>.
+    </li>
+    <li>
+        Tambahkan bagian opsional lainnya, seperti data contoh atau implementasi
+        {@link android.content.AbstractThreadedSyncAdapter} yang bisa menyinkronkan data antara
+        penyedia dan data berbasis cloud.
+    </li>
+</ol>
+
+
+<!-- Designing Data Storage -->
+<h2 id="DataStorage">Mendesain Penyimpanan Data</h2>
+<p>
+    Penyedia konten adalah antarmuka ke data yang disimpan dalam format terstruktur. Sebelum membuat
+    antarmuka, Anda harus memutuskan cara menyimpan data. Anda bisa menyimpan data dalam bentuk apa saja yang Anda
+    sukai, kemudian mendesain antarmuka untuk membaca dan menulis data yang diperlukan.
+</p>
+<p>
+    Berikut ini adalah beberapa teknologi penyimpanan data yang tersedia di Android:
+</p>
+<ul>
+    <li>
+        Sistem Android menyertakan API database SQLite yang digunakan penyedia Android sendiri
+        untuk menyimpan data berorientasi tabel. Kelas
+        {@link android.database.sqlite.SQLiteOpenHelper} membantu Anda membuat database, dan kelas
+        {@link android.database.sqlite.SQLiteDatabase} adalah kelas dasar untuk mengakses
+        database.
+        <p>
+            Ingatlah bahwa Anda tidak harus menggunakan database untuk mengimplementasikan repository. Penyedia
+            muncul secara eksternal sebagai satu set tabel, yang serupa dengan sebuah database relasional, namun ini
+            bukan persyaratan untuk implementasi internal penyedia.
+        </p>
+    </li>
+    <li>
+        Untuk menyimpan file data, Android memiliki beragam API berorientasi file.
+        Untuk mengetahui selengkapnya tentang penyimpanan file, bacalah topik
+        <a href="{@docRoot}guide/topics/data/data-storage.html">Penyimpanan Data</a>. Jika Anda sedang
+        mendesain penyedia yang menawarkan data yang terkait dengan media seperti musik atau video, Anda bisa
+        memiliki penyedia yang mengombinasikan data tabel dan file.
+    </li>
+    <li>
+        Untuk bekerja dengan data berbasis jaringan, gunakan kelas-kelas dalam {@link java.net} dan
+        {@link android.net}. Anda juga bisa menyinkronkan data berbasis jaringan dengan penyimpanan data lokal
+        seperti database, kemudian menawarkan data sebagai tabel atau file.
+        Aplikasi contoh <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+        Sample Sync Adapter</a> memperagakan tipe sinkronisasi ini.
+    </li>
+</ul>
+<h3 id="DataDesign">
+    Pertimbangan desain data
+</h3>
+<p>
+    Berikut ini adalah beberapa tip untuk mendesain struktur data penyedia:
+</p>
+<ul>
+    <li>
+        Data tabel harus selalu memiliki kolom "kunci utama" yang dipelihara oleh penyedia
+        sebagai nilai numerik unik untuk setiap baris. Anda bisa menggunakan nilai ini untuk menautkan baris ke
+        baris yang terkait dalam tabel lain (dengan menggunakannya sebagai "kunci asing"). Walaupun Anda bisa menggunakan nama
+        apa saja untuk kolom ini, menggunakan {@link android.provider.BaseColumns#_ID BaseColumns._ID} adalah
+        pilihan terbaik, karena menautkan hasil query penyedia dengan
+        {@link android.widget.ListView} mensyaratkan bahwa salah satu kolom yang diambil memiliki nama
+        <code>_ID</code>.
+    </li>
+    <li>
+        Jika Anda ingin untuk menyediakan gambar bitmap atau potongan data berorientasi file lainnya yang berukuran sangat besar, simpanlah
+        data dalam sebuah file kemudian sediakan secara tidak langsung sebagai ganti menyimpannya secara langsung dalam
+        tabel. Jika melakukannya, Anda perlu memberi tahu pengguna penyedia Anda bahwa mereka perlu menggunakan metode file
+        {@link android.content.ContentResolver} untuk mengakses data.
+    </li>
+    <li>
+        Gunakan tipe data Binary Large OBject (BLOB) untuk menyimpan data yang bervariasi ukurannya atau memiliki
+        struktur yang beragam. Misalnya, Anda bisa menggunakan sebuah kolom BLOB untuk menyimpan
+        <a href="http://code.google.com/p/protobuf">buffer protokol</a> atau
+        <a href="http://www.json.org">struktur JSON</a>.
+        <p>
+            Anda juga bisa menggunakan BLOB untuk mengimplementasikan tabel yang <em>tidak bergantung skema</em>. Dalam
+            tipe tabel ini, Anda mendefinisikan kolom kunci utama, kolom tipe MIME, dan satu atau beberapa
+            kolom generik sebagai BLOB. Arti dari data dalam kolom-kolom BLOB ditunjukkan
+            oleh nilai dalam kolom tipe MIME. Cara ini memungkinkan Anda menyimpan berbagai tipe baris dalam
+            tabel yang sama. Tabel "data"
+            {@link android.provider.ContactsContract.Data} Penyedia Kontak adalah contoh tabel yang tidak bergantung skema
+            tersebut.
+        </p>
+    </li>
+</ul>
+<!-- Designing Content URIs -->
+<h2 id="ContentURI">Mendesain URI Konten</h2>
+<p>
+    <strong>URI konten</strong> adalah URI yang mengidentifikasi data dalam penyedia. URI Konten
+    berisi nama simbolis seluruh penyedia (<strong>otoritas</strong>nya) dan sebuah
+    nama yang menunjuk ke tabel atau file (<strong>path</strong>). Bagian id opsional menunjuk ke
+    satu baris dalam tabel. Setiap metode akses data
+    {@link android.content.ContentProvider} memiliki sebuah URI konten sebagai argumen; hal ini memungkinkan Anda
+    menentukan tabel, baris, atau file yang akan diakses.
+</p>
+<p>
+    Dasar-dasar URI konten dijelaskan dalam topik
+    <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+    Dasar-Dasar Penyedia Konten</a>.
+</p>
+<h3>Mendesain otoritas</h3>
+<p>
+    Penyedia biasanya memiliki otoritas tunggal, yang berfungsi sebagai nama internal Android-nya. Untuk
+    menghindari konflik dengan penyedia lain, Anda harus menggunakan kepemilikan domain internet (secara terbalik)
+    sebagai basis otoritas penyedia Anda. Karena saran ini juga berlaku untuk
+    nama-nama paket Android, Anda bisa mendefinisikan otoritas penyedia sebagai perluasan dari nama
+    paket yang berisi penyedia. Misalnya, jika nama paket Android Anda adalah
+    <code>com.example.&lt;appname&gt;</code>, Anda harus memberikan penyedia Anda
+    otoritas <code>com.example.&lt;appname&gt;.provider</code>.
+</p>
+<h3>Mendesain struktur path</h3>
+<p>
+    Pengembang biasanya membuat URI konten dari otoritas dengan menambahkan path yang menunjuk ke
+    masing-masing tabel. Misalnya, jika Anda memiliki dua tabel <em>table1</em> dan
+    <em>table2</em>, Anda mengombinasikan otoritas dari contoh sebelumnya untuk menghasilkan
+    URI konten
+    <code>com.example.&lt;appname&gt;.provider/table1</code> dan
+    <code>com.example.&lt;appname&gt;.provider/table2</code>. Path tidak
+    dibatasi pada segmen tunggal, dan tidak harus berupa tabel untuk masing-masing tingkat path.
+</p>
+<h3>Menangani ID URI konten</h3>
+<p>
+    Berdasarkan standar, penyedia menawarkan akses ke satu baris dalam tabel dengan menerima URI konten
+    dengan sebuah nilai ID untuk baris itu di akhir URI. Juga berdasarkan standar, penyedia mencocokkan
+    nilai ID dengan kolom <code>_ID</code> tabel, dan melakukan akses yang diminta terhadap baris
+    yang cocok.
+</p>
+<p>
+    Standar ini memudahkan pola desain umum untuk aplikasi yang mengakses penyedia. Aplikasi
+    melakukan query terhadap penyedia dan menampilkan {@link android.database.Cursor} yang dihasilkan
+    dalam {@link android.widget.ListView} dengan menggunakan {@link android.widget.CursorAdapter}.
+    Definisi {@link android.widget.CursorAdapter} mengharuskan salah satu kolom dalam
+    {@link android.database.Cursor} berupa <code>_ID</code>
+</p>
+<p>
+    Pengguna kemudian mengambil salah satu baris yang ditampilkan dari UI untuk menemukan atau memodifikasi
+    data. Aplikasi mengambil baris yang sesuai dari {@link android.database.Cursor} yang mendukung
+    {@link android.widget.ListView}, mengambil nilai <code>_ID</code> untuk baris ini, menambahkannya ke
+    URI konten, dan mengirim permintaan akses ke penyedia. Penyedia nanti bisa melakukan
+    query atau modifikasi terhadap baris yang persis diambil pengguna.
+</p>
+<h3>Pola URI konten</h3>
+<p>
+    Untuk membantu Anda memilih tindakan yang diambil bagi URI konten yang masuk, API penyedia menyertakan
+    kelas praktis {@link android.content.UriMatcher}, yang memetakan "pola-pola" URI konten ke
+    nilai-nilai integer. Anda bisa menggunakan nilai-nilai integer dalam pernyataan <code>switch</code> yang
+    memilih tindakan yang diinginkan untuk URI konten atau URI yang cocok dengan pola tertentu.
+</p>
+<p>
+    Pola URI konten mencocokkan dengan URI konten menggunakan karakter wildcard:
+</p>
+    <ul>
+        <li>
+            <strong><code>*</code>:</strong> Mencocokkan string yang memiliki karakter yang sah dengan panjang berapa saja.
+        </li>
+        <li>
+            <strong><code>#</code>:</strong> Mencocokkan string karakter numerik dengan panjang berapa saja.
+        </li>
+    </ul>
+<p>
+    Sebagai contoh desain dan pemrograman penanganan URI konten, perhatikan penyedia dengan
+    otoritas <code>com.example.app.provider</code> yang mengenali URI konten berikut
+    yang menunjuk ke tabel-tabel:
+</p>
+<ul>
+    <li>
+        <code>content://com.example.app.provider/table1</code>: Tabel bernama <code>table1</code>.
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table2/dataset1</code>: Tabel bernama
+        <code>dataset1</code>.
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table2/dataset2</code>: Tabel bernama
+        <code>dataset2</code>.
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table3</code>: Tabel bernama <code>table3</code>.
+    </li>
+</ul>
+<p>
+    Penyedia juga mengenali URI konten ini jika baris ID ditambahkan ke URI,
+    misalnya <code>content://com.example.app.provider/table3/1</code> untuk baris yang diidentifikasi oleh
+    <code>1</code> dalam <code>table3</code>.
+</p>
+<p>
+    Pola-pola URI konten berikut akan menjadi mungkin:
+</p>
+<dl>
+    <dt>
+        <code>content://com.example.app.provider/*</code>
+    </dt>
+    <dd>
+        Mencocokkan URI konten di penyedia.
+    </dd>
+    <dt>
+        <code>content://com.example.app.provider/table2/*</code>:
+    </dt>
+    <dd>
+        Mencocokkan URI konten untuk tabel-tabel <code>dataset1</code>
+        dan <code>dataset2</code>, namun tidak mencocokkan URI konten untuk <code>table1</code> atau
+        <code>table3</code>.
+    </dd>
+    <dt>
+        <code>content://com.example.app.provider/table3/#</code>: Mencocokkan URI konten
+        untuk satu baris di <code>table3</code>, misalnya
+        <code>content://com.example.app.provider/table3/6</code> untuk baris yang diidentifikasi oleh
+        <code>6</code>.
+    </dt>
+</dl>
+<p>
+    Cuplikan kode berikut menunjukkan cara kerja metode di {@link android.content.UriMatcher}.
+    Kode ini menangani URI seluruh tabel secara berbeda dengan URI untuk
+    satu baris, menggunakan pola URI konten
+    <code>content://&lt;authority&gt;/&lt;path&gt;</code> untuk tabel, dan
+    <code>content://&lt;authority&gt;/&lt;path&gt;/&lt;id&gt;</code> untuk satu baris.
+</p>
+<p>
+    Metode {@link android.content.UriMatcher#addURI(String, String, int) addURI()} memetakan
+    otoritas dan path ke nilai integer. Metode {@link android.content.UriMatcher#match(Uri)
+    match()} menghasilkan nilai integer URI. Pernyataan <code>switch</code>
+    memilih antara melakukan query seluruh tabel dan melakukan query satu record:
+</p>
+<pre class="prettyprint">
+public class ExampleProvider extends ContentProvider {
+...
+    // Creates a UriMatcher object.
+    private static final UriMatcher sUriMatcher;
+...
+    /*
+     * The calls to addURI() go here, for all of the content URI patterns that the provider
+     * should recognize. For this snippet, only the calls for table 3 are shown.
+     */
+...
+    /*
+     * Sets the integer value for multiple rows in table 3 to 1. Notice that no wildcard is used
+     * in the path
+     */
+    sUriMatcher.addURI("com.example.app.provider", "table3", 1);
+
+    /*
+     * Sets the code for a single row to 2. In this case, the "#" wildcard is
+     * used. "content://com.example.app.provider/table3/3" matches, but
+     * "content://com.example.app.provider/table3 doesn't.
+     */
+    sUriMatcher.addURI("com.example.app.provider", "table3/#", 2);
+...
+    // Implements ContentProvider.query()
+    public Cursor query(
+        Uri uri,
+        String[] projection,
+        String selection,
+        String[] selectionArgs,
+        String sortOrder) {
+...
+        /*
+         * Choose the table to query and a sort order based on the code returned for the incoming
+         * URI. Here, too, only the statements for table 3 are shown.
+         */
+        switch (sUriMatcher.match(uri)) {
+
+
+            // If the incoming URI was for all of table3
+            case 1:
+
+                if (TextUtils.isEmpty(sortOrder)) sortOrder = "_ID ASC";
+                break;
+
+            // If the incoming URI was for a single row
+            case 2:
+
+                /*
+                 * Because this URI was for a single row, the _ID value part is
+                 * present. Get the last path segment from the URI; this is the _ID value.
+                 * Then, append the value to the WHERE clause for the query
+                 */
+                selection = selection + "_ID = " uri.getLastPathSegment();
+                break;
+
+            default:
+            ...
+                // If the URI is not recognized, you should do some error handling here.
+        }
+        // call the code to actually do the query
+    }
+</pre>
+<p>
+    Kelas lainnya, {@link android.content.ContentUris}, menyediakan metode praktis untuk menggunakan
+    bagian <code>id</code> URI konten. Kelas-kelas {@link android.net.Uri} dan
+    {@link android.net.Uri.Builder} menyertakan metode praktis untuk mengurai
+    objek {@link android.net.Uri} yang ada dan membuat objek baru.
+</p>
+
+<!-- Implementing the ContentProvider class -->
+<h2 id="ContentProvider">Mengimplementasikan Kelas ContentProvider</h2>
+<p>
+    Instance {@link android.content.ContentProvider} mengelola akses
+    ke satu set data terstruktur dengan menangani permintaan dari aplikasi lain. Semua bentuk
+    akses pada akhirnya akan memanggil {@link android.content.ContentResolver}, yang kemudian memanggil
+    metode konkret {@link android.content.ContentProvider} untuk mendapatkan akses.
+</p>
+<h3 id="RequiredAccess">Metode-metode yang diperlukan</h3>
+<p>
+    Kelas abstrak {@link android.content.ContentProvider} mendefinisikan enam metode abstrak yang
+    harus Anda implementasikan sebagai bagian dari subkelas konkret Anda sendiri. Semua metode ini kecuali
+    {@link android.content.ContentProvider#onCreate() onCreate()} dipanggil oleh aplikasi klien
+    yang berupaya mengakses penyedia konten Anda:
+</p>
+<dl>
+    <dt>
+        {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+        query()}
+    </dt>
+    <dd>
+        Mengambil data dari penyedia Anda. Menggunakan argumen untuk memilih tabel yang akan
+        di-query, baris dan kolom yang akan dihasilkan, dan urutan sortir hasilnya.
+        Menghasilkan data berupa objek {@link android.database.Cursor}.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}
+    </dt>
+    <dd>
+        Menyisipkan baris baru ke dalam penyedia Anda. Menggunakan argumen untuk memilih
+        tabel tujuan dan mendapatkan nilai-nilai kolom yang akan digunakan. Menghasilkan URI konten untuk
+        baris yang baru disisipkan.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#update(Uri, ContentValues, String, String[])
+        update()}
+    </dt>
+    <dd>
+        Memperbarui baris yang ada di penyedia Anda. Menggunakan argumen untuk memilih tabel dan baris
+        yang akan diperbarui dan mendapatkan nilai-nilai kolom yang diperbarui. Menghasilkan jumlah baris yang diperbarui.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()}
+    </dt>
+    <dd>
+        Menghapus baris dari penyedia Anda. Menggunakan argumen untuk memilih tabel dan baris yang akan
+        dihapus. Menghasilkan jumlah baris yang dihapus.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#getType(Uri) getType()}
+    </dt>
+    <dd>
+        Menghasilkan tipe MIME yang sesuai dengan URI konten. Metode ini dijelaskan lebih detail
+        di bagian <a href="#MIMETypes">Mengimplementasikan Tipe MIME Penyedia Konten</a>.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#onCreate() onCreate()}
+    </dt>
+    <dd>
+        Inisialisasi penyedia Anda. Sistem Android memanggil metode ini segera setelah
+        membuat penyedia Anda. Perhatikan bahwa penyedia Anda tidak dibuat hingga
+        objek {@link android.content.ContentResolver} mencoba mengaksesnya.
+    </dd>
+</dl>
+<p>
+    Perhatikan bahwa metode-metode ini memiliki signature yang sama dengan
+    metode-metode {@link android.content.ContentResolver} yang sama namanya.
+</p>
+<p>
+    Implementasi metode-metode ini harus memperhitungkan hal-hal berikut:
+</p>
+<ul>
+    <li>
+        Semua metode ini kecuali {@link android.content.ContentProvider#onCreate() onCreate()}
+        bisa dipanggil oleh beberapa thread sekaligus, jadi harus thread-safe (aman untuk thread). Untuk mengetahui
+        selengkapnya tentang multi-thread, lihat topik
+        <a href="{@docRoot}guide/components/processes-and-threads.html">
+        Proses dan Thread</a>.
+    </li>
+    <li>
+        Hindari melakukan operasi yang lama dalam {@link android.content.ContentProvider#onCreate()
+        onCreate()}. Tunda inisialisasi tugas hingga benar-benar diperlukan.
+        Bagian <a href="#OnCreate">Mengimplementasikan metode onCreate()</a>
+        membahas hal ini secara lebih detail.
+    </li>
+    <li>
+        Walaupun harus mengimplementasikan metode-metode ini, kode Anda tidak harus melakukan apa pun selain
+        tipe data yang diharapkan. Misalnya, Anda mungkin ingin mencegah aplikasi lain
+        menyisipkan data ke dalam beberapa tabel. Caranya, Anda bisa mengabaikan panggilan ke
+        {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} dan menghasilkan
+        0.
+    </li>
+</ul>
+<h3 id="Query">Mengimplementasikan metode query()</h3>
+<p>
+    Metode
+    {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+    ContentProvider.query()} harus menghasilkan objek {@link android.database.Cursor}, atau jika
+    gagal, melontarkan {@link java.lang.Exception}. Jika menggunakan database SQLite sebagai
+    penyimpanan data, Anda bisa mengembalikan{@link android.database.Cursor} yang dikembalikan oleh salah satu metode
+    <code>query()</code> dari kelas {@link android.database.sqlite.SQLiteDatabase}.
+    Jika query tidak mencocokkan baris apa pun, Anda harus mengembalikan instance {@link android.database.Cursor}
+    yang metode {@link android.database.Cursor#getCount()}-nya mengembalikan 0.
+    Anda harus mengembalikan <code>null</code> hanya jika terjadi kesalahan internal selama proses query.
+</p>
+<p>
+    Jika Anda tidak menggunakan database SQLite sebagai penyimpanan data, gunakan salah satu subkelas konkret
+    {@link android.database.Cursor}. Misalnya, kelas {@link android.database.MatrixCursor}
+    mengimplementasikan kursor dengan masing-masing baris berupa larik {@link java.lang.Object}. Dengan kelas ini,
+    gunakan {@link android.database.MatrixCursor#addRow(Object[]) addRow()} untuk menambahkan baris baru.
+</p>
+<p>
+    Ingatlah bahwa sistem Android harus mampu mengomunikasikan {@link java.lang.Exception}
+    lintas batas proses. Android bisa melakukannya untuk eksepsi berikut yang mungkin berguna
+    dalam menangani kesalahan query:
+</p>
+<ul>
+    <li>
+        {@link java.lang.IllegalArgumentException} (Anda bisa saja melontarkannya jika penyedia Anda
+        menerima URI konten yang tidak sah)
+    </li>
+    <li>
+        {@link java.lang.NullPointerException}
+    </li>
+</ul>
+<h3 id="Insert">Mengimplementasikan metode insert()</h3>
+<p>
+    Metode {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} menambahkan satu
+    baris baru ke tabel yang sesuai, dengan menggunakan nilai-nilai dalam argumen {@link android.content.ContentValues}.
+ Jika kolom nama tidak ada dalam argumen {@link android.content.ContentValues}, Anda
+    mungkin perlu menyediakan nilai default untuknya, baik dalam kode penyedia atau dalam skema database
+    Anda.
+</p>
+<p>
+    Metode ini harus mengembalikan URI konten untuk baris baru. Untuk membuatnya, tambahkan nilai
+    <code>_ID</code> baris baru (atau kunci utama lainnya) ke tabel URI konten, dengan menggunakan
+    {@link android.content.ContentUris#withAppendedId(Uri, long) withAppendedId()}.
+</p>
+<h3 id="Delete">Mengimplementasikan metode delete()</h3>
+<p>
+    Metode {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()}
+    tidak harus menghapus baris-baris dari penyimpanan data Anda secara fisik. Jika menggunakan adaptor sinkronisasi
+    bersama penyedia, Anda harus mempertimbangkan penandaan baris yang dihapus
+    dengan flag "delete"; bukan menghilangkan baris itu sepenuhnya. Adaptor sinkronisasi bisa
+    memeriksa baris yang dihapus dan menghilangkannya dari server sebelum menghapusnya dari penyedia.
+</p>
+<h3 id="Update">Mengimplementasikan metode update()</h3>
+<p>
+    Metode {@link android.content.ContentProvider#update(Uri, ContentValues, String, String[])
+    update()} mengambil argumen {@link android.content.ContentValues} yang sama dengan yang digunakan oleh
+    {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}, dan
+    argumen-argumen <code>selection</code> dan <code>selectionArgs</code> yang sama dengan yang digunakan oleh
+    {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()} dan
+    {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+    ContentProvider.query()}. Hal ini bisa memungkinkan Anda menggunakan kembali kode di antara metode-metode ini.
+</p>
+<h3 id="OnCreate">Mengimplementasikan metode onCreate()</h3>
+<p>
+    Sistem Android memanggil {@link android.content.ContentProvider#onCreate()
+    onCreate()} saat memulai penyedia. Anda harus melakukan tugas-tugas inisialisasi yang berjalan cepat saja
+    dalam metode ini, serta menunda pembuatan database dan pemuatan data hingga penyedia benar-benar
+    menerima permintaan terhadap data. Jika Anda melakukan tugas yang memakan waktu dalam
+    {@link android.content.ContentProvider#onCreate() onCreate()}, Anda akan memperlambat
+    startup penyedia. Pada gilirannya, hal ini akan memperlambat respons dari penyedia terhadap
+    aplikasi lain.
+</p>
+<p>
+    Misalnya, jika menggunakan database SQLite, Anda bisa membuat
+    sebuah objek {@link android.database.sqlite.SQLiteOpenHelper} baru di
+    {@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()},
+    kemudian membuat tabel-tabel SQL saat pertama kali membuka database itu. Untuk memperlancar hal ini,
+    saat pertama Anda memanggil {@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase
+    getWritableDatabase()}, metode ini memanggil metode
+    {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+    SQLiteOpenHelper.onCreate()} secara otomatis.
+</p>
+<p>
+    Dua cuplikan berikut memperagakan interaksi antara
+    {@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()} dan
+    {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+    SQLiteOpenHelper.onCreate()}. Cuplikan pertama adalah implementasi
+    {@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()}:
+</p>
+<pre class="prettyprint">
+public class ExampleProvider extends ContentProvider
+
+    /*
+     * Defines a handle to the database helper object. The MainDatabaseHelper class is defined
+     * in a following snippet.
+     */
+    private MainDatabaseHelper mOpenHelper;
+
+    // Defines the database name
+    private static final String DBNAME = "mydb";
+
+    // Holds the database object
+    private SQLiteDatabase db;
+
+    public boolean onCreate() {
+
+        /*
+         * Creates a new helper object. This method always returns quickly.
+         * Notice that the database itself isn't created or opened
+         * until SQLiteOpenHelper.getWritableDatabase is called
+         */
+        mOpenHelper = new MainDatabaseHelper(
+            getContext(),        // the application context
+            DBNAME,              // the name of the database)
+            null,                // uses the default SQLite cursor
+            1                    // the version number
+        );
+
+        return true;
+    }
+
+    ...
+
+    // Implements the provider's insert method
+    public Cursor insert(Uri uri, ContentValues values) {
+        // Insert code here to determine which table to open, handle error-checking, and so forth
+
+        ...
+
+        /*
+         * Gets a writeable database. This will trigger its creation if it doesn't already exist.
+         *
+         */
+        db = mOpenHelper.getWritableDatabase();
+    }
+}
+</pre>
+<p>
+    Cuplikan berikutnya adalah implementasi
+    {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+    SQLiteOpenHelper.onCreate()}, yang menyertakan kelas helper:
+</p>
+<pre class="prettyprint">
+...
+// A string that defines the SQL statement for creating a table
+private static final String SQL_CREATE_MAIN = "CREATE TABLE " +
+    "main " +                       // Table's name
+    "(" +                           // The columns in the table
+    " _ID INTEGER PRIMARY KEY, " +
+    " WORD TEXT"
+    " FREQUENCY INTEGER " +
+    " LOCALE TEXT )";
+...
+/**
+ * Helper class that actually creates and manages the provider's underlying data repository.
+ */
+protected static final class MainDatabaseHelper extends SQLiteOpenHelper {
+
+    /*
+     * Instantiates an open helper for the provider's SQLite data repository
+     * Do not do database creation and upgrade here.
+     */
+    MainDatabaseHelper(Context context) {
+        super(context, DBNAME, null, 1);
+    }
+
+    /*
+     * Creates the data repository. This is called when the provider attempts to open the
+     * repository and SQLite reports that it doesn't exist.
+     */
+    public void onCreate(SQLiteDatabase db) {
+
+        // Creates the main table
+        db.execSQL(SQL_CREATE_MAIN);
+    }
+}
+</pre>
+
+
+<!-- Implementing ContentProvider MIME Types -->
+<h2 id="MIMETypes">Mengimplementasikan Tipe MIME Penyedia Konten</h2>
+<p>
+    Kelas {@link android.content.ContentProvider} memiliki dua metode untuk menghasilkan tipe-tipe MIME:
+</p>
+<dl>
+    <dt>
+        {@link android.content.ContentProvider#getType(Uri) getType()}
+    </dt>
+    <dd>
+        Salah satu metode wajib yang harus Anda implementasikan untuk setiap penyedia.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}
+    </dt>
+    <dd>
+        Sebuah metode yang diharapkan untuk Anda implementasikan jika penyedia Anda menawarkan file.
+    </dd>
+</dl>
+<h3 id="TableMIMETypes">Tipe MIME untuk tabel</h3>
+<p>
+    Metode {@link android.content.ContentProvider#getType(Uri) getType()} mengembalikan
+    {@link java.lang.String} dengan format MIME yang menjelaskan tipe data yang dikembalikan oleh
+    argumen URI konten. Argumen {@link android.net.Uri} bisa berupa pola, bukannya URI tertentu;
+    dalam hal ini, Anda harus mengembalikan tipe data terkait URI konten yang cocok dengan
+    polanya.
+</p>
+<p>
+    Untuk tipe data umum misalnya teks, HTML, atau JPEG,
+    {@link android.content.ContentProvider#getType(Uri) getType()} harus mengembalikan
+    tipe MIME standar untuk data itu. Daftar lengkap tipe standar ini tersedia di situs web
+    <a href="http://www.iana.org/assignments/media-types/index.htm">IANA MIME Media Types</a>.
+
+</p>
+<p>
+    Untuk URI konten yang menunjuk ke baris atau baris-baris data tabel,
+    {@link android.content.ContentProvider#getType(Uri) getType()} harus mengembalikan
+    tipe MIME dalam format MIME khusus vendor Android:
+</p>
+<ul>
+    <li>
+        Bagian tipe: <code>vnd</code>
+    </li>
+    <li>
+        Bagian subtipe:
+        <ul>
+            <li>
+    Jika pola URI adalah untuk satu baris: <code>android.cursor.<strong>item</strong>/</code>
+            </li>
+            <li>
+    Jika pola URI adalah untuk lebih dari satu baris: <code>android.cursor.<strong>dir</strong>/</code>
+            </li>
+        </ul>
+    </li>
+    <li>
+        Bagian khusus penyedia: <code>vnd.&lt;name&gt;</code>.<code>&lt;type&gt;</code>
+        <p>
+            Anda menyediakan <code>&lt;name&gt;</code> dan <code>&lt;type&gt;</code>.
+            Nilai <code>&lt;name&gt;</code> harus unik secara global,
+            dan nilai <code>&lt;type&gt;</code> harus unik bagi pola URI
+            yang sesuai. Pilihan tepat untuk <code>&lt;name&gt;</code> adalah nama perusahaan Anda atau
+            sebagian dari nama paket Android aplikasi Anda. Pilihan tepat untuk
+            <code>&lt;type&gt;</code> adalah string yang mengidentifikasi tabel yang terkait dengan
+            URI.
+        </p>
+
+    </li>
+</ul>
+<p>
+    Misalnya, jika otoritas penyedia adalah
+    <code>com.example.app.provider</code>, dan penyedia mengekspos tabel bernama
+    <code>table1</code>, tipe MIME untuk beberapa baris dalam <code>table1</code> adalah:
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>/vnd.com.example.provider.table1
+</pre>
+<p>
+    Untuk satu baris <code>table1</code>, tipe MIME adalah:
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>/vnd.com.example.provider.table1
+</pre>
+<h3 id="FileMIMETypes">Tipe MIME untuk file</h3>
+<p>
+    Jika penyedia Anda menawarkan file, implementasikan
+    {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}.
+    Metode ini menghasilkan larik {@link java.lang.String} tipe MIME untuk file
+    yang bisa dikembalikan penyedia Anda untuk URI konten bersangkutan. Anda harus memfilter tipe MIME yang Anda tawarkan dengan argumen filter
+    tipe MIME, sehingga Anda hanya mengembalikan tipe MIME yang ingin ditangani klien.
+</p>
+<p>
+    Misalnya, perhatikan penyedia yang menawarkan gambar foto sebagai file dalam format <code>.jpg</code>,
+    <code>.png</code>, dan <code>.gif</code>.
+    Jika aplikasi memanggil {@link android.content.ContentResolver#getStreamTypes(Uri, String)
+    ContentResolver.getStreamTypes()} dengan string filter <code>image/*</code> (sesuatu yang
+    merupakan "gambar"),
+    maka metode {@link android.content.ContentProvider#getStreamTypes(Uri, String)
+    ContentProvider.getStreamTypes()} harus mengembalikan larik:
+</p>
+<pre>
+{ &quot;image/jpeg&quot;, &quot;image/png&quot;, &quot;image/gif&quot;}
+</pre>
+<p>
+    Jika aplikasi tertarik pada file <code>.jpg</code>, maka aplikasi bisa memanggil
+    {@link android.content.ContentResolver#getStreamTypes(Uri, String)
+    ContentResolver.getStreamTypes()} dengan string filter <code>*\/jpeg</code>, dan
+    {@link android.content.ContentProvider#getStreamTypes(Uri, String)
+    ContentProvider.getStreamTypes()} harus mengembalikan:
+<pre>
+{&quot;image/jpeg&quot;}
+</pre>
+<p>
+    Jika penyedia Anda tidak menawarkan tipe MIME apa pun yang diminta dalam string filter,
+    {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}
+    harus mengembalikan <code>null</code>.
+</p>
+
+
+<!--  Implementing a Contract Class -->
+<h2 id="ContractClass">Mengimplementasikan Kelas Kontrak</h2>
+<p>
+    Kelas kontrak adalah kelas <code>public final</code> yang berisi definisi konstanta untuk URI, nama kolom, tipe MIME, dan
+metadata lain yang melekat ke penyedia. Kelas
+    membentuk sebuah kontrak antara penyedia dan aplikasi lain dengan memastikan bahwa penyedia
+    bisa diakses dengan benar sekalipun ada perubahan pada nilai URI sesungguhnya, nama kolom,
+    dan seterusnya.
+</p>
+<p>
+    Kelas kontrak juga membantu pengembang karena kelas ini biasanya memiliki nama-nama simbolik untuk konstantanya,
+    sehingga memperkecil kemungkinan pengembang menggunakan nilai yang salah untuk nama kolom atau URI. Karena berupa
+    kelas, kelas ini bisa berisi dokumentasi Javadoc. Lingkungan pengembangan terpadu (IDE) seperti
+    Eclipse secara otomatis bisa melengkapi nama-nama konstanta dari kelas kontrak dan menampilkan Javadoc untuk
+    konstanta.
+</p>
+<p>
+    Pengembang tidak bisa mengakses file kelas milik kelas kontrak dari aplikasi Anda, namun bisa
+    mengompilasinya secara statis ke dalam aplikasi mereka dari file <code>.jar</code> yang Anda sediakan.
+</p>
+<p>
+    Kelas {@link android.provider.ContactsContract} dan kelas-kelas tersarangnya adalah contoh
+    kelas kontrak.
+</p>
+<h2 id="Permissions">Mengimplementasikan Izin Penyedia Konten</h2>
+<p>
+    Izin dan akses untuk semua aspek sistem Android dijelaskan secara detail dalam
+    topik <a href="{@docRoot}guide/topics/security/security.html">Keamanan dan Izin</a>.
+    Topik <a href="{@docRoot}guide/topics/data/data-storage.html">Penyimpanan Data</a> juga
+    menjelaskan keamanan dan izin terkait dengan berbagai tipe penyimpanan.
+    Singkatnya, poin-poin pentingnya adalah:
+</p>
+<ul>
+    <li>
+        Secara default, file data yang disimpan pada penyimpanan internal perangkat bersifat privat bagi
+        aplikasi dan penyedia Anda.
+    </li>
+    <li>
+        Database {@link android.database.sqlite.SQLiteDatabase} yang Anda buat bersifat privat bagi
+        aplikasi dan penyedia Anda.
+    </li>
+    <li>
+        Secara default, file data yang Anda simpan ke penyimpanan eksternal bersifat <em>publik</em> dan
+        <em>bisa dibaca secara global</em>. Anda tidak bisa menggunakan penyedia konten untuk membatasi akses ke file dalam
+        penyimpanan eksternal, karena aplikasi lain bisa menggunakan panggilan API untuk membaca dan menulis ke file tersebut.
+    </li>
+    <li>
+        Panggilan metode untuk membuka atau membuat file atau database SQLite pada
+        penyimpanan internal perangkat Anda berpotensi memberikan akses baca maupun tulis ke semua aplikasi lain. Jika Anda
+        menggunakan file atau database internal sebagai repository penyedia, dan Anda memberinya
+        akses "world-readable" (bisa dibaca secara global) atau "world-writeable" (bisa ditulis secara global), izin yang Anda atur untuk penyedia dalam
+        manifesnya tidak akan melindungi data Anda. Akses default untuk file dan database dalam
+        penyimpanan internal adalah "privat", dan untuk repository penyedia, tidak boleh Anda ubah.
+    </li>
+</ul>
+<p>
+    Jika Anda ingin menggunakan izin penyedia konten untuk mengontrol akses ke data Anda, maka Anda harus
+    menyimpan data Anda dalam file internal, database SQLite, atau "cloud" (misalnya,
+    di server jauh), dan Anda harus membuat file dan database tetap privat bagi aplikasi Anda.
+</p>
+<h3>Mengimplementasikan izin</h3>
+<p>
+    Semua aplikasi bisa membaca dari atau menulis ke penyedia Anda, sekalipun data yang mendasari adalah
+    privat, karena secara default penyedia Anda tidak mengatur izin. Untuk mengubahnya,
+    atur izin untuk penyedia dalam file manifes, dengan menggunakan atribut atau elemen anak
+    dari elemen <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+    &lt;provider&gt;</a></code>. Anda bisa mengatur izin yang berlaku pada seluruh penyedia,
+    atau pada tabel tertentu, atau bahkan pada record tertentu, atau ketiganya.
+</p>
+<p>
+    Anda mendefinisikan izin untuk penyedia dengan satu atau beberapa elemen
+    <code><a href="{@docRoot}guide/topics/manifest/permission-element.html">
+    &lt;permission&gt;</a></code> dalam file manifes. Untuk membuat
+    izin unik bagi penyedia, gunakan scoping (pengaturan lingkup) bergaya Java untuk
+    atribut <code><a href="{@docRoot}guide/topics/manifest/permission-element.html#nm">
+    android:name</a></code>. Misalnya, beri nama izin membaca dengan
+    <code>com.example.app.provider.permission.READ_PROVIDER</code>.
+
+</p>
+<p>
+    Daftar berikut menjelaskan lingkup penyedia izin, mulai dengan
+    izin yang berlaku pada seluruh penyedia kemudian menjadi semakin sempit.
+    Izin yang lebih sempit akan didahulukan daripada izin yang berlingkup lebih luas:
+</p>
+<dl>
+    <dt>
+        Izin baca-tulis tunggal tingkat penyedia
+    </dt>
+    <dd>
+        Suatu izin yang mengontrol akses baca-tulis bagi seluruh penyedia, ditetapkan
+        dengan atribut <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+        android:permission</a></code> dari
+        elemen <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code>.
+    </dd>
+    <dt>
+        Izin baca-tulis terpisah tingkat penyedia
+    </dt>
+    <dd>
+        Satu izin baca dan satu izin tulis untuk seluruh penyedia. Anda menetapkan keduanya
+        dengan atribut <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">
+        android:readPermission</a></code> dan
+        <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">
+        android:writePermission</a></code> dari elemen
+        <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code>. Kedua izin akan didahulukan daripada izin yang diharuskan oleh
+        <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+        android:permission</a></code>.
+    </dd>
+    <dt>
+        Izin tingkat path
+    </dt>
+    <dd>
+        Izin baca, tulis, atau baca/tulis untuk URI konten dalam penyedia Anda. Anda menetapkan
+        tiap URI yang ingin dikontrol dengan elemen anak
+        <code><a href="{@docRoot}guide/topics/manifest/path-permission-element.html">
+        &lt;path-permission&gt;</a></code> dari
+        elemen <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code>. Untuk setiap URI konten yang ditetapkan, Anda bisa menetapkan
+        satu izin baca/tulis, satu izin baca, atau satu izin tulis, atau ketiganya. Izin baca dan
+        tulis akan didahulukan daripada izin baca/tulis. Juga,
+        izin tingkat path akan didahulukan daripada izin tingkat penyedia.
+    </dd>
+    <dt>
+        Izin sementara
+    </dt>
+    <dd>
+        Tingkat izin yang memberikan akses sementara ke aplikasi, sekalipun aplikasi itu
+        tidak memiliki izin yang biasanya diminta. Fitur akses
+         sementara mengurangi jumlah izin yang harus diminta aplikasi dalam
+        manifesnya. Bila Anda mengaktifkan izin sementara, satu-satunya aplikasi yang memerlukan
+        izin "permanen" untuk penyedia adalah aplikasi yang mengakses terus-menerus semua
+        data Anda.
+        <p>
+            Perhatikan izin yang Anda perlukan untuk mengimplementasikan penyedia dan aplikasi email, bila Anda
+            ingin memperbolehkan aplikasi penampil gambar dari luar menampilkan lampiran foto dari
+            penyedia Anda. Untuk memberikan akses yang diperlukan kepada penampil gambar tanpa mengharuskan izin,
+            siapkan izin sementara untuk URI konten bagi foto. Desainlah aplikasi email Anda agar
+            bila pengguna ingin menampilkan foto, aplikasi itu akan mengirim intent berisi
+            URI konten foto dan flag izin ke penampil gambar. Penampil gambar nanti bisa
+            melakukan query penyedia email untuk mengambil foto, sekalipun penampil itu tidak
+            memiliki izin baca normal untuk penyedia Anda.
+        </p>
+        <p>
+            Untuk mengaktifkan izin sementara, atur atribut
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+            android:grantUriPermissions</a></code> dari
+            elemen <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code>, atau tambahkan satu atau beberapa elemen anak
+            <code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
+            &lt;grant-uri-permission&gt;</a></code> ke
+            elemen <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> Anda. Jika menggunakan izin sementara, Anda harus memanggil
+            {@link android.content.Context#revokeUriPermission(Uri, int)
+            Context.revokeUriPermission()} kapan saja Anda menghilangkan dukungan untuk URI konten dari
+            penyedia, dan URI konten dikaitkan dengan izin sementara.
+        </p>
+        <p>
+            Nilai atribut menentukan seberapa banyak penyedia Anda yang dijadikan bisa diakses.
+            Jika atribut diatur ke <code>true</code>, maka sistem akan memberikan
+            izin sementara kepada seluruh penyedia, dengan mengesampingkan izin lain yang diharuskan
+            oleh izin tingkat penyedia atau tingkat path.
+        </p>
+        <p>
+            Jika flag ini diatur ke <code>false</code>, maka Anda harus menambahkan elemen-elemen anak
+            <code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
+            &lt;grant-uri-permission&gt;</a></code> ke
+            elemen <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> Anda. Tiap elemen anak menetapkan URI konten atau
+            URI yang telah diberi akses sementara.
+        </p>
+        <p>
+            Untuk mendelegasikan akses sementara ke sebuah aplikasi, intent harus berisi
+            {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION} atau flag
+            {@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}, atau keduanya. Keduanya
+            diatur dengan metode {@link android.content.Intent#setFlags(int) setFlags()}.
+        </p>
+        <p>
+            Jika atribut <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+            android:grantUriPermissions</a></code> tidak ada, atribut ini diasumsikan sebagai
+            <code>false</code>.
+        </p>
+    </dd>
+</dl>
+
+
+
+<!-- The Provider Element -->
+<h2 id="ProviderElement">Elemen &lt;provider&gt;</h2>
+<p>
+    Seperti halnya komponen {@link android.app.Activity} dan {@link android.app.Service},
+    subkelas {@link android.content.ContentProvider}
+    harus didefinisikan dalam file manifes untuk aplikasinya, dengan menggunakan elemen
+    <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+    &lt;provider&gt;</a></code>. Sistem Android mendapatkan informasi berikut dari
+    elemen:
+<dl>
+    <dt>
+        Otoritas
+        (<a href="{@docRoot}guide/topics/manifest/provider-element.html#auth">{@code
+        android:authorities}</a>)
+    </dt>
+    <dd>
+        Nama-nama simbolik yang mengidentifikasi seluruh penyedia dalam sistem. Atribut
+        ini dijelaskan lebih detail di bagian
+        <a href="#ContentURI">Mendesain URI Konten</a>.
+    </dd>
+    <dt>
+        Nama kelas penyedia
+        (<code>
+<a href="{@docRoot}guide/topics/manifest/provider-element.html#nm">android:name</a>
+        </code>)
+    </dt>
+    <dd>
+        Kelas yang mengimplementasikan {@link android.content.ContentProvider}. Kelas ini
+        dijelaskan lebih detail di bagian
+        <a href="#ContentProvider">Mengimplementasikan Kelas ContentProvider</a>.
+    </dd>
+    <dt>
+        Izin
+    </dt>
+    <dd>
+        Atribut-atribut yang menetapkan izin yang harus dimiliki aplikasi lain untuk mengakses
+        data penyedia:
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+                android:grantUriPermssions</a></code>: Flag izin sementara.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+                android:permission</a></code>: Izin baca/tulis tunggal untuk tingkat penyedia.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">
+                android:readPermission</a></code>: Izin baca untuk tingkat penyedia.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">
+                android:writePermission</a></code>: Izin tulis untuk tingkat penyedia.
+            </li>
+        </ul>
+        <p>
+            Izin dan atribut-atribut yang sesuai dijelaskan lebih detail
+            di bagian
+            <a href="#Permissions">Mengimplementasikan Izin Penyedia Konten</a>.
+        </p>
+    </dd>
+    <dt>
+        Atribut-atribut startup dan kontrol
+    </dt>
+    <dd>
+        Atribut-atribut ini menentukan cara dan waktu sistem Android memulai penyedia,
+        karakteristik proses penyedia, dan pengaturan runtime lainnya:
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#enabled">
+                android:enabled</a></code>: Flag yang memperbolehkan sistem untuk memulai penyedia.
+            </li>
+              <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#exported">
+                android:exported</a></code>: Flag yang memperbolehkan aplikasi lain untuk menggunakan penyedia ini.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#init">
+                android:initOrder</a></code>: Urutan yang digunakan untuk memulai penyedia ini,
+                relatif terhadap penyedia lain dalam proses yang sama.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#multi">
+                android:multiProcess</a></code>: Flag yang memperbolehkan sistem untuk memulai penyedia
+                dalam proses yang sama dengan proses klien pemanggil.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#proc">
+                android:process</a></code>: Nama proses tempat penyedia harus
+                berjalan.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#sync">
+                android:syncable</a></code>: Flag yang menunjukkan bahwa data penyedia harus
+                disinkronkan dengan data di server.
+            </li>
+        </ul>
+        <p>
+            Atribut-atribut ini didokumentasikan dengan lengkap dalam topik panduan pengembang untuk elemen
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code>.
+
+        </p>
+    </dd>
+    <dt>
+        Atribut-atribut informatif
+    </dt>
+    <dd>
+        Ikon dan label opsional untuk penyedia:
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#icon">
+                android:icon</a></code>: Sumber daya drawable, berisi ikon untuk penyedia.
+                Ikon ini muncul di sebelah label penyedia dalam daftar aplikasi dalam menu
+                <em>Settings</em> &gt; <em>Apps</em> &gt; <em>All</em>.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#label">
+                android:label</a></code>: Label informatif yang menjelaskan penyedia atau
+                datanya, atau keduanya. Label ini muncul dalam daftar aplikasi di 
+                <em>Settings</em> &gt; <em>Apps</em> &gt; <em>All</em>.
+            </li>
+        </ul>
+        <p>
+            Atribut-atribut ini didokumentasikan dengan lengkap dalam topik panduan pengembang untuk elemen
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code>.
+        </p>
+    </dd>
+</dl>
+
+<!-- Intent Access -->
+<h2 id="Intents">Intent dan Akses Data</h2>
+<p>
+    Aplikasi bisa mengakses penyedia konten secara tidak langsung dengan sebuah {@link android.content.Intent}.
+    Aplikasi tidak memanggil satu pun dari metode-metode {@link android.content.ContentResolver} atau
+    {@link android.content.ContentProvider}. Sebagai gantinya, aplikasi mengirim intent yang memulai aktivitas,
+    yang sering kali merupakan bagian dari aplikasi penyedia sendiri. Aktivitas tujuan bertugas 
+    mengambil dan menampilkan data dalam UI-nya. Bergantung pada tindakan dalam intent,
+    aktivitas tujuan juga bisa meminta pengguna untuk membuat modifikasi pada data penyedia.
+    Intent juga bisa berisi data "ekstra" yang menampilkan aktivitas tujuan
+    dalam UI; pengguna nanti memiliki pilihan untuk mengubah data ini sebelum menggunakannya untuk mengubah
+    data di penyedia.
+</p>
+<p>
+
+</p>
+<p>
+    Anda mungkin perlu menggunakan akses intent guna membantu memastikan integritas data. Penyedia Anda mungkin bergantung
+    pada data yang disisipkan, diperbarui, dan dihapusnya sesuai dengan logika bisnis yang didefinisikan dengan ketat. Jika
+    demikian halnya, memperbolehkan aplikasi lain mengubah data Anda secara langsung bisa menyebabkan
+    data yang tidak sah. Jika Anda ingin pengembang menggunakan akses intent, pastikan untuk mendokumentasikannya secara saksama.
+    Jelaskan kepada mereka alasan akses intent yang menggunakan UI aplikasi Anda sendiri adalah lebih baik daripada mencoba
+    memodifikasi data dengan kode mereka.
+</p>
+<p>
+    Menangani sebuah intent masuk yang ingin memodifikasi data penyedia Anda tidak berbeda dengan
+    menangani intent lainnya. Anda bisa mengetahui selengkapnya tentang penggunaan intent dengan membaca topik
+    <a href="{@docRoot}guide/components/intents-filters.html">Intent dan Filter Intent</a>.
+</p>
diff --git a/docs/html-intl/intl/in/guide/topics/providers/content-providers.jd b/docs/html-intl/intl/in/guide/topics/providers/content-providers.jd
new file mode 100644
index 0000000..fc6f12b
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/providers/content-providers.jd
@@ -0,0 +1,108 @@
+page.title=Penyedia konten
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+
+<!-- In this document -->
+<h2>Topik</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        Dasar-Dasar Penyedia Konten</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+        Membuat Penyedia Konten</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/calendar-provider.html">Penyedia Kalender</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/contacts-provider.html">Penyedia Kontak</a>
+    </li>
+</ol>
+
+    <!-- Related Samples -->
+<h2>Contoh-Contoh Terkait</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}resources/samples/ContactManager/index.html">
+            Aplikasi Contact Manager</a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html">
+        "Kursor (Orang)"
+        </a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html">
+        "Kursor (Telepon)"</a>
+        </li>
+        <li>
+            <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+            Contoh Adaptor Sinkronisasi</a>
+        </li>
+    </ol>
+</div>
+</div>
+<p>
+    Penyedia konten mengelola akses ke set data terstruktur. Penyedia ini membungkus
+ data, dan menyediakan mekanisme untuk mendefinisikan keamanan data. Penyedia konten adalah antarmuka
+ standar yang menghubungkan data dalam satu proses dengan kode yang berjalan dalam proses lain.
+</p>
+<p>
+    Bila Anda ingin mengakses data di penyedia konten, Anda menggunakan
+ {@link android.content.ContentResolver} objek dalam
+ {@link android.content.Context} aplikasi untuk berkomunikasi dengan penyedia sebagai klien.
+    Objek {@link android.content.ContentResolver} berkomunikasi dengan objek penyedia, yakni
+ instance kelas yang mengimplementasikan {@link android.content.ContentProvider}. Objek penyedia
+ menerima permintaan data dari klien, melakukan tindakan yang diminta, dan
+ mengembalikan hasilnya.
+</p>
+<p>
+    Anda tidak perlu mengembangkan penyedia sendiri jika tidak bermaksud untuk berbagi data dengan
+ aplikasi lain. Akan tetapi, Anda memerlukan penyedia buatan sendiri untuk menyediakan saran pencarian custom
+ dalam aplikasi Anda sendiri. Anda juga memerlukan penyedia sendiri jika ingin menyalin dan
+menempelkan data atau file yang kompleks dari aplikasi Anda ke aplikasi lain.
+</p>
+<p>
+    Android sendiri berisi penyedia konten yang mengelola data seperti informasi audio, video, gambar, dan
+ kontak pribadi. Anda bisa melihat sebagian informasi ini tercantum dalam dokumentasi
+ acuan untuk paket 
+ <code><a href="{@docRoot}reference/android/provider/package-summary.html">android.provider</a>
+    </code>. Dengan beberapa batasan, semua penyedia ini bisa diakses oleh aplikasi Android
+ apa saja.
+</p><p>
+    Topik-topik berikut menjelaskan penyedia konten secara lebih detail:
+</p>
+<dl>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        Dasar-Dasar Penyedia Konten</a></strong>
+    </dt>
+    <dd>
+        Cara mengakses data di penyedia konten bila data disusun dalam tabel.
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+        Membuat Penyedia Konten</a></strong>
+    </dt>
+    <dd>
+        Cara membuat penyedia konten sendiri.
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+        Penyedia Kalender</a></strong>
+    </dt>
+    <dd>
+        Cara mengakses Penyedia Kalender yang merupakan bagian dari platform Android.
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/contacts-provider.html">
+        Penyedia Kontak</a></strong>
+    </dt>
+    <dd>
+        Cara mengakses Penyedia Kontak yang merupakan bagian dari platform Android.
+    </dd>
+</dl>
diff --git a/docs/html-intl/intl/in/guide/topics/providers/document-provider.jd b/docs/html-intl/intl/in/guide/topics/providers/document-provider.jd
new file mode 100644
index 0000000..c066e85
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/providers/document-provider.jd
@@ -0,0 +1,916 @@
+page.title=Storage Access Framework
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Dalam dokumen ini
+ <a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
+        <span class="more">tampilkan maksimal</span>
+        <span class="less" style="display:none">tampilkan minimal</span></a></h2>
+<ol id="toc44" class="hide-nested">
+    <li>
+        <a href="#overview">Ikhtisar</a>
+    </li>
+    <li>
+        <a href="#flow">Arus Kontrol</a>
+    </li>
+    <li>
+        <a href="#client">Menulis Aplikasi Klien</a>
+        <ol>
+        <li><a href="#search">Mencari dokumen</a></li>
+        <li><a href="#process">Memproses hasil</a></li>
+        <li><a href="#metadata">Memeriksa metadata dokumen</a></li>
+        <li><a href="#open">Membuka dokumen</a></li>
+        <li><a href="#create">Membuat dokumen baru</a></li>
+        <li><a href="#delete">Menghapus dokumen</a></li>
+        <li><a href="#edit">Mengedit dokumen</a></li>
+        <li><a href="#permissions">Mempertahankan izin</a></li>
+        </ol>
+    </li>
+    <li><a href="#custom">Menulis Penyedia Dokumen Custom</a>
+        <ol>
+        <li><a href="#manifest">Manifes</a></li>
+        <li><a href="#contract">Kontrak</a></li>
+        <li><a href="#subclass">Subkelas DocumentsProvider</a></li>
+        <li><a href="#security">Keamanan</a></li>
+        </ol>
+    </li>
+
+</ol>
+<h2>Kelas-kelas utama</h2>
+<ol>
+    <li>{@link android.provider.DocumentsProvider}</li>
+    <li>{@link android.provider.DocumentsContract}</li>
+</ol>
+
+<h2>Video</h2>
+
+<ol>
+    <li><a href="http://www.youtube.com/watch?v=zxHVeXbK1P4">
+DevBytes: Android 4.4 Storage Access Framework: Penyedia</a></li>
+     <li><a href="http://www.youtube.com/watch?v=UFj9AEz0DHQ">
+DevBytes: Android 4.4 Storage Access Framework: Klien</a></li>
+</ol>
+
+
+<h2>Contoh Kode</h2>
+
+<ol>
+    <li><a href="{@docRoot}samples/StorageProvider/index.html">
+Penyedia Penyimpanan</a></li>
+     <li><a href="{@docRoot}samples/StorageClient/index.html">
+Klien Penyimpanan</a></li>
+</ol>
+
+<h2>Lihat Juga</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        Dasar-Dasar Penyedia Konten
+        </a>
+    </li>
+</ol>
+
+</div>
+</div>
+
+
+<p>Android 4.4 (API level 19) memperkenalkan Storage Access Framework (SAF, Kerangka Kerja Akses Penyimpanan). SAF
+ memudahkan pengguna menyusuri dan membuka dokumen, gambar, dan file lainnya
+di semua penyedia penyimpanan dokumen pilihannya. UI standar yang mudah digunakan
+memungkinkan pengguna menyusuri file dan mengakses yang terbaru dengan cara konsisten di antara berbagai aplikasi dan penyedia.</p>
+
+<p>Layanan penyimpanan cloud atau lokal bisa dilibatkan dalam ekosistem ini dengan mengimplementasikan sebuah
+{@link android.provider.DocumentsProvider} yang membungkus layanannya. Aplikasi klien
+yang memerlukan akses ke dokumen sebuah penyedia bisa berintegrasi dengan SAF cukup dengan beberapa
+baris kode.</p>
+
+<p>SAF terdiri dari berikut ini:</p>
+
+<ul>
+<li><strong>Penyedia dokumen</strong>&mdash;Penyedia konten yang memungkinkan
+layanan penyimpanan (seperti Google Drive) untuk menampilkan file yang dikelolanya. Penyedia dokumen
+diimplementasikan sebagai subkelas dari kelas {@link android.provider.DocumentsProvider}.
+Skema penyedia dokumen berdasarkan hierarki file biasa,
+walaupun cara penyedia dokumen Anda secara fisik menyimpan data adalah terserah Anda.
+Platform Android terdiri dari beberapa penyedia dokumen bawaan, seperti
+Downloads, Images, dan Videos.</li>
+
+<li><strong>Aplikasi klien</strong>&mdash;Aplikasi custom yang memanggil intent 
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} dan/atau
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT} dan menerima
+file yang dihasilkan penyedia dokumen.</li>
+
+<li><strong>Picker</strong>&mdash;UI sistem yang memungkinkan pengguna mengakses dokumen dari semua
+penyedia dokumen yang memenuhi kriteria pencarian aplikasi klien.</li>
+</ul>
+
+<p>Beberapa fitur yang disediakan oleh SAF adalah sebagai berikut:</p>
+<ul>
+<li>Memungkinkan pengguna menyusuri konten dari semua penyedia dokumen, bukan hanya satu aplikasi.</li>
+<li>Memungkinkan aplikasi Anda memiliki akses jangka panjang dan tetap ke
+ dokumen yang dimiliki oleh penyedia dokumen. Melalui akses ini pengguna bisa menambah, mengedit,
+ menyimpan, dan menghapus file pada penyedia.</li>
+<li>Mendukung banyak akun pengguna dan akar jangka pendek seperti penyedia penyimpanan
+USB, yang hanya muncul jika drive itu dipasang. </li>
+</ul>
+
+<h2 id ="overview">Ikhtisar</h2>
+
+<p>SAF berpusat di seputar penyedia konten yang merupakan
+subkelas dari kelas {@link android.provider.DocumentsProvider}. Dalam <em>penyedia dokumen</em>, data
+distrukturkan sebagai hierarki file biasa:</p>
+<p><img src="{@docRoot}images/providers/storage_datamodel.png" alt="data model" /></p>
+<p class="img-caption"><strong>Gambar 1.</strong> Model data penyedia dokumen. Root menunjuk ke satu Document,
+yang nanti memulai pemekaran seluruh pohon.</p>
+
+<p>Perhatikan yang berikut ini:</p>
+<ul>
+
+<li>Setiap penyedia dokumen melaporkan satu atau beberapa
+"akar" yang merupakan titik awal penyusuran pohon dokumen.
+Masing-masing akar memiliki sebuah {@link android.provider.DocumentsContract.Root#COLUMN_ROOT_ID} yang unik,
+dan menunjuk ke satu dokumen (satu direktori)
+yang mewakili konten di bawah akar itu.
+Akar sengaja dibuat dinamis untuk mendukung kasus penggunaan seperti multiakun,
+perangkat penyimpanan USB jangka pendek, atau masuk/keluar pengguna.</li>
+
+<li>Di bawah tiap akar terdapat satu dokumen. Dokumen itu menunjuk ke dokumen-dokumen 1-ke-<em>N</em>,
+yang nanti masing-masing bisa menunjuk ke dokumen 1-ke-<em>N</em>. </li>
+
+<li>Tiap backend penyimpanan memunculkan
+masing-masing file dan direktori dengan mengacunya lewat sebuah
+{@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID} yang unik.
+ID dokumen harus unik dan tidak berubah setelah dibuat, karena ID ini digunakan untuk
+URI persisten yang diberikan pada saat reboot perangkat.</li>
+
+
+<li>Dokumen bisa berupa file yang bisa dibuka (dengan tipe MIME tertentu), atau
+direktori yang berisi dokumen tambahan (dengan tipe MIME
+{@link android.provider.DocumentsContract.Document#MIME_TYPE_DIR}).</li>
+
+<li>Tiap dokumen bisa mempunyai kemampuan berbeda, sebagaimana yang dijelaskan oleh
+{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS COLUMN_FLAGS}.
+Misalnya, {@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_WRITE},
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE}, dan
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_THUMBNAIL}.
+{@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID} yang sama bisa
+dimasukkan dalam beberapa direktori.</li>
+</ul>
+
+<h2 id="flow">Arus Kontrol</h2>
+<p>Seperti dinyatakan di atas, model data penyedia dokumen dibuat berdasarkan hierarki file
+biasa. Akan tetapi, Anda bisa menyimpan secara fisik data dengan cara apa pun yang disukai,
+selama data bisa diakses melalui API {@link android.provider.DocumentsProvider}. Misalnya, Anda
+bisa menggunakan penyimpanan cloud berbasis tag untuk data Anda.</p>
+
+<p>Gambar 2 menampilkan contoh cara aplikasi foto bisa menggunakan SAF
+untuk mengakses data tersimpan:</p>
+<p><img src="{@docRoot}images/providers/storage_dataflow.png" alt="app" /></p>
+
+<p class="img-caption"><strong>Gambar 2.</strong> Arus Storage Access Framework</p>
+
+<p>Perhatikan yang berikut ini:</p>
+<ul>
+
+<li>Di SAF, penyedia dan klien tidak berinteraksi
+secara langsung. Klien meminta izin untuk berinteraksi
+dengan file (yakni, membaca, mengedit, membuat, atau menghapus file).</li>
+
+<li>Interaksi dimulai bila sebuah aplikasi (dalam contoh ini adalah aplikasi foto) mengeluarkan intent
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} atau {@link android.content.Intent#ACTION_CREATE_DOCUMENT}. Intent bisa berisi filter
+untuk mempersempit kriteria&mdash;misalnya, "beri saya semua file yang bisa dibuka
+yang memiliki tipe MIME 'gambar'".</li>
+
+<li>Setelah intent dibuat, picker sistem akan pergi ke setiap penyedia yang terdaftar
+dan menunjukkan kepada pengguna akar konten yang cocok.</li>
+
+<li>Picker memberi pengguna antarmuka standar untuk mengakses dokumen,
+walaupun penyedia dokumen dasar bisa sangat berbeda. Misalnya, gambar 2
+menunjukkan penyedia Google Drive, penyedia USB, dan penyedia cloud.</li>
+</ul>
+
+<p>Gambar 3 menunjukkan picker yang di digunakan pengguna mencari gambar telah memilih
+akun Google Drive:</p>
+
+<p><img src="{@docRoot}images/providers/storage_picker.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
+
+<p class="img-caption"><strong>Gambar 3.</strong> Picker</p>
+
+<p>Bila pengguna memilih Google Drive, gambar-gambar akan ditampilkan, seperti yang ditampilkan dalam
+gambar 4. Dari titik itu, pengguna bisa berinteraksi dengan gambar dengan cara apa pun
+yang didukung oleh penyedia dan aplikasi klien.
+
+<p><img src="{@docRoot}images/providers/storage_photos.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
+
+<p class="img-caption"><strong>Gambar 4.</strong> Gambar</p>
+
+<h2 id="client">Menulis Aplikasi Klien</h2>
+
+<p>Pada Android 4.3 dan yang lebih rendah, jika Anda ingin aplikasi mengambil file dari
+aplikasi lain, aplikasi Anda harus memanggil intent seperti {@link android.content.Intent#ACTION_PICK}
+atau {@link android.content.Intent#ACTION_GET_CONTENT}. Pengguna nanti harus memilih
+satu aplikasi yang akan digunakan untuk mengambil file dan aplikasi yang dipilih harus menyediakan antarmuka pengguna
+bagi untuk menyusuri dan mengambil dari file yang tersedia. </p>
+
+<p>Pada Android 4.4 dan yang lebih tinggi, Anda mempunyai opsi tambahan dalam menggunakan intent
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT},
+yang menampilkan UI picker yang dikontrol oleh sistem yang memungkinkan pengguna
+menyusuri semua file yang disediakan aplikasi lain. Dari satu UI ini, pengguna
+bisa mengambil file dari aplikasi apa saja yang didukung.</p>
+
+<p>{@link android.content.Intent#ACTION_OPEN_DOCUMENT}
+tidak dimaksudkan untuk menjadi pengganti {@link android.content.Intent#ACTION_GET_CONTENT}.
+Yang harus Anda gunakan bergantung pada kebutuhan aplikasi:</p>
+
+<ul>
+<li>Gunakan {@link android.content.Intent#ACTION_GET_CONTENT} jika Anda ingin aplikasi
+cuma membaca/mengimpor data. Dengan pendekatan ini, aplikasi akan mengimpor salinan data,
+misalnya file gambar.</li>
+
+<li>Gunakan {@link android.content.Intent#ACTION_OPEN_DOCUMENT} jika Anda ingin aplikasi
+memiliki akses jangka panjang dan jangka pendek ke dokumen yang dimiliki oleh penyedia
+dokumen. Contohnya adalah aplikasi pengeditan foto yang memungkinkan pengguna mengedit
+gambar yang tersimpan dalam penyedia dokumen. </li>
+
+</ul>
+
+
+<p>Bagian ini menjelaskan cara menulis aplikasi klien berdasarkan
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} dan
+intent {@link android.content.Intent#ACTION_CREATE_DOCUMENT}.</p>
+
+
+<h3 id="search">Mencari dokumen</h3>
+
+<p>
+Cuplikan berikut menggunakan {@link android.content.Intent#ACTION_OPEN_DOCUMENT}
+untuk mencari penyedia dokumen yang
+berisi file gambar:</p>
+
+<pre>private static final int READ_REQUEST_CODE = 42;
+...
+/**
+ * Fires an intent to spin up the &quot;file chooser&quot; UI and select an image.
+ */
+public void performFileSearch() {
+
+    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's file
+    // browser.
+    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as a
+    // file (as opposed to a list of contacts or timezones)
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Filter to show only images, using the image MIME data type.
+    // If one wanted to search for ogg vorbis files, the type would be &quot;audio/ogg&quot;.
+    // To search for all documents available via installed storage providers,
+    // it would be &quot;*/*&quot;.
+    intent.setType(&quot;image/*&quot;);
+
+    startActivityForResult(intent, READ_REQUEST_CODE);
+}</pre>
+
+<p>Perhatikan yang berikut ini:</p>
+<ul>
+<li>Saat aplikasi mengeluarkan intent {@link android.content.Intent#ACTION_OPEN_DOCUMENT}
+, aplikasi akan menjalankan picker yang menampilkan semua penyedia dokumen yang cocok.</li>
+
+<li>Menambahkan kategori {@link android.content.Intent#CATEGORY_OPENABLE} ke
+intent akan menyaring hasil agar hanya menampilkan dokumen yang bisa dibuka, seperti file gambar.</li>
+
+<li>Pernyataan {@code intent.setType("image/*")} menyaring lebih jauh agar hanya
+menampilkan dokumen yang memiliki tipe data MIME gambar.</li>
+</ul>
+
+<h3 id="results">Memproses Hasil</h3>
+
+<p>Setelah pengguna memilih dokumen di picker,
+{@link android.app.Activity#onActivityResult onActivityResult()} akan dipanggil.
+URI yang menunjuk ke dokumen yang dipilih dimasukkan dalam parameter {@code resultData}
+. Ekstrak URI dengan {@link android.content.Intent#getData getData()}.
+Setelah mendapatkannya, Anda bisa menggunakannya untuk mengambil dokumen yang diinginkan pengguna. Misalnya
+:</p>
+
+<pre>&#64;Override
+public void onActivityResult(int requestCode, int resultCode,
+        Intent resultData) {
+
+    // The ACTION_OPEN_DOCUMENT intent was sent with the request code
+    // READ_REQUEST_CODE. If the request code seen here doesn't match, it's the
+    // response to some other intent, and the code below shouldn't run at all.
+
+    if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
+        // The document selected by the user won't be returned in the intent.
+        // Instead, a URI to that document will be contained in the return intent
+        // provided to this method as a parameter.
+        // Pull that URI using resultData.getData().
+        Uri uri = null;
+        if (resultData != null) {
+            uri = resultData.getData();
+            Log.i(TAG, "Uri: " + uri.toString());
+            showImage(uri);
+        }
+    }
+}
+</pre>
+
+<h3 id="metadata">Memeriksa metadata dokumen</h3>
+
+<p>Setelah Anda memiliki URI untuk dokumen, Anda akan mendapatkan akses ke metadatanya. Cuplikan
+ini memegang metadata sebuah dokumen yang disebutkan oleh URI, dan mencatatnya:</p>
+
+<pre>public void dumpImageMetaData(Uri uri) {
+
+    // The query, since it only applies to a single document, will only return
+    // one row. There's no need to filter, sort, or select fields, since we want
+    // all fields for one document.
+    Cursor cursor = getActivity().getContentResolver()
+            .query(uri, null, null, null, null, null);
+
+    try {
+    // moveToFirst() returns false if the cursor has 0 rows.  Very handy for
+    // &quot;if there's anything to look at, look at it&quot; conditionals.
+        if (cursor != null &amp;&amp; cursor.moveToFirst()) {
+
+            // Note it's called &quot;Display Name&quot;.  This is
+            // provider-specific, and might not necessarily be the file name.
+            String displayName = cursor.getString(
+                    cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
+            Log.i(TAG, &quot;Display Name: &quot; + displayName);
+
+            int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE);
+            // If the size is unknown, the value stored is null.  But since an
+            // int can't be null in Java, the behavior is implementation-specific,
+            // which is just a fancy term for &quot;unpredictable&quot;.  So as
+            // a rule, check if it's null before assigning to an int.  This will
+            // happen often:  The storage API allows for remote files, whose
+            // size might not be locally known.
+            String size = null;
+            if (!cursor.isNull(sizeIndex)) {
+                // Technically the column stores an int, but cursor.getString()
+                // will do the conversion automatically.
+                size = cursor.getString(sizeIndex);
+            } else {
+                size = &quot;Unknown&quot;;
+            }
+            Log.i(TAG, &quot;Size: &quot; + size);
+        }
+    } finally {
+        cursor.close();
+    }
+}
+</pre>
+
+<h3 id="open-client">Membuka dokumen</h3>
+
+<p>Setelah mendapatkan URI dokumen, Anda bisa membuka dokumen atau melakukan apa saja
+yang diinginkan padanya.</p>
+
+<h4>Bitmap</h4>
+
+<p>Berikut ini adalah contoh cara membuka {@link android.graphics.Bitmap}:</p>
+
+<pre>private Bitmap getBitmapFromUri(Uri uri) throws IOException {
+    ParcelFileDescriptor parcelFileDescriptor =
+            getContentResolver().openFileDescriptor(uri, "r");
+    FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
+    Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
+    parcelFileDescriptor.close();
+    return image;
+}
+</pre>
+
+<p>Perhatikan bahwa Anda tidak boleh melakukan operasi ini pada thread UI. Lakukan hal ini di latar belakang
+, dengan menggunakan {@link android.os.AsyncTask}. Setelah membuka bitmap, Anda
+bisa menampilkannya dalam {@link android.widget.ImageView}.
+</p>
+
+<h4>Mendapatkan InputStream</h4>
+
+<p>Berikut ini adalah contoh cara mendapatkan {@link java.io.InputStream} dari URI. Dalam cuplikan ini
+, baris-baris file dibaca ke dalam sebuah string:</p>
+
+<pre>private String readTextFromUri(Uri uri) throws IOException {
+    InputStream inputStream = getContentResolver().openInputStream(uri);
+    BufferedReader reader = new BufferedReader(new InputStreamReader(
+            inputStream));
+    StringBuilder stringBuilder = new StringBuilder();
+    String line;
+    while ((line = reader.readLine()) != null) {
+        stringBuilder.append(line);
+    }
+    fileInputStream.close();
+    parcelFileDescriptor.close();
+    return stringBuilder.toString();
+}
+</pre>
+
+<h3 id="create">Membuat dokumen baru</h3>
+
+<p>Aplikasi Anda bisa membuat dokumen baru dalam penyedia dokumen dengan menggunakan intent
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT}
+. Untuk membuat file, Anda memberikan satu tipe MIME dan satu nama file pada intent, dan
+menjalankannya dengan kode permintaan yang unik. Selebihnya akan diurus untuk Anda:</p>
+
+
+<pre>
+// Here are some examples of how you might call this method.
+// The first parameter is the MIME type, and the second parameter is the name
+// of the file you are creating:
+//
+// createFile("text/plain", "foobar.txt");
+// createFile("image/png", "mypicture.png");
+
+// Unique request code.
+private static final int WRITE_REQUEST_CODE = 43;
+...
+private void createFile(String mimeType, String fileName) {
+    Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as
+    // a file (as opposed to a list of contacts or timezones).
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Create a file with the requested MIME type.
+    intent.setType(mimeType);
+    intent.putExtra(Intent.EXTRA_TITLE, fileName);
+    startActivityForResult(intent, WRITE_REQUEST_CODE);
+}
+</pre>
+
+<p>Setelah membuat dokumen baru, Anda bisa mendapatkan URI-nya dalam
+{@link android.app.Activity#onActivityResult onActivityResult()}, sehingga Anda
+bisa terus menulis ke dokumen itu.</p>
+
+<h3 id="delete">Menghapus dokumen</h3>
+
+<p>Jika Anda memiliki URI dokumen dan 
+{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS Document.COLUMN_FLAGS}
+ dokumen berisi
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE SUPPORTS_DELETE},
+Anda bisa menghapus dokumen tersebut. Misalnya:</p>
+
+<pre>
+DocumentsContract.deleteDocument(getContentResolver(), uri);
+</pre>
+
+<h3 id="edit">Mengedit dokumen</h3>
+
+<p>Anda bisa menggunakan SAF untuk mengedit dokumen teks langsung di tempatnya.
+Cuplikan ini memicu
+intent {@link android.content.Intent#ACTION_OPEN_DOCUMENT} dan menggunakan
+kategori {@link android.content.Intent#CATEGORY_OPENABLE} untuk menampilkan
+dokumen yang bisa dibuka saja. Ini akan menyaring lebih jauh untuk menampilkan file teks saja:</p>
+
+<pre>
+private static final int EDIT_REQUEST_CODE = 44;
+/**
+ * Open a file for writing and append some text to it.
+ */
+ private void editDocument() {
+    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's
+    // file browser.
+    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as a
+    // file (as opposed to a list of contacts or timezones).
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Filter to show only text files.
+    intent.setType(&quot;text/plain&quot;);
+
+    startActivityForResult(intent, EDIT_REQUEST_CODE);
+}
+</pre>
+
+<p>Berikutnya, dari {@link android.app.Activity#onActivityResult onActivityResult()}
+(lihat <a href="#results">Memproses hasil</a>) Anda bisa memanggil kode untuk mengedit.
+Cuplikan berikut mendapatkan {@link java.io.FileOutputStream}
+dari {@link android.content.ContentResolver}. Secara default, snipet menggunakan mode “tulis”.
+Inilah praktik terbaik untuk meminta jumlah akses minimum yang Anda perlukan, jadi jangan meminta
+baca/tulis jika yang Anda perlukan hanyalah tulis:</p>
+
+<pre>private void alterDocument(Uri uri) {
+    try {
+        ParcelFileDescriptor pfd = getActivity().getContentResolver().
+                openFileDescriptor(uri, "w");
+        FileOutputStream fileOutputStream =
+                new FileOutputStream(pfd.getFileDescriptor());
+        fileOutputStream.write(("Overwritten by MyCloud at " +
+                System.currentTimeMillis() + "\n").getBytes());
+        // Let the document provider know you're done by closing the stream.
+        fileOutputStream.close();
+        pfd.close();
+    } catch (FileNotFoundException e) {
+        e.printStackTrace();
+    } catch (IOException e) {
+        e.printStackTrace();
+    }
+}</pre>
+
+<h3 id="permissions">Mempertahankan izin</h3>
+
+<p>Bila aplikasi Anda membuka file untuk membaca atau menulis, sistem akan memberi
+aplikasi Anda izin URI untuk file itu. Pemberian ini berlaku hingga perangkat pengguna di-restart.
+Namun anggaplah aplikasi Anda adalah aplikasi pengeditan gambar, dan Anda ingin pengguna bisa
+mengakses 5 gambar terakhir yang dieditnya, langsung dari aplikasi Anda. Jika perangkat pengguna telah
+di-restart, maka Anda harus mengirim pengguna kembali ke picker sistem untuk menemukan
+file, hal ini jelas tidak ideal.</p>
+
+<p>Untuk mencegah terjadinya hal ini, Anda bisa mempertahankan izin yang diberikan
+sistem ke aplikasi Anda. Secara efektif, aplikasi Anda akan "mengambil" pemberian izin URI yang bisa dipertahankan
+yang ditawarkan oleh sistem. Hal ini memberi pengguna akses kontinu ke file
+melalui aplikasi Anda, sekalipun perangkat telah di-restart:</p>
+
+
+<pre>final int takeFlags = intent.getFlags()
+            &amp; (Intent.FLAG_GRANT_READ_URI_PERMISSION
+            | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+// Check for the freshest data.
+getContentResolver().takePersistableUriPermission(uri, takeFlags);</pre>
+
+<p>Ada satu langkah akhir. Anda mungkin telah menyimpan
+URI terbaru yang diakses aplikasi, namun URI itu mungkin tidak lagi valid,&mdash;aplikasi lain
+mungkin telah menghapus atau memodifikasi dokumen. Karena itu, Anda harus selalu memanggil
+{@code getContentResolver().takePersistableUriPermission()} untuk memeriksa
+data terbaru.</p>
+
+<h2 id="custom">Menulis Penyedia Dokumen Custom</h2>
+
+<p>
+Jika Anda sedang mengembangkan aplikasi yang menyediakan layanan penyimpanan untuk file (misalnya
+layanan penyimpanan cloud), Anda bisa menyediakan file melalui
+SAF dengan menulis penyedia dokumen custom.  Bagian ini menjelaskan
+caranya.</p>
+
+
+<h3 id="manifest">Manifes</h3>
+
+<p>Untuk mengimplementasikan penyedia dokumen custom, tambahkan yang berikut ini ke manifes aplikasi
+Anda:</p>
+<ul>
+
+<li>Target berupa API level 19 atau yang lebih tinggi.</li>
+
+<li>Elemen <code>&lt;provider&gt;</code> yang mendeklarasikan penyedia penyimpanan custom
+Anda. </li>
+
+<li>Nama penyedia Anda, yaitu nama kelasnya, termasuk nama paket.
+Misalnya: <code>com.example.android.storageprovider.MyCloudProvider</code>.</li>
+
+<li>Nama otoritas Anda, yaitu nama paket Anda (dalam contoh ini,
+<code>com.example.android.storageprovider</code>) plus tipe penyedia konten
+(<code>documents</code>). Misalnya, {@code com.example.android.storageprovider.documents}.</li>
+
+<li>Atribut <code>android:exported</code> yang diatur ke <code>&quot;true&quot;</code>.
+Anda harus mengekspor penyedia sehingga aplikasi lain bisa membacanya.</li>
+
+<li>Atribut <code>android:grantUriPermissions</code> yang diatur ke
+<code>&quot;true&quot;</code>. Pengaturan ini memungkinkan sistem memberi aplikasi lain akses
+ke konten dalam penyedia Anda. Untuk pembahasan cara mempertahankan pemberian bagi
+dokumen tertentu, lihat <a href="#permissions">Mempertahankan izin</a>.</li>
+
+<li>Izin {@code MANAGE_DOCUMENTS}. Secara default, penyedia tersedia
+bagi siapa saja. Menambahkan izin ini akan membatasi penyedia Anda pada sistem.
+Pembatasan ini penting untuk keamanan.</li>
+
+<li>Atribut {@code android:enabled} yang diatur ke nilai boolean didefinisikan dalam file
+sumber daya. Tujuan atribut ini adalah menonaktifkan penyedia pada perangkat yang menjalankan Android 4.3 atau yang lebih rendah.
+Misalnya, {@code android:enabled="@bool/atLeastKitKat"}. Selain
+memasukkan atribut ini dalam manifes, Anda perlu melakukan hal-hal berikut:
+<ul>
+<li>Dalam file sumber daya {@code bool.xml} Anda di bawah {@code res/values/}, tambahkan
+baris ini: <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;false&lt;/bool&gt;</pre></li>
+
+<li>Dalam file sumber daya {@code bool.xml} Anda di bawah {@code res/values-v19/}, tambahkan
+baris ini: <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;true&lt;/bool&gt;</pre></li>
+</ul></li>
+
+<li>Sebuah filter intent berisi tindakan
+{@code android.content.action.DOCUMENTS_PROVIDER}, agar penyedia Anda
+muncul dalam picker saat sistem mencari penyedia.</li>
+
+</ul>
+<p>Berikut ini adalah kutipan contoh manifes berisi penyedia yang:</p>
+
+<pre>&lt;manifest... &gt;
+    ...
+    &lt;uses-sdk
+        android:minSdkVersion=&quot;19&quot;
+        android:targetSdkVersion=&quot;19&quot; /&gt;
+        ....
+        &lt;provider
+            android:name=&quot;com.example.android.storageprovider.MyCloudProvider&quot;
+            android:authorities=&quot;com.example.android.storageprovider.documents&quot;
+            android:grantUriPermissions=&quot;true&quot;
+            android:exported=&quot;true&quot;
+            android:permission=&quot;android.permission.MANAGE_DOCUMENTS&quot;
+            android:enabled=&quot;&#64;bool/atLeastKitKat&quot;&gt;
+            &lt;intent-filter&gt;
+                &lt;action android:name=&quot;android.content.action.DOCUMENTS_PROVIDER&quot; /&gt;
+            &lt;/intent-filter&gt;
+        &lt;/provider&gt;
+    &lt;/application&gt;
+
+&lt;/manifest&gt;</pre>
+
+<h4 id="43">Mendukung perangkat yang menjalankan Android 4.3 dan yang lebih rendah</h4>
+
+<p>Intent
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} hanya tersedia
+pada perangkat yang menjalankan Android 4.4 dan yang lebih tinggi.
+Jika ingin aplikasi Anda mendukung {@link android.content.Intent#ACTION_GET_CONTENT}
+untuk mengakomodasi perangkat yang menjalankan Android 4.3 dan yang lebih rendah, Anda harus
+menonaktifkan filter inten {@link android.content.Intent#ACTION_GET_CONTENT} dalam
+manifes untuk perangkat yang menjalankan Android 4.4 atau yang lebih tinggi. Penyedia
+dokumen dan {@link android.content.Intent#ACTION_GET_CONTENT} harus dianggap
+saling eksklusif. Jika Anda mendukung keduanya sekaligus, aplikasi Anda akan
+muncul dua kali dalam UI picker sistem, yang menawarkan dua cara mengakses
+data tersimpan Anda. Hal ini akan membingungkan pengguna.</p>
+
+<p>Berikut ini adalah cara yang disarankan untuk menonaktifkan
+filter intent {@link android.content.Intent#ACTION_GET_CONTENT} untuk perangkat
+yang menjalankan Android versi 4.4 atau yang lebih tinggi:</p>
+
+<ol>
+<li>Dalam file sumber daya {@code bool.xml} Anda di bawah {@code res/values/}, tambahkan
+baris ini: <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;true&lt;/bool&gt;</pre></li>
+
+<li>Dalam file sumber daya {@code bool.xml} Anda di bawah {@code res/values-v19/}, tambahkan
+baris ini: <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;false&lt;/bool&gt;</pre></li>
+
+<li>Tambahkan
+<a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">alias
+aktivitas</a> untuk menonaktifkan filter intent {@link android.content.Intent#ACTION_GET_CONTENT}
+bagi versi 4.4 (API level 19) dan yang lebih tinggi. Misalnya:
+
+<pre>
+&lt;!-- This activity alias is added so that GET_CONTENT intent-filter
+     can be disabled for builds on API level 19 and higher. --&gt;
+&lt;activity-alias android:name=&quot;com.android.example.app.MyPicker&quot;
+        android:targetActivity=&quot;com.android.example.app.MyActivity&quot;
+        ...
+        android:enabled=&quot;@bool/atMostJellyBeanMR2&quot;&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name=&quot;android.intent.action.GET_CONTENT&quot; /&gt;
+        &lt;category android:name=&quot;android.intent.category.OPENABLE&quot; /&gt;
+        &lt;category android:name=&quot;android.intent.category.DEFAULT&quot; /&gt;
+        &lt;data android:mimeType=&quot;image/*&quot; /&gt;
+        &lt;data android:mimeType=&quot;video/*&quot; /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity-alias&gt;
+</pre>
+</li>
+</ol>
+<h3 id="contract">Kontrak</h3>
+
+<p>Biasanya bila Anda menulis penyedia konten custom, salah satu tugas adalah
+mengimplementasikan kelas kontrak, seperti dijelaskan dalam panduan pengembang
+<a href="{@docRoot}guide/topics/providers/content-provider-creating.html#ContractClass">
+Penyedia Konten</a>. Kelas kontrak adalah kelas {@code public final}
+yang berisi definisi konstanta untuk URI, nama kolom, tipe MIME, dan
+metadata lain yang berkenaan dengan penyedia. SAF
+menyediakan kelas-kelas kontrak ini untuk Anda, jadi Anda tidak perlu menulisnya
+sendiri:</p>
+
+<ul>
+   <li>{@link android.provider.DocumentsContract.Document}</li>
+   <li>{@link android.provider.DocumentsContract.Root}</li>
+</ul>
+
+<p>Misalnya, berikut ini adalah kolom-kolom yang bisa Anda hasilkan di kursor bila
+penyedia dokumen Anda membuat query dokumen atau akar:</p>
+
+<pre>private static final String[] DEFAULT_ROOT_PROJECTION =
+        new String[]{Root.COLUMN_ROOT_ID, Root.COLUMN_MIME_TYPES,
+        Root.COLUMN_FLAGS, Root.COLUMN_ICON, Root.COLUMN_TITLE,
+        Root.COLUMN_SUMMARY, Root.COLUMN_DOCUMENT_ID,
+        Root.COLUMN_AVAILABLE_BYTES,};
+private static final String[] DEFAULT_DOCUMENT_PROJECTION = new
+        String[]{Document.COLUMN_DOCUMENT_ID, Document.COLUMN_MIME_TYPE,
+        Document.COLUMN_DISPLAY_NAME, Document.COLUMN_LAST_MODIFIED,
+        Document.COLUMN_FLAGS, Document.COLUMN_SIZE,};
+</pre>
+
+<h3 id="subclass">Subkelas DocumentsProvider</h3>
+
+<p>Langkah berikutnya dalam menulis penyedia dokumen custom adalah menjadikan
+kelas abstrak sebagai subkelas {@link android.provider.DocumentsProvider}. Setidaknya, Anda perlu
+ mengimplementasikan metode berikut:</p>
+
+<ul>
+<li>{@link android.provider.DocumentsProvider#queryRoots queryRoots()}</li>
+
+<li>{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}</li>
+
+<li>{@link android.provider.DocumentsProvider#queryDocument queryDocument()}</li>
+
+<li>{@link android.provider.DocumentsProvider#openDocument openDocument()}</li>
+</ul>
+
+<p>Hanya inilah metode yang diwajibkan kepada Anda secara ketat untuk diimplementasikan, namun ada
+banyak lagi yang mungkin Anda inginkan. Lihat {@link android.provider.DocumentsProvider}
+untuk detailnya.</p>
+
+<h4 id="queryRoots">Mengimplementasikan queryRoots</h4>
+
+<p>Implementasi {@link android.provider.DocumentsProvider#queryRoots
+queryRoots()} oleh Anda harus menghasilkan {@link android.database.Cursor} yang menunjuk ke semua
+direktori akar penyedia dokumen, dengan menggunakan kolom-kolom yang didefinisikan dalam
+{@link android.provider.DocumentsContract.Root}.</p>
+
+<p>Dalam cuplikan berikut, parameter {@code projection} mewakili bidang-bidang
+tertentu yang ingin didapatkan kembali oleh pemanggil. Cuplikan ini membuat kursor baru
+dan menambahkan satu baris ke satu akar&mdash; kursor, satu direktori level atas, seperti
+Downloads atau Images.  Kebanyakan penyedia hanya mempunyai satu akar. Anda bisa mempunyai lebih dari satu,
+misalnya, jika ada banyak akun pengguna. Dalam hal itu, cukup tambahkan sebuah
+baris kedua ke kursor.</p>
+
+<pre>
+&#64;Override
+public Cursor queryRoots(String[] projection) throws FileNotFoundException {
+
+    // Create a cursor with either the requested fields, or the default
+    // projection if "projection" is null.
+    final MatrixCursor result =
+            new MatrixCursor(resolveRootProjection(projection));
+
+    // If user is not logged in, return an empty root cursor.  This removes our
+    // provider from the list entirely.
+    if (!isUserLoggedIn()) {
+        return result;
+    }
+
+    // It's possible to have multiple roots (e.g. for multiple accounts in the
+    // same app) -- just add multiple cursor rows.
+    // Construct one row for a root called &quot;MyCloud&quot;.
+    final MatrixCursor.RowBuilder row = result.newRow();
+    row.add(Root.COLUMN_ROOT_ID, ROOT);
+    row.add(Root.COLUMN_SUMMARY, getContext().getString(R.string.root_summary));
+
+    // FLAG_SUPPORTS_CREATE means at least one directory under the root supports
+    // creating documents. FLAG_SUPPORTS_RECENTS means your application's most
+    // recently used documents will show up in the &quot;Recents&quot; category.
+    // FLAG_SUPPORTS_SEARCH allows users to search all documents the application
+    // shares.
+    row.add(Root.COLUMN_FLAGS, Root.FLAG_SUPPORTS_CREATE |
+            Root.FLAG_SUPPORTS_RECENTS |
+            Root.FLAG_SUPPORTS_SEARCH);
+
+    // COLUMN_TITLE is the root title (e.g. Gallery, Drive).
+    row.add(Root.COLUMN_TITLE, getContext().getString(R.string.title));
+
+    // This document id cannot change once it's shared.
+    row.add(Root.COLUMN_DOCUMENT_ID, getDocIdForFile(mBaseDir));
+
+    // The child MIME types are used to filter the roots and only present to the
+    //  user roots that contain the desired type somewhere in their file hierarchy.
+    row.add(Root.COLUMN_MIME_TYPES, getChildMimeTypes(mBaseDir));
+    row.add(Root.COLUMN_AVAILABLE_BYTES, mBaseDir.getFreeSpace());
+    row.add(Root.COLUMN_ICON, R.drawable.ic_launcher);
+
+    return result;
+}</pre>
+
+<h4 id="queryChildDocuments">Mengimplementasikan queryChildDocuments</h4>
+
+<p>Implementasi
+{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}
+oleh Anda harus menghasilkan {@link android.database.Cursor} yang menunjuk ke semua file dalam
+direktori yang ditentukan, dengan menggunakan kolom-kolom yang didefinisikan dalam
+{@link android.provider.DocumentsContract.Document}.</p>
+
+<p>Metode ini akan dipanggil bila Anda memilih akar aplikasi dalam picker UI.
+Metode mengambil dokumen anak dari direktori di bawah akar.  Metode ini bisa dipanggil pada level apa saja dalam
+hierarki file, bukan hanya akar. Cuplikan ini
+membuat kursor baru dengan kolom-kolom yang diminta, lalu menambahkan informasi tentang
+setiap anak langsung dalam direktori induk ke kursor.
+Satu anak bisa berupa gambar, direktori lain&mdash;file apa saja:</p>
+
+<pre>&#64;Override
+public Cursor queryChildDocuments(String parentDocumentId, String[] projection,
+                              String sortOrder) throws FileNotFoundException {
+
+    final MatrixCursor result = new
+            MatrixCursor(resolveDocumentProjection(projection));
+    final File parent = getFileForDocId(parentDocumentId);
+    for (File file : parent.listFiles()) {
+        // Adds the file's display name, MIME type, size, and so on.
+        includeFile(result, null, file);
+    }
+    return result;
+}
+</pre>
+
+<h4 id="queryDocument">Mengimplementasikan queryDocument</h4>
+
+<p>Implementasi
+{@link android.provider.DocumentsProvider#queryDocument queryDocument()}
+oleh Anda harus menghasilkan {@link android.database.Cursor} yang menunjuk ke file yang disebutkan,
+dengan menggunakan kolom-kolom yang didefinisikan dalam {@link android.provider.DocumentsContract.Document}.
+</p>
+
+<p>Metode {@link android.provider.DocumentsProvider#queryDocument queryDocument()}
+menghasilkan informasi yang sama yang diteruskan dalam
+{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()},
+namun untuk file tertentu:</p>
+
+
+<pre>&#64;Override
+public Cursor queryDocument(String documentId, String[] projection) throws
+        FileNotFoundException {
+
+    // Create a cursor with the requested projection, or the default projection.
+    final MatrixCursor result = new
+            MatrixCursor(resolveDocumentProjection(projection));
+    includeFile(result, documentId, null);
+    return result;
+}
+</pre>
+
+<h4 id="openDocument">Mengimplementasikan openDocument</h4>
+
+<p>Anda harus mengimplementasikan {@link android.provider.DocumentsProvider#openDocument
+openDocument()} untuk menghasilkan {@link android.os.ParcelFileDescriptor} yang mewakili
+file yang disebutkan. Aplikasi lain bisa menggunakan {@link android.os.ParcelFileDescriptor}
+yang dihasilkan untuk mengalirkan data. Sistem memanggil metode ini setelah pengguna memilih file
+dan aplikasi klien meminta akses ke file itu dengan memanggil
+{@link android.content.ContentResolver#openFileDescriptor openFileDescriptor()}.
+Misalnya:</p>
+
+<pre>&#64;Override
+public ParcelFileDescriptor openDocument(final String documentId,
+                                         final String mode,
+                                         CancellationSignal signal) throws
+        FileNotFoundException {
+    Log.v(TAG, &quot;openDocument, mode: &quot; + mode);
+    // It's OK to do network operations in this method to download the document,
+    // as long as you periodically check the CancellationSignal. If you have an
+    // extremely large file to transfer from the network, a better solution may
+    // be pipes or sockets (see ParcelFileDescriptor for helper methods).
+
+    final File file = getFileForDocId(documentId);
+
+    final boolean isWrite = (mode.indexOf('w') != -1);
+    if(isWrite) {
+        // Attach a close listener if the document is opened in write mode.
+        try {
+            Handler handler = new Handler(getContext().getMainLooper());
+            return ParcelFileDescriptor.open(file, accessMode, handler,
+                        new ParcelFileDescriptor.OnCloseListener() {
+                &#64;Override
+                public void onClose(IOException e) {
+
+                    // Update the file with the cloud server. The client is done
+                    // writing.
+                    Log.i(TAG, &quot;A file with id &quot; +
+                    documentId + &quot; has been closed!
+                    Time to &quot; +
+                    &quot;update the server.&quot;);
+                }
+
+            });
+        } catch (IOException e) {
+            throw new FileNotFoundException(&quot;Failed to open document with id &quot;
+            + documentId + &quot; and mode &quot; + mode);
+        }
+    } else {
+        return ParcelFileDescriptor.open(file, accessMode);
+    }
+}
+</pre>
+
+<h3 id="security">Keamanan</h3>
+
+<p>Anggaplah penyedia dokumen Anda sebuah layanan penyimpanan cloud yang dilindungi kata sandi
+dan Anda ingin memastikan bahwa pengguna sudah login sebelum Anda mulai berbagi file mereka.
+Apakah yang harus dilakukan aplikasi Anda jika pengguna tidak login?  Solusinya adalah menghasilkan
+akar nol dalam implementasi {@link android.provider.DocumentsProvider#queryRoots
+queryRoots()} Anda. Yakni, sebuah kursor akar kosong:</p>
+
+<pre>
+public Cursor queryRoots(String[] projection) throws FileNotFoundException {
+...
+    // If user is not logged in, return an empty root cursor.  This removes our
+    // provider from the list entirely.
+    if (!isUserLoggedIn()) {
+        return result;
+}
+</pre>
+
+<p>Langkah lainnya adalah memanggil {@code getContentResolver().notifyChange()}.
+Ingat {@link android.provider.DocumentsContract}?  Kita menggunakannya untuk membuat
+URI ini. Cuplikan berikut memberi tahu sistem untuk membuat query akar penyedia dokumen Anda
+kapan saja status login pengguna berubah. Jika pengguna tidak
+login, panggilan ke {@link android.provider.DocumentsProvider#queryRoots queryRoots()} akan menghasilkan
+kursor kosong, seperti yang ditampilkan di atas. Cara ini akan memastikan bahwa dokumen penyedia hanya
+tersedia jika pengguna login ke penyedia itu.</p>
+
+<pre>private void onLoginButtonClick() {
+    loginOrLogout();
+    getContentResolver().notifyChange(DocumentsContract
+            .buildRootsUri(AUTHORITY), null);
+}
+</pre>
\ No newline at end of file
diff --git a/docs/html-intl/intl/in/guide/topics/resources/accessing-resources.jd b/docs/html-intl/intl/in/guide/topics/resources/accessing-resources.jd
new file mode 100644
index 0000000..e4a0bea
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/resources/accessing-resources.jd
@@ -0,0 +1,337 @@
+page.title=Mengakses Sumber Daya
+parent.title=Sumber Daya Aplikasi
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Tampilan Cepat</h2>
+  <ul>
+    <li>Sumber daya bisa diacu dari kode dengan menggunakan integer dari {@code R.java}, seperti
+{@code R.drawable.myimage}</li>
+    <li>Sumber daya bisa diacu dari sumber daya dengan menggunakan sintaks XML khusus, seperti {@code
+&#64;drawable/myimage}</li>
+    <li>Anda juga bisa mengakses sumber daya aplikasi Anda dengan berbagai metode di
+{@link android.content.res.Resources}</li>
+  </ul>
+
+  <h2>Kelas-Kelas Utama</h2>
+  <ol>
+    <li>{@link android.content.res.Resources}</li>
+  </ol>
+
+  <h2>Dalam dokumen ini</h2>
+  <ol>
+    <li><a href="#ResourcesFromCode">Mengakses Sumber Daya dari Kode</a></li>
+    <li><a href="#ResourcesFromXml">Mengakses Sumber Daya dari XML</a>
+      <ol>
+        <li><a href="#ReferencesToThemeAttributes">Mengacu atribut gaya</a></li>
+      </ol>
+    </li>
+    <li><a href="#PlatformResources">Mengakses Sumber Daya Platform</a></li>
+  </ol>
+
+  <h2>Lihat juga</h2>
+  <ol>
+    <li><a href="providing-resources.html">Menyediakan Sumber Daya</a></li>
+    <li><a href="available-resources.html">Tipe Sumber Daya</a></li>
+  </ol>
+</div>
+</div>
+
+
+
+
+<p>Setelah Anda menyediakan sumber daya dalam aplikasi Anda (yang dibicarakan di <a href="providing-resources.html">Menyediakan Sumber Daya</a>), Anda bisa menerapkannya dengan
+mengacu ID sumber dayanya. Semua ID sumber daya didefinisikan di kelas {@code R} proyek Anda, yang
+dihasilkan oleh alat {@code aapt} secara otomatis.</p>
+
+<p>Bila aplikasi Anda dikompilasi, {@code aapt} akan membuat kelas {@code R}, yang berisi
+ID sumber daya untuk semua sumber daya dalam direktori {@code
+res/} Anda. Untuk masing-masing tipe sumber daya, ada subkelas {@code R} (misalnya,
+{@code R.drawable} untuk semua sumber daya yang bisa ditarik), dan untuk masing-masing sumber daya dari tipe itu, ada satu integer statis
+ (misalnya, {@code R.drawable.icon}). Integer ini adalah ID sumber daya yang bisa Anda gunakan
+untuk mengambil sumber daya Anda.</p>
+
+<p>Walaupun kelas {@code R} adalah tempat menyebutkan ID sumber daya, Anda tidak perlu
+melihat ke sana untuk menemukan ID sumber daya. ID sumber daya selalu terdiri dari:</p>
+<ul>
+  <li><em>Tipe sumber daya</em>: Masing-masing sumber daya dikelompokkan menjadi "tipe", misalnya {@code
+string}, {@code drawable}, dan {@code layout}. Untuk mengetahui selengkapnya tentang berbagai tipe, lihat <a href="available-resources.html">Tipe Sumber Daya</a>.
+  </li>
+  <li><em>Nama sumber daya</em>, bisa berupa: nama file,
+tidak termasuk ekstensi; atau nilai dalam atribut {@code android:name} XML, jika 
+sumber daya itu sebuah nilai sederhana (misalnya sebuah string).</li>
+</ul>
+
+<p>Ada dua cara untuk mengakses sumber daya:</p>
+<ul>
+  <li><strong>Dalam kode:</strong> Menggunakan integer statis dari subkelas dari kelas {@code R}
+, misalnya:
+    <pre class="classic no-pretty-print">R.string.hello</pre>
+    <p>{@code string} adalah tipe sumber daya dan {@code hello} adalah nama sumber daya. Ada banyak
+API Android yang bisa mengakses sumber daya Anda bila Anda menyediakan ID sumber daya dengan format ini. Lihat
+<a href="#ResourcesFromCode">Mengakses Sumber Daya dalam Kode</a>.</p>
+  </li>
+  <li><strong>Dalam XML:</strong> Menggunakan sebuah sintaks XML khusus yang juga berkaitan dengan
+ID sumber daya yang didefinisikan dalam kelas {@code R}, misalnya:
+    <pre class="classic no-pretty-print">&#64;string/hello</pre>
+    <p>{@code string} adalah tipe sumber daya dan {@code hello} adalah nama sumber daya. Anda bisa menggunakan
+sintaks ini dalam sumber daya XML di mana saja Anda ingin menyediakan sebuah nilai dalam sebuah sumber daya. Lihat <a href="#ResourcesFromXml">Mengakses Sumber Daya dari XML</a>.</p>
+  </li>
+</ul>
+
+
+
+<h2 id="ResourcesFromCode">Mengakses Sumber Daya dalam Kode </h2>
+
+<p>Anda bisa menggunakan sumber daya dalam kode dengan menyalurkan ID sumber daya sebagai sebuah parameter metode. Misalnya,
+ Anda bisa mengatur sebuah {@link android.widget.ImageView} agar menggunakan sumber daya{@code res/drawable/myimage.png}
+dengan menggunakan {@link android.widget.ImageView#setImageResource(int) setImageResource()}:</p>
+<pre>
+ImageView imageView = (ImageView) findViewById(R.id.myimageview);
+imageView.setImageResource(<strong>R.drawable.myimage</strong>);
+</pre>
+
+<p>Anda juga bisa mengambil tiap sumber daya dengan menggunakan berbagai metode di {@link
+android.content.res.Resources}, di mana Anda bisa mendapatkan instance
+ {@link android.content.Context#getResources()}.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>Akses ke File Asli</h2>
+
+<p>Walaupun tidak lazim, Anda mungkin perlu mengakses file dan direktori asli Anda. Jika demikian, maka
+menyimpan file Anda di {@code res/} tidak akan berhasil, karena satu-satunya cara untuk membaca sebuah sumber daya dari
+{@code res/} adalah dengan ID sumber daya. Sebagai gantinya, Anda bisa menyimpan sumber daya dalam direktori
+{@code assets/}.</p>
+<p>File yang tersimpan di direktori {@code assets/} <em>tidak</em> diberi ID
+sumber daya, sehingga Anda tidak bisa mengacunya melalui kelas {@code R} atau dari sumber daya XML. Sebagai gantinya, Anda bisa melakukan
+query file di direktori {@code assets/} seperti sebuah sistem file biasa dan membaca data mentah dengan menggunakan
+{@link android.content.res.AssetManager}.</p>
+<p>Akan tetapi, jika yang Anda butuhkan hanya kemampuan membaca data mentah (misalnya sebuah file video atau audio),
+maka simpanlah file itu di direktori {@code res/raw/} dan baca aliran byte dengan menggunakan {@link
+android.content.res.Resources#openRawResource(int) openRawResource()}.</p>
+
+</div>
+</div>
+
+
+<h3>Sintaks</h3>
+
+<p>Inilah sintaks untuk mengacu sumber daya dalam kode:</p>
+
+<pre class="classic no-pretty-print">
+[<em>&lt;package_name&gt;</em>.]R.<em>&lt;resource_type&gt;</em>.<em>&lt;resource_name&gt;</em>
+</pre>
+
+<ul>
+  <li><em> {@code &lt;package_name&gt;}</em>adalah nama paket yang di dalamnya terdapat sumber daya (tidak
+dibutuhkan bila mengacu sumber daya dari paket Anda sendiri).</li>
+  <li><em>{@code &lt;resource_type&gt;}</em> adalah subkelas {@code R} untuk tipe sumber daya.</li>
+  <li><em>{@code &lt;resource_name&gt;}</em> bisa berupa nama file sumber daya
+tanpa ekstensi atau nilai atribut {@code android:name} dalam elemen XML (untuk nilai
+sederhana).</li>
+</ul>
+<p>Lihat <a href="available-resources.html">Tipe Sumber Daya</a> untuk
+informasi selengkapnya tentang masing-masing tipe sumber daya dan cara mengacunya.</p>
+
+
+<h3>Kasus penggunaan</h3>
+
+<p>Ada banyak metode yang menerima parameter ID sumber daya dan Anda bisa mengambil sumber daya dengan menggunakan
+metode di {@link android.content.res.Resources}. Anda bisa mengambil instance {@link
+android.content.res.Resources} dengan {@link android.content.Context#getResources
+Context.getResources()}.</p>
+
+
+<p>Berikut adalah beberapa contoh cara mengakses sumber daya dalam kode:</p>
+
+<pre>
+// Load a background for the current screen from a drawable resource
+{@link android.app.Activity#getWindow()}.{@link
+android.view.Window#setBackgroundDrawableResource(int)
+setBackgroundDrawableResource}(<strong>R.drawable.my_background_image</strong>) ;
+
+// Set the Activity title by getting a string from the Resources object, because
+//  this method requires a CharSequence rather than a resource ID
+{@link android.app.Activity#getWindow()}.{@link android.view.Window#setTitle(CharSequence)
+setTitle}(getResources().{@link android.content.res.Resources#getText(int)
+getText}(<strong>R.string.main_title</strong>));
+
+// Load a custom layout for the current screen
+{@link android.app.Activity#setContentView(int)
+setContentView}(<strong>R.layout.main_screen</strong>);
+
+// Set a slide in animation by getting an Animation from the Resources object
+mFlipper.{@link android.widget.ViewAnimator#setInAnimation(Animation)
+setInAnimation}(AnimationUtils.loadAnimation(this,
+        <strong>R.anim.hyperspace_in</strong>));
+
+// Set the text on a TextView object using a resource ID
+TextView msgTextView = (TextView) findViewById(<strong>R.id.msg</strong>);
+msgTextView.{@link android.widget.TextView#setText(int)
+setText}(<strong>R.string.hello_message</strong>);
+</pre>
+
+
+<p class="caution"><strong>Perhatian:</strong> Anda tidak boleh memodifikasi file {@code
+R.java} secara manual&mdash;, ini dihasilkan oleh alat {@code aapt} bila proyek Anda telah
+dikompilasi. Perubahan apa pun akan ditimpa bila nanti Anda mengompilasi.</p>
+
+
+
+<h2 id="ResourcesFromXml">Mengakses Sumber Daya dari XML</h2>
+
+<p>Anda bisa mendefinisikan nilai untuk beberapa atribut dan elemen XML dengan menggunakan
+acuan ke sumber daya yang ada. Anda akan sering melakukannya saat membuat file layout, untuk
+memasok string dan gambar bagi widget Anda.</p>
+
+<p>Misalnya, jika Anda menambahkan sebuah {@link android.widget.Button} ke layout, Anda harus menggunakan
+sebuah <a href="string-resource.html">sumber daya string</a> bagi teks tombolnya:</p>
+
+<pre>
+&lt;Button
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:text="<strong>@string/submit</strong>" /&gt;
+</pre>
+
+
+<h3>Sintaks</h3>
+
+<p>Berikut adalah sintaks untuk mengacu sumber daya di sumber daya XML:</p>
+
+<pre class="classic no-pretty-print">
+&#64;[<em>&lt;package_name&gt;</em>:]<em>&lt;resource_type&gt;</em>/<em>&lt;resource_name&gt;</em>
+</pre>
+
+<ul>
+  <li>{@code &lt;package_name&gt;} adalah nama paket yang di dalamnya terdapat sumber daya (tidak
+dibutuhkan bila mengacu sumber daya dari paket yang sama)</li>
+  <li>{@code &lt;resource_type&gt;} adalah subkelas
+{@code R} untuk tipe sumber daya</li>
+  <li>{@code &lt;resource_name&gt;} bisa berupa nama file sumber daya
+tanpa ekstensi atau nilai atribut {@code android:name} dalam elemen XML (untuk nilai
+sederhana).</li>
+</ul>
+
+<p>Lihat <a href="available-resources.html">Tipe Sumber Daya</a> untuk
+informasi selengkapnya tentang masing-masing tipe sumber daya dan cara mengacunya.</p>
+
+
+<h3>Kasus penggunaan</h3>
+
+<p>Dalam beberapa kasus, Anda harus menggunakan sumber daya untuk suatu nilai dalam XML (misalnya, untuk menerapkan gambar yang bisa ditarik
+pada widget), namun Anda juga bisa menggunakan sumber daya di XML mana saja yang menerima nilai sederhana. Misalnya, jika
+Anda mempunyai file sumber daya berikut yang berisi <a href="more-resources.html#Color">sumber daya warna</a> dan <a href="string-resource.html">sumber daya string</a>:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+   &lt;color name="opaque_red">#f00&lt;/color>
+   &lt;string name="hello">Hello!&lt;/string>
+&lt;/resources>
+</pre>
+
+<p>Anda bisa menggunakan sumber daya ini dalam file layout berikut untuk mengatur warna teks dan
+string teks:</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;fill_parent&quot;
+    android:textColor=&quot;<strong>&#64;color/opaque_red</strong>&quot;
+    android:text=&quot;<strong>&#64;string/hello</strong>&quot; /&gt;
+</pre>
+
+<p>Dalam hal ini, Anda tidak perlu menyebutkan nama paket dalam sumber daya acuan karena
+sumber daya berasal dari paket Anda sendiri. Untuk
+mengacu sumber daya sistem, Anda perlu memasukkan nama paketnya. Misalnya:</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;fill_parent&quot;
+    android:textColor=&quot;<strong>&#64;android:color/secondary_text_dark</strong>&quot;
+    android:text=&quot;&#64;string/hello&quot; /&gt;
+</pre>
+
+<p class="note"><strong>Catatan:</strong> Anda harus menggunakan sumber daya string sepanjang 
+waktu, sehingga aplikasi Anda bisa dilokalkan untuk bahasa lain. 
+Untuk informasi tentang cara menciptakan
+sumber daya alternatif (seperti string lokal), lihat <a href="providing-resources.html#AlternativeResources">Menyediakan Sumber Daya Alternatif
+</a>. Untuk panduan lengkap melokalkan aplikasi Anda ke bahasa lain,
+lihat <a href="localization.html">Pelokalan</a>.</p>
+
+<p>Anda bahkan bisa menggunakan sumber daya dalam XML untuk membuat alias. Misalnya, Anda bisa membuat
+sumber daya yang bisa ditarik yang merupakan alias bagi sumber daya yang bisa ditarik lainnya:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/other_drawable" />
+</pre>
+
+<p>Hal ini terdengar berlebihan, namun bisa sangat berguna saat menggunakan sumber daya alternatif. Baca selengkapnya tentang
+<a href="providing-resources.html#AliasResources">Membuat sumber daya alias</a>.</p>
+
+
+
+<h3 id="ReferencesToThemeAttributes">Mengacu atribut gaya</h3>
+
+<p>Sumber daya atribut gaya memungkinkan Anda mengacu nilai
+suatu atribut dalam tema yang diterapkan saat ini. Dengan mengacu sebuah atribut gaya memungkinkan Anda
+menyesuaikan tampilan elemen UI dengan mengatur gayanya agar cocok dengan beragam variasi standar yang dipasok oleh
+tema saat ini, sebagai ganti memasok nilai yang ditanamkan (hard-coded). Mengacu sebuah atribut gaya
+pada dasarnya adalah "gunakan gaya yang didefinisikan oleh atribut ini, dalam tema saat ini".</p>
+
+<p>Untuk mengacu sebuah atribut gaya, sintaks namanya hampir sama dengan format sumber daya normal
+, namun sebagai ganti simbol @ ({@code @}), gunakan sebuah tanda tanya ({@code ?}), dan
+porsi tipe sumber daya bersifat opsional. Sebagai contoh:</p>
+
+<pre class="classic">
+?[<em>&lt;package_name&gt;</em>:][<em>&lt;resource_type&gt;</em>/]<em>&lt;resource_name&gt;</em>
+</pre>
+
+<p>Misalnya, begini cara Anda mengacu suatu atribut untuk mengatur warna teks agar cocok dengan
+warna teks "utama" tema sistem:</p>
+
+<pre>
+&lt;EditText id=&quot;text&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;wrap_content&quot;
+    android:textColor=&quot;<strong>?android:textColorSecondary</strong>&quot;
+    android:text=&quot;&#64;string/hello_world&quot; /&gt;
+</pre>
+
+<p>Di sini, atribut {@code android:textColor} menyebutkan nama atribut gaya
+dalam tema saat ini. Android kini menggunakan nilai yang diterapkan pada atribut gaya {@code android:textColorSecondary}
+sebagai nilai untuk {@code android:textColor} dalam widget ini. Karena alat sumber daya
+mengetahui bahwa atribut sumber daya diharapkan dalam konteks ini,
+maka Anda tidak perlu menyatakan tipenyanya secara eksplisit (yang akan berupa
+<code>?android:attr/textColorSecondary</code>)&mdash;Anda bisa mengecualikan tipe {@code attr}.</p>
+
+
+
+
+<h2 id="PlatformResources">Mengakses Sumber Daya Platform</h2>
+
+<p>Android berisi sejumlah sumber daya standar, seperti gaya, tema, dan layout. Untuk
+mengakses semua sumber daya ini, tetapkan acuan sumber daya Anda dengan nama paket
+<code>android</code>. Misalnya, Android menyediakan sumber daya layout yang bisa Anda gunakan untuk
+item daftar dalam{@link android.widget.ListAdapter}:</p>
+
+<pre>
+{@link android.app.ListActivity#setListAdapter(ListAdapter)
+setListAdapter}(new {@link
+android.widget.ArrayAdapter}&lt;String&gt;(this, <strong>android.R.layout.simple_list_item_1</strong>, myarray));
+</pre>
+
+<p>Dalam contoh ini, {@link android.R.layout#simple_list_item_1} adalah sumber daya layout yang didefinisikan oleh
+platform untuk item di {@link android.widget.ListView}. Anda bisa menggunakannya sebagai ganti menciptakan
+layout sendiri untuk item daftar. Untuk informasi selengkapnya, lihat panduan pengembang 
+<a href="{@docRoot}guide/topics/ui/layout/listview.html">List View</a>.</p>
+
diff --git a/docs/html-intl/intl/in/guide/topics/resources/overview.jd b/docs/html-intl/intl/in/guide/topics/resources/overview.jd
new file mode 100644
index 0000000..966800c
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/resources/overview.jd
@@ -0,0 +1,103 @@
+page.title=Ikhtisar Sumber Daya
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Topik</h2>
+  <ol>
+    <li><a href="providing-resources.html">Menyediakan Sumber Daya</a></li>
+    <li><a href="accessing-resources.html">Mengakses Sumber Daya</a></li>
+    <li><a href="runtime-changes.html">Menangani Perubahan Runtime</a></li>
+    <li><a href="localization.html">Pelokalan</a></li>
+  </ol>
+
+  <h2>Acuan</h2>
+  <ol>
+    <li><a href="available-resources.html">Tipe Sumber Daya</a></li>
+  </ol>
+</div>
+</div>
+
+
+<p>Anda harus selalu mengeksternalkan sumber daya seperti gambar dan string dari kode
+aplikasi, agar Anda bisa memeliharanya secara independen. Mengeksternalkan
+sumber daya juga membuat Anda dapat menyediakan sumber daya alternatif yang mendukung konfigurasi
+perangkat tertentu seperti bahasa atau ukuran layar yang berbeda, yang semakin penting
+seiring semakin banyak tersedianya perangkat berbasis Android dengan konfigurasi berbeda. Untuk
+memberikan kompatibilitas dengan konfigurasi berbeda, Anda harus menata sumber daya dalam 
+direktori {@code res/} proyek Anda, menggunakan berbagai subdirektori yang mengelompokkan sumber daya menurut tipe
+dan konfigurasinya.</p>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram1.png" height="167" alt="" />
+<p class="img-caption">
+<strong>Gambar 1.</strong> Dua perangkat berbeda, masing-masing menggunakan layout default
+(aplikasi tidak menyediakan layout alternatif).</p>
+</div>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
+<p class="img-caption">
+<strong>Gambar 2.</strong> Dua perangkat berbeda, masing-masing menggunakan layout berbeda yang tersedia untuk
+ukuran layar berbeda.</p>
+</div>
+
+<p>Bagi setiap tipe sumber daya, Anda bisa menetapkan sumber daya <em>default</em> dan sumber daya
+<em>alternatif</em> untuk aplikasi Anda:</p>
+<ul>
+  <li>Sumber daya default adalah sumber daya yang harus digunakan apa pun
+konfigurasi perangkatnya atau jika tidak ada sumber daya alternatif yang sesuai 
+dengan konfigurasi saat ini.</li>
+  <li>Sumber daya alternatif adalah sumber daya yang Anda desain untuk digunakan dengan
+konfigurasi tertentu. Untuk menetapkan bahwa satu kelompok sumber daya ditujukan bagi konfigurasi tertentu,
+tambahkan qualifier konfigurasi yang sesuai ke nama direktori.</li>
+</ul>
+
+<p>Misalnya, walaupun layout
+UI default Anda disimpan dalam direktori {@code res/layout/}, Anda dapat menetapkan layout berbeda
+untuk digunakan saat layar dalam orientasi lanskap, dengan menyimpannya dalam direktori {@code res/layout-land/}
+. Android secara otomatis memberlakukan sumber daya yang sesuai dengan mencocokkan konfigurasi perangkat
+saat ini dengan nama direktori sumber daya.</p>
+
+<p>Gambar 1 mengilustrasikan cara sistem memberlakukan layout yang sama untuk
+dua perangkat berbeda saat sumber daya alternatif tidak tersedia. Gambar 2 menunjukkan
+aplikasi yang sama saat menambahkan sumber daya layout alternatif untuk layar yang lebih besar.</p>
+
+<p>Dokumen-dokumen berikut berisi panduan lengkap mengenai cara menata sumber daya aplikasi,
+menetapkan sumber daya alternatif, mengaksesnya dalam aplikasi, dan banyak lagi:</p>
+
+<dl>
+  <dt><strong><a href="providing-resources.html">Menyediakan Sumber Daya</a></strong></dt>
+  <dd>Jenis sumber daya yang dapat Anda sediakan dalam aplikasi, tempat menyimpannya, dan cara membuat sumber daya
+alternatif untuk konfigurasi perangkat tertentu.</dd>
+  <dt><strong><a href="accessing-resources.html">Mengakses Sumber Daya</a></strong></dt>
+  <dd>Cara menggunakan sumber daya yang telah Anda sediakan, baik dengan mengacunya dari kode
+aplikasi Anda atau dari sumber daya XML lainnya.</dd>
+  <dt><strong><a href="runtime-changes.html">Menangani Perubahan Runtime</a></strong></dt>
+  <dd>Cara mengelola perubahan konfigurasi yang terjadi saat Aktivitas Anda berjalan.</dd>
+  <dt><strong><a href="localization.html">Pelokalan</a></strong></dt>
+  <dd>Panduan dari pengalaman untuk melokalkan aplikasi menggunakan sumber daya alternatif. Walaupun ini
+hanya satu penggunaan tertentu dari sumber daya alternatif, hal ini sangat penting dalam meraih pengguna lebih
+banyak.</dd>
+  <dt><strong><a href="available-resources.html">Tipe Sumber Daya</a></strong></dt>
+  <dd>Acuan dari berbagai tipe sumber daya yang dapat Anda sediakan, menjelaskan elemen-elemen XML,
+atribut, dan sintaksnya. Misalnya, acuan ini menunjukkan kepada Anda cara membuat sumber daya untuk
+menu aplikasi, drawable, animasi, dan lainnya.</dd>
+</dl>
+
+<!--
+<h2>Raw Assets</h2>
+
+<p>An alternative to saving files in {@code res/} is to save files in the {@code
+assets/} directory. This should only be necessary if you need direct access to original files and
+directories by name. Files saved in the {@code assets/} directory will not be given a resource
+ID, so you can't reference them through the {@code R} class or from XML resources. Instead, you can
+query data in the {@code assets/} directory like an ordinary file system, search through the
+directory and
+read raw data using {@link android.content.res.AssetManager}. For example, this can be more useful
+when dealing with textures for a game. However, if you only need to read raw data from a file
+(such as a video or audio file), then you should save files into the {@code res/raw/} directory and
+then read a stream of bytes using {@link android.content.res.Resources#openRawResource(int)}. This
+is uncommon, but if you need direct access to original files in {@code assets/}, refer to the {@link
+android.content.res.AssetManager} documentation.</p>
+-->
diff --git a/docs/html-intl/intl/in/guide/topics/resources/providing-resources.jd b/docs/html-intl/intl/in/guide/topics/resources/providing-resources.jd
new file mode 100644
index 0000000..d6bbfc5
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/resources/providing-resources.jd
@@ -0,0 +1,1094 @@
+page.title=Menyediakan Sumber Daya
+parent.title=Sumber Daya Aplikasi
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Tampilan Cepat</h2>
+  <ul>
+    <li>Berbagai tipe sumber daya termasuk dalam subdirektori {@code res/}</li>
+    <li>Sumber daya alternatif menyediakan file sumber daya dengan konfigurasi tertentu</li>
+    <li>Sertakan selalu sumber daya default agar aplikasi Anda tidak bergantung pada
+konfigurasi perangkat tertentu</li>
+  </ul>
+  <h2>Dalam dokumen ini</h2>
+  <ol>
+    <li><a href="#ResourceTypes">Mengelompokkan Tipe Sumber Daya</a></li>
+    <li><a href="#AlternativeResources">Menyediakan Sumber Daya Alternatif</a>
+      <ol>
+        <li><a href="#QualifierRules">Aturan penamaan qualifier</a></li>
+        <li><a href="#AliasResources">Membuat sumber daya alias</a></li>
+      </ol>
+    </li>
+    <li><a href="#Compatibility">Menyediakan Kompatibilitas Perangkat Terbaik dengan Sumber Daya</a></li>
+    <li><a href="#BestMatch">Cara Android Menemukan Sumber Daya yang Paling Cocok</a></li>
+  </ol>
+
+  <h2>Lihat juga</h2>
+  <ol>
+    <li><a href="accessing-resources.html">Mengakses Sumber Daya</a></li>
+    <li><a href="available-resources.html">Tipe Sumber Daya</a></li>
+    <li><a href="{@docRoot}guide/practices/screens_support.html">Mendukung Beberapa
+Layar</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Anda harus selalu mengeksternalkan sumber daya aplikasi seperti gambar dan string dari kode
+, agar Anda bisa memeliharanya secara independen. Anda juga harus menyediakan sumber daya alternatif untuk
+konfigurasi perangkat tertentu, dengan mengelompokkannya dalam direktori sumber daya bernama khusus. Saat
+runtime, Android menggunakan sumber daya yang sesuai berdasarkan konfigurasi saat ini. Misalnya, Anda mungkin
+ingin menyediakan layout UI berbeda bergantung pada ukuran layar atau string berbeda bergantung pada
+pengaturan bahasa.</p>
+
+<p>Setelah mengeksternalkan sumber daya aplikasi, Anda dapat mengaksesnya menggunakan
+ID sumber daya yang dibuat dalam kelas {@code R} proyek Anda. Cara menggunakan
+sumber daya dalam aplikasi dibahas dalam <a href="accessing-resources.html">Mengakses
+Sumber Daya</a>. Dokumen ini menampilkan cara mengelompokkan sumber daya
+dalam proyek Android Anda dan menyediakan sumber daya alternatif untuk konfigurasi perangkat tertentu.</p>
+
+
+<h2 id="ResourceTypes">Mengelompokkan Tipe Sumber Daya</h2>
+
+<p>Anda harus menempatkan setiap tipe sumber daya dalam subdirektori spesifik pada direktori
+{@code res/} proyek. Misalnya, inilah hierarki file untuk proyek sederhana:</p>
+
+<pre class="classic no-pretty-print">
+MyProject/
+    src/  <span style="color:black">
+        MyActivity.java  </span>
+    res/
+        drawable/  <span style="color:black">
+            graphic.png  </span>
+        layout/  <span style="color:black">
+            main.xml
+            info.xml</span>
+        mipmap/  <span style="color:black">
+            icon.png </span>
+        values/  <span style="color:black">
+            strings.xml  </span>
+</pre>
+
+<p>Seperti yang Anda lihat dalam contoh ini, direktori {@code res/} berisi semua sumber daya (dalam
+subdirektori): sumber daya gambar, dua sumber daya layout, direktori {@code mipmap/} untuk ikon
+launcher, dan satu file sumber daya string. Nama direktori
+sumber daya penting dan dijelaskan dalam tabel 1.</p>
+
+<p class="note"><strong>Catatan:</strong> Untuk informasi selengkapnya tentang menggunakan folder mipmap, lihat
+<a href="{@docRoot}tools/projects/index.html#mipmap">Mengelola Ikhtisar Proyek</a>.</p>
+
+<p class="table-caption" id="table1"><strong>Tabel 1.</strong> Direktori sumber daya
+didukung dalam direktori proyek {@code res/}.</p>
+
+<table>
+  <tr>
+    <th scope="col">Direktori</th>
+    <th scope="col">Tipe Sumber Daya</th>
+  </tr>
+
+  <tr>
+    <td><code>animator/</code></td>
+    <td>File XML yang mendefinisikan <a href="{@docRoot}guide/topics/graphics/prop-animation.html">animasi
+properti</a>.</td>
+  </tr>
+
+  <tr>
+    <td><code>anim/</code></td>
+    <td>File XML yang mendefinisikan <a href="{@docRoot}guide/topics/graphics/view-animation.html#tween-animation">animasi
+tween</a>. (Animasi properti juga dapat disimpan dalam direktori ini, namun
+direktori {@code animator/} lebih disukai bagi animasi properti agar kedua tipe
+ini dapat dibedakan.)</td>
+  </tr>
+
+  <tr>
+    <td><code>color/</code></td>
+    <td>File XML yang mendefinisikan daftar status warna. Lihat <a href="color-list-resource.html">Sumber Daya
+Daftar Status Warna</a></td>
+  </tr>
+
+  <tr>
+    <td><code>drawable/</code></td>
+
+    <td><p>File bitmap ({@code .png}, {@code .9.png}, {@code .jpg}, {@code .gif}) atau file XML yang
+dikompilasi menjadi subtipe sumber daya drawable berikut:</p>
+      <ul>
+        <li>File bitmap</li>
+        <li>Nine-Patches (bitmap yang dapat diubah ukurannya)</li>
+        <li>Daftar status</li>
+        <li>Bentuk</li>
+        <li>Drawable animasi</li>
+        <li>Drawable lainnya</li>
+      </ul>
+      <p>Lihat <a href="drawable-resource.html">Sumber Daya Drawable</a>.</p>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>mipmap/</code></td>
+    <td>File drawable untuk densitas ikon launcher yang berbeda. Untuk informasi selengkapnya tentang
+ mengelola ikon launcher dengan folder {@code mipmap/}, lihat
+<a href="{@docRoot}tools/project/index.html#mipmap">Mengelola Ikhtisar Proyek</a>.</td>
+  </tr>
+
+  <tr>
+    <td><code>layout/</code></td>
+    <td>File XML yang mendefinisikan layout antarmuka pengguna.
+        Lihat <a href="layout-resource.html">Sumber Daya Layout</a>.</td>
+  </tr>
+
+  <tr>
+    <td><code>menu/</code></td>
+    <td>File XML yang mendefinisikan menu aplikasi, seperti Menu Opsi, Menu Konteks, atau Sub
+Menu. Lihat <a href="menu-resource.html">Sumber Daya Menu</a>.</td>
+  </tr>
+
+  <tr>
+    <td><code>raw/</code></td>
+    <td><p>File tak didukung yang akan disimpan dalam bentuk mentah. Untuk membuka sumber daya ini dengan
+{@link java.io.InputStream} mentah, panggil {@link android.content.res.Resources#openRawResource(int)
+Resources.openRawResource()} dengan ID sumber daya, yaitu {@code R.raw.<em>filename</em>}.</p>
+      <p>Akan tetapi, jika Anda butuh akses ke nama file asli dan hierarki file, Anda bisa mempertimbangkan
+untuk menyimpan beberapa sumber daya dalam direktori {@code
+assets/} (sebagai ganti {@code res/raw/}). File dalam {@code assets/} tidak diberi
+ID sumber daya, jadi Anda bisa membacanya hanya dengan menggunakan {@link android.content.res.AssetManager}.</p></td>
+  </tr>
+
+  <tr>
+    <td><code>values/</code></td>
+    <td><p>File XML yang berisi nilai-nilai sederhana, seperti string, integer, dan warna.</p>
+      <p>Walaupun file sumber daya XML dalam subdirektori {@code res/} lainnya mendefinisikan satu sumber daya
+berdasarkan nama file XML, file dalam direktori {@code values/} menggambarkan beberapa sumber daya.
+Untuk file dalam direktori ini, setiap anak elemen {@code &lt;resources&gt;} mendefinisikan satu sumber
+daya. Misalnya, elemen {@code &lt;string&gt;} membuat sumber daya
+{@code R.string} dan elemen {@code &lt;color&gt;} membuat sumber daya {@code R.color}
+.</p>
+      <p>Karena setiap sumber daya didefinisikan dengan elemen XML-nya sendiri, Anda bisa bebas menamai file
+ini dan menempatkan tipe sumber daya berbeda dalam satu file. Akan tetapi, agar jelas, Anda mungkin
+perlu menempatkan tipe sumber daya unik dalam file berbeda. Misalnya, berikut ini adalah beberapa ketentuan
+penamaan file untuk sumber daya yang dapat Anda buat dalam direktori ini:</p>
+      <ul>
+        <li>arrays.xml untuk larik sumber daya tipe (<a href="more-resources.html#TypedArray">larik bertipe</a>).</li>
+        <li>colors.xml untuk <a href="more-resources.html#Color">nilai warna</a></li>
+        <li>dimens.xml untuk <a href="more-resources.html#Dimension">nilai dimensi</a>.</li>
+        <li>strings.xml untuk <a href="string-resource.html">nilai
+string</a>.</li>
+        <li>styles.xml untuk <a href="style-resource.html">gaya</a>.</li>
+      </ul>
+      <p>Lihat <a href="string-resource.html">Sumber Daya String</a>,
+        <a href="style-resource.html">Sumber Daya Gaya</a>, dan 
+        <a href="more-resources.html">Tipe Sumber Daya Lainnya</a>.</p>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>xml/</code></td>
+    <td>File XML tak didukung yang bisa dibaca saat runtime dengan memanggil {@link
+android.content.res.Resources#getXml(int) Resources.getXML()}. Berbagai file konfigurasi XML
+harus disimpan di sini, seperti <a href="{@docRoot}guide/topics/search/searchable-config.html">konfigurasi yang dapat dicari</a>.
+<!-- or preferences configuration. --></td>
+  </tr>
+</table>
+
+<p class="caution"><strong>Perhatian:</strong> Jangan menyimpan file sumber daya secara langsung dalam
+direktori {@code res/}&mdash; karena akan menyebabkan kesalahan compiler.</p>
+
+<p>Untuk informasi selengkapnya tentang tipe sumber daya tertentu, lihat dokumentasi <a href="available-resources.html">Tipe Sumber Daya</a>.</p>
+
+<p>Sumber daya yang disimpan dalam subdirektori yang didefinisikan dalam tabel 1 adalah sumber daya
+"default" Anda. Berarti sumber daya ini mendefinisikan desain default dan konten untuk aplikasi Anda.
+Akan tetapi, beberapa tipe perangkat berbasis Android mungkin memanggil tipe sumber daya yang berbeda.
+Misalnya, jika perangkat memiliki layar yang lebih besar daripada layar normal, maka Anda harus
+menyediakan sumber daya layout berbeda yang memanfaatkan ruang layar yang lebih besar. Atau, jika perangkat
+memiliki pengaturan bahasa berbeda, maka Anda harus menyediakan sumber daya string berbeda yang menerjemahkan teks dalam
+antarmuka pengguna Anda. Untuk menyediakan sumber daya berbeda ini bagi
+konfigurasi perangkat yang berbeda, Anda harus menyediakan sumber daya alternatif, selain sumber
+daya default.</p>
+
+
+<h2 id="AlternativeResources">Menyediakan Sumber Daya Alternatif</h2>
+
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
+<p class="img-caption">
+<strong>Gambar 1.</strong> Dua perangkat berbeda, masing-masing menggunakan sumber daya layout berbeda.</p>
+</div>
+
+<p>Hampir setiap aplikasi harus menyediakan sumber daya alternatif untuk mendukung konfigurasi
+perangkat tertentu. Misalnya, Anda harus menyertakan sumber daya drawable alternatif untuk densitas layar
+berbeda dan sumber daya string alternatif untuk bahasa yang berbeda. Saat runtime, Android
+akan mendeteksi konfigurasi perangkat aktif dan memuat
+sumber daya yang sesuai untuk aplikasi Anda.</p>
+
+<p>Untuk menyebutkan alternatif konfigurasi tertentu untuk satu set sumber daya:</p>
+<ol>
+  <li>Buat direktori baru dalam {@code res/} yang dinamai dalam bentuk {@code
+<em>&lt;resources_name&gt;</em>-<em>&lt;config_qualifier&gt;</em>}.
+    <ul>
+      <li><em>{@code &lt;resources_name&gt;}</em> adalah nama direktori dari sumber daya default
+terkait (didefinisikan dalam tabel 1).</li>
+      <li><em>{@code &lt;qualifier&gt;}</em> adalah nama yang menetapkan konfigurasi individu
+yang akan digunakan sumber daya ini (didefinisikan dalam tabel 2).</li>
+    </ul>
+    <p>Anda bisa menambahkan lebih dari satu <em>{@code &lt;qualifier&gt;}</em>. Pisahkan masing-masing
+dengan tanda hubung.</p>
+    <p class="caution"><strong>Perhatian:</strong> Saat menambahkan beberapa qualifier, Anda
+harus menempatkannya dalam urutan yang sama dengan yang tercantum dalam tabel 2. Jika urutan qualifier
+salah, sumber daya akan diabaikan.</p>
+  </li>
+  <li>Simpan masing-masing sumber daya alternatif dalam direktori baru ini. File sumber daya harus dinamai
+sama persis dengan file sumber daya default.</li>
+</ol>
+
+<p>Misalnya, berikut ini beberapa sumber daya default dan sumber daya alternatif:</p>
+
+<pre class="classic no-pretty-print">
+res/
+    drawable/   <span style="color:black">
+        icon.png
+        background.png    </span>
+    drawable-hdpi/  <span style="color:black">
+        icon.png
+        background.png  </span>
+</pre>
+
+<p>Qualifier {@code hdpi} menunjukkan bahwa sumber daya dalam direktori itu diperuntukkan bagi perangkat dengan
+layar densitas tinggi. Gambar di masing-masing direktori drawable memiliki ukuran untuk densitas layar
+tertentu, namun nama filenya persis
+sama. Dengan demikian, ID sumber daya yang Anda gunakan untuk mengacu gambar {@code icon.png} atau @code
+background.png} selalu sama, namun Android memilih
+versi masing-masing sumber daya yang paling cocok dengan perangkat saat ini, dengan membandingkan informasi konfigurasi
+perangkat dengan qualifier dalam nama direktori sumber daya.</p>
+
+<p>Android mendukung beberapa qualifier konfigurasi dan Anda dapat
+menambahkan beberapa qualifier ke satu nama direktori, dengan memisahkan setiap qualifier dengan tanda hubung. Tabel 2
+berisi daftar qualifier konfigurasi yang valid, dalam urutan prioritas&mdash;jika Anda menggunakan beberapa
+qualifier sebagai direktori sumber daya, Anda harus menambahkannya ke nama direktori sesuai urutan
+yang tercantum dalam tabel.</p>
+
+
+<p class="table-caption" id="table2"><strong>Tabel 2.</strong> Nama-nama
+qualifier konfigurasi.</p>
+<table>
+    <tr>
+        <th>Konfigurasi</th>
+        <th>Nilai-nilai Qualifier</th>
+        <th>Keterangan</th>
+    </tr>
+    <tr id="MccQualifier">
+      <td>MCC dan MNC</td>
+      <td>Contoh:<br/>
+        <code>mcc310</code><br/>
+        <code><nobr>mcc310-mnc004</nobr></code><br/>
+        <code>mcc208-mnc00</code><br/>
+        dll.
+      </td>
+      <td>
+        <p>Kode negara seluler (MCC), bisa diikuti dengan kode jaringan seluler (MNC)
+ dari kartu SIM dalam perangkat. Misalnya, <code>mcc310</code> adalah AS untuk operator mana saja,
+ <code>mcc310-mnc004</code> adalah AS untuk Verizon, dan <code>mcc208-mnc00</code> Prancis untuk
+Orange.</p>
+        <p>Jika perangkat menggunakan koneksi radio (ponsel GSM), nilai-nilai MCC dan MNC berasal 
+dari kartu SIM.</p>
+        <p>Anda juga dapat menggunakan MNC saja (misalnya, untuk menyertakan sumber daya legal
+spesifik untuk negara itu di aplikasi Anda). Jika Anda perlu menetapkan hanya berdasarkan bahasa, maka gunakan qualifier
+<em>bahasa dan wilayah</em> sebagai gantinya (akan dibahas nanti). Jika Anda memutuskan untuk menggunakan qualifier MCC dan
+MNC, Anda harus melakukannya dengan hati-hati dan menguji apakah qualifier itu berjalan sesuai harapan.</p>
+        <p>Lihat juga bidang konfigurasi {@link
+android.content.res.Configuration#mcc}, dan {@link
+android.content.res.Configuration#mnc}, yang masing-masing menunjukkan kode negara seluler saat ini
+dan kode jaringan seluler.</p>
+      </td>
+    </tr>
+    <tr id="LocaleQualifier">
+      <td>Bahasa dan wilayah</td>
+      <td>Contoh:<br/>
+        <code>en</code><br/>
+        <code>fr</code><br/>
+        <code>en-rUS</code><br/>
+        <code>fr-rFR</code><br/>
+        <code>fr-rCA</code><br/>
+        dll.
+      </td>
+      <td><p>Bahasa didefinisikan oleh kode bahasa dua huruf <a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">ISO
+639-1</a>, bisa juga diikuti dengan kode wilayah 
+dua huruf <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO
+3166-1-alpha-2</a> (diawali dengan huruf kecil "{@code r}").
+        </p><p>
+        Kode <em>tidak</em> membedakan huruf besar atau kecil; awalan {@code r} akan digunakan untuk
+membedakan bagian wilayah.
+        Anda tidak bisa menetapkan wilayah saja.</p>
+        <p>Ini bisa berubah selama masa pakai
+aplikasi Anda jika pengguna mengubah bahasanya dalam pengaturan sistem. Lihat <a href="runtime-changes.html">Menangani Perubahan Runtime</a> untuk informasi tentang
+bagaimana hal ini dapat memengaruhi aplikasi Anda selama runtime.</p>
+        <p>Lihat <a href="localization.html">Pelokalan</a> untuk panduan lengkap melokalkan
+aplikasi Anda ke bahasa lain.</p>
+        <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#locale} yang menunjukkan
+bahasa setempat yang digunakan saat ini.</p>
+      </td>
+    </tr>
+    <tr id="LayoutDirectionQualifier">
+      <td>Arah Layout</td>
+      <td><code>ldrtl</code><br/>
+        <code>ldltr</code><br/>
+      </td>
+      <td><p>Arah layout aplikasi Anda. {@code ldrtl} berarti "arah layout dari kanan ke kiri".
+ {@code ldltr} berarti "arah layout dari kiri ke kanan" dan merupakan nilai implisit default.
+      </p>
+      <p>Ini bisa berlaku untuk sumber daya mana pun seperti layout, drawable, atau nilai-nilai.
+      </p>
+      <p>Misalnya, jika Anda ingin memberikan beberapa layout khusus untuk bahasa Arab dan beberapa
+layout umum untuk setiap bahasa lainnya yang menggunakan "kanan-ke-kiri" lainnya (seperti bahasa Persia atau Ibrani) maka Anda akan memiliki:
+      </p>
+<pre class="classic no-pretty-print">
+res/
+    layout/   <span style="color:black">
+        main.xml  </span>(Default layout)
+    layout-ar/  <span style="color:black">
+        main.xml  </span>(Specific layout for Arabic)
+    layout-ldrtl/  <span style="color:black">
+        main.xml  </span>(Any "right-to-left" language, except
+                  for Arabic, because the "ar" language qualifier
+                  has a higher precedence.)
+</pre>
+        <p class="note"><strong>Catatan:</strong> Untuk mengaktifkan fitur
+layout kanan-ke-kiri untuk aplikasi, Anda harus mengatur <a href="{@docRoot}guide/topics/manifest/application-element.html#supportsrtl">{@code
+        supportsRtl}</a> ke {@code "true"} dan mengatur <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> ke 17 atau yang lebih tinggi.</p>
+        <p><em>Ditambahkan dalam API level 17.</em></p>
+      </td>
+    </tr>
+    <tr id="SmallestScreenWidthQualifier">
+      <td>smallestWidth</td>
+      <td><code>sw&lt;N&gt;dp</code><br/><br/>
+        Contoh:<br/>
+        <code>sw320dp</code><br/>
+        <code>sw600dp</code><br/>
+        <code>sw720dp</code><br/>
+        dll.
+      </td>
+      <td>
+        <p>Ukuran dasar layar, sebagaimana yang ditunjukkan oleh dimensi terpendek dari area layar
+yang tersedia. Secara spesifik, smallestWidth perangkat adalah yang terpendek dari
+tinggi dan lebar layar yang tersedia (Anda dapat menganggapnya sebagai "lebar terkecil yang memungkinkan" untuk layar). Anda bisa
+menggunakan qualifier ini untuk memastikan bahwa, apa pun orientasi layar saat ini, aplikasi
+Anda memiliki paling tidak {@code &lt;N&gt;} dps dari lebar yang tersedia untuk UI-nya.</p>
+        <p>Misalnya, jika layout mengharuskan dimensi layar terkecilnya setiap saat paling tidak
+600 dp, maka Anda dapat menggunakan qualifer ini untuk membuat sumber daya layout, {@code
+res/layout-sw600dp/}. Sistem akan menggunakan sumber daya ini hanya bila dimensi layar terkecil yang
+tersedia paling tidak 600 dp, tanpa mempertimbangkan apakah sisi 600 dp adalah tinggi atau
+lebar yang dipersepsikan pengguna. SmallestWidth adalah karakteristik ukuran layar tetap dari perangkat; <strong>smallestWidth
+perangkat tidak berubah saat orientasi layar berubah</strong>.</p>
+        <p>SmallestWidth perangkat memperhitungkan dekorasi layar dan UI sistem. Misalnya
+, jika perangkat memiliki beberapa elemen UI persisten pada layar yang menghitung ruang di sepanjang
+sumbu smallestWidth, sistem akan mendeklarasikan smallestWidth lebih kecil daripada ukuran layar sebenarnya,
+karena itu adalah piksel layar yang tidak tersedia untuk UI Anda. Sehingga nilai yang Anda
+gunakan haruslah merupakan dimensi terkecil sebenarnya yang <em>dibutuhkan oleh layout Anda</em> (biasanya, nilai ini adalah
+"lebar terkecil" yang didukung layout Anda, apa pun orientasi layar saat ini).</p>
+        <p>Sebagian nilai yang mungkin Anda gunakan untuk ukuran layar umum:</p>
+        <ul>
+          <li>320, untuk perangkat berkonfigurasi layar seperti:
+            <ul>
+              <li>240x320 ldpi (handset QVGA)</li>
+              <li>320x480 mdpi (handset)</li>
+              <li>480x800 hdpi (handset densitas tinggi)</li>
+            </ul>
+          </li>
+          <li>480, untuk layar seperti 480x800 mdpi (tablet/handset).</li>
+          <li>600, untuk layar seperti 600x1024 mdpi (tablet 7").</li>
+          <li>720, untuk layar seperti 720x1280 mdpi (tablet 10").</li>
+        </ul>
+        <p>Bila aplikasi Anda menyediakan beberapa direktori sumber daya dengan nilai yang berbeda untuk
+qualifier smallestWidth terkecil, sistem akan menggunakan nilai terdekat dengan (tanpa melebihi)
+smallestWidth perangkat. </p>
+        <p><em>Ditambahkan dalam API level 13.</em></p>
+        <p>Lihat juga atribut <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html#requiresSmallest">{@code
+android:requiresSmallestWidthDp}</a>, yang mendeklarasikan smallestWidth minimum yang
+kompatibel dengan aplikasi Anda, dan bidang konfigurasi {@link
+android.content.res.Configuration#smallestScreenWidthDp}, yang menyimpan nilai
+smallestWidth perangkat.</p>
+        <p>Untuk informasi selengkapnya tentang mendesain untuk layar berbeda dan menggunakan
+qualifier ini, lihat panduan pengembang <a href="{@docRoot}guide/practices/screens_support.html">Mendukung
+Multi Layar</a>.</p>
+      </td>
+    </tr>
+    <tr id="ScreenWidthQualifier">
+      <td>Lebar yang tersedia</td>
+      <td><code>w&lt;N&gt;dp</code><br/><br/>
+        Contoh:<br/>
+        <code>w720dp</code><br/>
+        <code>w1024dp</code><br/>
+        dll.
+      </td>
+      <td>
+        <p>Menetapkan lebar layar minimum yang tersedia, di unit {@code dp} yang
+menggunakan sumber daya&mdash;yang didefinisikan oleh nilai <code>&lt;N&gt;</code>.  Nilai konfigurasi ini
+ akan berubah bila orientasi
+berubah antara lanskap dan potret agar cocok dengan lebar sebenarnya saat ini.</p>
+        <p>Bila aplikasi Anda menyediakan beberapa direktori sumber daya dengan nilai yang berbeda
+ untuk konfigurasi ini, sistem akan menggunakan nilai terdekat dengan (tanpa melebihi)
+ lebar layar perangkat saat ini.  Nilai
+di sini memperhitungkan dekorasi layar akun, jadi jika perangkat memiliki beberapa 
+elemen UI persisten di tepi kiri atau kanan, layar 
+menggunakan nilai lebar yang lebih kecil daripada ukuran layar sebenarnya, yang memperhitungkan
+elemen UI ini dan mengurangi ruang aplikasi yang tersedia.</p>
+        <p><em>Ditambahkan dalam API level 13.</em></p>
+        <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#screenWidthDp}
+ yang menyimpan lebar layar saat ini.</p>
+        <p>Untuk informasi selengkapnya tentang mendesain untuk layar berbeda dan menggunakan
+qualifier ini, lihat panduan pengembang <a href="{@docRoot}guide/practices/screens_support.html">Mendukung
+Multi Layar</a>.</p>
+      </td>
+    </tr>
+    <tr id="ScreenHeightQualifier">
+      <td>Tinggi yang tersedia</td>
+      <td><code>h&lt;N&gt;dp</code><br/><br/>
+        Contoh:<br/>
+        <code>h720dp</code><br/>
+        <code>h1024dp</code><br/>
+        dll.
+      </td>
+      <td>
+        <p>Menetapkan tinggi layar minimum yang tersedia, dalam satuan "dp" yang harus digunakan
+sumber daya &mdash;bersama nilai yang didefinisikan oleh <code>&lt;N&gt;</code>.  Nilai konfigurasi ini
+ akan berubah saat orientasi
+berubah antara lanskap dan potret agar cocok dengan tinggi sebenarnya saat ini.</p>
+        <p>Bila aplikasi menyediakan beberapa direktori sumber daya dengan nilai yang berbeda
+ untuk konfigurasi ini, sistem akan menggunakan nilai yang terdekat dengan (tanpa melebihi)
+ tinggi layar perangkat saat ini.  Nilai 
+di sini memperhitungkan dekorasi layar akun, jadi jika perangkat memiliki beberapa
+elemen UI persisten di tepi atas atau bawah, layar akan
+menggunakan nilai tinggi yang lebih kecil daripada ukuran layar sebenarnya, memperhitungkan
+elemen UI ini dan mengurangi ruang aplikasi yang tersedia.  Dekorasi 
+layar yang tidak tetap (misalnya baris status (status-bar) telepon yang bisa 
+disembunyikan saat layar penuh) di sini <em>tidak</em> diperhitungkan, demikian pula 
+dekorasi jendela seperti baris judul (title-bar)atau baris tindakan (action-bar), jadi aplikasi harus disiapkan 
+untuk menangani ruang yang agak lebih kecil daripada yang ditetapkan.
+        <p><em>Ditambahkan dalam API level 13.</em></p>
+        <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#screenHeightDp}
+ yang menyimpan lebar layar saat ini.</p>
+        <p>Untuk informasi selengkapnya tentang mendesain untuk layar berbeda dan menggunakan
+qualifier ini, lihat panduan pengembang <a href="{@docRoot}guide/practices/screens_support.html">Mendukung
+Multi Layar</a>.</p>
+      </td>
+    </tr>
+    <tr id="ScreenSizeQualifier">
+      <td>Ukuran layar</td>
+      <td>
+        <code>small</code><br/>
+        <code>normal</code><br/>
+        <code>large</code><br/>
+        <code>xlarge</code>
+      </td>
+      <td>
+        <ul class="nolist">
+        <li>{@code small}: Layar yang berukuran serupa dengan 
+layar QVGA densitas rendah. Ukuran layout minimum untuk layar kecil 
+adalah sekitar 320x426 satuan dp.  Misalnya QVGA densitas rendah 
+dan VGA densitas tinggi.</li>
+        <li>{@code normal}: Layar yang berukuran serupa dengan 
+layar HVGA densitas sedang. Ukuran layout minimum untuk
+layar normal adalah sekitar 320x470 satuan dp.  Contoh layar seperti itu adalah 
+WQVGA densitas rendah, HVGA densitas sedang, WVGA
+     densitas tinggi.</li>
+        <li>{@code large}: Layar yang berukuran serupa dengan 
+layar VGA densitas sedang.
+        Ukuran layout minimum untuk layar besar adalah sekitar 480x640 satuan dp.
+        Misalnya layar VGA dan WVGA densitas sedang.</li>
+        <li>{@code xlarge}: Layar yang jauh lebih besar dari layar HVGA 
+densitas sedang tradisional. Ukuran layout minimum untuk 
+layar ekstra besar adalah sekitar 720x960 satuan dp.  Perangkat dengan layar ekstra besar 
+seringkali terlalu besar untuk dibawa dalam saku dan kemungkinan besar
+ berupa perangkat bergaya tablet. <em>Ditambahkan dalam API level 9.</em></li>
+        </ul>
+        <p class="note"><strong>Catatan:</strong> Menggunakan qualifier ukuran tidak berarti bahwa 
+sumber daya <em>hanya</em> untuk layar ukuran itu saja. Jika Anda tidak menyediakan sumber
+daya alternatif dengan qualifier yang lebih cocok dengan konfigurasi perangkat saat ini, sistem dapat menggunakan sumber daya
+mana saja yang <a href="#BestMatch">paling cocok</a>.</p>
+        <p class="caution"><strong>Perhatian:</strong> Jika semua sumber daya Anda menggunakan 
+qualifier yang berukuran <em>lebih besar</em> daripada layar saat ini, sistem <strong>tidak</strong> akan menggunakannya dan aplikasi 
+Anda akan crash saat runtime (misalnya, jika semua sumber daya layout ditandai dengan qualifier {@code
+xlarge}, namun perangkat memiliki ukuran layar normal).</p>
+        <p><em>Ditambahkan dalam API level 4.</em></p>
+        
+        <p>Lihat <a href="{@docRoot}guide/practices/screens_support.html">Mendukung Beberapa
+Layar</a> untuk informasi selengkapnya.</p>
+        <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#screenLayout},
+ yang menunjukkan apakah layar berukuran kecil, normal, atau
+besar.</p>
+      </td>
+    </tr>
+    <tr id="ScreenAspectQualifier">
+      <td>Aspek layar</td>
+      <td>
+        <code>long</code><br/>
+        <code>notlong</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code long}: Layar panjang, seperti WQVGA, WVGA, FWVGA</li>
+          <li>{@code notlong}: Layar tidak panjang, seperti QVGA, HVGA, dan VGA</li>
+        </ul>
+        <p><em>Ditambahkan dalam API level 4.</em></p>
+        <p>Ini berdasarkan sepenuhnya pada rasio aspek layar (layar "panjang" lebih lebar). Ini
+tidak ada kaitannya dengan orientasi layar.</p>
+        <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#screenLayout},
+ yang menunjukkan apakah layar panjang.</p>
+      </td>
+    </tr>
+    <tr id="OrientationQualifier">
+      <td>Orientasi layar</td>
+      <td>
+        <code>port</code><br/>
+        <code>land</code>  <!-- <br/>
+        <code>square</code>  -->
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code port}: Perangkat dalam orientasi potret (vertikal)</li>
+          <li>{@code land}: Perangkat dalam orientasi lanskap (horizontal)</li>
+          <!-- Square mode is currently not used. -->
+        </ul>
+        <p>Ini bisa berubah selama masa pakai aplikasi Anda jika pengguna memutar
+layar. Lihat <a href="runtime-changes.html">Menangani Perubahan Runtime</a> untuk
+ informasi tentang bagaimana hal ini memengaruhi aplikasi Anda selama runtime.</p>
+        <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#orientation}, 
+yang menunjukkan orientasi perangkat saat ini.</p>
+      </td>
+    </tr>
+    <tr id="UiModeQualifier">
+      <td>Mode UI</td>
+      <td>
+        <code>car</code><br/>
+        <code>desk</code><br/>
+        <code>television</code><br/>
+        <code>appliance</code>
+        <code>watch</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code car}: Perangkat sedang menampilkan di dudukan perangkat di mobil</li>
+          <li>{@code desk}: Perangkat sedang menampilkan di dudukan perangkat di meja</li>
+          <li>{@code television}: Perangkat sedang menampilkan di televisi, yang menyediakan 
+pengalaman "sepuluh kaki" dengan UI-nya pada layar besar yang berada jauh dari pengguna,
+terutama diorientasikan seputar DPAD atau 
+interaksi non-pointer lainnya</li>
+          <li>{@code appliance}: Perangkat berlaku sebagai 
+alat, tanpa tampilan</li>
+          <li>{@code watch}: Perangkat memiliki tampilan dan dikenakan di pergelangan tangan</li>
+        </ul>
+        <p><em>Ditambahkan dalam API level 8, televisi ditambahkan dalam API 13, jam ditambahkan dalam API 20.</em></p>
+        <p>Untuk informasi tentang cara aplikasi merespons saat perangkat dimasukkan 
+ke dalam atau dilepaskan dari dudukannya, bacalah <a href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">Menentukan
+dan Memantau Kondisi dan Tipe Dudukan</a>.</p>
+        <p>Ini bisa berubah selama masa pakai aplikasi jika pengguna menempatkan perangkat di 
+dudukannya. Anda dapat mengaktifkan atau menonaktifkan sebagian mode ini menggunakan {@link
+android.app.UiModeManager}. Lihat <a href="runtime-changes.html">Menangani Perubahan Runtime</a> untuk
+informasi tentang bagaimana hal ini memengaruhi aplikasi Anda selama runtime.</p>
+      </td>
+    </tr>
+    <tr id="NightQualifier">
+      <td>Mode malam</td>
+      <td>
+        <code>night</code><br/>
+        <code>notnight</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code night}: Waktu malam</li>
+          <li>{@code notnight}: Waktu siang</li>
+        </ul>
+        <p><em>Ditambahkan dalam API level 8.</em></p>
+        <p>Ini bisa berubah selama masa pakai aplikasi jika mode malam dibiarkan dalam
+mode otomatis (default), dalam hal ini perubahan mode berdasarkan pada waktu hari.  Anda dapat mengaktifkan
+atau menonaktifkan mode ini menggunakan {@link android.app.UiModeManager}. Lihat <a href="runtime-changes.html">Menangani Perubahan Runtime</a> untuk informasi tentang bagaimana hal ini memengaruhi 
+aplikasi Anda selama runtime.</p>
+      </td>
+    </tr>
+    <tr id="DensityQualifier">
+      <td>Densitas piksel layar (dpi)</td>
+      <td>
+        <code>ldpi</code><br/>
+        <code>mdpi</code><br/>
+        <code>hdpi</code><br/>
+        <code>xhdpi</code><br/>
+        <code>xxhdpi</code><br/>
+        <code>xxxhdpi</code><br/>
+        <code>nodpi</code><br/>
+        <code>tvdpi</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code ldpi}: Layar densitas rendah; sekitar 120 dpi.</li>
+          <li>{@code mdpi}: Layar densitas sedang (pada HVGA tradisional); sekitar 160 dpi.
+</li>
+          <li>{@code hdpi}: Layar densitas tinggi; sekitar 240 dpi.</li>
+          <li>{@code xhdpi}: Layar densitas ekstra tinggi; sekitar 320 dpi. <em>Ditambahkan dalam API
+Level 8.</em></li>
+          <li>{@code xxhdpi}: Layar densitas ekstra-ekstra-tinggi; sekitar 480 dpi. <em>Ditambahkan dalam API
+Level 16.</em></li>
+          <li>{@code xxxhdpi}: Densitas ekstra-ekstra-ekstra-tinggi (hanya ikon launcher, 
+lihat <a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">catatan</a> 
+ dalam <em>Mendukung Beberapa Layar</em>); sekitar 640 dpi. <em>Ditambahkan dalam API
+Level 18.</em></li>
+          <li>{@code nodpi}: Ini bisa digunakan untuk sumber daya bitmap yang tidak ingin Anda
+skalakan agar sama dengan densitas perangkat.</li>
+          <li>{@code tvdpi}: Layar antara mdpi dan hdpi; sekitar 213 dpi. Ini
+tidak dianggap sebagai kelompok densitas "utama". Sebagian besar ditujukan untuk televisi dan kebanyakan
+aplikasi tidak memerlukannya &mdash;asalkan sumber daya mdpi dan hdpi cukup untuk sebagian besar aplikasi dan
+sistem akan menskalakan sebagaimana mestinya. Qualifier ini diperkenalkan pada API level 13.</li>
+        </ul>
+        <p>Terdapat rasio skala 3:4:6:8:12:16 antara enam densitas utama (dengan mengabaikan densitas
+tvdpi). Jadi bitmap 9x9 di ldpi adalah 12x12 di mdpi, 18x18 di hdpi, 24x24 di xhdpi dan seterusnya.
+</p>
+        <p>Jika Anda memutuskan bahwa sumber daya gambar tidak terlihat cukup baik di televisi
+atau perangkat tertentu lainnya dan ingin mencoba sumber daya tvdpi, faktor skalanya adalah 1,33*mdpi. Misalnya,
+gambar 100px x 100px untuk layar mdpi harus 133px x 133px untuk tvdpi.</p>
+        <p class="note"><strong>Catatan:</strong> Menggunakan qualifier densitas tidak berarti bahwa
+sumber daya <em>hanya</em> untuk layar dengan ukuran itu saja. Jika Anda tidak menyediakan sumber
+daya alternatif dengan qualifier yang lebih cocok dengan konfigurasi perangkat saat ini, sistem dapat menggunakan sumber daya
+mana saja yang <a href="#BestMatch">paling cocok</a>.</p>
+        <p>Lihat <a href="{@docRoot}guide/practices/screens_support.html">Mendukung Beberapa
+Layar</a> untuk informasi selengkapnya tentang cara menangani densitas layar yang berbeda dan cara Android
+menurunkan skala bitmap Anda agar sesuai dengan densitas saat ini.</p>
+       </td>
+    </tr>
+    <tr id="TouchscreenQualifier">
+      <td>Tipe layar sentuh</td>
+      <td>
+        <code>notouch</code><br/>
+        <code>finger</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code notouch}: Perangkat tidak memiliki layar sentuh.</li>
+          <li>{@code finger}: Perangkat memiliki layar sentuh yang dimaksudkan untuk
+digunakan melalui interaksi dengan jari pengguna.</li>
+        </ul>
+        <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#touchscreen}, yang
+menunjukkan tipe layar sentuh pada perangkat.</p>
+      </td>
+    </tr>
+    <tr id="KeyboardAvailQualifier">
+      <td>Ketersediaan keyboard</td>
+      <td>
+        <code>keysexposed</code><br/>
+        <code>keyshidden</code><br/>
+        <code>keyssoft</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code keysexposed}: Perangkat menyediakan keyboard. Jika perangkat mengaktifkan
+keyboard perangkat lunak (kemungkinan), ini dapat digunakan bahkan saat keyboard fisik
+<em>tidak</em> diekspos kepada pengguna, meskipun perangkat tidak memiliki keyboard fisik. Jika keyboard
+perangkat lunak tidak disediakan atau dinonaktifkan, maka ini hanya digunakan bila
+keyboard fisik diekspos.</li>
+          <li>{@code keyshidden}: Perangkat memiliki keyboard fisik yang tersedia
+tetapi tersembunyi <em>dan</em> perangkat <em>tidak</em> mengaktifkan keyboard perangkat lunak.</li>
+          <li>{@code keyssoft}: Perangkat mengaktifkan keyboard perangkat lunak,
+baik itu terlihat maupun tidak.</li>
+        </ul>
+        <p>Jika Anda menyediakan sumber daya <code>keysexposed</code>, namun bukan sumber daya <code>keyssoft</code>
+, sistem akan menggunakan sumber daya <code>keysexposed</code> baik keyboard
+terlihat atau tidak, asalkan sistem telah mengaktifkan keyboard perangkat lunak.</p>
+        <p>Ini bisa berubah selama masa pakai aplikasi jika pengguna membuka keyboard
+fisik. Lihat <a href="runtime-changes.html">Menangani Perubahan Runtime</a> untuk informasi tentang bagaimana
+hal ini memengaruhi aplikasi Anda selama runtime.</p>
+        <p>Lihat juga bidang konfigurasi {@link
+android.content.res.Configuration#hardKeyboardHidden} dan {@link
+android.content.res.Configuration#keyboardHidden}, yang menunjukkan visibilitas 
+keyboard fisik dan visibilitas segala jenis keyboard (termasuk keyboard perangkat lunak), masing-masing.</p>
+      </td>
+    </tr>
+    <tr id="ImeQualifier">
+      <td>Metode input teks utama</td>
+      <td>
+        <code>nokeys</code><br/>
+        <code>qwerty</code><br/>
+        <code>12key</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code nokeys}: Perangkat tidak memiliki tombol fisik untuk input teks.</li>
+          <li>{@code qwerty}: Perangkat memiliki keyboard fisik qwerty, baik terlihat maupun tidak pada
+pengguna
+.</li>
+          <li>{@code 12key}: Perangkat memiliki keyboard fisik 12 tombol, baik terlihat maupun tidak
+pada pengguna.</li>
+        </ul>
+        <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#keyboard}, 
+yang menunjukkan metode utama input teks yang tersedia.</p>
+      </td>
+    </tr>
+    <tr id="NavAvailQualifier">
+      <td>Ketersediaan tombol navigasi</td>
+      <td>
+        <code>navexposed</code><br/>
+        <code>navhidden</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code navexposed}: Tombol navigasi tersedia bagi pengguna.</li>
+          <li>{@code navhidden}: Tombol navigasi tidak tersedia (misalnya di balik penutup yang
+ditutup).</li>
+        </ul>
+        <p>Ini bisa berubah selama masa pakai aplikasi jika pengguna menyingkap tombol
+navigasi. Lihat <a href="runtime-changes.html">Menangani Perubahan Runtime</a> untuk
+informasi tentang bagaimana hal ini memengaruhi aplikasi Anda selama runtime.</p>
+        <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#navigationHidden}, yang menunjukkan
+apakah tombol navigasi disembunyikan.</p>
+      </td>
+    </tr>
+    <tr id="NavigationQualifier">
+      <td>Metode navigasi non-sentuh utama</td>
+      <td>
+        <code>nonav</code><br/>
+        <code>dpad</code><br/>
+        <code>trackball</code><br/>
+        <code>wheel</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code nonav}: Perangkat tidak memiliki fasilitas navigasi selain menggunakan
+layar sentuh.</li>
+          <li>{@code dpad}: Perangkat memiliki pad pengarah (directional pad / d-pad) untuk navigasi.</li>
+          <li>{@code trackball}: Perangkat memiliki trackball untuk navigasi.</li>
+          <li>{@code wheel}: Perangkat memiliki roda pengarah (directional wheel) untuk navigasi (tidak umum).</li>
+        </ul>
+        <p>Lihat juga bidang konfigurasi {@link android.content.res.Configuration#navigation},
+yang menunjukkan tipe metode navigasi yang tersedia.</p>
+      </td>
+    </tr>
+<!-- DEPRECATED
+    <tr>
+      <td>Screen dimensions</td>
+      <td>Examples:<br/>
+        <code>320x240</code><br/>
+        <code>640x480</code><br/>
+        etc.
+      </td>
+      <td>
+        <p>The larger dimension must be specified first. <strong>This configuration is deprecated
+and should not be used</strong>. Instead use "screen size," "wider/taller screens," and "screen
+orientation" described above.</p>
+      </td>
+    </tr>
+-->
+    <tr id="VersionQualifier">
+      <td>Versi Platform (level API)</td>
+      <td>Contoh:<br/>
+        <code>v3</code><br/>
+        <code>v4</code><br/>
+        <code>v7</code><br/>
+        dll.</td>
+      <td>
+        <p>Level API yang didukung perangkat. Misalnya, <code>v1</code> untuk API level
+1 (perangkat dengan Android 1.0 atau yang lebih tinggi) dan <code>v4</code> untuk API level 4 (perangkat dengan Android
+1.6 atau yang lebih tinggi). Lihat dokumen <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Level API Android</a> untuk informasi selengkapnya
+tentang nilai-nilai ini.</p>
+      </td>
+    </tr>
+</table>
+
+
+<p class="note"><strong>Catatan:</strong> Sebagian qualifier konfigurasi telah ditambahkan sejak Android
+1.0, jadi tidak semua versi Android mendukung semua qualifier. Menggunakan qualifier baru secara implisit
+akan menambahkan qualifier versi platform sehingga perangkat yang lebih lama pasti mengabaikannya. Misalnya, menggunakan qualifier
+<code>w600dp</code> secara otomatis akan menyertakan qualifier <code>v13</code>, karena
+qualifier lebar yang tersedia baru di API level 13. Untuk menghindari masalah, selalu sertakan satu set
+sumber daya default (satu set sumber daya <em>tanpa qualifier</em>). Untuk informasi selengkapnya, lihat
+bagian tentang <a href="#Compatibility">Menyediakan Kompatibilitas Perangkat Terbaik dengan
+Sumber Daya</a>.</p>
+
+
+
+<h3 id="QualifierRules">Aturan penamaan qualifier</h3>
+
+<p>Inilah beberapa aturan tentang penggunaan nama qualifier konfigurasi:</p>
+
+<ul>
+    <li>Anda bisa menetapkan beberapa qualifier untuk satu set sumber daya, yang dipisahkan dengan tanda hubung. Misalnya,
+<code>drawable-en-rUS-land</code> berlaku untuk perangkat bahasa Inggris-AS dalam orientasi
+lanskap.</li>
+    <li>Qualifier harus dalam urutan seperti yang tercantum dalam <a href="#table2">tabel 2</a>. 
+Misalnya:
+      <ul>
+        <li>Salah: <code>drawable-hdpi-port/</code></li>
+        <li>Benar: <code>drawable-port-hdpi/</code></li>
+      </ul>
+    </li>
+    <li>Direktori sumber daya alternatif tidak bisa digunakan. Misalnya, Anda tidak bisa memiliki
+<code>res/drawable/drawable-en/</code>.</li>
+    <li>Nilai tidak membedakan huruf besar maupun kecil.  Compiler sumber daya mengubah nama direktori
+menjadi huruf kecil sebelum pemrosesan untuk menghindari masalah pada sistem file yang membedakan
+huruf kecil dan besar. Setiap penggunaan huruf besar dalam nama hanyalah demi keterbacaan.</li>
+    <li>Hanya didukung satu nilai untuk setiap tipe qualifier. Misalnya, jika Anda ingin menggunakan
+file drawable yang sama untuk Spanyol dan Prancis, Anda <em>tidak bisa</em> memiliki direktori bernama
+<code>drawable-rES-rFR/</code>. Sebagai gantinya, Anda perlu dua direktori sumber daya, seperti
+<code>drawable-rES/</code> dan <code>drawable-rFR/</code>, berisi file yang sesuai.
+Akan tetapi, Anda tidak harus benar-benar menggandakan file yang sama di kedua lokasi. Sebagai gantinya, Anda
+bisa membuat alias ke satu sumber daya. Lihat <a href="#AliasResources">Membuat
+sumber daya alias</a> di bawah ini.</li>
+</ul>
+
+<p>Setelah Anda menyimpan sumber daya alternatif ke dalam direktori yang diberi nama dengan
+qualifier ini, Android secara otomatis menerapkan sumber daya dalam
+aplikasi Anda berdasarkan pada konfigurasi perangkat saat ini. Setiap kali sumber daya diminta, Android akan memeriksa direktori sumber daya
+alternatif berisi file sumber daya yang diminta, lalu <a href="#BestMatch">mencari sumber daya yang
+paling cocok</a>(dibahas di bawah). Jika tidak ada sumber daya alternatif yang cocok
+dengan konfigurasi perangkat tertentu, Android akan menggunakan sumber daya default terkait (set
+sumber daya untuk tipe sumber daya tertentu yang tidak termasuk qualifier
+konfigurasi).</p>
+
+
+
+<h3 id="AliasResources">Membuat sumber daya alias</h3>
+
+<p>Bila memiliki sumber daya yang ingin Anda gunakan untuk lebih dari satu konfigurasi
+perangkat (namun tidak ingin menyediakannya sebagai sumber daya default), Anda tidak perlu menempatkan sumber daya
+yang sama di lebih dari satu direktori sumber daya alternatif. Sebagai gantinya, (dalam beberapa kasus) Anda bisa membuat
+sumber daya alternatif
+yang berfungsi sebagai alias untuk sumber daya yang disimpan dalam direktori sumber daya default.</p>
+
+<p class="note"><strong>Catatan:</strong> Tidak semua sumber daya menawarkan mekanisme yang memungkinkan Anda
+membuat alias ke sumber daya lain. Khususnya, animasi, menu, raw, dan
+sumber daya lain yang tidak ditetapkan dalam direktori {@code xml/} tidak menawarkan fitur ini.</p>
+
+<p>Misalnya, bayangkan Anda memiliki ikon aplikasi {@code icon.png}, dan membutuhkan versi uniknya
+untuk lokal berbeda. Akan tetapi, dua lokal, bahasa Inggris-Kanada dan bahasa Prancis-Kanada, harus menggunakan
+versi yang sama. Anda mungkin berasumsi bahwa Anda perlu menyalin gambar
+yang sama ke dalam direktori sumber daya baik untuk bahasa Inggris-Kanada maupun bahasa Prancis-Kanada, namun
+bukan demikian. Sebagai gantinya, Anda bisa menyimpan gambar yang sama-sama digunakan sebagai {@code icon_ca.png} (nama
+apa saja selain {@code icon.png}) dan memasukkannya
+dalam direktori default {@code res/drawable/}. Lalu buat file {@code icon.xml} dalam {@code
+res/drawable-en-rCA/} dan {@code res/drawable-fr-rCA/} yang mengacu ke sumber daya {@code icon_ca.png}
+yang menggunakan elemen {@code &lt;bitmap&gt;}. Hal ini memungkinkan Anda menyimpan satu versi saja dari
+file PNG dan dua file XML kecil yang menunjuk ke sana. (Contoh file XML ditampilkan di bawah.)</p>
+
+
+<h4>Drawable</h4>
+
+<p>Untuk membuat alias ke drawable yang ada, gunakan elemen {@code &lt;bitmap&gt;}.
+Misalnya:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/icon_ca" />
+</pre>
+
+<p>Jika Anda menyimpan file ini sebagai {@code icon.xml} (dalam direktori sumber daya alternatif, seperti
+{@code res/drawable-en-rCA/}), maka file akan dikompilasi menjadi sumber daya yang dapat Anda acu
+sebagai {@code R.drawable.icon}, namun sebenarnya merupakan alias untuk sumber daya {@code
+R.drawable.icon_ca} (yang disimpan dalam {@code res/drawable/}).</p>
+
+
+<h4>Layout</h4>
+
+<p>Untuk membuat alias ke layout yang ada, gunakan elemen {@code &lt;include&gt;},
+yang dibungkus dalam {@code &lt;merge&gt;}. Misalnya:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;merge>
+    &lt;include layout="@layout/main_ltr"/>
+&lt;/merge>
+</pre>
+
+<p>Jika Anda menyimpan file ini sebagai {@code main.xml}, file akan dikompilasi menjadi sumber daya yang dapat Anda acu
+sebagai {@code R.layout.main}, namun sebenarnya merupakan alias untuk sumber daya {@code R.layout.main_ltr}
+.</p>
+
+
+<h4>String dan nilai-nilai sederhana lainnya</h4>
+
+<p>Untuk membuat alias ke string yang ada, cukup gunakan ID sumber daya
+dari string yang diinginkan sebagai nilai untuk string baru. Misalnya:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;string name="hello">Hello&lt;/string>
+    &lt;string name="hi">@string/hello&lt;/string>
+&lt;/resources>
+</pre>
+
+<p>Sumber daya {@code R.string.hi} sekarang merupakan alias untuk {@code R.string.hello}.</p>
+
+<p> <a href="{@docRoot}guide/topics/resources/more-resources.html">Nilai sederhana lainnya</a> sama
+cara kerjanya. Misalnya, sebuah warna:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;color name="yellow">#f00&lt;/color>
+    &lt;color name="highlight">@color/red&lt;/color>
+&lt;/resources>
+</pre>
+
+
+
+
+<h2 id="Compatibility">Menyediakan Kompatibilitas Perangkat Terbaik dengan Sumber Daya</h2>
+
+<p>Agar aplikasi Anda mendukung beberapa konfigurasi perangkat,
+Anda harus selalu menyediakan sumber daya default untuk setiap tipe sumber daya yang menggunakan aplikasi Anda.</p>
+
+<p>Misalnya, jika aplikasi Anda mendukung beberapa bahasa, sertakan selalu direktori {@code
+values/} (tempat string Anda disimpan) <em>tanpa</em> <a href="#LocaleQualifier">qualifier bahasa dan wilayah</a>. Jika sebaliknya Anda menempatkan semua file
+string dalam direktori yang memiliki qualifier bahasa dan wilayah, maka aplikasi Anda akan crash saat berjalan
+pada perangkat yang telah diatur ke bahasa yang tidak didukung string Anda. Namun asalkan Anda menyediakan sumber daya default
+{@code values/}, aplikasi akan berjalan lancar (meskipun pengguna
+tidak memahami bahasa itu&mdash;, ini lebih baik daripada crash).</p>
+
+<p>Demikian pula, jika Anda menyediakan sumber daya layout berbeda berdasarkan orientasi layar, Anda harus
+memilih satu orientasi sebagai default. Misalnya, sebagai ganti menyediakan sumber daya dalam {@code
+layout-land/} untuk lanskap dan {@code layout-port/} untuk potret, biarkan salah satu sebagai default, seperti
+{@code layout/} untuk lanskap dan {@code layout-port/} untuk potret.</p>
+
+<p>Sumber daya default perlu disediakan bukan hanya karena aplikasi mungkin berjalan pada
+konfigurasi yang belum Anda antisipasi, namun juga karena versi baru Android terkadang menambahkan 
+qualifier konfigurasi yang tidak didukung oleh versi lama. Jika Anda menggunakan qualifier sumber daya baru,
+namun mempertahankan kompatibilitas kode dengan versi Android yang lebih lama, maka saat versi lama
+Android menjalankan aplikasi, aplikasi itu akan crash jika Anda tidak menyediakan sumber daya default, aplikasi
+tidak bisa menggunakan sumber daya yang dinamai dengan qualifier baru. Misalnya, jika <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code
+minSdkVersion}</a> Anda diatur ke 4, dan Anda memenuhi syarat semua sumber daya drawable dengan menggunakan <a href="#NightQualifier">mode malam</a> ({@code night} atau {@code notnight}, yang ditambahkan di API
+Level 8), maka perangkat API level 4 tidak bisa mengakses sumber daya drawable dan akan crash. Dalam hal
+ini, Anda mungkin ingin {@code notnight} menjadi sumber daya default, jadi Anda harus mengecualikan
+qualifier itu agar sumber daya drawable Anda ada dalam {@code drawable/} atau {@code drawable-night/}.</p>
+
+<p>Jadi, agar bisa menyediakan kompatibilitas perangkat terbaik, sediakan selalu sumber daya
+default untuk sumber daya yang diperlukan aplikasi Anda untuk berjalan dengan benar. Selanjutnya buatlah sumber daya
+alternatif untuk konfigurasi perangkat tertentu dengan menggunakan qualifier konfigurasi.</p>
+
+<p>Ada satu eksepsi untuk aturan ini: Jika <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> aplikasi Anda adalah 4 atau
+lebih, Anda <em>tidak</em> memerlukan sumber daya drawable default saat menyediakan sumber daya
+drawable alternatif dengan qualifier <a href="#DensityQualifier">densitas layar</a>. Tanpa sumber daya
+drawable default sekali pun, Android bisa menemukan yang paling cocok di antara densitas layar alternatif dan menskalakan
+bitmap sesuai kebutuhan. Akan tetapi, demi pengalaman terbaik pada semua jenis perangkat, Anda harus
+menyediakan drawable alternatif untuk ketiga tipe densitas.</p>
+
+
+
+<h2 id="BestMatch">Cara Android Menemukan Sumber Daya yang Paling Cocok</h2>
+
+<p>Saat Anda meminta sumber daya yang Anda berikan alternatifnya, Android akan memilih
+sumber daya alternatif yang akan digunakan saat runtime, bergantung pada konfigurasi perangkat saat ini. Untuk
+mendemonstrasikan cara Android memilih sumber daya alternatif, anggaplah direktori drawable berikut
+masing-masing berisi versi berbeda dari gambar yang sama:</p>
+
+<pre class="classic no-pretty-print">
+drawable/
+drawable-en/
+drawable-fr-rCA/
+drawable-en-port/
+drawable-en-notouch-12key/
+drawable-port-ldpi/
+drawable-port-notouch-12key/
+</pre>
+
+<p>Dan anggaplah yang berikut ini merupakan konfigurasi perangkatnya:</p>
+
+<p style="margin-left:1em;">
+Lokal = <code>en-GB</code> <br/>
+Orientasi layar = <code>port</code> <br/>
+Densitas piksel layar = <code>hdpi</code> <br/>
+Tipe layar sentuh = <code>notouch</code> <br/>
+Metode input teks utama = <code>12key</code>
+</p>
+
+<p>Dengan membandingkan konfigurasi perangkat dengan sumber daya alternatif yang tersedia, Android akan memilih
+drawable dari {@code drawable-en-port}.</p>
+
+<p>Sistem akan menentukan keputusannya mengenai sumber daya yang akan digunakan dengan logika
+berikut:</p>
+
+
+<div class="figure" style="width:371px">
+<img src="{@docRoot}images/resources/res-selection-flowchart.png" alt="" height="471" />
+<p class="img-caption"><strong>Gambar 2.</strong> Bagan alur cara Android menemukan
+sumber daya yang paling cocok.</p>
+</div>
+
+
+<ol>
+  <li>Menghapus file sumber daya yang bertentangan dengan konfigurasi perangkat.
+    <p>Direktori <code>drawable-fr-rCA/</code> dihapus karena bertentangan
+dengan lokal <code>en-GB</code>.</p>
+<pre class="classic no-pretty-print">
+drawable/
+drawable-en/
+<strike>drawable-fr-rCA/</strike>
+drawable-en-port/
+drawable-en-notouch-12key/
+drawable-port-ldpi/
+drawable-port-notouch-12key/
+</pre>
+<p class="note"><strong>Eksepsi:</strong> Densitas piksel layar adalah satu qualifier yang
+tidak dihapus karena bertentangan. Meskipun densitas layar perangkat adalah hdpi,
+<code>drawable-port-ldpi/</code> tidak dihapus karena setiap densitas layar
+dianggap cocok untuk saat ini. Informasi selengkapnya tersedia dalam dokumen <a href="{@docRoot}guide/practices/screens_support.html">Mendukung Beberapa
+Layar</a>.</p></li>
+
+  <li>Pilih qualifier berkedudukan tertinggi (berikutnya) dalam daftar (<a href="#table2">tabel 2</a>).
+(Mulai dengan MCC, lalu pindah ke bawah.) </li>
+  <li>Apakah salah satu direktori sumber daya menyertakan qualifier ini?  </li>
+    <ul>
+      <li>Jika Tidak, kembali ke langkah 2 dan lihat qualifier berikutnya. (Dalam contoh,
+jawabannya adalah "tidak" hingga qualifier bahasa tercapai.)</li>
+      <li>Jika Ya, lanjutkan ke langkah 4.</li>
+    </ul>
+  </li>
+
+  <li>Hapus direktori sumber daya yang tidak menyertakan qualifier ini. Dalam contoh, sistem
+menghapus semua direktori yang tidak menyertakan qualifier bahasa:</li>
+<pre class="classic no-pretty-print">
+<strike>drawable/</strike>
+drawable-en/
+drawable-en-port/
+drawable-en-notouch-12key/
+<strike>drawable-port-ldpi/</strike>
+<strike>drawable-port-notouch-12key/</strike>
+</pre>
+<p class="note"><strong>Eksepsi:</strong> Jika qualifier yang dimaksud adalah densitas piksel layar,
+Android akan memilih opsi yang paling cocok dengan densitas layar perangkat.
+Secara umum, Android lebih suka menurunkan skala gambar asli yang lebih besar daripada menaikkan skala
+atas gambar asli yang lebih kecil. Lihat <a href="{@docRoot}guide/practices/screens_support.html">Mendukung Beberapa
+Layar</a>.</p>
+  </li>
+
+  <li>Kembali dan ulangi langkah 2, 3, dan 4 hingga tersisa satu direktori. Dalam contoh ini, orientasi
+layar adalah qualifier berikutnya yang memiliki kecocokan. 
+Jadi, sumber daya yang tidak menetapkan orientasi layar akan dihapus:
+<pre class="classic no-pretty-print">
+<strike>drawable-en/</strike>
+drawable-en-port/
+<strike>drawable-en-notouch-12key/</strike>
+</pre>
+<p>Direktori yang tersisa adalah {@code drawable-en-port}.</p>
+  </li>
+</ol>
+
+<p>Meskipun prosedur dijalankan untuk setiap sumber daya yang diminta, sistem akan mengoptimalkan beberapa aspek
+lebih lanjut. Satu optimalisasi tersebut adalah bahwa setelah konfigurasi perangkat diketahui, sistem mungkin
+akan menghapus sumber daya alternatif yang sama sekali tidak cocok. Misalnya, jika bahasa konfigurasi
+adalah bahasa Inggris ("en"), maka setiap direktori sumber daya yang memiliki qualifier bahasa akan diatur ke
+selain bahasa Inggris tidak akan pernah disertakan dalam pool sumber daya yang diperiksa (meskipun
+direktori sumber daya <em>tanpa</em> qualifier bahasa masih disertakan).</p>
+
+<p>Saat memilih sumber daya berdasarkan qualifier ukuran layar, sistem akan menggunakan
+sumber daya yang didesain untuk layar yang lebih kecil daripada layar saat ini jika tidak ada sumber daya yang lebih cocok
+(misalnya, layar ukuran besar akan menggunakan sumber daya layar ukuran normal jika diperlukan). Akan tetapi,
+jika satu-satunya sumber daya yang tersedia <em>lebih besar</em> daripada layar saat ini, sistem
+<strong>tidak</strong> akan menggunakannya dan aplikasi Anda akan crash jika tidak ada sumber daya lain yang cocok dengan konfigurasi
+perangkat (misalnya, jika semua sumber daya layout ditandai dengan qualifier {@code xlarge},
+namun perangkat memiliki ukuran layar normal).</p>
+
+<p class="note"><strong>Catatan:</strong> <em>Kedudukan</em> qualifier (dalam <a href="#table2">tabel 2</a>) lebih penting
+daripada jumlah qualifier yang benar-benar pas dengan perangkat. Misalnya, dalam langkah 4 di atas, pilihan
+terakhir pada daftar berisi tiga qualifier yang bebar-benar cocok dengan perangkat (orientasi, tipe
+layar sentuh, dan metode input), sementara <code>drawable-en</code> hanya memiliki satu parameter yang cocok
+(bahasa). Akan tetapi, bahasa memiliki kedudukan lebih tinggi dari pada qualifier lainnya, sehingga
+<code>drawable-port-notouch-12key</code> tidak masuk.</p>
+
+<p>Untuk mengetahui selengkapnya tentang cara menggunakan sumber daya dalam aplikasi, lanjutkan ke <a href="accessing-resources.html">Mengakses Sumber Daya</a>.</p>
diff --git a/docs/html-intl/intl/in/guide/topics/resources/runtime-changes.jd b/docs/html-intl/intl/in/guide/topics/resources/runtime-changes.jd
new file mode 100644
index 0000000..c9a5ead
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/resources/runtime-changes.jd
@@ -0,0 +1,281 @@
+page.title=Menangani Perubahan Runtime
+page.tags=aktivitas,daur hidup
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>Dalam dokumen ini</h2>
+  <ol>
+    <li><a href="#RetainingAnObject">Mempertahankan Objek Selama Perubahan Konfigurasi</a></li>
+    <li><a href="#HandlingTheChange">Menangani Sendiri Perubahan Konfigurasi</a>
+  </ol>
+
+  <h2>Lihat juga</h2>
+  <ol>
+    <li><a href="providing-resources.html">Menyediakan Sumber Daya</a></li>
+    <li><a href="accessing-resources.html">Mengakses Sumber Daya</a></li>
+    <li><a href="http://android-developers.blogspot.com/2009/02/faster-screen-orientation-change.html">Perubahan
+ Orientasi Layar yang Lebih Cepat</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Sebagian konfigurasi perangkat bisa berubah selama runtime
+(seperti orientasi layar, ketersediaan keyboard, dan bahasa). Saat perubahan demikian terjadi,
+Android akan me-restart
+{@link android.app.Activity} yang berjalan ({@link android.app.Activity#onDestroy()} dipanggil, diikuti oleh {@link
+android.app.Activity#onCreate(Bundle) onCreate()}). Perilaku restart didesain untuk membantu
+aplikasi Anda beradaptasi dengan konfigurasi baru melalui pemuatan kembali aplikasi Anda secara otomatis dengan
+sumber daya alternatif sumber yang sesuai dengan konfigurasi perangkat baru.</p>
+
+<p>Untuk menangani restart dengan benar, aktivitas Anda harus mengembalikan
+statusnya seperti semula melalui <a href="{@docRoot}guide/components/activities.html#Lifecycle">Daur hidup
+aktivitas</a> normal, dalam hal ini Android akan memanggil
+{@link android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()} sebelum menghentikan
+aktivitas Anda sehingga Anda dapat menyimpan data mengenai status aplikasi. Selanjutnya Anda bisa mengembalikan status
+selama {@link android.app.Activity#onCreate(Bundle) onCreate()} atau {@link
+android.app.Activity#onRestoreInstanceState(Bundle) onRestoreInstanceState()}.</p>
+
+<p>Untuk menguji bahwa aplikasi me-restart sendiri dengan status tak berubah, Anda harus
+memanggil perubahan konfigurasi (seperti mengubah orientasi layar) saat melakukan berbagai
+tugas dalam aplikasi. Aplikasi Anda harus dapat me-restart setiap saat tanpa kehilangan
+data pengguna atau status untuk menangani kejadian seperti perubahan konfigurasi atau bila pengguna menerima panggilan telepon
+masuk lalu kembali ke aplikasi setelah proses
+aplikasi Anda dimusnahkan. Untuk mengetahui cara mengembalikan status aktivitas, bacalah tentang <a href="{@docRoot}guide/components/activities.html#Lifecycle">Daur hidup aktivitas</a>.</p>
+
+<p>Akan tetapi, Anda mungkin menemui situasi ketika me-restart aplikasi dan
+mengembalikan data dalam jumlah besar malah menjadi mahal dan menghasilkan pengalaman pengguna yang buruk. Dalam situasi
+demikian, Anda memiliki dua opsi lain:</p>
+
+<ol type="a">
+  <li><a href="#RetainingAnObject">Mempertahankan objek selama perubahan konfigurasi</a>
+  <p>Izinkan aktivitas Anda me-restart saat konfigurasi berubah, namun bawa objek
+berstatus (stateful) ke instance baru aktivitas Anda.</p>
+
+  </li>
+  <li><a href="#HandlingTheChange">Menangani sendiri perubahan konfigurasi</a>
+  <p>Cegah sistem me-restart aktivitas selama perubahan konfigurasi
+tertentu, namun terima callback saat konfigurasi benar-benar berubah, agar Anda bisa memperbarui
+aktivitas secara manual bila diperlukan.</p>
+  </li>
+</ol>
+
+
+<h2 id="RetainingAnObject">Mempertahankan Objek Selama Perubahan Konfigurasi</h2>
+
+<p>Jika me-restart aktivitas mengharuskan pemulihan seperangkat data dalam jumlah besar, menghubungkan kembali koneksi
+jaringan, atau melakukan operasi intensif lainnya, maka restart penuh karena perubahan konfigurasi mungkin
+menjadi pengalaman pengguna yang lambat. Selain itu, Anda mungkin tidak bisa sepenuhnya mengembalikan status
+aktivitas dengan {@link android.os.Bundle} yang disimpan sistem untuk Anda dengan callback {@link
+android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()}&mdash;itu tidaklah
+didesain untuk membawa objek besar (seperti bitmap) dan data di dalamnya harus diserialkan kemudian
+dinon-serialkan, yang bisa menghabiskan banyak memori dan membuat perubahan konfigurasi menjadi lambat. Dalam situasi
+demikian, Anda bisa meringankan beban memulai kembali aktivitas Anda dengan mempertahankan {@link
+android.app.Fragment} saat aktivitas Anda di-restart karena perubahan konfigurasi. Fragmen ini
+bisa berisi acuan ke objek stateful yang ingin Anda pertahankan.</p>
+
+<p>Bila sistem Android menghentikan aktivitas Anda karena perubahan konfigurasi, fragmen
+aktivitas yang telah ditandai untuk dipertahankan tidak akan dimusnahkan. Anda dapat menambahkan fragmen tersebut ke
+aktivitas untuk mempertahankan objek stateful.</p>
+
+<p>Untuk mempertahankan objek stateful dalam fragmen selama perubahan konfigurasi runtime:</p>
+
+<ol>
+  <li>Perluas kelas {@link android.app.Fragment} dan deklarasikan referensi ke objek stateful 
+Anda.</li>
+  <li>Panggil {@link android.app.Fragment#setRetainInstance(boolean)} saat fragmen dibuat.
+      </li>
+  <li>Tambahkan fragmen ke aktivitas.</li>
+  <li>Gunakan {@link android.app.FragmentManager} untuk mengambil fragmen saat aktivitas 
+di-restart.</li>
+</ol>
+
+<p>Misalnya, definisikan fragmen sebagai berikut:</p>
+
+<pre>
+public class RetainedFragment extends Fragment {
+
+    // data object we want to retain
+    private MyDataObject data;
+
+    // this method is only called once for this fragment
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // retain this fragment
+        setRetainInstance(true);
+    }
+
+    public void setData(MyDataObject data) {
+        this.data = data;
+    }
+
+    public MyDataObject getData() {
+        return data;
+    }
+}
+</pre>
+
+<p class="caution"><strong>Perhatian:</strong> Meskipun bisa menyimpan objek apa saja, Anda
+sama sekali tidak boleh meneruskan objek yang terkait dengan {@link android.app.Activity}, seperti {@link
+android.graphics.drawable.Drawable}, {@link android.widget.Adapter}, {@link android.view.View}
+atau objek lainnya mana pun yang terkait dengan {@link android.content.Context}. Jika Anda melakukannya, hal tersebut akan
+membocorkan semua tampilan dan sumber daya instance aktivitas semula. (Sumber daya yang bocor
+berarti bahwa aplikasi Anda tetap menyimpannya dan tidak bisa dijadikan kumpulan sampah, sehingga bisa banyak
+memori yang hilang.)</p>
+
+<p>Selanjutnya gunakan {@link android.app.FragmentManager} untuk menambahkan fragmen ke aktivitas. 
+Anda bisa memperoleh objek data dari fragmen saat aktivitas memulai kembali selama perubahan 
+konfigurasi runtime. Misalnya, definisikan aktivitas Anda sebagai berikut:</p>
+
+<pre>
+public class MyActivity extends Activity {
+
+    private RetainedFragment dataFragment;
+
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+
+        // find the retained fragment on activity restarts
+        FragmentManager fm = getFragmentManager();
+        dataFragment = (DataFragment) fm.findFragmentByTag(“data”);
+
+        // create the fragment and data the first time
+        if (dataFragment == null) {
+            // add the fragment
+            dataFragment = new DataFragment();
+            fm.beginTransaction().add(dataFragment, “data”).commit();
+            // load the data from the web
+            dataFragment.setData(loadMyData());
+        }
+
+        // the data is available in dataFragment.getData()
+        ...
+    }
+
+    &#64;Override
+    public void onDestroy() {
+        super.onDestroy();
+        // store the data in the fragment
+        dataFragment.setData(collectMyLoadedData());
+    }
+}
+</pre>
+
+<p>Dalam contoh ini, {@link android.app.Activity#onCreate(Bundle) onCreate()} menambahkan fragmen
+atau mengembalikan referensinya. {@link android.app.Activity#onCreate(Bundle) onCreate()} juga
+menyimpan objek stateful dalam instance fragmen.
+{@link android.app.Activity#onDestroy() onDestroy()} akan memperbarui objek stateful dalam
+instance fragmen yang dipertahankan.</p>
+
+
+
+
+
+<h2 id="HandlingTheChange">Menangani Sendiri Perubahan Konfigurasi</h2>
+
+<p>Jika aplikasi Anda tidak memerlukan pembaruan sumber daya selama perubahan konfigurasi
+tertentu <em>dan</em> Anda memiliki keterbatasan kinerja yang mengharuskan Anda untuk
+menghindari restart aktivitas, maka Anda bisa mendeklarasikan agar aktivitas Anda menangani sendiri perubahan
+konfigurasinya, sehingga mencegah sistem me-restart aktivitas.</p>
+
+<p class="note"><strong>Catatan:</strong> Menangani sendiri perubahan konfigurasi bisa jauh lebih
+mempersulit penggunaan sumber daya alternatif, karena sistem tidak menerapkannya secara otomatis
+untuk Anda. Teknik ini harus dianggap sebagai usaha terakhir bila Anda harus menghindari restart
+karena perubahan konfigurasi dan tidak disarankan untuk sebagian besar aplikasi.</p>
+
+<p>Untuk mendeklarasikan agar aktivitas Anda menangani perubahan konfigurasi, edit elemen <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> yang sesuai
+dalam file manifes Anda agar menyertakan atribut <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> dengan nilai yang mewakili konfigurasi yang ingin
+ditangani. Nilai yang memungkinkan tercantum dalam dokumentasi untuk atribut <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> (nilai paling sering digunakan adalah {@code "orientation"} untuk
+mencegah restart saat orientasi layar berubah dan {@code "keyboardHidden"} untuk mencegah
+restart saat ketersediaan keyboard berubah).  Anda dapat mendeklarasikan beberapa nilai konfigurasi
+dalam atribut dengan memisahkannya menggunakan karakter pipa {@code |}.</p>
+
+<p>Misalnya, kode manifes berikut menyatakan aktivitas yang menangani
+perubahan orientasi layar maupun perubahan ketersediaan keyboard:</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"
+          android:configChanges="orientation|keyboardHidden"
+          android:label="@string/app_name">
+</pre>
+
+<p>Sekarang, bila salah satu konfigurasi ini berubah, {@code MyActivity} tidak akan me-restart.
+Sebagai gantinya, {@code MyActivity} akan menerima panggilan ke {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}. Metode ini
+meneruskan objek {@link android.content.res.Configuration} yang menetapkan
+konfigurasi perangkat baru. Dengan membaca bidang-bidang dalam {@link android.content.res.Configuration},
+Anda dapat menentukan konfigurasi baru dan membuat perubahan yang sesuai dengan memperbarui
+sumber daya yang digunakan dalam antarmuka. Pada saat
+metode ini dipanggil, objek {@link android.content.res.Resources} aktivitas Anda akan diperbarui untuk
+mengembalikan sumber daya berdasarkan konfigurasi baru, jadi Anda bisa dengan mudah
+me-reset elemen UI tanpa membuat sistem me-restart aktivitas Anda.</p>
+
+<p class="caution"><strong>Perhatian:</strong> Mulai Android 3.2 (API level 13), <strong>
+"ukuran layar" juga berubah</strong> bila perangkat beralih orientasi antara potret
+dan lanskap. Jadi jika Anda tidak ingin runtime di-restart karena perubahan orientasi saat mengembangkan
+API level 13 atau yang lebih tinggi (sebagaimana dideklarasikan oleh atribut <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> dan <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a>
+), Anda harus menyertakan nilai {@code "screenSize"} selain nilai {@code
+"orientation"}. Yaitu Anda harus mendeklarasikan {@code
+android:configChanges="orientation|screenSize"}. Akan tetapi, jika aplikasi Anda menargetkan API level
+12 atau yang lebih rendah, maka aktivitas Anda akan selalu menangani sendiri perubahan konfigurasi ini (perubahan
+konfigurasi ini tidak me-restart aktivitas Anda, bahkan saat berjalan pada perangkat Android 3.2 atau yang lebih tinggi).</p>
+
+<p>Misalnya, implementasi {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} berikut akan
+memeriksa orientasi perangkat saat ini:</p>
+
+<pre>
+&#64;Override
+public void onConfigurationChanged(Configuration newConfig) {
+    super.onConfigurationChanged(newConfig);
+
+    // Checks the orientation of the screen
+    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
+        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
+    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
+        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
+    }
+}
+</pre>
+
+<p>Objek {@link android.content.res.Configuration} mewakili semua konfigurasi
+saat ini, tidak hanya konfigurasi yang telah berubah. Seringkali Anda tidak perlu memperhatikan dengan persis bagaimana
+konfigurasi berubah dan cukup menetapkan kembali semua sumber daya yang memberikan alternatif untuk
+konfigurasi sedang ditangani. Misalnya, karena objek {@link
+android.content.res.Resources} sekarang diperbarui, Anda dapat me-reset
+setiap {@link android.widget.ImageView} dengan {@link android.widget.ImageView#setImageResource(int)
+setImageResource()}
+dan sumber daya yang sesuai untuk konfigurasi baru yang digunakan (seperti dijelaskan dalam <a href="providing-resources.html#AlternateResources">Menyediakan Sumber Daya</a>).</p>
+
+<p>Perhatikan bahwa nilai-nilai dari bidang {@link
+android.content.res.Configuration} adalah integer yang sesuai dengan konstanta spesifik
+dari kelas {@link android.content.res.Configuration}. Untuk dokumentasi tentang konstanta
+yang harus digunakan di setiap bidang, lihat bidang yang sesuai dalam referensi {@link
+android.content.res.Configuration}.</p>
+
+<p class="note"><strong>Ingatlah:</strong> Saat mendeklarasikan aktivitas untuk menangani perubahan
+konfigurasi, Anda bertanggung jawab untuk me-reset setiap elemen yang alternatifnya Anda berikan. Jika Anda
+mendeklarasikan aktivitas untuk menangani perubahan orientasi dan memiliki gambar yang harus berubah
+antara lanskap dan potret, Anda harus menetapkan kembali setiap sumber daya elemen selama {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}.</p>
+
+<p>Jika Anda tidak perlu memperbarui aplikasi berdasarkan perubahan
+konfigurasi ini, sebagai gantinya Anda bisa saja <em>tidak</em> mengimplementasikan {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}. Dalam
+hal ini, semua sumber daya yang digunakan sebelum perubahan konfigurasi akan tetap digunakan
+dan Anda hanya menghindari restart aktivitas. Akan tetapi, aplikasi Anda harus selalu
+bisa dimatikan dan di-restart dengan status sebelumnya tetap utuh, sehingga Anda jangan menganggap teknik
+ini sebagai jalan keluar untuk mempertahankan status selama daur hidup aktivitas normal. Tidak hanya
+karena ada perubahan konfigurasi lainnya yang tidak bisa Anda cegah untuk me-restart aplikasi, namun
+juga karena Anda harus menangani kejadian seperti saat pengguna meninggalkan aplikasi dan
+dimusnahkan sebelum pengguna kembali ke aplikasi.</p>
+
+<p>Untuk informasi selengkapnya tentang perubahan konfigurasi yang bisa Anda tangani dalam aktivitas, lihat dokumentasi <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> dan kelas {@link android.content.res.Configuration}
+.</p>
diff --git a/docs/html-intl/intl/in/guide/topics/ui/controls.jd b/docs/html-intl/intl/in/guide/topics/ui/controls.jd
new file mode 100644
index 0000000..7ee2957
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/ui/controls.jd
@@ -0,0 +1,90 @@
+page.title=Kontrol Input
+parent.title=Antarmuka Pengguna
+parent.link=index.html
+@jd:body
+
+<div class="figure" style="margin:0">
+  <img src="{@docRoot}images/ui/ui-controls.png" alt="" style="margin:0" />
+</div>
+
+<p>Kontrol input adalah komponen interaktif dalam antarmuka pengguna aplikasi Anda. Android menyediakan
+aneka ragam kontrol yang bisa Anda gunakan dalam UI, seperti tombol, bidang teks, bilah pencarian,
+kotak cek, tombol zoom, tombol toggle, dan masih banyak lagi.</p>
+
+<p>Menambahkan sebuah kontrol input ke UI adalah semudah menambahkan satu elemen XML ke <a href="{@docRoot}guide/topics/ui/declaring-layout.html">layout XML</a>. Misalnya, inilah sebuah
+layout dengan satu bidang teks dan satu tombol:</p>
+
+<pre style="clear:right">
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="horizontal">
+    &lt;EditText android:id="@+id/edit_message"
+        android:layout_weight="1"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:hint="@string/edit_message" />
+    &lt;Button android:id="@+id/button_send"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/button_send"
+        android:onClick="sendMessage" />
+&lt;/LinearLayout>
+</pre>
+
+<p>Tiap kontrol input mendukung satu set kejadian input sehingga Anda bisa menangani berbagai kejadian seperti saat
+pengguna memasukkan teks atau menyentuh tombol.</p>
+
+
+<h2 id="CommonControls">Kontrol Umum</h2>
+<p>Berikut adalah daftar beberapa kontrol umum yang bisa Anda gunakan dalam aplikasi. Ikuti tautan ini untuk mengetahui
+selengkapnya tentang penggunaannya masing-masing.</p>
+
+<p class="note"><strong>Catatan:</strong> Android menyediakan beberapa kontrol lain yang tidak tercantum
+di sini. Telusuri paket {@link android.widget} untuk mengetahui selengkapnya. Jika aplikasi Anda memerlukan
+semacam kontrol input tertentu, Anda bisa membangun <a href="{@docRoot}guide/topics/ui/custom-components.html">komponen custom</a> sendiri.</p>
+
+<table>
+    <tr>
+        <th scope="col">Tipe Kontrol</th>
+        <th scope="col">Keterangan</th>
+	<th scope="col">Kelas Terkait</th>
+    </tr>
+    <tr>
+        <td><a href="controls/button.html">Tombol</a></td>
+        <td>Tombol tekan yang bisa ditekan, atau diklik, oleh pengguna untuk melakukan suatu tindakan.</td>
+	<td>{@link android.widget.Button Button} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/text.html">Bidang teks</a></td>
+        <td>Bidang teks yang bisa diedit. Anda bisa menggunakan widget <code>AutoCompleteTextView</code> untuk membuat widget entri teks yang menyediakan saran pelengkapan otomatis</td>
+	<td>{@link android.widget.EditText EditText}, {@link android.widget.AutoCompleteTextView}</td>
+    </tr>
+    <tr>
+        <td><a href="controls/checkbox.html">Kotak cek</a></td>
+        <td>Switch aktif/nonaktif yang bisa diubah oleh pengguna. Anda harus menggunakan kotak cek saat menampilkan sekumpulan opsi yang bisa dipilih pengguna dan bila keduanya mungkin terjadi bersamaan.</td>
+	<td>{@link android.widget.CheckBox CheckBox} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/radiobutton.html">Tombol radio</a></td>
+        <td>Mirip dengan kotak cek, hanya saja cuma satu opsi yang bisa dipilih dalam kumpulan tersebut.</td>
+	<td>{@link android.widget.RadioGroup RadioGroup} 
+	<br>{@link android.widget.RadioButton RadioButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/togglebutton.html" style="white-space:nowrap">Tombol toggle</a></td>
+        <td>Tombol aktif/nonaktif dengan indikator cahaya.</td>
+	<td>{@link android.widget.ToggleButton ToggleButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/spinner.html">Spinner</a></td>
+        <td>Daftar tarik-turun yang memungkinkan pengguna memilih salah satu dari serangkaian nilai.</td>
+	<td>{@link android.widget.Spinner Spinner} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/pickers.html">Picker</a></td>
+        <td>Dialog bagi pengguna untuk memilih satu nilai dari satu kumpulan dengan menggunakan tombol naik/turun atau dengan gerakan mengusap. Gunakan widget <code>DatePicker</code>code&gt; untuk memasukkan nilai tanggal (bulan, hari, tahun) atau widget <code>TimePicker</code> untuk memasukkan nilai waktu (jam, menit, AM/PM), yang akan diformat secara otomatis untuk lokasi pengguna tersebut.</td>
+	<td>{@link android.widget.DatePicker}, {@link android.widget.TimePicker}</td>
+    </tr>
+</table>
diff --git a/docs/html-intl/intl/in/guide/topics/ui/declaring-layout.jd b/docs/html-intl/intl/in/guide/topics/ui/declaring-layout.jd
new file mode 100644
index 0000000..83ff746
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/ui/declaring-layout.jd
@@ -0,0 +1,492 @@
+page.title=Layout
+page.tags=view,viewgroup
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Dalam dokumen ini</h2>
+<ol>
+  <li><a href="#write">Tulis XML</a></li>
+  <li><a href="#load">Muat Sumber Daya XML</a></li>
+  <li><a href="#attributes">Atribut</a>
+    <ol>
+      <li><a href="#id">ID</a></li>
+      <li><a href="#layout-params">Parameter Layout</a></li>
+    </ol>
+  </li>
+  <li><a href="#Position">Posisi Layout</a></li>
+  <li><a href="#SizePaddingMargins">Ukuran, Pengisi, dan Margin</a></li>
+  <li><a href="#CommonLayouts">Layout Umum</a></li>
+  <li><a href="#AdapterViews">Membangun Layout dengan Adaptor</a>
+    <ol>
+      <li><a href="#FillingTheLayout">Mengisi tampilan adaptor dengan data</a></li>
+      <li><a href="#HandlingUserSelections">Menangani kejadian klik</a></li>
+    </ol>
+  </li>
+</ol>
+
+  <h2>Kelas-kelas utama</h2>
+  <ol>
+    <li>{@link android.view.View}</li>
+    <li>{@link android.view.ViewGroup}</li>
+    <li>{@link android.view.ViewGroup.LayoutParams}</li>
+  </ol>
+
+  <h2>Lihat juga</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/firstapp/building-ui.html">Membangun Antarmuka Pengguna
+Sederhana</a></li> </div>
+</div>
+
+<p>Layout mendefinisikan struktur visual untuk antarmuka pengguna, seperti UI sebuah <a href="{@docRoot}guide/components/activities.html">aktivitas</a> atau <a href="{@docRoot}guide/topics/appwidgets/index.html">widget aplikasi</a>.
+Anda dapat mendeklarasikan layout dengan dua cara:</p>
+<ul>
+<li><strong>Deklarasikan elemen UI dalam XML</strong>. Android menyediakan sebuah kosakata XML
+sederhana yang sesuai dengan kelas dan subkelas View, seperti halnya untuk widget dan layout.</li>
+<li><strong>Buat instance elemen layout saat runtime</strong>. Aplikasi Anda
+bisa membuat objek View dan ViewGroup (dan memanipulasi propertinya) lewat program. </li>
+</ul>
+
+<p>Kerangka kerja Android memberi Anda fleksibilitas untuk menggunakan salah satu atau kedua metode ini guna mendeklarasikan dan mengelola UI aplikasi Anda. Misalnya, Anda bisa mendeklarasikan layout default aplikasi Anda dalam XML, termasuk elemen-elemen layar yang akan muncul di dalamnya dan di propertinya. Anda nanti bisa menambahkan kode dalam aplikasi yang akan memodifikasi status objek layar, termasuk yang dideklarasikan dalam XML, saat runtime. </p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <ul>
+  <li><a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT
+  Plugin for Eclipse</a> menawarkan preview layout XML &mdash;
+ Anda dengan file XML yang dibuka, pilih tab <strong>Layout</strong>.</li>
+  <li>Anda juga harus mencoba alat
+  <a href="{@docRoot}tools/debugging/debugging-ui.html#hierarchyViewer">Hierarchy Viewer</a>,
+ untuk merunut layout &mdash; alat ini akan menampilkan nilai-nilai properti layout,
+  menggambar bentuk kerangka dengan indikator pengisi/margin, dan tampilan yang dirender penuh selagi
+  Anda merunut pada emulator atau perangkat.</li>
+  <li>Alat <a href="{@docRoot}tools/debugging/debugging-ui.html#layoutopt">layoutopt</a> memungkinkan
+  Anda menganalisis layout dan hierarki dengan untuk mengetahui ketidakefisienan atau masalah lainnya.</li>
+</div>
+</div>
+
+<p>Keuntungan mendeklarasikan UI dalam XML adalah karena hal ini memungkinkan Anda memisahkan penampilan aplikasi dari kode yang mengontrol perilakunya dengan lebih baik. Keterangan UI Anda bersifat eksternal bagi kode aplikasi Anda, yang berarti bahwa Anda bisa memodifikasi atau menyesuaikannya tanpa harus memodifikasi dan mengompilasi ulang kode sumber. Misalnya, Anda bisa membuat layout XML untuk berbagai orientasi layar, berbagai ukuran layar perangkat, dan berbagai bahasa. Selain itu, mendeklarasikan layout dalam XML akan mempermudah Anda memvisualisasikan struktur UI, sehingga lebih mudah merunut masalahnya. Karena itu, dokumen ini berfokus pada upaya mengajari Anda cara mendeklarasikan layout dalam XML. Jika Anda
+tertarik dalam membuat instance objek View saat runtime, lihat referensi kelas {@link android.view.ViewGroup} dan
+{@link android.view.View}.</p>
+
+<p>Secara umum, kosakata XML untuk mendeklarasikan elemen UI mengikuti dengan sangat mirip struktur serta penamaan kelas dan metode, dengan nama elemen dipadankan dengan nama kelas dan nama atribut dipadankan dengan metode. Sebenarnya, pemadanan ini kerap kali begitu jelas sehingga Anda bisa menebak atribut XML yang berpadanan dengan sebuah metode kelas, atau menebak kelas yang berpadanan dengan sebuah elemen XML. Akan tetapi, perhatikan bahwa tidak semua kosakata identik. Dalam beberapa kasus, ada sedikit perbedaan penamaan. Misalnya
+, elemen EditText memiliki atribut <code>text</code> yang berpadanan dengan
+<code>EditText.setText()</code>. </p>
+
+<p class="note"><strong>Tip:</strong> Ketahui selengkapnya berbagai tipe layout dalam <a href="{@docRoot}guide/topics/ui/layout-objects.html">Objek
+Layout Umum</a>. Ada juga sekumpulan tutorial tentang cara membangun berbagai layout dalam panduan tutorial 
+<a href="{@docRoot}resources/tutorials/views/index.html">Hello Views</a>.</p>
+
+<h2 id="write">Tulis XML</h2>
+
+<p>Dengan menggunakan kosakata XML Android, Anda bisa mendesain secara cepat layout UI dan elemen layar yang dimuatnya, sama dengan cara membuat halaman web dalam HTML &mdash; dengan serangkaian elemen tersarang. </p>
+
+<p>Tiap file layout harus berisi persis satu elemen akar, yang harus berupa sebuah objek View atau ViewGroup. Setelah mendefinisikan elemen akar, Anda bisa menambahkan objek atau widget layout tambahan sebagai elemen anak untuk membangun hierarki View yang mendefinisikan layout Anda secara bertahap. Misalnya, inilah layout XML yang menggunakan {@link android.widget.LinearLayout}
+vertikal untuk menyimpan {@link android.widget.TextView} dan {@link android.widget.Button}:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:orientation="vertical" >
+    &lt;TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="Hello, I am a TextView" />
+    &lt;Button android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Hello, I am a Button" />
+&lt;/LinearLayout>
+</pre>
+
+<p>Setelah Anda mendeklarasikan layout dalam XML, simpanlah file dengan ekstensi <code>.xml</code>,
+dalam direktori <code>res/layout/</code> proyek Android, sehingga nanti bisa dikompilasi dengan benar. </p>
+
+<p>Informasi selengkapnya tentang sintaks untuk file XML layout tersedia dalam dokumen <a href="{@docRoot}guide/topics/resources/layout-resource.html">Sumber Daya Layout</a>.</p>
+
+<h2 id="load">Muat Sumber Daya XML</h2>
+
+<p>Saat mengompilasi aplikasi, masing-masing file layout XML akan dikompilasi dalam sebuah sumber daya 
+{@link android.view.View}. Anda harus memuat sumber daya layout dari kode aplikasi, dalam implementasi
+callback {@link android.app.Activity#onCreate(android.os.Bundle) Activity.onCreate()}.
+Lakukan dengan memanggil <code>{@link android.app.Activity#setContentView(int) setContentView()}</code>,
+dengan meneruskan acuan ke sumber daya layout berupa:
+<code>R.layout.<em>layout_file_name</em></code>.
+Misalnya, jika XML layout Anda disimpan sebagai <code>main_layout.xml</code>, Anda akan memuatnya
+untuk Activity seperti ini:</p>
+<pre>
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.main_layout);
+}
+</pre>
+
+<p>Metode callback <code>onCreate()</code> dalam Activity dipanggil oleh kerangka kerja Android saat
+Activity Anda dijalankan (lihat diskusi tentang daur hidup, dalam dokumen
+<a href="{@docRoot}guide/components/activities.html#Lifecycle">Aktivitas</a>
+).</p>
+
+
+<h2 id="attributes">Atribut</h2>
+
+<p>Setiap objek View dan ViewGroup mendukung variasi atribut XML-nya sendiri.
+Sebagian atribut bersifat spesifik untuk objek View (misalnya, TextView mendukung atribut <code>textSize</code>
+), namun atribut ini juga diwarisi oleh sembarang objek View yang dapat memperluas kelas ini.
+Sebagian atribut bersifat umum untuk semua objek View, karena diwarisi dari kelas View akar (seperti
+atribut <code>id</code>). Dan, atribut lain dianggap sebagai "parameter layout" yaitu
+atribut yang menjelaskan orientasi layout tertentu dari objek View, seperti yang didefinisikan oleh objek ViewGroup induk
+dari objek itu.</p>
+
+<h3 id="id">ID</h3>
+
+<p>Objek View apa saja dapat memiliki ID integer yang dikaitkan dengannya, untuk mengidentifikasi secara unik View dalam pohon.
+Bila aplikasi dikompilasi, ID ini akan diacu sebagai integer, namun ID biasanya
+ditetapkan dalam file XML layout sebagai string, dalam atribut <code>id</code>.
+Ini atribut XML yang umum untuk semua objek View
+(yang didefinisikan oleh kelas {@link android.view.View}) dan Anda akan sering sekali menggunakannya.
+Sintaks untuk ID dalam tag XML adalah:</p>
+<pre>android:id="&#64;+id/my_button"</pre>
+
+<p>Simbol "at" (@) pada awal string menunjukkan parser XML harus mengurai dan memperluas
+ID string selebihnya dan mengenalinya sebagai ID sumber daya. Simbol tanda tambah (+) berarti ini nama sumber daya baru yang harus
+dibuat dan ditambahkan ke sumber daya kita (dalam file <code>R.java</code>). Ada sejumlah sumber daya ID lain yang
+ditawarkan oleh kerangka kerja Android. Saat mengacu sebuah ID sumber daya Android, Anda tidak memerlukan simbol tanda tambah,
+namun harus menambahkan namespace paket <code>android</code>, sehingga:</p>
+<pre>android:id="&#64;android:id/empty"</pre>
+<p>Dengan namespace paket <code>android</code> yang tersedia, kita sekarang mengacu ID dari kelas sumber daya <code>android.R</code>
+, daripada kelas sumber daya lokal.</p>
+
+<p>Untuk membuat tampilan dan mengacunya dari aplikasi, pola yang umum adalah:</p>
+<ol>
+  <li>Mendefinisikan tampilan/widget dalam file layout dan memberinya ID unik:
+<pre>
+&lt;Button android:id="&#64;+id/my_button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="&#64;string/my_button_text"/>
+</pre>
+  </li>
+  <li>Kemudian buat instance objek tampilan dan tangkap instance itu dari layout
+(biasanya dalam metode <code>{@link android.app.Activity#onCreate(Bundle) onCreate()}</code>):
+<pre>
+Button myButton = (Button) findViewById(R.id.my_button);
+</pre>
+  </li>
+</ol>
+<p>Mendefinisikan ID untuk objek tampilan adalah penting saat membuat {@link android.widget.RelativeLayout}.
+Dalam layout relatif, tampilan saudara bisa mendefinisikan layout secara relatif terhadap tampilan saudara lainnya,
+yang diacu melalui ID unik.</p>
+<p>ID tidak perlu unik di seluruh pohon, namun harus
+unik di bagian pohon yang Anda cari (yang mungkin sering kali seluruh pohon, jadi lebih baik
+benar-benar unik bila memungkinkan).</p>
+
+
+<h3 id="layout-params">Parameter Layout</h3>
+
+<p>Atribut layout XML bernama <code>layout_<em>something</em></code> mendefinisikan
+parameter layout View yang cocok untuk ViewGroup tempatnya berada.</p>
+
+<p>Setiap kelas ViewGroup mengimplementasikan kelas tersarang yang memperluas {@link
+android.view.ViewGroup.LayoutParams}. Subkelas ini
+berisi tipe properti yang mendefinisikan ukuran dan posisi masing-masing tampilan anak, sebagaimana
+mestinya untuk grup tampilan. Seperti yang bisa Anda lihat dalam gambar 1,
+grup tampilan induk mendefinisikan parameter layout untuk masing-masing tampilan anak (termasuk grup tampilan anak).</p>
+
+<img src="{@docRoot}images/layoutparams.png" alt="" />
+<p class="img-caption"><strong>Gambar 1.</strong> Visualisasi hierarki tampilan dengan parameter layout
+yang dikaitkan dengan tiap tampilan.</p>
+
+<p>Perhatikan bahwa setiap subkelas LayoutParams memiliki sintaksnya sendiri untuk menetapkan
+nilai-nilai. Tiap elemen anak harus mendefinisikan LayoutParams yang semestinya bagi induknya,
+meskipun elemen itu bisa juga mendefinisikan LayoutParams untuk anak-anaknya sendiri. </p>
+
+<p>Semua grup tampilan berisi lebar dan tinggi (<code>layout_width</code> dan
+<code>layout_height</code>), dan masing-masing tampilan harus mendefinisikannya. Banyak
+LayoutParams yang juga menyertakan margin dan border opsional. <p>
+
+<p>Anda bisa menetapkan lebar dan tinggi dengan ukuran persis, meskipun Anda mungkin
+tidak ingin sering-sering melakukannya. Lebih sering, Anda akan menggunakan salah satu konstanta ini untuk
+mengatur lebar atau tinggi: </p>
+
+<ul>
+  <li><var>wrap_content</var> memberi tahu tampilan Anda agar menyesuaikan sendiri ukurannya dengan dimensi
+yang dibutuhkan oleh isinya.</li>
+  <li><var>match_parent</var> (bernama <var>fill_parent</var> sebelum API Level 8)
+memberi tahu tampilan Anda agar menjadi sebesar yang diperbolehkan oleh grup tampilan induknya.</li>
+</ul>
+
+<p>Secara umum, menetapkan lebar dan tinggi layout dengan satuan mutlak seperti
+piksel tidaklah disarankan. Melainkan dengan menggunakan ukuran relatif seperti
+satuan piksel yang tidak bergantung pada kerapatan (<var>dp</var>), <var>wrap_content</var>, atau
+<var>match_parent</var>, adalah sebuah pendekatan yang lebih baik, karena membantu memastikan bahwa
+aplikasi Anda akan ditampilkan dengan benar pada berbagai ukuran layar perangkat.
+Tipe ukuran yang diterima didefinisikan dalam dokumen
+<a href="{@docRoot}guide/topics/resources/available-resources.html#dimension">
+Sumber Daya yang Tersedia</a>.</p>
+
+
+<h2 id="Position">Posisi Layout</h2>
+   <p>
+   Geometri tampilan adalah persegi panjang. Sebuah tampilan memiliki lokasi,
+   yang dinyatakan berupa sepasang koordinat <em>kiri</em> dan <em>atas</em>, dan
+   dua dimensi, yang dinyatakan berupa lebar dan tinggi. Satuan untuk lokasi
+   dan dimensi adalah piksel.
+   </p>
+
+   <p>
+   Lokasi tampilan dapat diambil dengan memanggil metode
+   {@link android.view.View#getLeft()} dan {@link android.view.View#getTop()}. Metode terdahulu menghasilkan koordinat kiri, atau X,
+   persegi panjang yang mewakili tampilan. Metode selanjutnya menghasilkan koordinat
+   atas, atau Y, persegi panjang yang mewakili tampilan. Kedua metode ini
+   menghasilkan lokasi tampilan relatif terhadap induknya. Misalnya,
+   bila <code>getLeft()</code> menghasilkan 20, berarti tampilan berlokasi 20 piksel ke
+   kanan dari tepi kiri induk langsungnya.
+   </p>
+
+   <p>
+   Selain itu, beberapa metode praktis ditawarkan untuk menghindari komputasi yang tidak perlu,
+   yakni {@link android.view.View#getRight()} dan {@link android.view.View#getBottom()}.
+   Kedua metode ini menghasilkan koordinat tepi kanan dan bawah
+   persegi panjang yang mewakili tampilan. Misalnya, memanggil {@link android.view.View#getRight()}
+   serupa dengan komputasi berikut: <code>getLeft() + getWidth()</code>.
+   </p>
+
+
+<h2 id="SizePaddingMargins">Ukuran, Pengisi, dan Margin</h2>
+   <p>
+   Ukuran tampilan dinyatakan dengan lebar dan tinggi. Tampilan sebenarnya
+   memiliki dua pasang nilai lebar dan tinggi.
+   </p>
+
+   <p>
+   Sepasang pertama disebut <em>lebar terukur</em> dan
+   <em>tinggi terukur</em>. Dimensi ini mendefinisikan seberapa besar tampilan yang diinginkan
+   dalam induknya. Dimensi
+   terukur bisa diperoleh dengan memanggil {@link android.view.View#getMeasuredWidth()}
+   dan {@link android.view.View#getMeasuredHeight()}.
+   </p>
+
+   <p>
+   Sepasang kedua cukup disebut dengan <em>lebar</em> dan <em>tinggi</em>, atau
+   kadang-kadang <em>lebar penggambaran</em> dan <em>tinggi penggambaran</em>. Dimensi-dimensi ini
+   mendefinisikan ukuran tampilan sebenarnya pada layar, saat digambar dan
+   setelah layout. Nilai-nilai ini mungkin, namun tidak harus, berbeda dengan
+   lebar dan tinggi terukur. Lebar dan tinggi bisa diperoleh dengan memanggil
+   {@link android.view.View#getWidth()} dan {@link android.view.View#getHeight()}.
+   </p>
+
+   <p>
+   Untuk mengukur dimensinya, tampilan akan memperhitungkan pengisinya (padding). Pengisi
+   dinyatakan dalam piksel untuk bagian kiri, atas, kanan, dan bawah tampilan.
+   Pengisi bisa digunakan untuk meng-offset isi tampilan dengan
+   piksel dalam jumlah tertentu. Misalnya, pengisi kiri sebesar 2 akan mendorong isi tampilan sebanyak
+   2 piksel ke kanan dari tepi kiri. Pengisi bisa diatur menggunakan
+   metode {@link android.view.View#setPadding(int, int, int, int)} dan diketahui dengan memanggil
+   {@link android.view.View#getPaddingLeft()}, {@link android.view.View#getPaddingTop()},
+   {@link android.view.View#getPaddingRight()}, dan {@link android.view.View#getPaddingBottom()}.
+   </p>
+
+   <p>
+   Meskipun bisa mendefinisikan pengisi, tampilan tidak menyediakan dukungan untuk
+   margin. Akan tetapi, grup tampilan menyediakan dukungan tersebut. Lihat
+   {@link android.view.ViewGroup} dan
+   {@link android.view.ViewGroup.MarginLayoutParams} untuk informasi lebih jauh.
+   </p>
+
+   <p>Untuk informasi selengkapnya tentang dimensi, lihat
+   <a href="{@docRoot}guide/topics/resources/more-resources.html#Dimension">Nilai-Nilai Dimensi</a>.
+   </p>
+
+
+
+
+
+
+<style type="text/css">
+div.layout {
+  float:left;
+  width:200px;
+  margin:0 0 20px 20px;
+}
+div.layout.first {
+  margin-left:0;
+  clear:left;
+}
+</style>
+
+
+
+
+<h2 id="CommonLayouts">Layout Umum</h2>
+
+<p>Tiap subkelas dari kelas {@link android.view.ViewGroup} menyediakan cara unik untuk menampilkan
+tampilan yang Anda sarangkan di dalamnya. Di bawah ini adalah beberapa tipe layout lebih umum yang dibuat
+ke dalam platform Android.</p>
+
+<p class="note"><strong>Catatan:</strong> Walaupun Anda bisa menyarangkan satu atau beberapa layout dalam
+layout lain untuk mendapatkan desain UI, Anda harus berusaha menjaga hierarki layout sedangkal
+mungkin. Layout Anda akan digambar lebih cepat jika memiliki layout tersarang yang lebih sedikit (hierarki tampilan yang melebar
+lebih baik daripada hierarki tampilan yang dalam).</p>
+
+<!--
+<h2 id="framelayout">FrameLayout</h2>
+<p>{@link android.widget.FrameLayout FrameLayout} is the simplest type of layout
+object. It's basically a blank space on your screen that you can
+later fill with a single object &mdash; for example, a picture that you'll swap in and out.
+All child elements of the FrameLayout are pinned to the top left corner of the screen; you cannot
+specify a different location for a child view. Subsequent child views will simply be drawn over
+previous ones,
+partially or totally obscuring them (unless the newer object is transparent).
+</p>
+-->
+
+
+<div class="layout first">
+  <h4><a href="layout/linear.html">Layout Linier</a></h4>
+  <a href="layout/linear.html"><img src="{@docRoot}images/ui/linearlayout-small.png" alt="" /></a>
+  <p>Layout yang mengatur anak-anaknya menjadi satu baris horizontal atau vertikal. Layout ini
+  akan membuat scrollbar jika panjang jendela melebihi panjang layar.</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/relative.html">Layout Relatif</a></h4>
+  <a href="layout/relative.html"><img src="{@docRoot}images/ui/relativelayout-small.png" alt="" /></a>
+  <p>Memungkinkan Anda menentukan lokasi objek anak relatif terhadap satu sama lain (anak A di
+kiri anak B) atau terhadap induk (disejajarkan dengan atas induknya).</p>
+</div>
+
+<div class="layout">
+  <h4><a href="{@docRoot}guide/webapps/webview.html">Tampilan Web</a></h4>
+  <a href="{@docRoot}guide/webapps/webview.html"><img src="{@docRoot}images/ui/webview-small.png" alt="" /></a>
+  <p>Menampilkan halaman web.</p>
+</div>
+
+
+
+
+<h2 id="AdapterViews" style="clear:left">Membangun Layout dengan Adaptor</h2>
+
+<p>Bila isi layout bersifat dinamis atau tidak dipastikan sebelumnya, Anda bisa menggunakan layout yang menjadi 
+subkelas {@link android.widget.AdapterView} untuk mengisi layout dengan tampilan saat runtime. 
+Subkelas dari kelas {@link android.widget.AdapterView} menggunakan {@link android.widget.Adapter} untuk
+mengikat data ke layoutnya. {@link android.widget.Adapter} berfungsi sebagai penghubung antara sumber data
+dan layout{@link android.widget.AdapterView}&mdash;{@link android.widget.Adapter}
+menarik data (dari suatu sumber seperti larik (array) atau query database) dan mengubah setiap entri
+menjadi tampilan yang bisa ditambahkan ke dalam layout {@link android.widget.AdapterView}.</p>
+
+<p>Layout umum yang didukung oleh adaptor meliputi:</p>
+
+<div class="layout first">
+  <h4><a href="layout/listview.html">Tampilan Daftar</a></h4>
+  <a href="layout/listview.html"><img src="{@docRoot}images/ui/listview-small.png" alt="" /></a>
+  <p>Menampilkan daftar kolom tunggal yang bergulir.</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/gridview.html">Tampilan Petak</a></h4>
+  <a href="layout/gridview.html"><img src="{@docRoot}images/ui/gridview-small.png" alt="" /></a>
+  <p>Menampilkan petak bergulir yang terdiri atas kolom dan baris.</p>
+</div>
+
+
+
+<h3 id="FillingTheLayout" style="clear:left">Mengisi tampilan adaptor dengan data</h3>
+
+<p>Anda bisa mengisi {@link android.widget.AdapterView} seperti {@link android.widget.ListView} atau
+{@link android.widget.GridView} dengan mengikat instance {@link android.widget.AdapterView} ke
+{@link android.widget.Adapter}, yang akan mengambil data dari sumber eksternal dan membuat {@link
+android.view.View} yang mewakili tiap entri data.</p>
+
+<p>Android menyediakan beberapa subkelas {@link android.widget.Adapter} yang berguna untuk
+menarik berbagai jenis data dan membangun tampilan untuk {@link android.widget.AdapterView}. Dua
+ adaptor yang paling umum adalah:</p>
+
+<dl>
+  <dt>{@link android.widget.ArrayAdapter}</dt>
+    <dd>Gunakan adaptor ini bila sumber data Anda berupa larik. Secara default, {@link
+android.widget.ArrayAdapter} akan membuat tampilan untuk tiap elemen larik dengan memanggil {@link
+java.lang.Object#toString()} pada tiap elemen dan menempatkan isinya dalam {@link
+android.widget.TextView}.
+      <p>Misalnya, jika Anda memiliki satu larik string yang ingin ditampilkan dalam {@link
+android.widget.ListView}, buatlah {@link android.widget.ArrayAdapter} baru dengan konstruktor
+untuk menentukan layout setiap string dan larik string:</p>
+<pre>
+ArrayAdapter&lt;String> adapter = new ArrayAdapter&lt;String>(this,
+        android.R.layout.simple_list_item_1, myStringArray);
+</pre>
+<p>Argumen-argumen untuk konstruktor ini adalah:</p>
+<ul>
+  <li>{@link android.content.Context} aplikasi Anda</li>
+  <li>Layout yang berisi {@link android.widget.TextView} untuk tiap string dalam larik</li>
+  <li>Larik string</li>
+</ul>
+<p>Kemudian tinggal panggil
+{@link android.widget.ListView#setAdapter setAdapter()} pada {@link android.widget.ListView} Anda:</p>
+<pre>
+ListView listView = (ListView) findViewById(R.id.listview);
+listView.setAdapter(adapter);
+</pre>
+
+      <p>Untuk menyesuaikan penampilan setiap item, Anda bisa mengesampingkan metode {@link
+java.lang.Object#toString()} bagi objek dalam larik Anda. Atau, untuk membuat tampilan tiap
+elemen selain {@link android.widget.TextView} (misalnya, jika Anda menginginkan
+{@link android.widget.ImageView} bagi setiap item larik), perluas kelas {@link
+android.widget.ArrayAdapter} dan kesampingkan {@link android.widget.ArrayAdapter#getView
+getView()} agar memberikan tipe tampilan yang Anda inginkan bagi tiap item.</p>
+
+</dd>
+
+  <dt>{@link android.widget.SimpleCursorAdapter}</dt>
+    <dd>Gunakan adaptor ini bila data Anda berasal dari {@link android.database.Cursor}. Saat
+menggunakan {@link android.widget.SimpleCursorAdapter}, Anda harus menentukan layout yang akan digunakan untuk tiap
+baris dalam {@link android.database.Cursor} dan di kolom mana di {@link android.database.Cursor}
+harus memasukkan tampilan layout. Misalnya, jika Anda ingin untuk membuat daftar
+nama orang dan nomor telepon, Anda bisa melakukan query yang menghasilkan {@link
+android.database.Cursor} yang berisi satu baris untuk tiap orang dan kolom-kolom untuk nama dan
+nomor. Selanjutnya Anda membuat larik string yang menentukan kolom dari {@link
+android.database.Cursor} yang Anda inginkan dalam layout untuk setiap hasil dan larik integer yang menentukan 
+tampilan yang sesuai untuk menempatkan masing-masing kolom:</p>
+<pre>
+String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME,
+                        ContactsContract.CommonDataKinds.Phone.NUMBER};
+int[] toViews = {R.id.display_name, R.id.phone_number};
+</pre>
+<p>Bila Anda membuat instance {@link android.widget.SimpleCursorAdapter}, teruskan layout yang akan digunakan untuk
+setiap hasil, {@link android.database.Cursor} yang berisi hasil tersebut, dan dua larik ini:</p>
+<pre>
+SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
+        R.layout.person_name_and_number, cursor, fromColumns, toViews, 0);
+ListView listView = getListView();
+listView.setAdapter(adapter);
+</pre>
+<p>{@link android.widget.SimpleCursorAdapter} kemudian membuat tampilan untuk tiap baris dalam
+{@link android.database.Cursor} dengan layout yang disediakan dengan memasukkan setiap item {@code
+fromColumns} ke dalam tampilan {@code toViews} yang sesuai.</p></dd>
+</dl>
+
+
+<p>Jika, selama aplikasi berjalan, Anda mengubah data sumber yang dibaca oleh
+adaptor, maka Anda harus memanggil {@link android.widget.ArrayAdapter#notifyDataSetChanged()}. Hal ini akan
+memberi tahu tampilan yang bersangkutan bahwa data telah berubah dan tampilan harus memperbarui dirinya sendiri.</p>
+
+
+
+<h3 id="HandlingUserSelections">Menangani kejadian klik</h3>
+
+<p>Anda bisa merespons kejadian klik pada setiap item dalam {@link android.widget.AdapterView} dengan
+menerapkan antarmuka {@link android.widget.AdapterView.OnItemClickListener}. Misalnya:</p>
+
+<pre>
+// Create a message handling object as an anonymous class.
+private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
+    public void onItemClick(AdapterView parent, View v, int position, long id) {
+        // Do something in response to the click
+    }
+};
+
+listView.setOnItemClickListener(mMessageClickedHandler);
+</pre>
+
+
+
diff --git a/docs/html-intl/intl/in/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/in/guide/topics/ui/dialogs.jd
new file mode 100644
index 0000000..65714a9
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/ui/dialogs.jd
@@ -0,0 +1,798 @@
+page.title=Dialog
+page.tags=alertdialog,dialogfragment
+
+@jd:body
+
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>Dalam dokumen ini</h2>
+<ol>
+  <li><a href="#DialogFragment">Membuat Fragmen Dialog</a></li>
+  <li><a href="#AlertDialog">Membuat Dialog Peringatan</a>
+    <ol>
+      <li><a href="#AddingButtons">Menambahkan tombol</a></li>
+      <li><a href="#AddingAList">Menambahkan daftar</a></li>
+      <li><a href="#CustomLayout">Membuat Layout Custom</a></li>
+    </ol>
+  </li>
+  <li><a href="#PassingEvents">Meneruskan Kejadian Kembali ke Host Dialog</a></li>
+  <li><a href="#ShowingADialog">Menampilkan Dialog</a></li>
+  <li><a href="#FullscreenDialog">Menampilkan Dialog sebagai Layar Penuh atau Fragmen Tertanam</a>
+    <ol>
+      <li><a href="#ActivityAsDialog">Menampilkan aktivitas sebagai dialog pada layar besar</a></li>
+    </ol>
+  </li>
+  <li><a href="#DismissingADialog">Menutup Dialog</a></li>
+</ol>
+
+    <h2>Kelas-kelas utama</h2>
+    <ol>
+      <li>{@link android.app.DialogFragment}</li>
+      <li>{@link android.app.AlertDialog}</li>
+    </ol>
+    
+    <h2>Lihat juga</h2>
+    <ol>
+      <li><a href="{@docRoot}design/building-blocks/dialogs.html">Panduan desain dialog</a></li>
+      <li><a href="{@docRoot}guide/topics/ui/controls/pickers.html">Picker</a> (dialog Tanggal/Waktu)</li>
+    </ol>
+  </div>
+</div>
+
+<p>Dialog adalah jendela kecil yang meminta pengguna untuk
+membuat keputusan atau memasukkan informasi tambahan. Dialog tidak mengisi layar dan
+biasanya digunakan untuk kejadian modal yang mengharuskan pengguna untuk melakukan tindakan sebelum bisa melanjutkan.</p>
+
+<div class="note design">
+<p><strong>Desain Dialog</strong></p>
+  <p>Untuk informasi tentang cara mendesain dialog, termasuk saran
+  untuk bahasa, bacalah panduan Desain <a href="{@docRoot}design/building-blocks/dialogs.html">dialog</a>.</p>
+</div>
+
+<img src="{@docRoot}images/ui/dialogs.png" />
+
+<p>Kelas {@link android.app.Dialog} adalah kelas basis untuk dialog, namun Anda
+harus menghindari pembuatan instance {@link android.app.Dialog} secara langsung.
+Sebagai gantinya, gunakan salah satu subkelas berikut:</p>
+<dl>
+  <dt>{@link android.app.AlertDialog}</dt>
+  <dd>Dialog yang bisa menampilkan judul, hingga tiga tombol, daftar
+    item yang dapat dipilih, atau layout custom.</dd>
+  <dt>{@link android.app.DatePickerDialog} atau {@link android.app.TimePickerDialog}</dt>
+  <dd>Dialog berisi UI yang sudah didefinisikan dan memungkinkan pengguna memilih tanggal atau waktu.</dd>
+</dl>
+
+<div class="sidebox">
+<h2>Hindari ProgressDialog</h2>
+<p>Android menyertakan kelas dialog lain yang disebut
+{@link android.app.ProgressDialog} yang menampilkan dialog berisi progress-bar. Akan tetapi, jika Anda
+perlu menunjukkan kemajuan pemuatan ataupun kemajuan yang tidak pasti, maka Anda harus mengikuti
+panduan desain untuk <a href="{@docRoot}design/building-blocks/progress.html">Kemajuan &amp;
+Aktivitas</a> dan menggunakan {@link android.widget.ProgressBar} dalam layout Anda.</p>
+</div>
+
+<p>Kelas-kelas ini mendefinisikan gaya dan struktur dialog Anda, namun Anda harus
+menggunakan {@link android.support.v4.app.DialogFragment} sebagai kontainer dialog Anda.
+Kelas {@link android.support.v4.app.DialogFragment} menyediakan semua kontrol yang Anda
+perlukan untuk membuat dialog dan mengelola penampilannya, sebagai ganti memanggil metode
+pada objek {@link android.app.Dialog}.</p>
+
+<p>Menggunakan {@link android.support.v4.app.DialogFragment} untuk mengelola dialog
+akan memastikan bahwa kelas itu menangani kejadian daur hidup
+dengan benar seperti ketika pengguna menekan tombol <em>Back</em> atau memutar layar. Kelas {@link
+android.support.v4.app.DialogFragment} juga memungkinkan Anda menggunakan ulang dialog UI sebagai
+komponen yang bisa ditanamkan dalam UI yang lebih besar, persis seperti {@link
+android.support.v4.app.Fragment} tradisional (seperti saat Anda ingin dialog UI muncul berbeda
+pada layar besar dan kecil).</p>
+
+<p>Bagian-bagian berikutnya dalam panduan ini akan menjelaskan cara menggunakan {@link
+android.support.v4.app.DialogFragment} yang dikombinasikan dengan objek {@link android.app.AlertDialog}
+. Jika Anda ingin membuat picker tanggal atau waktu, Anda harus membaca panduan 
+<a href="{@docRoot}guide/topics/ui/controls/pickers.html">Picker</a>.</p>
+
+<p class="note"><strong>Catatan:</strong>
+Karena kelas {@link android.app.DialogFragment} mulanya ditambahkan pada
+Android 3.0 (API level 11), dokumen ini menjelaskan cara menggunakan kelas {@link
+android.support.v4.app.DialogFragment} yang disediakan bersama <a href="{@docRoot}tools/support-library/index.html">Pustaka Dukungan</a>. Dengan menambahkan pustaka ini
+ke aplikasi, Anda bisa menggunakan {@link android.support.v4.app.DialogFragment} dan berbagai
+API lain pada perangkat yang menjalankan Android 1.6 atau yang lebih tinggi. Jika versi minimum yang didukung aplikasi Anda
+adalah API level 11 atau yang lebih tinggi, maka Anda bisa menggunakan versi kerangka kerja {@link
+android.app.DialogFragment}, namun ketahuilah bahwa tautan dalam dokumen ini adalah untuk API
+pustaka dukungan. Saat menggunakan pustaka dukungan,
+pastikan Anda mengimpor kelas <code>android.support.v4.app.DialogFragment</code>
+dan <em>bukan</em> <code>android.app.DialogFragment</code>.</p>
+
+
+<h2 id="DialogFragment">Membuat Fragmen Dialog</h2>
+
+<p>Anda bisa menghasilkan beragam rancangan dialog&mdash;termasuk
+layout custom dan desain yang dijelaskan dalam panduan desain <a href="{@docRoot}design/building-blocks/dialogs.html">Dialog</a>
+&mdash;dengan memperluas
+{@link android.support.v4.app.DialogFragment} dan membuat {@link android.app.AlertDialog}
+dalam metode callback {@link android.support.v4.app.DialogFragment#onCreateDialog
+onCreateDialog()}.</p>
+
+<p>Misalnya, berikut ini sebuah {@link android.app.AlertDialog} dasar yang dikelola dalam
+{@link android.support.v4.app.DialogFragment}:</p>
+
+<pre>
+public class FireMissilesDialogFragment extends DialogFragment {
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Use the Builder class for convenient dialog construction
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // FIRE ZE MISSILES!
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // User cancelled the dialog
+                   }
+               });
+        // Create the AlertDialog object and return it
+        return builder.create();
+    }
+}
+</pre>
+
+<div class="figure" style="width:290px;margin:0 0 0 20px">
+<img src="{@docRoot}images/ui/dialog_buttons.png" alt="" />
+<p class="img-caption"><strong>Gambar 1.</strong>
+Dialog dengan satu pesan dan dua tombol tindakan.</p>
+</div>
+
+<p>Sekarang, bila Anda membuat instance kelas ini dan memanggil {@link
+android.support.v4.app.DialogFragment#show show()} pada objek itu, dialog akan muncul seperti
+yang ditampilkan dalam gambar 1.</p>
+
+<p>Bagian berikutnya menjelaskan lebih jauh tentang penggunaan API {@link android.app.AlertDialog.Builder}
+untuk membuat dialog.</p>
+
+<p>Bergantung pada seberapa rumit dialog tersebut, Anda bisa menerapkan berbagai metode callback lain
+dalam {@link android.support.v4.app.DialogFragment}, termasuk semua
+<a href="{@docRoot}guide/components/fragments.html#Lifecycle">metode daur hidup fragmen</a> dasar.
+
+
+
+
+
+<h2 id="AlertDialog">Membuat Dialog Peringatan</h2>
+
+
+<p>Kelas {@link android.app.AlertDialog} memungkinkan Anda membuat berbagai desain dialog dan
+seringkali satu-satunya kelas dialog yang akan Anda perlukan.
+Seperti yang ditampilkan dalam gambar 2, ada tiga area pada dialog peringatan:</p>
+
+<div class="figure" style="width:311px;margin-top:0">
+<img src="{@docRoot}images/ui/dialogs_regions.png" alt="" style="margin-bottom:0" />
+<p class="img-caption"><strong>Gambar 2.</strong> Layout dialog.</p>
+</div>
+
+<ol>
+<li><b>Judul</b>
+  <p>Area ini opsional dan hanya boleh digunakan bila area konten
+  ditempati oleh pesan terperinci, daftar, atau layout custom. Jika Anda perlu menyatakan
+  pesan atau pertanyaan sederhana (seperti dialog dalam gambar 1), Anda tidak memerlukan judul.</li>
+<li><b>Area konten</b>
+  <p>Area ini bisa menampilkan pesan, daftar, atau layout custom lainnya.</p></li>
+<li><b>Tombol tindakan</b>
+  <p>Tidak boleh ada lebih dari tiga tombol tindakan dalam sebuah dialog.</p></li>
+</ol>
+
+<p>Kelas {@link android.app.AlertDialog.Builder}
+ menyediakan API yang memungkinkan Anda membuat {@link android.app.AlertDialog}
+dengan jenis konten ini, termasuk layout custom.</p>
+
+<p>Untuk membuat {@link android.app.AlertDialog}:</p>
+
+<pre>
+<b>// 1. Instantiate an {@link android.app.AlertDialog.Builder} with its constructor</b>
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+
+<b>// 2. Chain together various setter methods to set the dialog characteristics</b>
+builder.setMessage(R.string.dialog_message)
+       .setTitle(R.string.dialog_title);
+
+<b>// 3. Get the {@link android.app.AlertDialog} from {@link android.app.AlertDialog.Builder#create()}</b>
+AlertDialog dialog = builder.create();
+</pre>
+
+<p>Topik-topik selanjutnya menampilkan cara mendefinisikan berbagai atribut dialog dengan menggunakan
+kelas {@link android.app.AlertDialog.Builder}.</p>
+
+
+
+
+<h3 id="AddingButtons">Menambahkan tombol</h3>
+
+<p>Untuk menambahkan tombol tindakan seperti dalam gambar 2,
+panggil metode {@link android.app.AlertDialog.Builder#setPositiveButton setPositiveButton()} dan
+{@link android.app.AlertDialog.Builder#setNegativeButton setNegativeButton()}:</p>
+
+<pre style="clear:right">
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+// Add the buttons
+builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User clicked OK button
+           }
+       });
+builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User cancelled the dialog
+           }
+       });
+// Set other dialog properties
+...
+
+// Create the AlertDialog
+AlertDialog dialog = builder.create();
+</pre>
+
+<p>Metode <code>set...Button()</code> mengharuskan adanya judul bagi tombol (disediakan
+oleh suatu <a href="{@docRoot}guide/topics/resources/string-resource.html">sumber daya string</a>) dan 
+{@link android.content.DialogInterface.OnClickListener} yang mendefinisikan tindakan yang diambil 
+bila pengguna menekan tombol.</p>
+
+<p>Ada tiga macam tombol tindakan yang Anda bisa tambahkan:</p>
+<dl>
+  <dt>Positif</dt>
+  <dd>Anda harus menggunakan tipe ini untuk menerima dan melanjutkan tindakan (tindakan "OK").</dd>
+  <dt>Negatif</dt>
+  <dd>Anda harus menggunakan tipe ini untuk membatalkan tindakan.</dd>
+  <dt>Netral</dt>
+  <dd>Anda harus menggunakan tipe ini bila pengguna mungkin tidak ingin melanjutkan tindakan,
+  namun tidak ingin membatalkan. Tipe ini muncul antara tombol positif dan 
+tombol negatif. Misalnya, tindakan bisa berupa "Ingatkan saya nanti".</dd> 
+</dl>
+
+<p>Anda hanya bisa menambahkan salah satu tipe tombol ke {@link
+android.app.AlertDialog}. Artinya, Anda tidak bisa memiliki lebih dari satu tombol "positif".</p>
+
+
+
+<div class="figure" style="width:290px;margin:0 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_list.png" alt="" />
+<p class="img-caption"><strong>Gambar 3.</strong>
+Dialog dengan satu judul dan daftar.</p>
+</div>
+
+<h3 id="AddingAList">Menambahkan daftar</h3>
+
+<p>Ada tiga macam daftar yang tersedia pada API {@link android.app.AlertDialog}:</p>
+<ul>
+<li>Daftar pilihan tunggal biasa</li>
+<li>Daftar pilihan tunggal persisten (tombol radio)</li>
+<li>Daftar pilihan ganda persisten (kotak cek)</li>
+</ul>
+
+<p>Untuk membuat daftar pilihan tunggal seperti dalam gambar 3, 
+gunakan metode {@link android.app.AlertDialog.Builder#setItems setItems()}:</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    builder.setTitle(R.string.pick_color)
+           .setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int which) {
+               // The 'which' argument contains the index position
+               // of the selected item
+           }
+    });
+    return builder.create();
+}
+</pre>
+
+<p>Karena daftar muncul dalam area konten dialog,
+dialog tidak bisa menampilkan pesan dan daftar sekaligus dan Anda harus menetapkan judul untuk
+dialog dengan {@link android.app.AlertDialog.Builder#setTitle setTitle()}. 
+Untuk menentukan item daftar, panggil {@link
+android.app.AlertDialog.Builder#setItems setItems()}, dengan meneruskan larik.
+Atau, Anda bisa menetapkan daftar menggunakan {@link
+android.app.AlertDialog.Builder#setAdapter setAdapter()}. Hal ini memungkinkan Anda mendukung daftar
+dengan data dinamis (seperti dari database) dengan menggunakan {@link android.widget.ListAdapter}.</p>
+
+<p>Jika Anda memilih untuk mendukung daftar dengan {@link android.widget.ListAdapter},
+selalu gunakan sebuah {@link android.support.v4.content.Loader} agar konten dimuat
+secara asinkron. Hal ini dijelaskan lebih jauh dalam panduan 
+<a href="{@docRoot}guide/topics/ui/declaring-layout.html#AdapterViews">Membuat Layout
+dengan Adaptor</a> dan <a href="{@docRoot}guide/components/loaders.html">Loader</a>
+.</p>
+
+<p class="note"><strong>Catatan:</strong> Secara default, menyentuh sebuah item daftar akan menutup dialog,
+kecuali Anda menggunakan salah satu daftar pilihan persisten berikut ini.</p>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_checkboxes.png" />
+<p class="img-caption"><strong>Gambar 4.</strong>
+Daftar item pilihan ganda.</p>
+</div>
+
+
+<h4 id="Checkboxes">Menambahkan daftar pilihan ganda atau pilihan tunggal persisten</h4>
+
+<p>Untuk menambahkan daftar item pilihan ganda (kotak cek) atau 
+item pilihan tunggal (tombol radio), gunakan masing-masing metode 
+{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()}, atau 
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()}.</p>
+
+<p>Misalnya, berikut ini cara membuat daftar pilihan ganda seperti
+yang ditampilkan dalam gambar 4 yang menyimpan item
+yang dipilih dalam {@link java.util.ArrayList}:</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    mSelectedItems = new ArrayList();  // Where we track the selected items
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Set the dialog title
+    builder.setTitle(R.string.pick_toppings)
+    // Specify the list array, the items to be selected by default (null for none),
+    // and the listener through which to receive callbacks when items are selected
+           .setMultiChoiceItems(R.array.toppings, null,
+                      new DialogInterface.OnMultiChoiceClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int which,
+                       boolean isChecked) {
+                   if (isChecked) {
+                       // If the user checked the item, add it to the selected items
+                       mSelectedItems.add(which);
+                   } else if (mSelectedItems.contains(which)) {
+                       // Else, if the item is already in the array, remove it 
+                       mSelectedItems.remove(Integer.valueOf(which));
+                   }
+               }
+           })
+    // Set the action buttons
+           .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // User clicked OK, so save the mSelectedItems results somewhere
+                   // or return them to the component that opened the dialog
+                   ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   ...
+               }
+           });
+
+    return builder.create();
+}
+</pre>
+
+<p>Walaupun daftar tradisional maupun daftar dengan tombol radio
+menyediakan tindakan "pilihan tunggal", Anda harus menggunakan {@link
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()} jika ingin mempertahankan pilihan pengguna.
+Yakni, jika nanti membuka dialog lagi untuk menunjukkan pilihan pengguna,
+maka Anda perlu membuat daftar dengan tombol radio.</p>
+
+
+
+
+
+<h3 id="CustomLayout">Membuat Layout Custom</h3>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_custom.png" alt="" />
+<p class="img-caption"><strong>Gambar 5.</strong> Layout dialog custom.</p>
+</div>
+
+<p>Jika Anda menginginkan layout custom dalam dialog, buatlah layout dan tambahkan ke
+{@link android.app.AlertDialog} dengan memanggil {@link
+android.app.AlertDialog.Builder#setView setView()} pada objek {@link
+android.app.AlertDialog.Builder} Anda.</p>
+
+<p>Secara default, layout custom akan mengisi jendela dialog, namun Anda masih bisa
+menggunakan metode {@link android.app.AlertDialog.Builder} untuk menambahkan tombol dan judul.</p>
+
+<p>Misalnya, berikut ini adalah file layout untuk dialog dalam Gambar 5:</p>
+
+<p style="clear:right" class="code-caption">res/layout/dialog_signin.xml</p>
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+    &lt;ImageView
+        android:src="@drawable/header_logo"
+        android:layout_width="match_parent"
+        android:layout_height="64dp"
+        android:scaleType="center"
+        android:background="#FFFFBB33"
+        android:contentDescription="@string/app_name" />
+    &lt;EditText
+        android:id="@+id/username"
+        android:inputType="textEmailAddress"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="16dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="4dp"
+        android:hint="@string/username" />
+    &lt;EditText
+        android:id="@+id/password"
+        android:inputType="textPassword"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="4dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="16dp"
+        android:fontFamily="sans-serif"
+        android:hint="@string/password"/>
+&lt;/LinearLayout>
+</pre>
+
+<p class="note"><strong>Tip:</strong> Secara default, bila Anda telah mengatur sebuah elemen {@link android.widget.EditText}
+agar menggunakan tipe input {@code "textPassword"}, keluarga font akan diatur ke spasi tunggal, sehingga
+Anda harus mengubah keluarga font ke {@code "sans-serif"} sehingga kedua bidang teks menggunakan
+gaya font yang cocok.</p>
+
+<p>Untuk memekarkan layout dalam {@link android.support.v4.app.DialogFragment} Anda,
+ambillah {@link android.view.LayoutInflater} dengan 
+{@link android.app.Activity#getLayoutInflater()} dan panggil
+{@link android.view.LayoutInflater#inflate inflate()}, dengan parameter pertama
+adalah ID sumber daya layout dan parameter kedua adalah tampilan induk untuk layout.
+Selanjutnya Anda bisa memanggil {@link android.app.AlertDialog#setView setView()}
+untuk menempatkan layout dalam dialog.</p>
+
+<pre>
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Get the layout inflater
+    LayoutInflater inflater = getActivity().getLayoutInflater();
+
+    // Inflate and set the layout for the dialog
+    // Pass null as the parent view because its going in the dialog layout
+    builder.setView(inflater.inflate(R.layout.dialog_signin, null))
+    // Add action buttons
+           .setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // sign in the user ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int id) {
+                   LoginDialogFragment.this.getDialog().cancel();
+               }
+           });      
+    return builder.create();
+}
+</pre>
+
+<div class="note">
+<p><strong>Tip:</strong> Jika Anda menginginkan dialog custom,
+Anda bisa menampilkan {@link android.app.Activity} sebagai dialog
+daripada menggunakan API {@link android.app.Dialog}. Cukup buat satu aktivitas dan mengatur temanya ke
+{@link android.R.style#Theme_Holo_Dialog Theme.Holo.Dialog}
+di elemen manifes <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a>:</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.Dialog" >
+</pre>
+<p>Demikian saja. Aktivitas sekarang ditampilkan dalam jendela dialog, sebagai ganti layar penuh.</p>
+</div>
+
+
+
+<h2 id="PassingEvents">Meneruskan Kejadian Kembali ke Host Dialog</h2>
+
+<p>Bila pengguna menyentuh salah satu tombol tindakan dialog atau memilih satu item dari daftarnya,
+{@link android.support.v4.app.DialogFragment} Anda bisa melakukan sendiri tindakan yang diperlukan
+, namun sering kali Anda perlu mengirim kejadian itu ke aktivitas atau fragmen yang
+membuka dialog. Caranya, definisikan antarmuka dengan sebuah metode untuk masing-masing tipe kejadian klik.
+Lalu implementasikan antarmuka itu dalam komponen host yang akan
+menerima kejadian tindakan dari dialog.</p>
+
+<p>Misalnya, berikut ini adalah {@link android.support.v4.app.DialogFragment} yang mendefinisikan
+antarmuka yang akan digunakan untuk mengirim kembali suatu kejadian ke aktivitas host:</p>
+
+<pre>
+public class NoticeDialogFragment extends DialogFragment {
+    
+    /* The activity that creates an instance of this dialog fragment must
+     * implement this interface in order to receive event callbacks.
+     * Each method passes the DialogFragment in case the host needs to query it. */
+    public interface NoticeDialogListener {
+        public void onDialogPositiveClick(DialogFragment dialog);
+        public void onDialogNegativeClick(DialogFragment dialog);
+    }
+    
+    // Use this instance of the interface to deliver action events
+    NoticeDialogListener mListener;
+    
+    // Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
+    &#64;Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        // Verify that the host activity implements the callback interface
+        try {
+            // Instantiate the NoticeDialogListener so we can send events to the host
+            mListener = (NoticeDialogListener) activity;
+        } catch (ClassCastException e) {
+            // The activity doesn't implement the interface, throw exception
+            throw new ClassCastException(activity.toString()
+                    + " must implement NoticeDialogListener");
+        }
+    }
+    ...
+}
+</pre>
+
+<p>Aktivitas yang menjadi host dialog tersebut akan membuat instance dialog
+dengan konstruktor fragmen dialog dan menerima kejadian dialog
+melalui implementasi antarmuka {@code NoticeDialogListener}:</p>
+
+<pre>
+public class MainActivity extends FragmentActivity
+                          implements NoticeDialogFragment.NoticeDialogListener{
+    ...
+    
+    public void showNoticeDialog() {
+        // Create an instance of the dialog fragment and show it
+        DialogFragment dialog = new NoticeDialogFragment();
+        dialog.show(getSupportFragmentManager(), "NoticeDialogFragment");
+    }
+
+    // The dialog fragment receives a reference to this Activity through the
+    // Fragment.onAttach() callback, which it uses to call the following methods
+    // defined by the NoticeDialogFragment.NoticeDialogListener interface
+    &#64;Override
+    public void onDialogPositiveClick(DialogFragment dialog) {
+        // User touched the dialog's positive button
+        ...
+    }
+
+    &#64;Override
+    public void onDialogNegativeClick(DialogFragment dialog) {
+        // User touched the dialog's negative button
+        ...
+    }
+}
+</pre>
+
+<p>Karena aktivitas host mengimplementasikan {@code NoticeDialogListener}&mdash;yang
+diberlakukan oleh metode callback {@link android.support.v4.app.Fragment#onAttach onAttach()}
+di atas,&mdash;fragmen dialog bisa menggunakan
+metode callback antarmuka untuk mengirimkan kejadian klik ke aktivitas:</p>
+
+<pre>
+public class NoticeDialogFragment extends DialogFragment {
+    ...
+
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Build the dialog and set up the button click handlers
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the positive button event back to the host activity
+                       mListener.onDialogPositiveClick(NoticeDialogFragment.this);
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the negative button event back to the host activity
+                       mListener.onDialogNegativeClick(NoticeDialogFragment.this);
+                   }
+               });
+        return builder.create();
+    }
+}
+</pre>
+
+
+
+<h2 id="ShowingADialog">Menampilkan Dialog</h2>
+
+<p>Bila Anda ingin menampilkan dialog, buatlah instance {@link
+android.support.v4.app.DialogFragment} dan panggil {@link android.support.v4.app.DialogFragment#show
+show()}, dengan meneruskan {@link android.support.v4.app.FragmentManager} dan nama tag
+untuk fragmen dialognya.</p>
+
+<p>Anda bisa mendapatkan {@link android.support.v4.app.FragmentManager} dengan memanggil
+{@link android.support.v4.app.FragmentActivity#getSupportFragmentManager()} dari
+ {@link android.support.v4.app.FragmentActivity} atau {@link
+android.support.v4.app.Fragment#getFragmentManager()} dari {@link
+android.support.v4.app.Fragment}. Misalnya:</p>
+
+<pre>
+public void confirmFireMissiles() {
+    DialogFragment newFragment = new FireMissilesDialogFragment();
+    newFragment.show(getSupportFragmentManager(), "missiles");
+}
+</pre>
+
+<p>Argumen kedua, {@code "missiles"}, adalah nama tag unik yang digunakan sistem untuk menyimpan
+dan memulihkan status fragmen bila diperlukan. Tag ini juga memungkinkan Anda mendapatkan handle ke
+fragmen dengan memanggil {@link android.support.v4.app.FragmentManager#findFragmentByTag
+findFragmentByTag()}.</p>
+
+
+
+
+<h2 id="FullscreenDialog">Menampilkan Dialog sebagai Layar Penuh atau Fragmen Tertanam</h2>
+
+<p>Anda mungkin memiliki desain UI yang di dalamnya Anda ingin UI muncul sebagai dialog dalam beberapa
+situasi, namun sebagai layar penuh atau fragmen tertanam dalam situasi lain (mungkin bergantung pada apakah
+perangkat memiliki layar besar atau layar kecil). Kelas {@link android.support.v4.app.DialogFragment}
+menawarkan fleksibilitas ini karena masih bisa berperilaku sebagai {@link
+android.support.v4.app.Fragment} yang bisa ditanamkan.</p>
+
+<p>Akan tetapi, dalam hal ini Anda tidak bisa menggunakan {@link android.app.AlertDialog.Builder AlertDialog.Builder}
+atau objek {@link android.app.Dialog} lain untuk membangun dialog. Jika
+Anda ingin {@link android.support.v4.app.DialogFragment} 
+bisa ditanamkan, Anda harus mendefinisikan dialog UI dalam layout, lalu memuat layout itu dalam metode callback
+{@link android.support.v4.app.DialogFragment#onCreateView
+onCreateView()}.</p>
+
+<p>Berikut ini adalah contoh {@link android.support.v4.app.DialogFragment} yang bisa muncul sebagai 
+dialog maupun fragmen yang bisa ditanamkan (menggunakan layout bernama <code>purchase_items.xml</code>):</p>
+
+<pre>
+public class CustomDialogFragment extends DialogFragment {
+    /** The system calls this to get the DialogFragment's layout, regardless
+        of whether it's being displayed as a dialog or an embedded fragment. */
+    &#64;Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        // Inflate the layout to use as dialog or embedded fragment
+        return inflater.inflate(R.layout.purchase_items, container, false);
+    }
+  
+    /** The system calls this only when creating the layout in a dialog. */
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // The only reason you might override this method when using onCreateView() is
+        // to modify any dialog characteristics. For example, the dialog includes a
+        // title by default, but your custom layout might not need it. So here you can
+        // remove the dialog title, but you must call the superclass to get the Dialog.
+        Dialog dialog = super.onCreateDialog(savedInstanceState);
+        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+        return dialog;
+    }
+}
+</pre>
+
+<p>Dan berikut ini adalah beberapa kode yang memutuskan apakah akan menampilkan fragmen sebagai dialog
+atau UI layar penuh, berdasarkan ukuran layar:</p>
+
+<pre>
+public void showDialog() {
+    FragmentManager fragmentManager = getSupportFragmentManager();
+    CustomDialogFragment newFragment = new CustomDialogFragment();
+    
+    if (mIsLargeLayout) {
+        // The device is using a large layout, so show the fragment as a dialog
+        newFragment.show(fragmentManager, "dialog");
+    } else {
+        // The device is smaller, so show the fragment fullscreen
+        FragmentTransaction transaction = fragmentManager.beginTransaction();
+        // For a little polish, specify a transition animation
+        transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
+        // To make it fullscreen, use the 'content' root view as the container
+        // for the fragment, which is always the root view for the activity
+        transaction.add(android.R.id.content, newFragment)
+                   .addToBackStack(null).commit();
+    }
+}
+</pre>
+
+<p>Untuk informasi selengkapnya tentang melakukan transaksi fragmen, lihat panduan
+<a href="{@docRoot}guide/components/fragments.html">Fragmen</a>.</p>
+
+<p>Dalam contoh ini, nilai boolean <code>mIsLargeLayout</code> menentukan apakah perangkat saat ini
+harus menggunakan desain layout besar aplikasi (dan dengan demikian menampilkan fragmen ini sebagai dialog, bukan
+layar penuh). Cara terbaik untuk mengatur jenis boolean ini adalah mendeklarasikan
+<a href="{@docRoot}guide/topics/resources/more-resources.html#Bool">nilai sumber daya boolean</a>
+dengan nilai <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">sumber daya alternatif</a> untuk berbagai ukuran layar. Misalnya, berikut ini adalah dua
+versi sumber daya boolean untuk berbagai ukuran layar:</p>
+
+<p class="code-caption">res/values/bools.xml</p>
+<pre>
+&lt;!-- Default boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">false&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p class="code-caption">res/values-large/bools.xml</p>
+<pre>
+&lt;!-- Large screen boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">true&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p>Selanjutnya Anda bisa menetapkan nilai {@code mIsLargeLayout} selama
+metode {@link android.app.Activity#onCreate onCreate()} aktivitas:</p>
+
+<pre>
+boolean mIsLargeLayout;
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_main);
+
+    mIsLargeLayout = getResources().getBoolean(R.bool.large_layout);
+}
+</pre>
+
+
+
+<h3 id="ActivityAsDialog">Menampilkan aktivitas sebagai dialog pada layar besar</h3>
+
+<p>Sebagai ganti menampilkan dialog berupa UI layar penuh saat di layar kecil, Anda bisa memperoleh
+hasil yang sama dengan menampilkan {@link android.app.Activity} sebagai dialog saat di
+layar besar. Pendekatan yang Anda pilih bergantung pada desain aplikasi, namun
+menampilkan aktivitas sebagai dialog sering kali berguna bila aplikasi Anda sudah didesain untuk
+layar kecil dan Anda ingin meningkatkan pengalaman pada tablet dengan menampilkan aktivitas berjangka pendek
+sebagai dialog.</p>
+
+<p>Untuk menampilkan aktivitas sebagai dialog hanya saat di layar besar,
+terapkan tema {@link android.R.style#Theme_Holo_DialogWhenLarge Theme.Holo.DialogWhenLarge}
+ pada elemen manifes <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a>:</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.DialogWhenLarge" >
+</pre>
+
+<p>Untuk informasi selengkapnya tentang mengatur gaya aktivitas Anda dengan tema, lihat panduan <a href="{@docRoot}guide/topics/ui/themes.html">Gaya dan Tema</a>.</p>
+
+
+
+<h2 id="DismissingADialog">Menutup Dialog</h2>
+
+<p>Bila pengguna menyentuh salah satu tombol tindakan yang dibuat dengan
+{@link android.app.AlertDialog.Builder}, sistem akan menutup dialog untuk Anda.</p>
+
+<p>Sistem juga menutup dialog bila pengguna menyentuh sebuah item dalam daftar dialog, kecuali
+bila daftar itu menggunakan tombol radio atau kotak cek. Jika tidak, Anda bisa menutup dialog secara manual
+dengan memanggil {@link android.support.v4.app.DialogFragment#dismiss()} pada {@link
+android.support.v4.app.DialogFragment} Anda.</p>
+
+<p>Jika Anda perlu melakukan
+tindakan tertentu saat dialog menghilang, Anda bisa menerapkan metode {@link
+android.support.v4.app.DialogFragment#onDismiss onDismiss()} dalam {@link
+android.support.v4.app.DialogFragment} Anda.</p>
+
+<p>Anda juga bisa <em>membatalkan</em> dialog. Ini merupakan kejadian khusus yang menunjukkan bahwa pengguna
+secara eksplisit meninggalkan dialog tanpa menyelesaikan tugas. Hal ini terjadi jika pengguna menekan tombol 
+<em>Back</em>, menyentuh layar di luar area dialog,
+atau jika Anda secara eksplisit memanggil {@link android.app.Dialog#cancel()} pada {@link
+android.app.Dialog} (seperti saat merespons tombol "Cancel" dalam dialog).</p>
+
+<p>Seperti yang ditampilkan dalam contoh di atas, Anda bisa merespons kejadian batal dengan menerapkan
+{@link android.support.v4.app.DialogFragment#onCancel onCancel()} dalam kelas {@link
+android.support.v4.app.DialogFragment} Anda.</p>
+
+<p class="note"><strong>Catatan:</strong> Sistem akan memanggil
+{@link android.support.v4.app.DialogFragment#onDismiss onDismiss()} pada tiap kejadian yang
+memanggil callback {@link android.support.v4.app.DialogFragment#onCancel onCancel()}. Akan tetapi,
+jika Anda memanggil {@link android.app.Dialog#dismiss Dialog.dismiss()} atau {@link
+android.support.v4.app.DialogFragment#dismiss DialogFragment.dismiss()},
+sistem akan memanggil {@link android.support.v4.app.DialogFragment#onDismiss onDismiss()} <em>namun
+bukan</em> {@link android.support.v4.app.DialogFragment#onCancel onCancel()}. Jadi biasanya Anda harus
+memanggil {@link android.support.v4.app.DialogFragment#dismiss dismiss()} bila pengguna menekan tombol
+<em>positif</em> dalam dialog untuk menghilangkan tampilan dialog.</p>
+
+
diff --git a/docs/html-intl/intl/in/guide/topics/ui/menus.jd b/docs/html-intl/intl/in/guide/topics/ui/menus.jd
new file mode 100644
index 0000000..2cd3e6a
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/ui/menus.jd
@@ -0,0 +1,1031 @@
+page.title=Menu
+parent.title=Antarmuka Pengguna
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Dalam dokumen ini</h2>
+<ol>
+  <li><a href="#xml">Mendefinisikan Menu dalam XML</a></li>
+  <li><a href="#options-menu">Membuat Menu Opsi</a>
+    <ol>
+      <li><a href="#RespondingOptionsMenu">Menangani kejadian klik</a></li>
+      <li><a href="#ChangingTheMenu">Mengubah item menu saat runtime</a></li>
+    </ol>
+  </li>
+  <li><a href="#context-menu">Membuat Menu Kontekstual</a>
+    <ol>
+      <li><a href="#FloatingContextMenu">Membuat menu konteks mengambang</a></li>
+      <li><a href="#CAB">Menggunakan mode tindakan kontekstual</a></li>
+    </ol>
+  </li>
+  <li><a href="#PopupMenu">Membuat Menu Popup</a>
+    <ol>
+      <li><a href="#PopupEvents">Menangani kejadian klik</a></li>
+    </ol>
+  </li>
+  <li><a href="#groups">Membuat Grup Menu</a>
+    <ol>
+      <li><a href="#checkable">Menggunakan item menu yang bisa diberi tanda cek</a></li>
+    </ol>
+  </li>
+  <li><a href="#intents">Menambahkan Item Menu Berdasarkan Intent</a>
+    <ol>
+      <li><a href="#AllowingToAdd">Memungkinkan aktivitas Anda ditambahkan ke menu lain</a></li>
+    </ol>
+  </li>
+</ol>
+
+  <h2>Kelas-kelas utama</h2>
+  <ol>
+    <li>{@link android.view.Menu}</li>
+    <li>{@link android.view.MenuItem}</li>
+    <li>{@link android.view.ContextMenu}</li>
+    <li>{@link android.view.ActionMode}</li>
+  </ol>
+
+  <h2>Lihat juga</h2>
+  <ol>
+    <li><a href="{@docRoot}guide/topics/ui/actionbar.html">Action-Bar</a></li>
+    <li><a href="{@docRoot}guide/topics/resources/menu-resource.html">Sumber Daya Menu</a></li>
+    <li><a href="http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html">Ucapkan
+Selamat Tinggal pada Tombol Menu</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Menu adalah komponen antarmuka pengguna yang lazim dalam banyak tipe aplikasi. Untuk menyediakan pengalaman pengguna yang sudah akrab
+dan konsisten, Anda harus menggunakan API {@link android.view.Menu} untuk menyajikan
+tindakan dan opsi lain dalam aktivitas kepada pengguna.</p>
+
+<p>Mulai dengan Android 3.0 (API level 11), perangkat berbasis Android tidak perlu lagi
+menyediakan tombol <em>Menu</em> tersendiri. Dengan perubahan ini, aplikasi Android harus bermigrasi dari 
+dependensi pada panel menu 6 item biasa, dan sebagai ganti menyediakan action-bar untuk menyajikan
+berbagai tindakan pengguna yang lazim.</p>
+
+<p>Walaupun desain dan pengalaman pengguna untuk sebagian item menu telah berubah, semantik untuk mendefinisikan
+serangkaian tindakan dan opsi masih berdasarkan pada API {@link android.view.Menu}. Panduan ini
+menampilkan cara membuat tiga tipe dasar penyajian menu atau tindakan pada semua
+versi Android:</p>
+
+<dl>
+  <dt><strong>Menu opsi dan action-bar</strong></dt>
+    <dd><a href="#options-menu">Menu opsi</a> adalah kumpulan item menu utama untuk suatu
+aktivitas. Inilah tempat Anda harus menempatkan tindakan yang berdampak global pada aplikasi, seperti
+"Cari", "Tulis email", dan "Pengaturan".
+  <p>Jika Anda mengembangkan aplikasi untuk Android 2.3 atau yang lebih rendah, pengguna bisa
+menampilkan panel menu opsi dengan menekan tombol <em>Menu</em>.</p>
+  <p>Pada Android 3.0 dan yang lebih tinggi, item menu opsi disajikan melalui <a href="{@docRoot}guide/topics/ui/actionbar.html">action-bar</a> sebagai kombinasi item tindakan
+di layar dan opsi overflow. Mulai dengan Android 3.0, tombol <em>Menu</em> dihilangkan (sebagian
+perangkat
+tidak memilikinya), sehingga Anda harus bermigrasi ke penggunaan action-bar untuk menyediakan akses ke tindakan dan
+opsi lainnya.</p>
+  <p>Lihat bagian tentang <a href="#options-menu">Membuat Menu Opsi</a>.</p>
+    </dd>
+    
+  <dt><strong>Menu konteks dan mode tindakan kontekstual</strong></dt>
+  
+   <dd>Menu konteks adalah <a href="#FloatingContextMenu">menu mengambang</a> yang muncul saat
+pengguna mengklik lama pada suatu elemen. Menu ini menyediakan tindakan yang memengaruhi konten atau
+bingkai konteks yang dipilih.
+  <p>Saat mengembangkan aplikasi untuk Android 3.0 dan yang lebih tinggi, sebagai gantinya Anda harus menggunakan <a href="#CAB">mode tindakan kontekstual</a> untuk memungkinkan tindakan pada konten yang dipilih. Mode ini menampilkan
+item tindakan yang memengaruhi konten yang dipilih dalam baris di bagian atas layar dan memungkinkan pengguna
+memilih beberapa item sekaligus.</p>
+  <p>Lihat bagian tentang <a href="#context-menu">Membuat Menu Kontekstual</a>.</p>
+</dd>
+    
+  <dt><strong>Menu popup</strong></dt>
+    <dd>Menu popup menampilkan daftar item secara vertikal yang dipasang pada tampilan yang
+memanggil menu. Ini cocok untuk menyediakan kelebihan tindakan yang terkait dengan konten tertentu atau
+untuk menyediakan opsi bagi bagian kedua dari suatu perintah. Tindakan di menu popup
+<strong>tidak</strong> boleh memengaruhi secara langsung konten yang bersangkutan&mdash;yang diperuntukkan bagi
+tindakan kontekstual. Melainkan, menu popup adalah untuk tindakan tambahan yang terkait dengan wilayah konten dalam
+aktivitas Anda.
+  <p>Lihat bagian tentang <a href="#PopupMenu">Membuat Menu Popup</a>.</p>
+</dd>
+</dl>
+
+
+
+<h2 id="xml">Mendefinisikan Menu dalam XML</h2>
+
+<p>Untuk semua tipe menu, Android menyediakan sebuah format XML standar untuk mendefinisikan item menu.
+Sebagai ganti membuat menu dalam kode aktivitas, Anda harus mendefinisikan menu dan semua itemnya dalam
+<a href="{@docRoot}guide/topics/resources/menu-resource.html">sumber daya menu</a> XML. Anda kemudian bisa
+memekarkan sumber daya menu (memuatnya sebagai objek {@link android.view.Menu}) dalam aktivitas atau
+fragmen.</p>
+
+<p>Menggunakan sumber daya menu adalah praktik yang baik karena beberapa alasan:</p>
+<ul>
+  <li>Memvisualisasikan struktur menu dalam XML menjadi lebih mudah.</li>
+  <li>Cara ini memisahkan konten untuk menu dari kode perilaku aplikasi Anda.</li>
+  <li>Cara ini memungkinkan Anda membuat konfigurasi menu alternatif untuk berbagai versi platform,
+ukuran layar, dan konfigurasi lainnya dengan memanfaatkan kerangka kerja <a href="{@docRoot}guide/topics/resources/index.html">sumber daya aplikasi</a>.</li>
+</ul>
+
+<p>Untuk mendefinisikan menu, buatlah sebuah file XML dalam direktori <code>res/menu/</code>
+proyek dan buat menu dengan elemen-elemen berikut:</p>
+<dl>
+  <dt><code>&lt;menu></code></dt>
+    <dd>Mendefinisikan {@link android.view.Menu}, yang merupakan sebuah kontainer untuk item menu. Elemen 
+<code>&lt;menu></code> harus menjadi simpul akar untuk file dan bisa menampung salah satu atau beberapa dari elemen
+<code>&lt;item></code> dan <code>&lt;group></code>.</dd>
+
+  <dt><code>&lt;item></code></dt>
+    <dd>Membuat {@link android.view.MenuItem}, yang mewakili satu item menu. Elemen ini
+bisa berisi elemen <code>&lt;menu></code> tersarang guna untuk membuat submenu.</dd>
+    
+  <dt><code>&lt;group></code></dt>
+    <dd>Kontainer opsional tak terlihat untuk elemen-elemen {@code &lt;item&gt;}. Kontainer ini memungkinkan Anda
+mengelompokkan item menu untuk berbagi properti seperti status aktif dan visibilitas. Untuk informasi
+selengkapnya, lihat bagian tentang <a href="#groups">Membuat Grup Menu</a>.</dd>
+</dl>
+
+
+<p>Berikut ini adalah contoh menu bernama <code>game_menu.xml</code>:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/new_game"
+          android:icon="@drawable/ic_new_game"
+          android:title="@string/new_game"
+          android:showAsAction="ifRoom"/&gt;
+    &lt;item android:id="@+id/help"
+          android:icon="@drawable/ic_help"
+          android:title="@string/help" /&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>Elemen <code>&lt;item></code> mendukung beberapa atribut yang bisa Anda gunakan untuk mendefinisikan penampilan dan perilaku
+item. Item menu di atas mencakup atribut berikut:</p>
+
+<dl>
+  <dt>{@code android:id}</dt>
+    <dd>ID sumber daya unik bagi item, yang memungkinkan aplikasi mengenali item
+bila pengguna memilihnya.</dd>
+  <dt>{@code android:icon}</dt>
+    <dd>Acuan ke drawable untuk digunakan sebagai ikon item.</dd>
+  <dt>{@code android:title}</dt>
+    <dd>Acuan ke string untuk digunakan sebagai judul item.</dd>
+  <dt>{@code android:showAsAction}</dt>
+    <dd>Menetapkan waktu dan cara item ini muncul sebagai item tindakan di <a href="{@docRoot}guide/topics/ui/actionbar.html">action-bar</a>.</dd>
+</dl>
+
+<p>Ini adalah atribut-atribut terpenting yang harus Anda gunakan, namun banyak lagi yang tersedia.
+Untuk informasi tentang semua atribut yang didukung, lihat dokumen <a href="{@docRoot}guide/topics/resources/menu-resource.html">Sumber Daya Menu</a>.</p>
+
+<p>Anda bisa menambahkan submenu ke sebuah item di menu (kecuali submenu) apa saja dengan menambahkan elemen {@code &lt;menu&gt;}
+sebagai anak {@code &lt;item&gt;}. Submenu berguna saat aplikasi Anda memiliki banyak
+fungsi yang bisa ditata ke dalam topik-topik, seperti item dalam sebuah baris menu aplikasi PC (File,
+Edit, Lihat, dsb.). Misalnya:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/file"
+          android:title="@string/file" &gt;
+        &lt;!-- "file" submenu --&gt;
+        &lt;menu&gt;
+            &lt;item android:id="@+id/create_new"
+                  android:title="@string/create_new" /&gt;
+            &lt;item android:id="@+id/open"
+                  android:title="@string/open" /&gt;
+        &lt;/menu&gt;
+    &lt;/item&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>Untuk menggunakan menu dalam aktivitas, Anda perlu memekarkan sumber daya menu (mengonversi sumber daya XML
+menjadi objek yang bisa diprogram) dengan menggunakan {@link android.view.MenuInflater#inflate(int,Menu)
+MenuInflater.inflate()}. Di bagian berikut, Anda akan melihat cara memekarkan menu untuk tiap
+tipe menu.</p>
+
+
+
+<h2 id="options-menu">Membuat Menu Opsi</h2>
+
+<div class="figure" style="width:200px;margin:0">
+  <img src="{@docRoot}images/options_menu.png" height="333" alt="" />
+  <p class="img-caption"><strong>Gambar 1.</strong> Menu opsi di
+Browser, pada Android 2.3.</p>
+</div>
+
+<p>Menu opsi adalah tempat Anda harus menyertakan tindakan dan opsi lain yang relevan dengan
+konteks aktivitas saat ini, seperti "Cari", "Tulis email", dan "Pengaturan".</p>
+
+<p>Tempat item dalam menu opsi muncul di layar bergantung pada versi aplikasi yang Anda
+kembangkan:</p>
+
+<ul>
+  <li>Jika Anda mengembangkan aplikasi untuk <strong>Android 2.3.x (API level 10) atau
+yang lebih rendah</strong>, konten menu opsi muncul pada bagian bawah layar bila pengguna
+menekan tombol <em>Menu</em>, seperti yang ditampilkan dalam gambar 1. Bila dibuka, bagian yang terlihat pertama adalah
+menu
+ikon, yang menampung hingga enam item menu. Jika menu Anda menyertakan lebih dari enam item, Android akan meletakkan
+item keenam dan sisanya ke dalam menu kelebihan, yang bisa dibuka pengguna dengan memilih
+<em>More</em>.</li>
+
+  <li>Jika Anda mengembangkan aplikasi untuk <strong>Android 3.0 (API level 11) dan
+yang lebih tinggi</strong>, item menu opsi tersedia dalam <a href="{@docRoot}guide/topics/ui/actionbar.html">action-bar</a>. Secara default, sistem
+meletakkan semua item dalam kelebihan tindakan, yang bisa ditampilkan pengguna dengan ikon kelebihan tindakan di
+sisi kanan action-bar (atau dengan menekan tombol <em>Menu</em> perangkat, jika tersedia). Untuk
+mengaktifkan
+akses cepat ke tindakan penting, Anda bisa mempromosikan beberapa item agar muncul pada action-bar dengan menambahkan
+{@code android:showAsAction="ifRoom"} ke elemen-elemen {@code &lt;item&gt;} yang bersangkutan (lihat gambar
+2). <p>Untuk informasi selengkapnya tentang item tindakan dan perilaku action-bar lainnya, lihat panduan <a href="{@docRoot}guide/topics/ui/actionbar.html">Action-Bar</a>. </p>
+<p class="note"><strong>Catatan:</strong> Sekalipun Anda <em>tidak</em> mengembangkan aplikasi untuk Android 3.0 atau
+yang lebih tinggi, Anda bisa membuat layout action-bar sendiri untuk mendapatkan efek serupa. Untuk contoh cara
+mendukung versi Android yang lebih lama dengan action-bar, lihat contoh <a href="{@docRoot}resources/samples/ActionBarCompat/index.html">Kompatibilitas Action-Bar</a>
+.</p>
+</li>
+</ul>
+
+<img src="{@docRoot}images/ui/actionbar.png" alt="" />
+<p class="img-caption"><strong>Gambar 2.</strong> Action-bar dari aplikasi <a href="{@docRoot}resources/samples/HoneycombGallery/index.html">Honeycomb Gallery</a>, yang menampilkan
+tab-tab navigasi dan item tindakan kamera (plus tombol kelebihan tindakan).</p>
+
+<p>Anda bisa mendeklarasikan item untuk menu opsi dari subkelas {@link android.app.Activity}
+atau subkelas {@link android.app.Fragment}. Jika aktivitas maupun fragmen Anda
+mendeklarasikan item menu opsi, keduanya akan dikombinasikan dalam UI. Item aktivitas akan muncul
+lebih dahulu, diikuti oleh item tiap fragmen sesuai dengan urutan penambahan fragmen ke
+aktivitas. Jika perlu, Anda bisa menyusun ulang item menu dengan atribut {@code android:orderInCategory}
+dalam setiap {@code &lt;item&gt;} yang perlu Anda pindahkan.</p>
+
+<p>Untuk menetapkan menu opsi suatu aktivitas, kesampingkan {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} (fragmen-fragmen menyediakan 
+callback {@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()} sendiri). Dalam metode ini
+, Anda bisa memekarkan sumber daya menu (<a href="#xml">yang didefinisikan dalam XML</a>) menjadi {@link
+android.view.Menu} yang disediakan dalam callback. Misalnya:</p>
+
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu) {
+    MenuInflater inflater = {@link android.app.Activity#getMenuInflater()};
+    inflater.inflate(R.menu.game_menu, menu);
+    return true;
+}
+</pre>
+
+<p>Anda juga bisa menambahkan item menu dengan menggunakan {@link android.view.Menu#add(int,int,int,int)
+add()} dan mengambil item dengan {@link android.view.Menu#findItem findItem()} untuk merevisi propertinya
+dengan API {@link android.view.MenuItem}.</p>
+
+<p>Jika Anda mengembangkan aplikasi untuk Android 2.3.x dan yang lebih rendah, sistem akan memanggil {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} untuk membuat menu opsi
+bila pengguna membuka menu untuk pertama kali. Jika Anda mengembangkan aplikasi untuk Android 3.0 dan yang lebih tinggi, 
+sistem akan memanggil {@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} saat
+memulai aktivitas, untuk menampilkan item menu pada action-bar.</p>
+
+
+
+<h3 id="RespondingOptionsMenu">Menangani kejadian klik</h3>
+
+<p>Bila pengguna memilih item dari menu opsi (termasuk item tindakan dalam action-bar),
+sistem akan memanggil metode {@link android.app.Activity#onOptionsItemSelected(MenuItem)
+onOptionsItemSelected()} aktivitas Anda. Metode ini meneruskan {@link android.view.MenuItem} yang dipilih. Anda
+bisa mengidentifikasi item dengan memanggil {@link android.view.MenuItem#getItemId()}, yang menghasilkan
+ID unik untuk item menu itu (yang didefinisikan oleh atribut {@code android:id} dalam sumber daya menu atau dengan 
+integer yang diberikan ke metode {@link android.view.Menu#add(int,int,int,int) add()}). Anda bisa mencocokkan
+ID ini dengan item menu yang diketahui untuk melakukan tindakan yang sesuai. Misalnya:</p>
+
+<pre>
+&#64;Override
+public boolean onOptionsItemSelected(MenuItem item) {
+    // Handle item selection
+    switch (item.getItemId()) {
+        case R.id.new_game:
+            newGame();
+            return true;
+        case R.id.help:
+            showHelp();
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+    }
+}
+</pre>
+
+<p>Bila Anda berhasil menangani sebuah item menu, kembalikan {@code true}. Jika tidak menangani item menu
+, Anda harus memanggil implementasi superkelas {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} (implementasi default
+menghasilkan false).</p>
+
+<p>Jika aktivitas Anda menyertakan fragmen, sistem akan memanggil lebih dahulu {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} untuk aktivitas, kemudian
+untuk setiap fragmen (sesuai dengan urutan penambahan fragmen) hingga satu fragmen mengembalikan
+{@code true} atau semua fragmen telah dipanggil.</p>
+
+<p class="note"><strong>Tip:</strong> Android 3.0 menambahkan kemampuan mendefinisikan perilaku on-click
+untuk item menu dalam XML, dengan menggunakan atribut {@code android:onClick}. Nilai atribut 
+harus berupa nama metode yang didefinisikan aktivitas dengan menggunakan menu. Metode
+harus bersifat publik dan menerima satu parameter {@link android.view.MenuItem}&mdash;bila sistem
+memanggilnya, metode ini akan meneruskan item menu yang dipilih. Untuk informasi selengkapnya dan contoh, lihat dokumen <a href="{@docRoot}guide/topics/resources/menu-resource.html">Sumber Daya Menu</a>.</p>
+
+<p class="note"><strong>Tip:</strong> Jika aplikasi Anda berisi banyak aktivitas dan
+sebagian menyediakan menu opsi yang sama, pertimbangkan untuk membuat
+aktivitas yang tidak mengimplementasikan apa-apa kecuali metode {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()} dan {@link android.app.Activity#onOptionsItemSelected(MenuItem)
+onOptionsItemSelected()}. Kemudian perluas kelas ini untuk setiap aktivitas yang harus menggunakan
+menu opsi yang sama. Dengan begini, Anda bisa mengelola satu set kode untuk menangani tindakan menu
+dan setiap kelas turunan mewarisi perilaku menu.
+Jika ingin menambahkan item menu ke salah satu aktivitas turunan,
+kesampingkan {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()} dalam aktivitas itu. Panggil {@code super.onCreateOptionsMenu(menu)} agar
+item menu asli dibuat, kemudian tambahkan item menu yang baru dengan {@link
+android.view.Menu#add(int,int,int,int) menu.add()}. Anda juga bisa mengesampingkan
+perilaku superkelas untuk setiap item menu.</p>
+
+
+<h3 id="ChangingTheMenu">Mengubah item menu saat runtime</h3>
+
+<p>Setelah sistem memanggil {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()}, sistem akan mempertahankan instance {@link android.view.Menu} yang Anda tempatkan dan
+tidak akan memanggil {@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}
+lagi kecuali menu diinvalidkan karena suatu alasan. Akan tetapi, Anda harus menggunakan {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} hanya untuk membuat
+status menu awal dan tidak untuk membuat perubahan selama daur hidup aktivitas.</p>
+
+<p>Jika Anda ingin mengubah menu opsi berdasarkan 
+kejadian yang terjadi selama daur hidup aktivitas, Anda bisa melakukannya dalam metode
+{@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}. Metode ini
+meneruskan objek {@link android.view.Menu} sebagaimana adanya saat ini sehingga Anda bisa mengubahnya,
+seperti menambah, menghapus, atau menonaktifkan item. (Fragmen juga menyediakan callback {@link
+android.app.Fragment#onPrepareOptionsMenu onPrepareOptionsMenu()}.)</p>
+
+<p>Pada Android 2.3.x dan yang lebih rendah, sistem akan memanggil {@link
+android.app.Activity#onPrepareOptionsMenu(Menu)
+onPrepareOptionsMenu()} setiap kali pengguna membuka menu opsi (menekan tombol <em>Menu</em>
+).</p>
+
+<p>Pada Android 3.0 dan yang lebih tinggi, menu opsi dianggap sebagai selalu terbuka saat item menu
+ditampilkan pada action-bar. Bila ada kejadian dan Anda ingin melakukan pembaruan menu, Anda harus
+memanggil {@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()} untuk meminta
+sistem memanggil {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}.</p>
+
+<p class="note"><strong>Catatan:</strong> 
+Anda tidak boleh mengubah item dalam menu opsi berdasarkan {@link android.view.View} yang saat ini
+difokus. Saat dalam mode sentuh (bila pengguna tidak sedang menggunakan trackball atau d-pad), tampilan
+tidak bisa mengambil fokus, sehingga Anda tidak boleh menggunakan fokus sebagai dasar untuk mengubah
+item dalam menu opsi. Jika Anda ingin menyediakan item menu yang peka konteks pada {@link
+android.view.View}, gunakan <a href="#context-menu">Menu Konteks</a>.</p>
+
+
+
+
+<h2 id="context-menu">Membuat Menu Kontekstual</h2>
+
+<div class="figure" style="width:420px;margin-top:-1em">
+  <img src="{@docRoot}images/ui/menu-context.png" alt="" />
+  <p class="img-caption"><strong>Gambar 3.</strong> Cuplikan layar menu konteks mengambang (kiri)
+dan action-bar kontekstual (kanan).</p>
+</div>
+
+<p>Menu kontekstual menawarkan tindakan yang memengaruhi item atau bingkai konteks tertentu dalam UI. Anda
+bisa menyediakan menu konteks untuk setiap tampilan, tetapi menu ini paling sering digunakan untuk item pada {@link
+android.widget.ListView}, {@link android.widget.GridView}, atau kumpulan tampilan lainnya yang bisa digunakan
+pengguna untuk melakukan tindakan langsung pada setiap item.</p>
+
+<p>Ada dua cara menyediakan tindakan kontekstual:</p>
+<ul>
+  <li>Dalam <a href="#FloatingContextMenu">menu konteks mengambang</a>. Menu muncul sebagai
+daftar item menu mengambang (serupa dengan dialog) bila pengguna mengklik lama (menekan dan
+menahan) pada tampilan yang mendeklarasikan dukungan bagi menu konteks. Pengguna bisa melakukan
+tindakan kontekstual pada satu item untuk setiap kalinya.</li>
+
+  <li>Dalam <a href="#CAB">mode tindakan kontekstual</a>. Mode ini adalah implementasi sistem
+{@link android.view.ActionMode} yang menampilkan <em>action-bar kontekstual</em> di bagian atas
+layar dengan item tindakan yang memengaruhi item(-item) yang dipilih. Bila mode ini aktif, pengguna
+bisa melakukan tindakan pada beberapa item sekaligus (jika aplikasi Anda mengizinkannya).</li>
+</ul>
+
+<p class="note"><strong>Catatan:</strong> Mode tindakan kontekstual tersedia pada Android 3.0 (API
+level 11) dan yang lebih tinggi dan merupakan teknik yang lebih disukai untuk menampilkan tindakan kontekstual bila
+tersedia. Jika aplikasi Anda mendukung versi yang lebih rendah daripada 3.0, maka Anda harus mundur ke
+menu konteks mengambang pada perangkat-perangkat itu.</p>
+
+
+<h3 id="FloatingContextMenu">Membuat menu konteks mengambang</h3>
+
+<p>Untuk menyediakan menu konteks mengambang:</p>
+<ol>
+  <li>Daftarkan {@link android.view.View} ke menu konteks yang harus dikaitkan dengan
+memanggil {@link android.app.Activity#registerForContextMenu(View) registerForContextMenu()} dan teruskan
+{@link android.view.View} ke menu itu.
+  <p>Jika aktivitas Anda menggunakan {@link android.widget.ListView} atau {@link android.widget.GridView} dan
+Anda ingin setiap item untuk menyediakan menu konteks yang sama, daftarkan semua item ke menu konteks dengan
+meneruskan {@link android.widget.ListView} atau {@link android.widget.GridView} ke {@link
+android.app.Activity#registerForContextMenu(View) registerForContextMenu()}.</p>
+</li>
+
+  <li>Implementasikan metode {@link
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()} 
+dalam {@link android.app.Activity} atau {@link android.app.Fragment} Anda.
+  <p>Bila tampilan yang terdaftar menerima kejadian klik-lama, sistem akan memanggil metode {@link
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()}
+Anda. Inilah tempat Anda mendefinisikan item menu, biasanya dengan memekarkan sumber daya menu. Misalnya:
+</p>
+<pre>
+&#64;Override
+public void onCreateContextMenu(ContextMenu menu, View v,
+                                ContextMenuInfo menuInfo) {
+    super.onCreateContextMenu(menu, v, menuInfo);
+    MenuInflater inflater = getMenuInflater();
+    inflater.inflate(R.menu.context_menu, menu);
+}
+</pre>
+
+<p>{@link android.view.MenuInflater} memungkinkan Anda untuk memekarkan menu konteks <a href="{@docRoot}guide/topics/resources/menu-resource.html">sumber daya menu</a>. Parameter metode callback
+menyertakan {@link android.view.View}
+yang dipilih pengguna dan objek {@link android.view.ContextMenu.ContextMenuInfo} yang menyediakan
+informasi tambahan tentang item yang dipilih. Jika aktivitas Anda memiliki beberapa tampilan yang masing-masingnya menyediakan
+menu konteks berbeda, Anda bisa menggunakan parameter ini untuk menentukan menu konteks yang harus
+dimekarkan.</p>
+</li>
+
+<li>Implementasikan {@link android.app.Activity#onContextItemSelected(MenuItem)
+onContextItemSelected()}.
+  <p>Bila pengguna memilih item menu, sistem akan memanggil metode ini sehingga Anda bisa melakukan 
+tindakan yang sesuai. Misalnya:</p>
+
+<pre>
+&#64;Override
+public boolean onContextItemSelected(MenuItem item) {
+    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
+    switch (item.getItemId()) {
+        case R.id.edit:
+            editNote(info.id);
+            return true;
+        case R.id.delete:
+            deleteNote(info.id);
+            return true;
+        default:
+            return super.onContextItemSelected(item);
+    }
+}
+</pre>
+
+<p>Metode {@link android.view.MenuItem#getItemId()} melakukan query ID untuk
+item menu yang dipilih, yang harus Anda tetapkan ke setiap item menu dalam XML dengan menggunakan atribut {@code
+android:id}, seperti yang ditampilkan di bagian tentang <a href="#xml">Mendefinisikan Menu dalam
+XML</a>.</p>
+
+<p>Bila Anda berhasil menangani sebuah item menu, kembalikan {@code true}. Jika tidak menangani item menu,
+Anda harus meneruskan item menu ke implementasi superkelas. Jika aktivitas Anda menyertakan fragmen,
+aktivitas akan menerima callback ini lebih dahulu. Dengan memanggil superkelas bila tidak ditangani, sistem
+meneruskan kejadian ke metode callback di setiap fragmen, satu per satu (sesuai dengan urutan
+penambahan fragmen) hingga {@code true} atau {@code false} dikembalikan. (Implementasi default
+untuk {@link android.app.Activity} dan {@code android.app.Fragment} mengembalikan {@code
+false}, sehingga Anda harus selalu memanggil superkelas bila tidak ditangani.)</p>
+</li>
+</ol>
+
+
+<h3 id="CAB">Menggunakan mode tindakan kontekstual</h3>
+
+<p>Mode tindakan kontekstual adalah implementasi sistem {@link android.view.ActionMode} yang
+memfokuskan interaksi pengguna pada upaya melakukan tindakan kontekstual. Bila seorang
+pengguna mengaktifkan mode ini dengan memilih item, <em>action-bar kontekstual</em> akan muncul di bagian atas
+layar untuk menampilkan tindakan yang bisa dilakukan pengguna pada item yang dipilih saat ini. Selagi mode ini
+diaktifkan, pengguna bisa memilih beberapa item (jika Anda mengizinkan), membatalkan pilihan item, dan melanjutkan
+penelusuran dalam aktivitas (sebanyak yang ingin Anda izinkan). Mode tindakan dinonaktifkan
+dan action-bar kontekstual menghilang bila pengguna membatalkan pilihan semua item, menekan tombol BACK,
+atau memilih tindakan <em>Done</em> di sisi kiri action-bar.</p>
+
+<p class="note"><strong>Catatan:</strong> Action-bar kontekstual tidak harus
+terkait dengan <a href="{@docRoot}guide/topics/ui/actionbar.html">action-bar</a>. Action-bar ini beroperasi
+secara independen, walaupun action-bar kontekstual secara visual mengambil alih
+posisi action-bar.</p>
+
+<p>Jika Anda mengembangkan aplikasi untuk Android 3.0 (API level 11) atau yang lebih tinggi, Anda
+biasanya harus menggunakan mode tindakan kontekstual untuk menampilkan tindakan kontekstual, sebagai ganti <a href="#FloatingContextMenu">menu konteks mengambang</a>.</p>
+
+<p>Untuk tampilan yang menyediakan tindakan kontekstual, Anda biasanya harus memanggil mode tindakan kontekstual
+pada salah satu dari dua kejadian (atau keduanya):</p>
+<ul>
+  <li>Pengguna mengklik-lama pada tampilan.</li>
+  <li>Pengguna memilih kotak cek atau komponen UI yang serupa dalam tampilan.</li>
+</ul>
+
+<p>Cara aplikasi memanggil mode tindakan kontekstual dan mendefinisikan perilaku setiap
+tindakan bergantung pada desain Anda. Pada dasarnya ada dua desain:</p>
+<ul>
+  <li>Untuk tindakan kontekstual pada tampilan individual dan tak didukung.</li>
+  <li>Untuk tindakan kontekstual batch pada grup item dalam {@link
+android.widget.ListView} atau {@link android.widget.GridView} (memungkinkan pengguna memilih beberapa
+item dan melakukan tindakan pada semua item itu).</li>
+</ul>
+
+<p>Bagian berikut ini menjelaskan penyiapan yang diperlukan untuk setiap skenario.</p>
+
+
+<h4 id="CABforViews">Mengaktifkan mode tindakan kontekstual untuk tampilan individual</h4>
+
+<p>Jika Anda ingin memanggil mode tindakan kontekstual hanya bila pengguna memilih
+tampilan tertentu, Anda harus:</p>
+<ol>
+  <li>Mengimplementasikan antarmuka {@link android.view.ActionMode.Callback}. Dalam metode callback-nya, Anda
+bisa menetapkan tindakan untuk action-bar kontekstual, merespons kejadian klik pada item tindakan, dan
+menangani kejadian daur hidup lainnya untuk mode tindakan itu.</li>
+  <li>Memanggil {@link android.app.Activity#startActionMode startActionMode()} bila Anda ingin menampilkan
+action-bar (seperti saat pengguna mengklik-lama pada tampilan).</li>
+</ol>
+
+<p>Misalnya:</p>
+
+<ol>
+  <li>Implementasikan antarmuka {@link android.view.ActionMode.Callback ActionMode.Callback}:
+<pre>
+private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
+
+    // Called when the action mode is created; startActionMode() was called
+    &#64;Override
+    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+        // Inflate a menu resource providing context menu items
+        MenuInflater inflater = mode.getMenuInflater();
+        inflater.inflate(R.menu.context_menu, menu);
+        return true;
+    }
+
+    // Called each time the action mode is shown. Always called after onCreateActionMode, but
+    // may be called multiple times if the mode is invalidated.
+    &#64;Override
+    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+        return false; // Return false if nothing is done
+    }
+
+    // Called when the user selects a contextual menu item
+    &#64;Override
+    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.menu_share:
+                shareCurrentItem();
+                mode.finish(); // Action picked, so close the CAB
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    // Called when the user exits the action mode
+    &#64;Override
+    public void onDestroyActionMode(ActionMode mode) {
+        mActionMode = null;
+    }
+};
+</pre>
+
+<p>Perhatikan bahwa kejadian callback ini hampir persis sama dengan callback untuk <a href="#options-menu">menu opsi</a>, hanya saja setiap callback ini juga meneruskan objek {@link
+android.view.ActionMode} yang terkait dengan kejadian. Anda bisa menggunakan API {@link
+android.view.ActionMode} untuk membuat berbagai perubahan pada CAB, seperti merevisi judul dan
+subjudul dengan {@link android.view.ActionMode#setTitle setTitle()} dan {@link
+android.view.ActionMode#setSubtitle setSubtitle()} (berguna untuk menunjukkan jumlah item
+yang dipilih).</p>
+
+<p>Juga perhatikan bahwa contoh di atas mengatur variabel {@code mActionMode} ke nol bila
+mode tindakan dimusnahkan. Dalam langkah berikutnya, Anda akan melihat cara variabel diinisialisasi dan kegunaan menyimpan
+variabel anggota dalam aktivitas atau fragmen.</p>
+</li>
+
+  <li>Panggil {@link android.app.Activity#startActionMode startActionMode()} untuk mengaktifkan
+mode tindakan kontekstual bila sesuai, seperti saat merespons klik-lama pada {@link
+android.view.View}:</p>
+
+<pre>
+someView.setOnLongClickListener(new View.OnLongClickListener() {
+    // Called when the user long-clicks on someView
+    public boolean onLongClick(View view) {
+        if (mActionMode != null) {
+            return false;
+        }
+
+        // Start the CAB using the ActionMode.Callback defined above
+        mActionMode = getActivity().startActionMode(mActionModeCallback);
+        view.setSelected(true);
+        return true;
+    }
+});
+</pre>
+
+<p>Bila Anda memanggil {@link android.app.Activity#startActionMode startActionMode()}, sistem akan mengembalikan
+{@link android.view.ActionMode} yang dibuat. Dengan menyimpannya dalam variabel anggota, Anda bisa
+membuat perubahan ke action-bar kontekstual sebagai respons terhadap kejadian lainnya. Dalam contoh di atas, 
+{@link android.view.ActionMode} digunakan untuk memastikan bahwa instance {@link android.view.ActionMode}
+tidak dibuat kembali jika sudah aktif, dengan memeriksa apakah anggota bernilai nol sebelum memulai
+mode tindakan.</p>
+</li>
+</ol>
+
+
+
+<h4 id="CABforListView">Mengaktifkan tindakan kontekstual batch dalam ListView atau GridView</h4>
+
+<p>Jika Anda memiliki sekumpulan item dalam {@link android.widget.ListView} atau {@link
+android.widget.GridView} (atau ekstensi {@link android.widget.AbsListView} lainnya) dan ingin
+mengizinkan pengguna melakukan tindakan batch, Anda harus:</p>
+
+<ul>
+  <li>Mengimplementasikan antarmuka {@link android.widget.AbsListView.MultiChoiceModeListener} dan mengaturnya
+untuk grup tampilan dengan {@link android.widget.AbsListView#setMultiChoiceModeListener
+setMultiChoiceModeListener()}. Dalam metode callback listener, Anda bisa menetapkan tindakan
+untuk action-bar kontekstual, merespons kejadian klik pada item tindakan, dan menangani callback lainnya
+yang diwarisi dari antarmuka {@link android.view.ActionMode.Callback}.</li>
+
+  <li>Panggil {@link android.widget.AbsListView#setChoiceMode setChoiceMode()} dengan argumen {@link
+android.widget.AbsListView#CHOICE_MODE_MULTIPLE_MODAL}.</li>
+</ul>
+
+<p>Misalnya:</p>
+
+<pre>
+ListView listView = getListView();
+listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
+listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
+
+    &#64;Override
+    public void onItemCheckedStateChanged(ActionMode mode, int position,
+                                          long id, boolean checked) {
+        // Here you can do something when items are selected/de-selected,
+        // such as update the title in the CAB
+    }
+
+    &#64;Override
+    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+        // Respond to clicks on the actions in the CAB
+        switch (item.getItemId()) {
+            case R.id.menu_delete:
+                deleteSelectedItems();
+                mode.finish(); // Action picked, so close the CAB
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    &#64;Override
+    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+        // Inflate the menu for the CAB
+        MenuInflater inflater = mode.getMenuInflater();
+        inflater.inflate(R.menu.context, menu);
+        return true;
+    }
+
+    &#64;Override
+    public void onDestroyActionMode(ActionMode mode) {
+        // Here you can make any necessary updates to the activity when
+        // the CAB is removed. By default, selected items are deselected/unchecked.
+    }
+
+    &#64;Override
+    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+        // Here you can perform updates to the CAB due to
+        // an {@link android.view.ActionMode#invalidate} request
+        return false;
+    }
+});
+</pre>
+
+<p>Demikian saja. Kini bila pengguna memilih item dengan klik-lama, sistem akan memanggil metode {@link
+android.widget.AbsListView.MultiChoiceModeListener#onCreateActionMode onCreateActionMode()}
+dan menampilkan action-bar kontekstual bersama tindakan yang ditetapkan. Saat
+action-bar kontekstual terlihat, pengguna bisa memilih item tambahan.</p>
+
+<p>Dalam beberapa kasus di mana tindakan kontekstual menyediakan item tindakan umum, Anda mungkin
+ingin menambahkan kotak cek atau elemen UI serupa yang memungkinkan pengguna memilih item, karena pengguna
+mungkin tidak menemukan perilaku klik-lama. Bila pengguna memilih kotak cek itu, Anda
+bisa memanggil mode tindakan kontekstual dengan mengatur item daftar yang bersangkutan ke
+status diberi tanda cek dengan {@link android.widget.AbsListView#setItemChecked setItemChecked()}.</p>
+
+
+
+
+<h2 id="PopupMenu">Membuat Menu Popup</h2>
+
+<div class="figure" style="width:220px">
+<img src="{@docRoot}images/ui/popupmenu.png" alt="" />
+<p><strong>Gambar 4.</strong> Menu popup dalam aplikasi Gmail, dikaitkan pada
+tombol kelebihan di sudut kanan atas.</p>
+</div>
+
+<p>{@link android.widget.PopupMenu} adalah menu modal yang dikaitkan pada {@link android.view.View}.
+Menu ini muncul di bawah tampilan jangkar jika ada ruang, atau di atas tampilan jika tidak ada. Menu ini berguna untuk:</p>
+<ul>
+  <li>Menyediakan menu bergaya kelebihan (overflow) untuk tindakan yang <em>berkaitan dengan</em> konten tertentu (seperti
+header email Gmail, yang ditampilkan dalam gambar 4).
+    <p class="note"><strong>Catatan:</strong> Ini tidak sama dengan menu konteks, yang umumnya
+untuk tindakan yang <em>memengaruhi</em> konten yang dipilih. Untuk tindakan yang memengaruhi
+konten yang dipilih, gunakan <a href="#CAB">mode tindakan kontekstual</a> atau <a href="#FloatingContextMenu">menu konteks mengambang</a>.</p></li>
+  <li>Menyediakan bagian kedua dari kalimat perintah (seperti tombol bertanda "Tambah"
+yang menghasilkan menu popup dengan berbagai opsi "Tambah").</li>
+  <li>Menyediakan daftar menurun yang serupa dengan {@link android.widget.Spinner} yang tidak mempertahankan
+pilihan persisten.</li>
+</ul>
+
+
+<p class="note"><strong>Catatan:</strong> {@link android.widget.PopupMenu} tersedia dengan API
+level 11 dan yang lebih tinggi.</p>
+
+<p>Jika Anda <a href="#xml">mendefinisikan menu dalam XML</a>, berikut ini adalah cara Anda menampilkan menu popup:</p>
+<ol>
+  <li>Buat instance {@link android.widget.PopupMenu} bersama konstruktornya, yang mengambil
+aplikasi saat ini {@link android.content.Context} dan {@link android.view.View} yang akan menjadi tempat mengaitkan
+menu.</li>
+  <li>Gunakan {@link android.view.MenuInflater} untuk memekarkan sumber daya menu Anda ke dalam objek {@link
+android.view.Menu} yang dikembalikan oleh {@link
+android.widget.PopupMenu#getMenu() PopupMenu.getMenu()}. Pada API level 14 ke atas, Anda bisa menggunakan
+{@link android.widget.PopupMenu#inflate PopupMenu.inflate()} sebagai gantinya.</li>
+  <li>Panggil {@link android.widget.PopupMenu#show() PopupMenu.show()}.</li>
+</ol>
+
+<p>Misalnya, berikut ini adalah tombol dengan atribut {@link android.R.attr#onClick android:onClick}
+yang menampilkan menu popup:</p>
+
+<pre>
+&lt;ImageButton
+    android:layout_width="wrap_content" 
+    android:layout_height="wrap_content" 
+    android:src="@drawable/ic_overflow_holo_dark"
+    android:contentDescription="@string/descr_overflow_button"
+    android:onClick="showPopup" />
+</pre>
+
+<p>Aktivitas nanti bisa menampilkan menu popup seperti ini:</p>
+
+<pre>
+public void showPopup(View v) {
+    PopupMenu popup = new PopupMenu(this, v);
+    MenuInflater inflater = popup.getMenuInflater();
+    inflater.inflate(R.menu.actions, popup.getMenu());
+    popup.show();
+}
+</pre>
+
+<p>Dalam API level 14 dan yang lebih tinggi, Anda bisa menggabungkan dua baris yang memekarkan menu dengan {@link
+android.widget.PopupMenu#inflate PopupMenu.inflate()}.</p>
+
+<p>Menu akan menghilang bila pengguna memilih item atau menyentuh di luar
+area menu. Anda bisa mendengarkan kejadian menghilangkan dengan menggunakan {@link
+android.widget.PopupMenu.OnDismissListener}.</p>
+
+<h3 id="PopupEvents">Menangani kejadian klik</h3>
+
+<p>Untuk melakukan suatu
+tindakan bila pengguna memilih item menu, Anda harus mengimplementasikan antarmuka {@link
+android.widget.PopupMenu.OnMenuItemClickListener} dan mendaftarkannya pada {@link
+android.widget.PopupMenu} dengan memanggil {@link android.widget.PopupMenu#setOnMenuItemClickListener
+setOnMenuItemclickListener()}. Bila pengguna memilih item, sistem akan memanggil callback {@link
+android.widget.PopupMenu.OnMenuItemClickListener#onMenuItemClick onMenuItemClick()} dalam
+antarmuka Anda.</p>
+
+<p>Misalnya:</p>
+
+<pre>
+public void showMenu(View v) {
+    PopupMenu popup = new PopupMenu(this, v);
+
+    // This activity implements OnMenuItemClickListener
+    popup.setOnMenuItemClickListener(this);
+    popup.inflate(R.menu.actions);
+    popup.show();
+}
+
+&#64;Override
+public boolean onMenuItemClick(MenuItem item) {
+    switch (item.getItemId()) {
+        case R.id.archive:
+            archive(item);
+            return true;
+        case R.id.delete:
+            delete(item);
+            return true;
+        default:
+            return false;
+    }
+}
+</pre>
+
+
+<h2 id="groups">Membuat Grup Menu</h2>
+
+<p>Grup menu adalah sekumpulan item menu yang sama-sama memiliki ciri (trait) tertentu. Dengan grup, Anda
+bisa:</p>
+<ul>
+  <li>Menampilkan atau menyembunyikan semua item dengan {@link android.view.Menu#setGroupVisible(int,boolean)
+setGroupVisible()}</li>
+  <li>Mengaktifkan atau mennonaktifkan semua item dengan {@link android.view.Menu#setGroupEnabled(int,boolean)
+setGroupEnabled()}</li>
+  <li>Menetapkan apakah semua item bisa diberi tanda cek dengan {@link
+android.view.Menu#setGroupCheckable(int,boolean,boolean) setGroupCheckable()}</li>
+</ul>
+
+<p>Anda bisa membuat grup dengan menyarangkan elemen-elemen {@code &lt;item&gt;} dalam elemen {@code &lt;group&gt;}
+dalam sumber daya menu atau dengan menetapkan ID grup dengan metode {@link
+android.view.Menu#add(int,int,int,int) add()}.</p>
+
+<p>Berikut ini adalah contoh sumber daya menu yang berisi sebuah grup:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/menu_save"
+          android:icon="@drawable/menu_save"
+          android:title="@string/menu_save" /&gt;
+    &lt;!-- menu group --&gt;
+    &lt;group android:id="@+id/group_delete"&gt;
+        &lt;item android:id="@+id/menu_archive"
+              android:title="@string/menu_archive" /&gt;
+        &lt;item android:id="@+id/menu_delete"
+              android:title="@string/menu_delete" /&gt;
+    &lt;/group&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>Item yang berada dalam grup akan muncul pada level yang sama dengan item pertama&mdash;ketiga item
+dalam menu adalah bersaudara. Akan tetapi, Anda bisa memodifikasi ciri kedua
+item dalam grup dengan mengacu ID grup dan menggunakan metode yang tercantum di atas. Sistem
+juga tidak akan memisahkan item yang telah dikelompokkan. Misalnya, jika Anda mendeklarasikan {@code
+android:showAsAction="ifRoom"} untuk tiap item, item tersebut akan muncul dalam
+action-bar atau dalam kelebihan tindakan.</p>
+
+
+<h3 id="checkable">Menggunakan item menu yang bisa diberi tanda cek</h3>
+
+<div class="figure" style="width:200px">
+  <img src="{@docRoot}images/radio_buttons.png" height="333" alt="" />
+  <p class="img-caption"><strong>Gambar 5.</strong> Cuplikan layar submenu dengan
+item yang bisa diberi tanda cek.</p>
+</div>
+
+<p>Menu bisa digunakan sebagai antarmuka untuk mengaktifkan dan menonaktifkan opsi, menggunakan kotak cek untuk
+opsi mandiri, atau tombol radio untuk grup
+opsi yang saling eksklusif. Gambar 5 menampilkan submenu dengan item yang bisa diberi tanda cek dengan
+tombol radio.</p>
+
+<p class="note"><strong>Catatan:</strong> Item menu dalam Icon Menu (dari menu opsi) tidak bisa
+menampilkan kotak cek atau tombol radio. Jika Anda memilih untuk membuat item dalam Icon Menu yang bisa diberi tanda cek,
+Anda harus menandai status diberi tanda cek secara manual dengan menukar ikon dan/atau teks
+tiap kali statusnya berubah.</p>
+
+<p>Anda bisa mendefinisikan perilaku yang bisa diberi tanda cek untuk tiap item menu dengan menggunakan atribut {@code
+android:checkable} dalam elemen {@code &lt;item&gt;}, atau untuk seluruh grup dengan
+atribut {@code android:checkableBehavior} dalam elemen {@code &lt;group&gt;}. Misalnya
+, semua item dalam grup menu ini bisa diberi tanda cek dengan tombol radio:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;group android:checkableBehavior="single"&gt;
+        &lt;item android:id="@+id/red"
+              android:title="@string/red" /&gt;
+        &lt;item android:id="@+id/blue"
+              android:title="@string/blue" /&gt;
+    &lt;/group&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>Atribut {@code android:checkableBehavior} menerima:
+<dl>
+  <dt>{@code single}</dt>
+    <dd>Hanya satu item dari grup ini yang bisa diberi tanda cek (tombol radio)</dd>
+  <dt>{@code all}</dt>
+    <dd>Semua item bisa diberi tanda cek (kotak cek)</dd>
+  <dt>{@code none}</dt>
+    <dd>Tidak ada item yang bisa diberi tanda cek</dd>
+</dl>
+
+<p>Anda bisa menerapkan status diberi tanda cek default pada suatu item dengan menggunakan atribut {@code android:checked} dalam
+elemen {@code &lt;item&gt;} dan mengubahnya dalam kode dengan metode {@link
+android.view.MenuItem#setChecked(boolean) setChecked()}.</p>
+
+<p>Bila item yang bisa diberi tanda cek dipilih, sistem akan memanggil metode callback setiap item yang dipilih
+(seperti {@link android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}). Di sinilah
+Anda harus mengatur status kotak cek itu, karena kotak cek atau tombol radio tidak
+mengubah statusnya secara otomatis. Anda bisa melakukan query status saat ini suatu item (seperti sebelum
+pengguna memilihnya) dengan {@link android.view.MenuItem#isChecked()} kemudian mengatur status diberi tanda cek dengan
+{@link android.view.MenuItem#setChecked(boolean) setChecked()}. Misalnya:</p>
+
+<pre>
+&#64;Override
+public boolean onOptionsItemSelected(MenuItem item) {
+    switch (item.getItemId()) {
+        case R.id.vibrate:
+        case R.id.dont_vibrate:
+            if (item.isChecked()) item.setChecked(false);
+            else item.setChecked(true);
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+    }
+}
+</pre>
+
+<p>Jika Anda tidak mengatur status diberi tanda cek dengan cara ini, maka status item (kotak cek atau
+tombol radio) yang terlihat tidak akan
+berubah bila pengguna memilihnya. Bila Anda telah mengatur status, aktivitas akan menjaga status diberi tanda cek
+suatu item sehingga bila nanti pengguna membuka menu, status diberi tanda cek yang Anda
+atur akan terlihat.</p>
+
+<p class="note"><strong>Catatan:</strong>
+Item menu yang bisa diberi tanda cek dimaksudkan untuk digunakan hanya atas dasar per sesi dan tidak disimpan setelah
+aplikasi dimusnahkan. Jika Anda memiliki pengaturan aplikasi yang ingin disimpan untuk pengguna,
+Anda harus menyimpan data dengan menggunakan <a href="{@docRoot}guide/topics/data/data-storage.html#pref">Shared Preferences</a>.</p>
+
+
+
+<h2 id="intents">Menambahkan Item Menu Berdasarkan Intent</h2>
+
+<p>Kadang-kadang Anda ingin supaya item menu menjalankan aktivitas dengan menggunakan {@link android.content.Intent}
+(baik aktivitas berada dalam aplikasi Anda maupun di aplikasi lain). Bila Anda mengetahui intent
+yang ingin digunakan dan memiliki item menu tertentu yang harus memulai intent, Anda bisa mengeksekusi
+intent dengan {@link android.app.Activity#startActivity(Intent) startActivity()} selama
+metode callback bila-item-dipilih yang sesuai (seperti callback {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}).</p>
+
+<p>Akan tetapi, jika Anda tidak yakin apakah perangkat pengguna
+berisi aplikasi yang menangani intent, maka menambahkan item menu yang memanggilnya bisa mengakibatkan
+item menu tidak berfungsi, karena intent tidak bisa diterjemahkan menjadi
+aktivitas. Untuk mengatasi hal ini, Android memungkinkan Anda menambahkan item menu secara dinamis ke menu
+bila Android menemukan aktivitas pada perangkat yang menangani intent Anda.</p>
+
+<p>Untuk menambahkan item menu berdasarkan aktivitas tersedia yang menerima intent:</p>
+<ol>
+  <li>Definisikan
+intent dengan kategori {@link android.content.Intent#CATEGORY_ALTERNATIVE} dan/atau
+{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE}, plus kebutuhan lainnya.</li>
+  <li>Panggil {@link
+android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+Menu.addIntentOptions()}. Android kemudian akan mencari setiap aplikasi yang bisa melakukan intent
+dan menambahkannya ke menu Anda.</li>
+</ol>
+
+<p>Jika tidak ada aplikasi terinstal
+yang memenuhi intent, maka tidak ada item menu yang ditambahkan.</p>
+
+<p class="note"><strong>Catatan:</strong>
+{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} digunakan untuk menangani
+elemen yang saat ini dipilih pada layar. Jadi, metode hanya digunakan saat membuat Menu dalam {@link
+android.app.Activity#onCreateContextMenu(ContextMenu,View,ContextMenuInfo)
+onCreateContextMenu()}.</p>
+
+<p>Misalnya:</p>
+
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu){
+    super.onCreateOptionsMenu(menu);
+
+    // Create an Intent that describes the requirements to fulfill, to be included
+    // in our menu. The offering app must include a category value of Intent.CATEGORY_ALTERNATIVE.
+    Intent intent = new Intent(null, dataUri);
+    intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
+
+    // Search and populate the menu with acceptable offering applications.
+    menu.addIntentOptions(
+         R.id.intent_group,  // Menu group to which new items will be added
+         0,      // Unique item ID (none)
+         0,      // Order for the items (none)
+         this.getComponentName(),   // The current activity name
+         null,   // Specific items to place first (none)
+         intent, // Intent created above that describes our requirements
+         0,      // Additional flags to control items (none)
+         null);  // Array of MenuItems that correlate to specific items (none)
+
+    return true;
+}</pre>
+
+<p>Untuk setiap aktivitas yang diketahui menyediakan filter intent yang cocok dengan intent yang didefinisikan, item menu
+akan ditambahkan, menggunakan nilai dalam filter intent <code>android:label</code> sebagai
+judul item menu dan ikon aplikasi sebagai ikon item menu. Metode
+{@link android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+addIntentOptions()} mengembalikan jumlah item menu yang ditambahkan.</p>
+
+<p class="note"><strong>Catatan:</strong> Bila Anda memanggil {@link
+android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+addIntentOptions()}, metode ini akan mengesampingkan setiap dan semua item menu menurut grup menu yang ditetapkan dalam argumen
+pertama.</p>
+
+
+<h3 id="AllowingToAdd">Memungkinkan aktivitas Anda ditambahkan ke menu lain</h3>
+
+<p>Anda juga bisa menawarkan layanan aktivitas Anda pada aplikasi lainnya, sehingga
+aplikasi Anda bisa disertakan dalam menu aplikasi lain (membalik peran yang dijelaskan di atas).</p>
+
+<p>Agar bisa dimasukkan dalam menu aplikasi lain, Anda perlu mendefinisikan 
+filter intent seperti biasa, tetapi pastikan menyertakan nilai-nilai {@link android.content.Intent#CATEGORY_ALTERNATIVE}
+dan/atau {@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} untuk
+kategori filter intent. Misalnya:</p>
+<pre>
+&lt;intent-filter label="&#64;string/resize_image">
+    ...
+    &lt;category android:name="android.intent.category.ALTERNATIVE" />
+    &lt;category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
+    ...
+&lt;/intent-filter>
+</pre>
+
+<p>Baca selengkapnya tentang penulisan filter intent dalam dokumen
+<a href="/guide/components/intents-filters.html">Intent dan Filter Intent</a>.</p>
+
+<p>Untuk contoh aplikasi yang menggunakan teknik ini, lihat contoh kode 
+<a href="{@docRoot}resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html">Note
+Pad</a>.</p>
diff --git a/docs/html-intl/intl/in/guide/topics/ui/notifiers/notifications.jd b/docs/html-intl/intl/in/guide/topics/ui/notifiers/notifications.jd
new file mode 100644
index 0000000..9033b9f
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/ui/notifiers/notifications.jd
@@ -0,0 +1,979 @@
+page.title=Pemberitahuan
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Dalam dokumen ini</h2>
+<ol>
+  <li><a href="#Design">Pertimbangan Desain</a></li>
+  <li><a href="#CreateNotification">Membuat Pemberitahuan</a>
+    <ol>
+      <li><a href="#Required">Isi pemberitahuan yang diperlukan</a></li>
+      <li><a href="#Optional">Isi dan pengaturan pemberitahuan opsional</a></li>
+      <li><a href="#Actions">Tindakan pemberitahuan</a></li>
+      <li><a href="#Priority">Prioritas pemberitahuan</a></li>
+      <li><a href="#SimpleNotification">Membuat pemberitahuan sederhana</a></li>
+      <li><a href="#ApplyStyle">Menerapkan layout yang diperluas pada pemberitahuan</a></li>
+      <li><a href="#Compatibility">Menangani kompatibilitas</a></li>
+    </ol>
+  </li>
+  <li><a href="#Managing">Mengelola Pemberitahuan</a>
+    <ol>
+      <li><a href="#Updating">Memperbarui pemberitahuan</a></li>
+      <li><a href="#Removing">Menghapus pemberitahuan</a></li>
+    </ol>
+  </li>
+  <li><a href="#NotificationResponse">Mempertahankan Navigasi saat Memulai Aktivitas</a>
+    <ol>
+      <li><a href="#DirectEntry">Menyiapkan PendingIntent aktivitas biasa</a></li>
+      <li><a href="#ExtendedNotification">Menyiapkan PendingIntent aktivitas khusus</a></li>
+    </ol>
+  </li>
+  <li><a href="#Progress">Menampilkan Kemajuan dalam Pemberitahuan</a>
+    <ol>
+      <li><a href="#FixedProgress">Menampilkan indikator kemajuan berdurasi tetap</a></li>
+      <li><a href="#ActivityIndicator">Menampilkan indikator aktivitas berlanjut</a></li>
+    </ol>
+  </li>
+  <li><a href="#metadata">Metadata Pemberitahuan</a></li>
+  <li><a href="#Heads-up">Pemberitahuan Pendahuluan</a></li>
+  <li><a href="#lockscreenNotification">Pemberitahuan Layar Kunci</a></li>
+    <ol>
+      <li><a href="#visibility">Mengatur Visibilitas</a></li>
+      <li><a href="#controllingMedia">Mengontrol Pemutaran Media pada Layar Kunci</a></li>
+    </ol>
+  <li><a href="#CustomNotification">Layout Pemberitahuan Custom</a></li>
+</ol>
+
+    <h2>Kelas-kelas utama</h2>
+    <ol>
+        <li>{@link android.app.NotificationManager}</li>
+        <li>{@link android.support.v4.app.NotificationCompat}</li>
+    </ol>
+    <h2>Video</h2>
+    <ol>
+        <li>
+            <a href="http://www.youtube.com/watch?v=Yc8YrVc47TI&amp;feature=player_detailpage#t=1672s">
+            Pemberitahuan di 4.1</a>
+        </li>
+    </ol>
+<h2>Lihat juga</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}design/patterns/notifications.html">Desain Android: Pemberitahuan</a>
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    Pemberitahuan adalah pesan yang bisa Anda tampilkan kepada pengguna di luar
+    UI normal aplikasi. Bila Anda memberi tahu sistem untuk mengeluarkan pemberitahuan, pemberitahuan akan muncul lebih dahulu sebagai ikon dalam
+    <strong>area pemberitahuan</strong>. Untuk melihat detail pemberitahuan, pengguna membuka
+    <strong>laci pemberitahuan</strong>. Baik area pemberitahuan maupun laci pemberitahuan
+    adalah area-area yang dikontrol sistem yang bisa dilihat pengguna kapan saja.
+</p>
+<img id="figure1" src="{@docRoot}images/ui/notifications/notification_area.png" height="" alt="" />
+<p class="img-caption">
+    <strong>Gambar 1.</strong> Pemberitahuan di area pemberitahuan.
+</p>
+<img id="figure2" src="{@docRoot}images/ui/notifications/notification_drawer.png" width="280px" alt="" />
+<p class="img-caption">
+    <strong>Gambar 2.</strong> Pemberitahuan di laci pemberitahuan.
+</p>
+
+<p class="note"><strong>Catatan:</strong> Kecuali disebutkan, panduan ini mengacu pada
+kelas {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder}
+dalam <a href="{@docRoot}tools/support-library/index.html">Support Library</a> versi 4.
+Kelas {@link android.app.Notification.Builder Notification.Builder} telah ditambahkan pada Android
+3.0 (API level 11).</p>
+
+<h2 id="Design">Pertimbangan Desain</h2>
+
+<p>Pemberitahuan, sebagai bagian penting dari antarmuka pengguna Android, memiliki panduan desainnya sendiri.
+Perubahan desain materi yang diperkenalkan dalam Android 5.0 (API level 21) adalah sangat
+penting, dan Anda harus meninjau pelatihan <a href="{@docRoot}training/material/index.html">Desain Bahan</a>
+untuk informasi selengkapnya. Untuk mengetahui cara mendesain pemberitahuan dan interaksinya, bacalah panduan desain
+<a href="{@docRoot}design/patterns/notifications.html">Pemberitahuan</a>.</p>
+
+<h2 id="CreateNotification">Membuat Pemberitahuan</h2>
+
+<p>Anda menetapkan informasi dan tindakan UI bagi pemberitahuan dalam
+objek {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder}.
+Untuk membuat pemberitahuan itu sendiri, panggil
+{@link android.support.v4.app.NotificationCompat.Builder#build NotificationCompat.Builder.build()},
+yang akan mengembalikan objek {@link android.app.Notification} berisi spesifikasi Anda. Untuk mengeluarkan
+pemberitahuan, Anda meneruskan objek {@link android.app.Notification} ke sistem dengan memanggil
+{@link android.app.NotificationManager#notify NotificationManager.notify()}.</p>
+
+<h3 id="Required">Isi pemberitahuan yang diperlukan</h3>
+<p>
+    Objek {@link android.app.Notification} <em>harus</em> berisi yang berikut ini:
+</p>
+<ul>
+    <li>
+        Ikon kecil, yang diatur dengan
+        {@link android.support.v4.app.NotificationCompat.Builder#setSmallIcon setSmallIcon()}
+    </li>
+    <li>
+        Judul, yang diatur dengan
+        {@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()}
+    </li>
+    <li>
+        Teks detail, yang diatur dengan
+        {@link android.support.v4.app.NotificationCompat.Builder#setContentText setContentText()}
+    </li>
+</ul>
+<h3 id="Optional">Isi dan pengaturan pemberitahuan opsional</h3>
+<p>
+    Semua isi dan pengaturan pemberitahuan lainnya bersifat opsional. Untuk mengetahui selengkapnya tentang semua itu,
+    lihat dokumentasi acuan untuk {@link android.support.v4.app.NotificationCompat.Builder}.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Actions">Tindakan pemberitahuan</h3>
+<p>
+    Walaupun bersifat opsional, Anda harus menambahkan setidaknya satu tindakan pada pemberitahuan.
+    Tindakan memungkinkan pengguna beralih langsung dari pemberitahuan ke
+    {@link android.app.Activity} dalam aplikasi Anda, tempat pengguna bisa melihat satu atau beberapa kejadian
+    atau melakukan pekerjaan lebih jauh.
+</p>
+<p>
+    Pemberitahuan bisa menyediakan beberapa tindakan sekaligus. Anda harus selalu mendefinisikan tindakan yang
+    akan diaktifkan bila pengguna mengklik pemberitahuan; biasanya tindakan ini akan membuka
+    {@link android.app.Activity} dalam aplikasi Anda. Anda juga bisa menambahkan tombol pada pemberitahuan
+    yang melakukan tindakan tambahan seperti mendiamkan alarm atau segera merespons
+    pesan teks; fitur ini tersedia mulai Android 4.1. Jika menggunakan tombol tindakan tambahan, Anda
+    juga harus membuat fungsionalitasnya tersedia dalam {@link android.app.Activity} di aplikasi Anda; lihat
+    bagian <a href="#Compatibility">Menangani kompatibilitas</a> untuk detail selengkapnya.
+</p>
+<p>
+    Dalam {@link android.app.Notification}, tindakan itu sendiri didefinisikan oleh
+    {@link android.app.PendingIntent} berisi 
+    {@link android.content.Intent} yang memulai
+    {@link android.app.Activity} dalam aplikasi Anda. Untuk mengaitkan
+    {@link android.app.PendingIntent} dengan gestur, panggil metode
+    {@link android.support.v4.app.NotificationCompat.Builder} yang sesuai. Misalnya, jika ingin memulai
+    {@link android.app.Activity} bila pengguna mengklik teks pemberitahuan pada
+    laci pemberitahuan, tambahkan {@link android.app.PendingIntent} dengan memanggil
+    {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent setContentIntent()}.
+</p>
+<p>
+    Memulai {@link android.app.Activity} bila pengguna mengklik pemberitahuan adalah
+    skenario tindakan yang paling umum. Anda juga bisa memulai {@link android.app.Activity} bila pengguna
+    menghilangkan pemberitahuan. Dalam Android 4.1 dan yang lebih baru, Anda bisa memulai
+    {@link android.app.Activity} dari tombol tindakan. Untuk mengetahui selengkapnya, bacalah panduan acuan untuk
+    {@link android.support.v4.app.NotificationCompat.Builder}.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Priority">Prioritas pemberitahuan</h3>
+<p>
+    Jika diinginkan, Anda bisa mengatur prioritas pemberitahuan. Prioritas berfungsi
+    sebagai petunjuk bagi UI perangkat tentang cara menampilkan pemberitahuan.
+    Untuk mengatur prioritas pemberitahuan, panggil {@link
+    android.support.v4.app.NotificationCompat.Builder#setPriority(int)
+    NotificationCompat.Builder.setPriority()} dan teruskan salah satu konstanta prioritas {@link
+    android.support.v4.app.NotificationCompat}. Ada
+    lima level prioritas, mulai dari {@link
+    android.support.v4.app.NotificationCompat#PRIORITY_MIN} (-2) hingga {@link
+    android.support.v4.app.NotificationCompat#PRIORITY_MAX} (2); jika tidak diatur, 
+    prioritas default akan ditetapkan {@link
+    android.support.v4.app.NotificationCompat#PRIORITY_DEFAULT} (0).
+</p>
+<p> Untuk informasi tentang mengatur level prioritas, lihat "Mengatur
+    dan mengelola prioritas pemberitahuan dengan benar" dalam panduan 
+Desain <a href="{@docRoot}design/patterns/notifications.html">Pemberitahuan</a>.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="SimpleNotification">Membuat pemberitahuan sederhana</h3>
+<p>
+    Cuplikan berikut mengilustrasikan pemberitahuan sederhana yang menetapkan aktivitas untuk dibuka bila
+    pengguna mengklik pemberitahuan. Perhatikan bahwa kode ini membuat
+    objek {@link android.support.v4.app.TaskStackBuilder} dan menggunakannya untuk membuat
+    {@link android.app.PendingIntent} untuk tindakan. Pola ini dijelaskan secara lebih detail
+    di bagian <a href="#NotificationResponse">
+    Mempertahankan Navigasi saat Memulai Aktivitas</a>:
+</p>
+<pre>
+NotificationCompat.Builder mBuilder =
+        new NotificationCompat.Builder(this)
+        .setSmallIcon(R.drawable.notification_icon)
+        .setContentTitle("My notification")
+        .setContentText("Hello World!");
+// Creates an explicit intent for an Activity in your app
+Intent resultIntent = new Intent(this, ResultActivity.class);
+
+// The stack builder object will contain an artificial back stack for the
+// started Activity.
+// This ensures that navigating backward from the Activity leads out of
+// your application to the Home screen.
+TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
+// Adds the back stack for the Intent (but not the Intent itself)
+stackBuilder.addParentStack(ResultActivity.class);
+// Adds the Intent that starts the Activity to the top of the stack
+stackBuilder.addNextIntent(resultIntent);
+PendingIntent resultPendingIntent =
+        stackBuilder.getPendingIntent(
+            0,
+            PendingIntent.FLAG_UPDATE_CURRENT
+        );
+mBuilder.setContentIntent(resultPendingIntent);
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// mId allows you to update the notification later on.
+mNotificationManager.notify(mId, mBuilder.build());
+</pre>
+<p>Demikian saja. Pengguna Anda kini telah diberi tahu.</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ApplyStyle">Menerapkan layout yang diperluas pada pemberitahuan</h3>
+<p>
+    Agar pemberitahuan muncul dalam tampilan yang diperluas, buat dahulu
+    objek {@link android.support.v4.app.NotificationCompat.Builder} dengan opsi tampilan normal
+    yang Anda inginkan. Berikutnya, panggil {@link android.support.v4.app.NotificationCompat.Builder#setStyle
+    Builder.setStyle()}  dengan objek layout yang diperluas sebagai argumennya.
+</p>
+<p>
+    Ingatlah bahwa pemberitahuan yang diperluas tidak tersedia pada platform-platform sebelum Android 4.1. Untuk
+    mengetahui cara menangani pemberitahuan untuk Android 4.1 dan untuk platform-platform sebelumnya, bacalah
+    bagian <a href="#Compatibility">Menangani kompatibilitas</a>.
+</p>
+<p>
+    Misalnya, cuplikan kode berikut memperagakan cara mengubah pemberitahuan yang dibuat
+    dalam cuplikan sebelumnya untuk menggunakan layout yang diperluas:
+</p>
+<pre>
+NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
+    .setSmallIcon(R.drawable.notification_icon)
+    .setContentTitle("Event tracker")
+    .setContentText("Events received")
+NotificationCompat.InboxStyle inboxStyle =
+        new NotificationCompat.InboxStyle();
+String[] events = new String[6];
+// Sets a title for the Inbox in expanded layout
+inboxStyle.setBigContentTitle("Event tracker details:");
+...
+// Moves events into the expanded layout
+for (int i=0; i &lt; events.length; i++) {
+
+    inboxStyle.addLine(events[i]);
+}
+// Moves the expanded layout object into the notification object.
+mBuilder.setStyle(inBoxStyle);
+...
+// Issue the notification here.
+</pre>
+
+<h3 id="Compatibility">Menangani kompatibilitas</h3>
+
+<p>
+    Tidak semua fitur pemberitahuan tersedia untuk versi tertentu, walaupun
+    metode untuk mengaturnya ada dalam kelas pustaka dukungan
+    {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder}.
+    Misalnya, tombol tindakan, yang bergantung pada pemberitahuan yang diperluas, hanya muncul pada Android
+    4.1 dan lebih tinggi, karena pemberitahuan yang diperluas itu sendiri hanya tersedia pada
+    Android 4.1 dan yang lebih tinggi.
+</p>
+<p>
+    Untuk memastikan kompatibilitas terbaik, buatlah pemberitahuan dengan
+    {@link android.support.v4.app.NotificationCompat NotificationCompat} dan subkelasnya,
+    khususnya {@link android.support.v4.app.NotificationCompat.Builder
+    NotificationCompat.Builder}. Selain itu, ikutilah proses ini bila Anda mengimplementasikan pemberitahuan:
+</p>
+<ol>
+    <li>
+        Sediakan semua fungsionalitas pemberitahuan kepada semua pengguna, terlepas dari versi
+        yang mereka gunakan. Caranya, pastikan semua fungsionalitas tersedia dari
+        {@link android.app.Activity} dalam aplikasi Anda. Anda mungkin perlu menambahkan sebuah
+        {@link android.app.Activity} baru untuk melakukannya.
+        <p>
+            Misalnya, jika Anda ingin menggunakan
+            {@link android.support.v4.app.NotificationCompat.Builder#addAction addAction()} untuk
+            menyediakan kontrol yang menghentikan dan memulai pemutaran media, implementasikan dahulu
+            kontrol ini pada {@link android.app.Activity} dalam aplikasi Anda.
+        </p>
+    </li>
+    <li>
+        Pastikan semua pengguna bisa memperoleh fungsionalitas dalam {@link android.app.Activity},
+        dengan memulainya bila pengguna mengklik pemberitahuan. Caranya,
+        buatlah {@link android.app.PendingIntent}
+        untuk {@link android.app.Activity}. Panggil
+        {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+        setContentIntent()} untuk menambahkan {@link android.app.PendingIntent} pada pemberitahuan.
+    </li>
+    <li>
+        Kini tambahkan fitur pemberitahuan diperluas yang ingin Anda gunakan pada pemberitahuan. Ingatlah
+        bahwa setiap fungsionalitas yang Anda tambahkan juga harus tersedia dalam {@link android.app.Activity}
+        yang akan dimulai bila pengguna mengklik pemberitahuan.
+    </li>
+</ol>
+
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="Managing">Mengelola Pemberitahuan</h2>
+<p>
+    Bila perlu mengeluarkan pemberitahuan beberapa kali untuk tipe kejadian yang sama, 
+hindari membuat pemberitahuan yang sama sekali baru. Sebagai gantinya, Anda harus mempertimbangkan untuk memperbarui
+    pemberitahuan sebelumnya, baik dengan mengubah sebagian nilainya atau dengan menambahkan nilai, atau keduanya.
+</p>
+<p>
+    Misalnya, Gmail akan memberi tahu pengguna bila ada email baru dengan menambah hitungan
+    pesan tidak terbaca dan dengan menambahkan rangkuman tiap email ke pemberitahuan. Ini disebut dengan
+    "stacking" (menumpuk) pemberitahuan; hal ini dijelaskan lebih detail dalam panduan
+    Desain <a href="{@docRoot}design/patterns/notifications.html">Pemberitahuan</a>.
+</p>
+<p class="note">
+    <strong>Catatan:</strong> Fitur Gmail ini mensyaratkan layout "kotak masuk" diperluas, yang merupakan
+    bagian dari fitur pemberitahuan diperluas yang tersedia mulai Android 4.1.
+</p>
+<p>
+    Bagian berikut menjelaskan cara memperbarui pemberitahuan dan cara menghapusnya.
+</p>
+<h3 id="Updating">Memperbarui pemberitahuan</h3>
+<p>
+    Untuk menyiapkan pemberitahuan agar bisa diperbarui, keluarkan pemberitahuan bersama ID pemberitahuan dengan
+    memanggil {@link android.app.NotificationManager#notify(int, android.app.Notification) NotificationManager.notify()}.
+    Untuk memperbarui pemberitahuan ini setelah Anda
+    mengeluarkan, memperbarui, atau membuat objek {@link android.support.v4.app.NotificationCompat.Builder},
+    buat objek {@link android.app.Notification} darinya, dan keluarkan
+    {@link android.app.Notification} bersama ID yang sama dengan yang Anda gunakan sebelumnya. Jika
+    pemberitahuan sebelumnya tetap terlihat, sistem akan memperbaruinya dari konten
+    objek {@link android.app.Notification}. Jika pemberitahuan sebelumnya telah dihilangkan, sebuah
+    pemberitahuan baru akan dibuat.
+</p>
+<p>
+    Cuplikan berikut memperagakan pemberitahuan yang diperbarui untuk mencerminkan
+    jumlah kejadian yang telah terjadi. Cuplikan ini menumpuk pemberitahuan, yang menampilkan rangkuman:
+</p>
+<pre>
+mNotificationManager =
+        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// Sets an ID for the notification, so it can be updated
+int notifyID = 1;
+mNotifyBuilder = new NotificationCompat.Builder(this)
+    .setContentTitle("New Message")
+    .setContentText("You've received new messages.")
+    .setSmallIcon(R.drawable.ic_notify_status)
+numMessages = 0;
+// Start of a loop that processes data and then notifies the user
+...
+    mNotifyBuilder.setContentText(currentText)
+        .setNumber(++numMessages);
+    // Because the ID remains unchanged, the existing notification is
+    // updated.
+    mNotificationManager.notify(
+            notifyID,
+            mNotifyBuilder.build());
+...
+</pre>
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Removing">Menghapus pemberitahuan</h3>
+<p>
+    Pemberitahuan tetap terlihat hingga salah satu kejadian berikut terjadi:
+</p>
+<ul>
+    <li>
+        Pengguna menghilangkan pemberitahuan satu per satu atau dengan menggunakan "Clear All" (jika
+        pemberitahuan bisa dihapus).
+    </li>
+    <li>
+        Pengguna mengklik pemberitahuan, dan Anda memanggil
+        {@link android.support.v4.app.NotificationCompat.Builder#setAutoCancel setAutoCancel()} bila
+        Anda telah membuat pemberitahuan.
+    </li>
+    <li>
+        Anda memanggil {@link android.app.NotificationManager#cancel(int) cancel()} untuk
+        ID pemberitahuan tertentu. Metode ini juga menghapus pemberitahuan yang berjalan.
+    </li>
+    <li>
+        Anda memanggil {@link android.app.NotificationManager#cancelAll() cancelAll()}, yang menghapus
+        semua pemberitahuan yang dikeluarkan sebelumnya.
+    </li>
+</ul>
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="NotificationResponse">Mempertahankan Navigasi saat Memulai Aktivitas</h2>
+<p>
+    Bila memulai {@link android.app.Activity} dari pemberitahuan, Anda harus mempertahankan
+    pengalaman navigasi yang diharapkan pengguna. Mengklik <i>Back</i> harus membawa pengguna kembali melalui
+    aliran pekerjaan normal aplikasi ke layar Home, dan mengklik <i>Recents</i> harus menampilkan
+    {@link android.app.Activity} sebagai tugas terpisah. Untuk mempertahankan pengalaman navigasi, Anda
+    harus memulai {@link android.app.Activity} dalam tugas baru. Cara menyiapkan
+    {@link android.app.PendingIntent} untuk memberi Anda tugas baru bergantung pada sifat
+    {@link android.app.Activity} yang Anda mulai. Ada dua situasi umum:
+</p>
+<dl>
+    <dt>
+        Aktivitas rutin
+    </dt>
+    <dd>
+        Anda memulai {@link android.app.Activity} yang merupakan bagian dari aliran pekerjaan normal
+        aplikasi. Dalam situasi ini, siapkan {@link android.app.PendingIntent} untuk
+        memulai tugas baru, dan sediakan {@link android.app.PendingIntent} bersama back-stack
+        yang meniru perilaku <i>Back</i> biasa.
+        <p>
+            Pemberitahuan dari aplikasi Gmail memperagakan hal ini. Bila Anda mengklik pemberitahuan untuk
+            satu pesan email, Anda akan melihat pesan itu sendiri. Menyentuh <b>Back</b> akan membawa Anda
+            kembali melalui Gmail ke layar Home, persis seperti jika memasuki Gmail dari
+            layar Home bukannya memasukinya dari pemberitahuan.
+        </p>
+        <p>
+            Hal ini terjadi terlepas dari aplikasi tempat Anda berada saat menyentuh
+            pemberitahuan. Misalnya, jika Anda dalam Gmail sedang menulis pesan, dan Anda mengklik
+            pemberitahuan untuk satu email, Anda akan segera dibawa ke email itu. Menyentuh <i>Back</i>
+            akan membawa Anda ke kotak masuk kemudian layar Home, bukannya membawa Anda ke
+            pesan yang sedang ditulis.
+        </p>
+    </dd>
+    <dt>
+        Aktivitas khusus
+    </dt>
+    <dd>
+        Pengguna hanya melihat {@link android.app.Activity} ini jika dimulai dari pemberitahuan.
+        Dalam beberapa hal, {@link android.app.Activity} akan memperluas pemberitahuan dengan menyediakan
+        informasi yang akan sulit untuk ditampilkan dalam pemberitahuan itu sendiri. Untuk situasi ini,
+        siapkan {@link android.app.PendingIntent} untuk dimulai dalam tugas baru. Tidak perlu
+        membuat back-stack, karena {@link android.app.Activity} yang dimulai bukan bagian dari
+        aliran aktivitas aplikasi. Mengklik <i>Back</i> tetap akan membawa pengguna ke
+        layar Home.
+    </dd>
+</dl>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="DirectEntry">Menyiapkan PendingIntent aktivitas biasa</h3>
+<p>
+    Untuk menyiapkan {@link android.app.PendingIntent} yang memulai entri langsung
+    {@link android.app.Activity}, ikuti langkah-langkah ini:
+</p>
+<ol>
+    <li>
+        Definisikan hierarki {@link android.app.Activity} aplikasi Anda dalam manifes.
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                Tambahkan dukungan untuk Android 4.0.3 dan yang terdahulu. Caranya, tetapkan induk
+                {@link android.app.Activity} yang Anda mulai dengan menambahkan elemen
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
+                sebagai anak
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>.
+                <p>
+                    Untuk elemen ini, atur
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a>="android.support.PARENT_ACTIVITY"</code>.
+                    Atur
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#val">android:value</a>="&lt;parent_activity_name&gt;"</code>
+                    dengan <code>&lt;parent_activity_name&gt;</code> sebagai nilai
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a></code>
+                    untuk elemen induk
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+. Lihat XML berikut sebagai contoh.
+                </p>
+            </li>
+            <li>
+                Juga tambahkan dukungan untuk Android 4.1 dan yang lebih baru. Caranya, tambahkan atribut
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#parent">android:parentActivityName</a></code>
+                 pada elemen
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+                dari {@link android.app.Activity} yang Anda mulai.
+            </li>
+        </ol>
+        <p>
+            XML akhir akan terlihat seperti ini:
+        </p>
+<pre>
+&lt;activity
+    android:name=".MainActivity"
+    android:label="&#64;string/app_name" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+&lt;activity
+    android:name=".ResultActivity"
+    android:parentActivityName=".MainActivity"&gt;
+    &lt;meta-data
+        android:name="android.support.PARENT_ACTIVITY"
+        android:value=".MainActivity"/&gt;
+&lt;/activity&gt;
+</pre>
+    </li>
+    <li>
+        Buat back-stack berdasarkan {@link android.content.Intent} yang memulai
+        {@link android.app.Activity}:
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                Buat {@link android.content.Intent} untuk memulai {@link android.app.Activity}.
+            </li>
+            <li>
+                Buat stack-builder (pembangun tumpukan) dengan memanggil {@link android.app.TaskStackBuilder#create
+                TaskStackBuilder.create()}.
+            </li>
+            <li>
+                Tambahkan back-stack ke stack-builder dengan memanggil 
+                {@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}.
+                Untuk setiap {@link android.app.Activity} dalam hierarki yang telah Anda definisikan dalam
+                manifes, back-stack berisi objek {@link android.content.Intent} yang
+                memulai {@link android.app.Activity}. Metode ini juga menambahkan flag yang memulai
+                back-stack dalam tugas baru.
+                <p class="note">
+                    <strong>Catatan:</strong> Walaupun argumen untuk
+                    {@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}
+                    adalah acuan ke {@link android.app.Activity} yang dimulai, panggilan metode
+                    tidak akan menambahkan {@link android.content.Intent} yang memulai
+                    {@link android.app.Activity}. Sebagai gantinya, hal itu ditangani dalam langkah berikutnya.
+                </p>
+            </li>
+            <li>
+                Tambahkan {@link android.content.Intent} yang memulai {@link android.app.Activity}
+                dari pemberitahuan, dengan memanggil
+                {@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()}.
+                Teruskan {@link android.content.Intent} yang Anda buat dalam langkah pertama sebagai
+                argumen ke
+                {@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()}.
+            </li>
+            <li>
+                Jika perlu, tambahkan argumen ke objek {@link android.content.Intent} pada
+                back-stack dengan memanggil {@link android.support.v4.app.TaskStackBuilder#editIntentAt
+                TaskStackBuilder.editIntentAt()}. Kadang-kadang perlu memastikan apakah
+                {@link android.app.Activity} target menampilkan data bermakna saat pengguna menelusurinya
+                dengan menggunakan <i>Back</i>.
+            </li>
+            <li>
+                Dapatkan {@link android.app.PendingIntent} untuk back-stack ini dengan memanggil
+                {@link android.support.v4.app.TaskStackBuilder#getPendingIntent getPendingIntent()}.
+                Anda nanti bisa menggunakan {@link android.app.PendingIntent} ini sebagai argumen untuk
+                {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+                setContentIntent()}.
+            </li>
+        </ol>
+     </li>
+</ol>
+<p>
+    Cuplikan kode berikut memperagakan prosesnya:
+</p>
+<pre>
+...
+Intent resultIntent = new Intent(this, ResultActivity.class);
+TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
+// Adds the back stack
+stackBuilder.addParentStack(ResultActivity.class);
+// Adds the Intent to the top of the stack
+stackBuilder.addNextIntent(resultIntent);
+// Gets a PendingIntent containing the entire back stack
+PendingIntent resultPendingIntent =
+        stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
+...
+NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+builder.setContentIntent(resultPendingIntent);
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+mNotificationManager.notify(id, builder.build());
+</pre>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ExtendedNotification">Menyiapkan PendingIntent aktivitas khusus</h3>
+<p>
+    Bagian berikut menjelaskan cara menyiapkan aktivitas khusus
+    {@link android.app.PendingIntent}.
+</p>
+<p>
+    {@link android.app.Activity} khusus tidak memerlukan back-stack, sehingga Anda tidak perlu
+    mendefinisikan hierarki {@link android.app.Activity}-nya dalam manifes, dan Anda tidak perlu
+    memanggil
+    {@link android.support.v4.app.TaskStackBuilder#addParentStack  addParentStack()} untuk membuat
+    back-stack. Sebagai gantinya, gunakan manifes untuk menyiapkan opsi tugas {@link android.app.Activity},
+    dan buat {@link android.app.PendingIntent} dengan memanggil
+    {@link android.app.PendingIntent#getActivity getActivity()}:
+</p>
+<ol>
+    <li>
+        Dalam manifes, tambahkan atribut berikut pada elemen
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+        untuk {@link android.app.Activity}
+        <dl>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#nm">android:name</a>="<i>activityclass</i>"</code>
+            </dt>
+            <dd>
+                Nama kelas mutlak (fully qualified) aktivitas.
+            </dd>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">android:taskAffinity</a>=""</code>
+            </dt>
+            <dd>
+                Dikombinasikan dengan flag
+                {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK}
+                yang Anda atur dalam kode, ini memastikan bahwa {@link android.app.Activity} ini tidak
+                masuk ke dalam tugas default aplikasi. Setiap tugas yang ada yang memiliki
+                afinitas default aplikasi tidak terpengaruh.
+            </dd>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">android:excludeFromRecents</a>="true"</code>
+            </dt>
+            <dd>
+                Mengecualikan tugas baru dari <i>Recents</i>, sehingga pengguna tidak bisa tanpa sengaja
+                mengarahkan kembali.
+            </dd>
+        </dl>
+        <p>
+            Cuplikan ini menampilkan elemen:
+        </p>
+<pre>
+&lt;activity
+    android:name=".ResultActivity"
+...
+    android:launchMode="singleTask"
+    android:taskAffinity=""
+    android:excludeFromRecents="true"&gt;
+&lt;/activity&gt;
+...
+</pre>
+    </li>
+    <li>
+        Buat dan keluarkan pemberitahuan:
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                Buat {@link android.content.Intent} yang memulai
+                {@link android.app.Activity}.
+            </li>
+            <li>
+                Atur {@link android.app.Activity} untuk dimulai dalam tugas kosong yang baru dengan memanggil
+                {@link android.content.Intent#setFlags setFlags()} dengan flag
+                {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK}
+                dan
+                {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TASK FLAG_ACTIVITY_CLEAR_TASK}.
+            </li>
+            <li>
+                Atur setiap opsi lain yang Anda perlukan untuk {@link android.content.Intent}.
+            </li>
+            <li>
+                Buat {@link android.app.PendingIntent} dari {@link android.content.Intent}
+                dengan memanggil {@link android.app.PendingIntent#getActivity getActivity()}.
+                Anda nanti bisa menggunakan {@link android.app.PendingIntent} ini sebagai argumen untuk
+                {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+                setContentIntent()}.
+            </li>
+        </ol>
+    <p>
+        Cuplikan kode berikut memperagakan prosesnya:
+    </p>
+<pre>
+// Instantiate a Builder object.
+NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+// Creates an Intent for the Activity
+Intent notifyIntent =
+        new Intent(this, ResultActivity.class);
+// Sets the Activity to start in a new, empty task
+notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+                        | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+// Creates the PendingIntent
+PendingIntent notifyPendingIntent =
+        PendingIntent.getActivity(
+        this,
+        0,
+        notifyIntent,
+        PendingIntent.FLAG_UPDATE_CURRENT
+);
+
+// Puts the PendingIntent into the notification builder
+builder.setContentIntent(notifyPendingIntent);
+// Notifications are issued by sending them to the
+// NotificationManager system service.
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// Builds an anonymous Notification object from the builder, and
+// passes it to the NotificationManager
+mNotificationManager.notify(id, builder.build());
+</pre>
+    </li>
+</ol>
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="Progress">Menampilkan Kemajuan dalam Pemberitahuan</h2>
+<p>
+    Pemberitahuan bisa menyertakan indikator kemajuan beranimasi yang menampilkan status
+operasi yang berjalan kepada pengguna. Jika Anda bisa memperkirakan lamanya operasi berlangsung dan berapa banyak
+    yang sudah selesai pada suatu waktu, gunakan bentuk indikator yang "pasti"
+    (baris kemajuan). Jika Anda tidak bisa memperkirakan lamanya operasi, gunakan
+    bentuk indikator "tidak pasti" (indikator aktivitas).
+</p>
+<p>
+    Indikator kemajuan ditampilkan bersama implementasi platform
+    kelas {@link android.widget.ProgressBar}.
+</p>
+<p>
+    Untuk menggunakan indikator kemajuan pada platform mulai dari Android 4.0, panggil
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}. Untuk
+    versi sebelumnya, Anda harus membuat layout pemberitahuan custom sendiri yang
+menyertakan tampilan {@link android.widget.ProgressBar}.
+</p>
+<p>
+    Bagian berikut ini menjelaskan cara menampilkan kemajuan dalam pemberitahuan dengan menggunakan
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="FixedProgress">Menampilkan indikator kemajuan berdurasi tetap</h3>
+<p>
+    Untuk menampilkan baris kemajuan pasti, tambahkan baris itu ke pemberitahuan dengan memanggil
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress
+    setProgress(max, progress, false)}, kemudian keluarkan pemberitahuan. Selagi operasi berlangsung,
+    tambah <code>progress</code>, dan perbarui pemberitahuan. Di akhir operasi,
+    <code>progress</code> harus sama dengan <code>max</code>. Satu cara umum memanggil
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}
+    adalah mengatur <code>max</code> ke 100, kemudian tambah <code>progress</code> sebagai
+     nilai "persen selesai"untuk operasi itu.
+</p>
+<p>
+    Anda bisa membiarkan baris kemajuan ditampilkan saat operasi selesai, atau menghilangkannya. Dalam
+    hal apa pun, ingatlah memperbarui teks pemberitahuan untuk menampilkan bahwa operasi telah selesai.
+    Untuk menghapus baris kemajuan, panggil
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress
+    setProgress(0, 0, false)}. Misalnya:
+</p>
+<pre>
+...
+mNotifyManager =
+        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+mBuilder = new NotificationCompat.Builder(this);
+mBuilder.setContentTitle("Picture Download")
+    .setContentText("Download in progress")
+    .setSmallIcon(R.drawable.ic_notification);
+// Start a lengthy operation in a background thread
+new Thread(
+    new Runnable() {
+        &#64;Override
+        public void run() {
+            int incr;
+            // Do the "lengthy" operation 20 times
+            for (incr = 0; incr &lt;= 100; incr+=5) {
+                    // Sets the progress indicator to a max value, the
+                    // current completion percentage, and "determinate"
+                    // state
+                    mBuilder.setProgress(100, incr, false);
+                    // Displays the progress bar for the first time.
+                    mNotifyManager.notify(0, mBuilder.build());
+                        // Sleeps the thread, simulating an operation
+                        // that takes time
+                        try {
+                            // Sleep for 5 seconds
+                            Thread.sleep(5*1000);
+                        } catch (InterruptedException e) {
+                            Log.d(TAG, "sleep failure");
+                        }
+            }
+            // When the loop is finished, updates the notification
+            mBuilder.setContentText("Download complete")
+            // Removes the progress bar
+                    .setProgress(0,0,false);
+            mNotifyManager.notify(ID, mBuilder.build());
+        }
+    }
+// Starts the thread by calling the run() method in its Runnable
+).start();
+</pre>
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ActivityIndicator">Menampilkan indikator aktivitas berlanjut</h3>
+<p>
+    Untuk menampilkan indikator aktivitas tidak pasti, tambahkan aktivitas ke pemberitahuan dengan
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, true)}
+    (dua argumen pertama akan diabaikan), dan keluarkan pemberitahuan. Hasilnya adalah indikator
+    yang memiliki gaya yang sama dengan baris kemajuan, hanya saja animasinya terus berjalan.
+</p>
+<p>
+    Keluarkan pemberitahuan di awal operasi. Animasi akan berjalan hingga Anda
+    memodifikasi pemberitahuan. Bila operasi selesai, panggil
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, false)}
+    kemudian perbarui pemberitahuan untuk menghapus indikator aktivitas.
+    Selalu lakukan ini; jika makan animasi akan terus berjalan sekalipun operasi telah selesai. Juga
+    ingatlah mengubah teks pemberitahuan untuk menunjukkan bahwa operasi telah selesai.
+</p>
+<p>
+    Untuk melihat cara kerja indikator aktivitas, lihat cuplikan terdahulu. Cari lokasi baris-baris berikut:
+</p>
+<pre>
+// Sets the progress indicator to a max value, the current completion
+// percentage, and "determinate" state
+mBuilder.setProgress(100, incr, false);
+// Issues the notification
+mNotifyManager.notify(0, mBuilder.build());
+</pre>
+<p>
+    Ganti baris yang telah Anda temukan dengan baris berikut:
+</p>
+<pre>
+ // Sets an activity indicator for an operation of indeterminate length
+mBuilder.setProgress(0, 0, true);
+// Issues the notification
+mNotifyManager.notify(0, mBuilder.build());
+</pre>
+
+<h2 id="metadata">Metadata Pemberitahuan</h2>
+
+<p>Pemberitahuan dapat disortir sesuai metadata yang Anda tetapkan dengan
+metode {@link android.support.v4.app.NotificationCompat.Builder} berikut:</p>
+
+<ul>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#setCategory(java.lang.String) setCategory()}
+    memberi tahu sistem cara menangani pemberitahuan aplikasi Anda bila perangkat berada dalam mode Priority
+    (misalnya, jika pemberitahuan menyatakan suatu panggilan masuk, pesan instan, atau alarm).</li>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#setPriority(int) setPriority()} menyebabkan
+    pemberitahuan dengan bidang prioritas diatur ke {@code PRIORITY_MAX} atau {@code PRIORITY_HIGH}
+    muncul dalam jendela kecil mengambang jika pemberitahuan juga memiliki suara atau getaran.</li>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#addPerson(java.lang.String) addPerson()}
+    memungkinkan Anda menambahkan daftar orang ke pemberitahuan. Aplikasi Anda bisa menggunakannya untuk memberi isyarat pada
+    sistem bahwa sistem harus mengelompokkan bersama pemberitahuan dari orang-orang yang ditetapkan, atau memberi peringkat lebih penting pada pemberitahuan
+    untuk orang-orang ini.</li>
+</ul>
+
+<div class="figure" style="width:230px">
+  <img src="{@docRoot}images/ui/notifications/heads-up.png" alt="" width="" height="" id="figure3" />
+  <p class="img-caption">
+    <strong>Gambar 3.</strong> Aktivitas layar penuh yang menampilkan pemberitahuan pendahuluan
+  </p>
+</div>
+
+<h2 id="Heads-up">Pemberitahuan Pendahuluan</h2>
+
+<p>Dengan Android 5.0 (API level 21), pemberitahuan bisa muncul dalam jendela kecil mengambang
+(yang disebut juga dengan <em>pemberitahuan pendahuluan</em>) saat perangkat aktif
+(yakni, perangkat dibuka kuncinya dan layarnya menyala). Pemberitahuan ini
+muncul seperti bentuk ringkas pemberitahuan Anda, hanya saja
+pemberitahuan pendahuluan juga menampilkan tombol tindakan. Pengguna bisa menindaklanjuti atau mengabaikan,
+pemberitahuan pendahuluan tanpa meninggalkan aplikasi saat ini.</p>
+
+<p>Contoh-contoh kondisi yang dapat memicu pemberitahuan pendahuluan antara lain:</p>
+
+<ul>
+  <li>Aktivitas pengguna berada dalam mode layar penuh (aplikasi menggunakan
+{@link android.app.Notification#fullScreenIntent}), atau</li>
+  <li>Pemberitahuan memiliki prioritas tinggi dan menggunakan nada dering atau
+    getaran</li>
+</ul>
+
+<h2 id="lockscreenNotification">Pemberitahuan Layar Kunci</h2>
+
+<p>Dengan rilis Android 5.0 (API level 21), pemberitahuan kini dapat muncul pada
+layar kunci. Aplikasi Anda bisa menggunakan fungsionalitas ini untuk menyediakan kontrol pemutaran media dan
+tindakan umum lainnya. Pengguna bisa memilih lewat Settings apakah akan menampilkan pemberitahuan pada layar kunci, dan
+Anda bisa mendesain apakah pemberitahuan aplikasi akan terlihat pada layar kunci.</p>
+
+<h3 id="visibility">Mengatur Visibilitas</h3>
+
+<p>Aplikasi Anda bisa mengatur level detail terlihat pada pemberitahuan yang ditampilkan di
+layar kunci aman. Anda memanggil {@link android.support.v4.app.NotificationCompat.Builder#setVisibility(int) setVisibility()}
+dan menetapkan salah satu nilai berikut:</p>
+
+<ul>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC} menampilkan isi lengkap
+    pemberitahuan.</li>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_SECRET} tidak menampilkan bagian apa pun dari
+    pemberitahuan ini pada layar kunci.</li>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE} menampilkan informasi dasar,
+    misalnya ikon dan judul isi pemberitahuan, namun menyembunyikan isi lengkap pemberitahuan.</li>
+</ul>
+
+<p>Bila {@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE} telah diatur, Anda juga bisa
+menyediakan versi alternatif isi pemberitahuan yang menyembunyikan detail tertentu. Misalnya,
+aplikasi SMS dapat menampilkan pemberitahuan yang menampilkan <em>Anda memiliki 3 pesan teks baru</em>, namun menyembunyikan
+isi dan pengirim pesan. Untuk menyediakan pemberitahuan alternatif ini, buat dahulu pemberitahuan
+pengganti menggunakan {@link android.support.v4.app.NotificationCompat.Builder}. Bila Anda membuat
+objek pemberitahuan privat, lampirkan pemberitahuan pengganti melalui metode
+{@link android.support.v4.app.NotificationCompat.Builder#setPublicVersion(android.app.Notification) setPublicVersion()}
+.</p>
+
+<h3 id="controllingMedia">Mengontrol Pemutaran Media pada Layar Kunci</h3>
+
+<p>Dalam Android 5.0 (API level 21) layar kunci tidak lagi menampilkan kontrol media
+berdasarkan {@link android.media.RemoteControlClient}, yang sekarang telah dihilangkan. Sebagai gantinya, gunakan
+template {@link android.app.Notification.MediaStyle} dengan metode
+{@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
+, yang mengubah tindakan menjadi ikon yang bisa diklik.</p>
+
+<p class="note"><strong>Catatan:</strong> Template dan metode {@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
+tidak disertakan dalam pustaka dukungan, sehingga fitur-fitur ini berjalan pada Android 5.0 dan yang lebih tinggi
+saja.</p>
+
+<p>Untuk menampilkan kontrol pemutaran media di layar kunci dalam Android 5.0, atur visibilitas
+ke {@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}, seperti dijelaskan di atas. Kemudian tambahkan
+tindakan dan atur template {@link android.app.Notification.MediaStyle}, seperti dijelaskan dalam contoh kode
+berikut:</p>
+
+<pre>
+Notification notification = new Notification.Builder(context)
+    // Show controls on lock screen even when user hides sensitive content.
+    .setVisibility(Notification.VISIBILITY_PUBLIC)
+    .setSmallIcon(R.drawable.ic_stat_player)
+    // Add media control buttons that invoke intents in your media service
+    .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0
+    .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent)  // #1
+    .addAction(R.drawable.ic_next, "Next", nextPendingIntent)     // #2
+    // Apply the media style template
+    .setStyle(new Notification.MediaStyle()
+    .setShowActionsInCompactView(1 /* #1: pause button */)
+    .setMediaSession(mMediaSession.getSessionToken())
+    .setContentTitle("Wonderful music")
+    .setContentText("My Awesome Band")
+    .setLargeIcon(albumArtBitmap)
+    .build();
+</pre>
+
+<p class="note"><strong>Catatan:</strong> Dihilangkannya {@link android.media.RemoteControlClient}
+memiliki implikasi lebih jauh untuk mengontrol media. Lihat
+<a href="{@docRoot}about/versions/android-5.0.html#MediaPlaybackControl">Kontrol Pemutaran Media</a>
+untuk informasi selengkapnya tentang API baru untuk mengelola sesi media dan mengontrol pemutaran.</p>
+
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="CustomNotification">Layout Pemberitahuan Custom</h2>
+<p>
+    Kerangka kerja pemberitahuan memungkinkan Anda mendefinisikan layout pemberitahuan custom, yang
+    mendefinisikan penampilan pemberitahuan dalam objek {@link android.widget.RemoteViews}.
+    Pemberitahuan dengan layout custom serupa pemberitahuan normal, namun dibuat berdasarkan
+    {@link android.widget.RemoteViews} yang didefinisikan dalam file layout XML.
+</p>
+<p>
+    Tinggi yang tersedia untuk layout pemberitahuan custom bergantung pada tampilan pemberitahuan. Layout
+    tampilan normal dibatasi hingga 64 dp, dan layout tampilan yang diperluas dibatasi hingga 256 dp.
+</p>
+<p>
+    Untuk mendefinisikan layout pemberitahuan custom, mulailah dengan membuat instance 
+    objek {@link android.widget.RemoteViews} yang memekarkan file layout XML. Kemudian,
+    sebagai ganti memanggil metode seperti
+    {@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()},
+    panggil {@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()}. Untuk mengatur
+    detail isi pemberitahuan custom, gunakan metode dalam
+    {@link android.widget.RemoteViews} untuk mengatur nilai anak tampilan:
+</p>
+<ol>
+    <li>
+        Buat layout XML untuk pemberitahuan di file terpisah. Anda bisa menggunakan nama file
+apa saja yang diinginkan, namun Anda harus menggunakan ekstensi <code>.xml</code>
+    </li>
+    <li>
+        Dalam aplikasi Anda, gunakan metode {@link android.widget.RemoteViews} untuk mendefinisikan
+        ikon dan teks pemberitahuan. Masukkan objek {@link android.widget.RemoteViews} ini ke dalam
+        {@link android.support.v4.app.NotificationCompat.Builder} Anda dengan memanggil
+        {@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()}. Hindari
+        mengatur {@link android.graphics.drawable.Drawable} latar belakang pada
+        objek {@link android.widget.RemoteViews} Anda, karena warna teks bisa menjadi tidak terbaca.
+    </li>
+</ol>
+<p>
+    Kelas {@link android.widget.RemoteViews} juga menyertakan metode yang bisa Anda gunakan untuk
+    menambahkan {@link android.widget.Chronometer} atau {@link android.widget.ProgressBar}
+dengan mudah ke layout pemberitahuan Anda. Untuk informasi selengkapnya tentang cara membuat layout custom
+    pemberitahuan Anda, lihat dokumentasi acuan {@link android.widget.RemoteViews}.
+</p>
+<p class="caution">
+    <strong>Perhatian:</strong> Bila Anda menggunakan layout pemberitahuan custom, berhati-hatilah
+    untuk memastikan bahwa layout custom itu bekerja pada berbagai orientasi dan resolusi perangkat. Walaupun
+    berlaku bagi semua layout View, nasihat ini khususnya penting untuk pemberitahuan karena
+    ruang di laci pemberitahuan sangat terbatas. Jangan buat layout custom terlalu
+    kompleks, dan pastikan mengujinya di berbagai konfigurasi.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h4>Menggunakan sumber daya gaya untuk teks pemberitahuan custom</h4>
+<p>
+    Selalu gunakan sumber daya gaya untuk teks pemberitahuan custom. Warna latar belakang
+    pemberitahuan bisa bervariasi di berbagai perangkat dan versi, dan menggunakan sumber daya gaya
+    membantu Anda menangani hal ini. Mulai Android 2.3, sistem mendefinisikan sebuah gaya untuk
+    teks layout pemberitahuan standar. Jika Anda menggunakan gaya yang sama dalam aplikasi yang menargetkan Android
+    2.3 atau yang lebih tinggi, Anda akan memastikan bahwa teks terlihat pada latar belakang tampilan.
+</p>
diff --git a/docs/html-intl/intl/in/guide/topics/ui/overview.jd b/docs/html-intl/intl/in/guide/topics/ui/overview.jd
new file mode 100644
index 0000000..a0b2b06
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/ui/overview.jd
@@ -0,0 +1,71 @@
+page.title=Ikhtisar UI
+@jd:body
+
+
+<p>Semua elemen antarmuka pengguna dalam aplikasi Android dibangun menggunakan objek {@link android.view.View} dan
+{@link android.view.ViewGroup}. {@link android.view.View} adalah objek yang menarik
+sesuatu di layar dan dapat berinteraksi dengan pengguna. {@link android.view.ViewGroup} merupakan sebuah
+objek yang menyimpan objek {@link android.view.View} lainnya (dan {@link android.view.ViewGroup}) untuk
+mendefinisikan layout antarmuka.</p>
+
+<p>Android menyediakan sekumpulan subkelas {@link android.view.View} dan {@link
+android.view.ViewGroup} yang menawarkan kontrol input umum (seperti tombol dan bidang
+teks) serta berbagai model layout (seperti layout linear atau relatif).</p>
+
+
+<h2 id="Layout">Layout Antarmuka Pengguna</h2>
+
+<p>Antarmuka pengguna untuk setiap komponen aplikasi Anda didefinisikan menggunakan hierarki objek {link
+android.view.View} dan {@link android.view.ViewGroup}, seperti yang ditampilkan dalam gambar 1. Setiap kelompok tampilan
+merupakan kontainer tak terlihat yang mengelola tampilan anak, sementara tampilan anak ini dapat menjadi kontrol
+input atau widget lain yang
+menarik sebagian dari UI. Pohon hierarki ini bisa sederhana atau bisa juga kompleks bergantung kebutuhan
+(namun yang sederhana paling baik untuk kinerja).</p>
+
+<img src="{@docRoot}images/viewgroup.png" alt="" />
+<p class="img-caption"><strong>Gambar 1.</strong> Ilustrasi dari hierarki tampilan, yang mendefinisikan layout
+UI.</p>
+
+<p>Untuk mendeklarasikan layout, Anda dapat menyediakan objek {@link android.view.View} dalam kode dan mulai
+membangun pohon, namun cara termudah dan terefektif untuk mendefinisikan layout adalah dengan file XML.
+XML menawarkan struktur layout yang dapat dibaca manusia, serupa dengan HTML.</p>
+
+<p>Nama elemen XML untuk tampilan sesuai dengan kelas Android yang diwakilinya. Dengan demikian elemen
+<code>&lt;TextView&gt;</code> membuat widget {@link android.widget.TextView} dalam UI Anda,
+dan elemen <code>&lt;LinearLayout&gt;</code> membuat kelompok tampilan {@link android.widget.LinearLayout}
+. </p>
+
+<p>Misalnya, layout vertikal sederhana dengan tampilan teks dan tombol akan tampak seperti ini:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="fill_parent" 
+              android:layout_height="fill_parent"
+              android:orientation="vertical" >
+    &lt;TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="I am a TextView" />
+    &lt;Button android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="I am a Button" />
+&lt;/LinearLayout>
+</pre>
+
+<p>Saat Anda memuat sumber daya layout di aplikasi, Android akan menginisialisasi setiap simpul layout menjadi
+objek runtime yang bisa Anda gunakan untuk mendefinisikan perilaku tambahan, query status objek, atau memodifikasi
+layout.</p>
+
+<p>Untuk mendapatkan panduan lengkap mengenai pembuatan layout UI, lihat <a href="declaring-layout.html">Layout
+XML</a>.
+
+  
+<h2 id="UIComponents">Komponen Antarmuka Pengguna</h2>
+
+<p>Anda tidak harus membuat semua UI menggunakan objek {@link android.view.View} dan {link
+android.view.ViewGroup}. Android menyediakan beberapa komponen aplikasi yang menawarkan
+layout UI standar yang tinggal Anda definisikan kontennya. Komponen UI ini masing-masing
+memiliki set API unik yang dijelaskan dalam masing-masing dokumennya, seperti <a href="{@docRoot}guide/topics/ui/actionbar.html">Action-Bar</a>, <a href="{@docRoot}guide/topics/ui/dialogs.html">Dialog</a>, dan <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Pemberitahuan Status</a>.</p>
+
+
diff --git a/docs/html-intl/intl/in/guide/topics/ui/settings.jd b/docs/html-intl/intl/in/guide/topics/ui/settings.jd
new file mode 100644
index 0000000..5ac61f9
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/ui/settings.jd
@@ -0,0 +1,1202 @@
+page.title=Pengaturan
+page.tags=preference,preferenceactivity,preferencefragment
+
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Dalam dokumen ini</h2>
+<ol>
+  <li><a href="#Overview">Ikhtisar</a>
+    <ol>
+      <li><a href="#SettingTypes">Preferensi</a></li>
+    </ol>
+  </li>
+  <li><a href="#DefiningPrefs">Mendefinisikan Preferensi dalam XML</a>
+    <ol>
+      <li><a href="#Groups">Membuat grup pengaturan</a></li>
+      <li><a href="#Intents">Menggunakan intent</a></li>
+    </ol>
+  </li>
+  <li><a href="#Activity">Membuat Aktivitas Preferensi</a></li>
+  <li><a href="#Fragment">Menggunakan Fragmen Preferensi</a></li>
+  <li><a href="#Defaults">Mengatur Nilai Default</a></li>
+  <li><a href="#PreferenceHeaders">Menggunakan Header Preferensi</a>
+    <ol>
+      <li><a href="#CreateHeaders">Membuat file header</a></li>
+      <li><a href="#DisplayHeaders">Menampilkan header</a></li>
+      <li><a href="#BackCompatHeaders">Mendukung versi yang lebih lama dengan header preferensi</a></li>
+    </ol>
+  </li>
+  <li><a href="#ReadingPrefs">Preferensi Membaca</a>
+    <ol>
+      <li><a href="#Listening">Mendengarkan perubahan preferensi</a></li>
+    </ol>
+  </li>
+  <li><a href="#NetworkUsage">Mengelola Penggunaan Jaringan</a></li>
+  <li><a href="#Custom">Membangun Preferensi Custom</a>
+    <ol>
+      <li><a href="#CustomSelected">Menetapkan antarmuka pengguna</a></li>
+      <li><a href="#CustomSave">Menyimpan nilai pengaturan</a></li>
+      <li><a href="#CustomInitialize">Menginisialisasi nilai saat ini</a></li>
+      <li><a href="#CustomDefault">Menyediakan nilai default</a></li>
+      <li><a href="#CustomSaveState">Menyimpan dan memulihkan status Preferensi</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>Kelas-kelas utama</h2>
+<ol>
+  <li>{@link android.preference.Preference}</li>
+  <li>{@link android.preference.PreferenceActivity}</li>
+  <li>{@link android.preference.PreferenceFragment}</li>
+</ol>
+
+
+<h2>Lihat juga</h2>
+<ol>
+  <li><a href="{@docRoot}design/patterns/settings.html">Panduan desain pengaturan</a></li>
+</ol>
+</div>
+</div>
+
+
+
+
+<p>Aplikasi sering kali menyertakan pengaturan yang memungkinkan pengguna memodifikasi fitur dan perilaku aplikasi. Misalnya,
+beberapa aplikasi memungkinkan pengguna untuk menetapkan apakah pemberitahuan diaktifkan atau menetapkan seberapa sering
+aplikasi menyinkronkan data dengan cloud.</p>
+
+<p>Jika ingin menyediakan pengaturan untuk aplikasi, Anda harus menggunakan
+API Android {@link android.preference.Preference} untuk membangun antarmuka yang konsisten dengan
+pengalaman pengguna di aplikasi Android yang lain (termasuk pengaturan sistem). Dokumen ini menjelaskan
+cara membangun pengaturan aplikasi Anda menggunakan API {@link android.preference.Preference}.</p>
+
+<div class="note design">
+<p><strong>Desain Pengaturan</strong></p>
+  <p>Untuk informasi tentang cara mendesain pengaturan Anda, bacalah panduan desain <a href="{@docRoot}design/patterns/settings.html">Pengaturan</a>.</p>
+</div>
+
+
+<img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
+<p class="img-caption"><strong>Gambar 1.</strong> Cuplikan layar dari pengaturan
+aplikasi Messaging Android. Memilih item yang didefinisikan oleh {@link android.preference.Preference} 
+akan membuka antarmuka untuk mengubah pengaturan.</p>
+
+
+
+
+<h2 id="Overview">Ikhtisar</h2>
+
+<p>Sebagai ganti menggunakan objek {@link android.view.View} untuk membangun antarmuka pengguna, pengaturan
+dibangun menggunakan berbagai subkelas dari kelas {@link android.preference.Preference} yang Anda
+deklarasikan dalam file XML.</p>
+
+<p>Objek {@link android.preference.Preference} adalah blok pembangun untuk pengaturan
+tunggal. Setiap {@link android.preference.Preference} muncul sebagai item dalam daftar dan menyediakan UI
+yang sesuai bagi pengguna untuk memodifikasi pengaturan. Misalnya, {@link
+android.preference.CheckBoxPreference} membuat item daftar yang menampilkan kotak cek, dan {@link
+android.preference.ListPreference} membuat item yang membuka dialog berisi daftar pilihan.</p>
+
+<p>Setiap {@link android.preference.Preference} yang Anda tambahkan memiliki pasangan nilai-kunci yang sesuai yang
+digunakan sistem untuk menyimpan pengaturan dalam file {@link android.content.SharedPreferences}
+default untuk pengaturan aplikasi Anda. Bila pengguna mengubah pengaturan, sistem akan memperbarui nilai
+yang bersangkutan dalam file {@link android.content.SharedPreferences} untuk Anda. Satu-satunya saat di mana Anda harus
+berinteraksi langsung dengan file {@link android.content.SharedPreferences} yang terkait adalah bila Anda
+perlu membaca nilai untuk menentukan perilaku aplikasi berdasarkan pengaturan pengguna.</p>
+
+<p>Nilai yang tersimpan di {@link android.content.SharedPreferences} untuk setiap pengaturan bisa berupa
+tipe data berikut:</p>
+
+<ul>
+  <li>Boolean</li>
+  <li>Float</li>
+  <li>Int</li>
+  <li>Long</li>
+  <li>String</li>
+  <li>String {@link java.util.Set}</li>
+</ul>
+
+<p>Oleh karena UI pengaturan aplikasi Anda dibangun menggunakan objek {@link android.preference.Preference}
+sebagai ganti
+objek {@link android.view.View}, Anda perlu menggunakan {@link android.app.Activity} khusus atau
+subkelas {@link android.app.Fragment} untuk menampilkan pengaturan daftar:</p>
+
+<ul>
+  <li>Jika aplikasi Anda mendukung versi Android yang lebih lama dari 3.0 (API level 10 dan yang lebih rendah), Anda harus
+membangun aktivitas sebagai ekstensi dari kelas {@link android.preference.PreferenceActivity}.</li>
+  <li>Pada Android 3.0 dan yang lebih baru, sebaiknya Anda menggunakan {@link android.app.Activity} biasa
+yang menjadi host {@link android.preference.PreferenceFragment} yang menampilkan pengaturan aplikasi Anda.
+Akan tetapi, Anda juga bisa menggunakan {@link android.preference.PreferenceActivity} untuk membuat layout dua panel
+bagi layar besar bila Anda memiliki beberapa grup pengaturan.</li>
+</ul>
+
+<p>Cara mengatur {@link android.preference.PreferenceActivity} Anda dan instance {@link
+android.preference.PreferenceFragment} dibahas di bagian tentang <a href="#Activity">Membuat Aktivitas Preferensi</a> dan <a href="#Fragment">Menggunakan
+Fragmen Preferensi</a>.</p>
+
+
+<h3 id="SettingTypes">Preferensi</h3>
+
+<p>Setiap pengaturan untuk aplikasi Anda diwakili oleh subkelas khusus dari kelas {@link
+android.preference.Preference}. Setiap subkelas menyertakan seperangkat properti utama yang memungkinkan Anda
+untuk menetapkan berbagai hal seperti judul pengaturan dan nilai default. Setiap subkelas juga menyediakan
+antarmuka pengguna dan properti khusus miliknya sendiri. Misalnya, gambar 1 menampilkan cuplikan layar dari
+ pengaturan aplikasi Messaging. Setiap item daftar dalam layar pengaturan didukung oleh objek {@link
+android.preference.Preference} berbeda.</p>
+
+<p>Beberapa preferensi yang paling umum adalah:</p>
+
+<dl>
+  <dt>{@link android.preference.CheckBoxPreference}</dt>
+  <dd>Menampilkan item dengan kotak cek untuk pengaturan yang diaktifkan atau dinonaktifkan. Nilai
+tersimpan adalah boolean (<code>true</code> jika diberi tanda cek).</dd>
+
+  <dt>{@link android.preference.ListPreference}</dt>
+  <dd>Membuka dialog berisi daftar tombol radio. Nilai
+tersimpan bisa berupa tipe nilai apa pun yang didukung (tercantum di atas).</dd>
+
+  <dt>{@link android.preference.EditTextPreference}</dt>
+  <dd>Membuka dialog berisi widget {@link android.widget.EditText}. Nilai tersimpan adalah {@link
+java.lang.String}.</dd>
+</dl>
+
+<p>Lihat kelas {@link android.preference.Preference} untuk mengetahui daftar subkelas lain dan 
+propertinya.</p>
+
+<p>Tentu saja, kelas bawaan tidak mengakomodasi setiap kebutuhan dan aplikasi Anda mungkin memerlukan
+sesuatu yang lebih khusus. Misalnya, platform saat ini tidak menyediakan kelas {@link
+android.preference.Preference} untuk mengambil nomor atau tanggal. Anda mungkin perlu mendefinisikan
+subkelas {@link android.preference.Preference} sendiri. Untuk bantuan melakukannya, lihat bagian tentang <a href="#Custom">Membangun Preferensi Custom</a>.</p>
+
+
+
+<h2 id="DefiningPrefs">Mendefinisikan Preferensi dalam XML</h2>
+
+<p>Meskipun bisa membuat instance objek {@link android.preference.Preference} baru saat runtime, Anda
+harus mendefinisikan daftar pengaturan dalam XML dengan hierarki objek
+{@link android.preference.Preference}. Menggunakan file XML untuk mendefinisikan sekumpulan pengaturan lebih disukai karena file
+menyediakan struktur yang mudah dibaca dan diperbarui. Selain itu, pengaturan aplikasi Anda
+umumnya telah ditetapkan sebelumnya, meskipun Anda masih bisa memodifikasi kumpulan tersebut saat runtime.</p>
+
+<p>Setiap subkelas {@link android.preference.Preference} bisa dideklarasikan dengan elemen XML yang
+cocok dengan nama kelas, seperti {@code &lt;CheckBoxPreference&gt;}.</p>
+
+<p>Anda harus menyimpan file XML dalam direktori {@code res/xml/}. Meskipun bisa memberi nama file
+sesuka Anda, biasanya file diberi nama {@code preferences.xml}. Biasanya Anda hanya memerlukan satu file,
+karena cabang di hierarki (yang membuka daftar pengaturanny sendiri) dideklarasikan menggunakan instance
+tersarang {@link android.preference.PreferenceScreen}.</p>
+
+<p class="note"><strong>Catatan:</strong> Jika ingin membuat layout multipanel untuk
+pengaturan, Anda memerlukan file XML terpisah untuk setiap fragmen.</p>
+
+<p>Simpul akar untuk file XML harus merupakan elemen {@link android.preference.PreferenceScreen
+&lt;PreferenceScreen&gt;}. Dalam elemen inilah tempat Anda menambahkan setiap {@link
+android.preference.Preference}. Setiap anak yang Anda tambahkan dalam elemen
+{@link android.preference.PreferenceScreen &lt;PreferenceScreen&gt;} akan tampak sebagai item
+tunggal dalam daftar pengaturan.</p>
+
+<p>Misalnya:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;CheckBoxPreference
+        android:key="pref_sync"
+        android:title="@string/pref_sync"
+        android:summary="@string/pref_sync_summ"
+        android:defaultValue="true" />
+    &lt;ListPreference
+        android:dependency="pref_sync"
+        android:key="pref_syncConnectionType"
+        android:title="@string/pref_syncConnectionType"
+        android:dialogTitle="@string/pref_syncConnectionType"
+        android:entries="@array/pref_syncConnectionTypes_entries"
+        android:entryValues="@array/pref_syncConnectionTypes_values"
+        android:defaultValue="@string/pref_syncConnectionTypes_default" />
+&lt;/PreferenceScreen>
+</pre>
+
+<p>Dalam contoh ini, terdapat {@link android.preference.CheckBoxPreference} dan {@link
+android.preference.ListPreference}. Kedua item tersebut menyertakan tiga atribut berikut:</p>
+
+<dl>
+  <dt>{@code android:key}</dt>
+  <dd>Atribut ini diperlukan untuk preferensi yang mempertahankan nilai data. Ini menetapkan kunci
+unik (string) yang digunakan sistem saat menyimpan nilai pengaturan ini dalam {@link
+android.content.SharedPreferences}. 
+  <p>Instance satu-satunya di mana atribut ini <em>tidak diperlukan</em> adalah bila preferensi berupa
+{@link android.preference.PreferenceCategory} atau {@link android.preference.PreferenceScreen}, atau
+preferensi menetapkan {@link android.content.Intent} untuk dipanggil (dengan elemen <a href="#Intents">{@code &lt;intent&gt;}</a>) atau {@link android.app.Fragment} untuk ditampilkan (dengan atribut <a href="{@docRoot}reference/android/preference/Preference.html#attr_android:fragment">{@code
+android:fragment}</a>).</p>
+  </dd>
+  <dt>{@code android:title}</dt>
+  <dd>Ini menyediakan nama pengaturan yang bisa dilihat oleh pengguna.</dd>
+  <dt>{@code android:defaultValue}</dt>
+  <dd>Ini menetapkan nilai awal yang harus diatur sistem dalam file {@link
+android.content.SharedPreferences}. Anda harus memberikan nilai default untuk semua
+pengaturan.</dd>
+</dl>
+
+<p>Untuk informasi tentang semua atribut lain yang didukung, lihat dokumentasi {@link
+android.preference.Preference} (dan subkelas masing-masing).</p>
+
+
+<div class="figure" style="width:300px">
+  <img src="{@docRoot}images/ui/settings/settings-titles.png" alt="" />
+  <p class="img-caption"><strong>Gambar 2.</strong> Mengatur kategori
+    dengan judul. <br/><b>1.</b> Kategori ditetapkan oleh elemen {@link
+android.preference.PreferenceCategory &lt;PreferenceCategory&gt;}. <br/><b>2.</b> Judul
+ditetapkan dengan atribut {@code android:title}.</p>
+</div>
+
+
+<p>Bila daftar pengaturan Anda melebihi sekitar 10 item, Anda mungkin perlu menambahkan judul untuk
+mendefinisikan grup pengaturan atau menampilkan grup tersebut di
+layar terpisah. Opsi ini dijelaskan di bagian berikut.</p>
+
+
+<h3 id="Groups">Membuat grup pengaturan</h3>
+
+<p>Jika Anda menampilkan daftar 10 pengaturan atau lebih, pengguna
+mungkin akan kesulitan dalam memindai, memahami dan memprosesnya. Anda bisa mengatasinya dengan
+membagi sebagian atau semua pengaturan ke dalam beberapa grup, yang secara efektif akan mengubah satu daftar panjang menjadi beberapa daftar
+yang lebih pendek. Suatu grup pengaturan terkait bisa ditampilkan dalam salah satu dari dua cara:</p>
+
+<ul>
+  <li><a href="#Titles">Menggunakan judul</a></li>
+  <li><a href="#Subscreens">Menggunakan sublayar</a></li>
+</ul>
+
+<p>Anda bisa menggunakan salah satu atau keduanya untuk mengelola pengaturan aplikasi Anda. Saat
+memutuskan mana yang akan digunakan dan cara membagi pengaturan, Anda harus mengikuti pedoman dalam
+Panduan <a href="{@docRoot}design/patterns/settings.html">Pengaturan</a> Desain Android.</p>
+
+
+<h4 id="Titles">Menggunakan judul</h4>
+
+<p>Jika ingin menyediakan divider dengan heading di antara grup pengaturan (seperti yang ditampilkan dalam gambar 2),
+tempatkan setiap grup objek {@link android.preference.Preference} di dalam {@link
+android.preference.PreferenceCategory}.</p>
+
+<p>Misalnya:</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;PreferenceCategory 
+        android:title="&#64;string/pref_sms_storage_title"
+        android:key="pref_key_storage_settings">
+        &lt;CheckBoxPreference
+            android:key="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_auto_delete"
+            android:title="&#64;string/pref_title_auto_delete"
+            android:defaultValue="false"... />
+        &lt;Preference 
+            android:key="pref_key_sms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_sms_delete"... />
+        &lt;Preference 
+            android:key="pref_key_mms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_mms_delete" ... />
+    &lt;/PreferenceCategory>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h4 id="Subscreens">Menggunakan sublayar</h4>
+
+<p>Jika ingin menempatkan grup pengaturan ke dalam sublayar (seperti yang ditampilkan dalam gambar 3), tempatkan grup
+objek {@link android.preference.Preference} di dalam {@link
+android.preference.PreferenceScreen}.</p>
+
+<img src="{@docRoot}images/ui/settings/settings-subscreen.png" alt="" />
+<p class="img-caption"><strong>Gambar 3.</strong> Mengatur sublayar. Elemen {@code
+&lt;PreferenceScreen&gt;}
+membuat item yang, bila dipilih, akan membuka daftar terpisah untuk menampilkan pengaturan tersarang.</p>
+
+<p>Misalnya:</p>
+
+<pre>
+&lt;PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;!-- opens a subscreen of settings -->
+    &lt;PreferenceScreen
+        android:key="button_voicemail_category_key"
+        android:title="&#64;string/voicemail"
+        android:persistent="false">
+        &lt;ListPreference
+            android:key="button_voicemail_provider_key"
+            android:title="&#64;string/voicemail_provider" ... />
+        &lt;!-- opens another nested subscreen -->
+        &lt;PreferenceScreen
+            android:key="button_voicemail_setting_key"
+            android:title="&#64;string/voicemail_settings"
+            android:persistent="false">
+            ...
+        &lt;/PreferenceScreen>
+        &lt;RingtonePreference
+            android:key="button_voicemail_ringtone_key"
+            android:title="&#64;string/voicemail_ringtone_title"
+            android:ringtoneType="notification" ... />
+        ...
+    &lt;/PreferenceScreen>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h3 id="Intents">Menggunakan intent</h3>
+
+<p>Dalam beberapa kasus, Anda mungkin ingin item preferensi untuk membuka beberapa aktivitas sebagai ganti
+layar pengaturan, seperti browser web untuk melihat halaman web. Untuk memanggil {@link
+android.content.Intent} saat pengguna memilih item preferensi, tambahkan elemen {@code &lt;intent&gt;}
+sebagai anak dari elemen {@code &lt;Preference&gt;} yang bersangkutan.</p>
+
+<p>Misalnya, berikut ini cara menggunakan item preferensi untuk membuka halaman web:</p>
+
+<pre>
+&lt;Preference android:title="@string/prefs_web_page" >
+    &lt;intent android:action="android.intent.action.VIEW"
+            android:data="http://www.example.com" />
+&lt;/Preference>
+</pre>
+
+<p>Anda bisa membuat intent implisit maupun eksplisit menggunakan atribut berikut:</p>
+
+<dl>
+  <dt>{@code android:action}</dt>
+    <dd>Tindakan yang akan ditetapkan, sesuai metode 
+{@link android.content.Intent#setAction setAction()}.</dd>
+  <dt>{@code android:data}</dt>
+    <dd>Data yang akan ditetapkan, sesuai metode {@link android.content.Intent#setData setData()}.</dd>
+  <dt>{@code android:mimeType}</dt>
+    <dd>Tipe MIME yang akan ditetapkan, sesuai metode 
+{@link android.content.Intent#setType setType()}.</dd>
+  <dt>{@code android:targetClass}</dt>
+    <dd>Bagian kelas dari nama komponen, sesuai metode {@link android.content.Intent#setComponent
+setComponent()}.</dd>
+  <dt>{@code android:targetPackage}</dt>
+    <dd>Bagian paket dari nama komponen, sesuai metode {@link
+android.content.Intent#setComponent setComponent()}.</dd>
+</dl>
+
+
+
+<h2 id="Activity">Membuat Aktivitas Preferensi</h2>
+
+<p>Untuk menampilkan pengaturan Anda dalam suatu aktivitas, perluas kelas {@link
+android.preference.PreferenceActivity}. Ini adalah ekstensi dari kelas {@link
+android.app.Activity} biasa yang menampilkan daftar pengaturan berdasarkan hierarki objek {@link
+android.preference.Preference}. {@link android.preference.PreferenceActivity}
+secara otomatis mempertahankan pengaturan yang dikaitkan dengan setiap {@link
+android.preference.Preference} bila pengguna membuat perubahan.</p>
+
+<p class="note"><strong>Catatan:</strong> Jika Anda mengembangkan aplikasi untuk Android 3.0 dan
+yang lebih tinggi, sebaiknya gunakan {@link android.preference.PreferenceFragment}. Pindah ke bagian
+berikutnya tentang <a href="#Fragment">Menggunakan Fragmen Preferensi</a>.</p>
+
+<p>Hal paling penting untuk diingat adalah jangan memuat layout tampilan selama callback {@link
+android.preference.PreferenceActivity#onCreate onCreate()}. Sebagai gantinya, panggil {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} untuk
+menambahkan preferensi yang telah Anda deklarasikan dalam file XML ke aktivitas. Misalnya, berikut ini adalah kode minimum
+polos yang diperlukan untuk {@link android.preference.PreferenceActivity} fungsional:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.preferences);
+    }
+}
+</pre>
+
+<p>Ini sebenarnya kode yang cukup untuk beberapa aplikasi, karena segera setelah pengguna memodifikasi preferensi,
+sistem akan menyimpan perubahan tersebut ke file {@link android.content.SharedPreferences} default yang
+bisa dibaca oleh komponen aplikasi Anda lainnya bila Anda perlu memeriksa pengaturan pengguna. Akan tetapi,
+banyak aplikasi, yang memerlukan kode lebih sedikit untuk mendengarkan perubahan yang terjadi pada preferensi.
+Untuk informasi tentang mendengarkan perubahan di file {@link android.content.SharedPreferences},
+lihat bagian tentang <a href="#ReadingPrefs">Preferensi Membaca</a>.</p>
+
+
+
+
+<h2 id="Fragment">Menggunakan Fragmen Preferensi</h2>
+
+<p>Jika Anda mengembangkan Android 3.0 (API level 11) dan yang lebih tinggi, Anda harus menggunakan {@link
+android.preference.PreferenceFragment} untuk menampilkan daftar objek {@link android.preference.Preference}
+Anda. Anda bisa menambahkan {@link android.preference.PreferenceFragment} ke aktivitas apa pun,&mdash;Anda tidak
+perlu menggunakan {@link android.preference.PreferenceActivity}.</p>
+
+<p><a href="{@docRoot}guide/components/fragments.html">Fragmen</a> menyediakan arsitektur yang lebih
+fleksibel untuk aplikasi Anda, dibandingkan hanya menggunakan aktivitas, apa pun jenis
+aktivitas yang Anda bangun. Dengan sendirinya, kami menyarankan Anda menggunakan {@link
+android.preference.PreferenceFragment} untuk mengontrol tampilan pengaturan Anda sebagai ganti {@link
+android.preference.PreferenceActivity} bila memungkinkan.</p>
+
+<p>Implementasi {@link android.preference.PreferenceFragment} Anda bisa semudah
+mendefinisikan metode {@link android.preference.PreferenceFragment#onCreate onCreate()} untuk memuat
+file preferensi dengan {@link android.preference.PreferenceFragment#addPreferencesFromResource
+addPreferencesFromResource()}. Misalnya:</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Load the preferences from an XML resource
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+}
+</pre>
+
+<p>Anda nanti bisa menambahkan fragmen ini ke {@link android.app.Activity} seperti yang Anda lakukan untuk
+{@link android.app.Fragment} lainnya. Misalnya:</p>
+
+<pre>
+public class SettingsActivity extends Activity {
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Display the fragment as the main content.
+        getFragmentManager().beginTransaction()
+                .replace(android.R.id.content, new SettingsFragment())
+                .commit();
+    }
+}
+</pre>
+
+<p class="note"><strong>Catatan:</strong> {@link android.preference.PreferenceFragment} tidak memiliki
+objek {@link android.content.Context} sendiri. Jika memerlukan objek {@link android.content.Context}
+, Anda bisa memanggil {@link android.app.Fragment#getActivity()}. Akan tetapi, berhati-hatilah untuk memanggil
+{@link android.app.Fragment#getActivity()} hanya bila fragmen telah dikaitkan dengan aktivitas. Bila
+fragmen belum dikaitkan, atau terlepas saat akhir daur hidupnya, {@link
+android.app.Fragment#getActivity()} akan mengembalikan nol.</p>
+
+
+<h2 id="Defaults">Mengatur Nilai Default</h2>
+
+<p>Preferensi yang Anda buat mungkin mendefinisikan beberapa perilaku penting untuk aplikasi, jadi Anda
+perlu menginisialisasi file {@link android.content.SharedPreferences} yang terkait dengan
+nilai default untuk setiap {@link android.preference.Preference} bila pengguna menggunakan aplikasi
+Anda untuk pertama kali.</p>
+
+<p>Hal pertama yang harus Anda lakukan adalah menetapkan nilai default untuk setiap objek {@link
+android.preference.Preference}
+di file XML Anda menggunakan atribut {@code android:defaultValue}. Nilainya bisa berupa tipe data
+apa saja yang sesuai untuk objek {@link android.preference.Preference} bersangkutan. Misalnya:
+</p>
+
+<pre>
+&lt;!-- default value is a boolean -->
+&lt;CheckBoxPreference
+    android:defaultValue="true"
+    ... />
+
+&lt;!-- default value is a string -->
+&lt;ListPreference
+    android:defaultValue="@string/pref_syncConnectionTypes_default"
+    ... />
+</pre>
+
+<p>Kemudian, dari metode {@link android.app.Activity#onCreate onCreate()} dalam aktivitas utama aplikasi
+Anda&mdash;dan dalam aktivitas lainnya yang digunakan pengguna untuk masuk ke aplikasi Anda untuk pertama kali
+&mdash;panggil {@link android.preference.PreferenceManager#setDefaultValues
+setDefaultValues()}:</p>
+
+<pre>
+PreferenceManager.setDefaultValues(this, R.xml.advanced_preferences, false);
+</pre>
+
+<p>Memanggil ini selama {@link android.app.Activity#onCreate onCreate()} akan memastikan aplikasi
+Anda diinisialisasi dengan pengaturan default, yang mungkin perlu
+dibaca oleh aplikasi Anda untuk menentukan beberapa perilaku (seperti apakah akan mengunduh data pada
+jaringan seluler).</p>
+
+<p>Metode ini membutuhkan tiga argumen:</p>
+<ul>
+  <li>{@link android.content.Context} aplikasi Anda.</li>
+  <li>ID sumber daya untuk file XML preferensi yang ingin Anda atur nilai defaultnya.</li>
+  <li>Boolean menunjukkan apakah nilai default harus diatur lebih dari satu kali.
+<p>Bila <code>false</code>, sistem akan mengatur nilai default hanya jika metode ini belum pernah
+dipanggil sebelumnya (atau {@link android.preference.PreferenceManager#KEY_HAS_SET_DEFAULT_VALUES}
+dalam file preferensi berbagi nilai default salah).</p></li>
+</ul>
+
+<p>Selama Anda mengatur argumen ketiga ke <code>false</code>, Anda bisa dengan aman memanggil metode ini
+setiap kali aktivitas Anda memulai tanpa mengesampingkan preferensi tersimpan pengguna dengan mengatur ulang preferensi tersebut ke
+default. Akan tetapi, jika mengatur ke <code>true</code>, Anda akan mengesampingkan nilai
+sebelumnya dengan default.</p>
+
+
+
+<h2 id="PreferenceHeaders">Menggunakan Header Preferensi</h2>
+
+<p>Dalam kasus yang jarang terjadi, Anda mungkin perlu mendesain pengaturan agar layar pertama
+hanya menampilkan daftar <a href="#Subscreens">sublayar</a> (seperti dalam aplikasi Setting pada sistem,
+seperti yang ditampilkan dalam gambar 4 dan 5). Bila mengembangkan desain seperti itu untuk Android 3.0 dan yang lebih tinggi, Anda
+harus menggunakan fitur "header" yang baru di Android 3.0, sebagai ganti membangun sublayar dengan elemen
+{@link android.preference.PreferenceScreen} tersarang.</p>
+
+<p>Untuk membangun pengaturan dengan header, Anda perlu:</p>
+<ol>
+  <li>Memisahkan setiap grup pengaturan ke dalam instance {@link
+android.preference.PreferenceFragment} terpisah. Ini berarti, setiap grup pengaturan memerlukan file XML
+terpisah.</li>
+  <li>Membuat file header XML yang mencantumkan daftar setiap grup pengaturan dan mendeklarasikan fragmen mana
+yang berisi daftar pengaturan yang sesuai.</li>
+  <li>Memperluas kelas {@link android.preference.PreferenceActivity} untuk menjadi host pengaturan Anda.</li>
+  <li>Mengimplementasikan callback {@link
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} untuk menetapkan file
+header.</li>
+</ol>
+
+<p>Manfaat besar dalam menggunakan desain ini adalah karena {@link android.preference.PreferenceActivity}
+secara otomatis akan menampilkan layout dua panel yang ditampilkan dalam gambar 4 bila dijalankan pada layar besar.</p>
+
+<p>Bahkan jika aplikasi Anda mendukung versi Android yang lebih lama dari 3.0, Anda bisa membangun
+aplikasi untuk menggunakan {@link android.preference.PreferenceFragment} bagi presentasi dua panel pada perangkat
+yang lebih baru sementara tetap mendukung hierarki multilayar biasa pada perangkat
+yang lebih lama (lihat bagian tentang <a href="#BackCompatHeaders">Mendukung versi yang lebih lama dengan
+header preferensi</a>).</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-tablet.png" alt="" />
+<p class="img-caption"><strong>Gambar 4.</strong> Layout dua panel dengan header. <br/><b>1.</b> Header
+didefinisikan dengan file header XML. <br/><b>2.</b> Setiap grup pengaturan didefinisikan dengan
+{@link android.preference.PreferenceFragment} yang ditetapkan oleh elemen {@code &lt;header&gt;} dalam
+file header.</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-handset.png" alt="" />
+<p class="img-caption"><strong>Gambar 5.</strong> Perangkat handset dengan header pengaturan. Bila sebuah
+item dipilih, {@link android.preference.PreferenceFragment} terkait akan menggantikan
+header.</p>
+
+
+<h3 id="CreateHeaders" style="clear:left">Membuat file header</h3>
+
+<p>Setiap grup pengaturan dalam daftar header Anda akan ditetapkan oleh elemen {@code &lt;header&gt;}
+tunggal dalam elemen {@code &lt;preference-headers&gt;} akar. Misalnya:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;!-- key/value pairs can be included as arguments for the fragment. -->
+        &lt;extra android:name="someKey" android:value="someHeaderValue" />
+    &lt;/header>
+&lt;/preference-headers>
+</pre>
+
+<p>Dengan atribut {@code android:fragment}, setiap header mendeklarasikan instance {@link
+android.preference.PreferenceFragment} yang harus terbuka saat pengguna memilih header.</p>
+
+<p>Elemen {@code &lt;extras&gt;} memungkinkan Anda meneruskan pasangan nilai-kunci ke fragmen di {@link
+android.os.Bundle}. Fragmen bisa mengambil argumen dengan memanggil {@link
+android.app.Fragment#getArguments()}. Anda bisa meneruskan argumen ke fragmen dengan berbagai
+alasan, namun satu alasan yang baik adalah untuk menggunakan kembali subkelas yang sama dari {@link
+android.preference.PreferenceFragment} untuk setiap grup dan menggunakan argumen untuk menetapkan file
+XML preferensi mana yang harus dimuat fragmen.</p>
+
+<p>Misalnya, ada fragmen yang bisa digunakan ulang untuk berbagai grup pengaturan, bila setiap
+header mendefinisikan argumen {@code &lt;extra&gt;} dengan kunci {@code "settings"}:</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        String settings = getArguments().getString("settings");
+        if ("notifications".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_wifi);
+        } else if ("sync".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_sync);
+        }
+    }
+}
+</pre>
+
+
+
+<h3 id="DisplayHeaders">Menampilkan header</h3>
+
+<p>Untuk menampilkan header preferensi, Anda harus mengimplementasikan metode callback {@link
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} dan memanggil
+{@link android.preference.PreferenceActivity#loadHeadersFromResource
+loadHeadersFromResource()}. Misalnya:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onBuildHeaders(List&lt;Header> target) {
+        loadHeadersFromResource(R.xml.preference_headers, target);
+    }
+}
+</pre>
+
+<p>Bila pengguna memilih item dari daftar header, sistem akan membuka {@link
+android.preference.PreferenceFragment} terkait.</p>
+
+<p class="note"><strong>Catatan:</strong> Saat menggunakan header preferensi, subkelas {@link
+android.preference.PreferenceActivity} Anda tidak perlu mengimplementasikan metode {@link
+android.preference.PreferenceActivity#onCreate onCreate()}, karena tugas
+yang diperlukan untuk aktivitas hanyalah memuat header.</p>
+
+
+<h3 id="BackCompatHeaders">Mendukung versi yang lebih lama dengan header preferensi</h3>
+
+<p>Jika aplikasi Anda mendukung versi Android yang lebih lama dari 3.0, Anda tetap bisa menggunakan header untuk
+menyediakan layout dua panel saat berjalan pada Android 3.0 dan yang lebih tinggi. Anda hanya perlu membuat
+file XML preferensi tambahan yang menggunakan elemen {@link android.preference.Preference
+&lt;Preference&gt;} dasar yang berperilaku seperti item header (untuk digunakan oleh Android
+versi yang lebih lama).</p>
+
+<p>Akan tetapi, sebagai ganti membuka {@link android.preference.PreferenceScreen} baru, setiap elemen {@link
+android.preference.Preference &lt;Preference&gt;} mengirimkan {@link android.content.Intent} ke
+{@link android.preference.PreferenceActivity} yang menetapkan file XML preferensi mana yang
+akan dimuat.</p>
+
+<p>Misalnya, ini adalah file XML untuk header preferensi yang menggunakan Android 3.0
+dan yang lebih tinggi ({@code res/xml/preference_headers.xml}):</p> 
+
+<pre>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" />
+&lt;/preference-headers>
+</pre>
+
+<p>Dan ini adalah file preferensi yang menyediakan header yang sama untuk versi yang lebih lama dari
+Android 3.0 ({@code res/xml/preference_headers_legacy.xml}):</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;Preference 
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one"  >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_ONE" />
+    &lt;/Preference>
+    &lt;Preference 
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_TWO" />
+    &lt;/Preference>
+&lt;/PreferenceScreen>
+</pre>
+
+<p>Karena dukungan untuk {@code &lt;preference-headers&gt;} telah ditambahkan di Android 3.0, sistem akan memanggil
+{@link android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} di {@link
+android.preference.PreferenceActivity} hanya saat berjalan pada Android 3.0 atau yang lebih tinggi. Untuk memuat
+file header "lama" ({@code preference_headers_legacy.xml}), Anda harus memeriksa versi Android
+dan, jika versi tersebut lebih lama dari Android 3.0 ({@link
+android.os.Build.VERSION_CODES#HONEYCOMB}), panggil {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} untuk
+memuat file header lama. Misalnya:</p>
+
+<pre>
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    ...
+
+    if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+
+// Called only on Honeycomb and later
+&#64;Override
+public void onBuildHeaders(List&lt;Header> target) {
+   loadHeadersFromResource(R.xml.preference_headers, target);
+}
+</pre>
+
+<p>Satu-satunya hal yang perlu dilakukan adalah menangani {@link android.content.Intent} yang diteruskan ke
+aktivitas untuk mengidentifikasi file preferensi yang akan dimuat. Jadi ambillah tindakan intent dan bandingkan dengan
+string tindakan yang diketahui yang telah Anda gunakan dalam tag {@code &lt;intent&gt;} XML preferensi:</p>
+
+<pre>
+final static String ACTION_PREFS_ONE = "com.example.prefs.PREFS_ONE";
+...
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+
+    String action = getIntent().getAction();
+    if (action != null &amp;&amp; action.equals(ACTION_PREFS_ONE)) {
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+
+    else if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+</pre>
+
+<p>Ketahuilah bahwa panggilan berturut-turut ke {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} akan
+menumpuk semua preferensi ke dalam satu daftar, jadi pastikan bahwa ini hanya dipanggil sekali dengan mengikatkan syarat
+ke pernyataan else-if.</p>
+
+
+
+
+
+<h2 id="ReadingPrefs">Preferensi Membaca</h2>
+
+<p>Secara default, semua preferensi aplikasi Anda disimpan ke file yang bisa diakses dari mana saja
+di dalam aplikasi dengan memanggil metode statis {@link
+android.preference.PreferenceManager#getDefaultSharedPreferences
+PreferenceManager.getDefaultSharedPreferences()}. Ini akan mengembalikan objek {@link
+android.content.SharedPreferences} berisi semua pasangan nilai-kunci yang terkait
+dengan objek {@link android.preference.Preference} yang digunakan di {@link
+android.preference.PreferenceActivity} Anda.</p>
+
+<p>Misalnya, inilah cara membaca salah satu nilai preferensi dari aktivitas lain dalam aplikasi
+Anda:</p>
+
+<pre>
+SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
+String syncConnPref = sharedPref.getString(SettingsActivity.KEY_PREF_SYNC_CONN, "");
+</pre>
+
+
+
+<h3 id="Listening">Mendengarkan perubahan preferensi</h3>
+
+<p>Ada beberapa alasan yang membuat Anda perlu mendapatkan pemberitahuan segera setelah pengguna mengubah salah satu
+preferensi. Untuk menerima callback saat perubahan terjadi pada salah satu preferensi,
+implementasikan antarmuka {@link android.content.SharedPreferences.OnSharedPreferenceChangeListener
+SharedPreference.OnSharedPreferenceChangeListener} dan daftarkan listener untuk objek
+{@link android.content.SharedPreferences} dengan memanggil {@link
+android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
+registerOnSharedPreferenceChangeListener()}.</p>
+
+<p>Antarmuka hanya memiliki satu metode callback, {@link
+android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged
+onSharedPreferenceChanged()}, dan mungkin lebih mudah mengimplementasikan antarmuka sebagai bagian dari
+aktivitas Anda. Misalnya:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity
+                              implements OnSharedPreferenceChangeListener {
+    public static final String KEY_PREF_SYNC_CONN = "pref_syncConnectionType";
+    ...
+
+    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
+        String key) {
+        if (key.equals(KEY_PREF_SYNC_CONN)) {
+            Preference connectionPref = findPreference(key);
+            // Set summary to be the user-description for the selected value
+            connectionPref.setSummary(sharedPreferences.getString(key, ""));
+        }
+    }
+}
+</pre>
+
+<p>Dalam contoh ini, metode akan memeriksa apakah pengaturan yang diubah adalah untuk kunci preferensi yang diketahui. Ini akan
+memanggil {@link android.preference.PreferenceActivity#findPreference findPreference()} untuk mendapatkan objek
+{@link android.preference.Preference} yang diubah agar bisa memodifikasi rangkuman item
+menjadi keterangan pada pilihan pengguna. Ini berarti, bila pengaturan adalah {@link
+android.preference.ListPreference} atau pengaturan multipilihan, Anda harus memanggil {@link
+android.preference.Preference#setSummary setSummary()} bila pengaturan berubah ke tampilkan
+status saat ini (seperti pengaturan Sleep yang ditampilkan dalam gambar 5).</p>
+
+<p class="note"><strong>Catatan:</strong> Seperti dijelaskan dalam dokumen Desain Android tentang <a href="{@docRoot}design/patterns/settings.html">Pengaturan</a>, kami merekomendasikan Anda untuk memperbarui
+rangkuman {@link android.preference.ListPreference} setiap kali pengguna mengubah preferensi untuk
+menjelaskan pengaturan saat ini.</p>
+
+<p>Untuk manajemen daur hidup yang baik di aktivitas, kami merekomendasikan Anda untuk mendaftarkan dan mencabut pendaftaran
+{@link android.content.SharedPreferences.OnSharedPreferenceChangeListener} selama callback {@link
+android.app.Activity#onResume} dan {@link android.app.Activity#onPause}:</p>
+
+<pre>
+&#64;Override
+protected void onResume() {
+    super.onResume();
+    getPreferenceScreen().getSharedPreferences()
+            .registerOnSharedPreferenceChangeListener(this);
+}
+
+&#64;Override
+protected void onPause() {
+    super.onPause();
+    getPreferenceScreen().getSharedPreferences()
+            .unregisterOnSharedPreferenceChangeListener(this);
+}
+</pre>
+
+<p class="caution"><strong>Perhatian:</strong> Bila Anda memanggil {@link
+android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
+registerOnSharedPreferenceChangeListener()}, pengelola preferensi saat ini tidak akan
+menyimpan referensi kuat ke listener. Anda harus menyimpan referensi
+kuat bagi listener, atau referensi akan rentan terhadap pengumpulan sampah. Kami
+merekomendasikan Anda untuk mempertahankan referensi bagi listener dalam data instance objek
+yang akan ada selama Anda memerlukan listener tersebut.</p>
+
+<p>Misalnya, dalam kode berikut, caller tidak menyimpan referensi ke
+listener. Akibatnya, listener akan dikenakan pengumpulan sampah,
+dan suatu saat nanti akan gagal:</p>
+
+<pre>
+prefs.registerOnSharedPreferenceChangeListener(
+  // Bad! The listener is subject to garbage collection!
+  new SharedPreferences.OnSharedPreferenceChangeListener() {
+  public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+    // listener implementation
+  }
+});
+</pre>
+
+<p>Sebagai gantinya, simpan referensi ke listener dalam bidang data instance 
+objek yang akan ada selama listener dibutuhkan:</p>
+
+<pre>
+SharedPreferences.OnSharedPreferenceChangeListener listener =
+    new SharedPreferences.OnSharedPreferenceChangeListener() {
+  public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+    // listener implementation
+  }
+};
+prefs.registerOnSharedPreferenceChangeListener(listener);
+</pre>
+
+<h2 id="NetworkUsage">Mengelola Penggunaan Jaringan</h2>
+
+
+<p>Mulai Android 4.0, aplikasi Settings untuk sistem memungkinkan pengguna melihat seberapa besar
+data jaringan yang digunakan aplikasi mereka saat berada di latar depan dan latar belakang. Kemudian pengguna bisa
+menonaktifkan penggunaan data latar belakang untuk aplikasi individual. Agar pengguna tidak menonaktifkan akses
+aplikasi ke data dari latar belakang, Anda harus menggunakan koneksi data secara efisien dan mengizinkan
+pengguna untuk menyaring penggunaan data aplikasi melalui pengaturan aplikasi Anda.<p>
+
+<p>Misalnya, Anda bisa mengizinkan pengguna untuk mengontrol seberapa sering aplikasi menyinkronkan data, apakah aplikasi
+hanya melakukan pengunggahan/pengunduhan bila ada Wi-Fi, apakah aplikasi menggunakan data saat roaming, dll. Dengan
+tersedianya kontrol ini bagi pengguna, mereka kemungkinan besar tidak akan menonaktifkan akses aplikasi ke data
+saat mendekati batas yang mereka tetapkan dalam Settings pada sistem, karena mereka bisa mengontrol secara tepat
+seberapa besar data yang digunakan aplikasi Anda.</p>
+
+<p>Setelah menambahkan preferensi yang diperlukan dalam {@link android.preference.PreferenceActivity} Anda
+untuk mengontrol kebiasaan data aplikasi, Anda harus menambahkan filter intent untuk {@link
+android.content.Intent#ACTION_MANAGE_NETWORK_USAGE} dalam file manifes Anda. Misalnya:</p>
+
+<pre>
+&lt;activity android:name="SettingsActivity" ... >
+    &lt;intent-filter>
+       &lt;action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />
+       &lt;category android:name="android.intent.category.DEFAULT" />
+    &lt;/intent-filter>
+&lt;/activity>
+</pre>
+
+<p>Filter intent ini menunjukkan pada sistem bahwa ini adalah aktivitas yang mengontrol penggunaan
+data aplikasi Anda. Jadi, saat pengguna memeriksa seberapa banyak data yang digunakan oleh aplikasi dari
+aplikasi Settings pada sistem, tombol <em>View application settings</em> akan tersedia dan menjalankan
+{@link android.preference.PreferenceActivity} sehingga pengguna bisa menyaring seberapa besar data yang digunakan
+aplikasi Anda.</p>
+
+
+
+
+
+
+
+<h2 id="Custom">Membangun Preferensi Custom</h2>
+
+<p>Kerangka kerja Android menyertakan berbagai subkelas {@link android.preference.Preference} yang
+memungkinkan Anda membangun UI untuk beberapa macam tipe pengaturan.
+Akan tetapi, Anda mungkin menemukan pengaturan yang diperlukan bila tidak ada solusi bawaan, seperti
+picker nomor atau picker tanggal. Dalam hal demikian, Anda akan perlu membuat preferensi custom dengan memperluas
+kelas {@link android.preference.Preference} atau salah satu subkelas lainnya.</p>
+
+<p>Bila memperluas kelas {@link android.preference.Preference}, ada beberapa hal
+penting yang perlu Anda lakukan:</p>
+
+<ul>
+  <li>Menetapkan antarmuka pengguna yang akan muncul saat pengguna memilih pengaturan.</li>
+  <li>Menyimpan nilai pengaturan bila perlu.</li>
+  <li>Menginisialisasi {@link android.preference.Preference} dengan nilai saat ini (atau default)
+bila muncul di tampilan.</li>
+  <li>Menyediakan nilai default bila diminta oleh sistem.</li>
+  <li>Jika {@link android.preference.Preference} menyediakan UI sendiri (seperti dialog), simpan
+dan pulihkan status untuk menangani perubahan daur hidup (seperti saat pengguna memutar layar).</li>
+</ul>
+
+<p>Bagian berikut menjelaskan cara melakukan setiap tugas ini.</p>
+
+
+
+<h3 id="CustomSelected">Menetapkan antarmuka pengguna</h3>
+
+  <p>Jika secara langsung memperluas kelas {@link android.preference.Preference}, Anda perlu mengimplementasikan
+{@link android.preference.Preference#onClick()} untuk mendefinisikan tindakan yang terjadi bila pengguna
+memilih item tersebut. Akan tetapi, sebagian besar pengaturan custom memperluas {@link android.preference.DialogPreference} untuk
+menampilkan dialog, sehingga menyederhanakan prosedur. Bila memperluas {@link
+android.preference.DialogPreference}, Anda harus memanggil {@link
+android.preference.DialogPreference#setDialogLayoutResource setDialogLayoutResourcs()} selama di
+konstruktor kelas untuk menetapkan layout dialog.</p>
+
+  <p>Misalnya, beri ini konstruktor untuk {@link
+android.preference.DialogPreference} custom yang mendeklarasikan layout dan menetapkan teks untuk tombol dialog
+negatif dan positif default:</p>
+
+<pre>
+public class NumberPickerPreference extends DialogPreference {
+    public NumberPickerPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        
+        setDialogLayoutResource(R.layout.numberpicker_dialog);
+        setPositiveButtonText(android.R.string.ok);
+        setNegativeButtonText(android.R.string.cancel);
+        
+        setDialogIcon(null);
+    }
+    ...
+}
+</pre>
+
+
+
+<h3 id="CustomSave">Menyimpan nilai pengaturan</h3>
+
+<p>Anda bisa menyimpan nilai pengaturan kapan saja dengan memanggil salah satu metode {@code persist*()} kelas {@link
+android.preference.Preference}, seperti {@link
+android.preference.Preference#persistInt persistInt()} jika nilai pengaturan adalah integer atau
+{@link android.preference.Preference#persistBoolean persistBoolean()} untuk menyimpan boolean.</p>
+
+<p class="note"><strong>Catatan:</strong> Setiap {@link android.preference.Preference} hanya bisa menyimpan satu
+tipe data, jadi Anda harus menggunakan metode {@code persist*()} yang tepat untuk tipe data yang digunakan
+oleh {@link android.preference.Preference} custom Anda.</p>
+
+<p>Bila Anda memilih untuk mempertahankannya, pengaturan bisa bergantung pada kelas {@link
+android.preference.Preference} yang Anda perluas. Jika Anda memperluas {@link
+android.preference.DialogPreference}, maka Anda harus mempertahankan nilai hanya jika dialog
+tertutup karena hasil positif (pengguna memilih tombol "OK").</p>
+
+<p>Bila {@link android.preference.DialogPreference} tertutup, sistem akan memanggil metode {@link
+android.preference.DialogPreference#onDialogClosed onDialogClosed()}. Metode mencakup argumen
+boolean yang menetapkan apakah hasil pengguna "positif"&mdash;jika nilainya
+<code>true</code>, maka pengguna memilih tombol positif dan Anda harus menyimpan nilai baru. Misalnya:
+</p>
+
+<pre>
+&#64;Override
+protected void onDialogClosed(boolean positiveResult) {
+    // When the user selects "OK", persist the new value
+    if (positiveResult) {
+        persistInt(mNewValue);
+    }
+}
+</pre>
+
+<p>Dalam contoh ini, <code>mNewValue</code> adalah anggota kelas yang menampung nilai
+pengaturan saat ini. Memanggil {@link android.preference.Preference#persistInt persistInt()} akan menyimpan nilai
+ke file {@link android.content.SharedPreferences} (secara otomatis menggunakan kunci yang
+ditetapkan dalam file XML untuk {@link android.preference.Preference} ini).</p>
+
+
+<h3 id="CustomInitialize">Menginisialisasi nilai saat ini</h3>
+
+<p>Bila sistem menambahkan {@link android.preference.Preference} Anda ke layar, ia
+akan memanggil {@link android.preference.Preference#onSetInitialValue onSetInitialValue()} untuk memberi tahu
+Anda apakah pengaturan memiliki nilai yang dipertahankan. Jika tidak ada nilai yang dipertahankan, panggilan ini
+akan menyediakan nilai default bagi Anda.</p>
+
+<p>Metode {@link android.preference.Preference#onSetInitialValue onSetInitialValue()} akan meneruskan
+boolean, <code>restorePersistedValue</code>, untuk menunjukkan apakah nilai dipertahankan
+untuk pengaturan. Jika <code>true</code>, maka Anda harus mengambil nilai yang dipertahankan dengan memanggil
+salah satu metode {@code getPersisted*()} kelas {@link
+android.preference.Preference}, seperti {@link
+android.preference.Preference#getPersistedInt getPersistedInt()} untuk nilai integer. Anda biasanya
+perlu mengambil nilai yang dipertahankan agar bisa memperbarui UI dengan benar untuk merefleksikan
+nilai yang tersimpan sebelumnya.</p>
+
+<p>Jika <code>restorePersistedValue</code> adalah <code>false</code>, maka Anda
+harus menggunakan nilai default yang diteruskan dalam argumen kedua.</p>
+
+<pre>
+&#64;Override
+protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
+    if (restorePersistedValue) {
+        // Restore existing state
+        mCurrentValue = this.getPersistedInt(DEFAULT_VALUE);
+    } else {
+        // Set default state from the XML attribute
+        mCurrentValue = (Integer) defaultValue;
+        persistInt(mCurrentValue);
+    }
+}
+</pre>
+
+<p>Setiap metode {@code getPersisted*()} memerlukan argumen yang menetapkan
+nilai default untuk digunakan jika tidak ada nilai yang dipertahankan atau kunci tidak ada. Dalam contoh
+di atas, konstanta lokal yang digunakan untuk menetapkan nilai default dalam kasus {@link
+android.preference.Preference#getPersistedInt getPersistedInt()} tidak bisa mengembalikan nilai yang dipertahankan.</p>
+
+<p class="caution"><strong>Perhatian:</strong> Anda <strong>tidak bisa</strong> menggunakan
+<code>defaultValue</code> sebagai nilai default dalam metode {@code getPersisted*()}, karena
+nilainya selalu nol bila <code>restorePersistedValue</code> adalah <code>true</code>.</p>
+
+
+<h3 id="CustomDefault">Menyediakan nilai default</h3>
+
+<p>Jika instance kelas {@link android.preference.Preference} Anda menetapkan nilai default
+(dengan atribut {@code android:defaultValue}), maka
+sistem akan memanggil {@link android.preference.Preference#onGetDefaultValue
+onGetDefaultValue()} bila membuat instance objek untuk mengambil nilai. Anda harus mengimplementasikan
+metode ini agar sistem bisa menyimpan nilai default dalam {@link
+android.content.SharedPreferences}. Misalnya:</p>
+
+<pre>
+&#64;Override
+protected Object onGetDefaultValue(TypedArray a, int index) {
+    return a.getInteger(index, DEFAULT_VALUE);
+}
+</pre>
+
+<p>Argumen metode menyediakan semua hal yang Anda perlukan: larik atribut dan posisi
+indeks dari {@code android:defaultValue}, yang harus Anda ambil. Alasan Anda harus
+mengimplementasikan metode ini untuk mengekstrak nilai default dari atribut adalah karena Anda harus menetapkan
+nilai default lokal untuk atribut jika nilai tidak didefinisikan.</p>
+
+
+
+<h3 id="CustomSaveState">Menyimpan dan memulihkan status Preferensi</h3>
+
+<p>Seperti halnya {@link android.view.View} di layout, subkelas {@link android.preference.Preference}
+Anda bertanggung jawab menyimpan dan memulihkan statusnya jika aktivitas atau fragmen
+di-restart (seperti saat pengguna memutar layar). Untuk menyimpan
+dan memulihkan status kelas {@link android.preference.Preference} dengan benar, Anda harus mengimplementasikan
+metode callback daur hidup {@link android.preference.Preference#onSaveInstanceState
+onSaveInstanceState()} dan {@link
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()}.</p>
+
+<p>Status {@link android.preference.Preference} Anda didefinisikan oleh objek yang mengimplementasikan
+antarmuka {@link android.os.Parcelable}. Kerangka kerja Android menyediakan objek seperti itu untuk Anda gunakan
+sebagai titik mulai untuk mendefinisikan objek status Anda: kelas {@link
+android.preference.Preference.BaseSavedState}.</p>
+
+<p>Untuk mendefinisikan cara kelas {@link android.preference.Preference} menyimpan statusnya, Anda harus
+memperluas kelas {@link android.preference.Preference.BaseSavedState}. Anda hanya perlu mengesampingkan
+ beberapa metode dan mendefinisikan objek {@link android.preference.Preference.BaseSavedState#CREATOR}
+.</p>
+
+<p>Untuk sebagian besar aplikasi, Anda bisa menyalin implementasi berikut dan cukup mengubah baris yang
+menangani {@code value} jika subkelas {@link android.preference.Preference} Anda menyimpan tipe
+data selain integer.</p>
+
+<pre>
+private static class SavedState extends BaseSavedState {
+    // Member that holds the setting's value
+    // Change this data type to match the type saved by your Preference
+    int value;
+
+    public SavedState(Parcelable superState) {
+        super(superState);
+    }
+
+    public SavedState(Parcel source) {
+        super(source);
+        // Get the current preference's value
+        value = source.readInt();  // Change this to read the appropriate data type
+    }
+
+    &#64;Override
+    public void writeToParcel(Parcel dest, int flags) {
+        super.writeToParcel(dest, flags);
+        // Write the preference's value
+        dest.writeInt(value);  // Change this to write the appropriate data type
+    }
+
+    // Standard creator object using an instance of this class
+    public static final Parcelable.Creator&lt;SavedState> CREATOR =
+            new Parcelable.Creator&lt;SavedState>() {
+
+        public SavedState createFromParcel(Parcel in) {
+            return new SavedState(in);
+        }
+
+        public SavedState[] newArray(int size) {
+            return new SavedState[size];
+        }
+    };
+}
+</pre>
+
+<p>Dengan implementasi {@link android.preference.Preference.BaseSavedState} di atas yang ditambahkan
+ke aplikasi Anda (biasanya sebagai subkelas dari subkelas {@link android.preference.Preference}), Anda
+nanti perlu mengimplementasikan metode {@link android.preference.Preference#onSaveInstanceState
+onSaveInstanceState()} dan {@link
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()} untuk subkelas
+{@link android.preference.Preference} Anda.</p>
+
+<p>Misalnya:</p>
+
+<pre>
+&#64;Override
+protected Parcelable onSaveInstanceState() {
+    final Parcelable superState = super.onSaveInstanceState();
+    // Check whether this Preference is persistent (continually saved)
+    if (isPersistent()) {
+        // No need to save instance state since it's persistent,
+        // use superclass state
+        return superState;
+    }
+
+    // Create instance of custom BaseSavedState
+    final SavedState myState = new SavedState(superState);
+    // Set the state's value with the class member that holds current
+    // setting value
+    myState.value = mNewValue;
+    return myState;
+}
+
+&#64;Override
+protected void onRestoreInstanceState(Parcelable state) {
+    // Check whether we saved the state in onSaveInstanceState
+    if (state == null || !state.getClass().equals(SavedState.class)) {
+        // Didn't save the state, so call superclass
+        super.onRestoreInstanceState(state);
+        return;
+    }
+
+    // Cast state to custom BaseSavedState and pass to superclass
+    SavedState myState = (SavedState) state;
+    super.onRestoreInstanceState(myState.getSuperState());
+    
+    // Set this Preference's widget to reflect the restored state
+    mNumberPicker.setValue(myState.value);
+}
+</pre>
+
diff --git a/docs/html-intl/intl/in/guide/topics/ui/ui-events.jd b/docs/html-intl/intl/in/guide/topics/ui/ui-events.jd
new file mode 100644
index 0000000..5068176
--- /dev/null
+++ b/docs/html-intl/intl/in/guide/topics/ui/ui-events.jd
@@ -0,0 +1,291 @@
+page.title=Kejadian Input
+parent.title=Antarmuka Pengguna
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Dalam dokumen ini</h2>
+  <ol>
+    <li><a href="#EventListeners">Event Listener</a></li>
+    <li><a href="#EventHandlers">Event Handler</a></li>
+    <li><a href="#TouchMode">Mode Sentuh</a></li>
+    <li><a href="#HandlingFocus">Menangani Fokus</a></li>
+  </ol>
+
+</div>
+</div>
+
+<p>Di Android, ada lebih dari satu cara untuk mencegat kejadian dari interaksi pengguna dengan aplikasi Anda.
+Saat mempertimbangkan kejadian dalam antarmuka pengguna Anda, pendekatannya adalah menangkap kejadian
+dari objek View tertentu yang digunakan pengguna untuk berinteraksi. Kelas View menyediakan sarana untuk melakukannya.</p>
+
+<p>Dalam berbagai kelas View yang akan digunakan untuk menyusun layout, Anda mungkin melihat beberapa metode callback
+publik yang tampak berguna untuk kejadian UI. Metode ini dipanggil oleh kerangka kerja Android ketika masing-masing
+tindakan terjadi pada objek itu. Misalnya, bila View (seperti Button/Tombol) disentuh,
+metode <code>onTouchEvent()</code> akan dipanggil pada objek itu. Akan tetapi, untuk mencegatnya, Anda harus memperluas
+kelas dan mengesampingkan metode itu. Akan tetapi, memperluas setiap objek View
+untuk menangani kejadian seperti itu tidaklah praktis. Karena itulah kelas View juga berisi
+sekumpulan antarmuka tersarang dengan callback yang jauh lebih mudah didefinisikan. Antarmuka ini, 
+yang disebut <a href="#EventListeners">event listener</a>, merupakan tiket Anda untuk menangkap interaksi pengguna dengan UI.</p>
+
+<p>Walaupun Anda akan lebih sering menggunakan event listener ini untuk interaksi pengguna,
+mungkin ada saatnya Anda ingin memperluas kelas View, untuk membuat komponen custom. 
+Mungkin Anda ingin memperluas kelas {@link android.widget.Button}
+untuk membuat sesuatu yang lebih menarik. Dalam hal ini, Anda akan dapat mendefinisikan perilaku kejadian default untuk kelas Anda dengan menggunakan
+kelas <a href="#EventHandlers">event handler</a>.</p>
+
+
+<h2 id="EventListeners">Event Listener</h2>
+
+<p>Event listener merupakan antarmuka di kelas {@link android.view.View} yang berisi metode
+callback tunggal. Metode ini akan dipanggil oleh kerangka kerja Android bila View yang
+telah didaftarkan dengan listener dipicu oleh interaksi pengguna dengan item dalam UI.</p>
+
+<p>Yang juga disertakan dalam antarmuka event listener adalah metode callback berikut ini:</p>
+
+<dl>
+  <dt><code>onClick()</code></dt>
+    <dd>Dari {@link android.view.View.OnClickListener}. 
+    Ini dipanggil baik saat pengguna menyentuh item
+ (bila dalam mode sentuh), maupun memfokuskan pada item dengan tombol navigasi atau trackball dan
+menekan tombol "enter" yang sesuai atau menekan trackball.</dd>
+  <dt><code>onLongClick()</code></dt>
+    <dd>Dari {@link android.view.View.OnLongClickListener}. 
+    Ini dipanggil baik saat pengguna menyentuh dan menahan item (bila dalam mode sentuh), 
+maupun memfokuskan pada item dengan tombol navigasi atau trackball dan
+menekan serta menahan tombol "enter" yang sesuai atau menekan dan menahan trackball (selama satu detik).</dd>
+  <dt><code>onFocusChange()</code></dt>
+    <dd>Dari {@link android.view.View.OnFocusChangeListener}. 
+    Ini dipanggil saat pengguna menyusuri ke atau dari item, dengan menggunakan tombol navigasi atau trackball.</dd>
+  <dt><code>onKey()</code></dt>
+    <dd>Dari {@link android.view.View.OnKeyListener}. 
+    Ini dipanggil saat pengguna memfokuskan pada item dan menekan atau melepas tombol fisik pada perangkat.</dd>
+  <dt><code>onTouch()</code></dt>
+    <dd>Dari {@link android.view.View.OnTouchListener}. 
+    Ini dipanggil saat pengguna melakukan tindakan yang digolongkan sebagai kejadian sentuh, termasuk penekanan, pelepasan,
+atau gerak perpindahan pada layar (dalam batasan item itu).</dd>
+  <dt><code>onCreateContextMenu()</code></dt>
+    <dd>Dari {@link android.view.View.OnCreateContextMenuListener}. 
+    Ini dipanggil saat Menu Konteks sedang dibuat (akibat "klik lama" terus-menerus). Lihat diskusi 
+tentang menu konteks di panduan pengembang <a href="{@docRoot}guide/topics/ui/menus.html#context-menu">Menu</a>.
+</dd>
+</dl>
+
+<p>Metode ini satu-satunya yang menempati antarmukanya masing-masing. Untuk mendefinisikan salah satu metode ini
+dan menangani kejadian Anda, implementasikan antarmuka tersarang dalam Aktivitas Anda atau definisikan sebagai kelas anonim.
+Kemudian, teruskan satu
+instance implementasi Anda pada masing-masing metode <code>View.set...Listener()</code>. (Misalnya, panggil 
+<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code> 
+dan teruskan implementasi {@link android.view.View.OnClickListener OnClickListener} Anda.)</p>
+
+<p>Contoh di bawah menunjukkan cara mendaftarkan on-click listener untuk Button. </p>
+
+<pre>
+// Create an anonymous implementation of OnClickListener
+private OnClickListener mCorkyListener = new OnClickListener() {
+    public void onClick(View v) {
+      // do something when the button is clicked
+    }
+};
+
+protected void onCreate(Bundle savedValues) {
+    ...
+    // Capture our button from layout
+    Button button = (Button)findViewById(R.id.corky);
+    // Register the onClick listener with the implementation above
+    button.setOnClickListener(mCorkyListener);
+    ...
+}
+</pre>
+
+<p>Anda juga akan merasa lebih praktis mengimplementasikan OnClickListener sebagai bagian dari Aktivitas.
+Ini akan menghindari beban kelas ekstra dan alokasi objek. Misalnya:</p>
+<pre>
+public class ExampleActivity extends Activity implements OnClickListener {
+    protected void onCreate(Bundle savedValues) {
+        ...
+        Button button = (Button)findViewById(R.id.corky);
+        button.setOnClickListener(this);
+    }
+
+    // Implement the OnClickListener callback
+    public void onClick(View v) {
+      // do something when the button is clicked
+    }
+    ...
+}
+</pre>
+
+<p>Perhatikan bahwa callback <code>onClick()</code> dalam contoh di atas tidak memiliki
+nilai hasil, namun beberapa metode event listener lainnya harus mengembalikan boolean. Sebabnya
+bergantung pada kejadian. Untuk sebagian yang mengembalikan boolean, ini sebabnya:</p>
+<ul>
+  <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> - 
+    Ini mengembalikan boolean untuk menunjukkan apakah Anda telah menggunakan kejadian dan tidak boleh dibawa lebih jauh. 
+    Yaitu, mengembalikan <em>benar</em> untuk menunjukkan apakah Anda telah menangani kejadian dan semestinya berhenti di sini; 
+    mengembalikan <em>salah</em> jika Anda tidak menanganinya dan/atau kejadian semestinya berlanjut ke
+    on-click listener lainnya.</li>
+  <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> - 
+    Ini mengembalikan boolean untuk menunjukkan apakah Anda telah menggunakan kejadian dan tidak boleh dibawa lebih jauh.
+    Yaitu, mengembalikan <em>benar</em> untuk menunjukkan apakah Anda telah menangani kejadian dan semestinya berhenti di sini; 
+    mengembalikan <em>salah</em> jika Anda tidak menanganinya dan/atau kejadian semestinya berlanjut ke
+    on-key listener lainnya.</li>
+  <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> - 
+    Ini mengembalikan boolean untuk menunjukkan apakah listener Anda telah menggunakan kejadian ini. Yang penting adalah 
+kejadian ini bisa memiliki beberapa tindakan yang saling mengikuti. Jadi, jika Anda mengembalikan <em>salah</em>saat 
+kejadian tindakan turun diterima, itu menunjukkan bahwa Anda belum menggunakan kejadian itu dan juga 
+tidak tertarik dengan tindakan berikutnya dari kejadian ini. Karena itu, Anda tidak akan diminta untuk melakukan tindakan
+ lainnya dalam kejadian, seperti gerakan jari, atau kejadian tindakan naik yang akan terjadi.</li>
+</ul>
+
+<p>Ingatlah bahwa kejadian tombol fisik selalu disampaikan ke View yang sedang difokus. Kejadian ini dikirim mulai dari atas
+hierarki View, kemudian turun hingga tujuan yang sesuai. Jika View Anda (atau anak View Anda)
+saat ini sedang fokus, maka Anda dapat melihat kejadian berpindah melalui metode.<code>{@link android.view.View#dispatchKeyEvent(KeyEvent)
+dispatchKeyEvent()}</code> Sebagai pengganti untuk menangkap kejadian penting melalui View, Anda juga dapat menerima 
+semua kejadian dalam Aktivitas Anda dengan <code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>
+dan <code>{@link android.app.Activity#onKeyUp(int,KeyEvent) onKeyUp()}</code>.</p>
+
+<p>Selain itu, saat memikirkan tentang input teks aplikasi Anda, ingatlah bahwa banyak perangkat yang hanya memiliki
+metode input perangkat lunak. Metode seperti itu tidak harus berbasis tombol; sebagian mungkin menggunakan input suara, tulisan tangan, dan seterusnya. Meskipun 
+metode input menyajikan antarmuka seperti keyboard, itu umumnya <strong>tidak</strong> memicu keluarga kejadian
+<code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>. Anda sama sekali tidak boleh
+membangun UI yang mengharuskan penekanan tombol tertentu dikontrol kecuali jika Anda ingin membatasi aplikasi Anda pada perangkat yang memiliki
+keyboard fisik. Khususnya, jangan mengandalkan metode ini untuk memvalidasi input saat pengguna menekan tombol
+enter; melainkan, gunakan tindakan seperti {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE} untuk menandai
+metode input mengenai reaksi yang diharapkan aplikasi Anda, sehingga bisa mengubah UI-nya secara signifikan. Hindari anggapan
+tentang bagaimana metode input perangkat lunak seharusnya bekerja dan percayalah bahwa metode akan menyediakan teks yang sudah diformat bagi aplikasi Anda.</p>
+
+<p class="note"><strong>Catatan:</strong> Android akan memanggil event handler terlebih dahulu kemudian handler
+default yang sesuai dari definisi kelas. Karena itu, mengembalikan <em>benar</em> dari event listener ini akan menghentikan 
+penyebaran kejadian ke event listener lain dan juga akan memblokir callback ke 
+event handler default di View. Pastikan bahwa Anda ingin mengakhiri kejadian saat mengembalikan <em>true</em>.</p>
+
+
+<h2 id="EventHandlers">Event Handler</h2>
+
+<p>Jika Anda membuat komponen custom dari View, maka Anda dapat mendefinisikan penggunaan beberapa 
+metode callback sebagai event handler default.
+Dalam dokumen tentang <a href="{@docRoot}guide/topics/ui/custom-components.html">Komponen
+Custom</a>, Anda akan melihat penggunaan beberapa callback umum untuk penanganan kejadian,
+termasuk:</p>
+<ul>
+  <li><code>{@link  android.view.View#onKeyDown}</code> - Dipanggil bila terjadi kejadian tombol baru.</li>
+  <li><code>{@link  android.view.View#onKeyUp}</code> - Dipanggil bila terjadi kejadian tombol naik.</li>
+  <li><code>{@link  android.view.View#onTrackballEvent}</code> - Dipanggil bila terjadi kejadian gerakan trackball.</li>
+  <li><code>{@link  android.view.View#onTouchEvent}</code> - Dipanggil bila terjadi kejadian gerakan layar sentuh.</li>
+  <li><code>{@link  android.view.View#onFocusChanged}</code> - Dipanggil bila View memperoleh atau kehilangan fokus.</li>
+</ul>
+<p>Ada beberapa metode lain yang harus Anda ketahui, yang bukan bagian dari kelas View, 
+namun bisa berdampak langsung pada kemampuan Anda menangani kejadian. Jadi, saat mengelola kejadian yang lebih kompleks dalam
+layout, pertimbangkanlah metode-metode lain ini:</p>
+<ul>
+  <li><code>{@link  android.app.Activity#dispatchTouchEvent(MotionEvent)
+    Activity.dispatchTouchEvent(MotionEvent)}</code> - Ini memungkinkan {@link 
+    android.app.Activity} Anda mencegat semua kejadian sentuh sebelum dikirim ke jendela.</li>
+  <li><code>{@link  android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)
+    ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> - Ini memungkinkan {@link
+    android.view.ViewGroup} memantau kejadian saat dikirim ke View anak.</li>
+  <li><code>{@link  android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
+    ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - Panggil ini
+    pada View induk untuk menunjukan larangan mencegat kejadian sentuh dengan <code>{@link 
+    android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code>.</li>
+</ul>
+
+<h2 id="TouchMode">Mode Sentuh</h2>
+<p>
+Saat pengguna menyusuri antarmuka pengguna dengan tombol pengarah atau trackball, Anda
+perlu memberikan fokus pada item tindakan (seperti tombol) agar pengguna bisa mengetahui apa
+yang akan menerima input.  Akan tetapi jika perangkat memiliki kemampuan sentuh, dan pengguna
+mulai berinteraksi dengan antarmuka dengan menyentuhnya, maka Anda tidak perlu lagi
+menyorot item, atau memfokuskan pada View tertentu.  Karena itu, ada mode
+untuk interaksi yang bernama "mode sentuh". 
+</p>
+<p>
+Untuk perangkat berkemampuan sentuh, setelah pengguna menyentuh layar, perangkat
+akan masuk ke mode sentuh.  Dari sini dan selanjutnya, hanya View dengan 
+{@link android.view.View#isFocusableInTouchMode} benar yang akan dapat difokus, seperti widget pengedit teks.
+View lain yang dapat disentuh, seperti tombol, tidak akan difokus bila disentuh; View ini akan
+langsung memicu on-click listener bila ditekan.
+</p>
+<p>
+Kapan saja pengguna menekan tombol pengarah atau menggulir dengan trackball, perangkat akan
+keluar dari mode sentuh, dan mencari tampilan untuk difokuskan. Kini pengguna bisa melanjutkan interaksi
+dengan antarmuka pengguna tanpa menyentuh layar.
+</p>
+<p>
+Status mode sentuh dipertahankan di seluruh sistem (semua jendela dan aktivitas). 
+Untuk query status saat ini, Anda bisa memanggil
+{@link android.view.View#isInTouchMode} untuk mengetahui apakah perangkat saat ini sedang dalam mode sentuh.
+</p>
+
+
+<h2 id="HandlingFocus">Menangani Fokus</h2>
+
+<p>Kerangka kerja ini akan menangani gerakan fokus rutin sebagai respons input pengguna.
+Ini termasuk mengubah fokus saat View dihapus atau disembunyikan, atau saat tersedia View
+baru. View menunjukkan kesediaannya untuk mengambil fokus
+melalui metode <code>{@link android.view.View#isFocusable()}</code>. Untuk mengubah apakah View bisa mengambil
+fokus, panggil <code>{@link android.view.View#setFocusable(boolean) setFocusable()}</code>.  Saat dalam mode sentuh,
+Anda dapat me-query apakah View memungkinkan fokus dengan <code>{@link android.view.View#isFocusableInTouchMode()}</code>.
+Anda bisa mengubahnya dengan <code>{@link android.view.View#setFocusableInTouchMode(boolean) setFocusableInTouchMode()}</code>.
+</p>
+
+<p>Gerakan fokus berdasarkan pada algoritma yang mencari tetangga terdekat dalam
+arah yang diberikan. Dalam kasus yang jarang terjadi, algoritma default mungkin
+tidak cocok dengan perilaku yang diinginkan pengembang. Dalam situasi ini, Anda bisa memberikan
+pengesampingan eksplisit dengan mengikuti atribut XML berikut dalam file layout:
+<var>nextFocusDown</var>, <var>nextFocusLeft</var>, <var>nextFocusRight</var>, dan
+<var>nextFocusUp</var>. Tambahkan salah satu atribut ini ke View <em>dari</em> mana fokus
+meninggalkan. Definisikan nilai atribut untuk menjadi ID View
+<em>ke</em> mana fokus harus diberikan. Misalnya:</p>
+<pre>
+&lt;LinearLayout
+    android:orientation="vertical"
+    ... >
+  &lt;Button android:id="@+id/top"
+          android:nextFocusUp="@+id/bottom"
+          ... />
+  &lt;Button android:id="@+id/bottom"
+          android:nextFocusDown="@+id/top"
+          ... />
+&lt;/LinearLayout>
+</pre>
+
+<p>Biasanya, dalam layout vertikal ini, navigasi ke atas dari Button pertama tidak akan membawa ke
+mana pun, tidak pula akan menyusuri ke bawah dari Button kedua. Karena sekarang Button atas telah
+mendefinisikan Button bawah sebagai <var>nextFocusUp</var> (dan sebaliknya), fokus navigasi akan
+silih berganti dari atas ke bawah dan bawah ke atas.</p>
+
+<p>Jika Anda ingin mendeklarasikan View sebagai dapat difokus dalam UI (bila biasanya tidak dapat difokus), 
+tambahkan atribut XML <code>android:focusable</code> ke View, dalam deklarasi layout Anda.
+Atur nilai <var>true</var>. Anda juga bisa mendeklarasikan View
+sebagai dapat difokus saat dalam Mode Sentuh dengan <code>android:focusableInTouchMode</code>.</p>
+<p>Untuk meminta View tertentu difokus, panggil <code>{@link android.view.View#requestFocus()}</code>.</p>
+<p>Untuk mendengarkan kejadian fokus (diberi tahu bila View menerima atau kehilangan fokus), gunakan
+<code>{@link android.view.View.OnFocusChangeListener#onFocusChange(View,boolean) onFocusChange()}</code>
+, seperti yang dibahas di bagian <a href="#EventListeners">Event Listener</a>, di atas.</p>
+
+
+
+<!--
+<h2 is="EventCycle">Event Cycle</h2>
+   <p>The basic cycle of a View is as follows:</p>
+   <ol>
+    <li>An event comes in and is dispatched to the appropriate View. The View
+    handles the event and notifies any listeners.</li>
+    <li>If, in the course of processing the event, the View's bounds may need
+    to be changed, the View will call {@link android.view.View#requestLayout()}.</li>
+    <li>Similarly, if in the course of processing the event the View's appearance
+    may need to be changed, the View will call {@link android.view.View#invalidate()}.</li>
+    <li>If either {@link android.view.View#requestLayout()} or {@link android.view.View#invalidate()} were called,
+    the framework will take care of measuring, laying out, and drawing the tree
+    as appropriate.</li>
+   </ol>
+   
+   <p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on
+   the UI thread when calling any method on any View.
+   If you are doing work on other threads and want to update the state of a View
+   from that thread, you should use a {@link android.os.Handler}.
+   </p>
+-->
diff --git a/docs/html-intl/intl/in/sdk/index.jd b/docs/html-intl/intl/in/sdk/index.jd
new file mode 100644
index 0000000..53019fb
--- /dev/null
+++ b/docs/html-intl/intl/in/sdk/index.jd
@@ -0,0 +1,432 @@
+page.title=Unduh Android Studio dan SDK Tools
+page.tags=sdk, android studio
+page.image=images/cards/android-studio_2x.png
+page.template=sdk
+page.image=images/cards/android-studio_2x.png
+header.hide=1
+page.metaDescription=Unduh Android IDE resmi dan alat pengembang untuk membuat aplikasi bagi ponsel, tablet, perangkat wearable, TV Android dan lainnya.
+
+@jd:body
+
+<style type="text/css">
+  .offline {display:none;}
+  h2.feature {
+    padding-top:30px;
+    margin-top:0;
+    clear:both;
+  }
+  .feature-blurb {
+  margin:0px; font-size:16px; font-weight:300;
+  padding-top:40px;
+  }
+
+  .landing-button .small {
+    font-size: 12px;
+    font-weight: normal;
+    line-height: 12px;
+    display: block;
+  }
+
+  h1.studio-logo {
+    width:226px;
+    height:78px;
+    display:block;
+    padding:0;
+    white-space: nowrap;
+    text-indent: -10000px;
+    font-size:0px;
+    background: url({@docRoot}images/tools/studio-logo.png);
+    background-image: -webkit-image-set(url({@docRoot}images/tools/studio-logo.png) 1x, url({@docRoot}images/tools/studio-logo_2x.png) 2x);
+    background-size: 226px 78px;
+  }
+
+</style>
+
+
+
+
+
+<div style="position:relative;">
+
+
+<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
+<div class="col-13" style="margin:0;">&nbsp;</div><!-- provides top margin for content -->
+
+<h1 id="tos-header" style="margin-top:0">Unduh</h1>
+
+<p class="sdk-terms-intro">Sebelum menginstal Android Studio atau alat SDK mandiri,
+Anda harus menyetujui ketentuan dan persyaratan berikut.</p>
+
+<div class="sdk-terms" onfocus="this.blur()">
+<h2 class="norule">Ketentuan dan Persyaratan</h2>
+Ini adalah Perjanjian Lisensi Kit Pengembangan Perangkat Lunak Android
+
+<h3>1. Introduction</h3>
+1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
+
+1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
+
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+
+
+<h3>2. Accepting this License Agreement</h3>
+2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
+
+2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
+
+2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
+
+2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
+
+
+<h3>3. SDK License from Google</h3>
+3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
+
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
+
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+
+3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+
+3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
+
+3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
+
+3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+
+3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
+
+
+<h3>4. Use of the SDK by You</h3>
+4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
+
+4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
+
+4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
+
+4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
+
+4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
+
+4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
+
+
+<h3>5. Your Developer Credentials</h3>
+5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
+
+
+<h3>6. Privacy and Information</h3>
+6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
+
+6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
+
+
+<h3>7. Third Party Applications</h3>
+7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
+
+7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
+
+7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
+
+
+<h3>8. Using Android APIs</h3>
+8.1 Google Data APIs
+
+8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
+
+8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
+
+
+<h3>9. Terminating this License Agreement</h3>
+9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
+
+9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
+
+9.3 Google may at any time, terminate the License Agreement with you if:
+(A) you have breached any provision of the License Agreement; or
+(B) Google is required to do so by law; or
+(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
+(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
+
+9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
+
+
+<h3>10. DISCLAIMER OF WARRANTIES</h3>
+10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+
+10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
+
+10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+
+
+<h3>11. LIMITATION OF LIABILITY</h3>
+11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
+
+<h3>12. Indemnification</h3>
+12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
+
+
+<h3>13. Changes to the License Agreement</h3>
+13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
+
+
+<h3>14. General Legal Terms</h3>
+14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
+
+14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
+
+14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
+
+14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
+
+14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
+
+14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
+
+14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+
+<em>November 20, 2015</em>
+</div>
+
+
+
+
+
+<div id="next-steps" style="display:none;position:absolute;width:inherit">
+  <p>Beberapa saat lagi Anda akan dapat membuat aplikasi untuk Android!</p>
+  <p>Sebentar lagi, Anda akan dialihkan ke
+  <a id="next-link" href="{@docRoot}sdk/installing/index.html">Menginstal Android SDK</a>.</p>
+
+</div><!-- end next-steps -->
+
+
+
+<div id="sdk-terms-form">
+<p>
+<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+<label id="agreeLabel" for="agree">Saya telah membaca dan menyetujui ketentuan dan persyaratan di atas</label>
+</p>
+<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+</div>
+
+
+</div><!-- end TOS -->
+
+
+
+
+
+
+<div id="landing">
+
+<div class="col-13">&nbsp;</div><!-- provides top margin for content -->
+
+<img src="{@docRoot}images/tools/studio-hero.png"
+srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x"
+width="760" alt="" />
+
+<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
+
+<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>
+
+<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
+width: 400px;text-align: center;">Android IDE resmi</p>
+
+<ul style="font-size:12px;line-height:19px;">
+<li>Android Studio IDE</li>
+<li>Android SDK Tools</li>
+<li>Platform Android 6.0 (Marshmallow)</li>
+<li>Citra sistem emulator Android 6.0 dengan Google API</li>
+</ul>
+
+<a class="online landing-button green download-bundle-button"
+href="#Other" >Download Android Studio<br/><span class='small'></span></a>
+
+<!-- this appears when viewing the offline docs -->
+<p class="offline">
+Untuk mendapatkan Android Studio atau alat SDK mandiri, kunjungi <a href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
+</p>
+</div>
+
+<ul>
+  <li><a href="#Requirements">Kebutuhan Sistem</a></li>
+  <li><a href="#Other">Opsi Unduhan Lain</a></li>
+  <li><a href="{@docRoot}sdk/installing/migrate.html">Beralih ke Android Studio</a></li>
+  <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform" target="_blank">Ikuti Survei</a></li>
+</ul>
+
+
+
+
+<h2 class="feature norule" >Editor kode cerdas</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-code.png" srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Yang menjadi inti Android Studio adalah editor kode cerdas dengan kemampuan
+ penyelesaian kode, optimalisasi, dan analisis kode yang canggih.</p>
+  <p>Editor kode yang andal ini membantu Anda menjadi pengembang aplikasi Android yang lebih produktif.</p>
+</div>
+
+
+
+
+
+<h2 class="feature norule">Template kode dan integrasi GitHub</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-import.png" srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Pemandu proyek yang baru membuat proses memulai proyek baru menjadi jauh lebih mudah.</p>
+
+  <p>Mulai proyek dengan menggunakan kode template untuk pola seperti navigation-drawer dan view-pager,
+ dan bahkan impor contoh kode Google dari GitHub.</p>
+</div>
+
+
+
+
+<h2 class="feature norule">Pengembangan aplikasi multilayar</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-screens.png" srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Buat aplikasi untuk ponsel dan tablet Android, Android Wear,
+ Android TV, Android Auto dan Google Glass.</p>
+  <p>Dengan Android Project View yang baru dan dukungan modul di Android Studio, jadi semakin mudah
+  mengelola proyek dan sumber daya aplikasi.
+</div>
+
+
+
+
+<h2 class="feature norule">Perangkat virtual untuk semua ukuran dan bentuk</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-avds.png" srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Android Studio sudah dikonfigurasi dengan citra emulator yang dioptimalkan.</p>
+  <p>Virtual Device Manager yang telah diperbarui dan dibuat lebih efisien menyediakan
+ profil perangkat yang sudah didefinisikan untuk perangkat Android umum.</p>
+</div>
+
+
+
+
+<h2 class="feature norule">
+Pembuatan Android berkembang dengan Gradle</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-gradle.png" srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Buatlah berbagai APK untuk aplikasi Android Anda dengan aneka fitur menggunakan proyek yang sama.</p>
+  <p>Kelola dependensi aplikasi dengan Maven.</p>
+  <p>Buat APK dari Android Studio atau baris perintah.</p>
+</div>
+
+
+
+
+<h2 class="feature norule">Selengkapnya tentang Android Studio</h2>
+<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
+
+<a class="online landing-button green download-bundle-button" style="margin:0 0 40px 60px;float:right" href="">Download</a>
+
+  <ul>
+  <li>Dibuat dengan IntelliJ IDEA Community Edition, JAVA IDE populer karya JetBrains.</li>
+  <li>Sistem pembuatan berbasis Gradle yang fleksibel.</li>
+  <li>Buat berbagai generasi APK dan variannya.</li>
+  <li>Dukungan template bertambah untuk Google Services dan aneka tipe perangkat.</li>
+  <li>Editor layout yang lengkap dengan dukungan untuk pengeditan tema.</li>
+  <li>Alat penambal untuk solusi kinerja, kegunaan, kompatibilitas versi, dan masalah lain.</li>
+  <li>ProGuard dan kemampuan penandatanganan aplikasi.</li>
+  <li>Dukungan bawaan untuk Google Cloud Platform, mempermudah integrasi Google Cloud
+  Messaging dan App Engine.</li>
+  </ul>
+
+<p style="margin:0">
+Untuk detail selengkapnya tentang fitur-fitur yang tersedia di Android Studio,
+bacalah panduan <a href="{@docRoot}tools/studio/index.html">Dasar-Dasar Android Studio</a>.</p>
+</div>
+
+
+<p>Jika Anda menggunakan Eclipse dengan ADT, ingatlah bahwa Android Studio sekarang merupakan IDE resmi
+untuk Android, jadi Anda harus beralih ke Android Studio untuk menerima semua
+pembaruan terakhir IDE. Untuk bantuan dalam memindahkan proyek,
+lihat <a href="{@docRoot}sdk/installing/migrate.html">Beralih ke Android
+Studio</a>.</p>
+
+
+
+
+
+
+
+<h2 id="Requirements">Kebutuhan Sistem</h2>
+
+<h3>Windows</h3>
+
+<ul>
+<li>Microsoft&reg;  Windows&reg;  8/7/Vista/2003 (32 atau 64-bit)</li>
+<li>RAM minimum 2 GB, RAM yang direkomendasikan 4 GB</li>
+<li>Ruang hard-disk 400 MB</li>
+<li>Setidaknya 1 GB untuk Android SDK, citra sistem emulator, dan cache</li>
+<li>Resolusi layar minimum 1280 x 800</li>
+<li>Java Development Kit (JDK) 7 </li>
+<li>Opsional untuk emulator akselerasi: Prosesor Intel® dengan dukungan untuk Intel® VT-x, Intel® EM64T
+(Intel® 64), dan fungsionalitas Execute Disable (XD) Bit</li>
+</ul>
+
+
+<h3>Mac OS X</h3>
+
+<ul>
+<li>Mac&reg;  OS X&reg;  10.8.5 atau yang lebih tinggi, hingga 10.9 (Mavericks)</li>
+<li>RAM minimum 2 GB, RAM yang direkomendasikan 4 GB</li>
+<li>Ruang hard-disk 400 MB</li>
+<li>Setidaknya 1 GB untuk Android SDK, citra sistem emulator, dan cache</li>
+<li>Resolusi layar minimum 1280 x 800</li>
+<li>Java Runtime Environment (JRE) 6</li>
+<li>Java Development Kit (JDK) 7</li>
+<li>Opsional untuk emulator akselerasi: Prosesor Intel® dengan dukungan untuk Intel® VT-x, Intel® EM64T
+(Intel® 64), dan fungsionalitas Execute Disable (XD) Bit</li>
+</ul>
+
+<p>Pada Mac OS, jalankan Android Studio dengan Java Runtime Environment (JRE) 6 untuk rendering
+font yang dioptimalkan. Kemudian Anda bisa mengonfigurasi proyek untuk menggunakan Java Development Kit (JDK) 6 atau JDK 7.</p>
+
+
+
+<h3>Linux</h3>
+
+<ul>
+<li>Desktop GNOME atau KDE</li>
+<li>GNU C Library (glibc) 2.15 atau yang lebih baru</li>
+<li>RAM minimum 2 GB, RAM yang direkomendasikan 4 GB</li>
+<li>Ruang hard-disk 400 MB</li>
+<li>Setidaknya 1 GB untuk Android SDK, citra sistem emulator, dan cache</li>
+<li>Resolusi layar minimum 1280 x 800</li>
+<li>Oracle&reg;  Java Development Kit (JDK) 7 </li>
+</ul>
+<p>Telah diuji pada Ubuntu&reg;  14.04, Trusty Tahr (distribusi 64-bit yang mampu menjalankan
+aplikasi 32-bit).</p>
+
+
+
+
+<h2 id="Other" style="clear:left">Opsi Unduhan Lain</h2>
+
+<!-- alternative SDK options follows -->
diff --git a/docs/html-intl/intl/in/sdk/installing/adding-packages.jd b/docs/html-intl/intl/in/sdk/installing/adding-packages.jd
new file mode 100644
index 0000000..2fc5c3e
--- /dev/null
+++ b/docs/html-intl/intl/in/sdk/installing/adding-packages.jd
@@ -0,0 +1,226 @@
+page.title=Menambahkan Paket SDK
+
+page.tags=sdk manager
+
+@jd:body
+
+<style>
+ol.large {
+  margin-left:0;
+}
+ol.large > li {
+  list-style-position: inside;
+  list-style-type:none;
+  margin:30px 0 0 0;
+  padding:30px 20px;
+  background:#eee;
+}
+ol.large > li:nth-child(odd) {
+}
+ol.large > li:before {
+  display:inline;
+  left:-40px;
+  float:left;
+  width:20px;
+  font-size:20px;
+  line-height:20px;
+}
+ol.large > li > h2 {
+  font-size:20px;
+  line-height:20px;
+  padding:0 0 0 20px;
+  margin:0 0 20px 0;
+  display:inline;
+  font-weight:normal;
+}
+ol.large > li:nth-child(1):before {
+  content:"1. ";
+}
+ol.large > li:nth-child(2):before {
+  content:"2. ";
+}
+ol.large > li:nth-child(3):before {
+  content:"3. ";
+}
+ol.large > li:nth-child(4):before {
+  content:"4. ";
+}
+ol.large > li:nth-child(5):before {
+  content:"5. ";
+}
+ol.large > li:nth-child(6):before {
+  content:"6. ";
+}
+</style>
+
+
+<p>
+Secara default, Android SDK tidak mencakup segala sesuatu yang Anda perlukan untuk memulai pengembangan.
+SDK memisahkan alat, platform, dan komponen lain ke dalam paket yang bisa Anda
+unduh bila diperlukan dengan menggunakan 
+<a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>.
+Jadi, sebelum Anda bisa memulai, ada beberapa paket yang harus Anda tambahkan ke Android SDK Anda.</p>
+
+<p>Untuk mulai menambahkan paket, jalankan Android SDK Manager dengan salah satu cara berikut:</p>
+<ul>
+  <li>Di Android Studio, klik <strong>SDK Manager</strong>
+<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:17px" /> di toolbar.</li>
+  <li>Jika Anda tidak menggunakan Android Studio:
+    <ul>
+      <li>Windows: Klik ganda file <code>SDK Manager.exe</code> pada akar direktori Android
+SDK.</li>
+      <li>Mac/Linux: Buka sebuah terminal dan arahkan ke direktori <code>tools/</code> di
+lokasi instalasi Android SDK, lalu jalankan <code>android sdk</code>.</li>
+    </ul>
+  </li>
+</ul>
+
+<p>Bila Anda membuka SDK Manager untuk pertama kali, beberapa paket akan dipilih secara
+default. Biarkan dipilih, namun pastikan bahwa Anda mempunyai semua yang Anda perlukan
+untuk persiapan dengan mengikuti langkah-langkah ini:</p>
+
+
+<ol class="large">
+<li>
+  <h2 id="GetTools" class="norule">Dapatkan alat-alat SDK terbaru</h2>
+
+<img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
+
+  <p>Setidaknya saat menyiapkan Android SDK,
+ Anda harus mengunduh platform Android dan alat-alat terbaru:</p>
+  <ol>
+   <li>Buka direktori Tools dan pilih:
+     <ul>
+       <li><strong>Android SDK Tools</strong></li>
+       <li><strong>Android SDK Platform-tools</strong></li>
+       <li><strong>Android SDK Build-tools</strong> (versi tertinggi)</li>
+     </ul>
+   </li>
+   <li>Buka folder Android X.X (versi terbaru) yang pertama dan pilih:
+     <ul>
+      <li><strong>SDK Platform</strong></li>
+      <li>Sebuah citra sistem untuk emulator, seperti <br>
+      <strong>ARM EABI v7a System Image</strong></li>
+     </ul>
+   </li>
+  </ol>
+</li>
+
+<li>
+  <h2 id="GetSupportLib" class="norule">Dapatkan pustaka dukungan untuk API tambahan</h2>
+
+  <div class="sidebox">
+    <p>Pustaka dukungan diperlukan untuk:</p>
+    <ul>
+      <li><a href="{@docRoot}wear/index.html">Android Wear</a></li>
+      <li><a href="{@docRoot}tv/index.html">Android TV</a></li>
+      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
+    </ul>
+
+    <p>Pustaka ini juga menyediakan API populer:</p>
+    <ul>
+      <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">Drawer
+      navigasi</a></li>
+      <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">Tampilan usap</a></li>
+      <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">Action-bar
+      yang kompatibel dengan versi lama</a></li>
+    </ul>
+  </div>
+
+  <p><a href="{@docRoot}tools/support-library/features.html">Android Support Library</a>
+menyediakan set API tambahan yang kompatibel dengan sebagian besar versi Android.</p>
+
+  <p>Buka direktori <strong>Extras</strong> dan pilih:</p>
+     <ul>
+       <li><strong>Android Support Repository</strong></li>
+       <li><strong>Android Support Library</strong></li>
+     </ul>
+
+  <p>&nbsp;</p>
+  <p>&nbsp;</p>
+
+</li>
+
+
+<li>
+  <h2 id="GetGoogle" class="norule">Dapatkan Google Play services untuk API yang lebih banyak lagi</h2>
+
+  <div class="sidebox">
+
+    <p>API Google Play services menyediakan beragam fitur dan layanan untuk aplikasi Android
+Anda, misalnya:</p>
+    <ul>
+      <li><a href="{@docRoot}google/play-services/plus.html">Autentikasi pengguna</a></li>
+      <li><a href="{@docRoot}google/play-services/maps.html">Google Maps</a></li>
+      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
+      <li><a href="{@docRoot}google/play-services/games.html">Skor dan
+ papan peringkat permainan</a></li>
+      <li><a href="{@docRoot}google/play-services/index.html">Dan masih banyak lagi</a></li>
+    </ul>
+  </div>
+
+  <p>Untuk mengembangkan aplikasi dengan Google API, Anda memerlukan paket Google Play services:</p>
+  <p>Buka direktori <strong>Extras</strong> dan pilih:</p>
+     <ul>
+       <li><strong>Google Repository</strong></li>
+       <li><strong>Google Play services</strong></li>
+     </ul>
+
+  <p class="note"><strong>Catatan:</strong> API Google Play services tidak tersedia pada semua
+perangkat berbasis Android, namun tersedia pada semua perangkat dengan Google Play Store. Untuk menggunakan API ini
+ dalam emulator Android, Anda juga harus menginstal citra sistem <strong>Google API</strong>
+ dari direktori Android X.X terbaru di SDK Manager.</p>
+</li>
+
+
+<li>
+  <h2 id="Install" class="norule">Instal paket tersebut</h2>
+  <p>Setelah Anda memilih semua paket yang diinginkan, teruskan untuk menginstal:</p>
+  <ol>
+   <li>Klik <strong>Install X packages</strong>.</li>
+   <li>Di jendela berikutnya, klik ganda masing-masing nama paket di sebelah kiri
+ untuk menyetujui perjanjian lisensinya masing-masing.</li>
+   <li>Klik <strong>Install</strong>.</li>
+  </ol>
+  <p>Kemajuan pengunduhan diperlihatkan di bagian bawah jendela SDK Manager.
+  <strong>Jangan keluar dari SDK Manager</strong> karena hal itu akan membatalkan pengunduhan.</p>
+</li>
+
+<li>
+  <h2 id="Build" class="norule">Bangun sesuatu!</h2>
+
+<p>Dengan adanya semua paket di atas di Android SDK, maka Anda siap untuk membangun aplikasi
+untuk Android. Dengan tersedianya berbagai alat baru dan API lainnya, maka tinggal jalankan SDK Manager
+untuk mengunduh paket baru bagi SDK Anda.</p>
+
+<p>Inilah beberapa opsi cara Anda untuk melanjutkan:</p>
+
+<div class="cols" style="padding:10px 0">
+<div class="col-4">
+<h3>Persiapkan</h3>
+<p>Jika Anda masih baru dengan pengembangan Android, pelajari dasar-dasar aplikasi Android dengan mengikuti
+panduan untuk <strong><a href="{@docRoot}training/basics/firstapp/index.html">Membangun Aplikasi Pertama Anda</a></strong>.</p>
+
+</div>
+<div class="col-4 box">
+<h3>Bangun untuk perangkat wearable</h3>
+<p>Jika Anda siap memulai pembangunan aplikasi untuk perangkat wearable Android, lihat panduan untuk
+<strong><a href="{@docRoot}wear/preview/start.html">Membangun Aplikasi untuk Android Wear</a></strong>.</p>
+
+</div>
+<div class="col-4 box">
+<h3>Gunakan Google API</h3>
+<p>Untuk mulai menggunakan Google API, seperti Maps atau
+layanan Play Game, lihat panduan untuk
+<strong><a href="{@docRoot}google/play-services/setup.html">Mempersiapkan Google Play
+Services</a></strong>.</p>
+
+</div>
+</div><!-- end cols -->
+
+
+</li>
+
+</ol>
+
+
diff --git a/docs/html-intl/intl/in/training/material/animations.jd b/docs/html-intl/intl/in/training/material/animations.jd
new file mode 100644
index 0000000..e57a03f
--- /dev/null
+++ b/docs/html-intl/intl/in/training/material/animations.jd
@@ -0,0 +1,550 @@
+page.title=Mendefinisikan Animasi Custom
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Pelajaran ini mengajarkan Anda cara</h2>
+<ol>
+  <li><a href="#Touch">Menyesuaikan Umpan Balik Sentuh</a></li>
+  <li><a href="#Reveal">Menggunakan Reveal Effect</a></li>
+  <li><a href="#Transitions">Menyesuaikan Transisi Aktivitas</a></li>
+  <li><a href="#ViewState">Menganimasikan Perubahan Status Tampilan</a></li>
+  <li><a href="#AnimVector">Menganimasikan Drawable Vektor</a></li>
+</ol>
+<h2>Anda juga harus membaca</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Spesifikasi desain bahan</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Desain bahan di Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Animasi dalam desain bahan memberi pengguna umpan balik tentang tindakannya dan menyediakan
+kesinambungan visual saat pengguna berinteraksi dengan aplikasi Anda. Tema bahan menyediakan beberapa animasi default
+untuk tombol dan transisi aktivitas, dan Android 5.0 (API level 21) ke atas memungkinkan Anda menyesuaikan
+animasi ini dan membuat yang baru:</p>
+
+<ul>
+<li>Umpan balik sentuh</li>
+<li>Singkap Melingkar</li>
+<li>Transisi aktivitas</li>
+<li>Gerakan melengkung</li>
+<li>Perubahan status tampilan</li>
+</ul>
+
+
+<h2 id="Touch">Menyesuaikan Umpan Balik Sentuh</h2>
+
+<p>Umpan balik sentuh dalam desain bahan menyediakan konfirmasi visual seketika pada
+titik kontak bila pengguna berinteraksi dengan elemen UI. Animasi umpan balik sentuh default
+untuk tombol menggunakan kelas {@link android.graphics.drawable.RippleDrawable} baru, yang bertransisi
+di antara berbagai status dengan efek riak.</p>
+
+<p>Di sebagian besar kasus, Anda harus menerapkan fungsionalitas ini dalam XML tampilan dengan menetapkan
+latar belakang tampilan sebagai:</p>
+
+<ul>
+<li><code>?android:attr/selectableItemBackground</code> untuk riak berbatas.</li>
+<li><code>?android:attr/selectableItemBackgroundBorderless</code> untuk riak yang meluas ke luar
+tampilan. Latar belakang ini akan digambar di atas, dan dibatasi oleh, induk tampilan terdekat dengan
+latar belakang non-null.</li>
+</ul>
+
+<p class="note"><strong>Catatan:</strong> <code>selectableItemBackgroundBorderless</code> adalah
+atribut baru yang diperkenalkan di API level 21.</p>
+
+
+<p>Atau, Anda bisa mendefinisikan {@link android.graphics.drawable.RippleDrawable}
+sebagai sumber daya XML dengan menggunakan elemen <code>ripple</code>.</p>
+
+<p>Anda bisa menetapkan warna ke objek-objek {@link android.graphics.drawable.RippleDrawable}. Untuk mengubah
+warna default umpan balik sentuh, gunakan atribut <code>android:colorControlHighlight</code>
+tema.</p>
+
+<p>Untuk informasi selengkapnya, lihat referensi API bagi kelas {@link
+android.graphics.drawable.RippleDrawable}.</p>
+
+
+<h2 id="Reveal">Menggunakan Reveal Effect</h2>
+
+<p>Animasi singkap memberi pengguna kesinambungan visual saat menampilkan atau menyembunyikan sekelompok
+elemen UI. Metode {@link android.view.ViewAnimationUtils#createCircularReveal
+ViewAnimationUtils.createCircularReveal()} memungkinkan Anda menganimasikan lingkaran terpangkas
+untuk memperlihatkan atau menyembunyikan tampilan.</p>
+
+<p>Untuk memperlihatkan tampilan yang sebelumnya tidak terlihat dengan menggunakan efek ini:</p>
+
+<pre>
+// previously invisible view
+View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the final radius for the clipping circle
+int finalRadius = Math.max(myView.getWidth(), myView.getHeight());
+
+// create the animator for this view (the start radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);
+
+// make the view visible and start the animation
+myView.setVisibility(View.VISIBLE);
+anim.start();
+</pre>
+
+<p>Untuk menyembunyikan sebuah tampilan yang sebelumnya terlihat dengan menggunakan efek ini:</p>
+
+<pre>
+// previously visible view
+final View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the initial radius for the clipping circle
+int initialRadius = myView.getWidth();
+
+// create the animation (the final radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0);
+
+// make the view invisible when the animation is done
+anim.addListener(new AnimatorListenerAdapter() {
+    &#64;Override
+    public void onAnimationEnd(Animator animation) {
+        super.onAnimationEnd(animation);
+        myView.setVisibility(View.INVISIBLE);
+    }
+});
+
+// start the animation
+anim.start();
+</pre>
+
+
+<h2 id="Transitions">Menyesuaikan Transisi Aktivitas</h2>
+
+<!-- shared transition video -->
+<div style="width:290px;margin-left:35px;float:right">
+  <div class="framed-nexus5-port-span-5">
+  <video class="play-on-hover" autoplay="">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.mp4">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.webm">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.ogv">
+  </video>
+  </div>
+  <div style="font-size:10pt;margin-left:20px;margin-bottom:30px">
+    <p class="img-caption" style="margin-top:3px;margin-bottom:10px"><strong>Gambar 1</strong> - Transisi
+    dengan elemen bersama.</p>
+    <em>Untuk memutar ulang film, klik layar perangkat</em>
+  </div>
+</div>
+
+<p>Transisi aktivitas dalam aplikasi desain bahan memberikan koneksi visual antar berbagai status
+melalui gerakan dan transformasi di antara elemen umum. Anda bisa menetapkan animasi custom untuk
+masuk ke dan keluar dari transisi dan untuk transisi elemen bersama di antara aktivitas.</p>
+
+<ul>
+<li>Transisi <strong>masuk</strong> menentukan cara tampilan di aktivitas memasuki suatu babak.
+misalnya, dalam transisi masuk <em>explode</em>, tampilan memasuki babak dari sisi luar
+dan melayang masuk ke arah tengah layar.</li>
+
+<li>Transisi <strong>keluar</strong> menentukan cara tampilan di aktivitas keluar dari suatu babak. Misalnya
+, dalam transisi keluar <em>explode</em>, tampilan akan keluar dari babak dari bagian
+tengahnya.</li>
+
+<li>Transisi <strong>elemen bersama</strong> menentukan cara menggunakan bersama suatu tampilan
+oleh dua transisi aktivitas di antara aktivitas-aktivitas ini. Misalnya, jika dua aktivitas memiliki
+gambar yang sama dengan posisi dan ukuran berbeda, transisi elemen bersama <em>changeImageTransform</em>
+mentransformasikan dan menskalakan gambar secara mulus di antara aktivitas-aktivitas ini.</li>
+</ul>
+
+<p>Android 5.0 (API level 21) mendukung transisi masuk dan transisi keluar ini:</p>
+
+<ul>
+<li><em>explode</em> - Memindahkan tampilan masuk ke atau keluar dari tengah babak.</li>
+<li><em>slide</em> - Memindahkan tampilan masuk ke atau keluar dari salah satu tepi babak.</li>
+<li><em>fade</em> - Menambahkan atau menghapus tampilan dari babak dengan mengubah opasitasnya.</li>
+</ul>
+
+<p>Transisi apa pun yang memperluas kelas {@link android.transition.Visibility} didukung
+sebagai transisi masuk atau transisi keluar. Untuk informasi selengkapnya, lihat referensi API untuk kelas
+{@link android.transition.Transition}.</p>
+
+<p>Android 5.0 (API level 21) juga mendukung transisi elemen bersama ini:</p>
+
+<ul>
+<li><em>changeBounds</em> - Menganimasikan perubahan pada batas-batas layout tampilan target.</li>
+<li><em>changeClipBounds</em> - Menganimasikan perubahan pada batas-batas pemangkasan tampilan target.</li>
+<li><em>changeTransform</em> - Menganimasikan perubahan pada skala dan rotasi tampilan target.</li>
+<li><em>changeImageTransform</em> - Menganimasikan perubahan pada ukuran dan skala gambar target.</li>
+</ul>
+
+<p>Bila Anda mengaktifkan transisi aktivitas dalam aplikasi, transisi memudar-silang default akan
+diaktifkan di antara aktivitas masuk dan aktivitas keluar.</p>
+
+<img src="{@docRoot}training/material/images/SceneTransition.png" alt="" width="600" height="405" style="margin-top:20px" />
+<p class="img-caption">
+  <strong>Gambar 2</strong> - Transisi babak dengan satu elemen bersama.
+</p>
+
+<h3>Menetapkan transisi custom</h3>
+
+<p>Pertama, aktifkan transisi konten jendela dengan atribut <code>android:windowContentTransitions</code>
+bila Anda mendefinisikan gaya yang mewarisi tema bahan. Anda juga bisa menetapkan
+transisi-transisi masuk, keluar, dan elemen bersama dalam definisi gaya:</p>
+
+<pre>
+&lt;style name="BaseAppTheme" parent="android:Theme.Material">
+  &lt;!-- enable window content transitions -->
+  &lt;item name="android:windowContentTransitions">true&lt;/item>
+
+  &lt;!-- specify enter and exit transitions -->
+  &lt;item name="android:windowEnterTransition">@transition/explode&lt;/item>
+  &lt;item name="android:windowExitTransition">@transition/explode&lt;/item>
+
+  &lt;!-- specify shared element transitions -->
+  &lt;item name="android:windowSharedElementEnterTransition">
+    &#64;transition/change_image_transform&lt;/item>
+  &lt;item name="android:windowSharedElementExitTransition">
+    &#64;transition/change_image_transform&lt;/item>
+&lt;/style>
+</pre>
+
+<p>Transisi <code>change_image_transform</code> dalam contoh ini didefinisikan sebagai berikut:</p>
+
+<pre>
+&lt;!-- res/transition/change_image_transform.xml -->
+&lt;!-- (see also Shared Transitions below) -->
+&lt;transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;changeImageTransform/>
+&lt;/transitionSet>
+</pre>
+
+<p>Elemen <code>changeImageTransform</code> menunjukkan
+kelas {@link android.transition.ChangeImageTransform}. Untuk informasi selengkapnya, lihat referensi
+API untuk {@link android.transition.Transition}.</p>
+
+<p>Sebaliknya, untuk mengaktifkan transisi konten jendela dalam kode Anda, panggil
+metode {@link android.view.Window#requestFeature Window.requestFeature()}:</p>
+
+<pre>
+// inside your activity (if you did not enable transitions in your theme)
+getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+
+// set an exit transition
+getWindow().setExitTransition(new Explode());
+</pre>
+
+<p>Untuk menetapkan transisi dalam kode Anda, panggil metode-metode ini dengan objek {@link
+android.transition.Transition}:</p>
+
+<ul>
+  <li>{@link android.view.Window#setEnterTransition Window.setEnterTransition()}</li>
+  <li>{@link android.view.Window#setExitTransition Window.setExitTransition()}</li>
+  <li>{@link android.view.Window#setSharedElementEnterTransition
+      Window.setSharedElementEnterTransition()}</li>
+  <li>{@link android.view.Window#setSharedElementExitTransition
+      Window.setSharedElementExitTransition()}</li>
+</ul>
+
+<p>Metode {@link android.view.Window#setExitTransition setExitTransition()} dan {@link
+android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} mendefinisikan
+transisi keluar untuk aktivitas yang memanggil. Metode {@link android.view.Window#setEnterTransition
+setEnterTransition()} dan {@link android.view.Window#setSharedElementEnterTransition
+setSharedElementEnterTransition()} mendefinisikan transisi masuk untuk aktivitas yang dipanggil.</p>
+
+<p>Untuk mendapatkan efek penuh sebuah transisi, Anda harus mengaktifkan transisi konten jendela pada
+aktivitas yang memanggil maupun aktivitas yang dipanggil. Jika tidak, aktivitas yang memanggil akan memulai transisi keluar,
+namun kemudian Anda akan melihat transisi jendela (seperti mengelupas atau memudar).</p>
+
+<p>Untuk memulai transisi masuk sesegera mungkin, gunakan metode
+{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}
+pada aktivitas yang dipanggil. Ini memungkinkan Anda mendapatkan transisi masuk yang lebih dramatis.</p>
+
+<h3>Memulai aktivitas dengan menggunakan transisi</h3>
+
+<p>Jika Anda mengaktifkan transisi dan mengatur transisi keluar untuk aktivitas, transisi itu akan diaktifkan
+bila Anda menjalankan aktivitas lain sebagai berikut:</p>
+
+<pre>
+startActivity(intent,
+              ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
+</pre>
+
+<p>Jika Anda telah mengatur transisi masuk untuk aktivitas kedua, transisi juga akan diaktifkan
+bila aktivitas dimulai. Untuk menonaktifkan transisi bila Anda memulai aktivitas lain, sediakan
+bundel opsi <code>null</code>.</p>
+
+<h3>Memulai aktivitas dengan satu elemen bersama</h3>
+
+<p>Untuk membuat animasi transisi layar di antara dua aktivitas yang memiliki satu elemen bersama:</p>
+
+<ol>
+<li>Aktifkan transisi konten jendela dalam tema Anda.</li>
+<li>Tetapkan transisi elemen bersama dalam gaya Anda.</li>
+<li>Definisikan transisi Anda sebagai sumber daya XML.</li>
+<li>Tetapkan nama umum pada elemen bersama dalam kedua layout dengan
+    atribut <code>android:transitionName</code>.</li>
+<li>Gunakan metode {@link android.app.ActivityOptions#makeSceneTransitionAnimation
+ActivityOptions.makeSceneTransitionAnimation()}.</li>
+</ol>
+
+<pre>
+// get the element that receives the click event
+final View imgContainerView = findViewById(R.id.img_container);
+
+// get the common element for the transition in this activity
+final View androidRobotView = findViewById(R.id.image_small);
+
+// define a click listener
+imgContainerView.setOnClickListener(new View.OnClickListener() {
+    &#64;Override
+    public void onClick(View view) {
+        Intent intent = new Intent(this, Activity2.class);
+        // create the transition animation - the images in the layouts
+        // of both activities are defined with android:transitionName="robot"
+        ActivityOptions options = ActivityOptions
+            .makeSceneTransitionAnimation(this, androidRobotView, "robot");
+        // start the new activity
+        startActivity(intent, options.toBundle());
+    }
+});
+</pre>
+
+<p>Untuk tampilan dinamis bersama yang Anda hasilkan dalam kode, gunakan
+metode {@link android.view.View#setTransitionName View.setTransitionName()} untuk menetapkan
+nama elemen umum di kedua aktivitas.</p>
+
+<p>Untuk membalik animasi transisi babak bila Anda menyelesaikan aktivitas kedua, panggil metode
+{@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()}
+sebagai ganti {@link android.app.Activity#finish Activity.finish()}.</p>
+
+<h3>Memulai aktivitas dengan beberapa elemen bersama</h3>
+
+<p>Untuk membuat animasi transisi babak antara dua aktivitas yang memiliki lebih dari satu
+elemen bersama, definisikan elemen bersama di kedua layout dengan atribut <code>android:transitionName</code>
+ (atau gunakan metode {@link android.view.View#setTransitionName View.setTransitionName()}
+di kedua aktivitas), dan buat sebuah objek {@link android.app.ActivityOptions} sebagai berikut:</p>
+
+<pre>
+ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
+        Pair.create(view1, "agreedName1"),
+        Pair.create(view2, "agreedName2"));
+</pre>
+
+
+<h2 id="CurvedMotion">Menggunakan Gerakan Melengkung</h2>
+
+<p>Animasi dalam desain bahan mengandalkan kurva untuk pola interpolasi waktu dan
+gerakan spasial. Dengan Android 5.0 (API level 21) ke atas, Anda bisa mendefinisikan kurva pewaktuan custom dan
+pola gerakan melengkung untuk animasi.</p>
+
+<p>Kelas {@link android.view.animation.PathInterpolator} adalah interpolator baru berdasarkan sebuah
+kurva Bézier atau objek {@link android.graphics.Path}. Interpolator ini menetapkan kurva gerakan
+dalam bujur sangkar 1x1, dengan titik-titik jangkar di (0,0) dan (1,1) dan titik-titik kontrol sebagaimana ditetapkan menggunakan
+argumen konstruktor. Anda juga bisa mendefinisikan interpolator path sebagai sumber daya XML:</p>
+
+<pre>
+&lt;pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:controlX1="0.4"
+    android:controlY1="0"
+    android:controlX2="1"
+    android:controlY2="1"/>
+</pre>
+
+<p>Sistem menyediakan sumber daya XML untuk tiga kurva dasar dalam
+spesifikasi desain bahan:</p>
+
+<ul>
+  <li><code>&#64;interpolator/fast_out_linear_in.xml</code></li>
+  <li><code>&#64;interpolator/fast_out_slow_in.xml</code></li>
+  <li><code>&#64;interpolator/linear_out_slow_in.xml</code></li>
+</ul>
+
+<p>Anda bisa meneruskan objek {@link android.view.animation.PathInterpolator} ke metode {@link
+android.animation.Animator#setInterpolator Animator.setInterpolator()}.</p>
+
+<p>Kelas {@link android.animation.ObjectAnimator} memiliki konstruktor-konstruktor baru yang memungkinkan Anda menganimasikan
+koordinat bersama sebuah path dengan menggunakan dua atau beberapa properti sekaligus. Misalnya, animator berikut
+menggunakan objek {@link android.graphics.Path} untuk menganimasikan properti X dan Y sebuah tampilan:</p>
+
+<pre>
+ObjectAnimator mAnimator;
+mAnimator = ObjectAnimator.ofFloat(view, View.X, View.Y, path);
+...
+mAnimator.start();
+</pre>
+
+
+<h2 id="ViewState">Menganimasikan Perubahan Status Tampilan</h2>
+
+<p>Kelas {@link android.animation.StateListAnimator} memungkinkan Anda mendefinisikan animator yang berjalan bila
+status tampilan berubah. Contoh berikut menampilkan cara mendefinisikan {@link
+android.animation.StateListAnimator} sebagai sumber daya XML:</p>
+
+<pre>
+&lt;!-- animate the translationZ property of a view when pressed -->
+&lt;selector xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;item android:state_pressed="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="@android:integer/config_shortAnimTime"
+        android:valueTo="2dp"
+        android:valueType="floatType"/>
+        &lt;!-- you could have other objectAnimator elements
+             here for "x" and "y", or other properties -->
+    &lt;/set>
+  &lt;/item>
+  &lt;item android:state_enabled="true"
+    android:state_pressed="false"
+    android:state_focused="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="100"
+        android:valueTo="0"
+        android:valueType="floatType"/>
+    &lt;/set>
+  &lt;/item>
+&lt;/selector>
+</pre>
+
+<p>Untuk menyertakan animasi status tampilan custom ke tampilan, definisikan animator menggunakan
+elemen <code>selector</code> dalam sumber daya file XML sebagaimana dalam contoh ini, dan tetapkan ke
+tampilan Anda dengan atribut <code>android:stateListAnimator</code>. Untuk menetapkan animator daftar status
+ke sebuah tampilan dalam kode Anda, gunakan metode {@link android.animation.AnimatorInflater#loadStateListAnimator
+AnimationInflater.loadStateListAnimator()}, dan tetapkan animator ke tampilan dengan
+metode {@link android.view.View#setStateListAnimator View.setStateListAnimator()}.</p>
+
+<p>Bila tema Anda memperluas tema bahan, tombol-tombol akan memiliki animasi Z secara default. Untuk menghindari
+perilaku ini di tombol Anda, aturlah atribut <code>android:stateListAnimator</code> ke
+<code>@null</code>.</p>
+
+<p>Kelas {@link android.graphics.drawable.AnimatedStateListDrawable} memungkinkan Anda membuat drawable
+yang menampilkan animasi di antara perubahan status tampilan terkait. Sebagian widget sistem di
+Android 5.0 menggunakan animasi ini secara default. Contoh berikut menampilkan cara
+mendefinisikan {@link android.graphics.drawable.AnimatedStateListDrawable} sebagai sumber daya XML:</p>
+
+<pre>
+&lt;!-- res/drawable/myanimstatedrawable.xml -->
+&lt;animated-selector
+    xmlns:android="http://schemas.android.com/apk/res/android">
+
+    &lt;!-- provide a different drawable for each state-->
+    &lt;item android:id="@+id/pressed" android:drawable="@drawable/drawableP"
+        android:state_pressed="true"/>
+    &lt;item android:id="@+id/focused" android:drawable="@drawable/drawableF"
+        android:state_focused="true"/>
+    &lt;item android:id="@id/default"
+        android:drawable="@drawable/drawableD"/>
+
+    &lt;!-- specify a transition -->
+    &lt;transition android:fromId="@+id/default" android:toId="@+id/pressed">
+        &lt;animation-list>
+            &lt;item android:duration="15" android:drawable="@drawable/dt1"/>
+            &lt;item android:duration="15" android:drawable="@drawable/dt2"/>
+            ...
+        &lt;/animation-list>
+    &lt;/transition>
+    ...
+&lt;/animated-selector>
+</pre>
+
+
+<h2 id="AnimVector">Menganimasikan Drawable Vektor</h2>
+
+<p><a href="{@docRoot}training/material/drawables.html#VectorDrawables">Drawable Vektor </a>
+bisa diubah skalanya tanpa kehilangan definisi. Kelas {@link android.graphics.drawable.AnimatedVectorDrawable}
+memungkinkan Anda menganimasikan properti drawable vektor.</p>
+
+<p>Anda biasanya mendefinisikan drawable vektor yang dianimasikan dalam tiga file XML:</p>
+
+<ul>
+<li>Drawable vektor dengan elemen <code>&lt;vector&gt;</code> dalam
+<code>res/drawable/</code></li>
+<li>Drawable vektor animasi dengan elemen <code>&lt;animated-vector&gt;</code> dalam
+<code>res/drawable/</code></li>
+<li>Satu atau beberapa animator objek dengan elemen <code>&lt;objectAnimator&gt;</code> dalam
+<code>res/anim/</code></li>
+</ul>
+
+<p>Drawable vektor yang dianimasikan bisa menganimasikan atribut elemen <code>&lt;group&gt;</code> dan
+<code>&lt;path&gt;</code>. Elemen <code>&lt;group&gt;</code> mendefinisikan satu set
+path atau subgrup, dan elemen <code>&lt;path&gt;</code> mendefinisikan path yang harus digambar.</p>
+
+<p>Bila Anda mendefinisikan drawable vektor yang ingin dianimasikan, gunakan atribut <code>android:name</code>
+untuk menetapkan nama unik ke grup dan path, sehingga Anda bisa merujuknya dari
+definisi animator Anda. Misalnya:</p>
+
+<pre>
+&lt;!-- res/drawable/vectordrawable.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="64dp"
+    android:width="64dp"
+    android:viewportHeight="600"
+    android:viewportWidth="600">
+    &lt;group
+        <strong>android:name="rotationGroup"</strong>
+        android:pivotX="300.0"
+        android:pivotY="300.0"
+        android:rotation="45.0" >
+        &lt;path
+            <strong>android:name="v"</strong>
+            android:fillColor="#000000"
+            android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
+    &lt;/group>
+&lt;/vector>
+</pre>
+
+<p>Definisi drawable vektor yang dianimasikan merujuk pada grup dan path dalam drawable vektor
+berdasarkan namanya:</p>
+
+<pre>
+&lt;!-- res/drawable/animvectordrawable.xml -->
+&lt;animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+  android:drawable="@drawable/vectordrawable" >
+    &lt;target
+        android:name="rotationGroup"
+        android:animation="@anim/rotation" />
+    &lt;target
+        android:name="v"
+        android:animation="@anim/path_morph" />
+&lt;/animated-vector>
+</pre>
+
+<p>Definisi animasi menyatakan objek {@link android.animation.ObjectAnimator} atau {@link
+android.animation.AnimatorSet}. Animator pertama dalam contoh ini memutar
+grup target sebanyak 360 derajat:</p>
+
+<pre>
+&lt;!-- res/anim/rotation.xml -->
+&lt;objectAnimator
+    android:duration="6000"
+    android:propertyName="rotation"
+    android:valueFrom="0"
+    android:valueTo="360" />
+</pre>
+
+<p>Animator kedua dalam contoh ini perlahan-lahan mengubah bentuk path drawable vektor dari satu bentuk ke
+bentuk yang lain. Kedua path harus kompatibel untuk morphing: keduanya harus memiliki jumlah perintah yang sama
+dan jumlah parameter yang sama untuk setiap perintah.</p>
+
+<pre>
+&lt;!-- res/anim/path_morph.xml -->
+&lt;set xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;objectAnimator
+        android:duration="3000"
+        android:propertyName="pathData"
+        android:valueFrom="M300,70 l 0,-70 70,70 0,0   -70,70z"
+        android:valueTo="M300,70 l 0,-70 70,0  0,140 -70,0 z"
+        android:valueType="pathType" />
+&lt;/set>
+</pre>
+
+<p>Untuk informasi selengkapnya, lihat referensi API bagi {@link
+android.graphics.drawable.AnimatedVectorDrawable}.</p>
diff --git a/docs/html-intl/intl/in/training/material/compatibility.jd b/docs/html-intl/intl/in/training/material/compatibility.jd
new file mode 100644
index 0000000..d57c7be
--- /dev/null
+++ b/docs/html-intl/intl/in/training/material/compatibility.jd
@@ -0,0 +1,168 @@
+page.title=Mempertahankan Kompatibilitas
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Pelajaran ini mengajarkan Anda cara</h2>
+<ol>
+  <li><a href="#Theme">Mendefinisikan Gaya Alternatif</a></li>
+  <li><a href="#Layouts">Menyediakan Layout Alternatif</a></li>
+  <li><a href="#SupportLib">Menggunakan Support Library</a></li>
+  <li><a href="#CheckVersion">Memeriksa Versi Sistem</a></li>
+</ol>
+<h2>Anda juga harus membaca</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Spesifikasi desain bahan</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Desain bahan di Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Sebagian fitur desain bahan seperti tema bahan dan transisi aktivitas custom
+hanya tersedia pada Android 5.0 (API level 21) ke atas. Akan tetapi, Anda bisa mendesain aplikasi untuk menggunakan
+fitur-fitur ini saat dijalankan pada perangkat yang mendukung desain bahan dan tetap kompatibel
+dengan perangkat yang menjalankan rilis Android sebelumnya.</p>
+
+
+<h2 id="Theme">Mendefinisikan Gaya Alternatif</h2>
+
+<p>Anda bisa mengonfigurasi aplikasi untuk menggunakan tema bahan pada perangkat yang mendukungnya dan mengembalikan
+ke tema lama pada perangkat yang menjalankan versi Android terdahulu:</p>
+
+<ol>
+<li>Definisikan tema yang mewarisi tema lama (seperti Holo) di
+    <code>res/values/styles.xml</code>.</li>
+<li>Definisikan tema bernama sama yang mewarisi tema bahan di
+    <code>res/values-v21/styles.xml</code>.</li>
+<li>Atur tema ini sebagai tema aplikasi Anda dalam file manifes.</li>
+</ol>
+
+<p class="note"><strong>Catatan:</strong>
+Jika aplikasi Anda menggunakan tema bahan namun tidak menyediakan tema alternatif dengan cara ini,
+aplikasi itu tidak akan berjalan pada versi Android sebelum 5.0.
+</p>
+
+
+<h2 id="Layouts">Menyediakan Layout Alternatif</h2>
+
+<p>Jika layout yang Anda desain sesuai dengan panduan desain bahan tidak menggunakan salah satu
+atribut XML baru yang diperkenalkan di Android 5.0 (API level 21), layout itu akan berfungsi pada
+versi Android sebelumnya. Jika tidak, Anda bisa menyediakan layout alternatif. Anda juga bisa menyediakan
+layout alternatif untuk menyesuaikan cara aplikasi ditampilkan pada versi Android terdahulu.</p>
+
+<p>Buatlah file layout untuk Android 5.0 (API level 21) dalam <code>res/layout-v21/</code> dan
+file layout alternatif untuk versi Android terdahulu dalam <code>res/layout/</code>.
+Misalnya, <code>res/layout/my_activity.xml</code> adalah layout alternatif untuk
+<code>res/layout-v21/my_activity.xml</code>.</p>
+
+<p>Untuk menghindari duplikasi kode, definisikan gaya dalam <code>res/values/</code>, modifikasi
+gaya di <code>res/values-v21/</code> untuk API baru, dan gunakan pewarisan gaya, dengan mendefinisikan
+gaya dasar di <code>res/values/</code> dan mewarisi gaya di <code>res/values-v21/</code>.</p>
+
+
+<h2 id="SupportLib">Menggunakan Support Library</h2>
+
+<p><a href="{@docRoot}tools/support-library/features.html#v7">v7 Support Library</a>
+r21 ke atas menyertakan fitur desain bahan berikut:</p>
+
+<ul>
+<li><a href="{@docRoot}training/material/theme.html">Gaya desain bahan</a> untuk beberapa widget sistem
+    bila Anda menerapkan salah satu tema <code>Theme.AppCompat</code>.</li>
+<li><a href="{@docRoot}training/material/theme.html#ColorPalette">Atribut tema palet warna</a>
+    dalam tema <code>Theme.AppCompat</code>.</li>
+<li>Widget {@link android.support.v7.widget.RecyclerView} untuk <a href="{@docRoot}training/material/lists-cards.html#RecyclerView">
+menampilkan kumpulan data.</a></li>
+<li>Widget {@link android.support.v7.widget.CardView} untuk <a href="{@docRoot}training/material/lists-cards.html#CardView">membuat kartu</a>.</li>
+<li>Kelas {@link android.support.v7.graphics.Palette} untuk <a href="{@docRoot}training/material/drawables.html#ColorExtract">mengekstrak warna mencolok dari
+    gambar</a>.</li>
+</ul>
+
+<h3>Widget sistem</h3>
+
+<p>Tema-tema <code>Theme.AppCompat</code> menyediakan gaya desain bahan untuk widget ini:</p>
+
+<ul>
+  <li>{@link android.widget.EditText}</li>
+  <li>{@link android.widget.Spinner}</li>
+  <li>{@link android.widget.CheckBox}</li>
+  <li>{@link android.widget.RadioButton}</li>
+  <li>{@link android.support.v7.widget.SwitchCompat}</li>
+  <li>{@link android.widget.CheckedTextView}</li>
+</ul>
+
+<h3>Palet Warna</h3>
+
+<p>Untuk memperoleh gaya desain bahan dan menyesuaikan palet warna dengan Android v7 Support
+Library, terapkan salah satu tema <code>Theme.AppCompat</code>:</p>
+
+<pre>
+&lt;!-- extend one of the Theme.AppCompat themes -->
+&lt;style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
+    &lt;!-- customize the color palette -->
+    &lt;item name="colorPrimary">@color/material_blue_500&lt;/item>
+    &lt;item name="colorPrimaryDark">@color/material_blue_700&lt;/item>
+    &lt;item name="colorAccent">@color/material_green_A200&lt;/item>
+&lt;/style>
+</pre>
+
+<h3>Daftar dan Kartu</h3>
+
+<p>Widget {@link android.support.v7.widget.RecyclerView} dan {@link
+android.support.v7.widget.CardView} tersedia di versi Android terdahulu melalui
+Android v7 Support Library dengan pembatasan ini:</p>
+<ul>
+<li>{@link android.support.v7.widget.CardView} memundurkan ke implementasi bayangan terprogram
+    dengan menggunakan pengisi tambahan.</li>
+<li>{@link android.support.v7.widget.CardView} tidak memangkas tampilan anaknya yang berpotongan
+    dengan sudut melengkung.</li>
+</ul>
+
+
+<h3>Dependensi</h3>
+
+<p>Untuk menggunakan fitur-fitur ini di versi Android sebelum 5.0 (API level 21), sertakan
+Android v7 Support Library dalam proyek Anda sebagai <a href="{@docRoot}/sdk/installing/studio-build.html#dependencies">dependensi Gradle</a>:</p>
+
+<pre>
+dependencies {
+    compile 'com.android.support:appcompat-v7:21.0.+'
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
+
+
+<h2 id="CheckVersion">Memeriksa Versi Sistem</h2>
+
+<p>Fitur berikut hanya tersedia di Android 5.0 (API level 21) ke atas:</p>
+
+<ul>
+<li>Transisi aktivitas</li>
+<li>Umpan balik sentuh</li>
+<li>Animasi membuka</li>
+<li>Animasi berbasis path</li>
+<li>Drawable vektor</li>
+<li>Pewarnaan drawable</li>
+</ul>
+
+<p>Untuk menjaga kompatibilitas dengan versi Android terdahulu, periksa {@link
+android.os.Build.VERSION#SDK_INT version} sistem saat runtime sebelum Anda memanggil API untuk salah satu
+fitur ini:</p>
+
+<pre>
+// Check if we're running on Android 5.0 or higher
+if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+    // Call some material design APIs here
+} else {
+    // Implement this feature without material design
+}
+</pre>
+
+<p class="note"><strong>Catatan:</strong> Untuk menetapkan versi Android yang didukung aplikasi Anda,
+gunakan atribut <code>android:minSdkVersion</code> dan <code>android:targetSdkVersion</code>
+dalam file manifes. Untuk menggunakan fitur desain bahan di Android 5.0, atur
+atribut <code>android:targetSdkVersion</code> ke <code>21</code>. Untuk informasi selengkapnya, lihat
+panduan <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">API
+&lt;uses-sdk&gt;</a>.</p>
diff --git a/docs/html-intl/intl/in/training/material/drawables.jd b/docs/html-intl/intl/in/training/material/drawables.jd
new file mode 100644
index 0000000..56fd17f
--- /dev/null
+++ b/docs/html-intl/intl/in/training/material/drawables.jd
@@ -0,0 +1,126 @@
+page.title=Bekerja dengan Drawable
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Pelajaran ini mengajarkan Anda cara</h2>
+<ol>
+  <li><a href="#DrawableTint">Mewarnai Sumber Daya Drawable</a></li>
+  <li><a href="#ColorExtract">Mengekstrak Warna Mencolok dari Gambar</a></li>
+  <li><a href="#VectorDrawables">Membuat Drawable Vektor</a></li>
+</ol>
+<h2>Anda juga harus membaca</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Spesifikasi desain bahan</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Desain bahan di Android</a></li>
+</ul>
+</div>
+</div>
+
+<p>Kemampuan berikut untuk drawable membantu Anda mengimplementasikan desain bahan dalam aplikasi Anda:</p>
+
+<ul>
+<li>Pewarnaan drawable</li>
+<li>Ekstraksi warna mencolok</li>
+<li>Drawable vektor</li>
+</ul>
+
+<p>Pelajaran ini menampilkan cara menggunakan fitur-fitur ini dalam aplikasi Anda.</p>
+
+
+<h2 id="DrawableTint">Mewarnai Sumber Daya Drawable</h2>
+
+<p>Dengan Android 5.0 (API level 21) ke atas, Anda bisa mewarnai bitmap dan sembilan-tambalan yang didefinisikan sebagai
+alpha-mask. Anda bisa mewarnainya dengan sumber daya warna atau atribut tema yang mencocokkan ke
+sumber daya warna (misalnya, <code>?android:attr/colorPrimary</code>). Biasanya, Anda membuat aset ini
+hanya sekali dan mewarnainya secara otomatis agar cocok dengan tema Anda.</p>
+
+<p>Anda bisa menerapkan warna ke objek {@link android.graphics.drawable.BitmapDrawable} atau {@link
+android.graphics.drawable.NinePatchDrawable} dengan metode {@code setTint()}. Anda juga bisa
+mengatur warna dan mode dalam layout dengan atribut <code>android:tint</code> dan
+<code>android:tintMode</code>.</p>
+
+
+<h2 id="ColorExtract">Mengekstrak Warna Mencolok dari Gambar</h2>
+
+<p>Android Support Library r21 ke atas menyertakan kelas {@link
+android.support.v7.graphics.Palette}, yang memungkinkan Anda mengekstrak warna mencolok dari gambar.
+Kelas ini mengekstrak warna mencolok berikut:</p>
+
+<ul>
+<li>Menyala</li>
+<li>Menyala pekat</li>
+<li>Menyala pucat</li>
+<li>Pudar</li>
+<li>Pudar pekat</li>
+<li>Pudar pucat</li>
+</ul>
+
+<p>Untuk mengekstrak warna-warna ini, teruskan objek {@link android.graphics.Bitmap} ke
+metode statis {@link android.support.v7.graphics.Palette#generate Palette.generate()} dalam
+thread latar belakang tempat Anda memuat gambar. Jika Anda tidak bisa menggunakan thread itu, panggil metode
+{@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} dan
+sediakan listener sebagai gantinya.</p>
+
+<p>Anda bisa mengambil warna mencolok dari gambar dengan metode getter di kelas
+<code>Palette</code>, misalnya <code>Palette.getVibrantColor</code>.</p>
+
+<p>Untuk menggunakan kelas {@link android.support.v7.graphics.Palette} dalam proyek Anda, tambahkan 
+<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">dependensi Gradle</a> berikut ke
+modul aplikasi Anda:</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:palette-v7:21.0.0'
+}
+</pre>
+
+<p>Untuk informasi selengkapnya, lihat referensi API untuk kelas {@link android.support.v7.graphics.Palette}.
+</p>
+
+
+<h2 id="VectorDrawables">Membuat Drawable Vektor</h2>
+
+<!-- video box -->
+<a class="notice-developers-video" href="https://www.youtube.com/watch?v=wlFVIIstKmA" style="margin-top:18px">
+<div>
+    <h3>Video</h3>
+    <p>Grafis Vektor Android</p>
+</div>
+</a>
+
+<p>Di Android 5.0 (API Level 21) ke atas, Anda bisa mendefinisikan drawable vektor, yang berubah skala tanpa
+kehilangan definisi. Anda hanya memerlukan satu file aset per gambar vektor, bukan file aset untuk
+setiap densitas layar seperti pada gambar bitmap. Untuk membuat gambar vektor, Anda mendefinisikan detail
+bentuknya dalam sebuah elemen XML <code>&lt;vector&gt;</code>.</p>
+
+<p>Contoh berikut mendefinisikan gambar vektor berbentuk hati:</p>
+
+<pre>
+&lt;!-- res/drawable/heart.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    &lt;!-- intrinsic size of the drawable -->
+    android:height="256dp"
+    android:width="256dp"
+    &lt;!-- size of the virtual canvas -->
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+
+  &lt;!-- draw a path -->
+  &lt;path android:fillColor="#8fff"
+      android:pathData="M20.5,9.5
+                        c-1.955,0,-3.83,1.268,-4.5,3
+                        c-0.67,-1.732,-2.547,-3,-4.5,-3
+                        C8.957,9.5,7,11.432,7,14
+                        c0,3.53,3.793,6.257,9,11.5
+                        c5.207,-5.242,9,-7.97,9,-11.5
+                        C25,11.432,23.043,9.5,20.5,9.5z" />
+&lt;/vector>
+</pre>
+
+<p>Gambar vektor direpresentasikan di Android sebagai objek {@link android.graphics.drawable.VectorDrawable}.
+ Untuk informasi selengkapnya tentang sintaks <code>pathData</code>, lihat <a href="http://www.w3.org/TR/SVG11/paths.html#PathData">Referensi Path SVG</a>. Untuk informasi selengkapnya
+tentang menganimasikan properti drawable vektor, lihat
+<a href="{@docRoot}training/material/animations.html#AnimVector">Menganimasikan Drawable Vektor</a>.</p>
diff --git a/docs/html-intl/intl/in/training/material/get-started.jd b/docs/html-intl/intl/in/training/material/get-started.jd
new file mode 100644
index 0000000..1a551a9
--- /dev/null
+++ b/docs/html-intl/intl/in/training/material/get-started.jd
@@ -0,0 +1,171 @@
+page.title=Memulai
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Pelajaran ini mengajarkan Anda cara</h2>
+<ol>
+  <li><a href="#ApplyTheme">Menerapkan Tema Bahan</a></li>
+  <li><a href="#Layouts">Mendesain Layout Anda</a></li>
+  <li><a href="#Depth">Menetapkan Ketinggian di Tampilan Anda</a></li>
+  <li><a href="#ListsCards">Membuat Daftar dan Kartu</a></li>
+  <li><a href="#Animations">Menyesuaikan Animasi Anda</a></li>
+</ol>
+<h2>Anda juga harus membaca</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Spesifikasi desain bahan</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Desain bahan di Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Untuk membuat aplikasi dengan desain bahan:</p>
+
+<ol>
+  <li style="margin-bottom:10px">
+    Tinjaulah <a href="http://www.google.com/design/spec">spesifikasi desain bahan</a>.</li>
+  <li style="margin-bottom:10px">
+    Terapkan <strong>tema</strong> bahan ke aplikasi Anda.</li>
+  <li style="margin-bottom:10px">
+    Buat <strong>layout</strong> agar mengikuti panduan desain bahan.</li>
+  <li style="margin-bottom:10px">
+    Tetapkan <strong>ketinggian</strong> tampilan Anda untuk menghasilkan bayangan.</li>
+  <li style="margin-bottom:10px">
+    Gunakan <strong>widget</strong> sistem untuk daftar dan kartu.</li>
+  <li style="margin-bottom:10px">
+    Sesuaikan <strong>animasi</strong> di aplikasi Anda.</li>
+</ol>
+
+<h3>Mempertahankan kompatibilitas mundur</h3>
+
+<p>Anda bisa menambahkan banyak fitur desain bahan ke aplikasi sekaligus mempertahankan kompatibilitas dengan
+versi Android sebelum 5.0. Untuk informasi selengkapnya, lihat
+<a href="{@docRoot}training/material/compatibility.html">Mempertahankan Kompatibilitas</a>.</p>
+
+<h3>Memperbarui aplikasi dengan desain bahan</h3>
+
+<p>Untuk memperbarui aplikasi yang ada guna memasukkan desain bahan, perbarui layout Anda dengan mengikuti
+panduan desain bahan. Juga pastikan memasukkan kedalaman, umpan balik sentuh, dan
+animasi.</p>
+
+<h3>Membuat aplikasi baru dengan desain bahan</h3>
+
+<p>Jika Anda sedang membuat aplikasi baru dengan fitur desain bahan, <a href="http://www.google.com/design/spec">panduan desain bahan</a> akan memberi Anda
+kerangka kerja desain yang kohesif. Ikuti panduan itu dan gunakan fungsionalitas baru di
+kerangka kerja Android untuk mendesain dan mengembangkan aplikasi Anda.</p>
+
+
+<h2 id="ApplyTheme">Menerapkan Tema Bahan</h2>
+
+<p>Untuk menerapkan tema bahan dalam aplikasi Anda, tetapkan gaya yang mewarisi
+<code>android:Theme.Material</code>:</p>
+
+<pre>
+&lt;!-- res/values/styles.xml -->
+&lt;resources>
+  &lt;!-- your theme inherits from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- theme customizations -->
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<p>Tema bahan menyediakan widget sistem terbaru yang memungkinkan Anda mengatur palet warnanya dan
+animasi default untuk umpan balik sentuh dan transisi aktivitas. Untuk detail selengkapnya, lihat
+<a href="{@docRoot}training/material/theme.html">Menggunakan Tema Bahan</a>.</p>
+
+
+<h2 id="Layouts">Mendesain Layout Anda</h2>
+
+<p>Selain menerapkan dan menyesuaikan tema bahan, layout Anda harus mematuhi
+<a href="http://www.google.com/design/spec">panduan desain bahan</a>. Bila Anda mendesain
+layout, berikan perhatian khusus pada hal-hal berikut:</p>
+
+<ul>
+<li>Petak patokan</li>
+<li>Garis utama</li>
+<li>Pengaturan Jarak</li>
+<li>Ukuran target sentuh</li>
+<li>Struktur layout</li>
+</ul>
+
+
+<h2 id="Depth">Menetapkan Ketinggian di Tampilan Anda</h2>
+
+<p>Tampilan bisa menghasilkan bayangan, dan nilai ketinggian tampilan
+menentukan ukuran bayangan dan urutan penggambarannya. Untuk mengatur ketinggian tampilan, gunakan
+atribut <code>android:elevation</code> dalam layout:</p>
+
+<pre>
+&lt;TextView
+    android:id="&#64;+id/my_textview"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:text="&#64;string/next"
+    android:background="&#64;color/white"
+    android:elevation="5dp" />
+</pre>
+
+<p>Properti <code>translationZ</code> baru memungkinkan Anda membuat animasi yang mencerminkan
+perubahan sementara pada ketinggian tampilan. Perubahan ketinggian bisa berguna saat
+<a href="{@docRoot}training/material/animations.html#ViewState">merespons
+gerakan sentuh</a>.</p>
+
+<p>Untuk detail selengkapnya, lihat <a href="{@docRoot}training/material/shadows-clipping.html">Mendefinisikan
+Bayangan dan Memangkas Tampilan</a>.</p>
+
+
+<h2 id="ListsCards">Membuat Daftar dan Kartu</h2>
+
+<p>{@link android.support.v7.widget.RecyclerView} adalah versi {@link
+android.widget.ListView} yang lebih mudah dimasukkan dan mendukung beragam tipe layout serta memberikan peningkatan kinerja.
+{@link android.support.v7.widget.CardView} memungkinkan Anda menampilkan potongan informasi dalam kartu dengan
+tampilan konsisten di seluruh aplikasi. Contoh kode berikut memperagakan cara menyertakan
+{@link android.support.v7.widget.CardView} dalam layout Anda:</p>
+
+<pre>
+&lt;android.support.v7.widget.CardView
+    android:id="&#64;+id/card_view"
+    android:layout_width="200dp"
+    android:layout_height="200dp"
+    card_view:cardCornerRadius="3dp">
+    ...
+&lt;/android.support.v7.widget.CardView>
+</pre>
+
+<p>Untuk informasi selengkapnya, lihat <a href="{@docRoot}training/material/lists-cards.html">Membuat Daftar
+dan Kartu</a>.</p>
+
+
+<h2 id="Animations">Menyesuaikan Animasi Anda</h2>
+
+<p>Android 5.0 (API level 21) menyertakan API baru untuk membuat animasi custom di aplikasi Anda.
+Misalnya, Anda bisa mengaktifkan transisi aktivitas dan mendefinisikan transisi keluar di
+aktivitas:</p>
+
+<pre>
+public class MyActivity extends Activity {
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // enable transitions
+        getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+        setContentView(R.layout.activity_my);
+    }
+
+    public void onSomeButtonClicked(View view) {
+        getWindow().setExitTransition(new Explode());
+        Intent intent = new Intent(this, MyOtherActivity.class);
+        startActivity(intent,
+                      ActivityOptions
+                          .makeSceneTransitionAnimation(this).toBundle());
+    }
+}
+</pre>
+
+<p>Bila Anda memulai aktivitas lain dari aktivitas ini, transisi keluar akan diaktifkan.</p>
+
+<p>Untuk mengetahui selengkapnya tentang API animasi yang baru, lihat <a href="{@docRoot}training/material/animations.html">Mendefinisikan Animasi Custom</a>.</p>
diff --git a/docs/html-intl/intl/in/training/material/index.jd b/docs/html-intl/intl/in/training/material/index.jd
new file mode 100644
index 0000000..53697d2
--- /dev/null
+++ b/docs/html-intl/intl/in/training/material/index.jd
@@ -0,0 +1,60 @@
+page.title=Desain Bahan untuk Pengembang
+page.image=images/cards/material_2x.png
+page.metaDescription=Pelajari cara menerapkan desain bahan pada aplikasi Anda.
+
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+  <h2>Dependensi dan Prasyarat</h2>
+  <ul>
+    <li>Android 5.0 (API Level 21)</li>
+  </ul>
+</div>
+</div>
+
+<p>Desain bahan adalah panduan komprehensif untuk desain visual, gerak, dan interaksi di
+berbagai platform dan perangkat. Untuk menggunakan desain bahan di aplikasi Android, ikuti panduan
+yang dijelaskan dalam
+<a href="http://www.google.com/design/spec/material-design/introduction.html">spesifikasi desain bahan
+</a> dan gunakan komponen serta fungsionalitas baru yang tersedia di Android 5.0
+(API level 21).</p>
+
+<p>Kelas ini menampilkan kepada Anda cara membuat aplikasi desain bahan dengan elemen-elemen berikut:</p>
+
+<ul>
+<li>Tema bahan</li>
+<li>Widget untuk kartu dan daftar</li>
+<li>Bayangan custom dan pemangkasan tampilan</li>
+<li>Drawable vektor</li>
+<li>Animasi custom</li>
+</ul>
+
+<p>Kelas ini juga mengajarkan cara mempertahankan kompatibilitas dengan versi Android sebelum
+5.0 (API level 21) bila Anda menggunakan fitur desain bahan dalam aplikasi.</p>
+
+<h2>Pelajaran</h2>
+
+<dl>
+  <dt><a href="{@docRoot}training/material/get-started.html">Memulai</a></dt>
+  <dd>Pelajari cara memperbarui aplikasi Anda dengan fitur desain bahan.</dd>
+
+  <dt><a href="{@docRoot}training/material/theme.html">Menggunakan Tema Bahan</a></dt>
+  <dd>Pelajari cara menerapkan gaya desain bahan pada aplikasi Anda.</dd>
+
+  <dt><a href="{@docRoot}training/material/lists-cards.html">Membuat Daftar dan Kartu</a></dt>
+  <dd>Pelajari cara membuat daftar dan kartu dengan tampilan dan cara kerja yang konsisten menggunakan widget sistem.</dd>
+
+  <dt><a href="{@docRoot}training/material/shadows-clipping.html">Mendefinisikan Bayangan dan Memangkas Tampilan</a></dt>
+  <dd>Pelajari cara mengatur elevasi tampilan Anda untuk membuat bayangan custom dan cara memangkas tampilan.</dd>
+
+  <dt><a href="{@docRoot}training/material/drawables.html">Bekerja dengan Drawable</a></dt>
+  <dd>Pelajari cara membuat drawable vektor dan cara mewarnai sumber daya drawable.</dd>
+
+  <dt><a href="{@docRoot}training/material/animations.html">Mendefinisikan Animasi Custom</a></dt>
+  <dd>Pelajari cara membuat animasi custom untuk tampilan dan transisi aktivitas dengan elemen bersama.</dd>
+
+  <dt><a href="{@docRoot}training/material/compatibility.html">Mempertahankan Kompatibilitas</a></dt>
+  <dd>Pelajari cara mempertahankan kompatibilitas dengan versi platform sebelum Android 5.0.</dd>
+</dl>
diff --git a/docs/html-intl/intl/in/training/material/lists-cards.jd b/docs/html-intl/intl/in/training/material/lists-cards.jd
new file mode 100644
index 0000000..358f1d1
--- /dev/null
+++ b/docs/html-intl/intl/in/training/material/lists-cards.jd
@@ -0,0 +1,266 @@
+page.title=Membuat Daftar dan Kartu
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Pelajaran ini mengajarkan Anda cara</h2>
+<ol>
+  <li><a href="#RecyclerView">Membuat Daftar</a></li>
+  <li><a href="#CardView">Membuat Kartu</a></li>
+  <li><a href="#Dependencies">Menambahkan Dependensi</a></li>
+</ol>
+<h2>Anda juga harus membaca</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Spesifikasi desain bahan</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Desain bahan di Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Untuk membuat daftar dan kartu yang kompleks dengan gaya desain bahan di aplikasi, Anda bisa menggunakan widget
+{@link android.support.v7.widget.RecyclerView} dan {@link android.support.v7.widget.CardView}.
+</p>
+
+
+<h2 id="RecyclerView">Membuat Daftar</h2>
+
+<p>Widget {@link android.support.v7.widget.RecyclerView} adalah
+versi {@link android.widget.ListView} yang lebih maju dan fleksibel. Widget ini adalah kontainer untuk menampilkan set data
+besar yang bisa digulir secara sangat efisien dengan mempertahankan tampilan dalam jumlah terbatas. Gunakan
+widget {@link android.support.v7.widget.RecyclerView} bila Anda memiliki kumpulan data dengan elemen
+yang berubah saat runtime berdasarkan tindakan pengguna atau kejadian jaringan.</p>
+
+<p>Kelas {@link android.support.v7.widget.RecyclerView} menyederhanakan penampilan dan penanganan
+set data yang besar dengan menyediakan:</p>
+
+<ul>
+  <li>Pengelola layout untuk memosisikan item</li>
+  <li>Animasi default untuk operasi item umum, misalnya penghapusan atau penambahan item</li>
+</ul>
+
+<p>Anda juga memiliki keluwesan untuk mendefinisikan pengelola layout custom dan animasi untuk widget {@link
+android.support.v7.widget.RecyclerView}.</p>
+
+<img src="{@docRoot}training/material/images/RecyclerView.png" alt="" width="550" height="106" />
+<p class="img-caption">
+<strong>Gambar 1</strong>. Widget <code>RecyclerView</code>.
+</p>
+
+<p>Untuk menggunakan widget {@link android.support.v7.widget.RecyclerView}, Anda harus menetapkan
+adaptor dan pengelola layout. Untuk membuat adaptor, perluas kelas {@link
+android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter}. Detail
+implementasi bergantung pada detail set data Anda dan tipe tampilan. Untuk informasi selengkapnya,
+ lihat <a href="#RVExamples">contoh-contoh</a> di bawah.</p>
+
+<div style="float:right">
+<img src="{@docRoot}design/material/images/list_mail.png" alt="" width="250" height="426" />
+<p class="img-caption" style="margin-left:8px">
+<strong>Gambar 2</strong> - Daftar berisi <code>RecyclerView</code>.
+</p>
+</div>
+
+<p><strong>Pengelola layout</strong> memosisikan tampilan item dalam {@link
+android.support.v7.widget.RecyclerView} dan menentukan waktu untuk menggunakan ulang tampilan item yang tidak
+lagi terlihat oleh pengguna. Untuk menggunakan ulang (atau <em>mendaur ulang</em>) tampilan, pengelola layout bisa meminta
+adaptor untuk mengganti konten tampilan dengan elemen lain dalam dataset. Mendaur ulang
+tampilan dengan cara ini akan meningkatkan kinerja karena menghindari pembuatan tampilan yang tidak diperlukan atau
+melakukan pencarian {@link android.app.Activity#findViewById findViewById()} yang mahal.</p>
+
+<p>{@link android.support.v7.widget.RecyclerView} menyediakan semua pengelola layout bawaan ini:</p>
+
+<ul>
+<li>{@link android.support.v7.widget.LinearLayoutManager} menampilkan item dalam
+daftar gulir vertikal atau horizontal.</li>
+<li>{@link android.support.v7.widget.GridLayoutManager} menampilkan item dalam petak.</li>
+<li>{@link android.support.v7.widget.StaggeredGridLayoutManager} menampilkan item dalam petak zigzag.</li>
+</ul>
+
+<p>Untuk membuat pengelola layout custom, perluas kelas {@link
+android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager}.</p>
+
+<h3>Animasi</h3>
+
+<p>Animasi untuk menambahkan dan menghapus item diaktifkan secara default di {@link
+android.support.v7.widget.RecyclerView}. Untuk menyesuaikan animasi ini, perluas kelas 
+{@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator}dan gunakan
+metode {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()}.
+</p>
+
+<h3 id="RVExamples">Contoh</h3>
+
+<p>Contoh kode berikut memperagakan cara menambahkan
+{@link android.support.v7.widget.RecyclerView} ke layout:</p>
+
+<pre>
+&lt;!-- A RecyclerView with some commonly used attributes -->
+&lt;android.support.v7.widget.RecyclerView
+    android:id="@+id/my_recycler_view"
+    android:scrollbars="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"/>
+</pre>
+
+<p>Begitu Anda menambahkan widget {@link android.support.v7.widget.RecyclerView} ke layout,
+dapatkan pengatur atau handle objek itu, hubungkan dengan pengelola layout, dan sertakan adaptor untuk data
+yang akan ditampilkan:</p>
+
+<pre>
+public class MyActivity extends Activity {
+    private RecyclerView mRecyclerView;
+    private RecyclerView.Adapter mAdapter;
+    private RecyclerView.LayoutManager mLayoutManager;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.my_activity);
+        mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
+
+        // use this setting to improve performance if you know that changes
+        // in content do not change the layout size of the RecyclerView
+        mRecyclerView.setHasFixedSize(true);
+
+        // use a linear layout manager
+        mLayoutManager = new LinearLayoutManager(this);
+        mRecyclerView.setLayoutManager(mLayoutManager);
+
+        // specify an adapter (see also next example)
+        mAdapter = new MyAdapter(myDataset);
+        mRecyclerView.setAdapter(mAdapter);
+    }
+    ...
+}
+</pre>
+
+<p>Adaptor menyediakan akses ke item dataset Anda, membuat tampilan untuk item, dan
+mengganti konten sebagian tampilan dengan item data baru bila item semula tidak lagi
+terlihat. Contoh kode berikut menampilkan implementasi sederhana untuk sebuah dataset yang terdiri dari
+larik string yang ditampilkan dengan menggunakan widget {@link android.widget.TextView}:</p>
+
+<pre>
+public class MyAdapter extends RecyclerView.Adapter&lt;MyAdapter.ViewHolder> {
+    private String[] mDataset;
+
+    // Provide a reference to the views for each data item
+    // Complex data items may need more than one view per item, and
+    // you provide access to all the views for a data item in a view holder
+    public static class ViewHolder extends RecyclerView.ViewHolder {
+        // each data item is just a string in this case
+        public TextView mTextView;
+        public ViewHolder(TextView v) {
+            super(v);
+            mTextView = v;
+        }
+    }
+
+    // Provide a suitable constructor (depends on the kind of dataset)
+    public MyAdapter(String[] myDataset) {
+        mDataset = myDataset;
+    }
+
+    // Create new views (invoked by the layout manager)
+    &#64;Override
+    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
+                                                   int viewType) {
+        // create a new view
+        View v = LayoutInflater.from(parent.getContext())
+                               .inflate(R.layout.my_text_view, parent, false);
+        // set the view's size, margins, paddings and layout parameters
+        ...
+        ViewHolder vh = new ViewHolder(v);
+        return vh;
+    }
+
+    // Replace the contents of a view (invoked by the layout manager)
+    &#64;Override
+    public void onBindViewHolder(ViewHolder holder, int position) {
+        // - get element from your dataset at this position
+        // - replace the contents of the view with that element
+        holder.mTextView.setText(mDataset[position]);
+
+    }
+
+    // Return the size of your dataset (invoked by the layout manager)
+    &#64;Override
+    public int getItemCount() {
+        return mDataset.length;
+    }
+}
+</pre>
+
+
+<div style="float:right;margin-top:15px;margin-left:30px">
+<img src="{@docRoot}design/material/images/card_travel.png" alt="" width="225" height="383">
+<p class="img-caption" style="margin-left:12px">
+<strong>Gambar 3</strong>. Contoh kartu.
+</p>
+</div>
+
+<h2 id="CardView">Membuat Kartu</h2>
+
+<p>{@link android.support.v7.widget.CardView} memperluas kelas {@link android.widget.FrameLayout}
+dan memungkinkan Anda menampilkan informasi dalam kartu yang memiliki tampilan konsisten lintas platform. Widget {@link
+android.support.v7.widget.CardView} bisa memiliki bayangan dan sudut membulat.</p>
+
+<p>Untuk membuat kartu dengan bayangan, gunakan atribut <code>card_view:cardElevation</code>.
+{@link android.support.v7.widget.CardView} menggunakan elevasi nyata dan bayangan dinamis pada Android 5.0
+(API level 21) ke atas dan memundurkan ke implementasi bayangan terprogram pada versi terdahulu.
+Untuk informasi selengkapnya, lihat <a href="{@docRoot}training/material/compatibility.html">Mempertahankan
+Kompatibilitas</a>.</p>
+
+<p>Gunakan properti-properti ini untuk menyesuaikan penampilan
+widget {@link android.support.v7.widget.CardView}:</p>
+
+<ul>
+  <li>Untuk mengatur radius sudut pada layout Anda, gunakan atribut <code>card_view:cardCornerRadius</code>.
+</li>
+  <li>Untuk mengatur radius sudut dalam kode Anda, gunakan metode <code>CardView.setRadius</code>.</li>
+  <li>Untuk mengatur warna latar belakang kartu, gunakan atribut <code>card_view:cardBackgroundColor</code>.
+</li>
+</ul>
+
+<p>Contoh kode berikut menampilkan cara menyertakan widget {@link android.support.v7.widget.CardView}
+dalam layout:</p>
+
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    ... >
+    &lt;!-- A CardView that contains a TextView -->
+    &lt;android.support.v7.widget.CardView
+        xmlns:card_view="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/card_view"
+        android:layout_gravity="center"
+        android:layout_width="200dp"
+        android:layout_height="200dp"
+        card_view:cardCornerRadius="4dp">
+
+        &lt;TextView
+            android:id="@+id/info_text"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
+    &lt;/android.support.v7.widget.CardView>
+&lt;/LinearLayout>
+</pre>
+
+<p>Untuk informasi selengkapnya, lihat referensi API untuk {@link android.support.v7.widget.CardView}.</p>
+
+
+<h2 id="Dependencies">Menambahkan Dependensi</h2>
+
+<p>Widget {@link android.support.v7.widget.RecyclerView} dan {@link android.support.v7.widget.CardView}
+adalah bagian dari <a href="{@docRoot}tools/support-library/features.html#v7">v7 Support
+Library</a>. Untuk menggunakan widget dalam proyek Anda, tambahkan 
+<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">dependensi Gradle</a> ini ke
+modul aplikasi Anda:</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
diff --git a/docs/html-intl/intl/in/training/material/shadows-clipping.jd b/docs/html-intl/intl/in/training/material/shadows-clipping.jd
new file mode 100644
index 0000000..5431926
--- /dev/null
+++ b/docs/html-intl/intl/in/training/material/shadows-clipping.jd
@@ -0,0 +1,133 @@
+page.title=Mendefinisikan Bayangan dan Memangkas Tampilan
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Pelajaran ini mengajarkan Anda cara</h2>
+<ol>
+  <li><a href="#Elevation">Menetapkan Elevasi pada Tampilan Anda</a></li>
+  <li><a href="#Shadows">Menyesuaikan Bayangan dan Garis Luar Tampilan</a></li>
+  <li><a href="#Clip">Memangkas Tampilan</a></li>
+</ol>
+<h2>Anda juga harus membaca</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Spesifikasi desain bahan</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Desain bahan di Android</a></li>
+</ul>
+</div>
+</div>
+
+<p>Desain bahan memperkenalkan elevasi untuk elemen-elemen UI. Elevasi membantu pengguna memahami
+arti penting relatif masing-masing elemen dan memfokuskan perhatian pada tugas yang ada.</p>
+
+<p>Elevasi tampilan, yang dinyatakan dengan properti Z, menentukan tampilan visual
+bayangannya: tampilan dengan nilai Z lebih tinggi menghasilkan bayangan lebih besar dan lebih halus. Tampilan dengan nilai Z lebih tinggi menutupi
+tampilan dengan nilai Z lebih rendah; akan tetapi, nilai Z tampilan tidak memengaruhi ukuran tampilan.</p>
+
+<p>Bayangan digambar oleh induk tampilan yang dinaikkan, sehingga terkena pemangkasan standar tampilan,
+yang dipangkas oleh induk secara default.</p>
+
+<p>Elevasi juga berguna untuk membuat animasi tempat memunculkan widget untuk sementara di atas
+bidang tampilan saat melakukan beberapa tindakan.</p>
+
+<p>Untuk informasi selengkapnya tentang elevasi dalam desain bahan, lihat
+<a href="http://www.google.com/design/spec/what-is-material/objects-in-3d-space.html">Objek
+di ruang 3D</a>.</p>
+
+
+<h2 id="Elevation">Menetapkan Elevasi pada Tampilan Anda</h2>
+
+<p>Nilai Z untuk tampilan memiliki dua komponen:
+
+<ul>
+<li>Elevasi: Komponen statis.</li>
+<li>Transformasi: Komponen dinamis yang digunakan untuk animasi.</li>
+</ul>
+
+<p><code>Z = elevation + translationZ</code></p>
+
+<img src="{@docRoot}training/material/images/shadows-depth.png" width="580" height="261" alt="" />
+<p class="img-caption"><strong>Gambar 1</strong> - Bayangan untuk berbagai elevasi tampilan.</p>
+
+<p>Untuk mengatur elevasi tampilan dalam definisi layout, gunakan atribut <code>android:elevation</code>.
+ Untuk mengatur elevasi tampilan dalam kode aktivitas, gunakan
+metode {@link android.view.View#setElevation View.setElevation()}.</p>
+
+<p>Untuk mengatur transformasi tampilan, gunakan metode {@link android.view.View#setTranslationZ
+View.setTranslationZ()}.</p>
+
+<p>Metode {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} dan {@link
+android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} yang baru memudahkan
+Anda menganimasikan elevasi tampilan. Untuk informasi selengkapnya, lihat referensi API untuk
+{@link android.view.ViewPropertyAnimator} dan panduan pengembang <a href="{@docRoot}guide/topics/graphics/prop-animation.html">Animasi Properti</a>.
+</p>
+
+<p>Anda juga bisa menggunakan {@link android.animation.StateListAnimator}
+untuk menetapkan animasi ini secara deklaratif. Ini khususnya berguna bila
+perubahan status memicu animasi, seperti saat seorang pengguna menekan tombol. Untuk informasi selengkapnya, lihat
+<a href="{@docRoot}training/material/animations.html#ViewState">Menganimasikan Perubahan Status Tampilan</a>.</p>
+
+<p>Nilai Z diukur dengan satuan dp (density-independent pixel).</p>
+
+
+<h2 id="Shadows">Menyesuaikan Bayangan dan Garis Luar Tampilan</h2>
+
+<p>Batas-batas drawable latar belakang tampilan menentukan bentuk default bayangannya.
+<strong>Garis luar</strong> menyatakan bentuk luar objek grafis dan mendefinisikan
+bidang riak untuk umpan balik sentuh.</p>
+
+<p>Perhatikan tampilan ini, yang didefinisikan dengan drawable latar belakang:</p>
+
+<pre>
+&lt;TextView
+    android:id="@+id/myview"
+    ...
+    android:elevation="2dp"
+    android:background="@drawable/myrect" />
+</pre>
+
+<p>Drawable latar belakang didefinisikan sebagai persegi panjang dengan sudut membulat:</p>
+
+<pre>
+&lt;!-- res/drawable/myrect.xml -->
+&lt;shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+    &lt;solid android:color="#42000000" />
+    &lt;corners android:radius="5dp" />
+&lt;/shape>
+</pre>
+
+<p>Tampilan ini menghasilkan bayangan dengan sudut membulat, karena drawable latar belakang mendefinisikan
+garis luar tampilan. Memberikan garis luar custom akan mengesampingkan bentuk default bayangan tampilan.</p>
+
+<p>Untuk mendefinisikan garis luar custom suatu tampilan dalam kode Anda:<p>
+
+<ol>
+<li>Perluas kelas {@link android.view.ViewOutlineProvider}.</li>
+<li>Kesampingkan metode {@link android.view.ViewOutlineProvider#getOutline getOutline()}.</li>
+<li>Tetapkan penyedia garis luar baru untuk tampilan Anda dengan metode {@link
+android.view.View#setOutlineProvider View.setOutlineProvider()}.</li>
+</ol>
+
+<p>Anda bisa membuat garis luar lonjong dan persegi panjang yang bersudut membulat dengan menggunakan metode dalam
+kelas {@link android.graphics.Outline}. Penyedia garis luar default untuk tampilan memperoleh garis luar
+dari latar belakang tampilan. Untuk mencegah tampilan menghasilkan bayangan, atur penyedia garis luarnya
+ke <code>null</code>.</p>
+
+
+<h2 id="Clip">Memangkas Tampilan</h2>
+
+<p>Memangkas tampilan memudahkan Anda mengubah bentuk tampilan. Anda bisa memangkas tampilan agar
+konsistensi dengan elemen desain lainnya atau mengubah bentuk tampilan untuk merespons input pengguna.
+Anda bisa memangkas tampilan hingga area garis luarnya dengan menggunakan metode {@link android.view.View#setClipToOutline
+View.setClipToOutline()} atau atribut <code>android:clipToOutline</code>. Hanya
+garis-garis luar persegi panjang, lingkaran, dan persegi panjang bersudut bulat yang mendukung pemangkasan, seperti yang ditentukan oleh
+metode {@link android.graphics.Outline#canClip Outline.canClip()}.</p>
+
+<p>Untuk memangkas tampilan ke bentuk drawable, atur drawable sebagai latar belakang tampilan
+(seperti yang ditampilkan di atas) dan panggil metode {@link android.view.View#setClipToOutline View.setClipToOutline()}.
+</p>
+
+<p>Memangkas tampilan adalah operasi yang mahal; jadi, jangan animasikan bentuk yang Anda gunakan
+untuk memangkas tampilan. Untuk memperoleh efek ini, gunakan animasi <a href="{@docRoot}training/material/animations.html#Reveal">Reveal Effect</a>.</p>
diff --git a/docs/html-intl/intl/in/training/material/theme.jd b/docs/html-intl/intl/in/training/material/theme.jd
new file mode 100644
index 0000000..5acdcd2
--- /dev/null
+++ b/docs/html-intl/intl/in/training/material/theme.jd
@@ -0,0 +1,131 @@
+page.title=Menggunakan Tema Bahan
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Pelajaran ini mengajarkan Anda cara</h2>
+<ol>
+  <li><a href="#ColorPalette">Menyesuaikan Palet Warna</a></li>
+  <li><a href="#StatusBar">Menyesuaikan Baris Status</a></li>
+  <li><a href="#Inheritance">Tampilan Setiap Tema</a></li>
+</ol>
+<h2>Anda juga harus membaca</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Spesifikasi desain bahan</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Desain bahan di Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Tema bahan yang baru menyediakan:</p>
+
+<ul>
+  <li>Widget sistem yang memungkinkan Anda mengatur palet warnanya</li>
+  <li>Animasi umpan balik sentuh untuk widget sistem</li>
+  <li>Animasi transisi aktivitas</li>
+</ul>
+
+<p>Anda bisa menyesuaikan tampilan tema bahan
+sesuai dengan identitas merek Anda dengan palet warna yang Anda kontrol. Anda bisa mewarnai action-bar dan
+baris status dengan menggunakan atribut tema, seperti yang ditampilkan dalam <a href="#fig3">Gambar 3</a>.</p>
+
+<p>Widget sistem memiliki desain baru dan animasi umpan balik sentuh. Anda bisa menyesuaikan
+palet warna, animasi umpan balik sentuh, dan transisi aktivitas untuk aplikasi.</p>
+
+<p>Tema bahan didefinisikan sebagai:</p>
+
+<ul>
+  <li><code>@android:style/Theme.Material</code> (versi gelap)</li>
+  <li><code>@android:style/Theme.Material.Light</code> (versi terang)</li>
+  <li><code>@android:style/Theme.Material.Light.DarkActionBar</code></li>
+</ul>
+
+<p>Untuk daftar gaya bahan yang bisa Anda gunakan, lihat referensi API untuk
+{@link android.R.style R.style}.</p>
+
+<!-- two columns, dark/light material theme example -->
+<div style="width:700px;margin-top:25px;margin-bottom:10px">
+<div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
+  <img src="{@docRoot}design/material/images/MaterialDark.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>Gambar 1</strong>. Tema bahan gelap</p>
+  </div>
+</div>
+<div style="float:left;width:250px;margin-right:0px;">
+  <img src="{@docRoot}design/material/images/MaterialLight.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>Gambar 2</strong>. Tema bahan terang</p>
+  </div>
+</div>
+<br style="clear:left">
+</div>
+
+<p class="note">
+<strong>Catatan:</strong> Tema bahan hanya tersedia di Android 5.0 (API level 21)
+ke atas. <a href="{@docRoot}tools/support-library/features.html#v7">v7 Support Library</a>
+menyediakan tema dengan gaya desain bahan untuk beberapa widget dan dukungan untuk menyesuaikan
+palet warna. Untuk informasi selengkapnya, lihat
+<a href="{@docRoot}training/material/compatibility.html">Mempertahankan Kompatibilitas</a>.
+</p>
+
+
+<h2 id="ColorPalette">Menyesuaikan Palet Warna</h2>
+
+<p style="margin-bottom:30px">Untuk menyesuaikan warna dasar tema agar cocok dengan merek Anda, definisikan
+warna custom menggunakan atribut tema saat Anda mewariskan dari tema bahan:</p>
+
+<pre>
+&lt;resources>
+  &lt;!-- inherit from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- Main theme colors -->
+    &lt;!--   your app branding color for the app bar -->
+    &lt;item name="android:colorPrimary">@color/primary&lt;/item>
+    &lt;!--   darker variant for the status bar and contextual app bars -->
+    &lt;item name="android:colorPrimaryDark">@color/primary_dark&lt;/item>
+    &lt;!--   theme UI controls like checkboxes and text fields -->
+    &lt;item name="android:colorAccent">@color/accent&lt;/item>
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<div style="float:right;margin-left:25px;margin-top:20px;margin-bottom:10px" id="fig3">
+<img src="{@docRoot}training/material/images/ThemeColors.png" width="250" height="445" />
+<p class="img-caption" style="margin-bottom:0px">
+<strong>Gambar 3.</strong> Menyesuaikan tema bahan.</p>
+</div>
+
+
+<h2 id="StatusBar">Menyesuaikan Baris Status</h2>
+
+<p>Tema bahan memungkinkan Anda menyesuaikan baris status dengan mudah; jadi Anda bisa menetapkan
+warna yang cocok dengan merek Anda dan memberikan kontras yang cukup untuk menampilkan ikon status putih. Untuk
+mengatur warna custom bagi baris status, gunakan atribut <code>android:statusBarColor</code> bila
+Anda memperluas tema bahan. Secara default, <code>android:statusBarColor</code> mewarisi
+nilai <code>android:colorPrimaryDark</code>.</p>
+
+<p>Anda juga bisa menggambar sendiri di belakang baris status. Misalnya, jika Anda ingin menampilkan
+baris status secara transparan di atas foto, dengan gradasi gelap yang halus untuk memastikan
+ikon status putih tetap terlihat. Caranya, atur atribut <code>android:statusBarColor</code> ke
+<code>&#64;android:color/transparent</code> dan sesuaikan flag jendela seperti yang diperlukan. Anda juga bisa
+menggunakan metode {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} untuk
+animasi atau pemudaran.</p>
+
+<p class="note">
+<strong>Catatan:</strong> Baris status harus selalu memiliki delineasi yang jelas dari
+toolbar utama, kecuali bila Anda menampilkan gambar detail atau konten media tepi-ke-tepi di belakang
+baris ini dan bila Anda menggunakan gradasi untuk memastikan ikon tetap terlihat.
+</p>
+
+<p>Bila Anda menyesuaikan baris navigasi dan baris status, jadikan keduanya transparan atau modifikasi
+baris status saja. Baris navigasi harus tetap hitam di semua kasus lainnya.</p>
+
+
+<h2 id="Inheritance">Tampilan Setiap Tema</h3>
+
+<p>Elemen dalam definisi layout XML bisa menetapkan atribut <code>android:theme</code>,
+yang merujuk sumber daya tema. Atribut ini memodifikasi tema untuk elemen itu dan setiap
+elemen anak, yang berguna untuk mengubah palet warna tema dalam porsi tertentu
+pada antarmuka.</p>
diff --git a/docs/html-intl/intl/ja/design/get-started/principles.jd b/docs/html-intl/intl/ja/design/get-started/principles.jd
index 8e4149d..dde44ff 100644
--- a/docs/html-intl/intl/ja/design/get-started/principles.jd
+++ b/docs/html-intl/intl/ja/design/get-started/principles.jd
@@ -1,29 +1,29 @@
-page.title=Android デザイン指針
+page.title=Android デザインの原則
 @jd:body
 
-<p>このデザイン指針は、ユーザーがもっとも知りたいと思われることを中心に、Android User Experience Team により、またその活動を統一的なものにするために作成されたものです。Android デベロッパーとデザイナーに対しては各種端末向けのより詳細なデザイン ガイドラインがあります。
+<p>このデザインの原則は、ユーザーがもっとも知りたいと思われることを中心に、Android User Experience Team により、またその活動を統一的なものにするために作成されたものです。
 
-
+Android デベロッパーとデザイナーに対しては各種端末向けのより詳細なデザイン ガイドラインがあります。
 
 </p>
 
 <p>
-ご自身の創造性やデザインについて考える際、この指針を考慮に入れてください。
+ご自身のクリエイティビティやデザインについて考える際、この原則を考慮に入れてください。
 何を当てはめるかは目的に応じて調整してください。
 </p>
 
 <h2 id="enchant-me">ユーザーを引きつける</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="delight-me">サプライズで楽しませる</h4>
-<p>美しい画面、考え抜かれて配置されたアニメーション、タイミングの良いサウンド エフェクトは、使っていて楽しくなります。
+<p>美しい画面、思慮深く配置されたアニメーション、タイミングの良いサウンド エフェクトは、使っていて楽しくなります。
 わずかな効果でも、ユーザーを楽しませ、力を得たように感じてもらえます。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_delight.png">
 
@@ -32,15 +32,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="real-objects-more-fun">ボタンやメニューよりもリアルなオブジェクトでさらに楽しく</h4>
-<p>ユーザーがアプリでオブジェクトを直接タップしたり操作したりできるようになります。タスクを実行するために必要な認知の労力が軽減され、感覚的な満足度も上がります。
+<p>アプリでオブジェクトを直接タップしたり操作したりできます。タスクを試行錯誤しながら実行する必要はなく、アプリの満足度も上がります。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_real_objects.png">
 
@@ -49,16 +49,16 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
-<h4 id="make-it-mine">自分らしさを加える</h4>
-<p>ユーザーは自分でカスタマイズすることを好みます。これにより、くつろいだ気分や自分の思いのままできる自由な気分を味わうことができます。デフォルトで実用的で美しいものを取りそろえ、それに加えてメイン タスクの妨げにならない、楽しいカスタマイズも任意で加えられます。
+<h4 id="make-it-mine">アプリに自分らしさをプラス</h4>
+<p>誰もがアプリで自分らしさを出したいと思っています。好きなようにアプリを操作できるからです。実用的で美しい機能があらかじめ用意されており、それに加えてメイン タスクの邪魔にならない、楽しいカスタマイズもできます。
 
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_make_it_mine.png">
 
@@ -67,31 +67,31 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
-<h4 id="get-to-know-me">ユーザーについて知る</h4>
-<p>徐々にユーザーの好みを学習していきます。同じ選択を繰り返す手間をかけず、前に選択したものをすぐに選べるようになります。
+<h4 id="get-to-know-me">ユーザーの好みを学習</h4>
+<p>徐々にユーザーの好みを学習していきます。ユーザーに何度も同じ選択をさせるのではなく、前に選択したものをすぐに選べるようにします。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_get_to_know_me.png">
 
   </div>
 </div>
 
-<h2 id="simplify-my-life">よりシンプルに</h2>
+<h2 id="simplify-my-life">生活をシンプルに</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
-<h4 id="keep-it-brief">常に簡潔に</h4>
-<p>シンプルな言葉を並べた短いフレーズを用います。長い文章は好まれません。</p>
+<h4 id="keep-it-brief">簡潔を心がける</h4>
+<p>シンプルで短いフレーズを用います。長い文章は好まれません。</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_keep_it_brief.png">
 
@@ -100,15 +100,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="pictures-faster-than-words">画像は言葉よりもわかりやすい</h4>
-<p>画像を使ってアイデアを説明してみましょう。ユーザーの興味を引くことができ、言葉よりも効率的です。
+<p>画像を使ってアイデアを説明してみましょう。ユーザーの興味を引くことができ、言葉よりも効果的です。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_pictures.png">
 
@@ -117,15 +117,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="decide-for-me">選択は最小限に、最終決定はユーザーに</h4>
-<p>最初からユーザーにすべて尋ねるのではなく、もっとも適切と思われる項目を提示します。選択肢や決定事項が多すぎると面倒に感じます。
-推測が間違っていた場合に備え、「やり直し」も可能にします。</p>
+<p>最初からユーザーに選ばせるのではなく、適切と思われる項目を提示します。選択肢や決定事項が多すぎるとユーザーは面倒に感じます。
+間違った選択をしても、「やり直し」ができます。</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_decide_for_me.png">
 
@@ -134,15 +134,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
-<h4 id="only-show-when-i-need-it">必要なものを必要なときにだけ表示する</h4>
+<h4 id="only-show-when-i-need-it">必要なものを必要なときに</h4>
 <p>一度に表示される内容が多すぎると疲れてしまいます。タスクや情報はいくつかに小さくまとめてわかりやすくします。
 その時点で必要のないオプションは非表示にして、必要なときだけ表示します。</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_information_when_need_it.png">
 
@@ -151,15 +151,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
-<h4 id="always-know-where-i-am">全体像から現在の位置を示す</h4>
-<p>ユーザーがはっきりと自分の現在の場所を把握できるようにします。アプリのどの場所にいるかを明示し、遷移して画面の関係を認識できるようにします。
-実行しているタスクに対して応答し続けます。</p>
+<h4 id="always-know-where-i-am">現在位置を把握する</h4>
+<p>ユーザーが現在アプリのどこにいるのかがすぐに分かります。アプリ内における現在位置を明示し、遷移を使用して画面間の関係を表示します。
+実行中のタスクにフィードバックを返します。</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_navigation.png">
 
@@ -168,16 +168,16 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
-<h4 id="never-lose-my-stuff">作成したものは失くさない</h4>
-<p>ユーザーが時間をかけて作ったものは保存して、どこからでもアクセスできるようにします。設定、独自のカスタマイズ、電話、タブレット、コンピュータで作成したものを記録します。
-アップグレードも簡単になります。
+<h4 id="never-lose-my-stuff">作成物を失くさない</h4>
+<p>ユーザーが時間をかけて作ったものは保存して、どこからでもアクセスできるようにします。設定、独自のカスタマイズ、および携帯端末、タブレット、コンピュータで作成したものを保存します。
+アップグレードも簡単にできます。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_never_lose_stuff.png">
 
@@ -186,15 +186,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
-<h4 id="looks-same-should-act-same">見た目が同じ場合は機能も同じにする</h4>
-<p>視覚的な違いを際立たせ、ユーザーが機能の違いをはっきり区別できるようにします。同じような外観、同じ入力で機能が異なるようなモードは避けます。
-</p>
+<h4 id="looks-same-should-act-same">見た目が同じなら機能も同じ</h4>
+<p>機能の違いがはっきり分かるように、特徴的なビジュアルにします。
+同じような外観、同じ入力方法なのに機能が異なるということのないようにします。</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_looks_same.png">
 
@@ -203,15 +203,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
-<h4 id="interrupt-only-if-important">割り込みは重要なときにだけ行う</h4>
-<p>優秀な個人秘書のように、重要ではない些細なことでユーザーをわずらわせることのないよう配慮します。集中したいユーザーにとって、重要で一刻を争うようなものでない限り、割り込まれると面倒で不快に感じる可能性があります。
+<h4 id="interrupt-only-if-important">割り込みは必要な場合のみ</h4>
+<p>優秀な個人秘書のように、ユーザーを些細なことでわずらわせないようにします。ユーザーは実行中の操作に専念したいと考えており、重要で一刻を争うようなものでない限り、割り込みは面倒で不快と感じます。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_important_interruption.png">
 
@@ -220,16 +220,16 @@
 
 <h2 id="make-me-amazing">操作を楽しく</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
-<h4 id="give-me-tricks">あらゆる場所に工夫を仕込む</h4>
-<p>自分で理解すると嬉しく感じられます。Android アプリで広く使われている視覚や操作のパターンを生かし、アプリの操作をわかりやすいものにします。
-たとえばスワイプ操作は便利なナビゲーションのショートカットとして使えます。
+<h4 id="give-me-tricks">あらゆる場所に工夫を凝らす</h4>
+<p>理解できれば楽しくなります。Android アプリで広く使われている視覚や操作のパターンを生かし、アプリの操作をわかりやすいものにします。
+たとえばスワイプ操作は、ナビゲーションのショートカットとして使えるので便利です。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_tricks.png">
 
@@ -238,16 +238,16 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
-<h4 id="its-not-my-fault">解決は簡単に</h4>
-<p>ユーザーに修正を促す場合はその方法に注意します。アプリではスマートに問題を解決できるようにします。うまくいかなかったときは解決方法を明確に示し、技術的な詳細を表示する必要はありません。自動的に修正できる問題はユーザーに通知する必要すらありません。
-
-</p>
+<h4 id="its-not-my-fault">ユーザーの責任にしない</h4>
+<p>ユーザーに修正を促す場合はその方法に注意します。ユーザーはアプリをスマートに使いこなしたいと考えています。
+うまくいかなかったときの解決方法は明確でなければなりませんが、技術的に詳細である必要はありません。
+自動的に修正できる問題については、通知も不要です。</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_error.png">
 
@@ -256,15 +256,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="sprinkle-encouragement">操作を促すしかけを散りばめる</h4>
-<p>複雑なタスクは分割し、それぞれ簡単に達成できるようにします。1 つ 1 つにフィードバックすることで、ユーザーの満足度は高まります。
+<p>複雑なタスクは分割し、簡単に達成できるようにします。1 つ 1 つのアクションにフィードバックすることで、ユーザーの満足度は高まります。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_sprinkle_encouragement.png">
 
@@ -273,16 +273,16 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
-<h4 id="do-heavy-lifting-for-me">作業の手間はかけない</h4>
-<p>できると思っていなかったことをできるようにすることで、知識がなくても専門家のような気分を味わってもらえます。たとえば複数の写真効果を組み合わせたショートカットを使うことで、わずかな手順でプロのような写真に仕上げられます。
+<h4 id="do-heavy-lifting-for-me">手間のかかる作業は不要</h4>
+<p>できないと思っていたことができるようになれば、初心者でもエキスパートの気分が味わえます。たとえば複数の写真効果を組み合わせるショートカットを使うことで、わずかな手順でプロのような写真に仕上げられます。
 
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_heavy_lifting.png">
 
@@ -291,15 +291,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="make-important-things-fast">重要なことはすみやかに</h4>
-<p>すべてのアクションが同じ優先度とは限りません。アプリのアクションには優先度を設定し、重要なものはたとえばカメラのシャッター ボタンや音楽プレイヤーの一時停止ボタンのように、簡単に見つけられすぐに使えるようにします。
+<p>すべてのアクションが同じ優先度とは限りません。アプリのアクションに優先度を設定し、カメラのシャッター ボタンや音楽プレイヤーの一時停止ボタンのように重要なものは、簡単に見つけてすぐに使えるようにします。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_make_important_fast.png">
 
diff --git a/docs/html-intl/intl/ja/design/material/index.jd b/docs/html-intl/intl/ja/design/material/index.jd
index 3acd423..3330b0c 100644
--- a/docs/html-intl/intl/ja/design/material/index.jd
+++ b/docs/html-intl/intl/ja/design/material/index.jd
@@ -1,15 +1,14 @@
-page.title=マテリアル デザイン
-page.tags=Material, design
-page.type=design
-page.image=design/material/images/MaterialLight.png
+page.title=Android のマテリアル デザイン
+page.tags=Material,design
+page.image=images/cards/design-material-for-android_2x.jpg
 
 @jd:body
 
 <!-- developer docs box -->
 <a class="notice-developers right" href="{@docRoot}training/material/index.html">
   <div>
-    <h3>デベロッパー文書</h3>
-    <p>マテリアル デザインを使ったアプリの作成</p>
+    <h3>デベロッパー ドキュメント</h3>
+    <p>マテリアル デザインを使用したアプリの作成</p>
   </div>
 </a>
 
@@ -25,7 +24,7 @@
 <a class="notice-developers-video" href="https://www.youtube.com/watch?v=YaG_ljfzeUw">
 <div>
     <h3>ビデオ</h3>
-    <p>紙とインク:重要なマテリアル</p>
+    <p>紙とインク: 重要なマテリアル</p>
 </div>
 </a>
 
@@ -39,27 +38,27 @@
 
 
 
-<p itemprop="description">マテリアル デザインは、視覚や動作と、複数のプラットフォームや端末間でのインタラクション デザインに関する包括的な指針です。
+<p itemprop="description">マテリアル デザインは、複数のプラットフォームや端末の視覚、モーション、インタラクション デザインの包括的な指針です。
 Android はマテリアル デザイン アプリに対応するようになりました。
-Android アプリでマテリアル デザインを使うには、<a href="http://www.google.com/design/spec">マテリアル デザインの仕様</a>で説明されているガイドラインに従い、Android 5.0(API レベル 21)以降の新しいコンポーネントや機能を使用します。
+Android アプリでマテリアル デザインを使うには、<a href="http://www.google.com/design/spec">マテリアル デザインの仕様</a>で定義されているガイドラインに従い、Android 5.0(API レベル 21)以降の新しいコンポーネントや機能を使用します。
 
 </p>
 
-<p>Android にはマテリアル デザインの作成に使うことができる次の要素が用意されています。</p>
+<p>Android にはマテリアル デザインのアプリのビルドに使用できる次の要素が用意されています。</p>
 
 <ul>
   <li>新しいテーマ</li>
-  <li>複雑なビュー用の新しいウィジェット</li>
+  <li>複雑なビューに対応した新しいウィジェット</li>
   <li>カスタムのシャドウとアニメーション用の新しい API</li>
 </ul>
 
-<p>Android でのマテリアル デザインの実装については、<a href="{@docRoot}training/material/index.html">マテリアル デザインを使ったアプリの作成</a>をご覧ください。
+<p>Android でのマテリアル デザインの実装については、<a href="{@docRoot}training/material/index.html">マテリアル デザインを使用したアプリの作成</a>をご覧ください。
 </p>
 
 
 <h3>マテリアル テーマ</h3>
 
-<p>マテリアル テーマはアプリの新しいスタイルである、システム ウィジェットを提供します。システム ウィジェットを使ってカラーパレット、タッチ フィードバックやアクティビティ遷移のためのデフォルトのアニメーションを指定できます。
+<p>マテリアル テーマには、アプリの新しいスタイルであるシステム ウィジェットがあります。このシステム ウィジェットを使うと、システム ウィジェットのカラーパレットを設定したり、タッチ フィードバックやアクティビティ遷移のためのデフォルトのアニメーションを設定したりできます。
 </p>
 
 <!-- two columns -->
@@ -67,13 +66,13 @@
 <div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
   <img src="{@docRoot}design/material/images/MaterialDark.png" width="500" height="238" />
   <div style="width:140px;margin:0 auto">
-  <p style="margin-top:8px">暗色マテリアル テーマ</p>
+  <p style="margin-top:8px">暗い色のマテリアル テーマ</p>
   </div>
 </div>
 <div style="float:left;width:250px;margin-right:0px;">
   <img src="{@docRoot}design/material/images/MaterialLight.png" width="500" height="238" />
   <div style="width:140px;margin:0 auto">
-  <p style="margin-top:8px">明色マテリアル テーマ</p>
+  <p style="margin-top:8px">明るい色のマテリアル テーマ</p>
   </div>
 </div>
 <br style="clear:left"/>
@@ -85,19 +84,19 @@
 
 <h3>リストとカード</h3>
 
-<p>Android はマテリアル デザインのスタイルとアニメーションを含むカードとリストを表示する新しい 2 つのウィジェットを提供しています。
+<p>Android はマテリアル デザインのスタイルとアニメーションを含むカードとリストを表示する、次のような新しい 2 つのウィジェットを提供しています。
 </p>
 
 <!-- two columns -->
 <div style="width:700px;margin-top:25px;margin-bottom:20px">
 <div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
   <img src="{@docRoot}design/material/images/list_mail.png" width="500" height="426" />
-  <p><code>RecyclerView</code> ウィジェットは <code>ListView</code> のさらに柔軟なバージョンで、さまざまなレイアウト タイプをサポートしてパフォーマンスを向上します。
-</p>
+  <p>新しい <code>RecyclerView</code> ウィジェットは <code>ListView</code>
+ に比べてさらに柔軟に機能を追加できるようになっており、さまざまなレイアウト タイプをサポートしてパフォーマンスを向上させます。</p>
 </div>
 <div style="float:left;width:250px;margin-right:0px;">
   <img src="{@docRoot}design/material/images/card_travel.png" width="500" height="426" />
-  <p>新しい <code>CardView</code> ウィジェットでは、外観や使用感が一貫しているカード内に重要な情報を表示できます。
+  <p>新しい <code>CardView</code> ウィジェットではカードの外観や操作性が統一され、カード内の重要な情報を表示できるようになりました。
 </p>
 </div>
 <br style="clear:left"/>
@@ -109,12 +108,12 @@
 
 <h3>シャドウの表示</h3>
 
-<p>X と Y プロパティに加え、Android のビューに Z プロパティが追加されました。
-この新しいプロパティはビューのエレベーションを表し、次を指定します。</p>
+<p>Android のビューに、X と Y のプロパティに加えて Z プロパティが追加されました。
+この新しいプロパティはビューのエレベーションを表し、次の要素を指定します。</p>
 
 <ul>
-<li>シャドウのサイズ: Z 値が高いビューほどキャストするシャドウのサイズが大きくなります。</li>
-<li>表示される順序: Z 値が高いビューほど他のビューより上位に表示されます。</li>
+<li>シャドウのサイズ: ビューの Z 値が高いほどシャドウのサイズが大きくなります。</li>
+<li>描画順序: ビューの Z 値が高いほど他のビューの前面に表示されます。</li>
 </ul>
 
 <div style="width:290px;margin-left:35px;float:right">
@@ -136,33 +135,33 @@
 
 <h3>アニメーション</h3>
 
-<p>新しいアニメーション API を使って UI コントロールのタッチ フィードバック、ビューの状態遷移、アクティビティ遷移のカスタム アニメーションを作成できます。
+<p>新しいアニメーション API を使って、UI コントロールのタッチ フィードバック、ビューの状態変化、アクティビティ間の遷移時のカスタム アニメーションを作成できます。
 </p>
 
-<p>これらの API で次の操作を実行できます。</p>
+<p>この API で次のようなことができます。</p>
 
 <ul>
 <li style="margin-bottom:15px">
-<strong>タッチ フィードバック</strong> アニメーションを使ってビューのタップイベントに応答します。
+<strong>タッチ フィードバック</strong> アニメーションでビューのタップ イベントに応答する。
 </li>
 <li style="margin-bottom:15px">
-<strong>円形状の出現</strong>アニメーションを使ってビューを表示 / 非表示にします。
+<strong>円形状の出現</strong>アニメーションを使ってビューを表示したり、非表示にしたりする。
 </li>
 <li style="margin-bottom:15px">
-カスタムの<strong>アクティビティ遷移</strong>アニメーションを使ってアクティビティを切り替えます。
+カスタムの<strong>アクティビティ遷移</strong>アニメーションを使ってアクティビティを切り替える。
 </li>
 <li style="margin-bottom:15px">
-<strong>曲線モーション</strong>を使ってより自然なアニメーションを作成します。
+<strong>曲線モーション</strong>を使ってより自然なアニメーションを作成する。
 </li>
 <li style="margin-bottom:15px">
-<strong>ビューの状態遷移</strong>アニメーションを使って 1 つ以上のビュー プロパティの遷移を表現します。
+<strong>ビューの状態変化</strong>アニメーションを使って 1 つ以上のビュー プロパティを変化させるアニメーションを作成する。
 </li>
 <li style="margin-bottom:15px">
-ビューの状態遷移間のアニメーションを<strong>状態リスト ドローアブル</strong>で表示します。
+ビューの状態を変化させるアニメーションを<strong>状態リスト ドローアブル</strong>で表示します。
 </li>
 </ul>
 
-<p>タッチ フィードバック アニメーションはボタンなどの複数の標準ビューに組み込まれます。新しい API を使ってこれらのアニメーションをカスタマイズし、それらをカスタム ビューに追加できます。
+<p>タッチ フィードバック アニメーションはボタンなどの複数の標準ビューに組み込まれています。新しい API を使うと、これらのアニメーションをカスタマイズして、カスタム ビューに追加できます。
 </p>
 
 <p>詳細については、<a href="{@docRoot}training/material/animations.html">カスタム アニメーションの定義</a>をご覧ください。
@@ -171,12 +170,12 @@
 
 <h3>ドローアブル</h3>
 
-<p>次の新しいドローアブル機能を使ってマテリアル デザイン アプリを実装できます。</p>
+<p>次の新しいドローアブル機能を使用してマテリアル デザイン アプリを実装できます。</p>
 
 <ul>
-<li><strong>ベクター型ドローアブル</strong>は鮮明度を失わずに拡張でき、単色のアプリ内アイコンに最適です。
+<li><strong>ベクター型ドローアブル</strong>は定義を失わずにスケールできるので、単色のアプリ アイコンに最適です。
 </li>
-<li><strong>ドローアブルによる着色</strong>を使ってビットマップをアルファマスクとして定義し、実行時にそれらのビットマップに色付けすることができます。
+<li><strong>ドローアブルによる着色</strong>を使ってビットマップをアルファ マスクとして定義し、実行時にそのビットマップに色付けできます。
 </li>
 <li><strong>色の抽出</strong>を使ってビットマップ画像から代表色を自動的に抽出できます。
 </li>
diff --git a/docs/html-intl/intl/ja/design/patterns/compatibility.jd b/docs/html-intl/intl/ja/design/patterns/compatibility.jd
new file mode 100644
index 0000000..c035a15
--- /dev/null
+++ b/docs/html-intl/intl/ja/design/patterns/compatibility.jd
@@ -0,0 +1,70 @@
+page.title=下方互換性
+page.tags="support"
+page.metaDescription=Android 4.x がバージョンの古いハードウェアや OS 向けにデザインされた UI にどのように対応するかについての注意事項。
+@jd:body
+
+<a class="notice-developers" href="{@docRoot}training/basics/supporting-devices/index.html">
+  <div>
+    <h3>デベロッパー ドキュメント</h3>
+    <p>異なる端末のサポート</p>
+  </div>
+</a>
+
+<p>Android 3.0 での大きな変更点には、以下のような点があります。</p>
+<ul>
+<li>仮想コントロール(Back、Home、Recents)のナビゲーション処理の導入によるナビゲーション ハードウェア キー(Back、Menu、Search、Home)の廃止
+</li>
+<li>アクションバーでメニュー項目を使用する際の表現パターンの強化</li>
+</ul>
+<p>Android 4.0 では、こういったタブレット向けの変更点が携帯端末プラットフォームにも導入されました。</p>
+
+<h2 id="older-hardware">古いハードウェアやアプリへの Android 4.0 の対応</h2>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>仮想ナビゲーション コントロールのある携帯端末</h4>
+<p>Android 3.0 以降をターゲットにした Android アプリは、アクションをアクションバーに表示します。アクションバーに収まらないアクションや、トップレベルに表示するほど重要ではないアクションは、アクション オーバーフローに表示されます。
+
+</p>
+<p>ユーザーは、アクションバーをタップすることで、アクション オーバーフローにアクセスできます。</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_virtual_nav.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>物理ナビゲーション キーのある携帯端末</h4>
+<p>従来型のナビゲーション ハードウェア キーのある Android 携帯端末では、画面下部に仮想ナビゲーション バーは表示されません。
+代わりに、メニュー ハードウェア キーからアクション オーバーフローを利用できます。そのため、ポップアップするアクションは先ほどの例と同じように利用できますが、画面の下部に表示される点が異なります。
+</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_physical_buttons.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>仮想ナビゲーション コントロールのある携帯端末でのレガシー アプリ</h4>
+<p>Android 2.3 以前をターゲットにビルドされたアプリを仮想ナビゲーション コントロールのある携帯端末で実行すると、仮想ナビゲーション バーの右側にアクション オーバーフロー コントロールが表示されます。
+コントロールをタップすると、アプリのアクションを従来型の Android メニュー形式で表示できます。
+</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_legacy_apps.png">
+
+  </div>
+</div>
diff --git a/docs/html-intl/intl/ja/design/patterns/confirming-acknowledging.jd b/docs/html-intl/intl/ja/design/patterns/confirming-acknowledging.jd
index 35ba821..c2dfb84 100644
--- a/docs/html-intl/intl/ja/design/patterns/confirming-acknowledging.jd
+++ b/docs/html-intl/intl/ja/design/patterns/confirming-acknowledging.jd
@@ -2,69 +2,69 @@
 page.tags=dialog,toast,notification
 @jd:body
 
-<p>状況に応じて、ユーザーがアプリでアクションを呼び出したときに、テキストを使ってそのアクションを<em>確認</em>したり<em>通知</em>したりするのは良い方法です。</p>
+<p>アプリでアクションを呼び出すときに、テキストでそのアクションを<em>確認</em>または<em>通知</em>するとよい場合があります。</p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <img src="{@docRoot}design/media/confirm_ack_confirming.png">
-    <p><strong>確認</strong>とは、呼び出したアクションを続けるかどうかをユーザーに確認してもらうことです。場合によって、確認は考慮する必要があるアクションに関連する警告や重要情報とともに表示されることがあります。</p>
+    <p><strong>確認</strong>とは、呼び出したアクションを本当に続行してもよいかどうかをユーザーにたずねることです。検討を要するアクションがあれば、それに関する警告や重要情報とともに表示されることもあります。</p>
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/confirm_ack_acknowledge.png">
-    <p><strong>通知</strong>とは、呼び出したアクションが完了したことをユーザーにお知らせするテキストを表示することです。これによって、システムが実行している暗黙的な処理の不明瞭さをなくすことができます。場合によって、通知はアクションを元に戻すオプションとともに表示されることがあります。</p>
+    <p><strong>通知</strong>とは、呼び出したアクションが完了したことをユーザーに知らせるテキストを表示することです。システムにより実行中であり、ユーザーには表示されない操作を確認できます。アクションを元に戻すオプションとともに表示されることもあります。</p>
   </div>
 </div>
 
-<p>このような方法でユーザーに情報を伝えると、実行された処理やこれから実行される処理についての不明瞭さを軽減できます。確認や通知によって、後悔するような間違いをするのを防ぐこともできます。</p>
+<p>このような機能を使用すれば、実行済みの処理やこれから実行される処理を明確に把握できます。確認や通知を表示することで、後悔するような間違いを防ぐこともできます。</p>
 
-<h2>ユーザーのアクションを確認または通知する場合</h2>
-<p>すべてのアクションに確認または通知が必要なわけではありません。デザインを決定する際の指針として次のチャートを使用してください。</p>
+<h2>ユーザーのアクションを確認または通知するタイミング</h2>
+<p>すべてのアクションに確認または通知が必要なわけではありません。確認や通知が必要かどうかを判断するには、次のチャートを使用してください。</p>
 <img src="{@docRoot}design/media/confirm_ack_flowchart.png">
 
 <h2>確認</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>例: Google Play ブックス</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_books.png">
-    <p>この例では、ユーザーが Google Play ライブラリから書籍を削除することを要求しています。その書籍が今後端末で使えなくなることを知ってもらうことが重要であるため、このアクションを確認する<a href="{@docRoot}design/building-blocks/dialogs.html#alerts">アラート</a>が表示されます。</p>
-    <p>確認のダイアログを作成するときは、要求されたアクションがすぐわかるようなタイトルにします。</p>
+    <p>この例では、ユーザーは Google Play ライブラリから書籍を削除するよう要求しています。この書籍が今後いずれの端末でも使用できなくなるということを知らせる必要があるため、このアクションを確認する<a href="{@docRoot}design/building-blocks/dialogs.html#alerts">アラート</a>が表示されます。</p>
+    <p>確認ダイアログは、要求されたアクションをタイトルに記述するなどして、わかりやすく作成します。</p>
   </div>
-  <div class="layout-content-col span-7">
-    <h4>例: Android Beam</h4>
+  <div class="col-7">
+    <h4>例: Android ビーム</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_beam.png">
-    <p>確認は、必ずしも 2 つのボタンの付いたアラートで示す必要はありません。Android Beam を開始した後に、ユーザーには共有するコンテンツ(この例では写真)にタップするように求めるメッセージが表示されます。共有を続行しない場合は、電話を離すだけです。</p>
+    <p>確認は、必ずしも 2 つのボタンが付いたアラートで行う必要はありません。Android ビームを開始した後、共有するコンテンツ(この例では写真)をタップするようメッセージが表示されます。共有を続行しない場合は、携帯端末を離すだけです。</p>
   </div>
 </div>
 
 <h2>通知</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-    <h4>例: 放置した Gmail 下書きの保存</h4>
+<div class="cols">
+  <div class="col-6">
+    <h4>例: 途中まで書いた Gmail の下書きの保存</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_draftsave.png">
-    <p>この例では、ユーザーが Gmail 作成画面から前の画面に戻ったり、上位画面に移動したりするときに、予測しないことが起こる可能性があるため、現在の下書きが自動的に保存されます。トースト形式の通知によってその状態が明らかになります。この通知は数秒後にフェードします。</p>
+    <p>この例では、ユーザーが Gmail 作成画面から前の画面に戻ったり、画面の上部に移動したりすると、予測しないことが起こることもあるため、現在の下書きが自動的に保存されています。この動作はトースト形式で通知され、数秒後に消えます。</p>
     <p>この場合、保存操作はユーザーではなくアプリによって行われるため、元に戻す操作は適切ではありません。また、下書きのリストに移動するだけでメッセージの作成をすぐに再開できます。</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <h4>例: Gmail スレッドの削除</h4>
     <img src="{@docRoot}design/media/confirm_ack_draft_deleted.png">
-    <p>ユーザーが Gmail のリストからスレッドを削除した後に、元に戻すオプションとともに通知が表示されます。ユーザーがリストのスクロールなど関連しないアクションを実行するまで通知は表示されたままになります。</p>
+    <p>ユーザーが Gmail のリストから会話を削除した後に、元に戻すオプションとともに認定が表示されます。リストのスクロールなど無関係なアクションをユーザーが実行するまで、通知の表示は消えません。</p>
   </div>
 </div>
 
 <h2>確認または通知を行わない場合</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>例: +1 操作</h4>
     <img style="padding: 33px 0 30px;" src="{@docRoot}design/media/confirm_ack_ex_plus1.png">
-    <p><strong>確認は不要</strong>。ユーザーが誤って +1 ボタンをタップしても、大きな問題にはなりません。ボタンをもう一度タップすればアクションを元に戻すことができます。</p>
-    <p><strong>通知は不要</strong>。+1 ボタンがバウンスし、赤に変わります。これは非常にわかりやすいシグナルです。</p>
+    <p><strong>確認は不要です</strong>。ユーザーが誤って [+1] ボタンをタップしても、あまり問題ではありません。ボタンをもう一度タップすれば、アクションを元に戻すことができるからです。</p>
+    <p><strong>通知は不要です</strong>。[+1] ボタンがバウンドして赤に変わります。これは非常にわかりやすいシグナルです。</p>
   </div>
-  <div class="layout-content-col span-7">
-    <h4>例: ホームスクリーンからアプリを削除</h4>
+  <div class="col-7">
+    <h4>例: ホームスクリーンからアプリを削除する場合</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_removeapp.png">
-    <p><strong>確認は不要</strong>。これは意図的なアクションです。ユーザーはアイテムを比較的大きな分離されたターゲットにドラッグ アンド ドロップする必要があります。そのため、不測の問題が発生することはほとんどありません。ユーザーがこの決定を元に戻したい場合は、ほんの数秒で元に戻すことができます。</p>
-    <p><strong>通知は不要</strong>。ユーザーは自分でアプリをドラッグして削除するため、アプリがホームスクリーンから消えることがわかっています。</p>
+    <p><strong>確認は不要です</strong>。このアクションは賢明に設計されており、ユーザーはアイテムを比較的離れたところにある大きいターゲットにドラッグ アンド ドロップする必要があります。そのため、アクシデントが発生することはほとんどありません。しかもこの操作を取り消したい場合は、ほんの数秒で元に戻すことができるようになっています。</p>
+    <p><strong>通知は不要です</strong>。ユーザーが自分でアプリをドラッグして削除しているので、アプリがホームスクリーンから消えるのがわかっているからです。</p>
 
   </div>
 </div>
diff --git a/docs/html-intl/intl/ja/design/patterns/navigation.jd b/docs/html-intl/intl/ja/design/patterns/navigation.jd
index dbb6b04..079ad25 100644
--- a/docs/html-intl/intl/ja/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/ja/design/patterns/navigation.jd
@@ -1,213 +1,213 @@
-page.title=Back と Up を使用したナビゲーション
+page.title=Back ボタンと Up ボタンを使用したナビゲーション
 page.tags="navigation","activity","task","up navigation","back navigation"
 page.image=/design/media/navigation_between_siblings_gmail.png
 @jd:body
 
 <a class="notice-developers" href="{@docRoot}training/implementing-navigation/index.html">
   <div>
-    <h3>デベロッパー文書</h3>
-    <p>効果的なナビゲーションを実装する</p>
+    <h3>デベロッパー ドキュメント</h3>
+    <p>効果的なナビゲーションの実装</p>
   </div>
 </a>
 
-<p itemprop="description">一貫したナビゲーションは全体的なユーザーの操作性を向上するために欠かせない重要な要素です。一貫性がなく予測できない動作ほどユーザーにとって不快なものはありません。
-Android 3.0 では、全体的なナビゲーション動作が大きく変更されました。
-注意深く Back と Up のガイドラインに従うことで、アプリのナビゲーションをユーザーにとって予測可能で信頼できるものにすることができます。
+<p itemprop="description">使いやすいアプリでは、ナビゲーションに統一性があります。統一性がなく、動作の読めないアプリほど使いにくいものはありません。
+Android 3.0 では、全体的なナビゲーション動作が大きく変わりました。
+Back ボタンと Up ボタンのガイドラインに従えば、ユーザーにとってわかりやすく、信頼できるナビゲーションを実装できます。
 </p>
-<p>Android 2.3 以前のアプリ内でのナビゲーションはシステムの <em>Back</em> ボタンを使って行われてきました。Android 3.0 よりアクションバーが導入され、第 2 のナビゲーション メカニズムとして <em>Up</em> ボタンが登場しました。このボタンはアプリアイコンと左向きのキャラットで構成されています。
-
+<p>Android 2.3 以前のアプリのナビゲーションはシステムの <em>Back</em> ボタンで行っていました。
+Android 3.0 よりアクションバーが導入され、第 2 のナビゲーション メカニズムとして <em>Up</em> ボタンが登場しました。このボタンはアプリアイコンと左向きのキャレットで表されています。
 </p>
 
 <img src="{@docRoot}design/media/navigation_with_back_and_up.png">
 
-<h2 id="up-vs-back">Up と Back</h2>
+<h2 id="up-vs-back">Up ボタンと Back ボタンの違い</h2>
 
 <p>Up ボタンは、画面間の階層関係に基づいてアプリ内を移動するために使います。
-たとえば、画面 A がアイテムのリストを表示し、アイテムを選択すると(そのアイテムの詳細を表示する)画面 B に移動する場合、画面 B には画面 A に戻るための Up ボタンを用意する必要があります。
+たとえば、画面 A でアイテムのリストを表示し、アイテムを選択すると(そのアイテムの詳細を表示する)画面 B に移動する場合、画面 B には画面 A に戻るための Up ボタンが必要です。
 
 </p>
-<p>画面がアプリの最上位(つまり、アプリのホーム)であれば、Up ボタンを表示すべきではありません。
+<p>画面がアプリのトップ レベル(アプリのホーム)であれば、Up ボタンを表示する必要はありません。
 </p>
 
-<p>システムの Back ボタンはユーザーが最近使用した画面を、さかのぼって順番に移動する場合に使用されます。
-通常このナビゲーションはアプリの階層ではなく、画面を表示した順番に基づいています。
+<p>システムの Back ボタンは、最近使用した画面をさかのぼって順番に移動する場合に使用します。
+通常、このナビゲーションはアプリの階層ではなく、画面を表示した順番に基づいています。
 </p>
 
-<p>前に表示していた画面が現在の画面の親階層となる場合は、Back ボタンを押すとUp ボタンを押したときと同じ結果になります &mdash; これはよくある動作です。
+<p>前に表示していた画面が現在の画面の親階層となる場合は、Back ボタンを押すと Up ボタンを押したときと同じ結果になります &mdash; これは一般的な動作です。
 
-ただし、Up ボタンではユーザーが確実にアプリ内に留まるのに対して、Back ボタンを使えばホームスクリーンに、さらには別のアプリに戻ることさえできます。
+ただし、Up ボタンではユーザーの移動がアプリ内に限られるのに対して、Back ボタンではホーム画面や、別のアプリにも戻れます。
 </p>
 
 <img src="{@docRoot}design/media/navigation_up_vs_back_gmail.png">
 
-<p>Back ボタンは、画面間を直接ナビゲーションするだけでなく、次のような動作もサポートします。
+<p>Back ボタンは、画面間を直接ナビゲーションするだけでなく、次のような動作にも対応しています。
 </p>
 <ul>
 <li>フローティング ウィンドウ(ダイアログ、ポップアップ)を閉じる</li>
 <li>コンテキスト アクションバーを閉じて、選択したアイテムのハイライト表示を解除する</li>
-<li>オンスクリーン キーボード(IME)を非表示にする</li>
+<li>画面上のキーボード(IME)を非表示にする</li>
 </ul>
 <h2 id="within-app">アプリ内でのナビゲーション</h2>
 
-<h4>複数のエントリ ポイントのある画面のナビゲーション</h4>
-<p>画面にアプリ階層内の正確な位置がなく、アプリ内の他のどの画面からでもアクセスできる設定画面などのように複数のエントリ ポイントからアクセスできる場合があります。この場合、Up ボタンは参照元の画面に戻ることを選択する必要があります。これは Back も同様です。
-&mdash;
+<h4>エントリ ポイントが複数ある画面へのナビゲート</h4>
+<p>設定画面のように、アプリ内の他のどの画面からでもアクセスでき、アプリ階層内に定位置がなく、複数のエントリ ポイントからアクセスできる画面もあります。
 
+この場合、Up ボタンは Back ボタンと同じように元の画面に戻ります。
 </p>
-<h4>画面内でビューを変更する</h4>
-<p>画面のビュー オプションを変更しても Up と Back の動作は変わりません。画面はアプリの階層内の同じ位置に留まり、新しいナビゲーション履歴は作成されません。
+<h4>画面内でのビューの変更</h4>
+<p>画面のビュー オプションを変更しても Up ボタンと Back ボタンの動作は変わりません。画面はアプリの階層内の同じ位置にあり、新しいナビゲーション履歴は作成されません。
 </p>
 <p>このようなビューの変更には次のようなものがあります。</p>
 <ul>
-<li>タブや左右のスワイプを使ってビューを切り替える</li>
-<li>ドロップダウン(折りたたみタブ)を使ってビューを切り替える</li>
-<li>リストにフィルタをかける</li>
-<li>リストをソートする</li>
-<li>表示の方法を変える(ズームなど)</li>
+<li>タブや左右のスワイプを使ったビューの切り替え</li>
+<li>ドロップダウン(折りたたみタブ)を使ったビューの切り替え</li>
+<li>リストへのフィルタの適用</li>
+<li>リストの並び替え</li>
+<li>表示方法の変更(ズームなど)</li>
 </ul>
 <h4>兄弟画面間のナビゲーション</h4>
-<p>アプリでアイテムのリストから 1 つのアイテム詳細画面に移動するとき、そのアイテムからリスト内の前後にある別のアイテムへのナビゲーションをサポートするのが望ましいことがよくあります。
+<p>アプリでアイテムのリストから選択して、あるアイテムの詳細画面に移動するとき、そのアイテムからリストの前後にある別のアイテムにナビゲーションできるようにすると使いやすくなる場合があります。
 
-たとえば、Gmail では、スワイプすることで、ある会話から同じ受信トレイの新しいまたは古い会話へ左右に簡単に移動できます。
-画面内でビューを変更する場合と同じように、このようなナビゲーションによって Up または Back の動作は変わりません。
+たとえば、Gmail で左か右にスワイプすると、同じ受信トレイのある会話から新しい会話や古い会話に簡単に移動できます。
+画面内でビューを変更する場合と同様に、このナビゲーションでも Up ボタンまたは Back ボタンの動作は変わりません。
 </p>
 
 <img src="{@docRoot}design/media/navigation_between_siblings_gmail.png">
 
-<p>しかし、参照リストで結び付けられていない関連詳細ビュー間をブラウジングする場合 &mdash; たとえば Play ストアで同じデベロッパーのアプリや同じアーティストのアルバム間をブラウジング場合、その動作はこれとは明らかに異なります。
+<p>ただし、参照リストで結び付けられていない関連詳細ビュー間をブラウジングする場合は例外です。たとえば Play Store で同じデベロッパーのアプリや同じアーティストのアルバム間をブラウジングする場合です。
 
 この場合、各リンクをたどると履歴が作成され、Back ボタンで以前に表示した各画面に戻ることになります。
-Up では常にこれらの関連画面をバイパスして、直前に表示したコンテナ画面に移動します。
+Up ボタンを使用するとこれらの関連画面をバイパスして、直前に表示したコンテナ画面に移動します。
 </p>
 
 <img src="{@docRoot}design/media/navigation_between_siblings_market1.png">
 
-<p>Up の動作を詳細ビューの知識に基づいてより使いやすくすることができます。
-前述の Play ストアの例で、ユーザーが直前に表示した書籍から映画版の詳細に移動したとします。
-その場合、Up でユーザーが前に表示していないコンテナ(映画)に戻ることができます。
+<p>詳細ビューを応用すれば、Up ボタンを使いやすくできます。
+前述の Play Store の例で、直前に表示した書籍から映画版の詳細に移動したとします。
+その場合、Up ボタンを使用すると前に表示していないコンテナ(映画)に戻ることができます。
 </p>
 
 <img src="{@docRoot}design/media/navigation_between_siblings_market2.png">
 
-<h2 id="into-your-app">ホームスクリーンのウィジェットと通知によるアプリへのナビゲーション</h2>
+<h2 id="into-your-app">ホーム画面のウィジェットと通知を使用したアプリへのナビゲーション</h2>
 
-<p>ホームスクリーンのウィジェットや通知を使ってユーザーがアプリ階層内の深い階層にある画面に直接移動できるようにします。
-たとえば、Gmail の受信ボックスのウィジェットと新しいメッセージ通知はどちらも受信トレイ画面をバイパスし、会話ビューを直接表示できます。
+<p>ホーム画面のウィジェットや通知を使用して、アプリの深い階層にある画面に直接移動できるようにします。
+たとえば、Gmail の受信トレイのウィジェットと新しいメッセージ通知をタップすると、どちらも受信トレイ画面をバイパスし、会話ビューを直接表示できます。
 </p>
 
 <p>この両方の機能で、Up ボタンを次のように処理します。</p>
 
 <ul>
-<li><em>通常アプリ内の特定の画面から移動先画面に移動する場合</em>、Up でその画面に移動します。
+<li><em>通常どおりにアプリの特定の画面から移動先画面に移動する場合</em>、Up ボタンを使用するとその画面に移動します。
 </li>
-<li><em>それ以外の場合は</em>、Up でアプリの最上位(「ホーム」)画面に移動します。</li>
+<li><em>それ以外の場合は</em>、Up ボタンを使用するとアプリのトップレベル([ホーム])の画面に移動します。</li>
 </ul>
 
-<p>Back ボタンの場合は、アプリの最上位画面への完全な上向きナビゲーション パスをタスクのバックスタックに挿入してナビゲーションをより予測可能なものにする必要があります。
-この設定によって、アプリにどのように入ったか忘れたユーザーは、終了前のアプリの最上位画面に移動できます。
+<p>Back ボタンの場合は、アプリのトップ レベルの画面に直接ナビゲートできるパスをタスクのバック スタックに挿入して、わかりやすいナビゲーションにします。
+こうすることで、アプリをどのように起動したか覚えていなくても、トップ レベルの画面に移動してから終了できます。
 
 </p>
 
-<p>たとえば Gmail のホームスクリーンのウィジェットには、その作成画面に直接移動するボタンがあります。
-作成画面の Up または Back で受信トレイが表示され、そこから Back ボタンでホームに移動します。
+<p>たとえば Gmail のホーム画面のウィジェットには、作成画面に直接移動するボタンがあります。
+作成画面の Up ボタンまたは Back ボタンで受信トレイが表示され、そこから Back ボタンでホームに移動します。
 </p>
 
 <img src="{@docRoot}design/media/navigation_from_outside_back.png">
 
 <h4>間接通知</h4>
 
-<p>アプリで複数のイベントに関する情報を同時に表示する必要がある場合、1 つの通知を使ってユーザーをインタースティシャル画面に導くことができます。
-この画面にはこれらのイベントがまとめてあり、アプリのさらに深い階層に移動するためのパスが示されます。このスタイルの通知を<em>間接通知</em>と呼びます。
+<p>アプリで複数のイベントに関する情報を同時に表示する必要がある場合、通知を 1 つにまとめてそこからインタースティシャル画面に遷移させることができます。
+この画面にはこれらのイベントの要約が表示されており、アプリのさらに深い階層に移動するパスが示されます。
+このスタイルの通知を<em>間接通知</em>と呼びます。
+</p>
+
+<p>標準(直接)通知とは異なり、間接通知のインタースティシャル画面で Back ボタンを押すと、通知がトリガーされた画面に戻ります。バックスタックには追加の画面は挿入されません。
+
+ユーザーがインタースティシャル画面からアプリに移動すると、Up ボタンと Back ボタンは前述の標準通知と同様に動作します。つまり、インタースティシャル画面に戻るのではなくアプリ内で遷移します。
 
 </p>
 
-<p>標準(直接)通知とは異なり、間接通知のインタースティシャル画面から Back を押すとユーザーは通知がトリガーされた地点に戻ります &mdash; バックスタックには追加の画面は挿入されません。
+<p>たとえば Gmail がカレンダーから間接通知を受け取ったとします。この通知をタップするとインタースティシャル画面が開き、複数の異なるイベントのリマインダーが表示されます。
 
-ユーザーがインタースティシャル画面からアプリに移動すると、Up および Back は前述した標準通知の場合と同様に動作します。つまりインタースティシャル画面に戻るのではなくアプリ内でナビゲーションします。
+インタースティシャル画面で Back ボタンをタップすると Gmail に戻ります。特定のイベントをタップすると、インタースティシャル画面からカレンダー アプリに移動し、そのイベントの詳細が表示されます。
 
-</p>
-
-<p>たとえば Gmail のユーザーがカレンダーから間接通知を受け取ったとします。この通知をタップするとインタースティシャル画面が開き、複数の異なるイベントに関するリマインダーが表示されます。
-
-インタースティシャル画面で Back をタップすると Gmail に戻ります。特定のイベントをタップすると、インタースティシャル画面から完全なカレンダー アプリに移動し、そのイベントの詳細が表示されます。
-
-イベントの詳細から、Up および Back を使うとカレンダーの最上位ビューが表示されます。</p>
+イベントの詳細画面で Up ボタンや Back ボタンを使うと、カレンダーのトップ ビューに移動します。</p>
 
 <img src="{@docRoot}design/media/navigation_indirect_notification.png">
 
 <h4>ポップアップ通知</h4>
 
-<p><em>ポップアップ通知</em>は通知ドロワーをバイパスしてユーザーの前に直接表示されます。
-ポップアップ通知はめったに使われません。<strong>タイムリーな応答が要求され、ユーザーのコンテキストの中断が必要な場合に使われます</strong>。
-たとえばトークでは、このスタイルを使って友人からのビデオチャットへの参加に関する招待状についてユーザーに通知します。というのも、この招待状は数秒後に自動的に期限切れになるからです。
+<p><em>ポップアップ通知</em>は通知ドロワーをバイパスし、直接表示される通知です。
+ポップアップ通知はほとんど使われません。<strong>タイムリーな応答が要求され、ユーザーの操作の中断が必要な場合にのみ使うべきです</strong>。
+たとえばトークでは、友人からのビデオチャットへの招待が数秒後に自動的に期限切れとなる場合、このスタイルを使ってユーザーに通知します。
 
 </p>
 
-<p>ナビゲーション動作の点から、ポップアップ通知は間接通知のインタースティシャル画面の動作に厳密に従います。
-Back でポップアップ通知は閉じます。ユーザーがポップアップから通知元のアプリに移動すると、Up と Back は標準通知のルールに従い、アプリ内でナビゲーションします。
+<p>ナビゲーションでは、間接通知のインタースティシャル画面の動作に慎重に従ってポップアップ通知を行います。
+Back ボタンでポップアップ通知を閉じます。ポップアップから通知対象のアプリに移動すると、Up ボタンと Back ボタンは標準通知のルールに従って、そのアプリ内で通常のナビゲーションを実行します。
 
 </p>
 
 <img src="{@docRoot}design/media/navigation_popup_notification.png">
 
-<h2 id="between-apps">アプリ間のナビゲーション</h2>
+<h2 id="between-apps">アプリ間ナビゲーション</h2>
 
-<p>Android システムの基本的な利点の 1 つにアプリ同士がそれぞれをアクティブにできる機能があります。これによりユーザーは特定のアプリから別のアプリへ直接移動できます。
-たとえば写真を撮影する必要があるアプリでは、カメラアプリをアクティブにすることができます。カメラアプリは写真を参照元のアプリに戻します。これはデベロッパーにとっては他のアプリのコードを簡単に利用できるという点で、またユーザーにとっては通常実行するアクションに対して一貫した操作を実行できるという点で大きなメリットです。
+<p>Android システムの基本的な利点の 1 つに、アプリが別のアプリを起動できる機能があります。これを使用すると、あるアプリから別のアプリへ直接移動できます。
+たとえば、写真をキャプチャするアプリで、カメラアプリを起動できます。カメラアプリは写真を起動元のアプリに返します。
 
-
+デベロッパーにとっては他のアプリのコードを簡単に利用できるという点で、ユーザーにとってはよく実行するアクションを常に同じ操作で実行できるという点で大きなメリットです。
 
 </p>
 
-<p>アプリ間のナビゲーションを理解するには、次に説明する Android フレームワークの動作を理解することが重要です。
+<p>アプリ間ナビゲーションを理解するには、次に説明する Android フレームワークの動作を理解する必要があります。
 </p>
 
 <h4>アクティビティ、タスク、インテント</h4>
 
-<p>Android における<strong>アクティビティ</strong>とは情報の画面と、ユーザーが実行できるすべての関連アクションを定義するアプリケーション コンポーネントです。
-アプリはアクティビティのコレクションで、作成したアクティビティと他のアプリから再利用するアクティビティの両方で構成されています。
+<p>Android における<strong>アクティビティ</strong>とは、情報を表示する画面と、実行できるすべての関連アクションを定義するアプリケーション コンポーネントのことです。
+アプリはアクティビティの集まりで構成され、作成したアクティビティと他のアプリから再利用するアクティビティで構成されています。
 </p>
 
-<p><strong>タスク</strong>とは目標を実現するためにユーザーが従う一連のアクティビティです。1 つのタスクで 1 つのアプリだけのアクティビティを利用することも、複数のアプリのアクティビティを利用することもできます。
+<p><strong>タスク</strong>とは目的の動作を遂行するために実行する、一連のアクティビティのことです。1 つのタスクで 1 つのアプリだけのアクティビティを利用することも、複数のアプリのアクティビティを利用することもできます。
 
 </p>
 
-<p><strong>インテント</strong>とは、あるアプリがアクションの実行に関して別のアプリのサポートが必要であることを示すメカニズムです。
-アプリのアクティビティでそれらのアプリが対応できるインテントを示すことができます。
-「共有」などの一般的なインテントの場合、ユーザーはその要求を実現できる多くのアプリをインストールしている場合があります。
+<p><strong>インテント</strong>とは、アプリがあるアクションを実行するために、別のアプリにアシストを要求するためのシグナルを出すメカニズムです。
+アプリのアクティビティは、どのようなインテントに応答できるか決めることができます。
+「共有」などの一般的なインテントの場合、その要求に対応できるアプリが複数インストールされていることもあります。
 </p>
 
-<h4>例: 共有をサポートするアプリ間のナビゲーション</h4>
+<h4>例: アプリ間をナビゲートして共有をサポートする</h4>
 
-<p>アクティビティ、タスク、インテントの連携を理解するには、1 つのアプリが別のアプリを使ってユーザーによるコンテンツの共有を可能にする仕組みを知る必要があります。たとえばホームから Play ストアのアプリを起動すると、新しいタスク A が開始されるとします(以下の図を参照)。
-
-Play ストア内をナビゲートし、プロンプトで表示された書籍をタップしてその詳細を表示した後もユーザーは同じタスク内に留まり、アクティビティを追加するとタスクは拡張されます。
-「共有」アクションをトリガーすると、共有インテントを処理するよう登録されている(さまざまなアプリの)各アクティビティを示すダイアログがユーザー表示されます。
+<p>アクティビティ、タスク、インテントの連携を理解するには、あるアプリが別のアプリを使ってコンテンツを共有する仕組みについて理解する必要があります。
+たとえば、ホームから Play Store のアプリを起動すると、新しいタスク A が開始されるとします(以下の図を参照)。
+Play Store 内をナビゲートし、おすすめの書籍をタップしてその詳細を表示した後もユーザーは同じタスク内に留まり、アクティビティを追加するとタスクが拡張されます。
+「共有」アクションをトリガーすると、共有インテントを処理するよう登録されている(さまざまなアプリの)各アクティビティを一覧表示するダイアログが表示されます。
 
 </p>
 
 <img src="{@docRoot}design/media/navigation_between_apps_inward.png">
 
-<p>ユーザーが Gmail 経由で共有することを選択すると、Gmail の作成アクティビティがタスク A の続きとして追加されます &mdash; 新しいタスクは作成されません。
-Gmail にバックグラウンドで実行中の独自のタスクがある場合、そのタスクは影響を受けません。
+<p>Gmail で共有するよう選択すると、Gmail の作成アクティビティがタスク A の続きとして追加され、新しいタスクは作成されません。
+Gmail にバックグラウンドで実行中のタスクがある場合、そのタスクは影響を受けません。
 </p>
 
-<p>作成アクティビティからメッセージを送信するか、Back ボタンをタップするとユーザーは書籍の詳細アクティビティに戻ります。
-Back を連続してタップすると Play ストアに戻り、最終的にはホームが表示されます。
+<p>作成アクティビティからメッセージを送信するか、Back ボタンをタップすると書籍の詳細アクティビティに戻ります。
+Back ボタンを連続してタップすると Play Store に戻り、最後にホーム画面が表示されます。
 </p>
 
 <img src="{@docRoot}design/media/navigation_between_apps_back.png">
 
-<p>ただし、作成アクティビティから Up をタップすると、ユーザーは Gmail 内に留まる意思を示すことになります。
-Gmail の会話リストのアクティビティが表示され、新しいタスク B が作成されます。新しいタスクは常にホームをルートとしているため、会話リストからBack をタップするとホームに戻ります。
+<p>ただし、作成アクティビティで Up ボタンをタップすると、Gmail で引き続き作業することになります。
+Gmail の会話リストのアクティビティが表示され、新しいタスク B が作成されます。新しいタスクでは常にホーム画面がルートになるため、会話リストから Back ボタンをタップするとホーム画面に戻ります。
 </p>
 
 <img src="{@docRoot}design/media/navigation_between_apps_up.png">
 
-<p>タスク A はバックグラウンドで維持され、ユーザー後から(たとえば [最近使ったアプリ] 画面経由で)このタスクに戻ることができます。
-Gmail にバックグラウンドで実行中の独自のタスクが既にある場合、そのタスクはタスク B に置き換えられます &mdash; 前のコンテキストはユーザーの新しい目標の導入より破棄されます。
+<p>タスク A はバックグラウンドで待機しているので、後から(たとえば [最近使ったアプリ] 画面から)このタスクに戻ることができます。
+Gmail にバックグラウンドで実行中のタスクが既にある場合、そのタスクはタスク B に置き換えられます。新しいタスクが選択され、前のコンテキストは破棄されます。
 </p>
 
-<p>アプリがアプリ階層内の深い階層にあるアクティビティでインテントを処理するように登録されている場合は、Up ナビゲーションの指定方法について<a href="#into-your-app">ホームスクリーンのウィジェットと通知によるアプリへのナビゲーション</a>をご覧ください。
+<p>深い階層にあるアクティビティでインテントを処理するようアプリで登録されている場合は、Up ナビゲーションの指定方法については、<a href="#into-your-app">ホーム画面のウィジェットと通知を使用したアプリへのナビゲーション</a>をご覧ください。
 
 </p>
diff --git a/docs/html-intl/intl/ja/distribute/index.jd b/docs/html-intl/intl/ja/distribute/index-ja.jd
similarity index 100%
rename from docs/html-intl/intl/ja/distribute/index.jd
rename to docs/html-intl/intl/ja/distribute/index-ja.jd
diff --git a/docs/html-intl/intl/ja/guide/components/activities.jd b/docs/html-intl/intl/ja/guide/components/activities.jd
new file mode 100644
index 0000000..9b06d2c
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/components/activities.jd
@@ -0,0 +1,756 @@
+page.title=アクティビティ
+page.tags=activity,intent
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>本書の内容</h2>
+<ol>
+  <li><a href="#Creating">アクティビティを作成する</a>
+    <ol>
+      <li><a href="#UI">ユーザー インターフェースを実装する</a></li>
+      <li><a href="#Declaring">マニフェストでアクティビティを宣言する</a></li>
+    </ol>
+  </li>
+  <li><a href="#StartingAnActivity">アクティビティを開始する</a>
+    <ol>
+      <li><a href="#StartingAnActivityForResult">結果待ちのアクティビティを開始する</a></li>
+    </ol>
+  </li>
+  <li><a href="#ShuttingDown">アクティビティをシャットダウンする</a></li>
+  <li><a href="#Lifecycle">アクティビティのライフサイクルを管理する</a>
+    <ol>
+      <li><a href="#ImplementingLifecycleCallbacks">ライフサイクル コールバックを実装する</a></li>
+      <li><a href="#SavingActivityState">アクティビティの状態を保存する</a></li>
+      <li><a href="#ConfigurationChanges">構成の変更を処理する</a></li>
+      <li><a href="#CoordinatingActivities">アクティビティを連携する</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>キークラス</h2>
+<ol>
+  <li>{@link android.app.Activity}</li>
+</ol>
+
+<h2>関連ドキュメント</h2>
+<ol>
+  <li><a href="{@docRoot}guide/components/tasks-and-back-stack.html">タスクとバックスタック
+</a></li>
+</ol>
+
+</div>
+</div>
+
+
+
+<p>{@link android.app.Activity} は、電話をかける、写真を撮影する、メールを送る、マップを閲覧するといった操作をユーザーができる画面を提供するアプリケーション コンポーネントです。
+
+各アクティビティには、ユーザー インターフェースを描画できるウィンドウがあります。一般的にはウィンドウは画面と同じ大きさになりますが、画面より小さくしたり、他のウィンドウ上にフローティングさせたりすることもできます。
+
+</p>
+
+<p> 通常、アプリケーションは複数のアクティビティで構成されており、各アプリケーションはそれぞれ緩やかにつながっています。
+一般的には、アプリケーションの 1 つのアクティビティが「メイン」アクティビティとして指定され、ユーザーが初めてアプリケーションを起動したときに表示されるのがこのアクティビティになります。
+その後、各アクティビティで別のアクティビティを開始して別の操作を実行できます。
+新しいアクティビティの開始時には、前のアクティビティは停止しますが、そのアクティビティはシステムによってスタック(「バックスタック」)に維持されます 
+
+新しいアクティビティが開始すると、それがバックスタックに入ってユーザーに表示されます。
+バックスタックは「後入れ先出し」の基本的なスタック メカニズムを順守するため、ユーザーが現在のアクティビティを完了して [<em>戻る</em>] ボタンを押すと、そのアクティビティはスタックから消え(破棄され)、前のアクティビティが再開します。
+
+(バックスタックの詳細については、<a href="{@docRoot}guide/components/tasks-and-back-stack.html">タスクとバックスタック</a>ドキュメントで説明します)。
+
+</p>
+
+<p>新しいアクティビティが開始したことで、別のアクティビティが停止した場合、その状態の変化がアクティビティのライフサイクル コールバック メソッド経由で通知されます。システムがアクティビティを作成しているのか、停止しているのか、再開しているのか、破棄しているのかという状態の変化によって、アクティビティが受け取るコールバック メソッドにはいくつかの種類があり、各コールバックではユーザーがその状態の変化に応じた特定の操作を実行できます。
+
+
+&mdash;&mdash;
+
+たとえば、アクティビティが停止した場合は、ネットワーク接続やデータベース接続などの大きなオブジェクトを解放することになります。
+アクティビティが再開した場合は、必要なリソースを再度取得し、中断したところから操作を再開できます。
+このような状態の推移はすべて、アクティビティのライフサイクルの一部です。
+</p>
+
+<p>このドキュメントでは、さまざまなアクティビティの状態間の切り替えを正しく管理できるよう、アクティビティのライフサイクルの仕組みについてさらに詳しく説明する他、アクティビティのビルド方法と使用方法の基本について解説します。
+
+</p>
+
+
+
+<h2 id="Creating">アクティビティを作成する</h2>
+
+<p>アクティビティを作成するには、{@link android.app.Activity} のサブクラス(またはその既存のサブクラス)を作成する必要があります。
+サブクラスでは、アクティビティのライフサイクルの状態の切り替え時(アクティビティの作成、停止、再開、破棄など)にシステムが呼び出すコールバック メソッドを実装する必要があります。
+
+最も重要なコールバック メソッドは次の 2 つです。
+</p>
+
+<dl>
+  <dt>{@link android.app.Activity#onCreate onCreate()}</dt>
+  <dd>このメソッドは必ず実装してください。システムはアクティビティ作成の際にこのメソッドを呼び出します。
+実装の際には、アクティビティの必須コンポーネントを初期化する必要があります。
+
+    さらに重要な点は、ここで {@link android.app.Activity#setContentView
+    setContentView()} を呼び出してアクティビティのユーザー インターフェースのレイアウトを定義する必要があるということです。</dd>
+  <dt>{@link android.app.Activity#onPause onPause()}</dt>
+  <dd>システムは、ユーザーがアクティビティを終了したことを始めて示すときに、このメソッドを呼び出します(アクティビティが破棄されていない場合も含む)。
+通常はここで、現在のユーザー セッション後も維持する必要のある変更点を保存しておきます(ユーザーが戻ってこない可能性があるため)。
+
+</dd>
+</dl>
+
+<p>アクティビティ間の滑らかな操作感を実現し、アクティビティが停止したり破棄されたりする可能性のある予想外の中断に対応するために使用できるライフサイクル コールバック メソッドは他にもいくつかあります。
+
+すべてのライフサイクル コールバック メソッドについては、<a href="#Lifecycle">アクティビティのライフサイクルを管理する</a>のセクションで説明します。
+</p>
+
+
+
+<h3 id="UI">ユーザー インターフェースを実装する</h3>
+
+<p> アクティビティのユーザー インターフェースは、ビューの階層、 {@link android.view.View} から派生したオブジェクトから提供されます。&mdash;
+各ビューはアクティビティ ウィンドウ内の特定の長方形のエリアを制御し、ユーザーの操作に応答します。
+たとえば、1 つのビューが、ユーザーがタップしたときに操作を開始するボタンである場合があります。
+</p>
+
+<p>Android には、レイアウトのデザインや整理に使用できる既成のビューが多数用意されています。
+「ウィジェット」は、ボタン、テキスト フィールド、チェックボックス、画像といった画像の視覚的(操作可能な)要素を提供するビューです。
+「レイアウト」は、{@link
+android.view.ViewGroup} から派生したビューで、線形レイアウト、グリッド レイアウト、相対レイアウトなど、子ビューの特有のレイアウト モデルを提供するものです。
+また、{@link android.view.View} クラスと {@link android.view.ViewGroup} クラス(または既存のサブクラス)のサブクラスを作成し、独自のウィジェットやレイアウトを作ってアクティビティのレイアウトに適用することもできます。
+
+</p>
+
+<p>ビューを使用したレイアウトの定義で最も一般的なのは、XML レイアウト ファイルをアプリケーション リソースに保存する方法です。
+この方法では、ユーザー インターフェースのデザインを、アクティビティの挙動を定義するソース コードとは別に維持できます。
+{@link android.app.Activity#setContentView(int) setContentView()} を使用して、レイアウトのリソース ID を渡すと、アクティビティの UI としてレイアウトを設定できます。
+
+ただし、アクティビティ コードに新しい {@link android.view.View} を作成して、{@link android.view.ViewGroup} に新しい {@link
+android.view.View} を挿入してビュー階層をビルドし、ルートの {@link android.view.ViewGroup} を {@link android.app.Activity#setContentView(View)
+setContentView()} に渡して、そのレイアウトを使うこともできます。
+
+</p>
+
+<p>ユーザー インターフェースの作成の詳細については、「<a href="{@docRoot}guide/topics/ui/index.html">ユーザー インターフェース</a>」のドキュメントをご覧ください。</p>
+
+
+
+<h3 id="Declaring">マニフェストでアクティビティを宣言する</h3>
+
+<p>アクティビティがシステムにアクセスできるようにするには、マニフェストでアクティビティを宣言する必要があります。
+アクティビティを宣言するには、マニフェスト ファイルを開いて、<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 要素を <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a> の子要素として追加します。
+
+次に例を示します。</p>
+
+<pre>
+&lt;manifest ... &gt;
+  &lt;application ... &gt;
+      &lt;activity android:name=".ExampleActivity" /&gt;
+      ...
+  &lt;/application ... &gt;
+  ...
+&lt;/manifest &gt;
+</pre>
+
+<p>この要素には他にも、アクティビティのラベル、アクティビティのアイコン、アクティビティの UI を決めるテーマなどのプロパティを定義する属性を含めることができます。<a href="{@docRoot}guide/topics/manifest/activity-element.html#nm">{@code android:name}</a> 属性は、アクティビティのクラス名を指定するもので、唯一の必須属性です。
+
+
+&mdash;アプリケーションを発行したら、この名前は変更できません。変更すると、アプリケーションのショートカットなどの一部の機能が破損する可能性があります(ブログの投稿「<a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">Things That Cannot Change</a>」をご覧ください)。
+
+
+</p>
+
+<p>マニフェストでのアクティビティの宣言に関する詳細については、<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 要素のリファレンスをご覧ください。
+</p>
+
+
+<h4>インテント フィルタを使用する</h4>
+
+<p><a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> 要素でも &mdash; <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> 要素を使用してさまざまなインテント フィルタを指定して &mdash; 他のアプリケーション コンポーネントでのアクティベート方法を宣言できます。
+</p>
+
+<p>Android SDK ツールを使用して新しいアプリケーションを作成する際、自動的に作成されるスタブ アクティビティには、「メイン」アクションに応答するアクティビティで、「ランチャー」カテゴリに置かれるべきものを宣言するインテント フィルタが含まれます。
+
+インテント フィルタは次のように表示されます。
+</p>
+
+<pre>
+&lt;activity android:name=".ExampleActivity" android:icon="@drawable/app_icon"&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p><a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> 要素は、これがアプリケーションへの「メイン」エントリ ポイントであることを指定します。<a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> 要素は、アクティビティをシステムのアプリケーション ランチャーに入れるべきであると指定します(ユーザーがこのアクティビティを起動できるようにします)。
+</p>
+
+<p>アプリケーションを自己完結型にして、他のアプリケーションでアクティビティをアクティベートできないようにする場合は、他のインテント フィルタは必要ありません。
+前の例のように、「メイン」アクションを持ち、「ランチャー」カテゴリにできるのは 1 つのアクティビティのみです。
+アクティビティを他のアプリケーションで利用できないようにする場合は、そのアクティビティにはインテント フィルタを使用せず、明示的なインテントを使用して自身でアクティビティを開始するようにできます(次のセクションで説明します)。
+
+</p>
+
+<p>ただし、他のアプリケーション(と自身のアプリケーション)から派生した暗黙的なインテントにアクティビティが応答するようにする場合は、アクティビティで追加のインテント フィルタを定義する必要があります。
+
+応答するインテントのタイプごとに、<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> 要素を含む <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> と、任意で <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> 要素や <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
+&lt;data&gt;}</a> 要素を含める必要があります。
+これらの要素は、アクティビティが応答できるインテントのタイプを指定します。
+</p>
+
+<p>アクティビティがインテントに応答する方法の詳細については、「<a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>」のドキュメントをご覧ください。
+</p>
+
+
+
+<h2 id="StartingAnActivity">アクティビティを開始する</h2>
+
+<p>@link android.app.Activity#startActivity
+  startActivity()} を呼び出して、開始するアクティビティを記述する {@link android.content.Intent} を渡すと、新しいアクティビティを開始できます。
+インテントは開始するアクティビティを正確に指定するか、実行する操作のタイプを記述します(システムが適切なアクティビティを選択しますが、それが他のアプリケーションのアクティビティである場合もあります)。
+
+
+また、インテントには開始したアクティビティで使用する少量のデータを含めることもできます。
+</p>
+
+<p>自身のアプリケーションを操作するとき、既知のアクティビティを起動することが頻繁にあります。
+ そのような場合、クラス名を使用して開始するアクティビティを明示的に定義するインテントを作成できます。
+例として、1 つのアクティビティで {@code
+SignInActivity} という名前の他のアクティビティを開始する方法を次に示します。</p>
+
+<pre>
+Intent intent = new Intent(this, SignInActivity.class);
+startActivity(intent);
+</pre>
+
+<p>ただし、アクティビティからのデータを使用して、アプリケーションでメールやテキスト メッセージの送信、ステータスのアップデートといった操作を実行する場合もあります。
+アプリケーションにそのような操作を実行できるアクティビティがない場合、代わりに、端末上の他のアプリケーションによるアクティビティを活用できます。
+
+ここが、インテントがその存在意義を発揮する場面です。実行する操作を記述するインテントを作成し、システムが適切なアクティビティを他のアプリケーションから起動します。
+&mdash;
+
+インテントを処理できるアクティビティが複数ある場合は、使用するアクティビティを 1 つユーザーが選択できます。
+たとえば、メールを送信できるようにする場合は、次のようなインテントを作成します。
+
+</p>
+
+<pre>
+Intent intent = new Intent(Intent.ACTION_SEND);
+intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
+startActivity(intent);
+</pre>
+
+<p>インテントに追加された {@link android.content.Intent#EXTRA_EMAIL} のエクストラは、メールの送信先となるメールアドレスの文字列配列です。
+メール アプリケーションがこのインテントに応答するとき、エクストラにある文字列配列を読み取り、それをメール作成フォームの「宛先」フィールドに置きます。
+
+この場合、メール アプリケーションのアクティビティが開始してユーザーが操作を完了したときにアクティビティが再開します。
+</p>
+
+
+
+
+<h3 id="StartingAnActivityForResult">結果待ちのアクティビティを開始する</h3>
+
+<p>開始するアクティビティから結果を受け取りたい場合は、{@link android.app.Activity#startActivityForResult
+  startActivityForResult()}({@link android.app.Activity#startActivity
+  startActivity()} の代わりに)を呼び出してアクティビティを開始します。
+その後のアクティビティから結果を受け取るには、
+{@link android.app.Activity#onActivityResult onActivityResult()} コールバック メソッドを実装します。
+後続のアクティビティが完了すると、{@link
+android.content.Intent} の結果を {@link android.app.Activity#onActivityResult onActivityResult()} メソッドに返します。
+</p>
+
+<p>たとえば、連絡先を 1 つ受け取って、アクティビティでその連絡先情報を使用する場合は、
+次のようにインテントを作成して結果を処理できます。
+</p>
+
+<pre>
+private void pickContact() {
+    // Create an intent to "pick" a contact, as defined by the content provider URI
+    Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
+    startActivityForResult(intent, PICK_CONTACT_REQUEST);
+}
+
+&#64;Override
+protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+    // If the request went well (OK) and the request was PICK_CONTACT_REQUEST
+    if (resultCode == Activity.RESULT_OK &amp;&amp; requestCode == PICK_CONTACT_REQUEST) {
+        // Perform a query to the contact's content provider for the contact's name
+        Cursor cursor = getContentResolver().query(data.getData(),
+        new String[] {Contacts.DISPLAY_NAME}, null, null, null);
+        if (cursor.moveToFirst()) { // True if the cursor is not empty
+            int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
+            String name = cursor.getString(columnIndex);
+            // Do something with the selected contact's name...
+        }
+    }
+}
+</pre>
+
+<p>この例では、アクティビティの結果を処理するために {@link
+android.app.Activity#onActivityResult onActivityResult()} メソッドで使用すべき基本ロジックを示しています。
+1 つ目の条件では、要求が成功したかどうかを確認し、成功した場合は {@code resultCode} が{@link android.app.Activity#RESULT_OK} になり、この結果への要求が応答しているかどうかが判明します。この場合、{@code requestCode} が {@link android.app.Activity#startActivityForResult
+startActivityForResult()} で送信された 2 つ目のパラメータに一致しています。&mdash;
+&mdash;&mdash;
+
+そこから、コードが {@link android.content.Intent}({@code data} パラメータ)に返されたデータを照会することでアクティビティの結果を処理します。
+</p>
+
+<p>ここで、{@link
+android.content.ContentResolver} がコンテンツ プロバイダに対してクエリを実行し、照会されたデータを読み取れるようにする {@link android.database.Cursor} が返されます。
+詳細については、「<a href="{@docRoot}guide/topics/providers/content-providers.html">コンテンツ プロバイダ</a>」のドキュメントをご覧ください。
+</p>
+
+<p>インテントの使用に関する詳細については、「<a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>」のドキュメントをご覧ください。
+</p>
+
+
+<h2 id="ShuttingDown">アクティビティをシャットダウンする</h2>
+
+<p>アクティビティは、{@link android.app.Activity#finish
+finish()} メソッドを呼び出すことでシャットダウンできます。また、{@link android.app.Activity#finishActivity finishActivity()} を呼び出すと以前に開始した別のアクティビティをシャットダウンすることもできます。
+</p>
+
+<p class="note"><strong>注:</strong> ほとんどの場合、これらのメソッドを用いてアクティビティを明示的に終了しないでください。
+後述のアクティビティのライフサイクルでも説明していますが、Android システム自体がアクティビティのライフサイクルを管理するため、アクティビティを自身で終了させる必要はありません。
+
+これらのメソッドを呼び出すと、期待された操作性に影響を与えることがあるため、ユーザーが絶対にアクティビティのこのインスタンスに戻らないようにする場合にのみ使用するようにしてください。
+
+</p>
+
+
+<h2 id="Lifecycle">アクティビティのライフサイクルを管理する</h2>
+
+<p>コールバック メソッドを実装したアクティビティのライフサイクルの管理は、強固で柔軟なアプリケーションの開発にとって重要です。
+
+アクティビティのライフサイクルは、他のアクティビティ、タスク、バックスタックとの関連による影響を直接受けます。
+</p>
+
+<p>基本的に、アクティビティには次の 3 つの状態があります。</p>
+
+<dl>
+  <dt><i>再開状態</i></dt>
+    <dd>アクティビティが画面のフォアグラウンドにあり、ユーザー フォーカスのある状態。(この状態は「実行中」とも呼ばれます)。
+</dd>
+
+  <dt><i>一時停止状態</i></dt>
+    <dd>他のアクティビティがフォアグラウンドにあり、メインに表示されているが、このアクティビティも表示されている。つまり、このアクティビティの上に他のアクティビティが表示されており、他方のアクティビティは一部が透明であるか、画面全体を覆ってはいない状態です。
+
+一時停止状態のアクティビティは完全に生きている状態ですが({@link android.app.Activity} オブジェクトがメモリに保持されており、すべての状態やメンバー情報が維持され、ウィンドウ マネージャーにもアタッチされたまま)、メモリ量が極端に低下した場合にはシステムによって強制停止される場合もあります。
+
+</dd>
+
+  <dt><i>停止状態</i></dt>
+    <dd>アクティビティは、他のアクティビティによって完全に見えない状態です(アクティビティが「バックグラウンド」にある)。
+停止状態のアクティビティもまだ生きていますが({@link android.app.Activity} オブジェクトがメモリに保持されており、すべての状態やメンバー情報が維持されているが、ウィンドウ マネージャーにはアタッチ<em>されていない</em>状態です)。
+
+ただし、ユーザーには表示されておらず、別の場所でメモリが必要になればシステムによって強制終了される場合もあります。
+</dd>
+</dl>
+
+<p>アクティビティが一時停止か停止状態の場合、システムはアクティビティに終了するかどうかを尋ねる({@link android.app.Activity#finish finish()} メソッドを呼び出す)か、単純にプロセスを強制終了してメモリから解放できます。
+
+アクティビティを再度開くとき(終了や強制終了後)は、もう一度最初から作成する必要があります。
+</p>
+
+
+
+<h3 id="ImplementingLifecycleCallbacks">ライフサイクル コールバックを実装する</h3>
+
+<p>アクティビティが上記の異なる状態の間を遷移するとき、さまざまなコールバック メソッドを介して通知されます。
+すべてのコールバック メソッドは、アクティビティの状態が変化したときに必要な操作を実行するようオーバーライドできるフックになります。
+次のスケルトン アクティビティには、基本的なライフサイクル メソッドがそれぞれ含まれています。
+</p>
+
+
+<pre>
+public class ExampleActivity extends Activity {
+    &#64;Override
+    public void {@link android.app.Activity#onCreate onCreate}(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // The activity is being created.
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onStart onStart()} {
+        super.onStart();
+        // The activity is about to become visible.
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onResume onResume()} {
+        super.onResume();
+        // The activity has become visible (it is now "resumed").
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onPause onPause()} {
+        super.onPause();
+        // Another activity is taking focus (this activity is about to be "paused").
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onStop onStop()} {
+        super.onStop();
+        // The activity is no longer visible (it is now "stopped")
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onDestroy onDestroy()} {
+        super.onDestroy();
+        // The activity is about to be destroyed.
+    }
+}
+</pre>
+
+<p class="note"><strong>注:</strong> これらのライフサイクル メソッドを実装する際は、上記の例のように、すべての操作の前にスーパークラスの実装を呼び出す必要があります。
+</p>
+
+<p>これらのメソッドすべてで、アクティビティのライフサイクル全体を定義します。これらのメソッドを実装すると、アクティビティのライフサイクル内の次の 3 つのネストされたループを監視できます。
+ </p>
+
+<ul>
+<li>アクティビティの<b> entire lifetime</b> は、{@link
+android.app.Activity#onCreate onCreate()} の呼び出しから、{@link
+android.app.Activity#onDestroy} の呼び出しまでの間です。アクティビティは、{@link android.app.Activity#onCreate onCreate()} で「グローバル」状態のセットアップ(レイアウトの定義など)を実行し、{@link android.app.Activity#onDestroy} に残っているすべてのリソースを解放する必要があります。
+
+たとえば、アクティビティにネットワークからデータをダウンロードするためバックグラウンドで実行しているスレッドがある場合、そのスレッドが {@link android.app.Activity#onCreate onCreate()} に作成され、{@link
+android.app.Activity#onDestroy} のスレッドが停止される場合があります。
+
+</li>
+
+<li><p>アクティビティの<b>visible lifetime</b> は、{@link
+android.app.Activity#onStart onStart()} の呼び出しから、{@link
+android.app.Activity#onStop onStop()} の呼び出しまでの間です。この間、アクティビティは画面上に表示され、ユーザーが操作できる状態です。
+たとえば {@link android.app.Activity#onStop onStop()} は、新たなアクティビティが開始してこのアクティビティが表示されなくなったときに呼び出されます。
+これらの 2 つのメソッド間で、アクティビティをユーザーに表示するのに必要なリソースは保持できます
+たとえば、{@link android.content.BroadcastReceiver} を {@link
+android.app.Activity#onStart onStart()} に登録して UI に影響のある変更を監視し、ユーザーが表示内容の閲覧をやめたときに {@link android.app.Activity#onStop onStop()} で登録解除できます
+
+
+アクティビティがユーザーに表示されたり、非表示になったりとアクティビティの状態が変化する場合、アクティビティの entire lifetime 中にシステムが {@link android.app.Activity#onStart onStart()} と {@link
+android.app.Activity#onStop onStop()} を複数回呼び出すこともあります。
+</p></li>
+
+<li><p>アクティビティの <b>foreground lifetime</b> は {@link
+android.app.Activity#onResume onResume()} の呼び出しから、{@link android.app.Activity#onPause
+onPause()} の呼び出しまでの間です。この間、アクティビティは画面上の他のすべてのアクティビティの前面にあり、ユーザーの入力フォーカスがある状態です。
+アクティビティは フォアグラウンドにある状態からそうでない状態に頻繁に遷移する可能性があります。たとえば、端末がスリープ状態になったり、ダイアログが表示されたりしたときには{@link android.app.Activity#onPause onPause()} が呼び出されます。
+&mdash;
+この状態遷移は頻繁に起こるため、この 2 つのメソッドのコードはユーザーを待たせてしまうような遅い遷移にならないよう、適正な軽い処理にしておく必要があります。
+</p></li>
+</ul>
+
+<p>図 1 では、状態間でアクティビティがたどる可能性のあるループと経路を表しています。長方形はアクティビティが状態間で遷移したときの処理用に実装できるコールバック メソッドを表しています。
+
+ <p>
+
+<img src="{@docRoot}images/activity_lifecycle.png" alt="" />
+<p class="img-caption"><strong>図 1.</strong> アクティビティのライフサイクル</p>
+
+<p>表 1 には同じライフサイクル コールバック メソッドがリストされており、各コールバック メソッドの詳細と、アクティビティのライフサイクル全体でのそれぞれの位置関係、コールバック メソッドの完了後にシステムによってアクティビティが強制終了されるかどうかを示しています。
+
+
+</p>
+
+<p class="table-caption"><strong>表 1.</strong> ライフサイクル コールバック メソッドの概要
+</p>
+
+<table border="2" width="85%" frame="hsides" rules="rows">
+<colgroup align="left" span="3"></colgroup>
+<colgroup align="left"></colgroup>
+<colgroup align="center"></colgroup>
+<colgroup align="center"></colgroup>
+
+<thead>
+<tr><th colspan="3">メソッド</th> <th>説明</th> <th>完了後の強制終了</th> <th>次のメソッド</th></tr>
+</thead>
+
+<tbody>
+<tr>
+  <td colspan="3" align="left"><code>{@link android.app.Activity#onCreate onCreate()}</code></td>
+  <td>アクティビティが最初に作成されるときに呼び出されます。
+      ここで、ビューの作成、リストとのデータバインドといった、通常の静的なセットアップを行います。&mdash;
+アクティビティの前の状態を含む Bundle オブジェクトを取り出せた場合、それをメソッドに渡します(後半の<a href="#actstate">アクティビティの状態を保存する</a>をご覧ください)。
+
+
+
+      <p>常に {@code onStart()} が後に続きます。</p></td>
+  <td align="center">いいえ</td>
+      <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td rowspan="5" style="border-left: none; border-right: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onRestart
+onRestart()}</code></td>
+   <td>アクティビティが停止した後、再開する直前に呼び出されます。
+
+       <p>常に {@code onStart()} が後に続きます。</p></td>
+   <td align="center">いいえ</td>
+   <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStart onStart()}</code></td>
+   <td>アクティビティがユーザーに見える状態になる直前に呼び出されます。
+       <p>アクティビティがフォアグラウンドになったときは {@code onResume()} が後に続き、アクティビティが非表示になったときは {@code onStop()} が後に続きます。
+</p></td>
+    <td align="center">いいえ</td>
+    <td align="center">{@code onResume()} <br/>または<br/> {@code onStop()}</td>
+</tr>
+
+<tr>
+   <td rowspan="2" style="border-left: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td align="left"><code>{@link android.app.Activity#onResume onResume()}</code></td>
+   <td>アクティビティとユーザーとの操作が開始する直前に呼び出されます。
+この時点で、アクティビティはアクティビティ スタックの先頭にあり、ユーザー入力の準備ができています。
+
+       <p>常に {@code onPause()} が後に続きます。</p></td>
+   <td align="center">いいえ</td>
+   <td align="center">{@code onPause()}</td>
+</tr>
+
+<tr>
+   <td align="left"><code>{@link android.app.Activity#onPause onPause()}</code></td>
+   <td>システムが別のアクティビティを再開する直前に呼び出されます。
+通常、このメソッドは永続化データへの未保存の変更をコミットしたり、アニメーションや CPU を消費する可能性のあるその他の動作を停止したりする際に使用されます。
+
+それが完了するまで次のアクティビティが再開できないため、それらの操作は迅速に行う必要があります。
+
+       <p>アクティビティが前面に戻るときは {@code onResume()} が後に続き、アクティビティが非表示になるときは {@code onStop()} が後に続きます。
+
+</td>
+   <td align="center"><strong style="color:#800000">はい</strong></td>
+   <td align="center">{@code onResume()} <br/>または<br/> {@code onStop()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStop onStop()}</code></td>
+   <td>アクティビティがユーザーに見えなくなると呼び出されます。これは、アクティビティが破棄されたか、別のアクティビティ(既存のアクティビティや新しいアクティビティ)が再開されてこのアクティビティを覆っている場合に起こります。
+
+
+       <p>アクティビティのユーザー操作が可能に戻るときは {@code onRestart()} が後に続き、アクティビティがなくなるときは {@code onDestroy()} が後に続きます。
+
+</p></td>
+   <td align="center"><strong style="color:#800000">はい</strong></td>
+   <td align="center">{@code onRestart()} <br/>または<br/> {@code onDestroy()}</td>
+</tr>
+
+<tr>
+   <td colspan="3" align="left"><code>{@link android.app.Activity#onDestroy
+onDestroy()}</code></td>
+   <td>アクティビティが破棄される前に呼び出されます。これはアクティビティが受け取る最後の呼び出しです。
+アクティビティが終了した(<code>{@link android.app.Activity#finish
+       finish()}</code> が呼び出された)か、アクティビティ領域を節約するためにシステムが一時的にこのアクティビティを破棄した場合に呼び出されます。
+
+この 2 つのシナリオは、<code>{@link
+       android.app.Activity#isFinishing isFinishing()}</code> メソッドで区別できます。
+</td>
+   <td align="center"><strong style="color:#800000">はい</strong></td>
+   <td align="center"><em>なし</em></td>
+</tr>
+</tbody>
+</table>
+
+<p>「完了後の強制終了」の列は、<em>メソッドが戻った後</em>に、アクティビティのコードの後続行を実行することなく、アクティビティをホストするプロセスをシステムが強制終了できるかどうかを示しています。
+
+3 つのメソッド({@link
+android.app.Activity#onPause
+onPause()}、{@link android.app.Activity#onStop onStop()}、{@link android.app.Activity#onDestroy
+onDestroy()})が「はい」になっています。{@link android.app.Activity#onPause onPause()} は 3 つのなかで最初であるため、アクティビティが作成された後は{@link android.app.Activity#onPause onPause()} がプロセスが強制終了される<em>可能性がある</em>前に呼び出されることが保証される最後のメソッドです。システムが緊急でメモリを空ける必要がある場合は、{@link
+android.app.Activity#onStop onStop()} と {@link android.app.Activity#onDestroy onDestroy()} は呼び出されない場合があります。
+
+&mdash;
+
+そのため、重要な永続的データ(ユーザーの編集内容など)をストレージに書き込む際は、{@link android.app.Activity#onPause onPause()} を使用する必要があります。
+ただし、このメソッドで後続のアクティビティへの遷移をブロックしてしまい、ユーザー操作の速度を送らせてしまうことから、{@link android.app.Activity#onPause onPause()} 中にどんな情報を保持するかについては吟味する必要があります。
+
+
+</p>
+
+<p> <b>「強制終了」</b>列で「いいえ」となっているメソッドでは、アクティビティが呼び出された時点から、アクティビティをホストするプロセスが強制終了されないよう保護します。
+つまり、アクティビティが強制終了される可能性があるのは、{@link android.app.Activity#onPause onPause()} が戻ってから、{@link android.app.Activity#onResume onResume()} が呼び出されるまでの間です。
+
+{@link android.app.Activity#onPause onPause()} が再度呼び出されて戻るまでは、再度強制終了されることはありません。
+ </p>
+
+<p class="note"><strong>注:</strong> 表 1 の定義では技術的に「強制終了」できないアクティビティでも、システムによって強制終了されることがありますが、そうなるのはリソース不足などの緊急時のみです。
+&mdash;
+アクティビティが強制終了されるケースについては、<a href="{@docRoot}guide/components/processes-and-threads.html">Processes and Threading</a> のドキュメントで説明しています。
+
+</p>
+
+
+<h3 id="SavingActivityState">アクティビティの状態を保存する</h3>
+
+<p><a href="#Lifecycle">アクティビティのライフサイクルを管理する</a>でも簡単に説明したように、アクティビティが一時停止や停止したとき、アクティビティの状態は保持されます。
+
+これは、一時停止や停止されたときも {@link android.app.Activity} オブジェクトがメモリに保持されるためです &mdash; メンバーや現在の状態といったすべての情報は残っています。
+
+つまり、アクティビティ内でユーザーが加えた変更点は保持されるため、アクティビティがフォアグラウンドに戻ったとき(「再開」したとき)、それらの変更点はそのまま表示されます。
+
+</p>
+
+<p>ただし、メモリを確保するためにシステムがアクティビティを破棄すると、 {@link
+android.app.Activity} オブジェクトが破棄されるため、システムはそれをそのままの状態で再開できなくなります。
+代わりに、ユーザーがそれに戻る操作を行った場合、システムは {@link android.app.Activity} オブジェクトを再作成します。
+ユーザーにはシステムがアクティビティを破棄して再作成したことはわからないため、アクティビティが以前の状態のままであることを期待します。
+
+この場合、アクティビティの状態情報を保存できる追加のコールバック メソッド({@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()})を実装することで、アクティビティの状態に関する重要な情報を維持できます。
+
+</p>
+
+<p>アクティビティが破棄されるような状態になる前に、システムが {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()} を呼び出します。
+システムはこのメソッドを {@link android.os.Bundle} に渡し、そこでアクティビティの状態情報を名前と値のペアとして {@link
+android.os.Bundle#putString putString()} や {@link
+android.os.Bundle#putInt putInt()} などのメソッドを使用して保存できます。
+
+その後、システムがアプリケーション プロセスを強制終了して、ユーザーがアクティビティに戻った場合、システムはアクティビティを再作成して {@link android.os.Bundle} を {@link android.app.Activity#onCreate onCreate()} と {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} の両方に渡します。
+
+いずれのメソッドを使った場合でも、保存した状態を {@link android.os.Bundle} から抽出してアクティビティの状態を復元できます。
+
+復元する状態情報がない場合は、{@link
+android.os.Bundle} は null で渡されます(アクティビティを最初に作成した場合がこれにあたります)。
+</p>
+
+<img src="{@docRoot}images/fundamentals/restore_instance.png" alt="" />
+<p class="img-caption"><strong>図 2.</strong> アクティビティが前の状態のままでユーザー フォーカスに戻るには、アクティビティが破棄され、再作成された後にアクティビティが保存された以前の状態を復元する必要があるか、アクティビティが停止し、再開した後にアクティビティの状態が以前のままになるか、の 2 つの方法があります。
+
+
+</p>
+
+<p class="note"><strong>注:</strong> アクティビティが破棄される前に {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} が呼び出される保証はありません。これは、状態を保存する必要がないケースがあるためです(ユーザーが [<em>戻る</em>] ボタンを使用してアクティビティを離れることで明示的にアクティビティを閉じた場合など)。
+
+
+
+システムが {@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()} を呼び出す場合、呼び出しは常に {@link
+android.app.Activity#onStop onStop()} の前、場合によっては {@link android.app.Activity#onPause
+onPause()} の前に行われます。</p>
+
+<p>ただし、何もせず {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} も実装しない場合でも、{@link android.app.Activity} クラスの {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} のデフォルトの実装によって、アクティビティの状態が復元されるものもあります。
+具体的には、デフォルトの実装がレイアウト内のすべての {@link
+android.view.View} の {@link
+android.view.View#onSaveInstanceState onSaveInstanceState()} を呼び出すことで、各ビューが保存すべき情報を提供できるようになります。
+
+Android フレームワークの大半のウィジェットが必要に応じてこのメソッドを実装しており、UI への視覚的な変更は自動的に保存され、アクティビティが再作成されると復元されるようになっています。
+
+たとえば、{@link android.widget.EditText} ウィジェットではユーザーが入力したすべてのテキストを保存し、{@link android.widget.CheckBox} ウィジェットはオンにされたかどうかを保存するようになっています。
+
+ここで必要な作業は、状態を保存する各ウィジェット用の一意の ID(<a href="{@docRoot}guide/topics/resources/layout-resource.html#idvalue">{@code android:id}</a>)を提供するだけです。
+ウィジェットに ID がないと、システムは状態を保存できません。
+</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<p>また、レイアウトのビューでの状態の保存を明示的に停止するには、{@link android.R.attr#saveEnabled android:saveEnabled} 属性を {@code "false"} に設定するか、{@link android.view.View#setSaveEnabled setSaveEnabled()} メソッドを呼び出します。
+
+通常はこの機能を無効にしませんが、アクティビティ UI の状態を別の方法で復元する場合には無効にできます。
+</p>
+</div>
+</div>
+
+<p>{@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} のデフォルトの実装によってアクティビティの UI に関する有用な情報は保存されますが、追加の情報を保存するようそれをオーバーライドすることもできます。例としては、アクティビティの期間に変更されたメンバー値を保存する必要があるケースなどがあります。(UI で復元された値に関連している場合でも、それらの UI 値を持つメンバーはデフォルトでは復元されません)。
+
+
+
+</p>
+
+<p>{@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} のデフォルトの実装で UI の状態を保存できるため、状態の追加情報を保存するようメソッドをオーバーライドする場合は、常に作業前に {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()} のスーパークラス実装を呼び出す必要があります。
+
+
+同様に、オーバーライドする場合はデフォルトの実装でビューの状態を復元できるよう、{@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} のスーパークラスの実装も呼び出す必要があります。
+</p>
+
+<p class="note"><strong>注:</strong> {@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()} は呼び出される保証がないため、これはアクティビティの一時的な状態の記録用にのみ使用し、永続的データの保存には使用しないようにします。
+
+&mdash;代わりに {@link
+android.app.Activity#onPause onPause()} を使用して、ユーザーがアクティビティを離れたときの永続的データ(データベースに保存するインストール必要のあるデータなど)を保存します。
+</p>
+
+<p>アプリケーションが状態を復元できるかどうかテストするには、端末を回転してみて、方向が変化するかを確認します
+画面の方向が変わるとき、システムがアクティビティを破棄して再作成し、新しい画面構成に利用可能な別のリソースを適用します。
+
+アプリケーションの使用中にユーザーが端末を回転させるという場面は日常的にあるため、アクティビティが再作成されたときに状態を完全に復元することは非常に重要です。
+
+</p>
+
+
+<h3 id="ConfigurationChanges">構成の変更を処理する</h3>
+
+<p>端末の構成の中には、実行の際に変化するものがあります(画面の向き、キーボードの可用性、言語など)。
+そのような変化が生じたとき、Android は実行中のアクティビティを再作成します(システムが {@link android.app.Activity#onDestroy} を呼び出し、その後すぐに {@link
+android.app.Activity#onCreate onCreate()})を呼び出します。
+この動作は、提供した別のリソース(異なる画面の向きやサイズに応じたレイアウトなど)を使用してアプリケーションを自動的にリロードすることで、アプリケーションを新しい構成に適応させることを目的としています。
+
+
+</p>
+
+<p>前述のように画面の向きの変化による再起動を処理して、アクティビティの状態を復元するようアプリケーションを適切にデザインしていれば、アプリケーションはアクティビティのライフサイクルでの予期しない他のイベントに対しても回復力を持つことができます。
+
+</p>
+
+<p>このような再起動を処理するのに最適な方法は、前のセクションで説明したように、{@link
+  android.app.Activity#onSaveInstanceState onSaveInstanceState()} と {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}(または {@link
+android.app.Activity#onCreate onCreate()})を使用してアクティビティの状態を保存、復元する方法です。
+</p>
+
+<p>実行の際に起こる構成の変更と、その処理方法の詳細については、「<a href="{@docRoot}guide/topics/resources/runtime-changes.html">実行時の変更の処理</a>」のガイドをご覧ください。
+
+</p>
+
+
+
+<h3 id="CoordinatingActivities">アクティビティを連携する</h3>
+
+ <p>1 つのアクティビティで別のアクティビティを開始すると、双方でライフサイクルの遷移が生じます。1 つ目のアクティビティが一時停止したり停止したりすると(バックグラウンドにある場合は停止しません)、もう一方のアクティビティが作成されます。
+
+これらのアクティビティでディスクなどに保存されているデータを共有している場合は、2 つ目のアクティビティが作成される前に 1 つ目のアクティビティが完全に停止することはないということを理解しておくことが重要です。むしろ、2 つ目の開始プロセスは、1 つ目の停止プロセスにオーバーラップします。
+
+
+</p>
+
+<p>特に 2 つのアクティビティが同じプロセスにあって 1 つが別のアクティビティを開始する場合、ライフサイクル コールバックの順序は厳密に定義されています。
+アクティビティ A がアクティビティ B を開始する場合の動作の順序を次に示します。
+ </p>
+
+<ol>
+<li>アクティビティ A の {@link android.app.Activity#onPause onPause()} メソッドが実行されます。</li>
+
+<li>アクティビティ B の {@link android.app.Activity#onCreate onCreate()}、{@link
+android.app.Activity#onStart onStart()}、{@link android.app.Activity#onResume onResume()} メソッドが順次実行されます
+(このとき、ユーザー フォーカスはアクティビティ B にあります)。</li>
+
+<li>次に、アクティビティ A が画面から消えた場合、{@link
+android.app.Activity#onStop onStop()} メソッドが実行されます。</li>
+</ol>
+
+ <p>このライフサイクル コールバックの順序を予測しておくことで、1 つのアクティビティから他のアクティビティへの情報の遷移を管理できるようになります。
+たとえば、1 つ目のアクティビティが停止したときに、後続のアクティビティが読み取れるようにデータベースに書き込む必要がある場合、データベースに書き込むタイミングは {@link
+android.app.Activity#onStop onStop()} ではなく {@link android.app.Activity#onPause onPause()} の間になります。
+
+</p>
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For more information about how Android maintains a history of activities and
+enables user multitasking, continue with the <b><a
+href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back
+Stack</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/ja/guide/components/bound-services.jd b/docs/html-intl/intl/ja/guide/components/bound-services.jd
new file mode 100644
index 0000000..d115e76
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/components/bound-services.jd
@@ -0,0 +1,658 @@
+page.title=バインドされたサービス
+parent.title=サービス
+parent.link=services.html
+@jd:body
+
+
+<div id="qv-wrapper">
+<ol id="qv">
+<h2>本書の内容</h2>
+<ol>
+  <li><a href="#Basics">基本</a></li>
+  <li><a href="#Creating">バインドされたサービスを作成する</a>
+    <ol>
+      <li><a href="#Binder">Binder クラスを拡張する</a></li>
+      <li><a href="#Messenger">メッセンジャーを使用する</a></li>
+    </ol>
+  </li>
+  <li><a href="#Binding">サービスにバインドする</a></li>
+  <li><a href="#Lifecycle">バインドされたサービスのライフサイクルを管理する</a></li>
+</ol>
+
+<h2>キークラス</h2>
+<ol>
+  <li>{@link android.app.Service}</li>
+  <li>{@link android.content.ServiceConnection}</li>
+  <li>{@link android.os.IBinder}</li>
+</ol>
+
+<h2>サンプル</h2>
+<ol>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html">{@code
+      RemoteService}</a></li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+      LocalService}</a></li>
+</ol>
+
+<h2>関連ドキュメント</h2>
+<ol>
+  <li><a href="{@docRoot}guide/components/services.html">サービス</a></li>
+</ol>
+</div>
+
+
+<p>バインドされたサービスは、クライアントサーバー インターフェースにおけるサーバーになります。バインドされたサービスでは、コンポーネント(アクティビティなど)をサービスにバインドしたり、送信を要求したり、受信を応答したり、さらにはプロセス間通信(IPC)を実行したりできるようにします。
+
+通常、バインドされたサービスは他のアプリケーション コンポーネントを提供している間だけ機能し、バックグラウンドで無期限に実行されることはありません。
+</p>
+
+<p>このドキュメントでは、他のアプリケーション コンポーネントからのサービスにバインドする方法を含む、バインドされたサービスの作成方法について説明します。
+ただし、サービスから通知を配信する方法や、フォアグラウンドでサービスを実行するよう設定する方法など、サービス全般の詳細については、「<a href="{@docRoot}guide/components/services.html">サービス</a>」のドキュメントをご覧ください。
+
+</p>
+
+
+<h2 id="Basics">基本</h2>
+
+<p>バインドされたサービスは、他のアプリケーションのバインドとやり取りを可能にする {@link android.app.Service} クラスの実装です。
+サービスのバインドを提供するには、{@link android.app.Service#onBind onBind()} コールバック メソッドを実装する必要があります。
+このメソッドでは {@link android.os.IBinder} オブジェクトが返されます。このオブジェクトはクライアントがサービスとのやり取りに使用するプログラミング インターフェースを定義します。
+
+</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>開始されたサービスにバインドする</h3>
+
+<p><a href="{@docRoot}guide/components/services.html">サービス</a> ドキュメントで説明されているように、開始されるサービスとバインドされるサービスの両方を作成できます。
+つまり、{@link android.content.Context#startService startService()} を呼び出して開始されるサービスは無期限に実行でき、クライアントが {@link
+android.content.Context#bindService bindService()} を呼び出してサービスにバインドできます。
+
+
+  <p>サービスの開始とバインドを許可すると、サービスが開始するとすべてのクライアントがアンバインドしても、システムによってサービスが破棄されることは<em>ありません</em>。
+代わりに、{@link android.app.Service#stopSelf stopSelf()} や {@link
+android.content.Context#stopService stopService()} を呼び出して、サービスを明示的に停止する必要があります。
+</p>
+
+<p>通常実装するのは、{@link android.app.Service#onBind onBind()}
+<em> か </em>{@link android.app.Service#onStartCommand onStartCommand()} のどちらかですが、両方の実装が必要な場合もあります。
+たとえば、音楽プレーヤーの場合はサービスを無期限に実行しつつ、バインドも提供できると便利な場合があります。
+この方法であれば、アクティビティがサービスを開始して音楽を再生し、ユーザーがアプリケーションから離れた場合も音楽を再生し続けることができます。
+次にユーザーがアプリケーションに戻ったとき、アクティビティがサービスにバインドして再生のコントロールをもう一度行えるようになります。
+</p>
+
+<p>開始されたサービスにバインドを追加する際のサービスのライフサイクルの詳細については、<a href="#Lifecycle">バインドされたサービスのライフサイクルを管理する</a>を必ずご覧ください。
+
+</p>
+</div>
+</div>
+
+<p>クライアントは、{@link android.content.Context#bindService
+bindService()} を呼び出せばサービスにバインドできます。バインドするときは、サービスとの接続を監視する {@link
+android.content.ServiceConnection} を実装する必要があります。{@link
+android.content.Context#bindService bindService()} メソッドは値なしですぐに返されますが、Android システムがクライアントとサービス間の接続を作成すると {@link
+android.content.ServiceConnection} の {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} が呼び出され、クライアントがサービスとの通信に使用できる {@link android.os.IBinder} が配信されます。
+
+
+</p>
+
+<p>複数のクライアントが同時にサービスに接続できます。ただし、1 つ目のクライアントのバインドの際にのみ、システムはサービスの {@link android.app.Service#onBind onBind()} メソッドを呼び出して{@link android.os.IBinder} を取得します。
+
+その後システムは {@link android.app.Service#onBind onBind()} を呼び出すことなく、同じ {@link android.os.IBinder} をバインドしたすべてのクライアントに配信します。
+</p>
+
+<p>最後のクライアントがサービスからアンバインドされると、システムはサービスを破棄します(サービスが {@link android.content.Context#startService startService()} でも開始された場合を除く)。
+</p>
+
+<p>バインドされたサービスを実装するときに最も重要なのは、{@link android.app.Service#onBind onBind()} コールバック メソッドが返すインターフェースを定義することです。
+サービスの {@link android.os.IBinder} インターフェースの定義には複数の方法があり、次のセクションではそれぞれのテクニックについて説明していきます。
+
+</p>
+
+
+
+<h2 id="Creating">バインドされたサービスを作成する</h2>
+
+<p>バインドを提供するサービスを作成するとき、クライアントがサービスとのやり取りに使用するプログラミング インターフェースを提供する {@link android.os.IBinder} を提示する必要があります。
+インターフェースを定義するには、次の 3 つの方法があります。
+</p>
+
+<dl>
+  <dt><a href="#Binder">Binder クラスを拡張する</a></dt>
+  <dd>サービスが独自のアプリケーション専用であり、クライアントと同じプロセスで実行する場合(ほとんどのケースに該当)、{@link android.os.Binder} クラスを拡張して {@link android.app.Service#onBind onBind()} からそのインスタンスを返すことでインターフェースを作成します。
+
+
+クライアントは {@link android.os.Binder} を受け取り、それを使用して {@link android.os.Binder} の実装や {@link android.app.Service} で利用できる public メソッドに直接アクセスできます。
+
+
+  <p>サービスが単にアプリケーションのバックグラウンド ワーカーである場合は、この方法が適しています。
+この方法が適していない唯一のケースは、サービスが他のアプリケーションや、別のプロセス間で使用されている場合です。
+</dd>
+
+  <dt><a href="#Messenger">メッセンジャーを使用する</a></dt>
+  <dd>別のプロセス間で動作するインターフェースが必要な場合は、{@link android.os.Messenger} を使用してサービス用のインターフェースを作成できます。
+この方法では、サービスが異なるタイプの {@link
+android.os.Message} オブジェクトに応答する {@link android.os.Handler} を定義します。
+この {@link android.os.Handler} を基本として {@link android.os.Messenger} は {@link android.os.IBinder} をクライアントと共有でき、 クライアントは {@link
+android.os.Message} オブジェクトを使用してサービスにコマンドを送信できるようになります。
+
+さらに、クライアントはサービスがメッセージを返信できるように独自の {@link android.os.Messenger} を定義できます。
+
+  <p>これは、最も簡単にプロセス間通信(IPC)を実行する方法であり、{@link
+android.os.Messenger} がすべてのリクエストを 1 つのスレッドにキューイングするため、サービスをスレッドセーフにデザインする必要がありません。
+</p>
+  </dd>
+
+  <dt>AIDL を使用する</dt>
+  <dd>AIDL(Android インターフェース定義言語)は、オブジェクトをオペーレーティングシステムが理解できるプリミティブに分解するためのすべての処理のを実行し、プロセス間でそれを整理して IPC 実行します。{@link android.os.Messenger} を使用する前の方法は、実際には AIDL を基本構造としています。
+
+
+前述したように、{@link android.os.Messenger} はすべてのクライアントの要求のキューを 1 つのスレッドに作成するため、サービスは要求を一度に受け取ります。
+ただし、サービスで複数の要求を同時に処理する場合は、AIDL を直接使用できます。
+
+その場合、サービスがマルチスレッドに対応しており、スレッドセーフで構築されている必要があります。
+  <p>AIDL を直接使用するには、プログラミング インターフェースを定義する {@code .aidl} ファイルを作成する必要があります。
+Android SDK ツールはこのファイルを使用して、インターフェースを実装して IPC を処理する抽象クラスを生成し、それをサービス内に拡張できます。
+
+</p>
+  </dd>
+</dl>
+
+  <p class="note"><strong>注:</strong> ほとんどのアプリケーションにおいて、マルチスレッド化が必要な点や、結果的により複雑な実装となってしまうことから、AIDL を使ったバインドされたサービスの作成は<strong>お勧めしません</strong>。
+
+AIDL はほとんどのアプリケーションに適していないため、このドキュメントではサービスでの AIDL の使用方法については取り上げません。
+どうしても AIDL の直接使用が必要な場合は、「<a href="{@docRoot}guide/components/aidl.html">AIDL</a>」のドキュメントをご覧ください。
+
+</p>
+
+
+
+
+<h3 id="Binder">Binder クラスを拡張する</h3>
+
+<p>サービスがローカルのアプリケーションでのみ使用されていて、プロセス間での作業が必要ない場合は、クライアントがサービスの public メソッドに直接アクセスできるようにする独自の {@link android.os.Binder} クラスを実装できます。
+
+</p>
+
+<p class="note"><strong>注:</strong> この方法は、クライアントとサービスが同じアプリケーションとプロセスにある場合(最も一般的なケース)のみ使用できます。
+たとえば、バックグラウンドで音楽を再生する独自のサービスに、アクティビティをバインドする必要のある音楽アプリケーションに適しています。
+
+</p>
+
+<p>セットアップ方法は次のとおりです。</p>
+<ol>
+  <li>サービスで次のいずれかに該当する {@link android.os.Binder} のインスタンスを作成します。
+    <ul>
+      <li>クライアントが呼び出せる public メソッドを含んでいる</li>
+      <li>クライアントが呼び出せる public メソッドのある現在の {@link android.app.Service} インスタンスを返す
+</li>
+      <li>クライアントが呼び出せる public メソッドのあるサービスでホストされた他のクラスのインスタンスを返す
+</li>
+    </ul>
+  <li>{@link android.os.Binder} のインスタンスを {@link
+android.app.Service#onBind onBind()} コールバック メソッドから返します。</li>
+  <li>クライアントで、{@link android.os.Binder} を {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} コールバック メソッドから受け取り、提供されたメソッドを使用してバインドされたサービスを呼び出します。
+</li>
+</ol>
+
+<p class="note"><strong>注:</strong> サービスとクライアントが同じアプリケーションになければならない理由は、クライアントが返されたオブジェクトをキャストでき、その API を適切に呼び出せるようにするためです。
+また、サービスとクライアントが同じプロセスになければならない理由は、この方法ではプロセス間の整理が一切行われないためです。
+
+</p>
+
+<p>以下は、{@link android.os.Binder} の実装を介してサービスのメソッドにクライアントアクセスを提供するサービスの例です。
+</p>
+
+<pre>
+public class LocalService extends Service {
+    // Binder given to clients
+    private final IBinder mBinder = new LocalBinder();
+    // Random number generator
+    private final Random mGenerator = new Random();
+
+    /**
+     * Class used for the client Binder.  Because we know this service always
+     * runs in the same process as its clients, we don't need to deal with IPC.
+     */
+    public class LocalBinder extends Binder {
+        LocalService getService() {
+            // Return this instance of LocalService so clients can call public methods
+            return LocalService.this;
+        }
+    }
+
+    &#64;Override
+    public IBinder onBind(Intent intent) {
+        return mBinder;
+    }
+
+    /** method for clients */
+    public int getRandomNumber() {
+      return mGenerator.nextInt(100);
+    }
+}
+</pre>
+
+<p>{@code LocalBinder} が {@code LocalService} の現在のインスタンスを取り出すための {@code getService()}メソッドをクライアントに提供します。
+これにより、クライアントがサービス内の public メソッドを呼び出せるようになります。
+たとえば、クライアントはサービスから {@code getRandomNumber()} を呼び出すことができます。</p>
+
+<p>以下は、{@code LocalService} にバインドして、ボタンがクリックされたときに {@code getRandomNumber()} を呼び出すアクティビティの例です。
+</p>
+
+<pre>
+public class BindingActivity extends Activity {
+    LocalService mService;
+    boolean mBound = false;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+
+    &#64;Override
+    protected void onStart() {
+        super.onStart();
+        // Bind to LocalService
+        Intent intent = new Intent(this, LocalService.class);
+        bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+    }
+
+    &#64;Override
+    protected void onStop() {
+        super.onStop();
+        // Unbind from the service
+        if (mBound) {
+            unbindService(mConnection);
+            mBound = false;
+        }
+    }
+
+    /** Called when a button is clicked (the button in the layout file attaches to
+      * this method with the android:onClick attribute) */
+    public void onButtonClick(View v) {
+        if (mBound) {
+            // Call a method from the LocalService.
+            // However, if this call were something that might hang, then this request should
+            // occur in a separate thread to avoid slowing down the activity performance.
+            int num = mService.getRandomNumber();
+            Toast.makeText(this, "number: " + num, Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    /** Defines callbacks for service binding, passed to bindService() */
+    private ServiceConnection mConnection = new ServiceConnection() {
+
+        &#64;Override
+        public void onServiceConnected(ComponentName className,
+                IBinder service) {
+            // We've bound to LocalService, cast the IBinder and get LocalService instance
+            LocalBinder binder = (LocalBinder) service;
+            mService = binder.getService();
+            mBound = true;
+        }
+
+        &#64;Override
+        public void onServiceDisconnected(ComponentName arg0) {
+            mBound = false;
+        }
+    };
+}
+</pre>
+
+<p>上の例は、{@link android.content.ServiceConnection} の実装と {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} コールバックを使用してクライアントがサービスにバインドする方法を示しています。
+次のセクションでは、サービスへのバインドのプロセスについて詳しく説明していきます。
+</p>
+
+<p class="note"><strong>注:</strong> 上記の例ではサービスから明示的にアンバウンドしていませんが、すべてのクライアントは適切なタイミング(アクティビティが一時停止したときなど)でアンバウンドする必要があります。
+</p>
+
+<p>他のサンプル コードについては、<a href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a> の <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+LocalService.java}</a> クラスと <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceActivities.html">{@code
+LocalServiceActivities.java}</a> クラスをご覧ください。</p>
+
+
+
+
+
+<h3 id="Messenger">メッセンジャーを使用する</h3>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h4>AIDL との比較</h4>
+  <p>IPC を実行する必要がある場合、インターフェースで {@link android.os.Messenger} を使う方が AIDL で実装するよりも簡単です。{@link android.os.Messenger} がすべての呼び出しをサービスにキューイングするのに対して、純粋な AIDL インターフェースでは同時に複数の要求をサービスに送るため、マルチスレッドの処理が必要になるためです。
+
+
+</p>
+  <p>ほとんどのアプリケーションにおいて、サービスはマルチスレッドを実行する必要がないため、{@link
+android.os.Messenger} を使用することでサービスが一度に 1 つの呼び出しを処理できます。サービスのマルチスレッド化が重視されている場合は、<a href="{@docRoot}guide/components/aidl.html">AIDL</a> を使用してインターフェースを定義してください。
+</p>
+</div>
+</div>
+
+<p>リモート プロセスと通信するサービスが必要な場合は、{@link android.os.Messenger} を使用してサービスのインターフェースを提供できます。
+この方法では、AIDL を使用する必要なくプロセス間通信(IPC)を実行できます。
+</p>
+
+<p>{@link android.os.Messenger} の使用方法の概要は以下のとおりです。</p>
+
+<ul>
+  <li>クライアントからの呼び出しごとにコールバックを受け取る{@link android.os.Handler} をサービスが実装します。
+</li>
+  <li>{@link android.os.Handler} を使用して {@link android.os.Messenger} オブジェクトを作成します(
+{@link android.os.Handler} への参照になります)。</li>
+  <li>{@link android.os.Messenger} が、サービスが {@link android.app.Service#onBind onBind()} からクライアントに返す {@link android.os.IBinder} を作成します。
+</li>
+  <li>クライアントが {@link android.os.IBinder} を使用して、(サービスの {@link android.os.Handler} を参照する){@link android.os.Messenger} をインスタンス化し、これを使用してクライアントが {@link android.os.Message} オブジェクトをサービスに送ります。
+
+</li>
+  <li>サービスが {@link
+android.os.Handler}、具体的には、{@link android.os.Handler#handleMessage
+handleMessage()} メソッドで、それぞれの {@link android.os.Message} を受け取ります。&mdash;</li>
+</ul>
+
+
+<p>この方法には、クライアントがサービスで呼び出す「メソッド」はありません。代わりに、クライアントはサービスが {@link android.os.Handler} で受け取る「メッセージ({@link android.os.Message} オブジェクト)」を配信します。
+
+</p>
+
+<p>以下は、{@link android.os.Messenger} インターフェースを使用するサービスの簡単な例です。</p>
+
+<pre>
+public class MessengerService extends Service {
+    /** Command to the service to display a message */
+    static final int MSG_SAY_HELLO = 1;
+
+    /**
+     * Handler of incoming messages from clients.
+     */
+    class IncomingHandler extends Handler {
+        &#64;Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_SAY_HELLO:
+                    Toast.makeText(getApplicationContext(), "hello!", Toast.LENGTH_SHORT).show();
+                    break;
+                default:
+                    super.handleMessage(msg);
+            }
+        }
+    }
+
+    /**
+     * Target we publish for clients to send messages to IncomingHandler.
+     */
+    final Messenger mMessenger = new Messenger(new IncomingHandler());
+
+    /**
+     * When binding to the service, we return an interface to our messenger
+     * for sending messages to the service.
+     */
+    &#64;Override
+    public IBinder onBind(Intent intent) {
+        Toast.makeText(getApplicationContext(), "binding", Toast.LENGTH_SHORT).show();
+        return mMessenger.getBinder();
+    }
+}
+</pre>
+
+<p>{@link android.os.Handler} の {@link android.os.Handler#handleMessage handleMessage()} メソッドが、サービスが {@link android.os.Message} を受け取る場所であり、{@link android.os.Message#what} メンバーに基づいてその後の操作を決める場面であることに注目してください。
+
+</p>
+
+<p>クライアントで必要な操作は、サービスから返された {@link
+android.os.IBinder} に基づいて {@link android.os.Messenger} を作成し、{@link
+android.os.Messenger#send send()} を使用してメッセージを送信するだけです。例として、サービスにバインドして {@code MSG_SAY_HELLO} メッセージをサービスに送信する簡単なアクティビティを次に示します。
+</p>
+
+<pre>
+public class ActivityMessenger extends Activity {
+    /** Messenger for communicating with the service. */
+    Messenger mService = null;
+
+    /** Flag indicating whether we have called bind on the service. */
+    boolean mBound;
+
+    /**
+     * Class for interacting with the main interface of the service.
+     */
+    private ServiceConnection mConnection = new ServiceConnection() {
+        public void onServiceConnected(ComponentName className, IBinder service) {
+            // This is called when the connection with the service has been
+            // established, giving us the object we can use to
+            // interact with the service.  We are communicating with the
+            // service using a Messenger, so here we get a client-side
+            // representation of that from the raw IBinder object.
+            mService = new Messenger(service);
+            mBound = true;
+        }
+
+        public void onServiceDisconnected(ComponentName className) {
+            // This is called when the connection with the service has been
+            // unexpectedly disconnected -- that is, its process crashed.
+            mService = null;
+            mBound = false;
+        }
+    };
+
+    public void sayHello(View v) {
+        if (!mBound) return;
+        // Create and send a message to the service, using a supported 'what' value
+        Message msg = Message.obtain(null, MessengerService.MSG_SAY_HELLO, 0, 0);
+        try {
+            mService.send(msg);
+        } catch (RemoteException e) {
+            e.printStackTrace();
+        }
+    }
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+
+    &#64;Override
+    protected void onStart() {
+        super.onStart();
+        // Bind to the service
+        bindService(new Intent(this, MessengerService.class), mConnection,
+            Context.BIND_AUTO_CREATE);
+    }
+
+    &#64;Override
+    protected void onStop() {
+        super.onStop();
+        // Unbind from the service
+        if (mBound) {
+            unbindService(mConnection);
+            mBound = false;
+        }
+    }
+}
+</pre>
+
+<p>この例では、サービスがクライアントにどのように応答できるのかは示されていません。サービスが応答するようにするには、クライアントで {@link android.os.Messenger} も作成する必要があります。
+その後、クライアントが {@link android.content.ServiceConnection#onServiceConnected
+onServiceConnected()} コールバックを受け取るとき、{@link android.os.Messenger#send send()} メソッドの {@link android.os.Message#replyTo} パラメータにクライアントの{@link android.os.Messenger} を含めてサービスに {@link android.os.Message} を送信します。
+
+
+</p>
+
+<p>双方向メッセージを提供する方法のサンプルについては、<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerService.html">{@code
+MessengerService.java}</a>(サービス)と <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerServiceActivities.html">{@code
+MessengerServiceActivities.java}</a>(クライアント)のサンプルをご覧ください。</p>
+
+
+
+
+
+<h2 id="Binding">サービスにバインドする</h2>
+
+<p>アプリケーションのコンポーネント(クライアント)は、{@link android.content.Context#bindService bindService()} を呼び出してサービスにバインドできます。
+次に Android システムがサービスの {@link android.app.Service#onBind
+onBind()} メソッドを呼び出し、そこからサービスとのやり取りに必要な {@link android.os.IBinder} が返されます。
+</p>
+
+<p>バインドは非同期的に行われます。{@link android.content.Context#bindService
+bindService()} は瞬時に返され、{@link android.os.IBinder} はクライアントには<em>返されません</em>。
+{@link android.os.IBinder} を受け取るには、クライアントが {@link
+android.content.ServiceConnection} のインスタンスを作成し、それを {@link android.content.Context#bindService
+bindService()} に渡す必要があります。{@link android.content.ServiceConnection} にはシステムが {@link android.os.IBinder} の配信用に呼び出すコールバック メソッドが含まれています。
+</p>
+
+<p class="note"><strong>注:</strong> サービスにバインドできるのは、アクティビティ、サービス、コンテンツ プロバイダのみです。ブロードキャスト レシーバーからサードパーティビスにはバインド<strong>できません</strong>。
+&mdash;</p>
+
+<p>そのため、クライアントからサービスにバインドするには次の操作が必要です。 </p>
+<ol>
+  <li>{@link android.content.ServiceConnection} を実装する。
+    <p>実装では次の 2 つのコールバック メソッドをオーバーライドする必要があります。</p>
+    <dl>
+      <dt>{@link android.content.ServiceConnection#onServiceConnected onServiceConnected()}</dt>
+        <dd>システムがこれを呼び出して、サービスの {@link android.app.Service#onBind onBind()} メソッドから返された {@link android.os.IBinder} を配信します。
+</dd>
+      <dt>{@link android.content.ServiceConnection#onServiceDisconnected
+onServiceDisconnected()}</dt>
+        <dd>サービスがクラッシュしたり強制終了されたりした場合など、サービスへの接続が予期せず失われたときに、Android システムがこれを呼び出します。
+これは、クライアントのアンバウンドの際には<em>呼び出されません</em>。
+</dd>
+    </dl>
+  </li>
+  <li>{@link
+android.content.Context#bindService bindService()} を呼び出して、{@link
+android.content.ServiceConnection} の実装を渡します。 </li>
+  <li>システムが {@link android.content.ServiceConnection#onServiceConnected
+onServiceConnected()} コールバック メソッドを呼び出すと、インターフェースで定義されたメソッドを使用してサービスへの呼び出しを開始できます。
+</li>
+  <li>サービスとの接続を切断するには、{@link
+android.content.Context#unbindService unbindService()} を呼び出します。
+    <p>クライアントが破棄されたときにはサービスからアンバウンドしますが、サービスが使用されていないときはシャットダウンできるよう、サービスとのやり取りが終了したときや、アクティビティが停止したときは常にアンバウンドする必要があります
+
+(バインドとアンバインドの適切なタイミングについては後半でさらに詳しく説明します)。
+</p>
+  </li>
+</ol>
+
+<p>たとえば、次のスニペットは <a href="#Binder"> Binder クラスを拡張</a>して先ほど作成したサービスにクライアントを接続しており、返された {@link android.os.IBinder} を {@code LocalService} クラスにキャストして、{@code
+LocalService} インスタンスを要求することだけが必要になります。
+
+</p>
+
+<pre>
+LocalService mService;
+private ServiceConnection mConnection = new ServiceConnection() {
+    // Called when the connection with the service is established
+    public void onServiceConnected(ComponentName className, IBinder service) {
+        // Because we have bound to an explicit
+        // service that is running in our own process, we can
+        // cast its IBinder to a concrete class and directly access it.
+        LocalBinder binder = (LocalBinder) service;
+        mService = binder.getService();
+        mBound = true;
+    }
+
+    // Called when the connection with the service disconnects unexpectedly
+    public void onServiceDisconnected(ComponentName className) {
+        Log.e(TAG, "onServiceDisconnected");
+        mBound = false;
+    }
+};
+</pre>
+
+<p>この {@link android.content.ServiceConnection} を使用して、クライアントは {@link android.content.Context#bindService bindService()} に渡すことでサービスにバインドできます。
+次に例を示します。</p>
+
+<pre>
+Intent intent = new Intent(this, LocalService.class);
+bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+</pre>
+
+<ul>
+  <li>{@link android.content.Context#bindService bindService()} の最初のパラメータは、バインドするサービス名を明示的に指定する {@link android.content.Intent} です(インテントは暗黙的である場合があります)。
+
+</li>
+<li>2 つ目のパラメータは {@link android.content.ServiceConnection} オブジェクトです。</li>
+<li>3 つ目のパラメータはバインドのオプションを示すフラグです。通常は {@link
+android.content.Context#BIND_AUTO_CREATE} でサービスがまだ存在していない場合にサービスを作成します。他の有効な値は、{@link android.content.Context#BIND_DEBUG_UNBIND} と {@link android.content.Context#BIND_NOT_FOREGROUND} か、未指定の {@code 0} です。
+
+</li>
+</ul>
+
+
+<h3>その他の注意点</h3>
+
+<p>サービスへのバインドに関する重要な注意点は次のとおりです。</p>
+<ul>
+  <li>接続が切れたときに投げられる {@link android.os.DeadObjectException} 例外は、常に処理する必要があります。
+リモート メソッドから投げられる例外はこれのみです。</li>
+  <li>オブジェクトはプロセス間で有効な参照です。 </li>
+  <li>通常は、クライアントのライフサイクルの立ち上がりと終了のタイミングに合わせて、その間でバインドとアンバインドをペア設定します。
+次に例を示します。
+    <ul>
+      <li>アクティビティが見えている間のみサービスとやり取りする必要がある場合は、
+{@link android.app.Activity#onStart onStart()} の間にバインドし、{@link
+android.app.Activity#onStop onStop()} の間にアンバインドします。</li>
+      <li>アクティビティがバックグラウンドで停止している間も応答を受け取りたい場合は、{@link android.app.Activity#onCreate onCreate()} の間にバインドし、{@link android.app.Activity#onDestroy onDestroy()} の間にアンバインドします。
+
+つまり、アクティビティの実行中は(バックグラウンドも含む)常にサービスを使用する必要があるため、サービスが別のプロセスにある場合は、プロセスの重みを上げて、システムに強制終了させやすいようにします。
+
+
+</li>
+    </ul>
+    <p class="note"><strong>注:</strong> 通常、アクティビティの {@link android.app.Activity#onResume onResume()} と {@link
+android.app.Activity#onPause onPause()} の間にはバインドとアンバインドは<strong>行いません</strong>。これは、これらのコールバックがライフサイクルの遷移すべてで発生するため、その遷移で発生するプロセスを最小限に抑える必要があるためです。
+
+また、アプリケーションの複数のアクティビティが同一サービスにバインドしていて、そのなかの 2 つのアクティビティ間の遷移が生じる場合、現在のアクティビティは次のアクティビティがバインドする(再開中)前にアンバインドされる(停止中)ため、サービスが破棄されて再作成される場合があります
+
+
+(ライフサイクルと連携したアクティビティの遷移の詳細については、「<a href="{@docRoot}guide/components/activities.html#CoordinatingActivities">Activities</a>」のドキュメントをご覧ください)。
+
+</p>
+</ul>
+
+<p>他のサンプル コードについては、 <a href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a> の <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html">{@code
+RemoteService.java}</a> クラスをご覧ください。</p>
+
+
+
+
+
+<h2 id="Lifecycle">バインドされたサービスのライフサイクルを管理する</h2>
+
+<p>サービスがすべてのクライアントからアンバインドされると、Android システムがそれを破棄します({@link android.app.Service#onStartCommand onStartCommand()} でも開始された場合を除く)。
+純粋にバインドされたサービスであれば、サービスのライフサイクルを管理する必要はありません。サービスがクライアントにバインドされているかどうかに基づいて Android システムがそれを管理します。
+
+&mdash;</p>
+
+<p>ただし、{@link android.app.Service#onStartCommand
+onStartCommand()} コールバック メソッドを実装する場合は、サービスは <em>開始された</em>とみなされるため、明示的に停止する必要があります。
+この場合、クライアントにバインドされているかどうかにかかわらず、サービスが {@link android.app.Service#stopSelf()} で自ら停止するまで、または他のコンポーネントが {@link
+android.content.Context#stopService stopService()} を呼び出すまで実行し続けます。
+
+</p>
+
+<p>さらに、サービスが開始されてバインドを許可する場合、システムが {@link android.app.Service#onUnbind onUnbind()} メソッドを呼び出すとき、次回クライアントがサービスにバインドするときに {@link android.app.Service#onRebind
+onRebind()} への呼び出しを受け取りたい場合は、{@code true} を返すようにすることもできます({@link
+android.app.Service#onBind onBind()} への呼び出しを受け取る代わりに)。{@link android.app.Service#onRebind
+onRebind()} からは void が返されますが、クライアントは {@link android.content.ServiceConnection#onServiceConnected onServiceConnected()} コールバックで {@link android.os.IBinder} を受け取ります。下の図 1 は、ライフサイクルのこの種の論理を表しています。
+
+
+
+</p>
+
+
+<img src="{@docRoot}images/fundamentals/service_binding_tree_lifecycle.png" alt="" />
+<p class="img-caption"><strong>図 1.</strong> 開始されたサービスでバインドを許可するサービスのライフサイクル
+</p>
+
+
+<p>開始されたサービスのライフサイクルの詳細については、「<a href="{@docRoot}guide/components/services.html#Lifecycle">サービス</a>」のドキュメントをご覧ください。</p>
+
+
+
+
diff --git a/docs/html-intl/intl/ja/guide/components/fragments.jd b/docs/html-intl/intl/ja/guide/components/fragments.jd
new file mode 100644
index 0000000..31fb7f5
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/components/fragments.jd
@@ -0,0 +1,812 @@
+page.title=フラグメント
+parent.title=アクティビティ
+parent.link=activities.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>本書の内容</h2>
+  <ol>
+    <li><a href="#Design">デザインの指針</a></li>
+    <li><a href="#Creating">フラグメントを作成する</a>
+      <ol>
+        <li><a href="#UI">ユーザー インターフェースを追加する</a></li>
+        <li><a href="#Adding">フラグメントをアクティビティに追加する</a></li>
+      </ol>
+    </li>
+    <li><a href="#Managing">フラグメントを管理する</a></li>
+    <li><a href="#Transactions">フラグメントのトランザクションを実行する</a></li>
+    <li><a href="#CommunicatingWithActivity">アクティビティと通信する</a>
+      <ol>
+        <li><a href="#EventCallbacks">アクティビティへのイベント コールバックを作成する</a></li>
+        <li><a href="#ActionBar">アクションバーにアイテムを追加する</a></li>
+      </ol>
+    </li>
+    <li><a href="#Lifecycle">フラグメントのライフサイクルを処理する</a>
+      <ol>
+        <li><a href="#CoordinatingWithActivity">アクティビティのライフサイクルと連携する</a></li>
+      </ol>
+    </li>
+    <li><a href="#Example">例</a></li>
+  </ol>
+
+  <h2>キークラス</h2>
+  <ol>
+    <li>{@link android.app.Fragment}</li>
+    <li>{@link android.app.FragmentManager}</li>
+    <li>{@link android.app.FragmentTransaction}</li>
+  </ol>
+  
+  <h2>関連ドキュメント</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/fragments/index.html">Building a Dynamic UI with Fragments</a></li>
+    <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">Supporting Tablets
+and Handsets</a></li>
+  </ol>
+</div>
+</div>
+
+<p>{@link android.app.Fragment} は、{@link android.app.Activity} でのユーザー インターフェースの挙動や部位を表すものです。
+1 つのアクティビティに複数のフラグメントを組み合わせてマルチペインの UI をビルドしたり、複数のアクティビティでフラグメントを再利用したりできます。
+フラグメントとは、アクティビティのモジュール型セクションのようなもので、独自のライフサイクルを持ち、独自の入力イベントを受信します。フラグメントはアクティビティの実行中に追加したり削除したりできます(別のアクティビティで再利用できる「サブ アクティビティ」のようなものです)。
+
+
+</p>
+
+<p>フラグメントは常にアクティビティに埋め込まれている必要があり、フラグメントのライフサイクルはホストのアクティビティのライフサイクルの影響を直接受けます。
+たとえば、アクティビティが一時停止しているとき、その中のすべてのフラグメントも一時停止し、アクティビティが破棄されると、すべてのフラグメントも破棄されます。
+ただし、アクティビティの実行中(<a href="{@docRoot}guide/components/activities.html#Lifecycle">ライフサイクル</a>で<em>再開</em>された状態)は、追加や削除といった操作は各フラグメントだけで行うことができます。
+
+このようなフラグメントのトランザクションを実行するとき、アクティビティで管理されているバックスタックにそれを追加することもできます。アクティビティの各バックスタック エントリは、発生したフラグメントのトランザクションの記録になります。
+
+&mdash;
+バックスタックでは、[<em>戻る</em>] ボタンを押すとフラグメントのトランザクションを戻す(前に戻る)ことができます。
+</p>
+
+<p>アクティビティのレイアウトの一部としてフラグメントを追加すると、フラグメントはアクティビティのビュー階層の {@link
+android.view.ViewGroup} に置かれ、フラグメントが自身のビュー レイアウトを定義します。フラグメントをアクティビティのレイアウトに挿入するには、アクティビティのレイアウト ファイルでフラグメントを {@code &lt;fragment&gt;} として定義するか、アプリケーション コードで既存の {@link android.view.ViewGroup} に追加します。
+
+
+
+ただし、フラグメントは必ずしもアクティビティの一部になる必要はなく、アクティビティの目に見えないワーカーとして、フラグメント独自の UI なしで使用することもできます。
+
+</p>
+
+<p>このドキュメントでは、アクティビティのバックスタックに追加した時のフラグメントの状態を維持する方法、アクティビティ内でアクティビティと他のフラグメントとイベントを共有する方法、アクティビティのアクションバーへの影響など、フラグメントを使用してアプリケーションをビルドする方法について説明します。
+
+
+</p>
+
+
+<h2 id="Design">デザインの指針</h2>
+
+<p>Android では、タブレットなどの大画面でのよりダイナミックで柔軟な UI デザインに対応するため、Android 3.0(API レベル 11)でフラグメントが採用されました。
+タブレットの画面はハンドセットよりもかなり大きいため、UI コンポーネントを組み合わせたり入れ替えたりできる領域が広くなります。
+
+フラグメントでは、ビュー階層に複雑な変更を加えることなく、そのようなデザインを実現できます。
+アクティビティのレイアウトをフラグメントに分割することで、アクティビティの外観を実行時に変更でき、それらの変更をアクティビティが管理するバックスタックに保持できます。
+
+</p>
+
+<p>たとえば新しいアプリケーションでは、1 つのフラグメントを使って左側に記事の一覧を表示したり、別のフラグメントを使って右側に記事の内容を表示したりできます。両方のフラグメントが 1 つのアクティビティに横並びに表示され、それぞれのフラグメントには自身のライフサイクル メソッドがあり、それぞれのユーザー入力イベントを処理します。
+&mdash;
+
+つまり、1 つのアクティビティで記事を選択して、別のアクティビティで記事を閲覧するのではなく、図 1 のタブレットのレイアウトのように 1 つのアクティビティ内で記事を選択して閲覧できるようになります。
+
+</p>
+
+<p>各フラグメントはモジュール型の、再利用可能なアクティビティ コンポーネントとしてデザインする必要があります。各フラグメントは独自のライフサイクル コールバックを使用して自身のレイアウトと挙動とを定義するため、1 つのフラグメントを複数のアクティビティに含めることができます。このことから、再利用可能なデザインを用いることに加えて、1 つのフラグメントを他のフラグメントから直接操作しないようにする必要があります。
+
+
+これは、モジュール型のフラグメントでは画面のサイズごとにフラグメントの組み合わせを変更できる点からも、特に重要です。
+タブレットとハンドセットの両方に対応したアプリケーションをデザインする場合、異なるレイアウト構成でフラグメントを再利用することで、利用可能な画面の領域に応じて最適な使い心地を実現できます。
+
+たとえばハンドセットの場合、同一のアクティビティ内に 2 つ以上のフラグメントが収まりきらないときは、フラグメントを分割してシングルペインの UI を提示する必要があることもあります。
+
+</p>
+
+<img src="{@docRoot}images/fundamentals/fragments.png" alt="" />
+<p class="img-caption"><strong>図 1.</strong> 1 つのアクティビティ内で、フラグメントで定義された 2 つの UI モジュールを組み合わせたタブレット用デザインと、それぞれを分けたハンドセット用デザインの例。
+
+</p>
+
+<p>引き続きニュース アプリケーションの例を使うと、アプリケーションがタブレット サイズの端末で実行中は、 2 つのフラグメントを<em>アクティビティ A</em> に埋め込むことができます。&mdash;&mdash;
+しかし、ハンドセット サイズの画面では両方のフラグメントを表示する領域が足りないため、<em>アクティビティ A</em> には記事の一覧のフラグメントだけが含まれます。記事を選択すると、記事を閲覧するための 2 つ目のフラグメントが含まれる<em>アクティビティ B</em> が開始されます。
+
+
+そのため、図 1 のようにアプリケーションはフラグメントを異なる組み合わせで再利用することで、タブレットとハンドセットの両方に対応できるようになります。
+
+</p>
+
+<p>異なる画面構成ごとに異なるフラグメントの組み合わせを用いたアプリケーションのデザインの詳細については、「<a href="{@docRoot}guide/practices/tablets-and-handsets.html">Supporting Tablets and Handsets</a>」のガイドをご覧ください。
+</p>
+
+
+
+<h2 id="Creating">フラグメントを作成する</h2>
+
+<div class="figure" style="width:327px">
+<img src="{@docRoot}images/fragment_lifecycle.png" alt="" />
+<p class="img-caption"><strong>図 2.</strong> フラグメントのライフサイクル(アクティビティの実行中)
+</p>
+</div>
+
+<p>フラグメントを作成するには、{@link android.app.Fragment} のサブクラス(またはその既存のサブクラス)を作成する必要があります。
+{@link android.app.Fragment} クラスには、{@link android.app.Activity} に非常に似ているコードがあります。
+これには、{@link android.app.Fragment#onCreate onCreate()}、{@link android.app.Fragment#onStart onStart()}、{@link android.app.Fragment#onPause onPause()}、{@link android.app.Fragment#onStop onStop()} のようなアクティビティと同様のコールバック メソッドが含まれています。
+
+実際に、既存の Android アプリケーションを変換してフラグメントを使用するには、アクティビティのコールバック メソッドから、フラグメントの各コールバック メソッドにコードを移動させるだけで。
+
+
+</p>
+
+<p>通常は、少なくとも次のライフサイクル メソッドを実装する必要があります。</p>
+
+<dl>
+  <dt>{@link android.app.Fragment#onCreate onCreate()}</dt>
+  <dd>フラグメントの作成時にシステムが呼び出します。実装内で、フラグメントが一時停止、停止、再開されたときに保持するフラグメントの必須コンポーネントを初期化する必要があります。
+
+</dd>
+  <dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
+  <dd>フラグメントが初めてユーザー インターフェースを描画するタイミングでシステムがこれを呼び出します。
+フラグメントの UI を描画するには、このメソッドからフラグメントのレイアウトのルートとなっている {@link android.view.View} を返す必要があります。
+フラグメントが UI を提示しない場合は、null を返すことができます。
+</dd>
+  <dt>{@link android.app.Activity#onPause onPause()}</dt>
+  <dd>ユーザーがフラグメントから離れたことを初めて示すときに、このメソッドを呼び出します(フラグメントが破棄されていない場合も含む)。
+通常はここで、現在のユーザー セッション後も維持する必要のある変更点を保存しておきます(ユーザーが戻ってこない可能性があるため)。
+
+</dd>
+</dl>
+
+<p>ほとんどのアプリケーションでは、各フラグメントで少なくともこれら 3 つのメソッドを実装する必要がありますが、フラグメントのライフサイクルのさまざまなステージを処理する際に使用する他のコールバック メソッドもいくつかあります。
+
+すべてのライフサイクル コールバック メソッドについては、<a href="#Lifecycle">フラグメントのライフサイクルの処理</a>のセクションで説明します。
+</p>
+
+
+<p>基本の {@link
+android.app.Fragment} クラスの代わりに拡張できるサブクラスもいくつかあります。</p>
+
+<dl>
+  <dt>{@link android.app.DialogFragment}</dt>
+  <dd>フローティング ダイアログを表示します。{@link android.app.Activity} のダイアログ ヘルパー メソッド代わりにこのクラスを使用してダイアログを作成すると、アクティビティで管理されるフラグメントのバックスタックにフラグメント ダイアログを組み込むことができるため、ユーザーは終了したフラグメントに戻ることが可能になります。
+
+
+</dd>
+
+  <dt>{@link android.app.ListFragment}</dt>
+  <dd>{@link android.app.ListActivity} と同様に、アダプタで管理されるアイテムのリストを表示します({@link
+android.widget.SimpleCursorAdapter} など)。クリック イベントを処理するための {@link
+android.app.ListFragment#onListItemClick(ListView,View,int,long) onListItemClick()} コールバックなど、リスト ビューを管理するメソッドがいくつか提供されます。
+
+</dd>
+
+  <dt>{@link android.preference.PreferenceFragment}</dt>
+  <dd>{@link android.preference.PreferenceActivity} と同様に、{@link android.preference.Preference} オブジェクトの階層をリストとして表示します。
+アプリケーションの「設定」アクティビティの作成時に便利です。
+</dd>
+</dl>
+
+
+<h3 id="UI">ユーザー インターフェースを追加する</h3>
+
+<p>通常、フラグメントはアクティビティのユーザー インターフェースの一部であり、独自のレイアウトをアクティビティに提示します。
+</p>
+
+<p>フラグメントのレイアウトを提供するには、{@link
+android.app.Fragment#onCreateView onCreateView()} コールバック メソッドを実装する必要があります。これは、フラグメントがレイアウトを描画するタイミングで Android システムが呼び出します。
+このメソッドの実装では、フラグメントのレイアウトのルートである {@link android.view.View} を返す必要があります。
+</p>
+
+<p class="note"><strong>注:</strong> フラグメントは {@link
+android.app.ListFragment} のサブクラスの場合、デフォルトの実装で {@link android.widget.ListView} が{@link android.app.Fragment#onCreateView onCreateView()} から返されるため、これを実装する必要はありません。
+</p>
+
+<p>{@link
+android.app.Fragment#onCreateView onCreateView()} からレイアウトを返すには、XML で定義した<a href="{@docRoot}guide/topics/resources/layout-resource.html">レイアウト リソース</a>からインフレートできます。これを行うため、{@link android.app.Fragment#onCreateView onCreateView()} から {@link android.view.LayoutInflater} オブジェクトが提供されます。
+
+</p>
+
+<p>たとえば、次の例では {@link android.app.Fragment} のサブクラスが {@code example_fragment.xml} ファイルからレイアウトをロードします。
+</p>
+
+<pre>
+public static class ExampleFragment extends Fragment {
+    &#64;Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.example_fragment, container, false);
+    }
+}
+</pre>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>レイアウトを作成する</h3>
+  <p>上の例では、{@code R.layout.example_fragment} はアプリケーション リソースに保存されている {@code example_fragment.xml} という名前のレイアウト リソースへの参照です。
+XML でレイアウトを作成する方法の詳細いついては、「<a href="{@docRoot}guide/topics/ui/index.html">ユーザー インターフェース</a>」のドキュメントをご覧ください。
+
+</p>
+</div>
+</div>
+
+<p>{@link android.app.Fragment#onCreateView
+onCreateView()} に渡される {@code container} パラメータは、フラグメントのレイアウトが挿入される {@link android.view.ViewGroup} の親になります(アクティビティのレイアウトから)。
+
+{@code savedInstanceState} パラメータは、フラグメントが再開された場合にフラグメントの前のインスタンスに関する情報を提供する {@link android.os.Bundle} です(状態の復元の詳細については、<a href="#Lifecycle">フラグメントのライフサイクルの処理</a>で説明します)。
+
+
+</p>
+
+<p>{@link android.view.LayoutInflater#inflate(int,ViewGroup,boolean) inflate()} メソッドは、次の 3 つの引数を受け取ります。
+</p>
+<ul>
+  <li>拡張するレイアウトのリソース ID。</li>
+  <li>インフレートされたレイアウトの親となる {@link android.view.ViewGroup}。システムがインフレートされたレイアウトのルートビュー(親ビューが指定)にレイアウト パラメータ適用するには、{@code
+container} を渡すことが重要です。
+</li>
+  <li>インフレート中に、インフレートされたレイアウトを {@link
+android.view.ViewGroup}(2 つ目のパラメータ)にアタッチすべきかどうかを示すブール値(この場合、システムが既にインフレートされたレイアウトを {@code
+container} に挿入しているため、false になります。true を渡すと、最終レイアウトに余分なビューグループが作成されます。
+&mdash;</li>
+</ul>
+
+<p>ここまで、レイアウトを提供するフラグメントの作成方法について説明しました。次は、フラグメントをアクティビティに追加する必要があります。
+</p>
+
+
+
+<h3 id="Adding">フラグメントをアクティビティに追加する</h3>
+
+<p>通常、フラグメントはホスト アクティビティに UI の一部を提供し、アクティビティの全体的なビュー階層の一部として埋め込まれます。
+アクティビティのレイアウトにフラグメントを追加する方法は 2 つあります。
+</p>
+
+<ul>
+  <li><b>アクティビティのレイアウト ファイル内でフラグメントを宣言する</b>
+<p>この場合、フラグメントがビューであるかのようにレイアウト プロパティを指定できます。
+以下は、2 つのフラグメントを持つアクティビティのレイアウト ファイルです。
+</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"&gt;
+    &lt;fragment android:name="com.example.news.ArticleListFragment"
+            android:id="@+id/list"
+            android:layout_weight="1"
+            android:layout_width="0dp"
+            android:layout_height="match_parent" /&gt;
+    &lt;fragment android:name="com.example.news.ArticleReaderFragment"
+            android:id="@+id/viewer"
+            android:layout_weight="2"
+            android:layout_width="0dp"
+            android:layout_height="match_parent" /&gt;
+&lt;/LinearLayout&gt;
+</pre>
+  <p>{@code &lt;fragment&gt;} の {@code android:name} 属性は、{@link
+android.app.Fragment} クラスを指定してレイアウトにインスタンスを作成します。</p>
+
+<p>システムがこのアクティビティ レイアウトを作成するとき、レイアウトで指定された各フラグメントのインスタンスを作成し、それぞれの {@link android.app.Fragment#onCreateView onCreateView()} メソッドを呼び出して、各フラグメントのレイアウトを取得します。
+
+システムがフラグメントから返された{@link android.view.View} を {@code &lt;fragment&gt;} 要素の代わりに挿入します。
+</p>
+
+<div class="note">
+  <p><strong>注:</strong> 各フラグメントには、アクティビティの再開時にフラグメントを復元するためにシステムが使用できる(そしてフラグメントをキャプチャして削除などのトランザクションを実行する際に使用できる)一意の識別子が必要です
+
+フラグメントの ID を提供するには、次の 3 つの方法があります。
+</p>
+  <ul>
+    <li>{@code android:id} 属性に一意の ID を提供する。</li>
+    <li>{@code android:tag} 属性に一意の文字列を提供する。</li>
+    <li>上記のいずれも提供しない場合、システムはコンテナビューの ID を使用します。
+</li>
+  </ul>
+</div>
+  </li>
+
+  <li><b>または、既存の {@link android.view.ViewGroup} にプログラムを使用してフラグメントを追加します</b>。
+<p>アクティビティの実行中は、いつでもフラグメントをアクティビティ レイアウトに追加できます。必要なのは、フラグメントを配置する場所に {@link
+android.view.ViewGroup} を指定するだけです。
+</p>
+  <p>アクティビティ内にフラグメントのトランザクション(フラグメントの追加、削除、置換など)を作るには、{@link android.app.FragmentTransaction} からの API を使用する必要があります。
+{@link android.app.FragmentTransaction} のインスタンスは、{@link android.app.Activity} から次のようにして取得できます。
+</p>
+
+<pre>
+FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()}
+FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
+</pre>
+
+<p>次に、{@link
+android.app.FragmentTransaction#add(int,Fragment) add()} メソッドを使用して、追加するフラグメントと挿入するビューを指定してフラグメントを追加できます。
+次に例を示します。</p>
+
+<pre>
+ExampleFragment fragment = new ExampleFragment();
+fragmentTransaction.add(R.id.fragment_container, fragment);
+fragmentTransaction.commit();
+</pre>
+
+  <p>{@link android.app.FragmentTransaction#add(int,Fragment) add()} に渡される最初の引数はフラグメントを配置する {@link android.view.ViewGroup} でリソース ID で指定されており、2 つ目のパラメータは追加するフラグメントです。 
+
+</p>
+  <p>{@link android.app.FragmentTransaction} で変更を加えたら、{@link android.app.FragmentTransaction#commit} を呼び出して変更を適用する必要があります。
+
+</p>
+  </li>
+</ul>
+
+
+<h4 id="AddingWithoutUI">UI のないフラグメントを追加する</h4>
+
+<p>上の例では、UI を提供するためにフラグメントをアクティビティに追加する方法を紹介しましたが、UI を提示せずにアクティビティのバックグラウンド動作を提供するためにフラグメントを使うこともできます。
+
+</p>
+
+<p>UI のないフラグメントを追加するには、{@link
+android.app.FragmentTransaction#add(Fragment,String)} を使用してアクティビティからフラグメントを追加します(ビュー ID ではなくフラグメントの一意の文字列である「タグ」を提供します)。
+これでフラグメントが追加されますが、アクティビティ レイアウトのビューには関連付けられていないため、{@link
+android.app.Fragment#onCreateView onCreateView()} への呼び出しは受け取りません。
+そのため、このメソッドを実装する必要はありません。</p>
+
+<p>フラグメントに文字列のタグを提供するのは UI のないフラグメントの場合だけではありません。UI のあるフラグメントにも文字列のタグを提供することはできますが、UI のないフラグメントにとっては、文字列のタグがフラグメントを識別する唯一の手段になります。&mdash;
+&mdash;
+後でアクティビティからフラグメントを取得する場合は、 {@link android.app.FragmentManager#findFragmentByTag
+findFragmentByTag()} を使用する必要があります。
+</p>
+
+<p>たとえば、フラグメントを UI を持たないバックグラウンド ワーカーとして使用するアクティビティの場合は、SDK サンプルに含まれている(Android SDK マネージャーで利用可能){@code
+FragmentRetainInstance.java} のサンプルでシステムに <code>&lt;sdk_root&gt;/APIDemos/app/src/main/java/com/example/android/apis/app/FragmentRetainInstance.java</code> として置かれているものをご覧ください。
+
+</p>
+
+
+
+<h2 id="Managing">フラグメントを管理する</h2>
+
+<p>アクティビティのフラグメントを管理するには、{@link android.app.FragmentManager} を使用する必要があります。フラグメントを取得するには、アクティビティから {@link android.app.Activity#getFragmentManager()} を呼び出します。
+</p>
+
+<p>{@link android.app.FragmentManager} では、次の操作が可能です。</p>
+
+<ul>
+  <li>{@link
+android.app.FragmentManager#findFragmentById findFragmentById()}(アクティビティ レイアウトで UI を提供するフラグメントの場合)や {@link android.app.FragmentManager#findFragmentByTag
+findFragmentByTag()}(UI を提供しないフラグメントの場合)を使用して、アクティビティにあるフラグメントを取得する。
+</li> 
+  <li>{@link
+android.app.FragmentManager#popBackStack()} を使用してフラグメントをバックスタックから取り出す(ユーザーによる [<em>戻る</em>] コマンドをシミュレートする)。</li>
+  <li>{@link
+android.app.FragmentManager#addOnBackStackChangedListener addOnBackStackChangedListener()} を使用して、バックスタックの変更に対するリスナを登録する。</li>
+</ul>
+
+<p>これらのメソッドや他のメソッドの詳細については、{@link
+android.app.FragmentManager} クラスのドキュメントをご覧ください。</p>
+
+<p>前のセクションで説明したように、{@link android.app.FragmentManager} を使用して {@link android.app.FragmentTransaction} を開くことで、フラグメントの追加や削除といったトランザクションを実行することもできます。
+
+</p>
+
+
+<h2 id="Transactions">フラグメントのトランザクションを実行する</h2>
+
+<p>アクティビティでのフラグメントの使用における優れた機能として、フラグメントを追加、削除、置換したり、ユーザー操作への応答にフラグメントを使用して他のアクションを実行したりできる点が挙げられます。
+アクティビティに加える変更はそれぞれ 1 つのトランザクションとして、{@link
+android.app.FragmentTransaction} の API を使用して実行できます。
+各トランザクションはアクティビティが管理するバックスタックに保存でき、ユーザーはフラグメントの変更を元に戻すことができます(アクティビティ間で元に戻す動作と似ています)。
+
+</p>
+
+<p>{@link android.app.FragmentTransaction} のインスタンスは、次のように {@link
+android.app.FragmentManager} から作成できます。</p>
+
+<pre>
+FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()};
+FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
+</pre>
+
+<p>各トランザクションは、同時に実行する一連の変更点です。{@link
+android.app.FragmentTransaction#add add()}、{@link android.app.FragmentTransaction#remove remove()}、{@link android.app.FragmentTransaction#replace replace()} などのメソッドを使って、トランザクションで実行するすべての変更点をセットアップできます。
+
+次に、トランザクションをアクティビティに適用するには、{@link android.app.FragmentTransaction#commit()} を呼び出す必要があります。
+</p>
+</dl>
+
+<p>ただし、{@link
+android.app.FragmentTransaction#commit()} を呼び出す前に、{@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()} を呼び出して、フラグメントのトランザクションのバックスタックにトランザクションを追加することもできます。
+このバックスタックはアクティビティによって管理され、ユーザーが [<em>戻る</em>] ボタンを押して前のフラグメントの状態に戻れるようにします。
+</p>
+
+<p>例として、フラグメントを別のフラグメントに置き換えて、バックスタックで前の状態を保持する方法を次に示します。
+</p>
+
+<pre>
+// Create new fragment and transaction
+Fragment newFragment = new ExampleFragment();
+FragmentTransaction transaction = getFragmentManager().beginTransaction();
+
+// Replace whatever is in the fragment_container view with this fragment,
+// and add the transaction to the back stack
+transaction.replace(R.id.fragment_container, newFragment);
+transaction.addToBackStack(null);
+
+// Commit the transaction
+transaction.commit();
+</pre>
+
+<p>この例では、{@code R.id.fragment_container} ID で識別されるレイアウト コンテナに現在あるフラグメント(存在する場合)を {@code newFragment} が置き換えます。{@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()} を呼び出すと、置き換えのトランザクションがバックスタックに保存されるため、ユーザーはトランザクションを元に戻して、[<em>戻る</em>] ボタンを押すことで前のフラグメントに戻れるようになります。
+
+
+</p>
+
+<p>トランザクションに複数の変更を加えて({@link
+android.app.FragmentTransaction#add add()} や {@link android.app.FragmentTransaction#remove
+remove()} など)、{@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()} を呼び出した場合、{@link android.app.FragmentTransaction#commit commit()} を呼び出す前に適用されたすべての変更点が 1 つのトランザクションとしてバックスタックに追加され、[<em>戻る</em>] ボタンを押すとすべてが同時に元に戻るようになります。
+
+</p>
+
+<p>次の場合を除き、{@link android.app.FragmentTransaction} に加える変更の順序は影響しません。
+</p>
+<ul>
+  <li>{@link android.app.FragmentTransaction#commit()} は最後に呼び出す必要があります。</li>
+  <li>複数のフラグメントを同じコンテナに追加する場合、追加する順序がビュー階層に表示される順序になります。
+</li>
+</ul>
+
+<p>フラグメントを削除するトランザクションの実行時に {@link android.app.FragmentTransaction#addToBackStack(String)
+addToBackStack()} を呼び出さない場合、トランザクションの実行時にそのフラグメントは破棄され、ユーザーは操作を元に戻すことができなくなります。
+一方で、フラグメントの削除時に {@link android.app.FragmentTransaction#addToBackStack(String) addToBackStack()} を呼び出した場合、フラグメントは<em>停止</em>状態になり、ユーザーが元に戻した時に再開します。
+
+
+</p>
+
+<p class="note"><strong>ヒント:</strong> それぞれのフラグメントのトランザクションでは、コミットする前に {@link android.app.FragmentTransaction#setTransition setTransition()} と呼ばれる遷移のアニメーションを適用できます。
+
+</p>
+
+<p>{@link android.app.FragmentTransaction#commit()} を呼び出してもトランザクションはすぐには実行されません。
+具体的には、アクティビティの UI スレッド(「メイン」スレッド)で実行可能になったときにすぐに実行されるようスケジュールされます。
+ただし、必要であれば UI スレッドから {@link
+android.app.FragmentManager#executePendingTransactions()} を呼び出して、{@link android.app.FragmentTransaction#commit()} から送信されたトランザクションをすぐに実行することもできます。
+通常、トランザクションが他のスレッドのジョブに依存していない限り、この操作は必要ありません。
+</p>
+
+<p class="caution"><strong>警告:</strong> {@link
+android.app.FragmentTransaction#commit commit()} を使用したトランザクションをコミットできるのは、アクティビティが<a href="{@docRoot}guide/components/activities.html#SavingActivityState">状態を保存</a>する前(ユーザーがアクティビティを離れるとき)にのみに限定されます。
+それ以降にコミットしようとすると、例外がスローされます。
+これは、アクティビティの復元が必要な場合に、コミット後のステータスが失われてしまう可能性があるためです。
+コミットが失われてもよい場合は、{@link
+android.app.FragmentTransaction#commitAllowingStateLoss()} を使用します。</p>
+
+
+
+
+<h2 id="CommunicatingWithActivity">アクティビティと通信する</h2>
+
+<p>{@link android.app.Fragment} が {@link android.app.Activity} から独立したフラグメントとして実行されていて、複数のアクティビティ内で使用可能であっても、フラグメントの特定のインスタンスは、それが含まれるアクティビティに直接結び付いています。
+
+</p>
+
+<p>具体的には、フラグメントは {@link
+android.app.Fragment#getActivity()} を使用して {@link android.app.Activity} インスタンスにアクセスでき、アクティビティのレイアウトでビューを見つけるなどのタスクを簡単に実行できます。
+</p>
+
+<pre>
+View listView = {@link android.app.Fragment#getActivity()}.{@link android.app.Activity#findViewById findViewById}(R.id.list);
+</pre>
+
+<p>同様に、アクティビティが {@link
+android.app.FragmentManager#findFragmentById findFragmentById()} や {@link
+android.app.FragmentManager#findFragmentByTag findFragmentByTag()} を使って {@link android.app.FragmentManager} から {@link android.app.Fragment} への参照を取得することで、フラグメント内のメソッドを呼び出すこともできます。
+次に例を示します。</p>
+
+<pre>
+ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
+</pre>
+
+
+<h3 id="EventCallbacks">アクティビティへのイベント コールバックを作成する</h3>
+
+<p>アクティビティとイベントを共有するフラグメントが必要になる場面もあります。これを実現するには、フラグメント内でコールバック インターフェースを定義して、ホスト アクティビティがそれを実装するよう要求します。
+
+アクティビティがインターフェースを介してコールバックを受け取ると、必要に応じてレイアウト内の他のフラグメントと情報を共有します。
+</p>
+
+<p>たとえば、新しいアプリケーションでアクティビティ内に、記事のリストを表示するフラグメント(フラグメント A)と、記事を表示するフラグメント(フラグメント B)の 2 つのフラグメントがある場合、リストのアイテムが選択されたときに、フラグメント B に記事を表示するよう伝えるため、フラグメント A から選択されたことをアクティビティに伝える必要があります。&mdash;
+&mdash;
+ここでは、{@code OnArticleSelectedListener} インターフェースがフラグメント A で宣言されています。
+</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    ...
+    // Container Activity must implement this interface
+    public interface OnArticleSelectedListener {
+        public void onArticleSelected(Uri articleUri);
+    }
+    ...
+}
+</pre>
+
+<p>次に、フラグメントのホストであるアクティビティが {@code OnArticleSelectedListener} インターフェースを実装して {@code onArticleSelected()} をオーバーライドし、フラグメント B にフラグメント A からのイベントを通知します。ホスト アクティビティがこのインターフェースを確実に実装するようにするため、フラグメント A の {@link
+android.app.Fragment#onAttach onAttach()} コールバック メソッド(フラグメントをアクティビティに追加するときにシステムが呼び出すメソッド)が、{@link android.app.Fragment#onAttach
+onAttach()} に渡される {@link android.app.Activity} をキャストして {@code OnArticleSelectedListener} のインスタンスを登録します。
+
+
+
+
+</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    OnArticleSelectedListener mListener;
+    ...
+    &#64;Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        try {
+            mListener = (OnArticleSelectedListener) activity;
+        } catch (ClassCastException e) {
+            throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener");
+        }
+    }
+    ...
+}
+</pre>
+
+<p>アクティビティがインターフェースを実装していない場合は、フラグメントは {@link java.lang.ClassCastException} をスローします。成功すると、{@code mListener} メンバーがアクティビティの {@code OnArticleSelectedListener} の実装への参照を保持でき、フラグメント A が {@code OnArticleSelectedListener} インターフェースで定義されたコールバック メソッドを呼び出すことでアクティビティとイベントを共有できるようになります。
+
+
+
+たとえば、フラグメント A は {@link android.app.ListFragment} の拡張で、ユーザーがリストアイテムをクリックするたびに、システムがフラグメントの {@link android.app.ListFragment#onListItemClick
+onListItemClick()} を呼び出し、それが{@code onArticleSelected()} を呼び出してアクティビティとイベントを共有します。
+
+
+</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    OnArticleSelectedListener mListener;
+    ...
+    &#64;Override
+    public void onListItemClick(ListView l, View v, int position, long id) {
+        // Append the clicked item's row ID with the content provider Uri
+        Uri noteUri = ContentUris.{@link android.content.ContentUris#withAppendedId withAppendedId}(ArticleColumns.CONTENT_URI, id);
+        // Send the event and Uri to the host activity
+        mListener.onArticleSelected(noteUri);
+    }
+    ...
+}
+</pre>
+
+<p>{@link
+android.app.ListFragment#onListItemClick onListItemClick()} に渡される {@code id} パラメータはクリックされたアイテムの行 ID で、アクティビティ(または他のフラグメント)がアプリケーションの {@link
+android.content.ContentProvider} から記事を取得する際に使用します。
+</p>
+
+<p><!--To see a complete implementation of this kind of callback interface, see the <a
+href="{@docRoot}resources/samples/NotePad/index.html">NotePad sample</a>. -->コンテンツ プロバイダの使用に関する詳細については、「<a href="{@docRoot}guide/topics/providers/content-providers.html">コンテンツ プロバイダ</a>」のドキュメントをご覧ください。
+</p>
+
+
+
+<h3 id="ActionBar">アクションバーにアイテムを追加する</h3>
+
+<p>フラグメントは、{@link android.app.Fragment#onCreateOptionsMenu(Menu,MenuInflater) onCreateOptionsMenu()} を実装することでアクティビティの<a href="{@docRoot}guide/topics/ui/menus.html#options-menu">オプション メニュー</a>(とその<a href="{@docRoot}guide/topics/ui/actionbar.html">アクション バー</a>)にメニュー アイテムを提供することができます。
+ただし、このメソッドが呼び出しを受け取るには、{@link
+android.app.Fragment#onCreate(Bundle) onCreate()} の間に {@link
+android.app.Fragment#setHasOptionsMenu(boolean) setHasOptionsMenu()} を呼び出して、フラグメントがオプション メニューにアイテムを追加することを示す必要があります(これを行わない場合、フラグメントは {@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()} への呼び出しを受け取りません)。
+
+
+</p>
+
+<p>フラグメントから追加するアイテムはすべて、既存のメニュー アイテムに追加されます。
+また、メニュー アイテムが選択されたとき、フラグメントは {@link
+android.app.Fragment#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} へのコールバックも受け取ります。
+</p>
+
+<p>また、{@link
+android.app.Fragment#registerForContextMenu(View) registerForContextMenu()} を呼び出して、フラグメントのレイアウトにビューを登録してコンテキスト メニューを提供することもできます。ユーザーがコンテキスト メニューを開くと、フラグメントは {@link
+android.app.Fragment#onCreateContextMenu(ContextMenu,View,ContextMenu.ContextMenuInfo)
+onCreateContextMenu()} への呼び出しを受け取ります。
+ユーザーがアイテムを選択すると、フラグメントは {@link
+android.app.Fragment#onContextItemSelected(MenuItem) onContextItemSelected()} への呼び出しを受け取ります。</p>
+
+<p class="note"><strong>注:</strong> 追加するメニュー アイテムごとにフラグメントは on-item-selected コールバックを受け取りますが、ユーザーがメニュー アイテムを選択したときに最初にそれぞれのコールバックを受け取るのはアクティビティになります。
+
+アクティビティの on-item-selected コールバックの実装で、選択されたアイテムが処理されなかった場合、イベントはフラグメントのコールバックに渡されます。
+この挙動は、オプション メニューとコンテキスト メニューの両方に適用されます。
+</p>
+
+<p>メニューの詳細については、デベロッパー ガイドの「<a href="{@docRoot}guide/topics/ui/menus.html">メニュー</a>」と「<a href="{@docRoot}guide/topics/ui/actionbar.html">アクションバー</a>」をご覧ください。</p>
+
+
+
+
+<h2 id="Lifecycle">フラグメントのライフサイクルを処理する</h2>
+
+<div class="figure" style="width:350px">
+<img src="{@docRoot}images/activity_fragment_lifecycle.png" alt="" />
+<p class="img-caption"><strong>図 3.</strong> フラグメントのライフサイクルに対するアクティビティのライフサイクルの影響。
+</p>
+</div>
+
+<p>フラグメントのライフサイクルの管理は、アクティビティのライフサイクルの管理によく似ています。アクティビティと同様に、フラグメントには次の 3 つの状態があります。
+</p>
+
+<dl>
+  <dt><i>再開状態</i></dt>
+    <dd>フラグメントが実行中のアクティビティで表示されている。</dd>
+
+  <dt><i>一時停止状態</i></dt>
+    <dd>他のアクティビティがフォアグラウンドにあり、フォーカスがあるが、このアクティビティも表示されている(フォアグラウンドにある別のアクティビティは半透明になっているか、全画面をカバーしていない)。
+
+</dd>
+
+  <dt><i>停止状態</i></dt>
+    <dd>フラグメントは表示されていない。ホスト アクティビティが停止状態か、フラグメントがアクティビティから削除されたが、バックスタックに追加されている。
+停止状態のフラグメントはまだ存続しています(すべての状態とメンバー情報がシステムで保持されています)。
+ただし、アクティビティが破棄されるとユーザーには表示されなくなり、フラグメントも破棄されます。
+</dd>
+</dl>
+
+<p>さらに、アクティビティと同様に、アクティビティのプロセスが破棄されて、アクティビティが再作成されたときにフラグメントの状態を復元する必要がある場合は、 {@link
+android.os.Bundle} を使用してフラグメントの状態を保持できます。
+フラグメントの {@link
+android.app.Fragment#onSaveInstanceState onSaveInstanceState()} コールバックの間に状態を保存して、{@link android.app.Fragment#onCreate onCreate()}、{@link
+android.app.Fragment#onCreateView onCreateView()}、{@link
+android.app.Fragment#onActivityCreated onActivityCreated()} の間にそれを復元できます。
+状態の保存の詳細については、「<a href="{@docRoot}guide/components/activities.html#SavingActivityState">Activities</a>」のドキュメントをご覧ください。
+
+</p>
+
+<p>アクティビティとフラグメントのライフサイクルの最も重要な違いは、バックスタックでのそれぞれの保存方法です。
+アクティビティは、デフォルトで停止状態の時にシステムが管理するアクティビティのバックスタックに置かれますが(<a href="{@docRoot}guide/components/tasks-and-back-stack.html">タスクとバックスタック</a> で説明したようにユーザーが [<em>戻る</em>] ボタンで前に戻ることができるように)、フラグメントの場合は、フラグメントを削除するトランザクションの間に {@link
+android.app.FragmentTransaction#addToBackStack(String) addToBackStack()} を呼び出してインスタンスを保存するよう明示的に要求した場合のみ、ホスト アクティビティが管理するバックスタックに置かれます。
+
+
+
+
+</p>
+
+<p>これ以外については、フラグメントのライフサイクルの管理は、アクティビティのライフサイクルの管理とほとんど同じです。
+そのため、<a href="{@docRoot}guide/components/activities.html#Lifecycle">アクティビティのライフサイクルの管理</a>におけるベスト プラクティスがフラグメントにも適用されます。
+もう 1 つ理解しておくべき事項は、アクティビティの寿命がどのようにフラグメントの寿命に影響を与えるかという点です。
+</p>
+
+<p class="caution"><strong>警告:</strong> {@link android.app.Fragment} 内に {@link android.content.Context} オブジェクトが必要な場合は、{@link android.app.Fragment#getActivity()} を呼び出すことができます。ただし、{@link android.app.Fragment#getActivity()} はフラグメントがアクティビティにアタッチされている場合にのみ呼び出すようにしてください。
+
+
+フラグメントがまだアタッチされていない場合や、ライフサイクルの終了時にデタッチされた場合は、{@link android.app.Fragment#getActivity()} は null を返します。
+</p>
+
+
+<h3 id="CoordinatingWithActivity">アクティビティのライフサイクルと連携する</h3>
+
+<p>フラグメントが含まれるアクティビティのライフサイクルは、フラグメントのライフサイクルに直接影響し、アクティビティに対する各ライフサイクル コールバックは、各フラグメントに対して同様のコールバックをもたらします。
+
+たとえば、アクティビティが {@link android.app.Activity#onPause} を受け取ると、アクティビティ内の各フラグメントが {@link android.app.Fragment#onPause} を受け取ります。
+</p>
+
+<p>ただし、フラグメントにはフラグメントの UI をビルドしたり破棄したりするアクションを実行する際のアクティビティとの独自のやり取りを処理する追加のライフサイクル コールバックがいくつかあります。これらの追加のコールバック メソッドは次のとおりです。
+
+</p>
+
+<dl>
+  <dt>{@link android.app.Fragment#onAttach onAttach()}</dt>
+    <dd>フラグメントがアクティビティと関連付けられたときに呼び出されます(ここで {@link
+android.app.Activity} が渡されます)。</dd>
+  <dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
+    <dd>フラグメントに関連付けられたビュー階層を作成する際に呼び出されます。</dd>
+  <dt>{@link android.app.Fragment#onActivityCreated onActivityCreated()}</dt>
+    <dd>アクティビティの {@link android.app.Activity#onCreate
+onCreate()} メソッドが戻ったときに呼び出されます。</dd>
+  <dt>{@link android.app.Fragment#onDestroyView onDestroyView()}</dt>
+    <dd>フラグメントに関連付けられたビュー階層が削除されたときに呼び出されます。</dd>
+  <dt>{@link android.app.Fragment#onDetach onDetach()}</dt>
+    <dd>フラグメントとアクティビティとの関連付けが解除されたときに呼び出されます。</dd>
+</dl>
+
+<p>図 3 は、ホスト アクティビティの影響を受けたフラグメントのライフサイクルのフローを表しています。
+この図から、アクティビティの一連の状態によって、フラグメントが受け取るコールバック メソッドがどのように決められているかがわかります。
+たとえば、アクティビティが {@link
+android.app.Activity#onCreate onCreate()} コールバックを受け取ると、アクティビティ内のフラグメントは {@link android.app.Fragment#onActivityCreated onActivityCreated()} コールバックまでを受け取ります。
+</p>
+
+<p>アクティビティが再開状態になると、アクティビティでのフラグメントの追加や削除を自由に行えます。
+つまり、アクティビティが再開された状態が、フラグメントのライフサイクルを独立して変更できる唯一の期間になります。
+</p>
+
+<p>ただし、アクティビティが再開状態でなくなると、フラグメントはアクティビティによって再度ライフサイクル間を通過することになります。
+</p>
+
+
+
+
+<h2 id="Example">例</h2>
+
+<p>このドキュメントで解説した内容をすべて網羅するため、2 つのフラグメントを使用して 2 つのペインのレイアウトを作成するアクティビティの例を紹介します。
+次のアクティビティには、シェイクスピア劇のタイトル リストを表示するフラグメントと、リストから劇が選択されたときに劇のあらすじを表示するフラグメントがあります。
+
+また、ここでは画面構成によって異なるフラグメント構成を提供する方法も示しています。
+</p>
+
+<p class="note"><strong>注:</strong> このアクティビティのすべてのソース コードは、<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.html">{@code
+FragmentLayout.java}</a> で入手できます。
+</p>
+
+<p>メイン アクティビティでは、通常の方法で {@link
+android.app.Activity#onCreate onCreate()} の間にレイアウトを適用します。</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java main}
+
+<p>適用されるレイアウトは {@code fragment_layout.xml} です。</p>
+
+{@sample development/samples/ApiDemos/res/layout-land/fragment_layout.xml layout}
+
+<p>このレイアウトを使って、アクティビティがレイアウトをロードするとすぐにシステムが {@code TitlesFragment}(これが劇のタイトルをリストします)のインスタンスを作成します。このとき、{@link android.widget.FrameLayout} (劇のあらすじを表示するフラグメントの目的地)が画面右側を使用し、残りは空白の状態です。
+
+
+ご覧のように、フラグメントが {@link android.widget.FrameLayout} に置かれるのはユーザーがアイテムを選択してからになります。
+</p>
+
+<p>ただし、画面構成によっては、劇の一覧とあらすじを横並びに表示するほどの幅がない場合もあります。
+そのため、上記のレイアウトは横方向の画面構成の場合のみ使用され、{@code res/layout-land/fragment_layout.xml} に保存されます。
+</p>
+
+<p>画面が縦方向の場合、システムは次のレイアウトを適用して {@code res/layout/fragment_layout.xml} に保存します。
+</p>
+
+{@sample development/samples/ApiDemos/res/layout/fragment_layout.xml layout}
+
+<p>このレイアウトには、{@code TitlesFragment} のみが含まれます。つまり、端末が縦方向の場合、劇のタイトルのみが表示されます。
+そのため、この構成時にユーザーがリストのアイテムをクリックしたとき、アプリケーションは 2 つ目のフラグメントをロードする代わりに新しいアクティビティを開始してあらすじを表示します。
+
+</p>
+
+<p>次に、フラグメントのクラスでこれをどう実現するのかを見ていきます。まず、{@code
+TitlesFragment} はシェイクスピア劇のタイトル リストを表示します。このフラグメントは {@link
+android.app.ListFragment} を拡張し、リスト ビューの動作の処理のほとんどを委ねます。</p>
+
+<p>このコードをよく見ると、ユーザーがリストのアイテムをクリックしたときの挙動が 2 つ考えられます。2 つのレイアウトのどちらがアクティブになっているかによって、新しいフラグメントを作成して表示することで同じアクティビティで詳細を表示するか({@link
+android.widget.FrameLayout} にフラグメントを追加する)、新しいアクティビティを(フラグメントを表示できる場所に)開始するかのいずれかになります。
+
+</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java titles}
+
+<p>2 つ目のフラグメントである {@code DetailsFragment} は、{@code TitlesFragment} のリストで選択された劇のあらすじを表示します。
+</p>
+ 
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
+
+<p>{@code TitlesFragment} クラスで説明したように、ユーザーがリストアイテムをクリックしたときに、現在のレイアウトに{@code R.id.details} ビュー({@code DetailsFragment} が属する場所)が<em>含まれていない</em>場合、アプリケーションは {@code DetailsActivity} のアクティビティを開始してアイテムのコンテンツを表示します。
+
+
+</p>
+
+<p>次の {@code DetailsActivity} では、画面が縦方向のときに単純に {@code DetailsFragment} を埋め込んで選択された劇のあらすじを表示します。
+</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
+details_activity}
+ 
+<p>構成が横方向の場合はアクティビティは自ら終了するため、メイン アクティビティが引き継いで {@code DetailsFragment} を {@code TitlesFragment} の横に表示できます。これは、ユーザーが縦方向のときに {@code DetailsActivity} を開始し、その後横方向に回転した(ここで現在のアクティビティが再開される)ときに起こることがあります。
+
+
+</p>
+
+
+<p>フラグメントを使用したその他のサンプルとこの例の完全なソース ファイルについては、<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/index.html#Fragment">ApiDemos</a>(<a href="{@docRoot}resources/samples/get.html">SDK コンポーネントのサンプル</a>から入手可能)にある API デモサンプルをご覧ください。
+
+</p>
+
+
diff --git a/docs/html-intl/intl/ja/guide/components/fundamentals.jd b/docs/html-intl/intl/ja/guide/components/fundamentals.jd
new file mode 100644
index 0000000..46e9868
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/components/fundamentals.jd
@@ -0,0 +1,480 @@
+page.title=アプリケーションの基礎
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本書の内容</h2>
+<ol>
+<li><a href="#Components">アプリのコンポーネント</a>
+  <ol>
+    <li><a href="#ActivatingComponents">コンポーネントをアクティベートする</a></li>
+  </ol>
+</li>
+<li><a href="#Manifest">マニフェスト ファイル</a>
+  <ol>
+    <li><a href="#DeclaringComponents">コンポーネントを宣言する</a></li>
+    <li><a href="#DeclaringRequirements">アプリの要件を宣言する</a></li>
+  </ol>
+</li>
+<li><a href="#Resources">アプリのリソース</a></li>
+</ol>
+</div>
+</div>
+
+<p>Android アプリは Java プログラミング言語で記述されています。APKAndroid SDK ツールがコードを&mdash;データとリソース ファイルと共に、
+&mdash;APK  <i>(Android パッケージ)にコンパイルします。</i>これは、
+{@code .apk} という接尾語の付いたアーカイブ ファイルです。1 つの APK ファイルにはAndroid アプリのすべてのコンテンツが含まれており、Android 端末はアプリをインストールする際にこのファイルを使用します。
+</p>
+
+<p>端末にインストールすると、各 Android アプリはそれぞれのセキュリティ サンドボックス内で動作します。 </p>
+
+<ul>
+ <li>Android オペレーティング システムはマルチユーザーの Linux システムであり、各アプリが異なるユーザーになります。
+</li>
+
+<li>デフォルトで、システムは各アプリに一意の Linux ユーザー ID を割り当てます(ID はシステムのみが使用し、アプリは ID を関知しません)。
+アプリが割り当てられたユーザー ID のみがアプリ内のすべてのファイルにアクセスできるよう、システムがパーミッションを設定します。
+ </li>
+
+<li>各プロセスにはそれぞれ独自の仮想マシン(VM)があるため、アプリのコードは他のアプリとは分離して実行します。
+</li>
+
+<li>デフォルトで、すべてのアプリは独自の Linux プロセス上で実行します。Android はアプリのコンポーネントのいずれかを実行する必要があるときにプロセスを開始し、それが必要なくなったときや、システムが他のアプリ用にメモリを回復させる必要があるときにプロセスをシャットダウンします。
+
+</li>
+</ul>
+
+<p>このようにして、Android システムは<em>最小権限の原則</em>を実装しています。つまり、デフォルトでは各アプリにはコンポーネントの動作に必要な分だけのアクセス権が与えられます。
+
+これにより、パーミッションの与えられていないシステムの一部にアプリはアクセスできないという非常に安全性の高い環境が作り出されます。
+</p>
+
+<p>ただし、アプリが他のアプリとデータを共有したり、システムのサービスにアクセスしたりする方法もあります。
+</p>
+
+<ul>
+  <li>2 つのアプリで同一の Linux ユーザー ID を共有して、お互いのファイルにアクセスできるようにすることも可能です。
+システム リソースを節約するため、同じユーザー ID を持つアプリを同じ Linux プロセス上で実行し、同じ VM を共有するよう設定することもできます(アプリを同じ証明書で署名する必要があります)。
+
+</li>
+  <li>アプリから、ユーザーの連絡先、SMS メッセージ、マウント可能なストレージ(SD カード)、カメラ、Bluetooth といった端末データにアクセスするためのパーミッションを要求できます。
+アプリのすべてのパーミッションは、インストール時にユーザーから付与される必要があります。
+</li>
+</ul>
+
+<p>以上が、システム内の Android アプリの基本的な仕組みです。続いて、このドキュメントでは次の内容について説明します。
+</p>
+<ul>
+  <li>アプリを定義するコア フレームワーク コンポーネント。</li>
+  <li>コンポーネントを宣言し、アプリの端末機能に必要なマニフェスト ファイル。
+</li>
+  <li>アプリでさまざまな端末構成の動作を最適化できるようにする、アプリコードから分離されたリソース。
+</li>
+</ul>
+
+
+
+<h2 id="Components">アプリのコンポーネント</h2>
+
+<p>アプリのコンポーネントは、Android アプリに不可欠な構成要素です。各コンポーネントは、システムがアプリにアクセスするためのさまざまなエントリ ポイントになります。すべてのコンポーネントがユーザーの実際のエントリ ポイントになるわけではなく、中にはお互いに依存関係にあるものもありますが、それぞれが独自のエンティティとして存在し、特定の役割を担っています。各コンポーネントはアプリの全体的な動作を定義する固有の構成要素となっています。
+
+
+&mdash;
+</p>
+
+<p>アプリのコンポーネントには、4 つのタイプがあります。それぞれのタイプは、まったく異なる目的を果たし、コンポーネントの作成や破棄方法を定義するライフサイクルもそれぞれ異なります。
+</p>
+
+<p>アプリのコンポーネントのタイプは次の 4 つです。</p>
+
+<dl>
+
+<dt><b>アクティビティ</b></dt>
+
+<dd>アクティビティ <i>は</i> 1 つのユーザー インターフェースで 1 つの画面を表すものです。たとえば、メール アプリには新着メールの一覧を表示する 1 つのアクティビティと、メールを作成するアクティビティ、メールを閲覧するアクティビティがそれぞれ別にあります。
+
+メールアプリでは、複数のアクティビティが一体となって結合したユーザー操作を実現しますが、それぞれは他のものから独立しています。
+
+それにより、別のアプリで複数のアクティビティの中から、1 つのアクティビティを開始できるようになります(メールアプリが許可している場合)。
+たとえば、カメラアプリでは写真を他のユーザーと共有するために、メール アプリの新規メールを作成するアクティビティを開始できます。
+
+
+<p>アクティビティは {@link android.app.Activity} のサブクラスとして実装されます。詳細については、デベロッパー ガイドの「<a href="{@docRoot}guide/components/activities.html">Activities</a>」をご覧ください。
+
+</p>
+</dd>
+
+
+<dt><b>サービス</b></dt>
+
+<dd>サービス <i>は、</i> 長期間の操作やリモート プロセスを処理するためにバックグラウンドで実行するコンポーネントです。
+サービスは、ユーザー インターフェースを提供しません。
+たとえば、サービスはユーザーが別のアプリを使用している間にバックグラウンドで音楽を再生したり、ユーザーが別のアクティビティを操作している間にそれを妨げることなくネットワークからデータを取得したりします。
+
+アクティビティなどの別のコンポーネントは、サービスを開始して実行したり、それをバインドしたりして操作することもできます。
+
+
+<p>サービスは {@link android.app.Service} のサブクラスとして実装されます。詳細については、デベロッパー ガイドの「<a href="{@docRoot}guide/components/services.html">サービス</a>」をご覧ください。
+
+</p>
+</dd>
+
+
+<dt><b>コンテンツ プロバイダ</b></dt>
+
+<dd>コンテンツ プロバイダ <i>は</i> 共有されているアプリデータを管理します。データは、ファイル システム、SQLite データベース、ウェブ、アプリがアクセスできる、あらゆる永続性のストレージに保存できます。
+
+コンテンツ プロバイダを介して、他のアプリがデータをクエリしたり、修正したりすることもできます(コンテンツ プロバイダが許可している場合)。
+たとえば、Android システムではユーザーの連絡先情報を管理するコンテンツ プロバイダを提供しています。
+このように、適切なパーミッションさえあれば、アプリからコンテンツ プロバイダの一部({@link
+android.provider.ContactsContract.Data}など)に問い合わせて、特定の人物に関する情報を読み取ったり書き込んだりできます。
+
+
+<p>コンテンツ プロバイダは、アプリで非公開扱いの共有されていないデータを閲覧したり書き込んだりする場合にも役立ちます。
+たとえば、<a href="{@docRoot}resources/samples/NotePad/index.html">Note Pad</a> のサンプル アプリでは、コンテンツ プロバイダを使用してメモを保存します。
+</p>
+
+<p>コンテンツ プロバイダは {@link android.content.ContentProvider} のサブクラスとして実装され、他のアプリがトランザクションを実行できるようにする API の標準セットを実装する必要があります。
+
+詳細については、デベロッパー ガイドの「<a href="{@docRoot}guide/topics/providers/content-providers.html">Contetns Providers</a>」をご覧ください。
+</p>
+</dd>
+
+
+<dt><b>ブロードキャスト レシーバー</b></dt>
+
+<dd>ブロードキャスト レシーバー <i>は</i> システム全体のブロードキャスト アナウンスに応答するコンポーネントです。
+たとえば、画面がオフになった、バッテリ残量が低い、写真が撮影されたなど、システムに起因するブロードキャストはたくさんあります。アプリでもブロードキャストを開始でき、たとえば他のアプリに、一部のデータが端末にダウンロードされ、利用可能になったことを伝えることもできます。&mdash;
+
+&mdash;
+ブロードキャスト レシーバーがユーザー インターフェースを表示することはありませんが、<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">ステータスバー通知を作成</a>して、ブロードキャスト イベントの発生時にユーザーに警告できます。
+
+一般的には、ブロードキャスト レシーバーは他のコンポーネントへの単なる「入り口」であり、最小限の操作を行うことが前提となっています。
+たとえば、イベントに基づいた何らかの作業を実行するサービスを開始する場合などに適しています。
+
+
+<p>ブロードキャスト レシーバーは、{@link android.content.BroadcastReceiver} のサブクラスとして実装され、各ブロードキャストは {@link android.content.Intent} オブジェクトとして配信されます。
+詳細については、{@link android.content.BroadcastReceiver} クラスをご覧ください。
+</p>
+</dd>
+
+</dl>
+
+
+
+<p>Android ならではのシステムデザインによって、どのアプリケーションからでも別のアプリケーションを開始できます。
+たとえば、ユーザーが端末のカメラで写真を撮影できるようにする場合、既にその機能を備えた別のアプリがあることを想定して、写真を撮影するアクティビティを自身で開発する代わりに、アプリがそれを使用できます。
+
+カメラアプリを組み込んだり、コードにリンクしたりする必要もなく、単純に写真を撮影するカメラアプリのアクティビティを開始するだけです。
+
+
+完了後、写真はアプリに戻り、それを使用することもできます。ユーザー側には、カメラがアプリの一部であるかのように見えます。
+</p>
+
+<p>システムがコンポーネントを開始すると、そのアプリのプロセスを開始し(まだ実行していない場合)、コンポーネントが必要とするクラスをインスタンス化します。
+たとえば、アプリで写真を撮影するカメラアプリのアクティビティを開始すると、そのアクティビティはアプリのプロセスではなく、カメラアプリのプロセスで実行します。そのため、他のシステムのアプリとは異なり、Android アプリのエントリ ポイントは 1 つではありません(たとえば、{@code main()} 関数はありません)。
+
+
+
+</p>
+
+<p>システムは、他のアプリへのアクセスを制限するファイル許可を使用して各アプリを別々のプロセスで実行するため、アプリから直接他のアプリのコンポーネントはアクティベートできませんが、Android システムはそれが可能です。
+
+そのため、他のアプリのコンポーネントをアクティベートするには、特定のコンポーネントを開始する<em>インテント</em>を指定するメッセージをシステムに配信する必要があります。
+
+その後、システムが代わりにコンポーネントをアクティベートします。</p>
+
+
+<h3 id="ActivatingComponents">コンポーネントをアクティベートする</h3>
+
+<p>4 つのコンポーネント タイプのなかで、アクティビティ、サービス、ブロードキャスト レシーバーの 3 つは、<em>インテント</em>と呼ばれる非同期メッセージによってアクティベートされます。コンポーネントがアプリに属していても他のものに属していても、インテントにより実行時に個別のコンポーネントがお互いに結び付けられます(他のコンポーネントからのアクションを要求するメッセンジャーのようなものです)。&mdash;&mdash;
+
+
+
+</p>
+
+<p>インテントは {@link android.content.Intent} オブジェクトを使用して作成されます。このオブジェクトは特定のコンポーネントや特定の<em>タイプ</em>のコンポーネントをアクティベートするようにメッセージを定義します。インテントはそれぞれ明示的、暗黙的のいずれかになります。&mdash;
+
+</p>
+
+<p>アクティビティとサービスでは、インテントが実行するアクション(「閲覧」したり「送信」したりする)を定義し、操作に使うデータ(特に、開始されるコンポーネントが知っておく必要があるデータ)の URI を指定することもできます。
+
+たとえば、インテントはアクティビティに画像を表示したり、ウェブページを開いたりするアクティビティに対して要求を伝達します。
+場合によっては、結果を受け取るアクティビティを開始でき、この場合にアクティビティが返す結果も {@link android.content.Intent} になります(たとえば、ユーザーが個人の連絡先を取り出し、それを返してくれるインテントを発行できます。返されたインテントには選択された連絡先を指す URI が含まれています)。
+&mdash;
+
+
+</p>
+
+<p>ブロードキャスト レシーバーの場合、インテントは単純にブロードキャストするアナウンスを定義します(たとえば、端末のバッテリ残量が少ないことを示すブロードキャストには、「バッテリが少ない」ことを示す既知のアクション文字列が含まれます)。
+
+</p>
+
+<p>他のコンポーネント タイプであるコンテンツ プロバイダは、インテントではアクティベートされず、{@link android.content.ContentResolver} からの要求の対象となったときにアクティベートされます。
+コンテンツリゾルバが、コンテンツプロバイダを使ってすべてのトランザクションを直接処理することで、プロバイダを使ってトランザクションを実行しているコンポーネントは処理する必要がなくなり、代わりに {@link
+android.content.ContentResolver} オブジェクトのメソッドを呼び出します。
+
+これによりコンテンツ プロバイダと情報を要求しているコンポーネントとの間に(セキュリティ目的で)抽象的な層ができます。
+</p>
+
+<p>各コンポーネント タイプのアクティベート用に、個別のメソッドが用意されています。</p>
+<ul>
+  <li>アクティビティを開始する(または新しい作業を与える)場合は、{@link android.content.Intent} を {@link android.content.Context#startActivity
+startActivity()} や {@link android.app.Activity#startActivityForResult startActivityForResult()} (アクティビティに結果を求める場合)に渡します。
+
+</li>
+  <li>サービスを開始する(または継続中のサービスに新しい指示を与える)には、{@link android.content.Intent} を {@link android.content.Context#startService
+startService()} に渡します。
+または、{@link android.content.Intent} を {@link android.content.Context#bindService bindService()} に渡してサービスにバインドできます。
+</li>
+  <li>ブロードキャストを開始するには、{@link android.content.Intent} を {@link android.content.Context#sendBroadcast(Intent) sendBroadcast()}、{@link
+android.content.Context#sendOrderedBroadcast(Intent, String) sendOrderedBroadcast()}、{@link
+android.content.Context#sendStickyBroadcast sendStickyBroadcast()} などのメソッドに渡します。
+</li>
+  <li>コンテンツ プロバイダへのクエリを実行するには、{@link android.content.ContentResolver} の {@link
+android.content.ContentProvider#query query()} を呼び出します。</li>
+</ul>
+
+<p>インテントの使用に関する詳細については、「<a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>」のドキュメントをご覧ください。
+特定のコンポーネントのアクティベートの詳細については、
+<a href="{@docRoot}guide/components/activities.html">アクティビティ</a>、<a href="{@docRoot}guide/components/services.html">サービス</a>、{@link
+android.content.BroadcastReceiver}、<a href="{@docRoot}guide/topics/providers/content-providers.html">コンテンツ プロバイダ</a> のドキュメントでも説明しています。</p>
+
+
+<h2 id="Manifest">マニフェスト ファイル</h2>
+
+<p>Android システムがコンポーネントを開始する前に、システムはアプリの {@code AndroidManifest.xml} ファイル(「マニフェスト」ファイル)を読み取って、コンポーネントの存在を認識する必要があります。
+
+アプリはこのファイルですべてのコンポーネントを宣言し、このファイルはアプリ プロジェクトのディレクトリのルートに置く必要があります。
+</p>
+
+<p>マニフェストはアプリのコンポーネントを宣言する他にも、次のようにさまざまな役割があります。
+</p>
+<ul>
+  <li>インターネット アクセスや、ユーザーの連絡先への読み取りアクセスなど、アプリに必要なユーザー パーミッションを識別する。
+</li>
+  <li>アプリが使用する API に基づいた、アプリが必要とする最小 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API レベル</a>を宣言する。
+</li>
+  <li>カメラ、Bluetooth サービス、マルチタッチ スクリーンなど、アプリで使用されるか必要とされるハードウェア機能やソフトウェア機能を宣言する。
+</li>
+  <li><a href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google マップ ライブラリ</a>など、アプリにリンクする必要のある API ライブラリ(Android フレームワーク API は除く)。
+
+</li>
+  <li>その他の役割</li>
+</ul>
+
+
+<h3 id="DeclaringComponents">コンポーネントを宣言する</h3>
+
+<p>マニフェストの主なタスクは、システムにアプリ コンポーネントに関する情報を与えることです。たとえば、マニフェスト ファイルではアクティビティを次のように宣言できます。
+ </p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;manifest ... &gt;
+    &lt;application android:icon="@drawable/app_icon.png" ... &gt;
+        &lt;activity android:name="com.example.project.ExampleActivity"
+                  android:label="@string/example_label" ... &gt;
+        &lt;/activity&gt;
+        ...
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p><code><a
+href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 要素では、{@code android:icon} 属性でアプリを特定するアイコンのリソースを指します。
+
+</p>
+
+<p><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 要素では、{@code android:name} 属性で{@link
+android.app.Activity} サブクラスの完全修飾k裏スパイウェア名を指定し、{@code android:label} 属性でアクティビティのユーザーに表示するラベルとして使用する文字列を指定しています。
+
+</p>
+
+<p>すべてのアプリ コンポーネントは、次の方法で宣言する必要があります。</p>
+<ul>
+  <li><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> アクティビティ用の要素
+</li>
+  <li><code><a
+href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code> サービス用の要素
+</li>
+  <li><code><a
+href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code> ブロードキャスト レシーバー用の要素
+</li>
+  <li><code><a
+href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> コンテンツ プロバイダ用の要素
+</li>
+</ul>
+
+<p>ソースに含まれていながら、マニフェスト ファイルでは定義されていないアクティビティ、サービス、コンテンツ プロバイダはシステムには見えないため、実行されることはありません。
+ただし、ブロードキャスト レシーバーはマニフェストで宣言するか、コードで動的に作成({@link android.content.BroadcastReceiver} オブジェクトとして)して {@link android.content.Context#registerReceiver registerReceiver()} を呼び出すことでシステムに登録できます。
+
+
+
+</p>
+
+<p>アプリのマニフェスト ファイルの構築方法の詳細については、「<a href="{@docRoot}guide/topics/manifest/manifest-intro.html">The AndroidManifest.xml File</a>」のドキュメントをご覧ください。
+ </p>
+
+
+
+<h3 id="DeclaringComponentCapabilities">コンポーネントの機能を宣言する</h3>
+
+<p><a href="#ActivatingComponents">コンポーネントをアクティベートする</a>で説明したように、{@link android.content.Intent} を使用してアクティビティ、サービス、ブロードキャスト レシーバーを開始できます。
+開始するには、インテントでターゲットのコンポーネントの名前を(コンポーネントのクラス名を使って)明示的に指定する必要があります。
+ただし、インテントの本来の能力は、<em>暗黙的インテント</em>の概念にあります。
+暗黙的インテントは、単に実行するアクションのタイプを記述し(どのデータ上でアクションを実行するかも任意で記述できます)、それによりシステムがそのアクションを実行できる端末上のコンポーネントを見つけて開始できます。
+
+
+インテントで記述されたアクションを実行できるコンポーネントが複数ある場合は、使用するコンポーネントを 1 つ選択できます。
+</p>
+
+<p>システムは、端末の他のアプリのマニフェスト ファイルに提供されたインテント フィルタが受け取った
+ <i>インテントを比較して、</i> インテントに応答できるコンポーネントを識別します。
+</p>
+
+<p>アプリのマニフェストでアクティビティを宣言するとき、任意でアクティビティの機能を宣言するインテント フィルタを含めて、他のアプリからのインテントに応答できるようにできます。
+
+<a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> 要素を、コンポーネントを宣言している要素の子として追加することで、コンポーネントのインテント フィルタを宣言できます。
+</p>
+
+<p>たとえば、新規メールを作成するアクティビティを持つメールアプリをビルドした場合、次のように「送信」インテント(新規メールを送信するための)に応答するインテント フィルタを宣言できます。
+</p>
+<pre>
+&lt;manifest ... >
+    ...
+    &lt;application ... &gt;
+        &lt;activity android:name="com.example.project.ComposeEmailActivity">
+            &lt;intent-filter>
+                &lt;action android:name="android.intent.action.SEND" />
+                &lt;data android:type="*/*" />
+                &lt;category android:name="android.intent.category.DEFAULT" />
+            &lt;/intent-filter>
+        &lt;/activity>
+    &lt;/application&gt;
+&lt;/manifest>
+</pre>
+
+<p>次に、別のアプリが {@link
+android.content.Intent#ACTION_SEND} アクションを持つインテントを作成し、{@link android.app.Activity#startActivity
+startActivity()} に渡す場合、ユーザーがメールを下書きして送信できるよう、システムがアクティビティを開始する場合があります。
+</p>
+
+<p>インテント フィルタの作成の詳細については、「<a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>」のドキュメントをご覧ください。
+</p>
+
+
+
+<h3 id="DeclaringRequirements">アプリの要件を宣言する</h3>
+
+<p>Android が搭載された端末は数多くありますが、すべての端末が同じ機能や性能を備えているわけではありません。
+アプリに必要な機能を搭載していない端末にアプリをインストールしてしまわないよう、アプリがサポートする端末のタイプについてプロファイルで明確に定義し、マニフェスト ファイルで端末の要件やソフトウェア要件を宣言しておくことが重要です。
+
+
+これらの宣言のほとんどはただの情報で、システムがそれを読み取ることはありませんが、Google Play などの外部サービスはそれを読み取って、ユーザーが端末からアプリを検索したときにフィルタを提供します。
+
+</p>
+
+<p>たとえば、アプリでカメラを使用する必要があり、Android 2.1 で採用された API(<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API レベル</a> 7)を使用する場合、次のようにマニフェスト ファイルでそれを要件として宣言する必要があります。
+</p> 
+
+<pre>
+&lt;manifest ... >
+    &lt;uses-feature android:name="android.hardware.camera.any"
+                  android:required="true" />
+    &lt;uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" />
+    ...
+&lt;/manifest>
+</pre>
+
+<p>カメラの<em>ない</em>端末で、Android バージョンが 2.1 <em>以下</em>の場合は、Google Play からアプリをインストールできません。
+</p>
+
+<p>ただし、アプリでカメラを使用するが、それが<em>必須</em>ではないということを宣言することもできます。
+この場合、アプリで <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#required">{@code required}</a> 属性を {@code "false"} に設定し、端末にカメラがあるかどうかを実行時に確認して、必要に応じてすべてのカメラ機能を無効にする必要があります。
+
+</p>
+
+<p>異なる端末でのアプリの互換性を管理する方法については、「<a href="{@docRoot}guide/practices/compatibility.html">Device Compatibility</a>」をご覧ください。
+
+</p>
+
+
+
+<h2 id="Resources">アプリのリソース</h2>
+
+<p>Android アプリは、コードだけで構成されているわけではありません。ソース コードから分離された画像、オーディオ ファイル、その他アプリの外観に関連するあらゆるリソースが必要です。たとえば、アクティビティのアニメーション、メニュー、スタイル、色、レイアウトなどを XML ファイルで定義する必要があります。&mdash;
+
+
+アプリのリソースを使用すると、コードを修正することなく別のリソースセットを提供することで、アプリのあらゆる特性を簡単にアップデートできるようになります。これにより、さまざまな端末の設定用(別の言語や画面サイズなど)にアプリを最適化できます。
+&mdash;
+&mdash;
+</p>
+
+<p>Android プロジェクトに含めるすべてのリソースに対し、SDK ビルド ツールが一意の整数 ID を定義し、アプリコードや XML で定義された他のリソースからリソースにそれを使って参照できます。
+
+たとえば、アプリに {@code
+logo.png} という名前の画像ファイルがある場合({@code res/drawable/} ディレクトリ内に保存)、SDK ツールが {@code R.drawable.logo} という名前のリソース ID を生成し、これを使って画像を参照してユーザー インターフェースに挿入できます。
+
+</p>
+
+<p>リソースとソース コードを分離して提供する方法の最も重要な側面は、さまざまな端末設定に合わせて別のリソースを提供できるという点です。
+
+たとえば、XML で UI 文字列を定義することで、その文字列を他の言語に翻訳して、それらの文字列を別のファイルに保存しておくことができます。
+それを、リソースのディレクトリ名に付けた言語の<em>修飾子</em>(フランス語の文字列値なら {@code res/values-fr/} のように)とユーザーの言語設定に基づいて、Android システムによって UI に適切な言語の文字列が適用されます。
+
+
+</p>
+
+<p>Android では代替リソース用に多様な<em>修飾子</em>をサポートしています。修飾子は、リソースのディレクトリ名に含める短い文字列で、そのリソースを使用する端末構成を定義するものです。
+
+例をもう 1 つ挙げると、端末の画面の向きやサイズによって、アクティビティのレイアウトを複数作成する必要があります。
+
+たとえば、端末が縦方向(縦長)の場合、ボタンの付いたレイアウトを縦に並べ、端末が横方向(横長)の場合はボタンを横並びにする、といった場合です。
+
+画面の方向によってレイアウトを変更するには、2 つの異なるレイアウトを定義して、それぞれのレイアウトのディレクトリ名に適切な修飾子を適用します。
+
+そうすることで、現在の端末の向きによってシステムが自動的に適切なレイアウトを適用できます。
+</p>
+
+<p>アプリケーションに含めることのできるリソースの種類や、異なる端末設定用の代替リソースの作成方法については、「<a href="{@docRoot}guide/topics/resources/providing-resources.html">リソースの提供</a>」をご覧ください。
+</p>
+
+
+
+<div class="next-docs">
+<div class="col-6">
+  <h2 class="norule">こちらもご覧ください。</h2>
+  <dl>
+    <dt><a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>
+    </dt>
+    <dd>{@link android.content.Intent} API を使用して、アクティビティやサービスなどのアプリのコンポーネントをアクティベートする方法や、アプリのコンポーネントを他のアプリで利用できるようにする方法について説明しています。
+
+</dd>
+    <dt><a href="{@docRoot}guide/components/activities.html">Activities</a></dt>
+    <dd>ユーザー インターフェースを使って独特のアプリケーション画面を提供する {@link android.app.Activity}
+ クラスのインスタンスの作成方法について説明しています。</dd>
+    <dt><a href="{@docRoot}guide/topics/resources/providing-resources.html">リソースの提供</a></dt>
+    <dd>特定の端末構成に対して代替リソースを提供する方法など、Android アプリでアプリのリソースをアプリコードから分離する仕組みについて説明しています。
+
+
+    </dd>
+  </dl>
+</div>
+<div class="col-6">
+  <h2 class="norule">関連ドキュメント</h2>
+  <dl>
+    <dt><a href="{@docRoot}guide/practices/compatibility.html">Device Compatibility</a></dt>
+    <dd>あらゆるタイプの端末での Android の動作と、端末ごとにアプリを最適化したり、別の端末でのアプリの利用を制限したりする方法について説明しています。
+
+</dd>
+    <dt><a href="{@docRoot}guide/topics/security/permissions.html">System Permissions</a></dt>
+    <dd>アプリが特定の API を使用するのにユーザーの同意を必要とするパーミッション システムを使用して、アプリから特定の API へのアクセスを Android が制限する仕組みについて説明しています。
+</dd>
+  </dl>
+</div>
+</div>
+
diff --git a/docs/html-intl/intl/ja/guide/components/index.jd b/docs/html-intl/intl/ja/guide/components/index.jd
new file mode 100644
index 0000000..803f99b
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/components/index.jd
@@ -0,0 +1,57 @@
+page.title=アプリ<br>コンポーネント
+page.landing=true
+page.landing.intro=Android のアプリケーション フレームワークでは、再利用可能なコンポーネント セットを使用して豊富な内容を備えた斬新なアプリを作成できます。このセクションでは、アプリの構成要素を定義するコンポーネントのビルド方法と、インテントを使用してそれらをつなぎ合わせる方法について説明します。
+page.metaDescription=Android のアプリケーション フレームワークでは、再利用可能なコンポーネント セットを使用して豊富な内容を備えた斬新なアプリを作成できます。このセクションでは、アプリの構成要素を定義するコンポーネントのビルド方法と、インテントを使用してそれらをつなぎ合わせる方法について説明します。
+page.landing.image=images/develop/app_components.png
+page.image=images/develop/app_components.png
+
+@jd:body
+
+<div class="landing-docs">
+
+  <div class="col-6">
+    <h3>ブログの記事</h3>
+    
+    <a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
+      <h4>DialogFragments の使用</h4>
+      <p>この投稿では、DialogFragments を v4 サポート ライブラリで使用して(Honeycomb 以前の端末での下方互換性のため)ダイアログを編集したり、インターフェースを使用して呼び出し元の Activity に結果を返したりする方法について説明します。</p>
+    </a>
+
+    <a href="http://android-developers.blogspot.com/2011/03/fragments-for-all.html">
+      <h4>すべてに Fragments を</h4>
+      <p>本日、同じ Fragments API を利用できる静的なライブラリが公開され、Android 1.6 以降でもフラグメントを使用してタブレット対応のユーザー インターフェースを作成できるようになりました。 </p>
+    </a>
+    
+    <a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
+      <h4>マルチスレッドでパフォーマンス向上</h4>
+      <p>応答の速いアプリケーションを作成する上で重要なのは、メイン UI スレッドが最小限の作業を行うようにすることです。
+アプリケーションのハングにつながる可能性のある長期的なタスクは、別のスレッドで処理するようにします。
+</p>
+    </a>
+  </div>
+
+  <div class="col-6">
+    <h3>トレーニング</h3>
+    
+    <a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
+      <h4>アクティビティのライフサイクルの管理</h4>
+      <p>このレッスンでは、各 Activity インスタンスが受け取る重要なライフサイクル コールバック メソッドについて、それらを使用してユーザーの予期する内容でアクティビティを動作させる方法と、アクティビティがそれらを必要としないときに、システムのリソースを消費しないようにする方法について学習します。
+
+</p>
+    </a>
+
+    <a href="http://developer.android.com/training/basics/fragments/index.html">
+      <h4>フラグメントで動的 UI を構築</h4>
+      <p>このレッスンでは、Android 1.6 以降の旧バージョンを実行する端末に対応しながら、フラグメントを使用して動きのある使用感を実現し、異なる画面サイズでのアプリの操作感を最適化する方法について説明します。
+
+</p>
+    </a>
+
+    <a href="http://developer.android.com/training/sharing/index.html">
+      <h4>コンテンツの共有</h4>
+      <p>このレッスンでは、Intent API と ActionProvider オブジェクトを使用して、アプリケーション間でコンテンツを送受信する際の一般的な方法について説明します。
+</p>
+    </a>
+  </div>
+
+</div>
diff --git a/docs/html-intl/intl/ja/guide/components/intents-filters.jd b/docs/html-intl/intl/ja/guide/components/intents-filters.jd
new file mode 100644
index 0000000..fe78eca
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/components/intents-filters.jd
@@ -0,0 +1,899 @@
+page.title=インテントとインテント フィルタ
+page.tags="IntentFilter"
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本書の内容</h2>
+<ol>
+  <li><a href="#Types">インテントのタイプ</a></li>
+  <li><a href="#Building">インテントを作成する</a>
+    <ol>
+      <li><a href="#ExampleExplicit">明示的インテントの例</a></li>
+      <li><a href="#ExampleSend">暗黙的インテントの例</a></li>
+      <li><a href="#ForceChooser">アプリチューザを表示する</a></li>
+    </ol>
+  </li>
+  <li><a href="#Receiving">暗黙的インテントを受け取る</a>
+    <ol>
+      <li><a href="#ExampleFilters">フィルタの例</a></li>
+    </ol>
+  </li>
+  <li><a href="#PendingIntent">ペンディング インテントを使用する</a></li>
+  <li><a href="#Resolution">インテント解決</a>
+    <ol>
+      <li><a href="#ActionTest">アクションのテスト</a></li>
+      <li><a href="#CategoryTest">カテゴリのテスト</a></li>
+      <li><a href="#DataTest">データのテスト</a></li>
+      <li><a href="#imatch">インテントのマッチング</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>関連ドキュメント</h2>
+<ol>
+<li><a href="{@docRoot}training/basics/intents/index.html">Interacting with Other Apps</a></li>
+<li><a href="{@docRoot}training/sharing/index.html">Sharing Content</a></li>
+</ol>
+
+</div>
+</div>
+
+
+
+
+<p>{@link android.content.Intent} は、他の<a href="{@docRoot}guide/components/fundamentals.html#Components">アプリ コンポーネント</a>からのアクションを要求するときに使用するメッセージング オブジェクトです。インテントを使用することでコンポーネント間の通信を促進する方法はいくつかありますが、基本的な使用例は次の 3 つです。
+
+
+</p>
+
+<ul>
+<li><b>アクティビティを開始するには:</b>
+<p>{@link android.app.Activity} はアプリ内の 1 つの画面を表します。{@link android.app.Activity} の新しいインスタンスを開始するには、{@link android.content.Intent} を {@link android.content.Context#startActivity startActivity()} に渡します。
+
+{@link android.content.Intent} は、開始するアクティビティを記述し、必要なデータすべてを含んでいます。
+</p>
+
+<p>アクティビティの完了時に結果を受け取る場合は、{@link android.app.Activity#startActivityForResult
+startActivityForResult()} を呼び出します。
+アクティビティは、結果を別の {@link android.content.Intent} オブジェクトとして、アクティビティの {@link
+android.app.Activity#onActivityResult onActivityResult()} コールバック内に受け取ります。詳細については、「<a href="{@docRoot}guide/components/activities.html">Activities</a>」のガイドをご覧ください。
+
+</p></li>
+
+<li><b>サービスを開始するには:</b>
+<p>{@link android.app.Service} は、ユーザー インターフェースを持たず、バックグラウンドで操作を実行するコンポーネントです。
+サービスを開始して 1 回限りの操作を実行する(ファイルのダウンロードなど)には、{@link android.content.Intent} を {@link android.content.Context#startService startService()} に渡します。
+
+{@link android.content.Intent} は、開始するサービスを記述し、必要なデータすべてを含んでいます。
+</p>
+
+<p>クライアントサーバーのインターフェースでサービスがデザインされている場合、{@link android.content.Intent} を {@link
+android.content.Context#bindService bindService()}</code> に渡して、他のコンポーネントからのサービスにバインドできます。
+詳細については、「<a href="{@docRoot}guide/components/services.html">サービス</a>」のガイドをご覧ください。</p></li>
+
+<li><b>ブロードキャストを配信するには:</b>
+<p>ブロードキャストは、アプリが受け取ることのできるメッセージです。システムは、システムの起動や端末の充電開始など、さまざまなシステム イベントを配信します。他のアプリにブロードキャストを配信するには、{@link android.content.Intent} を {@link android.content.Context#sendBroadcast(Intent) sendBroadcast()}、{@link android.content.Context#sendOrderedBroadcast(Intent, String)
+sendOrderedBroadcast()}、{@link
+android.content.Context#sendStickyBroadcast sendStickyBroadcast()} のいずれかに渡します。
+
+
+
+</p>
+</li>
+</ul>
+
+
+
+
+<h2 id="Types">インテントのタイプ</h2>
+
+<p>インテントには 2 つのタイプがあります。</p>
+
+<ul>
+<li><b>明示的インテント</b>は、開始するコンポーネントを名前(完全修飾クラス名)で指定します。
+通常は開始するアクティビティやサービスのクラス名がわかっているため、明示的インテントを使用してアプリ内のコンポーネントを開始します。
+たとえば、ユーザー操作に応答して新しいアクティビティを開始したり、バックグラウンドでファイルをダウンロードするサービスを開始したりします。
+
+</li>
+
+<li><b>暗黙的インテント</b>では、特定のコンポーネントを指定せず、代わりに実行する全般的な動作を宣言することで、他のアプリからコンポーネントを処理できるようにします。
+たとえば、マップ上にユーザーの位置を表示する場合、暗黙的インテントを使って、特定の場所をマップ上に表示できる別のアプリにその操作を要求します。
+
+</li>
+</ul>
+
+<p>暗黙的インテントを使用してアクティビティやサービスを開始する際、システムによってただちに {@link android.content.Intent} オブジェクトで指定されたアプリ コンポーネントが開始されます。
+</p>
+
+<div class="figure" style="width:446px">
+<img src="{@docRoot}images/components/intent-filters@2x.png" width="446" alt="" />
+<p class="img-caption"><strong>図 1.</strong> 暗黙的インテントが他のアクティビティを開始するようシステム内に配信される仕組みを表しています。<b>[1]</b> <em>Activity A</em> がアクションの記述を使って {@link android.content.Intent} を作成し、それを {@link
+android.content.Context#startActivity startActivity()} に渡します。<b>[2]</b> Android システムがすべてのアプリに対してインテントに一致するインテント フィルタを検索します。
+
+
+一致するものが見つかったら、<b>[3]</b> システムが {@link
+android.app.Activity#onCreate onCreate()} メソッドを呼び出して、{@link android.content.Intent} に渡すことで、そのアクティビティ(<em>Activity B</em>)を開始します。
+
+</p>
+</div>
+
+<p>暗黙的インテントを作成するとき、Android システムはインテントの内容を、端末上の他のアプリの <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">マニフェスト ファイル</a>で定義された <em>インテント フィルタ</em> と比較して、開始すべきコンポーネントを見つけます。
+
+インテントがインテント フィルタに一致した場合、システムがそのコンポーネントを開始して、{@link android.content.Intent} を配信します。
+複数のインテント フィルタが競合する場合、ユーザーが仕様するアプリを選択できるようシステムによってダイアログが表示されます。
+</p>
+
+<p>インテント フィルタは、コンポーネントが受け取りたいインテントのタイプを指定する式で、アプリのマニフェスト ファイルに含まれています。
+
+たとえば、アクティビティのインテント フィルタを宣言すると、特定のインテント タイプを持つアクティビティを他のアプリから直接開始できるようになります。同様に、アクティビティでインテント フィルタを宣言<em>しない</em>場合は、明示的インテントでのみアクティビティを開始できます。
+
+
+</p>
+
+<p class="caution"><strong>警告:</strong> アプリの安全性を保つため、{@link android.app.Service} を開始するときは常に明示的インテントを使用し、サービスでインテント フィルタを宣言しないようにしてください。
+
+暗黙的インテントを使ってサービスを開始すると、どのサービスがインテントに応答するかを把握できず、ユーザーにはどのサービスが開始するのかがわからないため、セキュリティ上の危険が伴います。
+
+Android 5.0(API レベル 21)以降では、暗黙的インテントで {@link android.content.Context#bindService bindService()} を呼び出すと、システムから例外がスローされます。
+
+</p>
+
+
+
+
+
+<h2 id="Building">インテントを作成する</h2>
+
+<p>{@link android.content.Intent} オブジェクトには Android システムが開始するコンポーネントを決定する際に使用する情報(インテントを受け取るべき正確なコンポーネント名やコンポーネントのカテゴリなど)に加えて、受け取る側のコンポーネントがアクションを適切に実行するために使用する情報(実行するアクションと、実行対象のデータなど)が含まれています。
+
+
+</p>
+
+
+<p>{@link android.content.Intent} に含まれる主な情報は次のとおりです。</p>
+
+<dl>
+
+<dt><b>コンポーネント名</b></dt>
+<dd>開始するコンポーネントの名前です。
+
+<p>これは省略可能ですが、インテントを<b>明示的</b>にするためには不可欠な情報です。つまり、コンポーネント名で定義されたアプリ コンポーネントにのみ、インテントが配信されます
+
+コンポーネント名がない場合、インテントは<b>暗黙的</b>になり、他のインテント情報(下記で説明するアクション、データ、カテゴリなど)に基づいてインテントを受け取るべきコンポーネントをシステムが決定します
+
+&mdash;そのため、アプリ内の特定のコンポーネントを開始する必要がある場合は、コンポーネント名を指定する必要があります。
+</p>
+
+<p class="note"><strong>注:</strong> {@link android.app.Service} を開始するときは、<strong>常にコンポーネント名を指定</strong>する必要があります。
+指定しない場合、どのサービスがインテントに応答するかを把握できず、ユーザーにはどのサービスが開始するのかがわからなくなります。
+</p>
+
+<p>{@link android.content.Intent} のフィールドは {@link android.content.ComponentName} オブジェクトで、アプリのパッケージ名など、ターゲットのコンポーネントの完全修飾クラス名を使用して指定できます(例: {@code com.example.ExampleActivity})。
+
+
+コンポーネント名は、{@link
+android.content.Intent#setComponent setComponent()}、{@link android.content.Intent#setClass
+setClass()}、{@link android.content.Intent#setClassName(String, String) setClassName()}、{@link android.content.Intent} コンストラクタなどを使用して設定できます。
+</p>
+
+</dd>
+
+<p><dt><b>アクション</b></dt>
+<dd>実行する全体的なアクションを指定する文字列です(<em>閲覧</em>や<em>選択</em>など)。
+
+<p>ブロードキャスト インテントの場合、これが発生済みで報告済みのアクションになります。ほとんどのアクションは、残りのインテントがどのように構成されているか、特にデータやエクストラに含まれている内容によって決まります。
+&mdash;
+
+
+<p>インテントによって自身のアプリで使用する(または他のアプリで使用して自身のアプリのコンポーネントを呼び出す)独自のアクションを指定できますが、通常は {@link android.content.Intent} クラスや他のフレームワーク クラスで定義されたアクション定数を使用します。
+
+アクティビティを開始する際の一般的なアクションをいくつか次に示します。
+</p>
+
+<dl>
+<dt>{@link android.content.Intent#ACTION_VIEW}</dt>
+   <dd>ギャラリー アプリで表示する写真や、マップアプリで表示する住所など、アクティビティ内にユーザーに表示する情報がある場合は、{@link
+   android.content.Context#startActivity startActivity()} を使ってインテントにこのアクションを使用します。
+
+</dd>
+
+<dt>{@link android.content.Intent#ACTION_SEND}</dt>
+   <dd>これは「共有」インテントとしても知られており、メールアプリやソーシャル シェアリング アプリなどの他のアプリ経由でユーザーが共有できるデータがある場合に、{@link
+   android.content.Context#startActivity startActivity()} でインテントに使用します。
+</dd>
+</dl>
+
+<p>全体的なアクションを定義するその他の定数については、{@link android.content.Intent} クラスのリファレンスをご覧ください。
+システムの設定アプリで特定の画面を開くアクションの {@link android.provider.Settings} など、他のアクションは Android フレームワークの別の場所で定義されます。
+
+</p>
+
+<p>インテントのアクションは、{@link android.content.Intent#setAction
+setAction()} や {@link android.content.Intent} コンストラクタを使って指定できます。</p>
+
+<p>独自のアクションを定義したら、接頭辞としてアプリのパッケージ名を必ず含めます。
+次に例を示します。</p>
+<pre>static final String ACTION_TIMETRAVEL = "com.example.action.TIMETRAVEL";</pre>
+</dd>
+
+<dt><b>データ</b></dt>
+<dd>アクションの実行対象であるデータや、データの MIME タイプを参照する URI({@link android.net.Uri} オブジェクト)です。
+提供されるデータタイプは、インテントのアクションによって決まります。たとえば、アクションが {@link android.content.Intent#ACTION_EDIT} の場合、データには編集するドキュメントの URI が含まれます。
+
+
+
+<p>インテントの作成時、URI だけでなくデータタイプ(MINE タイプ)を指定することが重要な場面が多くあります。たとえば、画像を表示できるアクティビティの場合、URI 形式は似ていてもオーディオ ファイルは再生できません。そのため、データの MIME タイプを指定することで、Android システムがインテントを受け取るのに最適なコンポーネントを見つけることができます。ただし、MIME タイプは URI から推測できることもあります。特にデータが {@code content:} URI の場合は、データが端末上にあり、{@link android.content.ContentProvider} に制御されるデータであることを示し、データの MIME タイプがシステムから見えるようになります。
+
+
+
+
+
+&mdash;
+
+</p>
+
+<p>データ URI のみを設定するには、{@link android.content.Intent#setData setData()} を呼び出します。MIME タイプのみを設定するには、{@link android.content.Intent#setType setType()} を呼び出します。
+必要であれば、{@link
+android.content.Intent#setDataAndType setDataAndType()} を使って両方を明示的に設定することもできます。
+</p>
+
+<p class="caution"><strong>警告:</strong> URI と MIME タイプの両方を設定する場合は、お互いの値を無効にしてしまわないよう、{@link android.content.Intent#setData setData()} と {@link android.content.Intent#setType setType()} を<strong>呼び出さないで</strong>ください。URI と MIME タイプの両方を設定する場合は、常に {@link android.content.Intent#setDataAndType setDataAndType()} を使用してください。
+
+
+
+</p>
+</dd>
+
+<p><dt><b>カテゴリ</b></dt>
+<dd>インテントを処理するコンポーネントの種類に関する追加情報が含まれた文字列です。
+カテゴリの記述は、インテントにいくつでも含めることができますが、ほとんどのインテントではカテゴリは必須ではありません。一般的なカテゴリの例を次に示します。
+
+
+
+<dl>
+<dt>{@link android.content.Intent#CATEGORY_BROWSABLE}</dt>
+  <dd>ターゲットのアクティビティは、ウェブブラウザから開始して画像やメール メッセージなど、リンクで参照されたデータを表示できます。
+&mdash;
+  </dd>
+<dt>{@link android.content.Intent#CATEGORY_LAUNCHER}</dt>
+  <dd>このアクティビティはタスクの初期のアクティビティで、システムのアプリケーション ランチャーの一覧に表示されます。
+
+  </dd>
+</dl>
+
+<p>カテゴリの全一覧は、{@link android.content.Intent} クラスの説明をご覧ください。
+</p>
+
+<p>カテゴリは、{@link android.content.Intent#addCategory addCategory()} を使って指定できます。</p>
+</dd>
+</dl>
+
+
+<p>上記のプロパティ(コンポーネント名、アクション、データ、カテゴリ)は、インテントの特性の定義を表しています。
+これらのプロパティを読み取ることで、Android システムはどのアプリ コンポーネントを開始すべきかを解決できます。
+</p>
+
+<p>ただし、インテントにはアプリ コンポーネントの解決に影響を与えない追加情報を含めることもできます。
+インテントに含めることのできる情報は次のとおりです。</p>
+
+<dl>
+<dt><b>エクストラ</b></dt>
+<dd>要求されたアクションの実行に必要な追加情報のキーと値のペアです。データの URI の特定の種類を使用するアクションがあるのと同様に、特定のエクストラを使用するアクションもあります。
+
+
+<p>エクストラはさまざまな {@link android.content.Intent#putExtra putExtra()} を使って追加でき、それぞれがキー名と値の 2 つのパラメータを受け入れます。また、すべてのエクストラ データを使って {@link android.os.Bundle} オブジェクトを作成し、{@link
+android.content.Intent#putExtras putExtras()} を使って {@link android.os.Bundle} を {@link android.content.Intent} に挿入することもできます。
+
+
+</p>
+
+<p>たとえば、{@link android.content.Intent#ACTION_SEND} を使ってメールを送信するインテントを作成するとき、{@link android.content.Intent#EXTRA_EMAIL} キーを使って「宛先」の受信者を指定したり、{@link android.content.Intent#EXTRA_SUBJECT} を使って「件名」を指定したりできます。
+
+
+</p>
+
+<p>{@link android.content.Intent} クラスは多くの標準データタイプの {@code EXTRA_*} 定数を指定できます。
+独自のエクストラ キーを宣言する必要がある場合は(アプリが受け取るインテント用に)、アプリのパッケージ名を接頭辞として必ず含めます。
+
+次に例を示します。</p>
+<pre>static final String EXTRA_GIGAWATTS = "com.example.EXTRA_GIGAWATTS";</pre>
+</dd>
+
+<dt><b>フラグ</b></dt>
+<dd>{@link android.content.Intent} クラスで定義されるフラグは、インテントのメタデータとして機能します。
+フラグは、Android システムにアクティビティの起動方法(アクティビティがどの<a href="{@docRoot}guide/components/tasks-and-back-stack.html">タスク</a>に属するかなど)や、起動後の取り扱い方法(最近のアクティビティの一覧に含めるかどうかなど)を指示します。
+
+
+
+
+<p>詳細については、{@link android.content.Intent#setFlags setFlags()} メソッドをご覧ください。</p>
+</dd>
+
+</dl>
+
+
+
+
+<h3 id="ExampleExplicit">明示的インテントの例</h3>
+
+<p>明示的インテントは、アプリ内の特定のアクティビティやサービスなど、特定のアプリ コンポーネントを起動する際に使用するものです。明示的インテントを作成するには、{@link android.content.Intent} オブジェクトでコンポーネント名を定義します。他のインテント プロパティはすべて省略可能です。
+
+
+&mdash;</p>
+
+<p>たとえば、アプリでウェブからファイルをダウンロードするサービスを {@code DownloadService} という名前でビルドした場合、次のコードでそれを開始できます。
+</p>
+
+<pre>
+// Executed in an Activity, so 'this' is the {@link android.content.Context}
+// The fileUrl is a string URL, such as "http://www.example.com/image.png"
+Intent downloadIntent = new Intent(this, DownloadService.class);
+downloadIntent.setData({@link android.net.Uri#parse Uri.parse}(fileUrl));
+startService(downloadIntent);
+</pre>
+
+<p>{@link android.content.Intent#Intent(Context,Class)} コンストラクタがアプリに {@link android.content.Context} を、コンポーネントに {@link java.lang.Class} オブジェクトを提供します。
+
+このようにして、このインテントはアプリの {@code DownloadService} クラスを明示的に開始します。
+</p>
+
+<p>サービスのビルドと開始の詳細については、「<a href="{@docRoot}guide/components/services.html">サービス</a>」のガイドをご覧ください。
+</p>
+
+
+
+
+<h3 id="ExampleSend">暗黙的インテントの例</h3>
+
+<p>暗黙的インテントは、端末上のどんなアプリでも実行できるアクションを指定します。
+暗黙的インテントは、自身のアプリではそのアクションを実行できないが、他のアプリでは実行可能であり、どのアプリを使うかをユーザーに選ばせたい場合に便利です。
+</p>
+
+<p>たとえば、他のユーザーと共有できるようにするコンテンツがある場合は、{@link android.content.Intent#ACTION_SEND} アクションを使ってインテントを作成し、共有するコンテンツを指定するエクストラを追加します。
+
+そのインテントで {@link android.content.Context#startActivity startActivity()} を呼び出すと、ユーザーはどのアプリでコンテンツを共有するかを選択できます。
+
+</p>
+
+<p class="caution"><strong>警告:</strong> {@link android.content.Context#startActivity
+startActivity()} に送る暗黙的インテントを処理できるアプリがユーザーが<em>持っていない</em>場合もあります。
+その場合、呼び出しは失敗し、アプリはクラッシュします。アクティビティが必ずインテントを受け取るようにするには、{@link android.content.Intent} オブジェクトで {@link android.content.Intent#resolveActivity
+resolveActivity()} を呼び出します。
+結果が null 以外の場合は、インテントを処理できるアプリが少なくとも 1 つはあることを意味し、{@link android.content.Context#startActivity startActivity()} を安全に呼び出すことができます。
+
+結果が null の場合は、そのインテントは使用せず、可能であればそのインテントを発行する機能を無効にする必要があります。
+
+</p>
+
+
+<pre>
+// Create the text message with a string
+Intent sendIntent = new Intent();
+sendIntent.setAction(Intent.ACTION_SEND);
+sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
+sendIntent.setType("text/plain");
+
+// Verify that the intent will resolve to an activity
+if (sendIntent.resolveActivity(getPackageManager()) != null) {
+    startActivity(sendIntent);
+}
+</pre>
+
+<p class="note"><strong>注:</strong> この場合、URI は使用されませんが、エクストラに含まれるコンテンツを指定するためインテントのデータタイプは宣言されます。
+</p>
+
+
+<p>{@link android.content.Context#startActivity startActivity()} が呼び出されたとき、システムによってすべてのインストール済みアプリの中にこのタイプのインテント({@link android.content.Intent#ACTION_SEND} アクションとテキスト/プレーン データが含まれるインテント)を処理できるものがあるかどうかが確認されます
+
+
+インテントを処理できるアプリが 1 つしかない場合は、そのアプリがすぐに開いてインテントを受け取ります。
+インテントを処理できるアクティビティが複数ある場合、ユーザーが使用するアプリを選択できるダイアログが表示されます。
+</p>
+
+
+<div class="figure" style="width:200px">
+  <img src="{@docRoot}images/training/basics/intent-chooser.png" alt="">
+  <p class="img-caption"><strong>図 2.</strong> チューザのダイアログ</p>
+</div>
+
+<h3 id="ForceChooser">アプリチューザを表示する</h3>
+
+<p>暗黙的インテントに応答するアプリが 2 つ以上ある場合、ユーザーは使用するアプリを選択でき、そのアプリをアクションに対するデフォルトの選択肢にすることができます。
+
+これは、ウェブ ページを開いたり、(1 つのカメラを選ぶ傾向にあるユーザーが)
+写真を撮影したりといったアクションの実行時に、ユーザーが今後同じアプリの使用を希望するような場合に便利です(ユーザーは常に同じウェブブラウザを使用する傾向があります)。
+</p>
+
+<p>ただし、インテントに応答するアプリが複数あって、ユーザーが毎回別のアプリを使用する可能性がある場合は、チューザのダイアログを明示的に表示する必要があります。
+チューザのダイアログでは、
+アクションのたびに使用するアプリをユーザーに選択させます(ユーザーはアクションのデフォルトのアプリを選択できません)。
+たとえば、アプリが {@link
+android.content.Intent#ACTION_SEND} アクションを使って「共有」を実行するとき、 ユーザーが現在の状況によって別のアプリを使用して共有する場合もあるため、図 2 のようにチューザのダイアログは常に表示する必要があります。
+</p>
+
+
+
+
+<p>チューザを表示するには、{@link
+android.content.Intent#createChooser createChooser()} を使用して {@link android.content.Intent} を作成し、{@link
+android.app.Activity#startActivity startActivity()} に渡します。次に例を示します。</p>
+
+<pre>
+Intent sendIntent = new Intent(Intent.ACTION_SEND);
+...
+
+// Always use string resources for UI text.
+// This says something like "Share this photo with"
+String title = getResources().getString(R.string.chooser_title);
+// Create intent to show the chooser dialog
+Intent chooser = Intent.createChooser(sendIntent, title);
+
+// Verify the original intent will resolve to at least one activity
+if (sendIntent.resolveActivity(getPackageManager()) != null) {
+    startActivity(chooser);
+}
+</pre>
+
+<p>これにより、{@link
+android.content.Intent#createChooser createChooser()} メソッドに渡されたインテントに応答するアプリのリストを示すダイアログが表示され、
+指定されたテキストがダイアログのタイトルになります。</p>
+
+
+
+
+
+
+
+
+
+<h2 id="Receiving">暗黙的インテントを受け取る</h2>
+
+<p>アプリが受け取ることのできる暗黙的インテントを通知するには、<a href="{@docRoot}guide/topics/manifest/manifest-intro.html">マニフェスト ファイル</a>で <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a> 要素を使ってアプリのコンポーネントごとに 1 つ以上のインテント フィルタを宣言します。各インテント フィルタは、インテントのアクション、データ、カテゴリに基づいて受け入れるインテントのタイプを指定します。
+
+
+
+インテントがいずれかのインテント フィルタを通過した場合のみ、システムが暗黙的インテントをアプリのコンポーネントに配信します。
+</p>
+
+<p class="note"><strong>注:</strong> 明示的インテントは、コンポーネントが宣言しているインテント フィルタに関係なく、常にターゲットに配信されます。
+</p>
+
+<p>アプリのコンポーネントは固有のジョブそれぞれに対して個別のフィルタを宣言する必要があります。たとえば、画像キャラリーのアプリの 1 つのアクティビティには、画像を表示するフィルタと、画像を編集するフィルタの 2 つがあります。
+
+アクティビティが開始すると、{@link android.content.Intent} を調べて {@link android.content.Intent} にある情報に基づいてどのように動作するかを決定します(編集コントロールを表示するかどうかなど)。
+
+</p>
+
+<p>各インテント フィルタは、アプリのマニフェスト ファイルの <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a> 要素で定義され、これは対応するアプリのコンポーネント(<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 要素など)にネストされます。
+
+
+<a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a> 内で、次の 3 つの要素のなかで 1 つ以上を使用して、受け入れるインテントのタイプを指定できます。
+
+</p>
+
+<dl>
+<dt><a href="{@docRoot}guide/topics/manifest/action-element.html">{@code &lt;action&gt;}</a></dt>
+  <dd>{@code name} 属性で、受け入れるインテントのアクションを宣言します。値は、クラス定数ではなく、アクションのリテラル文字列値である必要があります。
+</dd>
+<dt><a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a></dt>
+  <dd>データ URI (<code>scheme</code>、<code>host</code>、<code>port</code>、<code>path</code> など) や MIME タイプのさまざまな側面を指定する 1 つ以上の属性を使用して、受け入れるデータのタイプを宣言します。
+
+</dd>
+<dt><a href="{@docRoot}guide/topics/manifest/category-element.html">{@code &lt;category&gt;}</a></dt>
+  <dd>{@code name} 属性で、受け入れるインテントのカテゴリを宣言します。値は、クラス定数ではなく、アクションのリテラル文字列値である必要があります。
+
+
+  <p class="note"><strong>注:</strong> 暗黙的インテントを受け取るには、インテント フィルタに {@link android.content.Intent#CATEGORY_DEFAULT} カテゴリを<strong>含める</strong>必要があります。
+
+{@link android.app.Activity#startActivity startActivity()} メソッドと {@link android.app.Activity#startActivityForResult startActivityForResult()}メソッドはすべてのインテントを、{@link android.content.Intent#CATEGORY_DEFAULT} カテゴリを宣言しているものとして処理します。
+
+
+
+  インテント フィルタでカテゴリを宣言していない場合、暗黙的インテントはアクティビティに紐付けされません。
+</p>
+  </dd>
+</dl>
+
+<p>次に、データ タイプがテキストの場合に、{@link android.content.Intent#ACTION_SEND} インテントを受け取るインテント フィルタを使用したアクティビティ宣言の例を示します。
+</p>
+
+<pre>
+&lt;activity android:name="ShareActivity">
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="text/plain"/>
+    &lt;/intent-filter>
+&lt;/activity>
+</pre>
+
+<p><a href="{@docRoot}guide/topics/manifest/action-element.html">{@code &lt;action&gt;}</a>、<a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>、<a href="{@docRoot}guide/topics/manifest/category-element.html">{@code &lt;category&gt;}</a> のなかで 2 つ以上のインスタンスを含むフィルタを作成することもできます。その場合、コンポーネントがそれらのフィルタ要素のすべての組み合わせを処理できることを確認しておきます。
+
+
+
+
+</p>
+
+<p>複数のタイプのインテントに対応しながら、アクション、データ、カテゴリタイプの特定の組み合わせのみを処理する場合は、複数のインテント フィルタを作成する必要があります。
+</p>
+
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>コンポーネントへのアクセスを制限する</h2>
+<p>インテント フィルタを使用して他のアプリでコンポーネントを開始できないようにする方法は安全ではありません。
+インテント フィルタでは暗黙的インテントの特定の種類にのみ応答するようコンポーネントを制限しますが、開発者がコンポーネントを決定する場合は、明示的インテントを使用して別のアプリからアプリのコンポーネントを開始できるようになります。アプリのコンポーネントを<em>自身のアプリでのみ</em>開始できるようにする必要がある場合は、そのコンポーネントの <a href="{@docRoot}guide/topics/manifest/activity-element.html#exported">{@code
+exported}</a> 属性を{@code "false"} に設定します。
+
+
+
+
+</p>
+</div>
+</div>
+
+<p>暗黙的インテントは、3 つの要素それぞれへのインテントを比較して、フィルタでテストされます。
+コンポーネントに配信されるには、インテントが 3 つのテストすべてを通過する必要があります。一致しないものが 1 つでも場合、Android システムはインテントをコンポーネントに配信しません。
+
+ただし、コンポーネントは複数のインテント フィルタを保持していることもあるため、1 つのインテント フィルタを通過できなかったインテントでも、別のフィルタを通過できる場合があります。システムによるインテント解決の詳細は、次のセクションの<a href="#Resolution">インテントの解決</a>で説明します。
+
+
+</p>
+
+<p class="caution"><strong>警告:</strong> 他のアプリの {@link android.app.Service} で誤って実行されないように、自身のサービスは常に明示的インテントを使用して開始し、サービスではインテント フィルタは宣言しないでください。
+
+</p>
+
+<p class="note"><strong>注:</strong> すべてのアクティビティにおいて、インテント フィルタはマニフェスト ファイルで宣言する必要があります。ただし、ブロードキャスト レシーバーのフィルタは、{@link android.content.Context#registerReceiver(BroadcastReceiver, IntentFilter, String,
+Handler) registerReceiver()} を呼び出すことで動的に登録できます。
+
+
+その後、レシーバーの登録を解除するには、{@link
+android.content.Context#unregisterReceiver unregisterReceiver()} を使用します。これにより、アプリが実行中の特定の期間だけ、アプリが特定のブロードキャストをリッスンできるようになります。
+
+</p>
+
+
+
+
+
+
+
+<h3 id="ExampleFilters">フィルタの例</h3>
+
+<p>インテント フィルタの動作をより深く理解するため、ソーシャル シェアリング アプリのマニフェスト ファイルからの次のスニペットをご覧ください。
+</p>
+
+<pre>
+&lt;activity android:name="MainActivity">
+    &lt;!-- This activity is the main entry, should appear in app launcher -->
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.MAIN" />
+        &lt;category android:name="android.intent.category.LAUNCHER" />
+    &lt;/intent-filter>
+&lt;/activity>
+
+&lt;activity android:name="ShareActivity">
+    &lt;!-- This activity handles "SEND" actions with text data -->
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="text/plain"/>
+    &lt;/intent-filter&gt;
+    &lt;!-- This activity also handles "SEND" and "SEND_MULTIPLE" with media data -->
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;action android:name="android.intent.action.SEND_MULTIPLE"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="application/vnd.google.panorama360+jpg"/>
+        &lt;data android:mimeType="image/*"/>
+        &lt;data android:mimeType="video/*"/>
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p>1 つ目のアクティビティである {@code MainActivity} は、アプリのメイン エントリ ポイントで、ユーザーがランチャー アイコンから初めてアプリを起動したときに開くアクティビティです。&mdash;
+</p>
+<ul>
+  <li>{@link android.content.Intent#ACTION_MAIN} アクションが、これがメインのエントリ ポイントで、インテント データはないことを示しています。
+</li>
+  <li>{@link android.content.Intent#CATEGORY_LAUNCHER} カテゴリが、このアクティビティのアイコンをシステムのアプリ ランチャーに配置する必要があることを示しています。
+<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 要素が {@code icon} を使ってアイコンを指定しない場合、システムは <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a> 要素からのアイコンを使用します。
+
+</li>
+</ul>
+<p>アクティビティをアプリ ランチャーに表示するには、この 2 つをペアリングする必要があります。</p>
+
+<p>2 つ目のアクティビティである {@code ShareActivity} が、テキストやメディア コンテンツの共有を促します。
+ユーザーは {@code MainActivity} に移動することでこのアクティビティに入ることもありますが、2 つのインテント フィルタのいずれかに一致する暗黙的インテントを発行する別のアプリから直接 {@code ShareActivity} に入ることもできます。
+
+</p>
+
+<p class="note"><strong>注:</strong> MIME タイプ(<a href="https://developers.google.com/panorama/android/">{@code
+application/vnd.google.panorama360+jpg}</a>)は、パノラマ写真を指定する特別なデータタイプで、<a href="{@docRoot}reference/com/google/android/gms/panorama/package-summary.html">Google
+panorama</a> API を使って処理できます。
+
+</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h2 id="PendingIntent">ペンディング インテントを使用する</h2>
+
+<p>{@link android.app.PendingIntent} オブジェクトは、{@link
+android.content.Intent} オブジェクトのラッパーです。{@link android.app.PendingIntent} の主な目的は、別のアプリケーションに {@link android.content.Intent} をアプリ自身のプロセスから実行したように使用できるパーミッションを付与することです。
+
+
+</p>
+
+<p>ペンディング インテントの主な使用例には、次のようなものがあります。</p>
+<ul>
+  <li><a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">通知</a> を使ってユーザーがアクションを実行するときに実施するインテントを宣言する(Android システムの {@link android.app.NotificationManager} が {@link android.content.Intent} を実行します)。
+
+
+  <li>
+<a href="{@docRoot}guide/topics/appwidgets/index.html">アプリのウィジェット</a> を使ってユーザーがアクションを実行するときに実施するインテントを宣言する(ホーム画面のアプリが {@link android.content.Intent} を実行します)。
+
+  <li>今後の指定された時間に実施するインテントを宣言する(Android システムの {@link android.app.AlarmManager} が {@link android.content.Intent} を実行します)。
+
+</ul>
+
+<p>各 {@link android.content.Intent} オブジェクトはアプリの特定のタイプのコンポーネント({@link android.app.Activity}、{@link android.app.Service}、{@link android.content.BroadcastReceiver} のいずれか)で処理されることを前提としているため、{@link android.app.PendingIntent} も同様の前提で作成する必要があります。
+
+
+ペンディング インテントを使用する場合、アプリはインテントの実行時に {@link android.content.Context#startActivity
+startActivity()} などの呼び出しを行いません。
+代わりに、{@link android.app.PendingIntent} の作成時にそれぞれのクリエーター メソッドを呼び出して目的のコンポーネント タイプを宣言する必要があります。
+</p>
+
+<ul>
+  <li>{@link android.app.Activity} を開始する {@link android.content.Intent} の場合は、{@link android.app.PendingIntent#getActivity PendingIntent.getActivity()}。
+</li>
+  <li>{@link android.app.Service} を開始する {@link android.content.Intent} の場合は、{@link android.app.PendingIntent#getService PendingIntent.getService()}。
+</li>
+  <li>{@link android.content.BroadcastReceiver} を開始する {@link android.content.Intent} の場合は、{@link android.app.PendingIntent#getBroadcast PendingIntent.getBroadcast()}。
+</li>
+</ul>
+
+<p>アプリが他のアプリからペンディング インテントを<em>受け取る</em>場合を除いて、{@link android.app.PendingIntent} の作成時に必要となる {@link android.app.PendingIntent} メソッドはほぼ上記の 3 つのみです。
+
+</p>
+
+<p>各メソッドが現在のアプリの {@link android.content.Context}、ラップする {@link android.content.Intent}、インテントの使用方法を指定する 1 つ以上のフラグ(インテントを 2 回以上できるかどうかなど)を受け取ります。
+
+</p>
+
+<p>ペンディング インテントの使用に関する詳細については、
+「<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">通知</a>」や「<a href="{@docRoot}guide/topics/appwidgets/index.html">App Widgets</a>」など、それぞれの使用例の API ガイドをご覧ください。
+</p>
+
+
+
+
+
+
+
+<h2 id="Resolution">インテント解決</h2>
+
+
+<p>システムがアクティビティを開始する暗黙的インテントを受け取ると、次の 3 つの側面に基づいてインテントをインテント フィルタと比較し、そのインテントに最適なアクティビティを検索します。
+</p>
+
+<ul>
+  <li>インテントのアクション
+  <li>インテントのデータ(URI とデータタイプの両方)
+  <li>インテントのカテゴリ
+</ul>
+
+<p>次のセクションでは、インテント フィルタがアプリのマニフェスト ファイルでどのように宣言されているかという観点から、インテントが適切なコンポーネントに紐付けられる方法について説明します。
+</p>
+
+
+<h3 id="ActionTest">アクションのテスト</h3>
+
+<p>受け入れるインテントのアクションを指定するには、インテント フィルタでゼロ個以上の <a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> 要素を宣言します。
+次に例を示します。</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.EDIT" /&gt;
+    &lt;action android:name="android.intent.action.VIEW" /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>このフィルタを通過するには、{@link android.content.Intent} で指定されたアクションが、フィルタにリストされたアクションのいずれかに一致する必要があります。
+</p>
+
+<p>フィルタのリストにアクションが 1 つもない場合は、インテントに一致するものがないため、すべてのインテントがテストに失敗します。
+ただし、{@link android.content.Intent} がアクションを指定していない場合は、テストに合格します(フィルタに少なくとも 1 つのアクションが含まれている必要があります)。
+
+</p>
+
+
+
+<h3 id="CategoryTest">カテゴリのテスト</h3>
+
+<p>受け入れるインテントのカテゴリを指定するには、インテント フィルタでゼロ個以上の <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> 要素を宣言します。
+次に例を示します。</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+    &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>インテントがカテゴリのテストに合格するには、{@link android.content.Intent} 内のすべてのカテゴリが、フィルタ内のカテゴリに一致する必要があります。
+インテント フィルタでは、{@link android.content.Intent} で指定されたカテゴリよりも多くのカテゴリが宣言されている場合もあるため、すべてが {@link android.content.Intent} に一致しなくてもテストには合格します。&mdash;
+
+そのため、カテゴリのないインテントは、フィルタで宣言されているカテゴリに関係なく、常にこのテストに合格することになります。
+</p>
+
+<p class="note"><strong>注:</strong> Androidは自動的に、{@link
+android.content.Context#startActivity startActivity()} と {@link
+android.app.Activity#startActivityForResult startActivityForResult()} に渡されるすべての暗黙的インテントに {@link android.content.Intent#CATEGORY_DEFAULT} カテゴリを自動的に適用します。そのため、アクティビティで暗黙的インテントを受け取りたい場合は、前出の {@code &lt;intent-filter&gt;} の例のように、アクティビティのインテント フィルタに {@code "android.intent.category.DEFAULT"} のカテゴリを含める必要があります。
+
+
+
+
+</p>
+
+
+
+<h3 id="DataTest">データのテスト</h3>
+
+<p>受け入れるインテント データを指定するには、インテント フィルタでゼロ個以上の <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
+&lt;data&gt;}</a> 要素を宣言します。
+次に例を示します。</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:mimeType="video/mpeg" android:scheme="http" ... /&gt;
+    &lt;data android:mimeType="audio/mpeg" android:scheme="http" ... /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>各 <code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code> 要素では、URI 構造とデータタイプ(MIME メディア タイプ)を指定できます。
+URI の各パートには、{@code scheme}、{@code host}、{@code port}、{@code path} の個別の属性があります。&mdash;
+&mdash;
+
+</p>
+
+<p style="margin-left: 2em">{@code &lt;scheme&gt;://&lt;host&gt;:&lt;port&gt;/&lt;path&gt;}</p>
+
+<p>
+次に例を示します。
+</p>
+
+<p style="margin-left: 2em">{@code content://com.example.project:200/folder/subfolder/etc}</p>
+
+<p>この URI では、スキームが {@code content}、ホストが {@code com.example.project}、ポートが {@code 200}、パスが {@code folder/subfolder/etc} です。
+
+</p>
+
+<p>これらの各属性は <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a> 要素では省略可能ですが、一次従属があります。
+</p>
+<ul>
+  <li>スキームが指定されていない場合、ホストは無視されます。</li>
+  <li>ホストが指定されていない場合、ポートは無視されます。</li>
+  <li>スキームとホストの両方が指定されていない場合、パスは無視されます。</li>
+</ul>
+
+<p>インテントの URI をフィルタの URI 仕様に比較するときは、フィルタに含まれる URI の一部でのみ比較されます。
+次に例を示します。</p>
+<ul>
+  <li>フィルタでスキームのみが指定されている場合、そのスキームを持つすべての URI がフィルタに一致します。
+</li>
+  <li>フィルタでスキームと認証局が指定されていて、パスが指定されていない場合、パスにかかわらず同じスキームと認証局を持つすべての URI がフィルタを通過します。
+</li>
+  <li>フィルタでスキーム、認証局、パスが指定されている場合、同じスキーム、認証局、パスを持つ URI のみがフィルタを通過します。
+</li>
+</ul>
+
+<p class="note"><strong>注:</strong> パスの指定では、ワイルドカードのアスタリスク(*)を使ってパス名の部分一致のみを要求することもできます。
+</p>
+
+<p>データのテストでは、インテントの URI と MIME タイプの両方を、フィルタで指定された URI と MIME タイプと比較します。
+規則は次のとおりです。
+</p>
+
+<ol type="a">
+<li>URI も MIME タイプも含まないインテントは、フィルタで URI や MIME タイプが指定されていない場合のみテストをパスします。
+</li>
+
+<li>URI を含んでいて MIME タイプを含んでいないインテント(明示的にも含まれておらず、URI からも推測できない)場合は、URI がフィルタの URI 形式に一致し、フィルタが MIME タイプを指定していない場合のみテストをパスします。
+
+</li>
+
+<li>MIME タイプを含んでいて、URI を含んでいないインテントは、フィルタのリストに同じ MIME タイプがあり、URI 形式が指定されていない場合のみテストをパスします。
+</li>
+
+<li>URI と MINE タイプの両方を含む(明示的か、URI からの推測)インテントは、MIME タイプがフィルタのリストにあるタイプに一致した場合のみ、テストの MIME タイプのパートをパスします。
+
+テストの URI のパートは、URI がフィルタの URI に一致するか、{@code content:} URI か {@code file:} URI があって URI が指定されていない場合にパスできます。つまり、フィルタにリストに MIME タイプ<em>のみ</em>がある場合、コンポーネントは {@code content:} データと {@code file:} データをサポートすると推定されます。
+
+
+
+</p></li>
+</ol>
+
+<p>
+この最後の規則(d)は、コンポーネントがファイルやコンテンツ プロバイダからのローカル データを取得できるという予測を反映しています。そのため、フィルタにはデータタイプのみをリストして、{@code content:} スキームや {@code file:} スキームを明示的に指定する必要はありません。これは一般的なケースです。
+
+
+
+たとえば、次の <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a> 要素は、コンポーネントがコンテンツ プロバイダからの画像データを取得し、それを表示できることを Android に伝えています。
+
+
+</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:mimeType="image/*" /&gt;
+    ...
+&lt;/intent-filter&gt;</pre>
+
+<p>
+利用可能なデータはほとんどコンテンツプロバイダによって投入されることから、データタイプが指定されていて URI 指定されていないデータが最も一般的です
+
+</p>
+
+<p>
+もうひとつ一般的な設定として、スキームと データタイプを使ったフィルタがあります。たとえば、次の <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a> 要素は、アクションを実行するためにコンポーネントがネットワークから動画データを取得できることを Android に伝えています。
+
+
+
+</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:scheme="http" android:type="video/*" /&gt;
+    ...
+&lt;/intent-filter&gt;</pre>
+
+
+
+<h3 id="imatch">インテントのマッチング</h3>
+
+<p>インテントをインテント フィルタにマッチングする目的には、アクティベートするターゲットを発見するということだけでなく、端末上のコンポーネントのセットに関連する何かを発見するという目的があります。
+
+たとえば、ホーム アプリは {@link android.content.Intent#ACTION_MAIN} アクションと {@link android.content.Intent#CATEGORY_LAUNCHER} カテゴリを指定するインテント フィルタを持つすべてのアクティビティを見つけることで、アプリ ランチャーを設定します。
+
+
+</p>
+
+<p>アプリケーションでも、同様の方法でインテントのマッチングを使用できます。{@link android.content.pm.PackageManager} には特定のインテントを受け入れることのできるすべてのコンポーネントを返す一連の {@code query...()} メソッドと、インテントに応答できる最適なコンポーネントを返す同様のシリーズの {@code resolve...()} メソッドがあります。
+
+
+
+たとえば、{@link android.content.pm.PackageManager#queryIntentActivities
+queryIntentActivities()} は引数として渡されたインテントを実行できるすべてのアクティビティの一覧を返し、{@link
+android.content.pm.PackageManager#queryIntentServices
+queryIntentServices()} は同様のサービスの一覧を返します。いずれのメソッドでもコンポーネントのアクティベートは行われず、応答できるものを列挙するだけです。
+
+
+
+ブロードキャスト レシーバー用にも、同様のメソッド {@link android.content.pm.PackageManager#queryBroadcastReceivers
+queryBroadcastReceivers()} があります。
+
+</p>
+
+
+
+
diff --git a/docs/html-intl/intl/ja/guide/components/loaders.jd b/docs/html-intl/intl/ja/guide/components/loaders.jd
new file mode 100644
index 0000000..bc93677
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/components/loaders.jd
@@ -0,0 +1,494 @@
+page.title=ローダ
+parent.title=アクティビティ
+parent.link=activities.html
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+    <h2>本書の内容</h2>
+    <ol>
+    <li><a href="#summary">Loader API の概要</a></li>
+    <li><a href="#app">アプリケーションでローダを使用する</a>
+      <ol>
+        <li><a href="#requirements"></a></li>
+        <li><a href="#starting">ローダを開始する</a></li>
+        <li><a href="#restarting">ローダを再開する</a></li>
+        <li><a href="#callback">LoaderManager コールバックを使用する</a></li>
+      </ol>
+    </li>
+    <li><a href="#example">例</a>
+       <ol>
+         <li><a href="#more_examples">その他の例</a></li>
+        </ol>
+    </li>
+  </ol>
+    
+  <h2>キークラス</h2>
+    <ol>
+      <li>{@link android.app.LoaderManager}</li>
+      <li>{@link android.content.Loader}</li>
+
+    </ol>   
+    
+    <h2>関連サンプル</h2>
+   <ol>
+     <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
+LoaderCursor</a></li>
+     <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html">
+LoaderThrottle</a></li>
+   </ol>
+  </div>
+</div>
+
+<p>Android 3.0 で導入されたローダによって、アクティビティやフラグメントでのデータの非同期ロードが簡単になりました。
+ローダには、次の 3 つの特徴があります。</p>
+  <ul>
+    <li>すべての {@link android.app.Activity} と {@link
+android.app.Fragment} で使用できる。</li>
+    <li>非同期のデータロードを提供する。</li>
+    <li>データのソースを監視し、コンテンツが変更されたときに新しい結果を配信する。
+</li>
+    <li>設定の変更後に再作成されると、自動的に最後のローダのカーソルに再接続するため、
+再度データを問い合わせる必要がない。
+</li>
+  </ul>
+ 
+<h2 id="summary">Loader API の概要</h2>
+
+<p>アプリケーションでローダを使用するのに必要になりそうなクラスやインターフェースは複数あります。
+次の表で、それらの概要をまとめました。</p>
+
+<table>
+  <tr>
+    <th>クラス/インターフェース</th>
+    <th>説明</th>
+  </tr>
+  <tr>
+    <td>{@link android.app.LoaderManager}</td>
+    <td>1 つ以上の {@link
+android.content.Loader} インスタンスを管理するための、{@link android.app.Activity} や {@link android.app.Fragment} に関連した抽象クラスです。
+これにより、アプリケーションは {@link android.app.Activity} や {@link android.app.Fragment} のライフサイクルと連動して長時間の操作を管理できるようになります。最も一般的なのは、{@link android.content.CursorLoader} で使用する方法ですが、アプリケーションでは他のタイプのデータのロード用に、独自のローダを自由に作成することもできます。
+
+
+
+
+    <br />
+    <br />
+    1 つのアクティビティやフラグメントごとに、{@link android.app.LoaderManager} は 1 つだけ存在しますが、{@link android.app.LoaderManager} は複数のローダを持つことができます。
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.app.LoaderManager.LoaderCallbacks}</td>
+    <td>クライアントが {@link
+android.app.LoaderManager} とやり取りするためのコールバック インターフェースです。たとえば、{@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()} コールバック メソッドを使用してと新しいローダを作成します。
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.content.Loader}</td>
+    <td>非同期のデータロードを実行する抽象クラスです。これは、ローダの基本クラスです。
+通常は {@link
+android.content.CursorLoader} を使用しますが、独自のサブクラスを実装することもできます。ローダがアクティブな間は、データのソースを管理し、コンテンツが変更されたときに新しい結果を配信します。
+
+ </td>
+  </tr>
+  <tr>
+    <td>{@link android.content.AsyncTaskLoader}</td>
+    <td>処理を行うための {@link android.os.AsyncTask} を提供する抽象的なローダです。</td>
+  </tr>
+  <tr>
+    <td>{@link android.content.CursorLoader}</td>
+    <td>{@link android.content.ContentResolver} に問い合わせて {@link
+android.database.Cursor} を返す{@link android.content.AsyncTaskLoader} のサブクラスです。
+これは、カーソルのクエリ用に標準的な方法で {@link
+android.content.Loader} プロトコルを実装するクラスで、アプリケーションの UI をブロックせずにバックグラウンドでカーソルのクエリを実行するように、{@link android.content.AsyncTaskLoader} を基に構築されています。{@link
+android.content.ContentProvider} からデータを非同期的にロードする際は、フラグメントの API やアクティビティの API 経由でマネージド クエリを実行するのではなく、このローダを使用するのが最適です。
+
+
+
+</td>
+  </tr>
+</table>
+
+<p>上の表のクラスとインターフェースは、アプリケーションでローダを実装する際に使用する必須コンポーネントです。
+作成するローダごとにこれらすべてが必要になるわけではありませんが、{@link
+android.app.LoaderManager} への参照は、ローダを初期化したり {@link
+android.content.CursorLoader} などの {@link android.content.Loader} を実装したりするには {@link
+android.app.LoaderManager} への参照が常に必要になります。
+次のセクションでは、アプリケーションでのこれらのクラスとインターフェースの使用方法を説明します。
+</p>
+
+<h2 id ="app">アプリケーションでローダを使用する</h2>
+<p>このセクションでは、Android アプリケーションのローダの使用方法について説明します。通常、ローダを使用するアプリケーションには次の内容が含まれます。
+</p>
+<ul>
+  <li>{@link android.app.Activity} または {@link android.app.Fragment}。</li>
+  <li>{@link android.app.LoaderManager} のインスタンス。</li>
+  <li>{@link
+android.content.ContentProvider} でサポートされているデータをロードする {@link android.content.CursorLoader}。あるいは、{@link android.content.Loader} や{@link android.content.AsyncTaskLoader} の独自のサブクラスを実装して他のソースからデータをロードすることもできます。
+
+</li>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks} の実装。ここで、新しいローダを作成して既存のローダへの参照を管理します。
+
+</li> 
+<li>{@link
+android.widget.SimpleCursorAdapter} などのローダのデータを表示する方法。</li>
+  <li>{@link android.content.CursorLoader} を使用するときの、{@link android.content.ContentProvider} などのデータ ソース。
+</li>
+</ul>
+<h3 id="starting">ローダを開始する</h3>
+
+<p>{@link android.app.LoaderManager} は 1 つ以上の {@link
+android.content.Loader} インスタンスを {@link android.app.Activity} や {@link android.app.Fragment} 内で管理します。
+1 つのアクティビティやフラグメントごとに、{@link
+android.app.LoaderManager} は 1 つだけ存在します。</p> 
+
+<p>通常は、アクティビティの {@link
+android.app.Activity#onCreate onCreate()} メソッドか、フラグメントの {@link android.app.Fragment#onActivityCreated onActivityCreated()} メソッド内で {@link android.content.Loader} を初期化します。
+
+その方法は次のとおりです。
+</p>
+
+<pre>// Prepare the loader.  Either re-connect with an existing one,
+// or start a new one.
+getLoaderManager().initLoader(0, null, this);</pre>
+
+<p>{@link android.app.LoaderManager#initLoader initLoader()} メソッドが次のパラメータを受け取ります。
+</p>
+<ul>
+  <li>ローダを識別する一意の ID。この例では、ID は 0 です。</li>
+<li>ローダの構築時に提供する任意の引数(この例では <code>null</code>)。
+</li> 
+
+<li>{@link android.app.LoaderManager} がローダのイベントを報告する際に呼び出す {@link android.app.LoaderManager.LoaderCallbacks} の実装。
+この例では、ローカルクラスが {@link
+android.app.LoaderManager.LoaderCallbacks} インターフェースを実装するため、自身の {@code this} に参照を渡します。
+
+</li> 
+</ul>
+<p>{@link android.app.LoaderManager#initLoader initLoader()} の呼び出しによって、ローダが初期化され、アクティブになります。
+結果には次の 2 つの可能性があります。</p>
+<ul>
+  <li>ID で指定されたローダが既に存在する場合は、最後に作成されたローダが再利用されます。
+</li>
+  <li>ID で指定したローダが存在<em>しない</em>場合、{@link android.app.LoaderManager#initLoader initLoader()} が {@link android.app.LoaderManager.LoaderCallbacks} メソッドの {@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()} をトリガーします。ここで、インスタンスを作成して新しいローダを返すコードを実装します。詳細については、<a href="#onCreateLoader">onCreateLoader</a> のセクションをご覧ください。
+
+
+
+</li>
+</ul>
+<p>いずれの場合でも、その {@link android.app.LoaderManager.LoaderCallbacks} の実装はローダに関連付けられ、ローダの状態が変化したときに呼び出されます。
+
+この呼び出しの時点で、呼び出し側が開始された状態にあり、要求されたローダが既に存在し、データを生成済みの場合は、システムはただちに {@link
+android.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()} を呼び出す({@link android.app.LoaderManager#initLoader initLoader()} の間に)ため、それに備えておく必要があります。
+
+
+
+このコールバックの詳細については、<a href="#onLoadFinished">
+onLoadFinished</a> をご覧ください。</p>
+
+<p>{@link android.app.LoaderManager#initLoader initLoader()} メソッドは作成された {@link android.content.Loader} を返しますが、そこへの参照はキャプチャしないことに注意してください。
+
+{@link android.app.LoaderManager} は自動的にローダの生存状態を管理します。
+{@link android.app.LoaderManager} は必要に応じて開始と停止を行いし、ローダとそれに関連付けられたコンテンツの状態を管理します。
+
+このことからもわかるように、ローダと直接やり取りすることはほとんどありません(ローダの動作を微調整するローダ メソッドの使用例については、<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> のサンプルをご覧ください)。
+
+特定のイベントが発生したときにローディングの処理に干渉することを目的に、{@link
+android.app.LoaderManager.LoaderCallbacks} を使用することがよくあります。
+
+このトピックの詳細については、<a href="#callback">LoadManager コールバックを使用する</a>をご覧ください。</p>
+
+<h3 id="restarting">ローダを再開する</h3>
+
+<p>上記のように {@link android.app.LoaderManager#initLoader initLoader()} を使用する場合、指定した ID があれば既存のローダを使用し、なければ新たに作成します。
+
+ただし、古いデータを破棄して最初からやり直したいこともあります。
+</p>
+
+<p>古いデータを破棄するには、{@link
+android.app.LoaderManager#restartLoader restartLoader()} を使用します。たとえば、この {@link android.widget.SearchView.OnQueryTextListener} を実装すると、ユーザーのクエリが変化したときにローダが再開されます。
+
+新しい検索フィルタを使用して新しいクエリを実行できるように、ローダは再開される必要があります。
+</p>
+
+<pre>
+public boolean onQueryTextChanged(String newText) {
+    // Called when the action bar search text has changed.  Update
+    // the search filter, and restart the loader to do a new query
+    // with this filter.
+    mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+    getLoaderManager().restartLoader(0, null, this);
+    return true;
+}</pre>
+
+<h3 id="callback">LoaderManager コールバックを使用する</h3>
+
+<p>{@link android.app.LoaderManager.LoaderCallbacks} はクライアントが {@link android.app.LoaderManager} とやり取りできるようにするコールバック インターフェースです。
+ </p>
+<p>特に、{@link android.content.CursorLoader} のローダでは、停止後もデータを保持しておくことが望まれます。
+これにより、アプリケーションがアクティビティやフラグメントの {@link android.app.Activity#onStop
+onStop()} メソッドや {@link android.app.Activity#onStart onStart()} メソッド全体でデータを維持することができるので、ユーザーがアプリケーションに戻ったときにデータの再ロードを待つ必要がありません。
+
+
+新しいローダを作成するタイミングを知りたいときや、ローダのデータの使用を停止するタイミングをアプリケーションに伝えるときは、{@link android.app.LoaderManager.LoaderCallbacks} メソッドを使用します。
+
+</p>
+
+<p>{@link android.app.LoaderManager.LoaderCallbacks} には次のメソッドが含まれています。
+</p>
+<ul>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()} — 指定された ID の新しい {@link android.content.Loader} をインスタンス化して返します。
+
+</li></ul>
+<ul>
+  <li> {@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()}— 前に作成されたローダがロードを完了した時に呼び出されます。
+
+</li></ul>
+<ul>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()} — 前に作成されたローダがリセットされ、データが利用不可になったときに呼び出されます。
+
+
+</li>
+</ul>
+<p>これらのメソッドについては、次のセクションで詳しく説明します。</p>
+
+<h4 id ="onCreateLoader">onCreateLoader</h4>
+
+<p>ローダにアクセスしようとしたとき(たとえば、{@link
+android.app.LoaderManager#initLoader initLoader()} 経由など)、ID で指定したローダが存在するかどうかを確認されます。
+存在しない場合は、{@link
+android.app.LoaderManager.LoaderCallbacks} メソッドの {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()} をトリガーします。ここで、新しいローダを作成します。
+通常は、{@link
+android.content.CursorLoader} になりますが、独自の {@link
+android.content.Loader} サブクラスを実装することもできます。 </p>
+
+<p>この例では、{@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}
+コールバック メソッドが {@link android.content.CursorLoader} を作成します。{@link android.content.CursorLoader}は、そのコンストラクタ メソッドを使用して構築する必要があり、{@link
+android.content.ContentProvider} へのクエリを実行するのに必要なすべての情報が必要になります。
+
+具体的に必要な情報は次のとおりです。</p>
+<ul>
+  <li><em>uri</em> — 取得するコンテンツの URI。 </li>
+  <li><em>projection</em> — 返す列のリスト。<code>null</code> を渡すとすべての列が返されるため、効率的ではありません。
+ </li>
+  <li><em>selection</em> — SQL WHERE 句の書式で返す行を宣言するフィルタ(WHERE 自体は除く)。
+<code>null</code> を渡すと指定した URI のすべての行が返されます。
+ </li>
+  <li><em>selectionArgs</em> — selection に ? を含めると、selection に表示される順序で <em>selectionArgs</em> の値に置き換えられます。
+
+この値は、Strings 配列でバインドされます。 </li>
+  <li><em>sortOrder</em> — SQL
+ORDER BY 句(ORDER 自体は除く)の形式で行を順序付けします。<code>null</code> を渡すとデフォルトのソート順序が使用されるため、順序が付けられない場合があります。
+</li>
+</ul>
+<p>次に例を示します。</p>
+<pre>
+ // If non-null, this is the current filter the user has provided.
+String mCurFilter;
+...
+public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+    // This is called when a new Loader needs to be created.  This
+    // sample only has one Loader, so we don't care about the ID.
+    // First, pick the base URI to use depending on whether we are
+    // currently filtering.
+    Uri baseUri;
+    if (mCurFilter != null) {
+        baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+                  Uri.encode(mCurFilter));
+    } else {
+        baseUri = Contacts.CONTENT_URI;
+    }
+
+    // Now create and return a CursorLoader that will take care of
+    // creating a Cursor for the data being displayed.
+    String select = &quot;((&quot; + Contacts.DISPLAY_NAME + &quot; NOTNULL) AND (&quot;
+            + Contacts.HAS_PHONE_NUMBER + &quot;=1) AND (&quot;
+            + Contacts.DISPLAY_NAME + &quot; != '' ))&quot;;
+    return new CursorLoader(getActivity(), baseUri,
+            CONTACTS_SUMMARY_PROJECTION, select, null,
+            Contacts.DISPLAY_NAME + &quot; COLLATE LOCALIZED ASC&quot;);
+}</pre>
+<h4 id="onLoadFinished">onLoadFinished</h4>
+
+<p>このメソッドは、前に作成したローダがロードを完了したときに呼び出されます。このメソッドは、このローダが提供した最後のデータが解放される前に呼び出されることが保証されています。
+
+この時点で、すべての古いデータを削除する必要がありますが(まもなく解放されるため)、データの所有者はローダでありローダが処理するため、自身でデータを解放しないようにしてください。
+
+</p>
+
+
+<p>アプリケーションがもうデータを使用していないことを検知すると、ローダがデータを解放します。
+たとえば、データが {@link
+android.content.CursorLoader} からのカーソルの場合は、自身で {@link
+android.database.Cursor#close close()} を呼び出さないようにしてください。カーソルが {@link android.widget.CursorAdapter} に置かれている場合は、古い {@link android.database.Cursor} がクローズされないように {@link
+android.widget.SimpleCursorAdapter#swapCursor swapCursor()} メソッドを使用する必要があります。
+
+次に例を示します。</p>
+
+<pre>
+// This is the Adapter being used to display the list's data.<br
+/>SimpleCursorAdapter mAdapter;
+...
+
+public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
+    // Swap the new cursor in.  (The framework will take care of closing the
+    // old cursor once we return.)
+    mAdapter.swapCursor(data);
+}</pre>
+
+<h4 id="onLoaderReset">onLoaderReset</h4>
+
+<p>このメソッドは、前に作成されたローダがリセットされ、データが利用できなくなったときに呼び出されます。
+このコールバックにより、データが解放されるタイミングがわかり、そのデータへの参照を削除できます。
+  </p>
+<p>この実装では、<code>null</code> の値を使用して {@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()} を呼び出します。
+
+</p>
+
+<pre>
+// This is the Adapter being used to display the list's data.
+SimpleCursorAdapter mAdapter;
+...
+
+public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
+    // This is called when the last Cursor provided to onLoadFinished()
+    // above is about to be closed.  We need to make sure we are no
+    // longer using it.
+    mAdapter.swapCursor(null);
+}</pre>
+
+
+<h2 id="example">例</h2>
+
+<p>以下は、連絡先のコンテンツ プロバイダに対するクエリの結果が含まれた {@link android.widget.ListView} を表示する {@link
+android.app.Fragment} の完全な実装の例です。
+{@link
+android.content.CursorLoader} を使用してプロバイダへのクエリを管理しています。</p>
+ 
+<p>この例にあるように、アプリケーションがユーザーの連絡先にアクセスするには、マニフェストに {@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS} の許可を含める必要があります。
+
+</p>
+
+<pre>
+public static class CursorLoaderListFragment extends ListFragment
+        implements OnQueryTextListener, LoaderManager.LoaderCallbacks&lt;Cursor&gt; {
+
+    // This is the Adapter being used to display the list's data.
+    SimpleCursorAdapter mAdapter;
+
+    // If non-null, this is the current filter the user has provided.
+    String mCurFilter;
+
+    @Override public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        // Give some text to display if there is no data.  In a real
+        // application this would come from a resource.
+        setEmptyText(&quot;No phone numbers&quot;);
+
+        // We have a menu item to show in action bar.
+        setHasOptionsMenu(true);
+
+        // Create an empty adapter we will use to display the loaded data.
+        mAdapter = new SimpleCursorAdapter(getActivity(),
+                android.R.layout.simple_list_item_2, null,
+                new String[] { Contacts.DISPLAY_NAME, Contacts.CONTACT_STATUS },
+                new int[] { android.R.id.text1, android.R.id.text2 }, 0);
+        setListAdapter(mAdapter);
+
+        // Prepare the loader.  Either re-connect with an existing one,
+        // or start a new one.
+        getLoaderManager().initLoader(0, null, this);
+    }
+
+    @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        // Place an action bar item for searching.
+        MenuItem item = menu.add(&quot;Search&quot;);
+        item.setIcon(android.R.drawable.ic_menu_search);
+        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+        SearchView sv = new SearchView(getActivity());
+        sv.setOnQueryTextListener(this);
+        item.setActionView(sv);
+    }
+
+    public boolean onQueryTextChange(String newText) {
+        // Called when the action bar search text has changed.  Update
+        // the search filter, and restart the loader to do a new query
+        // with this filter.
+        mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+        getLoaderManager().restartLoader(0, null, this);
+        return true;
+    }
+
+    @Override public boolean onQueryTextSubmit(String query) {
+        // Don't care about this.
+        return true;
+    }
+
+    @Override public void onListItemClick(ListView l, View v, int position, long id) {
+        // Insert desired behavior here.
+        Log.i(&quot;FragmentComplexList&quot;, &quot;Item clicked: &quot; + id);
+    }
+
+    // These are the Contacts rows that we will retrieve.
+    static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
+        Contacts._ID,
+        Contacts.DISPLAY_NAME,
+        Contacts.CONTACT_STATUS,
+        Contacts.CONTACT_PRESENCE,
+        Contacts.PHOTO_ID,
+        Contacts.LOOKUP_KEY,
+    };
+    public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+        // This is called when a new Loader needs to be created.  This
+        // sample only has one Loader, so we don't care about the ID.
+        // First, pick the base URI to use depending on whether we are
+        // currently filtering.
+        Uri baseUri;
+        if (mCurFilter != null) {
+            baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+                    Uri.encode(mCurFilter));
+        } else {
+            baseUri = Contacts.CONTENT_URI;
+        }
+
+        // Now create and return a CursorLoader that will take care of
+        // creating a Cursor for the data being displayed.
+        String select = &quot;((&quot; + Contacts.DISPLAY_NAME + &quot; NOTNULL) AND (&quot;
+                + Contacts.HAS_PHONE_NUMBER + &quot;=1) AND (&quot;
+                + Contacts.DISPLAY_NAME + &quot; != '' ))&quot;;
+        return new CursorLoader(getActivity(), baseUri,
+                CONTACTS_SUMMARY_PROJECTION, select, null,
+                Contacts.DISPLAY_NAME + &quot; COLLATE LOCALIZED ASC&quot;);
+    }
+
+    public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
+        // Swap the new cursor in.  (The framework will take care of closing the
+        // old cursor once we return.)
+        mAdapter.swapCursor(data);
+    }
+
+    public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
+        // This is called when the last Cursor provided to onLoadFinished()
+        // above is about to be closed.  We need to make sure we are no
+        // longer using it.
+        mAdapter.swapCursor(null);
+    }
+}</pre>
+<h3 id="more_examples">その他の例</h3>
+
+<p><strong>ApiDemos</strong> には、ローダの使用方法を示す他のサンプルがいくつか用意されています。
+</p>
+<ul>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
+LoaderCursor</a> — 上記のスニペットの完全バージョン。
+</li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> — スロットリングを使用して、データの変更時にコンテンツ プロバイダのクエリ数を軽減する方法の例です。
+</li>
+</ul>
+
+<p>SDK サンプルのダウンロードとインストールの詳細については、<a href="http://developer.android.com/resources/samples/get.html">Getting the Samples</a> をご覧ください。
+ </p>
+
diff --git a/docs/html-intl/intl/ja/guide/components/processes-and-threads.jd b/docs/html-intl/intl/ja/guide/components/processes-and-threads.jd
new file mode 100644
index 0000000..691a5f4
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/components/processes-and-threads.jd
@@ -0,0 +1,411 @@
+page.title=プロセスとスレッド
+page.tags=lifecycle,background
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本書の内容</h2>
+<ol>
+<li><a href="#Processes">プロセス</a>
+  <ol>
+    <li><a href="#Lifecycle">プロセスのライフサイクル</a></li>
+  </ol>
+</li>
+<li><a href="#Threads">スレッド</a>
+  <ol>
+    <li><a href="#WorkerThreads">ワーカー スレッド</a></li>
+    <li><a href="#ThreadSafe">スレッド セーフのメソッド</a></li>
+  </ol>
+</li>
+<li><a href="#IPC">プロセス間通信(IPC)</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>アプリケーション コンポーネントが開始し、アプリケーションに他に実行中のコンポーネントがない場合、Android システムは実行用のシングル スレッドを持つアプリケーション用の新しい Linux プロセスを開始します。
+
+デフォルトでは、同じアプリケーションのすべてのコンポーネントは同じプロセスとスレッド(「メイン」 スレッドと呼ばれます)で実行します。
+アプリケーション コンポーネントが開始したときに、既にそのアプリケーションのプロセスが存在する場合(アプリケーションからの他のコンポーネントが存在するため)、コンポーネントはそのプロセス内で開始し、同じ実行用のスレッドを使用します。
+
+ただし、アプリケーション内の別のコンポーネントを別のプロセスで実行するよう調整でき、あらゆるプロセスに対して追加のスレッドを作成できます。
+
+</p>
+
+<p>このドキュメントでは、Android アプリケーションでプロセスとスレッドがどのように動作するかについて説明します。</p>
+
+
+<h2 id="Processes">プロセス</h2>
+
+<p>デフォルトでは、同じアプリケーションのすべてのコンポーネントは同じプロセスで実行し、ほとんどのアプリケーションでこの動作を変更する必要はありません。
+ただし、特定のコンポーネントが属するプロセスを管理する必要がある場合は、マニフェスト ファイルでそれを行うことができます。
+</p>
+
+<p>コンポーネント要素の各タイプのマニフェスト エントリ(<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a>、<a href="{@docRoot}guide/topics/manifest/service-element.html">{@code
+&lt;service&gt;}</a>、<a href="{@docRoot}guide/topics/manifest/receiver-element.html">{@code
+&lt;receiver&gt;}</a>、<a href="{@docRoot}guide/topics/manifest/provider-element.html">{@code
+&lt;provider&gt;}</a>)は、コンポーネントを実行するプロセスを指定できる {@code android:process} 属性をサポートしています。&mdash;
+&mdash;この属性を設定して、各コンポーネントが独自のプロセスで実行するようにしたり、一部のコンポーネントで同じプロセスを共有し、残りのコンポーネントでは別のプロセスを使用するようにしたりできます。
+また、{@code android:process} を設定すると、異なるアプリケーションのコンポーネントを同じプロセスで実行させることもできます。この場合、アプリケーションが同じ Linux ユーザー ID を共有していて、同じ証明書で署名されている必要があります。
+&mdash;
+
+</p>
+
+<p><a href="{@docRoot}guide/topics/manifest/application-element.html">{@code
+&lt;application&gt;}</a> 要素も {@code android:process} 属性をサポートしており、すべてのコンポーネントに適用されるデフォルトの値を設定します。
+</p>
+
+<p>メモリの空きが少なくなり、早急にユーザーに提供する必要のあるプロセスが必要とする場合は、Android がプロセスをどこかの時点でシャットダウンするよう決定する場合があります。
+破棄されたプロセスで実行しているアプリケーション コンポーネントは、結果的に破棄されます。
+プロセスは、それらのコンポーネントの処理が再度発生したときに再開されます。
+</p>
+
+<p>破棄するプロセスを決定する際、Android システムはユーザーへの相対的な重要度を測ります。
+たとえば、画面に見えているアクティビティをホストするプロセスよりも、もう画面に見えていないアクティビティをホストするプロセスの方が先にシャットダウンされることになります。
+そのため、プロセスを停止するかどうかは、そのプロセスで実行しているコンポーネントの状態によって決まります。
+ここから、停止するプロセスを決定する規則について詳しく説明していきます。
+ </p>
+
+
+<h3 id="Lifecycle">プロセスのライフサイクル</h3>
+
+<p>Android システムは、可能な限り長期間アプリケーション プロセスを維持しようとしますが、新たに重要なプロセスが発生した際には、メモリを回収するために古いプロセスをいずれは削除する必要が生じます。
+どのプロセスを維持して、どのプロセスを強制終了するかを決定するため、システムはプロセスで実行しているコンポーネントとコンポーネントの状態に基づいて、各プロセスを「重要度の階層」に位置付けします。
+
+
+まず、重要度の最も低いプロセスが除去され、その後システム リソースを回復できるまで重要度の低い順に除去していきます。
+
+</p>
+
+<p>重要度の階層には 5 つのレベルがあります。次の一覧では、さまざまなプロセスのタイプを重要度の高い順に表しています(1 つ目のプロセスが<em>最も重要度が高く</em>、<em>最後に強制終了</em>されます)。
+
+</p>
+
+<ol>
+  <li><b>フォアグラウンド プロセス</b>
+    <p>ユーザーが現在行っている操作に必要なプロセスです。次の条件のいずれかにあてはまる場合、そのプロセスはフォアグラウンドにあるとみなされます。
+</p>
+
+      <ul>
+        <li>ユーザーが操作している {@link android.app.Activity} のホストになっている({@link
+android.app.Activity} の{@link android.app.Activity#onResume onResume()} メソッドが呼び出された)。
+</li>
+
+        <li>ユーザーが操作しているアクティビティにバインドされている {@link android.app.Service} のホストになっている。
+</li>
+
+        <li>「フォアグラウンド」 で実行中の {@link android.app.Service} のホストになっている(サービスが {@link android.app.Service#startForeground startForeground()} を呼び出した)。&mdash;
+
+
+        <li>{@link android.app.Service#onCreate onCreate()}、{@link android.app.Service#onStart
+onStart()}、{@link android.app.Service#onDestroy onDestroy()} のいずれかのライフサイクル コールバックを実行している {@link android.app.Service} のホストになっている。
+</li>
+
+        <li>{@link
+        android.content.BroadcastReceiver#onReceive onReceive()} メソッドを実行している {@link android.content.BroadcastReceiver} のホストになっている。</li>
+    </ul>
+
+    <p>通常は、2~3 個のフォアグラウンド プロセスが存在します。フォアグラウンド プロセスは、それらすべてを実行できなくなるほどメモリが少なくなると、最終手段として強制終了されます。
+&mdash;通常はその時点で、端末がメモリのページング状態に達しているため、ユーザー インターフェースのレスポンシブを維持するには一部のフォアグラウンド プロセスを強制終了する必要があります。
+
+</p></li>
+
+  <li><b>可視プロセス</b>
+    <p>フォアグラウンド コンポーネントはないものの、ユーザーに対して画面上に表示される内容に影響を与える可能性のあるプロセスです。
+次の条件のいずれかにあてはまる場合、そのプロセスは可視プロセスであるとみなされます。
+</p>
+
+      <ul>
+        <li>フォアグラウンドにないが、ユーザーに表示されている {@link android.app.Activity} のホストになっている({@link android.app.Activity#onPause onPause()} メソッドが呼び出された)。
+たとえば、フォアグラウンドのアクティビティがダイアログを開始したときに、前のアクティビティがその背後に見えている場合などがあります。
+
+</li>
+
+        <li>可視(またはフォアグラウンドの)アクティビティにバインドされている {@link android.app.Service} のホストになっている。
+</li>
+      </ul>
+
+      <p>可視プロセスは非常に重要度が高いため、フォアグラウンド プロセスの実行を維持するのに必要な場合のみ、強制終了されます。
+ </p>
+    </li>
+
+  <li><b>サービス プロセス</b>
+    <p>{@link
+android.content.Context#startService startService()} メソッドで開始されたサービスを実行するプロセスで、上の 2 つのカテゴリに分類されないものです。
+サービス プロセスは、ユーザーに表示される内容には直接関係ありませんが、ユーザーにとって必要な操作を実行している場合が多いため(バックグラウンドで音楽を再生したり、ネットワーク経由でデータをダウンロードしたりなど)、フォアグラウンド プロセスと可視プロセスのすべてと合わせて、それらを継続するのにメモリが不足した場合のみ強制終了されます。
+
+
+ </p>
+  </li>
+
+  <li><b>バックグラウンド プロセス</b>
+    <p>現在ユーザーに表示されていないアクティビティを有するプロセスです(アクティビティの {@link android.app.Activity#onStop onStop()} メソッドが呼び出された)。
+ユーザーの操作性に直接影響を与えるものではなく、フォアグラウンド プロセス、可視プロセス、サービス プロセス用にメモリを回収する必要があればいつでも強制終了されます。
+
+
+通常はバックグラウンドで実行するプロセスは多数あるため、最近ユーザーに表示されたアクティビティのあるプロセスを最後に強制終了するよう、LRU(最小使用頻度)リストに入れられます。
+
+アクティビティがライフサイクル メソッドを正確に実装し、現在の状態を保存する場合は、そのプロセスを強制終了しても、ユーザーがそのアクティビティに戻ったときに、アクティビティがすべての視覚的状態を復元するため、ユーザーの操作性に視覚的な影響はありません
+
+
+。状態の保存と復元の詳細については、「<a href="{@docRoot}guide/components/activities.html#SavingActivityState">Activities</a>」のドキュメントをご覧ください。
+</p>
+  </li>
+
+  <li><b>空のプロセス</b>
+    <p>アクティブなアプリケーション コンポーネントが 1 つも含まれていないプロセスです。このようなプロセスは、プロセスをキャッシュしておくことのみを目的として保持され、次回コンポーネントを実行する際の起動時間を向上させることができます。
+
+システムは、プロセスのキャッシュと下層のカーネル キャッシュとの間の全体的なシステム リソースのバランスを整える目的でこれらのシステムを頻繁に強制終了します。
+</p>
+  </li>
+</ol>
+
+
+  <p>Android では、プロセスで現在アクティブなコンポーネントの重要度に基づいて、あてはまるランクのなかで最も高いランクにプロセスを位置付けます。
+たとえば、サービス アクティビティと可視アクティビティの両方のホストとなっているプロセスは、サービス プロセスではなく、可視プロセスとして位置付けられます。
+</p>
+
+  <p>さらに、他のプロセスから依存されているプロセスの位置付けが上がる場合があります。他のプロセスのために動作しているプロセスは、その対象プロセスよりも下に位置付けられることはありません。
+&mdash;
+たとえば、プロセス A のコンテンツ プロバイダが、プロセス B のクライアントのために動作している場合や、プロセス A のサービスがプロセス B のコンポーネントにバインドされている場合、プロセス A の重要度は常にプロセス B 以上であるとみなされます。
+
+</p>
+
+  <p>サービスを実行するプロセスは、バックグラウンドのアクティビティを持つプロセスよりも上に位置付けされるため、長時間の操作を開始するアクティビティでは、特に、操作がアクティビティよりも長く続く場合、ワーカー スレッドを作成するよりもその操作の<a href="{@docRoot}guide/components/services.html">サービス</a>を開始する方がよいと考えられます。たとえば、ウェブサイトに写真をアップロードするアクティビティでは、ユーザーがアクティビティから離れた後もアップロードをバックグラウンドで続行できるよう、アップロードを実行するサービスを開始することをお勧めします。サービスを使用することで、アクティビティの状況に変わらず、その操作に「サービス プロセス」以上の優先度が保証されることになります。
+
+
+
+
+
+同じ理由から、ブロードキャスト レシーバーでもスレッドに長時間の処理を置くのではなく、サービスを採用するようお勧めします。
+</p>
+
+
+
+
+<h2 id="Threads">スレッド</h2>
+
+<p>アプリケーション起動の際、システムは アプリケーション実行用のスレッドを作成します。これは、「メイン スレッド」と呼ばれます。
+このスレッドは、イベント(描画イベントを含む)を適切なユーザー インターフェース ウィジェットに送信する役割を担うため非常に重要です。
+また、これはアプリケーションが Android UI ツールキット({@link
+android.widget} と {@link android.view} パッケージからのコンポーネント)からのコンポーネントとやり取りをするスレッドでもあります。
+そのため、メイン スレッドは UI スレッドと呼ばれることもあります。
+</p>
+
+<p>コンポーネントのインスタンスごとに別のスレッドが作成されることは<em>ありません</em>。同じプロセスで実行するすべてのコンポーネントは UI スレッドでインスタンス化され、スレッドから送られた各コンポーネントをシステムが呼び出します。
+
+結果的に、システムのコールバック(ユーザー操作を報告する {@link android.view.View#onKeyDown onKeyDown()} やライフサイクル コールバック メソッドなど)に応答するメソッドは常にプロセスの UI スレッドで実行することになります。
+
+</p>
+
+<p>たとえば、ユーザーが画面上のボタンをタッチすると、アプリの UI スレッドがタッチ イベントをウィジェットに送信し、ウィジェットがそのタッチされた状態を設定してイベント キューに無効化の要求を投稿します。
+
+UI スレッドが要求をキューから取り出し、ウィジェットに自身を描画するよう通知します。
+</p>
+
+<p>アプリがユーザー操作に応答して集中的な動作を実行する場合、アプリケーションを正しく実装していない限りこのシングル スレッド モデルではパフォーマンスの低下につながる可能性があります。
+具体的には、すべてが UI スレッドで行われている場合、長ネットワークへのアクセスやデータベースへの問い合わせといった時間のかかる操作を実行すると UI 全体をブロックしてしまいます。スレッドがブロックされると、描画イベントを含むすべてのイベントを送信できなくなります。
+
+
+ユーザー側には、アプリケーションがハングしたように見えます。
+さらには、UI スレッドが数秒以上(現時点では 5 秒以上)ブロックされると、ユーザーに<a href="http://developer.android.com/guide/practices/responsiveness.html">「アプリケーションが応答していません」</a>のダイアログが表示されます。
+
+ユーザーはアプリケーションを停止するか、不快な場合はアンインストールしてしまう可能性があります。
+</p>
+
+<p>また、Android UI ツールキットはスレッド セーフ<em>ではありません</em>。そのため、ワーカー スレッドから UI を操作できません。すべての操作は、UI スレッドから行う必要があります。
+&mdash;
+そのため、Android のシングル スレッド モデルには 2 つの明快なルールがあります。</p>
+
+<ol>
+<li>UI スレッドをブロックしない
+<li>UI スレッド以外から Android UI ツールキットにアクセスしない
+</ol>
+
+<h3 id="WorkerThreads">ワーカー スレッド</h3>
+
+<p>上記で説明したシングル スレッド モデルにより、アプリケーションの UI の応答性のためにも UI スレッドをブロックしないことが不可欠です。
+即座に実行する必要のない操作の場合は、別のスレッド(「バックグラウンド」スレッドや「ワーカー」スレッド)で実行するようにする必要があります。
+
+</p>
+
+<p>例として、別のスレッドから画像をダウンロードして {@link android.widget.ImageView} に表示するクリック リスナのコードの一部を次に示します。
+</p>
+
+<pre>
+public void onClick(View v) {
+    new Thread(new Runnable() {
+        public void run() {
+            Bitmap b = loadImageFromNetwork("http://example.com/image.png");
+            mImageView.setImageBitmap(b);
+        }
+    }).start();
+}
+</pre>
+
+<p>ここでは、ネットワークの操作を処理する新しいスレッドを作成しているため、一見問題ないように見えます。
+ただし、これは<em>UI スレッド以外から Android UI ツールキットにアクセスしない</em>というシングルスレッド モデルの 2 つ目のルールに違反しています。このサンプルは、UI スレッドではなくワーカー スレッドから {@link
+android.widget.ImageView} を変更しています。&mdash;
+結果として、未定義かつ予想外の動作を引き起こし、追跡が難しく時間のかかる作業になってしまいます。
+</p>
+
+<p>この問題を修正するため、Android には UI スレッド以外からのアクセス方法がいくつか用意されています。
+使用できるメソッドは次のとおりです。</p>
+
+<ul>
+<li>{@link android.app.Activity#runOnUiThread(java.lang.Runnable)
+Activity.runOnUiThread(Runnable)}</li>
+<li>{@link android.view.View#post(java.lang.Runnable) View.post(Runnable)}</li>
+<li>{@link android.view.View#postDelayed(java.lang.Runnable, long) View.postDelayed(Runnable,
+long)}</li>
+</ul>
+
+<p>たとえば、上記のコードは {@link
+android.view.View#post(java.lang.Runnable) View.post(Runnable)} メソッドを使用して修正できます。</p>
+
+<pre>
+public void onClick(View v) {
+    new Thread(new Runnable() {
+        public void run() {
+            final Bitmap bitmap = loadImageFromNetwork("http://example.com/image.png");
+            mImageView.post(new Runnable() {
+                public void run() {
+                    mImageView.setImageBitmap(bitmap);
+                }
+            });
+        }
+    }).start();
+}
+</pre>
+
+<p>これで、この実装がスレッドセーフになりました。ネットワーク操作は別のスレッドから実行され、{@link android.widget.ImageView} は UI スレッドから操作されます。
+</p>
+
+<p>ただし、操作が複雑になるにつれて、この種のコードも複雑化してメンテナンスも難しくなります。
+ワーカー スレッドとのより複雑なやり取りを処理するため、ワーカー スレッドで {@link android.os.Handler} を使うと、UI スレッドから配信されたメッセージを処理できます。
+
+ただし、最善なのは{@link android.os.AsyncTask} クラスを拡張することであり、これにより UI を操作する必要のあるワーカー スレッドのタスクの実行を簡素化できます。
+</p>
+
+
+<h4 id="AsyncTask">AsyncTask を使用する</h4>
+
+<p>{@link android.os.AsyncTask} では、ユーザー インターフェースに非同期の処理を実行できます。
+スレッドやハンドラを自身で処理する必要なく、ワーカー スレッドの操作をブロックし、結果を UI スレッドに発行します。
+</p>
+
+<p>これを使用するには、{@link android.os.AsyncTask} をサブクラス化し、バックグラウンド スレッドのプール内で実行する {@link
+android.os.AsyncTask#doInBackground doInBackground()} コールバック メソッドを実装する必要があります。
+UI を更新するには、{@link
+android.os.AsyncTask#onPostExecute onPostExecute()} を実装します。これは {@link
+android.os.AsyncTask#doInBackground doInBackground()} からの結果を配信し、UI スレッド内で実行されるため、UI を安全に更新できます。その後、UI スレッドから {@link android.os.AsyncTask#execute execute()} を呼び出してタスクを実行できます。
+
+</p>
+
+<p>たとえば、次のように {@link android.os.AsyncTask} を使って前出の例を実装できます。
+</p>
+
+<pre>
+public void onClick(View v) {
+    new DownloadImageTask().execute("http://example.com/image.png");
+}
+
+private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
+    /** The system calls this to perform work in a worker thread and
+      * delivers it the parameters given to AsyncTask.execute() */
+    protected Bitmap doInBackground(String... urls) {
+        return loadImageFromNetwork(urls[0]);
+    }
+    
+    /** The system calls this to perform work in the UI thread and delivers
+      * the result from doInBackground() */
+    protected void onPostExecute(Bitmap result) {
+        mImageView.setImageBitmap(result);
+    }
+}
+</pre>
+
+<p>ワーカー スレッドで処理される作業と、UI スレッドで処理される作業が分けられたため、UI は安全に、コードはシンプルになりました。
+</p>
+
+<p>このクラスの使用方法をより深く理解するには {@link android.os.AsyncTask} に目を通す必要がありますが、ここに、その仕組みについて簡単に挙げておきます。
+</p>
+
+<ul>
+<li>ジェネリックを使ってパラメータのタイプ、進捗の値、タスクの最終値を指定できます
+</li>
+<li>{@link android.os.AsyncTask#doInBackground doInBackground()} メソッドがワーカー スレッド上で自動的に実行されます
+</li>
+<li>{@link android.os.AsyncTask#onPreExecute onPreExecute()}、{@link
+android.os.AsyncTask#onPostExecute onPostExecute()}、{@link
+android.os.AsyncTask#onProgressUpdate onProgressUpdate()}はすべて UI スレッドで呼び出されます</li>
+<li>{@link android.os.AsyncTask#doInBackground doInBackground()} から返される値は、{@link android.os.AsyncTask#onPostExecute onPostExecute()} に送られます
+</li>
+<li>{@link android.os.AsyncTask#publishProgress publishProgress()} は、{@link
+android.os.AsyncTask#doInBackground doInBackground()} でいつでも呼び出すことができます。UI スレッドで {@link
+android.os.AsyncTask#onProgressUpdate onProgressUpdate()} を実行できます</li>
+<li>いつでも、どのスレッドからでもタスクをキャンセルできます</li>
+</ul>
+
+<p class="caution"><strong>警告:</strong> ワーカー スレッドの使用時に発生する可能性のあるもう 1 つの問題として、<a href="{@docRoot}guide/topics/resources/runtime-changes.html">実行時の設定が変更</a>された(ユーザーが画面の向きを変えた場合など)ことによってアクティビティが予期せず再起動され、ワーカー スレッドが破棄されてしまうことがあります。
+
+このような再起動の間タスクを維持する方法、アクティビティが破棄されたときの正しいタスクのキャンセル方法については、<a href="http://code.google.com/p/shelves/">Shelves</a> のサンプル アプリケーションのソース コードをご覧ください。
+
+</p>
+
+
+<h3 id="ThreadSafe">スレッド セーフのメソッド</h3>
+
+<p> 状況によっては、実装したメソッドが複数のスレッドから呼び出されることがあり、その場合はメソッドがスレッドセーフになるよう作成する必要があります。
+ </p>
+
+<p>主に、<a href="{@docRoot}guide/components/bound-services.html">バインドされたサービス</a>のメソッドなど、リモートで呼び出されるメソッドなどがこれに該当します。&mdash;{@link android.os.IBinder} に実装されたメソッドへの呼び出しが、{@link android.os.IBinder IBinder} を実行しているプロセスと同じプロセスで発生した場合、メソッドは呼び出し側のスレッドで実行されます。ただし、呼び出しが別のプロセスで起こった場合は、メソッドはシステムが {@link android.os.IBinder
+IBinder} と同じプロセスに保持するスレッドのプールから選ばれたスレッドで実行されます(プロセスの UI スレッドでは実行されません)。
+
+
+
+たとえば、サービスの {@link android.app.Service#onBind onBind()} メソッドがサービスのプロセスの UI スレッドから呼び出されるのに対して、{@link android.app.Service#onBind
+onBind()} が返すオブジェクトで実装されたメソッド(RPC メソッドを実装するサブクラスなど)は、プール内のスレッドから呼び出されます。
+
+
+サービスは複数のクライアントを持てるため、複数のプール スレッドが同じ {@link android.os.IBinder IBinder} メソッドを同時に動かすことができます。このため、{@link android.os.IBinder
+IBinder} メソッドはスレッドセーフになるよう実装する必要があります。
+</p>
+
+<p> 同様に、コンテンツ プロバイダは他のプロセスから送られたデータ要求を受け取ることができます。{@link android.content.ContentResolver} クラスと {@link android.content.ContentProvider} クラスによってプロセス間通信がどのように管理されているかが見えなくなりますが、それらの要求に応答する {@link
+android.content.ContentProvider} メソッド({@link
+android.content.ContentProvider#query query()}、 {@link android.content.ContentProvider#insert
+insert()}、{@link android.content.ContentProvider#delete delete()}、{@link
+android.content.ContentProvider#update update()}、{@link android.content.ContentProvider#getType
+getType()})は、プロセスの UI スレッドではなく、コンテンツ プロバイダのプロセスにあるスレッドのプールから呼び出されます。
+
+
+&mdash;&mdash;これらのメソッドは同時に複数のスレッドから呼び出される可能性があるため、先ほどと同様にスレッドセーフになるよう実装する必要があります。
+ </p>
+
+
+<h2 id="IPC">プロセス間通信(IPC)</h2>
+
+<p>Android では、リモート プロシージャ コール(RPC)を使ったプロセス間通信のメカニズムを備えており、メソッドはアクティビティや他のアプリケーション コンポーネントから呼び出された後に、リモート(別のプロセス)で実行され、結果を呼び出し側に返します。
+
+
+これにより、メソッドの呼び出しとそのデータをオペレーティング システムが理解できるレベルまで分解し、ローカル プロセスとアドレス空間からリモート プロセスとアドレス空間にそれを送信して、そこで呼び出しが再度組み立てて、再現します。
+
+その後、戻り値が逆方向に伝達されます。
+Android ではこれらの IPC トランザクションを実行するためのすべてのコードが用意されているため、開発者は RPC のプログラミング インターフェースの定義と実装に集中できます。
+ </p>
+
+<p>IPC を実行するには、アプリケーションが {@link
+android.content.Context#bindService bindService()} を使ってサービスにバインドされている必要があります。詳細については、デベロッパー ガイドの「<a href="{@docRoot}guide/components/services.html">サービス</a>」をご覧ください。</p>
+
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For information about how to perform work in the background for an indefinite period of time
+(without a user interface), continue with the <b><a
+href="{@docRoot}guide/components/services.html">Services</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/ja/guide/components/recents.jd b/docs/html-intl/intl/ja/guide/components/recents.jd
new file mode 100644
index 0000000..81626e1
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/components/recents.jd
@@ -0,0 +1,256 @@
+page.title=オーバービュー画面
+page.tags="recents","overview"
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>本書の内容</h2>
+  <ol>
+    <li><a href="#adding">オーバービュー画面にタスクを追加する</a>
+      <ol>
+        <li><a href="#flag-new-doc">インテント フラグを使用してタスクを追加する</a></li>
+        <li><a href="#attr-doclaunch">アクティビティの属性を使用してタスクを追加する</a></li>
+      </ol>
+    </li>
+    <li><a href="#removing">タスクを削除する</a>
+      <ol>
+        <li><a href="#apptask-remove">AppTask クラスを使用してタスクを削除する</a></li>
+        <li><a href="#retain-finished">完了したタスクを保持する</a></li>
+      </ol>
+    </li>
+  </ol>
+
+  <h2>キークラス</h2>
+  <ol>
+    <li>{@link android.app.ActivityManager.AppTask}</li>
+    <li>{@link android.content.Intent}</li>
+  </ol>
+
+  <h2>サンプル コード</h2>
+  <ol>
+    <li><a href="{@docRoot}samples/DocumentCentricApps/index.html">ドキュメント中心のアプリ</a></li>
+  </ol>
+
+</div>
+</div>
+
+<p>オーバービュー画面(別名、最近使った画面、最近使ったタスクリスト、最近使ったアプリ)は、最近アクセスした<a href="{@docRoot}guide/components/activities.html">アクティビティ</a>や<a href="{@docRoot}guide/components/tasks-and-back-stack.html">タスク</a>の一覧を示すシステムレベルの UI です。
+
+ユーザーはリスト内をナビゲートして再開するタスクを選択したり、スワイプしてタスクをリストから削除したりできます。
+
+Android 5.0(API レベル 21)のリリースでは、異なるドキュメントを持つ同一アクティビティ内の複数のインスタンスが、1 つのタスクとしてオーバービュー画面に表示される場合があります。
+たとえば、Google ドライブには複数の Google ドキュメントごとのタスクが表示される場合があります。
+オーバービュー画面には、各ドキュメントが 1 つのタスクとして表示されます。
+</p>
+
+<img src="{@docRoot}images/components/recents.png" alt="" width="284" />
+<p class="img-caption"><strong>図 1.</strong> オーバービュー画面に表示されている 3 つの Google ドライブ ドキュメントが、それぞれ別のタスクを表しています。
+</p>
+
+<p>通常、オーバービュー画面にタスクとアクティビティを提示する方法はシステムが定義できるよう許可し、この動作を変更する必要はありません。
+ただし、アクティビティをいつ、どのようにオーバービュー画面に表示するかをアプリで決定することもできます。
+{@link android.app.ActivityManager.AppTask} クラスを使ってタスクを管理でき、{@link android.content.Intent} クラスのアクティビティ フラグを使うとアプリをオーバービュー画面に追加、削除するタイミングを指定できます。
+
+
+また、<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
+&lt;activity&gt;</a></code> 属性を使ってマニフェストで動作を設定することもできます。</p>
+
+<h2 id="adding">オーバービュー画面にタスクを追加する</h2>
+
+<p>{@link android.content.Intent} クラスのフラグを使用してタスクを追加すると、ドキュメントをいつ、どのようにオーバービュー画面で開いたり、再度開いたりできるかを細かく制御できます。
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 属性を使用すると、常に新しいタスクでドキュメントを開くか、ドキュメントの既存のタスクを再利用するかを選択できます。
+
+
+</p>
+
+<h3 id="flag-new-doc">インテント フラグを使用してタスクを追加する</h3>
+
+<p>アクティビティの新しいドキュメントを作成するときは、{@link android.app.ActivityManager.AppTask} クラスの {@link android.app.ActivityManager.AppTask#startActivity(android.content.Context, android.content.Intent, android.os.Bundle) startActivity()} メソッドを呼び出し、アクティビティを起動するインテントを渡します。
+
+
+論理的な改行を挿入して、システムがアクティビティをオーバービュー画面の新しいタスクとして扱えるようにするには、{@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} フラグを、アクティビティを起動する {@link android.content.Intent} の {@link android.content.Intent#addFlags(int) addFlags()} メソッドに渡します。
+
+
+</p>
+
+<p class="note"><strong>注:</strong> {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} フラグは、Android 5.1(API レベル 21)で廃止された {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET} を置き換えるものです。
+
+</p>
+
+<p>新しいドキュメントの作成時に {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} フラグを設定すると、システムは常にターゲット アクティビティの新しいタスクをルートとして作成するようになります。この設定によって、同じドキュメントを複数のタスクで開くことが可能になります。
+
+これをメインのアクティビティが行う方法を、次のコードで示し舞うs。
+</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+DocumentCentricActivity.java</a></p>
+<pre>
+public void createNewDocument(View view) {
+      final Intent newDocumentIntent = newDocumentIntent();
+      if (useMultipleTasks) {
+          newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
+      }
+      startActivity(newDocumentIntent);
+  }
+
+  private Intent newDocumentIntent() {
+      boolean useMultipleTasks = mCheckbox.isChecked();
+      final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
+      newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
+      newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());
+      return newDocumentIntent;
+  }
+
+  private static int incrementAndGet() {
+      Log.d(TAG, "incrementAndGet(): " + mDocumentCounter);
+      return mDocumentCounter++;
+  }
+}
+</pre>
+
+<p class="note"><strong>注:</strong> {@code FLAG_ACTIVITY_NEW_DOCUMENT} フラグを使って起動されたアクティビティには、マニフェスト ファイルで {@code android:launchMode="standard"} 属性の値(デフォルト)が設定されている必要があります。
+
+</p>
+
+<p>メイン アクティビティが新しいアクティビティを起動するとき、システムはアクティビティのインテント コンポーネント名とインテント データに一致するインテントを持つ既存のタスクを検索します。
+タスクが見つからない場合や、インテントに {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} フラグに含まれている場合は、新しいタスクがアクティビティのルートとして作成されます。
+
+タスク見つかった場合は、そのタスクをフロントに移動して、新しいインテントを {@link android.app.Activity#onNewIntent onNewIntent()} に渡します。新しいアクティビティがインテントを受け取り、次の例のようにオーバービュー画面に新しいドキュメントを作成します。
+
+
+</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+NewDocumentActivity.java</a></p>
+<pre>
+&#64;Override
+protected void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_new_document);
+    mDocumentCount = getIntent()
+            .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0);
+    mDocumentCounterTextView = (TextView) findViewById(
+            R.id.hello_new_document_text_view);
+    setDocumentCounterText(R.string.hello_new_document_counter);
+}
+
+&#64;Override
+protected void onNewIntent(Intent intent) {
+    super.onNewIntent(intent);
+    /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this activity
+    is reused to create a new document.
+     */
+    setDocumentCounterText(R.string.reusing_document_counter);
+}
+</pre>
+
+
+<h3 id="#attr-doclaunch">アクティビティの属性を使用してタスクを追加する</h3>
+
+<p>アクティビティのマニフェストで、<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> の属性の<a href="{@docRoot}guide/topics/manifest/activity-element.html#dlmode">{@code android:documentLaunchMode}</a> を使ってアクティビティを常に新しいタスクで起動するよう指定することもできます。
+
+
+この属性には 4 つの値があり、ユーザーがアプリケーションでドキュメントを開くときに次のような効果を生みます。
+</p>
+
+<dl>
+  <dt>「{@code intoExisting}」</dt>
+  <dd>アクティビティがそのドキュメントの既存のタスクを再利用します。これは、<a href="#flag-new-doc">インテント フラグを使用してタスクを追加する</a>で説明したように、{@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} フラグを<em>設定せずに</em>、{@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} フラグを設定した場合と同じです。
+
+
+</dd>
+
+  <dt>「{@code always}」</dt>
+  <dd>ドキュメントが既に開いている場合でも、アクティビティがドキュメントの新しいタスクを作成します。これは、{@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} フラグと {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} フラグの両方を設定した場合と同じです。
+
+</dd>
+
+  <dt>「{@code none”}」</dt>
+  <dd>アクティビティはドキュメントの新しいタスクを作成しません。オーバービュー画面はデフォルトでアクティビティがタスクを作成したかのように処理し、アプリの 1 つのタスクを表示して、ユーザーが最後に呼び出したアクティビティから再開します。
+
+</dd>
+
+  <dt>「{@code never}」</dt>
+  <dd>アクティビティはドキュメントの新しいタスクを作成しません。この値を設定すると、{@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} フラグと {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} フラグのいずれかが設定されている場合にその動作をオーバーライドし、オーバービュー画面にはアプリの 1 つのタスクが表示され、ユーザーが最後に呼び出したアクティビティから再開します。
+
+
+
+</dd>
+</dl>
+
+<p class="note"><strong>注:</strong> {@code none} と {@code never} の値以外の場合、アクティビティを {@code launchMode="standard"} を使って定義する必要があります。
+属性が指定されていない場合は、{@code documentLaunchMode="none"} が使用されます。
+</p>
+
+<h2 id="removing">タスクを削除する</h2>
+
+<p>デフォルトで、アクティビティの完了時にドキュメントのタスクはオーバービュー画面から自動的に削除されます。
+この動作は、{@link android.app.ActivityManager.AppTask} クラスで {@link android.content.Intent} フラグを使うか、<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
+&lt;activity&gt;</a></code> 属性を使ってオーバーライドできます。
+</p>
+
+<p><code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 属性の <a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">{@code android:excludeFromRecents}</a> を {@code true} に設定すると、タスクを常にオーバービュー画面から完全に除外することができます。
+
+
+</p>
+
+<p>アプリがオーバービュー画面に表示できるタスクの最大数を設定するには、<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 属性の <a href="{@docRoot}guide/topics/manifest/activity-element.html#maxrecents">{@code android:maxRecents}</a> に整数値を設定します。
+
+
+デフォルトでは 16 に設定されています。タスクの最大数に達すると、最も古いタスクがオーバービュー画面から削除されます。
+{@code android:maxRecents} の最大値は 50(低メモリの端末では 25)で、1 未満の値は無効です。
+</p>
+
+<h3 id="#apptask-remove">AppTask クラスを使用してタスクを削除する</h3>
+
+<p>オーバービュー画面に新しいタスクを作成するアクティビティで {@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()} を呼び出すと、タスクを削除して関連アクティビティのすべてを終了させるタイミングを指定できます。
+
+</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+NewDocumentActivity.java</a></p>
+<pre>
+public void onRemoveFromRecents(View view) {
+    // The document is no longer needed; remove its task.
+    finishAndRemoveTask();
+}
+</pre>
+
+<p class="note"><strong>注:</strong> {@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()} メソッドを使用すると、次のセクションで説明する {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} タグの使用がオーバーライドされます。
+
+
+</p>
+
+<h3 id="#retain-finished">完了したタスクを保持する</h3>
+
+<p>アクティビティの終了後もオーバービュー画面にタスクを保持する場合は、{@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} フラグを、アクティビティを起動するインテントの {@link android.content.Intent#addFlags(int) addFlags()} メソッドに渡します。
+
+</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+DocumentCentricActivity.java</a></p>
+<pre>
+private Intent newDocumentIntent() {
+    final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
+    newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
+      android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS);
+    newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());
+    return newDocumentIntent;
+}
+</pre>
+
+<p><code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 属性の <a href="{@docRoot}guide/topics/manifest/activity-element.html#autoremrecents">{@code android:autoRemoveFromRecents}</a> を {@code false} に設定することでも同じ効果を得られます。
+
+
+ドキュメントのアクティビティのデフォルト値は {@code true}、通常のアクティビティでは {@code false} になります。
+この属性を使用すると、前のセクションで説明した {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} フラグがオーバーライドされます。
+</p>
+
+
+
+
+
+
+
diff --git a/docs/html-intl/intl/ja/guide/components/services.jd b/docs/html-intl/intl/ja/guide/components/services.jd
new file mode 100644
index 0000000..fa946db
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/components/services.jd
@@ -0,0 +1,813 @@
+page.title=サービス
+@jd:body
+
+<div id="qv-wrapper">
+<ol id="qv">
+<h2>本書の内容</h2>
+<ol>
+<li><a href="#Basics">基本</a></li>
+<ol>
+  <li><a href="#Declaring">マニフェストでサービスを宣言する</a></li>
+</ol>
+<li><a href="#CreatingAService">開始されたサービスを作成する</a>
+  <ol>
+    <li><a href="#ExtendingIntentService">IntentService クラスを拡張する</a></li>
+    <li><a href="#ExtendingService">Service クラスを拡張する</a></li>
+    <li><a href="#StartingAService">サービスを開始する</a></li>
+    <li><a href="#Stopping">サービスを停止する</a></li>
+  </ol>
+</li>
+<li><a href="#CreatingBoundService">バインドされたサービスを作成する</a></li>
+<li><a href="#Notifications">ユーザーに通知を送信する</a></li>
+<li><a href="#Foreground">サービスをフォアグラウンドで実行する</a></li>
+<li><a href="#Lifecycle">サービスのライフサイクルを管理する</a>
+<ol>
+  <li><a href="#LifecycleCallbacks">ライフサイクル コールバックを実装する</a></li>
+</ol>
+</li>
+</ol>
+
+<h2>キークラス</h2>
+<ol>
+  <li>{@link android.app.Service}</li>
+  <li>{@link android.app.IntentService}</li>
+</ol>
+
+<h2>サンプル</h2>
+<ol>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.html">{@code
+      ServiceStartArguments}</a></li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+      LocalService}</a></li>
+</ol>
+
+<h2>関連ドキュメント</h2>
+<ol>
+<li><a href="{@docRoot}guide/components/bound-services.html">バインドされたサービス</a></li>
+</ol>
+
+</div>
+
+
+<p>{@link android.app.Service} は、バックグラウンドで長時間動作して作業を行い、ユーザー インターフェースを表示しないアプリケーション コンポーネントです。
+別のアプリケーション コンポーネントがサービスを開始し、ユーザーが他のアプリケーションに切り替えた場合でも、サービスはバックグラウンドで実行し続けることができます。
+
+さらに、コンポーネントをサービスにバインドして操作したり、プロセス間通信(IPC)を実行したりすることも可能です。
+たとえば、サービスはネットワーク トランザクションの処理、音楽の再生、ファイルの I/O の実行、コンテンツ プロバイダとのやり取りなどのすべてをバックグラウンドで行うことができます。
+
+</p>
+
+<p>サービスには、基本的に次の 2 つの形式があります。</p>
+
+<dl>
+  <dt>開始されたサービス</dt>
+  <dd>アプリケーション コンポーネント(アクティビティなど)が {@link android.content.Context#startService startService()} を呼び出して開始したときに、サービスが「開始された」状態になります。
+一旦開始されると、たとえ開始したコンポーネントが破棄されても、サービスは無期限に実行できます。
+通常、開始されたサービスは 1 つの操作を実行するだけで、呼び出し元に結果を返すことはありません。たとえば、サービスはネットワーク上でファイルのダウンロードやアップロードを行います。
+
+操作が完了すると、サービスは自身で停止する必要があります。
+</dd>
+  <dt>バインドされたサービス</dt>
+  <dd>アプリケーション コンポーネントが {@link
+android.content.Context#bindService bindService()} を呼び出してサービスにバインドすると、サービスは「バインドされた」状態になります。バインドされたサービスは、コンポーネントがサービスを操作したり、要求を送信したり、結果を取得したり、さらにはプロセス間通信(IPC)でもそれを行えるクライアントサーバー型インターフェースを提供します。
+
+バインドされたサービスは、他のアプリケーション コンポーネントがそれにバインドしている限り実行し続けます。
+サービスには同時に複数のコンポーネントがバインドできますが、すべてがアンバインドされると、サービスは破棄されます。
+</dd>
+</dl>
+
+<p>このドキュメントではこの 2 種類のサービスそれぞれの概要について説明しますが、サービスは開始された状態(無期限に実行)、バインドされた状態のどちらの方法でも動作できます。これは、2 つのコールバック メソッドを実装するかどうかの問題で、{@link
+android.app.Service#onStartCommand onStartCommand()} ではコンポーネントにサービスの開始を許可し、{@link
+android.app.Service#onBind onBind()} ではバインドを許可することになります。
+
+</p>
+
+<p>アプリケーションが開始された、バインドされた、またはその両方かであるかどうかにかかわらず、どんなコンポーネントでもアクティビティを使用できるのと同じように、{@link android.content.Intent} を使って開始することで、どんなアプリケーション コンポーネントでもサービスを使用できます。
+
+&mdash;ただし、マニフェスト ファイルでサービスを非公開として宣言して、他のアプリケーションからのアクセスをブロックすることもできます。
+詳細については、<a href="#Declaring">マニフェストでサービスを宣言する</a>で説明します。
+
+</p>
+
+<p class="caution"><strong>警告:</strong> サービスは、そのホスト プロセスのメインスレッドで実行します。サービスが自身のスレッドを作成することは<strong>なく</strong>、別のプロセスで実行されることも<strong>ありません</strong>(別の方法を指定しない限り)。
+&mdash;
+つまり、サービスが CPU を集中的に使ったり、ブロック操作を行ったりするような場合(MP3 の再生やネットワーク作業)は、サービス内に新しいスレッドを作成してその作業を行う必要があります。
+
+別のスレッドを使うことで、「アプリケーションが応答していません (ANR)」のエラーが発生するリスクを軽減でき、アプリケーションのメインスレッドをアクティビティのユーザー操作専用にすることができます。
+
+</p>
+
+
+<h2 id="Basics">基本</h2>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>サービスとスレッド、どちらを使用すべきか。</h3>
+  <p>サービスは、ユーザーがアプリケーションを操作していない間もバックグラウンドで実行できるコンポーネントにすぎません。
+そのような必要性がある場合に限り、サービスを作成します。
+</p>
+  <p>ユーザーがアプリケーションを操作している間だけ、メインスレッド外で作業を行う必要がある場合は、サービスではなくスレッドを作成することをお勧めします。
+たとえば、アクティビティを実行している間だけ音楽を再生する場合は、{@link android.app.Activity#onCreate onCreate()} にスレッドを作成し、{@link
+android.app.Activity#onStart onStart()} で実行を開始して、{@link android.app.Activity#onStop
+onStop()} で停止します。
+
+また、従来の {@link java.lang.Thread} クラスの代わりに {@link android.os.AsyncTask} や {@link android.os.HandlerThread} を使用する方法もあります。
+スレッドの詳細については、「<a href="{@docRoot}guide/components/processes-and-threads.html#Threads">プロセスとスレッド</a>」のドキュメントをご覧ください。
+</p>
+  <p>サービスを使用する際は、デフォルトではアプリケーションのメインスレッドで実行されるため、集中的な作業やブロック操作を行う場合はサービス内に新しいスレッドを作成する必要があることに注意してください。
+
+</p>
+</div>
+</div>
+
+<p>サービスを作成するには、{@link android.app.Service} のサブクラス(またはその既存のサブクラス)を作成する必要があります。
+実装時には、サービスのライフサイクルの重要側面を扱うコールバック メソッドをオーバーライドして、必要に応じてサービスにバインドするためのメカニズムをコンポーネントに提供する必要があります。
+
+オーバーライドする必要のある、最も重要なコールバック メソッドは次の 2 つです。</p>
+
+<dl>
+  <dt>{@link android.app.Service#onStartCommand onStartCommand()}</dt>
+    <dd>アクティビティなどの他のコンポーネントが、{@link android.content.Context#startService
+startService()} を呼び出してサービスの開始を要求したときに、システムがこのメソッドを呼び出します。
+このメソッドが実行されるとサービスは開始され、バックグラウンドで無期限に実行します。
+これを実装すると、作業完了時に {@link android.app.Service#stopSelf stopSelf()} か {@link
+android.content.Context#stopService stopService()} を呼び出して自身でサービスを停止する必要があります
+(バインドのみを提供する場合は、このメソッドを実装する必要はありません)。
+</dd>
+  <dt>{@link android.app.Service#onBind onBind()}</dt>
+    <dd>{@link android.content.Context#bindService
+bindService()} を呼び出して他のコンポーネントをサービスにバインドさせるとき(RPC 実行時など)に、システムがこのメソッドを呼び出します。
+このメソッドの実装時には、{@link android.os.IBinder} を返してクライアントがサービスとの通信に使うインターフェースを提供する必要があります。
+このメソッドの実装は常に必要ですが、バインドを許可しない場合は、null を返す必要があります。
+</dd>
+  <dt>{@link android.app.Service#onCreate()}</dt>
+    <dd>サービスが始めて作成されたときに、1 回限りのセットアップ処理を実行するためにシステムがこのメソッドを呼び出します({@link android.app.Service#onStartCommand onStartCommand()} か {@link android.app.Service#onBind onBind()} のいずれかを呼び出す前)。
+
+サービスが既に実行中の場合、このメソッドは呼び出されません。
+</dd>
+  <dt>{@link android.app.Service#onDestroy()}</dt>
+    <dd>サービスがもう使用されておらず破棄されたときに、システムがこのメソッドを呼び出します。これは、スレッドや登録されたリスナ、レシーバーなどをクリーンアップするためにサービスに実装する必要があります。
+
+これが、サービスが受け取る最後の呼び出しになります。</dd>
+</dl>
+
+<p>コンポーネントが {@link
+android.content.Context#startService startService()} を呼び出してサービスを開始すると(結果的に {@link
+android.app.Service#onStartCommand onStartCommand()} が呼び出される)、{@link android.app.Service#stopSelf()} を使ってサービス自身が停止するか、他のコンポーネントが {@link android.content.Context#stopService stopService()} を呼び出して停止するまで、サービスは実行し続けます。
+
+</p>
+
+<p>コンポーネントが {@link android.content.Context#bindService bindService()} を呼び出してサービスを作成した(そして {@link
+android.app.Service#onStartCommand onStartCommand()} が呼び出されて<em>いない</em>)場合、サービスはコンポーネントにバインドされている間のみ実行します。
+
+すべてのクライアントからアンバインドされると、サービスはシステムによって破棄されます。
+</p>
+
+<p>Android システムは メモリが少なくなって、ユーザーが使用しているアクティビティ用のシステムリソースを回復させる必要が生じた場合のみ、サービスを強制的に停止させます。
+サービスがユーザーが使用しているアクティビティにバインドされている場合は、それが強制終了される可能性は低く、<a href="#Foreground">フォアグラウンドで実行</a>(後で説明)するように宣言されている場合は、強制終了されることはほとんどありません。一方で、サービスが開始されてから長時間実行している場合は、システムはバックグラウンド タスクのリストにおけるその位置付けを徐々に低くし、そのサービスが強制終了される確率が高くなります。開始されたサービスを作成する際は、システムによる再起動を円滑に処理するようデザインする必要があります。
+
+
+
+&mdash;
+システムがサービスを強制終了すると、リソースが回復次第そのサービスが再起動します(後述の {@link
+android.app.Service#onStartCommand onStartCommand()} から返される値にもよります)。
+システムがサービスを破棄するタイミングについては、「<a href="{@docRoot}guide/components/processes-and-threads.html">Processes and Threading</a>」のドキュメントをご覧ください。
+
+</p>
+
+<p>次のセクションでは、それぞれのタイプのサービスの作成方法と、他のアプリケーション コンポーネントからの使用方法について説明します。
+</p>
+
+
+
+<h3 id="Declaring">マニフェストでサービスを宣言する</h3>
+
+<p>アクティビティ(や他のコンポーネント)と同様に、すべてのサービスをアプリケーションのマニフェスト ファイルで宣言する必要があります。
+</p>
+
+<p>サービスを宣言するには、<a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> 要素を <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a> の子要素として追加します。
+
+次に例を示します。</p>
+
+<pre>
+&lt;manifest ... &gt;
+  ...
+  &lt;application ... &gt;
+      &lt;service android:name=".ExampleService" /&gt;
+      ...
+  &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+
+<p>マニフェストでのサービスの宣言に関する詳細については、<a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> 要素のリファレンスをご覧ください。
+</p>
+
+<p><a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> に含めることで、サービスやサービスを実行するプロセスの開始に必要なパーミッションなどのプロパティを定義できる他の属性がいくつかあります。
+
+<a href="{@docRoot}guide/topics/manifest/service-element.html#nm">{@code android:name}</a> 属性は唯一の必須属性で、サービスのクラス名を指定します。
+&mdash;アプリケーションを発行したら、この名前は変更できません。変更すると、サービスを開始したりバインドしたりする明示的インテントの依存関係によってコードを破損する可能性があります(ブログの投稿「<a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">Things That Cannot Change</a>」をご覧ください)。
+
+
+
+
+<p>アプリの安全性を保つため、<strong>{@link android.app.Service}を開始したりバインドしたりするときは、常に明示的インテントを使用</strong>し、サービスでインテント フィルタを宣言しないようにしてください。
+どのサービスを開始するかについて、ある程度のあいまい静を残しておく必要がある場合は、サービスにインテント フィルタを定義でき、{@link
+android.content.Intent} からコンポーネント名を除外して、その後ターゲットのサービスのあいまい性を十分に解消する {@link
+android.content.Intent#setPackage setPackage()} でインテントのパッケージを設定する必要があります。
+
+
+</p>
+
+<p>さらに、<a href="{@docRoot}guide/topics/manifest/service-element.html#exported">{@code android:exported}</a> 属性を含めて {@code "false"} に設定すると、サービスを自身のアプリでしか利用できないようにできます。
+
+これにより、他のアプリによるサービスの開始を効果的に回避でき、たとえ明示的インテントを使用したとしても開始できなくなります。
+</p>
+
+
+
+
+<h2 id="CreatingStartedService">開始されたサービスを作成する</h2>
+
+<p>開始されたサービスは、他のコンポーネントが {@link
+android.content.Context#startService startService()} を呼び出すことで結果的にサービスの {@link android.app.Service#onStartCommand onStartCommand()} メソッドを呼び出して開始されたサービスです。
+</p>
+
+<p>サービスが開始されると、サービスはそれを開始したコンポーネントから独立したライフサイクルを持ち、たとえ開始したコンポーネントが破棄されても、サービスは無期限に実行できます。
+
+そのため、サービスはジョブが完了したら {@link android.app.Service#stopSelf stopSelf()} を呼び出して自身で停止する必要があり、他のコンポーネントが {@link android.content.Context#stopService stopService()} を呼び出して停止することもできます。
+
+</p>
+
+<p>アクティビティなどのアプリケーション コンポーネントは、{@link
+android.content.Context#startService startService()} を呼び出して、サービスを指定し、サービスが使用するデータを含めた {@link android.content.Intent} を渡してサービスを開始できます。
+サービスはこの {@link android.content.Intent} を、{@link android.app.Service#onStartCommand
+onStartCommand()} メソッドで受け取ります。
+</p>
+
+<p>たとえば、オンライン データベースにデータを保存する必要のあるアクティビティがあるとします。アクティビティでサービスを開始し、{@link
+android.content.Context#startService startService()} にインテントを渡して、保存するデータをサービスに配信します。
+サービスはインテントを {@link
+android.app.Service#onStartCommand onStartCommand()} で受け取り、インターネットに接続してデータベースのトランザクションを実行します。
+トランザクションが完了したら、サービスは自身で停止し、破棄されます。
+</p>
+
+<p class="caution"><strong>警告:</strong> デフォルトでは、アプリケーションで宣言されたサービスは、アプリケーションと同じプロセスで、そのアプリケーションのメインスレッドで実行します。
+そのため、ユーザーが同じアプリケーションのアクティビティを操作している間に、サービスが集中的な処理やブロック操作を実行すると、アクティビティのパフォーマンスが低下します。
+
+アプリケーションのパフォーマンスへの影響を回避するには、サービス内で新しいスレッドを開始する必要があります。
+</p>
+
+<p>従来どおり、開始されたサービスを作成するために拡張できるクラスが 2 つあります。</p>
+<dl>
+  <dt>{@link android.app.Service}</dt>
+  <dd>これは、すべてのサービスの基本クラスです。サービスはデフォルトでアプリケーションのメインスレッドを使用し、アプリケーションが実行しているアクティビティのパフォーマンスを低下させることがあるため、このクラスを拡張するときは、サービスのすべての作業を行うための新しいスレッドを作成することが重要です。
+
+
+</dd>
+  <dt>{@link android.app.IntentService}</dt>
+  <dd>すべての開始要求を一件ずつ処理するワーカー スレッドを使用した {@link android.app.Service} のサブクラスです。
+サービスで同時に複数の要求を処理する必要がない場合は、これが最適です。
+{@link
+android.app.IntentService#onHandleIntent onHandleIntent()} を実装するだけで、それぞれの開始要求のインテントを受け取り、バックグラウンドでの処理が可能になります。
+</dd>
+</dl>
+
+<p>次のセクションでは、これらいずれかのクラスを使用してサービスを実装する方法について説明します。
+</p>
+
+
+<h3 id="ExtendingIntentService">IntentService クラスを拡張する</h3>
+
+<p>開始されたサービスで同時に複数の要求を処理する必要があることはほとんどないため(実際には危険なマルチスレッド シナリオになります)、{@link android.app.IntentService} クラスを使用してサービスを実装するのが最適だと考えられます。
+
+</p>
+
+<p>{@link android.app.IntentService} は、次の操作を行います。</p>
+
+<ul>
+  <li>アプリケーションのメインスレッドとは別の {@link
+android.app.Service#onStartCommand onStartCommand()} に配信されるすべてのインテントを実行する、デフォルトのワーカー スレッドを作成します。
+</li>
+  <li>マルチスレッドの懸念を排除するため、一度に 1 つのインテントを {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} の実装に渡すワークキューを作成します。
+</li>
+  <li>{@link android.app.Service#stopSelf} を呼び出す必要がないよう、すべての開始要求の処理後にサービスを停止します。
+</li>
+  <li>Null を返す {@link android.app.IntentService#onBind onBind()} のデフォルト実装を提供します。
+</li>
+  <li>インテントをワークキュー、{@link
+android.app.IntentService#onHandleIntent onHandleIntent()} の実装の順に送信する {@link android.app.IntentService#onStartCommand
+onStartCommand()} のデフォルト実装を提供します。</li>
+</ul>
+
+<p>上記すべての操作が行われることで、開発者が行う必要があるのは、クライアントから指示された内容を処理する {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} を実装するだけになります
+(ただし、サービスの小さいコンストラクタを提供する必要はあります)。</p>
+
+<p>{@link android.app.IntentService} の実装例を次に示します。</p>
+
+<pre>
+public class HelloIntentService extends IntentService {
+
+  /**
+   * A constructor is required, and must call the super {@link android.app.IntentService#IntentService}
+   * constructor with a name for the worker thread.
+   */
+  public HelloIntentService() {
+      super("HelloIntentService");
+  }
+
+  /**
+   * The IntentService calls this method from the default worker thread with
+   * the intent that started the service. When this method returns, IntentService
+   * stops the service, as appropriate.
+   */
+  &#64;Override
+  protected void onHandleIntent(Intent intent) {
+      // Normally we would do some work here, like download a file.
+      // For our sample, we just sleep for 5 seconds.
+      long endTime = System.currentTimeMillis() + 5*1000;
+      while (System.currentTimeMillis() &lt; endTime) {
+          synchronized (this) {
+              try {
+                  wait(endTime - System.currentTimeMillis());
+              } catch (Exception e) {
+              }
+          }
+      }
+  }
+}
+</pre>
+
+<p>コンストラクタと {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} の実装、必要なのはこれだけです。</p>
+
+<p>{@link
+android.app.IntentService#onCreate onCreate()}、{@link
+android.app.IntentService#onStartCommand onStartCommand()}、{@link
+android.app.IntentService#onDestroy onDestroy()} などの他のコールバック メソッドもオーバーライドする場合は、{@link android.app.IntentService} がワーカー スレッドの生存状態を正しく処理できるよう、必ず super を実装するようにします。
+</p>
+
+<p>たとえば、{@link android.app.IntentService#onStartCommand onStartCommand()} はデフォルト実装を返す必要があります(これによりインテントが {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} に配信されます)。
+</p>
+
+<pre>
+&#64;Override
+public int onStartCommand(Intent intent, int flags, int startId) {
+    Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
+    return super.onStartCommand(intent,flags,startId);
+}
+</pre>
+
+<p>{@link android.app.IntentService#onHandleIntent onHandleIntent()} 以外で、super クラスを呼び出す必要のないメソッドは、{@link android.app.IntentService#onBind
+onBind()} です(ただし、サービスでバインドを許可している場合のみ実装が必要です)。
+</p>
+
+<p>次のセクションでは、この種のサービスが、基本の {@link android.app.Service} クラスを拡張したときにどのように実装されるかを説明します。
+これにはさらに多くのコードがありますが、開始要求の同時処理が必要な場合には適しています。
+</p>
+
+
+<h3 id="ExtendingService">Service クラスを拡張する</h3>
+
+<p>前のセクションで説明したように、{@link android.app.IntentService} を使用すると開始されたサービスの実装が非常に簡単になります。
+ただし、サービスでマルチスレッドを実行する必要がある場合(開始要求をワークキュー経由で処理するのではなく)、{@link android.app.Service} クラスを拡張して、それぞれのインテントを処理できます。
+
+</p>
+
+<p>比較のために、{@link
+android.app.IntentService} を使用した上記の例とまったく同じ処理を実行する {@link
+android.app.Service} クラスの実装の例が次のコードです。つまり、それぞれの開始要求に対し、ワーカー スレッドを使用してジョブとプロセスを実行し、一度に 1 つの要求のみを処理します。
+</p>
+
+<pre>
+public class HelloService extends Service {
+  private Looper mServiceLooper;
+  private ServiceHandler mServiceHandler;
+
+  // Handler that receives messages from the thread
+  private final class ServiceHandler extends Handler {
+      public ServiceHandler(Looper looper) {
+          super(looper);
+      }
+      &#64;Override
+      public void handleMessage(Message msg) {
+          // Normally we would do some work here, like download a file.
+          // For our sample, we just sleep for 5 seconds.
+          long endTime = System.currentTimeMillis() + 5*1000;
+          while (System.currentTimeMillis() &lt; endTime) {
+              synchronized (this) {
+                  try {
+                      wait(endTime - System.currentTimeMillis());
+                  } catch (Exception e) {
+                  }
+              }
+          }
+          // Stop the service using the startId, so that we don't stop
+          // the service in the middle of handling another job
+          stopSelf(msg.arg1);
+      }
+  }
+
+  &#64;Override
+  public void onCreate() {
+    // Start up the thread running the service.  Note that we create a
+    // separate thread because the service normally runs in the process's
+    // main thread, which we don't want to block.  We also make it
+    // background priority so CPU-intensive work will not disrupt our UI.
+    HandlerThread thread = new HandlerThread("ServiceStartArguments",
+            Process.THREAD_PRIORITY_BACKGROUND);
+    thread.start();
+
+    // Get the HandlerThread's Looper and use it for our Handler
+    mServiceLooper = thread.getLooper();
+    mServiceHandler = new ServiceHandler(mServiceLooper);
+  }
+
+  &#64;Override
+  public int onStartCommand(Intent intent, int flags, int startId) {
+      Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
+
+      // For each start request, send a message to start a job and deliver the
+      // start ID so we know which request we're stopping when we finish the job
+      Message msg = mServiceHandler.obtainMessage();
+      msg.arg1 = startId;
+      mServiceHandler.sendMessage(msg);
+
+      // If we get killed, after returning from here, restart
+      return START_STICKY;
+  }
+
+  &#64;Override
+  public IBinder onBind(Intent intent) {
+      // We don't provide binding, so return null
+      return null;
+  }
+
+  &#64;Override
+  public void onDestroy() {
+    Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();
+  }
+}
+</pre>
+
+<p>このように、{@link android.app.IntentService} を使う場合よりもかなり面倒です。</p>
+
+<p>ただし、{@link android.app.Service#onStartCommand
+onStartCommand()} への各呼び出しを自身で処理するため、同時に複数の要求を実行することも可能です。この例にはあてはまりませんが、自身の状況に合う場合は、要求ごとに新しいスレッドを作成し、すぐに実行することもできます(前の要求が完了するのを待つ必要がありません)。
+
+</p>
+
+<p>{@link android.app.Service#onStartCommand onStartCommand()} メソッドは整数を返す必要があることに注意してください。
+整数は、システムがサービスを強制終了した場合に、サービスをどのように続行させるかを記述する値です(前述したように、{@link
+android.app.IntentService} のデフォルト実装が代わりにこれを処理しますが、自身で修正することもできます)。
+{@link android.app.Service#onStartCommand onStartCommand()} から返される値は、次のいずれかの定数である必要があります。
+
+</p>
+
+<dl>
+  <dt>{@link android.app.Service#START_NOT_STICKY}</dt>
+    <dd>{@link android.app.Service#onStartCommand
+onStartCommand()} から戻った後でシステムがサービスを強制終了した場合は、配信が保留中のインテントがない限りシステムはサービスを再作成<em>しません</em>。
+これは、サービスが不必要で、アプリケーションが未完了のジョブを再開できる場合にサービスを実行してしまうのを回避できる最も安全な選択肢です。
+</dd>
+  <dt>{@link android.app.Service#START_STICKY}</dt>
+    <dd>{@link android.app.Service#onStartCommand
+onStartCommand()} から戻った後でシステムがサービスを強制終了した場合は、サービスを再作成し、{@link
+android.app.Service#onStartCommand onStartCommand()} を呼び出しますが、最後のインテントは再配信<em>しません</em>。代わりに、サービスを開始するインテントが保留になっている場合を除いて、システムは {@link android.app.Service#onStartCommand onStartCommand()} を null インテントを使って呼び出します。保留中のインテントがある場合、そのインテントは配信されます。
+
+
+これは、コマンドは実行しないが、無期限に実行し、ジョブを待機するメディア プレーヤー(や同様のサービス)に適しています。
+</dd>
+  <dt>{@link android.app.Service#START_REDELIVER_INTENT}</dt>
+    <dd>{@link android.app.Service#onStartCommand
+onStartCommand()} から戻った後でシステムがサービスを強制終了した場合は、サービスを再作成し、サービスに最後に配信されたインテントで {@link
+android.app.Service#onStartCommand onStartCommand()} を呼び出します。
+すべてのペンディング インテントが順に配信されます。これは、ファイルのダウンロードのような、活発にジョブを実行し、ただちに再開する必要のあるサービスに適しています。
+</dd>
+</dl>
+<p>これらの戻り値の詳細については、リンクされた各定数のリファレンス ドキュメントをご覧ください。
+</p>
+
+
+
+<h3 id="StartingAService">サービスを開始する</h3>
+
+<p>アクティビティや他のアプリケーション コンポーネントから {@link android.content.Intent}(開始するサービスを指定する)を {@link android.content.Context#startService startService()} に渡すことで、サービスを開始できます。
+
+Android システムが、サービスの {@link
+android.app.Service#onStartCommand onStartCommand()} メソッドを呼び出して、{@link
+android.content.Intent} を渡します(絶対に、{@link android.app.Service#onStartCommand
+onStartCommand()} を直接呼び出さないでください)。</p>
+
+<p>アクティビティが前のセクションで例に挙げたサービス({@code
+HelloSevice})を、{@link android.content.Context#startService
+startService()} で明示的インテントを使って開始する例を次に示します。</p>
+
+<pre>
+Intent intent = new Intent(this, HelloService.class);
+startService(intent);
+</pre>
+
+<p>{@link android.content.Context#startService startService()} メソッドがすぐに戻り、Android システムがサービスの {@link android.app.Service#onStartCommand
+onStartCommand()} メソッドを呼び出します。
+サービスがまだ実行されていない場合、システムはまず {@link
+android.app.Service#onCreate onCreate()} を呼び出してから、{@link android.app.Service#onStartCommand
+onStartCommand()} を呼び出します。</p>
+
+<p>サービスでバインドが提供されない場合は、{@link
+android.content.Context#startService startService()} で配信されたインテントが、アプリケーション コンポーネントとサービス間の唯一の通信モードになります。
+ただし、サービスから結果を送り返す場合は、サービスを開始するクライアントがブロードキャスト用に {@link android.app.PendingIntent} を作成でき({@link android.app.PendingIntent#getBroadcast getBroadcast()} で)、それをサービスを開始する {@link android.content.Intent} のサービスに配信できます。
+
+
+その後、サービスはブロードキャストを使って結果を配信できます。
+</p>
+
+<p>サービスを開始する要求が複数ある場合は、それに対応する複数の呼び出しがサービスの {@link android.app.Service#onStartCommand onStartCommand()} に対して発生することになります。
+ただし、サービスを停止するために必要な要求({@link android.app.Service#stopSelf stopSelf()} や {@link
+android.content.Context#stopService stopService()} を使用)は、1 つのみです。
+</p>
+
+
+<h3 id="Stopping">サービスを停止する</h3>
+
+<p>開始されたサービスは、自身でライフサイクルを管理する必要があります。つまり、システムメモリを復元する必要がある場合を除き、システムがサービスを停止したり破棄したりすることはなく、サービスは {@link android.app.Service#onStartCommand onStartCommand()} から戻った後も実行し続けます。
+
+そのため、サービスは {@link android.app.Service#stopSelf stopSelf()} を呼び出して自身で停止する必要があり、他のコンポーネントが {@link android.content.Context#stopService stopService()} を呼び出して停止することもできます。
+
+</p>
+
+<p>{@link android.app.Service#stopSelf stopSelf()} や {@link
+android.content.Context#stopService stopService()} で停止が要求されたら、システムは可能な限りすぐにサービスを破棄します。
+</p>
+
+<p>ただし、サービスが {@link
+android.app.Service#onStartCommand onStartCommand()} への複数の要求を同時に処理している場合は、その後に新しい開始要求を受け取る可能性があることから、開始要求の処理後もサービスを停止しないでください(1 つ目の要求の最後に停止すると、2 つ目が停止されてしまいます)。
+
+この問題を回避するには、{@link android.app.Service#stopSelf(int)} を使って、常に最新の開始要求に基づいてサービスの停止要求を行うようにできます。
+
+具体的には、{@link
+android.app.Service#stopSelf(int)} を呼び出すとき、停止要求に対応する開始要求の ID({@link android.app.Service#onStartCommand onStartCommand()} に配信された <code>startId</code>)を渡します。
+
+その後、{@link
+android.app.Service#stopSelf(int)} を呼び出す前にサービスが新しい開始要求を受け取ったとしても、結果的に ID が一致せずサービスが停止されなくなります。</p>
+
+<p class="caution"><strong>警告:</strong> アプリケーションはサービスの処理が完了したら、システムリソースやバッテリ電力の節約のため、サービスを停止することが重要です。
+必要であれば、他のコンポーネントから {@link
+android.content.Context#stopService stopService()} を呼び出してサービスを停止することもできます。
+サービスのバインドを有効にしている場合でも、{@link
+android.app.Service#onStartCommand onStartCommand()} を受け取ったときには常に自身でサービスを停止する必要があります。
+</p>
+
+<p>サービスのライフサイクルの詳細については、後半のセクションの<a href="#Lifecycle">サービスのライフサイクルを管理する</a>をご覧ください。</p>
+
+
+
+<h2 id="CreatingBoundService">バインドされたサービスを作成する</h2>
+
+<p>バインドされたサービスとは、アプリケーション コンポーネントが長時間の接続を作成するために {@link
+android.content.Context#bindService bindService()} を呼び出してサービスにバインドできるようにするサービスです(通常はコンポーネントが {@link
+android.content.Context#startService startService()} を呼び出すことではサービスは<em>開始</em>できません)。
+</p>
+
+<p>バインドされたサービスは、アプリケーションのアクティビティや他のコンポーネントからのサービスとやり取りしたり、アプリケーションの一部の機能をプロセス間通信(IPC)を用いて他のアプリケーションが利用できるようにしたりする場合に作成します。
+
+</p>
+
+<p>バインドされたサービスを作成するには、{@link
+android.app.Service#onBind onBind()} コールバック メソッドを実装して、サービスとの通信用のインターフェースを定義する {@link android.os.IBinder} を返す必要があります。
+その後、他のアプリケーション コンポーネントが {@link android.content.Context#bindService bindService()} を呼び出してインターフェースを取得し、サービスのメソッドの呼び出しを開始できます。
+
+サービスは、バインドされているアプリケーション コンポーネントのためだけに存在するため、バインドされているコンポーネントがなくなると、サービスにシステムによって破棄されます(バインドされたサービスは、{@link android.app.Service#onStartCommand onStartCommand()} でサービスが開始されたときと同じ方法で停止する必要は<em>ありません</em>)。
+
+
+</p>
+
+<p>バインドされたサービスを作成するには、まずクライアントからサービスへの通信方法を指定するインターフェースを定義します。
+サービスとクライアント間のこのインターフェースは {@link android.os.IBinder} の実装である必要があり、サービスはこれを {@link android.app.Service#onBind
+onBind()} コールバック メソッドから返す必要があります。
+
+クライアントが {@link android.os.IBinder} を受け取ると、そのインターフェースを介してサービスとのやり取りを開始できます。
+</p>
+
+<p>複数のクライアントが同時にサービスにバインドできます。クライアントとサービスのやり取りが終わったら、{@link android.content.Context#unbindService unbindService()} を呼び出してアンバインドします。
+サービスにバインドされているクライアントがなくなったら、システムがサービスを破棄します。
+</p>
+
+<p>バインドされたサービスの実装方法はいくつかあり、その実装は開始されたサービスよりも複雑であるため、バインドされたサービスの詳細については、<a href="{@docRoot}guide/components/bound-services.html">バインドされたサービス</a> のドキュメントで別途説明しています。
+
+</p>
+
+
+
+<h2 id="Notifications">ユーザーに通知を送信する</h2>
+
+<p>一旦サービスが実行されると、<a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">トースト通知</a>や<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">ステータスバー通知</a>を使ってユーザーにイベントを通知できます。</p>
+
+<p>トースト通知は、現在のウィンドウに表示されるメッセージで、少しの間表示され、すぐに消えます。一方、ステータスバー通知では、ステータスバーにメッセージの付いたアイコンが表示され、ユーザーはそれを選択して何らかの操作(アクティビティの開始など)を行うことができます。
+
+</p>
+
+<p>通常は、バックグラウンド ワークが完了して、ユーザーが実行できる操作がある場合(ファイルのダウンロードが完了した場合など)は、ステータスバーの通知が最適なテクニックです。
+
+展開したビューでユーザーが通知を選択すると、通知がアクティビティ(ダウンロードしたファイルを表示するなど)を開始できるようになります。
+</p>
+
+<p>詳細については、デベロッパー ガイドの「<a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">トースト通知</a>」や「<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">ステータスバーの通知</a>」をご覧ください。
+</p>
+
+
+
+<h2 id="Foreground">サービスをフォアグラウンドで実行する</h2>
+
+<p>フォアグラウンド サービスは、ユーザーがその存在を認識しているものであるとみなされるため、メモリ残量が少なくなった場合でも、システムによる強制終了の現候補にはなりません。
+フォアグラウンド サービスではステータスバーに通知を表示する必要があり、通知は「継続中」という見出しの下に表示されるため、サービスが停止するか、フォアグラウンドから除去しない限り通知を消すことはできないということになります。
+
+
+</p>
+
+<p>たとえば、サービスから音楽を再生する音楽プレーヤーは、ユーザーがその操作を認識しているのは明らかであるため、フォアグラウンドで実行する必要があります。
+
+ステータスバーの通知には現在再生中の曲名を表示でき、ユーザーが音楽プレーヤーを操作するためのアクティビティを起動できるようにできます。
+</p>
+
+<p>サービスをフォアグラウンドで実行するよう要求するには、{@link
+android.app.Service#startForeground startForeground()} を呼び出します。このメソッドは、通知を一意に識別する整数と、ステータスバーの {@link
+android.app.Notification} の 2 つのパラメータを受け付けます。
+次に例を示します。</p>
+
+<pre>
+Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text),
+        System.currentTimeMillis());
+Intent notificationIntent = new Intent(this, ExampleActivity.class);
+PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
+notification.setLatestEventInfo(this, getText(R.string.notification_title),
+        getText(R.string.notification_message), pendingIntent);
+startForeground(ONGOING_NOTIFICATION_ID, notification);
+</pre>
+
+<p class="caution"><strong>警告:</strong> {@link
+android.app.Service#startForeground startForeground()} に渡す整数 ID には、0 は使用できません。</p>
+
+
+<p>サービスをフォアグラウンドから除去するには、{@link
+android.app.Service#stopForeground stopForeground()} を呼び出します。このメソッドでは、同時にステータスバーの通知も除去するかどうかを示すブール値を受け付けます。
+このメソッドでは、サービスは停止<em>されません</em>。
+ただし、サービスがまだフォアグラウンドで実行中に停止した場合は、通知も除去されます。
+</p>
+
+<p>通知の詳細については、「<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Creating Status Bar Notifications</a>」をご覧ください。
+</p>
+
+
+
+<h2 id="Lifecycle">サービスのライフサイクルを管理する</h2>
+
+<p>サービスのライフサイクルは、アクティビティのライフサイクルよりもはるかにシンプルです。ただし、サービスはバックグラウンドでサイレントに実行されるため、サービスがどのように作成され、破棄されるかについては、より一層の注意を払っておく必要があります。
+
+</p>
+
+<p>作成されてから破棄されるまでのサービスのライフサイクルには、2 つの経路があります。&mdash;&mdash;
+</p>
+
+<ul>
+<li>開始されたサービスの場合
+  <p>他のコンポーネントが {@link
+android.content.Context#startService startService()} を呼び出したときにサービスが作成されます。その後サービスは無期限に実行し、{@link
+android.app.Service#stopSelf() stopSelf()} を呼び出して自身で停止する必要があります。
+また、他のコンポーネントから {@link android.content.Context#stopService stopService()} を呼び出してサービスを停止することもできます。
+
+サービスが停止すると、システムがそれを破棄します。</p></li>
+
+<li>バインドされたサービス
+  <p>他のコンポーネント(クライアント)が {@link
+android.content.Context#bindService bindService()} を呼び出したときにサービスが作成されます。その後、クライアントが {@link android.os.IBinder} インターフェースを介してサービスとやり取りします。
+クライアントは、{@link android.content.Context#unbindService unbindService()} を呼び出して接続を終了できます。
+サービスには同時に複数のクライアントがバインドでき、すべてがアンバインドされると、サービスはシステムによって破棄されます
+(サービスを自身で停止する必要は<em>ありません</em>)。
+</p></li>
+</ul>
+
+<p>この 2 つの経路は、完全に分離しているわけではありません。つまり、{@link android.content.Context#startService startService()} で既に開始されたサービスにバインドすることも可能です。
+たとえば、{@link android.content.Context#startService
+startService()} を呼び出してバックグラウンドの音楽サービスを開始し、{@link android.content.Intent} を使って再生する音楽を指定できます。
+その後、ユーザーがプレーヤーを操作したり、現在の曲に関する情報を入手したりする場合は、{@link
+android.content.Context#bindService bindService()} を呼び出すことでアクティビティをサービスにバインドできます。
+
+このような場合は、すべてのクライアントがアンバインドされるまで、{@link
+android.content.Context#stopService stopService()} や {@link android.app.Service#stopSelf
+stopSelf()} ではサービスは停止されません。 </p>
+
+
+<h3 id="LifecycleCallbacks">ライフサイクル コールバックを実装する</h3>
+
+<p>アクティビティと同様に、サービスにもコールバック メソッドがあり、それを実装することでサービスの状態の変化を監視したり、適切なタイミングで処理を実行したりできます。
+次のスケルトン サービスは、それぞれのライフサイクル メソッドを表しています。
+</p>
+
+<pre>
+public class ExampleService extends Service {
+    int mStartMode;       // indicates how to behave if the service is killed
+    IBinder mBinder;      // interface for clients that bind
+    boolean mAllowRebind; // indicates whether onRebind should be used
+
+    &#64;Override
+    public void {@link android.app.Service#onCreate onCreate}() {
+        // The service is being created
+    }
+    &#64;Override
+    public int {@link android.app.Service#onStartCommand onStartCommand}(Intent intent, int flags, int startId) {
+        // The service is starting, due to a call to {@link android.content.Context#startService startService()}
+        return <em>mStartMode</em>;
+    }
+    &#64;Override
+    public IBinder {@link android.app.Service#onBind onBind}(Intent intent) {
+        // A client is binding to the service with {@link android.content.Context#bindService bindService()}
+        return <em>mBinder</em>;
+    }
+    &#64;Override
+    public boolean {@link android.app.Service#onUnbind onUnbind}(Intent intent) {
+        // All clients have unbound with {@link android.content.Context#unbindService unbindService()}
+        return <em>mAllowRebind</em>;
+    }
+    &#64;Override
+    public void {@link android.app.Service#onRebind onRebind}(Intent intent) {
+        // A client is binding to the service with {@link android.content.Context#bindService bindService()},
+        // after onUnbind() has already been called
+    }
+    &#64;Override
+    public void {@link android.app.Service#onDestroy onDestroy}() {
+        // The service is no longer used and is being destroyed
+    }
+}
+</pre>
+
+<p class="note"><strong>注:</strong> アクティビティのライフサイクル コールバック メソッドの場合とは異なり、これらのコールバック メソッドのスーパークラスの実装を呼び出す必要は<em>ありません</em>。
+</p>
+
+<img alt="" src="images/hero/how-to-enter1.jpg" />
+<p class="img-caption"><strong>図 2.</strong> サービスのライフサイクル。左側の図は、{@link android.content.Context#startService
+startService()} でサービスが作成されたときのライフサイクルを示し、右側の図は、{@link android.content.Context#bindService bindService()} でサービスが作成されたときのライフサイクルを示しています。
+
+</p>
+
+<p>これらのメソッドを実装すると、サービスのライフサイクル内の次の 2 つのネストされたループを監視できます。 </p>
+
+<ul>
+<li>サービスの<strong>全体の生存期間</strong>は、{@link
+android.app.Service#onCreate onCreate()} が呼び出されてから、{@link
+android.app.Service#onDestroy} から戻るまでの間です。アクティビティと同様に、サービスが {@link android.app.Service#onCreate onCreate()} で初期設定を行い、{@link
+android.app.Service#onDestroy onDestroy()} で残りのすべてのリソースを解放します。
+たとえば、音楽再生サービスでは、音楽を再生するスレッドを {@link
+android.app.Service#onCreate onCreate()} に作成して、停止するスレッドを {@link
+android.app.Service#onDestroy onDestroy()} に作成します。
+
+
+<p>{@link android.app.Service#onCreate onCreate()} メソッドと {@link android.app.Service#onDestroy
+onDestroy()} メソッドは、それが{@link android.content.Context#startService startService()} か {@link
+android.content.Context#bindService bindService()} のどちらで作成された場合でも、すべてのサービスに対して呼び出されます。
+</p></li>
+
+<li>サービスの<strong>アクティブな生存期間</strong> {@link
+android.app.Service#onStartCommand onStartCommand()} か {@link android.app.Service#onBind onBind()} のいずれかへの呼び出しから開始します。各メソッドには、{@link android.content.Context#startService
+startService()} か {@link android.content.Context#bindService bindService()} のいずれかに渡された {@link
+android.content.Intent} が渡されます。
+
+<p>サービスが開始された場合、アクティブな生存期間の完了は、全体の生存期間の完了と同じタイミングとなります({@link android.app.Service#onStartCommand
+onStartCommand()} から戻った後もサービスはまだアクティブです)。
+サービスがバインドされた場合、アクティブな生存期間は {@link
+android.app.Service#onUnbind onUnbind()} から戻った時点で完了します。</p>
+</li>
+</ul>
+
+<p class="note"><strong>注:</strong> 開始されたサービスは、{@link android.app.Service#stopSelf stopSelf()} か {@link
+android.content.Context#stopService stopService()} への呼び出しで停止されますが、サービスには同様のコールバックはありません({@code onStop()} コールバックがありません)。
+
+そのため、サービスがクライアントにバインドされていない限り、サービスが停止するとシステムがそれを破棄します。受け取るコールバックは {@link
+android.app.Service#onDestroy onDestroy()} のみです。
+&mdash;</p>
+
+<p>図 2 は、サービスの典型的なコールバック メソッドを表しています。この図では、{@link android.content.Context#startService startService()} で作成されたサービスと {@link android.content.Context#bindService bindService()} で作成されたサービスを分けていますが、開始方法にかかわらず、すべてのサービスがクライアントからバインドされる可能性があることに注意してください。つまり、当初は {@link android.app.Service#onStartCommand
+onStartCommand()} で(クライアントが {@link android.content.Context#startService startService()} を呼び出した際)開始されたサービスも、{@link android.app.Service#onBind onBind()} への呼び出し(クライアントが {@link android.content.Context#bindService bindService()} を呼び出した際)を受け取ることができます。
+
+
+
+
+
+</p>
+
+<p>バインドを提供するサービスの作成に関する詳細は、「<a href="{@docRoot}guide/components/bound-services.html">バインドされたサービス</a>」のドキュメントをご覧ください。このドキュメントの<a href="{@docRoot}guide/components/bound-services.html#Lifecycle">バインドされたサービスのライフサイクルを管理する</a>では、{@link android.app.Service#onRebind onRebind()} コールバックの詳細についても説明しています。
+
+
+</p>
+
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>To learn how to query data from the system or other applications (such as contacts or media
+stored on the device), continue with the <b><a
+href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a></b>
+document.</p>
+-->
diff --git a/docs/html-intl/intl/ja/guide/components/tasks-and-back-stack.jd b/docs/html-intl/intl/ja/guide/components/tasks-and-back-stack.jd
new file mode 100644
index 0000000..12f5911
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/components/tasks-and-back-stack.jd
@@ -0,0 +1,578 @@
+page.title=タスクとバックスタック
+parent.title=アクティビティ
+parent.link=activities.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本書の内容</h2>
+<ol>
+<li><a href="#ActivityState">アクティビティの状態を保存する</a></li></li>
+<li><a href="#ManagingTasks">タスクを管理する</a>
+  <ol>
+    <li><a href="#TaskLaunchModes">起動モードを定義する</a></li>
+    <li><a href="#Affinities">アフィニティを処理する</a></li>
+    <li><a href="#Clearing">バックスタックをクリアする</a></li>
+    <li><a href="#Starting">タスクを開始する</a></li>
+  </ol>
+</li>
+</ol>
+
+<h2>記事</h2>
+<ol>
+  <li><a href="http://android-developers.blogspot.com/2010/04/multitasking-android-way.html">Multitasking the Android Way</a>
+</li>
+</ol>
+
+<h2>関連ドキュメント</h2>
+<ol>
+  <li><a href="{@docRoot}design/patterns/navigation.html">Android Design: Navigation</a>
+</li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;} manifest element</a>
+</li>
+  <li><a href="{@docRoot}guide/components/recents.html">オーバービュー画面</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>通常、アプリケーションには複数の<a href="{@docRoot}guide/components/activities.html">アクティビティ</a>が含まれています。それぞれのアクティビティは、ユーザーが実行して、他のアクティビティを開始するといった特定のアクションを中心に設計されています。
+
+たとえば、メール アプリケーションに新規メッセージ一覧を表示する 1 つのアクティビティがあるとします。ユーザーがメッセージを選択すると、そのメッセージを表示するための新しいアクティビティが開きます。
+</p>
+
+<p>アクティビティでは、端末上の他のアプリケーションに存在するアクティビティを開始することもできます。たとえば、アプリケーションがメールの送信を求める場合は、「送信」アクションを実行し、メールアドレスや本文などのデータを含めるインテントを定義できます。
+
+その結果、この種のインテントの処理を宣言している別のアプリケーションのアクティビティが開きます。
+この場合、インテントはメールを送信することであるため、メール アプリケーションの「作成」アクティビティが開始されます(複数のアクティビティが同じインテントに対応している場合、システムはユーザーに選択を求めます)。
+
+メールが送信されると、元のアクティビティが再開され、まるでメール アクティビティがそのアプリケーションの一部であるように見えます。
+アクティビティは異なるアプリケーションのものでも、Android は両方のアクティビティを同じ<em>タスク</em>内に保つことによって、このシームレスな操作性を維持しています。
+
+</p>
+
+<p>タスクとは、ユーザーが特定の作業を行う時に情報のやり取りを行うアクティビティの集まりです。
+アクティビティは、各アクティビティが開かれた順にスタック(<em>バックスタック</em>)形式で配置されます。
+</p>
+
+<!-- SAVE FOR WHEN THE FRAGMENT DOC IS ADDED
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h3>Adding fragments to a task's back stack</h3>
+
+<p>Your activity can also include {@link android.app.Fragment}s to the back stack. For example,
+suppose you have a two-pane layout using fragments, one of which is a list view (fragment A) and the
+other being a layout to display an item from the list (fragment B). When the user selects an item
+from the list, fragment B is replaced by a new fragment (fragment C). In this case, it might be
+desireable for the user to navigate back to reveal fragment B, using the <em>Back</em> button.</p>
+<p>In order to add fragment B to the back stack so that this is possible, you must call {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()} before you {@link
+android.app.FragmentTransaction#commit()} the transaction that replaces fragment B with fragment
+C.</p>
+<p>For more information about using fragments and adding them to the back stack, see the {@link
+android.app.Fragment} class documentation.</p>
+
+</div>
+</div>
+-->
+
+<p>ほとんどのタスクは、端末のホーム画面から開始されます。ユーザーがアプリケーション ランチャーでアイコン(またはホーム画面のショートカット)にタッチすると、アプリケーションのタスクがフォアグラウンドに移動します。
+
+アプリケーションにタスクが存在しない(アプリケーションが最近使われていない)場合は、新しいタスクが作成され、そのアプリケーションの「メイン」アクティビティがスタック内のルート アクティビティとして開きます。
+
+</p>
+
+<p>現在のアクティビティが別のアクティビティを開始すると、新しいアクティビティがスタックの一番上にプッシュされ、アクティブになります。
+前のアクティビティはスタックに残りますが、停止されます。アクティビティが停止すると、システムはそのユーザー インターフェースの状態を維持します。
+ユーザーが [<em>戻る</em>] ボタンを押すと、現在のアクティビティがスタックの一番上から消え(アクティビティは破棄され)、前のアクティビティが再開します(UI は前の状態で復元されます)。
+
+
+スタック内のアクティビティが並べ替えられることはなく、スタック上にプッシュされるかスタックから消されるかのみです &mdash; 現在のアクティビティにより開始されるとスタック上にプッシュされ、ユーザーが [<em>戻る</em>] ボタンを押すと破棄されます。
+
+このように、バックスタックは「後入れ先出し」オブジェクト構造となっています。
+
+図 1 は、この動作を時系列に視覚化し、アクティビティとそれに伴うその時点でのバックスタックの状態を示したものです。
+
+</p>
+
+<img src="{@docRoot}images/fundamentals/diagram_backstack.png" alt="" />
+<p class="img-caption"><strong>図 1.</strong>タスク内の新しいアクティビティがバックスタックにアイテムを追加するプロセスを示しています。
+ユーザーが [<em>戻る</em>] ボタンを押すと、現在のアクティビティは破棄され、前のアクティビティが再開します。
+
+</p>
+
+
+<p>ユーザーが続けて [<em>戻る</em>] ボタンを押すと、スタック内のアクティビティは消えていき、前のアクティビティが表示されます。最終的に、ユーザーはホーム画面(またはタスクの開始時に実行されていたアクティビティ)に戻ります。
+
+
+すべてのアクティビティがスタックから削除されると、タスクはなくなります。</p>
+
+<div class="figure" style="width:287px">
+<img src="{@docRoot}images/fundamentals/diagram_multitasking.png" alt="" /> <p
+class="img-caption"><strong>図 2.</strong> 2 つのタスク: タスク B がフォアグラウンドでユーザー操作を受け入れます。タスク A は再開されるまでバックグラウンドで待機します。
+</p>
+</div>
+<div class="figure" style="width:215px">
+  <img src="{@docRoot}images/fundamentals/diagram_multiple_instances.png" alt="" /> <p
+class="img-caption"><strong>図 3.</strong> 1 つのアクティビティが複数回インスタンス化されます。</p>
+</div>
+
+<p>タスクは結束した構成単位で、ユーザーが新しいタスクを開始したり [<em>ホーム</em>] ボタンを使ってホーム画面に移動したりすると「バックグラウンド」に移動できます。
+バックグラウンドでは、タスク内のすべてのアクティビティが停止されますが、タスクのバックスタックは元の状態を保ちます &mdash; 図 2 に示すように、別のタスクが行われている間、タスクはフォーカスを失った状態になります。
+
+
+タスクはその後「フォアグラウンド」に戻り、ユーザーは操作の続きを行うことができます。
+たとえば、現在のタスク(タスク A)のスタックに 3 つのアクティビティがあるとします。現在のアクティビティの下に 2 つのアクティビティがある状態です。
+ユーザーが [<em>ホーム</em>] ボタンを押し、アプリケーション ランチャーから新しいアプリケーションを起動します。
+
+ホーム画面が表示されると、タスク A はバックグラウンドに移動します。
+新しいアプリケーションが起動すると、システムはそのアプリケーションのタスク(タスク B)を開始します。タスク B には独自のアクティビティ スタックがあります。
+アプリケーションの操作が終了すると、ユーザーはホームに戻り、タスク A を開始した元のアプリケーションを選択します。ここでタスク A はフォアグラウンドに移動します &mdash; 3 つのアクティビティはすべて元のままで、スタックの一番上にあるアクティビティが再開します。
+
+
+
+この時点で、ユーザーはホームに移動してタスク B を開始したアプリケーションを選択して(または<a href="{@docRoot}guide/components/recents.html">オーバービュー画面</a>でアプリのタスクを選択して)タスク B に切り替えることもできます。これは、Android のマルチタスク操作の一例です。
+
+
+
+</p>
+
+<p class="note"><strong>注:</strong> バックグラウンドには複数のタスクを一度に置くことができます。しかし、ユーザーが多数のバックグラウンド タスクを同時に実行すると、システムがメモリを回復するためにバックグラウンド アクティビティを破棄する場合があります。その結果、アクティビティの状態は失われます。<a href="#ActivityState">アクティビティの状態</a>セクションをご覧ください。
+
+
+</p>
+
+<p>バックスタック内のアクティビティが並べ替えられることはないため、アプリケーションが複数のアクティビティからの特定のアクティビティ開始を許可すると、(アクティビティの前のインスタンスを一番上に移動させるのではなく)そのアクティビティの新しいインスタンスが作成されてスタック上にプッシュされます。
+
+
+これによって、図 3 に示すように、アプリケーションの 1 つのアクティビティが(別のタスクからも)複数回インスタンス化される場合があります。
+この場合は、ユーザーが [<em>戻る</em>] ボタンを使って移動すると、アクティビティの各インスタンスが(UI の状態はそれぞれそのままで)開いた順に表示されます。
+
+
+しかし、1 つのアクティビティを何度もインスタンス化したくない場合は、この動作を修正できます。
+その方法については、後述のセクション<a href="#ManagingTasks">タスクを管理する</a>で説明します。</p>
+
+
+<p>以下は、アクティビティとタスクのデフォルトの動作をまとめたものです。</p>
+
+<ul>
+  <li>アクティビティ A がアクティビティ B を開始すると、アクティビティ A は停止しますが、システムはその状態(スクロールの位置やフォームに入力されたテキストなど)を保持します。アクティビティ B が開いた状態でユーザーが [<em>戻る</em>] ボタンを押すと、アクティビティ A が再開し、その状態が復元されます。
+
+
+</li>
+  <li>ユーザーが [<em>ホーム</em>] ボタンを押してタスクを離れると、現在のアクティビティは停止し、そのタスクはバックグラウンドに移動します。
+
+システムはタスク内のすべてのアクティビティの状態を保持します。後にユーザーがタスクを開始したランチャー アイコンを選択してタスクを再開すると、タスクはフォアグラウンドに移動し、スタックの一番上にあるアクティビティを開始します。
+
+</li>
+  <li>ユーザーが [<em>戻る</em>] ボタンを押すと、現在のアクティビティはスタックから消え、破棄されます。
+
+スタック内にある前のアクティビティが再開します。アクティビティが破棄された場合、システムはその状態を<em>保持しません</em>。
+</li>
+  <li>アクティビティは、別のタスクからでも複数回インスタンス化できます。</li>
+</ul>
+
+
+<div class="note design">
+<p><strong>ナビゲーション デザイン</strong></p>
+  <p>Android 上でのアプリ ナビゲーションの仕組みの詳細については、Android Design の「<a href="{@docRoot}design/patterns/navigation.html">Navigation</a>」ガイドをご覧ください。</p>
+</div>
+
+
+<h2 id="ActivityState">アクティビティの状態を保存する</h2>
+
+<p>上述のように、デフォルト動作では、システムはアクティビティが停止するとその状態を保持します。
+この方法では、ユーザーが前のアクティビティに戻ると、ユーザー インターフェースが前の状態のままで表示されます。
+しかし、コールバック メソッドを使って積極的にアクティビティの状態を保持することもできます。破棄されたアクティビティを再作成しなければならないことを考えると、アクティビティの状態は積極的に<strong>保持すべき</strong>です。
+
+</p>
+
+<p>システムが(新しいアクティビティの開始時やバックグラウンドへのタスクの移動時などに)アクティビティの 1 つを停止している時にシステム メモリの回復が必要になると、システムはそのアクティビティを完全に破棄する可能性があります。
+
+これにより、アクティビティの状態に関する情報が失われてしまいます。システムは、アクティビティがバックスタックに留まっていることは認識していますが、アクティビティがスタックの一番上に置かれるとアクティビティを(再開ではなく)再作成しなければなりません。
+
+
+ユーザーの作業内容が失われるのを回避するには、{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()} コールバック メソッドをアクティビティに実装することによって、作業状態を積極的に保持する必要があります。
+
+
+</p>
+
+<p>アクティビティの状態の保存方法の詳細については、「<a href="{@docRoot}guide/components/activities.html#SavingActivityState">Activities</a>」ドキュメントをご覧ください。
+</p>
+
+
+
+<h2 id="ManagingTasks">タスクを管理する</h2>
+
+<p>上記のように、Android は、連続して開始されたすべてのアクティビティを同じタスクの「後入れ先出し」式スタックに置くことによって、タスクやバックスタックを管理します。この方法は、ほとんどのアプリケーションでうまく動作し、アクティビティがどのようにタスクに関連付けられ、どのようにバックスタックに置かれているのかを心配する必要はありません。
+
+
+しかし、通常の動作に割り込みたい場合もあります。
+アプリケーション内のアクティビティが開始された時に(現在のタスク内に置かれる代わりに)新しいタスクを開始させたり、アクティビティの開始時に(新しいインスタンスをバックスタックの一番上に作成する代わりに)アクティビティの既存インスタンスを前に持ってきたり、ユーザーがタスクを離れる時にルート アクティビティ以外のすべてのアクティビティをバックスタックからクリアする場合などが考えられます。
+
+
+
+</p>
+
+<p><a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> マニフェスト エレメントの属性と {@link android.app.Activity#startActivity startActivity()} に渡すインテント内のフラグを使って、これらの、さらに他の動作を実現できます。
+
+
+</p>
+
+<p>この件に関して、使用できる主な <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 属性には以下のものがあります。
+</p>
+
+<ul class="nolist">
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">  {@code taskAffinity}</a>
+</li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">  {@code launchMode}</a>
+</li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">  {@code allowTaskReparenting}</a>
+</li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">  {@code clearTaskOnLaunch}</a>
+</li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#always">  {@code alwaysRetainTaskState}</a>
+</li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">  {@code finishOnTaskLaunch}</a>
+</li>
+</ul>
+
+<p>使用できる主なインテント フラグには以下のものがあります。</p>
+
+<ul class="nolist">
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</li>
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</li>
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</li>
+</ul>
+
+<p>以下のセクションでは、これらのマニフェスト属性とインテント フラグを使ってアクティビティをタスクに関連付ける方法とバックスタック内での動作を定義する方法を説明します。
+</p>
+
+<p>また、タスクとアクティビティの提示方法やオーバービュー画面での管理方法に関する考慮点について別途記載しています。
+詳細については、「<a href="{@docRoot}guide/components/recents.html">オーバービュー画面</a>」をご覧ください。
+通常、オーバービュー画面にタスクとアクティビティを提示する方法はシステムが定義できるよう許可し、この動作を変更する必要はありません。
+</p>
+
+<p class="caution"><strong>警告:</strong> ほとんどのアプリケーションはアクティビティとタスクに対するデフォルトの動作に割り込むべきではありません。
+アクティビティがデフォルトの動作を変更する必要があると判断した場合は、起動時と他のアクティビティやタスクからの [<em>戻る</em>] ボタンによる移動時のアクティビティのユーザビリティを慎重にテストする必要があります。ユーザーが想定する動作と競合する恐れのあるナビゲーション時の動作については必ずテストを行ってください。
+
+
+</p>
+
+
+<h3 id="TaskLaunchModes">起動モードを定義する</h3>
+
+<p>起動モードでは、アクティビティの新しいインスタンスを現在のタスクに関連付ける方法を定義できます。
+次の 2 つの方法を使ってさまざまな起動モードを定義できます。</p>
+<ul class="nolist">
+  <li><a href="#ManifestForTasks">マニフェスト ファイルを使用する</a>
+    <p>マニフェスト ファイルにアクティビティを宣言する際に、開始時にアクティビティをタスクに関連付ける方法を指定できます。
+</li>
+  <li><a href="#IntentFlagsForTasks">インテント フラグを使用する</a>
+    <p>{@link android.app.Activity#startActivity startActivity()} を呼び出す際に、新しいアクティビティを現在のタスクに関連付ける方法(または関連付けるかどうか)を宣言する {@link android.content.Intent} にフラグを置くことができます。
+
+</p></li>
+</ul>
+
+<p>アクティビティ A がアクティビティ B を開始する場合、アクティビティ B は自身を現在のタスクに関連付ける方法(もしあれば)をマニフェストに定義し、アクティビティ A はアクティビティ B を現在のタスクに関連付ける方法を要求できます。
+
+両方のアクティビティがアクティビティ B をタスクに関連付ける方法を定義している場合は、アクティビティ B の要求よりも(インテントに定義される)アクティビティ A の要求が優先されます。
+
+</p>
+
+<p class="note"><strong>注:</strong> マニフェスト ファイルで使用できる起動モードの中にはインテントのフラグとして使用できないものもあります。同様に、インテントのフラグとして使用できる起動モードの中には、マニフェストで定義できないものもあります。
+
+</p>
+
+
+<h4 id="ManifestForTasks">マニフェスト ファイルを使用する</h4>
+
+<p>マニフェスト ファイルでアクティビティを宣言する際に、<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> エレメントの <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> 属性を使ってアクティビティをタスクに関連付ける方法を定義できます。
+
+
+</p>
+
+<p><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> 属性は、アクティビティをタスク内で起動する方法についての指示を定めます。
+
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">launchMode</a></code> 属性には、次の 4 つの起動モードを割り当てることができます。
+
+</p>
+
+<dl>
+<dt>{@code "standard"}(デフォルトのモード)</dt>
+  <dd>デフォルトの設定です。システムは、開始されたタスクからアクティビティの新しいインスタンスをタスク内に作成し、インテントを渡します。
+アクティビティは複数回インスタンス化できます。各インスタンスは異なるタスクに所属でき、1 つのタスクは複数のインスタンスを持つことができます。
+</dd>
+<dt>{@code "singleTop"}</dt>
+  <dd>アクティビティのインスタンスが現在のタスクの一番上に既に存在する場合は、システムはアクティビティの新しいインスタンスを作成せずに、{@link android.app.Activity#onNewIntent onNewIntent()} メソッドを呼び出して、インテントをそのインスタンスに渡します。
+
+
+アクティビティは複数回インスタンス化できます。各インスタンスは異なるタスクに所属でき、1 つのタスクは複数のインスタンスを持つことができます(バックスタックの一番上にあるアクティビティがそのアクティビティの既存のインスタンスで<em>ない</em>場合のみ)。
+
+
+  <p>たとえば、タスクのバックスタックがアクティビティ B、C、そしてアクティビティ D を一番上に持つルート アクティビティ A で構成されているとします(スタックは A-B-C-D で D が一番上)。
+D タイプのアクティビティにインテントが届きます。もし D の起動モードがデフォルトの {@code "standard"} である場合は、そのクラスの新しいインスタンスが起動し、スタックは A-B-C-D-D となります。しかし、D の起動モードが {@code "singleTop"} である場合は、スタックの一番上にある D の既存のインスタンスが {@link android.app.Activity#onNewIntent onNewIntent()} を介してインテントを受け取ります &mdash; この場合、スタックは A-B-C-D のままとなります。ただし、B タイプのアクティビティのインテントが届くと、その起動モードが {@code "singleTop"} であっても、B の新しいインスタンスがスタックに追加されます。
+
+
+
+
+
+</p>
+  <p class="note"><strong>注:</strong> アクティビティの新しいインスタンスが作成されると、ユーザーは [<em>戻る</em>] ボタンを押して前のアクティビティに戻ることができます。
+しかし、アクティビティの既存のインスタンスが新しいインテントに対応すると、ユーザーは、新しいインテントが {@link android.app.Activity#onNewIntent onNewIntent()} で届く前の状態に [<em>戻る</em>] ボタンを押して戻ることはできません。
+
+
+
+
+</p>
+</dd>
+
+<dt>{@code "singleTask"}</dt>
+  <dd>システムは新しいタスクを作成し、新しいタスクのルートにアクティビティをインスタンス化します。しかし、そのアクティビティのインスタンスが別のタスクに既に存在する場合は、システムは新しいインスタンスを作成せずに、{@link android.app.Activity#onNewIntent onNewIntent()} メソッドを呼び出して、インテントを既存のインスタンスに渡します。
+
+
+同時に存在できるアクティビティのインスタンスは 1 つだけです。
+
+  <p class="note"><strong>注:</strong> アクティビティは新しいタスク内で開始されますが、ユーザーは [<em>戻る</em>] ボタンを押して前のアクティビティに戻ることができます。
+</p></dd>
+<dt>{@code "singleInstance"}</dt>
+  <dd>システムが、他のアクティビティをインスタンスを保持しているタスクで起動しないことを除いて {@code "singleTask"} と同じです。
+アクティビティは、常にタスクの唯一の構成要素となります。このアクティビティによって開始されたアクティビティは別のタスクで開きます。
+</dd>
+</dl>
+
+
+<p>たとえば、Android Browser アプリケーションは、<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> エレメントの {@code singleTask} 起動モードを指定することによって、ウェブブラウザ アクティビティを常に自身のタスクで開くことを宣言しています。これは、開発されたアプリケーションが Android Browser を開くインテントを発行すると、そのアクティビティがアプリケーションのタスクには配置<em>されない</em>ことを意味します。
+
+
+
+代わりに、Android Browser の新しいタスクが開始されるか、Android Browser に既に実行中のバックグラウンド タスクがある場合は、そのタスクがフォアグラウンドに移動し、新しいインテントに対応します。
+
+</p>
+
+<p>アクティビティを新しいタスク内で開始するかアクティビティを起動したアクティビティと同じタスクで開始するかにかかわらず、ユーザーは [<em>戻る</em>] ボタンを押して前のアクティビティに戻ることができます。
+ただし、{@code singleTask} 起動モードを設定したアクティビティを開始し、そのアクティビティのインスタンスがバックグラウンド タスクに存在する場合は、そのタスク全体がフォアグラウンドに移動します。
+
+この時点で、バックスタックの一番上に、フォアグラウンドに移動したタスクのすべてのアクティビティが含まれてます。
+
+図 4 は、このタイプのシナリオを示しています。</p>
+
+<img src="{@docRoot}images/fundamentals/diagram_backstack_singletask_multiactivity.png" alt="" />
+<p class="img-caption"><strong>図 4.</strong>「singleTask」起動モードを持つアクティビティをバックスタックに追加する方法を示しています。
+アクティビティが自身のバックスタックを持つバックグラウンド タスクの一部である場合は、バックスタック全体がフォアグラウンドに移動し、現在のタスクの上に置かれます。
+
+</p>
+
+<p>マニフェスト ファイルでの起動モードの使用の詳細については、<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> エレメントのドキュメントをご覧ください。{@code launchMode} 属性と利用できる値について詳しく説明しています。
+
+
+</p>
+
+<p class="note"><strong>注:</strong> 次のセクションで説明しますが、<a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> 属性を使ってアクティビティに指定する動作は、アクティビティを開始するインテントに含まれるフラグによって上書きされる場合があります。
+
+</p>
+
+
+
+<h4 id="#IntentFlagsForTasks">インテント フラグを使用する</h4>
+
+<p>アクティビティの開始時に、{@link android.app.Activity#startActivity startActivity()} に渡すインテントにフラグを含めることによってアクティビティとタスクのデフォルトの関連付けを変更できます。
+
+以下は、デフォルトの動作を変更するために使用できるフラグです。
+</p>
+
+<p>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</dt>
+    <dd>新しいタスクでアクティビティを開始します。開始しようとしているアクティビティに対してタスクが既に実行されている場合は、そのタスクの最新の状態が復元されてフォアグラウンドに移動し、アクティビティが {@link android.app.Activity#onNewIntent onNewIntent()} で新しいインテントを受け取ります。
+
+
+    <p>この手順は、上述のセクションで説明した {@code "singleTask"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> の値の動作と同じものです。
+</p></dd>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</dt>
+    <dd>開始されるアクティビティが(バックスタックの一番上にある)現在のアクティビティである場合は、アクティビティの新しいインスタンスを作成する代わりに、既存のインスタンスが {@link android.app.Activity#onNewIntent onNewIntent()} の呼び出しを受け取ります。
+
+
+    <p>この手順は、上述のセクションで説明した {@code "singleTop"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> の値の動作と同じものです。
+</p></dd>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</dt>
+    <dd>開始されるアクティビティが既に現在のタスクを実行している場合は、そのアクティビティの新しいインスタンスを起動する代わりに、上に置かれたその他すべてのアクティビティを破棄し、{@link android.app.Activity#onNewIntent onNewIntent()} を介してこのインテントを(一番上に移動した)アクティビティの再開されたインスタンスに渡します。
+
+
+
+    <p>この動作を起こす <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> 属性には値はありません。
+</p>
+    <p>ほとんどのケースで {@code FLAG_ACTIVITY_CLEAR_TOP} は {@code FLAG_ACTIVITY_NEW_TASK} と併用されます。同時に使用することで、これらのフラグは、別のタスクにある既存のアクティビティを捜し出し、インテントに対応できる位置に置く手段を提供します。
+
+
+ </p>
+    <p class="note"><strong>注:</strong> 指定されたアクティビティの起動モードが {@code "standard"} である場合は、やはりスタックから削除されます。その場所に、渡されるインテントに対応する新しいインスタンスが開始されます。
+
+
+これは、起動モードが {@code "standard"} である場合は、新しいインテントに対して常に新しいインスタンスが作成されるためです。
+ </p>
+</dd>
+</dl>
+
+
+
+
+
+<h3 id="Affinities">アフィニティを処理する</h3>
+
+<p><em>アフィニティ</em>は、アクティビティの所属が望ましいタスクを示します。 デフォルトでは、同じアプリケーションのすべてアクティビティに相互のアフィニティが設定されています。
+このため、同じアプリケーションのすべてのアクティビティは、デフォルトで同じタスクに属します。
+しかし、アクティビティのデフォルトのアフィニティは変更できます。
+異なるアプリケーションに定義されているアクティビティがアフィニティを共有したり、同じアプリケーションに定義されたアクティビティに別のタスクのアフィニティを割り当てたりすることができます。
+
+</p>
+
+<p><a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> エレメントの <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a> 属性を使って、任意のアクティビティのアフィニティを変更できます。
+
+</p>
+
+<p><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a> 属性には文字列を指定します。これは、<a href="{@docRoot}guide/topics/manifest/manifest-element.html">{@code &lt;manifest&gt;}</a> エレメントに宣言されたデフォルトのパッケージ名とは異なる一意のものでなければなりません。理由は、システムがアプリケーションに対するデフォルトのタスク アフィニティを識別するためにこの名前を使用するためです。
+
+
+
+
+</p>
+
+<p>アフィニティは、以下の 2 つの状況で役立ちます。</p>
+<ul>
+  <li>アクティビティを開始するインテントが {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK} フラグを含んでいる場合
+
+
+
+<p>新しいアクティビティは、デフォルトで、{@link android.app.Activity#startActivity startActivity()} を呼び出したアクティビティのタスクで開始されます。
+呼び出し元と同じバックスタックにプッシュされます。
+しかし、{@link android.app.Activity#startActivity startActivity()} に渡されたインテントに {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK} フラグが含まれると、システムは新しいアクティビティを収容する別のタスクを捜します。
+
+
+これは、通常新しいタスクですが、新しいタスクである必要はありません。
+新しいアクティビティとして同じアフィニティを持つ既存のタスクが存在する場合は、アクティビティはそのタスクで開始されます。
+存在しない場合は、新しいタスクを開始します。</p>
+
+<p>このフラグによってアクティビティが新しいタスクを開始し、ユーザーが [<em>ホーム</em>] ボタンを押してタスクを離れる場合には、ユーザーがそのタスクに戻るための手段が必要です。
+
+エンティティの中には(通知マネージャーなど)、自身の一部としてではなく、常に外部タスクでアクティビティを開始するものがあります。そのために、これらのエンティティが {@link android.app.Activity#startActivity startActivity()} に渡すインテントには常に {@code FLAG_ACTIVITY_NEW_TASK} が含まれます。このフラグを使った外部エンティティにより起動される可能性があるアクティビティがある場合は、起動アイコンなどを使って、アクティビティが開始したタスクにユーザーが戻れるよう独立した手段を確保します。(タスクのルート アクティビティには {@link android.content.Intent#CATEGORY_LAUNCHER} インテント フィルタがあります。後述の<a href="#Starting">タスクを開始する</a>セクションをご覧ください)。
+
+
+
+
+
+
+</p>
+</li>
+
+  <li>アクティビティの <a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">{@code allowTaskReparenting}</a> 属性が {@code "true"} に設定されている場合。
+
+  <p>この場合は、タスクがフォアグラウンドに移動した時に、アクティビティは自身が開始したタスクから、アフィニティがあるタスクへと移動できます。
+</p>
+  <p>たとえば、選ばれた都市の天気を予報するアクティビティが旅行アプリケーションの一部として定義されているケースを考えてみましょう。
+このアクティビティは、アプリケーション内のその他のアクティビティと同じアフィニティ(デフォルトのアプリケーション アフィニティ)を持ち、この属性による親への再割り当てが許可されています。いずれかのアクティビティにより開始された天気予報アクティビティは、最初はそのアクティビティと同じタスクに属しています。
+
+
+しかし、旅行アプリケーションのタスクがフォアグラウンドに移動すると、天気予報アクティビティはそのタスクに再度割り当てられ、タスク内に表示されます。
+</p>
+</li>
+</ul>
+
+<p class="note"><strong>ヒント:</strong> {@code .apk} ファイルがユーザーの視点で 1 つ以上の「アプリケーション」を含んでいる場合は、各「アプリケーション」に関連付けられたアクティビティに <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a> 属性を使って異なるアフィニティを割り当てることをお勧めします。
+
+</p>
+
+
+
+<h3 id="Clearing">バックスタックをクリアする</h3>
+
+<p>ユーザーがタスクを長時間離れると、システムはルート アクティビティを除くすべてのアクティビティをタスクからクリアします。
+ユーザーが再びタスクに戻ると、ルート アクティビティのみが復元されます。システムがこの動作を行うのは、しばらく時間が経過した後は、ユーザーが前に行っていた作業を放棄した可能性が高く、新しいことを始めるためにタスクに戻ったとみなされるためです。
+
+ </p>
+
+<p>この動作を変更するために、以下のアクティビティ属性を使用できます。 </p>
+
+<dl>
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#always">alwaysRetainTaskState</a></code>
+</dt>
+<dd>タスクのルート アクティビティでこの属性が {@code "true"} に設定されていると、上記のデフォルトの動作は発生しません。長時間が経過しても、タスクはすべてのアクティビティをスタックに保持します。
+
+</dd>
+
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#clear">clearTaskOnLaunch</a></code></dt>
+<dd>タスクのルート アクティビティでこの属性が {@code "true"} に設定されている場合、ユーザーがタスクを離れて戻るたびに、スタックがルート アクティビティまでクリアされます。
+
+つまり、<a href="{@docRoot}guide/topics/manifest/activity-element.html#always">{@code alwaysRetainTaskState}</a> の逆の動作となります。
+
+ユーザーがタスクをほんの少しの間離れた場合でも、タスクは常に初期状態に戻ります。
+</dd>
+
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTaskLaunch</a></code>
+</dt>
+<dd>この属性は、<a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">{@code clearTaskOnLaunch}</a> に似ていますが、タスク全体ではなく 1 つのアクティビティに作用します。
+
+ルート アクティビティを含むあらゆるアクティビティを消すことができます。
+この属性が {@code "true"} に設定されていると、アクティビティは現在のセッションが開かれている間のみタスクの一部として留まります。
+ユーザーがタスクから離れて戻ると、アクティビティは消えています。
+</dd>
+</dl>
+
+
+
+
+<h3 id="Starting">タスクを開始する</h3>
+
+<p>指定するアクションとして {@code "android.intent.action.MAIN"}、指定するカテゴリとして {@code "android.intent.category.LAUNCHER"} を持つインテント フィルタを付加することによって、アクティビティをタスクのエントリ ポイントとして設定できます。
+
+
+次に例を示します。</p>
+
+<pre>
+&lt;activity ... &gt;
+    &lt;intent-filter ... &gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+    ...
+&lt;/activity&gt;
+</pre>
+
+<p>この種類のインテント フィルタを使うことによって、アクティビティのアイコンとラベルがアプリケーション ランチャーに表示されるようになります。これにより、ユーザーは、アクティビティを起動し、アクティビティの起動後は、作成されたタスクにいつでも戻ることができるようになります。
+
+
+</p>
+
+<p>ユーザーがタスクを離れた後に、このアクティビティ ランチャーを使って戻ってくることが可能でなければならないため、2 番目の機能が重要になります。
+アクティビティが {@link android.content.Intent#ACTION_MAIN} と {@link android.content.Intent#CATEGORY_LAUNCHER} フィルタを持つ場合のみに、アクティビティが常にタスクを開始することを示す {@code "singleTask"} と {@code "singleInstance"} の 2 つの<a href="#LaunchModes">起動モード</a>を使用すべきなのはこのためです。
+
+
+
+たとえば、フィルタがない場合にどうなるのかを想像してみてください。
+インテントが {@code "singleTask"} アクティビティを起動し、新しいタスクを開始し、ユーザーがそのタスクでしばらくの間作業を行います。
+その後、ユーザーは [<em>ホーム</em>] ボタンを押します。
+タスクはバックグラウンドに移動し、見えなくなります。タスクはアプリケーション ランチャーに表示されていないため、この状態ではユーザーがタスクに戻る手段がありません。
+</p>
+
+<p>ユーザーがアクティビティに戻るのを防ぐには、<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> エレメントの <a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">{@code finishOnTaskLaunch}</a> を {@code "true"} に設定します(<a href="#Clearing">スタックをクリアする</a>をご覧ください)。
+
+
+
+</p>
+
+<p>オーバービュー画面でのタスクとアクティビティの表示方法と管理方法の詳細については、「<a href="{@docRoot}guide/components/recents.html">オーバービュー画面</a>」をご覧ください。
+
+</p>
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For more information about how to use intents to
+activate other application components and publish the intents to which your components
+respond, continue with the <b><a
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent
+Filters</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/ja/guide/index.jd b/docs/html-intl/intl/ja/guide/index.jd
new file mode 100644
index 0000000..07688b6
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/index.jd
@@ -0,0 +1,74 @@
+page.title=Android 入門
+
+@jd:body
+
+
+<div class="sidebox" style="width:220px"><!-- width to match col-4 below -->
+<p>アプリの動作方法について学ぶには、「<a href="{@docRoot}guide/components/fundamentals.html">App Fundamentals</a>」をご覧ください。
+</p>
+<p>今すぐコーディングを始める場合は、「<a href="{@docRoot}training/basics/firstapp/index.html">Building Your First App</a>」をご覧ください。</p>
+</div>
+
+<p>Android は、モバイル端末用の画期的なアプリやゲームを Java 言語環境でビルドできる、充実したアプリケーション フレームワークを提供します。
+左側のナビゲーションに表示されているドキュメントには、さまざまな Android API を使ってアプリをビルドする詳しい方法が記載されています。
+</p>
+
+<p>Android 開発の経験がない場合は、Android アプリのフレームワークについて次の基本的な概念を理解していることが重要になります。
+</p>
+
+
+<div class="landing-banner">
+
+<div class="col-6">
+
+<h4>アプリには複数のエントリ ポイントがある</h4>
+
+<p>Android のアプリは、個別に呼び出し可能な異なるコンポーネントを組み合わせてビルドされます。
+たとえば、1 つの<em>アクティビティ</em>が 1 つの画面でユーザー インターフェースを提供し、<em>サービス</em>がバックグラウンドで個別に処理を実行します。
+
+</p>
+
+<p><em>インテント</em>を使って、1 つのコンポーネントから別のコンポーネントを開始できます。地図アプリで住所を表示するアクティビティなどのように、別のアプリでコンポーネントを開始することもできます。
+このモデルでは、1 つのアプリに複数のエントリ ポイントを提供し、あらゆるアプリを他のアプリが呼び出すアクションの「デフォルト」として動作させることができます。
+
+</p>
+
+
+<p><b>詳細を見る</b></p>
+<ul class="nolist">
+<li><a href="{@docRoot}guide/components/fundamentals.html">App Fundamentals</a>
+<li><a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>
+<li><a href="{@docRoot}guide/components/activities.html">Activities</a>
+</ul>
+
+</div>
+
+
+<div class="col-6">
+
+<h4>さまざまな端末に対応するアプリ</h4>
+
+<p>Android は、さまざまな端末の構成に独自のリソースを提供できる柔軟なアプリ フレームワークを提供します。
+たとえば、画面サイズごとに個別の XML レイアウト ファイルを作成し、システムが使用中の端末の画面サイズに基づいて適用するレイアウトを決定します。
+
+</p>
+
+<p>アプリの機能に特定のハードウェア(カメラなど)が必要な場合は、実行時に端末機能の使用可能状況をクエリできます。
+必要に応じて、アプリに必要な機能を宣言することもできます。これによって、Google Play ストアなどのアプリ マーケットでは、宣言した機能に対応していない端末へのインストールが許可されません。
+
+</p>
+
+
+<p><b>詳細を見る</b></p>
+<ul class="nolist">
+<li><a href="{@docRoot}guide/practices/compatibility.html">Device Compatibility</a>
+<li><a href="{@docRoot}guide/topics/resources/overview.html">リソースの概要</a>
+<li><a href="{@docRoot}guide/topics/ui/overview.html">ユーザー インターフェースの概要</a>
+</ul>
+
+</div>
+
+</div><!-- end landing-banner -->
+
+
+
diff --git a/docs/html-intl/intl/ja/guide/topics/manifest/manifest-intro.jd b/docs/html-intl/intl/ja/guide/topics/manifest/manifest-intro.jd
new file mode 100644
index 0000000..7d9e8ac
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/manifest/manifest-intro.jd
@@ -0,0 +1,517 @@
+page.title=アプリ マニフェスト
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本書の内容</h2>
+<ol>
+<li><a href="#filestruct">マニフェスト ファイルの構造</a></li>
+<li><a href="#filec">ファイルの規則</a>
+<li><a href="#filef">ファイルの特徴</a>
+	<ol>
+	<li><a href="#ifs">インテント フィルタ</a></li>
+	<li><a href="#iconlabel">アイコンとラベル</a></li>
+	<li><a href="#perms">パーミッション</a></li>
+	<li><a href="#libs">ライブラリ</a></li>
+	</ol></li>
+</ol>
+</div>
+</div>
+
+<p>
+  すべてのアプリケーションには、そのルート ディレクトリに AndroidManifest.xml ファイル(名前はこのまま)が必要です。
+ <span itemprop="description">マニフェスト ファイルはアプリに関する重要な情報を Android システムに提示します。これは、システムがアプリのコードを実行する前に必要な情報です。
+
+
+</span> その他、マニフェスト ファイルでは次のことを行います。
+</p>
+
+<ul>
+<li>アプリケーションの Java パッケージ名を指定します。パッケージ名は、アプリケーションの一意の識別子としての機能を果たします。
+</li>
+
+<li>アプリケーションのコンポーネント(アプリケーションを構成するアクティビティ、サービス、ブロードキャスト レシーバー、コンテンツ プロバイダ)を記述します。
+
+各コンポーネントを実装するクラスの名前を指定し、その機能(対応可能な {@link android.content.Intent Intent} メッセージなど)を公開します。
+
+これらの宣言によって、Android システムは、どんなコンポーネントがあり、それらのコンポーネントがどのような条件で起動されるのかを把握できます。
+</li>
+
+<li>アプリケーション コンポーネントをホストするプロセスを決定します。</li>  
+
+<li>アプリケーションが API の保護された部分にアクセスしたり他のアプリケーションとやり取りしたりする際に必要となるパーミッションを宣言します。
+</li>  
+
+<li>他のアプリケーションがアプリケーションのコンポーネントとやり取りするために必要なパーミッションを宣言します。
+</li>
+
+<li>アプリケーションの実行時にプロファイリングやその他の情報を提供する {@link android.app.Instrumentation} クラスを記載します。
+これらの宣言は、アプリケーションの開発時やテスト時にのみマニフェストに含まれ、アプリケーションの公開前に削除されます。
+
+</li>
+
+<li>アプリケーションに必要な Android API の最小限のレベルを宣言します。
+</li>
+
+<li>アプリケーションにリンクする必要があるライブラリを記載します。</li>
+</ul>
+
+
+<h2 id="filestruct">マニフェスト ファイルの構造</h2>
+
+<p>
+次の図は、マニフェスト ファイルの一般的な構造とファイルに含むことができるすべてのエレメントを示します。
+各エレメントとそれぞれの属性はすべて別のファイルに記述されます。
+エレメントの詳細を見るには、図中、図の下にあるアルファベット順のエレメント一覧、またはその他の説明文に表示されているエレメント名をクリックしてください。
+
+
+ 
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
+
+    <a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration /&gt;</a>  <!-- ##api level 3## -->
+    <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature /&gt;</a>  <!-- ##api level 4## -->
+    <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens /&gt;</a>  <!-- ##api level 4## -->
+    <a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html">&lt;compatible-screens /&gt;</a>  <!-- ##api level 9## -->
+    <a href="{@docRoot}guide/topics/manifest/supports-gl-texture-element.html">&lt;supports-gl-texture /&gt;</a>  <!-- ##api level 11## -->
+
+    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action /&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category /&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;/activity&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;/activity-alias&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data/&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;/service&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;/receiver&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/path-permission-element.html">&lt;path-permission /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;/provider&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library /&gt;</a>
+
+    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;/application&gt;</a>
+
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;/manifest&gt;</a>
+</pre>
+
+<p>
+以下は、マニフェスト ファイルに含むことができるすべてのエレメントをアルファベット順に並べたものです。
+使用が許可されているのはこれらのエレメントのみです。独自のエレメントや属性は追加できません。
+  
+</p>
+
+<p style="margin-left: 2em">
+<code><a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens&gt;</a></code>  <!-- ##api level 4## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration&gt;</a></code>  <!-- ##api level 3## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature&gt;</a></code>  <!-- ##api level 4## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</a></code>
+</p>
+
+
+    
+
+<h2 id="filec">ファイルの規則</h2>
+
+<p>
+マニフェスト ファイルに含まれるエレメントと属性には、通常、次の規則とルールが適用されます。
+
+</p>
+
+<dl>
+<dt><b>エレメント</b></dt>
+<dd>必須のエレメントは<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> と <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> のみです。両方のエレメントを提示する必要があり、使用できるのはそれぞれ 1 回のみです。
+
+
+その他のほとんどのエレメントは、複数回使ってもまったく使わなくてもかまいませんが、意味のあるマニフェストを行うにはいくつかのエレメントが必要です。
+
+
+
+
+<p>
+内容のあるエレメントには他のエレメントが含まれているためです。すべての値は属性によって設定され、エレメント内に文字データが設定されることはありません。
+
+</p>
+
+<p>
+同じレベルにあるエレメントに順番はありません。たとえば、<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> や <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>、<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code> エレメントは、どのような順で並べてもかまいません。
+
+
+
+(<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code> エレメントは例外となります。
+
+エイリアスとなっている <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> のすぐ後に記述する必要があります)。
+
+
+</p></dd>
+
+<dt><b>属性</b></dt>
+<dd>正式には、すべての属性はオプションです。しかし、エレメントが目的を達成するために設定しなければならない属性もあります。
+このドキュメントはガイドとしてお使いください。
+真の意味でオプションの属性には、デフォルト値または指定がない場合の動作が記述されています。
+
+
+<p>ルートの <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> エレメントの属性の一部を除き、すべての属性名は {@code android:} 接頭辞で始まります(例: {@code android:alwaysRetainTaskState})。
+
+
+この接頭辞は共通であるため、ドキュメントで属性が名前で参照されている場合は通常省略されます。
+
+</p></dd>
+
+<dt><b>クラス名の宣言</b></dt>
+<dd>多くのエレメントは Java オブジェクトと一致しています。これらのエレメントには、アプリケーション自体(<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> エレメント)とその主要なコンポーネントであるアクティビティ(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>)、サービス(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>)、ブロードキャスト レシーバー(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>)やコンテンツ プロバイダ(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>)が含まれます。
+
+
+
+
+
+
+
+
+
+  
+
+<p>
+サブクラスを定義する場合は、コンポーネント クラス({@link android.app.Activity}、{@link android.app.Service}、{@link android.content.BroadcastReceiver}、{@link android.content.ContentProvider})でいつも行うように、サブクラスは {@code name} 属性で宣言されます。
+
+
+この名前には、完全なパッケージ名を含む必要があります。
+たとえば、{@link android.app.Service} サブクラスの宣言は以下のようになります。
+
+</p>
+
+<pre>&lt;manifest . . . &gt;
+    &lt;application . . . &gt;
+        &lt;service android:name="com.example.project.SecretService" . . . &gt;
+            . . .
+        &lt;/service&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+ただし、簡素化する方法として、文字列の最初の文字がピリオドの場合、文字列はアプリケーションのパッケージ名に付加されます(<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> エレメントの <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code> 属性によって指定されるため)。
+
+
+
+
+以下は、上記のものと同じ内容です。 
+</p>
+
+<pre>&lt;manifest package="com.example.project" . . . &gt;
+    &lt;application . . . &gt;
+        &lt;service android:name=".SecretService" . . . &gt;
+            . . .
+        &lt;/service&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+コンポーネントの開始時に、Android は名前が指定されたサブクラスのインスタンスを作成します。サブクラスが指定されていない場合は、基底クラスのインスタンスを作成します。
+
+</p></dd>
+
+<dt><b>複数の値</b></dt>
+<dd>1 つ以上の値が指定されている場合は、1 つのエレメントに複数の値が記載されているのではなく、エレメントが繰り返されているケースがほとんどです。
+たとえば、インテント フィルタには複数のアクションが記載されている場合があります。
+
+
+<pre>&lt;intent-filter . . . &gt;
+    &lt;action android:name="android.intent.action.EDIT" /&gt;
+    &lt;action android:name="android.intent.action.INSERT" /&gt;
+    &lt;action android:name="android.intent.action.DELETE" /&gt;
+    . . .
+&lt;/intent-filter&gt;</pre></dd>
+
+<dt><b>リソースの値</b></dt>
+<dd>属性には、ユーザーに対して表示する値を含むものもあります。たとえば、アクティビティのラベルやアイコンです。
+これらの属性の値は、ローカライズされていなければならないため、リソースまたはテーマから設定する必要があります。
+リソースの値は、以下の形式で記述されます。
+</p>
+
+<p style="margin-left: 2em">{@code @[<i>package</i>:]<i>type</i>:<i>name</i>}</p>
+
+<p>
+リソースがアプリケーションと同じパッケージ内にある場合は package 名を省略できます。type はリソースのタイプ(「string」や「drawable」など)、name は特定のリソースの名前です。<i></i>
+<i></i>
+<i></i>次に例を示します。
+
+</p>
+
+<pre>&lt;activity android:icon="@drawable/smallPic" . . . &gt</pre>
+
+<p>
+テーマからの値も同様の方法で表記されますが、冒頭は '{@code @}' ではなく '{@code ?}' となります。
+
+</p>
+
+<p style="margin-left: 2em">{@code ?[<i>package</i>:]<i>type</i>:<i>name</i>}
+</p></dd>
+
+<dt><b>文字列の値</b></dt>
+<dd>属性値が文字列で文字をエスケープする場合はダブル バックスラッシュ('{@code \\}')を使う必要があります。たとえば、改行は '{@code \\n}'、Unicode の文字は '{@code \\uxxxx}' となります。
+
+</dd>
+</dl>
+
+
+<h2 id="filef">ファイルの特徴</h2>
+
+<p>
+以下のセクションでは、Android の機能がどのようにマニフェスト ファイルに反映されるのかを説明します。
+
+</p>
+
+
+<h3 id="ifs">インテント フィルタ</h3>
+
+<p>
+アプリケーションのコア コンポーネント(アクティビティ、サービス、ブロードキャスト レシーバー)はインテントによって開始されます。
+<i></i>インテントとは、目的とするアクションを記述している情報の束({@link android.content.Intent} オブジェクト)で、使用されるデータやアクションを実行するコンポーネントのカテゴリ、その他の関連する指示を含みます。
+
+
+Android は、インテントに対応する適切なコンポーネントを捜し出し、必要に応じて新しいインスタンスを起動し、それにインテント オブジェクトを渡します。
+
+
+
+</p>
+
+<p>
+コンポーネントはインテント フィルタを使ってその機能(対応できるインテントの種類)を通知します。
+<i></i>Android システムはコンポーネントを起動する前にコンポーネントが対応できるインテントを知っておく必要があるため、インテント フィルタはマニフェスト ファイルの <code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> エレメントで指定されます。
+
+
+
+コンポーネントは、それぞれが異なる機能を記述しているフィルタをいくつでも持つことができます。
+
+</p>
+
+<p>
+対象となるコンポーネントの名前を明示的に指定しているインテントは、コンポーネントを起動します。この場合、フィルタは適用されません。
+対象の名前が指定されていない場合は、コンポーネントのフィルタを通過したインテントのみがコンポーネントを起動できます。
+
+
+</p>
+
+<p>
+インテント フィルタに対してインテント オブジェクトをテストする方法については、「<a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>」ドキュメントをご覧ください。
+
+
+
+</p>
+
+
+<h3 id="iconlabel">アイコンとラベル</h3>
+
+<p>
+エレメントは、小さなアイコンやテキスト ラベルをユーザーに表示するために、{@code icon} と {@code label} 属性を持つ場合があります。
+画面に長い説明文を表示するための {@code description} 属性を持つエレメントもあります。
+
+たとえば、<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> エレメントはこれらすべての属性を持っています。これによって、アプリケーションがユーザーにパーミッションを付与するかどうかを尋ねる際に、ユーザーに対して、パーミッションを示すアイコン、パーミッションの名前、パーミッションについての説明文を提示できます。
+
+
+
+
+
+</p>
+
+<p>
+どの場合においても、属性を含むエレメントに設定されたアイコンとラベルが、そのすべてのサブエレメントの {@code icon} と {@code label} のデフォルト設定となります。
+そのため、<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> エレメントに設定されたアイコンとラベルは、アプリケーションの各コンポーネントのデフォルトのアイコンとラベルとなります。
+
+
+同様に、コンポーネントに設定されたアイコンとラベルは、&mdash; <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> エレメントのように &mdash; それぞれのコンポーネントの <code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> エレメントのデフォルト設定となります。
+
+
+
+
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> エレメントにラベルを設定し、アクティビティとそのインテント フィルタに設定しない場合は、アプリケーション ラベルはアクティビティとインテント フィルタの両方のラベルとして取り扱われます。
+
+
+
+
+</p>
+
+<p>
+インテント フィルタに設定されるアイコンとラベルは、コンポーネントがユーザーに対して提示されるときはいつでも、そのフィルタにより通知されている機能を提供するコンポーネントを示すために使用されます。
+
+たとえば、「{@code android.intent.action.MAIN}」と「{@code android.intent.category.LAUNCHER}」が設定されているフィルタは、アプリケーションを起動するアクティビティを通知しています &mdash; つまり、アプリケーション ランチャーに表示されるということです。
+
+
+
+そのため、このフィルタに設定されているアイコンとラベルがランチャーに表示されるものとなります。
+
+</p>
+
+
+<h3 id="perms">パーミッション</h3>
+
+<p>
+パーミッションは、コードの一部や端末上のデータへのアクセスを制限する機能を提供します。<i></i>
+   誤用や悪用によってユーザーの利用を妨げたり有害な作用をもたらす恐れのある重要なデータやコードを保護したりするための制限を設定します。
+  
+</p>
+
+<p>
+それぞれのパーミッションは一意のラベルで識別されています。通常、ラベルは制限されるアクションを示します。
+以下は、Android により定義されているパーミッションの例です。
+
+</p>
+
+<p style="margin-left: 2em">{@code android.permission.CALL_EMERGENCY_NUMBERS}
+<br/>{@code android.permission.READ_OWNER_DATA}
+<br/>{@code android.permission.SET_WALLPAPER}
+<br/>{@code android.permission.DEVICE_POWER}</p>
+
+<p>
+1 つの機能は、1 つのパーミッションでのみ保護できます。
+</p>
+
+<p>
+アプリケーションがパーミッションにより保護されている機能へのアクセスを必要としている場合は、<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> エレメントをマニフェスト ファイルに記述し、そのパーミッションが必要であることを宣言する必要があります。
+
+
+これによって、アプリケーションが端末にインストールされた際に、インストーラーは、アプリケーションの証明書に署名した関係機関を確認し、場合によってはユーザーに尋ねることで、要求されたパーミッションを付与するかどうかを決定します。 
+ 
+ 
+パーミッションが付与されると、アプリケーションは保護された機能を使用できるようになります。
+
+パーミッションが付与されなかった場合は、アプリケーションは機能にアクセスできず、ユーザーに通知が表示されることもありません。
+ 
+</p>
+
+<p>
+アプリケーションは、パーミッションを使って自身のコンポーネント(アクティビティ、サービス、ブロードキャスト レシーバー、コンテンツ プロバイダ)を保護することもできます。
+Android により定義されているパーミッション({@link android.Manifest.permission android.Manifest.permission} に記載)や他のアプリケーションにより宣言されたパーミッションであればどれでも使用できます。
+
+
+独自のパーミッションを定義することもできます。新しいパーミッションは、<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> エレメントを使って宣言します。
+
+
+たとえば、次のようにアクティビティを保護できます。
+</p>
+
+<pre>
+&lt;manifest . . . &gt;
+    &lt;permission android:name="com.example.project.DEBIT_ACCT" . . . /&gt;
+    &lt;uses-permission android:name="com.example.project.DEBIT_ACCT" /&gt;
+    . . .
+    &lt;application . . .&gt;
+        &lt;activity android:name="com.example.project.FreneticActivity"
+                  android:permission="com.example.project.DEBIT_ACCT"
+                  . . . &gt;
+            . . .
+        &lt;/activity&gt;
+    &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+
+<p>
+この例では、{@code DEBIT_ACCT} パーミッションは <code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> エレメントで宣言されているだけではなく、その使用が <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> エレメントで要求されている点に注意してください。
+
+
+
+
+アプリケーション自身によって保護が設定されている場合でも、アプリケーションの他のコンポーネントが保護されたアクティビティを起動するために、その使用を要求する必要があります。
+
+  
+</p>
+
+<p>
+同じ例で、別の場所で宣言されたパーミッションに {@code permission} 属性が設定されている場合({@code android.permission.CALL_EMERGENCY_NUMBERS} など)は、<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> エレメントを使って再度宣言する必要があります。
+
+
+
+
+その場合も <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> でその使用を要求する必要があります。
+ 
+</p>
+
+<p>
+<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code> エレメントは、コードに定義されるパーミッションの集まりに対するネームスペースを宣言します。
+
+
+<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code> エレメントは、パーミッションのセットに対するラベル(マニフェスト ファイルに <code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> エレメントを使って宣言されたもの、その他の場所で宣言されたものの両方)を定義します。
+
+
+
+これは、ユーザーに提示される際のパーミッションのグループ分けのみに影響します。
+<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code> エレメントでは、パーミッションのグループへの所属は指定されません。グループ名のみが指定されます。
+
+
+パーミッションは、<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> エレメントの <code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code> 属性にグループ名を割り当てることによって、グループに配置されます。
+
+
+
+
+
+</p>
+
+
+<h3 id="libs">ライブラリ</h3>
+
+<p>
+すべてのアプリケーションはデフォルトの Android ライブラリにリンクされています。このライブラリには、Activity、Service、Intent、View、Button、Application、ContentProvider などの共通クラスを含む、アプリケーションをビルドするための基本パッケージが含まれています。
+
+
+
+</p>
+
+<p>
+しかし、独自のライブラリに含まれているパッケージもあります。開発中のアプリケーションがこれらのパッケージのコードを使用している場合は、該当するライブラリにリンクするよう明示的に求める必要があります。
+
+この場合は、マニフェスト ファイルに各ライブラリを指定する <code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code> エレメントが別途含まれている必要があります。
+
+(ライブラリ名は該当するパッケージのドキュメントに記載されています)。
+
+</p>
diff --git a/docs/html-intl/intl/ja/guide/topics/providers/calendar-provider.jd b/docs/html-intl/intl/ja/guide/topics/providers/calendar-provider.jd
new file mode 100644
index 0000000..7b97c30
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/providers/calendar-provider.jd
@@ -0,0 +1,1184 @@
+page.title=カレンダー プロバイダ
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+    <h2>本書の内容</h2>
+    <ol>
+  <li><a href="#overview">基本</a></li>
+  <li><a href="#manifest">ユーザー パーミッション</a></li>
+  <li><a href="#calendar">Calendars テーブル</a>
+<ol>
+      <li><a href="#query">カレンダーへのクエリ</a></li>
+      <li><a href="#modify-calendar">カレンダーの変更</a></li>
+      <li><a href="#insert-calendar">カレンダーの挿入</a></li>
+    </ol>
+  </li>
+  <li><a href="#events">Events テーブル</a>
+<ol>
+      <li><a href="#add-event">イベントの追加</a></li>
+      <li><a href="#update-event">イベントのアップデート</a></li>
+      <li><a href="#delete-event">イベントの削除</a></li>
+    </ol>
+  </li>
+  <li><a href="#attendees">Attendees テーブル</a>
+<ol>
+      <li><a href="#add-attendees">参加者の追加</a></li>
+    </ol>
+  </li>
+  <li><a href="#reminders">Reminders テーブル</a>
+<ol>
+      <li><a href="#add-reminders">リマインダーの追加</a></li>
+    </ol>
+  </li>
+  <li><a href="#instances">Instances テーブル</a>
+  <ol>
+      <li><a href="#query-instances">Instances テーブルへのクエリ</a></li>
+  </ol></li>
+  <li><a href="#intents">カレンダーのインテント</a>
+  <ol>
+      <li><a href="#intent-insert">インテントを使用したイベントの挿入</a></li>
+      <li><a href="#intent-edit">インテントを使用したイベントの編集</a></li>
+      <li><a href="#intent-view">インテントを使用したカレンダー データの参照</a></li>
+    </ol>
+  </li>
+  
+  <li><a href="#sync-adapter">同期アダプタ</a></li>
+</ol>
+
+    <h2>キークラス</h2>
+    <ol>
+      <li>{@link android.provider.CalendarContract.Calendars}</li>
+      <li>{@link android.provider.CalendarContract.Events}</li>
+      <li>{@link android.provider.CalendarContract.Attendees}</li>
+      <li>{@link android.provider.CalendarContract.Reminders}</li>
+    </ol>
+</div>
+</div>
+
+<p>カレンダー プロバイダは、ユーザーのカレンダー イベントのためのリポジトリです。カレンダー プロバイダ API を使用すると、カレンダー、イベント、参加者、リマインダーなどに対するクエリ、挿入、アップデート、削除の操作を実行できます。
+
+</p>
+
+
+<p>カレンダー プロバイダ API は、アプリケーションや同期アダプタで使用できます。ルールは、呼び出しを実行しているプログラムのタイプによって異なります。
+本書では主に、カレンダー プロバイダ API のアプリケーションとしての使用について説明します。
+同期アダプタの場合の違いについては、<a href="#sync-adapter">同期アダプタ</a>をご覧ください。
+
+</p>
+
+
+<p>通常、カレンダー データを読み取ったり書き込んだりするためには、アプリケーションのマニフェストに<a href="#manifest">ユーザー パーミッション</a>で説明している適切なパーミッションが含まれている必要があります。
+
+一般的な操作を簡単に実行できるようにするため、カレンダー プロバイダには、いくつかのインテントが用意されています。これらについては、<a href="#intents">カレンダーのインテント</a>で説明しています。
+
+これらのインテントは、ユーザーをカレンダー アプリケーションに誘導して、イベントを挿入、参照、編集できるようにします。
+ユーザーは、カレンダー アプリケーションを操作した後、元のアプリケーションに戻ります。
+これにより、アプリケーションがパーミッションを要求したり、イベントの参照や作成のためのインターフェースを提供したりする必要がなくなります。
+</p>
+
+<h2 id="overview">基本</h2>
+
+<p><a href="{@docRoot}guide/topics/providers/content-providers.html">コンテンツ プロバイダ</a>は、データを保存してアプリケーションからアクセスできるようにします。
+Android プラットフォームによって提供されるコンテンツ プロバイダ(カレンダー プロバイダを含む)は、一般にリレーショナル データベース モデルに基づくテーブルのセットとしてデータを公開します。このモデルにおいて、各行はレコード、各列は特定のタイプと意味のデータになっています。
+
+アプリケーションと同期アダプタは、ユーザーのカレンダー データを保持するデータベース テーブルの読み取りおよび書き込みアクセスを、カレンダー プロバイダ API を使用して取得できます。
+
+</p>
+
+<p>各コンテンツ プロバイダは、データセットを一意に指定するパブリック URI({@link android.net.Uri} オブジェクトとしてラップされています)を公開します。
+
+複数のデータセット(複数のテーブル)を制御するコンテンツ プロバイダは、データセットごとに個別の URI を公開します。
+プロバイダの URI はすべて、文字列「content://」で始まります。
+これは、コンテンツ プロバイダによって管理されているデータであることを示します。
+カレンダー プロバイダは、クラス(テーブル)それぞれの URI のための定数を定義します。
+URI の形式は <code><em>&lt;class&gt;</em>.CONTENT_URI</code> です。
+たとえば、{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} のようになります。
+</p>
+
+<p>図 1 に、カレンダー プロバイダのデータモデルを図示します。メイン テーブルとそれらを相互にリンクしているフィールドが示されています。
+</p>
+
+<img src="{@docRoot}images/providers/datamodel.png" alt="Calendar Provider Data Model" />
+<p class="img-caption"><strong>図 1.</strong> カレンダー プロバイダのデータモデル。</p>
+
+<p>ユーザーは複数のカレンダーを持つことができ、カレンダーをそれぞれ異なるタイプのアカウント(Google カレンダー、Exchange など)と関連付けることができます。</p>
+
+<p>{@link android.provider.CalendarContract} は、カレンダーのデータモデルとイベント関連の情報を定義します。データは、次に示すいくつかのテーブルに保存されます。</p>
+
+<table>
+  <tr>
+    <th>テーブル(クラス)</th>
+    <th>説明</th>
+  </tr>
+  <tr>
+    <td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
+    
+    <td>このテーブルは、該当するカレンダー固有の情報を保持します。
+各行には、名前、色、同期情報など、1 つのカレンダーに関する詳細が格納されます。
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Events}</td>
+    
+    <td>このテーブルは、該当するイベント固有の情報を保持します。
+各行には、1 つのイベントに関する情報が格納されます&mdash;イベントのタイトル、場所、開始時刻、終了時刻などが該当します。
+
+イベントは、単発だったり繰り返し発生したりすることが考えられます。参加者、リマインダー、拡張プロパティは、個別のテーブルに格納されます。
+これらのテーブルにはそれぞれ、Events テーブルの {@link android.provider.BaseColumns#_ID} を参照する {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} があります。
+
+</td>
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances}</td>
+    
+    <td>このテーブルは、あるイベントの発生ごとの開始時刻と終了時刻を保持します。
+各行は、イベントの発生 1 回を表します。
+単発イベントには、イベントのインスタンスが 1 対 1 で対応します。
+繰り返しのイベントには、そのイベントの複数回の発生それぞれに対応する複数の行が自動生成されます。
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Attendees}</td>
+    
+    <td>このテーブルは、イベントの参加者(ゲスト)の情報を保持します。
+各行は、1 回のイベントの 1 人のゲストを表します。
+ゲストのタイプと、ゲストのイベントへの出欠の回答を指定します。
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Reminders}</td>
+    
+    <td>このテーブルは、アラートや通知のデータを保持します。
+各行は、1 回のイベントの 1 つのアラートを表します。1 つのイベントが複数のリマインダーを持つことができます。
+1 イベントあたりの最大リマインダー数は {@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS} で指定され、指定されたカレンダーを所有する同期アダプタによって設定されます。
+
+
+
+リマインダーは、イベント開始前の分単位で指定され、ユーザーに注意喚起する手段を示す情報を保持します。
+</td>
+  </tr>
+  
+</table>
+
+<p>カレンダー プロバイダ API は、柔軟で効果的な設計になっています。ですが同時に、エンドユーザーにとって使いやすくすることや、カレンダーとそのデータの整合性を保護することが重要です。
+
+次に、そのために API の使用に際して留意すべきことを示します。
+</p>
+
+<ul>
+
+<li><strong>カレンダー イベントの挿入、アップデート、参照</strong>カレンダー プロバイダからイベントの挿入、変更、読み取りを直接実行するためには、適切な<a href="#manifest">パーミッション</a>が必要です。ただし、作成しているのが本格的なカレンダー アプリケーションや同期アダプタではない場合は、そうしたパーミッションを要求する必要はありません。その代わりに、Android のカレンダー アプリケーションがサポートしているインテントを使用し、読み取りと書き込みの操作をそのアプリケーションに引き渡すことができます。インテントを使用すると、アプリケーションがユーザーをカレンダー アプリケーションに誘導し、自動入力されたフォームで目的の操作を実行するようになります。
+操作を完了したユーザーは、アプリケーションに戻されます。一般的な操作をカレンダーを介して実行するようにアプリケーションを設計することで、ユーザーに一貫性のある堅牢なユーザー インターフェースが提供できます。
+
+これが推奨アプローチです。
+詳細については、<a href="#intents">カレンダーのインテント</a>をご覧ください。
+</p>
+
+
+<li><strong>同期アダプタ。</strong>同期アダプタは、ユーザーの端末上にあるカレンダー データを別のサーバーやデータソースと同期します。
+{@link android.provider.CalendarContract.Calendars} テーブルと {@link android.provider.CalendarContract.Events} テーブルには、同期アダプタ用に予約された列があります。プロバイダやアプリケーションがそれらを変更しないようにする必要があります。
+
+
+
+実際には、同期アダプタとしてアクセスしない限り、それらの列は参照できません。
+同期アダプタの詳細については、<a href="#sync-adapter">同期アダプタ</a>をご覧ください。
+</li>
+
+</ul>
+
+
+<h2 id="manifest">ユーザー パーミッション</h2>
+
+<p>カレンダー データを読み込むためには、アプリケーションはマニフェスト ファイルに {@link android.Manifest.permission#READ_CALENDAR} パーミッションを含める必要があります。
+カレンダー データを削除、挿入、アップデートするためには、{@link android.Manifest.permission#WRITE_CALENDAR} パーミッションを含める必要があります。
+
+</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;...&gt;
+    &lt;uses-sdk android:minSdkVersion=&quot;14&quot; /&gt;
+    &lt;uses-permission android:name=&quot;android.permission.READ_CALENDAR&quot; /&gt;
+    &lt;uses-permission android:name=&quot;android.permission.WRITE_CALENDAR&quot; /&gt;
+    ...
+&lt;/manifest&gt;
+</pre>
+
+
+<h2 id="calendar">Calendars テーブル</h2>
+
+<p>{@link android.provider.CalendarContract.Calendars} テーブルには、個々のカレンダーの詳細情報が格納されます。
+次に示す Calendars の列は、アプリケーションと<a href="#sync-adapter">同期アダプタ</a>のどちらからも書き込み可能です。
+サポートされているすべてのフィールドの一覧については、{@link android.provider.CalendarContract.Calendars} のリファレンスをご覧ください。
+
+</p>
+<table>
+  <tr>
+    <th>定数</th>
+    <th>説明</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#NAME}</td>
+    <td>カレンダーの名前。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#CALENDAR_DISPLAY_NAME}</td>
+    <td>ユーザーに表示されるこのカレンダーの名前。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
+    
+    <td>カレンダーが表示対象として選択されているかどうかを示すブール値。値 0 は、このカレンダーに関連付けられているイベントを表示しないことを示します。
+
+値 1 は、このカレンダーに関連付けられているイベントを表示することを示します。
+この値は、{@link android.provider.CalendarContract.Instances} テーブルの行の生成に影響を与えます。
+</td>
+
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
+    
+    <td>カレンダーを同期してそのイベントを端末に格納するかどうかを示すブール値。
+値 0 は、このカレンダーを同期せず、イベントを端末に格納しないことを指定します。
+値 1 は、このカレンダーのイベントを同期し、イベントを端末に格納することを指定します。
+</td>
+  </tr>
+</table>
+
+<h3 id="query">カレンダーへのクエリ</h3>
+
+<p>次の例は、特定のユーザーが所有するカレンダーを取得する方法を示しています。
+簡潔にするため、この例のクエリ操作はユーザー インターフェース スレッド(「メインスレッド」)内に示されています。
+実際には、メインスレッドではなく非同期スレッドで実行してください。
+詳細については、「<a href="{@docRoot}guide/components/loaders.html">ローダ</a>」をご覧ください。
+データを読み込むだけでなく変更する場合は、{@link android.content.AsyncQueryHandler} をご覧ください。
+
+</p>
+
+
+<pre>
+// Projection array. Creating indices for this array instead of doing
+// dynamic lookups improves performance.
+public static final String[] EVENT_PROJECTION = new String[] {
+    Calendars._ID,                           // 0
+    Calendars.ACCOUNT_NAME,                  // 1
+    Calendars.CALENDAR_DISPLAY_NAME,         // 2
+    Calendars.OWNER_ACCOUNT                  // 3
+};
+  
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
+private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
+private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
+  
+
+<div class="sidebox-wrapper"> <div class="sidebox"> <h3>ACCOUNT_TYPE を含める必要がある理由
+</h3> <p>{@link android.provider.CalendarContract.Calendars#ACCOUNT_NAME Calendars.ACCOUNT_NAME} にクエリする場合は、このセクションに {@link android.provider.CalendarContract.Calendars#ACCOUNT_TYPE Calendars.ACCOUNT_TYPE} も含める必要があります。
+
+
+
+これは、指定されたアカウントは <code>ACCOUNT_NAME</code> とその <code>ACCOUNT_TYPE</code> がどちらも与えられることで一意とみなされるからです。
+
+<code>ACCOUNT_TYPE</code> は、そのアカウントが {@link android.accounts.AccountManager} で登録されたときに使用されたアカウント認証システムです。
+
+また、端末アカウントに関連付けられていないカレンダー用に、{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} という特殊なタイプのアカウントがあります。{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} アカウントは同期されません。
+
+
+
+</p> </div> </div> 
+
+
+<p> この例の次の部分では、クエリを作成します。クエリの条件は selection に指定しています。
+この例のクエリは、<code>ACCOUNT_NAME</code> が「sampleuser@google.com」で、<code>ACCOUNT_TYPE</code> が「com.google」で、<code>OWNER_ACCOUNT</code> が「sampleuser@google.com」であるカレンダーを検索します。
+
+
+
+ユーザーが所有しているだけでなく参照したことのあるすべてのカレンダーを確認するには、<code>OWNER_ACCOUNT</code> を省略します。このクエリは、データベース クエリが返した結果セットをトラバースするのに使用できる {@link android.database.Cursor} オブジェクトを返します。
+
+
+
+コンテンツ プロバイダでのクエリの使用については、「<a href="{@docRoot}guide/topics/providers/content-providers.html">コンテンツ プロバイダ</a>」をご覧ください。
+</p>
+
+
+<pre>// Run query
+Cursor cur = null;
+ContentResolver cr = getContentResolver();
+Uri uri = Calendars.CONTENT_URI;   
+String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND (" 
+                        + Calendars.ACCOUNT_TYPE + " = ?) AND ("
+                        + Calendars.OWNER_ACCOUNT + " = ?))";
+String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
+        "sampleuser@gmail.com"}; 
+// Submit the query and get a Cursor object back. 
+cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
+
+<p>次のセクションでは、カーソルを使用して結果セットをステップ単位で移動します。例の冒頭で設定した定数を使用して各フィールドの値を返します。
+
+</p>
+    
+<pre>// Use the cursor to step through the returned records
+while (cur.moveToNext()) {
+    long calID = 0;
+    String displayName = null;
+    String accountName = null;
+    String ownerName = null;
+      
+    // Get the field values
+    calID = cur.getLong(PROJECTION_ID_INDEX);
+    displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
+    accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
+    ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
+              
+    // Do something with the values...
+
+   ...
+}
+</pre>
+  
+<h3 id="modify-calendar">カレンダーの変更</h3>
+
+<p>カレンダーのアップデートを実行する場合、カレンダーの {@link android.provider.BaseColumns#_ID} を、URI({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})の末尾に追加された ID として、または最初の selection 項目として指定できます。
+
+
+
+
+先ほどの selection を <code>&quot;_id=?&quot;</code> で始め、最初の <code>selectionArg</code> をカレンダーの {@link android.provider.BaseColumns#_ID} にする必要があります。
+
+
+URL に含まれる ID をエンコードすることでも、アップデートを実行できます。この例では、カレンダーの表示名をこの({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()} を使用する)アプローチで変更しています。
+
+
+
+</p>
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long calID = 2;
+ContentValues values = new ContentValues();
+// The new display name for the calendar
+values.put(Calendars.CALENDAR_DISPLAY_NAME, &quot;Trevor's Calendar&quot;);
+Uri updateUri = ContentUris.withAppendedId(Calendars.CONTENT_URI, calID);
+int rows = getContentResolver().update(updateUri, values, null, null);
+Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);</pre>
+
+<h3 id="insert-calendar">カレンダーの挿入</h2>
+
+<p>カレンダーは主に同期アダプタで管理するように設計されているため、新しいカレンダーは必ず同期アダプタとして挿入してください。
+ほとんどの場合、アプリケーションはカレンダーに対し、表示名の変更のような表面的な変更しかできません。
+アプリケーションがローカル カレンダーを作成する必要がある場合は、{@link android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} として {@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} を使用し、カレンダーの挿入を同期アダプタとして実行することで作成できます。{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} は、端末アカウントと関連付けられていないカレンダー用の特殊なアカウント タイプです。
+
+
+
+
+
+
+このタイプのカレンダーは、サーバーと同期されません。同期アダプタの詳細については、<a href="#sync-adapter">同期アダプタ</a>をご覧ください。
+</p>
+
+<h2 id="events">Events テーブル</h2>
+
+<p>{@link android.provider.CalendarContract.Events} テーブルには、個々のイベントの詳細情報が格納されます。
+
+イベントを追加、アップデート、削除するためには、アプリケーションは<a href="#manifest">マニフェスト ファイル</a>に {@link android.Manifest.permission#WRITE_CALENDAR} パーミッションを含める必要があります。
+</p>
+
+<p>次に示す Events の列は、アプリケーションと同期アダプタのどちらからも書き込み可能です。
+サポートされているすべてのフィールドの一覧については、{@link android.provider.CalendarContract.Events} のリファレンスをご覧ください。
+</p>
+
+<table>
+  <tr>
+    <th>定数</th>
+    <th>説明</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#CALENDAR_ID}</td>
+    <td>イベントが属するカレンダーの {@link android.provider.BaseColumns#_ID}。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#ORGANIZER}</td>
+    <td>イベントの主催者(所有者)のメールアドレス。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#TITLE}</td>
+    <td>イベントのタイトル。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION}</td>
+    <td>イベントが開催される場所。 </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION}</td>
+    <td>イベントの説明。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DTSTART}</td>
+    <td>エポックからの UTC ミリ秒単位で表現されたイベント開始時刻。 </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DTEND}</td>
+    <td>エポックからの UTC ミリ秒単位で表現されたイベント終了時刻。 </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}</td>
+    <td>イベントのタイムゾーン。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_END_TIMEZONE}</td>
+    <td>イベントの終了時刻のタイムゾーン。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
+    
+    <td><a href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RFC5545</a> 形式でのイベントの期間。たとえば、<code>&quot;PT1H&quot;</code> という値はイベントが 1 時間であること、<code>&quot;P2W&quot;</code> という値は期間が 2 週間であることを示します。
+
+
+ </td>
+
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
+    
+    <td>値 1 は、そのイベントがローカルのタイムゾーンで定義された終日を占めることを示します。
+値 0 は、1 日のどこかで始まって終わる定例のイベントであることを示します。
+</td>
+
+    
+  </tr>
+  
+  
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
+    
+    <td>イベント形式の繰り返し発生ルール。たとえば、<code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code> のようになります。
+その他の例については、<a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">こちら</a>をご覧ください。
+</td>
+    
+  </tr>
+  
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
+    <td>イベントの繰り返し発生日。通常、{@link android.provider.CalendarContract.EventsColumns#RDATE} は {@link android.provider.CalendarContract.EventsColumns#RRULE} と組み合わせて、繰り返し発生全体を定義するのに使用します。
+
+
+
+詳細については、<a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.2">RFC5545 の仕様</a>をご覧ください。</td>
+</tr>
+ 
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY}</td>
+    
+    <td>このイベントを埋まっている時間に数えるか、それともスケジュールのやり直しが利く空き時間とみなすか。
+ </td>
+    
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
+    <td>ゲストがイベントを変更できるかどうか。 </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_INVITE_OTHERS}</td>
+    <td>ゲストが他のゲストを招待できるかどうか。 </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_SEE_GUESTS}</td>
+    <td>ゲストが他の参加者のリストを参照できるかどうか。</td>
+  </tr>
+</table>
+
+<h3 id="add-event">イベントの追加</h3>
+
+<p>アプリケーションが新しいイベントを挿入する場合は、{@link android.content.Intent#ACTION_INSERT INSERT} インテントを使用することをお勧めします。詳細については、<a href="#intent-insert">インテントを使用したイベントの挿入</a>をご覧ください。
+ただし、必要があればイベントを直接挿入できます。
+ここではその方法について説明します。
+</p>
+
+
+<p>新しいイベントを挿入するためのルールは次のとおりです。 </p>
+<ul>
+
+  <li>{@link android.provider.CalendarContract.EventsColumns#CALENDAR_ID} と {@link android.provider.CalendarContract.EventsColumns#DTSTART} を含める必要があります。
+
+</li>
+
+<li>{@link android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE} を含める必要があります。
+システムにインストールされているタイムゾーン ID のリストを取得するには、{@link java.util.TimeZone#getAvailableIDs()} を使用します。
+
+<a href="#intent-insert">インテントを使用したイベントの挿入</a>で説明しているように、{@link android.content.Intent#ACTION_INSERT INSERT} インテントを使用してイベントを挿入している場合、このルールは該当しません&mdash;その場合はデフォルトのタイムゾーンが指定されます。
+
+
+</li>
+  
+  <li>繰り返されないイベントには、{@link android.provider.CalendarContract.EventsColumns#DTEND} を含める必要があります。
+ </li>
+  
+  
+  <li>繰り返されるイベントには、{@link android.provider.CalendarContract.EventsColumns#RRULE} と {@link android.provider.CalendarContract.EventsColumns#RDATE} に加えて {@link android.provider.CalendarContract.EventsColumns#DURATION} を含める必要があります。
+
+
+<a href="#intent-insert">インテントを使用したイベントの挿入</a>で説明しているように、{@link android.content.Intent#ACTION_INSERT INSERT} インテントを使用してイベントを挿入している場合、このルールは該当しません&mdash;その場合は、{@link android.provider.CalendarContract.EventsColumns#RRULE} を {@link android.provider.CalendarContract.EventsColumns#DTEND} と {@link android.provider.CalendarContract.EventsColumns#DTSTART} と組み合わせて使用でき、カレンダー アプリケーションはこれを自動で期間に変換します。
+
+
+
+
+</li>
+  
+</ul>
+
+<p>イベントの挿入の例を次に示します。簡潔にするため、この例は UI スレッドで実行されています。
+実際には、挿入やアップデートは非同期スレッドで実行して、アクションをバックグラウンド スレッドに移してください。
+詳細については、{@link android.content.AsyncQueryHandler} をご覧ください。
+</p>
+
+
+<pre>
+long calID = 3;
+long startMillis = 0; 
+long endMillis = 0;     
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2012, 9, 14, 7, 30);
+startMillis = beginTime.getTimeInMillis();
+Calendar endTime = Calendar.getInstance();
+endTime.set(2012, 9, 14, 8, 45);
+endMillis = endTime.getTimeInMillis();
+...
+
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Events.DTSTART, startMillis);
+values.put(Events.DTEND, endMillis);
+values.put(Events.TITLE, &quot;Jazzercise&quot;);
+values.put(Events.DESCRIPTION, &quot;Group workout&quot;);
+values.put(Events.CALENDAR_ID, calID);
+values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");
+Uri uri = cr.insert(Events.CONTENT_URI, values);
+
+// get the event ID that is the last element in the Uri
+long eventID = Long.parseLong(uri.getLastPathSegment());
+// 
+// ... do something with event ID
+//
+//</pre>
+
+<p class="note"><strong>注:</strong> イベントの作成後にイベント ID を取得していることに注目してください。
+これがイベント ID を取得する最も簡単な方法です。他のカレンダー操作を実行するためにイベント ID が必要になることはよくあります&mdash;イベントに対する参加者やリマインダーの追加などが該当します。
+
+</p>
+
+
+<h3 id="update-event">イベントのアップデート</h3>
+
+<p>アプリケーションでユーザーによるイベントの編集を許可する場合は、{@link android.content.Intent#ACTION_EDIT EDIT} インテントを使用することをお勧めします。詳細については、<a href="#intent-edit">インテントを使用したイベントの挿入</a>をご覧ください。ただし、イベントは必要に応じて直接編集できます。
+
+
+イベントのアップデートを実行する場合は、イベントの <code>_ID</code> を、URI({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})の末尾に追加された ID として、または前出の selection の最初の項目として指定できます。
+
+
+
+前出の selection を <code>&quot;_id=?&quot;</code> で始め、最初の <code>selectionArg</code> をカレンダーの <code>_ID</code> にする必要があります。
+
+ID なしの selection を使用してアップデートすることもできます。次に、イベントのアップデートの例を示します。
+
+ここでは、{@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()} を使用するアプローチでイベントのタイトルを変更しています。
+
+</p>
+
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long eventID = 188;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+Uri updateUri = null;
+// The new title for the event
+values.put(Events.TITLE, &quot;Kickboxing&quot;); 
+updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+int rows = getContentResolver().update(updateUri, values, null, null);
+Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);  </pre>
+
+<h3 id="delete-event">イベントの削除</h3>
+
+<p>イベントは、目的のイベントの {@link android.provider.BaseColumns#_ID} を URI の末尾に追加する ID として使用するか、標準的な選択を使用して削除できます。
+
+ID の追加で削除を実行する場合、選択はできません。削除には、アプリケーションとして実行する方法と同期アダプタとして実行する方法の 2 種類があります。
+アプリケーションとしての削除では、削除される<em></em>列が 1 に設定されます。
+このフラグは同期アダプタに対して、その行が削除されたことを通知し、この削除をサーバーに通知するよう指示します。
+
+同期アダプタとしての削除では、すべての関連データとともにデータベースからイベントが削除されます。
+次の例では、アプリケーションがイベントをその {@link android.provider.BaseColumns#_ID} を使用して削除しています。
+</p>
+
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long eventID = 201;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+Uri deleteUri = null;
+deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+int rows = getContentResolver().delete(deleteUri, null, null);
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);  
+</pre>
+
+<h2 id="attendees">Attendees テーブル</h2>
+
+<p>{@link android.provider.CalendarContract.Attendees} テーブルの各行は、あるイベントの 1 人の参加者ないしゲストを表します。
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} を呼び出すと、指定された {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} を持つイベントの参加者リストが返されます。
+
+
+この {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} は特定のイベントの {@link android.provider.BaseColumns#_ID} と一致している必要があります。
+
+
+</p> 
+
+<p>次の表に、書き込み可能なフィールドを示します。
+新しい参加者を挿入する際には、<code>ATTENDEE_NAME</code> を除くすべてを含める必要があります。
+
+</p>
+
+
+<table>
+  <tr>
+    <th>定数</th>
+    <th>説明</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}</td>
+    <td>イベントの ID。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_NAME}</td>
+    <td>参加者の名前。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_EMAIL}</td>
+    <td>参加者のメールアドレス。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_RELATIONSHIP}</td>
+    <td><p>参加者のイベントに対する関係。次のどれかです。</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_ATTENDEE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_NONE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_ORGANIZER}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_PERFORMER}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_SPEAKER}</li>
+    </ul>
+    </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_TYPE}</td>
+    <td><p>参加者のタイプ。次のどれかです。 </p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#TYPE_REQUIRED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#TYPE_OPTIONAL}</li>
+    </ul></td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS}</td>
+    <td><p>参加者の出席ステータス。次のどれかです。</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_ACCEPTED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_DECLINED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_INVITED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_NONE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_TENTATIVE}</li>
+    </ul></td>
+  </tr>
+</table>
+
+<h3 id="add-attendees">参加者の追加</h3>
+
+<p>次の例では、あるイベントに 1 人の参加者を挿入しています。{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} は必須です。
+
+</p>
+
+<pre>
+long eventID = 202;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Attendees.ATTENDEE_NAME, &quot;Trevor&quot;);
+values.put(Attendees.ATTENDEE_EMAIL, &quot;trevor@example.com&quot;);
+values.put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ATTENDEE);
+values.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_OPTIONAL);
+values.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_INVITED);
+values.put(Attendees.EVENT_ID, eventID);
+Uri uri = cr.insert(Attendees.CONTENT_URI, values);
+</pre>
+
+<h2 id="reminders">Reminders テーブル</h2>
+
+<p>{@link android.provider.CalendarContract.Reminders} テーブルの各行は、あるイベントの 1 つのリマインダーを表します。
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} を呼び出すと、指定された {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} を持つイベントのリマインダー リストが返されます。
+
+
+</p>
+
+
+<p>次の表に、リマインダーに関する書き込み可能なフィールドを示します。新しいリマインダーを挿入する際には、これらをすべて含める必要があります。
+同期アダプタは、サポートするリマインダーのタイプを {@link android.provider.CalendarContract.Calendars} テーブルで指定しています。
+
+詳細については、{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS} をご覧ください。
+
+</p>
+
+
+<table>
+  <tr>
+    <th>定数</th>
+    <th>説明</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#EVENT_ID}</td>
+    <td>イベントの ID。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#MINUTES}</td>
+    <td>リマインダーが通知されるまでの分単位の時間。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#METHOD}</td>
+    <td><p>アラーム手段。サーバーに設定されます。次のどれかです。</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_ALERT}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_DEFAULT}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_EMAIL}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_SMS}</li>
+    </ul></td>
+  </tr>
+</table>
+
+<h3 id="add-reminders">リマインダーの追加</h3>
+
+<p>この例では、イベントにリマインダーを追加します。このリマインダーは、イベントの 15 分前に通知されます。
+</p>
+<pre>
+long eventID = 221;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Reminders.MINUTES, 15);
+values.put(Reminders.EVENT_ID, eventID);
+values.put(Reminders.METHOD, Reminders.METHOD_ALERT);
+Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
+
+<h2 id="instances">Instances テーブル</h2>
+
+<p>{@link android.provider.CalendarContract.Instances} テーブルは、あるイベントの発生の開始時刻と終了時刻を保持します。
+
+各行は、イベントの発生 1 回を表します。
+Instances テーブルは書き込みできません。イベントの発生をクエリする手段を提供するためだけのものです。
+ </p>
+
+<p>次の表に、インスタンスに関してクエリできるフィールドの一部を示します。タイムゾーンは {@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE} と {@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES} で定義されます。
+
+
+
+</p>
+
+
+<table>
+  <tr>
+    <th>定数</th>
+    <th>説明</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#BEGIN}</td>
+    <td>インスタンスの開始時刻(UTC ミリ秒単位)。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END}</td>
+    <td>インスタンスの終了時刻(UTC ミリ秒単位)。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
+    
+    <td>インスタンスの、カレンダーのタイムゾーンにおけるユリウス暦での終了日。
+ 
+    
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
+    
+    <td>カレンダーのタイムゾーンにおける午前零時を基準にしたインスタンスの終了分。
+</td>
+    
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
+    <td>このインスタンスのイベントの <code>_ID</code>。</td>
+  </tr>
+    <tr>
+    <td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
+    <td>インスタンスの、カレンダーのタイムゾーンにおけるユリウス暦での開始日。 
+ </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
+    
+    <td>カレンダーのタイムゾーンにおける午前零時を基準にしたインスタンスの開始分。
+ 
+</td>
+    
+  </tr>
+
+</table>
+
+<h3 id="query-instances">Instances テーブルへのクエリ</h3>
+
+<p>Instances テーブルにクエリするには、クエリの範囲を示す時刻を URI に指定する必要があります。この例で、{@link android.provider.CalendarContract.Instances} は {@link android.provider.CalendarContract.EventsColumns} インターフェースの実装を介して {@link android.provider.CalendarContract.EventsColumns#TITLE} フィールドへのアクセスを取得します。
+
+
+
+言い換えると、{@link android.provider.CalendarContract.EventsColumns#TITLE} はデータベースの参照に対して返されているのであって、{@link android.provider.CalendarContract.Instances} テーブルそのものへのクエリに対して返されているのではありません。
+
+
+
+</p>
+
+<pre>
+private static final String DEBUG_TAG = "MyActivity";
+public static final String[] INSTANCE_PROJECTION = new String[] {
+    Instances.EVENT_ID,      // 0
+    Instances.BEGIN,         // 1
+    Instances.TITLE          // 2
+  };
+  
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_BEGIN_INDEX = 1;
+private static final int PROJECTION_TITLE_INDEX = 2;
+...
+
+// Specify the date range you want to search for recurring
+// event instances
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2011, 9, 23, 8, 0);
+long startMillis = beginTime.getTimeInMillis();
+Calendar endTime = Calendar.getInstance();
+endTime.set(2011, 10, 24, 8, 0);
+long endMillis = endTime.getTimeInMillis();
+  
+Cursor cur = null;
+ContentResolver cr = getContentResolver();
+
+// The ID of the recurring event whose instances you are searching
+// for in the Instances table
+String selection = Instances.EVENT_ID + " = ?";
+String[] selectionArgs = new String[] {"207"};
+
+// Construct the query with the desired date range.
+Uri.Builder builder = Instances.CONTENT_URI.buildUpon();
+ContentUris.appendId(builder, startMillis);
+ContentUris.appendId(builder, endMillis);
+
+// Submit the query
+cur =  cr.query(builder.build(), 
+    INSTANCE_PROJECTION, 
+    selection, 
+    selectionArgs, 
+    null);
+   
+while (cur.moveToNext()) {
+    String title = null;
+    long eventID = 0;
+    long beginVal = 0;    
+    
+    // Get the field values
+    eventID = cur.getLong(PROJECTION_ID_INDEX);
+    beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
+    title = cur.getString(PROJECTION_TITLE_INDEX);
+              
+    // Do something with the values. 
+    Log.i(DEBUG_TAG, "Event:  " + title); 
+    Calendar calendar = Calendar.getInstance();
+    calendar.setTimeInMillis(beginVal);  
+    DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
+    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));    
+    }
+ }</pre>
+
+<h2 id="intents">カレンダーのインテント</h2>
+<p>アプリケーションがカレンダー データの読み取りや書き込みを実行するのに<a href="#manifest">パーミッション</a>は要りません。その代わり、Android のカレンダー アプリケーションがサポートするインテントを使用し、読み取りと書き込みの操作をそのアプリケーションに引き渡します。次の表に、カレンダー プロバイダによってサポートされているインテントを示します。</p>
+<table>
+  <tr>
+    <th>アクション</th>
+    <th>URI</th>
+
+    <th>説明</th>
+    <th>エクストラ</th>
+  </tr>
+  <tr>
+    <td><br>
+    {@link android.content.Intent#ACTION_VIEW VIEW} <br></td>
+    <td><p><code>content://com.android.calendar/time/&lt;ms_since_epoch&gt;</code></p>
+    URI は、{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI} を使用しても参照できます。
+このインテントの使用例については、<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">インテントを使用したカレンダー データの参照</a>をご覧ください。
+ 
+
+    </td>
+    <td><code>&lt;ms_since_epoch&gt;</code> に指定された時刻でカレンダーを開きます。</td>
+    <td>なし</td>
+  </tr>
+  <tr>
+    <td><p>{@link android.content.Intent#ACTION_VIEW VIEW} </p>
+
+     </td>
+    <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
+    
+    URI は、{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} を使用しても参照できます。
+このインテントの使用例については、<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">インテントを使用したカレンダー データの参照</a>をご覧ください。
+
+    
+    </td>
+    <td><code>&lt;event_id&gt;</code> で指定されたイベントを参照します。</td>
+
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}<br>
+      <br>
+      <br>
+    {@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}</td>
+  </tr>
+
+  <tr>
+    <td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
+    <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
+    
+  URI は、{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} を使用しても参照できます。
+このインテントの使用例については、<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">インテントを使用したカレンダー データの編集</a>をご覧ください。
+
+    
+    
+    </td>
+    <td><code>&lt;event_id&gt;</code> で指定されたイベントを編集します。</td>
+
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}<br>
+      <br>
+      <br>
+    {@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}</td>
+  </tr>
+
+  <tr>
+    <td>{@link android.content.Intent#ACTION_EDIT EDIT} <br>
+    <br>
+    {@link android.content.Intent#ACTION_INSERT INSERT} </td>
+    <td><p><code>content://com.android.calendar/events</code></p>
+    
+   URI は、{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} を使用しても参照できます。
+このインテントの使用例については、<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">インテントを使用したカレンダー データの挿入</a>をご覧ください。
+
+    
+    </td>
+
+    <td>イベントを作成します。</td>
+    <td>次の表に示された任意のエクストラ。</td>
+  </tr>
+</table>
+
+<p>次の表に、カレンダー プロバイダによってサポートされているインテント エクストラを示します。
+</p>
+<table>
+  <tr>
+    <th>インテント エクストラ</th>
+    <th>説明</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#TITLE Events.TITLE}</td>
+    <td>イベントの名前。</td>
+  </tr>
+  <tr>
+  
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}
+</td>
+    <td>イベントの開始時刻(エポックからのミリ秒単位)。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}
+</td>
+    
+    <td>イベントの終了時刻(エポックからのミリ秒単位)。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY CalendarContract.EXTRA_EVENT_ALL_DAY}
+</td>
+    
+    <td>イベントが終日かどうかを示すブール値。使用できる値は <code>true</code> または <code>false</code> です。
+</td> </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION Events.EVENT_LOCATION}
+</td>
+    
+    <td>イベントの場所。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION Events.DESCRIPTION}
+</td>
+    
+    <td>イベントの説明。</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}</td>
+    <td>招待者のメールアドレス(コンマ区切りリスト形式)。</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.provider.CalendarContract.EventsColumns#RRULE Events.RRULE}</td>
+    <td>イベントの反復ルール。</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL Events.ACCESS_LEVEL}
+</td>
+    
+    <td>イベントが公開か非公開か。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY Events.AVAILABILITY}
+</td>
+    
+    <td>このイベントを埋まっている時間に数えるか、それともスケジュールのやり直しが利く空き時間とみなすか。</td>
+    
+</table> 
+<p>次のセクションでは、これらのインテント使用方法を説明します。</p>
+
+
+<h3 id="intent-insert">インテントを使用したイベントの挿入</h3>
+
+<p>{@link android.content.Intent#ACTION_INSERT INSERT} インテントを使用すると、アプリケーションはイベント挿入タスクをカレンダーそのものに引き渡すことができます。このアプローチでは、アプリケーションは {@link android.Manifest.permission#WRITE_CALENDAR} パーミッションを<a href="#manifest">マニフェスト ファイル</a>に含める必要さえなくなります。
+
+
+</p>
+
+  
+<p>このアプローチのアプリケーションをユーザーが実行すると、アプリケーションによってユーザーがカレンダーに誘導されイベントを追加できるようになります。
+{@link android.content.Intent#ACTION_INSERT INSERT} インテントは、追加フィールドを使用して、カレンダーに格納されている詳細情報をフォームに自動入力します。
+
+それに対して、ユーザーはイベントのキャンセル、必要に応じたイベントの編集、イベントのカレンダーへの保存ができます。
+
+</p>
+  
+
+
+<p>次に示すのは、2012 年 1 月 19 日の午前 7:30 から 午前 8:30 までのイベントをスケジュールするコード スニペットです。
+このコード スニペットの以下の点に注目してください。</p>
+
+<ul>
+  <li>URI として {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} を指定しています。
+</li>
+  
+  <li>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME} と {@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME} の各エクストラ フィールドを使用して、イベントの時間をフォームに自動入力しています。
+
+
+
+
+これらの値は、エポックからの UTC ミリ秒単位であることが必要です。
+</li>
+  
+  <li>{@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL} エクストラ フィールドを使用して、参加者をメールアドレスで示したコンマ区切りリストを指定しています。
+</li>
+  
+</ul>
+<pre>
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2012, 0, 19, 7, 30);
+Calendar endTime = Calendar.getInstance();
+endTime.set(2012, 0, 19, 8, 30);
+Intent intent = new Intent(Intent.ACTION_INSERT)
+        .setData(Events.CONTENT_URI)
+        .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())
+        .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis())
+        .putExtra(Events.TITLE, &quot;Yoga&quot;)
+        .putExtra(Events.DESCRIPTION, &quot;Group class&quot;)
+        .putExtra(Events.EVENT_LOCATION, &quot;The gym&quot;)
+        .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY)
+        .putExtra(Intent.EXTRA_EMAIL, &quot;rowan@example.com,trevor@example.com&quot;);
+startActivity(intent);
+</pre>
+
+<h3 id="intent-edit">インテントを使用したイベントの編集</h3>
+
+<p>イベントは、<a href="#update-event">イベントのアップデート</a>で説明したように、直接アップデートできます。ただし、{@link android.content.Intent#ACTION_EDIT EDIT} インテントを使用すれば、パーミッションのないアプリケーションが、カレンダー アプリケーションにイベント編集を引き渡すことができます。カレンダーでのイベント編集を終えたユーザーは、元のアプリケーションに戻ります。
+
+
+
+</p> <p>次の例のインテントは、指定されたイベントの新しいタイトルを設定して、ユーザーがそのイベントをカレンダーで編集できるようにしています。
+</p>
+
+
+<pre>long eventID = 208;
+Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+Intent intent = new Intent(Intent.ACTION_EDIT)
+    .setData(uri)
+    .putExtra(Events.TITLE, &quot;My New Title&quot;);
+startActivity(intent);</pre>
+
+<h3 id="intent-view">インテントを使用したカレンダー データの参照</h3>
+<p>カレンダー プロバイダには、{@link android.content.Intent#ACTION_VIEW VIEW} インテントを使用する次の 2 つの方法が用意されています。</p>
+<ul>
+  <li>特定の日付のカレンダーを開く方法。</li>
+  <li>イベントを参照する方法。</li>
+
+</ul>
+<p>次の例は、特定の日付のカレンダーを開く方法を示しています。</p>
+<pre>// A date-time specified in milliseconds since the epoch.
+long startMillis;
+...
+Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
+builder.appendPath(&quot;time&quot;);
+ContentUris.appendId(builder, startMillis);
+Intent intent = new Intent(Intent.ACTION_VIEW)
+    .setData(builder.build());
+startActivity(intent);</pre>
+
+<p>次の例は、参照するためにイベントを開く方法を示しています。</p>
+<pre>long eventID = 208;
+...
+Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+Intent intent = new Intent(Intent.ACTION_VIEW)
+   .setData(uri);
+startActivity(intent);
+</pre>
+
+
+<h2 id="sync-adapter">同期アダプタ</h2>
+
+
+<p>アプリケーションと同期アダプタとの間で、カレンダー プロバイダにアクセスする方法の違いは、次のいくつかだけです。
+</p>
+
+<ul>
+  <li>同期アダプタは、{@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER} を <code>true</code> に設定して、それが同期アダプタであることを示す必要があります。</li>
+  
+  
+  <li>同期アダプタは、{@link android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME} と {@link android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} をクエリ パラメータとして URI に指定する必要があります。
+
+ </li>
+  
+  <li>同期アダプタは、アプリケーションやウィジェットより多くの列に書き込みアクセスできます。
+  たとえば、アプリケーションで変更できるのは、名前、表示名、可視性の設定、カレンダーが同期対象かどうかなど、カレンダーの特性の一部のみです。
+
+それに対し、同期アダプタはこれらの列の他に、カレンダーの色、タイムゾーン、アクセスレベル、場所など、数多くにアクセスできます。ただし、<code>ACCOUNT_NAME</code> と <code>ACCOUNT_TYPE</code> で指定されるものだけに限定されます。
+
+
+</li> </ul>
+
+<p>次に示すヘルパー メソッドを使用すると、同期アダプタで使用するための URI が返されます。</p>
+<pre> static Uri asSyncAdapter(Uri uri, String account, String accountType) {
+    return uri.buildUpon()
+        .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,&quot;true&quot;)
+        .appendQueryParameter(Calendars.ACCOUNT_NAME, account)
+        .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
+ }
+</pre>
+<p>同期アダプタの実装例(カレンダーに特化されたものではありません)については、<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a> をご覧ください。
+
diff --git a/docs/html-intl/intl/ja/guide/topics/providers/contacts-provider.jd b/docs/html-intl/intl/ja/guide/topics/providers/contacts-provider.jd
new file mode 100644
index 0000000..e12b62f
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/providers/contacts-provider.jd
@@ -0,0 +1,2356 @@
+page.title=連絡先プロバイダ
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<h2>クイックビュー</h2>
+<ul>
+    <li>人の情報に関する Android のリポジトリ。</li>
+    <li>
+        ウェブとの同期。
+    </li>
+    <li>
+        ソーシャル ストリーム データの統合。
+    </li>
+</ul>
+<h2>本書の内容</h2>
+<ol>
+    <li>
+        <a href="#InformationTypes">連絡先プロバイダの構成</a>
+    </li>
+    <li>
+        <a href="#RawContactBasics">未加工連絡先</a>
+    </li>
+    <li>
+        <a href="#DataBasics">データ</a>
+    </li>
+    <li>
+        <a href="#ContactBasics">連絡先</a>
+    </li>
+    <li>
+        <a href="#Sources">同期アダプタからのデータ</a>
+    </li>
+    <li>
+        <a href="#Permissions">必要なパーミッション</a>
+    </li>
+    <li>
+        <a href="#UserProfile">ユーザー プロファイル</a>
+    </li>
+    <li>
+        <a href="#ContactsProviderMetadata">連絡先プロバイダのメタデータ</a>
+    </li>
+    <li>
+        <a href="#Access">連絡先プロバイダへのアクセス</a>
+    <li>
+    </li>
+    <li>
+        <a href="#SyncAdapters">連絡先プロバイダの同期アダプタ</a>
+    </li>
+    <li>
+        <a href="#SocialStream">ソーシャル ストリーム データ</a>
+    </li>
+    <li>
+        <a href="#AdditionalFeatures">連絡先プロバイダの追加機能</a>
+    </li>
+</ol>
+<h2>キークラス</h2>
+<ol>
+    <li>{@link android.provider.ContactsContract.Contacts}</li>
+    <li>{@link android.provider.ContactsContract.RawContacts}</li>
+    <li>{@link android.provider.ContactsContract.Data}</li>
+    <li>{@code android.provider.ContactsContract.StreamItems}</li>
+</ol>
+<h2>関連サンプル</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}resources/samples/ContactManager/index.html">        Contact Manager        </a>
+
+
+    </li>
+    <li>
+        <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">        サンプル同期アダプタ</a>
+
+    </li>
+</ol>
+<h2>関連ドキュメント</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">        コンテンツ プロバイダの基本        </a>
+
+
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    連絡先プロバイダは、人のデータに関する端末の中央リポジトリを管理する、柔軟で効果的な Android コンポーネントです。
+連絡先プロバイダは、端末の連絡先アプリケーションに表示されるデータのソースであり、さらに独自アプリケーションで連絡先プロバイダのデータにアクセスし、端末とオンライン サービスとの間でデータを転送することもできます。
+
+このプロバイダは幅広いデータソースに対応しており、各人に関してできるだけ多くのデータを管理しようとするため、複雑な構造をしています。
+
+そのため、連絡先プロバイダの API には、データの取得と変更をどちらもやりやすくするクラスやインターフェースが多数用意されています。
+
+
+</p>
+<p>
+    このガイドでは、以下について説明します。
+</p>
+    <ul>
+        <li>
+            プロバイダの基本構造。
+        </li>
+        <li>
+            プロバイダからのデータの取得方法。
+        </li>
+        <li>
+            プロバイダでのデータの変更方法。
+        </li>
+        <li>
+            サーバーから連絡先プロバイダとデータを同期する同期アダプタの作成方法。
+
+        </li>
+    </ul>
+<p>
+    このガイドは、Android のコンテンツ プロバイダの基礎知識がある読者を対象としています。Android のコンテンツ プロバイダについて詳しくは、「<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">コンテンツ プロバイダの基本</a>」をご覧ください。
+
+
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">サンプル同期アダプタ</a> サンプルアプリは、同期アダプタを使用して連絡先プロバイダと Google ウェブ サービスでホストされているサンプル アプリケーションとの間でデータを転送する例です。
+
+
+
+</p>
+<h2 id="InformationTypes">連絡先プロバイダの構成</h2>
+<p>
+    連絡先プロバイダは、Android のコンテンツ プロバイダ コンポーネントです。人に関する 3 種類のデータを保持しており、それぞれがコンテンツ プロバイダによって提供される 1 つのテーブルに対応しています。この構成を図 1 に示します。
+
+
+</p>
+<img src="{@docRoot}images/providers/contacts_structure.png" alt="" height="364" id="figure1" />
+<p class="img-caption">
+  <strong>図 1.</strong> 連絡先プロバイダのテーブル構造。
+</p>
+<p>
+    この 3 つのテーブルは、一般にそれぞれのコントラクト クラス名で呼ばれます。各クラスは、テーブルによって使用されるコンテンツ URI、列名、列の値のための定数を定義しています。
+
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.Contacts} テーブル
+    </dt>
+    <dd>
+        各行は、未加工連絡先の行の集約に基づいて異なる人を表します。
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.RawContacts} テーブル
+    </dt>
+    <dd>
+        各行には、ユーザーのアカウントとタイプに固有の、人に関するデータの概要が格納されています。
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.Data} テーブル
+    </dt>
+    <dd>
+        各行には、メールアドレスや電話番号など、未加工連絡先の詳細情報が格納されています。
+    </dd>
+</dl>
+<p>
+    {@link android.provider.ContactsContract} に含まれるコントラクト クラスによって表現される他のテーブルは補助テーブルであり、連絡先プロバイダがその操作を管理したり、端末の連絡先アプリや電話アプリの特定機能をサポートしたりするために使用します。
+
+
+</p>
+<h2 id="RawContactBasics">未加工連絡先</h2>
+<p>
+    未加工連絡先は、アカウント タイプとアカウント名の 1 つのペアを使用して得られる人に関するデータです。
+連絡先プロバイダでは、1 人に関するデータのソースとして複数のオンライン サーバーを使用できるため、同じ個人に対して複数の未加工連絡先が許されます。
+
+    未加工連絡先が複数ある場合、ユーザーは同じアカウント タイプの複数のアカウントから取得したその人のデータを組み合わせることができます。
+
+</p>
+<p>
+    未加工連絡先データの大半は、{@link android.provider.ContactsContract.RawContacts} テーブルには格納されません。
+その代わり、{@link android.provider.ContactsContract.Data} テーブルの 1 つまたは複数の行に格納されています。
+各データ行には列 {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID Data.RAW_CONTACT_ID} があり、親 {@link android.provider.ContactsContract.RawContacts} 行の {@code android.provider.BaseColumns#_ID RawContacts._ID} 値が格納されています。
+
+
+
+</p>
+<h3 id="RawContactsColumns">重要な未加工連絡先列</h3>
+<p>
+    表 1 に、{@link android.provider.ContactsContract.RawContacts} の重要な列を示します。
+表の後の注もお読みください。
+</p>
+<p class="table-caption" id="table1">
+    <strong>表 1.</strong> 重要な未加工連絡先列。
+</p>
+<table>
+    <tr>
+        <th scope="col">列名</th>
+        <th scope="col">用途</th>
+        <th scope="col">注</th>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_NAME}
+        </td>
+        <td>
+            この未加工連絡先のソースであるアカウント タイプにおけるアカウント名。
+            たとえば、Google アカウントのアカウント名は、デバイス オーナーの Gmail アドレスのどれかです。
+詳しくは、次の {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE} の項目をご覧ください。
+
+
+        </td>
+        <td>
+            この名前の形式は、アカウント タイプによって異なります。必ずしもメールアドレスとは限りません。
+
+        </td>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}
+        </td>
+        <td>
+            この未加工連絡先のソースであるアカウント タイプ。たとえば、Google アカウントのアカウント タイプは <code>com.google</code> です。
+アカウント タイプは必ず、所有または管理しているドメインのドメイン ID で修飾してください。
+そうすることで、アカウント タイプが確実に一意になります。
+
+        </td>
+        <td>
+            連絡先データを提供するアカウント タイプには、通常、連絡先プロバイダと同期する関連同期アダプタが用意されています。
+
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.RawContactsColumns#DELETED}
+        </td>
+        <td>
+            未加工連絡先の「削除済み」フラグ。
+        </td>
+        <td>
+            連絡先プロバイダは、同期アダプタが該当行をサーバーから削除し、最終的にリポジトリから削除するまで、このフラグを基に行を内部的に管理します。
+
+
+        </td>
+    </tr>
+</table>
+<h4>注</h4>
+<p>
+    次に、{@link android.provider.ContactsContract.RawContacts} テーブルに関する重要な注を示します。
+
+</p>
+<ul>
+    <li>
+        未加工連絡先の名前は、{@link android.provider.ContactsContract.RawContacts} の行には格納されません。
+その代わり、{@link android.provider.ContactsContract.Data} テーブルの {@link android.provider.ContactsContract.CommonDataKinds.StructuredName} 行に格納されます。
+
+未加工連絡先は、このタイプの行を {@link android.provider.ContactsContract.Data} テーブルに 1 行だけ持ちます。
+
+    </li>
+    <li>
+        <strong>警告:</strong> 未加工連絡先の行で独自のアカウント データを使用する場合は、まずそれを {@link android.accounts.AccountManager} に登録する必要があります。
+登録するには、ユーザーに対し、アカウントのリストにアカウント タイプとアカウント名を追加するよう求めます。
+そうしないと、連絡先プロバイダによって未加工連絡先の行が自動的に削除されてしまいます。
+
+        <p>
+            たとえば、ドメインが {@code com.example.dataservice} であるウェブベースのサービス用に連絡先データをアプリで管理する場合、そのサービス用のユーザー アカウントが {@code becky.sharp@dataservice.example.com} であれば、そのユーザーが先にそのアカウントの「タイプ」({@code com.example.dataservice})と「名前」({@code becky.smart@dataservice.example.com})を追加しておくことで、アプリが未加工連絡先の行を追加できるようになります。
+
+
+
+
+            この要件については、文書で説明するか、ユーザーにタイプと名前を追加するよう求めるか、あるいはその両方を実施してください。
+アカウントのタイプと名前については、次のセクションで詳しく説明します。
+
+    </li>
+</ul>
+<h3 id="RawContactsExample">未加工連絡先データのソース</h3>
+<p>
+    未加工連絡先の働きを理解するために、「Emily Dickinson」というユーザーについて考えてみましょう。彼女は自分の端末に次の 3 つのアカウントを定義しています。
+
+</p>
+<ul>
+    <li><code>emily.dickinson@gmail.com</code></li>
+    <li><code>emilyd@gmail.com</code></li>
+    <li>Twitter アカウント「belle_of_amherst」</li>
+</ul>
+<p>
+    このユーザーは、[<em>アカウント</em>] の設定でこの 3 つのアカウントすべてについて [<em>連絡先を同期</em>] を有効にしています。
+
+</p>
+<p>
+    Emily Dickinson がブラウザのウィンドウを開き、Gmail に <code>emily.dickinson@gmail.com</code> としてログインし、[連絡先] を開いて「Thomas Higginson」を追加したとしましょう。
+
+後日、彼女が Gmail に <code>emilyd@gmail.com</code> としてログインし、メールを「Thomas Higginson」宛てに送信すると、彼は自動的に連絡先として追加されます。
+
+彼女はまた、Twitter で「colonel_tom」(Thomas Higginson の Twitter ID)をフォローしています。
+
+</p>
+<p>
+    連絡先プロバイダは、この操作の結果として次の 3 行の未加工連絡先を作成します。
+</p>
+<ol>
+    <li>
+        「Thomas Higginson」の、<code>emily.dickinson@gmail.com</code> に関連付けられた未加工連絡先。
+        ユーザー アカウントのタイプは Google です。
+    </li>
+    <li>
+        「Thomas Higginson」の、<code>emilyd@gmail.com</code> に関連付けられた新たな未加工連絡先。
+        ユーザー アカウントのタイプはやはり Google です。名前が前の行とまったく同じなのに新たな未加工連絡先が作成されたのは、この個人が異なるユーザー アカウントに追加されたからです。
+
+
+    </li>
+    <li>
+        「Thomas Higginson」の、「belle_of_amherst」に関連付けられた未加工連絡先。ユーザー アカウントのタイプは Twitter です。
+
+    </li>
+</ol>
+<h2 id="DataBasics">データ</h2>
+<p>
+    前にも説明したように、未加工連絡先のデータは未加工連絡先の <code>_ID</code> 値にリンクされている {@link android.provider.ContactsContract.Data} 行に格納されます。
+
+これにより、1 つの未加工連絡先が同じタイプのデータ(メールアドレスや電話番号など)のインスタンスを複数持つことができます。
+たとえば、{@code emilyd@gmail.com} に対する「Thomas Higginson」(Google アカウント <code>emilyd@gmail.com</code> に関連付けられた、Thomas Higginson の未加工連絡先の行)には、<code>thigg@gmail.com</code> という個人用アドレスと <code>thomas.higginson@gmail.com</code> という仕事用アドレスがあり、連絡先プロバイダはこの 2 つのメールアドレスの行を格納し、両方とも同じ未加工連絡先にリンクします。
+
+
+
+
+
+</p>
+<p>
+    異なるタイプのデータが同じテーブルに格納されることに注目してください。表示名、電話番号、メール、住所、写真、ウェブサイトに関する詳細行はすべて、{@link android.provider.ContactsContract.Data} テーブルにあります。
+
+これを管理しやすくするため、{@link android.provider.ContactsContract.Data} テーブルの一部の行には説明的な名前が、それ以外には一般的な名前がそれぞれ付いています。
+
+説明的な名前が付いた列の内容は、行データのタイプによらず意味が同じなのに対し、一般的な名前が付いた列の内容は、データのタイプによって意味が異なります。
+
+
+</p>
+<h3 id="DescriptiveColumns">説明的な名前の列</h3>
+<p>
+    説明的な名前が付いた列の例をいくつか示します。
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.Data#RAW_CONTACT_ID}
+    </dt>
+    <dd>
+        このデータの、未加工連絡先の <code>_ID</code> 列の値。
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.Data#MIMETYPE}
+    </dt>
+    <dd>
+        カスタム MIME タイプで表現した、この行に格納されているデータのタイプ。連絡先プロバイダは、{@link android.provider.ContactsContract.CommonDataKinds} のサブクラスに定義されている MIME タイプを使用します。
+
+これらの MIME タイプはオープンソースで、連絡先プロバイダと連携する任意のアプリケーションまたは同期アダプタで使用できます。
+
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY}
+    </dt>
+    <dd>
+        このタイプのデータ行が 1 つの未加工連絡先に対して複数発生する場合、{@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} 列はそのタイプに対するプライマリ データを含むデータ行を示します。
+
+たとえば、ユーザーがある連絡先の電話番号を長押しし、[<strong>デフォルトに設定</strong>] を選択すると、その番号を含む {@link android.provider.ContactsContract.Data} 行の {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} 列にゼロでない値が設定されます。
+
+
+
+
+    </dd>
+</dl>
+<h3 id="GenericColumns">汎用名の列</h3>
+<p>
+    自由に使用できる <code>DATA1</code> ~ <code>DATA15</code> という 15 個の汎用列の他に、同期アダプタしか使用してはいけない <code>SYNC1</code> ~ <code>SYNC4</code> という 4 個の列があります。
+
+
+汎用名列の定数は、行に指定されているデータのタイプによらず、常に機能します。
+
+</p>
+<p>
+    <code>DATA1</code> 列はインデックス付きです。連絡先プロバイダは常に、この列を、最も頻繁にクエリの対象となるとプロバイダが予想するデータ用の列として使用します。
+たとえば、メールの行では、この列には実際のメールアドレスが格納されます。
+
+</p>
+<p>
+    <code>DATA15</code> は慣例として、写真サムネイルのようなバイナリ ラージ オブジェクト(BLOB)データ用に予約されています。
+
+</p>
+<h3 id="TypeSpecificNames">タイプ固有の列名</h3>
+<p>
+    特定タイプの行に含まれる列に対する作業をやりやすくするため、連絡先プロバイダではタイプ固有の列名定数もあり、たとえば {@link android.provider.ContactsContract.CommonDataKinds} のサブクラスに定義されています。
+
+こうした定数は、同じ列名に異なる定数名を充てて、特定タイプの行に含まれるデータにアクセスしやすくしているだけのものです。
+
+
+</p>
+<p>
+    たとえば、{@link android.provider.ContactsContract.CommonDataKinds.Email} クラスには、MIME タイプが {@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE Email.CONTENT_ITEM_TYPE} である{@link android.provider.ContactsContract.Data} 行向けにタイプ固有の列名定数が定義されています。
+
+
+
+このクラスには、メールアドレス 列用に {@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS} という定数が含まれています。
+
+{@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS} の実際の値は「data1」で、これはこの列の汎用名と同じです。
+
+
+</p>
+<p class="caution">
+    <strong>警告:</strong> 連絡先プロバイダにあらかじめ定義されている MIME タイプのどれかである行を使用している {@link android.provider.ContactsContract.Data} テーブルには、独自のカスタムデータを追加しないでください。
+
+追加すると、データが失われたり、連絡先プロバイダが誤動作したりすることがあります。
+たとえば、メールアドレスではなくユーザー名が格納されている MIME タイプ {@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE Email.CONTENT_ITEM_TYPE} の行は、列 <code>DATA1</code> には追加しないでください。
+
+
+一方、行に独自のカスタム MIME タイプを使用している場合は、独自のタイプ固有名を定義して列を自由に使用してかまいません。
+
+</p>
+<p>
+    図 2 に、説明的な名前の列とデータ列で {@link android.provider.ContactsContract.Data} 行がどう見えるか、そしてタイプ固有の列名が汎用列名をどう「オーバーレイ」するかを示します。
+
+
+</p>
+<img src="{@docRoot}images/providers/data_columns.png" alt="How type-specific column names map to generic column names" height="311" id="figure2" />
+<p class="img-caption">
+  <strong>図 2.</strong> タイプ固有の列名と汎用列名
+</p>
+<h3 id="ColumnMaps">タイプ固有列名が使用されるクラス</h3>
+<p>
+    表 2 に、最もよく用いられるタイプ固有列名クラスを示します。
+</p>
+<p class="table-caption" id="table2">
+  <strong>表 2.</strong> タイプ固有列名が使用されるクラス</p>
+<table>
+  <tr>
+    <th scope="col">対応クラス</th>
+    <th scope="col">データのタイプ</th>
+    <th scope="col">注</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredName}</td>
+    <td>このデータ行に関連付けられている未加工連絡先の名前データ。</td>
+    <td>1 つの未加工連絡先は、この行を 1 行だけ持ちます。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Photo}</td>
+    <td>このデータ行に関連付けられている未加工連絡先のメインの写真。</td>
+    <td>1 つの未加工連絡先は、この行を 1 行だけ持ちます。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Email}</td>
+    <td>このデータ行に関連付けられている未加工連絡先のメールレアドレス。</td>
+    <td>1 つの未加工連絡先は複数のメールアドレスを持つことができます。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal}</td>
+    <td>このデータ行に関連付けられている未加工連絡先の住所。</td>
+    <td>1 つの未加工連絡先は複数の住所を持つことができます。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.GroupMembership}</td>
+    <td>その未加工連絡先を連絡先プロバイダのグループのどれかにリンクする識別子。</td>
+    <td>
+        グループは、アカウント タイプとアカウント名のオプション機能です。詳しくは、<a href="#Groups">連絡先グループ</a>をご覧ください。
+
+    </td>
+  </tr>
+</table>
+<h3 id="ContactBasics">連絡先</h3>
+<p>
+    連絡先プロバイダは、すべてのアカウント タイプとアカウント名にわたって未加工連絡先の行を結び付けて 1 つの<strong>連絡先</strong>を形成します。
+これにより、1 人の人についてユーザーが集めた全データを表示したり変更したりしやすくなります。
+連絡先プロバイダは、新しい連絡先の行の作成と、既存の連絡先の行を使用した未加工連絡先の集約とを管理します。
+アプリケーションと同期アダプタは連絡先の追加はできず、連絡先の行の一部の列は読み取り専用です。
+
+</p>
+<p class="note">
+    <strong>注:</strong> 連絡先を連絡先プロバイダに {@link android.content.ContentResolver#insert(Uri,ContentValues) insert()} を使用して追加しようとすると、{@link java.lang.UnsupportedOperationException} 例外が発生します。
+
+「読み取り専用」になっている列をアップデートしようとしても、そのアップデートは無視されます。
+
+</p>
+<p>
+    連絡先プロバイダは、既存の連絡先と一致しない新しい未加工連絡先が追加されると、それに対して新しい連絡先を作成します。
+また、既存の未加工連絡先のデータが変更され、それまで関連付けられていた連絡先と一致しなくなった場合にも、同じ処理がなされます。
+
+アプリケーションまたは同期アダプタが、既存の連絡先と一致する新しい未加工連絡先を作成すると、その新しい未加工連絡先は既存の連絡先に集約されます。<em></em>
+
+
+</p>
+<p>
+    連絡先プロバイダは、連絡先の行を未加工連絡先とリンクするのに、{@link android.provider.ContactsContract.Contacts Contacts} テーブルの <code>_ID</code> 列を使用します。
+
+未加工連絡先テーブル {@link android.provider.ContactsContract.RawContacts} の <code>CONTACT_ID</code> 列には、未加工連絡先の各行に関連付けられている連絡先の行の <code>_ID</code> 値が格納されます。
+
+
+</p>
+<p>
+    {@link android.provider.ContactsContract.Contacts} テーブルには列 {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} もあり、こちらは連絡先の行への「永久」リンクです。
+
+連絡先プロバイダは連絡先を自動的に管理するため、集約や同期が行われると、それに応じて連絡先の行の {@code android.provider.BaseColumns#_ID} 値が変更される場合があります。
+
+この処理が行われても、コンテンツ URI {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI} と連絡先の {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} の組み合わせは、引き続きその連絡先の行を指すため、{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} を使用して「お気に入り」の連絡先へのリンクを管理するなどができます。
+
+
+
+
+この列には、{@code android.provider.BaseColumns#_ID} 列の形式と関係のない独自の形式があります。
+
+</p>
+<p>
+    図 3 に、3 つのテーブルの相互関係を示します。
+</p>
+<img src="{@docRoot}images/providers/contacts_tables.png" alt="Contacts provider main tables" height="514" id="figure4" />
+<p class="img-caption">
+  <strong>図 3.</strong> Contacts、RawContacts、Data の各テーブル間の関係。
+</p>
+<h2 id="Sources">同期アダプタからのデータ</h2>
+<p>
+    ユーザーは端末に連絡先データを直接入力しますが、データはウェブサービスから<strong>同期アダプタ</strong>を経由して連絡先プロバイダにも流れます。同期アダプタは、端末とサービスの間のデータ転送を自動化します。
+
+同期アダフタはシステムの管理下でバックグラウンドで実行され、{@link android.content.ContentResolver} のメソッドを呼び出してデータを管理します。
+
+
+</p>
+<p>
+    Android では、同期アダプタと連携するウェブサービスをアカウント タイプで識別します。
+    各同期アダプタが扱うアカウント タイプは 1 つですが、そのタイプのアカウント名を複数サポートできます。
+アカウント名とアカウント タイプについては、<a href="#RawContactsExample">未加工連絡先データのソース</a>で簡単に説明しています。
+次に、アカウント タイプとアカウント名が同期アダプタやサービスとどのような関係にあるかを詳しく説明します。
+
+</p>
+<dl>
+    <dt>
+        アカウント タイプ
+    </dt>
+    <dd>
+        ユーザーがデータを格納しているサービスを示します。ほとんどの場合、ユーザーにはサービスに対する認証が求められます。
+たとえば、Google Contacts はアカウント タイプの 1 つで、コード <code>google.com</code> で識別されます。
+この値は、{@link android.accounts.AccountManager} によって使用されるアカウント タイプに対応します。
+
+    </dd>
+    <dt>
+        アカウント名
+    </dt>
+    <dd>
+        あるアカウント タイプで使用する特定のアカウントまたはログインを示します。Google Contacts アカウントは Google アカウントと同じで、アカウント名としてメールアドレスを使用します。
+
+        他のサービスでは、1 語のユーザー名や数字の ID が使われていることもあります。
+    </dd>
+</dl>
+<p>
+    アカウント タイプは、一意である必要はありません。1 人のユーザーが複数の Google Contacts アカウントを設定し、それぞれのデータを連絡先プロバイダにダウンロードする、ということが可能です。このような使い方は、そのユーザーが個人用のアカウント名で私用の連絡先を、仕事用のアカウント名で仕事用の連絡先を管理している場合にありえます。
+
+アカウント名は、普通は一意です。
+この 2 つを組み合わせて、連絡先プロバイダと外部サービスとの間のある決まったデータフローを識別します。
+
+</p>
+<p>
+    独自サービスのデータを連絡先プロバイダに転送する場合は、独自の同期アダプタを作成する必要があります。
+詳しくは、<a href="#SyncAdapters">連絡先プロバイダの同期アダプタ</a>をご覧ください。
+
+</p>
+<p>
+    図 4 に、人に関するデータの流れにおける連絡先プロバイダの位置付けを示します。
+右から 2 列目の各ボックス内のアダプタには、そのアダプタのアカウント タイプが示されています。
+</p>
+<img src="{@docRoot}images/providers/ContactsDataFlow.png" alt="Flow of data about people" height="252" id="figure5" />
+<p class="img-caption">
+  <strong>図 4.</strong> 連絡先プロバイダに絡んだデータフロー。
+</p>
+<h2 id="Permissions">必要なパーミッション</h2>
+<p>
+    連絡先プロバイダにアクセスするアプリケーションは、次のパーミッションを要求する必要があります。
+
+</p>
+<dl>
+    <dt>1 つ以上のテーブルに対する読み取りアクセス</dt>
+    <dd>
+        {@link android.Manifest.permission#READ_CONTACTS}。<code>AndroidManifest.xml</code> に <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code> 要素を使用して <code>&lt;uses-permission android:name="android.permission.READ_CONTACTS"&gt;</code> のように指定します。
+
+
+
+    </dd>
+    <dt>1 つ以上のテーブルに対する書き込みアクセス</dt>
+    <dd>
+        {@link android.Manifest.permission#WRITE_CONTACTS}。<code>AndroidManifest.xml</code> に <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code> 要素を使用して <code>&lt;uses-permission android:name="android.permission.WRITE_CONTACTS"&gt;</code> のように指定します。
+
+
+
+    </dd>
+</dl>
+<p>
+    これらのパーミッションは、ユーザー プロファイル データにまでは拡張されません。ユーザー プロファイルとそれに必要なパーミッションについては、次のセクションである<a href="#UserProfile">ユーザー プロファイル</a>で説明しています。
+
+
+</p>
+<p>
+    ユーザーの連絡先データは個人的で秘密性の高い情報であることを再度ご確認ください。ユーザーはプライバシーに敏感であり、アプリケーションが自分や自分の連絡先に関するデータを集めることを望みません。
+
+    連絡先データにアクセスするためのパーミッションが必要な理由が明らかでないと、ユーザーがアプリケーションを低く評価したりインストールを拒否したりすることがあります。
+
+</p>
+<h2 id="UserProfile">ユーザー プロファイル</h2>
+<p>
+    {@link android.provider.ContactsContract.Contacts} テーブルには、その端末のユーザーのプロファイル データを格納している行が 1 行あります。
+このデータが記述しているのは端末の <code>user</code> であって、そのユーザーの連絡先ではありません。
+プロファイルの連絡先の行は、プロファイルを使用する各システムの未加工連絡先の行にリンクされています。
+
+    プロファイルの未加工連絡先の各行は、複数のデータ行を持つことができます。ユーザー プロファイルにアクセスするための定数は、{@link android.provider.ContactsContract.Profile} クラスに用意されています。
+
+</p>
+<p>
+    ユーザー プロファイルにアクセスするには、特別なパーミッションが必要です。読み取りと書き込みに必要な {@link android.Manifest.permission#READ_CONTACTS} パーミッションと {@link android.Manifest.permission#WRITE_CONTACTS} パーミッションの他に、ユーザー プロファイルに対する読み取りと書き込みのために {@code android.Manifest.permission#READ_PROFILE} パーミッションと {@code android.Manifest.permission#WRITE_PROFILE} パーミッションがそれぞれ必要です。
+
+
+
+
+
+</p>
+<p>
+    ユーザーのプロファイルは秘密性の高い情報であることを再度ご確認ください。パーミッション {@code android.Manifest.permission#READ_PROFILE} を使用すると、端末ユーザーの個人識別データにアクセスできます。
+
+アプリケーションの説明には、ユーザー プロファイルへのアクセス パーミッションが必要な理由を必ず記載してください。
+
+</p>
+<p>
+    ユーザーのプロファイルが格納された連絡先の行を取得するには、{@link android.content.ContentResolver#query(Uri,String[], String, String[], String) ContentResolver.query()} を呼び出します。
+
+コンテンツ URI を {@link android.provider.ContactsContract.Profile#CONTENT_URI} に設定し、選択条件は何も指定しません。
+
+このコンテンツ URI は、そのプロファイルの未加工連絡先やデータを取得するためのベース URI としても使用できます。
+たとえば、次のスニペットは指定されたプロファイルのデータを取得します。
+</p>
+<pre>
+// Sets the columns to retrieve for the user profile
+mProjection = new String[]
+    {
+        Profile._ID,
+        Profile.DISPLAY_NAME_PRIMARY,
+        Profile.LOOKUP_KEY,
+        Profile.PHOTO_THUMBNAIL_URI
+    };
+
+// Retrieves the profile from the Contacts Provider
+mProfileCursor =
+        getContentResolver().query(
+                Profile.CONTENT_URI,
+                mProjection ,
+                null,
+                null,
+                null);
+</pre>
+<p class="note">
+    <strong>注:</strong> 連絡先の行を複数取得する場合、そのなかの 1 つがユーザー プロファイルかどうかを確認するには、行の {@link android.provider.ContactsContract.ContactsColumns#IS_USER_PROFILE} 列をテストします。
+
+その連絡先がユーザー プロファイルであれば、この列は「1」に設定されています。
+
+</p>
+<h2 id="ContactsProviderMetadata">連絡先プロバイダのメタデータ</h2>
+<p>
+    連絡先プロバイダは、連絡先データの状態を継続的に追跡するためのデータをリポジトリで管理します。
+リポジトリに関するこのメタデータは、RawContacts、Data、Contacts の各テーブルの行、{@link android.provider.ContactsContract.Settings} テーブル、{@link android.provider.ContactsContract.SyncState} テーブルなど、さまざまな場所に格納されています。
+
+
+次の表に、各メタデータの効果を示します。
+
+</p>
+<p class="table-caption" id="table3">
+  <strong>表 3.</strong> 連絡先プロバイダに用意されているメタデータ</p>
+<table>
+    <tr>
+        <th scope="col">テーブル</th>
+        <th scope="col">列</th>
+        <th scope="col">値</th>
+        <th scope="col">意味</th>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.RawContacts}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.SyncColumns#DIRTY}</td>
+        <td>「0」 - 前回の同期以降、変更はありません。</td>
+        <td rowspan="2">
+            端末上で変更があり、サーバーと同期する必要がある未加工連絡先をマークします。
+Android アプリケーションが行をアップデートすると、連絡先プロバイダによって値が自動的に設定されます。
+
+            <p>
+                未加工連絡先やデータのテーブルを変更する同期アダプタは、使用するコンテンツ URI の末尾に文字列 {@link android.provider.ContactsContract#CALLER_IS_SYNCADAPTER} を必ず追加してください。
+
+これにより、プロバイダが行をダーティとマークするのを防ぐことができます。
+                こうしないと、同期アダプタによる変更がローカルな変更と認識され、変更のソースがサーバーであるにもかかわらず、その変更がサーバーに送信されます。
+
+            </p>
+        </td>
+    </tr>
+    <tr>
+            <td>「1」 - 前回の同期以降に変更があり、サーバーへの同期が必要です。</td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#VERSION}</td>
+        <td>この行のバージョン番号。</td>
+        <td>
+            この行またはその関連データが変更されるたび、連絡先プロバイダがこの値を自動的にインクリメントします。
+
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.Data}</td>
+        <td>{@link android.provider.ContactsContract.DataColumns#DATA_VERSION}</td>
+        <td>この行のバージョン番号。</td>
+        <td>
+            このデータ行が変更されるたび、連絡先プロバイダがこの値を自動的にインクリメントします。
+
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}</td>
+        <td>
+            この未加工連絡先をそれが作成されたアカウントと一意に結び付ける文字列値。
+
+        </td>
+        <td>
+            同期アダプタが新しい未加工連絡先を作成するたび、この列はその未加工連絡先に対するサーバーの一意の ID に設定される必要があります。
+Android アプリケーションが新しい未加工連絡先を作成した場合、そのアプリケーションはこの列を空欄のままにする必要があります。
+同期アダプタはこれを確認して、サーバー上に新しい未加工連絡先を作成し、{@link android.provider.ContactsContract.SyncColumns#SOURCE_ID} の値を取得します。
+
+
+            <p>
+                特に、ソース ID はアカウント タイプごとに<strong>一意</strong>で、同期中に安定している必要があります。
+
+            </p>
+                <ul>
+                    <li>
+                        Unique: アカウントの各未加工連絡先には独自のソース ID が必要です。これを強制しないと、連絡先アプリケーションに問題を引き起こすことになります。
+
+                        同じアカウント <em>タイプ</em>に対する 2 つの未加工連絡先が、同じソース ID を持つことがありえます。
+たとえば、アカウント {@code emily.dickinson@gmail.com} の未加工連絡先「Thomas Higginson」は、アカウント {@code emilyd@gmail.com} の未加工連絡先「Thomas Higginson」と同じソース ID を持つことができます。
+
+
+
+                    </li>
+                    <li>
+                        Stable: ソース ID は、未加工連絡先のオンライン サービス データにおいて変わらない部分です。
+たとえば、ユーザーが [アプリ] 設定から [連絡先ストレージ] を消去し、再同期したとしても、復元された未加工連絡先のソース ID は以前と同じになります。
+
+これを強制しないと、ショートカットが機能しなくなります。
+
+                    </li>
+                </ul>
+        </td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Groups}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.GroupsColumns#GROUP_VISIBLE}</td>
+        <td>「0」 - このグループに属する連絡先が Android アプリケーションの UI に表示されなくなります。</td>
+        <td>
+            この列は、ユーザーが特定のグループに属する連絡先を非表示にすることを許可するサーバーに対して互換性を確保するために用意されています。
+
+        </td>
+    </tr>
+    <tr>
+        <td>「1」 - このグループに属する連絡先を Android アプリケーションの UI に表示できます。</td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Settings}</td>
+        <td rowspan="2">
+            {@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE}</td>
+        <td>
+            「0」 - このアカウントとアカウント タイプについて、グループに属さない連絡先は Android アプリケーションの UI に表示されなくなります。
+
+        </td>
+        <td rowspan="2">
+            デフォルトでは、グループに属する未加工連絡先がないなら連絡先は表示されません(未加工連絡先のグループ メンバーシップは、{@link android.provider.ContactsContract.Data} テーブルの 1 つないし複数の {@link android.provider.ContactsContract.CommonDataKinds.GroupMembership} 行によって示されます)。
+
+
+
+            あるアカウントとアカウント タイプについて、{@link android.provider.ContactsContract.Settings} テーブルの行でこのフラグを設定すると、グループのない連絡先を強制的に表示できます。
+
+            このフラグの用途の 1 つとして、グループを使用しないサーバーから連絡先を取得して表示することが考えられます。
+        </td>
+    </tr>
+    <tr>
+        <td>
+            「0」 - このアカウントとアカウント タイプについて、グループに属さない連絡先が Android アプリケーションの UI に表示されます。
+
+        </td>
+
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.SyncState}</td>
+        <td>(すべて)</td>
+        <td>
+            このテーブルを使用して、同期アダプタのメタデータを格納します。
+        </td>
+        <td>
+            このテーブルを使用すると、同期状態などの同期関連データを永続的に端末上に格納できます。
+
+        </td>
+    </tr>
+</table>
+<h2 id="Access">連絡先プロバイダへのアクセス</h2>
+<p>
+    このセクションでは、連絡先プロバイダからのデータにアクセスするためのガイドラインについて、以下に注目して説明します。
+
+</p>
+<ul>
+    <li>
+        エンティティ クエリ。
+    </li>
+    <li>
+        バッチ変更。
+    </li>
+    <li>
+        インテントを使用した取得と変更。
+    </li>
+    <li>
+        データ整合性。
+    </li>
+</ul>
+<p>
+    同期アダプタからの変更については、<a href="#SyncAdapters">連絡先プロバイダの同期アダプタ</a>でも詳しく説明しています。
+
+</p>
+<h3 id="Entities">エンティティのクエリ</h3>
+<p>
+    連絡先プロバイダのテーブルは階層構造になっており、ある行とその「子」の行すべてを取得すると便利なことがよくあります。
+たとえば、ある人に関するすべての情報を表示するために、{@link android.provider.ContactsContract.Contacts} 行 1 行に対するすべての {@link android.provider.ContactsContract.RawContacts} 行や、{@link android.provider.ContactsContract.RawContacts} 行 1 行に対するすべての {@link android.provider.ContactsContract.CommonDataKinds.Email} 行を取得することが考えられます。
+
+
+
+
+こうした処理をやりやすくするため、連絡先プロバイダには<strong>エンティティ</strong>構造が用意されています。これは、テーブル間でのデータベースの和集合のように機能します。
+
+
+</p>
+<p>
+    1 つのエンティティは、ある親テーブルとその子テーブルから選ばれた列からなるテーブルのようなものです。
+    エンティティをクエリする場合は、そのエンティティで使用できる列に基づいてプロジェクションと検索の条件を指定します。
+その結果が {@link android.database.Cursor} で、取得された各子テーブル行につき 1 行を含みます。
+たとえば、ある連絡先名と、その名前のすべての未加工連絡先の {@link android.provider.ContactsContract.CommonDataKinds.Email} 行について、{@link android.provider.ContactsContract.Contacts.Entity} をクエリすると、各 {@link android.provider.ContactsContract.CommonDataKinds.Email} 行につき 1 行を含む {@link android.database.Cursor} が得られます。
+
+
+
+
+</p>
+<p>
+    エンティティにより、クエリが簡素化されます。エンティティを使用することで、ある連絡先または未加工連絡先の連絡先データをすべて取得できるため、まず親テーブルにクエリして ID を取得し、次にその ID 使用して子テーブルにクエリする必要がありません。また、連絡先プロバイダは、エンティティに対するクエリを 1 回のトランザクションで処理することから、取得されたデータの内部的な整合性が保証されます。
+
+
+
+
+</p>
+<p class="note">
+    <strong>注:</strong> エンティティには通常、親テーブルと子テーブルのすべての列が含まれるわけではありません。
+そのエンティティの列名定数のリストにない列名に対して作業しようとすると、{@link java.lang.Exception} が発生します。
+
+</p>
+<p>
+    次のスニペットは、ある連絡先のすべての未加工連絡先を取得する方法を示しています。このスニペットは、「メイン」と「詳細」という 2 つのアクティビティを持つ、もっと大きなアプリケーションの一部です。
+メイン アクティビティは、連絡先の行の一覧を示します。ユーザーが 1 つを選択すると、このアクティビティはその ID を詳細アクティビティに送ります。
+
+詳細アクティビティは {@link android.provider.ContactsContract.Contacts.Entity} を使用して、選択した連絡先と関連付けられているすべての未加工連絡先から取得したすべてのデータ行を示します。
+
+
+</p>
+<p>
+    このスニペットは「詳細」アクティビティからの抜粋です。
+</p>
+<pre>
+...
+    /*
+     * Appends the entity path to the URI. In the case of the Contacts Provider, the
+     * expected URI is content://com.google.contacts/#/entity (# is the ID value).
+     */
+    mContactUri = Uri.withAppendedPath(
+            mContactUri,
+            ContactsContract.Contacts.Entity.CONTENT_DIRECTORY);
+
+    // Initializes the loader identified by LOADER_ID.
+    getLoaderManager().initLoader(
+            LOADER_ID,  // The identifier of the loader to initialize
+            null,       // Arguments for the loader (in this case, none)
+            this);      // The context of the activity
+
+    // Creates a new cursor adapter to attach to the list view
+    mCursorAdapter = new SimpleCursorAdapter(
+            this,                        // the context of the activity
+            R.layout.detail_list_item,   // the view item containing the detail widgets
+            mCursor,                     // the backing cursor
+            mFromColumns,                // the columns in the cursor that provide the data
+            mToViews,                    // the views in the view item that display the data
+            0);                          // flags
+
+    // Sets the ListView's backing adapter.
+    mRawContactList.setAdapter(mCursorAdapter);
+...
+&#64;Override
+public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+
+    /*
+     * Sets the columns to retrieve.
+     * RAW_CONTACT_ID is included to identify the raw contact associated with the data row.
+     * DATA1 contains the first column in the data row (usually the most important one).
+     * MIMETYPE indicates the type of data in the data row.
+     */
+    String[] projection =
+        {
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID,
+            ContactsContract.Contacts.Entity.DATA1,
+            ContactsContract.Contacts.Entity.MIMETYPE
+        };
+
+    /*
+     * Sorts the retrieved cursor by raw contact id, to keep all data rows for a single raw
+     * contact collated together.
+     */
+    String sortOrder =
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID +
+            " ASC";
+
+    /*
+     * Returns a new CursorLoader. The arguments are similar to
+     * ContentResolver.query(), except for the Context argument, which supplies the location of
+     * the ContentResolver to use.
+     */
+    return new CursorLoader(
+            getApplicationContext(),  // The activity's context
+            mContactUri,              // The entity content URI for a single contact
+            projection,               // The columns to retrieve
+            null,                     // Retrieve all the raw contacts and their data rows.
+            null,                     //
+            sortOrder);               // Sort by the raw contact ID.
+}
+</pre>
+<p>
+    読み込みが完了すると、{@link android.app.LoaderManager} は {@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished(Loader, D) onLoadFinished()} に対するコールバックを起動します。
+
+このメソッドへの入力引数の 1 つは、クエリの結果を含む {@link android.database.Cursor} です。
+独自アプリでは、データをこの {@link android.database.Cursor} から取得して表示したりさらに処理したりできます。
+
+</p>
+<h3 id="Transactions">バッチ変更</h3>
+<p>
+    可能であれば必ず、連絡先プロバイダのデータを「バッチモード」で挿入、アップデート、削除してください。そのためには、{@link android.content.ContentProviderOperation} オブジェクトの {@link java.util.ArrayList} を作成し、{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} を呼び出します。
+
+
+連絡先プロバイダはすべての操作を 1 つのトランザクションの 1 つの {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} で行うため、変更内容が連絡先リポジトリで不整合のままになることは決してありません。
+
+
+
+また、バッチ変更では、未加工連絡先とその詳細データを同時に挿入しやすくなっています。
+
+</p>
+<p class="note">
+    <strong>注:</strong> <em>1 つ</em>の未加工連絡先を変更する場合は、変更を独自アプリ内で処理するのではなく、インテントを端末の連絡先アプリケーションに送信することを検討してください。この方法については、<a href="#Intents">インテントを使用した取得と変更</a>で詳しく説明しています。
+
+
+
+</p>
+<h4>明け渡し点</h4>
+<p>
+    多数の操作を伴うバッチ変更は、他のプロセスをブロックしてユーザーにとっての全体的な使用感を悪化させかねません。
+意図したすべての変更をできるだけ少ない個別リストに整理するとともに、それらがシステムをブロックしないようにするために、1 つまたは複数の操作に<strong>明け渡し点</strong>を設定してください。
+
+
+    明け渡し点の実体は、{@link android.content.ContentProviderOperation#isYieldAllowed()} の値が <code>true</code> に設定された {@link android.content.ContentProviderOperation} オブジェクトです。
+
+連絡先プロバイダが明け渡し点に遭遇すると、作業を一時中断して他のプロセスを実行させ、現在のトランザクションをクローズします。
+作業を再開した連絡先プロバイダは、{@link java.util.ArrayList} に含まれている次の操作を行い、新しいトランザクションを始めます。
+
+
+</p>
+<p>
+    明け渡し点により、{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} の呼び出し 1 回につき複数のトランザクションが発生します。
+そのため、明け渡し点は 1 組の関連する行への最後の操作に設定してください。
+
+    たとえば、未加工連絡先の行とその関連データ行を追加する一連の操作の最後に、あるいは 1 人の連絡先に関連する 1 組の行に対する最後の操作に、明け渡し点を設定します。
+
+
+</p>
+<p>
+    明け渡し点は、アトミック操作の単位でもあります。2 つの明け渡し点間のすべてのアクセスは、1 つのまとまりとして成功または失敗します。
+明け渡し点を設定しない場合、最小のアトミック操作は操作のバッチ全体になります。
+明け渡し点を使用すると、操作がシステムのパフォーマンスを低下させるのを防ぐと同時に、操作の一部分が確実にアトミックになります。
+
+
+</p>
+<h4>変更の後方参照</h4>
+<p>
+    新しい未加工連絡先の行とその関連データの行を 1 組の {@link android.content.ContentProviderOperation} オブジェクトとして挿入している場合は、データの行を未加工連絡先の行にリンクする必要があります。そのためには、未加工連絡先の {@code android.provider.BaseColumns#_ID} 値を {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID} 値として挿入します。
+
+
+
+ただし、この値は、データの行のために{@link android.content.ContentProviderOperation} を作成している間は使用できません。未加工連絡先に {@link android.content.ContentProviderOperation} 操作がまだ適用されていないからです。
+
+
+これを回避するため、{@link android.content.ContentProviderOperation.Builder} クラスにはメソッド {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()} が用意されています。
+
+
+    このメソッドを使用すると、前の操作の結果を使用して列を挿入または変更できます。
+
+</p>
+<p>
+    {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()} メソッドには引数が 2 つあります。
+
+</p>
+    <dl>
+        <dt>
+            <code>key</code>
+        </dt>
+        <dd>
+            キーと値のペアのキーです。この引数の値は、変更中のテーブルに含まれる列であることが必要です。
+
+        </dd>
+        <dt>
+            <code>previousResult</code>
+        </dt>
+        <dd>
+            {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} から取得した {@link android.content.ContentProviderResult} オブジェクトの配列に含まれる値の、0 ベースのインデックスです。
+
+バッチ操作が適用されると、各操作の結果は結果用の中間配列に格納されます。
+
+<code>previousResult</code> 値はそうした結果の 1 つのインデックスで、<code>key</code> 値を使用して取得され、格納されます。
+
+これにより、新しい未加工連絡先レコードを挿入してその {@code android.provider.BaseColumns#_ID} 値に戻り、次に {@link android.provider.ContactsContract.Data} 行を追加するときにその値を「後方参照」できます。
+
+
+            <p>
+                {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} を初めて呼び出すと、指定した {@link android.content.ContentProviderOperation} オブジェクトの {@link java.util.ArrayList} と同じサイズを使用して、結果配列全体が作成されます。
+
+
+ただし、結果配列に含まれるすべての要素は <code>null</code> に設定され、そのためまだ適用されていない操作から結果を後方参照しようとすると {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()} が {@link java.lang.Exception} をスローします。
+
+
+
+
+
+            </p>
+        </dd>
+    </dl>
+<p>
+    次のスニペットは、新しい未加工連絡先とデータをバッチで挿入する方法を示しています。その中には、明け渡し点を指定し、後方参照を使用するコードが含まれています。
+これらのスニペットは、<code><a href="{@docRoot}resources/samples/ContactManager/index.html">
+    Contact Manager</a></code> サンプル アプリケーションの <code>ContactAdder</code> クラスの一部である <code>createContacEntry()</code> メソッドの拡張版です。
+
+
+
+</p>
+<p>
+    最初のスニペットは、連絡先データを UI から取得します。この時点で、ユーザーは新しい未加工連絡先の追加先となるアカウントを既に選択してあります。
+
+</p>
+<pre>
+// Creates a contact entry from the current UI values, using the currently-selected account.
+protected void createContactEntry() {
+    /*
+     * Gets values from the UI
+     */
+    String name = mContactNameEditText.getText().toString();
+    String phone = mContactPhoneEditText.getText().toString();
+    String email = mContactEmailEditText.getText().toString();
+
+    int phoneType = mContactPhoneTypes.get(
+            mContactPhoneTypeSpinner.getSelectedItemPosition());
+
+    int emailType = mContactEmailTypes.get(
+            mContactEmailTypeSpinner.getSelectedItemPosition());
+</pre>
+<p>
+    次のスニペットは、未加工連絡先の行を {@link android.provider.ContactsContract.RawContacts} テーブルに挿入する操作を作成します。
+
+</p>
+<pre>
+    /*
+     * Prepares the batch operation for inserting a new raw contact and its data. Even if
+     * the Contacts Provider does not have any data for this person, you can't add a Contact,
+     * only a raw contact. The Contacts Provider will then add a Contact automatically.
+     */
+
+     // Creates a new array of ContentProviderOperation objects.
+    ArrayList&lt;ContentProviderOperation&gt; ops =
+            new ArrayList&lt;ContentProviderOperation&gt;();
+
+    /*
+     * Creates a new raw contact with its account type (server type) and account name
+     * (user's account). Remember that the display name is not stored in this row, but in a
+     * StructuredName data row. No other data is required.
+     */
+    ContentProviderOperation.Builder op =
+            ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
+            .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType())
+            .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    次に、表示名、電話、メールのデータ行を作成します。
+</p>
+<p>
+    操作の各ビルダー オブジェクトは、{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()} を使用して {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID} を取得します。
+
+
+この参照が最初の操作からの {@link android.content.ContentProviderResult} オブジェクトを後方参照しており、それが未加工連絡先の行を追加し、新しい {@code android.provider.BaseColumns#_ID} 値を返します。
+
+
+その結果、各データ行はその {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID} によって、属する新しい {@link android.provider.ContactsContract.RawContacts} 行に自動的にリンクされます。
+
+
+</p>
+<p>
+    メール行を追加する {@link android.content.ContentProviderOperation.Builder} オブジェクトは、明け渡し点を設定する {@link android.content.ContentProviderOperation.Builder#withYieldAllowed(boolean) withYieldAllowed()} でフラグ付けされます。
+
+
+</p>
+<pre>
+    // Creates the display name for the new raw contact, as a StructuredName data row.
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * withValueBackReference sets the value of the first argument to the value of
+             * the ContentProviderResult indexed by the second argument. In this particular
+             * call, the raw contact ID column of the StructuredName data row is set to the
+             * value of the result returned by the first operation, which is the one that
+             * actually adds the raw contact row.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to StructuredName
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
+
+            // Sets the data row's display name to the name in the UI.
+            .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified phone number and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Phone
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
+
+            // Sets the phone number and type
+            .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone)
+            .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified email and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Email
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
+
+            // Sets the email address and type
+            .withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email)
+            .withValue(ContactsContract.CommonDataKinds.Email.TYPE, emailType);
+
+    /*
+     * Demonstrates a yield point. At the end of this insert, the batch operation's thread
+     * will yield priority to other threads. Use after every set of operations that affect a
+     * single contact, to avoid degrading performance.
+     */
+    op.withYieldAllowed(true);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    最後のスニペットは、新しい未加工連絡先とデータ行を挿入する {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} を呼び出しています。
+
+
+</p>
+<pre>
+    // Ask the Contacts Provider to create a new contact
+    Log.d(TAG,"Selected account: " + mSelectedAccount.getName() + " (" +
+            mSelectedAccount.getType() + ")");
+    Log.d(TAG,"Creating contact: " + name);
+
+    /*
+     * Applies the array of ContentProviderOperation objects in batch. The results are
+     * discarded.
+     */
+    try {
+
+            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
+    } catch (Exception e) {
+
+            // Display a warning
+            Context ctx = getApplicationContext();
+
+            CharSequence txt = getString(R.string.contactCreationFailure);
+            int duration = Toast.LENGTH_SHORT;
+            Toast toast = Toast.makeText(ctx, txt, duration);
+            toast.show();
+
+            // Log exception
+            Log.e(TAG, "Exception encountered while inserting contact: " + e);
+    }
+}
+</pre>
+<p>
+    バッチ処理を使用すると、<strong>楽観的並行性制御</strong>を実装できます。これは、背後のリポジトリをロックする必要なく変更トランザクションを適用する手法です。
+
+    この手法を使用するには、トランザクションを適用してから、同時に行うことのできる可能性のある他の変更をチェックします。
+一貫性のない変更が発生していることがわかった場合は、トランザクションをロールバックしてやり直します。
+
+</p>
+<p>
+    楽観的並行性制御は、一度に使用するユーザーが 1 人でデータリポジトリへの同時アクセスがまれなモバイル端末に便利です。
+ロックが使用されないため、ロックの設定や他のトランザクションによるロックの解放待ちで時間を無駄にしません。
+
+</p>
+<p>
+    {@link android.provider.ContactsContract.RawContacts} 行を 1 行更新している間に楽観的並行性制御を使用する方法は次のとおりです。
+
+</p>
+<ol>
+    <li>
+        取得する他のデータとともに、未加工連絡先の {@link android.provider.ContactsContract.SyncColumns#VERSION} 列を取得します。
+
+    </li>
+    <li>
+        制約を強制するのに適した {@link android.content.ContentProviderOperation.Builder} オブジェクトを、メソッド {@link android.content.ContentProviderOperation#newAssertQuery(Uri)} を使用して作成します。
+
+コンテンツ URI に、未加工連絡先の {@code android.provider.BaseColumns#_ID} が末尾に追加された {@link android.provider.ContactsContract.RawContacts#CONTENT_URI RawContacts.CONTENT_URI} を使用します。
+
+
+
+    </li>
+    <li>
+        {@link android.content.ContentProviderOperation.Builder} オブジェクトに対し、{@link android.content.ContentProviderOperation.Builder#withValue(String, Object) withValue()} を呼び出して、{@link android.provider.ContactsContract.SyncColumns#VERSION} 列と取得したばかりのバージョン番号を比較します。
+
+
+
+    </li>
+    <li>
+        同じ {@link android.content.ContentProviderOperation.Builder} に対し、{@link android.content.ContentProviderOperation.Builder#withExpectedCount(int) withExpectedCount()} を呼び出して、このアサーションで 1 行だけがテストされるようにします。
+
+
+    </li>
+    <li>
+        {@link android.content.ContentProviderOperation.Builder#build()} を呼び出して {@link android.content.ContentProviderOperation} オブジェクトを作成し、次のこのオブジェクトを {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} に渡す {@link java.util.ArrayList} に先頭オブジェクトとして追加します。
+
+
+
+    </li>
+    <li>
+        バッチトランザクションを適用します。
+    </li>
+</ol>
+<p>
+    目的の未加工連絡先の行が、行の読み込みからその変更の試行までの間に別の操作によってアップデートされた場合、{@link android.content.ContentProviderOperation} の「アサート」が失敗し、操作のバッチ全体がバックアウトされます。
+
+バックアウトが終わったら、バッチをやり直すこと、または他のアクションを行うことができます。
+
+</p>
+<p>
+    次のスニペットは、{@link android.content.CursorLoader} を使用して未加工連絡先を 1 つクエリした後に、{@link android.content.ContentProviderOperation} を「アサート」します。
+
+
+</p>
+<pre>
+/*
+ * The application uses CursorLoader to query the raw contacts table. The system calls this method
+ * when the load is finished.
+ */
+public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor cursor) {
+
+    // Gets the raw contact's _ID and VERSION values
+    mRawContactID = cursor.getLong(cursor.getColumnIndex(BaseColumns._ID));
+    mVersion = cursor.getInt(cursor.getColumnIndex(SyncColumns.VERSION));
+}
+
+...
+
+// Sets up a Uri for the assert operation
+Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, mRawContactID);
+
+// Creates a builder for the assert operation
+ContentProviderOperation.Builder assertOp = ContentProviderOperation.netAssertQuery(rawContactUri);
+
+// Adds the assertions to the assert operation: checks the version and count of rows tested
+assertOp.withValue(SyncColumns.VERSION, mVersion);
+assertOp.withExpectedCount(1);
+
+// Creates an ArrayList to hold the ContentProviderOperation objects
+ArrayList ops = new ArrayList&lt;ContentProviderOperationg&gt;;
+
+ops.add(assertOp.build());
+
+// You would add the rest of your batch operations to "ops" here
+
+...
+
+// Applies the batch. If the assert fails, an Exception is thrown
+try
+    {
+        ContentProviderResult[] results =
+                getContentResolver().applyBatch(AUTHORITY, ops);
+
+    } catch (OperationApplicationException e) {
+
+        // Actions you want to take if the assert operation fails go here
+    }
+</pre>
+<h3 id="Intents">インテントを使用した取得と変更</h3>
+<p>
+    インテントを端末の連絡先アプリケーションに送信すると、連絡先プロバイダに間接的にアクセスできます。
+インテントが端末の連絡先アプリケーション UI を起動し、ユーザーはそこで連絡先関連の作業を行えます。
+このタイプのアクセスで、ユーザーは次の作業ができます。
+    <ul>
+        <li>連絡先をリストから選び、アプリケーションに返してさらに作業する。</li>
+        <li>既存の連絡先データを編集する。</li>
+        <li>任意のアカウントに新しい未加工連絡先を挿入する。</li>
+        <li>連絡先または連絡先データを削除する。</li>
+    </ul>
+<p>
+    ユーザーがデータを挿入またはアップデートしている場合は、まずデータを収集し、次にそれをインテントの一部として送信できます。
+
+</p>
+<p>
+    インテントを使用して端末の連絡先アプリケーション経由で連絡先プロバイダにアクセスする場合、連絡先プロバイダにアクセスするための独自の UI やコードを作成する必要はありません。
+また、連絡先プロバイダに対する読み取りや書き込みのパーミッションを要求する必要もありません。
+端末の連絡先アプリケーションは、連絡先に対する読み取りパーミッションをデリゲートできます。また、連絡先プロバイダへの変更を他のアプリケーション経由で行っていることから、書き込みパーミッションは不要です。
+
+
+</p>
+<p>
+    プロバイダにアクセスするためのインテントを送信する汎用プロセスについては、<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">コンテンツ プロバイダの基本</a>のセクション「インテント経由のデータアクセス」で詳しく説明しています。
+
+表 4 に、利用可能なタスクで使用できるアクション、MIME タイプ、データ値をまとめます。{@link android.content.Intent#putExtra(String, String) putExtra()} で使用できるエクストラ値については、{@link android.provider.ContactsContract.Intents.Insert} のリファレンス ドキュメントに一覧があります。
+
+
+
+
+</p>
+<p class="table-caption" id="table4">
+  <strong>表 4.</strong> 連絡先プロバイダのインテント
+</p>
+<table style="width:75%">
+    <tr>
+        <th scope="col" style="width:10%">タスク</th>
+        <th scope="col" style="width:5%">アクション</th>
+        <th scope="col" style="width:10%">データ</th>
+        <th scope="col" style="width:10%">MIME タイプ</th>
+        <th scope="col" style="width:25%">注</th>
+    </tr>
+    <tr>
+        <td><strong>連絡先をリストから選ぶ</strong></td>
+        <td>{@link android.content.Intent#ACTION_PICK}</td>
+        <td>
+            次のどれかです。
+            <ul>
+                <li>
+{@link android.provider.ContactsContract.Contacts#CONTENT_URI Contacts.CONTENT_URI}。連絡先のリストを表示します。
+
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Phone#CONTENT_URI Phone.CONTENT_URI}。未加工連絡先の電話番号のリストを表示します。
+
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal#CONTENT_URI StructuredPostal.CONTENT_URI}。未加工連絡先の住所のリストを表示します。
+
+
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_URI Email.CONTENT_URI}。未加工連絡先のメールアドレスのリストを表示します。
+
+                </li>
+            </ul>
+        </td>
+        <td>
+            使用せず
+        </td>
+        <td>
+            指定したコンテンツ URI のタイプに応じて、未加工連絡先のリストか、未加工連絡先から取得されたデータのリストを表示します。
+
+            <p>
+                {@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()} を呼び出してください。それにより、選択した行のコンテンツ URI が返されます。
+
+URI の形式は、テーブルのコンテンツ URI の末尾にその行の <code>LOOKUP_ID</code> が追加されたものです。
+
+                端末の連絡先アプリは、このアクティビティの実行中を通して、読み取りと書き込みのパーミッションをこのコンテンツ URI にデリゲートします。
+詳しくは、「<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">コンテンツ プロバイダの基本</a>」をご覧ください。
+
+
+            </p>
+        </td>
+    </tr>
+    <tr>
+        <td><strong>新しい未加工連絡先を挿入する</strong></td>
+        <td>{@link android.provider.ContactsContract.Intents.Insert#ACTION Insert.ACTION}</td>
+        <td>該当せず</td>
+        <td>
+            {@link android.provider.ContactsContract.RawContacts#CONTENT_TYPE RawContacts.CONTENT_TYPE}。未加工連絡先のセットに対する MIME タイプです。
+
+        </td>
+        <td>
+            端末の連絡先アプリケーションの [<strong>連絡先の追加</strong>] 画面を表示します。インテントに追加したエクストラ値が表示されます。
+{@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()} を使用して送信すると、新たに追加された未加工連絡先の URI が、アクティビティの {@link android.app.Activity#onActivityResult(int, int, Intent) onActivityResult()} コールバック メソッドの {@link android.content.Intent} 引数の「data」フィールドに格納されて戻ってきます。
+
+
+
+
+この値を取得するには、{@link android.content.Intent#getData()} を呼び出します。
+        </td>
+    </tr>
+    <tr>
+        <td><strong>連絡先を編集する</strong></td>
+        <td>{@link android.content.Intent#ACTION_EDIT}</td>
+        <td>
+            連絡先の {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI}。
+エディタ アクティビティを使用すると、ユーザーがその連絡先に関連付けられている任意のデータを編集できます。
+
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE Contacts.CONTENT_ITEM_TYPE}。1 つの連絡先です。
+</td>
+        <td>
+            連絡先アプリケーションに連絡先の編集画面を表示します。インテントに追加したエクストラ値が表示されます。
+ユーザーが [<strong>完了</strong>] をタップして編集内容を保存すると、アクティビティがフォアグラウンドに戻ります。
+
+        </td>
+    </tr>
+    <tr>
+        <td><strong>ピッカー(やはりデータを追加できる)を表示する。</strong></td>
+        <td>{@link android.content.Intent#ACTION_INSERT_OR_EDIT}</td>
+        <td>
+            該当せず
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE}
+        </td>
+         <td>
+            このインテントは、連絡先アプリのピッカー画面を常に表示します。ユーザーは、編集する連絡先を選ぶか、新しい連絡先を追加できます。
+ユーザーの選択に応じて編集画面か追加画面が開き、インテントに含めて渡したエクストラ データが表示されます。
+
+メールアドレスや電話番号などの連絡先データを独自アプリに表示する場合は、このインテントを使用すると、ユーザーが既存の連絡先にデータを追加できます。
+
+
+            <p class="note">
+                <strong>注:</strong> このインテントのエクストラで名前の値を送信する必要はありません。ユーザーは必ず既存の名前を選ぶか新しい名前を追加するからです。
+そのうえ、アプリが名前を送信し、ユーザーが編集することを選んだ場合、連絡先アプリは送信した名前を表示し、以前の値を上書きします。
+
+ユーザーがこのことに気付かず、編集内容を保存すると、以前の値が失われます。
+
+            </p>
+         </td>
+    </tr>
+</table>
+<p>
+    端末の連絡先アプリは、インテントを使用して未加工連絡先や任意のデータを削除することを許可しません。
+そのため、未加工連絡先を削除するには {@link android.content.ContentResolver#delete(Uri, String, String[]) ContentResolver.delete()} または {@link android.content.ContentProviderOperation#newDelete(Uri) ContentProviderOperation.newDelete()} を使用してください。
+
+
+
+</p>
+<p>
+    次のスニペットは、新しい未加工連絡先とデータをバッチで挿入するインテントをコンストラクトして送信する方法を示しています。
+
+</p>
+<pre>
+// Gets values from the UI
+String name = mContactNameEditText.getText().toString();
+String phone = mContactPhoneEditText.getText().toString();
+String email = mContactEmailEditText.getText().toString();
+
+String company = mCompanyName.getText().toString();
+String jobtitle = mJobTitle.getText().toString();
+
+// Creates a new intent for sending to the device's contacts application
+Intent insertIntent = new Intent(ContactsContract.Intents.Insert.ACTION);
+
+// Sets the MIME type to the one expected by the insertion activity
+insertIntent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
+
+// Sets the new contact name
+insertIntent.putExtra(ContactsContract.Intents.Insert.NAME, name);
+
+// Sets the new company and job title
+insertIntent.putExtra(ContactsContract.Intents.Insert.COMPANY, company);
+insertIntent.putExtra(ContactsContract.Intents.Insert.JOB_TITLE, jobtitle);
+
+/*
+ * Demonstrates adding data rows as an array list associated with the DATA key
+ */
+
+// Defines an array list to contain the ContentValues objects for each row
+ArrayList&lt;ContentValues&gt; contactData = new ArrayList&lt;ContentValues&gt;();
+
+
+/*
+ * Defines the raw contact row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues rawContactRow = new ContentValues();
+
+// Adds the account type and name to the row
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType());
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+// Adds the row to the array
+contactData.add(rawContactRow);
+
+/*
+ * Sets up the phone number data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues phoneRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+phoneRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
+);
+
+// Adds the phone number and its type to the row
+phoneRow.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone);
+
+// Adds the row to the array
+contactData.add(phoneRow);
+
+/*
+ * Sets up the email data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues emailRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+emailRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE
+);
+
+// Adds the email address and its type to the row
+emailRow.put(ContactsContract.CommonDataKinds.Email.ADDRESS, email);
+
+// Adds the row to the array
+contactData.add(emailRow);
+
+/*
+ * Adds the array to the intent's extras. It must be a parcelable object in order to
+ * travel between processes. The device's contacts app expects its key to be
+ * Intents.Insert.DATA
+ */
+insertIntent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, contactData);
+
+// Send out the intent to start the device's contacts app in its add contact activity.
+startActivity(insertIntent);
+</pre>
+<h3 id="DataIntegrity">データの整合性</h3>
+<p>
+    連絡先リポジトリにはユーザーによる修正や更新が予想される重要で秘密性の高いデータが格納されるため、連絡先プロバイダにはデータの整合性に関して明確に定義されたルールがあります。
+連絡先データを変更する際にこれらのルールを守ることは、開発側の責任です。
+ここでは、重要なルールを示します。
+
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.CommonDataKinds.StructuredName} 行を、追加する {@link android.provider.ContactsContract.RawContacts} 行ごとに必ず追加してください。
+
+    </dt>
+    <dd>
+        {@link android.provider.ContactsContract.Data} テーブルに {@link android.provider.ContactsContract.CommonDataKinds.StructuredName} 行のない {@link android.provider.ContactsContract.RawContacts} 行は、集約中に問題を引き起こすことがあります。
+
+
+
+    </dd>
+    <dt>
+        新しい {@link android.provider.ContactsContract.Data} 行を、その親 {@link android.provider.ContactsContract.RawContacts} 行に必ずリンクしてください。
+
+    </dt>
+    <dd>
+        {@link android.provider.ContactsContract.RawContacts} にリンクされていない {@link android.provider.ContactsContract.Data} 行は端末の連絡先アプリケーションで可視にならず、同期アダプタで問題になることがあります。
+
+
+    </dd>
+    <dt>
+        変更するのは、所有する未加工連絡先のデータに限ってください。
+    </dt>
+    <dd>
+        通常、連絡先プロバイダは複数の異なるアカウント タイプやオンライン サービスから取得したデータを管理しています。
+そのため、アプリケーションが所有しているデータのみ変更または削除されるようにし、アプリケーションが管理しているアカウント タイプとアカウント名のデータのみ挿入するようにすることが必要です。
+
+
+    </dd>
+    <dt>
+        権限、コンテンツ URI、URI パス、列名、MIME タイプ、{@link android.provider.ContactsContract.CommonDataKinds.CommonColumns#TYPE} 値については、{@link android.provider.ContactsContract} とそのサブクラスに定義されている定数を必ず使用してください。
+
+
+    </dt>
+    <dd>
+        そのような定数を使用することがエラーの予防に役立ちます。また、使われなくなった定数があれば、コンパイラーから警告として通知されます。
+
+    </dd>
+</dl>
+<h3 id="CustomData">カスタムデータ行</h3>
+<p>
+    独自のカスタム MIME タイプを作成して使用すると、{@link android.provider.ContactsContract.Data} テーブルで独自データ行を挿入、編集、削除、取得できます。
+独自行で使用できるのは {@link android.provider.ContactsContract.DataColumns} に定義された列だけですが、独自タイプに固有の列名をデフォルトの列名にマッピングできます。
+
+
+端末の連絡先アプリケーションで、独自行のデータは表示されますが、編集または削除はできず、ユーザーはデータの追加ができません。
+
+ユーザーがカスタムデータ行を変更できるようにするには、独自のアプリケーションでエディタ アクティビティを提供する必要があります。
+
+</p>
+<p>
+    カスタムデータを表示するには、1 つの <code>&lt;ContactsAccountType&gt;</code> 要素と 1 つまたは複数の <code>&lt;ContactsDataKind&gt;</code> 子要素を含む <code>contacts.xml</code> ファイルを提供します。
+
+詳しくは、<a href="#SocialStreamDataKind"><code>&lt;ContactsDataKind&gt; element</code></a>に関するセクションで説明しています。
+
+</p>
+<p>
+    カスタム MIME タイプについて詳しくは、「<a href="{@docRoot}guide/topics/providers/content-provider-creating.html">コンテンツ プロバイダの作成</a>」をご覧ください。
+
+
+</p>
+<h2 id="SyncAdapters">連絡先プロバイダの同期アダプタ</h2>
+<p>
+    連絡先プロバイダは、特に端末とオンライン サービスとの間における連絡先データの<strong>同期</strong>を処理するために設計されています。
+これを使用することで、ユーザーは既存のデータを新しい端末にダウンロードしたり、既存のデータを新しいアカウントにアップロードしたりできています。
+
+    また、同期によって、追加や変更のソースに関係なく、ユーザーは最新データを入手できます。
+同期の利点としては他にも、端末がネットワークに接続されていなくても連絡先データを使用できるようになることが挙げられます。
+
+</p>
+<p>
+    同期はさまざまな手法で実装できますが、Android システムでは次のタスクを自動化するプラグイン同期フレームワークを提供しています。
+
+    <ul>
+
+    <li>
+        ネットワークの可用性のチェック。
+    </li>
+    <li>
+        ユーザーのプリファレンスに基づく同期のスケジュールと実施。
+    </li>
+    <li>
+        停止された同期の再開。
+    </li>
+    </ul>
+<p>
+    このフレームワークを使用するには、同期アダプタ プラグインを提供する必要があります。各同期アダプタはサービスと連絡先プロバイダに対して一意ですが、同じサービスに対して複数のアカウント名を処理できます。
+また、このフレームワークでは同じサービスとプロバイダに対して複数の同期アダプタが可能です。
+
+</p>
+<h3 id="SyncClassesFiles">同期アダプタのクラスとファイル</h3>
+<p>
+    同期アダプタは、{@link android.content.AbstractThreadedSyncAdapter} のサブクラスとして実装し、Android アプリケーションの一部としてインストールします。
+
+システムは同期アダプタに関する知識を、アプリケーション マニフェストの要素からと、マニフェストが指す専用の XML ファイルから取得します。
+この XML ファイルは、オンライン サービスのアカウント タイプと連絡先プロバイダに絡む権限を定義しており、この組み合わせでアダプタを一意に識別します。
+
+同期アダプタは、ユーザーが同期アダプタのアカウント タイプに対してアカウントを追加し、同期アダプタの同期対象である連絡先プロバイダで同期を有効にすることで、アクティブになります。
+
+この時点で、システムはアダプタの管理を開始し、連絡先プロバイダとサーバーとの同期が必要になるとそれを呼び出します。
+
+</p>
+<p class="note">
+    <strong>注:</strong> アカウント タイプを同期アダプタの識別の一環として使用することにより、システムは同じ組織から異なるサービスにアクセスする同期アダプタを検出してグループ化できます。
+
+たとえば、Google オンライン サービス用の同期アダプタでは、すべて同じアカウント タイプ <code>com.google</code> です。
+ユーザーが Google アカウントを端末に追加すると、Google サービス用にインストールされているすべての同期アダプタがひとまとめにリストされ、リストされている各同期アダプタは端末上の異なる連絡先プロバイダと同期します。
+
+
+</p>
+<p>
+    データにアクセスするたび、ほとんどのサービスがユーザーに ID の確認を要求するため、Android システムでは、同期アダプタ フレームワークと類似した認証フレームワークを提供しており、往々にして同期アダプタ フレームワークと組み合わせて使用します。
+
+この認証フレームワークでは、{@link android.accounts.AbstractAccountAuthenticator} のサブクラスであるプラグイン認証システムを使用します。
+
+認証システムは、次の手順でユーザーの身元を検証します。
+
+    <ol>
+        <li>
+            ユーザー名とパスワードか、それに準ずる情報(ユーザーの<strong>資格情報</strong>)を収集します。
+
+        </li>
+        <li>
+            収集した資格情報をサービスに送信します。
+        </li>
+        <li>
+            サービスの返答を検証します。
+        </li>
+    </ol>
+<p>
+    サービスが資格情報を受け入れた場合、認証システムはその資格情報を後での使用のために格納します。
+{@link android.accounts.AccountManager} はプラグイン認証フレームワークのおかげで、OAuth2 認証トークンなど、認証システムがサポートして公開することを選択している任意の認証トークンへのアクセスを提供できます。
+
+
+</p>
+<p>
+    認証は必須ではありませんが、たいていの連絡先サービスが使用しています。
+    ただし、認証に Android 認証フレームワークを使用する必要はありません。
+</p>
+<h3 id="SyncAdapterImplementing">同期アダプタの実装</h3>
+<p>
+    連絡先プロバイダ用の同期アダプタを実装するには、まず以下を備えた Android アプリケーションを作成します。
+
+</p>
+    <dl>
+        <dt>
+            システムからの同期アダプタとのバインド要求に対処する {@link android.app.Service} コンポーネント。
+
+        </dt>
+        <dd>
+            システムは、同期しようとするとき、サービスの {@link android.app.Service#onBind(Intent) onBind()} メソッドを呼び出して、同期アダプタの {@link android.os.IBinder} を取得します。
+
+これにより、システムはアダプタのメソッドに対するプロセス間呼び出しを実行できます。
+
+            <p>
+                <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">サンプル同期アダプタ</a>のサンプルアプリで、このサービスのクラス名は <code>com.example.android.samplesync.syncadapter.SyncService</code> です。
+
+
+            </p>
+        </dd>
+        <dt>
+            {@link android.content.AbstractThreadedSyncAdapter} の具象サブクラスとして実装された、実際の同期アダプタ。
+
+        </dt>
+        <dd>
+            このクラスが、サーバーからのデータのダウンロード、端末からのデータのアップロード、競合の解消といった作業を実施します。
+アダフタの主な作業は、メソッド {@link android.content.AbstractThreadedSyncAdapter#onPerformSync( Account, Bundle, String, ContentProviderClient, SyncResult) onPerformSync()} で実行されます。
+
+
+このクラスは、シングルトンとしてインスタンス化する必要があります。
+            <p>
+                <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">サンプル同期アダプタ</a>のサンプルアプリで、同期アダプタはクラス <code>com.example.android.samplesync.syncadapter.SyncAdapter</code> に定義されています。
+
+
+            </p>
+        </dd>
+        <dt>
+            {@link android.app.Application} のサブクラス。
+        </dt>
+        <dd>
+            このクラスは同期アダプタ シングルトンのファクトリとして機能します。同期アダプタのインスタンス化には {@link android.app.Application#onCreate()} メソッドを使用し、同期アダプタ シングルトンを同期アダプタのサービスの {@link android.app.Service#onBind(Intent) onBind()} メソッドに返すための静的な「getter」メソッドを提供します。
+
+
+
+
+        </dd>
+        <dt>
+            <strong>省略可能:</strong> システムからのユーザー認証要求に対処する {@link android.app.Service} コンポーネント。
+
+        </dt>
+        <dd>
+            {@link android.accounts.AccountManager} は、このサービスを開始することによって認証プロセスを始めます。
+サービスの {@link android.app.Service#onCreate()} メソッドは、認証システム オブジェクトをインスタンス化します。
+システムは、アプリケーションの同期アダプタのためにユーザー アカウントを認証しようとするとき、サービスの {@link android.app.Service#onBind(Intent) onBind()} メソッドを呼び出して、認証システムの {@link android.os.IBinder} を取得します。
+
+
+これにより、システムは認証システムのメソッドに対するプロセス間呼び出しを実行できます。
+
+            <p>
+                <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">サンプル同期アダプタ</a>のサンプルアプリで、このサービスのクラス名は <code>com.example.android.samplesync.authenticator.AuthenticationService</code> です。
+
+
+            </p>
+        </dd>
+        <dt>
+            <strong>省略可能:</strong> 認証の要求を処理する {@link android.accounts.AbstractAccountAuthenticator} の具象サブクラス。
+
+
+        </dt>
+        <dd>
+            このクラスは、ユーザーの資格情報をサーバーに対して認証するために {@link android.accounts.AccountManager} が呼び出すメソッドを提供します。認証プロセスの詳細は、使用されているサーバー技術に応じて多岐にわたります。
+
+認証について詳しくは、使用するサーバー ソフトウェアのドキュメントをご覧ください。
+
+            <p>
+                <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">サンプル同期アダプタ</a>のサンプルアプリで、認証はクラス <code>com.example.android.samplesync.authenticator.Authenticator</code> に定義されています。
+
+
+            </p>
+        </dd>
+        <dt>
+            システムに対する同期アダプタと認証システムを定義する XML ファイル。
+        </dt>
+        <dd>
+            前述の同期アダプタと認証システム サービスのコンポーネントは、アプリケーション マニフェストの <code>&lt;<a href="{@docRoot}guide/topics/manifest/service-element.html">service</a>&gt;</code> 要素に定義されます。
+
+
+これらの要素には、特定のデータをシステムに提供する次のような <code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code> 子要素が含まれます。
+
+
+
+
+            <ul>
+                <li>
+                    同期アダプタ サービス用の <code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code> 要素は、XML ファイル <code>res/xml/syncadapter.xml</code> を指します。
+
+
+このファイルが、連絡先プロバイダと同期されるウェブサービスの URI と、そのウェブサービスで使用するアカウント タイプを指定します。
+
+
+                </li>
+                <li>
+                    <strong>省略可能:</strong> 認証システム用の <code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code> 要素は、XML ファイル <code>res/xml/authenticator.xml</code> を指します。
+
+
+このファイルが、この認証システムがサポートするアカウント タイプと、認証プロセスの最中に表示される UI リソースを指定します。
+
+この要素に指定されるアカウント タイプは、同期アダプタ用に指定されるアカウント タイプと同じであることが必要です。
+
+
+                </li>
+            </ul>
+        </dd>
+    </dl>
+<h2 id="SocialStream">ソーシャル ストリーム データ</h2>
+<p>
+    {@code android.provider.ContactsContract.StreamItems} テーブルと {@code android.provider.ContactsContract.StreamItemPhotos} テーブルは、ソーシャル ネットワークからの受信データを管理します。
+
+独自ネットワークからのストリーム データをこれらのテーブルに追加する同期アダプタを作成したり、ストリーム データをこれらのテーブルから読み込んで独自アプリケーションに表示したり、この両方を行ったりできます。
+
+このような機能があると、ソーシャル ネットワーキングのサービスやアプリケーションを Android のソーシャル ネットワーキング機能に統合できます。
+
+</p>
+<h3 id="StreamText">ソーシャル ストリーム テキスト</h3>
+<p>
+    ストリーム アイテムは、必ず未加工連絡先に関連付けられます。{@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID} は、未加工連絡先の <code>_ID</code> 値にリンクされます。
+
+未加工連絡先のアカウント タイプとアカウント名は、ストリーム アイテム行にも格納されます。
+
+</p>
+<p>
+    ストリームからのデータを次の列に格納します。
+</p>
+<dl>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_TYPE}
+    </dt>
+    <dd>
+        <strong>必須</strong>。このストリーム アイテムに関連付けられている未加工連絡先の、ユーザーのアカウント タイプ。
+ストリーム アイテムを挿入する際には、この値を忘れずに設定してください。
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_NAME}
+    </dt>
+    <dd>
+        <strong>必須</strong>。このストリーム アイテムに関連付けられている未加工連絡先の、ユーザーのアカウント名。
+ストリーム アイテムを挿入する際には、この値を忘れずに設定してください。
+    </dd>
+    <dt>
+        識別用列
+    </dt>
+    <dd>
+        <strong>必須</strong>。ストリーム アイテムを挿入する際には、次の識別用列を挿入する必要があります。
+
+        <ul>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_ID}:このストリーム アイテムが関連付けられている連絡先の {@code android.provider.BaseColumns#_ID} 値。
+
+
+            </li>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_LOOKUP_KEY}: このストリーム アイテムが関連付けられている連絡先の {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} 値。
+
+
+            </li>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}:このストリーム アイテムが関連付けられている未加工連絡先の {@code android.provider.BaseColumns#_ID} 値。
+
+
+            </li>
+        </ul>
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#COMMENTS}
+    </dt>
+    <dd>
+        省略可能。ストリーム アイテムの冒頭に表示できる概要情報を格納します。
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#TEXT}
+    </dt>
+    <dd>
+        ストリーム アイテムのテキスト。アイテムのソースによって投稿されたコンテンツか、そのストリーム アイテムを生成した何らかのアクションに関する説明です。
+この列には、{@link android.text.Html#fromHtml(String) fromHtml()} でレンダリングできる任意の書式や埋め込みリソース画像を含めることができます。
+
+プロバイダは、長いコンテンツを切り捨てたり省いたりすることがありますが、タグは壊さないようにします。
+
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP}
+    </dt>
+    <dd>
+        ストリーム アイテムが挿入またはアップデートされた時刻を含むテキスト。エポックからのミリ秒<em></em>の形式です。
+ストリーム アイテムを挿入またはアップデートするアプリケーションは、この列の管理を担当します。この列は、連絡先プロバイダによって自動的に管理されるわけではありません。
+
+
+    </dd>
+</dl>
+<p>
+    ストリーム アイテムの識別情報を表示するには、{@code android.provider.ContactsContract.StreamItemsColumns#RES_ICON}、{@code android.provider.ContactsContract.StreamItemsColumns#RES_LABEL}、{@code android.provider.ContactsContract.StreamItemsColumns#RES_PACKAGE} を使用してアプリケーション内のリソースにリンクします。
+
+
+
+
+</p>
+<p>
+    {@code android.provider.ContactsContract.StreamItems} テーブルには、同期アダプタ専用に列 {@code android.provider.ContactsContract.StreamItemsColumns#SYNC1} ~ {@code android.provider.ContactsContract.StreamItemsColumns#SYNC4} も格納されます。
+
+
+
+</p>
+<h3 id="StreamPhotos">ソーシャル ストリーム フォト</h3>
+<p>
+   {@code android.provider.ContactsContract.StreamItemPhotos} テーブルには、ストリーム アイテムに関連付けられた写真が格納されます。
+このテーブルの {@code android.provider.ContactsContract.StreamItemPhotosColumns#STREAM_ITEM_ID} 列は、{@code android.provider.ContactsContract.StreamItems} テーブルの {@code android.provider.BaseColumns#_ID} 列の値にリンクされます。
+
+
+写真の参照は、テーブルの次の列に格納されます。
+
+</p>
+<dl>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotos#PHOTO} 列(BLOB)。
+    </dt>
+    <dd>
+        写真のバイナリ表現。格納や表示のためにプロバイダによってサイズが変更されます。
+        この列は、写真を格納するために使用されていた連絡先プロバイダの従来のバージョンとの下方互換性のために用意されています。
+ただし、現在のバージョンでは、写真の格納にこの列を使用しないでください。
+代わりに、{@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID} または {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI}(どちらについても次の項目で説明します)を使用して、写真をファイルに保存します。
+
+
+現状では、この列には写真のサムネイルが格納されており、読み出し可能です。
+
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID}
+    </dt>
+    <dd>
+        未加工連絡先の写真の数値 ID。この値を定数 {@link android.provider.ContactsContract.DisplayPhoto#CONTENT_URI DisplayPhoto.CONTENT_URI} の末尾に追加して、1 つの写真ファイルを指すコンテンツ URI を取得し、{@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String) openAssetFileDescriptor()} を呼び出して、その写真ファイルのハンドルを取得します。
+
+
+
+
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI}
+    </dt>
+    <dd>
+        この行によって表されている写真の写真ファイルを直接指すコンテンツ URI。
+        この URI を使用して {@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String) openAssetFileDescriptor()} を呼び出して、写真ファイルのハンドルを取得します。
+
+    </dd>
+</dl>
+<h3 id="SocialStreamTables">ソーシャル ストリーム テーブルの使用</h3>
+<p>
+    これらのテーブルは、連絡先プロバイダの他の主なテーブルと同じように機能しますが、次のような例外があります。
+</p>
+    <ul>
+        <li>
+            これらのテーブルには、追加のアクセス パーミッションが必要です。これらからの読み出しには、アプリケーションにパーミッション {@code android.Manifest.permission#READ_SOCIAL_STREAM} が必要です。
+これらの変更には、アプリケーションにパーミッション {@code android.Manifest.permission#WRITE_SOCIAL_STREAM} が必要です。
+
+
+        </li>
+        <li>
+            {@code android.provider.ContactsContract.StreamItems} テーブルについては、各未加工連絡先に格納できる行数に上限があります。
+上限に達すると、連絡先プロバイダは最も古い {@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP} を持つ行を自動的に削除して、新しいストリーム アイテムのための領域を作ります。
+
+
+この上限を取得するには、コンテンツ URI {@code android.provider.ContactsContract.StreamItems#CONTENT_LIMIT_URI} にクエリを発行します。
+
+コンテンツ URI を除くすべての引数は、<code>null</code> のままでかまいません。
+このクエリは、列 {@code android.provider.ContactsContract.StreamItems#MAX_ITEMS} だけの 1 行を含む Cursor を返します。
+
+
+        </li>
+    </ul>
+
+<p>
+    クラス {@code android.provider.ContactsContract.StreamItems.StreamItemPhotos} は、1 つのストリーム アイテムの写真行を含む {@code android.provider.ContactsContract.StreamItemPhotos} のサブテーブルを定義します。
+
+
+</p>
+<h3 id="SocialStreamInteraction">ソーシャル ストリーム操作</h3>
+<p>
+    連絡先プロバイダによって端末の連絡先アプリケーションと連携して管理されるソーシャル ストリーム データは、ソーシャル ネットワーキング システムと既存の連絡先を接続するためのとても便利な手段を用意しています。
+
+利用できる機能は次のとおりです。
+</p>
+    <ul>
+        <li>
+            ソーシャル ネットワーキング サービスを連絡先プロバイダに同期アダプタを使用して同期することで、ユーザーの連絡先による最近のアクティビティを取得し、それを {@code android.provider.ContactsContract.StreamItems} テーブルや {@code android.provider.ContactsContract.StreamItemPhotos} テーブルに格納して後で使えるようにできます。
+
+
+
+        </li>
+        <li>
+            ユーザーが連絡先を選択して表示したときには、定期的な同期とは別に同期アダプタを起動して追加データを取得できます。
+この機能により、同期アダプタは連絡先の高解像度の写真や直近のストリーム アイテムを取得できます。
+
+        </li>
+        <li>
+            端末の連絡先アプリケーションと連絡先プロバイダに関する通知を登録すると、連絡先が表示された場合にインテントを受信<em></em>し、その時点で連絡先のステータスをサービスからアップデートできます。
+
+このアプローチは、同期アダプタを使用してフル同期を実施するより、処理が速く、帯域幅が節約されます。
+
+        </li>
+        <li>
+            ユーザーが端末の連絡先アプリケーションで連絡先を見ている間に、その連絡先をソーシャル ネットワーキング サービスに追加できます。
+この機能は「連絡先の招待」機能を使用して実現できます。連絡先の招待は、既存の連絡先をネットワークに追加するアクティビティと、端末の連絡先アプリケーションと連絡先プロバイダにアプリケーションの詳細を提供する XML ファイルとを組み合わせて実現できます。
+
+
+
+        </li>
+    </ul>
+<p>
+    連絡先プロバイダを使用したストリーム アイテムの定期的な同期は、他の同期と同じです。
+同期について詳しくは、<a href="#SyncAdapters">連絡先プロバイダの同期アダプタ</a>をご覧ください。
+通知の登録と連絡先の招待については、次の 2 つのセクションで説明します。
+
+</p>
+<h4>ソーシャル ネットワーキング表示を処理するための登録</h4>
+<p>
+    同期アダプタを登録し、同期アダプタによって管理されている連絡先をユーザーが表示したときに通知されるようにする方法は、次のとおりです。
+
+</p>
+<ol>
+    <li>
+        <code>contacts.xml</code> という名前のファイルをプロジェクトの <code>res/xml/</code> ディレクトリに作成します。
+このファイルが既に存在する場合は、この手順を省略できます。
+    </li>
+    <li>
+        このファイルに要素 <code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code> を追加します。
+
+        この要素が既に存在する場合は、この手順を省略できます。
+    </li>
+    <li>
+        ユーザーが端末の連絡先アプリケーションで連絡先の詳細ページを開いたときに通知されるサービスを登録するには、属性 <code>viewContactNotifyService="<em>serviceclass</em>"</code> を要素に追加します。<code><em>serviceclass</em></code> は、端末の連絡先アプリケーションからインテントを受け取ることになるサービスの完全修飾クラス名です。
+
+
+
+通知側サービスのために、{@link android.app.IntentService} を機能拡張したクラスを使用して、そのサービスがインテントを受け取れるようにします。
+
+受け取るインテントに含まれるデータには、ユーザーがクリックした未加工連絡先のコンテンツ URI が格納されます。
+通知側サービスから、同期アダプタをバインドして呼び出し、未加工連絡先のデータをアップデートできます。
+
+    </li>
+</ol>
+<p>
+    ユーザーがストリーム アイテムかストリーム フォトかその両方をクリックしたときに呼び出されるアクティビティを登録する方法は次のとおりです。
+</p>
+<ol>
+    <li>
+        <code>contacts.xml</code> という名前のファイルをプロジェクトの <code>res/xml/</code> ディレクトリに作成します。
+このファイルが既に存在する場合は、この手順を省略できます。
+    </li>
+    <li>
+        このファイルに要素 <code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code> を追加します。
+
+        この要素が既に存在する場合は、この手順を省略できます。
+    </li>
+    <li>
+        アクティビティのどれかを登録して、ユーザーが端末の連絡先アプリケーションでストリーム アイテムをタップしたことに対処するには、属性 <code>viewStreamItemActivity="<em>activityclass</em>"</code> を要素に追加します。<code><em>activityclass</em></code> は、端末の連絡先アプリケーションからインテントを受け取ることになるアクティビティの完全修飾クラス名です。
+
+
+
+
+    </li>
+    <li>
+        アクティビティのどれかを登録して、ユーザーが端末の連絡先アプリケーションでストリーム フォトをタップしたことに対処するには、属性 <code>viewStreamItemPhotoActivity="<em>activityclass</em>"</code> を要素に追加します。<code><em>activityclass</em></code> は、端末の連絡先アプリケーションからインテントを受け取ることになるアクティビティの完全修飾クラス名です。
+
+
+
+
+    </li>
+</ol>
+<p>
+    <code>&lt;ContactsAccountType&gt;</code> 要素については、<a href="#SocialStreamAcctType">&lt;ContactsAccountType&gt; 要素</a>で詳しく説明しています。
+
+</p>
+<p>
+    受け取るインテントには、ユーザーがクリックしたアイテムまたは写真のコンテンツ URI が格納されます。
+    テキスト アイテムと写真とで異なるアクティビティを使用するには、同じファイルで両方の属性を使用します。
+</p>
+<h4>ソーシャル ネットワーキング サービスの操作</h4>
+<p>
+    ユーザーは、連絡先をソーシャル ネットワーキング サービスに招待するのに、端末の連絡先アプリケーションを離れる必要はありません。
+その代わりとして、連絡先をアクティビティのどれかに招待するインテントを端末の連絡先アプリケーションに送信させることができます。
+これをセットアップする方法は次のとおりです。
+</p>
+<ol>
+    <li>
+        <code>contacts.xml</code> という名前のファイルをプロジェクトの <code>res/xml/</code> ディレクトリに作成します。
+このファイルが既に存在する場合は、この手順を省略できます。
+    </li>
+    <li>
+        このファイルに要素 <code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code> を追加します。
+
+        この要素が既に存在する場合は、この手順を省略できます。
+    </li>
+    <li>
+        次の属性を追加します。
+        <ul>
+            <li><code>inviteContactActivity="<em>activityclass</em>"</code></li>
+            <li>
+                <code>inviteContactActionLabel="&#64;string/<em>invite_action_label</em>"</code>
+            </li>
+        </ul>
+        <code><em>activityclass</em></code> 値は、インテントを受信するアクティビティの完全修飾クラス名です。
+<code><em>invite_action_label</em></code> 値は、端末の連絡先アプリケーションの [<strong>Add Connection</strong>] メニューに表示される文字列です。
+
+
+    </li>
+</ol>
+<p class="note">
+    <strong>注:</strong> <code>ContactsSource</code> は廃止されたタグ名で、<code>ContactsAccountType</code> に置き換わっています。
+
+</p>
+<h3 id="ContactsFile">contacts.xml リファレンス</h3>
+<p>
+    ファイル <code>contacts.xml</code> には、同期アダプタやアプリケーションと連絡先アプリケーションや連絡先プロバイダとのやり取りを管理する XML 要素が含まれています。
+これらの要素について、以降のセクションで説明します。
+
+</p>
+<h4 id="SocialStreamAcctType">&lt;ContactsAccountType&gt; 要素</h4>
+<p>
+    <code>&lt;ContactsAccountType&gt;</code> 要素は、アプリケーションと連絡先アプリケーションとのやり取りを管理します。
+構文は次のとおりです。
+</p>
+<pre>
+&lt;ContactsAccountType
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        inviteContactActivity="<em>activity_name</em>"
+        inviteContactActionLabel="<em>invite_command_text</em>"
+        viewContactNotifyService="<em>view_notify_service</em>"
+        viewGroupActivity="<em>group_view_activity</em>"
+        viewGroupActionLabel="<em>group_action_text</em>"
+        viewStreamItemActivity="<em>viewstream_activity_name</em>"
+        viewStreamItemPhotoActivity="<em>viewphotostream_activity_name</em>"&gt;
+</pre>
+<p>
+    <strong>含まれているファイル:</strong> 
+</p>
+<p>
+    <code>res/xml/contacts.xml</code>
+</p>
+<p>
+    <strong>含めることのできる要素:</strong> 
+</p>
+<p>
+    <strong><code>&lt;ContactsDataKind&gt;</code></strong>
+</p>
+<p>
+    <strong>説明:</strong> 
+</p>
+<p>
+    ユーザーが連絡先の 1 人をソーシャル ネットワーキングに招待できるようにしたり、ソーシャル ネットワーキング ストリームのどれかがアップデートされたらユーザーに通知したりするための、Android コンポーネントや UI ラベルを宣言します。
+
+
+</p>
+<p>
+    属性プレフィックス <code>android:</code> は、<code>&lt;ContactsAccountType&gt;</code> の属性に必須ではないことに注目してください。
+
+</p>
+<p>
+    <strong>属性:</strong> 
+</p>
+<dl>
+    <dt>{@code inviteContactActivity}</dt>
+    <dd>
+        ユーザーが端末の連絡先アプリケーションで [<strong>Add Connection</strong>] を選択したときに起動する、アプリケーション内のアクティビティの完全修飾クラス名。
+
+
+    </dd>
+    <dt>{@code inviteContactActionLabel}</dt>
+    <dd>
+        [<strong>Add Connection</strong>] メニューで、{@code inviteContactActivity} に指定されたアクティビティ用に表示されるテキスト。
+
+        たとえば、文字列「Follow in my network」を指定できます。このラベルには文字列リソース ID を使用できます。
+
+    </dd>
+    <dt>{@code viewContactNotifyService}</dt>
+    <dd>
+        ユーザーが連絡先を表示したときに通知を受け取ることになる、独自アプリケーション内のサービスの完全修飾クラス名。
+この通知は端末の連絡先アプリケーションによって送信されます。これを使用することで、アプリケーションはデータ処理の多い操作を必要になるまで延期できます。
+
+たとえば、アプリケーションはこの通知への対応として、連絡先の高解像度写真と直近のソーシャル ストリーム アイテムを読み込んで表示できます。
+
+この機能について詳しくは、<a href="#SocialStreamInteraction">ソーシャル ストリーム操作</a>で説明しています。
+<code>NotifierService.java</code> ファイルに指定された通知サービスの例は、<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a> サンプル アプリケーションにあります。
+
+
+
+    </dd>
+    <dt>{@code viewGroupActivity}</dt>
+    <dd>
+        グループ情報を表示できる、独自アプリケーション内のアクティビティの完全修飾クラス名。
+ユーザーが端末の連絡先アプリケーションでグループラベルをタップすると、このアクティビティの UI が表示されます。
+
+    </dd>
+    <dt>{@code viewGroupActionLabel}</dt>
+    <dd>
+        ユーザーがアプリケーションでグループを表示できるようにする UI コントロールに対し、連絡先アプリケーションが表示するラベル。
+
+        <p>
+            たとえば、端末に Google+ アプリケーションをインストールし、Google+ を連絡先アプリケーションと同期すると、Google+ のサークルが連絡先アプリケーションの [<strong>グループ</strong>] タブにグループとして表示されます。
+
+Google+ サークルのどれかをクリックすると、そのサークルに所属する人が「グループ」として表示されます。
+表示の最上部に、Google+ アイコンが表示されます。それをクリックすると、制御が Google+ アプリに移ります。連絡先アプリケーションはこれを {@code viewGroupActivity} を使用して行い、Google+ アイコンを {@code viewGroupActionLabel} の値として使用します。
+
+
+
+
+        </p>
+        <p>
+            この属性には、文字列リソース ID を使用できます。
+        </p>
+    </dd>
+    <dt>{@code viewStreamItemActivity}</dt>
+    <dd>
+        ユーザーが未加工連絡先のストリーム アイテムをタップしたときに端末の連絡先アプリケーションが起動する、独自アプリケーション内のアクティビティの完全修飾クラス名。
+
+    </dd>
+    <dt>{@code viewStreamItemPhotoActivity}</dt>
+    <dd>
+        ユーザーが未加工連絡先のストリーム アイテムで写真をタップしたときに端末の連絡先アプリケーションが起動する、独自アプリケーション内のアクティビティの完全修飾クラス名。
+
+
+    </dd>
+</dl>
+<h4 id="SocialStreamDataKind">&lt;ContactsDataKind&gt; 要素</h4>
+<p>
+    <code>&lt;ContactsDataKind&gt;</code> 要素は、連絡先アプリケーションにおける独自アプリケーションのカスタムデータ行の表示を管理します。構文は次のとおりです。
+
+</p>
+<pre>
+&lt;ContactsDataKind
+        android:mimeType="<em>MIMEtype</em>"
+        android:icon="<em>icon_resources</em>"
+        android:summaryColumn="<em>column_name</em>"
+        android:detailColumn="<em>column_name</em>"&gt;
+</pre>
+<p>
+    <strong>含まれているファイル:</strong> 
+</p>
+<code>&lt;ContactsAccountType&gt;</code>
+<p>
+    <strong>説明:</strong> 
+</p>
+<p>
+    この要素は、カスタムデータ行のコンテンツを未加工連絡先の詳細の一部として連絡先アプリケーションに表示させるために使用します。
+<code>&lt;ContactsAccountType&gt;</code> の各 <code>&lt;ContactsDataKind&gt;</code> 子要素は、同期アダプタが {@link android.provider.ContactsContract.Data} テーブルに追加するカスタムデータ行のタイプを表します。
+
+使用するカスタム MIME タイプごとに <code>&lt;ContactsDataKind&gt;</code> 要素を 1 つ追加します。
+データを表示しないカスタムデータ行がある場合は、この要素を追加する必要はありません。
+
+</p>
+<p>
+    <strong>属性:</strong> 
+</p>
+<dl>
+    <dt>{@code android:mimeType}</dt>
+    <dd>
+        {@link android.provider.ContactsContract.Data} テーブルに含まれるカスタムデータ行のどれかに定義したカスタム MIME タイプ。
+たとえば、値 <code>vnd.android.cursor.item/vnd.example.locationstatus</code> は、連絡先の最新の場所情報を記録するデータ行のためのカスタム MIME タイプということが考えられます。
+
+
+    </dd>
+    <dt>{@code android:icon}</dt>
+    <dd>
+        連絡先アプリケーションがデータの隣に表示する Android <a href="{@docRoot}guide/topics/resources/drawable-resource.html">ドローアブル リソース</a>。
+
+そのデータが独自サービスからのものであることを示すのに使用します。
+
+    </dd>
+    <dt>{@code android:summaryColumn}</dt>
+    <dd>
+        データ行から取得された 2 つの値で最初の列名。この値は、このデータ行のエントリの先頭行として表示されます。
+この先頭行は、データの要約として使われることを狙ったものですが、省略可能です。
+<a href="#detailColumn">android:detailColumn</a> もご覧ください。
+
+    </dd>
+    <dt>{@code android:detailColumn}</dt>
+    <dd>
+        データ行から取得された 2 つの値で 2 番目の列名。この値は、このデータ行のエントリの 2 行目として表示されます。
+{@code android:summaryColumn} もご覧ください。
+
+    </dd>
+</dl>
+<h2 id="AdditionalFeatures">連絡先プロバイダの追加機能</h2>
+<p>
+    ここまでのセクションで説明した主な機能の他に、連絡先プロバイダには連絡先データの作業用として次のような便利な機能が用意されています。
+
+</p>
+    <ul>
+       <li>連絡先グループ</li>
+       <li>写真機能</li>
+    </ul>
+<h3 id="Groups">連絡先グループ</h3>
+<p>
+    連絡先プロバイダでは、オプションで、関連連絡先のコレクションを<strong>グループ</strong> データでラベル付けできます。
+あるユーザー アカウントに関連付けられているサーバーがグループを管理する場合、そのアカウントのアカウント タイプ用の同期アダプタが、連絡先プロバイダとサーバーとの間でグループデータを転送する必要があります。
+
+ユーザーが新しい連絡先をサーバーに追加し、その連絡先を新しいグループに入れた場合、同期アダプタはその新しいグループを {@link android.provider.ContactsContract.Groups} テーブルに追加する必要があります。
+
+ある未加工連絡先が属するグループ(複数の場合あり)は、{@link android.provider.ContactsContract.Data} テーブルに、{@link android.provider.ContactsContract.CommonDataKinds.GroupMembership} MIME タイプを使用して格納されます。
+
+
+</p>
+<p>
+    サーバーからの未加工連絡先データを連絡先プロバイダに追加する同期アダプタを設計している場合、グループを使用しないのであれば、連絡先プロバイダに対してデータが可視であることを通知する必要があります。
+
+ユーザーがアカウントを端末に追加したときに実行されるコード内で、連絡先プロバイダがそのアカウントに対して追加する {@link android.provider.ContactsContract.Settings} 行をアップデートします。
+
+この行で、{@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE Settings.UNGROUPED_VISIBLE} 列の値を 1 に設定します。
+
+こうすると、連絡先プロバイダは、グループを使用していない場合でも、独自の連絡先データを可視にします。
+
+</p>
+<h3 id="Photos">連絡先の写真</h3>
+<p>
+    {@link android.provider.ContactsContract.Data} テーブルは、写真を MIME タイプ {@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE Photo.CONTENT_ITEM_TYPE} の行として格納します。
+
+この行の {@link android.provider.ContactsContract.RawContactsColumns#CONTACT_ID} 列は、それが属する未加工連絡先の {@code android.provider.BaseColumns#_ID} 列にリンクされます。
+
+
+    クラス {@link android.provider.ContactsContract.Contacts.Photo} は、連絡先のプライマリ フォトの写真情報を格納する {@link android.provider.ContactsContract.Contacts} のサブテーブルを定義します。ここでプライマリ フォトとは、連絡先のプライマリ未加工連絡先のプライマリ フォトのことを示します。
+
+同様に、クラス {@link android.provider.ContactsContract.RawContacts.DisplayPhoto} は、未加工連絡先のプライマリ フォトに関する情報を含む {@link android.provider.ContactsContract.RawContacts} のサブテーブルを定義します。
+
+
+
+</p>
+<p>
+    {@link android.provider.ContactsContract.Contacts.Photo} と {@link android.provider.ContactsContract.RawContacts.DisplayPhoto} の参照ドキュメントには、写真情報の取得例が含まれています。
+
+未加工連絡先のプライマリ サムネイルを取得するための便利なクラスはありませんが、{@link android.provider.ContactsContract.Data} テーブルにクエリを送信して、未加工連絡先の {@code android.provider.BaseColumns#_ID}、{@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE Photo.CONTENT_ITEM_TYPE}、{@link android.provider.ContactsContract.Data#IS_PRIMARY} 列を選んでその未加工連絡先のプライマリ フォト行を探すことができます。
+
+
+
+
+
+
+</p>
+<p>
+    人のソーシャル ストリーム データにも写真が含まれていることがあります。その場合は {@code android.provider.ContactsContract.StreamItemPhotos} テーブルに格納されています。このテーブルについては、<a href="#StreamPhotos">ソーシャル ストリーム フォト</a>で詳しく説明しています
+
+
+</p>
diff --git a/docs/html-intl/intl/ja/guide/topics/providers/content-provider-basics.jd b/docs/html-intl/intl/ja/guide/topics/providers/content-provider-basics.jd
new file mode 100644
index 0000000..9eef5d6
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/providers/content-provider-basics.jd
@@ -0,0 +1,1196 @@
+page.title=コンテンツ プロバイダの基本
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<!-- In this document -->
+<h2>本書の内容</h2>
+<ol>
+    <li>
+        <a href="#Basics">概要</a>
+        <ol>
+            <li>
+                <a href="#ClientProvider">プロバイダにアクセスする</a>
+            </li>
+            <li>
+                <a href="#ContentURIs">コンテンツ URI</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#SimpleQuery">プロバイダからデータを取得する</a>
+        <ol>
+            <li>
+                <a href="#RequestPermissions">読み取りアクセス パーミッションを要求する</a>
+            </li>
+            <li>
+                <a href="#Query">クエリを作成する</a>
+            </li>
+            <li>
+                <a href="#DisplayResults">クエリ結果を表示する</a>
+            </li>
+            <li>
+                <a href="#GettingResults">クエリ結果を取得する</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#Permissions">コンテンツ プロバイダ パーミッション</a>
+    </li>
+    <li>
+        <a href="#Modifications">データを挿入、更新、削除する</a>
+        <ol>
+            <li>
+                <a href="#Inserting">データを挿入する</a>
+            </li>
+            <li>
+                <a href="#Updating">データを更新する</a>
+            </li>
+            <li>
+                <a href="#Deleting">データを削除する</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#DataTypes">プロバイダ データタイプ</a>
+    </li>
+    <li>
+        <a href="#AltForms">プロバイダ アクセスの別の形式</a>
+        <ol>
+            <li>
+                <a href="#Batch">バッチアクセス</a>
+            </li>
+            <li>
+                <a href="#Intents">インテント経由のデータアクセス</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#ContractClasses">コントラクト クラス</a>
+    </li>
+    <li>
+        <a href="#MIMETypeReference">MIME タイプ リファレンス</a>
+    </li>
+</ol>
+
+    <!-- Key Classes -->
+<h2>キークラス</h2>
+    <ol>
+        <li>
+            {@link android.content.ContentProvider}
+        </li>
+        <li>
+            {@link android.content.ContentResolver}
+        </li>
+        <li>
+            {@link android.database.Cursor}
+        </li>
+        <li>
+            {@link android.net.Uri}
+        </li>
+    </ol>
+
+    <!-- Related Samples -->
+<h2>関連サンプル</h2>
+    <ol>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html">
+        Cursor (People)</a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html">
+        Cursor (Phones)</a>
+        </li>
+    </ol>
+
+    <!-- See also -->
+<h2>関連ドキュメント</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+            コンテンツ プロバイダの作成</a>
+        </li>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+            カレンダー プロバイダ</a>
+        </li>
+    </ol>
+</div>
+</div>
+
+    <!-- Intro paragraphs -->
+<p>
+    コンテンツ プロバイダは、データの中央リポジトリへのアクセスを管理します。プロバイダは Android アプリケーションの一部であり、通常、データを処理するための独自の UI を備えています。
+
+ただし、コンテンツ プロバイダは主に他のアプリケーションでの使用を意図したものです。アプリケーションはプロバイダ クライアント オブジェクトを使用してプロバイダにアクセスします。
+さらに、プロバイダとプロバイダ クライアントにはデータを扱うための一貫性のある標準のインターフェースが備わっており、プロセス間の通信や安全なデータ アクセスを処理します。
+
+
+</p>
+<p>
+    このトピックでは、次の項目に関する基本的な内容を説明します。
+</p>
+    <ul>
+        <li>コンテンツ プロバイダの仕組み。</li>
+        <li>コンテンツ プロバイダからのデータの取得に使用する API。</li>
+        <li>コンテンツ プロバイダへのデータの挿入、データの更新や削除に使用する API。</li>
+        <li>プロバイダでの作業に役立つその他の API 機能。</li>
+    </ul>
+
+    <!-- Basics -->
+<h2 id="Basics">概要</h2>
+<p>
+    外部アプリケーションでは、コンテンツ プロバイダのデータは、リレーショナル データベースで使用する表と同様に、1 つ以上の表として表示されます。
+行はプロバイダが収集するデータの何らかのタイプのインスタンスを表しており、行内のそれぞれの列はインスタンスに対して収集した個々のデータを表しています。
+
+
+</p>
+<p>
+    たとえば、Android プラットフォームに組み込まれているプロバイダの 1 つに単語リストがありますが、ここにはユーザーが保存しておく標準以外の単語のスペリングが格納されます
+表 1 は、このプロバイダの表にデータがどのように格納されているのかを表しています。
+
+</p>
+<p class="table-caption">
+    <strong>表 1:</strong> サンプルの単語リスト表。
+</p>
+<table id="table1" style="width: 50%;">
+    <tr>
+        <th style="width:20%" align="center" scope="col">word</th>
+        <th style="width:20%" align="center" scope="col">app id</th>
+        <th style="width:20%" align="center" scope="col">frequency</th>
+        <th style="width:20%" align="center" scope="col">locale</th>
+        <th style="width:20%" align="center" scope="col">_ID</th>
+    </tr>
+    <tr>
+        <td align="center" scope="row">mapreduce</td>
+        <td align="center">user1</td>
+        <td align="center">100</td>
+        <td align="center">en_US</td>
+        <td align="center">1</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">precompiler</td>
+        <td align="center">user14</td>
+        <td align="center">200</td>
+        <td align="center">fr_FR</td>
+        <td align="center">2</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">applet</td>
+        <td align="center">user2</td>
+        <td align="center">225</td>
+        <td align="center">fr_CA</td>
+        <td align="center">3</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">const</td>
+        <td align="center">user1</td>
+        <td align="center">255</td>
+        <td align="center">pt_BR</td>
+        <td align="center">4</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">int</td>
+        <td align="center">user5</td>
+        <td align="center">100</td>
+        <td align="center">en_UK</td>
+        <td align="center">5</td>
+    </tr>
+</table>
+<p>
+    表 1 の各行は、標準の辞書には含まれていない単語のインスタンスを表しています。
+各列は、該当する単語のデータの一部(その単語が最初に見つかったロケールなど)を表しています。
+列の見出しは、プロバイダに格納される列の名前です。
+行のロケールを調べるには、<code>locale</code> 列を参照します。このプロバイダの場合、<code>_ID</code> 列が「プライマリキー」の列の役割を果たし、プロバイダはこの列を自動的に保持します。
+
+
+</p>
+<p class="note">
+    <strong>注:</strong> プロバイダはプライマリキーを持つ必要がなく、プライマリキーがある場合は <code>_ID</code> をプライマリキーの列名として使用する必要はありません。
+ただし、プロバイダのデータを {@link android.widget.ListView} にバインドする場合は、いずれかの列の名前を <code>_ID</code> とする必要があります。
+
+この要件についての詳細は、<a href="#DisplayResults">クエリ結果を表示する</a>セクションをご覧ください。
+
+</p>
+<h3 id="ClientProvider">プロバイダにアクセスする</h3>
+<p>
+    アプリケーションは、{@link android.content.ContentResolver} クライアント オブジェクトを使用して、コンテンツ プロバイダのデータにアクセスします。
+このオブジェクトには、プロバイダ オブジェクトの同名のメソッドを呼び出すメソッドが備わっています。これは、{@link android.content.ContentProvider} の具体的なサブクラスのインスタンスのいずれかになります。
+
+{@link android.content.ContentResolver} メソッドには、永続ストレージの基本的な「CRUD」(作成、取得、更新、削除)機能が備わっています。
+
+
+</p>
+<p>
+    クライアント アプリケーションのプロセスにおける {@link android.content.ContentResolver} オブジェクトと、プロバイダを所有するアプリケーションの {@link android.content.ContentProvider} オブジェクトが、プロセス間の通信を自動的に処理します。さらに、{@link android.content.ContentProvider} は、データのリポジトリと、外部に表形式で表示されるデータの間の抽象化レイヤーとして機能します。
+
+
+
+
+</p>
+<p class="note">
+    <strong>注:</strong> 通常、アプリケーションがプロバイダにアクセスする場合、そのマニフェスト ファイルで特定のパーミッションを要求する必要があります。
+詳細は、<a href="#Permissions">コンテンツ プロバイダ パーミッション</a>セクションをご覧ください。
+
+</p>
+<p>
+    たとえば、単語リスト プロバイダから単語とそのロケールの一覧を取得するには、{@link android.content.ContentResolver#query ContentResolver.query()} を呼び出します。
+
+    {@link android.content.ContentResolver#query query()} メソッドによって、単語リスト プロバイダが定義する{@link android.content.ContentProvider#query ContentProvider.query()} メソッドが呼び出されます。
+
+コードの次の行は、{@link android.content.ContentResolver#query ContentResolver.query()} 呼び出しを表しています。
+
+<p>
+<pre>
+// Queries the user dictionary and returns results
+mCursor = getContentResolver().query(
+    UserDictionary.Words.CONTENT_URI,   // The content URI of the words table
+    mProjection,                        // The columns to return for each row
+    mSelectionClause                    // Selection criteria
+    mSelectionArgs,                     // Selection criteria
+    mSortOrder);                        // The sort order for the returned rows
+</pre>
+<p>
+    表 2 は、query(Uri,projection,selection,selectionArgs,sortOrder)} の引数が SQL SELECT 文にどのように一致しているかを示しています。
+
+
+</p>
+<p class="table-caption">
+    <strong>表 2:</strong> SQL クエリと比較した Query()。
+</p>
+<table id="table2" style="width: 75%;">
+    <tr>
+        <th style="width:25%" align="center" scope="col">query() 引数</th>
+        <th style="width:25%" align="center" scope="col">SELECT キーワード / パラメータ</th>
+        <th style="width:50%" align="center" scope="col">注</th>
+    </tr>
+    <tr>
+        <td align="center"><code>Uri</code></td>
+        <td align="center"><code>FROM <em>table_name</em></code></td>
+        <td><code>Uri</code> は、<em>table_name</em> という名前のプロバイダの表にマッピングされます。</td>
+    </tr>
+    <tr>
+        <td align="center"><code>projection</code></td>
+        <td align="center"><code><em>col,col,col,...</em></code></td>
+        <td>
+            <code>projection</code> は、取得するそれぞれの行に含まれる列の配列です。
+
+        </td>
+    </tr>
+    <tr>
+        <td align="center"><code>selection</code></td>
+        <td align="center"><code>WHERE <em>col</em> = <em>value</em></code></td>
+        <td><code>selection</code> は、行を選択する際の基準を指定します。</td>
+    </tr>
+    <tr>
+        <td align="center"><code>selectionArgs</code></td>
+        <td align="center">
+            (正確に一致するものはありません。選択句では、<code>?</code> プレースホルダーが選択引数に置き換わります)
+
+        </td>
+    </tr>
+    <tr>
+        <td align="center"><code>sortOrder</code></td>
+        <td align="center"><code>ORDER BY <em>col,col,...</em></code></td>
+        <td>
+            <code>sortOrder</code> は、返される {@link android.database.Cursor} 内で行が表示される順番を指定します。
+
+        </td>
+    </tr>
+</table>
+<h3 id="ContentURIs">コンテンツ URI</h3>
+<p>
+    <strong>コンテンツ URI</strong> は、プロバイダのデータを特定する URI です。コンテンツ URI には、プロバイダ全体の識別名(<strong>認証局</strong>)と表をポイントする名前(<strong>パス</strong>)が含まれます。
+
+プロバイダの表にアクセスするためのクライアント メソッドを呼び出す場合、その引数の 1 つがコンテンツ URI になります。
+
+
+</p>
+<p>
+    コードの前半の行では、定数 {@link android.provider.UserDictionary.Words#CONTENT_URI} に、単語リストの「words」表のコンテンツ URI が入ります。
+
+{@link android.content.ContentResolver} オブジェクトは URI の認証局をパースし、認証局を既知のプロバイダのシステム表と比較して、プロバイダを「解決」します。
+
+その後、{@link android.content.ContentResolver} は、クエリ引数を正しいプロバイダに送信できます。
+
+
+</p>
+<p>
+    {@link android.content.ContentProvider} は、アクセスする表を選択するのに、コンテンツ URI のパス部分を使用します。
+通常、プロバイダは公開する各表の<strong>パス</strong>を持ちます。
+</p>
+<p>
+    コードの前半の行では、「words」表の完全な URI は次のようになります。
+</p>
+<pre>
+content://user_dictionary/words
+</pre>
+<p>
+    ここで、<code>user_dictionary</code> 文字列はプロバイダの認証局になり、<code>words</code> 文字列は表のパスになります。
+文字列 <code>content://</code>(<strong>スキーム</strong>)は常に存在し、これがコンテンツ URI であることを示します。
+
+
+</p>
+<p>
+    多くのプログラムでは、URI の末尾に ID 値を付加することで、表内の 1 つの行にアクセスできます。たとえば、<code>_ID</code> が <code>4</code> の行を単語リストから取得するには、次のコンテンツ URI を使用します。
+
+
+</p>
+<pre>
+Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);
+</pre>
+<p>
+    通常は、一連の行を取得してからいずれかの行を更新、削除するような場合に ID 値を使用します。
+
+</p>
+<p class="note">
+    <strong>注:</strong> {@link android.net.Uri} クラスと {@link android.net.Uri.Builder} クラスには、正しい形式の URI オブジェクトを文字列から作成するための、便利なメソッドが用意されています。
+{@link android.content.ContentUris} には、URI に ID 値を付加するための便利なメソッドが用意されています。前述のスニペットは {@link android.content.ContentUris#withAppendedId
+    withAppendedId()} を使用して、UserDictionary コンテンツ URI に ID を付加しています。
+
+
+</p>
+
+
+    <!-- Retrieving Data from the Provider -->
+<h2 id="SimpleQuery">プロバイダからデータを取得する</h2>
+<p>
+    このセクションでは、単語リスト プロバイダの例を使い、プロバイダからデータを取得する方法を説明します。
+
+</p>
+<p class="note">
+    わかりやすくするために、このセクションのコード スニペットは「UI スレッド」の {@link android.content.ContentResolver#query ContentResolver.query()} を呼び出しています。
+ただし、実際のコードでは、個別のスレッドで非同期にクエリを実行する必要があります。
+この操作は、{@link android.content.CursorLoader} クラスを使用して行うこともできます。このクラスについての詳細は、「<a href="{@docRoot}guide/components/loaders.html">ローダ</a>」に関するガイドをご覧ください。
+
+
+さらに、コードの行はスニペットのみであり、完全なアプリケーションにはなっていません。
+
+</p>
+<p>
+    プロバイダからデータを取得するには、次の基本的な手順に従います。
+</p>
+<ol>
+   <li>
+        プロバイダの読み取りアクセスを要求します。
+   </li>
+   <li>
+        プロバイダにクエリを送信するコードを定義します。
+   </li>
+</ol>
+<h3 id="RequestPermissions">読み取りアクセス パーミッションを要求する</h3>
+<p>
+    プロバイダからデータを取得するには、アプリケーションからプロバイダの読み取りアクセスを要求します。
+実行時にはこのパーミッションを要求できません。その代わりに、<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 要素とプロバイダで定義した正確なパーミッション名を使用して、このパーミッションを必要としていることをマニフェストで指定する必要があります。
+
+
+
+この要素をマニフェストで指定すると、実際に、このパーミッションをアプリケーションに「要求」することになります。
+ユーザーがアプリケーションをインストールすると、この要求が暗黙的に付与されることになります。
+
+</p>
+<p>
+    使用する読み取りアクセス パーミッションの正確な名前と、プロバイダが使用するその他のアクセス パーミッションの名前については、プロバイダのドキュメントをご覧ください。
+
+
+</p>
+<p>
+    プロバイダにアクセスする際のパーミッションのロールの詳細は、<a href="#Permissions">コンテンツ プロバイダ パーミッション</a>セクションをご覧ください。
+
+</p>
+<p>
+    単語リスト プロバイダはパーミッション <code>android.permission.READ_USER_DICTIONARY</code> をマニフェスト ファイルで定義するため、プロバイダからの読み取りを行うアプリケーションはこのパーミッションを要求する必要があります。
+
+
+</p>
+<!-- Constructing the query -->
+<h3 id="Query">クエリを作成する</h3>
+<p>
+    プロバイダからのデータの取得の次の手順では、クエリを作成します。最初のスニペットで、単語リスト プロバイダにアクセスするための変数をいくつか定義します。
+
+</p>
+<pre class="prettyprint">
+
+// A "projection" defines the columns that will be returned for each row
+String[] mProjection =
+{
+    UserDictionary.Words._ID,    // Contract class constant for the _ID column name
+    UserDictionary.Words.WORD,   // Contract class constant for the word column name
+    UserDictionary.Words.LOCALE  // Contract class constant for the locale column name
+};
+
+// Defines a string to contain the selection clause
+String mSelectionClause = null;
+
+// Initializes an array to contain selection arguments
+String[] mSelectionArgs = {""};
+
+</pre>
+<p>
+    次のスニペットでは、単語リスト プロバイダの例を使って、{@link android.content.ContentResolver#query ContentResolver.query()} を使用する方法を示しています。
+
+プロバイダ クライアント クエリは SQL クエリに似たものであり、戻り値となる一連の列、一連の選択基準、並べ替えの順番を含みます。
+
+</p>
+<p>
+    クエリの戻り値となる一連の列は、<strong>投影</strong>(変数 <code>mProjection</code>)と呼ばれます。
+
+</p>
+<p>
+    取得する行を指定する式は、選択句と選択引数に分割されます。
+選択句は論理式やブール式、列名、値(変数 <code>mSelectionClause</code>)の組み合わせになります。
+値の代わりに置き換え可能パラメータ <code>?</code> を指定すると、クエリ メソッドによって、選択引数の配列(変数 <code>mSelectionArgs</code>)から値が取得されます。
+
+
+</p>
+<p>
+    次のスニペットでは、ユーザーが単語を入力しない場合、選択句が <code>null</code> に設定され、クエリによってプロバイダのすべての単語が返されます。
+ユーザーが単語を入力すると、選択句が <code>UserDictionary.Words.WORD + " = ?"</code> に設定され、選択引数の配列の最初の要素が、ユーザーが入力した単語に設定されます。
+
+
+</p>
+<pre class="prettyprint">
+/*
+ * This defines a one-element String array to contain the selection argument.
+ */
+String[] mSelectionArgs = {""};
+
+// Gets a word from the UI
+mSearchString = mSearchWord.getText().toString();
+
+// Remember to insert code here to check for invalid or malicious input.
+
+// If the word is the empty string, gets everything
+if (TextUtils.isEmpty(mSearchString)) {
+    // Setting the selection clause to null will return all words
+    mSelectionClause = null;
+    mSelectionArgs[0] = "";
+
+} else {
+    // Constructs a selection clause that matches the word that the user entered.
+    mSelectionClause = UserDictionary.Words.WORD + " = ?";
+
+    // Moves the user's input string to the selection arguments.
+    mSelectionArgs[0] = mSearchString;
+
+}
+
+// Does a query against the table and returns a Cursor object
+mCursor = getContentResolver().query(
+    UserDictionary.Words.CONTENT_URI,  // The content URI of the words table
+    mProjection,                       // The columns to return for each row
+    mSelectionClause                   // Either null, or the word the user entered
+    mSelectionArgs,                    // Either empty, or the string the user entered
+    mSortOrder);                       // The sort order for the returned rows
+
+// Some providers return null if an error occurs, others throw an exception
+if (null == mCursor) {
+    /*
+     * Insert code here to handle the error. Be sure not to use the cursor! You may want to
+     * call android.util.Log.e() to log this error.
+     *
+     */
+// If the Cursor is empty, the provider found no matches
+} else if (mCursor.getCount() &lt; 1) {
+
+    /*
+     * Insert code here to notify the user that the search was unsuccessful. This isn't necessarily
+     * an error. You may want to offer the user the option to insert a new row, or re-type the
+     * search term.
+     */
+
+} else {
+    // Insert code here to do something with the results
+
+}
+</pre>
+<p>
+    このクエリは、 SQL 文に似ています。
+</p>
+<pre>
+SELECT _ID, word, locale FROM words WHERE word = &lt;userinput&gt; ORDER BY word ASC;
+</pre>
+<p>
+    この SQL 文では、コントラクト クラスの定数ではなく、実際の列の名前が使用されます。
+</p>
+<h4 id="Injection">悪意のある入力から保護する</h4>
+<p>
+    コンテンツ プロバイダが管理するデータが SQL データベース内にある場合、外部の信頼されていないデータを未処理の SQL 文に含めると SQL インジェクションが発生することがあります。
+
+</p>
+<p>
+    次のような選択句を考えてみます。
+</p>
+<pre>
+// Constructs a selection clause by concatenating the user's input to the column name
+String mSelectionClause =  "var = " + mUserInput;
+</pre>
+<p>
+    このようにすれば、ユーザーが悪意のある SQL を SQL 文に連結できるようになります。
+    たとえば、ユーザーが <code>mUserInput</code> に「nothing; DROP TABLE *;」と入力すると、選択句は <code>var = nothing; DROP TABLE *;</code> となります。
+選択句は SQL 文として処理されるため、この場合、基本的な SQLite データベースのすべての表が消去されることがあります(プロバイダに <a href="http://en.wikipedia.org/wiki/SQL_injection">SQL インジェクション</a>の試みの検出が設定されていない場合)。
+
+
+
+</p>
+<p>
+    この問題を回避するには、<code>?</code> を置き換え可能パラメータとして使う選択句と、選択引数の個別の配列を使用します。
+そうすることで、ユーザー入力は、SQL 文の一部として解釈されずに、クエリに直接バインドされます。
+
+    SQL として扱われないため、ユーザー入力によって悪意のある SQL が挿入されることはありません。ユーザー入力を含める際に連結を使用しないで、次の選択句を使用します。
+
+</p>
+<pre>
+// Constructs a selection clause with a replaceable parameter
+String mSelectionClause =  "var = ?";
+</pre>
+<p>
+    選択引数の配列を次のように設定します。
+</p>
+<pre>
+// Defines an array to contain the selection arguments
+String[] selectionArgs = {""};
+</pre>
+<p>
+    選択引数の配列に次のように値を格納します。
+</p>
+<pre>
+// Sets the selection argument to the user's input
+selectionArgs[0] = mUserInput;
+</pre>
+<p>
+    プロバイダが SQL データベースに基づいたものではない場合でも、選択内容を指定する場合は、<code>?</code> を置き換え可能パラメータとして使う選択句と、選択引数の配列を使用することをお勧めします。
+
+
+</p>
+<!-- Displaying the results -->
+<h3 id="DisplayResults">クエリ結果を表示する</h3>
+<p>
+    {@link android.content.ContentResolver#query ContentResolver.query()} クライアント メソッドは、常に {@link android.database.Cursor} を返します。これには、クエリの選択基準に一致する、行へのクエリの投影によって指定される列が含まれます。
+
+{@link android.database.Cursor} オブジェクトは、含まれる行と列へのランダム読み取りアクセスを提供します。
+
+{@link android.database.Cursor} メソッドを使用すると、結果の行の繰り返し、各列のデータタイプの識別、列からのデータの取得、結果のその他のプロパティの確認といった操作が可能となります。
+
+一部の {@link android.database.Cursor} を実装すると、プロバイダのデータが変更された場合にオブジェクトが自動的に送信されたり、{@link android.database.Cursor} が変更された場合にオブザーバ オブジェクトのメソッドがトリガーされたり、その両方が実行されたりします。
+
+
+</p>
+<p class="note">
+    <strong>注:</strong> クエリを作成するオブジェクトの特性に基づいて、プロバイダによって列へのアクセスが制限されることがあります。
+たとえば、連絡先プロバイダにより同期アダプタは一部の列へのアクセスが制限されるため、その場合はアクティビティやサービスを返しません。
+
+</p>
+<p>
+    選択基準に一致する行がない場合は、{@link android.database.Cursor#getCount Cursor.getCount()} が 0(空のカーソル)の {@link android.database.Cursor} オブジェクトを返します。
+
+
+</p>
+<p>
+    内部エラーが発生した場合、クエリの結果はプロバイダによって異なります。<code>null</code> が返されることもあれば、{@link java.lang.Exception} がスローされることもあります。
+
+</p>
+<p>
+    {@link android.database.Cursor} は行の「一覧」であることから、{@link android.database.Cursor} のコンテンツを表示する場合は、{@link android.widget.SimpleCursorAdapter} 経由で {@link android.widget.ListView} にリンクすることをお勧めします。
+
+
+</p>
+<p>
+    次のスニペットは前のスニペットのコードの続きです。クエリによって取得する {@link android.database.Cursor} を含む {@link android.widget.SimpleCursorAdapter} オブジェクトを作成し、このオブジェクトを {@link android.widget.ListView} のアダプタに設定します。
+
+
+
+</p>
+<pre class="prettyprint">
+// Defines a list of columns to retrieve from the Cursor and load into an output row
+String[] mWordListColumns =
+{
+    UserDictionary.Words.WORD,   // Contract class constant containing the word column name
+    UserDictionary.Words.LOCALE  // Contract class constant containing the locale column name
+};
+
+// Defines a list of View IDs that will receive the Cursor columns for each row
+int[] mWordListItems = { R.id.dictWord, R.id.locale};
+
+// Creates a new SimpleCursorAdapter
+mCursorAdapter = new SimpleCursorAdapter(
+    getApplicationContext(),               // The application's Context object
+    R.layout.wordlistrow,                  // A layout in XML for one row in the ListView
+    mCursor,                               // The result from the query
+    mWordListColumns,                      // A string array of column names in the cursor
+    mWordListItems,                        // An integer array of view IDs in the row layout
+    0);                                    // Flags (usually none are needed)
+
+// Sets the adapter for the ListView
+mWordList.setAdapter(mCursorAdapter);
+</pre>
+<p class="note">
+    <strong>注:</strong> {@link android.database.Cursor} によって {@link android.widget.ListView} を戻すには、カーソルに <code>_ID</code> という名前の列を含める必要があります。
+
+    そのため、{@link android.widget.ListView} には表示されまませんが、前述のクエリは「words」表に <code>_ID</code> 列を取得します。
+
+    また、このような制限があることから、大部分のプロバイダがそれぞれの表に <code>_ID</code> 列を持ちます。
+
+</p>
+
+        <!-- Getting data from query results -->
+<h3 id="GettingResults">クエリ結果を取得する</h3>
+<p>
+    クエリ結果を単に表示するだけでなく、他のタスクに使用することもできます。たとえば、単語リストからスペリングを取得して、それを他のプロバイダで検索するといった操作も可能です。
+
+そのためには、次のように {@link android.database.Cursor} の行に操作を繰り返します。
+</p>
+<pre class="prettyprint">
+
+// Determine the column index of the column named "word"
+int index = mCursor.getColumnIndex(UserDictionary.Words.WORD);
+
+/*
+ * Only executes if the cursor is valid. The User Dictionary Provider returns null if
+ * an internal error occurs. Other providers may throw an Exception instead of returning null.
+ */
+
+if (mCursor != null) {
+    /*
+     * Moves to the next row in the cursor. Before the first movement in the cursor, the
+     * "row pointer" is -1, and if you try to retrieve data at that position you will get an
+     * exception.
+     */
+    while (mCursor.moveToNext()) {
+
+        // Gets the value from the column.
+        newWord = mCursor.getString(index);
+
+        // Insert code here to process the retrieved word.
+
+        ...
+
+        // end of while loop
+    }
+} else {
+
+    // Insert code here to report an error if the cursor is null or the provider threw an exception.
+}
+</pre>
+<p>
+    {@link android.database.Cursor} の実装には「取得」メソッドがいくつか備わっており、オブジェクトからさまざまなタイプのデータを取得できます。
+たとえば、前述のスニペットは {@link android.database.Cursor#getString getString()} を使用しています。
+さらに、列のデータタイプを示す値を返す {@link android.database.Cursor#getType getType()} メソッドも使用しています。
+
+
+</p>
+
+
+    <!-- Requesting permissions -->
+<h2 id="Permissions">コンテンツ プロバイダ パーミッション</h2>
+<p>
+    プロバイダのアプリケーションでは、他のアプリケーションがプロバイダのデータにアクセスするのに必要なパーミッションを指定できます。
+これらのパーミッションを設定しておけば、ユーザーはアプリケーションがアクセスしようとしているデータの種類を把握できます。
+他のアプリケーションは、プロバイダの要件に基づき、そのプロバイダにアクセスするのに必要なパーミッションを要求します。
+エンドユーザーがアプリケーションをインストールする際には、要求されたパーミッションを確認できます。
+
+</p>
+<p>
+    プロバイダのアプリケーションでパーミッションを指定していない場合は、他のアプリケーションはプロバイダのデータにアクセスできません。
+ただし、指定したパーミッションに関係なく、プロバイダのアプリケーションのコンポーネントには完全な読み取り権限と書き込み権限を常に付与する必要があります。
+
+</p>
+<p>
+    前述のとおり、単語リスト プロバイダには、データを取得するための <code>android.permission.READ_USER_DICTIONARY</code> パーミッションが必要です。
+
+    プロバイダには、データの挿入、更新、削除に対してそれぞれ個別の <code>android.permission.WRITE_USER_DICTIONARY</code> パーミッションがあります。
+
+</p>
+<p>
+    プロバイダにアクセスするのに必要なパーミッションを取得するには、アプリケーションのマニフェスト ファイルの <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 要素を使用してパーミッションを要求する必要があります。
+
+Android Package Manager でアプリケーションをインストールする場合は、ユーザーがアプリケーションが要求するすべてのパーミッションを承認する必要があります。
+ユーザーがすべてのパーミッションを承認すると、Package Manager がインストールを続行します。ユーザーが承認しない場合は、Package Manager がインストールを中止します。
+
+
+</p>
+<p>
+    次の <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 要素は、単語リスト プロバイダへの読み取りアクセスを要求します。
+
+
+</p>
+<pre>
+    &lt;uses-permission android:name="android.permission.READ_USER_DICTIONARY"&gt;
+</pre>
+<p>
+    プロバイダ アクセスへのパーミッションの影響については、<a href="{@docRoot}guide/topics/security/security.html">セキュリティとパーミッション</a>に関するガイドをご覧ください。
+
+</p>
+
+
+<!-- Inserting, Updating, and Deleting Data -->
+<h2 id="Modifications">データを挿入、更新、削除する</h2>
+<p>
+    データを収集するには、プロバイダからデータを取得するのと同様に、プロバイダ クライアントとプロバイダの {@link android.content.ContentProvider} 間で操作を行います。
+
+    対応する {@link android.content.ContentProvider} のメソッドに渡した引数を使用して、{@link android.content.ContentResolver} のメソッドを呼び出します。
+プロバイダとプロバイダ クライアントが、セキュリティとプロセス間の通信を自動的に処理します。
+
+</p>
+<h3 id="Inserting">データを挿入する</h3>
+<p>
+    プロバイダにデータを挿入するには、{@link android.content.ContentResolver#insert ContentResolver.insert()} メソッドを呼び出します。
+
+このメソッドはプロバイダに新しい行を挿入し、その行のコンテンツ URI を返します。
+    このスニペットは、単語リスト プロバイダに新しい単語を挿入する方法を示しています。
+</p>
+<pre class="prettyprint">
+// Defines a new Uri object that receives the result of the insertion
+Uri mNewUri;
+
+...
+
+// Defines an object to contain the new values to insert
+ContentValues mNewValues = new ContentValues();
+
+/*
+ * Sets the values of each column and inserts the word. The arguments to the "put"
+ * method are "column name" and "value"
+ */
+mNewValues.put(UserDictionary.Words.APP_ID, "example.user");
+mNewValues.put(UserDictionary.Words.LOCALE, "en_US");
+mNewValues.put(UserDictionary.Words.WORD, "insert");
+mNewValues.put(UserDictionary.Words.FREQUENCY, "100");
+
+mNewUri = getContentResolver().insert(
+    UserDictionary.Word.CONTENT_URI,   // the user dictionary content URI
+    mNewValues                          // the values to insert
+);
+</pre>
+<p>
+    新しい行のデータは 1 つの {@link android.content.ContentValues} オブジェクトに入ります。これは 1 行カーソルの形式に似ています。
+このオブジェクト内の列は同じデータタイプを持つ必要はなく、値をまったく指定しない場合は、{@link android.content.ContentValues#putNull ContentValues.putNull()} を使用して列を <code>null</code> に設定できます。
+
+
+</p>
+<p>
+    この列は自動的に保持されるため、スニペットは <code>_ID</code> 列を追加しません。
+プロバイダは、追加するそれぞれの行に、<code>_ID</code> の一意の値を割り当てます。
+通常、プロバイダはこの値を表のプライマリキーとして使用します。
+</p>
+<p>
+    <code>newUri</code> で返されるコンテンツ URI は、新たに追加された行を特定するものであり、次の形式となります。
+
+</p>
+<pre>
+content://user_dictionary/words/&lt;id_value&gt;
+</pre>
+<p>
+    <code>&lt;id_value&gt;</code> は、新しい行の <code>_ID</code> のコンテンツです。
+    ほとんどのプロバイダではコンテンツ URI のこの形式を自動的に検出し、特定の行で要求された操作を実行します。
+
+</p>
+<p>
+    返された {@link android.net.Uri} から <code>_ID</code> の値を取得するには、{@link android.content.ContentUris#parseId ContentUris.parseId()} を呼び出します。
+
+</p>
+<h3 id="Updating">データを更新する</h3>
+<p>
+    行を更新するには、挿入操作と同じように、値を更新した {@link android.content.ContentValues} オブジェクトと、クエリ操作のときと同じように選択基準を使用します。
+
+    使用するクライアント メソッドは {@link android.content.ContentResolver#update ContentResolver.update()} です。
+更新する列の {@link android.content.ContentValues} オブジェクトに値を追加する操作のみが必要になります。
+列のコンテンツを消去する場合は、値を <code>null</code> に設定します。
+
+</p>
+<p>
+    次のスニペットは、ロケール言語が「en」となっているすべての行のロケールを <code>null</code> に変更します。
+戻り値は、更新された行の数となります。
+</p>
+<pre>
+// Defines an object to contain the updated values
+ContentValues mUpdateValues = new ContentValues();
+
+// Defines selection criteria for the rows you want to update
+String mSelectionClause = UserDictionary.Words.LOCALE +  "LIKE ?";
+String[] mSelectionArgs = {"en_%"};
+
+// Defines a variable to contain the number of updated rows
+int mRowsUpdated = 0;
+
+...
+
+/*
+ * Sets the updated value and updates the selected words.
+ */
+mUpdateValues.putNull(UserDictionary.Words.LOCALE);
+
+mRowsUpdated = getContentResolver().update(
+    UserDictionary.Words.CONTENT_URI,   // the user dictionary content URI
+    mUpdateValues                       // the columns to update
+    mSelectionClause                    // the column to select on
+    mSelectionArgs                      // the value to compare to
+);
+</pre>
+<p>
+    また、{@link android.content.ContentResolver#update ContentResolver.update()} を呼び出すときには、ユーザー入力をサニタイズする必要があります。
+詳細は、<a href="#Injection">悪意のある入力から保護する</a>セクションをご覧ください。
+
+</p>
+<h3 id="Deleting">データを削除する</h3>
+<p>
+    行の削除は行データの取得と似た操作になります。削除する行の選択基準を指定することで、クライアント メソッドが削除した行の数を返します。
+
+    次のスニペットは appid が「user」となっている行を削除します。メソッドによって削除された行の数が返されます。
+
+</p>
+<pre>
+
+// Defines selection criteria for the rows you want to delete
+String mSelectionClause = UserDictionary.Words.APP_ID + " LIKE ?";
+String[] mSelectionArgs = {"user"};
+
+// Defines a variable to contain the number of rows deleted
+int mRowsDeleted = 0;
+
+...
+
+// Deletes the words that match the selection criteria
+mRowsDeleted = getContentResolver().delete(
+    UserDictionary.Words.CONTENT_URI,   // the user dictionary content URI
+    mSelectionClause                    // the column to select on
+    mSelectionArgs                      // the value to compare to
+);
+</pre>
+<p>
+    また、{@link android.content.ContentResolver#delete ContentResolver.delete()} を呼び出すときには、ユーザー入力をサニタイズする必要があります。
+詳細は、<a href="#Injection">悪意のある入力から保護する</a>セクションをご覧ください。
+
+</p>
+<!-- Provider Data Types -->
+<h2 id="DataTypes">プロバイダ データタイプ</h2>
+<p>
+    コンテンツ プロバイダではさまざまなデータタイプを利用できます。単語リスト プロバイダで提供できるのはテキストのみですが、次のような形式を提供できます。
+
+</p>
+    <ul>
+        <li>
+            整数
+        </li>
+        <li>
+            long 整数(long)
+        </li>
+        <li>
+            浮動小数点
+        </li>
+        <li>
+            long 浮動小数点(double)
+        </li>
+    </ul>
+<p>
+    それ以外にも、プロバイダでは 64KB バイト配列として実装されるバイナリ ラージ オブジェクト(BLOB)もよく使用されます。
+利用可能なデータタイプについては、{@link android.database.Cursor} クラスの「get」メソッドをご覧ください。
+
+</p>
+<p>
+    プロバイダの各列のデータタイプは、通常、そのドキュメントに一覧が記載されています。
+    単語リスト プロバイダのデータタイプは、コントラクト クラス {@link android.provider.UserDictionary.Words} のリファレンスに一覧が記載されています(コントラクト クラスの詳細は、<a href="#ContractClasses">コントラクト クラス</a>セクションをご覧ください)。
+
+
+    さらに、{@link android.database.Cursor#getType
+    Cursor.getType()} を呼び出すことで、データタイプを判断することもできます。
+</p>
+<p>
+    プロバイダは、プロバイダによって定義される各コンテンツ URI の MIME データタイプも保持します。MIME タイプ情報を使用すると、プロバイダが提供するデータをアプリケーションが処理できるかを判断したり、MIME タイプに基づいて処理のタイプを選択したりできます。
+
+通常は、複雑なデータ構造やファイルを持つプロバイダで作業をする際に MIME タイプが必要になります。
+
+たとえば、連絡先プロバイダの {@link android.provider.ContactsContract.Data} 表は MIME タイプを使用して、それぞれの行に格納される連絡先データのタイプをラベル付けします。
+
+コンテンツ URI に対応する MIME タイプを取得するには、{@link android.content.ContentResolver#getType ContentResolver.getType()} を呼び出します。
+
+</p>
+<p>
+    「<a href="#MIMETypeReference">MIME タイプ リファレンス</a>」セクションでは、標準とカスタムの両方の MIME タイプについて説明しています。
+
+</p>
+
+
+<!-- Alternative Forms of Provider Access -->
+<h2 id="AltForms">プロバイダ アクセスの別の形式</h2>
+<p>
+    アプリケーションの開発では、次に示すプロバイダ アクセスの別の 3 つの形式が重要になります。
+</p>
+<ul>
+    <li>
+        <a href="#Batch">バッチアクセス</a>: {@link android.content.ContentProviderOperation} クラスのメソッドを使用したアクセス呼び出しのバッチを作成し、{@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()} に適用できます。
+
+
+    </li>
+    <li>
+        非同期クエリ: クエリは個別のスレッドで実行する必要があります。この操作は、{@link android.content.CursorLoader} オブジェクトを使用して行うこともできます。
+「<a href="{@docRoot}guide/components/loaders.html">ローダ</a>」のガイドには、この操作の例が記載されています。
+
+
+    </li>
+    <li>
+        <a href="#Intents">インテント経由のデータアクセス</a>: インテントをプロバイダに直接送信できませんが、プロバイダのアプリケーションにはインテントを送信できます。通常、プロバイダのデータの修正に最適な機能を備えたアプリケーションになります。
+
+
+    </li>
+</ul>
+<p>
+    バッチアクセスとインテント経由の修正については、次のセクションで説明しています。
+</p>
+<h3 id="Batch">バッチアクセス</h3>
+<p>
+    多数の行を挿入する場合や、同じメソッド呼び出しで複数の表に行を挿入する場合は、プロバイダへのバッチアクセスを使用すると便利です。また、一般的には、境界をまたいでプロセス全体にトランザクションとして一連の操作を実行する場合にもバッチアクセスが便利です。
+
+
+</p>
+<p>
+    「バッチモード」でプロバイダにアクセスするには、{@link android.content.ContentProviderOperation} オブジェクトの配列を作成してから、{@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()} を使用してそれらのオブジェクトをコンテンツ プロバイダに送信します。
+
+
+このメソッドには、特定のコンテンツ URI ではなく、コンテンツ プロバイダの<em>認証局</em>を渡します。そうすることで、配列内のそれぞれの {@link android.content.ContentProviderOperation} オブジェクトを別々の表に対して機能するようになります。
+
+
+{@link android.content.ContentResolver#applyBatch
+    ContentResolver.applyBatch()} への呼び出しでは、結果の配列が返されます。
+</p>
+<p>
+    {@link android.provider.ContactsContract.RawContacts} コントラクト クラスの説明には、バッチ挿入を示したコード スニペットが記載されています。
+<a href="{@docRoot}resources/samples/ContactManager/index.html">Contact Manager</a> のサンプル アプリケーションでは、<code>ContactAdder.java</code> ソースファイルでのバッチアクセスの例が紹介されています。
+
+
+
+</p>
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>ヘルパーアプリでデータを表示する</h2>
+<p>
+    アプリケーションにアクセス パーミッションが<em>付与されている</em>場合でも、インテントを使用して別のアプリケーションにデータを表示できます。
+たとえば、カレンダー アプリケーションは {@link android.content.Intent#ACTION_VIEW} インテントにアクセスしますが、このインテントは特定の日付やイベントを表示するものです。
+
+    これにより、独自の UI を作成しなくても、カレンダー情報を表示できます。この機能の詳細は、「<a href="{@docRoot}guide/topics/providers/calendar-provider.html">カレンダー プロバイダ</a>」のガイドをご覧ください。
+
+
+</p>
+<p>
+    インテントの送信先アプリケーションは、必ずしもプロバイダに関連付けられたアプリケーションである必要はありません。
+たとえば、連絡先プロバイダから連絡先を取得してから、連絡先の画像のコンテンツ URI を含む {@link android.content.Intent#ACTION_VIEW} インテントを画像ビューワに送信するといった操作が可能です。
+
+
+</p>
+</div>
+</div>
+<h3 id="Intents">インテント経由のデータアクセス</h3>
+<p>
+    インテントを使用すれば、コンテンツ プロバイダに間接的にアクセスできます。アプリケーションにアクセス パーミッションがない場合でも、パーミッションを持つアプリケーションから結果のインテントを取得したり、パーミッションを持つアプリケーションをアクティベートしてそのアプリケーションをユーザーに使用させたりすることで、ユーザーがプロバイダのデータにアクセスできるようになります。
+
+
+
+</p>
+<h4>一時的なパーミッションによりアクセスを取得する</h4>
+<p>
+    適切なアクセス パーミッションがない場合でも、パーミッションを持つアプリケーションにインテントを送信し、「URI」パーミッションを含む結果のインテントを受け取ることで、コンテンツ プロバイダのデータにアクセスできます。
+
+
+    これらのパーミッションは特定のコンテンツ URI のパーミッションであり、パーミッションを受け取ったアクティビティが終了するまで効力を持ちます。
+永続的なパーミッションを持つアプリケーションは、次のように結果のインテントにフラグを設定し、一時的なパーミッションを付与します。
+
+</p>
+<ul>
+    <li>
+        <strong>読み取りパーミッション:</strong> {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}
+
+    </li>
+    <li>
+        <strong>書き込みパーミッション:</strong> {@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}
+
+    </li>
+</ul>
+<p class="note">
+    <strong>注:</strong> これらのフラグは、認証局がコンテンツ URI に含まれるプロバイダへの全般的な読み取りと書き込みアクセスを付与するものではありません。アクセスは URI 自身に限定されます。
+
+</p>
+<p>
+    プロバイダは、<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> 要素の <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">android:grantUriPermission</a></code> 属性や、<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> 要素の <code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code> 子要素を使用して、コンテンツ URI の URI パーミッションを自身のマニフェストで定義します。
+
+
+
+
+
+
+
+URI パーミッションのメカニズムについての詳細は、URI パーミッション セクションの<a href="{@docRoot}guide/topics/security/security.html">セキュリティとパーミッション</a>に関するガイドをご覧ください。
+
+
+</p>
+<p>
+    たとえば、{@link android.Manifest.permission#READ_CONTACTS} パーミッションを持たない場合でも、連絡先プロバイダの連絡先のデータを取得できます。
+連絡先の誕生日にグリーティング カードをオンラインで送信するアプリケーションなどにこのメカニズムを利用できます。
+ユーザーのすべての連絡先やそのすべての情報へのアクセス件を付与する {@link android.Manifest.permission#READ_CONTACTS} を要求する代わりに、アプリケーションで使用する連絡先をユーザーが制御できるように設定することもできます。
+
+
+そのためには、次の手順を使用します。
+</p>
+<ol>
+    <li>
+        アプリケーションが、メソッド {@link android.app.Activity#startActivityForResult
+        startActivityForResult()} を使用して、アクション {@link android.content.Intent#ACTION_PICK} と「連絡先」MIME タイプ {@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE} を含むインテントを送信します。
+
+
+
+    </li>
+    <li>
+        このインテントは連絡帳アプリの「selection」アクティビティのインテント フィルタに一致するため、アクティビティがフォアグラウンドに移動します。
+
+    </li>
+    <li>
+        selection アクティビティでは、更新する連絡先をユーザーが選択します。
+この操作が行われると、selection が {@link android.app.Activity#setResult setResult(resultcode, intent)} を呼び出し、アプリケーションに戻すインテントを設定します。
+
+インテントには、ユーザーが選択した連絡先のコンテンツ URI と、「エクストラ」フラグ {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION} が含まれます。
+
+これらのフラグがあることで、コンテンツ URI がポイントする連絡先のデータを読み取るための URI パーミッションがアプリに付与されます。その後、selection アクティビティによって、アプリケーションに制御を返すための {@link android.app.Activity#finish()} が呼び出されます。
+
+
+
+    </li>
+    <li>
+        アクティビティがフォアグラウンドに戻り、システムがアクティビティの {@link android.app.Activity#onActivityResult onActivityResult()} メソッドを呼び出します。
+
+このメソッドは、連絡帳アプリの selection アクティビティによって作成された結果のインテントを受け取ります。
+
+    </li>
+    <li>
+        結果のインテントのコンテンツ URI を使用すれば、マニフェストで永続的なアクセス パーミッションをプロバイダに要求していなくても、連絡先プロバイダから連絡先のデータを読み取ることができます。
+
+その後、連絡先の誕生日情報やメールアドレスを取得し、グリーティング カードをオンラインで送信できます。
+
+    </li>
+</ol>
+<h4>別のアプリケーションを使用する</h4>
+<p>
+    パーミッションを持つアプリケーションをアクティベートし、そのアプリケーションをユーザーが使用すれば、アクセス パーミッションを持たないデータをユーザーが修正できるようになります。
+
+</p>
+<p>
+    たとえば、アプリケーションの挿入 UI をアクティベートできる {@link android.content.Intent#ACTION_INSERT} インテントをカレンダー アプリケーションが受け入れるとします。このインテントに「エクストラ」データを渡すことで、アプリケーションがそのデータを使用して、事前に入力された UI を作成します。繰り返し発生するイベントは複雑な構文を持つため、カレンダー プロバイダにイベントを挿入する場合は、{@link android.content.Intent#ACTION_INSERT} でカレンダー アプリをアクティベートしてから、ユーザーにイベントを挿入してもらうことをお勧めします。
+
+
+
+
+
+</p>
+<!-- Contract Classes -->
+<h2 id="ContractClasses">コントラクト クラス</h2>
+<p>
+    コントラクト クラスは、アプリケーションがコンテンツ URI、列名、インテント アクション、コンテンツのその他の機能で作業する際に役立つ定数を定義します。
+プロバイダでコントラクト クラスが自動的に含まれることはありません。プロバイダのデベロッパーはコントラクト クラスを定義して、その他のデベロッパーが使用できるようにする必要があります。
+
+Android プラットフォームに含まれる多くのプロバイダは、パッケージ {@link android.provider} 内に対応するコントラクト クラスを持ちます。
+
+</p>
+<p>
+    たとえば、単語リスト プロバイダは、コンテンツ URI と列名の定数を含む、コントラクト クラス {@link android.provider.UserDictionary} を持つとします。
+「words」表のコンテンツ URI は、定数 {@link android.provider.UserDictionary.Words#CONTENT_URI UserDictionary.Words.CONTENT_URI} で定義されます。
+
+
+    さらに、{@link android.provider.UserDictionary.Words} クラスは、このガイドのサンプルのスニペットで使用される、列名の定数を持ちます。
+たとえば、クエリの投影は次のように定義できます。
+
+</p>
+<pre>
+String[] mProjection =
+{
+    UserDictionary.Words._ID,
+    UserDictionary.Words.WORD,
+    UserDictionary.Words.LOCALE
+};
+</pre>
+<p>
+    もう一方のコントラクト クラスは、連絡先プロバイダのクラス {@link android.provider.ContactsContract} です。
+    このクラスのリファレンスには、サンプルのコード スニペットが記載されています。サブクラスの 1 つである {@link android.provider.ContactsContract.Intents.Insert} は、インテントとインテント データの定数を含むコントラクト クラスです。
+
+
+</p>
+
+
+<!-- MIME Type Reference -->
+<h2 id="MIMETypeReference">MIME タイプ リファレンス</h2>
+<p>
+    コンテンツ プロバイダは、標準の MIME メディア タイプかカスタムの MIME タイプ文字列、またはその両方を返すことができます。
+</p>
+<p>
+    MIME タイプは次の形式となります
+</p>
+<pre>
+<em>type</em>/<em>subtype</em>
+</pre>
+<p>
+    たとえば、よく利用される MIME タイプ <code>text/html</code> は、<code>text</code> タイプと <code>html</code> サブタイプを持ちます。
+プロバイダから URI に対してこのタイプが返される場合、その URI を使用するクエリは HTML タグを含むテキストを返すことになります。
+
+</p>
+<p>
+    「ベンダー固有の」MIME タイプとも呼ばれるカスタムの MIME タイプ文字列には、より複雑な <em>type</em> と <em>subtype</em> の値が含まれます。
+複数行の場合、<em>type</em> 値は常に
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>
+</pre>
+<p>
+    となり、1 つの行の場合は
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>
+</pre>
+<p>
+    となります。
+</p>
+<p>
+    <em>subtype</em> はプロバイダ固有の値になります。通常、Android 組み込みプロバイダは単純な subtype を使用します。
+たとえば、連絡先アプリケーションが電話番号の行を作成すると、行には次のように MIME タイプが設定されます。
+
+</p>
+<pre>
+vnd.android.cursor.item/phone_v2
+</pre>
+<p>
+    subtype の値は単純に <code>phone_v2</code> となっていることがわかります。
+</p>
+<p>
+    他のプロバイダ デベロッパーは、プロバイダの認証局と表明に基づいて独自のパターンの subtype を作成できます。
+たとえば、列車の時刻表を含むプロバイダについて考えてみます。
+    プロバイダの認証局は <code>com.example.trains</code> であり、表 Line1、Line2、Line3 を持ちます。
+表 Line1 のコンテンツ URI
+</p>
+<p>
+<pre>
+content://com.example.trains/Line1
+</pre>
+<p>
+    に対しては、プロバイダは次の MIME タイプを返します
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>/vnd.example.line1
+</pre>
+<p>
+     表 Line2 の行 5 のコンテンツ URI
+</p>
+<pre>
+content://com.example.trains/Line2/5
+</pre>
+<p>
+    に対しては、プロバイダは次の MIME タイプを返します
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>/vnd.example.line2
+</pre>
+<p>
+    ほとんどのコンテンツ プロバイダが、使用する MIME タイプに対してコントラクト クラス定数を定義します。たとえば、連絡先プロバイダのコントラクト クラス {@link android.provider.ContactsContract.RawContacts} は、1 つの未加工連絡先行の MIME タイプに、定数 {@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE} を定義します。
+
+
+
+
+</p>
+<p>
+    1 つの行のコンテンツ URI については、<a href="#ContentURIs">コンテンツ URI</a> セクションをご覧ください。
+
+</p>
diff --git a/docs/html-intl/intl/ja/guide/topics/providers/content-provider-creating.jd b/docs/html-intl/intl/ja/guide/topics/providers/content-provider-creating.jd
new file mode 100644
index 0000000..af21814
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/providers/content-provider-creating.jd
@@ -0,0 +1,1214 @@
+page.title=コンテンツ プロバイダの作成
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+
+<h2>本書の内容</h2>
+<ol>
+    <li>
+        <a href="#DataStorage">データ ストレージを設計する</a>
+    </li>
+    <li>
+        <a href="#ContentURI">コンテンツ URI を設計する</a>
+    </li>
+    <li>
+        <a href="#ContentProvider">ContentProvider クラスを実装する</a>
+        <ol>
+            <li>
+                <a href="#RequiredAccess">必須メソッド</a>
+            </li>
+            <li>
+                <a href="#Query">query() メソッドを実装する</a>
+            </li>
+            <li>
+                <a href="#Insert">insert() メソッドを実装する</a>
+            </li>
+            <li>
+                <a href="#Delete">delete() メソッドを実装する</a>
+            </li>
+            <li>
+                <a href="#Update">update() メソッドを実装する</a>
+            </li>
+            <li>
+                <a href="#OnCreate">onCreate() メソッドを実装する</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#MIMETypes">コンテンツ プロバイダ MIME を実装する</a>
+        <ol>
+            <li>
+                <a href="#TableMIMETypes">テーブルの MIME タイプ</a>
+            </li>
+            <li>
+                <a href="#FileMIMETypes">ファイルの MIME タイプ</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#ContractClass">コントラクト クラスを実装する</a>
+    </li>
+    <li>
+        <a href="#Permissions">コンテンツ プロバイダ パーミッションを実装する</a>
+    </li>
+    <li>
+        <a href="#ProviderElement">&lt;provider&gt; 要素</a>
+    </li>
+    <li>
+        <a href="#Intents">インテントとデータアクセス</a>
+    </li>
+</ol>
+<h2>キークラス</h2>
+    <ol>
+        <li>
+            {@link android.content.ContentProvider}
+        </li>
+        <li>
+            {@link android.database.Cursor}
+        </li>
+        <li>
+            {@link android.net.Uri}
+        </li>
+    </ol>
+<h2>関連サンプル</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}resources/samples/NotePad/index.html">
+                Note Pad のサンプル アプリケーション            </a>
+
+        </li>
+    </ol>
+<h2>関連ドキュメント</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+            コンテンツ プロバイダの基本</a>
+        </li>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+            カレンダー プロバイダ</a>
+        </li>
+    </ol>
+</div>
+</div>
+
+
+<p>
+    コンテンツ プロバイダは、データの中央リポジトリへのアクセスを管理します。Android アプリケーションでは 1 つ以上のクラスとしてプロバイダを実装し、要素をマニフェスト ファイルで実装します。
+
+いずれか 1 つのクラスがサブラス {@link android.content.ContentProvider} を実装します。これは、プロバイダと他のアプリケーションとの間のインターフェースになります。
+
+コンテンツ プロバイダは他のアプリケーションへのデータの提供を意図したものですが、ユーザーがプロバイダに管理されるデータを照会、修正するアクティビティをアプリケーション内に設定することもできます。
+
+
+</p>
+<p>
+    このトピックの残りの部分では、コンテンツ プロバイダと使用する API のリストをビルドするための基本的な手順を挙げていきます。
+
+</p>
+
+
+<!-- Before You Start Building -->
+<h2 id="BeforeYouStart">ビルドを開始する前に</h2>
+<p>
+    ビルドを開始する前に、次の操作を行います。
+</p>
+<ol>
+    <li>
+        <strong>コンテンツ プロバイダが必要かどうかを決定します</strong>。次のような機能を 1 つ以上提供する場合に、コンテンツ プロバイダをビルドする必要があります。
+
+        <ul>
+            <li>他のアプリケーションに複雑なデータやファイルを提供する。</li>
+            <li>アプリから他のアプリへの複雑なデータのコピーをユーザーに許可する。</li>
+            <li>検索フレームワークを使用してカスタムの検索候補を提供する。</li>
+        </ul>
+    <p>
+        完全に独自アプリケーション内だけで使用する場合は、SQLite データベースを使用するプロバイダは必要はありません。<em></em>
+
+    </p>
+    </li>
+    <li>
+        必要かどうかを決定していない場合は、プロバイダの詳細については「<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">コンテンツ プロバイダの基本</a>」のトピックをご覧ください。
+
+
+    </li>
+</ol>
+<p>
+    次に、以下の手順に従ってプロバイダをビルドします。
+</p>
+<ol>
+    <li>
+        データの未処理のストレージを設計します。コンテンツ プロバイダは次の 2 つの方法でデータを提供します。
+        <dl>
+            <dt>
+                ファイルデータ
+            </dt>
+            <dd>
+                通常、写真、オーディオ、ビデオなどのファイルの形式となるデータです。
+ファイルはアプリケーションのプライベート スペースに格納します。
+ファイルに対する別のアプリケーションからの要求に応じて、プロバイダからファイルへのハンドルが提供されます。
+
+            </dd>
+            <dt>
+                「構造化」データ
+            </dt>
+            <dd>
+                通常、データベース、配列、類似の構造の形式となるデータです。
+                テーブルの行と列に互換性を持つ形式でデータが格納されます。行は、担当者や在庫にあるアイテムなどのエンティティを表します。
+列は、担当者の名前やアイテムの価格などの、エンティティの一部のデータを表します。
+一般的にこのタイプのデータは SQLite データベースに格納しますが、任意のタイプの永続ストレージを使用できます。
+
+Android システムで使用できるストレージ タイプの詳細は、<a href="#DataStorage">データ ストレージを設計する</a>をご覧ください。
+
+
+            </dd>
+        </dl>
+    </li>
+    <li>
+        {@link android.content.ContentProvider} クラスの具体的な実装とそれに必要なメソッドを定義します。
+このクラスは、データと Android システムのそれ以外の部分とのインターフェースとなります。
+このクラスの詳細は、<a href="#ContentProvider">ContentProvider クラスを実装する</a>セクションをご覧ください。
+
+    </li>
+    <li>
+        プロバイダの認証局の文字列、コンテンツ URI、列名を定義します。プロバイダのアプリケーションでインテントを処理する場合は、インテント アクション、エクストラ データ、フラグも定義します。
+
+さらに、データにアクセスするアプリケーションに必要なパーミッションも定義します。
+これらの値はすべて定数として個別のコントラクト クラスに定義するようにします。そうしておくと、後で他のデベロッパーに対してこのクラスを公開できます。
+コンテンツ URI の詳細は、<a href="#ContentURI">コンテンツ URI を設計する</a>セクションをご覧ください。
+
+
+        インテントの使用に関する詳細については、<a href="#Intents">インテントとデータアクセス</a>セクションをご覧ください。
+
+    </li>
+    <li>
+        サンプルデータや、プロバイダとクラウドベースのデータの間でデータを同期する {@link android.content.AbstractThreadedSyncAdapter} の実装などの、その他のオプション部分を追加します。
+
+
+    </li>
+</ol>
+
+
+<!-- Designing Data Storage -->
+<h2 id="DataStorage">データ ストレージを設計する</h2>
+<p>
+    コンテンツ プロバイダは、構造化された形式で保存されているデータへのインターフェースです。インターフェースを作成する前に、データの格納方法を決定しておく必要があります。
+データは任意の形式で保存でき、必要に応じてデータの読み取りと書き込みを行うためのインターフェースを設計できます。
+
+</p>
+<p>
+    Android には、次のように、いくつかのデータ格納テクノロジーがあります。
+</p>
+<ul>
+    <li>
+        Android システムには、Android の独自のプロバイダがテーブル指向のデータを格納するために使用する、SQLite データベース API があります。
+{@link android.database.sqlite.SQLiteOpenHelper} クラスを使用すると、データベースを作成できます。また、{@link android.database.sqlite.SQLiteDatabase} クラスは、データベースにアクセスするための基本クラスです。
+
+
+
+        <p>
+            リポジトリを実装するのに、データベースを使用する必要がありません。外部的には、プロバイダはリレーショナル データベースに似た一連のテーブルとして表示されますが、プロバイダの内部実装をそのような形式にする必要はありません。
+
+
+        </p>
+    </li>
+    <li>
+        ファイルデータを格納するために、Android にはファイル指向のさまざまな API があります。
+        ファイル ストレージの詳細は、「<a href="{@docRoot}guide/topics/data/data-storage.html">Data Storage</a>」トピックをご覧ください。
+音楽やビデオのようにメディア関連のデータを提供するプロバイダを設計する場合は、テーブルデータとファイルを組み合わせるプロバイダを作成できます。
+
+
+    </li>
+    <li>
+        ネットワーク ベースのデータで作業する場合は、{@link java.net} と {@link android.net} のクラスを使用します。
+また、ネットワーク ベースをデータベースなどのローカル データストアに同期させ、データをテーブルやファイルとして提供することもできます。
+
+        <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">サンプル同期アダプタ</a>のサンプル アプリケーションでは、このタイプの同期のデモを紹介しています。
+
+    </li>
+</ul>
+<h3 id="DataDesign">
+    データ設計上の考慮事項
+</h3>
+<p>
+    次に、プロバイダのデータ構造を設計する際のヒントを示します。
+</p>
+<ul>
+    <li>
+        テーブルデータには、プロバイダが各行の一意の数値として保持する「プライマリキー」列が常に必要です。
+この値を使用すると、行を他のテーブルの関連する行にリンクできます(「外部キー」として使用)。
+この列には任意の名前を設定できますが、プロバイダ クエリの結果を {@link android.widget.ListView} にリンクさせるには、取得する列のいずれかの名前が <code>_ID</code> になっている必要があるため、{@link android.provider.BaseColumns#_ID BaseColumns._ID} を使用することをお勧めします。
+
+
+
+
+    </li>
+    <li>
+        ビットマップ画像やサイズが非常に大きなその他のファイル指向のデータを提供する場合は、テーブルにデータを直接格納するのではなく、データをファイルに格納し、データを間接的に提供します。
+
+その場合、データにアクセスするには、{@link android.content.ContentResolver} ファイル メソッドの使用が必要であることをプロバイダのユーザーに通知する必要があります。
+
+    </li>
+    <li>
+        サイズや構造が異なるデータを格納するには、バイナリ ラージ オブジェクト(BLOB)データタイプを使用します。
+たとえば、<a href="http://code.google.com/p/protobuf">Protocol Buffer</a> や <a href="http://www.json.org">JSON 構造</a>を格納するには、BLOB 列を使用します。
+
+
+        <p>
+            さらに、BLOB を使用してスキーマに依存しないテーブルを実装できます。<em></em>このタイプのテーブルでは、プライマリキー列、MIME タイプ列、1 つ以上の汎用列を BLOB として定義します。
+
+BLOB 列内のデータの内容は、MIME タイプ列の値によって示されます。
+これにより、同じテーブルにさまざまな行タイプを格納できます。
+連絡先プロバイダの「データ」テーブル {@link android.provider.ContactsContract.Data} は、スキーマに依存しないテーブルの例です。
+
+
+        </p>
+    </li>
+</ul>
+<!-- Designing Content URIs -->
+<h2 id="ContentURI">コンテンツ URI を設計する</h2>
+<p>
+    <strong>コンテンツ URI</strong> は、プロバイダのデータを特定する URI です。コンテンツ URI には、プロバイダ全体の識別名(<strong>認証局</strong>)とテーブルやファイルをポイントする名前(<strong>パス</strong>)が含まれます。
+
+オプションの ID 部分は、テーブル内の個々の行を指します。
+{@link android.content.ContentProvider} のそれぞれのデータアクセス メソッドは引数としてコンテンツ URI を使用します。これにより、アクセスするテーブル、行、ファイルを決定できます。
+
+
+</p>
+<p>
+    コンテンツ URI の基本については、「<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">コンテンツ プロバイダの基本</a>」トピックをご覧ください。
+
+
+</p>
+<h3>認証局を設計する</h3>
+<p>
+    通常、プロバイダは、Android 内部の名前として使用される認証局を 1 つ持ちます。他のプロバイダとの競合を避けるためには、(逆に)プロバイダの認証局の基礎としてインターネット ドメインの所有権を使用する必要があります。
+
+この推奨事項は Android パッケージ名にもあてはまるため、プロバイダを含むパッケージの名前の拡張子として、プロバイダの認証局を定義できます。
+
+たとえば、Android パッケージ名が <code>com.example.&lt;appname&gt;</code> の場合、プロバイダに認証局 <code>com.example.&lt;appname&gt;.provider</code> を付与する必要があります。
+
+
+</p>
+<h3>パス構造を設計する</h3>
+<p>
+    デベロッパーは通常、個々のテーブルを指すパスを末尾に追加して認証局からコンテンツ URI を作成します。
+たとえば、<em>table1</em> と <em>table2</em> の 2 つのテーブルがある場合、前の例の認証局を組み合わせてコンテンツ URI <code>com.example.&lt;appname&gt;.provider/table1</code> と <code>com.example.&lt;appname&gt;.provider/table2</code> を作成します。
+
+
+
+パスは 1 つのセグメントに限定されず、パスの各レベルにテーブルを作成する必要はありません。
+
+</p>
+<h3>コンテンツ URI ID を処理する</h3>
+<p>
+    慣例として、URI の末尾にある行の ID 値を持つコンテンツ URI を受け取ることで、プロバイダはテーブル内の 1 つの行へのアクセスを提供します。さらに、慣例として、プロバイダは ID 値をテーブルの <code>_ID</code> 列とマッチングし、一致する行に対して要求されたアクセスを実行します。
+
+
+
+</p>
+<p>
+    この慣例により、プロバイダにアクセスするアプリの一般的なパターンを簡単に設計できます。アプリはプロバイダにクエリを実行し、{@link android.widget.CursorAdapter} を使用して、取得した {@link android.database.Cursor} を {@link android.widget.ListView} に表示します。
+
+
+    {@link android.widget.CursorAdapter} の定義には、{@link android.database.Cursor} のいずれかの列を <code>_ID</code> に設定する必要があります
+
+</p>
+<p>
+    その後、ユーザーはデータの確認や修正のために、表示された行のいずれかを UI から選択します。
+アプリは {@link android.widget.ListView} を返す {@link android.database.Cursor} から対応する行を取得し、この行の <code>_ID</code> 値を取得し、その値をコンテンツ URI の末尾に追加して、プロバイダにアクセス要求を送ります。
+
+その後、プロバイダは、ユーザーが選択した行にクエリや修正を実行します。
+
+</p>
+<h3>コンテンツ URI パターン</h3>
+<p>
+    受け取ったコンテンツ URI に対するアクションを簡単に選択できるように、プロバイダ API には {@link android.content.UriMatcher} という便利なクラスが用意されています。このクラスはコンテンツ URI 「パターン」を正数値にマッピングします。
+
+この正数値を <code>switch</code> 文で使用することで、特定のパターンに一致する 1 つ以上のコンテンツ URI に目的のアクションを選択できます。
+
+</p>
+<p>
+    コンテンツ URI パターンは、次のワイルドカード文字を使用するコンテンツ URI に一致します。
+</p>
+    <ul>
+        <li>
+            <strong><code>*</code>:</strong> 任意の長さの任意の有効な文字で構成される文字列に一致します。
+        </li>
+        <li>
+            <strong><code>#</code>:</strong> 任意の長さの任意の数字で構成される文字列に一致します。
+        </li>
+    </ul>
+<p>
+    コンテンツ URI 処理の設計とコーディングの例として、テーブルを指す次のコンテンツ URI を認識する認証局 <code>com.example.app.provider</code> を持つプロバイダを考えてみます。
+
+
+</p>
+<ul>
+    <li>
+        <code>content://com.example.app.provider/table1</code>: <code>table1</code> という名前のテーブル。
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table2/dataset1</code>: <code>dataset1</code> という名前のテーブル。
+
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table2/dataset2</code>: <code>dataset2</code> という名前のテーブル。
+
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table3</code>: <code>table3</code> という名前のテーブル。
+    </li>
+</ul>
+<p>
+    さらに、行 ID が末尾に追加されていると、プロバイダではこれらのコンテンツ URI が認識されます。たとえば、<code>table3</code> の <code>1</code> で特定される行は <code>content://com.example.app.provider/table3/1</code> になります。
+
+
+</p>
+<p>
+    次のようなコンテンツ URI パターンを使用できます。
+</p>
+<dl>
+    <dt>
+        <code>content://com.example.app.provider/*</code>
+    </dt>
+    <dd>
+        プロバイダの任意のコンテンツ URI に一致します。
+    </dd>
+    <dt>
+        <code>content://com.example.app.provider/table2/*</code>: 
+    </dt>
+    <dd>
+        テーブル <code>dataset1</code> と <code>dataset2</code> のコンテンツ URI に一致しますが、<code>table1</code> や <code>table3</code> のコンテンツ URI には一致しません。
+
+
+    </dd>
+    <dt>
+        <code>content://com.example.app.provider/table3/#</code>: <code>table3</code> の 1 つの行のコンテンツ URI に一致します。<code>6</code> で特定される行は <code>content://com.example.app.provider/table3/6</code> になります。
+
+
+
+    </dt>
+</dl>
+<p>
+    次のコード スニペットでは、{@link android.content.UriMatcher} のメソッドが機能する仕組みを示します。
+    このコードでは、テーブルにコンテンツ URI パターン <code>content://&lt;authority&gt;/&lt;path&gt;</code> を使用し、1 つの行に <code>content://&lt;authority&gt;/&lt;path&gt;/&lt;id&gt;</code> を使用することで、表全体の URI と 1 つの行の URI を異なる方法で処理します。
+
+
+
+</p>
+<p>
+    メソッド {@link android.content.UriMatcher#addURI(String, String, int) addURI()} は認証局とパスを正数値にマッピングします。
+メソッド {@link android.content.UriMatcher#match(Uri)
+    match()} は URI に正数値を返します。次のように、<code>switch</code> 文によって、クエリをテーブル全体に実行するか、1 つのレコードに実行するかが決まります。
+
+</p>
+<pre class="prettyprint">
+public class ExampleProvider extends ContentProvider {
+...
+    // Creates a UriMatcher object.
+    private static final UriMatcher sUriMatcher;
+...
+    /*
+     * The calls to addURI() go here, for all of the content URI patterns that the provider
+     * should recognize. For this snippet, only the calls for table 3 are shown.
+     */
+...
+    /*
+     * Sets the integer value for multiple rows in table 3 to 1. Notice that no wildcard is used
+     * in the path
+     */
+    sUriMatcher.addURI("com.example.app.provider", "table3", 1);
+
+    /*
+     * Sets the code for a single row to 2. In this case, the "#" wildcard is
+     * used. "content://com.example.app.provider/table3/3" matches, but
+     * "content://com.example.app.provider/table3 doesn't.
+     */
+    sUriMatcher.addURI("com.example.app.provider", "table3/#", 2);
+...
+    // Implements ContentProvider.query()
+    public Cursor query(
+        Uri uri,
+        String[] projection,
+        String selection,
+        String[] selectionArgs,
+        String sortOrder) {
+...
+        /*
+         * Choose the table to query and a sort order based on the code returned for the incoming
+         * URI. Here, too, only the statements for table 3 are shown.
+         */
+        switch (sUriMatcher.match(uri)) {
+
+
+            // If the incoming URI was for all of table3
+            case 1:
+
+                if (TextUtils.isEmpty(sortOrder)) sortOrder = "_ID ASC";
+                break;
+
+            // If the incoming URI was for a single row
+            case 2:
+
+                /*
+                 * Because this URI was for a single row, the _ID value part is
+                 * present. Get the last path segment from the URI; this is the _ID value.
+                 * Then, append the value to the WHERE clause for the query
+                 */
+                selection = selection + "_ID = " uri.getLastPathSegment();
+                break;
+
+            default:
+            ...
+                // If the URI is not recognized, you should do some error handling here.
+        }
+        // call the code to actually do the query
+    }
+</pre>
+<p>
+    別の {@link android.content.ContentUris} には、コンテンツ URI の一部である <code>id</code> で作業するための便利なメソッドが備わっています。
+クラス {@link android.net.Uri} と {@link android.net.Uri.Builder} には、既存の {@link android.net.Uri} オブジェクトを解析して新しいオブジェクトをビルドするための便利なメソッドがあります。
+
+
+</p>
+
+<!-- Implementing the ContentProvider class -->
+<h2 id="ContentProvider">ContentProvider クラスを実装する</h2>
+<p>
+    {@link android.content.ContentProvider} インスタンスは、他のアプリケーションからの要求を処理することで、一連の構造化されたデータへのアクセスを管理します。
+どのような形式でアクセスする場合も、最終的には {@link android.content.ContentResolver} が呼び出されます。その後 {@link android.content.ContentProvider} の具象メソッドが呼び出され、アクセスを取得します。
+
+
+</p>
+<h3 id="RequiredAccess">必須メソッド</h3>
+<p>
+    抽象クラス {@link android.content.ContentProvider} は 6 つの抽象メソッドを定義しますが、これらのメソッドは独自の具象サブクラスの一部として実装する必要があります。
+次のように、{@link android.content.ContentProvider#onCreate() onCreate()} を除くこれらのメソッドは、コンテンツ プロバイダへのアクセスを試みるクライアント アプリケーションによって呼び出されます。
+
+
+</p>
+<dl>
+    <dt>
+        {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+        query()}
+    </dt>
+    <dd>
+        プロバイダからデータを取得します。引数を使って、クエリを実行するテーブル、返す行と列、結果の並び順を選択します。
+
+        データは {@link android.database.Cursor} オブジェクトとして返されます。
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}
+    </dt>
+    <dd>
+        プロバイダに新しい行を挿入します。引数を使って、挿入先のテーブルを選択し、使用する列の値を取得します。
+新たに挿入した行のコンテンツ URI が返されます。
+
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#update(Uri, ContentValues, String, String[])
+        update()}
+    </dt>
+    <dd>
+        プロバイダ内の既存の行を更新します。引数を使って、更新するテーブルと行を選び、更新された列の値を取得します。
+更新された行の数が返されます。
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()}
+    </dt>
+    <dd>
+        プロバイダから行を削除します。引数を使って、削除するテーブルと行を選びます。
+削除された行の数が返されます。
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#getType(Uri) getType()}
+    </dt>
+    <dd>
+        コンテンツ URI に対応する MIME  タイプを返します。このメソッドの詳細は、<a href="#MIMETypes">コンテンツ プロバイダ MIME を実装する</a>セクションをご覧ください。
+
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#onCreate() onCreate()}
+    </dt>
+    <dd>
+        プロバイダを初期化します。プロバイダが作成されると、Android システムがこのメソッドを即座に呼び出します。
+{@link android.content.ContentResolver} オブジェクトがアクセスを試みるまでは、プロバイダは作成されません。
+
+    </dd>
+</dl>
+<p>
+    これらのメソッドが持つ署名は、同じ名前の {@link android.content.ContentResolver} メソッドの署名と同じになります。
+
+</p>
+<p>
+    これらのメソッドを実装する場合は、次の点を考慮する必要があります。
+</p>
+<ul>
+    <li>
+        {@link android.content.ContentProvider#onCreate() onCreate()} を除くこれらのすべてのメソッドは、複数のスレッドを使用して同時に呼び出すことができるため、スレッドに対応した設定にする必要があります。
+複数のスレッドの詳細は、<a href="{@docRoot}guide/components/processes-and-threads.html">プロセスとスレッド</a>をご覧ください。
+
+
+
+    </li>
+    <li>
+        {@link android.content.ContentProvider#onCreate()
+        onCreate()} では冗長な操作は行わないようにします。本当に必要になるまでは、タスクの初期化は行わないようにします。
+        詳細は、<a href="#OnCreate">onCreate() メソッドを実装する</a>をご覧ください。
+
+    </li>
+    <li>
+        これのメソッドの実装は必須ですが、コードでは予測されたデータタイプを返す以外の操作は必要ありません。
+たとえば、他のアプリケーションが一部のテーブルにデータを挿入できないように設定するとします。
+その場合、{@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} への呼び出しを無視して 0 を返します。
+
+
+    </li>
+</ul>
+<h3 id="Query">query() メソッドを実装する</h3>
+<p>
+    {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+    ContentProvider.query()} メソッドは {@link android.database.Cursor} オブジェクトを返す必要があります。失敗した場合は、{@link java.lang.Exception} をスローします。
+
+SQLite データベースをデータストレージとして使用する場合は、{@link android.database.sqlite.SQLiteDatabase} クラスのいずれかの <code>query()</code> メソッドが返す {@link android.database.Cursor} を返します。
+
+
+    クエリがどの行にも一致しない場合は、{@link android.database.Cursor#getCount()} メソッドが 0 を返す {@link android.database.Cursor} インスタンスを返す必要があります。
+
+    クエリプロセス中にエラーが発生した場合にのみ <code>null</code> を返します。
+</p>
+<p>
+    SQLite データベースをデータストレージとして使用しない場合は、{@link android.database.Cursor} クラスのいずれかの具象サブクラスを使用します。
+たとえば、{@link android.database.MatrixCursor} クラスは、各行が {@link java.lang.Object} の配列となるカーソルを実装します。
+このクラスでは、{@link android.database.MatrixCursor#addRow(Object[]) addRow()} を使って新しい行を追加します。
+
+</p>
+<p>
+    Android システムは、プロセスの境界をまたいで {@link java.lang.Exception} を送信できるように設定する必要があることにご注意ください。
+Android では、クエリエラーを処理するのに便利な、次の例外を送信できます。
+
+</p>
+<ul>
+    <li>
+        {@link java.lang.IllegalArgumentException}(プロバイダが無効なコンテンツ URI を受け取った場合にこの例外をスローするように選択できます)
+
+    </li>
+    <li>
+        {@link java.lang.NullPointerException}
+    </li>
+</ul>
+<h3 id="Insert">insert() メソッドを実装する</h3>
+<p>
+    {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} メソッドは、{@link android.content.ContentValues} 引数の値を使用して、適切なテーブルに新しい行を追加します。
+
+列名が {@link android.content.ContentValues} 引数にない場合は、プロバイダ コードがデータベース スキーマのいずれかで、デフォルト値を設定できます。
+
+
+</p>
+<p>
+    このメソッドは新しい行のコンテンツ URI を返します。作成するには、{@link android.content.ContentUris#withAppendedId(Uri, long) withAppendedId()} を使用して、新しい行の <code>_ID</code>(または他のプライマリキー)の値をテーブルのコンテンツ URI の末尾に追加します。
+
+
+</p>
+<h3 id="Delete">delete() メソッドを実装する</h3>
+<p>
+    {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()} メソッドでは、データストレージから行を物理的に削除する必要はありません。
+プロバイダで同期アダプタを使用する場合は、行全体を削除するのではなく、削除された行に「削除」フラグを付けるようにします。
+
+同期アダプタは削除された行を探して、プロバイダから削除される前に、サーバーから行を削除できます。
+
+</p>
+<h3 id="Update">update() メソッドを実装する</h3>
+<p>
+    {@link android.content.ContentProvider#update(Uri, ContentValues, String, String[])
+    update()} メソッドは {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} が使用するのと同じ {@link android.content.ContentValues} 引数、{@link android.content.ContentProvider#delete(Uri, String, String[]) delete()} と {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+    ContentProvider.query()} が使用するのと同じ <code>selection</code> と <code>selectionArgs</code> 引数を使用します。
+
+
+
+これにより、これらのメソッド間でコードを再利用できます。
+</p>
+<h3 id="OnCreate">onCreate() メソッドを実装する</h3>
+<p>
+    Android システムはプロバイダを起動する際に {@link android.content.ContentProvider#onCreate()
+    onCreate()} を呼び出します。このメソッドでは迅速に実行できる初期化タスクのみを実行するようにし、プロバイダが実際にデータの要求を受け取るまでは、データベースの作成とデータロードを保留します。
+
+{@link android.content.ContentProvider#onCreate() onCreate()} で冗長なタスクを行う場合は、プロバイダの起動が遅くなります。
+
+同様に、プロバイダから他のアプリケーションへの応答も遅くなります。
+
+</p>
+<p>
+    たとえば、SQLite データベースを使用すると、{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()} に {@link android.database.sqlite.SQLiteOpenHelper} オブジェクトを作成し、データベースを初めて開くときに SQL テーブルを作成できます。
+
+
+この操作を簡単にするために、{@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase
+    getWritableDatabase()} を初めて呼び出すときには、{@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+    SQLiteOpenHelper.onCreate()} メソッドが自動的に呼び出されます。
+
+
+</p>
+<p>
+    次の 2 つのスニペットは、{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()} と {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+    SQLiteOpenHelper.onCreate()} との間のやり取りを表しています。
+
+最初のスニペットは {@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()} の実装です。
+
+</p>
+<pre class="prettyprint">
+public class ExampleProvider extends ContentProvider
+
+    /*
+     * Defines a handle to the database helper object. The MainDatabaseHelper class is defined
+     * in a following snippet.
+     */
+    private MainDatabaseHelper mOpenHelper;
+
+    // Defines the database name
+    private static final String DBNAME = "mydb";
+
+    // Holds the database object
+    private SQLiteDatabase db;
+
+    public boolean onCreate() {
+
+        /*
+         * Creates a new helper object. This method always returns quickly.
+         * Notice that the database itself isn't created or opened
+         * until SQLiteOpenHelper.getWritableDatabase is called
+         */
+        mOpenHelper = new MainDatabaseHelper(
+            getContext(),        // the application context
+            DBNAME,              // the name of the database)
+            null,                // uses the default SQLite cursor
+            1                    // the version number
+        );
+
+        return true;
+    }
+
+    ...
+
+    // Implements the provider's insert method
+    public Cursor insert(Uri uri, ContentValues values) {
+        // Insert code here to determine which table to open, handle error-checking, and so forth
+
+        ...
+
+        /*
+         * Gets a writeable database. This will trigger its creation if it doesn't already exist.
+         *
+         */
+        db = mOpenHelper.getWritableDatabase();
+    }
+}
+</pre>
+<p>
+    次のスニペットは {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+    SQLiteOpenHelper.onCreate()} の実装であり、ヘルパークラスを含みます。
+
+</p>
+<pre class="prettyprint">
+...
+// A string that defines the SQL statement for creating a table
+private static final String SQL_CREATE_MAIN = "CREATE TABLE " +
+    "main " +                       // Table's name
+    "(" +                           // The columns in the table
+    " _ID INTEGER PRIMARY KEY, " +
+    " WORD TEXT"
+    " FREQUENCY INTEGER " +
+    " LOCALE TEXT )";
+...
+/**
+ * Helper class that actually creates and manages the provider's underlying data repository.
+ */
+protected static final class MainDatabaseHelper extends SQLiteOpenHelper {
+
+    /*
+     * Instantiates an open helper for the provider's SQLite data repository
+     * Do not do database creation and upgrade here.
+     */
+    MainDatabaseHelper(Context context) {
+        super(context, DBNAME, null, 1);
+    }
+
+    /*
+     * Creates the data repository. This is called when the provider attempts to open the
+     * repository and SQLite reports that it doesn't exist.
+     */
+    public void onCreate(SQLiteDatabase db) {
+
+        // Creates the main table
+        db.execSQL(SQL_CREATE_MAIN);
+    }
+}
+</pre>
+
+
+<!-- Implementing ContentProvider MIME Types -->
+<h2 id="MIMETypes">ContentProvider MIME タイプを実装する</h2>
+<p>
+    {@link android.content.ContentProvider} クラスには、MIME タイプを返すための次の 2 つのクラスがあります。
+</p>
+<dl>
+    <dt>
+        {@link android.content.ContentProvider#getType(Uri) getType()}
+    </dt>
+    <dd>
+        任意のプロバイダに実装する必要がある必須メソッドの 1 つです。
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}
+    </dt>
+    <dd>
+        ファイルを提供するプロバイダの場合に、実装が考えられるメソッドです。
+    </dd>
+</dl>
+<h3 id="TableMIMETypes">テーブルの MIME タイプ</h3>
+<p>
+    {@link android.content.ContentProvider#getType(Uri) getType()} メソッドは、MIME 形式で {@link java.lang.String} を返します。これは、コンテンツ URI 引数によって返されるデータのタイプを表します。
+
+{@link android.net.Uri} 引数には特定の URI ではなくパターンを指定することもできます。この場合、パターンに一致するコンテンツ URI に関連付けられているデータのタイプを返します。
+
+
+</p>
+<p>
+    テキスト、HTML、JPEG といった一般的なタイプのデータの場合、{@link android.content.ContentProvider#getType(Uri) getType()} では該当するデータの標準的な MIME タイプを返す必要があります。
+
+利用できるこれらの標準的なタイプの詳細なリストは、「<a href="http://www.iana.org/assignments/media-types/index.htm">IANA MIME Media Types</a>」のウェブサイトをご覧ください。
+
+
+</p>
+<p>
+    テーブル データの 1 つ以上の行を指すコンテンツ URI の場合、{@link android.content.ContentProvider#getType(Uri) getType()} は、Android のベンダー固有の MIME 形式で MIME タイプを返す必要があります。
+
+
+</p>
+<ul>
+    <li>
+        タイプ部分: <code>vnd</code>
+    </li>
+    <li>
+        サブタイプ部分: 
+        <ul>
+            <li>
+    URI パターンが 1 つの行の場合: <code>android.cursor.<strong>item</strong>/</code>
+            </li>
+            <li>
+    URI パターンが複数の行の場合: <code>android.cursor.<strong>dir</strong>/</code>
+            </li>
+        </ul>
+    </li>
+    <li>
+        プロバイダ固有の部分: <code>vnd.&lt;name&gt;</code>.<code>&lt;type&gt;</code>
+        <p>
+            <code>&lt;name&gt;</code> と <code>&lt;type&gt;</code> を指定します。
+            <code>&lt;name&gt;</code> の値はグローバルに一意の値とし、<code>&lt;type&gt;</code> の値は対応する URI パターンに一意のものとする必要があります。
+
+<code>&lt;name&gt;</code> には、企業名や、アプリケーションの Android パッケージ名の一部を使うことをお勧めします。
+<code>&lt;type&gt;</code> には、URI に関連付けられているテーブルを特定する文字列を使うことをお勧めします。
+
+
+        </p>
+
+    </li>
+</ul>
+<p>
+    たとえば、プロバイダの認証局が <code>com.example.app.provider</code> の場合、テーブル名は <code>table1</code> となり、<code>table1</code> の複数行の MIME タイプは次のようになります。
+
+
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>/vnd.com.example.provider.table1
+</pre>
+<p>
+    <code>table1</code> の 1 つの行の場合は、MIME タイプは次のようになります。
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>/vnd.com.example.provider.table1
+</pre>
+<h3 id="FileMIMETypes">ファイルの MIME タイプ</h3>
+<p>
+    ファイルを提供するプロバイダの場合は、{@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()} を実装します。
+
+    このメソッドは、プロバイダが特定のコンテンツ URI に対して返すことができるファイルの MIME タイプの {@link java.lang.String} 配列を返します。クライアントで処理する MIME タイプのみを返すには、MIME タイプフィルタ引数によって、提供する MIME タイプをフィルタする必要があります。
+
+
+</p>
+<p>
+    たとえば、写真画像を <code>.jpg</code>、<code>.png</code>、<code>.gif</code> 形式で提供するプロバイダについて考えてみます。
+
+    アプリケーションが {@link android.content.ContentResolver#getStreamTypes(Uri, String)
+    ContentResolver.getStreamTypes()} をフィルタ文字列 <code>image/*</code>  (何らかの形式の「画像」)で呼び出す場合、{@link android.content.ContentProvider#getStreamTypes(Uri, String)
+    ContentProvider.getStreamTypes()} メソッドは次のような配列を返します。
+
+
+</p>
+<pre>
+{ &quot;image/jpeg&quot;, &quot;image/png&quot;, &quot;image/gif&quot;}
+</pre>
+<p>
+    アプリの対象が <code>.jpg</code> ファイルのみであり、アプリが {@link android.content.ContentResolver#getStreamTypes(Uri, String)
+    ContentResolver.getStreamTypes()} をフィルタ文字列 <code>*\/jpeg</code> で呼び出す場合、{@link android.content.ContentProvider#getStreamTypes(Uri, String)
+    ContentProvider.getStreamTypes()} は次の項目を返します。
+
+
+<pre>
+{&quot;image/jpeg&quot;}
+</pre>
+<p>
+    プロバイダが、フィルタ文字列で要求した MIME タイプを提供していない場合、{@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()} は <code>null</code> を返します。
+
+
+</p>
+
+
+<!--  Implementing a Contract Class -->
+<h2 id="ContractClass">コントラクト クラスを実装する</h2>
+<p>
+    コントラクト クラスは <code>public final</code> クラスであり、URI、列名、MIME タイプ、プロバイダに関連するその他のメタデータを含みます。
+このクラスは、URI や列名などの実際の値が変更された場合にも、プロバイダに正しくアクセスできることを保証することで、プロバイダとその他のアプリケーションとの間にコントラクトを構築します。
+
+
+
+</p>
+<p>
+    さらに、通常、コントラクト クラスではその定数にニーモニック名が設定されているため、デベロッパーが列名や URI に誤った値を使用しにくいようになっています。
+クラスであるため、Javadoc ドキュメントを含めることができます。
+Eclipse などの統合型開発環境では、コントラクト クラスから定数名が自動的に設定され、定数の Javadoc が表示されます。
+
+
+</p>
+<p>
+    デベロッパーはアプリケーションからコントラクト クラスのクラスファイルにアクセスできませんが、提供する <code>.jar</code> ファイルからクラスファイルをアプリケーションに静的にコンパイルできます。
+
+</p>
+<p>
+    {@link android.provider.ContactsContract} クラスとそのネストされたクラスは、コントラクト クラスの例です。
+
+</p>
+<h2 id="Permissions">コンテンツ プロバイダ パーミッションを実装する</h2>
+<p>
+    Android システムのあらゆる領域に対するパーミッションとクラスについては、「<a href="{@docRoot}guide/topics/security/security.html">セキュリティとパーミッション</a>」トピックをご覧ください。
+
+    また、トピック「<a href="{@docRoot}guide/topics/data/data-storage.html">Data Storage</a>」にも、ストレージのさまざまなタイプに有効なセキュリティとパーミッションについて記載されています。
+
+    重要な点をまとめると次のようになります。
+</p>
+<ul>
+    <li>
+        デフォルトでは、端末の内部ストレージに格納されるデータファイルは、アプリケーションとプロバイダでのみ使用できます。
+
+    </li>
+    <li>
+        作成する {@link android.database.sqlite.SQLiteDatabase} データベースは、自分のアプリケーションとプロバイダにのみ公開されます。
+
+    </li>
+    <li>
+        デフォルトでは、外部ストレージに保存するデータファイルはパブリックとなり、誰もが読み取ることができます。<em></em><em></em>
+他のアプリケーションは別の API 呼び出しを使用してファイルの読み取りと書き込みを実行できるため、コンテンツ プロバイダで外部ストレージにあるファイルへのアクセスは制限できません。
+
+    </li>
+    <li>
+        端末の内部ストレージにあるファイルや SQLite データベースを開いたり作成したりするメソッド呼び出しは、他のすべてのアプリケーションに読み取りと書き込みの両方のアクセスを付与してしまう可能性があります。
+内部ファイルやデータベースをプロバイダのリポジトリとして使用する場合に、「誰でも読み取り可能」や「誰でも書き込み可能」なアクセスを付与してしまうと、マニフェストで設定したプロバイダのパーミッションでデータを保護できなくなってしまいます。
+
+
+内部ストレージのファイルとデータベースへのデフォルトのアクセスは「プライベート」になっているため、プロバイダのリポジトリの場合はこの設定を変更しないでください。
+
+    </li>
+</ul>
+<p>
+    コンテンツ プロバイダ パーミッションを使用してデータへのアクセスを制御する場合は、内部ファイル、SQLite データベース、「クラウド」(リモート サーバーなど)にデータを格納し、ファイルやデータベースを自分のアプリケーションにのみ公開するように設定します。
+
+
+</p>
+<h3>パーミッションを実装する</h3>
+<p>
+    デフォルトではプロバイダにはパーミッションが設定されていないため、基礎となるデータがプライベートに設定されている場合でも、すべてのアプリケーションは自分のプロバイダからの読み取りとプロバイダへの書き込みを実行できます。
+これを変更するには、<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+    &lt;provider&gt;</a></code> 要素の属性や子要素を使用して、マニフェスト ファイルでプロバイダのパーミッションを設定します。
+
+プロバイダ全体に適用するパーミッションを設定することもできますし、特定のテーブル、特定のレコード、これら 3 つすべてに適用するパーミッションを設定することもできます。
+
+</p>
+<p>
+    マニフェスト ファイルで 1 つ以上の <code><a href="{@docRoot}guide/topics/manifest/permission-element.html">
+    &lt;permission&gt;</a></code> 要素を使用して、プロバイダのパーミッションを定義します。
+自分のプロバイダに独自のパーミッションを作成するには、<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#nm">
+    android:name</a></code> 属性に Java スタイルのスコーピングを使用します
+
+たとえば、読み取りパーミッションの名前を <code>com.example.app.provider.permission.READ_PROVIDER</code> とします。
+
+
+</p>
+<p>
+    次のリストは、プロバイダ パーミッションの範囲を示しています。プロバイダ全体に適用するパーミッションから始まり、より詳細な範囲のものになっています。
+
+    より広い範囲を持つパーミッションよりも、範囲が限定されるパーミッションの方が優先されます。
+</p>
+<dl>
+    <dt>
+        プロバイダ レベルで 1 つの読み取りと書き込みのパーミッション
+    </dt>
+    <dd>
+        1 つのパーミッションでプロバイダ全体の読み取りと書き込みのアクセスの両方を制御します。<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code> 要素の <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+        android:permission</a></code> 属性で指定します。
+
+
+    </dd>
+    <dt>
+        プロバイダ レベルで別々の読み取りと書き込みパーミッション
+    </dt>
+    <dd>
+        プロバイダ全体の読み取りパーミッションと書き込みパーミッションです。これらのパーミッションは <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code> 要素の <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">
+        android:readPermission</a></code> 属性と <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">
+        android:writePermission</a></code> 属性で指定します。
+
+
+これらは、<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+        android:permission</a></code> で要求するパーミッションよりも優先されます。
+
+    </dd>
+    <dt>
+        パスレベルのパーミッション
+    </dt>
+    <dd>
+        プロバイダのコンテンツ URI の読み取り、書き込み、読み取り / 書き込みパーミッションです。<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code> 要素の <code><a href="{@docRoot}guide/topics/manifest/path-permission-element.html">
+        &lt;path-permission&gt;</a></code> 子要素を使用して、制御対象の各 URI を指定します。
+
+
+指定する各コンテンツ URI に対して、読み取り / 書き込みパーミッション、読み取りパーミッション、書き込みパーミッション、3 つすべてを指定できます。
+読み取りパーミッションと書き込みパーミッションは、読み取り / 書き込みパーミッションに優先します。
+また、パスレベルのパーミッションはプロバイダ レベルのパーミッションに優先します。
+
+    </dd>
+    <dt>
+        一時的なパーミッション
+    </dt>
+    <dd>
+        アプリケーションへの一時的なアクセスを付与するパーミッション レベルです。アプリケーションに通常必要とするパーミッションが付与されていない場合でも付与できます。
+一時的なアクセス機能により、アプリケーションのマニフェストに必要なパーミッションの数を減らせます。
+
+一時的なパーミッションを有効にすると、プロバイダへの「永続的な」パーミッションを必要とするアプリケーションのみが、継続的にすべてのデータにアクセスできます。
+
+
+        <p>
+            プロバイダからの写真の添付ファイルを外部の画像ビューワ アプリケーションで表示する場合に、メール プロバイダとアプリに実装するパーミッションを考えてみます。
+
+パーミッションを要求しなくても、画像ビューワに必要なアクセスを付与するには、写真のコンテンツ URI に一時的なパーミッションを設定します。
+ユーザーが写真を表示しようとしたときに、アプリから写真のコンテンツ URI とパーミッション フラグを含むインテントを画像ビューワに送信するようにメール アプリを設計します。
+
+ビューワにプロバイダの通常の読み取りパーミッションが付与されていない場合でも、画像ビューワはメール プロバイダにクエリを実行して写真を取得します。
+
+
+        </p>
+        <p>
+            一時的なパーミッションを有効にするには、<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> 要素の <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+            android:grantUriPermissions</a></code> 属性を設定するか、1 つ以上の <code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
+            &lt;grant-uri-permission&gt;</a></code> 子要素を <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> 要素に追加します。
+
+
+
+一時的なパーミッションを使用する場合、プロバイダからのコンテンツ URI のサポートを削除したときは常に {@link android.content.Context#revokeUriPermission(Uri, int)
+            Context.revokeUriPermission()} を呼び出す必要があります。そうすると、コンテンツ URI が一時的なパーミッションに関連付けられます。
+
+
+        </p>
+        <p>
+            属性の値によって、プロバイダへのアクセスレベルが決まります。
+            属性を <code>true</code> に設定すると、システムによってプロバイダ全体への一時的なパーミッションが付与されます。このパーミッションは、プロバイダ レベルやパスレベルのパーミッションで必要になるその他のパーミッションよりも優先されます。
+
+
+        </p>
+        <p>
+            このフラグを <code>false</code> に設定する場合は、<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
+            &lt;grant-uri-permission&gt;</a></code> 子要素を <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> 要素に追加する必要があります。
+
+それぞれの子要素は、一時的なアクセスが付与される 1 つ以上のコンテンツ URI を指定します。
+
+        </p>
+        <p>
+            一時的なアクセスをアプリケーションに委任するには、インテントに {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION} フラグか {@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION} フラグ、またはその両方を含める必要があります。
+
+これらは、{@link android.content.Intent#setFlags(int) setFlags()} メソッドで設定します。
+
+        </p>
+        <p>
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+            android:grantUriPermissions</a></code> 属性がない場合は、<code>false</code> であると仮定されます。
+
+        </p>
+    </dd>
+</dl>
+
+
+
+<!-- The Provider Element -->
+<h2 id="ProviderElement">&lt;provider&gt; 要素</h2>
+<p>
+    {@link android.app.Activity} コンポーネントや {@link android.app.Service} コンポーネントと同様に、<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+    &lt;provider&gt;</a></code> 要素を使用して {@link android.content.ContentProvider} のサブクラスをアプリケーションのマニフェスト ファイルに定義する必要があります。
+
+
+Android システムは要素から次の情報を取得します。
+
+<dl>
+    <dt>
+        認証局(<a href="{@docRoot}guide/topics/manifest/provider-element.html#auth">{@code
+        android:authorities}</a>)
+
+    </dt>
+    <dd>
+        システム内のプロバイダ全体を特定する識別名です。この属性の詳細は、<a href="#ContentURI">コンテンツ URI を設計する</a>セクションをご覧ください。
+
+
+    </dd>
+    <dt>
+        プロバイダ クラス名(<code>
+<a href="{@docRoot}guide/topics/manifest/provider-element.html#nm">android:name</a>
+        </code>)
+
+    </dt>
+    <dd>
+        {@link android.content.ContentProvider} を実装するクラスです。このクラスの詳細は、<a href="#ContentProvider">ContentProvider クラスを実装する</a>セクションをご覧ください。
+
+
+    </dd>
+    <dt>
+        パーミッション
+    </dt>
+    <dd>
+        他のアプリケーションがプロバイダのデータにアクセスするのに必要なパーミッションを指定する属性です。
+
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+                android:grantUriPermssions</a></code>: 一時的なパーミッションのフラグです。
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+                android:permission</a></code>: 1 つのプロバイダ全体の読み取り / 書き込みパーミッションです。
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">
+                android:readPermission</a></code>: プロバイダ全体の読み取りパーミッションです。
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">
+                android:writePermission</a></code>: プロバイダ全体の書き込みパーミッションです。
+            </li>
+        </ul>
+        <p>
+            パーミッションとそれに対応する属性の詳細は、<a href="#Permissions">コンテンツ プロバイダ パーミッションを実装する</a>セクションをご覧ください。
+
+
+        </p>
+    </dd>
+    <dt>
+        起動と制御の属性
+    </dt>
+    <dd>
+        これらの属性は、Android システムの起動方法とそのタイミング、プロバイダのプロセスの特性、その他の実行時の設定を決定します。
+
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#enabled">
+                android:enabled</a></code>: システムにプロバイダの起動を許可するフラグです。
+            </li>
+              <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#exported">
+                android:exported</a></code>: 他のアプリケーションにこのプロバイダの使用を許可するフラグです。
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#init">
+                android:initOrder</a></code>: 同じプロセス内の他のプロバイダに対して、このプロバイダを起動する順番です。
+
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#multi">
+                android:multiProcess</a></code>: システムに呼び出しクライアントと同じプロセスでのプロバイダの開始を許可するフラグです。
+
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#proc">
+                android:process</a></code>: プロバイダを実行するプロセスの名前です。
+
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#sync">
+                android:syncable</a></code>: プロバイダのデータをサーバー上のデータと同期することを示すフラグです。
+
+            </li>
+        </ul>
+        <p>
+            属性に関する詳細は、開発ガイドの <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> 要素に関するトピックに記載されています。
+
+
+        </p>
+    </dd>
+    <dt>
+        情報に関する属性
+    </dt>
+    <dd>
+        プロバイダのオプションのアイコンとラベルです。
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#icon">
+                android:icon</a></code>: プロバイダのアイコンを含むドローアブル リソースです。
+                [設定] &gt; [アプリ] &gt; [すべて] にあるアプリのリストのプロバイダラベルの横に表示されるアイコンです。<em></em><em></em><em></em>
+
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#label">
+                android:label</a></code>: プロバイダ、データ、その両方を説明する、情報ラベルです。
+[設定] &gt; [アプリ] &gt; [すべて] にあるアプリのリストのプロバイダラベルの横に表示されるアイコンです。<em></em><em></em><em></em>
+
+            </li>
+        </ul>
+        <p>
+            属性に関する詳細は、開発ガイドの <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> 要素に関するトピックに記載されています。
+
+        </p>
+    </dd>
+</dl>
+
+<!-- Intent Access -->
+<h2 id="Intents">インテントとデータアクセス</h2>
+<p>
+    {@link android.content.Intent} を使用すると、アプリケーションはコンテンツ プロバイダに間接的にアクセスできます。
+    アプリケーションは、{@link android.content.ContentResolver} や {@link android.content.ContentProvider} のメソッドを呼び出しません。
+その代わりに、アクティビティを起動するインテントを送信します。これは通常、プロバイダ独自のアプリケーションの一部となっています。
+対象のアクティビティは UI のデータの取得と表示を担当します。インテントのアクションに応じて、対象のアクティビティにより、ユーザーにプロバイダのデータの修正を求めるメッセージが表示されることがあります。
+
+
+    さらに、インテントには、対象のアクティビティが UI に表示する「エクストラ」データが含まれることがあります。ユーザーは使用前に、このデータを変更してプロバイダのデータを修正することもできます。
+
+
+</p>
+<p>
+
+</p>
+<p>
+    インテント アクセスを使用して、データの整合性を保証できます。プロバイダのデータの挿入、更新、削除は、厳格に定義されたビジネス ロジックによって規定されることがあります。
+この場合、他のアプリケーションにデータを直接修正できるように許可すると、無効なデータが発生することがあります。
+
+デベロッパーがインテント アクセスを使用する場合は、すべての操作を完全に文書化します。
+    コードを使用してデータを修正するよりも、独自のアプリケーションの UI を使用したインテント アクセスの方が優れている理由を説明します。
+
+</p>
+<p>
+    プロバイダのデータを修正するための受信インテントの処理は、その他のインテントの処理と同じです。
+インテントの使用についての詳細は、「<a href="{@docRoot}guide/components/intents-filters.html">インテントとインテント フィルタ</a>」をご覧ください。
+
+</p>
diff --git a/docs/html-intl/intl/ja/guide/topics/providers/content-providers.jd b/docs/html-intl/intl/ja/guide/topics/providers/content-providers.jd
new file mode 100644
index 0000000..918426a
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/providers/content-providers.jd
@@ -0,0 +1,108 @@
+page.title=コンテンツ プロバイダ
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+
+<!-- In this document -->
+<h2>トピック</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">        コンテンツ プロバイダの基本</a>
+
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">        コンテンツ プロバイダの作成</a>
+
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/calendar-provider.html">カレンダー プロバイダ</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/contacts-provider.html">連絡先プロバイダ</a>
+    </li>
+</ol>
+
+    <!-- Related Samples -->
+<h2>関連サンプル</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}resources/samples/ContactManager/index.html">        Contact Manager</a> アプリケーション
+
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html">
+        "Cursor (People)"
+        </a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html">
+        "Cursor (Phones)"</a>
+        </li>
+        <li>
+            <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">        サンプル同期アダプタ</a>
+
+        </li>
+    </ol>
+</div>
+</div>
+<p>
+    コンテンツ プロバイダは、一連の構造化されたデータへのアクセスを管理します。データをカプセル化し、データ セキュリティの定義のためのメカニズムを提供します。
+コンテンツ プロバイダは、1 つのプロセス内のデータを別のプロセスで実行されているコードにつなげるための標準的なインターフェースです。
+
+</p>
+<p>
+    コンテンツ プロバイダのデータにアクセスする場合は、アプリケーションの {@link android.content.Context} の {@link android.content.ContentResolver} オブジェクトを使用し、クライアントとしてプロバイダとやり取りします。
+
+
+    {@link android.content.ContentResolver} オブジェクトは、{@link android.content.ContentProvider} を実装するクラスのインスタンスである、プロバイダ オブジェクトとやり取りします。
+プロバイダ オブジェクトはクライアントからのデータ要求を受け取り、要求されたアクションを実行し、結果を返します。
+
+
+</p>
+<p>
+    データを他のアプリケーションと共有しない場合は、独自のプロバイダを開発する必要はありません。
+ただし、独自のアプリケーションでカスタムの検索候補を提供する場合は、独自のプロバイダが必要になります。
+また、自分のアプリケーションから別のアプリケーションに複雑なデータやファイルをコピーして貼り付ける場合も、独自のプロバイダが必要になります。
+
+</p>
+<p>
+    Android 自身には、オーディオ、ビデオ、画像、個人的な連絡先情報などのデータを管理するコンテンツ プロバイダが用意されています。
+一部のプロバイダについては、<code><a href="{@docRoot}reference/android/provider/package-summary.html">android.provider</a>
+    </code> パッケージのリファレンスに一覧が記載されています。
+
+いくつかの制限もありますが、これらのプロバイダにはすべての Android アプリケーションからアクセスできます。
+
+</p><p>
+    コンテンツ プロバイダの詳細は、次のトピックをご覧ください。
+</p>
+<dl>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/content-provider-basics.html">        コンテンツ プロバイダの基本</a></strong>
+
+    </dt>
+    <dd>
+        データが表形式にまとめられている場合の、コンテンツ プロバイダでのデータへのアクセス方法。
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/content-provider-creating.html">         コンテンツ プロバイダの作成</a></strong>
+
+    </dt>
+    <dd>
+        独自のコンテンツ プロバイダの作成方法。
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/calendar-provider.html">        カレンダー プロバイダ</a></strong>
+
+    </dt>
+    <dd>
+        Android プラットフォームの一部であるカレンダー プロバイダへのアクセス方法。
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/contacts-provider.html">        連絡先プロバイダ</a></strong>
+
+    </dt>
+    <dd>
+        Android プラットフォームの一部である連絡先プロバイダへのアクセス方法。
+    </dd>
+</dl>
diff --git a/docs/html-intl/intl/ja/guide/topics/providers/document-provider.jd b/docs/html-intl/intl/ja/guide/topics/providers/document-provider.jd
new file mode 100644
index 0000000..b4342dc
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/providers/document-provider.jd
@@ -0,0 +1,916 @@
+page.title=ストレージ アクセス フレームワーク
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本書の内容
+ <a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
+        <span class="more">詳細を表示</span>
+        <span class="less" style="display:none">詳細を非表示</span></a></h2>
+<ol id="toc44" class="hide-nested">
+    <li>
+        <a href="#overview">概要</a>
+    </li>
+    <li>
+        <a href="#flow">コントロール フロー</a>
+    </li>
+    <li>
+        <a href="#client">クライアント アプリを作成する</a>
+        <ol>
+        <li><a href="#search">ドキュメントを検索する</a></li>
+        <li><a href="#process">プロセスの結果</a></li>
+        <li><a href="#metadata">ドキュメント メタデータを確認する</a></li>
+        <li><a href="#open">ドキュメントを開く</a></li>
+        <li><a href="#create">新しいドキュメントを作成する</a></li>
+        <li><a href="#delete">ドキュメントを削除する</a></li>
+        <li><a href="#edit">ドキュメントを編集する</a></li>
+        <li><a href="#permissions">パーミッションを固定する</a></li>
+        </ol>
+    </li>
+    <li><a href="#custom">カスタム ドキュメント プロバイダを作成する</a>
+        <ol>
+        <li><a href="#manifest">マニフェスト</a></li>
+        <li><a href="#contract">コントラクト</a></li>
+        <li><a href="#subclass">サブクラス DocumentsProvider</a></li>
+        <li><a href="#security">セキュリティ</a></li>
+        </ol>
+    </li>
+
+</ol>
+<h2>キークラス</h2>
+<ol>
+    <li>{@link android.provider.DocumentsProvider}</li>
+    <li>{@link android.provider.DocumentsContract}</li>
+</ol>
+
+<h2>ビデオ</h2>
+
+<ol>
+    <li><a href="http://www.youtube.com/watch?v=zxHVeXbK1P4">
+DevBytes: Android 4.4 ストレージ アクセス フレームワーク: プロバイダ</a></li>
+     <li><a href="http://www.youtube.com/watch?v=UFj9AEz0DHQ">
+DevBytes: Android 4.4 ストレージ アクセス フレームワーク: クライアント</a></li>
+</ol>
+
+
+<h2>コードサンプル</h2>
+
+<ol>
+    <li><a href="{@docRoot}samples/StorageProvider/index.html">
+StorageProvider</a></li>
+     <li><a href="{@docRoot}samples/StorageClient/index.html">
+StorageClient</a></li>
+</ol>
+
+<h2>関連ドキュメント</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">        コンテンツ プロバイダの基本        </a>
+
+
+    </li>
+</ol>
+
+</div>
+</div>
+
+
+<p>Android 4.4 (API レベル 19)は、ストレージ アクセス フレームワーク(SAF)を採用しています。SAF を利用することで、ユーザーは設定したドキュメント ストレージ プロバイダ全体から簡単にドキュメント、画像、その他のファイルを参照して開くことができます。
+
+標準の使いやすい UI により、アプリやプロバイダを通じて一貫性のある方法でファイルを参照したり、最近使用したファイルにアクセスしたりできます。
+</p>
+
+<p>サービスをカプセル化する {@link android.provider.DocumentsProvider} を実装することで、クラウドやローカル ストレージ サービスをエコシステムに参加させることができます。
+プロバイダのドキュメントへのアクセスが必要なクライアントも、数行のコードだけで SAF と統合できます。
+
+</p>
+
+<p>SAF には次の項目が含まれます。</p>
+
+<ul>
+<li><strong>ドキュメント プロバイダ</strong>&mdash;ストレージ サービス(Google ドライブなど)が管理するファイルの表示を許可するコンテンツ プロバイダです。
+ドキュメント プロバイダは {@link android.provider.DocumentsProvider} クラスのサブクラスとして実装されます。document-provider スキーマは従来のファイル階層に基づくものですが、ドキュメント プロバイダが物理的にどのようにファイルを格納するかはその設定次第です。Android プラットフォームには、ダウンロード、画像、ビデオなどの組み込みのドキュメント プロバイダがいくつか用意されています。
+
+
+
+
+</li>
+
+<li><strong>クライアント アプリ</strong>&mdash;{@link android.content.Intent#ACTION_OPEN_DOCUMENT} または {@link android.content.Intent#ACTION_CREATE_DOCUMENT} インテントを呼び出し、ドキュメント プロバイダが返したファイルを受け取るカスタムアプリです。
+
+
+</li>
+
+<li><strong>ピッカー</strong>&mdash;クライアントアプリの検索条件を満たすすべてのドキュメント プロバイダのドキュメントにアクセスできるシステム UI です。
+</li>
+</ul>
+
+<p>SAF は次のような機能も提供します。</p>
+<ul>
+<li>ユーザーは 1 つのアプリだけではなく、すべてのドキュメント プロバイダのコンテンツを参照できます。</li>
+<li>アプリからドキュメント プロバイダが所有するドキュメントへの、長期間の固定アクセスを可能にします。
+このアクセスにより、ユーザーはプロバイダ上でのファイルの追加、編集、保存、削除が可能になります。
+</li>
+<li>複数のユーザー アカウントと USB ストレージ プロバイダなどの一時的なルートをサポートします。一時的なルートはドライブを挿入した場合にのみ表示されます。
+ </li>
+</ul>
+
+<h2 id ="overview">概要</h2>
+
+<p>SAF は、{@link android.provider.DocumentsProvider} クラスのサブクラスであるコンテンツ プロバイダを中心に展開します。
+ドキュメント プロバイダでは、データは下図のように従来のファイル階層で構造化されます。<em></em>
+</p>
+<p><img src="{@docRoot}images/providers/storage_datamodel.png" alt="data model" /></p>
+<p class="img-caption"><strong>図 1.</strong> ドキュメント プロバイダのデータモデル。ルートポイントが 1 つのドキュメントを指し、そこからツリー全体が広がります。
+</p>
+
+<p>注: </p>
+<ul>
+
+<li>各ドキュメント プロバイダは、ドキュメントのツリーの検索の出発点である 1 つ以上の「ルート」を報告します。各ルートは一意の {@link android.provider.DocumentsContract.Root#COLUMN_ROOT_ID} を持ち、該当するルートの下のコンテンツを表すドキュメント(ディレクトリ)を指します。ルートはデザインによって動的に変化し、複数アカウント、一時的な USB ストレージ ドライブ、ユーザーのログインとログアウトなどのユースケースをサポートします。
+
+
+
+
+
+</li>
+
+<li>各ルートの下のドキュメントは 1 つだけになります。そのドキュメントは、1 ~ <em>N</em> 個のドキュメントを指し、さらにそれぞれのドキュメントも 1 ~ <em>N</em> 個のドキュメントを指すことができます。
+ </li>
+
+<li>各ストレージ バックエンドは、一意の {@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID} を使って個々のファイルやディレクトリを参照して表示します。端末の再起動後も使用できる永続的な URI の付与に使用することから、ドキュメント ID は一意でなければならず、一度発行すると変更できません。
+
+
+
+</li>
+
+
+<li>ドキュメントには、開くことができるファイル(特定の MIME タイプを持つもの)か、追加のドキュメント({@link android.provider.DocumentsContract.Document#MIME_TYPE_DIR} MIME タイプを持つもの)を含むディレクトリのいずれかに設定できます。
+
+</li>
+
+<li>各ドキュメントはさまざまな機能を持つことができ、{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS COLUMN_FLAGS} を使って記述します。たとえば、{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_WRITE}、{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE}、{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_THUMBNAIL} といった機能です。同一の {@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID} は複数のディレクトリに含めることができます。
+
+
+
+
+
+</li>
+</ul>
+
+<h2 id="flow">コントロール フロー</h2>
+<p>前述のように、ドキュメント プロバイダのデータモデルは従来のファイル階層を基本とします。
+ただし、{@link android.provider.DocumentsProvider} API でアクセスできるのであれば、任意の方法でデータを物理的に格納できます。たとえば、データにタグベースのクラウド ストレージを使用できます。
+
+</p>
+
+<p>図 2 の例は、写真アプリが格納されたデータに SAF を使ってアクセスする様子を表しています。
+</p>
+<p><img src="{@docRoot}images/providers/storage_dataflow.png" alt="app" /></p>
+
+<p class="img-caption"><strong>図 2.</strong> ストレージ アクセス フレームワーク フロー</p>
+
+<p>注: </p>
+<ul>
+
+<li>SAF では、プロバイダとクライアントは直接やり取りできません。
+クライアントが、ファイルを操作(ファイルの読み取り、編集、作成、削除)するためのパーミッションを要求します。
+</li>
+
+<li>アプリケーション(この例では写真アプリ)がインテント {@link android.content.Intent#ACTION_OPEN_DOCUMENT} または {@link android.content.Intent#ACTION_CREATE_DOCUMENT} を起動すると、やり取りが始まります。
+インテントには、基準を詳細に調整するためのフィルタが含まれる場合があります。&mdash;たとえば、「画像」の MIME タイプを持つ、開くことができるすべてのファイルを取得する、のように設定できます。
+
+</li>
+
+<li>インテントが起動すると、システム ピッカーが登録済みの各プロバイダに移動し、一致するコンテンツのルートをユーザーに表示します。
+</li>
+
+<li>基礎となるドキュメント プロバイダの種類に関係なく、ドキュメントにアクセスするための標準的なインターフェースがピッカーから提供されます。
+図 2 には、Google Drive プロバイダ、USB プロバイダ、クラウド プロバイダの例を示しています。
+</li>
+</ul>
+
+<p>図 3 は、Google Drive アカウントを選択したユーザーが画像を検索するピッカーを表しています。
+</p>
+
+<p><img src="{@docRoot}images/providers/storage_picker.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
+
+<p class="img-caption"><strong>図 3.</strong> ピッカー</p>
+
+<p>ユーザーが Google Drive を選択すると、図 4 のように画像が表示されます。
+この時点から、ユーザーはプロバイダとクライアント アプリがサポートするすべての操作方法を使って、画像を操作できるようになります。
+
+
+<p><img src="{@docRoot}images/providers/storage_photos.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
+
+<p class="img-caption"><strong>図 4.</strong>画像</p>
+
+<h2 id="client">クライアント アプリを作成する</h2>
+
+<p>Android 4.3 以前では、別のアプリからファイルを取得する場合、{@link android.content.Intent#ACTION_PICK} や {@link android.content.Intent#ACTION_GET_CONTENT} といったインテントを呼び出す必要があります。
+
+その後ユーザーは、ファイルを選択するためのアプリを 1 つ選びます。選択されたアプリはユーザーが使用可能なファイルを参照して選択するためのユーザー インターフェースを提供する必要があります。
+
+ </p>
+
+<p>Android 4.4 以降であれば、{@link android.content.Intent#ACTION_OPEN_DOCUMENT} インテントを使用するという選択肢もあります。このインテントではシステム制御のピッカー UI が表示され、ユーザーはそこから他のアプリで利用可能なすべてのファイル参照できます。
+
+
+ユーザーは、この 1 つの UI から、サポートされるすべてのアプリのファイルを選択できます。
+</p>
+
+<p>{@link android.content.Intent#ACTION_OPEN_DOCUMENT} は、{@link android.content.Intent#ACTION_GET_CONTENT} との置き換えを意図したものではありません。どちらを使用するかは、アプリのニーズによって異なります。
+
+</p>
+
+<ul>
+<li>アプリでデータの読み取りとインポートのみを行う場合は、{@link android.content.Intent#ACTION_GET_CONTENT} を使用します。
+この方法を使用すると、アプリは、画像ファイルなどのデータのコピーをインポートします。
+</li>
+
+<li>アプリからドキュメント プロバイダが所有するドキュメントへの、長期間の固定アクセスを可能にするには、{@link android.content.Intent#ACTION_OPEN_DOCUMENT} を使用します。
+
+ドキュメント プロバイダに格納されている画像をユーザーが編集するための、写真編集アプリなどの例が挙げられます。
+ </li>
+
+</ul>
+
+
+<p>ここでは、{@link android.content.Intent#ACTION_OPEN_DOCUMENT} と {@link android.content.Intent#ACTION_CREATE_DOCUMENT} インテントに基づいたクライアント アプリの作成方法について説明します。
+
+</p>
+
+
+<h3 id="search">ドキュメントを検索する</h3>
+
+<p>
+次のスニペットでは {@link android.content.Intent#ACTION_OPEN_DOCUMENT} を使って、画像ファイルがあるドキュメント プロバイダを検索します。
+
+</p>
+
+<pre>private static final int READ_REQUEST_CODE = 42;
+...
+/**
+ * Fires an intent to spin up the &quot;file chooser&quot; UI and select an image.
+ */
+public void performFileSearch() {
+
+    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's file
+    // browser.
+    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as a
+    // file (as opposed to a list of contacts or timezones)
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Filter to show only images, using the image MIME data type.
+    // If one wanted to search for ogg vorbis files, the type would be &quot;audio/ogg&quot;.
+    // To search for all documents available via installed storage providers,
+    // it would be &quot;*/*&quot;.
+    intent.setType(&quot;image/*&quot;);
+
+    startActivityForResult(intent, READ_REQUEST_CODE);
+}</pre>
+
+<p>注: </p>
+<ul>
+<li>アプリが {@link android.content.Intent#ACTION_OPEN_DOCUMENT} インテントを開始すると、ピッカーが起動し、条件に一致するすべてのドキュメント プロバイダが表示されます。
+</li>
+
+<li>カテゴリ {@link android.content.Intent#CATEGORY_OPENABLE} をインテントに追加すると、結果がフィルタリングされ、画像ファイルなどの開くことができるドキュメントのみが表示されます。
+</li>
+
+<li>{@code intent.setType("image/*")} 文は結果をさらにフィルタリングし、画像 MIME データタイプを持つドキュメントのみを表示します。
+</li>
+</ul>
+
+<h3 id="results">プロセスの結果</h3>
+
+<p>ユーザーがピッカーでドキュメントを選択すると、{@link android.app.Activity#onActivityResult onActivityResult()} が呼び出されます。選択したドキュメントを指す URI は {@code resultData} パラメータに含まれます。
+
+
+{@link android.content.Intent#getData getData()} を使って URI を抽出します。URI を抽出したら、その URI を使ってユーザーが希望するドキュメントを取得できます。
+次に例を示します。
+</p>
+
+<pre>&#64;Override
+public void onActivityResult(int requestCode, int resultCode,
+        Intent resultData) {
+
+    // The ACTION_OPEN_DOCUMENT intent was sent with the request code
+    // READ_REQUEST_CODE. If the request code seen here doesn't match, it's the
+    // response to some other intent, and the code below shouldn't run at all.
+
+    if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
+        // The document selected by the user won't be returned in the intent.
+        // Instead, a URI to that document will be contained in the return intent
+        // provided to this method as a parameter.
+        // Pull that URI using resultData.getData().
+        Uri uri = null;
+        if (resultData != null) {
+            uri = resultData.getData();
+            Log.i(TAG, "Uri: " + uri.toString());
+            showImage(uri);
+        }
+    }
+}
+</pre>
+
+<h3 id="metadata">ドキュメント メタデータを確認する</h3>
+
+<p>ドキュメントのURI を取得したら、そのメタデータにアクセスできます。次のスニペットは、URI で指定したドキュメントのメタデータを取得して、ログに記録します。
+</p>
+
+<pre>public void dumpImageMetaData(Uri uri) {
+
+    // The query, since it only applies to a single document, will only return
+    // one row. There's no need to filter, sort, or select fields, since we want
+    // all fields for one document.
+    Cursor cursor = getActivity().getContentResolver()
+            .query(uri, null, null, null, null, null);
+
+    try {
+    // moveToFirst() returns false if the cursor has 0 rows.  Very handy for
+    // &quot;if there's anything to look at, look at it&quot; conditionals.
+        if (cursor != null &amp;&amp; cursor.moveToFirst()) {
+
+            // Note it's called &quot;Display Name&quot;.  This is
+            // provider-specific, and might not necessarily be the file name.
+            String displayName = cursor.getString(
+                    cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
+            Log.i(TAG, &quot;Display Name: &quot; + displayName);
+
+            int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE);
+            // If the size is unknown, the value stored is null.  But since an
+            // int can't be null in Java, the behavior is implementation-specific,
+            // which is just a fancy term for &quot;unpredictable&quot;.  So as
+            // a rule, check if it's null before assigning to an int.  This will
+            // happen often:  The storage API allows for remote files, whose
+            // size might not be locally known.
+            String size = null;
+            if (!cursor.isNull(sizeIndex)) {
+                // Technically the column stores an int, but cursor.getString()
+                // will do the conversion automatically.
+                size = cursor.getString(sizeIndex);
+            } else {
+                size = &quot;Unknown&quot;;
+            }
+            Log.i(TAG, &quot;Size: &quot; + size);
+        }
+    } finally {
+        cursor.close();
+    }
+}
+</pre>
+
+<h3 id="open-client">ドキュメントを開く</h3>
+
+<p>ドキュメントのURI を取得したら、そのドキュメントを開いてさまざまな操作を行うことができます。
+</p>
+
+<h4>ビットマップ</h4>
+
+<p>{@link android.graphics.Bitmap} を開く方法の例を次に示します。</p>
+
+<pre>private Bitmap getBitmapFromUri(Uri uri) throws IOException {
+    ParcelFileDescriptor parcelFileDescriptor =
+            getContentResolver().openFileDescriptor(uri, "r");
+    FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
+    Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
+    parcelFileDescriptor.close();
+    return image;
+}
+</pre>
+
+<p>この操作を UI スレッドで実行しないでください。{@link android.os.AsyncTask} を使ってバックグラウンドで実行します。
+ビットマップを開いたら、{@link android.widget.ImageView} で表示できます。
+
+</p>
+
+<h4>InputStream を取得する</h4>
+
+<p>URI から {@link java.io.InputStream} を取得する方法の例を次に示します。このスニペットでは、ファイルの行が文字列に読み込まれます。
+</p>
+
+<pre>private String readTextFromUri(Uri uri) throws IOException {
+    InputStream inputStream = getContentResolver().openInputStream(uri);
+    BufferedReader reader = new BufferedReader(new InputStreamReader(
+            inputStream));
+    StringBuilder stringBuilder = new StringBuilder();
+    String line;
+    while ((line = reader.readLine()) != null) {
+        stringBuilder.append(line);
+    }
+    fileInputStream.close();
+    parcelFileDescriptor.close();
+    return stringBuilder.toString();
+}
+</pre>
+
+<h3 id="create">新しいドキュメントを作成する</h3>
+
+<p>{@link android.content.Intent#ACTION_CREATE_DOCUMENT} インテントを使用すると、アプリでドキュメント プロバイダに新しいドキュメントを作成できます。
+
+ファイルを作成するには、インテントに MIME タイプとファイル名を渡し、一意の要求コードを使ってインテントを起動します。
+後は自分で設定します。</p>
+
+
+<pre>
+// Here are some examples of how you might call this method.
+// The first parameter is the MIME type, and the second parameter is the name
+// of the file you are creating:
+//
+// createFile("text/plain", "foobar.txt");
+// createFile("image/png", "mypicture.png");
+
+// Unique request code.
+private static final int WRITE_REQUEST_CODE = 43;
+...
+private void createFile(String mimeType, String fileName) {
+    Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as
+    // a file (as opposed to a list of contacts or timezones).
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Create a file with the requested MIME type.
+    intent.setType(mimeType);
+    intent.putExtra(Intent.EXTRA_TITLE, fileName);
+    startActivityForResult(intent, WRITE_REQUEST_CODE);
+}
+</pre>
+
+<p>新しいドキュメントを作成したら、{@link android.app.Activity#onActivityResult onActivityResult()} で URI を取得して、ドキュメントに書き込み操作を実行できます。
+
+</p>
+
+<h3 id="delete">ドキュメントを削除する</h3>
+
+<p>ドキュメントの URI と、{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE SUPPORTS_DELETE} を含むドキュメントの {@link android.provider.DocumentsContract.Document#COLUMN_FLAGS Document.COLUMN_FLAGS} を取得すると、ドキュメントを削除できます。
+
+
+
+次に例を示します。</p>
+
+<pre>
+DocumentsContract.deleteDocument(getContentResolver(), uri);
+</pre>
+
+<h3 id="edit">ドキュメントを編集する</h3>
+
+<p>SAF を使用するとテキスト ドキュメントを直接編集できます。このスニペットは {@link android.content.Intent#ACTION_OPEN_DOCUMENT} インテントを起動し、カテゴリ {@link android.content.Intent#CATEGORY_OPENABLE} を使って、開くことができるドキュメントのみを表示します。
+
+
+
+次のように、テキスト ファイルのみを表示するようにフィルタリングします。</p>
+
+<pre>
+private static final int EDIT_REQUEST_CODE = 44;
+/**
+ * Open a file for writing and append some text to it.
+ */
+ private void editDocument() {
+    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's
+    // file browser.
+    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as a
+    // file (as opposed to a list of contacts or timezones).
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Filter to show only text files.
+    intent.setType(&quot;text/plain&quot;);
+
+    startActivityForResult(intent, EDIT_REQUEST_CODE);
+}
+</pre>
+
+<p>次に、{@link android.app.Activity#onActivityResult onActivityResult()}(「<a href="#results">プロセスの結果</a>」をご覧ください)からコードを呼び出して、編集を行います。次のスニペットは {@link android.content.ContentResolver} から {@link java.io.FileOutputStream} を取得します。
+
+
+デフォルトでは、「書き込み」モードを使用します。必要最小限のアクセスのみを要求することをお勧めします。書き込みのみが必要な場合に読み込みと書き込みを要求しないでください。
+
+</p>
+
+<pre>private void alterDocument(Uri uri) {
+    try {
+        ParcelFileDescriptor pfd = getActivity().getContentResolver().
+                openFileDescriptor(uri, "w");
+        FileOutputStream fileOutputStream =
+                new FileOutputStream(pfd.getFileDescriptor());
+        fileOutputStream.write(("Overwritten by MyCloud at " +
+                System.currentTimeMillis() + "\n").getBytes());
+        // Let the document provider know you're done by closing the stream.
+        fileOutputStream.close();
+        pfd.close();
+    } catch (FileNotFoundException e) {
+        e.printStackTrace();
+    } catch (IOException e) {
+        e.printStackTrace();
+    }
+}</pre>
+
+<h3 id="permissions">パーミッションを固定する</h3>
+
+<p>アプリで読み込みや書き込み用にファイルを開くと、システムからアプリに対して、該当するファイルの URI パーミッションが付与されます。
+このパーミッションはユーザーが端末を再起動するまで有効です。ただし、画像アプリでユーザーが最近編集した 5 つの画像にアプリから直接アクセスできるようにするにはどうすればいいでしょう。ユーザーの端末が再起動されたら、ファイルを検索するためにユーザーをシステム ピッカーに戻す必要がありますが、これは明らかにいい方法とは言えません。
+
+
+
+</p>
+
+<p>このような状況を避けるために、システムがアプリに付与するパーミッションを固定します。実際は、システムが提供する固定可能な URI パーミッションをアプリで「取得」します。
+
+これにより、端末を再起動した場合でも、ユーザーはアプリからファイルに継続的にアクセスできます。
+</p>
+
+
+<pre>final int takeFlags = intent.getFlags()
+            &amp; (Intent.FLAG_GRANT_READ_URI_PERMISSION
+            | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+// Check for the freshest data.
+getContentResolver().takePersistableUriPermission(uri, takeFlags);</pre>
+
+<p>最後にもう 1 つ手順があります。アプリが最近アクセスした URI は、保存されていても既に無効になっている場合があります。&mdash;別のアプリによってドキュメントが削除されたり、修正されたりすることが考えられます。
+
+そこで、最新のデータを確認するには、常に {@code getContentResolver().takePersistableUriPermission()} を呼び出す必要があります。
+
+</p>
+
+<h2 id="custom">カスタム ドキュメント プロバイダを作成する</h2>
+
+<p>
+ファイル用のストレージ サービスを提供するアプリ(クラウド保存サービスなど)を開発する場合、カスタム ドキュメント プロバイダを作成すれば、SAF を介してファイルを利用可能にできます。
+
+ここではその方法について説明します。
+</p>
+
+
+<h3 id="manifest">マニフェスト</h3>
+
+<p>カスタム ドキュメント プロバイダを実装するには、アプリケーションのマニフェストに次のものを追加します。
+</p>
+<ul>
+
+<li>API レベル 19 以降のターゲット。</li>
+
+<li>カスタム ストレージ プロバイダを宣言する <code>&lt;provider&gt;</code> 要素。
+ </li>
+
+<li>クラス名となる、プロバイダの名前。パッケージ名を含みます。例: <code>com.example.android.storageprovider.MyCloudProvider</code>。
+</li>
+
+<li>認証局の名前。これはパッケージ名(この例では <code>com.example.android.storageprovider</code>)とコンテンツ プロバイダのタイプを合わせたもの(<code>documents</code>)。
+
+たとえば、{@code com.example.android.storageprovider.documents} のようになります。</li>
+
+<li><code>&quot;true&quot;</code> に設定された属性 <code>android:exported</code>。他のアプリで認識できるようにプロバイダをエクスポートする必要があります。
+</li>
+
+<li><code>&quot;true&quot;</code> に設定された属性 <code>android:grantUriPermissions</code>。
+この設定により、プロバイダのコンテンツにアクセスできるように、システムが他のアプリにアクセス権を付与します。
+特定のドキュメントへのアクセス権を固定する方法については、「<a href="#permissions">パーミッションを固定する</a>」をご覧ください。
+</li>
+
+<li>{@code MANAGE_DOCUMENTS} パーミッション。デフォルトでは、プロバイダはすべてのユーザーが利用可能です。
+このパーミッションを追加することで、プロバイダをシステムに制限できます。セキュリティ上この制限は重要です。
+</li>
+
+<li>リソース ファイルで定義したブール値に設定された {@code android:enabled} 属性。
+この属性は、Android 4.3 以前を実行する端末でプロバイダを無効にすることを目的としています。たとえば、{@code android:enabled="@bool/atLeastKitKat"} のようになります。
+マニフェストのこの属性に加え、次の操作を実行する必要があります。
+
+<ul>
+<li>{@code res/values/} にある {@code bool.xml} リソース ファイルに、次の行を追加します。
+ <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;false&lt;/bool&gt;</pre></li>
+
+<li>{@code res/values-v19/} にある {@code bool.xml} リソース ファイルに、次の行を追加します。
+ <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;true&lt;/bool&gt;</pre></li>
+</ul></li>
+
+<li>{@code android.content.action.DOCUMENTS_PROVIDER} アクションを含むインテント フィルタ。システムがプロバイダを検索したときに、プロバイダがピッカーに表示されます。
+
+</li>
+
+</ul>
+<p>プロバイダを含むサンプル マニフェストの抜粋を次に示します。</p>
+
+<pre>&lt;manifest... &gt;
+    ...
+    &lt;uses-sdk
+        android:minSdkVersion=&quot;19&quot;
+        android:targetSdkVersion=&quot;19&quot; /&gt;
+        ....
+        &lt;provider
+            android:name=&quot;com.example.android.storageprovider.MyCloudProvider&quot;
+            android:authorities=&quot;com.example.android.storageprovider.documents&quot;
+            android:grantUriPermissions=&quot;true&quot;
+            android:exported=&quot;true&quot;
+            android:permission=&quot;android.permission.MANAGE_DOCUMENTS&quot;
+            android:enabled=&quot;&#64;bool/atLeastKitKat&quot;&gt;
+            &lt;intent-filter&gt;
+                &lt;action android:name=&quot;android.content.action.DOCUMENTS_PROVIDER&quot; /&gt;
+            &lt;/intent-filter&gt;
+        &lt;/provider&gt;
+    &lt;/application&gt;
+
+&lt;/manifest&gt;</pre>
+
+<h4 id="43">Android 4.3 以前を実行する端末をサポートする</h4>
+
+<p>{@link android.content.Intent#ACTION_OPEN_DOCUMENT} インテントは、Android 4.4 以降を実行する端末でのみ利用可能です。Android 4.3 以前を実行する端末に対応するためにアプリケーションで {@link android.content.Intent#ACTION_GET_CONTENT} をサポートするには、Android 4.4 以降を実行する端末のマニフェストで {@link android.content.Intent#ACTION_GET_CONTENT} インテント フィルタを無効にする必要があります。
+
+
+
+
+
+ドキュメント プロバイダと {@link android.content.Intent#ACTION_GET_CONTENT} は互いに排他的な関係にあると考える必要があります。
+
+両方を同時にサポートする場合、アプリはシステム ピッカー UI に 2 度表示され、格納されたデータへの 2 つの異なる方法を提供します。
+
+これではユーザーも操作に迷ってしまいます。</p>
+
+<p>ここでは、Android バージョン 4.4 以降を実行する端末で {@link android.content.Intent#ACTION_GET_CONTENT} インテント フィルタを無効にする際に推奨される方法を紹介します。
+
+</p>
+
+<ol>
+<li>{@code res/values/} にある {@code bool.xml} リソース ファイルに、次の行を追加します。
+ <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;true&lt;/bool&gt;</pre></li>
+
+<li>{@code res/values-v19/} にある {@code bool.xml} リソース ファイルに、次の行を追加します。
+ <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;false&lt;/bool&gt;</pre></li>
+
+<li>4.4 (API レベル 19)以降のバージョンに対して {@link android.content.Intent#ACTION_GET_CONTENT} インテント フィルタを無効にするには、<a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">アクティビティ エイリアス</a>を追加します。
+
+
+次に例を示します。
+
+<pre>
+&lt;!-- This activity alias is added so that GET_CONTENT intent-filter
+     can be disabled for builds on API level 19 and higher. --&gt;
+&lt;activity-alias android:name=&quot;com.android.example.app.MyPicker&quot;
+        android:targetActivity=&quot;com.android.example.app.MyActivity&quot;
+        ...
+        android:enabled=&quot;@bool/atMostJellyBeanMR2&quot;&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name=&quot;android.intent.action.GET_CONTENT&quot; /&gt;
+        &lt;category android:name=&quot;android.intent.category.OPENABLE&quot; /&gt;
+        &lt;category android:name=&quot;android.intent.category.DEFAULT&quot; /&gt;
+        &lt;data android:mimeType=&quot;image/*&quot; /&gt;
+        &lt;data android:mimeType=&quot;video/*&quot; /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity-alias&gt;
+</pre>
+</li>
+</ol>
+<h3 id="contract">コントラクト</h3>
+
+<p>通常、カスタム コンテンツ プロバイダを作成するときには、<a href="{@docRoot}guide/topics/providers/content-provider-creating.html#ContractClass">コンテンツ プロバイダ</a>のデベロッパー ガイドに記載があるように、コントラクト クラスを実装するタスクが必要になります。
+
+
+コントラクト クラスは {@code public final} クラスであり、URI、列名、MIME タイプ、プロバイダに関連するその他のメタデータを含みます。
+
+コントラクト クラスは SAF によって提供されるため、独自に作成する必要はありません。
+
+</p>
+
+<ul>
+   <li>{@link android.provider.DocumentsContract.Document}</li>
+   <li>{@link android.provider.DocumentsContract.Root}</li>
+</ul>
+
+<p>たとえば、ドキュメント プロバイダでドキュメントやルートを照会したときには、カーソルに次のような列が返されることがあります。
+</p>
+
+<pre>private static final String[] DEFAULT_ROOT_PROJECTION =
+        new String[]{Root.COLUMN_ROOT_ID, Root.COLUMN_MIME_TYPES,
+        Root.COLUMN_FLAGS, Root.COLUMN_ICON, Root.COLUMN_TITLE,
+        Root.COLUMN_SUMMARY, Root.COLUMN_DOCUMENT_ID,
+        Root.COLUMN_AVAILABLE_BYTES,};
+private static final String[] DEFAULT_DOCUMENT_PROJECTION = new
+        String[]{Document.COLUMN_DOCUMENT_ID, Document.COLUMN_MIME_TYPE,
+        Document.COLUMN_DISPLAY_NAME, Document.COLUMN_LAST_MODIFIED,
+        Document.COLUMN_FLAGS, Document.COLUMN_SIZE,};
+</pre>
+
+<h3 id="subclass">サブクラス DocumentsProvider</h3>
+
+<p>カスタム ドキュメント プロバイダの作成の次の手順では、抽象クラス {@link android.provider.DocumentsProvider} をサブクラス化します。
+少なくとも、次のメソッドを実装する必要があります。
+</p>
+
+<ul>
+<li>{@link android.provider.DocumentsProvider#queryRoots queryRoots()}</li>
+
+<li>{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}</li>
+
+<li>{@link android.provider.DocumentsProvider#queryDocument queryDocument()}</li>
+
+<li>{@link android.provider.DocumentsProvider#openDocument openDocument()}</li>
+</ul>
+
+<p>これらは実装する必要があるメソッドですが、これ以外にも多くのメソッドを実装できます。
+詳細については、{@link android.provider.DocumentsProvider} をご覧ください。
+</p>
+
+<h4 id="queryRoots">queryRoots を実装する</h4>
+
+<p>{@link android.provider.DocumentsProvider#queryRoots
+queryRoots()} を実装すると、{@link android.provider.DocumentsContract.Root} で定義される列を使って、ドキュメント プロバイダのすべてのルート ディレクトリを指す {@link android.database.Cursor} が返されます。
+
+</p>
+
+<p>次のスニペットの {@code projection} パラメータは、呼び出し側が取得する特定のフィールドを表します。
+スニペットは新しいカーソルを作成し、それに行を 1 つ追加します。&mdash;[ダウンロード] や [画像] と同じように、1 つのルートに対して最上位のディレクトリが 1 つになります。
+
+ほとんどのプロバイダでルートは 1 つになります。複数のユーザー アカウントを使用するような場合は、1 つ以上のルートを設定できます。
+その場合、カーソルに 2 つ目の行を追加します。
+</p>
+
+<pre>
+&#64;Override
+public Cursor queryRoots(String[] projection) throws FileNotFoundException {
+
+    // Create a cursor with either the requested fields, or the default
+    // projection if "projection" is null.
+    final MatrixCursor result =
+            new MatrixCursor(resolveRootProjection(projection));
+
+    // If user is not logged in, return an empty root cursor.  This removes our
+    // provider from the list entirely.
+    if (!isUserLoggedIn()) {
+        return result;
+    }
+
+    // It's possible to have multiple roots (e.g. for multiple accounts in the
+    // same app) -- just add multiple cursor rows.
+    // Construct one row for a root called &quot;MyCloud&quot;.
+    final MatrixCursor.RowBuilder row = result.newRow();
+    row.add(Root.COLUMN_ROOT_ID, ROOT);
+    row.add(Root.COLUMN_SUMMARY, getContext().getString(R.string.root_summary));
+
+    // FLAG_SUPPORTS_CREATE means at least one directory under the root supports
+    // creating documents. FLAG_SUPPORTS_RECENTS means your application's most
+    // recently used documents will show up in the &quot;Recents&quot; category.
+    // FLAG_SUPPORTS_SEARCH allows users to search all documents the application
+    // shares.
+    row.add(Root.COLUMN_FLAGS, Root.FLAG_SUPPORTS_CREATE |
+            Root.FLAG_SUPPORTS_RECENTS |
+            Root.FLAG_SUPPORTS_SEARCH);
+
+    // COLUMN_TITLE is the root title (e.g. Gallery, Drive).
+    row.add(Root.COLUMN_TITLE, getContext().getString(R.string.title));
+
+    // This document id cannot change once it's shared.
+    row.add(Root.COLUMN_DOCUMENT_ID, getDocIdForFile(mBaseDir));
+
+    // The child MIME types are used to filter the roots and only present to the
+    //  user roots that contain the desired type somewhere in their file hierarchy.
+    row.add(Root.COLUMN_MIME_TYPES, getChildMimeTypes(mBaseDir));
+    row.add(Root.COLUMN_AVAILABLE_BYTES, mBaseDir.getFreeSpace());
+    row.add(Root.COLUMN_ICON, R.drawable.ic_launcher);
+
+    return result;
+}</pre>
+
+<h4 id="queryChildDocuments">queryChildDocuments を実装する</h4>
+
+<p>{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()} を実装すると、{@link android.provider.DocumentsContract.Document} で定義される列を使って、指定したディレクトリ内のすべてのファイルを指す {@link android.database.Cursor} が返されます。
+
+
+
+</p>
+
+<p>ピッカー UI でアプリケーション ルートを選択すると、このメソッドが呼び出されます。ルートの下のディレクトリの子ドキュメントを取得します。
+ルートだけでなく、ファイル階層内の任意のレベルで呼び出せます。
+このスニペットでは、要求した列を持つ新しいカーソルが作成され、親ディレクトリのすぐ下のそれぞれの子の情報がカーソルに追加されます。子は、画像、別のディレクトリなど&mdash;任意のファイルとなります。
+
+
+</p>
+
+<pre>&#64;Override
+public Cursor queryChildDocuments(String parentDocumentId, String[] projection,
+                              String sortOrder) throws FileNotFoundException {
+
+    final MatrixCursor result = new
+            MatrixCursor(resolveDocumentProjection(projection));
+    final File parent = getFileForDocId(parentDocumentId);
+    for (File file : parent.listFiles()) {
+        // Adds the file's display name, MIME type, size, and so on.
+        includeFile(result, null, file);
+    }
+    return result;
+}
+</pre>
+
+<h4 id="queryDocument">queryDocument を実装する</h4>
+
+<p>{@link android.provider.DocumentsProvider#queryDocument queryDocument()} を実装すると、{@link android.provider.DocumentsContract.Document} で定義される列を使って、指定したファイルを指す {@link android.database.Cursor} が返されます。
+
+
+
+</p>
+
+<p>{@link android.provider.DocumentsProvider#queryDocument queryDocument()} メソッドでは、特定のファイルの情報ではなく、{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()} に渡したのと同じ情報が返されます。
+
+
+</p>
+
+
+<pre>&#64;Override
+public Cursor queryDocument(String documentId, String[] projection) throws
+        FileNotFoundException {
+
+    // Create a cursor with the requested projection, or the default projection.
+    final MatrixCursor result = new
+            MatrixCursor(resolveDocumentProjection(projection));
+    includeFile(result, documentId, null);
+    return result;
+}
+</pre>
+
+<h4 id="openDocument">openDocument を実装する</h4>
+
+<p>指定したファイルを表す {@link android.os.ParcelFileDescriptor} を返すには、{@link android.provider.DocumentsProvider#openDocument
+openDocument()} を実装する必要があります。
+他のアプリは、返された {@link android.os.ParcelFileDescriptor} を使ってデータをストリーミングします。
+ユーザーがファイルを選択するとシステムがこのメソッドを呼び出し、クライアント アプリは {@link android.content.ContentResolver#openFileDescriptor openFileDescriptor()} を呼び出してファイルへのアクセスを要求します。次に例を示します。
+
+
+</p>
+
+<pre>&#64;Override
+public ParcelFileDescriptor openDocument(final String documentId,
+                                         final String mode,
+                                         CancellationSignal signal) throws
+        FileNotFoundException {
+    Log.v(TAG, &quot;openDocument, mode: &quot; + mode);
+    // It's OK to do network operations in this method to download the document,
+    // as long as you periodically check the CancellationSignal. If you have an
+    // extremely large file to transfer from the network, a better solution may
+    // be pipes or sockets (see ParcelFileDescriptor for helper methods).
+
+    final File file = getFileForDocId(documentId);
+
+    final boolean isWrite = (mode.indexOf('w') != -1);
+    if(isWrite) {
+        // Attach a close listener if the document is opened in write mode.
+        try {
+            Handler handler = new Handler(getContext().getMainLooper());
+            return ParcelFileDescriptor.open(file, accessMode, handler,
+                        new ParcelFileDescriptor.OnCloseListener() {
+                &#64;Override
+                public void onClose(IOException e) {
+
+                    // Update the file with the cloud server. The client is done
+                    // writing.
+                    Log.i(TAG, &quot;A file with id &quot; +
+                    documentId + &quot; has been closed!
+                    Time to &quot; +
+                    &quot;update the server.&quot;);
+                }
+
+            });
+        } catch (IOException e) {
+            throw new FileNotFoundException(&quot;Failed to open document with id &quot;
+            + documentId + &quot; and mode &quot; + mode);
+        }
+    } else {
+        return ParcelFileDescriptor.open(file, accessMode);
+    }
+}
+</pre>
+
+<h3 id="security">セキュリティ</h3>
+
+<p>たとえば、ドキュメント プロバイダがパスワードで保護されたクラウド ストレージ サービスであり、ファイル共有を開始する前にユーザーがログインしているかどうかを確認するとします。ユーザーがログインしていない場合、アプリはどのような動作を行う必要があるでしょうか。
+
+このような場合、{@link android.provider.DocumentsProvider#queryRoots
+queryRoots()} の実装のゼロルートを返すようにします。
+つまり、空のルートカーソルになります。</p>
+
+<pre>
+public Cursor queryRoots(String[] projection) throws FileNotFoundException {
+...
+    // If user is not logged in, return an empty root cursor.  This removes our
+    // provider from the list entirely.
+    if (!isUserLoggedIn()) {
+        return result;
+}
+</pre>
+
+<p>その他に {@code getContentResolver().notifyChange()} を呼び出す手順もあります。{@link android.provider.DocumentsContract} については既に説明してあります。
+これを使ってこの URI を作成します。次のスニペットは、ユーザーのログイン ステータスが変わった場合に、ドキュメント プロバイダのルートを照会するようシステムに指示します。
+
+ユーザーがログインしてない場合は、上述のように、{@link android.provider.DocumentsProvider#queryRoots queryRoots()} を呼び出すと空のカーソルが返されます。
+
+こうすることで、ユーザーがプロバイダにログインしている場合にのみ、プロバイダのドキュメントを利用できます。
+</p>
+
+<pre>private void onLoginButtonClick() {
+    loginOrLogout();
+    getContentResolver().notifyChange(DocumentsContract
+            .buildRootsUri(AUTHORITY), null);
+}
+</pre>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/guide/topics/resources/accessing-resources.jd b/docs/html-intl/intl/ja/guide/topics/resources/accessing-resources.jd
new file mode 100644
index 0000000..af8d005
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/resources/accessing-resources.jd
@@ -0,0 +1,337 @@
+page.title=リソースへのアクセス
+parent.title=アプリケーション リソース
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>クイックビュー</h2>
+  <ul>
+    <li>リソースは、{@code R.java} の整数を使うコード({@code R.drawable.myimage} など)を使用して参照できます。
+</li>
+    <li>リソースは、特殊な XML 構文({@code
+&#64;drawable/myimage} など)を使用して参照できます。</li>
+    <li>さらに、{@link android.content.res.Resources} のメソッドを使用すると、アプリ リソースにアクセスできます。
+</li>
+  </ul>
+
+  <h2>キークラス</h2>
+  <ol>
+    <li>{@link android.content.res.Resources}</li>
+  </ol>
+
+  <h2>本書の内容</h2>
+  <ol>
+    <li><a href="#ResourcesFromCode">コードからリソースにアクセスする</a></li>
+    <li><a href="#ResourcesFromXml">XML からリソースにアクセスする</a>
+      <ol>
+        <li><a href="#ReferencesToThemeAttributes">スタイル属性を参照する</a></li>
+      </ol>
+    </li>
+    <li><a href="#PlatformResources">プラットフォーム リソースにアクセスする</a></li>
+  </ol>
+
+  <h2>関連ドキュメント</h2>
+  <ol>
+    <li><a href="providing-resources.html">リソースの提供</a></li>
+    <li><a href="available-resources.html">Resource Types</a></li>
+  </ol>
+</div>
+</div>
+
+
+
+
+<p>アプリケーションでリソースを提供すると(詳細は「<a href="providing-resources.html">リソースの提供</a>」)、リソース ID を参照することで適用できるようになります。リソース ID はすべてプロジェクトの {@code R} クラスで定義します。これは {@code aapt} ツールが自動的に生成します。
+
+</p>
+
+<p>アプリケーションをコンパイルすると、{@code aapt} が {@code R} クラスを生成します。このクラスには、{@code
+res/} ディレクトリに含まれるの全リソースのリソース ID が入ります。
+リソースのそれぞれのタイプに対して、{@code R} サブクラス(例: ドローアブル リソースの場合はすべて {@code R.drawable})があり、そのタイプのそれぞれのリソースには、静的整数(例: {@code R.drawable.icon})があります。
+
+この整数がリソース ID であり、リソースを取得するのに使用できます。
+</p>
+
+<p>{@code R} クラスではリソース ID を指定されていますが、リソース ID を探す必要はありません。リソース ID は常に次のように構成されます。
+</p>
+<ul>
+  <li><em>リソースタイプ</em>: それぞれのリソースは、{@code
+string}、{@code drawable}、{@code layout} のようなタイプにグループ化されます。さまざまなタイプに関する詳細は、「<a href="available-resources.html">Resource Types</a>」をご覧ください。
+  </li>
+  <li><em>リソース名</em>。これは、拡張子を除外したファイル名か、XML {@code android:name} 属性(リソースが文字列などの単純な値の場合)のいずれかになります。
+
+</li>
+</ul>
+
+<p>リソースにアクセスするには次の 2 つの方法があります。</p>
+<ul>
+  <li><strong>コード内:</strong> {@code R} クラスのサブクラスから次のような静的整数を使用します。
+
+    <pre class="classic no-pretty-print">R.string.hello</pre>
+    <p>{@code string} はリソースタイプ、{@code hello} はリソース名です。多くの Android API が、リソース ID をこの形式で指定してリソースにアクセスします。
+<a href="#ResourcesFromCode">コードでリソースにアクセスする</a>をご覧ください。
+</p>
+  </li>
+  <li><strong>XML 内:</strong> {@code R} クラスで定義するリソース ID に対応する、次のような特殊な XML 構文を使用します。
+
+    <pre class="classic no-pretty-print">&#64;string/hello</pre>
+    <p>{@code string} はリソースタイプ、{@code hello} はリソース名です。この構文は、リソースで提供する値が想定される、XML リソース内の任意の場所に使用できます。
+<a href="#ResourcesFromXml">XML からリソースにアクセスする</a>をご覧ください。</p>
+  </li>
+</ul>
+
+
+
+<h2 id="ResourcesFromCode">コードでリソースにアクセスする </h2>
+
+<p>リソース ID をメソッド パラメータとして渡すことで、コード内でリソースを使用できます。たとえば、{@link android.widget.ImageView#setImageResource(int) setImageResource()} を使って、{@link android.widget.ImageView} が {@code res/drawable/myimage.png} を使用するように設定できます。
+
+</p>
+<pre>
+ImageView imageView = (ImageView) findViewById(R.id.myimageview);
+imageView.setImageResource(<strong>R.drawable.myimage</strong>);
+</pre>
+
+<p>さらに、{@link
+android.content.res.Resources} のメソッドを使用して、個々のリソースを取得することもできます。{@link android.content.Context#getResources()} を使用すると、インスタンスを取得できます。
+</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>元のファイルへのアクセス</h2>
+
+<p>一般的な操作ではありませんが、元のファイルやディレクトリへのアクセスが必要になることがあります。その場合、{@code res/} からリソースを読み込むにはリソース ID が必要なため、{@code res/} にファイルを保存しても機能しません。その代わりに、{@code assets/} ディレクトリにリソースを保存します。
+
+
+</p>
+<p>{@code assets/} ディレクトリに保存したファイルにはリソース ID が付与されないため、<em></em>{@code R} クラスや XML リソースからはそれらのファイルを参照できません。
+その代わりに、通常のファイル システムのように {@code assets/} ディレクトリ内のファイルを照会し、{@link android.content.res.AssetManager} を使用して未処理のデータを読み込みます。
+
+</p>
+<p>ただし、単に(ビデオやオーディオなどの)未処理データの読み込みのみが必要となる場合は、ファイルを {@code res/raw/} ディレクトリに保存し、{@link
+android.content.res.Resources#openRawResource(int) openRawResource()} を使用してバイトのストリームを読み込みます。
+</p>
+
+</div>
+</div>
+
+
+<h3>構文</h3>
+
+<p>次の構文を使用して、コード内のリソースを参照します。</p>
+
+<pre class="classic no-pretty-print">
+[<em>&lt;package_name&gt;</em>.]R.<em>&lt;resource_type&gt;</em>.<em>&lt;resource_name&gt;</em>
+</pre>
+
+<ul>
+  <li><em>{@code &lt;package_name&gt;}</em> は、リソースが配置されるパッケージの名前です(独自のパッケージからリソースを参照する場合は必要ありません)。
+</li>
+  <li><em>{@code &lt;resource_type&gt;}</em> は、リソースタイプの {@code R} サブクラスです。</li>
+  <li><em>{@code &lt;resource_name&gt;}</em> は、拡張子以外のリソース ファイル名か、XML 要素の {@code android:name} 属性値(単純な値の場合)のいずれかになります。
+
+</li>
+</ul>
+<p>リソースタイプの詳細やそれらの査証方法については、「<a href="available-resources.html">Resource Types</a>」をご覧ください。
+</p>
+
+
+<h3>使用例</h3>
+
+<p>多くのメソッドでリソース ID パラメータを使うことができ、{@link android.content.res.Resources} のメソッドを使用すればリソースを取得できます。
+{@link
+android.content.res.Resources} のインスタンスは、{@link android.content.Context#getResources
+Context.getResources()} により取得できます。</p>
+
+
+<p>次は、コードのリソースにアクセスする例です。</p>
+
+<pre>
+// Load a background for the current screen from a drawable resource
+{@link android.app.Activity#getWindow()}.{@link
+android.view.Window#setBackgroundDrawableResource(int)
+setBackgroundDrawableResource}(<strong>R.drawable.my_background_image</strong>) ;
+
+// Set the Activity title by getting a string from the Resources object, because
+//  this method requires a CharSequence rather than a resource ID
+{@link android.app.Activity#getWindow()}.{@link android.view.Window#setTitle(CharSequence)
+setTitle}(getResources().{@link android.content.res.Resources#getText(int)
+getText}(<strong>R.string.main_title</strong>));
+
+// Load a custom layout for the current screen
+{@link android.app.Activity#setContentView(int)
+setContentView}(<strong>R.layout.main_screen</strong>);
+
+// Set a slide in animation by getting an Animation from the Resources object
+mFlipper.{@link android.widget.ViewAnimator#setInAnimation(Animation)
+setInAnimation}(AnimationUtils.loadAnimation(this,
+        <strong>R.anim.hyperspace_in</strong>));
+
+// Set the text on a TextView object using a resource ID
+TextView msgTextView = (TextView) findViewById(<strong>R.id.msg</strong>);
+msgTextView.{@link android.widget.TextView#setText(int)
+setText}(<strong>R.string.hello_message</strong>);
+</pre>
+
+
+<p class="caution"><strong>警告:</strong> {@code
+R.java} ファイルを手動で修正しないでください。&mdash;プロジェクトがコンパイルされると、{@code aapt} ツールによって生成されます。
+変更した場合は、次回のコンパイルの際に上書きされます。</p>
+
+
+
+<h2 id="ResourcesFromXml">XML からリソースにアクセスする</h2>
+
+<p>一部の XML 属性や要素の値は、既存のリソースへの参照を使用して定義できます。
+通常は、ウィジェットに文字列や画像を提供するレイアウト ファイルを作成する場合に、この方法を使用します。
+</p>
+
+<p>たとえば、レイアウトに {@link android.widget.Button} を追加する場合は、次のように、ボタンテキストの<a href="string-resource.html">文字列リソース</a>を使用します。
+</p>
+
+<pre>
+&lt;Button
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:text="<strong>@string/submit</strong>" /&gt;
+</pre>
+
+
+<h3>構文</h3>
+
+<p>次の構文を使用して、XML リソース内のリソースを参照します。</p>
+
+<pre class="classic no-pretty-print">
+&#64;[<em>&lt;package_name&gt;</em>:]<em>&lt;resource_type&gt;</em>/<em>&lt;resource_name&gt;</em>
+</pre>
+
+<ul>
+  <li>{@code &lt;package_name&gt;} は、リソースが配置されるパッケージの名前です(同一のパッケージからリソースを参照する場合は必要ありません)
+</li>
+  <li>{@code &lt;resource_type&gt;} は、リソースタイプの {@code R} サブクラスです
+</li>
+  <li>{@code &lt;resource_name&gt;} は、拡張子以外のリソース ファイル名か、XML 要素の {@code android:name} 属性値(単純な値の場合)のいずれかになります。
+
+</li>
+</ul>
+
+<p>リソースタイプの詳細やそれらの査証方法については、「<a href="available-resources.html">Resource Types</a>」をご覧ください。
+</p>
+
+
+<h3>使用例</h3>
+
+<p>場合によっては、XML の値にリソースを使用する必要がありますが(ウィジェットにドローアブル画像を適用するような場合など)、単純な値を受け入れる XML の任意の場所にリソースを使用できます。
+たとえば、<a href="more-resources.html#Color">カラーリソース</a>と<a href="string-resource.html">文字列リソース</a>を持つ、次のようなリソースがあるとします。
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+   &lt;color name="opaque_red">#f00&lt;/color>
+   &lt;string name="hello">Hello!&lt;/string>
+&lt;/resources>
+</pre>
+
+<p>これらのリソースを次のようなレイアウト ファイルに使用して、テキストカラーとテキストの文字列を設定できます。
+</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;fill_parent&quot;
+    android:textColor=&quot;<strong>&#64;color/opaque_red</strong>&quot;
+    android:text=&quot;<strong>&#64;string/hello</strong>&quot; /&gt;
+</pre>
+
+<p>この場合、リソースは独自のパッケージ内のものであることから、リソースの参照でパッケージ名を指定する必要はありません。
+システム リソースを参照するには、パッケージ名を含める必要があります。
+次に例を示します。</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;fill_parent&quot;
+    android:textColor=&quot;<strong>&#64;android:color/secondary_text_dark</strong>&quot;
+    android:text=&quot;&#64;string/hello&quot; /&gt;
+</pre>
+
+<p class="note"><strong>注:</strong> アプリケーションを他の言語にローカライズできるように、常に文字列リソースを使用するようにします。
+代替リソース(ローカライズされた文字列など)の作成方法についての詳細は、<a href="providing-resources.html#AlternativeResources">代替リソースを提供する</a>をご覧ください。
+
+
+アプリケーションを他の言語にローカライズするための詳細なガイドは、「<a href="localization.html">Localization</a>」をご覧ください。
+</p>
+
+<p>XML でリソースを使用すれば、エイリアスを作成することもできます。たとえば、別のドローアブル リソースのエイリアスとなる、次のようなドローアブル リソースを作成できます。
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/other_drawable" />
+</pre>
+
+<p>これは冗長のように思われますが、代替リソースを使用する場合に大変便利です。詳細は、<a href="providing-resources.html#AliasResources">エイリアス リソースを作成する</a>をご覧ください。
+</p>
+
+
+
+<h3 id="ReferencesToThemeAttributes">スタイル属性を参照する</h3>
+
+<p>スタイル属性リソースを使用すると、現在適用されているテーマの属性の値を参照できます。
+スタイル属性を参照すれば、ハードコードした値を指定しなくても、現在のテーマで与えられる標準的なバリエーションに合わせてスタイルを設定して、UI 要素の外観をカスタマイズできます。
+
+本質的に、スタイル属性を参照するというのは、「現在のテーマのこの属性で定義されるスタイルを使用する」という意味になります。
+</p>
+
+<p>属性スタイルを参照する場合、名前構文は通常のリソース形式とほぼ同じですが、アットマーク({@code @})の代わりに疑問符({@code ?})を使用します。リソースタイプの部分は省略可能です。
+
+例: </p>
+
+<pre class="classic">
+?[<em>&lt;package_name&gt;</em>:][<em>&lt;resource_type&gt;</em>/]<em>&lt;resource_name&gt;</em>
+</pre>
+
+<p>たとえば、次の例では、属性を参照して、テキスト カラーをシステム テーマの「プライマリ」テキスト カラーに合わせて設定します。
+</p>
+
+<pre>
+&lt;EditText id=&quot;text&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;wrap_content&quot;
+    android:textColor=&quot;<strong>?android:textColorSecondary</strong>&quot;
+    android:text=&quot;&#64;string/hello_world&quot; /&gt;
+</pre>
+
+<p>ここでは、{@code android:textColor} 属性が、現在のテーマのスタイル属性の名前を指定しています。
+Android は、{@code android:textColorSecondary} スタイル属性に適用された値を、このウィジェットの {@code android:textColor} の値として使用できるようになりました。
+このコンテキストで属性リソースが必要なことはシステム リソース ツールで認識されているため、タイプ(ここでは <code>?android:attr/textColorSecondary</code>)を明示的に指定する必要はありません &mdash; {@code attr} タイプを除外できます。
+
+
+</p>
+
+
+
+
+<h2 id="PlatformResources">プラットフォーム リソースにアクセスする</h2>
+
+<p>Android には、スタイル、テーマ、レイアウトといった多数の標準的なリソースが用意されています。これらのリソースにアクセスするには、<code>android</code> パッケージ名でリソース参照を修飾します。
+
+たとえば、Android には、{@link android.widget.ListAdapter} のリストアイテムに使用できるレイアウト リソースが用意されています。
+</p>
+
+<pre>
+{@link android.app.ListActivity#setListAdapter(ListAdapter)
+setListAdapter}(new {@link
+android.widget.ArrayAdapter}&lt;String&gt;(this, <strong>android.R.layout.simple_list_item_1</strong>, myarray));
+</pre>
+
+<p>この例では、{@link android.R.layout#simple_list_item_1} は、プラットフォームによって {@link android.widget.ListView} のアイテム向けに定義されるレイアウト リソースです。
+リストアイテムに独自のレイアウトを作成する代わりに、このレイアウトを使用できます。
+詳細については、「<a href="{@docRoot}guide/topics/ui/layout/listview.html">List View</a>」のデベロッパー ガイドをご覧ください。
+</p>
+
diff --git a/docs/html-intl/intl/ja/guide/topics/resources/overview.jd b/docs/html-intl/intl/ja/guide/topics/resources/overview.jd
new file mode 100644
index 0000000..28ffa94
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/resources/overview.jd
@@ -0,0 +1,103 @@
+page.title=リソースの概要
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>トピック</h2>
+  <ol>
+    <li><a href="providing-resources.html">リソースの提供</a></li>
+    <li><a href="accessing-resources.html">リソースへのアクセス</a></li>
+    <li><a href="runtime-changes.html">実行時の変更の処理</a></li>
+    <li><a href="localization.html">Localization</a></li>
+  </ol>
+
+  <h2>リファレンス</h2>
+  <ol>
+    <li><a href="available-resources.html">Resource Types</a></li>
+  </ol>
+</div>
+</div>
+
+
+<p>画像や文字列といったリソースは、常にアプリケーション コードの外部に置くようにすることで、独立して保持できるようになります。
+さらに、リソースを外部化することで、言語や画面サイズが異なるような特定の端末構成をサポートする代替リソースを提供できるようになります。異なる構成を持つ Android ベースの端末が増えていることから、この外部化がますます重要になってきています。
+
+
+異なる構成に互換性を持たせるには、リソースをタイプや構成ごとにグループ化するさまざまなサブディレクトリを使用して、プロジェクトの {@code res/} ディレクトリ内にリソースを整理する必要があります。
+
+
+</p>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram1.png" height="167" alt="" />
+<p class="img-caption">
+<strong>図 1.</strong> デフォルト レイアウトを使用する 2 つの異なる端末(アプリによる代替レイアウトの提供なし)。
+</p>
+</div>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
+<p class="img-caption">
+<strong>図 2.</strong> 画面サイズが違うレイアウトを使用する 2 つの異なる端末
+</p>
+</div>
+
+<p>すべてのリソースタイプに対して、アプリケーションの<em>デフォルト</em> レイアウトと複数の<em>代替</em>リソースを指定できます。
+</p>
+<ul>
+  <li>デフォルト リソースは、端末構成に関係なく使われるものであり、現在の構成に一致する代替リソースがない場合に使用されます。
+
+</li>
+  <li>代替リソースは、特定の構成で使うために作成したリソースです。
+リソースのグループを特定の構成に使用するよう指定するには、適切な構成修飾子をディレクトリ名の後ろに追加します。
+</li>
+</ul>
+
+<p>たとえば、デフォルトの UI レイアウトが {@code res/layout/} ディレクトリに保存してある場合、{@code res/layout-land/} ディレクトリにレイアウトを保存しておくことで、横向きの画面を使用する際の別のレイアウトを指定できます。
+
+
+Android は、現在の端末の構成とリソースのディレクトリ名をマッチングさせ、適切なリソースを自動的に適用します。
+</p>
+
+<p>図 1 は、代替リソースがない場合に、システムが 2 つの異なる端末に同じレイアウトを適用する様子を表しています。
+図 2 は、大きい画面の代替レイアウト リソースを追加した場合の、レイアウトの適用の様子を表しています。
+</p>
+
+<p>次のドキュメントには、アプリケーション リソースの整理、代替リソースの指定、アプリケーションでのアクセスなどに関する情報が詳細に記載されています。
+</p>
+
+<dl>
+  <dt><strong><a href="providing-resources.html">リソースの提供</a></strong></dt>
+  <dd>アプリで提供可能なリソースの種類、保存場所、特定の端末構成用の代替リソースの作成方法。
+</dd>
+  <dt><strong><a href="accessing-resources.html">リソースへのアクセス</a></strong></dt>
+  <dd>アプリケーション コードまたは他の XML リソースからの参照による、提供済みリソースの使用方法。
+</dd>
+  <dt><strong><a href="runtime-changes.html">実行時の変更の処理</a></strong></dt>
+  <dd>アクティビティの実行中に生じた構成の変更の管理方法。</dd>
+  <dt><strong><a href="localization.html">Localization</a></strong></dt>
+  <dd>代替リソースを使用したアプリケーションのローカライズのためのボトムアップ ガイド。代替リソースの特定の使用方法を 1 つだけ解説していますが、複数のユーザーが利用する場合には非常に重要になります。
+
+</dd>
+  <dt><strong><a href="available-resources.html">Resource Types</a></strong></dt>
+  <dd>提供可能な各種リソースタイプのリファレンス。XML 要素、属性、構文について説明しています。
+たとえば、このリファレンスには、アプリケーション メニュー、ドローアブル、アニメーションなどの作成方法が記載されています。
+</dd>
+</dl>
+
+<!--
+<h2>Raw Assets</h2>
+
+<p>An alternative to saving files in {@code res/} is to save files in the {@code
+assets/} directory. This should only be necessary if you need direct access to original files and
+directories by name. Files saved in the {@code assets/} directory will not be given a resource
+ID, so you can't reference them through the {@code R} class or from XML resources. Instead, you can
+query data in the {@code assets/} directory like an ordinary file system, search through the
+directory and
+read raw data using {@link android.content.res.AssetManager}. For example, this can be more useful
+when dealing with textures for a game. However, if you only need to read raw data from a file
+(such as a video or audio file), then you should save files into the {@code res/raw/} directory and
+then read a stream of bytes using {@link android.content.res.Resources#openRawResource(int)}. This
+is uncommon, but if you need direct access to original files in {@code assets/}, refer to the {@link
+android.content.res.AssetManager} documentation.</p>
+-->
diff --git a/docs/html-intl/intl/ja/guide/topics/resources/providing-resources.jd b/docs/html-intl/intl/ja/guide/topics/resources/providing-resources.jd
new file mode 100644
index 0000000..6729e8b6
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/resources/providing-resources.jd
@@ -0,0 +1,1094 @@
+page.title=リソースの提供
+parent.title=アプリケーション リソース
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>クイックビュー</h2>
+  <ul>
+    <li>{@code res/} のそれぞれのサブディレクトリにはさまざまなタイプのリソースがある</li>
+    <li>代替リソースは設定固有のリソース ファイルを提供する</li>
+    <li>特定の端末設定に依存しないように、デフォルトのリソースを常に入れておく
+</li>
+  </ul>
+  <h2>本書の内容</h2>
+  <ol>
+    <li><a href="#ResourceTypes">リソースタイプをグループ化する</a></li>
+    <li><a href="#AlternativeResources">代替リソースを提供する</a>
+      <ol>
+        <li><a href="#QualifierRules">修飾子の名前のルール</a></li>
+        <li><a href="#AliasResources">エイリアス リソースを作成する</a></li>
+      </ol>
+    </li>
+    <li><a href="#Compatibility">リソースとの最適な端末の互換性を提供する</a></li>
+    <li><a href="#BestMatch">Android が最適なリソースを見つける仕組み</a></li>
+  </ol>
+
+  <h2>関連ドキュメント</h2>
+  <ol>
+    <li><a href="accessing-resources.html">リソースへのアクセス</a></li>
+    <li><a href="available-resources.html">Resource Types</a></li>
+    <li><a href="{@docRoot}guide/practices/screens_support.html">複数のスクリーンをサポートする</a>
+</li>
+  </ol>
+</div>
+</div>
+
+<p>画像や文字列といったアプリケーション リソースは、常にコードの外部に置くようにすることで、独立して保持できるようになります。
+さらに、特別に名前を設定したリソース ディレクトリにグループ化することで、特定の端末設定に代替リソースを提供する必要があります。
+実行時には、現在の設定に基づいて、Android は適切なリソースを使用します。
+たとえば、画面サイズに応じて異なる UI レイアウトを提供したり、言語設定に応じて異なる文字列を提供したりできます。
+
+</p>
+
+<p>アプリケーション リソースを外部化したら、プロジェクトの {@code R} クラスで生成されるリソース ID を使用してそれらのリソースにアクセスできます。
+アプリケーションでのリソースの使用方法については、「<a href="accessing-resources.html">リソースへのアクセス</a>」をご覧ください。
+
+このドキュメントでは、Android プロジェクトでリソースをグループ化する方法と、特定の端末設定に代替リソースを提供する方法を説明します。
+</p>
+
+
+<h2 id="ResourceTypes">リソースタイプをグループ化する</h2>
+
+<p>それぞれのタイプのリソースを、プロジェクトの {@code res/} ディレクトリの特定のサブディレクトリに配置する必要があります。
+次は、単純なプロジェクトのファイル階層の例です。</p>
+
+<pre class="classic no-pretty-print">
+MyProject/
+    src/  <span style="color:black">
+        MyActivity.java  </span>
+    res/
+        drawable/  <span style="color:black">
+            graphic.png  </span>
+        layout/  <span style="color:black">
+            main.xml
+            info.xml</span>
+        mipmap/  <span style="color:black">
+            icon.png </span>
+        values/  <span style="color:black">
+            strings.xml  </span>
+</pre>
+
+<p>この例を見てわかるように、{@code res/} ディレクトリには、画像リソース、2 つのレイアウト リソース、ランチャー アイコンの {@code mipmap/} ディレクトリ、文字列リソース ファイルといった、すべてのリソース(サブディレクトリ内)が入ります。
+
+リソース ディレクトリ名は重要です。表 1 に説明があります。
+</p>
+
+<p class="note"><strong>注:</strong> Mipmap フォルダの使用方法については、「<a href="{@docRoot}tools/projects/index.html#mipmap">Managing Projects Overview</a>」をご覧ください。
+</p>
+
+<p class="table-caption" id="table1"><strong>表 1.</strong> プロジェクト {@code res/} ディレクトリ内でサポートされているリソース ディレクトリ。
+</p>
+
+<table>
+  <tr>
+    <th scope="col">ディレクトリ</th>
+    <th scope="col">リソースタイプ</th>
+  </tr>
+
+  <tr>
+    <td><code>animator/</code></td>
+    <td><a href="{@docRoot}guide/topics/graphics/prop-animation.html">プロパティ アニメーション</a>を定義する XML ファイル。
+</td>
+  </tr>
+
+  <tr>
+    <td><code>anim/</code></td>
+    <td><a href="{@docRoot}guide/topics/graphics/view-animation.html#tween-animation">トゥイーン アニメーション</a>を定義する XML ファイル。
+(プロパティ アニメーションをこのディレクトリに保存することもできますが、2 つのタイプを区別するために、プロパティ アニメーションは {@code animator/} ディレクトリに保存することをお勧めします)。
+
+</td>
+  </tr>
+
+  <tr>
+    <td><code>color/</code></td>
+    <td>色の状態リストを定義する XML ファイル。「<a href="color-list-resource.html">Color State List Resource</a>」をご覧ください。
+</td>
+  </tr>
+
+  <tr>
+    <td><code>drawable/</code></td>
+
+    <td><p>ビットマップ ファイル({@code .png}、{@code .9.png}、{@code .jpg}、{@code .gif})または次のドローアブル リソース サブタイプにコンパイルされる XML ファイル: 
+</p>
+      <ul>
+        <li>ビットマップ ファイル</li>
+        <li>Nine-Patche(リサイズ可能なビットマップ)</li>
+        <li>状態リスト</li>
+        <li>形状</li>
+        <li>アニメーション ドローアブル</li>
+        <li>その他のドローアブル</li>
+      </ul>
+      <p>「<a href="drawable-resource.html">Drawable Resources</a>」をご覧ください。</p>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>mipmap/</code></td>
+    <td>さまざまなランチャー アイコン密度のドローアブル ファイル。{@code mipmap/} フォルダによるランチャー アイコンの管理方法については、「<a href="{@docRoot}tools/project/index.html#mipmap">Managing Projects Overview</a>」をご覧ください。
+
+</td>
+  </tr>
+
+  <tr>
+    <td><code>layout/</code></td>
+    <td>ユーザー インターフェースのレイアウトを定義する XML ファイル。
+        「<a href="layout-resource.html">Layout Resource</a>」をご覧ください。</td>
+  </tr>
+
+  <tr>
+    <td><code>menu/</code></td>
+    <td>オプション メニュー、コンテキスト メニュー、サブ メニューといった、アプリケーション メニューを定義する XML ファイル。
+「<a href="menu-resource.html">Menu Resource</a>」をご覧ください。</td>
+  </tr>
+
+  <tr>
+    <td><code>raw/</code></td>
+    <td><p>未加工の形式で保存する任意のファイル。これらのリソースを未加工の {@link java.io.InputStream} で開くには、{@link android.content.res.Resources#openRawResource(int)
+Resources.openRawResource()} をリソース ID({@code R.raw.ファイル名<em></em>})とともに呼び出します。
+</p>
+      <p>ただし、元のファイル名とファイル階層にアクセスする必要がある場合は、一部のリソースを {@code
+assets/} ディレクトリ({@code res/raw/} の代わりに)に保存することを検討します。
+{@code assets/} のファイルにはリソース ID が付与されていないため、読み込むには {@link android.content.res.AssetManager} が必要です。
+</p></td>
+  </tr>
+
+  <tr>
+    <td><code>values/</code></td>
+    <td><p>文字列、整数、色など、単純な値を含む XML ファイル。</p>
+      <p>その他の {@code res/} サブディレクトリの XML リソース ファイルは XML ファイル名に基づいて 1 つのリソースを定義しますが、{@code values/} ディレクトリのファイルは複数のリソースを表します。このディレクトリのファイルの場合、{@code &lt;resources&gt;} 要素のそれぞれの子が 1 つのリソースを定義します。
+
+
+たとえば、{@code &lt;string&gt;} 要素は {@code R.string} リソースを作成し、{@code &lt;color&gt;} 要素は {@code R.color} リソースを作成します。
+
+</p>
+      <p>各リソースの定義には XML 要素を使用するため、ファイルには任意の名前を設定でき、1 つのファイル内にさまざまなリソースを配置できます。
+ただし、わかりやすくするために、一意のリソースタイプをそれぞれのファイルに配置することもできます。
+次は、このディレクトリで作成できるリソースのファイル名の変換例です。
+</p>
+      <ul>
+        <li>リソースの配列の場合 arrays.xml(<a href="more-resources.html#TypedArray">型付き配列</a>)。</li>
+        <li><a href="more-resources.html#Color">色の値</a>の場合 colors.xml </li>
+        <li><a href="more-resources.html#Dimension">寸法の値</a>の場合 dimens.xml。</li>
+        <li><a href="string-resource.html">文字列の値</a>の場合 strings.xml。
+</li>
+        <li><a href="style-resource.html">スタイル</a>の場合 styles.xml。</li>
+      </ul>
+      <p>「<a href="string-resource.html">String Resources</a>」、「<a href="style-resource.html">Style Resource</a>」、「<a href="more-resources.html">More Resource Types</a>」をご覧ください。
+
+</p>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>xml/</code></td>
+    <td>{@link
+android.content.res.Resources#getXml(int) Resources.getXML()} を呼び出すことによって、実行時に読み込むことができる任意の XML ファイル。ここには、<a href="{@docRoot}guide/topics/search/searchable-config.html">検索可能な設定</a>など、各種の XML 設定ファイルが保存されます。
+
+<!-- or preferences configuration. --></td>
+  </tr>
+</table>
+
+<p class="caution"><strong>警告:</strong> リソース ファイルを {@code res/} ディレクトリに直接保存しないでください。&mdash;コンパイラー エラーの原因になります。
+</p>
+
+<p>リソースの特定のタイプの詳細は、「<a href="available-resources.html">Resource Types</a>」のドキュメントをご覧ください。</p>
+
+<p>表 1 で定義したサブディレクトリに保存するリソースは、「デフォルト」のリソースとなります。
+つまり、これらのリソースはアプリケーションのデフォルトのデザインとコンテンツを定義します。ただし、Android が搭載された端末では別のタイプのリソースが呼び出されることがあります。たとえば、端末の画面サイズが通常のものよりも大きな場合、追加の画面スペースを利用する別のレイアウト リソースを提供する必要があります。
+
+
+また、端末の言語設定が異なる場合、使用するユーザー インターフェースのテキストを翻訳する、別の文字列リソースを提供します。
+
+さまざまな端末設定にこれらの異なるリソースを提供するには、デフォルトのリソースに加えて、代替リソースを提供する必要があります。
+
+</p>
+
+
+<h2 id="AlternativeResources">代替リソースを提供する</h2>
+
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
+<p class="img-caption">
+<strong>図 1.</strong> 別のレイアウト リソースを使用する、2 つの異なる端末。</p>
+</div>
+
+<p>ほぼすべてのアプリケーションが、特定の端末設定をサポートするための代替リソースを提供します。
+たとえば、画面密度が異なる場合は代替ドローアブル リソースを含め、言語が異ならう場合は代替文字列リソースを含めます。
+実行時には、Android が現在の端末設定を検出し、アプリケーションに合ったリソースを読み込みます。
+
+</p>
+
+<p>一連のリソースに設定固有の代替リソースを指定するには:</p>
+<ol>
+  <li>{@code
+<em>&lt;resources_name&gt;</em>-<em>&lt;config_qualifier&gt;</em>} の形式で名前を付けた {@code res/} に新しいディレクトリを作成します。
+    <ul>
+      <li><em>{@code &lt;resources_name&gt;}</em> は、対応するディレクトリ リソースのディレクトリ名です(表 1 で定義)。
+</li>
+      <li><em>{@code &lt;qualifier&gt;}</em> は、リソースを使用する個々の設定を指定する名前です(表 2 で定義)。
+</li>
+    </ul>
+    <p>1 つ以上の <em>{@code &lt;qualifier&gt;}</em> を末尾に追加できます。それぞれの修飾子はダッシュを使用して区切ります。
+</p>
+    <p class="caution"><strong>警告:</strong> 複数の修飾子を末尾に追加する場合は、表 2 に記載されているのと同じ順番で配置する必要があります。
+修飾子の順番に誤りがあると、リソースが無視されます。
+</p>
+  </li>
+  <li>それぞれの代替リソースをこの新しいディレクトリに保存します。リソース ファイルの名前は、デフォルトのリソース ファイルと同じものにする必要があります。
+</li>
+</ol>
+
+<p>次に、デフォルト リソースと代替リソースの例を示します。</p>
+
+<pre class="classic no-pretty-print">
+res/
+    drawable/   <span style="color:black">
+        icon.png
+        background.png    </span>
+    drawable-hdpi/  <span style="color:black">
+        icon.png
+        background.png  </span>
+</pre>
+
+<p>{@code hdpi} 修飾子は、ディレクトリ内のリソースが高密度画面を持つ端末用であることを表します。
+これらのドローアブル ディレクトリの画像は特定の画面密度に合わせたサイズになっていますが、ファイル名は完全に同じになります。
+
+このように、{@code icon.png} や {@code
+background.png} 画像を参照するのに使用するリソース ID は常に同じになりますが、Android はリソース ディレクトリ名の修飾子により端末設定情報を比較して、各リソースの現在の端末に最適なバージョンを選択します。
+
+</p>
+
+<p>Android では複数の設定修飾子をサポートしており、それぞれの修飾子をダッシュで区切ることで、1 つのディレクトリ名に複数の修飾子を追加できます。
+表 2 には、有効な設定修飾子が優先度順に記載されています。&mdash;参照ディレクトリに複数の修飾子を使用する場合、表に記載されている順番にディレクトリ名に追加する必要があります。
+
+
+</p>
+
+
+<p class="table-caption" id="table2"><strong>表 2.</strong> 設定修飾子の名前。
+</p>
+<table>
+    <tr>
+        <th>設定</th>
+        <th>修飾子の値</th>
+        <th>説明</th>
+    </tr>
+    <tr id="MccQualifier">
+      <td>MCC と MNC</td>
+      <td>例: <br/>
+        <code>mcc310</code><br/>
+        <code><nobr>mcc310-mnc004</nobr></code><br/>
+        <code>mcc208-mnc00</code><br/>
+        など
+      </td>
+      <td>
+        <p>モバイル カントリーコード(MCC)です。端末の SIM カードにあるモバイル ネットワーク コード(MNC)が続くことがあります。
+たとえば、<code>mcc310</code> は米国の任意の携帯通信会社、<code>mcc310-mnc004</code> は米国の Verizon、<code>mcc208-mnc00</code> はフランスの Orange となります。
+
+</p>
+        <p>端末が無線通信接続(GSM 電話)を使用する場合、MCC と MNC の値は SIM カードの値となります。
+</p>
+        <p>さらに、MCC のみを使用することもできます(たとえば、アプリケーションに国固有の法に関するリソースを含める場合)。
+言語のみに基づいて指定する場合は、代わりに<em>言語と地域</em>の修飾子(次のセクションで解説)を使用します。
+MCC と MNC 修飾子を使用する場合は、慎重に設定し、予測のとおりに機能することをテストします。
+</p>
+        <p>さらに、設定フィールド {@link
+android.content.res.Configuration#mcc}、{@link
+android.content.res.Configuration#mnc} もご覧ください。これらは、それぞれ、現在のモバイル カントリーコードとモバイル ネットワーク コードを表します。
+</p>
+      </td>
+    </tr>
+    <tr id="LocaleQualifier">
+      <td>言語と地域</td>
+      <td>例: <br/>
+        <code>en</code><br/>
+        <code>fr</code><br/>
+        <code>en-rUS</code><br/>
+        <code>fr-rFR</code><br/>
+        <code>fr-rCA</code><br/>
+        など
+      </td>
+      <td><p>言語は 2 文字の <a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">ISO 639-1</a> 言語コードで定義し、オプションで、2 文字の <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO 3166-1-alpha-2</a> 地域コードを後ろに追加します(先頭に小文字の「{@code r}」が付きます)。
+
+
+
+        </p><p>
+        コードでは大文字と小文字が区別されません。<em></em>地域を区別するには、{@code r} 接頭辞を使用します。
+
+        地域のみは指定できません。</p>
+        <p>ユーザーがシステム設定で言語を変更すると、アプリケーションの実行中にこの値が変更されます。
+実行時のアプリケーションに与える影響については、<a href="runtime-changes.html">実行時の変更の処理</a>をご覧ください。
+</p>
+        <p>アプリケーションを他の言語にローカライズするための詳細なガイドは、「<a href="localization.html">Localization</a>」をご覧ください。
+</p>
+        <p>さらに、{@link android.content.res.Configuration#locale} 設定フィールドもご覧ください。これは、現在のロケールを表します。
+</p>
+      </td>
+    </tr>
+    <tr id="LayoutDirectionQualifier">
+      <td>レイアウトの方向</td>
+      <td><code>ldrtl</code><br/>
+        <code>ldltr</code><br/>
+      </td>
+      <td><p>アプリケーションのレイアウトの方向です。{@code ldrtl} は、「レイアウト方向は右から左」という意味になります。{@code ldltr} は、「レイアウト方向は左から右」という意味になります。この設定が暗黙的にデフォルト値となります。
+
+      </p>
+      <p>この設定は、レイアウト、ドローアブル、値など、任意のリソースに適用できます。
+      </p>
+      <p>たとえば、アラビア語に何らかの特定なレイアウトを提供し、その他の「右から左」の言語(ペルシャ語やヘブライ語)に汎用的なレイアウトを提供する場合、次のように設定します。
+
+      </p>
+<pre class="classic no-pretty-print">
+res/
+    layout/   <span style="color:black">
+        main.xml  </span>(Default layout)
+    layout-ar/  <span style="color:black">
+        main.xml  </span>(Specific layout for Arabic)
+    layout-ldrtl/  <span style="color:black">
+        main.xml  </span>(Any "right-to-left" language, except
+                  for Arabic, because the "ar" language qualifier
+                  has a higher precedence.)
+</pre>
+        <p class="note"><strong>注:</strong> アプリで右から左のレイアウト機能を有効にするには、<a href="{@docRoot}guide/topics/manifest/application-element.html#supportsrtl">{@code
+        supportsRtl}</a> を {@code "true"} に設定し、<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> を 17 以上に設定します。
+</p>
+        <p>API レベル 17 で追加。<em></em></p>
+      </td>
+    </tr>
+    <tr id="SmallestScreenWidthQualifier">
+      <td>smallestWidth</td>
+      <td><code>sw&lt;N&gt;dp</code><br/><br/>
+        例: <br/>
+        <code>sw320dp</code><br/>
+        <code>sw600dp</code><br/>
+        <code>sw720dp</code><br/>
+        など
+      </td>
+      <td>
+        <p>使用可能な画面領域の最小寸法で指定する、画面の基本サイズ。
+具体的には、端末の smallestWidth は画面に使用できる高さと幅の最小サイズとなります(画面の「使用できる最小幅」と考えることもできます)。
+画面の現在の方向に関係なく、この修飾子を使用することで、アプリケーションの UI に少なくとも {@code &lt;N&gt;} dps の幅を使用できます。
+
+</p>
+        <p>たとえば、画面領域のレイアウトの最小寸法を常に 600 dp とする必要がある場合、この修飾子を使用してレイアウト リソース {@code
+res/layout-sw600dp/} を作成できます。
+システムは、600dp の側が縦になるか横になるか関係なく、使用可能な画面の最小寸法が 600dp 以上の場合にのみこれらのリソースを使用します。
+
+smallestWidth は端末の固定された画面サイズ特性です。<strong>画面の向きが変わっても、端末の smallestWidth は変更されません。</strong>
+</p>
+        <p>端末の smallestWidth では画面の装飾とシステム UI が考慮されます。たとえば、端末の画面に smallestWidth の軸に沿ったスペースを考慮した固定 UI 要素がある場合、これらの画面ピクセルは UI に使用できないことから、システムは実際の画面サイズよりも小さな smallestWidth を宣言します。つまり、使用する値は、レイアウトが必要とする実際の最小寸法とする必要があります(通常は、この値は、画面の現在の向きに関係なく、レイアウトがサポートする「最小幅」となります)。<em></em>
+
+
+
+
+</p>
+        <p>次に、一般的な画面サイズに使用する値を示します。</p>
+        <ul>
+          <li>320。次のような画面設定を持つ端末。
+            <ul>
+              <li>240x320 ldpi(QVGA ハンドセット)</li>
+              <li>320x480 mdpi(ハンドセット)</li>
+              <li>480x800 hdpi(高密度ハンドセット)</li>
+            </ul>
+          </li>
+          <li>480。480x800 mdpi(タブレットやハンドセット)などの画面。</li>
+          <li>600。600x1024 mdpi(7 インチタブレット)などの画面。</li>
+          <li>720。720x1280 mdpi(10 インチタブレット)などの画面。</li>
+        </ul>
+        <p>アプリケーションで smallestWidth 修飾子の値が異なる複数のリソース ディレクトリを提供する場合、システムは端末の smallestWidth に最も近い(かつ超過しない)ものを使用します。
+
+ </p>
+        <p>API レベル 13 で追加。<em></em></p>
+        <p>さらに、<a href="{@docRoot}guide/topics/manifest/supports-screens-element.html#requiresSmallest">{@code
+android:requiresSmallestWidthDp}</a> 属性もご覧ください。これは、アプリケーションが互換性を持つ最小の smallestWidth と、端末の smallestWidth 値を保持する {@link
+android.content.res.Configuration#smallestScreenWidthDp} 設定フィールドを宣言します。
+
+</p>
+        <p>さまざまな画面の設計とこの修飾子の使用方法についての詳細は、「<a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>」のデベロッパー ガイドをご覧ください。
+
+</p>
+      </td>
+    </tr>
+    <tr id="ScreenWidthQualifier">
+      <td>使用可能な幅</td>
+      <td><code>w&lt;N&gt;dp</code><br/><br/>
+        例: <br/>
+        <code>w720dp</code><br/>
+        <code>w1024dp</code><br/>
+        など
+      </td>
+      <td>
+        <p>リソースを使用する、使用可能な最小の画面幅を {@code dp} 単位で指定します。&mdash;<code>&lt;N&gt;</code> の値で定義します。
+画面の向きの縦と横を変更すると、現在の実際の幅に合わせて、この設定値が変更されます。
+
+</p>
+        <p>アプリケーションでこの設定が異なる複数のリソース ディレクトリを提供する場合、システムは端末の現在の画面の幅に最も近い(かつ超過しない)ものを使用します。
+
+この値は画面の装飾を考慮します。つまり、端末のディスプレイの左や右に何らかの固定 UI 要素がある場合、これらの UI 要素を考慮し、アプリケーションの使用可能なスペースを減らして、実際の画面サイズよりも小さな幅を使用します。
+
+
+
+</p>
+        <p>API レベル 13 で追加。<em></em></p>
+        <p>さらに、{@link android.content.res.Configuration#screenWidthDp} 設定フィールドもご覧ください。これは現在の画面の幅を保持します。
+</p>
+        <p>さまざまな画面の設計とこの修飾子の使用方法についての詳細は、「<a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>」のデベロッパー ガイドをご覧ください。
+
+</p>
+      </td>
+    </tr>
+    <tr id="ScreenHeightQualifier">
+      <td>使用可能な高さ</td>
+      <td><code>h&lt;N&gt;dp</code><br/><br/>
+        例: <br/>
+        <code>h720dp</code><br/>
+        <code>h1024dp</code><br/>
+        など
+      </td>
+      <td>
+        <p>リソースを使用する、使用可能な最小の画面幅を「dp」単位で指定します。&mdash;<code>&lt;N&gt;</code> の値で定義します。
+画面の向きの縦と横を変更すると、現在の実際の高さに合わせて、この設定値が変更されます。
+
+</p>
+        <p>アプリケーションでこの設定が異なる複数のリソース ディレクトリを提供する場合、システムは端末の現在の画面の高さに最も近い(かつ超過しない)ものを使用します。
+
+この値は画面の装飾を考慮します。つまり、端末のディスプレイの上や下に何らかの固定 UI 要素がある場合、これらの UI 要素を考慮し、アプリケーションの使用可能なスペースを減らして、実際の画面サイズよりも小さな高さを使用します。
+
+
+
+固定されていない画面の装飾(全画面にした場合に非表示になる携帯電話のステータスバーなど)や、タイトルバーやアクションバーなどのウィンドウの装飾は、ここでは考慮されません。そのため、アプリケーションでは指定したスペースよりもやや小さなサイズに対処できるように準備をし置く必要があります。<em></em>
+
+
+
+
+        <p>API レベル 13 で追加。<em></em></p>
+        <p>さらに、{@link android.content.res.Configuration#screenHeightDp} 設定フィールドもご覧ください。これは現在の画面の幅を保持します。
+</p>
+        <p>さまざまな画面の設計とこの修飾子の使用方法についての詳細は、「<a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>」のデベロッパー ガイドをご覧ください。
+
+</p>
+      </td>
+    </tr>
+    <tr id="ScreenSizeQualifier">
+      <td>画面サイズ</td>
+      <td>
+        <code>small</code><br/>
+        <code>normal</code><br/>
+        <code>large</code><br/>
+        <code>xlarge</code>
+      </td>
+      <td>
+        <ul class="nolist">
+        <li>{@code small}: 低密度 QVGA 画面と同等のサイズを持つ画面です。
+小さい画面の最小レイアウト サイズは約 320x426 dp 単位です。
+たとえば、QVGA 低密度や VGA 高密度です。
+</li>
+        <li>{@code normal}: 中密度 HVGA 画面と同等のサイズを持つ画面です。
+通常の画面の最小レイアウト サイズは約 320x470 dp 単位です。
+たとえば、WQVGA 低密度、HVGA 中密度、WVGA 高密度といった画面になります。
+
+</li>
+        <li>{@code large}: 中密度 VGA 画面と同等のサイズを持つ画面です。
+
+        大きな画面の最小レイアウト サイズは約 480x640 dp 単位です。
+        たとえば、VGA や WVGA の中密度といった画面です。</li>
+        <li>{@code xlarge}: 従来の中密度 HVGA 画面よりもはるかに大きなサイズの画面です。
+特大の画面の最小レイアウト サイズは約 720x960 dp 単位です。
+ほとんどの場合、特大の画面を持つ端末はポケットに入れて持ち運ぶことができないほど大きく、タブレット スタイルの端末になります。
+
+API レベル 9 で追加。<em></em></li>
+        </ul>
+        <p class="note"><strong>注:</strong> サイズ識別子を持つ場合でも、リソースがそのサイズの画面以外には対応しないということではありません。<em></em>
+現在の端末に最適な識別子を持つ代替リソースを提供していない場合でも、システムによって<a href="#BestMatch">最適な</a>リソースが使用されることがあります。
+
+</p>
+        <p class="caution"><strong>警告:</strong> すべてのリソースが現在の画面よりも大きなサイズ識別子を使用している場合、システムはそれらのリソースを使用せず、アプリケーションが実行時にクラッシュしてしまいます(たとえば、すべてのリソースに {@code
+xlarge} 識別子のタグが付いているが、端末は通常サイズの画面である場合)。<em></em><strong></strong>
+
+</p>
+        <p>API レベル 4 で追加。<em></em></p>
+        
+        <p>詳細については、「<a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>」をご覧ください。
+</p>
+        <p>さらに、{@link android.content.res.Configuration#screenLayout} 設定フィールドもご覧ください。これは、画面のサイズが小、中、大のいずれかであるかを表します。
+
+</p>
+      </td>
+    </tr>
+    <tr id="ScreenAspectQualifier">
+      <td>画面アスペクト</td>
+      <td>
+        <code>long</code><br/>
+        <code>notlong</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code long}: WQVGA、WVGA、FWVGA のような長い画面</li>
+          <li>{@code notlong}: QVGA、HVGA、VGA のように長くない画面</li>
+        </ul>
+        <p>API レベル 4 で追加。<em></em></p>
+        <p>これは純粋に画面のアスペクト比を基準とします(「長い」画面は幅広の画面になります)。これは画面の向きには関係ありません。
+</p>
+        <p>さらに、{@link android.content.res.Configuration#screenLayout} 設定フィールドもご覧ください。これは、画面のサイズが長いかどうかを表します。
+</p>
+      </td>
+    </tr>
+    <tr id="OrientationQualifier">
+      <td>画面の向き</td>
+      <td>
+        <code>port</code><br/>
+        <code>land</code>  <!-- <br/>
+        <code>square</code>  -->
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code port}: 端末は縦向き(垂直)になっています</li>
+          <li>{@code land}: 端末は横向き(水平)になっています</li>
+          <!-- Square mode is currently not used. -->
+        </ul>
+        <p>ユーザーが画面を回転すると、アプリケーションの実行中にこの値が変更されます。
+実行時のアプリケーションに与える影響については、「<a href="runtime-changes.html">実行時の変更の処理</a>」をご覧ください。
+</p>
+        <p>さらに、{@link android.content.res.Configuration#orientation} 設定フィールドもご覧ください。これは、現在の端末の画面の向きを表します。
+</p>
+      </td>
+    </tr>
+    <tr id="UiModeQualifier">
+      <td>UI モード</td>
+      <td>
+        <code>car</code><br/>
+        <code>desk</code><br/>
+        <code>television</code><br/>
+        <code>appliance</code>
+        <code>watch</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code car}: 端末は車載ドックで表示されています</li>
+          <li>{@code desk}: 端末はデスクドックで表示されています</li>
+          <li>{@code television}: 端末はテレビで表示されており、「10 フィート」離れた位置からの操作が可能です。UI はユーザーから離れた場所にある大きな画面に表示され、主に十字キーやポインタ以外のやり取りで操作します。
+
+
+</li>
+          <li>{@code appliance}: 端末をアプライアンスとして使用します。ディスプレイはありません
+</li>
+          <li>{@code watch}: 端末にはディスプレイがあり、手首に装着して使用します</li>
+        </ul>
+        <p>API レベル 8 で追加。television は API 13 で追加。watch は API 20 で追加。<em></em></p>
+        <p>端末をホルダーに装着したり、取り外したりしたときのアプリの反応については、「<a href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">Determining and Monitoring the Docking State and Type</a>」をご覧ください。
+
+</p>
+        <p>ユーザーが端末をドックに装着すると、アプリケーションの実行中にこの値が変更されます。
+{@link
+android.app.UiModeManager} を使用すると、これらのモードの一部を有効または無効にできます。実行時のアプリケーションに与える影響については、「<a href="runtime-changes.html">実行時の変更の処理</a>」をご覧ください。
+</p>
+      </td>
+    </tr>
+    <tr id="NightQualifier">
+      <td>ナイトモード</td>
+      <td>
+        <code>night</code><br/>
+        <code>notnight</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code night}: 夜間</li>
+          <li>{@code notnight}: 昼間</li>
+        </ul>
+        <p>API レベル 8 で追加。<em></em></p>
+        <p>ナイトモードを自動モード(デフォルト)のままにしておくと、時間を基準にしてモードが変更された場合に、アプリケーションの実行中にこの値が変更されます。
+{@link android.app.UiModeManager} を使用すると、このモードを有効または無効にできます。
+実行時のアプリケーションに与える影響については、「<a href="runtime-changes.html">実行時の変更の処理</a>」をご覧ください。
+</p>
+      </td>
+    </tr>
+    <tr id="DensityQualifier">
+      <td>画面ピクセル密度(dpi)</td>
+      <td>
+        <code>ldpi</code><br/>
+        <code>mdpi</code><br/>
+        <code>hdpi</code><br/>
+        <code>xhdpi</code><br/>
+        <code>xxhdpi</code><br/>
+        <code>xxxhdpi</code><br/>
+        <code>nodpi</code><br/>
+        <code>tvdpi</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code ldpi}: 低密度の画面。約 120dpi です。</li>
+          <li>{@code mdpi}: 中密度(従来の HVGA)の画面。約 160dpi です。
+</li>
+          <li>{@code hdpi}: 高密度の画面。約 240dpi です。</li>
+          <li>{@code xhdpi}: 超高密度の画面。約 320dpi です。API レベル 8 で追加。<em></em>
+</li>
+          <li>{@code xxhdpi}: 超超高密度の画面。約 480dpi です。API レベル 16 で追加。<em></em>
+</li>
+          <li>{@code xxxhdpi}: 超超高密度が使用(ランチャー アイコンのみ。「Supporting Multiple Screens」の<a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">注</a>をご覧ください)。約 640dpi です。<em></em>
+
+API レベル 18 で追加。<em></em>
+</li>
+          <li>{@code nodpi}: 端末の密度に合わせてサイズを変更しないビットマップ リソースに使用します。
+</li>
+          <li>{@code tvdpi}: 密度が mdpi と hdpi の間の画面。約 213dpi です。これは「プライマリ」の密度グループとしては認識されません。
+ほとんどの場合、テレビ向けのものであり、大部分のアプリは必要としません。&mdash;通常、アプリの場合は mdpi と hdpi リソースを提供すれば十分であり、システムが必要に応じてサイズを変更します。
+
+この識別子は API レベル 13 で導入されました。</li>
+        </ul>
+        <p>6 つのプライマリ密度のサイズの比率は 3:4:6:8:12:16 です(tvdpi 密度を除く)。
+そのため、ldpi では 9x9 のビットマップ、mdpi では 12x12 のビットマップ、hdpi では 18x18 のビットマップ、xhdpi では 24x24 のビットマップとなります。
+</p>
+        <p>画像リソースがテレビや他の特定の端末で正常に表示されず、tvdpi リソースを試す場合、拡張係数は 1.33*mdpi になります。
+たとえば、画面向けの 100px x 100px 画像は、tvdpi 向けにすると 133px x 133px となります。
+</p>
+        <p class="note"><strong>注:</strong> 密度識別子を持つ場合でも、リソースがその密度の画面以外には対応しないということではありません。<em></em>
+現在の端末に最適な識別子を持つ代替リソースを提供していない場合でも、システムによって<a href="#BestMatch">最適な</a>リソースが使用されることがあります。
+
+</p>
+        <p>異なる画面密度を処理する方法や、Android が現在の密度に合わせてビットマップのサイズを変更する方法については、「<a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>」をご覧ください。
+
+</p>
+       </td>
+    </tr>
+    <tr id="TouchscreenQualifier">
+      <td>タッチスクリーン タイプ</td>
+      <td>
+        <code>notouch</code><br/>
+        <code>finger</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code notouch}: 端末にはタッチスクリーンが搭載されていません。</li>
+          <li>{@code finger}: 端末には、ユーザーの指先による指示操作で使用するためのタッチスクリーンが搭載されています。
+</li>
+        </ul>
+        <p>{@link android.content.res.Configuration#touchscreen} 設定フィールドもご覧ください。これは、端末上のタッチスクリーンのタイプを表します。
+</p>
+      </td>
+    </tr>
+    <tr id="KeyboardAvailQualifier">
+      <td>キーボードの使用可能状況</td>
+      <td>
+        <code>keysexposed</code><br/>
+        <code>keyshidden</code><br/>
+        <code>keyssoft</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code keysexposed}: 端末ではキーボードを使用できます。端末でソフトウェア キーボードが有効な(と想定される)場合、端末にハードウェア キーボードが接続されておらず、ハードウェア キーボードがユーザーに提示されていない場合でも、この値が使用されることがあります。<em></em>
+
+ソフトウェア キーボードが提供されていない、または無効になっている場合は、ハードウェア キーボードが認識された場合にのみ使用されます。
+
+</li>
+          <li>{@code keyshidden}: 端末には使用可能なハードウェア キーボードがありますが非表示になっています。また、端末ではソフトウェア キーボードが有効になっていません。<em></em><em></em>
+</li>
+          <li>{@code keyssoft}: 表示されているかどうかに関係なく、端末ではソフトウェア キーボードが有効になっています。
+</li>
+        </ul>
+        <p><code>keysexposed</code> リソースを提供するが、<code>keyssoft</code> リソースを提供しない場合、システムのソフトウェア キーボードが有効になっている場合は、キーボードが表示されているかに関係なく、システムは <code>keysexposed</code> リソースを使用します。
+
+</p>
+        <p>ユーザーがハードウェア キーボードを開くと、アプリケーションの実行中にこの値が変更されます。
+実行時のアプリケーションに与える影響については、「<a href="runtime-changes.html">実行時の変更の処理</a>」をご覧ください。
+</p>
+        <p>さらに、設定フィールド {@link
+android.content.res.Configuration#hardKeyboardHidden} と {@link
+android.content.res.Configuration#keyboardHidden} もご覧ください。これは、ハードウェア キーボードの可視性、任意のキーボード(ソフトウェアを含む)の可視性、それぞれの可視性を表します。
+</p>
+      </td>
+    </tr>
+    <tr id="ImeQualifier">
+      <td>主なテキストの入力方法</td>
+      <td>
+        <code>nokeys</code><br/>
+        <code>qwerty</code><br/>
+        <code>12key</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code nokeys}: 端末にはテキスト入力用のハードウェア キーはありません。</li>
+          <li>{@code qwerty}: ユーザーに表示されているかどうかに関係なく、端末にはハードウェア クワーティ キーボードが搭載されています。
+
+</li>
+          <li>{@code 12key}: ユーザーに表示されているかどうかに関係なく、端末にはハードウェア 12key キーボードが搭載されています。
+</li>
+        </ul>
+        <p>さらに、{@link android.content.res.Configuration#keyboard} 設定フィールドもご覧ください。これは、使用可能な主なテキストの入力方法を表します。
+</p>
+      </td>
+    </tr>
+    <tr id="NavAvailQualifier">
+      <td>ナビゲーション キーの使用可能状況</td>
+      <td>
+        <code>navexposed</code><br/>
+        <code>navhidden</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code navexposed}: ユーザーはナビゲーション キーを使用できます。</li>
+          <li>{@code navhidden}: ナビゲーション キーは使用できません(閉じられた lid の背後になっている場合など)。
+</li>
+        </ul>
+        <p>ユーザーがナビゲーション キーを表示させると、アプリケーションの実行中にこの値が変更されます。
+実行時のアプリケーションに与える影響については、「<a href="runtime-changes.html">実行時の変更の処理</a>」をご覧ください。
+</p>
+        <p>さらに、{@link android.content.res.Configuration#navigationHidden} 設定フィールドもご覧ください。これは、ナビゲーション キーが非表示になっているかどうかを表します。
+</p>
+      </td>
+    </tr>
+    <tr id="NavigationQualifier">
+      <td>タップ以外の主なナビゲーション方法</td>
+      <td>
+        <code>nonav</code><br/>
+        <code>dpad</code><br/>
+        <code>trackball</code><br/>
+        <code>wheel</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code nonav}: 端末には、タッチスクリーン以外のナビゲーション機能がありません。
+</li>
+          <li>{@code dpad}: 端末にはナビゲーション用の方向キー(十字キー)があります。</li>
+          <li>{@code trackball}: 端末にはナビゲーション用のトラックボールがあります。</li>
+          <li>{@code wheel}: 端末にはナビゲーション用の方向ホイールがあります(特殊)。</li>
+        </ul>
+        <p>{@link android.content.res.Configuration#navigation} 設定フィールドもご覧ください。これは、利用可能なナビゲーション方法のタイプを表します。
+</p>
+      </td>
+    </tr>
+<!-- DEPRECATED
+    <tr>
+      <td>Screen dimensions</td>
+      <td>Examples:<br/>
+        <code>320x240</code><br/>
+        <code>640x480</code><br/>
+        etc.
+      </td>
+      <td>
+        <p>The larger dimension must be specified first. <strong>This configuration is deprecated
+and should not be used</strong>. Instead use "screen size," "wider/taller screens," and "screen
+orientation" described above.</p>
+      </td>
+    </tr>
+-->
+    <tr id="VersionQualifier">
+      <td>プラットフォーム バージョン(API レベル)</td>
+      <td>例: <br/>
+        <code>v3</code><br/>
+        <code>v4</code><br/>
+        <code>v7</code><br/>
+        など</td>
+      <td>
+        <p>端末がサポートする API レベル。たとえば、<code>v1</code> は API レベル 1(Android 1.0 以降の端末)、<code>v4</code> は API レベル 4(Android 1.6 以降の端末)となります。
+
+これらの値の詳細については、「<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Android API levels</a>」のドキュメントをご覧ください。
+</p>
+      </td>
+    </tr>
+</table>
+
+
+<p class="note"><strong>注:</strong> Android 1.0 以降、いくつかの設定識別子が追加されているため、すべてのバージョンの Android がすべての識別子をサポートしているわけではありません。
+新しい識別子を使用すると、旧式の端末がその識別子を無視できるように、プラットフォーム バージョンの識別子が暗黙的に追加されます。
+たとえば、available-width の識別子は API レベル 13 で新たに追加されたため、<code>w600dp</code> 識別子を使用すると、自動的に <code>v13</code> 識別子が追加されます。
+
+問題を回避するために、常に一連のデフォルト リソースを含めるようにします(識別子のない一連のリソース)。<em></em>
+詳細は、<a href="#Compatibility">リソースとの最適な端末の互換性を提供する</a>セクションをご覧ください。
+
+</p>
+
+
+
+<h3 id="QualifierRules">修飾子の名前のルール</h3>
+
+<p>ここでは、設定修飾子の名前の使用方法に関するルールを説明します。</p>
+
+<ul>
+    <li>リソースの 1 つのセットに複数の修飾子を指定できます。その場合は、ダッシュで区切ります。たとえば、<code>drawable-en-rUS-land</code> は画面が横向きの米国英語の端末に適用されます。
+
+</li>
+    <li>識別子は<a href="#table2">表 2</a> の順番で使用します。次に例を示します。
+
+      <ul>
+        <li>誤: <code>drawable-hdpi-port/</code></li>
+        <li>正: <code>drawable-port-hdpi/</code></li>
+      </ul>
+    </li>
+    <li>代替リソースのディレクトリはネストできません。<code>res/drawable/drawable-en/</code> などは使用できません。
+</li>
+    <li>値は大文字と小文字を区別します。大文字と小文字を区別するファイル システムの問題を回避するために、処理前にリソース コンパイラーがディレクトリ名を小文字に変換します。
+
+読みやすくする場合にのみ、名前に大文字を使用します。</li>
+    <li>それぞれの修飾子タイプに使用できる値は 1 つだけです。たとえば、スペインとフランスの両方に同じドローアブル ファイルを使用する場合も、ディレクトリ名を <code>drawable-rES-rFR/</code> とすることはできません。<em></em>
+
+その代わりに、該当するファイルを含む <code>drawable-rES/</code> と <code>drawable-rFR/</code> という名前の 2 つのリソース ディレクトリが必要になります。ただし、実際のところ、両方の場所で同じファイルを重複させる必要はありません。
+
+代わりに、リソースのエイリアスを作成できます。
+後述の<a href="#AliasResources">エイリアス リソースを作成する</a>をご覧ください。
+</li>
+</ul>
+
+<p>これらの修飾子を名前に持つディレクトリに代替リソースを保存すると、現在の端末設定に基づいて、Android がアプリケーションにリソースを自動的に適用します。
+
+リソースが要求されるたびに、Android は要求されたリソース ファイルを持つ代替リソース ディレクトリを探し、<a href="#BestMatch">最適なリソースを見つけます</a>(後述)。
+
+特定の端末設定に合う代替リソースがない場合、Android は対応するデフォルト リソース(設定識別子を含まない特定のリソースタイプ用の一連のリソース)を使用します。
+
+
+</p>
+
+
+
+<h3 id="AliasResources">エイリアス リソースを作成する</h3>
+
+<p>複数の端末で使用するリソースがある場合(ただし、デフォルト リソースとして提供しない場合)、同じリソースを複数の代替リソース ディレクトリに配置する必要はありません。
+
+その代わりに、(場合によっては)デフォルト リソースのディレクトリに保存したリソースのエイリアスとして機能する代替リソースを作成できます。
+
+</p>
+
+<p class="note"><strong>注:</strong> すべてのリソースに、別のリソースへのエイリアスを作成できるメカニズムが備わっているわけではありません。
+特に、アニメーション、メニュー、未加工、{@code xml/} で指定されていないその他のリソースにはこの機能を使用できません。
+</p>
+
+<p>たとえば、アプリケーション アイコン {@code icon.png} について、ロケールごとに一意のバージョンが必要になるという状況を考えてみます。
+ただし、英語カナダとフランス語カナダの 2 つのロケールでは同じバージョンを使用する必要があります。
+英語カナダとフランス語カナダの両方のリソース ディレクトリに同じ画像をコピーする必要は実際にはありません。
+
+代わりに、両方に使用する画像を {@code icon_ca.png} という名前({@code icon.png} 以外の名前)で保存し、デフォルトの {@code res/drawable/} ディレクトリに配置します。
+
+次に {@code &lt;bitmap&gt;} 要素を使用して {@code icon_ca.png} リソースを参照する {@code icon.xml} ファイルを {@code
+res/drawable-en-rCA/} と {@code res/drawable-fr-rCA/} に作成します。
+これにより、PNG ファイルを 1 つだけ作成し、それを指す小さな XML ファイルを 2 つ作成するだけで済みます
+(次に、XML ファイルの例を示します)。</p>
+
+
+<h4>ドローアブル</h4>
+
+<p>既存のドローアブルのエイリアスを作成するには、{@code &lt;bitmap&gt;} 要素を使用します。次に例を示します。
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/icon_ca" />
+</pre>
+
+<p>このファイルを {@code icon.xml} として({@code res/drawable-en-rCA/} などの代替リソース ディレクトリに)保存すると、{@code R.drawable.icon} として参照可能なリソースにコンパイルされますが、実際のところ、これは({@code res/drawable/} に保存されている){@code
+R.drawable.icon_ca} リソースのエイリアスです。
+
+</p>
+
+
+<h4>レイアウト</h4>
+
+<p>既存のレイアウトのエイリアスを作成するには、{@code &lt;merge&gt;} にラップされる {@code &lt;include&gt;} 要素を使用します。
+次に例を示します。</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;merge>
+    &lt;include layout="@layout/main_ltr"/>
+&lt;/merge>
+</pre>
+
+<p>このファイルを {@code main.xml} として保存すると、{@code R.layout.main} として参照可能なリソースにコンパイルされますが、実際のところ、これは {@code R.layout.main_ltr} リソースのエイリアスです。
+
+</p>
+
+
+<h4>文字列とその他の単純な値</h4>
+
+<p>既存の文字列のエイリアスを作成するには、単に、目的の文字列のリソース ID を新しい文字列の値として使用します。
+次に例を示します。</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;string name="hello">Hello&lt;/string>
+    &lt;string name="hi">@string/hello&lt;/string>
+&lt;/resources>
+</pre>
+
+<p>{@code R.string.hi} リソースは {@code R.string.hello} のエイリアスになりました。</p>
+
+<p> <a href="{@docRoot}guide/topics/resources/more-resources.html">その他の単純な値</a>も同様に機能します。
+次に色の例を示します。</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;color name="yellow">#f00&lt;/color>
+    &lt;color name="highlight">@color/red&lt;/color>
+&lt;/resources>
+</pre>
+
+
+
+
+<h2 id="Compatibility">リソースとの最適な端末の互換性を提供する</h2>
+
+<p>アプリケーションで複数の端末設定をサポートするには、アプリケーションが使用するそれぞれのタイプのリソースに常にデフォルト リソースを提供することが重要です。
+</p>
+
+<p>たとえば、アプリケーションが複数の言語をサポートする場合は、<a href="#LocaleQualifier">言語と地域の修飾子</a>を<em>持たない</em> {@code
+values/} ディレクトリ(文字列の保存先)を常に用意します。すべての文字列ファイルをすべて言語と地域の修飾子を持つディレクトリに配置してしまうと、自分の文字列がサポートしていない言語に設定された端末でアプリケーションを実行すると、アプリケーションがクラッシュしてしまいます。
+
+ただし、デフォルトの {@code values/} リソースを提供しておけば、アプリケーションは適切に実行されます(ユーザーがその言語を理解できない場合でも。&mdash;クラッシュは避けられます)。
+
+</p>
+
+<p>同様に、画面の向きに基づいた異なるレイアウト リソースを提供する場合も、いずれかの方向をデフォルトに設定する必要があります。
+たとえば、横向きの {@code
+layout-land/} と縦向きの {@code layout-port/} にレイアウト リソースを提供する代わりに、横向きの {@code layout/} と縦向きの {@code layout-port/} のようなリソースをデフォルトとして保存しておきます。
+</p>
+
+<p>予測しなかった設定でアプリケーションが実行されるだけでなく、新しいバージョンの Android では古いバージョンではサポートされない設定修飾子が追加されることもあるため、デフォルト リソースの提供が重要になります。
+
+新しいリソース修飾子を使用するが、古いバージョンの Android とのコードの互換性を保持する場合、古いバージョンの Android でアプリケーションを実行するときにデフォルト リソースが提供されていないと、古いバージョンの Android では新しい修飾子の付いたリソースを使用できないために、アプリケーションがクラッシュします。
+
+
+たとえば、<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code
+minSdkVersion}</a> が 4 に設定されている場合に、<a href="#NightQualifier">ナイトモード</a>(API レベル 8 で追加された {@code night} または {@code notnight})を使用してすべてのドローアブル リソースの修飾子を設定すると、API レベル 4 端末はドローアブル リソースにアクセスできず、クラッシュします。
+この場合、{@code notnight} をデフォルト リソースにする場合、その修飾子を除外することになるため、ドローアブル リソースは {@code drawable/} または {@code drawable-night/} のいずれかになります。
+
+</p>
+
+<p>そこで、端末の最適な互換性を提供するには、アプリケーションを適切に実行するのに必要なリソースに常にデフォルト リソースを提供するようにします。
+次に、設定修飾子を使用して、特定の端末設定向けの代替リソースを作成します。
+</p>
+
+<p>このルールには次の例外があります。アプリケーションの <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> が 4 以上の場合、<a href="#DensityQualifier">画像密度</a>修飾子で代替のドローアブル リソースを提供するときには、デフォルトのドローアブル リソースを提供する必要はありません。<em></em>
+
+デフォルトのドローアブル リソースがない場合でも、Android は代替の画面密度のなかで最適なものを見つけて、必要に応じてビットマップのサイズを変更できます。
+
+ただし、すべてのタイプに最適な操作性を提供するには、密度の 3 つのタイプすべてに代替ドローアブルを提供する必要があります。
+</p>
+
+
+
+<h2 id="BestMatch">Android が最適なリソースを見つける仕組み</h2>
+
+<p>代替を提供するリソースを要求すると、現在の端末設定に応じて Android が実行時に使用する代替リソースを選択します。
+Android が代替リソースを選択する方法説明するために、次のドローアブル ディレクトリを想定します。それぞれに同じ画像の異なるバージョンが入っています。
+
+</p>
+
+<pre class="classic no-pretty-print">
+drawable/
+drawable-en/
+drawable-fr-rCA/
+drawable-en-port/
+drawable-en-notouch-12key/
+drawable-port-ldpi/
+drawable-port-notouch-12key/
+</pre>
+
+<p>さらに、次のような端末設定を想定します。</p>
+
+<p style="margin-left:1em;">
+ロケール = <code>en-GB</code> <br/>
+画面の向き = <code>port</code> <br/>
+画面ピクセル密度 = <code>hdpi</code> <br/>
+タッチスクリーン タイプ = <code>notouch</code> <br/>
+主なテキストの入力方法 = <code>12key</code>
+</p>
+
+<p>端末設定を使用可能な代替リソースに比較して、Android は {@code drawable-en-port} からドローアブルを選択します。
+</p>
+
+<p>システムは、次のロジックを使用して、使用するリソースを決定します。
+</p>
+
+
+<div class="figure" style="width:371px">
+<img src="{@docRoot}images/resources/res-selection-flowchart.png" alt="" height="471" />
+<p class="img-caption"><strong>図 2.</strong> Android が最適なリソースを見つける仕組みを示したフローチャート。
+</p>
+</div>
+
+
+<ol>
+  <li>端末設定に矛盾するリソース ファイルを排除します。
+    <p><code>en-GB</code> ロケールに矛盾するため、<code>drawable-fr-rCA/</code> ディレクトリが排除されます。
+</p>
+<pre class="classic no-pretty-print">
+drawable/
+drawable-en/
+<strike>drawable-fr-rCA/</strike>
+drawable-en-port/
+drawable-en-notouch-12key/
+drawable-port-ldpi/
+drawable-port-notouch-12key/
+</pre>
+<p class="note"><strong>例外:</strong> 画面ピクセル密度は、矛盾により排除されない修飾子の 1 つです。
+それぞれの画面密度はその時点で最適であると判断されたものであるため、端末の画面密度が hdpi の場合でも、<code>drawable-port-ldpi/</code> は排除されません。
+
+詳細は、「<a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>」のドキュメントをご覧ください。
+</p></li>
+
+  <li>リスト(<a href="#table2">表 2</a>)にある(次に)優先される修飾子を選択します(MCC から順に下がっていきます)。
+ </li>
+  <li>この修飾子を含むリソース ディレクトリがあるかどうかを確認します。  </li>
+    <ul>
+      <li>ない場合は、ステップ 2 に戻り、次の修飾子を調べます(この例では、言語識別子になるまですべて「いいえ」になります)。
+</li>
+      <li>「はい」の場合は、ステップ 4 に進みます。</li>
+    </ul>
+  </li>
+
+  <li>この修飾子を持たないリソース ディレクトリを排除します。この例では、システムによって言語修飾子を含まないすべてのディレクトリが排除されます。
+</li>
+<pre class="classic no-pretty-print">
+<strike>drawable/</strike>
+drawable-en/
+drawable-en-port/
+drawable-en-notouch-12key/
+<strike>drawable-port-ldpi/</strike>
+<strike>drawable-port-notouch-12key/</strike>
+</pre>
+<p class="note"><strong>例外:</strong> 対象となる修飾子が画面ピクセル密度の場合、Android は端末の画像密度に最も近いオプションを選択します。一般的に、Android では小さな元画像を拡大するよりも、大きな元画像を縮小する方法が使用されます。
+
+
+「<a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>」をご覧ください。
+</p>
+  </li>
+
+  <li>残るディレクトリが 1 つになるまで、元に戻ってステップ 2、3、4 を繰り返します。このレイでは、次にマッチングするのが画面の向きの修飾子です。そのため、画面の向きを指定しないリソースは排除されます。
+
+
+<pre class="classic no-pretty-print">
+<strike>drawable-en/</strike>
+drawable-en-port/
+<strike>drawable-en-notouch-12key/</strike>
+</pre>
+<p>{@code drawable-en-port} ディレクトリが残ります。</p>
+  </li>
+</ol>
+
+<p>この手順は要求した各リソースに対して実行されますが、システムはさらにいくつかの最適化を行います。
+たとえば、端末の設定が判明すると、マッチングしない代替リソースが排除されたりします。
+たとえば、設定言語が英語(「en」)の場合、言語修飾子が英語以外に設定されているリソース ディレクトリはチェック対象のリソースのプールに入ることはありません(言語修飾子のないリソース ディレクトリはそのままプールに入ります)。<em></em>
+
+
+</p>
+
+<p>画面サイズ修飾子に基づいてリソースを選択する場合、最適なリソースがない場合、システムは現在の画面よりも小さな画面向けのリソースを使用します(たとえば、必要に応じて大きなサイズの画面が通常サイズの画面のリソースを使用します)。
+
+ただし、使用できるリソースが現在の画面よりも大きなサイズのものしかない場合は、システムはそれらのリソースを<strong>使用せず</strong>、端末設定にあるその他のリソースがないときは、アプリケーションがクラッシュします(たとえば、すべてのリソースに {@code xlarge} 識別子のタグが付いているが、端末は通常サイズの画面である場合)<em></em>
+
+
+
+</p>
+
+<p class="note"><strong>注:</strong> (<a href="#table2">表 2</a> の)上位にある修飾子の方が、端末に正確に一致する修飾子の数よりも重要になります。<em></em>
+たとえば、上のステップ 4 では、<code>drawable-en</code> には一致するパラメータが 1 つしかありませんが(言語)、リストの最後の選択肢には、端末に正確に一致する修飾子が 3 つあります(画面の向き、タッチスクリーン タイプ、入力方法)。
+
+
+ただし、言語はこれらの他の修飾子よりも優先されるため、<code>drawable-port-notouch-12key</code> は排除されます。
+</p>
+
+<p>アプリケーションでのリソースの使用方法については、「<a href="accessing-resources.html">リソースへのアクセス</a>」をご覧ください。</p>
diff --git a/docs/html-intl/intl/ja/guide/topics/resources/runtime-changes.jd b/docs/html-intl/intl/ja/guide/topics/resources/runtime-changes.jd
new file mode 100644
index 0000000..9bce95a
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/resources/runtime-changes.jd
@@ -0,0 +1,281 @@
+page.title=実行時の変更の処理
+page.tags=アクティビティ,ライフサイクル
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>本書の内容</h2>
+  <ol>
+    <li><a href="#RetainingAnObject">構成の変更中にオブジェクトを保持する</a></li>
+    <li><a href="#HandlingTheChange">構成の変更を自分で処理する</a>
+  </ol>
+
+  <h2>関連ドキュメント</h2>
+  <ol>
+    <li><a href="providing-resources.html">リソースの提供</a></li>
+    <li><a href="accessing-resources.html">リソースへのアクセス</a></li>
+    <li><a href="http://android-developers.blogspot.com/2009/02/faster-screen-orientation-change.html">Faster
+        Screen Orientation Change</a></li>
+  </ol>
+</div>
+</div>
+
+<p>端末の構成の中には、実行時に変化するものがあります(画面の向き、キーボードの可用性、言語など)。
+そのような変更が発生すると、Android は実行中の {@link android.app.Activity} を再起動します({@link android.app.Activity#onDestroy()} が呼び出され、その後に{@link
+android.app.Activity#onCreate(Bundle) onCreate()} が呼び出されます)。
+
+再起動の動作は、新しい端末構成に一致する代替リソースを使用してアプリケーションを自動的にリロードすることで、アプリケーションを新しい構成に適応させることを目的としています。
+
+</p>
+
+<p>再起動を適切に処理するには、アクティビティが通常の<a href="{@docRoot}guide/components/activities.html#Lifecycle">アクティビティのライフサイクル</a>を通じて事前の状態を格納することが重要です。その場合、アプリケーションの状態に関するデータを保存できるように、Android はアクティビティを破棄する前に {@link android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()} を呼び出します。
+
+
+
+その後、{@link android.app.Activity#onCreate(Bundle) onCreate()} か {@link
+android.app.Activity#onRestoreInstanceState(Bundle) onRestoreInstanceState()} の際に状態を格納できます。
+</p>
+
+<p>アプリケーション自体がそのままの状態で再起動することをテストするには、アプリケーションでさまざまなタスクを実行中に、構成の変更(画面の向きの変更など)を呼び出す必要があります。
+
+構成の変更を処理したり、ユーザーが電話を着信し、アプリケーション プロセスが破棄されるほど時間が経過してからアプリケーションに戻ったりするような場合には、ユーザーデータや状態を失うことなくいつでもアプリケーションを再起動できるようにする必要があります。
+
+
+アクティビティの状態を格納する方法については、「<a href="{@docRoot}guide/components/activities.html#Lifecycle">アクティビティのライフサイクル</a>」をご覧ください。</p>
+
+<p>ただし、場合によっては、アプリケーションを再起動すると、大量のデータの復元にコストがかかり、操作性が悪くなることがあります。
+そのような場合、次の 2 つの方法で処理できます。
+</p>
+
+<ol type="a">
+  <li><a href="#RetainingAnObject">構成の変更中にオブジェクトを保持する</a>
+  <p>構成の変更時にアクティビティを再起動できますが、ステートフル オブジェクトがアクティビティの新しいインスタンスに移動します。
+</p>
+
+  </li>
+  <li><a href="#HandlingTheChange">構成の変更を自分で処理する</a>
+  <p>特定の構成変更の際に、システムがアクティビティを再起動しないようにしますが、必要に応じてアクティビティをアップデートできるように、構成が変更された場合には、コールバックを受け取ります。
+
+</p>
+  </li>
+</ol>
+
+
+<h2 id="RetainingAnObject">構成の変更中にオブジェクトを保持する</h2>
+
+<p>アクティビティの再起動で大量のデータの復元、ネットワーク接続の再構築、他の負荷のかかる操作の実行が必要になる場合、構成変更のために完全な再起動を実行すると、操作性が悪くなってしまうことがあります。
+
+さらに、システムの {@link
+android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()} コールバックによって保存される {@link android.os.Bundle} を使用して、アクティビティの状態を完全に復元できない場合もあります。&mdash;大きなオブジェクト(ビットマップなど)を扱うためのものではなく、内部のデータをシリアル化してから逆シリアル化を行うため、多くのメモリを消費することになり、構成の変更に時間がかかってしまいます。
+
+
+そのような場合、構成の変更によるアクティビティの再起動の際に、{@link
+android.app.Fragment} を保持することで、再初期化の負担を軽減できます。
+このフラグメントには、保持しておきたいステートフル オブジェクトへの参照を含めることができます。
+</p>
+
+<p>構成変更により Android システムがアクティビティをシャットダウンするとき、保持するためのマークを設定しておくと、アクティビティのフラグメントが破棄されません。
+ステートフル オブジェクトを保持するために、アクティビティにこのようなフラグメントを追加しておくことができます。
+</p>
+
+<p>実行時の構成変更の際に、フラグメントにステートフル オブジェクトを保持するには:</p>
+
+<ol>
+  <li>{@link android.app.Fragment} クラスを拡張し、ステートフル オブジェクトへの参照を宣言します。
+</li>
+  <li>フラグメントを作成するときに、{@link android.app.Fragment#setRetainInstance(boolean)} を呼び出します。
+      </li>
+  <li>フラグメントをアクティビティに追加します。</li>
+  <li>アクティビティの再起動時にフラグメントを取得するには、{@link android.app.FragmentManager} を使用します。
+</li>
+</ol>
+
+<p>次は、フラグメントの定義の例です。</p>
+
+<pre>
+public class RetainedFragment extends Fragment {
+
+    // data object we want to retain
+    private MyDataObject data;
+
+    // this method is only called once for this fragment
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // retain this fragment
+        setRetainInstance(true);
+    }
+
+    public void setData(MyDataObject data) {
+        this.data = data;
+    }
+
+    public MyDataObject getData() {
+        return data;
+    }
+}
+</pre>
+
+<p class="caution"><strong>警告:</strong> オブジェクトの格納が可能な間は、{@link
+android.graphics.drawable.Drawable}、{@link android.widget.Adapter}、{@link android.view.View}、さらには {@link android.content.Context} に関連付けられているその他のオブジェクトのように、{@link android.app.Activity} に結び付いたオブジェクトを渡さないようにしてください。
+
+オブジェクトを渡すと、元のアクティビティ インスタンスのビューやリソースがすべて漏えいしてしまいます
+(リソースが漏えいすると、アプリケーションはリソースを保持しているがガーベジコレクションを実行できず、大量のメモリが失われてしまうことがあります)。
+
+</p>
+
+<p>次に、{@link android.app.FragmentManager} を使用して、フラグメントをアクティビティに追加します。実行時に構成を変更する際にアクティビティを再び起動すると、フラグメントからデータ オブジェクトを取得できます。
+
+次は、アクティビティの定義の例です。</p>
+
+<pre>
+public class MyActivity extends Activity {
+
+    private RetainedFragment dataFragment;
+
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+
+        // find the retained fragment on activity restarts
+        FragmentManager fm = getFragmentManager();
+        dataFragment = (DataFragment) fm.findFragmentByTag(“data”);
+
+        // create the fragment and data the first time
+        if (dataFragment == null) {
+            // add the fragment
+            dataFragment = new DataFragment();
+            fm.beginTransaction().add(dataFragment, “data”).commit();
+            // load the data from the web
+            dataFragment.setData(loadMyData());
+        }
+
+        // the data is available in dataFragment.getData()
+        ...
+    }
+
+    &#64;Override
+    public void onDestroy() {
+        super.onDestroy();
+        // store the data in the fragment
+        dataFragment.setData(collectMyLoadedData());
+    }
+}
+</pre>
+
+<p>この例では、{@link android.app.Activity#onCreate(Bundle) onCreate()} がフラグメントを追加するか、フラグメントへの参照を復元します。さらに、{@link android.app.Activity#onCreate(Bundle) onCreate()} がステートフル オブジェクトをフラグメント インスタンスの内部に格納し、{@link android.app.Activity#onDestroy() onDestroy()} が保持しているフラグメント インスタンス内部のステートフル オブジェクトを更新します。
+
+
+
+</p>
+
+
+
+
+
+<h2 id="HandlingTheChange">構成の変更を自分で処理する</h2>
+
+<p>アプリケーションに特定の構成の変更の際にリソースを更新する必要がなく、パフォーマンスの制限によりアクティビティの再起動を回避する必要がある場合は、構成の変更をアクティビティ自身が処理することを宣言します。そうすることで、システムによってアクティビティが再起動されなくなります。
+<em></em>
+
+</p>
+
+<p class="note"><strong>注:</strong> 構成の変更を自分で処理すると、変更がシステムによって自動的に適用されることがないため、代替リソースの使用が非常に難しくなります。
+
+この手法は、構成の変更による再起動を回避する際の最後の手段として検討する手法です。ほとんどの場合、アプリケーションでの使用は推奨されません。
+</p>
+
+<p>アクティビティで構成の変更を処理することを宣言するには、マニフェスト ファイルの該当する <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 要素を編集し、処理する構成を表す値とともに <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> 属性を配置します。
+
+使用可能な値は、<a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> 属性のドキュメントに一覧が記載されています(一般的には、画面の向きを変更した場合の再起動を回避するには {@code "orientation"} の値を、キーボードの可用性を変更した場合の再起動を回避するには {@code "keyboardHidden"} の値を使用します)。
+
+パイプ記号の {@code |} 文字を使用して区切ることで、属性内に複数の構成値を宣言できます。
+</p>
+
+<p>たとえば、次のマニフェスト コードでは、画面の向きとキーボードの可用性の変更の両方を処理するアクティビティを宣言しています。
+</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"
+          android:configChanges="orientation|keyboardHidden"
+          android:label="@string/app_name">
+</pre>
+
+<p>これで、これらのいずれかの構成が変更された場合でも、{@code MyActivity} が再起動することはなくなりました。代わりに、{@code MyActivity} が {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} への呼び出しを取得します。
+このメソッドには、新しい端末構成を指定する {@link android.content.res.Configuration} オブジェクトが渡されます。
+
+{@link android.content.res.Configuration} のフィールドを読み込むことで新しい構成を判断し、インターフェースに使用するリソースを更新して適切に変更できます。
+
+このメソッドが呼び出されると、アクティビティの {@link android.content.res.Resources} オブジェクトが更新され、新しい構成に基づいたリソースを返します。それにより、システムがアクティビティを再起動しなくても、UI の要素を簡単にリセットできます。
+
+
+</p>
+
+<p class="caution"><strong>警告:</strong> Android 3.2(API レベル 13)以降では、端末の画面の向きを縦から横に切り替えると、<strong>「画面サイズ」も変更されます</strong>。
+
+そのため、API レベル 13 以降で開発を行う場合(<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> 属性と <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> 属性により宣言)、画面の向きによる実行時の再起動を回避するには、{@code "screenSize"} 値と一緒に {@code
+"orientation"} 値を使用する必要があります。
+
+つまり、{@code
+android:configChanges="orientation|screenSize"} を宣言する必要があります。ただし、アプリケーションのターゲットが API レベル 12 以前の場合は、常にアクティビティ自身がこの構成の変更を処理します(Android 3.2 以降の端末で実行している場合でも、この構成の変更によりアクティビティが再起動されることはありません)。
+
+</p>
+
+<p>たとえば、次の {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} の実装により現在の端末の画面の向きがチェックされます。
+</p>
+
+<pre>
+&#64;Override
+public void onConfigurationChanged(Configuration newConfig) {
+    super.onConfigurationChanged(newConfig);
+
+    // Checks the orientation of the screen
+    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
+        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
+    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
+        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
+    }
+}
+</pre>
+
+<p>{@link android.content.res.Configuration} オブジェクトは、変更された構成を除く、現在のすべての構成を表します。
+ほとんどの場合、構成の変更内容を正確に把握する必要はなく、代替の構成を提供するすべてのリソースを処理中の構成に割り当て直します。
+
+たとえば、現在は {@link
+android.content.res.Resources} オブジェクトが更新されたため、任意の {@link android.widget.ImageView} を {@link android.widget.ImageView#setImageResource(int)
+setImageResource()} でリセットでき、新しい構成には最適なリソースが使用されます(「<a href="providing-resources.html#AlternateResources">リソースの提供</a>」をご覧ください)。
+
+</p>
+
+<p>{@link
+android.content.res.Configuration} フィールドの値は、{@link android.content.res.Configuration} クラスの特定の定数に一致する整数であることにご注意ください。
+それぞれのフィールドで使用する定数に関するドキュメントについては、{@link
+android.content.res.Configuration} リファレンスの該当するフィールドをご覧ください。
+</p>
+
+<p class="note"><strong>メモ:</strong> 構成の変更をアクティビティで処理することを宣言すると、代替を提供するすべての要素をリセットする操作が必要になります。
+画面の向きの変更を処理するアクティビティを宣言しており、縦向きと横向きで切り替わる画像がある場合、{@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} の際にそれぞれの要素に各リソースを割り当て直す必要があります。
+
+</p>
+
+<p>これらの構成の変更に基づいてアプリケーションを更新する必要がない場合は、代わりに <em></em>{@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} を実装できません。
+このような場合、構成の変更前に使用していたすべてのリソースがそのまま使用され、アクティビティの再起動を回避した状態となります。
+
+ただし、アプリケーションはいつでもシャットダウンして以前のままの状態で再起動できる状態にしておく必要があるため、通常のアクティビティのライフサイクルでは、状態を保持しない手段としてこの手法を使用しないようにします。
+
+それは、アプリケーションの再起動を回避できない他の構成の変更があるだけでなく、ユーザーがアプリケーションを離れ、ユーザーがアプリケーションに戻る前に破棄されてしまうようなイベントを処理する必要があるためです。
+
+
+</p>
+
+<p>アクティビティで処理できる構成の変更についての詳細は、<a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> のドキュメントと{@link android.content.res.Configuration} クラスをご覧ください。
+</p>
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/controls.jd b/docs/html-intl/intl/ja/guide/topics/ui/controls.jd
new file mode 100644
index 0000000..0bc2063
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/ui/controls.jd
@@ -0,0 +1,90 @@
+page.title=入力コントロール
+parent.title=ユーザー インターフェース
+parent.link=index.html
+@jd:body
+
+<div class="figure" style="margin:0">
+  <img src="{@docRoot}images/ui/ui-controls.png" alt="" style="margin:0" />
+</div>
+
+<p>入力コントロールは、アプリのユーザー インターフェースのインタラクティブなコンポーネントです。Android では、ボタン、テキスト フィールド、シークバー、チェックボックス、ズームボタン、トグルボタンなど UI で使用できるさまざまなコントロールが提供されています。
+
+</p>
+
+<p>UI に入力コントロールを追加することは、<a href="{@docRoot}guide/topics/ui/declaring-layout.html">XML レイアウト</a>に XML 要素を追加するのと同じくらい簡単です。テキスト フィールドとボタンを含むレイアウトの例を次に示します。
+</p>
+
+<pre style="clear:right">
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="horizontal">
+    &lt;EditText android:id="@+id/edit_message"
+        android:layout_weight="1"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:hint="@string/edit_message" />
+    &lt;Button android:id="@+id/button_send"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/button_send"
+        android:onClick="sendMessage" />
+&lt;/LinearLayout>
+</pre>
+
+<p>各入力コントロールでは、特定の一連の入力イベントがサポートされているため、ユーザーがテキストを入力したり、ボタンをタップしたりするときなどに、イベントを処理できます。
+</p>
+
+
+<h2 id="CommonControls">コモン コントロール</h2>
+<p>アプリで使用できるコモン コントロールには、次のようなものがあります。それぞれの使い方の詳細については、各リンクをご覧ください。
+</p>
+
+<p class="note"><strong>注:</strong> Android では、ここにリストされている以外にもいくつかコントロールが提供されています。
+他のコントロールについては、{@link android.widget} パッケージをご確認ください。アプリで、特定の種類の入力コントロールを必要とする場合、独自の <a href="{@docRoot}guide/topics/ui/custom-components.html">カスタム コンポーネント</a> をビルドできます。
+</p>
+
+<table>
+    <tr>
+        <th scope="col">コントロール タイプ</th>
+        <th scope="col">説明</th>
+	<th scope="col">関連クラス</th>
+    </tr>
+    <tr>
+        <td><a href="controls/button.html">ボタン</a></td>
+        <td>ユーザーがアクションを実行するために、押したり、クリックしたりできるプッシュボタン。</td>
+	<td>{@link android.widget.Button Button} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/text.html">テキスト フィールド</a></td>
+        <td>編集できるテキスト フィールド。<code>AutoCompleteTextView</code> ウィジェットを使って、オートコンプリート候補を表示するテキスト入力ウィジェットを作成できます。</td>
+	<td>{@link android.widget.EditText EditText}、{@link android.widget.AutoCompleteTextView}</td>
+    </tr>
+    <tr>
+        <td><a href="controls/checkbox.html">チェックボックス</a></td>
+        <td>ユーザーが切り替えることができる、オン、オフスイッチ。相互に排他的ではない選択可能なオプションのグループをユーザーに表示するときは、チェックボックスを使ってください。</td>
+	<td>{@link android.widget.CheckBox CheckBox} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/radiobutton.html">ラジオボタン</a></td>
+        <td>グループで選択できるオプションは 1 つのみであることを除き、チェックボックスと同様です。</td>
+	<td>{@link android.widget.RadioGroup RadioGroup} 
+	<br>{@link android.widget.RadioButton RadioButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/togglebutton.html" style="white-space:nowrap">トグルボタン</a></td>
+        <td>ライト インジケーター付きの、オン、オフボタン。</td>
+	<td>{@link android.widget.ToggleButton ToggleButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/spinner.html">スピナー</a></td>
+        <td>ユーザーが一連の値から 1 つを選択できるドロップダウン リスト。</td>
+	<td>{@link android.widget.Spinner Spinner} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/pickers.html">ピッカー</a></td>
+        <td>上下のボタンを使うか、スワイプして、1 つの値を選択するためのダイアログ。日付(月、日、年)の値を入力するには <code>DatePicker</code>code&gt; ウィジェットを使い、時刻(時間、分、午前または午後)の値を入力するには <code>TimePicker</code> ウィジェットを使います。これにより、ユーザーのロケールが自動的に書式設定されます。</td>
+	<td>{@link android.widget.DatePicker}、{@link android.widget.TimePicker}</td>
+    </tr>
+</table>
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/declaring-layout.jd b/docs/html-intl/intl/ja/guide/topics/ui/declaring-layout.jd
new file mode 100644
index 0000000..b0e9c03
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/ui/declaring-layout.jd
@@ -0,0 +1,492 @@
+page.title=レイアウト
+page.tags=view,viewgroup
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>本書の内容</h2>
+<ol>
+  <li><a href="#write">XML の記述</a></li>
+  <li><a href="#load">XML リソースの読み込み</a></li>
+  <li><a href="#attributes">属性</a>
+    <ol>
+      <li><a href="#id">ID</a></li>
+      <li><a href="#layout-params">レイアウト パラメータ</a></li>
+    </ol>
+  </li>
+  <li><a href="#Position">レイアウトの位置</a></li>
+  <li><a href="#SizePaddingMargins">サイズ、パディング、マージン</a></li>
+  <li><a href="#CommonLayouts">共通レイアウト</a></li>
+  <li><a href="#AdapterViews">アダプタを使ったレイアウトをビルドする</a>
+    <ol>
+      <li><a href="#FillingTheLayout">データを使ったアダプタビューを書き込む</a></li>
+      <li><a href="#HandlingUserSelections">クリック イベントを処理する</a></li>
+    </ol>
+  </li>
+</ol>
+
+  <h2>キークラス</h2>
+  <ol>
+    <li>{@link android.view.View}</li>
+    <li>{@link android.view.ViewGroup}</li>
+    <li>{@link android.view.ViewGroup.LayoutParams}</li>
+  </ol>
+
+  <h2>関連ドキュメント</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/firstapp/building-ui.html">簡単なユーザー インターフェースをビルドする</a>
+</li> </div>
+</div>
+
+<p>レイアウトでは、<a href="{@docRoot}guide/components/activities.html">アクティビティ</a>や<a href="{@docRoot}guide/topics/appwidgets/index.html">アプリ ウィジェット</a>の UI のような、ユーザー インターフェースの視覚的構造が定義されます。次の 2 つの方法でレイアウトを宣言できます。
+</p>
+<ul>
+<li><strong>XML で UI 要素を宣言する</strong>。Android では、ウィジェットやレイアウトなどの View クラスとサブクラスに対応する単純な XML ボキャブラリが提供されます。
+</li>
+<li><strong>実行時にレイアウト要素のインスタンスを作成する</strong>。アプリケーションで View と ViewGroup オブジェクトを作成できます。また、プログラムを使ってプロパティを操作することもできます。
+ </li>
+</ul>
+
+<p>Android フレームワークでは、アプリケーション UI の宣言と管理に、これらのいずれかのメソッドまたは両方のメソッドを柔軟に使うことができます。たとえば、レイアウトに表示されるスクリーン要素やそのプロパティを含む、アプリケーションのデフォルト レイアウトを XML で宣言できます。スクリーン オブジェクトの状態を変更するコードをアプリケーション内で追加できます(実行時の XML での宣言を含む)。 </p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <ul>
+  <li><a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin for Eclipse</a> では、XML ファイルを開いて [<strong>レイアウト</strong>] タブを選択すると、XML のレイアウト プレビューが提供されます。
+
+</li>
+  <li>レイアウトのデバッグに、<a href="{@docRoot}tools/debugging/debugging-ui.html#hierarchyViewer">Hierarchy Viewer</a> ツールを使うこともできます。このツールでは、レイアウト プロパティ値の表示、パディングやマージンのインジケーターを使ったワイヤーフレームの描画、エミュレータや端末でデバッグする間のレンダリングされた全画面表示が提供されます。
+
+
+
+</li>
+  <li><a href="{@docRoot}tools/debugging/debugging-ui.html#layoutopt">layoutopt</a> ツールを使うと、効率性の低下やその他の問題について、レイアウトや階層を素早く解析できます。
+</li>
+</div>
+</div>
+
+<p>XML で UI を宣言する利点は、動作を制御するコードとアプリケーションの表示をうまく切り離すことができる点です。UI の記述は、アプリケーション コード外にあるため、ソースコードの変更や再コンパイルをすることなく、記述を修正したり改良したりできます。たとえば、異なる画面の向き、端末の画面サイズ、言語に対して XML レイアウトを作成できます。XML でレイアウトを宣言すると、UI の構造を簡単に視覚化できるため、問題のデバッグも簡単です。そのため、本書では XML でレイアウトを宣言する方法を中心に説明しています。実行時に View オブジェクトのインスタンスを作成することに関心がある場合は、{@link android.view.ViewGroup} と {@link android.view.View} クラス参照をご覧ください。
+
+</p>
+
+<p>通常、UI 要素を宣言する XML ボキャブラリは、クラスとメソッドの構造と命名に厳密に従っており、要素名はクラス名に、属性名はメソッドに対応しています。実際、ほとんどの場合、直接的に対応しているため、クラスメソッドに対応する XML 属性を推測したり、与えられた XML 要素に対応するクラスを推測したりできます。ただし、すべてのボキャブラリが同一とは限りません。場合によっては、命名が若干異なります。たとえば、EditText 要素には、<code>EditText.setText()</code> に対応する <code>text</code> 属性があります。
+
+ </p>
+
+<p class="note"><strong>ヒント:</strong> 異なるレイアウト タイプの詳細については、<a href="{@docRoot}guide/topics/ui/layout-objects.html">共通レイアウト オブジェクト</a>をご覧ください。
+また、<a href="{@docRoot}resources/tutorials/views/index.html">Hello Views</a> のチュートリアル ガイドには、さまざまなレイアウトのビルドに関するチュートリアルがあります。
+</p>
+
+<h2 id="write">XML の記述</h2>
+
+<p>Android の XML ボキャブラリを使って、HTML でウェブページを作成するのと同じ方法で(ネストした一連の要素を使って)、UI レイアウトとそれに含まれる画面要素を素早く設計できます。 </p>
+
+<p>各レイアウト ファイルには、必ず 1 つのルート要素が含まれていて、そのルート要素は View または ViewGroup オブジェクトでなくてはなりません。ルート要素を定義すれば、追加のレイアウト オブジェクトやウィジェットを子の要素として追加して、レイアウトを定義するビュー階層を少しずつビルドできます。{@link android.widget.TextView} と {@link android.widget.Button} を保持するために、縦方向の {@link android.widget.LinearLayout} を使用する XML レイアウトの例を次に示します。
+</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:orientation="vertical" >
+    &lt;TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="Hello, I am a TextView" />
+    &lt;Button android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Hello, I am a Button" />
+&lt;/LinearLayout>
+</pre>
+
+<p>XML でレイアウトを宣言した後、そのファイルを Android プロジェクトの <code>res/layout/</code> ディレクトリ内で <code>.xml</code> 拡張子を付けて保存して、正しくコンパイルされるようにします。
+ </p>
+
+<p>レイアウト XML ファイルの構文の詳細については、「<a href="{@docRoot}guide/topics/resources/layout-resource.html">Layout Resources</a>」のドキュメントをご覧ください。</p>
+
+<h2 id="load">XML リソースの読み込み</h2>
+
+<p>アプリケーションをコンパイルすると、各 XML レイアウト ファイルは {@link android.view.View} リソースにコンパイルされます。
+{@link android.app.Activity#onCreate(android.os.Bundle) Activity.onCreate()} コールバックの実装で、アプリケーション コードからレイアウト リソースを読み込んでください。これを行うには、<code>{@link android.app.Activity#setContentView(int) setContentView()}</code> を呼び出し、<code>R.layout.<em>layout_file_name</em></code> の形式でレイアウト リソースへの参照を渡します。たとえば、XML レイアウトが <code>main_layout.xml</code> として保存される場合、次のようにしてアクティビティに読み込みます。
+
+
+
+
+
+</p>
+<pre>
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.main_layout);
+}
+</pre>
+
+<p>アクティビティの <code>onCreate()</code> コールバック メソッドは、アクティビティが起動されるときに、Android フレームワークによって呼び出されます(ライフサイクルに関する説明については、「<a href="{@docRoot}guide/components/activities.html#Lifecycle">アクティビティ</a>」のドキュメントをご覧ください)。
+
+
+</p>
+
+
+<h2 id="attributes">属性</h2>
+
+<p>すべての View と ViewGroup オブジェクトでは、独自のさまざまな XML 属性がサポートされています。一部の属性は、View オブジェクト特有のものですが(たとえば TextView では <code>textSize</code> 属性がサポートされています)、これらの属性はこのクラスを拡張可能な View オブジェクトによっても継承されます。一部は、ルート View クラスから継承されるため、すべての View オブジェクトに共通します(<code>id</code> 属性のような)。
+
+
+
+その他の属性は「レイアウト パラメータ」として考慮され、オブジェクトの親である ViewGroup オブジェクトとして定義された、View オブジェクトの特定のレイアウト方向を記述する属性となります。
+
+</p>
+
+<h3 id="id">ID</h3>
+
+<p>ツリー内で View を一意に識別するために、すべての View オブジェクトには、それに関連付けられた整数の ID があることがあります。アプリケーションがコンパイルされると、この ID は整数として参照されますが、一般的にその ID は <code>id</code> 属性で文字列としてレイアウト XML ファイルに割り当てられます。これは、すべての View オブジェクトに共通の XML 属性で({@link android.view.View} クラスで定義)、非常に頻繁に使用されます。XML タグ内の ID の構文を次に示します。
+
+
+
+
+</p>
+<pre>android:id="&#64;+id/my_button"</pre>
+
+<p>文字列の先頭にあるアットマーク(@)は、その XML パーサーが ID の残りの文字列をパースして展開し、それを ID リソースとして識別する必要があることを示します。
+プラス記号(+)は、それが新しいリソース名で、作成してリソースに追加する(<code>R.java</code> ファイル内で)必要があることを意味しています。
+Android フレームワークによって提供されるその他のさまざまな ID リソースがあります。
+Android リソース ID を参照するときは、プラス記号を使う必要はありませんが、次のように <code>android</code> パッケージ名前空間を追加する必要があります。
+</p>
+<pre>android:id="&#64;android:id/empty"</pre>
+<p><code>android</code> パッケージ名前空間付きの場合、ローカルのリソースクラスからではなく <code>android.R</code> リソースクラスから ID を参照するようになります。
+</p>
+
+<p>ビューを作成してアプリケーションからそれを参照するには、次のような共通のパターンがあります。</p>
+<ol>
+  <li>レイアウト ファイルでビューとウィジェットを定義して、一意の ID を割り当てる。
+<pre>
+&lt;Button android:id="&#64;+id/my_button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="&#64;string/my_button_text"/>
+</pre>
+  </li>
+  <li>次に、View オブジェクトのインスタンスを作成し、それを次のようにレイアウトから取得する(通常は、<code>{@link android.app.Activity#onCreate(Bundle) onCreate()}</code> メソッド内で)。
+
+<pre>
+Button myButton = (Button) findViewById(R.id.my_button);
+</pre>
+  </li>
+</ol>
+<p>View オブジェクトの ID を定義することは、{@link android.widget.RelativeLayout} を作成するときに重要になります。相対レイアウトでは、兄弟ビューは一意の ID で参照される別の兄弟ビューに相対するレイアウトを定義できます。
+
+</p>
+<p>ツリー全体で ID が一意である必要はありませんが、探しているツリーの一部では、一意である必要があります。ほとんどの場合、それはツリー全体になりますが、可能な時に完全に一意になるようにすることが最善です。
+
+</p>
+
+
+<h3 id="layout-params">レイアウト パラメータ</h3>
+
+<p><code>layout_<em>something</em></code> という名前の XML レイアウト属性では、含まれている ViewGroup に適した View に対するレイアウト パラメータが定義されます。
+</p>
+
+<p>すべての ViewGroup クラスでは、{@link
+android.view.ViewGroup.LayoutParams} を拡張するネストされたクラスが実装されます。このサブクラスには、各子ビューのサイズと位置を ViewGroup に合うように定義するプロパティ タイプが含まれています。
+
+図 1 にあるように、親 ViewGroup によって、子 ViewGroup を含む、各子ビューのレイアウト パラメータが定義されます。
+</p>
+
+<img src="{@docRoot}images/layoutparams.png" alt="" />
+<p class="img-caption"><strong>図 1.</strong> 各ビューに関連付けられたレイアウトのパラメータを含むビュー階層の視覚化。
+</p>
+
+<p>すべての LayoutParams サブクラスには、設定値に独自の構文があります。
+それぞれの子の要素では、その親に適した LayoutParams が定義される必要がありますが、自分の子に対して異なる LayoutParams を定義することもできます。
+ </p>
+
+<p>すべての ViewGroup には、幅と高さ(<code>layout_width</code> と <code>layout_height</code>)が含まれていて、各ビューでそれが定義されている必要があります。
+多くの LayoutParams には、省略可能なマージンと境界線も含まれています。
+ <p>
+
+<p>必要になる頻度は少ない可能性はありますが、幅と高さを正確なサイズで指定することもできます。
+ほとんどの場合は、次の定数のいずれかを使って幅や高さを設定します。
+ </p>
+
+<ul>
+  <li><var>wrap_content</var> では、ビューがそのコンテンツに必要な寸法に合わせられます。
+</li>
+  <li><var>match_parent</var> (API レベル 8 以前は <var>fill_parent</var> )では、ビューが親 ViewGroup で許容される最大サイズで表示されます。
+</li>
+</ul>
+
+<p>通常、ピクセルなどの絶対単位でレイアウトの幅と高さを指定することは推奨されません。
+
+密度非依存ピクセル単位(<var>dp</var>)、 <var>wrap_content</var>、
+<var>match_parent</var>などの相対測定を使う方が賢明です。そうすることで、さまざまな端末の画面サイズでアプリケーションが正しく表示されるようになります。使用可能な測定タイプは、「<a href="{@docRoot}guide/topics/resources/available-resources.html#dimension">使用可能なリソース</a>」のドキュメントで定義されています。
+
+
+
+</p>
+
+
+<h2 id="Position">レイアウトの位置</h2>
+   <p>
+   ビューの形状は、矩形です。ビューには、<em>左</em>と<em>上</em>の座標ペアで表される位置と、幅と高さで表される 2 次元があります。
+
+位置と寸法の単位はピクセルです。
+
+   </p>
+
+   <p>
+   {@link android.view.View#getLeft()} と {@link android.view.View#getTop()} メソッドを呼び出してビューの位置を取得できます。
+前者では、左またはビューを表す矩形の X 座標が返されます。
+後者では、上またはビューを表す矩形の Y 座標が返されます。
+これらのメソッドでは、両方とも親に相対するビューの位置が返されます。
+たとえば、<code>getLeft()</code> で 20 が返される場合、そのビューはその直属の親の左端から右に 20 ピクセルの位置にあることを意味します。
+
+
+   </p>
+
+   <p>
+   他にも、{@link android.view.View#getRight()} や {@link android.view.View#getBottom()} といった不要な計算を回避するさまざまな便利なメソッドが提供されています。
+
+   これらのメソッドでは、ビューを表す矩形の右端と下端の座標が返されます。
+たとえば、{@link android.view.View#getRight()} を呼び出すことは、<code>getLeft() + getWidth()</code> の計算と同様です。
+
+   </p>
+
+
+<h2 id="SizePaddingMargins">サイズ、パディング、マージン</h2>
+   <p>
+   ビューのサイズは、幅と高さで示します。実際に、ビューには幅と高さ 2 つの値がペアとして保持されています。
+
+   </p>
+
+   <p>
+   最初のペアは、<em>測定された幅</em>と<em>測定された高さ</em>と呼ばれます。
+これらの寸法で、その親内でのビューの大きさが定義されます。
+測定された寸法は、{@link android.view.View#getMeasuredWidth()} と {@link android.view.View#getMeasuredHeight()} を呼び出して取得できます。
+
+
+   </p>
+
+   <p>
+   2 番目のペアは、単に<em>幅</em>と<em>高さ</em>と呼ばれたり、<em>描画する幅</em>と<em>描画する高さ</em>と呼ばれたりします。
+これらの寸法は、描画時とレイアウト後に、画面上のビューの実サイズを定義するものです。
+
+これらの値は、測定された幅や高さと異なる値にすることもできますが、必須ではありません。
+幅と高さは、{@link android.view.View#getWidth()} と {@link android.view.View#getHeight()} を呼び出して取得できます。
+
+   </p>
+
+   <p>
+   その寸法を測るために、ビューではパディングも考慮されます。パディングは、ビューの上下左右に対し、ピクセルで記述されます。
+
+   パディングを使って、特定のピクセル値でビュー コンテンツのオフセットを指定できます。
+たとえば、左側のパディングが 2 の場合は、左端から 2 ピクセル右にビューのコンテンツが寄せられます。
+パディングは {@link android.view.View#setPadding(int, int, int, int)} メソッドを使って設定でき、{@link android.view.View#getPaddingLeft()}、{@link android.view.View#getPaddingTop()}、{@link android.view.View#getPaddingRight()}、{@link android.view.View#getPaddingBottom()} を呼び出してクエリできます。
+
+
+
+   </p>
+
+   <p>
+   ビューではパディングを定義できますが、マージンについてはサポートされていません。
+ただし、ViewGroup ではそのようなサポートが提供されています。詳細については、{@link android.view.ViewGroup} と {@link android.view.ViewGroup.MarginLayoutParams} をご覧ください。
+
+
+   </p>
+
+   <p>寸法の詳細については、<a href="{@docRoot}guide/topics/resources/more-resources.html#Dimension">寸法の値</a>をご覧ください。
+
+   </p>
+
+
+
+
+
+
+<style type="text/css">
+div.layout {
+  float:left;
+  width:200px;
+  margin:0 0 20px 20px;
+}
+div.layout.first {
+  margin-left:0;
+  clear:left;
+}
+</style>
+
+
+
+
+<h2 id="CommonLayouts">共通レイアウト</h2>
+
+<p>{@link android.view.ViewGroup} クラスの各サブクラスでは、ビュー内でネストするビューを表示する一意の方法が提供されます。
+Android プラットフォームにビルドされる共通のレイアウト タイプの一部を以下に示します。
+</p>
+
+<p class="note"><strong>注:</strong> 別のレイアウト内で 1 つ以上のレイアウトをネストして UI を設計できますが、レイアウトの階層はできる限り浅くしておくようにしてください。
+
+ネストが浅いレイアウトの場合、レイアウトの描画がより速くなります。深いビュー階層より、ワイドなビュー階層の方がより良いと言えます。
+</p>
+
+<!--
+<h2 id="framelayout">FrameLayout</h2>
+<p>{@link android.widget.FrameLayout FrameLayout} is the simplest type of layout
+object. It's basically a blank space on your screen that you can
+later fill with a single object &mdash; for example, a picture that you'll swap in and out.
+All child elements of the FrameLayout are pinned to the top left corner of the screen; you cannot
+specify a different location for a child view. Subsequent child views will simply be drawn over
+previous ones,
+partially or totally obscuring them (unless the newer object is transparent).
+</p>
+-->
+
+
+<div class="layout first">
+  <h4><a href="layout/linear.html">線形レイアウト</a></h4>
+  <a href="layout/linear.html"><img src="{@docRoot}images/ui/linearlayout-small.png" alt="" /></a>
+  <p>子を横方向または縦方向の 1 行にまとめるレイアウト。ウィンドウの長さが画面の長さを超える場合は、スクロールバーが作成されます。
+</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/relative.html">相対レイアウト</a></h4>
+  <a href="layout/relative.html"><img src="{@docRoot}images/ui/relativelayout-small.png" alt="" /></a>
+  <p>たとえば子 A を子 B の左になど、それぞれの子オブジェクトの位置を相対して指定したり、親の上に揃えてなど、親に相対して指定したりできます。
+</p>
+</div>
+
+<div class="layout">
+  <h4><a href="{@docRoot}guide/webapps/webview.html">ウェブビュー</a></h4>
+  <a href="{@docRoot}guide/webapps/webview.html"><img src="{@docRoot}images/ui/webview-small.png" alt="" /></a>
+  <p>ウェブページを表示します。</p>
+</div>
+
+
+
+
+<h2 id="AdapterViews" style="clear:left">アダプタを使ったレイアウトをビルドする</h2>
+
+<p>レイアウトのコンテンツが動的または事前設定されていないとき、{@link android.widget.AdapterView} のサブクラスのレイアウトを使って、実行時にビューでレイアウトを設定できます。
+{@link android.widget.AdapterView} クラスのサブクラスでは、{@link android.widget.Adapter} を使ってそのレイアウトにデータがバインドされます。
+
+{@link android.widget.Adapter} はデータソースと {@link android.widget.AdapterView} レイアウト間の仲介として動作します。{@link android.widget.Adapter} によって、配列やデータベース クエリのようなソースからデータが取得され、各エントリが {@link android.widget.AdapterView} レイアウトに追加できるビューに変換されます。
+
+
+</p>
+
+<p>アダプタでサポートされている共通レイアウトには次が含まれます。</p>
+
+<div class="layout first">
+  <h4><a href="layout/listview.html">リストビュー</a></h4>
+  <a href="layout/listview.html"><img src="{@docRoot}images/ui/listview-small.png" alt="" /></a>
+  <p>スクロール可能な 1 列のリストが表示されます。</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/gridview.html">グリッドビュー</a></h4>
+  <a href="layout/gridview.html"><img src="{@docRoot}images/ui/gridview-small.png" alt="" /></a>
+  <p>スクロール可能な列と行のグリッドが表示されます。</p>
+</div>
+
+
+
+<h3 id="FillingTheLayout" style="clear:left">データを使ったアダプタビューを書き込む</h3>
+
+<p>{@link android.widget.AdapterView} インスタンスを {@link android.widget.Adapter} にバインドして、{@link android.widget.ListView} や {@link android.widget.GridView} などの {@link android.widget.AdapterView} を入力できます。外部ソースのデータが取得され、各データエントリを表す {@link
+android.view.View} が作成されます。
+
+</p>
+
+<p>Android ではさまざまな種類のデータの取得と {@link android.widget.AdapterView} のビューのビルドに役立つ {@link android.widget.Adapter} のサブクラスがいくつか提供されます。
+最も一般的なアダプタは次の 2 つです。
+</p>
+
+<dl>
+  <dt>{@link android.widget.ArrayAdapter}</dt>
+    <dd>データソースが配列の場合に、このアダプタを使います。デフォルトでは、{@link
+android.widget.ArrayAdapter} によって各アイテムで {@link
+java.lang.Object#toString()} が呼び出され、そのコンテンツが {@link
+android.widget.TextView} に配置されることで、各配列アイテムのビューが作成されます。
+      <p>たとえば、{@link
+android.widget.ListView} に表示する文字列の配列がある場合、コンストラクタを使って新しい {@link android.widget.ArrayAdapter} を初期化して、各文字列と文字列配列のレイアウトを指定します。
+</p>
+<pre>
+ArrayAdapter&lt;String> adapter = new ArrayAdapter&lt;String>(this,
+        android.R.layout.simple_list_item_1, myStringArray);
+</pre>
+<p>このコンストラクタの引数を次に示します。</p>
+<ul>
+  <li>アプリの {@link android.content.Context}</li>
+  <li>配列の各文字列に対して {@link android.widget.TextView} を含むレイアウト</li>
+  <li>文字列配列</li>
+</ul>
+<p>次に、{@link android.widget.ListView} で {@link android.widget.ListView#setAdapter setAdapter()} を呼び出します。
+</p>
+<pre>
+ListView listView = (ListView) findViewById(R.id.listview);
+listView.setAdapter(adapter);
+</pre>
+
+      <p>各アイテムの概観をカスタマイズするには、自分の配列内のオブジェクトに {@link
+java.lang.Object#toString()} メソッドをオーバーライドします。または、たとえば各配列アイテムに {@link android.widget.ImageView} が必要な場合など、{@link android.widget.TextView} 以外の各アイテムの表示を作成するには、{@link
+android.widget.ArrayAdapter} クラスを拡張し、{@link android.widget.ArrayAdapter#getView
+getView()} をオーバーライドして、各アイテムに必要なビュータイプが返されるようにします。
+
+</p>
+
+</dd>
+
+  <dt>{@link android.widget.SimpleCursorAdapter}</dt>
+    <dd>{@link android.database.Cursor} から取得されたデータの場合は、このアダプタを使います。{@link android.widget.SimpleCursorAdapter} を使う場合は、{@link android.database.Cursor} で各行に使うレイアウトを指定して、{@link android.database.Cursor} のどの列をレイアウトのビューに挿入するのかを指定してください。
+
+
+たとえば、人の名前と電話番号のリストを作成する場合は、それぞれの人の行と、その名前と番号の列を含む {@link
+android.database.Cursor} を返すクエリを実行します。
+
+次に、それぞれの結果に対して {@link
+android.database.Cursor} のどの列をレイアウトに含めるかを指定する文字列配列と、各列が配置されるべき対応するビューを指定する整数配列を作成します。
+</p>
+<pre>
+String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME,
+                        ContactsContract.CommonDataKinds.Phone.NUMBER};
+int[] toViews = {R.id.display_name, R.id.phone_number};
+</pre>
+<p>{@link android.widget.SimpleCursorAdapter} のインスタンスを作成するとき、各結果に使うレイアウト、結果を含む {@link android.database.Cursor}、次の 2 つの配列を渡します。
+</p>
+<pre>
+SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
+        R.layout.person_name_and_number, cursor, fromColumns, toViews, 0);
+ListView listView = getListView();
+listView.setAdapter(adapter);
+</pre>
+<p>次に、{@link android.widget.SimpleCursorAdapter} によって、対応する {@code toViews} ビューに各 {@code
+fromColumns} アイテムを挿入して提供されたレイアウトを使って {@link android.database.Cursor} で各行のビューが作成されます。
+</p>.</dd>
+</dl>
+
+
+<p>アプリケーションのライフサイクル中に、アダプタによって読み取られる基礎となるデータを変更する場合は、{@link android.widget.ArrayAdapter#notifyDataSetChanged()} を呼び出してください。
+これによって、データが変更されたアタッチされたビューが通知され、それ自体を更新する必要があることが通知されます。
+</p>
+
+
+
+<h3 id="HandlingUserSelections">クリック イベントを処理する</h3>
+
+<p>{@link android.widget.AdapterView.OnItemClickListener} インターフェースを実装して {@link android.widget.AdapterView} の各アイテムでのクリック イベントに応答できます。
+次に例を示します。</p>
+
+<pre>
+// Create a message handling object as an anonymous class.
+private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
+    public void onItemClick(AdapterView parent, View v, int position, long id) {
+        // Do something in response to the click
+    }
+};
+
+listView.setOnItemClickListener(mMessageClickedHandler);
+</pre>
+
+
+
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/ja/guide/topics/ui/dialogs.jd
new file mode 100644
index 0000000..358fc30
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/ui/dialogs.jd
@@ -0,0 +1,798 @@
+page.title=ダイアログ
+page.tags=alertdialog,dialogfragment
+
+@jd:body
+
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>本書の内容</h2>
+<ol>
+  <li><a href="#DialogFragment">Dialog Fragment を作成する</a></li>
+  <li><a href="#AlertDialog">アラート ダイアログをビルドする</a>
+    <ol>
+      <li><a href="#AddingButtons">ボタンを追加する</a></li>
+      <li><a href="#AddingAList">リストを追加する</a></li>
+      <li><a href="#CustomLayout">カスタム レイアウトを作成する</a></li>
+    </ol>
+  </li>
+  <li><a href="#PassingEvents">ダイアログのホストにイベントを渡す</a></li>
+  <li><a href="#ShowingADialog">ダイアログを表示する</a></li>
+  <li><a href="#FullscreenDialog">全画面でまたは埋め込まれたフラグメントとしてダイアログを表示する</a>
+    <ol>
+      <li><a href="#ActivityAsDialog">大画面でアクティビティをダイアログとして表示する</a></li>
+    </ol>
+  </li>
+  <li><a href="#DismissingADialog">ダイアログを閉じる</a></li>
+</ol>
+
+    <h2>キークラス</h2>
+    <ol>
+      <li>{@link android.app.DialogFragment}</li>
+      <li>{@link android.app.AlertDialog}</li>
+    </ol>
+    
+    <h2>関連ドキュメント</h2>
+    <ol>
+      <li><a href="{@docRoot}design/building-blocks/dialogs.html">ダイアログ デザインのガイド</a></li>
+      <li><a href="{@docRoot}guide/topics/ui/controls/pickers.html">ピッカー</a>(日付ダイアログと時刻ダイアログ)</li>
+    </ol>
+  </div>
+</div>
+
+<p>ダイアログは、ユーザーによる意思決定や追加情報の入力用に表示される小さなウィンドウです。
+ダイアログは全画面に表示されることはなく、通常はユーザーが処理を続ける前にアクションを起こす必要があるモーダル イベントに使用されます。
+</p>
+
+<div class="note design">
+<p><strong>ダイアログ デザイン</strong></p>
+  <p>ダイアログをデザインする方法について(言語に対する推奨を含む)は、<a href="{@docRoot}design/building-blocks/dialogs.html">ダイアログ</a> デザインのガイドをお読みください。
+</p>
+</div>
+
+<img src="{@docRoot}images/ui/dialogs.png" />
+
+<p>{@link android.app.Dialog} クラスは、ダイアログの基本クラスですが、{@link android.app.Dialog} ディレクトリのインスタンスを作成することは避けてください。代わりに、次のいずれかのサブクラスを使用します。
+
+</p>
+<dl>
+  <dt>{@link android.app.AlertDialog}</dt>
+  <dd>タイトル、最大 3 つのボタン、選択可能なアイテムやカスタム レイアウトのリストを表示できるダイアログ。
+</dd>
+  <dt>{@link android.app.DatePickerDialog} または {@link android.app.TimePickerDialog}</dt>
+  <dd>ユーザーが日付または時刻を選択できるようにあらかじめ定義された UI を含むダイアログ。</dd>
+</dl>
+
+<div class="sidebox">
+<h2>ProgressDialog を使用しない</h2>
+<p>Android には、進捗バーを含むダイアログを表示する {@link android.app.ProgressDialog} という別のダイアログ クラスがあります。
+ただし、読み込み中または不確定な進捗状況を表示する必要がある場合は、<a href="{@docRoot}design/building-blocks/progress.html">Progress &amp; Activity</a> のデザイン ガイドラインに従って、レイアウトで {@link android.widget.ProgressBar} を使用してください。
+
+
+</p>
+</div>
+
+<p>これらのクラスでは、ダイアログのスタイルと構造が定義されますが、ダイアログのコンテナとして {@link android.support.v4.app.DialogFragment} を使用してください。{@link android.support.v4.app.DialogFragment} クラスでは、{@link android.app.Dialog} オブジェクトでメソッドを呼び出す代わりに、ダイアログの作成と表示の管理に必要なすべてのコントロールが提供されます。
+
+
+
+</p>
+
+<p>{@link android.support.v4.app.DialogFragment} を使ってダイアログを管理すると、ライフサイクル イベント([<em>戻る</em>] ボタンを押したときや画面を回転したときなど)が正しく処理されます。
+
+{@link
+android.support.v4.app.DialogFragment} クラスを使用すると、従来の {@link
+android.support.v4.app.Fragment} のように、大きな UI で埋め込み可能なコンポーネントとしてダイアログの UI を再利用することもできます(ダイアログ UI を大小の画面で異なって表示させる場合など)。
+
+</p>
+
+<p>このガイドの次のセクションでは、{@link android.app.AlertDialog} オブジェクトと組み合わせて {@link
+android.support.v4.app.DialogFragment} を使用する方法について説明します。
+日付や時刻ピッカーを作成する場合は、「<a href="{@docRoot}guide/topics/ui/controls/pickers.html">Pickers</a>」のガイドをご覧ください。
+</p>
+
+<p class="note"><strong>注:</strong> {@link android.app.DialogFragment} クラスは 元々 Android 3.0(API レベル 11)で追加されたため、このドキュメントでは<a href="{@docRoot}tools/support-library/index.html">サポート ライブラリ</a>と一緒に提供される {@link
+android.support.v4.app.DialogFragment} クラスの使用方法について説明します。
+
+アプリにこのライブラリを追加すると、Android 1.6 以降を実行する端末で、{@link android.support.v4.app.DialogFragment} とその他のさまざまな API を使うことができます。
+
+アプリの最小バージョンで API レベル 11 以降がサポートされている場合、{@link
+android.app.DialogFragment} のフレームワーク バージョンを使用できますが、このドキュメントのリンクはサポート ライブラリ API 向けであることにご注意ください。
+
+サポート ライブラリを使用するときは、<code>android.app.DialogFragment</code> <em>ではなく</em>、<code>android.support.v4.app.DialogFragment</code> クラス をインポートしてください。
+
+</p>
+
+
+<h2 id="DialogFragment">Dialog Fragment を作成する</h2>
+
+<p>{@link android.support.v4.app.DialogFragment} を拡張して {@link android.support.v4.app.DialogFragment#onCreateDialog
+onCreateDialog()} コールバック メソッドで {@link android.app.AlertDialog} を作成することで、さまざまなダイアログ デザイン(カスタム レイアウトや<a href="{@docRoot}design/building-blocks/dialogs.html">ダイアログ</a>のデザインガイドで説明されているものを含む)を実現できます。
+
+
+
+</p>
+
+<p>{@link android.support.v4.app.DialogFragment} で管理される基本的な {@link android.app.AlertDialog} を次に示します。
+</p>
+
+<pre>
+public class FireMissilesDialogFragment extends DialogFragment {
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Use the Builder class for convenient dialog construction
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // FIRE ZE MISSILES!
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // User cancelled the dialog
+                   }
+               });
+        // Create the AlertDialog object and return it
+        return builder.create();
+    }
+}
+</pre>
+
+<div class="figure" style="width:290px;margin:0 0 0 20px">
+<img src="{@docRoot}images/ui/dialog_buttons.png" alt="" />
+<p class="img-caption"><strong>図 1</strong> 
+メッセージと 2 つのアクション ボタンを含むダイアログ</p>
+</div>
+
+<p>このクラスのインスタンスを作成してオブジェクトで {@link
+android.support.v4.app.DialogFragment#show show()} を呼び出すと、図 1 のようなダイアログが表示されます。
+</p>
+
+<p>次のセクションでは、{@link android.app.AlertDialog.Builder} API を使ったダイアログの作成について詳細を説明します。
+</p>
+
+<p>ダイアログの複雑さに応じて、{@link android.support.v4.app.DialogFragment} ですべての基本的な<a href="{@docRoot}guide/components/fragments.html#Lifecycle">フラグメントのライフサイクル メソッド</a>を含む、他のさまざまなコールバック メソッドを実装できます。
+
+
+
+
+
+
+
+<h2 id="AlertDialog">アラート ダイアログをビルドする</h2>
+
+
+<p>{@link android.app.AlertDialog} クラスを使って、さまざまなダイアログ デザインをビルドできます。ほとんどの場合、必要なダイアログ クラスはこれだけです。図 2 のように、アラート ダイアログには 3 つの領域があります。
+
+</p>
+
+<div class="figure" style="width:311px;margin-top:0">
+<img src="{@docRoot}images/ui/dialogs_regions.png" alt="" style="margin-bottom:0" />
+<p class="img-caption"><strong>図 2.</strong> ダイアログのレイアウト。</p>
+</div>
+
+<ol>
+<li><b>タイトル</b>
+  <p>この領域は省略可能で、コンテンツ エリアが詳細メッセージ、リスト、カスタム レイアウトで占有されている場合にのみ使う必要があります。
+単純なメッセージや質問(図 1 にあるダイアログなど)を記述する場合は、タイトルは必要ありません。
+</li>
+<li><b>コンテンツ エリア</b>
+  <p>メッセージ、リスト、その他のカスタム レイアウトを表示できます。</p></li>
+<li><b>アクション ボタン</b>
+  <p>1 つのダイアログ内に置くアクション ボタンは、3 つ以内にする必要があります。</p></li>
+</ol>
+
+<p>{@link android.app.AlertDialog.Builder} クラスでは、カスタム レイアウトなど、これらの種類のコンテンツを含む {@link android.app.AlertDialog} を作成できます。
+
+</p>
+
+<p>{@link android.app.AlertDialog} をビルドするには: </p>
+
+<pre>
+<b>// 1. Instantiate an {@link android.app.AlertDialog.Builder} with its constructor</b>
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+
+<b>// 2. Chain together various setter methods to set the dialog characteristics</b>
+builder.setMessage(R.string.dialog_message)
+       .setTitle(R.string.dialog_title);
+
+<b>// 3. Get the {@link android.app.AlertDialog} from {@link android.app.AlertDialog.Builder#create()}</b>
+AlertDialog dialog = builder.create();
+</pre>
+
+<p>次のトピックでは、{@link android.app.AlertDialog.Builder} クラスを使ってさまざまなダイアログの属性を定義する方法を示します。
+</p>
+
+
+
+
+<h3 id="AddingButtons">ボタンを追加する</h3>
+
+<p>図 2 のようなアクション ボタンを追加するには、{@link android.app.AlertDialog.Builder#setPositiveButton setPositiveButton()} と {@link android.app.AlertDialog.Builder#setNegativeButton setNegativeButton()} メソッドを呼び出します。
+
+</p>
+
+<pre style="clear:right">
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+// Add the buttons
+builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User clicked OK button
+           }
+       });
+builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User cancelled the dialog
+           }
+       });
+// Set other dialog properties
+...
+
+// Create the AlertDialog
+AlertDialog dialog = builder.create();
+</pre>
+
+<p><code>set...Button()</code> メソッドには、ボタンのタイトル(<a href="{@docRoot}guide/topics/resources/string-resource.html">文字列リソースで指定</a>)と、ユーザーがボタンを押したときに実行するアクションを定義する {@link android.content.DialogInterface.OnClickListener} が必要です。
+
+
+</p>
+
+<p>追加できるアクション ボタンは、次の 3 つです。</p>
+<dl>
+  <dt>Positive</dt>
+  <dd>アクションを受け入れて続ける場合に使います(「OK」アクション)。</dd>
+  <dt>Negative</dt>
+  <dd>アクションをキャンセルする場合に使います。</dd>
+  <dt>Neutral</dt>
+  <dd>ユーザーがアクションを続けたくない可能性があり、キャンセルしたいとは限らない場合に使います。
+ポジティブ ボタンとネガティブ ボタンの間に表示されます。
+たとえば、「後で通知する」のようなアクションの場合です。</dd> 
+</dl>
+
+<p>各ボタンタイプのいずれか 1 つのみを {@link
+android.app.AlertDialog} に追加できます。つまり、2 つ以上の「ポジティブ」ボタンを置くことはできません。</p>
+
+
+
+<div class="figure" style="width:290px;margin:0 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_list.png" alt="" />
+<p class="img-caption"><strong>図 3</strong> 
+タイトルとリストを含むダイアログ</p>
+</div>
+
+<h3 id="AddingAList">リストを追加する</h3>
+
+<p>{@link android.app.AlertDialog} API で使用できるリストは次の 3 種類です。</p>
+<ul>
+<li>従来の排他的選択リスト</li>
+<li>固定の排他的選択リスト(ラジオボタン)</li>
+<li>固定の複数選択リスト(チェックボックス)</li>
+</ul>
+
+<p>図 3 のように、排他的選択リストを作成するには、{@link android.app.AlertDialog.Builder#setItems setItems()} メソッドを使います。
+</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    builder.setTitle(R.string.pick_color)
+           .setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int which) {
+               // The 'which' argument contains the index position
+               // of the selected item
+           }
+    });
+    return builder.create();
+}
+</pre>
+
+<p>リストは、ダイアログのコンテンツ エリアに表示されるため、ダイアログにはメッセージとリストの両方は表示できません。{@link android.app.AlertDialog.Builder#setTitle setTitle()} でダイアログのタイトルを設定してください。
+
+リストのアイテムを指定するには、{@link
+android.app.AlertDialog.Builder#setItems setItems()} を呼び出して配列を渡します。{@link
+android.app.AlertDialog.Builder#setAdapter setAdapter()} を使ってリストを指定することもできます。
+
+こうすることで、{@link android.widget.ListAdapter} を使って、データベースからなど、ダイナミック データを含むリストを返すことができます。
+</p>
+
+<p>{@link android.widget.ListAdapter} を使ってリストを返すことを選択する場合は、必ず {@link android.support.v4.content.Loader} を使ってコンテンツが非同期で読み込まれるようにします。
+
+この詳細については、「<a href="{@docRoot}guide/topics/ui/declaring-layout.html#AdapterViews">Building Layouts with an Adapter</a>」と「<a href="{@docRoot}guide/components/loaders.html">ローダ</a>」のガイドをご覧ください。
+
+
+</p>
+
+<p class="note"><strong>注:</strong> デフォルトでは、次の固定選択リストのいずれかを使っていない場合、リストアイテムをタップするとダイアログが閉じられます。
+</p>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_checkboxes.png" />
+<p class="img-caption"><strong>図 4.</strong>複数選択アイテムのリスト。
+</p>
+</div>
+
+
+<h4 id="Checkboxes">固定の複数選択または排他的選択リストを追加する</h4>
+
+<p>複数選択アイテム(チェックボックス)または排他的選択アイテム(ラジオボタン)のリストを追加するには、{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} または {@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()} メソッドをそれぞれ使用します。
+
+
+</p>
+
+<p>{@link java.util.ArrayList} で選択されたアイテムを保存する、図 4 にあるような複数選択リストを作成する方法を次に示します。
+
+</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    mSelectedItems = new ArrayList();  // Where we track the selected items
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Set the dialog title
+    builder.setTitle(R.string.pick_toppings)
+    // Specify the list array, the items to be selected by default (null for none),
+    // and the listener through which to receive callbacks when items are selected
+           .setMultiChoiceItems(R.array.toppings, null,
+                      new DialogInterface.OnMultiChoiceClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int which,
+                       boolean isChecked) {
+                   if (isChecked) {
+                       // If the user checked the item, add it to the selected items
+                       mSelectedItems.add(which);
+                   } else if (mSelectedItems.contains(which)) {
+                       // Else, if the item is already in the array, remove it 
+                       mSelectedItems.remove(Integer.valueOf(which));
+                   }
+               }
+           })
+    // Set the action buttons
+           .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // User clicked OK, so save the mSelectedItems results somewhere
+                   // or return them to the component that opened the dialog
+                   ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   ...
+               }
+           });
+
+    return builder.create();
+}
+</pre>
+
+<p>従来のリストとラジオボタンを含むリストでは、「排他的選択」アクションが提供されますが、ユーザーの選択を固定させたい場合は、{@link
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()} を使用してください。つまり、ダイアログを後でもう一度開く場合は、ユーザーの現在の選択を表示し、ラジオボタンを含むリストを作成します。
+
+
+</p>
+
+
+
+
+
+<h3 id="CustomLayout">カスタム レイアウトを作成する</h3>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_custom.png" alt="" />
+<p class="img-caption"><strong>図 5.</strong> カスタム ダイアログのレイアウト。</p>
+</div>
+
+<p>ダイアログでカスタム レイアウトが必要な場合は、レイアウトを作成し、{@link
+android.app.AlertDialog.Builder} オブジェクトで {@link
+android.app.AlertDialog.Builder#setView setView()} を呼び出して {@link android.app.AlertDialog} にそのレイアウトを追加します。
+</p>
+
+<p>デフォルトでは、カスタム レイアウトは、ダイアログ ウィンドウ全体に表示されますが、{@link android.app.AlertDialog.Builder} メソッドを使ってボタンとタイトルを追加できます。
+</p>
+
+<p>以下は、図 5 にあるダイアログのレイアウト ファイルです。</p>
+
+<p style="clear:right" class="code-caption">res/layout/dialog_signin.xml</p>
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+    &lt;ImageView
+        android:src="@drawable/header_logo"
+        android:layout_width="match_parent"
+        android:layout_height="64dp"
+        android:scaleType="center"
+        android:background="#FFFFBB33"
+        android:contentDescription="@string/app_name" />
+    &lt;EditText
+        android:id="@+id/username"
+        android:inputType="textEmailAddress"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="16dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="4dp"
+        android:hint="@string/username" />
+    &lt;EditText
+        android:id="@+id/password"
+        android:inputType="textPassword"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="4dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="16dp"
+        android:fontFamily="sans-serif"
+        android:hint="@string/password"/>
+&lt;/LinearLayout>
+</pre>
+
+<p class="note"><strong>ヒント:</strong> デフォルトでは、{@code "textPassword"} 入力タイプを使うために、{@link android.widget.EditText} 要素を設定すると、フォント ファミリーが monospace に設定されるため、フォント ファミリーを {@code "sans-serif"} に変えて、両方のテキスト フィールドで同じフォント スタイルが使用されるようにしてください。
+
+
+</p>
+
+<p>{@link android.support.v4.app.DialogFragment} でレイアウトをインフレートするには、{@link android.app.Activity#getLayoutInflater()} で {@link android.view.LayoutInflater} を取得して {@link android.view.LayoutInflater#inflate inflate()} を呼び出します。最初のパラメータは、レイアウト リソース ID で、2 番目のパラメータはレイアウトの親ビューです。その後、{@link android.app.AlertDialog#setView setView()} を呼び出してダイアログのレイアウトを配置できます。
+
+
+
+
+
+</p>
+
+<pre>
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Get the layout inflater
+    LayoutInflater inflater = getActivity().getLayoutInflater();
+
+    // Inflate and set the layout for the dialog
+    // Pass null as the parent view because its going in the dialog layout
+    builder.setView(inflater.inflate(R.layout.dialog_signin, null))
+    // Add action buttons
+           .setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // sign in the user ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int id) {
+                   LoginDialogFragment.this.getDialog().cancel();
+               }
+           });      
+    return builder.create();
+}
+</pre>
+
+<div class="note">
+<p><strong>ヒント:</strong> カスタム ダイアログが必要な場合は、{@link android.app.Dialog} API を使う代わりに、{@link android.app.Activity} をダイアログとして表示できます。
+
+アクティビティを作り、<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> マニフェスト要素でそのテーマを {@link android.R.style#Theme_Holo_Dialog Theme.Holo.Dialog} に設定します。
+
+</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.Dialog" >
+</pre>
+<p>これだけです。これで、アクティビティは全画面でなく、ダイアログ ウィンドウに表示されるようになります。</p>
+</div>
+
+
+
+<h2 id="PassingEvents">ダイアログのホストにイベントを渡す</h2>
+
+<p>ユーザーがダイアログのアクション ボタンのいずれかをタップするか、そのリストからアイテムを選択すると、{@link android.support.v4.app.DialogFragment} によって必要なアクションが実行される場合がありますが、ダイアログを開くアクティビティやフラグメントにイベントを配信したい場合もよくあります。
+
+
+これを行うには、クリック イベントの各タイプのメソッドでインターフェースを定義します。次に、ダイアログからアクション イベントを受け取るホスト コンポーネントでインターフェースを実装します。
+
+</p>
+
+<p>ホスト アクティビティにイベントを配信するインターフェースを定義する {@link android.support.v4.app.DialogFragment} を次に示します。
+</p>
+
+<pre>
+public class NoticeDialogFragment extends DialogFragment {
+    
+    /* The activity that creates an instance of this dialog fragment must
+     * implement this interface in order to receive event callbacks.
+     * Each method passes the DialogFragment in case the host needs to query it. */
+    public interface NoticeDialogListener {
+        public void onDialogPositiveClick(DialogFragment dialog);
+        public void onDialogNegativeClick(DialogFragment dialog);
+    }
+    
+    // Use this instance of the interface to deliver action events
+    NoticeDialogListener mListener;
+    
+    // Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
+    &#64;Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        // Verify that the host activity implements the callback interface
+        try {
+            // Instantiate the NoticeDialogListener so we can send events to the host
+            mListener = (NoticeDialogListener) activity;
+        } catch (ClassCastException e) {
+            // The activity doesn't implement the interface, throw exception
+            throw new ClassCastException(activity.toString()
+                    + " must implement NoticeDialogListener");
+        }
+    }
+    ...
+}
+</pre>
+
+<p>ダイアログをホスティングするアクティビティによって、ダイアログ フラグメントのコンストラクタを使ってダイアログのインスタンスが作成され、{@code NoticeDialogListener} インターフェースの実装によってダイアログのイベントが受信されます。
+
+</p>
+
+<pre>
+public class MainActivity extends FragmentActivity
+                          implements NoticeDialogFragment.NoticeDialogListener{
+    ...
+    
+    public void showNoticeDialog() {
+        // Create an instance of the dialog fragment and show it
+        DialogFragment dialog = new NoticeDialogFragment();
+        dialog.show(getSupportFragmentManager(), "NoticeDialogFragment");
+    }
+
+    // The dialog fragment receives a reference to this Activity through the
+    // Fragment.onAttach() callback, which it uses to call the following methods
+    // defined by the NoticeDialogFragment.NoticeDialogListener interface
+    &#64;Override
+    public void onDialogPositiveClick(DialogFragment dialog) {
+        // User touched the dialog's positive button
+        ...
+    }
+
+    &#64;Override
+    public void onDialogNegativeClick(DialogFragment dialog) {
+        // User touched the dialog's negative button
+        ...
+    }
+}
+</pre>
+
+<p>ホスト アクティビティによって、上記の {@link android.support.v4.app.Fragment#onAttach onAttach()} コールバック メソッドで適用される {@code NoticeDialogListener} が実装されるため、ダイアログ フラグメントではインターフェース コールバック メソッドを使ってアクティビティにクリック イベントを配信できます。
+
+
+</p>
+
+<pre>
+public class NoticeDialogFragment extends DialogFragment {
+    ...
+
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Build the dialog and set up the button click handlers
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the positive button event back to the host activity
+                       mListener.onDialogPositiveClick(NoticeDialogFragment.this);
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the negative button event back to the host activity
+                       mListener.onDialogNegativeClick(NoticeDialogFragment.this);
+                   }
+               });
+        return builder.create();
+    }
+}
+</pre>
+
+
+
+<h2 id="ShowingADialog">ダイアログを表示する</h2>
+
+<p>ダイアログを表示する場合、{@link
+android.support.v4.app.DialogFragment} のインスタンスを作成して {@link android.support.v4.app.DialogFragment#show
+show()} を呼び出し、{@link android.support.v4.app.FragmentManager} とダイアログ フラグメントのタグ名を渡します。
+</p>
+
+<p>{@link android.support.v4.app.FragmentActivity} から {@link android.support.v4.app.FragmentActivity#getSupportFragmentManager()} を、または {@link
+android.support.v4.app.Fragment} から {@link
+android.support.v4.app.Fragment#getFragmentManager()} を呼び出して {@link android.support.v4.app.FragmentManager} を取得できます。
+
+次に例を示します。</p>
+
+<pre>
+public void confirmFireMissiles() {
+    DialogFragment newFragment = new FireMissilesDialogFragment();
+    newFragment.show(getSupportFragmentManager(), "missiles");
+}
+</pre>
+
+<p>2 番目の引数 {@code "missiles"} は、固有のタグ名で、システムはこれを使って必要な時にフラグメントの状態を保存して復元します。
+そのタグを使って、{@link android.support.v4.app.FragmentManager#findFragmentByTag
+findFragmentByTag()} を呼び出してフラグメントを操作することもできます。
+</p>
+
+
+
+
+<h2 id="FullscreenDialog">全画面でまたは埋め込まれたフラグメントとしてダイアログを表示する</h2>
+
+<p>場合によっては、UI の一部をダイアログとして表示させ、それ以外の場合には、たとえば端末の画面の大小に応じて、全画面や埋め込まれたフラグメントとして表示させるよう UI を設計できます。
+
+{@link android.support.v4.app.DialogFragment} クラスは、埋め込み可能な {@link
+android.support.v4.app.Fragment} として動作できるため、この柔軟性を実現できます。
+</p>
+
+<p>ただし、この場合は、{@link android.app.AlertDialog.Builder AlertDialog.Builder} やその他の {@link android.app.Dialog} オブジェクトを使ってダイアログをビルドできません。
+{@link android.support.v4.app.DialogFragment} を埋め込み可能にする場合、レイアウトでダイアログの UI を定義し、{@link android.support.v4.app.DialogFragment#onCreateView
+onCreateView()} コールバックでレイアウトを読み込んでください。
+
+
+</p>
+
+<p>ダイアログまたは埋め込み可能なフラグメントのいずれかとして(<code>purchase_items.xml</code> という名前のレイアウトを使って)表示できる {@link android.support.v4.app.DialogFragment} の例を次に示します。
+</p>
+
+<pre>
+public class CustomDialogFragment extends DialogFragment {
+    /** The system calls this to get the DialogFragment's layout, regardless
+        of whether it's being displayed as a dialog or an embedded fragment. */
+    &#64;Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        // Inflate the layout to use as dialog or embedded fragment
+        return inflater.inflate(R.layout.purchase_items, container, false);
+    }
+  
+    /** The system calls this only when creating the layout in a dialog. */
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // The only reason you might override this method when using onCreateView() is
+        // to modify any dialog characteristics. For example, the dialog includes a
+        // title by default, but your custom layout might not need it. So here you can
+        // remove the dialog title, but you must call the superclass to get the Dialog.
+        Dialog dialog = super.onCreateDialog(savedInstanceState);
+        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+        return dialog;
+    }
+}
+</pre>
+
+<p>画面サイズに基づいて、フラグメントをダイアログとしてまたは全画面の UI として表示するかどうかを決めるコードの一例も示します。
+</p>
+
+<pre>
+public void showDialog() {
+    FragmentManager fragmentManager = getSupportFragmentManager();
+    CustomDialogFragment newFragment = new CustomDialogFragment();
+    
+    if (mIsLargeLayout) {
+        // The device is using a large layout, so show the fragment as a dialog
+        newFragment.show(fragmentManager, "dialog");
+    } else {
+        // The device is smaller, so show the fragment fullscreen
+        FragmentTransaction transaction = fragmentManager.beginTransaction();
+        // For a little polish, specify a transition animation
+        transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
+        // To make it fullscreen, use the 'content' root view as the container
+        // for the fragment, which is always the root view for the activity
+        transaction.add(android.R.id.content, newFragment)
+                   .addToBackStack(null).commit();
+    }
+}
+</pre>
+
+<p>フラグメントのトランザクション実行の詳細については、「<a href="{@docRoot}guide/components/fragments.html">フラグメント</a>」のガイドをご覧ください。
+</p>
+
+<p>この例では、<code>mIsLargeLayout</code> ブール値によって、現在の端末でアプリの大きなレイアウト デザインを使う(その結果、全画面でなく、このフラグメントをダイアログとして表示する)かどうかが指定されます。
+
+この種のブール値を設定する最良の方法は、異なる画面サイズに対して<a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">別のリソース値</a>で<a href="{@docRoot}guide/topics/resources/more-resources.html#Bool">ブールリソース値</a>を宣言することです。
+
+次に、異なる画面サイズのブールリソースを 2 種類示します。
+</p>
+
+<p class="code-caption">res/values/bools.xml</p>
+<pre>
+&lt;!-- Default boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">false&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p class="code-caption">res/values-large/bools.xml</p>
+<pre>
+&lt;!-- Large screen boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">true&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p>アクティビティの {@link android.app.Activity#onCreate onCreate()} メソッド中に、{@code mIsLargeLayout} 値を初期化できます。
+</p>
+
+<pre>
+boolean mIsLargeLayout;
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_main);
+
+    mIsLargeLayout = getResources().getBoolean(R.bool.large_layout);
+}
+</pre>
+
+
+
+<h3 id="ActivityAsDialog">大画面でアクティビティをダイアログとして表示する</h3>
+
+<p>小画面のときにダイアログを全画面の UI として表示するのではなく、大画面のときに {@link android.app.Activity} をダイアログとして表示することで、同じ結果を得ることができます。
+
+どちらの方法を選択するかはアプリのデザインによって異なりますが、アプリが小画面で設計されていて、存在期間が短いアクティビティをダイアログとして示すことでタブレットでの使用感を改善するときには、ほとんどの場合、アクティビティをダイアログとして表示する方法が役立ちます。
+
+
+</p>
+
+<p>大画面のときにのみ、アクティビティをダイアログとして表示するには、{@link android.R.style#Theme_Holo_DialogWhenLarge Theme.Holo.DialogWhenLarge} テーマを <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> マニフェスト要素に適用します。
+
+</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.DialogWhenLarge" >
+</pre>
+
+<p>テーマを使ったアクティビティのスタイル指定についての詳細は、「<a href="{@docRoot}guide/topics/ui/themes.html">Styles and Themes</a>」をご覧ください。</p>
+
+
+
+<h2 id="DismissingADialog">ダイアログを閉じる</h2>
+
+<p>{@link android.app.AlertDialog.Builder} で作成したアクション ボタンのいずれかがタップされると、システムはダイアログを閉じます。
+</p>
+
+<p>また、リストでラジオボタンやチェックボックスが使われている場合を除き、ダイアログ リストでアイテムがタップされると、ダイアログが閉じます。
+それ以外の場合は、{@link
+android.support.v4.app.DialogFragment} で {@link android.support.v4.app.DialogFragment#dismiss()} を呼び出してダイアログを手動で閉じることができます。
+</p>
+
+<p>ダイアログが閉じるときに、特定のアクションを実行する必要がある場合は、{@link
+android.support.v4.app.DialogFragment} で {@link
+android.support.v4.app.DialogFragment#onDismiss onDismiss()} メソッドを実装できます。
+</p>
+
+<p>ダイアログを<em>キャンセル</em>することもできます。これは、ユーザーがタスクを完了せずに、明示的にダイアログを離れたことを示す特別なイベントです。
+ユーザーが [<em>戻る</em>] ボタンを押す、ダイアログ領域外の画面をタップする、または開発者が {@link
+android.app.Dialog} で明示的に {@link android.app.Dialog#cancel()} を呼び出す(ダイアログの [キャンセル] ボタンに応じてなど)場合に実行されます。
+
+</p>
+
+<p>上記の例のように、{@link
+android.support.v4.app.DialogFragment} クラスで {@link android.support.v4.app.DialogFragment#onCancel onCancel()} を実装してキャンセル イベントに応答できます。
+</p>
+
+<p class="note"><strong>注:</strong> システムによって、{@link android.support.v4.app.DialogFragment#onCancel onCancel()} コールバックを呼び出す各イベントで {@link android.support.v4.app.DialogFragment#onDismiss onDismiss()} が呼び出されます。
+
+ただし、{@link android.app.Dialog#dismiss Dialog.dismiss()} や {@link
+android.support.v4.app.DialogFragment#dismiss DialogFragment.dismiss()} を呼び出す場合、システムによって {@link android.support.v4.app.DialogFragment#onDismiss onDismiss()} が呼び出されますが、{@link android.support.v4.app.DialogFragment#onCancel onCancel()} は<em>呼び出されません</em>。
+
+
+通常は、ユーザーがダイアログの<em>ポジティブ</em>ボタンを押すときに、{@link android.support.v4.app.DialogFragment#dismiss dismiss()} を呼び出して、ビューからダイアログが削除されるようにしてください。
+
+</p>
+
+
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/menus.jd b/docs/html-intl/intl/ja/guide/topics/ui/menus.jd
new file mode 100644
index 0000000..7d8090e
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/ui/menus.jd
@@ -0,0 +1,1031 @@
+page.title=メニュー
+parent.title=ユーザー インターフェース
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>本書の内容</h2>
+<ol>
+  <li><a href="#xml">XML でのメニューの定義</a></li>
+  <li><a href="#options-menu">オプション メニューの作成</a>
+    <ol>
+      <li><a href="#RespondingOptionsMenu">クリック イベントを処理する</a></li>
+      <li><a href="#ChangingTheMenu">実行時におけるメニュー アイテムの変更</a></li>
+    </ol>
+  </li>
+  <li><a href="#context-menu">コンテキスト メニューの作成</a>
+    <ol>
+      <li><a href="#FloatingContextMenu">フローティング コンテキスト メニューの作成</a></li>
+      <li><a href="#CAB">コンテキスト アクション モードの使用</a></li>
+    </ol>
+  </li>
+  <li><a href="#PopupMenu">ポップアップ メニューの作成</a>
+    <ol>
+      <li><a href="#PopupEvents">クリック イベントを処理する</a></li>
+    </ol>
+  </li>
+  <li><a href="#groups">メニュー グループの作成</a>
+    <ol>
+      <li><a href="#checkable">オンにできるメニュー アイテムの使用</a></li>
+    </ol>
+  </li>
+  <li><a href="#intents">インテントに基づくメニュー アイテムの追加</a>
+    <ol>
+      <li><a href="#AllowingToAdd">アクティビティを他のメニューに追加できるようにする</a></li>
+    </ol>
+  </li>
+</ol>
+
+  <h2>キークラス</h2>
+  <ol>
+    <li>{@link android.view.Menu}</li>
+    <li>{@link android.view.MenuItem}</li>
+    <li>{@link android.view.ContextMenu}</li>
+    <li>{@link android.view.ActionMode}</li>
+  </ol>
+
+  <h2>関連ドキュメント</h2>
+  <ol>
+    <li><a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a></li>
+    <li><a href="{@docRoot}guide/topics/resources/menu-resource.html">Menu Resource</a></li>
+    <li><a href="http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html">Goodbye to the Menu Button</a>
+</li>
+  </ol>
+</div>
+</div>
+
+<p>メニューは、さまざまなタイプのアプリケーションで共通するユーザー インターフェースです。使い慣れた一貫した操作感を提供するには、{@link android.view.Menu} API を使ってアクティビティでユーザーのアクションとその他のオプションを表示する必要があります。
+
+</p>
+
+<p>Android 3.0(API レベル 11)からは、Android 搭載端末では専用の <em>Menu</em> ボタンを表示する必要はなくなりました。
+この変更により、Android アプリでは従来の 6 アイテムのメニューパネルの依存関係から離れて、共通のユーザー アクションを表示するアクションバーを提供する必要があります。
+
+</p>
+
+<p>一部のメニュー アイテムのデザインと操作感は変わりましたが、一連のアクションとオプションを定義する意味論は、引き続き {@link android.view.Menu} API に基づきます。
+このガイドでは、すべてのバージョンの Android で表示されるメニューやアクションの基本的な 3 タイプを作成する方法について説明します。
+
+</p>
+
+<dl>
+  <dt><strong>オプション メニューとアクションバー</strong></dt>
+    <dd><a href="#options-menu">オプション メニュー</a>は、アクティビティの主なメニュー アイテムのコレクションです。
+ここには、「検索」、「メールの作成」、「設定」のような、アプリにグローバルな影響があるアクションを配置する必要があります。
+
+  <p>Android 2.3 以前のバージョン向けに開発している場合は、ユーザーは <em>Menu</em> ボタンを押してオプション メニューパネルを表示できます。
+</p>
+  <p>Android 3.0 以降の場合、オプション メニューのアイテムは、画面上のアクション アイテムとオーバーフロー オプションの組み合わせで<a href="{@docRoot}guide/topics/ui/actionbar.html">アクションバー</a>に表示されます。
+Android 3.0 からは、<em>Menu</em> ボタンが廃止されたため(一部の端末にはこのボタンがありません)、アクションバーを使ってアクションや他のオプションにアクセスできるよう移行する必要があります。
+
+
+</p>
+  <p><a href="#options-menu">オプション メニューの作成</a>のセクションをご覧ください。</p>
+    </dd>
+    
+  <dt><strong>コンテキスト メニューとコンテキスト アクション モード</strong></dt>
+  
+   <dd>コンテキスト メニューは、ユーザーが要素を長押しクリックするときに表示される<a href="#FloatingContextMenu">フローティング メニュー</a>です。
+ここでは、選択したコンテンツやコンテキスト フレームに影響するアクションが提供されます。
+
+  <p>Android 3.0 以降向けに開発している場合は、<a href="#CAB">コンテキスト アクション モード</a>を使って選択されたコンテンツでのアクションを有効にする必要があります。このモードでは、画面最上部にあるバーで選択されたコンテンツに影響するアクション アイテムが表示され、ユーザーは複数のアイテムを選択できます。
+
+</p>
+  <p><a href="#context-menu">コンテキスト メニューの作成</a>のセクションをご覧ください。</p>
+</dd>
+    
+  <dt><strong>ポップアップ メニュー</strong></dt>
+    <dd>ポップアップ メニューでは、メニューを呼び出すビューに固定された縦方向のリストでアイテムが表示されます。
+特定のコンテンツに関連するアクションの概要を表示したり、コマンドの 2 番目の部分のオプションを表示したりする場合に適しています。
+ポップアップ メニューのアクションは対応するコンテンツに直接影響を<strong>与えない</strong>ようにしてください(そのためにコンテキスト アクションがあります)。
+
+ポップアップ メニューは、アクティビティのコンテンツ領域に関連する拡張されたアクション用です。
+
+  <p><a href="#PopupMenu">ポップアップ メニューの作成</a>のセクションをご覧ください。</p>
+</dd>
+</dl>
+
+
+
+<h2 id="xml">XML でのメニューの定義</h2>
+
+<p>Android では、すべてのメニュータイプに、メニュー アイテムを定義するための標準の XML 形式が提供されます。
+アクティビティのコードでメニューをビルドするのではなく、メニューとそのすべてのアイテムを XML <a href="{@docRoot}guide/topics/resources/menu-resource.html">メニュー リソース</a>で定義してください。
+その際、アクティビティやフラグメントでメニュー リソースをインフレートできます({@link android.view.Menu} オブジェクトとして読み込む)。
+
+</p>
+
+<p>メニュー リソースを使うことは、次のような理由で優れた方法と言えます。</p>
+<ul>
+  <li>XML でメニュー構造の視覚化が簡単になる。</li>
+  <li>メニューのコンテンツを、アプリケーションの振る舞いコードと区別する。</li>
+  <li>別のプラットフォーム バージョン、画面サイズ、その他の構成用に、<a href="{@docRoot}guide/topics/resources/index.html">アプリリソース</a> フレームワークを活用して、代替のメニュー構成を作ることができる。
+</li>
+</ul>
+
+<p>メニューを定義するには、プロジェクトの <code>res/menu/</code> ディレクトリ内で XML ファイルを作成し、次の要素を含むメニューをビルドします。
+</p>
+<dl>
+  <dt><code>&lt;menu></code></dt>
+    <dd>メニュー アイテムのコンテナである {@link android.view.Menu} を定義します。<code>&lt;menu></code> 要素は、ファイルのルートノードである必要があります。また、1 つ以上の <code>&lt;item></code> と <code>&lt;group></code> 要素を持つことができます。
+
+</dd>
+
+  <dt><code>&lt;item></code></dt>
+    <dd>メニューで 1 つのアイテムを表示する {@link android.view.MenuItem} を作成します。この要素には、サブメニューを作成するために、ネストされた <code>&lt;menu></code> 要素を含めることができます。
+</dd>
+    
+  <dt><code>&lt;group></code></dt>
+    <dd>省略可能な {@code &lt;item&gt;} 要素の非表示コンテナ。メニュー アイテムでアクティブ状態や可視性のようなプロパティを共有できるよう、メニュー アイテムを分類できます。
+詳細については、<a href="#groups">メニュー グループの作成</a>のセクションをご覧ください。
+</dd>
+</dl>
+
+
+<p><code>game_menu.xml</code> という名前のメニュー例を次に示します。</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/new_game"
+          android:icon="@drawable/ic_new_game"
+          android:title="@string/new_game"
+          android:showAsAction="ifRoom"/&gt;
+    &lt;item android:id="@+id/help"
+          android:icon="@drawable/ic_help"
+          android:title="@string/help" /&gt;
+&lt;/menu&gt;
+</pre>
+
+<p><code>&lt;item></code> 要素では、アイテムの概観と動作を定義するために使用できるいくつかの属性がサポートされています。
+上記メニューのアイテムには、次の属性が含まれます。</p>
+
+<dl>
+  <dt>{@code android:id}</dt>
+    <dd>ユーザーがアイテムを選択するときに、アプリケーションがそのアイテムを認識できるようにする、アイテム固有のリソース ID。
+</dd>
+  <dt>{@code android:icon}</dt>
+    <dd>アイテムのアイコンとして使用するための、ドローアブルへの参照。</dd>
+  <dt>{@code android:title}</dt>
+    <dd>アイテムのタイトルとして使用するための、文字列への参照。</dd>
+  <dt>{@code android:showAsAction}</dt>
+    <dd>このアイテムが<a href="{@docRoot}guide/topics/ui/actionbar.html">アクションバー</a>のアクション アイテムとして、いつ、どのように表示される必要があるかを指定。</dd>
+</dl>
+
+<p>これらの属性は使用する必要のある最も重要なものですが、他にもさまざまな属性があります。サポートされているすべての属性については、「<a href="{@docRoot}guide/topics/resources/menu-resource.html">Menu Resource</a>」のドキュメントをご覧ください。
+</p>
+
+<p>サブメニューを除くすべてのメニューで、{@code &lt;item&gt;} の子として {@code &lt;menu&gt;} 要素を追加すると、アイテムにサブメニューを追加できます。
+PC アプリケーションのメニューバー(ファイル、編集、表示など)にあるアイテムのように、アプリケーションにトピックで分類できる多くの機能がある場合は、サブメニューが役立ちます。
+
+次に例を示します。</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/file"
+          android:title="@string/file" &gt;
+        &lt;!-- "file" submenu --&gt;
+        &lt;menu&gt;
+            &lt;item android:id="@+id/create_new"
+                  android:title="@string/create_new" /&gt;
+            &lt;item android:id="@+id/open"
+                  android:title="@string/open" /&gt;
+        &lt;/menu&gt;
+    &lt;/item&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>アクティビティでメニューを使うには、{@link android.view.MenuInflater#inflate(int,Menu)
+MenuInflater.inflate()} を使って、メニュー リソースをインフレートする(XML リソースをプログラム可能なオブジェクトに変換する)必要があります。
+次のセクションでは、各メニュー アイテムのメニューをインフレートする方法を説明します。
+</p>
+
+
+
+<h2 id="options-menu">オプション メニューの作成</h2>
+
+<div class="figure" style="width:200px;margin:0">
+  <img src="{@docRoot}images/options_menu.png" height="333" alt="" />
+  <p class="img-caption"><strong>図 1.</strong> Android 2.3 のブラウザでのオプション メニュー。
+</p>
+</div>
+
+<p>オプション メニューでは、「検索」、「メールの作成」、「設定」のような、現在のアクティビティ コンテキストに関連するアクションとその他のオプションを含める必要があります。
+</p>
+
+<p>オプション メニューのアイテムが画面上のどこに表示されるかは、開発対象のアプリケーションのバージョンによって異なります。
+</p>
+
+<ul>
+  <li><strong>Android 2.3.x(API レベル 10)以前</strong> 向けにアプリケーションを開発した場合、ユーザーが <em>Menu</em> ボタンを押すときに、図 1 のように、オプション メニューのコンテンツが画面下部に表示されます。
+
+開いて最初に表示される部分は、最大 6 つのメニュー アイテムで構成されるアイコン メニューです。
+
+7 つ以上のメニュー アイテムが含まれている場合、Android では 6 番目以降のアイテムがオーバーフロー メニューに配置されます。それらのアイテムは、<em>もっと見る</em> を選択して開くことができます。
+
+</li>
+
+  <li><strong>Android 3.0(API レベル 11)以降</strong>向けにアプリケーションを開発した場合、オプション メニューのアイテムは<a href="{@docRoot}guide/topics/ui/actionbar.html">アクションバー</a>に表示されます。
+デフォルトでは、システムによってアクション オーバーフローにすべてのアイテムが配置され、ユーザーはアクションバー右端にあるアクション オーバーフロー アイコンを使ってそのアイテムを表示できます。端末に <em>Menu</em> ボタンがある場合はそのボタンを押して表示できます。
+
+重要なアクションにすみやかにアクセスできるようにするには、対応する {@code &lt;item&gt;} 要素に {@code android:showAsAction="ifRoom"} を追加して、いくつかのアイテムをアクションバーに表示させるようプロモートできます(図 2を参照)。
+
+
+
+ <p>アクション アイテムと他のアクションバーの動作の詳細については、「<a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a>」のガイドをご覧ください。 </p>
+<p class="note"><strong>注:</strong> Android 3.0 以降向けに開発して<em>いない</em>場合でも、同様の効果のために、自分のアクションバー レイアウトをビルドできます。
+アクションバー付きで以前のバージョンの Android をサポートする方法の一例については、<a href="{@docRoot}resources/samples/ActionBarCompat/index.html">アクションバーの互換性</a>のサンプルをご覧ください。
+
+</p>
+</li>
+</ul>
+
+<img src="{@docRoot}images/ui/actionbar.png" alt="" />
+<p class="img-caption"><strong>図 2.</strong> ナビゲーション タブ、カメラ アクション アイテム、アクション オーバーフロー ボタンが表示されている <a href="{@docRoot}resources/samples/HoneycombGallery/index.html">Honeycomb Gallery</a> アプリのアクションバー。
+</p>
+
+<p>{@link android.app.Activity} サブクラスや {@link android.app.Fragment} サブクラスのいずれかからオプション メニューのアイテムを宣言できます。
+アクティビティとフラグメントの両方でオプション メニューのアイテムを宣言する場合、それらは UI に統合されます。まず、アクティビティのアイテムが表示され、次にアクティビティに各フラグメントが追加される順序で各フラグメントのアイテムが表示されます。
+
+
+必要に応じて、移動する必要のある各 {@code &lt;item&gt;} で {@code android:orderInCategory} 属性を使ってメニュー アイテムの順序を並べ替えることができます。
+</p>
+
+<p>アクティビティのオプション メニューを指定するには、{@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} をオーバーライドします(フラグメントは独自の {@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()} コールバックを提供)。
+このメソッドでは、メニュー リソース(<a href="#xml">XML で定義</a>)をコールバックで提供される {@link
+android.view.Menu} にインフレートできます。
+次に例を示します。</p>
+
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu) {
+    MenuInflater inflater = {@link android.app.Activity#getMenuInflater()};
+    inflater.inflate(R.menu.game_menu, menu);
+    return true;
+}
+</pre>
+
+<p>{@link android.view.Menu#add(int,int,int,int)
+add()} を使ってメニュー アイテムを追加し、{@link android.view.MenuItem} API でそのプロパティを修正するために、{@link android.view.Menu#findItem findItem()} でアイテムを取得することもできます。
+</p>
+
+<p>Android 2.3.x 以前向けにアプリケーションを開発した場合、システムは {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} を呼び出し、ユーザーが初めてそのメニューを開いたときにオプション メニューが作成されます。
+Android 3.0 以降向けに開発した場合、アクティビティの開始時にシステムが {@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} を呼び出し、アクションバーにアイテムが表示されるようにします。
+
+</p>
+
+
+
+<h3 id="RespondingOptionsMenu">クリック イベントを処理する</h3>
+
+<p>ユーザーがオプション メニューからアイテムを選択すると(アクションバーのアクション アイテムを含む)、アクティビティの {@link android.app.Activity#onOptionsItemSelected(MenuItem)
+onOptionsItemSelected()} メソッドが呼び出されます。
+このメソッドでは、選択された {@link android.view.MenuItem} が渡されます。{@link android.view.MenuItem#getItemId()} を呼び出してアイテムを識別できます。これにより、メニュー アイテムに対して一意の ID が返されます(メニュー リソースで {@code android:id} 属性を定義するか、{@link android.view.Menu#add(int,int,int,int) add()} メソッドに指定された整数で)。
+
+
+この ID を既知のメニュー アイテムと突き合わせて適切なアクションを実行できます。
+次に例を示します。</p>
+
+<pre>
+&#64;Override
+public boolean onOptionsItemSelected(MenuItem item) {
+    // Handle item selection
+    switch (item.getItemId()) {
+        case R.id.new_game:
+            newGame();
+            return true;
+        case R.id.help:
+            showHelp();
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+    }
+}
+</pre>
+
+<p>メニュー アイテムを正常に処理する場合、{@code true} を返します。メニュー アイテムを処理しない場合は、{@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} のスーパークラスの実装を呼び出す必要があります(デフォルトの実装では fause が返されます)。
+
+</p>
+
+<p>アクティビティにフラグメントが含まれる場合は、システムはまずアクティビティに対して {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} を呼び出し、次に {@code true} が返されるまで、またはすべてのフラグメントが呼び出されるまで、各フラグメントが追加された順序で、各フラグメントに対して呼び出します。
+
+</p>
+
+<p class="note"><strong>ヒント:</strong> Android 3.0 では、{@code android:onClick} 属性を使って、メニュー アイテムのクリックでの動作を XML で定義できます。
+その属性値は、メニューを使ってアクティビティによって定義されるメソッド名である必要があります。
+そのメソッドは、パブリックであり、1 つの {@link android.view.MenuItem} パラメータを使用できる必要があります。システムがこのメソッドを呼び出すと、選択したメニュー アイテムが渡されます。
+
+詳細と例については、「<a href="{@docRoot}guide/topics/resources/menu-resource.html">Menu Resource</a>」のドキュメントをご覧ください。</p>
+
+<p class="note"><strong>ヒント:</strong> アプリケーションに複数のアクティビティが含まれていて、その一部で同じオプション メニューが提供されている場合、{@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()} と {@link android.app.Activity#onOptionsItemSelected(MenuItem)
+onOptionsItemSelected()} メソッドのみを実装するアクティビティを作成することを検討します。
+
+その後、同じオプション メニューを共有する必要のある各アクティビティのこのクラスを拡張します。
+この方法で、メニューの動作を継承するメニュー アクションとそれぞれの子クラスを処理するためのコードを 1 セットで管理できます。子孫アクティビティの 1 つにメニュー アイテムを追加する場合は、そのアクティビティの {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()} をオーバーライドします。
+
+
+元のメニュー アイテムが作成されるように、{@code super.onCreateOptionsMenu(menu)} を呼び出し、{@link
+android.view.Menu#add(int,int,int,int) menu.add()} で新しいメニュー アイテムを追加します。
+各メニュー アイテムのスーパークラスの行動をオーバーライドすることもできます。
+</p>
+
+
+<h3 id="ChangingTheMenu">実行時におけるメニュー アイテムの変更</h3>
+
+<p>システムが {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()} を呼び出した後、入力する {@link android.view.Menu} のインスタンスは残り、何らかの理由でメニューが無効にならない限り、{@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} をもう一度呼び出すことはありません。
+
+ただし、初期のメニュー状態を作成し、アクティビティのライフサイクル中に変更しないという目的の場合に限って、{@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} を使用する必要があります。
+</p>
+
+<p>アクティビティのライフサイクル中に発生するイベントに基づいてオプション メニューを変更する場合は、{@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()} メソッドでそれを実行できます。
+
+このメソッドは、現在存在している {@link android.view.Menu} オブジェクトを渡し、それを編集(アイテムの追加、削除、無効化など)できるようにします。
+
+(フラグメントでも {@link
+android.app.Fragment#onPrepareOptionsMenu onPrepareOptionsMenu()} コールバックが提供されます)。</p>
+
+<p>Android 2.3.x 以前では、ユーザーが <em>Menu</em> ボタンを押してオプション メニューを開くたびに、システムによって {@link
+android.app.Activity#onPrepareOptionsMenu(Menu)
+onPrepareOptionsMenu()} が呼び出されます。
+</p>
+
+<p>Android 3.0 以降では、メニュー アイテムがアクションバーに表示されるときに、オプション メニューが常に開かれるとみなされます。
+イベントが発生し、メニューをアップデートするときは、{@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()} を呼び出して、システムが {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()} を呼び出すようリクエストする必要があります。
+
+</p>
+
+<p class="note"><strong>注:</strong> 現在フォーカスされている {@link android.view.View} に基づいてオプション メニューでアイテムを変更しないでください。
+
+タッチモードの場合(ユーザーがトラックボールやリモコンの矢印ボタンを使うとき)、ビューはフォーカスを取得できないため、オプション メニューのアイテム変更のベースとしてフォーカスを使用しないでください。
+
+{@link
+android.view.View} に状況依存のメニュー アイテムを提供する場合は、<a href="#context-menu">コンテキスト メニュー</a>を使います。</p>
+
+
+
+
+<h2 id="context-menu">コンテキスト メニューの作成</h2>
+
+<div class="figure" style="width:420px;margin-top:-1em">
+  <img src="{@docRoot}images/ui/menu-context.png" alt="" />
+  <p class="img-caption"><strong>図 3.</strong> フローティング コンテキスト メニュー(左)とコンテキスト アクションバー(右)のスクリーンショット
+</p>
+</div>
+
+<p>コンテキスト メニューでは、UI の特定のアイテムやコンテキスト フレームに影響するアクションが提供されます。どのビューでもコンテキスト メニューを提供できますが、ほとんどの場合は、{@link
+android.widget.ListView}、{@link android.widget.GridView}、各アイテムでユーザーが直接実行できるその他のビュー コレクションのアイテムに使用されます。
+
+</p>
+
+<p>コンテキスト アクションを提供するには次の 2 つの方法があります。</p>
+<ul>
+  <li><a href="#FloatingContextMenu">フローティング コンテキスト メニュー</a>で。メニューは、ユーザーが長押しクリックする(押したままにする)と、コンテキスト メニューのサポートを宣言するビュー上で、メニュー アイテムのフローティング リストとして表示されます。
+
+ユーザーは、一度に 1 つのアイテムでコンテキスト アクションを実行できます。
+</li>
+
+  <li><a href="#CAB">コンテキスト アクション モード</a>で。このモードは、選択されたアイテムに影響するアクション アイテムと一緒に画面最上部に<em>コンテキスト アクションバー</em>を表示する {@link android.view.ActionMode} のシステム実装です。
+
+このモードがアクティブなとき、ユーザーは一度に複数のアイテムでアクションを実行できます(アプリで許可されている場合)。
+</li>
+</ul>
+
+<p class="note"><strong>注:</strong> コンテキスト アクション モードは、Android 3.0(API レベル 11)以降で使用可能で、使用可能な場合にコンテキスト アクションを表示するのに適した方法です。
+
+アプリで 3.0 以前のバージョンをサポートする場合、その端末ではフローティング コンテキスト メニューを使う必要があります。
+</p>
+
+
+<h3 id="FloatingContextMenu">フローティング コンテキスト メニューの作成</h3>
+
+<p>フローティング コンテキスト メニューを提供するには: </p>
+<ol>
+  <li>{@link android.app.Activity#registerForContextMenu(View) registerForContextMenu()} を呼び出し、{@link android.view.View} を渡して、コンテキスト メニューに関連付ける必要のある {@link android.view.View} を登録します。
+
+
+  <p>アクティビティで {@link android.widget.ListView} や {@link android.widget.GridView} が使用され、各アイテムに同じコンテキスト メニューを提供する場合、{@link android.widget.ListView} や {@link android.widget.GridView} を {@link
+android.app.Activity#registerForContextMenu(View) registerForContextMenu()} に渡してコンテキスト メニューにすべてのアイテムを登録します。
+
+</p>
+</li>
+
+  <li>{@link android.app.Activity} や {@link android.app.Fragment} に {@link
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()} メソッドを実装します。
+
+  <p>登録されたビューが長押しクリック イベントを受け取ると、システムは {@link
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()} メソッドを呼び出します。
+通常、ここでメニュー リソースをインフレートして、メニュー アイテムを定義します。次に例を示します。
+</p>
+<pre>
+&#64;Override
+public void onCreateContextMenu(ContextMenu menu, View v,
+                                ContextMenuInfo menuInfo) {
+    super.onCreateContextMenu(menu, v, menuInfo);
+    MenuInflater inflater = getMenuInflater();
+    inflater.inflate(R.menu.context_menu, menu);
+}
+</pre>
+
+<p>{@link android.view.MenuInflater} では、<a href="{@docRoot}guide/topics/resources/menu-resource.html">メニュー リソース</a>からコンテキスト メニューをインフレートできます。そのコールバック メソッド パラメータには、ユーザーが選択した {@link android.view.View} と選択されたアイテムに関する追加情報を提供する {@link android.view.ContextMenu.ContextMenuInfo} オブジェクトが含まれます。
+
+
+アクティビティに、それぞれ別のコンテキスト メニューを提供する複数のビューがある場合、これらのパラメータを使ってインフレートするコンテキスト メニューを決定できます。
+
+</p>
+</li>
+
+<li>{@link android.app.Activity#onContextItemSelected(MenuItem)
+onContextItemSelected()} を実装します。
+  <p>ユーザーがメニュー アイテムを選択すると、システムによってこのメソッドが呼び出され、適切なアクションを実行できるようになります。
+次に例を示します。</p>
+
+<pre>
+&#64;Override
+public boolean onContextItemSelected(MenuItem item) {
+    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
+    switch (item.getItemId()) {
+        case R.id.edit:
+            editNote(info.id);
+            return true;
+        case R.id.delete:
+            deleteNote(info.id);
+            return true;
+        default:
+            return super.onContextItemSelected(item);
+    }
+}
+</pre>
+
+<p>{@link android.view.MenuItem#getItemId()} メソッドは、選択されたメニュー アイテムの ID を照会します。<a href="#xml">XML でメニューを定義する</a>のセクションで説明されているように、{@code
+android:id} 属性を使って XML で各メニュー アイテムを割り当てる必要があります。
+
+</p>
+
+<p>メニュー アイテムを正常に処理する場合、{@code true} を返します。メニュー アイテムを処理しない場合は、スーパークラスの実装にメニュー アイテムを渡す必要があります。
+アクティビティにフラグメントが含まれる場合、そのアクティビティは最初にこのコールバックを受け取ります。
+未処理のときにスーパークラスを呼び出すと、システムは {@code true} や {@code false} が返されるまで、各フラグメントのそれぞれのコールバック メソッドに 1 つずつ、各フラグメントが追加された順序でイベントを渡します。
+
+{@link android.app.Activity} と {@code android.app.Fragment} のデフォルトの実装では {@code
+false} が返されるため、未処理のときは常にスーパークラスを呼び出す必要があります。
+</p>
+</li>
+</ol>
+
+
+<h3 id="CAB">コンテキスト アクション モードの使用</h3>
+
+<p>コンテキスト アクション モードは、{@link android.view.ActionMode} のシステム実装で、ユーザーによるコンテキスト アクション実行のための操作に焦点が置かれています。
+ユーザーがアイテムを選択してこのモードを有効にすると、画面の最上部に<em>コンテキスト アクションバー</em>が表示され、現在選択中のアイテムで実行できるアクションが表示されます。
+
+このモードが有効な間は、ユーザーは複数のアイテムを選択したり(許可されている場合)、アイテムを選択解除したり、アクティビティ内を移動し続けたり(許可されている範囲内で)することができます。
+
+ユーザーがすべてのアイテムの選択を解除したり、Back ボタンをしたり、またはバーの左端で <em>Done</em> アクションを選択したりすると、このアクション モードは無効になり、コンテキスト アクションバーは表示されなくなります。
+
+</p>
+
+<p class="note"><strong>注:</strong> コンテキスト アクションバーを<a href="{@docRoot}guide/topics/ui/actionbar.html">アクションバー</a>と関連付ける必要はありません。
+コンテキスト アクションバーが、視覚的にアクションバーの位置にかかる場合でも、個別に操作できます。
+
+</p>
+
+<p>Android 3.0(API レベル 11)以降向けに開発中の場合、通常は<a href="#FloatingContextMenu">フローティング コンテキスト メニュー</a>ではなく、コンテキスト アクション モードを使ってコンテキスト アクションを表示します。
+</p>
+
+<p>コンテキスト アクションを提供するビューでは、通常は次の 2 つのイベントのいずれかまたは両方で、コンテキスト アクションを呼び出す必要があります。
+</p>
+<ul>
+  <li>ユーザーがビューで長押しクリックする。</li>
+  <li>ユーザーがチェックボックスまたは同様の UI コンポーネントをビュー内で選択する。</li>
+</ul>
+
+<p>アプリケーションがどのようにコンテキスト アクション モードを呼び出して各アクションの動作を定義するかは、デザインによって異なります。
+基本的に次の 2 つのデザインがあります。</p>
+<ul>
+  <li>個別の任意のビューでのコンテキスト アクション用。</li>
+  <li>{@link
+android.widget.ListView} または {@link android.widget.GridView} のアイテム グループでのバッチ コンテキスト アクション用(ユーザーが複数のアイテムを選択し、そのすべてにアクションを実行できるようにする)。
+</li>
+</ul>
+
+<p>次のセクションでは、各シナリオに必要な設定について説明します。</p>
+
+
+<h4 id="CABforViews">個別のビューに対してコンテキスト アクション モードを有効にする</h4>
+
+<p>ユーザーが特定のビューを選択するときにのみ、コンテキスト アクション モードを呼び出すには、次のことを行う必要があります。
+</p>
+<ol>
+  <li>{@link android.view.ActionMode.Callback} インターフェースを実装します。このコールバック メソッドでは、コンテキスト アクションバーに対してアクションを指定して、アクション アイテムでのイベント クリックに応答し、アクション モードのその他のライフサイクル イベントを処理できます。
+
+</li>
+  <li>ユーザーがビューを長押しクリックしたときなど、バーを表示するときに、{@link android.app.Activity#startActionMode startActionMode()} を呼び出します。
+</li>
+</ol>
+
+<p>次に例を示します。</p>
+
+<ol>
+  <li>{@link android.view.ActionMode.Callback ActionMode.Callback} インターフェースを実装します。
+<pre>
+private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
+
+    // Called when the action mode is created; startActionMode() was called
+    &#64;Override
+    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+        // Inflate a menu resource providing context menu items
+        MenuInflater inflater = mode.getMenuInflater();
+        inflater.inflate(R.menu.context_menu, menu);
+        return true;
+    }
+
+    // Called each time the action mode is shown. Always called after onCreateActionMode, but
+    // may be called multiple times if the mode is invalidated.
+    &#64;Override
+    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+        return false; // Return false if nothing is done
+    }
+
+    // Called when the user selects a contextual menu item
+    &#64;Override
+    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.menu_share:
+                shareCurrentItem();
+                mode.finish(); // Action picked, so close the CAB
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    // Called when the user exits the action mode
+    &#64;Override
+    public void onDestroyActionMode(ActionMode mode) {
+        mActionMode = null;
+    }
+};
+</pre>
+
+<p>これらのイベント コールバックは、これらのそれぞれもイベントに関連する {@link
+android.view.ActionMode} オブジェクトを渡すこと以外は、<a href="#options-menu">オプション メニュー</a>のコールバックとほぼ同じです。{@link
+android.view.ActionMode} API を使って、{@link android.view.ActionMode#setTitle setTitle()} と {@link
+android.view.ActionMode#setSubtitle setSubtitle()}(選択されているアイテム数を表示するのに役立つ)でタイトルとサブタイトルを変更するなど、CAB にさまざまな変更を行うことができます。
+
+</p>
+
+<p>また、上記のサンプルでは、アクション モードが破棄されるときに {@code mActionMode} 変数が null に設定されます。
+次のステップでは、それがどのように初期化され、アクティビティやフラグメントでどのようにメンバー変数を保存するのが役立つかについて説明します。
+</p>
+</li>
+
+  <li>{@link android.app.Activity#startActionMode startActionMode()} を呼び出して、{@link
+android.view.View} で長押しクリックに応答するときなど、適切な時にコンテキスト アクション モードを有効にします。
+</p>
+
+<pre>
+someView.setOnLongClickListener(new View.OnLongClickListener() {
+    // Called when the user long-clicks on someView
+    public boolean onLongClick(View view) {
+        if (mActionMode != null) {
+            return false;
+        }
+
+        // Start the CAB using the ActionMode.Callback defined above
+        mActionMode = getActivity().startActionMode(mActionModeCallback);
+        view.setSelected(true);
+        return true;
+    }
+});
+</pre>
+
+<p>{@link android.app.Activity#startActionMode startActionMode()} を呼び出すと、システムは作成された {@link android.view.ActionMode} を返します。
+メンバー変数でこれを保存すると、その他のイベントに応じてコンテキスト アクションバーを変更できます。
+上記の例では、{@link android.view.ActionMode} を使って、{@link android.view.ActionMode} インスタンスがアクティブな状態である場合に、アクション モードを開始する前にメンバーが null であるかどうかを確認して、そのインスタンスが再作成されないようにしています。
+
+
+</p>
+</li>
+</ol>
+
+
+
+<h4 id="CABforListView">バッチ コンテキスト アクションを ListView または GridView で有効にする</h4>
+
+<p>{@link android.widget.ListView} や {@link
+android.widget.GridView}(または {@link android.widget.AbsListView} の別の拡張)にアイテムのコレクションがあり、ユーザーがバッチ アクションを実行できるようにする場合は、次のことを行う必要があります。
+</p>
+
+<ul>
+  <li>{@link android.widget.AbsListView.MultiChoiceModeListener} インターフェースを実装して、{@link android.widget.AbsListView#setMultiChoiceModeListener
+setMultiChoiceModeListener()} で ViewGroup にそれを設定する。
+リスナのコールバック メソッドでは、コンテキスト アクションバーに対してアクションを指定して、アクション アイテムでのイベント クリックに応答し、{@link android.view.ActionMode.Callback} インターフェースから継承されるその他のコールバックを処理できます。
+
+</li>
+
+  <li>{@link
+android.widget.AbsListView#CHOICE_MODE_MULTIPLE_MODAL} 引数で {@link android.widget.AbsListView#setChoiceMode setChoiceMode()} を呼び出す。</li>
+</ul>
+
+<p>次に例を示します。</p>
+
+<pre>
+ListView listView = getListView();
+listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
+listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
+
+    &#64;Override
+    public void onItemCheckedStateChanged(ActionMode mode, int position,
+                                          long id, boolean checked) {
+        // Here you can do something when items are selected/de-selected,
+        // such as update the title in the CAB
+    }
+
+    &#64;Override
+    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+        // Respond to clicks on the actions in the CAB
+        switch (item.getItemId()) {
+            case R.id.menu_delete:
+                deleteSelectedItems();
+                mode.finish(); // Action picked, so close the CAB
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    &#64;Override
+    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+        // Inflate the menu for the CAB
+        MenuInflater inflater = mode.getMenuInflater();
+        inflater.inflate(R.menu.context, menu);
+        return true;
+    }
+
+    &#64;Override
+    public void onDestroyActionMode(ActionMode mode) {
+        // Here you can make any necessary updates to the activity when
+        // the CAB is removed. By default, selected items are deselected/unchecked.
+    }
+
+    &#64;Override
+    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+        // Here you can perform updates to the CAB due to
+        // an {@link android.view.ActionMode#invalidate} request
+        return false;
+    }
+});
+</pre>
+
+<p>これだけです。これで、ユーザーが長押しクリックでアイテムを選択すると、システムは {@link
+android.widget.AbsListView.MultiChoiceModeListener#onCreateActionMode onCreateActionMode()} メソッドを呼び出して、特定のアクションでコンテキスト アクションバーを表示するようになります。
+コンテキスト アクションバーが表示されている間は、追加のアイテムを選択できます。
+</p>
+
+<p>コンテキスト アクションによって一般的なアクション アイテムが提供されるとき、ユーザーが長押しクリックの動作に気付かない可能性があることを考慮して、アイテムを選択できるようにチェックボックスや同様の UI 要素を追加したい場合もあります。
+
+ユーザーがチェックボックスをオンにするとき、{@link android.widget.AbsListView#setItemChecked setItemChecked()} でオンにされた状態にそれぞれのリストアイテムを設定して、コンテキスト アクション モードを呼び出すことができます。
+
+</p>
+
+
+
+
+<h2 id="PopupMenu">ポップアップ メニューの作成</h2>
+
+<div class="figure" style="width:220px">
+<img src="{@docRoot}images/ui/popupmenu.png" alt="" />
+<p><strong>図 4.</strong>右上のオーバーフローボタンに固定された Gmail アプリのポップアップ メニュー。
+</p>
+</div>
+
+<p>{@link android.widget.PopupMenu} は {@link android.view.View} に固定されるモーダル メニューです。スペースがある場合にはアンカービューの下に、スペースがない場合はビューの上に表示されます。
+次の場合に役立ちます。</p>
+<ul>
+  <li>特定のコンテンツに<em>関連する</em>アクションにオーバーフロー スタイルのメニューを提供する(図 4 にある Gmail のメールヘッダーなど)。
+
+    <p class="note"><strong>注:</strong> これは、通常は選択したコンテンツに<em>影響する</em>アクション用であるコンテキスト メニューとは異なります。
+選択したコンテンツに影響するアクションには、<a href="#CAB">コンテキスト アクション モード</a>や<a href="#FloatingContextMenu">フローティング コンテキスト メニュー</a>を使います。
+</p></li>
+  <li>コマンド センテンスの 2 番目の部分を提供する(別の「追加」オプションを含むポップアップ メニューを生成する「追加」とマークされたボタンなど)。
+</li>
+  <li>固定選択を保持しない {@link android.widget.Spinner} のようなドロップダウンを提供する。
+</li>
+</ul>
+
+
+<p class="note"><strong>注:</strong> {@link android.widget.PopupMenu} は API レベル 11 以降で使用できます。
+</p>
+
+<p><a href="#xml">XML でメニューを定義する</a>場合の、ポップアップ メニューの表示方法について、次に示します。</p>
+<ol>
+  <li>そのコンストラクタを使って {@link android.widget.PopupMenu} のインスタンスを作成します。これにより、メニューが固定される必要のある、現在のアプリケーションの {@link android.content.Context} と {@link android.view.View} が取得されます。
+
+</li>
+  <li>{@link android.view.MenuInflater} を使って、{@link
+android.widget.PopupMenu#getMenu() PopupMenu.getMenu()} によって返される {@link
+android.view.Menu} オブジェクトにメニュー リソースをインフレートします。API レベル 14 以降では、代わりに {@link android.widget.PopupMenu#inflate PopupMenu.inflate()} を使うことができます。
+</li>
+  <li>{@link android.widget.PopupMenu#show() PopupMenu.show()} を呼び出します。</li>
+</ol>
+
+<p>ポップアップ メニューを表示する {@link android.R.attr#onClick android:onClick} 属性を含むボタンの一例を以下に示します。
+</p>
+
+<pre>
+&lt;ImageButton
+    android:layout_width="wrap_content" 
+    android:layout_height="wrap_content" 
+    android:src="@drawable/ic_overflow_holo_dark"
+    android:contentDescription="@string/descr_overflow_button"
+    android:onClick="showPopup" />
+</pre>
+
+<p>アクティビティでは、次のようにポップアップ メニューが表示されます。</p>
+
+<pre>
+public void showPopup(View v) {
+    PopupMenu popup = new PopupMenu(this, v);
+    MenuInflater inflater = popup.getMenuInflater();
+    inflater.inflate(R.menu.actions, popup.getMenu());
+    popup.show();
+}
+</pre>
+
+<p>API レベル 14 以降では、{@link
+android.widget.PopupMenu#inflate PopupMenu.inflate()} でメニューをインフレートする 2 行を組み合わせることができます。</p>
+
+<p>ユーザーがアイテムを選択するか、メニュー領域外をタップすると、メニューが閉じます。
+{@link
+android.widget.PopupMenu.OnDismissListener} を使って dismiss イベントをリッスンできます。</p>
+
+<h3 id="PopupEvents">クリック イベントを処理する</h3>
+
+<p>ユーザーがアイテム メニューを選択するときにアクションを実行するには、{@link
+android.widget.PopupMenu.OnMenuItemClickListener} インターフェースを実装し、{@link android.widget.PopupMenu#setOnMenuItemClickListener
+setOnMenuItemclickListener()} を呼び出して {@link
+android.widget.PopupMenu} でそれを登録する必要があります。
+ユーザーがアイテムを選択すると、インターフェースで {@link
+android.widget.PopupMenu.OnMenuItemClickListener#onMenuItemClick onMenuItemClick()} コールバックが呼び出されます。
+</p>
+
+<p>次に例を示します。</p>
+
+<pre>
+public void showMenu(View v) {
+    PopupMenu popup = new PopupMenu(this, v);
+
+    // This activity implements OnMenuItemClickListener
+    popup.setOnMenuItemClickListener(this);
+    popup.inflate(R.menu.actions);
+    popup.show();
+}
+
+&#64;Override
+public boolean onMenuItemClick(MenuItem item) {
+    switch (item.getItemId()) {
+        case R.id.archive:
+            archive(item);
+            return true;
+        case R.id.delete:
+            delete(item);
+            return true;
+        default:
+            return false;
+    }
+}
+</pre>
+
+
+<h2 id="groups">メニュー グループの作成</h2>
+
+<p>メニュー グループは、特定の特徴を共有するメニュー アイテムのコレクションです。グループを使って次のことを実行できます。
+</p>
+<ul>
+  <li>{@link android.view.Menu#setGroupVisible(int,boolean)
+setGroupVisible()} ですべてのアイテムを表示または非表示にする</li>
+  <li>{@link android.view.Menu#setGroupEnabled(int,boolean)
+setGroupEnabled()} ですべてのアイテムを有効または無効にする</li>
+  <li>{@link
+android.view.Menu#setGroupCheckable(int,boolean,boolean) setGroupCheckable()} ですべてのアイテムをオンにできるかどうかを指定する</li>
+</ul>
+
+<p>メニュー リソースの {@code &lt;group&gt;} 要素内で {@code &lt;item&gt;} 要素をネストするか、{@link
+android.view.Menu#add(int,int,int,int) add()} メソッドでグループ ID を指定して、グループを作成できます。
+</p>
+
+<p>グループを含むメニュー リソースの一例を次に示します。</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/menu_save"
+          android:icon="@drawable/menu_save"
+          android:title="@string/menu_save" /&gt;
+    &lt;!-- menu group --&gt;
+    &lt;group android:id="@+id/group_delete"&gt;
+        &lt;item android:id="@+id/menu_archive"
+              android:title="@string/menu_archive" /&gt;
+        &lt;item android:id="@+id/menu_delete"
+              android:title="@string/menu_delete" /&gt;
+    &lt;/group&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>グループ内のアイテムは、最初のアイテムと同じレベルで表示されます(メニューの 3 つのアイテムすべてが兄弟)。
+ただし、グループ ID を参照するか、上記のメソッドを使って、グループ内の 2 つのアイテムの特徴を変更できます。
+システムが、グループ化されたアイテムを分けることもありません。
+たとえば、各アイテムに {@code
+android:showAsAction="ifRoom"} を宣言する場合、その両方がアクションバーまたはアクション オーバーフローに表示されます。
+</p>
+
+
+<h3 id="checkable">オンにできるメニュー アイテムの使用</h3>
+
+<div class="figure" style="width:200px">
+  <img src="{@docRoot}images/radio_buttons.png" height="333" alt="" />
+  <p class="img-caption"><strong>図 5.</strong> オンにできるアイテムを含むサブメニューのスクリーンショット。
+</p>
+</div>
+
+<p>メニューは、オプションのオンとオフを切り替えるインターフェースとして役立ちます。スタンドアロンのオプションにはチェックボックスを、相互に排他的なオプションのグループにはラジオボタンを使います。
+
+図 5 に、ラジオボタン付きのオンにできるアイテムを含むサブメニューを示します。
+</p>
+
+<p class="note"><strong>注:</strong> アイコン メニューのメニュー アイテム(オプション メニューから)ではチェックボックスやラジオボタンを表示できません。
+アイコン メニューのアイテムをオンにできるようにする場合、状態が変わるごとにアイコンやテキストを入れ替えて、オンにされた状態を手動で示す必要があります。
+
+</p>
+
+<p>個々のメニュー アイテムには {@code &lt;item&gt;} 要素の {@code
+android:checkable} 属性を、グループ全体には {@code &lt;group&gt;} 要素の {@code android:checkableBehavior} 属性を使って、オンにできる動作を定義できます。
+たとえば、このメニュー グループのすべてのアイテムはラジオボタンでオンにできます。
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;group android:checkableBehavior="single"&gt;
+        &lt;item android:id="@+id/red"
+              android:title="@string/red" /&gt;
+        &lt;item android:id="@+id/blue"
+              android:title="@string/blue" /&gt;
+    &lt;/group&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>{@code android:checkableBehavior} 属性では、次のいずれかが許容されます。
+<dl>
+  <dt>{@code single}</dt>
+    <dd>グループから 1 つのアイテムのみをオンにできる(ラジオボタン)</dd>
+  <dt>{@code all}</dt>
+    <dd>すべてのアイテムをオンにできる(チェックボックス)</dd>
+  <dt>{@code none}</dt>
+    <dd>どのアイテムもオンにできない</dd>
+</dl>
+
+<p>{@code &lt;item&gt;} 要素の {@code android:checked} 属性を使って、デフォルトのオンにされた状態をアイテムに適用でき、{@link
+android.view.MenuItem#setChecked(boolean) setChecked()} メソッドを使ってコード内でそれを変更できます。
+</p>
+
+<p>オンにできるアイテムが選択されると、システムは {@link android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} のような、それぞれの item-selected コールバック メソッドを呼び出します。
+チェックボックスやラジオボタンによって自動的にその状態が変わることはないため、ここでチェックボックスの状態を設定する必要があります。
+
+{@link android.view.MenuItem#isChecked()} で、アイテムの現在の状態(ユーザーが選択する前の状態)を照会できます。その後、{@link android.view.MenuItem#setChecked(boolean) setChecked()} でオンにされた状態を設定します。
+
+次に例を示します。</p>
+
+<pre>
+&#64;Override
+public boolean onOptionsItemSelected(MenuItem item) {
+    switch (item.getItemId()) {
+        case R.id.vibrate:
+        case R.id.dont_vibrate:
+            if (item.isChecked()) item.setChecked(false);
+            else item.setChecked(true);
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+    }
+}
+</pre>
+
+<p>この方法でオンにされた状態を設定しない場合には、アイテム(チェックボックスまたはラジオボタン)の表示状態はユーザーがオンにしたときに変更されません。
+
+状態を設定すると、アクティビティはアイテムのオンにされた状態を維持して、ユーザーが後でメニューを開いたときに、開発者が設定したオンにされた状態が表示されるようになります。
+
+</p>
+
+<p class="note"><strong>注:</strong> オンにできるメニュー アイテムは、セッション単位ベースのみでの使用を意図したもので、アプリケーションが破棄された後は、保存されません。
+
+ユーザー用に保存するアプリケーション設定がある場合は、<a href="{@docRoot}guide/topics/data/data-storage.html#pref">共有のプリファレンス</a>を使ってデータを保存してください。
+</p>
+
+
+
+<h2 id="intents">インテントに基づくメニュー アイテムの追加</h2>
+
+<p>{@link android.content.Intent} を使ってメニュー アイテムでアクティビティが起動されるようにしたい場合もあります(自分のアプリケーションのアクティビティであるか、別のアプリケーションのアクティビティであるかにかかわらず)。
+使用するインテントがわかっていて、インテントを開始する必要のある特定のメニュー アイテムがある場合は、適切な on-item-selected コールバック メソッド({@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} のような)中に、{@link android.app.Activity#startActivity(Intent) startActivity()} でインテントを実行できます。
+
+
+</p>
+
+<p>ただし、ユーザーの端末にインテントを処理するアプリケーションが含まれているかどうかが不明な場合、それを呼び出すメニュー アイテムを追加すると、そのインテントによってアクティビティが解決されないためにメニュー アイテムが機能しなくなることがあります。
+
+
+これを解決するために、Android では、インテントを処理する端末で Android によってアクティビティが検出されるときに、メニュー アイテムがメニューに動的に追加されるようにします。
+</p>
+
+<p>インテントを受け入れる使用可能なアクティビティに基づいてメニュー アイテムを追加するには: </p>
+<ol>
+  <li>{@link android.content.Intent#CATEGORY_ALTERNATIVE} や {@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} カテゴリでインテントを定義します。その他の要件も必要です。
+
+</li>
+  <li>{@link
+android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+Menu.addIntentOptions()} を呼び出します。その際、Android によって、インテントを実行できるアプリケーションが検索され、メニューにそのアプリケーションが追加されます。
+</li>
+</ol>
+
+<p>インテントを満たすアプリケーションがインストールされていない場合、メニュー アイテムは追加されません。
+</p>
+
+<p class="note"><strong>注:</strong> {@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} は、現在画面で選択されている要素の処理に使われます。
+
+このため、{@link
+android.app.Activity#onCreateContextMenu(ContextMenu,View,ContextMenuInfo)
+onCreateContextMenu()} でメニューを作成するときにのみ、それが使われる必要があります。</p>
+
+<p>次に例を示します。</p>
+
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu){
+    super.onCreateOptionsMenu(menu);
+
+    // Create an Intent that describes the requirements to fulfill, to be included
+    // in our menu. The offering app must include a category value of Intent.CATEGORY_ALTERNATIVE.
+    Intent intent = new Intent(null, dataUri);
+    intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
+
+    // Search and populate the menu with acceptable offering applications.
+    menu.addIntentOptions(
+         R.id.intent_group,  // Menu group to which new items will be added
+         0,      // Unique item ID (none)
+         0,      // Order for the items (none)
+         this.getComponentName(),   // The current activity name
+         null,   // Specific items to place first (none)
+         intent, // Intent created above that describes our requirements
+         0,      // Additional flags to control items (none)
+         null);  // Array of MenuItems that correlate to specific items (none)
+
+    return true;
+}</pre>
+
+<p>定義されたインテントに一致するインテント フィルタが提供されていることを見つけた各アクティビティに対して、メニュー アイテムのタイトルにインテント フィルタの <code>android:label</code> の値を、メニュー アイテムのアイコンにアプリケーション アイコンを使って、メニュー アイテムが追加されます。
+
+{@link android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+addIntentOptions()} メソッドによって、追加されたメニュー アイテム数が返されます。
+</p>
+
+<p class="note"><strong>注:</strong> {@link
+android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+addIntentOptions()} を呼び出すとき、最初の引数で指定されたメニュー グループによって、すべてのメニュー アイテムがオーバーライドされます。
+</p>
+
+
+<h3 id="AllowingToAdd">アクティビティを他のメニューに追加できるようにする</h3>
+
+<p>他のアプリケーションにアクティビティのサービスを提供して、アプリケーションを他のメニューに含めることができるようにすることもできます(前述の役割を逆にする)。
+</p>
+
+<p>他のアプリケーションのメニューに含まれるようにするには、通常どおりインテント フィルタを定義する必要がありますが、インテント フィルタのカテゴリに、{@link android.content.Intent#CATEGORY_ALTERNATIVE} や {@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} 値を含めるようにしてください。
+
+
+次に例を示します。</p>
+<pre>
+&lt;intent-filter label="&#64;string/resize_image">
+    ...
+    &lt;category android:name="android.intent.category.ALTERNATIVE" />
+    &lt;category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
+    ...
+&lt;/intent-filter>
+</pre>
+
+<p>インテント フィルタの記述の詳細については、「<a href="/guide/components/intents-filters.html">インテントとインテント フィルタ</a>」をご覧ください。
+</p>
+
+<p>この方法を使ったサンプル アプリケーションについては、<a href="{@docRoot}resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html">Note Pad</a> のサンプルコードをご覧ください。
+
+</p>
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/notifiers/notifications.jd b/docs/html-intl/intl/ja/guide/topics/ui/notifiers/notifications.jd
new file mode 100644
index 0000000..f341256
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/ui/notifiers/notifications.jd
@@ -0,0 +1,979 @@
+page.title=通知
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>本書の内容</h2>
+<ol>
+  <li><a href="#Design">設計上の考慮事項</a></li>
+  <li><a href="#CreateNotification">通知を作成する</a>
+    <ol>
+      <li><a href="#Required">必須通知コンテンツ</a></li>
+      <li><a href="#Optional">省略可能な通知コンテンツと設定</a></li>
+      <li><a href="#Actions">通知アクション</a></li>
+      <li><a href="#Priority">通知の優先度</a></li>
+      <li><a href="#SimpleNotification">簡単な通知を作成する</a></li>
+      <li><a href="#ApplyStyle">通知に拡張レイアウトを適用する</a></li>
+      <li><a href="#Compatibility">互換性を確保する</a></li>
+    </ol>
+  </li>
+  <li><a href="#Managing">通知を管理する</a>
+    <ol>
+      <li><a href="#Updating">通知を更新する</a></li>
+      <li><a href="#Removing">通知を削除する</a></li>
+    </ol>
+  </li>
+  <li><a href="#NotificationResponse">アクティビティの開始時にナビゲーションを維持する</a>
+    <ol>
+      <li><a href="#DirectEntry">通常のアクティビティの PendingIntent を設定する</a></li>
+      <li><a href="#ExtendedNotification">特殊なアクティビティの PendingIntent を設定する</a></li>
+    </ol>
+  </li>
+  <li><a href="#Progress">通知に進捗状況を表示する</a>
+    <ol>
+      <li><a href="#FixedProgress">範囲固定の進捗インジケーターを表示する</a></li>
+      <li><a href="#ActivityIndicator">進行中アクティビティ インジケーターを表示する</a></li>
+    </ol>
+  </li>
+  <li><a href="#metadata">通知メタデータ</a></li>
+  <li><a href="#Heads-up">ヘッドアップ通知</a></li>
+  <li><a href="#lockscreenNotification">ロック画面通知</a></li>
+    <ol>
+      <li><a href="#visibility">可視性を設定する</a></li>
+      <li><a href="#controllingMedia">ロック画面でのメディア再生をコントロールする</a></li>
+    </ol>
+  <li><a href="#CustomNotification">カスタム通知レイアウト</a></li>
+</ol>
+
+    <h2>キークラス</h2>
+    <ol>
+        <li>{@link android.app.NotificationManager}</li>
+        <li>{@link android.support.v4.app.NotificationCompat}</li>
+    </ol>
+    <h2>ビデオ</h2>
+    <ol>
+        <li>
+            <a href="http://www.youtube.com/watch?v=Yc8YrVc47TI&amp;feature=player_detailpage#t=1672s">Notifications in 4.1</a>
+
+        </li>
+    </ol>
+<h2>関連ドキュメント</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}design/patterns/notifications.html">Android Design: Notifications</a>
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    通知は、アプリケーションの通常の UI 以外で、ユーザーに表示できるメッセージです。システムが通知を発行通知すると、通知はまず<strong>通知エリア</strong>にアイコンで表示されます。
+
+通知の詳細を確認するには、ユーザーが<strong>通知ドロワー</strong>を開く必要があります。
+ドロワー通知エリアと通知ドロワーはどちらも、システムによって制御されているエリアであり、ユーザーはいつでも見ることができます。
+
+</p>
+<img id="figure1" src="{@docRoot}images/ui/notifications/notification_area.png" height="" alt="" />
+<p class="img-caption">
+    <strong>図 1.</strong> 通知エリアの通知。
+</p>
+<img id="figure2" src="{@docRoot}images/ui/notifications/notification_drawer.png" width="280px" alt="" />
+<p class="img-caption">
+    <strong>図 2.</strong> 通知ドロワーの通知。
+</p>
+
+<p class="note"><strong>注:</strong> 別途記載がある場合を除き、このガイドでは、バージョン 4 の <a href="{@docRoot}tools/support-library/index.html">サポート ライブラリ</a>の {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} クラスについて記述しています。クラス {@link android.app.Notification.Builder Notification.Builder} は、Android 3.0(API レベル 11)で追加されました。
+
+
+
+</p>
+
+<h2 id="Design">設計上の考慮事項</h2>
+
+<p>通知は、Android ユーザー インターフェースの重要なパーツであり、独自の設計ガイドラインが設けられています。Android 5.0 (API レベル 21)で導入されたマテリアル デザインの変更は特に重要です。詳細については、「<a href="{@docRoot}training/material/index.html">マテリアル デザイン</a>」をご覧ください。
+
+
+通知とその操作の設計方法については、<a href="{@docRoot}design/patterns/notifications.html">通知</a>設計ガイドをご覧ください。
+</p>
+
+<h2 id="CreateNotification">通知を作成する</h2>
+
+<p>通知のための UI 情報とアクションを、{@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} オブジェクトに指定します。通知自体を作成するには、{@link android.support.v4.app.NotificationCompat.Builder#build NotificationCompat.Builder.build()} を呼び出します。これにより、指定された UI 情報とアクションを含む {@link android.app.Notification} オブジェクトが返されます。
+
+
+
+通知を発行するには、{@link android.app.NotificationManager#notify NotificationManager.notify()} を呼び出して、この {@link android.app.Notification} オブジェクトをシステムに渡します。
+
+</p>
+
+<h3 id="Required">必須通知コンテンツ</h3>
+<p>
+    {@link android.app.Notification} オブジェクトの<em>必須</em>コンテンツは次のとおりです。
+</p>
+<ul>
+    <li>
+        小さなアイコン。{@link android.support.v4.app.NotificationCompat.Builder#setSmallIcon setSmallIcon()} で設定します。
+
+    </li>
+    <li>
+        タイトル。{@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()} で設定します。
+
+    </li>
+    <li>
+        詳細テキスト。{@link android.support.v4.app.NotificationCompat.Builder#setContentText setContentText()} で設定します。
+
+    </li>
+</ul>
+<h3 id="Optional">省略可能な通知コンテンツと設定</h3>
+<p>
+    上記以外のすべての通知設定とコンテンツは省略可能です。省略可能な通知設定とコンテンツについては、{@link android.support.v4.app.NotificationCompat.Builder} のリファレンスをご覧ください。
+
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Actions">通知アクション</h3>
+<p>
+    通知アクションは省略可能ですが、通知には、少なくとも 1 つのアクションを追加する必要があります。
+    アクションは、ユーザーが通知からアプリケーションの {@link android.app.Activity} に直接移動することを可能にします。ユーザーは、移動先で、イベントを確認したりさらに作業を行ったりすることができます。
+
+
+</p>
+<p>
+    1 つの通知が複数のアクションを提供することもあります。そのため、ユーザーが通知をクリックした時にトリガーされるアクションを必ず定義してください。通常、このアクションは、アプリケーション内で {@link android.app.Activity} を開きます。
+
+また、アラームのスヌーズやテキスト メッセージへの即時返信などの追加のアクションを実行するボタンを、通知に追加することもできます。この機能は、Android 4.1 から利用できるようになりました。
+
+追加のアクション ボタンを使用する場合、それらのボタンの機能をアプリの {@link android.app.Activity} で利用できるようにする必要があります。詳細については、<a href="#Compatibility">互換性の確保</a>についてのセクションをご覧ください。
+
+
+</p>
+<p>
+    {@link android.app.Notification} 内部では、アクションは、アプリケーションで {@link android.app.Activity} を開始する {@link android.content.Intent} が含まれる {@link android.app.PendingIntent} によって定義されます。
+
+
+{@link android.app.PendingIntent} を操作と関連付けるには、{@link android.support.v4.app.NotificationCompat.Builder} の該当するメソッドを呼び出します。
+
+たとえば、ユーザーが通知ドロワーで通知のテキストをクリックしたときに {@link android.app.Activity} を開始する場合、{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent setContentIntent()} を呼び出して {@link android.app.PendingIntent} を追加します。
+
+
+
+</p>
+<p>
+    ユーザーが通知をクリックしたときに {@link android.app.Activity} を開始することは、最も一般的なアクション シナリオです。
+ユーザーが通知を閉じた場合に {@link android.app.Activity} を開始することもできます。
+Android 4.1 以降では、アクション ボタンから {@link android.app.Activity} を開始できます。
+詳細については、{@link android.support.v4.app.NotificationCompat.Builder} のリファレンスをご覧ください。
+
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Priority">通知の優先度</h3>
+<p>
+    必要に応じて、通知の優先度を設定できます。通知の優先度は、通知の表示方法についての端末 UI へのヒントの役割を果たします。
+
+    通知の優先度を設定するには、{@link android.support.v4.app.NotificationCompat.Builder#setPriority(int) otificationCompat.Builder.setPriority()} を呼び出し、{@link android.support.v4.app.NotificationCompat} 優先度定数の 1 つを渡します。
+
+
+優先度レベルには、{@link android.support.v4.app.NotificationCompat#PRIORITY_MIN} (-2)から {@link android.support.v4.app.NotificationCompat#PRIORITY_MAX} (2)までの 5 段階あります。優先度レベルが設定されていない場合、優先度はデフォルト値の {@link android.support.v4.app.NotificationCompat#PRIORITY_DEFAULT} (0)になります。
+
+
+
+
+
+</p>
+<p> 適切な優先順位の設定方法については、<a href="{@docRoot}design/patterns/notifications.html">通知</a>設計ガイドの「Correctly set and manage notification priority」をご覧ください。
+
+
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="SimpleNotification">簡単な通知を作成する</h3>
+<p>
+    次のスニペットでは、ユーザーに通知がクリックされたときに起動するアクティビティを指定する簡単な通知を作成しています。
+このコードでは {@link android.support.v4.app.TaskStackBuilder} オブジェクトを作成し、そのオブジェクトを使用して、アクションのための {@link android.app.PendingIntent} を作成していることにご注意ください。
+
+詳細は、<a href="#NotificationResponse">アクティビティの開始時のナビゲーションの維持</a>セクションで説明しています。
+
+
+</p>
+<pre>
+NotificationCompat.Builder mBuilder =
+        new NotificationCompat.Builder(this)
+        .setSmallIcon(R.drawable.notification_icon)
+        .setContentTitle("My notification")
+        .setContentText("Hello World!");
+// Creates an explicit intent for an Activity in your app
+Intent resultIntent = new Intent(this, ResultActivity.class);
+
+// The stack builder object will contain an artificial back stack for the
+// started Activity.
+// This ensures that navigating backward from the Activity leads out of
+// your application to the Home screen.
+TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
+// Adds the back stack for the Intent (but not the Intent itself)
+stackBuilder.addParentStack(ResultActivity.class);
+// Adds the Intent that starts the Activity to the top of the stack
+stackBuilder.addNextIntent(resultIntent);
+PendingIntent resultPendingIntent =
+        stackBuilder.getPendingIntent(
+            0,
+            PendingIntent.FLAG_UPDATE_CURRENT
+        );
+mBuilder.setContentIntent(resultPendingIntent);
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// mId allows you to update the notification later on.
+mNotificationManager.notify(mId, mBuilder.build());
+</pre>
+<p>これで、ユーザーに通知が行われました。</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ApplyStyle">通知に拡張レイアウトを適用する</h3>
+<p>
+    通知を拡張ビューに表示するには、まず {@link android.support.v4.app.NotificationCompat.Builder} オブジェクトを任意の標準ビュー オプションで作成します。
+
+次に、{@link android.support.v4.app.NotificationCompat.Builder#setStyle Builder.setStyle()} を拡張レイアウト オブジェクトを引数に指定して呼び出します。
+
+</p>
+<p>
+    通知の拡張機能は、Android 4.1 より前のバージョンでは利用できないことにご注意ください。Android 4.1 とそれ以前のプラットフォームでの通知の処理方法については、<a href="#Compatibility">互換性の確保</a>についてのセクションをご覧ください。
+
+
+</p>
+<p>
+    たとえば、次のコード スニペットでは、先ほどのスニペットで作成した通知を変更して、拡張レイアウトを使用するようにしています。
+
+</p>
+<pre>
+NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
+    .setSmallIcon(R.drawable.notification_icon)
+    .setContentTitle("Event tracker")
+    .setContentText("Events received")
+NotificationCompat.InboxStyle inboxStyle =
+        new NotificationCompat.InboxStyle();
+String[] events = new String[6];
+// Sets a title for the Inbox in expanded layout
+inboxStyle.setBigContentTitle("Event tracker details:");
+...
+// Moves events into the expanded layout
+for (int i=0; i &lt; events.length; i++) {
+
+    inboxStyle.addLine(events[i]);
+}
+// Moves the expanded layout object into the notification object.
+mBuilder.setStyle(inBoxStyle);
+...
+// Issue the notification here.
+</pre>
+
+<h3 id="Compatibility">互換性を確保する</h3>
+
+<p>
+    通知機能をセットするメソッドはサポート ライブラリのクラス {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} に登録されていますが、特定のバージョンですべての通知機能が利用できるわけではありません。
+
+
+    たとえば、アクション ボタンは拡張通知の機能ですが、拡張通知自体が Android 4.1 以上でしか利用できないため、Android 4.1 以上でのみ表示されます。
+
+
+</p>
+<p>
+    可能な限り互換性を確保するには、{@link android.support.v4.app.NotificationCompat NotificationCompat} とそのサブクラス、特に {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} を使用して通知を作成します。
+
+
+さらに、通知の実装時に次の処理を行ってください。
+</p>
+<ol>
+    <li>
+        ユーザーが利用しているバージョンにかかわらず、通知機能のすべてをすべてのユーザーに提供します。
+それには、アプリの {@link android.app.Activity} からすべての機能が利用できるようにする必要があります。このために、新しい {@link android.app.Activity} を追加した方がよい場合もあります。
+
+
+        <p>
+            たとえば、{@link android.support.v4.app.NotificationCompat.Builder#addAction addAction()} を使用してメディア再生の開始と停止を行うコントロールを提供する場合、まずこのコントロールをアプリの {@link android.app.Activity} に実装します。
+
+
+
+        </p>
+    </li>
+    <li>
+        ユーザーが通知をクリックしたときにその {@link android.app.Activity} が起動するようにして、すべてのユーザーがその機能にアクセスできるようにします。
+それには、{@link android.app.Activity} のための {@link android.app.PendingIntent} を作成する必要があります。
+
+{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent setContentIntent()} を呼び出し、{@link android.app.PendingIntent} を通知に追加してください。
+
+
+    </li>
+    <li>
+        利用したい拡張通知機能を通知に追加します。追加した機能は、ユーザーが通知をクリックしたときに開始する {@link android.app.Activity} でも利用できることにご注意ください。
+
+
+    </li>
+</ol>
+
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="Managing">通知を管理する</h2>
+<p>
+    同じタイプのイベントのために通知を複数回発行する場合、そのたびに新しい通知を作成することは避ける必要があります。
+新しい通知を作成する代わりに、以前の通知を更新して一部の値を変更することやいくつかの値を追加することを検討してください。
+
+</p>
+<p>
+    たとえば、Gmail は新しいメールが届いたことを、未読メッセージの数を増やし通知に各メールの概要を追加することで、ユーザーに通知します。
+これは、通知の「スタッキング」と呼ばれています。詳細については、<a href="{@docRoot}design/patterns/notifications.html">通知</a>設計ガイドをご覧ください。
+
+
+</p>
+<p class="note">
+    <strong>注:</strong> この Gmail 機能には、「受信トレイ」の拡張レイアウトが必要です。これは、Android 4.1 以降で利用可能な拡張通知機能の 1 つです。
+
+</p>
+<p>
+    次のセクションでは、通知の更新方法と通知の削除方法を説明します。
+</p>
+<h3 id="Updating">通知を更新する</h3>
+<p>
+    後で更新できるように通知をセットアップするには、{@link android.app.NotificationManager#notify(int, android.app.Notification) NotificationManager.notify()} を呼び出し、通知 ID を指定して通知を発行します。
+
+    発行後に通知を更新するには、{@link android.support.v4.app.NotificationCompat.Builder} オブジェクトを更新または作成し、そのオブジェクトから {@link android.app.Notification} オブジェクトをビルドし、以前使用した ID と同じ ID で {@link android.app.Notification} を発行します。
+
+
+以前の通知がそのまま表示されている場合は、{@link android.app.Notification} オブジェクトのコンテンツから、その通知が更新されます。
+
+以前の通知が閉じられている場合は、代わりに新しい通知が作成されます。
+
+</p>
+<p>
+    次のスニペットでは、発生したイベントの数を反映するために通知が更新されています。
+このスニペットは通知をスタックし、概要を表示します。
+</p>
+<pre>
+mNotificationManager =
+        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// Sets an ID for the notification, so it can be updated
+int notifyID = 1;
+mNotifyBuilder = new NotificationCompat.Builder(this)
+    .setContentTitle("New Message")
+    .setContentText("You've received new messages.")
+    .setSmallIcon(R.drawable.ic_notify_status)
+numMessages = 0;
+// Start of a loop that processes data and then notifies the user
+...
+    mNotifyBuilder.setContentText(currentText)
+        .setNumber(++numMessages);
+    // Because the ID remains unchanged, the existing notification is
+    // updated.
+    mNotificationManager.notify(
+            notifyID,
+            mNotifyBuilder.build());
+...
+</pre>
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Removing">通知を削除する</h3>
+<p>
+    次のいずれかが発生するまで、通知は表示され続けます。
+</p>
+<ul>
+    <li>
+        ユーザーが通知を個別に閉じるか、[Clear All] を使用して通知をすべて閉じる(通知を削除することができる場合)。
+
+    </li>
+    <li>
+        作成時に {@link android.support.v4.app.NotificationCompat.Builder#setAutoCancel setAutoCancel()} の呼び出しが行われた通知を、ユーザーがクリックする。
+
+
+    </li>
+    <li>
+        特定の通知 ID を指定して {@link android.app.NotificationManager#cancel(int) cancel()} を呼び出す(このメソッドは、実行中の処理に関する通知も削除します)。
+
+    </li>
+    <li>
+        {@link android.app.NotificationManager#cancelAll() cancelAll()} を呼び出す(このメソッドは、それまでに発行したすべての通知を削除します)。
+
+    </li>
+</ul>
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="NotificationResponse">アクティビティの開始時にナビゲーションを維持する</h2>
+<p>
+    通知から {@link android.app.Activity} を開始する場合、ユーザーが期待するナビゲーション操作を変えないようにする必要があります。
+たとえば、 <i>[戻る]</i>  がクリックされた場合、アプリケーションの標準的なワークフローでは、ホーム画面に戻る必要があります。また、
+ <i>[最近使ったアプリ]</i>  がクリックされた場合、{@link android.app.Activity} を別のタスクとして表示する必要があります。
+このナビゲーション操作を変えないようにするには、新たなタスクで {@link android.app.Activity} を開始する必要があります。
+{@link android.app.PendingIntent} を設定して新たなタスクを生成する方法は、開始する {@link android.app.Activity} の性質によって異なります。
+
+通常は、次の 2 つの場合があります。
+</p>
+<dl>
+    <dt>
+        通常のアクティビティ
+    </dt>
+    <dd>
+        アプリケーションの標準的なワークフローの一部である {@link android.app.Activity} を開始します。
+この場合、{@link android.app.PendingIntent} を設定して新たなタスクを開始し、{@link android.app.PendingIntent} にバックスタックを提供します。これにより、アプリケーションの標準的な
+
+ <i>「戻る」</i> 動作を再現します。
+        <p>
+            Gmail アプリからの通知は、このタイプのアクティビティの一例です。1 つの電子メール メッセージの通知をクリックすると、メッセージそれ自体が表示されます。
+[<b>戻る</b>] をタップすると、通知から移動してきたのでなくホーム画面から Gmail に移動してきたかのように、Gmail からホーム画面に戻ります。
+
+
+        </p>
+        <p>
+            これは、通知のタップ時に使用していたアプリケーションに関係なく発生します。
+たとえば、Gmail でメッセージを作成しているときに、1 つのメールの通知をクリックすると、すぐにそのメールに移動します。
+その場合、 <i>[戻る]</i>
+             をタップすると、作成中のメッセージに戻るのではなく、受信トレイ、ホーム画面の順に移動します。
+
+        </p>
+    </dd>
+    <dt>
+        特殊なアクティビティ
+    </dt>
+    <dd>
+        ユーザーは、この {@link android.app.Activity} を、通知から開始した場合のみ見ることができます。
+        ある意味では、通知自体に表示するのは難しい情報を提供することで、この {@link android.app.Activity} が通知を拡張しているということができます。
+このタイプのアクティビティでは、{@link android.app.PendingIntent} を設定して新たなタスクを開始します。
+ただし、開始した {@link android.app.Activity} はアプリケーションのアクティビティ フローには含まれていないので、バックスタックを作成する必要はありません。
+
+たとえば、 <i>[戻る]</i>  をクリックすると、ユーザーはホーム画面に移動します。
+
+    </dd>
+</dl>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="DirectEntry">通常のアクティビティの PendingIntent を設定する</h3>
+<p>
+    ダイレクト エントリの {@link android.app.Activity} を開始する {@link android.app.PendingIntent} を設定するには、次の手順に従います。
+
+</p>
+<ol>
+    <li>
+        マニフェストに、アプリケーションの {@link android.app.Activity} の階層を定義します。
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                Android 4.0.3 以前へのサポートを追加します。これには、<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code> 要素を <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> の子として追加して、開始する {@link android.app.Activity} の親を指定します。
+
+
+
+
+                <p>
+                    この要素に、<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a>="android.support.PARENT_ACTIVITY"</code> を設定します。
+
+                    <code>&lt;parent_activity_name&gt;</code> が親 <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 要素の <code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a></code> の値の場合は、<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#val">android:value</a>="&lt;parent_activity_name&gt;"</code> を設定します。
+
+
+
+
+
+例については、以下の XML をご覧ください。
+                </p>
+            </li>
+            <li>
+                また、Android 4.1 以降のサポートを追加します。これには、開始する {@link android.app.Activity} の <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 要素に、<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#parent">android:parentActivityName</a></code> 属性を追加します。
+
+
+
+
+            </li>
+        </ol>
+        <p>
+            最終的な XML は、次のようになります。
+        </p>
+<pre>
+&lt;activity
+    android:name=".MainActivity"
+    android:label="&#64;string/app_name" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+&lt;activity
+    android:name=".ResultActivity"
+    android:parentActivityName=".MainActivity"&gt;
+    &lt;meta-data
+        android:name="android.support.PARENT_ACTIVITY"
+        android:value=".MainActivity"/&gt;
+&lt;/activity&gt;
+</pre>
+    </li>
+    <li>
+        {@link android.app.Activity} を開始する {@link android.content.Intent} に基づくバックスタックを作成します。
+
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                {@link android.app.Activity} を開始する {@link android.content.Intent} を作成します。
+            </li>
+            <li>
+                {@link android.app.TaskStackBuilder#create TaskStackBuilder.create()} を呼び出して、スタック ビルダーを作成します。
+
+            </li>
+            <li>
+                {@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()} を呼び出し、バックスタックをスタック ビルダーに追加します。
+
+                マニフェストに定義した階層のそれぞれの {@link android.app.Activity} ごとに、バックスタックに、{@link android.app.Activity} を開始する {@link android.content.Intent} が含まれます。
+
+このメソッドは、新たなタスクでスタックを開始するためのフラグも追加します。
+
+                <p class="note">
+                    <strong>注:</strong> {@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()} の引数は開始した {@link android.app.Activity} への参照ですが、このメソッドの呼び出しによって、{@link android.app.Activity} を開始する {@link android.content.Intent} が追加されることはありません。
+
+
+
+追加は、次の d. で行われます。
+                </p>
+            </li>
+            <li>
+                {@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()} を呼び出して、通知から {@link android.app.Activity} を開始する {@link android.content.Intent} を追加します。
+
+
+                a. で作成した {@link android.content.Intent} を、引数として {@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()} に渡します。
+
+
+            </li>
+            <li>
+                必要に応じて、{@link android.support.v4.app.TaskStackBuilder#editIntentAt TaskStackBuilder.editIntentAt()} を呼び出し、スタック上の {@link android.content.Intent} オブジェクトに引数を追加します。
+
+これは、場合によっては、ターゲット {@link android.app.Activity} に、ユーザーが 
+
+ <i>[戻る]</i> を使って移動したときに、適切なデータが表示されるようにするために必要です。
+            </li>
+            <li>
+                {@link android.support.v4.app.TaskStackBuilder#getPendingIntent getPendingIntent()} を呼び出し、このバックスタックのための {@link android.app.PendingIntent} を取得します。
+
+                この {@link android.app.PendingIntent} は、{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent setContentIntent()} の引数として使用できます。
+
+
+            </li>
+        </ol>
+     </li>
+</ol>
+<p>
+    次のコード スニペットでは、上記の処理を行っています。
+</p>
+<pre>
+...
+Intent resultIntent = new Intent(this, ResultActivity.class);
+TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
+// Adds the back stack
+stackBuilder.addParentStack(ResultActivity.class);
+// Adds the Intent to the top of the stack
+stackBuilder.addNextIntent(resultIntent);
+// Gets a PendingIntent containing the entire back stack
+PendingIntent resultPendingIntent =
+        stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
+...
+NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+builder.setContentIntent(resultPendingIntent);
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+mNotificationManager.notify(id, builder.build());
+</pre>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ExtendedNotification">特殊なアクティビティの PendingIntent を設定する</h3>
+<p>
+    次のセクションでは、特殊なアクティビティのための {@link android.app.PendingIntent} の設定方法を説明します。
+
+</p>
+<p>
+    特殊な {@link android.app.Activity} はバックスタックを必要としません。そのため、マニフェストにその {@link android.app.Activity} の階層を定義する必要はありません。また、バックスタックを作成するために {@link android.support.v4.app.TaskStackBuilder#addParentStack  addParentStack()} を呼び出す必要もありません。
+
+
+
+代わりに、マニフェストを利用して {@link android.app.Activity} のタスク オプションを設定し、{@link android.app.PendingIntent#getActivity getActivity()} を呼び出して {@link android.app.PendingIntent} を作成します。
+
+
+</p>
+<ol>
+    <li>
+        マニフェストで、{@link android.app.Activity} の <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 要素に、次の属性を追加します。
+
+
+        <dl>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#nm">android:name</a>="<i>activityclass</i>"</code>
+            </dt>
+            <dd>
+                アクティビティの完全修飾クラス名。
+            </dd>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">android:taskAffinity</a>=""</code>
+            </dt>
+            <dd>
+                コードにセットした {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK} フラグと組み合わせて、{@link android.app.Activity} がアプリケーションのデフォルトのタスクに入ることがないようにします。
+
+
+アプリケーションのアフィニティがデフォルトのままの既存タスクは影響を受けません。
+
+            </dd>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">android:excludeFromRecents</a>="true"</code>
+            </dt>
+            <dd>
+                新しいタスクを、 <i>[最近使ったアプリ]</i> から除外し、ユーザーが新しいタスクに間違って戻ることがないようにします。
+
+            </dd>
+        </dl>
+        <p>
+            次のスニペットは、この要素を示しています。
+        </p>
+<pre>
+&lt;activity
+    android:name=".ResultActivity"
+...
+    android:launchMode="singleTask"
+    android:taskAffinity=""
+    android:excludeFromRecents="true"&gt;
+&lt;/activity&gt;
+...
+</pre>
+    </li>
+    <li>
+        通知をビルドし発行します。
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                {@link android.app.Activity} を開始する {@link android.content.Intent} を作成します。
+
+            </li>
+            <li>
+                フラグ {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK} と {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TASK FLAG_ACTIVITY_CLEAR_TASK} を指定して {@link android.content.Intent#setFlags setFlags()} を呼び出し、{@link android.app.Activity} を新しい空のタスクで開始するように設定します。
+
+
+
+
+            </li>
+            <li>
+                {@link android.content.Intent} に、必要に応じてオプションを設定します。
+            </li>
+            <li>
+                {@link android.app.PendingIntent#getActivity getActivity()} を呼び出し、{@link android.content.Intent} から {@link android.app.PendingIntent} を作成します。
+
+                この {@link android.app.PendingIntent} は、{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent setContentIntent()} の引数として使用できます。
+
+
+            </li>
+        </ol>
+    <p>
+        次のコード スニペットでは、上記の処理を行っています。
+    </p>
+<pre>
+// Instantiate a Builder object.
+NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+// Creates an Intent for the Activity
+Intent notifyIntent =
+        new Intent(this, ResultActivity.class);
+// Sets the Activity to start in a new, empty task
+notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+                        | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+// Creates the PendingIntent
+PendingIntent notifyPendingIntent =
+        PendingIntent.getActivity(
+        this,
+        0,
+        notifyIntent,
+        PendingIntent.FLAG_UPDATE_CURRENT
+);
+
+// Puts the PendingIntent into the notification builder
+builder.setContentIntent(notifyPendingIntent);
+// Notifications are issued by sending them to the
+// NotificationManager system service.
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// Builds an anonymous Notification object from the builder, and
+// passes it to the NotificationManager
+mNotificationManager.notify(id, builder.build());
+</pre>
+    </li>
+</ol>
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="Progress">通知に進捗状況を表示する</h2>
+<p>
+    通知には、進行中の処理の状況をユーザーに示すアニメーション表示の進捗インジケーターを表示できます。
+その処理にどれくらいの時間がかかるかと、ある時点でその処理がどれだけ完了しているかを見積もることができる場合、「確定(determinate)」タイプのインジケーター(プログレスバー)を使用します。
+
+処理にかかる時間を見積もることができない場合は、「不確定(indeterminate)」タイプのインジケーター(アクティビティ インジケーター)を使用します。
+
+</p>
+<p>
+    進捗インジケーターは、{@link android.widget.ProgressBar} クラスのプラットフォーム実装で表示されます。
+
+</p>
+<p>
+    Android 4.0 以降のプラットフォーム上で進捗インジケーターを使用するには、{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()} を呼び出します。
+それ以前のバージョンでは、{@link android.widget.ProgressBar} ビューを含むカスタム通知レイアウトを作成する必要があります。
+
+
+</p>
+<p>
+    次のセクションでは、{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()} を使用して、通知に進捗状況を表示する方法を説明します。
+
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="FixedProgress">範囲固定の進捗インジケーターを表示する</h3>
+<p>
+    確定プログレスバーを表示するには、{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(max, progress, false)} を呼び出して通知にバーを追加してから、その通知を発行します。
+
+処理の進行に合わせて、<code>progress</code> の値を増やし、通知を更新します。
+処理の最後には、<code>progress</code> が <code>max</code> と等しくなります。
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()} を呼び出す一般的な方法は、<code>max</code> に 100 を設定して、処理の「進捗度」の値である <code>progress</code> の値を増やすことです。
+
+
+
+</p>
+<p>
+    処理の完了時には、プログレスバーを表示したままにすることも、削除することもできます。いずれの場合でも、通知のテキストを更新して、処理が完了したことを示すことを忘れないでください。
+
+    プログレスバーを削除するには、{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, false)} を呼び出します。
+
+次に例を示します。
+</p>
+<pre>
+...
+mNotifyManager =
+        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+mBuilder = new NotificationCompat.Builder(this);
+mBuilder.setContentTitle("Picture Download")
+    .setContentText("Download in progress")
+    .setSmallIcon(R.drawable.ic_notification);
+// Start a lengthy operation in a background thread
+new Thread(
+    new Runnable() {
+        &#64;Override
+        public void run() {
+            int incr;
+            // Do the "lengthy" operation 20 times
+            for (incr = 0; incr &lt;= 100; incr+=5) {
+                    // Sets the progress indicator to a max value, the
+                    // current completion percentage, and "determinate"
+                    // state
+                    mBuilder.setProgress(100, incr, false);
+                    // Displays the progress bar for the first time.
+                    mNotifyManager.notify(0, mBuilder.build());
+                        // Sleeps the thread, simulating an operation
+                        // that takes time
+                        try {
+                            // Sleep for 5 seconds
+                            Thread.sleep(5*1000);
+                        } catch (InterruptedException e) {
+                            Log.d(TAG, "sleep failure");
+                        }
+            }
+            // When the loop is finished, updates the notification
+            mBuilder.setContentText("Download complete")
+            // Removes the progress bar
+                    .setProgress(0,0,false);
+            mNotifyManager.notify(ID, mBuilder.build());
+        }
+    }
+// Starts the thread by calling the run() method in its Runnable
+).start();
+</pre>
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ActivityIndicator">進行中アクティビティ インジケーターを表示する</h3>
+<p>
+    不確定アクティビティ インジケーターを表示するには、{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, true)}(最初の 2 つの引数は無視されます)を使用して通知に追加し、通知を発行します。
+
+このインジケーターの外見は、アニメーションが常時表示されていること以外はプログレスバーと同じです。
+
+</p>
+<p>
+    処理の開始時に通知を発行します。通知を変更するまで、アニメーションは表示され続けます。
+処理が完了したら、{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, false)} を呼び出し、次に通知を更新してアクティビティ インジケーターを削除します。
+
+
+    この操作を行わないと、処理が完了してもアニメーションが表示され続けることになります。また、通知のテキストを更新して、処理が完了したことを示すことを忘れないでください。
+
+</p>
+<p>
+    アクティビティ インジケーターの仕組みについては、上記のスニペットをご覧ください。次のコード行を探します。
+</p>
+<pre>
+// Sets the progress indicator to a max value, the current completion
+// percentage, and "determinate" state
+mBuilder.setProgress(100, incr, false);
+// Issues the notification
+mNotifyManager.notify(0, mBuilder.build());
+</pre>
+<p>
+    見つけたコードを次のコードに置き換えます。
+</p>
+<pre>
+ // Sets an activity indicator for an operation of indeterminate length
+mBuilder.setProgress(0, 0, true);
+// Issues the notification
+mNotifyManager.notify(0, mBuilder.build());
+</pre>
+
+<h2 id="metadata">通知メタデータ</h2>
+
+<p>通知は、次の {@link android.support.v4.app.NotificationCompat.Builder} メソッドを使用して割り当てるメタデータによって、ソートされることがあります。
+</p>
+
+<ul>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#setCategory(java.lang.String) setCategory()} は、端末が優先モードの場合のアプリ通知の処理方法を設定します(たとえば、通知が着信、インスタント メッセージ、アラームを知らせる場合など)。
+
+</li>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#setPriority(int) setPriority()} は優先度フィールドに {@code PRIORITY_MAX} または {@code PRIORITY_HIGH} が設定されている通知が、音声または振動を発する通知の場合、小さなフローティング ウィンドウに表示されるようにします。
+
+</li>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#addPerson(java.lang.String) addPerson()} を使用すると、通知に人物のリストを追加できます。
+アプリは、このリストを利用して、システムに合図を送り、特定の人達からの通知をグループ化したり、それらの人達からの通知を重要度が高い通知としてランク付けしたりします。
+
+</li>
+</ul>
+
+<div class="figure" style="width:230px">
+  <img src="{@docRoot}images/ui/notifications/heads-up.png" alt="" width="" height="" id="figure3" />
+  <p class="img-caption">
+    <strong>図 3.</strong> ヘッドアップ通知を表示する全画面アクティビティ
+  </p>
+</div>
+
+<h2 id="Heads-up">ヘッドアップ通知</h2>
+
+<p>Android 5.0(API レベル 21)では、端末がアクティブな場合(端末がロックされておらず、画面がオンになっている場合)に、小さなフローティング ウィンドウ(<em>ヘッドアップ通知</em>とも呼ばれます)に通知を表示することができます。
+
+これらの通知は、ヘッドアップ通知がアクション ボタンも表示すること以外は、通知をコンパクトにしたものと同じように表示されます。
+
+使用中のアプリから移動しなくても、ユーザーは、ヘッドアップ通知に反応したりヘッドアップ通知を閉じたりすることができます。
+</p>
+
+<p>ヘッドアップ通知のトリガーとなる条件には、たとえば以下のようなものがあります。</p>
+
+<ul>
+  <li>ユーザーのアクティビティが全画面モードであること(アプリが {@link android.app.Notification#fullScreenIntent} を使用していること)、または
+</li>
+  <li>その通知が高い優先度を持ち、着信音または振動を使用していること
+</li>
+</ul>
+
+<h2 id="lockscreenNotification">ロック画面通知</h2>
+
+<p>Android 5.0(API レベル 21)では、通知をロック画面に表示できるようになりました。
+アプリは、この機能を利用してメディア再生コントロールやその他の一般的なアクションを提供できます。
+ユーザーは設定でロック画面に通知を表示するかどうか選ぶことができます。また、開発者も、アプリからの通知をロック画面に表示するかどうか指定できます。
+</p>
+
+<h3 id="visibility">可視性を設定する</h3>
+
+<p>アプリでは、保護されたロック画面に表示される通知の表示の詳細レベルをコントロールできます。
+{@link android.support.v4.app.NotificationCompat.Builder#setVisibility(int) setVisibility()} を呼び出し、次の値のいずれかを指定してください。
+</p>
+
+<ul>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC} では、通知のフルコンテンツが表示されます。
+</li>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_SECRET} では、ロック画面に、通知のいずれの部分も表示しません。
+</li>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE} では、通知のアイコンやコンテンツのタイトルなどの基本的な情報を表示しますが、通知のフルコンテンツは表示されません。
+</li>
+</ul>
+
+<p>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE} を設定すると、特定の内容を非表示にした代替バージョンの通知コンテンツを提供できます。
+たとえば、SMS アプリで <em>3 件の新しいテキスト メッセージがある</em>ことを示す通知を表示する場合に、メッセージ コンテンツと送信者を非表示にできます。
+
+この代替通知を提供するには、{@link android.support.v4.app.NotificationCompat.Builder} を使用してまず置換用の通知を作成し、
+プライベート通知オブジェクトを作成したら、その置換用の通知をプライベート通知オブジェクトに {@link android.support.v4.app.NotificationCompat.Builder#setPublicVersion(android.app.Notification) setPublicVersion()} メソッドを使用してアタッチしてください。
+
+
+</p>
+
+<h3 id="controllingMedia">ロック画面でのメディア再生をコントロールする</h3>
+
+<p>Android 5.0(API レベル 21)では、{@link android.media.RemoteControlClient} を使用したメディア コントロールは、ロック画面に表示されません。このクラスは廃止済みです。
+代わりに、{@link android.app.Notification.MediaStyle} テンプレートと {@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()} メソッドを使用します。このメソッドは、アクションをクリックできるアイコンに変換します。
+
+
+</p>
+
+<p class="note"><strong>注:</strong> このテンプレートと {@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()} メソッドはサポート ライブラリには含まれません。そのため、これらの機能は Android 5.0 以降でのみ動作します。
+
+</p>
+
+<p>Android 5.0 でロック画面にメディア再生コントロールを表示するには、可視性を上記の{@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC} に設定します。
+その後、次のサンプルコードに従って、アクションを追加し {@link android.app.Notification.MediaStyle} テンプレートを設定します。
+
+</p>
+
+<pre>
+Notification notification = new Notification.Builder(context)
+    // Show controls on lock screen even when user hides sensitive content.
+    .setVisibility(Notification.VISIBILITY_PUBLIC)
+    .setSmallIcon(R.drawable.ic_stat_player)
+    // Add media control buttons that invoke intents in your media service
+    .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0
+    .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent)  // #1
+    .addAction(R.drawable.ic_next, "Next", nextPendingIntent)     // #2
+    // Apply the media style template
+    .setStyle(new Notification.MediaStyle()
+    .setShowActionsInCompactView(1 /* #1: pause button */)
+    .setMediaSession(mMediaSession.getSessionToken())
+    .setContentTitle("Wonderful music")
+    .setContentText("My Awesome Band")
+    .setLargeIcon(albumArtBitmap)
+    .build();
+</pre>
+
+<p class="note"><strong>注:</strong> {@link android.media.RemoteControlClient} の廃止は、他の点でもメディアのコントロールに影響を与えています。
+新しい API でのメディア セッションの管理と再生のコントロールの詳細については、<a href="{@docRoot}about/versions/android-5.0.html#MediaPlaybackControl">メディア再生コントロール</a>をご覧ください。
+
+</p>
+
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="CustomNotification">カスタム通知レイアウト</h2>
+<p>
+    通知フレームワークでは、カスタム通知レイアウトを定義することができます。カスタム通知レイアウトは、{@link android.widget.RemoteViews} オブジェクトに通知の外観を定義します。
+
+    カスタム レイアウトの通知は通常の通知と似ていますが、XML レイアウト ファイルに定義された {@link android.widget.RemoteViews} が使用されています。
+
+</p>
+<p>
+    カスタム通知レイアウトで使用できる高さは、通知ビューによって異なります。標準ビュー レイアウトでは 64 dp までで、拡張ビュー レイアウトでは 256 dp までです。
+
+</p>
+<p>
+    カスタム通知レイアウトを定義するには、まず、XML レイアウト ファイルをインフレートする {@link android.widget.RemoteViews} オブジェクトのインスタンスを作成します。
+次に、{@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()} などのメソッドを呼び出す代わりに、{@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()} を呼び出します。
+
+
+コンテンツの詳細をカスタム通知に設定するには、{@link android.widget.RemoteViews} のメソッドを使用してビューの子の値を設定します。
+
+
+</p>
+<ol>
+    <li>
+        別ファイルに通知の XML レイアウトを作成します。ファイル名はどのような名前でもかまいませんが、拡張子は必ず <code>.xml</code> にします。
+
+    </li>
+    <li>
+        アプリで、{@link android.widget.RemoteViews} メソッドを使用して、通知のアイコンとテキストを定義します。
+{@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()} を呼び出して、この {@link android.widget.RemoteViews} オブジェクトを {@link android.support.v4.app.NotificationCompat.Builder} にセットします。
+
+{@link android.widget.RemoteViews} オブジェクトに背景 {@link android.graphics.drawable.Drawable} を設定することは避けてください。文字が読めなくなる場合があります。
+
+
+    </li>
+</ol>
+<p>
+    {@link android.widget.RemoteViews} クラスには、通知のレイアウトに {@link android.widget.Chronometer} や {@link android.widget.ProgressBar} を簡単に追加できるメソッドも含まれています。
+
+通知のカスタム レイアウトの作成についての詳細は、{@link android.widget.RemoteViews} のリファレンスをご覧ください。
+
+</p>
+<p class="caution">
+    <strong>警告:</strong> カスタム通知レイアウトを使用する場合、そのカスタム通知レイアウトがさまざまな画面の向きと解像度で適切に表示されるかどうか、十分に注意してください。
+すべてのビュー レイアウトでさまざまな画面の向きと解像度への対応に注意する必要がありますが、通知ドロワーのスペースが限られているため、通知では特に注意する必要があります。
+
+カスタム レイアウトは複雑にし過ぎないようにしてください。また、必ずさまざまな構成でテストするようにしてください。
+
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h4>カスタム通知のテキストにスタイル リソースを使用する</h4>
+<p>
+    カスタム通知のテキストには、必ずスタイル リソースを使用してください。通知の背景色は端末やバージョンによって異なりますが、スタイル リソースを使用することで、この問題に対処できます。
+
+Android 2.3 以降では、標準の通知レイアウトのテキストのスタイルは、システムによって定義されています。
+Android 2.3 以降を対象とするアプリケーションで同じスタイルを使用する場合は、表示される背景でテキストを読むことができるかご確認ください。
+
+</p>
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/overview.jd b/docs/html-intl/intl/ja/guide/topics/ui/overview.jd
new file mode 100644
index 0000000..08d9356
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/ui/overview.jd
@@ -0,0 +1,71 @@
+page.title=UI の概要
+@jd:body
+
+
+<p>Android アプリのすべてのユーザー インターフェース エレメントは、{@link android.view.View} と {@link android.view.ViewGroup} オブジェクトを使ってビルドされています。
+{@link android.view.View} は、ユーザーが相互操作できる、画面上で何かを描画するオブジェクトです。
+{@link android.view.ViewGroup} は、インターフェースのレイアウトを定義するために、その他の {@link android.view.View}(と {@link android.view.ViewGroup})オブジェクトを保持するオブジェクトです。
+
+</p>
+
+<p>Android では、共通の入力コントロール(ボタンやテキスト フィールドなど)とさまざまなレイアウトモデル(線形レイアウトや相対レイアウトなど)を提供する {@link android.view.View} と {@link android.view.ViewGroup} サブクラスの両方が提供されています。
+
+</p>
+
+
+<h2 id="Layout">ユーザー インターフェースのレイアウト</h2>
+
+<p>アプリの各コンポーネントのユーザー インターフェースは、図 1 のように、{@link
+android.view.View} と {@link android.view.ViewGroup} オブジェクトの階層を使って定義されます。各ビューグループは、子ビューをまとめる非表示のコンテナであり、子ビューは UI の一部を描画する入力コントロールまたはその他のウィジェットです。この階層ツリーは、必要に応じて単純にまたは複雑にすることができますが、パフォーマンスの点では単純な階層ツリーが最適です。
+
+
+
+</p>
+
+<img src="{@docRoot}images/viewgroup.png" alt="" />
+<p class="img-caption"><strong>図 1.</strong> UI レイアウトを定義するビュー階層の図。
+</p>
+
+<p>レイアウトを宣言するには、コードで {@link android.view.View} オブジェクトのインスタンスを作成してツリーのビルドを始めることができますが、レイアウトを定義する最も簡単で効率的な方法は XML ファイルを使用することです。XML では HTML のように、人が見える構造でレイアウトが提供されます。
+
+</p>
+
+<p>ビューの XML 要素名は、それが表す Android クラスによって決まります。<code>&lt;TextView&gt;</code> 要素は UI で {@link android.widget.TextView} ウィジェットを、<code>&lt;LinearLayout&gt;</code> 要素は {@link android.widget.LinearLayout} ビューグループを作成します。
+
+
+ </p>
+
+<p>たとえば、テキストビューとボタンを含む単純な縦レイアウトは次のようになります。</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="fill_parent" 
+              android:layout_height="fill_parent"
+              android:orientation="vertical" >
+    &lt;TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="I am a TextView" />
+    &lt;Button android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="I am a Button" />
+&lt;/LinearLayout>
+</pre>
+
+<p>アプリでレイアウト リソースを読み込むとき、Android はレイアウトの各ノードを初期化して、他の動作の定義、オブジェクト状態の照会、レイアウトの変更をするのに使用できるランタイム オブジェクトにします。
+
+</p>
+
+<p>UI レイアウト作成のガイドについては、<a href="declaring-layout.html">XML レイアウト</a>をご覧ください。
+
+
+  
+<h2 id="UIComponents">ユーザー インターフェース コンポーネント</h2>
+
+<p>{@link android.view.View} と {@link android.view.ViewGroup} オブジェクトを使用してすべての UI をビルドする必要はありません。
+Android では、コンテンツの定義に必要な標準的な UI レイアウトを提供する複数のアプリ コンポーネントが提供されます。
+これらの各 UI コンポーネントには、それぞれのドキュメントで説明されている固有の API(<a href="{@docRoot}guide/topics/ui/actionbar.html">アクションバー</a>、<a href="{@docRoot}guide/topics/ui/dialogs.html">ダイアログ</a>、<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">状態通知</a>など)があります。
+</p>
+
+
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/settings.jd b/docs/html-intl/intl/ja/guide/topics/ui/settings.jd
new file mode 100644
index 0000000..9e6bb9d
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/ui/settings.jd
@@ -0,0 +1,1202 @@
+page.title=設定
+page.tags=preference,preferenceactivity,preferencefragment
+
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本書の内容</h2>
+<ol>
+  <li><a href="#Overview">概要</a>
+    <ol>
+      <li><a href="#SettingTypes">プリファレンス</a></li>
+    </ol>
+  </li>
+  <li><a href="#DefiningPrefs">XML にプリファレンスを定義する</a>
+    <ol>
+      <li><a href="#Groups">設定グループを作成する</a></li>
+      <li><a href="#Intents">インテントを使用する</a></li>
+    </ol>
+  </li>
+  <li><a href="#Activity">プリファレンス アクティビティを作成する</a></li>
+  <li><a href="#Fragment">プリファレンス フラグメントを使用する</a></li>
+  <li><a href="#Defaults">デフォルト値を設定する</a></li>
+  <li><a href="#PreferenceHeaders">プリファレンス ヘッダーを使用する</a>
+    <ol>
+      <li><a href="#CreateHeaders">ヘッダー ファイルを作成する</a></li>
+      <li><a href="#DisplayHeaders">ヘッダーを表示する</a></li>
+      <li><a href="#BackCompatHeaders">旧バージョンでプリファレンス ヘッダーをサポートする</a></li>
+    </ol>
+  </li>
+  <li><a href="#ReadingPrefs">プリファレンスを読み込む</a>
+    <ol>
+      <li><a href="#Listening">プリファレンスの変化をリッスンする</a></li>
+    </ol>
+  </li>
+  <li><a href="#NetworkUsage">ネットワークの使用を管理する</a></li>
+  <li><a href="#Custom">カスタム プリファレンスを作成する</a>
+    <ol>
+      <li><a href="#CustomSelected">ユーザー インターフェースを指定する</a></li>
+      <li><a href="#CustomSave">設定の値を保存する</a></li>
+      <li><a href="#CustomInitialize">現在の値を初期化する</a></li>
+      <li><a href="#CustomDefault">デフォルト値を提供する</a></li>
+      <li><a href="#CustomSaveState">プリファレンスの状態を保存し復元する</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>キークラス</h2>
+<ol>
+  <li>{@link android.preference.Preference}</li>
+  <li>{@link android.preference.PreferenceActivity}</li>
+  <li>{@link android.preference.PreferenceFragment}</li>
+</ol>
+
+
+<h2>関連ドキュメント</h2>
+<ol>
+  <li><a href="{@docRoot}design/patterns/settings.html">Settings design guide</a></li>
+</ol>
+</div>
+</div>
+
+
+
+
+<p>多くの場合、アプリケーションには、ユーザーがアプリの機能や動作を変更できる設定が含まれています。たとえば、一部のアプリでは、通知を有効にするかどうかや、アプリケーションがクラウドとデータを同期する頻度を、ユーザーが指定できます。
+
+</p>
+
+<p>アプリに設定機能を提供するには、Android の {@link android.preference.Preference} API を使用して、他の Android アプリ(システム設定を含む)の操作と整合性のあるインターフェースを構築する必要があります。
+
+このドキュメントでは、{@link android.preference.Preference} API を使用して、アプリの設定機能を構築する方法について説明します。
+</p>
+
+<div class="note design">
+<p><strong>設定の設計</strong></p>
+  <p>設定の設計方法については、<a href="{@docRoot}design/patterns/settings.html">設定</a>のデザインガイドをご覧ください。</p>
+</div>
+
+
+<img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
+<p class="img-caption"><strong>図 1.</strong> Android SMS アプリの設定のスクリーンショット
+{@link android.preference.Preference} で定義されたアイテムを選択すると、設定を変更するためのインターフェースが開きます。
+</p>
+
+
+
+
+<h2 id="Overview">概要</h2>
+
+<p>設定は、{@link android.view.View} オブジェクトを使用してユーザー インターフェースを作成する方法ではなく、XML ファイルで宣言された {@link android.preference.Preference} クラスの各種のサブクラスを使用する方法で作成されます。
+
+</p>
+
+<p>1 つの {@link android.preference.Preference} オブジェクトが、1 つの設定の構成要素になります。
+各 {@link android.preference.Preference} はアイテムとしてリストに表示され、ユーザーが設定を変更するための適切な UI を提供します。
+たとえば、{@link android.preference.CheckBoxPreference} はチェックボックスを表示するリストアイテムを作成し、{@link android.preference.ListPreference} は、選択リスト付きのダイアログを開くアイテムを作成します。
+
+</p>
+
+<p>追加した各 {@link android.preference.Preference} は、アプリの設定のためのデフォルトの {@link android.content.SharedPreferences} ファイルに設定を保存するためにシステムが使用する対応するキーと値のペアを持ちます。
+
+ユーザーが設定を変更する場合、システムが {@link android.content.SharedPreferences} ファイルの対応する値を更新します。
+関連する {@link android.content.SharedPreferences} ファイルを直接操作することが必要なのは、ユーザーの設定に基づいてアプリの動作を決定するために値を読み込むことが必要な場合のみです。
+
+</p>
+
+<p>各設定の {@link android.content.SharedPreferences} に保存される値のデータ型は、次のいずれかにすることができます。
+</p>
+
+<ul>
+  <li>Boolean</li>
+  <li>Float</li>
+  <li>Int</li>
+  <li>Long</li>
+  <li>String</li>
+  <li>String {@link java.util.Set}</li>
+</ul>
+
+<p>アプリの設定の UI は {@link android.view.View} オブジェクトではなく {@link android.preference.Preference} で作成されているため、リストの設定を表示するには、専用の {@link android.app.Activity} サブクラスまたは {@link android.app.Fragment} サブクラスを使用する必要があります。
+
+
+</p>
+
+<ul>
+  <li>アプリが 3.0 よりも前のバージョンの Android(API レベル 10 以下)をサポートしている場合は、{@link android.preference.PreferenceActivity} クラスを継承してアクティビティを作成する必要があります。
+</li>
+  <li>Android 3.0 以降では、代わりに、アプリの設定を表示する {@link android.preference.PreferenceFragment} をホストする従来の {@link android.app.Activity} を使用します。ただし、設定のグループが複数ある場合は、{@link android.preference.PreferenceActivity} を使用して大きな画面用の 2 ペイン レイアウトを作成することもできます。
+
+
+</li>
+</ul>
+
+<p>{@link android.preference.PreferenceActivity} と {@link android.preference.PreferenceFragment} のインスタンスの設定方法は、<a href="#Activity">プリファレンス アクティビティを作成する</a>と<a href="#Fragment">プリファレンス フラグメントを使用する</a>セクションをご覧ください。
+
+</p>
+
+
+<h3 id="SettingTypes">プリファレンス</h3>
+
+<p>アプリの各設定は、{@link android.preference.Preference} クラスの個々のサブクラスに相当します。
+各サブクラスには、設定のタイトルやデフォルト値などを指定できる一連の核となるプロパティが含まれています。
+また、各サブクラスは、専用のプロパティとユーザー インターフェースを提供しています。
+たとえば、図 1. は、SMS アプリの設定のスクリーンショットです。
+設定画面の各リスト アイテムは、それぞれ異なる {@link android.preference.Preference} オブジェクトに基づいています。
+</p>
+
+<p>以下は、最も一般的なプリファレンスの一部です。</p>
+
+<dl>
+  <dt>{@link android.preference.CheckBoxPreference}</dt>
+  <dd>有効または無効にする設定のチェックボックス付きのアイテムを表示します。保存される値は、Boolean です(オンの場合、<code>true</code>)。
+</dd>
+
+  <dt>{@link android.preference.ListPreference}</dt>
+  <dd>ラジオボタンのリスト付きのダイアログを開きます。保存される値は、サポートされるデータ型(上記参照)であればどのデータ型にもできます。
+</dd>
+
+  <dt>{@link android.preference.EditTextPreference}</dt>
+  <dd>{@link android.widget.EditText} ウィジェット付きのダイアログを開きます。保存される値は、{@link java.lang.String} です。
+</dd>
+</dl>
+
+<p>その他のサブクラスと対応するプロパティについては、{@link android.preference.Preference} クラスをご覧ください。
+</p>
+
+<p>もちろん、組み込みのクラスがすべてのニーズを満たすわけではなく、アプリケーションがより特殊な機能を必要とする可能性もあります。
+たとえば、プラットフォームは、現時点では、数字や日付を選択するための {@link android.preference.Preference} クラスを提供していません。
+そのため、独自の {@link android.preference.Preference} サブクラスを定義することが必要になる場合もあります。
+詳細については、<a href="#Custom">カスタム プリファレンスを作成する</a>セクションをご覧ください。</p>
+
+
+
+<h2 id="DefiningPrefs">XML にプリファレンスを定義する</h2>
+
+<p>実行時に新しい {@link android.preference.Preference} オブジェクトのインスタンスを作成することもできますが、{@link android.preference.Preference} オブジェクトの階層で XML に設定のリストを定義する必要があります。
+
+XML ファイルは更新が容易な簡単に読むことができる構造を持つため XML ファイルを使用して設定のコレクションを定義することをお勧めします。
+また、アプリの設定は通常、事前設定されていますが、設定のコレクションを実行時に変更することもできます。
+</p>
+
+<p>各 {@link android.preference.Preference} サブクラスは、{@code &lt;CheckBoxPreference&gt;} などのクラス名と一致する XML 要素で定義できます。
+</p>
+
+<p>この XML ファイルは、{@code res/xml/} ディレクトリに保存する必要があります。この XML ファイルには好きな名前を付けることができますが、一般的には、{@code preferences.xml} という名前が使用されています。
+階層の分岐(この分岐がそれ自身の設定のリストを開きます)が {@link android.preference.PreferenceScreen} のネストされたインスタンスを使用して宣言されているため、必要なファイルは通常 1 ファイルのみです。
+
+</p>
+
+<p class="note"><strong>注:</strong> 複数ペイン レイアウトの設定を作成する場合は、フラグメントごとに別々の XML ファイルが必要です。
+</p>
+
+<p>XML ファイルのルートノードは、{@link android.preference.PreferenceScreen &lt;PreferenceScreen&gt;} 要素にする必要があります。
+この要素内に、各 {@link android.preference.Preference} を追加します。
+{@link android.preference.PreferenceScreen &lt;PreferenceScreen&gt;} 要素内に追加したそれぞれの子は、設定のリストで 1 つのアイテムとして表示されます。
+
+</p>
+
+<p>次に例を示します。</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;CheckBoxPreference
+        android:key="pref_sync"
+        android:title="@string/pref_sync"
+        android:summary="@string/pref_sync_summ"
+        android:defaultValue="true" />
+    &lt;ListPreference
+        android:dependency="pref_sync"
+        android:key="pref_syncConnectionType"
+        android:title="@string/pref_syncConnectionType"
+        android:dialogTitle="@string/pref_syncConnectionType"
+        android:entries="@array/pref_syncConnectionTypes_entries"
+        android:entryValues="@array/pref_syncConnectionTypes_values"
+        android:defaultValue="@string/pref_syncConnectionTypes_default" />
+&lt;/PreferenceScreen>
+</pre>
+
+<p>この例には、{@link android.preference.CheckBoxPreference} と {@link android.preference.ListPreference} が含まれています。
+どちらのアイテムにも次の 3 つの属性が含まれています。</p>
+
+<dl>
+  <dt>{@code android:key}</dt>
+  <dd>この属性は、データ値を保持するプリファレンスで必要です。設定の値を {@link android.content.SharedPreferences} に保存するときにシステムが使用する一意のキー(文字列)を指定します。
+
+ 
+  <p>プリファレンスが {@link android.preference.PreferenceCategory} または{@link android.preference.PreferenceScreen} の場合、またはプリファレンスが {@link android.content.Intent} の呼び出しを指定している場合(<a href="#Intents">{@code &lt;intent&gt;}</a> 要素を使用)、または {@link android.app.Fragment} の表示を指定している場合(<a href="{@docRoot}reference/android/preference/Preference.html#attr_android:fragment">{@code android:fragment}</a> 属性を使用)のみ、インスタンスでこの属性は<em>必要ありません</em>。
+
+
+</p>
+  </dd>
+  <dt>{@code android:title}</dt>
+  <dd>この属性は、ユーザーに表示される設定の名前です。</dd>
+  <dt>{@code android:defaultValue}</dt>
+  <dd>この属性は、システムが {@link android.content.SharedPreferences} ファイルに設定する必要がある初期値を指定します。
+すべての設定のデフォルト値を指定する必要があります。
+</dd>
+</dl>
+
+<p>その他のサポートされている属性については、{@link android.preference.Preference}(と対応するサブクラス)のドキュメントをご覧ください。
+</p>
+
+
+<div class="figure" style="width:300px">
+  <img src="{@docRoot}images/ui/settings/settings-titles.png" alt="" />
+  <p class="img-caption"><strong>図 2.</strong> カテゴリを設定しタイトルを付ける
+ <br/><b>1.</b>カテゴリは、{@link android.preference.PreferenceCategory &lt;PreferenceCategory&gt;} 要素で指定します。
+ <br/><b>2.</b>タイトルは、{@code android:title} 属性で指定します。
+</p>
+</div>
+
+
+<p>設定のリストが 10 アイテムを超える場合は、タイトルを追加して設定のグループを定義するか、それらのグループを別の画面に表示することをお勧めします。
+
+詳細については、次のセクションで説明します。</p>
+
+
+<h3 id="Groups">設定グループを作成する</h3>
+
+<p>10 以上の設定のリストがある場合、ユーザーが目を通して把握し処理することが難しくなる場合があります。
+この問題を解決するには、設定の一部またはすべてをグループに分割し、1 つの長いリストを複数の短いリストに変えます。
+
+関連設定のグループは、次の 2 つの方法のいずれかで表示できます。</p>
+
+<ul>
+  <li><a href="#Titles">タイトルを使用する</a></li>
+  <li><a href="#Subscreens">サブ画面を使用する</a></li>
+</ul>
+
+<p>これらのグループ化方法の 1 つまたは両方を利用して、アプリの設定を整理できます。使用する方法と設定の分割方法を決定する際は、Android Design の<a href="{@docRoot}design/patterns/settings.html">Settings</a> ガイドのガイドラインに従ってください。
+
+</p>
+
+
+<h4 id="Titles">タイトルを使用する</h4>
+
+<p>設定のグループの間に見出しを入れる場合(図 2. 参照)、{@link android.preference.Preference} オブジェクトをグループごとに 1 つの {@link android.preference.PreferenceCategory} 内にセットしてください。
+
+</p>
+
+<p>次に例を示します。</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;PreferenceCategory 
+        android:title="&#64;string/pref_sms_storage_title"
+        android:key="pref_key_storage_settings">
+        &lt;CheckBoxPreference
+            android:key="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_auto_delete"
+            android:title="&#64;string/pref_title_auto_delete"
+            android:defaultValue="false"... />
+        &lt;Preference 
+            android:key="pref_key_sms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_sms_delete"... />
+        &lt;Preference 
+            android:key="pref_key_mms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_mms_delete" ... />
+    &lt;/PreferenceCategory>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h4 id="Subscreens">サブ画面を使用する</h4>
+
+<p>設定のグループをサブ画面に配置する場合(図 3. 参照)、{@link android.preference.Preference} オブジェクトのグループを {@link android.preference.PreferenceScreen} 内にセットしてください。
+
+</p>
+
+<img src="{@docRoot}images/ui/settings/settings-subscreen.png" alt="" />
+<p class="img-caption"><strong>図 3.</strong> 子画面を設定する。{@code &lt;PreferenceScreen&gt;} は、選択されると、ネストされた設定を表示するための個別のリストを開くアイテムを作成します。
+
+</p>
+
+<p>次に例を示します。</p>
+
+<pre>
+&lt;PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;!-- opens a subscreen of settings -->
+    &lt;PreferenceScreen
+        android:key="button_voicemail_category_key"
+        android:title="&#64;string/voicemail"
+        android:persistent="false">
+        &lt;ListPreference
+            android:key="button_voicemail_provider_key"
+            android:title="&#64;string/voicemail_provider" ... />
+        &lt;!-- opens another nested subscreen -->
+        &lt;PreferenceScreen
+            android:key="button_voicemail_setting_key"
+            android:title="&#64;string/voicemail_settings"
+            android:persistent="false">
+            ...
+        &lt;/PreferenceScreen>
+        &lt;RingtonePreference
+            android:key="button_voicemail_ringtone_key"
+            android:title="&#64;string/voicemail_ringtone_title"
+            android:ringtoneType="notification" ... />
+        ...
+    &lt;/PreferenceScreen>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h3 id="Intents">インテントを使用する</h3>
+
+<p>設定画面ではなく、ウェブページを表示するためのウェブブラウザなどの別のアクティビティを開くプリファレンス アイテムが必要になることもあります。
+ユーザーがプリファレンス アイテムを選択したときに {@link android.content.Intent} が呼び出されるようにするには、対応する {@code &lt;Preference&gt;} 要素の子として {@code &lt;intent&gt;} 要素を追加します。
+
+</p>
+
+<p>たとえば、次の方法で、プリファレンス アイテムを使用してウェブページを開くことができます。</p>
+
+<pre>
+&lt;Preference android:title="@string/prefs_web_page" >
+    &lt;intent android:action="android.intent.action.VIEW"
+            android:data="http://www.example.com" />
+&lt;/Preference>
+</pre>
+
+<p>次の属性を使用して、明示的なインテントと黙示的なインテントの両方を作成できます。</p>
+
+<dl>
+  <dt>{@code android:action}</dt>
+    <dd>{@link android.content.Intent#setAction setAction()} メソッドで割り当てるアクション。
+</dd>
+  <dt>{@code android:data}</dt>
+    <dd>{@link android.content.Intent#setData setData()} メソッドで割り当てるデータ。</dd>
+  <dt>{@code android:mimeType}</dt>
+    <dd>{@link android.content.Intent#setType setType()} メソッドで割り当てる MIME タイプ。
+</dd>
+  <dt>{@code android:targetClass}</dt>
+    <dd>{@link android.content.Intent#setComponent setComponent()} メソッドでのコンポーネント名のクラス部分。
+</dd>
+  <dt>{@code android:targetPackage}</dt>
+    <dd>{@link android.content.Intent#setComponent setComponent()} メソッドでのコンポーネント名のパッケージ部分。
+</dd>
+</dl>
+
+
+
+<h2 id="Activity">プリファレンス アクティビティを作成する</h2>
+
+<p>アクティビティに設定を表示するには、{@link android.preference.PreferenceActivity} クラスを継承します。
+このクラスは、{@link android.preference.Preference} オブジェクトの階層に基づいて設定のリストを表示する従来の {@link android.app.Activity} クラスを継承したものです。
+
+{@link android.preference.PreferenceActivity} は、ユーザーが変更を行ったときに、各 {@link android.preference.Preference} に対応する設定を自動的に保存します。
+
+</p>
+
+<p class="note"><strong>注:</strong> Android 3.0 以降向けにアプリケーションを開発する場合は、代わりに {@link android.preference.PreferenceFragment} を使用する必要があります。
+<a href="#Fragment">プリファレンス フラグメントの使用</a>についての詳細は、次のセグメントをご覧ください。
+</p>
+
+<p>注意する必要があるのは、{@link android.preference.PreferenceActivity#onCreate onCreate()} のコールバック時に、ビューのレイアウトをロードしてはならないことを忘れないでください。
+代わりに {@link android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} を呼び出し、XML ファイルで宣言済みのプリファレンスをアクティビティに追加する必要があります。
+
+以下は、{@link android.preference.PreferenceActivity} を機能させるために最小限必要なコードです。
+</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.preferences);
+    }
+}
+</pre>
+
+<p>ユーザーがプリファレンスを変更するとすぐに、ユーザーの設定のチェックが必要なときに他のアプリケーション コンポーネントが読み取ることができるデフォルトの {@link android.content.SharedPreferences} ファイルにシステムによって変更が保存されるため、実際一部のアプリではこのコードで十分です。
+
+ただし、多くのアプリでは、プリファレンスに発生する変化をリッスンするために、もう少し多くのコードが必要になります。{@link android.content.SharedPreferences} ファイルの変更のリッスンについての詳細は、<a href="#ReadingPrefs">プリファレンスの読み取り</a>についてのセクションをご覧ください。
+
+
+</p>
+
+
+
+
+<h2 id="Fragment">プリファレンス フラグメントを使用する</h2>
+
+<p>Android 3.0(API レベル 11)以降向けに開発を行っている場合は、{@link android.preference.PreferenceFragment} を使用して {@link android.preference.Preference} オブジェクトのリストを表示する必要があります。
+
+{@link android.preference.PreferenceFragment} はどのアクティビティにでも追加できます &mdash; {@link android.preference.PreferenceActivity} を使用する必要はありません。
+</p>
+
+<p>作成するアクティビティの種類にかかわらず、<a href="{@docRoot}guide/components/fragments.html">フラグメント</a>を使用すると、アクティビティを単体で使用する場合と比べて、柔軟なアーキテクチャを持つアプリケーションを作成できます。
+
+そのため、可能な限り {@link android.preference.PreferenceActivity} ではなく、{@link android.preference.PreferenceFragment} を使用して設定の表示を管理することをお勧めします。
+
+</p>
+
+<p>{@link android.preference.PreferenceFragment} の実装は、{@link android.preference.PreferenceFragment#onCreate onCreate()} メソッドを {@link android.preference.PreferenceFragment#addPreferencesFromResource addPreferencesFromResource()} を使用してプリファレンス ファイルをロードするように定義するだけと簡単です。
+
+
+次に例を示します。</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Load the preferences from an XML resource
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+}
+</pre>
+
+<p>他の {@link android.app.Fragment} と同様に、このフラグメントは {@link android.app.Activity} に追加できます。
+次に例を示します。</p>
+
+<pre>
+public class SettingsActivity extends Activity {
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Display the fragment as the main content.
+        getFragmentManager().beginTransaction()
+                .replace(android.R.id.content, new SettingsFragment())
+                .commit();
+    }
+}
+</pre>
+
+<p class="note"><strong>注:</strong> {@link android.preference.PreferenceFragment} は、独自の {@link android.content.Context} オブジェクトを持ちません。
+{@link android.content.Context} オブジェクトが必要な場合は、{@link android.app.Fragment#getActivity()} を呼び出すことができます。
+ただし、{@link android.app.Fragment#getActivity()} はフラグメントがアクティビティにアタッチされている場合にのみ呼び出すようにしてください。
+フラグメントがまだアタッチされていない場合や、ライフサイクルの終了時にデタッチされた場合は、{@link android.app.Fragment#getActivity()} は null を返します。
+
+</p>
+
+
+<h2 id="Defaults">デフォルト値を設定する</h2>
+
+<p>作成するプリファレンスは、多くの場合、アプリケーションにとって重要ないくつかの動作を定義します。そのため、ユーザーが最初にプリケーションを開いたときに、各 {@link android.preference.Preference} のデフォルト値で、関連する {@link android.content.SharedPreferences} ファイルを初期化する必要があります。
+
+
+</p>
+
+<p>まず、{@code android:defaultValue} 属性を使用して、XML ファイルの各 {@link android.preference.Preference} オブジェクトにデフォルト値を指定してください。
+
+指定する値は、対応する {@link android.preference.Preference} オブジェクトで使用できるデータ型であればどのようなデータ型でもかまいません。
+次に例を示します。
+</p>
+
+<pre>
+&lt;!-- default value is a boolean -->
+&lt;CheckBoxPreference
+    android:defaultValue="true"
+    ... />
+
+&lt;!-- default value is a string -->
+&lt;ListPreference
+    android:defaultValue="@string/pref_syncConnectionTypes_default"
+    ... />
+</pre>
+
+<p>次に、アプリケーションのメイン アクティビティ、およびユーザーがアプリケーションを最初に開いたときに表示されるその他のアクティビティの {@link android.app.Activity#onCreate onCreate()} メソッドから、{@link android.preference.PreferenceManager#setDefaultValues setDefaultValues()} を呼び出します。
+
+
+</p>
+
+<pre>
+PreferenceManager.setDefaultValues(this, R.xml.advanced_preferences, false);
+</pre>
+
+<p>{@link android.app.Activity#onCreate onCreate()} 時に、このメソッドを呼び出すと、アプリケーションがデフォルト設定で適切に初期化されます。アプリケーションには、動作(セルラー ネットワーク上でデータをダウンロードするかどうかなど)を決定するために、デフォルト設定を読み込むことが必要な場合があります。
+
+
+</p>
+
+<p>このメソッドは次の 3 つの引数を取ります。</p>
+<ul>
+  <li>アプリケーションの {@link android.content.Context}。</li>
+  <li>デフォルト値を設定するプリファレンス XML ファイルのリソース ID。</li>
+  <li>デフォルト値を複数回設定すべきかどうかを示すブール値。
+<p><code>false</code> の場合、デフォルト値は過去にこのメソッドが 1 度も呼ばれたことがない場合(または、デフォルト値の共有プリファレンス ファイルの{@link android.preference.PreferenceManager#KEY_HAS_SET_DEFAULT_VALUES} が false の場合)のみ設定されます。
+
+</p></li>
+</ul>
+
+<p>この 3 番目の引数を <code>false</code> に設定している限り、アクティビティが開始するたびに、ユーザーが保存したプリファレンスをデフォルト値にリセットして上書きすることなく、安全にこのメソッドを呼び出すことができます。
+
+この引数を <code>true</code> に設定した場合は、以前の値がすべてデフォルト値で上書きされます。
+</p>
+
+
+
+<h2 id="PreferenceHeaders">プリファレンス ヘッダーを使用する</h2>
+
+<p>まれに、最初の画面が<a href="#Subscreens">サブ画面</a>のリストのみを表示するように設定を設計した方がよい場合もあります(図 4. と図. 5 のシステム設定アプリなど)。
+
+このような設計を Android 3.0 以降で開発する場合、ネストした {@link android.preference.PreferenceScreen} 要素でサブ画面を作成するのではなく、Android 3.0 の新しい「ヘッダー」機能を使用する必要があります。
+
+</p>
+
+<p>ヘッダーを使用して設定を作成するには、次の準備が必要です。</p>
+<ol>
+  <li>設定をグループごとに {@link android.preference.PreferenceFragment} の別々のインスタンスに分けます。
+この場合、設定のグループごとに、個別の XML ファイルが必要になります。
+</li>
+  <li>各設定グループをリストアップし対応する設定のリストを含むのがどのフラグメントかを宣言する XML ヘッダー ファイルを作成します。
+</li>
+  <li>{@link android.preference.PreferenceActivity} クラスを継承し、設定をホストします。</li>
+  <li>{@link android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} コールバックを実装して、ヘッダー ファイルを指定します。
+
+</li>
+</ol>
+
+<p>この設計を使用する大きなメリットは、大きな画面で実行する場合に、{@link android.preference.PreferenceActivity} によって自動的に図. 4 の 2 ペイン レイアウトで表示されることです。
+</p>
+
+<p>アプリケーションが 3.0 より前のバージョンの Android をサポートしている場合でも、3.0 より前の端末で従来の多画面階層をサポートしながら、{@link android.preference.PreferenceFragment} を使用して 3.0 以降の端末で 2 ペイン表示を行うことができます(詳細については、<a href="#BackCompatHeaders">旧バージョンでのプリファレンス ヘッダーのサポート</a>についてのセクションをご覧ください)。
+
+
+
+</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-tablet.png" alt="" />
+<p class="img-caption"><strong>図 4.</strong>ヘッダー付きの 2 ペイン レイアウト。 <br/><b>1.</b>ヘッダーは、XML ヘッダー ファイルで定義します。
+ <br/><b>2.</b>設定の各グループは、XML ヘッダー ファイルの {@code &lt;header&gt;} 要素で指定された {@link android.preference.PreferenceFragment} ファイルで定義します。
+
+</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-handset.png" alt="" />
+<p class="img-caption"><strong>図 5.</strong> ヘッダーが設定されたモバイル端末。アイテムが選択されると、対応する {@link android.preference.PreferenceFragment} がヘッダーを置き換えます。
+
+</p>
+
+
+<h3 id="CreateHeaders" style="clear:left">ヘッダー ファイルを作成する</h3>
+
+<p>ヘッダーのリストの設定の各グループは、ルート {@code &lt;preference-headers&gt;} 要素内の単独の {@code &lt;header&gt;} 要素によって指定されます。
+次に例を示します。</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;!-- key/value pairs can be included as arguments for the fragment. -->
+        &lt;extra android:name="someKey" android:value="someHeaderValue" />
+    &lt;/header>
+&lt;/preference-headers>
+</pre>
+
+<p>{@code android:fragment} 属性を使用して、各ヘッダーは、ユーザーがヘッダーを選択したときに開く {@link android.preference.PreferenceFragment} のインスタンスを宣言します。
+</p>
+
+<p>{@code &lt;extras&gt;} 要素を使用すると、キーと値のペアを {@link android.os.Bundle} のフラグメントに渡すことができます。
+{@link android.app.Fragment#getArguments()} を呼び出すことで、フラグメントは引数を取得できます。
+さまざまな理由でフラグメントに引数を渡す場合がありますが、各グループの {@link android.preference.PreferenceFragment} の同じサブクラスを再利用し、引数を使用してフラグメントがロードするプリファレンス XML ファイルを指定することは、効果的な引数の使い方の 1 つです。
+
+
+</p>
+
+<p>たとえば、次のフラグメントは、各ヘッダーが {@code "settings"} キーを使用して {@code &lt;extra&gt;} 引数を定義している場合、複数の設定グループで再利用できます。
+</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        String settings = getArguments().getString("settings");
+        if ("notifications".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_wifi);
+        } else if ("sync".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_sync);
+        }
+    }
+}
+</pre>
+
+
+
+<h3 id="DisplayHeaders">ヘッダーを表示する</h3>
+
+<p>プリファレンス ヘッダーを表示するには、{@link android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} コールバックメソッドを実装し、{@link android.preference.PreferenceActivity#loadHeadersFromResource loadHeadersFromResource()} を呼び出す必要があります。
+
+
+次に例を示します。</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onBuildHeaders(List&lt;Header> target) {
+        loadHeadersFromResource(R.xml.preference_headers, target);
+    }
+}
+</pre>
+
+<p>ユーザーがヘッダーのリストからアイテムを選択した場合、システムが対応する {@link android.preference.PreferenceFragment} を開きます。
+</p>
+
+<p class="note"><strong>注:</strong> プリファレンス ヘッダーを使用する場合、アクティビティで必要なタスクはヘッダーのロードのみであるため、{@link android.preference.PreferenceActivity} のサブクラスが {@link android.preference.PreferenceActivity#onCreate onCreate()} メソッドを実装する必要はありません。
+
+
+</p>
+
+
+<h3 id="BackCompatHeaders">旧バージョンでプリファレンス ヘッダーをサポートする</h3>
+
+<p>アプリケーションが Android 3.0 よりも前のバージョンをサポートしている場合でも、3.0 以降で実行するときに、ヘッダーを使用して 2 ペイン レイアウトを提供できます。
+必要なことは、3.0 よりも前のバージョンの Android で使用するために、ヘッダー アイテムのように動作する基本的な {@link android.preference.Preference &lt;Preference&gt;} 要素を使用する追加のプリファレンス XML ファイルを作成することだけです。
+
+
+</p>
+
+<p>新しい {@link android.preference.PreferenceScreen} を開く代わりに、各 {@link android.preference.Preference &lt;Preference&gt;} 要素が、ロードするプリファレンス XML ファイルが指定されている {@link android.preference.PreferenceActivity} に {@link android.content.Intent} を送ります。
+
+
+</p>
+
+<p>たとえば、以下は Android 3.0 以降で使用されるプリファレンス ヘッダーの XML ファイル({@code res/xml/preference_headers.xml})です。
+</p> 
+
+<pre>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" />
+&lt;/preference-headers>
+</pre>
+
+<p>また、以下は Android 3.0 よりも前のバージョンに同じヘッダーを提供するプリファレンス ファイル({@code res/xml/preference_headers_legacy.xml})です。
+</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;Preference 
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one"  >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_ONE" />
+    &lt;/Preference>
+    &lt;Preference 
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_TWO" />
+    &lt;/Preference>
+&lt;/PreferenceScreen>
+</pre>
+
+<p>{@code &lt;preference-headers&gt;} のサポートは Android 3.0 で追加されたため、Android 3.0 以降で実行されている場合のみ、システムは {@link android.preference.PreferenceActivity} の {@link android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} を呼び出します。
+
+「レガシー」ヘッダー ファイル({@code preference_headers_legacy.xml})をロードするには、Android のバージョンを確認し、Android 3.0({@link android.os.Build.VERSION_CODES#HONEYCOMB})よりも前のバージョンの場合、{@link android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} を呼び出す必要があります。
+
+
+
+
+次に例を示します。</p>
+
+<pre>
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    ...
+
+    if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+
+// Called only on Honeycomb and later
+&#64;Override
+public void onBuildHeaders(List&lt;Header> target) {
+   loadHeadersFromResource(R.xml.preference_headers, target);
+}
+</pre>
+
+<p>残りの手順は、アクティビティに渡される {@link android.content.Intent} を処理して、ロードするプリファレンス ファイルを指定するだけです。
+それには、インテントのアクションを取得し、プリファレンス XML の {@code &lt;intent&gt;} タグで使用した既知のアクション文字列と比較します。
+</p>
+
+<pre>
+final static String ACTION_PREFS_ONE = "com.example.prefs.PREFS_ONE";
+...
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+
+    String action = getIntent().getAction();
+    if (action != null &amp;&amp; action.equals(ACTION_PREFS_ONE)) {
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+
+    else if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+</pre>
+
+<p>{@link android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} の連続呼び出しは、すべてのプリファレンスを 1 つのリストにスタックすることに注意してください。そのため、else if ステートメントを使用して条件を適切に記述して、1 度のみ呼び出されるようにしてください。
+
+
+</p>
+
+
+
+
+
+<h2 id="ReadingPrefs">プリファレンスを読み込む</h2>
+
+<p>デフォルトでは、アプリのプリファレンスは、静的メソッド {@link android.preference.PreferenceManager#getDefaultSharedPreferences PreferenceManager.getDefaultSharedPreferences()} を呼び出すとアプリケーション内のどこからでもアクセス可能なファイルに保存されます。
+
+
+このメソッドは、{@link android.preference.PreferenceActivity} で使用される {@link android.preference.Preference} オブジェクトに関連するすべてのキーと値のペアを含む {@link android.content.SharedPreferences} を返します。
+
+
+</p>
+
+<p>たとえば、次の方法で、アプリケーションのその他のアクティビティからプリファレンスの値の 1 つを読み込むことができます。
+</p>
+
+<pre>
+SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
+String syncConnPref = sharedPref.getString(SettingsActivity.KEY_PREF_SYNC_CONN, "");
+</pre>
+
+
+
+<h3 id="Listening">プリファレンスの変化をリッスンする</h3>
+
+<p>さまざまな理由で、ユーザーがプリファレンスを変更してすぐに通知を受け取ることが必要になることがあります。
+プリファレンスの 1 つに変化が発生したときにコールバックを受け取るには、 {@link android.content.SharedPreferences.OnSharedPreferenceChangeListener SharedPreference.OnSharedPreferenceChangeListener} インターフェースを実装し、{@link android.content.SharedPreferences#registerOnSharedPreferenceChangeListener registerOnSharedPreferenceChangeListener()} を呼び出して {@link android.content.SharedPreferences} オブジェクトにリスナを登録します。
+
+
+
+
+</p>
+
+<p>このインターフェースには、コールバック メソッドが {@link android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged onSharedPreferenceChanged()} 1 つのみしか含まれておらず、アクティビティの一部として簡単に実装できます。
+
+
+次に例を示します。</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity
+                              implements OnSharedPreferenceChangeListener {
+    public static final String KEY_PREF_SYNC_CONN = "pref_syncConnectionType";
+    ...
+
+    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
+        String key) {
+        if (key.equals(KEY_PREF_SYNC_CONN)) {
+            Preference connectionPref = findPreference(key);
+            // Set summary to be the user-description for the selected value
+            connectionPref.setSummary(sharedPreferences.getString(key, ""));
+        }
+    }
+}
+</pre>
+
+<p>この例では、メソッドが、変更された設定が、既知のプリファレンス キーの設定かどうかチェックしています。メソッドは {@link android.preference.PreferenceActivity#findPreference findPreference()} を呼び出して、変更された {@link android.preference.Preference} オブジェクトを取得しています。これにより、メソッドは、ユーザー選択の説明として表示されるアイテムの概要を変更できます。
+
+
+つまり、その設定が {@link android.preference.ListPreference} またはその他の複数選択可の設定の場合、設定が変更されたときに {@link android.preference.Preference#setSummary setSummary()} を呼び出して現在のステータス(図 5. のスリープ設定など)を表示する必要があります。
+
+
+</p>
+
+<p class="note"><strong>注:</strong> Android Design の <a href="{@docRoot}design/patterns/settings.html">Settings</a> に説明されているように、ユーザーがプリファレンスを変更するごとに、{@link android.preference.ListPreference} の概要を更新して最新の設定を表示することをお勧めします。
+
+</p>
+
+<p>アクティビティでの適切なライフサイクル管理のために、{@link android.app.Activity#onResume} と {@link android.app.Activity#onPause} のそれぞれのコールバック時に、{@link android.content.SharedPreferences.OnSharedPreferenceChangeListener} の登録と登録解除を行うことをお勧めします。
+
+</p>
+
+<pre>
+&#64;Override
+protected void onResume() {
+    super.onResume();
+    getPreferenceScreen().getSharedPreferences()
+            .registerOnSharedPreferenceChangeListener(this);
+}
+
+&#64;Override
+protected void onPause() {
+    super.onPause();
+    getPreferenceScreen().getSharedPreferences()
+            .unregisterOnSharedPreferenceChangeListener(this);
+}
+</pre>
+
+<p class="caution"><strong>警告:</strong> {@link android.content.SharedPreferences#registerOnSharedPreferenceChangeListener registerOnSharedPreferenceChangeListener()} を呼び出す場合、現時点では、プリファレンス マネージャーにはリスナへの強い参照を格納できません。
+
+
+リスナへの強い参照を格納しない場合は、リスナがガベージ コレクションの影響を受けやすくなります。
+リスナが必要な間存在し続けるオブジェクトのインスタンス データ内に、リスナへの参照を保持することをお勧めします。
+
+</p>
+
+<p>たとえば、以下のコードでは、呼び出し元は、リスナへの参照を保持していません。
+結果として、リスナはガベージ コレクションの影響を受けることになり、その後のいずれかの時点でエラーになります。
+</p>
+
+<pre>
+prefs.registerOnSharedPreferenceChangeListener(
+  // Bad! The listener is subject to garbage collection!
+  new SharedPreferences.OnSharedPreferenceChangeListener() {
+  public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+    // listener implementation
+  }
+});
+</pre>
+
+<p>そのため、リスナが必要な間存在し続けるオブジェクトのインスタンス データ フィールドに、リスナへの参照を格納してください。
+</p>
+
+<pre>
+SharedPreferences.OnSharedPreferenceChangeListener listener =
+    new SharedPreferences.OnSharedPreferenceChangeListener() {
+  public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+    // listener implementation
+  }
+};
+prefs.registerOnSharedPreferenceChangeListener(listener);
+</pre>
+
+<h2 id="NetworkUsage">ネットワークの使用を管理する</h2>
+
+
+<p>Android 4.0 以降では、フォアグラウンドとバックグラウンドでのアプリケーションのネットワーク データの使用量を、システムの設定アプリケーションでユーザーが確認できます。
+また、ユーザーは、個々のアプリのバックグラウンド データの使用を無効にできます。
+アプリのバックグラウンドからのデータへのアクセスをユーザーが無効にすることを防ぐには、データ接続を効率的に使用することと、アプリケーションの設定でアプリのデータの利用方法をユーザーが調整できるようにすることが必要です。
+
+<p>
+
+<p>たとえば、データを同期する頻度や、Wi-Fi 上でのみアップロードやダウンロードを実行するようにするかどうか、ローミング時にデータを使用するかどうかなどを、ユーザーが設定できるようにすることができます。
+これらをユーザーが管理できる場合、システム設定に設定した限度にデータ使用量が近づいたときに、データへのアプリのアクセスをユーザーが無効にする可能性は減少します。ユーザーはアプリのアクセスを無効にする代わりに、アプリのデータの使用量を厳密に管理できます。
+
+
+</p>
+
+<p>アプリのデータ使用を管理するために {@link android.preference.PreferenceActivity} に必要なプリファレンスを追加したら、マニフェスト ファイルに {@link android.content.Intent#ACTION_MANAGE_NETWORK_USAGE} のインテント フィルタを追加する必要があります。
+
+次に例を示します。</p>
+
+<pre>
+&lt;activity android:name="SettingsActivity" ... >
+    &lt;intent-filter>
+       &lt;action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />
+       &lt;category android:name="android.intent.category.DEFAULT" />
+    &lt;/intent-filter>
+&lt;/activity>
+</pre>
+
+<p>このインテント フィルタは、これがアプリケーションのデータ使用をコントロールしているアクティビティであるとシステムに示します。
+これにより、ユーザーがシステム設定アプリからアプリのデータ使用量を調べるときに、[<em>View application settings</em>] ボタンを使用できるようになります。このボタンを押すと、{@link android.preference.PreferenceActivity} が開始し、アプリのデータ使用量を調整できるようになります。
+
+
+</p>
+
+
+
+
+
+
+
+<h2 id="Custom">カスタム プリファレンスを作成する</h2>
+
+<p>Android フレームワークには、異なる設定タイプの UI を作成できるさまざまな {@link android.preference.Preference} サブクラスが含まれています。ただし、番号ピッカーや日付ピッカーなど、組み込みソリューションがない場合に必要な設定が存在する可能性もあります。
+
+
+このような場合、{@link android.preference.Preference} クラスまたは他のサブクラスの 1 つを継承して、カスタム プリファレンスを作成する必要があります。
+</p>
+
+<p>{@link android.preference.Preference} クラスを継承する場合、次のことが必要です。
+</p>
+
+<ul>
+  <li>ユーザーがその設定を選択したときに表示されるユーザー インターフェースを指定する。</li>
+  <li>適切なタイミングで設定の値を保存する。</li>
+  <li>{@link android.preference.Preference} が表示されるときに、現在の値(またはデフォルト値)で初期化する。
+</li>
+  <li>システムによってリクエストされた場合にデフォルト値を提供する。</li>
+  <li>{@link android.preference.Preference} が独自の UI(ダイアログなど)を提供している場合、状態を保存し復元してライフサイクルの変化を処理する(ユーザーが画面を回転させた場合など)。
+</li>
+</ul>
+
+<p>以下の各セクションでは、上記の各事項を実現する方法を説明します。</p>
+
+
+
+<h3 id="CustomSelected">ユーザー インターフェースを指定する</h3>
+
+  <p>{@link android.preference.Preference} クラスを直接継承する場合、{@link android.preference.Preference#onClick()} を実装して、ユーザーがアイテムを選択したときに発生するアクションを定義する必要があります。
+
+ただし、大部分のカスタム設定では、手順が簡単な {@link android.preference.DialogPreference} を継承してダイアログを表示する方法が利用されています。
+{@link android.preference.DialogPreference} を継承する場合、クラス コンストラクタで {@link android.preference.DialogPreference#setDialogLayoutResource setDialogLayoutResourcs()} を呼び出してダイアログのレイアウトを指定する必要があります。
+
+
+</p>
+
+  <p>たとえば、以下のカスタム {@link android.preference.DialogPreference} のコンストラクタでは、レイアウトを宣言しデフォルトのポジティブとネガティブのダイアログ ボタンのテキストを指定しています。
+
+</p>
+
+<pre>
+public class NumberPickerPreference extends DialogPreference {
+    public NumberPickerPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        
+        setDialogLayoutResource(R.layout.numberpicker_dialog);
+        setPositiveButtonText(android.R.string.ok);
+        setNegativeButtonText(android.R.string.cancel);
+        
+        setDialogIcon(null);
+    }
+    ...
+}
+</pre>
+
+
+
+<h3 id="CustomSave">設定の値を保存する</h3>
+
+<p>設定の値が整数の場合、またはブール値を保存する{@link android.preference.Preference#persistBoolean persistBoolean()} の場合、{@link android.preference.Preference#persistInt persistInt()} など、{@link android.preference.Preference} クラスの {@code persist*()} メソッドのいずれかを呼び出すことで、設定の値をいつでも保存できます。
+
+
+</p>
+
+<p class="note"><strong>注:</strong> 各 {@link android.preference.Preference} には、1 つのデータ型のデータのみ保存できます。そのため、カスタム {@link android.preference.Preference} で使用されているデータ型に対応する {@code persist*()} メソッドを使用する必要があります。
+
+</p>
+
+<p>設定をいつ保存したらよいかは、継承する {@link android.preference.Preference} クラスによって異なります。
+{@link android.preference.DialogPreference} を継承する場合、ポジティブな結果でダイアログが閉じられたとき(ユーザーが [OK] ボタンを選択したとき)のみ、値を保存する必要があります。
+
+</p>
+
+<p>{@link android.preference.DialogPreference} が閉じられたときには、システムが {@link android.preference.DialogPreference#onDialogClosed onDialogClosed()} メソッドを呼び出します。
+このメソッドには、ユーザーの結果が「Positive」かどうかを指定するブール値の引数が含まれています &mdash; この値が <code>true</code> の場合はユーザーがポジティブ ボタンを選択しているということであり、新しい値を保存する必要があります。
+
+次に例を示します。
+</p>
+
+<pre>
+&#64;Override
+protected void onDialogClosed(boolean positiveResult) {
+    // When the user selects "OK", persist the new value
+    if (positiveResult) {
+        persistInt(mNewValue);
+    }
+}
+</pre>
+
+<p>この例では、<code>mNewValue</code> は、設定の現在の値を保持するクラスの 1 つです。
+{@link android.preference.Preference#persistInt persistInt()} を呼び出すと、値が {@link android.content.SharedPreferences} ファイルに保存されます(この {@link android.preference.Preference} の XML ファイルに指定されたキーを自動的に使用して保存されます)。
+
+</p>
+
+
+<h3 id="CustomInitialize">現在の値を初期化する</h3>
+
+<p>システムは {@link android.preference.Preference} を画面に追加すると、{@link android.preference.Preference#onSetInitialValue onSetInitialValue()} を呼び出し、その設定用に保存されている値がある場合は通知します。
+
+保存されている値がない場合、この呼び出しによりデフォルト値が設定されます。
+</p>
+
+<p>この {@link android.preference.Preference#onSetInitialValue onSetInitialValue()} メソッドは、ブール値の <code>restorePersistedValue</code> を、その設定用に値が保存済みかどうか示すために渡します。
+
+<code>true</code> の場合、{@link android.preference.Preference} クラスの {@code getPersisted*()} メソッド(整数用の {@link android.preference.Preference#getPersistedInt getPersistedInt()} など)のいずれかを呼び出して保存されている値を取得する必要があります。
+
+
+通常は保存されている値を取得するのは、UI を更新して以前保存した値を反映させるためです。
+
+</p>
+
+<p><code>restorePersistedValue</code> が <code>false</code> の場合、2 番目の引数で渡されたデフォルト値を使用する必要があります。
+</p>
+
+<pre>
+&#64;Override
+protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
+    if (restorePersistedValue) {
+        // Restore existing state
+        mCurrentValue = this.getPersistedInt(DEFAULT_VALUE);
+    } else {
+        // Set default state from the XML attribute
+        mCurrentValue = (Integer) defaultValue;
+        persistInt(mCurrentValue);
+    }
+}
+</pre>
+
+<p>各 {@code getPersisted*()} メソッドは、値が保存されていない場合またはキーが存在しない場合に使用するデフォルト値を指定する引数を取ります。
+上記の例では、{@link android.preference.Preference#getPersistedInt getPersistedInt()} が保存されている値を返すことができない場合に備えて、ローカル定数がデフォルト値を指定するために使用されています。
+
+</p>
+
+<p class="caution"><strong>警告:</strong> <code>defaultValue</code> は、<code>restorePersistedValue</code> が <code>true</code> の場合、常に null になるため、{@code getPersisted*()} メソッドでデフォルト値として使用<strong>できません</strong>。
+
+</p>
+
+
+<h3 id="CustomDefault">デフォルト値を提供する</h3>
+
+<p>{@link android.preference.Preference} クラスのインスタンスがデフォルト値を指定している場合({@code android:defaultValue} 属性を使用)、システムは、オブジェクトのインスタンスを作成するときに {@link android.preference.Preference#onGetDefaultValue onGetDefaultValue()} を呼び出してデフォルト値を取得します。
+
+
+システムでデフォルト値を {@link android.content.SharedPreferences} に保存するには、このメソッドを実装する必要があります。
+
+次に例を示します。</p>
+
+<pre>
+&#64;Override
+protected Object onGetDefaultValue(TypedArray a, int index) {
+    return a.getInteger(index, DEFAULT_VALUE);
+}
+</pre>
+
+<p>このメソッドは、属性の配列と取得する必要がある {@code android:defaultValue} のインデックス位置を提供しており、これらはデフォルト値を保存するために必要な情報のすべてです。
+属性からデフォルト値を抽出するためにこのメソッドの実装が必要なのは、デフォルト値が定義されていないときのために属性のローカル デフォルト値を指定する必要があるためです。
+
+</p>
+
+
+
+<h3 id="CustomSaveState">プリファレンスの状態を保存し復元する</h3>
+
+<p>レイアウトの {@link android.view.View} と同じく、{@link android.preference.Preference} サブクラスは、アクティビティやフラグメントが再開される場合(ユーザーが画面を回転させた場合など)に状態の保存と復元を担当します。
+
+{@link android.preference.Preference} クラスの状態を適切に保存し復元するには、ライフサイクル コールバック メソッドの {@link android.preference.Preference#onSaveInstanceState onSaveInstanceState()} と {@link android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()} を実装する必要があります。
+
+
+
+</p>
+
+<p>{@link android.preference.Preference} の状態は、{@link android.os.Parcelable} インターフェースを実装するオブジェクトによって定義されます。
+Android フレームワークでは、このようなオブジェクトである{@link android.preference.Preference.BaseSavedState} クラスが状態オブジェクトを定義するための起点として提供されています。
+
+</p>
+
+<p>{@link android.preference.Preference} クラスが状態を保存する方法を定義するには、{@link android.preference.Preference.BaseSavedState} クラスを継承する必要があります。
+いくつかのメソッドをオーバーライドして {@link android.preference.Preference.BaseSavedState#CREATOR} オブジェクトを定義してください。
+
+</p>
+
+<p>大部分のアプリでは、次の実装をコピーして、{@link android.preference.Preference} サブクラスが整数以外のデータ型のデータを保存している場合は、{@code value} を処理している行を変更するだけで使用できます。
+
+</p>
+
+<pre>
+private static class SavedState extends BaseSavedState {
+    // Member that holds the setting's value
+    // Change this data type to match the type saved by your Preference
+    int value;
+
+    public SavedState(Parcelable superState) {
+        super(superState);
+    }
+
+    public SavedState(Parcel source) {
+        super(source);
+        // Get the current preference's value
+        value = source.readInt();  // Change this to read the appropriate data type
+    }
+
+    &#64;Override
+    public void writeToParcel(Parcel dest, int flags) {
+        super.writeToParcel(dest, flags);
+        // Write the preference's value
+        dest.writeInt(value);  // Change this to write the appropriate data type
+    }
+
+    // Standard creator object using an instance of this class
+    public static final Parcelable.Creator&lt;SavedState> CREATOR =
+            new Parcelable.Creator&lt;SavedState>() {
+
+        public SavedState createFromParcel(Parcel in) {
+            return new SavedState(in);
+        }
+
+        public SavedState[] newArray(int size) {
+            return new SavedState[size];
+        }
+    };
+}
+</pre>
+
+<p>{@link android.preference.Preference.BaseSavedState} の上記の実装をアプリに追加(通常、{@link android.preference.Preference} サブクラスのサブクラスとして追加)するとともに、{@link android.preference.Preference} サブクラスの {@link android.preference.Preference#onSaveInstanceState onSaveInstanceState()} と {@link android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()} を実装する必要があります。
+
+
+
+
+</p>
+
+<p>次に例を示します。</p>
+
+<pre>
+&#64;Override
+protected Parcelable onSaveInstanceState() {
+    final Parcelable superState = super.onSaveInstanceState();
+    // Check whether this Preference is persistent (continually saved)
+    if (isPersistent()) {
+        // No need to save instance state since it's persistent,
+        // use superclass state
+        return superState;
+    }
+
+    // Create instance of custom BaseSavedState
+    final SavedState myState = new SavedState(superState);
+    // Set the state's value with the class member that holds current
+    // setting value
+    myState.value = mNewValue;
+    return myState;
+}
+
+&#64;Override
+protected void onRestoreInstanceState(Parcelable state) {
+    // Check whether we saved the state in onSaveInstanceState
+    if (state == null || !state.getClass().equals(SavedState.class)) {
+        // Didn't save the state, so call superclass
+        super.onRestoreInstanceState(state);
+        return;
+    }
+
+    // Cast state to custom BaseSavedState and pass to superclass
+    SavedState myState = (SavedState) state;
+    super.onRestoreInstanceState(myState.getSuperState());
+    
+    // Set this Preference's widget to reflect the restored state
+    mNumberPicker.setValue(myState.value);
+}
+</pre>
+
diff --git a/docs/html-intl/intl/ja/guide/topics/ui/ui-events.jd b/docs/html-intl/intl/ja/guide/topics/ui/ui-events.jd
new file mode 100644
index 0000000..1cff3f6
--- /dev/null
+++ b/docs/html-intl/intl/ja/guide/topics/ui/ui-events.jd
@@ -0,0 +1,291 @@
+page.title=入力イベント
+parent.title=ユーザー インターフェース
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>本書の内容</h2>
+  <ol>
+    <li><a href="#EventListeners">イベントリスナ</a></li>
+    <li><a href="#EventHandlers">イベント ハンドラ</a></li>
+    <li><a href="#TouchMode">タッチモード</a></li>
+    <li><a href="#HandlingFocus">フォーカスの処理</a></li>
+  </ol>
+
+</div>
+</div>
+
+<p>Android では、アプリケーションでのユーザーの操作からイベントをインターセプトする方法が複数用意されていますが、ユーザー インターフェース内のイベントをインターセプトする場合は、ユーザーが操作する個々の View オブジェクトからイベントを取得することになります。
+
+View クラスは、このための手段を提供しています。</p>
+
+<p>レイアウトを構成するために使用する各種の View クラスには、UI イベントの処理に役に立ついくつかのパブリック コールバック メソッドが含まれています。
+これらのパブリック コールバック メソッドは、オブジェクトで対応するアクションが発生したときに Android フレームワークによって呼び出されます。
+たとえば、ビュー(ボタンなど)がタップされたときには、そのオブジェクト上で <code>onTouchEvent()</code> メソッドが呼び出されます。
+このようなイベントをインターセプトするには、クラスを継承しメソッドをオーバーライドする必要があります。
+ただし、このようなイベントを処理するたびに View オブジェクトを継承することは、実用的とは言えません。
+そのため、View クラスには、簡単に定義できるコールバックを持つネストされたインターフェースのコレクションも含まれています。
+これらのインターフェースは、<a href="#EventListeners">イベントリスナ</a>と呼ばれ、UI へのユーザーの操作を取得するために使用されます。
+</p>
+
+<p>通常は、イベントリスナを使用して、ユーザーの操作をリッスンすることになりますが、カスタム コンポーネントを作成するために View クラスを継承する場合や、
+処理を工夫するために {@link android.widget.Button} クラスを継承することもできます。
+
+その場合は、クラスの<a href="#EventHandlers">イベント ハンドラ</a>を使用して、クラスにデフォルトのイベント動作を定義できます。
+</p>
+
+
+<h2 id="EventListeners">イベントリスナ</h2>
+
+<p>イベントリスナは、コールバック メソッド 1 つを含む {@link android.view.View} クラスのインターフェースです。
+以下のメソッドは、イベントリスナが登録されているビューが UI アイテムへのユーザーの操作によってトリガーされたときに、Android フレームワークによって呼び出されます。
+</p>
+
+<p>イベントリスナ インターフェースに含まれているのは、以下のコールバック メソッドです。</p>
+
+<dl>
+  <dt><code>onClick()</code></dt>
+    <dd>{@link android.view.View.OnClickListener} のメソッド。ユーザーがアイテムをタップしたとき(タッチモードの場合)、またはナビゲーション キーまたはトラックボールでアイテムにフォーカスを合わせ、適切な「エンター」キーまたはトラックボールを押したときに、呼び出されます。
+
+
+</dd>
+  <dt><code>onLongClick()</code></dt>
+    <dd>{@link android.view.View.OnLongClickListener} のメソッド。ユーザーがアイテムをタップしてホールドしたとき(タッチモードの場合)、またはナビゲーション キーまたはトラックボールでアイテムにフォーカスを合わせ、適切な「エンター」キーまたはトラックボールを長押し(1 秒間)したときに、呼び出されます。
+
+
+</dd>
+  <dt><code>onFocusChange()</code></dt>
+    <dd>{@link android.view.View.OnFocusChangeListener} のメソッド。ナビゲーション キーやトラックボールを使用してユーザーがアイテムに移動してきたときまたはアイテムから離れるときに、呼び出されます。
+</dd>
+  <dt><code>onKey()</code></dt>
+    <dd>{@link android.view.View.OnKeyListener} のメソッド。ユーザーがアイテムにフォーカスを合わせて端末のハードウェア キーを押したとき、または離したときに、呼び出されます。
+</dd>
+  <dt><code>onTouch()</code></dt>
+    <dd>{@link android.view.View.OnTouchListener} のメソッド。画面(アイテムの境界線内)での押す、離す、移動操作などのタップイベントと認定されるアクションをユーザーが実行した場合に呼び出されます。
+
+</dd>
+  <dt><code>onCreateContextMenu()</code></dt>
+    <dd>{@link android.view.View.OnCreateContextMenuListener} のメソッド。コンテキスト メニュー(「長押しクリック」し続けると作成されます)の作成中に呼び出されます。
+コンテキスト メニューについての詳細は、「<a href="{@docRoot}guide/topics/ui/menus.html#context-menu">メニュー</a>」のデベロッパー ガイドをご覧ください。
+
+</dd>
+</dl>
+
+<p>これらのメソッドは、それぞれのインターフェースにおける唯一のメソッドです。これらのいずれかのメソッドを定義しイベントを処理するには、ネストされたインターフェースをアクティビティに実装するか、ネストされたインターフェースを匿名クラスとして定義します。次に、その実装のインスタンスを対応する <code>View.set...Listener()</code> メソッドに渡します。
+
+
+(例: <code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code> を呼び出し、{@link android.view.View.OnClickListener OnClickListener} の実装を渡します)。
+
+</p>
+
+<p>次の例は、ボタンへの on-click リスナの登録方法を示しています。 </p>
+
+<pre>
+// Create an anonymous implementation of OnClickListener
+private OnClickListener mCorkyListener = new OnClickListener() {
+    public void onClick(View v) {
+      // do something when the button is clicked
+    }
+};
+
+protected void onCreate(Bundle savedValues) {
+    ...
+    // Capture our button from layout
+    Button button = (Button)findViewById(R.id.corky);
+    // Register the onClick listener with the implementation above
+    button.setOnClickListener(mCorkyListener);
+    ...
+}
+</pre>
+
+<p>OnClickListener をアクティビティの一部として実装すると、余分なクラスのロードとオブジェクトの割り当てを避けることができます。
+次に例を示します。</p>
+<pre>
+public class ExampleActivity extends Activity implements OnClickListener {
+    protected void onCreate(Bundle savedValues) {
+        ...
+        Button button = (Button)findViewById(R.id.corky);
+        button.setOnClickListener(this);
+    }
+
+    // Implement the OnClickListener callback
+    public void onClick(View v) {
+      // do something when the button is clicked
+    }
+    ...
+}
+</pre>
+
+<p>上の例の <code>onClick()</code> コールバックには戻り値がありませんが、イベントリスナ メソッドの中には、ブール値を返すことが必要なものもあることに注意してください。
+ブール値が示す事柄はイベントによって異なります。
+以下はその例です。</p>
+<ul>
+  <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> - イベントを消費済みでこれ以上イベントを引き継ぐべきでないかどうかを示すブール値を返します。
+つまり、イベントが処理済みでイベントの停止が必要なことを示す場合は、<em>true</em> を返します。イベントが未処理の場合や、他の on-click リスナへのイベントの引き継ぎが必要な場合は、<em>false</em> を返します。
+
+
+</li>
+  <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> - イベントを消費済みでこれ以上イベントを引き継ぐべきでないかどうかを示すブール値を返します。
+
+    つまり、イベントが処理済みでイベントの停止が必要なことを示す場合は、<em>true</em> を返します。イベントが未処理の場合や、他の on-key リスナへのイベントの引き継ぎが必要な場合は、<em>false</em> を返します。
+
+</li>
+  <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> - リスナがイベントを消費しているかどうかを示すブール値を返します。
+ここで注意する必要があるのは、このイベントが相互にフォローし合う複数のアクションを含むことがあることです。
+ダウン アクション イベントが受け取られたときに <em>false</em> を返すと、そのイベントを消費しておらず、そのイベントから続けて発生するアクションに関心がないことを示すことになります。
+
+そのため、指での操作などのそのイベント内のその他のアクションや操作の最後に発生する アップ アクション イベントで、呼び出されることはなくなります。
+</li>
+</ul>
+
+<p>ハードウェア キー イベントは常に、その時点でフォーカスがあるビューに届けられることに注意してください。ハードウェア・キー・イベントは、ビュー階層の一番上から下に適切な対象に到達するまでディスパッチされます。
+ビュー(またはビューの子)にフォーカスがある場合、イベントが <code>{@link android.view.View#dispatchKeyEvent(KeyEvent)
+dispatchKeyEvent()}</code> メソッドを介して伝わっていると判断できます。
+ビューを通じてキーイベントを取得する別の方法としては、<code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code> と <code>{@link android.app.Activity#onKeyUp(int,KeyEvent) onKeyUp()}</code> を使用してアクティビティ内のすべてのイベントを受け取る方法もあります。
+
+</p>
+
+<p>また、アプリケーションのテキスト入力について検討する際は、多くの端末にソフトウェア入力メソッドしかないことに注意してください。
+ソフトウェア入力メソッドでは、キーの利用は必要ありません。音声入力や手書き入力などを利用できるものもあります。入力メソッドがキーボードに似たインターフェースを提供していたとしても、そのインターフェースは通常、<code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code> ファミリーのイベントをトリガー<strong>しません</strong>。
+
+アプリケーションの使用をハードウェア キーボード付きの端末に限定するのではない限り、制御するために特定のキーを押すことが必要な UI は作成しないでください。
+
+特に、ユーザーのリターンキー押下時に入力を検証するような処理は行わないようにし、代わりに {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE} などのアクションを使用して入力メソッドにアプリケーションが求める反応を伝えてください。そうすることで、入力メソッドが UI を意味のあるものにします。
+
+ソフトウェア入力メソッドの動作を推測し、その推測に基づいて、書式設定済みのテキストをアプリケーションに提供することは避けてください。
+</p>
+
+<p class="note"><strong>注:</strong> Android では、まずイベント ハンドラが呼び出され、次にクラス定義から適切なデフォルト ハンドラが呼び出されます。
+そのため、これらのイベントリスナから <em>true</em> が返された場合、イベントの他のイベントリスナへの伝播は止まり、ビューのデフォルトのイベント ハンドラへのコールバックもブロックされます。
+
+そのため、イベントを終了させたいことが確実な場合のみ、<em>true</em> を返すようにしてください。</p>
+
+
+<h2 id="EventHandlers">イベント ハンドラ</h2>
+
+<p>ビューからカスタム コンポーネントを作成する場合、デフォルトのイベント ハンドラとして使用される複数のコールバック メソッドを定義できます。イベント ハンドリングに使用される次のような一般的なコールバックの一部については、詳細を<a href="{@docRoot}guide/topics/ui/custom-components.html">カスタム コンポーネント</a>についてのドキュメントでご覧いただけます。
+
+
+
+</p>
+<ul>
+  <li><code>{@link  android.view.View#onKeyDown}</code> - 新しいキーイベントの発生時に呼び出されます。</li>
+  <li><code>{@link  android.view.View#onKeyUp}</code> - キー アップ イベントの発生時に呼び出されます。</li>
+  <li><code>{@link  android.view.View#onTrackballEvent}</code> - トラックボール モーション イベントの発生時に呼び出されます。</li>
+  <li><code>{@link  android.view.View#onTouchEvent}</code> - タッチスクリーン モーション イベント発生時に呼び出されます。</li>
+  <li><code>{@link  android.view.View#onFocusChanged}</code> - ビューがフォーカスを取得した場合または失った場合に呼び出されます。</li>
+</ul>
+<p>View クラスに含まれていないメソッドの中にも、イベントの処理の方法に直接関係するメソッドがいくつかあります。
+そのため、レイアウト内の複雑なイベントを管理する場合は、以下のメソッドの使用を検討してください。
+</p>
+<ul>
+  <li><code>{@link  android.app.Activity#dispatchTouchEvent(MotionEvent)
+    Activity.dispatchTouchEvent(MotionEvent)}</code> - {@link android.app.Activity} が、すべてのタップイベントをウィンドウにディスパッチされる前にインターセプトできるようにします。
+</li>
+  <li><code>{@link  android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)
+    ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> - {@link android.view.ViewGroup} が、イベントが子ビューにディスパッチされたときにイベントを監視できるようにします。
+</li>
+  <li><code>{@link  android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
+    ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - このメソッドを親ビュー上で呼び出すことで、<code>{@link 
+    android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code> による親ビューのタップイベントのインターセプトを許可しないことを示すことができます。
+</li>
+</ul>
+
+<h2 id="TouchMode">タッチモード</h2>
+<p>
+ユーザーが方向キーまたはトラックボールを使用してユーザー インターフェースを操作する場合、入力を受け付けるアイテムがどのアイテムなのかユーザーが知ることができるようにアクション可能なアイテム(ボタンなど)にフォーカスを与えることが必要になります。
+
+ただし、端末にタッチ機能がある場合は、ユーザーはタップでインターフェースの操作を開始するため、アイテムをハイライトすることや、特定のビューにフォーカスを与えることは必要ではなくなりました。
+
+そのため、「タッチモード」と名付けられた操作モードが存在します。
+ 
+</p>
+<p>
+タッチ可能な端末では、ユーザーが画面をタップすると、端末がタッチモードになります。
+端末がタッチモードの場合、テキスト編集ウィジェットなどの {@link android.view.View#isFocusableInTouchMode} が true のビューのみがフォーカス可能であり、ボタンなどのタップ可能なその他のビューは、タップされたときにフォーカスされることはありません。それらのビューは、押されたときに、on-click リスナを起動します。
+
+
+
+</p>
+<p>
+ユーザーが方向キーを押すか、またはトラックボールをスクロールすると、端末はタッチモードから抜け、ビューがフォーカスを取得します。
+これにより、ユーザーは、画面をタップすることなく、ユーザー インターフェースの操作を再開できます。
+
+</p>
+<p>
+タッチモード状態は、システム全体(すべてのウィンドウとアクティビティ)で維持されます。端末が現在タッチモードかどうか確認するには、{@link android.view.View#isInTouchMode} を呼び出します。
+
+
+</p>
+
+
+<h2 id="HandlingFocus">フォーカスの処理</h2>
+
+<p>フレームワークは、ユーザーに入力に応じて、通常のフォーカス移動を処理します。フレームワークが処理するフォーカス移動には、ビューが削除されたり非表示になったり、新しいビューが利用可能になったりしたことによるフォーカスの変化も含まれます。
+
+ビューは、<code>{@link android.view.View#isFocusable()}</code> メソッドで、フォーカスが取得可能なことを示します。
+ビューのフォーカスの取得可否を変更するには、<code>{@link android.view.View#setFocusable(boolean) setFocusable()}</code> を呼び出します。
+タッチモードでは、<code>{@link android.view.View#isFocusableInTouchMode()}</code> でビューがフォーカスを取得可能かどうか確認できます。ビューのフォーカスの取得可否は、<code>{@link android.view.View#setFocusableInTouchMode(boolean) setFocusableInTouchMode()}</code> で変更できます。
+
+
+</p>
+
+<p>フォーカスの移動は、所定の方向で最も近くにあるアイテムを見つけるアルゴリズムに基づきますが、
+まれに、デフォルトのアルゴリズムが開発者の意図する動作と一致しない場合もあります。
+この場合、レイアウト ファイルの 
+
+<var>nextFocusDown</var>、 <var>nextFocusLeft</var>、 <var>nextFocusRight</var>、
+<var>nextFocusUp</var> の各 XML 属性を明示的にオーバーライドできます。これらの属性のいずれかを、フォーカスの移動<em>元</em>のビューに追加します。
+フォーカスの移動<em>先</em>のビューの ID になる属性の値を定義します。
+次に例を示します。</p>
+<pre>
+&lt;LinearLayout
+    android:orientation="vertical"
+    ... >
+  &lt;Button android:id="@+id/top"
+          android:nextFocusUp="@+id/bottom"
+          ... />
+  &lt;Button android:id="@+id/bottom"
+          android:nextFocusDown="@+id/top"
+          ... />
+&lt;/LinearLayout>
+</pre>
+
+<p>本来、上記の縦方向のレイアウトでは、1 番上のボタンから上に移動しようとしても、2 番目のボタンから下に移動しようしても、どこにもフォーカスが移動しないはずでしたが、上記の処理により、
+1 番上のボタンによって 1 番下のボタンが 
+ <var>nextFocusUp</var>  として定義され(逆の場合も同様)、フォーカスが、上から下と下から上に順番に移動するようになります。
+</p>
+
+<p>UI でビューをフォーカス可能にする場合は(従来は、ビューはフォーカス可能ではありません)、レイアウトの宣言で <code>android:focusable</code> XML 属性をビューに追加し、値を 
+
+ <var>true</var> に設定します。また、<code>android:focusableInTouchMode</code> を使用して、タッチモードのときにビューをフォーカス可能にすることもできます。
+</p>
+<p>特定のビューへのフォーカスをリクエストするには、<code>{@link android.view.View#requestFocus()}</code> を呼び出します。</p>
+<p>フォーカス イベントをリッスンするには(ビューがフォーカスを受け取ったときまたは失ったときに通知を受け取るには)、上記の<a href="#EventListeners">イベントリスナ</a>のセクションの説明に従って <code>{@link android.view.View.OnFocusChangeListener#onFocusChange(View,boolean) onFocusChange()}</code> を使用します。
+
+</p>
+
+
+
+<!--
+<h2 is="EventCycle">Event Cycle</h2>
+   <p>The basic cycle of a View is as follows:</p>
+   <ol>
+    <li>An event comes in and is dispatched to the appropriate View. The View
+    handles the event and notifies any listeners.</li>
+    <li>If, in the course of processing the event, the View's bounds may need
+    to be changed, the View will call {@link android.view.View#requestLayout()}.</li>
+    <li>Similarly, if in the course of processing the event the View's appearance
+    may need to be changed, the View will call {@link android.view.View#invalidate()}.</li>
+    <li>If either {@link android.view.View#requestLayout()} or {@link android.view.View#invalidate()} were called,
+    the framework will take care of measuring, laying out, and drawing the tree
+    as appropriate.</li>
+   </ol>
+   
+   <p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on
+   the UI thread when calling any method on any View.
+   If you are doing work on other threads and want to update the state of a View
+   from that thread, you should use a {@link android.os.Handler}.
+   </p>
+-->
diff --git a/docs/html-intl/intl/ja/index.jd b/docs/html-intl/intl/ja/index.jd
index a11136d..755ec62 100644
--- a/docs/html-intl/intl/ja/index.jd
+++ b/docs/html-intl/intl/ja/index.jd
@@ -5,43 +5,81 @@
 
 @jd:body
 
-<!-- <div class="dac-hero-carousel" data-carousel-query="collection:index/carousel">
-</div> -->
-<section class="dac-hero-carousel">
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
 
-<!-- <article class="dac-expand dac-hero dac-invert active" style="background-color: rgb(38, 50, 56);"> -->
-<article class="dac-expand dac-hero dac-invert dac-darken mprev active" style="background-color: #75d1ff;">
-<a href="/preview/index.html">
+<section class="dac-expand dac-hero dac-invert" style="background-color:#455A64">
   <div class="wrap" style="max-width:1100px;margin-top:0">
-    <div class="cols dac-hero-content">
-      <div class="col-8of16 col-push-6of16 dac-hero-figure mprev">
-      </div>
-      <div class="col-8of16 col-pull-7of16">
-        <div class="dac-hero-tag"></div>
-
-        <h1 class="dac-hero-title" style="white-space:nowrap;">Android 6.0 Marshmallow</h1>
-        <p class="dac-hero-description">次期バージョンの Android に向けて準備しましょう。
-        Nexus 5、6、9、Nexus Player でアプリをテストします。 </p>
-
-        <a class="dac-hero-cta" href="{@docRoot}preview/index.html">
+    <div class="col-7of16 col-push-9of16" style="padding-left:2em;">
+      <a href="{@docRoot}preview/index.html">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
+        <p class="dac-hero-description">
+          Get ready for the next version of Android!
+          <strong>Test your apps</strong> on Nexus and other devices. Support new system
+          behaviors to <strong>save power and memory</strong>.
+          Extend your apps with <strong>multi-window UI</strong>,
+          <strong>direct reply notifications</strong> and more.
+        </p>
+        <a class="dac-hero-cta" href="/preview/index.html">
           <span class="dac-sprite dac-auto-chevron"></span>
-          スタートガイド
-        </a><br>
-        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
+          Learn more
+        </a><!--<br>
+        <a class="dac-hero-cta" href="/preview/support.html">
           <span class="dac-sprite dac-auto-chevron"></span>
-          Developer Preview 3 (final SDK)</a>
-
-      </div>
+          Update to Developer Preview (final SDK)
+        </a><br>-->
+      </a>
+    </div>
+    <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:0em;padding-right:1.5em;">
+      <a href="{@docRoot}preview/index.html">
+        <img style="" class="dac-hero-image" src="/images/home/n-preview-hero.png"
+             srcset="/images/home/n-preview-hero.png 1x,
+             /images/home/n-preview-hero_2x.png 2x">
+        </a>
     </div>
   </div>
-</a>
-</article></section>
+</section>
 
-<div class="actions-bar dac-expand dac-invert">
+<div id="useUpdatedTemplates" style="display:none" class="dac-section dac-slim dac-gray dac-expand">
   <div class="wrap dac-offset-parent">
     <a class="dac-fab dac-scroll-button" data-scroll-button href="#build-apps">
       <i class="dac-sprite dac-arrow-down-gray"></i>
     </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}sdk/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Get the SDK
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}samples/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Browse sample code
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}distribute/stories/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Watch stories
+        </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+    <a class="dac-fab dac-scroll-button" data-scroll-button="" href="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
     <div class="actions">
       <div><a href="{@docRoot}sdk/index.html">
         <span class="dac-sprite dac-auto-chevron-large"></span>
@@ -51,17 +89,15 @@
         <span class="dac-sprite dac-auto-chevron-large"></span>
         Browse Samples
       </a></div>
-      <div><a href="//www.youtube.com/user/androiddevelopers">
+      <div><a href="{@docRoot}distribute/stories/index.html">
         <span class="dac-sprite dac-auto-chevron-large"></span>
-        Watch Videos
+        Watch Stories
       </a></div>
     </div><!-- end .actions -->
   </div><!-- end .wrap -->
-</div><!-- end .actions-bar -->
+</div>
 
-
-
-<section class="dac-section dac-section-light" id="build-apps"><div class="wrap">
+<section class="dac-section dac-light" id="build-apps"><div class="wrap">
   <h1 class="dac-section-title">Build Beautiful Apps</h1>
   <div class="dac-section-subtitle">
     Resources to get you started with designing and developing for Android.
diff --git a/docs/html-intl/intl/ja/preview/api-overview.jd b/docs/html-intl/intl/ja/preview/api-overview.jd
deleted file mode 100644
index 33cabc3..0000000
--- a/docs/html-intl/intl/ja/preview/api-overview.jd
+++ /dev/null
@@ -1,521 +0,0 @@
-page.title=API の概要
-page.keywords=プレビュー,sdk,互換性
-page.tags=previewresources, androidm sdk.platform.apiLevel=22-mnc
-page.image=images/cards/card-api-overview_16-9_2x.png
-@jd:body
-
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>本書の内容
- <a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
-        <span class="more">詳細を表示</span>
-        <span class="less" style="display:none">詳細を非表示</span></a></h2>
-
-<ol id="toc44" class="hide-nested">
-  <li><a href="#app-linking">アプリのリンク機能</a></li>
-  <li><a href="#backup">アプリの自動バックアップ</a></li>
-  <li><a href="#authentication">認証</a>
-    <ol>
-      <li><a href="#fingerprint-authentication">指紋認証</a></li>
-      <li><a href="#confirm-credential">資格情報の確認</a></li>
-    </ol>
-  </li>
-  <li><a href="#direct-share">ダイレクト シェア</a></li>
-  <li><a href="#voice-interactions">音声インタラクション</a></li>
-  <li><a href="#assist">Assist API</a></li>
-  <li><a href="#notifications">通知</a></li>
-  <li><a href="#bluetooth-stylus">Bluetooth スタイラスのサポート</a></li>
-  <li><a href="#ble-scanning">Bluetooth Low Energy のスキャンの改善</a></li>
-  <li><a href="#hotspot">アクセス ポイント2.0 リリース 1 のサポート</a></li>
-  <li><a href="#4K-display">4K ディスプレイ モード</a></li>
-  <li><a href="#behavior-themeable-colorstatelists">テーマ化可能な ColorStateLists</a></li>
-  <li><a href="#audio">オーディオ機能</a></li>
-  <li><a href="#video">ビデオ機能</a></li>
-  <li><a href="#camera">カメラ機能</a>
-    <ol>
-      <li><a href="#flashlight">Flashlight API</a></li>
-      <li><a href="#reprocessing">カメラの再処理</a></li>
-    </ol>
-  </li>
-  <li><a href="#afw">Android for Work の機能</a></li>
-</ol>
-
-<h2>API の変更点</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">API レベル 22 から M Preview&raquo;</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M Developer Preview では、ユーザーやアプリ開発者に Android プラットフォームの次期リリースの新機能をいち早く試していただくことができます。
-
-このドキュメントでは、いくつかの注目すべき API の概要について説明します。</p>
-
-<p>M Developer Preview は、<strong>Developer の早期導入者</strong>と<strong>テスター</strong>を対象としています。
-是非
-<a href="{@docRoot}preview/setup-sdk.html">M Developer Preview を試して</a>フィードバックをご提供ください。あなたのご意見が、Android フレームワークの方向性を決定する上で貴重な情報になります。
-
-</p>
-
-<p class="caution"><strong>注意:</strong> M Developer Preview を使用したアプリは、Google Play ストアには公開しないでください。
-</p>
-
-<p class="note"><strong>注</strong>: このドキュメントには、まだ <a href="{@docRoot}">developer.android.com</a> のリファレンス マテリアルにないクラスやメソッドが多数登場します。
-このドキュメントでは、API エレメントは {@code code style} 形式で記載されています(ハイパーリンクなし)。
-これらのエレメントに関する API ドキュメント(準備段階)については、<a href="{@docRoot}preview/download.html#docs">プレビューのリファレンス</a>をダウンロードしてください。
-</p>
-
-<h3>重要な動作の変更点</h3>
-
-<p>過去に Android にアプリを公開したことがある場合は、アプリがプラットフォームの変更による影響を受ける場合があります。
-</p>
-
-<p>詳細については、<a href="behavior-changes.html">Behavior Changes</a> をご覧ください。</p>
-
-<h2 id="app-linking">アプリのリンク機能</h2>
-<p>このプレビューでは、アプリのリンク機能を強化することで Android のインテント システムが向上しました。この機能では、所有するウェブドメインにアプリを関連付けることができます。
-この関連付けに基づいて、プラットフォームが特定のウェブリンクの処理に使用するデフォルトのアプリを決めることができ、ユーザーにアプリを選択させる操作をスキップできます。この機能の実装方法については、
-<a href="{@docRoot}preview/features/app-linking.html">アプリのリンク機能</a>をご覧ください。
-
-
-
-<h2 id="backup">アプリの自動バックアップ</h2>
-<p>システムで、アプリの自動フルデータ バックアップと復元を実行できるようになりました。この動作は、M Preview を対象としたアプリでデフォルトで有効になっています。追加のコードは必要ありません。
-ユーザーが Google アカウントを削除すると、バックアップ データも削除されます。
-この機能の仕組みとファイル システムでバックアップ対象を設定する方法については、
-<a href="{@docRoot}preview/backup/index.html">アプリの自動バックアップ</a>をご覧ください。
-</p>
-
-<h2 id="authentication">認証</h2>
-<p>このプレビューでは、サポートされる端末での指紋スキャンを使用したユーザー認証や、端末のロック解除メカニズム(ロック画面のパスワードなど)を使って最後にユーザーが認証された時期の確認などを行える新しい API が提供されます。
-
-これらの API は、<a href="{@docRoot}training/articles/keystore.html">Android キーストローク システム</a>と共に使用します。
-</p>
-
-<h3 id="fingerprint-authentication">指紋認証</h3>
-
-<p>指紋スキャンでユーザーを認証するには、新しい
-{@code android.hardware.fingerprint.FingerprintManager} クラスのインスタンスを取得して、
-{@code FingerprintManager.authenticate()} メソッドを呼び出します。アプリは、指紋センサー付きの、互換性のある端末上で実行している必要があります。
-指紋認証フローのユーザー インターフェースをアプリに実装し、UI には標準の Android 指紋アイコンを使用する必要があります。Android 指紋アイコン({@code c_fp_40px.png})は<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">サンプルアプリ</a>に含まれています。指紋認証を使用するアプリを複数開発する場合は、それぞれのアプリで個別にユーザーの指紋を認証する必要があります。
-
-
-
-
-</p>
-
-<p>アプリでこの機能を使用するには、まずマニフェストに {@code USE_FINGERPRINT} パーミッションを追加する必要があります。
-</p>
-
-<pre>
-&lt;uses-permission
-        android:name="android.permission.USE_FINGERPRINT" /&gt;
-</pre>
-
-<img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-
-<p>アプリでの指紋認証の実装については、
-<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">指紋ダイアログのサンプル</a>をご覧ください。
-</p>
-
-<p>この機能をテストする場合は、次の手順を使用します。</p>
-<ol>
-<li>Android SDK Tools Revision 24.3 をインストールします(まだインストールしていない場合)。</li>
-<li>
-<strong>[設定] &gt; [セキュリティ] &gt; [指紋]</strong> の登録手順に従い、エミュレータに新しい指紋を登録します。</li>
-<li>エミュレータを使って、次のコマンドで指紋のタッチ ベントをエミュレートします。
-同じコマンドを使って、ロック画面やアプリでの指紋のタッチイベントをエミュレートします。
-
-<pre class="no-prettyprint">
-adb -e emu finger touch &lt;finger_id&gt;
-</pre>
-<p>Windows では、{@code telnet 127.0.0.1 <emulator-id>}、
-{@code finger touch <finger_id>} の順に実行する必要がある場合があります。
-</p>
-</li>
-</ol>
-
-<h3 id="confirm-credential">資格情報の確認</h3>
-<p>アプリでは、ユーザーがいつ、最後に端末のロックを解除したかに基づいて、ユーザーを認証できます。この機能によって、ユーザーがアプリ固有のパスワードを覚えたり、開発者が独自の認証ユーザー インターフェースを実装したりする必要性がなくなります。
-
-アプリでこの機能を使用する場合は、ユーザー認証用の公開鍵か秘密鍵を実装する必要があります。
-</p>
-
-<p>ユーザーが正常に認証された後、同じキーを再使用できるタイムアウト期間を設定するには、{@link javax.crypto.KeyGenerator} か
-{@link java.security.KeyPairGenerator} のセットアップ後に新しい
-{@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()} メソッドを呼び出します。
-
-現在、この機能は対象暗号化操作で動作します。
-</p>
-
-<p>再認証ダイアログを過度に表示しないようにします。アプリでは、まず暗号オブジェクトを使用し、タイムアウトした場合は
-{@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()} メソッドを使用してユーザーをアプリ内で再認証するようにします。
-
-
-</p>
-
-<p>アプリでのこの機能の実装については、
-<a href="https://github.com/googlesamples/android-ConfirmCredential" class="external-link">資格情報の確認サンプル</a>をご覧ください。
-</p>
-
-<h2 id="direct-share">ダイレクト シェア</h2>
-
-<img src="{@docRoot}preview/images/direct-share-screen.png" srcset="{@docRoot}preview/images/direct-share-screen.png 1x, {@docRoot}preview/images/direct-share-screen_2x.png 2x" style="float:right; margin:0 0 20px 30px" width="312" height="329" />
-
-<p>このプレビューでは、ユーザーが直感的にすばやく共有できるようにする API が提供されます。アプリで特定のアクティビティを起動する<em>ダイレクト シェアのターゲット</em>を定義すると、それらのダイレクト シェアのターゲットは <em>[共有]</em> メニューに表示されるようになります。
-
-この機能を使うと、他のアプリ内にある連絡先などのターゲットにコンテンツを共有できます。
-たとえば、ダイレクト シェアのターゲットによって他のソーシャル ネットワーク アプリのアクティビティが起動し、そのアプリ内の特定の友人やコミュニティに直接コンテンツを共有できるようになります。
-
-</p>
-
-<p>ダイレクト シェアのターゲットを有効にするには、まず
-{@code android.service.} を拡張するクラスを定義する必要があります。 <br>
-{@code chooser.ChooserTargetService} クラス。マニフェストで
-{@code ChooserTargetService} を宣言します。その宣言内で、
-{@code BIND_CHOOSER_TARGET_SERVICE} パーミッションと、
-{@code SERVICE_INTERFACE} アクションを使ったインテント フィルタを指定します。</p>
-<p>次の例は、マニフェストで {@code ChooserTargetService} を宣言する方法を示しています。
-</p>
-<pre>
-&lt;service android:name=".ChooserTargetService"
-        android:label="&#64;string/service_name"
-        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"&gt;
-    &lt;intent-filter&gt;
-        &lt;action android:name="android.service.chooser.ChooserTargetService" /&gt;
-    &lt;/intent-filter&gt;
-&lt;/service&gt;
-</pre>
-
-<p>{@code ChooserTargetService} に公開するアクティビティごとに、 {@code "android.service.chooser.chooser_target_service"} という名前の
-{@code <meta-data>} 要素をアプリのマニフェストに追加します。
-
-</p>
-
-<pre>
-&lt;activity android:name=".MyShareActivity”
-        android:label="&#64;string/share_activity_label"&gt;
-    &lt;intent-filter>
-        &lt;action android:name="android.intent.action.SEND" /&gt;
-    &lt;/intent-filter>
-&lt;meta-data
-        android:name="android.service.chooser.chooser_target_service"
-        android:value=".ChooserTargetService" /&gt;
-&lt;/activity>
-</pre>
-
-<h2 id="voice-interactions">音声インタラクション</h2>
-<p>
-このプレビューでは、<a href="https://developers.google.com/voice-actions/" class="external-link">音声アクション</a>と共に使用することでアプリに対話形式の音声操作をビルドできる新しい音声インタラクション API が提供されます。
-
-
-{@code android.app.Activity.isVoiceInteraction()} メソッドを呼び出して、アクティビティが音声アクションへの応答として開始されたかどうかを確認します。
-音声アクションへの応答であった場合、アプリで
-{@code android.app.VoiceInteractor} クラスを使用してユーザーに音声の確認や、オプションのリストからの選択などを要求できます。
-音声アクションの実装の詳細については、
-<a href="https://developers.google.com/voice-actions/interaction/" class="external-link">音声アクションの開発者サイト</a>をご覧ください。
-</p>
-
-<h2 id="assist">Assist API</h2>
-<p>
-このプレビューでは、アシスタントを介してユーザーがアプリを操作できる新しい方法が用意されています。この機能を使用するには、ユーザーが現在のコンテキストを使うようアシスタントを有効にする必要があります。
-有効にすると、<strong>ホーム</strong> ボタンを長押しすることで、すべてのアプリ内でアシスタントを呼び出すことができます。
-</p>
-<p>
-{@link android.view.WindowManager.LayoutParams#FLAG_SECURE} フラグを設定すると、アプリが現在のコンテキストをアシスタントと共有しないようにできます。新しい {@code android.app.Activity.AssistContent} クラスを使用すると、プラットフォームがアシスタントに渡す標準的な情報セットの他に、アプリで追加の情報を共有できます。
-
-</p>
-
-<p>アプリから追加のコンテキストをアシスタントに提供するには、次の手順を使用します。</p>
-
-<ol>
-<li>{@link android.app.Application.OnProvideAssistDataListener} インターフェースを実装します。</li>
-<li>
-{@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()} を使用してこのリスナーを登録します。</li>
-<li>アクティビティ固有の文脈情報を提供するには、
-{@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()} コールバックと、任意で新しい
-{@code Activity.onProvideAssistContent()} コールバックをオーバーライドします。
-</ol>
-
-<h2 id="notifications">通知</h2>
-<p>このプレビューでは、通知に関して次のような API の変更点が追加されています。</p>
-<ul>
-  <li>新しい<em>アラームのみの</em> Do not disturb モードに相当する新しい {@code NotificationListenerService.INTERRUPTION_FILTER_ALARMS} フィルタレベル。
-</li>
-  <li>ユーザーが予定したリマインダを他のイベント({@link android.app.Notification#CATEGORY_EVENT})やアラーム({@link android.app.Notification#CATEGORY_ALARM})から区別する際に使用される新しい{@code Notification.CATEGORY_REMINDER} カテゴリの値。
-
-
-</li>
-  <li>{@code Notification.Builder.setSmallIcon(Icon)} メソッドや {@code Notification.Builder.setLargeIcon(Icon)} メソッド経由で通知にアタッチできる新しい {@code android.graphics.drawable.Icon} クラス。
-
-</li>
-  <li>現在どの通知がアクティブなのかをアプリが検出できるようにする新しい {@code NotificationManager.getActiveNotifications()} メソッド。
-この機能を使用するアプリの実装については、<a href="https://github.com/googlesamples/android-ActiveNotifications" class="external-link">アクティブな通知のサンプル</a>をご覧ください。
-</li>
-</ul>
-
-<h2 id="bluetooth-stylus">Bluetooth スタイラスのサポート</h2>
-<p>このプレビューでは、Bluetooth スタイラスを使用したユーザー入力のサポートが強化されました。互換性のある Bluetooth スタイラスと電話やタブレットをペアリングして接続できます。
-接続されている間、タッチスクリーンからの位置情報とスタイラスからの筆圧やボタン情報を合わせることで、タッチスクリーン単独の場合よりも表現の幅が大きく広がります。
-
-新しい
-{@code View.onStylusButtonPressListener} コールバックと {@code GestureDetector.OnStylusButtonPressListener} コールバックをアクティビティに登録すると、スタイラスのボタンが押されたことをアプリがリッスンし、次のアクションを実行できるようになります。
-
-</p>
-
-<p>スタイラスのボタン操作を検出するには、{@link android.view.MotionEvent} メソッドと定数を使用します。
-</p>
-<ul>
-<li>ユーザーがスタイラスでアプリ画面のボタンをタップすると、
-{@link android.view.MotionEvent#getToolType(int) getTooltype()} メソッドが
-{@link android.view.MotionEvent#TOOL_TYPE_STYLUS} を返します。</li>
-<li>M Preview を対象としたアプリでは、ユーザーがプライマリのスタイラス ボタンを押すと
-{@link android.view.MotionEvent#getButtonState() getButtonState()} メソッドが {@code MotionEvent.STYLUS_BUTTON_PRIMARY} を返します。
-
-スタイラスにセカンダリ ボタンがある場合は、ユーザーがそのボタンを押したときに同じメソッドで {@code MotionEvent.STYLUS_BUTTON_SECONDARY} が返されます。
-ユーザーが同時に両方のボタンを押した場合は、両方の値が OR で返されます({@code STYLUS_BUTTON_PRIMARY|STYLUS_BUTTON_SECONDARY})
-
-</li>
-<li>
-以前のプラットフォーム バージョンを対象としたアプリでは、
-{@link android.view.MotionEvent#getButtonState() getButtonState()} メソッドは
-{@link android.view.MotionEvent#BUTTON_SECONDARY}(プライマリのスタイラス ボタンが押されたとき)、
-{@link android.view.MotionEvent#BUTTON_TERTIARY}(セカンダリのスタイラス ボタンが押されたとき)、または両方を返します。
-</li>
-</ul>
-
-<h2 id="ble-scanning">Bluetooth Low Energy のスキャンの改善</h2>
-<p>
-アプリで Bluetooth Low Energy スキャンを実行する場合は、新しい
-{@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} メソッドを使って、設定された
-{@link android.bluetooth.le.ScanFilter} に一致する宣伝パケットが最初に見つかったときと、それが長期間見つからない場合に通知する目的でのみコールバックが必要であると指定できます。
-
-このスキャン アプローチは、以前のプラットフォーム バージョンで提供されていたものよりもはるかに効率的です。
-
-</p>
-
-<h2 id="hotspot">アクセス ポイント 2.0 リリース 1 のサポート</h2>
-<p>
-このプレビューでは、Nexus 6 と Nexus 9 端末のアクセス ポイント2.0 Release 1 仕様のサポートが追加されました。アクセス ポイント 2.0 の資格情報をアプリに提供するには、
-{@code setPlmn()} や {@code setRealm()} などの
-{@link android.net.wifi.WifiEnterpriseConfig} クラスの新しいメソッドを使用します。
-{@link android.net.wifi.WifiConfiguration} オブジェクトで、
-{@link android.net.wifi.WifiConfiguration#FQDN} フィールドと {@code providerFriendlyName} フィールドを設定できます。新しい {@code ScanResult.PasspointNetwork} プロパティは、検出されたネットワークがアクセス ポイント 2.0 のアクセス ポイントを表しているかどうかを示します。
-
-
-</p>
-
-<h2 id="4K-display">4K ディスプレイ モード</h2>
-<p>互換性のあるハードウェアで、ディスプレイの解像度を 4K レンダリングにアップグレードするようアプリから要求できるようになりました。
-現在の物理的解像度を照会するには、新しい
-{@code android.view.Display.Mode} API を使用します。UI が低い論理的解像度で描画されていて、より高い物理的解像度にアップスケールされた場合は、
-{@code Display.Mode.getPhysicalWidth()} メソッドが返す物理的解像度が {@link android.view.Display#getSize(android.graphics.Point) getSize()} で報告される論理的解像度と異なる場合があります。
-
-</p>
-
-<p>アプリ ウィンドウの
-{@code WindowManager.LayoutParams.preferredDisplayModeId} プロパティを設定することで、アプリの実行時に物理的解像度を変更するようシステムに要求できます。この機能は、4K ディスプレイの解像度に切り替えたい場合に便利です。
-4K ディスプレイ モード中、UI は引き続き元の解像度(1080p など)で表示され、4K にアップスケールされますが、
-{@link android.view.SurfaceView} オブジェクトではコンテンツをネイティブの解像度で表示する場合があります。
-</p>
-
-<h2 id="behavior-themeable-colorstatelists">テーマ化可能な ColorStateLists</h2>
-<p>M Preview を実行する端末で、テーマの属性が
-{@link android.content.res.ColorStateList} でサポートされるようになりました。
-{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} メソッドと 
-{@link android.content.res.Resources#getColor(int) getColor()} メソッドは廃止されました。これらの API を呼び出す場合は、代わりに新しい {@code Context.getColorStateList()} メソッドか
-{@code Context.getColor()} メソッドを呼び出します。
-これらのメソッドは、{@link android.support.v4.content.ContextCompat} の v4 appcompat ライブラリにもあります。
-</p>
-
-<h2 id="audio">オーディオ機能</h2>
-
-<p>このプレビューでは、次のように Android でのオーディオ処理が改善されました。 </p>
-<ul>
-  <li>新しい {@code android.media.midi} API を使った <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a> プロトコルのサポート。
-これらの API を使用して MIDI イベントを送受信できます。
-</li>
-  <li>デジタル オーディオの録音を作成して、それぞれのオブジェクトを再生し、システムのデフォルトをオーバーライドするオーディオ ソースとシンク プロパティを構成するための新しい {@code android.media.AudioRecord.Builder} クラスと {@code android.media.AudioTrack.Builder} クラス
-
-。</li>
-  <li>オーディオと入力端末を関連付ける API フック。これは、ユーザーが Android TV に接続されているゲーム コントローラーやリモート コントロールから音声検索を開始できるアプリの場合に特に便利です。ユーザーが検索を開始すると、システムが新しい
-{@code android.app.Activity.onSearchRequested()} コールバックを呼び出します。
-
-ユーザーの入力端末に組み込みのマイクがあるかどうかを確認するには、そのコールバックから {@link android.view.InputDevice} オブジェクトを取得して、新しい
-{@code InputDevice.hasMic()} メソッドを呼び出します。
-</li>
-  <li>アタッチされたすべてのソースとシンク オーディオ端末の一覧を取得できる新しい {@code android.media.AudioDevicesManager} クラス。
-また、オーディオ端末の接続時と接続解除時にアプリで通知を受けたい場合は、
-{@code android.media.OnAudioDeviceConnectionListener} オブジェクトを指定することもできます。
-</li>
-</ul>
-
-<h2 id="video">ビデオ機能</h2>
-<p>このプレビューでは、ビデオ処理の API に次のような新機能が追加されました。</p>
-<ul>
-<li>アプリでオーディオ ストリームとビデオ ストリームを同調してレンダリングできる新しい {@code android.media.MediaSync}。
-オーディオ バッファはノンブロッキング方式で送信され、コールバック経由で返されます。
-ダイナミック再生レートもサポートしています。
-</li>
-<li>アプリで開かれたセッションが、リソース マネージャーによって再要求されたことを示す新しい {@code MediaDrm.EVENT_SESSION_RECLAIMED} イベント。
-アプリが DRM セッションを使用する場合は、必ずこのイベントを処理し、再要求されたセッションは使用しないようにします。
-
-</li>
-<li>リソース マネージャーがコーデックで使用されたメディア リソースを再要求したことを示す新しい {@code MediaCodec.CodecException.ERROR_RECLAIMED} エラーコード。
-この例外では、コーデックはターミナル状態に移動するため、解放する必要があります。
-
-</li>
-<li>同時に発生できるコーデック インスタンスの最大数のヒントを得られる新しい {@code MediaCodecInfo.CodecCapabilities.getMaxSupportedInstances()} インターフェース。
-
-</li>
-<li>高速または低速モーション再生におけるメディアの再生レートを設定する新しい {@code MediaPlayer.setPlaybackParams()} メソッド。
-ビデオと共にオーディオの再生を自動的に延ばしたり早めたりもします。
-</li>
-</ul>
-
-<h2 id="camera">カメラ機能</h2>
-<p>このプレビューでは、カメラのフラッシュやカメラによる画像の再処理にアクセスするための新しい API が用意されています。
-</p>
-
-<h3 id="flashlight">Flashlight API</h3>
-<p>カメラ端末にフラッシュ ユニットが付属している場合は、{@code CameraManager.setTorchMode()} メソッドを呼び出すことで、カメラ端末を開かずにフラッシュ ユニットのタッチモードのオン/オフを切り替えることができます。
-アプリには、フラッシュ ユニットやカメラ端末のフラッシュの独占所有権はありません。
-トーチモードは、カメラ端末が利用不可になったときや、トーチを付けている他のカメラリソースが利用不可になったときにオフになり、利用できなくなります。
-
-他のアプリでも {@code setTorchMode()} を呼び出してトーチモードをオフにできます。
-最後にトーチモードをオンにしたアプリが閉じられると、トーチモードはオフになります。
-</p>
-
-<p>
-{@code CameraManager.registerTorchCallback()} メソッドを呼び出すことで、トーチモードの状態に関する通知を受けるようコールバックを登録できます。コールバックを初めて登録したときに、現在検知されているすべてのフラッシュ ユニット付きのカメラ端末のトーチモードの状態が即座に呼び出されます。
-
-トーチモードが正常にオン/オフされると、
-{@code CameraManager.TorchCallback.onTorchModeChanged()} メソッドが呼び出されます。</p>
-
-<h3 id="reprocessing">Reprocessing API</h3>
-<p>{@link android.hardware.camera2 Camera2} API は、YUV とプライベートな不透明形式の画像の再処理をサポートするよう拡張されました。
-アプリは、再処理機能が利用可能かどうかを {@code CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES} 経由で確認します。
-端末が再処理をサポートしている場合は、
-{@code CameraDevice.createReprocessableCaptureSession()} を呼び出して再処理可能なカメラ撮影セッションを作成し、入力バッファの再処理の要求を作成できます。
-
-</p>
-
-<p>入力バッファのフローをカメラの再処理入力に接続するには、{@code ImageWriter} クラスを使用します。
-空のバッファを取得するには、次のプログラミング モデルを使用します。</p>
-
-<ol>
-<li>{@code ImageWriter.dequeueInputImage()} メソッドを呼び出します。</li>
-<li>入力バッファにデータを入力します。</li>
-<li>{@code ImageWriter.queueInputImage()} メソッドを呼び出して、バッファをカメラに送ります。</li>
-</ol>
-
-<p>{@code ImageWriter} オブジェクトを
-{@code android.graphics.ImageFormat.PRIVATE} 画像と共に使用する場合、アプリから直接画像データにアクセスすることはできません。
-代わりに、{@code ImageWriter.queueInputImage()} メソッドをバッファコピーなしで呼び出して、{@code ImageFormat.PRIVATE} 画像を直接
-{@code ImageWriter} に渡します。
-</p>
-
-<p>{@code ImageReader} クラスで {@code android.graphics.ImageFormat.PRIVATE} 形式の画像ストリームがサポートされるようになりました。
-これにより、アプリが 
-{@code ImageReader} 出力画像の循環的な画像のキューを維持でき、1 つ以上の画像を選択して、それらをカメラの再処理用に
-{@code ImageWriter} に送ることができます。</p>
-
-<h2 id="afw">Android for Work の機能</h2>
-<p>このプレビューには、次のような Android for Work 用の新しい API が含まれています。</p>
-<ul>
-  <li><strong>企業の専用端末の制御の強化:</strong>デバイス オーナーは次の設定を制御でき、企業の専用端末を管理しやすくなります。
-
-
-  <ul>
-    <li>
-{@code DevicePolicyManager.setKeyguardEnabledState()} メソッドを使ったキーガードの無効化と有効化。</li>
-    <li>
-{@code DevicePolicyManager.setStatusBarEnabledState()} メソッドを使ったステータスバー(クイック設定、通知、Google Now を起動するスワイプアップのジェスチャ)の無効化と有効化。
-</li>
-    <li>{@link android.os.UserManager} の定数 {@code DISALLOW_SAFE_BOOT} を使ったセーフブートの無効化と有効化。
-</li>
-    <li>
-{@link android.provider.Settings.Global} の定数 {@code STAY_ON_WHILE_PLUGGED_IN} を使った電源接続時の画面オフの回避。</li>
-  </ul>
-  </li>
-  <li><strong>デバイス オーナーによるアプリのサイレント インストールとアンインストール:</strong>デバイス オーナーでは、{@link android.content.pm.PackageInstaller} API を使って、Google Play for Work から独立してアプリケーションをサイレントにインストール、アンインストールできます。
-
-デバイス オーナー経由で、ユーザー操作なしでアプリを取得したりインストールしたりできる端末を提供できます。
-この機能は、Google アカウントのアクティベートなしでキオスクや同様の端末のワンタッチ プロビジョニングを有効にする際に便利です。
-</li>
-<li><strong>企業証明書のサイレント アクセス: </strong>ユーザーが証明書の選択を求められる前にアプリが 
-{@link android.security.KeyChain#choosePrivateKeyAlias(android.app.Activity,android.security.KeyChainAliasCallback,java.lang.String[],java.security.Principal[],java.lang.String,int,java.lang.String) choosePrivateKeyAlias()} を呼び出すと、プロファイルやデバイス オーナーが {@code DeviceAdminReceiver.onChoosePrivateKeyAlias()} メソッドを呼び出して要求元のアプリケーションにエイリアスをサイレントに提供できるようになりました。
-
-
-この機能によって、ユーザー操作なしでマネージド アプリが証明書にアクセスできるようになります。
-</li>
-<li><strong>システムアップデートの自動受信。</strong>
-{@code DevicePolicyManager.setSystemUpdatePolicy()} を使ってシステムアップデートのポリシーを設定することで、デバイス オーナーがキオスク端末などでシステムアップデートを自動的に受信できるようにしたり、ユーザーが操作しないようアップデートを最大 30 日間保留したりできます。
-
-さらに、管理者はアップデートを実行する時間枠を、キオスク端末が使用されていない時間帯などに設定できます。
-利用可能なシステムアップデートがある場合、システムは Work Policy Controller アプリにシステムアップデートのポリシーがあるかどうかを確認し、それに基づいて動作します。
-
-
-</li>
-<li>
-<strong>代理証明書のインストール:</strong>プロファイルやデバイス オーナーで、サードパーティ アプリが次の {@link android.app.admin.DevicePolicyManager} 証明書の管理 API を呼び出す権限を付与できるようになりました。
-
-
-<ul>
-  <li>{@link android.app.admin.DevicePolicyManager#getInstalledCaCerts(android.content.ComponentName)
-getInstalledCaCerts()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#hasCaCertInstalled(android.content.ComponentName,byte[])
-hasCaCertInstalled()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#installCaCert(android.content.ComponentName,byte[])
-installCaCert()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#uninstallCaCert(android.content.ComponentName,byte[])
-uninstallCaCert()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#uninstallAllUserCaCerts(android.content.ComponentName)
-uninstallAllUserCaCerts()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#installKeyPair(android.content.ComponentName,java.security.PrivateKey,java.security.cert.Certificate,java.lang.String)
-installKeyPair()}</li>
-</ul>
-</li>
-<li><strong>企業のファクトリー リセット制限:</strong>デバイス オーナーをプロビジョニングする際、
-{@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS} バンドルを設定して、ファクトリー リセット保護(FRP)をロック解除するようパラメータを構成できます。
-NFC プログラマー アプリでは、端末が FRP のロック解除するようリセットされ、端末がプロビジョニングされた後にこれらのパラメータを提供でき、事前に Google アカウントを設定しておく必要はありません。
-
-これらのパラメータを修正しない場合、FRP は続行し、事前にアクティブ化された Google の資格情報なしで端末がアクティベートされないようにします。
-
-
-<p>さらに、Google Play サービスでアプリの制限を設定することで、デバイス オーナーは FRP のロック解除用の別の Google アカウントを指定して、端末でアクティベートされたアカウントを置き換えることができます。
-</p>
-</li>
-<img src="{@docRoot}preview/images/work-profile-screen.png" srcset="{@docRoot}preview/images/work-profile-screen.png 1x, {@docRoot}preview/images/work-profile-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-<li><strong>データ使用のトラッキング</strong>プロファイルやデバイス オーナーでは、新しい
-{@code android.app.usage.NetworkStatsManager} メソッドを使用して、<strong>[設定] &gt; [データ]</strong> に表示されるデータ使用の統計を照会できます。
-プロファイル オーナーには、管理するプロファイルのデータを照会するパーミッションが自動的に付与され、デバイス オーナーは管理されたプライマリ ユーザーの使用データへのアクセス権が付与されます。
-
-</li>
-<li><strong>実行時パーミッションの管理:</strong>
-<p>プロファイルやデバイス オーナーは、
-{@code DevicePolicyManager.setPermissionPolicy()} を使用するすべてのアプリケーションのすべての実行時の要求に対するパーミッション ポリシーを設定でき、通常のとおりユーザーにパーミッションを付与するよう要求する、自動的に付与する、パーミッションをサイレントに拒否する、のいずれかを行うことができます。
-
-後者のポリシーが設定されている場合、ユーザーはプロファイルやデバイス オーナーによって選択された内容を <strong>[設定]</strong> にあるアプリのパーミッション画面で修正できません。
-
-</p></li>
-<li><strong>設定の VPN:</strong>VPN アプリは、<strong>[設定] &gt; [その他] &gt; [VPN]</strong> に表示されます。さらに、VPN の使用に関する通知は、その VPN の構成状況によるものになります。
-
-
-プロファイル オーナーの場合、通知は VPN が マネージド プロファイル、個人プロファイル、または両方のどれに構成されているかによって、それ固有のものになります。
-デバイス オーナーの場合、通知は VPN が端末全体に構成されているかどうかによって、それ固有のものになります。
-</li>
-<li><strong>ワーク ステータスの通知:</strong>マネージド プロファイルからのアプリのアクティビティがフォアグラウンドにある場合は、ステータスバーのブリーフケース アイコンが表示されます。
-さらに、端末がマネージド プロファイルのアプリのアクティビティに直接ロック解除されている場合、ユーザーがワーク プロファイル内にいることがトースト通知で表示されます。
-
-
-</li>
-</ul>
-
-<p class="note">
-  M Developer Preview のすべての API の変更点の詳細については、<a href="{@docRoot}preview/download.html">API Differences Report</a> をご覧ください。
-</p>
diff --git a/docs/html-intl/intl/ja/preview/backup/index.jd b/docs/html-intl/intl/ja/preview/backup/index.jd
deleted file mode 100644
index b558cdd..0000000
--- a/docs/html-intl/intl/ja/preview/backup/index.jd
+++ /dev/null
@@ -1,327 +0,0 @@
-page.title=アプリの自動バックアップ
-page.tags=バックアップ, previewresources, androidm
-page.keywords=バックアップ,自動バックアップ,プレビュー
-page.image=images/cards/card-auto-backup_2x.png
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本書の内容</h2>
-      <ol>
-        <li><a href="#overview">概要</a></li>
-        <li><a href="#configuring">データのバックアップを設定する</a></li>
-        <li><a href="#testing">バックアップ設定をテストする</a></li>
-        <li><a href="#issues">既知の問題</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  アプリ内のデータ作成や環境設定は、多大な労力と時間を必要とする作業です。
-端末が破損したり、新しい端末にアップグレードしたりする場合に、そのデータを保持することが、快適な操作性を提供する上で非常に重要です。
-Android M Preview を実行する端末では、アプリデータを Google ドライブに自動的にバックアップすることで、前述のような状況でも快適な操作性を実現できます。
-
-アプリデータは、ユーザーが端末を変更したりアップグレードしたりした場合に自動的に復元されます。
-
-</p>
-
-<p>
-  自動バックアップは、Android M Preview を実行する端末にインストールされているすべてのアプリで有効になっています。追加のアプリコードは必要ありません。
-ユーザーは、自動データ バックアップを使用しないよう選択することもできます。
-また、バックアップするアプリのデータを制限することもできます。
-</p>
-
-<p>
-  このドキュメントでは、新しいシステムの動作と、バックアップするアプリデータを指定する方法について説明します。
-
-</p>
-
-<h2 id="overview">概要</h2>
-
-<p>
-  自動バックアップ機能では、アプリがユーザーの端末上に作成するデータを、ユーザーの Google ドライブ アカウントにアップロードして暗号化することで、そのデータを保持します。
-開発者やユーザーにデータ ストレージの費用が発生することはなく、保存されたデータはユーザー個人のドライブ容量にはカウントされません。
-M Preview の期間中、ユーザーは 1 つの Android アプリにつき最大 25 MB までのデータを保存できます。
-
-</p>
-
-<p>
-  自動バックアップは、端末がアイドル中で、電源に接続されていて、Wi-Fi に接続されている場合に、24 時間ごとに実行されます。
-これらの条件を満たしたとき、バックアップ マネージャー サービスが利用可能なすべてのバックアップ データをクラウドにアップロードします。
-ユーザーが新しい端末に切り替えたり、バックアップされたアプリをアンインストールしたり再インストールしたりした場合、復元操作によりバックアップされたデータが新しくインストールされたアプリのデータ ディレクトリにコピーされます。
-
-
-</p>
-
-<p class="note">
-  <strong>注:</strong> アプリが以前の <a href="{@docRoot}google/backup/index.html">Android バックアップ サービス</a>を利用している場合、この新しい動作は適用されず、既存のバックアップ動作が引き続き適用されます。
-
-
-</p>
-
-
-<h3 id="auto-exclude">自動的に除外されたデータファイル</h3>
-
-<p>
-  一時ファイルやキャッシュなど、バックアップする必要のないアプリデータもあるため、自動バックアップ サービスではデフォルトで一部のデータ ファイルを除外します。
-
-</p>
-
-<ul>
-  <li>{@link android.content.Context#getCacheDir
-    getCacheDir()} メソッドと {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()}
- メソッドに参照されるディレクトリ内のファイル。
-  </li>
-
-  <li>
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
- メソッドに参照されるディレクトリ内のものを除く、外部ストレージ内のファイル。
-  </li>
-
-  <li>
-{@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()} メソッドに参照されるディレクトリ内のファイル。
-  </li>
-</ul>
-
-<h2 id="configuring">データのバックアップを設定する</h2>
-
-<p>
-  前のセクションの自動除外ファイル一覧にあるものを除いて、M Preview 端末にインストールされたすべてのアプリで作成されるデータがバックアップ対象です。
-そこからさらに、アプリ マニフェストの設定を使用して、アプリからバックアップするデータを制限したり設定したりできます。
-
-</p>
-
-<h3 id="include-exclude">対象データと除外データ</h3>
-
-<p>
-  アプリに必要なデータとその保存方法によって、特定のファイルやディレクトリを対象とするか、除外するかの明確なルールが必要になる場合があります。
-自動バックアップ サービスでは、XML 構成ファイルとアプリ マニフェストを使ってそのようなバックアップ ツールを設定できます。
-
-アプリ マニフェストでは、次の例のように、バックアップ スキームの構成ファイルを指定できます。
-
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:tools="http://schemas.android.com/tools"
-        package="com.my.appexample"&gt;
-    &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
-    &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
-    &lt;app ...
-<strong>        android:fullBackupContent="&#64;xml/mybackupscheme"&gt;</strong>
-    &lt;/app&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
-
-<p>
-  このサンプル コードでは、<code>android:fullBackupContent</code> 属性がアプリの開発プロジェクトの <code>res/xml/</code> ディレクトリにある <code>mybackupscheme.xml</code> という名前の XML ファイルを指定しています。
-
-この構成ファイルには、バックアップ対象とするファイルのルールが含まれています。
-次のサンプル コードは、バックアップから特定のファイルを除外する構成ファイルを示しています。
-
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;full-backup-content&gt;
-    &lt;exclude domain="database" path="device_info.db"/&gt;
-&lt;/full-backup-content&gt;
-</pre>
-
-<p>
-  この例のバックアップ構成では、特定のデータベース ファイルのみをバックアップから除外しています。
-  それ以外のファイルはすべてバックアップされます。
-</p>
-
-<h4>バックアップ設定の構文</h4>
-
-<p>
-  バックアップ サービスの設定では、バックアップに含める、または除外するファイルを指定できます。
-データ バックアップ設定の xml ファイルの構文は次のとおりです。
-</p>
-
-<pre>
-&lt;full-backup-content&gt;
-    &lt;include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
-    &lt;exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
-&lt;/full-backup-content&gt;
-</pre>
-
-<p>
-  次のエレメントと属性を使って、バックアップに含める、または除外するファイルを指定できます。
-
-</p>
-
-<ul>
-  <li>
-  <code>&lt;include&gt;</code>。システムにデフォルトでアプリのすべてのデータをバックアップさせるのではなく、バックアップするリソースを自身で指定する場合、このエレメントを使用します。
-<code>&lt;include&gt;</code> タグを指定すると、システムはこのエレメントで<em>指定されたリソースのみ</em>をバックアップします。
-
-
-  </li>
-
-  <li>
-  <code>&lt;exclude&gt;</code>。バックアップから除外するリソースを指定するには、このエレメントを使用します。
-システムは、このエレメントで指定されたリソース以外のすべてのアプリ データをバックアップします。
-
-  </li>
-
-  <li>
-  <code>domain.</code> バックアップに含める、または除外するリソースのタイプ。この属性を指定する際に有効な値: 
-
-  </li>
-
-  <li style="list-style: none">
-  <ul>
-    <li>
-    <code>root</code>。リソースがアプリのルート ディレクトリにあることを指定します。
-    </li>
-
-    <li>
-    <code>file</code>。
-{@link android.content.Context#getFilesDir getFilesDir()} メソッドで返されるディレクトリ内のリソースに相当します。
-    </li>
-
-    <li>
-    <code>database</code>。
-{@link android.content.Context#getDatabasePath getDatabasePath()} メソッドや 
-{@link android.database.sqlite.SQLiteOpenHelper} クラスを使用して返されるデータベースに相当します。
-    </li>
-
-    <li>
-    <code>sharedpref</code>。
-{@link android.content.Context#getSharedPreferences getSharedPreferences()} メソッドで返される 
-{@link android.content.SharedPreferences} オブジェクトに相当します。
-    </li>
-
-    <li>
-    <code>external</code>。リソースが外部ストレージにあることを指定し、
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
- メソッドで返されるディレクトリ内のファイルに相当します。
-    </li>
-
-    <li>
-    <code>path</code>。バックアップに含める、または除外するリソースへのファイルパス。
-
-    </li>
-  </ul>
-  </li>
-</ul>
-
-
-<h3 id="prohibit">データ バックアップの禁止</h3>
-
-<p>
-  マニフェストのアプリ エレメントにある <code>android:allowBackup</code> 属性を <code>false</code> に設定すると、一切のデータを自動バックアップしないように選択できます。
-
-この設定を、次のサンプル コードで示します。
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:tools="http://schemas.android.com/tools"
-        package="com.my.appexample"&gt;
-    &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
-    &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
-    &lt;app ...
-<strong>        android:allowBackup="false"&gt;</strong>
-    &lt;/app&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
-
-
-<h2 id="testing">バックアップ設定をテストする</h2>
-
-<p>
-  バックアップ設定を作成したら、アプリでデータが保存され、正常に復元されることをテストして確認する必要があります。
-
-</p>
-
-
-<h4>バックアップのログの有効化</h4>
-
-<p>
-  バックアップで XML ファイルがどのように解析されるかを確認するため、テストのバックアップを実行する前にログ機能を有効にします。
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
-</pre>
-
-<h4>バックアップのテスト</h4>
-
-<p>手動でバックアップを実行するには、まず次のコマンドを呼び出してバックアップ マネージャーを初期化する必要があります。
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr run
-</pre>
-
-<p>
-  次に、次のコマンドを使って、アプリのパッケージ名を <code>&lt;PACKAGE&gt;</code> パラメータで指定して手動でアプリケーションをバックアップします。
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr fullbackup &lt;PACKAGE&gt;</pre>
-
-
-<h4>復元のテスト</h4>
-
-<p>
-  アプリのバックアップ後に手動で復元を開始するには、アプリのパッケージ名を <code>&lt;PACKAGE&gt;</code> パラメータで指定します。
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr restore &lt;PACKAGE&gt;
-</pre>
-
-<p class="warning">
-  <b>警告:</b> このアクションを実行すると、アプリが停止し、復元操作を実行する前にデータが消去されます。
-
-</p>
-
-<p>
-  アプリをアンインストールしてから再インストールすることで、アプリの復元プロセスを開始します。アプリのインストールが完了すると、アプリデータが自動的にクラウドから復元されます。
-
-</p>
-
-
-<h4>バックアップのトラブルシューティング</h4>
-
-<p>
-  問題が発生した場合は、<strong>[設定] &gt; [バックアップ]</strong>でバックアップをオン/オフに切り替え、端末を工場出荷時の状態にリセットするか、次のコマンドを呼び出して、バックアップ データと関連メタデータを消去できます。
-
-
-</p>
-
-<pre>$ adb shell bmgr wipe &lt;TRANSPORT&gt; &lt;PACKAGE&gt;</pre>
-
-<p>
-  <code>&lt;TRANSPORT&gt;</code> には、<code>com.google.android.gms</code> というプレフィクスが付く必要があります。
-  Transport の一覧を取得するには、次のコマンドを呼び出します。
-</p>
-
-<pre>$ adb shell bmgr list transports</pre>
-
-<h2 id="issues">既知の問題</h2>
-
-<p>自動バックアップ サービスには、次のような既知の問題があります。</p>
-
-<ul>
-  <li><strong>Google Cloud Messaging</strong> - プッシュ通知に Google Cloud Messaging を使用するアプリの場合、Messaging の登録時に返された登録 ID をバックアップすると、復元されたアプリのプッシュ通知が破損することがあるという既知の問題があります。古い登録 ID がバックアップされている場合を除いて、新しい端末へのインストール後は、新しい 登録 ID 用の API を照会することが重要です。
-
-
-
-
-これを回避するには、バックアップ対象ファイルから登録 ID を除外します。
-
-  </li>
-</ul>
diff --git a/docs/html-intl/intl/ja/preview/behavior-changes.jd b/docs/html-intl/intl/ja/preview/behavior-changes.jd
deleted file mode 100644
index a7950a1..0000000
--- a/docs/html-intl/intl/ja/preview/behavior-changes.jd
+++ /dev/null
@@ -1,402 +0,0 @@
-page.title=動作の変更点
-page.keywords=プレビュー,sdk,compatibility
-sdk.platform.apiLevel=MNC
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>本書の内容</h2>
-
-<ol id="toc44" class="hide-nested">
-    <li><a href="#behavior-runtime-permissions">実行時パーミッション</a></li>
-    <li><a href="#behavior-power">省電力の最適化 </a>
-        <ol>
-            <li><a href="#behavior-doze">Doze</a></li>
-            <li><a href="#behavior-app-standby">App Standby</a></li>
-        </ol>
-    </li>
-    <li><a href="#behavior-adoptable-storage">追加可能なストレージ端末</a></li>
-    <li><a href="#behavior-apache-http-client">Apache HTTP Client の削除</a></li>
-    <li><a href="#behavior-audiomanager-Changes">AudioManager の変更点</a></li>
-    <li><a href="#behavior-test-selection">テキスト選択</a></li>
-    <li><a href="#behavior-keystore">Android キーストロークの変更点</a></li>
-    <li><a href="#behavior-network">Wi-Fi とネットワークの変更点</a></li>
-    <li><a href="#behavior-camera">カメラ サービスの変更点</a></li>
-    <li><a href="#behavior-art-runtime">ART ランタイム</a></li>
-    <li><a href="#behavior-apk-validation">APK の検証</a></li>
-    <li><a href="#behavior-afw">Android for Work の変更点</a></li>
-</ol>
-
-<h2>API の変更点</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">API レベル 22 から M Preview&raquo;</a> </li>
-</ol>
-
-
-<h2>関連ドキュメント</h2>
-<ol>
-<li><a href="{@docRoot}preview/api-overview.html">M Developer Preview API の概要</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M Developer Preview には、新機能以外にもさまざまなシステムの変更点や API の動作の変更点が盛り込まれています。
-このドキュメントでは、アプリ開発において把握しておくべき主な変更点について説明します。
-</p>
-
-<p>過去に Android にアプリを公開したことがある場合は、アプリがこれらの変更による影響を受ける場合があることに注意してください。
-</p>
-
-<h2 id="behavior-runtime-permissions">実行時パーミッション</h1>
-<p>このプレビューでは、アプリのパーミッションを実行時にユーザーが直接管理できる新しいパーミッション モデルが採用されました。
-このモデルによって、ユーザーに対するパーミッションの可視性と制御性が向上し、アプリ開発者にとってはアプリのインストールや自動アップデート プロセスの効率が上がります。ユーザーはインストール済みアプリのパーミッションを個別に付与したり取り消したりできます。
-
- </p>
-
-<p>M Preview を対象としたアプリでは、必ずパーミッションを実行時に確認、要求するようにします。
-アプリにパーミッションが付与されているかどうかを確認するには、新しい {@code Context.checkSelfPermission()} メソッドを呼び出します。
-パーミッションを要求するには、新しい
-{@code Activity.requestPermission()} メソッドを呼び出します。アプリが M を対象としていない場合でも、新しいパーミッション モデルでアプリをテストするようにしてください。
-</p>
-
-<p>アプリで新しいパーミッションをサポートする際の詳細については、Developer Preview ページの
-<a href="{@docRoot}preview/features/runtime-permissions.html">Permissions</a> をご覧ください。
-アプリへの影響を評価する際のヒントについては、<a href="{@docRoot}preview/testing/guide.html#runtime-permissions">Testing Guide</a> をご覧ください。
-</p>
-
-<h2 id="behavior-power">省電力の最適化 </h2>
-<p>このプレビューでは、アイドル中の端末やアプリに対する新しい省電力の最適化機能が採用されています。</p>
-
-<h3 id="behavior-doze">Doze</h3>
-<p>端末が電源に接続されておらず、画面が一定時間オフ状態の場合は <em>Doze</em> モードに入り、システムをスリープ状態に保ちます。
-このモードでは、端末は定期的に通常の操作を短時間再開することで、アプリを同期したり、システムが保留中の操作を行ったりすることができます。
-
-</p>
-
-<p>Doze 中は、アプリに次の制限が適用されます。</p>
-<ul>
-<li>アプリで優先度の高い Google Cloud Messaging の通知を受信する場合以外、ネットワーク アクセスは無効になります。
-</li>
-<li><a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">Wake ロック</a> は無視されます。</li>
-<li>{@link android.app.AlarmManager} クラスを使ってスケジュールされたアラームは無効になりますが、{@link android.app.AlarmManager#setAlarmClock setAlarmClock()} メソッドと {@code AlarmManager.setAndAllowWhileIdle()} を使って設定したアラームは除きます。
-
-</li>
-<li>WiFi スキャンは実行されません。</li>
-<li>同期アダプタ と {@link android.app.job.JobScheduler} の同期とジョブは実行できません。
-</li>
-</ul>
-</p>
-<p>端末が Doze モードでなくなると、保留中のすべての同期とジョブが実行されます。</p>
-<p>この機能をテストするには、M Preview を実行する端末を開発マシンに接続して、次のコマンドを呼び出します。
-
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-<p class="note"><strong>注</strong>: 
-<a href="https://developers.google.com/cloud-messaging/" class="external-link">Google Cloud Messaging</a> の次期リリースでは、高優先度のメッセージを指定できます。
-
-アプリが高優先度の GCM メッセージを受信する場合は、端末が Doze 中でも短時間のネットワーク アクセスが付与されます。
-
-</p>
-
-<p>アプリで Doze をテストする方法のヒントについては、
-<a href="{@docRoot}preview/testing/guide.html#doze-standby">Testing Guide</a> をご覧ください。
- </p>
-
-<h3 id="behavior-app-standby">App Standby</h3>
-<p>このプレビューでは、アクティブに使用されていないアプリをシステムがアイドル状態であるとみなす場合があります。
-システムが次の信号を検出しない場合、一定時間の経過後にアプリはアイドル状態であるとみなされます。
-</p>
-
-<ul>
-<li>アプリがユーザーによって明示的に起動された。</li>
-<li>アプリのプロセスが現在フォアグラウンドにある(アクティビティかフォアグラウンド サービスとしてか、他のアクティビティかフォアグラウンド サービスによって使用されている)。
-</li>
-<li>アプリがロック画面や通知トレイに表示される通知を生成する。
-</li>
-<li>ユーザーが、アプリに最適化が適用されないよう <strong>[設定]</strong> で明示的に指定する。
-</li>
-</ul>
-
-<p>端末が電源に接続されていない場合、アイドル中のみなされたアプリのネットワーク アクセスは無効になり、同期とジョブは保留されます。
-端末が電源に接続されると、アプリのネットワーク アクセスは許可され、保留中のすべてのジョブと同期が実行されます。
-端末が長時間アイドル状態の場合、アイドル中のアプリは 1 日 1 回程度ネットワーク アクセスが許可されます。
-</p>
-
-<p>この機能をテストするには、M Preview を実行する端末を開発マシンに接続して、次のコマンドを呼び出します。
-
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell am set-idle &lt;packageName&gt; true
-$ adb shell am set-idle &lt;packageName&gt; false
-$ adb shell am get-idle &lt;packageName&gt;
-</pre>
-
-<p class="note"><strong>注:</strong> 
-<a href="https://developers.google.com/cloud-messaging/" class="external-link">Google Cloud Messaging</a>(GCM)の次期リリースでは、高優先度のメッセージを指定できます。
-
-アプリが高優先度の GCM メッセージを受信する場合は、アプリがアイドル 中でも短時間のネットワーク アクセスが付与されます。
-
-</p>
-
-<p>アプリで App Standby をテストする方法のヒントについては、
-<a href="{@docRoot}preview/testing/guide.html#doze-standby">Testing Guide</a> をご覧ください。
- </p>
-
-<h2 id="behavior-adoptable-storage">追加可能なストレージ端末</h2>
-<p>
-このプレビューでは、SD カードなどの外部ストレージ端末を<em>追加</em>できます。外部ストレージ端末を追加すると、端末が内部ストレージのように動作するよう暗号化とフォーマットが行われます。
-この機能によって、アプリとアプリの個人データをストレージ端末間で移動できるようになります。
-アプリを移動する際、システムはマニフェストの 
-<a href="{@docRoot}guide/topics/manifest/manifest-element.html#install">{@code android:installLocation}</a> を遵守します。
-
-</p>
-
-<p>アプリが次の API やフィールドにアクセスする場合は、アプリが内部ストレージ端末と外部ストレージ端末間で移動する際に返されるファイルパスが動的に変化することに注意してください。ファイルパスの構築時は、これらの API を動的に呼び出すことを強くお勧めします。ハードコードされたファイル パスを使用したり、過去にビルドした完全修飾ファイルパスをそのまま使用したりしないでください。
-
-
-</p>
-
-<ul>
-<li>{@link android.content.Context} メソッド:
-    <ul>
-        <li>{@link android.content.Context#getFilesDir() getFilesDir()}</li>
-        <li>{@link android.content.Context#getCacheDir() getCacheDir()}</li>
-        <li>{@link android.content.Context#getCodeCacheDir() getCodeCacheDir()}</li>
-        <li>{@link android.content.Context#getDatabasePath(java.lang.String) getDatabasePath()}</li>
-        <li>{@link android.content.Context#getDir(java.lang.String,int) getDir()}</li>
-        <li>{@link android.content.Context#getNoBackupFilesDir() getNoBackupFilesDir()}</li>
-        <li>{@link android.content.Context#getFileStreamPath(java.lang.String) getFileStreamPath()}</li>
-        <li>{@link android.content.Context#getPackageCodePath() getPackageCodePath()}</li>
-        <li>{@link android.content.Context#getPackageResourcePath() getPackageResourcePath()}</li>
-    </ul>
-</li>
-<li>{@link android.content.pm.ApplicationInfo} フィールド:
-    <ul>
-        <li>{@link android.content.pm.ApplicationInfo#dataDir dataDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#sourceDir sourceDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#nativeLibraryDir nativeLibraryDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#publicSourceDir publicSourceDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#splitSourceDirs splitSourceDirs}</li>
-        <li>{@link android.content.pm.ApplicationInfo#splitPublicSourceDirs splitPublicSourceDirs}</li>
-    </ul>
-</li>
-</ul>
-
-<p>Developer Preview のこの機能をデバッグするには、USB On-The-Go(OTG)ケーブルで Android 端末に接続された USB ドライブの追加を有効にして、次のコマンドを実行します。
-</p>
-
-<pre class="no-prettyprint">
-$ adb shell sm set-force-adoptable true
-</pre>
-
-<h2 id="behavior-apache-http-client">Apache HTTP Client の削除</h2>
-<p>このプレビューでは、Apache HTTP クライアントのサポートが削除されました。アプリでこのクライアントを使用していて、Android 2.3(API レベル 9)以上を対象としている場合は、代わりに {@link java.net.HttpURLConnection} クラスを使用します。
-
-この API は透過的データ圧縮と応答のキャッシュによってネットワーク使用を軽減し、電源の消費を最小化するため、効率性が向上します。
-Apache HTTP API を引き続き使用するには、まず {@code build.gradle} ファイルで次のコンパイル時の依存関係を宣言する必要があります。
-
-</p>
-<pre>
-android {
-    useLibrary 'org.apache.http.legacy'
-}
-</pre>
-<p>Android は、OpenSSL から
-<a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a> ライブラリに移行しています。
-アプリで Android NDK を使用している場合は、{@code libcrypto.so} や {@code libssl.so} など、NDK API の一部でない暗号化ライブラリにリンクしないでください。
-これらのライブラリは パブリック API ではなく、リリースや端末に対する通知なしで変更されたり、中断したりする可能性があります。また、セキュリティ上の脆弱性を露呈する場合もあります。
-
-代わりに、ネイティブ コードを変更して JNI 経由で Java の暗号化 API を呼び出すか、希望の暗号化ライブラリに静的リンクします。
-
-</p>
-
-<h2 id="behavior-audiomanager-Changes">AudioManager の変更点</h2>
-<p>{@link android.media.AudioManager} クラスで音量を直接設定したり、特定のストリームをミュートにしたりする方法はサポートされなくなりました。
-{@link android.media.AudioManager#setStreamSolo(int,boolean)
-setStreamSolo()} メソッドは廃止されたため、代わりに
-{@code AudioManager.requestAudioFocus()} メソッドを呼び出す必要があります。同様に、
-{@link android.media.AudioManager#setStreamMute(int,boolean) setStreamMute()} メソッドも廃止され、代わりに {@code AudioManager.adjustStreamVolume()} メソッドを呼び出して、値に {@code ADJUST_MUTE} か {@code ADJUST_UNMUTE} を渡します。
-
-</p>
-
-<h2 id="behavior-test-selection">テキスト選択</h2>
-
-<img src="{@docRoot}preview/images/text-selection.gif" style="float:right; margin:0 0 20px 30px" width="360" height="640" />
-
-<p>ユーザーがアプリ内でテキストを選択するとき、
-<em>切り取り</em>、<em>コピー</em>、<em>貼り付け</em>などのテキスト選択のアクションを
-<a href="http://www.google.com/design/spec/patterns/selection.html#selection-text-selection" class="external-link">フローティング ツール バー</a>に表示できるようになりました。
-<a href="{@docRoot}guide/topics/ui/menus.html#CABforViews">個別のビューに対してコンテキスト アクション モードを有効にする</a>にあるように、コンテキスト アクションバーに関するユーザー操作の実装も同様です。
-
-</p>
-
-<p>テキスト選択にフローティング ツール バーを実装するには、既存のアプリに次の変更を加えます。
-</p>
-<ol>
-<li>{@link android.view.View} オブジェクトか {@link android.app.Activity} オブジェクトで、{@link android.view.ActionMode} の呼び出しを
-{@code startActionMode(Callback)} から {@code startActionMode(Callback, ActionMode.TYPE_FLOATING)} に変更します。
-</li>
-<li>既存の {@code ActionMode.Callback} の実装を、{@code ActionMode.Callback2} に拡張します。
-</li>
-<li>{@code Callback2.onGetContentRect()} メソッドをオーバーライドして、ビューのコンテンツの {@link android.graphics.Rect} オブジェクト)テキスト選択の四角形など)の座標を指定します。
-</li>
-<li>四角形の位置が有効でなくなり、無効な要素がこれのみである場合は、{@code ActionMode.invalidateContentRect()} メソッドを呼び出します。
-</li>
-</ol>
-
-<p><a href="{@docRoot}tools/support-library/index.html">
-Android Support Library</a> revision 22.2 を使用している場合、フローティング ツール バーに下方互換性はなく、デフォルトで appcompat が代わりに {@link android.view.ActionMode} オブジェクトを制御することに注意してください。
-
-これにより、フローティング ツール バーは表示されなくなります。
-{@link android.support.v7.app.AppCompatActivity} で
-{@link android.view.ActionMode} がサポートされるようにするには、
-{@code android.support.v7.app.AppCompatActivity.getDelegate()} を呼び出して、返された
-{@link android.support.v7.app.AppCompatDelegate} オブジェクトで
-{@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()} を呼び出し、 入力パラメータを {@code false} に設定します。
-この呼び出して、{@link android.view.ActionMode} オブジェクトの制御がフレームワークに戻ります。
-M Preview を実行する端末ではフレームワークによる
-{@link android.support.v7.app.ActionBar} やフローティング ツール バー モードのサポートが可能ですが、M Preview 以前の端末では
-{@link android.support.v7.app.ActionBar} モードのみがサポートされます。</p>
-
-<h2 id="behavior-keystore">Android キーストロークの変更点</h2>
-<p>このプレビューでは、
-<a href="{@docRoot}training/articles/keystore.html">Android Keystore プロバイダ</a>による DSA のサポートがなくなります。
-ECDSA は引き続きサポートされます。</p>
-
-<p>停止時に暗号化を必要としないキーが、ロック画面の(ユーザーや端末の管理者などによる)無効時やリセット時に削除されなくなりました。
-停止時に暗号化を必要とするキーは、これらのイベント時に削除されます。
-</p>
-
-<h2 id="behavior-network">Wi-Fi とネットワークの変更点</h2>
-
-<p>このプレビューでは、Wi-Fi API とネットワーク API の動作に次のような変更点が追加されました。</p>
-<ul>
-<li>オブジェクトの作成者である場合のみ、アプリで{@link android.net.wifi.WifiConfiguration} オブジェクトの状態を変更できます。
-ユーザーや他のアプリによって作成された
-{@link android.net.wifi.WifiConfiguration} オブジェクトは変更、削除できません。
-</li>
-<li>
-以前は、
-{@link android.net.wifi.WifiManager#enableNetwork(int,boolean) enableNetwork()} で
-{@code disableAllOthers=true} 設定を使ってアプリから端末を特定の Wi-Fi ネットワークに接続させた場合、端末はセルラー データなどの他のネットワークから切断されていました。
-このプレビューでは、端末が他のネットワークから切断されないようになりました。アプリの {@code targetSdkVersion} が {@code “20”} 以下の場合は、選択した Wi-Fi ネットワークに固定されます。
-
-アプリの {@code targetSdkVersion} が {@code “21”} 以上の場合は、マルチネットワーク API(
-{@link android.net.Network#openConnection(java.net.URL) openConnection()}メソッド、
-{@link android.net.Network#bindSocket(java.net.Socket) bindSocket()}メソッド、新しい
-{@code ConnectivityManager.bindProcessToNetwork()} メソッドなど)を使用してネットワーク トラフィックが選択したネットワークに送られるようにします。
-
-</li>
-</ul>
-
-<h2 id="behavior-camera">カメラ サービスの変更点</h2>
-<p>このプレビューでは、カメラ サービスの共有リソースへのアクセスモデルが、以前の "先着順" モデルから、"優先度順" に変更されました。
-
-この動作の変更には、次のようなものがあります。</p>
-<ul>
-<li>カメラ端末を開いて構成するなど、カメラのサブシステム リソースへのアクセスは、クライアント アプリケーション プロセスの "優先度" に基づいて与えられます。
-通常、ユーザーに表示されているアクティビティやフォアグラウンドにあるアクティビティのあるアプリケーション プロセスの優先度が最も高くなり、カメラ リソースの取得や使用の信頼性が高まります。
-
-</li>
-<li>優先度の低いアプリでアクティブなカメラ クライアントは、より優先度の高いアプリケーションがカメラを使おうとした際に使用が中断される場合があります。
-廃止された {@link android.hardware.Camera} API では、使用が中断されたクライアントに
-{@link android.hardware.Camera.ErrorCallback#onError(int,android.hardware.Camera) onError()} が呼び出されます。
-
-{@link android.hardware.camera2 Camera2} API では、使用が中断されたクライアントに
-{@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected(android.hardware.camera2.CameraDevice) onDisconnected()} が呼び出されます。
-</li>
-<li>適切なカメラ ハードウェア付きの端末では、別のアプリケーション プロセスを独立して開き、別のカメラ端末を同時に使用できます。
-ただし、同時アクセスによってパフォーマンスや開いているカメラ端末の性能が著しく低下するマルチプロセスの使用が検出可能になり、カメラ サービスでは許可されなくなりました。
-
-この変更によって、同じカメラ端末にアクセスしようとしているアプリが他になくても、優先度の低いクライアントによる使用が中断される場合があります。
-
-
-</li>
-<li>
-現在のユーザーを変更すると、アプリ内で前のユーザー アカウントで所有していたアクティブなカメラ クライアントが中断させられることになります。
-カメラへのアクセスは、現在の端末ユーザーが所有するユーザー プロファイルのみに制限されます。つまり、ユーザーが別のアカウントに切り替えた場合、"ゲスト" アカウントはカメラのサブシステムを使用するプロセスを実行したまま去ることはできません。
-
-
-</li>
-</ul>
-
-<h2 id="behavior-art-runtime">ART ランタイム</h2>
-<p>ART ランタイムで、
-{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} メソッドに対するアクセスルールを正常に実装できるようになりました。この変更によって、以前のバージョンで Dalvik がアクセス ルールを正しく確認できなかった問題が解決しました。アプリで
-{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} メソッドを使用していて、アクセス チェックをオーバーライドしたい場合は、 {@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()} メソッドを使って入力パラメータを {@code true} に設定します。
-
-
-
-
-アプリで
-<a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7 appcompat ライブラリ</a>や
-<a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">v7 recyclerview ライブラリ</a>を使用する場合は、これらのライブラリの最新バージョンを使用するようアプリをアップデートする必要があります。
-アップデートしない場合は、XML から参照するカスタム クラスがアップデートされていて、クラス コンストラクタがアクセス可能であることを確認しておく必要があります。
-</p>
-
-<p>このプレビューでは、動的リンクの動作がアップデートされました。動的リンクでは、ライブラリの {@code soname} とそのパス(<a href="https://code.google.com/p/android/issues/detail?id=6670" class="external-link">
-public bug 6670</a>)の違いを認識でき、{@code soname} が実装されています。
-
-
-以前動作していたアプリで間違った {@code DT_NEEDED} エントリを持つもの(ビルドマシンのファイル システムの絶対パスなど)は、読み込み時に失敗する場合があります。
-</p>
-
-<p>{@code dlopen(3) RTLD_LOCAL} フラグは正常に実装されました。
-{@code RTLD_LOCAL} はデフォルトのため、
-{@code RTLD_LOCAL} を明示的に使用しない {@code dlopen(3)} への呼び出しは影響を受けます(アプリで明示的に {@code RTLD_GLOBAL} を使用している場合を除く)。
-{@code RTLD_LOCAL} では、後に
-{@code dlopen(3)} への呼び出しで読み込まれたライブラリで記号は使用できません({@code DT_NEEDED} エントリによって参照された場合とは逆)。</p>
-</p>
-
-<h2 id="behavior-apk-validation">APK の検証</h2>
-<p>プラットフォームでより厳しい APK の検証が行われるようになりました。APK がマニフェスト ファイルで宣言されているにもかかわらず、APK 自体に存在しない場合、その APK は破損しているとみなされます。
-コンテンツが一部でも削除された場合は、APK の再署名が必要になります。
-</p>
-
-<h2 id="behavior-afw">Android for Work の変更点</h2>
-<p>このプレビューには、次のような Android for Work に関する動作の変更点が含まれています。</p>
-<ul>
-<li><strong>個人のコンテキストでの仕事用の連絡先</strong>ユーザーが過去の通話履歴を表示したときに、Google Dialer
-Call Log に仕事用の連絡先が表示されるようになりました。{@code DevicePolicyManager.setCrossProfileCallerIdDisabled()} を {@code true} に設定すると、Google Dialer Call Log に仕事用プロファイルの連絡先は表示されなくなります。
-
-{@code DevicePolicyManager.setBluetoothContactSharingDisabled()} を {@code false} に設定した場合のみ、Bluetooth 経由で端末に仕事用の連絡先と個人用の連絡先を表示できます。
-
-デフォルトでは、{@code true} に設定されています。
-
-</li>
-<li><strong>WiFi 設定の削除:</strong>プロファイル オーナーによって追加された WiFi 設定(@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration)
-addNetwork()} メソッドへの呼び出しなどを介して)は、その仕事用プロファイルが削除されると同時に削除されます。
-
-</li>
-<li><strong>WiFi 設定のロック:</strong>アクティブなデバイス オーナーによって作成された WiFi 設定は、ユーザーが修正したり削除したりできなくなりました。
-ユーザーに {@link android.os.UserManager} 定数
-{@link android.os.UserManager#DISALLOW_CONFIG_WIFI} が設定されていない限り、ユーザー自身の WiFi 設定を作成、修正することはできます。
-</li>
-<li><strong>Google アカウントの追加経由での Work Policy Controller のダウンロード:</strong>Work Policy Controller(WPC)アプリ経由で管理する必要のある Google アカウントがマネージド コンテキスト外で端末に追加されると、アカウントの追加フローでユーザーに適切な WPC をインストールするよう要求します。この動作は、初期の端末のセットアップ ウィザードでの
-<strong>[設定]&gt; [アカウント]</strong> で追加されるアカウントにも適用されます。
-
-
-</li>
-<li><strong>特定の DevicePolicyManager API の動作の変更点: </strong>
-{@link android.app.admin.DevicePolicyManager#setCameraDisabled(android.content.ComponentName,boolean) setCameraDisabled()} メソッドの呼び出しは、呼び出し元のユーザーのカメラにのみ影響を与えます。マネージド プロファイルから呼び出した場合は、プライマリ ユーザーで実行しているカメラ アプリに影響はありません。
-
-さらに、
-{@link android.app.admin.DevicePolicyManager#setKeyguardDisabledFeatures(android.content.ComponentName,int) setKeyguardDisabledFeatures()} メソッドは、デバイス オーナーに加えてプロファイル オーナーでも利用可能になりました。
-プロファイル オーナーは、これらのキーガード制限を設定できます:
-
-<ul>
-<li>プロファイルの親ユーザーのキーガード設定に影響を与える {@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_TRUST_AGENTS} と {@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_FINGERPRINT}。
-
-</li>
-<li>マネージド プロファイルのアプリケーションで生成された通知のみに影響を与える {@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS}。
-</li>
-</ul>
-</li>
-</ul>
diff --git a/docs/html-intl/intl/ja/preview/download.jd b/docs/html-intl/intl/ja/preview/download.jd
deleted file mode 100644
index 7f6f499..0000000
--- a/docs/html-intl/intl/ja/preview/download.jd
+++ /dev/null
@@ -1,360 +0,0 @@
-page.title=ダウンロード
-page.image=images/cards/card-download_16-9_2x.png
-
-@jd:body
-
-<div style="position:relative; min-height:600px">
-
-  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
-    <p class="sdk-terms-intro">Android Preview SDK のコンポーネントをダウンロード、インストールする前に、次の利用規約に同意する必要があります。
-</p>
-
-    <h2 class="norule">利用規約</h2>
-
-    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-以下は、Android SDK Preview の使用許諾契約です(以下「本契約」)。
-
-1.はじめに
-
-1.1 Android SDK Preview(以下、本契約で「Preview」という。具体的には利用可能な場合には Android システム ファイル、パッケージ型 API、Preview ライブラリ ファイルを含む)は、本契約の規定に従ってライセンス許可されます。本契約では、デベロッパーの Preview の使用に関して、デベロッパーと Google の間で法的拘束力のある契約を結びます。
-
-1.2 「Android」とは、Android オープン ソース プロジェクト(http://source.android.com/ にて随時更新)にて利用可能な、端末向けの Android ソフトウェア スタックを意味します。
-
-1.3 「Google」とは、1600 Amphitheatre Parkway, Mountain View, CA 94043, United States に主たる事業所を有するデラウェア州法人である Google Inc. を意味します。
-
-2.本契約の同意
-
-2.1 Preview を使用するには、まず本契約に同意する必要があります。本契約に同意しない場合は Preview を使用できません。
-
-2.2 同意するかまたは Preview を使用するためにクリックすると、本契約に同意したことになります。
-
-2.3 米国またはその他の国(デベロッパーが居住している国かまたはデベロッパーが Preview を使用する国を含む)の法律により Preview の使用を禁止されている人である場合、Preview を使用することも、使用許諾契約に同意することもできません。
-
-2.4 雇用主またはその他の事業体を代表または代理して本契約に拘束されることに同意し Preview を企業または組織の内部で使用する場合、担当者の雇用主またはその他の事業体を本契約に法的に拘束する完全な法的権限を有していることを表明および保証するものとします。担当者が必要な権限を有していない場合は、担当者の雇用主またはその他の事業体を代表または代理して、本契約に同意することも、Preview を使用することもできません。
-
-3.Google Preview ライセンス
-
-3.1 本契約の規定に従い、Google は Android プラットフォーム上で実行するアプリケーションの開発に Preview を個人的にもしくは企業または組織の内部で使用するための、ロイヤリティ フリーな、譲渡不可で、非排他的な、サブライセンス不可の、限定された、取り消し可能なライセンスを付与するものとします。
-
-3.2 Preview に関するすべての法的権利、所有権、利益(Preview に含まれる知的財産権を含む)は Google またはサードパーティが所有するものとします。「知的財産権」とは、特許法、著作権法、営業秘密法、商標法、不当競争防止法に基づいて発生するすべての権利、およびその他のすべての所有権を意味します。デベロッパーに明示的に付与されていない権利は、すべて Google が所有します。
-
-3.3 本契約で明示的に許可されている目的以外においては、Preview を使用できません。当該のサードパーティのライセンスで必要とされる場合を除き、デベロッパーは、(a) Preview または Preview の一部をコピー(バックアップ目的を除く)、修正、改造、再配布、逆コンパイル、リバース エンジニアリング、逆アセンブルまたは派生物の作成、または(b)モバイル ハンドセットまたは個人用 PC 以外のハードウェア端末への Preview の読み込み、Preview と他のソフトウェアとの結合、または Preview の一部を組み込んだソフトウェアや端末の配布はできません。
-
-3.4 デベロッパーは、Android の断片化につながるような行為をしないことに同意します。これには、Preview から派生したソフトウェア開発キットの配布、作成への参加、宣伝を含みます(ただし必ずしもこれらには限定されません)。
-
-3.5 オープンソース ソフトウェア ライセンス下でライセンス付与された Preview のコンポーネントの使用、複製、配布は、本契約ではなく、そのオープンソース ソフトウェアのライセンスに準拠するものとします。デベロッパーは、許諾されるすべての権利下で、そのようなオープンソース ソフトウェア ライセンスに対して、優良ライセンシーのままでいることに同意し、そのような権利を終了、停止、または違反する可能性のあるいかなる行為も差し控えることに同意するものとします。
-
-3.6 デベロッパーは、Google が提供する Preview の形式および性質は事前の通知なしに変更される場合があり、今後リリースされる Preview のバージョンでは、以前のバージョンの Preview で開発されたアプリケーションとの互換性がない可能性があることに同意します。デベロッパーは、Google が事前の通知なく、Google の単独の裁量でデベロッパーまたはユーザーへの Preview(または Preview 内の一部の機能)の提供を(恒久的または一時的に)停止する場合があることに同意します。
-
-3.7 本契約のいかなる部分も、Google のいかなる商標名、商標、サービスマーク、ロゴ、ドメイン名、またはその他のブランド識別表示を使用する権利もデベロッパーに付与するものではありません。
-
-3.8 デベロッパーは、Preview に添付または収録されているすべての知的財産権に関する通知(著作権および商標の通知を含む)の削除、隠ぺい、改ざんを行わないことに同意します。
-
-4.デベロッパーによる Preview の使用
-
-4.1 Google は、本契約に基づき Preview を使用してデベロッパーが開発したソフトウェア アプリケーションに関して、デベロッパー(またはデベロッパーのライセンサー)からいかなる権利、所有権、または利益(当該アプリケーションに含まれる知的財産権を含む)も取得するものではないことに同意します。
-
-4.2 デベロッパーは、Preview を(a)本契約、および(b)該当する司法管轄区における適用される法律、規則、または一般に認められた慣行またはガイドライン(米国またはその他の該当国におけるデータまたはソフトウェアの輸出入に関する法律を含む)で認められている目的にのみ使用することに同意します。
-
-4.3 Preview を使用してアプリケーションを開発する場合、デベロッパーはユーザーのプライバシーおよび法的権利を保護することに同意します。ユーザーからデベロッパーにユーザー名、パスワード、またはその他のログイン情報または個人情報が提供される場合、デベロッパーは、情報がデベロッパーのアプリケーションに提供されることをユーザーに認識させ、当該ユーザーについてプライバシーに関する法的に十分な通知および保護を行わなければなりません。デベロッパーのアプリケーションに個人情報または秘密情報が保存される場合、この保存は保護された方法で行われなければなりません。ユーザーからデベロッパーのアプリケーションに Google アカウントの情報が提供された場合、デベロッパーのアプリケーションでは、ユーザーが許可したタイミングで、かつユーザーが許可した限定された目的にのみ、当該情報を使用してユーザーの Google アカウントにアクセスすることが認められるものとします。
-
-4.4 デベロッパーは、Preview に関して、第三者(Google、およびあらゆる携帯電話会社を含むが、これらに限定されない)のサーバー、ネットワーク、またはその他の財産またはサービスへの妨害、中断、損害、または許可されていない態様でのアクセスとなる行為(そのような行為に該当する対象製品の開発または販売 / 配布を含む)に関与しないことに同意します。
-
-4.5 デベロッパーは、デベロッパーが Android および Android のアプリケーションを介して作成、送信、表示するデータ、コンテンツ、リソース、および自身の行為の結果(Google に発生する可能性のあるあらゆる損失および損害を含む)について、自身が単独で責任を負うこと(および Google がこれについてデベロッパーまたはいかなる第三者に対しても一切責任を負わないこと)に同意します。
-
-4.6 デベロッパーは、本契約、適用される第三者の契約もしくは利用規約、または適用される法律もしくは規則に基づく自身の義務に違反したこと、および当該違反の結果(Google または第三者に発生したあらゆる損失および損害を含む)について、自身が単独で責任を負うこと(および Google がこれについてデベロッパーまたはいかなる第三者に対しても一切責任を負わないこと)に同意します。
-
-4.7 Preview は開発中であり、デベロッパーによるテスティングやフィードバックは開発プロセスの重要な一部となります。デベロッパーは、Preview の使用により、一部の機能の実装が開発中であると認識し、Preview が安定したリリースの完全な機能性を持つことに依存すべきでないことを認識するものとします。本 Preview は、公式の Android SDK のリリース後はサポート対象でなくなるため、デベロッパーは、Preview を使用するいかなるアプリケーションも公然と配布または引き渡さないことに同意するものとします。
-
-5.デベロッパーの資格情報
-
-5.1 デベロッパーは、Google が発行した、またはデベロッパー自身で選択した、自身のデベロッパー用資格情報の秘密を保持する責任を負うこと、および自身のデベロッパー用資格情報のもとで開発されたすべてのアプリケーションについて単独で責任を負うことに同意します。
-
-6.プライバシーおよび情報
-
-6.1 Google は、Preview の継続的な技術革新と改良のために、ソフトウェアから特定の使用状況統計情報(一意識別子、関連する IP アドレス、ソフトウェアのバージョン番号、Preview のどのツール/サービスがどのように使用されているかに関する情報を含むが、これらに限定されない)を収集できます。この情報が収集される前に、Preview に通知が表示され、デベロッパーの同意が求められます。デベロッパーが同意しない場合は、情報は収集されません。
-
-6.2 収集されるデータは、Preview の改良のために集約された形で精査され、Google のプライバシー ポリシー(http://www.google.com/policies/privacy/)に従って管理されます。
-
-7.第三者のアプリケーション
-
-7.1 デベロッパーが、Preview を使用して第三者が開発したアプリケーションを実行する、あるいは第三者から提供されたデータ、コンテンツ、リソースにアクセスする場合、デベロッパーは、Google がそれらのアプリケーション、データ、コンテンツ、リソースについて責任を負わないことに同意します。デベロッパーは、そのような第三者のアプリケーションを介してアクセスするすべてのデータ、コンテンツ、リソースについては、それらを生成した者が単独で責任を負うものであり、Google はそれらの第三者のアプリケーション、データ、コンテンツ、またはリソースの使用もしくはアクセスによって生じたあらゆる損失および損害について一切責任を負わないことを理解します。
-
-7.2 デベロッパーは、そのような第三者のアプリケーションを介して表示されるデータ、コンテンツ、リソースは、提供者(あるいは代理の第三者または事業体)が所有する知的財産権で保護されている場合があることを認識するものとします。デベロッパーは、当該所有者からの明確な許可がない限り、それらのデータ、コンテンツ、リソース(全体または一部)の変更、貸与、賃貸、担保、配布または派生物の作成を行うことはできません。
-
-7.3 デベロッパーは、そのような第三者のアプリケーション、データ、コンテンツまたはリソースの使用が、デベロッパーと当該第三者間の別の規約に従うものであることを認識するものとします。
-
-8.Google API の使用
-
-8.1 Google API
-
-8.1.1 API を使用して Google からデータを取得する場合、デベロッパーは、そのデータは、Google またはデータを提供する事業体(あるいは代理の第三者または事業体)が所有する知的財産権で保護されている場合があることを認識するものとします。そのような API の使用は追加の利用規約に従うものとします。デベロッパーは、当該の利用規約による許可がない限り、そのデータ(全体または一部)の変更、貸与、賃貸、担保、配布または派生物の作成を行うことはできません。
-
-8.1.2 デベロッパーは、API を使用して Google からユーザーのデータを取得する場合、ユーザーが明示的に同意した場合のみ、およびユーザーが許可したタイミングとその目的にのみ、データを取得できることを理解し、同意します。
-
-9.本契約の終了
-
-9.1 本契約は、下記の規定に従ってデベロッパーまたは Google のいずれかによって解約されるまで、継続して適用されるものとします。
-
-9.2 デベロッパーが本契約の解約を希望する場合は、Preview および関連するデベロッパー資格情報の使用を停止することで、契約を終了するものとします。
-
-9.3 Google は、理由の有無にかかわらず、書面で通知することでいつでもデベロッパーとの本契約を解約することができます。
-
-9.4 本契約は事前の通知またはその他の措置なく、次のうち早い方に自動的に終了します。
-(A)Google が、デベロッパーが居住している国またはデベロッパーがサービスを使用する国での Preview または Preview の一部の配布を停止したとき。
-(B)Google が Android SDK の最終バージョンをリリースしたとき。
-
-9.5 本契約が終了すると、本契約で付与されていたライセンスは終了し、デベロッパーは速やかに Preview のすべての使用を停止するものとし、第 10 条、第 11 条、第 12 条、第 14 条の規定は無期限に効力を有するものとします。
-
-10.免責事項
-
-10.1 デベロッパーは、デベロッパーによる Preview の使用はデベロッパー自身の責任において行うものであること、および Preview は「現状有姿」かつ「提供可能な限りにおいて」、Google からのいかなる種類の保証もなく提供されるものであることを明示的に理解し、これに同意します。
-
-10.2 デベロッパーによる Preview および Preview の使用を通じてダウンロードまたはその他の方法で取得されたマテリアルの使用は、デベロッパー自身の裁量および責任において行うものであり、当該使用の結果として生じるデベロッパーのコンピュータ システムもしくはその他の端末への損害またはデータの喪失についての責任はデベロッパーが単独で負います。前述を制限することなく、Preview は安定したリリースではなく、コンピュータやその他の端末の利用の完全な回復不可能な損失を含む、重大な損害を引き起こす可能性のあるエラー、欠陥、およびセキュリティ上の脆弱性が含まれている可能性があることを理解します。
-
-10.3 Google はまた、商品性、特定目的への適合性、および権利侵害がないことの黙示的な保証および条件を含む(ただしこれらに限定されない)、明示的か黙示的かを問わずあらゆる種類のすべての保証および条件を明示的に否定します。
-
-11.責任の制限
-
-11.1 デベロッパーは、Google、その子会社および関連会社、ならびにそのライセンサーが、デベロッパーに発生した直接損害、間接損害、偶発的損害、特別損害、結果的損害、または懲罰的損害(データの喪失を含む)について、Google またはその代表者が当該損失が発生する可能性について告知されていたかどうか、または知っていたはずであるかどうかにかかわらず、いかなる責任法理のもとでもデベロッパーに対して責任を負わないことを明示的に理解し、これに同意します。
-
-12.補償
-
-12.1 法律で認められる最大限の範囲内において、デベロッパーは、(a)デベロッパーが Preview を使用したこと、および(b)デベロッパーが Preview で開発したアプリケーションが他者のいかなる知的財産権を侵害していること、または他者の名誉を毀損している、もしくは他者のパブリシティ権もしくはプライバシー権を侵害していること、および(c)デベロッパーが本契約に違反したことから発生したあらゆる申し立て、普通法上の訴訟、衡平法上の訴訟、または法的手続き、ならびにあらゆる損失、責任、損害、費用、および経費(合理的な弁護士報酬を含む)について、Google、その関連会社、ならびに当該各社の取締役、役員、従業員、代理人を防御し、補償し、免責することに同意します。
-
-13.契約の変更
-
-13.1 Google は、Preview の新しいバージョンを配布することにより、いつでも本契約を変更することができます。変更が生じた場合、Google は、Preview の提供ウェブサイト上に使用許諾契約の改訂版を公開します。
-
-14.法的一般条項
-
-14.1 本契約は、デベロッパーと Google の間の法的な合意のすべてを表し、デベロッパーによる Preview の使用(別の契約下で Google が提供するサービスを除く)に適用され、Preview に関するデベロッパーと Google の間のあらゆる事前の合意に完全に取って代わるものです。
-
-14.2 デベロッパーは、Google が本契約に定める(または適用される法律のもとで Google が享受できる)法的な権利または救済措置を行使または執行しなかった場合でも、Google の権利が正式に放棄されたとはみなされないこと、および Google が以後も引き続き当該権利および救済措置を行使または執行できることに同意します。
-
-14.3 本件について判断を下す管轄権を有する司法裁判所によって、本契約のいずれかの条項が無効と判断された場合、当該条項は、本契約の残りの部分に影響を与えることなく本契約から削除されるものとします。本契約の残りの条項は、以後も引き続き有効かつ執行可能であるものとします。
-
-14.4 デベロッパーは、Google が親会社となっている各グループ企業が、本契約の第三受益者となること、および当該企業が、当該企業に利益(または受益権)を付与する本契約の条項を直接執行する、また当該条項に依拠する権利を有することを了承し、これに同意します。上記以外のいかなる人または法人も、本契約の第三受益者とはならないものとします。
-
-14.5 輸出規制。Preview は、米国輸出管理法令の対象です。デベロッパーは、Preview に適用されるすべての国内および国際の輸出管理法令に従わなければなりません。これらの法律には、仕向け地、ユーザー、および最終用途に関する制限が含まれます。
-
-14.6 デベロッパーは、Google から事前に書面で承認を得ずに、本契約を譲渡または移転することはできません。また、そのような承認を得ずに計画された譲渡はすべて無効になります。デベロッパーは、Google から事前に書面で承認を得ずに、本契約に基づく自身の責任または義務を他者に委任してはなりません。
-
-14.7 本契約あるいは本契約に基づくデベロッパーと Google の関係から発生または関連するすべての申し立ては、米国カリフォルニア州の抵触法を除いて、カリフォルニア州法に準拠するものとします。デベロッパーおよび Google は、本契約あるいは本契約に基づくデベロッパーと Google の関係から発生または関連する法的事項の解決について、米国カリフォルニア州サンタクララ郡に所在の連邦裁判所または州立裁判所が専属管轄権を有することに合意します。上記にかかわらず、デベロッパーは、Google が任意の司法管轄区において差し止め命令による救済(または同等の緊急法的救済)を求める申し立てを行うことが認められることに同意します。
-  </div><!-- sdk terms -->
-
-
-
-    <div id="sdk-terms-form">
-      <p>
-        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-        <label id="agreeLabel" for="agree">上記の利用規約を読み、同意します。</label>
-      </p>
-      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-    </div>
-
-
-  </div><!-- end TOS -->
-
-
-  <div id="landing">
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本書の内容</h2>
-      <ol>
-        <li><a href="#sdk">Android 6.0 SDK</a></li>
-        <li><a href="#docs">デベロッパー ドキュメント</a></li>
-        <li><a href="#images">ハードウェアのシステム イメージ</a></li>
-      </ol>
-
-     <h2>Legacy downloads</h2>
-        <ol>
-           <li><a href="{@docRoot}preview/download_mp1.html">Developer Preview 1</a></li>
-           <li><a href="{@docRoot}preview/download_mp2.html">Developer Preview 2</a></li>
-        </ol>
-  </div>
-</div>
-
-
-<p>
-  Android M Preview SDK には、アプリとプラットフォームの次期リリースで提供される新しい API とのテストに役立つ開発ツール、Android システム ファイル、ライブラリ ファイルが含まれています。
-このドキュメントでは、アプリのテスト用にダウンロードできる Preview のコンポーネントを入手する方法について説明します。
-
-</p>
-
-
-<h2 id="sdk">Android 6.0 SDK</h2>
-
-<p>
-  Preview SDK <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK マネージャー</a>経由でダウンロードできます。Preview SDK のダウンロードと設定の詳細については、<a href="{@docRoot}preview/setup-sdk.html#downloadSdk">Set Up the Preview SDK</a> をご覧ください。
-
-</p>
-
-
-<h2 id="docs">デベロッパー ドキュメント</h2>
-
-<p>
-  デベロッパー ドキュメントのダウンロード パッケージでは、詳細な Preview の API リファレンス情報や API の比較レポートが提供されます。
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Description</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="docs-dl">
-    <td>Android M Preview 3<br>Developer Docs</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >m-preview-3-developer-docs.zip</a><br>
-      MD5: d99b14b0c06d31c8dfecb25072654ca3<br>
-      SHA-1: 9cefeeda07676130da606a1796e1c00fffc667c1 
-    </td>
-  </tr>
-</table>
-
-<h2 id="images">ハードウェアのシステム イメージ</h2>
-
-<p>
-  これらのシステム イメージでは、テスト用に物理端末にプラットフォームのプレビュー バージョンをインストールできます。
-端末にこれらのイメージを 1 つ以上設定すると、アプリをインストールして、プラットフォームの次期バージョンでアプリがどのように動作するかをテストできます。
-端末にシステム イメージをインストールするプロセスでは、<em>端末からすべてのデータが削除</em>されるため、システム イメージのインストール前にデータをバックアップする必要があります。
-
-
-</p>
-
-<p class="warning">
-  <b>警告:</b> 次の Android システム イメージはプレビュー版であり、今後変更される可能性があります。デベロッパーによるシステム イメージの使用は、Android SDK Preview 使用許諾契約に準拠するものとします。
-Android Preview システム イメージは安定したリリースではなく、お使いのコンピュータ システム、端末、データに影響を与える可能性のあるエラーや欠陥が含まれている場合があります。
-
-プレビュー版の Android システム イメージは工場出荷版の OS と同等のテストを受けておらず、お使いの電話やインストールされているサービス、アンインストールの動作停止を引き起こす場合があります。
-
-
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Device</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="hammerhead">
-    <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >hammerhead-MPA44I-preview-2ebbc049.tgz</a><br>
-      MD5: 91a924fb0c9f8e716e3b4c9954fd0dbb<br>
-      SHA-1: 2ebbc049b68c4da8baeee3e42bb94d7a965ba4a3
-    </td>
-  </tr>
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-MPA44I-preview-62b9c486.tgz</a><br>
-      MD5: ac6e58da86125073d9c395257fd42664<br>
-      SHA-1: 62b9c486fd7a5020e228d53ca5acd5c1857e48ff
-    </td>
-  </tr>
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-MPA44I-preview-5c30a6e2.tgz</a><br>
-      MD5: 7f83768757913d3fea945a661020d185<br>
-      SHA-1: 5c30a6e2acd11a81f4105b12d23ff654f534f699
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-MPA44I-preview-2860040a.tgz</a><br>
-      MD5: 438da8d37da9e341a69cfb16a4001ac5<br>
-      SHA-1: 2860040a326582f1ff5f702bf9a1ef002717fc98
-    </td>
-  </tr>
-
-</table>
-
-<h3 id="install-image">端末にイメージをインストールする</h3>
-
-<p>
-  テスト用に端末イメージを使用するには、互換性のある端末にインストールする必要があります。次の手順に従って、システム イメージをインストールします。
-
-</p>
-
-<ol>
-  <li>この一覧の中からいずれかのシステム イメージ パッケージをダウンロードして、解凍します。</li>
-  <li>保持するデータを端末からバックアップします。</li>
-  <li>
-<a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
- の手順に従って端末にイメージをフラッシュします。</li>
-</ol>
-
-<p class="note">
-  <strong>注:</strong> 開発用端末に Preview のシステム イメージをフラッシュすると、OTA アップデートを通じて次のプレビュー リリースに自動的にアップグレードされます。
-
-</p>
-
-<h3 id="revertDevice">端末を工場出荷時の仕様に戻す</h3>
-
-<p>
-  Preview をアンインストールして、工場出荷時の仕様に戻すには、
-<a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a> にアクセス
-して、端末にフラッシュするイメージをダウンロードします。同じページの手順に従って端末にイメージをフラッシュします。
-
-</p>
-
-  </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
-  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
-  function onDownload(link) {
-
-    $("#downloadForRealz").html("Download " + $(link).text());
-    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
-    $("#tos").fadeIn('fast');
-    $("#landing").fadeOut('fast');
-
-    return true;
-  }
-
-
-  function onAgreeChecked() {
-    /* verify that the TOS is agreed */
-    if ($("input#agree").is(":checked")) {
-      /* reveal the download button */
-      $("a#downloadForRealz").removeClass('disabled');
-    } else {
-      $("a#downloadForRealz").addClass('disabled');
-    }
-  }
-
-  function onDownloadForRealz(link) {
-    if ($("input#agree").is(':checked')) {
-    /*
-      $("#tos").fadeOut('fast');
-      $("#landing").fadeIn('fast');
-    */
-
-      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
-
-    /*
-      location.hash = "";
-    */
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  $(window).hashchange( function(){
-    if (location.hash == "") {
-      location.reload();
-    }
-  });
-
-</script>
diff --git a/docs/html-intl/intl/ja/preview/features/app-linking.jd b/docs/html-intl/intl/ja/preview/features/app-linking.jd
deleted file mode 100644
index 92da0b42..0000000
--- a/docs/html-intl/intl/ja/preview/features/app-linking.jd
+++ /dev/null
@@ -1,123 +0,0 @@
-page.title=App Links
-page.image=images/cards/card-app-linking_2x.png
-page.keywords=applinking,deeplinks,intents
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本書の内容</h2>
-      <ol>
-        <li><a href="#web-assoc">ウェブサイトの関連を宣言する</a></li>
-        <li><a href="#verfy-links">App Link の検証を要求する</a></li>
-        <li><a href="#user-manage">App Link 設定を管理する</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  Android インテント システムは、アプリでコンテンツや要求を処理できるようにする柔軟なメカニズムです。
-  複数のアプリが、それぞれのインテント フィルタに一致する URI パターンを宣言できます。デフォルトのローンチ ハンドラを持たないウェブリンクをユーザーがクリックしたとき、一致するインテント フィルタが宣言されているアプリの一覧から選択するダイアログがプラットフォームによってユーザーに表示されます。
-
-
-</p>
-
-<p>
-  Android M Developer Preview でサポートされる App Links では、既存のリンク処理が改善され、アプリ開発者が所有するウェブドメインとアプリを関連付けられるようになりました。
-デベロッパーがこの関連を作成すると、プラットフォームが特定のウェブリンクの処理に使用するデフォルトのアプリを自動的に決めることができ、ユーザーにアプリを選択させる操作をスキップできます。
-
-
-</p>
-
-
-<h2 id="web-assoc">ウェブサイトの関連付けを宣言する</h2>
-
-<p>
-  ウェブサイトのオーナーは、アプリのリンクを設定するための関連を宣言する必要があります。サイトのオーナーは、ドメインのよく知られた場所で {@code statements.json} という名前の JSON ファイルをホストすることで、アプリとの関係を宣言します。
-
-
-</p>
-
-<pre>http://&lt;domain&gt;:&lt;optional port&gt;/.well-known/statements.json</pre>
-
-<p class="note">
-  <strong>注:</strong> 
-  M Developer Preview の間、JSON ファイルは http プロトコルを介して検証されます。プラットフォームの正式リリースでは、ファイルは暗号化された https プロトコルで検証されます。
-
-</p>
-
-<p>
-  この JSON ファイルは、このドメイン下の URL のデフォルトのハンドラとして使用する必要のある Android アプリを示します。
-アプリは、次のフィールドに基づいて識別されます。
-</p>
-
-<ul>
-  <li>{@code package_name}:アプリのマニフェストで宣言されたパッケージ名。</li>
-
-  <li>{@code sha256_cert_fingerprints}:アプリの署名証明書の SHA256 のフィンガープリント。
-    Java Keytool を使用して、次のコマンドでフィンガープリントを生成できます。
-    <pre>keytool -list -v -keystore my-release-key.keystore</pre>
-  </li>
-</ul>
-
-<p>
-  次のファイル一覧は、
-{@code statements.json} ファイルのコンテンツと形式の例を示しています。
-</p>
-
-<pre>
-[{
-  "relation": ["delegate_permission/common.handle_all_urls"],
-  "target": {
-    "namespace": "android_app",
-    "package_name": "<strong>&lt;package name&gt;</strong>",
-    "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
-  }
-}]
-</pre>
-
-
-<h2 id="verfy-links">App Link の検証を要求する</h2>
-
-<p>
-  アプリから、インテント フィルタのデータ エレメントのホスト名で定義されたアプリのリンクを、それぞれのウェブドメインでホストされる {@code statements.json} ファイルに対してプラットフォームが自動的に検証するよう要求できます。
-
-アプリリンクの検証を要求するには、次のマニフェスト コード スニペットのように {@code android:autoVerify}
- 属性をマニフェスト内の目的のインテント フィルタに追加します。
-
-</p>
-
-<pre>
-&lt;activity ...&gt;
-    &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
-        &lt;action android:name="android.intent.action.VIEW" /&gt;
-        &lt;category android:name="android.intent.category.DEFAULT" /&gt;
-        &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
-        &lt;data android:scheme="http" android:host="www.android.com" /&gt;
-        &lt;data android:scheme="https" android:host="www.android.com" /&gt;
-    &lt;/intent-filter&gt;
-&lt;/activity&gt;
-</pre>
-
-<p>
-  {@code android:autoVerify} 属性がアプリ マニフェストに存在する場合、プラットフォームはアプリのインストール時にアプリのリンクを検証しようとします。
-プラットフォームがアプリのリンクを正常に検証できない場合、アプリはウェブリンクの処理に適したアプリとして設定されません。
-次回ユーザーがいずれかのリンクを開いたとき、プラットフォームはユーザーに再度ダイアログを表示します。
-
-
-</p>
-
-<p class="note">
-  <strong>注:</strong> テスト時に、ユーザーがシステムの設定アプリを使ってサポートされているリンクを開くアプリを明示的に有効にしていると、誤検出が原因で検証が失敗する場合があります。この場合、ダイアログは表示されず、リンクは直接アプリに送られますが、これは検証が成功したからではなく、ユーザーの設定に基づいて動作したからです。
-
-
-
-</p>
-
-
-<h2 id="user-manage">App Link 設定を管理する</h2>
-
-<p>
-  ユーザーが希望する方法で URL を処理するように、ユーザー側でアプリのリンク設定を変更できます。アプリのリンクは、システムの設定アプリの <strong>[設定] &gt; [アプリ] &gt; [アプリ情報] &gt; [デフォルトでの起動]</strong> で確認、管理できます。
-
-
-</p>
diff --git a/docs/html-intl/intl/ja/preview/features/runtime-permissions.jd b/docs/html-intl/intl/ja/preview/features/runtime-permissions.jd
deleted file mode 100644
index f582756..0000000
--- a/docs/html-intl/intl/ja/preview/features/runtime-permissions.jd
+++ /dev/null
@@ -1,794 +0,0 @@
-page.title=パーミッション
-page.tags=previewresources, androidm
-page.keywords=パーミッション,実行時,プレビュー
-page.image={@docRoot}preview/features/images/permissions_check.png
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>クイックビュー</h2>
-    <ul>
-      <li>アプリのターゲットが M Preview SDK の場合、インストール時ではなく実行時に、パーミッションを付与するようユーザーに求めます。
-</li>
-      <li>ユーザーはいつでもアプリの [設定] 画面からパーミッションを取り消すことができます。
-</li>
-      <li>アプリは実行時に毎回、必要なパーミッションがあることを確認する必要があります。
-</li>
-    </ul>
-
-    <h2>本書の内容</h2>
-    <ol>
-      <li><a href="#overview">概要</a></li>
-      <li><a href="#coding">実行時のパーミッションのコード</a></li>
-      <li><a href="#testing">実行時のパーミッションをテストする</a></li>
-      <li><a href="#best-practices">ベスト プラクティス</a></li>
-    </ol>
-
-<!--
-  <h2>Related Samples</h2>
-  <ol>
-    <li></li>
-  </ol>
--->
-
-<!--
-  <h2>See also</h2>
-  <ol>
-    <li></li>
-  </ol>
--->
-  </div> <!-- qv -->
-</div> <!-- qv-wrapper -->
-
-
-<p>
-  M Developer Preview では、アプリをインストールしてアップグレードするユーザーのプロセスを効率化する新しいアプリのパーミッション モデルが導入されました。
-M Preview で実行しているアプリで新しいパーミッション モデルがサポートされている場合、ユーザーはアプリをインストールまたはアップグレードするときにパーミッションを付与する必要はありません。その代わりに、アプリは必要になるとパーミッションを要求し、パーミッションを確認するよう求めるダイアログが表示されます。
-
-
-
-
-</p>
-
-<p>
-  アプリで新しいパーミッション モデルがサポートされている場合、以前のバージョンの Android を実行している端末で、以前のパーミッション モデルを使ってインストールして実行することもできます。
-
-
-</p>
-
-<h2 id="overview">
-  概要
-</h2>
-
-<p>
-  M Developer Preview とともに、プラットフォームでは新しいアプリのパーミッション モデルが導入されました。
-この新しいモデルの主要なコンポーネントの概要を次に示します。
-</p>
-
-<ul>
-  <li>
-    <strong>パーミッションを宣言する:</strong> アプリは、以前の Android プラットフォームと同様に、マニフェストで必要なすべてのパーミッションを宣言します。
-
-  </li>
-
-  <li>
-    <strong>パーミッション グループ:</strong> パーミッションは、その機能に基づいて<em>パーミッション グループ</em>に分けられます。
-たとえば、<code>CONTACTS</code> パーミッション グループにはユーザーの連絡先とプロフィール情報を読み書きするパーミッションが含まれます。
-
-
-  </li>
-
-  <li>
-    <p><strong>インストール時に付与される制限付きのパーミッション:</strong> ユーザーがアプリをインストールまたはアップデートするとき、{@link
-    android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL} に該当する、アプリが要求するすべてのパーミッションがアプリに付与されます。
-
-
-    たとえば、目覚まし時計とインターネットのパーミッションは {@link
-    android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL} に該当するため、インストール時に自動的にそれらのパーミッションが付与されます。
-
-    </p>
-
-    <p>システムは、<a href="#system-apps">システムアプリと署名のパーミッション</a>に記載のとおり、アプリの署名とシステムのパーミッションも付与することがあります。
-
-ユーザーは、インストール時にパーミッションを付与するように促すメッセージは表示<em>されません</em>。
-</p>
-  </li>
-
-  <li>
-    <strong>実行時にユーザーがパーミッションを付与する:</strong> アプリがパーミッションを要求すると、ユーザーにダイアログが表示されます。その後、アプリのコールバック関数を呼び出して、パーミッションが付与されているかどうかを知らせます。
-
-ユーザーがパーミッションを付与する場合、アプリ マニフェストで宣言されたパーミッションの機能領域にあるすべてのパーミッションがアプリに付与されます。
-
-
-  </li>
-
-</ul>
-
-<p>
-  このパーミッション モデルにより、パーミッションを要求する機能に対するアプリの動作方法が変わります。
-このモデルに合わせるために、従う必要のある開発プラクティスの概要を次に示します。
-
-</p>
-
-<ul>
-
-  <li>
-    <strong>常にパーミッションを確認する:</strong> アプリがパーミッションを必要とするアクションを実行する必要があるとき、まずパーミッションが既にあるかどうかを確認する必要があります。
-
-パーミッションがない場合、そのパーミッションを付与するよう要求します。
-
-  </li>
-
-  <li>
-    <strong>パーミッションの不足をスムーズに処理する:</strong> アプリに適切なパーミッションが付与されていない場合、エラーが完全に処理される必要があります。
-
-    たとえば、追加機能に対してのみパーミッションが必要な場合、アプリはその機能を無効にできます。
-アプリが機能するためにパーミッションが必須である場合、アプリはすべての機能を無効にしてパーミッションを付与する必要があることをユーザーに知らせることがあります。
-
-
-  </li>
-
-  <div class="figure" style="width:220px" id="fig-perms-screen">
-    <img src="{@docRoot}preview/features/images/app-permissions-screen_2x.png" srcset="{@docRoot}preview/features/images/app-permissions-screen.png 1x, {@docRoot}preview/features/images/app-permissions-screen_2x.png 2x" alt="" width="220">
-    <p class="img-caption">
-      <strong>図 1.</strong>アプリの [設定] のパーミッション画面。
-    </p>
-  </div>
-
-  <li>
-    <strong>パーミッションは取り消し可能:</strong> ユーザーはいつでもアプリのパーミッションを取り消すことができます。
-アプリのパーミッションをオフにすると、アプリに通知<em>されません</em>。
-アプリは制限されたアクションを実行する前に、必要なパーミッションがあることを確認する必要があります。
-
-  </li>
-</ul>
-
-<p class="note">
-  <strong>注:</strong> アプリのターゲットが M Developer Preview の場合、新しいパーミッション モデルを使う<em>必要があります</em>。
-
-</p>
-
-<p>
-  M Developer Preview のローンチ時点では、すべての Google アプリで新しいパーミッション モデルが完全に実装されているわけではありません。
-Google はこれらのアプリを M Developer Preview 中にアップデートして、パーミッションの切り替え設定を完全に実装します。
-
-
-</p>
-
-<p class="note">
-  <strong>注:</strong> アプリに独自の API サーフェスがある場合、まず呼び出し側にそのデータへのアクセスに必要なパーミッションがあることを確認しないままパーミッションをプロキシしないでください。
-
-
-</p>
-
-<h3 id="system-apps">
-  システムアプリと署名のパーミッション
-</h3>
-
-<p>
-  本来、ユーザーがアプリをインストールするとき、システムはアプリに
-  {@link android.content.pm.PermissionInfo#PROTECTION_NORMAL
-  PROTECTION_NORMAL} のみを付与します。ただし、特定の環境では、アプリにより多くのパーミッションが付与されます。
-
-</p>
-
-<ul>
-  <li>アプリがシステム イメージの一部である場合、そのマニフェストにリストされているすべてのパーミッションが自動的に付与されます。
-
-  </li>
-
-  <li>アプリが {@link
-  android.content.pm.PermissionInfo#PROTECTION_SIGNATURE PROTECTION_SIGNATURE} に該当するマニフェストでパーミッションを要求し、アプリがこれらのパーミッションを宣言したアプリと同じ証明書で署名される場合、要求しているアプリに対してこれらのパーミッションがインストール時に付与されます。
-
-
-
-  </li>
-</ul>
-
-<p>
-
-
-どちらの場合でも、ユーザーはシステムの [<strong>設定</strong>] 画面に移動して [<strong>アプリ</strong>] &gt;  <i>[app_name]</i> &gt; [<strong>パーミッション</strong>] を選ぶと、いつでもパーミッションを取り消すことができます。アプリは実行時にパーミッションを継続して確認し、必要に応じて要求する必要があります。
-
-
-</p>
-
-<h3 id="compatibility">
-  上方互換と下方互換
-</h3>
-
-<p>
-  アプリのターゲットが M Developer Preview 以外の場合、M Preview 端末でも以前のパーミッション モデルを引き続き使います。
-ユーザーがアプリをインストールするとき、ユーザーはアプリのマニフェストでリストされているすべてのパーミッションを付与するように要求されます。
-
-
-</p>
-
-<p class="note">
-  <strong>注:</strong> M Developer Preview を実行している端末で、ユーザーはアプリの [設定] 画面から従来のアプリを含むすべてのアプリのパーミッションをオフにできます。
-
-従来のアプリに対してパーミッションをオフにすると、適切な機能がサイレント状態で無効になります。
-アプリがそのパーミッションを必要とする操作を実行しようとするとき、その操作によって必ずしも例外が発生するとは限りません。
-
-代わりに、空のデータセットを返す、エラーを示す、または予期しない動作を返すことがあります。
-たとえば、パーミッションなしでカレンダーを照会すると、メソッドは空のデータセットを返します。
-
-</p>
-
-<p>
-  M Preview を実行していない端末で新しいパーミッション モデルを使ってアプリをインストールする場合、他のすべてのアプリと同様に扱われ、インストール時に、すべての宣言されたパーミッションを付与するようユーザーに求めます。
-
-
-
-</p>
-
-<p class="note">
-  <strong>注:</strong> Preview リリースの場合、M Preview SDK に SDK の最小バージョンを設定して Preview SDK でコンパイルする必要があります。
-つまり、Developer Preview 中は従来のプラットフォームでそのようなアプリをテストできません。
-
-
-</p>
-
-<h3 id="perms-vs-intents">パーミッションとインテント</h3>
-
-<p>
-  多くの場合、アプリがタスクを実行するには 2 つの方法から選択できます。
-アプリ自体が操作を実行するパーミッションを要求できます。
-アプリでインテントを使うようにして、別のアプリがそのタスクを実行するようにすることもできます。
-
-</p>
-
-<p>
-  たとえば、端末のカメラで写真を撮る機能がアプリに必要だとします。
-アプリは <code>android.permission.CAMERA</code> パーミッションをリクエストでき、それによりアプリが直接カメラにアクセスできるようになります。
-
-そのとき、アプリはカメラの API を使ってカメラを制御し、写真を撮ります。
-このアプローチにより、アプリが写真のプロセスを完全に制御し、カメラの UI をアプリに組み込むことができます。
-
-
-</p>
-
-<p>
-  ただし、そのような制御が不要な場合は、{@link
-  android.provider.MediaStore#ACTION_IMAGE_CAPTURE ACTION_IMAGE_CAPTURE} インテントを使うだけで画像を要求できます。
-インテントを開始すると、カメラアプリ(デフォルトのカメラアプリがない場合)を選んでアプリで写真を撮るよう求めるメッセージが表示されます。
-
-カメラアプリはアプリの {@link
-  android.app.Activity#onActivityResult onActivityResult()} メソッドに写真を返します。
-</p>
-
-<p>
-  同様に、ユーザーの連絡先にアクセスするなどして電話をかける必要がある場合、適切なインテントを作成するか、パーミッションを要求して適切なオブジェクトに直接アクセスできます。
-
-各アプローチにはメリットとデメリットがあります。
-
-</p>
-
-<p>
-  パーミッションを使う場合:
-</p>
-
-<ul>
-  <li>操作を実行するとき、アプリによってユーザーの操作感が完全に制御されます。
-ただし、そのような幅広い制御により、適切な UI を設計する必要があるため、タスクが複雑化します。
-
-  </li>
-
-  <li>操作を初めて実行するときに、ユーザーに一度だけパーミッションの付与を求めるメッセージが表示されます。
-その後、アプリはユーザーからの介入は必要とせずに操作を実行できます。
-ただし、ユーザーがパーミッションを付与しない(または後でパーミッションを取り消す)場合、アプリは操作を一切実行できなくなります。
-
-
-  </li>
-</ul>
-
-<p>
-  インテントを使う場合:
-</p>
-
-<ul>
-  <li>操作用に UI を設計する必要はありません。インテントを処理するアプリでは UI が提供されますが、これはユーザーの操作感を制御できないことを意味します。
-
-ユーザーはこれまでに見たことのないアプリと相互操作することになります。
-
-  </li>
-
-  <li>操作に対してデフォルトのアプリを持たないユーザーの場合、ユーザーにアプリの選択を求めるメッセージが表示されます。ユーザーがデフォルトのハンドラを指定しない場合、操作のたびに別のダイアログで指定する必要があることがあります。
-
-
-
-  </li>
-</ul>
-
-<h2 id="coding">実行時のパーミッションのコード</h2>
-
-<p>
-  アプリのターゲットが新しい M Developer Preview の場合、新しいパーミッション モデルを使う必要があります。
-つまり、マニフェストで必要なパーミッションを宣言する他に、実行時にパーミッションがあることを確認し、まだパーミッションがない場合にはパーミッションを要求します。
-
-
-
-</p>
-
-<h3 id="enabling">
-  新しいパーミッション モデルを有効にする
-</h3>
-
-<p>
-  新しい M Developer Preview パーミッション モデルを有効にするには、アプリの <code>targetSdkVersion</code> 属性を <code>"MNC"</code> に、<code>compileSdkVersion</code> を <code>"android-MNC"</code> に設定します。
-
-このように設定することで、新しいパーミッション機能すべてが有効になります。
-
-</p>
-
-<p>
-  Preview リリースの場合、<code>minSdkVersion</code> を <code>"MNC"</code> に設定して Preview SDK でコンパイルする必要があります。
-
-</p>
-
-<h3 id="m-only-perm">
-  M Preview のみに対するパーミッションの設計
-</h3>
-
-<p>
-  アプリ マニフェストで新しい <code>&lt;uses-permission-sdk-m&gt;</code> 要素を使って、M Developer Preview のみで必要なパーミッションを表示できます。
-このようにしてパーミッションを宣言すると、アプリを以前の端末にインストールする場合はユーザーにメッセージが表示されないか、アプリにパーミッションが付与されません。<code>&lt;uses-permission-sdk-m&gt;</code> 要素を使うと、新しいパーミッションを追加してインストールをアップデートするときにパーミッションの付与を強制せずにアプリのバージョンがアップデートされます。
-
-
-
-
-
-
-</p>
-
-<p>
-  M Developer Preview を使ってアプリが端末で実行されている場合、<code>&lt;uses-permission-sdk-m&gt;</code> は <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> と同じように動作します。
-
-
-  アプリをインストールするとき、パーミッションの付与を求めるメッセージは表示されず、アプリは必要なときにパーミッションを要求します。
-
-</p>
-
-<h3 id="prompting">
-  パーミッションについてのダイアログを表示する
-</h3>
-
-<p>
-  アプリで新しい M Developer Preview パーミッション モデルが使われている場合、M Preview を実行している端末でアプリを初めて起動するとき、すべての権限を付与する必要はありません。
-
-その代わりに、アプリは必要なときにパーミッションを要求します。
-アプリがパーミッションを要求すると、ユーザーにダイアログが表示されます。
-
-</p>
-
-<p>
-  SDK 22 以降がインストールされた端末でアプリを実行する場合、アプリでは以前のパーミッション モデルが使われます。
-ユーザーがアプリをインストールすると、アプリがそのマニフェストで要求するすべてのパーミッションの付与を求めるメッセージが表示されます。ただし、<code>&lt;uses-permission-sdk-m&gt;</code> というラベルの付いたパーミッションは例外です。
-
-
-</p>
-
-<h4 id="check-platform">アプリが実行されているプラットフォームを確認する</h4>
-
-<p>
-  このパーミッション モデルは、M Developer Preview を実行している端末でのみサポートされます。
-これらのメソッドのいずれかを呼び出す前に、アプリは {@link android.os.Build.VERSION#CODENAME
-  Build.VERSION.CODENAME} の値を確認してどのプラットフォーム上で実行されているのかを確認する必要があります。
-
-端末で M Developer Preview が実行されている場合、{@link android.os.Build.VERSION#CODENAME CODENAME} は <code>"MNC"</code> です。
-
-</p>
-
-<h4 id="check-for-permission">アプリに必要なパーミッションがあるかどうかを確認する</h4>
-
-<p>ユーザーがパーミッションを要求する動作を行うと、アプリは現在この操作を実行するためのパーミッションがあるかどうかを確認します。
-
-
-確認するために、アプリは <code>Context.checkSelfPermission(<i>permission_name</i>)</code> を呼び出します。ユーザーが既にパーミッションを付与していることをアプリが認識している場合でも、ユーザーはいつでもアプリのパーミッションを取り消すことができるため、この確認が行われます。
-
-
-たとえば、ユーザーがアプリを使って写真を撮る場合、アプリは <code>Context.checkSelfPermission(Manifest.permission.CAMERA)</code> を呼び出します。
-
-</p>
-
-<p class="table-caption" id="permission-groups">
-  <strong>表 1.</strong>パーミッションとパーミッション グループ。</p>
-<table>
-  <tr>
-    <th scope="col">パーミッション グループ</th>
-    <th scope="col">パーミッション</th>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CALENDAR</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_CALENDAR</code>
-        </li>
-      </ul>
-      <ul>
-        <li>
-          <code>android.permission.WRITE_CALENDAR</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CAMERA</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.CAMERA</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CONTACTS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_CONTACTS</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_CONTACTS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_PROFILE</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_PROFILE</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.LOCATION</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.ACCESS_FINE_LOCATION</code>
-        </li>
-        <li>
-          <code>android.permission.ACCESS_COARSE_LOCATION</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.MICROPHONE</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.RECORD_AUDIO</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.PHONE</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_PHONE_STATE</code>
-        </li>
-        <li>
-          <code>android.permission.CALL_PHONE</code>
-        </li>
-        <li>
-          <code>android.permission.READ_CALL_LOG</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_CALL_LOG</code>
-        </li>
-        <li>
-          <code>com.android.voicemail.permission.ADD_VOICEMAIL</code>
-        </li>
-        <li>
-          <code>android.permission.USE_SIP</code>
-        </li>
-        <li>
-          <code>android.permission.PROCESS_OUTGOING_CALLS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.SENSORS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.BODY_SENSORS</code>
-        </li>
-      </ul>
-      <ul>
-        <li>
-          <code>android.permission.USE_FINGERPRINT</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.SMS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.SEND_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_WAP_PUSH</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_MMS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_CELL_BROADCASTS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-</table>
-
-<h4 id="request-permissions">必要に応じてパーミッションを要求する</h4>
-
-<p>アプリに必要なパーミッションがない場合、アプリは <code>Activity.requestPermissions(String[], int)</code> メソッドを呼び出して適切なパーミッションを要求します。
-
-アプリは必要なパーミッションと整数の「要求コード」を渡します。
-
-  このメソッドは非同期に機能します。このメソッドはすぐに返され、ユーザーがダイアログ ボックスに応答した後、システムはその結果と一緒にアプリのコールバック メソッドを呼び出し、アプリが <code>requestPermissions()</code> に渡すのと同じ「要求コード」を渡します。
-
-
-</p>
-
-  <p>次のコードは、ユーザーの連絡先を読み込むパーミッションがアプリにあることを確認し、必要に応じてパーミッションを要求します。
-</p>
-
-<pre>
-if (checkSelfPermission(Manifest.permission.READ_CONTACTS)
-        != PackageManager.PERMISSION_GRANTED) {
-    requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
-            MY_PERMISSIONS_REQUEST_READ_CONTACTS);
-
-    // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
-    // app-defined int constant
-
-    return;
-}
-</pre>
-
-<h4 id="handle-response">パーミッションの要求への応答を処理する</h4>
-
-<p>
-  アプリがパーミッションを要求すると、システムによってダイアログ ボックスが表示されます。
-ユーザーが応答すると、システムはアプリの <code>Activity.onRequestPermissionsResult(int, String[], int[])</code> を呼び出し、ユーザーの応答を渡します。
-
-アプリはそのメソッドをオーバーライドする必要があります。コールバックには開発者が <code>requestPermissions()</code> に渡したのと同じ要求コードが渡されます。
-
-たとえばアプリが <code>READ_CONTACTS</code> アクセスを要求する場合、次のコールバック メソッドが含まれる可能性があります。
-
-
-</p>
-
-<pre>
-&#64;Override
-public void onRequestPermissionsResult(int requestCode,
-        String permissions[], int[] grantResults) {
-    switch (requestCode) {
-        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
-            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-
-                // permission was granted, yay! do the
-                // calendar task you need to do.
-
-            } else {
-
-                // permission denied, boo! Disable the
-                // functionality that depends on this permission.
-            }
-            return;
-        }
-
-        // other 'switch' lines to check for other
-        // permissions this app might request
-    }
-}
-</pre>
-
-  <p>ユーザーがパーミッションを付与すると、システムは、機能領域のアプリ マニフェストがリストするすべてのパーミッションを付与します。
-ユーザーが要求を拒否する場合は、適切なアクションを取ってください。
-たとえば、このパーミッションに応じて、すべてのメニュー アクションを無効にできます。
-
-  </li>
-</p>
-
-<p>
-  ユーザーにパーミッションの付与を確認するとき、ユーザーにそのパーミッションについて再度確認しないようにするオプションがあります。
-この場合、アプリが <code>requestPermissions()</code> を使ってパーミッションを確認すると、システムはその要求をすぐに拒否します。
-
-この場合、システムはユーザーが要求を再度明示的に拒否する場合と同様に <code>onRequestPermissionsResult()</code> を呼び出します。
-
-このため、アプリではユーザーとの直接的なやり取りが発生することが想定されません。
-
-</p>
-
-<h2 id="testing">実行時のパーミッションをテストする</h2>
-
-
-<p>
-  アプリのターゲットが M Developer Preview の場合、パーミッションが正しく処理されることをテストする必要があります。
-アプリ起動時に特定のパーミッションがアプリにあることは想定できません。
-アプリが初めて起動されるとき、パーミッションがない可能性が高く、ユーザーはいつでもパーミッションを取り消すまたは復元できます。
-
-
-</p>
-
-<p>
-  アプリがすべてのパーミッションの状況下で確実に正しく動作することをテストしてください。
-M Preview SDK とともに、新しい <a href="{@docRoot}tools/help/adb.html">Android デバッグ ブリッジ(adb)</a>コマンドが導入され、試す必要のあるあらゆるパーミッション設定でアプリをテストできます。
-
-
-
-</p>
-
-<h3>
-  新しい adb コマンドとオプション
-</h3>
-
-<p>
-  M Preview SDK Platform-tools では、アプリがパーミッションをどう処理するかをテストするための、いくつかの新しいコマンドが導入されました
-
-</p>
-
-<h4>
-  パーミッション付きでインストールする
-</h4>
-
-<p>
-  <a href="{@docRoot}tools/help/adb.html#move"><code>adb
-  install</code></a> コマンドの新しい <code>-g</code> オプションを使ってアプリをインストールし、そのマニフェストにリストされるすべてのパーミッションを付与できます。
-
-</p>
-
-<pre class="no-pretty-print">
-$ adb install -g &lt;path_to_apk&gt;
-</pre>
-
-<h4>
-  パーミッションの付与と取り消し
-</h4>
-
-<p>
-  新しい ADB <a href="{@docRoot}tools/help/adb.html#pm">Package Manager(pm)</a>コマンドを使って、インストールされているアプリにパーミッションを付与したり取り消したりできます。この機能は自動化されたテストに役立ちます。
-
-
-</p>
-
-<p>
-  パーミッションを付与するには、Package Manager の <code>grant</code> コマンドを使います。
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant &lt;package_name&gt; &lt;permission_name&gt;
-</pre>
-
-<p>
-  たとえば、com.example.myapp パッケージ パーミッションを付与してオーディオを録音するには、このコマンドを使います。
-
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant com.example.myapp android.permission.RECORD_AUDIO
-</pre>
-
-<p>
-  パーミッションを取り消すには、Package Manager の <code>revoke</code> コマンドを使います。
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm revoke &lt;package_name&gt; &lt;permission_name&gt;
-</pre>
-
-<h2 id="best-practices">ベスト プラクティス</h2>
-
-<p>
-  新しいパーミッション モデルにより、ユーザーはよりスムーズな操作感を得られ、アプリを簡単にインストールできるようになり、アプリが実行している内容に満足します。
-
-新しいモデルを最大限に活用するために、次のベスト プラクティスをお勧めします。
-
-</p>
-
-
-<h3 id="bp-what-you-need">必要なパーミッションのみを要求する</h3>
-
-<p>
-  パーミッションを要求するたびに、ユーザーに決定するよう強制します。
-  ユーザーが要求を却下すると、アプリの機能が低下します。
-  これらの要求回数は最小限にしてください。
-</p>
-
-<p>
-  たとえば、アプリがパーミッションを要求する代わりに、<a href="{@docRoot}guide/components/intents-filters.html">インテント</a>を使って必要な機能を取得できる場合がよくあります。
-
-アプリが携帯電話のカメラで写真を撮る必要がある場合、そのアプリでは {@link
-  android.provider.MediaStore#ACTION_IMAGE_CAPTURE
-  MediaStore.ACTION_IMAGE_CAPTURE} インテントを使用できます。
-アプリがインテントを実行すると、写真を撮るためのインストール済みのカメラアプリを選ぶようユーザーに促します。
-
-
-</p>
-
-<h3 id="bp-dont-overwhelm">
-  ユーザーを疲れさせない
-</h3>
-
-<p>
-  ユーザーにパーミッションをたくさん要求すると、ユーザーを疲れさせてしまい、アプリが終了される原因になります。代わりに、ユーザーには必要なパーミッションのみを要求してください。
-
-
-</p>
-
-<p>
-  アプリ対して 1 つ以上のパーミッションが必須である場合もあります。その場合は、アプリの起動後すぐに、すべてのパーミッションを要求することが合理的である場合があります。
-
-たとえば、カメラアプリを作成する場合、アプリは端末のカメラにアクセスする必要があります。
-アプリを初めて起動するときにカメラの使用についてのパーミッションを求められても驚かないはずです。
-
-ただし、同じアプリにユーザーの連絡先と写真を共有する機能もある場合は、最初の起動時にパーミッションを要求<em>しない</em>方が無難です。
-
-その代わりに、ユーザーが「共有」機能を使うまで待ち、そのときにパーミッションを要求します。
-
-</p>
-
-<p>
-  アプリにチュートリアルが含まれる場合は、チュートリアルのシーケンスの最後で、アプリに必須のパーミッションを要求する方が合理的です。
-
-</p>
-
-<h3 id="bp-explain">
-  パーミッションが必要な理由を説明する
-</h3>
-
-<p>
-  <code>requestPermissions()</code> を呼び出すとき、システムによって表示されるパーミッション ダイアログにはアプリが必要としているパーミッションは表示されますが、理由は表示されません。
-
-これによりユーザーが困惑する場合もあります。
-  <code>requestPermissions()</code> を呼び出す前に、アプリがパーミッションを必要としている理由をユーザーに説明するのはよい方法です。
-
-</p>
-
-<p>
-  たとえば、カメラアプリでは、位置情報サービスを使って写真に位置情報タグを付けられるようにする場合があります。
-通常のユーザーは、写真に位置情報が含まれる場合があることを認識していない可能性があり、なぜカメラアプリで位置情報が必要なのか困惑する可能性があります。
-
-この場合、アプリが <code>requestPermissions()</code> を呼び出す<em>前</em>に、この機能についてユーザーに知らせることをお勧めします。
-
-
-</p>
-
-<p>
-  その方法として、これらの要求をアプリのチュートリアルに組み込むこともできます。チュートリアルでは、アプリの各機能を順番に表示できるので、必要なパーミッションを説明できます。
-
-たとえば、カメラアプリのチュートリアルでは、「連絡先と写真を共有する」機能について説明し、ユーザーの連絡先を参照するためにアプリにパーミッションが必要であることをユーザーに知らせることができます。
-
-
-その後、アプリは <code>requestPermissions()</code> を呼び出して、ユーザーにそのアクセスを求めることができます。
-もちろん、すべてのユーザーがチュートリアルに従うわけではないため、アプリの通常操作中にパーミッションを確認して要求することも必要です。
-
-
-</p>
diff --git a/docs/html-intl/intl/ja/preview/index.jd b/docs/html-intl/intl/ja/preview/index.jd
deleted file mode 100644
index 2e84aa3..0000000
--- a/docs/html-intl/intl/ja/preview/index.jd
+++ /dev/null
@@ -1,71 +0,0 @@
-page.title=Android M Developer Preview
-page.tags="preview",
-meta.tags="preview, M preview", androidm
-fullpage=true
-section.landing=true
-header.hide=1
-footer.hide=1
-@jd:body
-
-<section class="dac-expand dac-hero dac-light" >
-  <div class="wrap">
-    <div class="cols dac-hero-content">
-      <div class="col-9of16 col-push-7of16 dac-hero-figure">
-        <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png" srcset="{@docRoot}images/home/devices-hero_620px.png 1x,
-             {@docRoot}images/home/devices-hero_620px_2x.png 2x">
-      </div>
-      <div class="col-7of16 col-pull-9of16">
-        <h1 class="dac-hero-title">Android M Developer Preview</h1>
-        <p class="dac-hero-description">
-          次期バージョンの Android に向けて準備しましょう。Nexus 5、6、9、Nexus Player でアプリをテストします。
-<strong>実行時パーミッション</strong>、          <strong>Doze</strong>、<strong>App Standby</strong> 省電力機能、新しい          <strong>サポート テクノロジー</strong>などの新機能をご覧ください。
-
-
-        </p>
-
-        <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          スタートガイド
-        </a><br>
-
-         <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          Developer Preview 3 (final SDK)</a>
-      </div>
-    </div>
-    <div class="dac-section dac-small">
-      <div class="resource-widget resource-flow-layout col-16"
-           data-query="collection:preview/landing/resources"
-           data-cardSizes="6x2"
-           data-maxResults="6"></div>
-    </div>
-  </div>
-</section>
-
-<section class="dac-section dac-gray"><div class="wrap">
-  <h1 class="dac-section-title">リソース</h1>
-  <div class="dac-section-subtitle">
-    Android M 向けにアプリを用意する際に役立つ必須情報をご提供します。
-  </div>
-
-  <div class="resource-widget resource-flow-layout col-16"
-       data-query="collection:preview/landing/more"
-       data-cardSizes="6x6"
-       data-maxResults="16"></div>
-
-    <ul class="dac-section-links">
-      <li class="dac-section-link">
-        <a href="https://code.google.com/p/android-developer-preview/">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          問題の報告
-        </a>
-      </li>
-      <li class="dac-section-link"><a href="http://g.co/dev/AndroidMDevPreview">
-        <span class="dac-sprite dac-auto-chevron"></span>
-        Join G+ コミュニティ
-        </a>
-      </li>
-    </ul>
-  </div>
-</section>
-
diff --git a/docs/html-intl/intl/ja/preview/license.jd b/docs/html-intl/intl/ja/preview/license.jd
deleted file mode 100644
index 1e29b52..0000000
--- a/docs/html-intl/intl/ja/preview/license.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=使用許諾契約
-
-@jd:body
-
-<p>
-Android SDK Preview をインストールする前に、次の利用規約に同意する必要があります。
-以下に記載するとおり、これは、Android SDK のプレビュー バージョンであり、変更される可能性があります。デベロッパーご自身の責任においてご使用ください。Android SDK Preview は安定したリリースではなく、お使いのコンピュータ システム、端末、データに深刻な影響を与える可能性のあるエラーまたは欠陥が含まれている場合があります。
-</p>
-
-<p>
-以下は、Android SDK Preview の使用許諾契約です(以下「本契約」)。
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1.はじめに
-
-1.1 Android SDK Preview(以下、本契約で「Preview」という。具体的には利用可能な場合には Android システム ファイル、パッケージ型 API、Preview ライブラリ ファイルを含む)は、本契約の規定に従ってライセンス許可されます。本契約では、デベロッパーの Preview の使用に関して、デベロッパーと Google の間で法的拘束力のある契約を結びます。
-
-1.2 「Android」とは、Android オープン ソース プロジェクト(http://source.android.com/ にて随時更新)にて利用可能な、端末向けの Android ソフトウェア スタックを意味します。
-
-1.3 「Google」とは、1600 Amphitheatre Parkway, Mountain View, CA 94043, United States に主たる事業所を有するデラウェア州法人である Google Inc. を意味します。
-
-2.本契約の同意
-
-2.1 Preview を使用するには、まず本契約に同意する必要があります。本契約に同意しない場合は Preview を使用できません。
-
-2.2 同意するかまたは Preview を使用するためにクリックすると、本契約に同意したことになります。
-
-2.3 米国またはその他の国(デベロッパーが居住している国かまたはデベロッパーが Preview を使用する国を含む)の法律により Preview の使用を禁止されている人である場合、Preview を使用することも、使用許諾契約に同意することもできません。
-
-2.4 雇用主またはその他の事業体を代表または代理して本契約に拘束されることに同意し Preview を企業または組織の内部で使用する場合、担当者の雇用主またはその他の事業体を本契約に法的に拘束する完全な法的権限を有していることを表明および保証するものとします。担当者が必要な権限を有していない場合は、担当者の雇用主またはその他の事業体を代表または代理して、本契約に同意することも、Preview を使用することもできません。
-
-3.Google Preview ライセンス
-
-3.1 本契約の規定に従い、Google は Android プラットフォーム上で実行するアプリケーションの開発に Preview を個人的にもしくは企業または組織の内部で使用するための、ロイヤリティ フリーな、譲渡不可で、非排他的な、サブライセンス不可の、限定された、取り消し可能なライセンスを付与するものとします。
-
-3.2 Preview に関するすべての法的権利、所有権、利益(Preview に含まれる知的財産権を含む)は Google またはサードパーティが所有するものとします。「知的財産権」とは、特許法、著作権法、営業秘密法、商標法、不当競争防止法に基づいて発生するすべての権利、およびその他のすべての所有権を意味します。デベロッパーに明示的に付与されていない権利は、すべて Google が所有します。
-
-3.3 本契約で明示的に許可されている目的以外においては、Preview を使用できません。当該のサードパーティのライセンスで必要とされる場合を除き、デベロッパーは、(a) Preview または Preview の一部をコピー(バックアップ目的を除く)、修正、改造、再配布、逆コンパイル、リバース エンジニアリング、逆アセンブルまたは派生物の作成、または(b)モバイル ハンドセットまたは個人用 PC 以外のハードウェア端末への Preview の読み込み、Preview と他のソフトウェアとの結合、または Preview の一部を組み込んだソフトウェアや端末の配布はできません。
-
-3.4 デベロッパーは、Android の断片化につながるような行為をしないことに同意します。これには、Preview から派生したソフトウェア開発キットの配布、作成への参加、宣伝を含みます(ただし必ずしもこれらには限定されません)。
-
-3.5 オープンソース ソフトウェア ライセンス下でライセンス付与された Preview のコンポーネントの使用、複製、配布は、本契約ではなく、そのオープンソース ソフトウェアのライセンスに準拠するものとします。デベロッパーは、許諾されるすべての権利下で、そのようなオープンソース ソフトウェア ライセンスに対して、優良ライセンシーのままでいることに同意し、そのような権利を終了、停止、または違反する可能性のあるいかなる行為も差し控えることに同意するものとします。
-
-3.6 デベロッパーは、Google が提供する Preview の形式および性質は事前の通知なしに変更される場合があり、今後リリースされる Preview のバージョンでは、以前のバージョンの Preview で開発されたアプリケーションとの互換性がない可能性があることに同意します。デベロッパーは、Google が事前の通知なく、Google の単独の裁量でデベロッパーまたはユーザーへの Preview(または Preview 内の一部の機能)の提供を(恒久的または一時的に)停止する場合があることに同意します。
-
-3.7 本契約のいかなる部分も、Google のいかなる商標名、商標、サービスマーク、ロゴ、ドメイン名、またはその他のブランド識別表示を使用する権利もデベロッパーに付与するものではありません。
-
-3.8 デベロッパーは、Preview に添付または収録されているすべての知的財産権に関する通知(著作権および商標の通知を含む)の削除、隠ぺい、改ざんを行わないことに同意します。
-
-4.デベロッパーによる Preview の使用
-
-4.1 Google は、本契約に基づき Preview を使用してデベロッパーが開発したソフトウェア アプリケーションに関して、デベロッパー(またはデベロッパーのライセンサー)からいかなる権利、所有権、または利益(当該アプリケーションに含まれる知的財産権を含む)も取得するものではないことに同意します。
-
-4.2 デベロッパーは、Preview を(a)本契約、および(b)該当する司法管轄区における適用される法律、規則、または一般に認められた慣行またはガイドライン(米国またはその他の該当国におけるデータまたはソフトウェアの輸出入に関する法律を含む)で認められている目的にのみ使用することに同意します。
-
-4.3 Preview を使用してアプリケーションを開発する場合、デベロッパーはユーザーのプライバシーおよび法的権利を保護することに同意します。ユーザーからデベロッパーにユーザー名、パスワード、またはその他のログイン情報または個人情報が提供される場合、デベロッパーは、情報がデベロッパーのアプリケーションに提供されることをユーザーに認識させ、当該ユーザーについてプライバシーに関する法的に十分な通知および保護を行わなければなりません。デベロッパーのアプリケーションに個人情報または秘密情報が保存される場合、この保存は保護された方法で行われなければなりません。ユーザーからデベロッパーのアプリケーションに Google アカウントの情報が提供された場合、デベロッパーのアプリケーションでは、ユーザーが許可したタイミングで、かつユーザーが許可した限定された目的にのみ、当該情報を使用してユーザーの Google アカウントにアクセスすることが認められるものとします。
-
-4.4 デベロッパーは、Preview に関して、第三者(Google、およびあらゆる携帯電話会社を含むが、これらに限定されない)のサーバー、ネットワーク、またはその他の財産またはサービスへの妨害、中断、損害、または許可されていない態様でのアクセスとなる行為(そのような行為に該当する対象製品の開発または販売 / 配布を含む)に関与しないことに同意します。
-
-4.5 デベロッパーは、デベロッパーが Android および Android のアプリケーションを介して作成、送信、表示するデータ、コンテンツ、リソース、および自身の行為の結果(Google に発生する可能性のあるあらゆる損失および損害を含む)について、自身が単独で責任を負うこと(および Google がこれについてデベロッパーまたはいかなる第三者に対しても一切責任を負わないこと)に同意します。
-
-4.6 デベロッパーは、本契約、適用される第三者の契約もしくは利用規約、または適用される法律もしくは規則に基づく自身の義務に違反したこと、および当該違反の結果(Google または第三者に発生したあらゆる損失および損害を含む)について、自身が単独で責任を負うこと(および Google がこれについてデベロッパーまたはいかなる第三者に対しても一切責任を負わないこと)に同意します。
-
-4.7 Preview は開発中であり、デベロッパーによるテスティングやフィードバックは開発プロセスの重要な一部となります。デベロッパーは、Preview の使用により、一部の機能の実装が開発中であると認識し、Preview が安定したリリースの完全な機能性を持つことに依存すべきでないことを認識するものとします。本 Preview は、公式の Android SDK のリリース後はサポート対象でなくなるため、デベロッパーは、Preview を使用するいかなるアプリケーションも公然と配布または引き渡さないことに同意するものとします。
-
-5.デベロッパーの資格情報
-
-5.1 デベロッパーは、Google が発行した、またはデベロッパー自身で選択した、自身のデベロッパー用資格情報の秘密を保持する責任を負うこと、および自身のデベロッパー用資格情報のもとで開発されたすべてのアプリケーションについて単独で責任を負うことに同意します。
-
-6.プライバシーおよび情報
-
-6.1 Google は、Preview の継続的な技術革新と改良のために、ソフトウェアから特定の使用状況統計情報(一意識別子、関連する IP アドレス、ソフトウェアのバージョン番号、Preview のどのツール/サービスがどのように使用されているかに関する情報を含むが、これらに限定されない)を収集できます。この情報が収集される前に、Preview に通知が表示され、デベロッパーの同意が求められます。デベロッパーが同意しない場合は、情報は収集されません。
-
-6.2 収集されるデータは、Preview の改良のために集約された形で精査され、Google のプライバシー ポリシー(http://www.google.com/policies/privacy/)に従って管理されます。
-
-7.第三者のアプリケーション
-
-7.1 デベロッパーが、Preview を使用して第三者が開発したアプリケーションを実行する、あるいは第三者から提供されたデータ、コンテンツ、リソースにアクセスする場合、デベロッパーは、Google がそれらのアプリケーション、データ、コンテンツ、リソースについて責任を負わないことに同意します。デベロッパーは、そのような第三者のアプリケーションを介してアクセスするすべてのデータ、コンテンツ、リソースについては、それらを生成した者が単独で責任を負うものであり、Google はそれらの第三者のアプリケーション、データ、コンテンツ、またはリソースの使用もしくはアクセスによって生じたあらゆる損失および損害について一切責任を負わないことを理解します。
-
-7.2 デベロッパーは、そのような第三者のアプリケーションを介して表示されるデータ、コンテンツ、リソースは、提供者(あるいは代理の第三者または事業体)が所有する知的財産権で保護されている場合があることを認識するものとします。デベロッパーは、当該所有者からの明確な許可がない限り、それらのデータ、コンテンツ、リソース(全体または一部)の変更、貸与、賃貸、担保、配布または派生物の作成を行うことはできません。
-
-7.3 デベロッパーは、そのような第三者のアプリケーション、データ、コンテンツまたはリソースの使用が、デベロッパーと当該第三者間の別の規約に従うものであることを認識するものとします。
-
-8.Google API の使用
-
-8.1 Google API
-
-8.1.1 API を使用して Google からデータを取得する場合、デベロッパーは、そのデータは、Google またはデータを提供する事業体(あるいは代理の第三者または事業体)が所有する知的財産権で保護されている場合があることを認識するものとします。そのような API の使用は追加の利用規約に従うものとします。デベロッパーは、当該の利用規約による許可がない限り、そのデータ(全体または一部)の変更、貸与、賃貸、担保、配布または派生物の作成を行うことはできません。
-
-8.1.2 デベロッパーは、API を使用して Google からユーザーのデータを取得する場合、ユーザーが明示的に同意した場合のみ、およびユーザーが許可したタイミングとその目的にのみ、データを取得できることを理解し、同意します。
-
-9.本契約の終了
-
-9.1 本契約は、下記の規定に従ってデベロッパーまたは Google のいずれかによって解約されるまで、継続して適用されるものとします。
-
-9.2 デベロッパーが本契約の解約を希望する場合は、Preview および関連するデベロッパー資格情報の使用を停止することで、契約を終了するものとします。
-
-9.3 Google は、理由の有無にかかわらず、書面で通知することでいつでもデベロッパーとの本契約を解約することができます。
-
-9.4 本契約は事前の通知またはその他の措置なく、次のうち早い方に自動的に終了します。
-(A)Google が、デベロッパーが居住している国またはデベロッパーがサービスを使用する国での Preview または Preview の一部の配布を停止したとき。
-(B)Google が Android SDK の最終バージョンをリリースしたとき。
-
-9.5 本契約が終了すると、本契約で付与されていたライセンスは終了し、デベロッパーは速やかに Preview のすべての使用を停止するものとし、第 10 条、第 11 条、第 12 条、第 14 条の規定は無期限に効力を有するものとします。
-
-10.免責事項
-
-10.1 デベロッパーは、デベロッパーによる Preview の使用はデベロッパー自身の責任において行うものであること、および Preview は「現状有姿」かつ「提供可能な限りにおいて」、Google からのいかなる種類の保証もなく提供されるものであることを明示的に理解し、これに同意します。
-
-10.2 デベロッパーによる Preview および Preview の使用を通じてダウンロードまたはその他の方法で取得されたマテリアルの使用は、デベロッパー自身の裁量および責任において行うものであり、当該使用の結果として生じるデベロッパーのコンピュータ システムもしくはその他の端末への損害またはデータの喪失についての責任はデベロッパーが単独で負います。前述を制限することなく、Preview は安定したリリースではなく、コンピュータやその他の端末の利用の完全な回復不可能な損失を含む、重大な損害を引き起こす可能性のあるエラー、欠陥、およびセキュリティ上の脆弱性が含まれている可能性があることを理解します。
-
-10.3 Google はまた、商品性、特定目的への適合性、および権利侵害がないことの黙示的な保証および条件を含む(ただしこれらに限定されない)、明示的か黙示的かを問わずあらゆる種類のすべての保証および条件を明示的に否定します。
-
-11.責任の制限
-
-11.1 デベロッパーは、Google、その子会社および関連会社、ならびにそのライセンサーが、デベロッパーに発生した直接損害、間接損害、偶発的損害、特別損害、結果的損害、または懲罰的損害(データの喪失を含む)について、Google またはその代表者が当該損失が発生する可能性について告知されていたかどうか、または知っていたはずであるかどうかにかかわらず、いかなる責任法理のもとでもデベロッパーに対して責任を負わないことを明示的に理解し、これに同意します。
-
-12.補償
-
-12.1 法律で認められる最大限の範囲内において、デベロッパーは、(a)デベロッパーが Preview を使用したこと、および(b)デベロッパーが Preview で開発したアプリケーションが他者のいかなる知的財産権を侵害していること、または他者の名誉を毀損している、もしくは他者のパブリシティ権もしくはプライバシー権を侵害していること、および(c)デベロッパーが本契約に違反したことから発生したあらゆる申し立て、普通法上の訴訟、衡平法上の訴訟、または法的手続き、ならびにあらゆる損失、責任、損害、費用、および経費(合理的な弁護士報酬を含む)について、Google、その関連会社、ならびに当該各社の取締役、役員、従業員、代理人を防御し、補償し、免責することに同意します。
-
-13.契約の変更
-
-13.1 Google は、Preview の新しいバージョンを配布することにより、いつでも本契約を変更することができます。変更が生じた場合、Google は、Preview の提供ウェブサイト上に使用許諾契約の改訂版を公開します。
-
-14.法的一般条項
-
-14.1 本契約は、デベロッパーと Google の間の法的な合意のすべてを表し、デベロッパーによる Preview の使用(別の契約下で Google が提供するサービスを除く)に適用され、Preview に関するデベロッパーと Google の間のあらゆる事前の合意に完全に取って代わるものです。
-
-14.2 デベロッパーは、Google が本契約に定める(または適用される法律のもとで Google が享受できる)法的な権利または救済措置を行使または執行しなかった場合でも、Google の権利が正式に放棄されたとはみなされないこと、および Google が以後も引き続き当該権利および救済措置を行使または執行できることに同意します。
-
-14.3 本件について判断を下す管轄権を有する司法裁判所によって、本契約のいずれかの条項が無効と判断された場合、当該条項は、本契約の残りの部分に影響を与えることなく本契約から削除されるものとします。本契約の残りの条項は、以後も引き続き有効かつ執行可能であるものとします。
-
-14.4 デベロッパーは、Google が親会社となっている各グループ企業が、本契約の第三受益者となること、および当該企業が、当該企業に利益(または受益権)を付与する本契約の条項を直接執行する、また当該条項に依拠する権利を有することを了承し、これに同意します。上記以外のいかなる人または法人も、本契約の第三受益者とはならないものとします。
-
-14.5 輸出規制。Preview は、米国輸出管理法令の対象です。デベロッパーは、Preview に適用されるすべての国内および国際の輸出管理法令に従わなければなりません。これらの法律には、仕向け地、ユーザー、および最終用途に関する制限が含まれます。
-
-14.6 デベロッパーは、Google から事前に書面で承認を得ずに、本契約を譲渡または移転することはできません。また、そのような承認を得ずに計画された譲渡はすべて無効になります。デベロッパーは、Google から事前に書面で承認を得ずに、本契約に基づく自身の責任または義務を他者に委任してはなりません。
-
-14.7 本契約あるいは本契約に基づくデベロッパーと Google の関係から発生または関連するすべての申し立ては、米国カリフォルニア州の抵触法を除いて、カリフォルニア州法に準拠するものとします。デベロッパーおよび Google は、本契約あるいは本契約に基づくデベロッパーと Google の関係から発生または関連する法的事項の解決について、米国カリフォルニア州サンタクララ郡に所在の連邦裁判所または州立裁判所が専属管轄権を有することに合意します。上記にかかわらず、デベロッパーは、Google が任意の司法管轄区において差し止め命令による救済(または同等の緊急法的救済)を求める申し立てを行うことが認められることに同意します。
-
-
-</div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/preview/overview.jd b/docs/html-intl/intl/ja/preview/overview.jd
deleted file mode 100644
index c5390ef..0000000
--- a/docs/html-intl/intl/ja/preview/overview.jd
+++ /dev/null
@@ -1,389 +0,0 @@
-page.title=プログラム概要
-page.metaDescription=Android M Developer Preview では、Android の次のバージョンでアプリをテストして最適化するためのすべてを備えています。
-page.image=images/cards/card-preview_16-9_2x.png
-page.tags="preview", "developer", "android"
-
-@jd:body
-
-<div class="cols" style=
-"background-color:#ffebc3; padding: 5px 0;margin-bottom:1em; text-align:center;">
-<h3>
-    Developer Preview 2 is now available
-  </h3>
-
- <ul class="dac-section-links">
-    <li class="dac-section-link">
-      <a href="{@docRoot}preview/support.html#preview2-notes">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Read the Notes</a>
-    </li>
-
-    <li class="dac-section-link">
-      <a href="{@docRoot}preview/support.html#preview2-get">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Get the Update</a>
-    </li>
-
-    <li class="dac-section-link">
-      <a href="https://code.google.com/p/android-developer-preview/">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Report Issues</a>
-    </li>
-  </ul>
-</div>
-
-<p>
-  <strong>Android M Developer Preview</strong> では、Android の次のバージョンでアプリをテストして最適化するためのすべてを備えています。
-
-M Developer Preview ツールをダウンロードするだけで、無料ですぐにご利用いただけます。
-
-</p>
-
-<div style="background-color:#eceff1;padding:1em;">
-<div class="wrap">
-  <div class="cols">
-    <div class="col-4of12">
-      <h5>
-        ハードウェアとエミュレータのシステム イメージ
-      </h5>
-
-      <p>
-        Nexus 5、6、9、Nexus Player(TV 向け)やエミュレータでアプリをテストしましょう。
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        最新プラットフォーム コード
-      </h5>
-
-      <p>
-        プレビューで複数のアップデートが提供されますので、最新プラットフォームの変更に応じてテストできます。
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        OTA でのアップデート
-      </h5>
-
-      <p>
-        デバイスに初期プレビューをコピーしたら、無線経由でアップデートを入手できます。
-
-      </p>
-    </div>
-  </div>
-
-  <div class="cols">
-
-
-    <div class="col-4of12">
-      <h5>
-        新しい動作と機能
-      </h5>
-
-      <p>
-        新しい実行時パーミッション モデルや省電力機能など、新しいプラットフォームの動作をあらかじめサポートする
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        開発者が報告した問題に対する優先度ウィンドウ
-      </h5>
-
-      <p>
-        最初の数週間で開発者から報告のあった問題について優先度を設定し、可能な限り早くテストを行いフィードバックを提供できるようにします。
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        フィードバックとサポート
-      </h5>
-
-      <p>
-        <a href="https://code.google.com/p/android-developer-preview/">Issue Tracker</a> で問題を報告し、フィードバックをお送りください。
-        <a href="http://g.co/dev/AndroidMDevPreview">M&nbsp;Developer コミュニティ</a> で他の開発者とつながりましょう。
-
-      </p>
-    </div>
-  </div>
-</div>
-</div>
-
-<!--
-<p>
-  With the M Developer Preview, you'll get an early start on testing your apps,
-  with enough time to make adjustments before the public platform release later
-  in the year. We'll provide several updates to the Preview tools in the weeks
-  ahead, so you can keep in sync with the latest changes as the platform moves
-  toward launch.
-</p>
-<img src="{@docRoot}preview/images/m-preview-timeline.png" alt=
-"Preview program timeline" id="timeline">
-<p>
-  You can help us improve the platform by <a href=
-  "https://code.google.com/p/android-developer-preview/">reporting issues</a>
-  through our feedback channels. This is especially
-  critical in the first month of the preview, when we’ll be giving priority to
-  developer-reported issues and feedback.
-</p> -->
-
-
-<h2 id="timeline">
-  タイムラインとアップデート
-</h2>
-<img src="{@docRoot}preview/images/m-preview-timeline-crop.png" alt="Preview program timeline" id="timeline">
-<p>
-  M Developer Preview は 5 月 28 日から最終の Android M SDK まで実行されます。Android M SDK はまもなく、2015 年第三四半期に予定されている正式公開の前にリリースされます。
-
-
-</p>
-
-<p>
-  開発の主なマイルストーンごとにテスト端末へアップデートを配信する予定としています。
-  暫定マイルストーンは以下のとおりです。
-</p>
-
-<ul>
-  <li>
-    <strong>Preview&nbsp;1</strong>(初期プレビュー リリース、5 月下旬)
-  </li>
-
-  <li>
-    <strong>Preview&nbsp;2</strong>(6 月下旬/7 月上旬)
-  </li>
-
-  <li>
-    <strong>Preview&nbsp;3</strong>(最終近く、7 月下旬)
-  </li>
-</ul>
-
-<p>
-  アップデートは第三四半期後半に予定されている<strong>最終 SDK</strong> で終了します。最終版では新しい Android に対する正式な API や最終的なシステム動作や機能が提供されます。
-
-
-</p>
-
-<p>
-  Android M でのテストや開発に際しては、Preview アップデートがリリースされるたびに<strong>開発環境を最新に保つ</strong>ことを強くお勧めします。
-
-  プロセスをより容易にするため、既に Preview ビルドがインストールされた端末に<strong>無線経由でアップデート(OTA)</strong>を配信します。また手動でダウンロードして展開できるシステム イメージもご提供します。
-
-
-</p>
-<p class="note">
-  <strong>注:</strong> 最終 SDK とシステム イメージは OTA では配信できません。代わりにテスト端末に<strong>手動でコピー</strong>する必要があります。</strong>
-
-
-</p>
-
-<p>
-  Preview アップデートをご利用いただけるようになった際は <a href="http://android-developers.blogspot.com/">Android デベロッパー ブログ</a>、このサイト、<a href="http://g.co/dev/AndroidMDevPreview">Android M デベロッパー コミュニティ</a>でお知らせします。
-
-
-</p>
-
-<h2 id="preview_tools">
-  Preview の内容
-</h2>
-
-<p>
-  M Developer Preview では、ご利用のアプリをさまざまな画面サイズ、ネットワーク、テクノロジー、CPU や GPU チップセット、ハードウェア設計でテストするために必要なあらゆるものを備えています。
-
-
-</p>
-
-<h4>
-  SDK ツール
-</h4>
-
-<p>
-  各コンポーネントは <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a> の SDK Manager でダウンロードできます。
-</p>
-
-<ul>
-  <li>M Developer Preview <strong>SDK ツール</strong>
-  </li>
-
-  <li>M Developer Preview <strong>エミュレータ システム イメージ</strong>(32 ビット版と 64 ビット版)
-
-  </li>
-
-  <li>M Developer Preview <strong>Android TV 版エミュレータ システム イメージ</strong>(32 ビット版)
-
-  </li>
-</ul>
-
-<h4>
-  ハードウェアのシステム イメージ
-</h4>
-
-<p>
-  Nexus 端末向けハードウェア システム イメージは、<a href="download.html">ダウンロード ページ</a>からダウンロードできます。
-
-</p>
-
-<ul>
-  <li>
-    <strong>Nexus 5</strong>(GSM と LTE)“hammerhead” 端末システム イメージ
-  </li>
-
-  <li>
-    <strong>Nexus 6</strong> “shamu” 端末システム イメージ
-  </li>
-
-  <li>
-    <strong>Nexus 9</strong>(Wi-Fi)“volantis” 端末システム イメージ
-  </li>
-
-  <li>
-    <strong>Nexus Player</strong>(AndroidTV)“fugu” 端末システム イメージ
-  </li>
-</ul>
-
-<h4>
-  ドキュメントとサンプル コード
-</h4>
-
-<p>
-  次のドキュメント リソースで Preview についての詳細をご確認いただけます。
-</p>
-
-<ul>
-  <li>
-    <a href="setup-sdk.html">SDK のセットアップ</a>では、はじめの手順をステップ バイ ステップでご説明しています。
-
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/testing/guide.html">Testing Guide</a> と <a href="behavior-changes.html">Behavior Changes</a> では、テストでカバーされる主な分野について示しています。
-  </li>
-
-  <li>新しい API のドキュメントである <a href="api-overview.html">API 概要</a>、ダウンロード可能な <a href="{@docRoot}preview/download.html#docs">API リファレンス</a>や、主な機能のデベロッパー ガイドである<a href="{@docRoot}preview/features/runtime-permissions.html">パーミッション</a>、<a href="{@docRoot}preview/backup/index.html">アプリのバックアップ</a>などをご提供しています。
-
-
-
-
-  </li>
-
-  <li>
-    パーミッションや他の新しい機能をサポートする方法について、<a href="{@docRoot}preview/samples.html">サンプル コード</a>でお試しいただけます。
-
-  </li>
-
-  <li>
-    現行バージョンの<a href="{@docRoot}preview/support.html#release-notes">リリース ノート</a>で M Developer Preview の変更メモや差分レポートなどをご覧いただけます。
-
-  </li>
-</ul>
-
-<h4>
-  サポート リソース
-</h4>
-
-<p>
-  M Developer Preview でのテストや開発について、次のサポート リソースをご確認いただけます。
-
-</p>
-
-<ul>
-  <li><a href="https://code.google.com/p/android-developer-preview/">M Developer Preview Issue Tracker</a> は、<strong>主なフィードバック チャンネル</strong>としてご利用になれます。
-
-バグやパフォーマンスの問題、一般的なフィードバックなど Issue Tracker からご連絡いただけます。
-また、<a href="https://code.google.com/p/android-developer-preview/wiki/KnownIssues">既知の問題</a>
-やその回避策をご確認いただけます。
-  </li>
-
-  <li><a href="http://g.co/dev/AndroidMDevPreview">Android M Developer コミュニティ</a>は Google+ のコミュニティで、Android M を使っている<strong>他のデベロッパーとつながる</strong>ことができます。Android M に関する現象や考えを共有したり、疑問点を解消したりできます。
-
-
-
-  </li>
-</ul>
-
-
-<h2 id="preview_apis_and_publishing">
-  対象、プレビュー API、公開
-</h2>
-
-<p>
-  Android M Developer Preview は開発リリースのみであり、<strong>標準 API レベルはありません</strong>。
-アプリのテストで互換性の問題は除外する場合(強く推奨します)、アプリの<code><a href=
-  "/guide/topics/manifest/uses-sdk-element.html">targetSdkVersion</a></code> を <code>“MNC”</code> に設定することで M Developer Preview を対象にできます。
-
-
-
-</p>
-
-<p>
-  Android M Developer Preview では<strong>プレビュー API</strong> を配信しています。現在 2015 年度第三四半期に予定されている最終 SDK がリリースされるまで、API は正式版ではありません。
-
-つまり、時間がたつにつれて <strong>API の細かな変更</strong>が見込まれます(特にプログラムの最初の数週間)。
-
-Android M Developer Preview でアップデートがあればその都度変更の概要をご提供します。
-
-</p>
-
-<p class="note">
-  プレビュー API は変更される可能性がありますが、実行時パーミッションや省電力機能などのシステムの基幹にかかわる機能には変更はありませんので、すぐにテストしていただけます。
-
-
-</p>
-
-<p>
-  公開に関して、Google Play では <strong>M Developer Preview 対象アプリは公開できません</strong>。
-Android M 最終 SDK が利用可能になれば正式な Android M API レベルを対象にして、Google Play でアプリを公開できるようになります。
-
-それまでは、Android M 対象のアプリをテスターに配布する場合は電子メールで送付したりご自分のサイトから直接ダウンロードしてもらったりしてください。
-
-
-</p>
-
-<h2 id="get_started">
-  開始するには
-</h2>
-
-<p>
-  アプリのテストをはじめるには:
-</p>
-
-<ol>
-  <li><a href="{@docRoot}preview/api-overview.html">API 概要</a>や <a href="{@docRoot}preview/behavior-changes.html">Behavior Changes</a> で新しい機能やご自分のアプリへの影響についてご確認ください。
-
-特に、<a href="{@docRoot}preview/features/runtime-permissions.html">実行時パーミッション</a> モデルや省電力機能、自動バックアップ機能についてお確かめください。
-
-
-  </li>
-
-  <li><a href="{@docRoot}preview/setup-sdk.html">Setting up the Preview SDK</a> の手順に従い、ご利用の環境をセットアップしてテスト端末を構成してください。
-
-
-  </li>
-
-  <li><a href="https://developers.google.com/android/nexus/images">コピー手順</a>に従い、最新の M Developer Preview システム イメージを Nexus 5、6、9、Nexus Player にコピーします。
-
-1 度開発端末に Preview 環境をコピーすると、アップデートが無線経由(OTA)で配信されます。</a>
-
-  </li>
-
-  <li><a href="{@docRoot}preview/download.html#docs">M Preview API リファレンス</a>や<a href="{@docRoot}preview/samples.html">M Preview サンプル</a>をダウンロードして、新しい API の機能についてさらに学び、ご自分のアプリで活用する方法についてご確認ください。
-
-
-
-  </li>
-
-  <li><a href="http://g.co/dev/AndroidMDevPreview">Android M Developer コミュニティ</a>に参加して最新のニュースを入手し、Preview に取り組んでいる他のデベロッパーとつながってください。
-
-
-  </li>
-</ol>
-
-<p>
-  Android M Developer Preview プログラムへのご参加ありがとうございます。
-</p>
diff --git a/docs/html-intl/intl/ja/preview/samples.jd b/docs/html-intl/intl/ja/preview/samples.jd
deleted file mode 100644
index 6c44f4d..0000000
--- a/docs/html-intl/intl/ja/preview/samples.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=サンプル
-page.image=images/cards/samples-new_2x.png
-@jd:body
-
-<p>
-  以下のコードサンプルは、M Developer Preview 用に提供しています。サンプルを Android Studio でダウンロードするには、<b>[File] &gt; [Import Samples]</b> メニュー オプションを選択します。
-
-</p>
-
-<p class="note">
-  <strong>注:</strong> 以下のダウンロード可能なプロジェクトは、Gradle と Android Studio でご利用いただくために提供しています。
-
-</p>
-
-
-<h3 id="RuntimePermissions">実行時パーミッション</h3>
-
-<p>
- Android M では、システムのパーミッションの仕組みが変わります。ユーザーは、パーミッション要求の承認をインストール時ではなく、実行時に求められるようになります。
-このサンプルでは、このパーミッションの要求方法を紹介しています。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-RuntimePermissions">GitHub でサンプルを入手</a></p>
-
-<h3 id="ConfirmCredentials">資格情報の確認</h3>
-
-<p>
- このサンプルでは、アプリで端末の資格情報を認証手段として使用する方法を紹介しています。
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ConfirmCredential">GitHub でサンプルを入手</a>
-</p>
-
-<h3 id="FingerprintDialog">指紋ダイアログ</h3>
-
-<p>
- このサンプルでは、ユーザーを認証するために登録された指紋をアプリで識別する方法を紹介しています。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-FingerprintDialog">GitHub でサンプルを入手</a></p>
-
-<h3 id="AutomaticBackup">アプリの自動バックアップ</h3>
-
-<p>
- Android M では、アプリの設定の自動バックアップが導入されました。このサンプルでは、設定のバックアップを管理するためにアプリにフィルタリング ルールを追加する方法を紹介しています。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-AutoBackupForApps">GitHub でサンプルを入手</a></p>
-
-<h3 id="CameraRaw">Camera 2 Raw</h3>
-
-<p>
-  このサンプルでは、<code>Camera2</code> API を使用して、RAW カメラバッファをキャプチャし、<code>DNG</code> ファイルとして保存する方法を紹介しています。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-Camera2Raw">GitHub でサンプルを入手</a></p>
-
-<h3 id="ActiveNotification">アクティブ通知</h3>
-
-<p>
-  このサンプルでは、その時点でアプリに表示されている通知の数を <a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a> を使って調べる方法を紹介しています。
-
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ActiveNotifications">GitHub でサンプルを入手</a></p>
diff --git a/docs/html-intl/intl/ja/preview/setup-sdk.jd b/docs/html-intl/intl/ja/preview/setup-sdk.jd
deleted file mode 100644
index b4fe2e0..0000000
--- a/docs/html-intl/intl/ja/preview/setup-sdk.jd
+++ /dev/null
@@ -1,207 +0,0 @@
-page.title=Preview SDK のセットアップ
-page.image=images/cards/card-set-up_16-9_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本書の内容</h2>
-      <ol>
-        <li><a href="#get-as13">Android Studio 1.3 を入手する</a></li>
-        <li><a href="#get-sdk">Preview SDK を入手する</a></li>
-        <li><a href="#create-update">プロジェクトを作成または更新する</a></li>
-        <li><a href="#setup-test">テスト用にセットアップする</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>M Developer Preview SDK は、Android SDK Manager から入手できます。このドキュメントは、Android SDK Manager の使用方法やプロジェクトの作成方法などの Android アプリ開発についての知識をお持ちの方を対象にしています。
-
-Android アプリを初めて開発する場合は、まず <a href="{@docRoot}training/basics/firstapp/index.html">Building Your First App</a> のトレーニング レッスンをご覧ください。</a>
-
-</p>
-
-<h2 id="get-as13">Android Studio 1.3 を入手する</h2>
-
-<p>Developer Preview は、現在プレビュー段階にある Android Studio 1.3 に最適化されています。
-Preview SDK をご使用になる場合は、Android Studio 1.3 のプレビュー版をインストールすることをお勧めします。
-</p>
-
-<p class="caution"><strong>注意:</strong> Android Studio 1.3 の Canary プレビューは、現在も開発中です。
-メインの開発用マシンを Developer Preview のテストに使用する場合、テスト用に 2 つ目の Android Studio をインストールできます。
-
-</p>
-
-<p>Android Studio 1.3 プレビューをインストールするには: </p>
-
-<ol>
-  <li><a href="{@docRoot}tools/studio/index.html">Android Studio</a> をダウンロードして起動します。
-
-  </li>
-
-  <li>[<strong>Settings</strong>] ウィンドウを開きます(Windows では、 <strong>[File] &gt; [Settings]</strong> を選択すると開くことができます)。
-<strong>[Appearance &amp; Behavior] &gt; [System Settings] &gt; [Updates]</strong> を選択します。
-
-
-
-    <p class="aside">OSX では、Android Studio の [<strong>Preferences</strong>] ウィンドウで、[<strong>Appearance &amp; Behavior</strong>] パネルを見つけることができます。
-
-</p>
-  </li>
-
-  <li> [<strong>Updates</strong>] パネルで、<strong>[Automatically check updates for:] に
-[Canary Channel]</strong> を選択します。
-  </li>
-
-  <li>[<strong>Updates</strong>] パネルで、[<strong>Check Now</strong>] を選択して最新の Canary ビルドの有無を確認します。
-メッセージが表示されたら、最新の Canary ビルドをダウンロードしてインストールします。
-
-  </li>
-</ol>
-
-<h2 id="get-sdk">Preview SDK を入手する</h2>
-
-<p>開発環境に Preview SDK コンポーネントを追加するには: </p>
-
-<ol>
-  <li>Android Studio 1.3 プレビューを起動します。
-  </li>
-
-  <li>[<strong>Settings</strong>] ウィンドウを開きます(Windows では、 <strong>[File] &gt; [Settings]</strong> を選択すると開くことができます)。
-<strong>[Appearance &amp; Behavior] &gt; [System Settings] &gt; [Updates]</strong> を選択します。
-
-
-
-    <p class="aside">OSX では、Android Studio の [<strong>Preferences</strong>] ウィンドウで、[<strong>Appearance &amp; Behavior</strong>] パネルを見つけることができます。
-
-</p>
-  </li>
-
-  <li>[<strong>Updates</strong>] パネルで、<strong>[Automatically check updates for:] に
-[Canary Channel]</strong> を、<strong>[Automatically check updates for Android SDK:] に
-[Preview Channel]</strong> を選択します。
-  </li>
-
-  <li>[<strong>Android SDK Manager</strong>] を起動します。(Android Studio 1.3 では、SDK Manager はスタンドアロン アプリケーションではなくなり Android Studio に統合されました。)
-
-
-  </li>
-
-  <li>[<strong>Platforms</strong>] セクションで、[<strong>Android MNC Preview</strong>] を選択します。
-
-  </li>
-
-  <li>[<strong>Tools</strong>] セクションで、最新の Android [<strong>SDK Tools</strong>]、[<strong>Platform-tools</strong>]、[<strong>Build-tools</strong>] を選択します。
-
-
-  </li>
-
-  <li>[<strong>Install packages</strong>] をクリックし、すべてのパッケージの使用許諾契約に同意します。
-
-  </li>
-
-  <li>[<strong>Settings</strong>] ウィンドウを開き、<strong>[Appearance &amp; Behavior] &gt; [System Settings] &gt; [Android SDK]</strong> を選択し、M Developer Preview がインストールされていることを確認します。
-
-</li>
-
-  <li>[<strong>Android SDK</strong>] パネルで、[<strong>SDK Platforms</strong>] を選択します。
-[<strong>Android MNC Preview</strong>] が [<em>Installed</em>] と表示されているはずです。
-また、[<strong>SDK Tools</strong>] タブを開き、最新のツールがインストールされていることを確認します。
-
-
-  </li>
-</ol>
-<p>上記の手順を完了すると、開発環境でプレビュー コンポーネントを利用できるようになります。
- </p>
-
-
-<h2 id="create-update">プロジェクトを作成または更新する</h2>
-
-<p>
-  プレビュー API を使用するには、プレビュー コンポーネントを使用するために開発プロジェクトを作成または更新する必要があります。
-
-</p>
-
-
-<h3 id="create">新しいプロジェクトを作成する</h3>
-
-<p>
-  Preview SDK を使用してプロジェクトを作成するときには、Android Studio を使用することをお勧めします。<a href="{@docRoot}sdk/installing/create-project.html">Creating a Project</a> に記載されている手順に従い、プロジェクト ウィザードで [<em>Form Factors</em>] 画面が表示されるまで操作を進めます。
-
-次に、以下の手順に従い、Preview SDK 用に構成されたプロジェクトを作成します。
-
-</p>
-
-<ul>
-  <li>[<strong>Phone and Tablet</strong>] をチェックします。</li>
-  <li>[<strong>Minimum SDK</strong>] で、[<strong>MNC: Android M (Preview)</strong>] を選択します。
-</li>
-</ul>
-
-
-<h3 id="update">既存のプロジェクトを更新する</h3>
-
-<p>
-  既存のプロジェクトを使用する場合は、プロジェクト構成を変更してプレビュー API を有効にする必要があります。開発環境で、モジュールの <code>build.gradle</code> ファイルを開き、次のように値を設定します。
-
-
-</p>
-
-<ul>
-  <li><code>compileSdkVersion</code> に <code>'android-MNC'</code> を設定します。</li>
-  <li><code>minSdkVersion</code> に <code>'MNC'</code> を設定します。</li>
-  <li><code>targetSdkVersion</code> に <code>'MNC'</code> を設定します。</li>
-</ul>
-
-
-<h2 id="setup-test">テスト用にセットアップする</h2>
-
-<p>
-  Preview SDK でアプリをテストするには、プレビュー版のプラットフォームを使用して構成した端末または仮想端末が必要です。
-互換端末をお持ちの場合、テスト用にプレビュー プラットフォームをインストールできます。
-互換端末をお持ちでない場合は、テスト用に仮想端末を構成できます。
-</p>
-
-<h3 id="setup-device">物理端末をセットアップする</h3>
-
-<p>
-  Nexus 5、Nexus 6、Nexus 9、Android TV をお持ちの場合は、アプリのテスト用にこれらの端末にプレビュー システム イメージをインストールできます。Android Virtual Device Manager ツールを使用すると、Android Studio 内から仮想端末をプレビュー版のプラットフォームでセットアップできます。
-
-
-
-</p>
-
-<p class="caution">
-  <strong>重要:</strong> 端末にプレビュー イメージをインストールすると、<em>端末からすべてのデータが削除されます</em>。そのため、プレビュー イメージをインストールする前にすべてのデータをバックアップする必要があります。
-
-</p>
-
-<h3 id="setupAVD">仮想端末をセットアップする</h3>
-
-<p>
-  Android Virtual Device Manager ツールを使用すると、Android Studio 内からプレビュー版のプラットフォームで仮想端末をセットアップできます。
-
-</p>
-
-<p>AVD マネージャーで AVD を作成するには: </p>
-
-<ol>
-  <li><a href="{@docRoot}preview/setup-sdk.html">Preview SDK のセットアップ</a>の説明に従って、開発環境に Preview SDK をインストールします。
-
-</li>
-  <li><a href="{@docRoot}tools/devices/managing-avds.html">Managing AVDs with AVD Manager</a> の手順に従います。
-
-以下の設定を使用します。
-    <ul>
-      <li><strong>端末:</strong> Nexus 5、Nexus 6、Nexus 9、Android TV</li>
-      <li><strong>対象:</strong> 
-       Android M (Preview) - API Level M</li>
-      <li><strong>ABI:</strong> x86</li>
-    </ul>
-  </li>
-</ol>
-
-<p>
-  テスト用の仮想端末の作成についての詳細は、<a href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a> をご覧ください。
-</p>
diff --git a/docs/html-intl/intl/ja/preview/testing/guide.jd b/docs/html-intl/intl/ja/preview/testing/guide.jd
deleted file mode 100644
index b70e04d..0000000
--- a/docs/html-intl/intl/ja/preview/testing/guide.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=テストガイド
-page.image=images/cards/card-build_16x9_2x.png
-page.keywords=プレビュー リソース,Android M,テスト,パーミッション
-
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本書の内容</h2>
-      <ol>
-        <li><a href="#runtime-permissions">パーミッションをテストする</a></li>
-        <li><a href="#doze-standby">Doze と App Standby をテストする</a></li>
-        <li><a href="#ids">自動バックアップと端末識別子</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  Android M Developer Preview を利用すると、次期バージョンのプラットフォームでアプリが動作するか確認できます。
-Android M Developer Preview には、<a href="{@docRoot}preview/api-overview.html">API の概要</a>と<a href="{@docRoot}preview/behavior-changes.html">動作の変更点</a>に記載されているように、アプリに影響を与える可能性のある多くの API と動作の変更が含まれています。
-
-Android M Developer Preview でアプリをテストする時には、アプリの良好な使用感を確保するために、システムのいくつかの変更点に特に注意する必要があります。
-
-
-</p>
-
-<p>
-  このガイドでは、アプリで Android M Developer Preview の機能の何をどのようにテストすればよいか説明します。以下の機能は、アプリの動作に大きな影響を与える可能性があるので、優先してテストする必要があります。
-
-
-</p>
-
-<ul>
-  <li><a href="#runtime-permissions">パーミッション</a>
-  </li>
-  <li><a href="#doze-standby">Doze と App Standby</a>
-  </li>
-  <li><a href="#ids">自動バックアップと端末識別子</a></li>
-</ul>
-
-<p>
-  テスト用のプレビュー システム イメージを使用した端末または仮想端末のセットアップ方法の詳細については、<a href="{@docRoot}preview/setup-sdk.html">Preview SDK のセットアップ</a>をご覧ください。
-
-</p>
-
-
-<h2 id="runtime-permissions">パーミッションをテストする</h2>
-
-<p>
-  <a href="{@docRoot}preview/features/runtime-permissions.html">パーミッション</a> モデルの変更により、ユーザーがアプリにパーミッションを付与する方法が変わりました。
-アプリでは、インストール時にすべてのパーミッションを要求するのではなく、実行時に個々のパーミッションをユーザーに要求する必要があります。
-
-これにより、ユーザーは、各アプリのアクティビティをより細かくコントロールできるようになるだけではなく、アプリが各パーミッションを要求する理由をこれまでよりもよく理解できるようになります。
-ユーザーは、いつでもアプリに個別にパーミッションを付与したり、付与したパーミッションを個別に取り消したりできます。
-この機能は、アプリの動作に大きな影響を与える可能性があり、アプリの一部の機能が動作しなくなったり、限定された機能しか使えなくなったりする可能性もあります。
-
-
-</p>
-
-<p class="caution">
-  この変更は、アプリがこの新しいバージョンを対象にしているかどうかにかかわらず、この新しいプラットフォーム上で実行されるすべてのアプリに影響します。
-このプラットフォームはレガシーアプリに限定的な互換動作を提供しますが、公式版のプラットフォームのリリースに合わせてアップデート版のアプリを公開できるように、新しいパーミッション モデルに対応させるためのアプリの移行を今から計画することを強くお勧めします。
-
-
-</p>
-
-
-<h3 id="permission-test-tips">テストのヒント</h3>
-
-<p>
-  以下のテストのヒントを活用して、アプリでの新しいパーミッション動作のテストを計画し、実行してください。
-
-</p>
-
-<ul>
-  <li>アプリの現在のパーミッションと関連するコードパスを確認します。</li>
-  <li>パーミッションで保護されているサービスとデータ間のユーザーフローをテストします。</li>
-  <li>付与されたパーミッションと取り消されたパーミッションのさまざまな組み合わせをテストします。</li>
-  <li>{@code adb} ツールを使用して、コマンドラインからパーミッションを管理します。
-    <ul>
-      <li>パーミッションとステータスをグループ化して表示します。
-        <pre>adb shell pm list permissions -d -g</pre>
-      </li>
-      <li>以下の構文を使用して 1 つまたは複数のパーミッションを付与または取り消します。<br>
-        <pre>adb shell pm [grant|revoke] &lt;permission.name&gt; ...</pre>
-      </li>
-    </ul>
-  </li>
-  <li>アプリでパーミッションを使用しているサービスを分析します。</li>
-</ul>
-
-<h3 id="permission-test-strategy">テスト方針</h3>
-
-<p>
-  このパーミッションの変化は、アプリの構造と設計、ユーザーが体験する使用感とフローに影響を与えます。
-アプリの現在のパーミッション利用の状況を調査し、新しいフローの検討を開始する必要があります。
-このプラットフォームの公式リリースは互換動作を提供しますが、互換動作に頼ることなくアプリのアップデートを計画することを強くお勧めします。
-
-
-</p>
-
-<p>
-  まずアプリが実際に必要とし使用しているパーミッションを特定してから、パーミッションで保護されたサービスを使用している各コードパスを探してください。
-これには、新しいプラットフォーム上でのテストと、コードの解析が必要です。
-テストでは、アプリの {@code targetSdkVersion} をこのプレビュー版に変えて、実行時パーミッションのオプトインに重点的にテストする必要があります。
-詳細については、<a href="{@docRoot}preview/setup-sdk.html#">Preview SDK のセットアップ</a>をご覧ください。
-
-</p>
-
-<p>
-  パーミッションの取り消しと追加のさまざまな組み合わせをテストし、パーミッションに依存するユーザーフローを確認します。
-パーミッションへの依存性が明白または論理的ではない箇所では、依存性を取り除くため、またはパーミッションが必要な理由を明白にするために、フローのリファクタリングまたはコンパートメント化を検討する必要があります。
-
-
-</p>
-
-<p>
-  実行時パーミッションの動作、テスト、ベスト プラクティスについては、Developer Preview ページの<a href="{@docRoot}preview/features/runtime-permissions.html">パーミッション</a>をご覧ください。
-
-
-</p>
-
-
-<h2 id="doze-standby">Doze と App Standby をテストする</h2>
-
-<p>
-  省電力機能である Doze と App Standby により、端末がアイドル状態のときやそのアプリにフォーカスがないときに、アプリが実行できるバックグラウンド処理の量が制限されます。
-システムによってアプリに加えられる可能性のある制限には、ネットワーク アクセスの制限や停止、バックグラウンド タスクの停止、通知の停止、ウェイク リクエストの無視、アラームなどがあります。
-
-これらの省電力のための最適化が行われた状態で確実にアプリが適切に動作するように、これらの省電力状態をシミュレートしてアプリをテストする必要があります。
-
-
-</p>
-
-<h4 id="doze">アプリで Doze をテストする</h4>
-
-<p>アプリで Doze をテストするには: </p>
-
-<ol>
-<li>M Preview のシステム イメージを使用して、ハードウェア端末または仮想端末を構成します。</li>
-<li>端末を開発マシンに接続し、アプリをインストールします。</li>
-<li>アプリを実行し、アクティブ状態のままにします。</li>
-<li>以下のコマンドを実行して、端末の Doze モードへの移行をシミュレートします。
-
-<pre>
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-
-  </li>
-  <li>端末がアクティブ状態に戻ったときのアプリの動作を観察します。端末が Doze モードから抜けるときに、アプリがスムーズに復帰することを確認します。
-</li>
-</ol>
-
-
-<h4 id="standby">アプリで App Standby をテストする</h4>
-
-<p>アプリで App Standby モードをテストするには: </p>
-
-<ol>
-  <li>M Preview のシステム イメージを使用して、ハードウェア端末または仮想端末を構成します。</li>
-  <li>端末を開発マシンに接続し、アプリをインストールします。</li>
-  <li>アプリを実行し、アクティブ状態のままにします。</li>
-  <li>以下のコマンドを実行して、アプリのスタンバイ モードへの移行をシミュレートします。
-
-<pre>
-$ adb shell am broadcast -a android.os.action.DISCHARGING
-$ adb shell am set-idle &lt;packageName&gt; true
-</pre>
-
-  </li>
-  <li>以下のコマンドを使用して、アプリのウェイクをシミュレートします。
-    <pre>$ adb shell am set-idle &lt;packageName&gt; false</pre>
-  </li>
-  <li>アプリがウェイク状態に戻ったときのアプリの動作を観察します。アプリがスタンバイ モードからスムーズに復帰することを確認します。
-特に、アプリの通知とバックグラウンド ジョブが想定通りの動作を続けているかを確認する必要があります。
-</li>
-</ol>
-
-<h2 id="ids">アプリの自動バックアップと端末固有識別子</h2>
-
-<p>アプリが、Google Cloud Messaging の登録 ID などの何らかの端末固有の識別子を内部ストレージに保持している場合、<a href="{@docRoot}preview/backup/index.html">アプリの自動バックアップ</a>の説明に従って、そのストレージのロケーションを自動バックアップの対象から除外してください。
-
-
-
- </p>
diff --git a/docs/html-intl/intl/ja/preview/testing/performance.jd b/docs/html-intl/intl/ja/preview/testing/performance.jd
deleted file mode 100644
index 1c3ae02..0000000
--- a/docs/html-intl/intl/ja/preview/testing/performance.jd
+++ /dev/null
@@ -1,656 +0,0 @@
-page.title=表示パフォーマンスのテスト
-page.image=images/cards/card-test-performance_2x.png
-page.keywords=パフォーマンス,fps,ツール
-
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本書の内容</h2>
-      <ol>
-        <li><a href="#measure">UI のパフォーマンスを測定する</a>
-          <ul>
-            <li><a href="#aggregate">フレームのデータを集計する</a></li>
-            <li><a href="#timing-info">正確なフレーム タイミング情報</a></li>
-            <li><a href="#timing-dump">簡易フレーム タイミング ダンプ</a></li>
-            <li><a href="#collection-window">データ収集用のウィンドウを制御する</a></li>
-            <li><a href="#diagnose">パフォーマンスの低下を診断する</a></li>
-            <li><a href="#resources">追加リソース</a></li>
-          </ul>
-        </li>
-        <li><a href="#automate">UI パフォーマンス テストを自動化する</a>
-          <ul>
-            <li><a href="#ui-tests">UI テストをセットアップする</a></li>
-            <li><a href="#automated-tests">自動化された UI テストをセットアップする</a></li>
-            <li><a href="#triage">見つけた問題を選別し解決する</a></li>
-          </ul>
-        </li>
-      </ol>
-  </div>
-</div>
-
-
-<p>
-  ユーザー インターフェース(UI)のパフォーマンスをテストすることで、アプリが機能面での要件に合うだけでなく、ユーザーがアプリをスムーズに操作でき、毎秒安定して 60 フレーム(<a href="https://www.youtube.com/watch?v=CaMTIgxCSqU&amp;index=25&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">why 60fps?</a>)で、フレームのドロップや遅延なしで、言い換えれば<em>ジャンク</em>なしで実行されるようにします。
-
-
-このドキュメントでは、UI のパフォーマンスを測定することができるツールについて説明し、UI パフォーマンスの測定値をテストで活用する方法を提示します。
-
-
-</p>
-
-
-<h2 id="measure">UI のパフォーマンスを測定する</h2>
-
-<p>
-  パフォーマンスを改善するには、まずシステムのパフォーマンスを測定し、次にパイプラインのさまざまな箇所で発生している問題を診断し識別する必要があります。
-
-
-</p>
-
-<p>
-  <em><a href="https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></em> は端末上で動作し、システム サービスの状態についての情報をダンプする Android ツールです。
-
-<em>gfxinfo</em> コマンドを dumpsys に渡すと、記録中に実行されたアニメーションのフレームに関連するパフォーマンス情報が logcat に出力されます。
-
-
-</p>
-
-<pre>
-&gt; adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt;
-</pre>
-
-<p>
-  このコマンドは、フレーム タイミング データの複数の異なるバリアントを生成することがあります。
-</p>
-
-<h3 id="aggregate">フレームのデータを集計する</h3>
-
-<p>
-  M Preview では、このコマンドは、プロセスの生存期間全体を通して収集したフレームのデータの集計結果を logcat に出力します。
-次に例を示します。
-</p>
-
-<pre class="noprettyprint">
-Stats since: 752958278148ns
-Total frames rendered: 82189
-Janky frames: 35335 (42.99%)
-90th percentile: 34ms
-95th percentile: 42ms
-99th percentile: 69ms
-Number Missed Vsync: 4706
-Number High input latency: 142
-Number Slow UI thread: 17270
-Number Slow bitmap uploads: 1542
-Number Slow draw: 23342
-</pre>
-
-<p>
-  これらのデータは、アプリのレンダリングのパフォーマンスと多くのフレームの全体での安定性を大まかに示します。
-
-</p>
-
-
-<h3 id="timing-info">正確なフレーム タイミング情報</h3>
-
-<p>
-  M Preview では、gfxinfo のための新しいコマンド、<em>framestats</em> が採用され、最新のフレームのフレーム タイミングのきわめて詳細な情報を提供します。そのため、より正確に問題を追跡しデバッグできるようになります。
-
-
-</p>
-
-<pre>
-&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; framestats
-</pre>
-
-<p>
-  このコマンドは、アプリによって生成された最新 120 フレームのフレーム タイミング情報を、ナノ秒の精度を持つタイムスタンプを使用して出力します。以下は、adb dumpsys gfxinfo
-  &lt;PACKAGE_NAME&gt; framestats による未加工の出力例です。
-
-</p>
-
-<pre class="noprettyprint">
-0,49762224585003,49762241251670,9223372036854775807,0,49762257627204,49762257646058,49762257969704,49762258002100,49762265541631,49762273951162,49762300914808,49762303675954,
-0,49762445152142,49762445152142,9223372036854775807,0,49762446678818,49762446705589,49762447268818,49762447388037,49762453551527,49762457134131,49762474889027,49762476150120,
-0,49762462118845,49762462118845,9223372036854775807,0,49762462595381,49762462619287,49762462919964,49762462968454,49762476194547,49762476483454,49762480214964,49762480911527,
-0,49762479085548,49762479085548,9223372036854775807,0,49762480066370,49762480099339,49762481013089,49762481085850,49762482232152,49762482478350,49762485657620,49762486116683,
-</pre>
-
-<p>
-  この出力の各行が、アプリによって生成される 1 つのフレームを示します。各ラインは、フレームを生成するパイプラインの各段階で費やされた時間を出力する固定された数の列を持ちます。
-次のセクションでは、各列が何を示しているかも含めて、フォーマットを詳細に説明します。
-
-</p>
-
-
-<h4 id="fs-data-format">Framestats データ形式</h4>
-
-<p>
-  データは CSV 形式で出力されるため、お好みのスプレッドシート ツールに簡単に貼り付けたり、スクリプトで簡単に集計して解析したりできます。
-以下のリストは、出力データ列のフォーマットを説明しています。
-すべてのタイムスタンプはナノ秒単位で出力されます。
-</p>
-
-<ul>
-  <li>FLAGS
-    <ul>
-      <li>FLAGS 列が「0」の行には、FRAME_COMPLETED 列から INTENDED_VSYNC 列を引いて計算されたフレームの総処理時間が示されます。
-
-      </li>
-
-      <li>FLAGS 列が「0」以外の場合、そのフレームは通常のパフォーマンスからの外れ値であると定められているのでその行は無視する必要があります。この場合、レイアウトと描画に 16 ミリ秒よりも長くかかることが想定されています。
-
-これは、以下の原因で起きることがあります。
-        <ul>
-          <li>ウィンドウのレイアウトが変更された(アプリケーションの最初のフレームの場合や画面が回転された後など)。
-
-          </li>
-
-          <li>フレームが省略された。この場合、いくつかの値には不適切なタイムスタンプが含まれます。
-たとえば 60 fps よりも速く実行されている場合や、画面上にダーティで終わったものが何もない場合など、フレームは省略することができます。これは必ずしもアプリに問題がある兆候ではありません。
-
-
-          </li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-
-  <li>INTENDED_VSYNC
-    <ul>
-      <li>フレームの意図された開始ポイント。この値が VSYNC と異なる場合、vsync 信号にすぐに応答することを阻止する動作が UI スレッド上で発生していたことを意味します。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>VSYNC
-    <ul>
-      <li>すべての vsync リスナーとフレームの描画(Choreographer フレーム コールバック、アニメーション、View.getDrawingTime() など)で使用された時間の値。
-
-      </li>
-
-      <li>VSYNC と VSYNC のアプリケーションへの影響の詳細については、<a href="https://www.youtube.com/watch?v=1iaHxmfZGGc&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=23">Understanding VSYNC</a> のビデオをご覧ください。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>OLDEST_INPUT_EVENT
-    <ul>
-      <li>入力キューの最も古い入力イベントのタイムスタンプ。フレームの入力イベントが存在しない場合は、Long.MAX_VALUE。
-
-      </li>
-
-      <li>この値は、主にプラットフォームの動作のパフォーマンスを示すことを意図しており、アプリのデベロッパーが活用できる場面は限定されます。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>NEWEST_INPUT_EVENT
-    <ul>
-      <li>入力キューの最も新しい入力イベントのタイムスタンプ。フレームの入力イベントが存在しない場合は、0。
-
-      </li>
-
-      <li>この値は、主にプラットフォームの動作のパフォーマンスを示すことを意図しており、アプリのデベロッパーが活用できる場面は限定されます。
-
-      </li>
-
-      <li>ただし、FRAME_COMPLETED から NEWEST_INPUT_EVENT を引いた値を確認することによって、そのアプリが増やす待ち時間がどれくらいか大まかに知ることができます。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>HANDLE_INPUT_START
-    <ul>
-      <li>入力イベントがアプリケーションにディスパッチされるときのタイムスタンプ。
-      </li>
-
-      <li>この値と ANIMATION_START との間の時間を確認することで、アプリケーションが入力イベントを処理するために費やした時間を測定することができます。
-
-      </li>
-
-      <li>この値が大きい(&gt; 2 ミリ秒)の場合、View.onTouchEvent() などの入力イベントを処理するためにアプリが長い時間を費やしていることを意味します。これは、この動作の最適化または別のスレッドへの移行が必要なことを示している場合があります。
-
-新しいアクティビティやそれに類するものを起動するクリック イベントなどの一部のシナリオでは、この値が大きいことは想定済みであり許容範囲内です。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>ANIMATION_START
-    <ul>
-      <li>Choreographer を使用して登録されたアニメーションが実行されたときのタイムスタンプ。
-      </li>
-
-      <li>この値と PERFORM_TRANVERSALS_START の間の時間を確認することで、実行中のすべてのアニメーター(ObjectAnimator、ViewPropertyAnimator、共通の遷移となっている Transitions)を評価するのにかかった時間を確認することができます。
-
-
-      </li>
-
-      <li>この値が大きい(&gt; 2 ミリ秒)の場合、アプリがカスタム アニメーターを記述していないか、また ObjectAnimators がアニメーション化しているのがどの項目かを確認して、それらがアニメーションに適しているかどうか確かめてください。
-
-
-      </li>
-
-      <li>Choreographer についての詳細は、<a href="https://developers.google.com/events/io/sessions/325418001">For Butter or Worse</a> のビデオをご覧ください。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>PERFORM_TRAVERSALS_START
-    <ul>
-      <li>この値から DRAW_START を引くと、レイアウトと測定のフェーズが完了するまでにかかる時間を知ることができます(スクロールまたはアニメーションの間は、この時間がゼロに近いことが望ましいことにご注意ください)。
-
-
-      </li>
-
-      <li>レンダリング パイプラインのレイアウトと測定のフェーズについての詳細は、<a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">Invalidations, Layouts and Performance</a> のビデオをご覧ください。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>DRAW_START
-    <ul>
-      <li>performTraversals の描画のフェーズが開始された時間。これは、無効化されているビューのディスプレイ リストを記録する開始ポイントです。
-
-      </li>
-
-      <li>この値と SYNC_START の間の時間は、ツリー内のすべての無効化されているビュー上で View.draw() を呼び出すのにかかった時間を示します。
-
-      </li>
-
-      <li>描画モデルに関する詳細は、<a href="{@docRoot}guide/topics/graphics/hardware-accel.html#hardware-model">Hardware Acceleration</a> または <a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">Invalidations, Layouts and Performance</a> のビデオをご覧ください。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>SYNC_START
-    <ul>
-      <li>描画の同期フェーズが開始された時間。
-      </li>
-
-      <li>この値と ISSUE_DRAW_COMMANDS_START の間の時間が非常に大きい場合(&gt; 0.4 ミリ秒またはこれに近い値)、通常は、GPU にアップロードする必要がある多くの新しい Bitmaps が描画されたこと意味します。
-
-
-      </li>
-
-      <li>同期フェーズについての詳細は、<a href="https://www.youtube.com/watch?v=VzYkVL1n4M8&amp;index=24&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">Profile GPU Rendering</a> のビデオをご覧ください。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>ISSUE_DRAW_COMMANDS_START
-    <ul>
-      <li>ハードウェア レンダラーが、GPU への描画コマンドの発行を開始した時間。
-      </li>
-
-      <li>この値と FRAME_COMPLETED の間の時間により、そのアプリがどれくらいの量の GPU 作業を生じさせているのか大まかに知ることができます。
-オーバードローが多すぎたりまたはレンダリング効果が不十分だったりという問題がある場合は、この時間にあらわれます。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>SWAP_BUFFERS
-    <ul>
-      <li>eglSwapBuffers が呼び出された時間。プラットフォーム作業関連以外では、あまり重要ではない値です。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>FRAME_COMPLETED
-    <ul>
-      <li>すべてが完了した時間です。そのフレームを処理するのにかかった時間の合計は、FRAME_COMPLETED から INTENDED_VSYNC を引くと計算できます。
-
-      </li>
-    </ul>
-  </li>
-
-</ul>
-
-<p>
-  このデータは、別の方法でも使用できます。たとえば、さまざまな遅延バケットでのフレームの処理にかかった時間(FRAME_COMPLETED - INTENDED_VSYNC)の分布を示す下記のヒストグラムは、単純ですが役に立ちます。
-
-このグラフを一目見るだけで、大部分のフレームは 16 ミリ秒の限界線(赤色の線)を大きく下回った良好な状態であるけれども、いくつかのフレームが限界線を著しく上回っていることがわかります。
-
-ヒストグラムで時間の経過に伴う変化を確認することで、大規模な変化が起きているのか、新しい外れ値が作成されているのか知ることができます。
-また、データに含まれる多くのタイムスタンプに基づいて、入力待ち時間、レイアウトにかかった時間、その他のこれに類する興味を引く指標をグラフにできます。
-
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-framestats.png">
-
-
-<h3 id="timing-dump">簡易フレーム タイミング ダンプ</h3>
-
-<p>
-  [開発者向けオプション] で [<strong>GPUレンダリングのプロフィール作成</strong>] を [<strong>adb shell dumpsys gfxinfo</strong>] に設定すると、<code>adb shell dumpsys gfxinfo</code> コマンドにより、最新の 120 フレームのタイミング情報が、いくつかの異なるカテゴリに分かれて、タブ区切りで出力されます。
-
-
-このデータは、描画パイプラインのどの部分の処理が遅いのかを大まかに知るのに役に立ちます。
-
-</p>
-
-<p>
-  上記の <a href="#fs-data-format">framestats</a> と同様に、お好みのスプレッドシート ツールに簡単に貼り付けたり、スクリプトで簡単に集計し解析したりできます。
-
-以下のグラフは、アプリによって生成された多くのフレームが時間を費やした箇所の内訳を示しています。
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-frame-latency.png">
-
-<p>
-  このグラフは、gfxinfo を実行し、出力結果をコピーし、スプレッドシート アプリケーションに貼り付け、データを積み上げ棒グラフにしたものです。
-
-</p>
-
-<p>
-  各縦棒は、アニメーションの 1 フレームを示し、その高さはそのフレームを処理するのにかかるミリ秒の数を示しています。
-また、縦棒の色分けされた各部分は、レンダリング パイプラインの各段階を示しています。これにより、ボトルネックを生んでいる可能性があるのはアプリケーションのどの箇所か確認できます。
-
-レンダリング パイプラインとその最適化方法に関する詳細は、<a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;index=27&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">Invalidations, Layouts and Performance</a> のビデオをご覧ください。
-
-
-</p>
-
-
-<h3 id="collection-window">データ収集用のウィンドウを制御する</h3>
-
-<p>
-  Framestats と簡易フレーム タイミングの両方とも、非常に短いウィンドウを通じて、約 2 秒相当のレンダリングについてデータを収集しています。
-たとえば、収集するデータを特定のアニメーションだけに限定したい場合、このタイミング データ収集用ウィンドウを正確にコントロールするには、すべてのカウンタをリセットし収集したデータを集計します。
-
-
-</p>
-
-<pre>
-&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; reset
-</pre>
-
-<p>
-  これは、ダンプ コマンドとあわせて使用することもでき、フレームの 2 秒未満のウィンドウを続けてキャプチャしながら、通常の流れで収集しリセットできます。
-
-
-</p>
-
-
-<h3 id="diagnose">パフォーマンスの低下を診断する</h3>
-
-<p>
-  パフォーマンスの低下を見つけることは、問題を見つけだし、アプリケーションの状態を良好に維持するための最初のステップです。
-ただし、dumpsys は、ただ問題の存在とその相対的な深刻度を明らかにするだけです。
-さらに、パフォーマンスの問題の具体的な原因を突き止め、解決するための適切な方法を見つける必要があります。
-それには、<a href="{@docRoot}tools/help/systrace.html">systrace</a> ツールを利用することをお勧めします。
-
-</p>
-
-
-<h3 id="resources">追加リソース</h3>
-
-<p>
-  Android のレンダリング パイプラインの仕組み、一般的な問題、それらの問題の修正方法についての詳細は、以下の資料が役に立ちます。
-
-
-</p>
-
-<ul>
-  <li>Rendering Performance 101
-  </li>
-  <li>Why 60fps?
-  </li>
-  <li>Android UI and the GPU
-  </li>
-  <li>Invalidations Layouts and performance
-  </li>
-  <li>Analyzing UI Performance with Systrace
-  </li>
-</ul>
-
-
-<h2 id="automate">UI パフォーマンス テストを自動化する</h2>
-
-<p>
-  UI パフォーマンスのテスト手法の 1 つに、対象のアプリ上で一連のユーザー操作を人間のテスターに実行してもらい、目視でジャンクを探すかツール主体の手法を使用して長い時間を費やしてジャンクを見つけるかのいずれかの方法をとるというものがあります。
-
-ただし、この人の力による方法は危険を伴います。フレームレートの変化に気付く能力は、人によって大きく異なります。また、この方法は、多くの時間が必要で単調で退屈なものであり、ミスも起こりがちです。
-
-
-</p>
-
-<p>
-  より効率的な手法は、自動化された UI テストにより主要なパフォーマンス指標のログを取って解析することです。
-Android M Developer Preview には、アプリケーションのアニメーションに対するジャンクの量と深刻度を簡単に確認することができ、現在のパフォーマンスを確認し将来のパフォーマンス目標を実現するための適切なプロセスを構築するために使用できる新しいログ記録機能が含まれています。
-
-
-
-</p>
-
-<p>
-  このドキュメントでは、この新しいログ機能によるデータを使用してパフォーマンス テストを自動化するための手法について紹介します。
-
-</p>
-
-<p>
-  この手法には、鍵となるアクションが 2 つあります。何をどのようにテストするかということを明確にすることと、自動化されたテスト環境をセットアップし管理することです。
-
-
-</p>
-
-
-<h3 id="ui-tests">UI テストをセットアップする</h3>
-
-<p>
-  自動化されたテストを実行する前に、テストの仕様や必要になる可能性があるものを適切に把握するために、いくつかの大まかな決定をしておくことが重要です。
-
-</p>
-
-<h4>
-  テストする重要なアニメーションやフローを明確にする
-</h4>
-
-<p>
-  パフォーマンスの低さがユーザーの目に最も多く触れるのは、アニメーションのスムーズさが失われる場合です。
-そのため、どのタイプの UI アクションをテストするか決めるときに、ユーザーが最もよく見る重要なアニメーションまたはユーザーの使用感にとって最も重要なアニメーションにフォーカスすると効果があります。
-
-以下にいくつかの一般的なシナリオをご紹介します。
-</p>
-
-<ul>
-  <li>プライマリ ListView または RecyclerView のスクロール
-  </li>
-
-  <li>非同期処理待ちサイクル中のアニメーション
-  </li>
-
-  <li>ビットマップを読み込んだり操作したりするアニメーション
-  </li>
-
-  <li>アルファブレンドを含むアニメーション
-  </li>
-
-  <li>キャンバスを使用して描画するカスタムビュー
-  </li>
-</ul>
-
-<p>
-  チームのエンジニア、デザイナー、プロダクト マネージャーと連携して、テスト範囲のこれらの重要な製品アニメーションの優先順位を決めてください。
-
-</p>
-
-<h4>
-  将来の目標を決め、実現を目指す
-</h4>
-
-<p>
-  具体的なパフォーマンス目標を明確にし、その目標に合わせてテストを作成しデータを収集することが重要な場合もあります。
-次に例を示します。
-</p>
-
-<ul>
-  <li>詳細を知るために、初めて UI パフォーマンスの追跡を開始したいだけですか。
-  </li>
-
-  <li>将来発生する可能性のあるパフォーマンスの低下を防止したいですか。
-  </li>
-
-  <li>現在のフレームのスムーズ度合いは 90% で、今四半期中に 98 % にしたいと考えていますか。
-  </li>
-
-  <li>現在のフレームのスムーズ度合い 98% を低下させたくないと考えていますか。
-  </li>
-
-  <li>ローエンド端末でのパフォーマンスを改善することが目標ですか。
-  </li>
-</ul>
-
-<p>
-  上記のすべての場合で、複数のバージョンのアプリケーションでのパフォーマンスを示すヒストリカル トラッキングが必要です。
-
-</p>
-
-<h4>
-  テストする端末を明確にする
-</h4>
-
-<p>
-  アプリケーションのパフォーマンスは、そのアプリケーションが実行される端末によって異なります。端末によっては、メモリが少なく、GPU のパワーが低く、CPU チップが遅いものもあります。
-つまり、あるハードウェアでスムーズに実行できるアニメーションが別のハードウェアではうまく実行できなかったり、さらに悪い場合は、パイプラインの別の箇所にボトルネックを生んだりすることになります。
-
-そのため、このようなハードウェアの違いに対処するために、最新のハイエンド端末と、ローエンド端末、タブレットなどの幅広い端末を選んでテストを実行する必要があります。
-
-さまざまな CPU 性能、RAM、画面密度、サイズ等の端末を用意してください。
-ハイエンド端末でうまくいったテストが、ローエンド端末では失敗することがあります。
-
-</p>
-
-<h4>
-  UI のテストの基本的なフレームワーク
-</h4>
-
-<p>
-  <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a> や <a href="{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a> といったツールが、ユーザーがアプリケーション内を移動する動作を自動処理にするために用意されています。
-
-これらは、端末でのユーザーの操作を模倣するシンプルなフレームワークです。
-これらのフレームワークを使用するには、一連のユーザー アクションを実行する独自のスクリプトを作成して、端末上で実行します。
-
-
-</p>
-
-<p>
-  <code>dumpsys gfxinfo</code> と、これらの自動化されたテストを組み合わせることで、テストを実行できる再現可能なシステムを簡単に作成して、特定の条件でのパフォーマンス情報を測定できます。
-
-
-</p>
-
-
-<h3 id="automated-tests">自動化された UI テストをセットアップする</h3>
-
-<p>
-  UI テストを実行する機能と、1 つのテストからデータを集めるためのパイプラインを用意したら、次の重要なステップは、複数の端末で、そのテストを複数回実行でき、開発チームの解析用にパフォーマンス データを集計できるフレームワークを用意することです。
-
-
-
-</p>
-
-<h4>
-  テスト自動化のためのフレームワーク
-</h4>
-
-<p>
-  UI テストのフレームワーク(<a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a> など)は、対象の端末やエミュレータ上で直接実行されます。
-<em>dumpsys gfxinfo</em> によるパフォーマンス情報の収集はホストマシンによって行われますが、コマンドの送信は ADB を通じて行われます。
-これらの別々に分かれている処理の自動化を橋渡しするために、<a href="{@docRoot}tools/help/monkeyrunner_concepts.html">MonkeyRunner</a> フレームワークは開発されました。このフレームワークは、ホストマシンで動作するスクリプティング システムで、接続されている端末にコマンドを発行できるとともに、それらの端末からデータを受け取ることもできます。
-
-
-
-</p>
-
-<p>
-  UI パフォーマンス テストの適切な自動化のためのスクリプトを作成することで、少なくとも、以下のタスクを MonkeyRunner を利用して実行することが可能になります。
-
-</p>
-
-<ul>
-  <li>対象の端末(1 台または複数台)またはエミュレータに任意の APK をロードして起動する
-  </li>
-
-  <li>UI Automator UI テストを起動して、実行できるようにする
-  </li>
-
-  <li><em>dumpsys gfxinfo</em>を通じて情報を収集する。<em></em>
-  </li>
-
-  <li>情報を集計し、デベロッパーに役に立つ形で表示する。
-  </li>
-</ul>
-
-
-<h3 id="triage">見つけた問題を選別し解決する</h3>
-
-<p>
-  問題のパターンまたはパフォーマンスの低下を確認したら、次に必要なことは問題の解決方法を見つけその方法を実行することです。
-その自動化されたテスト フレームワークがフレームの正確なタイミングの内訳を保存している場合、最近行われたコードやレイアウトの疑わしい変更を調べたり(パフォーマンスが低下している場合)、手作業での調査に切り替えたときにシステムのどの箇所を解析するか絞り込んだりするのに役立ちます。
-
-
-手作業での調査は、まず <a href="{@docRoot}tools/help/systrace.html">systrace</a> から開始することをお勧めします。systrace は、システムのレンダリング パイプラインのすべての段階、すべてのスレッド、コア、およびテスト担当者が定義したカスタム イベントについての正確なタイミング情報を表示します。
-
-
-</p>
-
-<h4>
-  一時的なタイミングを適切にプロファイリングする
-</h4>
-
-<p>
-  レンダリング パフォーマンスのタイミングを取得し測定することには困難を伴います。
-これらの数値は、その本質として、決定的なものではなく、多くの場合、システムの状態、利用可能なメモリ量、サーマル・スロットリング、その地域に最後に日照があった時間などに応じて変動します。
-
-つまり同じテストを 2 度実行した場合、近似するが完全に同じではない、わずかに異なる結果が出ることがあるということです。
-
-
-</p>
-
-<p>
-  この方法で適切にデータを集めプロファイリングするには、同じテストを複数回実行し、結果を平均値または中間値として集計します(以下では、この処理を「バッチ」と記載します)。これにより、テストのパフォーマンスの大まかな数字を、正確なタイミングを必要とすることなく取得できます。
-
-
-
-</p>
-
-<p>
-  バッチは、コード変更の合間にも、それらの変更がパフォーマンスにもたらす相対的な影響を確認するために使用できます。
-変更前のバッチの平均フレームレートが変更後のバッチよりも大きい場合、通常、WRT パフォーマンスが全面的に改善したと言えます。
-
-
-</p>
-
-<p>
-  つまり、自動化された UI テストでは、この考え方を取り入れることと、テスト中に発生する可能性のある異常を把握しておくことが必要です。
-たとえば、アプリケーションのパフォーマンスが、そのアプリケーションではなく何らかの端末の問題により突然低下した場合、通常時のタイミングを取得するためにバッチを再度実行した方がよいことがあります。
-
-
-
-</p>
-
-<p>
-  それでは、測定値を意味のあるものにするには、何回テストを実行すればよいでしょうか。少なくとも 10 回は必要であり、50 回や 100 回などのように回数が多いほど正確な結果が得られます(もちろん、時間と正確さはトレードオフの関係にあります)。
-
-
-</p>
diff --git a/docs/html-intl/intl/ja/sdk/index.jd b/docs/html-intl/intl/ja/sdk/index.jd
new file mode 100644
index 0000000..f7454c0
--- /dev/null
+++ b/docs/html-intl/intl/ja/sdk/index.jd
@@ -0,0 +1,432 @@
+page.title=Android Studio と SDK Tools のダウンロード
+page.tags=sdk, android studio
+page.template=sdk
+page.image=images/cards/android-studio_2x.png
+header.hide=1
+page.metaDescription=公式 Android IDE とデベロッパー ツールをダウンロードして、Android 版のモバイル端末、タブレット、ウェアラブル端末、TV などの端末向けのアプリをビルドする。
+
+@jd:body
+
+<style type="text/css">
+  .offline {display:none;}
+  h2.feature {
+    padding-top:30px;
+    margin-top:0;
+    clear:both;
+  }
+  .feature-blurb {
+  margin:0px; font-size:16px; font-weight:300;
+  padding-top:40px;
+  }
+
+  .landing-button .small {
+    font-size: 12px;
+    font-weight: normal;
+    line-height: 12px;
+    display: block;
+  }
+
+  h1.studio-logo {
+    width:226px;
+    height:78px;
+    display:block;
+    padding:0;
+    white-space: nowrap;
+    text-indent: -10000px;
+    font-size:0px;
+    background: url({@docRoot}images/tools/studio-logo.png);
+    background-image: -webkit-image-set(url({@docRoot}images/tools/studio-logo.png) 1x, url({@docRoot}images/tools/studio-logo_2x.png) 2x);
+    background-size: 226px 78px;
+  }
+
+</style>
+
+
+
+
+
+<div style="position:relative;">
+
+
+<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
+<div class="col-13" style="margin:0;">&nbsp;</div><!-- provides top margin for content -->
+
+<h1 id="tos-header" style="margin-top:0">ダウンロード</h1>
+
+<p class="sdk-terms-intro">Android Studio またはスタンドアロンの SDK Tools をインストールする前に、次の利用規約に同意する必要があります。
+</p>
+
+<div class="sdk-terms" onfocus="this.blur()">
+<h2 class="norule">利用規約</h2>
+以下は、Android Software Development Kit の使用許諾契約です。
+
+
+<h3>1. Introduction</h3>
+1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
+
+1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
+
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+
+
+<h3>2. Accepting this License Agreement</h3>
+2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
+
+2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
+
+2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
+
+2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
+
+
+<h3>3. SDK License from Google</h3>
+3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
+
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
+
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+
+3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+
+3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
+
+3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
+
+3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+
+3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
+
+
+<h3>4. Use of the SDK by You</h3>
+4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
+
+4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
+
+4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
+
+4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
+
+4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
+
+4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
+
+
+<h3>5. Your Developer Credentials</h3>
+5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
+
+
+<h3>6. Privacy and Information</h3>
+6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
+
+6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
+
+
+<h3>7. Third Party Applications</h3>
+7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
+
+7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
+
+7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
+
+
+<h3>8. Using Android APIs</h3>
+8.1 Google Data APIs
+
+8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
+
+8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
+
+
+<h3>9. Terminating this License Agreement</h3>
+9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
+
+9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
+
+9.3 Google may at any time, terminate the License Agreement with you if:
+(A) you have breached any provision of the License Agreement; or
+(B) Google is required to do so by law; or
+(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
+(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
+
+9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
+
+
+<h3>10. DISCLAIMER OF WARRANTIES</h3>
+10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+
+10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
+
+10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+
+
+<h3>11. LIMITATION OF LIABILITY</h3>
+11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
+
+<h3>12. Indemnification</h3>
+12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
+
+
+<h3>13. Changes to the License Agreement</h3>
+13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
+
+
+<h3>14. General Legal Terms</h3>
+14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
+
+14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
+
+14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
+
+14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
+
+14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
+
+14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
+
+14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+
+<em>November 20, 2015</em>
+</div>
+
+
+
+
+
+<div id="next-steps" style="display:none;position:absolute;width:inherit">
+  <p>数ステップで、Android 向けアプリのビルドを開始できます。</p>
+  <p>まもなく、<a id="next-link" href="{@docRoot}sdk/installing/index.html">Installing the Android SDK</a>へリダイレクトします。
+</p>
+
+</div><!-- end next-steps -->
+
+
+
+<div id="sdk-terms-form">
+<p>
+<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+<label id="agreeLabel" for="agree">上記の利用規約を読み、同意します。</label>
+</p>
+<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+</div>
+
+
+</div><!-- end TOS -->
+
+
+
+
+
+
+<div id="landing">
+
+<div class="col-13">&nbsp;</div><!-- provides top margin for content -->
+
+<img src="{@docRoot}images/tools/studio-hero.png" srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x" width="760" height="400" />
+
+
+<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
+
+<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>
+
+<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
+width: 400px;text-align: center;">公式 Android IDE</p>
+
+<ul style="font-size:12px;line-height:19px;">
+<li>Android Studio IDE</li>
+<li>Android SDK Tools</li>
+<li>Android 6.0(Marshmallow)プラットフォーム</li>
+<li>Google API を使用した Android 6.0 エミュレータのシステム イメージ</li>
+</ul>
+
+<a class="online landing-button green download-bundle-button"
+href="#Other" >Download Android Studio<br/><span class='small'></span></a>
+
+<!-- this appears when viewing the offline docs -->
+<p class="offline">
+Android Studio または スタンドアロンの SDK Tools を入手するには、<a href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a> へアクセスしてください。
+</p>
+</div>
+
+<ul>
+  <li><a href="#Requirements">システム要件</a></li>
+  <li><a href="#Other">他のダウンロード オプション</a></li>
+  <li><a href="{@docRoot}sdk/installing/migrate.html">Android Studio への移行</a></li>
+  <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform" target="_blank">アンケートに回答する</a></li>
+</ul>
+
+
+
+
+
+<div class="cols">
+<h2 class="feature norule col-13" >インテリジェント コード エディタ</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-code.png" srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Android Studio の中核であるインテリジェント コード エディタは、高度なコード補完機能、リファクタリング機能、解析機能を備えています。
+</p>
+  <p>このパワフルなコード エディタは、Android アプリ デベロッパーの生産性を高めます。</p>
+</div>
+
+
+
+
+
+<h2 class="feature norule">コード テンプレートと GitHub との統合</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-import.png" srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>新しいプロジェクト ウィザードでは、これまで以上に簡単に新規プロジェクトを開始できます。</p>
+
+  <p>ナビゲーション ドロワーやビュー ページャーなどのパターンにテンプレート コードを使用してプロジェクトを開始できます。加えて GitHub から Google のコード サンプルをインポートできます。
+</p>
+</div>
+
+
+
+
+<h2 class="feature norule">マルチスクリーン アプリの開発</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-screens.png" srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Android 携帯電話、タブレット、Android Wear、Android TV、Android Auto、Google Glass 向けのアプリをビルドできます。
+</p>
+  <p>Android Studio の新しい Android プロジェクト ビューとモジュールのサポートによって、アプリのプロジェクト管理やリソース管理がさらに簡単になります。
+
+</div>
+
+
+
+
+<h2 class="feature norule">あらゆる形状の端末をサポートする仮想デバイス</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-avds.png" srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Android Studio には最適化されたエミュレータ イメージが事前構成されています。</p>
+  <p>アップデートされ合理化された仮想デバイス マネージャーには、一般的な Android 端末向けにあらかじめ定義されたプロファイルが用意されています。
+</p>
+</div>
+
+
+
+
+<h2 class="feature norule">
+Gradle で進化する Android のビルド</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-gradle.png" srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>1 つのプロジェクトで、Android アプリのための、異なる機能を持つ複数の APK を作成できます。</p>
+  <p>Maven を使用してアプリの依存関係を管理します。</p>
+  <p>APK は Android Studio でもコマンドラインでもビルドできます。</p>
+</div>
+
+
+
+<h2 class="feature norule">Android Studio のその他の特徴</h2>
+<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
+
+<a class="online landing-button green download-bundle-button" style="margin:0 0 40px 60px;float:right" href="">Download</a>
+
+  <ul>
+  <li>人気の高い JetBrains の Java IDE である IntelliJ IDEA Community Edition が基盤</li>
+  <li>Gradle ベースの柔軟なビルドシステム</li>
+  <li>ビルド バリアントと複数の APK 生成機能</li>
+  <li>Google サービスやさまざまな端末向けのテンプレート サポートの拡充</li>
+  <li>テーマの編集が可能なレイアウト エディタ</li>
+  <li>パフォーマンス、ユーザビリティ、バージョン互換性、その他の問題を検出する Lint ツール</li>
+  <li>ProGuard とアプリの署名機能</li>
+  <li>Google Cloud Messaging や App Engine との統合をサポートする Google Cloud プラットフォームの組み込みサポート
+</li>
+  </ul>
+
+<p style="margin:0">
+Android Studio の機能の詳細については、「<a href="{@docRoot}tools/studio/index.html">Android Studio の基礎</a>」をご覧ください。
+</p>
+</div>
+
+
+<p>Eclipse で ADT を使用している場合、Android Studio が Android の公式 IDE になったため、Android Studio に移行して IDE の最新アップデートを入手する必要があります。
+
+プロジェクトの移行については、「<a href="{@docRoot}sdk/installing/migrate.html">Migrating to Android Studio</a>」をご覧ください。
+
+</p>
+
+
+
+
+
+
+
+<h2 id="Requirements">システム要件</h2>
+
+<h3>Windows の場合</h3>
+
+<ul>
+<li>Microsoft&reg; Windows&reg; 8/7/Vista/2003(32-bit 版または 64-bit 版)</li>
+<li>2 GB 以上のシステム メモリ(RAM)、4 GB 以上を推奨</li>
+<li>400 MB の空き容量のあるハードディスク</li>
+<li>Android SDK、エミュレータのシステム イメージ、キャッシュ用には少なくとも 1 GB 以上</li>
+<li>1280 x 800 以上の画面解像度</li>
+<li>Java Development Kit (JDK) 7 </li>
+<li>エミュレータ アクセラレータ向け(任意): Intel® VT-x、Intel® EM64T(Intel® 64)、Execute Disable(XD)ビット機能対応の Intel® プロセッサ
+</li>
+</ul>
+
+
+<h3>Mac OS X の場合</h3>
+
+<ul>
+<li>Mac &reg;OS X&reg; 10.8.5 以降、10.9(Mavericks)まで</li>
+<li>2 GB 以上のシステム メモリ(RAM)、4 GB 以上を推奨</li>
+<li>400 MB の空き容量のあるハードディスク</li>
+<li>Android SDK、エミュレータのシステム イメージ、キャッシュ用には少なくとも 1 GB 以上</li>
+<li>1280 x 800 以上の画面解像度</li>
+<li>Java Runtime Environment (JRE) 6</li>
+<li>Java Development Kit (JDK) 7</li>
+<li>エミュレータ アクセラレータ向け(任意): Intel® VT-x、Intel® EM64T(Intel® 64)、Execute Disable(XD)ビット機能対応の Intel® プロセッサ
+</li>
+</ul>
+
+<p>Mac OSで最適化されたフォントのレンダリングを使用するには、Android Studio を Java Runtime Environment (JRE) 6 と共に実行する必要があります。
+その後、Java Development Kit(JDK)6 または JDK 7 を使用するようプロジェクトを構成できます。</p>
+
+
+
+<h3>Linux の場合</h3>
+
+<ul>
+<li>GNOME または KDE デスクトップ</li>
+<li>GNU C Library (glibc) 2.15 以降</li>
+<li>2 GB 以上のシステム メモリ(RAM)、4 GB 以上を推奨</li>
+<li>400 MB の空き容量のあるハードディスク</li>
+<li>Android SDK、エミュレータのシステム イメージ、キャッシュ用には少なくとも 1 GB 以上</li>
+<li>1280 x 800 以上の画面解像度</li>
+<li>Oracle&reg; Java Development Kit (JDK) 7 </li>
+</ul>
+<p>Ubuntu&reg; 14.04、Trusty Tahr(32-bit 版アプリケーションを実行可能な 64-bit 版)でテスト済み。
+</p>
+
+
+
+
+<h2 id="Other" style="clear:left">他のダウンロード オプション</h2>
+
+<!-- alternative SDK options follows -->
diff --git a/docs/html-intl/intl/ja/sdk/installing/adding-packages.jd b/docs/html-intl/intl/ja/sdk/installing/adding-packages.jd
new file mode 100644
index 0000000..af5dcd0
--- /dev/null
+++ b/docs/html-intl/intl/ja/sdk/installing/adding-packages.jd
@@ -0,0 +1,227 @@
+page.title=SDK パッケージの追加
+
+page.tags=sdk manager
+helpoutsWidget=true
+
+@jd:body
+
+<style>
+ol.large {
+  margin-left:0;
+}
+ol.large > li {
+  list-style-position: inside;
+  list-style-type:none;
+  margin:30px 0 0 0;
+  padding:30px 20px;
+  background:#eee;
+}
+ol.large > li:nth-child(odd) {
+}
+ol.large > li:before {
+  display:inline;
+  left:-40px;
+  float:left;
+  width:20px;
+  font-size:20px;
+  line-height:20px;
+}
+ol.large > li > h2 {
+  font-size:20px;
+  line-height:20px;
+  padding:0 0 0 20px;
+  margin:0 0 20px 0;
+  display:inline;
+  font-weight:normal;
+}
+ol.large > li:nth-child(1):before {
+  content:"1. ";
+}
+ol.large > li:nth-child(2):before {
+  content:"2. ";
+}
+ol.large > li:nth-child(3):before {
+  content:"3. ";
+}
+ol.large > li:nth-child(4):before {
+  content:"4. ";
+}
+ol.large > li:nth-child(5):before {
+  content:"5. ";
+}
+ol.large > li:nth-child(6):before {
+  content:"6. ";
+}
+</style>
+
+
+<p>
+Android SDK では、デフォルトの状態で、開発の開始に必要なすべてのものが用意されているわけではありません。
+Android SDK では、ツール、プラットフォーム、その他のコンポーネントがパッケージに分けられており、<a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a> を使って必要に応じてダウンロードできます。
+
+
+そのため、開始前に、Android SDK にいくつかのパッケージを追加する必要があります。</p>
+
+<p>パッケージの追加を開始するには、次のいずれかの方法で Android SDK Manager を起動します。</p>
+<ul>
+  <li>Android Studio で、ツールバーの [<strong>SDK Manager</strong>] <img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:17px" /> をクリックします。
+</li>
+  <li>Android Studio を使用しない場合: 
+    <ul>
+      <li>Windows の場合: Android SDK のルート ディレクトリにある <code>SDK Manager.exe</code> ファイルをダブルクリックします。
+</li>
+      <li>Mac または Linux の場合: ターミナルを開いて Android SDK がインストールされているロケーションの <code>tools/</code> ディレクトリに移動し、<code>android sdk</code> を実行します。
+</li>
+    </ul>
+  </li>
+</ul>
+
+<p>SDK Manager を初めて開く場合、いくつかのパッケージがデフォルトで選択されています。
+この選択はそのままにしますが、開始に必要なすべてのものが揃っているか、次の手順でご確認ください。
+</p>
+
+
+<ol class="large">
+<li>
+  <h2 id="GetTools" class="norule">最新の SDK Tools を入手する</h2>
+
+<img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
+
+  <p>Android SDK をセットアップする場合、少なくとも最新の SDK Tools と Android プラットフォームのダウンロードが必要です。
+</p>
+  <ol>
+   <li>[Tools] ディレクトリを開き、以下のツールを選択します。
+     <ul>
+       <li><strong>Android SDK Tools</strong></li>
+       <li><strong>Android SDK Platform-tools</strong></li>
+       <li><strong>Android SDK Build-tools</strong>(最新バージョンのもの)</li>
+     </ul>
+   </li>
+   <li>1 番上の [Android X.X] フォルダ(最新バージョンのフォルダ)を開き、以下を選択します。
+     <ul>
+      <li><strong>SDK Platform</strong></li>
+      <li>「<strong>ARM EABI v7a System Image</strong>」などのエミュレータ用のシステム イメージ<br>
+</li>
+     </ul>
+   </li>
+  </ol>
+</li>
+
+<li>
+  <h2 id="GetSupportLib" class="norule">追加 API 用のサポート ライブラリを取得する</h2>
+
+  <div class="sidebox">
+    <p>以下を使用するには、サポート ライブラリが必要です。</p>
+    <ul>
+      <li><a href="{@docRoot}wear/index.html">Android Wear</a></li>
+      <li><a href="{@docRoot}tv/index.html">Android TV</a></li>
+      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
+    </ul>
+
+    <p>サポート ライブラリは、以下の人気の API も提供しています。</p>
+    <ul>
+      <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">ナビゲーション ドロワー</a>
+</li>
+      <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">スワイプビュー</a></li>
+      <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">下位互換のアクションバー</a>
+</li>
+    </ul>
+  </div>
+
+  <p><a href="{@docRoot}tools/support-library/features.html">Android サポート ライブラリ</a> は、大部分のバージョンの Android に対応する API の拡張セットを提供しています。
+</p>
+
+  <p>[<strong>Extras</strong>] ディレクトリを開き、以下を選択します。</p>
+     <ul>
+       <li><strong>Android Support Repository</strong></li>
+       <li><strong>Android Support Library</strong></li>
+     </ul>
+
+  <p>&nbsp;</p>
+  <p>&nbsp;</p>
+
+</li>
+
+
+<li>
+  <h2 id="GetGoogle" class="norule">その他の API 用の Google Play サービスを入手する</h2>
+
+  <div class="sidebox">
+
+    <p>Google Play services API は、Android アプリのための次のようなバラエティに富んだ機能やサービスを提供しています。
+</p>
+    <ul>
+      <li><a href="{@docRoot}google/play-services/plus.html">ユーザー認証</a></li>
+      <li><a href="{@docRoot}google/play-services/maps.html">Google マップ</a></li>
+      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
+      <li><a href="{@docRoot}google/play-services/games.html">ゲームの実績とリーダーボード</a>
+</li>
+      <li><a href="{@docRoot}google/play-services/index.html">その他多数の機能</a></li>
+    </ul>
+  </div>
+
+  <p>Google API を利用して開発を行うには、Google Play サービス パッケージが必要です。</p>
+  <p>[<strong>Extras</strong>] ディレクトリを開き、以下を選択します。</p>
+     <ul>
+       <li><strong>Google Repository</strong></li>
+       <li><strong>Google Play サービス</strong></li>
+     </ul>
+
+  <p class="note"><strong>注:</strong> Google Play services API は、Android が搭載されたすべての端末で利用できるわけではありませんが、Google Play ストアを使用するとすべての端末で利用できます。
+これらの API を Android エミュレータで使用するには、SDK Manager の最新の [Android X.X] ディレクトリから <strong>Google API</strong> のシステム イメージもインストールする必要があります。
+
+</p>
+</li>
+
+
+<li>
+  <h2 id="Install" class="norule">パッケージをインストールする</h2>
+  <p>必要なパッケージをすべて選択したら、インストールを続行します。</p>
+  <ol>
+   <li>[<strong>Install X packages</strong>] をクリックします。</li>
+   <li>次のウィンドウで、左側のパッケージ名を 1 つずつダブルクリックし、各パッケージの使用許諾契約に同意します。
+</li>
+   <li>[<strong>Install</strong>] をクリックします。</li>
+  </ol>
+  <p>SDK Manager のウィンドウの 1 番下に、ダウンロードの進捗状況が表示されます。
+  <strong>SDK Manager を終了しないでください</strong>。SDK Manager を終了すると、ダウンロードはキャンセルされます。</p>
+</li>
+
+<li>
+  <h2 id="Build" class="norule">アプリを作成する</h2>
+
+<p>Android SDK にインストールしたパッケージを使用して、アプリを作成できるようになりました。
+新しいツールとその他の API を入手できるようになった場合は、SDK Manager を起動して SDK に新しいパッケージをダウンロードしてください。
+</p>
+
+<p>必要に応じて以下を参考にしてください。</p>
+
+<div class="cols" style="padding:10px 0">
+<div class="col-4">
+<h3>スタートガイド</h3>
+<p>Android 開発が初めての場合は、Android アプリの基本を<strong><a href="{@docRoot}training/basics/firstapp/index.html">初めてのアプリ作成</a></strong>に関するガイドに従って学習してください。
+</p>
+
+</div>
+<div class="col-4 box">
+<h3>ウェアラブル端末向けにアプリを作成する</h3>
+<p>Android ウェアラブル端末向けにアプリを開発するには、「<strong><a href="{@docRoot}wear/preview/start.html">Android Wear アプリの作成</a></strong>」のガイドをご覧ください。
+</p>
+
+</div>
+<div class="col-4 box">
+<h3>Google API を使用する</h3>
+<p>マップや Play ゲーム サービスなどの Google API の使用を開始するには、「<strong><a href="{@docRoot}google/play-services/setup.html">Setting Up Google Play Services</a></strong>」のガイドをご覧ください。
+
+
+</p>
+
+</div>
+</div><!-- end cols -->
+
+
+</li>
+
+</ol>
+
+
diff --git a/docs/html-intl/intl/ja/training/material/animations.jd b/docs/html-intl/intl/ja/training/material/animations.jd
new file mode 100644
index 0000000..460147c
--- /dev/null
+++ b/docs/html-intl/intl/ja/training/material/animations.jd
@@ -0,0 +1,550 @@
+page.title=カスタム アニメーションの定義
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>このレッスンでの学習内容</h2>
+<ol>
+  <li><a href="#Touch">タッチ フィードバックをカスタマイズする</a></li>
+  <li><a href="#Reveal">出現エフェクトを使用する</a></li>
+  <li><a href="#Transitions">アクティビティ遷移をカスタマイズする</a></li>
+  <li><a href="#ViewState">ビューの状態遷移にアニメーションを付ける</a></li>
+  <li><a href="#AnimVector">ベクター型ドローアブルにアニメーションを付ける</a></li>
+</ol>
+<h2>関連ドキュメント</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">マテリアル デザインの仕様</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android でのマテリアル デザイン</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>マテリアル デザインのアニメーションは、ユーザーの操作に応じて反応し、アプリの操作にともない連続した動きを見せます。
+マテリアル テーマでは、ボタンやアクティビティの遷移にデフォルトのアニメーションが用意されており、Android 5.0(API レベル 21)以降では次のようなアニメーションをカスタマイズして新しいアニメーションを作成できます。
+
+</p>
+
+<ul>
+<li>タッチ フィードバック</li>
+<li>円形状の出現</li>
+<li>アクティビティ遷移</li>
+<li>曲線モーション</li>
+<li>ビューの状態遷移</li>
+</ul>
+
+
+<h2 id="Touch">タッチ フィードバックをカスタマイズする</h2>
+
+<p>マテリアル デザインのタッチ フィードバックは、ユーザーが UI 要素に触れて操作した時点で、視覚的な反応を瞬時に表します。
+ボタンに対するデフォルトのタッチ フィードバック アニメーションでは、新しい {@link android.graphics.drawable.RippleDrawable} クラスを使用して、状態の切り替わりをリップル(波紋)効果で表現しています。
+
+</p>
+
+<p>ほとんどの場合、次のようにビューの背景を指定することでビュー XML にこの機能を適用できます。
+</p>
+
+<ul>
+<li>範囲が限定された波紋: <code>?android:attr/selectableItemBackground</code>。</li>
+<li>ビューの範囲外まで広がる波紋: <code>?android:attr/selectableItemBackgroundBorderless</code>。
+これは、背景が null ではない最も近くにある親ビュー上に表示されますが、その外側にはみ出ることはありません。
+</li>
+</ul>
+
+<p class="note"><strong>注:</strong> <code>selectableItemBackgroundBorderless</code> は API レベル 21 で導入された新しい属性です。
+</p>
+
+
+<p>または、<code>ripple</code> 要素を使って {@link android.graphics.drawable.RippleDrawable}
+を XML リソースとしても定義できます。</p>
+
+<p>{@link android.graphics.drawable.RippleDrawable} オブジェクトには、色を割り当てることができます。タッチ フィードバックのデフォルトの色を変更するには、テーマの <code>android:colorControlHighlight</code>
+属性を使用します。
+</p>
+
+<p>詳細については、API リファレンスの {@link
+android.graphics.drawable.RippleDrawable} クラスをご覧ください。</p>
+
+
+<h2 id="Reveal">出現エフェクトを使用する</h2>
+
+<p>Reveal(出現)アニメーションを使用すると、UI 要素のグループを表示したり非表示にしたりするときに連続した印象をユーザーに与えます。
+{@link android.view.ViewAnimationUtils#createCircularReveal
+ViewAnimationUtils.createCircularReveal()} メソッドでは、ビューを表示したり非表示にしたりする際に円形のアニメーションを付けることができます。
+</p>
+
+<p>この効果を使って、非表示のビューを表示するには:</p>
+
+<pre>
+// previously invisible view
+View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the final radius for the clipping circle
+int finalRadius = Math.max(myView.getWidth(), myView.getHeight());
+
+// create the animator for this view (the start radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);
+
+// make the view visible and start the animation
+myView.setVisibility(View.VISIBLE);
+anim.start();
+</pre>
+
+<p>この効果を使って、表示されているビューを非表示にするには: </p>
+
+<pre>
+// previously visible view
+final View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the initial radius for the clipping circle
+int initialRadius = myView.getWidth();
+
+// create the animation (the final radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0);
+
+// make the view invisible when the animation is done
+anim.addListener(new AnimatorListenerAdapter() {
+    &#64;Override
+    public void onAnimationEnd(Animator animation) {
+        super.onAnimationEnd(animation);
+        myView.setVisibility(View.INVISIBLE);
+    }
+});
+
+// start the animation
+anim.start();
+</pre>
+
+
+<h2 id="Transitions">アクティビティ遷移をカスタマイズする</h2>
+
+<!-- shared transition video -->
+<div style="width:290px;margin-left:35px;float:right">
+  <div class="framed-nexus5-port-span-5">
+  <video class="play-on-hover" autoplay="">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.mp4">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.webm">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.ogv">
+  </video>
+  </div>
+  <div style="font-size:10pt;margin-left:20px;margin-bottom:30px">
+    <p class="img-caption" style="margin-top:3px;margin-bottom:10px"><strong>図 1</strong> - 共有要素を使った画面遷移。
+</p>
+    <em>端末の画像をクリックすると動画を再生できます</em>
+  </div>
+</div>
+
+<p>マテリアル デザイン アプリの Activity transitions (アクティビティ遷移)では、共通する要素の間での動作や変化を通じて、状態の切り替えに視覚的なつながりを持たせます。
+Enter と Exit の遷移や、アクティビティ間での Shared elements 遷移にカスタム アニメーションを指定できます。
+</p>
+
+<ul>
+<li><strong>Enter</strong>(入口)遷移は、アクティビティのビューがどのように画面に入ってくるかを決定します。
+たとえば <em>Explode</em> の Enter 遷移の場合、ビューが画面外から画面の中心に向かって飛び込むように現れます。
+</li>
+
+<li><strong>Exit</strong> 遷移は、アクティビティのビューがどのように画面から出ていくかを決定します。同じく <em>Explode</em> の Exit 遷移の場合、画面の中心から外側に向かってビューが出ていきます。
+
+</li>
+
+<li><strong>Shared Elements</strong> 遷移は、2 つのアクティビティで共有されているビューが、各アクティビティの間でどのように遷移するかを決定します。
+たとえば、2 つのアクティビティで同じ画像を異なる位置とサイズで使用している場合、<em>changeImageTransform</em> 共有要素の遷移によって、2 つのアクティビティの間でスムーズに画像が変換されスケーリングされます。
+
+</li>
+</ul>
+
+<p>Android 5.0(API レベル 21)では、次の Enter 遷移と Exit 遷移がサポートされています。</p>
+
+<ul>
+<li><em>explode</em> (爆発状) - ビューをシーン中心から外側へ移動したり外側から中心へ移動したりします。</li>
+<li><em>slide</em> (スライド) - ビューをシーンの端から移動したり端へ移動したりします。</li>
+<li><em>fade</em> (フェード) - 不透明度を変化させながらビューをシーンに追加したりシーンから削除したりします。</li>
+</ul>
+
+<p>{@link android.transition.Visibility} クラスを拡張する Transition はすべて、EnterTransition または ExitTransition としてサポートされます。
+詳細については、API リファレンスの 
+{@link android.transition.Transition} クラスをご覧ください。</p>
+
+<p>Android 5.0(API レベル 21)では、次の共有要素遷移もサポートしています。</p>
+
+<ul>
+<li><em>changeBounds</em> - 対象ビューのレイアウト範囲での変化にアニメーションを付けます。</li>
+<li><em>changeClipBounds</em> - 対象ビューのクリップ範囲での変化にアニメーションを付けます。</li>
+<li><em>changeTransform</em> - 対象ビューのスケールや向きの変化にアニメーションを付けます。</li>
+<li><em>changeImageTransform</em> - 対象画像のサイズやスケールの変化にアニメーションを付けます。</li>
+</ul>
+
+<p>アプリにアクティビティ遷移を適用すると、アクティビティの開始と終了の間でデフォルトのクロス フェーディング遷移が有効になります。
+</p>
+
+<img src="{@docRoot}training/material/images/SceneTransition.png" alt="" width="600" height="405" style="margin-top:20px" />
+<p class="img-caption">
+  <strong>図 2</strong> - 1 つの共有要素とシーンの遷移。
+</p>
+
+<h3>カスタム遷移を指定する</h3>
+
+<p>まず、マテリアル テーマから継承したスタイルを定義するときに、<code>android:windowContentTransitions</code>
+ 属性で windowContentTransitions を有効にします。また、次のように Enter、Exit、Shared Element の Transitions をスタイルの定義で指定できます。
+</p>
+
+<pre>
+&lt;style name="BaseAppTheme" parent="android:Theme.Material">
+  &lt;!-- enable window content transitions -->
+  &lt;item name="android:windowContentTransitions">true&lt;/item>
+
+  &lt;!-- specify enter and exit transitions -->
+  &lt;item name="android:windowEnterTransition">@transition/explode&lt;/item>
+  &lt;item name="android:windowExitTransition">@transition/explode&lt;/item>
+
+  &lt;!-- specify shared element transitions -->
+  &lt;item name="android:windowSharedElementEnterTransition">
+    &#64;transition/change_image_transform&lt;/item>
+  &lt;item name="android:windowSharedElementExitTransition">
+    &#64;transition/change_image_transform&lt;/item>
+&lt;/style>
+</pre>
+
+<p>この例の <code>change_image_transform</code> 遷移は、次のように定義されています。</p>
+
+<pre>
+&lt;!-- res/transition/change_image_transform.xml -->
+&lt;!-- (see also Shared Transitions below) -->
+&lt;transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;changeImageTransform/>
+&lt;/transitionSet>
+</pre>
+
+<p><code>changeImageTransform</code> 要素は 
+{@link android.transition.ChangeImageTransform} クラスに対応します。詳細については、API リファレンスの {@link android.transition.Transition} をご覧ください。
+</p>
+
+<p>代わりに、コードで windowContentTransitions を有効にするには、
+{@link android.view.Window#requestFeature Window.requestFeature()} メソッドを呼び出します。</p>
+
+<pre>
+// inside your activity (if you did not enable transitions in your theme)
+getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+
+// set an exit transition
+getWindow().setExitTransition(new Explode());
+</pre>
+
+<p>コードで遷移を指定するには、{@link
+android.transition.Transition} オブジェクトで次のメソッドを呼び出します。</p>
+
+<ul>
+  <li>{@link android.view.Window#setEnterTransition Window.setEnterTransition()}</li>
+  <li>{@link android.view.Window#setExitTransition Window.setExitTransition()}</li>
+  <li>{@link android.view.Window#setSharedElementEnterTransition
+      Window.setSharedElementEnterTransition()}</li>
+  <li>{@link android.view.Window#setSharedElementExitTransition
+      Window.setSharedElementExitTransition()}</li>
+</ul>
+
+<p>{@link android.view.Window#setExitTransition setExitTransition()} と {@link
+android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} メソッドは、呼び出し元のアクティビティの ExitTransition を定義します。
+{@link android.view.Window#setEnterTransition
+setEnterTransition()} と {@link android.view.Window#setSharedElementEnterTransition
+setSharedElementEnterTransition()} メソッドは、呼び出し先のアクティビティの EnterTransition を定義します。</p>
+
+<p>遷移の効果を完全に表すには、呼び出し元と呼び出し先のアクティビティ双方で windowContentTransitions を有効にする必要があります。
+有効にしていないと、呼び出し元のアクティビティが Exit 遷移を開始したあと、window 遷移(スケールやフェードなど)が起きます。
+</p>
+
+<p>Enter 遷移をできるだけ早く開始するには、呼び出し先のアクティビティで 
+{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}
+ メソッドを使用します。これにより、さらに印象的な Enter 遷移になります。</p>
+
+<h3>遷移を使ってアクティビティを開始する</h3>
+
+<p>遷移を有効にしてアクティビティで ExitTransition を設定した場合、次のように別のアクティビティを開始したときに Exit 遷移がアクティベートされます。
+</p>
+
+<pre>
+startActivity(intent,
+              ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
+</pre>
+
+<p>2 つ目のアクティビティに EnterTransition を設定している場合は、そのアクティビティの開始時に Enter 遷移も発生します。
+別のアクティビティ開始時の遷移を無効にするには、<code>null</code> のオプション バンドルを付与します。
+</p>
+
+<h3>共有要素を使ってアクティビティを開始する</h3>
+
+<p>共有要素を持つ 2 つのアクティビティの間で画面遷移のアニメーションを作成するには: </p>
+
+<ol>
+<li>テーマで windowContentTransitions を有効にします。</li>
+<li>スタイルで SharedElementsTransition を指定します。</li>
+<li>遷移を XML リソースとして定義します。</li>
+<li>
+<code>android:transitionName</code> 属性を用いて、双方のレイアウトで共有要素に同じ名前を割り当てます。</li>
+<li>{@link android.app.ActivityOptions#makeSceneTransitionAnimation
+ActivityOptions.makeSceneTransitionAnimation()} メソッドを使用します。</li>
+</ol>
+
+<pre>
+// get the element that receives the click event
+final View imgContainerView = findViewById(R.id.img_container);
+
+// get the common element for the transition in this activity
+final View androidRobotView = findViewById(R.id.image_small);
+
+// define a click listener
+imgContainerView.setOnClickListener(new View.OnClickListener() {
+    &#64;Override
+    public void onClick(View view) {
+        Intent intent = new Intent(this, Activity2.class);
+        // create the transition animation - the images in the layouts
+        // of both activities are defined with android:transitionName="robot"
+        ActivityOptions options = ActivityOptions
+            .makeSceneTransitionAnimation(this, androidRobotView, "robot");
+        // start the new activity
+        startActivity(intent, options.toBundle());
+    }
+});
+</pre>
+
+<p>コードで生成した共有の動的ビューでは、
+{@link android.view.View#setTransitionName View.setTransitionName()} メソッドを使用して両方のアクティビティに共通の要素名を指定します。
+</p>
+
+<p>2 つ目のアクティビティが終了したときにシーンの切り替えアニメーションを逆回転させるには、{@link android.app.Activity#finish Activity.finish()} の代わりに 
+{@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()}
+ メソッドを呼び出します。</p>
+
+<h3>複数の共有要素を使ってアクティビティを開始する</h3>
+
+<p>複数の共有要素を持つ 2 つのアクティビティの間にシーンの切り替えアニメーションを付けるには、双方のレイアウトで <code>android:transitionName</code>
+属性を使用(または双方のアクティビティで {@link android.view.View#setTransitionName View.setTransitionName()} メソッドを使用)して共有要素を定義して、次のように {@link android.app.ActivityOptions} オブジェクトを作成します。
+
+</p>
+
+<pre>
+ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
+        Pair.create(view1, "agreedName1"),
+        Pair.create(view2, "agreedName2"));
+</pre>
+
+
+<h2 id="CurvedMotion">曲線モーションを使用する</h2>
+
+<p>マテリアル デザインのアニメーションは、時間的な間を補ったり立体的な動作パターンを表現するために曲線を多く用いています。
+Android 5.0(API レベル 21)以降では、カスタムのタイミングで描かれる曲線や曲線モーションのパターンをアニメーションで定義できます。
+</p>
+
+<p>{@link android.view.animation.PathInterpolator} クラスはベジェ曲線や {@link android.graphics.Path} オブジェクトに基づく新しい Interpolator(補間)です。
+この Interpolator は 1x1 の正方形に動作曲線を指定します。アンカー ポイントは(0,0)と(1,1)、制御点はコンストラクタ引数を使用して指定します。
+
+または、PathInterpolator を XML リソースとしても定義できます。</p>
+
+<pre>
+&lt;pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:controlX1="0.4"
+    android:controlY1="0"
+    android:controlX2="1"
+    android:controlY2="1"/>
+</pre>
+
+<p>マテリアル デザインの仕様では、次の 3 つの基本的な曲線を XML リソースとして提供しています。
+</p>
+
+<ul>
+  <li><code>&#64;interpolator/fast_out_linear_in.xml</code></li>
+  <li><code>&#64;interpolator/fast_out_slow_in.xml</code></li>
+  <li><code>&#64;interpolator/linear_out_slow_in.xml</code></li>
+</ul>
+
+<p>{@link android.view.animation.PathInterpolator} オブジェクトは {@link
+android.animation.Animator#setInterpolator Animator.setInterpolator()} メソッドに渡すことができます。</p>
+
+<p>{@link android.animation.ObjectAnimator} クラスには新しいコンストラクタがあり、一度に 2 つ以上のプロパティを使用して経路に沿ったアニメーションを作ることができます。
+たとえば、次の animator では {@link android.graphics.Path} オブジェクトを使ってビューの X と Y プロパティを指定しています。
+</p>
+
+<pre>
+ObjectAnimator mAnimator;
+mAnimator = ObjectAnimator.ofFloat(view, View.X, View.Y, path);
+...
+mAnimator.start();
+</pre>
+
+
+<h2 id="ViewState">ビューの状態遷移にアニメーションを付ける</h2>
+
+<p>{@link android.animation.StateListAnimator} クラスを使って、ビューの状態が変化したときに実行されるアニメーションを定義できます。
+次の例は、{@link
+android.animation.StateListAnimator} を XML リソースとして定義する方法を示しています。</p>
+
+<pre>
+&lt;!-- animate the translationZ property of a view when pressed -->
+&lt;selector xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;item android:state_pressed="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="@android:integer/config_shortAnimTime"
+        android:valueTo="2dp"
+        android:valueType="floatType"/>
+        &lt;!-- you could have other objectAnimator elements
+             here for "x" and "y", or other properties -->
+    &lt;/set>
+  &lt;/item>
+  &lt;item android:state_enabled="true"
+    android:state_pressed="false"
+    android:state_focused="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="100"
+        android:valueTo="0"
+        android:valueType="floatType"/>
+    &lt;/set>
+  &lt;/item>
+&lt;/selector>
+</pre>
+
+<p>ビューの状態についてのカスタム アニメーションをビューに付与するには、この例のように XML リソース ファイルの
+<code>selector</code> 要素を使用して animator を定義し、それを <code>android:stateListAnimator</code> 属性でビューに割り当てます。
+コードで StateListAnimator をビューに割り当てるには、{@link android.animation.AnimatorInflater#loadStateListAnimator
+AnimationInflater.loadStateListAnimator()} メソッドを使用して
+{@link android.view.View#setStateListAnimator View.setStateListAnimator()} メソッドでビューに animator を割り当てます。
+</p>
+
+<p>テーマがマテリアル テーマに拡張されると、ボタンにはデフォルトで Z アニメーションが設定されます。これを避けるためには、<code>android:stateListAnimator</code> 属性を
+<code>@null</code> に設定します。
+</p>
+
+<p>{@link android.graphics.drawable.AnimatedStateListDrawable} クラスを使用すると、関連するビューの状態遷移にアニメーションを表示するドローアブルを作成できます。
+Android 5.0 の一部のシステム ウィジェットでは、デフォルトでこれらのアニメーションを使用しています。
+次の例は、{@link android.graphics.drawable.AnimatedStateListDrawable} を XML リソースとして定義する方法を示しています。
+</p>
+
+<pre>
+&lt;!-- res/drawable/myanimstatedrawable.xml -->
+&lt;animated-selector
+    xmlns:android="http://schemas.android.com/apk/res/android">
+
+    &lt;!-- provide a different drawable for each state-->
+    &lt;item android:id="@+id/pressed" android:drawable="@drawable/drawableP"
+        android:state_pressed="true"/>
+    &lt;item android:id="@+id/focused" android:drawable="@drawable/drawableF"
+        android:state_focused="true"/>
+    &lt;item android:id="@id/default"
+        android:drawable="@drawable/drawableD"/>
+
+    &lt;!-- specify a transition -->
+    &lt;transition android:fromId="@+id/default" android:toId="@+id/pressed">
+        &lt;animation-list>
+            &lt;item android:duration="15" android:drawable="@drawable/dt1"/>
+            &lt;item android:duration="15" android:drawable="@drawable/dt2"/>
+            ...
+        &lt;/animation-list>
+    &lt;/transition>
+    ...
+&lt;/animated-selector>
+</pre>
+
+
+<h2 id="AnimVector">ベクター型ドローアブルにアニメーションを付ける</h2>
+
+<p><a href="{@docRoot}training/material/drawables.html#VectorDrawables">ベクター型ドローアブル</a>は定義を失わずにスケールできます。
+{@link android.graphics.drawable.AnimatedVectorDrawable}
+クラスを使うと、ベクター型ドローアブルのプロパティを指定してアニメーションを付けられます。</p>
+
+<p>通常は、次に示す 3 つの XML ファイルで AnimatedVectorDrawable を定義します。</p>
+
+<ul>
+<li><code>res/drawable/</code> の
+<code>&lt;vector&gt;</code> 要素を持つ vectordrawable の xml ファイル</li>
+<li><code>res/drawable/</code> の
+<code>&lt;animated-vector&gt;</code> 要素を持つ AnimatedVectorDrawable の xml ファイル</li>
+<li><code>res/anim/</code> の
+<code>&lt;objectAnimator&gt;</code> 要素を持つ 1 つ以上の ObjectAnimator の xml ファイル</li>
+</ul>
+
+<p>AnimatedVectorDrawable では、<code>&lt;group&gt;</code> 要素と
+<code>&lt;path&gt;</code> 要素の属性にアニメーションを付けることができます。<code>&lt;group&gt;</code> 要素は一連の経路やサブグループを定義し、<code>&lt;path&gt;</code> 要素は描く経路を定義します。
+</p>
+
+<p>アニメーションを付けたいベクター型ドローアブルを定義するときは、<code>android:name</code>
+属性を使用してグループや経路に一意の名前を割り当てれば animator の定義からそれらを参照できるようになります。
+以下に例を示します。</p>
+
+<pre>
+&lt;!-- res/drawable/vectordrawable.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="64dp"
+    android:width="64dp"
+    android:viewportHeight="600"
+    android:viewportWidth="600">
+    &lt;group
+        <strong>android:name="rotationGroup"</strong>
+        android:pivotX="300.0"
+        android:pivotY="300.0"
+        android:rotation="45.0" >
+        &lt;path
+            <strong>android:name="v"</strong>
+            android:fillColor="#000000"
+            android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
+    &lt;/group>
+&lt;/vector>
+</pre>
+
+<p>AnimatedVectorDrawable の定義では、次のようにベクター型ドローアブルのグループや経路をその名前で参照します。
+</p>
+
+<pre>
+&lt;!-- res/drawable/animvectordrawable.xml -->
+&lt;animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+  android:drawable="@drawable/vectordrawable" >
+    &lt;target
+        android:name="rotationGroup"
+        android:animation="@anim/rotation" />
+    &lt;target
+        android:name="v"
+        android:animation="@anim/path_morph" />
+&lt;/animated-vector>
+</pre>
+
+<p>アニメーションの定義は {@link android.animation.ObjectAnimator} オブジェクトか {@link
+android.animation.AnimatorSet} オブジェクトを示します。この例の最初の animator は、次のように対象グループを 360 度回転させています。
+</p>
+
+<pre>
+&lt;!-- res/anim/rotation.xml -->
+&lt;objectAnimator
+    android:duration="6000"
+    android:propertyName="rotation"
+    android:valueFrom="0"
+    android:valueTo="360" />
+</pre>
+
+<p>この例の 2 つ目の animator は、ベクター型ドローアブルの経路をある形から別の形へと変化させています。
+両方の経路が形の変化に対応できる必要があります。つまり同じ数のコマンドと、各コマンドで同じ数のパラメーターを保持している必要があります。
+</p>
+
+<pre>
+&lt;!-- res/anim/path_morph.xml -->
+&lt;set xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;objectAnimator
+        android:duration="3000"
+        android:propertyName="pathData"
+        android:valueFrom="M300,70 l 0,-70 70,70 0,0   -70,70z"
+        android:valueTo="M300,70 l 0,-70 70,0  0,140 -70,0 z"
+        android:valueType="pathType" />
+&lt;/set>
+</pre>
+
+<p>詳細については、API リファレンスの {@link
+android.graphics.drawable.AnimatedVectorDrawable} をご覧ください。</p>
diff --git a/docs/html-intl/intl/ja/training/material/compatibility.jd b/docs/html-intl/intl/ja/training/material/compatibility.jd
new file mode 100644
index 0000000..0f8922f
--- /dev/null
+++ b/docs/html-intl/intl/ja/training/material/compatibility.jd
@@ -0,0 +1,168 @@
+page.title=互換性の維持
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>このレッスンでの学習内容</h2>
+<ol>
+  <li><a href="#Theme">別のスタイルを定義する</a></li>
+  <li><a href="#Layouts">別のレイアウトを提供する</a></li>
+  <li><a href="#SupportLib">サポート ライブラリを使用する</a></li>
+  <li><a href="#CheckVersion">システム バージョンを確認する</a></li>
+</ol>
+<h2>関連ドキュメント</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">マテリアル デザインの仕様</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android でのマテリアル デザイン</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>マテリアル テーマやカスタムのアクティビティ遷移など、マテリアル デザインの一部の機能は Android5.0(API レベル21)以降のみで利用できます。
+ただし、マテリアル デザインをサポートし、以前のバージョンの Android を実行している端末と互換性がある端末でこれらの機能が実行されている場合は、機能を使用できるようにアプリを設計することが可能です。
+
+</p>
+
+
+<h2 id="Theme">別のスタイルを定義する</h2>
+
+<p>マテリアル テーマをサポートしている端末ではマテリアル テーマを使用するようにアプリを構成できますが、同時に次のようにして以前のバージョンの Android を実行する端末向けに以前のテーマに戻すことができます。
+</p>
+
+<ol>
+<li>
+<code>res/values/styles.xml</code> で、以前のテーマ(Holo など)から継承するテーマを定義します。</li>
+<li>
+<code>res/values-v21/styles.xml</code> で、マテリアル テーマから継承するテーマを上記と同じ名前で定義します。</li>
+<li>マニフェスト ファイルでこのテーマをアプリのテーマとして設定します。</li>
+</ol>
+
+<p class="note"><strong>注:</strong> この方法で別のテーマを用意せずマテリアル テーマだけを使う場合、そのアプリは 5.0 よりも前のバージョンの Android では実行できません。
+
+
+</p>
+
+
+<h2 id="Layouts">別のレイアウトを提供する</h2>
+
+<p>マテリアル デザインのガイドラインに沿って設計したレイアウトでも、Android 5.0(API レベル 21)で導入された新しい XML 属性を一切使用していない場合は、以前のバージョンの Android でも問題なく表示されます。
+
+新しい XML 属性を使用している場合は、別のレイアウトを用意できます。以前のバージョンの Android でアプリが表示される方法をカスタマイズする目的で別のレイアウトを用意することも可能です。
+</p>
+
+<p>Android 5.0(API レベル 21)向けのレイアウト ファイルを <code>res/layout-v21/</code> に作成し、以前のバージョンの Android 向けの別のレイアウト ファイルを
+<code>res/layout/</code> に作成します。
+たとえば、<code>res/layout/my_activity.xml</code> は <code>res/layout-v21/my_activity.xml</code> の代替レイアウトになります。
+</p>
+
+<p>コードの重複を避けるには、<code>res/values/</code> でスタイルを定義して <code>res/values-v21/</code> で新しい API 用にスタイルを修正します。それからスタイル継承を用いて、基本スタイルを <code>res/values/</code> で定義して、そのスタイルを <code>res/values-v21/</code> で継承します。
+
+</p>
+
+
+<h2 id="SupportLib">サポート ライブラリを使用する</h2>
+
+<p><a href="{@docRoot}tools/support-library/features.html#v7">v7 サポート ライブラリ</a> r21 以降には、次のマテリアル デザイン機能が含まれています。
+</p>
+
+<ul>
+<li><code>Theme.AppCompat</code> テーマのいずれかを適用した場合の、システム ウィジェット用の<a href="{@docRoot}training/material/theme.html">マテリアル デザインのスタイル</a>。
+</li>
+<li><code>Theme.AppCompat</code> テーマの<a href="{@docRoot}training/material/theme.html#ColorPalette">カラーパレット テーマ属性</a>。
+</li>
+<li><a href="{@docRoot}training/material/lists-cards.html#RecyclerView">データ コレクションを表示する</a> {@link android.support.v7.widget.RecyclerView} ウィジェット。
+</li>
+<li><a href="{@docRoot}training/material/lists-cards.html#CardView">カードを作成する</a> {@link android.support.v7.widget.CardView} ウィジェット。</li>
+<li><a href="{@docRoot}training/material/drawables.html#ColorExtract">画像から代表色を抽出する</a> {@link android.support.v7.graphics.Palette} クラス。
+</li>
+</ul>
+
+<h3>システム ウィジェット</h3>
+
+<p><code>Theme.AppCompat</code> テーマでは、次のウィジェット向けにマテリアル デザインのスタイルが提供されています。</p>
+
+<ul>
+  <li>{@link android.widget.EditText}</li>
+  <li>{@link android.widget.Spinner}</li>
+  <li>{@link android.widget.CheckBox}</li>
+  <li>{@link android.widget.RadioButton}</li>
+  <li>{@link android.support.v7.widget.SwitchCompat}</li>
+  <li>{@link android.widget.CheckedTextView}</li>
+</ul>
+
+<h3>カラーパレット</h3>
+
+<p>Android v7 サポート ライブラリでマテリアル デザインのスタイルを入手し、カラーパレットをカスタマイズするには、次のように <code>Theme.AppCompat</code> テーマのいずれかを適用します。
+</p>
+
+<pre>
+&lt;!-- extend one of the Theme.AppCompat themes -->
+&lt;style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
+    &lt;!-- customize the color palette -->
+    &lt;item name="colorPrimary">@color/material_blue_500&lt;/item>
+    &lt;item name="colorPrimaryDark">@color/material_blue_700&lt;/item>
+    &lt;item name="colorAccent">@color/material_green_A200&lt;/item>
+&lt;/style>
+</pre>
+
+<h3>リストとカード</h3>
+
+<p>{@link android.support.v7.widget.RecyclerView} ウィジェットや {@link
+android.support.v7.widget.CardView} ウィジェットは Android v7 サポート ライブラリを通じて以前のバージョンの Android でも使用できますが、次のような制限があります。
+</p>
+<ul>
+<li>{@link android.support.v7.widget.CardView} は、付加的なパディングを使い、プログラムでシャドウを実装するものになります。
+</li>
+<li>{@link android.support.v7.widget.CardView} によって、丸い角と交差する子ビューがクリップされることはありません。
+</li>
+</ul>
+
+
+<h3>依存関係</h3>
+
+<p>5.0(API レベル 21)より前のバージョンの Android でこれらの機能を使用するには、Android v7 サポート ライブラリを <a href="{@docRoot}/sdk/installing/studio-build.html#dependencies">Gradle 依存関係</a>としてプロジェクトに含めます。
+</p>
+
+<pre>
+dependencies {
+    compile 'com.android.support:appcompat-v7:21.0.+'
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
+
+
+<h2 id="CheckVersion">システム バージョンを確認する</h2>
+
+<p>次の機能は、Android 5.0(API レベル 21)以降でのみ使用できます。</p>
+
+<ul>
+<li>アクティビティ遷移</li>
+<li>タッチ フィードバック</li>
+<li>出現アニメーション</li>
+<li>経路ベースのアニメーション</li>
+<li>ベクター型ドローアブル</li>
+<li>ドローアブルによる着色</li>
+</ul>
+
+<p>以前のバージョンの Android との互換性を維持するには、上記の機能に対する API を起動する前に、システム {@link
+android.os.Build.VERSION#SDK_INT version} を実行時に確認します。
+</p>
+
+<pre>
+// Check if we're running on Android 5.0 or higher
+if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+    // Call some material design APIs here
+} else {
+    // Implement this feature without material design
+}
+</pre>
+
+<p class="note"><strong>注: </strong>アプリがサポートする Android のバージョンを指定するには、マニフェスト ファイルで <code>android:minSdkVersion</code> 属性と <code>android:targetSdkVersion</code>
+属性を使用します。
+Android 5.0 でマテリアル デザインの機能を使用するには、<code>android:targetSdkVersion</code> 属性を <code>21</code> に設定します。
+詳細については、<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt; API ガイド</a>をご覧ください。
+
+</p>
diff --git a/docs/html-intl/intl/ja/training/material/drawables.jd b/docs/html-intl/intl/ja/training/material/drawables.jd
new file mode 100644
index 0000000..adb7279
--- /dev/null
+++ b/docs/html-intl/intl/ja/training/material/drawables.jd
@@ -0,0 +1,126 @@
+page.title=ドローアブルの使用
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>このレッスンでの学習内容</h2>
+<ol>
+  <li><a href="#DrawableTint">ドローアブル リソースに色を付ける</a></li>
+  <li><a href="#ColorExtract">画像から代表色を抽出する</a></li>
+  <li><a href="#VectorDrawables">ベクター型ドローアブルを作成する</a></li>
+</ol>
+<h2>関連ドキュメント</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">マテリアル デザインの仕様</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android でのマテリアル デザイン</a></li>
+</ul>
+</div>
+</div>
+
+<p>アプリにマテリアル デザインを実装する際は、Drawable (ドローアブル)の次の機能を活用できます。</p>
+
+<ul>
+<li>ドローアブルによる着色</li>
+<li>代表色の抽出</li>
+<li>ベクター型ドローアブル</li>
+</ul>
+
+<p>このレッスンでは、アプリでのこれらの機能を使用する方法について説明します。</p>
+
+
+<h2 id="DrawableTint">ドローアブル リソースに色を付ける</h2>
+
+<p>Android 5.0(API レベル 21)以降では、アルファ マスクとして定義されたビットマップや 9-patch に色を付けることができます。
+着色には、カラーリソースまたはカラーリソースに変換されるテーマ属性を使用できます(<code>?android:attr/colorPrimary</code> など)。
+通常は、これらのアセットを一度作成するだけで、テーマに合うように自動的に着色されます。
+</p>
+
+<p>{@code setTint()} メソッドを使用して {@link android.graphics.drawable.BitmapDrawable} オブジェクトか {@link
+android.graphics.drawable.NinePatchDrawable} オブジェクトに色を適用できます。また、<code>android:tint</code> 属性や
+<code>android:tintMode</code> 属性を使ってレイアウトで色やモードを設定できます。
+</p>
+
+
+<h2 id="ColorExtract">画像から代表色を抽出する</h2>
+
+<p>Android サポート ライブラリ r21 以降には、画像から代表色を抽出できる {@link
+android.support.v7.graphics.Palette} クラスが含まれています。
+</p>
+
+<ul>
+<li>Vibrant (鮮やか)</li>
+<li>Vibrant dark (鮮やかな暗色)</li>
+<li>Vibrant light (鮮やかな明色)</li>
+<li>Muted (控えめ)</li>
+<li>Muted dark (控えめな暗色)</li>
+<li>Muted light (控えめな明色)</li>
+</ul>
+
+<p>これらの色を抽出するには、画像を読み込むバックグラウンド スレッドで {@link android.graphics.Bitmap} オブジェクトを
+{@link android.support.v7.graphics.Palette#generate Palette.generate()} の静的メソッドに渡します。
+スレッドを使用できない場合は、代わりに
+{@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} メソッドを呼び出してリスナーを提供します。
+</p>
+
+<p>
+<code>Palette</code> クラスで、<code>Palette.getVibrantColor</code> などの getter メソッドを使って画像から代表色を取得できます。</p>
+
+<p>プロジェクトで {@link android.support.v7.graphics.Palette} クラスを使用するには、アプリのモジュールに次の
+<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">Gradle 依存関係</a>を追加します。
+</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:palette-v7:21.0.0'
+}
+</pre>
+
+<p>詳細については、API リファレンスの {@link android.support.v7.graphics.Palette} クラスをご覧ください。
+</p>
+
+
+<h2 id="VectorDrawables">ベクター型ドローアブルを作成する</h2>
+
+<!-- video box -->
+<a class="notice-developers-video" href="https://www.youtube.com/watch?v=wlFVIIstKmA" style="margin-top:18px">
+<div>
+    <h3>ビデオ</h3>
+    <p>Android ベクター グラフィック</p>
+</div>
+</a>
+
+<p>Android 5.0(API レベル 21)以降では、ベクター型ドローアブルを定義できます。このドローアブルは定義を失わずに拡張できます。
+ビットマップ画像では画面密度ごとにアセット ファイルが必要ですが、ベクター画像で必要なアセット ファイルは 1 つのみです。
+ベクター画像を作成するには、<code>&lt;vector&gt;</code> XML 要素で図形の詳細を定義します。
+</p>
+
+<p>次の例では、ハート型のベクター画像を定義しています。</p>
+
+<pre>
+&lt;!-- res/drawable/heart.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    &lt;!-- intrinsic size of the drawable -->
+    android:height="256dp"
+    android:width="256dp"
+    &lt;!-- size of the virtual canvas -->
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+
+  &lt;!-- draw a path -->
+  &lt;path android:fillColor="#8fff"
+      android:pathData="M20.5,9.5
+                        c-1.955,0,-3.83,1.268,-4.5,3
+                        c-0.67,-1.732,-2.547,-3,-4.5,-3
+                        C8.957,9.5,7,11.432,7,14
+                        c0,3.53,3.793,6.257,9,11.5
+                        c5.207,-5.242,9,-7.97,9,-11.5
+                        C25,11.432,23.043,9.5,20.5,9.5z" />
+&lt;/vector>
+</pre>
+
+<p>Android ではベクター画像は {@link android.graphics.drawable.VectorDrawable}
+ オブジェクトとして表示されます。<code>pathData</code> 構文の詳細については、<a href="http://www.w3.org/TR/SVG11/paths.html#PathData">SVG パス リファレンス</a>をご覧ください。ベクター型ドローアブルのアニメーションの詳細については、
+<a href="{@docRoot}training/material/animations.html#AnimVector">ベクター ドローアブルのアニメーション</a>をご覧ください。
+</p>
diff --git a/docs/html-intl/intl/ja/training/material/get-started.jd b/docs/html-intl/intl/ja/training/material/get-started.jd
new file mode 100644
index 0000000..2de6744
--- /dev/null
+++ b/docs/html-intl/intl/ja/training/material/get-started.jd
@@ -0,0 +1,171 @@
+page.title=スタートガイド
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>このレッスンでの学習内容</h2>
+<ol>
+  <li><a href="#ApplyTheme">マテリアル テーマを適用する</a></li>
+  <li><a href="#Layouts">レイアウトを設計する</a></li>
+  <li><a href="#Depth">ビューでエレベーションを指定する</a></li>
+  <li><a href="#ListsCards">リストとカードを作成する</a></li>
+  <li><a href="#Animations">アニメーションをカスタマイズする</a></li>
+</ol>
+<h2>関連ドキュメント</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">マテリアル デザインの仕様</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android でのマテリアル デザイン</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>マテリアル デザインでアプリを作成するには: </p>
+
+<ol>
+  <li style="margin-bottom:10px">
+    <a href="http://www.google.com/design/spec">マテリアル デザインの仕様</a>を確認します。</li>
+  <li style="margin-bottom:10px">
+    マテリアル <strong>テーマ</strong>をアプリに適用します。</li>
+  <li style="margin-bottom:10px">
+    マテリアル デザインのガイドラインに沿って<strong>レイアウト</strong>を作成します。</li>
+  <li style="margin-bottom:10px">
+    ビューの<strong>エレベーション</strong>を設定してシャドウを付与します。</li>
+  <li style="margin-bottom:10px">
+    リストやカードにシステム<strong>ウィジェット</strong>を使用します。</li>
+  <li style="margin-bottom:10px">
+    アプリで<strong>アニメーション</strong>をカスタマイズします。</li>
+</ol>
+
+<h3>下方互換性を維持する</h3>
+
+<p>Android 5.0 より前のバージョンとの互換性を維持しながら、マテリアル デザインのさまざまな機能をアプリに追加できます。
+詳細については、
+<a href="{@docRoot}training/material/compatibility.html">互換性の維持</a>をご覧ください。</p>
+
+<h3>マテリアル デザインでアプリをアップデートする</h3>
+
+<p>既存のアプリをアップデートしてマテリアル デザインを組み込むには、マテリアル デザインのガイドラインに沿ってレイアウトをアップデートします。
+深度、タッチ フィードバック、アニメーションを組み込んでいることも確認してください。
+</p>
+
+<h3>マテリアル デザインで新しいアプリを作成する</h3>
+
+<p>マテリアル デザインの機能を使って新しいアプリを作成すると、<a href="http://www.google.com/design/spec">マテリアル デザインのガイドライン</a>から凝縮したデザイン フレームワークが得られます。
+ガイドラインに従い、Android フレームワークの新しい機能を使ってアプリを設計、開発してください。
+</p>
+
+
+<h2 id="ApplyTheme">マテリアル テーマを適用する</h2>
+
+<p>アプリでマテリアル テーマを適用するには、次のように
+<code>android:Theme.Material</code> から継承したスタイルを指定します。</p>
+
+<pre>
+&lt;!-- res/values/styles.xml -->
+&lt;resources>
+  &lt;!-- your theme inherits from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- theme customizations -->
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<p>マテリアル テーマはアップデートされたシステム ウィジェットを提供しています。これにより、タッチ フィードバックやアクティビティ遷移のためのカラーパレットやデフォルトのアニメーションを指定できます。
+詳細については、
+<a href="{@docRoot}training/material/theme.html">マテリアル テーマの使用</a>をご覧ください。</p>
+
+
+<h2 id="Layouts">レイアウトを設計する</h2>
+
+<p>マテリアル テーマを適用したり、カスタマイズしたりすることに加えて、レイアウトが<a href="http://www.google.com/design/spec">マテリアル デザインのガイドライン</a>に準拠している必要があります。
+レイアウトを設計するときは、次の項目に特に注意してください。
+</p>
+
+<ul>
+<li>ベースライン グリッド</li>
+<li>キーライン</li>
+<li>空白スペース</li>
+<li>タッチ ターゲット サイズ</li>
+<li>レイアウト構成</li>
+</ul>
+
+
+<h2 id="Depth">ビューでエレベーションを指定する</h2>
+
+<p>ビューにはシャドウを付与できます。ビューのエレベーションの値によって、付与されるシャドウのサイズと表示される順序が決まります。
+ビューのエレベーションを設定するには、次のようにレイアウトの
+<code>android:elevation</code> 属性を使用します。</p>
+
+<pre>
+&lt;TextView
+    android:id="&#64;+id/my_textview"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:text="&#64;string/next"
+    android:background="&#64;color/white"
+    android:elevation="5dp" />
+</pre>
+
+<p>新しい <code>translationZ</code> プロパティを使用すると、ビューのエレベーションの一時的な変更が反映されるアニメーションを作成できます。
+エレベーションの変更は、
+<a href="{@docRoot}training/material/animations.html#ViewState">タッチ操作に応答</a>するときに便利です。
+</p>
+
+<p>詳細については、<a href="{@docRoot}training/material/shadows-clipping.html">シャドウとクリッピング ビューの定義</a>をご覧ください。
+</p>
+
+
+<h2 id="ListsCards">リストとカードを作成する</h2>
+
+<p>{@link android.support.v7.widget.RecyclerView} は {@link
+android.widget.ListView} のさらに柔軟なバージョンで、異なるレイアウト タイプをサポートしてパフォーマンスを向上します。
+{@link android.support.v7.widget.CardView} を使用すると、あらゆるアプリで一貫した外観でカードの中に情報を表示できます。
+次のコードは、レイアウトに
+{@link android.support.v7.widget.CardView} を含める方法の一例です。</p>
+
+<pre>
+&lt;android.support.v7.widget.CardView
+    android:id="&#64;+id/card_view"
+    android:layout_width="200dp"
+    android:layout_height="200dp"
+    card_view:cardCornerRadius="3dp">
+    ...
+&lt;/android.support.v7.widget.CardView>
+</pre>
+
+<p>詳細については、<a href="{@docRoot}training/material/lists-cards.html">リストとカードの作成</a>をご覧ください。
+</p>
+
+
+<h2 id="Animations">アニメーションをカスタマイズする</h2>
+
+<p>Android 5.0(API レベル 21)には、アプリでカスタム アニメーションを作成する新たな API が含まれています。
+たとえば次のように、アクティビティ遷移を有効にしてアクティビティ内部で ExitTransition を定義できます。
+</p>
+
+<pre>
+public class MyActivity extends Activity {
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // enable transitions
+        getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+        setContentView(R.layout.activity_my);
+    }
+
+    public void onSomeButtonClicked(View view) {
+        getWindow().setExitTransition(new Explode());
+        Intent intent = new Intent(this, MyOtherActivity.class);
+        startActivity(intent,
+                      ActivityOptions
+                          .makeSceneTransitionAnimation(this).toBundle());
+    }
+}
+</pre>
+
+<p>このアクティビティから別のアクティビティを開始するときに Exit 遷移がアクティベートされます。</p>
+
+<p>新しいアニメーション API の詳細については、<a href="{@docRoot}training/material/animations.html">カスタム アニメーションの定義</a>をご覧ください。</p>
diff --git a/docs/html-intl/intl/ja/training/material/index.jd b/docs/html-intl/intl/ja/training/material/index.jd
new file mode 100644
index 0000000..9f6d187
--- /dev/null
+++ b/docs/html-intl/intl/ja/training/material/index.jd
@@ -0,0 +1,61 @@
+page.title=デベロッパーのためのマテリアル デザイン
+page.type=デザイン
+page.image=images/cards/material_2x.png
+page.metaDescription=アプリにマテリアル デザインを適用する方法を学習する
+
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+  <h2>必要な知識と前提条件</h2>
+  <ul>
+    <li>Android 5.0(API レベル 21)</li>
+  </ul>
+</div>
+</div>
+
+<p>マテリアル デザインは、複数のプラットフォームや端末の視覚、モーション、インタラクション デザインの包括的な指針です。
+Android アプリでマテリアル デザインを使うには、
+<a href="http://www.google.com/design/spec/material-design/introduction.html">マテリアル デザインの仕様</a>で説明されているガイドラインに従い、Android 5.0(API レベル 21)の新しいコンポーネントや機能を使用します。
+
+
+</p>
+
+<p>ここでは、次の要素を用いてマテリアル デザイン アプリを作成する方法について説明します。</p>
+
+<ul>
+<li>マテリアル テーマ</li>
+<li>カードやリストのウィジェット</li>
+<li>カスタム シャドウとビューのクリッピング</li>
+<li>ベクター型ドローアブル</li>
+<li>カスタム アニメーション</li>
+</ul>
+
+<p>さらに、アプリでマテリアル デザインの機能を使うときに Android 5.0(API レベル 21)より前のバージョンとの互換性を維持する方法についても説明します。
+</p>
+
+<h2>レッスン</h2>
+
+<dl>
+  <dt><a href="{@docRoot}training/material/get-started.html">スタートガイド</a></dt>
+  <dd>マテリアル デザインの機能でアプリを更新する方法について学習します。</dd>
+
+  <dt><a href="{@docRoot}training/material/theme.html">マテリアル テーマの使用</a></dt>
+  <dd>マテリアル デザインのスタイルをアプリに適用する方法について学習します。</dd>
+
+  <dt><a href="{@docRoot}training/material/lists-cards.html">リストとカードの作成</a></dt>
+  <dd>システム ウィジェットを使って、一貫した外観や使用感のリストやカードを作成する方法について学習します。</dd>
+
+  <dt><a href="{@docRoot}training/material/shadows-clipping.html">シャドウとクリッピング ビューの定義</a></dt>
+  <dd>ビューのエレベーションを設定してカスタム シャドウを作成する方法やビューをクリップする方法について学習します。</dd>
+
+  <dt><a href="{@docRoot}training/material/drawables.html">ドローアブルの使用</a></dt>
+  <dd>ベクター型ドローアブルを作成する方法やドローアブル リソースに色を付ける方法について学習します。</dd>
+
+  <dt><a href="{@docRoot}training/material/animations.html">カスタム アニメーションの定義</a></dt>
+  <dd>ビューのカスタム アニメーションや共有要素とアクティビティ遷移を作成する方法について学習します。</dd>
+
+  <dt><a href="{@docRoot}training/material/compatibility.html">互換性の維持</a></dt>
+  <dd>Android 5.0 より前のバージョンのプラットフォームとの互換性を維持する方法について学習します。</dd>
+</dl>
diff --git a/docs/html-intl/intl/ja/training/material/lists-cards.jd b/docs/html-intl/intl/ja/training/material/lists-cards.jd
new file mode 100644
index 0000000..3d84d5d
--- /dev/null
+++ b/docs/html-intl/intl/ja/training/material/lists-cards.jd
@@ -0,0 +1,266 @@
+page.title=リストとカードの作成
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>このレッスンでの学習内容</h2>
+<ol>
+  <li><a href="#RecyclerView">リストを作成する</a></li>
+  <li><a href="#CardView">カードを作成する</a></li>
+  <li><a href="#Dependencies">依存関係を追加する</a></li>
+</ol>
+<h2>関連ドキュメント</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">マテリアル デザインの仕様</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android でのマテリアル デザイン</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>マテリアル デザインのスタイルを適用した複雑なリストやカードをアプリで作成するには、
+{@link android.support.v7.widget.RecyclerView} ウィジェットや {@link android.support.v7.widget.CardView}
+ ウィジェットを使用します。</p>
+
+
+<h2 id="RecyclerView">リストを作成する</h2>
+
+<p>{@link android.support.v7.widget.RecyclerView} ウィジェットは、{@link android.widget.ListView} をさらに進化させて柔軟にしたものです。
+このウィジェットは、大きなデータセットを表示するためのコンテナであり、限られたビューを維持することで非常に効率的にスクロールできます。
+ユーザーのアクションやネットワークのイベントに基づいて、実行時に要素が変わるデータ コレクションを持つ場合には、
+{@link android.support.v7.widget.RecyclerView} ウィジェットを使用してください。
+</p>
+
+<p>{@link android.support.v7.widget.RecyclerView} クラスは次の機能を提供することで、簡単に大きなデータセットを表示したり処理したりできます。
+</p>
+
+<ul>
+  <li>アイテムの位置調整を行うレイアウト マネージャー</li>
+  <li>アイテムの削除や追加のような一般的な操作のデフォルト アニメーション</li>
+</ul>
+
+<p>また、{@link
+android.support.v7.widget.RecyclerView} ウィジェットのカスタム レイアウト マネージャーやアニメーションも柔軟に定義できます。</p>
+
+<img src="{@docRoot}training/material/images/RecyclerView.png" alt="" width="550" height="106" />
+<p class="img-caption">
+<strong>図 1</strong> <code>RecyclerView</code> ウィジェット。
+</p>
+
+<p>{@link android.support.v7.widget.RecyclerView} ウィジェットを使用するには、アダプターとレイアウト マネージャーを指定する必要があります。
+アダプターを作成するには、{@link
+android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter} クラスを拡張します。具体的な実装方法は、データセットの詳細やビューの種類によって異なります。
+詳細については、下記の<a href="#RVExamples">例</a>をご覧ください。
+</p>
+
+<div style="float:right">
+<img src="{@docRoot}design/material/images/list_mail.png" alt="" width="250" height="426" />
+<p class="img-caption" style="margin-left:8px">
+<strong>図 2</strong> - <code>RecyclerView</code> を使ったリスト。
+</p>
+</div>
+
+<p><strong>レイアウト マネージャー</strong>は、{@link
+android.support.v7.widget.RecyclerView} 内でアイテムビューを位置付けし、ユーザーから見えなくなったアイテムビューを再利用するタイミングを決定します。
+ビューを再利用(または<em>リサイクル</em>)するために、レイアウト マネージャーからアダプターにデータセットの異なる要素でビューの内容を入れ替えるよう求められることがあります。
+このようにビューをリサイクルすることで、不要なビューを作成したりコストのかかる {@link android.app.Activity#findViewById findViewById()} のルックアップをしたりせずに済み、パフォーマンスが向上します。
+
+</p>
+
+<p>{@link android.support.v7.widget.RecyclerView} には、次のレイアウト マネージャーが組み込まれています。</p>
+
+<ul>
+<li>{@link android.support.v7.widget.LinearLayoutManager} は、アイテムを縦方向か横方向のスクロール リストに表示します。
+</li>
+<li>{@link android.support.v7.widget.GridLayoutManager} は、アイテムをグリッドに表示します。</li>
+<li>{@link android.support.v7.widget.StaggeredGridLayoutManager} は、アイテムをスタッガード グリッドに表示します。</li>
+</ul>
+
+<p>カスタム レイアウト マネージャーを作成するには、{@link
+android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager} クラスを拡張します。</p>
+
+<h3>アニメーション</h3>
+
+<p>{@link
+android.support.v7.widget.RecyclerView} では、アイテムの追加や削除のアニメーションがデフォルトで有効になっています。これらのアニメーションをカスタマイズするには、
+{@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} クラスを拡張し、{@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()}
+ メソッドを使用します。
+</p>
+
+<h3 id="RVExamples">例</h3>
+
+<p>次のコードは、レイアウトに
+{@link android.support.v7.widget.RecyclerView} を追加する方法の一例です。</p>
+
+<pre>
+&lt;!-- A RecyclerView with some commonly used attributes -->
+&lt;android.support.v7.widget.RecyclerView
+    android:id="@+id/my_recycler_view"
+    android:scrollbars="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"/>
+</pre>
+
+<p>レイアウトに {@link android.support.v7.widget.RecyclerView} ウィジェットを追加したら、オブジェクトのハンドルを取得してレイアウト マネージャーに接続し、表示するデータのアダプターを添付します。
+
+</p>
+
+<pre>
+public class MyActivity extends Activity {
+    private RecyclerView mRecyclerView;
+    private RecyclerView.Adapter mAdapter;
+    private RecyclerView.LayoutManager mLayoutManager;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.my_activity);
+        mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
+
+        // use this setting to improve performance if you know that changes
+        // in content do not change the layout size of the RecyclerView
+        mRecyclerView.setHasFixedSize(true);
+
+        // use a linear layout manager
+        mLayoutManager = new LinearLayoutManager(this);
+        mRecyclerView.setLayoutManager(mLayoutManager);
+
+        // specify an adapter (see also next example)
+        mAdapter = new MyAdapter(myDataset);
+        mRecyclerView.setAdapter(mAdapter);
+    }
+    ...
+}
+</pre>
+
+<p>アダプターによって、データセット内の各項目にアクセスしたり、アイテムのビューを作成したり、元のアイテムが見えなくなったときにビューのコンテンツの一部を新しいデータアイテムと入れ替えたりできます。
+
+次のコードはデータセットを実装する簡易な例です。このデータセットは、{@link android.widget.TextView} ウィジェットを使用して表示した文字列の配列で構成されています。
+</p>
+
+<pre>
+public class MyAdapter extends RecyclerView.Adapter&lt;MyAdapter.ViewHolder> {
+    private String[] mDataset;
+
+    // Provide a reference to the views for each data item
+    // Complex data items may need more than one view per item, and
+    // you provide access to all the views for a data item in a view holder
+    public static class ViewHolder extends RecyclerView.ViewHolder {
+        // each data item is just a string in this case
+        public TextView mTextView;
+        public ViewHolder(TextView v) {
+            super(v);
+            mTextView = v;
+        }
+    }
+
+    // Provide a suitable constructor (depends on the kind of dataset)
+    public MyAdapter(String[] myDataset) {
+        mDataset = myDataset;
+    }
+
+    // Create new views (invoked by the layout manager)
+    &#64;Override
+    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
+                                                   int viewType) {
+        // create a new view
+        View v = LayoutInflater.from(parent.getContext())
+                               .inflate(R.layout.my_text_view, parent, false);
+        // set the view's size, margins, paddings and layout parameters
+        ...
+        ViewHolder vh = new ViewHolder(v);
+        return vh;
+    }
+
+    // Replace the contents of a view (invoked by the layout manager)
+    &#64;Override
+    public void onBindViewHolder(ViewHolder holder, int position) {
+        // - get element from your dataset at this position
+        // - replace the contents of the view with that element
+        holder.mTextView.setText(mDataset[position]);
+
+    }
+
+    // Return the size of your dataset (invoked by the layout manager)
+    &#64;Override
+    public int getItemCount() {
+        return mDataset.length;
+    }
+}
+</pre>
+
+
+<div style="float:right;margin-top:15px;margin-left:30px">
+<img src="{@docRoot}design/material/images/card_travel.png" alt="" width="225" height="383">
+<p class="img-caption" style="margin-left:12px">
+<strong>図 3</strong> カードの例。
+</p>
+</div>
+
+<h2 id="CardView">カードを作成する</h2>
+
+<p>{@link android.support.v7.widget.CardView} は {@link android.widget.FrameLayout} クラスを拡張して、あらゆるプラットフォームで統一された外観のカード内に情報を表示できます。
+{@link
+android.support.v7.widget.CardView} ウィジェットは、シャドウを付けたり角を丸くしたりできます。</p>
+
+<p>シャドウ付きのカードを作成するには、<code>card_view:cardElevation</code> 属性を使用します。
+{@link android.support.v7.widget.CardView} は Android 5.0(API レベル 21)以降ではリアルなエレベーションや動きのあるシャドウを使用し、それより前のバージョンではプログラム的なシャドウを使用します。
+
+詳細については、<a href="{@docRoot}training/material/compatibility.html">互換性の維持</a>をご覧ください。
+</p>
+
+<p>
+{@link android.support.v7.widget.CardView} ウィジェットの外観をカスタマイズするには、次のプロパティを使用します。</p>
+
+<ul>
+  <li>レイアウトで角の丸みを設定するには、<code>card_view:cardCornerRadius</code> 属性を使用します。
+</li>
+  <li>コードで角の丸みを設定するには、<code>CardView.setRadius</code> メソッドを使用します。</li>
+  <li>カードの背景色を設定するには、<code>card_view:cardBackgroundColor</code> 属性を使用します。
+</li>
+</ul>
+
+<p>次のコードは、レイアウトに {@link android.support.v7.widget.CardView}
+ ウィジェットを含める方法の一例です。</p>
+
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    ... >
+    &lt;!-- A CardView that contains a TextView -->
+    &lt;android.support.v7.widget.CardView
+        xmlns:card_view="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/card_view"
+        android:layout_gravity="center"
+        android:layout_width="200dp"
+        android:layout_height="200dp"
+        card_view:cardCornerRadius="4dp">
+
+        &lt;TextView
+            android:id="@+id/info_text"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
+    &lt;/android.support.v7.widget.CardView>
+&lt;/LinearLayout>
+</pre>
+
+<p>詳細については、API リファレンスの {@link android.support.v7.widget.CardView} をご覧ください。</p>
+
+
+<h2 id="Dependencies">依存関係を追加する</h2>
+
+<p>{@link android.support.v7.widget.RecyclerView} ウィジェットと {@link android.support.v7.widget.CardView} ウィジェットは、<a href="{@docRoot}tools/support-library/features.html#v7">v7 サポート ライブラリ</a>の一部です。
+
+プロジェクトでこれらのウィジェットを使うには、次のようにアプリのモジュールに
+<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">Gradle 依存関係</a>を追加します。
+</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
diff --git a/docs/html-intl/intl/ja/training/material/shadows-clipping.jd b/docs/html-intl/intl/ja/training/material/shadows-clipping.jd
new file mode 100644
index 0000000..981a4d1
--- /dev/null
+++ b/docs/html-intl/intl/ja/training/material/shadows-clipping.jd
@@ -0,0 +1,133 @@
+page.title=シャドウとクリッピング ビューの定義
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>このレッスンでの学習内容</h2>
+<ol>
+  <li><a href="#Elevation">ビューにエレベーションを割り当てる</a></li>
+  <li><a href="#Shadows">ビューシャドウとアウトラインをカスタマイズする</a></li>
+  <li><a href="#Clip">ビューをクリップする</a></li>
+</ol>
+<h2>関連ドキュメント</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">マテリアル デザインの仕様</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android でのマテリアル デザイン</a></li>
+</ul>
+</div>
+</div>
+
+<p>マテリアル デザインでは、UI 要素に Elevation(エレベーション、高度)を導入しています。エレベーションによって、ユーザーは 1 つの要素が他の要素と比べて重要であることを理解でき、目前の作業に集中できるようになります。
+</p>
+
+<p>ビューのエレベーションは Z プロパティで表され、シャドウビューの見た目を決定します。Z 値が高くなればシャドウも大きく、滑らかになります。
+Z 値が高いビューは Z 値が低いビューを覆い隠しますが、Z 値がビューのサイズに影響することはありません。
+</p>
+
+<p>シャドウは、エレベーションが設定された親ビューによって描かれ、標準的なビュー クリッピングの対象になります。デフォルトでは親ビューによってクリップされます。
+</p>
+
+<p>エレベーションは、何らかのアクションでビューの平面上にウィジェットが浮き上がるようなアニメーションを作成する際にも役立ちます。
+</p>
+
+<p>マテリアル デザインのエレベーションの詳細については、
+<a href="http://www.google.com/design/spec/what-is-material/objects-in-3d-space.html">3D スペースのオブジェクト</a>をご覧ください。
+</p>
+
+
+<h2 id="Elevation">ビューにエレベーションを割り当てる</h2>
+
+<p>ビューの Z 値には次の 2 つのコンポーネントがあります。
+
+<ul>
+<li>Elevation (エレベーション): 静的なコンポーネントです。</li>
+<li>Translation (トランスレーション): アニメーションに使われる動的なコンポーネントです。</li>
+</ul>
+
+<p><code>Z = elevation + translationZ</code></p>
+
+<img src="{@docRoot}training/material/images/shadows-depth.png" width="580" height="261" alt="" />
+<p class="img-caption"><strong>図 1</strong> - 異なるビュー エレベーションのシャドウ。</p>
+
+<p>レイアウトの定義でビューのエレベーションを設定するには、<code>android:elevation</code>
+ 属性を使用します。アクティビティのコードでビューのエレベーションを設定するには、
+{@link android.view.View#setElevation View.setElevation()} メソッドを使用します。</p>
+
+<p>ビューのトランスレーションを設定するには、{@link android.view.View#setTranslationZ
+View.setTranslationZ()} メソッドを使用します。</p>
+
+<p>新しい {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} メソッドや {@link
+android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} メソッドを使用すると、ビューのエレベーションに簡単にアニメーションを付けられます。
+詳細については、API リファレンスの
+{@link android.view.ViewPropertyAnimator} と、デベロッパー ガイドの<a href="{@docRoot}guide/topics/graphics/prop-animation.html">プロパティ アニメーション</a>をご覧ください。
+</p>
+
+<p>また、{@link android.animation.StateListAnimator} を使用してアニメーションを宣言的に指定することも可能です。
+これは、ユーザーがボタンを押したときなど、状態の変化によってアニメーションを動作する場合に特に役立ちます。
+詳細については、
+<a href="{@docRoot}training/material/animations.html#ViewState">ビューの状態遷移にアニメーションを付ける</a>をご覧ください。</p>
+
+<p>Z 値は dp(密度非依存ピクセル)で測られます。</p>
+
+
+<h2 id="Shadows">ビューシャドウとアウトラインをカスタマイズする</h2>
+
+<p>ビュー背景のドローアブルの範囲によってシャドウのデフォルトの形状が決まります。
+<strong>Outlines</strong> はグラフィック オブジェクトの外形を表し、タッチ フィードバックのリップル(波紋)の領域を定義します。
+</p>
+
+<p>背景ドローアブルで定義されたビューについて考えてみます。</p>
+
+<pre>
+&lt;TextView
+    android:id="@+id/myview"
+    ...
+    android:elevation="2dp"
+    android:background="@drawable/myrect" />
+</pre>
+
+<p>背景ドローアブルが角が丸い長方形として定義されます。</p>
+
+<pre>
+&lt;!-- res/drawable/myrect.xml -->
+&lt;shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+    &lt;solid android:color="#42000000" />
+    &lt;corners android:radius="5dp" />
+&lt;/shape>
+</pre>
+
+<p>背景ドローアブルによってビューの外形が定義されるため、このビューは角が丸いシャドウを付与します。
+カスタム アウトラインを使えば、ビューシャドウのデフォルトの形状を更新できます。</p>
+
+<p>コードでビューのカスタム アウトラインを定義するには: <p>
+
+<ol>
+<li>{@link android.view.ViewOutlineProvider} クラスを拡張します。</li>
+<li>{@link android.view.ViewOutlineProvider#getOutline getOutline()} メソッドを上書きします。</li>
+<li>{@link
+android.view.View#setOutlineProvider View.setOutlineProvider()} メソッドで、ビューに新しい OutlineProvider を割り当てます。</li>
+</ol>
+
+<p>
+{@link android.graphics.Outline} クラスのメソッドを使用して、楕円形や角が丸い長方形のアウトラインを作成できます。ビューのデフォルトの OutlineProvider は、ビューの背景から外形を決定します。
+ビューがシャドウを付与しないようにするには、OutlineProvider を <code>null</code> に設定します。
+</p>
+
+
+<h2 id="Clip">ビューをクリップする</h2>
+
+<p>ビューをクリップすると、ビューの形を簡単に変更できます。ビューをクリップすることで、他のデザイン要素との統一性を保ったり、ユーザーのインプットに応じてビューの形を変えたりできます。
+
+{@link android.view.View#setClipToOutline
+View.setClipToOutline()} メソッドか <code>android:clipToOutline</code> 属性を使用すると、ビューをそのアウトラインの範囲にクリップできます。
+{@link android.graphics.Outline#canClip Outline.canClip()} メソッドで指定されているように、クリップがサポートされるのは長方形、円形、角が丸い長方形のみです。
+</p>
+
+<p>上述のように、ドローアブルの範囲でビューをクリップするには、ドローアブルをビューの背景として設定し、{@link android.view.View#setClipToOutline View.setClipToOutline()}
+メソッドを呼び出します。
+</p>
+
+<p>ビューのクリップは負荷の高い操作であるため、ビューのクリップに使用する形状にはアニメーションを付けないでください。
+この効果を発揮させるには、<a href="{@docRoot}training/material/animations.html#Reveal">出現エフェクト</a>アニメーションを使用します。</p>
diff --git a/docs/html-intl/intl/ja/training/material/theme.jd b/docs/html-intl/intl/ja/training/material/theme.jd
new file mode 100644
index 0000000..43e5c6c
--- /dev/null
+++ b/docs/html-intl/intl/ja/training/material/theme.jd
@@ -0,0 +1,131 @@
+page.title=マテリアル テーマの使用
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>このレッスンでの学習内容</h2>
+<ol>
+  <li><a href="#ColorPalette">カラーパレットをカスタマイズする</a></li>
+  <li><a href="#StatusBar">ステータスバーをカスタマイズする</a></li>
+  <li><a href="#Inheritance">テーマ個別のビュー</a></li>
+</ol>
+<h2>関連ドキュメント</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">マテリアル デザインの仕様</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android でのマテリアル デザイン</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>新しいマテリアル テーマでは、次のものが提供されます。</p>
+
+<ul>
+  <li>カラーパレットを設定できるシステム ウィジェット</li>
+  <li>システム ウィジェットのタッチ フィードバック アニメーション</li>
+  <li>アクティビティ遷移アニメーション</li>
+</ul>
+
+<p>マテリアル テーマの外観は、ブランド イメージにあわせて自分のカラーパレットでカスタマイズできます。
+<a href="#fig3">図 3</a> のように、アクションバーやステータスバーにテーマ属性で色を付けることができます。
+</p>
+
+<p>システム ウィジェットには、新しいデザインやタッチ フィードバックがあります。カラーパレット、タッチ フィードバック、アクティビティ遷移は、自分のアプリ向けにカスタマイズできます。
+</p>
+
+<p>マテリアル テーマは次のように定義されます。</p>
+
+<ul>
+  <li><code>@android:style/Theme.Material</code> (暗色バージョン)</li>
+  <li><code>@android:style/Theme.Material.Light</code> (明色バージョン)</li>
+  <li><code>@android:style/Theme.Material.Light.DarkActionBar</code></li>
+</ul>
+
+<p>使用できるマテリアル スタイルのリストについては、API リファレンスの
+{@link android.R.style R.style} をご覧ください。</p>
+
+<!-- two columns, dark/light material theme example -->
+<div style="width:700px;margin-top:25px;margin-bottom:10px">
+<div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
+  <img src="{@docRoot}design/material/images/MaterialDark.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>図 1</strong> 暗い色のマテリアル テーマ</p>
+  </div>
+</div>
+<div style="float:left;width:250px;margin-right:0px;">
+  <img src="{@docRoot}design/material/images/MaterialLight.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>図 2</strong> 明るい色のマテリアル テーマ</p>
+  </div>
+</div>
+<br style="clear:left">
+</div>
+
+<p class="note">
+<strong>注: </strong>マテリアル テーマは、Android 5.0(API レベル 21)以降でのみ使用できます。
+<a href="{@docRoot}tools/support-library/features.html#v7">v7 サポート ライブラリ</a>は、一部のウィジェットに対してマテリアル デザイン スタイルでテーマを提供し、カラーパレットのカスタマイズをサポートしています。
+
+詳細については、
+<a href="{@docRoot}training/material/compatibility.html">互換性の維持</a>をご覧ください。
+</p>
+
+
+<h2 id="ColorPalette">カラーパレットをカスタマイズする</h2>
+
+<p style="margin-bottom:30px">ブランド イメージに合うようにテーマの基本色をカスタマイズするには、次の例に示すようにマテリアル テーマから継承する場合、テーマ属性を使ってカスタムカラーを定義します。
+</p>
+
+<pre>
+&lt;resources>
+  &lt;!-- inherit from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- Main theme colors -->
+    &lt;!--   your app branding color for the app bar -->
+    &lt;item name="android:colorPrimary">@color/primary&lt;/item>
+    &lt;!--   darker variant for the status bar and contextual app bars -->
+    &lt;item name="android:colorPrimaryDark">@color/primary_dark&lt;/item>
+    &lt;!--   theme UI controls like checkboxes and text fields -->
+    &lt;item name="android:colorAccent">@color/accent&lt;/item>
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<div style="float:right;margin-left:25px;margin-top:20px;margin-bottom:10px" id="fig3">
+<img src="{@docRoot}training/material/images/ThemeColors.png" width="250" height="445" />
+<p class="img-caption" style="margin-bottom:0px">
+<strong>図 3</strong> マテリアル テーマのカスタマイズ</p>
+</div>
+
+
+<h2 id="StatusBar">ステータスバーをカスタマイズする</h2>
+
+<p>マテリアル テーマを使うと、ステータスバーを簡単にカスタマイズできます。ブランド イメージに合わせて、またコントラストで白色のステータス アイコンを際立たせて色を設定できます。
+ステータスバーのカスタムカラーを設定するには、マテリアル テーマを拡張するときに <code>android:statusBarColor</code> 属性を使用します。
+
+デフォルトでは <code>android:statusBarColor</code> は <code>android:colorPrimaryDark</code> の値を継承します。
+</p>
+
+<p>また、ステータスバーの背景を描くこともできます。たとえば、白色のステータス アイコンが見にくくならないように薄い暗色のグラデーションを付けて、ステータスバーを写真の上に透過的に表示したい場合、
+
+<code>android:statusBarColor</code> 属性に
+<code>&#64;android:color/transparent</code> を指定してウィンドウ フラグを必要に応じて調整します。アニメーションやフェードには、{@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} メソッドも使用できます。
+
+</p>
+
+<p class="note">
+<strong>注: </strong>ステータスバーはメインのツールバーと明確に分かれている必要があります。ただし、背景に画面の端から端まで表示される鮮やかな画像やメディア コンテンツを使用したり、アイコンが見にくくならないようにグラデーションを使用する場合は例外です。
+
+
+</p>
+
+<p>ナビケーションとステータスバーをカスタマイズするときは、どちらも透過的にするか、ステータスバーだけを変更します。
+その他のケースではナビゲーション バーは黒色のままにする必要があります。</p>
+
+
+<h2 id="Inheritance">テーマ個別のビュー</h3>
+
+<p>XML レイアウト定義の各要素では、テーマのリソースを参照する <code>android:theme</code> 属性を指定できます。
+この属性は、要素や子要素のテーマを変更し、インターフェースの一定の割合を占めるテーマ カラーパレットを変更する場合に役立ちます。
+
+</p>
diff --git a/docs/html-intl/intl/ko/design/get-started/principles.jd b/docs/html-intl/intl/ko/design/get-started/principles.jd
index aba8a9b..b7ca66e 100644
--- a/docs/html-intl/intl/ko/design/get-started/principles.jd
+++ b/docs/html-intl/intl/ko/design/get-started/principles.jd
@@ -1,8 +1,8 @@
 page.title=Android 디자인 원칙
 @jd:body
 
-<p>이러한 디자인 원칙은 사용자의 이익을 가장 염두에 두고 Android
-사용자 환경 팀(User Experience Team)에 의해서와 이 팀을 위해 개발되었습니다. Android 개발자 및 디자이너를
+<p>이 디자인 원칙은 사용자의 이익을 가장 염두에 두고 Android
+사용자 환경 팀(User Experience Team)에 의해 이 팀을 위해 개발되었습니다. Android 개발자 및 디자이너를
 위해 Android 사용자 환경 팀은 계속해서 여러
 유형의 기기를 위한 상세한 디자인 가이드라인의
 기저를 이루고 있습니다.</p>
@@ -14,8 +14,8 @@
 
 <h2 id="enchant-me">황홀하게 만들기</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="delight-me">놀라운 방식으로 기쁨을 주기</h4>
 <p>아름다운 표면, 신중하게 위치한 애니메이션 또는 시간적으로 잘 짜여진 소리 효과는 사람들에게 즐거운
@@ -23,7 +23,7 @@
 힘을 가지고 있다고 느끼게 해줍니다.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_delight.png">
 
@@ -32,15 +32,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="real-objects-more-fun">버튼 및 메뉴보다 더 흥미로운 실제 사물</h4>
 <p>사람들이 직접 앱 내 사물을 터치하고 조작할 수 있게 해보세요. 이는 태스크를 수행할 때
 필요한 인지 노력을 줄이는 동시에 정서적인 만족을 가져다 줍니다.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_real_objects.png">
 
@@ -49,8 +49,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="make-it-mine">내 것으로 만들게 하기</h4>
 <p>사람들은 개인적인 취향을 더하고 싶어 하는데, 그렇게 하면 마음이 편안해지고 통제할 수 있다고 느끼게 되기 때문입니다. 합리적이고
@@ -58,7 +58,7 @@
 주요 태스크를 저해하지 않는 범위에서 재미있고, 선택 가능한 맞춤 기능을 제공할 것을 고려해 보십시오.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_make_it_mine.png">
 
@@ -67,15 +67,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="get-to-know-me">사용자에 대해 파악하기</h4>
 <p>시간이 지남에 따라 사람들이 선호하는 것을 알아보세요. 똑같은 선택을 매번
 하도록 요구하기 보다는 이전 선택을 쉽게 접근할 수 있는 곳에 둡니다.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_get_to_know_me.png">
 
@@ -84,14 +84,14 @@
 
 <h2 id="simplify-my-life">사용자의 생활을 단순하게 만들기</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="keep-it-brief">간결하게 만들기</h4>
 <p>간단한 단어로 이루어진 짧은 문구를 사용하세요. 문장이 길면 사람들이 보지 않고 넘길 가능성이 커집니다.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_keep_it_brief.png">
 
@@ -100,15 +100,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="pictures-faster-than-words">말보다 빠른 사진</h4>
 <p>생각을 전달하는 데 사진을 이용할 것을 고려해 보세요. 사람들의 시선을 끌고 말보다
 더 효과적일 수 있습니다.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_pictures.png">
 
@@ -117,15 +117,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="decide-for-me">사용자를 대신해서 결정해 주되 최종 결정권은 사용자에게 주기</h4>
 <p>먼저 물어보기 보다는 최선의 추측을 하고 조치를 취해 보세요. 선택하고 결정해야 하는 사항이 너무 많으면 사람들이
 짜증을 내게 됩니다. 만약을 대비해 '실행 취소' 기능을 제공합니다.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_decide_for_me.png">
 
@@ -134,15 +134,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="only-show-when-i-need-it">사용자가 필요로 할 때 필요한 사항만 보여주기</h4>
 <p>사람들은 한 번에 너무 많은 것을 보면 버거워합니다. 태스크 및 정보를 소화 가능한
 작은 크기로 나누세요. 현재 필요하지 않은 옵션은 숨기고 사람들의 작업 진행에 맞게 옵션을 표시하세요.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_information_when_need_it.png">
 
@@ -151,15 +151,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="always-know-where-i-am">사용자 자신이 현재 어디에 있는지 항상 알도록 하기</h4>
 <p>사람들에게 현재 자신이 어디에 있는지에 대한 확신을 주어야 합니다. 앱에서 장소가 명확하게 표시되게 하고,
 전환을 사용하여 화면 간 관계를 보여줍니다. 현재 작업 중인 태스크에 대한 피드백을 제공합니다.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_navigation.png">
 
@@ -168,8 +168,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="never-lose-my-stuff">사용자가 가지고 있는 것들을 절대 잃어버리지 않도록 하기</h4>
 <p>사람들이 공들여 만든 것을 저장하고 어디서든지 액세스할 수 있게 합니다. 휴대폰, 태블릿 및 컴퓨터에 걸쳐 설정,
@@ -177,7 +177,7 @@
 가장 쉬워집니다.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_never_lose_stuff.png">
 
@@ -186,15 +186,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="looks-same-should-act-same">똑같이 보이면 똑같이 동작되도록 하기</h4>
 <p>기능을 시각적으로 단순하게 만들기 보다는 눈에 띄게 만들어 사람들이 기능적 차이를 알아볼 수 있게 합니다.
 비슷하게 보이는 장소지만 같은 입력에 대해 다르게 실행되는 모드는 피하도록 합니다.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_looks_same.png">
 
@@ -203,15 +203,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="interrupt-only-if-important">중요할 때만 작업을 중단하기</h4>
 <p>유능한 개인 비서와 같이 중요하지 않은 일로 사람들의 작업을 중단하지 않도록 합니다. 사람들은
 작업에 계속 집중하기를 바라며, 중요하고 시간을 다투는 일을 제외하고는 작업이 중단되면 부담스럽고 짜증이 날 수 있습니다.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_important_interruption.png">
 
@@ -220,8 +220,8 @@
 
 <h2 id="make-me-amazing">사용자를 놀래킬 수 있는 환경 만들기</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="give-me-tricks">어디서든 적용될 수 있는 팁 제공하기</h4>
 <p>사람들은 스스로 알아내는 것을 좋아합니다. 다른 Android 앱의 시각적 패턴과 머슬 메모리(muscle memory)를 활용하여
@@ -229,7 +229,7 @@
 좋은 탐색 지름길이 될 수 있습니다.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_tricks.png">
 
@@ -238,16 +238,16 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="its-not-my-fault">사용자가 자기 탓으로 느끼지 않게 하기</h4>
 <p>사람들의 실수를 바로잡아 줄 때는 부드럽게 합니다. 사람들은
-앱을 사용할 때 스마트하게 느끼고 싶어 합니다. 뭔가 잘못될 경우, 명확한 복구 지침을 제공하되, 기술적인 세부 사항은 제공하지 않습니다.
-사람들 모르게 복구할 수 있으면 더 좋습니다.</p>
+앱을 사용할 때 자신이 스마트하다고 느끼고 싶어 합니다. 뭔가 잘못될 경우, 명확한 복구 지침을 제공하되, 기술적인 세부 사항은 그들에게 맡기세요.
+눈치채지 않게 복구할 수 있으면 더 좋습니다.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_error.png">
 
@@ -256,15 +256,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="sprinkle-encouragement">격려하기</h4>
 <p>복잡한 태스크를 쉽게 완료할 수 있도록 여러 단계로 나눕니다. 미묘한 반짝임일지라도
 작업에 대해서 피드백을 줍니다.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_sprinkle_encouragement.png">
 
@@ -273,8 +273,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="do-heavy-lifting-for-me">힘든 건 대신해주기</h4>
 <p>초보자들이 할 수 있을 것이라 생각하지 못한 일들을 해서 전문가처럼 느낄 수 있게 합니다. 예를
@@ -282,7 +282,7 @@
 겨우 몇 단계를 거치는 것만으로 멋진 사진으로 보이게 할 수 있습니다.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_heavy_lifting.png">
 
@@ -291,15 +291,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="make-important-things-fast">중요한 일은 빨리 해결되도록 하기</h4>
 <p>모든 작업이 같지는 않습니다. 앱에서 가장 중요한 것이 무엇인지 결정한 후 쉽게 찾을 수 있고
 빨리 사용할 수 있도록 합니다. 일례로 카메라의 셔터 버튼이나 음악 플레이어의 일시정지 버튼이 이에 해당됩니다.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_make_important_fast.png">
 
diff --git a/docs/html-intl/intl/ko/design/material/index.jd b/docs/html-intl/intl/ko/design/material/index.jd
index 31992fa..b24c668 100644
--- a/docs/html-intl/intl/ko/design/material/index.jd
+++ b/docs/html-intl/intl/ko/design/material/index.jd
@@ -1,7 +1,7 @@
-page.title=머티어리얼 디자인
+page.title=Android용 머티리얼 디자인
 page.tags=Material,design
 page.type=design
-page.image=design/material/images/MaterialLight.png
+page.image=images/cards/design-material-for-android_2x.jpg
 
 @jd:body
 
@@ -9,7 +9,7 @@
 <a class="notice-developers right" href="{@docRoot}training/material/index.html">
   <div>
     <h3>개발자 문서</h3>
-    <p>머티어리얼 디자인으로 앱 생성</p>
+    <p>머티리얼 디자인으로 앱 생성</p>
   </div>
 </a>
 
@@ -17,7 +17,7 @@
 <a class="notice-developers-video" href="https://www.youtube.com/watch?v=p4gmvHyuZzw">
 <div>
     <h3>비디오</h3>
-    <p>머티어리얼 디자인 소개</p>
+    <p>머티리얼 디자인 소개</p>
 </div>
 </a>
 
@@ -25,7 +25,7 @@
 <a class="notice-developers-video" href="https://www.youtube.com/watch?v=YaG_ljfzeUw">
 <div>
     <h3>비디오</h3>
-    <p>종이와 잉크: 중요한 머티어리얼</p>
+    <p>종이와 잉크: 중요한 머티리얼</p>
 </div>
 </a>
 
@@ -33,19 +33,19 @@
 <a class="notice-developers-video" href="https://www.youtube.com/watch?v=XOcCOBe8PTc">
 <div>
     <h3>비디오</h3>
-    <p>Google I/O 앱 내 머티어리얼 디자인</p>
+    <p>Google I/O 앱 내 머티리얼 디자인</p>
 </div>
 </a>
 
 
 
-<p itemprop="description">머티어리얼 디자인은 플랫폼 및 기기 전반의 표현 방식, 모션 및
+<p itemprop="description">머티리얼 디자인은 플랫폼 및 기기 전반의 표현 방식, 모션 및
 상호 작용 디자인에 대한 종합적인 지침입니다. Android에는 이제
-머티어리얼 디자인 앱에 대한 지원이 포함되었습니다. Android 앱에서 머티어리얼 디자인을 사용하려면 <a href="http://www.google.com/design/spec">머티어리얼 디자인 사양</a>에
+머티리얼 디자인 앱에 대한 지원이 포함되었습니다. Android 앱에서 머티리얼 디자인을 사용하려면 <a href="http://www.google.com/design/spec">머티리얼 디자인 사양</a>에
 규정되어 있는 지침을 따르세요. 또한 Android 5.0(API 레벨 21) 이상에서 제공하는
 새 구성 요소 및 기능을 사용하세요.</p>
 
-<p>Android는 머티어리얼 디자인 앱을 구축하는 데 사용할 수 있는 다음 요소를 제공합니다.</p>
+<p>Android는 머티리얼 디자인 앱을 구축하는 데 사용할 수 있는 다음 요소를 제공합니다.</p>
 
 <ul>
   <li>새로운 테마</li>
@@ -53,13 +53,13 @@
   <li>사용자 지정 그림자 및 애니메이션을 위한 새로운 API</li>
 </ul>
 
-<p>Android에서 머티어리얼 디자인을 구현하는 방법에 대한 자세한 내용은
-<a href="{@docRoot}training/material/index.html">머티어리얼 디자인으로 앱 생성</a>을 참조하세요.</p>
+<p>Android에서 머티리얼 디자인을 구현하는 방법에 대한 자세한 내용은
+<a href="{@docRoot}training/material/index.html">머티리얼 디자인으로 앱 생성</a>을 참조하세요.</p>
 
 
-<h3>머티어리얼 테마</h3>
+<h3>머티리얼 테마</h3>
 
-<p>머티어리얼 테마는 앱에 사용할 수 있는 새로운 스타일, 색상표를
+<p>머티리얼 테마는 앱에 사용할 수 있는 새로운 스타일, 색상표를
 설정할 수 있는 시스템 위젯, 그리고 터치 피드백 및 액티비티 전환을 위한 기본 애니메이션을 제공합니다.</p>
 
 <!-- two columns -->
@@ -67,25 +67,25 @@
 <div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
   <img src="{@docRoot}design/material/images/MaterialDark.png" width="500" height="238" />
   <div style="width:140px;margin:0 auto">
-  <p style="margin-top:8px">어두운 머티어리얼 테마</p>
+  <p style="margin-top:8px">어두운 머티리얼 테마</p>
   </div>
 </div>
 <div style="float:left;width:250px;margin-right:0px;">
   <img src="{@docRoot}design/material/images/MaterialLight.png" width="500" height="238" />
   <div style="width:140px;margin:0 auto">
-  <p style="margin-top:8px">밝은 머티어리얼 테마</p>
+  <p style="margin-top:8px">밝은 머티리얼 테마</p>
   </div>
 </div>
 <br style="clear:left"/>
 </div>
 
-<p>자세한 내용은 <a href="{@docRoot}training/material/theme.html">머티어리얼
+<p>자세한 내용은 <a href="{@docRoot}training/material/theme.html">머티리얼
 테마 사용</a>을 참조하세요.</p>
 
 
 <h3>목록 및 카드</h3>
 
-<p>Android는 머티어리얼 디자인 스타일
+<p>Android는 머티리얼 디자인 스타일
 및 애니메이션으로 카드 및 목록을 표시하는 데 사용할 수 있는 두 개의 새로운 위젯을 제공합니다.</p>
 
 <!-- two columns -->
@@ -126,7 +126,7 @@
   </video>
   </div>
   <div style="font-size:10pt;margin-left:20px;margin-bottom:30px">
-    <em>영화를 재생하려면 기기 화면을 클릭합니다.</em>
+    <em>영화를 재생하려면 기기 화면을 클릭하세요.</em>
   </div>
 </div>
 
@@ -171,7 +171,7 @@
 
 <h3>드로어블</h3>
 
-<p>드로어블에 대한 다음과 같은 새 기능을 통해 머티어리얼 디자인 앱을 쉽게 구현할 수 있습니다.</p>
+<p>드로어블에 대한 다음과 같은 새 기능을 통해 머티리얼 디자인 앱을 쉽게 구현할 수 있습니다.</p>
 
 <ul>
 <li><strong>벡터 드로어블</strong>은 단색 인앱 아이콘에
@@ -182,5 +182,5 @@
 비트맵 이미지에서 주요 색상을 자동으로 추출할 수 있게 해줍니다.</li>
 </ul>
 
-<p>자세한 내용은 <a href="{@docRoot}training/material/drawables.html">Drawable
+<p>자세한 내용은 <a href="{@docRoot}training/material/drawables.html">드로어블
 사용</a>을 참조하세요.</p>
diff --git a/docs/html-intl/intl/ko/design/patterns/compatibility.jd b/docs/html-intl/intl/ko/design/patterns/compatibility.jd
new file mode 100644
index 0000000..a87a8f2
--- /dev/null
+++ b/docs/html-intl/intl/ko/design/patterns/compatibility.jd
@@ -0,0 +1,70 @@
+page.title=이전 버전과의 호환성
+page.tags="support"
+page.metaDescription=Android 4.x에서 어떤 방식으로 이전 버전의 하드웨어 및 OS용으로 디자인된 UI를 적용하는지에 대한 설명입니다.
+@jd:body
+
+<a class="notice-developers" href="{@docRoot}training/basics/supporting-devices/index.html">
+  <div>
+    <h3>개발자 문서</h3>
+    <p>다양한 기기 지원</p>
+  </div>
+</a>
+
+<p>Android 3.0에서 중요한 변경 사항은 다음과 같습니다.</p>
+<ul>
+<li>가상 컨트롤(Back, Home, Recents)을 통한 탐색 처리
+에 편리하도록 탐색 하드웨어 키(Back, Menu, Search, Home) 사용 중단.</li>
+<li>작업 모음에서 메뉴 사용을 위한 견고한 패턴.</li>
+</ul>
+<p>Android 4.0은 태블릿의 이러한 변경 사항들을 휴대폰 플랫폼에 적용합니다.</p>
+
+<h2 id="older-hardware">이전 하드웨어 및 앱에 Android 4.0 적용</h2>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>가상 탐색 컨트롤이 있는 휴대폰</h4>
+<p>Android 3.0 이상의 버전용으로 작성된 Android 앱은 작업 모음에 작업을 표시합니다. 작업 모음에 적합하지 않거나 최상위에 표시될 만큼 중요하지 않은 작업은 작업 오버플로우에 나타납니다.
+
+</p>
+<p>사용자는 작업 모음에서 작업 오버플로를 터치하는 방식으로 액세스합니다.</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_virtual_nav.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>실제 탐색 키가 있는 휴대폰</h4>
+<p>탐색 하드웨어 키가 있는 기존 Android 휴대폰은 화면 하단에 가상 탐색 모음을 표시하지 않습니다.
+ 대신 메뉴 하드웨어 키에서 작업 오버플로를 이용할 수 있습니다. 나타나는 작업 팝업은 이전의 예와 스타일은 같지만 화면 하단에 표시됩니다.
+</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_physical_buttons.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>가상 탐색 컨트롤이 있는 휴대폰의 레거시 앱</h4>
+<p>Android 2.3 이하 버전용으로 작성된 앱을 가상 탐색 컨트롤이 있는 휴대폰에서 실행하면 가상 탐색 모음의 오른쪽에 작업 오버플로가 나타납니다.
+ 이 컨트롤을 터치하여 기존 Android 메뉴 스타일로 앱의 작업을 표시할 수 있습니다.
+</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_legacy_apps.png">
+
+  </div>
+</div>
diff --git a/docs/html-intl/intl/ko/design/patterns/confirming-acknowledging.jd b/docs/html-intl/intl/ko/design/patterns/confirming-acknowledging.jd
index 2444b0e..304a655 100644
--- a/docs/html-intl/intl/ko/design/patterns/confirming-acknowledging.jd
+++ b/docs/html-intl/intl/ko/design/patterns/confirming-acknowledging.jd
@@ -1,51 +1,51 @@
-page.title=확인 및 승인하기
+page.title=확인 및 승인
 page.tags=dialog,toast,notification
 @jd:body
 
 <p>사용자가 앱에서 작업을 호출할 때와 같은 몇몇 상황에서는 텍스트를 통해 해당 작업을 <em>확인</em>하거나 <em>승인</em>하는 것이 좋습니다.</p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <img src="{@docRoot}design/media/confirm_ack_confirming.png">
-    <p><strong>확인하기</strong>란, 사용자에게 방금 호출한 작업을 정말로 진행할 것인지 묻는 것입니다. 경우에 따라 확인은 고려해야 할 작업과 관련된 경고 또는 중요한 정보와 함께 표시됩니다.</p>
+    <p><strong>확인</strong>이란, 사용자에게 방금 호출한 작업을 정말로 진행할 것인지 묻는 것입니다. 경우에 따라 확인은 고려해야 할 작업과 관련된 경고 또는 중요한 정보와 함께 표시됩니다.</p>
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/confirm_ack_acknowledge.png">
-    <p><strong>승인하기</strong>란, 사용자에게 방금 호출한 작업이 완료되었음을 알리는 텍스트를 표시하는 것입니다. 이는 시스템이 수행하는 암시적인 작업에 대한 불확실성을 제거해 줍니다. 경우에 따라 승인은 작업의 실행을 취소하는 옵션과 함께 표시됩니다.</p>
+    <p><strong>승인</strong>이란, 사용자에게 방금 호출한 작업이 완료되었음을 알리는 텍스트를 표시하는 것입니다. 이는 시스템이 수행하는 암시적인 작업에 대한 불확실성을 제거해 줍니다. 경우에 따라 승인은 작업의 실행을 취소하는 옵션과 함께 표시됩니다.</p>
   </div>
 </div>
 
-<p>이런 방식의 사용자와의 소통은 이미 일어난 일이나 일어날 일에 대한 불확실성을 완화시키는 데 도움이 될 수 있습니다. 또한, 확인하기 또는 승인하기는 사용자가 후회할지도 모르는 실수를 미연에 방지합니다.</p>
+<p>이런 방식의 사용자와의 소통은 이미 일어난 일이나 일어날 일에 대한 불확실성을 완화시키는 데 도움이 될 수 있습니다. 또한, 확인 또는 승인은 사용자가 후회할지도 모르는 실수를 미연에 방지합니다.</p>
 
-<h2>사용자 작업을 확인 또는 승인하기 적절한 경우</h2>
+<h2>사용자 작업 확인 또는 승인이 적절한 경우</h2>
 <p>모든 작업에 확인 또는 승인이 적합한 것은 아닙니다. 다음 순서도를 참고하여 디자인을 결정하는 데 도움을 받으세요.</p>
 <img src="{@docRoot}design/media/confirm_ack_flowchart.png">
 
-<h2>확인하기</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<h2>확인</h2>
+<div class="cols">
+  <div class="col-6">
     <h4>예: Google Play 도서</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_books.png">
     <p>이 예에서는 사용자가 Google Play 라이브러리에서 도서 삭제를 요청했습니다. 이 작업을 확인하기 위해 <a href="{@docRoot}design/building-blocks/dialogs.html#alerts">경고</a>가 나타납니다. 왜냐하면 해당 도서를 더 이상 어떠한 기기에서도 이용할 수 없다는 것을 알려야 하기 때문입니다.</p>
     <p>확인 대화 상자를 작성할 때, 요청된 작업을 반향하여 제목을 의미 있게 만듭니다.</p>
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <h4>예: Android Beam</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_beam.png">
     <p>확인을 두 개의 버튼을 포함한 경고로 표시할 필요는 없습니다. Android Beam을 시작하면 사용자에게 공유할 콘텐츠를 터치하라는 메시지가 표시됩니다(이 예의 경우 사진). 진행하지 않기로 결정한 경우에는 휴대폰에서 벗어나면 됩니다.</p>
   </div>
 </div>
 
-<h2>승인하기</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<h2>승인</h2>
+<div class="cols">
+  <div class="col-6">
     <h4>예: 방치된 Gmail 초안 저장</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_draftsave.png">
     <p>이 예에서는 사용자가 Gmail의 메일 작성 화면에서 뒤로 또는 위로 탐색을 수행하면 예상치 못한 일이 일어나는데, 그건 바로 현재 초안이 자동으로 저장되는 것입니다. 승인은 알림 메시지 형식으로 나타납니다. 그리고 몇 초 후 사라집니다.</p>
     <p>이때, 저장이 사용자가 아닌 앱에 의해 이뤄졌기 때문에 실행 취소는 적합하지 않습니다. 그리고 초안 목록으로 이동하면 쉽고 빠르게 메일 작성을 재개할 수 있습니다.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <h4>예: Gmail 대화 삭제</h4>
     <img src="{@docRoot}design/media/confirm_ack_draft_deleted.png">
     <p>사용자가 Gmail 목록에서 대화를 삭제하면, 승인이 실행 취소 옵션과 함께 표시됩니다. 승인은 사용자가 목록을 스크롤하는 등의 관련 없는 작업을 수행하기 전까지 그대로 남아 있습니다.</p>
@@ -53,14 +53,14 @@
 </div>
 
 <h2>확인 또는 승인이 필요 없는 경우</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>예: +1 누르기</h4>
     <img style="padding: 33px 0 30px;" src="{@docRoot}design/media/confirm_ack_ex_plus1.png">
     <p><strong>확인이 필요 없습니다</strong>. 사용자가 실수로 +1을 누른 경우, 별문제가 되지 않습니다. 버튼을 다시 터치하여 해당 작업의 실행을 취소하면 됩니다.</p>
     <p><strong>승인이 필요 없습니다</strong>. 사용자는 +1 버튼이 바운스되고 빨간색으로 바뀌는 것을 볼 수 있습니다. 이는 매우 분명한 신호입니다.</p>
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <h4>예: 홈 화면에서 앱 제거하기</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_removeapp.png">
     <p><strong>확인이 필요 없습니다</strong>. 이는 의도적인 작업으로, 사용자는 상대적으로 크고 고립된 대상으로 항목을 끌어다 놓을 것입니다. 따라서 실수가 발생할 가능성이 매우 낮습니다. 하지만 사용자가 이 결정을 후회하는 경우, 다시 복구하는 데는 몇 초면 됩니다.</p>
diff --git a/docs/html-intl/intl/ko/design/patterns/navigation.jd b/docs/html-intl/intl/ko/design/patterns/navigation.jd
index 8e5c30b..5f335d5 100644
--- a/docs/html-intl/intl/ko/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/ko/design/patterns/navigation.jd
@@ -1,4 +1,4 @@
-page.title=뒤로 및 위로 탐색 기능이 포함된 탐색
+page.title=Back 탐색과 Up 탐색
 page.tags="navigation","activity","task","up navigation","back navigation"
 page.image=/design/media/navigation_between_siblings_gmail.png
 @jd:body
@@ -6,41 +6,41 @@
 <a class="notice-developers" href="{@docRoot}training/implementing-navigation/index.html">
   <div>
     <h3>개발자 문서</h3>
-    <p>효과적인 탐색 구현하기</p>
+    <p>효과적인 탐색 구현</p>
   </div>
 </a>
 
 <p itemprop="description">일관적인 탐색 기능은 전반적인 사용자 환경에 필수적인 요소입니다. 일관성 없고 예상대로 진행되지 않는 기본 탐색은
 사용자에게 많은 실망을 줍니다. Android 3.0에서는
-글로벌 탐색 동작에 중요한 변경 사항을 도입했습니다. 뒤로 및 위로 탐색에 대한
+글로벌 탐색 동작에 중요한 변경 사항을 도입했습니다. Back 및 Up 탐색에 대한
 가이드라인을 꼼꼼히 따르면 사용자가 예상 가능하고 신뢰할 수 있는 탐색 기능이 탑재된 앱을 만들 수 있습니다.</p>
-<p>Android 2.3 이하 버전에서는
-앱 내 탐색 기능을 지원하기 위해 시스템의 <em>뒤로</em> 버튼에 의존했습니다. Android 3.0에서는 작업 모음을 도입함으로써 앱 아이콘 및 왼쪽 방향 캐럿으로 이루어진 2차 탐색 메커니즘인
-<em>위로</em> 버튼이 추가되었습니다.</p>
+<p>Android 2.3 이하 버전에서는 앱 내 탐색 기능을 지원하기 위해 시스템의 <em>Back</em> 버튼에
+의존했습니다. Android 3.0에서는 작업 모음을 도입함으로써 앱 아이콘 및 왼쪽 방향 캐럿으로 이루어진
+2차 탐색 메커니즘인<em>Up</em> 버튼이 추가되었습니다.</p>
 
 <img src="{@docRoot}design/media/navigation_with_back_and_up.png">
 
-<h2 id="up-vs-back">위로 및 뒤로 비교</h2>
+<h2 id="up-vs-back">Up과 Back</h2>
 
-<p>위로 버튼은 화면
+<p>Up 버튼은 화면
 간의 계층적 관계를 기반으로 앱 내에서 탐색할 때 사용됩니다. 예를 들어, 화면 A에 표시된 항목 목록에서 항목을 선택하면 항목에 대한 세부 정보를 표시하는 화면 B로 이동하게 되는데, 이때
 화면 B는 화면 A로
-돌아가는 위로 버튼을 제공해야 합니다.</p>
-<p>화면이 앱의 최상단에 있는 경우(즉, 앱의 홈인 경우), 위로
+돌아가는 Up 버튼을 제공해야 합니다.</p>
+<p>화면이 앱의 최상단에 있는 경우(즉, 앱의 홈인 경우), Up
 버튼이 표시되지 않아야 합니다.</p>
 
-<p>시스템의 뒤로 버튼은 사용자가 최근에 작업한 화면
+<p>시스템의 Back 버튼은 사용자가 최근에 작업한 화면
 기록을 역순으로 탐색할 때 사용됩니다. 일반적으로 이 버튼은 앱의 계층 구조가 아닌 화면
 간의 일시적인 관계를 기반으로 합니다.</p>
 
 <p>또한, 앞서 본 화면이 현재 화면의 계층적 상위 화면일 경우
-뒤로 버튼을 누르는 것과 위로 버튼을 누르는 것의 결과가 동일하며, 이는 흔하게
-발생하는 동작입니다. 하지만 사용자가 앱 내에 머무는 위로 버튼과 달리, 뒤로
+Back 버튼을 누르는 것과 Up 버튼을 누르는 것의 결과가 동일하며, 이는 흔하게
+발생하는 동작입니다. 하지만 사용자가 앱 내에 머무는 Up 버튼과 달리, Back
 버튼을 누르면 홈 화면 또는 다른 앱으로 돌아갈 수 있습니다.</p>
 
 <img src="{@docRoot}design/media/navigation_up_vs_back_gmail.png">
 
-<p>뒤로 버튼은 화면 간 탐색과 직접적으로 관련 없는 몇 가지 동작도 지원합니다.
+<p>Back 버튼은 화면 간 탐색과 직접적으로 관련 없는 몇 가지 동작도 지원합니다.
 </p>
 <ul>
 <li>부동 창 해제(대화 상자, 팝업)</li>
@@ -49,13 +49,13 @@
 </ul>
 <h2 id="within-app">앱 내 탐색</h2>
 
-<h4>진입 지점이 여러 개인 화면으로 이동하기</h4>
+<h4>여러 진입 지점을 통한 화면 탐색</h4>
 <p>일부 화면은 앱의 계층 구조 내에서 엄격한 위치를 가지고 있지 않는 경우가 있으며, 이 경우 여러 진입 지점을
 통해서 접근할 수 있습니다. 예를 들어 설정 화면은 앱
-내의 다른 어떤 화면에서도 접근이 가능합니다. 이러한 경우, 위로 버튼을 누르면 뒤로 버튼과
-동일하게 참조하는 화면으로 돌아가게 됩니다.</p>
-<h4>화면 내에서 뷰 변경하기</h4>
-<p>화면의 뷰 옵션 변경은 위로 또는 뒤로 버튼의 동작을 변경하지 않습니다. 이는 화면이 앱 계층 구조 내에서 여전히 동일한 위치에
+내의 다른 어떤 화면에서도 접근이 가능합니다. 이러한 경우, Up 버튼을 누르면 Back 버튼과 동일하게
+참조하는 화면으로 돌아가게 됩니다.</p>
+<h4>화면 내에서 뷰 변경</h4>
+<p>화면의 뷰 옵션 변경은 Up 또는 Back 버튼의 동작을 변경하지 않습니다. 이는 화면이 앱 계층 구조 내에서 여전히 동일한 위치에
 있고, 어떠한 탐색 기록도 새로 생성되지 않기 때문입니다.</p>
 <p>이러한 뷰 변경의 예는 다음과 같습니다.</p>
 <ul>
@@ -70,21 +70,21 @@
 항목으로 직접 이동할 수 있도록 지원하는 것이 바람직한
 경우도 있습니다. 예를 들어 Gmail의 대화에서 왼쪽 또는 오른쪽으로 간단하게 스와이프하여 동일한 받은 편지함에 있는 신규 또는 이전 메일을
 볼 수 있습니다. 화면 내에서 뷰를 변경하는 것과 마찬가지로,
-탐색은 위로 또는 뒤로 버튼의 동작을 바꾸지 않습니다.</p>
+탐색은 Up 또는 Back 버튼의 동작을 바꾸지 않습니다.</p>
 
 <img src="{@docRoot}design/media/navigation_between_siblings_gmail.png">
 
 <p>하지만 참조 목록으로 같이
 묶여 있지 않은 연관된 상세 뷰 사이를 탐색할 때는 주목할 만한 예외적인 상황이 발생합니다. 예를 들어, Play Store에서
 동일한 개발자가 만든 여러 앱 또는 동일한 아티스트의 여러 앨범을 탐색하는 경우가 그렇습니다. 이러한 경우, 링크를 따라갈 때마다
-기록이 생성되므로, 뒤로 버튼을 누르면 이전에 본 화면으로 이동합니다. 위로 버튼을 누르면 계속해서 이러한 연관된 화면을
+기록이 생성되므로, Back 버튼을 누르면 이전에 본 화면으로 이동합니다. Up 버튼을 누르면 계속해서 이러한 연관된 화면을
 거치지 않고 가장 최근에 본 컨테이너 화면으로 이동합니다.</p>
 
 <img src="{@docRoot}design/media/navigation_between_siblings_market1.png">
 
 <p>상세
-뷰에 대한 지식을 바탕으로 더욱 스마트한 위로 버튼 동작을 구현할 수 있습니다. 위에서 설명한 Play Store 예를 확장하여 사용자가
-마지막으로 본 도서에서 해당 도서를 각색한 영화의 세부 정보 화면으로 이동했다고 가정해 봅니다. 그러한 경우, 위로 버튼을 누르면 사용자가 이전에 탐색한 적이 없는
+뷰에 대한 지식을 바탕으로 더욱 스마트한 Up 버튼 동작을 구현할 수 있습니다. 위에서 설명한 Play Store 예를 확장하여 사용자가
+마지막으로 본 도서에서 해당 도서를 각색한 영화의 세부 정보 화면으로 이동했다고 가정해 봅니다. 그러한 경우, Up 버튼을 누르면 사용자가 이전에 탐색한 적이 없는
 컨테이너(영화)로 이동할 수 있습니다.</p>
 
 <img src="{@docRoot}design/media/navigation_between_siblings_market2.png">
@@ -95,22 +95,22 @@
 있는 화면으로 바로 이동할 수 있게 할 수 있습니다. 예를 들어, Gmail의 받은 편지함 위젯과 새 메시지 알림은
 모두 받은 편지함 화면을 건너뛰고 사용자가 해당 메일로 바로 이동할 수 있게 해줍니다.</p>
 
-<p>이러한 두 경우 모두 위로 버튼을 다음과 같이 처리합니다.</p>
+<p>이러한 두 경우 모두 Up 버튼을 다음과 같이 처리합니다.</p>
 
 <ul>
 <li><em>일반적으로 목적지 화면이
-앱 내의 특정 화면에서 출발한 경우</em>, 위로 버튼은 해당 화면으로 이동해야 합니다.</li>
-<li><em>그 외의 경우</em>, 위로 버튼은 앱의 최상위("홈") 화면으로 이동해야 합니다.</li>
+앱 내의 특정 화면에서 출발한 경우</em>, Up 버튼은 해당 화면으로 이동해야 합니다.</li>
+<li><em>그 외의 경우</em>, Up 버튼은 앱의 최상위("홈") 화면으로 이동해야 합니다.</li>
 </ul>
 
-<p>뒤로 버튼의 경우,
+<p>Back 버튼의 경우,
 앱의 최상위 화면으로 이동하는 완전한 상위 탐색 경로를 태스크의 백 스택에 삽입하여 탐색을 더욱 예측 가능하게 만들어야 합니다. 이는 앱에 어떻게 진입했는지 잊어버린
 사용자가 앱에서 나가기
 전에 앱의 최상위 화면으로 이동할 수 있게 해줍니다.</p>
 
 <p>예를 들어 Gmail의 홈 화면 위젯은 메일 작성
-화면으로 바로 진입할 수 있는 버튼을 제공합니다. 메일 작성 화면에서 위로 또는
-뒤로 버튼을 누르면 받은 편지함으로 이동하게 되고, 받은 편지함에서 뒤로 버튼을 누르면 홈으로 돌아가게 됩니다.</p>
+화면으로 바로 진입할 수 있는 버튼을 제공합니다. 메일 작성 화면에서 Up 또는
+Back 버튼을 누르면 받은 편지함으로 이동하게 되고, 받은 편지함에서 Back 버튼을 누르면 홈으로 돌아가게 됩니다.</p>
 
 <img src="{@docRoot}design/media/navigation_from_outside_back.png">
 
@@ -118,20 +118,20 @@
 
 <p>앱이 동시에 다양한 이벤트 정보를 제공해야 하는 경우, 사용자를 틈새 화면(interstitial screen)으로 이동하게 하는
 단일 알림을 사용할 수 있습니다. 이 화면은
-이러한 이벤트를 요약하고, 사용자가 앱을 세부적으로 탐색할 수 있는 경로를 제공합니다. 이러한 스타일의 알림을 <em>간접 알림</em>이라고
-합니다.</p>
+이러한 이벤트를 요약하고, 사용자가 앱을 세부적으로 탐색할 수 있는 경로를 제공합니다. 이러한 스타일의 알림을
+<em>간접 알림</em>이라고 합니다.</p>
 
 <p>기본(직접) 알림과 달리, 간접 알림의
-틈새 화면에서 뒤로 버튼을 누르면 백 스택에 다른 화면이
+틈새 화면에서 Back 버튼을 누르면 백 스택에 다른 화면이
 추가되지 않고 알림이 트리거된 지점으로 사용자를 이동시킵니다. 사용자가
-틈새 화면에서 앱으로 들어가면, 위로 버튼 및 뒤로 버튼은 위에서 설명한 바와 같이 틈새 화면으로 돌아가지 않고, 기본 알림과 마찬가지로 앱 내에서
+틈새 화면에서 앱으로 들어가면, Up 버튼 및 Back 버튼은 위에서 설명한 바와 같이 틈새 화면으로 돌아가지 않고, 기본 알림과 마찬가지로 앱 내에서
 탐색을 수행합니다.</p>
 
 <p>예를 들어 Gmail을 사용 중인 사용자가 캘린더로부터 간접 알림을 받았다고 가정해 봅니다. 해당
 알림을 터치하면 틈새 화면이 열립니다. 이 화면에는 다른
-여러 이벤트에 대한 알림도 표시됩니다. 틈새 화면에서 뒤로 버튼을 터치하면 Gmail로 돌아갑니다. 특정
+여러 이벤트에 대한 알림도 표시됩니다. 틈새 화면에서 Back 버튼을 터치하면 Gmail로 돌아갑니다. 특정
 이벤트를 터치하면 사용자를 틈새 화면에서 나오게 하여
-해당 이벤트의 세부 정보를 보여주는 완전한 캘린더 앱으로 이동하게 됩니다. 이벤트 세부 정보 화면에서 위로 버튼과 뒤로 버튼을 누르면 캘린더의 최상위 뷰로 이동하게 됩니다.</p>
+해당 이벤트의 세부 정보를 보여주는 완전한 캘린더 앱으로 이동하게 됩니다. 이벤트 세부 정보 화면에서 Up 버튼과 Back 버튼을 누르면 캘린더의 최상위 뷰로 이동하게 됩니다.</p>
 
 <img src="{@docRoot}design/media/navigation_indirect_notification.png">
 
@@ -144,20 +144,20 @@
 초대를 사용자에게 알리기 위해 이러한 스타일의 알림을 사용하며, 이 초대는 몇 초 후에 자동으로 만료됩니다.</p>
 
 <p>탐색 동작 측면에서, 팝업 알림은 간접
-알림의 틈새 화면 동작을 상당히 많이 따릅니다. 뒤로 버튼을 누르면 팝업 알림이 해제됩니다. 사용자가 팝업을
-통해 앱으로 이동하면, 위로 및 뒤로 버튼은 기본 알림의 규칙에 따라 앱 내에서
+알림의 틈새 화면 동작을 상당히 많이 따릅니다. Back 버튼을 누르면 팝업 알림이 해제됩니다. 사용자가 팝업을
+통해 앱으로 이동하면, Up 및 Back 버튼은 기본 알림의 규칙에 따라 앱 내에서
 탐색합니다.</p>
 
 <img src="{@docRoot}design/media/navigation_popup_notification.png">
 
 <h2 id="between-apps">앱 간 탐색</h2>
 
-<p>Android 시스템의 기본이 되는 강점 중 하나는 앱이
-다른 앱을 실행할 수 있다는 점이며, 이로 인해 사용자는 한 앱에서 다른 앱으로 직접 이동할 수 있습니다. 예를 들어, 사진을 캡처해야 하는
-앱은 카메라 앱을 작동시킬 수 있으며, 카메라 앱은 사진을 해당 앱으로
-돌려줍니다. 이러한 기능은 개발자와 사용자 모두에게 매우 유용합니다. 왜냐하면 개발자는 쉽게 다른 앱의
-코드를 활용할 수 있고, 사용자는 흔히 수행하는
-작업을 일관된 환경으로 즐길 수 있기 때문입니다.</p>
+<p>Android 시스템의 본질적인 강점 중 하나는 앱이 
+다른 앱을 실행할 수 있다는 점이며, 이로 인해 사용자는 한 앱에서 다른 앱으로 직접 이동할 수 있습니다. 예를 들어,
+사진을 캡처해야 하는 앱은 카메라 앱을 작동시킬 수 있으며, 카메라 앱은 사진을
+해당 앱으로 돌려줍니다. 이러한 기능은 개발자와 사용자 모두에게 매우 유용합니다.
+왜냐하면 개발자는 쉽게 다른 앱의 코드를 활용할 수 있고, 사용자는 흔히 수행하는 작업을 일관된 환경으로
+즐길 수 있기 때문입니다.</p>
 
 <p>앱 간 탐색을 이해하려면 아래에서
 설명하는 Android 프레임워크 동작을 알아야 합니다.</p>
@@ -179,9 +179,9 @@
 
 <h4>예: "공유하기"를 지원하는 앱 간에 탐색하기</h4>
 
-<p>액티비티, 태스크, 인텐트가 어떻게 같이 동작하는지 이해하려면 한 앱이 다른 앱을 사용하여 콘텐츠
-공유를 어떻게 가능하게 하는지 생각해 보세요. 예를 들어, 홈에서 Play Store 앱을 실행하면
-새로운 태스크 A가 시작됩니다(아래 그림 참조). Play Store에서 탐색하다가 홍보 도서의 세부 정보를
+<p>액티비티, 태스크, 인텐트가 어떻게 같이 동작하는지 이해하려면 앱이 어떻게 사용자가 다른 앱을 사용하여 콘텐츠를
+공유할 수 있도록 하는지 생각해 보세요. 예를 들어, 홈에서 Play 스토어 앱을 실행하면 새로운 태스크
+A가 시작됩니다(아래 그림 참조). Play 스토어에서 탐색하다가 홍보 도서의 세부 정보를
 보기 위해 터치하면, 다른 액티비티를 추가하여 태스크를 연장하는 방식으로 사용자는 동일한 태스크에 머물게 됩니다. 공유하기
 작업을 트리거하면 공유하기 인텐트를 처리하도록
 등록된 액티비티(다양한 앱에서 제공)가 나열된 목록을 보여주는 대화 상자가 표시됩니다.</p>
@@ -192,15 +192,15 @@
 태스크 A의 연장으로 Gmail의 메일 작성 액티비티가 추가됩니다. Gmail의 백그라운드에서 실행되는 자체적인 태스크가 있을 경우, 해당 태스크는 아무런
 영향도 받지 않습니다.</p>
 
-<p>메일 작성 액티비티에서 메시지를 보내거나 뒤로 버튼을 터치하면, 사용자는
-도서 세부 정보 액티비티로 돌아가게 됩니다. 뒤로 버튼을 연이어 터치하면 Play
+<p>메일 작성 액티비티에서 메시지를 보내거나 Back 버튼을 터치하면, 사용자는
+도서 세부 정보 액티비티로 돌아가게 됩니다. Back 버튼을 연이어 터치하면 Play
 Store에서 탐색한 페이지로 되돌아가게 되어 결국에는 홈 화면에 이르게 됩니다.</p>
 
 <img src="{@docRoot}design/media/navigation_between_apps_back.png">
 
-<p>하지만 사용자가 메일 작성 액티비티에서 위로 버튼을 터치하는 것은
+<p>하지만 사용자가 메일 작성 액티비티에서 Up 버튼을 터치하는 것은
 Gmail에 남아 있고자 하는 의지를 보이는 것입니다. 따라서, 이 경우 Gmail의 대화 목록 액티비티가 표시되고, 새로운 태스크 B가 생성됩니다. 새로운 태스크는
-항상 홈에 기반을 두고 있기 때문에, 대화 목록에서 뒤로 버튼을 터치하면 홈으로 되돌아가게 됩니다.</p>
+항상 홈에 기반을 두고 있기 때문에, 대화 목록에서 Back 버튼을 터치하면 홈으로 되돌아가게 됩니다.</p>
 
 <img src="{@docRoot}design/media/navigation_between_apps_up.png">
 
@@ -208,6 +208,6 @@
 최근 앱 화면을 통해). Gmail에 이미 백그라운드에서 실행 중인 자체적인 태스크가 있을 경우,
 해당 태스크는 태스크 B로 대체됩니다. 이전 컨텍스트는 사용자의 새로운 목적에 따라 제거됩니다.</p>
 
-<p>앱 계층 구조 내의 액티비티에서 인텐트를 처리하도록 앱에서 등록하는 경우, 위로 탐색을 지정하는 방법에 대한 지침을 확인하려면
+<p>앱 계층 구조 내의 액티비티에서 인텐트를 처리하도록 앱에서 등록하는 경우, Up 탐색을 지정하는 방법에 대한 지침을 확인하려면
 <a href="#into-your-app">홈 화면 위젯 및
 알림을 통한 앱 탐색</a>을 참조하세요.</p>
diff --git a/docs/html-intl/intl/ko/distribute/index.jd b/docs/html-intl/intl/ko/distribute/index-ko.jd
similarity index 100%
rename from docs/html-intl/intl/ko/distribute/index.jd
rename to docs/html-intl/intl/ko/distribute/index-ko.jd
diff --git a/docs/html-intl/intl/ko/guide/components/activities.jd b/docs/html-intl/intl/ko/guide/components/activities.jd
new file mode 100644
index 0000000..001982f
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/components/activities.jd
@@ -0,0 +1,756 @@
+page.title=작업
+page.tags=activity,intent
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>이 문서의 내용</h2>
+<ol>
+  <li><a href="#Creating">액티비티 생성하기</a>
+    <ol>
+      <li><a href="#UI">사용자 인터페이스 구현하기</a></li>
+      <li><a href="#Declaring">매니페스트에서 액티비티 선언하기</a></li>
+    </ol>
+  </li>
+  <li><a href="#StartingAnActivity">액티비티 시작하기</a>
+    <ol>
+      <li><a href="#StartingAnActivityForResult">결과에 대한 액티비티 시작하기</a></li>
+    </ol>
+  </li>
+  <li><a href="#ShuttingDown">액티비티 종료하기</a></li>
+  <li><a href="#Lifecycle">액티비티 수명 주기 관리하기</a>
+    <ol>
+      <li><a href="#ImplementingLifecycleCallbacks">수명 주기 콜백 구현하기</a></li>
+      <li><a href="#SavingActivityState">액티비티 상태 저장하기</a></li>
+      <li><a href="#ConfigurationChanges">구성 변경 처리하기</a></li>
+      <li><a href="#CoordinatingActivities">액티비티 조정하기</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>Key 클래스</h2>
+<ol>
+  <li>{@link android.app.Activity}</li>
+</ol>
+
+<h2>참고 항목</h2>
+<ol>
+  <li><a href="{@docRoot}guide/components/tasks-and-back-stack.html">작업 및 백
+스택</a></li>
+</ol>
+
+</div>
+</div>
+
+
+
+<p>{@link android.app.Activity}는 일종의 애플리케이션 구성 요소로서, 
+사용자와 상호작용할 수 있는 화면을 제공하여 전화 걸기, 사진 찍기, 이메일 보내기 또는 지도 보기 등의 일을 할 수 
+있습니다. 액티비티마다 창이 하나씩 주어져 이곳에 사용자 인터페이스를 끌어올 수 있습니다. 이 창은 
+일반적으로 화면을 가득 채우지만, 작은 창으로 만들어 다른 창 위에 띄울 수도 
+있습니다.</p>
+
+<p> 하나의 애플리케이션은 보통 여러 개의 액티비티가 느슨하게 서로 묶여 있는 형태로 
+구성됩니다. 통상 한 애플리케이션 내에서 하나의 액티비티가 "주요" 액티비티로 지정되며, 
+사용자가 이 애플리케이션을 처음 실행할 때 이 액티비티가 사용자에게 표시됩니다. 그런 후 
+각각의 액티비티는 여러 가지 작업을 수행하기 위해 또 다른 액티비티를 시작할 수 있습니다. 새로운
+액티비티가 시작될 때마다 이전 액티비티는 중단되지만 시스템은 해당 액티비티를
+스택("백 스택")에 보존합니다. 새로운 액티비티가 시작되면, 이것이 백 스택 위로 밀려와 사용자의 
+시선을 끕니다. 백 스택은 기본적인 "후입선출" 방식을 지키므로, 
+사용자가 현재 액티비티를 끝내고 <em>뒤로</em> 버튼을 누르면 해당 액티비티가 
+스택에서 튀어나와(소멸되고) 이전 액티비티를 재개합니다 (백 스택은
+<a href="{@docRoot}guide/components/tasks-and-back-stack.html">작업
+및 백 스택</a> 문서에서 상세하게 논의합니다).</p>
+
+<p>한 액티비티가 새로운 액티비티의 시작으로 인해 중단된 경우, 이 상태 변경은
+액티비티의 수명 주기 콜백 메서드를 통해 알려집니다. 
+액티비티가 시스템 액티비티를 생성, 중단, 재시작, 제거하는 등의 상태 변화로 인해 받을 수 있는 콜백 메서드는 여러 가지가 있습니다.
+
+ 각 콜백은 상태 변화에 알맞은 특정 작업을 수행할 기회를 제공합니다.
+ 예를 들어 액티비티가 중단되면 네트워크 또는 데이터베이스 연결과 같이 
+큰 개체는 모두 해제해야 합니다. 액티비티가 재개되면, 필요한 리소스를 
+다시 획득하여 중단된 작업을 재개할 수 있습니다. 이러한 상태 전환은
+모두 액티비티 수명 주기의 일부입니다.</p>
+
+<p>이 문서의 남은 부분에서는 다양한 액티비티 상태 사이의 전환을 적절히 관리할 수 있도록 액티비티 수명 주기가 작동하는 방식을 자세히 논하는 등,
+액티비티를 구축하고 사용하는 기본적 방법을
+설명합니다.</p>
+
+
+
+<h2 id="Creating">액티비티 생성하기</h2>
+
+<p>액티비티를 생성하려면 {@link android.app.Activity}의 하위 클래스(또는 이의
+기존 하위 클래스)를 생성해야 합니다. 하위 클래스에서는
+액티비티 생성, 중단, 재개, 소멸 시기 등과 같은
+수명 주기의 다양한 상태 간 액티비티가 전환될 때 시스템이 호출하는 콜백 메서드를 구현해야 합니다. 가장 중요한 두 가지 콜백 메서드는 
+다음과 같습니다.</p>
+
+<dl>
+  <dt>{@link android.app.Activity#onCreate onCreate()}</dt>
+  <dd>이 메서드는 반드시 구현해야 합니다. 시스템은 액티비티를 생성할 때 이것을 호출합니다.
+ 구현하는 중에 액티비티의 필수 구성 요소를 초기화해야 
+합니다.
+    무엇보다도 중요한 점은, 바로 여기서 {@link android.app.Activity#setContentView
+    setContentView()}를 호출해야 액티비티의 사용자 인터페이스 레이아웃을 정의할 수 있다는 점입니다.</dd>
+  <dt>{@link android.app.Activity#onPause onPause()}</dt>
+  <dd>시스템이 이 메서드를 호출하는 것은 사용자가 액티비티를 떠난다는 
+첫 번째 신호입니다(다만 이것이 항상 액티비티가 소멸 중이라는 뜻은 아닙니다). 현재 사용자 세션을 넘어서 
+지속되어야 하는 변경 사항을 커밋하려면 보통 이곳에서 해아 합니다(사용자가 
+돌아오지 않을 수 있기 때문입니다).</dd>
+</dl>
+
+<p>여러 액티비티 사이에서 원활한 사용자 경험을 제공하고, 액티비티 중단이나 심지어 
+소멸을 초래할 수도 있는 예상치 못한 간섭을 처리하기 위해 사용해야 하는 다른 수명 주기 
+콜백 메서드도 여러 가지 있습니다. 모든 수명 주기 콜백 메서드는 나중에 
+<a href="#Lifecycle">액티비티 수명 주기 관리</a> 섹션에서 자세히 논의할 것입니다.</p>
+
+
+
+<h3 id="UI">사용자 인터페이스 구현하기</h3>
+
+<p> 한 액티비티에 대한 사용자 인터페이스는 보기 계층&mdash;즉, 
+{@link android.view.View} 클래스에서 파생된 개체가 제공합니다.  각 보기는 액티비티 창 안의 특정한 직사각형 공간을
+ 제어하며 사용자 상호 작용에 대응할 수 있습니다. 예를 들어, 어떤 보기는 사용자가 터치하면 
+작업을 시작하는 버튼일 수 있습니다.</p>
+
+<p>Android는 레이아웃을 디자인하고 정리하는 데 사용할 수 있도록 여러 가지 보기를 미리 만들어 
+제공합니다. "위젯"이란 화면에 시각적(이자 대화형) 요소를 제공하는 보기입니다. 예를 들어 
+버튼, 텍스트 필드, 확인란이나 그저 하나의 이미지일 수도 있습니다. "레이아웃"은 선형 레이아웃, 격자형 레이아웃, 상대적 레이아웃과 같이 하위 레이아웃에 대해 독특한 레이아웃 모델을 제공하는 {@link
+android.view.ViewGroup}에서 파생된
+보기입니다. 또한, {@link android.view.View}와
+{@link android.view.ViewGroup} 클래스(또는 기존 하위 클래스)의 아래로 내려가서 위젯과 레이아웃을 생성하고
+이를 액티비티 레이아웃에 적용할 수 있습니다.</p>
+
+<p>보기를 사용하여 레이아웃을 정의하는 가장 보편적인 방식은 애플리케이션 리소스에 저장된 
+XML 레이아웃 파일을 사용하는 것입니다. 이렇게 하면 액티비티의 동작을 정의하는
+소스 코드와 별개로 사용자 인터페이스 디자인을 유지할 수 있습니다. 
+{@link android.app.Activity#setContentView(int) setContentView()}로 액티비티의 UI로서 레이아웃을 설정하고,
+해당 레이아웃의 리소스 ID를 전달할 수 있습니다. 그러나 액티비티 코드에 새로운 {@link android.view.View}를 생성하고
+ 새로운 {@link
+android.view.View}를 {@link android.view.ViewGroup}에 삽입하여 보기 계층을 구축한 뒤 루트 
+{@link android.view.ViewGroup}을 {@link android.app.Activity#setContentView(View)
+setContentView()}에 전달해도 해당 레이아웃을 사용할 수 있습니다.</p>
+
+<p>사용자 인터페이스 생성에 관한 정보는 <a href="{@docRoot}guide/topics/ui/index.html">사용자 인터페이스</a> 문서를 참조하십시오.</p>
+
+
+
+<h3 id="Declaring">매니페스트에서 액티비티 선언하기</h3>
+
+<p>시스템에서 액티비티에 액세스할 수 있게 하려면 이를 매니페스트 파일에서 
+선언해야만 합니다. 액티비티를 선언하려면 매니페스트 파일을 열고 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 요소를
+ <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>
+요소의 하위 항목으로 추가합니다. 예:</p>
+
+<pre>
+&lt;manifest ... &gt;
+  &lt;application ... &gt;
+      &lt;activity android:name=".ExampleActivity" /&gt;
+      ...
+  &lt;/application ... &gt;
+  ...
+&lt;/manifest &gt;
+</pre>
+
+<p>액티비티 레이블, 액티비티 아이콘 또는 액티비티 UI 스타일용 테마와 같이
+이 요소에 포함할 수 있는 속성이 여러 가지 있습니다.
+ <a href="{@docRoot}guide/topics/manifest/activity-element.html#nm">{@code android:name}</a>
+ 속성이 유일한 필수 속성입니다. 이것이 액티비티의 클래스 이름을 지정합니다. 일단
+ 애플리케이션을 게시하고 나면 이 이름을 변경해서는 안 됩니다. 이름을 변경하면
+애플리케이션 바로 가기와 같은 일부 기능이 고장 날 수 있습니다(블로그 게시물의 <a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">바꿀 수 없는
+항목</a>을 참조하십시오).</p>
+
+<p>매니페스트에서 액티비티를 선언하는 것에 관한 자세한 정보는 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 요소
+ 참고 자료를 참조하십시오.</p>
+
+
+<h4>인텐트 필터 사용하기</h4>
+
+<p><a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> 요소 또한 여러 가지 인텐트 필터를 지정할 수 있습니다. 다른 애플리케이션 구성 요소가 이를 활성화하는 방법을 선언하기 위해 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a>를 사용하는 
+것입니다.</p>
+
+<p>Android SDK 도구를 사용하여 새 애플리케이션을 생성하는 경우, 개발자를 위해 
+생성되어 있는 스텁 액티비티에 자동으로 인텐트 필터가 포함되어 있어 "주요" 동작에 
+응답하는 액티비티를 선언하며, 이는 "시작 관리자" 범주에 배치해야 합니다. 인텐트 필터는 다음과 
+같은 형태를 띱니다.</p>
+
+<pre>
+&lt;activity android:name=".ExampleActivity" android:icon="@drawable/app_icon"&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p><a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> 요소는 이것이 애플리케이션으로 가는 "주요" 진입 지점이라는 것을 나타냅니다. <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> 요소는 이 액티비티가 시스템의 
+애플리케이션 시작 관리자에 목록으로 나열되어야 한다는 것을 나타냅니다(사용자가 이 액티비티를 시작할 수 있도록 해줌).</p>
+
+<p>애플리케이션이 자체 포함 방식이기를 원하고 다른 애플리케이션이 이 
+애플리케이션의 액티비티를 활성화하도록 허용하지 않고자 하면, 달리 인텐트 필터가 더 필요하지 않습니다. "주요" 동작과 "시작 관리자" 범주가 있는 
+액티비티는 하나뿐이어야 합니다(이전 예시 참조). 다른 애플리케이션에서 
+사용할 수 없게 하고자 하는 액티비티에는 인텐트 필터가 있으면 안 됩니다. 
+이러한 액티비티는 명시적인 인텐트를 사용해 직접 시작할 수 있습니다(이 내용은 다음 섹션에서 논의).</p>
+
+<p>그러나, 액티비티가 다른 애플리케이션(및 본인의 애플리케이션)에서 
+전달된 암시적 인텐트에 응답하도록 하려면 액티비티에 추가로 인텐트 필터를 정의해야만 
+합니다. 응답하게 하고자 하는 각 인텐트 유형별로 
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> 요소를 포함하는 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a>를 하나씩 포함시켜야 하며, 선택 사항으로 <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> 요소 및/또는 <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
+&lt;data&gt;}</a> 요소를 포함시킬 수 있습니다. 이와 같은 요소는 액티비티가 응답할 수 있는 인텐트의 유형을 
+나타냅니다.</p>
+
+<p>액티비티가 인텐트에 응답하는 방식에 관한 자세한 정보는 <a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a>
+문서를 참조하십시오.</p>
+
+
+
+<h2 id="StartingAnActivity">액티비티 시작하기</h2>
+
+<p>다른 액티비티를 시작하려면 {@link android.app.Activity#startActivity
+ startActivity()}를 호출한 다음 이에 시작하고자 하는 액티비티를 설명하는 {@link android.content.Intent}를 
+전달하면 됩니다. 인텐트는 시작하고자 하는 액티비티를 정확히 나타내거나, 수행하고자 하는 작업의 
+유형을 설명하는 것입니다(시스템이 적절한 액티비티를 선택하며, 
+이는
+ 다른 애플리케이션에서 가져온 것일 수도 있습니다). 인텐트는 소량의 데이터를 운반하여 시작된 액티비티에서
+ 사용할 수 있습니다.</p>
+
+<p>본인의 애플리케이션 안에서 작업하는 경우에는, 알려진 액티비티를 시작하기만 하면 되는 경우가 잦습니다.
+ 이렇게 하려면 시작하고자 하는 액티비티를 명시적으로 정의하는 인텐트를 클래스 이름을 
+사용하여 생성하면 됩니다. 예를 들어, 다음은 한 액티비티가 {@code
+SignInActivity}라는 이름의 다른 액티비티를 시작하는 방법입니다.</p>
+
+<pre>
+Intent intent = new Intent(this, SignInActivity.class);
+startActivity(intent);
+</pre>
+
+<p>그러나, 애플리케이션이 다른 몇 가지 동작을 수행하고자 할 수도 있습니다. 예를 들어 이메일 보내기, 문자 
+메시지 보내기 또는 상태 업데이트 등을 액티비티의 데이터를 사용하여 수행하는 것입니다. 이 경우, 본인의 애플리케이션에 
+그러한 동작을 수행할 자체 액티비티가 없을 수도 있습니다. 따라서 기기에 있는 다른 애플리케이션이 
+제공하는 액티비티를 대신 활용하여 동작을 수행하도록 할 수 있습니다. 바로 이 부분에서 
+인텐트의 진가가 발휘됩니다. 수행하고자 하는 동작을 설명하는 인텐트를 생성하면 
+시스템이 적절한 액티비티를
+ 다른 애플리케이션에서 시작하는 것입니다. 해당 인텐트를
+ 처리할 수 있는 액티비티가 여러 개 있는 경우, 사용자가 어느 것을 사용할지 선택합니다. 예를
+ 들어 사용자가 이메일 메시지를 보낼 수 있게 하려면, 다음과 같은 인텐트를 
+생성하면 됩니다.</p>
+
+<pre>
+Intent intent = new Intent(Intent.ACTION_SEND);
+intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
+startActivity(intent);
+</pre>
+
+<p>인텐트에 추가된 {@link android.content.Intent#EXTRA_EMAIL} 추가 사항은 이메일이 전송되어야 할 이메일 주소의
+ 문자열 배열입니다. 이메일 애플리케이션이 이 인텐트에 
+응답하면, 애플리케이션은 추가 사항이 제공한 문자열 배열을 읽어낸 다음 이를 이메일 작성 양식의
+ "수신" 필드에 배치합니다. 이 상황에서 이메일 애플리케이션의 액티비티가 시작되고 사용자가
+ 작업을 끝내면 본인의 액티비티가 재개되는 것입니다.</p>
+
+
+
+
+<h3 id="StartingAnActivityForResult">결과에 대한 액티비티 시작하기</h3>
+
+<p>때로는 시작한 액티비티에서 결과를 받고 싶을 수도 있습니다. 그런 경우,
+ ({@link android.app.Activity#startActivity
+ startActivity()} 대신) {@link android.app.Activity#startActivityForResult
+ startActivityForResult()}를 호출해서 액티비티를 시작합니다. 그런 다음 후속 액티비티에서 결과를 
+받으려면, {@link android.app.Activity#onActivityResult onActivityResult()} 콜백
+ 메서드를 구현합니다. 해당 후속 액티비티가 완료되면, 이것이 {@link
+android.content.Intent} 형식으로 결과를 {@link android.app.Activity#onActivityResult onActivityResult()}
+ 메서드에 반환합니다.</p>
+
+<p>예를 들어 사용자가 연락처 중에서 하나를 고를 수 있도록 하고 싶을 수 있습니다. 
+즉 여러분의 액티비티가 해당 연락처의 정보로 무언가 할 수 있도록 하는 것입니다. 그와 같은 인텐트를 생성하고 결과를 처리하려면 
+다음과 같이 하면 됩니다.</p>
+
+<pre>
+private void pickContact() {
+    // Create an intent to "pick" a contact, as defined by the content provider URI
+    Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
+    startActivityForResult(intent, PICK_CONTACT_REQUEST);
+}
+
+&#64;Override
+protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+    // If the request went well (OK) and the request was PICK_CONTACT_REQUEST
+    if (resultCode == Activity.RESULT_OK &amp;&amp; requestCode == PICK_CONTACT_REQUEST) {
+        // Perform a query to the contact's content provider for the contact's name
+        Cursor cursor = getContentResolver().query(data.getData(),
+        new String[] {Contacts.DISPLAY_NAME}, null, null, null);
+        if (cursor.moveToFirst()) { // True if the cursor is not empty
+            int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
+            String name = cursor.getString(columnIndex);
+            // Do something with the selected contact's name...
+        }
+    }
+}
+</pre>
+
+<p>이 예시는 액티비티 결과를 처리하기 위해 {@link
+android.app.Activity#onActivityResult onActivityResult()} 메서드에서 사용해야 할 기본 논리를
+ 나타낸 것입니다. 첫 번째 조건은 요청이 성공적인지 확인합니다. 요청에 성공했다면
+{@code resultCode}가 {@link android.app.Activity#RESULT_OK}가 됩니다. 또한, 이 결과가 응답하는 요청이 
+알려져 있는지도 확인합니다. 이 경우에는 {@code requestCode}가
+{@link android.app.Activity#startActivityForResult
+startActivityForResult()}와 함께 전송된 두 번째 매개변수와 일치합니다. 여기서부터 코드가
+{@link android.content.Intent}({@code data} 매개변수)로 반환된 데이터를 쿼리하여 액티비티 결과를 처리합니다.</p>
+
+<p>그러면 {@link
+android.content.ContentResolver}가 콘텐츠 제공자에 대한 쿼리를 수행하고, 콘텐츠 제공자는 쿼리된 데이터를 읽을 수 있게 허용하는
+{@link android.database.Cursor}를 반환합니다. 자세한 내용은
+<a href="{@docRoot}guide/topics/providers/content-providers.html">콘텐츠 제공자</a> 문서를 참조하십시오.</p>
+
+<p>인텐트 사용에 관한 자세한 정보는 <a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트
+ 필터</a>문서를 참조하십시오.</p>
+
+
+<h2 id="ShuttingDown">액티비티 종료하기</h2>
+
+<p>액티비티를 종료하려면 해당 액티비티의 {@link android.app.Activity#finish
+finish()} 메서드를 호출하면 됩니다. 
+{@link android.app.Activity#finishActivity finishActivity()}를 호출하여 이전에 시작한 별도의 액티비티를 종료할 수도 있습니다.</p>
+
+<p class="note"><strong>참고:</strong> 대부분의 경우, 이와 같은 메서드를 사용하여 액티비티를 명시적으로 
+종료해서는 안 됩니다. 다음 섹션에서 액티비티 수명 주기에 관해 논의한 바와 같이, 
+Android 시스템이 액티비티의 수명을 대신 관리해주므로 직접 액티비티를 종료하지 
+않아도 됩니다. 이와 같은 메서드를 호출하면 예상되는 사용자 
+환경에 부정적인 영향을 미칠 수 있으며, 따라서 사용자가 액티비티의 이 인스턴스에 돌아오는 것을 절대 바라지 않는 경우에만 
+사용해야 합니다.</p>
+
+
+<h2 id="Lifecycle">액티비티 수명 주기 관리하기</h2>
+
+<p>콜백 메서드를 구현하여 액티비티의 수명 주기를 관리하는 것은 
+강력하고 유연한 애플리케이션 개발에 
+대단히 중요한 역할을 합니다. 액티비티의 수명 주기는 다른 액티비티와의 관계, 
+액티비티의 작업과 백 스택 등에 직접적으로 영향을 받습니다.</p>
+
+<p>액티비티는 기본적으로 세 가지 상태로 존재할 수 있습니다.</p>
+
+<dl>
+  <dt><i>재개됨</i></dt>
+    <dd>액티비티가 화면 전경에 있으며 사용자의 초점이 맞춰져 있습니다 (이 상태를 때로는 
+"실행 중"이라고 일컫기도 합니다).</dd>
+
+  <dt><i>일시정지됨</i></dt>
+    <dd>다른 액티비티가 전경에 나와 있고 사용자의 시선을 집중시키고 있지만, 이 액티비티도 여전히 표시되어 있습니다. 다시 말해,
+다른 액티비티가 이 액티비티 위에 표시되어 있으며 해당 액티비티는 부분적으로 투명하거나 
+전체 화면을 덮지 않는 상태라는 뜻입니다. 일시정지된 액티비티는 완전히 살아있지만({@link android.app.Activity}
+개체가 메모리에 보관되어 있고, 모든 상태 및 구성원 정보를 유지하며, 
+창 관리자에 붙어 있는 상태로 유지됨), 메모리가 극히 부족한 경우 시스템이 중단시킬 수 있습니다.</dd>
+
+  <dt><i>정지됨</i></dt>
+    <dd>이 액티비티가 다른 액티비티에 완전히 가려진 상태입니다(액티비티가 이제 
+"배경"에 위치함). 중단된 액티비티도 여전히 살아 있기는 마찬가지입니다({@link android.app.Activity}
+개체가 메모리에 보관되어 있고, 모든 상태와 구성원 정보를 유지하시만 창 관리자에 붙어 있지 <em>않음</em>
+). 그러나, 이는 더 이상 사용자에게 표시되지 않으며 
+다른 곳에 메모리가 필요하면 시스템이 종료시킬 수 있습니다.</dd>
+</dl>
+
+<p>액티비티가 일시정지 또는 중단된 상태이면, 시스템이 이를 메모리에서 삭제할 수 있습니다. 이러기 위해서는 
+종료를 요청하거나({@link android.app.Activity#finish finish()} 메서드를 호출) 단순히 이 액티비티의 프로세스를 중단시키면 
+됩니다.  액티비티가 다시 열릴 때에는(종료 또는 중단된 후에) 처음부터 다시 생성해야 
+합니다.</p>
+
+
+
+<h3 id="ImplementingLifecycleCallbacks">수명 주기 콜백 구현하기</h3>
+
+<p>위에서 설명한 바와 같이 액티비티가 여러 가지 상태를 오가며 전환되면, 이와 같은 내용이 
+여러 가지 콜백 메서드를 통해 통지됩니다. 콜백 메서드는 모두 후크로서, 
+액티비티 상태가 변경될 때 적절한 작업을 하기 위해 이를 재정의할 수 있습니다. 다음의 골격 
+액티비티에는 기본 수명 주기 메서드가 각각 하나씩 포함되어 있습니다.</p>
+
+
+<pre>
+public class ExampleActivity extends Activity {
+    &#64;Override
+    public void {@link android.app.Activity#onCreate onCreate}(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // The activity is being created.
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onStart onStart()} {
+        super.onStart();
+        // The activity is about to become visible.
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onResume onResume()} {
+        super.onResume();
+        // The activity has become visible (it is now "resumed").
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onPause onPause()} {
+        super.onPause();
+        // Another activity is taking focus (this activity is about to be "paused").
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onStop onStop()} {
+        super.onStop();
+        // The activity is no longer visible (it is now "stopped")
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onDestroy onDestroy()} {
+        super.onDestroy();
+        // The activity is about to be destroyed.
+    }
+}
+</pre>
+
+<p class="note"><strong>참고:</strong> 이와 같은 수명 주기 메서드를 구현하려면, 항상
+ 슈퍼클래스 구현을 호출한 다음에만 다른 작업을 시작할 수 있습니다(위의 예시 참조).</p>
+
+<p>이와 같은 메서드를 모두 합쳐 한 액티비티의 수명 주기 전체를 정의합니다. 이러한 메서드를 구현함으로써 
+액티비티 수명 주기 내의 세 가지 중첩된 루프를 모니터링할 수 있습니다. </p>
+
+<ul>
+<li>한 액티비티의 <b>전체 수명</b>은 {@link
+android.app.Activity#onCreate onCreate()} 호출과 {@link
+android.app.Activity#onDestroy} 호출 사이를 말합니다. 액티비티는 {@link android.app.Activity#onCreate onCreate()}에서 
+"전체" 상태(레이아웃 정의 등)의 설정을 수행한 다음 나머지 리소스를 
+모두 {@link android.app.Activity#onDestroy}에 해제해야 합니다. 예를 들어, 
+액티비티에 네트워크에서 데이터를 다운로드하기 위해 배경에서 실행 중인 스레드가 있는 경우, 이는 
+해당 스레드를 {@link android.app.Activity#onCreate onCreate()}에서 생성한 다음 {@link
+android.app.Activity#onDestroy}에서 그 스레드를 중단할 수 있습니다.</li>
+
+<li><p>액티비티의 <b>가시적 수명</b>은 {@link
+android.app.Activity#onStart onStart()} 호출에서 {@link
+android.app.Activity#onStop onStop()} 호출 사이를 말합니다. 이 기간 중에는 사용자가 액티비티를 화면에서 보고 이와 
+상호작용할 수 있습니다. 예컨대 {@link android.app.Activity#onStop onStop()}이 호출되어
+ 새 액티비티가 시작되면 이 액티비티는 더 이상 표시되지 않게 됩니다. 이와 같은 두 가지 메서드 중에서 
+사용자에게 액티비티를 표시하는 데 필요한 리소스를 유지하면 됩니다. 예를 들어,
+{@link
+android.app.Activity#onStart onStart()}에서 {@link android.content.BroadcastReceiver}를 등록하고 UI에 영향을 미치는 변화를 모니터링하고
+{@link android.app.Activity#onStop onStop()}에서 등록을 해제하면 사용자는 여러분이 무엇을 표시하고 있는지 더 이상 볼 수 
+없게 됩니다. 시스템은 액티비티의 전체 수명 내내 {@link android.app.Activity#onStart onStart()} 및 {@link
+android.app.Activity#onStop onStop()}을 여러 번 호출할 수 있으며, 이때 
+액티비티는 사용자에게 표시되었다 숨겨지는 상태를 오가게 됩니다.</p></li>
+
+<li><p>액티비티의 <b>전경 수명</b>은 {@link
+android.app.Activity#onResume onResume()} 호출에서 {@link android.app.Activity#onPause
+onPause()} 호출 사이를 말합니다. 이 기간 중에는 이 액티비티가 화면에서 다른 모든 액티비티 앞에 표시되며 사용자 입력도 
+여기에 집중됩니다.  액티비티는 전경에 나타났다 숨겨지는 전환을 자주 반복할 수 있습니다. 예를 들어
+, 기기가 절전 모드에 들어가거나 대화 상자가 
+나타나면 {@link android.app.Activity#onPause onPause()}가 호출됩니다. 이 상태는 자주 전환될 수 있으므로, 이 두 가지 메서드의 코드는 
+상당히 가벼워야 합니다. 그래야 전환이 느려 사용자를 기다리게 하는 일을 피할 수 있습니다.</p></li>
+</ul>
+
+<p>그림 1은 액티비티가 상태 사이에서 취할 수 있는 이와 같은 루프와 경로를 나타낸 것입니다.
+직사각형이 액티비티가 여러 상태 사이를 전환할 때 작업을 수행하도록 
+구현할 수 있는 콜백 메서드를 나타냅니다. <p>
+
+<img src="{@docRoot}images/activity_lifecycle.png" alt="" />
+<p class="img-caption"><strong>그림 1.</strong> 액티비티 수명 주기입니다.</p>
+
+<p>같은 수명 주기 콜백 메서드가 표 1에 나열되어 있으며, 이 표는 각 콜백 
+메서드를 더욱 상세하게 설명하며 액티비티의 전반적인 
+수명 주기 내에서 각 메서드의 위치를 나타내기도 합니다. 여기에는 콜백 메서드가 완료된 다음 
+시스템이 액티비티를 중단시킬 수 있는지 여부도 포함되어 있습니다.</p>
+
+<p class="table-caption"><strong>표 1.</strong> 액티비티 수명 주기
+콜백 메서드의 요약입니다.</p>
+
+<table border="2" width="85%" frame="hsides" rules="rows">
+<colgroup align="left" span="3"></colgroup>
+<colgroup align="left"></colgroup>
+<colgroup align="center"></colgroup>
+<colgroup align="center"></colgroup>
+
+<thead>
+<tr><th colspan="3">메서드</th> <th>설명</th> <th>완료 후 중단 가능?</th> <th>다음</th></tr>
+</thead>
+
+<tbody>
+<tr>
+  <td colspan="3" align="left"><code>{@link android.app.Activity#onCreate onCreate()}</code></td>
+  <td>액티비티가 처음 생성되었을 때 호출됩니다.
+      이곳에서 일반적인 정적 설정을 모두 수행해야 합니다. 
+즉 보기 생성, 목록에 데이터 바인딩하기 등을 말합니다.  이 메서드에는 
+액티비티의 이전 상태가 캡처된 경우 해당 상태를 포함한 
+번들 개체가 전달됩니다(이 문서 나중에 나오는 <a href="#actstate">액티비티 상태 저장하기</a>를 참조하십시오
+).
+      <p>이 뒤에는 항상 {@code onStart()}가 따라옵니다.</p></td>
+  <td align="center">아니요</td>
+      <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td rowspan="5" style="border-left: none; border-right: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onRestart
+onRestart()}</code></td>
+   <td>액티비티가 중단되었다가 다시 시작되기 직전에
+호출됩니다.
+       <p>이 뒤에는 항상 {@code onStart()}가 따라옵니다.</p></td>
+   <td align="center">아니요</td>
+   <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStart onStart()}</code></td>
+   <td>액티비티가 사용자에게 표시되기 직전에 호출됩니다.
+       <p>액티비티가 전경으로 나오면 {@code onResume()}이 뒤에 따라오고,
+액티비티가 숨겨지면 {@code onStop()}이 뒤에 따라옵니다.</p></td>
+    <td align="center">아니요</td>
+    <td align="center">{@code onResume()} <br/>또는<br/> {@code onStop()}</td>
+</tr>
+
+<tr>
+   <td rowspan="2" style="border-left: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td align="left"><code>{@link android.app.Activity#onResume onResume()}</code></td>
+   <td>액티비티가 시작되고 사용자와 상호 작용하기 직전에
+호출됩니다.  이 시점에서 액티비티는 액티비티 
+스택의 맨 위에 있으며, 사용자 입력이 입력되고 있습니다.
+       <p>이 뒤에는 항상 {@code onPause()}가 따라옵니다.</p></td>
+   <td align="center">아니요</td>
+   <td align="center">{@code onPause()}</td>
+</tr>
+
+<tr>
+   <td align="left"><code>{@link android.app.Activity#onPause onPause()}</code></td>
+   <td>시스템이 다른 액티비티를 재개하기 직전에 
+호출됩니다.  이 메서드는 일반적으로 데이터를 유지하기 위해 저장되지 않은 변경 사항을 
+커밋하는 데, 애니메이션을 비롯하여 CPU를 소모하는 기타 작업을 중단하는 등 
+여러 가지 용도에 사용됩니다.  이 메서드는 무슨 일을 하든 매우 빨리 끝내야 합니다. 
+이것이 반환될 때까지 다음 액티비티가 재개되지 않기 때문입니다.
+       <p>액티비티가 다시 전경으로 돌아오면 {@code onResume()}이 뒤에 따라오고
+액티비티가 사용자에게 보이지 않게 되면{@code onStop()}이 뒤에 따라옵니다.
+</td>
+   <td align="center"><strong style="color:#800000">예</strong></td>
+   <td align="center">{@code onResume()} <br/>또는<br/> {@code onStop()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStop onStop()}</code></td>
+   <td>액티비티가 더 이상 사용자에게 표시되지 않게 되면 호출됩니다.  이것은
+ 액티비티가 소멸되고 있기 때문에 일어날 수도 있고, 다른 액티비티
+(기존 것이든 새로운 것이든)가 재개되어 이것을 덮고 있기 때문일 수도 있습니다.
+       <p>액티비티가 다시 사용자와 상호 작용하면
+{@code onRestart()}가 뒤에 따라오고 액티비티가 사라지면
+{@code onDestroy()}가 뒤에 따라옵니다.</p></td>
+   <td align="center"><strong style="color:#800000">예</strong></td>
+   <td align="center">{@code onRestart()} <br/>또는<br/> {@code onDestroy()}</td>
+</tr>
+
+<tr>
+   <td colspan="3" align="left"><code>{@link android.app.Activity#onDestroy
+onDestroy()}</code></td>
+   <td>액티비티가 소멸되기 전에 호출됩니다.  이것이 액티비티가 받는 
+마지막 호출입니다.  이것이 호출될 수 있는 경우는 액티비티가 
+완료되는 중이라서(누군가가 여기에 <code>{@link android.app.Activity#finish
+       finish()}</code>를 호출해서)일 수도 있고, 시스템이 공간을 절약하기 위해 액티비티의 이 인스턴스를 일시적으로 소멸시키는 
+중이기 때문일 수도 있습니다.  이와 같은 
+두 가지 시나리오는 <code>{@link
+       android.app.Activity#isFinishing isFinishing()}</code> 메서드로 구분할 수 있습니다.</td>
+   <td align="center"><strong style="color:#800000">예</strong></td>
+   <td align="center"><em>없음</em></td>
+</tr>
+</tbody>
+</table>
+
+<p>"완료 후 중단 가능?"이라는 레이블이 붙은 열은
+ 시스템이 <em>메서드가 반환된 후</em> 액티비티 코드의 다른 줄을 실행하지 않고도 
+언제든 이 액티비티를 호스팅하는 프로세스를 중단시킬 수 있는지 여부를 나타냅니다.  다음 세 가지 메서드가 "예"로 표시되어 있습니다({@link
+android.app.Activity#onPause
+onPause()}, {@link android.app.Activity#onStop onStop()} 및 {@link android.app.Activity#onDestroy
+onDestroy()}). {@link android.app.Activity#onPause onPause()}가 세 가지 메서드 중에서
+첫 번째이므로, 액티비티가 생성되면 {@link android.app.Activity#onPause onPause()}는 프로세스가 <em>지워지기 전에</em>
+반드시 호출되는 마지막 메서드입니다. 
+시스템이 비상 시에 메모리를 복구해야 할 경우, {@link
+android.app.Activity#onStop onStop()}와 {@link android.app.Activity#onDestroy onDestroy()}는
+호출되지 않을 수도 있습니다. 따라서, 중요한 영구적 데이터(사용자 편집 등)를 보관하기 위해 작성하는 경우에는 {@link android.app.Activity#onPause onPause()}를 사용해야 
+합니다. 그러나, {@link android.app.Activity#onPause onPause()} 중에 
+어느 정보를 유지해야 할지는 조심해서 선택해야 합니다. 이 메서드에 차단 절차가 있으면 
+다음 액티비티로의 전환을 차단하고 사용자 경험을 느려지게 할 수 있기 
+때문입니다.</p>
+
+<p> <b>중단 가능한</b> 열에 "아니요"로 표시된 메서드는 액티비티를 호스팅하는 프로세스를 
+보호하여 호출된 즉시 중단되지 않도록 방지합니다.  따라서 액티비티는 
+{@link android.app.Activity#onPause onPause()}가 반환되는 시기부터 
+{@link android.app.Activity#onResume onResume()}이 호출되는 시기 사이에 중단시킬 수 있습니다. 다시 중단시킬 수 있는 상태가 되려면 
+{@link android.app.Activity#onPause onPause()}가 다시 호출되어 반환되어야 합니다. </p>
+
+<p class="note"><strong>참고:</strong> 표 1에 나타난 이런 정의에 
+따르면 엄밀히 말해 "중단 가능한" 것이 아닌 액티비티라도 시스템이 중단시킬 수는 있습니다. 다만 이것은 다른 리소스가 없는 
+극단적인 상황에서만 발생합니다. 액티비티가 중단될 수 있는 시기가 
+언제인지는 <a href="{@docRoot}guide/components/processes-and-threads.html">프로세스 및
+ 스레딩</a> 문서에서 보다 자세히 논의합니다.</p>
+
+
+<h3 id="SavingActivityState">액티비티 상태 저장하기</h3>
+
+<p><a href="#Lifecycle">액티비티 수명 주기 관리하기</a> 도입부에서는 액티비티가 
+일시중지되거나 
+중단되었더라도 액티비티의 상태는 그대로 유지된다고 잠시 언급한 바 있습니다. 이것은 
+{@link android.app.Activity} 개체가 일시중지되거나 중단된 경우에도 
+메모리 안에 그대로 보관되었기 때문에 가능합니다. 즉 이 액티비티의 구성원과 현재 상태에 대한 모든 정보가 아직 살아 있다는 뜻입니다. 따라서, 사용자가 
+액티비티 내에서 변경한 모든 내용도 그대로 유지되어 액티비티가 전경으로 
+돌아갈 때("재개"될 때) 그와 같은 변경 사항도 그대로 존재하게 됩니다.</p>
+
+<p>그러나 시스템이 메모리를 복구하기 위해 액티비티를 소멸시키는 경우에는 {@link
+android.app.Activity} 개체가 소멸되므로 시스템이 액티비티의 상태를 온전히 유지한 채로 간단하게 재개할 수 없게 
+됩니다. 대신, 사용자가 다시 이 액티비티로 이동해 오면 시스템이 {@link android.app.Activity} 개체를 
+다시 생성해야 합니다. 하지만, 사용자는 시스템이 
+해당 액티비티를 소멸시켰다가 다시 생성했다는 것을 모릅니다. 
+따라서 액티비티가 예전과 똑같을 것이라고 예상할 것입니다. 이런 상황에서는
+액티비티 상태에 관한 정보를 저장할 수 있는 추가 콜백 메서드
+{@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}를 구현하여 액티비티 상태에 관한 중요한 정보를 보존할 수 있습니다.</p>
+
+<p>시스템이 {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
+를 호출한 다음에 액티비티를 소멸되기 쉽게 만듭니다. 시스템은 {@link
+android.os.Bundle#putString putString()}와 {@link
+android.os.Bundle#putInt putInt()} 같은 메서드를 사용하여, 이 메서드에
+액티비티에 관한 정보를 이름-값 쌍으로 저장할 수 있는 {@link android.os.Bundle}을 전달합니다.
+ 그리고 시스템이 애플리케이션 프로세스를 지우고
+사용자가 액티비티로 다시 돌아오면, 시스템이 액티비티를 다시 생성하고
+{@link android.os.Bundle}을 {@link android.app.Activity#onCreate onCreate()}와 {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}에게 전달합니다. 이들 메서드 중
+하나를 사용하여 {@link android.os.Bundle}에서 저장된 상태를 추출하고 액티비티 상태
+를 복원할 수 있습니다. 복구할 상태 정보가 없는 경우, 여러분에게 전달되는 {@link
+android.os.Bundle}은 null입니다(액티비티가 처음 생성되었을 때 이런 경우가 
+발생합니다).</p>
+
+<img src="{@docRoot}images/fundamentals/restore_instance.png" alt="" />
+<p class="img-caption"><strong>그림 2.</strong> 액티비티의 상태가 온전한 채로 사용자의 
+초점에 다시 돌아오는 데에는 두 가지 방식이 있습니다. 하나는 액티비티가 소멸되었다가 다시 생성되어 액티비티가 
+이전에 저장된 상태를 복구해야 하는 경우, 다른 하나는 액티비티가 중단되었다가 재개되었으며 
+액티비티 상태가 온전히 유지된 경우입니다.</p>
+
+<p class="note"><strong>참고:</strong> 상태를 저장할 필요가 없는 경우도 있으므로 액티비티가 소멸되기 전에 {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}가 호출된다는 보장은 없습니다
+
+(예컨대 사용자가 
+명시적으로
+액티비티를 닫기 위해 <em>뒤로</em> 버튼을 눌러서 액티비티를 떠날 때가 이에 해당합니다). 시스템이 {@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()}를 호출하는 경우, {@link
+android.app.Activity#onStop onStop()} 전에 호출하는 것이 일반적이며 {@link android.app.Activity#onPause
+onPause()} 전에 호출할 가능성도 높습니다.</p>
+
+<p>그러나 아무것도 하지 않고 {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}를 구현하지 않더라도,
+{@link android.app.Activity} 클래스의 기본 구현 {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}가 일부 액티비티 상태를 복구합니다. 특히, 기본
+구현은 레이아웃에서 {@link
+android.view.View}가 나올 때마다 해당하는 {@link
+android.view.View#onSaveInstanceState onSaveInstanceState()} 메서드를 호출하고, 이 때문에 각 보기가 저장해야 하는 자체 관련 정보를 제공할 수 
+있게 해줍니다. Android 프레임워크를 사용하는 위젯은 거의 대부분 이 메서드를 
+필요에 따라 구현하므로, UI에 눈에 보이는 변경이 있으면 모두 자동으로 저장되며 액티비티를 다시 
+생성하면 복구됩니다. 예를 들어, {@link android.widget.EditText} 위젯은 사용자가 입력한 모든 텍스트
+를 저장하고 {@link android.widget.CheckBox} 위젯은 확인 여부를 저장합니다.
+ 여러분이 해야 할 유일한 작업은 상태를 저장하고자 하는 각 위젯에 고유 ID(<a href="{@docRoot}guide/topics/resources/layout-resource.html#idvalue">{@code android:id}</a>
+속성 포함)를 제공하는 것입니다. 위젯에 ID가 없으면 시스템이 그 위젯의 상태를
+저장할 수 없습니다.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<p>또한, 
+{@link android.R.attr#saveEnabled android:saveEnabled} 속성을 {@code "false"}로 설정하거나 
+{@link android.view.View#setSaveEnabled setSaveEnabled()} 메서드를 호출해서 레이아웃의 보기가 상태를 저장하지 못하도록 명시적으로 막을 수 있습니다. 보통은 이것을 비활성화해서는 
+안 되지만, 액티비티 UI의 상태를 다르게 복구하고자 하는 경우 그렇게 할 수도 있습니다.</p>
+</div>
+</div>
+
+<p>{@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}의 기본 구현이 액티비티 UI의 유용한 정보를 저장하지만
+추가 정보를 저장하려면 이를 재설정해야 할 수도 있습니다.
+예를 들어, 액티비티 수명에서 변경된 구성원 값을 변경해야 할 수도 있습니다(
+UI에서 복구된 값과 상관관계가 있을 수 있지만 이런 UI 값을 보유한 구성원은 기본적으로 복구되지 않습니다
+).</p>
+
+<p>{@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}의 기본 구현이 UI 상태를 저장하는 데 도움이 되기 때문에, 
+추가 상태 정보를 저장하기 위해 이 메서드를 재정의하려면 
+작업을 하기 전에 항상{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}의 슈퍼클래스 구현
+을 호출해야 합니다. 이와 마찬가지로 {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}를 재정의하는 경우, 이것의 슈퍼클래스 구현을 호출해야 하기도 합니다. 
+이렇게 해야 기본 구현이 보기 상태를 복구할 수 있습니다.</p>
+
+<p class="note"><strong>참고:</strong> {@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()}의 호출이 보장되지 않으므로
+ 이것은 액티비티의 일시적 상태(UI의 상태
+)를 기록하는 데에만 사용하고, 영구 데이터를 보관하는 데 사용해서는 안 됩니다.  대신, 사용자가 액티비티를 떠날 때 영구적인 데이터(데이터베이스에 저장되어야 
+하는 데이터 등)를 저장하려면 {@link
+android.app.Activity#onPause onPause()}를 사용해야 합니다.</p>
+
+<p>애플리케이션의 상태 저장 기능을 시험하는 좋은 방법은 기기를 회전해보고 화면 방향이
+바뀌는지 확인하는 것입니다. 화면 방향이 바뀌면 시스템은 액티비티를 
+소멸시켰다가 다시 생성하여 새 화면 구성에서 이용할 수 있을지 모르는 대체 
+리소스를 적용합니다. 이 이유 하나만으로도 액티비티가 다시 생성되었을 때 상태를 
+완전히 복구할 수 있어야 한다는 점이 대단히 중요합니다. 사용자는 애플리케이션을 사용하면서 화면을 
+자주 돌리기 때문입니다.</p>
+
+
+<h3 id="ConfigurationChanges">구성 변경 처리하기</h3>
+
+<p>몇몇 기기 구성은 런타임 중에 변경될 수 있습니다(예: 화면 방향, 키보드 가용성
+ 및 언어 등). 이러한 변경이 발생하면 Android는 실행 중인 액티비티를 다시 생성합니다
+(시스템이 {@link android.app.Activity#onDestroy}를 호출하고 즉시 {@link
+android.app.Activity#onCreate onCreate()}를 호출합니다). 이런 동작은
+여러분이 제공한 대체 리소스로 애플리케이션을 자동으로 다시 로딩함으로써 새로운 구성에 애플리케이션이 적응하는 것을 돕도록
+설계되었습니다
+(예: 다양한 화면 방향과 크기에 대한 다양한 레이아웃).</p>
+
+<p>액티비티를 적절히 설계하여 화면 방향 변경으로 인한 재시작을 감당할 수 있으며 
+위에 설명한 것처럼 액티비티 상태를 복구할 수 있도록 하면, 애플리케이션이 액티비티 수명 주기에서 
+예기치 못한 이벤트가 일어나도 더욱 탄력적으로 복구될 수 있습니다.</p>
+
+<p>이러한 재시작을 처리하는 가장 좋은 방법은 이전 섹션에서 논의한 바와 같이
+{@link
+ android.app.Activity#onSaveInstanceState onSaveInstanceState()}와 {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}(또는 {@link
+android.app.Activity#onCreate onCreate()})를 사용하여 액티비티 상태를 저장하고 복구하는 것입니다.</p>
+
+<p>런타임에 발생하는 구성 변경과 그 처리 방법에 대한 자세한 정보는 
+<a href="{@docRoot}guide/topics/resources/runtime-changes.html">런타임 변경 
+처리하기</a>에 대한 가이드를 읽어보십시오.</p>
+
+
+
+<h3 id="CoordinatingActivities">액티비티 조정하기</h3>
+
+ <p>한 액티비티가 다른 액티비티를 시작하면, 둘 모두 수명 주기 전환을 겪습니다. 첫 번째 액티비티는 
+일시중지하고 중단되는 반면(배경에서 계속 보이는 경우에는 중단되지 않습니다만), 다른 액티비티는 
+생성되는 것입니다. 이와 같은 액티비티가 디스크 또는 다른 속에 저장된 데이터를 공유하는 경우, 
+첫 번째 액티비티는 두 번째 액티비티가 생성되기 전에 완전히 중단되지 않는다는 점을 이해하는 것이 중요합니다. 
+그렇다기보다는, 두 번째 액티비티의 시작 과정이 첫 번째 액티비티 중단 과정과 겹쳐 일어납니다.
+</p>
+
+<p>수명 주기 콜백은 분명히 정의된 순서가 있으며 특히 두 개의 액티비티가 
+같은 프로세스 안에 있으면서 하나가 다른 하나를 시작하는 경우 순서가 더욱 확실합니다. 다음은 액티비티 A가
+액티비티 B를 시작할 때 발생하는 작업 순서입니다. </p>
+
+<ol>
+<li>액티비티 A의 {@link android.app.Activity#onPause onPause()} 메서드가 실행됩니다.</li>
+
+<li>액티비티 B의 {@link android.app.Activity#onCreate onCreate()}, {@link
+android.app.Activity#onStart onStart()}, {@link android.app.Activity#onResume onResume()}
+메서드가 순차적으로 실행됩니다 (이제 사용자는 액티비티 B에 시선을 집중합니다).</li>
+
+<li>그런 다음, 액티비티 A가 더 이상 화면에 표시되지 않는 경우 이 액티비티의 {@link
+android.app.Activity#onStop onStop()} 메서드가 실행됩니다.</li>
+</ol>
+
+ <p>이처럼 수명 주기 콜백의 순서를 예측할 수 있기 때문에 한 액티비티에서 다른 액티비티로 전환되는
+ 정보를 관리할 수 있습니다. 예를 들어 첫 번째 액티비티가 중단될 때 데이터베이스에 
+내용을 작성해서 다음 액티비티가 그 내용을 읽을 수 있도록 하려면, 데이터베이스에는 
+{@link android.app.Activity#onPause onPause()} 중에({@link
+android.app.Activity#onStop onStop()} 중이 아니라) 쓰기 작업을 해야 합니다.</p>
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For more information about how Android maintains a history of activities and
+enables user multitasking, continue with the <b><a
+href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back
+Stack</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/ko/guide/components/bound-services.jd b/docs/html-intl/intl/ko/guide/components/bound-services.jd
new file mode 100644
index 0000000..bf97b26
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/components/bound-services.jd
@@ -0,0 +1,658 @@
+page.title=바인딩된 서비스
+parent.title=서비스
+parent.link=services.html
+@jd:body
+
+
+<div id="qv-wrapper">
+<ol id="qv">
+<h2>이 문서의 내용</h2>
+<ol>
+  <li><a href="#Basics">기본 정보</a></li>
+  <li><a href="#Creating">바인딩된 서비스 생성</a>
+    <ol>
+      <li><a href="#Binder">바인더 클래스 확장</a></li>
+      <li><a href="#Messenger">메신저 사용</a></li>
+    </ol>
+  </li>
+  <li><a href="#Binding">서비스에 바인딩</a></li>
+  <li><a href="#Lifecycle">바인딩된 서비스 수명 주기 관리</a></li>
+</ol>
+
+<h2>Key 클래스</h2>
+<ol>
+  <li>{@link android.app.Service}</li>
+  <li>{@link android.content.ServiceConnection}</li>
+  <li>{@link android.os.IBinder}</li>
+</ol>
+
+<h2>샘플</h2>
+<ol>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html">{@code
+      RemoteService}</a></li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+      LocalService}</a></li>
+</ol>
+
+<h2>참고 항목</h2>
+<ol>
+  <li><a href="{@docRoot}guide/components/services.html">서비스</a></li>
+</ol>
+</div>
+
+
+<p>바인딩된 서비스란 클라이언트 서버 인터페이스 안의 서버를 말합니다. 바인딩된 서비스를 사용하면 구성 요소(활동 등)를 
+서비스에 바인딩되게 하거나, 요청을 보내고 응답을 수신하며 심지어는 
+프로세스간 통신(IPC)까지 수행할 수 있게 됩니다. 일반적으로 바인딩된 서비스는 다른 애플리케이션
+구성 요소를 도울 때까지만 살고 배경에서 무한히 실행되지 않습니다.</p>
+
+<p>이 문서는 다른 애플리케이션 구성 요소의
+서비스에 바인딩하는 방법을 포함하여 바인딩된 서비스를 만드는 방법을 보여줍니다. 하지만 일반적인 서비스에 관한 정보도 알아두는 것이 좋습니다. 
+서비스에서 알림을 전달하는 방법이나 서비스를 전경에서 실행되도록 설정하는 방법 등 여러 가지 
+추가 정보를 알아보려면 <a href="{@docRoot}guide/components/services.html">서비스</a> 문서를 참조하십시오.</p>
+
+
+<h2 id="Basics">기본 정보</h2>
+
+<p>바인딩된 서비스란 일종의 {@link android.app.Service} 클래스 구현으로, 
+이를 통해 다른 애플리케이션이 이 서비스에 바인딩하여 상호 작용할 수 있도록 해주는 것입니다. 한 서비스에 대한 바인딩을 제공하려면, 
+{@link android.app.Service#onBind onBind()} 콜백 메서드를 구현해야 합니다. 
+이 메서드는 클라이언트가 서비스와 상호 작용하는 데 사용하는 프로그래밍 인터페이스를 정의하는 {@link android.os.IBinder} 개체를
+반환합니다.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>시작된 서비스에 바인딩</h3>
+
+<p><a href="{@docRoot}guide/components/services.html">서비스</a>
+문서에서 논의된 바와 같이, 시작되었으면서도 바인딩된 서비스를 만들 수 있습니다. 다시 말해, 
+{@link android.content.Context#startService startService()}를 호출하여 서비스를 시작할 수 있으며 
+이를 통해 서비스가 무한히 실행되도록 할 수 있으며, {@link
+android.content.Context#bindService bindService()}를 호출하면 클라이언트가 해당 서비스에 바인딩되도록 할 수 있다는 것입니다.
+  <p>서비스를 시작되고 바인딩되도록 허용한 다음 서비스가 시작되면 
+시스템은 클라이언트가 모두 바인딩을 해제해도 서비스를 소멸시키지 <em>않습니다</em>. 대신, 
+직접 서비스를 확실히 중단시켜야 합니다. 그러려면 {@link android.app.Service#stopSelf stopSelf()} 또는 {@link
+android.content.Context#stopService stopService()}를 호출하면 됩니다.</p>
+
+<p>보통은 {@link android.app.Service#onBind onBind()}
+<em>또는</em> {@link android.app.Service#onStartCommand onStartCommand()}
+중 한 가지만 구현하지만, 둘 모두 구현해야 할 때도 있습니다. 예를 들어, 음악 플레이어의 경우 서비스를 무한히 실행하면서 
+바인딩도 제공하도록 허용하는 것이 유용하다는 결론을 내릴 수 있습니다. 이렇게 하면, 한 액티비티가 서비스로 하여금 음악을 재생하도록 
+시작한 다음 사용자가 애플리케이션을 떠나더라도 음악을 계속 재생하도록 할 수 있습니다. 그런 다음, 사용자가 애플리케이션으로 
+다시 돌아오면 이 액티비티가 서비스를 바인딩하여 재생 제어권을 다시 획득할 수 있습니다.</p>
+
+<p><a href="#Lifecycle">바인딩된 서비스 수명 주기 관리
+</a> 관련 섹션을 꼭 읽어보십시오. 시작된 서비스에 바인딩을 
+추가할 때 서비스 수명 주기에 관한 자세한 정보를 얻을 수 있습니다.</p>
+</div>
+</div>
+
+<p>클라이언트가 서비스에 바인딩하려면 {@link android.content.Context#bindService
+bindService()}를 호출하면 됩니다. 이 때, 반드시 {@link
+android.content.ServiceConnection}의 구현을 제공해야 하며 이것이 서비스와의 연결을 모니터링합니다. {@link
+android.content.Context#bindService bindService()} 메서드는 값 없이 즉시 반환됩니다. 
+그러나 Android 시스템이 클라이언트와 서비스 사이의 
+연결을 만드는 경우, 시스템은 {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()}를 {@link
+android.content.ServiceConnection}에서 호출하여 클라이언트가 서비스와 통신하는 데 사용할 수 있도록 {@link android.os.IBinder}를 
+전달하게 됩니다.</p>
+
+<p>여러 클라이언트가 한 번에 서비스에 연결될 수 있습니다. 그러나, 시스템이 서비스의 
+{@link android.app.Service#onBind onBind()} 메서드를 호출하여 {@link android.os.IBinder}를 검색하는 경우는 첫 번째 클라이언트가 
+바인딩되는 경우뿐입니다. 시스템은 그 후 같은 {@link android.os.IBinder}를 바인딩되는 추가 
+클라이언트 모두에 전달하며 이때는 {@link android.app.Service#onBind onBind()}를 다시 호출하지 않습니다.</p>
+
+<p>마지막 클라이언트가 서비스에서 바인딩을 해제하면 시스템은 서비스를 소멸시킵니다(
+{@link android.content.Context#startService startService()}가 서비스를 시작했을 경우 제외).</p>
+
+<p>바인딩된 서비스를 구현할 때 가장 중요한 부분은
+{@link android.app.Service#onBind onBind()} 콜백 메서드가 반환하는 인터페이스를 정의하는 것입니다. 
+서비스의 {@link android.os.IBinder} 인터페이스를 정의하는 방법에는 몇 가지가 있고, 다음
+섹션에서는 각 기법에 관해 논의합니다.</p>
+
+
+
+<h2 id="Creating">바인딩된 서비스 생성</h2>
+
+<p>바인딩을 제공하는 서비스를 생성할 때는 클라이언트가 서비스와 상호 작용하는 데 사용할 수 있는 프로그래밍 인터페이스를 제공하는 {@link android.os.IBinder}
+를 제공해야 합니다. 
+인터페이스를 정의하는 방법은 세 가지가 있습니다.</p>
+
+<dl>
+  <dt><a href="#Binder">바인더 클래스 확장</a></dt>
+  <dd>서비스가 본인의 애플리케이션 전용이며 클라이언트와 같은 과정으로 실행되는 
+경우(이런 경우가 흔함), 인터페이스를 생성할 때 {@link android.os.Binder} 클래스를
+ 확장하고 그 인스턴스를 
+{@link android.app.Service#onBind onBind()}에서 반환하는 방식을 사용해야 합니다. 클라이언트가 {@link android.os.Binder}를 받으며, 
+이를 사용하여 {@link android.os.Binder} 구현 또는 심지어 {@link android.app.Service}에서 
+사용할 수 있는 공개 메서드에 직접 액세스할 수 있습니다.
+  <p>이것은 서비스가 본인의 애플리케이션을 위해 단순히 배경에서 작동하는 요소에 그치는 경우 
+선호되는 기법입니다. 인터페이스를 생성할 때 이 방식을 사용하지 않는 유일한 이유는 
+서비스를 다른 애플리케이션에서나 별도의 프로세스에 걸쳐 사용하고 있는 경우뿐입니다.</dd>
+
+  <dt><a href="#Messenger">메신저 사용</a></dt>
+  <dd>인터페이스를 여러 프로세스에 걸쳐 적용되도록 해야 하는 경우, 서비스에 대한 
+인터페이스를 {@link android.os.Messenger}로 생성할 수 있습니다. 
+이 방식을 사용하면 서비스가 여러 가지 유형의 {@link
+android.os.Message} 개체에 응답하는 {@link android.os.Handler}를 정의합니다. 이 {@link android.os.Handler}
+가 {@link android.os.Messenger}의 기초이며, 이를 통해 클라이언트와 함께 {@link android.os.IBinder}
+를 공유할 수 있게 되어 클라이언트가 {@link
+android.os.Message} 개체를 사용해 서비스에 명령을 보낼 수 있게 해줍니다. 이외에도, 클라이언트가 자체적으로 {@link android.os.Messenger}를 
+정의하여 서비스가 메시지를 돌려보낼 수 있도록 할 수도 있습니다.
+  <p>이것이 프로세스간 통신(IPC)을 수행하는 가장 간단한 방법입니다. {@link
+android.os.Messenger}가 모든 요청을 단일 스레드에 대기하게 해서, 서비스를 스레드로부터 안전하게 
+설계하지 않아도 되기 때문입니다.</p>
+  </dd>
+
+  <dt>AIDL 사용하기</dt>
+  <dd>AIDL(Android Interface Definition Language)은 개체를 운영 체제가 이해할 수 있는 
+원시 데이터로 구성 해제한 다음 여러 프로세스에 걸쳐 집결하여 IPC를 수행하기 위해 
+필요한 모든 작업을 수행합니다. 이전 기법은 {@link android.os.Messenger}를 사용했는데, 
+사실 그 기본 구조가 AIDL을 기반으로 하고 있는 것입니다. 위에서 언급한 바와 같이 {@link android.os.Messenger}는 단일 스레드에 모든 클라이언트 요청
+대기열을 생성하므로 서비스는 한 번에 요청을 하나씩 수신합니다. 그러나, 
+서비스가 동시에 여러 요청을 처리하도록 하고 싶은 경우에는 AIDL을 직접 사용해도 
+됩니다. 이 경우, 서비스가 다중 스레딩을 할 수 있어야 하며 스레드로부터 안전하게 구축되었어야 합니다.
+  <p>AIDL을 직접 사용하려면
+프로그래밍 인터페이스를 정의하는 {@code .aidl} 파일을 생성해야 합니다. Android SDK 도구는
+이 파일을 사용하여 인터페이스를 구현하고 IPC를 처리하는 추상 클래스를 생성하고,
+그러면 개발자가 직접 이것을 서비스 내에서 확장하면 됩니다.</p>
+  </dd>
+</dl>
+
+  <p class="note"><strong>참고:</strong> 대부분의 애플리케이션의 경우, 
+바인딩된 서비스를 생성하기 위해 AIDL를 사용해서는 <strong>안 됩니다</strong>. 
+그러려면 다중 스레딩 기능이 필요할 수 있고, 따라서 더 복잡한 구현을 초래할 수 있기 때문입니다. 따라서 AIDL은 
+대부분의 애플리케이션에 적합하지 않으므로 이 문서에서는 여러분의 서비스에 이를 이용하는 방법에 대해 다루지 않습니다. AIDL을 직접 사용해야 한다는 확신이 드는 경우, 
+<a href="{@docRoot}guide/components/aidl.html">AIDL</a> 문서를 참조하십시오.
+</p>
+
+
+
+
+<h3 id="Binder">바인더 클래스 확장</h3>
+
+<p>서비스를 사용하는 것이 로컬 애플리케이션뿐이고 여러 프로세스에 걸쳐 작동할 필요가 없는 경우,
+나름의 {@link android.os.Binder} 클래스를 구현하여 
+클라이언트로 하여금 서비스 내의 공개 메서드에 직접 액세스할 수 있도록 할 수도 있습니다.</p>
+
+<p class="note"><strong>참고:</strong> 이것은 클라이언트와 서비스가 
+같은 애플리케이션 및 프로세스에 있는 경우에만 통하며, 이 경우가 가장 보편적입니다. 이 방식이 잘 통하는 경우를 예로 들면, 
+음악 애플리케이션에서 자체 서비스에 액티비티를 바인딩하여 배경에서 음악을 재생하도록 해야 하는 
+경우가 있습니다.</p>
+
+<p>이렇게 설정하는 방법은 다음과 같습니다.</p>
+<ol>
+  <li>서비스에서 다음 중 한 가지에 해당하는 {@link android.os.Binder}의 인스턴스를 생성합니다.
+    <ul>
+      <li>클라이언트가 호출할 수 있는 공개 메서드 포함</li>
+      <li>클라이언트가 호출할 수 있는 공개 메서드가 있는 현재{@link android.app.Service} 
+인스턴스를 반환</li>
+      <li>클라이언트가 호출할 수 있는 공개 메서드가 포함된 서비스가 호스팅하는 다른 클래스의 인스턴스를 반환
+</li>
+    </ul>
+  <li>{@link
+android.app.Service#onBind onBind()} 콜백 메서드에서 이 {@link android.os.Binder}의 인스턴스를 반환합니다.</li>
+  <li>클라이언트의 경우, {@link android.os.Binder}를 {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} 
+콜백 메서드에서 받아 제공된 메서드를 사용해 서비스를 바인딩하기 위해 호출합니다.</li>
+</ol>
+
+<p class="note"><strong>참고:</strong> 서비스와 클라이언트가 같은 애플리케이션에 
+있어야 하는 것은 그래야만 클라이언트가 반환된 개체를 캐스팅하여 해당 API를 적절하게 호출할 수 있기 때문입니다. 또한 
+서비스와 클라이언트는 같은 프로세스에 있어야 하기도 합니다. 이 기법에서는 
+여러 프로세스에 걸친 집결 작업을 전혀 수행하지 않기 때문입니다.</p>
+
+<p>예컨대, 어떤 서비스가 클라이언트에게 {@link android.os.Binder} 구현을 통해 서비스 내의 
+메서드에 액세스할 수 있도록 한다고 합시다.</p>
+
+<pre>
+public class LocalService extends Service {
+    // Binder given to clients
+    private final IBinder mBinder = new LocalBinder();
+    // Random number generator
+    private final Random mGenerator = new Random();
+
+    /**
+     * Class used for the client Binder.  Because we know this service always
+     * runs in the same process as its clients, we don't need to deal with IPC.
+     */
+    public class LocalBinder extends Binder {
+        LocalService getService() {
+            // Return this instance of LocalService so clients can call public methods
+            return LocalService.this;
+        }
+    }
+
+    &#64;Override
+    public IBinder onBind(Intent intent) {
+        return mBinder;
+    }
+
+    /** method for clients */
+    public int getRandomNumber() {
+      return mGenerator.nextInt(100);
+    }
+}
+</pre>
+
+<p>{@code LocalBinder}는 클라이언트에게 {@code LocalService}의 현재 인스턴스를 검색하기 위한 {@code getService()} 메서드
+를 제공합니다. 이렇게 하면 클라이언트가 서비스 내의 공개 메서드를 호출할 수 있습니다.
+ 클라이언트는 예컨대 서비스에서 {@code getRandomNumber()}를 호출할 수 있습니다.</p>
+
+<p>다음은 버튼을 클릭했을 때 {@code LocalService}에 바인딩되며 {@code getRandomNumber()}
+를 호출하는 액티비티를 나타낸 것입니다.</p>
+
+<pre>
+public class BindingActivity extends Activity {
+    LocalService mService;
+    boolean mBound = false;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+
+    &#64;Override
+    protected void onStart() {
+        super.onStart();
+        // Bind to LocalService
+        Intent intent = new Intent(this, LocalService.class);
+        bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+    }
+
+    &#64;Override
+    protected void onStop() {
+        super.onStop();
+        // Unbind from the service
+        if (mBound) {
+            unbindService(mConnection);
+            mBound = false;
+        }
+    }
+
+    /** Called when a button is clicked (the button in the layout file attaches to
+      * this method with the android:onClick attribute) */
+    public void onButtonClick(View v) {
+        if (mBound) {
+            // Call a method from the LocalService.
+            // However, if this call were something that might hang, then this request should
+            // occur in a separate thread to avoid slowing down the activity performance.
+            int num = mService.getRandomNumber();
+            Toast.makeText(this, "number: " + num, Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    /** Defines callbacks for service binding, passed to bindService() */
+    private ServiceConnection mConnection = new ServiceConnection() {
+
+        &#64;Override
+        public void onServiceConnected(ComponentName className,
+                IBinder service) {
+            // We've bound to LocalService, cast the IBinder and get LocalService instance
+            LocalBinder binder = (LocalBinder) service;
+            mService = binder.getService();
+            mBound = true;
+        }
+
+        &#64;Override
+        public void onServiceDisconnected(ComponentName arg0) {
+            mBound = false;
+        }
+    };
+}
+</pre>
+
+<p>위 예시는 클라이언트가 
+{@link android.content.ServiceConnection} 구현과 {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} 콜백을 사용하여 서비스에 바인딩하는 방법을 보여줍니다. 다음 
+섹션에서는 서비스에 바인딩하는 이러한 과정에 대해 좀 더 자세한 정보를 제공합니다.</p>
+
+<p class="note"><strong>참고:</strong> 위 예시에서는 서비스에서 분명히 바인딩을 해제하지는 않습니다. 
+그러나 모든 클라이언트는 적절한 시점에 바인딩을 해제해야 합니다(액티비티가 일시 중지될 때 등).</p>
+
+<p>더 많은 샘플 코드를 보려면 <a href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a>에서 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+LocalService.java}</a> 클래스와 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceActivities.html">{@code
+LocalServiceActivities.java}</a> 클래스를 참조하십시오.</p>
+
+
+
+
+
+<h3 id="Messenger">메신저 사용</h3>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h4>AIDL과 비교</h4>
+  <p>IPC를 수행해야 할 경우, 인터페이스에 대해 {@link android.os.Messenger}를 사용하는 것이
+AIDL로 구현하는 것보다 간단합니다. 왜냐하면 {@link android.os.Messenger}는
+모든 호출을 서비스에 대기시키지만 순수한 AIDL 인터페이스는 
+서비스에 동시에 요청을 전송하여 다중 스레딩을 처리해야 하기 때문입니다.</p>
+  <p>대부분의 애플리이션에서는 서비스가 다중 스레딩을 수행할 필요가 없으므로 {@link
+android.os.Messenger}를 사용하면 호출을 한 번에 하나씩 처리할 수 있습니다. 서비스가 
+다중 스레딩되는 것이 중요한 경우, 인터페이스를 정의하는 데 <a href="{@docRoot}guide/components/aidl.html">AIDL</a>을 사용해야 합니다.</p>
+</div>
+</div>
+
+<p>서비스가 원격 프로세스와 통신해야 한다면 서비스에 인터페이스를 제공하는 데 
+{@link android.os.Messenger}를 사용하면 됩니다. 이 기법을 사용하면 
+AIDL을 쓰지 않고도 프로세스간 통신(IPC)을 수행할 수 있게 해줍니다.</p>
+
+<p>다음은 {@link android.os.Messenger} 사용 방법을 간략하게 요약한 것입니다.</p>
+
+<ul>
+  <li>서비스가 클라이언트로부터 각 호출에 대해 콜백을 받는 {@link android.os.Handler}를 
+구현합니다.</li>
+  <li>{@link android.os.Handler}를 사용하여 {@link android.os.Messenger} 개체를 생성합니다
+(이것은 {@link android.os.Handler}에 대한 참조입니다).</li>
+  <li>{@link android.os.Messenger}가 {@link android.os.IBinder}를 생성하여 서비스가 
+{@link android.app.Service#onBind onBind()}로부터 클라이언트에게 반환하도록 합니다.</li>
+  <li>클라이언트는 {@link android.os.IBinder}를 사용하여 {@link android.os.Messenger}
+(서비스의 {@link android.os.Handler}를 참조)를 인스턴트화하고, 이를 이용하여
+{@link android.os.Message} 개체를 서비스에 전송합니다.</li>
+  <li>서비스가 각 {@link android.os.Message}를 {@link
+android.os.Handler}로 수신합니다. 구체적으로는 {@link android.os.Handler#handleMessage
+handleMessage()} 메서드를 사용합니다.</li>
+</ul>
+
+
+<p>이렇게 하면, 클라이언트가 서비스에서 호출할 "메서드"가 없습니다. 대신 클라이언트는 
+"메시지"({@link android.os.Message} 개체)를 전달하여 서비스가 
+{@link android.os.Handler}로 받을 수 있도록 합니다.</p>
+
+<p>다음은 {@link android.os.Messenger} 인터페이스를 사용하는 간단한 예시 서비스입니다.</p>
+
+<pre>
+public class MessengerService extends Service {
+    /** Command to the service to display a message */
+    static final int MSG_SAY_HELLO = 1;
+
+    /**
+     * Handler of incoming messages from clients.
+     */
+    class IncomingHandler extends Handler {
+        &#64;Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_SAY_HELLO:
+                    Toast.makeText(getApplicationContext(), "hello!", Toast.LENGTH_SHORT).show();
+                    break;
+                default:
+                    super.handleMessage(msg);
+            }
+        }
+    }
+
+    /**
+     * Target we publish for clients to send messages to IncomingHandler.
+     */
+    final Messenger mMessenger = new Messenger(new IncomingHandler());
+
+    /**
+     * When binding to the service, we return an interface to our messenger
+     * for sending messages to the service.
+     */
+    &#64;Override
+    public IBinder onBind(Intent intent) {
+        Toast.makeText(getApplicationContext(), "binding", Toast.LENGTH_SHORT).show();
+        return mMessenger.getBinder();
+    }
+}
+</pre>
+
+<p>{@link android.os.Handler}의 {@link android.os.Handler#handleMessage handleMessage()} 메서드에서
+서비스가 수신되는 {@link android.os.Message}를 받고
+{@link android.os.Message#what} 구성원에 기초하여 무엇을 할지 결정한다는 점을 눈여겨 보십시오.</p>
+
+<p>클라이언트는 서비스가 반환한 {@link
+android.os.IBinder}에 기초하여 {@link android.os.Messenger}를 생성하고 {@link
+android.os.Messenger#send send()}로 메시지를 전송하기만 하면 됩니다. 예를 들어, 다음은 
+서비스에 바인딩하여 {@code MSG_SAY_HELLO} 메시지를 서비스에 전달하는 간단한 액티비티입니다.</p>
+
+<pre>
+public class ActivityMessenger extends Activity {
+    /** Messenger for communicating with the service. */
+    Messenger mService = null;
+
+    /** Flag indicating whether we have called bind on the service. */
+    boolean mBound;
+
+    /**
+     * Class for interacting with the main interface of the service.
+     */
+    private ServiceConnection mConnection = new ServiceConnection() {
+        public void onServiceConnected(ComponentName className, IBinder service) {
+            // This is called when the connection with the service has been
+            // established, giving us the object we can use to
+            // interact with the service.  We are communicating with the
+            // service using a Messenger, so here we get a client-side
+            // representation of that from the raw IBinder object.
+            mService = new Messenger(service);
+            mBound = true;
+        }
+
+        public void onServiceDisconnected(ComponentName className) {
+            // This is called when the connection with the service has been
+            // unexpectedly disconnected -- that is, its process crashed.
+            mService = null;
+            mBound = false;
+        }
+    };
+
+    public void sayHello(View v) {
+        if (!mBound) return;
+        // Create and send a message to the service, using a supported 'what' value
+        Message msg = Message.obtain(null, MessengerService.MSG_SAY_HELLO, 0, 0);
+        try {
+            mService.send(msg);
+        } catch (RemoteException e) {
+            e.printStackTrace();
+        }
+    }
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+
+    &#64;Override
+    protected void onStart() {
+        super.onStart();
+        // Bind to the service
+        bindService(new Intent(this, MessengerService.class), mConnection,
+            Context.BIND_AUTO_CREATE);
+    }
+
+    &#64;Override
+    protected void onStop() {
+        super.onStop();
+        // Unbind from the service
+        if (mBound) {
+            unbindService(mConnection);
+            mBound = false;
+        }
+    }
+}
+</pre>
+
+<p>이 예시에는 서비스가 클라이언트에 응답하는 방식이 나타나 있지 않다는 것을 유념하십시오. 서비스가 응답하게 하려면
+ 클라이언트에도 {@link android.os.Messenger}를 생성해야 합니다. 
+클라이언트가 {@link android.content.ServiceConnection#onServiceConnected
+onServiceConnected()} 콜백을 받으면 {@link android.os.Messenger#send send()}메서드의 {@link android.os.Message#replyTo} 매개변수에서 클라이언트의 {@link android.os.Messenger}를 포함하는 {@link android.os.Message}를
+서비스에 전송합니다.
+</p>
+
+<p>양방향 메시지를 제공하는 방법의 예시는 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerService.html">{@code
+MessengerService.java}</a>(서비스) 및 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerServiceActivities.html">{@code
+MessengerServiceActivities.java}</a>(클라이언트) 예시를 참조하십시오.</p>
+
+
+
+
+
+<h2 id="Binding">서비스에 바인딩</h2>
+
+<p>애플리케이션 구성 요소(클라이언트)를 서비스에 바인딩하려면 
+{@link android.content.Context#bindService bindService()}를 호출하면 됩니다. 그러면 Android
+system이 서비스의 {@link android.app.Service#onBind
+onBind()} 메서드를 호출하고, 이는 서비스와의 상호 작용을 위해 {@link android.os.IBinder}를 반환합니다.</p>
+
+<p>바인딩은 비동기식입니다. {@link android.content.Context#bindService
+bindService()}는 즉시 반환하고 클라이언트에게 {@link android.os.IBinder}를 반환하지 <em>않습니다</em>.
+ {@link android.os.IBinder}를 수신하려면 클라이언트는 {@link
+android.content.ServiceConnection}의 인스턴스를 생성하여 이를 {@link android.content.Context#bindService
+bindService()}에 전달해야 합니다. {@link android.content.ServiceConnection}에는
+{@link android.os.IBinder}를 전달하기 위해 시스템이 호출하는 콜백 메서드가 포함됩니다.</p>
+
+<p class="note"><strong>참고:</strong> 서비스에 바인딩할 수 있는 것은 액티비티, 서비스 및 
+콘텐츠 제공자뿐입니다. 브로드캐스트 수신자로부터는 서비스에 바인딩할 수 <strong>없습니다</strong>.</p>
+
+<p>따라서, 클라이언트로부터 서비스에 바인딩하려면 다음과 같이 해야 합니다. </p>
+<ol>
+  <li>{@link android.content.ServiceConnection}을 구현합니다.
+    <p>이 구현으로 두 가지 콜백 메서드를 재정의해야 합니다.</p>
+    <dl>
+      <dt>{@link android.content.ServiceConnection#onServiceConnected onServiceConnected()}</dt>
+        <dd>시스템이 이것을 호출하여 서비스의 
+{@link android.app.Service#onBind onBind()} 메서드가 반환한 {@link android.os.IBinder}를 전달합니다.</dd>
+      <dt>{@link android.content.ServiceConnection#onServiceDisconnected
+onServiceDisconnected()}</dt>
+        <dd>Android 시스템이 이것을 호출하는 경우는 서비스로의 연결이 
+예기치 못하게 끊어졌을 때, 즉 서비스가 충돌했거나 중단되었을 때 등입니다. 
+클라이언트가 바인딩을 해제한다고 이것이 호출되지는 <em>않습니다</em>.</dd>
+    </dl>
+  </li>
+  <li>{@link
+android.content.Context#bindService bindService()}를 호출하고 {@link
+android.content.ServiceConnection} 구현을 전달합니다. </li>
+  <li>시스템이 {@link android.content.ServiceConnection#onServiceConnected
+onServiceConnected()} 콜백 메서드를 호출하면, 인터페이스가 정의한 메서드를 사용하여 
+서비스에 호출을 시작해도 됩니다.</li>
+  <li>서비스로부터 연결을 해제하려면 {@link
+android.content.Context#unbindService unbindService()}를 호출합니다.
+    <p>클라이언트가 소멸되면 이는 서비스에서 바인딩을 해제하게 되지만, 
+서비스와 상호 작용을 마쳤을 때 또는 액티비티가 일시 중지되었을 때에는 항상 바인딩을 해제해야 합니다. 
+이렇게 해야 서비스가 사용 중이 아닐 때에는 중지할 수 있습니다 
+(바인딩과 바인딩 해제의 적절한 시기는 아래에서 좀 더 논의합니다).</p>
+  </li>
+</ol>
+
+<p>예를 들어, 다음 코드 조각은 위와 같이 
+<a href="#Binder">바인더 클래스를 확장해서</a> 생성한 서비스와 클라이언트를 연결합니다. 그러므로 이것이 해야 하는 일은 반환된 
+{@link android.os.IBinder}를 {@code LocalService} 클래스에 캐스팅하고 {@code
+LocalService} 인스턴스를 요청하는 것뿐입니다.</p>
+
+<pre>
+LocalService mService;
+private ServiceConnection mConnection = new ServiceConnection() {
+    // Called when the connection with the service is established
+    public void onServiceConnected(ComponentName className, IBinder service) {
+        // Because we have bound to an explicit
+        // service that is running in our own process, we can
+        // cast its IBinder to a concrete class and directly access it.
+        LocalBinder binder = (LocalBinder) service;
+        mService = binder.getService();
+        mBound = true;
+    }
+
+    // Called when the connection with the service disconnects unexpectedly
+    public void onServiceDisconnected(ComponentName className) {
+        Log.e(TAG, "onServiceDisconnected");
+        mBound = false;
+    }
+};
+</pre>
+
+<p>이 {@link android.content.ServiceConnection}이 있으면 클라이언트는 
+이것을 {@link android.content.Context#bindService bindService()}에 전달하여 서비스에 바인딩할 수 있습니다. 예:</p>
+
+<pre>
+Intent intent = new Intent(this, LocalService.class);
+bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+</pre>
+
+<ul>
+  <li>{@link android.content.Context#bindService bindService()}의 첫 번째 매개변수는 바인딩할 서비스를 명시적으로 명명하는 
+{@link android.content.Intent}입니다(인텐트는 
+암시적일 수 있음).</li>
+<li>두 번째 매개변수는 {@link android.content.ServiceConnection} 개체입니다.</li>
+<li>세 번째 매개변수는 바인딩 옵션을 나타내는 플래그입니다. 서비스를 생성하기 위해 보통은 {@link
+android.content.Context#BIND_AUTO_CREATE}를 사용합니다(이미 살아 있는 상태가 아닌 경우). 
+가능한 기타 값은 {@link android.content.Context#BIND_DEBUG_UNBIND}
+ 및 {@link android.content.Context#BIND_NOT_FOREGROUND}, 또는 값이 없는 경우 {@code 0}입니다.</li>
+</ul>
+
+
+<h3>추가 참고 사항</h3>
+
+<p>다음은 서비스에 바인딩하는 데 관한 몇 가지 중요한 참고 사항입니다.</p>
+<ul>
+  <li>항상 {@link android.os.DeadObjectException} 예외를 트래핑해야 합니다. 
+이것은 연결이 끊어지면 발생합니다. 원격 메서드에 의해 발생하는 예외는 이것뿐입니다.</li>
+  <li>개체는 여러 프로세스에 걸쳐 감안된 참조입니다. </li>
+  <li>일반적으로, 클라이언트의 수명 주기를
+결합하고 분해하는 순간을 일치시키면서 바인딩과 바인딩 해제를 페어링해야 합니다. 예:
+    <ul>
+      <li>액티비티가 눈에 보이는 동안에만 서비스와 상호 작용해야 한다면 
+{@link android.app.Activity#onStart onStart()}에는 바인딩하고 {@link
+android.app.Activity#onStop onStop()}에는 바인딩을 해제해야 합니다.</li>
+      <li>
+배경에서 중단되었을 때도 액티비티가 응답을 받게 하고 싶다면 {@link android.app.Activity#onCreate onCreate()}에는 바인딩하고
+{@link android.app.Activity#onDestroy onDestroy()} 중에는 바인딩을 해제합니다. 
+이때, 사용자의 액티비티가 서비스가 실행되는 시간 전체에서(배경에서라도) 서비스를 사용한다는 것을 유념해야 합니다. 
+서비스가 다른 프로세스에 있을 경우, 사용자가 프로세스의 가중치를 높이면 시스템이
+이를 중단할 가능성이 높아집니다.</li>
+    </ul>
+    <p class="note"><strong>참고:</strong> 일반적으로는, 액티비티의 {@link android.app.Activity#onResume onResume()}와 {@link
+android.app.Activity#onPause onPause()}에는 바인딩하거나 바인딩을 해제하지 <strong>말아야</strong> 합니다. 이러한 콜백은 모든 수명 주기 전환에서 발생하고
+이런 전환에서 발생하는 처리는
+최소한으로 유지해야 하기 때문입니다. 또한, 
+사용자 애플리케이션의 여러 액티비티가 동일한 서비스에 바인딩되었고 
+두 액티비티 사이에 전환이 있을 경우, 현재 액티비티의 바인딩이 해제된 후(일시중지 중) 다음 액티비티가 바인딩하기 전(재개 중)에
+서비스가 제거되었다가 다시 생성될 수 있습니다 (수명 주기를 조절하기 위한 이러한 액티비티 전환은
+<a href="{@docRoot}guide/components/activities.html#CoordinatingActivities">액티비티</a>
+문서에 설명되어 있습니다).</p>
+</ul>
+
+<p>더 많은 샘플 코드를 보려면 <a href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a>의 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html">{@code
+RemoteService.java}</a> 클래스를 참조하십시오.</p>
+
+
+
+
+
+<h2 id="Lifecycle">바인딩된 서비스 수명 주기 관리</h2>
+
+<p>서비스가 모든 클라이언트로부터 바인딩 해제되면, Android 시스템이 이를 소멸시킵니다(다만 
+{@link android.app.Service#onStartCommand onStartCommand()}와도 함께 시작된 경우는 예외). 
+따라서, 서비스가 순전히 바인딩된 서비스일 경우에는 해당 서비스의 수명 주기를 관리하지 않아도 됩니다.
+클라이언트에 바인딩되었는지를 근거로 Android 시스템이 대신 관리해주기 때문입니다.</p>
+
+<p>그러나 {@link android.app.Service#onStartCommand
+onStartCommand()} 콜백 메서드를 구현하기로 선택하는 경우라면 서비스를 확실히 중지해야 합니다.
+서비스가 현재 <em>시작된 것</em>으로 간주되기 때문입니다. 이런 경우, 서비스는 클라이언트에 바인딩되었는지 여부와 관계없이
+{@link android.app.Service#stopSelf()}와 함께 스스로 중단되거나 다른 구성 요소가{@link
+android.content.Context#stopService stopService()}를 호출할 때까지 실행됩니다.
+</p>
+
+<p>또한, 서비스가 시작되고 바인딩을 허용할 경우 시스템이
+{@link android.app.Service#onUnbind onUnbind()} 메서드를 호출하면
+{@code true}를 선택적으로 반환할 수 있습니다. 다음에 클라이언트가 서비스에 바인딩할 때({@link
+android.app.Service#onBind onBind()}에 대한 호출을 수신하지 않고) {@link android.app.Service#onRebind
+onRebind()}에 대한 호출을 받을지 여부에 따라 결정됩니다. {@link android.app.Service#onRebind
+onRebind()}가 void를 반환하였지만 클라이언트가
+{@link android.content.ServiceConnection#onServiceConnected onServiceConnected()} 콜백에서 {@link android.os.IBinder}를 여전히 수신합니다.
+아래 그림 1은 이런 수명 주기의 논리를 나타냅니다.</p>
+
+
+<img src="{@docRoot}images/fundamentals/service_binding_tree_lifecycle.png" alt="" />
+<p class="img-caption"><strong>그림 1.</strong> 시작되었으며 바인딩도 허용하는 서비스의 수명 주기입니다.
+</p>
+
+
+<p>시작된 서비스의 수명 주기에 관한 자세한 정보는 <a href="{@docRoot}guide/components/services.html#Lifecycle">서비스</a> 문서를 참조하십시오.</p>
+
+
+
+
diff --git a/docs/html-intl/intl/ko/guide/components/fragments.jd b/docs/html-intl/intl/ko/guide/components/fragments.jd
new file mode 100644
index 0000000..a41250c
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/components/fragments.jd
@@ -0,0 +1,812 @@
+page.title=프래그먼트
+parent.title=액티비티
+parent.link=activities.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>이 문서의 내용</h2>
+  <ol>
+    <li><a href="#Design">디자인 철학</a></li>
+    <li><a href="#Creating">프래그먼트 생성</a>
+      <ol>
+        <li><a href="#UI">사용자 인터페이스 추가하기</a></li>
+        <li><a href="#Adding">액티비티에 프래그먼트 추가</a></li>
+      </ol>
+    </li>
+    <li><a href="#Managing">프래그먼트 관리</a></li>
+    <li><a href="#Transactions">프래그먼트 트랜잭션 수행</a></li>
+    <li><a href="#CommunicatingWithActivity">액티비티와 통신</a>
+      <ol>
+        <li><a href="#EventCallbacks">액티비티로의 이벤트 콜백 생성</a></li>
+        <li><a href="#ActionBar">작업 모음에 항목 추가</a></li>
+      </ol>
+    </li>
+    <li><a href="#Lifecycle">프래그먼트 수명 주기 처리</a>
+      <ol>
+        <li><a href="#CoordinatingWithActivity">액티비티 수명 주기와 조화</a></li>
+      </ol>
+    </li>
+    <li><a href="#Example">예</a></li>
+  </ol>
+
+  <h2>Key 클래스</h2>
+  <ol>
+    <li>{@link android.app.Fragment}</li>
+    <li>{@link android.app.FragmentManager}</li>
+    <li>{@link android.app.FragmentTransaction}</li>
+  </ol>
+  
+  <h2>참고 항목</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/fragments/index.html">프래그먼트로 동적 UI 구축하기</a></li>
+    <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">태블릿
+및 핸드셋 지원</a></li>
+  </ol>
+</div>
+</div>
+
+<p>{@link android.app.Fragment}는 동작 또는 
+{@link android.app.Activity} 내에서 사용자 인터페이스의 일부를 나타냅니다. 여러 개의 프래그먼트를 하나의 액티비티에 
+조합하여 창이 여러 개인 UI를 구축할 수 있으며, 하나의 프래그먼트를 여러 액티비티에서 재사용할 수 있습니다. 프래그먼트는 자체 수명 주기를 가지고, 자체 입력 이벤트를 받으며, 
+액티비티 실행 중에 추가 및 제거가 가능한 액티비티의 모듈식 섹션이라고 
+생각하면 됩니다(다른 액티비티에 
+재사용할 수 있는 "하위 액티비티"와 같은 개념).</p>
+
+<p>프래그먼트는 항상 액티비티 내에 포함되어 있어야 하며 해당 프래그먼트의 수명 주기는 
+호스트 액티비티의 수명 주기에 직접적으로 영향을 받습니다. 예를 들어 액티비티가 일시정지되는 경우, 그 안의 모든 프래그먼트도 
+일시정지되며 액티비티가 소멸되면 모든 프래그먼트도 마찬가지로 소멸됩니다. 그러나 액티비티가 실행 중인 
+동안에는(<em>재개됨</em> <a href="{@docRoot}guide/components/activities.html#Lifecycle">수명 주기 상태</a>에 있을 때를 말합니다) 
+각 프래그먼트를 추가 또는 제거하는 등 개별적으로 조작할 수 있습니다. 그와 같은 프래그먼트 트랜잭션을 
+수행할 때에는 이를 액티비티가 관리하는 백 스택에도 
+추가할 수 있습니다. 각 백 스택 항목이 발생한 프래그먼트 트랜잭션의 
+기록이 됩니다. 이 백 스택을 사용하면 사용자가 프래그먼트 트랜잭션을 거꾸로 돌릴 수 있습니다(뒤로 이동).
+이때 <em>뒤로</em> 버튼을 누르면 됩니다.</p>
+
+<p>프래그먼트를 액티비티 레이아웃의 일부로 추가하는 경우, 이는 액티비티의 보기 계층 내부의 {@link
+android.view.ViewGroup} 안에 살며, 해당 프래그먼트가 자신의 보기 
+레이아웃을 정의합니다.
+프래그먼트를 액티비티 레이아웃에 삽입하려면 해당 프래그먼트를 
+액티비티의 레이아웃 파일에서 {@code &lt;fragment&gt;} 요소로 선언하거나, 애플리케이션 코드에서 이를 
+기존의 {@link android.view.ViewGroup}에 추가하면 됩니다. 그러나 프래그먼트가 
+액티비티 레이아웃의 일부분이어야만 하는 것은 아닙니다. 나름의 UI가 없는 프래그먼트도 액티비티를 위한 
+보이지 않는 작업자로 사용할 수 있습니다.</p>
+
+<p>이 문서에서는 프래그먼트를 사용하도록 애플리케이션을 구축하는 법을 
+설명합니다. 그중에는 프래그먼트를 액티비티의 백 스택에 추가했을 때 프래그먼트가 자신의 상태를 유지하는 방법, 
+액티비티 및 액티비티 내의 다른 프래그먼트와 이벤트를 공유하는 방법과 액티비티의 
+작업 모음에 참가하는 법 등등 여러 가지가 포함됩니다.</p>
+
+
+<h2 id="Design">디자인 철학</h2>
+
+<p>Android가 프래그먼트를 처음 도입한 것은 Android 3.0(API 레벨 11)부터입니다. 기본적으로 
+태블릿과 같은 큰 화면에서 보다 역동적이고 유연한 UI 디자인을 지원하는 것이 목적이었습니다. 태블릿의 화면은 
+핸드셋 화면보다 훨씬 크기 때문에 UI 구성 요소를 조합하고 상호 교환할 공간이 
+더 많습니다. 프래그먼트는 개발자가 보기 계층에 복잡한 변경 내용을 관리하지 않아도 
+그러한 디자인을 사용할 수 있도록 해주는 것입니다. 한 액티비티의 레이아웃을 여러 프래그먼트로 나누면 
+런타임에 액티비티의 외관을 수정할 수도 있고 그러한 변경 내용을 해당 액티비티가 관리하는 
+백 스택에 보존할 수도 있습니다.</p>
+
+<p>예를 들어 뉴스 애플리케이션이라면 하나의 프래그먼트를 사용하여 
+왼쪽에 기사 목록을 표시하도록 하고 또 다른 프래그먼트로 오른쪽에 기사 내용을 표시하도록 할 수 있습니다. 두 프래그먼트 모두 
+한 액티비티에서 양쪽으로 나란히 나타나며, 각 프래그먼트에 나름의 수명 주기 콜백 메서드가 있고 
+각자 사용자 입력 이벤트를 따로 처리하게 됩니다. 따라서, 사용자는 기사를 선택하는 데 한 액티비티를 쓰고 
+기사를 읽는 데 또 다른 액티비티를 선택하는 대신에 같은 액티비티 안에서 기사를 선택하고 읽는 과정을 
+모두 끝낼 수 있는 것입니다. 이것은 그림 1에 나타낸 태블릿 레이아웃과 같습니다.</p>
+
+<p>프래그먼트를 디자인할 때에는 각 프래그먼트를 모듈식이며 재사용 가능한 액티비티 구성 요소로 만들어야 합니다. 
+다시 말해, 각 프래그먼트가 나름의 레이아웃을 따로 정의하고 자기만의 수명 주기 콜백으로 자기 나름의 동작을 정의하기 때문에 
+한 프래그먼트를 여러 액티비티에 포함시킬 수 있습니다. 그러므로 재사용을 염두에 두고 디자인하며 
+한 프래그먼트를 또 다른 프래그먼트로부터 직접 조작하는 것은 삼가야 합니다. 이것은 특히 모듈식 프래그먼트를 사용하면 
+프래그먼트 조합을 여러 가지 화면 크기에 맞춰 변경할 수 있도록 해주기 때문에 중요한 요점입니다. 태블릿과 핸드셋을 모두 지원하는 
+애플리케이션을 디자인하는 경우, 사용 가능한 화면 공간을 토대로 사용자 경험을 최적화하도록 프래그먼트를 
+여러 레이아웃 구성에 재사용할 수 있습니다. 예를 들어 핸드셋에서의 경우 
+프래그먼트를 분리해서 단일 창 UI를 제공하도록 해야할 수 있습니다. 같은 액티비티 안에 하나 이상이 들어가지 않을 수 
+있기 때문입니다.</p>
+
+<img src="{@docRoot}images/fundamentals/fragments.png" alt="" />
+<p class="img-caption"><strong>그림 1.</strong> 프래그먼트가 정의한 두 가지 UI 모듈이 
+태블릿 디자인에서는 하나의 액티비티로 조합될 수 있는 반면 핸드셋 디자인에서는 분리될 수 있다는 것을 
+예시로 나타낸 것입니다.</p>
+
+<p>예를 들어&mdash;뉴스 애플리케이션 예시를 계속 사용하겠습니다&mdash;이 애플리케이션을 태블릿 크기의 기기에서 실행하는 경우, 
+애플리케이션 내의 <em>액티비티 A</em> 안에 두 개의 프래그먼트를 포함시킬 수 있습니다. 그러나 
+핸드셋 크기의 화면에서라면 두 프래그먼트를 모두 쓸 만큼 공간이 충분치 않습니다. 
+따라서 <em>액티비티 A</em>에는 기사 목록에 해당되는 프래그먼트만 포함하고, 사용자가 기사를 하나 선택하면 이것이 
+<em>액티비티 B</em>를 시작합니다. 여기에 기사를 읽을 두 번째 프래그먼트가 포함되어 있습니다. 따라서 이 애플리케이션은 
+서로 다른 조합으로 프래그먼트를 재사용함으로써 태블릿과 핸드셋을 둘 다 지원하는 
+것입니다(그림 1 참조).</p>
+
+<p>여러 가지 화면 구성에 맞게 여러 가지 프래그먼트 조합으로 애플리케이션을 디자인하는 법에 대한 자세한 정보는 
+<a href="{@docRoot}guide/practices/tablets-and-handsets.html">태블릿 및 핸드셋 지원</a>에 대한 가이드를 참조하십시오.</p>
+
+
+
+<h2 id="Creating">프래그먼트 생성</h2>
+
+<div class="figure" style="width:327px">
+<img src="{@docRoot}images/fragment_lifecycle.png" alt="" />
+<p class="img-caption"><strong>그림 2.</strong> 프래그먼트의 수명 주기(
+소속 액티비티가 실행 중일 때).</p>
+</div>
+
+<p>프래그먼트를 생성하려면 {@link android.app.Fragment}의 하위 클래스(또는 이의 기존
+하위 클래스)를 생성해야 합니다. {@link android.app.Fragment} 클래스에는 
+{@link android.app.Activity}와 아주 유사해 보이는 코드가 있습니다. 여기에는 액티비티와 비슷한 콜백 메서드가 들어 있습니다. 
+예를 들어 {@link android.app.Fragment#onCreate onCreate()}, {@link android.app.Fragment#onStart onStart()},
+{@link android.app.Fragment#onPause onPause()} 및 {@link android.app.Fragment#onStop onStop()} 등입니다. 사실, 
+기존 Android 애플리케이션을 변환하여 프래그먼트를 사용하도록 하려면 그저 
+액티비티의 콜백 메서드에서 프래그먼트에 해당되는 콜백 메서드로 코드를 옮기기만 하면 
+될 수도 있습니다.</p>
+
+<p>보통은 최소한 다음과 같은 수명 주기 메서드를 구현해야 합니다.</p>
+
+<dl>
+  <dt>{@link android.app.Fragment#onCreate onCreate()}</dt>
+  <dd>시스템은 프래그먼트를 생성할 때 이것을 호출합니다. 구현 내에서 프래그먼트의 기본 구성 요소 중 
+프래그먼트가 일시정지되거나 중단되었다가 재개되었을 때 유지하고자 하는 것을 
+초기화해야 합니다.</dd>
+  <dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
+  <dd>시스템은 프래그먼트가 자신의 사용자 인터페이스를 처음으로 그릴 시간이 되면 
+이것을 호출합니다. 프래그먼트에 맞는 UI를 그리려면 메서드에서 {@link android.view.View}를 반환해야 합니다. 
+이 메서드는 프래그먼트 레이아웃의 루트입니다. 프래그먼트가 UI를 제공하지 않는 경우 null을 반환하면 
+됩니다.</dd>
+  <dt>{@link android.app.Activity#onPause onPause()}</dt>
+  <dd>시스템이 이 메서드를 호출하는 것은 사용자가 프래그먼트를 떠난다는 
+첫 번째 신호입니다(다만 이것이 항상 프래그먼트가 소멸 중이라는 뜻은 아닙니다). 현재 사용자 세션을 넘어서 
+지속되어야 하는 변경 사항을 커밋하려면 보통 이곳에서 해아 합니다(사용자가 
+돌아오지 않을 수 있기 때문입니다).</dd>
+</dl>
+
+<p>대부분의 애플리케이션은 각각의 프래그먼트에 이와 같은 메서드를 최소한 세 개씩 
+구현해야 하지만, 프래그먼트 수명 주기의 여러 단계를 처리하려면 사용해야 하는 다른 콜백 메서드도 
+많이 있습니다. 모든 수명 주기 콜백 메서드는 나중에 
+<a href="#Lifecycle">프래그먼트 수명 주기 처리</a> 섹션에서 더욱 상세히 논의할 것입니다.</p>
+
+
+<p>이외에도, 기본적인 {@link
+android.app.Fragment} 클래스 대신 확장하고자 하는 하위 클래스도 몇 개 있을 수 있습니다.</p>
+
+<dl>
+  <dt>{@link android.app.DialogFragment}</dt>
+  <dd>부동 대화 창을 표시합니다. 이 클래스를 사용하여 대화를 생성하면 
+{@link android.app.Activity} 클래스의 대화 도우미 메서드를 사용하는 것의 
+좋은 대안책이 됩니다. 이렇게 하면 프래그먼트 대화를 액티비티가 관리하는 프래그먼트의 백 스택에 통합시킬 수 있어, 
+사용자가 무시된 프래그먼트를 반환할 수 있도록 해주기 때문입니다.</dd>
+
+  <dt>{@link android.app.ListFragment}</dt>
+  <dd>어댑터가 관리하는 항목의 목록(예: {@link
+android.widget.SimpleCursorAdapter})을 표시하며, {@link android.app.ListActivity}와 비슷합니다. 
+이것은 목록 보기를 관리하는 데 쓰는 몇 가지 메서드를 제공합니다. 예를 들어 {@link
+android.app.ListFragment#onListItemClick(ListView,View,int,long) onListItemClick()} 콜백을 
+제공하여 클릭 이벤트를 처리하는 것 등입니다.</dd>
+
+  <dt>{@link android.preference.PreferenceFragment}</dt>
+  <dd>{@link android.preference.Preference} 객체의 계층을 목록으로 표시하며, 
+{@link android.preference.PreferenceActivity}와 비슷합니다. 이것은 
+애플리케이션에 대한 "설정" 액티비티를 생성할 때 유용합니다.</dd>
+</dl>
+
+
+<h3 id="UI">사용자 인터페이스 추가하기</h3>
+
+<p>프래그먼트는 일반적으로 액티비티에 속한 사용자 인터페이스의 일부분으로 사용되며 
+자기 나름의 레이아웃으로 액티비티에 참가합니다.</p>
+
+<p>프래그먼트에 대해 레이아웃을 제공하려면 반드시 {@link
+android.app.Fragment#onCreateView onCreateView()} 콜백 메서드를 구현해야 합니다. 
+이것은 프래그먼트가 자신의 레이아웃을 그릴 때가 되면 Android 시스템이 호출하는 것입니다. 이 메서드의 구현은 반드시 
+{@link android.view.View}를 반환해야 합니다. 이것은 프래그먼트 레이아웃의 루트입니다.</p>
+
+<p class="note"><strong>참고:</strong> 프래그먼트가 {@link
+android.app.ListFragment}의 하위 클래스인 경우, 기본 구현이 
+{@link android.app.Fragment#onCreateView onCreateView()}로부터 {@link android.widget.ListView}를 반환하므로 이를 구현하지 않아도 됩니다.</p>
+
+<p>{@link
+android.app.Fragment#onCreateView onCreateView()}로부터 레이아웃을 반환하려면 이를 XML에서 정의된 <a href="{@docRoot}guide/topics/resources/layout-resource.html">레이아웃 리소스</a>로부터 팽창시키면 됩니다. 이를 돕기 위해 
+{@link android.app.Fragment#onCreateView onCreateView()}가 
+{@link android.view.LayoutInflater} 객체를 제공합니다.</p>
+
+<p>예를 들어 다음은 {@link android.app.Fragment}의 하위 클래스입니다. 이것이 
+{@code example_fragment.xml} 파일로부터 레이아웃을 로딩합니다.</p>
+
+<pre>
+public static class ExampleFragment extends Fragment {
+    &#64;Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.example_fragment, container, false);
+    }
+}
+</pre>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>레이아웃 생성</h3>
+  <p>위의 샘플에서 {@code R.layout.example_fragment}는 
+애플리케이션 리소스에 저장된 {@code example_fragment.xml}이라는 레이아웃 리소스에 대한 참조입니다. 레이아웃을 
+XML로 생성하는 방법에 대한 정보는 <a href="{@docRoot}guide/topics/ui/index.html">사용자 인터페이스</a>
+ 문서를 참조하십시오.</p>
+</div>
+</div>
+
+<p>{@link android.app.Fragment#onCreateView
+onCreateView()}로 전달된 {@code container} 매개변수가 상위 {@link android.view.ViewGroup}이며(액티비티의 레이아웃으로부터), 
+이 안에 프래그먼트 레이아웃이 삽입됩니다.
+ {@code savedInstanceState} 매개변수는 일종의 {@link android.os.Bundle}로, 
+이것은 프래그먼트가 재개되는 중인 경우 프래그먼트의 이전 인스턴스에 대한 데이터를 
+제공합니다(상태를 복원하는 것은 <a href="#Lifecycle">프래그먼트 수명 주기 
+처리</a>에서 좀 더 논의합니다).</p>
+
+<p>{@link android.view.LayoutInflater#inflate(int,ViewGroup,boolean) inflate()} 메서드는 
+다음과 같은 세 개의 인수를 취합니다.</p>
+<ul>
+  <li>팽창시키고자 하는 레이아웃의 리소스 ID.</li>
+  <li>팽창된 레이아웃의 상위가 될 {@link android.view.ViewGroup}. {@code
+container}를 전달해야 시스템이 레이아웃 매개변수를 팽창된 레이아웃의 루트 보기에 실행 중인 상위 보기에서 지정한 것과 같이 
+적용할 수 있으므로 이는 중요한 부분입니다.</li>
+  <li>팽창된 레이아웃이 팽창 중에 {@link
+android.view.ViewGroup}(두 번째 매개변수)에 첨부되어야 하는지를 나타내는 부울 값 (이 경우, 
+이것은 거짓입니다. 시스템이 이미 팽창된 레이아웃을 {@code
+container} 안에 삽입하고 있기 때문입니다. 참을 전달하면 최종 레이아웃에 중복된 보기 그룹을 생성하게 됩니다).</li>
+</ul>
+
+<p>이제 레이아웃을 제공하는 프래그먼트 생성하는 법을 알게 되셨습니다. 다음은 프래그먼트를 
+액티비티에 추가해야 합니다.</p>
+
+
+
+<h3 id="Adding">액티비티에 프래그먼트 추가</h3>
+
+<p>프래그먼트는 보통 UI의 일부분으로 호스트 액티비티에 참가합니다. 이는 해당 액티비티의 
+전반적인 보기 계층의 일부분으로 포함되게 됩니다. 프래그먼트를 액티비티 레이아웃에 추가하는 데에는 두 가지 방법이 
+있습니다.</p>
+
+<ul>
+  <li><b>프래그먼트를 액티비티의 레이아웃 파일 안에서 선언합니다.</b>
+<p>이 경우, 프래그먼트에 대한 레이아웃 속성을 마치 
+보기인 것처럼 나타낼 수 있습니다. 예를 들어 다음은 프래그먼트가 두 개 있는 
+한 액티비티에 대한 레이아웃 파일을 나타낸 것입니다.</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"&gt;
+    &lt;fragment android:name="com.example.news.ArticleListFragment"
+            android:id="@+id/list"
+            android:layout_weight="1"
+            android:layout_width="0dp"
+            android:layout_height="match_parent" /&gt;
+    &lt;fragment android:name="com.example.news.ArticleReaderFragment"
+            android:id="@+id/viewer"
+            android:layout_weight="2"
+            android:layout_width="0dp"
+            android:layout_height="match_parent" /&gt;
+&lt;/LinearLayout&gt;
+</pre>
+  <p>{@code &lt;fragment&gt;} 안의 {@code android:name} 속성이 레이아웃 안에서 인스턴트화할 {@link
+android.app.Fragment} 클래스를 나타냅니다.</p>
+
+<p>시스템은 이 액티비티 레이아웃을 생성할 때 레이아웃에서 지정된 각 프래그먼트를 인스턴트화하며 각각에 대해 
+{@link android.app.Fragment#onCreateView onCreateView()} 메서드를 
+호출하여 각 프래그먼트의 레이아웃을 검색합니다. 시스템은 프래그먼트가 반환한 {@link android.view.View}를 
+{@code &lt;fragment&gt;} 요소 자리에 곧바로 삽입합니다.</p>
+
+<div class="note">
+  <p><strong>참고:</strong> 각 프래그먼트에는 액티비티가 재시작되는 경우 
+프래그먼트를 복구하기 위해 시스템이 사용할 수 있는 고유한 식별자가 필요합니다(그리고, 개발자는 이것을 사용하여 프래그먼트를 캡처해 
+이를 제거하는 등 여러 가지 트랜잭션을 수행할 수 있습니다). 프래그먼트에 ID를 제공하는 데에는 
+다음과 같은 세 가지 방법이 있습니다.</p>
+  <ul>
+    <li>고유한 ID와 함께 {@code android:id} 속성을 제공합니다.</li>
+    <li>고유한 문자열과 함께 {@code android:tag} 속성을 제공합니다.</li>
+    <li>위의 두 가지 중 어느 것도 제공하지 않으면, 시스템은 컨테이너 보기의 ID를 
+사용합니다.</li>
+  </ul>
+</div>
+  </li>
+
+  <li><b>또는, 프로그래밍 방식으로 프래그먼트를 기존의 {@link android.view.ViewGroup}에 추가합니다.</b>
+<p>액티비티가 실행 중인 동안에는 언제든 액티비티 레이아웃에 프래그먼트를 추가할 수 있습니다. 그저 프래그먼트를 배치할 
+{@link
+android.view.ViewGroup}를 지정하기만 하면 됩니다.</p>
+  <p>액티비티 내에서 프래그먼트 트랜잭션을 수행하려면(프래그먼트 추가, 제거 또는 
+교체 등), {@link android.app.FragmentTransaction}에서 가져온 API를 사용해야 합니다. 
+{@link android.app.FragmentTransaction}의 인스턴스를 {@link android.app.Activity}에서 가져오는 방법은 다음과 같습니다.</p>
+
+<pre>
+FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()}
+FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
+</pre>
+
+<p>그런 다음 {@link
+android.app.FragmentTransaction#add(int,Fragment) add()} 메서드를 사용하여 프래그먼트를 추가하고, 추가할 프래그먼트와 이를 삽입할 
+보기를 지정하면 됩니다. 예:</p>
+
+<pre>
+ExampleFragment fragment = new ExampleFragment();
+fragmentTransaction.add(R.id.fragment_container, fragment);
+fragmentTransaction.commit();
+</pre>
+
+  <p>{@link android.app.FragmentTransaction#add(int,Fragment) add()}에 
+전달되는 첫 인수가 {@link android.view.ViewGroup}입니다. 
+여기에 프래그먼트가 리소스 ID가 지정한 바와 같이 배치되어야 하며, 두 번째 매개변수는 추가할 프래그먼트입니다.</p>
+  <p>
+{@link android.app.FragmentTransaction}을 변경하고 나면, 반드시 
+{@link android.app.FragmentTransaction#commit}을 호출해야 변경 내용이 적용됩니다.</p>
+  </li>
+</ul>
+
+
+<h4 id="AddingWithoutUI">UI 없이 프래그먼트 추가</h4>
+
+<p>위의 예시에서는 UI를 제공하기 위해 프래그먼트를 액티비티에 추가하는 방법을 보여드렸습니다. 하지만 
+추가로 UI를 제시하지 않고 액티비티에 대한 배경 동작을 제공하는 데에도 프래그먼트를 사용할 수 
+있습니다.</p>
+
+<p>UI 없이 프래그먼트를 추가하려면 액티비티로부터 가져온 프래그먼트를 {@link
+android.app.FragmentTransaction#add(Fragment,String)}을 사용하여 추가합니다(이때, 프래그먼트에 대해 
+보기 ID보다는 고유한 문자열 "태그"를 제공합니다). 이렇게 하면 프래그먼트가 추가되지만, 
+이것은 액티비티 레이아웃 안에 있는 보기와 연관되어 있지 않기 때문에 {@link
+android.app.Fragment#onCreateView onCreateView()}로의 호출은 받지 않습니다. 따라서 그 메서드는 구현하지 않아도 됩니다.</p>
+
+<p>프래그먼트에 대해 문자열 태그를 제공하는 것은 엄밀히 말해 비 UI 프래그먼트에만 해당되는 것은 아닙니다. UI가 있는 
+프래그먼트에도 문자열 태그를 제공할 수 있습니다. 하지만 프래그먼트에 
+UI가 없는 경우라면 이를 식별할 방법은 문자열 태그뿐입니다. 액티비티에서 나중에 
+프래그먼트를 가져오고자 하는 경우, {@link android.app.FragmentManager#findFragmentByTag
+findFragmentByTag()}를 사용해야 합니다.</p>
+
+<p>예를 들어 어떤 액티비티에서 UI 없이 프래그먼트를 배경 작업자로 사용한다고 가정해봅시다. 이것의 예로 {@code
+FragmentRetainInstance.java} 샘플을 들 수 있으며 
+이는 SDK 샘플에 포함되어 있고(Android SDK Manager를 통해 이용 가능), 시스템에는 
+<code>&lt;sdk_root&gt;/APIDemos/app/src/main/java/com/example/android/apis/app/FragmentRetainInstance.java</code>로 찾을 수 있습니다.</p>
+
+
+
+<h2 id="Managing">프래그먼트 관리</h2>
+
+<p>액티비티 내의 프래그먼트를 관리하려면 {@link android.app.FragmentManager}를 사용해야 합니다. 이것을 
+가져오려면 액티비티에서 {@link android.app.Activity#getFragmentManager()}를 호출하십시오.</p>
+
+<p>{@link android.app.FragmentManager}를 가지고 할 수 있는 여러 가지 일 중에 예를 들면 다음과 같습니다.</p>
+
+<ul>
+  <li>액티비티 내에 존재하는 프래그먼트를 {@link
+android.app.FragmentManager#findFragmentById findFragmentById()}로 가져오기(액티비티 레이아웃 내에서 
+UI를 제공하는 프래그먼트의 경우) 또는 {@link android.app.FragmentManager#findFragmentByTag
+findFragmentByTag()}로 가져오기(UI를 제공하거나 하지 않는 프래그먼트의 경우).</li> 
+  <li>백 스택에서 프래그먼트를 {@link
+android.app.FragmentManager#popBackStack()}을 사용하여 튀어나오게 하기(사용자가 내린 <em>뒤로</em> 명령을 시뮬레이트함).</li>
+  <li>백 스택에 변경 내용이 있는지 알아보기 위해 {@link
+android.app.FragmentManager#addOnBackStackChangedListener addOnBackStackChangedListener()}로 수신기 등록하기.</li>
+</ul>
+
+<p>이와 같은 메서드와 그 외 다른 메서드에 대한 자세한 정보는 {@link
+android.app.FragmentManager} 클래스 관련 문서를 참조하십시오.</p>
+
+<p>이전 섹션에서 설명한 바와 같이 {@link android.app.FragmentManager}를 
+사용해서도 {@link android.app.FragmentTransaction}
+을 열 수 있습니다. 이렇게 하면 프래그먼트 추가 및 제거 등 트랜잭션을 수행할 수 있게 해줍니다.</p>
+
+
+<h2 id="Transactions">프래그먼트 트랜잭션 수행</h2>
+
+<p>액티비티에서 프래그먼트를 사용하는 경우 특히 유용한 점은 사용자 상호 작용에 응답하여 추가, 
+제거, 교체 및 다른 작업을 수행할 수 있다는 것입니다. 액티비티에 적용한 
+변경 내용의 집합을 하나의 트랜잭션이라 칭합니다. 이것을 수행하려면 {@link
+android.app.FragmentTransaction} 내의 API를 사용하면 됩니다. 해당 액티비티가 관리하는 백 스택에 행해진 각 트랜잭션을 
+저장할 수도 있습니다. 이렇게 하면 사용자가 프래그먼트 변경 내역을 거쳐 뒤로 탐색할 수 있습니다(액티비티를 통과해 
+뒤로 탐색하는 것과 비슷합니다).</p>
+
+<p>{@link android.app.FragmentTransaction}의 인스턴스를 {@link
+android.app.FragmentManager}로부터 가져오는 방법은 다음과 같습니다.</p>
+
+<pre>
+FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()};
+FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
+</pre>
+
+<p>각 트랜잭션은 동시에 수행하고자 하는 여러 변경을 집합적으로 일컫는 말입니다. 주어진 
+트랜잭션에 대해 수행하고자 하는 모든 변경 사항을 설정하려면 {@link
+android.app.FragmentTransaction#add add()}, {@link android.app.FragmentTransaction#remove remove()},
+및 {@link android.app.FragmentTransaction#replace replace()}와 같은 메서드를 사용하면 됩니다. 그런 다음, 
+트랜잭션을 액티비티에 적용하려면 반드시 {@link android.app.FragmentTransaction#commit()}을 호출해야 합니다.</p>
+</dl>
+
+<p>하지만 {@link
+android.app.FragmentTransaction#commit()}을 호출하기 전에 먼저 호출해야 할 것이 있습니다. 바로 {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()}입니다. 
+이렇게 해야 트랜잭션을 프래그먼트 트랜잭션의 백 스택에 추가할 수 있습니다. 이 백 스택을 액티비티가 관리하며, 
+이를 통해 사용자가 이전 프래그먼트 상태로 되돌아갈 수 있습니다. 이때 <em>뒤로</em> 버튼을 누르면 됩니다.</p>
+
+<p>예를 들어 다음은 한 프래그먼트를 다른 것으로 교체하고 이전 상태를 백 스택에 보존하는 법을 
+나타낸 것입니다.</p>
+
+<pre>
+// Create new fragment and transaction
+Fragment newFragment = new ExampleFragment();
+FragmentTransaction transaction = getFragmentManager().beginTransaction();
+
+// Replace whatever is in the fragment_container view with this fragment,
+// and add the transaction to the back stack
+transaction.replace(R.id.fragment_container, newFragment);
+transaction.addToBackStack(null);
+
+// Commit the transaction
+transaction.commit();
+</pre>
+
+<p>이 예시에서 {@code newFragment}가 현재 레이아웃 컨테이너에 있는 
+프래그먼트(있는 경우)를 교체합니다. 이는 {@code R.id.fragment_container} ID로 식별할 수 있습니다. {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()}를 호출하면 교체 트랜잭션이 
+백 스택에 저장되고, 따라서 사용자가 트랜잭션을 거꾸로 수행하여 
+이전 프래그먼트를 도로 가져올 수 있습니다. <em>뒤로</em> 버튼을 사용하면 됩니다.</p>
+
+<p>트랜잭션에 여러 개의 변경을 추가하고(예를 들어 또 다른 {@link
+android.app.FragmentTransaction#add add()} 또는 {@link android.app.FragmentTransaction#remove
+remove()}) {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()}을 호출하면, {@link android.app.FragmentTransaction#commit commit()}을 호출하기 전에 적용된 모든 변경 내용이 
+백 스택에 하나의 트랜잭션으로 추가되며, <em>뒤로</em> 버튼을 누르면 
+모두 한꺼번에 역행하게 됩니다.</p>
+
+<p>{@link android.app.FragmentTransaction}에 변경 내용을 추가하는 순서는 중요하지 않습니다. 
+다만 다음과 같은 예외가 있습니다.</p>
+<ul>
+  <li>{@link android.app.FragmentTransaction#commit()}을 마지막으로 호출해야만 합니다.</li>
+  <li>같은 컨테이너에 여러 개의 프래그먼트를 추가하는 경우, 이를 추가하는 순서가 이들이 
+보기 계층에 나타나는 순서를 결정 짓습니다.</li>
+</ul>
+
+<p>프래그먼트를 제거하는 트랜잭션을 수행하면서 {@link android.app.FragmentTransaction#addToBackStack(String)
+addToBackStack()}을 호출하지 않는 경우, 
+해당 프래그먼트는 트랜잭션이 적용되면 소멸되고 사용자가 이를 되짚어 탐색할 수 없게 됩니다. 반면에 
+프래그먼트를 제거하면서 {@link android.app.FragmentTransaction#addToBackStack(String) addToBackStack()}을 호출하면, 
+해당 프래그먼트는 <em>중단</em>되고 사용자가 뒤로 탐색하면 
+재개됩니다.</p>
+
+<p class="note"><strong>팁:</strong> 각 프래그먼트 트랜잭션에 대해 전환 애니메이션을 적용하려면 
+커밋하기 전에 {@link android.app.FragmentTransaction#setTransition setTransition()}을 
+호출하면 됩니다.</p>
+
+<p>{@link android.app.FragmentTransaction#commit()}을 호출해도 그 즉시 트랜잭션을 수행하지는 
+않습니다. 그보다는, 액티비티의 UI 스레드("주요" 스레드)를 스레드가 할 수 있는 한 빨리 
+이 트랜잭션을 수행하도록 일정을 예약하는 것에 가깝습니다. 하지만 필요한 경우 UI 스레드로부터 {@link
+android.app.FragmentManager#executePendingTransactions()}를 호출하면 
+{@link android.app.FragmentTransaction#commit()}이 제출한 트랜잭션을 즉시 실행할 수 있습니다. 트랜잭션이 
+다른 스레드의 작업에 대한 종속성이 아니라면 굳이 이렇게 해야만 하는 것은 아닙니다.</p>
+
+<p class="caution"><strong>주의:</strong> 트랜잭션을 적용할 때 {@link
+android.app.FragmentTransaction#commit commit()}을 사용해도 되는 것은 액티비티가 <a href="{@docRoot}guide/components/activities.html#SavingActivityState">그 상태를 
+저장</a>하기 전뿐입니다(사용자가 액티비티를 떠날 때). 그 시점 이후에 적용하려고 하면 예외가 
+발생합니다. 이것은 액티비티를 복원해야 하는 경우 적용 이후의 상태가 손실될 수 
+있기 때문입니다. 적용이 손실되어도 괜찮은 상황이라면, {@link
+android.app.FragmentTransaction#commitAllowingStateLoss()}를 사용하십시오.</p>
+
+
+
+
+<h2 id="CommunicatingWithActivity">액티비티와 통신</h2>
+
+<p>{@link android.app.Fragment}는 
+{@link android.app.Activity}로부터 독립적인 객체로 구현되었고 여러 개의 액티비티 안에서 사용할 수 있는 것이 사실이지만, 
+프래그먼트의 주어진 인스턴스는 그것을 포함하고 있는 액티비티에 직접적으로 연결되어 있습니다.</p>
+
+<p>구체적으로 말하면, 이 프래그먼트는 {@link
+android.app.Fragment#getActivity()}를 사용하여 {@link android.app.Activity} 인스턴스에 액세스하여 
+액티비티 레이아웃에서 보기를 찾는 것과 같은 작업을 손쉽게 수행할 수 있습니다.</p>
+
+<pre>
+View listView = {@link android.app.Fragment#getActivity()}.{@link android.app.Activity#findViewById findViewById}(R.id.list);
+</pre>
+
+<p>이와 마찬가지로, 액티비티도 프래그먼트 안의 메서드를 호출할 수 있습니다. 그러려면 {@link android.app.FragmentManager}로부터의 
+{@link android.app.Fragment}에 대한 참조를 가져와야 하며, 이때 {@link
+android.app.FragmentManager#findFragmentById findFragmentById()} 또는 {@link
+android.app.FragmentManager#findFragmentByTag findFragmentByTag()}를 사용합니다. 예:</p>
+
+<pre>
+ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
+</pre>
+
+
+<h3 id="EventCallbacks">액티비티로의 이벤트 콜백 생성</h3>
+
+<p>어떤 경우에는 프래그먼트로 하여금 액티비티와 이벤트를 공유하게 해야 할 수 있습니다. 이렇게 하기 위한 
+한 가지 좋은 방법은 프래그먼트 내부의 콜백 인터페이스를 정의한 다음 해당 호스트 액티비티가 이를 구현하도록 
+하는 것입니다. 액티비티가 인터페이스를 통해 콜백을 수신하면, 필요에 따라 그 정보를 레이아웃 내의 
+다른 프래그먼트와 공유할 수 있습니다.</p>
+
+<p>예를 들어 어떤 뉴스 애플리케이션에서 액티비티 하나에 프래그먼트가 두 개 있습니다. 
+ 하나는 기사 목록을 표시(프래그먼트 A)하고 다른 하나는 기사 하나를 표시(프래그먼트 B)하는 경우 목록 항목이 선택되면 
+프래그먼트 A가 액티비티에 알려야 프래그먼트 B에 해당 기사를 표시하라고 알릴 수 있습니다. 이 경우, 
+{@code OnArticleSelectedListener} 인터페이스는 프래그먼트 A 내부에 선언됩니다.</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    ...
+    // Container Activity must implement this interface
+    public interface OnArticleSelectedListener {
+        public void onArticleSelected(Uri articleUri);
+    }
+    ...
+}
+</pre>
+
+<p>그러면 프래그먼트를 호스팅하는 액티비티가 {@code OnArticleSelectedListener}
+ 인터페이스를 
+구현하고 {@code onArticleSelected()}를 재정의하여 프래그먼트 A로부터 일어난 이벤트를 
+프래그먼트 B에 알립니다. 호스트 액티비티가 이 인터페이스를 구현하도록 
+확실히 하려면 프래그먼트 A의 {@link
+android.app.Fragment#onAttach onAttach()} 콜백 메서드(프래그먼트를 액티비티에 추가할 때 시스템이 호출하는 것)가 {@code OnArticleSelectedListener}의 인스턴스를 인스턴트화해야 합니다. 이때 {@link android.app.Fragment#onAttach
+onAttach()} 안으로 전달된 {@link android.app.Activity}를 
+캐스팅하는 방법을 씁니다.</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    OnArticleSelectedListener mListener;
+    ...
+    &#64;Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        try {
+            mListener = (OnArticleSelectedListener) activity;
+        } catch (ClassCastException e) {
+            throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener");
+        }
+    }
+    ...
+}
+</pre>
+
+<p>액티비티가 인터페이스를 구현하지 않은 경우, 프래그먼트가 
+{@link java.lang.ClassCastException}을 발생시킵니다. 
+성공 시, {@code mListener} 구성원이 액티비티의 
+{@code OnArticleSelectedListener} 구현에 대한 참조를 보유하므로, 프래그먼트 A가 액티비티와 이벤트를 공유할 수 있습니다. 
+이때 {@code OnArticleSelectedListener} 인터페이스가 정의한 메서드를 호출하는 방법을 씁니다. 예를 들어 프래그먼트 A가 
+{@link android.app.ListFragment}의 확장인 경우, 
+사용자가 목록 항목을 클릭할 때마다 시스템이 프래그먼트 안의 {@link android.app.ListFragment#onListItemClick
+onListItemClick()}을 호출하고, 그러면 이것이 {@code onArticleSelected()}를 호출하여 
+해당 이벤트를 액티비티와 공유하는 것입니다.</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    OnArticleSelectedListener mListener;
+    ...
+    &#64;Override
+    public void onListItemClick(ListView l, View v, int position, long id) {
+        // Append the clicked item's row ID with the content provider Uri
+        Uri noteUri = ContentUris.{@link android.content.ContentUris#withAppendedId withAppendedId}(ArticleColumns.CONTENT_URI, id);
+        // Send the event and Uri to the host activity
+        mListener.onArticleSelected(noteUri);
+    }
+    ...
+}
+</pre>
+
+<p>{@link
+android.app.ListFragment#onListItemClick onListItemClick()}에 전달된 {@code id} 매개변수가 클릭한 항목의 행 ID이며, 
+액티비티(또는 다른 프래그먼트)가 이것을 사용해 애플리케이션의 {@link
+android.content.ContentProvider}에서 기사를 가져옵니다.</p>
+
+<p><!--To see a complete implementation of this kind of callback interface, see the <a
+href="{@docRoot}resources/samples/NotePad/index.html">NotePad sample</a>. -->콘텐츠 제공자 사용법에 대한 자세한 정보는 
+<a href="{@docRoot}guide/topics/providers/content-providers.html">콘텐츠 제공자</a> 문서에서 이용하실 수 있습니다.</p>
+
+
+
+<h3 id="ActionBar">작업 모음에 항목 추가</h3>
+
+<p>프래그먼트는 액티비티의 <a href="{@docRoot}guide/topics/ui/menus.html#options-menu">옵션 메뉴</a>에(결과적으로 <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모음</a>에도) 메뉴 항목으로 참가할 수 있습니다. 이때 
+{@link android.app.Fragment#onCreateOptionsMenu(Menu,MenuInflater) onCreateOptionsMenu()}를 구현하는 방법을 씁니다. 이 메서드가 
+호출을 수신하도록 하려면, {@link
+android.app.Fragment#onCreate(Bundle) onCreate()} 중에 {@link
+android.app.Fragment#setHasOptionsMenu(boolean) setHasOptionsMenu()}를 호출하여 프래그먼트가 
+옵션 메뉴에 항목을 추가하고자 한다는 것을 나타내야 합니다(그렇지 않으면 해당 프래그먼트가 
+{@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()}로의 호출을 받지 못하게 됩니다).</p>
+
+<p>그런 다음 프래그먼트로부터 옵션 메뉴에 추가하는 모든 항목은 기존의 메뉴 항목에 
+추가됩니다. 해당 프래그먼트는 메뉴 항목을 선택하면 {@link
+android.app.Fragment#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}로의 콜백도 
+수신하게 됩니다.</p>
+
+<p>또한 프래그먼트 레이아웃에 보기를 등록하여 컨텍스트 메뉴를 제공하도록 할 수도 있습니다. 이때 {@link
+android.app.Fragment#registerForContextMenu(View) registerForContextMenu()}를 호출하면 됩니다. 사용자가 컨텍스트 메뉴를 열면, 
+해당 프래그먼트가 {@link
+android.app.Fragment#onCreateContextMenu(ContextMenu,View,ContextMenu.ContextMenuInfo)
+onCreateContextMenu()}로의 호출을 받습니다. 사용자가 항목을 하나 선택하면, 해당 프래그먼트는 {@link
+android.app.Fragment#onContextItemSelected(MenuItem) onContextItemSelected()}로의 호출을 받습니다.</p>
+
+<p class="note"><strong>참고:</strong> 프래그먼트는 추가한 각 메뉴 항목에 대해 '항목 선택됨' 콜백을 
+하나씩 받게 되지만, 사용자가 메뉴 항목을 선택할 때 그에 상응하는 콜백을 가장 처음 받는 것은 
+액티비티입니다. 액티비티가 구현한 '항목 선택됨' 콜백이 선택된 항목을 다루지 않는 경우, 
+해당 이벤트는 프래그먼트의 콜백으로 전달됩니다. 이것은 
+옵션 메뉴와 컨텍스트 메뉴에 모두 참입니다.</p>
+
+<p>메뉴에 대한 더 자세한 정보는 <a href="{@docRoot}guide/topics/ui/menus.html">메뉴</a> 및 <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모음</a> 개발자 가이드를 참조하십시오.</p>
+
+
+
+
+<h2 id="Lifecycle">프래그먼트 수명 주기 처리</h2>
+
+<div class="figure" style="width:350px">
+<img src="{@docRoot}images/activity_fragment_lifecycle.png" alt="" />
+<p class="img-caption"><strong>그림 3.</strong> 액티비티 수명 주기가 프래그먼트 수명 주기에 미치는 
+영향입니다.</p>
+</div>
+
+<p>프래그먼트의 수명 주기를 관리하는 것은 액티비티의 수명 주기를 관리하는 것과 매우 비슷합니다. 액티비티와 마찬가지로 
+프래그먼트는 세 가지 상태로 존재할 수 있습니다.</p>
+
+<dl>
+  <dt><i>재개됨</i></dt>
+    <dd>프래그먼트가 실행 중인 액티비티에 표시됩니다.</dd>
+
+  <dt><i>일시정지됨</i></dt>
+    <dd>또 다른 액티비티가 전경에 나와 있고 사용자가 이에 초점을 맞추고 있지만, 
+이 프래그먼트가 있는 액티비티도 여전히 표시되어 있습니다(전경의 액티비티가 부분적으로 투명하거나 
+전체 화면을 뒤덮지 않습니다).</dd>
+
+  <dt><i>정지됨</i></dt>
+    <dd>프래그먼트가 표시되지 않습니다. 호스트 액티비티가 정지되었거나 
+프래그먼트가 액티비티에서 제거되었지만 백 스택에 추가되었습니다. 정지된 프래그먼트도 
+여전히 표시는 됩니다(모든 상태 및 구성원 정보를 시스템이 보존합니다). 하지만, 사용자에게는 
+더 이상 표시되지 않으며 액티비티를 종료하면 이것도 종료됩니다.</dd>
+</dl>
+
+<p>이번에도 액티비티와 마찬가지로, 프래그먼트의 상태를 보존하려면 {@link
+android.os.Bundle}을 사용합니다. 이는 혹시나 액티비티의 프로세스가 종료되고 액티비티를 
+다시 만들 때 해당 프래그먼트의 상태를 복구해야 할 필요가 있을 때를 대비하는 것입니다. 상태를 저장하려면 프래그먼트의 {@link
+android.app.Fragment#onSaveInstanceState onSaveInstanceState()} 콜백 중에 저장할 수 있고, 복구는 
+{@link android.app.Fragment#onCreate onCreate()}, {@link
+android.app.Fragment#onCreateView onCreateView()} 또는 {@link
+android.app.Fragment#onActivityCreated onActivityCreated()} 중 한 가지가 진행되는 동안 할 수 있습니다. 상태 저장에 관한 자세한 정보는 
+<a href="{@docRoot}guide/components/activities.html#SavingActivityState">액티비티</a>
+문서를 참조하십시오.</p>
+
+<p>액티비티와 프래그먼트의 수명 주기에서 가장 중대한 차이점은 
+해당되는 백 스택에 저장되는 방법입니다. 액티비티는 중단되었을 때 시스템이 관리하는 
+액티비티 백 스택 안에 배치되는 것이 기본입니다(따라서 사용자가 <em>뒤로</em> 버튼을 사용하여 다시 이 액티비티로 
+뒤로 탐색할 수 있습니다. 이 내용은 <a href="{@docRoot}guide/components/tasks-and-back-stack.html">작업 및 백 스택</a>에서 설명하였습니다). 
+하지만, 프래그먼트가 호스트 액티비티가 관리하는 백 스택 안에 배치되는 것은 해당 인스턴스를 저장하라고 명시적으로 요청하는 경우뿐입니다. 
+이때 프래그먼트를 제거하는 트랜잭션 중 {@link
+android.app.FragmentTransaction#addToBackStack(String) addToBackStack()}을 
+호출합니다.</p>
+
+<p>이것만 제외하면, 프래그먼트 수명 주기를 관리하는 것은 액티비티의 수명 주기를 관리하는 것과 
+아주 비슷합니다. 따라서, <a href="{@docRoot}guide/components/activities.html#Lifecycle">액티비티 
+수명 주기 관리</a>에 쓰이는 실례가 프래그먼트에도 똑같이 적용되는 것입니다. 하지만 또 한 가지 이해해두어야 하는 것이 있습니다. 즉, 
+액티비티의 수명이 프래그먼트의 수명에 어떤 영향을 미치는지를 알아두어야 합니다.</p>
+
+<p class="caution"><strong>주의:</strong> {@link android.app.Fragment} 내에서 {@link android.content.Context} 
+객체가 필요한 경우, {@link android.app.Fragment#getActivity()}를 호출하면 됩니다. 
+그러나 {@link android.app.Fragment#getActivity()}를 호출하는 것은 프래그먼트가 액티비티에
+ 첨부되어 있는 경우뿐이니 유의하십시오. 프래그먼트가 아직 첨부되지 않았거나 수명 주기가 끝날 무렵 분리된 경우, 
+{@link android.app.Fragment#getActivity()}가 null을 반환합니다.</p>
+
+
+<h3 id="CoordinatingWithActivity">액티비티 수명 주기와 조화</h3>
+
+<p>프래그먼트가 있는 액티비티의 수명 주기는 해당 프래그먼트의 수명 주기에 직접적인 
+영향을 미칩니다. 따라서 액티비티에 대한 각 수명 주기 콜백이 각 프래그먼트에 대한 비슷한 콜백을 
+유발합니다. 예를 들어 액티비티가 {@link android.app.Activity#onPause}를 받으면, 
+해당 액티비티 내의 각 프래그먼트가 {@link android.app.Fragment#onPause}를 받습니다.</p>
+
+<p>하지만 프래그먼트에는 몇 가지 수명 주기 콜백이 더 있습니다. 이것은 액티비티와의 
+고유한 상호 작용을 다루어 프래그먼트의 UI를 구축하고 소멸시키는 것과 같은 
+작업을 수행합니다. 이러한 추가적인 콜백 메서드를 예로 들면 다음과 같습니다.</p>
+
+<dl>
+  <dt>{@link android.app.Fragment#onAttach onAttach()}</dt>
+    <dd>프래그먼트가 액티비티와 연관되어 있었던 경우 호출됩니다(여기에서 {@link
+android.app.Activity}가 전달됩니다).</dd>
+  <dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
+    <dd>프래그먼트와 연관된 보기 계층을 생성하기 위해 호출됩니다.</dd>
+  <dt>{@link android.app.Fragment#onActivityCreated onActivityCreated()}</dt>
+    <dd>액티비티의 {@link android.app.Activity#onCreate
+onCreate()} 메서드가 반환되면 호출됩니다.</dd>
+  <dt>{@link android.app.Fragment#onDestroyView onDestroyView()}</dt>
+    <dd>프래그먼트와 연관된 보기 계층이 제거되는 중일 때 호출됩니다.</dd>
+  <dt>{@link android.app.Fragment#onDetach onDetach()}</dt>
+    <dd>프래그먼트가 액티비티와 연결이 끊어지는 중일 때 호출됩니다.</dd>
+</dl>
+
+<p>호스트 액티비티의 영향을 받을 프래그먼트 수명 주기의 흐름은 그림 3에서 
+확인하십시오. 이 그림을 보면 액티비티의 각 연속된 상태가 프래그먼트가 어느 
+콜백 메서드를 받게 되는지 결정 짓는다는 것을 볼 수 있습니다. 예를 들어 액티비티가 자신의 {@link
+android.app.Activity#onCreate onCreate()} 콜백을 받은 경우, 해당 액티비티 안에 있는 프래그먼트는 
+{@link android.app.Fragment#onActivityCreated onActivityCreated()} 콜백을 받을 뿐입니다.</p>
+
+<p>액티비티가 재개된 상태에 도달하면 자유자재로 프래그먼트를 액티비티에 추가하거나 액티비티에서 
+제거해도 됩니다. 따라서, 액티비티가 재개된 상태에 있는 동안에만 프래그먼트의 수명 주기를 
+독립적으로 변경할 수 있는 것입니다.</p>
+
+<p>그러나 액티비티가 재개된 상태를 떠나면 액티비티는 다시 프래그먼트를 그 수명 주기 안으로 
+밀어넣습니다.</p>
+
+
+
+
+<h2 id="Example">예</h2>
+
+<p>이 문서에서 논의한 모든 것을 한 번에 모아 보기 위해, 다음은 두 개의 프래그먼트를 사용하여 
+창이 두 개인 레이아웃을 생성하는 액티비티를 예시로 나타낸 것입니다. 아래의 액티비티에 포함된 
+한 프래그먼트는 셰익스피어 희곡 제목 목록을 표시하고, 또 다른 하나는 목록에서 선택했을 때 
+해당 희곡의 요약을 표시합니다. 또한 화면 구성을 근거로 프래그먼트를 여러 가지로 구성하여 제공하는 방법도 
+보여줍니다.</p>
+
+<p class="note"><strong>참고:</strong> 이 액티비티에 대한 완전한 소스 코드는 
+<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.html">{@code
+FragmentLayout.java}</a>에서 이용하실 수 있습니다.</p>
+
+<p>주요 액티비티는 {@link
+android.app.Activity#onCreate onCreate()} 중에 일반적인 방식으로 레이아웃을 적용합니다.</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java main}
+
+<p>적용된 레이아웃은 {@code fragment_layout.xml}입니다.</p>
+
+{@sample development/samples/ApiDemos/res/layout-land/fragment_layout.xml layout}
+
+<p>시스템은 이 레이아웃을 사용하여 액티비티가 레이아웃을 로딩하자마자 {@code TitlesFragment}를 초기화합니다(이것이 희곡 제목을 
+목록으로 나열합니다). 반면 {@link android.widget.FrameLayout}
+(희곡 요약을 표시하는 프래그먼트가 배치될 곳)은 화면 오른쪽에 있는 
+공간을 차지하기는 하지만 처음에는 텅 빈 상태로 유지됩니다. 아래에서 볼 수 있듯이, 사용자가 해당 목록에서 
+항목을 하나 선택해야만 프래그먼트가 {@link android.widget.FrameLayout} 안에 배치됩니다.</p>
+
+<p>그러나 희곡 목록과 요약을 둘 다 나란히 표시할 만큼 너비가 넓지 않은 
+화면 구성도 있습니다. 따라서 위의 레이아웃은 가로 방향 화면 구성에만 사용되며, 
+이를 {@code res/layout-land/fragment_layout.xml}에 저장하여 씁니다.</p>
+
+<p>그러므로 화면이 세로 방향으로 구성된 경우, 시스템은 다음 레이아웃을 적용합니다. 이것은 
+{@code res/layout/fragment_layout.xml}에 저장되어 있습니다.</p>
+
+{@sample development/samples/ApiDemos/res/layout/fragment_layout.xml layout}
+
+<p>이 레이아웃에는 {@code TitlesFragment}만 포함되어 있습니다. 이는 다시 말해 기기가 세로 방향인 경우에는 
+희곡 제목 목록만 표시된다는 뜻입니다. 따라서 사용자가 이 구성에서 목록 항목을 하나 클릭하면, 
+애플리케이션이 두 번째 프래그먼트를 로딩하는 대신 새 액티비티를 시작하여 요약을 
+표시하게 됩니다.</p>
+
+<p>다음으로, 프래그먼트 클래스에서 이것을 달성하는 방법을 보시겠습니다. 첫 번째가 {@code
+TitlesFragment}로, 셰익스피어 희곡 제목 목록을 표시하는 것입니다. 이 프래그먼트는 {@link
+android.app.ListFragment}를 확장하며 목록 보기 작업의 대부분을 처리하기 위해 여기에 의존합니다.</p>
+
+<p>이 코드를 살펴보면서 사용자가 목록 항목을 클릭하면 일어날 수 있는 두 가지 동작이 
+있다는 점을 눈여겨 보십시오. 두 레이아웃 중 어느 것이 활성화 상태인지에 따라 
+같은 액티비티 내에서 세부 사항을 표시하기 위해 새 프래그먼트를 생성하거나 표시할 수도 있고(프래그먼트를 {@link
+android.widget.FrameLayout}에 추가함으로써), 새 액티비티를 시작할 수도 있습니다(프래그먼트를 표시할 수 있는 곳).</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java titles}
+
+<p>두 번째 프래그먼트인 {@code DetailsFragment}는 {@code TitlesFragment}에서 가져온 목록에서 선택한 항목에 대한 희곡 요약을 
+표시하는 것입니다.</p>
+ 
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
+
+<p>{@code TitlesFragment} 클래스에서 다룬 것을 되살려 보면, 사용자가 목록 항목을 클릭하고 
+현재 레이아웃이 {@code R.id.details} 보기를 포함하지 <em>않는</em> 경우(이 보기가 
+{@code DetailsFragment}가 속하는 곳임), 애플리케이션은 항목의 내용을 표시하기 위해 {@code DetailsActivity}
+ 액티비티를 시작하게 됩니다.</p>
+
+<p>다음은 화면이 세로 방향으로 구성되어 있을 때 선택한 희곡의 요약을 표시하기 위해 단순히 {@code DetailsFragment}를
+ 포함할 뿐인 {@code DetailsActivity}입니다.</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
+details_activity}
+ 
+<p>이 액티비티는 구성이 가로 방향인 경우 알아서 종료한다는 점을 눈여겨 보십시오. 따라서 
+주요 액티비티가 작업을 인계 받아 {@code DetailsFragment}를 {@code TitlesFragment}와 함께 표시할 수 있는 것입니다.
+이것은 사용자가 세로 방향 구성에서 {@code DetailsActivity}를 시작했지만 
+그런 다음 가로 방향으로 돌리는 경우(현재 액티비티를 다시 시작함) 일어날 수 있습니다.</p>
+
+
+<p>프래그먼트 사용에 대한 더 많은 샘플(및 이 예시에 대한 완전한 소스 파일)을 보시려면 
+<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/index.html#Fragment">
+ApiDemos</a>에서 이용할 수 있는 API Demos 샘플 앱을 참조하십시오(<a href="{@docRoot}resources/samples/get.html">샘플 SDK 구성 요소</a>에서 다운로드할 수 있습니다).</p>
+
+
diff --git a/docs/html-intl/intl/ko/guide/components/fundamentals.jd b/docs/html-intl/intl/ko/guide/components/fundamentals.jd
new file mode 100644
index 0000000..608b5a2c
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/components/fundamentals.jd
@@ -0,0 +1,480 @@
+page.title=애플리케이션 기본 항목
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>이 문서의 내용</h2>
+<ol>
+<li><a href="#Components">앱 구성 요소</a>
+  <ol>
+    <li><a href="#ActivatingComponents">구성 요소 활성화</a></li>
+  </ol>
+</li>
+<li><a href="#Manifest">매니페스트 파일</a>
+  <ol>
+    <li><a href="#DeclaringComponents">구성 요소 선언</a></li>
+    <li><a href="#DeclaringRequirements">앱 요구 사항 선언</a></li>
+  </ol>
+</li>
+<li><a href="#Resources">앱 리소스</a></li>
+</ol>
+</div>
+</div>
+
+<p>Android 앱은 Java 프로그래밍 언어로 작성됩니다. Android SDK 도구는 
+코드를 컴파일링하여 모든 데이터 및 리소스 파일과 함께 하나의 APK로 만듭니다. 이것은 즉, <i>Android 패키지</i>
+를 뜻하며, 이는 일종의 {@code .apk} 접미사가 있는 아카이브 파일입니다. 한 개의 APK 파일에는 
+Android 앱의 모든 콘텐츠가 들어 있으며 이 파일이 바로 Android로 구동하는 기기가 앱을 설치할 때 사용하는 파일입니다.</p>
+
+<p>Android 앱은 일단 기기에 설치되고 나면 각자 나름의 보안 샌드박스 안에 살게 됩니다. </p>
+
+<ul>
+ <li>Android 운영 체제는 멀티 사용자 Linux 시스템으로, 여기서 각 앱은 각기 다른 사용자와 
+같습니다.</li>
+
+<li>기본적으로 시스템이 각 앱에 고유한 Linux ID를 할당합니다(이 ID는 시스템만 
+사용할 수 있으며 앱은 이것을 알지 못합니다). 시스템은 앱 안의 모든 파일에 대해 권한을 설정하여 
+해당 앱에 할당된 사용자 ID만 이에 액세스할 수 있도록 합니다. </li>
+
+<li>각 프로세스에는 나름의 가상 머신(VM)이 있고, 그렇기 때문에 한 앱의 코드가 다른 여러 앱과는 격리된 상태로 
+실행됩니다.</li>
+
+<li>기본적으로 모든 앱이 나름의 Linux 프로세스에서 실행됩니다. Android는 앱의 구성 요소 중 
+어느 것이라도 실행해야 하는 경우 프로세스를 시작하고, 이것이 더 이상 필요 없어지거나 시스템이 다른 앱을 위해 
+메모리를 회복해야 하는 경우 해당 프로세스를 종료합니다.</li>
+</ul>
+
+<p>Android 시스템은 이런 방식으로 <em>최소 특권의 원리</em>를 구현하는 것입니다. 다시 말해, 
+각 앱은 기본적으로 자신의 작업을 수행하기 위해 필요한 구성 요소에만 액세스 권한을 가지고 
+그 이상은 허용되지 않습니다. 이렇게 하면 대단히 안전한 환경이 만들어져 앱이 시스템에서 
+자신이 권한을 부여 받지 못한 부분에는 액세스할 수 없게 됩니다.</p>
+
+<p>그러나, 앱이 다른 여러 앱과 데이터를 공유하는 것과 앱이 시스템 서비스에 액세스하는 데에는 
+여러 가지 방법이 있습니다.</p>
+
+<ul>
+  <li>두 개의 앱이 같은 Linux 사용자 ID를 공유하도록 설정할 수도 있습니다. 이 경우 
+두 앱은 서로의 파일에 액세스할 수 있게 됩니다.  시스템 리소스를 절약하려면, 같은 사용자 ID를 가진 앱이 
+같은 Linux 프로세스에서 실행되도록 설정하고 같은 VM을 공유하도록 할 수도 있습니다(이들 앱은 같은 인증서로 
+서명해야 합니다).</li>
+  <li>앱은 사용자의 연락처, SMS 메시지, 마운트 가능한 저장소(SD 카드), 
+카메라, Bluetooth를 비롯하여 이외에도 여러 가지 기기 데이터에 액세스할 권한을 요청할 수 있습니다. 모든 
+앱 권한은 설치 시점에 사용자가 허용해야 합니다.</li>
+</ul>
+
+<p>이렇게 해서 Android 앱이 시스템 내에 어떤 식으로 존재하는지 기본 정보를 알아보았습니다. 이 문서의 
+나머지 부분에서 소개될 내용은 다음과 같습니다.</p>
+<ul>
+  <li>앱을 정의하는 핵심 프레임워크 구성 요소.</li>
+  <li>구성 요소를 선언하고 앱에 맞는 필수 기기 특징을 선언할 수 있는 매니페스트 
+파일.</li>
+  <li>앱 코드로부터 별도로 분리되어 있으며 앱이 다양한 기기 구성에 맞게 자신의 행동을 
+안정적으로 최적화할 수 있도록 해주는 리소스.</li>
+</ul>
+
+
+
+<h2 id="Components">앱 구성 요소</h2>
+
+<p>앱 구성 요소는 Android 앱을 이루는 가장 기본적인 구성 단위입니다. 각 
+구성 요소는 시스템이 앱으로 들어올 수 있는 각기 다른 통과 지점을 나타냅니다. 구성 요소 중에는 
+실제 사용자가 쓸 수 있는 진입 지점이 아닌 것도 있고, 일부는 서로에게 의존하지만, 
+각각의 구성 요소는 따로 떨어진 엔티티로서 존재하며 각기 특정한 역할을 수행합니다. 즉 하나하나가 
+앱의 전반적인 행동을 정의하는 데 유용한 고유한 구성 단위인 것입니다.</p>
+
+<p>앱 구성 요소에는 네 가지 서로 다른 유형이 있습니다. 각 유형이 뚜렷한 목적을 가지고 있으며 
+각자 나름의 수명 주기가 있어 구성 요소의 생성 및 소멸 방식을 정의합니다.</p>
+
+<p>다음은 네 가지 유형의 앱 구성 요소를 나타낸 것입니다.</p>
+
+<dl>
+
+<dt><b>액티비티</b></dt>
+
+<dd>통상 <i>액티비티</i> 라고 하면, 사용자 인터페이스가 있는 화면 하나를 나타냅니다. 예를 들어 
+이메일 앱이라면 새 이메일 목록을 표시하는 액티비티가 하나 있고, 
+이메일을 작성하는 액티비티가 또 하나, 그리고 이메일을 읽는 데 쓰는 액티비티가 또 하나 있을 수 있습니다. 여러 
+액티비티가 함께 작동하여 해당 이메일 앱에서 짜임새 있는 사용자 환경을 형성하는 것은 사실이지만, 각자 서로와는 
+독립적인 형태입니다. 따라서, 다른 앱이 이와 같은 액티비티 중 어느 것이라도 하나만 
+시작할 수 있습니다(이메일 앱이 그렇게 하도록 허용하는 경우). 예를 들어, 카메라 앱이라면 이메일 앱 안의 
+액티비티를 시작하여 새 메일을 작성하도록 해서 사용자가 사진을 공유하도록 할 수 있습니다.
+
+<p>액티비티는 {@link android.app.Activity}의 하위 클래스로 구현되며 이에 대한 더 자세한 내용은 
+<a href="{@docRoot}guide/components/activities.html">액티비티</a>
+개발자 가이드에서 확인하실 수 있습니다.</p>
+</dd>
+
+
+<dt><b>서비스</b></dt>
+
+<dd>통상 <i>서비스</i> 라고 하면 배경에서 실행되는 구성 요소로, 오랫동안 실행되는 
+작업을 수행하거나 원격 프로세스를 위한 작업을 수행하는 것입니다. 서비스는 
+사용자 인터페이스를 제공하지 않습니다. 예를 들어 서비스는 사용자가 다른 앱에 있는 동안에 배경에서 음악을 재생할 수도 있고, 
+아니면 사용자와 액티비티 사이의 상호 작용을 차단하지 않고 네트워크를 가로질러 
+데이터를 가져올 수도 있습니다. 또 다른 구성 요소(예: 액티비티)가 서비스를 시작한 다음 
+실행되도록 두거나 자신에게 바인딩하여 상호 작용하도록 할 수도 있습니다.
+
+<p>서비스는 {@link android.app.Service}의 하위 클래스로 구현되며 이에 대한 더 자세한 내용은 
+<a href="{@docRoot}guide/components/services.html">서비스</a>
+개발자 가이드에서 확인하실 수 있습니다.</p>
+</dd>
+
+
+<dt><b>콘텐츠 제공자</b></dt>
+
+<dd>통상 <i>콘텐츠 제공자</i> 는 공유된 앱 데이터 집합을 관리합니다. 데이터는 파일 시스템이나 SQLite 데이터베이스, 
+또는 웹이나 기타 영구적인 저장소 위치 중 앱이 액세스할 수 있는 곳이라면 어디에든 저장할 수 
+있습니다. 다른 여러 앱은 콘텐츠 제공자를 통해 해당 데이터를 쿼리하거나, 심지어는 수정할 수도 
+있습니다(콘텐츠 제공자가 그렇게 하도록 허용하는 경우). 예를 들어, Android 시스템은 사용자의 연락처 정보를 
+관리하는 콘텐츠 제공자를 제공합니다. 따라서, 적절한 권한을 가진 앱이라면 
+어떤 것이든 해당 콘텐츠 제공자의 일부를 쿼리하여(예를 들어 {@link
+android.provider.ContactsContract.Data} 등) 특정한 사람에 대한 정보를 읽고 쓸 수 있습니다.
+
+<p>콘텐츠 제공자는 앱에서 비공개이며 공유되지 않는 데이터를 읽고 쓰는 데에도 
+유용합니다. 예를 들어 <a href="{@docRoot}resources/samples/NotePad/index.html">메모장</a> 샘플 앱은 메모한 내용을 저장하는 데 
+콘텐츠 제공자를 사용합니다.</p>
+
+<p>콘텐츠 제공자는 {@link android.content.ContentProvider}의
+하위 클래스로 구현되며, 다른 앱이 트랜잭션을 수행할 수 있도록 활성화하는 표준 API 집합을 
+구현해야 합니다. 자세한 내용은 <a href="{@docRoot}guide/topics/providers/content-providers.html">콘텐츠 제공자</a> 개발자
+가이드를 참조하십시오.</p>
+</dd>
+
+
+<dt><b>브로드캐스트 수신기</b></dt>
+
+<dd>통상 <i>브로드캐스트 수신기</i> 는 시스템 전체에 대한 브로드캐스트 공지에 응답하는 구성 요소를 
+말합니다.  대다수의 브로드캐스트는 시스템에서 시작합니다. 예를 들어, 화면이 꺼졌다거나 
+배터리 잔량이 부족하다거나, 사진을 캡처했다는 것을 알리는 브로드캐스트가 있습니다.
+앱도 브로드캐스트를 시작합니다. 예를 들어, 기기에 몇 가지 데이터를 다운로드하여 다른 앱도 사용할 수 있다는 
+사실을 다른 여러 앱에게 알리는 것입니다. 브로드캐스트 수신기는 사용자 인터페이스를 표시하지 않지만, 
+<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">상태 표시줄 알림을 생성</a>하여 
+사용자에게 브로드캐스트 이벤트가 발생했다고 알릴 수 있습니다. 다만 브로드캐스트 수신기는 
+그저 다른 구성 요소로의 "게이트웨이"인 경우가 더 보편적이고, 극소량의 작업만 수행하도록 만들어진 경우가 많습니다. 예컨대 
+서비스를 시작하여 이벤트를 근거로 한 어떤 작업을 수행하도록 할 수 있습니다.
+
+<p>브로드캐스트 수신기는 {@link android.content.BroadcastReceiver}의 
+하위 클래스로 구현되며 각 브로드캐스트는 {@link android.content.Intent} 객체로 전달됩니다. 자세한 정보는 
+{@link android.content.BroadcastReceiver} 클래스를 참조하십시오.</p>
+</dd>
+
+</dl>
+
+
+
+<p>Android 시스템 디자인의 독특한 점으로 어떤 앱이든 다른 앱의 구성 요소를 시작할 수 있다는 점을 
+들 수 있습니다. 예를 들어 사용자가 기기 카메라로 사진을 캡처하기를 바라는 경우, 
+그런 작업을 수행하는 또 다른 앱이 있을 가능성이 높습니다. 그러면 사진을 캡처하는 액티비티를 직접 개발하는 대신 
+여러분의 앱이 그 앱을 사용하도록 하면 됩니다. 카메라 앱에 
+통합하기는커녕 카메라 앱의 코드에 연결시킬 필요조차도 없습니다.
+그 대신, 그저 사진을 캡처하는 카메라 앱 안의 해당 액티비티를 시작하기만 하면 
+됩니다. 작업이 완료되면 사진이 앱으로 반환되기까지 하여 바로 사용할 수 있습니다. 사용자에게는, 
+마치 카메라가 여러분의 앱의 일부분인 것처럼 보입니다.</p>
+
+<p>시스템이 구성 요소를 시작하는 경우, 그 앱에 대한 프로세스를 시작하는 것이며(이미 
+실행 중이지 않은 경우), 해당 구성 요소에 필요한 클래스를 인스턴트화하는 것입니다. 예를 들어 여러분의 앱이 
+카메라 앱 내에서 사진을 캡처하는 액티비티를 시작한다고 하면, 해당 액티비티는 
+여러분 앱의 프로세스가 아니라 카메라 앱에 속한 프로세스에서 실행됩니다. 
+따라서 대부분의 다른 시스템에서와는 달리 Android 앱에는 단일한 진입 
+지점이 없습니다(예를 들어 {@code main()} 기능이 없습니다).</p>
+
+<p>시스템이 각 앱을 별도의 프로세스에서 실행하며 다른 앱에 대한 액세스를 제한하는 
+파일 권한을 가지고 실행하기 때문에 여러분의 앱은 또 다른 앱에서 곧바로 구성 요소를 
+활성화할 수는 없습니다. 하지만 Android 시스템은 할 수 있습니다. 그래서 또 다른 앱에 있는 
+구성 요소를 활성화하려면 시스템에 메시지를 전달하여 특정 구성 요소를 시작하고자 하는 <em>인텐트</em>를 
+밝혀야 합니다. 그러면 시스템이 대신 해당 구성 요소를 활성화해줍니다.</p>
+
+
+<h3 id="ActivatingComponents">구성 요소 활성화</h3>
+
+<p>네 가지 구성 요소 중 세 가지&mdash;액티비티, 서비스 및 
+브로드캐스트 수신기&mdash;는 일명 <em>인텐트</em>라고 하는 비동기식 메시지가 활성화합니다.
+인텐트는 각각의 구성 요소를 런타임에 서로 바인딩하며(다른 구성 요소로부터 작업을 요청하는 
+일종의 메신저로 생각하면 됩니다), 이는 구성 요소가 여러분의 앱에 속하든 아니든 
+무관합니다.</p>
+
+<p>인텐트는 {@link android.content.Intent} 객체로 생성되며, 이것이 
+특정 구성 요소를 활성화할지 아니면 구성 요소의 특정 <em>유형</em>을 활성화할지를 나타내는 메시지를 정의합니다. 인텐트는 
+각각 명시적이거나 암시적일 수 있습니다.</p>
+
+<p>액티비티와 서비스의 경우, 인텐트는 수행할 작업을 정의하며(예를 들어 무언가를 '보기" 또는 
+"보내기"), 작업을 수행할 데이터의 URI를 나타낼 수 있습니다(시작되는 구성 요소가 알아야 할 것은 
+이외에도 많이 있습니다). 예를 들어, 인텐트는 액티비티에 이미지를 표시하거나 웹 페이지를 열라는 요청을 
+전달할 수 있습니다. 어떤 경우에는 액티비티를 시작하여 
+결과를 받아오도록 할 수 있습니다. 이런 경우 이 액티비티는 
+{@link android.content.Intent}로 결과를 반환하기도 합니다(예를 들어, 사용자가 
+개인적인 연락처를 선택하도록 한 다음 그것을 반환하도록 하는 인텐트를 발행할 수 있습니다&mdash;반환 인텐트에 
+선택한 연락처를 가리키는 URI가 포함됩니다).</p>
+
+<p>브로드캐스트 수신기의 경우, 인텐트는 단순히 브로드캐스트될 알림을 
+정의할 뿐입니다(예를 들어, 기기 배터리 잔량이 낮다는 것을 나타내는 브로드캐스트에는 
+"배터리 부족"을 나타내는 알려진 작업 문자열만 포함됩니다).</p>
+
+<p>남은 하나의 구성 요소 유형, 즉 콘텐츠 제공자는 인텐트가 활성화하지 않습니다. 그보다는 
+{@link android.content.ContentResolver}로부터의 요청으로 지정되면 활성화됩니다. 콘텐츠 
+확인자는 콘텐츠 제공자와의 모든 직접적인 트랜잭션을 처리하여 
+제공자와의 트랜잭션을 수행하는 구성 요소가 그런 일을 하지 않아도 되게 하고, 그 대신 {@link
+android.content.ContentResolver} 객체에서 메서드를 호출합니다. 이렇게 되면 콘텐츠 제공자와 
+정보를 요청하는 구성 요소 사이에 추상화 계층이 하나 남습니다(보안 목적).</p>
+
+<p>각 유형의 구성 요소를 활성화하는 데에는 각기 별도의 메서드가 있습니다.</p>
+<ul>
+  <li>액티비티를 시작하려면(아니면 무언가 새로운 할 일을 주려면) 
+{@link android.content.Intent}를 {@link android.content.Context#startActivity
+startActivity()} 또는 {@link android.app.Activity#startActivityForResult startActivityForResult()}에 
+전달하면 됩니다(액티비티가 결과를 반환하기를 원하는 경우).</li>
+  <li>서비스를 시작하려면(또는 진행 중인 서비스에 새로운 지침을 주려면) 
+{@link android.content.Intent}를 {@link android.content.Context#startService
+startService()}에 전달하면 됩니다. 아니면 {@link android.content.Intent}를 
+{@link android.content.Context#bindService bindService()}에 전달하여 서비스에 바인딩할 수도 있습니다.</li>
+  <li>브로드캐스트를 시작하려면 {@link android.content.Intent}를 
+{@link android.content.Context#sendBroadcast(Intent) sendBroadcast()}, {@link
+android.content.Context#sendOrderedBroadcast(Intent, String) sendOrderedBroadcast()} 또는 {@link
+android.content.Context#sendStickyBroadcast sendStickyBroadcast()}와 같은 메서드에 전달하면 됩니다.</li>
+  <li>콘텐츠 제공자에 쿼리를 수행하려면 {@link android.content.ContentResolver}에서 {@link
+android.content.ContentProvider#query query()}를 호출하면 됩니다.</li>
+</ul>
+
+<p>인텐트 사용에 관한 자세한 정보는 <a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 
+인텐트 필터</a>문서를 참조하십시오. 특정 구성 요소를 활성화하는 데 관한 자세한 정보 또한 다음 문서에 
+제공되어 있습니다. <a href="{@docRoot}guide/components/activities.html">액티비티</a>, <a href="{@docRoot}guide/components/services.html">서비스</a>, {@link
+android.content.BroadcastReceiver} 및 <a href="{@docRoot}guide/topics/providers/content-providers.html">콘텐츠 제공자</a>.</p>
+
+
+<h2 id="Manifest">매니페스트 파일</h2>
+
+<p>Android 시스템이 앱 구성 요소를 시작하려면 시스템은 우선 해당 구성 요소가 
+존재하는지 알아야 합니다. 그러기 위해 앱의 {@code AndroidManifest.xml} 파일을 읽습니다(즉 "매니페스트"
+파일). 앱은 이 파일 안에 모든 구성 요소를 선언해야 하며, 이 파일은 앱 프로젝트 디렉터리의 루트에 
+있어야 합니다.</p>
+
+<p>매니페스트는 앱의 구성 요소를 선언하는 것 이외에도 수많은 역할을 합니다.
+예를 들면 다음과 같습니다.</p>
+<ul>
+  <li>앱이 요구하는 모든 사용자 권한 식별(예: 인터넷 액세스 또는 사용자의 연락처로의 
+읽기 액세스)</li>
+  <li>앱이 어느 API를 사용하는지를 근거로 하여 앱에서 요구하는 최소 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API 레벨</a>
+선언</li>
+  <li>앱에서 사용하거나 필요로 하는 하드웨어 및 소프트웨어 기능 선언(예: 카메라, 
+블루투스 서비스 또는 멀티터치 화면 등)</li>
+  <li>앱이 링크되어야 하는 API 라이브러리(Android 프레임워크 
+API 제외)(예: <a href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps
+라이브러리</a>)</li>
+  <li>그 외 기타 등등</li>
+</ul>
+
+
+<h3 id="DeclaringComponents">구성 요소 선언</h3>
+
+<p>매니페스트의 주요 작업은 시스템에 앱의 구성 요소에 대해 알리는 것입니다. 예를 들어 
+매니페스트 파일은 액티비티를 다음과 같이 선언할 수 있습니다. </p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;manifest ... &gt;
+    &lt;application android:icon="@drawable/app_icon.png" ... &gt;
+        &lt;activity android:name="com.example.project.ExampleActivity"
+                  android:label="@string/example_label" ... &gt;
+        &lt;/activity&gt;
+        ...
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p><code><a
+href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+요소에서 {@code android:icon} 속성은 앱을 식별하는 아이콘에 대한 리소스를 
+가리킵니다.</p>
+
+<p><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 요소에서는, 
+{@code android:name} 속성이 {@link
+android.app.Activity} 하위 클래스의 완전히 정규화된 클래스 이름을 나타내며 {@code android:label} 속성은 액티비티의 
+사용자에게 표시되는 레이블로 사용할 문자열을 나타냅니다.</p>
+
+<p>모든 앱 구성 요소를 이렇게 선언해야 합니다.</p>
+<ul>
+  <li>액티비티는 
+<code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 요소</li>
+  <li>서비스는 
+<code><a
+href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code> 요소</li>
+  <li>브로드캐스트 수신기는 
+<code><a
+href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code> 요소</li>
+  <li>콘텐츠 제공자는 
+<code><a
+href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> 요소</li>
+</ul>
+
+<p>액티비티, 서비스를 비롯하여 소스에는 포함시키지만 매니페스트에서는 선언하지 않는 
+콘텐츠 제공자는 시스템에 표시되지 않으며, 따라서 실행될 수 없습니다.  그러나 
+브로드캐스트
+ 수신기는 매니페스트에서 선언해도 되고 코드를 사용해(
+{@link android.content.BroadcastReceiver} 객체로) 동적으로 생성한 다음 시스템에 등록해도 됩니다. 이때 
+{@link android.content.Context#registerReceiver registerReceiver()}를 호출하는 방법을 씁니다.</p>
+
+<p>앱에 맞는 매니페스트 파일을 구성하는 방법에 대한 자세한 내용은 <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml 파일</a>을
+ 참조하십시오. </p>
+
+
+
+<h3 id="DeclaringComponentCapabilities">구성 요소 기능 선언</h3>
+
+<p>위에서 논한 바와 같이, <a href="#ActivatingComponents">활성화 상태의 구성 요소</a>에서는 
+{@link android.content.Intent}를 사용하여 액티비티, 서비스 및 브로드캐스트 수신기를 시작할 수 있습니다. 그렇게 하려면 
+대상 구성 요소를 인텐트 내에서 명시적으로 명명하면 됩니다(구성 요소 클래스 이름을 사용). 그러나, 
+인텐트의 진정한 힘은 <em>암시적 인텐트</em>의 개념에서 발휘됩니다. 암시적 인텐트는 
+그저 수행할 작업의 유형을 설명할 뿐이며(또한, 선택 사항으로, 해당 작업을 수행하고자 하는 
+데이터 위치도) 시스템에 기기에서 작업을 수행할 수 있는 구성 요소를 찾아 
+시작하도록 해줍니다. 인텐트가 설명한 작업을 수행할 수 있는 구성 요소가 여러 개인 경우, 
+어느 것을 사용할지 사용자가 선택합니다.</p>
+
+<p>시스템이 인텐트에 응답할 수 있는 구성 요소를 식별하는 방법은 수신한 인텐트를 
+ <i>인텐트 필터</i> 와 비교하는 것입니다. 이 인텐트 필터는 기기의 다른 여러 앱의 매니페스트 
+파일이 제공합니다.</p>
+
+<p>앱의 매니페스트에서 액티비티를 선언하는 경우, 선택 사항으로 
+해당 액티비티의 기능을 선언하는 인텐트 필터를 포함시켜서 다른 앱으로부터의 인텐트에 
+응답할 수 있도록 할 수 있습니다. 구성 요소에 대한 인텐트 필터를 선언하려면 
+<a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> 요소를 해당 구성 요소의 선언 요소 하위로 추가하면 됩니다.</p>
+
+<p>예를 들어, 새 이메일을 작성하는 데 쓰는 액티비티가 있는 이메일 앱을 구축했다고 가정합시다. 이때 "전송" 인텐트에 
+응답하는 인텐트 필터를 선언하려면(새 이메일을 전송하기 위해) 다음과 같이 하면 됩니다.</p>
+<pre>
+&lt;manifest ... >
+    ...
+    &lt;application ... &gt;
+        &lt;activity android:name="com.example.project.ComposeEmailActivity">
+            &lt;intent-filter>
+                &lt;action android:name="android.intent.action.SEND" />
+                &lt;data android:type="*/*" />
+                &lt;category android:name="android.intent.category.DEFAULT" />
+            &lt;/intent-filter>
+        &lt;/activity>
+    &lt;/application&gt;
+&lt;/manifest>
+</pre>
+
+<p>그런 다음, 다른 앱이 {@link
+android.content.Intent#ACTION_SEND} 작업을 가진 인텐트를 생성하여 그것을 {@link android.app.Activity#startActivity
+startActivity()}로 전달하면 시스템이 여러분의 액티비티를 시작하여 사용자가 이메일을 임시 보관하고 전송할 수 
+있습니다.</p>
+
+<p>인텐트 필터 생성에 관한 자세한 내용은 <a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a> 문서를 참조하십시오.
+</p>
+
+
+
+<h3 id="DeclaringRequirements">앱 요구 사항 선언</h3>
+
+<p>Android로 구동되는 기기는 수없이 많지만 모두 똑같은 특징을 갖고 같은 
+기능을 제공하는 것은 아닙니다. 앱이 필요로 하는 기능이 부족한 기기에 앱을 설치하게 되는 불상사를 방지하려면, 
+앱이 지원하는 기기 유형에 대한 프로필을 명확하게 정의하는 것이 중요합니다. 
+그러려면 매니페스트 파일에 기기와 소프트웨어 요구 사항을 
+선언하면 됩니다. 이와 같은 선언은 대부분 정보성일 뿐이며 시스템은 이를 읽지 않는 것이 일반적이지만, 
+Google Play와 같은 외부 서비스는 사용자가 본인의 기기에서 앱을 검색할 때 필터링을 제공하기 위해 
+이와 같은 선언도 읽습니다.</p>
+
+<p>예를 들어, 앱에 카메라가 필요하고 Android 2.1부터 도입된 API를 사용하는 경우(<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API 레벨</a> 7) 
+이과 같은 내용을 매니페스트 파일에 요구 사항으로 선언하려면 다음과 같이 합니다.</p> 
+
+<pre>
+&lt;manifest ... >
+    &lt;uses-feature android:name="android.hardware.camera.any"
+                  android:required="true" />
+    &lt;uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" />
+    ...
+&lt;/manifest>
+</pre>
+
+<p>이제 카메라가 <em>없고</em> Android 버전이 2.1 <em>이하</em>인 기기는 
+Google Play에서 여러분의 앱을 설치할 수 없습니다.</p>
+
+<p>그러나, 앱이 카메라를 사용하기는 하지만 꼭 
+<em>필요한</em> 것은 아니라고 선언할 수도 있습니다. 이 경우에는, 앱이 <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#required">{@code required}</a>
+ 속성을 {@code "false"}에 설정하고 런타임을 확인하여 
+해당 기기에 카메라가 있는지, 경우에 따라 모든 카메라 기능을 비활성화할 수 있는지 알아봅니다.</p>
+
+<p>여러 가지 기기와 앱의 호환성을 관리하는 방법에 대한 자세한 정보는 
+<a href="{@docRoot}guide/practices/compatibility.html">기기 호환성</a>
+ 문서를 참조하십시오.</p>
+
+
+
+<h2 id="Resources">앱 리소스</h2>
+
+<p>Android 앱을 이루는 것은 코드만이 아닙니다. 소스 코드와는 별개인 여러 리소스가 필요합니다.
+예를 들어 이미지, 오디오 파일과 앱을 시각적으로 표현하는 것과 관련된 모든 것들이 있습니다. 
+예컨대 애니메이션, 메뉴, 스타일, 색상과 액티비티 사용자 인터페이스의 레이아웃을 XML 파일로 
+정의해야 합니다. 앱 리소스를 사용하면 앱의 다양한 특성을 
+쉽게 업데이트할 수 있으며 코드를 수정하지 않아도 되고 일련의 대체 리소스를 
+제공함으로써 다양한 기기 구성에 맞게 앱을 
+최적화할 수도 있습니다(예: 여러 가지 언어 및 화면 크기).</p>
+
+<p>Android 프로젝트에 포함시키는 리소스마다 SDK 빌드 도구가 고유한 
+정수 ID를 정의하므로, 이를 사용하여 앱 코드에서의 리소스나 XML로 정의된 
+다른 리소스에서 참조할 수 있습니다. 예를 들어 앱에 {@code
+logo.png}라는 이름의 이미지 파일이 들어 있다고 하면({@code res/drawable/} 디렉터리에 저장됨) SDK 도구가 
+{@code R.drawable.logo}라는 리소스 ID를 생성합니다. 이것을 사용하여 이미지를 참조하고 사용자 인터페이스에 
+삽입할 수 있습니다.</p>
+
+<p>소스 코드와는 별개로 리소스를 제공하는 것의 가장 중요한 측면 중 하나는 
+여러 가지 기기 구성에 맞게 대체 리소스를 제공할 능력을 갖추게 
+됩니다. 예를 들어 UI 문자열을 XML로 정의하면 이러한 문자열을 다른 언어로 변환한 뒤 
+그러한 문자열을 별개의 파일에 저장할 수 있습니다. 그런 다음, 리소스 디렉터리 이름에 추가한 언어 <em>한정자</em>
+(예를 들어 프랑스어 문자열 값의 경우 {@code res/values-fr/}) 및 
+사용자의 언어 설정을 근거로 하여 Android 시스템이 적절한 언어 문자열을 UI에 
+적용하는 것입니다.</p>
+
+<p>Android는 대체 리소스에 대해 다양한 <em>한정자</em>를 지원합니다. 한정자란
+ 리소스 디렉터리의 이름에 포함시키는 짧은 문자열로, 이를 사용해 해당 리소스를 사용할 기기 구성을 
+정의합니다. 또 다른 예를 들자면, 
+기기의 화면 방향과 크기에 따라 액티비티에 여러 가지 레이아웃을 생성해야 할 때가 
+많습니다. 예를 들어 기기 화면이 세로 
+방향(키가 큼)인 경우, 버튼이 세로 방향으로 되어 있는 레이아웃을 사용하는 것이 좋지만 화면이 
+가로 방향(폭이 넓음)인 경우, 버튼이 가로 방향으로 정렬되어야 합니다. 방향에 따라 레이아웃을 변경하려면, 
+서로 다른 두 가지 레이아웃을 정의하여 적절한 한정자를 각각의 레이아웃의 디렉터리 이름에 
+적용하면 됩니다. 그러면 시스템이 현재 기기 방향에 따라 적절한 레이아웃을 
+자동으로 적용합니다.</p>
+
+<p>애플리케이션에 포함할 수 있는 여러 가지 종류의 리소스와, 각기 다른 기기 구성에 따라 
+대체 리소스를 생성하는 방법에 대한 자세한 내용은 <a href="{@docRoot}guide/topics/resources/providing-resources.html">리소스 제공</a>을 읽어보십시오.</p>
+
+
+
+<div class="next-docs">
+<div class="col-6">
+  <h2 class="norule">계속 읽기:</h2>
+  <dl>
+    <dt><a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a>
+    </dt>
+    <dd>{@link android.content.Intent} API를 사용하여 
+앱 구성 요소(예: 액티비티 및 서비스 등)를 활성화하는 방법, 앱 구성 요소를 다른 여러 앱이 사용할 수 있도록 하는 방법 
+등에 관한 정보입니다.</dd>
+    <dt><a href="{@docRoot}guide/components/activities.html">액티비티</a></dt>
+    <dd>{@link android.app.Activity} 클래스의 인스턴스를 생성하는 방법에 관한 정보로, 
+애플리케이션에 사용자 인터페이스가 있는 독특한 화면을 제공합니다.</dd>
+    <dt><a href="{@docRoot}guide/topics/resources/providing-resources.html">리소스 제공</a></dt>
+    <dd>Android 앱이 앱 코드와는 별개의 앱 리소스에 대해 구조화된 방식에 관한 정보로, 
+특정 기기 구성에 맞게 대체 리소스를 제공하는 방법도 포함되어 
+있습니다.
+    </dd>
+  </dl>
+</div>
+<div class="col-6">
+  <h2 class="norule">혹시 다음과 같은 내용에도 흥미가 있으신가요?</h2>
+  <dl>
+    <dt><a href="{@docRoot}guide/practices/compatibility.html">기기 호환성</a></dt>
+    <dd>여러 가지 유형의 기기에서 Android의 작동 방식과 앱을 각 기기에 맞춰 최적화하는 방법 
+또는 여러 가지 기기에 대해 앱의 가용성을 제한하는 방법 등에 관한 
+정보입니다.</dd>
+    <dt><a href="{@docRoot}guide/topics/security/permissions.html">시스템 권한</a></dt>
+    <dd>Android가 특정 API에 대한 앱의 액세스를 제한하기 위해 권한 시스템을 
+사용하는 방법으로, 그러한 API를 사용하려면 앱에 대해 사용자의 승인이 필요합니다.</dd>
+  </dl>
+</div>
+</div>
+
diff --git a/docs/html-intl/intl/ko/guide/components/index.jd b/docs/html-intl/intl/ko/guide/components/index.jd
new file mode 100644
index 0000000..3662632
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/components/index.jd
@@ -0,0 +1,57 @@
+page.title=앱 구성 요소
+page.landing=true
+page.landing.intro=Android의 애플리케이션 프레임워크는 일련의 재사용 가능한 구성 요소를 사용하여 풍성하고 혁신적인 앱을 생성할 수 있습니다. 이 섹션에서는 앱의 구성 단위를 정의 내리는 구성 요소를 구축하는 방법과 인텐트를 사용하여 이와 같은 구성 요소를 연결시키는 법을 설명합니다. 
+page.metaDescription=Android의 애플리케이션 프레임워크는 일련의 재사용 가능한 구성 요소를 사용하여 풍성하고 혁신적인 앱을 생성할 수 있습니다. 이 섹션에서는 앱의 구성 단위를 정의 내리는 구성 요소를 구축하는 방법과 인텐트를 사용하여 이와 같은 구성 요소를 연결시키는 법을 설명합니다. 
+page.landing.image=images/develop/app_components.png
+page.image=images/develop/app_components.png
+
+@jd:body
+
+<div class="landing-docs">
+
+  <div class="col-6">
+    <h3>블로그 문서</h3>
+    
+    <a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
+      <h4>DialogFragment 사용하기</h4>
+      <p>이 포스트에서는 v4 지원 라이브러리와 함께 DialogFragment를 사용하여(Honeycomb 이전 기기에서 이전 버전과의 호환성을 위해) 간단한 편집 대화를 표시하고 인터페이스를 사용하여 호출 중인 액티비티에 결과를 반환하는 법을 보여드립니다.</p>
+    </a>
+
+    <a href="http://android-developers.blogspot.com/2011/03/fragments-for-all.html">
+      <h4>모두를 위한 프래그먼트</h4>
+      <p>Google에서는 오늘 같은 프래그먼트 API를 노출하는 정적 라이브러리를 출시했습니다(새로운 LoaderManager와 몇 가지 다른 클래스도 포함). 이 덕분에 Android 1.6 이후 버전과 호환되는 애플리케이션이 프래그먼트를 사용하여 태블릿과 호환되는 사용자 인터페이스를 생성할 수 있게 되었습니다. </p>
+    </a>
+    
+    <a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
+      <h4>성능을 위한 다중 스레딩</h4>
+      <p>반응형 애플리케이션을 생성할 때에는 주요 UI 스레드가 최소한의 작업만 
+하도록 하는 것이 좋습니다. 애플리케이션을 중단시킬 수 있는, 
+길어질 수 있는 작업은 모두 다른 스레드에서 처리해야 합니다.</p>
+    </a>
+  </div>
+
+  <div class="col-6">
+    <h3>교육</h3>
+    
+    <a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
+      <h4>액티비티 수명 주기 관리하기</h4>
+      <p>이 클래스에서는 각각의 액티비티 
+인스턴스가 수신하는 중요한 수명 주기 콜백 메서드를 설명합니다. 또한 이러한 콜백 메서드를 사용하여 액티비티가 
+사용자가 원하는 작업을 하고, 액티비티가 필요로 하지 않을 때 시스템 리소스 사용을 방지하는 방법에 대해서도 설명합니다.</p>
+    </a>
+
+    <a href="http://developer.android.com/training/basics/fragments/index.html">
+      <h4>프래그먼트로 동적 UI 구축하기</h4>
+      <p>이 클래스에서는 Android 1.6만큼 오래된 버전을 실행하는 기기도 
+계속 지원하면서 프래그먼트로 동적 사용자 경험을 생성하고, 기기의 화면 크기에 따라 앱의 사용자 환경을 
+최적화할 수 있는 방법을 보여줍니다.</p>
+    </a>
+
+    <a href="http://developer.android.com/training/sharing/index.html">
+      <h4>콘텐츠 공유하기</h4>
+      <p>이 클래스는 인텐트 API와 ActionProvider 객체를 사용하여 여러 애플리케이션 사이에서 
+콘텐츠를 전송하고 수신하는 몇 가지 보편적인 방법을 다룹니다.</p>
+    </a>
+  </div>
+
+</div>
diff --git a/docs/html-intl/intl/ko/guide/components/intents-filters.jd b/docs/html-intl/intl/ko/guide/components/intents-filters.jd
new file mode 100644
index 0000000..1488a1d
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/components/intents-filters.jd
@@ -0,0 +1,899 @@
+page.title=인텐트 및 인텐트 필터
+page.tags="IntentFilter"
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>이 문서의 내용</h2>
+<ol>
+  <li><a href="#Types">인텐트 유형</a></li>
+  <li><a href="#Building">인텐트 구축</a>
+    <ol>
+      <li><a href="#ExampleExplicit">명시적 인텐트 예시</a></li>
+      <li><a href="#ExampleSend">암시적 인텐트 예시</a></li>
+      <li><a href="#ForceChooser">앱 선택기 강제 적용하기</a></li>
+    </ol>
+  </li>
+  <li><a href="#Receiving">암시적 인텐트 수신하기</a>
+    <ol>
+      <li><a href="#ExampleFilters">필터 예시</a></li>
+    </ol>
+  </li>
+  <li><a href="#PendingIntent">보류 인텐트 사용하기</a></li>
+  <li><a href="#Resolution">인텐트 확인</a>
+    <ol>
+      <li><a href="#ActionTest">작업 테스트</a></li>
+      <li><a href="#CategoryTest">카테고리 테스트</a></li>
+      <li><a href="#DataTest">데이터 테스트</a></li>
+      <li><a href="#imatch">인텐트 일치</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>참고 항목</h2>
+<ol>
+<li><a href="{@docRoot}training/basics/intents/index.html">다른 앱과 상호 작용하기</a></li>
+<li><a href="{@docRoot}training/sharing/index.html">콘텐츠 공유하기</a></li>
+</ol>
+
+</div>
+</div>
+
+
+
+
+<p>{@link android.content.Intent}는 일종의 메시지 객체입니다. 이것을 사용해 다른
+<a href="{@docRoot}guide/components/fundamentals.html#Components">앱 구성 요소</a>로부터 작업을 요청할 수 있습니다.
+인텐트가 여러 구성 요소 사이의 통신을 용이하게 하는 데에는 몇 가지 방법이 있지만,
+기본적인 사용 사례는 다음과 같은 세 가지입니다.</p>
+
+<ul>
+<li><b>액티비티 시작하기:</b>
+<p>{@link android.app.Activity}는 앱 안의 화면 하나를 나타냅니다.
+{@link android.app.Activity}의 새 인스턴스를 시작하려면 {@link android.content.Intent}를
+{@link android.content.Context#startActivity startActivity()}로 전달하면 됩니다. {@link android.content.Intent}는
+시작할 액티비티를 설명하고 모든 필수 데이터를 담고 있습니다.</p>
+
+<p>액티비티가 완료되었을 때 결과를 수신하려면,
+{@link android.app.Activity#startActivityForResult
+startActivityForResult()}를 호출합니다. 액티비티는 해당 결과를 액티비티의 {@link
+android.app.Activity#onActivityResult onActivityResult()} 콜백에서 별도의
+{@link android.content.Intent} 객체로 수신합니다.
+자세한 정보는 <a href="{@docRoot}guide/components/activities.html">액티비티</a> 가이드를 참조하십시오.</p></li>
+
+<li><b>서비스 시작하기:</b>
+<p>{@link android.app.Service}는 사용자 인터페이스 없이
+배경에서 작업을 수행하는 구성 요소입니다. 서비스를 시작하여 일회성 작업을 수행하도록 하려면(예: 파일 다운로드)
+{@link android.content.Intent}를
+{@link android.content.Context#startService startService()}에 전달하면 됩니다. {@link android.content.Intent}는
+ 시작할 서비스를 설명하고 모든 필수 데이터를 담고 있습니다.</p>
+
+<p>서비스가 클라이언트-서버 인터페이스로 설계된 경우, 다른 구성 요소로부터
+서비스에 바인딩하려면 {@link android.content.Intent}를 {@link
+android.content.Context#bindService bindService()}에 전달하면 됩니다.</code> 자세한 정보는 <a href="{@docRoot}guide/components/services.html">서비스</a> 가이드를 참조하십시오.</p></li>
+
+<li><b>브로드캐스트 전달하기:</b>
+<p>브로드캐스트는 모든 앱이 수신할 수 있는 메시지입니다. 시스템은 여러 시스템 이벤트에 대해 다양한
+브로드캐스트를 전달합니다. 예를 들어 시스템이 부팅될 때 또는 기기가 변경되기 시작할 때 등이 해당됩니다.
+다른 여러 앱에 브로드캐스트를 전달하려면 {@link android.content.Intent}를
+{@link android.content.Context#sendBroadcast(Intent) sendBroadcast()},
+{@link android.content.Context#sendOrderedBroadcast(Intent, String)
+sendOrderedBroadcast()} 또는 {@link
+android.content.Context#sendStickyBroadcast sendStickyBroadcast()}에 전달하면 됩니다.</p>
+</li>
+</ul>
+
+
+
+
+<h2 id="Types">인텐트 유형</h2>
+
+<p>인텐트에는 두 가지 유형이 있습니다.</p>
+
+<ul>
+<li><b>명시적 인텐트</b>는 시작할 구성 요소를 이름으로 지정합니다(완전히
+정규화된 클래스 이름). 명시적 인텐트는 일반적으로 본인의 앱 안에서 구성 요소를 시작할 때 씁니다.
+시작하고자 하는 액티비티 또는 서비스의 클래스 이름을 알고 있기 때문입니다. 예를 들어,
+사용자 작업에 응답하여 새 액티비티를 시작하거나 배경에서 파일을 다운로드하기 위해
+서비스를 시작하는 것 등이 여기에 해당됩니다.</li>
+
+<li><b>암시적 인텐트</b>는 특정 구성 요소의 이름을 대지 않지만, 그 대신 수행할 일반적일 작업을
+선언하여 또 다른 앱의 구성 요소가 이를 처리할 수 있도록 해줍니다. 예를 들어, 사용자에게 지도에 있는 한 위치를
+표시해주고자 하는 경우, 암시적 인텐트를 사용하여 다른, 해당 기능을 갖춘 앱이
+지정된 위치를 지도에 표시하도록 요청할 수 있습니다.</li>
+</ul>
+
+<p>명시적 인텐트를 생성하여 액티비티나 서비스를 시작하도록 하면, 시스템이 즉시
+{@link android.content.Intent} 객체에서 지정된 앱 구성 요소를 시작합니다.</p>
+
+<div class="figure" style="width:446px">
+<img src="{@docRoot}images/components/intent-filters@2x.png" width="446" alt="" />
+<p class="img-caption"><strong>그림 1.</strong> 암시적 인텐트가 시스템을 통해 전달되어
+다른 액티비티를 시작하게 하는 방법을 그림으로 나타낸 것입니다. <b>[1]</b> <em>액티비티 A</em>가 작업 설명이 들어 있는
+{@link android.content.Intent}를 생성하여 이를 {@link
+android.content.Context#startActivity startActivity()}에 전달합니다. <b>[2]</b> Android 시스템이
+해당 인텐트와 일치하는 인텐트 필터를 찾아 모든 앱을 검색합니다. 일치하는 것을 찾으면, <b>[3]</b> 시스템이
+일치하는 액티비티(<em>액티비티 B</em>)를 시작하기 위해 그 액티비티의 {@link
+android.app.Activity#onCreate onCreate()} 메서드를 호출하여 이를 {@link android.content.Intent}에 전달합니다.
+</p>
+</div>
+
+<p>암시적 인텐트를 생성하면 Android 시스템이 시작시킬 적절한 구성 요소를 찾습니다.
+이때 인텐트의 내용을 기기에 있는 다른 여러 앱의 <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">매니페스트 파일</a>에서 선언된 <em>인텐트 필터</em>와 비교하는 방법을
+씁니다. 해당 인텐트와 일치하는 인텐트 필터가 있으면 시스템이 해당 구성 요소를 시작하고 이에
+{@link android.content.Intent} 객체를 전달합니다. 호환되는 인텐트 필터가 여러 개인 경우, 시스템은
+대화를 표시하여 사용자가 어느 앱을 사용할지 직접 선택할 수 있게 합니다.</p>
+
+<p>인텐트 필터란 앱의 매니페스트 파일에 들어 있는 표현으로,
+해당 구성 요소가 수신하고자 하는 인텐트의 유형을
+나타낸 것입니다. 예를 들어 액티비티에 대한 인텐트 필터를 선언하면
+다른 여러 앱이 특정한 종류의 인텐트를 가지고 여러분의 액티비티를 직접 시작할 수 있습니다.
+이와 마찬가지로, 액티비티에 대한 인텐트 필터를 전혀 선언하지 <em>않으면</em> 명시적 인텐트로만
+시작할 수 있습니다.</p>
+
+<p class="caution"><strong>주의:</strong> 앱의 보안을 보장하려면
+{@link android.app.Service}를 시작할 때에는 항상 명시적 인텐트만 사용하고 서비스에 대한 인텐트 필터는
+선언하지 마십시오. 암시적 인텐트를 사용하여 서비스를 시작하면
+보안 위험을 초래합니다. 인텐트에 어느 서비스가 응답할 것인지 확신할 수 없고, 사용자가
+어느 서비스가 시작되는지 볼 수 없기 때문입니다. Android 5.0(API 레벨 21)부터 시스템은 개발자가 암시적 인텐트로
+{@link android.content.Context#bindService bindService()}를
+호출하면 예외를 발생시킵니다.</p>
+
+
+
+
+
+<h2 id="Building">인텐트 구축</h2>
+
+<p>{@link android.content.Intent} 객체에는 Android 시스템이
+어느 구성 요소를 시작할지 판별하는 데 사용하는 정보가 담겨 있습니다(예를 들어 정확한 구성 요소 이름 또는 인텐트를
+수신해야 하는 구성 요소 카테고리 등). 또한 수신자 구성 요소가 작업을 적절히 수행하기 위해
+사용할 정보(예: 수행할 작업 및 조치를 취할 데이터 위치 등)도 이 안에 담겨 있습니다.</p>
+
+
+<p>{@link android.content.Intent} 내에 들어 있는 기본 정보는 다음과 같습니다.</p>
+
+<dl>
+
+<dt><b>구성 요소 이름</b></dt>
+<dd>시작할 구성 요소의 이름입니다.
+
+<p>이것은 선택 항목이지만, 이것이 바로 인텐트를
+<b>명시적</b>인 것으로 만들어주는 중요한 정보입니다. 다시 말해 이 인텐트는 구성 요소 이름이 정의한 앱 구성 요소에만
+전달되어야 한다는 뜻입니다. 구성 요소 이름이 없으면 해당 인텐트는 <b>암시적</b>이며,
+인텐트를 수신해야 하는 구성 요소는 다른 인텐트 정보를 기반으로 시스템이
+결정합니다(예를 들어 작업, 데이터 및 카테고리 &mdash; 아래 설명 참조). 따라서 앱에서 특정한 구성 요소를
+시작해야 하는 경우에는, 구성 요소 이름을 지정해야 합니다.</p>
+
+<p class="note"><strong>참고:</strong> {@link android.app.Service}를 시작하는 경우,
+<strong>항상 구성 요소 이름을 지정</strong>해야 합니다. 그렇지 않으면 인텐트에 어느 서비스가 응답할지 확신할 수 없고,
+사용자도 어느 서비스가 시작되는지 볼 수 없게 됩니다.</p>
+
+<p>{@link android.content.Intent}의 필드는
+{@link android.content.ComponentName} 객체로, 이것을 지정하려면 대상 구성 요소의 완전히
+정규화된 클래스 이름(앱의 패키지 이름 포함)을 사용해야 합니다. 예를 들면
+{@code com.example.ExampleActivity}를 쓰십시오. 구성 요소 이름을 설정하려면 {@link
+android.content.Intent#setComponent setComponent()}, {@link android.content.Intent#setClass
+setClass()}, {@link android.content.Intent#setClassName(String, String) setClassName()}을 사용하거나, 아니면
+{@link android.content.Intent} 생성자를 사용하면 됩니다.</p>
+
+</dd>
+
+<p><dt><b>작업</b></dt>
+<dd>수행할 일반적인 작업을 나타내는 문자열입니다(예: <em>보기</em> 또는 <em>선택</em>).
+
+<p>브로드캐스트 인텐트의 경우, 이것이 발생한 작업이자 보고되는 것이기도 합니다.
+인텐트의 나머지 부분이 어떻게 구조화될지는 대부분 작업이 결정합니다. 특히,
+데이터 안에 들어 있는 것과 추가 항목 등이 해당됩니다.
+
+<p>본인의 앱 내에 있는 인텐트가 사용할 작업(또는 다른 앱이 사용하여
+본인의 앱 안의 구성 요소를 호출하도록 함)을 직접 지정할 수도 있지만, 보통은
+{@link android.content.Intent} 클래스나 다른 프레임워크 클래스가 정의한 작업 상수를 써야 합니다. 다음은
+액티비티를 시작하는 데 쓰이는 보편적인 작업입니다.</p>
+
+<dl>
+<dt>{@link android.content.Intent#ACTION_VIEW}</dt>
+   <dd>이 작업은 액티비티가 사용자에게 표시할 수 있는 어떤 정보를 가지고 있을 때 {@link
+   android.content.Context#startActivity startActivity()}가 있는 인텐트에서
+사용합니다. 예를 들어 갤러리 앱에서 볼 사진이나 지도 앱에서 볼 주소 등이
+이에 해당됩니다.</dd>
+
+<dt>{@link android.content.Intent#ACTION_SEND}</dt>
+   <dd>이것은 다른 이름으로 "공유" 인텐트라고도 합니다. 이것은 사용자가 다른 앱을 통해 공유할 수 있는 데이터를 가지고 있을 때 {@link
+   android.content.Context#startActivity startActivity()}가 있는 인텐트에서 사용합니다. 예를 들어
+이메일 앱 또는 소셜 공유 앱 등이 이에 해당됩니다.</dd>
+</dl>
+
+<p>일반적인 작업을 정의하는 상수에 대한 자세한 내용은 {@link android.content.Intent} 클래스
+참조를 확인하십시오.  다른 작업은 Android 프레임워크의 다른 곳에서 정의됩니다. 예를 들어
+시스템의 설정 앱에서 특정 화면을 여는 작업의 경우 {@link android.provider.Settings}에서
+정의됩니다.</p>
+
+<p>인텐트에 대한 작업을 지정하려면 {@link android.content.Intent#setAction
+setAction()} 또는 {@link android.content.Intent} 생성자를 사용하면 됩니다.</p>
+
+<p>나름의 작업을 직접 정의하는 경우, 앱의 패키지 이름을 접두사로 포함시켜야
+합니다. 예:</p>
+<pre>static final String ACTION_TIMETRAVEL = "com.example.action.TIMETRAVEL";</pre>
+</dd>
+
+<dt><b>데이터</b></dt>
+<dd>작업을 수행할 데이터 및/또는 해당 데이터의 MIME 유형을 참조하는 URI({@link android.net.Uri}
+객체)입니다. 제공된 데이터의 유형을 나타내는 것은 일반적으로 인텐트의 작업입니다. 예를 들어
+인텐트가 {@link android.content.Intent#ACTION_EDIT}인 경우, 데이터에
+편집할 문서의 URI가 들어있어야 합니다.
+
+<p>인텐트를 생성할 때에는
+URI외에도 데이터의 유형(MIME 유형)을 지정하는 것이 중요한 경우가 많습니다.
+예를 들어, 이미지를 표시할 수 있는 액티비티는 아마도 오디오 파일을 재생할 수 없을 가능성이
+큽니다. 두 가지 기능의 URI 형식은 비슷할지라도 말입니다.
+그러므로 데이터의 MIME 유형을 지정해두면 Android 시스템이
+인텐트를 수신할 최상의 구성 요소를 찾는 데 도움이 됩니다.
+하지만, MIME 유형은 URI에서 추론되는 경우도 종종 있습니다. 특히 데이터가
+{@code content:} URI인 경우 더욱 그러한데, 이는 데이터가 기기에 위치하고 있으며
+{@link android.content.ContentProvider}가 제어한다는 것을 나타내어 해당 데이터 MIME 유형이 시스템에 표시되도록 합니다.</p>
+
+<p>데이터 URI만 설정하려면 {@link android.content.Intent#setData setData()}를 호출하십시오.
+MIME 유형만 설정하려면, {@link android.content.Intent#setType setType()}을 호출합니다. 필요한 경우,
+두 가지를 모두 명시적으로 설정해도 됩니다. 이때는 {@link
+android.content.Intent#setDataAndType setDataAndType()}을 사용하십시오.</p>
+
+<p class="caution"><strong>주의:</strong> URI와 MIME 유형을 둘 다 설정하고자 하는 경우, {@link android.content.Intent#setData setData()} 및
+{@link android.content.Intent#setType setType()}을 호출하면
+<strong>안 됩니다</strong>. 이 둘은 서로의 값을 무효화하기 때문입니다. URI와 MIME 유형을 둘 모두 설정하려면
+항상 {@link android.content.Intent#setDataAndType setDataAndType()}을
+사용하십시오.</p>
+</dd>
+
+<p><dt><b>카테고리</b></dt>
+<dd>인텐트를 처리해야 하는 구성 요소의 종류에 관한 추가 정보를 담은
+문자열입니다.  인텐트 안에는 카테고리 설명이
+얼마든지 들어있을 수 있지만, 대부분의 인텐트에는 카테고리가 없어도 됩니다.
+다음은 몇 가지 보편적인 카테고리입니다.
+
+<dl>
+<dt>{@link android.content.Intent#CATEGORY_BROWSABLE}</dt>
+  <dd>대상 액티비티가 스스로 웹 브라우저가 자신을 시작해도 되도록 허용하여
+링크로 참조된 데이터를 표시하게 합니다. 예컨대 이미지나 이메일 메시지 등이 이에 해당합니다.
+  </dd>
+<dt>{@link android.content.Intent#CATEGORY_LAUNCHER}</dt>
+  <dd>이 액티비티가 작업의 최초 액티비티이며, 이것이 시스템의 애플리케이션 시작 관리자에
+목록으로 게재되어 있습니다.
+  </dd>
+</dl>
+
+<p>카테고리의 전체 목록을 보려면 {@link android.content.Intent}
+클래스 설명을 참조하십시오.</p>
+
+<p>카테고리를 지정하려면 {@link android.content.Intent#addCategory addCategory()}를 사용하면 됩니다.</p>
+</dd>
+</dl>
+
+
+<p>위에 목록으로 나열된 이러한 특성(구성 요소 이름, 작업, 데이터 및 카테고리)은 인텐트를 정의하는 특성을
+나타냅니다. Android 시스템은 이와 같은 속성을 읽어
+어느 앱 구성 요소를 시작해야 할지 확인할 수 있습니다.</p>
+
+<p>그러나 인텐트는 앱 구성 요소로 확인되는 방법에 영향을 미치지 않는
+추가 정보도 담고 있을 수 있습니다. 인텐트가 제공할 수 있는 기타 정보는 다음과 같습니다.</p>
+
+<dl>
+<dt><b>추가 사항</b></dt>
+<dd>요청한 작업을 수행하기 위해 필요한 추가 정보를 담고 있는 키-값 쌍입니다.
+몇몇 작업이 특정한 종류의 데이터 URI를 사용하는 것과 마찬가지로, 몇몇 작업은 특정한 추가 사항도 사용합니다.
+
+<p>추가 데이터를 추가하려면 여러 가지 {@link android.content.Intent#putExtra putExtra()} 메서드를
+사용할 수 있습니다. 이들은 각기 두 개의 매개변수를 허용합니다. 즉 키 이름과 값입니다.
+모든 추가 데이터를 가진 {@link android.os.Bundle} 객체를 생성할 수도 있고, 그런 다음
+{@link android.os.Bundle}을 {@link android.content.Intent}에 {@link
+android.content.Intent#putExtras putExtras()}로 삽입해도 됩니다.</p>
+
+<p>예를 들어
+{@link android.content.Intent#ACTION_SEND}로 이메일을 전송할 인텐트를 생성하는 경우 "받는 사람" 수신자를 지정할 때
+{@link android.content.Intent#EXTRA_EMAIL} 키를 사용한 다음 "제목"은
+{@link android.content.Intent#EXTRA_SUBJECT} 키로 지정하면 됩니다.</p>
+
+<p>{@link android.content.Intent} 클래스는 표준화된 데이터 유형에 대해 수많은 {@code EXTRA_*} 상수를
+지정합니다. 나름의 추가 키를 선언해야 하는 경우(본인의 앱이 수신할
+인텐트에 대하여), 앱의 패키지 이름을 접두사로 포함시커야
+합니다. 예:</p>
+<pre>static final String EXTRA_GIGAWATTS = "com.example.EXTRA_GIGAWATTS";</pre>
+</dd>
+
+<dt><b>플래그</b></dt>
+<dd>{@link android.content.Intent} 클래스에서 정의된 플래그로, 인텐트에 대한 메타데이터와 같은 기능을
+합니다. 이런 플래그는 Android 시스템에 액티비티를 시작할 방법에 대한 지침을 줄 수도 있고(예를 들어 액티비티가 어느
+<a href="{@docRoot}guide/components/tasks-and-back-stack.html">작업</a>에 소속되어야 하는지 등)
+ 액티비티를 시작한 다음에 어떻게 처리해야 하는지도 알려줄 수 있습니다(예를 들어 해당 액티비티가 최근
+액티비티 목록에 소속되는지 여부).
+
+<p>자세한 정보는 {@link android.content.Intent#setFlags setFlags()} 메서드를 참조하십시오.</p>
+</dd>
+
+</dl>
+
+
+
+
+<h3 id="ExampleExplicit">명시적 인텐트 예시</h3>
+
+<p>명시적 인텐트는 특정한 앱 구성 요소를 시작하기 위해 사용하는 것입니다. 예를 들어 앱 내의
+특정 액티비티나 서비스를 말합니다. 명시적 인텐트를 생성하려면
+{@link android.content.Intent} 객체에 대한 구성 요소 이름을 정의합니다. 다른
+인텐트 속성은 모두 선택 사항입니다.</p>
+
+<p>예를 들어 앱 안에 {@code DownloadService}라는 서비스를 구축했다고 합시다.
+이 서비스는 웹 상에서 파일을 다운로드하도록 설계된 것입니다. 이것을 시작하려면 다음과 같은 코드를 사용하면 됩니다.</p>
+
+<pre>
+// Executed in an Activity, so 'this' is the {@link android.content.Context}
+// The fileUrl is a string URL, such as "http://www.example.com/image.png"
+Intent downloadIntent = new Intent(this, DownloadService.class);
+downloadIntent.setData({@link android.net.Uri#parse Uri.parse}(fileUrl));
+startService(downloadIntent);
+</pre>
+
+<p>{@link android.content.Intent#Intent(Context,Class)}
+ 생성자가 앱에 {@link android.content.Context}를 제공하고
+구성 요소에 {@link java.lang.Class} 객체를 제공합니다. 이처럼,
+이 인텐트는 앱 내의 {@code DownloadService} 클래스를 명시적으로 시작합니다.</p>
+
+<p>서비스를 구축하고 시작하는 데 대한 자세한 정보는
+<a href="{@docRoot}guide/components/services.html">서비스</a> 가이드를 참조하십시오.</p>
+
+
+
+
+<h3 id="ExampleSend">암시적 인텐트 예시</h3>
+
+<p>암시적 인텐트는 작업을 지정하여 기기에서 해당 작업을 수행할 수 있는 모든 앱을 호출할 수
+있도록 합니다. 암시적 인텐트를 사용하면 본인의 앱은 작업을 수행할 수 없지만 다른 앱은 아마도 할 수 있을 때,
+그리고 사용자로 하여금 어느 앱을 사용할지 선택하도록 하고자 할 때 유용합니다.</p>
+
+<p>예를 들어 사용자가 다른 사람들과 공유했으면 하는 콘텐츠를 가지고 있는 경우,
+{@link android.content.Intent#ACTION_SEND} 작업이 있는 인텐트를 생성한 다음
+공유할 콘텐츠를 지정하는 추가 정보를 추가하면 됩니다. 해당 인텐트로
+{@link android.content.Context#startActivity startActivity()}를 호출하면
+사용자가 어느 앱을 통해 콘텐츠를 공유할지 선택할 수 있습니다.</p>
+
+<p class="caution"><strong>주의:</strong> 개발자가 {@link android.content.Context#startActivity
+startActivity()}로 전송한 암시적 인텐트를 처리할 앱이 사용자에게 <em>전혀</em>
+표시되지 않을 수도 있습니다. 이런 일이 발생하면, 호출이 실패하고 앱 작동이 중단됩니다. 어느 액티비티든
+이 인텐트를 수신하도록 확실히 하려면, {@link android.content.Intent} 객체의 {@link android.content.Intent#resolveActivity
+resolveActivity()}를 호출합니다. 결과가 null이 아닌 경우,
+인텐트를 처리할 수 있는 앱이 최소한 하나는 있다는 뜻이며
+{@link android.content.Context#startActivity startActivity()}를 호출해도 안전합니다. 결과가 null이면,
+해당 인텐트를 사용해서는 안 되며 가능한 경우 해당 인텐트를 발생시키는 기능을 비활성화해야
+합니다.</p>
+
+
+<pre>
+// Create the text message with a string
+Intent sendIntent = new Intent();
+sendIntent.setAction(Intent.ACTION_SEND);
+sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
+sendIntent.setType("text/plain");
+
+// Verify that the intent will resolve to an activity
+if (sendIntent.resolveActivity(getPackageManager()) != null) {
+    startActivity(sendIntent);
+}
+</pre>
+
+<p class="note"><strong>참고:</strong> 이 경우에서는 URI를 사용하지 않았지만 인텐트의 데이터 유형이 정의되어
+추가 정보가 담고 있는 콘텐츠를 지정하였습니다.</p>
+
+
+<p>{@link android.content.Context#startActivity startActivity()}를 호출하면 시스템이
+설치된 앱을 모두 살펴보고 이런 종류의 인텐트를 처리할 수 있는 앱이 어느 것인지 알아봅니다(
+{@link android.content.Intent#ACTION_SEND} 작업이 있는 인텐트이며 "텍스트/일반"
+데이터가 담긴 것). 이것을 처리할 수 있는 앱이 하나뿐이면, 해당 앱이 즉시 열리고 이 앱에 인텐트가
+주어집니다. 인텐트를 허용하는 액티비티가 여러 개인 경우, 시스템은
+대화를 표시하여 사용자가 어느 앱을 사용할지 직접 선택할 수 있게 합니다.</p>
+
+
+<div class="figure" style="width:200px">
+  <img src="{@docRoot}images/training/basics/intent-chooser.png" alt="">
+  <p class="img-caption"><strong>그림 2.</strong> 선택기 대화입니다.</p>
+</div>
+
+<h3 id="ForceChooser">앱 선택기 강제 적용하기</h3>
+
+<p>암시적 인텐트에 응답하는 앱이 하나 이상인 경우,
+사용자가 어느 앱을 사용할지 선택할 수 있으며 해당 앱을 이 작업에 대한 기본 선택으로 만들 수
+있습니다. 이는 사용자가 이제부터 계속 같은 앱을 사용하고자 할 것이라고 추정되는 작업을
+수행할 때 좋습니다. 예를 들어 웹 페이지를 열 때가 이에 해당됩니다(대다수 사용자가
+웹 브라우저는 하나만 사용하는 것을 선호합니다).</p>
+
+<p>그러나, 인텐트에 응답할 수 있는 앱이 여러 개이고 사용자가 매번 다른 앱을 사용하기를 원할 수도 있는
+경우라면, 선택기 대화를 명시적으로 표시해야 합니다. 선택기 대화 상자는
+사용자가 작업에 사용할 앱을 매번 선택하도록 물어봅니다(사용자는 작업에 사용할
+기본 앱을 선택할 수 없습니다). 예를 들어 앱이 {@link
+android.content.Intent#ACTION_SEND} 작업에 "공유"를 수행하는 경우, 사용자는 각자의 현재 상황에 따라 여러 가지 다른 앱을 사용하여 공유하기를
+원할 수도 있습니다. 따라서 항상 선택기 대화를 사용해야 합니다(그림 2 참조).</p>
+
+
+
+
+<p>선택기를 표시하려면 {@link
+android.content.Intent#createChooser createChooser()}를 사용하여 {@link android.content.Intent}를 생성한 후 {@link
+android.app.Activity#startActivity startActivity()}에 전달합니다. 예:</p>
+
+<pre>
+Intent sendIntent = new Intent(Intent.ACTION_SEND);
+...
+
+// Always use string resources for UI text.
+// This says something like "Share this photo with"
+String title = getResources().getString(R.string.chooser_title);
+// Create intent to show the chooser dialog
+Intent chooser = Intent.createChooser(sendIntent, title);
+
+// Verify the original intent will resolve to at least one activity
+if (sendIntent.resolveActivity(getPackageManager()) != null) {
+    startActivity(chooser);
+}
+</pre>
+
+<p>이 예시는 {@link
+android.content.Intent#createChooser createChooser()} 메서드에 전달된 인텐트에 응답하는 앱 목록이 포함된 대화 상자를 표시하고 제공된 텍스트를
+대화 상자 제목으로 사용합니다.</p>
+
+
+
+
+
+
+
+
+
+<h2 id="Receiving">암시적 인텐트 수신하기</h2>
+
+<p>본인의 앱이 수신할 수 있는 암시적 인텐트가 어느 것인지 알리려면,
+각 앱 구성 요소에 대한 하나 이상의 인텐트 필터를 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a>
+ 요소로 <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">매니페스트 파일</a>에 선언합니다.
+각 인텐트 필터가 인텐트의 작업, 데이터 및 카테고리를 근거로 어느 유형의 인텐트를
+허용하는지 나타냅니다. 시스템이 앱 구성 요소에 암시적 인텐트를 전달하는 것은 인텐트가 개발자의 인텐트 필터 중 하나를
+통과해 지나갈 수 있는 경우뿐입니다.</p>
+
+<p class="note"><strong>참고:</strong> 명시적 인텐트는 항상 자신의 대상에 전달되며,
+이는 구성 요소가 어떤 인텐트 필터를 선언하든 무관합니다.</p>
+
+<p>앱 구성 요소는 자신이 수행할 수 있는 각 고유한 작업에 대해 별도의 필터를 선언해야 합니다.
+예를 들어 이미지 갤러리 앱에 있는 한 액티비티에 두 개의 필터가 있을 수 있습니다. 필터 하나는
+이미지를 보고, 또 다른 필터는 이미지를 편집하는 것입니다. 액티비티가 시작되면, 이는
+{@link android.content.Intent}를 검사한 다음
+{@link android.content.Intent}에 있는 정보를 근거로 어떻게 동작할 것인지 결정합니다(편집기 제어 항목을 표시할 것인지 말 것인지 등).</p>
+
+<p>각 인텐트 필터는 앱의 매니페스트 파일에 있는 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a>
+요소가 정의하며, 이는 상응하는 앱 구성 요소에 중첩되어
+있습니다(예: <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+요소). <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a> 내부에서는
+다음과 같은 세 가지 요소 중 하나 이상을 사용하여 허용할 인텐트 유형을 지정할 수
+있습니다.</p>
+
+<dl>
+<dt><a href="{@docRoot}guide/topics/manifest/action-element.html">{@code &lt;action&gt;}</a></dt>
+  <dd>허용된 인텐트 작업을 {@code name} 속성에서 선언합니다. 이 값은
+어떤 작업의 리터럴 문자열 값이어야 하며, 클래스 상수가 아닙니다.</dd>
+<dt><a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a></dt>
+  <dd>허용된 데이터 유형을 선언합니다. 이때
+데이터 URI(<code>scheme</code>, <code>host</code>, <code>port</code>,
+<code>path</code> 등)와 MIME 유형의 여러 가지 측면을 나타내는 하나 이상의 속성을 사용하는 방법을 씁니다.</dd>
+<dt><a href="{@docRoot}guide/topics/manifest/category-element.html">{@code &lt;category&gt;}</a></dt>
+  <dd>허용된 인텐트 카테고리를 {@code name} 속성에서 선언합니다. 이 값은
+어떤 작업의 리터럴 문자열 값이어야 하며, 클래스 상수가 아닙니다.
+
+  <p class="note"><strong>참고:</strong> 암시적 인텐트를 수신하려면 인텐트 필터 안에
+
+{@link android.content.Intent#CATEGORY_DEFAULT} 카테고리를 <strong>반드시 포함</strong>해야 합니다.
+{@link android.app.Activity#startActivity startActivity()} 및
+{@link android.app.Activity#startActivityForResult startActivityForResult()} 메서드는
+모든 인텐트를 마치 {@link android.content.Intent#CATEGORY_DEFAULT} 카테고리를 선언한 것처럼 취급합니다.
+  이 카테고리를 인텐트 필터에서 선언하지 않으면 액티비티에 어떤 암시적 인텐트도
+확인되지 않습니다.</p>
+  </dd>
+</dl>
+
+<p>예를 들어, 다음은 데이터 유형이 텍스트인 경우
+{@link android.content.Intent#ACTION_SEND} 인텐트를 수신할 인텐트 필터가 있는 액티비티 선언입니다.</p>
+
+<pre>
+&lt;activity android:name="ShareActivity">
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="text/plain"/>
+    &lt;/intent-filter>
+&lt;/activity>
+</pre>
+
+<p>
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code &lt;action&gt;}</a>,
+<a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a> 또는
+<a href="{@docRoot}guide/topics/manifest/category-element.html">{@code &lt;category&gt;}</a>의 인스턴스가 하나 이상 포함된 필터를 생성해도 됩니다.
+그렇게 하는 경우, 그저 해당 구성 요소가 그와 같은 필터 요소의 모든 조합을 처리할 수 있도록
+확실히 하기만 하면 됩니다.</p>
+
+<p>여러 가지 종류의 인텐트를 처리하고자 하되 특정 조합의 작업, 데이터 및 카테고리 유형으로만 한정하고자 한다면
+여러 가지 인텐트 필터를 생성해야 합니다.</p>
+
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>구성 요소로의 액세스 제한</h2>
+<p>인텐트 필터를 사용하는 것은 다른 앱이 여러분의 구성 요소를 시작하지 못하도록 방지하기에
+안전한 방식은 아닙니다. 인텐트 필터는 구성 요소로 하여금 특정한 종류의 암시적 인텐트에만
+응답하도록 제한하기는 하지만, 다른 앱이 여러분의 앱 구성 요소를 시작할 가능성도 있습니다.
+해당 개발자가 여러분의 구성 요소 이름을 알아내는 경우 명시적 인텐트를 사용하면 됩니다.
+구성 요소 중 하나를 시작하는 것은 <em>오직 본인 소유의 앱</em>으로 한정하는 것이 중요한 경우, 해당 구성 요소에 대하여
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#exported">{@code
+exported}</a> 속성을 {@code "false"}로 설정하십시오.
+</p>
+</div>
+</div>
+
+<p>암시적 인텐트를 필터에 대해 테스트하려면 인텐트를 세 가지 요소에 대해 각기
+비교합니다. 인텐트가 구성 요소에 전달되려면 해당 인텐트는 세 개의 테스트를 모두 통과해야 합니다.
+하나라도 일치하지 못하고 실패하면 Android 시스템이 해당 인텐트를 구성 요소에 전달하지
+않습니다.  그러나 구성 요소에는 여러 개의 인텐트 필터가 있을 수도 있으므로, 구성 요소의
+필터 중 하나를 통과하지 않는 인텐트도 다른 필터를 통하면 성공할 수 있습니다.
+시스템이 인텐트를 확인하는 방법에 대한 자세한 정보는
+<a href="#Resolution">인텐트 확인</a>에 대해 다룬 아래 섹션에 제공되어 있습니다.</p>
+
+<p class="caution"><strong>주의:</strong> 부주의로 다른 앱의
+{@link android.app.Service}를 실행하는 일을 피하려면, 항상 명시적 인텐트를 사용하여 본인의 서비스를 시작하고 서비스에 대한
+인텐트 필터는 선언하지 마십시오.</p>
+
+<p class="note"><strong>참고:</strong>
+액티비티 전체에 대해 인텐트 필터를 매니페스트 파일에서 선언해야 합니다.
+다만 브로드캐스트 수신기에 대한 필터의 경우 동적으로 등록할 수도 있습니다.
+{@link android.content.Context#registerReceiver(BroadcastReceiver, IntentFilter, String,
+Handler) registerReceiver()}를 호출하면 됩니다. 그런 다음 해당 수신기를 등록 해제하려면 {@link
+android.content.Context#unregisterReceiver unregisterReceiver()}를 사용하십시오. 이렇게 하면 앱이
+실행되는 동안에 정해진 기간 동안 특정한 브로드캐스트에 대해 수신 대기할 수
+있습니다.</p>
+
+
+
+
+
+
+
+<h3 id="ExampleFilters">필터 예시</h3>
+
+<p>몇 가지 인텐트 필터 동작에 대해 이해를 돕기 위해 소셜 공유 앱의 매니페스트 파일에서
+가져온 다음 조각을 참조하십시오.</p>
+
+<pre>
+&lt;activity android:name="MainActivity">
+    &lt;!-- This activity is the main entry, should appear in app launcher -->
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.MAIN" />
+        &lt;category android:name="android.intent.category.LAUNCHER" />
+    &lt;/intent-filter>
+&lt;/activity>
+
+&lt;activity android:name="ShareActivity">
+    &lt;!-- This activity handles "SEND" actions with text data -->
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="text/plain"/>
+    &lt;/intent-filter&gt;
+    &lt;!-- This activity also handles "SEND" and "SEND_MULTIPLE" with media data -->
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;action android:name="android.intent.action.SEND_MULTIPLE"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="application/vnd.google.panorama360+jpg"/>
+        &lt;data android:mimeType="image/*"/>
+        &lt;data android:mimeType="video/*"/>
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p>첫 번째 액티비티인 {@code MainActivity}는 앱의 주요 진입 지점입니다. 즉 이것이
+사용자가 시작 관리자 아이콘을 사용하여 앱을 처음 시작할 때 열리는 액티비티입니다.</p>
+<ul>
+  <li>{@link android.content.Intent#ACTION_MAIN} 작업은
+이것이 주요 진입 지점이며 어느 인텐트 데이터도 기대하지 않는다는 것을 나타냅니다.</li>
+  <li>{@link android.content.Intent#CATEGORY_LAUNCHER} 카테고리는
+이 액티비티의 아이콘이 시스템의 앱 시작 관리자에 배치되어야 한다는 것을 나타냅니다. <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 요소가
+아이콘을 {@code icon}으로 지정하지 않은 경우, 시스템은 <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>
+ 요소로부터 가져온 아이콘을 사용합니다.</li>
+</ul>
+<p>이들 두 가지가 함께 페어링되어야 액티비티가 앱 시작 관리자에 나타날 수 있습니다.</p>
+
+<p>두 번째 액티비티인 {@code ShareActivity}는 텍스트와 미디어 콘텐츠 공유를
+용이하게 할 목적으로 만들어진 것입니다. 사용자가 {@code MainActivity}에서 이 액티비티를 향해 이동하다가 이 안에 진입할 수도 있지만,
+두 가지 인텐트 필터 중 하나와 일치하는 암시적 인텐트를 발생시키는 또 다른 앱에서 {@code ShareActivity}에 직접 진입할 수도
+있습니다.</p>
+
+<p class="note"><strong>참고:</strong> MIME 유형, 즉
+<a href="https://developers.google.com/panorama/android/">{@code
+application/vnd.google.panorama360+jpg}</a>는 파노라마 사진을 나타내는
+특수 데이터 유형으로, 이것은 <a href="{@docRoot}reference/com/google/android/gms/panorama/package-summary.html">Google
+파노라마</a> API로 처리할 수 있습니다.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h2 id="PendingIntent">보류 인텐트 사용하기</h2>
+
+<p>{@link android.app.PendingIntent} 객체는 {@link
+android.content.Intent} 객체 주변을 감싸는 래퍼입니다. {@link android.app.PendingIntent}의
+기본 목적은 외래 애플리케이션에 권한을 허가하여 안에 들어 있는
+{@link android.content.Intent}를
+마치 본인 앱의 자체 프로세스에서 실행하는 것처럼 사용하게 하는 것입니다.</p>
+
+<p>보류 인텐트의 주요 사용 사례는 다음과 같습니다.</p>
+<ul>
+  <li>사용자가 여러분의 <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">알림</a>으로
+작업을 수행할 때 인텐트가 실행되도록 선언합니다(Android 시스템의 {@link android.app.NotificationManager}가
+{@link android.content.Intent}를 실행합니다).
+  <li>사용자가 여러분의
+<a href="{@docRoot}guide/topics/appwidgets/index.html">앱 위젯</a>으로
+작업을 수행할 때 인텐트가 실행되도록 선언합니다(메인 스크린 앱이 {@link android.content.Intent}를 실행합니다).
+  <li>향후 지정된 시간에 인텐트가 실행되도록 선언합니다(Android
+시스템의 {@link android.app.AlarmManager}가 {@link android.content.Intent}를 실행합니다).
+</ul>
+
+<p>각 {@link android.content.Intent} 객체는 특정한 유형의
+앱 구성 요소가({@link android.app.Activity}, {@link android.app.Service} 또는
+{@link android.content.BroadcastReceiver}) 처리하도록 설계되어 있기 때문에, {@link android.app.PendingIntent}도
+같은 고려 사항을 염두에 두고 생성해야 합니다. 보류 인텐트를 사용하는 경우, 여러분의 앱은
+{@link android.content.Context#startActivity
+startActivity()}와 같은 호출이 있는 앱을 실행하지 않게 됩니다. 대신
+{@link android.app.PendingIntent}를 생성할 때 원래 의도한 구성 요소 유형을 선언해야 합니다. 이때 각각의 생성자 메서드를 호출하는 방법을 씁니다.</p>
+
+<ul>
+  <li>{@link android.app.Activity}를 시작하는 {@link android.content.Intent}의 경우,
+{@link android.app.PendingIntent#getActivity PendingIntent.getActivity()}</li>
+  <li>{@link android.app.Service}를 시작하는 {@link android.content.Intent}의 경우,
+{@link android.app.PendingIntent#getService PendingIntent.getService()}</li>
+  <li>{@link android.content.BroadcastReceiver}를 시작하는 {@link android.content.Intent}의 경우,
+{@link android.app.PendingIntent#getBroadcast PendingIntent.getBroadcast()}</li>
+</ul>
+
+<p>여러분의 앱이 다른 여러 앱에서 보류 인텐트를 <em>수신</em>하는 것이 아닌 한,
+위의 메서드를 사용하여 {@link android.app.PendingIntent}를 생성하는 것이 아마도 여러분에게 필요한 유일한
+{@link android.app.PendingIntent} 메서드일 것입니다.</p>
+
+<p>각 메서드는 현재 앱의 {@link android.content.Context}, 래핑하고자 하는
+{@link android.content.Intent}와 인텐트의 적절한 사용 방식을 나타내는
+ 하나 이상의 플래그(인텐트를 한 번 이상 사용할 수 있는지 등) 등을 취합니다.</p>
+
+<p>보류 인텐트 사용에 관한 자세한 정보는 각 해당되는 사용 사례에 대한 문서에
+제공되어 있습니다. 예를 들어 <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">알림</a>
+ 및 <a href="{@docRoot}guide/topics/appwidgets/index.html">앱 위젯</a> API 가이드가 이에 해당됩니다.</p>
+
+
+
+
+
+
+
+<h2 id="Resolution">인텐트 확인</h2>
+
+
+<p>시스템이 액티비티를 시작하라는 암시적 인텐트를 수신하면, 시스템은 해당 인텐트에 대한 최선의 액티비티를 검색합니다.
+이때 다음과 같은 세 가지 측면을 근거로 인텐트를 인텐트 필터에 비교해 보는 방법을 씁니다.</p>
+
+<ul>
+  <li>인텐트 작업
+  <li>인텐트 데이터(URI와 데이터 유형 둘 다)
+  <li>인텐트 카테고리
+</ul>
+
+<p>다음 섹션에서는 인텐트 필터가 앱의 매니페스트 파일에서 어떻게 선언되었는지와 관련하여
+인텐트가 적절한 구성 요소에 일치되는 방식을 설명합니다.</p>
+
+
+<h3 id="ActionTest">작업 테스트</h3>
+
+<p>허용된 인텐트 작업을 나타내려면 인텐트 필터는 0개 이상의
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> 요소를 선언할 수 있습니다.  예:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.EDIT" /&gt;
+    &lt;action android:name="android.intent.action.VIEW" /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>이 필터를 통과하려면 {@link android.content.Intent}에
+지정된 작업이 필터에 목록으로 나열된 작업 중 하나와 일치해야만 합니다.</p>
+
+<p>필터에 목록으로 나열된 작업이 없는 경우, 인텐트가 일치될 대상이 아무것도 없으므로
+모든 인텐트가 테스트에 실패합니다. 그러나, {@link android.content.Intent}가
+작업을 지정하지 않는 경우, 테스트를 통과하게 됩니다(필터에 최소한 한 개 이상의 작업이
+들어있지 않은 한).</p>
+
+
+
+<h3 id="CategoryTest">카테고리 테스트</h3>
+
+<p>허용된 인텐트 카테고리를 나타내려면 인텐트 필터는 0개 이상의
+<a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> 요소를 선언할 수 있습니다.  예:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+    &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>인텐트가 카테고리 테스트를 통과하려면 {@link android.content.Intent} 내의
+모든 카테고리가 필터 내의 카테고리에 일치해야 합니다. 이 반대로는 반드시 성립하지 않아도 됩니다. 인텐트 필터가
+{@link android.content.Intent}에서 지정된 것보다 더 많은 카테고리를 선언할 수도 있지만 그래도
+{@link android.content.Intent}는 통과합니다. 그러므로, 카테고리가 없는 인텐트라면 이 테스트를 항상 통과하는 것이 맞습니다.
+이는 필터에 어떤 카테고리가 선언되어 있는지와는 무관합니다.</p>
+
+<p class="note"><strong>참고:</strong>
+Android는 {@link android.content.Intent#CATEGORY_DEFAULT} 카테고리를
+{@link
+android.content.Context#startActivity startActivity()} 및 {@link
+android.app.Activity#startActivityForResult startActivityForResult()}에 전달된 모든 암시적 인텐트에 적용합니다.
+따라서 액티비티가 암시적 인텐트를 수신하기를 원하는 경우,
+그 인텐트 필터 내에 {@code "android.intent.category.DEFAULT"}에 대한 카테고리가 반드시 포함되어 있어야 합니다(이전의
+{@code &lt;intent-filter&gt;} 예시에서 표시된 내용 참조).</p>
+
+
+
+<h3 id="DataTest">데이터 테스트</h3>
+
+<p>허용된 인텐트 데이터를 나타내려면 인텐트 필터는 0개 이상의
+<a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
+&lt;data&gt;}</a> 요소를 선언할 수 있습니다.  예:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:mimeType="video/mpeg" android:scheme="http" ... /&gt;
+    &lt;data android:mimeType="audio/mpeg" android:scheme="http" ... /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>각 <code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code>
+요소는 URI 구조와 데이터 유형(MIME 미디어 유형)을 나타낼 수 있습니다.  URI의 각 부분에 대해 별도의
+속성&mdash;{@code scheme}, {@code host}, {@code port}
+및 {@code path}&mdash;이 있습니다.
+</p>
+
+<p style="margin-left: 2em">{@code &lt;scheme&gt;://&lt;host&gt;:&lt;port&gt;/&lt;path&gt;}</p>
+
+<p>
+예:
+</p>
+
+<p style="margin-left: 2em">{@code content://com.example.project:200/folder/subfolder/etc}</p>
+
+<p>이 URI에서 구성표는 {@code content}이고 호스트는 {@code com.example.project},
+포트는 {@code 200}이며 경로는 {@code folder/subfolder/etc}입니다.
+</p>
+
+<p>이와 같은 속성은 각각 <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a> 요소에서 선택 항목이지만,
+이들 사이에 선형적 종속 관계가 있습니다.</p>
+<ul>
+  <li>구성표가 지정되지 않으면 호스트가 무시됩니다.</li>
+  <li>호스트가 지정되지 않으면 포트가 무시됩니다.</li>
+  <li>구성표와 호스트가 둘 다 지정되지 않으면 경로가 무시됩니다.</li>
+</ul>
+
+<p>인텐트 안의 URI가 필터 안의 URI 사양에 비교되는 경우, 이것은 필터 내에 포함된 URI의
+몇몇 부분에만 비교되는 것입니다. 예:</p>
+<ul>
+  <li>필터가 구성표만 지정하는 경우, 해당 구성표가 있는 모든 URI가 필터와
+일치합니다.</li>
+  <li>필터가 구성표와 권한은 지정하지만 경로는 지정하지 않는 경우, 같은 구성표와 권한이 있는
+모든 URI가 경로와 관계 없이 필터를 통과합니다.</li>
+  <li>필터가 구성표, 권한과 경로를 지정하는 경우 같은 구성표,
+권한과 경로가 있는 URI만 해당 필터를 통과합니다.</li>
+</ul>
+
+<p class="note"><strong>참고:</strong> 경로 사양에는 경로 이름이
+부분적으로만 일치하도록 요구하기 위해 와일드카드 별표(*)가 들어 있을 수 있습니다.</p>
+
+<p>데이터 테스트는 인텐트 안의 URI와 MIME 유형 둘 모두를 필터 안에서
+지정된 MIME 유형과 비교합니다.  규칙은 다음과 같습니다.
+</p>
+
+<ol type="a">
+<li>URI도 MIME 유형도 들어 있지 않은 인텐트가 테스트를 통과하는 것은
+필터가 URI나 MIME 유형을 전혀 지정하지 않은 경우뿐입니다.</li>
+
+<li>URI는 들어 있지만 MIME 유형은 없는 인텐트(URI로부터는
+명시적이지도 않고 추론할 수도 없음)가 테스트를 통과하는 것은 그 URI가 필터의 URI 형식과 일치하며
+필터가 인텐트와 마찬가지로 MIME 유형을 지정하지 않는 경우뿐입니다.</li>
+
+<li>MIME 유형은 들어 있지만 URI는 없는 인텐트가 테스트를 통과하는 것은
+해당 필터가 같은 MIME 유형을 목록으로 나열하지만 URI 형식은 지정하지 않은 경우뿐입니다.</li>
+
+<li>URI와 MIME 유형이 둘 다 들어 있는 인텐트(URI로부터는
+명시적이지도 않고 추론할 수도 없음)가 테스트의 MIME 유형 부분을 통과하는 것은 해당 유형이
+필터 내에 목록으로 나열된 한 유형에 일치하는 경우뿐입니다.  이것이 테스트의 URI 부분을 통과하는 것은
+URI가 필터 내의 URI와 일치하거나, {@code content:}
+ 또는 {@code file:} URI가 있고 필터가 URI를 지정하지 않은 경우뿐입니다. 달리 말하면,
+구성 요소는 필터가 MIME 유형 <em>하나만</em> 목록으로 나열하는 경우 {@code content:} 및 {@code file:} 데이터를
+지원하는 것으로 간주한다는 뜻입니다.</p></li>
+</ol>
+
+<p>
+마지막 규칙인 규칙 (d)는
+구성 요소가 파일이나 콘텐츠 제공자로부터 로컬 파일을 가져올 수 있는지에 대한 기대 수준을 반영합니다.
+따라서 이러한 필터는 데이터 유형만 목록으로 나열해도 되고,
+{@code content:} 및 {@code file:} 구성표의 이름을 명시적으로 제시하지 않아도 됩니다.
+이것이 일반적인 경우입니다.  예를 들어, 다음 예시와 같은 <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a> 요소는
+Android에 구성 요소가 콘텐츠 제공자에서 이미지 데이터를 가져와 표시할 수 있다고
+알립니다.
+</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:mimeType="image/*" /&gt;
+    ...
+&lt;/intent-filter&gt;</pre>
+
+<p>
+대부분의 사용 가능한 데이터는 콘텐츠 제공자가 제공하는 것이므로, 데이터 유형은
+지정하지만 URI는 지정하지 않는 필터가 아마 가장 보편적인 유형일 것입니다.
+</p>
+
+<p>
+또 다른 보편적인 구성을 예로 들자면 구성표와 데이터 유형을 가진 필터가 있겠습니다.  예를 들어
+다음 예시와 같은 <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>
+ 요소는 Android에 구성 요소가
+작업을 수행하기 위해 네트워크에서 비디오 데이터를 검색할 수 있다고 알립니다.
+</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:scheme="http" android:type="video/*" /&gt;
+    ...
+&lt;/intent-filter&gt;</pre>
+
+
+
+<h3 id="imatch">인텐트 일치</h3>
+
+<p>인텐트를 인텐트 필터에 비교해 일치시키면 활성화할 대상 구성 요소를
+찾아낼 수 있을 뿐만 아니라, 기기에 있는 일련의 구성 요소에 대해
+무언가 알아낼 수도 있습니다.  예를 들어 홈 앱이 앱 시작 관리자를 채우려면
+
+{@link android.content.Intent#ACTION_MAIN} 작업과
+{@link android.content.Intent#CATEGORY_LAUNCHER} 카테고리를 지정하는 인텐트 필터를 가진 액티비티를 모두 찾아야 합니다.</p>
+
+<p>여러분의 애플리케이션도 인텐트 일치를 이와 비슷한 방식으로 사용할 수 있습니다.
+{@link android.content.pm.PackageManager}에는 {@code query...()}
+ 메서드 집합이 있어 특정 인텐트를 허용하는 구성 요소를 모두 반환할 수 있고,
+이와 유사한 일련의 {@code resolve...()} 메서드도 있어 한 인텐트에 응답하는 데
+가장 좋은 구성 요소를 판별할 수 있습니다.  예를 들어,
+{@link android.content.pm.PackageManager#queryIntentActivities
+queryIntentActivities()}는 인수로 통과한
+인텐트를 수행할 수 있는 모든 액티비티의 목록을 반환하며 {@link
+android.content.pm.PackageManager#queryIntentServices
+queryIntentServices()}는 이와 비슷한 서비스 목록을 반환합니다.
+양쪽 메서드 모두 구성 요소를 활성화하지는 않습니다. 다만 응답할 수 있는 것들을 목록으로
+나열할 뿐입니다.  이와 비슷한 메서드인
+{@link android.content.pm.PackageManager#queryBroadcastReceivers
+queryBroadcastReceivers()}는 브로드캐스트 수신기에 쓰입니다.
+</p>
+
+
+
+
diff --git a/docs/html-intl/intl/ko/guide/components/loaders.jd b/docs/html-intl/intl/ko/guide/components/loaders.jd
new file mode 100644
index 0000000..cfbbb91
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/components/loaders.jd
@@ -0,0 +1,494 @@
+page.title=로더
+parent.title=액티비티
+parent.link=activities.html
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+    <h2>이 문서의 내용</h2>
+    <ol>
+    <li><a href="#summary">로더 API 요약</a></li>
+    <li><a href="#app">애플리케이션 안에서 로더 사용하기</a>
+      <ol>
+        <li><a href="#requirements"></a></li>
+        <li><a href="#starting">로더 시작</a></li>
+        <li><a href="#restarting">로더 다시 시작</a></li>
+        <li><a href="#callback">LoaderManager 콜백 사용하기</a></li>
+      </ol>
+    </li>
+    <li><a href="#example">예</a>
+       <ol>
+         <li><a href="#more_examples">추가 예</a></li>
+        </ol>
+    </li>
+  </ol>
+    
+  <h2>Key 클래스</h2>
+    <ol>
+      <li>{@link android.app.LoaderManager}</li>
+      <li>{@link android.content.Loader}</li>
+
+    </ol>   
+    
+    <h2>관련 샘플</h2>
+   <ol>
+     <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
+LoaderCursor</a></li>
+     <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html">
+LoaderThrottle</a></li>
+   </ol>
+  </div>
+</div>
+
+<p>로더는 Android 3.0부터 도입된 것으로, 액티비티 또는 프래그먼트에서 비동기식으로 데이터를 쉽게 
+로딩할 수 있게 합니다. 로더의 특성은 다음과 같습니다.</p>
+  <ul>
+    <li>모든 {@link android.app.Activity}와 {@link
+android.app.Fragment}에 사용할 수 있습니다.</li>
+    <li>데이터의 비동기식 로딩을 제공합니다.</li>
+    <li>데이터의 출처를 모니터링하여 그 콘텐츠가 변경되면 새 결과를 
+전달합니다.</li>
+    <li>구성 변경 후에 재생성된 경우, 마지막 로더의 커서로 자동으로 
+다시 연결됩니다. 따라서 데이터를 다시 쿼리하지 않아도 
+됩니다.</li>
+  </ul>
+ 
+<h2 id="summary">로더 API 요약</h2>
+
+<p>애플리케이션 안에서 로더를 사용하는 데 관련된 클래스와 인터페이스는 
+여러 가지가 있습니다. 다음 표에서 요약되어 있습니다.</p>
+
+<table>
+  <tr>
+    <th>클래스/인터페이스</th>
+    <th>설명</th>
+  </tr>
+  <tr>
+    <td>{@link android.app.LoaderManager}</td>
+    <td>{@link android.app.Activity} 또는 
+{@link android.app.Fragment}와 연관된 추상 클래스로, 하나 이상의 {@link
+android.content.Loader} 인스턴스를 관리하는 데 쓰입니다. 이것을 사용하면 애플리케이션이 
+{@link android.app.Activity}
+ 또는 {@link android.app.Fragment} 수명 주기와 함께 실행 시간이 긴 작업을 관리하는 데 도움이 됩니다. 이것의 가장 보편적인 용법은 
+{@link android.content.CursorLoader}와 함께 사용하는 것이지만, 
+다른 유형의 데이터를 로드하기 위해 애플리케이션이 자체 로더를 작성하는 것도 얼마든지 가능합니다.
+    <br />
+    <br />
+    액티비티 또는 프래그먼트당 {@link android.app.LoaderManager}는 하나씩밖에 없습니다. 하지만 {@link android.app.LoaderManager}에는 로더가 여러 개 있어도 
+됩니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.app.LoaderManager.LoaderCallbacks}</td>
+    <td>클라이언트에 대해 {@link
+android.app.LoaderManager}와 상호 작용하도록 하는 콜백 인터페이스입니다. 예를 들어 {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}
+콜백 메서드를 사용하여 새 로더를 생성할 수 있습니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.content.Loader}</td>
+    <td>데이터의 비동기식 로딩을 수행하는 추상 클래스입니다. 이것이 로더의 기본 
+클래스입니다. 보통은 {@link
+android.content.CursorLoader}를 사용하기 마련이지만, 자신만의 하위 클래스를 구현해도 됩니다. 로더가 활성 상태인 동안에는 
+소속 데이터의 출처를 모니터링하고 콘텐츠가 변경되면 새 결과를 
+전달하는 것이 정상입니다. </td>
+  </tr>
+  <tr>
+    <td>{@link android.content.AsyncTaskLoader}</td>
+    <td>작업을 수행할 {@link android.os.AsyncTask}를 제공하는 추상 로더입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.content.CursorLoader}</td>
+    <td>{@link android.content.AsyncTaskLoader}의 하위 클래스로, 이것이 
+{@link android.content.ContentResolver}를 쿼리하고 {@link
+android.database.Cursor}를 반환합니다. 이 클래스는 커서 쿼리에 대한 표준 방식으로 {@link
+android.content.Loader} 프로토콜을 구현하며, 
+{@link android.content.AsyncTaskLoader}에 구축되어 
+배경 스레드에서 커서 쿼리를 수행하므로 애플리케이션의 UI를 차단하지 않습니다. 
+이 로더를 사용하는 것이 프래그먼트나 액티비티의 API를 통해 관리된 쿼리를 수행하는 대신 {@link
+android.content.ContentProvider}에서 
+비동기식으로 데이터를 로딩하는 최선의 방법입니다.</td>
+  </tr>
+</table>
+
+<p>위의 표에 나열된 클래스와 인터페이스가 애플리케이션 내에서 로더를 구현하는 데 
+사용할 기본적인 구성 요소입니다. 생성하는 로더마다 
+이 모든 것이 다 필요한 것은 아니지만, 로더를 초기화하려면 항상 {@link
+android.app.LoaderManager}를 참조해야 하고 {@link
+android.content.CursorLoader}와 같은 {@link android.content.Loader} 
+클래스도 구현해야 합니다. 다음 몇 섹션에서는 애플리케이션 안에서 이와 같은 
+클래스와 인터페이스를 사용하는 법을 보여줍니다.</p>
+
+<h2 id ="app">애플리케이션 안에서 로더 사용하기</h2>
+<p>이 섹션에서는 Android 애플리케이션 내에서 로더를 사용하는 방법을 설명합니다. 로더를 
+사용하는 애플리케이션에는 보통 다음이 포함되어 있습니다.</p>
+<ul>
+  <li>{@link android.app.Activity} 또는 {@link android.app.Fragment}.</li>
+  <li>{@link android.app.LoaderManager}의 인스턴스.</li>
+  <li>{@link
+android.content.ContentProvider}가 지원하는 데이터를 로딩할 {@link android.content.CursorLoader}. 아니면, 개발자 나름의 
+{@link android.content.Loader} 또는 {@link android.content.AsyncTaskLoader} 하위 클래스를 구현하여 
+다른 출처에서 데이터를 로딩해도 됩니다.</li>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks}의 구현.
+여기에서 새 로더를 생성하고 기존 로더에 대한 참조를 
+관리합니다.</li> 
+<li>로더의 데이터를 표시하는 방법(예: {@link
+android.widget.SimpleCursorAdapter})</li>
+  <li>{@link android.content.ContentProvider}와 같은 데이터 출처로, 
+{@link android.content.CursorLoader}를 사용하는 경우에 해당.</li>
+</ul>
+<h3 id="starting">로더 시작</h3>
+
+<p>{@link android.app.LoaderManager}는 {@link android.app.Activity} 또는 
+{@link android.app.Fragment} 내에서 하나 이상의 {@link
+android.content.Loader} 인스턴스를 관리합니다. 액티비티 또는 프래그먼트당 {@link
+android.app.LoaderManager}는 하나씩밖에 없습니다.</p> 
+
+<p>보통은 
+액티비티의 {@link
+android.app.Activity#onCreate onCreate()} 메서드 내에서, 또는 프래그먼트의 
+{@link android.app.Fragment#onActivityCreated onActivityCreated()} 메서드 내에서 {@link android.content.Loader}를 초기화합니다. 이렇게 하려면 
+다음과 같은 방법을 따릅니다.</p>
+
+<pre>// Prepare the loader.  Either re-connect with an existing one,
+// or start a new one.
+getLoaderManager().initLoader(0, null, this);</pre>
+
+<p>{@link android.app.LoaderManager#initLoader initLoader()} 메서드는 
+다음과 같은 인수를 취합니다.</p>
+<ul>
+  <li>로더를 식별하는 고유한 ID. 이 예시에서 ID는 0입니다.</li>
+<li>생성 시 로더에 제공할 선택적 인수
+(이 예시에서는 <code>null</code>).</li> 
+
+<li>{@link android.app.LoaderManager.LoaderCallbacks} 구현. 로더 이벤트를 보고하기 위해 
+{@link android.app.LoaderManager}가 이것을 호출합니다. 이 예시에서는
+ 로컬 클래스가 {@link
+android.app.LoaderManager.LoaderCallbacks} 인터페이스를 구현하여 자신에 대한 참조인 
+{@code this}를 통과합니다.</li> 
+</ul>
+<p>{@link android.app.LoaderManager#initLoader initLoader()} 호출로 로더가 초기화되었고 활성 상태이도록 
+확실히 합니다. 이로써 발생할 수 있는 결과가 두 가지 있습니다.</p>
+<ul>
+  <li>ID가 지정한 로더가 이미 존재하는 경우, 마지막으로 생성된 로더를 
+재사용합니다.</li>
+  <li>ID가 지정한 로더가 존재하지 <em>않는</em> 경우, 
+{@link android.app.LoaderManager#initLoader initLoader()}가 
+{@link android.app.LoaderManager.LoaderCallbacks} 메서드 {@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}를 발생시킵니다. 
+여기에서 인스턴트화할 코드를 구현하고 새 로더를 반환합니다.
+자세한 논의는 <a href="#onCreateLoader">onCreateLoader</a> 섹션을 참조하십시오.</li>
+</ul>
+<p>어떤 경우에든 주어진 {@link android.app.LoaderManager.LoaderCallbacks}
+구현은 해당 로더와 연관되어 있으며, 로더 상태가 변경되면 
+이것이 호출됩니다.  이 호출의 그러한 시점에서 발신자가 
+시작된 상태에 있으며 요청한 로더가 이미 존재하고 자신의 데이터를 
+생성해 놓은 경우, 시스템은 즉시 {@link
+android.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()}를 
+호출합니다({@link android.app.LoaderManager#initLoader initLoader()} 도중). 
+따라서 이런 일이 발생할 것에 대비해두어야만 합니다. 이 콜백에 대한 자세한 논의는 <a href="#onLoadFinished">
+onLoadFinished</a>를 참조하십시오.</p>
+
+<p>{@link android.app.LoaderManager#initLoader initLoader()}
+메서드는 생성된 {@link android.content.Loader}를 반환하지만, 이에 대한 참조를 캡처하지 않아도 된다는 점을 
+유의하십시오. {@link android.app.LoaderManager}는 로더의 수명을 
+자동으로 관리합니다. {@link android.app.LoaderManager}는 
+필요에 따라 로딩을 시작하고 중단하며, 로더와 그에 연관된 콘텐츠의 상태를 
+유지관리합니다. 이것이 시사하는 바와 같이, 로더와 직접적으로 
+상호 작용하는 경우는 극히 드뭅니다(다만, 로더의 행동을 미세하게 조정하기 위해 로더 메서드를 사용하는 사례를 알아보려면 
+<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> 샘플을 참조하면 좋습니다). 
+가장 보편적으로 사용되는 메서드는 {@link
+android.app.LoaderManager.LoaderCallbacks}로, 이를 사용해 특정한 이벤트가 일어났을 때 
+로딩 프로세스에 개입하게 됩니다. 이 주제에 대한 자세한 논의는 <a href="#callback">LoaderManager 콜백 사용하기</a>를 참조하십시오.</p>
+
+<h3 id="restarting">로더 다시 시작</h3>
+
+<p>위에서 나타난 것과 같이 {@link android.app.LoaderManager#initLoader initLoader()}를 사용하는 경우, 
+이것은 지정된 ID에 해당되는 기존 로더가 있으면 그것을 사용합니다. 
+없으면, 하나 생성합니다. 하지만 때로는 오래된 데이터를 폐기하고 새로 시작하고 싶을 때가 
+있습니다.</p>
+
+<p>오래된 데이터를 폐기하려면 {@link
+android.app.LoaderManager#restartLoader restartLoader()}를 사용합니다. 예를 들어, 다음의 
+{@link android.widget.SearchView.OnQueryTextListener} 구현은 
+사용자의 쿼리가 변경되면 로더를 다시 시작합니다. 로더를 다시 시작해야 수정된 검색 필터를 사용하여 
+새 쿼리를 수행할 수 있습니다.</p>
+
+<pre>
+public boolean onQueryTextChanged(String newText) {
+    // Called when the action bar search text has changed.  Update
+    // the search filter, and restart the loader to do a new query
+    // with this filter.
+    mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+    getLoaderManager().restartLoader(0, null, this);
+    return true;
+}</pre>
+
+<h3 id="callback">LoaderManager 콜백 사용하기</h3>
+
+<p>{@link android.app.LoaderManager.LoaderCallbacks}는 클라이언트가 
+{@link android.app.LoaderManager}와 상호 작용할 수 있게 해주는 콜백 인터페이스입니다. </p>
+<p>로더, 특히 {@link android.content.CursorLoader}는 중단된 후에도 
+자신의 데이터를 유지할 것으로 기대됩니다. 이 때문에 애플리케이션이 
+액티비티 또는 프래그먼트의 @link android.app.Activity#onStop
+onStop()} 및 {@link android.app.Activity#onStart onStart()}를 가로질러 데이터를 유지할 수 있고, 
+따라서 사용자가 애플리케이션에 되돌아오면 데이터가 다시 로딩되기를 기다리지 
+않아도 됩니다. 새 로더를 언제 생성해야 할지 알아보려면 {@link android.app.LoaderManager.LoaderCallbacks} 
+메서드를 사용합니다. 또한 로더의 데이터 사용을 중단할 때가 되면 
+이를 애플리케이션에 알리는 데에도 이것을 사용할 수 있습니다.</p>
+
+<p>{@link android.app.LoaderManager.LoaderCallbacks}에는 다음과 같은 메서드가 
+포함됩니다.</p>
+<ul>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()} -
+주어진 ID에 대하여 인스턴트화하고 새 {@link android.content.Loader}를 반환합니다.
+</li></ul>
+<ul>
+  <li> {@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()}
+- 이전에 생성된 로더가 로딩을 완료하면 호출됩니다.
+</li></ul>
+<ul>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}
+- 이전에 생성된 로더가 휴식 중이라서 해당되는 데이터를 사용할 수 없을 경우 
+호출됩니다.
+</li>
+</ul>
+<p>이러한 메서드는 다음 섹션에 보다 자세하게 설명되어 있습니다.</p>
+
+<h4 id ="onCreateLoader">onCreateLoader</h4>
+
+<p>로더에 액세스하려 시도하는 경우(예를 들어 {@link
+android.app.LoaderManager#initLoader initLoader()}를 통해), 로더는 해당 ID가 지정하는 로더가 존재하는지 
+여부를 확인합니다. 그런 로더가 없으면, {@link
+android.app.LoaderManager.LoaderCallbacks} 메서드 {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}를 발생시킵니다. 여기에서 
+새 로더를 생성합니다. 이것은 보통 {@link
+android.content.CursorLoader}이지만, 개발자 나름대로 {@link
+android.content.Loader} 하위 클래스를 구현해도 됩니다. </p>
+
+<p>이 예시에서는, {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}
+ 콜백 메서드가 {@link android.content.CursorLoader}를 생성합니다. 
+{@link android.content.CursorLoader}를 자체 생성자 메서드를 사용하여 구축해야 합니다. 이것은 
+{@link
+android.content.ContentProvider}로 쿼리를 수행하기 위해 필요한 모든 정보 집합을 필요로 합니다. 구체적으로 필요한 것은 다음과 같습니다.</p>
+<ul>
+  <li><em>uri</em> — 검색할 콘텐츠의 URI입니다. </li>
+  <li><em>예측</em> — 반환할 열 목록입니다. 
+<code>null</code>을 전달하면 모든 열을 반환하며, 이는 비효율적입니다. </li>
+  <li><em>선택</em> — 반환할 행을 선언하는 필터로, 
+SQL WHERE 절로 형식이 설정됩니다(WHERE 자체는 제외). 
+<code>null</code>을 반환하면 주어진 URI에 대한 모든 행을 반환합니다. </li>
+  <li><em>selectionArgs</em> — 선택에 ?를 포함해도 됩니다. 이렇게 하면 
+이것이 <em>selectionArgs</em>에서 가져온 값으로 교체되며, 이때 선택에 표시되는 
+순서를 따릅니다. 값은 문자열로 바인딩됩니다. </li>
+  <li><em>sortOrder</em> — SQL ORDER BY 절 형식으로 설정된 
+행의 순서 지정 방법입니다(ORDER BY 자체는 제외). <code>null</code>을 
+전달하면 기본 정렬 순서를 사용하는데, 이는 순서가 없습니다.</li>
+</ul>
+<p>예:</p>
+<pre>
+ // If non-null, this is the current filter the user has provided.
+String mCurFilter;
+...
+public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+    // This is called when a new Loader needs to be created.  This
+    // sample only has one Loader, so we don't care about the ID.
+    // First, pick the base URI to use depending on whether we are
+    // currently filtering.
+    Uri baseUri;
+    if (mCurFilter != null) {
+        baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+                  Uri.encode(mCurFilter));
+    } else {
+        baseUri = Contacts.CONTENT_URI;
+    }
+
+    // Now create and return a CursorLoader that will take care of
+    // creating a Cursor for the data being displayed.
+    String select = &quot;((&quot; + Contacts.DISPLAY_NAME + &quot; NOTNULL) AND (&quot;
+            + Contacts.HAS_PHONE_NUMBER + &quot;=1) AND (&quot;
+            + Contacts.DISPLAY_NAME + &quot; != '' ))&quot;;
+    return new CursorLoader(getActivity(), baseUri,
+            CONTACTS_SUMMARY_PROJECTION, select, null,
+            Contacts.DISPLAY_NAME + &quot; COLLATE LOCALIZED ASC&quot;);
+}</pre>
+<h4 id="onLoadFinished">onLoadFinished</h4>
+
+<p>이 메서드는 이전에 생성된 로더가 로딩을 완료하면 호출됩니다. 
+이 로더에 대해 제공된 마지막 데이터가 릴리스되기 전에 틀림없이 
+이 메서드가 호출됩니다.  이 시점에서 오래된 데이터의 
+사용 내용을 모두 제거해야 하지만(곧 릴리스될 것이므로), 데이터 릴리스를 직접 수행해서는 안 됩니다. 해당 데이터는 
+로더의 소유이며, 로더가 알아서 처리할 것이기 때문입니다.</p>
+
+
+<p>로더는 애플리케이션이 데이터를 더 이상 사용하지 않는다는 사실을 알게 되면 곧바로 해당 데이터를 
+릴리스할 것입니다.  예를 들어 데이터가 {@link
+android.content.CursorLoader}의 커서인 경우, 거기에서 직접 {@link
+android.database.Cursor#close close()}를 호출하면 안 됩니다. 커서가 
+{@link android.widget.CursorAdapter}에 배치되는 경우, {@link
+android.widget.SimpleCursorAdapter#swapCursor swapCursor()} 메서드를 사용해야 합니다. 그래야 
+오래된 {@link android.database.Cursor}가 종료되지 않습니다. 예:</p>
+
+<pre>
+// This is the Adapter being used to display the list's data.<br
+/>SimpleCursorAdapter mAdapter;
+...
+
+public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
+    // Swap the new cursor in.  (The framework will take care of closing the
+    // old cursor once we return.)
+    mAdapter.swapCursor(data);
+}</pre>
+
+<h4 id="onLoaderReset">onLoaderReset</h4>
+
+<p>이 메서드는 이전에 생성된 로더가 휴식 중이라서 해당되는 데이터를 사용할 수 없는 경우 
+호출됩니다. 이 콜백을 사용하면 데이터가 언제 릴리스될지 알아낼 수 있어 
+이에 대한 참조를 직접 제거할 수 있습니다.  </p>
+<p>이 구현은 
+{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}를 호출하며, 
+이때 값은 <code>null</code>을 씁니다.</p>
+
+<pre>
+// This is the Adapter being used to display the list's data.
+SimpleCursorAdapter mAdapter;
+...
+
+public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
+    // This is called when the last Cursor provided to onLoadFinished()
+    // above is about to be closed.  We need to make sure we are no
+    // longer using it.
+    mAdapter.swapCursor(null);
+}</pre>
+
+
+<h2 id="example">예</h2>
+
+<p>일례를 제시하기 위해 아래에 {@link android.widget.ListView}를 표시하는 {@link
+android.app.Fragment}의 전체 구현을 나타내었습니다. 여기에는 
+연락처 콘텐츠 제공자에 대한 쿼리 결과가 들어 있습니다. 이것은 {@link
+android.content.CursorLoader}를 사용하여 제공자에 대한 쿼리를 관리합니다.</p>
+ 
+<p>이 예시에서 나타낸 바와 같이 애플리케이션이 사용자의 연락처에 액세스하려면 
+애플리케이션의 매니페스트에 
+{@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS} 권한이 포함되어 있어야 합니다.</p>
+
+<pre>
+public static class CursorLoaderListFragment extends ListFragment
+        implements OnQueryTextListener, LoaderManager.LoaderCallbacks&lt;Cursor&gt; {
+
+    // This is the Adapter being used to display the list's data.
+    SimpleCursorAdapter mAdapter;
+
+    // If non-null, this is the current filter the user has provided.
+    String mCurFilter;
+
+    @Override public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        // Give some text to display if there is no data.  In a real
+        // application this would come from a resource.
+        setEmptyText(&quot;No phone numbers&quot;);
+
+        // We have a menu item to show in action bar.
+        setHasOptionsMenu(true);
+
+        // Create an empty adapter we will use to display the loaded data.
+        mAdapter = new SimpleCursorAdapter(getActivity(),
+                android.R.layout.simple_list_item_2, null,
+                new String[] { Contacts.DISPLAY_NAME, Contacts.CONTACT_STATUS },
+                new int[] { android.R.id.text1, android.R.id.text2 }, 0);
+        setListAdapter(mAdapter);
+
+        // Prepare the loader.  Either re-connect with an existing one,
+        // or start a new one.
+        getLoaderManager().initLoader(0, null, this);
+    }
+
+    @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        // Place an action bar item for searching.
+        MenuItem item = menu.add(&quot;Search&quot;);
+        item.setIcon(android.R.drawable.ic_menu_search);
+        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+        SearchView sv = new SearchView(getActivity());
+        sv.setOnQueryTextListener(this);
+        item.setActionView(sv);
+    }
+
+    public boolean onQueryTextChange(String newText) {
+        // Called when the action bar search text has changed.  Update
+        // the search filter, and restart the loader to do a new query
+        // with this filter.
+        mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+        getLoaderManager().restartLoader(0, null, this);
+        return true;
+    }
+
+    @Override public boolean onQueryTextSubmit(String query) {
+        // Don't care about this.
+        return true;
+    }
+
+    @Override public void onListItemClick(ListView l, View v, int position, long id) {
+        // Insert desired behavior here.
+        Log.i(&quot;FragmentComplexList&quot;, &quot;Item clicked: &quot; + id);
+    }
+
+    // These are the Contacts rows that we will retrieve.
+    static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
+        Contacts._ID,
+        Contacts.DISPLAY_NAME,
+        Contacts.CONTACT_STATUS,
+        Contacts.CONTACT_PRESENCE,
+        Contacts.PHOTO_ID,
+        Contacts.LOOKUP_KEY,
+    };
+    public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+        // This is called when a new Loader needs to be created.  This
+        // sample only has one Loader, so we don't care about the ID.
+        // First, pick the base URI to use depending on whether we are
+        // currently filtering.
+        Uri baseUri;
+        if (mCurFilter != null) {
+            baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+                    Uri.encode(mCurFilter));
+        } else {
+            baseUri = Contacts.CONTENT_URI;
+        }
+
+        // Now create and return a CursorLoader that will take care of
+        // creating a Cursor for the data being displayed.
+        String select = &quot;((&quot; + Contacts.DISPLAY_NAME + &quot; NOTNULL) AND (&quot;
+                + Contacts.HAS_PHONE_NUMBER + &quot;=1) AND (&quot;
+                + Contacts.DISPLAY_NAME + &quot; != '' ))&quot;;
+        return new CursorLoader(getActivity(), baseUri,
+                CONTACTS_SUMMARY_PROJECTION, select, null,
+                Contacts.DISPLAY_NAME + &quot; COLLATE LOCALIZED ASC&quot;);
+    }
+
+    public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
+        // Swap the new cursor in.  (The framework will take care of closing the
+        // old cursor once we return.)
+        mAdapter.swapCursor(data);
+    }
+
+    public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
+        // This is called when the last Cursor provided to onLoadFinished()
+        // above is about to be closed.  We need to make sure we are no
+        // longer using it.
+        mAdapter.swapCursor(null);
+    }
+}</pre>
+<h3 id="more_examples">추가 예</h3>
+
+<p>로더를 사용하는 법을 보여주는 몇 가지 다른 예가 <strong>ApiDemos</strong>에 
+소개되어 있습니다.</p>
+<ul>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
+LoaderCursor</a> — 위에 표시된 코드 조각의 완전한 
+버전입니다.</li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> — 데이터가 변경될 때 콘텐츠 제공자가 
+수행하는 쿼리의 수를 줄이기 위해 제한을 사용하는 방법을 예시로 나타낸 것입니다.</li>
+</ul>
+
+<p>SDK 샘플을 다운로드하고 설치하는 데 대한 정보는 <a href="http://developer.android.com/resources/samples/get.html">샘플 
+가져오기</a>를 참조하십시오. </p>
+
diff --git a/docs/html-intl/intl/ko/guide/components/processes-and-threads.jd b/docs/html-intl/intl/ko/guide/components/processes-and-threads.jd
new file mode 100644
index 0000000..850d55c
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/components/processes-and-threads.jd
@@ -0,0 +1,411 @@
+page.title=프로세스 및 스레드
+page.tags=수명 주기, 배경
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>이 문서의 내용</h2>
+<ol>
+<li><a href="#Processes">프로세스</a>
+  <ol>
+    <li><a href="#Lifecycle">프로세스 수명 주기</a></li>
+  </ol>
+</li>
+<li><a href="#Threads">스레드</a>
+  <ol>
+    <li><a href="#WorkerThreads">작업자 스레드</a></li>
+    <li><a href="#ThreadSafe">스레드로부터 안전한 메서드</a></li>
+  </ol>
+</li>
+<li><a href="#IPC">프로세스 간 통신</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>애플리케이션 구성 요소가 시작되고 애플리케이션에 실행 중인 다른 구성 요소가 없으면
+Android 시스템은 하나의 실행 스레드로 애플리케이션의 Linux 프로세스를
+시작합니다. 기본적으로 같은 애플리케이션의 모든 구성 요소는 같은 프로세스와 스레드에서 실행됩니다
+("기본" 스레드라고 합니다). 애플리케이션 구성 요소가 시작되고 (애플리케이션의 다른 구성 요소가 존재해서) 
+해당 애플리케이션의 프로세스가 이미 존재하면 해당 구성 요소는
+프로세스 내에서 시작되고 같은 실행 스레드를 사용합니다. 하지만 애플리케이션 내의 
+여러 가지 구성 요소가 각자 별도의 프로세스에서 실행되도록 할 수도 있고, 어느 프로세스에든 추가 스레드를 
+만들 수 있습니다.</p>
+
+<p>이 문서는 프로세스와 스레드가 Android 애플리케이션에서 작동하는 방식을 설명합니다.</p>
+
+
+<h2 id="Processes">프로세스</h2>
+
+<p>기본적으로 같은 애플리케이션의 모든 구성 요소는 같은 프로세스와 스레드에서 실행되고,
+대부분의 애플리케이션은 이를 바꿔서는 안 됩니다. 그러나 어느 프로세스가 특정 구성 요소에 속하는지
+확인해야 할 경우 매니페스트 파일에서 확인할 수 있습니다.</p>
+
+<p>구성 요소 &mdash;<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a>와 <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code
+&lt;service&gt;}</a>, <a href="{@docRoot}guide/topics/manifest/receiver-element.html">{@code
+&lt;receiver&gt;}</a> 및 <a href="{@docRoot}guide/topics/manifest/provider-element.html">{@code
+&lt;provider&gt;}</a>&mdash;의 각 유형에 대한 매니페스트 항목은 구성 요소를 실행할 프로세스를 지정하는 {@code android:process} 속성을 지원합니다.
+ 이러한 속성을 설정하여 각 구성 요소를 자체 프로세스에서 실행시키거나 
+다른 구성 요소를 제외한 일부 구성 요소만 프로세스를 공유하게 할 수 있습니다  또한, 
+{@code android:process}를 설정하여 다른 애플리케이션의 구성 요소를 같은 프로세스에서 실행시킬 수 있습니다.
+단, 이는 애플리케이션이 같은 Linux 사용자 ID를 공유하고 같은 인증서에
+서명되었을 경우에 한합니다.</p>
+
+<p><a href="{@docRoot}guide/topics/manifest/application-element.html">{@code
+&lt;application&gt;}</a> 요소도 {@code android:process} 속성을 지원하여,
+모든 구성 요소에 적용되는 기본값을 설정합니다.</p>
+
+<p>Android는 어느 시점엔가 프로세스를 종료하기로 결정할 수도 있습니다. 즉 메모리가 부족하거나, 사용자에게 더욱 즉각적인 서비스를 제공하는 
+다른 프로세스가 이 프로세스의 중단을 필요로 하는 경우 등입니다. 그러면 중단된 
+프로세스에서 실행되고 있던 애플리케이션 구성 요소도 따라서 소멸됩니다.  그와 같은 구성 요소가 할 작업이 다시 생기면 
+그에 대한 프로세스도 다시 시작됩니다.</p>
+
+<p>어느 프로세스를 삭제할지 결정할 때, Android 시스템은 
+사용자에 대한 이들의 상대적 중요성을 가늠합니다.  예를 들어, 눈에 보이는 액티비티를 호스팅하는 프로세스와 비교하여 
+화면에 보이지 않는 액티비티를 호스팅하는 프로세스를 쉽게 종료할 수 있습니다. 프로세스 종료 결정은 
+해당 프로세스에서 실행되는 구성 요소의 상태에 따라 달라집니다. 종료할 
+프로세스를 결정하는 데 사용하는 규칙은 아래에 설명되어 있습니다. </p>
+
+
+<h3 id="Lifecycle">프로세스 수명 주기</h3>
+
+<p>Android 시스템은 최대한 오래 애플리케이션 프로세스를 유지하려고 시도하지만,
+결국 오래된 프로세스를 제거하고 새 프로세스나 더 중요한 프로세스에 사용할 메모리를 확보해야 합니다.  유지할 
+프로세스와 종료할 프로세스를 결정하기 위해
+시스템은 프로세스에서 실행되는 구성 요소와 해당 구성 요소의 상태에 기초하여 각 프로세스에 
+"중요 계층"을 부여합니다.  중요도가 낮은 
+프로세스가 먼저 제거되고, 그 다음으로 중요도가 낮은 프로세스를 제거하는 식으로
+필요에 따라 시스템 리소스를 회복하는 것입니다.</p>
+
+<p>중요 계층에는 다섯 가지 단계가 있습니다. 다음 목록은 
+중요도 순서에 따른 프로세스 유형을 나타낸 것입니다(첫 번째 프로세스가 <em>가장 중요하고</em> 
+<em>마지막으로 종료됩니다)</em>.</p>
+
+<ol>
+  <li><b>전경 프로세스</b>
+    <p>사용자가 현재 진행하는 작업에 필요한 프로세스입니다.  다음 조건 중 
+하나가 참일 경우 프로세스가 전경에 있는 것으로 간주합니다.</p>
+
+      <ul>
+        <li>사용자와 상호 작용하는 {@link android.app.Activity}를 호스팅할 경우({@link
+android.app.Activity}의 {@link android.app.Activity#onResume onResume()} 메서드가 호출되었을 경우
+).</li>
+
+        <li>사용자와 상호 작용하는 액티비티에 바인딩된 {@link android.app.Service}를 호스팅할 경우.
+</li>
+
+        <li>"전경에서" 실행되는 {@link android.app.Service}를 호스팅할 경우(
+해당 서비스가 {@link android.app.Service#startForeground startForeground()}를 호출했을 경우).
+
+        <li>수명 주기 콜백 중 하나를 실행하는 {@link android.app.Service}를 호스팅할 경우
+({@link android.app.Service#onCreate onCreate()}, {@link android.app.Service#onStart
+onStart()} 또는 {@link android.app.Service#onDestroy onDestroy()}).</li>
+
+        <li>{@link
+android.content.BroadcastReceiver#onReceive onReceive()} 메서드를 실행하는 {@link android.content.BroadcastReceiver}를 호스팅할 경우.</li>
+    </ul>
+
+    <p>일반적으로, 주어진 시간에 존재하는 전경 프로세스는 몇 개밖에 되지 않습니다.  이들은 최후의 
+수단으로서만 종료됩니다. 즉, 메모리가 너무 부족해 계속 실행할 수 없는 경우를 말합니다.  일반적으로 그 시점이 되면 
+기기가 메모리 페이징 상태에 도달한 것이므로 전경 프로세스 몇 개를 중단해야만 
+사용자 인터페이스의 반응성을 유지할 수 있습니다.</p></li>
+
+  <li><b>가시적 프로세스</b>
+    <p>전경 구성 요소는 없지만 
+사용자가 화면에서 보는 것에 영향을 미칠 수 있는 프로세스입니다. 다음 조건 중 하나가 참이면 
+가시적 프로세스로 간주합니다.</p>
+
+      <ul>
+        <li>전경에 있지는 않지만 사용자에게 보이는 {@link android.app.Activity}를 호스팅할 경우
+({@link android.app.Activity#onPause onPause()} 메서드가 호출되었을 경우). 
+예를 들어 이것은 전경 액티비티가 대화를 시작하여 이전 액티비티가 그 뒤에 보일 경우
+ 발생합니다.</li>
+
+        <li>눈에 보이는(또는 전경) 액티비티에 바인딩된 {@link android.app.Service}를 호스팅할 경우.
+</li>
+      </ul>
+
+      <p>가시적인 프로세스는 매우 중요도가 높은 것으로 취급하고 모든 전경 프로세스를 실행하는 데 필요할 경우에만 
+종료됩니다. </p>
+    </li>
+
+  <li><b>서비스 프로세스</b>
+    <p>{@link
+android.content.Context#startService startService()} 메서드로 시작되었지만 두 개의 상위 계층 분류에 
+들어가지 않는 서비스를 실행하는 프로세스입니다. 서비스 프로세스는 사용자가 보는 것과 직접 연결되어 있지는 않지만, 
+일반적으로 사용자가 신경 쓰는 작업을 하므로(배경에서 음악 재생 또는 네트워크에서 데이터 다운로드) 
+시스템은 모든 전경 및 가시적 프로세스와 함께 실행할 만큼 메모리가 충분하지 않을 경우에만 
+프로세스를 중단합니다. </p>
+  </li>
+
+  <li><b>배경 프로세스</b>
+    <p>현재 사용자에게 보이지 않는 액티비티를 보유한 프로세스입니다(액티비티의 
+{@link android.app.Activity#onStop onStop()} 메서드가 호출되었습니다). 이와 같은 프로세스는 
+사용자 환경에 직접적 영향을 미치지 않고, 시스템은 언제든 이 프로세스를 중단시켜 
+전경,
+가시적 또는 서비스 프로세스를 위한 메모리를 확보할 수 있습니다. 보통 한번에 실행 중인 배경 프로세스가 많은 편이므로 이들은 
+LRU(최저 사용 빈도) 목록에 보관하여 사용자가 가장 최근에 본 액티비티가 있는 
+프로세스가 가장 마지막에 중단되도록 합니다. 액티비티가 수명 주기 메서드를 올바르게 구현하고 
+자신의 현재 상태를 저장할 경우, 사용자가 액티비티로 다시 이동할 때 액티비티가 모든 가시적 상태를 
+복원하므로 프로세스를 중단시키더라도 사용자 환경에는 눈에 띄게 영향을 미치지 
+않습니다. 상태 저장과 복원에 관한 정보는 <a href="{@docRoot}guide/components/activities.html#SavingActivityState">액티비티</a>
+문서를 참조하십시오.</p>
+  </li>
+
+  <li><b>빈 프로세스</b>
+    <p>활성 애플리케이션 구성 요소를 보유하지 않은 프로세스입니다.  이런 프로세스를 
+유지하는 유일한 이유는 다음에 내부 구성 요소를 실행할 때 시작 시간을 절약하기 위한 캐싱 
+때문입니다.  시스템은 프로세스 캐시와 기본 커널 캐시 사이에서 전반적인 시스템 리소스의 균형을 맞추기 위해
+이 프로세스를 중단시키는 경우가 많습니다.</p>
+  </li>
+</ol>
+
+
+  <p>Android는 프로세스에서 현재 활성 상태인 구성 요소의 중요도에 따라 
+프로세스에 가장 높은 수준을 부여합니다.  예를 들어, 프로세스가 서비스와 가시적 액티비티를 호스팅할 경우, 
+해당 프로세스는 서비스 프로세스가 아니라 가시적 프로세스 등급이 부여됩니다.</p>
+
+  <p>또한, 프로세스의 등급은 다른 프로세스가 이에 의존할 경우 상승할 수 있습니다.
+즉, 다른 프로세스에 서비스를 제공하는 프로세스가 서비스 제공 대상 프로세스보다 
+등급이 낮은 경우는 있을 수 없습니다. 예를 들어 프로세스 A의 콘텐츠 제공자가 프로세스 B의 클라이언트에 서비스를 제공하거나 
+프로세스 A의 서비스가 프로세스 B의 구성 요소에 바인딩되어 있을 경우 프로세스 A는 항상 중요도가 
+프로세스 B와 같거나 그보다 높습니다.</p>
+
+  <p>서비스를 실행하는 프로세스가 배경 액티비티가 포함된 프로세스보다 높으므로, 
+장기 작업을 시작하는 액티비티는 작업자 스레드만 생성하기보다는 해당 작업에 대한 <a href="{@docRoot}guide/components/services.html">서비스</a>를 시작하는 것이 좋습니다.
+이는 특히 작업이 해당 액티비티보다 오래 지속될 경우 더욱 중요합니다. 
+예를 들어, 웹사이트에 사진을 업로드하는 액티비티가 업로드를 수행하는 서비스를 시작해야 
+사용자가 액티비티를 떠나더라도 배경에서 업로드를 지속할 수 있습니다. 
+서비스를 사용하면 액티비티에 어떤 일이 발생하든 해당 작업에 반드시 
+"서비스 프로세스" 우선 순위 이상이 부여됩니다. 이것이 브로드캐스트 수신기가 시간이 오래 걸리는 작업을 
+스레드에 넣기보다는 서비스를 사용해야 하는 것과 같은 이유입니다.</p>
+
+
+
+
+<h2 id="Threads">스레드</h2>
+
+<p> 애플리케이션이 시작되면 시스템이 애플리케이션에 대한 실행의 스레드를 생성하며, 이를 
+"기본"이라고 합니다. 이 스레드는 드로어블 이벤트를 포함하여 적절한 사용자 인터페이스 위젯에 
+이벤트를 발송하는 역할을 맡기 때문에 중요합니다. 이것은 Android UI 도구 키트의 구성 요소({@link
+android.widget}과 {@link android.view} 패키지의 구성 요소)와 개발자의 애플리케이션이
+상호 작용하는 스레드이기도 합니다. 따라서 기본 스레드는 
+UI 스레드라고 불릴 때도 있습니다.</p>
+
+<p>시스템은 구성 요소의 각 인스턴스에 대해 별도의 스레드를 생성하지 <em>않습니다</em>. 같은 
+프로세스에서 실행되는 모든 구성 요소는 UI 스레드에서 시작되고, 각 구성 요소를 호출하는 시스템이
+해당 스레드에서 발송됩니다. 따라서 
+시스템 콜백에 응답하는 메서드(사용자 작업을 보고하는 {@link android.view.View#onKeyDown onKeyDown()} 또는 
+수명 주기 콜백 메서드)는 항상 프로세스의 UI 스레드에서 실행됩니다.</p>
+
+<p>예를 들어, 사용자가 화면의 버튼을 터치하면, 앱 UI 스레드가 위젯에 터치 이벤트를 발송하고,
+위젯은 눌린 상태를 설정하고 이벤트 대기열에 
+무효화 요청을 게시합니다. UI 스레드가 이 요청을 대기열에서 해제하고 위젯에 스스로를 다시 
+그려야 한다고 알립니다.</p>
+
+<p>앱이 사용자 상호작용에 응답하여 집약적인 작업을 수행할 때는 이 단일 스레드 모델은
+애플리케이션을 제대로 구현하지 않으면 낮은 성능을 보일 수 있습니다. 특히,
+모든 것이 UI 스레드에서 발생하고 네트워크 액세스나 데이터 베이스 쿼리 등의 긴 작업을 수행하면 
+UI가 통째로 차단됩니다. 스레드가 차단되면 드로잉 이벤트를 포함하여 
+모든 이벤트가 발송되지 않습니다. 사용자가 보기에는 애플리케이션이 
+중단된 것처럼 보입니다. 더 나쁜 경우, UI 스레드가 몇 초 이상 차단되어 있으면
+(현재 약 5초) 사용자에게 악명 높은 "<a href="http://developer.android.com/guide/practices/responsiveness.html">애플리케이션이 응답하지 
+않습니다</a>"(ANR) 대화가 표시됩니다. 그러면 사용자가 여러분의 애플리케이션을 종료 할 수도 있고, 불만족한 경우 앱을 
+제거할 수도 있습니다.</p>
+
+<p>또한, Andoid UI 도구 키트는 스레드로부터 안전하지 <em>않습니다</em>. 따라서 UI를 
+작업자 스레드에서 조작해서는 안 됩니다. 사용자 인터페이스 조작 작업은 모두 UI 
+스레드에서 해야만 합니다. 결론적으로, Android의 단일 스레드 모델에는 두 가지 단순한 규칙이 있습니다.</p>
+
+<ol>
+<li>UI 스레드를 차단하지 마십시오.
+<li>Ui 스레드 외부에서 Android UI 도구 키트에 액세스하지 마십시오.
+</ol>
+
+<h3 id="WorkerThreads">작업자 스레드</h3>
+
+<p>위에 설명한 단일 스레드 모델로 인해, 애플리케이션 UI의 반응성을 위해서는 
+UI 스레드를 차단하지 않는 것이 매우 중요합니다. 수행해야 할 작업이 있는데 
+이들이 즉각적인 조치를 요하지 않는 경우, 이런 작업은 반드시 별도의 스레드에서 수행해야 합니다("배경" 또는 
+"작업자" 스레드).</p>
+
+<p>예를 들어, 아래는 별도의 스레드에서 이미지를 다운로드하고 이를 
+{@link android.widget.ImageView}에 표시하는 클릭 수신기에 대한 몇 가지 코드입니다.</p>
+
+<pre>
+public void onClick(View v) {
+    new Thread(new Runnable() {
+        public void run() {
+            Bitmap b = loadImageFromNetwork("http://example.com/image.png");
+            mImageView.setImageBitmap(b);
+        }
+    }).start();
+}
+</pre>
+
+<p>처음에는 네트워크 작업을 처리하기 위한 새 스레드를 생성하므로 
+아무 문제 없이 작동하는 것처럼 보입니다. 하지만, 이것은 단일 스레드된 모델의 두 번째 규칙 즉, '<em>UI 스레드 외부에서 
+Android UI 도구 키트에 액세스하지 마세요.</em>'를 위반합니다. 이 샘플은 UI 스레드 대신 작업자 스레드에서 {@link
+android.widget.ImageView}를 수정합니다. 이렇게 되면 
+정의되지 않고 예기치 못한 동작이 발생하는 결과를 초래할 수 있고, 이는 추적하기 어려워 시간도 오래 걸립니다.</p>
+
+<p>이 문제를 해결하기 위해 Android는 다른 스레드에서 UI 스레드에 액세스하는 여러 가지 방식을
+제안합니다. 다음은 몇 가지 유용한 메서드 목록입니다.</p>
+
+<ul>
+<li>{@link android.app.Activity#runOnUiThread(java.lang.Runnable)
+Activity.runOnUiThread(Runnable)}</li>
+<li>{@link android.view.View#post(java.lang.Runnable) View.post(Runnable)}</li>
+<li>{@link android.view.View#postDelayed(java.lang.Runnable, long) View.postDelayed(Runnable,
+long)}</li>
+</ul>
+
+<p>예를 들어 위의 코드를 수정하려면 {@link
+android.view.View#post(java.lang.Runnable) View.post(Runnable)} 메서드를 사용하면 됩니다.</p>
+
+<pre>
+public void onClick(View v) {
+    new Thread(new Runnable() {
+        public void run() {
+            final Bitmap bitmap = loadImageFromNetwork("http://example.com/image.png");
+            mImageView.post(new Runnable() {
+                public void run() {
+                    mImageView.setImageBitmap(bitmap);
+                }
+            });
+        }
+    }).start();
+}
+</pre>
+
+<p>이 구현은 이제 스레드로부터 안전합니다. 네트워크 작업은 별도의 스레드에서 수행된 반면 
+{@link android.widget.ImageView}는 UI 스레드에서 조작되었기 때문입니다.</p>
+
+<p>그러나, 작업이 복잡해질수록 이런 종류의 코드가 더 복잡해질 수 있고 유지 관리하기 
+까다로워질 수 있습니다. 더 복잡한 상호 작용을 작업자 스레드로 처리하려면, 작업자 스레드에서 
+{@link android.os.Handler}를 사용하여 UI 스레드에서 전달 받은 메시지를 처리하는 방안을 
+고려해보십시오. 하지만 최선의 해결책은 {@link android.os.AsyncTask} 클래스를 확장하는 방법일 것입니다. 
+이것은 UI와 상호 작용해야 하는 작업자 스레드 작업의 실행을 단순화합니다.</p>
+
+
+<h4 id="AsyncTask">AsyncTask 사용</h4>
+
+<p>{@link android.os.AsyncTask}를 사용하면 사용자 인터페이스에서 비동기식 작업을 수행할 수 
+있게 해줍니다. 이것은 작업자 스레드에서 차단 작업을 수행하고 그런 다음 그 결과를 UI 스레드에 
+게시하며, 개발자가 직접 스레드 및/또는 처리기를 처리할 필요가 없습니다.</p>
+
+<p>이를 사용하려면 우선 {@link android.os.AsyncTask}를 하위 클래스로 한 다음 {@link
+android.os.AsyncTask#doInBackground doInBackground()} 콜백 메서드를 구현해야 합니다. 이것은 여러 가지 
+배경 스레드에서 실행됩니다. UI를 업데이트하려면 {@link
+android.os.AsyncTask#onPostExecute onPostExecute()}를 구현해야 합니다. 이는 {@link
+android.os.AsyncTask#doInBackground doInBackground()}로부터의 결과를 전달하며 UI 스레드에서 실행되므로, 
+안전하게 UI를 업데이트할 수 있습니다. 그런 다음 UI 스레드에서 {@link android.os.AsyncTask#execute execute()}를 
+호출하여 해당 작업을 실행하면 됩니다.</p>
+
+<p>예를 들어, 이런 방식으로 {@link android.os.AsyncTask}를 사용하여
+이전의 예시를 구현할 수 있습니다.</p>
+
+<pre>
+public void onClick(View v) {
+    new DownloadImageTask().execute("http://example.com/image.png");
+}
+
+private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
+    /** The system calls this to perform work in a worker thread and
+      * delivers it the parameters given to AsyncTask.execute() */
+    protected Bitmap doInBackground(String... urls) {
+        return loadImageFromNetwork(urls[0]);
+    }
+    
+    /** The system calls this to perform work in the UI thread and delivers
+      * the result from doInBackground() */
+    protected void onPostExecute(Bitmap result) {
+        mImageView.setImageBitmap(result);
+    }
+}
+</pre>
+
+<p>이제 UI는 안전하고 코드는 더욱 단순해졌습니다. 작업을 작업자 스레드에서 수행되어야 하는 
+부분과 UI 스레드에서 수행되어야 하는 부분으로 구분하기 때문입니다.</p>
+
+<p>이 클래스를 사용하는 법을 완전히 숙지하려면 {@link android.os.AsyncTask} 참조를 
+읽어보시는 것이 좋습니다. 개괄적인 작동 방식은 아래에 간략히 소개해 놓았습니다.</p>
+
+<ul>
+<li>매개 변수의 유형, 진행률 값과 작업의 최종 값을 제네릭을 사용하여 
+지정할 수 있습니다.</li>
+<li>메서드 {@link android.os.AsyncTask#doInBackground doInBackground()}는 작업자 스레드에서 자동으로
+실행됩니다.</li>
+<li>{@link android.os.AsyncTask#onPreExecute onPreExecute()}, {@link
+android.os.AsyncTask#onPostExecute onPostExecute()} 및 {@link
+android.os.AsyncTask#onProgressUpdate onProgressUpdate()}는 모두 UI 스레드에서 호출됩니다.</li>
+<li>{@link android.os.AsyncTask#doInBackground doInBackground()}가 반환한 값이 
+{@link android.os.AsyncTask#onPostExecute onPostExecute()}로 전송됩니다.</li>
+<li>언제든 {@link android.os.AsyncTask#publishProgress publishProgress()}를 {@link
+android.os.AsyncTask#doInBackground doInBackground()}에서 호출하여 UI 스레드에서 {@link
+android.os.AsyncTask#onProgressUpdate onProgressUpdate()}를 실행하도록 할 수 있습니다.</li>
+<li>모든 스레드에서 언제든 작업을 취소할 수 있습니다.</li>
+</ul>
+
+<p class="caution"><strong>주의:</strong> 작업자 스레드를 사용할 때 마주칠 수 있는 또 한 가지 문제는 
+<a href="{@docRoot}guide/topics/resources/runtime-changes.html">런타임 구성 변경</a>으로 인해 액티비티가 예기치 못하게 다시 시작되는 것입니다
+(예를 들어 사용자가 화면 방향을 바꾸는 경우). 이 경우 작업자 스레드를 소멸시킬 수 있습니다. 
+스레드가 재시작될 때 작업을 지속하는 방법과 액티비티가 제거되었을 때 작업을 적절히 취소하는 방법은
+<a href="http://code.google.com/p/shelves/">Shelves</a> 샘플 애플리케이션의 소스 코드를 참조하십시오.</p>
+
+
+<h3 id="ThreadSafe">스레드로부터 안전한 메서드</h3>
+
+<p> 어떤 경우에는 구현하는 메서드가 하나 이상의 스레드에서 호출되는 일도 있습니다. 따라서 
+이를 스레드로부터 안전하게 작성해야만 합니다. </p>
+
+<p>이것은 주로 원격으로 호출할 수 있는 메서드에 대해 참입니다. 예를 들어 <a href="{@docRoot}guide/components/bound-services.html">바인딩된 서비스</a> 내의 메서드 등이 해당됩니다. 
+{@link android.os.IBinder}에서 구현된 메서드가 
+{@link android.os.IBinder IBinder}가 실행되는 프로세스에서 호출될 경우, 해당 메서드는 발신자의 스레드에서 실행됩니다. 
+그러나 호출이 다른 프로세스에서 발생하면, 해당 메서드는 시스템이 
+{@link android.os.IBinder
+IBinder}와 같은 프로세스에 유지하는 스레드 풀에서 선택된 스레드에서 실행됩니다(프로세스의 UI 스레드에서 실행되지 않습니다).  예를 들어, 어느 서비스의 
+{@link android.app.Service#onBind onBind()} 메서드는 해당 서비스 
+프로세스의 UI 스레드에서 호출되고, {@link android.app.Service#onBind
+onBind()}가 반환하는 객체에서 구현된 메서드는(예: RPC 메서드를 구현하는 하위 클래스) 해당 풀 안의 여러 스레드에서 
+호출되게 됩니다. 서비스에 클라이언트가 하나 이상 있을 수 있으므로, 하나 이상의 풀이
+동시에 같은 {@link android.os.IBinder IBinder} 메서드에 참여할 수 있습니다. 그러므로 {@link android.os.IBinder
+IBinder} 메서드는 스레드로부터 안전하게 구현되어야 합니다.</p>
+
+<p> 마찬가지로 콘텐츠 제공자는 다른 프로세스에서 발생한 데이터 요청을 수신할 수 있습니다.
+{@link android.content.ContentResolver}와 {@link android.content.ContentProvider}
+클래스가 세부적인 프로세스 간 통신의 관리 방식을 숨길 수는 있지만, 이러한 요청에 응답하는 {@link
+android.content.ContentProvider} 메서드(&mdash;{@link
+android.content.ContentProvider#query query()}, {@link android.content.ContentProvider#insert
+insert()}, {@link android.content.ContentProvider#delete delete()}, {@link
+android.content.ContentProvider#update update()} 및 {@link android.content.ContentProvider#getType
+getType()} 메서드&mdash;)가 프로세스의 UI 스레드가 아니라
+콘텐츠 제공자 프로세스의 스레드 풀에서 호출됩니다.  이러한 메서드가 동시에 몇 개의 스레드에서 호출될 수 있으므로,
+스레드로부터 안전하게 구현되어야 합니다. </p>
+
+
+<h2 id="IPC">프로세스 간 통신</h2>
+
+<p>Android는 원격 프로시저 호출(RPC)을 사용한 프로세스 간 통신(IPC) 메커니즘을 제공합니다. 
+여기서 메서드는 액티비티나 다른 애플리케이션 구성 요소에 호출되지만 
+원격으로 (또 다른 프로세스에서) 실행되고, 결과는 모두 발신자에게 되돌려 
+보냅니다. 메서드 호출과 메서드의 데이터는 운영 체제가 이해할 수 있는 수준으로 분해되고, 
+로컬 프로세스와 주소 공간에서 원격 프로세스와 주소 공간으로 전송된 다음 
+다시 결합되어 여기서 호출에 다시 응답합니다.  그런 다음 반환 값이 
+반대 방향으로 전송됩니다.  Android가 이와 같은 IPC 트랜잭션을 수행하는 데 필요한 
+모든 코드를 제공하므로, 개발자는 그저 RPC 프로그래밍 인터페이스를 정의하고 구현하는 데에만 집중하면 됩니다. </p>
+
+<p>IPC를 수행하려면 애플리케이션이 반드시 서비스에 바인딩되어야만 하며, 이때 {@link
+android.content.Context#bindService bindService()}를 사용해야 합니다. 자세한 정보는 <a href="{@docRoot}guide/components/services.html">서비스</a> 개발자 가이드를 참조하십시오.</p>
+
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For information about how to perform work in the background for an indefinite period of time
+(without a user interface), continue with the <b><a
+href="{@docRoot}guide/components/services.html">Services</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/ko/guide/components/recents.jd b/docs/html-intl/intl/ko/guide/components/recents.jd
new file mode 100644
index 0000000..cba3c45
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/components/recents.jd
@@ -0,0 +1,256 @@
+page.title=개요 화면
+page.tags="recents","overview"
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>이 문서의 내용</h2>
+  <ol>
+    <li><a href="#adding">개요 화면에 작업 추가</a>
+      <ol>
+        <li><a href="#flag-new-doc">작업 추가에 인텐트 플래그 사용</a></li>
+        <li><a href="#attr-doclaunch">작업 추가에 액티비티 특성 사용</a></li>
+      </ol>
+    </li>
+    <li><a href="#removing">작업 제거</a>
+      <ol>
+        <li><a href="#apptask-remove">작업 제거에 AppTask 클래스 사용</a></li>
+        <li><a href="#retain-finished">완료된 작업 보존</a></li>
+      </ol>
+    </li>
+  </ol>
+
+  <h2>Key 클래스</h2>
+  <ol>
+    <li>{@link android.app.ActivityManager.AppTask}</li>
+    <li>{@link android.content.Intent}</li>
+  </ol>
+
+  <h2>샘플 코드</h2>
+  <ol>
+    <li><a href="{@docRoot}samples/DocumentCentricApps/index.html">문서 중심 앱</a></li>
+  </ol>
+
+</div>
+</div>
+
+<p>개요 화면(다른 말로 최근 사용 화면, 최근 작업 목록 또는 최근 앱이라고도 함)은
+시스템 수준 UI로, 최근에 액세스한 <a href="{@docRoot}guide/components/activities.html">
+액티비티</a> 및 <a href="{@docRoot}guide/components/tasks-and-back-stack.html">작업</a>을 목록으로 나열한 것입니다. 사용자는 
+목록을 가로질러 이동하며 작업을 선택해서 재개할 수도 있고, 아니면 
+목록에서 한 작업을 스와이프하여 밀어내어 목록에서 제거할 수도 있습니다. Android 5.0 릴리스(API 레벨 21)의 경우, 같은 액티비티의 여러 인스턴스에 
+각기 다른 문서가 담겨 있는 경우 이들이 개요 화면에 작업으로 나타날 수 있습니다. 예를 들어 
+Google Drive에 여러 개의 Google 문서 각각에 대한 작업이 있을 수 있습니다. 각 문서는 개요 화면에 하나의 
+작업으로 나타납니다.</p>
+
+<img src="{@docRoot}images/components/recents.png" alt="" width="284" />
+<p class="img-caption"><strong>그림 1.</strong> 세 개의 Google Drive 문서가 각기 별도의 
+작업을 나타내는 모습을 표시한 개요 화면입니다.</p>
+
+<p>보통은 개요 화면에 작업과 액티비티가 어떻게 표현될지는 시스템이 
+정의하도록 두어야 합니다. 이 행동을 개발자가 수정할 필요도 없습니다. 
+하지만, 개요 화면에 액티비티가 언제, 어떻게 나타날지는 앱이 결정할 수 있습니다. 
+{@link android.app.ActivityManager.AppTask} 클래스를 사용하면 작업을 관리할 수 있게 해주고, 
+{@link android.content.Intent} 클래스의 액티비티 플래그를 사용하면 개요 화면에서 액티비티가 추가되거나 제거되는 시점을 
+지정할 수 있습니다. 또한, <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
+&lt;activity&gt;</a></code> 특성을 사용하면 매니페스트에서의 동작을 설정할 수 있습니다.</p>
+
+<h2 id="adding">개요 화면에 작업 추가</h2>
+
+<p>{@link android.content.Intent} 클래스의 플래그를 사용하여 작업을 추가하면 
+개요 화면에서 문서가 열리거나 다시 열리는 시점과 방법을 보다 철저히 통제할 수 있습니다. 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+ 특성을 사용하는 경우, 문서를 항상 새 작업에서 여는 방법과 기존 작업을 해당 문서에 다시 사용하는 방법 중에서 
+선택할 수 있습니다.</p>
+
+<h3 id="flag-new-doc">작업 추가에 인텐트 플래그 사용</h3>
+
+<p>액티비티를 위해 새 문서를 생성하는 경우, 
+{@link android.app.ActivityManager.AppTask} 클래스의 
+{@link android.app.ActivityManager.AppTask#startActivity(android.content.Context, android.content.Intent, android.os.Bundle) startActivity()}
+ 메서드를 호출하고, 이것을 액티비티를 시작하는 인텐트에 전달하면 됩니다. 논리적인 중단을 삽입하여 시스템이 개요 화면에서 액티비티를 
+새 작업으로 처리하도록 하려면, {@link android.content.Intent}의 
+{@link android.content.Intent#addFlags(int) addFlags()} 메서드에 있는 {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} 
+플래그를 전달하여 액티비티를 시작하도록 합니다.</p>
+
+<p class="note"><strong>참고:</strong> {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+플래그가 {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET} 플래그를 
+대체합니다. 이것은 Android 5.0(API 레벨 21)부터 사용이 중단되었습니다.</p>
+
+<p>새 문서를 생성하면서 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 플래그를 설정하는 경우, 
+시스템은 항상 대상 액티비티를 루트로 하여 새 작업을 만듭니다. 
+이렇게 설정하면 같은 문서를 하나 이상의 작업에서 열 수 있습니다. 다음 코드는 기본 액티비티가 이 작업을 수행하는 방법을 
+보여줍니다.</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+DocumentCentricActivity.java</a></p>
+<pre>
+public void createNewDocument(View view) {
+      final Intent newDocumentIntent = newDocumentIntent();
+      if (useMultipleTasks) {
+          newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
+      }
+      startActivity(newDocumentIntent);
+  }
+
+  private Intent newDocumentIntent() {
+      boolean useMultipleTasks = mCheckbox.isChecked();
+      final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
+      newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
+      newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());
+      return newDocumentIntent;
+  }
+
+  private static int incrementAndGet() {
+      Log.d(TAG, "incrementAndGet(): " + mDocumentCounter);
+      return mDocumentCounter++;
+  }
+}
+</pre>
+
+<p class="note"><strong>참고:</strong> {@code FLAG_ACTIVITY_NEW_DOCUMENT}
+ 플래그로 시작된 액티비티의 경우, 반드시 매니페스트에 {@code android:launchMode="standard"} 특성 값(기본)이 설정되어 
+있어야 합니다.</p>
+
+<p>기본 액티비티가 새 액티비티를 시작하면 시스템은 기존의 작업을 검색하여 그 중 
+해당 액티비티에 대한 인텐트 구성 요소 이름과 인텐트 데이터와 일치하는 인텐트를 가진 작업을 찾습니다. 그러한 작업을 
+찾을 수 없거나 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}
+ 플래그에 들어 있는 인텐트를 찾을 수 없는 경우, 해당 액티비티를 루트로 하여 새 작업이 생성됩니다. 원하는 항목을 찾으면, 시스템은 해당 작업을 전경으로 가지고 와 
+새 인텐트를 {@link android.app.Activity#onNewIntent onNewIntent()}에 전달합니다. 
+새 액티비티가 인텐트를 받아 개요 화면에서 새 문서를 생성하며, 이는 다음 예시에 나타낸 
+것과 같습니다.</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+NewDocumentActivity.java</a></p>
+<pre>
+&#64;Override
+protected void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_new_document);
+    mDocumentCount = getIntent()
+            .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0);
+    mDocumentCounterTextView = (TextView) findViewById(
+            R.id.hello_new_document_text_view);
+    setDocumentCounterText(R.string.hello_new_document_counter);
+}
+
+&#64;Override
+protected void onNewIntent(Intent intent) {
+    super.onNewIntent(intent);
+    /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this activity
+    is reused to create a new document.
+     */
+    setDocumentCounterText(R.string.reusing_document_counter);
+}
+</pre>
+
+
+<h3 id="#attr-doclaunch">작업 추가에 액티비티 특성 사용</h3>
+
+<p>액티비티는 자신의 매니페스트에 새 작업을 시작할 때는 항상 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+ 특성, <a href="{@docRoot}guide/topics/manifest/activity-element.html#dlmode">
+{@code android:documentLaunchMode}</a>를 사용한다고 나타낼 수도 있습니다. 이 특성에는 네 가지 값이 있어 사용자가 애플리케이션으로 문서를 열면 
+다음과 같은 효과를 발생시킵니다.</p>
+
+<dl>
+  <dt>"{@code intoExisting}"</dt>
+  <dd>액티비티가 문서에 대해 기존의 작업을 재사용합니다. 이것은 
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} 플래그를 설정할 때 
+{@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 플래그 <em>없이</em> 설정하는 것과 같습니다. 
+이는 위의 <a href="#flag-new-doc">작업 추가에 인텐트 플래그 사용</a>에서 설명한 것과 같습니다.</dd>
+
+  <dt>"{@code always}"</dt>
+  <dd>액티비티가 문서에 대해 새 작업을 생성하며, 이는 문서가 이미 열려 있는 경우라도 마찬가지입니다. 이 값을 
+사용하는 것은 {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+ 및 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 플래그를 둘 다 설정하는 것과 같습니다.</dd>
+
+  <dt>"{@code none”}"</dt>
+  <dd>액티비티가 문서에 대해 새 작업을 생성하지 않습니다. 개요 화면은 액티비티를 기본 상태에서와 
+같이 다룹니다. 즉 앱에 대한 하나의 작업을 표시하며, 이때 사용자가 
+마지막으로 호출한 작업이 무엇이든 관계 없이 그 작업에서부터 재개합니다.</dd>
+
+  <dt>"{@code never}"</dt>
+  <dd>액티비티가 문서에 대해 새 작업을 생성하지 않습니다. 이 값을 설정하면 
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+ 및 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 플래그의 행동을 
+재정의합니다(이들 중 하나가 인텐트에서 설정되어 있는 경우). 개요 화면은 앱에 대한 하나의 작업을 표시하고, 
+이것이 사용자가 마지막으로 호출한 액티비티가 무엇이든 그것부터 재개합니다.</dd>
+</dl>
+
+<p class="note"><strong>참고:</strong> {@code none} 및 {@code never}를 제외한 다른 값의 경우, 
+액티비티를 {@code launchMode="standard"}로 정의해야 합니다. 이 특성을 지정하지 않으면 
+{@code documentLaunchMode="none"}이 사용됩니다.</p>
+
+<h2 id="removing">작업 제거</h2>
+
+<p>기본적으로 문서 작업은 해당되는 액티비티가 완료되면 자동으로 개요 화면에서 
+제거됩니다. 이 행동을 재정의하려면 {@link android.app.ActivityManager.AppTask} 클래스를 사용합니다. 이때 
+{@link android.content.Intent} 플래그 또는 <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
+&lt;activity&gt;</a></code> 특성을 함께 사용하십시오.</p>
+
+<p>개요 화면에서 작업을 완전히 제외하려면 언제든 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+특성, <a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">
+{@code android:excludeFromRecents}</a>를 {@code true}로 설정합니다.</p>
+
+<p>개요 화면에서 앱이 포함할 수 있는 작업의 최대 개수를 설정하려면 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+ 특성 <a href="{@docRoot}guide/topics/manifest/activity-element.html#maxrecents">{@code android:maxRecents}
+</a>를 정수 값으로 설정합니다. 기본은 16개입니다. 작업의 최대 대수에 도달하면 가장 예전에 사용된 작업이 개요 화면에서 
+제거됩니다. {@code android:maxRecents} 최대값은 
+50입니다(메모리 용량이 적은 기기에서는 25). 1 미만의 값은 유효하지 않습니다.</p>
+
+<h3 id="#apptask-remove">작업 제거에 AppTask 클래스 사용</h3>
+
+<p>개요 화면에서 새 작업을 생성하는 액티비티에서는 작업을 언제 제거할 것인지와 
+그와 관련된 모든 액티비티를 언제 완료할 것인지 지정할 수 있습니다. 
+{@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()} 메서드를 호출하면 됩니다.</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+NewDocumentActivity.java</a></p>
+<pre>
+public void onRemoveFromRecents(View view) {
+    // The document is no longer needed; remove its task.
+    finishAndRemoveTask();
+}
+</pre>
+
+<p class="note"><strong>참고:</strong> 
+{@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()} 메서드를 
+사용하면 {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} 태그 사용을 재정의합니다. 
+이 내용은 아래에서 설명합니다.</p>
+
+<h3 id="#retain-finished">완료된 작업 보존</h3>
+
+<p>작업을 개요 화면에 보존하려면(액티비티가 완료되었더라도), 
+액티비티를 시작하는 인텐트의 {@link android.content.Intent#addFlags(int) addFlags()} 메서드에 있는 
+{@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} 플래그를 전달합니다.</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+DocumentCentricActivity.java</a></p>
+<pre>
+private Intent newDocumentIntent() {
+    final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
+    newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
+      android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS);
+    newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());
+    return newDocumentIntent;
+}
+</pre>
+
+<p>같은 효과를 얻기 위해 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+ 특성 <a href="{@docRoot}guide/topics/manifest/activity-element.html#autoremrecents">
+{@code android:autoRemoveFromRecents}</a>를 {@code false}로 설정해도 됩니다. 기본 값은 문서 액티비티의 경우 {@code true}
+이고, 일반 액티비티의 경우 {@code false}입니다. 이 특성을 사용하면 이전에 논한 것과 같이 
+{@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} 플래그를 재정의하게 됩니다.</p>
+
+
+
+
+
+
+
diff --git a/docs/html-intl/intl/ko/guide/components/services.jd b/docs/html-intl/intl/ko/guide/components/services.jd
new file mode 100644
index 0000000..fb95ea5
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/components/services.jd
@@ -0,0 +1,813 @@
+page.title=서비스
+@jd:body
+
+<div id="qv-wrapper">
+<ol id="qv">
+<h2>이 문서의 내용</h2>
+<ol>
+<li><a href="#Basics">기본 정보</a></li>
+<ol>
+  <li><a href="#Declaring">매니페스트에서 서비스 선언하기</a></li>
+</ol>
+<li><a href="#CreatingAService">시작된 서비스 생성하기</a>
+  <ol>
+    <li><a href="#ExtendingIntentService">IntentService 클래스 확장하기</a></li>
+    <li><a href="#ExtendingService">서비스 클래스 확장하기</a></li>
+    <li><a href="#StartingAService">서비스 시작</a></li>
+    <li><a href="#Stopping">서비스 중단</a></li>
+  </ol>
+</li>
+<li><a href="#CreatingBoundService">바인딩된 서비스 생성</a></li>
+<li><a href="#Notifications">사용자에게 알림 전송</a></li>
+<li><a href="#Foreground">전경에서 서비스 실행하기</a></li>
+<li><a href="#Lifecycle">서비스 수명 주기 관리</a>
+<ol>
+  <li><a href="#LifecycleCallbacks">수명 주기 콜백 구현하기</a></li>
+</ol>
+</li>
+</ol>
+
+<h2>Key 클래스</h2>
+<ol>
+  <li>{@link android.app.Service}</li>
+  <li>{@link android.app.IntentService}</li>
+</ol>
+
+<h2>샘플</h2>
+<ol>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.html">{@code
+      ServiceStartArguments}</a></li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+      LocalService}</a></li>
+</ol>
+
+<h2>참고 항목</h2>
+<ol>
+<li><a href="{@docRoot}guide/components/bound-services.html">바인딩된 서비스</a></li>
+</ol>
+
+</div>
+
+
+<p>{@link android.app.Service}는 배경에서 오래 실행되는 작업을 
+수행할 수 있는 애플리케이션 구성 요소이며 사용자 인터페이스를 제공하지 않습니다. 또 다른 
+애플리케이션 구성 요소가 서비스를 시작할 수 있으며, 이는 사용자가 또 다른 
+애플리케이션으로 전환하더라도 배경에서 계속해서 실행됩니다. 이외에도, 구성 요소를 서비스에 바인딩하여 
+서비스와 상호 작용할 수 있으며, 심지어는 프로세스 간 통신(IPC)도 수행할 수 있습니다. 예를 들어 한 서비스는 
+네트워크 트랜잭션을 처리하고, 음악을 재생하고 파일 I/O를 수행하거나 콘텐츠 제공자와 상호 작용할 수 있으며 
+이 모든 것을 배경에서 수행할 수 있습니다.</p>
+
+<p>서비스는 본질적으로 두 가지 형식을 취합니다.</p>
+
+<dl>
+  <dt>시작됨</dt>
+  <dd>서비스가 "시작된" 상태가 되려면 애플리케이션 구성 요소(예: 액티비티)가 
+{@link android.content.Context#startService startService()}를 호출하여 시작하면 됩니다. 서비스는 한 번 시작되고 나면 
+배경에서 무기한으로 실행될 수 있으며, 이는 해당 서비스를 시작한 구성 요소가 소멸되었더라도 무관합니다. 보통, 
+시작된 서비스는 한 작업을 수행하고 결과를 발신자에게 반환하지 않습니다.
+예를 들어 네트워크에서 파일을 다운로드하거나 업로드할 수 있습니다. 작업을 완료하면, 해당 서비스는 
+알아서 중단되는 것이 정상입니다.</dd>
+  <dt>바인딩됨</dt>
+  <dd>서비스가 "바인딩된" 상태가 되려면 애플리케이션 구성 요소가 {@link
+android.content.Context#bindService bindService()}를 사용하여 해당 서비스에 바인딩되면 됩니다. 바인딩된 서비스는 클라이언트-서버 
+인터페이스를 제공하여 구성 요소가 서비스와 상호 작용할 수 있도록 해주며, 결과를 가져올 수도 있고 심지어 
+이와 같은 작업을 여러 프로세스에 걸쳐 프로세스 간 통신(IPC)으로 수행할 수도 있습니다. 바인딩된 서비스는 또 다른 애플리케이션 구성 요소가 
+이에 바인딩되어 있는 경우에만 실행됩니다. 여러 개의 구성 요소가 서비스에 한꺼번에 바인딩될 수 있지만, 
+이 모든 것이 바인딩을 해제하면 해당 서비스는 소멸됩니다.</dd>
+</dl>
+
+<p>이 문서는 주로 이러한 두 가지 유형의 서비스를 따로따로 논하지만, 서비스는 
+두 가지 방식 모두로 작동할 수 있습니다. 즉 서비스가 시작될 수도 있고(나아가 무기한으로 실행되고) 바인딩도 허용할 수 있다는 뜻입니다.
+이는 그저 두어 가지 콜백 메서드의 구현 여부에 달린 문제입니다. {@link
+android.app.Service#onStartCommand onStartCommand()}를 사용하면 구성 요소가 서비스를 시작할 수 있게 허용하고, {@link
+android.app.Service#onBind onBind()}를 사용하면 바인딩을 허용합니다.</p>
+
+<p>애플리케이션이 시작되었든, 바인딩되었든 아니면 양쪽 모두이든 모든 애플리케이션 구성 요소가
+해당 서비스를 사용할 수 있으며(별도의 애플리케이션에서라도), 이는 어느 구성 요소든 액티비티를 
+사용할 수 있는 것과 같습니다. 이를 {@link android.content.Intent}로 시작하면 됩니다. 그러나, 
+매니페스트에서 서비스를 비공개로 선언하고 다른 애플리케이션으로부터의 액세스를 차단할 수도 있습니다. 이것은 
+<a href="#Declaring">매니페스트에서 서비스 
+선언하기</a>에 관한 섹션에서 더 자세히 이야기합니다.</p>
+
+<p class="caution"><strong>주의:</strong> 서비스는 자신의 호스팅 프로세스의 
+기본 스레드에서 실행됩니다. 서비스는 자신의 스레드를 직접 생성하지 <strong>않으며</strong>, 
+별도의 프로세스에서 실행되지도 <strong>않습니다</strong>(별도로 지정하는 경우는 예외). 이것은 즉, 
+서비스가 CPU 집약적인 작업을 수행할 예정이거나 차단적인 작업을 수행할 예정인 경우(예를 들어 MP3 
+재생 또는 네트워킹 등), 서비스 내에 새 스레드를 생성하여 해당 작업을 수행하도록 해야 한다는 뜻입니다. 별도의 스레드를 사용하면 
+'애플리케이션이 응답하지 않습니다(ANR)' 오류가 일어날 위험을 줄일 수 있으며 
+애플리케이션의 기본 스레드는 액티비티와 사용자 상호 작용 전용으로 유지될 수 있습니다.</p>
+
+
+<h2 id="Basics">기본 정보</h2>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>서비스와 스레드 중 어느 것을 사용해야 할까요?</h3>
+  <p>서비스는 그저 배경에서 실행될 수 있는 구성 요소일 뿐입니다. 이는 사용자가 
+애플리케이션과 상호 작용하지 않아도 관계 없이 해당됩니다. 따라서, 서비스를 생성하는 것은 꼭 그것이 필요할 때만으로 국한되어야 
+합니다.</p>
+  <p>기본 스레드 외부에서 작업을 수행해야 하지만 사용자가 애플리케이션과 상호 작용 중인 
+동안에만 수행하면 되는 경우라면, 서비스가 아니라 그 대신 새 스레드를 생성해야 합니다. 예를 들어 
+액티비티가 실행되는 중에만 음악을 재생하고자 하는 경우, 
+{@link android.app.Activity#onCreate onCreate()} 안에 스레드를 생성하고 이를 {@link
+android.app.Activity#onStart onStart()}에서 실행하기 시작한 다음 {@link android.app.Activity#onStop
+onStop()}에서 중단하면 됩니다. 또한, 기존의 {@link java.lang.Thread} 클래스 대신 
+{@link android.os.AsyncTask} 또는 {@link android.os.HandlerThread}를 사용하는 방안도 고려하십시오. 스레드에 관한 자세한 정보는 <a href="{@docRoot}guide/components/processes-and-threads.html#Threads">프로세스 및 
+스레딩</a> 문서를 참조하십시오.</p>
+  <p>서비스를 사용하는 경우 기본적으로 애플리케이션의 기본 스레드에서 
+계속 실행되므로 서비스가 집약적이거나 차단적인 작업을 수행하는 경우 여전히 서비스 내에 
+새 스레드를 생성해야 한다는 점을 명심하십시오.</p>
+</div>
+</div>
+
+<p>서비스를 생성하려면 {@link android.app.Service}의 하위 클래스를 생성해야 합니다(아니면 이의 
+기존 하위 클래스 중 하나). 구현에서는 서비스 수명 주기의 주요 측면을 처리하는 콜백 메서드를 
+몇 가지 재정의해야 하며 서비스에 바인딩할 구성 요소에 대한 메커니즘을 
+제공해야 합니다(해당되는 경우). 재정의해야 하는 가장 중요한 콜백 메서드는 다음과 같습니다.</p>
+
+<dl>
+  <dt>{@link android.app.Service#onStartCommand onStartCommand()}</dt>
+    <dd>시스템이 이 메서드를 호출하는 것은 또 다른 구성 요소(예: 액티비티)가 서비스를 
+시작하도록 요청하는 경우입니다. 이때 {@link android.content.Context#startService
+startService()}를 호출하는 방법을 씁니다. 이 메서드가 실행되면 서비스가 시작되고 배경에서 무기한으로 실행될 수 
+있습니다. 이것을 구성하면 서비스의 작업이 완료되었을 때 해당 서비스를 중단하는 것은 
+개발자 본인의 책임입니다. 이때 {@link android.app.Service#stopSelf stopSelf()} 또는 {@link
+android.content.Context#stopService stopService()}를 호출하면 됩니다 (바인딩만 제공하고자 하는 경우, 이 메서드를 구현하지 
+않아도 됩니다).</dd>
+  <dt>{@link android.app.Service#onBind onBind()}</dt>
+    <dd>시스템이 이 메서드를 호출하는 것은 또 다른 구성 요소가 해당 서비스에 바인딩되고자 하는 경우
+(예를 들어 RPC를 수행하기 위해)입니다. 이때 {@link android.content.Context#bindService
+bindService()}를 호출하는 방법을 씁니다. 이 메서드를 구현할 때에는 클라이언트가 서비스와 통신을 주고받기 위해 사용할 
+인터페이스를 제공해야 합니다. 이때 {@link android.os.IBinder}를 반환하면 됩니다. 이 메서드는 항상 
+구현해야 하지만, 바인딩을 허용하지 않고자 하면 null을 반환해야 합니다.</dd>
+  <dt>{@link android.app.Service#onCreate()}</dt>
+    <dd>시스템이 이 메서드를 호출하는 것은 서비스가 처음 생성되어 일회성 설정 
+절차를 수행하는 경우입니다({@link android.app.Service#onStartCommand onStartCommand()} 또는 
+{@link android.app.Service#onBind onBind()}를 호출하기 전에). 서비스가 이미 실행 중인 경우, 이 메서드는 호출되지 
+않습니다.</dd>
+  <dt>{@link android.app.Service#onDestroy()}</dt>
+    <dd>시스템이 이 메서드를 호출하는 것은 해당 서비스를 더 이상 사용하지 않고 소멸시키는 경우입니다. 
+서비스에 이것을 구현해야 스레드, 등록된 각종 수신기(listener, receiver) 등 
+모든 리소스를 정리할 수 있습니다. 이것이 서비스가 수신하는 마지막 호출입니다.</dd>
+</dl>
+
+<p>한 구성 요소가 {@link
+android.content.Context#startService startService()}를 호출하여 서비스를 시작하면({@link
+android.app.Service#onStartCommand onStartCommand()}로의 호출을 초래함), 해당 서비스는 
+알아서 {@link android.app.Service#stopSelf()}로 스스로를 중단할 때까지 또는 
+또 다른 구성 요소가 {@link android.content.Context#stopService stopService()}를 호출하여 서비스를 중단시킬 때까지 실행 중인 상태로 유지됩니다.</p>
+
+<p>한 구성 요소가 
+{@link android.content.Context#bindService bindService()}를 호출하여 서비스를 생성하는 경우(그리고 {@link
+android.app.Service#onStartCommand onStartCommand()}를 호출하지 <em>않은</em> 경우), 해당 서비스는 
+해당 구성 요소가 바인딩되어 있는 경우에만 실행됩니다. 서비스가 모든 클라이언트로부터 바인딩 해제되면 시스템이 이를 
+소멸시킵니다.</p>
+
+<p>Android 시스템이 서비스를 강제 중단시키는 것은 메모리가 부족하여 사용자가 초점을 집중하고 있는 
+액티비티를 위해 시스템 리소스를 회복해야만 하는 경우로만 국한됩니다. 해당 서비스가 사용자의 주목을 
+끌고 있는 액티비티에 바인딩되어 있다면 중단될 가능성이 낮고, 서비스가 <a href="#Foreground">전경에서 실행</a>된다고 선언된 경우(나중에 자세히 논함), 거의 절대 중단되지 않습니다. 
+그렇지 않으면, 서비스가 시작되었고 오랫동안 실행되는 경우 
+시간이 지나면서 시스템이 배경 작업 목록에서의 이 서비스의 위치를 점점 낮추고 
+서비스는 중단되기 매우 쉬워집니다. 서비스가 시작되었다면 이를 시스템에 의한 재시작을 정상적으로 
+처리하도록 디자인해야 합니다. 시스템이 서비스를 중단시키는 경우, 리소스를 다시 사용할 수 있게 되면 
+시스템이 가능한 한 빨리 이를 다시 시작합니다(다만 이것은 개발자가 {@link
+android.app.Service#onStartCommand onStartCommand()}에서 반환하는 값에도 좌우됩니다. 이 내용은 나중에 논합니다). 시스템이 서비스를 
+소멸시킬 수 있는 경우에 대한 자세한 정보는 <a href="{@docRoot}guide/components/processes-and-threads.html">프로세스 및 스레딩</a>
+문서를 참조하십시오.</p>
+
+<p>다음 섹션에서는 각 유형의 서비스를 생성하는 방법과 다른 애플리케이션 구성 요소에서 
+이를 사용하는 방법을 배우게 됩니다.</p>
+
+
+
+<h3 id="Declaring">매니페스트에서 서비스 선언하기</h3>
+
+<p>액티비티(및 다른 구성 요소)와 마찬가지로, 서비스는 모두 애플리케이션의 매니페스트 
+파일에서 선언해야 합니다.</p>
+
+<p>서비스를 선언하려면 <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> 요소를 
+<a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>
+ 요소의 하위로 추가하면 됩니다. 예:</p>
+
+<pre>
+&lt;manifest ... &gt;
+  ...
+  &lt;application ... &gt;
+      &lt;service android:name=".ExampleService" /&gt;
+      ...
+  &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+
+<p>매니페스트에서 서비스를 선언하는 데 대한 자세한 정보는 <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> 
+요소 참조를 확인하십시오.</p>
+
+<p><a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> 요소에 포함시킬 수 있는 다른 속성도 있습니다. 
+이를 포함시켜 서비스를 시작하는 데 필요한 권한과 서비스가 실행되어야 하는 프로세스 등의 
+속성을 정의할 수 있습니다. <a href="{@docRoot}guide/topics/manifest/service-element.html#nm">{@code android:name}</a>
+속성이 유일한 필수 속성입니다. 이것은 서비스의 클래스 이름을 나타냅니다. 일단 애플리케이션을 
+게시하고 나면 이 이름을 변경해서는 안 됩니다. 이름을 변경하면 
+서비스를 시작하거나 바인딩할 명시적 인텐트에 대한 종속성으로 인해 코드를 단절시킬 위험이 있기 때문입니다(블로그 게시물의 <a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">
+바꿀 수 없는 항목</a>을 참조하십시오).
+
+<p>앱의 보안을 보장하려면 <strong>
+{@link android.app.Service}을 시작하거나 바인딩할 때 항상 명시적 인텐트를 사용하고</strong> 서비스에 대한 인텐트 필터는 선언하지 마십시오. 어느 
+서비스를 시작할지 어느 정도 모호성을 허용하는 것이 중요한 경우, 서비스에 대해 
+인텐트 필터를 제공하고 구성 요소 이름을 {@link
+android.content.Intent}에서 배제할 수 있지만, 그러면 해당 인텐트에 대한 패키지를 {@link
+android.content.Intent#setPackage setPackage()}로 설정하여 대상 서비스에 대해 충분한 명확화를 
+제공하도록 해야 합니다.</p>
+
+<p>이외에도 서비스를 본인의 앱에만 사용 가능하도록 보장할 수도 있습니다. 
+<a href="{@docRoot}guide/topics/manifest/service-element.html#exported">{@code android:exported}</a>
+ 속성을 포함시킨 뒤 이를 {@code "false"}로 설정하면 됩니다. 이렇게 하면 다른 앱이 여러분의 서비스를 시작하지 못하도록 효과적으로 방지해주며, 
+이는 명시적 인텐트를 사용하는 경우에도 문제 없이 적용됩니다.</p>
+
+
+
+
+<h2 id="CreatingStartedService">시작된 서비스 생성하기</h2>
+
+<p>시작된 서비스란 다른 구성 요소가 {@link
+android.content.Context#startService startService()}를 호출하여 시작하고, 그 결과 서비스의 
+{@link android.app.Service#onStartCommand onStartCommand()} 메서드를 호출하는 결과를 초래한 것을 말합니다.</p>
+
+<p>서비스가 시작되면 이를 시작한 구성 요소와 독립된 자신만의 
+수명 주기를 가지며 해당 서비스는 배경에서 무기한으로 실행될 수 있습니다. 이는 해당 서비스를 
+시작한 구성 요소가 소멸되었더라도 무관합니다. 따라서, 서비스는 작업이 완료되면 
+{@link android.app.Service#stopSelf stopSelf()}를 호출하여 스스로 알아서 중단되는 것이 정상이며 아니면 다른 구성 요소가 
+{@link android.content.Context#stopService stopService()}를 호출하여 중단시킬 수도 있습니다.</p>
+
+<p>애플리케이션 구성 요소(예: 액티비티)가 서비스를 시작하려면 {@link
+android.content.Context#startService startService()}를 호출하고, {@link android.content.Intent}를 
+전달하면 됩니다. 이것은 서비스를 나타내고 서비스가 사용할 모든 데이터를 포함합니다. 서비스는 이 
+{@link android.content.Intent}를 {@link android.app.Service#onStartCommand
+onStartCommand()} 메서드에서 수신합니다.</p>
+
+<p>예를 들어 어느 액티비티가 온라인 데이터베이스에 데이터를 약간 저장해야 한다고 가정합니다. 액티비티가 
+동반자 서비스를 시작하여 저장할 데이터를 이에 전달할 수 있습니다. 이때 인텐트를 {@link
+android.content.Context#startService startService()}에 전달하면 됩니다. 서비스는 이 인텐트를 {@link
+android.app.Service#onStartCommand onStartCommand()}에서 수신하고 인터넷에 연결한 다음 데이터베이스 
+트랜잭션을 수행합니다. 작업을 완료하면, 해당 서비스는 알아서 스스로 중단되고 
+소멸됩니다.</p>
+
+<p class="caution"><strong>주의:</strong> 서비스는 기본적으로 자신이 선언된 애플리케이션의 같은 
+프로세스에서 실행되기도 하고 해당 애플리케이션의 기본 스레드에서 실행되기도 합니다. 따라서, 사용자가 
+같은 애플리케이션의 액티비티와 상호 작용하는 동안 서비스가 집약적이거나 차단적인 작업을 수행하는 경우, 
+해당 서비스 때문에 액티비티 성능이 느려지게 됩니다. 애플리케이션 성능에 영향을 미치는 것을 방지하려면, 
+서비스 내에서 새 스레드를 시작해야 합니다.</p>
+
+<p>기존에는 시작된 서비스를 생성하기 위해 확장할 수 있는 클래스가 두 개 있었습니다.</p>
+<dl>
+  <dt>{@link android.app.Service}</dt>
+  <dd>이것이 모든 서비스의 기본 클래스입니다. 이 클래스를 확장하는 경우, 서비스의 모든 작업을 수행할 
+새 스레드를 만드는 것이 중요합니다. 서비스가 기본적으로 애플리케이션의 기본 스레드를 사용하기 
+때문인데, 이로 인해 애플리케이션이 실행 중인 모든 액티비티의 성능이 
+느려질 수 있기 때문입니다.</dd>
+  <dt>{@link android.app.IntentService}</dt>
+  <dd>이것은 {@link android.app.Service}의 하위 클래스로, 작업자 스레드를 
+사용하여 모든 시작 요청을 처리하되 한 번에 하나씩 처리합니다. 서비스가 여러 개의 요청을 
+동시에 처리하지 않아도 되는 경우 이것이 최선의 옵션입니다. 해야 할 일은 {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}를 구현하는 것뿐으로, 이것이 각 시작 요청에 대한 인텐트를 수신하여 
+개발자는 배경 작업을 수행할 수 있습니다.</dd>
+</dl>
+
+<p>다음 섹션에서는 이와 같은 클래스 중 하나를 사용하여 서비스를 구현하는 방법을 
+설명합니다.</p>
+
+
+<h3 id="ExtendingIntentService">IntentService 클래스 확장하기</h3>
+
+<p>대부분의 시작된 서비스는 여러 개의 요청을 동시에 처리하지 않아도 되기 때문에
+(이는 사실 위험한 다중 스레딩 시나리오일 수 있습니다), 서비스를 구현할 때에는 
+{@link android.app.IntentService} 클래스를 사용하는 것이 최선의 방안일 것입니다.</p>
+
+<p>{@link android.app.IntentService}는 다음과 같은 작업을 수행합니다.</p>
+
+<ul>
+  <li>애플리케이션의 기본 스레드와는 별도로 {@link
+android.app.Service#onStartCommand onStartCommand()}에 전달된 모든 인텐트를 실행하는 기본 작업자 스레드를 
+생성합니다.</li>
+  <li>한 번에 인텐트를 하나씩 {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} 구현에 전달하는 작업 대기열을 생성하므로 다중 스레딩에 대해 염려할 필요가 
+전혀 없습니다.</li>
+  <li>시작 요청이 모두 처리된 후 서비스를 중단하므로 개발자가 
+{@link android.app.Service#stopSelf}를 호출할 필요가 전혀 없습니다.</li>
+  <li>{@link android.app.IntentService#onBind onBind()}의 기본 구현을 제공하여 null을 
+반환하도록 합니다.</li>
+  <li>{@link android.app.IntentService#onStartCommand
+onStartCommand()}의 기본 구현을 제공하여 인텐트를 작업 대기열에 보내고, 다음으로 {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} 구현에 보내도록 합니다.</li>
+</ul>
+
+<p>이 모든 것은 결론적으로 개발자가 직접 할 일은 클라이언트가 제공한 작업을 수행할 {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}를 구현하는 것뿐이라는 사실로 
+이어집니다. (다만, 서비스에 대해 작은 생성자를 제공해야 하기도 합니다.)</p>
+
+<p>다음은 {@link android.app.IntentService}의 구현을 예시로 나타낸 것입니다.</p>
+
+<pre>
+public class HelloIntentService extends IntentService {
+
+  /**
+   * A constructor is required, and must call the super {@link android.app.IntentService#IntentService}
+   * constructor with a name for the worker thread.
+   */
+  public HelloIntentService() {
+      super("HelloIntentService");
+  }
+
+  /**
+   * The IntentService calls this method from the default worker thread with
+   * the intent that started the service. When this method returns, IntentService
+   * stops the service, as appropriate.
+   */
+  &#64;Override
+  protected void onHandleIntent(Intent intent) {
+      // Normally we would do some work here, like download a file.
+      // For our sample, we just sleep for 5 seconds.
+      long endTime = System.currentTimeMillis() + 5*1000;
+      while (System.currentTimeMillis() &lt; endTime) {
+          synchronized (this) {
+              try {
+                  wait(endTime - System.currentTimeMillis());
+              } catch (Exception e) {
+              }
+          }
+      }
+  }
+}
+</pre>
+
+<p>필요한 것은 이게 전부입니다. 생성자 하나와 {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} 구현뿐이죠.</p>
+
+<p>다른 콜백 메서드도 재정의하기로 결정하는 경우-예를 들어 {@link
+android.app.IntentService#onCreate onCreate()}, {@link
+android.app.IntentService#onStartCommand onStartCommand()} 또는 {@link
+android.app.IntentService#onDestroy onDestroy()}-슈퍼 구현을 꼭 호출해야 합니다. 
+그래야 {@link android.app.IntentService}가 작업자 스레드의 수명을 적절하게 처리할 수 있습니다.</p>
+
+<p>예를 들어 {@link android.app.IntentService#onStartCommand onStartCommand()}는 반드시 
+기본 구현을 반환해야 합니다(이로써 인텐트가 {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}로 전달되는 것입니다).</p>
+
+<pre>
+&#64;Override
+public int onStartCommand(Intent intent, int flags, int startId) {
+    Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
+    return super.onStartCommand(intent,flags,startId);
+}
+</pre>
+
+<p>{@link android.app.IntentService#onHandleIntent onHandleIntent()} 외에 슈퍼 클래스를 
+호출하지 않아도 되는 유일한 메서드는 {@link android.app.IntentService#onBind
+onBind()}입니다(다만 이를 구현하는 것은 서비스가 바인딩을 허용할 때에만 필요합니다).</p>
+
+<p>다음 섹션에서는 기본 {@link android.app.Service} 
+클래스를 확장할 때 같은 종류의 서비스를 구현하는 방법을 배우게 됩니다. 이때에는 코드가 훨씬 많이 필요하지만, 
+동시 시작 요청을 처리해야 하는 경우 이것이 적절할 수 있습니다.</p>
+
+
+<h3 id="ExtendingService">서비스 클래스 확장하기</h3>
+
+<p>이전 섹션에서 본 것과 같이 {@link android.app.IntentService}를 사용하면 
+시작된 서비스 구현이 매우 단순해집니다. 하지만 서비스가 다중 스레딩을 
+수행해야 하는 경우(작업 대기열을 통해 시작 요청을 처리하는 대신), 그때는 
+{@link android.app.Service} 클래스를 확장하여 각 인텐트를 처리하게 할 수 있습니다.</p>
+
+<p>비교를 위해 다음 예시의 코드를 보겠습니다. 이는 {@link
+android.app.Service} 클래스의 구현으로, 위의 예시에서 {@link
+android.app.IntentService}를 사용하여 수행한 것과 똑같은 작업을 수행합니다. 바꿔 말하면 각 시작 요청에 대해 
+작업자 스레드를 사용하여 작업을 수행하고 한 번에 요청을 하나씩만 처리한다는 뜻입니다.</p>
+
+<pre>
+public class HelloService extends Service {
+  private Looper mServiceLooper;
+  private ServiceHandler mServiceHandler;
+
+  // Handler that receives messages from the thread
+  private final class ServiceHandler extends Handler {
+      public ServiceHandler(Looper looper) {
+          super(looper);
+      }
+      &#64;Override
+      public void handleMessage(Message msg) {
+          // Normally we would do some work here, like download a file.
+          // For our sample, we just sleep for 5 seconds.
+          long endTime = System.currentTimeMillis() + 5*1000;
+          while (System.currentTimeMillis() &lt; endTime) {
+              synchronized (this) {
+                  try {
+                      wait(endTime - System.currentTimeMillis());
+                  } catch (Exception e) {
+                  }
+              }
+          }
+          // Stop the service using the startId, so that we don't stop
+          // the service in the middle of handling another job
+          stopSelf(msg.arg1);
+      }
+  }
+
+  &#64;Override
+  public void onCreate() {
+    // Start up the thread running the service.  Note that we create a
+    // separate thread because the service normally runs in the process's
+    // main thread, which we don't want to block.  We also make it
+    // background priority so CPU-intensive work will not disrupt our UI.
+    HandlerThread thread = new HandlerThread("ServiceStartArguments",
+            Process.THREAD_PRIORITY_BACKGROUND);
+    thread.start();
+
+    // Get the HandlerThread's Looper and use it for our Handler
+    mServiceLooper = thread.getLooper();
+    mServiceHandler = new ServiceHandler(mServiceLooper);
+  }
+
+  &#64;Override
+  public int onStartCommand(Intent intent, int flags, int startId) {
+      Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
+
+      // For each start request, send a message to start a job and deliver the
+      // start ID so we know which request we're stopping when we finish the job
+      Message msg = mServiceHandler.obtainMessage();
+      msg.arg1 = startId;
+      mServiceHandler.sendMessage(msg);
+
+      // If we get killed, after returning from here, restart
+      return START_STICKY;
+  }
+
+  &#64;Override
+  public IBinder onBind(Intent intent) {
+      // We don't provide binding, so return null
+      return null;
+  }
+
+  &#64;Override
+  public void onDestroy() {
+    Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();
+  }
+}
+</pre>
+
+<p>보시다시피 {@link android.app.IntentService}를 사용할 때보다 훨씬 손이 많이 갑니다.</p>
+
+<p>그러나, 각 호출을 {@link android.app.Service#onStartCommand
+onStartCommand()}로 직접 처리할 수 있기 때문에 여러 개의 요청을 동시에 수행할 수 있습니다. 이 예시는 그것을 
+보여주는 것은 아니지만, 그런 작업을 원하는 경우 각 요청에 대해 새 스레드를 
+하나씩 생성한 다음 곧바로 실행하면 됩니다(이전 요청이 끝날 때까지 기다리는 대신).</p>
+
+<p>{@link android.app.Service#onStartCommand onStartCommand()} 메서드가 반드시 
+정수를 반환해야 한다는 사실을 유의하십시오. 정수는 시스템이 서비스를 중단시킨 경우 시스템이 해당 서비스를 
+계속하는 방법에 대해 설명하는 값입니다(위에서 논한 바와 같이 {@link
+android.app.IntentService}의 기본 구현이 이것을 개발자 대신 처리해줍니다. 개발자가 이를 수정할 수도 있습니다). 
+{@link android.app.Service#onStartCommand onStartCommand()}로부터의 반환 값은 반드시 
+다음 상수 중 하나여야 합니다.</p>
+
+<dl>
+  <dt>{@link android.app.Service#START_NOT_STICKY}</dt>
+    <dd>시스템이 서비스를 {@link android.app.Service#onStartCommand
+onStartCommand()} 반환 후에 중단시키면 서비스를 재생성하면 <em>안 됩니다.</em> 다만 전달할 
+보류 인텐트가 있는 경우는 예외입니다. 이것은 서비스가 불필요하게 실행되는 일을 피할 수 있는 가장 안전한 옵션이며, 
+애플리케이션이 완료되지 않은 모든 작업을 단순히 재시작할 수 있을 때 좋습니다.</dd>
+  <dt>{@link android.app.Service#START_STICKY}</dt>
+    <dd>시스템이 서비스를 {@link android.app.Service#onStartCommand
+onStartCommand()} 반환 후에 중단시키는 경우, 서비스를 재생성하고 {@link
+android.app.Service#onStartCommand onStartCommand()}를 호출하되 마지막 인텐트를 다시 전달하지는 <em>마십시오.</em> 
+그 대신, 시스템이 null 인텐트로 {@link android.app.Service#onStartCommand onStartCommand()}를 
+호출합니다. 다만 서비스를 시작할 보류 인텐트가 있는 경우만은 예외이며, 이럴 때에는 
+그러한 인텐트를 전달합니다. 이것은 명령을 실행하지는 않지만 무기한으로 실행 중이며 작업을 기다리고 있는 
+미디어 플레이어(또는 그와 비슷한 서비스)에 적합합니다.</dd>
+  <dt>{@link android.app.Service#START_REDELIVER_INTENT}</dt>
+    <dd>시스템이 서비스를 {@link android.app.Service#onStartCommand
+onStartCommand()} 반환 후에 중단시키는 경우, 서비스를 재생성하고 서비스에 전달된 마지막 인텐트로 {@link
+android.app.Service#onStartCommand onStartCommand()}를 
+호출하십시오. 모든 보류 인텐트가 차례로 전달됩니다. 이것은 즉시 재개되어야 하는 작업을 
+능동적으로 수행 중인 서비스(예를 들어 파일 다운로드 등)에 적합합니다.</dd>
+</dl>
+<p>이러한 반환 값에 대한 자세한 내용은 각 상수에 대해 링크로 연결된 참조 문서를 
+확인하십시오.</p>
+
+
+
+<h3 id="StartingAService">서비스 시작</h3>
+
+<p>액티비티나 다른 구성 요소에서 서비스를 시작하려면 
+{@link android.content.Intent}를(시작할 서비스를 나타냄) {@link
+android.content.Context#startService startService()}에 전달하면 됩니다. Android 시스템이 서비스의 {@link
+android.app.Service#onStartCommand onStartCommand()} 메서드를 호출하여 여기에 {@link
+android.content.Intent}를 전달합니다. ({@link android.app.Service#onStartCommand
+onStartCommand()}를 직접 호출하면 절대로 안 됩니다.)</p>
+
+<p>예를 들어 이전 섹션의 예시 서비스({@code
+HelloService})를 액티비티가 시작하려면 {@link android.content.Context#startService
+startService()}로 명시적 인텐트를 사용하면 됩니다.</p>
+
+<pre>
+Intent intent = new Intent(this, HelloService.class);
+startService(intent);
+</pre>
+
+<p>{@link android.content.Context#startService startService()} 메서드가 즉시 반환되며 
+Android 시스템이 서비스의 {@link android.app.Service#onStartCommand
+onStartCommand()} 메서드를 호출합니다. 서비스가 이미 실행 중이지 않은 경우, 시스템은 우선 {@link
+android.app.Service#onCreate onCreate()}를 호출하고, 다음으로 {@link android.app.Service#onStartCommand
+onStartCommand()}를 호출합니다.</p>
+
+<p>서비스가 바인딩도 제공하지 않는 경우, {@link
+android.content.Context#startService startService()}와 함께 전달된 인텐트가 애플리케이션 구성 요소와 서비스 사이의 
+유일한 통신 방법입니다. 그러나 서비스가 결과를 돌려보내기를 원하는 경우, 서비스를 시작한 
+클라이언트가 브로드캐스트를 위해 {@link android.app.PendingIntent}를 
+만들 수 있고({@link android.app.PendingIntent#getBroadcast getBroadcast()} 사용) 이를 서비스를 시작한 
+{@link android.content.Intent} 내의 서비스에 전달할 수 있습니다. 그러면 서비스가 
+이 브로드캐스트를 사용하여 결과를 전달할 수 있게 됩니다.</p>
+
+<p>서비스를 시작하기 위한 여러 개의 요청은 서비스의 
+{@link android.app.Service#onStartCommand onStartCommand()}로의 상응하는 여러 개의 호출이라는 결과를 낳습니다. 하지만, 서비스를 중단하려면 
+이를 중단하라는 요청 하나({@link android.app.Service#stopSelf stopSelf()} 또는 {@link
+android.content.Context#stopService stopService()} 사용)만 있으면 됩니다.</p>
+
+
+<h3 id="Stopping">서비스 중단</h3>
+
+<p>시작된 서비스는 자신만의 수명 주기를 직접 관리해야 합니다. 다시 말해, 시스템이 
+서비스를 중단하거나 소멸시키지 않는다는 뜻입니다. 다만 시스템 메모리를 회복해야 하고 서비스가 
+{@link android.app.Service#onStartCommand onStartCommand()} 반환 후에도 계속 실행되는 경우는 예외입니다. 따라서, 
+서비스는 {@link android.app.Service#stopSelf stopSelf()}를 호출하여 스스로 중단시켜야 하고, 아니면 
+다른 구성 요소가 {@link android.content.Context#stopService stopService()}를 호출하여 이를 중단시킬 수 있습니다.</p>
+
+<p>일단 {@link android.app.Service#stopSelf stopSelf()} 또는 {@link
+android.content.Context#stopService stopService()}로 중단하기를 요청하고 나면 시스템이 서비스를 가능한 한 빨리 
+소멸시킵니다.</p>
+
+<p>그러나, 서비스가 {@link
+android.app.Service#onStartCommand onStartCommand()}로의 요청을 동시에 여러 개 처리하기를 바라는 경우라면 시작 요청 처리를 완료한 뒤에도 
+서비스를 중단하면 안 됩니다. 그 이후 새 시작 요청을 받았을 수 있기 
+때문입니다(첫 요청 종료 시에 중단하면 두 번째 요청을 종료시킵니다). 이 문제를 
+피하려면, {@link android.app.Service#stopSelf(int)}를 사용하여 서비스를 
+중단시키라는 개발자의 요청이 항상 최신 시작 요청에 기반하도록 해야 합니다. 다시 말해, {@link
+android.app.Service#stopSelf(int)}를 호출할 때면 시작 요청의 ID({@link android.app.Service#onStartCommand onStartCommand()}에 전달된 
+<code>startId</code>)를 전달하게 됩니다. 여기에 중단 요청이 
+부합됩니다. 그런 다음 개발자가 {@link
+android.app.Service#stopSelf(int)}를 호출할 수 있기 전에 서비스가 새 시작 요청을 받은 경우, ID가 일치하지 않게 되고 서비스는 중단되지 않습니다.</p>
+
+<p class="caution"><strong>주의:</strong> 서비스가 작업을 완료한 다음 애플리케이션이 
+소속 서비스를 중단할 수 있어야 한다는 점이 중요합니다. 그래야 시스템 리소스 낭비를 피하고 배터리 전력 소모를 줄일 수 있습니다. 필요한 경우 
+다른 구성 요소도 서비스를 중단시킬 수 있습니다. {@link
+android.content.Context#stopService stopService()}를 호출하면 됩니다. 서비스에 대해 바인딩을 활성화하더라도, 
+서비스가 {@link
+android.app.Service#onStartCommand onStartCommand()}로의 호출을 한 번이라도 받았으면 항상 서비스를 직접 중단시켜야 합니다.</p>
+
+<p>서비스의 수명 주기에 대한 자세한 정보는 아래에 있는 <a href="#Lifecycle">서비스 수명 주기 관리</a>에 관한 섹션을 참고하세요.</p>
+
+
+
+<h2 id="CreatingBoundService">바인딩된 서비스 생성</h2>
+
+<p>바인딩된 서비스는 애플리케이션 구성 요소가 자신에게 바인딩될 수 있도록 허용하는 서비스로, 이때 {@link
+android.content.Context#bindService bindService()}를 호출하여 오래 지속되는 연결을 생성합니다
+(또한 보통은 구성 요소가 {@link
+android.content.Context#startService startService()}를 호출하여 서비스를 <em>시작</em>하는 것을 허용하지 않습니다).</p>
+
+<p>액티비티와 애플리케이션의 다른 구성 요소에서 서비스와 상호 작용하기를 원하는 경우 
+바인딩된 서비스를 생성해야 합니다. 아니면 애플리케이션의 기능 몇 가지를 프로세스 간 통신(IPC)을 통해 
+다른 애플리케이션에 노출하고자 하는 경우에도 좋습니다.</p>
+
+<p>바인딩된 서비스를 생성하려면 {@link
+android.app.Service#onBind onBind()} 콜백 메서드를 구현하여 서비스와의 통신을 위한 인터페이스를 정의하는 
+{@link android.os.IBinder}를 반환하도록 해야 합니다. 그러면 다른 애플리케이션 구성 요소가 
+{@link android.content.Context#bindService bindService()}를 호출하여 해당 인터페이스를 검색하고, 서비스에 있는 메서드를 
+호출하기 시작할 수 있습니다. 서비스는 자신에게 바인딩된 애플리케이션 구성 요소에게 도움이 되기 위해서만 
+존재하는 것이므로, 서비스에 바인딩된 구성 요소가 없으면 시스템이 이를 소멸시킵니다(바인딩된 서비스는 시작된 서비스처럼 
+{@link android.app.Service#onStartCommand onStartCommand()}를 통해 
+중단시키지 <em>않아도</em> 됩니다).</p>
+
+<p>바인딩된 서비스를 생성하려면 가장 먼저 해야 할 일은 클라이언트가 서비스와 
+통신할 수 있는 방법을 나타내는 인터페이스를 정의하는 것입니다. 서비스와 클라이언트 사이에서 쓰이는 이 인터페이스는 
+반드시 {@link android.os.IBinder}의 구현이어야 하며 이를 
+서비스가 {@link android.app.Service#onBind
+onBind()} 콜백 메서드에서 반환해야 합니다. 클라이언트가 {@link android.os.IBinder}를 수신하면 해당 인터페이스를 통해 서비스와 
+상호 작용을 시작할 수 있습니다.</p>
+
+<p>여러 클라이언트가 서비스에 한꺼번에 바인딩될 수 있습니다. 클라이언트가 서비스와의 상호 작용을 완료하면 이는 
+{@link android.content.Context#unbindService unbindService()}를 호출하여 바인딩을 해제합니다. 서비스에 
+바인딩된 클라이언트가 하나도 없으면 시스템이 해당 서비스를 소멸시킵니다.</p>
+
+<p>바인딩된 서비스를 구현하는 데에는 여러 가지 방법이 있으며 그러한 구현은 시작된 서비스보다 
+훨씬 복잡합니다. 따라서 바인딩된 서비스 논의는 
+<a href="{@docRoot}guide/components/bound-services.html">바인딩된 서비스</a>에 관한 별도의 문서에서 다룹니다.</p>
+
+
+
+<h2 id="Notifications">사용자에게 알림 전송</h2>
+
+<p>서비스는 일단 실행되고 나면 사용자에게 <a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">알림 메시지</a> 또는 <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">상태 표시줄 알림</a> 등을 사용해 이벤트를 알릴 수 있습니다.</p>
+
+<p>알림 메시지란 현재 창의 표면에 잠시 나타났다가 사라지는 메시지이고, 
+상태 표시줄 알림은 상태 표시줄에 메시지가 담긴 아이콘을 제공하여 사용자가 이를 선택하여 
+조치를 취할 수 있게 하는 것입니다(예: 액티비티 시작).</p>
+
+<p>보통, 일종의 배경 작업이 완료되었고
+(예: 파일 다운로드 완료) 이제 사용자가 그에 대해 조치를 취할 수 있는 경우 상태 표시줄 알림이 
+최선의 기법입니다. 사용자가 확장된 보기에서 알림을 선택하면, 
+해당 알림이 액티비티를 시작할 수 있습니다(예: 다운로드한 파일 보기).</p>
+
+<p>자세한 정보는 <a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">알림 메시지</a> 또는 <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">상태 표시줄 알림</a>
+개발자 가이드를 참조하십시오.</p>
+
+
+
+<h2 id="Foreground">전경에서 서비스 실행하기</h2>
+
+<p>전경 서비스는 사용자가 능동적으로 인식하고 있으므로 메모리 부족 시에도 
+시스템이 중단할 후보로 고려되지 않는 서비스를 말합니다. 전경 
+서비스는 상태 표시줄에 대한 알림을 제공해야 합니다. 이것은 
+"진행 중" 제목 아래에 배치되며, 이는 곧 해당 알림은 서비스가 중단되었거나 
+전경에서 제거되지 않은 이상 무시할 수 없다는 뜻입니다.</p>
+
+<p>예를 들어 서비스에서 음악을 재생하는 음악 플레이어는 전경에서 
+실행되도록 설정해야 합니다. 사용자가 이것의 작동을 분명히 인식하고 있기 
+때문입니다. 상태 표시줄에 있는 알림은 현재 노래를 나타내고 
+사용자로 하여금 음악 플레이어와 상호 작용할 액티비티를 시작하게 해줄 수도 있습니다.</p>
+
+<p>서비스가 전경에서 실행되도록 요청하려면 {@link
+android.app.Service#startForeground startForeground()}를 호출하면 됩니다. 이 메서드는 두 개의 매개변수를 취합니다. 
+그 중 하나는 해당 알림을 고유하게 식별하는 정수이고 다른 하나는 상태 표시줄에 해당되는 {@link
+android.app.Notification}입니다. 예:</p>
+
+<pre>
+Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text),
+        System.currentTimeMillis());
+Intent notificationIntent = new Intent(this, ExampleActivity.class);
+PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
+notification.setLatestEventInfo(this, getText(R.string.notification_title),
+        getText(R.string.notification_message), pendingIntent);
+startForeground(ONGOING_NOTIFICATION_ID, notification);
+</pre>
+
+<p class="caution"><strong>주의:</strong> {@link
+android.app.Service#startForeground startForeground()}에 부여하는 정수 ID가 0이면 안 됩니다.</p>
+
+
+<p>서비스를 전경에서 제거하려면 {@link
+android.app.Service#stopForeground stopForeground()}를 호출하면 됩니다. 이 메서드는 부울 값을 취하며, 이것이 
+상태 표시줄 알림도 제거할지 여부를 나타냅니다. 이 메서드는 서비스를 중단시키지 <em>않습니다</em>.
+ 그러나, 서비스가 전경에서 실행 중인 동안 서비스를 중단시키면 
+알림도 마찬가지로 제거됩니다.</p>
+
+<p>알림에 대한 자세한 정보는 <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">상태 표시줄 
+알림 생성</a>을 참조하십시오.</p>
+
+
+
+<h2 id="Lifecycle">서비스 수명 주기 관리</h2>
+
+<p>서비스의 수명 주기는 액티비티의 수명 주기보다 훨씬 간단합니다. 하지만, 서비스를 생성하고 
+소멸시키는 방법에 특히 주의를 기울여야 한다는 면에서 중요도는 이쪽이 더 높습니다. 서비스는 사용자가 모르는 채로 
+배경에서 실행될 수 있기 때문입니다.</p>
+
+<p>서비스 수명 주기&mdash;생성되었을 때부터 소멸될 때까지&mdash;는 두 가지 서로 다른 경로를 
+따를 수 있습니다.</p>
+
+<ul>
+<li>시작된 서비스
+  <p>서비스는 또 다른 구성 요소가 {@link
+android.content.Context#startService startService()}를 호출하면 생성됩니다. 그러면 서비스가 무기한으로 실행될 수 있으며 
+스스로 알아서 중단되어야 합니다. 이때 {@link
+android.app.Service#stopSelf() stopSelf()}를 호출하는 방법을 씁니다. 또 다른 구성 요소도 서비스를 중단시킬 수 
+있습니다. {@link android.content.Context#stopService
+stopService()}를 호출하면 됩니다. 서비스가 중단되면 시스템이 이를 소멸시킵니다.</p></li>
+
+<li>바인딩된 서비스
+  <p>서비스는 또 다른 구성 요소(클라이언트)가 {@link
+android.content.Context#bindService bindService()}를 호출하면 생성됩니다. 그러면 클라이언트가 
+{@link android.os.IBinder} 인터페이스를 통해 서비스와 통신을 주고받을 수 있습니다. 클라이언트가 연결을 종료하려면 
+{@link android.content.Context#unbindService unbindService()}를 호출하면 됩니다. 여러 클라이언트가 같은 서비스에 
+바인딩될 수 있으며, 이 모두가 바인딩을 해제하면 시스템이 해당 서비스를 소멸시킵니다 (서비스가 스스로를 중단시키지 
+<em>않아도</em> 됩니다).</p></li>
+</ul>
+
+<p>이와 같은 두 가지 경로는 완전히 별개의 것은 아닙니다. 다시 말해, 이미 
+{@link android.content.Context#startService startService()}로 시작된 서비스에 바인딩할 수도 있다는 뜻입니다. 예를 
+들어, 배경 음악 서비스를 시작하려면 {@link android.content.Context#startService
+startService()}를 호출하되 재생할 음악을 식별하는 {@link android.content.Intent}를 사용하면 됩니다. 나중에, 
+아마도 사용자가 플레이어에 좀 더 많은 통제권을 발휘하고자 하거나 
+현재 노래에 대한 정보를 얻고자 할 때, 액티비티가 서비스에 바인딩될 수 있습니다. {@link
+android.content.Context#bindService bindService()}를 사용하면 됩니다. 이런 경우에는 {@link
+android.content.Context#stopService stopService()} 또는 {@link android.app.Service#stopSelf
+stopSelf()}도 클라이언트가 모두 바인딩 해제될 때까지 실제로 서비스를 중단시키지 않습니다. </p>
+
+
+<h3 id="LifecycleCallbacks">수명 주기 콜백 구현하기</h3>
+
+<p>액티비티와 마찬가지로 서비스에도 수명 주기 콜백 메서드가 있어 이를 구현하면 서비스의 
+상태 변경 내용을 모니터링할 수 있고 적절한 시기에 작업을 수행할 수 있습니다. 다음의 골격 
+서비스는 각 수명 주기 메서드를 설명한 것입니다.</p>
+
+<pre>
+public class ExampleService extends Service {
+    int mStartMode;       // indicates how to behave if the service is killed
+    IBinder mBinder;      // interface for clients that bind
+    boolean mAllowRebind; // indicates whether onRebind should be used
+
+    &#64;Override
+    public void {@link android.app.Service#onCreate onCreate}() {
+        // The service is being created
+    }
+    &#64;Override
+    public int {@link android.app.Service#onStartCommand onStartCommand}(Intent intent, int flags, int startId) {
+        // The service is starting, due to a call to {@link android.content.Context#startService startService()}
+        return <em>mStartMode</em>;
+    }
+    &#64;Override
+    public IBinder {@link android.app.Service#onBind onBind}(Intent intent) {
+        // A client is binding to the service with {@link android.content.Context#bindService bindService()}
+        return <em>mBinder</em>;
+    }
+    &#64;Override
+    public boolean {@link android.app.Service#onUnbind onUnbind}(Intent intent) {
+        // All clients have unbound with {@link android.content.Context#unbindService unbindService()}
+        return <em>mAllowRebind</em>;
+    }
+    &#64;Override
+    public void {@link android.app.Service#onRebind onRebind}(Intent intent) {
+        // A client is binding to the service with {@link android.content.Context#bindService bindService()},
+        // after onUnbind() has already been called
+    }
+    &#64;Override
+    public void {@link android.app.Service#onDestroy onDestroy}() {
+        // The service is no longer used and is being destroyed
+    }
+}
+</pre>
+
+<p class="note"><strong>참고:</strong> 액티비티 수명 주기 콜백 메서드와는 달리 이와 같은 콜백 메서드를 구현하는 데에는 
+슈퍼클래스 구현을 호출하지 <em>않아도</em> 됩니다.</p>
+
+<img src="{@docRoot}images/service_lifecycle.png" alt="" />
+<p class="img-caption"><strong>그림 2.</strong> 서비스 수명 주기입니다. 왼쪽의 다이어그램은 
+서비스가 {@link android.content.Context#startService
+startService()}로 생성된 경우의 수명 주기를 나타내며 오른쪽의 다이어그램은 서비스가 
+{@link android.content.Context#bindService bindService()}로 생성된 경우의 수명 주기를 나타낸 것입니다.</p>
+
+<p>이와 같은 메서드를 구현함으로써, 서비스 수명 주기의 두 가지 중첩된 루프를 모니터링할 수 있습니다. </p>
+
+<ul>
+<li>서비스의 <strong>수명 주기 전체</strong>는 {@link
+android.app.Service#onCreate onCreate()}가 호출된 시점과 {@link
+android.app.Service#onDestroy}가 반환된 시점 사이에 일어납니다. 액티비티와 마찬가지로 서비스는 자신의 초기 설정을 
+{@link android.app.Service#onCreate onCreate()}에서 수행하며 남은 리소스를 모두 {@link
+android.app.Service#onDestroy onDestroy()}에 릴리스합니다.  예를 들어 
+음악 재생 서비스의 경우 음악이 재생될 스레드를 {@link
+android.app.Service#onCreate onCreate()}로 생성하고, 그럼 다음 해당 스레드를 중단할 때에는 {@link
+android.app.Service#onDestroy onDestroy()}에서 할 수도 있습니다.
+
+<p>{@link android.app.Service#onCreate onCreate()}와 {@link android.app.Service#onDestroy
+onDestroy()} 메서드는 모든 서비스에 대해 호출됩니다. 이는 서비스가 
+{@link android.content.Context#startService startService()}로 생성되었든 {@link
+android.content.Context#bindService bindService()}로 생성되었든 관계 없이 적용됩니다.</p></li>
+
+<li>서비스의 <strong>활성 수명 주기</strong>는 {@link
+android.app.Service#onStartCommand onStartCommand()} 또는 {@link android.app.Service#onBind onBind()}로의 호출과 함께 시작됩니다. 
+각 메서드에 {@link
+android.content.Intent}가 전달되는데 이것은 각각 {@link android.content.Context#startService
+startService()} 또는 {@link android.content.Context#bindService bindService()} 중 하나에 전달된 것입니다.
+<p>서비스가 시작되면 수명 주기 전체가 종료되는 것과 동시에 활성 수명 주기도 종료됩니다
+(서비스는 {@link android.app.Service#onStartCommand
+onStartCommand()}가 반환된 뒤에도 여전히 활성 상태입니다). 서비스가 바인딩된 경우, 활성 수명 주기는 {@link
+android.app.Service#onUnbind onUnbind()}가 반환되면 종료됩니다.</p>
+</li>
+</ul>
+
+<p class="note"><strong>참고:</strong> 시작된 서비스를 중단하려면 
+{@link android.app.Service#stopSelf stopSelf()} 또는 {@link
+android.content.Context#stopService stopService()}를 호출하면 되지만, 서비스에 대한 상응하는 콜백은 
+없습니다(즉 {@code onStop()} 콜백이 없습니다). 그러므로, 서비스가 클라이언트에 바인딩되어 있지 않은 한 
+시스템은 서비스가 중단되면 이를 소멸시킵니다. 수신되는 콜백은 {@link
+android.app.Service#onDestroy onDestroy()}가 유일합니다.</p>
+
+<p>그림 2는 서비스에 대한 일반적인 콜백 메서드를 나타낸 것입니다. 이 그림에서는 
+{@link android.content.Context#startService startService()}로 생성된 서비스와 
+{@link android.content.Context#bindService bindService()}로 생성된 서비스를 
+구분하고 있지만, 어떤 식으로 시작되었든 모든 서비스는 클라이언트가 자신에 바인딩되도록 허용할 수 있다는 점을 명심하십시오.
+말하자면, {@link android.app.Service#onStartCommand
+onStartCommand()}로 처음 시작된 서비스(클라이언트가 {@link android.content.Context#startService startService()}를 호출해서)라고 해도 
+여전히 {@link android.app.Service#onBind onBind()}로의 호출을 받을 수 있습니다(클라이언트가 
+{@link android.content.Context#bindService bindService()}를 호출하는 경우).</p>
+
+<p>바인딩을 제공하는 서비스 생성에 대한 자세한 내용은 <a href="{@docRoot}guide/components/bound-services.html">바인딩된 서비스</a> 문서를 참조하십시오. 이 안에는 {@link android.app.Service#onRebind onRebind()}
+콜백 메서드에 대한 자세한 정보가 <a href="{@docRoot}guide/components/bound-services.html#Lifecycle">바인딩된 서비스의 
+수명 주기 관리</a>에 관한 섹션에 
+담겨 있습니다.</p>
+
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>To learn how to query data from the system or other applications (such as contacts or media
+stored on the device), continue with the <b><a
+href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a></b>
+document.</p>
+-->
diff --git a/docs/html-intl/intl/ko/guide/components/tasks-and-back-stack.jd b/docs/html-intl/intl/ko/guide/components/tasks-and-back-stack.jd
new file mode 100644
index 0000000..6b896f9
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/components/tasks-and-back-stack.jd
@@ -0,0 +1,578 @@
+page.title=작업 및 백 스택
+parent.title=액티비티
+parent.link=activities.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>이 문서의 내용</h2>
+<ol>
+<li><a href="#ActivityState">액티비티 상태 저장하기</a></li></li>
+<li><a href="#ManagingTasks">작업 관리하기</a>
+  <ol>
+    <li><a href="#TaskLaunchModes">시작 모드 정의하기</a></li>
+    <li><a href="#Affinities">유사성 처리하기</a></li>
+    <li><a href="#Clearing">백 스택 지우기</a></li>
+    <li><a href="#Starting">작업 시작하기</a></li>
+  </ol>
+</li>
+</ol>
+
+<h2>글</h2>
+<ol>
+  <li><a href="http://android-developers.blogspot.com/2010/04/multitasking-android-way.html">
+Android식 멀티태스킹</a></li>
+</ol>
+
+<h2>참고 항목</h2>
+<ol>
+  <li><a href="{@docRoot}design/patterns/navigation.html">Android 디자인:
+탐색</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;} 매니페스트
+요소</a></li>
+  <li><a href="{@docRoot}guide/components/recents.html">개요 화면</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>하나의 애플리케이션에는 보통 여러 개의 <a href="{@docRoot}guide/components/activities.html">액티비티</a>가 들어있습니다. 각 액티비티는 
+사용자가 수행할 수 있는 특정한 종류의 작업을 중심으로 디자인되어야 하며 다른 액티비티를 
+시작할 수 있는 기능이 있습니다. 예를 들어 이메일 애플리케이션에는 새 메시지 목록을 표시하는 하나의 액티비티가 있을 수 있습니다.
+사용자가 메시지를 하나 선택하면, 새 액티비티가 열려 해당 메시지를 볼 수 있게 합니다.</p>
+
+<p>액티비티는 기기에서 다른 애플리케이션에 존재하는 액티비티를 시작할 수도 있습니다. 예를 들어 
+애플리케이션이 이메일 메시지를 보내고자 하는 경우, "전송" 작업을 수행할 인텐트를 
+정의하여 이메일 주소와 메시지 등의 몇 가지 데이터를 포함시키면 됩니다. 그러면 다른 애플리케이션에서 가져온 액티비티 중 
+이러한 종류의 인텐트를 처리한다고 스스로 선언한 것이 열립니다. 이 경우, 이 인텐트는 
+이메일을 전송하기 위한 것이므로 이메일 애플리케이션의 "작성" 액티비티가 시작됩니다(같은 인텐트를 
+지원하는 액티비티가 여러 개 있는 경우, 시스템은 사용자에게 어느 것을 사용할지 선택하도록 합니다). 이메일이 전송되면 
+액티비티가 재개되고 해당 이메일 액티비티가 애플리케이션의 일부였던 것처럼 보입니다. 액티비티는 
+서로 다른 애플리케이션에서 온 것일 수 있지만, Android는 두 액티비티를 
+모두 같은 <em>작업</em> 안에 유지하여 이처럼 막힘 없는 사용자 환경을 유지합니다.</p>
+
+<p>작업이란 액티비티 컬렉션을 일컫는 말로, 사용자가 특정 작업을 수행할 때 이것과 
+상호 작용합니다. 액티비티는 스택 안에 정렬되며(<em>백 스택</em>), 이때 
+순서는 각 액티비티가 열린 순서와 같습니다.</p>
+
+<!-- SAVE FOR WHEN THE FRAGMENT DOC IS ADDED
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h3>Adding fragments to a task's back stack</h3>
+
+<p>Your activity can also include {@link android.app.Fragment}s to the back stack. For example,
+suppose you have a two-pane layout using fragments, one of which is a list view (fragment A) and the
+other being a layout to display an item from the list (fragment B). When the user selects an item
+from the list, fragment B is replaced by a new fragment (fragment C). In this case, it might be
+desireable for the user to navigate back to reveal fragment B, using the <em>Back</em> button.</p>
+<p>In order to add fragment B to the back stack so that this is possible, you must call {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()} before you {@link
+android.app.FragmentTransaction#commit()} the transaction that replaces fragment B with fragment
+C.</p>
+<p>For more information about using fragments and adding them to the back stack, see the {@link
+android.app.Fragment} class documentation.</p>
+
+</div>
+</div>
+-->
+
+<p>기기 메인 스크린이 대다수 작업의 시작 지점입니다. 사용자가 
+애플리케이션 
+시작 관리자에 있는 아이콘(또는 메인 스크린의 바로 가기)을 터치하면 해당 애플리케이션의 작업이 전경으로 나옵니다. 해당 애플리케이션에 대한 
+작업이 존재하지 않으면(이 애플리케이션을 최근에 사용한 적이 없는 경우), 새 작업이 생성되고 
+해당 애플리케이션의 "기본" 액티비티가 스택에 있는 루트 액티비티로 열립니다.</p>
+
+<p>현재 액티비티가 또 다른 액티비티를 시작하는 경우, 새 액티비티가 스택의 맨 위로 밀어올려지고 
+사용자의 초점이 이에 맞춰집니다. 이전 액티비티는 스택에 유지되지만, 중단됩니다. 액티비티가 중단되면 
+시스템은 이 액티비티의 사용자 인터페이스의 현재 상태를 보존합니다. 사용자가 
+<em>뒤로</em>
+ 버튼을 누르면, 현재 액티비티가 스택의 맨 위에서 튀어나오고(해당 액티비티는 소멸됩니다) 
+이전 액티비티가 재개됩니다(이것의 UI 이전 상태가 복원됩니다). 스택에 있는 액티비티는 
+결코 다시 정렬되지 않습니다. 다만 스택에서 밀어올려지거나 튀어나올 뿐입니다. 즉, 현재 액티비티에 의해 
+시작되면 스택 위로 밀어올려지고, 사용자가 <em>뒤로</em> 버튼을 사용하여 액티비티를 떠나면 튀어나와 사라지는 것입니다. 따라서, 
+백 스택은 
+일종의 "후입선출" 객체 구조로서 작동한다고 할 수 있습니다. 그림 1은 
+이 행동을 시간 표시 막대와 함께 표시하여 여러 액티비티 사이의 진행률을 보여주며, 
+각 시점에서 현재 백 스택의 모습을 나타낸 것입니다.</p>
+
+<img src="{@docRoot}images/fundamentals/diagram_backstack.png" alt="" />
+<p class="img-caption"><strong>그림 1.</strong> 작업에 있는 각각의 새 액티비티가 백 스택에 항목을 추가하는 
+방법을 나타낸 것입니다. 사용자가 <em>뒤로</em> 버튼을 누르면 현재 
+액티비티가 
+소멸되고 이전 액티비티가 재개됩니다.</p>
+
+
+<p>사용자가 계속해서 <em>뒤로</em> 버튼을 누르면, 스택에 있는 각 액티비티가 하나씩 튀어나가 
+이전 것을 
+드러내고, 마침내는 사용자가 메인 스크린으로 되돌아가게 됩니다(아니면 작업이 시작되었을 때 
+실행 중이던 액티비티가 무엇이든 그것으로 되돌아갑니다). 스택에서 모든 액티비티가 제거되면 이 작업은 더 이상 존재하지 않게 됩니다.</p>
+
+<div class="figure" style="width:287px">
+<img src="{@docRoot}images/fundamentals/diagram_multitasking.png" alt="" /> <p
+class="img-caption"><strong>그림 2.</strong> 두 개의 작업: 작업 B가 전경에서 사용자 상호 작용을 수신하는 한편, 
+작업 A는 배경에서 재개되기를 기다립니다.</p>
+</div>
+<div class="figure" style="width:215px">
+  <img src="{@docRoot}images/fundamentals/diagram_multiple_instances.png" alt="" /> <p
+class="img-caption"><strong>그림 3.</strong> 하나의 액티비티가 여러 번 인스턴트화됩니다.</p>
+</div>
+
+<p>작업이란 하나의 잘 짜여진 단위로 사용자가 새 작업을 시작할 때 "배경"으로 이동할 수도 있고 
+<em>홈</em> 버튼을 통해 메인 스크린으로 이동할 수도 있습니다. 작업의 모든 액티비티는 배경에 있는 동안은 
+중단되지만
+, 해당 작업에 대한 백 스택은 그대로 변함 없이 유지됩니다. 이 작업은 또 다른 작업이 발생하는 동안 
+초점을 잃을 뿐입니다(그림 2 참조). 그런 다음 작업이 "전경"으로 되돌아와 사용자가 
+이전에 하던 일을 계속할 수 있습니다. 예를 들어 현재 작업(작업 A)의 스택에 세 개의 액티비티가 있다고 
+가정하면 그 중 둘은 현재 액티비티 아래에 있습니다. 사용자가 <em>홈</em>
+ 버튼을 누른 다음 
+애플리케이션 시작 관리자로부터 새 애플리케이션을 시작합니다. 메인 스크린이 나타나면 작업 A는 
+배경으로 이동합니다. 새 애플리케이션이 시작되면 시스템은 해당 애플리케이션에 대한 작업을 시작하며
+(작업 B) 여기에는 나름의 액티비티 스택이 딸려 있습니다. 해당 애플리케이션과 
+상호 작용한 후, 사용자는 다시 홈으로 돌아와 원래 작업 A를 시작한 
+애플리케이션을 선택합니다. 이제 작업 A가 전경으로 옵니다.
+이 스택에 있는 액티비티 세 개는 모두 멀쩡하고, 스택 맨 위에 있는 액티비티가 
+재개됩니다. 이 시점에서 
+사용자는 작업 B로 도로 전환할 수도 있습니다. 홈으로 이동하여 해당 작업을 
+시작한 애플리케이션 아이콘을 선택하면 됩니다(아니면 
+<a href="{@docRoot}guide/components/recents.html">개요 화면</a>에서 해당 앱의 작업을 선택해도 됩니다). 
+이것이 Android에서 멀티태스킹을 하는 작업의 예시입니다.</p>
+
+<p class="note"><strong>참고:</strong> 여러 개의 작업을 배경에 한꺼번에 대기시킬 수 있습니다. 
+하지만, 사용자가 수많은 배경 작업을 동시에 실행하면 시스템이 메모리를 복원하기 위해 
+배경 액티비티를 소멸시키기 시작할 수 있고, 그러면 액티비티 상태가 손실됩니다. 
+다음의 <a href="#ActivityState">액티비티 상태</a>에 관한 섹션을 참조하십시오.</p>
+
+<p>백 스택에 있는 액티비티는 결코 다시 정렬되지 않으므로, 애플리케이션에서 
+사용자에게 하나 이상의 액티비티로부터 특정 액티비티를 시작하도록 허용하는 경우, 해당 액티비티의 새 인스턴스가 
+생성되어 스택 위로 밀려옵니다(해당 액티비티의 기존 인스턴스를 
+맨 위로 가져오는 대신). 따라서, 애플리케이션 안의 한 액티비티가 여러 번 
+인스턴트화될 수 있으며(서로 다른 작업으로부터도 가능), 이를 나타낸 것이 그림 3입니다. 이 때문에 사용자가 
+<em>뒤로</em> 버튼을 사용하여 뒤로 이동하는 경우, 액티비티의 각 인스턴스가 열린 순서대로 드러납니다
+(각자 나름의 
+UI 상태를 가지고). 다만, 액티비티가 한 번 이상 인스턴트화되는 것을 원치 않으면 이 행동은 수정할 수 
+있습니다. 그 방법에 대해서는 <a href="#ManagingTasks">작업 관리하기</a>에 관한 이후 섹션에서 이야기합니다.</p>
+
+
+<p>액티비티 및 작업에 대한 기본 행동을 요약하려면 다음과 같이 합니다.</p>
+
+<ul>
+  <li>액티비티 A가 액티비티 B를 시작하면 액티비티 A는 중단되지만, 시스템이 그 상태를
+(예: 스크롤 위치 및 양식에 입력된 텍스트 등) 보존합니다.
+사용자가 액티비티 B에 있는 동안 <em>뒤로</em> 버튼을 누르면 액티비티 A가 재개되며 상태도 
+복원됩니다.</li>
+  <li>사용자가 <em>홈</em> 버튼을 눌러 작업을 떠나면 현재 액티비티가 
+중단되고 
+그 소속 작업이 배경으로 들어갑니다. 시스템은 작업에 속한 모든 액티비티의 상태를 보존합니다. 사용자가 
+나중에 작업을 시작한 시작 관리자 아이콘을 선택하여 해당 작업을 재개하면, 그 작업이 
+전경으로 나오고 스택 맨 위에서 액티비티를 재개합니다.</li>
+  <li>사용자가 <em>뒤로</em> 버튼을 누르면, 현재 액티비티가 스택에서 튀어나오고 
+소멸됩니다.
+ 스택에 있던 이전 액티비티가 재개됩니다. 액티비티가 소멸되면, 시스템은 그 액티비티의 상태를 
+보존하지 <em>않습니다.</em></li>
+  <li>액티비티는 여러 번 인스턴트화할 수 있으며, 다른 작업에서도 이를 수행할 수 있습니다.</li>
+</ul>
+
+
+<div class="note design">
+<p><strong>탐색 디자인</strong></p>
+  <p>Android에서 앱 탐색의 작동 원리를 자세히 알아보려면, Android 디자인의 <a href="{@docRoot}design/patterns/navigation.html">탐색</a> 가이드를 읽어보십시오.</p>
+</div>
+
+
+<h2 id="ActivityState">액티비티 상태 저장하기</h2>
+
+<p>위에서 논한 바와 같이, 시스템의 기본 행동은 액티비티가 중단되면 그 상태를 보존해두는 
+것입니다. 이렇게 하면, 사용자가 이전 액티비티로 도로 이동했을 때 그에 속한 사용자 인터페이스가 이전 상태 
+그대로 표시됩니다. 그러나 액티비티의 상태를 미리 보존할 수도 있으며 사전에 이렇게 <strong>해야 합니다.</strong>
+이때에는, 액티비티가 소멸되고 다시 만들어야 하는 경우를 대비해 
+콜백 메서드를 사용합니다.</p>
+
+<p>시스템이 액티비티 중 하나를 중단시키는 경우(예를 들어 새 액티비티가 시작되었을 때 또는 작업이 
+배경으로 이동하는 경우), 시스템은 시스템 메모리를 회복해야 하는 경우 액티비티를 
+완전히 소멸시켜버릴 수도 있습니다. 이런 상황이 벌어지면, 액티비티 상태에 대한 정보는 손실됩니다. 이런 일이 벌어지더라도, 
+시스템은 여전히 
+백 스택에 해당 액티비티의 자리가 있다는 것을 알고 있습니다. 다만 액티비티가 스택 맨 위로 올라오면 
+시스템이 이를 (재개하는 것이 아니라) 재생성해야만 합니다. 사용자의 작업 내용을 
+잃어버리는 불상사를 피하려면 그 내용을 미리 보존해두어야 합니다. 이때 액티비티의 
+{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()} 콜백 
+메서드를 구현하는 방법을 씁니다.</p>
+
+<p>액티비티 상태를 저장하는 방법에 대한 자세한 정보는 <a href="{@docRoot}guide/components/activities.html#SavingActivityState">액티비티</a>
+문서를 참조하십시오.</p>
+
+
+
+<h2 id="ManagingTasks">작업 관리하기</h2>
+
+<p>Android가 작업과 백 스택을 관리하는 방식은 위에 설명된 바와 같고&mdash;같은 작업 안에서 
+연이어 시작된 모든 작업을 한곳에 배치하되 "후입선출" 스택에 두는 것&mdash;이 방식은 
+대부분의 애플리케이션에 아주 효과적입니다. 여러분은 액티비티가 작업과 연관된 방식이나 
+백 스택에서의 존재 방식에 대해 염려하지 않아도 됩니다. 그러나, 정상적인 동작을 인터럽트하기로 결정할 수도 
+있습니다. 애플리케이션의 액티비티 하나가 시작되면 새 작업을 시작하려 
+할 수도 있습니다(현재 작업 내에 배치되는 것 대신에). 아니면, 액티비티를 시작하면 그것의 
+기존 인스턴스 하나를 앞으로 가져오고자 할 수도 있습니다(백 스택 맨 위에서 새 인스턴스를 
+생성하는 것 대신에). 또는 백 스택에서 사용자가 작업을 떠날 때의 루트 액티비티를 제외하고 
+모든 액티비티를 지우고자 할 수도 있습니다.</p>
+
+<p>이 모든 것과 그 외에도 많은 것을 할 수 있는 것이 바로 
+<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+매니페스트 요소 안에 있는 속성과, 
+{@link android.app.Activity#startActivity startActivity()}에 전달한 인텐트에 있는 플래그입니다.</p>
+
+<p>이런 면에서, 여러분이 사용할 수 있는 주요 <a href="{@docRoot}guide/topics/manifest/activity-element.html">
+{@code &lt;activity&gt;}</a> 속성은 다음과 같습니다.</p>
+
+<ul class="nolist">
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">
+  {@code taskAffinity}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">
+  {@code launchMode}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">
+  {@code allowTaskReparenting}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">
+  {@code clearTaskOnLaunch}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
+  {@code alwaysRetainTaskState}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">
+  {@code finishOnTaskLaunch}</a></li>
+</ul>
+
+<p>그리고 다음은 여러분이 사용할 수 있는 주요 인텐트 플래그입니다.</p>
+
+<ul class="nolist">
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</li>
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</li>
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</li>
+</ul>
+
+<p>다음 섹션에서는 이와 같은 매니페스트 속성과 인텐트 플래그를 사용하여 
+액티비티가 작업과 연관되는 방식을 정의하고 백 스택에서 액티비티가 동작하는 방식을 정의하는 방법을 배우게 됩니다.</p>
+
+<p>이외에도 별도로 작업과 액티비티를 표시하는 방법에 대한 고려 사항과 
+개요 화면에서의 관리 방법을 논합니다. 자세한 정보는 <a href="{@docRoot}guide/components/recents.html">개요 화면</a>을 
+참조하십시오. 보통은 개요 화면에 작업과 액티비티가 어떻게 표현될지는 
+시스템이 정의하도록 두어야 합니다. 이 동작을 개발자가 수정할 필요도 없습니다.</p>
+
+<p class="caution"><strong>주의:</strong> 대부분의 애플리케이션은 액티비티와 작업에 대한 
+기본 동작을 인터럽트하지 않는 것이 정상입니다. 액티비티가 기본 동작을 수정하는 것이 필요하다는 
+판단이 서면, 시작 과정 중에 액티비티의 유용성을 테스트하십시오. 
+또한 다른 액티비티와 작업에서 <em>뒤로</em> 버튼을 써서 해당 액티비티로 돌아올 때에도 유용성을 테스트해야 합니다.
+사용자의 예상되는 동작과 충돌할 가능성이 있는 탐색 동작을 꼭 테스트하십시오.</p>
+
+
+<h3 id="TaskLaunchModes">시작 모드 정의하기</h3>
+
+<p>시작 모드를 사용하면 액티비티의 새 인스턴스가 현재 작업과 연관된 방식을 정의할 수 있게 
+해줍니다. 여러 가지 시작 모드를 두 가지 방식으로 정의할 수 있습니다.</p>
+<ul class="nolist">
+  <li><a href="#ManifestForTasks">매니페스트 파일 사용하기</a>
+    <p>매니페스트 파일에서 액티비티를 선언하는 경우, 액티비티가 시작될 때 여러 작업과 어떤 식으로 
+연관을 맺어야 하는지 지정할 수 있습니다.</li>
+  <li><a href="#IntentFlagsForTasks">인텐트 플래그 사용하기</a>
+    <p>{@link android.app.Activity#startActivity startActivity()}를 호출하는 경우 
+{@link android.content.Intent}에 플래그를 포함시켜 새 액티비티가 현재 작업과 어떻게 연관되어야 할지(또는 
+애초에 연관을 맺을지 아닐지) 선언하도록 할 수 있습니다.</p></li>
+</ul>
+
+<p>따라서, 액티비티 A가 액티비티 B를 시작하면 액티비티 B는 자신의 매니페스트에서 
+현재 작업과 연관을 맺는 데 적당한 방식(연관을 맺어야 한다면)을 정의할 수 있고 액티비티 A 또한 
+액티비티 B가 현재 작업과 연관을 맺는 방식을 요청할 수 있습니다. 두 액티비티가 모두 액티비티 B가 작업과 
+연관되는 방식을 정의하는 경우, 액티비티 A의 요청(인텐트에 정의된 바를 따름)을 액티비티 B의 
+요청(자신의 매니페스트에서 정의)보다 우위로 인식합니다.</p>
+
+<p class="note"><strong>참고:</strong> 매니페스트 파일에 사용할 수 있는 시작 모드 중에는 
+인텐트의 플래그로 사용할 수는 없는 것도 있으며, 이와 마찬 가지로 인텐트의 플래그로 사용할 수 있는 시작 모드 중에는 
+매니페스트에서 정의할 수 없는 것도 있습니다.</p>
+
+
+<h4 id="ManifestForTasks">매니페스트 파일 사용하기</h4>
+
+<p>매니페스트 파일에서 액티비티를 선언하는 경우, 액티비티가 작업과 
+어떤 식으로 연관되어야 할지 지정하려면 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+요소의 <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
+launchMode}</a> 속성을 사용하면 됩니다.</p>
+
+<p><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
+launchMode}</a> 속성은 액티비티가 작업 안으로 들어가며 시작되는 방법에 대한 지침을 
+나타냅니다. 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">launchMode</a></code>
+속성에 할당할 수 있는 시작 모드는 네 가지가 있습니다.</p>
+
+<dl>
+<dt>{@code "standard"} (기본 모드)</dt>
+  <dd>기본입니다. 시스템이 액티비티가 시작된 작업에서 액티비티의 새 인스턴스를 만들고 
+인텐트의 경로를 이것으로 지정합니다. 액티비티는 여러 번 인스턴트화될 수 있고, 
+각 인스턴스는 서로 다른 작업에 속할 수 있으며 한 작업에 여러 개의 인스턴스가 있을 수 있습니다.</dd>
+<dt>{@code "singleTop"}</dt>
+  <dd>액티비티의 인스턴스가 이미 현재 작업의 맨 위에 존재하는 경우, 시스템은 인텐트의 경로를 
+해당 인스턴스로 지정합니다. 이때 액티비티의 새 인스턴스를 만들기보다는 해당 인스턴스의 {@link
+android.app.Activity#onNewIntent onNewIntent()} 메서드를 호출하는 방법을 
+통합니다. 액티비티는 여러 번 인스턴트화될 수 있고, 각 인스턴스는 서로 다른 작업에 
+속할 수 있으며 한 작업에 여러 개의 인스턴스가 있을 수 있습니다(다만 백 스택의 맨 위에 있는 
+액티비티가 액티비티의 기존 인스턴스가 <em>아닌</em> 경우에만 이것이 적용됩니다).
+  <p>예를 들어 어느 작업의 백 스택이 루트 액티비티 A와 액티비티 B, C, 그리고 맨 위의 액티비티 D로 
+구성되어 있다고 가정합니다(이 스택은 A-B-C-D 형태를 띠며 D가 맨 위에 있습니다). 유형 D의 액티비티에 대한 인텐트가 도착합니다.
+D에 기본 {@code "standard"} 시작 모드가 있는 경우, 클래스의 새 인스턴스가 시작되고 이 스택은 
+A-B-C-D-D가 됩니다. 하지만, D의 시작 모드가 {@code "singleTop"}인 경우, D의 
+기존 인스턴스가 해당 인텐트를 {@link
+android.app.Activity#onNewIntent onNewIntent()}를 통해 받게 됩니다. 이것이 스택의 맨 위에 있기 때문입니다. 스택은 
+계속 A-B-C-D로 유지됩니다. 그러나 유형 B의 액티비티에 대한 인텐트가 도착하는 경우, 
+B의 새 인스턴스가 스택에 추가되며 이는 액티비티의 시작 모드가 {@code "singleTop"}이더라도 무관하게 적용됩니다.</p>
+  <p class="note"><strong>참고:</strong> 어느 액티비티의 새 인스턴스가 생성되면, 
+사용자가 <em>뒤로</em> 버튼을 눌러 이전 액티비티로 되돌아갈 수 있게 됩니다. 그러나 액티비티의 기존 
+인스턴스가 
+새 인텐트를 처리하는 경우, 사용자가 <em>뒤로</em> 버튼을 눌러도 새 인텐트가 {@link android.app.Activity#onNewIntent
+onNewIntent()}에 도착하기 전의 액티비티 
+상태로 
+되돌아갈 수 없습니다.</p>
+</dd>
+
+<dt>{@code "singleTask"}</dt>
+  <dd>시스템이 새 작업을 만들고 새 작업의 루트에 있는 액티비티를 인스턴트화합니다.
+하지만, 액티비티의 인스턴스가 이미 별개의 작업에 존재하는 경우, 시스템은 인텐트의 경로를 
+기존 인스턴스로 지정합니다. 이때 새 인스턴스를 만들기보다 해당 인스턴스의 {@link
+android.app.Activity#onNewIntent onNewIntent()} 메서드를 호출하는 방법을 통합니다. 한 번에 
+액티비티 인스턴스 한 개씩만 존재할 수 있습니다.
+  <p class="note"><strong>참고:</strong> 액티비티가 새 작업에서 시작되더라도, 
+<em>뒤로</em> 버튼을 누르면 여전히 사용자를 이전 액티비티로 돌려보냅니다.</p></dd>
+<dt>{@code "singleInstance"}.</dt>
+  <dd>{@code "singleTask"}와 같습니다. 다만 시스템이 인스턴스를 보유하고 있는 작업 안으로 
+다른 어떤 액티비티도 시작하지 않는다는 것은 예외입니다. 액티비티는 언제나 자신의 작업의 유일무이한 구성원입니다. 
+이것으로 시작한 액티비티는 모두 별개의 작업에서 열립니다.</dd>
+</dl>
+
+
+<p>또 다른 예로 Android 브라우저 애플리케이션이 있습니다. 이것은 웹 브라우저 액티비티가 항상 
+자신만의 작업에서 열려야 한다고 선언합니다. 이때 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 요소에 {@code singleTask} 시작 모드를 지정하는 방법을 씁니다. 
+다시 말해 애플리케이션이 Android 브라우저를 열라는 인텐트를 발행하면 
+브라우저의 액티비티가 애플리케이션과 같은 작업에 배치되지 <em>않는다</em>는 
+뜻입니다. 그 대신, 브라우저에 대한 새 작업이 시작되거나, 브라우저에 이미 
+배경에서 실행 중인 작업이 있는 경우 해당 작업이 전경으로 불려나와 새 인텐트를 처리하게 
+됩니다.</p>
+
+<p>액티비티가 새 작업에서 시작되었든 액티비티를 시작한 것과 같은 작업에서 시작되었든 관계 없이 
+<em>뒤로</em> 버튼을 사용하면 언제나 사용자를 이전 액티비티로 돌려보냅니다. 다만, 
+{@code singleTask} 시작 모드를 나타내는 액티비티를 시작한 다음 해당 
+액티비티의 인스턴스가 이미 배경 작업에 존재하는 경우, 그 작업 전체가 전경에 불려나옵니다. 이 시점에서 
+백 스택에는 이제 앞으로 가져온 작업에서 가져온 모든 액티비티가 포함되어 있으며, 이는 스택의 
+맨 위에 위치합니다. 그림 4는 이와 같은 유형의 시나리오를 나타낸 것입니다.</p>
+
+<img src="{@docRoot}images/fundamentals/diagram_backstack_singletask_multiactivity.png" alt="" />
+<p class="img-caption"><strong>그림 4.</strong> 시작 모드가 "singleTask"인 액티비티가 
+백 스택에 추가되는 방법을 표현한 것입니다. 이 액티비티가 이미 자신의 백 스택을 가지고 있는 
+배경 작업의 일부인 경우, 해당 백 스택도 모두 전경으로 
+불려나오며, 이는 현재 작업 위에 배치됩니다.</p>
+
+<p>매니페스트 파일에서 시작 모드를 사용하는 것에 대한 자세한 정보는 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+요소 문서를 참조하십시오. 여기에서 {@code launchMode} 속성과 허용된 값을 더 자세히 
+논합니다.</p>
+
+<p class="note"><strong>참고:</strong> 액티비티에 대하여 <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> 속성으로 지정한 동작을 
+재정의하려면 액티비티를 시작한 인텐트에 포함된 플래그를 사용하면 됩니다. 이 내용은 
+다음 섹션에서 논합니다.</p>
+
+
+
+<h4 id="#IntentFlagsForTasks">인텐트 플래그 사용하기</h4>
+
+<p>액티비티를 시작할 때면, 액티비티가 자신의 작업과 연관되는 기본 방식을 수정할 수 있습니다. 
+{@link
+android.app.Activity#startActivity startActivity()}에 전달한 인텐트 안에 있는 플래그를 포함시키면 됩니다. 기본 동작을 수정하는 데 사용할 수 있는 
+플래그는 다음과 같습니다.</p>
+
+<p>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</dt>
+    <dd>액티비티를 새 작업에서 시작합니다. 지금 시작하고 있는 액티비티에 대해 이미 실행 중인 작업이 있으면, 
+해당 작업의 마지막 상태를 복원하여 전경으로 불려나오고 액티비티는 새 인텐트를 
+{@link android.app.Activity#onNewIntent onNewIntent()}에서 수신합니다.
+    <p>이렇게 하면 {@code "singleTask"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> 값에서와 같은 동작을 발생시키며, 
+이는 이전 섹션에서 논한 것과 같습니다.</p></dd>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</dt>
+    <dd>시작되고 있는 액티비티가 현재 액티비티인 경우(백 스택 맨 위에 있는), 해당 액티비티의 새 인스턴스를 생성하는 대신 기존 
+인스턴스가 {@link android.app.Activity#onNewIntent onNewIntent()}에 
+대한 호출을 받습니다.
+    <p>이렇게 하면 {@code "singleTop"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> 값에서와 같은 동작을 발생시키며, 
+이는 이전 섹션에서 논한 것과 같습니다.</p></dd>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</dt>
+    <dd>시작되고 있는 액티비티가 이미 현재 작업에서 실행 중인 경우, 해당 액티비티의 
+새 인스턴스를 시작하는 대신 그 위에 있는 모든 다른 액티비티가 
+소멸되고 이 인텐트는 해당 액티비티(이제 맨 위로 올라옴)의 재개된 인스턴스로, 
+{@link android.app.Activity#onNewIntent onNewIntent()}를 통해 전달됩니다.
+    <p>이 동작을 발생시키는 <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
+속성에 대한 값은 없습니다.</p>
+    <p>{@code FLAG_ACTIVITY_CLEAR_TOP}는 
+{@code FLAG_ACTIVITY_NEW_TASK}와 함께 쓰이는 경우가 가장 보편적입니다. 
+이들 플래그를 함께 사용하면 다른 작업에 있는 기존 액티비티의 위치를 
+찾아 이를 인텐트에 응답할 수 있는 위치에 놓을 한 가지 방편이 됩니다. </p>
+    <p class="note"><strong>참고:</strong> 지정된 액티비티의 시작 모드가 
+{@code "standard"}인 경우, 
+이것 또한 스택에서 제거되고 그 자리에 새 인스턴스가 대신 생성되어 수신되는 인텐트를 
+처리하게 됩니다.  이는 시작 모드가 
+{@code "standard"}인 경우, 새 인텐트에 대해서는 항상 새 인스턴스가 생성되기 때문입니다. </p>
+</dd>
+</dl>
+
+
+
+
+
+<h3 id="Affinities">유사성 처리하기</h3>
+
+<p><em>유사성</em>이란 액티비티가 어느 작업에 소속되기를 선호하는지를 나타내는 것입니다. 기본적으로, 
+같은 애플리케이션에서 나온 액티비티는 서로 유사성을 지니고 있습니다. 따라서, 기본적으로 
+같은 애플리케이션 안에 있는 모든 액티비티는 같은 작업 안에 있는 것을 선호합니다. 하지만 액티비티에 대한 기본 유사성은 개발자가 
+수정할 수 있습니다. 각기 다른 애플리케이션에서 정의된 
+액티비티가 하나의 유사성을 공유할 수도 있고, 같은 애플리케이션에서 정의된 여러 액티비티에 
+서로 다른 작업 유사성을 할당할 수도 있습니다.</p>
+
+<p>어느 액티비티라도 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+요소의 <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a> 속성을 
+사용하여 유사성을 수정할 수 있습니다.</p>
+
+<p><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
+속성은 문자열 값을 취합니다. 이는 
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html">
+{@code &lt;manifest&gt;}
+</a> 요소에서 선언한 기본 패키지 이름과 달리 고유해야 합니다. 왜냐하면 시스템이 이 이름을 사용하여 애플리케이션의 기본 작업 유사성을 
+식별하기 때문입니다.</p>
+
+<p>유사성이 역할을 갖는 것은 다음과 같은 두 가지 상황에서입니다.</p>
+<ul>
+  <li>액티비티를 시작한 인텐트에 
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}
+ 플래그가 들어 있는 경우.
+
+<p>새로운 액티비티는 기본적으로 
+{@link android.app.Activity#startActivity startActivity()}를 호출한 액티비티의 작업 안으로 들어가며 시작됩니다. 이것은 발신자와 같은 
+백 스택 위로 밀어내집니다.  하지만 
+{@link android.app.Activity#startActivity startActivity()}에 
+전달된 인텐트에 {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}
+ 플래그가 들어있는 경우, 시스템은 새 액티비티를 담을 다른 작업을 찾습니다. 이는 새 작업인 경우가 많습니다.
+그렇지만 꼭 그래야 하는 것은 아닙니다.  새 액티비티와 같은 유사성을 가진 기존 작업이 이미 존재하는 경우, 
+해당 액티비티는 그 작업 안으로 들어가며 시작됩니다.  그렇지 않으면, 새 작업을 시작합니다.</p>
+
+<p>이 플래그 때문에 액티비티가 새 작업을 시작하게 되고 사용자가 <em>홈</em> 버튼을 눌러 이 액티비티를 
+떠나고자 
+하는 경우, 사용자가 작업으로 도로 이동할 방법이 있어야 합니다. 엔티티 중에는(예를 들어 
+알림 관리자) 액티비티를 항상 외부 작업으로만 시작하고 자신의 일부로서는 절대 시작하지 않는 것이 있습니다. 
+따라서 이들은 {@code FLAG_ACTIVITY_NEW_TASK}를 
+{@link android.app.Activity#startActivity startActivity()}에 전달하는 인텐트에 포함시킵니다. 
+이 플래그를 사용할 수 있는 외부 엔티티가 
+호출할 수 있는 액티비티를 가지고 있는 경우, 사용자가 시작된 작업에 돌아갈 수 있는 
+방법을 따로 가지고 있어야 합니다. 예를 들어 시작 관리자 아이콘을 이용한다든지 하는 방법입니다(작업의 루트 액티비티에 
+{@link android.content.Intent#CATEGORY_LAUNCHER} 인텐트 필터가 있습니다. 아래의 <a href="#Starting">작업 시작하기</a> 섹션을 참조하십시오).</p>
+</li>
+
+  <li>액티비티의 <a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">
+{@code allowTaskReparenting}</a> 속성이 {@code "true"}로 설정된 경우.
+  <p>이 경우, 액티비티는 자신이 시작한 작업에서 벗어나 유사성을 가진 다른 작업이 전경으로 
+나오면 그 작업으로 이동할 수 있습니다.</p>
+  <p>예를 들어 선택한 몇몇 도시에서 기상 상태를 예보하는 어느 액티비티가 
+여행 애플리케이션의 일부로 정의되어 있다고 가정합니다.  이것은 같은 애플리케이션에 있는 
+다른 여러 액티비티와 같은 유사성을 가지며(기본 애플리케이션 유사성) 이 속성으로 상위 재지정을 허용하기도 합니다. 
+액티비티 중 하나가 일기 예보 액티비티를 시작하면, 이는 처음에는 액티비티와 같은 작업에 
+속합니다. 하지만 여행 애플리케이션의 작업이 전경으로 불려나오면 
+일기 예보 액티비티는 그 작업에 다시 할당되며 그 안에 표시됩니다.</p>
+</li>
+</ul>
+
+<p class="note"><strong>팁:</strong> {@code .apk} 파일에 사용자 쪽에서 보기에 하나 이상의 "애플리케이션"이 
+들어있는 경우, <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
+속성을 사용하여 각 "애플리케이션"과 연관된 액티비티에 서로 다른 유사성을 할당하는 것이 좋습니다.</p>
+
+
+
+<h3 id="Clearing">백 스택 지우기</h3>
+
+<p>사용자가 작업을 오랜 시간 동안 떠나 있으면, 시스템이 루트 액티비티만 빼고 모든 액티비티를 
+해당 작업에서 지웁니다.  사용자가 다시 작업으로 돌아오면, 루트 액티비티만 복원됩니다. 
+시스템이 이런 식으로 동작하는 것은 오랜 시간이 지난 다음에는 사용자가 전에 하던 일을 중단하고 
+새로운 일을 시작하기 위해 작업에 돌아올 가능성이 크기 때문입니다. </p>
+
+<p>이 동작을 수정하는 데 사용할 수 있는 액티비티 속성이 몇 가지 있습니다. </p>
+
+<dl>
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#always">alwaysRetainTaskState</a></code>
+</dt>
+<dd>이 속성이 작업의 루트 액티비티 안에서 {@code "true"}로 설정되어 있는 경우, 
+방금 설명한 기본 동작이 일어나지 않습니다. 
+작업은 오랜 시간이 지난 뒤에도 자신의 스택에 있는 모든 액티비티를 유지합니다.</dd>
+
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#clear">clearTaskOnLaunch</a></code></dt>
+<dd>이 속성이 작업의 루트 액티비티 안에서 {@code "true"}로 설정되어 있는 경우, 
+사용자가 작업을 떠났다가 다시 돌아올 때마다 스택을 루트 액티비티까지 
+지웁니다.  바꿔 말하면, 이것은 
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
+{@code alwaysRetainTaskState}</a>와 정반대입니다. 사용자는 항상 작업의 초기 상태로 돌아오게 되며, 
+이는 아주 잠깐 동안만 작업을 떠난 경우에도 마찬가지입니다.</dd>
+
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTaskLaunch</a></code>
+</dt>
+<dd>이 속성은 <a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">{@code clearTaskOnLaunch}</a>와 같지만, 
+작업 전체가 아니라 
+하나의 액티비티에서 작동합니다.  이것은 루트 액티비티를 포함한 모든 액티비티가 없어지게 
+하기도 합니다.  이것을 {@code "true"}로 설정하면, 
+액티비티는 현재 세션에 대해서만 작업의 일부로 유지됩니다.  사용자가 작업을 떠났다가 
+다시 돌아오면 이 작업은 더 이상 존재하지 않습니다.</dd>
+</dl>
+
+
+
+
+<h3 id="Starting">작업 시작하기</h3>
+
+<p>액티비티를 작업의 진입 지점으로 설정하려면 여기에 작업에서 지정한 대로 
+{@code "android.intent.action.MAIN"}이 있는 인텐트 필터를 부여하고 
+{@code "android.intent.category.LAUNCHER"}를 
+지정된 카테고리로 설정하면 됩니다. 예:</p>
+
+<pre>
+&lt;activity ... &gt;
+    &lt;intent-filter ... &gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+    ...
+&lt;/activity&gt;
+</pre>
+
+<p>이런 종류의 인텐트 필터를 사용하면 액티비티에 대한 아이콘과 레이블이 
+애플리케이션 시작 관리자에 표시되어 사용자에게 액티비티를 시작할 방법을 부여하며, 
+액티비티를 시작하고 나면 이것이 생성한 작업에 언제든 돌아올 수 있게 됩니다.
+</p>
+
+<p>이 두 번째 능력이 중요합니다. 사용자는 작업을 떠났다가 이 액티비티 시작 관리자를 사용하여 나중에 작업에 
+돌아올 수 있어야 합니다. 이러한 이유로, 액티비티가 항상 작업을 시작하는 것으로 표시하는 <a href="#LaunchModes">시작
+모드</a> 두 가지, 즉 {@code "singleTask"}와 
+{@code "singleInstance"}는 액티비티에 
+{@link android.content.Intent#ACTION_MAIN}
+ 및 {@link android.content.Intent#CATEGORY_LAUNCHER} 필터가 있을 때에만 사용해야 합니다. 예를 들어 필터가 누락되면 다음과 같은 일이 
+발생합니다. 어느 인텐트가 {@code "singleTask"} 액티비티를 시작하여 새 작업을 시작하고, 
+사용자가 이 작업에서 일하며 어느 정도 시간을 보냅니다. 그런 다음 사용자가 <em>홈</em>
+ 버튼을 누릅니다. 이제 이 작업은 배경으로 전송되었으며 눈에 보이지 않습니다. 이제 사용자가 작업으로 되돌아갈 
+방법이 없어졌습니다. 이는 애플리케이션 시작 관리자에 표시되지 않기 때문입니다.</p>
+
+<p>사용자가 액티비티로 되돌아갈 수 있도록 하는 것을 원치 않는 경우, 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+ 요소의 
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">{@code finishOnTaskLaunch}</a>
+를 {@code "true"}로 설정하면 됩니다(<a href="#Clearing">스택 지우기</a>를 참조하십시오).</p>
+
+<p>작업과 액티비티가 개요 화면에서 어떻게 표시되고 관리되는지에 대한 
+자세한 정보는 <a href="{@docRoot}guide/components/recents.html">
+개요 화면</a>에서 확인하실 수 있습니다.</p>
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For more information about how to use intents to
+activate other application components and publish the intents to which your components
+respond, continue with the <b><a
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent
+Filters</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/ko/guide/index.jd b/docs/html-intl/intl/ko/guide/index.jd
new file mode 100644
index 0000000..73af3df
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/index.jd
@@ -0,0 +1,74 @@
+page.title=Android 소개
+
+@jd:body
+
+
+<div class="sidebox" style="width:220px"><!-- width to match col-4 below -->
+<p>앱의 작동 원리를 배워보고자 한다면, 우선 
+<a href="{@docRoot}guide/components/fundamentals.html">앱 기본 항목</a>부터 시작하십시오.</p>
+<p>바로 코딩을 시작하려면, <a href="{@docRoot}training/basics/firstapp/index.html">첫 앱 구축하기</a>를 읽어보십시오.</p>
+</div>
+
+<p>Android는 풍성한 애플리케이션 프레임워크를 제공하여 Java 언어 환경에서 실행되는 
+모바일 기기에서 사용할 혁신적인 앱과 게임을 구축할 수 있습니다. 왼쪽 탐색 영역에 목록으로 나열된 
+여러 문서에서 Android의 다양한 API를 사용하여 앱을 구축하는 방법에 대한 상세한 정보를 제공합니다.</p>
+
+<p>Android 개발을 처음 시도하신다면, 다음과 같은 
+Android 앱 프레임워크 기본 개념을 숙지하는 것이 중요합니다.</p>
+
+
+<div class="landing-banner">
+
+<div class="col-6">
+
+<h4>앱은 여러 개의 진입 지점을 제공합니다.</h4>
+
+<p>Android 앱은 여러 가지 고유한 구성 요소들의 조합으로 구축되며, 이러한 구성 요소는 개별적으로 
+호출할 수도 있습니다. 예를 들어 어떤 하나의 <em>액티비티</em>가 사용자 인터페이스를 위한 
+화면을 하나 제공하고, <em>서비스</em>가 배경에서 독립적으로 작업을 수행할 
+수 있습니다.</p>
+
+<p>한 구성 요소에서 또 다른 구성 요소를 시작하려면 <em>인텐트</em>를 사용하면 됩니다. 심지어 다른 앱에서도 
+구성 요소를 시작할 수 있습니다. 지도 앱에서 주소를 표시하는 액티비티를 시작하는 것이 좋은 예입니다. 이 모델은 
+하나의 앱에 대한 여러 개의 진입 지점을 제공하여 어느 앱이라도 다른 여러 앱이 호출할 수 있는 작업에 대해 
+사용자의 "기본" 앱 역할을 합니다.</p>
+
+
+<p><b>자세히 알아보기:</b></p>
+<ul class="nolist">
+<li><a href="{@docRoot}guide/components/fundamentals.html">앱 기본 항목</a>
+<li><a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a>
+<li><a href="{@docRoot}guide/components/activities.html">액티비티</a>
+</ul>
+
+</div>
+
+
+<div class="col-6">
+
+<h4>앱은 여러 가지 기기에 맞게 변경됩니다.</h4>
+
+<p>Android는 적응형 앱 프레임워크를 제공하여 여러 가지 기기 구성에 맞게 
+고유한 리소스를 제공할 수 있습니다. 예를 들어, 여러 가지 화면 크기에 맞춰 각기 다른 XML 
+레이아웃 파일을 생성하면 시스템이 현재 기기의 화면 크기를 근거로 
+어느 레이아웃을 적용할지 결정합니다.</p>
+
+<p>앱 기능이 특정한 하드웨어(예: 카메라)를 필요로 하는 경우 런타임에 
+기기 특징의 기능을 쿼리할 수 있습니다. 필요하다면 앱이 필요로 하는 기능을 선언할 수도 있습니다. 
+그러면 Google Play Store와 같은 앱 마켓에서 해당 기능을 지원하지 않는 기기에서 
+설치를 허용하지 않습니다.</p>
+
+
+<p><b>자세히 알아보기:</b></p>
+<ul class="nolist">
+<li><a href="{@docRoot}guide/practices/compatibility.html">기기 호환성</a>
+<li><a href="{@docRoot}guide/topics/resources/overview.html">리소스 개요</a>
+<li><a href="{@docRoot}guide/topics/ui/overview.html">사용자 인터페이스 개요</a>
+</ul>
+
+</div>
+
+</div><!-- end landing-banner -->
+
+
+
diff --git a/docs/html-intl/intl/ko/guide/topics/manifest/manifest-intro.jd b/docs/html-intl/intl/ko/guide/topics/manifest/manifest-intro.jd
new file mode 100644
index 0000000..c3550d0
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/manifest/manifest-intro.jd
@@ -0,0 +1,517 @@
+page.title=앱 매니페스트
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>이 문서의 내용</h2>
+<ol>
+<li><a href="#filestruct">매니페스트 파일의 구조</a></li>
+<li><a href="#filec">파일 규칙</a>
+<li><a href="#filef">파일 기능</a>
+	<ol>
+	<li><a href="#ifs">인텐트 필터</a></li>
+	<li><a href="#iconlabel">아이콘 및 레이블</a></li>
+	<li><a href="#perms">권한</a></li>
+	<li><a href="#libs">라이브러리</a></li>
+	</ol></li>
+</ol>
+</div>
+</div>
+
+<p>
+  모든 애플리케이션에는 루트 라이브러리에 AndroidManifest.xml 파일(정확히 
+이 이름으로)이 있어야 합니다. <span itemprop="description">매니페스트 파일은 
+Android 시스템에 대한 여러분의 앱 관련 필수 정보를 나타냅니다. 
+즉 앱의 코드를 실행하기 전에 시스템이 반드시 필요로 하는 정보를 
+말합니다.</span> 매니페스트가 하는 일에는 여러 가지가 있지만, 그 중에서 몇 가지만 소개하면 다음과 같습니다.
+</p>
+
+<ul>
+<li>애플리케이션에 대한 Java 패키지의 이름을 나타냅니다. 
+패키지 이름이 애플리케이션에 대한 고유한 식별자 역할을 합니다.</li>
+
+<li>애플리케이션의 구성 요소를 설명합니다. 액티비티, 
+서비스, 브로드캐스트 수신기 및 콘텐츠 제공자 등 애플리케이션을 이루는 여러 항목을 
+말합니다.  이것은 각 구성 요소를 구현하는 클래스의 이름을 나타내고 
+각각의 기능을 게시합니다(예를 들어 처리할 수 있는 {@link android.content.Intent 
+Intent} 메시지 종류 등).  이러한 선언을 통해 Android 시스템이 여러 구성 요소가 
+각각 무엇인지 알게 되고, 어떤 조건에서 시작해야 하는지 알 수 있습니다.</li>
+
+<li>어느 프로세스가 애플리케이션 구성 요소를 호스팅할 것인지 결정합니다.</li>  
+
+<li>API의 보호된 부분에 액세스하여 다른 애플리케이션과 상호 작용하려면 
+애플리케이션에 어느 권한이 꼭 필요한지 선언합니다.</li>  
+
+<li>또한, 이 애플리케이션의 구성 요소와 상호 작용하려면 다른 애플리케이션이 
+반드시 가지고 있어야 하는 권한도 선언합니다.</li>
+
+<li>이는 애플리케이션이 실행 중일 때 프로파일링과 기타 정보를 제공하는 
+{@link android.app.Instrumentation} 클래스를 목록으로 표시합니다.  이러한 선언이 매니페스트에 나타나는 것은 
+애플리케이션이 개발 중이고 테스트되는 단계에만 국한됩니다. 
+이들은 애플리케이션이 게시되기 전에 제거됩니다.</li>
+
+<li>이는 애플리케이션이 필요로 하는 Android API의 최소 레벨을 
+선언합니다.</li>
+
+<li>애플리케이션이 연결되어야 하는 라이브러리를 목록으로 표시합니다.</li>
+</ul>
+
+
+<h2 id="filestruct">매니페스트 파일의 구조</h2>
+
+<p>
+아래의 다이어그램은 매니페스트 파일의 일반적인 구조와 매니페스트 파일에 
+들어있을 수 있는 모든 요소를 표시한 것입니다.  각 요소와 각각의 속성을 모두 문서화한 
+전문은 별도의 파일에서 확인하실 수 있습니다.  어떤 요소에 대해서든 
+상세한 정보를 보려면 다이어그램에서 해당 요소 이름을 클릭하십시오. 
+이름은 다이어그램 뒤에 나오는 요소 목록(알파벳 순) 또는 
+요소 이름이 언급되는 기타 영역 어디서든 클릭할 수 있습니다. 
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
+
+    <a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration /&gt;</a>  <!-- ##api level 3## -->
+    <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature /&gt;</a>  <!-- ##api level 4## -->
+    <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens /&gt;</a>  <!-- ##api level 4## -->
+    <a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html">&lt;compatible-screens /&gt;</a>  <!-- ##api level 9## -->
+    <a href="{@docRoot}guide/topics/manifest/supports-gl-texture-element.html">&lt;supports-gl-texture /&gt;</a>  <!-- ##api level 11## -->
+
+    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action /&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category /&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;/activity&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;/activity-alias&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data/&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;/service&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;/receiver&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/path-permission-element.html">&lt;path-permission /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;/provider&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library /&gt;</a>
+
+    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;/application&gt;</a>
+
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;/manifest&gt;</a>
+</pre>
+
+<p>
+매니페스트 파일에 표시될 수 있는 모든 요소는 아래에 알파벳 순서로 
+목록으로 표시되어 있습니다.  합법적인 요소는 이들이 전부입니다. 개발자 나름대로 요소 또는 속성을 
+추가해서는 안 됩니다.  
+</p>
+
+<p style="margin-left: 2em">
+<code><a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens&gt;</a></code>  <!-- ##api level 4## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration&gt;</a></code>  <!-- ##api level 3## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature&gt;</a></code>  <!-- ##api level 4## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</a></code>
+</p>
+
+
+    
+
+<h2 id="filec">파일 규칙</h2>
+
+<p>
+몇몇 규칙과 규정은 매니페스트 내의 모든 요소와 속성에 전반적으로 
+적용됩니다.
+</p>
+
+<dl>
+<dt><b>요소</b></dt>
+<dd>필수 요소는 
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> 및 
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 요소뿐으로, 
+이들은 각기 따로 표시되어야 하며 한 번씩만 발생할 수 있습니다.  
+나머지는 대부분 여러 번 발생할 수 있거나 전혀 발생하지 않기도 합니다. 다만, 
+그 중 최소한 몇몇은 있어야 매니페스트가 무엇이든 의미 있는 작업을 
+달성할 수 있습니다.
+
+<p>
+요소에 무엇이든 들어있기만 하면 다른 요소가 그 요소에 들어 있는 것입니다.  
+모든 값은 요소 내의 문자 데이터로서가 아니라 속성을 통해 설정됩니다.
+</p>
+
+<p>
+같은 레벨에 있는 여러 요소는 보통 순서가 지정되지 않습니다.  예를 들어 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>, 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> 및 
+<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code> 
+요소는 어떤 순서로든 서로 섞여도 됩니다  (이 규칙에서 
+<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
+요소는 예외입니다.  이것은 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>의 별칭이므로 
+이를 반드시 따라야 합니다).
+</p></dd>
+
+<dt><b>속성</b></dt>
+<dd>공식적인 의미에서 모든 속성은 선택 항목입니다.  그러나, 요소가 목적을 달성하기 
+위해서 반드시 지정되어야 하는 것이 몇 가지 있습니다.  관련 문서를 
+지침으로 사용하십시오.  정말로 선택적인 속성의 경우, 기본 값을 언급하거나 
+사양이 없으면 어떤 일이 벌어지는지 진술합니다.
+
+<p>루트 
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> 
+요소의 몇 가지 속성을 제외하고 모든 속성 이름은 {@code android:alwaysRetainTaskState} 접두사로 시작합니다.
+예를 들어, {@code android:}와 같습니다.  이 접두사는 범용이기 때문에 
+속성을 이름으로 참조하는 경우 관련 문서가 이를 생략하는 경우가 
+일반적입니다.</p></dd>
+
+<dt><b>클래스 이름 선언</b></dt>
+<dd>대다수의 요소가 Java 객체에 상응합니다. 여기에는 
+애플리케이션 자체에 대한 요소가 포함되며(
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+요소), 그것의 주 구성 요소도 포함됩니다. 즉, 액티비티 
+(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>), 
+서비스
+(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>), 
+브로드캐스트 수신기
+(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>) 및 
+콘텐츠 제공자
+(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>) 등이 이에 해당됩니다.  
+
+<p>
+하위 클래스를 정의하는 경우 구성 요소 클래스
+({@link android.app.Activity}, {@link android.app.Service}, 
+{@link android.content.BroadcastReceiver} 및 {@link android.content.ContentProvider})는 거의 항상 이렇게 하게 되는데, 
+이때 하위 클래스는 {@code name} 속성을 통해 선언됩니다.  이 이름에 반드시 
+완전한 패키지 지정이 포함되어 있어야 합니다.  
+예를 들어, {@link android.app.Service} 하위 클래스를 선언하려면 다음과 같이 할 수 있습니다.
+</p>
+
+<pre>&lt;manifest . . . &gt;
+    &lt;application . . . &gt;
+        &lt;service android:name="com.example.project.SecretService" . . . &gt;
+            . . .
+        &lt;/service&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+그러나 일종의 줄임으로서 문자열의 첫 번째 글자가 마침표인 경우, 해당 
+문자열은 애플리케이션의 패키지 이름에 추가됩니다(
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> 
+요소의 
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code> 
+속성에서 지정한 바와 같이).  다음 할당은 위의 것과 같습니다. 
+</p>
+
+<pre>&lt;manifest package="com.example.project" . . . &gt;
+    &lt;application . . . &gt;
+        &lt;service android:name=".SecretService" . . . &gt;
+            . . .
+        &lt;/service&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+Android는 구성 요소를 시작할 때 이름이 명명된 하위 클래스의 인스턴스를 생성합니다.  
+하위 클래스가 지정되지 않은 경우, 기본 클래스의 인스턴스를 생성합니다.
+</p></dd>
+
+<dt><b>여러 개의 값</b></dt>
+<dd>하나 이상의 값을 지정할 수 있는 경우, 해당 요소는 
+한 요소 안에 여러 개의 값을 목록으로 표시하기보다 거의 항상 반복됩니다.  
+예를 들어 한 인텐트 필터가 여러 개의 작업을 목록으로 표시할 수 있습니다.
+
+<pre>&lt;intent-filter . . . &gt;
+    &lt;action android:name="android.intent.action.EDIT" /&gt;
+    &lt;action android:name="android.intent.action.INSERT" /&gt;
+    &lt;action android:name="android.intent.action.DELETE" /&gt;
+    . . .
+&lt;/intent-filter&gt;</pre></dd>
+
+<dt><b>리소스 값</b></dt>
+<dd>몇몇 속성에는 사용자에게 표시될 수 있는 값이 있습니다. 예를 들어 
+액티비티에 대한 레이블과 아이콘 등이 이에 해당됩니다.  이러한 속성의 값은 
+지역화해야 하며 따라서 리소스나 테마에서 설정됩니다.  리소스 
+값은 다음과 같은 형식으로 표현됩니다.</p>
+
+<p style="margin-left: 2em">{@code @[<i>패키지</i>:]<i>유형</i>:<i>이름</i>}</p>
+
+<p>
+여기에서 <i>패키지</i> 이름은 리소스가 애플리케이션과 같은 패키지에 있으면 생략할 수 있고,
+ <i>유형</i> 은 "문자열" 또는 "그릴 수 있음" 같은 리소스 유형입니다. 그리고
+ <i>이름</i> 은 특정 리소스를 식별하는 이름입니다.  
+예:
+</p>
+
+<pre>&lt;activity android:icon="@drawable/smallPic" . . . &gt</pre>
+
+<p>
+테마에서 가져온 값도 비슷한 방식으로 표현되지만, 처음 부분에 '{@code ?}'를 사용합니다
+('{@code @}' 대신).
+</p>
+
+<p style="margin-left: 2em">{@code ?[<i>패키지</i>:]<i>유형</i>:<i>이름</i>}
+</p></dd>
+
+<dt><b>문자열 값</b></dt>
+<dd>속성 값이 문자열인 경우, 이중 백슬래시('{@code \\}')를 사용하여 
+문자 이스케이프를 수행해야 합니다. 예를 들어 줄바꿈에는 {@code \\n}, 
+유니코드 문자에는 '{@code \\uxxxx}'를 쓰십시오.</dd>
+</dl>
+
+
+<h2 id="filef">파일 기능</h2>
+
+<p>
+다음 섹션에서는 Android 기능을 매니페스트 파일에 반영하는 
+몇 가지 방식을 설명합니다.
+</p>
+
+
+<h3 id="ifs">인텐트 필터</h3>
+
+<p>
+애플리케이션의 핵심 구성 요소(액티비티, 서비스 및 브로드캐스트 
+수신기)를 활성화하는 것은 <i>인텐트</i>입니다.  인텐트는 
+원하는 작업을 설명하는 정보 묶음입니다({@link android.content.Intent} 객체).
+여기에는 작업을 수행할 데이터, 작업을 수행할 구성 요소의 카테고리와 
+기타 관련 지침 등이 포함됩니다.  
+Android는 인텐트에 응답할 적절한 구성 요소를 찾아 필요한 경우 구성 요소의 
+새 인스턴스를 시작하고, 이것을 인텐트 객체에 
+전달합니다.
+</p>
+
+<p>
+구성 요소는 자신의 능력을 알립니다. 즉, 자신이 응답할 수 있는 
+인텐트 종류를 밝힙니다. 이때 사용하는 것이 <i>인텐트 필터</i>입니다.  Android 시스템은 
+구성 요소를 시작하기 전에 해당 구성 요소가 처리할 수 있는 인텐트에 대해 학습해야 하기 때문에, 
+인텐트 필터는 매니페스트 파일에 
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> 
+요소로 지정됩니다.  구성 요소 하나에 필터는 얼마든지 있을 수 있으며, 각각 서로 다른 기능을 
+설명하게 됩니다.
+</p>
+
+<p>
+대상 구성 요소를 명시적으로 지명하는 인텐트가 해당 구성 요소를 활성화합니다.
+필터는 아무런 역할을 하지 않습니다.  하지만 대상을 이름으로 지정하지 않는 인텐트의 경우에는 
+자신이 구성 요소의 필터 중 하나를 통과할 수 있을 때에만 해당 구성 요소를 활성화할 수 
+있습니다.
+</p>
+
+<p>
+인텐트 객체를 인텐트 필터에 대해 테스트하는 방법에 대한 자세한 방법은 
+별도의 문서인 
+<a href="{@docRoot}guide/components/intents-filters.html">인텐트 
+및 인텐트 필터</a>를 참조하십시오.
+</p>
+
+
+<h3 id="iconlabel">아이콘 및 레이블</h3>
+
+<p>
+대다수의 요소에 {@code icon}과 {@code label} 속성이 있으며 
+이것으로 사용자에게 표시될 수 있는 작은 아이콘과 텍스트 레이블을 나타냅니다.  몇몇 요소에는 
+{@code description} 속성도 있어 좀 더 긴 설명 텍스트를 나타낼 수 있고, 이것 또한 화면에 
+표시될 수 있습니다.  예를 들어 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+요소는 이와 같은 속성을 셋 모두 가지고 있어 사용자가 이를 요청한 애플리케이션에 대한 
+권한을 허가할 것인지 여부를 물으면 해당 권한, 
+권한의 이름과 그에 수반되는 내용에 대한 설명을 
+사용자에게 표시할 수 있습니다.
+</p>
+
+<p>
+어떤 경우에든, 요소에서 설정된 아이콘과 레이블이 해당 컨테이너의 모든 하위 요소에 대한 기본 
+{@code icon}과 {@code label} 설정이 됩니다.  
+따라서 
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+요소에서 설정된 아이콘과 레이블이 애플리케이션의 각 요소에 대한 기본 아이콘과 레이블입니다.  
+이와 유사하게, 구성 요소에 대해 설정된 아이콘과 레이블이 &mdash; 예를 들어 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 
+요소 &mdash; 각 구성 요소의 
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> 
+요소에 대한 기본 설정입니다.  
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+요소가 레이블을 설정하지만 액티비티와 그 인텐트 필터는 이를 설정하지 않는 경우, 
+애플리케이션 레이블을 액티비티와 인텐트 필터 양쪽 모두의 레이블인 것으로 
+취급합니다.
+</p>
+
+<p>
+인텐트 필터에 대해 설정된 아이콘과 레이블은 구성 요소가 사용자에게 
+표시될 때마다 구성 요소를 나타내는 데 사용되며, 이는 필터가 알린 기능을 
+충족하는 것입니다.  예를 들어 
+"{@code android.intent.action.MAIN}" 및 
+"{@code android.intent.category.LAUNCHER}"가 설정된 필터는 
+액티비티를 애플리케이션을 초기화하는 주역으로 알립니다. 다시 말해, 
+애플리케이션 시작 관리자에 표시되어야 하는 것이 됩니다.  따라서 필터에서 설정된 아이콘과 레이블이 
+시작 관리자에 표시되는 아이콘과 레이블입니다.
+</p>
+
+
+<h3 id="perms">권한</h3>
+
+<p>
+통상 <i>권한</i> 이란 기기에서 코드의 일부분 또는 데이터에 대한 액세스를 한정하는 
+제한입니다.   이런 한계를 부과하는 것은 중요한 데이터와 코드를 보호하여 
+이들이 남용되어서 사용자 환경을 왜곡하거나 손상시키지 않도록 하기 위해서입니다.  
+</p>
+
+<p>
+각 권한은 고유한 레이블로 식별할 수 있습니다.  레이블을 보면 자신이 어떤 작업을 제한하는지 
+나타내는 경우가 잦습니다.  예를 들어 다음은 Android가 정의하는 몇 가지 권한을 나타낸 
+것입니다.
+</p>
+
+<p style="margin-left: 2em">{@code android.permission.CALL_EMERGENCY_NUMBERS}
+<br/>{@code android.permission.READ_OWNER_DATA}
+<br/>{@code android.permission.SET_WALLPAPER}
+<br/>{@code android.permission.DEVICE_POWER}</p>
+
+<p>
+하나의 기능을 보호하는 데에는 권한 하나면 충분합니다.
+</p>
+
+<p>
+애플리케이션에서 권한으로 보호하는 기능에 액세스해야 하는 경우, 
+해당 권한이 필요하다고 매니페스트의 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 
+요소로 선언해야 합니다.  그런 다음, 해당 애플리케이션이 기기에 설치되고 나면 
+설치 관리자가 요청한 권한을 허가할지 여부를 판별합니다. 
+이때 애플리케이션의 인증서를 서명한 권한을 확인하고 어떤 경우에는 사용자에게 
+묻기도 합니다.  
+권한이 허가되면 해당 애플리케이션은 보호된 기능을 사용할 수 
+있습니다.  허가되지 않으면, 그러한 기능에 액세스하려는 애플리케이션의 시도가 단순히 실패하고 사용자에게는 
+아무런 알림도 표시되지 않습니다. 
+</p>
+
+<p>
+애플리케이션은 권한을 사용하여 자신의 구성 요소를(액티비티, 서비스, 
+브로드캐스트 수신기 및 콘텐츠 제공자) 보호할 수도 있습니다.  Android가 정의한 
+권한이라면 어떤 것이든 사용할 수 있고(
+{@link android.Manifest.permission android.Manifest.permission}에 목록으로 나열), 
+아니면 다른 애플리케이션이 선언한 권한을 사용해도 됩니다.  아예 직접 자신만의 권한을 정의해도 됩니다.  새 권한을 선언할 때에는 
+
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 
+요소를 사용합니다.  예를 들어 액티비티를 보호하려면 다음과 같이 하면 됩니다.
+</p>
+
+<pre>
+&lt;manifest . . . &gt;
+    &lt;permission android:name="com.example.project.DEBIT_ACCT" . . . /&gt;
+    &lt;uses-permission android:name="com.example.project.DEBIT_ACCT" /&gt;
+    . . .
+    &lt;application . . .&gt;
+        &lt;activity android:name="com.example.project.FreneticActivity"
+                  android:permission="com.example.project.DEBIT_ACCT"
+                  . . . &gt;
+            . . .
+        &lt;/activity&gt;
+    &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+
+<p>
+이 예시에서는 {@code DEBIT_ACCT} 권한이 
+
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 
+요소로 선언하였을 뿐만 아니라, 해당 권한의 사용 또한 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 
+요소로 요청되었다는 점을 눈여겨 보십시오.  이것의 사용을 요청해야 애플리케이션의 다른 구성 요소가 보호된 
+액티비티를 시작할 수 있습니다. 이는 해당 보호를 애플리케이션 자신이 부과한 것이더라도 
+관계 없이 적용됩니다.  
+</p>
+
+<p>
+같은 예시에서, {@code permission} 속성이 다른 곳에서 
+선언한 권한에 설정된 경우
+(예: {@code android.permission.CALL_EMERGENCY_NUMBERS}), 이것을 
+
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 
+요소를 사용하여 다시 선언할 필요가 없습니다.  하지만 해당 권한의 사용은 여전히 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>로 요청해야 합니다. 
+</p>
+
+<p>
+
+<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code> 
+요소는 코드로 정의될 권한 그룹에 대한 네임스페이스를 
+선언합니다.  그리고 
+<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+가 권한 집합에 대한 레이블을 정의합니다(매니페스트에 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 
+요소로 선언한 것과 다른 곳에서 선언한 것 양쪽 모두).  이것은 권한이 사용자에게 표시될 때 
+그룹 지정될 방식에만 영향을 미칩니다.  
+<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+요소는 그룹에 어느 권한이 속해 있는지 지정하는 것이 아니라, 그저 
+그룹에 이름을 부여할 뿐입니다.  그룹에 권한을 배치하려면 그룹 이름을 
+
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 
+요소의 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code> 
+속성에 할당하면 됩니다.
+</p>
+
+
+<h3 id="libs">라이브러리</h3>
+
+<p>
+모든 애플리케이션은 기본 Android 라이브러리에 연결되어 있습니다. 여기에는 
+애플리케이션 구축을 위한 기본적인 패키지(액티비티, 서비스, 
+인텐트, 보기, 버튼, 애플리케이션, ContentProvider 등 보편적인 클래스 포함)가 포함되어 
+있습니다.
+</p>
+
+<p>
+그러나 패키지 가운데에는 자신만의 라이브러리에 속한 것도 있습니다.  애플리케이션이 
+사용하는 코드의 출처가 이러한 패키지 가운데 어느 한 가지에 해당되는 경우, 해당 패키지에 연결되도록 
+명시적으로 요청해야만 합니다.  매니페스트에는 별도의 
+<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code> 
+요소가 들어 있어 각 라이브러리의 이름을 나타내야 합니다  (라이브러리 이름은 패키지에 대한 
+관련 문서에서 찾을 수 있습니다).
+</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/providers/calendar-provider.jd b/docs/html-intl/intl/ko/guide/topics/providers/calendar-provider.jd
new file mode 100644
index 0000000..4d69b60
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/providers/calendar-provider.jd
@@ -0,0 +1,1184 @@
+page.title=캘린더 제공자
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+    <h2>이 문서의 내용</h2>
+    <ol>
+  <li><a href="#overview">기본 정보</a></li>
+  <li><a href="#manifest">사용자 권한</a></li>
+  <li><a href="#calendar">캘린더 테이블</a>
+<ol>
+      <li><a href="#query">캘린더 쿼리</a></li>
+      <li><a href="#modify-calendar">캘린더 수정</a></li>
+      <li><a href="#insert-calendar">캘린더 삽입</a></li>
+    </ol>
+  </li>
+  <li><a href="#events">이벤트 테이블</a>
+<ol>
+      <li><a href="#add-event">이벤트 추가</a></li>
+      <li><a href="#update-event">이벤트 업데이트</a></li>
+      <li><a href="#delete-event">이벤트 삭제</a></li>
+    </ol>
+  </li>
+  <li><a href="#attendees">참석자 테이블</a>
+<ol>
+      <li><a href="#add-attendees">참석자 추가</a></li>
+    </ol>
+  </li>
+  <li><a href="#reminders">알림 테이블</a>
+<ol>
+      <li><a href="#add-reminders">알림 추가</a></li>
+    </ol>
+  </li>
+  <li><a href="#instances">인스턴스 테이블</a>
+  <ol>
+      <li><a href="#query-instances">인스턴스 테이블 쿼리</a></li>
+  </ol></li>
+  <li><a href="#intents">캘린더 인텐트</a>
+  <ol>
+      <li><a href="#intent-insert">인텐트를 사용하여 이벤트 삽입</a></li>
+      <li><a href="#intent-edit">인텐트를 사용하여 이벤트 편집</a></li>
+      <li><a href="#intent-view">인텐트를 사용하여 캘린더 데이터 보기</a></li>
+    </ol>
+  </li>
+  
+  <li><a href="#sync-adapter">동기화 어댑터</a></li>
+</ol>
+
+    <h2>Key 클래스</h2>
+    <ol>
+      <li>{@link android.provider.CalendarContract.Calendars}</li>
+      <li>{@link android.provider.CalendarContract.Events}</li>
+      <li>{@link android.provider.CalendarContract.Attendees}</li>
+      <li>{@link android.provider.CalendarContract.Reminders}</li>
+    </ol>
+</div>
+</div>
+
+<p>캘린더 제공자는 사용자의 캘린더 이벤트를 저장하는 리포지토리입니다. 
+캘린더 제공자 API를 사용하면 캘린더, 이벤트, 참석자, 알림 등의 쿼리, 삽입, 업데이트 및 
+삭제 등의 작업을 수행할 수 있습니다.</p>
+
+
+<p>캘린더 제공자 API는 애플리케이션과 동기화 어댑터에서 사용할 수 있습니다. 
+어떤 유형의 프로그램이 호출을 하는 주체인지에 따라 규칙이 각기 다릅니다. 
+이 문서는 주로 캘린더 제공자 API를 애플리케이션으로 사용하는 것에 주안점을 두었습니다. 
+여러 동기화 어댑터가 서로 어떻게 다른지 논의한 내용은 
+<a href="#sync-adapter">동기화 어댑터</a>를 참조하십시오.</p>
+
+
+<p>캘린더 데이터를 읽거나 쓰려면 보통 애플리케이션의 매니페스트에 
+적절한 권한이 포함되어 있어야 합니다. 이는 <a href="#manifest">사용자 
+권한</a>에 설명되어 있습니다. 공통 작업을 쉽게 수행하기 위해 캘린더
+제공자는 <a href="#intents">캘린더
+인텐트</a>에 설명된 바와 같이 인텐트 집합을 제공합니다. 이와 같은 인텐트는 사용자를 캘린더 애플리케이션으로 이동시켜 
+이벤트 삽입, 보기 및 편집을 할 수 있게 해줍니다. 사용자는 캘린더 애플리케이션과 상호 작용한 다음 
+원래 애플리케이션으로 돌아옵니다. 따라서, 여러분의 애플리케이션이 이벤트를 보거나 
+생성하기 위해 권한 허가를 요청할 필요도 없고 사용자 인터페이스를 제공할 필요도 없는 것입니다.</p>
+
+<h2 id="overview">기본 정보</h2>
+
+<p><a href="{@docRoot}guide/topics/providers/content-providers.html">콘텐츠 제공자</a>는 데이터를 저장하여 애플리케이션에서 
+이에 액세스할 수 있도록 합니다. 일반적으로, Android 플랫폼에서 제공하는 콘텐츠 제공자(캘린더 제공자 포함)는
+관계 데이터베이스 모델에 기초하여 테이블 집합으로 데이터를 노출합니다. 이 모델에서 각 행은 레코드이고,
+각 열은 특정한 유형과 의미를 가진 데이터입니다. 애플리케이션과 동기화 어댑터는 
+캘린더 제공자 API를 통해 사용자의 캘린더 데이터를 보관하고 있는 데이터베이스 테이블에 
+읽기/쓰기 액세스 권한을 얻을 수 있습니다.</p>
+
+<p>모든 콘텐츠 제공자는 데이터 세트를 고유하게 식별하는 공개 URI(
+{@link android.net.Uri} 
+개체로 래핑됨)를 노출합니다.  여러 데이터 세트(여러 테이블)를 제어하는 콘텐츠 제공자는
+각 데이터 세트에 별도의 URI를 노출합니다.  
+제공자에 대한 URI는 모두 문자열 "content://"로 시작합니다.  
+이것을 보면 데이터를 콘텐츠 제공자가 제어하고 있다는 것을 알아볼 수 있습니다. 
+캘린더 제공자가 각각의 클래스(테이블)에 대한 URI의 상수를 정의합니다. 
+이와 같은 URI는 <code><em>&lt;class&gt;</em>.CONTENT_URI</code> 형식을 취합니다. 
+예를 들면 다음과 같습니다. {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}</p>
+
+<p>그림 1은 캘린더 제공자 데이터 모델을 그림으로 나타낸 것입니다. 
+이 그림에는 메인 테이블과이들을 서로 연결하는 필드가 표시되어 있습니다.</p>
+
+<img src="{@docRoot}images/providers/datamodel.png" alt="Calendar Provider Data Model" />
+<p class="img-caption"><strong>그림 1.</strong> 캘린더 제공자 데이터 모델.</p>
+
+<p>한 사용자가 여러 개의 캘린더를 가질 수 있으며, 여러 가지 캘린더는 각기 다른 유형의 계정(Google 캘린더, Exchange 등)과 연결될 수 있습니다.</p>
+
+<p>{@link android.provider.CalendarContract}가 캘린더의 데이터 모델과 이벤트 관련 정보를 정의합니다. 이 데이터는 아래에 나열한 것과 같은 여러 테이블에 저장됩니다.</p>
+
+<table>
+  <tr>
+    <th>테이블(클래스)</th>
+    <th>설명</th>
+  </tr>
+  <tr>
+    <td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
+    
+    <td>이 테이블에는 캘린더별 정보가 담겨 있습니다.
+ 이 테이블의 행마다 한 캘린더의 세부 정보, 
+예를 들어 이름, 색상, 동기화 정보 등이 들어갑니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Events}</td>
+    
+    <td>이 테이블에는 이벤트별 정보가 담겨 있습니다.
+ 이 테이블의 행마다 한 이벤트의 세부 정보
+예를 들어 이벤트 제목, 위치, 시작 시간, 종료 시간 등의 정보가 들어갑니다.
+ 이벤트는 일회성일 수도 있고 여러 번 반복될 수도 있습니다. 
+참석자, 알림 및 확장된 속성 등은 별도의 테이블에 저장됩니다. 
+이들 테이블에는 각기 {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}가 있어 
+이벤트 테이블의 {@link android.provider.BaseColumns#_ID}를 참조합니다.</td>
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances}</td>
+    
+    <td>이 테이블에는 각 이벤트 발생의 시작 시간과 종료 시간이 
+담겨 있습니다. 이 테이블의 각 행이 하나의 이벤트 발생을 나타냅니다.
+ 일회성 이벤트의 경우, 이벤트에 대한 1:1 인스턴스 매핑이 있습니다.
+ 반복되는 이벤트의 경우, 해당 이벤트가 여러 번 발생하는 것에 맞추어 
+자동으로 여러 행이 생성됩니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Attendees}</td>
+    
+    <td>이 테이블에는 이벤트 참석자(게스트) 정보가 담겨 있습니다.
+ 각 행이 주어진 이벤트의 게스트 한 사람을 나타냅니다.
+ 이것이 게스트의 유형과, 이벤트에 대한 해당 게스트의 참석 여부 응답을 
+나타냅니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Reminders}</td>
+    
+    <td>이 테이블에는 경고/알림 데이터가 담겨 있습니다.
+ 각 행이 주어진 이벤트에 대한 경고 하나를 나타냅니다. 
+이벤트 하나에 여러 개의 알림이 있을 수 있습니다. 이벤트당 최대 알림 개수는
+
+{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS}에서 지정되고, 
+이는 주어진 캘린더를 소유한 동기화 어댑터가 설정합니다.
+ 알림은 이벤트 몇 분 전에 지정되며 사용자에게 어떻게 경고할 것인지를 
+결정하는 메서드를 가지고 있습니다.</td>
+  </tr>
+  
+</table>
+
+<p>캘린더 제공자 API는 유연성과 강력함을 염두에 두고 만들어진 것입니다. 
+그와 동시에 우수한 최종 사용자 경험을 제공하고 캘린더와 그 데이터의 
+무결성을 보호하는 것 또한 중요합니다. 이를 위해서
+API를 사용할 때 유념해야 할 사항은 다음과 같습니다.</p>
+
+<ul>
+
+<li><strong>캘린더 이벤트 삽입, 업데이트 및 보기.</strong> 캘린더 제공자로부터 직접 이벤트를 삽입, 변경하고 읽으려면 적절한 <a href="#manifest">권한</a>이 필요합니다. 그러나, 완전한 캘린더 애플리케이션 또는 동기화 어댑터를 구축하는 경우가 아니라면 이와 같은 권한을 요청할 필요가 없습니다. 대신 Android의 캘린더 애플리케이션이 지원하는 인텐트를 사용하여 해당 애플리케이션에 읽기 및 쓰기 작업을 분배하면 됩니다. 인텐트를 사용하면, 애플리케이션이 사용자를 캘린더 애플리케이션으로 보내 사전에 작성된 양식으로 원하는 작업을 
+수행하게 합니다. 작업이 끝나면 사용자는 애플리케이션으로 돌아옵니다. 
+캘린더를 통해 공통 작업을 수행하도록 애플리케이션을 설계함으로써 사용자에게 일관되고 강력한 
+사용자 인터페이스를 제공하는 것입니다. 이것이 권장 방법입니다.
+ 자세한 정보는 <a href="#intents">캘린더
+인텐트</a>를 참조하십시오.</p>
+
+
+<li><strong>동기화 어댑터.</strong> 
+동기화 어댑터는 사용자의 기기에 있는 캘린더 데이터를 다른 서버 또는 데이터 소스와 동기화합니다. 
+{@link android.provider.CalendarContract.Calendars}와
+{@link android.provider.CalendarContract.Events} 테이블에는
+동기화 어댑터가 사용하도록 예약된 열이 있습니다.
+제공자와 애플리케이션은 이를 수정해서는 안 됩니다. 사실, 동기화 어댑터로 액세스하지 않는 한 
+이 열이 표시되지 않습니다. 
+동기화 어댑터에 대한 자세한 정보는 <a href="#sync-adapter">동기화 어댑터</a>를 참조하십시오.</li>
+
+</ul>
+
+
+<h2 id="manifest">사용자 권한</h2>
+
+<p>캘린더 데이터를 읽으려면 애플리케이션의 매니페스트 파일에 {@link
+android.Manifest.permission#READ_CALENDAR} 권한이 포함되어 있어야 합니다. 
+캘린더 데이터를 삭제, 삽입 또는 업데이트하려면{@link android.Manifest.permission#WRITE_CALENDAR} 
+권한이 포함되어 있어야 합니다.</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;...&gt;
+    &lt;uses-sdk android:minSdkVersion=&quot;14&quot; /&gt;
+    &lt;uses-permission android:name=&quot;android.permission.READ_CALENDAR&quot; /&gt;
+    &lt;uses-permission android:name=&quot;android.permission.WRITE_CALENDAR&quot; /&gt;
+    ...
+&lt;/manifest&gt;
+</pre>
+
+
+<h2 id="calendar">캘린더 테이블</h2>
+
+<p>{@link android.provider.CalendarContract.Calendars} 
+테이블에는 각각의 캘린더에 대한 세부 정보가 들어 있습니다. 
+다음 캘린더 열은 애플리케이션과 <a href="#sync-adapter">동기화 어댑터</a> 모두 쓸 수 있는 것입니다. 
+지원되는 필드의 전체 목록은 
+{@link android.provider.CalendarContract.Calendars} 참조를 확인하십시오.</p>
+<table>
+  <tr>
+    <th>상수</th>
+    <th>설명</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#NAME}</td>
+    <td>캘린더 이름입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#CALENDAR_DISPLAY_NAME}</td>
+    <td>사용자에게 표시되는 이 캘린더의 이름입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
+    
+    <td>캘린더를 표시하기로 선택했는지를 나타내는 부울입니다. 
+값이 0이면 이 캘린더와 연관된 이벤트는 표시하면 안 된다는 뜻입니다.
+  값이 1이면 이 캘린더와 연관된 이벤트를 표시해야 한다는 뜻입니다.
+ 이 값이 {@link
+android.provider.CalendarContract.Instances} 테이블의 행 생성에 영향을 미칩니다.</td>
+
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
+    
+    <td>캘린더를 동기화하고 이 캘린더의 이벤트를 기기에 저장해야할지를 
+나타내는 부울입니다. 값이 0이면 이 캘린더를 동기화하거나 이에 속한 이벤트를 
+기기에 저장하면 안 된다는 뜻입니다.  값이 1이면 이 캘린더에 대한 이벤트를 동기화하고 이에 속한 
+이벤트를 기기에 저장하라는 뜻입니다.</td>
+  </tr>
+</table>
+
+<h3 id="query">캘린더 쿼리</h3>
+
+<p>다음은 특정한 사용자가 소유한 캘린더를 가져오는 법을 나타낸 예시입니다.
+ 이 예시에서는 단순하게 나타내기 위해 쿼리 작업을 사용자 인터페이스 스레드("주 스레드")에 표시했습니다.
+ 실제로는, 이 작업은 주 스레드 대신 비동기화 스레드에서 해야 합니다.
+ 자세한 논의는 
+<a href="{@docRoot}guide/components/loaders.html">로더</a>를 참조하십시오. 데이터를 읽기만 하는 것이 아니라 변경도 하는 경우라면, 
+{@link android.content.AsyncQueryHandler}를 참조하십시오.
+</p>
+
+
+<pre>
+// Projection array. Creating indices for this array instead of doing
+// dynamic lookups improves performance.
+public static final String[] EVENT_PROJECTION = new String[] {
+    Calendars._ID,                           // 0
+    Calendars.ACCOUNT_NAME,                  // 1
+    Calendars.CALENDAR_DISPLAY_NAME,         // 2
+    Calendars.OWNER_ACCOUNT                  // 3
+};
+  
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
+private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
+private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
+  
+
+<div class="sidebox-wrapper"> <div class="sidebox"> <h3>
+ACCOUNT_TYPE을 반드시 포함시켜야 하는 이유는 무엇일까요?</h3> <p>{@link
+android.provider.CalendarContract.Calendars#ACCOUNT_NAME
+Calendars.ACCOUNT_NAME}에 대해 쿼리하는 경우, 해당 선택에 
+{@link android.provider.CalendarContract.Calendars#ACCOUNT_TYPE Calendars.ACCOUNT_TYPE}
+도 포함시켜야 합니다. 이는 주어진 계정을 고유하다고 간주하는 것은 해당 계정의 
+<code>ACCOUNT_NAME</code> 및 
+<code>ACCOUNT_TYPE</code>이 모두 있을 때뿐이기 때문입니다. <code>ACCOUNT_TYPE</code>은 계정이 
+
+{@link android.accounts.AccountManager}로 등록되었을 때 사용된 계정 인증자에 상응하는 문자열입니다. 기기와 연관되지 않은 캘린더에 적용되는 특별한 유형의 계정도 있으며 이를 {@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}이라고 합니다.
+{@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} 계정은 동기화되지 않습니다.
+</p> </div> </div> 
+
+
+<p> 다음 예시에서는 여러분이 직접 나름의 쿼리를 생성해보십시오. 선택 영역이 쿼리의 기준을 나타냅니다.
+ 이 예시에서 쿼리는 
+<code>ACCOUNT_NAME</code>
+"sampleuser@google.com", <code>ACCOUNT_TYPE</code>
+"com.google" 및 <code>OWNER_ACCOUNT</code>
+"sampleuser@google.com"을 가지고 있는 캘린더를 찾고 있습니다. 사용자가 소유한 캘린더뿐만 아니라 사용자가 전에 본 캘린더까지 모두 확인하려면 
+<code>OWNER_ACCOUNT</code>를 생략합니다. 
+쿼리가 {@link android.database.Cursor}
+개체를 반환하여 이를 시용하면 데이터베이스 쿼리가 반환한 결과 집합을 트래버스할 수 있습니다.
+ 콘텐츠 제공자에서 쿼리를 사용하는 법에 대한 자세한 논의는 
+<a href="{@docRoot}guide/topics/providers/content-providers.html">콘텐츠 제공자</a>를 참조하십시오.</p>
+
+
+<pre>// Run query
+Cursor cur = null;
+ContentResolver cr = getContentResolver();
+Uri uri = Calendars.CONTENT_URI;   
+String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND (" 
+                        + Calendars.ACCOUNT_TYPE + " = ?) AND ("
+                        + Calendars.OWNER_ACCOUNT + " = ?))";
+String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
+        "sampleuser@gmail.com"}; 
+// Submit the query and get a Cursor object back. 
+cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
+
+<p>다음에 표시된 섹션에서는 커서를 사용하여 결과 집합을 단계별로 살펴봅니다. 
+여기에서는 예시의 시작 부분에서 설정된 상수를 사용하여 각 필드에 대한 값을 반환합니다.
+</p>
+    
+<pre>// Use the cursor to step through the returned records
+while (cur.moveToNext()) {
+    long calID = 0;
+    String displayName = null;
+    String accountName = null;
+    String ownerName = null;
+      
+    // Get the field values
+    calID = cur.getLong(PROJECTION_ID_INDEX);
+    displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
+    accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
+    ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
+              
+    // Do something with the values...
+
+   ...
+}
+</pre>
+  
+<h3 id="modify-calendar">캘린더 수정</h3>
+
+<p>캘린더 업데이트를 수행하려면 캘린더의 {@link
+android.provider.BaseColumns#_ID}를 
+URI에 추가된 ID로
+
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}), 또는 첫 번째 선택 항목으로 제공하면 됩니다.
+ 
+선택은 <code>&quot;_id=?&quot;</code>로 시작해야 하며, 첫 번째 
+<code>selectionArg</code>는 캘린더의 {@link
+android.provider.BaseColumns#_ID}여야 합니다. 
+또한 ID를 URI에 인코딩해서도 업데이트를 수행할 수 있습니다. 이 예시에서는 캘린더의 표시 이름을 
+
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
+방식으로 변경하였습니다.</p>
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long calID = 2;
+ContentValues values = new ContentValues();
+// The new display name for the calendar
+values.put(Calendars.CALENDAR_DISPLAY_NAME, &quot;Trevor's Calendar&quot;);
+Uri updateUri = ContentUris.withAppendedId(Calendars.CONTENT_URI, calID);
+int rows = getContentResolver().update(updateUri, values, null, null);
+Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);</pre>
+
+<h3 id="insert-calendar">캘린더 삽입</h2>
+
+<p>캘린더는 주로 동기화 어댑터가 관리하도록 설계되어 있습니다. 따라서 새 캘린더는 
+동기화 어댑터로서만 삽입해야 합니다. 대다수의 경우 애플리케이션은 캘린더에 
+표면적인 사항만 변경할 수 있게 되어 있습니다(예: 표시 이름 변경 등). 
+어떤 애플리케이션이 로컬 캘린더를 생성해야 하는 경우, 캘린더 삽입을 동기화 어댑터로 수행하면 됩니다. 
+이때 {@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}의 {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE}을 사용합니다.
+{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
+은 기기 계정과 연관되지 않은 캘린더에 적용되는 특별한 유형의 계정입니다.
+ 이 유형의 캘린더는 서버에 동기화되지 않습니다. 
+동기화 어댑터에 대한 논의는 <a href="#sync-adapter">동기화 어댑터</a>를 참조하십시오.</p>
+
+<h2 id="events">이벤트 테이블</h2>
+
+<p>{@link android.provider.CalendarContract.Events} 
+테이블에는 각각의 이벤트에 대한 세부 정보가 들어 있습니다. 이벤트를 추가, 업데이트 또는 삭제하려면 애플리케이션의 
+<a href="#manifest">매니페스트 파일</a>에 {@link android.Manifest.permission#WRITE_CALENDAR}
+권한이 포함되어 있어야 합니다.</p>
+
+<p>다음 이벤트 열은 애플리케이션과 
+동기화 어댑터 모두 쓸 수 있는 것입니다. 지원되는 필드의 전체 목록은 {@link
+android.provider.CalendarContract.Events} 참조를 확인하십시오.</p>
+
+<table>
+  <tr>
+    <th>상수</th>
+    <th>설명</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#CALENDAR_ID}</td>
+    <td>이벤트가 속한 캘린더의 {@link android.provider.BaseColumns#_ID}입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#ORGANIZER}</td>
+    <td>이벤트 조직자(소유자)의 이메일입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#TITLE}</td>
+    <td>이벤트 제목입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION}</td>
+    <td>이벤트가 일어나는 장소입니다. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION}</td>
+    <td>이벤트 설명입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DTSTART}</td>
+    <td>이벤트가 시작되는 시간을 Epoch 이후 UTC 밀리초 단위로 나타낸 것입니다. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DTEND}</td>
+    <td>이벤트가 종료되는 시간을 Epoch 이후 UTC 밀리초 단위로 나타낸 것입니다. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}</td>
+    <td>이벤트의 표준 시간대입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_END_TIMEZONE}</td>
+    <td>이벤트 종료 시간의 표준 시간대입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
+    
+    <td>이벤트 기간을 <a href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RFC5545</a> 형식으로 나타낸 것입니다.
+예를 들어 <code>&quot;PT1H&quot;</code> 값을 보면 이벤트가 한 시간 지속될 것임을 알 수 있고, 
+<code>&quot;P2W&quot;</code>는 2주의 지속 기간을 나타냅니다.
+ </td>
+
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
+    
+    <td>값이 1이면 이 이벤트가 현지 시간대에서 정의한 바에 의해 하루 종일 걸린다는 것을 나타냅니다.
+ 값이 0이면 이것이 하루 중 언제라도 시작하고 종료될 수 있는 정기 이벤트라는 것을 나타냅니다.
+</td>
+
+    
+  </tr>
+  
+  
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
+    
+    <td>이벤트 형식의 반복 규칙입니다. 
+예를 들면 다음과 같습니다. <code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code> 더 많은 예시를 확인하려면 
+<a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">여기</a>를 참조하십시오.</td>
+    
+  </tr>
+  
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
+    <td>이벤트의 반복 날짜입니다. 
+일반적으로 {@link android.provider.CalendarContract.EventsColumns#RDATE}
+를 {@link android.provider.CalendarContract.EventsColumns#RRULE}
+과 함께 사용하여 반복되는 발생의 집계 집합을 정의하게 됩니다.
+ 자세한 논의는 <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.2">RFC5545 사양</a>을 참조하십시오.</td>
+</tr>
+ 
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY}</td>
+    
+    <td>이 이벤트가 사용 중인 시간으로 간주되는지, 다시 일정을 예약할 수 있는 자유 시간으로 간주되는지를 나타냅니다.
+ </td>
+    
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
+    <td>게스트가 이벤트를 수정할 수 있는지를 나타냅니다. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_INVITE_OTHERS}</td>
+    <td>게스트가 다른 게스트를 초대할 수 있는지를 나타냅니다. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_SEE_GUESTS}</td>
+    <td>게스트가 참석자 목록을 볼 수 있는지를 나타냅니다.</td>
+  </tr>
+</table>
+
+<h3 id="add-event">이벤트 추가</h3>
+
+<p>애플리케이션이 새 이벤트를 추가하는 경우, 
+{@link android.content.Intent#ACTION_INSERT INSERT} 인텐트를 사용하는 것이 좋습니다. 이때 <a href="#intent-insert">인텐트를 사용하여 이벤트 삽입</a>에서 설명한 대로 따릅니다. 그러나, 필요한 경우 직접 이벤트를 삽입해도 됩니다.
+ 이 섹션에서는 이렇게 하는 방법을 설명합니다.
+</p>
+
+
+<p>다음은 새 이벤트를 삽입할 때 따라야 하는 규칙입니다. </p>
+<ul>
+
+  <li>{@link
+android.provider.CalendarContract.EventsColumns#CALENDAR_ID}와 {@link
+android.provider.CalendarContract.EventsColumns#DTSTART}를 포함해야 합니다.</li>
+
+<li>{@link
+android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}을 포함해야 합니다. 
+시스템에 설치된 표준 시간대 ID 목록을 가져오려면 {@link
+java.util.TimeZone#getAvailableIDs()}를 사용하십시오. 이 규칙은 <a href="#intent-insert">인텐트를 사용하여 이벤트 삽입</a>에서 설명한 바와 같이
+{@link
+android.content.Intent#ACTION_INSERT INSERT} 인텐트를 통해서 이벤트를 삽입할 경우에는 적용되지 않습니다. 이 시나리오의 경우,
+기본 시간대가 제공됩니다.</li>
+  
+  <li>비반복적인 이벤트의 경우, {@link
+android.provider.CalendarContract.EventsColumns#DTEND}를 포함해야 합니다. </li>
+  
+  
+  <li>반복적인 이벤트의 경우 {@link
+android.provider.CalendarContract.EventsColumns#DURATION}과 {@link
+android.provider.CalendarContract.EventsColumns#RRULE} 또는 {@link
+android.provider.CalendarContract.EventsColumns#RDATE}를 포함해야 합니다. 이 규칙은 <a href="#intent-insert">인텐트를 사용하여 이벤트 삽입</a>에서 설명한 바와 같이
+{@link
+android.content.Intent#ACTION_INSERT INSERT} 인텐트를 통해서 이벤트를 삽입할 경우에는 적용되지 않습니다. 
+이 시나리오에서는 {@link android.provider.CalendarContract.EventsColumns#DTSTART} 및 {@link android.provider.CalendarContract.EventsColumns#DTEND}와 함께 {@link
+android.provider.CalendarContract.EventsColumns#RRULE}를 사용할 수 있고, 캘린더 애플리케이션이 이것을 기간으로 자동 변환해줍니다.
+</li>
+  
+</ul>
+
+<p>다음은 이벤트 삽입의 예입니다. 단순하게 나타내기 위해 UI 스레드에서 수행한 것입니다.
+ 실제로, 삽입과 업데이트는 비동기화 스레드에서 수행해야 작업을 배경 스레드로 이동시킬 수 있습니다.
+ 
+자세한 정보는 {@link android.content.AsyncQueryHandler}를 참조하십시오.</p>
+
+
+<pre>
+long calID = 3;
+long startMillis = 0; 
+long endMillis = 0;     
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2012, 9, 14, 7, 30);
+startMillis = beginTime.getTimeInMillis();
+Calendar endTime = Calendar.getInstance();
+endTime.set(2012, 9, 14, 8, 45);
+endMillis = endTime.getTimeInMillis();
+...
+
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Events.DTSTART, startMillis);
+values.put(Events.DTEND, endMillis);
+values.put(Events.TITLE, &quot;Jazzercise&quot;);
+values.put(Events.DESCRIPTION, &quot;Group workout&quot;);
+values.put(Events.CALENDAR_ID, calID);
+values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");
+Uri uri = cr.insert(Events.CONTENT_URI, values);
+
+// get the event ID that is the last element in the Uri
+long eventID = Long.parseLong(uri.getLastPathSegment());
+// 
+// ... do something with event ID
+//
+//</pre>
+
+<p class="note"><strong>참고:</strong> 이벤트가 생성된 다음 이 예시가 이벤트 ID를 캡처하는 법을 눈여겨 보십시오.
+ 이것이 이벤트 ID를 가져오는 가장 쉬운 방법입니다. 
+다른 캘린더 작업을 수행하기 위해 이벤트 ID가 필요한 경우가 자주 있습니다. 예를 들어 이벤트에 참석자나 알림을 추가하는 데 필요합니다.
+</p>
+
+
+<h3 id="update-event">이벤트 업데이트</h3>
+
+<p>애플리케이션이 사용자에게 이벤트 편집을 허용할 경우, <a href="#intent-edit">인텐트로 이벤트 편집</a>에서 설명한 바와 같이
+{@link android.content.Intent#ACTION_EDIT EDIT} 인텐트
+를 사용하는 것이 좋습니다.
+그러나 필요한 경우 직접 이벤트를 편집해도 됩니다. 
+이벤트 업데이트를 수행하려면 이벤트의 <code>_ID</code>를 URI에 추가된 ID로({@link
+android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 
+또는 첫 번째 선택 항목으로 제공하면 됩니다.
+ 
+선택은 <code>&quot;_id=?&quot;</code>로 시작해야 하며, 첫 번째 
+<code>selectionArg</code>는 이벤트의 <code>_ID</code>여야 합니다. 
+ID 없이 선택을 사용해도 업데이트를 수행할 수 있습니다. 다음은 이벤트 업데이트의 예입니다.
+ 여기에서는 이벤트 제목을 변경할 때 
+{@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}
+ 방법을 사용합니다.</p>
+
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long eventID = 188;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+Uri updateUri = null;
+// The new title for the event
+values.put(Events.TITLE, &quot;Kickboxing&quot;); 
+updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+int rows = getContentResolver().update(updateUri, values, null, null);
+Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);  </pre>
+
+<h3 id="delete-event">이벤트 삭제</h3>
+
+<p>이벤트를 삭제하려면 이벤트의 {@link
+android.provider.BaseColumns#_ID}를 URI에 추가된 ID로 써도 되고, 표준 선택을 사용해도 됩니다.
+ 추가된 ID를 사용하는 경우, 선택도 할 수 없습니다.
+삭제에는 두 가지 버전이 있습니다. 애플리케이션으로 삭제와 동기화 어댑터로의 삭제입니다. 
+애플리케이션 삭제의 경우 <em>삭제된</em> 열을 1로 설정합니다. 
+이것은 동기화 어댑터에 행이 삭제되었다고 알리는 플래그이며, 
+이 삭제를 서버에 알려야 한다는 것을 나타내기도 합니다. 
+동기화 어댑터 삭제의 경우, 이벤트를 연관된 데이터 일체와 함께 데이터베이스에서 제거합니다. 
+다음은 애플리케이션이 이벤트를 {@link android.provider.BaseColumns#_ID}를 통해 삭제하는 예입니다.</p>
+
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long eventID = 201;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+Uri deleteUri = null;
+deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+int rows = getContentResolver().delete(deleteUri, null, null);
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);  
+</pre>
+
+<h2 id="attendees">참석자 테이블</h2>
+
+<p>{@link android.provider.CalendarContract.Attendees} 테이블의 각 행은
+이벤트의 참석자 또는 게스트 하나를 나타냅니다. 
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}
+를호출하면 주어진 
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}와 함께 해당 이벤트의 참석자 목록을 반환합니다. 
+이 {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}는
+ 특정 이벤트의 {@link
+android.provider.BaseColumns#_ID}와 반드시 일치해야 합니다.</p> 
+
+<p>다음 표는 쓸 수 있는 필드를 목록으로 나열한 것입니다.
+ 새 참석자를 삽입하는 경우 이 모두를 포함해야 하며, 
+단 <code>ATTENDEE_NAME</code>은 예외입니다.
+</p>
+
+
+<table>
+  <tr>
+    <th>상수</th>
+    <th>설명</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}</td>
+    <td>이벤트 ID입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_NAME}</td>
+    <td>참석자 이름입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_EMAIL}</td>
+    <td>참석자 이메일 주소입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_RELATIONSHIP}</td>
+    <td><p>참석자와 이벤트의 관계입니다. 다음 중 하나로 정해집니다.</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_ATTENDEE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_NONE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_ORGANIZER}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_PERFORMER}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_SPEAKER}</li>
+    </ul>
+    </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_TYPE}</td>
+    <td><p>참석자 유형입니다. 다음 중 하나로 정해집니다. </p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#TYPE_REQUIRED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#TYPE_OPTIONAL}</li>
+    </ul></td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS}</td>
+    <td><p>참석자의 참석 상태입니다. 다음 중 하나로 정해집니다.</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_ACCEPTED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_DECLINED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_INVITED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_NONE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_TENTATIVE}</li>
+    </ul></td>
+  </tr>
+</table>
+
+<h3 id="add-attendees">참석자 추가</h3>
+
+<p>다음은 이벤트에 참석자 한 명을 추가하는 예입니다. 
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
+가 필수인 점을 유념하십시오.</p>
+
+<pre>
+long eventID = 202;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Attendees.ATTENDEE_NAME, &quot;Trevor&quot;);
+values.put(Attendees.ATTENDEE_EMAIL, &quot;trevor@example.com&quot;);
+values.put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ATTENDEE);
+values.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_OPTIONAL);
+values.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_INVITED);
+values.put(Attendees.EVENT_ID, eventID);
+Uri uri = cr.insert(Attendees.CONTENT_URI, values);
+</pre>
+
+<h2 id="reminders">알림 테이블</h2>
+
+<p>{@link android.provider.CalendarContract.Reminders} 
+테이블의 각 행은 이벤트의 알림 하나를 나타냅니다. 
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} 를 호출하면
+
+주어진 {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}와 함께 이벤트 알림 목록을 반환합니다.</p>
+
+
+<p>다음 표는 알림의 쓸 수 있는 필드를 목록으로 나열한 것입니다. 새 알림을 삽입하는 경우 이 모두를 포함해야 합니다.
+ 동기화 어댑터가 {@link
+android.provider.CalendarContract.Calendars} 테이블에서 지원하는 알림을 나타낸다는 점을 눈여겨 보십시오.
+ 자세한 내용은
+{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS} 
+를 참조하십시오.</p>
+
+
+<table>
+  <tr>
+    <th>상수</th>
+    <th>설명</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#EVENT_ID}</td>
+    <td>이벤트 ID입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#MINUTES}</td>
+    <td>이벤트 몇 분 전에 알림을 보내야 하는지 나타냅니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#METHOD}</td>
+    <td><p>알림 메서드이며, 서버에서 설정한 대로 따릅니다. 다음 중 하나로 정해집니다.</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_ALERT}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_DEFAULT}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_EMAIL}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_SMS}</li>
+    </ul></td>
+  </tr>
+</table>
+
+<h3 id="add-reminders">알림 추가</h3>
+
+<p>이 예시는 이벤트에 알림을 추가하는 것입니다. 알림이 이벤트 15분 전에 발송됩니다.
+</p>
+<pre>
+long eventID = 221;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Reminders.MINUTES, 15);
+values.put(Reminders.EVENT_ID, eventID);
+values.put(Reminders.METHOD, Reminders.METHOD_ALERT);
+Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
+
+<h2 id="instances">인스턴스 테이블</h2>
+
+<p>
+{@link android.provider.CalendarContract.Instances} 테이블에는 
+이벤트 발생의 시작 및 종료 시간이 담겨 있습니다. 이 테이블의 각 행이 하나의 이벤트 발생을 나타냅니다.
+ 이 인스턴스 테이블은 쓸 수 없으며 이벤트 발생 쿼리 방법을 제공할 뿐입니다.
+ </p>
+
+<p>다음 표에는 인스턴스에 대해 쿼리할 수 있는 몇 가지 필드를 목록으로 나열하였습니다. 
+표준 시간대가 
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
+ 및 
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES}에 의해 정의된다는 점을 눈여겨 보십시오.</p>
+
+
+<table>
+  <tr>
+    <th>상수</th>
+    <th>설명</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#BEGIN}</td>
+    <td>인스턴스 시작 시간을 UTC 밀리초로 나타낸 것입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END}</td>
+    <td>인스턴스 종료 시간을 UTC 밀리초로 나타낸 것입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
+    
+    <td>인스턴스의 율리우스력 종료 날짜를 캘린더의 시간대에 비례하여 나타낸 것입니다.
+ 
+    
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
+    
+    <td>인스턴스의 종료 시간(분 단위)을 캘린더 시간대의 자정부터 측정한 것입니다.
+</td>
+    
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
+    <td>이 인스턴스에 대한 이벤트의 <code>_ID</code>입니다.</td>
+  </tr>
+    <tr>
+    <td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
+    <td>인스턴스의 율리우스력 시작 날짜를 캘린더의 시간대에 비례하여 나타낸 것입니다. 
+ </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
+    
+    <td>인스턴스의 시작 시간(분 단위)을 캘린더 시간대에 비례하여 자정부터 측정한 것입니다.
+ 
+</td>
+    
+  </tr>
+
+</table>
+
+<h3 id="query-instances">인스턴스 테이블 쿼리</h3>
+
+<p>인스턴스 테이블을 쿼리하려면, 해당 쿼리에 대한 범위 시간을 URI에 지정해야 합니다.
+ 이 예시에서는 {@link android.provider.CalendarContract.Instances}
+가 {@link
+android.provider.CalendarContract.EventsColumns#TITLE} 필드에 액세스 권한을 얻으며, 이때 
+{@link android.provider.CalendarContract.EventsColumns} 인터페이스의 구현을 통합니다. 
+바꿔 말하면, {@link
+android.provider.CalendarContract.EventsColumns#TITLE}이 
+데이터베이스 보기를 통해 반환되며 원시 {@link
+android.provider.CalendarContract.Instances} 테이블 쿼리를 통해서가 아니라는 뜻입니다.</p>
+
+<pre>
+private static final String DEBUG_TAG = "MyActivity";
+public static final String[] INSTANCE_PROJECTION = new String[] {
+    Instances.EVENT_ID,      // 0
+    Instances.BEGIN,         // 1
+    Instances.TITLE          // 2
+  };
+  
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_BEGIN_INDEX = 1;
+private static final int PROJECTION_TITLE_INDEX = 2;
+...
+
+// Specify the date range you want to search for recurring
+// event instances
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2011, 9, 23, 8, 0);
+long startMillis = beginTime.getTimeInMillis();
+Calendar endTime = Calendar.getInstance();
+endTime.set(2011, 10, 24, 8, 0);
+long endMillis = endTime.getTimeInMillis();
+  
+Cursor cur = null;
+ContentResolver cr = getContentResolver();
+
+// The ID of the recurring event whose instances you are searching
+// for in the Instances table
+String selection = Instances.EVENT_ID + " = ?";
+String[] selectionArgs = new String[] {"207"};
+
+// Construct the query with the desired date range.
+Uri.Builder builder = Instances.CONTENT_URI.buildUpon();
+ContentUris.appendId(builder, startMillis);
+ContentUris.appendId(builder, endMillis);
+
+// Submit the query
+cur =  cr.query(builder.build(), 
+    INSTANCE_PROJECTION, 
+    selection, 
+    selectionArgs, 
+    null);
+   
+while (cur.moveToNext()) {
+    String title = null;
+    long eventID = 0;
+    long beginVal = 0;    
+    
+    // Get the field values
+    eventID = cur.getLong(PROJECTION_ID_INDEX);
+    beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
+    title = cur.getString(PROJECTION_TITLE_INDEX);
+              
+    // Do something with the values. 
+    Log.i(DEBUG_TAG, "Event:  " + title); 
+    Calendar calendar = Calendar.getInstance();
+    calendar.setTimeInMillis(beginVal);  
+    DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
+    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));    
+    }
+ }</pre>
+
+<h2 id="intents">캘린더 인텐트</h2>
+<p>캘린더 데이터를 읽고 쓰려면 애플리케이션에 <a href="#manifest">권한</a>이 없어도 됩니다. 대신 Android의 캘린더 애플리케이션이 지원하는 인텐트를 사용하여 해당 애플리케이션에 읽기 및 쓰기 작업을 분배하면 됩니다. 다음 표는 캘린더 제공자가 지원하는 인텐트를 목록으로 나열한 것입니다.</p>
+<table>
+  <tr>
+    <th>동작</th>
+    <th>URI</th>
+
+    <th>설명</th>
+    <th>추가</th>
+  </tr>
+  <tr>
+    <td><br>
+    {@link android.content.Intent#ACTION_VIEW VIEW} <br></td>
+    <td><p><code>content://com.android.calendar/time/&lt;ms_since_epoch&gt;</code></p>
+    
+{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}로도 URI를 참조할 수 있습니다. 
+이 인텐트 사용법의 예시를 보려면 <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">인텐트를 사용하여 캘린더 데이터 보기</a>를 참조하십시오. 
+
+    </td>
+    <td>캘린더를 <code>&lt;ms_since_epoch&gt;</code>에 의해 지정된 시간으로 엽니다.</td>
+    <td>없음.</td>
+  </tr>
+  <tr>
+    <td><p>{@link android.content.Intent#ACTION_VIEW VIEW} </p>
+
+     </td>
+    <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
+    
+    
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}로도 URI를 참조할 수 있습니다. 
+이 인텐트 사용법의 예시를 보려면 <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">인텐트를 사용하여 캘린더 데이터 보기</a>를 참조하십시오.
+    
+    </td>
+    <td><code>&lt;event_id&gt;</code>에 의해 지정된 이벤트를 봅니다.</td>
+
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}<br>
+      <br>
+      <br>
+    {@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}</td>
+  </tr>
+
+  <tr>
+    <td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
+    <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
+    
+  
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}로도 URI를 참조할 수 있습니다. 
+이 인텐트 사용법의 예시를 보려면 <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">인텐트를 사용하여 이벤트 편집</a>을 참조하십시오.
+    
+    
+    </td>
+    <td><code>&lt;event_id&gt;</code>에 의해 지정된 이벤트를 편집합니다.</td>
+
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}<br>
+      <br>
+      <br>
+    {@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}</td>
+  </tr>
+
+  <tr>
+    <td>{@link android.content.Intent#ACTION_EDIT EDIT} <br>
+    <br>
+    {@link android.content.Intent#ACTION_INSERT INSERT} </td>
+    <td><p><code>content://com.android.calendar/events</code></p>
+    
+   
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}로도 URI를 참조할 수 있습니다. 
+이 인텐트 사용법의 예시를 보려면 <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">인텐트를 사용하여 이벤트 삽입</a>을 참조하십시오.
+    
+    </td>
+
+    <td>이벤트를 생성합니다.</td>
+    <td>아래 테이블에 목록으로 표시된 추가 사항 모두입니다.</td>
+  </tr>
+</table>
+
+<p>다음 표에는 캘린더 제공자가 지원하는 인텐트 추가 사항이 목록으로 나열되어 있습니다.
+</p>
+<table>
+  <tr>
+    <th>인텐트 추가 사항</th>
+    <th>설명</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#TITLE Events.TITLE}</td>
+    <td>이벤트의 이름입니다.</td>
+  </tr>
+  <tr>
+  
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
+CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
+    <td>이벤트 시작 시간을 Epoch로부터 밀리초 단위로 나타낸 것입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME
+CalendarContract.EXTRA_EVENT_END_TIME}</td>
+    
+    <td>이벤트 종료 시간을 Epoch로부터 밀리초 단위로 나타낸 것입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY
+CalendarContract.EXTRA_EVENT_ALL_DAY}</td>
+    
+    <td>이벤트가 종일 이벤트인지 나타내는 부울입니다. 값은 
+<code>true</code> 또는 <code>false</code>가 될 수 있습니다.</td> </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION
+Events.EVENT_LOCATION}</td>
+    
+    <td>이벤트 위치입니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION
+Events.DESCRIPTION}</td>
+    
+    <td>이벤트 설명입니다.</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}</td>
+    <td>초대할 사람의 이메일 주소를 쉼표로 구분한 목록입니다.</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.provider.CalendarContract.EventsColumns#RRULE Events.RRULE}</td>
+    <td>이벤트의 반복 규칙입니다.</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL
+Events.ACCESS_LEVEL}</td>
+    
+    <td>이벤트가 비공개인지 공개인지 나타냅니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY
+Events.AVAILABILITY}</td>
+    
+    <td>이 이벤트가 사용 중인 시간으로 간주되는지, 다시 일정을 예약할 수 있는 자유 시간으로 간주되는지를 나타냅니다.</td>
+    
+</table> 
+<p>아래 섹션에서는 이와 같은 인텐트의 사용법을 설명합니다.</p>
+
+
+<h3 id="intent-insert">인텐트를 사용하여 이벤트 삽입</h3>
+
+<p>{@link android.content.Intent#ACTION_INSERT INSERT} 인텐트를 사용하면 
+캘린더에 이벤트 삽입 작업을 분배할 수 있습니다.
+이 방법을 사용하는 경우, 애플리케이션의 <a href="#manifest">매니페스트 파일</a>에 {@link
+android.Manifest.permission#WRITE_CALENDAR} 권한을 포함할 필요가 없습니다.</p>
+
+  
+<p>사용자가 이 방법을 사용하는 애플리케이션을 실행하면 해당 애플리케이션이
+사용자를 캘린더로 보내 이벤트 추가를 완료합니다. {@link
+android.content.Intent#ACTION_INSERT INSERT} 인텐트는 추가 필드를 사용하여
+캘린더에 있는 이벤트 세부 정보로 양식을 미리 채웁니다. 
+그러면 사용자가 이벤트를 취소하거나 양식을 필요에 따라 편집할 수 있고, 
+이벤트를 본인의 캘린더에 저장할 수도 있습니다.</p>
+  
+
+
+<p>다음은 2012년 1월 19일에 이벤트 일정을 예약하는 코드 조각으로, 
+이는 오전 7:30~오전 8:30까지 실행됩니다. 이 코드 조각에 관해서는 다음 내용을 주의하십시오.</p>
+
+<ul>
+  <li>이것은 {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}를 URI로 지정합니다.
+</li>
+  
+  <li>이것은 {@link
+android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
+CalendarContract.EXTRA_EVENT_BEGIN_TIME} 및 {@link
+android.provider.CalendarContract#EXTRA_EVENT_END_TIME
+CalendarContract.EXTRA_EVENT_END_TIME} 추가 필드를 사용하여 이벤트 시간으로 양식을 미리 채웁니다.
+ 이러한 시간에 해당하는 값은 Epoch로부터 UTC 밀리초 단위로 표시해야 합니다.
+</li>
+  
+  <li>이것은 {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}
+추가 필드를 사용하여 쉼표로 구분된 초청인 목록을 제공하며, 이는 이메일 주소로 나타납니다.</li>
+  
+</ul>
+<pre>
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2012, 0, 19, 7, 30);
+Calendar endTime = Calendar.getInstance();
+endTime.set(2012, 0, 19, 8, 30);
+Intent intent = new Intent(Intent.ACTION_INSERT)
+        .setData(Events.CONTENT_URI)
+        .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())
+        .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis())
+        .putExtra(Events.TITLE, &quot;Yoga&quot;)
+        .putExtra(Events.DESCRIPTION, &quot;Group class&quot;)
+        .putExtra(Events.EVENT_LOCATION, &quot;The gym&quot;)
+        .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY)
+        .putExtra(Intent.EXTRA_EMAIL, &quot;rowan@example.com,trevor@example.com&quot;);
+startActivity(intent);
+</pre>
+
+<h3 id="intent-edit">인텐트를 사용하여 이벤트 편집</h3>
+
+<p><a href="#update-event">이벤트 업데이트</a>에서 설명한 바와 같이 이벤트를 직접 업데이트할 수 있습니다. 그러나 {@link
+android.content.Intent#ACTION_EDIT EDIT} 인텐트를 사용하면 
+캘린더 애플리케이션에 이벤트 편집을 분배할 권한이 없는 애플리케이션을 허용합니다.
+사용자가 캘린더에서 이벤트 편집을 마치면 원래 애플리케이션으로 돌아오게 됩니다.
+</p> <p>다음은 지정된 이벤트에 새 제목을 설정하여 사용자에게 캘린더에서 이벤트를 편집할 수 있도록 해주는 인텐트의 예입니다.
+</p>
+
+
+<pre>long eventID = 208;
+Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+Intent intent = new Intent(Intent.ACTION_EDIT)
+    .setData(uri)
+    .putExtra(Events.TITLE, &quot;My New Title&quot;);
+startActivity(intent);</pre>
+
+<h3 id="intent-view">인텐트를 사용하여 캘린더 데이터 보기</h3>
+<p>캘린더 제공자는 {@link android.content.Intent#ACTION_VIEW VIEW} 인텐트를 사용하는 두 가지 방식을 제공합니다.</p>
+<ul>
+  <li>캘린더를 특정 날짜에 여는 방식</li>
+  <li>이벤트를 보는 방식</li>
+
+</ul>
+<p>다음은 캘린더를 특정 날짜에 여는 방법을 보여주는 예입니다.</p>
+<pre>// A date-time specified in milliseconds since the epoch.
+long startMillis;
+...
+Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
+builder.appendPath(&quot;time&quot;);
+ContentUris.appendId(builder, startMillis);
+Intent intent = new Intent(Intent.ACTION_VIEW)
+    .setData(builder.build());
+startActivity(intent);</pre>
+
+<p>다음은 이벤트를 보기 위해 여는 방법을 나타낸 예입니다.</p>
+<pre>long eventID = 208;
+...
+Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+Intent intent = new Intent(Intent.ACTION_VIEW)
+   .setData(uri);
+startActivity(intent);
+</pre>
+
+
+<h2 id="sync-adapter">동기화 어댑터</h2>
+
+
+<p>애플리케이션과 동기화 어댑터가 캘린더 제공자에 액세스하는 방식에는 사소한 차이만이 있을 뿐입니다.
+</p>
+
+<ul>
+  <li>동기화 어댑터는 {@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER}를 <code>true</code>로 설정하여 이것이 동기화 어댑터라는 것을 나타내야 합니다.</li>
+  
+  
+  <li>동기화 어댑터는 URI에서 쿼리 매개변수로 {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME}과 {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE}을 제공해야 합니다. </li>
+  
+  <li>동기화 어댑터에는 애플리케이션 또는 위젯에 비해 더 많은 열에 대한 쓰기 액세스 권한이 있습니다.
+  예를 들어, 애플리케이션은 캘린더의 몇 가지 특성만 수정할 수 있습니다. 
+즉 이름, 표시 이름, 가시성 설정 및 캘린더 동기화 여부 등만 해당됩니다.
+ 이에 비해 동기화 어댑터의 경우 이 열만이 아니라 다른 수많은 열에도 액세스할 수 있습니다.
+예를 들어 캘린더 색상, 표준 시간대, 액세스 수준 등이 해당됩니다.
+다만, 동기화 어댑터는 지정된 <code>ACCOUNT_NAME</code> 및 
+<code>ACCOUNT_TYPE</code>에 한정됩니다.</li> </ul>
+
+<p>다음은 URI를 반환하여 동기화 어댑터와 사용하도록 할 때 쓸 수 있는 도우미 메서드입니다.</p>
+<pre> static Uri asSyncAdapter(Uri uri, String account, String accountType) {
+    return uri.buildUpon()
+        .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,&quot;true&quot;)
+        .appendQueryParameter(Calendars.ACCOUNT_NAME, account)
+        .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
+ }
+</pre>
+<p>동기화 어댑터의 샘플 구현(캘린더에 구체적으로 관련된 것이 아님)은 
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdpater</a>를 참조하십시오.
diff --git a/docs/html-intl/intl/ko/guide/topics/providers/contacts-provider.jd b/docs/html-intl/intl/ko/guide/topics/providers/contacts-provider.jd
new file mode 100644
index 0000000..94d3295
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/providers/contacts-provider.jd
@@ -0,0 +1,2356 @@
+page.title=연락처 제공자
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<h2>간략히 보기</h2>
+<ul>
+    <li>사람들 관련 정보를 저장한 Android의 리포지토리입니다.</li>
+    <li>
+        웹과 동기화합니다.
+    </li>
+    <li>
+        소셜 스트림 데이터와 통합됩니다.
+    </li>
+</ul>
+<h2>이 문서의 내용</h2>
+<ol>
+    <li>
+        <a href="#InformationTypes">연락처 제공자 조직</a>
+    </li>
+    <li>
+        <a href="#RawContactBasics">원시 연락처</a>
+    </li>
+    <li>
+        <a href="#DataBasics">데이터</a>
+    </li>
+    <li>
+        <a href="#ContactBasics">연락처</a>
+    </li>
+    <li>
+        <a href="#Sources">동기화 어댑터의 데이터</a>
+    </li>
+    <li>
+        <a href="#Permissions">필수 권한</a>
+    </li>
+    <li>
+        <a href="#UserProfile">사용자 프로필</a>
+    </li>
+    <li>
+        <a href="#ContactsProviderMetadata">연락처 제공자 메타데이터</a>
+    </li>
+    <li>
+        <a href="#Access">연락처 제공자 액세스</a>
+    <li>
+    </li>
+    <li>
+        <a href="#SyncAdapters">연락처 제공자 동기화 어댑터</a>
+    </li>
+    <li>
+        <a href="#SocialStream">소셜 스트림 데이터</a>
+    </li>
+    <li>
+        <a href="#AdditionalFeatures">추가 연락처 제공자 기능</a>
+    </li>
+</ol>
+<h2>Key 클래스</h2>
+<ol>
+    <li>{@link android.provider.ContactsContract.Contacts}</li>
+    <li>{@link android.provider.ContactsContract.RawContacts}</li>
+    <li>{@link android.provider.ContactsContract.Data}</li>
+    <li>{@code android.provider.ContactsContract.StreamItems}</li>
+</ol>
+<h2>관련 샘플</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}resources/samples/ContactManager/index.html">
+        연락처 관리자
+        </a>
+    </li>
+    <li>
+        <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+            샘플 동기화 어댑터</a>
+    </li>
+</ol>
+<h2>참고 항목</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        콘텐츠 제공자 기본 정보
+        </a>
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    콘텐츠 제공자는 기기의 사람에 대한 중앙 데이터 리포지토리를 관리하는 강력하고 유연한
+Android 구성 요소입니다. 콘텐츠 제공자는 기기의 연락처 애플리케이션에서 개발자에게 표시되는 
+데이터의 출처입니다. 여기의 데이터에는 개발자 자신의 애플리케이션에서 
+액세스하여 기기와 온라인 서비스 사이에서 데이터를 전송할 수도 있습니다. 제공자는 
+광범위한 데이터 소스를 수용하며 각 인물에 대해 가능한 한 많은 데이터를 관리하여야 하므로, 그 결과 조직이 무척 
+복잡합니다. 이 때문에 이 제공자의 API에는 
+광범위한 계약 클래스와 인터페이스 세트가 포함되어 있어 데이터 검색과 수정을 모두 한층 
+용이하게 해줍니다.
+</p>
+<p>
+    이 가이드에서 설명하는 내용은 다음과 같습니다.
+</p>
+    <ul>
+        <li>
+            기본적인 제공자 구조.
+        </li>
+        <li>
+            제공자에서 데이터를 검색하는 방법.
+        </li>
+        <li>
+            제공자에서 데이터를 수정하는 방법.
+        </li>
+        <li>
+            동기화 어댑터를 작성하여 서버에서 가져온 데이터를 연락처 제공자와 
+동기화하는 방법.
+        </li>
+    </ul>
+<p>
+    이 가이드는 독자가 Android 콘텐츠 제공자의 기본 정보를 알고 있는 것으로 간주합니다. Android 콘텐츠 제공자에 
+관한 자세한 내용은 
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+콘텐츠 제공자 기본 정보</a> 가이드를 읽어보십시오. 
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">샘플 동기화 어댑터</a>
+샘플 앱은 동기화 어댑터를 사용하여 연락처 제공자와 Google Web Services가 호스팅하는 샘플 애플리케이션 사이에서
+데이터를 전송하는 동기화 어댑터의 사용 예시입니다.
+</p>
+<h2 id="InformationTypes">연락처 제공자 조직</h2>
+<p>
+    연락처 제공자는 Android 콘텐츠 제공자 구성 요소입니다. 이것은 한 사람에 대해 
+각기 세 가지 유형의 데이터를 관리합니다. 각 데이터는 그림 1에서 설명하는 바와 같이 제공자가 제공하는 
+각 테이블에 상응합니다.
+</p>
+<img src="{@docRoot}images/providers/contacts_structure.png" alt="" height="364" id="figure1" />
+<p class="img-caption">
+  <strong>그림 1.</strong> 연락처 제공자 테이블 구조입니다.
+</p>
+<p>
+    이 세 개의 테이블은 보통 자신의 계약 클래스의 이름으로 불립니다. 이들 클래스는 
+테이블에서 사용하는 콘텐츠 URI, 열 이름 및 열 값의 상수를 정의합니다.
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.Contacts} 테이블
+    </dt>
+    <dd>
+        행은 원시 연락처 행의 집계에 기초하여 각기 다른 사람을 나타냅니다.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.RawContacts} 테이블
+    </dt>
+    <dd>
+        사용자 계정과 유형을 기준으로, 한 사람에 대한 데이터 요약이 들어있는 행입니다.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.Data} 테이블
+    </dt>
+    <dd>
+        이메일 주소나 전화 번호와 같은 원시 연락처의 세부 정보가 들어있는 행입니다.
+    </dd>
+</dl>
+<p>
+    {@link android.provider.ContactsContract}의 계약 클래스가 대표하는 다른 테이블은 
+보조 테이블로, 연락처 제공자는 이들을 사용하여 작업을 관리하거나 기기의 연락처에 있는 
+특정 기능 또는 전화 통신 애플리케이션 등을 지원합니다.
+</p>
+<h2 id="RawContactBasics">원시 연락처</h2>
+<p>
+    원시 연락처는 단일 계정 유형과 계정 이름에서 가져오는 
+한 사람의 데이터를 나타냅니다. 연락처 제공자는 한 사람에 대해 하나 이상의 온라인 서비스를 데이터의 출처로 허용하므로, 
+연락처 제공자에서는 같은 사람에 대해 여러 개의 원시 연락처를 허용합니다.
+    원시 연락처를 여러 개 사용하면 사용자가 같은 계정 유형의 하나 이상의 계정에서 가져온 
+한 사람의 여러 데이터를 조합할 수 있습니다.
+</p>
+<p>
+    원시 연락처의 데이터 대부분은 
+{@link android.provider.ContactsContract.RawContacts} 테이블에 저장되지 않습니다. 대신, 
+{@link android.provider.ContactsContract.Data} 테이블에서 하나 이상의 행에 저장됩니다. 각 데이터 행에는
+상위 {@link android.provider.ContactsContract.RawContacts} 행의 {@code android.provider.BaseColumns#_ID RawContacts._ID} 값을 포함하는 
+열 {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID Data.RAW_CONTACT_ID}가 
+있습니다.
+</p>
+<h3 id="RawContactsColumns">중요한 원시 연락처 열</h3>
+<p>
+    {@link android.provider.ContactsContract.RawContacts} 테이블의 중요한 열은 
+표 1에 나열되어 있습니다. 표 뒤에 이어지는 참고 사항을 꼭 읽어주십시오.
+</p>
+<p class="table-caption" id="table1">
+    <strong>표 1.</strong> 중요한 원시 연락처 열입니다.
+</p>
+<table>
+    <tr>
+        <th scope="col">열 이름</th>
+        <th scope="col">용도</th>
+        <th scope="col">참고</th>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_NAME}
+        </td>
+        <td>
+            이 원시 연락처의 소스인 계정 유형에 대한 계정 이름입니다.
+            예를 들어, Google 계정의 계정 이름은 
+기기 소유자의 Gmail 주소 중 하나입니다. 자세한 정보는 
+{@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}의 
+다음 항목을 참조하십시오.
+        </td>
+        <td>
+            이 이름의 형식은 각자의 계정 유형별로 다릅니다. 이것은 꼭 
+이메일 주소여야 하는 것은 아닙니다.
+        </td>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}
+        </td>
+        <td>
+            이 원시 연락처의 소스인 계정 유형입니다. 예를 들어, Google 계정의 
+계정 유형은 <code>com.google</code>입니다. 계정 유형을 정규화할 때에는 항상 
+본인이 소유하거나 제어하는 도메인의 도메인 식별자를 사용하십시오. 이렇게 하면 계정 유형이 고유한 것이도록 
+확실히 해둘 수 있습니다.
+        </td>
+        <td>
+            연락처 데이터를 제공하는 계정 유형은 대개 연락처 제공자와 동기화되는 동기화 어댑터와 
+연관되어 있습니다.
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.RawContactsColumns#DELETED}
+        </td>
+        <td>
+            원시 연락처에 대한 "삭제됨" 플래그입니다.
+        </td>
+        <td>
+            이 플래그를 사용하면 연락처 제공자가 해당 행을 내부에 계속 유지할 수 있습니다. 
+이는 동기화 어댑터가 해당 행을 자신의 서버에서 삭제하고 마침내는 행을 리포지토리에서도 삭제할 수 있을 
+때까지만입니다.
+        </td>
+    </tr>
+</table>
+<h4>참고</h4>
+<p>
+    다음은 
+{@link android.provider.ContactsContract.RawContacts} 테이블에 관한 중요한 참고 사항입니다.
+</p>
+<ul>
+    <li>
+        원시 연락처의 이름은 
+{@link android.provider.ContactsContract.RawContacts}에 있는 자신의 행에 저장되지 않습니다. 대신, 
+{@link android.provider.ContactsContract.CommonDataKinds.StructuredName} 행에 있는 
+{@link android.provider.ContactsContract.Data} 테이블에 저장됩니다. 원시 연락처 하나에는 
+{@link android.provider.ContactsContract.Data} 테이블에서 이런 유형의 행이 하나씩만 있습니다.
+    </li>
+    <li>
+        <strong>주의:</strong> 원시 연락처에서 본인의 계정 데이터를 사용하려면 이를 우선 
+{@link android.accounts.AccountManager}로 등록해야 합니다. 이렇게 하려면, 
+사용자에게 계정 유형과 본인의 계정 이름을 계정 목록에 추가하라는 프롬프트를 표시하십시오. 이렇게 하지 않으면, 
+연락처 제공자가 원시 연락처 행을 자동으로 삭제합니다.
+        <p>
+            예를 들어, 앱에서 도메인 {@code com.example.dataservice}로 웹 베이스 서비스에 대한 연락처 데이터를 유지하고 
+서비스에 대한 사용자 계정이 
+{@code becky.sharp@dataservice.example.com}이라면, 사용자는 앱이 원시 연락처 행을 추가하기 전에 
+계정 "유형"({@code com.example.dataservice})과 계정 "이름"
+({@code becky.smart@dataservice.example.com})을 먼저 추가해야 합니다.
+            이 요구 사항을 사용자에게 설명하려면 관련 문서를 사용해도 되고, 아니면 사용자에게 
+유형과 이름을 추가하라는 프롬프트를 표시해도 되고 두 가지 방법을 다 써도 됩니다. 계정 유형과 계정 이름은 
+다음 섹션에서 더 자세히 설명되어 있습니다.
+    </li>
+</ul>
+<h3 id="RawContactsExample">원시 연락처 데이터 소스</h3>
+<p>
+    원시 연락처의 작동 원리를 이해하기 위해, 다음과 같이 기기에서 정의한 사용자 계정 세 가지를 보유한 사용자 "Emily Dickinson"이 있다고 
+가정해 봅시다.
+</p>
+<ul>
+    <li><code>emily.dickinson@gmail.com</code></li>
+    <li><code>emilyd@gmail.com</code></li>
+    <li>Twitter 계정 "belle_of_amherst"</li>
+</ul>
+<p>
+    이 사용자는 <em>계정</em> 설정에서 모든 세 가지 계정에 대해 <em>연락처 동기화</em>를
+활성화했습니다.
+</p>
+<p>
+    Emily Dickinson이 브라우저 창을 열고, 
+Gmail에 <code>emily.dickinson@gmail.com</code>으로 로그인하고,
+연락처를 열어서 "Thomas Higginson"을 추가한다고 가정하겠습니다. 이 사용자는 나중에 Gmail에 
+<code>emilyd@gmail.com</code>으로 로그인하고 "Thomas Higginson"에게 이메일을 전송합니다. 
+이렇게 하면 이 사람을 자동으로 연락처로 추가합니다. Emily는 Twitter에서 "colonel_tom"(Thomas Higginson의 Twitter ID)도 
+팔로우합니다.
+</p>
+<p>
+    연락처 제공자는 이 작업의 결과로 원시 연락처를 세 개 생성합니다.
+</p>
+<ol>
+    <li>
+        <code>emily.dickinson@gmail.com</code>과 연관된 "Thomas Higginson"의 원시 연락처입니다.
+        사용자 계정 유형은 Google입니다.
+    </li>
+    <li>
+        <code>emilyd@gmail.com</code>과 연관된 "Thomas Higginson"의 두 번째 원시 연락처입니다.
+        사용자 계정 유형은 마찬가지로 Google입니다. 이름이 이전 이름과 똑같더라도 두 번째 원시 연락처가 
+더해집니다. 왜냐하면 이 사람은 아까와 다른 
+사용자 계정에 추가되었기 때문입니다.
+    </li>
+    <li>
+        "belle_of_amherst"와 연관된 "Thomas Higginson"의 세 번째 원시 연락처입니다. 사용자 
+계정 유형은 Twitter입니다.
+    </li>
+</ol>
+<h2 id="DataBasics">데이터</h2>
+<p>
+    이전에 언급한 바와 같이, 원시 연락처의 데이터는
+원시 연락처의 <code>_ID</code> 값과 연결된{@link android.provider.ContactsContract.Data} 행에 
+저장됩니다. 이렇게 하면 하나의 원시 연락처에 같은 유형의 데이터의 인스턴스가 여러 개 있을 수 있게 됩니다. 
+예를 들어 이메일 주소 또는 전화 번호 등이 이에 해당됩니다. 예를 들어, 
+{@code emilyd@gmail.com}에 대한 "Thomas Higginson"(Google 계정 <code>emilyd@gmail.com</code>과 연관된 Thomas Higginson의
+원시 연락처)에는 
+<code>thigg@gmail.com</code>이라는 집 이메일 주소와
+<code>thomas.higginson@gmail.com</code>이라는 직장 이메일 주소가 있고, 연락처 제공자는 두 개의 이메일 주소 행을 저장하고
+원시 연락처에 두 가지를 연결합니다.
+</p>
+<p>
+    이 테이블 하나에 여러 가지 유형의 데이터가 저장된 점에 주의하십시오. 표시 이름, 
+전화 번호, 이메일, 우편 주소, 사진 및 웹사이트 세부 정보 행은 모두 
+{@link android.provider.ContactsContract.Data} 테이블에서 찾을 수 있습니다. 이런 데이터 관리를 돕기 위해 
+{@link android.provider.ContactsContract.Data} 테이블에는 설명이 포함된 이름이 있는 열이 몇 개 있고 
+일반적 이름이 포함된 열도 몇 개 있습니다. 설명이 포함된 이름 열의 콘텐츠는 행 안의 데이터 유형과 관계 없이 모두 의미가 같고, 
+일반적인 이름 열의 콘텐츠는 데이터 유형에 따라 
+서로 의미가 다릅니다.
+</p>
+<h3 id="DescriptiveColumns">설명이 포함된 열 이름</h3>
+<p>
+    다음은 설명이 포함된 열 이름의 몇 가지 예시입니다.
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.Data#RAW_CONTACT_ID}
+    </dt>
+    <dd>
+        이 데이터에 대한 원시 연락처의 <code>_ID</code> 열 값입니다.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.Data#MIMETYPE}
+    </dt>
+    <dd>
+        이 행에 저장되는 데이터 유형으로, 사용자 지정 MIME 유형으로 표현됩니다. 연락처 제공자는 
+{@link android.provider.ContactsContract.CommonDataKinds}의 하위 클래스에서 정의된 
+MIME 유형을 사용합니다. 이러한 MIME 유형은 오픈 소스이고, 
+연락처 제공자와 함께 사용할 수 있는 모든 애플리케이션 또는 동기화 어댑터가 사용할 수 있습니다.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY}
+    </dt>
+    <dd>
+        이 유형의 데이터 행이 원시 연락처에서 한 번 이상 발생하는 경우,
+{@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} 열은 
+해당 유형의 기본 데이터가 들어있는 데이터 행을 플래그로 표시합니다. 예를 들어, 
+사용자가 연락처의 전화 번호를 길게 누르고 <strong>기본값으로 설정</strong>을 선택하면 
+그 번호가 들어있는 {@link android.provider.ContactsContract.Data} 행이
+{@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} 열을 
+0이 아닌 값으로 설정합니다.
+    </dd>
+</dl>
+<h3 id="GenericColumns">일반 열 이름</h3>
+<p>
+    15개의 일반 열 중에서 <code>DATA1</code>부터 
+<code>DATA15</code>까지는 일반적으로 이용할 수 있고 이외에 추가로 마련된 네 개의 일반 
+열, 즉 <code>SYNC1</code>부터 <code>SYNC4</code>까지는 
+동기화 어댑터 전용입니다. 일반 열 이름 상수는 해당 행에 들어있는 데이터 유형과 관계 없이 
+언제나 통합니다.
+</p>
+<p>
+    <code>DATA1</code> 열은 색인됩니다.  연락처 제공자는 제공자가 가장 자주 쿼리의 대상이 될 것으로 예상하는 
+데이터에 대해 항상 이 열을 사용합니다. 예컨대 
+이메일 행의 경우, 이 열에 실제 이메일 주소가 들어있습니다.
+</p>
+<p>
+    규칙에 따라 열 <code>DATA15</code>는 사진 미리 보기와 같은 BLOB(Binary Large Object)
+데이터를 저장할 목적으로 예약되어 있습니다.
+</p>
+<h3 id="TypeSpecificNames">유형별 열 이름</h3>
+<p>
+    특정 유형의 행에 대한 열과의 작업을 돕기 위해, 연락처 제공자는 
+ 유형별 열 이름 상수도 제공합니다. 이는 
+{@link android.provider.ContactsContract.CommonDataKinds}의 하위 클래스에서 정의합니다. 이 상수는 그저 같은 열 이름에 
+서로 다른 상수 이름을 부여할 뿐이며, 이렇게 하면 개발자가 특정 유형의 행에 있는 데이터에 
+액세스하기 쉽습니다.
+</p>
+<p>
+    예를 들어, {@link android.provider.ContactsContract.CommonDataKinds.Email} 클래스는 
+MIME 유형{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
+Email.CONTENT_ITEM_TYPE}을 갖는
+{@link android.provider.ContactsContract.Data} 행에 
+대한 유형별 열 이름 상수를 정의합니다. 이 클래스에는 이메일 주소 열에 대한
+ 상수 {@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS}가 
+들어있습니다. 
+{@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS}의 실제 값은 
+"data1"이고, 이는 열의 일반 이름과 같습니다.
+</p>
+<p class="caution">
+    <strong>주의:</strong> 개발자 본인의 사용자 지정 데이터를 
+{@link android.provider.ContactsContract.Data} 테이블에 
+추가할 때 제공자의 미리 정의된 MIME 유형 중 하나가 있는 행을 사용하면 안 됩니다. 그렇게 하면 데이터가 손실되거나 제공자의 오작동을 
+유발할 수 있습니다. 예를 들어, MIME 유형 
+    {@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
+    Email.CONTENT_ITEM_TYPE} 안에 
+<code>DATA1</code> 열에 있는 이메일 주소 대신 사용자 이름이 들어있는 행은 추가하면 안 됩니다. 해당 행에 개발자 나름의 사용자 지정 MIME 유형을 사용하는 경우 
+본인만의 유형별 열 이름을 자유자재로 정의하고 이러한 열을 마음대로 사용해도 됩니다.
+</p>
+<p>
+    그림 2는 
+{@link android.provider.ContactsContract.Data} 행에서 설명 열과 데이터 열이 나타나는 방식과 유형별 열 이름이 
+일반 열 이름에 "오버레이"되는 방식을 나타낸 것입니다.
+</p>
+<img src="{@docRoot}images/providers/data_columns.png" alt="How type-specific column names map to generic column names" height="311" id="figure2" />
+<p class="img-caption">
+  <strong>그림 2.</strong> 유형별 열 이름과 일반 열 이름입니다.
+</p>
+<h3 id="ColumnMaps">유형별 열 이름 클래스</h3>
+<p>
+    표 2는 가장 보편적으로 사용되는 유형별 열 이름 클래스를 목록으로 나열한 것입니다.
+</p>
+<p class="table-caption" id="table2">
+  <strong>표 2.</strong> 유형별 열 이름 클래스</p>
+<table>
+  <tr>
+    <th scope="col">매핑 클래스</th>
+    <th scope="col">데이터 유형</th>
+    <th scope="col">참고</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredName}</td>
+    <td>이 데이터 행과 연관된 원시 연락처의 이름 데이터입니다.</td>
+    <td>하나의 원시 연락처에는 이러한 행이 딱 하나만 있습니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Photo}</td>
+    <td>이 데이터 행과 연관된 원시 연락처의 기본 사진입니다.</td>
+    <td>하나의 원시 연락처에는 이러한 행이 딱 하나만 있습니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Email}</td>
+    <td>이 데이터 행과 연관된 원시 연락처의 이메일 주소입니다.</td>
+    <td>하나의 원시 연락처에는 여러 개의 이메일 주소가 있을 수 있습니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal}</td>
+    <td>이 데이터 행과 연관된 원시 연락처의 우편 주소입니다.</td>
+    <td>하나의 원시 연락처에는 여러 개의 우편 주소가 있을 수 있습니다.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.GroupMembership}</td>
+    <td>원시 연락처를 연락처 제공자의 그룹 중 하나와 연결하는 식별자입니다.</td>
+    <td>
+        그룹은 계정 유형과 계정 이름의 선택적 기능입니다. 이러한 내용은 
+<a href="#Groups">연락처 그룹</a> 섹션에 자세히 설명되어 있습니다.
+    </td>
+  </tr>
+</table>
+<h3 id="ContactBasics">연락처</h3>
+<p>
+    연락처 제공자는 모든 계정 유형과 계정 이름을 통틀어 원시 연락처 행을 조합하여 
+하나의 <strong>연락처</strong>를 형성합니다. 이렇게 하면 사용자가 한 사람에 대해 수집한 
+모든 데이터를 표시하고 수정하기 쉽습니다. 연락처 제공자는 새 연락처 행의 생성을 관리하고 
+원시 연락처를 기존 연락처 행과 통합하기도 합니다. 애플리케이션과 
+동기화 어댑터는 모두 연락처를 추가할 수 없으며, 연락처 행에 있는 열 중 몇몇은 읽기 전용입니다.
+</p>
+<p class="note">
+    <strong>참고:</strong> 연락처 제공자에 연락처를 추가하려고 
+{@link android.content.ContentResolver#insert(Uri,ContentValues) insert()}를 사용하는 경우, 
+{@link java.lang.UnsupportedOperationException} 예외가 발생합니다. "읽기 전용"으로 표시된 열을 업데이트하려고 하면 
+그 업데이트는 무시됩니다.
+</p>
+<p>
+    연락처 제공자는 기존 연락처 어느 것과도 일치하지 않는 새로운 원시 연락처가 추가되면 
+새로운 연락처를 생성합니다. 제공자가 이 작업을 하는 또 다른 경우는 
+기존 원시 연락처의 데이터가 변경되어 이전에 첨부되어 있던 연락처에 더 이상 일치하지 않는 
+경우입니다. 애플리케이션이나 동기화 어댑터가 
+기존 연락처와 <em>일치하는</em> 새로운 원시 연락처를 생성하면, 새로운 원시 연락처는
+기존 연락처에 통합됩니다.
+</p>
+<p>
+    연락처 제공자는
+{@link android.provider.ContactsContract.Contacts Contacts} 테이블에 있는 연락처 행의 <code>_ID</code> 열로 
+연락처 행과 원시 연락처 행를 연결합니다. 원시 연락처 테이블 {@link android.provider.ContactsContract.RawContacts}의 <code>CONTACT_ID</code> 행에는 
+각 원시 연락처 행과 관련된 연락처 행에 대한 <code>_ID</code> 값이 
+들어있습니다.
+</p>
+<p>
+    {@link android.provider.ContactsContract.Contacts} 테이블에는 연락처 행에 대한 "영구" 링크인
+{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} 열도
+있습니다. 연락처 제공자가 연락처를 자동으로 관리하므로, 
+통합이나 동기화에 응답하여 연락처 행의 {@code android.provider.BaseColumns#_ID} 값을 
+변경할 수도 있습니다. 이런 일이 발생한다 하더라도 콘텐츠 URI 
+{@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI}와 
+연락처의 {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}는 여전히 
+연락처 행을 가리키므로, 
+{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}를 
+사용하여 "즐겨찾기" 연락처에 대한 연결 등을 그대로 유지할 수 있습니다. 이 열에는 
+{@code android.provider.BaseColumns#_ID} 열의 형식과 관련이 없는 나름의 형식이 있습니다.
+</p>
+<p>
+    그림 3은 세 가지 기본 테이블이 서로 관련되는 방식을 나타낸 것입니다.
+</p>
+<img src="{@docRoot}images/providers/contacts_tables.png" alt="Contacts provider main tables" height="514" id="figure4" />
+<p class="img-caption">
+  <strong>그림 3.</strong> 연락처, 원시 연락처 및 세부 사항 테이블의 관계입니다.
+</p>
+<h2 id="Sources">동기화 어댑터의 데이터</h2>
+<p>
+    사용자가 연락처 데이터를 기기에 직접 입력하기도 하지만, 데이터는 웹 서비스에서 
+<strong>동기화 어댑터</strong>를 통해 연락처 제공자로 흘러들어가기도 합니다. 이것이 기기와 
+서비스 사이에서 데이터의 전송을 자동화하는 것입니다. 동기화 어댑터는 시스템의 제어를 받으며 
+배경에서 실행되고, {@link android.content.ContentResolver} 메서드를 
+호출하여 데이터를 관리합니다.
+</p>
+<p>
+    Android에서 동기화 어댑터와 함께 작업하는 웹 서비스는 계정 유형으로 식별됩니다.
+    각 동기화 어댑터는 계정 유형 하나에 통하지만, 그 유형에 대한 여러 개의 계정이름을 
+지원할 수 있습니다. 계정 유형과 계정 이름은 
+<a href="#RawContactsExample">원시 연락처 데이터 소스</a> 섹션에 간단히 설명되어 있습니다. 다음 정의는 좀 더 자세한 내용을 제공하며, 
+계정 유형과 이름이 동기화 어댑터와 서비스에 관련되는 방식을 설명합니다.
+</p>
+<dl>
+    <dt>
+        계정 유형
+    </dt>
+    <dd>
+        사용자가 데이터를 저장해둔 서비스를 식별합니다. 대부분의 경우, 사용자가 
+서비스로 인증해야 합니다. 예를 들어, Google 주소록은 계정 유형이고, 이는 
+코드 <code>google.com</code>으로 식별됩니다. 이 값은 
+{@link android.accounts.AccountManager}가 사용하는 계정 유형에 상응합니다.
+    </dd>
+    <dt>
+        계정 이름
+    </dt>
+    <dd>
+        하나의 계정 유형에 대한 특정 계정 또는 로그인을 식별합니다. Google 주소록 계정은 
+Google 계정과 같고, 이는 계정 이름으로 이메일 주소를 사용합니다.
+        다른 서비스는 한 단어로 된 사용자 이름이나 숫자 ID를 사용할 수 있습니다.
+    </dd>
+</dl>
+<p>
+    계정 유형은 고유하지 않아도 됩니다. 한 사람의 사용자가 여러 개의 Google 주소록을 구성할 수 있고 
+그 데이터를 연락처 제공자에 다운로드할 수 있습니다. 이런 일은 사용자에게 
+개인용 계정 이름에 대한 개인용 연락처가 한 세트 있고, 업무용으로 또 한 세트가 있는 경우 일어납니다. 계정 이름은 보통 
+고유합니다. 이 둘은 함께 사용되어 연락처 제공자와 외부 서비스 사이의 특정 데이터 
+흐름을 식별합니다.
+</p>
+<p>
+    서비스의 데이터를 연락처 제공자에 전송하려면, 나름의 
+동기화 어댑터를 작성해야 합니다. 이 내용은 
+<a href="#SyncAdapters">연락처 제공자 동기화 어댑터</a> 섹션에 자세히 설명되어 있습니다.
+</p>
+<p>
+    그림 4는 연락처 제공자가 사람에 대한 데이터 흐름에 
+어떻게 들어맞는지 나타낸 것입니다. "동기화 어댑터"라고 표시된 상자에서, 각 어댑터에는 계정 유형에 따라 레이블이 붙어 있습니다.
+</p>
+<img src="{@docRoot}images/providers/ContactsDataFlow.png" alt="Flow of data about people" height="252" id="figure5" />
+<p class="img-caption">
+  <strong>그림 4.</strong> 연락처 제공자의 데이터 흐름입니다.
+</p>
+<h2 id="Permissions">필수 권한</h2>
+<p>
+    연락처 제공자에 액세스하고자 하는 애플리케이션은 다음 권한을 
+요청해야 합니다.
+</p>
+<dl>
+    <dt>하나 이상의 테이블에 대한 읽기 액세스</dt>
+    <dd>
+        {@link android.Manifest.permission#READ_CONTACTS}, 
+<code>AndroidManifest.xml</code>에서 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code> 요소와 함께 
+<code>&lt;uses-permission android:name="android.permission.READ_CONTACTS"&gt;</code>로 지정된 것.
+    </dd>
+    <dt>하나 이상의 테이블에 대한 쓰기 액세스</dt>
+    <dd>
+        {@link android.Manifest.permission#WRITE_CONTACTS}, 
+<code>AndroidManifest.xml</code>에서 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code> 요소와 함께 
+<code>&lt;uses-permission android:name="android.permission.WRITE_CONTACTS"&gt;</code>로 지정된 것.
+    </dd>
+</dl>
+<p>
+    이들 권한은 사용자 프로필 데이터로 확대되지 않습니다. 사용자 프로필과 
+필수 권한은 
+다음 섹션인 <a href="#UserProfile">사용자 프로필</a>에서 논의합니다.
+</p>
+<p>
+    사용자의 연락처 데이터는 중요한 개인 정보라는 사실을 명심하십시오. 사용자는 자신의 
+개인정보보호를 중요하게 생각하고 신경 쓰기 때문에 애플리케이션이 자신이나 자신의 연락처에 관한 정보를 수집하는 것을 바라지 않습니다.
+    사용자의 연락처 데이터에 액세스할 권한이 필요한 이유가 분명하지 않으면 여러분의 
+애플리케이션에 낮은 순위를 매기거나 설치를 거부할 수도 있습니다.
+</p>
+<h2 id="UserProfile">사용자 프로필</h2>
+<p>
+    {@link android.provider.ContactsContract.Contacts} 테이블에 있는 한 개의 행에는 기기의 사용자에 대한 프로필 
+데이터가 담겨 있습니다. 이 데이터는 사용자의 연락처 중 하나라기보다는 기기의 <code>user</code>를 
+설명하는 것입니다. 프로필 연락처 행은 
+프로필을 사용하는 각 시스템에 대한 원시 연락처 행에 연결되어 있습니다.
+    각 프로필 원시 연락처 행에는 여러 개의 데이터 행이 있을 수 있습니다. 사용자 프로필에 액세스하기 위한 상수는 
+{@link android.provider.ContactsContract.Profile} 클래스에서 이용할 수 있습니다.
+</p>
+<p>
+    사용자 프로필에 액세스하려면 특수 권한이 필요합니다. 읽기와 쓰기에 필요한 
+{@link android.Manifest.permission#READ_CONTACTS}와
+{@link android.Manifest.permission#WRITE_CONTACTS} 권한 외에도, 
+사용자 프로필에 액세스하려면 각각 읽기와 쓰기 액세스를 위한{@code android.Manifest.permission#READ_PROFILE}과 
+{@code android.Manifest.permission#WRITE_PROFILE} 권한이 
+필요합니다.
+</p>
+<p>
+    사용자의 프로필은 중요한 정보로 간주해야 한다는 점을 명심하십시오. 
+{@code android.Manifest.permission#READ_PROFILE}권한을 사용하면 개발자가 기기 사용자의 
+개인 식별 데이터에 액세스할 수 있게 해줍니다. 애플리케이션 설명에서 
+사용자에게 왜 여러분이 사용자 프로필 권한을 필요로 하는지 밝혀두어야 합니다.
+</p>
+<p>
+    사용자 프로필이 포함된 연락처 행을 검색하려면,
+{@link android.content.ContentResolver#query(Uri,String[], String, String[], String)
+ContentResolver.query()}를 호출합니다. 콘텐츠 URI 를
+{@link android.provider.ContactsContract.Profile#CONTENT_URI}로 설정하고 
+선택 기준은 아무것도 제공하지 마십시오. 이 콘텐츠 URI는 원시 연락처 또는 프로필에 대한 데이터를 검색하기 위한 
+기본 URI로도 쓸 수 있습니다. 예를 들어, 이 코드 조각은 프로필에 대한 데이터를 검색합니다.
+</p>
+<pre>
+// Sets the columns to retrieve for the user profile
+mProjection = new String[]
+    {
+        Profile._ID,
+        Profile.DISPLAY_NAME_PRIMARY,
+        Profile.LOOKUP_KEY,
+        Profile.PHOTO_THUMBNAIL_URI
+    };
+
+// Retrieves the profile from the Contacts Provider
+mProfileCursor =
+        getContentResolver().query(
+                Profile.CONTENT_URI,
+                mProjection ,
+                null,
+                null,
+                null);
+</pre>
+<p class="note">
+    <strong>참고:</strong> 여러 개의 연락처 행을 검색하고 그 중 하나가 
+사용자 프로필인지 판별하고자 하는 경우, 
+행의 {@link android.provider.ContactsContract.ContactsColumns#IS_USER_PROFILE} 열을 테스트합니다. 이 열은 
+해당 연락처가 사용자 프로필이면 "1"로 설정됩니다.
+</p>
+<h2 id="ContactsProviderMetadata">연락처 제공자 메타데이터</h2>
+<p>
+    연락처 제공자는 리포지토리에서 연락처 데이터 상태를 
+추적하는 데이터를 관리합니다. 이 리포지토리 관련 데이터는 
+원시 연락처, 데이터 및 연락처 테이블 행,
+{@link android.provider.ContactsContract.Settings} 테이블 및 
+{@link android.provider.ContactsContract.SyncState} 테이블 등의 여러 장소에 저장됩니다. 다음 표는 각 메타데이터 조각이 미치는 
+영향을 나타낸 것입니다.
+</p>
+<p class="table-caption" id="table3">
+  <strong>표 3.</strong> 연락처 제공자의 메타데이터</p>
+<table>
+    <tr>
+        <th scope="col">테이블</th>
+        <th scope="col">열</th>
+        <th scope="col">값</th>
+        <th scope="col">의미</th>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.RawContacts}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.SyncColumns#DIRTY}</td>
+        <td>"0" - 마지막 동기화 이후로 변경되지 않았습니다.</td>
+        <td rowspan="2">
+            기기에서 변경되었고 서버로 다시 동기화되어야 하는 원시 데이터를 
+표시합니다. 이 값은 Android 애플리케이션이 행을 업데이트하면 연락처 제공자가 
+자동으로 설정합니다.
+            <p>
+                원시 연락처나 데이터 테이블을 수정하는 동기화 어댑터는 
+언제나 문자열 {@link android.provider.ContactsContract#CALLER_IS_SYNCADAPTER}를 
+자신이 사용하는 콘텐츠 URI에 추가해야 합니다. 이렇게 하면 제공자가 행을 변경(dirty)으로 표시하지 못하게 방지합니다.
+                그렇지 않으면, 동기화 어댑터 수정이 로컬 수정으로 나타나며 
+서버가 수정의 근원이었다 하더라도 이 내용이 다시 서버로 전송됩니다.
+            </p>
+        </td>
+    </tr>
+    <tr>
+            <td>"1" - 마지막 동기화 이후 변경되었고, 서버에 다시 동기화해야 합니다.</td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#VERSION}</td>
+        <td>이 행의 버전 번호입니다.</td>
+        <td>
+            연락처 제공자는 행이나 관련 데이터가 변경될 때마다 이 값을 자동으로 
+증가시킵니다.
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.Data}</td>
+        <td>{@link android.provider.ContactsContract.DataColumns#DATA_VERSION}</td>
+        <td>이 행의 버전 번호입니다.</td>
+        <td>
+            연락처 제공자는 데이터 행이 변경될 때마다 이 값을 자동으로 
+증가시킵니다.
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}</td>
+        <td>
+            이 원시 연락처를 자신이 생성된 계정에 대해 고유하게 식별하는 
+문자열 값입니다.
+        </td>
+        <td>
+            동기화 어댑터가 새로운 원시 연락처를 생성하면, 이 열이 
+해당 원시 연락처에 대한 서버의 고유 ID로 설정되어야 합니다. Android 애플리케이션이 새로운 원시 연락처를 생성하면, 
+애플리케이션은 이 열을 빈 채로 두어야 합니다. 이것은 동기화 어댑터에 
+서버에 새 원시 데이터를 생성해야 한다고 신호하고, 
+{@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}에 대한 값을 가져오라고 알립니다.
+            <p>
+                특히, 소스 ID는 각 계정 유형에 대해 <strong>고유</strong>해야 하고 
+동기화 전체에서 안정적이어야 합니다.
+            </p>
+                <ul>
+                    <li>
+                        고유: 하나의 계정에 대한 각 원시 연락처에는 나름의 소스 ID가 있어야 합니다. 개발자가 
+이것을 강제 적용하지 않으면 연락처 애플리케이션에 문제를 유발하게 됩니다.
+                        같은 계정 <em>유형</em>에 대한 두 개의 원시 연락처는 소스 ID가 
+같을 수 있다는 점을 유의하십시오. 예를 들어, 
+{@code emily.dickinson@gmail.com} 계정에 대한 원시 연락처 "Thomas Higginson"은 
+{@code emilyd@gmail.com} 계정에 대한 
+원시 연락처 "Thomas Higginson"과 소스 ID가 같을 수 있습니다.
+                    </li>
+                    <li>
+                        안정적: 소스 ID는 원시 연락처에 대한 온라인 서비스의 데이터 중 영구적인 
+부분입니다. 예를 들어, 사용자가 앱 설정에서 연락처 저장소를 삭제하고 다시 동기화하면 
+복원된 원시 연락처의 소스 ID는 전과 같아야 
+합니다. 개발자가 이것을 강제 적용하지 않으면 바로 가기가 더 이상
+ 작동하지 않습니다.
+                    </li>
+                </ul>
+        </td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Groups}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.GroupsColumns#GROUP_VISIBLE}</td>
+        <td>"0" - 이 그룹의 연락처는 Android 애플리케이션 UI에 표시되지 않아야 합니다.</td>
+        <td>
+            이 열은 사용자가 특정 그룹에 연락처를 숨길 수 있게 해주는 서버와의 
+호환성을 위한 것입니다.
+        </td>
+    </tr>
+    <tr>
+        <td>"1" - 이 그룹의 연락처는 애플리케이션 UI에 표시되어도 됩니다.</td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Settings}</td>
+        <td rowspan="2">
+            {@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE}</td>
+        <td>
+            "0" - 이 계정과 계정 유형의 경우, 그룹에 속하지 않는 연락처는 Android 애플리케이션 UI에 
+표시되지 않습니다.
+        </td>
+        <td rowspan="2">
+            기본적으로, 연락처에 그룹에 속한 원시 데이터가 하나도 없는 경우 이는 표시되지 않습니다(원시 연락처의 그룹 구성원은 
+{@link android.provider.ContactsContract.Data} 테이블에서 
+하나 이상의 {@link android.provider.ContactsContract.CommonDataKinds.GroupMembership} 행으로 
+표시됩니다).
+            계정 유형과 계정에 대한 {@link android.provider.ContactsContract.Settings} 테이블 행에서 
+이 플래그를 설정하면 그룹이 없는 연락처가 표시되도록 강제할 수 있습니다.
+            이 플래그의 용도 중 하나는 그룹을 사용하지 않는 서버로부터 가져온 연락처를 표시하는 것입니다.
+        </td>
+    </tr>
+    <tr>
+        <td>
+            "1" - 이 계정과 계정 유형의 경우, 그룹에 속하지 않는 연락처가 애플리케이션 UI에 
+표시됩니다.
+        </td>
+
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.SyncState}</td>
+        <td>(모두)</td>
+        <td>
+            이 테이블을 사용하여 동기화 어댑터의 메타데이터를 저장합니다.
+        </td>
+        <td>
+            이 테이블을 사용하면 동기화 상태와 기타 동기화 관련 데이터를 기기에 영구적으로 
+저장할 수 있습니다.
+        </td>
+    </tr>
+</table>
+<h2 id="Access">연락처 제공자 액세스</h2>
+<p>
+    이 섹션은 연락처 제공자에서 가져온 데이터에 액세스하는 법에 대한 지침을 제공하며, 
+요점은 다음과 같습니다.
+</p>
+<ul>
+    <li>
+        엔티티 쿼리.
+    </li>
+    <li>
+        일괄 수정.
+    </li>
+    <li>
+        인텐트로 검색 및 수정.
+    </li>
+    <li>
+        데이터 무결성.
+    </li>
+</ul>
+<p>
+    동기화 어댑터에서 수정하는 방법은 
+<a href="#SyncAdapters">연락처 제공자 동기화 어댑터</a> 섹션에도 자세히 설명되어 있습니다.
+</p>
+<h3 id="Entities">엔티티 쿼리</h3>
+<p>
+    연락처 제공자 테이블은 계층을 사용하여 조직화되어 있으므로, 
+행과 그 행에 연결된 모든 "하위" 행을 검색하는 것이 유용할 때가 많습니다. 예를 들어, 
+어떤 개인의 모든 정보를 표시하려면 
+하나의 {@link android.provider.ContactsContract.Contacts} 행에 대한 모든 
+{@link android.provider.ContactsContract.RawContacts} 행을 검색하거나 하나의 
+{@link android.provider.ContactsContract.RawContacts} 행에 대한 모든 
+{@link android.provider.ContactsContract.CommonDataKinds.Email} 행을 검색하는 것이 좋습니다. 이를 용이하게 하기 위해, 
+연락처 제공자는 테이블 사이를 연결하는 데이터베이스 역할을 하는 <strong>엔티티</strong> 구조를 
+제공합니다.
+</p>
+<p>
+    하나의 엔티티는 마치 상위 테이블과 그 하위 테이블에서 가져온 선택된 몇 개의 열로 이루어진 테이블과 같습니다.
+    엔티티를 쿼리하는 경우, 해당 엔티티에서 사용할 수 있는 열을 기반으로 하여 예측과 검색 
+기준을 제공합니다. 그 결과도 도출되는 것이 {@link android.database.Cursor}이며, 
+여기에 검색된 각 하위 테이블에 대해 행이 하나씩 들어있습니다. 예를 들어 연락처 이름에 대해 
+{@link android.provider.ContactsContract.Contacts.Entity}를 쿼리하고 
+그 이름에 대한 모든 원시 연락처에 대한 모든 {@link android.provider.ContactsContract.CommonDataKinds.Email} 행을 쿼리하면 
+{@link android.database.Cursor}를 돌려받게 되며 이 안에 
+각 {@link android.provider.ContactsContract.CommonDataKinds.Email}행에 대한 행이 하나씩 들어있습니다.
+</p>
+<p>
+    엔티티는 쿼리를 단순화합니다. 엔티티를 사용하면 연락처나 원시 연락처에 대한 모든 연락처 데이터를 
+한꺼번에 검색할 수 있습니다. 즉 우선 상위 테이블을 검색하여 ID를 가져오고, 그런 다음 
+하위 테이블을 그 ID로 검색하지 않아도 된다는 뜻입니다. 또한, 연락처 제공자에는 엔티티에 대한 쿼리를 
+하나의 트랜잭션으로 처리하므로, 검색된 데이터가 내부적으로 일관성을 유지하도록 
+보장합니다.
+</p>
+<p class="note">
+    <strong>참고:</strong> 하나의 엔티티에 상위 및 하위 테이블의 모든 열이 들어있지는 않은 것이 
+보통입니다. 엔티티에 대한 열 이름 상수 목록에 없는 열 이름으로 작업하려 시도하면, 
+{@link java.lang.Exception}이 발생합니다.
+</p>
+<p>
+    다음 조각은 하나의 연락처에 대해 모든 원시 연락처 행을 검색하는 방법을 나타낸 것입니다. 이 조각은 
+두 개의 액티비티, 즉 "기본"과 "세부"를 가진 더 큰 애플리케이션의 일부입니다. 기본 액티비티는 
+연락처 행 목록을 보여줍니다. 사용자가 하나를 선택하면, 이 액티비티가 해당 목록의 ID를 
+세부 액티비티에 전송합니다. 세부 액티비티는 {@link android.provider.ContactsContract.Contacts.Entity}를 사용하여 
+선택된 연락처와 연관된 모든 원시 연락처에서 
+모든 데이터 행을 표시합니다.
+</p>
+<p>
+    이 조각은 "세부" 액티비티에서 가져온 것입니다.
+</p>
+<pre>
+...
+    /*
+     * Appends the entity path to the URI. In the case of the Contacts Provider, the
+     * expected URI is content://com.google.contacts/#/entity (# is the ID value).
+     */
+    mContactUri = Uri.withAppendedPath(
+            mContactUri,
+            ContactsContract.Contacts.Entity.CONTENT_DIRECTORY);
+
+    // Initializes the loader identified by LOADER_ID.
+    getLoaderManager().initLoader(
+            LOADER_ID,  // The identifier of the loader to initialize
+            null,       // Arguments for the loader (in this case, none)
+            this);      // The context of the activity
+
+    // Creates a new cursor adapter to attach to the list view
+    mCursorAdapter = new SimpleCursorAdapter(
+            this,                        // the context of the activity
+            R.layout.detail_list_item,   // the view item containing the detail widgets
+            mCursor,                     // the backing cursor
+            mFromColumns,                // the columns in the cursor that provide the data
+            mToViews,                    // the views in the view item that display the data
+            0);                          // flags
+
+    // Sets the ListView's backing adapter.
+    mRawContactList.setAdapter(mCursorAdapter);
+...
+&#64;Override
+public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+
+    /*
+     * Sets the columns to retrieve.
+     * RAW_CONTACT_ID is included to identify the raw contact associated with the data row.
+     * DATA1 contains the first column in the data row (usually the most important one).
+     * MIMETYPE indicates the type of data in the data row.
+     */
+    String[] projection =
+        {
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID,
+            ContactsContract.Contacts.Entity.DATA1,
+            ContactsContract.Contacts.Entity.MIMETYPE
+        };
+
+    /*
+     * Sorts the retrieved cursor by raw contact id, to keep all data rows for a single raw
+     * contact collated together.
+     */
+    String sortOrder =
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID +
+            " ASC";
+
+    /*
+     * Returns a new CursorLoader. The arguments are similar to
+     * ContentResolver.query(), except for the Context argument, which supplies the location of
+     * the ContentResolver to use.
+     */
+    return new CursorLoader(
+            getApplicationContext(),  // The activity's context
+            mContactUri,              // The entity content URI for a single contact
+            projection,               // The columns to retrieve
+            null,                     // Retrieve all the raw contacts and their data rows.
+            null,                     //
+            sortOrder);               // Sort by the raw contact ID.
+}
+</pre>
+<p>
+    로딩이 완료되면, {@link android.app.LoaderManager}가 
+{@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished(Loader, D)
+onLoadFinished()}에 대한 콜백을 호출합니다. 이 메서드로 수신되는 인수 중 하나가 
+{@link android.database.Cursor}로, 여기에 쿼리 결과도 함께 들어옵니다. 개발자 본인의 앱에서는, 이 
+{@link android.database.Cursor}에서 데이터를 가져와 이를 표시할 수도 있고 여기에 작업을 더할 수도 있습니다.
+</p>
+<h3 id="Transactions">일괄 수정</h3>
+<p>
+    연락처 제공자에서 데이터를 삽입, 업데이트 및 삭제하는 경우 가급적이면 
+"일괄 모드"를 쓰는 것이 좋습니다. 이때 
+{@link android.content.ContentProviderOperation} 객체의 {@link java.util.ArrayList}를 생성하고 
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}를 호출하면 됩니다. 연락처 제공자는 
+
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}에서의 모든 작업을 
+하나의 트랜잭션으로 수행하기 때문에, 수정한 내용이 일관되지 않은 상태로 연락처 리포지토리를 
+떠날 일이 결코 없습니다. 일괄 수정을 사용하면 원시 연락처와 그 세부 데이터를 동시에 삽입하는 것도 
+쉽습니다.
+</p>
+<p class="note">
+    <strong>참고:</strong> <em>하나의</em> 원시 연락처를 수정하려면 수정 작업을 앱에서 처리하는 것보다는 
+인텐트를 기기의 연락처 애플리케이션에 보내는 방안을 고려하십시오. 
+이렇게 하는 방법이 
+<a href="#Intents">인텐트로 검색 및 수정</a> 섹션에 자세히 설명되어 있습니다.
+</p>
+<h4>양보 지점</h4>
+<p>
+    대량의 작업이 들어있는 일괄 수정은 다른 프로세스를 차단하므로, 
+그 결과 전반적으로 불량한 사용자 환경을 유발할 수 있습니다. 수행하고자 하는 모든 수정 작업을 가능한 한 
+적은 수의 별도의 목록으로 정리하고 그와 동시에 이 작업이 시스템을 차단하지 못하도록 방지하려면 
+하나 이상의 작업에 <strong>양보 지점</strong>을 설정해야 합니다.
+    양보 지점은 {@link android.content.ContentProviderOperation#isYieldAllowed()} 값이 <code>true</code>로 설정된 {@link android.content.ContentProviderOperation} 객체입니다.
+
+ 연락처 제공자가 양보 지점을 만나면 
+다른 프로세스가 실행되도록 작업을 잠시 멈추고 현재 트랜잭션을 종료합니다. 제공자가 다시 시작되면, 이는 
+{@link java.util.ArrayList}에서 다음 작업을 계속 진행하고 
+새 트랜잭션을 시작합니다.
+</p>
+<p>
+    양보 지점을 사용하면 그 결과 
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}로의 호출 한 건당 하나 이상의 트랜잭션이 생기는 것은 사실입니다. 이 때문에, 
+ 양보 지점은 관련된 행 한 세트에서 마지막 작업에 설정해야 합니다.
+    예를 들어, 원시 연락처 행과 관련된 데이터 행을 추가하는 세트의 마지막 작업에 
+양보 지점을 설정하거나, 하나의 연락처와 관련된 행 한 세트의 
+마지막 작업에 양보 지점을 설정해야 합니다.
+</p>
+<p>
+    양보 지점은 원자성 작업의 단위이기도 합니다. 두 개의 양보 지점 사이를 향한 액세스는 모두 
+한 가지 단위로서 성공 또는 실패합니다. 양보 지점을 설정하지 않는 경우, 가장 작은 
+원자성 작업은 작업 전체가 됩니다. 양보 지점을 사용하면, 작업이 
+시스템 성능을 저하하지 않도록 방지하는 동시에 작업의 하위 세트가 원자성 작업이도록 
+보장할 수 있습니다.
+</p>
+<h4>수정 역참조</h4>
+<p>
+    새로운 원시 연락처 행과 관련 데이터 행을 
+일련의 {@link android.content.ContentProviderOperation} 개체로 삽입할 때는, 
+ 원시 연락처의 
+{@code android.provider.BaseColumns#_ID} 값을
+{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID} 값으로 삽입하여 데이터 행과 원시 연락처 행을 연결해야 합니다. 그러나, 이 값은 
+데이터 행에 대하여 {@link android.content.ContentProviderOperation}을 
+생성하는 경우에는 사용할 수 없습니다. 원시 연락처 행에 대해 {@link android.content.ContentProviderOperation}
+을 아직 적용하지 않았기 때문입니다. 이 문제를 해결하려면 
+{@link android.content.ContentProviderOperation.Builder} 클래스에
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()} 메서드가 있어야 합니다.
+    이 메서드를 사용하면 열을 이전 작업의 결과로 삽입 또는 수정할 수 
+있습니다.
+</p>
+<p>
+    {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+메서드에는 인수가 두 가지 있습니다.
+</p>
+    <dl>
+        <dt>
+            <code>key</code>
+        </dt>
+        <dd>
+            키-값 쌍의 키입니다. 이 인수의 값은 수정하는 테이블의 
+열 이름이어야 합니다.
+        </dd>
+        <dt>
+            <code>previousResult</code>
+        </dt>
+        <dd>
+            
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}의 {@link android.content.ContentProviderResult} 객체 배열에 있는
+값의 0 기반 색인입니다. 
+일괄 작업이 적용되면 각 작업의 결과가 
+결과의 중간 배열에 저장됩니다. <code>previousResult</code> 값은 
+이러한 결과 중 하나의 색인이고, 이는 <code>key</code> 값으로 
+검색 및 저장됩니다. 이것을 사용하면 새 원시 연락처 레코드를 삽입하고
+{@code android.provider.BaseColumns#_ID} 값을 다시 가져온 뒤, 
+{@link android.provider.ContactsContract.Data} 행을 추가할 때 해당 값을 "역참조"할 수 있게 해줍니다.
+            <p>
+                
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}를 처음 호출할 때, 
+개발자가 제공하는 {@link android.content.ContentProviderOperation} 객체의 {@link java.util.ArrayList} 크기와 같은 크기로 
+전체 결과 배열이 생성됩니다. 그러나 
+결과 배열의 모든 요소는 <code>null</code>로 설정되고, 
+아직 적용되지 않은 작업 결과에 대한 역참조를 수행하려 시도하면 
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}가
+{@link java.lang.Exception}을 발생시킵니다.
+
+            </p>
+        </dd>
+    </dl>
+<p>
+    다음 조각은 새로운 원시 연락처와 데이터를 일괄 삽입하는 방법을 나타낸 것입니다. 여기에는 
+양보 지점을 지정하고 역참조를 사용하는 코드가 포함되어 있습니다. 이 조각은 
+<code>createContacEntry()</code> 메서드의 확장 버전이며, 이는 
+<code><a href="{@docRoot}resources/samples/ContactManager/index.html">
+    Contact Manager</a></code> 샘플 애플리케이션에 있는 <code>ContactAdder</code> 클래스의 
+일부입니다.
+</p>
+<p>
+    첫 번째 조각은 UI에서 연락처 데이터를 검색합니다. 이 시점에서 사용자는 이미 
+새로운 원시 연락처를 추가할 계정을 선택하였습니다.
+</p>
+<pre>
+// Creates a contact entry from the current UI values, using the currently-selected account.
+protected void createContactEntry() {
+    /*
+     * Gets values from the UI
+     */
+    String name = mContactNameEditText.getText().toString();
+    String phone = mContactPhoneEditText.getText().toString();
+    String email = mContactEmailEditText.getText().toString();
+
+    int phoneType = mContactPhoneTypes.get(
+            mContactPhoneTypeSpinner.getSelectedItemPosition());
+
+    int emailType = mContactEmailTypes.get(
+            mContactEmailTypeSpinner.getSelectedItemPosition());
+</pre>
+<p>
+    다음 조각은 
+{@link android.provider.ContactsContract.RawContacts} 테이블에 원시 연락처 행을 삽입하는 작업을 생성합니다.
+</p>
+<pre>
+    /*
+     * Prepares the batch operation for inserting a new raw contact and its data. Even if
+     * the Contacts Provider does not have any data for this person, you can't add a Contact,
+     * only a raw contact. The Contacts Provider will then add a Contact automatically.
+     */
+
+     // Creates a new array of ContentProviderOperation objects.
+    ArrayList&lt;ContentProviderOperation&gt; ops =
+            new ArrayList&lt;ContentProviderOperation&gt;();
+
+    /*
+     * Creates a new raw contact with its account type (server type) and account name
+     * (user's account). Remember that the display name is not stored in this row, but in a
+     * StructuredName data row. No other data is required.
+     */
+    ContentProviderOperation.Builder op =
+            ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
+            .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType())
+            .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    그런 다음, 코드가 표시 이름, 전화 및 이메일 행에 대한 데이터 행을 생성합니다.
+</p>
+<p>
+    각 작업 빌더 개체는 
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}를 
+사용하여
+{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}를 가져옵니다. 참조는 
+첫 번째 작업의 {@link android.content.ContentProviderResult} 객체를 다시 가리키고, 
+이것이 원시 연락처 행을 추가한 뒤 이의 새 {@code android.provider.BaseColumns#_ID}
+값을 반환합니다. 그 결과, 각 데이터 행은 자동으로 자신의 
+{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}
+에 의해 자신이 속하는 새 {@link android.provider.ContactsContract.RawContacts} 행에 연결됩니다.
+</p>
+<p>
+    이메일 행을 추가하는 {@link android.content.ContentProviderOperation.Builder} 객체는 
+양보 지점을 설정하는 {@link android.content.ContentProviderOperation.Builder#withYieldAllowed(boolean)
+withYieldAllowed()}로 플래그 표시합니다.
+</p>
+<pre>
+    // Creates the display name for the new raw contact, as a StructuredName data row.
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * withValueBackReference sets the value of the first argument to the value of
+             * the ContentProviderResult indexed by the second argument. In this particular
+             * call, the raw contact ID column of the StructuredName data row is set to the
+             * value of the result returned by the first operation, which is the one that
+             * actually adds the raw contact row.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to StructuredName
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
+
+            // Sets the data row's display name to the name in the UI.
+            .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified phone number and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Phone
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
+
+            // Sets the phone number and type
+            .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone)
+            .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified email and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Email
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
+
+            // Sets the email address and type
+            .withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email)
+            .withValue(ContactsContract.CommonDataKinds.Email.TYPE, emailType);
+
+    /*
+     * Demonstrates a yield point. At the end of this insert, the batch operation's thread
+     * will yield priority to other threads. Use after every set of operations that affect a
+     * single contact, to avoid degrading performance.
+     */
+    op.withYieldAllowed(true);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    마지막 조각은 새로운 원시 연락처와 데이터 행을 삽입하는 
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}에 대한 호출을 
+나타낸 것입니다.
+</p>
+<pre>
+    // Ask the Contacts Provider to create a new contact
+    Log.d(TAG,"Selected account: " + mSelectedAccount.getName() + " (" +
+            mSelectedAccount.getType() + ")");
+    Log.d(TAG,"Creating contact: " + name);
+
+    /*
+     * Applies the array of ContentProviderOperation objects in batch. The results are
+     * discarded.
+     */
+    try {
+
+            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
+    } catch (Exception e) {
+
+            // Display a warning
+            Context ctx = getApplicationContext();
+
+            CharSequence txt = getString(R.string.contactCreationFailure);
+            int duration = Toast.LENGTH_SHORT;
+            Toast toast = Toast.makeText(ctx, txt, duration);
+            toast.show();
+
+            // Log exception
+            Log.e(TAG, "Exception encountered while inserting contact: " + e);
+    }
+}
+</pre>
+<p>
+    일괄 작업을 사용하면 <strong>낙관적 동시성 제어</strong>도 구현할 수 있습니다. 
+이것은 기본 리포지토리를 잠그지 않고도 수정 트랜잭션을 적용할 수 있는 메서드입니다.
+    이 메서드를 사용하려면 트랜잭션을 적용하고 동시에 발생한 
+다른 수정 사항이 있는지 확인합니다. 부합하지 않는 수정이 발생한 것을 발견하면 
+트랜잭션을 롤백하고 다시 시도합니다.
+</p>
+<p>
+    낙관적 동시성 제어는 한 번에 한 명의 사용자만 존재하고 데이터 리포지토리에 대한 동시 액세스가 드문 모바일 기기에 
+유용합니다. 잠금을 사용하지 않으므로 
+잠금을 설정하거나 다른 트랜잭션이 잠금을 해제하기를 기다리면서 시간을 낭비하지 않습니다.
+</p>
+<p>
+    하나의 
+{@link android.provider.ContactsContract.RawContacts} 행을 업데이트하면서 동시에 낙관적 동시성 제어를 사용하려면, 다음 단계를 따르십시오.
+</p>
+<ol>
+    <li>
+        검색하는 다른 데이터와 함께 행 연락처의 {@link android.provider.ContactsContract.SyncColumns#VERSION}을 
+검색합니다.
+    </li>
+    <li>
+        제약을 강제 적용하는 데 적합한 
+{@link android.content.ContentProviderOperation.Builder} 객체를 하나 생성하되 
+{@link android.content.ContentProviderOperation#newAssertQuery(Uri)} 메서드를 사용합니다. 콘텐츠 URI의 경우, 
+{@link android.provider.ContactsContract.RawContacts#CONTENT_URI
+        RawContacts.CONTENT_URI}를 사용하되 
+이에 추가된 원시 데이터의 {@code android.provider.BaseColumns#_ID}를 함께 씁니다.
+    </li>
+    <li>
+        {@link android.content.ContentProviderOperation.Builder} 개체의 경우,
+{@link android.content.ContentProviderOperation.Builder#withValue(String, Object)
+withValue()}를 호출하여 방금 검색한 버전 번호와 {@link android.provider.ContactsContract.SyncColumns#VERSION} 열을
+비교합니다.
+    </li>
+    <li>
+        같은 {@link android.content.ContentProviderOperation.Builder}의 경우,
+{@link android.content.ContentProviderOperation.Builder#withExpectedCount(int)
+withExpectedCount()}를 호출하여 이 어설션이 테스트하는 행이 하나뿐이도록 보장합니다.
+    </li>
+    <li>
+        {@link android.content.ContentProviderOperation.Builder#build()}를 호출하여
+{@link android.content.ContentProviderOperation} 객체를 생성하고, 이 객체를
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}에 전달하는 {@link java.util.ArrayList}의 첫 번째 객체로 추가합니다.
+
+    </li>
+    <li>
+        일괄 트랜잭션을 적용합니다.
+    </li>
+</ol>
+<p>
+    행을 읽고 수정하려고 시도하는 사이에 다른 작업이 원시 연락처 행을 업데이트하면,
+"어설션" {@link android.content.ContentProviderOperation}은 
+실패하고 전체 일괄 작업이 취소됩니다. 그러면 일괄 작업을 다시 시도하거나 
+다른 조치를 취하기로 선택할 수 있습니다.
+</p>
+<p>
+    다음 조각은 {@link android.content.CursorLoader}를 사용하여 단일 원시 연락처를 쿼리한 후 
+"어설션" {@link android.content.ContentProviderOperation}을 
+생성하는 방법을 나타낸 것입니다.
+</p>
+<pre>
+/*
+ * The application uses CursorLoader to query the raw contacts table. The system calls this method
+ * when the load is finished.
+ */
+public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor cursor) {
+
+    // Gets the raw contact's _ID and VERSION values
+    mRawContactID = cursor.getLong(cursor.getColumnIndex(BaseColumns._ID));
+    mVersion = cursor.getInt(cursor.getColumnIndex(SyncColumns.VERSION));
+}
+
+...
+
+// Sets up a Uri for the assert operation
+Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, mRawContactID);
+
+// Creates a builder for the assert operation
+ContentProviderOperation.Builder assertOp = ContentProviderOperation.netAssertQuery(rawContactUri);
+
+// Adds the assertions to the assert operation: checks the version and count of rows tested
+assertOp.withValue(SyncColumns.VERSION, mVersion);
+assertOp.withExpectedCount(1);
+
+// Creates an ArrayList to hold the ContentProviderOperation objects
+ArrayList ops = new ArrayList&lt;ContentProviderOperationg&gt;;
+
+ops.add(assertOp.build());
+
+// You would add the rest of your batch operations to "ops" here
+
+...
+
+// Applies the batch. If the assert fails, an Exception is thrown
+try
+    {
+        ContentProviderResult[] results =
+                getContentResolver().applyBatch(AUTHORITY, ops);
+
+    } catch (OperationApplicationException e) {
+
+        // Actions you want to take if the assert operation fails go here
+    }
+</pre>
+<h3 id="Intents">인텐트로 검색 및 수정</h3>
+<p>
+    기기 연락처 애플리케이션에 인텐트를 전송하면 연락처 제공자에 
+간접적으로 액세스할 수 있습니다. 인텐트는 기기의 연락처 애플리케이션 UI를 시작하고, 여기서 사용자는 
+연락처 관련 작업을 할 수 있습니다. 사용자가 이런 액세스 유형을 가지고 할 수 있는 일은 다음과 같습니다.
+    <ul>
+        <li>목록에서 연락처를 선택하고 추가 작업을 위해 앱에 반환시킵니다.</li>
+        <li>기존 연락처의 데이터를 편집합니다.</li>
+        <li>새 원시 데이터를 해당되는 계정 중 아무 곳에나 삽입합니다.</li>
+        <li>연락처 또는 연락처 데이터를 삭제합니다.</li>
+    </ul>
+<p>
+    사용자가 데이터를 삽입하거나 업데이트하고 있다면, 먼저 데이터를 수집하고 
+인텐트의 일부로 전송할 수 있습니다.
+</p>
+<p>
+    인텐트를 사용하여 기기의 연락처 애플리케이션을 통해 연락처 제공자에 액세스하는 경우 
+제공자에 액세스하기 위해 개발자 나름의 UI나 코드를 작성하지 않아도 됩니다. 제공자에 대한 읽기 또는 쓰기 권한도 요청하지 않아도 
+됩니다. 기기 연락처 애플리케이션은 
+연락처에 대한 읽기 권한을 위임할 수 있고, 다른 애플리케이션을 통해 수정하기 때문에 
+쓰기 권한도 필요 없습니다.
+</p>
+<p>
+    제공자에 액세스하기 위해 인텐트를 전송하는 일반적인 과정은 
+"인텐트를 통한 데이터 액세스" 섹션의 <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+콘텐츠 제공자 기본 정보</a> 가이드에 상세히 설명되어 있습니다. 이용 가능한 작업에 대해 사용하는 동작, 
+MIME 유형 및 데이터 값은 표 4에 요약되어 있고,
+
+{@link android.content.Intent#putExtra(String, String) putExtra()}와 함께 사용할 수 있는 추가 값은
+{@link android.provider.ContactsContract.Intents.Insert}의 참조 문서에 나열되어 있습니다.
+</p>
+<p class="table-caption" id="table4">
+  <strong>표 4.</strong> 연락처 제공자 인텐트
+</p>
+<table style="width:75%">
+    <tr>
+        <th scope="col" style="width:10%">작업</th>
+        <th scope="col" style="width:5%">동작</th>
+        <th scope="col" style="width:10%">데이터</th>
+        <th scope="col" style="width:10%">MIME 유형</th>
+        <th scope="col" style="width:25%">참고</th>
+    </tr>
+    <tr>
+        <td><strong>목록에서 연락처 선택</strong></td>
+        <td>{@link android.content.Intent#ACTION_PICK}</td>
+        <td>
+            다음 중 하나로 정해집니다.
+            <ul>
+                <li>
+{@link android.provider.ContactsContract.Contacts#CONTENT_URI Contacts.CONTENT_URI}, 
+이는 연락처 목록을 표시합니다.
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Phone#CONTENT_URI Phone.CONTENT_URI}, 
+이는 원시 연락처에 대한 전화 번호 목록을 표시합니다.
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal#CONTENT_URI
+StructuredPostal.CONTENT_URI}, 
+이는 원시 연락처에 대한 우편 주소 목록을 표시합니다.
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_URI Email.CONTENT_URI}, 
+이는 원시 연락처에 대한 이메일 주소 목록을 표시합니다.
+                </li>
+            </ul>
+        </td>
+        <td>
+            사용하지 않음
+        </td>
+        <td>
+            개발자가 제공하는 콘텐츠 URI에 따라 원시 연락처 목록이나 원시 연락처에서 가져온 
+데이터 목록을 표시합니다.
+            <p>
+                
+{@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()} 호출, 
+이는 선택한 행의 콘텐츠 URI를 반환합니다. URI의 형태는 
+테이블의 콘텐츠 URI에 행의 <code>LOOKUP_ID</code>를 추가한 것입니다.
+                기기의 연락처 앱은 액티비티 수명 동안 이 콘텐츠 URI에 
+읽기 및 쓰기 권한을 위임합니다. 자세한 내용은 
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+콘텐츠 제공자 기본 정보</a> 가이드를 참조하십시오.
+            </p>
+        </td>
+    </tr>
+    <tr>
+        <td><strong>새 원시 연락처 삽입</strong></td>
+        <td>{@link android.provider.ContactsContract.Intents.Insert#ACTION Insert.ACTION}</td>
+        <td>N/A</td>
+        <td>
+            {@link android.provider.ContactsContract.RawContacts#CONTENT_TYPE
+RawContacts.CONTENT_TYPE}, 일련의 원시 연락처에 대한 MIME 유형입니다.
+        </td>
+        <td>
+            기기의 연락처 애플리케이션의 <strong>연락처 추가</strong> 화면을 표시합니다. 개발자가 
+인텐트에 추가하는 추가 사항 값이 표시됩니다. 
+{@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()}와 함께 전송되는 경우,
+새로 추가된 원시 연락처의 콘텐츠 URI는 
+"데이터" 필드의 {@link android.content.Intent} 인수에 있는 액티비티의 {@link android.app.Activity#onActivityResult(int, int, Intent) onActivityResult()}
+콜백 메서드로 
+다시 전달됩니다. 값을 가져오려면, {@link android.content.Intent#getData()}를 호출합니다.
+        </td>
+    </tr>
+    <tr>
+        <td><strong>연락처 편집</strong></td>
+        <td>{@link android.content.Intent#ACTION_EDIT}</td>
+        <td>
+            연락처에 대한 
+{@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI}입니다. 편집자 액티비티를 사용하면 사용자가 이 연락처와 관련된 데이터를 어느 것이든 
+편집할 수 있습니다.
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE
+Contacts.CONTENT_ITEM_TYPE}, 하나의 연락처입니다.</td>
+        <td>
+            연락처 애플리케이션에 연락처 편집 화면을 표시합니다. 개발자가 
+인텐트에 추가하는 추가 사항 값이 표시됩니다. 사용자가 <strong>완료</strong>를 클릭하여 편집 내용을 저장하면, 
+액티비티가 전경으로 돌아옵니다.
+        </td>
+    </tr>
+    <tr>
+        <td><strong>데이터를 추가할 수 있는 선택기를 표시합니다.</strong></td>
+        <td>{@link android.content.Intent#ACTION_INSERT_OR_EDIT}</td>
+        <td>
+            N/A
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE}
+        </td>
+         <td>
+            이 인텐트는 항상 연락처 앱의 선택기 화면을 표시합니다. 사용자는 
+편집할 연락처를 선택하거나 새 연락처를 추가할 수 있습니다. 사용자의 선택에 따라 
+편집 또는 추가 화면이 나타나고 개발자가 인텐트에 전달하는 추가 사항 데이터가 
+표시됩니다. 앱이 이메일이나 전화 번호 등의 연락처 데이터를 표시하는 경우, 
+이 인텐트를 사용하면 사용자가 기존 연락처에 데이터를 추가할 수 
+있습니다.
+            <p class="note">
+                <strong>참고:</strong> 이 인텐트의 추가 사항에서는 이름 값을 전송하지 않아도 됩니다. 
+사용자가 항상 기존의 이름을 선택하거나 새 이름을 추가하기 때문입니다. 게다가, 
+개발자가 이름을 전송하고 사용자가 편집을 선택하면 연락처 앱은 개발자가 전송한 이름을 표시하면서 
+이전 값을 재정의하게 됩니다. 사용자가 
+이를 눈치채지 못하고 편집 내용을 저장하면 이전 값은 손실됩니다.
+            </p>
+         </td>
+    </tr>
+</table>
+<p>
+    기기의 연락처 앱은 개발자가 인텐트로 원시 연락처 또는 그에 속한 모든 데이터를 삭제하도록 
+허용하지 않습니다. 대신, 원시 연락처를 삭제하려면 
+{@link android.content.ContentResolver#delete(Uri, String, String[]) ContentResolver.delete()} 
+또는 {@link android.content.ContentProviderOperation#newDelete(Uri)
+ContentProviderOperation.newDelete()}를 사용합니다.
+</p>
+<p>
+    다음 조각은 새로운 원시 연락처와 
+데이터를 삽입하는 인텐트를 구성, 전송하는 방법을 나타낸 것입니다.
+</p>
+<pre>
+// Gets values from the UI
+String name = mContactNameEditText.getText().toString();
+String phone = mContactPhoneEditText.getText().toString();
+String email = mContactEmailEditText.getText().toString();
+
+String company = mCompanyName.getText().toString();
+String jobtitle = mJobTitle.getText().toString();
+
+// Creates a new intent for sending to the device's contacts application
+Intent insertIntent = new Intent(ContactsContract.Intents.Insert.ACTION);
+
+// Sets the MIME type to the one expected by the insertion activity
+insertIntent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
+
+// Sets the new contact name
+insertIntent.putExtra(ContactsContract.Intents.Insert.NAME, name);
+
+// Sets the new company and job title
+insertIntent.putExtra(ContactsContract.Intents.Insert.COMPANY, company);
+insertIntent.putExtra(ContactsContract.Intents.Insert.JOB_TITLE, jobtitle);
+
+/*
+ * Demonstrates adding data rows as an array list associated with the DATA key
+ */
+
+// Defines an array list to contain the ContentValues objects for each row
+ArrayList&lt;ContentValues&gt; contactData = new ArrayList&lt;ContentValues&gt;();
+
+
+/*
+ * Defines the raw contact row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues rawContactRow = new ContentValues();
+
+// Adds the account type and name to the row
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType());
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+// Adds the row to the array
+contactData.add(rawContactRow);
+
+/*
+ * Sets up the phone number data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues phoneRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+phoneRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
+);
+
+// Adds the phone number and its type to the row
+phoneRow.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone);
+
+// Adds the row to the array
+contactData.add(phoneRow);
+
+/*
+ * Sets up the email data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues emailRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+emailRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE
+);
+
+// Adds the email address and its type to the row
+emailRow.put(ContactsContract.CommonDataKinds.Email.ADDRESS, email);
+
+// Adds the row to the array
+contactData.add(emailRow);
+
+/*
+ * Adds the array to the intent's extras. It must be a parcelable object in order to
+ * travel between processes. The device's contacts app expects its key to be
+ * Intents.Insert.DATA
+ */
+insertIntent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, contactData);
+
+// Send out the intent to start the device's contacts app in its add contact activity.
+startActivity(insertIntent);
+</pre>
+<h3 id="DataIntegrity">데이터 무결성</h3>
+<p>
+    연락처 리포지토리에는 사용자 측에서 올바르고 최신일 것으로 기대하는 중요하고 민감한 데이터가 들어있으므로 
+연락처 제공자는 데이터 무결성에 대한 잘 정의된 규칙이 있습니다. 개발자 
+여러분에게는 연락처 데이터를 수정할 때 이와 같은 규칙을 준수할 의무가 있습니다. 아래에는 중요한 규칙을 
+몇 가지 나열해 놓았습니다.
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.RawContacts} 행을 추가할 때마다 언제나 
+{@link android.provider.ContactsContract.CommonDataKinds.StructuredName} 행을 추가합니다.
+    </dt>
+    <dd>
+        {@link android.provider.ContactsContract.Data} 테이블에 {@link android.provider.ContactsContract.CommonDataKinds.StructuredName} 행이 없는 {@link android.provider.ContactsContract.RawContacts} 행이 있으면 
+통합 과정에서
+문제가 발생할 수 있습니다.
+
+    </dd>
+    <dt>
+        언제나 새로운 {@link android.provider.ContactsContract.Data} 행을 
+해당 상위 {@link android.provider.ContactsContract.RawContacts} 행에 연결합니다.
+    </dt>
+    <dd>
+        {@link android.provider.ContactsContract.RawContacts}에 연결되지 않은 {@link android.provider.ContactsContract.Data} 행은 
+기기 연락처 애플리케이션에 표시되지 않고, 
+동기화 어댑터에서 문제를 발생시킬 수 있습니다.
+    </dd>
+    <dt>
+        개발자 본인의 소유인 원시 연락처에 대한 데이터만 변경하십시오.
+    </dt>
+    <dd>
+        연락처 제공자는 보통 여러 가지 서로 다른 계정 유형/온라인 서비스에서 가져온 
+데이터를 관리한다는 점을 명심하십시오. 개발자의 애플리케이션은 본인에게 
+속한 행에 대한 데이터만 수정 또는 삭제하도록 확실히 해두어야 하며, 데이터를 삽입할 때에도 개발자 본인이 
+제어하는 계정 유형과 이름만 사용해야 합니다.
+    </dd>
+    <dt>
+        권한, 콘텐츠 URI, URI 경로, 열 이름, MIME 유형 및 
+{@link android.provider.ContactsContract.CommonDataKinds.CommonColumns#TYPE} 값에 대해서는 항상 
+{@link android.provider.ContactsContract} 및 그 하위 클래스에서 정의한 상수를 사용합니다.
+    </dt>
+    <dd>
+        이런 상수를 사용하면 오류를 피하는 데 도움이 됩니다. 이런 상수 중 하나라도 사용하지 않게 되는 경우 컴파일러로부터 
+알림을 받기도 합니다.
+    </dd>
+</dl>
+<h3 id="CustomData">사용자 지정 데이터 행</h3>
+<p>
+    사용자 지정 MIME 유형을 생성하여 사용하면,
+{@link android.provider.ContactsContract.Data} 테이블에 있는 본인의 데이터 행을 삽입, 편집, 삭제 및 검색할 수 있습니다. 개발자의 행은 
+{@link android.provider.ContactsContract.DataColumns}에서 
+정의된 열만 사용하도록 제한되어 있습니다. 다만 나름의 유형별 열 이름을 
+기본 열 이름에 매핑할 수는 있습니다. 기기의 연락처 애플리케이션에서는 
+개발자의 행에 대한 데이터가 표시는 되지만 편집이나 삭제는 할 수 없고, 사용자가 추가 데이터를 
+추가할 수도 없습니다. 사용자가 개발자의 사용자 지정 데이터 행을 수정하도록 허용하려면, 본인의 애플리케이션에 
+편집기 액티비티를 제공해야 합니다.
+</p>
+<p>
+    개발자의 사용자 지정 데이터를 표시하려면, <code>&lt;ContactsAccountType&gt;</code> 요소와 하나 이상의 <code>&lt;ContactsDataKind&gt;</code> 하위 요소를 포함하는 <code>contacts.xml</code> 파일을 
+제공합니다.
+ 이 내용은 
+<a href="#SocialStreamDataKind"><code>&lt;ContactsDataKind&gt; element</code></a> 섹션에 자세히 설명되어 있습니다.
+</p>
+<p>
+    사용자 지정 MIME 유형에 대해 자세히 알아보려면,
+<a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+콘텐츠 제공자 생성</a> 가이드를 참조하십시오.
+</p>
+<h2 id="SyncAdapters">연락처 제공자 동기화 어댑터</h2>
+<p>
+    연락처 제공자는 기기와 온라인 서비스 사이에서 연락처 데이터의 <strong>동기화</strong>를 
+처리한다는 구체적인 목적을 두고 디자인된 것입니다. 이것을 사용하면 사용자가 기존의 
+데이터를 새 기기에 다운로드할 수도 있고, 기존의 데이터를 새 계정에 업로드할 수도 있습니다.
+    동기화를 사용하면 사용자가 추가나 변경의 출처와 관계 없이 최신 데이터를 
+편리하게 사용할 수 있게 보장하기도 합니다. 동기화의 또 다른 장점은 
+기기가 네트워크에 연결되어 있지 않더라도 연락처 데이터를 사용할 수 있다는 것입니다.
+</p>
+<p>
+    다양한 방식으로 동기화를 구현할 수 있지만, Android 시스템은 
+플러그인 동기화 프레임워크를 제공하여 다음과 같은 작업들을 자동화해줍니다.
+    <ul>
+
+    <li>
+        네트워크 가용성을 확인합니다.
+    </li>
+    <li>
+        사용자 기본 설정에 따라 동기화를 예약하고 실행합니다.
+    </li>
+    <li>
+        중단된 동기화를 다시 시작합니다.
+    </li>
+    </ul>
+<p>
+    이 프레임워크를 사용하려면 동기화 어댑터 플러그인은 개발자가 직접 제공해야 합니다. 동기화 어댑터는 
+서비스와 콘텐츠 제공자마다 각기 다르지만, 같은 서비스에 대해 여러 개의 계정 이름을 처리할 수 있습니다. 이 
+프레임워크 또한 같은 서비스와 제공자에 대해 여러 개의 동기화 어댑터를 허용합니다.
+</p>
+<h3 id="SyncClassesFiles">동기화 어댑터 클래스 및 파일</h3>
+<p>
+    동기화 어댑터를 
+{@link android.content.AbstractThreadedSyncAdapter}의 
+하위 클래스로 구현하고 이를Android 애플리케이션의 일부로 설치합니다. 시스템은 애플리케이션 매니페스트의 요소와 매니페스트가 가리키는 
+특수 XML 파일에서 동기화 어댑터에 관한 정보를 얻습니다. XML 파일은 
+온라인 서비스와 콘텐츠 제공자의 권한에 대한 계정 유형을 정의하고, 
+이들이 함께 어댑터를 고유하게 식별합니다. 동기화 어댑터가 활성화되려면 사용자가 
+동기화 어댑터의 계정 유형에 대해 계정을 추가하고 해당 동기화 어댑터와 동기화하는 콘텐츠 제공자의 동기화를 
+활성화해야 합니다.  이 시점에서, 시스템이 어댑터 관리를 시작하고, 
+콘텐츠 제공자와 서버 사이에서 동기화가 필요할 때 이를 호출합니다.
+</p>
+<p class="note">
+    <strong>참고:</strong> 계정 유형을 동기화 어댑터 식별의 일부로 사용하면 
+시스템이 동일한 같은 조직에서 여러 서비스에 액세스하는 동기화 어댑터를 
+감지하고 그룹화할 수 있습니다. 예를 들어, Google 온라인 서비스의 동기화 어댑터는 계정 유형이 모두 
+<code>com.google</code>로 같습니다. 사용자가 기기에 Google 계정을 추가하면, 
+Google 서비스에 설치된 모든 동기화 어댑터가 함께 목록으로 표시됩니다. 목록에 게재된 각 동기화는 
+기기에서 각기 다른 콘텐츠 제공자와 동기화합니다.
+</p>
+<p>
+    대부분의 서비스에서는 사용자가 데이터에 액세스하기 전에 
+ID를 확인해야 하기 때문에 Android에서는 동기화 어댑터 프레임워크와 비슷하면서 종종 이와 함께 쓰이기도 하는 
+인증 프레임워크를 제공합니다. 인증 프레임워크는 
+{@link android.accounts.AbstractAccountAuthenticator}의 하위 클래스인 
+플러그인 인증자를 사용합니다. 인증자는 다음 절차에 따라 
+사용자의 ID를 확인합니다.
+    <ol>
+        <li>
+            사용자 이름, 암호 또는 유사한 정보(사용자의 
+<strong>자격 증명</strong>)를 수집합니다.
+        </li>
+        <li>
+            자격 증명을 서비스로 전송합니다.
+        </li>
+        <li>
+            서비스의 회신을 검토합니다.
+        </li>
+    </ol>
+<p>
+    서비스가 자격 증명을 수락하면 
+인증자가 자격 증명을 저장하여 나중에 사용할 수 있습니다. 플러그인 인증자 프레임워크로 인해, 
+{@link android.accounts.AccountManager}는 Oauth2 authToken과 같이 인증자가 지원하고 노출하기로 선택하는 모든 authToken에 액세스를 
+제공합니다.
+</p>
+<p>
+    인증이 꼭 필요한 것은 아니지만, 대부분의 연락처 서비스는 이를 사용합니다.
+    다만, 인증을 수행하기 위해 꼭 Android 인증 프레임워크를 사용해야 하는 것은 아닙니다.
+</p>
+<h3 id="SyncAdapterImplementing">동기화 어댑터 구현</h3>
+<p>
+    연락처 제공자에 대한 동기화 어댑터를 구현하려면, 
+다음이 들어있는 Android 애플리케이션을 생성하는 것으로 시작합니다.
+</p>
+    <dl>
+        <dt>
+            시스템의 요청에 응답하여 동기화 어댑터에 바인딩하는 {@link android.app.Service} 
+구성 요소.
+        </dt>
+        <dd>
+            시스템이 동기화를 실행하고자 하는 경우, 이는 
+서비스의 {@link android.app.Service#onBind(Intent) onBind()} 메서드를 호출하여
+동기화 어댑터의 {@link android.os.IBinder}를 가져옵니다. 이렇게 하면 시스템이 어댑터의 
+메서드에 대해 프로세스간 호출을 수행할 수 있습니다.
+            <p>
+                <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+샘플 동기화 어댑터</a> 샘플 앱에서 이 서비스의 클래스 이름은
+<code>com.example.android.samplesync.syncadapter.SyncService</code>입니다.
+            </p>
+        </dd>
+        <dt>
+            {@link android.content.AbstractThreadedSyncAdapter}의 
+하위 클래스로 구현된 실제 동기화 어댑터.
+        </dt>
+        <dd>
+            이 클래스는 서버에서 데이터를 다운로드하고, 기기에서 데이터를 업로드하고, 
+충돌을 해결하는 작업을 수행합니다. 어댑터의 주요 작업은 
+{@link android.content.AbstractThreadedSyncAdapter#onPerformSync(
+Account, Bundle, String, ContentProviderClient, SyncResult)
+onPerformSync()} 메서드에서 실행합니다. 이 클래스는 반드시 단일 항목으로 인스턴트화해야 합니다.
+            <p>
+                <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+샘플 동기화 어댑터</a> 샘플 앱에서 동기화 어댑터는 
+<code>com.example.android.samplesync.syncadapter.SyncAdapter</code> 클래스에서 정의됩니다.
+            </p>
+        </dd>
+        <dt>
+            {@link android.app.Application}의 하위 클래스.
+        </dt>
+        <dd>
+            이 클래스는 동기화 어댑터 단일 항목의 팩터리 역할을 합니다. 
+{@link android.app.Application#onCreate()} 메서드는 
+동기화 어댑터를 인스턴트화하고, 단일 항목을 동기화 어댑터 서비스의 
+{@link android.app.Service#onBind(Intent) onBind()} 메서드에 반환할 정적 "getter" 메서드를 제공하는 데 
+사용하십시오.
+        </dd>
+        <dt>
+            <strong>선택 항목:</strong> 사용자 인증에 대한 시스템으로부터의 요청에 응답하는 {@link android.app.Service} 
+구성 요소.
+        </dt>
+        <dd>
+            {@link android.accounts.AccountManager}가 이 서비스를 시작하여 인증 
+절차를 시작합니다. 서비스의 {@link android.app.Service#onCreate()} 메서드가 
+인증자 객체를 인스턴트화합니다. 시스템이 애플리케이션 동기화 어댑터의 사용자 계정을 인증하고자 하는 경우, 
+시스템은 서비스의 
+{@link android.app.Service#onBind(Intent) onBind()} 메서드를 호출하여 
+인증자의 {@link android.os.IBinder}를 가져옵니다. 이렇게 하면 시스템이 인증자의 
+메서드에 대해 프로세스간 호출을 수행할 수 있습니다.
+            <p>
+                <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+샘플 동기화 어댑터</a> 샘플 앱에서 이 서비스의 클래스 이름은
+<code>com.example.android.samplesync.authenticator.AuthenticationService</code>입니다.
+            </p>
+        </dd>
+        <dt>
+            <strong>선택 항목:</strong> 인증에 대한 요청을 처리하는 
+{@link android.accounts.AbstractAccountAuthenticator}의 구체적인 
+하위 클래스.
+        </dt>
+        <dd>
+            이 클래스는 {@link android.accounts.AccountManager}가 
+서버로 사용자 자격 증명 인증을 호출하는 메서드를 제공합니다. 인증 절차의 세부 사항은 
+사용하는 서버 기술에 따라 매우 차이가 있습니다. 인증에 대한 
+자세한 정보는 각자의 서버 소프트웨어에 해당되는 관련 문서를 참조하십시오.
+            <p>
+                <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+샘플 동기화 어댑터</a> 샘플 앱에서 인증자는 
+<code>com.example.android.samplesync.authenticator.Authenticator</code> 클래스에서 정의됩니다.
+            </p>
+        </dd>
+        <dt>
+            동기화 어댑터와 서버의 인증자를 정의하는 XML 파일.
+        </dt>
+        <dd>
+            이전에 설명한 동기화 어댑터와 인증자 서비스 구성 요소는 
+애플리케이션 매니페스트의 
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/service-element.html">service</a>&gt;</code> 요소에서 
+정의합니다. 이런 요소에는 
+시스템에 특정 데이터를 제공하는 
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+하위 요소가 
+들어있습니다.
+            <ul>
+                <li>
+                    동기화 어댑터 서비스에 대한 
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+요소는 
+XML 파일 <code>res/xml/syncadapter.xml</code>을 가리킵니다. 그런가 하면 
+이 파일은 연락처 제공자와 동기화될 웹 서비스에 대한 URI와 웹 서비스에 대한 계정 유형을 
+나타냅니다.
+                </li>
+                <li>
+                    <strong>선택 항목:</strong> 인증자의 
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+요소는 XML 파일 
+<code>res/xml/authenticator.xml</code>을 가리킵니다. 이 파일은 다시 
+이 인증이 지원하는 계정 유형과, 인증 과정 중에 표시되는 UI 리소스를 
+나타냅니다. 이 요소에서 지정한 계정 유형은 반드시 
+동기화 어댑터에 대해 지정된 계정 유형과 
+같아야 합니다.
+                </li>
+            </ul>
+        </dd>
+    </dl>
+<h2 id="SocialStream">소셜 스트림 데이터</h2>
+<p>
+    {@code android.provider.ContactsContract.StreamItems}와 
+{@code android.provider.ContactsContract.StreamItemPhotos} 테이블은 
+소셜 네트워크에서 수신하는 데이터를 관리합니다. 개발자는 본인의 네트워크의 스트림 데이터를 이 테이블에 추가하는 
+동기화 어댑터를 작성할 수도 있고, 이 테이블에서 스트림 데이터를 읽어서 
+본인의 애플리케이션에 표시할 수도 있으며 두 가지를 모두 해도 됩니다. 이 기능을 사용하면 소셜 네트워킹 
+서비스와 애플리케이션을 Android의 소셜 네트워킹 환경에 통합할 수 있습니다.
+</p>
+<h3 id="StreamText">소셜 스트림 텍스트</h3>
+<p>
+    스트림 항목은 항상 원시 연락처와 연관됩니다. 
+{@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}는 
+원시 연락처의 <code>_ID</code> 값과 연관됩니다. 원시 연락처의 계정 유형과 계정 이름도 
+스트림 항목 행에 저장됩니다.
+</p>
+<p>
+    스트림에서 가져온 데이터는 다음 열에 저장합니다.
+</p>
+<dl>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_TYPE}
+    </dt>
+    <dd>
+        <strong>필수입니다.</strong> 이 스트림 항목과 연관된 원시 연락처에 대한 
+사용자 계정입니다. 스트림 항목을 삽입할 때 이 값을 설정하는 것을 잊지 마십시오.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_NAME}
+    </dt>
+    <dd>
+        <strong>필수입니다.</strong> 이 스트림 항목과 연관된 원시 연락처에 대한 
+사용자 계정 이름입니다. 스트림 항목을 삽입할 때 이 값을 설정하는 것을 잊지 마십시오.
+    </dd>
+    <dt>
+        식별자 열
+    </dt>
+    <dd>
+        <strong>필수입니다.</strong> 스트림 항목을 삽입할 때 
+다음 식별자 열을 삽입해야 합니다.
+        <ul>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_ID}: 이 
+스트림 항목과 연관된 연락처의 {@code android.provider.BaseColumns#_ID} 
+값입니다.
+            </li>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_LOOKUP_KEY}: 이 
+스트림 항목과 연관된 연락처의 {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} 
+값입니다.
+            </li>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}: 이 
+스트림 항목과 연관된 원시 연락처의 {@code android.provider.BaseColumns#_ID} 
+값입니다.
+            </li>
+        </ul>
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#COMMENTS}
+    </dt>
+    <dd>
+        선택 사항입니다. 스트림 항목의 시작 부분에 표시할 수 있는 요약 정보를 저장합니다.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#TEXT}
+    </dt>
+    <dd>
+        스트림 항목의 텍스트로, 항목의 소스가 게시한 콘텐츠 또는 
+스트림 항목을 생성하는 작업의 설명 중 하나입니다. 이 열에는 
+{@link android.text.Html#fromHtml(String) fromHtml()}가 렌더링할 수 있는 모든 서식과 포함된 리소스 이미지가 
+들어있을 수 있습니다. 제공자는 긴 콘텐츠를 
+자르거나 생략할 수 있지만, 가능하면 태그를 손상시키는 것은 피하려 듭니다.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP}
+    </dt>
+    <dd>
+        스트림 항목이 삽입되거나 업데이트된 시간이 들어있는 텍스트 문자열로, 형식은 
+epoch 이후 <em>밀리초</em> 형태를 취합니다. 이 열을 관리할 책임은 
+스트림 항목을 삽입 또는 업데이트하는 애플리케이션에 있으며, 이것은 연락처 제공자가 자동으로 
+유지 관리하지 않습니다.
+    </dd>
+</dl>
+<p>
+    스트림 항목의 식별 정보를 표시하려면
+{@code android.provider.ContactsContract.StreamItemsColumns#RES_ICON},
+{@code android.provider.ContactsContract.StreamItemsColumns#RES_LABEL},
+{@code android.provider.ContactsContract.StreamItemsColumns#RES_PACKAGE}를 사용하여 애플리케이션에서
+리소스를 연결하십시오.
+</p>
+<p>
+    {@code android.provider.ContactsContract.StreamItems} 테이블에도 
+동기화 어댑터가 독점적으로 사용하는 {@code android.provider.ContactsContract.StreamItemsColumns#SYNC1}에서
+{@code android.provider.ContactsContract.StreamItemsColumns#SYNC4}까지의 열이 
+들어있습니다.
+</p>
+<h3 id="StreamPhotos">소셜 스트림 사진</h3>
+<p>
+   {@code android.provider.ContactsContract.StreamItemPhotos} 테이블은 스트림 항목과 연관된 
+사진을 저장합니다. 테이블의 
+{@code android.provider.ContactsContract.StreamItemPhotosColumns#STREAM_ITEM_ID} 열은
+{@code android.provider.ContactsContract.StreamItems} 테이블의 {@code android.provider.BaseColumns#_ID} 열에 있는 값과 
+연결됩니다. 사진 참조는 
+다음 열의 테이블에 저장됩니다.
+</p>
+<dl>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotos#PHOTO} 열(BLOB).
+    </dt>
+    <dd>
+        사진의 바이너리 표현으로, 제공자가 저장하고 표시하기 위해 크기를 조정한 것입니다.
+        이 열은 사진을 저장하는 데 사용한 연락처 제공자의 이전 버전과 
+호환됩니다. 그러나 현재 버전에서는 
+이 열을 사진 저장에 사용하면 안 됩니다. 대신, 
+{@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID} 또는 
+{@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI}(
+다음 항목에서 두 가지 모두 설명)를 사용하여 사진을 파일로 저장합니다. 지금 이 열에는 
+사진의 미리 보기가 들어있어 읽기 작업에 사용할 수 있습니다.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID}
+    </dt>
+    <dd>
+        원시 연락처에 대한 사진의 숫자 식별자입니다. 이 값을 
+상수 {@link android.provider.ContactsContract.DisplayPhoto#CONTENT_URI DisplayPhoto.CONTENT_URI}에 추가하여 
+하나의 사진 파일을 가리키는 콘텐츠 URI를 가져온 다음, 
+{@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
+openAssetFileDescriptor()}를 호출하여 사진 파일에 대한 핸들을 가져옵니다.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI}
+    </dt>
+    <dd>
+        이 행이 나타내는 사진에 대한 사진 파일을 직접 가리키는 콘텐츠 URI입니다.
+        이 URI로 {@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
+openAssetFileDescriptor()}를 호출하면 사진 파일에 대한 핸들을 가져올 수 있습니다.
+    </dd>
+</dl>
+<h3 id="SocialStreamTables">소셜 스트림 테이블 사용</h3>
+<p>
+    이들 테이블은 연락처 제공자의 다른 주요 테이블과 똑같이 작동하지만, 다음 예외가 적용됩니다.
+</p>
+    <ul>
+        <li>
+            이 테이블에는 추가 액세스 권한이 필요합니다. 여기서 읽기 작업을 수행하려면 애플리케이션에
+{@code android.Manifest.permission#READ_SOCIAL_STREAM} 권한이 있어야 합니다. 여기서 수정 작업을 수행하려면 
+애플리케이션에
+{@code android.Manifest.permission#WRITE_SOCIAL_STREAM} 권한이 있어야 합니다.
+        </li>
+        <li>
+            {@code android.provider.ContactsContract.StreamItems} 테이블의 경우, 각 원시 연락처에 저장되는 
+행 개수가 제한되어 있습니다. 이 한계에 도달하면, 
+연락처 제공자가 새 스트림 항목 열에 필요한 공간을 만들어야 합니다.
+이때 가장 오래된 {@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP}가 
+있는 행부터 자동으로 삭제하는 방법을 씁니다. 이 한계를 
+가져오려면, 콘텐츠 URI 
+{@code android.provider.ContactsContract.StreamItems#CONTENT_LIMIT_URI}에 쿼리를 발행합니다. 콘텐츠 
+URI를 뺀 나머지 모든 인수는 <code>null</code>로 설정한 채 두면 됩니다. 이 쿼리는 
+행이 하나 들어 있는 커서를 반환하며, 
+{@code android.provider.ContactsContract.StreamItems#MAX_ITEMS} 열 하나가 수반됩니다.
+        </li>
+    </ul>
+
+<p>
+    {@code android.provider.ContactsContract.StreamItems.StreamItemPhotos} 클래스는 
+스트림 항목 하나의 사진 행을 포함하는 {@code android.provider.ContactsContract.StreamItemPhotos}의 
+하위 테이블을 정의합니다.
+</p>
+<h3 id="SocialStreamInteraction">소셜 스트림 상호 작용</h3>
+<p>
+    연락처 제공자가 기기 연락처 애플리케이션과 함께 관리하는 소셜 스트림 데이터는 
+소셜 네트워킹 시스템과 
+기존 연락처를 연결하는 강력한 방법을 제공합니다. 사용할 수 있는 기능은 다음과 같습니다.
+</p>
+    <ul>
+        <li>
+            소셜 네트워킹 서비스를 동기화 어댑터로 연락처 제공자에 동기화함으로써, 
+사용자 연락처의 최근 활동을 검색하고 이를 
+{@code android.provider.ContactsContract.StreamItems} 및 
+{@code android.provider.ContactsContract.StreamItemPhotos} 테이블에 저장해 두어 나중에 사용할 수 있습니다.
+        </li>
+        <li>
+            정기 동기화 외에도 사용자가 볼 연락처를 선택하면 동기화 어댑터를 트리거하여 
+추가 데이터를 검색하게 할 수 있습니다. 이렇게 하면 동기화 어댑터가 
+해당 연락처의 고해상도 사진과 가장 최근 스트림 항목을 검색할 수 있습니다.
+        </li>
+        <li>
+            기기 연락처 애플리케이션과 연락처 제공자에 알림을 등록하면, 
+연락처가 열람될 때 인텐트를 <em>수신</em>하고, 
+그 시점에 개발자의 서비스로부터 연락처의 상태를 업데이트할 수 있습니다. 이 방법을 사용하면 동기화 어댑터로 
+완전 동기화를 수행하는 것보다 빠르고 대역폭도 적게 사용합니다.
+        </li>
+        <li>
+            사용자는 기기의 연락처 애플리케이션을 보면서 여러분의 소셜 네트워킹 서비스에 
+연락처를 추가할 수 있습니다. 이는 "연락처 초대" 기능으로 사용할 수 있습니다. 
+연락처 초대 기능은 기존 연락처를 네트워크에 추가하는 액티비티와 
+기기의 연락처 애플리케이션을 제공하는 XML 파일, 
+애플리케이션의 세부 정보가 포함된 연락처 제공자를 조합하여 활성화합니다.
+        </li>
+    </ul>
+<p>
+    연락처 제공자로 스트림 항목을 정기 동기화하는 방법은 
+다른 동기화와 같습니다. 동기화에 관한 자세한 내용은 
+<a href="#SyncAdapters">연락처 제공자 동기화 어댑터</a> 섹션을 참조하십시오. 알림을 등록하고 연락처를 초대하는 방법은 
+다음 두 섹션에서 다룰 것입니다.
+</p>
+<h4>소셜 네트워킹 보기를 처리하기 위한 등록</h4>
+<p>
+    동기화 어댑터를 등록하여 사용자가 동기화 어댑터에서 관리하는 연락처를 볼 때 알림을 
+수신하는 방법:
+</p>
+<ol>
+    <li>
+        프로젝트의 <code>res/xml/</code> 디렉터리에 <code>contacts.xml</code> 파일을 
+만듭니다. 이미 이 파일이 있다면 이 절차를 건너뛰어도 됩니다.
+    </li>
+    <li>
+        이 파일에서, 
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code> 요소를 추가합니다.
+        이 요소가 이미 존재한다면 이 절차를 건너뛰어도 됩니다.
+    </li>
+    <li>
+        사용자가 기기의 연락처 애플리케이션에서 
+연락처 세부 정보 페이지를 열면 알림을 보내는 서비스를 등록하려면,
+<code>viewContactNotifyService="<em>serviceclass</em>"</code> 속성을 요소에 추가합니다. 
+이 요소에서 <code><em>serviceclass</em></code>는 기기의 연락처 애플리케이션에서 인텐트를 수신하는 서비스의 
+완전히 정규화된 클래스 이름입니다. 알림 서비스의 경우, 
+{@link android.app.IntentService}를 확장하는 클래스를 사용하여 서비스가 인텐트를 수신하도록 
+허용합니다. 수신되는 인텐트의 데이터에는 
+사용자가 클릭한 원시 연락처의 콘텐츠 URI가 들어있습니다. 알림 서비스에서 동기화 어댑터에 바인딩한 다음 동기화 어댑터를 호출하여 
+원시 연락처의 데이터를 업데이트할 수 있습니다.
+    </li>
+</ol>
+<p>
+    사용자가 스트림 항목이나 사진, 또는 그 두 가지를 모두 클릭할 때 호출할 액티비티를 등록하는 방법:
+</p>
+<ol>
+    <li>
+        프로젝트의 <code>res/xml/</code> 디렉터리에 <code>contacts.xml</code> 파일을 
+만듭니다. 이미 이 파일이 있다면 이 절차를 건너뛰어도 됩니다.
+    </li>
+    <li>
+        이 파일에서, 
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code> 요소를 추가합니다.
+        이 요소가 이미 존재한다면 이 절차를 건너뛰어도 됩니다.
+    </li>
+    <li>
+        사용자가 기기의 연락처 애플리케이션에서 스트림 항목을 클릭했을 때 
+처리할 액티비티를 등록하려면, 
+<code>viewStreamItemActivity="<em>activityclass</em>"</code> 속성을 요소에 추가합니다. 
+이 요소에서 <code><em>activityclass</em></code>는 기기의 연락처 애플리케이션에서 인텐트를 수신하는 액티비티의 
+완전히 정규화된 클래스 이름입니다.
+    </li>
+    <li>
+        사용자가 기기의 연락처 애플리케이션에서 스트림 사진을 클릭했을 때 
+처리할 액티비티를 등록하려면,
+<code>viewStreamItemPhotoActivity="<em>activityclass</em>"</code> 속성을 요소에 추가합니다.
+이 요소에서 <code><em>activityclass</em></code>는 기기의 연락처 애플리케이션에서 인텐트를 수신하는 액티비티의 
+완전히 정규화된 클래스 이름입니다.
+    </li>
+</ol>
+<p>
+    <code>&lt;ContactsAccountType&gt;</code> 요소는 
+<a href="#SocialStreamAcctType">&lt;ContactsAccountType&gt; 요소</a> 섹션에 자세히 설명되어 있습니다.
+</p>
+<p>
+    수신되는 인텐트에 사용자가 클릭한 항목 또는 사진의 콘텐츠 URI가 들어있습니다.
+    텍스트 항목과 사진에 각기 별도의 액티비티를 적용하려면, 두 속성을 모두 같은 파일에서 사용하십시오.
+</p>
+<h4>소셜 네트워킹 서비스로 상호 작용</h4>
+<p>
+    사용자는 소셜 네트워킹 사이트에 연락처를 초대할 때 
+기기의 연락처 애플리케이션을 떠나지 않아도 됩니다. 대신, 개발자가 기기의 연락처 앱에 액티비티 중 하나로 연락처를 초대하는 인텐트를 
+보내게 할 수 있습니다. 이렇게 설정하는 방법은 다음과 같습니다.
+</p>
+<ol>
+    <li>
+        프로젝트의 <code>res/xml/</code> 디렉터리에 <code>contacts.xml</code> 파일을 
+만듭니다. 이미 이 파일이 있다면 이 절차를 건너뛰어도 됩니다.
+    </li>
+    <li>
+        이 파일에서, 
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code> 요소를 추가합니다.
+        이 요소가 이미 존재한다면 이 절차를 건너뛰어도 됩니다.
+    </li>
+    <li>
+        다음 속성을 추가합니다.
+        <ul>
+            <li><code>inviteContactActivity="<em>activityclass</em>"</code></li>
+            <li>
+                <code>inviteContactActionLabel="&#64;string/<em>invite_action_label</em>"</code>
+            </li>
+        </ul>
+        <code><em>activityclass</em></code> 값은 인텐트를 수신해야 하는 액티비티의 
+완전히 정규화된 클래스 이름입니다. <code><em>invite_action_label</em></code>
+값은 기기의 연락처 애플리케이션에 있는 <strong>연결 추가</strong> 메뉴에 
+표시되는 텍스트 문자열입니다.
+    </li>
+</ol>
+<p class="note">
+    <strong>참고:</strong> <code>ContactsSource</code>는 
+<code>ContactsAccountType</code>에 대하여 이제 사용하지 않는 태그 이름입니다.
+</p>
+<h3 id="ContactsFile">contacts.xml 참조</h3>
+<p>
+    <code>contacts.xml</code> 파일에는 XML 요소가 들어있어 개발자의 동기화 어댑터와 
+애플리케이션, 연락처 애플리케이션과 연락처 제공자 사이의 상호 작용을 제어합니다. 이런 
+요소는 다음 섹션에 설명되어 있습니다.
+</p>
+<h4 id="SocialStreamAcctType">&lt;ContactsAccountType&gt; 요소</h4>
+<p>
+    <code>&lt;ContactsAccountType&gt;</code>요 요소는 개발자의 애플리케이션과 
+연락처 애플리케이션 사이의 상호 작용을 제어합니다. 이 요소에는 다음 구문이 있습니다.
+</p>
+<pre>
+&lt;ContactsAccountType
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        inviteContactActivity="<em>activity_name</em>"
+        inviteContactActionLabel="<em>invite_command_text</em>"
+        viewContactNotifyService="<em>view_notify_service</em>"
+        viewGroupActivity="<em>group_view_activity</em>"
+        viewGroupActionLabel="<em>group_action_text</em>"
+        viewStreamItemActivity="<em>viewstream_activity_name</em>"
+        viewStreamItemPhotoActivity="<em>viewphotostream_activity_name</em>"&gt;
+</pre>
+<p>
+    <strong>포함 장소:</strong>
+</p>
+<p>
+    <code>res/xml/contacts.xml</code>
+</p>
+<p>
+    <strong>포함 가능 요소:</strong>
+</p>
+<p>
+    <strong><code>&lt;ContactsDataKind&gt;</code></strong>
+</p>
+<p>
+    <strong>설명:</strong>
+</p>
+<p>
+    사용자가 연락처 중 하나를 소셜 네트워크에 초대하고, 
+소셜 네트워킹 스트림이 업데이트되면 사용자에게 알리는 등의 작업을 허용하는 
+Android 구성 요소와 UI 레이블을 선언합니다.
+</p>
+<p>
+    속성 접두사 <code>android:</code>는 
+<code>&lt;ContactsAccountType&gt;</code>의 속성에는 필요하지 않다는 점을 눈여겨보십시오.
+</p>
+<p>
+    <strong>속성:</strong>
+</p>
+<dl>
+    <dt>{@code inviteContactActivity}</dt>
+    <dd>
+        사용자가 기기의 연락처 애플리케이션에서 
+<strong>연결 추가</strong>를 선택했을 때 활성화하고자 하는 
+애플리케이션 액티비티의 완전히 정규화된 클래스 이름입니다.
+    </dd>
+    <dt>{@code inviteContactActionLabel}</dt>
+    <dd>
+        <strong>연결 추가</strong> 메뉴의 
+{@code inviteContactActivity}에서 지정된 액티비티에 대해 표시되는 텍스트 문자열입니다.
+        예를 들어, 문자열 "제 네트워크를 팔로우하세요"를 사용할 수 있습니다. 이 레이블에 대한 문자열 리소스 
+식별자를 사용할 수 있습니다.
+    </dd>
+    <dt>{@code viewContactNotifyService}</dt>
+    <dd>
+        사용자가 연락처를 볼 때 알림을 수신해야 하는 
+애플리케이션 서비스의 완전히 정규화된 클래스 이름입니다. 이 알림은 
+기기의 연락처 애플리케이션이 전송합니다. 이것을 사용하면 개발자의 애플리케이션이 데이터 집약적인 작업을 필요할 때까지 
+연기할 수 있습니다. 예를 들어, 개발자의 애플리케이션은 
+연락처의 고해상도 사진과 가장 최근 소셜 스트림 항목을 읽어서 표시함으로써 
+이 알림에 응답할 수 있습니다. 이 기능은 
+<a href="#SocialStreamInteraction">소셜 스트림 상호 작용</a>에 상세히 설명되어 있습니다. 알림 서비스의 예시를 
+보려면 <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>
+ 샘플 앱에 있는 <code>NotifierService.java</code> 파일을 
+확인합니다.
+    </dd>
+    <dt>{@code viewGroupActivity}</dt>
+    <dd>
+        그룹 정보를 표시할 수 있는 애플리케이션 액티비티의 
+완전히 정규화된 클래스 이름입니다. 사용자가 기기의 연락처 애플리케이션에서 그룹 레이블을 클릭하면, 
+이 액티비티의 UI가 표시됩니다.
+    </dd>
+    <dt>{@code viewGroupActionLabel}</dt>
+    <dd>
+        사용자가 개발자의 애플리케이션에서 그룹을 살펴볼 수 있도록 해주는 UI 제어에 대해 
+연락처 애플리케이션이 표시하는 레이블입니다.
+        <p>
+            예를 들어, 기기에 Google+ 애플리케이션을 설치하고 
+Google+를 연락처 애플리케이션과 동기화하면, Google+ 서클이 
+연락처 애플리케이션의 <strong>그룹</strong> 탭에 표시되는 것을 볼 수 있습니다. Google+ 서클을 
+클릭하면 해당 서클에서 "그룹"으로 표시된 사람들을 볼 수 있습니다. 이 표시의 맨 위에 
+Google+ 아이콘이 표시되며, 이것을 클릭하면 제어가 
+Google+ 앱으로 전환됩니다. 연락처 애플리케이션은 이 작업을 
+{@code viewGroupActivity}로 수행하며, Google+ 아이콘을 
+{@code viewGroupActionLabel}의 값으로 사용합니다.
+        </p>
+        <p>
+            이 속성에서는 문자열 리소스 식별자가 허용됩니다.
+        </p>
+    </dd>
+    <dt>{@code viewStreamItemActivity}</dt>
+    <dd>
+        사용자가 원시 연락처의 스트림 항목을 클릭할 때 기기의 연락처 애플리케이션이 시작하는 
+애플리케이션 액티비티의 완전히 정규화된 클래스 이름입니다.
+    </dd>
+    <dt>{@code viewStreamItemPhotoActivity}</dt>
+    <dd>
+        사용자가 원시 연락처 스트림 항목의 사진을 클릭할 때 
+기기의 연락처 애플리케이션이 시작하는 애플리케이션 액티비티의 
+완전히 정규화된 클래스 이름입니다.
+    </dd>
+</dl>
+<h4 id="SocialStreamDataKind">&lt;ContactsDataKind&gt; 요소</h4>
+<p>
+    <code>&lt;ContactsDataKind&gt;</code> 요소는 연락처 애플리케이션 UI에서 애플리케이션의 사용자 지정 데이터 행 표시를 
+제어합니다. 이 요소에는 다음 구문이 있습니다.
+</p>
+<pre>
+&lt;ContactsDataKind
+        android:mimeType="<em>MIMEtype</em>"
+        android:icon="<em>icon_resources</em>"
+        android:summaryColumn="<em>column_name</em>"
+        android:detailColumn="<em>column_name</em>"&gt;
+</pre>
+<p>
+    <strong>포함 장소:</strong>
+</p>
+<code>&lt;ContactsAccountType&gt;</code>
+<p>
+    <strong>설명:</strong>
+</p>
+<p>
+    이 요소를 사용하여 연락처 애플리케이션이 사용자 지정 데이터 행의 콘텐츠를 
+원시 연락처 세부 정보의 일부로 표시하게 합니다. <code>&lt;ContactsAccountType&gt;</code>의 각 <code>&lt;ContactsDataKind&gt;</code> 하위 요소는 
+동기화 어댑터가 {@link android.provider.ContactsContract.Data}에 추가하는 
+사용자 지정 데이터 행의 유형을 나타냅니다. 개발자가 사용하는 사용자 지정 MIME 유형 하나마다 
+<code>&lt;ContactsDataKind&gt;</code> 요소를 하나씩 추가합니다. 데이터를 
+표시하는 것을 원치 않는 사용자 지정 데이터 행이 있으면, 이 요소를 추가하지 않아도 됩니다.
+</p>
+<p>
+    <strong>속성:</strong>
+</p>
+<dl>
+    <dt>{@code android:mimeType}</dt>
+    <dd>
+        {@link android.provider.ContactsContract.Data} 테이블에서 
+사용자 지정 데이터 행 유형 중 하나로 지정한 사용자 지정 MIME 유형입니다. 예를 들어, 
+<code>vnd.android.cursor.item/vnd.example.locationstatus</code> 값은 연락처의 마지막으로 알려진 위치를 기록하는 
+데이터 행에 대한 사용자 지정 MIME 유형이 될 수 있습니다.
+    </dd>
+    <dt>{@code android:icon}</dt>
+    <dd>
+        연락처 애플리케이션이 개발자의 데이터 옆에 표시하는 
+Android <a href="{@docRoot}guide/topics/resources/drawable-resource.html">드로어블 리소스</a>
+입니다. 이 리소스를 사용하여 사용자에게 
+데이터 출처가 개발자의 서비스임을 나타내는 것입니다.
+    </dd>
+    <dt>{@code android:summaryColumn}</dt>
+    <dd>
+        데이터 행에서 검색한 두 개 값 중에서 첫 번째 값에 대한 열 이름입니다. 이 값은 
+이 데이터 행에 대한 항목의 첫 번째 줄로 표시됩니다. 첫 번째 줄은 
+데이터 요약으로 사용되는 것이 본 목적이지만, 이것은 선택 사항입니다. 
+<a href="#detailColumn">android:detailColumn</a>도 참조하십시오.
+    </dd>
+    <dt>{@code android:detailColumn}</dt>
+    <dd>
+        데이터 행에서 검색한 두 개 값 중에서 두 번째 값에 대한 열 이름입니다. 이 값은
+이 데이터 행에 대한 항목의 두 번째 줄로 표시됩니다. 
+{@code android:summaryColumn}도 참조하십시오.
+    </dd>
+</dl>
+<h2 id="AdditionalFeatures">추가 연락처 제공자 기능</h2>
+<p>
+    이전 섹션에서 설명한 주요 기능 외에도 연락처 제공자는 연락처 데이터를 다루는 데 
+유용한 기능을 많이 제공합니다. 예를 들면 다음과 같습니다.
+</p>
+    <ul>
+       <li>연락처 그룹</li>
+       <li>사진 기능</li>
+    </ul>
+<h3 id="Groups">연락처 그룹</h3>
+<p>
+    연락처 제공자는 관련된 연락처 컬렉션에 
+<strong>그룹</strong> 데이터로 레이블을 붙이기로 선택할 수 있습니다. 사용자 계정과 연관된 서버에서 
+그룹을 관리하고자 하는 경우, 계정의 계정 유형에 대한 동기화 어댑터가 
+연락처 제공자와 서버 사이에서 그룹 데이터를 전송해야 합니다. 사용자가 해당 서버에 새 연락처를 추가하고 
+이 연락처를 새 그룹에 넣으면, 동기화 어댑터가 해당 새 그룹을
+{@link android.provider.ContactsContract.Groups} 테이블에 추가해야 합니다. 원시 연락처가 속한 그룹(또는 여러 그룹)은 
+{@link android.provider.ContactsContract.Data} 테이블에 저장되며, 이때 
+{@link android.provider.ContactsContract.CommonDataKinds.GroupMembership} MIME 유형을 사용합니다.
+</p>
+<p>
+    개발자가 서버에서 가져온 원시 연락처 데이터를 연락처 제공자에 추가할 
+동기화 어댑터를 디자인하는 중이고 그룹은 사용하지 않는다면, 
+제공자 쪽에 데이터를 표시하라고 지시해야 합니다. 사용자가 기기에 계정을 추가했을 때 실행되는 코드에서 
+연락처 제공자가 계정에 추가하는{@link android.provider.ContactsContract.Settings} 행을 
+업데이트하십시오. 이 행에서 
+{@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE
+Settings.UNGROUPED_VISIBLE} 열의 값을 1로 설정합니다. 이렇게 하면 연락처 제공자가 
+개발자의 연락처 데이터를 항상 표시하게 되고, 이는 그룹을 사용하지 않더라도 관계 없습니다.
+</p>
+<h3 id="Photos">연락처 사진</h3>
+<p>
+    {@link android.provider.ContactsContract.Data} 테이블은
+{@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
+Photo.CONTENT_ITEM_TYPE} MIME 유형으로 사진을 행에 저장합니다. 이 행의 
+{@link android.provider.ContactsContract.RawContactsColumns#CONTACT_ID} 열은 
+행이 속한 원시 연락처의 {@code android.provider.BaseColumns#_ID} 열과 연결됩니다.
+    클래스 {@link android.provider.ContactsContract.Contacts.Photo}는 
+연락처 기본 사진의 사진 정보가 들어있는 {@link android.provider.ContactsContract.Contacts} 하위 테이블을 정의합니다. 
+연락처의 기본 사진은 연락처 기본 원시 연락처의 기본 사진입니다. 마찬가지로, 
+{@link android.provider.ContactsContract.RawContacts.DisplayPhoto} 클래스는
+원시 연락처의 기본 사진의 사진 정보가 들어있는 {@link android.provider.ContactsContract.RawContacts} 하위 테이블을
+정의합니다.
+</p>
+<p>
+    {@link android.provider.ContactsContract.Contacts.Photo} 및 
+{@link android.provider.ContactsContract.RawContacts.DisplayPhoto}에 대한 참조 문서에 
+사진 정보를 검색하는 예시가 들어있습니다. 원시 연락처에 대한 기본 미리 보기를 검색하는 데 쓰이는 
+편의 클래스는 없습니다. 하지만 
+{@link android.provider.ContactsContract.Data} 테이블에 쿼리를 보내 원시 연락처의 
+{@code android.provider.BaseColumns#_ID}, 
+    {@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
+    Photo.CONTENT_ITEM_TYPE}, 및 {@link android.provider.ContactsContract.Data#IS_PRIMARY}
+ 열을 선택하면 해당 원시 연락처의 기본 사진 행을 찾을 수 있습니다.
+</p>
+<p>
+    한 사람의 소셜 스트림 데이터에도 사진이 포함되어 있을 수 있습니다. 이런 사진은 
+{@code android.provider.ContactsContract.StreamItemPhotos} 테이블에 저장되며, 이 내용은 
+<a href="#StreamPhotos">소셜 스트림 사진</a>에 더 자세하게 설명되어 있습니다.
+</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/providers/content-provider-basics.jd b/docs/html-intl/intl/ko/guide/topics/providers/content-provider-basics.jd
new file mode 100644
index 0000000..953f92a
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/providers/content-provider-basics.jd
@@ -0,0 +1,1196 @@
+page.title=콘텐츠 제공자 기본 정보
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<!-- In this document -->
+<h2>이 문서의 내용</h2>
+<ol>
+    <li>
+        <a href="#Basics">개요</a>
+        <ol>
+            <li>
+                <a href="#ClientProvider">제공자 액세스</a>
+            </li>
+            <li>
+                <a href="#ContentURIs">콘텐츠 URI</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#SimpleQuery">제공자에서 데이터 검색</a>
+        <ol>
+            <li>
+                <a href="#RequestPermissions">읽기 액세스 권한 요청</a>
+            </li>
+            <li>
+                <a href="#Query">쿼리 구성</a>
+            </li>
+            <li>
+                <a href="#DisplayResults">쿼리 결과 표시</a>
+            </li>
+            <li>
+                <a href="#GettingResults">쿼리 결과에서 데이터 가져오기</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#Permissions">콘텐츠 제공자 권한</a>
+    </li>
+    <li>
+        <a href="#Modifications">데이터 삽입, 업데이트 및 삭제</a>
+        <ol>
+            <li>
+                <a href="#Inserting">데이터 삽입</a>
+            </li>
+            <li>
+                <a href="#Updating">데이터 업데이트</a>
+            </li>
+            <li>
+                <a href="#Deleting">데이터 삭제</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#DataTypes">제공자 데이터 유형</a>
+    </li>
+    <li>
+        <a href="#AltForms">제공자 액세스의 대체 형식</a>
+        <ol>
+            <li>
+                <a href="#Batch">일괄 액세스</a>
+            </li>
+            <li>
+                <a href="#Intents">인텐트를 통한 데이터 액세스</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#ContractClasses">계약 클래스</a>
+    </li>
+    <li>
+        <a href="#MIMETypeReference">MIME 유형 참조</a>
+    </li>
+</ol>
+
+    <!-- Key Classes -->
+<h2>Key 클래스</h2>
+    <ol>
+        <li>
+            {@link android.content.ContentProvider}
+        </li>
+        <li>
+            {@link android.content.ContentResolver}
+        </li>
+        <li>
+            {@link android.database.Cursor}
+        </li>
+        <li>
+            {@link android.net.Uri}
+        </li>
+    </ol>
+
+    <!-- Related Samples -->
+<h2>관련 샘플</h2>
+    <ol>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html">
+        커서(피플)</a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html">
+        커서(전화)</a>
+        </li>
+    </ol>
+
+    <!-- See also -->
+<h2>참고 항목</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+        콘텐츠 제공자 생성</a>
+        </li>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+        캘린더 제공자</a>
+        </li>
+    </ol>
+</div>
+</div>
+
+    <!-- Intro paragraphs -->
+<p>
+    콘텐츠 제공자는 데이터의 중앙 리포지토리로의 액세스를 관리합니다. 
+제공자는 Android 애플리케이션의 일부이며, 이는 종종 나름의 UI를 제공하여 데이터에 작용하도록 합니다.
+ 그러나 콘텐츠 제공자는 기본적으로 다른 애플리케이션이 사용하도록 만들어진 것입니다. 
+이들은 제공자 클라이언트 개체를 사용하여 제공자에 액세스합니다. 
+제공자와 제공자 클라이언트가 결합되면 데이터에 하나의 일관적인 표준 인터페이스를 제공하여 
+이것이 프로세스간 통신과 보안 데이터 액세스도 처리합니다.
+</p>
+<p>
+    이 주제에서는 다음의 기본 정보를 설명합니다.
+</p>
+    <ul>
+        <li>콘텐츠 제공자의 작동 원리</li>
+        <li>콘텐츠 제공자에서 데이터를 검색할 때 사용하는 API</li>
+        <li>콘텐츠 제공자 내의 데이터를 삽입, 업데이트 및 삭제하는 데 사용하는 API</li>
+        <li>제공자를 다루는 데 도움이 되는 기타 API 기능</li>
+    </ul>
+
+    <!-- Basics -->
+<h2 id="Basics">개요</h2>
+<p>
+    콘텐츠 제공자는 외부 애플리케이션에 데이터를 표시하며, 이때 데이터는 
+관계형 데이터베이스에서 찾을 수 있는 테이블과 유사한 하나 이상의 테이블로서 표시됩니다. 
+한 행은 제공자가 수집하는 어떤 유형의 데이터 인스턴스를 나타내며, 
+행 안의 각 열은 인스턴스에 대해 수집된 개별적인 데이터를 나타냅니다.
+</p>
+<p>
+    예를 들어 Android 플랫폼 안에 내장된 여러 제공자 중에 사용자 사전이라는 것이 있습니다. 
+이것은 사용자가 보관하고 싶어하는 비표준 단어의 철자를 저장합니다. 표 1은 이 제공자의 테이블에서 
+데이터가 어떤 형태를 띨 수 있는지를 나타낸 것입니다.
+</p>
+<p class="table-caption">
+    <strong>표 1:</strong> 샘플 사용자 사전 테이블입니다.
+</p>
+<table id="table1" style="width: 50%;">
+    <tr>
+        <th style="width:20%" align="center" scope="col">단어</th>
+        <th style="width:20%" align="center" scope="col">앱 ID</th>
+        <th style="width:20%" align="center" scope="col">빈도</th>
+        <th style="width:20%" align="center" scope="col">로케일</th>
+        <th style="width:20%" align="center" scope="col">_ID</th>
+    </tr>
+    <tr>
+        <td align="center" scope="row">mapreduce</td>
+        <td align="center">user1</td>
+        <td align="center">100</td>
+        <td align="center">en_US</td>
+        <td align="center">1</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">precompiler</td>
+        <td align="center">user14</td>
+        <td align="center">200</td>
+        <td align="center">fr_FR</td>
+        <td align="center">2</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">applet</td>
+        <td align="center">user2</td>
+        <td align="center">225</td>
+        <td align="center">fr_CA</td>
+        <td align="center">3</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">const</td>
+        <td align="center">user1</td>
+        <td align="center">255</td>
+        <td align="center">pt_BR</td>
+        <td align="center">4</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">int</td>
+        <td align="center">user5</td>
+        <td align="center">100</td>
+        <td align="center">en_UK</td>
+        <td align="center">5</td>
+    </tr>
+</table>
+<p>
+    표 1에서, 각 행은 일반적인 사전에 나오지 않는 단어의 인스턴스를 
+나타냅니다. 각 열은 해당 단어에 대한 일부 데이터를 나타냅니다. 예를 들어 
+단어가 처음 나온 로케일 등을 들 수 있습니다. 열 헤더는 제공자에 저장된
+열 이름입니다. 행의 로케일을 참조하려면 그 행의 <code>locale</code> 열을 참조합니다. 
+이 제공자의 경우, <code>_ID</code> 열은 제공자가 자동으로 유지하는 "기본 키" 열
+역할을 합니다.
+</p>
+<p class="note">
+    <strong>참고:</strong> 제공자에 기본 키가 꼭 있어야 하는 것은 아니고, 
+기본 키가 있는 경우 <code>_ID</code>를 열 이름으로 사용하지 않아도 됩니다. 그러나 제공자의 데이터를 
+{@link android.widget.ListView}에 바인딩하려면 
+열 이름 중 하나는<code>_ID</code>여야 합니다. 이 요구 사항은
+<a href="#DisplayResults">쿼리 결과 표시</a> 섹션에 자세히 설명되어 있습니다.
+</p>
+<h3 id="ClientProvider">제공자 액세스</h3>
+<p>
+    애플리케이션은 콘텐츠 제공자로부터의 데이터에 
+{@link android.content.ContentResolver} 클라이언트 개체로 액세스합니다. 
+이 개체에는 제공자 개체 내의 같은 이름을 가진 메서드를 호출하는 메서드가 있습니다. 
+이는 {@link android.content.ContentProvider}의 구체적인 하위 클래스 중 하나의 인스턴스입니다. 
+{@link android.content.ContentResolver} 메서드는 
+영구적 저장소의 기본적인 "CRUD"(생성, 검색, 업데이트 및 삭제) 기능을 제공합니다.
+</p>
+<p>
+    클라이언트 애플리케이션의 프로세스 내에 있는 {@link android.content.ContentResolver} 개체와
+ 제공자를 소유하는 애플리케이션 내의 {@link android.content.ContentProvider} 개체가 
+자동으로 프로세스간 통신을 처리합니다.
+{@link android.content.ContentProvider} 또한 
+콘텐츠 제공자의 데이터 리포지토리와 외부에 테이블로 표시되는 데이터 모습 사이에서 추상화 계층 역할을 합니다.
+</p>
+<p class="note">
+    <strong>참고:</strong> 제공자에 액세스하려면 보통은 애플리케이션이 
+제공자의 매니페스트 파일에 있는 특정 권한을 요청해야 합니다. 이것은 
+<a href="#Permissions">콘텐츠 제공자 권한</a> 섹션에 더 자세히 설명되어 있습니다.
+</p>
+<p>
+    예를 들어 사용자 사전 제공자로부터 단어와 그에 해당하는 로케일 목록을 가져오려면,
+{@link android.content.ContentResolver#query ContentResolver.query()}를 호출하면 됩니다.
+    {@link android.content.ContentResolver#query query()} 메서드는 사용자 사전 제공자가 정의한
+{@link android.content.ContentProvider#query ContentProvider.query()} 메서드를
+호출합니다. 다음 몇 줄의 코드는 
+{@link android.content.ContentResolver#query ContentResolver.query()} 호출을 나타낸 것입니다.
+<p>
+<pre>
+// Queries the user dictionary and returns results
+mCursor = getContentResolver().query(
+    UserDictionary.Words.CONTENT_URI,   // The content URI of the words table
+    mProjection,                        // The columns to return for each row
+    mSelectionClause                    // Selection criteria
+    mSelectionArgs,                     // Selection criteria
+    mSortOrder);                        // The sort order for the returned rows
+</pre>
+<p>
+    표 2는
+{@link android.content.ContentResolver#query
+query(Uri,projection,selection,selectionArgs,sortOrder)}에 대한 인수가 SQL SELECT 문과 일치하는 방식을 나타낸 것입니다.
+</p>
+<p class="table-caption">
+    <strong>표 2:</strong> Query()를 SQL 쿼리에 비교한 것입니다.
+</p>
+<table id="table2" style="width: 75%;">
+    <tr>
+        <th style="width:25%" align="center" scope="col">query() 인수</th>
+        <th style="width:25%" align="center" scope="col">SELECT 키워드/매개변수</th>
+        <th style="width:50%" align="center" scope="col">참고</th>
+    </tr>
+    <tr>
+        <td align="center"><code>Uri</code></td>
+        <td align="center"><code>FROM <em>table_name</em></code></td>
+        <td><code>Uri</code>가 <em>table_name</em>이라 불리는 제공자에 있는 테이블에 매핑됩니다.</td>
+    </tr>
+    <tr>
+        <td align="center"><code>projection</code></td>
+        <td align="center"><code><em>col,col,col,...</em></code></td>
+        <td>
+            <code>projection</code>은 검색된 각 행에 포함되어야 하는 일련의 열입니다.
+
+        </td>
+    </tr>
+    <tr>
+        <td align="center"><code>selection</code></td>
+        <td align="center"><code>WHERE <em>col</em> = <em>value</em></code></td>
+        <td><code>selection</code>은 행을 선택하는 기준을 나타냅니다.</td>
+    </tr>
+    <tr>
+        <td align="center"><code>selectionArgs</code></td>
+        <td align="center">
+            (정확한 등가는 없습니다. 선택 인수는 선택 절에 있는 <code>?</code>
+ 자리 표시자를 대체합니다.)
+        </td>
+    </tr>
+    <tr>
+        <td align="center"><code>sortOrder</code></td>
+        <td align="center"><code>ORDER BY <em>col,col,...</em></code></td>
+        <td>
+            <code>sortOrder</code>는 반환된 
+{@link android.database.Cursor} 내에 행이 나타나는 순서를 지정합니다.
+        </td>
+    </tr>
+</table>
+<h3 id="ContentURIs">콘텐츠 URI</h3>
+<p>
+    <strong>콘텐츠 URI</strong>는 제공자에서 데이터를 식별하는 URI입니다. 
+콘텐츠 URI에는 전체 제공자의 상징적인 이름(제공자의 <strong>권한</strong>)과
+테이블을 가리키는 이름(<strong>경로</strong>)이 포함됩니다. 
+제공자 내의 테이블에 액세스하기 위해 클라이언트 메서드를 호출하는 경우,
+그 테이블에 대한 콘텐츠 URI는 인수 중 하나입니다.
+</p>
+<p>
+    앞선 몇 줄의 코드에서 상수
+{@link android.provider.UserDictionary.Words#CONTENT_URI}에 
+사용자 사전의 "단어" 테이블의 콘텐츠 URI가 들어있습니다. {@link android.content.ContentResolver}
+ 개체가 이 URI의 권한을 구문 분석한 다음, 이를 이용해 제공자를 "확인"합니다. 즉 이 권한을 알려진 제공자로 이루어진 시스템 테이블과 비교하는 것입니다.
+ 
+그러면 {@link android.content.ContentResolver}가 쿼리 인수를 
+올바른 제공자에게 발송할 수 있습니다.
+</p>
+<p>
+    {@link android.content.ContentProvider}는 콘텐츠 URI의 경로 부분을 사용하여
+액세스할 테이블을 선택합니다. 제공자에는 보통 제공자가 노출하는 테이블마다 <strong>경로</strong>가 있습니다.
+</p>
+<p>
+    앞선 몇 줄의 코드에서 "단어" 테이블에 대한 전체 URI는 다음과 같습니다.
+</p>
+<pre>
+content://user_dictionary/words
+</pre>
+<p>
+    여기에서 <code>user_dictionary</code> 문자열은 제공자의 권한이고
+<code>words</code> 문자열은 테이블의 경로입니다. 문자열
+<code>content://</code>(<strong>구성표</strong>)는 언제나 표시되며,
+이것을 콘텐츠 URI로 식별합니다.
+</p>
+<p>
+    대다수의 제공자에서는 URI의 맨 끝에 ID 값을 추가하면 
+테이블 내 하나의 행에 액세스할 수 있게 해줍니다. 예를 들어 <code>_ID</code>가 
+사용자 사전의 <code>4</code>인 행을 검색하려면, 이 콘텐츠 URI를 사용하면 됩니다.
+</p>
+<pre>
+Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);
+</pre>
+<p>
+    일련의 행을 검색한 다음 그 중 하나를 업데이트하거나 삭제하고자 하는 경우 종종 ID 값을 
+이용하곤 합니다.
+</p>
+<p class="note">
+    <strong>참고:</strong> {@link android.net.Uri}와 
+{@link android.net.Uri.Builder} 클래스에는 문자열에서 잘 구성된(Well-Formed) URI 개체를 구성하기 위한 편의 메서드가 들어 있습니다. 
+{@link android.content.ContentUris}에는 URI에 ID 값을 추가하기 위한 편의 메서드가 들어 있습니다.
+이전 조각은 {@link android.content.ContentUris#withAppendedId
+withAppendedId()}를 사용하여 UserDictionary 콘텐츠 URI에 ID를 추가합니다.
+</p>
+
+
+    <!-- Retrieving Data from the Provider -->
+<h2 id="SimpleQuery">제공자에서 데이터 검색</h2>
+<p>
+    이 섹션은 사용자 사전 제공자를 예시로 사용하여 제공자에서 데이터를 검색하는
+방법을 설명합니다.
+</p>
+<p class="note">
+    명확히 나타내기 위해 이 섹션의 코드 조각은 
+{@link android.content.ContentResolver#query ContentResolver.query()}를 "UI 스레드"에서 호출합니다. 
+그러나 실제 코드의 경우 쿼리는 별도의 스레드에서 비동기식으로 수행해야 합니다. 이를 위한 한 가지 방식으로
+{@link android.content.CursorLoader} 
+클래스를 쓰는 것을 들 수 있습니다. 이 내용은 <a href="{@docRoot}guide/components/loaders.html">
+로더</a> 가이드에 더 자세히 설명되어 있습니다. 또한, 이 코드 줄은 조각일 뿐이며 애플리케이션을 전체적으로 표시한 것이 아닙니다.
+
+</p>
+<p>
+    제공자에서 데이터를 검색하려면 다음과 같은 기본 단계를 따르십시오.
+</p>
+<ol>
+   <li>
+        제공자에 대한 읽기 액세스 권한을 요청합니다.
+   </li>
+   <li>
+        제공자에게 쿼리를 보내는 코드를 정의합니다.
+   </li>
+</ol>
+<h3 id="RequestPermissions">읽기 액세스 권한 요청</h3>
+<p>
+    제공자에서 데이터를 검색하려면 애플리케이션에 해당 제공자에 대한 "읽기 액세스 권한"이 필요합니다.
+ 런타임에는 이 권한을 요청할 수 없습니다. 대신 이 권한이 필요하다는 것을 매니페스트에 나타내야 합니다. 이때, 
+
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+ 요소와 제공자가 정의한 정확한 권한 이름을 사용하면 됩니다.
+ 매니페스트에서 이 요소를 지정하는 것은 사실상 애플리케이션을 위해 이 권한을 "요청"하는 것과 
+같습니다. 사용자가 애플리케이션을 설치할 때면, 이 요청을 암시적으로 허용하게 됩니다.
+
+</p>
+<p>
+    사용 중인 제공자에 대한 읽기 액세스 권한의 정확한 이름과 해당 제공자가 사용하는 
+다른 액세스 권한의 이름을 찾아보려면 제공자의 문서를 살펴보십시오.
+
+</p>
+<p>
+    제공자에 액세스하는 데 있어 권한이 어떤 역할을 하는지는 
+<a href="#Permissions">콘텐츠 제공자 권한</a> 섹션에 더 자세하게 설명되어 있습니다.
+</p>
+<p>
+    사용자 사전 제공자는 
+<code>android.permission.READ_USER_DICTIONARY</code> 권한을 자신의 매니페스트 파일에 정의합니다. 따라서 해당 제공자에서 
+읽기 작업을 하고자 하는 애플리케이션은 반드시 이 권한을 요청해야 합니다.
+</p>
+<!-- Constructing the query -->
+<h3 id="Query">쿼리 구성</h3>
+<p>
+    제공자에서 데이터를 검색할 때 다음 단계는 쿼리를 구성하는 것입니다. 다음의 첫 번째 조각은 
+사용자 사전 제공자에 액세스하는 데 필요한 몇 가지 변수를 정의한 것입니다.
+</p>
+<pre class="prettyprint">
+
+// A "projection" defines the columns that will be returned for each row
+String[] mProjection =
+{
+    UserDictionary.Words._ID,    // Contract class constant for the _ID column name
+    UserDictionary.Words.WORD,   // Contract class constant for the word column name
+    UserDictionary.Words.LOCALE  // Contract class constant for the locale column name
+};
+
+// Defines a string to contain the selection clause
+String mSelectionClause = null;
+
+// Initializes an array to contain selection arguments
+String[] mSelectionArgs = {""};
+
+</pre>
+<p>
+    다음 조각은 사용자 사전 제공자를 예시로 사용하여 
+{@link android.content.ContentResolver#query ContentResolver.query()}를
+ 사용하는 방법을 나타낸 것입니다. 제공자 클라이언트 쿼리는 SQL 쿼리와 비슷하며, 
+반환할 열 집합과 선택 기준 집합, 그리고 정렬 순서가 이 안에 들어 있습니다.
+</p>
+<p>
+    쿼리가 반환해야 할 열 집합을 <strong>프로젝션</strong>
+(변수<code>mProjection</code>)이라고 합니다.
+</p>
+<p>
+    검색할 행을 나타내는 식은 선택 절과 선택 인수로 분할되어 있습니다.
+ 선택 절은 논리와 부울 식, 열 이름과 값
+(변수 <code>mSelectionClause</code>)을 조합한 것입니다. 
+값 대신 대체 가능한 매개변수 <code>?</code>를 지정하면, 
+쿼리 메서드가 그 값을 선택 인수 배열에서 검색합니다(변수 <code>mSelectionArgs</code>).
+</p>
+<p>
+    다음 조각의 경우, 사용자가 단어를 입력하지 않으면 선택 절이 
+<code>null</code>로 설정되고, 쿼리는 제공자 안의 모든 단어를 반환합니다. 
+사용자가 단어를 입력하면 선택 절은 <code>UserDictionary.Words.WORD + " = ?"</code>로 설정되며
+선택 인수의 첫 번째 요소가 사용자가 입력한 단어로 설정됩니다.
+</p>
+<pre class="prettyprint">
+/*
+ * This defines a one-element String array to contain the selection argument.
+ */
+String[] mSelectionArgs = {""};
+
+// Gets a word from the UI
+mSearchString = mSearchWord.getText().toString();
+
+// Remember to insert code here to check for invalid or malicious input.
+
+// If the word is the empty string, gets everything
+if (TextUtils.isEmpty(mSearchString)) {
+    // Setting the selection clause to null will return all words
+    mSelectionClause = null;
+    mSelectionArgs[0] = "";
+
+} else {
+    // Constructs a selection clause that matches the word that the user entered.
+    mSelectionClause = UserDictionary.Words.WORD + " = ?";
+
+    // Moves the user's input string to the selection arguments.
+    mSelectionArgs[0] = mSearchString;
+
+}
+
+// Does a query against the table and returns a Cursor object
+mCursor = getContentResolver().query(
+    UserDictionary.Words.CONTENT_URI,  // The content URI of the words table
+    mProjection,                       // The columns to return for each row
+    mSelectionClause                   // Either null, or the word the user entered
+    mSelectionArgs,                    // Either empty, or the string the user entered
+    mSortOrder);                       // The sort order for the returned rows
+
+// Some providers return null if an error occurs, others throw an exception
+if (null == mCursor) {
+    /*
+     * Insert code here to handle the error. Be sure not to use the cursor! You may want to
+     * call android.util.Log.e() to log this error.
+     *
+     */
+// If the Cursor is empty, the provider found no matches
+} else if (mCursor.getCount() &lt; 1) {
+
+    /*
+     * Insert code here to notify the user that the search was unsuccessful. This isn't necessarily
+     * an error. You may want to offer the user the option to insert a new row, or re-type the
+     * search term.
+     */
+
+} else {
+    // Insert code here to do something with the results
+
+}
+</pre>
+<p>
+    이 쿼리는 SQL 문에 대한 아날로그입니다.
+</p>
+<pre>
+SELECT _ID, word, locale FROM words WHERE word = &lt;userinput&gt; ORDER BY word ASC;
+</pre>
+<p>
+    이 SQL 문에서는 계약 클래스 상수 대신 실제 열 이름을 사용하였습니다.
+</p>
+<h4 id="Injection">악의적인 입력에 대한 보호</h4>
+<p>
+    콘텐츠 제공자가 관리하는 데이터가 SQL 데이터베이스에 있는 경우, 
+원시 SQL 문에 외부의 신뢰할 수 없는 데이터를 포함시키면 SQL 삽입을 초래할 수 있습니다.
+</p>
+<p>
+    이 선택 절을 예로 들어 봅시다.
+</p>
+<pre>
+// Constructs a selection clause by concatenating the user's input to the column name
+String mSelectionClause =  "var = " + mUserInput;
+</pre>
+<p>
+    이렇게 하면 사용자로 하여금 여러분의 SQL 문에 악의적인 SQL을 연결할 수 있도록 허용합니다.
+    예를 들어 사용자가 <code>mUserInput</code>에 대해 "nothing; DROP TABLE *;"을 입력할 수 있습니다. 
+그러면 그 결과로 선택 절 <code>var = nothing; DROP TABLE *;</code>이 나옵니다. 
+선택 절이 일종의 SQL 문으로 취급되었기 때문에 제공자가 기본 SQLite 데이터베이스에서 테이블을 
+모두 삭제하는 결과를 낳을 수도 있습니다(제공자가 <a href="http://en.wikipedia.org/wiki/SQL_injection">SQL 삽입</a> 
+시도를 잡아내도록 설정된 경우는 예외입니다).
+</p>
+<p>
+    이 문제를 피하려면 <code>?</code>를 대체 가능한 매개변수로 사용하는 선택 절과, 
+별도의 선택 인수 배열을 사용하면 됩니다. 이렇게 하면, 사용자 입력이 SQL 문의 일부로 해석되기보다 쿼리에 직접 바인딩됩니다.
+
+    이것은 SQL로 취급되지 않기 때문에 사용자 입력이 악의적인 SQL을 삽입할 수 없습니다. 
+사용자 입력을 포함하는 데 연결을 사용하는 대신 다음 선택 절을 사용합니다.
+</p>
+<pre>
+// Constructs a selection clause with a replaceable parameter
+String mSelectionClause =  "var = ?";
+</pre>
+<p>
+    선택 인수 배열을 이렇게 설정합니다.
+</p>
+<pre>
+// Defines an array to contain the selection arguments
+String[] selectionArgs = {""};
+</pre>
+<p>
+    선택 인수 배열에 값을 입력할 때는 이렇게 합니다.
+</p>
+<pre>
+// Sets the selection argument to the user's input
+selectionArgs[0] = mUserInput;
+</pre>
+<p>
+    <code>?</code>를 대체 가능한 매개변수로 사용하는 선택 절과 
+선택 인수 배열을 사용하는 것이 선택을 지정하는 데 선호되는 방법입니다. 
+이는 제공자가 SQL 데이터베이스 기반이 아닐 때에도 마찬가지입니다.
+</p>
+<!-- Displaying the results -->
+<h3 id="DisplayResults">쿼리 결과 표시</h3>
+<p>
+    {@link android.content.ContentResolver#query ContentResolver.query()} 
+클라이언트 메서드는 언제나 쿼리 선택 기준과 일치하는 행에 대해 쿼리 프로젝션이 지정한 열을 포함하는
+{@link android.database.Cursor}를 반환합니다. 
+{@link android.database.Cursor} 개체가 자신이 포함한 행과 열에 무작위 읽기 액세스를 제공합니다.
+ {@link android.database.Cursor} 메서드를 사용하면 행을 결과에서 반복할 수 있고, 
+각 열의 데이터 유형을 결정하며 열에서 데이터를 꺼내거나 결과의 다른 속성을 검토할 수도 있습니다.
+ 일부 {@link android.database.Cursor} 구현은 제공자의 데이터가 변경될 경우,
+{@link android.database.Cursor}가 변경될 때 관찰자 개체 내의 메서드를 트리거하는 경우 
+또는 두 가지가 한 번에 발생할 경우 자동으로 개체를 업데이트합니다.
+</p>
+<p class="note">
+    <strong>참고:</strong> 제공자는 쿼리를 수행하는 개체의 성격을 근거로 
+열에 대한 액세스를 제한할 수 있습니다. 예를 들어 연락처 제공자는 동기화 어댑터로의 몇몇 열에 대한 액세스를 제한합니다. 
+이렇게 해야 액티비티 또는 서비스에 열을 반환하지 않기 때문입니다.
+</p>
+<p>
+    선택 기준에 일치하는 행이 없으면, 제공자는 
+{@link android.database.Cursor} 개체를 반환합니다. 이 개체의 
+{@link android.database.Cursor#getCount Cursor.getCount()}는 0(빈 커서)입니다.
+</p>
+<p>
+    내부 오류가 발생하는 경우, 쿼리 결과는 특정 제공자에 따라 달라집니다. 
+<code>null</code>을 반환하기로 선택할 수도 있고, {@link java.lang.Exception}을 발생시킬 수도 있습니다.
+</p>
+<p>
+    {@link android.database.Cursor}는 행의 "목록"이므로,
+{@link android.database.Cursor}의 콘텐츠를 표시하는 좋은 방법은 {@link android.widget.SimpleCursorAdapter}를 통해 {@link android.widget.ListView}에
+연결하는 것입니다.
+</p>
+<p>
+    다음 조각은 이전 조각으로부터 코드를 계속 이어가는 것입니다. 
+이는 해당 쿼리가 검색한 {@link android.database.Cursor}가 들어 있는
+{@link android.widget.SimpleCursorAdapter} 개체를 생성하며, 이 개체를 
+{@link android.widget.ListView}에 대한 어댑터로 설정합니다.
+</p>
+<pre class="prettyprint">
+// Defines a list of columns to retrieve from the Cursor and load into an output row
+String[] mWordListColumns =
+{
+    UserDictionary.Words.WORD,   // Contract class constant containing the word column name
+    UserDictionary.Words.LOCALE  // Contract class constant containing the locale column name
+};
+
+// Defines a list of View IDs that will receive the Cursor columns for each row
+int[] mWordListItems = { R.id.dictWord, R.id.locale};
+
+// Creates a new SimpleCursorAdapter
+mCursorAdapter = new SimpleCursorAdapter(
+    getApplicationContext(),               // The application's Context object
+    R.layout.wordlistrow,                  // A layout in XML for one row in the ListView
+    mCursor,                               // The result from the query
+    mWordListColumns,                      // A string array of column names in the cursor
+    mWordListItems,                        // An integer array of view IDs in the row layout
+    0);                                    // Flags (usually none are needed)
+
+// Sets the adapter for the ListView
+mWordList.setAdapter(mCursorAdapter);
+</pre>
+<p class="note">
+    <strong>참고:</strong> {@link android.database.Cursor}로 {@link android.widget.ListView}를 뒷받침하려면,
+커서에 <code>_ID</code>라는 열이 포함되어야 합니다.
+    이것 때문에 이전에 표시된 쿼리가 "단어" 테이블에 대하여 <code>_ID</code> 열을 
+검색하며, {@link android.widget.ListView}가 이를 표시하지 않더라도 무관합니다.
+    이 제한은 대부분의 제공자에 각 테이블에 대한 <code>_ID</code> 열이 있는 이유를 설명해주기도 합니다.
+
+</p>
+
+        <!-- Getting data from query results -->
+<h3 id="GettingResults">쿼리 결과에서 데이터 가져오기</h3>
+<p>
+    쿼리 결과를 단순히 표시만 하는 것보다 이를 다른 작업에 사용할 수 있습니다. 
+예를 들어, 사용자 사전에서 철자를 검색한 다음 이것을 다른 제공자 내에서 찾아볼 수 있습니다.
+ 이렇게 하려면, {@link android.database.Cursor}에서 행을 계속 반복하면 됩니다.
+</p>
+<pre class="prettyprint">
+
+// Determine the column index of the column named "word"
+int index = mCursor.getColumnIndex(UserDictionary.Words.WORD);
+
+/*
+ * Only executes if the cursor is valid. The User Dictionary Provider returns null if
+ * an internal error occurs. Other providers may throw an Exception instead of returning null.
+ */
+
+if (mCursor != null) {
+    /*
+     * Moves to the next row in the cursor. Before the first movement in the cursor, the
+     * "row pointer" is -1, and if you try to retrieve data at that position you will get an
+     * exception.
+     */
+    while (mCursor.moveToNext()) {
+
+        // Gets the value from the column.
+        newWord = mCursor.getString(index);
+
+        // Insert code here to process the retrieved word.
+
+        ...
+
+        // end of while loop
+    }
+} else {
+
+    // Insert code here to report an error if the cursor is null or the provider threw an exception.
+}
+</pre>
+<p>
+    {@link android.database.Cursor} 구현에는 
+여러 개의 "가져오기" 메서드가 들어 있어 개체로부터 여러 가지 유형의 데이터를 검색합니다. 예를 들어 이전 조각에서는 
+{@link android.database.Cursor#getString getString()}을 사용합니다. 
+여기에는 해당 열의 데이터 유형을 나타내는 값을 반환하는 
+{@link android.database.Cursor#getType getType()} 메서드도 있습니다.
+</p>
+
+
+    <!-- Requesting permissions -->
+<h2 id="Permissions">콘텐츠 제공자 권한</h2>
+<p>
+    제공자의 애플리케이션은 해당 제공자의 데이터에 액세스하려면 다른 애플리케이션이 반드시 가지고 있어야 하는 
+권한을 지정할 수 있습니다. 이와 같은 권한을 통해 사용자는 한 애플리케이션이 어느 데이터에 액세스하려 시도할지 
+알 수 있습니다. 다른 애플리케이션은 제공자의 요구 사항을 근거로 해당 제공자에 액세스하기 위해 필요한 
+권한을 요청합니다. 최종 사용자는 애플리케이션을 설치할 때 요청된 권한을 보게 됩니다.
+
+</p>
+<p>
+    제공자의 애플리케이션이 아무 권한도 지정하지 않은 경우, 다른 애플리케이션은 해당 제공자의 
+데이터에 액세스할 수 없습니다. 그러나 제공자의 애플리케이션 내에 있는 구성 요소는 
+지정된 권한과 무관하게 항상 읽기 및 쓰기 액세스 권한을 모두 가지고 있습니다.
+</p>
+<p>
+    이전에 언급한 것과 같이 사용자 사전 제공자에서 데이터를 검색하려면 
+<code>android.permission.READ_USER_DICTIONARY</code> 권한이 필요합니다.
+    이 제공자에게는 데이터 삽입, 업데이트 또는 삭제에 각각 별도의 <code>android.permission.WRITE_USER_DICTIONARY</code>
+권한이 있습니다.
+</p>
+<p>
+    제공자에 액세스하는 데 필요한 권한을 얻으려면 애플리케이션은 
+자신의 매니페스트 파일에 있는 <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+으로 그러한 권한을 요청합니다. Android 패키지 관리자가 애플리케이션을 설치하는 경우, 
+사용자는 애플리케이션이 요청하는 권한을 모두 승인해야 합니다. 사용자가 이를 모두 승인하면
+패키지 관리자가 설치를 계속하지만, 사용자가 이를 승인하지 않으면 패키지 관리자는 설치를 중단합니다.
+
+</p>
+<p>
+    
+다음 <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+ 요소는 사용자 사전 제공자에 읽기 액세스 권한을 요청하는 것입니다.
+</p>
+<pre>
+    &lt;uses-permission android:name="android.permission.READ_USER_DICTIONARY"&gt;
+</pre>
+<p>
+    제공자 액세스 권한이 미치는 영향은 
+<a href="{@docRoot}guide/topics/security/security.html">보안 및 권한</a> 가이드에 좀 더 자세히 설명되어 있습니다.
+</p>
+
+
+<!-- Inserting, Updating, and Deleting Data -->
+<h2 id="Modifications">데이터 삽입, 업데이트 및 삭제</h2>
+<p>
+    제공자로부터 데이터를 검색하는 것과 같은 방식으로, 데이터를 수정할 때에도 제공자 클라이언트와 제공자의 
+{@link android.content.ContentProvider} 사이의 상호작용을 사용합니다.
+    {@link android.content.ContentResolver}의 메서드를 호출하면서 
+{@link android.content.ContentProvider}의 상응하는 메서드로 전달된 인수를 사용합니다. 
+제공자와 제공자의 클라이언트가 보안과 프로세스간 통신을 자동으로 처리합니다.
+</p>
+<h3 id="Inserting">데이터 삽입</h3>
+<p>
+    데이터를 제공자 안으로 삽입하려면, 
+{@link android.content.ContentResolver#insert ContentResolver.insert()}
+ 메서드를 호출합니다. 이 메서드는 제공자에 새로운 행을 삽입하고 해당 열에 대한 콘텐츠 URI를 반환합니다.
+    이 조각은 사용자 사전 제공자에 새 단어를 삽입하는 방법을 나타낸 것입니다.
+</p>
+<pre class="prettyprint">
+// Defines a new Uri object that receives the result of the insertion
+Uri mNewUri;
+
+...
+
+// Defines an object to contain the new values to insert
+ContentValues mNewValues = new ContentValues();
+
+/*
+ * Sets the values of each column and inserts the word. The arguments to the "put"
+ * method are "column name" and "value"
+ */
+mNewValues.put(UserDictionary.Words.APP_ID, "example.user");
+mNewValues.put(UserDictionary.Words.LOCALE, "en_US");
+mNewValues.put(UserDictionary.Words.WORD, "insert");
+mNewValues.put(UserDictionary.Words.FREQUENCY, "100");
+
+mNewUri = getContentResolver().insert(
+    UserDictionary.Word.CONTENT_URI,   // the user dictionary content URI
+    mNewValues                          // the values to insert
+);
+</pre>
+<p>
+    새로운 행에 대한 데이터는 단일 행 커서와 형태가 유사한 단일 {@link android.content.ContentValues} 개체로
+이동합니다. 이 개체 내의 열은 모두 같은 데이터 유형을 가지지 않아도 됩니다. 
+또한 아예 값을 지정하고 싶지 않은 경우라면 열을 <code>null</code>로 설정할 수 있습니다. 
+이때 {@link android.content.ContentValues#putNull ContentValues.putNull()}을 사용하면 됩니다.
+</p>
+<p>
+    조각은 <code>_ID</code> 열을 추가하지 않습니다. 이 열은 자동으로 유지관리되기 때문입니다.
+ 제공자는 추가된 모든 열마다 고유한 <code>_ID</code> 값을 할당합니다.
+ 제공자는 보통 이 값을 테이블의 기본 키로 사용합니다.
+</p>
+<p>
+    <code>newUri</code>에 반환된 콘텐츠 URI는 다음과 같은 형식으로 새로 추가된 행을 식별합니다.
+
+</p>
+<pre>
+content://user_dictionary/words/&lt;id_value&gt;
+</pre>
+<p>
+    <code>&lt;id_value&gt;</code>는 새로운 행에 대한 <code>_ID</code>의 콘텐츠입니다.
+    대부분의 제공자는 이런 형태의 콘텐츠 URI를 자동으로 감지할 수 있으며, 그런 다음 해당 행에서 요청된 작업을 수행합니다.
+
+</p>
+<p>
+    반환된 {@link android.net.Uri}에서 <code>_ID</code> 값을 가져오려면
+{@link android.content.ContentUris#parseId ContentUris.parseId()}를 호출합니다.
+</p>
+<h3 id="Updating">데이터 업데이트</h3>
+<p>
+    행을 업데이트하려면 업데이트된 값과 함께 {@link android.content.ContentValues} 개체를 사용합니다. 
+이때 값은 삽입할 때와 똑같고, 선택 기준은 쿼리할 때와 같습니다.
+    사용하는 클라이언트 메서드는
+{@link android.content.ContentResolver#update ContentResolver.update()}입니다. 
+값을 추가하는 것은 업데이트 중인 열에 대한 {@link android.content.ContentValues} 개체에만 하면 됩니다. 
+열의 콘텐츠를 삭제하려면, 값을 <code>null</code>로 설정하십시오.
+</p>
+<p>
+    다음 조각에서는 로케일이 언어 "en"인 행 모두를 로케일 <code>null</code>을 가지도록 변경합니다.
+ 반환 값이 업데이트된 행 수입니다.
+</p>
+<pre>
+// Defines an object to contain the updated values
+ContentValues mUpdateValues = new ContentValues();
+
+// Defines selection criteria for the rows you want to update
+String mSelectionClause = UserDictionary.Words.LOCALE +  "LIKE ?";
+String[] mSelectionArgs = {"en_%"};
+
+// Defines a variable to contain the number of updated rows
+int mRowsUpdated = 0;
+
+...
+
+/*
+ * Sets the updated value and updates the selected words.
+ */
+mUpdateValues.putNull(UserDictionary.Words.LOCALE);
+
+mRowsUpdated = getContentResolver().update(
+    UserDictionary.Words.CONTENT_URI,   // the user dictionary content URI
+    mUpdateValues                       // the columns to update
+    mSelectionClause                    // the column to select on
+    mSelectionArgs                      // the value to compare to
+);
+</pre>
+<p>
+    
+{@link android.content.ContentResolver#update ContentResolver.update()}를 호출하는 경우에는 사용자 입력도 삭제해야 합니다. 이 내용에 관해 자세히 알아보려면
+<a href="#Injection">악의적인 입력에 대한 보호</a> 섹션을 읽어 보십시오.
+</p>
+<h3 id="Deleting">데이터 삭제</h3>
+<p>
+    행을 삭제하는 것은 행 데이터를 검색하는 것과 비슷합니다. 즉, 삭제하고자 하는 행에 대한 선택 기준을 지정하면 
+클라이언트 메서드가 삭제된 행 수를 반환하는 식입니다.
+    다음 조각은 앱 ID가 "user"와 일치하는 행을 삭제합니다. 메서드가 삭제된 행 수를 반환합니다.
+
+</p>
+<pre>
+
+// Defines selection criteria for the rows you want to delete
+String mSelectionClause = UserDictionary.Words.APP_ID + " LIKE ?";
+String[] mSelectionArgs = {"user"};
+
+// Defines a variable to contain the number of rows deleted
+int mRowsDeleted = 0;
+
+...
+
+// Deletes the words that match the selection criteria
+mRowsDeleted = getContentResolver().delete(
+    UserDictionary.Words.CONTENT_URI,   // the user dictionary content URI
+    mSelectionClause                    // the column to select on
+    mSelectionArgs                      // the value to compare to
+);
+</pre>
+<p>
+    {@link android.content.ContentResolver#delete ContentResolver.delete()}를 
+호출하는 경우에는 사용자 입력도 삭제해야 합니다. 이 내용에 관해 자세히 알아보려면
+<a href="#Injection">악의적인 입력에 대한 보호</a> 섹션을 읽어 보십시오.
+</p>
+<!-- Provider Data Types -->
+<h2 id="DataTypes">제공자 데이터 유형</h2>
+<p>
+    콘텐츠 제공자는 아주 다양한 데이터 유형을 제공할 수 있습니다. 
+사용자 사전 제공자는 텍스트만 제공하지만, 제공자는 다음과 같은 형식도 제공할 수 있습니다.
+</p>
+    <ul>
+        <li>
+            정수
+        </li>
+        <li>
+            긴 정수(Long)
+        </li>
+        <li>
+            부동 소수점 수
+        </li>
+        <li>
+            긴 부동 소수점 수(double)
+        </li>
+    </ul>
+<p>
+    제공자가 종종 사용하는 또 다른 데이터 유형은 64KB 바이트 배열로 구현되는 BLOB(Binary Large OBject)입니다.
+ 이용 가능한 데이터 유형을 확인하려면 
+{@link android.database.Cursor} 클래스 "가져오기" 메서드를 살펴보면 됩니다.
+</p>
+<p>
+    제공자 내의 각 열에 대한 데이터 유형은 보통 자신의 문서에 목록으로 나열되어 있습니다.
+    사용자 사전 제공자의 데이터 유형은 제공자의 계약 클래스 
+{@link android.provider.UserDictionary.Words}의 참조 문서에 나열되어 있습니다(계약 클래스는
+<a href="#ContractClasses">계약 클래스</a> 섹션에 설명되어 있습니다).
+    @link android.database.Cursor#getType
+    Cursor.getType()}을 호출해서도 데이터 유형을 결정할 수 있습니다.
+</p>
+<p>
+    제공자는 스스로 정의하는 각 콘텐츠 URI의 MIME 데이터 유형 정보도 유지관리합니다. 
+MIME 유형 정보를 사용하면 애플리케이션이 제공자가 제공하는 데이터를 처리할 수 있을지 알아낼 수도 있고, 
+MIME 유형을 근거로 처리 유형을 선택할 수도 있습니다. 
+MIME 유형이 필요한 시점은 주로 복잡한 데이터 구조 또는 파일이 들어 있는 제공자를 다룰 때입니다.
+ 예를 들어 연락처 제공자 내의 {@link android.provider.ContactsContract.Data}
+ 테이블은 MIME 유형을 사용하여 각 행에 저장된 연락처 데이터의 유형에 레이블을 붙입니다.
+ 콘텐츠 URI에 상응하는 MIME 유형을 가져오려면 
+{@link android.content.ContentResolver#getType ContentResolver.getType()}을 호출하십시오.
+</p>
+<p>
+    <a href="#MIMETypeReference">MIME 유형 참조</a> 섹션에서 표준 및 사용자 지정 MIME 유형의 
+두 가지를 모두 설명하고 있습니다.
+</p>
+
+
+<!-- Alternative Forms of Provider Access -->
+<h2 id="AltForms">제공자 액세스의 대체 형식</h2>
+<p>
+    애플리케이션 개발에 있어 중요한 제공자 액세스의 대체 형식에는 다음과 같은 세 가지가 있습니다.
+</p>
+<ul>
+    <li>
+        <a href="#Batch">일괄 액세스</a>: {@link android.content.ContentProviderOperation}
+ 클래스에 있는 메서드로 일괄 액세스 호출을 생성하고
+{@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}로 이를 적용할 수 있습니다.
+    </li>
+    <li>
+        비동기식 쿼리: 쿼리는 별도의 스레드에서 수행해야 합니다. 이 작업을 수행하는 한 가지 방법으로 
+{@link android.content.CursorLoader} 개체를 사용하는 것이 있습니다. 이 사용 방법은 
+<a href="{@docRoot}guide/components/loaders.html">로더</a> 가이드에 있는 예시에서 설명합니다.
+
+    </li>
+    <li>
+        <a href="#Intents">인텐트를 통한 데이터 액세스</a>: 
+인텐트를 제공자에 직접 보낼 수는 없지만, 인텐트를 제공자의 애플리케이션에 보낼 수는 있습니다.
+보통은 이것이 제공자의 데이터를 수정하기에 가장 좋습니다.
+    </li>
+</ul>
+<p>
+    일괄 액세스와 인텐트를 통한 수정은 다음 섹션에서 설명되어 있습니다.
+</p>
+<h3 id="Batch">일괄 액세스</h3>
+<p>
+    제공자에 일괄 액세스를 하면 많은 수의 행을 삽입할 때, 같은 메서드 호출 내에서 여러 개의 테이블에 여러 행을 삽입할 때 
+또는 전반적으로, 프로세스 경계를 가로질러 일련의 작업을 수행하는 경우(원자성 작업) 유용합니다.
+
+</p>
+<p>
+    "일괄 모드"로 제공자에 액세스하려면
+{@link android.content.ContentProviderOperation} 개체의 배열을 생성한 다음 이를 콘텐츠 제공자에게 
+{@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}로
+ 발송하면 됩니다. 
+이 메서드에는 특정한 콘텐츠 URI보다는 콘텐츠 제공자의 <em>권한</em>을 전달합니다.
+이렇게 하면 배열 내의 각 {@link android.content.ContentProviderOperation} 개체가 
+서로 다른 테이블에 대해 작용하도록 할 수 있습니다. {@link android.content.ContentResolver#applyBatch
+    ContentResolver.applyBatch()}를 호출하면 일련의 결과를 반환합니다.
+</p>
+<p>
+    {@link android.provider.ContactsContract.RawContacts} 계약 클래스의 설명에
+ 일괄 삽입을 설명하는 코드 조각이 포함되어 있습니다. 
+<a href="{@docRoot}resources/samples/ContactManager/index.html">연락처 관리자</a>
+샘플 애플리케이션에는 <code>ContactAdder.java</code>
+소스 파일의 일괄 액세스 예시가 포함되어 있습니다.
+</p>
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>도우미 앱을 사용한 데이터 표시</h2>
+<p>
+    애플리케이션에 액세스 권한이 <em>있더라도</em> 
+다른 애플리케이션에 데이터를 표시할 인텐트를 사용하고자 할 수 있습니다. 예를 들어 캘린더 애플리케이션은 
+특정 날짜나 이벤트를 표시하는 {@link android.content.Intent#ACTION_VIEW}를 허용합니다.
+    이 때문에 나름의 UI를 직접 생성하지 않고도 캘린더 정보를 표시할 수 있습니다.
+이 기능에 대한 자세한 정보는 
+<a href="{@docRoot}guide/topics/providers/calendar-provider.html">캘린더 제공자</a> 가이드를 참조하십시오.
+</p>
+<p>
+    인텐트를 보낼 목적지인 애플리케이션은 제공자와 연관된 애플리케이션이 아니어도 됩니다.
+ 예를 들어 연락처 제공자에서 연락처를 검색한 다음, 해당 연락처의 이미지에 대한 콘텐츠 URI가 들어 있는 
+{@link android.content.Intent#ACTION_VIEW} 인텐트를 
+이미지 뷰어로 보낼 수 있습니다.
+</p>
+</div>
+</div>
+<h3 id="Intents">인텐트를 통한 데이터 액세스</h3>
+<p>
+    인텐트는 콘텐츠 제공자에 간접 액세스를 제공할 수 있습니다. 애플리케이션에 액세스 권한이 없는데도 
+사용자에게 제공자 내의 데이터에 액세스 권한을 허가하려면, 권한을 가지고 있는 애플리케이션에서 결과 인텐트를 다시 가져오거나 
+권한이 있는 애플리케이션을 활성화한 다음 사용자에게 그 애플리케이션에서 작업하도록 하면 됩니다.
+
+</p>
+<h4>임시 권한으로 액세스 얻기</h4>
+<p>
+    적절한 액세스 권한이 없더라도 콘텐츠 제공자 내의 데이터에 액세스할 수는 있습니다. 
+권한을 가지고 있는 애플리케이션에 인텐트를 보내 "URI" 권한이 들어 있는 결과 인텐트를 돌려받으면 됩니다.
+
+    이들 권한은 특정 콘텐츠 URI에 대한 권한으로, 이를 수신하는 액티비티가 완료될 때까지 유지됩니다.
+ 영구 권한을 가지고 있는 애플리케이션은 결과 인텐트에 다음과 같이 플래그를 설정하여 임시 권한을 허가합니다.
+
+</p>
+<ul>
+    <li>
+        <strong>읽기 권한:</strong>
+{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}
+    </li>
+    <li>
+        <strong>쓰기 권한:</strong>
+{@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}
+    </li>
+</ul>
+<p class="note">
+    <strong>참고:</strong> 이와 같은 플래그는 콘텐츠 URI에 권한이 들어 있는 제공자에 일반적인 읽기 또는 쓰기 액세스 
+권한을 부여하지는 않습니다. 이 액세스는 URI 자체에만 해당됩니다.
+</p>
+<p>
+    제공자는 자신의 매니페스트 내의 콘텐츠 URI에 대한 URI 권한을 정의합니다. 이때 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+ 요소의 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">android:grantUriPermission</a></code>
+ 속성을 사용하며, 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+ 요소의 
+<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
+ 하위 요소도 사용합니다. 
+URI 권한 메커니즘은 "URI 권한" 섹션의 <a href="{@docRoot}guide/topics/security/security.html">보안 및 권한</a> 가이드에
+자세히 설명되어 있습니다.
+</p>
+<p>
+    예를 들어, {@link android.Manifest.permission#READ_CONTACTS} 권한이 없더라도
+연락처 제공자 내의 연락처에 대한 데이터를 검색할 수 있습니다. 
+이 작업을 하면 좋은 예로, 연락처에 기재된 사람의 생일에 전자 축하 카드를 보내주는 애플리케이션을 들 수 있습니다. 
+{@link android.Manifest.permission#READ_CONTACTS}를 요청하면 
+사용자의 연락처 전체와 해당 정보 일체에 대한 액세스를 부여하므로, 그 대신 애플리케이션에서 어느 연락처를 사용할지 사용자가 직접 제어하도록 해주는 편이 낫습니다.
+ 이렇게 하려면, 다음 절차를 사용합니다.
+</p>
+<ol>
+    <li>
+        애플리케이션이{@link android.app.Activity#startActivityForResult
+startActivityForResult()} 메서드를 사용해서
+{@link android.content.Intent#ACTION_PICK} 작업과 "contacts" MIME 유형
+{@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE}이 들어 있는 인텐트를 보냅니다.
+
+    </li>
+    <li>
+        이 인텐트는 피플 앱의 "선택" 액티비티에 대한 인텐트 필터와 일치하기 때문에, 이 액티비티가 전경으로 나옵니다.
+
+    </li>
+    <li>
+        선택 액티비티에서 사용자가 업데이트할 연락처를 선택합니다.
+ 이렇게 되면 선택 액티비티가 
+{@link android.app.Activity#setResult setResult(resultcode, intent)}
+를 호출하여 애플리케이션에 돌려줄 인텐트를 설정합니다. 
+이 인텐트에 사용자가 선택한 연락처의 콘텐츠 URI와 "추가" 플래그 
+{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}이 들어 있습니다. 
+이러한 플래그가 URI에 앱으로의 권한을 허가하여 콘텐츠 URI가 가리킨 연락처에 대한 데이터를 읽을 수 있도록 합니다. 
+그런 다음 선택 액티비티는 {@link android.app.Activity#finish()}를 호출하여 
+애플리케이션에 제어를 반환합니다.
+    </li>
+    <li>
+        액티비티가 전경으로 돌아오고, 시스템은 액티비티의
+{@link android.app.Activity#onActivityResult onActivityResult()} 메서드를
+호출합니다. 이 메서드가 피플 앱의 선택 액티비티가 생성한 결과 인텐트를 수신합니다.
+
+    </li>
+    <li>
+        결과 인텐트로부터 받은 콘텐츠 URI를 사용하면 연락처 제공자에서 연락처의 데이터를 읽을 수 있습니다.
+이것은 매니페스트에서 제공자로의 영구 읽기 액세스 권한을 요청하지 않았어도 적용됩니다.
+ 그러면 연락처의 생일 정보나 당사자의 이메일 주소를 가져와 전자 축하 카드를 보낼 수 있게 됩니다.
+
+    </li>
+</ol>
+<h4>다른 애플리케이션 사용</h4>
+<p>
+    개발자에게 액세스 권한이 없는 데이터를 사용자가 수정할 수 있도록 허용하는 간단한 방법은 
+해당 권한을 가지고 있는 애플리케이션을 활성화한 다음 사용자에게 그곳에서 작업하도록 해주는 것입니다.
+</p>
+<p>
+    예를 들어, 캘린더 애플리케이션은
+애플리케이션의 삽입 UI를 활성화해주는 {@link android.content.Intent#ACTION_INSERT} 인텐트를 수락합니다. 애플리케이션이 UI를 미리 채우는 데 사용하는 이 인텐트의 "extras" 데이터를
+전달할 수 있게 됩니다. 반복적인 이벤트의 구문은 복잡하므로
+캘린더 제공자에 이벤트를 삽입하기 좋은 방법은
+{@link android.content.Intent#ACTION_INSERT}로 캘린더 앱을 활성화하고 사용자에게 그곳에서 이벤트를
+삽입하게 하는 것입니다.
+</p>
+<!-- Contract Classes -->
+<h2 id="ContractClasses">계약 클래스</h2>
+<p>
+    계약 클래스는 애플리케이션이 콘텐츠 URI, 열 이름, 인텐트 작업 및 콘텐츠 제공자의 다른 기능과
+작업할 수 있게 도와주는 상수를 정의합니다. 계약 클래스는 제공자와 함께 자동으로 포함되지 않습니다. 
+해당 제공자의 개발자가 이를 정의한 다음 다른 개발자가 사용할 수 있도록 해야 합니다.
+ Android 플랫폼 내에 포함된 제공자는 대부분 패키지 
+{@link android.provider} 안에 상응하는 계약 클래스를 가지고 있습니다.
+</p>
+<p>
+    예를 들어, 사용자 사전 제공자에는 콘텐츠 URI와 열 이름 상수가 들어 있는
+{@link android.provider.UserDictionary} 계약 클래스가 있습니다. 
+"단어" 테이블에 대한 콘텐츠 URI는 상수
+{@link android.provider.UserDictionary.Words#CONTENT_URI UserDictionary.Words.CONTENT_URI}에 정의됩니다.
+    {@link android.provider.UserDictionary.Words} 클래스에도 
+열 이름 상수가 들어 있으며, 이는 이 가이드의 예시 조각에서 사용됩니다. 
+예를 들어 쿼리 프로젝션은 다음과 같이 정의될 수 있습니다.
+</p>
+<pre>
+String[] mProjection =
+{
+    UserDictionary.Words._ID,
+    UserDictionary.Words.WORD,
+    UserDictionary.Words.LOCALE
+};
+</pre>
+<p>
+    또 다른 계약 클래스는 연락처 제공자의 {@link android.provider.ContactsContract}입니다.
+    이 클래스에 대한 참조 문서에는 예시 코드 조각이 포함되어 있습니다. 
+이것의 하위 클래스 중 하나인 {@link android.provider.ContactsContract.Intents.Insert}는
+ 인텐트와 인텐트 데이터의 상수가 들어 있는 계약 클래스입니다.
+</p>
+
+
+<!-- MIME Type Reference -->
+<h2 id="MIMETypeReference">MIME 유형 참조</h2>
+<p>
+    콘텐츠 제공자는 표준 MIME 미디어 유형이나 사용자 지정 MIME 유형 문자열, 또는 그 두 가지를 모두 반환할 수 있습니다.
+</p>
+<p>
+    MIME 유형의 형식은 다음과 같습니다.
+</p>
+<pre>
+<em>type</em>/<em>subtype</em>
+</pre>
+<p>
+    예를 들어, 잘 알려진 MIME 유형 <code>text/html</code>에는 <code>text</code> 유형과
+<code>html</code> 하위 유형이 있습니다. 제공자가 URI에 대해 이 유형을 반환하면,
+해당 URI를 사용하는 쿼리가 HTML 태그가 들어 있는 텍스트를 반환할 것이라는 뜻입니다.
+</p>
+<p>
+    사용자 지정 MIME 유형 문자열은 "공급업체별" MIME 유형이라고도 불리며 
+이쪽의 <em>유형</em>과 <em>하위 유형</em> 값이 더 복잡합니다. <em>유형</em> 값은 경우에 따라 항상 다음과 같습니다.
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>
+</pre>
+<p>
+    (여러 행의 경우)
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>
+</pre>
+<p>
+    (하나의 행의 경우).
+</p>
+<p>
+    <em>하위 유형</em>은 제공자별로 다릅니다. Android 내장 제공자는 보통 단순한 하위 유형을 가지고 있습니다.
+ 예를 들어 연락처 애플리케이션이 전화 번호에 대한 행을 생성한다고 합니다. 이때 애플리케이션은 해당 행에 다음과 같은 MIME 유형을 설정하게 됩니다.
+
+</p>
+<pre>
+vnd.android.cursor.item/phone_v2
+</pre>
+<p>
+    하위 유형 값은 단순히 <code>phone_v2</code>인 것을 눈여겨 보십시오.
+</p>
+<p>
+    다른 제공자 개발자도 해당 제공자의 권한과 테이블 이름을 근거로 나름의 하위 유형 패턴을 만들 수 있습니다.
+ 예를 들어 기차 시간표가 들어 있는 제공자가 있다고 생각해 보겠습니다.
+    제공자의 권한은 <code>com.example.trains</code>이고 이 안에 테이블
+Line1, Line2, Line3이 들어 있습니다. 다음과 같은 콘텐츠 URI에 대응하는 방식을 살펴보십시오.
+</p>
+<p>
+<pre>
+content://com.example.trains/Line1
+</pre>
+<p>
+    테이블 Line1의 경우, 제공자는 다음과 같은 MIME 유형을 반환합니다.
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>/vnd.example.line1
+</pre>
+<p>
+     다음과 같은 콘텐츠 URI에 대응하는 방식을 살펴보십시오.
+</p>
+<pre>
+content://com.example.trains/Line2/5
+</pre>
+<p>
+    테이블 Line2의 행 5에 대해 제공자가 반환하는 MIME 유형은 다음과 같습니다.
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>/vnd.example.line2
+</pre>
+<p>
+    대부분의 콘텐츠 제공자는 자신이 사용하는 MIME 유형에 대한 계약 클래스 상수를 정의합니다. 
+예를 들어, 연락처 제공자 계약 클래스 {@link android.provider.ContactsContract.RawContacts}는
+단일 연락처 행의 MIME 유행에 대한
+ 상수 {@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE}을
+정의합니다.
+</p>
+<p>
+    한 행에 대한 콘텐츠 URI는 
+<a href="#ContentURIs">콘텐츠 URI</a> 섹션에 설명되어 있습니다.
+</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/providers/content-provider-creating.jd b/docs/html-intl/intl/ko/guide/topics/providers/content-provider-creating.jd
new file mode 100644
index 0000000..6757194
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/providers/content-provider-creating.jd
@@ -0,0 +1,1214 @@
+page.title=        콘텐츠 제공자 생성
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+
+<h2>이 문서의 내용</h2>
+<ol>
+    <li>
+        <a href="#DataStorage">데이터 저장소 설계</a>
+    </li>
+    <li>
+        <a href="#ContentURI">콘텐츠 URI 설계</a>
+    </li>
+    <li>
+        <a href="#ContentProvider">ContentProvider 클래스 구현</a>
+        <ol>
+            <li>
+                <a href="#RequiredAccess">필수 메서드</a>
+            </li>
+            <li>
+                <a href="#Query">query() 메서드 구현</a>
+            </li>
+            <li>
+                <a href="#Insert">insert() 메서드 구현</a>
+            </li>
+            <li>
+                <a href="#Delete">delete() 메서드 구현</a>
+            </li>
+            <li>
+                <a href="#Update">update() 메서드 구현</a>
+            </li>
+            <li>
+                <a href="#OnCreate">onCreate() 메서드 구현</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#MIMETypes">콘텐츠 제공자 MIME 유형 구현</a>
+        <ol>
+            <li>
+                <a href="#TableMIMETypes">테이블의 MIME 유형</a>
+            </li>
+            <li>
+                <a href="#FileMIMETypes">파일의 MIME 유형</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#ContractClass">계약 클래스 구현</a>
+    </li>
+    <li>
+        <a href="#Permissions">콘텐츠 제공자 권한 구현</a>
+    </li>
+    <li>
+        <a href="#ProviderElement">&lt;provider&gt; 요소</a>
+    </li>
+    <li>
+        <a href="#Intents">인텐트 및 데이터 액세스</a>
+    </li>
+</ol>
+<h2>Key 클래스</h2>
+    <ol>
+        <li>
+            {@link android.content.ContentProvider}
+        </li>
+        <li>
+            {@link android.database.Cursor}
+        </li>
+        <li>
+            {@link android.net.Uri}
+        </li>
+    </ol>
+<h2>관련 샘플</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}resources/samples/NotePad/index.html">
+                메모장 샘플 애플리케이션
+            </a>
+        </li>
+    </ol>
+<h2>참고 항목</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        콘텐츠 제공자 기본 정보</a>
+        </li>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+        캘린더 제공자</a>
+        </li>
+    </ol>
+</div>
+</div>
+
+
+<p>
+    콘텐츠 제공자는 데이터의 중앙 리포지토리로의 액세스를 관리합니다. Android 애플리케이션에서는 
+제공자를 하나 이상의 클래스로, 매니페스트 파일에 있는 요소와 함께 구현합니다.
+ 클래스 중 하나가 하위 클래스 
+{@link android.content.ContentProvider}를 구현하며, 
+이것이 제공자와 다른 애플리케이션 사이의 인터페이스입니다. 콘텐츠 제공자는 다른 애플리케이션에 데이터를 사용할 수 있게 해주도록 만들어져 있지만, 
+물론 애플리케이션 내에 사용자로 하여금 제공자가 관리하는 데이터를 쿼리하고 수정할 수 있게 허용하는 
+액티비티가 있을 수도 있습니다.
+</p>
+<p>
+    이 주제의 나머지 부분은 콘텐츠 제공자를 구축하기 위한 기본 단계 목록과 
+사용할 API 목록으로 이루어져 있습니다.
+</p>
+
+
+<!-- Before You Start Building -->
+<h2 id="BeforeYouStart">구축을 시작하기 전에</h2>
+<p>
+    제공자 구축을 시작하기 전에 우선 다음 단계를 수행하십시오.
+</p>
+<ol>
+    <li>
+        <strong>콘텐츠 제공자가 필요한지 결정합니다</strong>. 다음 기능 중 하나 이상을 제공하려면
+콘텐츠 제공자를 구축해야 합니다.
+        <ul>
+            <li>다른 애플리케이션에 복잡한 데이터나 파일을 제공하고자 하는 경우</li>
+            <li>사용자로 하여금 개발자의 앱에서 다른 앱으로 복잡한 데이터를 복사하도록 허용하고자 하는 경우</li>
+            <li>검색 프레임워크를 사용한 사용자 지정 검색 제안을 제공하고자 하는 경우</li>
+        </ul>
+    <p>
+        용도가 본인의 애플리케이션 안에서로 완전히 한정되어 있는 경우에는 
+제공자가 SQLite 데이터베이스를 사용하도록 하지 <em>않아도</em> 됩니다.
+    </p>
+    </li>
+    <li>
+        아직 읽지 않았다면, 지금 바로 
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+콘텐츠 제공자 기본 정보</a>를 읽고 제공자에 대해 자세히 알아보십시오.
+    </li>
+</ol>
+<p>
+    그런 다음, 다음 단계를 따라 제공자를 구축합니다.
+</p>
+<ol>
+    <li>
+        데이터를 위한 원시 저장소를 설계합니다. 콘텐츠 제공자는 두 가지 방식으로 데이터를 제공합니다.
+        <dl>
+            <dt>
+                파일 데이터
+            </dt>
+            <dd>
+                일반적으로 사진, 오디오 또는 동영상과 같은
+파일에 들어가는 데이터입니다. 이런 파일을 애플리케이션의 비공개 
+공간에 저장합니다. 제공자는 다른 애플리케이션으로부터 온 파일 요청에 응답하여 
+해당 파일로의 핸들을 제공할 수 있습니다.
+            </dd>
+            <dt>
+                "구조적" 데이터
+            </dt>
+            <dd>
+                일반적으로 데이터베이스, 배열 또는 유사 구조에 들어가는 데이터입니다.
+                이 데이터를 행과 열로 이루어진 테이블과 호환되는 형식으로 저장합니다. 
+행은 사람이나 인벤토리의 항목과 같은 엔티티를 나타냅니다. 
+열은 해당 엔티티에 대한 몇 가지 데이터, 예를 들어 사람 이름이나 항목 가격 등을 나타냅니다. 
+이 유형의 데이터를 저장하는 보편적인 방법은 SQLite 데이터베이스 안에 저장하는 것이지만,
+모든 유형의 영구적인 저장소를 사용해도 됩니다. Android 시스템에서 사용할 수 있는 저장소 유형에 대해 자세히 알아보려면,
+<a href="#DataStorage">
+데이터 저장소 설계</a> 섹션을 참조하십시오.
+            </dd>
+        </dl>
+    </li>
+    <li>
+        {@link android.content.ContentProvider} 클래스와
+필수 메서드의 구체적인 구현을 정의합니다. 이 클래스는 데이터와 나머지 Android 시스템 사이의
+인터페이스입니다. 이 클래스에 관한 자세한 정보는
+<a href="#ContentProvider">ContentProvider 클래스 구현</a> 섹션을 참조하십시오.
+    </li>
+    <li>
+        제공자의 권한 문자열, 그 콘텐츠 URI 및 열 이름을 정의합니다. 
+제공자 애플리케이션이 인텐트를 처리하게 하려면, 인텐트 작업과 추가 데이터 및
+플래그도 정의합니다. 데이터에 액세스하기를 원하는 애플리케이션에 요구할 권한도 
+정의합니다. 이 모든 값은 별도의 계약 클래스에서 상수로 정의하는 것을 고려해보는 
+것이 좋습니다. 이 클래스를 나중에 다른 개발자에게 노출할 수 있습니다. 
+콘텐츠 URI에 관한 자세한 정보는
+<a href="#ContentURI">콘텐츠 URI 설계</a> 섹션을 참조하십시오.
+        인텐트에 관한 자세한 정보는
+<a href="#Intents">인텐트 및 데이터 액세스</a> 섹션을 참조하십시오.
+    </li>
+    <li>
+        샘플 데이터, 또는 제공자와 클라우드 기반 데이터 사이에서
+데이터를 동기화할 수 있는 {@link android.content.AbstractThreadedSyncAdapter} 구현 등과 같이
+다른 선택적 조각을 추가합니다.
+    </li>
+</ol>
+
+
+<!-- Designing Data Storage -->
+<h2 id="DataStorage">데이터 저장소 설계</h2>
+<p>
+    콘텐츠 제공자는 구조화된 형식으로 저장된 데이터로의 인터페이스입니다. 
+인터페이스를 생성하기 전에 우선 데이터 저장 방식부터 결정해야 합니다. 
+데이터는 원하는 형식 아무 것으로나 저장할 수 있으며 그런 다음에 필요에 따라 해당 데이터를 읽고 쓸 인터페이스를 설계합니다.
+</p>
+<p>
+    다음은 Android에서 사용할 수 있는 몇 가지 데이터 저장소 기술입니다.
+</p>
+<ul>
+    <li>
+        Android 시스템에는 Android 자체 제공자가 테이블 지향적 데이터를
+저장하는 데 사용하는 SQLite 데이터베이스 API가 포함됩니다. 
+{@link android.database.sqlite.SQLiteOpenHelper} 클래스는 데이터베이스를 생성할 수 있게 돕고,
+{@link android.database.sqlite.SQLiteDatabase} 클래스는 데이터베이스 액세스를 위한
+기본 클래스입니다.
+        <p>
+            리포지토리를 구현하기 위해 데이터베이스를 사용하지 않아도 된다는 점을 기억하십시오. 
+제공자는 외부에 테이블 집합으로 나타나 관계적 데이터베이스와 비슷해 보이지만, 
+이것은 제공자의 내부 구현에 필요한 것은 아닙니다.
+        </p>
+    </li>
+    <li>
+        파일 데이터를 저장하는 데 있어 Android에는 다양한 파일 지향적 API가 있습니다.
+        파일 저장소에 관해 자세히 알아보려면
+<a href="{@docRoot}guide/topics/data/data-storage.html">데이터 저장소</a> 주제를 읽어 보십시오. 
+음악이나 동영상 등 미디어 관련 데이터를 제공하는 제공자를 설계하는 경우, 
+제공자가 테이블 데이터와 파일을 조합 할 수 있습니다.
+    </li>
+    <li>
+        네트워크 기반 데이터를 다루는 경우, {@link java.net} 및 
+{@link android.net} 내의 클래스를 사용하십시오. 네트워크 기반 데이터를 
+데이터베이스와 같은 로컬 데이터 스토어와 동기화한 다음, 해당 데이터를 테이블이나 파일로 제공할 수도 있습니다.
+        <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+샘플 동기화 어댑터</a> 샘플 애플리케이션이 이런 유형의 동기화를 보여줍니다.
+    </li>
+</ul>
+<h3 id="DataDesign">
+    데이터 설계 시 고려할 사항
+</h3>
+<p>
+    다음은 제공자의 데이터 구조를 설계할 때 유용한 몇 가지 팁입니다.
+</p>
+<ul>
+    <li>
+        테이블 데이터는 언제나 제공자가 유지관리하는 "기본 키" 열을
+각 행의 고유한 숫자 값으로 보유하고 있어야 합니다. 이 값을 사용하여 해당 행을 다른 테이블의 
+관련 행에 연결시킬 수 있습니다(이를 "외래 키"로 사용). 이 열에는 어느 이름이든 사용할 수 있지만
+{@link android.provider.BaseColumns#_ID BaseColumns._ID}를 사용하는 것이 가장 좋습니다.
+왜냐하면 제공자 쿼리 결과를
+{@link android.widget.ListView}에 연결하려면 검색된 열 중 하나가
+<code>_ID</code>라는 이름을 사용해야 하기 때문입니다.
+    </li>
+    <li>
+        비트맵 이미지나 파일 지향적 데이터의 매우 큰 조각을 제공하려면
+테이블 안에 직접 저장하기보다는 파일에 데이터를 저장한 뒤 
+간접적으로 제공합니다. 이렇게 하는 경우, 제공자의 사용자들에게 데이터에 액세스하려면 
+{@link android.content.ContentResolver} 파일 메서드를 사용해야 한다고 알려야 합니다.
+    </li>
+    <li>
+        BLOB(Binary Large OBject) 데이터 유형을 사용하여 크기가 다르거나
+구조가 다양한 데이터를 저장합니다. 예를 들어, BLOB 열을 사용하여
+<a href="http://code.google.com/p/protobuf">프로토콜 버퍼</a> 또는
+<a href="http://www.json.org">JSON 구조</a>를 저장할 수 있습니다.
+        <p>
+            BLOB를 사용하여 <em>스키마에 종속되지 않은</em> 테이블을 구현할 수도 있습니다. 
+이 유형의 테이블에서는, 기본 키 열, MIME 유형 열 및 하나 이상의 일반적인 열을 BLOB로 정의합니다.
+ 
+BLOB 열에 있는 데이터의 의미는 MIME 유형 열에 있는 값으로 나타냅니다. 
+이렇게 하면 같은 테이블에 여러 가지 행 유형을 저장할 수 있습니다. 연락처 제공자의 "데이터" 테이블 
+{@link android.provider.ContactsContract.Data}가 
+스키마에 종속되지 않은 테이블의 한 가지 예입니다.
+        </p>
+    </li>
+</ul>
+<!-- Designing Content URIs -->
+<h2 id="ContentURI">콘텐츠 URI 설계</h2>
+<p>
+    <strong>콘텐츠 URI</strong>는 제공자에서 데이터를 식별하는 URI입니다. 
+콘텐츠 URI에는 전체 제공자의 상징적인 이름(제공자의 <strong>권한</strong>)과
+테이블 또는 파일을 가리키는 이름(<strong>경로</strong>)이 포함됩니다. 
+선택 항목 ID 부분은 테이블 내의 개별적인 행을 가리킵니다. 
+{@link android.content.ContentProvider}의 모든 데이터 액세스 메서드는 
+콘텐츠 URI를 인수로 가집니다. 이를 통해 액세스할 테이블, 행 또는 파일을 결정할 수 있습니다.
+</p>
+<p>
+    콘텐츠 URI의 기본 정보는
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+콘텐츠 제공자 기본 정보</a>에 설명되어 있습니다.
+</p>
+<h3>권한 설계</h3>
+<p>
+    제공자에는 보통 하나의 권한이 있으며, 이것이 Android 내부 이름 역할을 합니다. 
+다른 제공자와의 충돌을 피하려면, 제공자 권한의 기반으로 인터넷 도메인 소유권(역방향)을
+사용해야 합니다. 이 권장 사항은 Android 패키지 이름에도 적용되므로, 
+제공자 권한을 제공자가 들어 있는 패키지의 이름 확장자로 정의해도 됩니다.
+ 예를 들어, Android 패키지 이름이
+<code>com.example.&lt;appname&gt;</code>라면, 제공자에게
+<code>com.example.&lt;appname&gt;.provider</code> 권한을 부여해야 합니다.
+</p>
+<h3>경로 구조 설계</h3>
+<p>
+    개발자는 보통 권한으로부터 콘텐츠 URI를 생성할 때 개별적인 테이블을 가리키는 
+경로를 추가하는 방식을 사용합니다. 예를 들어, <em>table1</em>과
+<em>table2</em>라는 테이블이 있다면, 이전 예시의 권한을 조합하여
+콘텐츠 URI<code>com.example.&lt;appname&gt;.provider/table1</code>와 
+<code>com.example.&lt;appname&gt;.provider/table2</code>를 도출합니다.
+ 
+경로는 하나의 세그먼트에 국한되지 않으며, 경로의 각 수준에 대한 테이블이 아니어도 됩니다.
+</p>
+<h3>콘텐츠 URI ID 처리</h3>
+<p>
+    규칙에 의하면, 제공자는 URI 맨 끝에서 행에 대한 ID 값이 있는 콘텐츠 URI를 허용하여 
+테이블 내 하나의 행으로의 액세스를 제공합니다. 또한 규칙에 의해 제공자는 
+이 ID 값을 테이블의 <code>_ID</code> 열에 일치시켜야 하며, 
+일치한 행에 대하여 요청된 액세스 허가를 수행해야 합니다.
+</p>
+<p>
+    이 규칙은 제공자에 액세스하는 앱을 위한 공통 설계 패턴을 세우는 데 유용합니다. 
+앱이 제공자에 대한 쿼리를 수행하고 그 결과로 나온 {@link android.database.Cursor}를
+{@link android.widget.ListView}에 {@link android.widget.CursorAdapter}를 사용하여 표시합니다.
+    {@link android.widget.CursorAdapter}의 정의에 따르면 
+{@link android.database.Cursor} 안의 열 중 하나는 <code>_ID</code>여야 합니다.
+</p>
+<p>
+    그러면 사용자가 데이터를 살펴보거나 수정하기 위하여 
+UI에서 표시된 여러 행 중 하나를 선택합니다. 앱은 {@link android.widget.ListView}를 지원하는 {@link android.database.Cursor}에서 해당하는 열을 가져오고,
+해당 열에 대한 <code>_ID</code> 값을 가져와서
+콘텐츠 URI에 추가하고, 제공자에 액세스 요청을 전송합니다. 그런 다음 제공자는 
+사용자가 선택한 바로 그 행에 대해 쿼리 또는 수정 작업을 수행할 수 있습니다.
+</p>
+<h3>콘텐츠 URI 패턴</h3>
+<p>
+    수신되는 콘텐츠 URI에 대해 어떤 조치를 취할지 선택하는 데 도움이 되도록 하기 위해 제공자 API에 
+편의 클래스 {@link android.content.UriMatcher}가 
+포함되어 있습니다. 이는 콘텐츠 URI "패턴"을 정수값으로 매핑합니다. 이 정수값은 특정 패턴에 일치하는 
+콘텐츠 URI 또는 여러 URI에 대해 원하는 작업을 선택하는 데 <code>switch</code> 문에서 사용할 수 있습니다.
+</p>
+<p>
+    콘텐츠 URI 패턴은 와일드카드 문자를 사용하는 콘텐츠 URI와 일치합니다.
+</p>
+    <ul>
+        <li>
+            <strong><code>*</code>:</strong> 모든 길이의 모든 유효한 문자로 구성된 문자열과 일치합니다.
+        </li>
+        <li>
+            <strong><code>#</code>:</strong> 모든 길이의 숫자 문자로 구성된 문자열과 일치합니다.
+        </li>
+    </ul>
+<p>
+    콘텐츠 URI 처리의 설계와 코딩에 대한 예시로서 임의의 제공자를 들어 보겠습니다. 
+이 제공자에는 권한 <code>com.example.app.provider</code>가 있고 
+이 권한이 테이블을 가리키는 다음 콘텐츠 URI를 인식합니다.
+</p>
+<ul>
+    <li>
+        <code>content://com.example.app.provider/table1</code>: <code>table1</code>이라는 테이블입니다.
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table2/dataset1</code>: 
+<code>dataset1</code>이라는 테이블입니다.
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table2/dataset2</code>: 
+<code>dataset2</code>라는 테이블입니다.
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table3</code>: <code>table3</code>이라는 테이블입니다.
+    </li>
+</ul>
+<p>
+    제공자는 추가된 행 ID가 있으면 이런 콘텐츠 URI도 인식합니다.
+예를 들어, <code>table3</code>에서 <code>1</code>이 식별한 행에 대한 
+<code>content://com.example.app.provider/table3/1</code>이 이에 해당됩니다.
+</p>
+<p>
+    가능한 콘텐츠 URI 패턴은 다음과 같습니다.
+</p>
+<dl>
+    <dt>
+        <code>content://com.example.app.provider/*</code>
+    </dt>
+    <dd>
+        제공자에 있는 모든 콘텐츠 URI와 일치합니다.
+    </dd>
+    <dt>
+        <code>content://com.example.app.provider/table2/*</code>:
+    </dt>
+    <dd>
+        테이블 <code>dataset1</code>과
+<code>dataset2</code>의 콘텐츠 URI와 일치하지만 <code>table1</code>이나
+<code>table3</code>에 대한 콘텐츠 URI와 일치하지 않습니다.
+    </dd>
+    <dt>
+        <code>content://com.example.app.provider/table3/#</code>: 
+<code>table3</code>의 단일 행에 대한 콘텐츠 URI와 일치합니다. 예를 들어,
+<code>6</code>이 식별한 행에 대한 <code>content://com.example.app.provider/table3/6</code>이 이에 해당됩니다.
+
+    </dt>
+</dl>
+<p>
+    다음 코드 조각은 {@link android.content.UriMatcher} 작업에서 메서드의 작용 원리를 나타낸 것입니다.
+    이 코드는 테이블에 대한 콘텐츠 URI 패턴 <code>content://&lt;authority&gt;/&lt;path&gt;</code>와 
+단일 행에 대한 콘텐츠 URI 패턴 <code>content://&lt;authority&gt;/&lt;path&gt;/&lt;id&gt;</code>를 사용하여 
+단일 행에 대한 URI와 전체 테이블에 대한 URI를 서로 다르게 처리합니다.
+
+</p>
+<p>
+    {@link android.content.UriMatcher#addURI(String, String, int) addURI()} 메서드는
+권한과 경로를 정수값으로 매핑합니다. 메서드 {@link android.content.UriMatcher#match(Uri)
+match()}는 URI에 대한 정수값을 반환합니다. <code>switch</code> 문이
+전체 테이블을 쿼리할 것인지, 하나의 레코드를 쿼리할 것인지 선택합니다.
+</p>
+<pre class="prettyprint">
+public class ExampleProvider extends ContentProvider {
+...
+    // Creates a UriMatcher object.
+    private static final UriMatcher sUriMatcher;
+...
+    /*
+     * The calls to addURI() go here, for all of the content URI patterns that the provider
+     * should recognize. For this snippet, only the calls for table 3 are shown.
+     */
+...
+    /*
+     * Sets the integer value for multiple rows in table 3 to 1. Notice that no wildcard is used
+     * in the path
+     */
+    sUriMatcher.addURI("com.example.app.provider", "table3", 1);
+
+    /*
+     * Sets the code for a single row to 2. In this case, the "#" wildcard is
+     * used. "content://com.example.app.provider/table3/3" matches, but
+     * "content://com.example.app.provider/table3 doesn't.
+     */
+    sUriMatcher.addURI("com.example.app.provider", "table3/#", 2);
+...
+    // Implements ContentProvider.query()
+    public Cursor query(
+        Uri uri,
+        String[] projection,
+        String selection,
+        String[] selectionArgs,
+        String sortOrder) {
+...
+        /*
+         * Choose the table to query and a sort order based on the code returned for the incoming
+         * URI. Here, too, only the statements for table 3 are shown.
+         */
+        switch (sUriMatcher.match(uri)) {
+
+
+            // If the incoming URI was for all of table3
+            case 1:
+
+                if (TextUtils.isEmpty(sortOrder)) sortOrder = "_ID ASC";
+                break;
+
+            // If the incoming URI was for a single row
+            case 2:
+
+                /*
+                 * Because this URI was for a single row, the _ID value part is
+                 * present. Get the last path segment from the URI; this is the _ID value.
+                 * Then, append the value to the WHERE clause for the query
+                 */
+                selection = selection + "_ID = " uri.getLastPathSegment();
+                break;
+
+            default:
+            ...
+                // If the URI is not recognized, you should do some error handling here.
+        }
+        // call the code to actually do the query
+    }
+</pre>
+<p>
+    또 다른 클래스, {@link android.content.ContentUris}가 
+콘텐츠 URI의 <code>id</code> 부분을 다루기 위한 편의 메서드를 제공합니다. 클래스 {@link android.net.Uri}와
+{@link android.net.Uri.Builder}에는
+기존 {@link android.net.Uri} 개체를 구문 분석하고 새로운 개체를 구축하기 위한 편의 메서드가 포함되어 있습니다.
+</p>
+
+<!-- Implementing the ContentProvider class -->
+<h2 id="ContentProvider">ContentProvider 클래스 구현</h2>
+<p>
+    {@link android.content.ContentProvider} 인스턴스는
+다른 애플리케이션으로부터의 요청을 처리하여 구조화된 데이터 세트로의 액세스를 관리합니다. 
+모든 형태의 액세서가 궁극적으로 {@link android.content.ContentResolver}를 호출하며, 
+그러면 이것이 액세스 권한을 얻기 위해 구체적인 {@link android.content.ContentProvider} 메서드를 호출합니다.
+</p>
+<h3 id="RequiredAccess">필수 메서드</h3>
+<p>
+    추상 클래스 {@link android.content.ContentProvider}는 
+개발자가 나름의 구체적인 하위 클래스의 일부분으로 구현해야만 하는 여섯 가지 추상 메서드를 정의합니다. 이와 같은 메서드는 모두 
+({@link android.content.ContentProvider#onCreate() onCreate()}는 예외) 
+콘텐츠 제공자에 액세스하려 시도 중인 클라이언트 애플리케이션이 호출합니다.
+</p>
+<dl>
+    <dt>
+        {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+query()}
+    </dt>
+    <dd>
+        제공자에서 데이터를 검색합니다. 인수를 사용하여 쿼리할 테이블과 반환할 열/행, 결과의 정렬 순서를 선택합니다.
+
+        데이터를 {@link android.database.Cursor} 개체로 반환합니다.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}
+    </dt>
+    <dd>
+        제공자에 새로운 행을 삽입합니다. 인수를 사용하여 대상 테이블을 선택하고 
+사용할 열 값을 가져옵니다. 
+새로 삽입된 행에 대한 콘텐츠 URI를 반환합니다.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#update(Uri, ContentValues, String, String[])
+update()}
+    </dt>
+    <dd>
+        제공자 내의 기존 행을 업데이트합니다. 인수를 사용하여 
+업데이트할 테이블과 행을 선택하고 업데이트한 열 값을 가져옵니다. 업데이트한 행 개수를 반환합니다.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()}
+    </dt>
+    <dd>
+        제공자에서 행을 삭제합니다. 인수를 사용하여 삭제할 테이블과 행을 선택합니다.
+ 삭제한 행 개수를 반환합니다.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#getType(Uri) getType()}
+    </dt>
+    <dd>
+        콘텐츠 URI에 상응하는 MIME 유형을 반환합니다. 이 메서드는 
+<a href="#MIMETypes">콘텐츠 제공자 MIME 유형</a> 섹션에 더 자세하게 설명되어 있습니다.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#onCreate() onCreate()}
+    </dt>
+    <dd>
+        제공자를 초기화합니다. Android 시스템은 제공자를 생성한 직후 
+이 메서드를 호출합니다. 
+{@link android.content.ContentResolver} 개체가 제공자에 액세스하려고 시도할 때까지는 제공자가 생성된 것이 아니라는 점을 유의하십시오.
+    </dd>
+</dl>
+<p>
+    이와 같은 메서드에는 동일하게 이름 붙여진 
+{@link android.content.ContentResolver} 메서드와 같은 서명이 있다는 것을 눈여겨 보십시오.
+</p>
+<p>
+    이러한 메서드의 구현에는 다음과 같은 내용을 감안해야 합니다.
+</p>
+<ul>
+    <li>
+        이런 메서드는 모두({@link android.content.ContentProvider#onCreate() onCreate()}는 예외)
+ 한꺼번에 여러 스레드가 호출할 수 있으므로, 스레드로부터 안전해야 합니다. 
+다중 스레드에 대한 자세한 내용은 
+<a href="{@docRoot}guide/components/processes-and-threads.html">
+프로세스 및 스레드</a> 주제를 참조하십시오.
+    </li>
+    <li>
+        {@link android.content.ContentProvider#onCreate()
+onCreate()}에서는 긴 작업을 수행하는 것을 삼가는 것이 좋습니다. 실제로 필요할 때까지 초기화 작업을 미뤄두십시오.
+        이 내용은 <a href="#OnCreate">onCreate() 메서드 구현</a>
+섹션에서 더욱 자세히 논의합니다.
+    </li>
+    <li>
+        이와 같은 메서드는 반드시 구현해야 하는 것이지만, 
+예상되는 데이터 유형을 반환하는 것 외에 달리 코드가 해야 할 일은 없습니다. 
+예를 들어 몇몇 테이블에 다른 애플리케이션이 데이터를 삽입하지 못하도록 방지하려고 합니다. 이렇게 하려면,
+{@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}로의 
+호출을 무시하고 0을 반환하면 됩니다.
+    </li>
+</ul>
+<h3 id="Query">query() 메서드 구현</h3>
+<p>
+    
+{@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+ContentProvider.query()} 메서드는 {@link android.database.Cursor} 개체를 반환해야 하고, 그렇지 못할 경우
+{@link java.lang.Exception}을 발생시킵니다. SQLite 데이터베이스를 데이터 저장소로 사용하는 경우,
+{@link android.database.sqlite.SQLiteDatabase} 클래스의 <code>query()</code> 메서드 중 하나로 반환되는 {@link android.database.Cursor}를
+반환하기만 하면 됩니다.
+    쿼리가 어느 행에도 일치하지 않으면, {@link android.database.Cursor#getCount()} 메서드가 0을 반환하는
+{@link android.database.Cursor} 인스턴스를 반환해야 합니다.
+    <code>null</code>을 반환하는 것은 쿼리 과정 중에 내부 오류가 발생했을 때뿐입니다.
+</p>
+<p>
+    SQLite 데이터베이스를 데이터 저장소로 사용하지 않는 경우, {@link android.database.Cursor}의
+ 구체적인 하위 클래스 중 하나를 사용하십시오. 예를 들어, {@link android.database.MatrixCursor} 클래스는
+각 행이 {@link java.lang.Object} 배열인 커서를 구현합니다. 이 클래스에서는
+{@link android.database.MatrixCursor#addRow(Object[]) addRow()}를 사용하여 새 행을 추가합니다.
+</p>
+<p>
+    Android 시스템이 프로세스 경계를 가로질러 {@link java.lang.Exception}을
+ 통신으로 전달할 수 있어야 한다는 점을 유의하십시오. Android가 이 작업을 할 수 있는 경우는 
+쿼리 오류 처리에 유용할 수 있는 다음과 같은 예외에 해당될 때입니다.
+</p>
+<ul>
+    <li>
+        {@link java.lang.IllegalArgumentException}
+(제공자가 유효하지 않은 콘텐츠 URI를 수신할 경우 이 예외를 발생시킬 수 있습니다.)
+    </li>
+    <li>
+        {@link java.lang.NullPointerException}
+    </li>
+</ul>
+<h3 id="Insert">insert() 메서드 구현</h3>
+<p>
+    {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} 메서드는
+{@link android.content.ContentValues} 인수의 값을 이용하여
+적절한 테이블에 새 행을 추가합니다. 열 이름이 {@link android.content.ContentValues} 인수에 없는 경우,
+제공자 코드 또는 데이터베이스 스키마 내에 그에 대한 기본값을 제공하는 것이 좋을 수도 있습니다.
+
+</p>
+<p>
+    이 메서드가 새 행에 대한 콘텐츠 URI를 반환하는 것이 정상입니다. 이것을 구성하려면 새 행의 
+<code>_ID</code>(또는 다른 기본 키) 값을 테이블의 콘텐츠 URI에 추가하며, 이때 
+{@link android.content.ContentUris#withAppendedId(Uri, long) withAppendedId()}를 사용합니다.
+</p>
+<h3 id="Delete">delete() 메서드 구현</h3>
+<p>
+    {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()} 메서드의 경우
+ 데이터 저장소에서 물리적으로 행을 삭제하지 않아도 됩니다. 
+제공자와 동기화 어댑터를 함께 사용하고 있는 경우, 
+삭제된 행을 완전히 제거하기보다는 "삭제" 플래그로 표시하는 방법을 고려해볼 만합니다. 
+동기화 어댑터가 삭제된 행을 확인한 다음, 이를 제공자에서 삭제하기 전에 우선 서버에서 제거합니다.
+</p>
+<h3 id="Update">Update() 메서드 구현</h3>
+<p>
+    {@link android.content.ContentProvider#update(Uri, ContentValues, String, String[])
+update()} 메서드는{@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}가 사용하는 것과 같은 {@link android.content.ContentValues} 인수와
+
+{@link android.content.ContentProvider#delete(Uri, String, String[]) delete()}와 {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+ContentProvider.query()}가 사용하는 것과 같은 <code>selection</code> 및 <code>selectionArgs</code> 인수를
+취합니다.
+ 이 때문에 이와 같은 메서드 사이에서 코드를 다시 사용할 수 있게 해주기도 합니다.
+</p>
+<h3 id="OnCreate">onCreate() 메서드 구현</h3>
+<p>
+    Android 시스템은 제공자를 시작할 때 {@link android.content.ContentProvider#onCreate()
+onCreate()}를 호출합니다. 이 메서드에서는 빠르게 실행되는 초기화만 수행해야 하며, 
+데이터베이스 생성과 데이터 로딩은 제공자가 실제로 데이터에 대한 요청을 받을 때까지 미뤄두어야 합니다.
+ 
+{@link android.content.ContentProvider#onCreate() onCreate()}에서 긴 작업을 수행하면
+제공자의 시동 속도가 느려집니다. 이 때문에 제공자에서 다른 애플리케이션으로 전달되는 응답도 따라서 느려집니다.
+
+</p>
+<p>
+    예를 들어, SQLite 데이터베이스를 사용하는 경우
+{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()}에서 
+새로운 {@link android.database.sqlite.SQLiteOpenHelper} 개체를 생성하고,
+그런 다음 데이터베이스를 처음 열 때 SQL 테이블을 생성할 수 있습니다. 이를 용이하게 하기 위해
+{@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase
+getWritableDatabase()}를 처음 호출하면 이것이 자동으로 
+{@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+SQLiteOpenHelper.onCreate()} 메서드를 호출합니다.
+</p>
+<p>
+    다음 두 개의 조각은
+{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()}와
+{@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+SQLiteOpenHelper.onCreate()} 사이의 상호 작용을 나타낸 것입니다. 첫 번째 조각은
+{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()}의 구현입니다.
+</p>
+<pre class="prettyprint">
+public class ExampleProvider extends ContentProvider
+
+    /*
+     * Defines a handle to the database helper object. The MainDatabaseHelper class is defined
+     * in a following snippet.
+     */
+    private MainDatabaseHelper mOpenHelper;
+
+    // Defines the database name
+    private static final String DBNAME = "mydb";
+
+    // Holds the database object
+    private SQLiteDatabase db;
+
+    public boolean onCreate() {
+
+        /*
+         * Creates a new helper object. This method always returns quickly.
+         * Notice that the database itself isn't created or opened
+         * until SQLiteOpenHelper.getWritableDatabase is called
+         */
+        mOpenHelper = new MainDatabaseHelper(
+            getContext(),        // the application context
+            DBNAME,              // the name of the database)
+            null,                // uses the default SQLite cursor
+            1                    // the version number
+        );
+
+        return true;
+    }
+
+    ...
+
+    // Implements the provider's insert method
+    public Cursor insert(Uri uri, ContentValues values) {
+        // Insert code here to determine which table to open, handle error-checking, and so forth
+
+        ...
+
+        /*
+         * Gets a writeable database. This will trigger its creation if it doesn't already exist.
+         *
+         */
+        db = mOpenHelper.getWritableDatabase();
+    }
+}
+</pre>
+<p>
+    그 다음 조각은
+도우미 클래스를 포함한 {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+SQLiteOpenHelper.onCreate()}의 구현입니다.
+</p>
+<pre class="prettyprint">
+...
+// A string that defines the SQL statement for creating a table
+private static final String SQL_CREATE_MAIN = "CREATE TABLE " +
+    "main " +                       // Table's name
+    "(" +                           // The columns in the table
+    " _ID INTEGER PRIMARY KEY, " +
+    " WORD TEXT"
+    " FREQUENCY INTEGER " +
+    " LOCALE TEXT )";
+...
+/**
+ * Helper class that actually creates and manages the provider's underlying data repository.
+ */
+protected static final class MainDatabaseHelper extends SQLiteOpenHelper {
+
+    /*
+     * Instantiates an open helper for the provider's SQLite data repository
+     * Do not do database creation and upgrade here.
+     */
+    MainDatabaseHelper(Context context) {
+        super(context, DBNAME, null, 1);
+    }
+
+    /*
+     * Creates the data repository. This is called when the provider attempts to open the
+     * repository and SQLite reports that it doesn't exist.
+     */
+    public void onCreate(SQLiteDatabase db) {
+
+        // Creates the main table
+        db.execSQL(SQL_CREATE_MAIN);
+    }
+}
+</pre>
+
+
+<!-- Implementing ContentProvider MIME Types -->
+<h2 id="MIMETypes">ContentProvider MIME 유형 구현</h2>
+<p>
+    {@link android.content.ContentProvider} 클래스에는 MIME 유형을 반환하는 두 가지 메서드가 있습니다.
+</p>
+<dl>
+    <dt>
+        {@link android.content.ContentProvider#getType(Uri) getType()}
+    </dt>
+    <dd>
+        모든 제공자에 대해 구현해야 하는 필수 메서드 중 하나입니다.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}
+    </dt>
+    <dd>
+        제공자가 파일을 제공하는 경우 구현해야 하는 메서드입니다.
+    </dd>
+</dl>
+<h3 id="TableMIMETypes">테이블의 MIME 유형</h3>
+<p>
+    {@link android.content.ContentProvider#getType(Uri) getType()} 메서드는
+콘텐츠 URI 인수가 반환하는 데이터 유형을 설명하는 MIME 형식의 {@link java.lang.String}을 반환합니다.
+ {@link android.net.Uri} 인수는 특정 URI라기보다 패턴일 수 있습니다.
+이 경우, 이 패턴과 일치하는 콘텐츠 URI와 연관된 유형의 데이터를 반환해야 합니다.
+
+</p>
+<p>
+    텍스트, HTML 또는 JPEG와 같은 보편적인 유형의 데이터라면
+{@link android.content.ContentProvider#getType(Uri) getType()}이 
+해당 데이터에 대한 표준 MIME 유형을 반환하는 것이 정상입니다. 이러한 표준 유형의 전체 목록은
+<a href="http://www.iana.org/assignments/media-types/index.htm">IANA MIME 미디어 유형</a>
+웹사이트에서 확인할 수 있습니다.
+</p>
+<p>
+    테이블 데이터의 행 하나 또는 여러 행을 가리키는 콘텐츠 URI의 경우,
+{@link android.content.ContentProvider#getType(Uri) getType()}이 Android의 공급업체별 MIME 형식에서
+MIME 형식을 반환해야 합니다.
+</p>
+<ul>
+    <li>
+        유형 부분: <code>vnd</code>
+    </li>
+    <li>
+        하위 유형 부분:
+        <ul>
+            <li>
+    URI 패턴이 하나의 행에 대한 것일 경우: <code>android.cursor.<strong>item</strong>/</code>
+            </li>
+            <li>
+    URI 패턴이 하나 이상의 행에 대한 것일 경우: <code>android.cursor.<strong>dir</strong>/</code>
+            </li>
+        </ul>
+    </li>
+    <li>
+        제공자별 부분: <code>vnd.&lt;name&gt;</code>.<code>&lt;type&gt;</code>
+        <p>
+            개발자가 <code>&lt;name&gt;</code>과 <code>&lt;type&gt;</code>을 제공합니다.
+            <code>&lt;name&gt;</code> 값은 전체적으로 고유해야 하고,
+<code>&lt;type&gt;</code> 값은 상응하는 URI 패턴에 고유해야
+합니다. <code>&lt;name&gt;</code>으로 좋은 예는 회사 이름이나 
+애플리케이션의 Android 패키지 이름을 들 수 있습니다. 
+<code>&lt;type&gt;</code>으로 좋은 예는 URI와 연관된 테이블을 식별하는 
+문자열을 들 수 있습니다.
+        </p>
+
+    </li>
+</ul>
+<p>
+    예를 들어 어떤 제공자의 권한이 
+<code>com.example.app.provider</code>이고, 이것이 
+<code>table1</code>이라는 테이블을 노출하는 경우, <code>table1</code>의 여러 행에 대한 MIME 유형은 다음과 같습니다.
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>/vnd.com.example.provider.table1
+</pre>
+<p>
+    <code>table1</code>의 행 하나의 경우, MIME 유형은 다음과 같습니다.
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>/vnd.com.example.provider.table1
+</pre>
+<h3 id="FileMIMETypes">파일의 MIME 유형</h3>
+<p>
+    제공자가 파일을 제공하는 경우,
+{@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}를 구현합니다.
+    이 메서드는 제공자가 주어진 콘텐츠 URI에 대해 반환할 수 있는 파일에 대한 MIME 유형의 {@link java.lang.String} 배열을 반환합니다. 
+제공하는 MIME 유형을 MIME 유형 필터 인수 기준으로 필터링해야 
+클라이언트가 처리하고자 하는 MIME 유형만 반환할 수 있습니다.
+</p>
+<p>
+    예를 들어, 사진 이미지를 <code>.jpg</code>,
+<code>.png</code> 및 <code>.gif</code> 형식의 파일로 제공하는 제공자가 있다고 하겠습니다.
+    애플리케이션이 필터 문자열 <code>image/*</code>("이미지"인 어떤 것)로 {@link android.content.ContentResolver#getStreamTypes(Uri, String)
+ContentResolver.getStreamTypes()}를 호출하면
+
+{@link android.content.ContentProvider#getStreamTypes(Uri, String)
+ContentProvider.getStreamTypes()} 메서드가 다음과 같은 배열을 반환하는 것이 정상입니다.
+</p>
+<pre>
+{ &quot;image/jpeg&quot;, &quot;image/png&quot;, &quot;image/gif&quot;}
+</pre>
+<p>
+    앱이 <code>.jpg</code> 파일에만 관심이 있는 경우에는 
+필터 문자열 <code>*\/jpeg</code>으로 {@link android.content.ContentResolver#getStreamTypes(Uri, String)
+    ContentResolver.getStreamTypes()}를 호출할 수 있습니다. 그러면 
+    {@link android.content.ContentProvider#getStreamTypes(Uri, String)
+    ContentProvider.getStreamTypes()}가 다음과 같이 반환하는 것이 정상입니다.
+<pre>
+{&quot;image/jpeg&quot;}
+</pre>
+<p>
+    제공자가 필터 문자열에서 요청한 MIME 유형 중 제공하는 것이 없는 경우, 
+{@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}가
+ <code>null</code>을 반환하는 것이 정상입니다.
+</p>
+
+
+<!--  Implementing a Contract Class -->
+<h2 id="ContractClass">계약 클래스 구현</h2>
+<p>
+    계약 클래스는 <code>public final</code> 클래스로, 이 안에 URI, 열 이름, MIME 유형의 
+상수 정의 및 제공자에 관련된 다른 메타 데이터가 들어 있습니다. 
+이 클래스는 URI, 열 이름 등의 실제 값에 변경된 내용이 있더라도
+ 제공자에 올바르게 액세스할 수 있도록 보장하여 제공자와 
+다른 애플리케이션 사이의 계약을 확립합니다.
+</p>
+<p>
+    계약 클래스가 개발자에게 유용한 이유는 또 있습니다. 이 클래스는 보통 자신의 상수 이름으로 
+니모닉 이름을 가지기 때문에 개발자가 열 이름 또는 URI에 잘못된 값을 사용할 가능성이 덜합니다. 
+이것도 클래스의 일종이기 때문에 Javadoc 문서를 포함할 수 있습니다. 
+Eclipse와 같은 통합 개발 환경은 계약 클래스의 상수 이름을 자동 완성하고
+해당 상수에 대한 Javadoc을 표시할 수 있습니다.
+</p>
+<p>
+    개발자가 애플리케이션에서 계약 클래스의 클래스 파일에 액세스할 수는 없지만 
+여러분이 제공하는 <code>.jar</code> 파일에서 이를 애플리케이션 안으로 정적으로 컴파일링할 수 있습니다.
+</p>
+<p>
+    {@link android.provider.ContactsContract} 클래스와 
+이에 중첩된 클래스가 계약 클래스의 예시입니다.
+</p>
+<h2 id="Permissions">콘텐츠 제공자 권한 구현</h2>
+<p>
+    Android 시스템의 모든 측면에 대한 권한과 액세스는
+<a href="{@docRoot}guide/topics/security/security.html">보안 및 권한</a> 주제에 설명되어 있습니다.
+    <a href="{@docRoot}guide/topics/data/data-storage.html">데이터 저장소</a> 주제에서도 
+다양한 유형의 저장소에 적용되는 보안 및 권한을 설명하고 있습니다.
+    간략히 말해 요점은 다음과 같습니다.
+</p>
+<ul>
+    <li>
+        기본적으로, 기기의 내부 저장소에 저장된 데이터 파일은 
+본인의 애플리케이션과 제공자 전용입니다.
+    </li>
+    <li>
+        본인이 생성한 {@link android.database.sqlite.SQLiteDatabase} 데이터베이스는 
+본인의 애플리케이션과 제공자만의 비공개 데이터입니다.
+    </li>
+    <li>
+        기본적으로 외부 저장소에 저장하는 데이터 파일은 <em>공개</em>이고
+<em>누구나 읽을 수 있습니다</em>. 외부 저장소에 있는 파일로의 액세스를 제공하는 데 콘텐츠 제공자를 쓸 수는 
+없습니다. 다른 애플리케이션이 다른 API 호출을 사용하여 해당 파일을 읽고 쓸 수 있기 때문입니다.
+    </li>
+    <li>
+        기기의 내부 저장소에 있는 파일 또는 SQLite 데이터베이스를 열거나 생성하기 위한 메서드 호출은
+다른 모든 애플리케이션에 읽기 및 쓰기 액세스 권한을 허가할 가능성이 있습니다. 
+내부 파일이나 데이터베이스를 제공자의 리포지토리로 사용하고
+"누구나 읽을 수 있는" 또는 "누구나 쓸 수 있는" 액세스를 부여하면 
+매니페스트에서 제공자에 대해 설정한 권한이 데이터를 보호하지 못합니다. 
+내부 저장소 안에 있는 파일과 데이터베이스에 대한기본 액세스는 "비공개"이며, 제공자의 리포지토리가 이것을 변경하면 안 됩니다.
+    </li>
+</ul>
+<p>
+    데이터로의 액세스를 제어하기 위해 콘텐츠 제공자 권한을 쓰고자 하는 경우, 
+데이터를 내부 파일, SQLite 데이터베이스 또는 "클라우드"(예: 원격 서버) 안의 
+내부 파일로 저장해야 하고, 파일과 데이터베이스를 애플리케이션만의 비공개로 유지해야 합니다.
+</p>
+<h3>권한 구현</h3>
+<p>
+    기본 데이터가 비공개라고 하더라도 모든 애플리케이션이 제공자를 읽고 제공자에 쓸 수 있습니다. 
+기본적으로 제공자에는 권한이 설정되어 있지 않기 때문입니다. 이를 변경하려면,
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+    &lt;provider&gt;</a></code> 요소의 속성이나 하위 요소를 사용하여
+매니페스트 파일에 있는 제공자의 권한을 설정합니다. 권한은 제공자 전체에 적용되도록 설정할 수도 있고, 
+특정 테이블에, 또는 심지어 특정 레코드에 적용되게 할 수도 있고 세 가지 모두를 택할 수도 있습니다.
+</p>
+<p>
+    제공자에 대한 권한은 매니페스트 파일에 있는 하나 이상의 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">
+    &lt;permission&gt;</a></code> 요소로 정의합니다. 
+제공자에 고유한 권한을 설정하려면
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#nm">
+    android:name</a></code> 속성에 Java 스타일 범위를 사용합니다. 예를 들어 읽기 권한의 이름을
+<code>com.example.app.provider.permission.READ_PROVIDER</code>로 지정합니다.
+
+</p>
+<p>
+    다음 목록은 제공자 권한의 범위를 설명한 것입니다. 
+제공자 전체에 적용되는 권한부터 시작하여 점차 세분화된 권한이 됩니다.
+    보다 세부화된 권한이 범위가 큰 것보다 우선합니다.
+</p>
+<dl>
+    <dt>
+        단일 읽기-쓰기 제공자 수준 권한
+    </dt>
+    <dd>
+        제공자 전체로의 읽기와 쓰기 액세스 양쪽 모두를 제어하는 하나의 권한으로, 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code> 요소의 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+        android:permission</a></code> 속성으로 지정됩니다.
+    </dd>
+    <dt>
+        별도의 읽기 및 쓰기 제공자 수준 권한
+    </dt>
+    <dd>
+        제공자 전체에 대한 읽기 권한과 쓰기 권한입니다. 이들 권한은
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code> 요소의 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">
+        android:readPermission</a></code>와
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">
+        android:writePermission</a></code> 속성으로
+지정합니다. 이들이
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+        android:permission</a></code>에서 요구하는 권한보다 우선합니다.
+    </dd>
+    <dt>
+        경로 수준 권한
+    </dt>
+    <dd>
+        제공자의 콘텐츠 URI에 대한 읽기, 쓰기 또는 읽기/쓰기 권한입니다. 제어하고자 하는 각 URI를 직접 지정하되, 
+이때 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code> 요소의 
+<code><a href="{@docRoot}guide/topics/manifest/path-permission-element.html">
+        &lt;path-permission&gt;</a></code> 하위 요소를 사용합니다. 지정하는 콘텐츠 URI마다 
+읽기/쓰기 권한, 읽기 권한 또는 쓰기 권한을 하나씩 지정하거나 셋 모두를 지정할 수 있습니다. 
+읽기 및 쓰기 권한이 읽기/쓰기 권한보다 우선합니다. 
+또한, 경로 수준 권한이 제공자 수준 권한보다 우선합니다.
+    </dd>
+    <dt>
+        임시 권한
+    </dt>
+    <dd>
+        애플리케이션에 임시 액세스를 허용하는 권한 수준입니다.
+해당 애플리케이션에 일반적으로 요구되는 권한이 없더라도 무관합니다. 
+임시 액세스 기능은 매니페스트에서 요청해야 하는
+권한과 애플리케이션 개수를 줄여줍니다. 임시 권한을 사용하는 경우, 
+제공자에 대하여 "영구" 권한을 필요로하는 애플리케이션은 
+모든 데이터에 지속적으로 액세스하는 것들뿐입니다.
+        <p>
+            이메일 제공자와 앱을 구현할 때 필요한 권한을 예로 들어 보겠습니다. 
+외부 이미지 뷰어 애플리케이션으로 하여금 제공자에서 보낸 사진 첨부 파일을 
+표시하도록 허용하고자 한다고 가정합니다. 권한을 요구하지 않고 이미지 뷰어에 필수 액세스를 부여하려면, 
+사진에 대한 콘텐츠 URI에 해단되는 임시 권한을 설정하십시오. 
+사용자가 사진을 표시하기를 원할 때 앱이 사진의 콘텐츠 URI와 권한 플래그를 포함하는 인텐트를
+이미지 뷰어에 보내도록 이메일 앱을 설계합니다. 그러면 해당 이미지 뷰어가 
+이메일 제공자에 사진 검색을 쿼리할 수 있으며, 이 뷰어에 제공자에 대한 정상적인 읽기 권한이 없더라도 무방합니다.
+
+        </p>
+        <p>
+            임시 권한을 사용하려면,
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> 요소의 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+            android:grantUriPermissions</a></code> 속성을 설정하거나
+하나 이상의
+<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
+            &lt;grant-uri-permission&gt;</a></code> 하위 요소를
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> 요소에 추가하면 됩니다. 임시 권한을 사용하는 경우, 
+제공자에서 콘텐츠 URI에 대한 지원을 제거할 때마다 {@link android.content.Context#revokeUriPermission(Uri, int)
+            Context.revokeUriPermission()}을 호출해야 합니다. 
+그러면 콘텐츠 URI가 임시 권한과 연관됩니다.
+        </p>
+        <p>
+            속성의 값에 따라 제공자에 액세스 가능한 정도가 결정됩니다.
+            속성이 <code>true</code>로 설정되어 있는 경우라면 
+시스템이 제공자 전체에 임시 권한을 허용하며, 제공자 수준 또는 
+경로 수준 권한에서 요구하는 다른 모든 권한을 재정의합니다.
+        </p>
+        <p>
+            이 플래그가 <code>false</code>로 설정되면, 반드시 
+<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
+            &lt;grant-uri-permission&gt;</a></code> 하위 요소를
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> 요소에 추가해야 합니다. 각 하위 요소는 임시 권한을 허용한 
+콘텐츠 URI(하나 또는 여러 개)를 나타냅니다.
+        </p>
+        <p>
+            애플리케이션에 임시 액세스를 위임하려면, 인텐트에
+{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION} 또는
+{@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION} 플래그, 또는 둘 모두가 들어 있어야 합니다. 이들은 
+{@link android.content.Intent#setFlags(int) setFlags()} 메서드로 설정됩니다.
+        </p>
+        <p>
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+            android:grantUriPermissions</a></code> 속성이 존재하지 않으면
+<code>false</code>인 것으로 가정합니다.
+        </p>
+    </dd>
+</dl>
+
+
+
+<!-- The Provider Element -->
+<h2 id="ProviderElement">&lt;provider&gt; 요소</h2>
+<p>
+    {@link android.app.Activity}와 {@link android.app.Service} 구성 요소와 마찬가지로,
+{@link android.content.ContentProvider}의 하위 클래스는
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+    &lt;provider&gt;</a></code> 요소를 사용하여 매니페스트 파일에서
+애플리케이션에 대해 정의되어야 합니다. Android 시스템이
+해당 요소에서 다음과 같은 정보를 가져옵니다.
+<dl>
+    <dt>
+        권한
+(<a href="{@docRoot}guide/topics/manifest/provider-element.html#auth">{@code
+android:authorities}</a>)
+    </dt>
+    <dd>
+        시스템 내에서 제공자 전체를 식별하는 상징적 이름입니다. 이 속성은
+
+<a href="#ContentURI">콘텐츠 URI 설계</a> 섹션에서 자세히 설명되어 있습니다.
+    </dd>
+    <dt>
+        제공자 클래스 이름
+(<code>
+<a href="{@docRoot}guide/topics/manifest/provider-element.html#nm">android:name</a>
+        </code>)
+    </dt>
+    <dd>
+        {@link android.content.ContentProvider}를 구현하는 클래스입니다. 이 클래스는
+
+<a href="#ContentProvider">ContentProvider 클래스 구현</a> 섹션에 자세히 설명되어 있습니다.
+    </dd>
+    <dt>
+        권한
+    </dt>
+    <dd>
+        제공자의 데이터에 액세스하기 위해 다른 애플리케이션이 
+반드시 가지고 있어야 하는 권한을 나타내는 속성입니다.
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+                android:grantUriPermssions</a></code>: 임시 권한 플래그입니다.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+                android:permission</a></code>: 단일 제공자 전범위 읽기/쓰기 권한입니다.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">
+                android:readPermission</a></code>: 제공자 전범위 읽기 권한입니다.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">
+                android:writePermission</a></code>: 제공자 전범위 쓰기 권한입니다.
+            </li>
+        </ul>
+        <p>
+            각종 권한과 그에 상응하는 속성은 
+
+<a href="#Permissions">콘텐츠 제공자 권한 구현</a> 섹션에 자세히 설명되어 있습니다.
+        </p>
+    </dd>
+    <dt>
+        시작 및 제어 속성
+    </dt>
+    <dd>
+        이와 같은 속성은 Android 시스템이 제공자를 시작하는 방법과 시점, 
+제공자의 프로세스 특징과 기타 런타임 설정 등을 결정합니다.
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#enabled">
+                android:enabled</a></code>: 시스템이 제공자를 시작할 수 있게 해주는 플래그입니다.
+            </li>
+              <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#exported">
+                android:exported</a></code>: 다른 애플리케이션이 이 제공자를 사용할 수 있게 해주는 플래그입니다.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#init">
+                android:initOrder</a></code>: 같은 프로세스 내의 다른 제공자와 비교하여 
+이 제공자가 시작되어야 하는 순서입니다.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#multi">
+                android:multiProcess</a></code>: 클라이언트를 호출하는 것과 
+같은 프로세스에서 시스템이 제공자를 시작할 수 있게 해주는 플래그입니다.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#proc">
+                android:process</a></code>: 제공자가 실행해야 하는 프로세스의
+이름입니다.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#sync">
+                android:syncable</a></code>: 제공자의 데이터가 
+서버에 있는 데이터와 동기화될 예정임을 나타내는 플래그입니다.
+            </li>
+        </ul>
+        <p>
+            이 속성은
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code>
+요소에 대한 개발자 가이드 주제에 상세하게 기록되어 있습니다.
+        </p>
+    </dd>
+    <dt>
+        정보 속성
+    </dt>
+    <dd>
+        제공자에 대한 선택 항목 아이콘 및 레이블입니다.
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#icon">
+                android:icon</a></code>: 제공자의 아이콘이 들어 있는 드로어블 리소스입니다.
+                이 아이콘은 
+<em>설정</em> &gt; <em>앱</em> &gt; <em>모두</em>에 있는 앱 목록에서 제공자의 레이블 옆에 표시됩니다.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#label">
+                android:label</a></code>: 제공자 또는 그 데이터, 또는 둘 모두를 설명하는 정보 레이블입니다.
+ 이 레이블은
+<em>설정</em> &gt; <em>앱</em> &gt; <em>모두</em>에 있는 앱 목록에 표시됩니다.
+            </li>
+        </ul>
+        <p>
+            이 속성은
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code>요소에 대한 개발자 가이드 주제에 상세하게 기록되어 있습니다.
+        </p>
+    </dd>
+</dl>
+
+<!-- Intent Access -->
+<h2 id="Intents">인텐트 및 데이터 액세스</h2>
+<p>
+    애플리케이션이 콘텐츠 제공자에 간접적으로 액세스하려면 {@link android.content.Intent}를 사용하면 됩니다.
+    이 애플리케이션은 {@link android.content.ContentResolver} 또는 
+{@link android.content.ContentProvider}의 메서드 중 어느 하나도 호출하지 않습니다. 
+대신, 액티비티를 시작하는 인텐트를 전송합니다. 이 인텐트는 제공자가 소유한 애플리케이션의 일부인 경우가 많습니다. 
+대상 액티비티가 데이터를 자체 UI에서 검색하고 표시하는 역할을 맡습니다. 
+인텐트의 동작에 따라 대상 액티비티가 사용자에게 프롬프트를 표시하여 제공자의 데이터를 수정하도록 할 수도 있습니다.
+    인텐트에는 대상 액티비티가 UI에 표시하는 "추가" 데이터가 들어 있을 수도 있습니다.
+그러면 사용자에게 이 데이터를 변경할 수 있는 옵션이 주어지고, 그런 다음 이를 사용하여 
+제공자 내의 데이터를 수정할 수 있습니다.
+</p>
+<p>
+
+</p>
+<p>
+    데이터 무결성을 보장하는 데 유용한 것을 원하면 인텐트 액세스를 사용하는 것이 좋습니다. 
+엄격하게 정의된 비즈니스 논리에 따라 데이터가 삽입, 업데이트되고 삭제되는 것이 제공자를 크게 좌우할 수도 있습니다. 
+이런 경우에 해당되면, 다른 애플리케이션에 데이터를 직접 수정하도록 허용하면 데이터가 잘못되는 
+결과를 초래할 수 있습니다. 개발자들에게 인텐트 액세스 사용을 허용하려면, 그 내용을 철저히 기록해두어야 합니다.
+    개발자들에게 자기 애플리케이션의 UI를 사용한 인텐트 액세스가 
+코드로 데이터를 수정하려 시도하는 것보다 나은 이유를 설명해주십시오.
+</p>
+<p>
+    제공자의 데이터를 수정하고자 하는 수신되는 인텐트 처리도 다른 인텐트 처리와 다를 바가 없습니다.
+ 인텐트 사용에 대한 자세한 내용은 
+<a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a> 주제를 읽으면 확인할 수 있습니다.
+</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/providers/content-providers.jd b/docs/html-intl/intl/ko/guide/topics/providers/content-providers.jd
new file mode 100644
index 0000000..ce98840
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/providers/content-providers.jd
@@ -0,0 +1,108 @@
+page.title=콘텐츠 제공자
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+
+<!-- In this document -->
+<h2>주제</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        콘텐츠 제공자 기본 정보</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+        콘텐츠 제공자 생성</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/calendar-provider.html">캘린더 제공자</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/contacts-provider.html">연락처 제공자</a>
+    </li>
+</ol>
+
+    <!-- Related Samples -->
+<h2>관련 샘플</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}resources/samples/ContactManager/index.html">
+            연락처 관리자</a> 애플리케이션
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html">
+        "커서(피플 애플리케이션)"
+        </a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html">
+        "커서(전화)"</a>
+        </li>
+        <li>
+            <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+            샘플 동기화 어댑터</a>
+        </li>
+    </ol>
+</div>
+</div>
+<p>
+    콘텐츠 제공자는 구조화된 데이터 세트로의 액세스를 관리합니다. 
+데이터를 캡슐화하여 데이터 보안을 정의하는 데 필요한 메커니즘을 제공하기도 합니다. 
+콘텐츠 제공자는 한 프로세스의 데이터에 다른 프로세스에서 실행 중인 코드를 연결하는 표준 인터페이스입니다.
+</p>
+<p>
+    콘텐츠 제공자 내의 데이터에 액세스하고자 하는 경우, 
+애플리케이션의 {@link android.content.Context}에 있는
+{@link android.content.ContentResolver} 개체를 사용하여 클라이언트로서 제공자와 통신을 주고받으면 됩니다.
+    {@link android.content.ContentResolver} 개체가 제공자 개체와 통신하며, 이 개체는 
+{@link android.content.ContentProvider}를 구현하는 클래스의 인스턴스입니다. 
+제공자 개체가 클라이언트로부터 데이터 요청을 받아 요청된 작업을 수행하며 결과를 반환합니다.
+
+</p>
+<p>
+    데이터를 다른 애플리케이션과 공유할 생각이 없으면 나름의 제공자를 개발하지 않아도 됩니다.
+ 그러나, 자체 애플리케이션에서 사용자 지정 검색 제안을 제공하려면 나름의 제공자가 꼭 필요합니다.
+ 또한, 복잡한 데이터나 파일을 자신의 애플리케이션에서 다른 애플리케이션으로 복사하여 붙여넣고자 하는 경우에도 
+나름의 제공자가 필요합니다.
+</p>
+<p>
+    Android 자체에 오디오, 동영상, 이미지 및 개인 연락처 정보 등의 데이터를 관리하는 콘텐츠 제공자가 
+포함되어 있습니다. 그중 몇 가지를 목록으로 나열한 것을 
+
+<code><a href="{@docRoot}reference/android/provider/package-summary.html">android.provider</a>
+    </code> 패키지에 대한 참조 문서에서 확인할 수 있습니다. 이와 같은 제공자는 몇 가지 제약이 있지만, 
+어느 Android 애플리케이션에나 액세스할 수 있습니다.
+</p><p>
+    다음 주제에서는 콘텐츠 제공자에 대해 좀 더 자세히 설명합니다.
+</p>
+<dl>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        콘텐츠 제공자 기본 정보</a></strong>
+    </dt>
+    <dd>
+        데이터가 여러 개의 표로 정리되어 있을 때 콘텐츠 제공자 내의 데이터에 액세스하는 방법입니다.
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+        콘텐츠 제공자 생성</a></strong>
+    </dt>
+    <dd>
+        나름의 콘텐츠 제공자를 직접 만드는 방법입니다.
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+        캘린더 제공자</a></strong>
+    </dt>
+    <dd>
+        Android 플랫폼의 일부인 캘린더 제공자에 액세스하는 방법입니다.
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/contacts-provider.html">
+        연락처 제공자</a></strong>
+    </dt>
+    <dd>
+        Android 플랫폼의 일부인 연락처 제공자에 액세스하는 방법입니다.
+    </dd>
+</dl>
diff --git a/docs/html-intl/intl/ko/guide/topics/providers/document-provider.jd b/docs/html-intl/intl/ko/guide/topics/providers/document-provider.jd
new file mode 100644
index 0000000..e356e22
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/providers/document-provider.jd
@@ -0,0 +1,916 @@
+page.title=저장소 액세스 프레임워크
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>이 문서의 내용
+ <a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
+        <span class="more">더 많은 결과 보기</span>
+        <span class="less" style="display:none">결과 숨기기</span></a></h2>
+<ol id="toc44" class="hide-nested">
+    <li>
+        <a href="#overview">개요</a>
+    </li>
+    <li>
+        <a href="#flow">제어 흐름</a>
+    </li>
+    <li>
+        <a href="#client">클라이언트 앱 작성</a>
+        <ol>
+        <li><a href="#search">문서 검색</a></li>
+        <li><a href="#process">결과 처리</a></li>
+        <li><a href="#metadata">문서 메타데이터 살펴보기</a></li>
+        <li><a href="#open">문서 열기</a></li>
+        <li><a href="#create">새 문서 생성하기</a></li>
+        <li><a href="#delete">문서 삭제하기</a></li>
+        <li><a href="#edit">문서 편집하기</a></li>
+        <li><a href="#permissions">권한 유지</a></li>
+        </ol>
+    </li>
+    <li><a href="#custom">사용자 지정 문서 제공자 작성하기</a>
+        <ol>
+        <li><a href="#manifest">매니페스트</a></li>
+        <li><a href="#contract">계약</a></li>
+        <li><a href="#subclass">하위 클래스 DocumentsProvider</a></li>
+        <li><a href="#security">보안</a></li>
+        </ol>
+    </li>
+
+</ol>
+<h2>Key 클래스</h2>
+<ol>
+    <li>{@link android.provider.DocumentsProvider}</li>
+    <li>{@link android.provider.DocumentsContract}</li>
+</ol>
+
+<h2>비디오</h2>
+
+<ol>
+    <li><a href="http://www.youtube.com/watch?v=zxHVeXbK1P4">
+DevBytes: Android 4.4 저장소 액세스 프레임워크: 제공자</a></li>
+     <li><a href="http://www.youtube.com/watch?v=UFj9AEz0DHQ">
+DevBytes: Android 4.4 저장소 액세스 프레임워크: 클라이언트</a></li>
+</ol>
+
+
+<h2>코드 샘플</h2>
+
+<ol>
+    <li><a href="{@docRoot}samples/StorageProvider/index.html">
+저장소 제공자</a></li>
+     <li><a href="{@docRoot}samples/StorageClient/index.html">
+StorageClient</a></li>
+</ol>
+
+<h2>참고 항목</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        콘텐츠 제공자 기본 정보
+        </a>
+    </li>
+</ol>
+
+</div>
+</div>
+
+
+<p>Android 4.4(API 레벨 19)에서는 저장소 액세스 프레임워크(SAF)를 처음 도입하게 되었습니다. SAF는 
+사용자가 선호하는 문서 저장소 제공자 전체를 걸쳐 문서, 이미지 및 각종 다른 파일을 
+탐색하고 여는 작업을 간편하게 만들어줍니다. 표준형의, 사용하기 쉬운 UI로 
+사용자가 각종 앱과 제공자에 걸쳐 일관된 방식으로 파일을 탐색하고 최근 내용에 액세스할 수 있게 해줍니다.</p>
+
+<p>클라우드 또는 로컬 저장소 서비스가 이 에코시스템에 참가하려면 자신의 서비스를 캡슐화하는 
+{@link android.provider.DocumentsProvider}를 구현하면 됩니다. 
+제공자의 문서에 액세스해야 하는 클라이언트 앱의 경우 단 몇 줄의 코드만으로 
+SAF와 통합할 수 있습니다.</p>
+
+<p>SAF에는 다음과 같은 항목이 포함됩니다.</p>
+
+<ul>
+<li><strong>문서 제공자</strong>&mdash;일종의 콘텐츠 제공자로
+저장소 서비스(예: Google Drive 등)로 하여금 자신이 관리하는 파일을 드러내도록 허용합니다. 문서 제공자는 
+{@link android.provider.DocumentsProvider} 클래스의 하위 클래스로 구현됩니다. 
+문서 제공자 스키마는 기존의 파일 계층을 근거로 하지만, 
+문서 제공자가 데이터를 저장하는 물리적인 방법은 개발자가 선택하기 나름입니다. 
+Android 플랫폼에는 내장된 문서 제공자가 여러 개 있습니다. 
+예를 들어 다운로드, 이미지 및 비디오 등입니다.</li>
+
+<li><strong>클라이언트 앱</strong>&mdash;일종의 사용자 지정 앱으로
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 및/또는
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT} 인텐트를 호출하고, 
+문서 제공자가 반환하는 파일을 수신합니다.</li>
+
+<li><strong>선택기</strong>&mdash;일종의 시스템 UI로 사용자가 클라이언트 앱의 
+검색 기준을 만족하는 모든 문서 제공자에서 문서에 액세스할 수 있도록 해줍니다.</li>
+</ul>
+
+<p>SAF가 제공하는 기능을 몇 가지 예로 들면 다음과 같습니다.</p>
+<ul>
+<li>사용자들로 하여금 하나의 앱만이 아니라 모든 문서 제공자에서 콘텐츠를 탐색할 수 있게 해줍니다.</li>
+<li>여러분의 앱이 문서 제공자가 소유한 문서에 대한 장기적, 영구적 액세스 권한을 가질 수 있도록 
+해줍니다. 이 액세스 권한을 통해 사용자가 제공자에 있는 파일을 추가, 편집, 
+저장 및 삭제할 수 있습니다.</li>
+<li>여러 개의 사용자 계정을 지원하며 USB 저장소 제공자와 같은 임시 루트도 지원합니다. 
+이는 드라이브가 연결되어 있을 때만 나타납니다. </li>
+</ul>
+
+<h2 id ="overview">개요</h2>
+
+<p>SAF는 {@link android.provider.DocumentsProvider} 클래스의 
+하위 클래스인 콘텐츠 제공자를 중심으로 둘러싸고 있습니다. 데이터는 <em>문서 제공자</em> 내에서 일반적인 파일 계층으로 
+구조화됩니다.</p>
+<p><img src="{@docRoot}images/providers/storage_datamodel.png" alt="data model" /></p>
+<p class="img-caption"><strong>그림 1.</strong> 문서 제공자 데이터 모델입니다. 루트 하나가 하나의 문서를 가리키며, 
+이는 다시 트리 전체의 팬아웃을 시작합니다.</p>
+
+<p>다음 내용을 참고하십시오.</p>
+<ul>
+
+<li>각 문서 제공자는 하나 이상의 "루트"를 보고합니다. 
+이는 문서 트리 속을 탐색할 시작 지점입니다.
+각 루트에는 고유한 {@link android.provider.DocumentsContract.Root#COLUMN_ROOT_ID}가 있으며, 
+이는 해당 루트 아래의 콘텐츠를 나타내는 문서(디렉터리)를 
+가리킵니다.
+루트는 설계상 동적으로 만들어져 있어 여러 개의 계정, 임시 USB 저장소 기기 
+또는 사용자 로그인/로그아웃 등과 같은 경우를 지원하도록 되어 있습니다.</li>
+
+<li>각 루트 아래에 문서가 하나씩 있습니다. 해당 문서는 1부터 <em>N</em>까지의 문서를 가리키는데, 
+이는 각각 1부터 <em>N</em>의 문서를 가리킬 수 있습니다. </li>
+
+<li>각 저장소의 백엔드가 
+개별적인 파일과 디렉터리를 고유한 
+{@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID}로 
+참조하여 드러냅니다.문서 ID는 고유해야 하며 한 번 발행되고 나면 변경되지 않습니다. 
+이들은 기기 재부팅을 통괄하여 영구적인 URI 허가에 사용되기 때문입니다.</li>
+
+
+<li>문서는 열 수 있는 파일이거나(특정 MIME 유형으로), 
+추가 문서가 들어있는 디렉터리일 수 있습니다(
+{@link android.provider.DocumentsContract.Document#MIME_TYPE_DIR} MIME 유형으로).</li>
+
+<li>각 문서는 서로 다른 기능을 가지고 있을 수 있습니다. 이는 
+{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS COLUMN_FLAGS}에서 설명한 것과 같습니다. 
+ 예를 들어 {@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_WRITE}, 
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE} 및 
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_THUMBNAIL} 등입니다. 
+같은 {@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID}가 
+여러 디렉터리에 포함되어 있을 수도 있습니다.</li>
+</ul>
+
+<h2 id="flow">제어 흐름</h2>
+<p>위에서 언급한 바와 같이, 문서 제공자 데이터 모델은 일반적인 
+파일 계층을 기반으로 합니다. 그러나, 데이터를 물리적으로 저장하는 방식은 마음대로 선택할 수 있습니다. 다만 
+{@link android.provider.DocumentsProvider} API를 통해 액세스할 수 있기만 하면 됩니다. 
+예를 들어, 데이터를 저장하기 위해 태그 기반 클라우드 저장소를 사용해도 됩니다.</p>
+
+<p>그림 2는 사진 앱이 SAF를 사용하여 저장된 데이터에 액세스할 수 있는 방법을 
+예시로 나타낸 것입니다.</p>
+<p><img src="{@docRoot}images/providers/storage_dataflow.png" alt="app" /></p>
+
+<p class="img-caption"><strong>그림 2.</strong> 저장소 액세스 프레임워크 흐름</p>
+
+<p>다음 내용을 참고하십시오.</p>
+<ul>
+
+<li>SAF에서는 제공자와 클라이언트가 직접 상호 작용하지 않습니다.
+ 클라이언트가 파일과 상호 작용하기 위한 권한을 요청합니다(다시 말해, 
+파일을 읽고, 편집하고 생성 또는 삭제할 권한을 말합니다).</li>
+
+<li>상호 작용은 애플리케이션(이 예시에서는 주어진 사진 앱)이 인텐트 
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 또는 {@link android.content.Intent#ACTION_CREATE_DOCUMENT}를 실행시키면 시작합니다. 이 인텐트에는 
+기준을 한층 더 정밀하게 하기 위한 필터가 포함될 수 있습니다. 예를 들어, "열 수 있는 파일 중에서 
+'이미지' MIME 유형을 가진 파일을 모두 주세요"라고 할 수 있습니다.</li>
+
+<li>인텐트가 실행되면 시스템 선택기가 각각의 등록된 제공자로 이동하여 사용자에게 
+일치하는 콘텐츠 루트를 보여줍니다.</li>
+
+<li>선택기는 사용자에게 문서에 액세스하는 데 쓰는 표준 인터페이스를 부여합니다. 이는 
+기본 문서 제공자 사이에 큰 차이가 있더라도 무관합니다. 예를 들어, 그림 2는 
+Google Drive 제공자, USB 제공자와 클라우드 제공자를 나타낸 것입니다.</li>
+</ul>
+
+<p>그림 3은 이미지를 검색 중인 사용자가 Google Drive 계정을 선택한 
+선택기를 나타낸 것입니다.</p>
+
+<p><img src="{@docRoot}images/providers/storage_picker.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
+
+<p class="img-caption"><strong>그림 3.</strong> 선택기</p>
+
+<p>사용자가 Google Drive를 선택하면 이미지가 그림 4에 나타난 것처럼 
+표시됩니다. 그때부터 사용자는 제공자와 클라이언트 앱이 지원하는 방식이라면 어떤 식으로든 
+이들 이미지와 상호 작용할 수 있게 됩니다.
+
+<p><img src="{@docRoot}images/providers/storage_photos.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
+
+<p class="img-caption"><strong>그림 4.</strong> 이미지</p>
+
+<h2 id="client">클라이언트 앱 작성</h2>
+
+<p>Android 4.3 이하에서는 앱이 또 다른 앱에서 파일을 검색할 수 있도록 하려면 
+ {@link android.content.Intent#ACTION_PICK}
+ 또는 {@link android.content.Intent#ACTION_GET_CONTENT}와 같은 인텐트를 호출해야만 했습니다. 그런 다음 
+파일을 선택할 앱을 하나 선택하고, 선택한 앱이 사용자 인터페이스를 제공하여야 사용자가 
+이용 가능한 파일 중에서 탐색하고 선택할 수 있었습니다. </p>
+
+<p>Android 4.4 이상에는 
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 인텐트를 사용할 수 있다는 추가 옵션이 있습니다. 
+이는 시스템이 제어하는 선택기를 표시하여 사용자가 다른 앱에서 이용할 수 있게 만든 파일을 
+모두 탐색할 수 있게 해줍니다. 이 하나의 UI로부터 
+사용자는 지원되는 모든 앱에서 파일을 선택할 수 있는 것입니다.</p>
+
+<p>{@link android.content.Intent#ACTION_OPEN_DOCUMENT}는 
+{@link android.content.Intent#ACTION_GET_CONTENT}를 
+대체할 목적으로 만들어진 것이 아닙니다. 어느 것을 사용해야 할지는 각자의 앱에 필요한 것이 무엇인지에 좌우됩니다.</p>
+
+<ul>
+<li>앱이 단순히 데이터를 읽고/가져오기만을 바란다면 
+{@link android.content.Intent#ACTION_GET_CONTENT}를 사용하십시오. 
+이 방식을 사용하면 앱은 이미지 파일과 같은 데이터 사본을 가져오게 됩니다.</li>
+
+<li>앱이 문서 제공자가 보유한 문서에 장기적, 영구적 액세스 권한을 가지기를 바라는 경우 
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT}를 사용하십시오.
+ 일례로 사용자들에게 문서 제공자에 저장된 이미지를 편집할 수 있게 해주는 
+사진 편집 앱을 들 수 있겠습니다. </li>
+
+</ul>
+
+
+<p>이 섹션에서는 
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 및 
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT} 인텐트를 근거로 클라이언트 앱을 작성하는 방법을 설명합니다.</p>
+
+
+<h3 id="search">문서 검색</h3>
+
+<p>
+다음 조각에서는 {@link android.content.Intent#ACTION_OPEN_DOCUMENT}를 
+사용하여 이미지 파일이 들어 있는 문서 제공자를 
+검색합니다.</p>
+
+<pre>private static final int READ_REQUEST_CODE = 42;
+...
+/**
+ * Fires an intent to spin up the &quot;file chooser&quot; UI and select an image.
+ */
+public void performFileSearch() {
+
+    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's file
+    // browser.
+    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as a
+    // file (as opposed to a list of contacts or timezones)
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Filter to show only images, using the image MIME data type.
+    // If one wanted to search for ogg vorbis files, the type would be &quot;audio/ogg&quot;.
+    // To search for all documents available via installed storage providers,
+    // it would be &quot;*/*&quot;.
+    intent.setType(&quot;image/*&quot;);
+
+    startActivityForResult(intent, READ_REQUEST_CODE);
+}</pre>
+
+<p>다음 내용을 참고하십시오.</p>
+<ul>
+<li>앱이 {@link android.content.Intent#ACTION_OPEN_DOCUMENT}
+ 인텐트를 실행시키면 이는 일치하는 문서 제공자를 모두 표시하는 선택기를 시작합니다.</li>
+
+<li>{@link android.content.Intent#CATEGORY_OPENABLE} 카테고리를 
+인텐트에 추가하면 결과를 필터링하여 이미지 파일 등 열 수 있는 문서만 표시합니다.</li>
+
+<li>{@code intent.setType("image/*")} 문으로 한층 더 필터링을 수행하여
+MIME 데이터 유형이 이미지인 문서만 표시하도록 합니다.</li>
+</ul>
+
+<h3 id="results">결과 처리</h3>
+
+<p>사용자가 선택기에서 문서를 선택하면 
+{@link android.app.Activity#onActivityResult onActivityResult()}가 호출됩니다. 
+선택한 문서를 가리키는 URI는 {@code resultData}
+매개변수 안에 들어있습니다. 이 URI를 {@link android.content.Intent#getData getData()}를 사용하여 추출합니다. 
+일단 이것을 가지게 되면 이를 사용하여 사용자가 원하는 문서를 검색하면 됩니다. 예:
+</p>
+
+<pre>&#64;Override
+public void onActivityResult(int requestCode, int resultCode,
+        Intent resultData) {
+
+    // The ACTION_OPEN_DOCUMENT intent was sent with the request code
+    // READ_REQUEST_CODE. If the request code seen here doesn't match, it's the
+    // response to some other intent, and the code below shouldn't run at all.
+
+    if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
+        // The document selected by the user won't be returned in the intent.
+        // Instead, a URI to that document will be contained in the return intent
+        // provided to this method as a parameter.
+        // Pull that URI using resultData.getData().
+        Uri uri = null;
+        if (resultData != null) {
+            uri = resultData.getData();
+            Log.i(TAG, "Uri: " + uri.toString());
+            showImage(uri);
+        }
+    }
+}
+</pre>
+
+<h3 id="metadata">문서 메타데이터 살펴보기</h3>
+
+<p>문서의 URI를 얻은 다음에는 그 문서의 메타데이터에 액세스할 수 있습니다. 이 
+조각은 해당 URI가 나타내는 문서의 메타데이터를 가져와 다음과 같이 기록합니다.</p>
+
+<pre>public void dumpImageMetaData(Uri uri) {
+
+    // The query, since it only applies to a single document, will only return
+    // one row. There's no need to filter, sort, or select fields, since we want
+    // all fields for one document.
+    Cursor cursor = getActivity().getContentResolver()
+            .query(uri, null, null, null, null, null);
+
+    try {
+    // moveToFirst() returns false if the cursor has 0 rows.  Very handy for
+    // &quot;if there's anything to look at, look at it&quot; conditionals.
+        if (cursor != null &amp;&amp; cursor.moveToFirst()) {
+
+            // Note it's called &quot;Display Name&quot;.  This is
+            // provider-specific, and might not necessarily be the file name.
+            String displayName = cursor.getString(
+                    cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
+            Log.i(TAG, &quot;Display Name: &quot; + displayName);
+
+            int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE);
+            // If the size is unknown, the value stored is null.  But since an
+            // int can't be null in Java, the behavior is implementation-specific,
+            // which is just a fancy term for &quot;unpredictable&quot;.  So as
+            // a rule, check if it's null before assigning to an int.  This will
+            // happen often:  The storage API allows for remote files, whose
+            // size might not be locally known.
+            String size = null;
+            if (!cursor.isNull(sizeIndex)) {
+                // Technically the column stores an int, but cursor.getString()
+                // will do the conversion automatically.
+                size = cursor.getString(sizeIndex);
+            } else {
+                size = &quot;Unknown&quot;;
+            }
+            Log.i(TAG, &quot;Size: &quot; + size);
+        }
+    } finally {
+        cursor.close();
+    }
+}
+</pre>
+
+<h3 id="open-client">문서 열기</h3>
+
+<p>문서의 URI를 얻은 다음에는 문서를 열 수도 있고 원하는 대로 무엇이든 
+할 수 있습니다.</p>
+
+<h4>비트맵</h4>
+
+<p>다음은 {@link android.graphics.Bitmap}을 여는 방법을 예시로 나타낸 것입니다.</p>
+
+<pre>private Bitmap getBitmapFromUri(Uri uri) throws IOException {
+    ParcelFileDescriptor parcelFileDescriptor =
+            getContentResolver().openFileDescriptor(uri, "r");
+    FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
+    Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
+    parcelFileDescriptor.close();
+    return image;
+}
+</pre>
+
+<p>이 작업을 UI 스레드에서 해서는 안 된다는 점을 유의하십시오. 이것은 배경에서 하되, 
+{@link android.os.AsyncTask}를 사용합니다. 비트맵을 열고 나면 이를 
+{@link android.widget.ImageView}로 표시할 수 있습니다.
+</p>
+
+<h4>InputStream 가져오기</h4>
+
+<p>다음은 URI에서 {@link java.io.InputStream}을 가져오는 방법을 예시로 나타낸 것입니다. 이 조각에서 
+파일의 줄이 문자열로 읽히고 있습니다.</p>
+
+<pre>private String readTextFromUri(Uri uri) throws IOException {
+    InputStream inputStream = getContentResolver().openInputStream(uri);
+    BufferedReader reader = new BufferedReader(new InputStreamReader(
+            inputStream));
+    StringBuilder stringBuilder = new StringBuilder();
+    String line;
+    while ((line = reader.readLine()) != null) {
+        stringBuilder.append(line);
+    }
+    fileInputStream.close();
+    parcelFileDescriptor.close();
+    return stringBuilder.toString();
+}
+</pre>
+
+<h3 id="create">새 문서 생성하기</h3>
+
+<p>개발자의 앱은 문서 제공자에서 새 문서를 생성할 수 있습니다. 이때 
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT}
+ 인텐트를 사용하면 됩니다. 파일을 생성하려면 인텐트에 MIME 유형과 파일 이름을 부여하고, 
+고유한 요청 코드로 이를 시작하면 됩니다. 나머지는 여러분 대신 알아서 해드립니다.</p>
+
+
+<pre>
+// Here are some examples of how you might call this method.
+// The first parameter is the MIME type, and the second parameter is the name
+// of the file you are creating:
+//
+// createFile("text/plain", "foobar.txt");
+// createFile("image/png", "mypicture.png");
+
+// Unique request code.
+private static final int WRITE_REQUEST_CODE = 43;
+...
+private void createFile(String mimeType, String fileName) {
+    Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as
+    // a file (as opposed to a list of contacts or timezones).
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Create a file with the requested MIME type.
+    intent.setType(mimeType);
+    intent.putExtra(Intent.EXTRA_TITLE, fileName);
+    startActivityForResult(intent, WRITE_REQUEST_CODE);
+}
+</pre>
+
+<p>새 문서를 생성하고 나면 
+{@link android.app.Activity#onActivityResult onActivityResult()}에서 URI를 가져와 거기에 계속해서 
+쓸 수 있습니다.</p>
+
+<h3 id="delete">문서 삭제하기</h3>
+
+<p>어느 문서에 대한 URI가 있고 해당 문서의 
+{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS Document.COLUMN_FLAGS}
+에 
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE SUPPORTS_DELETE}가 들어 있는 경우,
+해당 문서를 삭제할 수 있습니다. 예:</p>
+
+<pre>
+DocumentsContract.deleteDocument(getContentResolver(), uri);
+</pre>
+
+<h3 id="edit">문서 편집하기</h3>
+
+<p>준비된 텍스트 문서를 편집하는 데 SAF를 사용할 수 있습니다.
+이 조각은 
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 인텐트를 실행하며 
+{@link android.content.Intent#CATEGORY_OPENABLE} 카테고리를 사용해 
+열 수 있는 문서만 표시하도록 합니다. 이것을 한층 더 필터링하여 텍스트 파일만 표시하게 하려면 다음과 같이 합니다.</p>
+
+<pre>
+private static final int EDIT_REQUEST_CODE = 44;
+/**
+ * Open a file for writing and append some text to it.
+ */
+ private void editDocument() {
+    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's
+    // file browser.
+    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as a
+    // file (as opposed to a list of contacts or timezones).
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Filter to show only text files.
+    intent.setType(&quot;text/plain&quot;);
+
+    startActivityForResult(intent, EDIT_REQUEST_CODE);
+}
+</pre>
+
+<p>다음으로, {@link android.app.Activity#onActivityResult onActivityResult()}
+(<a href="#results">결과 처리</a> 참조)에서 코드를 호출하여 편집 작업을 수행하도록 하면 됩니다. 
+다음 조각은 {@link android.content.ContentResolver}에서 {@link java.io.FileOutputStream}
+을 가져온 것입니다. 이것은 기본적으로 "쓰기" 모드를 사용합니다. 
+필요한 최소 수량의 액세스만을 요청하는 것이 가장 좋으니 쓰기만 필요하다면 
+읽기/쓰기를 요청하지 마십시오.</p>
+
+<pre>private void alterDocument(Uri uri) {
+    try {
+        ParcelFileDescriptor pfd = getActivity().getContentResolver().
+                openFileDescriptor(uri, "w");
+        FileOutputStream fileOutputStream =
+                new FileOutputStream(pfd.getFileDescriptor());
+        fileOutputStream.write(("Overwritten by MyCloud at " +
+                System.currentTimeMillis() + "\n").getBytes());
+        // Let the document provider know you're done by closing the stream.
+        fileOutputStream.close();
+        pfd.close();
+    } catch (FileNotFoundException e) {
+        e.printStackTrace();
+    } catch (IOException e) {
+        e.printStackTrace();
+    }
+}</pre>
+
+<h3 id="permissions">권한 유지</h3>
+
+<p>앱이 읽기 또는 쓰기 작업에 대한 파일을 열면 시스템이 앱에 해당 파일에 대한 URI 권한 허가를 
+부여합니다. 이것은 사용자의 장치를 다시 시작할 때까지 유지됩니다.
+하지만 만일 앱이 이미지 편집 앱이고, 사용자가 여러분의 앱에서 바로 편집한 5개의 이미지에 
+액세스할 수 있도록 하고자 한다고 가정해봅시다. 사용자의 기기가 재시작되면 
+여러분이 사용자에게 시스템 선택기를 다시 보내 해당 파일을 검색하도록 해야 할 텐데, 
+이것은 물론 이상적인 것과는 거리가 멉니다.</p>
+
+<p>이런 일이 일어나지 않도록 방지하기 위해 시스템이 앱에 부여한 권한을 유지할 수 있습니다.
+여러분의 앱은 시스템이 제공하는 유지 가능한 URI 권한 허가를 
+효율적으로 "받아들입니다". 이렇게 하면 사용자가 여러분의 앱을 통해 파일에 지속적인 액세스 권한을 가질 수 있으며, 
+이는 기기가 다시 시작되더라도 관계 없습니다.</p>
+
+
+<pre>final int takeFlags = intent.getFlags()
+            &amp; (Intent.FLAG_GRANT_READ_URI_PERMISSION
+            | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+// Check for the freshest data.
+getContentResolver().takePersistableUriPermission(uri, takeFlags);</pre>
+
+<p>마지막 한 단계가 남았습니다. 여러분의 앱이 액세스한 가장 최근의 URI를 
+저장해두었을 수 있지만, 이는 더 이상 유효하지 않을 수 있습니다. 또 다른 앱이 문서를 
+삭제하거나 수정했을 수 있기 때문입니다. 따라서, 항상 
+{@code getContentResolver().takePersistableUriPermission()}을 
+호출하여 최신 데이터를 확인해야 합니다.</p>
+
+<h2 id="custom">사용자 지정 문서 제공자 작성하기</h2>
+
+<p>
+파일용 저장소 서비스를 제공하는 앱을 개발 중인 경우(예를 들어 
+클라우드 저장 서비스 등), SAF를 통해 파일을 사용할 수 있도록 하려면 사용자 지정 문서 제공자를 
+작성하면 됩니다.  이 섹션에서는 이렇게 하는 방법을 설명합니다.
+</p>
+
+
+<h3 id="manifest">매니페스트</h3>
+
+<p>사용자 지정 문서 제공자를 구현하려면 애플리케이션의 매니페스트에 다음과 같은 항목을 
+추가하십시오.</p>
+<ul>
+
+<li>API 레벨 19 이상의 대상.</li>
+
+<li>사용자 지정 저장소 제공자를 선언하는 <code>&lt;provider&gt;</code> 
+요소. </li>
+
+<li>제공자의 이름은 그 클래스 이름이며 여기에 패키지 이름도 포함됩니다. 
+예: <code>com.example.android.storageprovider.MyCloudProvider</code></li>
+
+<li>권한의 이름, 이는 패키지 이름과 같으며(이 예시에서는 
+<code>com.example.android.storageprovider</code>)여기에 콘텐츠 제공자 유형을 더합니다
+(<code>documents</code>). 예: {@code com.example.android.storageprovider.documents}</li>
+
+<li><code>android:exported</code> 속성을 <code>&quot;true&quot;</code>로 설정.
+제공자를 내보내 다른 앱이 볼 수 있도록 해야 합니다.</li>
+
+<li><code>android:grantUriPermissions</code> 속성을 
+<code>&quot;true&quot;</code>로 설정. 이렇게 설정하면 시스템이 여러분의 제공자 안에 있는 콘텐츠에 액세스하도록 다른 앱에 
+권한을 허가할 수 있게 해줍니다. 특정 문서에 대한 권한 부여를 유지하는 방법에 대한 논의는 
+<a href="#permissions">권한 유지</a>를 참조하십시오.</li>
+
+<li>{@code MANAGE_DOCUMENTS} 권한. 기본적으로 제공자는 누구나 이용할 수 있습니다.
+ 이 권한을 추가하면 여러분의 제공자를 시스템에 제한하게 됩니다. 
+이 제한은 보안상 매우 중요합니다.</li>
+
+<li>{@code android:enabled} 속성을 리소스 파일에서 정의한 부울 값으로 
+설정합니다. 이 속성의 목적은 Android 4.3 이하에서 실행되는 기기에서 제공자를 비활성화하는 데 있습니다. 
+예를 들어 {@code android:enabled="@bool/atLeastKitKat"} 등입니다. 이 속성을 
+매니페스트에 추가하는 것 이외에도 다음과 같은 작업을 해야 합니다.
+<ul>
+<li>{@code res/values/} 아래의 {@code bool.xml} 리소스 파일에 
+이 라인을 추가합니다. <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;false&lt;/bool&gt;</pre></li>
+
+<li>{@code res/values-v19/} 아래의 {@code bool.xml} 리소스 파일에 
+이 라인을 추가합니다. <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;true&lt;/bool&gt;</pre></li>
+</ul></li>
+
+<li>
+{@code android.content.action.DOCUMENTS_PROVIDER} 동작을 포함한 인텐트 필터가 있어야 
+시스템이 제공자를 검색할 때 여러분의 제공자가 선택기에 나타날 수 있습니다.</li>
+
+</ul>
+<p>다음은 제공자를 포함한 샘플 매니페스트에서 발췌한 것입니다.</p>
+
+<pre>&lt;manifest... &gt;
+    ...
+    &lt;uses-sdk
+        android:minSdkVersion=&quot;19&quot;
+        android:targetSdkVersion=&quot;19&quot; /&gt;
+        ....
+        &lt;provider
+            android:name=&quot;com.example.android.storageprovider.MyCloudProvider&quot;
+            android:authorities=&quot;com.example.android.storageprovider.documents&quot;
+            android:grantUriPermissions=&quot;true&quot;
+            android:exported=&quot;true&quot;
+            android:permission=&quot;android.permission.MANAGE_DOCUMENTS&quot;
+            android:enabled=&quot;&#64;bool/atLeastKitKat&quot;&gt;
+            &lt;intent-filter&gt;
+                &lt;action android:name=&quot;android.content.action.DOCUMENTS_PROVIDER&quot; /&gt;
+            &lt;/intent-filter&gt;
+        &lt;/provider&gt;
+    &lt;/application&gt;
+
+&lt;/manifest&gt;</pre>
+
+<h4 id="43">Android 4.3 이하에서 실행되는 기기 지원</h4>
+
+<p>
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 인텐트는 
+Android 4.4 이상에서 실행되는 기기에서만 사용할 수 있습니다. 
+애플리케이션이 {@link android.content.Intent#ACTION_GET_CONTENT}를 지원하도록 하여 
+Android 4.3 이하에서 실행되는 기기에도 적용되도록 하려면 Android 4.4 이상에서 실행되는 기기용 매니페스트에 있는 
+{@link android.content.Intent#ACTION_GET_CONTENT}
+ 인텐트 필터를 비활성화해야 합니다. 
+문서 제공자와 {@link android.content.Intent#ACTION_GET_CONTENT}는 상호 배타적인 것으로 
+간주해야 합니다. 둘을 모두 동시에 지원하는 경우, 앱이 시스템 선택기 UI에 
+두 번 나타나 저장된 데이터에 액세스할 두 가지 서로 다른 방법을 제안하게 됩니다.
+ 이렇게 되면 사용자에게 혼동을 주게 되겠죠.</p>
+
+<p>다음은 Android 버전 4.4 이상에서 실행되는 기기용 
+{@link android.content.Intent#ACTION_GET_CONTENT} 인텐트 필터를 
+비활성화하는 데 권장되는 방법입니다.</p>
+
+<ol>
+<li>{@code res/values/} 아래의 {@code bool.xml} 리소스 파일에 
+이 라인을 추가합니다. <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;true&lt;/bool&gt;</pre></li>
+
+<li>{@code res/values-v19/} 아래의 {@code bool.xml} 리소스 파일에 
+이 라인을 추가합니다. <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;false&lt;/bool&gt;</pre></li>
+
+<li>
+<a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">액티비티 
+별칭</a>을 추가하여 버전 4.4(API 레벨 19) 이상을 대상으로 한 {@link android.content.Intent#ACTION_GET_CONTENT} 
+인텐트 필터를 비활성화합니다. 예:
+
+<pre>
+&lt;!-- This activity alias is added so that GET_CONTENT intent-filter
+     can be disabled for builds on API level 19 and higher. --&gt;
+&lt;activity-alias android:name=&quot;com.android.example.app.MyPicker&quot;
+        android:targetActivity=&quot;com.android.example.app.MyActivity&quot;
+        ...
+        android:enabled=&quot;@bool/atMostJellyBeanMR2&quot;&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name=&quot;android.intent.action.GET_CONTENT&quot; /&gt;
+        &lt;category android:name=&quot;android.intent.category.OPENABLE&quot; /&gt;
+        &lt;category android:name=&quot;android.intent.category.DEFAULT&quot; /&gt;
+        &lt;data android:mimeType=&quot;image/*&quot; /&gt;
+        &lt;data android:mimeType=&quot;video/*&quot; /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity-alias&gt;
+</pre>
+</li>
+</ol>
+<h3 id="contract">계약</h3>
+
+<p>사용자 지정 제공자를 작성할 때면 일반적으로 수반되는 작업 중 하나가 
+계약 클래스를 구현하는 것입니다. 이는 
+<a href="{@docRoot}guide/topics/providers/content-provider-creating.html#ContractClass">
+콘텐츠 제공자</a> 개발자 가이드에서 설명한 것과 같습니다. 계약 클래스는 {@code public final} 클래스로, 
+이 안에 URI에 대한 상수 정의, 열 이름, MIME 유형 및 제공자에 관련된 
+다른 메타 데이터가 들어 있습니다. SAF가 
+이와 같은 계약 클래스를 대신 제공해주므로 직접 쓰지 않아도 
+됩니다.</p>
+
+<ul>
+   <li>{@link android.provider.DocumentsContract.Document}</li>
+   <li>{@link android.provider.DocumentsContract.Root}</li>
+</ul>
+
+<p>예를 들어 다음은 여러분의 문서 제공자가 문서 또는 루트에 대해 쿼리된 경우 
+커서로 반환할 수 있는 열을 나타낸 것입니다.</p>
+
+<pre>private static final String[] DEFAULT_ROOT_PROJECTION =
+        new String[]{Root.COLUMN_ROOT_ID, Root.COLUMN_MIME_TYPES,
+        Root.COLUMN_FLAGS, Root.COLUMN_ICON, Root.COLUMN_TITLE,
+        Root.COLUMN_SUMMARY, Root.COLUMN_DOCUMENT_ID,
+        Root.COLUMN_AVAILABLE_BYTES,};
+private static final String[] DEFAULT_DOCUMENT_PROJECTION = new
+        String[]{Document.COLUMN_DOCUMENT_ID, Document.COLUMN_MIME_TYPE,
+        Document.COLUMN_DISPLAY_NAME, Document.COLUMN_LAST_MODIFIED,
+        Document.COLUMN_FLAGS, Document.COLUMN_SIZE,};
+</pre>
+
+<h3 id="subclass">하위 클래스 DocumentsProvider</h3>
+
+<p>사용자 지정 문서 제공자를 작성하기 위한 다음 단계는 
+추상 클래스 {@link android.provider.DocumentsProvider}를 하위 클래스로 만드는 것입니다. 최소한 다음과 같은 메서드를 구현해야 합니다.
+</p>
+
+<ul>
+<li>{@link android.provider.DocumentsProvider#queryRoots queryRoots()}</li>
+
+<li>{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}</li>
+
+<li>{@link android.provider.DocumentsProvider#queryDocument queryDocument()}</li>
+
+<li>{@link android.provider.DocumentsProvider#openDocument openDocument()}</li>
+</ul>
+
+<p>꼭 구현해야만 하는 메서드는 이들뿐이지만, 개발자 여러분이 구현하고자 하는 메서드는 이보다 
+훨씬 많을 수도 있습니다. 자세한 내용은{@link android.provider.DocumentsProvider} 
+를 참조하십시오.</p>
+
+<h4 id="queryRoots">QueryRoots 구현</h4>
+
+<p>{@link android.provider.DocumentsProvider#queryRoots
+queryRoots()} 구현은 반드시 {@link android.database.Cursor}를 반환해야 하며, 
+이는 문서 제공자의 모든 루트 디렉터리를 가리켜야 합니다. 이때 
+{@link android.provider.DocumentsContract.Root}에서 정의한 열을 사용합니다.</p>
+
+<p>다음 조각에서 {@code projection} 매개변수는 
+발신자가 돌려받고자 하는 특정 필드를 나타냅니다. 이 조각은 새 커서를 생성하며
+그에 하나의 행을 추가합니다. 하나의 루트, 
+다운로드 또는 이미지와 같은 최상위 레벨 디렉터리가 해당됩니다.  대부분의 제공자에는 루트가 하나뿐입니다. 하나 이상이 있을 수도 있습니다. 
+예를 들어 사용자 계정이 여러 개인 경우가 있습니다. 그런 경우에는 커서에 두 번째 행을 
+추가하면 됩니다.</p>
+
+<pre>
+&#64;Override
+public Cursor queryRoots(String[] projection) throws FileNotFoundException {
+
+    // Create a cursor with either the requested fields, or the default
+    // projection if "projection" is null.
+    final MatrixCursor result =
+            new MatrixCursor(resolveRootProjection(projection));
+
+    // If user is not logged in, return an empty root cursor.  This removes our
+    // provider from the list entirely.
+    if (!isUserLoggedIn()) {
+        return result;
+    }
+
+    // It's possible to have multiple roots (e.g. for multiple accounts in the
+    // same app) -- just add multiple cursor rows.
+    // Construct one row for a root called &quot;MyCloud&quot;.
+    final MatrixCursor.RowBuilder row = result.newRow();
+    row.add(Root.COLUMN_ROOT_ID, ROOT);
+    row.add(Root.COLUMN_SUMMARY, getContext().getString(R.string.root_summary));
+
+    // FLAG_SUPPORTS_CREATE means at least one directory under the root supports
+    // creating documents. FLAG_SUPPORTS_RECENTS means your application's most
+    // recently used documents will show up in the &quot;Recents&quot; category.
+    // FLAG_SUPPORTS_SEARCH allows users to search all documents the application
+    // shares.
+    row.add(Root.COLUMN_FLAGS, Root.FLAG_SUPPORTS_CREATE |
+            Root.FLAG_SUPPORTS_RECENTS |
+            Root.FLAG_SUPPORTS_SEARCH);
+
+    // COLUMN_TITLE is the root title (e.g. Gallery, Drive).
+    row.add(Root.COLUMN_TITLE, getContext().getString(R.string.title));
+
+    // This document id cannot change once it's shared.
+    row.add(Root.COLUMN_DOCUMENT_ID, getDocIdForFile(mBaseDir));
+
+    // The child MIME types are used to filter the roots and only present to the
+    //  user roots that contain the desired type somewhere in their file hierarchy.
+    row.add(Root.COLUMN_MIME_TYPES, getChildMimeTypes(mBaseDir));
+    row.add(Root.COLUMN_AVAILABLE_BYTES, mBaseDir.getFreeSpace());
+    row.add(Root.COLUMN_ICON, R.drawable.ic_launcher);
+
+    return result;
+}</pre>
+
+<h4 id="queryChildDocuments">QueryChildDocuments 구현</h4>
+
+<p>
+{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}
+ 구현은 반드시 {@link android.database.Cursor}를 반환해야 하며, 
+이는 지정된 디렉터리 내의 모든 파일을 가리켜야 합니다. 이때 
+{@link android.provider.DocumentsContract.Document}에서 정의한 열을 사용합니다.</p>
+
+<p>이 메서드는 선택기 UI에서 애플리케이션 루트를 선택하는 경우 호출됩니다. 
+이는 해당 루트 아래 디렉터리의 하위 문서를 가져옵니다.  이것은 루트에서뿐만 아니라 파일 계층의 어느 레벨에서나 
+호출할 수 있습니다. 이 조각은 요청한 열로 새 커서를 만든 다음, 
+상위 디렉터리에 있는 모든 직속 하위에 대한 정보를 커서에 추가합니다.
+하위는 이미지, 또 다른 디렉터리가 될 수도 있고
+어느 파일이라도 될 수 있습니다.</p>
+
+<pre>&#64;Override
+public Cursor queryChildDocuments(String parentDocumentId, String[] projection,
+                              String sortOrder) throws FileNotFoundException {
+
+    final MatrixCursor result = new
+            MatrixCursor(resolveDocumentProjection(projection));
+    final File parent = getFileForDocId(parentDocumentId);
+    for (File file : parent.listFiles()) {
+        // Adds the file's display name, MIME type, size, and so on.
+        includeFile(result, null, file);
+    }
+    return result;
+}
+</pre>
+
+<h4 id="queryDocument">QueryDocuments 구현</h4>
+
+<p>
+{@link android.provider.DocumentsProvider#queryDocument queryDocument()}
+ 구현은 반드시 {@link android.database.Cursor}를 반환해야 하며, 
+이는 지정된 파일을 가리켜야 합니다. 이때 {@link android.provider.DocumentsContract.Document}에서 정의한 열을 사용합니다.
+</p>
+
+<p>{@link android.provider.DocumentsProvider#queryDocument queryDocument()}
+ 메서드는 
+{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}에서 
+전달된 것과 같은 정보를 반환하지만, 특정한 파일에만 해당됩니다.</p>
+
+
+<pre>&#64;Override
+public Cursor queryDocument(String documentId, String[] projection) throws
+        FileNotFoundException {
+
+    // Create a cursor with the requested projection, or the default projection.
+    final MatrixCursor result = new
+            MatrixCursor(resolveDocumentProjection(projection));
+    includeFile(result, documentId, null);
+    return result;
+}
+</pre>
+
+<h4 id="openDocument">OpenDocument 구현</h4>
+
+<p>지정된 파일을 나타내는 
+{@link android.os.ParcelFileDescriptor}를 반환하려면 {@link android.provider.DocumentsProvider#openDocument
+openDocument()}를 구현해야 합니다. 다른 앱들이 반환된 {@link android.os.ParcelFileDescriptor}를
+ 사용하여 데이터를 스트리밍할 수 있습니다. 시스템은 사용자가 파일을 선택하고 
+클라이언트 앱이 이에 대한 액세스를 요청하면서 
+{@link android.content.ContentResolver#openFileDescriptor openFileDescriptor()}를 사용할 때 이 메서드를 호출합니다. 
+예를 들면 다음과 같습니다.</p>
+
+<pre>&#64;Override
+public ParcelFileDescriptor openDocument(final String documentId,
+                                         final String mode,
+                                         CancellationSignal signal) throws
+        FileNotFoundException {
+    Log.v(TAG, &quot;openDocument, mode: &quot; + mode);
+    // It's OK to do network operations in this method to download the document,
+    // as long as you periodically check the CancellationSignal. If you have an
+    // extremely large file to transfer from the network, a better solution may
+    // be pipes or sockets (see ParcelFileDescriptor for helper methods).
+
+    final File file = getFileForDocId(documentId);
+
+    final boolean isWrite = (mode.indexOf('w') != -1);
+    if(isWrite) {
+        // Attach a close listener if the document is opened in write mode.
+        try {
+            Handler handler = new Handler(getContext().getMainLooper());
+            return ParcelFileDescriptor.open(file, accessMode, handler,
+                        new ParcelFileDescriptor.OnCloseListener() {
+                &#64;Override
+                public void onClose(IOException e) {
+
+                    // Update the file with the cloud server. The client is done
+                    // writing.
+                    Log.i(TAG, &quot;A file with id &quot; +
+                    documentId + &quot; has been closed!
+                    Time to &quot; +
+                    &quot;update the server.&quot;);
+                }
+
+            });
+        } catch (IOException e) {
+            throw new FileNotFoundException(&quot;Failed to open document with id &quot;
+            + documentId + &quot; and mode &quot; + mode);
+        }
+    } else {
+        return ParcelFileDescriptor.open(file, accessMode);
+    }
+}
+</pre>
+
+<h3 id="security">보안</h3>
+
+<p>여러분의 문서 제공자가 암호로 보호된 클라우드 저장소 서비스이고
+여러분은 사용자가 파일을 공유하기 전에 우선 로그인부터 하도록 확실히 해두고 싶다고 가정합니다. 
+사용자가 로그인되지 않은 경우 앱은 어떻게 해야 합니까?  해법은 
+{@link android.provider.DocumentsProvider#queryRoots
+queryRoots()} 구현에서 루트를 반환하지 않는 것입니다. 다시 말해, 텅 빈 루트 커서를 반환하는 것입니다.</p>
+
+<pre>
+public Cursor queryRoots(String[] projection) throws FileNotFoundException {
+...
+    // If user is not logged in, return an empty root cursor.  This removes our
+    // provider from the list entirely.
+    if (!isUserLoggedIn()) {
+        return result;
+}
+</pre>
+
+<p>또 다른 단계는 {@code getContentResolver().notifyChange()}를 호출하는 것입니다.
+{@link android.provider.DocumentsContract}를 기억하십니까?  이것을 사용하는 이유는 
+바로 이 URI를 만들기 위해서입니다. 다음 조각은 사용자의 로그인 상태가 변경될 때마다 
+시스템이 문서 제공자의 루트를 쿼리하도록 지시하고 있습니다. 사용자가 로그인되어 있지 않은 상태에서 
+{@link android.provider.DocumentsProvider#queryRoots queryRoots()}를 호출하면 
+위에서 나타낸 것과 같이 빈 커서를 반환합니다. 이렇게 하면 사용자가 제공자에 로그인되었을 때만 
+제공자의 문서를 사용할 수 있도록 보장할 수 있습니다.</p>
+
+<pre>private void onLoginButtonClick() {
+    loginOrLogout();
+    getContentResolver().notifyChange(DocumentsContract
+            .buildRootsUri(AUTHORITY), null);
+}
+</pre>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ko/guide/topics/resources/accessing-resources.jd b/docs/html-intl/intl/ko/guide/topics/resources/accessing-resources.jd
new file mode 100644
index 0000000..be9dd6b
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/resources/accessing-resources.jd
@@ -0,0 +1,337 @@
+page.title=리소스 액세스
+parent.title=애플리케이션 리소스
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>간략히 보기</h2>
+  <ul>
+    <li>리소스는 {@code R.java}의 정수를 사용하는 코드, 예를 들어 
+{@code R.drawable.myimage}에서 참조할 수 있습니다.</li>
+    <li>리소스는 특수 XML 구문을 사용하는 리소스, 예를 들어 {@code
+&#64;drawable/myimage}에서 참조할 수 있습니다.</li>
+    <li>
+{@link android.content.res.Resources}의 메서드로 앱 리소스에 액세스할 수도 있습니다.</li>
+  </ul>
+
+  <h2>Key 클래스</h2>
+  <ol>
+    <li>{@link android.content.res.Resources}</li>
+  </ol>
+
+  <h2>이 문서의 내용</h2>
+  <ol>
+    <li><a href="#ResourcesFromCode">코드에서 리소스 액세스</a></li>
+    <li><a href="#ResourcesFromXml">XML에서 리소스 액세스</a>
+      <ol>
+        <li><a href="#ReferencesToThemeAttributes">스타일 속성 참조</a></li>
+      </ol>
+    </li>
+    <li><a href="#PlatformResources">플랫폼 리소스 액세스</a></li>
+  </ol>
+
+  <h2>참고 항목</h2>
+  <ol>
+    <li><a href="providing-resources.html">리소스 제공</a></li>
+    <li><a href="available-resources.html">리소스 유형</a></li>
+  </ol>
+</div>
+</div>
+
+
+
+
+<p>일단 어떤 리소스를 애플리케이션에 제공한 다음에는(<a href="providing-resources.html">리소스 제공</a>에서 논의), 
+해당 리소스의 리소스 ID를 참조함으로써 이를 적용할 수 있습니다. 모든 리소스 ID는 
+{@code aapt} 도구가 자동으로 생성하는 프로젝트의 {@code R} 클래스에서 정의됩니다.</p>
+
+<p>애플리케이션이 컴파일링되면, {@code aapt}가 {@code R} 클래스를 생성하며, 이 클래스 안에 {@code
+res/} 디렉터리에 있는 모든 리소스의 
+리소스 ID가 들어있습니다. 각 리소스 유형에는 {@code R} 하위 클래스가 있고(예: 모든 드로어블 리소스에 대한 
+{@code R.drawable}), 해당 유형의 각 리소스에는 정적
+정수가 있습니다(예: {@code R.drawable.icon}). 이 정수가 
+리소스를 검색하는 데 사용할 수 있는 리소스 ID입니다.</p>
+
+<p>{@code R} 클래스가 리소스 ID가 지정되는 곳이기는 하지만, 리소스 ID를 찾기 위해 
+이곳을 볼 필요는 전혀 없습니다. 하나의 리소스 ID는 항상 다음과 같이 구성됩니다.</p>
+<ul>
+  <li><em>리소스 유형</em>: 각 리소스는 "유형"으로 그룹화됩니다. 예: {@code
+string}, {@code drawable} 및 {@code layout} 다양한 유형에 관한 자세한 정보는 <a href="available-resources.html">리소스 유형</a>을 참조하십시오.
+  </li>
+  <li><em>리소스 이름</em>: 
+리소스가 단순 값(예: 문자열 등)일 경우, 
+확장자를 제외한 파일 이름이나 XML {@code android:name} 속성 값 중 하나입니다.</li>
+</ul>
+
+<p>리소스에 액세스하는 방법은 두 가지가 있습니다.</p>
+<ul>
+  <li><strong>코드 내부에서:</strong> {@code R}
+클래스의 하위 클래스에서 정적 정수를 사용합니다. 예:
+    <pre class="classic no-pretty-print">R.string.hello</pre>
+    <p>{@code string}은 리소스 유형이고 {@code hello}는 리소스 이름입니다. 리소스 ID를 이 형식으로 제공하면 리소스에 액세스할 수 있는 
+Android API가 많습니다. 
+<a href="#ResourcesFromCode">코드 내 리소스 액세스</a>를 참조하십시오.</p>
+  </li>
+  <li><strong>XML 내부에서:</strong> {@code R} 클래스에서 정의된 
+리소스 ID에 상응하기도 하는 특수 XML 구문을 사용합니다. 예:
+    <pre class="classic no-pretty-print">&#64;string/hello</pre>
+    <p>{@code string}은 리소스 유형이고 {@code hello}는 리소스 이름입니다. 이 
+구문은 리소스로 값을 제공할 것으로 예상되는 어느 곳에서나 XML 리소스 형태로 사용할 수 있습니다. <a href="#ResourcesFromXml">XML에서 리소스 액세스</a>를 참조하십시오.</p>
+  </li>
+</ul>
+
+
+
+<h2 id="ResourcesFromCode">코드 내 리소스 액세스 </h2>
+
+<p>리소스 ID를 메서드 매개변수로 전달하면 코드 내 리소스를 사용할 수 있습니다. 예를 들어
+, {@link android.widget.ImageView}를 설정하여 {@link android.widget.ImageView#setImageResource(int) setImageResource()}를 사용하는 {@code res/drawable/myimage.png}
+리소스를 사용할 수 있습니다.</p>
+<pre>
+ImageView imageView = (ImageView) findViewById(R.id.myimageview);
+imageView.setImageResource(<strong>R.drawable.myimage</strong>);
+</pre>
+
+<p>{@link
+android.content.res.Resources}에서 메서드를 사용하는 개별 리소스를 검색할 수도 있으며, 이는 
+{@link android.content.Context#getResources()}로 인스턴스를 가져올 수 있습니다.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>원본 파일에 액세스</h2>
+
+<p>흔한 일은 아니지만, 원본 파일과 디렉터리에 액세스해야 하는 경우가 있습니다. 이 경우에는 
+{@code res/}에 파일을 저장하더라도 소용이 없습니다. 
+{@code res/}에서 리소스를 읽는 방법은 리소스 ID를 사용하는 것뿐이기 때문입니다. 그 대신 리소스를 
+{@code assets/} 디렉터리에 저장하면 됩니다.</p>
+<p>{@code assets/} 디렉터리에 저장된 파일은 리소스
+ID가 부여되지 <em>않으므로</em>, 이와 같은 리소스는 {@code R} 클래스나 XML 리소스에서 참조할 수 없습니다. 그 대신 
+일반 파일 시스템처럼 {@code assets/} 디렉터리에 파일을 쿼리하고 
+{@link android.content.res.AssetManager}를 사용하여 원시 데이터를 읽을 수 있습니다.</p>
+<p>하지만 필요한 것이 원시 데이터(동영상 또는 오디오 파일 등)를 읽는 능력뿐인 경우라면,
+파일을 {@code res/raw/} 디렉터리에 저장한 다음 일련의 바이트 스트림을 {@link
+android.content.res.Resources#openRawResource(int) openRawResource()}를 사용하여 읽으면 됩니다.</p>
+
+</div>
+</div>
+
+
+<h3>구문</h3>
+
+<p>다음은 코드로 리소스를 참조하는 데 쓰는 구문입니다.</p>
+
+<pre class="classic no-pretty-print">
+[<em>&lt;package_name&gt;</em>.]R.<em>&lt;resource_type&gt;</em>.<em>&lt;resource_name&gt;</em>
+</pre>
+
+<ul>
+  <li><em>{@code &lt;package_name&gt;}</em>은(는) 리소스가 위치한 패키지의 이름입니다(
+자체 패키지의 리소스를 참조할 경우에는 필요하지 않습니다).</li>
+  <li><em>{@code &lt;resource_type&gt;}</em>은(는) 해당 리소스 유형의 {@code R} 하위 클래스입니다.</li>
+  <li><em>{@code &lt;resource_name&gt;}</em>은(는) 확장자가 없는 리소스 파일 이름이거나
+XML 요소의 {@code android:name} 속성 값입니다(단순
+값의 경우).</li>
+</ul>
+<p>각 리소스 유형과 참조 방법에 관한 자세한 내용은 <a href="available-resources.html">리소스 유형</a>
+을 참조하십시오.</p>
+
+
+<h3>사용 사례</h3>
+
+<p>리소스 ID 매개변수를 허용하는 메서드가 많이 있고, {@link android.content.res.Resources}에서 메서드를
+ 사용하여 리소스를 검색할 수 있습니다. {@link android.content.Context#getResources
+Context.getResources()}로 {@link
+android.content.res.Resources}의 인스턴스를 가져올 수 있습니다.</p>
+
+
+<p>다음은 코드로 리소스에 액세스한 몇 가지 예시입니다.</p>
+
+<pre>
+// Load a background for the current screen from a drawable resource
+{@link android.app.Activity#getWindow()}.{@link
+android.view.Window#setBackgroundDrawableResource(int)
+setBackgroundDrawableResource}(<strong>R.drawable.my_background_image</strong>) ;
+
+// Set the Activity title by getting a string from the Resources object, because
+//  this method requires a CharSequence rather than a resource ID
+{@link android.app.Activity#getWindow()}.{@link android.view.Window#setTitle(CharSequence)
+setTitle}(getResources().{@link android.content.res.Resources#getText(int)
+getText}(<strong>R.string.main_title</strong>));
+
+// Load a custom layout for the current screen
+{@link android.app.Activity#setContentView(int)
+setContentView}(<strong>R.layout.main_screen</strong>);
+
+// Set a slide in animation by getting an Animation from the Resources object
+mFlipper.{@link android.widget.ViewAnimator#setInAnimation(Animation)
+setInAnimation}(AnimationUtils.loadAnimation(this,
+        <strong>R.anim.hyperspace_in</strong>));
+
+// Set the text on a TextView object using a resource ID
+TextView msgTextView = (TextView) findViewById(<strong>R.id.msg</strong>);
+msgTextView.{@link android.widget.TextView#setText(int)
+setText}(<strong>R.string.hello_message</strong>);
+</pre>
+
+
+<p class="caution"><strong>주의:</strong> 손으로 {@code
+R.java} 파일을 수정해서는 안 됩니다.&mdash;이것은 프로젝트가
+컴파일되었을 때 {@code aapt} 도구가 생성한 파일입니다. 모든 변경 사항은 다음 번 컴파일에서 재정의됩니다.</p>
+
+
+
+<h2 id="ResourcesFromXml">XML에서 리소스 액세스</h2>
+
+<p>기존 리소스에 대한 참조를 사용하여
+일부 XML 속성과 요소의 값을 정의할 수 있습니다. 이 작업은 레이아웃 파일을 생성할 때 위젯에 문자열과 이미지를 제공하기 위해 
+자주 하게 됩니다.</p>
+
+<p>예를 들어, 레이아웃에 {@link android.widget.Button}을 추가하면 
+해당 버튼 텍스트에 <a href="string-resource.html">문자열 리소스</a>를 사용해야 합니다.</p>
+
+<pre>
+&lt;Button
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:text="<strong>@string/submit</strong>" /&gt;
+</pre>
+
+
+<h3>구문</h3>
+
+<p>다음은 XML 리소스로 리소스를 참조하는 데 쓰는 구문입니다.</p>
+
+<pre class="classic no-pretty-print">
+&#64;[<em>&lt;package_name&gt;</em>:]<em>&lt;resource_type&gt;</em>/<em>&lt;resource_name&gt;</em>
+</pre>
+
+<ul>
+  <li>{@code &lt;package_name&gt;}은(는) 리소스가 위치한 패키지의 이름입니다(
+같은 패키지의 리소스를 참조할 경우에는 필요하지 않습니다).</li>
+  <li>{@code &lt;resource_type&gt;}은(는) 해당 리소스 유형의 
+{@code R} 하위 클래스입니다.</li>
+  <li>{@code &lt;resource_name&gt;}은(는) 확장자가 없는 리소스 파일 이름이거나
+XML 요소의 {@code android:name} 속성 값입니다(단순
+값의 경우).</li>
+</ul>
+
+<p>각 리소스 유형과 참조 방법에 관한 자세한 내용은 <a href="available-resources.html">리소스 유형</a>
+을 참조하십시오.</p>
+
+
+<h3>사용 사례</h3>
+
+<p>몇몇 경우에는 값에 대한 리소스를 반드시 XML로 사용해야 하지만(예: 위젯에 드로어블 이미지를
+ 적용하기 위해), 단순 값을 허용하는 곳이라면 어디서든 XML로 리소스를 사용할 수도 있습니다. 예를 들어
+, <a href="more-resources.html#Color">색상 리소스</a>와 <a href="string-resource.html">문자열 리소스</a>를 포함한 다음과 같은 리소스 파일을 가지고 있다고 합시다.</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+   &lt;color name="opaque_red">#f00&lt;/color>
+   &lt;string name="hello">Hello!&lt;/string>
+&lt;/resources>
+</pre>
+
+<p>텍스트 색상과 
+텍스트 문자열을 설정하는 데 이와 같은 리소스를 다음의 레이아웃 파일에서 사용할 수 있습니다.</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;fill_parent&quot;
+    android:textColor=&quot;<strong>&#64;color/opaque_red</strong>&quot;
+    android:text=&quot;<strong>&#64;string/hello</strong>&quot; /&gt;
+</pre>
+
+<p>이 경우, 리소스를 자체 패키지에서 가져왔으므로 리소스 참조에 패키지 이름을
+지정하지 않아도 됩니다. 
+시스템 리소스를 참조하려면 패키지 이름을 포함해야 합니다. 예:</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;fill_parent&quot;
+    android:textColor=&quot;<strong>&#64;android:color/secondary_text_dark</strong>&quot;
+    android:text=&quot;&#64;string/hello&quot; /&gt;
+</pre>
+
+<p class="note"><strong>참고:</strong> 항상 문자열 리소스를 사용해야
+사용자의 애플리케이션이 다른 언어에 맞게 지역화될 수 있습니다. 
+대체
+리소스(예: 지역화된 문자열) 생성에 관한 자세한 정보는 <a href="providing-resources.html#AlternativeResources">대체
+리소스 제공</a>을 참조하십시오. 다른 언어로 애플리케이션을 지역화하기 위한 전체 지침은
+<a href="localization.html">지역화</a>를 참조하십시오.</p>
+
+<p>XML의 리소스를 사용하여 별명을 생성할 수도 있습니다. 예를 들어, 드로어블 리소스이면서 
+또 다른 드로어블 리소스의 별명인 것을 생성할 수 있습니다.</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/other_drawable" />
+</pre>
+
+<p>이것은 일견 중복되는 것처럼 들리지만, 대체 리소스를 사용할 때 매우 유용하게 쓰일 수 있습니다. 
+<a href="providing-resources.html#AliasResources">별명 리소스 생성</a>에 관해 자세히 알아보십시오.</p>
+
+
+
+<h3 id="ReferencesToThemeAttributes">스타일 속성 참조</h3>
+
+<p>스타일 속성 리소스는 현재 적용된 테마의 속성 값을
+참조할 수 있게 해줍니다. 스타일 속성을 참조하면 
+하드 코드로 작성된 값을 제공하는 것 대신에 UI 요소의 외관을 사용자 지정하여 
+현재 테마에서 제공한 표준 변형에 맞춰 스타일링할 수 있습니다. 스타일 속성을 참조하는 것은 
+기본적으로 "이 속성이 정의한 스타일을 현재 테마로 사용하라"는 말과 같습니다.</p>
+
+<p>스타일 속성을 참조하는 경우, 이름 구문은 보통 
+리소스와 거의 똑같습니다. 다만 앳 기호({@code @})를 사용하는 대신 물음표({@code ?})를 사용하며, 
+리소스 유형 부분이 선택 사항이라는 점만이 다릅니다. 예:</p>
+
+<pre class="classic">
+?[<em>&lt;package_name&gt;</em>:][<em>&lt;resource_type&gt;</em>/]<em>&lt;resource_name&gt;</em>
+</pre>
+
+<p>예컨대 다음은 텍스트 색상을 시스템 테마의 "기본" 텍스트 색상에 
+일치하도록 설정하기 위해 속성을 참조하는 방법을 나타낸 것입니다.</p>
+
+<pre>
+&lt;EditText id=&quot;text&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;wrap_content&quot;
+    android:textColor=&quot;<strong>?android:textColorSecondary</strong>&quot;
+    android:text=&quot;&#64;string/hello_world&quot; /&gt;
+</pre>
+
+<p>여기서 {@code android:textColor} 속성이 주어진 스타일 속성의 이름을 현재 테마대로 
+지정합니다. Android는 이제 {@code android:textColorSecondary}
+스타일 속성에 적용된 값을 이 위젯의 {@code android:textColor}에 대한 값으로 사용합니다. 시스템
+리소스 도구는 속성 리소스가 이 컨텍스트에서 예상된다는 것을 알기 때문에
+유형(
+<code>?android:attr/textColorSecondary</code>)을 명시적으로 선언하지 않아도 됩니다.&mdash;{@code attr} 유형은 배제해도 됩니다.</p>
+
+
+
+
+<h2 id="PlatformResources">플랫폼 리소스 액세스</h2>
+
+<p>Android에는 스타일, 테마 및 레이아웃 등 여러 가지 표준 리소스가 포함되어 있습니다. 
+이와 같은 리소스에 액세스하려면 
+<code>android</code> 패키지 이름으로 리소스 참조를 한정합니다. 예를 들어 Android는 
+{@link android.widget.ListAdapter}의 목록 항목으로 사용할 수 있는 레이아웃 리소스를 제공합니다.</p>
+
+<pre>
+{@link android.app.ListActivity#setListAdapter(ListAdapter)
+setListAdapter}(new {@link
+android.widget.ArrayAdapter}&lt;String&gt;(this, <strong>android.R.layout.simple_list_item_1</strong>, myarray));
+</pre>
+
+<p>이 예시에서 {@link android.R.layout#simple_list_item_1}은 
+{@link android.widget.ListView}의 항목에 대해 플랫폼이 정의한 레이아웃 리소스입니다. 목록 항목에 대해 나름의 레이아웃을 
+만드는 대신 이것을 사용해도 됩니다. 자세한 내용은 
+<a href="{@docRoot}guide/topics/ui/layout/listview.html">목록 보기</a> 개발자 가이드를 참조하십시오.</p>
+
diff --git a/docs/html-intl/intl/ko/guide/topics/resources/overview.jd b/docs/html-intl/intl/ko/guide/topics/resources/overview.jd
new file mode 100644
index 0000000..e98a677
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/resources/overview.jd
@@ -0,0 +1,103 @@
+page.title=리소스 개요
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>주제</h2>
+  <ol>
+    <li><a href="providing-resources.html">리소스 제공</a></li>
+    <li><a href="accessing-resources.html">리소스 액세스</a></li>
+    <li><a href="runtime-changes.html">런타임 변경 처리</a></li>
+    <li><a href="localization.html">지역화</a></li>
+  </ol>
+
+  <h2>참조</h2>
+  <ol>
+    <li><a href="available-resources.html">리소스 유형</a></li>
+  </ol>
+</div>
+</div>
+
+
+<p>이미지나 문자열 같은 리소스는 항상 애플리케이션 코드에서 
+외부화하여 독립적으로 유지해야 합니다. 리소스를 외부화하면 
+다양한 언어나 화면 크기와 같은 특정 기기 구성을 지원하는
+대체 리소스를 제공할 수 있습니다. 이러한 기능은 Android 구동 장치를
+다양한 구성에서 이용하게 되면서 점점 더 중요해지고 있습니다. 여러 가지 구성에 
+호환성을 제공하려면 프로젝트의 
+{@code res/} 디렉터리 안에 리소스를 정리해야 합니다. 이때 여러 가지 하위 디렉터리를 사용하여 리소스를 유형과 구성 
+기준으로 그룹화하면 좋습니다.</p>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram1.png" height="167" alt="" />
+<p class="img-caption">
+<strong>그림 1.</strong> 각각 기본 레이아웃을 사용하는 서로 다른 두 개의 기기입니다
+(앱에서 대체 레이아웃을 제공하지 않습니다).</p>
+</div>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
+<p class="img-caption">
+<strong>그림 2.</strong> 서로 다른 두 개의 기기로, 각각 다른 화면 크기에 맞게 제공된 서로 다른 
+레이아웃을 사용하고 있습니다.</p>
+</div>
+
+<p>어떤 유형의 리소스든 애플리케이션에 맞게<em>기본값</em>과 여러
+<em>대체</em> 리소스를 지정할 수 있습니다.</p>
+<ul>
+  <li>기본 리소스는 기기 구성에 관계없이 항상 사용하거나
+기존 구성에 일치하는 대체 리소스가 없을 때 
+사용합니다.</li>
+  <li>대체 리소스는 특정 구성에서 사용하기 위해 개발자가 특별히 디자인한 것을 
+말합니다. 리소스 그룹을 특정 구성용으로 지정하려면, 
+디렉터리 이름에 적절한 구성 한정자를 추가하십시오.</li>
+</ul>
+
+<p>예를 들어 기본 UI 레이아웃은 
+{@code res/layout/} 디렉터리에 저장되어 있더라도 화면이 가로 방향일 때 사용할 
+다른 레이아웃을 지정할 수도 있습니다. 이를 {@code res/layout-land/}
+디렉터리에 저장하면 됩니다. Android는
+기기의 현재 구성을 리소스 디렉터리 이름과 일치시켜서 적절한 리소스를 적용합니다.</p>
+
+<p>그림 1은 이용 가능한 대체 리소스가 없을 경우 시스템이 서로 다른 두 개의 기기에 
+같은 레이아웃을 적용하는 방법을 보여줍니다. 그림 2는 
+같은 애플리케이션에 큰 화면용 레이아웃 리소스를 추가한 모습을 나타낸 것입니다.</p>
+
+<p>다음 문서는 대체 리소스를 체계화하고, 
+대체 리소스를 지정하고, 애플리케이션에 액세스 하는 등의 방법에 관한 완전한 지침을 제공합니다.</p>
+
+<dl>
+  <dt><strong><a href="providing-resources.html">리소스 제공</a></strong></dt>
+  <dd>앱에 포함할 수 있는 여러 가지 종류의 리소스와, 이러한 리소스를 저장하는 장소, 특정 기기 구성에 대한 
+대체 리소스를 생성하는 방법입니다.</dd>
+  <dt><strong><a href="accessing-resources.html">리소스 액세스</a></strong></dt>
+  <dd>제공한 리소스를 사용하는 방법입니다. 이를 애플리케이션 코드에서 참조하거나 
+다른 XML 리소스에서 참조하는 방식을 씁니다.</dd>
+  <dt><strong><a href="runtime-changes.html">런타임 변경 처리</a></strong></dt>
+  <dd>액티비티가 실행 중인 동안 발생한 구성 변경을 관리하는 방법입니다.</dd>
+  <dt><strong><a href="localization.html">지역화</a></strong></dt>
+  <dd>대체 리소스를 사용하여 애플리케이션을 지역화하는 방법에 대한 상세한 가이드입니다. 이것은 대체 
+리소스를 사용하는 한 가지 방법에 불과하지만, 더 많은 사용자에게 도달하려면 매우 중요한 
+방법입니다.</dd>
+  <dt><strong><a href="available-resources.html">리소스 유형</a></strong></dt>
+  <dd>개발자가 제공할 수 있는 다양한 리소스 유형의 참조로, 각각의 XML 요소, 
+속성과 구문을 설명하는 것입니다. 예를 들어, 이 참조는 애플리케이션 메뉴와 드로어블 리소스, 
+애니메이션에 대한 리소스를 생성하는 법을 보여줍니다.</dd>
+</dl>
+
+<!--
+<h2>Raw Assets</h2>
+
+<p>An alternative to saving files in {@code res/} is to save files in the {@code
+assets/} directory. This should only be necessary if you need direct access to original files and
+directories by name. Files saved in the {@code assets/} directory will not be given a resource
+ID, so you can't reference them through the {@code R} class or from XML resources. Instead, you can
+query data in the {@code assets/} directory like an ordinary file system, search through the
+directory and
+read raw data using {@link android.content.res.AssetManager}. For example, this can be more useful
+when dealing with textures for a game. However, if you only need to read raw data from a file
+(such as a video or audio file), then you should save files into the {@code res/raw/} directory and
+then read a stream of bytes using {@link android.content.res.Resources#openRawResource(int)}. This
+is uncommon, but if you need direct access to original files in {@code assets/}, refer to the {@link
+android.content.res.AssetManager} documentation.</p>
+-->
diff --git a/docs/html-intl/intl/ko/guide/topics/resources/providing-resources.jd b/docs/html-intl/intl/ko/guide/topics/resources/providing-resources.jd
new file mode 100644
index 0000000..681cbb3
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/resources/providing-resources.jd
@@ -0,0 +1,1094 @@
+page.title=리소스 제공
+parent.title=애플리케이션 리소스
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>간략히 보기</h2>
+  <ul>
+    <li>{@code res/}의 여러 가지 하위 디렉터리에 속한 여러 가지 유형의 리소스</li>
+    <li>구성별 리소스 파일을 제공하는 대체 리소스</li>
+    <li>항상 기본 리소스를 포함해야 앱이 특정 기기 구성에 
+좌우되지 않습니다.</li>
+  </ul>
+  <h2>이 문서의 내용</h2>
+  <ol>
+    <li><a href="#ResourceTypes">리소스 유형 그룹화</a></li>
+    <li><a href="#AlternativeResources">대체 리소스 제공</a>
+      <ol>
+        <li><a href="#QualifierRules">한정자 이름 규칙</a></li>
+        <li><a href="#AliasResources">별명 리소스 생성</a></li>
+      </ol>
+    </li>
+    <li><a href="#Compatibility">리소스와 연관된 최선의 기기 호환성 제공</a></li>
+    <li><a href="#BestMatch">Android가 가장 잘 일치하는 리소스를 찾는 방법</a></li>
+  </ol>
+
+  <h2>참고 항목</h2>
+  <ol>
+    <li><a href="accessing-resources.html">리소스 액세스</a></li>
+    <li><a href="available-resources.html">리소스 유형</a></li>
+    <li><a href="{@docRoot}guide/practices/screens_support.html">다중 
+화면 지원</a></li>
+  </ol>
+</div>
+</div>
+
+<p>이미지나 문자열과 같은 애플리케이션 리소스는 항상 코드에서 외부화해야 합니다. 
+그래야 이들을 독립적으로 유지관리할 수 있습니다. 특정 기기 구성에 대한 대체 리소스도 
+제공해야 합니다. 이것은 특별하게 명명한 리소스 디렉터리에 그룹화하는 방법을 씁니다. Android는 
+런타임에 현재 구성을 근거로 적절한 리소스를 사용합니다. 예를 들어 
+여러 가지 화면 크기에 따라 여러 가지 UI 레이아웃을 제공하거나 언어 설정에 따라 
+각기 다른 문자열을 제공하고자 할 수 있습니다.</p>
+
+<p>애플리케이션 리소스를 외부화하면
+프로젝트 {@code R} 클래스에서 발생하는 리소스 ID로 액세스할 수 있습니다. 애플리케이션에서
+리소스를 사용하는 방법은 <a href="accessing-resources.html">리소스
+액세스</a>에서 설명합니다. 이 문서에서는 Android 프로젝트에서 리소스를 그룹화하는 방법과 특정 기기 구성에 대한 
+대체 리소스를 제공하는 법을 보여드립니다.</p>
+
+
+<h2 id="ResourceTypes">리소스 유형 그룹화</h2>
+
+<p>프로젝트
+{@code res/} 디렉터리의 특정 하위 디렉터리에 각 유형의 리소스를 배치해야 합니다. 예를 들어, 다음은 간단한 프로젝트의 파일 계층입니다.</p>
+
+<pre class="classic no-pretty-print">
+MyProject/
+    src/  <span style="color:black">
+        MyActivity.java  </span>
+    res/
+        drawable/  <span style="color:black">
+            graphic.png  </span>
+        layout/  <span style="color:black">
+            main.xml
+            info.xml</span>
+        mipmap/  <span style="color:black">
+            icon.png </span>
+        values/  <span style="color:black">
+            strings.xml  </span>
+</pre>
+
+<p>이 예시에서 {@code res/} 디렉터리가 모든 리소스(이미지 리소스, 레이아웃 리소스 두 개, 시작 관리자 아이콘용 {@code mipmap/} 디렉터리,
+ 문자열 리소스 파일)를 (하위 디렉터리에
+) 포함하는 것을 볼 수 있습니다. 리소스 디렉터리 이름은
+중요하며 표1에 설명되어 있습니다.</p>
+
+<p class="note"><strong>참고:</strong> Mipmap 폴더를 사용하는 자세한 방법은 
+<a href="{@docRoot}tools/projects/index.html#mipmap">프로젝트 관리 개요</a>를 참조하십시오.</p>
+
+<p class="table-caption" id="table1"><strong>표 1</strong>. 프로젝트 
+{@code res/} 디렉터리 내부에서 지원하는 리소스 디렉터리입니다.</p>
+
+<table>
+  <tr>
+    <th scope="col">디렉터리</th>
+    <th scope="col">리소스 유형</th>
+  </tr>
+
+  <tr>
+    <td><code>animator/</code></td>
+    <td><a href="{@docRoot}guide/topics/graphics/prop-animation.html">속성 
+애니메이션</a>을 정의하는 XML 파일입니다.</td>
+  </tr>
+
+  <tr>
+    <td><code>anim/</code></td>
+    <td><a href="{@docRoot}guide/topics/graphics/view-animation.html#tween-animation">tween 
+애니메이션</a>을 정의하는 XML 파일입니다 (속성 애니메이션도 이 디렉터리에 저장할 수 있지만
+두 가지 유형을 구분하기 위해 속성 애니메이션에는 {@code animator/} 디렉터리가 기본 설정됩니다
+).</td>
+  </tr>
+
+  <tr>
+    <td><code>color/</code></td>
+    <td>색상의 상태 목록을 정의하는 XML 파일입니다. <a href="color-list-resource.html">색상 상태
+목록 리소스</a>를 참조하십시오.</td>
+  </tr>
+
+  <tr>
+    <td><code>drawable/</code></td>
+
+    <td><p>다음 드로어블 리소스 하위 유형으로 컴파일 되는 비트맵 파일({@code .png}, {@code .9.png}, {@code .jpg}, {@code .gif}) 또는 XML 파일입니다.
+</p>
+      <ul>
+        <li>비트맵 파일</li>
+        <li>나인 패치(크기 조절 가능한 비트맵)</li>
+        <li>상태 목록</li>
+        <li>형태</li>
+        <li>드로어블 애니메이션</li>
+        <li>기타 드로어블</li>
+      </ul>
+      <p><a href="drawable-resource.html">드로어블 리소스</a>를 참조하십시오.</p>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>mipmap/</code></td>
+    <td>각기 다른 시작 관리자 아이콘 밀도에 대한 드로어블 파일입니다. 
+{@code mipmap/} 폴더로 시작 관리자 아이콘을 관리하는 자세한 방법은 
+<a href="{@docRoot}tools/project/index.html#mipmap">프로젝트 관리 개요</a>를 참조하십시오.</td>
+  </tr>
+
+  <tr>
+    <td><code>layout/</code></td>
+    <td>사용자 인터페이스 레이아웃을 정의하는 XML 파일입니다.
+        <a href="layout-resource.html">레이아웃 리소스</a>를 참조하십시오.</td>
+  </tr>
+
+  <tr>
+    <td><code>menu/</code></td>
+    <td>옵션 메뉴, 컨텍스트 메뉴 또는 하위 
+메뉴 등과 같은 애플리케이션 메뉴를 정의하는 XML입니다. <a href="menu-resource.html">메뉴 리소스</a>를 참조하십시오.</td>
+  </tr>
+
+  <tr>
+    <td><code>raw/</code></td>
+    <td><p>원시 형태로 저장하기 위한 임의의 파일입니다. 원시 
+{@link java.io.InputStream}으로 이런 리소스를 열려면 리소스 ID, {@code R.raw.<em>filename</em>}으로 {@link android.content.res.Resources#openRawResource(int)
+Resources.openRawResource()}를 호출합니다.</p>
+      <p>그러나 원본 파일 이름과 파일 계층에 액세스해야 하는 경우, 
+({@code res/raw/}가 아니라) {@code
+assets/} 디렉터리에 몇몇 리소스를 저장해두는 것을 고려해 볼 수 있습니다. {@code assets/}에 있는 파일에는 
+리소스 ID가 주어지지 않으므로, 이들을 읽는 유일한 방법은 {@link android.content.res.AssetManager}를 사용하는 것뿐입니다.</p></td>
+  </tr>
+
+  <tr>
+    <td><code>values/</code></td>
+    <td><p>문자열, 정수 및 색과 같은 단순 값이 들어있는 XML 파일입니다.</p>
+      <p>다른 {@code res/} 하위 디렉터리에 있는 XML 리소스 파일은 XML 파일 이름을 근거로 
+하나의 리소스를 정의하는 반면, {@code values/} 디렉터리에 있는 파일은 여러 개의 리소스를 설명합니다.
+이 디렉터리 안에 있는 파일의 경우, {@code &lt;resources&gt;} 요소의 각 하위 요소가 리소스를 하나씩 
+정의합니다. 예를 들어 {@code &lt;string&gt;} 요소는 
+{@code R.string} 리소스를 생성하고 {@code &lt;color&gt;} 요소는 {@code R.color}
+ 리소스를 생성합니다.</p>
+      <p>각 리소스가 자체 XML 요소로 정의되므로, 원하는 대로 파일을 정의하고 하나의 파일에 여러 가지 리소스 유형을
+배정할 수 있습니다. 하지만 명확히 하려면 여러 가지 파일에 
+각기 고유한 리소스를 배치하는 것이 좋을 수도 있습니다. 예를 들어, 다음은 이 디렉터리에서 생성할 수 있는 리소스를 위한
+파일 이름 명명법입니다.</p>
+      <ul>
+        <li>리소스 배열을 위한 arrays.xml(<a href="more-resources.html#TypedArray">입력 배열</a>).</li>
+        <li><a href="more-resources.html#Color">색상 값</a>을 위한 colors.xml</li>
+        <li><a href="more-resources.html#Dimension">치수 값</a>을 위한 dimens.xml</li>
+        <li><a href="string-resource.html">문자열
+값</a>을 위한 strings.xml</li>
+        <li><a href="style-resource.html">스타일</a>을 위한 styles.xml</li>
+      </ul>
+      <p><a href="string-resource.html">문자열 리소스</a>,
+<a href="style-resource.html">스타일 리소스</a> 및 
+<a href="more-resources.html">자세한 리소스 유형</a>을 참조하십시오.</p>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>xml/</code></td>
+    <td>런타임에 읽을 수 있는 임의의 XML 파일로, 이때 {@link
+android.content.res.Resources#getXml(int) Resources.getXML()}을 호출하는 방법을 씁니다. 다양한 XML 구성 파일을 여기에 저장해야 합니다. 예를 들어 
+<a href="{@docRoot}guide/topics/search/searchable-config.html">검색 가능한 구성</a> 등이 이에 해당됩니다.
+<!-- or preferences configuration. --></td>
+  </tr>
+</table>
+
+<p class="caution"><strong>주의:</strong> 리소스 파일을 
+{@code res/} 디렉터리에 직접 저장하면 절대로 안 됩니다. 컴파일러 오류를 초래하게 됩니다.</p>
+
+<p>특정 유형의 리소스에 관한 자세한 정보는 <a href="available-resources.html">리소스 유형</a> 문서를 참조하십시오.</p>
+
+<p>표1에 정의된 하위 디렉터리에 저장하는 리소스는 "기본"
+리소스입니다. 다시 말해, 이러한 리소스가 애플리케이션의 기본 디자인과 콘텐츠를 정의한다는 뜻입니다. 
+그러나, 여러 가지 유형의 Android 구동 기기는 각기 다른 유형의 리소스를 호출할 수도 있습니다.
+예를 들어 어느 기기의 화면이 보통보다 큰 편이라면, 추가적인 화면 공간의 이점을 활용할 수 있는 
+다른 레이아웃 리소스를 제공해야 합니다. 또는, 기기에 다른 언어 설정이 있을 경우
+해당 텍스트를 사용자 인터페이스에 번역하는 다른 문자열 리소스를
+제공해야 합니다. 여러 가지 기기 구성에 여러 가지 리소스를 제공하려면,
+기본 리소스 외에 대체 리소스를
+제공해야 합니다.</p>
+
+
+<h2 id="AlternativeResources">대체 리소스 제공</h2>
+
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
+<p class="img-caption">
+<strong>그림 1.</strong> 서로 다른 두 개의 기기로, 서로 다른 레이아웃 리소스를 사용합니다.</p>
+</div>
+
+<p>거의 모든 애플리케이션이 특정 기기 구성을 지원하는 
+대체 리소스를 제공해야 합니다. 예를 들어 여러 가지 화면 밀도에 맞는 대체 드로어블 리소스를 
+포함시켜야 하며 여러 가지 언어에 맞게 대체 문자열 리소스도 포함시켜야 합니다. Android는 런타임에 
+현재 기기 구성을 감지하고 애플리케이션에 대해 적절한 리소스를 
+로드합니다.</p>
+
+<p>리소스 세트에 대하여 구성별로 적절한 대체를 지정하려면 다음과 같이 합니다.</p>
+<ol>
+  <li>{@code res/}에 {@code
+<em>&lt;resources_name&gt;</em>-<em>&lt;config_qualifier&gt;</em>} 형식으로 이름을 지정한 새 디렉터리를 만듭니다.
+    <ul>
+      <li><em>{@code &lt;resources_name&gt;}</em>은 해당 기본 리소스의 디렉터리 이름입니다(표1에 정의).
+</li>
+      <li><em>{@code &lt;qualifier&gt;}</em>는 리소스를 사용할 개별 구성을 지정하는
+이름입니다(표2에 정의).</li>
+    </ul>
+    <p>하나 이상의 <em>{@code &lt;qualifier&gt;}</em>를 추가할 수 있습니다. 각기 대시로 
+구분합니다.</p>
+    <p class="caution"><strong>주의:</strong> 여러 한정자를 추가할 때는
+표2에 나열된 것과 같은 순서로 배치해야 합니다. 한정자의 순서가 잘못 지정되면 
+해당 리소스가 무시됩니다.</p>
+  </li>
+  <li>해당되는 각 대체 리소스를 이 새 디렉터리에 저장하십시오. 이 리소스 파일은 기본 리소스 파일과 
+똑같은 이름을 지정해야 합니다.</li>
+</ol>
+
+<p>예를 들어 다음은 기본 리소스와 대체 리소스입니다.</p>
+
+<pre class="classic no-pretty-print">
+res/
+    drawable/   <span style="color:black">
+        icon.png
+        background.png    </span>
+    drawable-hdpi/  <span style="color:black">
+        icon.png
+        background.png  </span>
+</pre>
+
+<p>{@code hdpi} 한정자는 해당 디렉터리의 리소스가
+고화질 화면 기기용이라는 것을 나타냅니다. 각 드로어블 디렉터리의 이미지는 특정 화면 화질에 맞추어 
+크기가 지정되었으나 파일 이름은
+똑같습니다. 이렇게 하면 {@code icon.png} 또는 {@code
+background.png} 이미지를 참조하는 데 사용하는 리소스 ID는 항상 같지만 Android가 각 리소스 중에서 현재 기기에 가장 잘 일치하는 
+버전을 선택하게 됩니다. 이때 리소스 디렉터리 이름의 한정자를 기기 구성 정보와 
+비교하는 방법을 씁니다.</p>
+
+<p>Android는 여러 가지 구성 한정자를 지원하며 한 디렉터리 이름에 
+여러 개의 한정자를 추가할 수 있습니다. 각 한정자를 대시로 구분하면 됩니다. 표 2는 
+유효한 구성 한정자를 우선 순위대로 나열한 것입니다. 리소스 디렉터리에 여러 개의 
+한정자를 사용하는 경우, 해당 한정자를 디렉터리 이름에 추가할 때 이 표에 나열된 것과 같은 
+순서로 추가해야 합니다.</p>
+
+
+<p class="table-caption" id="table2"><strong>표 2.</strong> 구성 한정자 
+이름입니다.</p>
+<table>
+    <tr>
+        <th>구성</th>
+        <th>한정자 값</th>
+        <th>설명</th>
+    </tr>
+    <tr id="MccQualifier">
+      <td>MCC 및 MNC</td>
+      <td>예:<br/>
+        <code>mcc310</code><br/>
+        <code><nobr>mcc310-mnc004</nobr></code><br/>
+        <code>mcc208-mnc00</code><br/>
+        등.
+      </td>
+      <td>
+        <p>이동통신 국가 코드(MCC)에 선택적으로 이동통신 네트워크 코드(MNC)가 이어지는 형태로, 
+기기의 SIM 카드에서 가져옵니다. 예를 들어, <code>mcc310</code>은 모든 이동통신사를 포함한 미국이고,
+<code>mcc310-mnc004</code>는 Verizon을 사용하는 미국, <code>mcc208-mnc00</code>은 Orange를 사용하는
+프랑스입니다.</p>
+        <p>기기가 무선 연결(GSM 전화)을 사용할 경우, MCC와 MNC 값은
+SIM 카드에서 가져옵니다.</p>
+        <p>MCC만 단독으로 사용할 수도 있습니다(예를 들어, 애플리케이션에 국가별 합법적 리소스를
+ 포함하는 경우). 언어에 기초해서만 지정해야 할 경우,
+<em>언어 및 지역</em> 한정자를 대신 사용합니다(아래에 설명). MCC와 
+MNC 한정자를 사용할 경우, 조심해서 사용하고 예상한 대로 작동하는지 테스트해야 합니다.</p>
+        <p>또한, 구성 필드 {@link
+android.content.res.Configuration#mcc}와 {@link
+android.content.res.Configuration#mnc}를 참조하십시오. 이 구성 필드는 각각 이동통신 국가 코드와 
+이동통신 네트워크 코드를 나타냅니다.</p>
+      </td>
+    </tr>
+    <tr id="LocaleQualifier">
+      <td>언어 및 지역</td>
+      <td>예:<br/>
+        <code>en</code><br/>
+        <code>fr</code><br/>
+        <code>en-rUS</code><br/>
+        <code>fr-rFR</code><br/>
+        <code>fr-rCA</code><br/>
+        등.
+      </td>
+      <td><p>언어는 두 글자의 <a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">ISO
+639-1</a> 언어 코드로 정의되고, 
+뒤이어 두 글자의 <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO
+3166-1-alpha-2</a> 지역 코드가 선택적으로 따라옵니다(소문자 "{@code r}" 뒤에 붙음).
+        </p><p>
+        코드는 대소문자를 구별하지 <em>않습니다</em>. {@code r} 접두사는 
+지역 부분을 구별하기 위해 사용합니다.
+        지역만 지정할 수는 없습니다.</p>
+        <p>사용자가 시스템 설정에서 언어를 변경할 경우 
+애플리케이션 수명 중에 변경될 수 있습니다. 런타임에서 애플리케이션에 어떤 영향을 미치는지 자세히 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를 참조하십시오.
+</p>
+        <p>다른 여러 언어에 맞게 애플리케이션을 지역화하기 위한 전체 지침은
+<a href="localization.html">지역화</a>를 참조하십시오.</p>
+        <p>또한, 현재 로케일을 나타내는 {@link android.content.res.Configuration#locale} 구성 필드도 
+참조하십시오.</p>
+      </td>
+    </tr>
+    <tr id="LayoutDirectionQualifier">
+      <td>레이아웃 방향</td>
+      <td><code>ldrtl</code><br/>
+        <code>ldltr</code><br/>
+      </td>
+      <td><p>애플리케이션의 레이아웃 방향입니다. {@code ldrtl}는 "오른쪽에서 왼쪽 방향 레이아웃"을 나타냅니다.
+{@code ldltr}는 "왼쪽에서 오른쪽 방향 레이아웃"을 나타내고 기본 암시적 값입니다.
+      </p>
+      <p>이는 레이아웃이나 드로어블, 값 등의 모든 리소스에 적용할 수 있습니다.
+      </p>
+      <p>예를 들어, 아랍어에 대한 특정 레이아웃을 제공하고
+다른 "오른쪽에서 왼쪽으로 쓰는" 언어(히브리어 또는 페르시아어)에 제네릭 레이아웃을 제공하고 싶다면 다음과 같이 해야 합니다.
+      </p>
+<pre class="classic no-pretty-print">
+res/
+    layout/   <span style="color:black">
+        main.xml  </span>(Default layout)
+    layout-ar/  <span style="color:black">
+        main.xml  </span>(Specific layout for Arabic)
+    layout-ldrtl/  <span style="color:black">
+        main.xml  </span>(Any "right-to-left" language, except
+                  for Arabic, because the "ar" language qualifier
+                  has a higher precedence.)
+</pre>
+        <p class="note"><strong>참고:</strong> 앱에서 오른쪽에서 왼쪽 레이아웃 기능을 활성화하려면
+<a href="{@docRoot}guide/topics/manifest/application-element.html#supportsrtl">{@code
+supportsRtl}</a>을 {@code "true"}로 설정하고 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a>을 17 이상으로 설정해야 합니다.</p>
+        <p><em>API 레벨 17에서 추가되었습니다.</em></p>
+      </td>
+    </tr>
+    <tr id="SmallestScreenWidthQualifier">
+      <td>smallestWidth</td>
+      <td><code>sw&lt;N&gt;dp</code><br/><br/>
+        예:<br/>
+        <code>sw320dp</code><br/>
+        <code>sw600dp</code><br/>
+        <code>sw720dp</code><br/>
+        등.
+      </td>
+      <td>
+        <p>화면의 기본 크기로, 사용 가능한 화면 영역의 가장 짧은 치수가 
+나타냅니다. 구체적으로 기기의 smallestWidth는 해당 화면의 이용 가능한 높이와 너비의 
+가장 짧은 치수를 말합니다(이것을 화면에 대한 "가능한 한 가장 좁은 너비"로 생각해도 됩니다). 이 한정자를 사용하면 
+화면의 현재 방향에 관계 없이 
+애플리케이션이 해당 UI에서 이용 가능한 너비 중 최소 {@code &lt;N&gt;}dps를 확보하도록 할 수 있습니다.</p>
+        <p>예를 들어, 레이아웃에 언제나 
+600dp 이상의 화면 최소 치수가 필요하다면, 이 한정자를 사용하여 레이아웃 리소스, {@code
+res/layout-sw600dp/}를 만들 수 있습니다. 시스템이 이러한 리소스를 사용하는 것은 사용 가능한 화면의 최소 치수가 적어도 600dp가 
+되는 경우뿐이며, 이때 600dp라는 크기가 사용자 쪽에서 보기에 높이이든 너비이든 
+관계 없습니다. 이 smallestWidth는 기기의 고정된 화면 크기 특성입니다. <strong>
+기기의 smallestWidth는 화면 방향이 변경되어도 바뀌지 않습니다</strong>.</p>
+        <p>기기의 smallestWidth는 화면 장식과 시스템 UI를 감안합니다. 예를 들어,
+화면 상에서 최소 너비의 축 주변 공간을 차지하는 영구 UI 요소가 있다면,
+시스템은 smallestWidth를 실제 화면 크기보다 작게 선언합니다. 
+이것은 개발자의 UI가 사용할 수 없는 화면 픽셀이기 때문입니다. 따라서 개발자가 사용하는 값은 
+<em>레이아웃에서 요구하는</em> 실제 최소 치수여야 합니다(일반적으로 이 값은 화면의 현재 방향과 관계없이 
+레이아웃이 지원하는 "최소 너비"가 됩니다.).</p>
+        <p>다음의 몇몇 값은 보편적인 화면 크기에 대하여 사용할 수 있습니다.</p>
+        <ul>
+          <li>화면 크기 320에 화면 구성이 아래와 같은 기기:
+            <ul>
+              <li>240x320ldpi(QVGA 핸드셋)</li>
+              <li>320x480mdpi(핸드셋)</li>
+              <li>480x800hdpi(고화질 핸드셋)</li>
+            </ul>
+          </li>
+          <li>480x800mdpi(태블릿/핸드셋) 등의 화면에는 480을 사용합니다.</li>
+          <li>600x1024mdpi (7인치 태블릿) 등의 화면에는 600을 사용합니다.</li>
+          <li>720x1280mdpi (10인치 태블릿) 등의 화면에는 720을 사용합니다.</li>
+        </ul>
+        <p>애플리케이션이 
+smallestWidth 한정자의 여러 값이 포함된 여러 리소스 디렉터리를 제공하면, 시스템은 
+기기의 smallestWidth에 가장 가까운(그러나 이를 초과하지 않는) 값을 사용합니다. </p>
+        <p><em>API 레벨 13에서 추가되었습니다.</em></p>
+        <p>이외에도 애플리케이션과 호환되는 최소한의 smallestWidth를 선언하는 <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html#requiresSmallest">{@code
+android:requiresSmallestWidthDp}</a> 속성과 
+기기의 smallestWidth 값을 보유한 {@link
+android.content.res.Configuration#smallestScreenWidthDp} 
+구성 필드도 참조하십시오.</p>
+        <p>여러 가지 화면에 맞는 디자인과 한정자 사용에 관한 자세한 정보는 
+<a href="{@docRoot}guide/practices/screens_support.html">다중 화면
+지원</a> 개발자 가이드를 참조하십시오.</p>
+      </td>
+    </tr>
+    <tr id="ScreenWidthQualifier">
+      <td>이용 가능한 너비</td>
+      <td><code>w&lt;N&gt;dp</code><br/><br/>
+        예:<br/>
+        <code>w720dp</code><br/>
+        <code>w1024dp</code><br/>
+        등.
+      </td>
+      <td>
+        <p>리소스를 사용해야 하는 {@code dp} 단위에서 최소 이용 가능한 화면 너비를 지정합니다. 
+이는 <code>&lt;N&gt;</code> 값이 정의합니다.  이 구성 
+값은 현재 실제 너비에 맞추기 위해 화면 방향이 가로와 세로 사이를 오가며 바뀔 때 
+변경됩니다.</p>
+        <p>애플리케이션이 이 구성에 대해 서로 다른 값이 포함된 여러 개의 리소스 디렉터리를 제공하면,
+시스템은 기기의 현재 화면 너비에 가장 가까운(그러나 이를 초과하지 않는) 
+값을 사용합니다.  이 값은 
+화면 장식을 감안한 것이므로, 기기의 왼쪽이나 오른쪽 가장자리에 
+영구 UI 요소가 있을 경우, 기기는 
+이러한 UI 요소를 감안하여 애플리케이션의 이용 가능한 공간을 줄여서
+ 실제 화면 크기보다 작은 너비 값을 사용합니다.</p>
+        <p><em>API 레벨 13에서 추가되었습니다.</em></p>
+        <p>현재 화면 너비를 보유한 {@link android.content.res.Configuration#screenWidthDp}
+ 구성 필드도 참조하십시오.</p>
+        <p>여러 가지 화면에 맞는 디자인과 한정자 사용에 관한 자세한 정보는 
+<a href="{@docRoot}guide/practices/screens_support.html">다중 화면
+지원</a> 개발자 가이드를 참조하십시오.</p>
+      </td>
+    </tr>
+    <tr id="ScreenHeightQualifier">
+      <td>이용 가능한 높이</td>
+      <td><code>h&lt;N&gt;dp</code><br/><br/>
+        예:<br/>
+        <code>h720dp</code><br/>
+        <code>h1024dp</code><br/>
+        등.
+      </td>
+      <td>
+        <p>리소스가 사용되어야 하는 최소한의 사용 가능한 화면 높이를 "dp" 단위로 나타냅니다. 
+이는 <code>&lt;N&gt;</code> 값이 정의합니다.  이 구성 
+값은 현재 실제 높이에 맞추기 위해 화면 방향이 가로와 세로 사이를 오가며 바뀔 때 
+변경됩니다.</p>
+        <p>애플리케이션이 이 구성에 대해 서로 다른 값이 포함된 여러 개의 리소스 디렉터리를 제공하면,
+시스템은 기기의 현재 화면 높이에 가장 가까운(그러나 이를 초과하지 않는) 
+값을 사용합니다.  이 값은 
+화면 장식을 감안한 것이므로, 기기의 상단이나 하단 가장자리에 
+영구 UI 요소가 있을 경우, 기기는 
+이러한 UI 요소를 감안하여 애플리케이션의 이용 가능한 공간을 줄여서
+ 실제 화면 크기보다 작은 높이 값을 사용합니다.  
+상태 표시줄에 고정되지 않은 화면 장식(예를 들어 
+전화 상태 표시줄은 전체 화면에서 숨길 수 있음)은 여기에서 감안하지 <em>않았고</em>, 
+제목 표시줄이나 작업 모음 등의 창 장식도 감안되지 않았으므로, 애플리케이션 입장에서는 자신이 지정한 것보다 어느 정도 작은 공간을 
+받아들일 대비를 해야 합니다.
+        <p><em>API 레벨 13에서 추가되었습니다.</em></p>
+        <p>현재 화면 너비를 보유한 {@link android.content.res.Configuration#screenHeightDp}
+ 구성 필드도 참조하십시오.</p>
+        <p>여러 가지 화면에 맞는 디자인과 한정자 사용에 관한 자세한 정보는 
+<a href="{@docRoot}guide/practices/screens_support.html">다중 화면
+지원</a> 개발자 가이드를 참조하십시오.</p>
+      </td>
+    </tr>
+    <tr id="ScreenSizeQualifier">
+      <td>화면 크기</td>
+      <td>
+        <code>small</code><br/>
+        <code>normal</code><br/>
+        <code>large</code><br/>
+        <code>xlarge</code>
+      </td>
+      <td>
+        <ul class="nolist">
+        <li>{@code small}: 저밀도 QVGA 화면과 비슷한 
+크기의 화면입니다. 작은 화면의 최소 레이아웃 크기는
+약 320x426 dp단위입니다.  이 화면의 예시로는 QVGA 저밀도 및 VGA 고밀도가 
+있습니다.</li>
+        <li>{@code normal}: 중밀도 HVGA 화면과 
+비슷한 크기의 화면입니다. 정상 화면의
+ 최소 레이아웃 크기는 약 320x470 dp 단위입니다.  이 화면의 예로는 
+WQVGA 저밀도, HVGA 중밀도, WVGA 고밀도 등이 있습니다.
+</li>
+        <li>{@code large}: 중밀도 VGA 화면과 
+비슷한 크기의 화면입니다.
+        큰 화면의 최소 레이아웃 크기는 약 480x640 dp 단위입니다.
+        이 화면의 예시로는 VGA 및 WVGA 중밀도 화면이 있습니다.</li>
+        <li>{@code xlarge}: 일반적인 중밀도 HVGA 화면보다 상당히 큰 화면을 
+말합니다. 초대형 화면의
+ 최소 레이아웃 크기는 약 720x960 dp 단위입니다.  대부분의 경우, 초대형 화면 기기는 
+주머니에 넣어 다니기에 너무 큽니다. 따라서 태블릿 스타일의 기기일 가능성이 
+높습니다. <em>API 레벨 9에서 추가되었습니다.</em></li>
+        </ul>
+        <p class="note"><strong>참고:</strong> 크기 한정자를 사용하더라도 해당 리소스가 그 크기의 화면 
+<em>전용</em>이라는 뜻은 아닙니다. 현재 기기 구성과 더욱 잘 맞는 한정자가 포함된 대체 리소스를 
+제공하지 않으면, 
+시스템이 <a href="#BestMatch">가장 잘 일치하는</a> 리소스를 사용합니다.</p>
+        <p class="caution"><strong>주의:</strong> 모든 리소스가 현재 화면보다
+<em>큰</em> 크기 한정자를 사용하는 경우, 시스템은 리소스를 사용하지 <strong>않으며</strong> 애플리케이션은 런타임에 작동이 중단됩니다(예를 들어, 모든 레이아웃 리소스에 {@code
+xlarge} 한정자가 태그되어 있지만 기기는 일반 크기 화면일 경우
+).</p>
+        <p><em>API 레벨 4에서 추가되었습니다.</em></p>
+        
+        <p>자세한 정보는 <a href="{@docRoot}guide/practices/screens_support.html">다중 화면 
+지원</a>을 참조하십시오.</p>
+        <p>{@link android.content.res.Configuration#screenLayout} 구성 필드도 참조하십시오. 
+이것은 화면이 소형, 일반 크기 또는 
+대형인지를 나타냅니다.</p>
+      </td>
+    </tr>
+    <tr id="ScreenAspectQualifier">
+      <td>화면 비율</td>
+      <td>
+        <code>long</code><br/>
+        <code>notlong</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code long}: WQVGA, WVGA, FWVGA 등의 긴 화면</li>
+          <li>{@code notlong}: QVGA, HVGA 및 VGA 등의 길지 않은 화면</li>
+        </ul>
+        <p><em>API 레벨 4에서 추가되었습니다.</em></p>
+        <p>이것은 순전히 화면 비율에만 기초합니다("긴" 화면이 더 넓습니다). 이는 
+화면 방향과 관계가 없습니다.</p>
+        <p>{@link android.content.res.Configuration#screenLayout}도 참조하십시오. 
+이것은 화면이 긴 화면인지 여부를 나타냅니다.</p>
+      </td>
+    </tr>
+    <tr id="OrientationQualifier">
+      <td>화면 방향</td>
+      <td>
+        <code>port</code><br/>
+        <code>land</code>  <!-- <br/>
+        <code>square</code>  -->
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code port}: 기기가 세로 방향(수직)입니다.</li>
+          <li>{@code land}: 기기가 가로 방향(수평)입니다.</li>
+          <!-- Square mode is currently not used. -->
+        </ul>
+        <p>이것은 사용자가 화면을 돌리는 경우 애플리케이션 수명 중에 
+변경될 수 있습니다. 이것이 런타임에 애플리케이션에 어떤 영향을 미치는지 알아보려면 
+<a href="runtime-changes.html">런타임 변경 처리</a>를 참조하십시오.</p>
+        <p>{@link android.content.res.Configuration#orientation} 구성 필드도 참조하십시오. 
+이는 현재 기기 방향을 나타냅니다.</p>
+      </td>
+    </tr>
+    <tr id="UiModeQualifier">
+      <td>UI 모드</td>
+      <td>
+        <code>car</code><br/>
+        <code>desk</code><br/>
+        <code>television</code><br/>
+        <code>appliance</code>
+        <code>watch</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code car}: 기기가 차량용 도크에서 표시되고 있습니다.</li>
+          <li>{@code desk}: 기기가 데스크용 도크에서 표시되고 있습니다.</li>
+          <li>{@code television}: 기기가 텔레비전에서 표시되고 있으며, 
+UI가 큰 화면에 있고 사용자가 여기에서 멀리 떨어져 있는 
+"텐 풋(ten foot)" 환경을 제공하고 있습니다. 이는 주로 DPAD 또는 
+기타 비-포인터 상호 작용 주변을 가리킵니다.</li>
+          <li>{@code appliance}: 기기가 가전 제품 역할을 하고 있으며, 디스플레이 
+화면이 없습니다.</li>
+          <li>{@code watch}: 기기에 디스플레이 화면이 있고 손목에 착용됩니다.</li>
+        </ul>
+        <p><em>API 레벨 8에서 추가되었고, 텔레비전은 API 13에서, 시계는 API 20에서 추가되었습니다.</em></p>
+        <p>기기가 도크에 삽입되거나 제거될 때 앱이 응답하는 방식에 관한 정보는 
+<a href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">도킹 상태 및 유형 
+판별과 모니터링</a>을 읽어보십시오.</p>
+        <p>이것은 사용자가 기기를 도크에 놓는 경우 애플리케이션 수명 중에 
+변경될 수 있습니다. 이러한 모드 중 몇 가지는 {@link
+android.app.UiModeManager}를 사용하여 활성화 또는 비활성화할 수 있습니다. 이것이 런타임에 애플리케이션에 어떤 영향을 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를 
+참조하십시오.</p>
+      </td>
+    </tr>
+    <tr id="NightQualifier">
+      <td>야간 모드</td>
+      <td>
+        <code>night</code><br/>
+        <code>notnight</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code night}: 야간</li>
+          <li>{@code notnight}: 주간</li>
+        </ul>
+        <p><em>API 레벨 8에서 추가되었습니다.</em></p>
+        <p>이것은 야간 모드가 자동 모드인 상태(기본)에서 애플리케이션의 수명 중에 
+변경될 수 있습니다. 이 경우 모드는 하루 중 시간대를 기반으로 변경됩니다.  이 모드는 
+{@link android.app.UiModeManager}를 사용하여 활성화 또는 비활성화할 수 있습니다. 이것이 런타임 중 애플리케이션에 어떤 영향을 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를 
+참조하십시오.</p>
+      </td>
+    </tr>
+    <tr id="DensityQualifier">
+      <td>화면 픽셀 밀도(dpi)</td>
+      <td>
+        <code>ldpi</code><br/>
+        <code>mdpi</code><br/>
+        <code>hdpi</code><br/>
+        <code>xhdpi</code><br/>
+        <code>xxhdpi</code><br/>
+        <code>xxxhdpi</code><br/>
+        <code>nodpi</code><br/>
+        <code>tvdpi</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code ldpi}: 저밀도 화면, 약 120dpi.</li>
+          <li>{@code mdpi}: 중밀도(일반적인 HVGA에서) 화면, 약
+160dpi.</li>
+          <li>{@code hdpi}: 고밀도 화면, 약 240dpi.</li>
+          <li>{@code xhdpi}: 초고밀도 화면, 약 320dpi. <em>API 레벨 8에서 
+추가되었습니다.</em></li>
+          <li>{@code xxhdpi}: 슈퍼 초고밀도 화면, 약 480dpi. <em>API 레벨 16에서 
+추가되었습니다.</em></li>
+          <li>{@code xxxhdpi}: 울트라 슈퍼 초고밀도 화면 사용(시작 관리자 아이콘만 해당, 
+<em>다중 화면 지원</em>의 
+<a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">참고</a>를 참조하십시오), 약 640dpi. <em>API 레벨 18에서 
+추가되었습니다.</em></li>
+          <li>{@code nodpi}: 이것은 기기 밀도에 일치하도록 크기를 조정하고자 하지 않는 비트맵 리소스에 
+사용할 수 있습니다.</li>
+          <li>{@code tvdpi}: Mdpi와 hdpi 사이 어딘가에 해당되는 화면, 약 213dpi. 이것은 
+"기본" 밀도 그룹으로 간주되지 않습니다. 이는 대체로 텔레비전용으로 만들어진 것이며 
+대부분의 앱에는 필요하지 않는 것이 정상입니다. mdpi 및 hdpi만 제공하면 대부분의 앱에는 충분하고 
+시스템이 필요에 따라 크기를 조정해줍니다. 이 한정자는 API 레벨 13과 함께 도입되었습니다.</li>
+        </ul>
+        <p>여섯 가지 기본 밀도간에 3:4:6:8:12:16 비율 척도가 있습니다(tvdpi 밀도는 
+무시). 그러므로 ldpi의 9x9 비트맵은 mdpi에서 12x12이고, hdpi에서 18x18, xhdpi에서 24x24 등, 이런 식으로 적용됩니다.
+</p>
+        <p>이미지 리소스가 텔레비전이나 특정 기기에서 제대로 보이지 않는다고 결정하고 
+tvdpi 리소스를 사용하려 할 경우, 배율은 1.33*mdpi입니다. 예를 들어,
+mdpi 화면의 100px x 100px 이미지는 tvdpi에서 133px x 133px가 되어야 합니다.</p>
+        <p class="note"><strong>참고:</strong> 밀도 한정자를 사용하더라도 해당 리소스가 그 밀도의 화면 
+<em>전용</em>이라는 뜻은 아닙니다. 현재 기기 구성과 더욱 잘 맞는 한정자가 포함된 대체 리소스를 
+제공하지 않으면, 
+시스템이 <a href="#BestMatch">가장 잘 일치하는</a> 리소스를 사용합니다.</p>
+        <p>다양한 화질을 처리하는 방법과 
+Android가 현재 화질에 맞춰 비트맵을 축소하는 방법에 관한 자세한 정보는 <a href="{@docRoot}guide/practices/screens_support.html">다중 화면 
+지원</a>을 참조하십시오.</p>
+       </td>
+    </tr>
+    <tr id="TouchscreenQualifier">
+      <td>터치 스크린 유형</td>
+      <td>
+        <code>notouch</code><br/>
+        <code>finger</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code notouch}: 기기에 터치 스크린이 없습니다.</li>
+          <li>{@code finger}: 기기에 터치 스크린이 있으며 이를 
+사용자의 손가락을 사용한 방향 지시 상호 작용을 통해 쓰도록 되어 있습니다.</li>
+        </ul>
+        <p>{@link android.content.res.Configuration#touchscreen} 구성 필드도 참조하십시오. 
+이는 기기에서 사용되는 터치 스크린의 유형을 나타냅니다.</p>
+      </td>
+    </tr>
+    <tr id="KeyboardAvailQualifier">
+      <td>키보드 가용성</td>
+      <td>
+        <code>keysexposed</code><br/>
+        <code>keyshidden</code><br/>
+        <code>keyssoft</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code keysexposed}: 기기에서 키보드를 사용할 수 있습니다. 키보드에 
+소프트웨어 키보드가 활성화되어 있으면(이럴 가능성이 큽니다), 하드웨어 키보드가 사용자에게 노출되어 있지 
+<em>않거나</em> 기기에 하드웨어 키보드가 없더라도 이 리소스를 사용할 수 있습니다. 소프트웨어 
+키보드가 제공되어 있지 않거나 비활성화되어 있는 경우 이것은 하드웨어 키보드가 노출되어 있을 때에만 
+사용할 수 있습니다.</li>
+          <li>{@code keyshidden}: 기기에서 하드웨어 키보드를 사용할 수 있지만 
+숨겨져 있고 <em>이에 더하여</em> 기기에 소프트웨어 키보드가 활성화되어 있지 <em>않습니다</em>.</li>
+          <li>{@code keyssoft}: 기기에 활성화된 소프트웨어 키보드가 있습니다(표시 여부는 
+무관).</li>
+        </ul>
+        <p><code>keysexposed</code> 리소스를 제공하지만 <code>keyssoft</code>
+리소스는 제공하지 않는다면, 시스템은 소프트웨어 키보드가 활성화되어 있는 동안은 키보드가 보이는지 여부와 관계없이 <code>keysexposed</code> 
+리소스를 사용합니다.</p>
+        <p>이것은 사용자가 하드웨어 키보드를 여는 경우 애플리케이션 수명 중에 
+변경될 수 있습니다. 이것이 런타임에 애플리케이션에 어떤 영향을 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를 
+참조하십시오.</p>
+        <p>또한, 구성 필드 {@link
+android.content.res.Configuration#hardKeyboardHidden}과 {@link
+android.content.res.Configuration#keyboardHidden}을 참조하십시오. 이 필드는 각각 하드웨어 키보드의 가시성과 
+모든 종류의 키보드(소프트웨어 포함)의 가시성을 나타냅니다.</p>
+      </td>
+    </tr>
+    <tr id="ImeQualifier">
+      <td>기본 텍스트 입력 메서드</td>
+      <td>
+        <code>nokeys</code><br/>
+        <code>qwerty</code><br/>
+        <code>12key</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code nokeys}: 기기에 텍스트 입력을 위한 하드웨어 키가 없습니다.</li>
+          <li>{@code qwerty}: 기기에 하드웨어 쿼티 키보드가 있습니다(이것이 
+사용자
+에게 표시되는지 여부는 무관).</li>
+          <li>{@code 12key}: 기기에 하드웨어 12-키 키보드가 있습니다(이것이 사용자에게 표시되는지 여부는 
+무관).</li>
+        </ul>
+        <p>{@link android.content.res.Configuration#keyboard} 구성 필드도 참조하십시오. 
+이는 기본 텍스트 입력 메서드를 사용할 수 있는지 여부를 나타냅니다.</p>
+      </td>
+    </tr>
+    <tr id="NavAvailQualifier">
+      <td>탐색 키 가용성</td>
+      <td>
+        <code>navexposed</code><br/>
+        <code>navhidden</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code navexposed}: 사용자가 탐색 키를 사용할 수 있습니다.</li>
+          <li>{@code navhidden}: 탐색 키를 사용할 수 없습니다(예: 닫힌 뚜껑 뒤에 있는 
+경우).</li>
+        </ul>
+        <p>이것은 사용자가 탐색 키를 드러내는 경우 애플리케이션 수명 중에 
+변경될 수 있습니다. 이것이 런타임에 애플리케이션에 어떤 영향을 미치는지 알아보려면 <a href="runtime-changes.html">런타임 변경 처리</a>를 
+참조하십시오.</p>
+        <p>{@link android.content.res.Configuration#navigationHidden} 구성 
+필드도 참조하십시오. 이는 탐색 키가 숨겨져 있는지 여부를 나타냅니다.</p>
+      </td>
+    </tr>
+    <tr id="NavigationQualifier">
+      <td>기본 비터치 탐색 메서드</td>
+      <td>
+        <code>nonav</code><br/>
+        <code>dpad</code><br/>
+        <code>trackball</code><br/>
+        <code>wheel</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code nonav}: 기기에 터치 스크린을 제외하고 다른 탐색 기능이 
+없습니다.</li>
+          <li>{@code dpad}: 기기에 탐색용 방향 패드(d-pad)가 있습니다.</li>
+          <li>{@code trackball}: 기기에 탐색용 트랙볼이 있습니다.</li>
+          <li>{@code wheel}: 기기에 탐색용 방향 휠이 있습니다.</li>
+        </ul>
+        <p>{@link android.content.res.Configuration#navigation} 구성 필드도 참조하십시오. 
+이는 사용 가능한 탐색 메서드의 유형을 나타냅니다.</p>
+      </td>
+    </tr>
+<!-- DEPRECATED
+    <tr>
+      <td>Screen dimensions</td>
+      <td>Examples:<br/>
+        <code>320x240</code><br/>
+        <code>640x480</code><br/>
+        etc.
+      </td>
+      <td>
+        <p>The larger dimension must be specified first. <strong>This configuration is deprecated
+and should not be used</strong>. Instead use "screen size," "wider/taller screens," and "screen
+orientation" described above.</p>
+      </td>
+    </tr>
+-->
+    <tr id="VersionQualifier">
+      <td>플랫폼 버전(API 레벨)</td>
+      <td>예:<br/>
+        <code>v3</code><br/>
+        <code>v4</code><br/>
+        <code>v7</code><br/>
+        등.</td>
+      <td>
+        <p>기기에서 지원하는 API 레벨입니다. 예를 들어, <code>v1</code>는 API 레벨
+1용이고(Android 1.0 이상 기기), <code>v4</code>는 API 레벨 4용(Android
+1.6 이상 기기)입니다. 이러한 값에 관한 자세한 정보는 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Android API 레벨</a> 문서를
+참조하십시오.</p>
+      </td>
+    </tr>
+</table>
+
+
+<p class="note"><strong>참고:</strong> 일부 구성 한정자는 Android
+1.0 이후부터 추가되었으므로 모든 Android 버전이 모든 한정자를 지원하는 것은 아닙니다. 새로운 한정자를 사용하면 암시적으로 
+플랫폼 버전 한정자도 추가하므로 구형 기기가 이를 무시하게 됩니다. 예를 들어 
+<code>w600dp</code> 한정자를 사용하면 자동적으로 <code>v13</code> 한정자를 포함합니다. 
+사용 가능한 너비 한정자가 API 레벨 13부터 새로 도입되었기 때문입니다. 문제를 애초에 피하려면, 항상 
+기본 리소스를 한 세트 포함하세요(<em>한정자 없는</em> 리소스 한 세트). 자세한 정보는 
+<a href="#Compatibility">리소스와 연관된 최선의 기기 호환성 제공
+</a>을 참조하십시오.</p>
+
+
+
+<h3 id="QualifierRules">한정자 이름 규칙</h3>
+
+<p>다음은 구성 한정자 이름 사용에 관한 규칙입니다.</p>
+
+<ul>
+    <li>한 가지 리소스 세트에 여러 개의 한정자를 사용할 수 있으며, 이를 대시로 구분하면 됩니다. 예를 들어,
+<code>drawable-en-rUS-land</code>는 수평 방향의 
+US-English 기기에 적용합니다.</li>
+    <li>한정자는 <a href="#table2">표2</a>에 나열된 순서를 따라야 합니다. 예:
+
+      <ul>
+        <li>잘못된 배열: <code>drawable-hdpi-port/</code></li>
+        <li>맞는 배열: <code>drawable-port-hdpi/</code></li>
+      </ul>
+    </li>
+    <li>대체 리소스 디렉터리는 중첩될 수 없습니다. 예를 들어, 
+<code>res/drawable/drawable-en/</code>는 있을 수 없습니다.</li>
+    <li>값은 대소문자를 구분하지 않습니다.  리소스 컴파일러가 처리 전에 디렉터리 이름을 
+소문자로 바꿔 대소문자를 구분하지 않는 
+파일 시스템에서 문제를 일으키지 않도록 방지합니다. 이름에 대문자가 있는 것은 오로지 가독성을 향상하기 위해서입니다.</li>
+    <li>각 한정자 유형마다 한 개의 값만 지원됩니다. 예를 들어, 스페인과 프랑스에 
+같은 드로어블 파일을 사용하고자 하는 경우 디렉터리 이름이 
+<code>drawable-rES-rFR/</code>이면 <em>안 됩니다.</em> 대신 
+<code>drawable-rES/</code>와 <code>drawable-rFR/</code> 같이 적절한 파일이 포함된 두 개의 리소스 디렉터리가 필요합니다.
+그러나 두 위치에서 같은 파일을 실제로 복제할 필요는 없습니다. 대신 
+리소스에 별명을 만들면 됩니다. 아래의 <a href="#AliasResources">별명 리소스
+생성</a>을 참조하십시오.</li>
+</ul>
+
+<p>이런 한정자로 이름을 지은 디렉터리에 대체 리소스를 저장하고 나면 
+Android가 현재 기기 구성에 기초하여 애플리케이션에 자동으로 리소스를 적용합니다.
+ 리소스가 요청될 때마다 Android가 요청한 리소스 파일이 들어있는
+대체 리소스 디렉터리를 확인하고, 그런 다음 <a href="#BestMatch">가장 잘 일치하는 
+리소스를 찾습니다</a>(아래에서 논함). 특정 기기 구성에 일치하는 대체 리소스가 없는 경우, 
+Android는 상응하는 기본 리소스(구성 한정자를 포함하지 않는
+특정 리소스 유형에 대한 리소스 세트
+)를 사용합니다.</p>
+
+
+
+<h3 id="AliasResources">별명 리소스 생성</h3>
+
+<p>어떤 리소스를 하나 이상의 기기 구성에서 사용하고자 하는 경우(그렇지만 
+이를 기본 리소스를 제공하는 것은 원치 않는 경우), 같은 리소스를 하나 이상의 대체 리소스 디렉터리에 
+넣지 않아도 됩니다. 대신, 기본 리소스 디렉터리에 저장된 리소스에 대해 별명 역할을 하는 
+대체 
+리소스를 만들면 됩니다(경우에 따라).</p>
+
+<p class="note"><strong>참고:</strong> 모든 리소스가 다른 리소스에 대한 
+별명을 생성할 수 있는 메커니즘을 제공하는 것은 아닙니다. 특히, {@code xml/} 디렉터리의 애니메이션, 메뉴, 원시 및 기타 지정되지 않은 
+리소스는 이 기능을 제공하지 않습니다.</p>
+
+<p>예를 들어, 애플리케이션 아이콘 {@code icon.png}이 있고 서로 다른 로케일에서 이 아이콘의 고유 버전이 
+필요한 경우가 있습니다. 그러나 두 로케일, English-Canadian과 French-Canadian은 같은 버전을 
+사용해야 합니다. 같은 이미지를 English-Canadian과 French-Canadian 양쪽 
+모두에 대한 리소스 디렉터리에 복사해야 한다고 생각할 수 있지만, 실은 
+그렇지 않습니다. 대신, 두 로케일에서 사용하는 이미지를 {@code icon_ca.png}(
+{@code icon.png} 이외에 어떤 이름이든 가능)로 저장하고 이를 
+기본 {@code res/drawable/} 디렉터리에 넣으면 됩니다. 그런 다음 {@code icon.xml} 파일을 {@code icon_ca.png}
+리소스를 참조하는 {@code
+res/drawable-en-rCA/} 및 {@code res/drawable-fr-rCA/}로 생성합니다. 이때, {@code &lt;bitmap&gt;} 요소를 사용하면 됩니다. 이렇게 하면 
+PNG 파일 버전 하나와 그것을 가리키는 작은 XML 파일 두 개만 저장할 수 있습니다. (XML 파일 예시는 아래와 같습니다.)</p>
+
+
+<h4>드로어블</h4>
+
+<p>기존 드로어블에 별명을 생성하려면 {@code &lt;bitmap&gt;} 요소를 사용합니다. 
+예를 들면 다음과 같습니다.</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/icon_ca" />
+</pre>
+
+<p>파일을 (
+{@code res/drawable-en-rCA/}와 같은 대체 리소스 디렉터리에) {@code icon.xml}로 저장하면,
+{@code R.drawable.icon}으로 참조할 수 있지만 실제로는 {@code
+R.drawable.icon_ca} 리소스({@code res/drawable/}에 저장됨)의 별명인 리소스로 컴파일링됩니다.</p>
+
+
+<h4>레이아웃</h4>
+
+<p>기존 레이아웃에 별명을 생성하려면 {@code &lt;merge&gt;}로 래핑되어 있는 {@code &lt;include&gt;}
+요소를 사용합니다. 예:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;merge>
+    &lt;include layout="@layout/main_ltr"/>
+&lt;/merge>
+</pre>
+
+<p>파일을 {@code main.xml}로 저장하면, {@code R.layout.main}으로 참조할 수 있지만 실제로는 {@code R.layout.main_ltr}
+ 리소스의 별명인 리소스로 
+컴파일링됩니다.</p>
+
+
+<h4>문자열 및 기타 단순 값</h4>
+
+<p>기존 문자열에 별명을 생성하려면 원하는 문자열의 리소스 ID를 
+새 문자열의 값으로 사용하면 됩니다. 예:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;string name="hello">Hello&lt;/string>
+    &lt;string name="hi">@string/hello&lt;/string>
+&lt;/resources>
+</pre>
+
+<p>이제 {@code R.string.hi} 리소스는 {@code R.string.hello}의 별명입니다.</p>
+
+<p> <a href="{@docRoot}guide/topics/resources/more-resources.html">기타 단순 값도</a> 같은 방식으로 
+동작합니다. 예를 들면 색상은 다음과 같습니다.</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;color name="yellow">#f00&lt;/color>
+    &lt;color name="highlight">@color/red&lt;/color>
+&lt;/resources>
+</pre>
+
+
+
+
+<h2 id="Compatibility">리소스와 연관된 최선의 기기 호환성 제공</h2>
+
+<p>애플리케이션이 여러 기기 구성을 지원하게 하려면, 
+언제나 애플리케이션이 사용하는 각 유형의 리소스에 기본 리소스를 제공하는 것이 매우 중요합니다.</p>
+
+<p>예를 들어 애플리케이션이 여러 언어를 지원할 경우, 항상 <em>언어 및 지역 한정자</em> <a href="#LocaleQualifier">없이</a> {@code
+values/} 디렉터리(여기에 문자열 저장)를 포함시켜야 합니다. 그렇게 하지 않고 언어와 지역 한정자가 있는 디렉터리에 
+모든 문자열을 넣으면, 문자열이 지원하지 않는 언어로 설정된 기기에서 애플리케이션을 
+실행하면 작동이 중단됩니다. 그러나 기본 
+{@code values/} 리소스를 제공하는 한은 애플리케이션이 제대로 실행됩니다(사용자가 이해하지 못하는 
+언어로라도 작동합니다. 작동 중단보다 낫습니다.)</p>
+
+<p>마찬가지로 화면 방향에 기초하여 여러 가지 레이아웃 리소스를 제공하는 경우 
+하나의 방향을 기본값으로 선택해야 합니다. 예를 들어 가로 방향에는 {@code
+layout-land/}로, 세로 방향에는 {@code layout-port/}로 레이아웃 리소스를 제공하는 대신 하나를 기본으로 남겨두십시오. 
+가로 방향에 {@code layout/}, 세로 방향에 {@code layout-port/}와 같은 식으로 하면 됩니다.</p>
+
+<p>애플리케이션이 예상치 못한 구성에서 실행될 수 있을 뿐만 아니라 
+Android의 새 버전에서 이전 버전에서는 지원하지 않는 구성 한정자를 추가할 수도 있으므로, 
+기본 리소스를 제공하는 것이 중요합니다. 새 리소스 한정자를 사용하지만, 
+Android 이전 버전과 코드 호환성은 유지한 경우, 그 후 Android 이전 버전이
+애플리케이션을 실행하면 새로운 한정자로 이름을 지정한 리소스를 사용할 수 없으므로 기본 리소스를 제공하지 않으면 
+애플리케이션 작동이 중단됩니다. 예를 들어, <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code
+minSdkVersion}</a>이 4로 설정되고 <a href="#NightQualifier">야간 모드</a>(API 레벨 8에서 추가된 {@code night} 또는 {@code notnight})를 사용하는 모든 드로어블 리소스를 한정할 경우, API 레벨 4 기기는 
+드로어블 리소스에 액세스하지 못하고 사용이 중단됩니다. 이 경우, 
+{@code notnight}를 기본 리소스로 제공하는 것이 좋습니다. 그래야 해당 한정자를 배제하고 
+드로어블 리소스가 {@code drawable/} 또는 {@code drawable-night/}이 됩니다.</p>
+
+<p>그러므로 최선의 기기 호환성을 제공하려면 언제나 
+애플리케이션에서 반드시 제대로 수행해야 하는 리소스에 대해 기본 리소스를 제공하십시오. 그런 다음 구성 한정자를 사용하여 
+특정 기기 구성에 대해 대체 리소스를 생성하면 됩니다.</p>
+
+<p>이 규칙에는 한 가지 예외가 있습니다. 애플리케이션의 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> 이 4 이상이면 
+<a href="#DensityQualifier">화면 밀도</a> 한정자로 대체 드로어블 리소스를 제공할 때 기본 드로어블 
+리소스가 <em>없어도 됩니다</em>. 기본 
+드로어블 리소스가 없더라도 Android가 대체 화면 화질 중에서 가장 잘 맞는 리소스를 찾고 
+필요에 따라 비트맵을 축소합니다. 그러나 모든 유형의 기기에서 최상의 경험을 제공하려면, 
+모든 세 가지 유형의 밀도에 대해 대체 드로어블을 제공해야 합니다.</p>
+
+
+
+<h2 id="BestMatch">Android가 가장 잘 일치하는 리소스를 찾는 방법</h2>
+
+<p>개발자가 자신이 대체를 제공하는 리소스를 요청하면 Android가 런타임에 어느 대체 리소스를 
+사용할지 현대 기기 구성에 따라 여러 가지로 선택합니다. Android가 
+대체 리소스를 선택하는 방법을 보여주기 위해 다음 드로어블 디렉터리에 각각 같은 이미지의 
+서로 다른 버전이 들어있다고 가정하겠습니다.</p>
+
+<pre class="classic no-pretty-print">
+drawable/
+drawable-en/
+drawable-fr-rCA/
+drawable-en-port/
+drawable-en-notouch-12key/
+drawable-port-ldpi/
+drawable-port-notouch-12key/
+</pre>
+
+<p>그리고 기기 구성은 다음과 같다고 가정해봅시다.</p>
+
+<p style="margin-left:1em;">
+로케일 = <code>en-GB</code> <br/>
+화면 방향 = <code>port</code> <br/>
+화면 픽셀 밀도 = <code>hdpi</code> <br/>
+터치 스크린 유형 = <code>notouch</code> <br/>
+기본 텍스트 입력 메서드 = <code>12key</code>
+</p>
+
+<p>Android는 기기 구성을 이용 가능한 대체 리소스와 비교하여, 
+{@code drawable-en-port}에서 드로어블을 선택합니다.</p>
+
+<p>시스템은 다음과 같은 논리에 따라 
+어느 리소스를 사용할지 결정합니다.</p>
+
+
+<div class="figure" style="width:371px">
+<img src="{@docRoot}images/resources/res-selection-flowchart.png" alt="" height="471" />
+<p class="img-caption"><strong>그림 2.</strong> Android가 가장 잘 일치하는 리소스를 찾는 방법을 나타낸 
+흐름도입니다.</p>
+</div>
+
+
+<ol>
+  <li>기기 구성과 충돌하는 리소스 파일을 제거합니다.
+    <p><code>drawable-fr-rCA/</code>는
+<code>en-GB</code> 로케일과 충돌하므로 제거되었습니다.</p>
+<pre class="classic no-pretty-print">
+drawable/
+drawable-en/
+<strike>drawable-fr-rCA/</strike>
+drawable-en-port/
+drawable-en-notouch-12key/
+drawable-port-ldpi/
+drawable-port-notouch-12key/
+</pre>
+<p class="note"><strong>예외:</strong> 화면 픽셀 밀도 한정자 하나만은 충돌을 이유로 제거되지 
+않습니다. 기기의 화면 밀도가 hdpi라도, 
+현 시점에서는 모든 화면 밀도가 일치로 간주되므로 <code>drawable-port-ldpi/</code>를 제거하지 않습니다.
+ 자세한 정보는 <a href="{@docRoot}guide/practices/screens_support.html">다중 화면 
+지원</a> 문서에서 이용하실 수 있습니다.</p></li>
+
+  <li>목록(<a href="#table2">표2</a>)에서 (그 다음으로) 우선 순위가 가장 높은 한정자를 선택합니다
+(MCC부터 시작하여 아래로 내려가십시오). </li>
+  <li>리소스 디렉터리 중에 이 한정자를 포함한 것이 있나요?  </li>
+    <ul>
+      <li>없는 경우, 2단계로 돌아가 다음 한정자를 살펴보십시오 (이 예시의 경우 
+언어 한정자에 도달할 때까지 답은 "없습니다"입니다).</li>
+      <li>있는 경우, 4단계로 계속 진행합니다.</li>
+    </ul>
+  </li>
+
+  <li>이 한정자를 포함하지 않는 디렉터리를 제거합니다. 이 예시에서는 시스템이 
+언어 한정자를 포함하지 않는 디렉터리를 모두 제거합니다.</li>
+<pre class="classic no-pretty-print">
+<strike>drawable/</strike>
+drawable-en/
+drawable-en-port/
+drawable-en-notouch-12key/
+<strike>drawable-port-ldpi/</strike>
+<strike>drawable-port-notouch-12key/</strike>
+</pre>
+<p class="note"><strong>예외:</strong> 문제의 한정자가 화면 픽셀 밀도라면, 
+Android는 기기 화면 밀도와 가장 가깝게 일치하는 옵션을 선택합니다. 
+일반적으로, Android는 작은 원본 이미지를 확대하는 것보다
+큰 원본 이미지를 축소하는 것을 선호합니다. <a href="{@docRoot}guide/practices/screens_support.html">다중 화면 
+지원</a>을 참조하십시오.</p>
+  </li>
+
+  <li>뒤로 돌아가 디렉터리가 한 개만 남을 때까지 2, 3 및 4단계를 반복합니다. 이 예시에서, 일치하는 것이 있는 다음 한정자는 
+화면 방향입니다. 
+그러므로 화면 방향을 지정하지 않는 리소스가 제거됩니다.
+<pre class="classic no-pretty-print">
+<strike>drawable-en/</strike>
+drawable-en-port/
+<strike>drawable-en-notouch-12key/</strike>
+</pre>
+<p>남은 디렉터리는 {@code drawable-en-port}입니다.</p>
+  </li>
+</ol>
+
+<p>이 절차는 요청된 각 리소스에 대해 실행하지만, 시스템이 몇 가지 측면을 추가로 
+최적화합니다. 그러한 최적화 가운데에는 일단 기기 구성을 알게 되고 나면 절대 일치할 가능성이 없는 
+대체 리소스를 시스템이 제거할 수 있다는 점도 있습니다. 예를 들어, 구성 언어가 
+영어("en")이고 영어 이외의 다른 언어 한정자로 설정된 리소스 디렉터리는 
+절대 확인된 리소스 풀에 포함되지 않습니다(
+언어 한정자가 포함되지 <em>않는</em> 리소스 디렉터리는 여전히 포함됩니다).</p>
+
+<p>화면 크기 한정자에 기초하여 리소스를 선택할 때 시스템은 가장 잘 일치하는 리소스가 없다면
+현재 화면보다 작은 화면에 지정된 리소스를 사용합니다
+(예를 들어, 큰 화면은 필요에 따라 일반 크기 화면 리소스를 사용합니다). 그러나 
+이용 가능한 리소스가 현재 화면보다 <em>큰</em> 리소스뿐이라면, 시스템은
+이를 사용하지 <strong>않고</strong>, 기기 구성에 일치하는 리소스가 없으면 애플리케이션 사용이 중단됩니다
+(예를 들어 모든 레이아웃 리소스가 {@code xlarge} 한정자에 태그되어 있지만,
+기기가 보통 크기 화면일 경우).</p>
+
+<p class="note"><strong>참고:</strong> 한정자의 <em>우선 순위</em>(<a href="#table2">표 2</a> 참조)가 기기와 정확하게 일치하는 
+한정자 수보다 더 중요합니다. 예를 들어 위의 4단계에서 
+목록의 마지막 선택에 기기와 정확히 일치하는 한정자가 세 개 포함되어 있지만(방향, 터치 스크린
+유형 및 입력 메서드), <code>drawable-en</code>에는 일치하는 매개변수가 
+하나뿐입니다(언어). 다만, 언어가 이러한 다른 한정자보다 우선 순위가 높기 때문에 
+<code>drawable-port-notouch-12key</code>는 탈락합니다.</p>
+
+<p>애플리케이션에서 리소스를 사용하는 것에 대한 자세한 정보는 <a href="accessing-resources.html">리소스 액세스</a>로 계속 진행하여 알아보십시오.</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/resources/runtime-changes.jd b/docs/html-intl/intl/ko/guide/topics/resources/runtime-changes.jd
new file mode 100644
index 0000000..a5e7f5b
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/resources/runtime-changes.jd
@@ -0,0 +1,281 @@
+page.title=런타임 변경 처리하기
+page.tags=액티비티, 수명 주기
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>이 문서의 내용</h2>
+  <ol>
+    <li><a href="#RetainingAnObject">구성 변경 중에 객체 보존하기</a></li>
+    <li><a href="#HandlingTheChange">구성 변경 직접 처리하기</a>
+  </ol>
+
+  <h2>참고 항목</h2>
+  <ol>
+    <li><a href="providing-resources.html">리소스 제공</a></li>
+    <li><a href="accessing-resources.html">리소스 액세스</a></li>
+    <li><a href="http://android-developers.blogspot.com/2009/02/faster-screen-orientation-change.html">더 빠른
+ 화면 방향 변경</a></li>
+  </ol>
+</div>
+</div>
+
+<p>몇몇 기기 구성은 런타임 중에 변경될 수 있습니다
+(예: 화면 방향, 키보드 가용성 및 언어 등). 그러한 변경이 일어나는 경우, 
+Android는 실행 중인 
+{@link android.app.Activity}를 다시 시작합니다({@link android.app.Activity#onDestroy()} 호출, 뒤이어 {@link
+android.app.Activity#onCreate(Bundle) onCreate()} 호출). 이런 동작은 여러분이 제공한 
+대체 리소스로 애플리케이션을 자동으로 다시 로딩함으로써 새로운 기기 구성에 애플리케이션이 적응하는 것을 돕도록
+설계되었습니다(예: 다양한 화면 방향과 크기에 대한 다양한 레이아웃).</p>
+
+<p>다시 시작을 적절히 처리하려면 액티비티가 정상적인 
+<a href="{@docRoot}guide/components/activities.html#Lifecycle">액티비티
+수명 주기</a>를 통해 이전 상태를 복원하는 것이 중요합니다. 여기에서 Android는 
+{@link android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()}를 호출한 다음에 액티비티를 소멸시켜 
+애플리케이션 상태에 대한 데이터를 저장할 수 있습니다. 그러면 
+{@link android.app.Activity#onCreate(Bundle) onCreate()} 또는 {@link
+android.app.Activity#onRestoreInstanceState(Bundle) onRestoreInstanceState()} 중에 상태를 복원할 수 있습니다.</p>
+
+<p>애플리케이션이 애플리케이션 상태를 그대로 유지한 채 스스로 다시 시작할 수 있는지 시험해 보려면, 
+구성 변경을 일으켜보아야 합니다(예를 들어 화면 방향 변경 등). 이는 애플리케이션에서 여러 가지 작업을 수행하는 
+동안 해봅니다. 애플리케이션이 언제든 사용자 데이터나 상태를 손실하지 않고 
+다시 시작할 수 있어야 합니다. 그래야 구성 변경과 같은 이벤트를 처리할 수 있기 때문입니다. 그렇지 않으면 
+사용자가 걸려오는 전화를 받은 다음 한참 후에 애플리케이션으로 돌아오면 애플리케이션 프로세스가 이미 
+소멸되어 있을 수 있습니다. 액티비티 상태를 복원하는 방법을 배우려면, <a href="{@docRoot}guide/components/activities.html#Lifecycle">액티비티 수명 주기</a>에 관해 읽어보십시오.</p>
+
+<p>하지만, 애플리케이션을 다시 시작하고 상당량의 데이터를 복원하면 비용도 많이 들고 
+불량한 사용자 환경이 만들어지는 상황에 직면할 수도 있습니다. 그러한 상황이라면, 
+두 가지 다른 옵션이 있습니다.</p>
+
+<ol type="a">
+  <li><a href="#RetainingAnObject">구성 변경 중에 객체 보존하기</a>
+  <p>구성이 변경되는 중에 액티비티가 다시 시작될 수 있게 허용하되, 액티비티의 새 인스턴스에 상태 
+저장 객체를 넣습니다.</p>
+
+  </li>
+  <li><a href="#HandlingTheChange">구성 변경 직접 처리하기</a>
+  <p>특정 구성 변경 중에 시스템이 액티비티를 다시 시작하도록 하지 못하게 방지하되, 
+구성이 실제로 변경되면 콜백을 수신하도록 하여 필요에 따라 액티비티를 수동으로 업데이트할 수 
+있도록 합니다.</p>
+  </li>
+</ol>
+
+
+<h2 id="RetainingAnObject">구성 변경 중에 객체 보존하기</h2>
+
+<p>액티비티를 다시 시작하려면 많은 수의 데이터 세트를 복구해야 하는 경우, 네트워크 연결을 
+다시 설정하거나 다른 집약적 작업을 수행한 다음 완전히 다시 시작하십시오. 
+구성 변경 때문에 사용자 환경이 느려질 수 있습니다. 또한, 액티비티 상태를 완전히 복원하려면 
+{@link android.os.Bundle}을 사용할 수도 있습니다. 이것은 시스템이 개발자 대신 {@link
+android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()} 콜백으로 저장해두는 것입니다. 이것은 대형 객체(예: 비트맵)를 담도록 
+디자인된 것이 아니며 이 안의 데이터는 반드시 직렬화했다가 다시 역직렬화해야 합니다. 이렇게 하면 
+메모리를 아주 많이 소모할 수 있으며 구성 변경이 느려질 수 있습니다. 이와 같은 상황에서는 
+액티비티를 다시 초기화해야 한다는 부담을 해결하기 위해 액티비티가 구성 변경으로 인해 다시 시작되었을 때 {@link
+android.app.Fragment}를 보존하면 됩니다. 이 프래그먼트에는 
+보존하고자 하는 상태 저장 객체에 대한 참조를 담을 수 있습니다.</p>
+
+<p>Android 시스템이 구성 변경으로 인하여 액티비티를 종료시킬 때, 액티비티에서 보존하기로 표시해둔 
+프래그먼트는 소멸되지 않습니다. 그러한 프래그먼트를 액티비티에 추가하면 
+상태 저장 객체를 보존할 수 있습니다.</p>
+
+<p>런타임 구성 변경 중에 상태 저장 객체를 프래그먼트에 보존해두는 방법은 다음과 같습니다.</p>
+
+<ol>
+  <li>{@link android.app.Fragment} 클래스를 확장하고 상태 저장 
+객체에 참조를 선언합니다.</li>
+  <li>프래그먼트가 생성되면 {@link android.app.Fragment#setRetainInstance(boolean)}를 호출합니다.
+      </li>
+  <li>해당 프래그먼트를 액티비티에 추가합니다.</li>
+  <li>{@link android.app.FragmentManager}를 사용하여 액티비티가 다시 시작될 때 프래그먼트를 
+검색합니다.</li>
+</ol>
+
+<p>예를 들어 프래그먼트를 다음과 같이 정의합니다.</p>
+
+<pre>
+public class RetainedFragment extends Fragment {
+
+    // data object we want to retain
+    private MyDataObject data;
+
+    // this method is only called once for this fragment
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // retain this fragment
+        setRetainInstance(true);
+    }
+
+    public void setData(MyDataObject data) {
+        this.data = data;
+    }
+
+    public MyDataObject getData() {
+        return data;
+    }
+}
+</pre>
+
+<p class="caution"><strong>주의:</strong> 어느 객체든 저장할 수 있지만, 
+{@link android.app.Activity}에 묶여 있는 객체는 절대로 전달하면 안 됩니다. 예를 들어 {@link
+android.graphics.drawable.Drawable}, {@link android.widget.Adapter}, {@link android.view.View}
+ 또는 {@link android.content.Context}와 연관된 기타 모든 객체가 이에 해당됩니다. 이런 것을 전달하면, 
+원래 액티비티 인스턴스의 모든 보기와 리소스를 몽땅 누출시킵니다. (리소스 누출이란 
+애플리케이션이 리소스에 대한 보유권을 유지하고 있어 가비지 수집의 대상이 될 수 없고, 따라서 엄청난 양의 메모리가 
+손실된다는 뜻입니다.)</p>
+
+<p>그런 다음 {@link android.app.FragmentManager}를 사용하여 프래그먼트를 액티비티에 추가합니다. 
+프래그먼트에서 데이터 객체를 가져오려면 런타임 구성 변경 중에 액티비티가 다시 시작될 때 
+가져오면 됩니다. 예를 들어, 액티비티를 다음과 같이 정의합니다.</p>
+
+<pre>
+public class MyActivity extends Activity {
+
+    private RetainedFragment dataFragment;
+
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+
+        // find the retained fragment on activity restarts
+        FragmentManager fm = getFragmentManager();
+        dataFragment = (DataFragment) fm.findFragmentByTag(“data”);
+
+        // create the fragment and data the first time
+        if (dataFragment == null) {
+            // add the fragment
+            dataFragment = new DataFragment();
+            fm.beginTransaction().add(dataFragment, “data”).commit();
+            // load the data from the web
+            dataFragment.setData(loadMyData());
+        }
+
+        // the data is available in dataFragment.getData()
+        ...
+    }
+
+    &#64;Override
+    public void onDestroy() {
+        super.onDestroy();
+        // store the data in the fragment
+        dataFragment.setData(collectMyLoadedData());
+    }
+}
+</pre>
+
+<p>이 예시에서 {@link android.app.Activity#onCreate(Bundle) onCreate()}는 프래그먼트를 추가하거나 
+이에 대한 참조를 복원합니다. {@link android.app.Activity#onCreate(Bundle) onCreate()} 또한 
+프래그먼트 인스턴스 안에 상태 저장 객체를 저장합니다. 
+{@link android.app.Activity#onDestroy() onDestroy()}는 보존된 
+프래그먼트 인스턴스 내부의 상태 저장 객체를 업데이트합니다.</p>
+
+
+
+
+
+<h2 id="HandlingTheChange">구성 변경 직접 처리하기</h2>
+
+<p>애플리케이션이 특정 구성 변경 중에 리소스를 업데이트하지 않아도 되고 
+그와 <em>동시에</em> 성능 한계가 있어 액티비티 다시 시작을 피해야 하는 경우, 
+액티비티가 구성 변경을 알아서 처리한다고 선언하면 됩니다. 
+이렇게 하면 시스템이 액티비티를 다시 시작하지 않도록 방지할 수 있습니다.</p>
+
+<p class="note"><strong>참고:</strong> 구성 변경을 직접 처리하면 대체 리소스를 사용하는 것이 
+훨씬 더 까다로워질 수 있습니다. 시스템이 개발자 대신 자동으로 이를 적용해주지 않기 
+때문입니다. 이 기법은 구성 변경으로 인한 재시작을 반드시 피해야만 하는 경우 최후의 수단으로서만 
+고려해야 하며 대부분의 애플리케이션에는 권장하지 않습니다.</p>
+
+<p>액티비티가 구성 변경을 직접 처리한다고 선언하려면, 매니페스트 파일의 적절한 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 요소를 편집하여 
+처리하고자 하는 구성을 나타내는 값이 있는 <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> 속성을 포함하도록 
+합니다. 가능한 값은 <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> 속성에 대한 관련 문서에 목록으로 나열되어 있습니다(가장 보편적으로 사용되는 값은 화면 방향이 변경될 때 다시 시작을 방지하는 {@code "orientation"}과 
+키보드 가용성이 변경될 때 다시 시작을 방지하는 {@code "keyboardHidden"}
+입니다).  이 속성에는 여러 개의 구성 값을 선언할 수 있습니다. 각각을 
+파이프 {@code |} 문자로 구분하면 됩니다.</p>
+
+<p>예를 들어 다음 매니페스트 코드는 화면 방향 변경과 키보드 가용성 변경을 둘 다 
+처리하는 액티비티를 선언하는 것입니다.</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"
+          android:configChanges="orientation|keyboardHidden"
+          android:label="@string/app_name">
+</pre>
+
+<p>이제 이러한 구성 중 하나가 변경되어도 {@code MyActivity}는 다시 시작하지 않습니다. 
+그 대신, {@code MyActivity}가 {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}로의 호출을 받습니다. 이 메서드는 
+{@link android.content.res.Configuration} 객체로 전달되며, 이는 새 기기 구성을 
+나타냅니다. {@link android.content.res.Configuration}의 필드를 읽어보면 
+새 구성을 판별할 수 있고 적절한 변경을 할 수 있습니다. 그러려면 인터페이스에 사용된 리소스를 
+업데이트하면 됩니다. 이 메서드가 
+호출되면, 액티비티의 {@link android.content.res.Resources} 객체가 
+업데이트되어 새 구성에 기반한 리소스를 반환하며, 따라서 시스템이 액티비티를 다시 시작하지 않아도 
+UI의 요소를 손쉽게 재설정할 수 있게 됩니다.</p>
+
+<p class="caution"><strong>주의:</strong> Android 3.2(API 레벨 13)부터 기기가 
+세로 방향 및 가로 방향 사이를 전환할 때 <strong>"화면 크기"도 
+같이 변경됩니다</strong>. 따라서, 
+API 레벨 13 이상(<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> 및 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a>
+ 속성에서 선언한 내용에 따름)을 대상으로 개발하는 경우 방향 변경으로 인한 런타임 다시 시작을 방지하고자 하면, {@code
+"orientation"} 값 외에 {@code "screenSize"} 값도 포함시켜야 합니다. 다시 말해, {@code
+android:configChanges="orientation|screenSize"}를 선언해야 합니다. 하지만, 애플리케이션이 API 레벨 12 이하를 
+대상으로 하는 경우라면 애플리케이션이 언제든 이 구성 변경을 알아서 처리합니다(이 구성 변경은 
+액티비티를 다시 시작하지 않습니다. 이는 Android 3.2 이상 기기에서 실행되는 경우에도 마찬가지입니다).</p>
+
+<p>예를 들어, 다음 {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} 구현은 
+현재 기기의 방향을 확인합니다.</p>
+
+<pre>
+&#64;Override
+public void onConfigurationChanged(Configuration newConfig) {
+    super.onConfigurationChanged(newConfig);
+
+    // Checks the orientation of the screen
+    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
+        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
+    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
+        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
+    }
+}
+</pre>
+
+<p>{@link android.content.res.Configuration} 객체는 변경된 것만이 아니라 현재 
+구성 전체를 나타냅니다. 대부분의 경우에는 구성이 정확히 어떻게 
+변경되었는지에는 관심이 없고 처리 중인 구성에 대체 리소스를 제공하는 모든 리소스를 그저 
+재할당하기만 하면 됩니다. 예를 들어 이제 {@link
+android.content.res.Resources} 객체가 업데이트되었으니 {@link android.widget.ImageView#setImageResource(int)
+setImageResource()}가 있는 모든 
+{@link android.widget.ImageView}와 
+새 구성에 대한 적절한 리소스를 재설정할 수 있습니다(<a href="providing-resources.html#AlternateResources">리소스 제공</a>에 설명된 바와 같음).</p>
+
+<p>{@link
+android.content.res.Configuration} 필드에서 가져온 값이 
+{@link android.content.res.Configuration} 클래스에서 가져온 특정 상수와 일치하는 정수라는 점을 눈여겨 보십시오. 각 필드에 
+어느 상수를 써야 하는지에 대한 관련 문서는 {@link
+android.content.res.Configuration} 참조에 있는 적절한 필드를 참조하십시오.</p>
+
+<p class="note"><strong>명심할 점:</strong> 액티비티가 직접 구성 변경을 처리한다고 선언하는 경우, 
+대체를 제공하는 모든 요소에 대해 본인이 직접 책임을 지게 됩니다. 액티비티가 직접 
+방향 변경을 처리하고 가로 및 세로 방향 사이에서 바뀌어야 하는 이미지가 있는 경우, 
+각 리소스를 각 요소에 재할당해야 하며 이를 {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} 중에 수행해야 합니다.</p>
+
+<p>이러한 구성 변경을 기반으로 애플리케이션을 업데이트하지 않아도 되는 경우, 
+대신 {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}를 구현하지 <em>않으면</em> 됩니다. 이런 
+경우, 구성 변경 전에 쓰였던 리소스가 모두 그대로 사용되고 액티비티의 다시 시작만 
+피한 것이 됩니다. 그러나, 애플리케이션은 
+언제든 종료되고 이전 상태를 그대로 유지한 채 다시 시작될 수 있어야 합니다 정상적인 액티비티 
+수명 주기 중에 상태 유지에서의 탈출 방안으로 이 기법을 고려해서는 안 됩니다. 이는 애플리케이션이 
+다시 시작되지 않도록 방지할 수 없는, 다른 구성 변경도 여럿 있어서일뿐만 아니라, 사용자가 
+애플리케이션을 떠났을 경우 해당 사용자가 다시 돌아오기 전에 소멸되는 것과 같은 이벤트를 처리해야 하기 때문이라는 
+이유도 있습니다.</p>
+
+<p>액티비티 내에서 처리할 수 있는 구성 변경이 무엇인지에 대한 자세한 내용은 <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> 관련 문서와 {@link android.content.res.Configuration}
+클래스를 참조하십시오.</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/ui/controls.jd b/docs/html-intl/intl/ko/guide/topics/ui/controls.jd
new file mode 100644
index 0000000..bf87398
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/ui/controls.jd
@@ -0,0 +1,90 @@
+page.title=입력 제어
+parent.title=사용자 인터페이스
+parent.link=index.html
+@jd:body
+
+<div class="figure" style="margin:0">
+  <img src="{@docRoot}images/ui/ui-controls.png" alt="" style="margin:0" />
+</div>
+
+<p>입력 제어는 앱의 사용자 인터페이스에 있는 대화형 구성 요소입니다. 
+Android는 버튼, 텍스트 필드, 찾기 막대, 확인란, 확대 버튼, 전환 버튼 등과 같이
+UI에서 사용할 수 있도록 매우 다양한 제어를 제공합니다.</p>
+
+<p>UI에 입력 제어를 추가하려면 단순히 <a href="{@docRoot}guide/topics/ui/declaring-layout.html">XML 레이아웃</a>에 XML 요소를 하나 추가하기만 하면 됩니다. 
+다음은 텍스트 필드와 버튼이 있는 레이아웃을 예시로 나타낸 것입니다.</p>
+
+<pre style="clear:right">
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="horizontal">
+    &lt;EditText android:id="@+id/edit_message"
+        android:layout_weight="1"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:hint="@string/edit_message" />
+    &lt;Button android:id="@+id/button_send"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/button_send"
+        android:onClick="sendMessage" />
+&lt;/LinearLayout>
+</pre>
+
+<p>각 입력 제어는 특정한 입력 이벤트를 지원하므로, 사용자가 텍스트를 입력할 때 또는 버튼을 터치할 때 
+이벤트를 처리할 수 있게 해줍니다.</p>
+
+
+<h2 id="CommonControls">보편적인 제어</h2>
+<p>다음은 앱에서 사용할 수 있는 몇 가지 보편적인 제어를 목록으로 나열한 것입니다. 링크를 따라가면 각 제어에 대해 
+좀 더 자세히 알아볼 수 있습니다.</p>
+
+<p class="note"><strong>참고:</strong> Android는 여기에 나열된 것보다 몇 가지 더 많은 제어를 제공합니다.
+ 더 많은 내용을 알아보려면 {@link android.widget} 패키지를 탐색해보십시오. 
+앱에 특정한 종류의 입력 제어가 필요한 경우, 나름의 <a href="{@docRoot}guide/topics/ui/custom-components.html">사용자 지정 구성 요소</a>를 직접 구축해도 됩니다.</p>
+
+<table>
+    <tr>
+        <th scope="col">제어 유형</th>
+        <th scope="col">설명</th>
+	<th scope="col">관련 클래스</th>
+    </tr>
+    <tr>
+        <td><a href="controls/button.html">버튼</a></td>
+        <td>사용자가 누르거나 클릭하여 작업을 수행할 수 있는 누름 버튼입니다.</td>
+	<td>{@link android.widget.Button Button} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/text.html">텍스트 필드</a></td>
+        <td>편집 가능한 텍스트 필드입니다. <code>AutoCompleteTextView</code> 위젯을 사용하면 자동 완성 제안을 제공하는 텍스트 입력 위젯을 만들 수 있습니다.</td>
+	<td>{@link android.widget.EditText EditText}, {@link android.widget.AutoCompleteTextView}</td>
+    </tr>
+    <tr>
+        <td><a href="controls/checkbox.html">확인란</a></td>
+        <td>사용자가 전환할 수 있는 켜기/끄기 스위치입니다. 확인란은 사용자에게 선택 가능한 옵션 그룹을 제시할 때 사용합니다. 이들 옵션은 상호 배타적이지 않아야 합니다.</td>
+	<td>{@link android.widget.CheckBox CheckBox} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/radiobutton.html">무선 버튼</a></td>
+        <td>확인란과 비슷하지만, 예외가 있다면 그룹 내에서 하나만 선택할 수 있다는 점입니다.</td>
+	<td>{@link android.widget.RadioGroup RadioGroup} 
+	<br>{@link android.widget.RadioButton RadioButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/togglebutton.html" style="white-space:nowrap">전환 버튼</a></td>
+        <td>조명 표시기가 있는 켜기/끄기 버튼입니다.</td>
+	<td>{@link android.widget.ToggleButton ToggleButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/spinner.html">회전자</a></td>
+        <td>드롭다운 목록으로, 이것을 사용하면 사용자가 주어진 집합에서 하나의 값을 선택할 수 있습니다.</td>
+	<td>{@link android.widget.Spinner Spinner} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/pickers.html">선택기</a></td>
+        <td>사용자를 위한 대화로, 위/아래 버튼을 사용하거나 스와이프 동작을 사용하여 주어진 집합에 대한 하나의 값을 선택할 수 있게 해줍니다. 날짜(월, 일, 연도) 값을 입력하려면 <code>DatePicker</code>코드&gt; 위젯을 사용하면 되고, 아니면 시간(시, 분, 오전/오후) 값을 입력하는 데 <code>TimePicker</code> 위젯을 사용해도 됩니다. 이렇게 하면 사용자의 로케일에 맞게 자동으로 형식을 설정합니다.</td>
+	<td>{@link android.widget.DatePicker}, {@link android.widget.TimePicker}</td>
+    </tr>
+</table>
diff --git a/docs/html-intl/intl/ko/guide/topics/ui/declaring-layout.jd b/docs/html-intl/intl/ko/guide/topics/ui/declaring-layout.jd
new file mode 100644
index 0000000..7883236
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/ui/declaring-layout.jd
@@ -0,0 +1,492 @@
+page.title=레이아웃
+page.tags=view,viewgroup
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>이 문서의 내용</h2>
+<ol>
+  <li><a href="#write">XML 쓰기</a></li>
+  <li><a href="#load">XML 리소스 로딩</a></li>
+  <li><a href="#attributes">속성</a>
+    <ol>
+      <li><a href="#id">ID</a></li>
+      <li><a href="#layout-params">레이아웃 매개변수</a></li>
+    </ol>
+  </li>
+  <li><a href="#Position">레이아웃 위치</a></li>
+  <li><a href="#SizePaddingMargins">크기, 안쪽 여백 및 여백</a></li>
+  <li><a href="#CommonLayouts">보편적인 레이아웃</a></li>
+  <li><a href="#AdapterViews">어댑터로 레이아웃 구축하기</a>
+    <ol>
+      <li><a href="#FillingTheLayout">데이터로 어댑터 보기 채우기</a></li>
+      <li><a href="#HandlingUserSelections">클릭 이벤트 처리</a></li>
+    </ol>
+  </li>
+</ol>
+
+  <h2>Key 클래스</h2>
+  <ol>
+    <li>{@link android.view.View}</li>
+    <li>{@link android.view.ViewGroup}</li>
+    <li>{@link android.view.ViewGroup.LayoutParams}</li>
+  </ol>
+
+  <h2>참고 항목</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/firstapp/building-ui.html">간단한 사용자 
+인터페이스 구축</a></li> </div>
+</div>
+
+<p>레이아웃은 사용자 인터페이스에 대한 시각적 구조를 정의합니다. 예컨대 <a href="{@docRoot}guide/components/activities.html">액티비티</a> 또는 <a href="{@docRoot}guide/topics/appwidgets/index.html">앱 위젯</a>에 대한 UI가 이에 해당됩니다.
+레이아웃을 선언하는 데에는 다음과 같은 두 가지 방법이 있습니다.</p>
+<ul>
+<li><strong>UI 요소를 XML로 선언</strong>. Android가 위젯과 레이아웃 등과 같이 
+보기 클래스와 하위 클래스에 상응하는 간단한 XML 어휘를 제공합니다.</li>
+<li><strong>런타임에 레이아웃 요소를 인스턴트화</strong>. 애플리케이션이
+ 프로그래밍 방법으로 보기 및 ViewGroup객체를 만들 수 있습니다(그리고 그 속성을 조작하기도 합니다). </li>
+</ul>
+
+<p>Android 프레임워크에서는 이와 같이 애플리케이션의 UI를 선언하고 관리하기 위한 메서드를 둘 중 하나만, 또는 둘 모두 사용할 수 있는 유연성을 부여합니다. 예를 들어, 애플리케이션의 기본 레이아웃을 XML로 선언하면서 그 안에 나타날 화면 요소와 그 속성을 포함할 수 있습니다. 그러면 이제 애플리케이션에 코드를 추가하여 화면 객체의 상태를 수정하도록 할 수 있으며, 여기에는 런타임에 XML로 선언된 것도 포함됩니다. </p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <ul>
+  <li><a href="{@docRoot}tools/sdk/eclipse-adt.html">Eclipse용 ADT
+ 플러그인</a>이 XML의 레이아웃 미리보기를 제공합니다. &mdash;
+XML 파일이 열린 상태에서 <strong>레이아웃</strong> 탭을 선택하십시오.</li>
+  <li>또한, 
+<a href="{@docRoot}tools/debugging/debugging-ui.html#hierarchyViewer">계층 뷰어</a> 도구로 
+레이아웃 디버깅도 시도해 보아야 합니다.&mdash;이것은 레이아웃 속성 값을 드러내고, 
+내부 여백/여백 표시기가 있는 와이어프레임을 그리며 개발자가 에뮬레이터 또는 기기에서 디버깅하는 동안 
+완전히 렌더링된 보기를 제공합니다.</li>
+  <li><a href="{@docRoot}tools/debugging/debugging-ui.html#layoutopt">layoutopt</a> 도구를
+ 사용하면 레이아웃과 계층을 비효율성 또는 다른 문제에 대하여 재빨리 분석할 수 있게 해줍니다.</li>
+</div>
+</div>
+
+<p>UI를 XML로 선언하는 것의 이점은 이렇게 하면 애플리케이션을 그 행동을 제어하는 코드로부터 따로 표시하기가 더 좋다는 것입니다. UI 설명은 애플리케이션 코드의 외부에 있습니다. 이는 다시 말해 소스 코드를 수정하고 다시 컴파일링하지 않아도 이를 수정 또는 변경할 수 있다는 뜻입니다. 예를 들어, 서로 다른 화면 방향, 사로 다른 기기 화면 크기 및 서로 다른 언어에 대해 XML 레이아웃을 생성할 수 있습니다. 이외에도 레이아웃을 XML로 선언하면 UI의 구조를 시각화하기가 더 쉬우므로 문제를 디버깅하기도 더 쉽습니다. 따라서, 이 문서는 레이아웃을 XML로 선언하는 방법을 가르치는 데 주안점을 두고 있습니다. 런타임에 보기 객체를 인스턴트화하는 것에 흥미가 있는 경우, 
+{@link android.view.ViewGroup} 및 
+{@link android.view.View} 클래스 참조를 참조하십시오.</p>
+
+<p>일반적으로 UI 요소를 선언하는 데 쓰이는 XML 어휘는 클래스와 메서드 명명을 충실히 따릅니다. 여기에서 요소 이름은 클래스 이름에 상응하며 속성 이름은 메서드에 상응합니다. 사실 이러한 일치성은 아주 직접적인 경우가 잦아 어느 XML 속성이 클래스 메서드에 상응하는지를 추측할 수 있고, 어느 클래스가 주어진 XML 요소에 상응하는지도 추측할 수 있습니다. 다만 모든 어휘가 다 같지는 않다는 점을 유의하십시오. 몇몇 경우에는 명명에 약간의 차이점이 있습니다. 예를 들어, 
+EditText 요소에는 <code>text</code> 속성이 있으며 이는 
+<code>EditText.setText()</code>에 상응합니다. </p>
+
+<p class="note"><strong>팁:</strong> 여러 가지 레이아웃 유형에 대해서는 <a href="{@docRoot}guide/topics/ui/layout-objects.html">보편적인
+레이아웃 객체</a>를 참조하십시오. 여러 가지 레이아웃을 구축하는 데 대한 튜토리얼 모음도 있습니다. 
+<a href="{@docRoot}resources/tutorials/views/index.html">Hello 보기</a> 튜토리얼 가이드를 참조하십시오.</p>
+
+<h2 id="write">XML 쓰기</h2>
+
+<p>Android의 XML 어휘를 사용하면 UI 레이아웃과 그 안에 들어있는 화면 요소를 HTML에서 웹 페이지를 디자인할 때와 같은 방식으로 신속하게 디자인할 수 있습니다. 즉 일련의 중첩된 요소를 사용하는 것입니다. </p>
+
+<p>각 레이아웃 파일에는 반드시 딱 하나의 루트 요소만 있어야 하며, 이는 보기 또는 ViewGroup 객체여야 합니다. 루트 요소를 정의했으면, 하위 요소로 더 많은 레이아웃 요소 또는 위젯을 추가하여 점층적으로 레이아웃을 정의할 보기 계층을 구축할 수 있습니다. 예를 들어, 다음은 수직 {@link android.widget.LinearLayout}을
+ 사용하여 {@link android.widget.TextView} 및 {@link android.widget.Button}을 보유하는 XML 레이아웃을 나타낸 것입니다.</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:orientation="vertical" >
+    &lt;TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="Hello, I am a TextView" />
+    &lt;Button android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Hello, I am a Button" />
+&lt;/LinearLayout>
+</pre>
+
+<p>레이아웃을 XML로 선언하고 나면 그 파일을 Android 프로젝트의 <code>res/layout/</code> 디렉터리 내에 
+<code>.xml</code> 확장자로 저장하여 적절하게 컴파일링되도록 합니다. </p>
+
+<p>레이아웃 XML 파일의 구문에 대한 자세한 정보는 <a href="{@docRoot}guide/topics/resources/layout-resource.html">레이아웃 리소스</a> 문서에서 확인할 수 있습니다.</p>
+
+<h2 id="load">XML 리소스 로딩</h2>
+
+<p>애플리케이션을 컴파일링하는 경우, 각 XML 레이아웃 파일이 
+{@link android.view.View} 리소스 안에 컴파일링됩니다. 애플리케이션 코드로부터 가져온 레이아웃 리소스는 
+{@link android.app.Activity#onCreate(android.os.Bundle) Activity.onCreate()} 콜백 
+구현에 로딩해야 합니다.
+이렇게 하려면 <code>{@link android.app.Activity#setContentView(int) setContentView()}</code>를 호출한 다음, 이를 
+<code>R.layout.<em>layout_file_name</em></code> 형태로 레이아웃 리소스의 참조에 전달합니다.
+ 예를 들어, XML 레이아웃이 <code>main_layout.xml</code>로 저장된 경우, 이것을 액티비티에 대해 로딩하려면 
+다음과 같이 하면 됩니다.</p>
+<pre>
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.main_layout);
+}
+</pre>
+
+<p>액티비티 내의 <code>onCreate()</code> 콜백 메서드는 액티비티가 시작될 때 
+Android 프레임워크가 호출합니다(수명 주기에 대한 논의는 
+<a href="{@docRoot}guide/components/activities.html#Lifecycle">액티비티</a>
+ 문서에서 확인하십시오).</p>
+
+
+<h2 id="attributes">속성</h2>
+
+<p>모든 보기 및 ViewGroup 객체는 각자 나름대로의 다양한 XML 속성을 지원합니다.
+몇몇 속성은 보기 객체에만 특화되어 있지만(예를 들어, TextView는 <code>textSize</code>
+속성을 지원), 이와 같은 속성은 이 클래스를 확장할 수 있는 모든 보기 객체가 상속하기도 합니다.
+모든 보기 객체에 공통으로 쓰이는 것도 몇 가지 있습니다. 왜냐하면 이들은 루트 보기 클래스에서 상속된 것이기 때문입니다(예:
+<code>id</code> 속성). 그리고 나머지 속성은 "레이아웃 매개변수"로 간주됩니다. 
+이들은 보기 객체의 특정한 레이아웃 방향을 설명하는 것으로, 이는 해당 객체의 상위 VeiwGroup 객체에서 
+정의된 바에 따릅니다.</p>
+
+<h3 id="id">ID</h3>
+
+<p>모든 보기 객체에는 연관된 정수 ID가 있을 수 있습니다. 이는 트리 내에서 해당 보기를 고유하게 식별하기 위한 것입니다.
+애플리케이션이 컴파일링되면 이 ID가 정수로 참조되지만, ID는 
+일반적으로 레이아웃 XML 파일에 문자열로 할당되며, <code>id</code> 속성으로 쓰입니다. 
+이것은 모든 보기 객체에 공통적인 XML 속성으로
+({@link android.view.View} 클래스가 정의) 이것을 매우 자주 사용하게 됩니다.
+ID에 대한, XML 태그 내에 있는 구문은 다음과 같습니다.</p>
+<pre>android:id="&#64;+id/my_button"</pre>
+
+<p>문자열 시작 부분에 있는 앳 기호(@)는 XML 파서가 ID 문자열의 나머지를 구문 분석하고 확장하여 
+ID 리소스로 식별해야 한다는 것을 나타냅니다. 더하기 기호(+)는 이것이 새 리소스 이름이며, 
+이것을 반드시 생성하여 우리 리소스에 추가해야 한다는 것을 뜻합니다(<code>R.java</code> 파일에서). Android 프레임워크는 다른 ID 리소스도 아주 많이 
+제공합니다. Android 리소스 ID를 참조할 때에는 더하기 기호는 필요하지 않지만 
+<code>android</code> 패키지 네임스페이스를 다음과 같이 반드시 추가해야 합니다.</p>
+<pre>android:id="&#64;android:id/empty"</pre>
+<p><code>android</code> 패키지 네임스페이스를 제자리에 넣으면 이제 ID를 로컬 리소스 클래스에서가 아니라 <code>android.R</code>
+ 리소스 클래스에서 참조하고 있는 것이 됩니다.</p>
+
+<p>보기를 생성하고 이를 애플리케이션에서 참조하는 데 쓰이는 보편적인 패턴은 다음과 같습니다.</p>
+<ol>
+  <li>레이아웃 파일에서 보기/위젯을 정의한 다음 이를 고유한 ID에 할당합니다.
+<pre>
+&lt;Button android:id="&#64;+id/my_button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="&#64;string/my_button_text"/>
+</pre>
+  </li>
+  <li>그런 다음 보기 객체의 인스턴스를 생성하고 이를 레이아웃에서 캡처합니다
+(일반적으로 <code>{@link android.app.Activity#onCreate(Bundle) onCreate()}</code> 메서드에서).
+<pre>
+Button myButton = (Button) findViewById(R.id.my_button);
+</pre>
+  </li>
+</ol>
+<p>{@link android.widget.RelativeLayout}을 생성할 때에는 보기 객체의 ID를 정의하는 것이 중요합니다. 
+관계 레이아웃에서는 형제 보기가 또 다른 형제 보기와 관련된 자신의 레이아웃을 정의할 수 있으며, 
+이를 고유한 ID로 참조하게 됩니다.</p>
+<p>ID는 트리 전체를 통틀어 고유할 필요는 없지만, 트리에서 검색하고 있는 부분 내에서는 
+고유해야 합니다(이것이 트리 전체인 경우가 잦으므로, 가급적이면 완전히 
+고유한 것을 쓰는 것이 가장 좋습니다).</p>
+
+
+<h3 id="layout-params">레이아웃 매개변수</h3>
+
+<p><code>layout_<em>something</em></code>이라는 XML 레이아웃 속성이 
+보기가 상주하는 ViewGroup에 대해 적절한 보기의 레이아웃 매개변수를 정의합니다.</p>
+
+<p>모든 ViewGroup 클래스가 중첩된 클래스를 하나씩 구현하며 이것이 {@link
+android.view.ViewGroup.LayoutParams}를 확장합니다. 이 하위 클래스에는 
+각 하위 보기의 크기와 위치를 보기 그룹에 적절한 방식으로 정의하는 
+속성 유형이 들어 있습니다. 그림 1에서 볼 수 있듯이, 상위 보기 그룹이 
+각 하위 보기의 레이아웃 매개변수를 정의합니다(하위 보기 그룹 포함).</p>
+
+<img src="{@docRoot}images/layoutparams.png" alt="" />
+<p class="img-caption"><strong>그림 1.</strong> 각 보기와 연관된 레이아웃 매개변수가 
+있는 보기 계층을 시각화한 것입니다.</p>
+
+<p>모든 LayoutParams 하위 클래스에는 설정 값에 대한 각기 자신만의 구문이 있다는 점을 
+눈여겨 보십시오. 각 하위 요소는 자신의 상위에 적합한 LayoutParams를 정의해야 합니다. 
+다만 이것은 자신의 하위에 대해 각기 다른 LayoutParams도 정의할 수 있습니다. </p>
+
+<p>모든 보기 그룹에는 너비와 높이가 포함되며(<code>layout_width</code> 및 
+<code>layout_height</code>), 각 보기는 이들을 반드시 정의해야 합니다. 선택 사항으로 
+여백과 테두리도 포함하는 LayoutParams도 많습니다. <p>
+
+<p>너비와 높이는 정확한 치수로 지정할 수 있습니다. 다만 이것은 자주 하지 
+않는 것이 좋습니다. 그보다는 다음과 같은 상수 중 하나를 사용하여 너비 또는 높이를 설정하는 경우가 
+더 많습니다. </p>
+
+<ul>
+  <li><var>wrap_content</var> 보기에 콘텐츠에 필요한 치수대로 알아서 
+크기를 조정하라고 합니다.</li>
+  <li><var>match_parent</var> (다른 이름은 <var>fill_parent</var> 로, API 레벨 8 이전에 해당)
+보기에 상위 보기 그룹이 허용하는 한 최대한으로 커지라고 합니다.</li>
+</ul>
+
+<p>일반적으로 픽셀과 같이 절대적인 단위를 사용하여 레이아웃 너비와 높이를 지정하는 것은 
+권장하지 않습니다. 그 대신, 밀도 독립적인 픽셀 단위와 같이 상대적인 측정치를 
+사용하는 것(<var>dp</var>), <var>wrap_content</var>, 또는
+<var>match_parent</var>등이 더 낫습니다. 이렇게 하면 
+애플리케이션이 다양한 기기 화면 크기에 걸쳐서도 적절하게 표시되도록 보장하는 데 도움이 되기 때문입니다.
+허용된 측정 유형은 
+<a href="{@docRoot}guide/topics/resources/available-resources.html#dimension">
+사용 가능한 리소스</a>에 정의되어 있습니다.</p>
+
+
+<h2 id="Position">레이아웃 위치</h2>
+   <p>
+   보기의 모양은 직사각형입니다. 보기에는 위치가 있으며, 이는
+ 한 쌍의 <em>왼쪽</em> 및 <em>상단</em> 좌표, 그리고 두 개의 치수가 너비와 높이를 나타내는 
+형식으로 표현됩니다. 위치와 치수의 단위는 픽셀입니다.
+
+   </p>
+
+   <p>
+   보기의 위치를 검색할 수 있습니다. 
+{@link android.view.View#getLeft()} 및 {@link android.view.View#getTop()} 메서드를 호출하면 됩니다. 전자는 보기를 
+나타내는 직사각형의 왼쪽, 즉 X 좌표를 반환합니다. 후자는 보기를 
+나타내는 직사각형의 상단, 즉 Y 좌표를 반환합니다. 이들 메서드는 둘 다 
+보기의 위치를 해당 보기의 상위와 관련지어 반환합니다. 예를 들어, 
+<code>getLeft()</code>가 20을 반환하는 경우 이는 해당 보기가 그 보기의 바로 상위의 왼쪽 가장자리에서 
+오른쪽으로 20픽셀 떨어진 곳에 있다는 뜻입니다.
+   </p>
+
+   <p>
+   이외에도 불필요한 계산을 피하기 위해 여러 가지 편의 메서드가 제공됩니다. 
+구체적으로 {@link android.view.View#getRight()} 및 {@link android.view.View#getBottom()}을 들 수 있습니다.
+   이들 메서드는 해당 보기를 나타내는 직사각형의 오른쪽과 하단 가장자리의 좌표를 반환합니다.
+ 예를 들어 {@link android.view.View#getRight()}를
+ 호출하는 것은 다음 계산과 비슷합니다. <code>getLeft() + getWidth()</code>
+   </p>
+
+
+<h2 id="SizePaddingMargins">크기, 안쪽 여백 및 여백</h2>
+   <p>
+   보기의 크기는 너비와 높이로 표현됩니다. 사실 하나의 보기는 
+두 쌍의 너비 및 높이 값을 소유합니다.
+   </p>
+
+   <p>
+   첫 번째 쌍을 <em>측정된 너비</em> 및 
+<em>측정된 높이</em>라고 합니다. 이들 치수는 보기가 
+상위 내에서 얼마나 커지고자 하는지를 정의합니다. 측정된 
+치수를 가져오려면 {@link android.view.View#getMeasuredWidth()}
+ 및 {@link android.view.View#getMeasuredHeight()}를 호출하면 됩니다.
+   </p>
+
+   <p>
+   두 번째 쌍은 단순히 <em>너비</em> 및 <em>높이</em>라고 일컬으며, 
+때로는 <em>그리기 너비</em> 및 <em>그리기 높이</em>로 부를 때도 있습니다. 이러한 
+치수는 그리기 시간 및 레이아웃 후에 보기가 화면에 표시되는 실제 크기를 
+정의합니다. 이들 값은 측정된 너비 및 높이와 달라도 되지만 
+꼭 달라야 하는 것은 아닙니다. 너비와 높이를 가져오려면 
+{@link android.view.View#getWidth()} 및 {@link android.view.View#getHeight()}를 호출하면 됩니다.
+   </p>
+
+   <p>
+   보기의 치수를 측정하려면 보기는 자신의 안쪽 여백을 감안합니다. 안쪽 여백은 
+보기의 왼쪽, 상단, 오른쪽 및 하단 부분에 대해 픽셀로 표시됩니다.
+   안쪽 여백은 정해진 픽셀 수를 사용하여 보기의 콘텐츠를 오프셋하는 데 쓰일 수도 
+있습니다. 예를 들어 왼쪽 안쪽 여백을 2로 설정하면 해당 보기의 콘텐츠를 왼쪽 가장자리에서 
+오른쪽으로 2픽셀 밀어냅니다. 안쪽 여백을 설정할 때에는 
+{@link android.view.View#setPadding(int, int, int, int)} 메서드를 사용하면 되고, 이를 쿼리하려면 
+{@link android.view.View#getPaddingLeft()}, {@link android.view.View#getPaddingTop()}, 
+{@link android.view.View#getPaddingRight()} 및 {@link android.view.View#getPaddingBottom()}을 사용하면 됩니다.
+   </p>
+
+   <p>
+   보기가 안쪽 여백을 정의할 수는 있지만, 여백에 대한 지원은 전혀 제공하지 
+않습니다. 다만 보기 그룹이 그와 같은 지원을 제공합니다. 자세한 정보는 
+{@link android.view.ViewGroup} 및 
+{@link android.view.ViewGroup.MarginLayoutParams}를 참조하십시오.
+   </p>
+
+   <p>치수에 대한 자세한 정보는 
+<a href="{@docRoot}guide/topics/resources/more-resources.html#Dimension">치수 값</a>을 참조하십시오.
+   </p>
+
+
+
+
+
+
+<style type="text/css">
+div.layout {
+  float:left;
+  width:200px;
+  margin:0 0 20px 20px;
+}
+div.layout.first {
+  margin-left:0;
+  clear:left;
+}
+</style>
+
+
+
+
+<h2 id="CommonLayouts">보편적인 레이아웃</h2>
+
+<p>{@link android.view.ViewGroup} 클래스의 각 하위 클래스는 각기 고유한 방식으로 자신 안에 
+중첩한 보기를 표시합니다. 아래는 Android 플랫폼에서 기본 제공되는, 보다 보편적인 레이아웃 유형을 
+몇 가지 나타낸 것입니다.</p>
+
+<p class="note"><strong>참고:</strong> 하나 이상의 레이아웃을 또 다른 레이아웃에 중첩하여 
+UI 디자인을 이룰 수도 있지만, 레이아웃 계층을 가능한 한 얕게 유지하도록 
+애써야 합니다. 중첩된 레이아웃이 적을수록 레이아웃이 더욱 빠르게 그려집니다(가로로 넓은 보기 계층이 
+깊은 보기 계층보다 낫습니다).</p>
+
+<!--
+<h2 id="framelayout">FrameLayout</h2>
+<p>{@link android.widget.FrameLayout FrameLayout} is the simplest type of layout
+object. It's basically a blank space on your screen that you can
+later fill with a single object &mdash; for example, a picture that you'll swap in and out.
+All child elements of the FrameLayout are pinned to the top left corner of the screen; you cannot
+specify a different location for a child view. Subsequent child views will simply be drawn over
+previous ones,
+partially or totally obscuring them (unless the newer object is transparent).
+</p>
+-->
+
+
+<div class="layout first">
+  <h4><a href="layout/linear.html">선형 레이아웃</a></h4>
+  <a href="layout/linear.html"><img src="{@docRoot}images/ui/linearlayout-small.png" alt="" /></a>
+  <p>여러 하위를 하나의 가로 방향 또는 세로 방향 행으로 정리하는 레이아웃. 이것은 
+창의 길이가 화면 길이를 웃도는 경우 스크롤 막대를 만듭니다.</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/relative.html">관계 레이아웃</a></h4>
+  <a href="layout/relative.html"><img src="{@docRoot}images/ui/relativelayout-small.png" alt="" /></a>
+  <p>여러 하위 객체의 위치를 서로 관련지어 나타내거나(하위 A가 
+하위 B의 왼쪽), 상위와 관련지어 나타낼 수 있도록 해줍니다(상위의 맨 위에 맞춰 정렬).</p>
+</div>
+
+<div class="layout">
+  <h4><a href="{@docRoot}guide/webapps/webview.html">웹 보기</a></h4>
+  <a href="{@docRoot}guide/webapps/webview.html"><img src="{@docRoot}images/ui/webview-small.png" alt="" /></a>
+  <p>웹 페이지를 표시합니다.</p>
+</div>
+
+
+
+
+<h2 id="AdapterViews" style="clear:left">어댑터로 레이아웃 구축하기</h2>
+
+<p>레이아웃의 콘텐츠가 동적이거나 미리 정의되지 않은 경우, 
+{@link android.widget.AdapterView}의 하위 클래스가 되는 레이아웃을 사용하여 런타임에 보기로 레이아웃을 채울 수 있습니다. 
+{@link android.widget.AdapterView} 클래스의 하위 클래스는 {@link android.widget.Adapter}를 
+사용하여 자신의 레이아웃에 데이터를 바인딩합니다. {@link android.widget.Adapter}가 데이터 소스와 {@link android.widget.AdapterView}
+ 레이아웃 사이의 중개자 역할을 합니다. &mdash;{@link android.widget.Adapter}가
+ 데이터를 검색하여(배열 또는 데이터베이스 쿼리와 같은 소스로부터) 
+각 항목을 보기로 변환해서 {@link android.widget.AdapterView} 레이아웃에 추가될 수 있도록 합니다.</p>
+
+<p>어댑터로 지원되는 보편적인 레이아웃의 몇 가지 예는 다음과 같습니다.</p>
+
+<div class="layout first">
+  <h4><a href="layout/listview.html">목록 보기</a></h4>
+  <a href="layout/listview.html"><img src="{@docRoot}images/ui/listview-small.png" alt="" /></a>
+  <p>스크롤로 내리는 하나의 열 목록을 표시합니다.</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/gridview.html">눈금 보기</a></h4>
+  <a href="layout/gridview.html"><img src="{@docRoot}images/ui/gridview-small.png" alt="" /></a>
+  <p>스크롤로 내리는 열과 행의 눈금을 표시합니다.</p>
+</div>
+
+
+
+<h3 id="FillingTheLayout" style="clear:left">데이터로 어댑터 보기 채우기</h3>
+
+<p>{@link android.widget.ListView} 또는 
+{@link android.widget.GridView}와 같은 {@link android.widget.AdapterView}를 채우려면 {@link android.widget.AdapterView} 인스턴스를 
+{@link android.widget.Adapter}에 바인딩하면 됩니다. 이는 외부 소스로부터 데이터를 검색하여 각 데이터 항목을 나타내는 {@link
+android.view.View}를 생성합니다.</p>
+
+<p>Android는 {@link android.widget.Adapter}의 하위 클래스를 여러 개 제공합니다. 
+이는 여러 가지 종류의 데이터를 검색하고 {@link android.widget.AdapterView}에 대한 보기를 구축하는 데 유용합니다. 
+가장 보편적인 어댑터 두 가지를 예로 들면 다음과 같습니다.</p>
+
+<dl>
+  <dt>{@link android.widget.ArrayAdapter}</dt>
+    <dd>이 어댑터는 데이터 소스가 배열일 때 사용하십시오. 기본적으로 {@link
+android.widget.ArrayAdapter}가 각 항목에서 {@link
+java.lang.Object#toString()}를 호출하고 그 콘텐츠를 {@link
+android.widget.TextView}에 배치함으로써 각 배열 항목에 대한 보기를 생성합니다.
+      <p>예를 들어, {@link
+android.widget.ListView}로 문자열 배열을 표시하고자 하는 경우, 생성자를 사용하여 
+새로운 {@link android.widget.ArrayAdapter}를 초기화해서 각 문자열과 문자열 배열에 대한 레이아웃을 지정하면 됩니다.</p>
+<pre>
+ArrayAdapter&lt;String> adapter = new ArrayAdapter&lt;String>(this,
+        android.R.layout.simple_list_item_1, myStringArray);
+</pre>
+<p>이 생성자에 대한 인수는 다음과 같습니다.</p>
+<ul>
+  <li>개발자의 앱 {@link android.content.Context}</li>
+  <li>배열에 있는 각 문자열에 대한 {@link android.widget.TextView}가 들어있는 레이아웃</li>
+  <li>문자열 배열</li>
+</ul>
+<p>그런 다음 {@link android.widget.ListView}에서 
+{@link android.widget.ListView#setAdapter setAdapter()}를 호출하기만 하면 됩니다.</p>
+<pre>
+ListView listView = (ListView) findViewById(R.id.listview);
+listView.setAdapter(adapter);
+</pre>
+
+      <p>각 항목의 외관을 사용자 지정하려면 배열의 객체에 대한 {@link
+java.lang.Object#toString()} 메서드를 재정의하면 됩니다. 아니면, 각 항목에 대하여
+{@link android.widget.TextView}가 아닌 다른 보기를 생성하고자 하는 경우(예를 들어 각 배열 항목에 
+{@link android.widget.ImageView}를 원하는 경우), {@link
+android.widget.ArrayAdapter} 클래스를 확장하고 {@link android.widget.ArrayAdapter#getView
+getView()}를 재정의하여 각 항목에 대해 원하는 유형의 보기를 반환하도록 할 수 있습니다.</p>
+
+</dd>
+
+  <dt>{@link android.widget.SimpleCursorAdapter}</dt>
+    <dd>이 어댑터는 데이터 출처가 {@link android.database.Cursor}일 때 사용하십시오. 
+{@link android.widget.SimpleCursorAdapter}를 사용하는 경우, 
+{@link android.database.Cursor}에 있는 각 행에 대하여 사용할 레이아웃을 지정해야 합니다. 또한 {@link android.database.Cursor}
+의 어느 열이 레이아웃의 어느 보기에 삽입되어야 할지도 지정해야 합니다. 예를 들어 사람 이름과 
+전화번호로 이루어진 목록을 생성하고자 하는 경우, 각 사람에 대해 행이 하나씩 있고 이름과 번호에 대해 열이 들어있는 {@link
+android.database.Cursor}를 반환하는 쿼리를 수행하면 됩니다.
+ 그런 다음 레이아웃에서 각 결과에 대하여 {@link
+android.database.Cursor}의 어느 열을 원하는지 지정하는 문자열 배열을 만들 수 있고, 각 열이 배치되어야 하는 
+상응하는 보기를 지정하는 정수 배열을 만들면 됩니다.</p>
+<pre>
+String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME,
+                        ContactsContract.CommonDataKinds.Phone.NUMBER};
+int[] toViews = {R.id.display_name, R.id.phone_number};
+</pre>
+<p>{@link android.widget.SimpleCursorAdapter}를 인스턴트화하는 경우, 각 결과에 대해 사용할 레이아웃과 
+결과가 들어있는 {@link android.database.Cursor}, 그리고 다음의 두 배열을 전달합니다.</p>
+<pre>
+SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
+        R.layout.person_name_and_number, cursor, fromColumns, toViews, 0);
+ListView listView = getListView();
+listView.setAdapter(adapter);
+</pre>
+<p>그러면 {@link android.widget.SimpleCursorAdapter}가 
+{@link android.database.Cursor}에 있는 각 행에 대한 보기를 하나씩 생성합니다. 이때 상응하는 {@code toViews} 보기 안에 각 {@code
+fromColumns} 항목을 삽입함으로써 제공된 레이아웃을 사용합니다.</p>.</dd>
+</dl>
+
+
+<p>애플리케이션의 수명이 진행되는 동안에 어댑터가 읽는 기본 데이터를 변경하는 경우, 
+{@link android.widget.ArrayAdapter#notifyDataSetChanged()}를 호출해야 합니다. 
+이렇게 하면 첨부된 보기에 데이터가 변경되었으며 스스로 새로 고쳐야 한다는 사실을 알려줍니다.</p>
+
+
+
+<h3 id="HandlingUserSelections">클릭 이벤트 처리</h3>
+
+<p>{@link android.widget.AdapterView}에 있는 각 항목에서의 클릭 이벤트에 응답하려면 
+{@link android.widget.AdapterView.OnItemClickListener} 인터페이스를 구현하면 됩니다. 예:</p>
+
+<pre>
+// Create a message handling object as an anonymous class.
+private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
+    public void onItemClick(AdapterView parent, View v, int position, long id) {
+        // Do something in response to the click
+    }
+};
+
+listView.setOnItemClickListener(mMessageClickedHandler);
+</pre>
+
+
+
diff --git a/docs/html-intl/intl/ko/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/ko/guide/topics/ui/dialogs.jd
new file mode 100644
index 0000000..23e92c9
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/ui/dialogs.jd
@@ -0,0 +1,798 @@
+page.title=대화
+page.tags=alertdialog,dialogfragment
+
+@jd:body
+
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>이 문서의 내용</h2>
+<ol>
+  <li><a href="#DialogFragment">대화 프래그먼트 생성</a></li>
+  <li><a href="#AlertDialog">경고 대화 구축</a>
+    <ol>
+      <li><a href="#AddingButtons">버튼 추가</a></li>
+      <li><a href="#AddingAList">목록 추가</a></li>
+      <li><a href="#CustomLayout">사용자 지정 레이아웃 생성</a></li>
+    </ol>
+  </li>
+  <li><a href="#PassingEvents">이벤트를 대화의 호스트에 다시 전달</a></li>
+  <li><a href="#ShowingADialog">대화 표시</a></li>
+  <li><a href="#FullscreenDialog">대화를 전체 화면으로 또는 포함된 프래그먼트로 표시</a>
+    <ol>
+      <li><a href="#ActivityAsDialog">액티비티를 큰 화면에 대화로 표시</a></li>
+    </ol>
+  </li>
+  <li><a href="#DismissingADialog">대화 무시</a></li>
+</ol>
+
+    <h2>Key 클래스</h2>
+    <ol>
+      <li>{@link android.app.DialogFragment}</li>
+      <li>{@link android.app.AlertDialog}</li>
+    </ol>
+    
+    <h2>참고 항목</h2>
+    <ol>
+      <li><a href="{@docRoot}design/building-blocks/dialogs.html">대화 디자인 가이드</a></li>
+      <li><a href="{@docRoot}guide/topics/ui/controls/pickers.html">선택기</a>(날짜/시간 대화)</li>
+    </ol>
+  </div>
+</div>
+
+<p>대화는 사용자에게 결정을 내리거나 추가 정보를 입력하라는 
+프롬프트를 보내는 작은 창입니다. 대화는 화면을 가득 채우지 않으며 보통 사용자가 
+다음으로 계속 진행하기 전에 조치를 취해야 하는 모달 이벤트에 쓰입니다.</p>
+
+<div class="note design">
+<p><strong>대화 디자인</strong></p>
+  <p>언어 권장 사항을 비롯한 여러 가지 대화 디자인 방법에 관련된 정보는 
+<a href="{@docRoot}design/building-blocks/dialogs.html">대화</a> 디자인 가이드를 읽어보십시오.</p>
+</div>
+
+<img src="{@docRoot}images/ui/dialogs.png" />
+
+<p>{@link android.app.Dialog} 클래스가 대화의 기본 클래스이지만, 
+{@link android.app.Dialog}를 직접 인스턴트화하는 것은 삼가야 합니다.
+대신 다음 하위 클래스 중 하나를 사용하십시오.</p>
+<dl>
+  <dt>{@link android.app.AlertDialog}</dt>
+  <dd>제목 하나, 최대 세 개의 버튼, 선택 가능한 품목 목록 또는 
+사용자 지정 레이아웃을 표시할 수 있는 대화입니다.</dd>
+  <dt>{@link android.app.DatePickerDialog} 또는 {@link android.app.TimePickerDialog}</dt>
+  <dd>미리 정의된 UI가 있는 대화로 사용자로 하여금 날짜 또는 시간을 선택할 수 있게 해줍니다.</dd>
+</dl>
+
+<div class="sidebox">
+<h2>ProgressDialog 피하기</h2>
+<p>Android에는 
+{@link android.app.ProgressDialog}라고 하는 또 다른 대화 클래스가 있습니다. 이것은 진행률 표시줄이 있는 대화를 표시하는 것입니다. 그러나, 
+로딩이나 확정되지 않은 진행률을 나타내야 하는 경우 이 대신 <a href="{@docRoot}design/building-blocks/progress.html">진행률 및 
+액티비티</a>에 대한 디자인 지침을 따르고, 
+레이아웃의 {@link android.widget.ProgressBar}를 사용해야 합니다.</p>
+</div>
+
+<p>이러한 클래스가 대화의 스타일과 구조를 정의하지만, 대화의 컨테이너로는 
+{@link android.support.v4.app.DialogFragment}를 사용해야 합니다.
+{@link android.support.v4.app.DialogFragment}
+ 클래스는 대화를 만들고 그 외관을 관리하는 데 필요한 모든 제어를 제공합니다. 
+{@link android.app.Dialog} 객체에서 메서드를 호출하는 것 대신입니다.</p>
+
+<p>대화를 관리하기 위해 {@link android.support.v4.app.DialogFragment}를 사용하면 
+사용자가 <em>뒤로</em> 버튼을 누르거나 화면을 돌릴 때 등 
+수명 주기 이벤트를 올바르게 처리하도록 보장할 수 있습니다. {@link
+android.support.v4.app.DialogFragment} 클래스를 사용하면 대화의 UI를 더 큰 UI에 
+포함시킬 수 있는 구성 요소로 다시 사용할 수 있게 해주기도 합니다. 이것은 기존의 {@link
+android.support.v4.app.Fragment}와 똑같습니다(대화 UI를 크고 작은 화면에서 서로 다르게 
+나타나도록 하고자 하는 경우 등).</p>
+
+<p>이 가이드의 다음 섹션에서는 {@link
+android.support.v4.app.DialogFragment}를 {@link android.app.AlertDialog}
+ 객체와 함께 조합하여 사용하는 방법을 설명합니다. 날짜 또는 시간 선택기를 생성하고자 하는 경우, 대신 
+<a href="{@docRoot}guide/topics/ui/controls/pickers.html">선택기</a> 가이드를 읽으십시오.</p>
+
+<p class="note"><strong>참고:</strong>
+{@link android.app.DialogFragment} 클래스는 원래 
+Android 3.0(API 레벨 11)에 추가되었기 때문에 이 문서에서는 <a href="{@docRoot}tools/support-library/index.html">지원 라이브러리</a>와 함께 제공된 {@link
+android.support.v4.app.DialogFragment} 클래스를 사용하는 법을 설명합니다. 이 라이브러리를 앱에 추가하면 Android 1.6 이상을 실행하는 기기에서 
+{@link android.support.v4.app.DialogFragment}를 비롯하여 
+다른 API도 다양하게 사용할 수 있습니다. 앱의 최소 버전이 
+API 레벨 11 이상인 경우, {@link
+android.app.DialogFragment}의 프레임워크 버전을 사용해도 되지만, 이 문서에 있는 링크는 
+지원 라이브러리 API를 대상으로 한 것이라는 점을 유의하십시오. 지원 라이브러리를 사용할 때에는 
+<code>android.support.v4.app.DialogFragment</code>
+ 클래스를 가져와야 합니다. <code>android.app.DialogFragment</code>가 <em>아닙니다</em>.</p>
+
+
+<h2 id="DialogFragment">대화 프래그먼트 생성</h2>
+
+<p>대단히 다양한 대화 디자인을 만들 수 있습니다. 사용자 지정 레이아웃은 물론 
+<a href="{@docRoot}design/building-blocks/dialogs.html">대화</a>
+디자인 가이드에서 설명한 것도 포함합니다. 
+{@link android.support.v4.app.DialogFragment}를 확장하고 {@link android.support.v4.app.DialogFragment#onCreateDialog
+onCreateDialog()} 콜백 메서드에 {@link android.app.AlertDialog}를
+ 생성하면 됩니다.</p>
+
+<p>예를 들어 다음은 {@link android.app.AlertDialog}로, 이는 
+{@link android.support.v4.app.DialogFragment} 내에서 관리되는 것입니다.</p>
+
+<pre>
+public class FireMissilesDialogFragment extends DialogFragment {
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Use the Builder class for convenient dialog construction
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // FIRE ZE MISSILES!
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // User cancelled the dialog
+                   }
+               });
+        // Create the AlertDialog object and return it
+        return builder.create();
+    }
+}
+</pre>
+
+<div class="figure" style="width:290px;margin:0 0 0 20px">
+<img src="{@docRoot}images/ui/dialog_buttons.png" alt="" />
+<p class="img-caption"><strong>그림 1.</strong>
+메시지 하나와 작업 버튼 두 개가 있는 대화입니다.</p>
+</div>
+
+<p>이 클래스의 인스턴스를 생성하고 해당 객체에서 {@link
+android.support.v4.app.DialogFragment#show show()}를 호출하면 대화는 
+그림 1에 표시된 것처럼 나타납니다.</p>
+
+<p>다음 섹션에서는 {@link android.app.AlertDialog.Builder}
+API를 사용하여 대화를 생성하는 것에 대해 좀 더 자세히 설명합니다.</p>
+
+<p>대화가 얼마나 복잡한지에 따라 
+{@link android.support.v4.app.DialogFragment}에서 여러 가지 다른 콜백 메서드를 구현할 수 있습니다. 그중에는 기본적인 
+<a href="{@docRoot}guide/components/fragments.html#Lifecycle">조각 수명 주기 메서드</a>도 포함됩니다.
+
+
+
+
+
+<h2 id="AlertDialog">경고 대화 구축</h2>
+
+
+<p>{@link android.app.AlertDialog} 클래스를 사용하면 
+여러 가지 대화 디자인을 구축할 수 있으며, 필요한 대화 클래스는 이것뿐인 경우도 많습니다. 
+그림 2에 표시된 것과 같이 경고 대화에는 세 가지 영역이 있습니다.</p>
+
+<div class="figure" style="width:311px;margin-top:0">
+<img src="{@docRoot}images/ui/dialogs_regions.png" alt="" style="margin-bottom:0" />
+<p class="img-caption"><strong>그림 2.</strong> 대화의 레이아웃입니다.</p>
+</div>
+
+<ol>
+<li><b>제목</b>
+  <p>이것은 선택 항목이며 콘텐츠 영역에 상세한 메시지, 목록 또는 
+사용자 지정 레이아웃이 채워져 있는 경우에만 사용해야 합니다. 단순한 메시지 또는 
+질문(그림 1의 대화처럼)을 진술해야 하는 경우, 제목은 없어도 됩니다.</li>
+<li><b>콘텐츠 영역</b>
+  <p>이것은 메시지, 목록 또는 다른 사용자 지정 레이아웃을 표시할 수 있습니다.</p></li>
+<li><b>작업 버튼</b>
+  <p>대화 하나에 작업 버튼은 세 개 이상 있으면 안 됩니다.</p></li>
+</ol>
+
+<p>{@link android.app.AlertDialog.Builder}
+ 클래스가 이와 같은 종류의 콘텐츠가 있는 {@link android.app.AlertDialog}를
+ 생성할 수 있게 해주는 API를 제공하며, 여기에 사용자 지정 레이아웃도 포함됩니다.</p>
+
+<p>{@link android.app.AlertDialog}를 구축하려면 다음과 같이 하면 됩니다.</p>
+
+<pre>
+<b>// 1. Instantiate an {@link android.app.AlertDialog.Builder} with its constructor</b>
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+
+<b>// 2. Chain together various setter methods to set the dialog characteristics</b>
+builder.setMessage(R.string.dialog_message)
+       .setTitle(R.string.dialog_title);
+
+<b>// 3. Get the {@link android.app.AlertDialog} from {@link android.app.AlertDialog.Builder#create()}</b>
+AlertDialog dialog = builder.create();
+</pre>
+
+<p>다음 주제는 
+{@link android.app.AlertDialog.Builder} 클래스를 사용하여 다양한 대화 속성을 정의하는 방법을 나타낸 것입니다.</p>
+
+
+
+
+<h3 id="AddingButtons">버튼 추가</h3>
+
+<p>그림 2에 표시된 것과 같은 작업 버튼을 추가하려면 
+{@link android.app.AlertDialog.Builder#setPositiveButton setPositiveButton()} 및 
+{@link android.app.AlertDialog.Builder#setNegativeButton setNegativeButton()} 메서드를 호출하면 됩니다.</p>
+
+<pre style="clear:right">
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+// Add the buttons
+builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User clicked OK button
+           }
+       });
+builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User cancelled the dialog
+           }
+       });
+// Set other dialog properties
+...
+
+// Create the AlertDialog
+AlertDialog dialog = builder.create();
+</pre>
+
+<p><code>set...Button()</code> 메서드에는 버튼의 제목이 필요하고(
+<a href="{@docRoot}guide/topics/resources/string-resource.html">문자열 리소스</a>가 제공), 사용자가 버튼을 눌렀을 때 수행할 작업을 정의하는 
+{@link android.content.DialogInterface.OnClickListener}가 
+필요합니다.</p>
+
+<p>추가할 수 있는 작업 버튼은 다음과 같은 세 가지가 있습니다.</p>
+<dl>
+  <dt>긍정적</dt>
+  <dd>이것은 수락하고 작업을 계속하는 데 사용해야 합니다("확인(OK)" 작업).</dd>
+  <dt>부정적</dt>
+  <dd>이것은 작업을 취소하는 데 사용해야 합니다.</dd>
+  <dt>중립적</dt>
+  <dd>이것은 사용자가 작업을 계속하고 싶지 않을 수 있지만 
+취소하고자 한다고 볼 수 없을 때 사용해야 합니다. 이것은 긍정적 버튼과 부정적 버튼 사이에 나타납니다.
+ 이런 작업을 예로 들면 "나중에 알림" 등이 있습니다.</dd> 
+</dl>
+
+<p>{@link
+android.app.AlertDialog}에는 각 버튼 유형을 하나씩만 추가할 수 있습니다. 다시 말해, "긍정적" 버튼이 한 개 이상 있으면 안 됩니다.</p>
+
+
+
+<div class="figure" style="width:290px;margin:0 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_list.png" alt="" />
+<p class="img-caption"><strong>그림 3.</strong>
+제목과 목록이 있는 대화입니다.</p>
+</div>
+
+<h3 id="AddingAList">목록 추가</h3>
+
+<p>{@link android.app.AlertDialog} API와 함께 사용 가능한 목록은 세 가지 종류가 있습니다.</p>
+<ul>
+<li>일반적인 단일 선택 목록</li>
+<li>영구적인 단일 선택 목록(무선 버튼)</li>
+<li>영구적인 다중 선택 목록(확인란)</li>
+</ul>
+
+<p>그림 3에 표시된 것과 같은 단일 선택 목록을 생성하려면 
+{@link android.app.AlertDialog.Builder#setItems setItems()} 메서드를 사용하면 됩니다.</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    builder.setTitle(R.string.pick_color)
+           .setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int which) {
+               // The 'which' argument contains the index position
+               // of the selected item
+           }
+    });
+    return builder.create();
+}
+</pre>
+
+<p>목록은 대화의 콘텐츠 영역에 나타나므로, 
+대화는 메시지와 목록을 둘 다 표시할 수 없습니다. 대화에는 
+{@link android.app.AlertDialog.Builder#setTitle setTitle()}로 제목을 설정해야 합니다. 
+목록에 대한 항목을 지정하려면 {@link
+android.app.AlertDialog.Builder#setItems setItems()}를 호출하여 배열을 하나 전달합니다.
+아니면 {@link
+android.app.AlertDialog.Builder#setAdapter setAdapter()}를 사용하여 목록을 지정해도 됩니다. 이렇게 하면 동적인 데이터가 있는 목록(예: 데이터베이스에서 가져온 것)을 
+{@link android.widget.ListAdapter}로 지원할 수 있게 해줍니다.</p>
+
+<p>{@link android.widget.ListAdapter}로 목록을 지원하기로 선택하는 경우, 
+항상 {@link android.support.v4.content.Loader}를 사용해야 콘텐츠가 비동기식으로 
+로딩됩니다. 
+이것은 <a href="{@docRoot}guide/topics/ui/declaring-layout.html#AdapterViews">어댑터로 레이아웃 
+구축하기</a> 및 <a href="{@docRoot}guide/components/loaders.html">로더</a>
+ 가이드에 더 자세히 설명되어 있습니다.</p>
+
+<p class="note"><strong>참고:</strong> 기본적으로 목록 항목을 터치하면 대화를 무시하게 됩니다. 
+다만 다음과 같은 영구적인 선택 목록 중 하나를 사용하는 경우는 예외입니다.</p>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_checkboxes.png" />
+<p class="img-caption"><strong>그림 4.</strong>
+다중 선택 항목의 목록입니다.</p>
+</div>
+
+
+<h4 id="Checkboxes">영구적 다중 선택 또는 단일 선택 목록 추가</h4>
+
+<p>다중 선택 항목 목록을 추가하거나(확인란) 
+단일 선택 목록을 추가하려면(무선 버튼), 각각 
+{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} 또는 
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()} 메서드를 사용합니다.</p>
+
+<p>예를 들어 다음은 그림 4에 표시된 것과 같이 다중 선택 목록을 생성하는 방법입니다. 
+이것은 선택한 항목을 
+{@link java.util.ArrayList}에 저장합니다.</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    mSelectedItems = new ArrayList();  // Where we track the selected items
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Set the dialog title
+    builder.setTitle(R.string.pick_toppings)
+    // Specify the list array, the items to be selected by default (null for none),
+    // and the listener through which to receive callbacks when items are selected
+           .setMultiChoiceItems(R.array.toppings, null,
+                      new DialogInterface.OnMultiChoiceClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int which,
+                       boolean isChecked) {
+                   if (isChecked) {
+                       // If the user checked the item, add it to the selected items
+                       mSelectedItems.add(which);
+                   } else if (mSelectedItems.contains(which)) {
+                       // Else, if the item is already in the array, remove it 
+                       mSelectedItems.remove(Integer.valueOf(which));
+                   }
+               }
+           })
+    // Set the action buttons
+           .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // User clicked OK, so save the mSelectedItems results somewhere
+                   // or return them to the component that opened the dialog
+                   ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   ...
+               }
+           });
+
+    return builder.create();
+}
+</pre>
+
+<p>일반적인 목록과 무선 버튼이 있는 목록 양쪽 모두 "단일 선택" 작업을 
+제공하지만, 사용자의 선택을 유지하고자 하는 경우 {@link
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()}를 사용해야 합니다. 
+다시 말해, 대화를 나중에 다시 여는 경우 사용자의 현재 선택이 무엇인지 나타내야 하며, 
+그러면 무선 버튼으로 목록을 생성할 수 있습니다.</p>
+
+
+
+
+
+<h3 id="CustomLayout">사용자 지정 레이아웃 생성</h3>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_custom.png" alt="" />
+<p class="img-caption"><strong>그림 5.</strong> 사용자 지정 대화 레이아웃입니다.</p>
+</div>
+
+<p>대화에서 사용자 지정 레이아웃을 원하는 경우, 레이아웃을 생성한 다음 이를 
+{@link android.app.AlertDialog}에 추가하면 됩니다. 이때 {@link
+android.app.AlertDialog.Builder#setView setView()} on your {@link
+android.app.AlertDialog.Builder} 객체를 호출하는 방법을 씁니다.</p>
+
+<p>기본적으로 사용자 지정 레이아웃이 대화창을 가득 채우지만, 여전히 
+{@link android.app.AlertDialog.Builder} 메서드를 사용하여 버튼과 제목을 추가할 수 있습니다.</p>
+
+<p>예를 들어 다음은 그림 5에 표시된 대화에 대한 레이아웃 파일입니다.</p>
+
+<p style="clear:right" class="code-caption">res/layout/dialog_signin.xml</p>
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+    &lt;ImageView
+        android:src="@drawable/header_logo"
+        android:layout_width="match_parent"
+        android:layout_height="64dp"
+        android:scaleType="center"
+        android:background="#FFFFBB33"
+        android:contentDescription="@string/app_name" />
+    &lt;EditText
+        android:id="@+id/username"
+        android:inputType="textEmailAddress"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="16dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="4dp"
+        android:hint="@string/username" />
+    &lt;EditText
+        android:id="@+id/password"
+        android:inputType="textPassword"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="4dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="16dp"
+        android:fontFamily="sans-serif"
+        android:hint="@string/password"/>
+&lt;/LinearLayout>
+</pre>
+
+<p class="note"><strong>팁:</strong> 기본적으로 {@link android.widget.EditText}
+ 요소를 설정하여 {@code "textPassword"} 입력 유형을 사용하고자 하는 경우, 글꼴 패밀리가 고정 폭으로 설정되어 있으므로 
+글꼴 패밀리를 {@code "sans-serif"}로 변경해야 합니다. 그래야 양쪽 텍스트 필드가 모두 일치하는 글꼴 스타일을 
+사용할 수 있습니다.</p>
+
+<p>{@link android.support.v4.app.DialogFragment} 안의 레이아웃을 팽창시키려면, 
+{@link android.view.LayoutInflater}를 
+{@link android.app.Activity#getLayoutInflater()}로 가져와 
+{@link android.view.LayoutInflater#inflate inflate()}를 호출합니다. 
+여기서 첫 번째 매개변수가 레이아웃 리소스 ID이고 두 번째 매개변수가 레이아웃의 상위 보기입니다.
+그러므로 그런 다음 {@link android.app.AlertDialog#setView setView()}를
+ 호출하여 레이아웃을 대화에 배치할 수 있습니다.</p>
+
+<pre>
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Get the layout inflater
+    LayoutInflater inflater = getActivity().getLayoutInflater();
+
+    // Inflate and set the layout for the dialog
+    // Pass null as the parent view because its going in the dialog layout
+    builder.setView(inflater.inflate(R.layout.dialog_signin, null))
+    // Add action buttons
+           .setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // sign in the user ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int id) {
+                   LoginDialogFragment.this.getDialog().cancel();
+               }
+           });      
+    return builder.create();
+}
+</pre>
+
+<div class="note">
+<p><strong>팁:</strong> 사용자 지정 대화를 원하는 경우, 
+{@link android.app.Activity}를 대신 표시해도 됩니다. 이는 
+{@link android.app.Dialog} API 대신 대화로 표시하는 것입니다. 단순히 액티비티를 하나 생성한 다음 그 테마를 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> 매니페스트 요소에 있는 
+{@link android.R.style#Theme_Holo_Dialog Theme.Holo.Dialog}로
+ 설정하면 됩니다.</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.Dialog" >
+</pre>
+<p>완료되었습니다. 이제 액티비티가 대화를 전체 화면이 아니라 대화창으로 표시합니다.</p>
+</div>
+
+
+
+<h2 id="PassingEvents">이벤트를 대화의 호스트에 다시 전달</h2>
+
+<p>사용자가 대화의 작업 버튼 중 하나를 터치하거나 목록에서 항목을 하나 선택하면, 
+{@link android.support.v4.app.DialogFragment}가 
+필요한 작업을 알아서 수행할 수도 있지만 대부분의 경우 이벤트를 대화를 연 액티비티 또는 프래그먼트에 직접 전달하고자 할 수 있습니다.
+ 이렇게 하려면 각 클릭 이벤트의 유형별로 메서드가 있는 인터페이스를 정의합니다. 
+ 그런 다음 해당 인터페이스를 대화로부터 작업 이벤트를 수신할 
+호스트 구성 요소에 구현하면 됩니다.</p>
+
+<p>예를 들어 다음은 인터페이스를 정의하는 {@link android.support.v4.app.DialogFragment}입니다. 
+이 인터페이스를 통해 이벤트를 호스트 액티비티에 도로 전달하게 됩니다.</p>
+
+<pre>
+public class NoticeDialogFragment extends DialogFragment {
+    
+    /* The activity that creates an instance of this dialog fragment must
+     * implement this interface in order to receive event callbacks.
+     * Each method passes the DialogFragment in case the host needs to query it. */
+    public interface NoticeDialogListener {
+        public void onDialogPositiveClick(DialogFragment dialog);
+        public void onDialogNegativeClick(DialogFragment dialog);
+    }
+    
+    // Use this instance of the interface to deliver action events
+    NoticeDialogListener mListener;
+    
+    // Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
+    &#64;Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        // Verify that the host activity implements the callback interface
+        try {
+            // Instantiate the NoticeDialogListener so we can send events to the host
+            mListener = (NoticeDialogListener) activity;
+        } catch (ClassCastException e) {
+            // The activity doesn't implement the interface, throw exception
+            throw new ClassCastException(activity.toString()
+                    + " must implement NoticeDialogListener");
+        }
+    }
+    ...
+}
+</pre>
+
+<p>대화를 호스팅하는 액티비티는 대화의 인스턴스를 만듭니다. 
+이때 대화 프래그먼트의 생성자를 사용하며, 
+{@code NoticeDialogListener} 인터페이스 구현을 통해 대화의 이벤트를 수신하게 됩니다.</p>
+
+<pre>
+public class MainActivity extends FragmentActivity
+                          implements NoticeDialogFragment.NoticeDialogListener{
+    ...
+    
+    public void showNoticeDialog() {
+        // Create an instance of the dialog fragment and show it
+        DialogFragment dialog = new NoticeDialogFragment();
+        dialog.show(getSupportFragmentManager(), "NoticeDialogFragment");
+    }
+
+    // The dialog fragment receives a reference to this Activity through the
+    // Fragment.onAttach() callback, which it uses to call the following methods
+    // defined by the NoticeDialogFragment.NoticeDialogListener interface
+    &#64;Override
+    public void onDialogPositiveClick(DialogFragment dialog) {
+        // User touched the dialog's positive button
+        ...
+    }
+
+    &#64;Override
+    public void onDialogNegativeClick(DialogFragment dialog) {
+        // User touched the dialog's negative button
+        ...
+    }
+}
+</pre>
+
+<p>액티비티가 {@code NoticeDialogListener}를 구현하기 때문에&mdash;위에 표시된 {@link android.support.v4.app.Fragment#onAttach onAttach()}
+ 콜백 메서드가 강제 적용&mdash;해당 대화 프래그먼트는 
+인터페이스 콜백 메서드를 사용하여 액티비티에 대한 클릭 이벤트를 
+전달할 수 있습니다.</p>
+
+<pre>
+public class NoticeDialogFragment extends DialogFragment {
+    ...
+
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Build the dialog and set up the button click handlers
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the positive button event back to the host activity
+                       mListener.onDialogPositiveClick(NoticeDialogFragment.this);
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the negative button event back to the host activity
+                       mListener.onDialogNegativeClick(NoticeDialogFragment.this);
+                   }
+               });
+        return builder.create();
+    }
+}
+</pre>
+
+
+
+<h2 id="ShowingADialog">대화 표시</h2>
+
+<p>대화를 표시하고자 하는 경우, {@link
+android.support.v4.app.DialogFragment}의 인스턴스를 생성한 다음 {@link android.support.v4.app.DialogFragment#show
+show()}를 호출하여 {@link android.support.v4.app.FragmentManager}와 대화 프래그먼트에 대한 
+태그 이름을 전달합니다.</p>
+
+<p>{@link android.support.v4.app.FragmentManager}를 가져오려면 
+{@link android.support.v4.app.FragmentActivity}에서 
+{@link android.support.v4.app.FragmentActivity#getSupportFragmentManager()}를 호출하거나 {@link
+android.support.v4.app.Fragment}로부터 {@link
+android.support.v4.app.Fragment#getFragmentManager()}를 호출합니다. 예:</p>
+
+<pre>
+public void confirmFireMissiles() {
+    DialogFragment newFragment = new FireMissilesDialogFragment();
+    newFragment.show(getSupportFragmentManager(), "missiles");
+}
+</pre>
+
+<p>두 번째 인수 {@code "missiles"}는 시스템이 
+필요에 따라 프래그먼트의 상태를 저장하고 복원하는 데 사용하는 고유한 태그 이름입니다. 이 태그를 사용하면 {@link android.support.v4.app.FragmentManager#findFragmentByTag
+findFragmentByTag()}를 호출하여 해당 프래그먼트를 파악할 수도 있습니다.
+</p>
+
+
+
+
+<h2 id="FullscreenDialog">대화를 전체 화면으로 또는 포함된 프래그먼트로 표시</h2>
+
+<p>UI 디자인에서, 몇몇 상황 하에서는 UI의 한 조각을 대화로 나타내지만 
+다른 상황에서는 전체 화면이나 포함된 프래그먼트로 나타내고자 하는 경우가 있을 수 
+있습니다(이는 어쩌면 기기 화면이 대형인지 소형인지에 따라 달라질 수도 있습니다). {@link android.support.v4.app.DialogFragment}
+클래스에서 이런 유연성을 제공하는 것은 이것이 여전히 포함 가능한 {@link
+android.support.v4.app.Fragment} 역할을 할 수 있기 때문입니다.</p>
+
+<p>그러나 이 경우에는 대화를 구축하는 데 {@link android.app.AlertDialog.Builder AlertDialog.Builder}
+또는 다른 {@link android.app.Dialog} 객체를 사용하면 안 됩니다. 
+{@link android.support.v4.app.DialogFragment}를 포함 가능한 상태로 만들려면, 
+레이아웃 안에 있는 대화의 UI를 정의해야 합니다. 그런 다음 레이아웃을 
+{@link android.support.v4.app.DialogFragment#onCreateView
+onCreateView()} 콜백에 로딩합니다.</p>
+
+<p>다음은 대화 또는 포함 가능한 프래그먼트 중 어느 쪽으로든 표시될 수 있는 
+{@link android.support.v4.app.DialogFragment} 예시입니다(<code>purchase_items.xml</code>이라는 레이아웃 사용).</p>
+
+<pre>
+public class CustomDialogFragment extends DialogFragment {
+    /** The system calls this to get the DialogFragment's layout, regardless
+        of whether it's being displayed as a dialog or an embedded fragment. */
+    &#64;Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        // Inflate the layout to use as dialog or embedded fragment
+        return inflater.inflate(R.layout.purchase_items, container, false);
+    }
+  
+    /** The system calls this only when creating the layout in a dialog. */
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // The only reason you might override this method when using onCreateView() is
+        // to modify any dialog characteristics. For example, the dialog includes a
+        // title by default, but your custom layout might not need it. So here you can
+        // remove the dialog title, but you must call the superclass to get the Dialog.
+        Dialog dialog = super.onCreateDialog(savedInstanceState);
+        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+        return dialog;
+    }
+}
+</pre>
+
+<p>그리고 다음은 프래그먼트를 대화로 표시할지 전체 화면 UI로 표시할지 화면 크기를 근거로 결정하는 몇 가지 코드입니다.
+</p>
+
+<pre>
+public void showDialog() {
+    FragmentManager fragmentManager = getSupportFragmentManager();
+    CustomDialogFragment newFragment = new CustomDialogFragment();
+    
+    if (mIsLargeLayout) {
+        // The device is using a large layout, so show the fragment as a dialog
+        newFragment.show(fragmentManager, "dialog");
+    } else {
+        // The device is smaller, so show the fragment fullscreen
+        FragmentTransaction transaction = fragmentManager.beginTransaction();
+        // For a little polish, specify a transition animation
+        transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
+        // To make it fullscreen, use the 'content' root view as the container
+        // for the fragment, which is always the root view for the activity
+        transaction.add(android.R.id.content, newFragment)
+                   .addToBackStack(null).commit();
+    }
+}
+</pre>
+
+<p>프래그먼트 트랜잭션을 수행하는 것에 대한 자세한 내용은 
+<a href="{@docRoot}guide/components/fragments.html">프래그먼트</a> 가이드를 참조하십시오.</p>
+
+<p>이 예시에서는 <code>mIsLargeLayout</code> 부울이 현재 기기가 앱의 큰 레이아웃 디자인을 써야 할지를
+ 나타냅니다(따라서 이 프래그먼트를 전체 화면보다는 대화로 표시).
+ 이런 종류의 부울을 설정하는 가장 좋은 방법은 
+<a href="{@docRoot}guide/topics/resources/more-resources.html#Bool">부울 리소스 값</a>을
+여러 가지 화면 크기에 대한 <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">대체 리소스</a> 값으로 선언하는 것입니다. 
+예를 들어 다음은 여러 가지 화면 크기에 대한 두 가지 버전의 부울 리소스입니다.</p>
+
+<p class="code-caption">res/values/bools.xml</p>
+<pre>
+&lt;!-- Default boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">false&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p class="code-caption">res/values-large/bools.xml</p>
+<pre>
+&lt;!-- Large screen boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">true&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p>그러면 액티비티의 
+{@link android.app.Activity#onCreate onCreate()} 메서드 중에 {@code mIsLargeLayout} 값을 초기화할 수 있습니다.</p>
+
+<pre>
+boolean mIsLargeLayout;
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_main);
+
+    mIsLargeLayout = getResources().getBoolean(R.bool.large_layout);
+}
+</pre>
+
+
+
+<h3 id="ActivityAsDialog">액티비티를 큰 화면에 대화로 표시</h3>
+
+<p>작은 화면의 경우 대화를 전체 화면 UI로 표시하는 대신, 큰 화면에 있을 때에는 
+{@link android.app.Activity}를 대화로 표시함으로써 같은 결과를 얻을 수 있습니다.
+ 어느 방식을 사용할 것인지는 앱 디자인에 따라 달라지지만, 
+액티비티를 대화로 표시하면 앱이 이미 작은 화면용으로 디자인된 상태에서 
+태블릿에서의 환경을 개선하기 위해 일시적인 액티비티를 대화로 표시하는 경우 
+유용할 때가 많습니다.</p>
+
+<p>큰 화면의 경우 액티비티를 대화로만 표시하려면, 
+{@link android.R.style#Theme_Holo_DialogWhenLarge Theme.Holo.DialogWhenLarge}
+ 테마를 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> 매니페스트 요소에 적용하면 됩니다.</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.DialogWhenLarge" >
+</pre>
+
+<p>액티비티를 여러 가지 테마로 스타일링하는 법에 대한 자세한 정보는 <a href="{@docRoot}guide/topics/ui/themes.html">스타일 및 테마</a> 가이드를 참조하십시오.</p>
+
+
+
+<h2 id="DismissingADialog">대화 무시</h2>
+
+<p>사용자가 
+{@link android.app.AlertDialog.Builder}로 생성한 작업 버튼 중 하나라도 터치하면 시스템이 대화를 대신 무시합니다.</p>
+
+<p>시스템은 사용자가 대화 목록에서 항목을 터치하는 경우에도 대화를 무시합니다. 
+다만 목록이 무선 버튼이나 확인란을 사용하는 경우에는 예외입니다. 
+그렇지 않으면 대화를 수동으로 무시할 수도 있습니다. {@link
+android.support.v4.app.DialogFragment}에서 {@link android.support.v4.app.DialogFragment#dismiss()}를 호출하면 됩니다.</p>
+
+<p>
+대화가 사라질 때 특정 작업을 수행해야 하는 경우, {@link
+android.support.v4.app.DialogFragment}에서 @link
+android.support.v4.app.DialogFragment#onDismiss onDismiss()}를 구현하면 됩니다.</p>
+
+<p>또한 대화를 <em>취소</em>할 수도 있습니다. 이것은 사용자가 작업을 완료하지 않고 대화를 
+분명히 떠났다는 것을 나타내는 특수 이벤트입니다. 이것은 사용자가 
+<em>뒤로</em> 버튼을 누르거나 대화 영역 바깥의 화면을 터치하거나, 
+개발자가 {@link
+android.app.Dialog}에서 명시적으로 {@link android.app.Dialog#cancel()}을 호출한 경우 발생합니다(예: 대화의 "취소" 버튼에 대한 응답으로).</p>
+
+<p>위의 예시에 나타난 바와 같이 취소 이벤트에 응답하려면 {@link
+android.support.v4.app.DialogFragment} 클래스에서 
+{@link android.support.v4.app.DialogFragment#onCancel onCancel()}을 구현하면 됩니다.</p>
+
+<p class="note"><strong>참고:</strong> 시스템은 
+{@link android.support.v4.app.DialogFragment#onCancel onCancel()} 콜백을 불러오는 이벤트가 발생할 때마다 
+{@link android.support.v4.app.DialogFragment#onDismiss onDismiss()}를 호출합니다. 
+그러나 {@link android.app.Dialog#dismiss Dialog.dismiss()} 또는 {@link
+android.support.v4.app.DialogFragment#dismiss DialogFragment.dismiss()}를 호출하면 
+시스템은 {@link android.support.v4.app.DialogFragment#onDismiss onDismiss()}는 호출하지만 {@link android.support.v4.app.DialogFragment#onCancel onCancel()}은 
+호출하지 <em>않습니다</em>. 따라서 사용자가 대화를 보기에서 제거하기 위해 대화에 있는 
+<em>긍정적인</em> 버튼을 누르는 경우, 일반적으로 {@link android.support.v4.app.DialogFragment#dismiss dismiss()}를 
+사용해야 합니다.</p>
+
+
diff --git a/docs/html-intl/intl/ko/guide/topics/ui/menus.jd b/docs/html-intl/intl/ko/guide/topics/ui/menus.jd
new file mode 100644
index 0000000..c115c2a
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/ui/menus.jd
@@ -0,0 +1,1031 @@
+page.title=메뉴
+parent.title=사용자 인터페이스
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>이 문서의 내용</h2>
+<ol>
+  <li><a href="#xml">XML로 메뉴 정의</a></li>
+  <li><a href="#options-menu">옵션 메뉴 만들기</a>
+    <ol>
+      <li><a href="#RespondingOptionsMenu">클릭 이벤트 처리</a></li>
+      <li><a href="#ChangingTheMenu">런타임에 메뉴 항목 변경</a></li>
+    </ol>
+  </li>
+  <li><a href="#context-menu">상황별 메뉴 만들기</a>
+    <ol>
+      <li><a href="#FloatingContextMenu">부동 컨텍스트 메뉴 만들기</a></li>
+      <li><a href="#CAB">상황별 동작 모드 사용</a></li>
+    </ol>
+  </li>
+  <li><a href="#PopupMenu">팝업 메뉴 만들기</a>
+    <ol>
+      <li><a href="#PopupEvents">클릭 이벤트 처리</a></li>
+    </ol>
+  </li>
+  <li><a href="#groups">메뉴 그룹 만들기</a>
+    <ol>
+      <li><a href="#checkable">확인 가능한 메뉴 항목 사용</a></li>
+    </ol>
+  </li>
+  <li><a href="#intents">인텐트에 기반한 메뉴 항목 추가</a>
+    <ol>
+      <li><a href="#AllowingToAdd">다른 메뉴에 액티비티 추가 허용</a></li>
+    </ol>
+  </li>
+</ol>
+
+  <h2>Key 클래스</h2>
+  <ol>
+    <li>{@link android.view.Menu}</li>
+    <li>{@link android.view.MenuItem}</li>
+    <li>{@link android.view.ContextMenu}</li>
+    <li>{@link android.view.ActionMode}</li>
+  </ol>
+
+  <h2>참고 항목</h2>
+  <ol>
+    <li><a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모음</a></li>
+    <li><a href="{@docRoot}guide/topics/resources/menu-resource.html">메뉴 리소스</a></li>
+    <li><a href="http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html">
+메뉴 버튼에 작별을 고하세요</a></li>
+  </ol>
+</div>
+</div>
+
+<p>메뉴는 수많은 유형의 애플리케이션에서 사용되는 보편적인 사용자 인터페이스 구성 요소입니다. 친숙하고 일관적인
+사용자 경험을 제공하기 위해 액티비티에서 사용자 작업과 다른 옵션을 제시하는 {@link android.view.Menu} API를
+사용해야 합니다.</p>
+
+<p>Android 3.0(API 레벨 11)부터 Android 구성 기기는
+전용 <em>메뉴</em> 버튼을 하지 않아도 됩니다. 이번 변경 사항부터 Android 앱은
+종래의 6항목 메뉴 패널에 의존하지 않고 작업 모음을 사용하여
+공통 사용자 작업을 표현합니다.</p>
+
+<p>일부 메뉴 항목의 디자인과 사용자 경험이 변경되었지만, 작업과 옵션 세트를 정의하는
+의미 체계 세트는 여전히 {@link android.view.Menu} API를 기초로 사용합니다. 이 가이드는
+모든 버전의 Android에서 세 가지 기본적인 유형의 메뉴나 작업 표시를
+생성하는 법을 보여줍니다.</p>
+
+<dl>
+  <dt><strong>옵션 메뉴 및 작업 모음</strong></dt>
+    <dd><a href="#options-menu">옵션 메뉴</a>는 액티비티에 대한 기본 메뉴 항목 컬렉션
+입니다. 
+이곳에 "검색", "이메일 작성" 및 "설정"과 같이 앱에 전체적인 영향을 미치는 작업을 배치해야 합니다.
+  <p>Android 2.3 이하를 대상으로 개발하는 경우 사용자는
+<em>메뉴</em> 버튼을 눌러서 옵션 메뉴 패널을 표시할 수 있습니다.</p>
+  <p>Android 3.0 이상의 경우, 옵션 메뉴의 항목은 <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모음</a>에서 화면 작업 항목과 오버플로 옵션의 조합으로
+표시됩니다. Android 3.0부터 <em>메뉴</em> 버튼의 사용이 중단되므로(일부
+기기는
+메뉴 버튼이 없습니다), 작업과 다른 옵션에 대한 액세스를 제공하려면 작업 모음을
+사용하기 시작해야 합니다.</p>
+  <p><a href="#options-menu">옵션 메뉴 만들기</a> 섹션을 참조하십시오.</p>
+    </dd>
+    
+  <dt><strong>컨텍스트 메뉴 및 상황별 작업 모드</strong></dt>
+  
+   <dd>컨텍스트 메뉴는 사용자가 요소를 길게 클릭하면 나타나는 <a href="#FloatingContextMenu">부동 메뉴</a>
+입니다. 이것은 선택한 콘텐츠나 컨텍스트 프레임에
+영향을 주는 작업을 제공합니다.
+  <p>Android 3.0 이상을 대상으로 개발하는 경우, <a href="#CAB">상황별 작업 모드</a>를 사용하여 선택한 콘텐츠의 작업을 활성화해야 합니다. 이 모드는
+화면 위에 있는 막대에서 선택된 콘텐츠에 영향을 미치는 작업 항목을 표시하고 사용자가
+여러 항목을 선택할 수 있습니다.</p>
+  <p><a href="#context-menu">상황별 메뉴 만들기</a>에 관한 섹션을 참조하십시오.</p>
+</dd>
+    
+  <dt><strong>팝업 메뉴</strong></dt>
+    <dd>팝업 메뉴는 메뉴를 호출하는 보기에 고정된 수직 목록에서 항목 목록을
+표시합니다. 이것은 정 콘텐츠와 관련이 되는 작업의 오버플로를 제공하거나
+명령의 두 번째 부분에 대한 옵션을 제공하는 데 좋습니다. 팝업 메뉴의 작업은
+해당 콘텐츠에 직접적 영향을 미쳐서는 <strong>안 됩니다</strong>. 이는 상황별 작업의 역할입니다.
+ 팝업 메뉴는 그보다는 티비티의 콘텐츠 영역과 관련이 있는
+확장 작업을 위한 것입니다.
+  <p><a href="#PopupMenu">팝업 메뉴 만들기</a> 섹션을 참조하십시오.</p>
+</dd>
+</dl>
+
+
+
+<h2 id="xml">XML로 메뉴 정의</h2>
+
+<p>모든 메뉴 유형에 대하여, Android는 표준 XML 형식으로 메뉴 항목을 정의합니다.
+액티비티 코드에서 메뉴를 구축하는 대신
+XML <a href="{@docRoot}guide/topics/resources/menu-resource.html">메뉴 리소스</a>에서 메뉴와 모든 항목을 정의해야 합니다. 그러면 
+액티비티나 프래그먼트에서 메뉴 리소스를 팽창시킬 수 있습니다({@link android.view.Menu} 개체로 로딩하면 됩니다).
+</p>
+
+<p>메뉴 리소스를 사용하는 것이 좋은 이유로 다음과 같은 몇 가지를 들 수 있습니다.</p>
+<ul>
+  <li>메뉴 구조를 XML로 시작화하면 다른 방식보다 쉽습니다.</li>
+  <li>애플리케이션의 동작 코드에서 메뉴의 콘텐츠를 분리합니다.</li>
+  <li><a href="{@docRoot}guide/topics/resources/index.html">앱 리소스</a> 프레임워크를 활용하여 다양한 플랫폼 버전, 화면 크기 및 기타 구성에 대한
+대체 메뉴 프레임워크를 생성할 수 있습니다.</li>
+</ul>
+
+<p>메뉴를 정의하려면 프로젝트의 <code>res/menu/</code>
+디렉터리에서 XML 파일을 생성하고 다음 요소로 메뉴를 구축합니다.</p>
+<dl>
+  <dt><code>&lt;menu></code></dt>
+    <dd>메뉴 항목의 컨테이너인 {@link android.view.Menu}를 정의합니다. 
+<code>&lt;menu></code> 요소는 파일의 루트 노드여야 하고 하나 이상의
+<code>&lt;item></code>와 <code>&lt;group></code> 요소를 보유할 수 있습니다.</dd>
+
+  <dt><code>&lt;item></code></dt>
+    <dd>메뉴 안의 항목 하나를 나타내는 {@link android.view.MenuItem}을 생성합니다. 
+이 요소 안에는 하위 메뉴를 생성하기 위한 중첩 <code>&lt;menu></code> 요소가 들어있을 수 있습니다.</dd>
+    
+  <dt><code>&lt;group></code></dt>
+    <dd>{@code &lt;item&gt;} 요소를 위한 선택적인 투명 컨테이너입니다. 이것을 사용하면 활성 상태와 가시성 등의 속성을 공유할 수 있도록
+메뉴 항목을 분류하도록 해줍니다. 
+자세한 정보를 보려면 <a href="#groups">메뉴 그룹 만들기</a>를 참조하십시오.</dd>
+</dl>
+
+
+<p>다음은 <code>game_menu.xml</code>이라는 메뉴의 예시입니다.</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/new_game"
+          android:icon="@drawable/ic_new_game"
+          android:title="@string/new_game"
+          android:showAsAction="ifRoom"/&gt;
+    &lt;item android:id="@+id/help"
+          android:icon="@drawable/ic_help"
+          android:title="@string/help" /&gt;
+&lt;/menu&gt;
+</pre>
+
+<p><code>&lt;item></code> 요소는 항목의 외관과 동작을
+정의하는 데 사용할 수 있는 여러 속성을 지원합니다. 위 메뉴의 항목에는 다음 속성이 포함되어 있습니다.</p>
+
+<dl>
+  <dt>{@code android:id}</dt>
+    <dd>항목에 고유한 리소스 ID입니다. 사용자가 항목을 선택하면
+애플리케이션이 이것으로 해당 항목을 인식할 수 있게 해줍니다.</dd>
+  <dt>{@code android:icon}</dt>
+    <dd>항목의 아이콘으로 사용할 수 있는 드로어블에 대한 참조입니다.</dd>
+  <dt>{@code android:title}</dt>
+    <dd>항목의 제목으로 사용할 문자열에 대한 참조입니다.</dd>
+  <dt>{@code android:showAsAction}</dt>
+    <dd><a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모음</a>에서 작업 항목을 나타낼 시기와 방법을 나타냅니다.</dd>
+</dl>
+
+<p>이들이 여러분이 꼭 사용해야 할 가장 중요한 속성이지만, 사용할 수 있는 요소는 이외에도 많이 있습니다.
+모든 지원 속성에 관한 정보는 <a href="{@docRoot}guide/topics/resources/menu-resource.html">메뉴 리소스</a> 문서를 참조하십시오.</p>
+
+<p>{@code &lt;menu&gt;} 요소를
+{@code &lt;item&gt;}의 요소로 추가하면 어떤 메뉴 항목이든 하위 메뉴를 추가할 수 있습니다(하위 메뉴 제외). 하위 메뉴는 애플리케이션에 PC 애플리케이션의 메뉴 막대(파일,
+편집, 보기 등)의 항목과 같이 주제별로 체계화할 수 있는 기능이 많을 때
+유용합니다. 예:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/file"
+          android:title="@string/file" &gt;
+        &lt;!-- "file" submenu --&gt;
+        &lt;menu&gt;
+            &lt;item android:id="@+id/create_new"
+                  android:title="@string/create_new" /&gt;
+            &lt;item android:id="@+id/open"
+                  android:title="@string/open" /&gt;
+        &lt;/menu&gt;
+    &lt;/item&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>액티비티에서 메뉴를 사용하려면
+{@link android.view.MenuInflater#inflate(int,Menu)
+MenuInflater.inflate()}를 사용하여 메뉴 리소스를 팽창해야 합니다(XML 리소스를 프로그램 가능 개체로 변환). 다음 섹션에서는 각 메뉴 유형에 대해
+메뉴를 팽창하는 방법을 보여줍니다.</p>
+
+
+
+<h2 id="options-menu">옵션 메뉴 만들기</h2>
+
+<div class="figure" style="width:200px;margin:0">
+  <img src="{@docRoot}images/options_menu.png" height="333" alt="" />
+  <p class="img-caption"><strong>그림 1.</strong> Android 2.3에서 실행되는 
+브라우저의 옵션 메뉴입니다.</p>
+</div>
+
+<p>옵션 메뉴에 "검색", "이메일 작성" 및 "설정"과 같이
+현재 액티비티 컨텍스트와 관련이 있는 작업과 다른 옵션을 포함해야 합니다.</p>
+
+<p>화면의 옵션 메뉴에 항목이 나타나는 위치는
+개발자가 애플리케이션을 어느 버전에서 개발했는지에 따라 달라집니다.</p>
+
+<ul>
+  <li><strong>Android 2.3.x(API 레벨 10)
+이하</strong>에서 애플리케이션을 개발했을 경우,
+그림 1과 같이 사용자가 <em>메뉴</em> 버튼을 누르면 화면 아래에 옵션 메뉴의 콘텐츠가 나타납니다. 이것이 열렸을 때 가장 먼저 보이는 부분은 
+아이콘
+메뉴이고, 이는 최대 여섯 개의 메뉴 항목을 보유합니다. 메뉴에 여섯 개를 넘는 항목이 포함되어 있는 경우, Android는 
+여섯 번째 항목과 나머지 항목을 더보기 메뉴에 배치합니다. 이것은 사용자가 
+<em>더보기</em>를 선택하면 열 수 있습니다.</li>
+
+  <li><strong>Android 3.0(API 레벨 11)
+이상</strong>에서 애플리케이션을 개발했을 경우, 옵션 메뉴의 항목은 <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모음</a>에서 이용할 수 있습니다. 기본적으로 시스템은 모든 항목을 작업 더보기에 배치합니다.
+사용자는 작업 모음 오른쪽에 있는
+작업 더보기 아이콘으로 이를 표시할 수 있습니다(또는 이용할 수 있을 경우 기기 <em>메뉴</em> 버튼을 누르면 됩니다). 
+중요한 작업에 대한 빠른 액세스를
+ 활성화하려면
+{@code android:showAsAction="ifRoom"}을 해당 {@code &lt;item&gt;} 요소에 추가하여 몇 가지 항목이 작업 모음에 표시되도록 수준을 올립니다(그림
+2 참조). <p>작업 항목과 다른 작업 모음 동작에 관한 자세한 정보는 <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모음</a> 가이드를 참조하십시오. </p>
+<p class="note"><strong>참고:</strong> Andoid 3.0 이상을 대상으로 개발하지 <em>않더라도</em> 
+개발자 나름의 작업 모음 레이아웃을 구축하여 비슷한 효과를 낼 수 있습니다. 예를 들어,
+작업 모음이 포함된 Android 이전 버전을 지원하는 방법은 <a href="{@docRoot}resources/samples/ActionBarCompat/index.html">작업 모음 호환성</a>
+샘플을 참조하십시오.</p>
+</li>
+</ul>
+
+<img src="{@docRoot}images/ui/actionbar.png" alt="" />
+<p class="img-caption"><strong>그림 2.</strong> <a href="{@docRoot}resources/samples/HoneycombGallery/index.html">Honeycomb 갤러리</a> 앱의 작업 모음으로
+탐색 탭과 카메라 작업 항목(및 작업 더보기 버튼)을 표시합니다.</p>
+
+<p>{@link android.app.Activity}
+하위 클래스나 {@link android.app.Fragment} 하위 클래스에서 옵션 메뉴용 항목을 선언할 수 있습니다. 액티비티와 프래그먼트가 모두
+옵션 메뉴용 항목을 선언할 경우, 이들은 UI에서 조합됩니다. 액티비티의 항목이 먼저 나타나고, 
+뒤이어 각 프래그먼트의 항목이 나타나며 이때 순서는 각 프래그먼트가 액티비티에 추가된 순서를 
+따릅니다. 필요한 경우 이동해야 하는 각 {@code &lt;item&gt;}에서{@code android:orderInCategory} 속성이 포함된
+메뉴 항목을 다시 정렬할 수 있습니다.</p>
+
+<p>액티비티에 대한 옵션 메뉴를 지정하려면 {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}를 재정의합니다(프래그먼트는 
+자신만의 {@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()} 콜백을 제공합니다). 이 메서드에서
+(<a href="#xml">XML에서 정의된</a>) 메뉴 리소스를 콜백에서 제공된 {@link
+android.view.Menu}로 팽창할 수 있습니다. 예:</p>
+
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu) {
+    MenuInflater inflater = {@link android.app.Activity#getMenuInflater()};
+    inflater.inflate(R.menu.game_menu, menu);
+    return true;
+}
+</pre>
+
+<p>또한, {@link android.view.Menu#add(int,int,int,int)
+add()}를 사용하여 메뉴 항목을 추가하고 {@link android.view.Menu#findItem findItem()}로 항목을 검색하여
+{@link android.view.MenuItem} API로 속성을 수정할 수 있습니다.</p>
+
+<p>Android 2.3.x 이하를 대상으로 애플리케이션을 개발했을 경우, 사용자가 처음으로 메뉴를 열었을 때 시스템이 {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}를
+호출합니다. Android 3.0 이상을 대상으로 개발할 경우,
+액티비티를 시작할 때 작업 모음에 항목을 보여주기 위해 시스템이 {@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}를
+호출합니다.</p>
+
+
+
+<h3 id="RespondingOptionsMenu">클릭 이벤트 처리</h3>
+
+<p>사용자가 옵션 메뉴에서 항목을 선택하면(작업 모음의 작업 항목 포함),
+시스템이 액티비티의 {@link android.app.Activity#onOptionsItemSelected(MenuItem)
+onOptionsItemSelected()} 메서드를 호출합니다. 이 메서드가 선택한 {@link android.view.MenuItem}을 전달합니다. 항목을 식별하려면 
+{@link android.view.MenuItem#getItemId()}을 호출하면 됩니다. 이 메서드는(메뉴 리소스의 {@code android:id} 속성으로 지정되거나
+{@link android.view.Menu#add(int,int,int,int) add()} 메서드에 제공된 정수가 포함된) 메뉴 항목에 대한 고유 ID를 반환합니다
+. 이 ID와
+알려진 메뉴 항목을 일치시켜 적절한 작업을 수행할 수 있습니다. 예:</p>
+
+<pre>
+&#64;Override
+public boolean onOptionsItemSelected(MenuItem item) {
+    // Handle item selection
+    switch (item.getItemId()) {
+        case R.id.new_game:
+            newGame();
+            return true;
+        case R.id.help:
+            showHelp();
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+    }
+}
+</pre>
+
+<p>메뉴 항목을 성공적으로 처리하면 {@code true}를 반환합니다. 메뉴 항목을
+처리하지 않으면, {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}의 슈퍼 클래스 구현을 호출해야 합니다(기본
+구현은 '거짓'을 반환합니다).</p>
+
+<p>액티비티에 프래그먼트가 포함되어 있으면, 액티비티에 대해 {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}를 호출하고, 그 다음에는
+하나의 프래그먼트가
+{@code true}를 반환하거나 모든 프래그먼트가 호출될 때까지 (각 프래그먼트가 추가된 순서대로) 각 프래그먼트에 대해 해당 메서드를 호출합니다.</p>
+
+<p class="note"><strong>팁:</strong> Android 3.0에는
+{@code android:onClick} 속성을 사용하여 XML에 있는 메뉴 항목에 대한 온-클릭 동작을 정의하는 기능이 추가됩니다. 
+속성 값은 메뉴를 사용하여 액티비티가 정의한 메서드의 이름이어야 합니다. 메서드는
+공개여야 하며 하나의 {@link android.view.MenuItem} 매개변수를 수락해야 합니다. 시스템이 이 메서드를 호출하면
+메서드가 선택한 메뉴 항목을 전달합니다. 자세한 정보와 예시는 <a href="{@docRoot}guide/topics/resources/menu-resource.html">메뉴 리소스</a> 문서를 참조하십시오.</p>
+
+<p class="note"><strong>팁:</strong> 애플리케이션에 여러 액티비티가 포함되어 있고, 그 중 몇몇이 같은 옵션 메뉴를 제공할 경우,
+
+{@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()}와 {@link android.app.Activity#onOptionsItemSelected(MenuItem)
+onOptionsItemSelected()} 메서드를 제외하고 아무것도 구현하지 않는 액티비티를 만드는 것을 고려해보십시오. 그런 다음 이 클래스를 같은 옵션 메뉴를 공유해야 하는 각 액티비티에 대해 
+확장하면 됩니다. 이렇게 하면 메뉴 작업을 처리하는 코드 세트 하나를 관리할 수 있고,
+각 하위 클래스가 메뉴 동작을 상속합니다.
+이런 하위 액티비티 중 하나에 메뉴 항목을 추가하려면,
+해당 액티비티에서 {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()}를 재정의하십시오. {@code super.onCreateOptionsMenu(menu)}를 호출하여
+원래 메뉴 항목을 생성하고, {@link
+android.view.Menu#add(int,int,int,int) menu.add()}이 포함된 새로운 메뉴 항목을 추가합니다. 각각의 메뉴 항목에 대한 슈퍼클래스의 동작을 
+재정의할 수도 있습니다.</p>
+
+
+<h3 id="ChangingTheMenu">런타임에 메뉴 항목 변경</h3>
+
+<p>시스템이 {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()}를 호출하면, 개발자가 채우는 {@link android.view.Menu}의 인스턴스를 유지하고
+어떤 이유로 메뉴가 무효화되지 않으면{@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}를
+호출하지 않습니다. 그러나 {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}는 초기
+메뉴 상태를 생성할 때만 사용하고, 액티비티 수명 주기에서 변경할 때는 사용하지 않습니다.</p>
+
+<p>액티비티 수명 주기에서 발생하는 이벤트에
+기반하여 옵션을 수정하고자 할 경우, 이는
+{@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()} 메서드에서 할 수 있습니다. 이
+메서드는 현재 존재하는 상태대로 {@link android.view.Menu} 개체를 전달하므로,
+항목을 추가, 삭제, 비활성화하는 등의 수정을 할 수 있습니다 (프래그먼트도 {@link
+android.app.Fragment#onPrepareOptionsMenu onPrepareOptionsMenu()} 콜백을 제공합니다).</p>
+
+<p>Android 2.3.x 이하에서는, 사용자가 옵션 메뉴를 열 때마다(<em>메뉴</em>
+버튼 누름) 시스템이{@link
+android.app.Activity#onPrepareOptionsMenu(Menu)
+onPrepareOptionsMenu()}를 호출합니다.</p>
+
+<p>Android 3.0 이상에서는 메뉴 항목이 작업 모음에 표시되어 있을 때마다
+옵션 메뉴는 항상 열려 있는 것으로 간주됩니다. 이벤트가 발생하고 메뉴 업데이트를 수행하고자 하는 경우,
+{@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()}를 호출하여
+시스템이 {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}를 호출하도록 요청해야 합니다.</p>
+
+<p class="note"><strong>참고:</strong> 
+현재 초점이 맞춰져 있는 {@link android.view.View}를 기반으로 한 
+옵션 메뉴의 항목을 절대로 변경해서는 안 됩니다. 터치 모드에서는(사용자가 트랙볼이나 d-패드를 사용하지 않는 경우), 
+보기가 초점을 취할 수 없으므로 옵션 메뉴에 있는 항목을 수정할 
+근거로 초점을 사용해서는 결코 안 됩니다. {@link
+android.view.View}의 컨텍스트에 민감한 메뉴를 제공하고자 하는 경우, <a href="#context-menu">컨텍스트 메뉴</a>를 사용하십시오.</p>
+
+
+
+
+<h2 id="context-menu">상황별 메뉴 만들기</h2>
+
+<div class="figure" style="width:420px;margin-top:-1em">
+  <img src="{@docRoot}images/ui/menu-context.png" alt="" />
+  <p class="img-caption"><strong>그림 3.</strong> 부동 컨텍스트 메뉴(왼쪽)
+와 상황별 작업 모음(오른쪽)의 스크린샷입니다.</p>
+</div>
+
+<p>상황별 메뉴는 UI에서 특정 항목이나 컨텍스트 프레임에 영향을 미치는 작업을 제공합니다.
+컨텍스트 메뉴는 어느 보기에나 제공할 수 있지만, {@link
+android.widget.ListView}나 {@link android.widget.GridView}, 사용자가 각 항목에서 직접 작업을 수행하는 기타 보기 컬렉션의
+항목에 가장 자주 사용합니다.</p>
+
+<p>상황별 작업을 제공하는 방법에는 두 가지가 있습니다.</p>
+<ul>
+  <li><a href="#FloatingContextMenu">부동 컨텍스트 메뉴</a>를 사용합니다. 사용자가 컨텍스트 메뉴에 대한 지원을 선언하는 보기를 길게 클릭하면
+(대화와 유사한) 메뉴 항목의 부동 목록이
+나타납니다. 사용자는 한 항목에서 한 번에 하나의 상황별 
+작업을 수행할 수 있습니다.</li>
+
+  <li><a href="#CAB">상황별 작업 모드</a>를 사용합니다. 이 모드는 화면 위에 있는 막대에서 선택된 항목에 영향을 미치는 작업 항목이 포함된 <em>상황별 작업 막대</em>를 표시하는
+{@link android.view.ActionMode}의 시스템 구현입니다.
+ 이 모드가 활성 상태이면 사용자는 
+여러 개의 항목에서 한 작업을 한꺼번에 수행할 수 있습니다(앱이 이를 허용하는 경우).</li>
+</ul>
+
+<p class="note"><strong>참고:</strong> 상황별 작업 모드는 Android 3.0(API
+레벨 11) 이상에서 이용할 수 있으며, 이용 가능할 때 컨텍스트 작업 표시용으로 기본 설정된 기술입니다.
+ 앱이 3.0 이하의 버전을 지원할 경우 해당 기기에서는 
+부동 컨텍스트 메뉴로 돌아가야 합니다.</p>
+
+
+<h3 id="FloatingContextMenu">부동 컨텍스트 메뉴 만들기</h3>
+
+<p>부동 컨텍스트 메뉴를 제공하려면 다음과 같이 합니다.</p>
+<ol>
+  <li>컨텍스트 메뉴가 연관되어야 하는 {@link android.view.View}를 등록합니다. 그러려면 
+{@link android.app.Activity#registerForContextMenu(View) registerForContextMenu()}를 호출하고 여기에 
+{@link android.view.View}를 전달하면 됩니다.
+  <p>액티비티가 {@link android.widget.ListView} 또는 {@link android.widget.GridView}를 사용하고
+각 항목이 같은 컨텍스트 메뉴를 제공하게 하고 싶을 경우,
+{@link android.widget.ListView}나 {@link android.widget.GridView}를 {@link
+android.app.Activity#registerForContextMenu(View) registerForContextMenu()}에 전달하여 컨텍스트 메뉴에 모든 항목을 등록합니다.</p>
+</li>
+
+  <li>{@link android.app.Activity}나 {@link android.app.Fragment}에서 {@link
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()} 메서드를 
+구현합니다.
+  <p>등록된 보기가 롱-클릭 이벤트를 수신하면, 시스템이 {@link
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()}
+메서드를 호출합니다. 이곳이 바로 메뉴 항목을 정의하는 곳입니다. 주로 메뉴 리소스를 팽창시키는 방법을 씁니다. 예:
+</p>
+<pre>
+&#64;Override
+public void onCreateContextMenu(ContextMenu menu, View v,
+                                ContextMenuInfo menuInfo) {
+    super.onCreateContextMenu(menu, v, menuInfo);
+    MenuInflater inflater = getMenuInflater();
+    inflater.inflate(R.menu.context_menu, menu);
+}
+</pre>
+
+<p>{@link android.view.MenuInflater}를 사용하면 <a href="{@docRoot}guide/topics/resources/menu-resource.html">메뉴 리소스</a>에서 컨텍스트 메뉴를 팽창하게 해줍니다. 콜백 메서드
+매개변수에는 사용자가 선택한 {@link android.view.View}와
+선택한 항목에 대한 추가 정보를 제공하는 {@link android.view.ContextMenu.ContextMenuInfo} 객체가 
+포함됩니다. 액티비티에 여러 개의 보기가 있고 이들이 각각 서로 다른 컨텍스트 메뉴를 제공하는 경우, 
+이와 같은 매개변수를 사용하여 팽창할 컨텍스트 메뉴가 무엇인지 
+판별할 수 있습니다.</p>
+</li>
+
+<li>{@link android.app.Activity#onContextItemSelected(MenuItem)
+onContextItemSelected()}를 구현합니다.
+  <p>사용자가 메뉴 항목을 선택할 경우, 시스템이 이 메서드를 호출하여
+적절한 작업을 수행하게 해줍니다. 예:</p>
+
+<pre>
+&#64;Override
+public boolean onContextItemSelected(MenuItem item) {
+    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
+    switch (item.getItemId()) {
+        case R.id.edit:
+            editNote(info.id);
+            return true;
+        case R.id.delete:
+            deleteNote(info.id);
+            return true;
+        default:
+            return super.onContextItemSelected(item);
+    }
+}
+</pre>
+
+<p>{@link android.view.MenuItem#getItemId()} 메서드는 선택된 메뉴 항목의 ID를 쿼리하고,
+<a href="#xml">
+XML에서 메뉴 정의</a> 섹션에 나타난 바와 같이 {@code
+android:id} 속성을 사용하여 XML의 각 메뉴 항목에 이를 할당해야 합니다.</p>
+
+<p>메뉴 항목을 성공적으로 처리하면 {@code true}를 반환합니다. 메뉴 항목을 처리하지 않는 경우, 
+해당 메뉴 항목을 슈퍼클래스 구현에 전달해야 합니다. 액티비티에 프래그먼트가 포함되어 있는 경우 
+해당 액티비티가 첫 번째로 이 콜백을 수신합니다. 처리되지 않을 때 슈퍼클래스를 호출하면 시스템이
+이벤트를 각 프래그먼트의 각 콜백 메서드에 전달합니다.
+{@code true} 또는 {@code false}가 반환될 때까지 (각 프래그먼트가 추가된 순서대로) 한 번에 하나씩 전달됩니다 (
+{@link android.app.Activity}와 {@code android.app.Fragment}의 기본 구현이 {@code
+false}를 반환하므로 처리되지 않을 때는 언제나 슈퍼 클래스를 호출해야 합니다).</p>
+</li>
+</ol>
+
+
+<h3 id="CAB">상황별 동작 모드 사용</h3>
+
+<p>상황별 작업 모드는 사용자 상호 작용을 컨텍스트 작업 수행에 집중시키는 {@link android.view.ActionMode}의
+시스템 구현입니다. 사용자가 항목을 선택하여 
+이 모드를 활성화하면, <em>상황별 작업 모음</em>이 화면 위에 나타나서
+사용자가 현재 선택된 항목에서 수행할 수 있는 작업을 표시합니다. 이 모드가
+활성화되면 사용자는 여러 항목을 선택하고(개발자가 이를 허용하는 경우), 항목을 선택 해제하고, 액티비티 내에서
+탐색을 계속합니다(개발자가 허용하고자 하는 만큼). 사용자가 모든 항목에서 선택을 해제하고, '뒤로' 버튼을 누르거나
+
+작업 모음 왼쪽의 <em>완료</em> 작업을 누르면 작업 모드가 비활성화되고 상황별 작업 모음이 사라집니다.</p>
+
+<p class="note"><strong>참고:</strong> 상황별 작업 모음이 
+반드시 <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모음</a>과 연관되어 있는 것은 아닙니다. 이들은 서로 
+독립적으로 작동합니다. 이는 겉으로 보기에는 상황별 작업 모음이 작업 모음의 위치를 능가하는 것으로 
+보이더라도 적용됩니다.</p>
+
+<p>Android 3.0 (API level 11) 이상을 대상으로 개발하는 경우, 
+일반적으로 상황별 작업 모드를 사용하여 <a href="#FloatingContextMenu">부동 컨텍스트 메뉴</a>가 아닌 상황별 작업을 표시합니다.</p>
+
+<p>상황별 작업을 제공하는 보기의 경우, 일반적으로 두 이벤트 중 하나(또는 두 가지 모두)에서 상황별 작업 모드를 
+호출해야 합니다.</p>
+<ul>
+  <li>사용자가 보기에서 롱-클릭을 수행합니다.</li>
+  <li>사용자가 보기에서 확인란 또는 그와 유사한 UI 구성 요소를 선택합니다.</li>
+</ul>
+
+<p>애플리케이션이 상황별 작업 모드를 호출하고 디자인에 따라 각 작업의 동작을
+정의합니다. 기본적으로 두 가지 디자인이 있습니다.</p>
+<ul>
+  <li>개별적인 임의의 보기에 대한 상황별 작업의 경우.</li>
+  <li>{@link
+android.widget.ListView} 또는 {@link android.widget.GridView}에서 항목 그룹의 일괄 상황별 작업의 경우(사용자가 여러 항목을
+선택하도록 허용하고 모든 항목에서 작업을 수행).</li>
+</ul>
+
+<p>다음 섹션은 각 시나리오에 필요한 설정을 설명합니다.</p>
+
+
+<h4 id="CABforViews">각각의 보기에 대한 상황별 작업 모드의 활성화</h4>
+
+<p>사용자가 특정 보기를 선택했을 때만 상황별 작업 모드를 호출하고자 하는 경우 
+다음과 같이 해야 합니다.</p>
+<ol>
+  <li>{@link android.view.ActionMode.Callback} 인터페이스를 구현합니다. 콜백 메서드에서 
+상황별 작업 모음의 작업을 지정하고, 작업 항목에 대한 클릭 이벤트에 응답하고, 작업 모드에 대한 
+다른 수명 주기 이벤트를 처리합니다.</li>
+  <li>모음을 표시하고자 하는 경우{@link android.app.Activity#startActionMode startActionMode()}를 호출합니다
+(사용자가 보기를 롱-클릭하는 경우).</li>
+</ol>
+
+<p>예:</p>
+
+<ol>
+  <li>{@link android.view.ActionMode.Callback ActionMode.Callback} 인터페이스를 구현합니다.
+<pre>
+private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
+
+    // Called when the action mode is created; startActionMode() was called
+    &#64;Override
+    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+        // Inflate a menu resource providing context menu items
+        MenuInflater inflater = mode.getMenuInflater();
+        inflater.inflate(R.menu.context_menu, menu);
+        return true;
+    }
+
+    // Called each time the action mode is shown. Always called after onCreateActionMode, but
+    // may be called multiple times if the mode is invalidated.
+    &#64;Override
+    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+        return false; // Return false if nothing is done
+    }
+
+    // Called when the user selects a contextual menu item
+    &#64;Override
+    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.menu_share:
+                shareCurrentItem();
+                mode.finish(); // Action picked, so close the CAB
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    // Called when the user exits the action mode
+    &#64;Override
+    public void onDestroyActionMode(ActionMode mode) {
+        mActionMode = null;
+    }
+};
+</pre>
+
+<p>이벤트 콜백은 <a href="#options-menu">옵션 메뉴</a>의 콜백과 거의 똑같다는 점을 눈여겨 보십시오. 단, 각 콜백은 이벤트와 연결된 {@link
+android.view.ActionMode} 객체를 전달합니다. {@link
+android.view.ActionMode} API를 사용하여
+{@link android.view.ActionMode#setTitle setTitle()}과 {@link
+android.view.ActionMode#setSubtitle setSubtitle()}이 포함된 제목과 하위 제목을 수정하는 등과 같이 CAB를 다양하게 변경합니다(몇 개의 
+항목이 선택되었는지 나타낼 때 유용합니다).</p>
+
+<p>또한, 위 샘플은 작업 모드가 소멸될 때 {@code mActionMode} 변수를 null로
+설정한다는 점도 유의하십시오. 다음 단계에서는 액티비티나 프래그먼트의 구성원 변수를 초기화하고 저장하는 방법을 
+볼 수 있습니다.</p>
+</li>
+
+  <li>{@link android.app.Activity#startActionMode startActionMode()}를 호출하여
+{@link
+android.view.View}를 롱-클릭했을 경우와 같이 상황에 따라 상황별 작업 모드를 활성화합니다.</p>
+
+<pre>
+someView.setOnLongClickListener(new View.OnLongClickListener() {
+    // Called when the user long-clicks on someView
+    public boolean onLongClick(View view) {
+        if (mActionMode != null) {
+            return false;
+        }
+
+        // Start the CAB using the ActionMode.Callback defined above
+        mActionMode = getActivity().startActionMode(mActionModeCallback);
+        view.setSelected(true);
+        return true;
+    }
+});
+</pre>
+
+<p>{@link android.app.Activity#startActionMode startActionMode()}를 호출하면 시스템이
+생성된 {@link android.view.ActionMode}를 반환합니다. 이것을 구성원 변수에 저장하면 
+다른 이벤트에 대한 응답으로 상황별 작업 모음을 변경할 수 있습니다. 위 샘플에서
+{@link android.view.ActionMode}를 사용하여 {@link android.view.ActionMode} 인스턴스가 이미 활성화되었을 경우
+작업 모드를 시작하기 전에 구성원이 null인지 여부를 점검하여 
+해당 인스턴스가 재생성되지 않게 합니다.</p>
+</li>
+</ol>
+
+
+
+<h4 id="CABforListView">ListView 또는 GridView에서 일괄 상황별 작업 활성화</h4>
+
+<p>{@link android.widget.ListView} 또는 {@link
+android.widget.GridView}(또는 {@link android.widget.AbsListView}의 또 다른 확장)에 항목 컬렉션이 있고 
+사용자가 일괄 작업을 수행하도록 허용하려면 다음과 같이 해야 합니다.</p>
+
+<ul>
+  <li>{@link android.widget.AbsListView.MultiChoiceModeListener} 인터페이스를 구현하고 이를 
+{@link android.widget.AbsListView#setMultiChoiceModeListener
+setMultiChoiceModeListener()}가 있는 보기 그룹에 대해 설정합니다. 수신기 콜백 메서드에서 상황별 작업 모음에 대한 
+작업을 지정하고, 작업 항목에 대한 클릭 이벤트에 대응하고,
+{@link android.view.ActionMode.Callback} 인터페이스에서 상속한 다른 콜백을 처리할 수 있습니다.</li>
+
+  <li>{@link
+android.widget.AbsListView#CHOICE_MODE_MULTIPLE_MODAL} 인수로 {@link android.widget.AbsListView#setChoiceMode setChoiceMode()}를 호출합니다.</li>
+</ul>
+
+<p>예:</p>
+
+<pre>
+ListView listView = getListView();
+listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
+listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
+
+    &#64;Override
+    public void onItemCheckedStateChanged(ActionMode mode, int position,
+                                          long id, boolean checked) {
+        // Here you can do something when items are selected/de-selected,
+        // such as update the title in the CAB
+    }
+
+    &#64;Override
+    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+        // Respond to clicks on the actions in the CAB
+        switch (item.getItemId()) {
+            case R.id.menu_delete:
+                deleteSelectedItems();
+                mode.finish(); // Action picked, so close the CAB
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    &#64;Override
+    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+        // Inflate the menu for the CAB
+        MenuInflater inflater = mode.getMenuInflater();
+        inflater.inflate(R.menu.context, menu);
+        return true;
+    }
+
+    &#64;Override
+    public void onDestroyActionMode(ActionMode mode) {
+        // Here you can make any necessary updates to the activity when
+        // the CAB is removed. By default, selected items are deselected/unchecked.
+    }
+
+    &#64;Override
+    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+        // Here you can perform updates to the CAB due to
+        // an {@link android.view.ActionMode#invalidate} request
+        return false;
+    }
+});
+</pre>
+
+<p>완료되었습니다. 이제 사용자가 롱-클릭하여 항목을 선택하면 시스템이 {@link
+android.widget.AbsListView.MultiChoiceModeListener#onCreateActionMode onCreateActionMode()}
+메서드를 호출하고 지정된 작업으로 상황별 작업 모음을 표시합니다. 상황별 작업 모음이 표시되는 동안
+사용자가 추가 항목을 선택할 수 있습니다.</p>
+
+<p>상황별 작업이 공통 작업 항목을 제공하는 몇몇 경우, 
+확인란이나 그와 비슷한 UI요소를 추가하여 사용자가 항목을 선택할 수 있도록 해주는 것이 좋습니다. 
+사용자가 롱-클릭 동작을 발견하지 못할 수도 있기 때문입니다. 사용자가 확인란을 선택하면 
+{@link android.widget.AbsListView#setItemChecked setItemChecked()}로 
+확인된 상태에 각 목록 항목을 설정하여 상황별 작업 모드를 호출할 수 있습니다.</p>
+
+
+
+
+<h2 id="PopupMenu">팝업 메뉴 만들기</h2>
+
+<div class="figure" style="width:220px">
+<img src="{@docRoot}images/ui/popupmenu.png" alt="" />
+<p><strong>그림 4.</strong> Gmail 앱의 팝업 메뉴는 오른쪽 위에 있는 더보기 
+버튼에 고정되어 있습니다.</p>
+</div>
+
+<p>{@link android.widget.PopupMenu}는 {@link android.view.View}에 고정된 모달 메뉴입니다.
+이것은 앵커 보기 아래에 공간이 있으면 아래에, 없으면 보기 위에 나타납니다. 이것은 다음과 같은 상황에 유용합니다.</p>
+<ul>
+  <li>특정 콘텐츠와 <em>관련된</em> 작업에 대한 더보기 스타일 메뉴를 제공합니다(예: 
+그림 4의 Gmail 이메일 헤더 등).
+    <p class="note"><strong>참고:</strong> 이것은 컨텍스트 메뉴와는 다릅니다. 컨텍스트 메뉴는 
+일반적으로 선택된 콘텐츠에 <em>영향을 미치는</em> 작업입니다. 선택된
+콘텐츠에 영향을 미치는 작업의 경우, <a href="#CAB">상황별 작업 모드</a> 또는 <a href="#FloatingContextMenu">부동 컨텍스트 메뉴</a>를 사용하십시오.</p></li>
+  <li>명령문의 두 번째 부분을 제공합니다(예: "추가"라고 표시된 버튼으로, 
+각기 다른 "추가" 옵션이 있는 팝업 메뉴를 발생시킵니다).</li>
+  <li>영구적인 선택이 포함되지 않은 {@link android.widget.Spinner}와 유사한 드롭다운을 제공합니다.
+</li>
+</ul>
+
+
+<p class="note"><strong>참고:</strong> {@link android.widget.PopupMenu}는 API
+레벨 11 이상에서 이용할 수 있습니다.</p>
+
+<p><a href="#xml">XML로 메뉴를 정의</a>하는 경우, 팝업 메뉴를 표시하는 방법은 다음과 같습니다.</p>
+<ol>
+  <li>자신의 생성자로 {@link android.widget.PopupMenu}를 인스턴트화합니다. 생성자는 
+현재 애플리케이션 {@link android.content.Context} 및 {@link android.view.View}를 
+메뉴를 고정시켜야 하는 곳에 가져갑니다.</li>
+  <li>{@link android.view.MenuInflater}를 사용하여{@link
+android.widget.PopupMenu#getMenu() PopupMenu.getMenu()}가 반환한 {@link
+android.view.Menu} 객체에 메뉴 리소스를 팽창합니다. API 레벨 14 이상에서는 이 대신 
+{@link android.widget.PopupMenu#inflate PopupMenu.inflate()}를 사용할 수 있습니다.</li>
+  <li>{@link android.widget.PopupMenu#show() PopupMenu.show()}를 호출합니다.</li>
+</ol>
+
+<p>예를 들어, 다음은 팝업 메뉴를 표시하는 {@link android.R.attr#onClick android:onClick} 속성이 
+있는 버튼입니다.</p>
+
+<pre>
+&lt;ImageButton
+    android:layout_width="wrap_content" 
+    android:layout_height="wrap_content" 
+    android:src="@drawable/ic_overflow_holo_dark"
+    android:contentDescription="@string/descr_overflow_button"
+    android:onClick="showPopup" />
+</pre>
+
+<p>그러면 액티비티가 이렇게 팝업 메뉴를 표시할 수 있습니다.</p>
+
+<pre>
+public void showPopup(View v) {
+    PopupMenu popup = new PopupMenu(this, v);
+    MenuInflater inflater = popup.getMenuInflater();
+    inflater.inflate(R.menu.actions, popup.getMenu());
+    popup.show();
+}
+</pre>
+
+<p>API 레벨 14 이상의 경우, {@link
+android.widget.PopupMenu#inflate PopupMenu.inflate()}로 메뉴를 팽창하는 두 개의 줄을 결합시킬 수 있습니다.</p>
+
+<p>사용자가 항목을 선택하거나 메뉴 영역 바깥쪽을 터치하면 이 메뉴는 
+무시됩니다. {@link
+android.widget.PopupMenu.OnDismissListener}를 사용하여 무시 이벤트를 수신 대기할 수 있습니다.</p>
+
+<h3 id="PopupEvents">클릭 이벤트 처리</h3>
+
+<p>사용자가 메뉴 항목을 선택할 때 작업을 수행하려면,{@link android.widget.PopupMenu#setOnMenuItemClickListener
+setOnMenuItemclickListener()}를 호출하여
+{@link
+android.widget.PopupMenu.OnMenuItemClickListener} 인터페이스를 구현하고 {@link
+android.widget.PopupMenu}를 등록합니다. 사용자가 항목을 선택하면 시스템이 인터페이스에서 {@link
+android.widget.PopupMenu.OnMenuItemClickListener#onMenuItemClick onMenuItemClick()} 콜백을
+호출합니다.</p>
+
+<p>예:</p>
+
+<pre>
+public void showMenu(View v) {
+    PopupMenu popup = new PopupMenu(this, v);
+
+    // This activity implements OnMenuItemClickListener
+    popup.setOnMenuItemClickListener(this);
+    popup.inflate(R.menu.actions);
+    popup.show();
+}
+
+&#64;Override
+public boolean onMenuItemClick(MenuItem item) {
+    switch (item.getItemId()) {
+        case R.id.archive:
+            archive(item);
+            return true;
+        case R.id.delete:
+            delete(item);
+            return true;
+        default:
+            return false;
+    }
+}
+</pre>
+
+
+<h2 id="groups">메뉴 그룹 만들기</h2>
+
+<p>메뉴 그룹은 특정한 특성을 공유하는 메뉴 항목의 컬렉션입니다. 그룹으로 다음과 같은 작업을 
+할 수 있습니다.</p>
+<ul>
+  <li>{@link android.view.Menu#setGroupVisible(int,boolean)
+setGroupVisible()}로 모든 항목 표시 또는 숨기기</li>
+  <li>{@link android.view.Menu#setGroupEnabled(int,boolean)
+setGroupEnabled()}로 모든 항목 활성화 또는 비활성화</li>
+  <li>{@link
+android.view.Menu#setGroupCheckable(int,boolean,boolean) setGroupCheckable()}로 모든 항목이 확인 가능한지 여부 지정</li>
+</ul>
+
+<p>메뉴 리소스의 {@code &lt;group&gt;} 요소 안에 {@code &lt;item&gt;} 요소를 중첩시키거나
+{@link
+android.view.Menu#add(int,int,int,int) add()} 메서드로 그룹 ID를 지정하여 그룹을 생성할 수 있습니다.</p>
+
+<p>다음은 그룹을 포함하는 메뉴 리소스의 예시입니다.</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/menu_save"
+          android:icon="@drawable/menu_save"
+          android:title="@string/menu_save" /&gt;
+    &lt;!-- menu group --&gt;
+    &lt;group android:id="@+id/group_delete"&gt;
+        &lt;item android:id="@+id/menu_archive"
+              android:title="@string/menu_archive" /&gt;
+        &lt;item android:id="@+id/menu_delete"
+              android:title="@string/menu_delete" /&gt;
+    &lt;/group&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>그룹에 있는 항목은 첫 항목과 같은 레벨에서 표시됩니다. 메뉴 안에 있는 세 가지 항목은 모두 
+형제입니다. 그러나 이 그룹에 있는 항목 두 개의 특성을 개발자가 수정할 수 있습니다. 
+그룹 ID를 참조하고 위에 나령된 메서드를 사용하면 됩니다. 시스템 또한 
+그룹화된 항목은 절대 분리하지 않습니다. 예를 들어, 각 항목에 대해 {@code
+android:showAsAction="ifRoom"}을 선언하면, 두 가지 모두 작업 모음에 나타나거나 
+작업 더보기에 나타납니다.</p>
+
+
+<h3 id="checkable">확인 가능한 메뉴 항목 사용</h3>
+
+<div class="figure" style="width:200px">
+  <img src="{@docRoot}images/radio_buttons.png" height="333" alt="" />
+  <p class="img-caption"><strong>그림 5.</strong> 확인 가능한 
+항목이 있는 하위 메뉴의 스크린샷입니다.</p>
+</div>
+
+<p>메뉴는 옵션을 켜고 끄거나, 독립적 옵션에 대한 확인란으로 사용하거나, 
+상호 배타적인 옵션의 그룹에 대한 무선 버튼으로 사용하기 위한 인터페이스로 
+유용합니다. 그림 5는 무선 버튼이 있으며 확인 가능한 항목이 포함된 하위 메뉴를
+표시합니다.</p>
+
+<p class="note"><strong>참고:</strong> (옵션 메뉴의) 아이콘 메뉴의 메뉴 항목은 
+확인란이나 무선 버튼을 표시할 수 없습니다. 확인 가능한 아이콘 메뉴에서 항목을 만들기로 선택하는 경우, 
+상태가 변경될 때마다 아이콘 및/또는 텍스트를 교체하여 
+확인된 상태를 수동으로 나타내야 합니다.</p>
+
+<p>{@code &lt;item&gt;} 요소의 {@code
+android:checkable} 속성을 사용하여 개별 메뉴 항목에 대한 확인 가능한 동작을 정의하거나
+{@code &lt;group&gt;} 요소에서 {@code android:checkableBehavior} 속성으로 전체 그룹에 대한 확인 가능한 동작을 사용할 수 있습니다. 
+예를 들어, 이 메뉴 그룹의 모든 항목은 무선 버튼으로 확인할 수 있습니다.</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;group android:checkableBehavior="single"&gt;
+        &lt;item android:id="@+id/red"
+              android:title="@string/red" /&gt;
+        &lt;item android:id="@+id/blue"
+              android:title="@string/blue" /&gt;
+    &lt;/group&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>{@code android:checkableBehavior} 속성은 다음 중 하나를 수락합니다.
+<dl>
+  <dt>{@code single}</dt>
+    <dd>그룹의 한 항목만 확인할 수 있습니다(무선 버튼).</dd>
+  <dt>{@code all}</dt>
+    <dd>모든 항목을 확인할 수 있습니다(확인란).</dd>
+  <dt>{@code none}</dt>
+    <dd>확인할 수 있는 항목이 없습니다.</dd>
+</dl>
+
+<p>{@code &lt;item&gt;} 요소의 {@code android:checked} 속성을 이용하여 항목에 기본 확인된 상태를 적용하고 
+{@link
+android.view.MenuItem#setChecked(boolean) setChecked()} 메서드로 코드 내에서 이를 변경할 수 있습니다.</p>
+
+<p>확인 가능한 항목이 선택되면, 시스템이 각 항목이 선택된 콜백 메서드를 호출합니다
+(예: {@link android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}). 바로 여기에서 
+확인란의 상태를 설정해야 합니다. 확인란이나 무선 버튼은 자신의 상태를 자동으로 
+변경하지 않기 때문입니다. 
+{@link android.view.MenuItem#isChecked()}로 항목의 현재 상태를 (사용자가 이를 선택하기 전 상태 그대로) 쿼리하고 그런 다음 
+{@link android.view.MenuItem#setChecked(boolean) setChecked()}로 확인된 상태를 설정할 수 있습니다. 예:</p>
+
+<pre>
+&#64;Override
+public boolean onOptionsItemSelected(MenuItem item) {
+    switch (item.getItemId()) {
+        case R.id.vibrate:
+        case R.id.dont_vibrate:
+            if (item.isChecked()) item.setChecked(false);
+            else item.setChecked(true);
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+    }
+}
+</pre>
+
+<p>이런 방식으로 확인된 상태를 설정하지 않으면, 사용자가 선택했을 때 항목의 가시적 상태(확인란 또는 무선 버튼)가
+변경되지 않습니다.
+ 상태를 설정할 경우, 액티비티는 항목의 확인된 상태를 보존해서
+사용자가 나중에 메뉴를 열었을 때 개발자가 설정한 확인된 상태가
+보이게 합니다.</p>
+
+<p class="note"><strong>참고:</strong>
+확인 가능한 메뉴 항목은 세션별 기준으로만 사용하도록 만들어져 있으며 애플리케이션이 소멸된 후에는 
+저장되지 않습니다. 사용자에 대해 저장하고자 하는 애플리케이션 설정이 있으면,
+<a href="{@docRoot}guide/topics/data/data-storage.html#pref">공유 기본 설정</a>으로 해당 데이터를 저장해야 합니다.</p>
+
+
+
+<h2 id="intents">인텐트에 기반한 메뉴 항목 추가</h2>
+
+<p>{@link android.content.Intent}를 이용하여
+액티비티를 시작하는 메뉴 항목을 원할 수도 있습니다(액티비티가 본인의 애플리케이션 안에 있는 것이든 또 다른 애플리케이션에 있는 것이든 무관합니다). 사용하고자 하는 인텐트를 알고 
+인텐트를 시작해야 하는 특정 메뉴 항목이 있을 경우,
+항목에 대해 선택된 적절한 콜백 메서드에서 {@link android.app.Activity#startActivity(Intent) startActivity()}가 
+포함된 인텐트를 실행합니다(예: {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} 콜백).</p>
+
+<p>그러나 사용자 기기에 
+해당 인텐트를 처리하는 애플리케이션이 있는지 모르는 경우, 이를 호출하는 메뉴 항목을 추가하면
+해당 인텐트가 액티비티에 대해 확인되지 못해서 메뉴 항목이 기능하지 못할 수도 있습니다.
+ 이것을 해결하기 위해 Android는 개발자가 동적으로 자신의 메뉴에 메뉴 항목을 추가할 수 있도록 허용합니다. 
+이는 Android가 기기에서 개발자의 인텐트를 처리하는 액티비티를 찾을 경우에 해당됩니다.</p>
+
+<p>인텐트를 수락하는 이용 가능한 액티비티에 기반하여 메뉴 항목을 추가하려면 다음과 같이 합니다.</p>
+<ol>
+  <li>
+카테고리 {@link android.content.Intent#CATEGORY_ALTERNATIVE} 및/또는
+{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE}, 기타 요구 사항으로 인텐트를 정의합니다.</li>
+  <li>{@link
+android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+Menu.addIntentOptions()}을 호출합니다. 그러면 Android가 인텐트를 수행하는 애플리케이션을 검색하고 
+이들을 개발자의 메뉴에 추가합니다.</li>
+</ol>
+
+<p>인텐트를 만족하는 애플리케이션이 설치되어 있지 않으면, 
+메뉴 항목이 추가되지 않습니다.</p>
+
+<p class="note"><strong>참고:</strong>
+{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} 를 사용하여 화면에서 현재 선택된 
+요소를 처리합니다. 그러므로 이것은 {@link
+android.app.Activity#onCreateContextMenu(ContextMenu,View,ContextMenuInfo)
+onCreateContextMenu()}에서 메뉴를 생성할 때만 사용해야 합니다.</p>
+
+<p>예:</p>
+
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu){
+    super.onCreateOptionsMenu(menu);
+
+    // Create an Intent that describes the requirements to fulfill, to be included
+    // in our menu. The offering app must include a category value of Intent.CATEGORY_ALTERNATIVE.
+    Intent intent = new Intent(null, dataUri);
+    intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
+
+    // Search and populate the menu with acceptable offering applications.
+    menu.addIntentOptions(
+         R.id.intent_group,  // Menu group to which new items will be added
+         0,      // Unique item ID (none)
+         0,      // Order for the items (none)
+         this.getComponentName(),   // The current activity name
+         null,   // Specific items to place first (none)
+         intent, // Intent created above that describes our requirements
+         0,      // Additional flags to control items (none)
+         null);  // Array of MenuItems that correlate to specific items (none)
+
+    return true;
+}</pre>
+
+<p>정의된 인텐트와 일치하는 인텐트 필터를 제공하는 것으로 발견된 각 액티비티에
+인텐트 필터의 <code>android:label</code>를
+메뉴 항목 제목으로, 애플리케이션 아이콘을 메뉴 항목 아이콘으로 사용하여 메뉴 항목을 추가합니다. 
+{@link android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+addIntentOptions()} 메서드는 추가된 메뉴 항목 개수를 반환합니다.</p>
+
+<p class="note"><strong>참고:</strong> {@link
+android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+addIntentOptions()}을 호출할 때 첫 번째 인수에서 지정된 메뉴 그룹이 모든 메뉴 항목을
+재정의합니다.</p>
+
+
+<h3 id="AllowingToAdd">다른 메뉴에 액티비티 추가 허용</h3>
+
+<p>본인의 액티비티의 서비스를 다른 애플리케이션에 제공하여 다른 
+애플리케이션의 메뉴에 본인의 애플리케이션이 추가되도록 할 수도 있습니다(위에서 설명한 것과 역할이 반대입니다).</p>
+
+<p>다른 애플리케이션 메뉴에 추가되려면, 인텐트 필터는 평소와 같이 
+정의해야 하지만, 인텐트 필터 카테고리에 {@link android.content.Intent#CATEGORY_ALTERNATIVE}
+및/또는{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} 값을
+반드시 포함해야 합니다. 예:</p>
+<pre>
+&lt;intent-filter label="&#64;string/resize_image">
+    ...
+    &lt;category android:name="android.intent.category.ALTERNATIVE" />
+    &lt;category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
+    ...
+&lt;/intent-filter>
+</pre>
+
+<p>인텐트 필터 작성에 관한 자세한 내용은 
+<a href="/guide/components/intents-filters.html">인텐트와 인텐트 필터</a> 문서를 참조하십시오.</p>
+
+<p>이 기법을 사용하는 샘플 애플리케이션은 
+<a href="{@docRoot}resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html">Note
+Pad</a> 샘플 코드를 참조하십시오.</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/ui/notifiers/notifications.jd b/docs/html-intl/intl/ko/guide/topics/ui/notifiers/notifications.jd
new file mode 100644
index 0000000..db55424
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/ui/notifiers/notifications.jd
@@ -0,0 +1,979 @@
+page.title=알림
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>이 문서의 내용</h2>
+<ol>
+  <li><a href="#Design">디자인 고려 사항</a></li>
+  <li><a href="#CreateNotification">알림 생성</a>
+    <ol>
+      <li><a href="#Required">필수 알림 콘텐츠</a></li>
+      <li><a href="#Optional">선택적 알림 콘텐츠 및 설정</a></li>
+      <li><a href="#Actions">알림 작업</a></li>
+      <li><a href="#Priority">알림 우선 순위</a></li>
+      <li><a href="#SimpleNotification">단순 알림 만들기</a></li>
+      <li><a href="#ApplyStyle">알림에 확장 레이아웃 적용</a></li>
+      <li><a href="#Compatibility">처리 호환성</a></li>
+    </ol>
+  </li>
+  <li><a href="#Managing">알림 관리</a>
+    <ol>
+      <li><a href="#Updating">알림 업데이트</a></li>
+      <li><a href="#Removing">알림 제거</a></li>
+    </ol>
+  </li>
+  <li><a href="#NotificationResponse">액티비티를 시작할 때 탐색 보존</a>
+    <ol>
+      <li><a href="#DirectEntry">정규 액티비티 PendingIntent 설정</a></li>
+      <li><a href="#ExtendedNotification">특수 액티비티 PendingIntent 설정</a></li>
+    </ol>
+  </li>
+  <li><a href="#Progress">알림에서 진행 상태 표시</a>
+    <ol>
+      <li><a href="#FixedProgress">고정 기간 진행 상태 표시기 표시</a></li>
+      <li><a href="#ActivityIndicator">지속적 액티비티 표시기 표시</a></li>
+    </ol>
+  </li>
+  <li><a href="#metadata">알림 메타데이터</a></li>
+  <li><a href="#Heads-up">헤드업 알림</a></li>
+  <li><a href="#lockscreenNotification">잠금 화면 알림</a></li>
+    <ol>
+      <li><a href="#visibility">가시성 설정</a></li>
+      <li><a href="#controllingMedia">잠금 화면에서 미디어 재생 제어</a></li>
+    </ol>
+  <li><a href="#CustomNotification">사용자 지정 알림 레이아웃</a></li>
+</ol>
+
+    <h2>Key 클래스</h2>
+    <ol>
+        <li>{@link android.app.NotificationManager}</li>
+        <li>{@link android.support.v4.app.NotificationCompat}</li>
+    </ol>
+    <h2>비디오</h2>
+    <ol>
+        <li>
+            <a href="http://www.youtube.com/watch?v=Yc8YrVc47TI&amp;feature=player_detailpage#t=1672s">
+            4.1의 알림</a>
+        </li>
+    </ol>
+<h2>참고 항목</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}design/patterns/notifications.html">Android 디자인: 알림</a>
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    알림은 애플리케이션의 정상 UI 외부에서 사용자에게 표시할 수 있는 메시지입니다.
+시스템에 알림을 실행하라고 명령하면
+처음에 <strong>알림 영역</strong>에서 아이콘으로 나타납니다. 알림 세부 정보를 보려면 사용자는
+<strong>알림 창</strong>을 열어야 합니다. 알림 영역과 알림 창은
+사용자가 언제든 볼 수 있는, 시스템이 제어하는 영역입니다.
+</p>
+<img id="figure1" src="{@docRoot}images/ui/notifications/notification_area.png" height="" alt="" />
+<p class="img-caption">
+    <strong>그림 1.</strong> 알림 영역에 있는 알림입니다.
+</p>
+<img id="figure2" src="{@docRoot}images/ui/notifications/notification_drawer.png" width="280px" alt="" />
+<p class="img-caption">
+    <strong>그림 2.</strong> 알림 창에 있는 알림입니다.
+</p>
+
+<p class="note"><strong>참고:</strong> 따로 언급된 부분을 제외하고 이 가이드는 
+버전 4 <a href="{@docRoot}tools/support-library/index.html">지원 라이브러리</a>의 {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} 클래스를 
+참조합니다.
+클래스 {@link android.app.Notification.Builder Notification.Builder}는 Android
+3.0(API 레벨 11)에 추가되었습니다.</p>
+
+<h2 id="Design">디자인 고려 사항</h2>
+
+<p>Android 사용자 인터페이스의 중요한 부분인 알림에는 자체적인 디자인 지침이 있습니다.
+Android 5.0(API 레벨 21)부터 도입된 머티어리얼 디자인 변경 사항은
+특히 중요하며, 자세한 정보를 보려면 <a href="{@docRoot}training/material/index.html">재료 디자인</a>
+교육을 검토해야 합니다. 알림과 그 상호작용을 디자인하는 방법을 알아보려면
+<a href="{@docRoot}design/patterns/notifications.html">알림</a> 디자인 가이드를 읽어보십시오.</p>
+
+<h2 id="CreateNotification">알림 생성</h2>
+
+<p>
+{@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} 개체에서 알림에 대한 UI 정보와 작업을 지정합니다.
+알림 자체를 생성하려면
+{@link android.support.v4.app.NotificationCompat.Builder#build NotificationCompat.Builder.build()}를 호출합니다.
+이는 사양이 포함된 {@link android.app.Notification} 객체를 반환합니다. 알림을 발행하려면
+
+{@link android.app.NotificationManager#notify NotificationManager.notify()}를 호출해서 시스템에 {@link android.app.Notification} 객체를 전달합니다.</p>
+
+<h3 id="Required">필수 알림 콘텐츠</h3>
+<p>
+    {@link android.app.Notification} 객체는 다음을 <em>반드시</em> 포함해야 합니다.
+</p>
+<ul>
+    <li>
+        
+{@link android.support.v4.app.NotificationCompat.Builder#setSmallIcon setSmallIcon()}이 설정한 작은 아이콘
+    </li>
+    <li>
+        
+{@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()}이 설정한 제목
+    </li>
+    <li>
+        
+{@link android.support.v4.app.NotificationCompat.Builder#setContentText setContentText()}이 설정한 세부 텍스트
+    </li>
+</ul>
+<h3 id="Optional">선택적 알림 콘텐츠 및 설정</h3>
+<p>
+    다른 모든 알림 설정 및 콘텐츠는 선택 사항입니다. 이들에 관해 자세히 알아보려면
+{@link android.support.v4.app.NotificationCompat.Builder}의 참조 문서를 참조하십시오.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Actions">알림 작업</h3>
+<p>
+    선택 항목이기는 하지만 알림에 작업을 하나 이상 추가해야 합니다.
+    작업은 사용자가 알림에서 
+애플리케이션의 {@link android.app.Activity}로 바로 갈 수 있게 하고, 여기에서 사용자는 하나 이상의 이벤트를 보거나 
+더 많은 작업을 할 수 있습니다.
+</p>
+<p>
+    하나의 알림은 여러 개의 작업을 제공할 수 있습니다. 사용자가 알림을 클릭했을 때 트리거되는 작업을 항상 정의해야 합니다.
+일반적으로 작업은
+애플리케이션의 {@link android.app.Activity}를 엽니다. 또한, 알람 다시 알림이나 텍스트 메시지에 즉시 답장 등과 같은 추가 작업을 수행하는
+알림 버튼을 추가할 수 있습니다.
+이 기능은 Android 4.1부터 사용할 수 있습니다. 추가 작업 버튼을 사용할 경우, 
+앱의 {@link android.app.Activity}에서 해당 기능을 사용할 수 있게 해야 합니다. 
+자세한 정보는 <a href="#Compatibility">처리 호환성</a> 섹션을 참조하십시오.
+</p>
+<p>
+    {@link android.app.Notification}에서 작업 자체는 
+애플리케이션에서 {@link android.app.Activity}를 시작하는 
+{@link android.content.Intent}가 포함된 
+{@link android.app.PendingIntent}가 정의합니다. 
+{@link android.app.PendingIntent}를 동작과 연관시키려면
+{@link android.support.v4.app.NotificationCompat.Builder}의 적절한 메서드를 호출합니다. 예를 들어,
+사용자가 알림 창의 알림 텍스트를 클릭했을 때 {@link android.app.Activity}를 시작하려면,
+
+{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent setContentIntent()}를 호출하여 {@link android.app.PendingIntent}를 추가합니다.
+</p>
+<p>
+    사용자가 알림을 클릭했을 때 {@link android.app.Activity}를 시작하는 동작이 가장 보편적인 작업
+시나리오입니다. 또한, 사용자가 알림을 무시했을 때 {@link android.app.Activity}를 
+시작할 수도 있습니다. Android 4.1 이후부터는 
+{@link android.app.Activity}를 작업 버튼에서 시작할 수 있습니다. 자세한 내용을 알아보려면
+{@link android.support.v4.app.NotificationCompat.Builder} 참조 가이드를 읽어보십시오.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Priority">알림 우선 순위</h3>
+<p>
+    원한다면, 알림에 우선 순위를 설정할 수 있습니다. 우선 순위는 
+기기 UI에 알림 표시 방식을 암시하는 역할을 합니다.
+    알림 우선 순위를 설정하려면, {@link
+android.support.v4.app.NotificationCompat.Builder#setPriority(int)
+NotificationCompat.Builder.setPriority()}를 호출하고 {@link
+android.support.v4.app.NotificationCompat} 우선 순위 상수 중 하나에 전달합니다. 
+우선 순위 수준은 {@link
+android.support.v4.app.NotificationCompat#PRIORITY_MIN}(-2)에서 {@link
+android.support.v4.app.NotificationCompat#PRIORITY_MAX}(2)까지 다섯 개가 있습니다. 별도의 설정이 없을 경우,
+우선 순위 기본값은 {@link
+android.support.v4.app.NotificationCompat#PRIORITY_DEFAULT}(0)으로 설정됩니다.
+</p>
+<p> 적절한 우선 순위 수준 설정에 관한 정보는 <a href="{@docRoot}design/patterns/notifications.html">알림</a> 디자인 가이드에서 "알림 우선 순위 올바르게 설정하고 관리하기"를
+참조하십시오.
+
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="SimpleNotification">단순 알림 만들기</h3>
+<p>
+    다음 조각은 사용자가 알림을 클릭하면 알리는 
+액티비티를 지정하는 단순한 알림을 나타냅니다. 이 코드는
+{@link android.support.v4.app.TaskStackBuilder} 객체를 생성하고 이를 사용하여 
+해당 작업의 {@link android.app.PendingIntent}를 생성합니다. 이 패턴은 
+<a href="#NotificationResponse">
+액티비티를 시작할 때 탐색 보존</a> 섹션에서 자세히 설명합니다.
+</p>
+<pre>
+NotificationCompat.Builder mBuilder =
+        new NotificationCompat.Builder(this)
+        .setSmallIcon(R.drawable.notification_icon)
+        .setContentTitle("My notification")
+        .setContentText("Hello World!");
+// Creates an explicit intent for an Activity in your app
+Intent resultIntent = new Intent(this, ResultActivity.class);
+
+// The stack builder object will contain an artificial back stack for the
+// started Activity.
+// This ensures that navigating backward from the Activity leads out of
+// your application to the Home screen.
+TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
+// Adds the back stack for the Intent (but not the Intent itself)
+stackBuilder.addParentStack(ResultActivity.class);
+// Adds the Intent that starts the Activity to the top of the stack
+stackBuilder.addNextIntent(resultIntent);
+PendingIntent resultPendingIntent =
+        stackBuilder.getPendingIntent(
+            0,
+            PendingIntent.FLAG_UPDATE_CURRENT
+        );
+mBuilder.setContentIntent(resultPendingIntent);
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// mId allows you to update the notification later on.
+mNotificationManager.notify(mId, mBuilder.build());
+</pre>
+<p>완료되었습니다. 이제 사용자에게 알림이 전달되었습니다.</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ApplyStyle">알림에 확장 레이아웃 적용</h3>
+<p>
+    확장된 보기에 알림을 나타나게 하려면, 
+먼저 원하는 일반 보기 옵션으로 {@link android.support.v4.app.NotificationCompat.Builder} 객체를
+생성합니다. 다음에는 확장된 레이아웃 객체의 인수로 {@link android.support.v4.app.NotificationCompat.Builder#setStyle
+Builder.setStyle()}을 호출합니다.
+</p>
+<p>
+    확장 알림은 Android 4.1 이전 플랫폼에서 사용할 수 없다는 것을 명심하십시오. 
+Android 4.1 이하 플랫폼에서 알림을 처리하는 방법은
+<a href="#Compatibility">처리 호환성</a> 섹션을 참조하십시오.
+</p>
+<p>
+    예를 들어, 다음 코드 조각은
+이전 조각에서 생성된 알림을 변경하여 확장 레이아웃을 사용하는 방법을 나타냅니다.
+</p>
+<pre>
+NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
+    .setSmallIcon(R.drawable.notification_icon)
+    .setContentTitle("Event tracker")
+    .setContentText("Events received")
+NotificationCompat.InboxStyle inboxStyle =
+        new NotificationCompat.InboxStyle();
+String[] events = new String[6];
+// Sets a title for the Inbox in expanded layout
+inboxStyle.setBigContentTitle("Event tracker details:");
+...
+// Moves events into the expanded layout
+for (int i=0; i &lt; events.length; i++) {
+
+    inboxStyle.addLine(events[i]);
+}
+// Moves the expanded layout object into the notification object.
+mBuilder.setStyle(inBoxStyle);
+...
+// Issue the notification here.
+</pre>
+
+<h3 id="Compatibility">처리 호환성</h3>
+
+<p>
+    
+알림 기능을 설정하는 메서드가
+지원 라이브러리 클래스 {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder}에 있더라도 모든 알림 기능을 특정 버전에서 사용할 수 있는 것은 아닙니다.
+    예를 들어, 확장 알림에 따라 달라지는 작업 버튼은 Android
+4.1 이상에만 나타납니다. 확장 알림 자체를
+Android 4.1 이상에서만 이용할 수 있기 때문입니다.
+</p>
+<p>
+    최상의 호환성을 보장하기 위해
+알림은 {@link android.support.v4.app.NotificationCompat NotificationCompat}와 하위 클래스,
+특히 {@link android.support.v4.app.NotificationCompat.Builder
+NotificationCompat.Builder}를 이용해서 알림을 생성합니다. 또한, 알림을 구현할 때 이 절차를 따릅니다.
+</p>
+<ol>
+    <li>
+        사용하는 버전에 관계없이
+모든 사용자에게 모든 알림 기능을 제공합니다. 이를 위해서
+앱의 {@link android.app.Activity}에서 모든 기능을 이용할 수 있는지 검증합니다. 그러려면
+새로운 {@link android.app.Activity}를 추가해야 할 수도 있습니다.
+        <p>
+            예를 들어,
+여러분이{@link android.support.v4.app.NotificationCompat.Builder#addAction addAction()}을 사용하여
+미디어 재생을 중지하고 시작하는 제어를 제공하고 싶다면
+먼저 앱의 {@link android.app.Activity}에 이 제어를 구현합니다.
+        </p>
+    </li>
+    <li>
+        사용자가 알림을 클릭하면 알림을 시작시키는 방식으로 모든 사용자에게 {@link android.app.Activity}에서 알림 기능을
+사용할 수 있게 합니다. 이를 위해,
+
+{@link android.app.Activity}를 위한 {@link android.app.PendingIntent}를 생성합니다. 
+{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+setContentIntent()}를 호출하여 알림에 {@link android.app.PendingIntent}를 추가합니다.
+    </li>
+    <li>
+        이제 알림에서 사용하고자 하는 확장 알림 기능을 추가합니다. 또한, 사용자가 알림을 클릭하면 시작되는
+{@link android.app.Activity}에서 개발자가 추가한 모든 기능을 
+사용할 수 있어야 합니다.
+    </li>
+</ol>
+
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="Managing">알림 관리</h2>
+<p>
+    같은 유형의 이벤트에서 알림을 여러 번 발행해야 할 경우, 
+완전히 새로운 알림을 만드는 것은 삼가야 합니다. 대신, 일부 값을 변경하거나 추가하거나, 두 가지 조치를 모두 취하여
+이전 알림을 업데이트하는 것이 좋습니다.
+</p>
+<p>
+    예를 들어, Gmail은 읽지 않은 메시지 개수를 올리고 각 이메일의 요약을 알림에 추가하여
+새 이메일 도착을 알립니다. 이것을 일명 
+알림을 "쌓는다"고 하며, 이는 
+<a href="{@docRoot}design/patterns/notifications.html">알림</a> 디자인 가이드에 자세히 설명되어 있습니다.
+</p>
+<p class="note">
+    <strong>참고:</strong> 이 Gmail 기능에는 "받은편지함" 확장 레이아웃이 필요한데, 
+이것은 Android 4.1부터 이용할 수 있는 확장 알림 기능의 일부입니다.
+</p>
+<p>
+    다음 섹션은 알림 업데이트 방법과 삭제 방법을 설명합니다.
+</p>
+<h3 id="Updating">알림 업데이트</h3>
+<p>
+    알림이 업데이트되도록 설정하려면,
+{@link android.app.NotificationManager#notify(int, android.app.Notification) NotificationManager.notify()}를 호출하여 알림 ID와 함께 발행합니다.
+    알림을 발행한 후에 업데이트하려면, 
+{@link android.support.v4.app.NotificationCompat.Builder} 객체를 업데이트하거나 생성하고, 
+{@link android.app.Notification} 객체를 구축하고, 
+이전에 사용한 것과 같은 ID로 {@link android.app.Notification}을 발행합니다. 이전 알림이 
+여전히 표시되는 경우, 시스템은
+{@link android.app.Notification} 객체의 콘텐츠에서 알림을 업데이트합니다. 이전 알림을 무시할 경우, 
+대신 새로운 알림이 생성됩니다.
+</p>
+<p>
+    다음 코드 조각은 발생한 이벤트 개수를 반영하여 
+업데이트된 알림을 나타낸 것입니다. 이것은 알림을 쌓아 요약을 표시합니다.
+</p>
+<pre>
+mNotificationManager =
+        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// Sets an ID for the notification, so it can be updated
+int notifyID = 1;
+mNotifyBuilder = new NotificationCompat.Builder(this)
+    .setContentTitle("New Message")
+    .setContentText("You've received new messages.")
+    .setSmallIcon(R.drawable.ic_notify_status)
+numMessages = 0;
+// Start of a loop that processes data and then notifies the user
+...
+    mNotifyBuilder.setContentText(currentText)
+        .setNumber(++numMessages);
+    // Because the ID remains unchanged, the existing notification is
+    // updated.
+    mNotificationManager.notify(
+            notifyID,
+            mNotifyBuilder.build());
+...
+</pre>
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Removing">알림 제거</h3>
+<p>
+    알림은 다음 중 하나가 발생할 때까지 계속 표시된 상태로 유지됩니다.
+</p>
+<ul>
+    <li>
+        사용자가 개별적으로 삭제하거나 "모두 삭제"를 사용하여 알림을 무시합니다(
+알림을 지울 수 있는 경우).
+    </li>
+    <li>
+        사용자가 알림을 클릭하고, 알림을 생성했을 때
+{@link android.support.v4.app.NotificationCompat.Builder#setAutoCancel setAutoCancel()} 을 호출했을 경우입니다.
+
+    </li>
+    <li>
+        특정 알림 ID에 대해 {@link android.app.NotificationManager#cancel(int) cancel()}을 호출합니다.
+이 메서드도 현재 진행 중인 알림을 삭제합니다.
+    </li>
+    <li>
+        {@link android.app.NotificationManager#cancelAll() cancelAll()}을 호출합니다. 
+이것은 이전에 발행한 알림을 모두 제거합니다.
+    </li>
+</ul>
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="NotificationResponse">액티비티를 시작할 때 탐색 보존</h2>
+<p>
+    알림에서 {@link android.app.Activity}를 시작할 때는 사용자의 예상 탐색 경험을 
+보존해야 합니다. <i>'뒤로'를 클릭하면</i> 사용자를 애플리케이션의 정상 작업 흐름을 거쳐 메인 스크린으로 보내고, 
+ <i>'최근'을 클릭하면</i> 
+{@link android.app.Activity}를 별개의 작업으로 표시합니다. 탐색 경험을 보존하려면
+새 작업에서 {@link android.app.Activity}를 시작해야 합니다. 새로운 작업을 부여하기 위한
+{@link android.app.PendingIntent} 설정 방법은 시작하는
+{@link android.app.Activity}의 성격에 따라 달라집니다. 여기에는 두 가지 일반적인 상황이 있습니다.
+</p>
+<dl>
+    <dt>
+        정규 액티비티
+    </dt>
+    <dd>
+        애플리케이션의 정상적 작업 흐름의 일부인 {@link android.app.Activity}를 
+시작합니다. 이 상황에서 {@link android.app.PendingIntent}를 설정하여
+새 작업을 시작하고 애플리케이션의
+정상적인 <i>'뒤로' </i>동작을 재현하는 백 스택으로 {@link android.app.PendingIntent}를 제공합니다.
+        <p>
+            Gmail 앱에서 보낸 알림이 이것을 잘 보여줍니다. 하나의 이메일 메시지에 대한 
+알림을 클릭하면 메시지 자체를 보게 됩니다. <b>뒤로</b>를 터치하면 
+알림에서 들어간 것이 아니라 메인 스크린에서
+Gmail에 들어간 것처럼 Gmail을 통해 메인 스크린으로 돌아갑니다.
+        </p>
+        <p>
+            이것은 알림을 터치하기만 하면 어느 애플리케이션에 있든 관계 없이 발생하는 
+일입니다. 예를 들어, Gmail에서 메시지를 작성하다가 
+한 이메일에 대한 알림을 클릭하면 해당 이메일로 바로 이동합니다. <i>뒤로</i>
+를 터치하면
+작성 중인 메시지가 아니라 받은편지함과 메인 스크린으로 돌아갑니다.
+        </p>
+    </dd>
+    <dt>
+        특수 액티비티
+    </dt>
+    <dd>
+        {@link android.app.Activity}가 알림에서 시작될 경우 사용자에게는 이것만 보입니다.
+        {@link android.app.Activity}는 알림 자체에서 표시하기 어려운 정보를 제공하므로 
+어떤 면에서는 알림을 확장하는 셈입니다. 이 상황에서는, 
+{@link android.app.PendingIntent}를 설정하고 새로운 작업에서 시작합니다. 
+시작된 {@link android.app.Activity}는 
+애플리케이션 액티비티 흐름의 일부가 아니므로 백 스택을 생성하지 않아도 됩니다. <i>뒤로</i>를 클릭하면 사용자는 여전히 
+메인 스크린으로 돌아갑니다.
+    </dd>
+</dl>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="DirectEntry">정규 액티비티 PendingIntent 설정</h3>
+<p>
+    직접 진입 
+{@link android.app.Activity}를 시작하는 {@link android.app.PendingIntent}를 설정하려면 다음과 같은 단계를 따르십시오.
+</p>
+<ol>
+    <li>
+        매니페스트에서 애플리케이션의 {@link android.app.Activity} 계층을 정의합니다.
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                Android 4.0.3 이전에 대한 지원을 추가합니다. 이렇게 하려면 
+
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
+요소를
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>의 하위 요소로 추가하여 개발자가 시작하는 {@link android.app.Activity}의 상위 요소를 지정합니다.
+                <p>
+                    이 요소의 경우,
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a>="android.support.PARENT_ACTIVITY"</code>를 설정합니다.
+                    <code>&lt;parent_activity_name&gt;</code>가
+상위 요소 <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+에 대한
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a></code>의 값인
+
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#val">android:value</a>="&lt;parent_activity_name&gt;"</code>
+를 시작합니다. 다음 XML을 예시로 참조하십시오.
+                </p>
+            </li>
+            <li>
+                Android 4.1 이후에 대한 지원도 추가합니다. 이렇게 하려면 개발자가 시작하는 {@link android.app.Activity}의
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+ 요소에
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#parent">android:parentActivityName</a></code>
+속성을 추가합니다.
+            </li>
+        </ol>
+        <p>
+            최종 XML은 이런 모습을 띠는 것이 정상입니다.
+        </p>
+<pre>
+&lt;activity
+    android:name=".MainActivity"
+    android:label="&#64;string/app_name" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+&lt;activity
+    android:name=".ResultActivity"
+    android:parentActivityName=".MainActivity"&gt;
+    &lt;meta-data
+        android:name="android.support.PARENT_ACTIVITY"
+        android:value=".MainActivity"/&gt;
+&lt;/activity&gt;
+</pre>
+    </li>
+    <li>
+        {@link android.app.Activity}를 시작하는 {@link android.content.Intent}에 기초하여
+백 스택을 생성합니다.
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                {@link android.content.Intent}를 생성하여 {@link android.app.Activity}를 생성합니다.
+            </li>
+            <li>
+                {@link android.app.TaskStackBuilder#create
+TaskStackBuilder.create()}를 호출하여 스택 빌더를 생성합니다.
+            </li>
+            <li>
+                
+{@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}을 호출하여 스택 빌더를 백 스택에 추가합니다.
+                매니페스트에서 정의한 계층의 각 {@link android.app.Activity}의 경우,
+백 스택에
+{@link android.app.Activity}를 시작하는 {@link android.content.Intent} 객체가 포함됩니다. 이 메서드는 새로운 작업에서 
+스택을 시작하는 플래그도 추가합니다.
+                <p class="note">
+                    <strong>참고:</strong> 
+{@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}에 대한 인수가
+시작된 {@link android.app.Activity}의 참조이기는 하지만, 이 메서드 호출은 
+
+{@link android.app.Activity}를 시작하는 {@link android.content.Intent}를 추가하지 않습니다. 대신, 그 부분은 다음 단계에서 해결합니다.
+                </p>
+            </li>
+            <li>
+                
+{@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()}를 호출하여 {@link android.app.Activity}를 시작하는 {@link android.content.Intent}를 
+추가합니다.
+                첫 번째 단계에서 생성한 {@link android.content.Intent}를
+
+{@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()}에 대한 인수로 전달합니다.
+            </li>
+            <li>
+                필요할 경우 
+{@link android.support.v4.app.TaskStackBuilder#editIntentAt
+TaskStackBuilder.editIntentAt()}을 호출하여 스택에서{@link android.content.Intent} 객체에 대한 인수를 추가합니다. 이것은 사용자가
+
+<i>'뒤로'</i>를 사용하여 탐색할 때 대상{@link android.app.Activity}가 의미 있는 데이터를 표시하도록 보장하기 위해 때때로 필요한 절차입니다.
+            </li>
+            <li>
+                이 백 스택에 대한 {@link android.app.PendingIntent}를 가져옵니다. 이때 
+{@link android.support.v4.app.TaskStackBuilder#getPendingIntent getPendingIntent()}를 호출하는 방법을 씁니다.
+                그러면 이 {@link android.app.PendingIntent}를 
+{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+setContentIntent()}에 대한 인수로 사용할 수 있습니다.
+            </li>
+        </ol>
+     </li>
+</ol>
+<p>
+    다음 코드 조각은 이 과정을 나타낸 것입니다.
+</p>
+<pre>
+...
+Intent resultIntent = new Intent(this, ResultActivity.class);
+TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
+// Adds the back stack
+stackBuilder.addParentStack(ResultActivity.class);
+// Adds the Intent to the top of the stack
+stackBuilder.addNextIntent(resultIntent);
+// Gets a PendingIntent containing the entire back stack
+PendingIntent resultPendingIntent =
+        stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
+...
+NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+builder.setContentIntent(resultPendingIntent);
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+mNotificationManager.notify(id, builder.build());
+</pre>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ExtendedNotification">특수 액티비티 PendingIntent 설정</h3>
+<p>
+    다음 섹션에서는 특수 액티비티 
+{@link android.app.PendingIntent}를 설정하는 법을 설명합니다.
+</p>
+<p>
+    특수 {@link android.app.Activity}에는 백 스택이 필요하지 않습니다. 따라서 매니페스트에서 이것의 
+{@link android.app.Activity} 계층을 정의하지 않아도 되고, 
+백 스택을 구축하기 위해 
+{@link android.support.v4.app.TaskStackBuilder#addParentStack  addParentStack()}을 
+호출하지 않아도 됩니다. 대신 매니페스트를 사용하여 {@link android.app.Activity} 작업 옵션을 설정하고, 
+{@link android.app.PendingIntent}를 생성하십시오. 이때 
+{@link android.app.PendingIntent#getActivity getActivity()}를 호출하는 방법을 씁니다.
+</p>
+<ol>
+    <li>
+        매니페스트에서 다음 속성을 {@link android.app.Activity}에 대한 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+요소에 추가합니다.
+        <dl>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#nm">android:name</a>="<i>activityclass</i>"</code>
+            </dt>
+            <dd>
+                액티비티의 완전히 정규화된 클래스 이름입니다.
+            </dd>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">android:taskAffinity</a>=""</code>
+            </dt>
+            <dd>
+                이것은 개발자가 코드에서 설정하는 
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK} 플래그와 더불어 
+이 {@link android.app.Activity}가 
+애플리케이션의 기본 작업으로 들어가지 않게 보장합니다. 애플리케이션의 기본 유사성을 
+가지고 있는 기존 작업은 모두 영향을 받지 않습니다.
+            </dd>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">android:excludeFromRecents</a>="true"</code>
+            </dt>
+            <dd>
+                새 작업을 <i>최근</i>에서 배제하여 사용자가 우연히
+이곳으로 다시 이동하지 못하게 합니다.
+            </dd>
+        </dl>
+        <p>
+            이 조각은 해당 요소를 나타낸 것입니다.
+        </p>
+<pre>
+&lt;activity
+    android:name=".ResultActivity"
+...
+    android:launchMode="singleTask"
+    android:taskAffinity=""
+    android:excludeFromRecents="true"&gt;
+&lt;/activity&gt;
+...
+</pre>
+    </li>
+    <li>
+        알림을 구축 및 발행합니다.
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                
+{@link android.app.Activity}를 시작하는 {@link android.content.Intent}를 생성합니다.
+            </li>
+            <li>
+                {@link android.app.Activity}가 새로운, 빈 작업에서 시작되도록 설정합니다. 이때 
+{@link android.content.Intent#setFlags setFlags()}를 
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK}
+ 및 
+{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TASK FLAG_ACTIVITY_CLEAR_TASK} 플래그와 함께 호출하면 됩니다.
+            </li>
+            <li>
+                {@link android.content.Intent}에 필요한 다른 모든 옵션을 설정합니다.
+            </li>
+            <li>
+                {@link android.app.PendingIntent}를 {@link android.content.Intent}로부터 
+생성합니다. 이때 {@link android.app.PendingIntent#getActivity getActivity()}를 호출하면 됩니다.
+                그러면 이 {@link android.app.PendingIntent}를 
+{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+setContentIntent()}에 대한 인수로 사용할 수 있습니다.
+            </li>
+        </ol>
+    <p>
+        다음 코드 조각은 이 과정을 나타낸 것입니다.
+    </p>
+<pre>
+// Instantiate a Builder object.
+NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+// Creates an Intent for the Activity
+Intent notifyIntent =
+        new Intent(this, ResultActivity.class);
+// Sets the Activity to start in a new, empty task
+notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+                        | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+// Creates the PendingIntent
+PendingIntent notifyPendingIntent =
+        PendingIntent.getActivity(
+        this,
+        0,
+        notifyIntent,
+        PendingIntent.FLAG_UPDATE_CURRENT
+);
+
+// Puts the PendingIntent into the notification builder
+builder.setContentIntent(notifyPendingIntent);
+// Notifications are issued by sending them to the
+// NotificationManager system service.
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// Builds an anonymous Notification object from the builder, and
+// passes it to the NotificationManager
+mNotificationManager.notify(id, builder.build());
+</pre>
+    </li>
+</ol>
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="Progress">알림에서 진행 상태 표시</h2>
+<p>
+    알림에는 사용자에게 진행 중인 작업의 상태를 보여주는 
+애니메이션 진행 표시기를 포함할 수 있습니다. 작업이 얼마나 걸릴지, 주어진 시점에 어느 정도 완료되었는지를 추정할 수 있는 경우 
+표시기의 "확정적" 형태(진행률 표시줄)를 
+사용하십시오. 작업의 길이를 추정할 수 없으면, 표시기의 
+"비확정적" 형태(액티비티 표시기)를 사용하십시오.
+</p>
+<p>
+    진행 상태 표시기는 
+{@link android.widget.ProgressBar} 클래스의 플랫폼 구현으로 표시됩니다.
+</p>
+<p>
+    Android 4.0부터 시작되는 플랫폼에서 진행 상태 표시기를 사용하려면, 
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}를 호출하십시오. 이전 
+버전의 경우, 개발자 나름의 사용자 지정 알림 레이아웃을 생성해야 하며 여기에 
+{@link android.widget.ProgressBar} 보기가 포함되어 있어야 합니다.
+</p>
+<p>
+    다음 섹션은 
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}를 사용하여 알림의 진행 상태를 표시하는 법을 설명합니다.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="FixedProgress">고정 기간 진행 상태 표시기 표시</h3>
+<p>
+    확정적인 진행률 표시줄을 표시하려면
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress
+setProgress(max, progress, false)}를 호출하여 표시줄을 알림에 추가하고, 그 다음에 알림을 발행합니다. 작업이 진행되는 동안 
+<code>progress</code>를 증가시키고 알림을 업데이트합니다. 작업이 끝날 무렵 
+<code>progress</code>가 <code>max</code>와 같아야 합니다. 
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}를 호출하는 보편적인 방법은
+<code>max</code>를 100에 설정하고 작업에 대한 "완료 비율" 값에 따라 <code>progress</code>를
+증가시키는 것입니다.
+</p>
+<p>
+    작업이 완료되면 진행률 표시줄이 표시되는 상태로 둘 수도 있고, 제거할 수도 있습니다. 어느 경우를 택하더라도 
+알림 텍스트를 업데이트하여 작업이 완료되었다고 표시하는 것을 잊지 마십시오.
+    진행률 표시줄을 제거하려면,
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress
+setProgress(0, 0, false)}를 호출합니다. 예:
+</p>
+<pre>
+...
+mNotifyManager =
+        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+mBuilder = new NotificationCompat.Builder(this);
+mBuilder.setContentTitle("Picture Download")
+    .setContentText("Download in progress")
+    .setSmallIcon(R.drawable.ic_notification);
+// Start a lengthy operation in a background thread
+new Thread(
+    new Runnable() {
+        &#64;Override
+        public void run() {
+            int incr;
+            // Do the "lengthy" operation 20 times
+            for (incr = 0; incr &lt;= 100; incr+=5) {
+                    // Sets the progress indicator to a max value, the
+                    // current completion percentage, and "determinate"
+                    // state
+                    mBuilder.setProgress(100, incr, false);
+                    // Displays the progress bar for the first time.
+                    mNotifyManager.notify(0, mBuilder.build());
+                        // Sleeps the thread, simulating an operation
+                        // that takes time
+                        try {
+                            // Sleep for 5 seconds
+                            Thread.sleep(5*1000);
+                        } catch (InterruptedException e) {
+                            Log.d(TAG, "sleep failure");
+                        }
+            }
+            // When the loop is finished, updates the notification
+            mBuilder.setContentText("Download complete")
+            // Removes the progress bar
+                    .setProgress(0,0,false);
+            mNotifyManager.notify(ID, mBuilder.build());
+        }
+    }
+// Starts the thread by calling the run() method in its Runnable
+).start();
+</pre>
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ActivityIndicator">지속적 액티비티 표시기 표시</h3>
+<p>
+    비확정적 액티비티 표시기를 표시하려면,
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, true)}으로 알림에 표시기를 추가하고(처음의 인수 두 개는 무시합니다)
+, 알림을 발행합니다. 그 결과로 
+진행률 표시줄과 같은 스타일의 표시기가 나타납니다. 다만 이것은 애니메이션이 계속 진행 중입니다.
+</p>
+<p>
+    작업을 시작할 때 알림을 발행합니다. 애니메이션은 
+알림을 수정할 때까지 실행됩니다. 작업이 완료되면, 
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, false)}를 호출하고
+알림을 업데이트하여 액티비티 표시기를 제거합니다.
+    이 작업은 항상 해야 합니다. 하지 않으면, 작업이 완료되더라도 애니메이션이 계속 실행됩니다. 또한, 
+알림 텍스트를 변경하여 작업이 완료되었음을 나타내는 것을 잊지 마십시오.
+</p>
+<p>
+    액티비티 표시기의 작동 원리를 알아보려면 이어지는 코드 조각을 참조하십시오. 다음 줄을 찾을 수 있습니다.
+</p>
+<pre>
+// Sets the progress indicator to a max value, the current completion
+// percentage, and "determinate" state
+mBuilder.setProgress(100, incr, false);
+// Issues the notification
+mNotifyManager.notify(0, mBuilder.build());
+</pre>
+<p>
+    찾은 줄을 다음 줄로 교체하십시오.
+</p>
+<pre>
+ // Sets an activity indicator for an operation of indeterminate length
+mBuilder.setProgress(0, 0, true);
+// Issues the notification
+mNotifyManager.notify(0, mBuilder.build());
+</pre>
+
+<h2 id="metadata">알림 메타데이터</h2>
+
+<p>알림은 
+다음 {@link android.support.v4.app.NotificationCompat.Builder} 메서드로 할당된 메타데이터에 따라 정렬할 수 있습니다.</p>
+
+<ul>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#setCategory(java.lang.String) setCategory()}는 
+기기가 우선 순위 모드일 때 앱 알림을 처리하는 방법을 시스템에 전달합니다
+(예를 들어, 알림이 수신 전화나 채팅 메시지, 알람 등을 나타낼 경우).</li>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#setPriority(int) setPriority()}는 
+우선 순위 필드가 포함된 알림을 {@code PRIORITY_MAX} 또는 {@code PRIORITY_HIGH}로 설정하고, 
+알림에 소리나 진동이 포함되어 있을 경우 작은 부동 창에 나타나게 합니다.</li>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#addPerson(java.lang.String) addPerson()}을 
+사용하면 알림에 사람 목록을 추가할 수 있게 해줍니다. 개발자의 앱은 이 신호를 사용하여 
+시스템에 지정된 사람들로부터 받은 알림을 함께 그룹화해야 한다고 알리거나, 이런 사람들로부터 받은 알림을 
+더욱 중요한 것으로 순위를 높일 수 있습니다.</li>
+</ul>
+
+<div class="figure" style="width:230px">
+  <img src="{@docRoot}images/ui/notifications/heads-up.png" alt="" width="" height="" id="figure3" />
+  <p class="img-caption">
+    <strong>그림 3.</strong> 헤드업 알림을 표시하고 있는 전체 화면 액티비티
+  </p>
+</div>
+
+<h2 id="Heads-up">헤드업 알림</h2>
+
+<p>Android 5.0(API 레벨 21)에서는 알림을 작은 부동 창에 나타낼 수 있습니다
+(다른 말로 <em>헤드업 알림</em>이라고 부릅니다). 이것은 기기가 활성 상태일 때(즉, 
+기기가 잠금 해제 상태이며 화면에 켜져 있는 경우) 해당됩니다. 이와 같은 알림은 
+외견상 일반적인 알림의 소형 형태와 비슷해 보이지만, 
+해드업 알림에서는 작업 버튼도 표시한다는 점이 다릅니다. 사용자는 현재 앱을 떠나지 않고도 
+헤드업 알림에 조치를 취하거나 이를 무시할 수 있습니다.</p>
+
+<p>헤드업 알림을 트리거할 수 있는 조건의 예시를 몇 가지 소개하면 다음과 같습니다.</p>
+
+<ul>
+  <li>사용자 액티비티가 전체 화면 모드이거나(앱이
+{@link android.app.Notification#fullScreenIntent}를 사용할 경우)</li>
+  <li>알림의 우선 순위가 높고 
+벨소리나 진동을 사용할 경우</li>
+</ul>
+
+<h2 id="lockscreenNotification">잠금 화면 알림</h2>
+
+<p>Android 5.0 (API 레벨 21) 릴리스부터 알림이 잠금 화면에도 
+나타날 수 있게 되었습니다. 앱은 이 기능을 사용하면 미디어 재생 제어와 다른 보편적인 작업을 
+제공할 수 있습니다. 사용자는 설정을 통해 잠금 화면에 알림 표시 여부를 선택할 수 있고, 
+개발자는 앱의 알림이 잠금 화면에 표시될지 여부를 지정할 수 있습니다.</p>
+
+<h3 id="visibility">가시성 설정</h3>
+
+<p>보안 잠금 화면에 알림이 얼마나 상세하게 표시될 것인지 그 수준을 앱이 제어할 수 
+있습니다. {@link android.support.v4.app.NotificationCompat.Builder#setVisibility(int) setVisibility()}를 호출하고 
+다음 값 중 하나를 지정합니다.</p>
+
+<ul>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}은 
+알림의 전체 콘텐츠를 표시합니다.</li>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_SECRET}은 
+이 알림의 어떤 부분도 화면에 표시하지 않습니다.</li>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE}은 
+알림 아이콘과 콘텐츠 제목 등의 기본 정보는 표시하지만 알림의 전체 콘텐츠는 숨깁니다.</li>
+</ul>
+
+<p>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE}으로 설정하면 ,
+알림 콘텐츠의 대체 버전을 제공할 수도 있습니다. 이렇게 하면 특정 세부 사항만 숨깁니다. 예를 들어, 
+SMS 앱에서 <em>3개의 새 문자 메시지가 있습니다.</em>라고 표시하면서도 
+문자 메시지의 내용과 발신자는 숨길 수 있습니다. 이 대체 알림을 제공하려면, 우선 대체 알림을 생성합니다. 이때 
+{@link android.support.v4.app.NotificationCompat.Builder}를 사용합니다. 비공개 알림 객체를 
+생성하는 경우, 대체 알림을 이에 첨부할 때 
+{@link android.support.v4.app.NotificationCompat.Builder#setPublicVersion(android.app.Notification) setPublicVersion()}
+메서드를 통합니다.</p>
+
+<h3 id="controllingMedia">잠금 화면에서 미디어 재생 제어</h3>
+
+<p>Android 5.0(API 레벨 21)의 잠금 화면에서는 더 이상 
+{@link android.media.RemoteControlClient}를 기반으로 한 미디어 제어를 표시하지 않습니다. 이는 사용되지 않고 있기 때문입니다. 대신, 
+{@link android.app.Notification.MediaStyle} 템플릿을 
+{@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
+메서드와 함께 사용하십시오. 이 메서드는 작업을 클릭할 수 있는 아이콘으로 변환해줍니다.</p>
+
+<p class="note"><strong>참고:</strong> 이 템플릿과 {@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()} 
+메서드는 지원 라이브러리에 포함되어 있지 않으므로 이 기능은 Android 5.0 이상에서만 
+실행됩니다.</p>
+
+<p>Android 5.0의 잠금 화면에서 미디어 재생 제어를 표시하려면, 
+위에 설명한 바와 같이 가시성을 {@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}으로 설정합니다. 그런 다음 다음 샘플 코드에서 설명한 바와 같이 작업을 추가하고 
+{@link android.app.Notification.MediaStyle} 템플릿을 설정합니다.
+</p>
+
+<pre>
+Notification notification = new Notification.Builder(context)
+    // Show controls on lock screen even when user hides sensitive content.
+    .setVisibility(Notification.VISIBILITY_PUBLIC)
+    .setSmallIcon(R.drawable.ic_stat_player)
+    // Add media control buttons that invoke intents in your media service
+    .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0
+    .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent)  // #1
+    .addAction(R.drawable.ic_next, "Next", nextPendingIntent)     // #2
+    // Apply the media style template
+    .setStyle(new Notification.MediaStyle()
+    .setShowActionsInCompactView(1 /* #1: pause button */)
+    .setMediaSession(mMediaSession.getSessionToken())
+    .setContentTitle("Wonderful music")
+    .setContentText("My Awesome Band")
+    .setLargeIcon(albumArtBitmap)
+    .build();
+</pre>
+
+<p class="note"><strong>참고:</strong> {@link android.media.RemoteControlClient}를 
+사용하지 않게 된 것은 미디어 제어에 이외에도 더 많은 영향을 미칩니다. 미디어 세션을 관리하고 재생을 제어하기 위한 새 API에 관한 자세한 정보는
+<a href="{@docRoot}about/versions/android-5.0.html#MediaPlaybackControl">미디어 재생 제어</a>를
+ 참조하십시오.</p>
+
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="CustomNotification">사용자 지정 알림 레이아웃</h2>
+<p>
+    알림 프레임워크를 사용하면 사용자 지정 레이아웃을 정의할 수 있습니다. 
+사용자 지정 레이아웃은 {@link android.widget.RemoteViews} 객체에서 알림의 외관을 정의합니다.
+    사용자 지정 레이아웃 알림은 일반적인 알림과 비슷하지만, 이들은 XML 레이아웃 파일에서
+ 정의한 {@link android.widget.RemoteViews}에 기초합니다.
+</p>
+<p>
+    사용자 지정 알림 레이아웃에 사용할 수 있는 높이는 알림 보기에 따라 다릅니다. 일반 
+보기 레이아웃은 64dp로 제한되어 있으며 확장 보기 레이아웃은 256dp로 제한되어 있습니다.
+</p>
+<p>
+    사용자 지정 레이아웃을 정의하려면 
+XML 레이아웃 파일을 팽창하는 {@link android.widget.RemoteViews} 객체를 인스턴트화하는 것부터 시작합니다. 그런 다음, 
+
+{@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()}과 같은 메서드를 호출하는 대신 
+{@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()}를 호출합니다. 사용자 지정 알림에서 
+콘텐츠 세부 정보를 설정하려면
+{@link android.widget.RemoteViews}의 메서드를 사용하여 보기의 하위 요소에 대한 값을 설정합니다.
+</p>
+<ol>
+    <li>
+        알림에 대한 XML 레이아웃은 별도의 파일에 생성하십시오. 파일 이름은 원하는 대로 
+아무 것이나 사용해도 좋지만, 확장자는 <code>.xml</code>을 사용해야 합니다.
+    </li>
+    <li>
+        앱에서 {@link android.widget.RemoteViews} 메서드를 사용하여 알림의 아이콘과 텍스트를 
+정의합니다. 이 {@link android.widget.RemoteViews} 객체를 
+{@link android.support.v4.app.NotificationCompat.Builder} 안에 넣으십시오. 
+{@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()}를 호출하면 됩니다. 배경 
+{@link android.graphics.drawable.Drawable}을 
+{@link android.widget.RemoteViews} 객체에서 설정하는 것은 삼가하십시오. 텍스트 색상을 읽을 수 없게 될 수도 있습니다.
+    </li>
+</ol>
+<p>
+    {@link android.widget.RemoteViews} 클래스에도 개발자가 손쉽게 사용할 수 있는 여러 가지 메서드가 포함되어 있습니다. 이를 이용해 
+{@link android.widget.Chronometer} 또는 {@link android.widget.ProgressBar}를 
+알림의 레이아웃에 추가하면 됩니다. 알림의 사용자 지정 레이아웃 생성에 관한 자세한 정보는
+{@link android.widget.RemoteViews} 참조 문서를 참조하십시오.
+</p>
+<p class="caution">
+    <strong>주의:</strong> 사용자 지정 레이아웃을 사용하는 경우, 
+사용자 지정 레이아웃이 다양한 기기 방향과 해상도에서 작동하는지 각별히 주의를 기울여 확인하십시오. 이 조언은 
+모든 보기 레이아웃에 공통적으로 적용되지만, 특히 알림에 중요한 의미를 지닙니다. 
+알림 창에서는 공간이 굉장히 제한되어 있기 때문입니다. 사용자 지정 레이아웃을 너무 복잡하게 만들지 마시고, 
+여러 가지 구성에서 테스트하는 것을 잊지 마십시오.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h4>사용자 지정 알림 텍스트에 스타일 리소스 사용</h4>
+<p>
+    사용자 지정 알림의 텍스트에는 항상 스타일 리소스를 사용하십시오. 알림의 배경 색상은 기기와 버전별로 다를 수 있습니다. 
+스타일 리소스를 사용하면 이러한 차이를 
+감안하는 데 도움이 됩니다. Android 2.3부터 시스템은 
+표준 알림 레이아웃 텍스트의 스타일을 정의했습니다. Android 2.3 이상을 대상으로 하는 
+애플리케이션에서와 같은 스타일을 사용하면 텍스트가 디스플레이 배경에서도 잘 보이도록 할 수 있습니다.
+</p>
diff --git a/docs/html-intl/intl/ko/guide/topics/ui/overview.jd b/docs/html-intl/intl/ko/guide/topics/ui/overview.jd
new file mode 100644
index 0000000..eb288f1
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/ui/overview.jd
@@ -0,0 +1,71 @@
+page.title=UI 개요
+@jd:body
+
+
+<p>Android 앱의 모든 사용자 인터페이스 요소는 {@link android.view.View}와
+{@link android.view.ViewGroup} 개체를 사용하여 구축합니다. {@link android.view.View}는 사용자가 상호 작용할 수 있는 무언가를 
+화면에 그리는 객체입니다. {@link android.view.ViewGroup}은 
+인터페이스 레이아웃을 정의하기 위해 다른 {@link android.view.View}(및{@link android.view.ViewGroup}) 객체를 
+보유하는 객체입니다.</p>
+
+<p>Android는 공통 입력 제어(버튼 및 텍스트 필드)와 다양한 레이아웃 모델(선형 또는 관계 레이아웃)을 제공하는 {@link android.view.View}와 {@link
+android.view.ViewGroup} 하위 클래스의
+컬렉션을 제공합니다.</p>
+
+
+<h2 id="Layout">사용자 인터페이스 레이아웃</h2>
+
+<p>앱의 각 구성 요소에 대한 사용자 인터페이스는 그림 1에서 나타난 바와 같이 {@link
+android.view.View}와 {@link android.view.ViewGroup} 객체의 계층으로 정의됩니다. 각 보기 그룹은 
+하위 보기를 체계화하는 투명한 컨테이너이고, 
+하위 보기는 UI의 일부분을 그리는 제어나 다른 위젯일 수 있습니다. 
+이 계층 트리는 개발자에게 필요한 만큼 단순하거나 복잡하게 
+만들 수 있습니다(다만 단순한 것이 성능에는 가장 좋습니다).</p>
+
+<img src="{@docRoot}images/viewgroup.png" alt="" />
+<p class="img-caption"><strong>그림 1.</strong> 보기 계층을 나타낸 것으로, 이것이 
+UI 레이아웃을 정의합니다.</p>
+
+<p>레이아웃을 선언하려면 코드의 {@link android.view.View} 객체를 인스턴트화하고 트리를 구축하기 시작하면 되지만, 
+레이아웃을 정의하는 가장 쉽고 효과적인 방법은 XML 파일을 사용하는 것입니다. 
+XML은 HTML과 유사한, 인간이 읽을 수 있는 레이아웃 구조를 제공합니다.</p>
+
+<p>보기의 XML 요소 이름은 해당 요소가 나타내는 각각의 Android 클래스를 따릅니다. 말하자면 
+<code>&lt;TextView&gt;</code> 요소가 UI에서 {@link android.widget.TextView} 위젯을 생성하고,
+<code>&lt;LinearLayout&gt;</code> 요소는 {@link android.widget.LinearLayout} 보기 
+그룹을 생성하는 것입니다. </p>
+
+<p>예를 들어, 텍스트 보기와 버튼 하나가 있는 단순한 수직 레이아웃은 이런 모습을 띱니다.</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="fill_parent" 
+              android:layout_height="fill_parent"
+              android:orientation="vertical" >
+    &lt;TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="I am a TextView" />
+    &lt;Button android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="I am a Button" />
+&lt;/LinearLayout>
+</pre>
+
+<p>앱에 레이아웃 리소스를 로드하면 Android가 레이아웃의 각 노드를 초기화하여 
+추가 동작을 정의하거나, 객체 상태를 쿼리 또는 레이아웃을 수정하는 데 쓸 수 있는 런타임 객체로 
+초기화합니다.</p>
+
+<p>UI 레이아웃 생성에 대한 완전한 가이드는 <a href="declaring-layout.html">XML 
+레이아웃</a>을 참조하십시오.
+
+  
+<h2 id="UIComponents">사용자 인터페이스 구성 요소</h2>
+
+<p>UI를 구축할 때 모두 {@link android.view.View} 및 {@link
+android.view.ViewGroup} 객체를 사용해야 하는 것은 아닙니다. Android가 표준형 UI 레이아웃을 제공하는 앱 구성 요소를 여러 개 제공하고 있으니, 
+개발자 여러분은 이에 대한 콘텐츠만 정의하면 됩니다. 이와 같은 UI 구성 요소에는 각각 
+고유한 API 세트가 있습니다. 이들은 <a href="{@docRoot}guide/topics/ui/actionbar.html">작업 모음</a>, <a href="{@docRoot}guide/topics/ui/dialogs.html">대화</a> 및 <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">상태 알림</a> 등 각각 다른 문서에서 설명하였습니다.</p>
+
+
diff --git a/docs/html-intl/intl/ko/guide/topics/ui/settings.jd b/docs/html-intl/intl/ko/guide/topics/ui/settings.jd
new file mode 100644
index 0000000..36204e0
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/ui/settings.jd
@@ -0,0 +1,1202 @@
+page.title=설정
+page.tags=preference,preferenceactivity,preferencefragment
+
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>이 문서의 내용</h2>
+<ol>
+  <li><a href="#Overview">개요</a>
+    <ol>
+      <li><a href="#SettingTypes">기본 설정</a></li>
+    </ol>
+  </li>
+  <li><a href="#DefiningPrefs">XML로 기본 설정 정의하기</a>
+    <ol>
+      <li><a href="#Groups">설정 그룹 만들기</a></li>
+      <li><a href="#Intents">인텐트 사용하기</a></li>
+    </ol>
+  </li>
+  <li><a href="#Activity">기본 설정 액티비티 만들기</a></li>
+  <li><a href="#Fragment">기본 설정 프래그먼트 사용하기</a></li>
+  <li><a href="#Defaults">설정 기본 값</a></li>
+  <li><a href="#PreferenceHeaders">기본 설정 헤더 사용하기</a>
+    <ol>
+      <li><a href="#CreateHeaders">헤더 파일 만들기</a></li>
+      <li><a href="#DisplayHeaders">헤더 표시하기</a></li>
+      <li><a href="#BackCompatHeaders">기본 설정 헤더로 이전 버전 지원하기</a></li>
+    </ol>
+  </li>
+  <li><a href="#ReadingPrefs">기본 설정 읽기</a>
+    <ol>
+      <li><a href="#Listening">기본 설정 변경 수신 대기</a></li>
+    </ol>
+  </li>
+  <li><a href="#NetworkUsage">네트워크 사용량 관리하기</a></li>
+  <li><a href="#Custom">사용자 지정 기본 설정 구축하기</a>
+    <ol>
+      <li><a href="#CustomSelected">사용자 인터페이스 지정하기</a></li>
+      <li><a href="#CustomSave">설정의 값 저장하기</a></li>
+      <li><a href="#CustomInitialize">현재 값 초기화하기</a></li>
+      <li><a href="#CustomDefault">기본 값 제공하기</a></li>
+      <li><a href="#CustomSaveState">기본 설정의 상태 저장 및 복원하기</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>Key 클래스</h2>
+<ol>
+  <li>{@link android.preference.Preference}</li>
+  <li>{@link android.preference.PreferenceActivity}</li>
+  <li>{@link android.preference.PreferenceFragment}</li>
+</ol>
+
+
+<h2>참고 항목</h2>
+<ol>
+  <li><a href="{@docRoot}design/patterns/settings.html">설정 디자인 가이드</a></li>
+</ol>
+</div>
+</div>
+
+
+
+
+<p>애플리케이션에는 종종 설정이 포함되어 있어 사용자가 앱 기능과 행동을 수정할 수 있게 해줍니다. 예를 들어 
+몇몇 앱은 사용자에게 알림을 활성화할지 여부를 지정하거나 애플리케이션이 
+클라우드와 데이터를 동기화할 빈도를 지정할 수 있게 해줍니다.</p>
+
+<p>자신의 앱에 설정을 제공하고자 하는 경우, Android의 
+{@link android.preference.Preference} API를 사용하여 다른 Android 앱(시스템 설정 포함)의 사용자 환경과 
+일관성을 유지하는 인터페이스를 구축할 수 있게 해야 합니다. 이 문서에서는 
+{@link android.preference.Preference} API를 사용하여 앱 설정을 구축하는 방법을 설명합니다.</p>
+
+<div class="note design">
+<p><strong>설정 디자인</strong></p>
+  <p>설정을 디자인하는 방법에 관련된 정보는 <a href="{@docRoot}design/patterns/settings.html">설정</a> 디자인 가이드를 읽어보십시오.</p>
+</div>
+
+
+<img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
+<p class="img-caption"><strong>그림 1.</strong> Android 메시지 앱의 설정에서 가져온 
+스크린샷입니다. {@link android.preference.Preference}가 정의한 항목을 선택하면 
+인터페이스가 열려 설정을 변경할 수 있게 됩니다.</p>
+
+
+
+
+<h2 id="Overview">개요</h2>
+
+<p>사용자 인터페이스를 구축할 때에는 {@link android.view.View} 객체를 사용하지만, 설정은 그 대신 
+{@link android.preference.Preference} 클래스의 다양한 하위 클래스를 사용하여 구축합니다. 
+이와 같은 하위 클래스는 XML 파일에서 선언합니다.</p>
+
+<p>{@link android.preference.Preference} 객체는 하나의 설정을 이루는 기본 
+단위입니다. 각각의 {@link android.preference.Preference}는 목록의 항목으로 
+나타나며 사용자가 설정을 수정하기에 적절한 UI를 제공합니다. 예를 들어 {@link
+android.preference.CheckBoxPreference}는 확인란을 표시하는 목록 항목을 만들고, {@link
+android.preference.ListPreference}는 선택 목록이 있는 대화를 여는 항목을 만듭니다.</p>
+
+<p>각각의 {@link android.preference.Preference}를 추가할 때마다 상응하는 키-값 쌍이 있어 
+시스템이 이를 사용하여 해당 설정을 앱의 설정에 대한 기본 {@link android.content.SharedPreferences}
+파일에 저장합니다. 사용자가 설정을 변경하면 시스템이 
+{@link android.content.SharedPreferences} 파일에 있는 상응하는 값을 개발자 대신 업데이트합니다. 개발자가 직접 
+연관된 {@link android.content.SharedPreferences} 파일과 상호 작용을 해야 하는 경우는 
+사용자의 설정을 기반으로 앱의 동작을 결정하기 위해 값을 읽어야 할 때뿐입니다.</p>
+
+<p>각 설정에 대하여 {@link android.content.SharedPreferences}에 저장된 값은 다음과 같은 
+데이터 유형 중 한 가지를 취할 수 있습니다.</p>
+
+<ul>
+  <li>Boolean</li>
+  <li>Float</li>
+  <li>Int</li>
+  <li>Long</li>
+  <li>String</li>
+  <li>String {@link java.util.Set}</li>
+</ul>
+
+<p>앱의 설정 UI는 
+{@link android.view.View} 객체 대신 
+{@link android.preference.Preference} 객체를 사용하여 구축되기 때문에, 목록 설정을 표시하려면 특수 {@link android.app.Activity} 또는 
+{@link android.app.Fragment} 하위 클래스를 사용해야 합니다.</p>
+
+<ul>
+  <li>앱이 Android 3.0 이전 버전(API 레벨 10 이하)을 지원하는 경우, 액티비티를 구축할 때 
+{@link android.preference.PreferenceActivity} 클래스의 확장으로 구축해야 합니다.</li>
+  <li>Android 3.0 이후의 경우에는 대신 기존의 {@link android.app.Activity}를 
+사용해야 합니다. 이것은 앱 설정을 표시하는 {@link android.preference.PreferenceFragment}를 호스팅합니다. 
+하지만, 여러 개의 설정 그룹이 있는 경우 {@link android.preference.PreferenceActivity}를 사용하여 
+대형 화면에 맞는 창 두 개짜리 레이아웃을 만들 수도 있습니다.</li>
+</ul>
+
+<p>{@link android.preference.PreferenceActivity}와 {@link
+android.preference.PreferenceFragment}의 인스턴스를 설정하는 방법은 <a href="#Activity">기본 설정 액티비티 만들기</a>와 <a href="#Fragment">기본 설정 
+프래그먼트 사용하기</a>에 관련된 섹션에서 논합니다.</p>
+
+
+<h3 id="SettingTypes">기본 설정</h3>
+
+<p>앱에 대한 설정은 모두 {@link
+android.preference.Preference} 클래스의 특정 하위 클래스로 표현됩니다. 각 하위 클래스에 핵심 속성이 한 세트씩 포함되어 있어 
+설정의 제목과 기본 값 등과 같은 것을 지정할 수 있게 해줍니다. 각 하위 클래스는 또한 자신만의 
+특수 속성과 사용자 인터페이스도 제공합니다. 예를 들어, 그림 1에서는 메시지 앱의 설정에서 
+가져온 스크린샷을 나타낸 것입니다. 설정 화면에 있는 각 목록 항목은 각기 서로 다른 {@link
+android.preference.Preference} 객체로 지원됩니다.</p>
+
+<p>가장 보편적인 기본 설정을 몇 가지만 소개하면 다음과 같습니다.</p>
+
+<dl>
+  <dt>{@link android.preference.CheckBoxPreference}</dt>
+  <dd>활성화되었거나 비활성화된 설정에 대한 확인란이 있는 항목을 표시합니다. 저장된 값은 
+부울입니다(확인란이 선택된 경우 <code>true</code>).</dd>
+
+  <dt>{@link android.preference.ListPreference}</dt>
+  <dd>무선 버튼 목록이 있는 대화를 엽니다. 저장된 값은 
+지원되는 값 유형(위에 목록으로 나열) 중 어느 것이라도 될 수 있습니다.</dd>
+
+  <dt>{@link android.preference.EditTextPreference}</dt>
+  <dd>{@link android.widget.EditText} 위젯이 있는 대화를 엽니다. 저장된 값은 {@link
+java.lang.String}입니다.</dd>
+</dl>
+
+<p>다른 모든 하위 클래스와 이에 상응하는 속성의 목록을 보려면 {@link android.preference.Preference}
+ 클래스를 참조하십시오.</p>
+
+<p>물론 기본 제공 클래스만으로는 필요한 것을 모두 충족할 수 없고 앱에 무언가 좀 더 특수한 것이 
+필요할 수도 있습니다. 예를 들어 플랫폼은 현재 숫자나 날짜를 선택할 수 있는 {@link
+android.preference.Preference} 클래스를 제공하지 않습니다. 따라서 개발자 나름대로 
+{@link android.preference.Preference} 하위 클래스를 정의해야 할 수도 있습니다. 이 작업을 수행하는 데 유용한 내용인 <a href="#Custom">사용자 지정 기본 설정 구축하기</a>에 관한 섹션을 참조하십시오.</p>
+
+
+
+<h2 id="DefiningPrefs">XML로 기본 설정 정의하기</h2>
+
+<p>새로운 {@link android.preference.Preference} 객체를 런타임에 인스턴트화하는 것도 가능하지만, 
+설정 목록을 정의할 때에는 {@link android.preference.Preference}
+객체의 계층과 함께 XML을 사용해야 합니다. 설정 컬렉션을 정의하는 데 XM 파일을 사용하는 것이 선호되는 이유는 이 파일이 
+읽기 쉬운 구조를 제공하여 업데이트가 단순하기 때문입니다. 또한, 앱의 설정은 보통 
+미리 정의되어 있습니다. 다만 개발자도 여전히 런타임에 설정 컬렉션을 수정할 수 있습니다.</p>
+
+<p>각 {@link android.preference.Preference} 하위 클래스는 클래스 이름에 일치하는 XML 요소로 
+선언하면 됩니다. 예를 들면 {@code &lt;CheckBoxPreference&gt;}가 이에 해당됩니다.</p>
+
+<p>이 XML 파일은 반드시 {@code res/xml/} 디렉터리에 저장해야 합니다. 파일의 이름은 무엇이든 원하는 대로 지정할 수 있지만, 
+일반적으로는 {@code preferences.xml}이라고 명명합니다. 파일은 하나만 필요한 것이 보통입니다. 
+왜냐하면 계층에 있는 분기(자신만의 설정 목록을 엶)는 
+{@link android.preference.PreferenceScreen}의 중첩된 인스턴스를 사용하여 선언되기 때문입니다.</p>
+
+<p class="note"><strong>참고:</strong> 설정에 다중 창 레이아웃을 만들고자 하는 경우, 
+각 프래그먼트에 대해 별도의 XML 파일이 필요합니다.</p>
+
+<p>XML 파일의 루트 노드는 반드시 {@link android.preference.PreferenceScreen
+&lt;PreferenceScreen&gt;} 요소여야 합니다. 바로 이 요소 내에 각 {@link
+android.preference.Preference}를 추가하는 것입니다. 
+{@link android.preference.PreferenceScreen &lt;PreferenceScreen&gt;} 요소 내에 추가하는 각 하위는 설정 목록에서 
+각기 항목 하나씩으로 나타납니다.</p>
+
+<p>예:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;CheckBoxPreference
+        android:key="pref_sync"
+        android:title="@string/pref_sync"
+        android:summary="@string/pref_sync_summ"
+        android:defaultValue="true" />
+    &lt;ListPreference
+        android:dependency="pref_sync"
+        android:key="pref_syncConnectionType"
+        android:title="@string/pref_syncConnectionType"
+        android:dialogTitle="@string/pref_syncConnectionType"
+        android:entries="@array/pref_syncConnectionTypes_entries"
+        android:entryValues="@array/pref_syncConnectionTypes_values"
+        android:defaultValue="@string/pref_syncConnectionTypes_default" />
+&lt;/PreferenceScreen>
+</pre>
+
+<p>이 예시에서는 {@link android.preference.CheckBoxPreference}와 {@link
+android.preference.ListPreference}가 하나씩 있습니다. 두 항목 모두 다음과 같은 세 가지 속성을 포함하고 있습니다.</p>
+
+<dl>
+  <dt>{@code android:key}</dt>
+  <dd>이 속성은 데이터 값을 유지하는 기본 설정에 필수입니다. 이것은 고유키(문자)를 
+나타내며, 시스템이 이것을 사용하여 이 설정의 값을 {@link
+android.content.SharedPreferences}에 저장합니다. 
+  <p>이 속성이 <em>필요하지 않은</em> 인스턴스는 기본 설정이 
+{@link android.preference.PreferenceCategory} 또는 {@link android.preference.PreferenceScreen}인 경우, 또는 
+기본 설정이 {@link android.content.Intent}를 호출할 것을 나타내거나(<a href="#Intents">{@code &lt;intent&gt;}</a> 요소로) {@link android.app.Fragment}를 표시하도록 지정하는 경우(<a href="{@docRoot}reference/android/preference/Preference.html#attr_android:fragment">{@code
+android:fragment}</a> 속성으로)뿐입니다.</p>
+  </dd>
+  <dt>{@code android:title}</dt>
+  <dd>이것은 설정에 대하여 사용자가 볼 수 있는 이름을 제공합니다.</dd>
+  <dt>{@code android:defaultValue}</dt>
+  <dd>이것은 시스템이 {@link
+android.content.SharedPreferences} 파일에 설정해야 하는 초기 값을 나타냅니다. 모든 설정에 기본 값을 제공해야 
+합니다.</dd>
+</dl>
+
+<p>다른 모든 지원되는 속성에 대해서는 {@link
+android.preference.Preference}(및 각각의 하위 클래스) 관련 문서를 참조하십시오.</p>
+
+
+<div class="figure" style="width:300px">
+  <img src="{@docRoot}images/ui/settings/settings-titles.png" alt="" />
+  <p class="img-caption"><strong>그림 2.</strong> 제목이 있는 설정
+카테고리입니다. <br/><b>1.</b> 카테고리는 {@link
+android.preference.PreferenceCategory &lt;PreferenceCategory&gt;} 요소가 지정합니다. <br/><b>2.</b> 제목은 
+{@code android:title} 속성으로 지정합니다.</p>
+</div>
+
+
+<p>설정 목록이 약 10개 항목을 초과하면 제목을 추가하여 
+설정 그룹을 정의하거나, 해당 그룹을 별도의 
+화면에 표시하는 것이 좋을 수도 있습니다. 이러한 옵션은 다음 섹션에 설명되어 있습니다.</p>
+
+
+<h3 id="Groups">설정 그룹 만들기</h3>
+
+<p>10개 이상의 설정 목록을 제시하는 경우, 사용자가 
+이들을 둘러보고 이해하며 처리하는 데 어려움을 겪을 수 있습니다. 이 문제를 해결하려면 
+설정의 일부 또는 모두를 그룹으로 나누어 사실상 하나의 긴 목록을 여러 개의 더 짧은 목록으로 
+바꿔주면 됩니다. 관련된 설정 그룹 하나를 나타낼 때에는 다음과 같은 두 가지 방식 중 하나를 택하면 됩니다.</p>
+
+<ul>
+  <li><a href="#Titles">제목 사용하기</a></li>
+  <li><a href="#Subscreens">보조 화면 사용하기</a></li>
+</ul>
+
+<p>이와 같은 그룹화 기법 중 하나 또는 둘 모두를 사용하여 앱의 설정을 조직화할 수 있습니다. 어느 것을 
+사용할지, 설정을 어떻게 나눌지 결정할 때에는 Android 
+디자인의 <a href="{@docRoot}design/patterns/settings.html">설정</a> 가이드에 있는 지침을 따라야 합니다.</p>
+
+
+<h4 id="Titles">제목 사용하기</h4>
+
+<p>여러 개의 설정 그룹 사이에 구분선과 제목을 제공하고자 하는 경우(그림 2에 표시된 것과 같이), 
+각 {@link android.preference.Preference} 객체 그룹을 {@link
+android.preference.PreferenceCategory} 내부에 배치합니다.</p>
+
+<p>예:</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;PreferenceCategory 
+        android:title="&#64;string/pref_sms_storage_title"
+        android:key="pref_key_storage_settings">
+        &lt;CheckBoxPreference
+            android:key="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_auto_delete"
+            android:title="&#64;string/pref_title_auto_delete"
+            android:defaultValue="false"... />
+        &lt;Preference 
+            android:key="pref_key_sms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_sms_delete"... />
+        &lt;Preference 
+            android:key="pref_key_mms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_mms_delete" ... />
+    &lt;/PreferenceCategory>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h4 id="Subscreens">보조 화면 사용하기</h4>
+
+<p>설정 그룹 여러 개를 보조 화면에 배치하고자 하는 경우(그림 3에 표시된 것과 같이), 해당 
+{@link android.preference.Preference} 객체 그룹을 {@link
+android.preference.PreferenceScreen} 안에 배치합니다.</p>
+
+<img src="{@docRoot}images/ui/settings/settings-subscreen.png" alt="" />
+<p class="img-caption"><strong>그림 3.</strong> 설정 보조 화면입니다. {@code
+&lt;PreferenceScreen&gt;} 요소가 
+항목을 만들며, 이 항목이 선택되면 별도의 목록이 열려 중첩된 설정을 표시합니다.</p>
+
+<p>예:</p>
+
+<pre>
+&lt;PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;!-- opens a subscreen of settings -->
+    &lt;PreferenceScreen
+        android:key="button_voicemail_category_key"
+        android:title="&#64;string/voicemail"
+        android:persistent="false">
+        &lt;ListPreference
+            android:key="button_voicemail_provider_key"
+            android:title="&#64;string/voicemail_provider" ... />
+        &lt;!-- opens another nested subscreen -->
+        &lt;PreferenceScreen
+            android:key="button_voicemail_setting_key"
+            android:title="&#64;string/voicemail_settings"
+            android:persistent="false">
+            ...
+        &lt;/PreferenceScreen>
+        &lt;RingtonePreference
+            android:key="button_voicemail_ringtone_key"
+            android:title="&#64;string/voicemail_ringtone_title"
+            android:ringtoneType="notification" ... />
+        ...
+    &lt;/PreferenceScreen>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h3 id="Intents">인텐트 사용하기</h3>
+
+<p>어떤 경우에는 기본 설정 항목을 사용하여 설정 화면 대신 여러 가지 액티비티를 
+열고자 할 수도 있습니다. 예를 들어 웹 브라우저를 열어 웹 페이지를 보는 것이 이에 해당됩니다. 사용자가 기본 설정 항목을 선택할 때 {@link
+android.content.Intent}를 호출하도록 하려면, {@code &lt;intent&gt;}
+요소를 상응하는 {@code &lt;Preference&gt;} 요소의 하위로 추가하면 됩니다.</p>
+
+<p>예를 들어 다음은 기본 설정 항목을 사용하여 웹 페이지를 열도록 하는 방법입니다.</p>
+
+<pre>
+&lt;Preference android:title="@string/prefs_web_page" >
+    &lt;intent android:action="android.intent.action.VIEW"
+            android:data="http://www.example.com" />
+&lt;/Preference>
+</pre>
+
+<p>다음 속성을 사용하여 명시적 인텐트와 암시적 인텐트 두 가지를 모두 만들 수 있습니다.</p>
+
+<dl>
+  <dt>{@code android:action}</dt>
+    <dd>할당할 작업이며, {@link android.content.Intent#setAction setAction()}
+메서드를 따릅니다.</dd>
+  <dt>{@code android:data}</dt>
+    <dd>할당할 데이터이며, {@link android.content.Intent#setData setData()} 메서드를 따릅니다.</dd>
+  <dt>{@code android:mimeType}</dt>
+    <dd>할당할 MIME 유형이며, {@link android.content.Intent#setType setType()}
+메서드를 따릅니다.</dd>
+  <dt>{@code android:targetClass}</dt>
+    <dd>구성 요소 이름의 클래스 부분이며, {@link android.content.Intent#setComponent
+setComponent()} 메서드를 따릅니다.</dd>
+  <dt>{@code android:targetPackage}</dt>
+    <dd>구성 요소 이름의 패키지 부분이며, {@link
+android.content.Intent#setComponent setComponent()} 메서드를 따릅니다.</dd>
+</dl>
+
+
+
+<h2 id="Activity">기본 설정 액티비티 만들기</h2>
+
+<p>설정을 액티비티에서 표시하려면 {@link
+android.preference.PreferenceActivity} 클래스를 확장하면 됩니다. 이것은 일반적인 {@link
+android.app.Activity} 클래스 확장의 일종입니다. 이는 {@link
+android.preference.Preference} 객체의 계층에 기반한 설정 목록을 표시합니다. {@link android.preference.PreferenceActivity}는 
+사용자가 변경 작업을 하면 각 {@link
+android.preference.Preference}와 연관된 설정을 유지합니다.</p>
+
+<p class="note"><strong>참고:</strong> Android 3.0 이상에 맞춰 애플리케이션을 개발하는 경우, 
+대신 {@link android.preference.PreferenceFragment}를 사용해야 합니다. 다음 섹션의 
+<a href="#Fragment">기본 설정 프래그먼트 사용하기</a> 관련 내용을 참조하십시오.</p>
+
+<p>여기서 기억해야 할 가장 중요한 점은 {@link
+android.preference.PreferenceActivity#onCreate onCreate()} 콜백 중에 보기 레이아웃을 로딩해서는 안 된다는 것입니다. 그 대신 {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}를 호출하여 
+XML 파일에서 선언한 기본 설정을 액티비티에 추가합니다. 예를 들어 다음은 기능적인 
+{@link android.preference.PreferenceActivity}에 필요한 가장 최소한의 코드를 나타낸 것입니다.</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.preferences);
+    }
+}
+</pre>
+
+<p>사실 이 코드만으로 몇몇 앱에는 충분합니다. 사용자가 기본 설정을 수정하자마자 
+시스템이 해당 변경을 기본 {@link android.content.SharedPreferences} 파일에 저장하여, 
+사용자의 설정을 확인해야 할 때 다른 애플리케이션 구성 요소가 이를 읽을 수 있도록 하기 때문입니다. 하지만 
+대다수의 앱은 기본 설정에 일어나는 변경을 수신 대기하기 위해 약간의 코드가 더 필요합니다.
+{@link android.content.SharedPreferences} 파일에 일어나는 변경을 수신 대기하는 데 관한 
+자세한 정보는 <a href="#ReadingPrefs">기본 설정 읽기</a>에 관한 섹션을 참조하십시오.</p>
+
+
+
+
+<h2 id="Fragment">기본 설정 프래그먼트 사용하기</h2>
+
+<p>Android 3.0(API 레벨 11) 이상에 맞춰 개발하는 경우, {@link
+android.preference.PreferenceFragment}를 사용하여 {@link android.preference.Preference}
+객체 목록을 표시해야 합니다. {@link android.preference.PreferenceFragment}는 모든 액티비티에 추가할 수 있습니다. 즉, 
+{@link android.preference.PreferenceActivity}를 사용하지 않아도 됩니다.</p>
+
+<p><a href="{@docRoot}guide/components/fragments.html">프래그먼트</a>는 액티비티만 
+사용하는 것에 비해 애플리케이션에 보다 유연한 아키텍처를 제공하며, 이는 구축하는 
+액티비티의 종류와 무관하게 적용됩니다. 따라서 설정 표시를 제어하는 데에는 {@link
+android.preference.PreferenceFragment}를 {@link
+android.preference.PreferenceActivity} 대신 사용하는 방안을 권장합니다(가능한 경우).</p>
+
+<p>{@link android.preference.PreferenceFragment} 구현은 매우 간단합니다.
+{@link android.preference.PreferenceFragment#onCreate onCreate()} 메서드를 정의하여 기본 설정 파일을 
+{@link android.preference.PreferenceFragment#addPreferencesFromResource
+addPreferencesFromResource()}로 로딩하도록 하기만 하면 됩니다. 예:</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Load the preferences from an XML resource
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+}
+</pre>
+
+<p>그런 다음 이 프래그먼트를 {@link android.app.Activity}에 추가하기만 하면 되고, 이는 다른 모든 
+{@link android.app.Fragment}에서와 마찬가지입니다. 예:</p>
+
+<pre>
+public class SettingsActivity extends Activity {
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Display the fragment as the main content.
+        getFragmentManager().beginTransaction()
+                .replace(android.R.id.content, new SettingsFragment())
+                .commit();
+    }
+}
+</pre>
+
+<p class="note"><strong>참고:</strong> {@link android.preference.PreferenceFragment}에는 자신만의 
+{@link android.content.Context} 객체가 없습니다. {@link android.content.Context}
+객체가 필요한 경우, {@link android.app.Fragment#getActivity()}를 호출하면 됩니다. 하지만, 
+{@link android.app.Fragment#getActivity()}를 호출하는 것은 프래그먼트가 액티비티에 첨부되어 있는 경우만으로 국한시켜야 한다는 점을 유의하십시오. 프래그먼트가 
+아직 첨부되지 않았거나 수명 주기가 끝날 무렵 분리된 경우, {@link
+android.app.Fragment#getActivity()}가 null을 반환합니다.</p>
+
+
+<h2 id="Defaults">설정 기본 값</h2>
+
+<p>여러분이 만드는 기본 설정은 애플리케이션에 중요한 동작을 정의하는 경우가 많을 것입니다. 따라서 
+연관된 {@link android.content.SharedPreferences} 파일을 
+각 {@link android.preference.Preference}에 대한 기본 값으로 초기화하여 사용자가 애플리케이션을 처음 열 때 
+적용하는 것이 중요합니다.</p>
+
+<p>가장 먼저 해야 할 일은 XML 파일 내의 각 {@link
+android.preference.Preference}
+객체에 대해 기본 값을 지정하는 것입니다. 이때 {@code android:defaultValue} 속성을 사용합니다. 이 값은 상응하는 
+{@link android.preference.Preference} 객체에 대해 적절한 어느 데이터 유형이라도 될 수 있습니다. 예:
+</p>
+
+<pre>
+&lt;!-- default value is a boolean -->
+&lt;CheckBoxPreference
+    android:defaultValue="true"
+    ... />
+
+&lt;!-- default value is a string -->
+&lt;ListPreference
+    android:defaultValue="@string/pref_syncConnectionTypes_default"
+    ... />
+</pre>
+
+<p>그런 다음, 애플리케이션의 기본 액티비티에 있는 {@link android.app.Activity#onCreate onCreate()} 
+메서드로부터&mdash;또한 사용자가 애플리케이션에 처음으로 들어올 통로가 될 수 있는 
+다른 모든 액티비티도 포함&mdash;{@link android.preference.PreferenceManager#setDefaultValues
+setDefaultValues()}를 호출합니다.</p>
+
+<pre>
+PreferenceManager.setDefaultValues(this, R.xml.advanced_preferences, false);
+</pre>
+
+<p>이것을 {@link android.app.Activity#onCreate onCreate()} 중에 호출하면 
+애플리케이션이 기본 설정으로 적절히 초기화되도록 보장할 수 있습니다. 이것은 애플리케이션이 
+몇 가지 동작을 결정하기 위해 읽어야 할 수도 있습니다(예를 들어 셀룰러 네트워크에서 데이터를 
+다운로드할지 여부 등).</p>
+
+<p>이 메서드는 다음과 같은 세 개의 인수를 취합니다.</p>
+<ul>
+  <li>애플리케이션 {@link android.content.Context}.</li>
+  <li>기본 값을 설정하고자 하는 기본 설정 XML 파일에 대한 리소스 ID입니다.</li>
+  <li>기본 값을 한 번 이상 설정해야 하는지 여부를 나타내는 부울 값입니다.
+<p><code>false</code>인 경우, 시스템은 이 메서드가 전에 한 번도 호출된 적이 없을 경우에만 
+기본 값을 설정합니다(아니면 기본 값을 공유한 기본 설정 파일에 있는 {@link android.preference.PreferenceManager#KEY_HAS_SET_DEFAULT_VALUES}
+가 안전합니다).</p></li>
+</ul>
+
+<p>세 번째 인수를 <code>false</code>로 설정해 두는 한 이 메서드를 액티비티가 시작될 때마다 
+안전하게 호출할 수 있으며, 그렇게 해도 사용자의 저장된 기본 설정을 기본값으로 초기화하여 
+재정의하지 않습니다. 하지만 이를 <code>true</code>로 설정하면, 이전의 모든 값을 
+기본 값으로 재정의하게 됩니다.</p>
+
+
+
+<h2 id="PreferenceHeaders">기본 설정 헤더 사용하기</h2>
+
+<p>드문 경우지만 설정을 디자인할 때 첫 화면에는 
+<a href="#Subscreens">보조 화면</a> 목록만 표시하도록 하고자 할 수도 있습니다(예: 시스템 설정 앱, 
+그림 4와 5 참조). 그러한 디자인을 Android 3.0 이상을 대상으로 개발하는 경우, Android 3.0에 있는 
+새로운 "헤더" 기능을 사용해야 합니다. 이것이 중첩된 
+{@link android.preference.PreferenceScreen} 요소를 사용하여 보조 화면을 구축하는 방안을 대신합니다.</p>
+
+<p>헤더를 사용하여 설정을 구축하려면 다음과 같이 해야 합니다.</p>
+<ol>
+  <li>각 설정 그룹을 별개의 {@link
+android.preference.PreferenceFragment} 인스턴스로 구분합니다. 다시 말해, 설정 그룹마다 별도의 XML 파일이 하나씩 있어야 한다는 
+뜻입니다.</li>
+  <li>각 설정 그룹을 목록으로 나열하는 XML 헤더 파일을 생성하고 어느 프래그먼트에 
+상응하는 설정 목록이 들어있는지 선언합니다.</li>
+  <li>{@link android.preference.PreferenceActivity} 클래스를 확장하여 설정을 호스팅하도록 합니다.</li>
+  <li>{@link
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} 콜백을 구현하여 헤더 파일을 
+나타냅니다.</li>
+</ol>
+
+<p>이 디자인을 사용하는 데 있어 커다란 이점은 {@link android.preference.PreferenceActivity}가 
+(앱이) 대형 화면에서 실행될 때 그림 4에서 나타낸 것과 같이 창 두 개짜리 레이아웃을 자동으로 표시한다는 것입니다.</p>
+
+<p>애플리케이션이 Android 3.0 이전 버전을 지원한다 하더라도 애플리케이션이 
+{@link android.preference.PreferenceFragment}를 사용하여 
+신형 기기에서 창 두 개짜리 표시를 지원하도록 하면서도 구형 기기에서는 일반적인 다중 화면 계층을 
+여전히 지원하도록 할 수도 있습니다(<a href="#BackCompatHeaders">기본 설정 헤더로 
+이전 버전 지원하기</a>를 참조하십시오).</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-tablet.png" alt="" />
+<p class="img-caption"><strong>그림 4.</strong> 헤더가 있는 창 두 개짜리 레이아웃입니다. <br/><b>1.</b> 헤더는 
+XML 헤더 파일로 정의됩니다. <br/><b>2.</b> 각 설정 그룹은 
+{@link android.preference.PreferenceFragment}가 정의하며, 이는 헤더 파일에 있는 {@code &lt;header&gt;} 요소가 
+지정합니다.</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-handset.png" alt="" />
+<p class="img-caption"><strong>그림 5.</strong> 설정 헤더가 있는 핸드셋 기기입니다. 항목을 선택하면 
+연관된 {@link android.preference.PreferenceFragment}가 헤더를 
+대체합니다.</p>
+
+
+<h3 id="CreateHeaders" style="clear:left">헤더 파일 만들기</h3>
+
+<p>헤더 목록에 있는 각 설정 그룹은 루트 {@code &lt;preference-headers&gt;} 
+요소 안에 있는 {@code &lt;header&gt;} 요소 하나로 나타냅니다. 예:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;!-- key/value pairs can be included as arguments for the fragment. -->
+        &lt;extra android:name="someKey" android:value="someHeaderValue" />
+    &lt;/header>
+&lt;/preference-headers>
+</pre>
+
+<p>각 헤더는 {@code android:fragment} 속성으로 {@link
+android.preference.PreferenceFragment} 예를 선언하며 이는 사용자가 헤더를 선택하면 열려야 합니다.</p>
+
+<p>{@code &lt;extras&gt;} 요소를 사용하면 키-값 쌍을 {@link
+android.os.Bundle} 내의 프래그먼트에 전달할 수 있게 해줍니다. 이 프래그먼트가 인수를 검색하려면 {@link
+android.app.Fragment#getArguments()}를 호출하면 됩니다. 인수를 프래그먼트에 전달하는 데에는 여러 가지 이유가 있을 수 있지만, 
+한 가지 중요한 이유를 예로 들면 각 그룹에 대해 {@link
+android.preference.PreferenceFragment}의 같은 하위 클래스를 재사용하고, 이 인수를 사용하여 해당 프래그먼트가 로딩해야 하는 
+기본 설정 XML 파일이 무엇인지 나타낼 수 있다는 점입니다.</p>
+
+<p>예를 들어 다음은 여러 가지 설정 그룹에 재사용할 수 있는 프래그먼트입니다. 이것은 
+각 헤더가 {@code "settings"} 키로 {@code &lt;extra&gt;} 인수를 정의하는 경우를 나타낸 것입니다.</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        String settings = getArguments().getString("settings");
+        if ("notifications".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_wifi);
+        } else if ("sync".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_sync);
+        }
+    }
+}
+</pre>
+
+
+
+<h3 id="DisplayHeaders">헤더 표시하기</h3>
+
+<p>기본 설정 헤더를 표시하려면 {@link
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} 콜백 메서드를 구현하고 
+{@link android.preference.PreferenceActivity#loadHeadersFromResource
+loadHeadersFromResource()}를 호출해야 합니다. 예:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onBuildHeaders(List&lt;Header> target) {
+        loadHeadersFromResource(R.xml.preference_headers, target);
+    }
+}
+</pre>
+
+<p>사용자가 헤더 목록에서 항목을 하나 선택하면 시스템이 연관된 {@link
+android.preference.PreferenceFragment}를 엽니다.</p>
+
+<p class="note"><strong>참고:</strong> 기본 설정 헤더를 사용하는 경우, {@link
+android.preference.PreferenceActivity}의 하위 클래스가 {@link
+android.preference.PreferenceActivity#onCreate onCreate()} 메서드를 구현하지 않아도 됩니다. 액티비티에 대한 필수 작업은 
+헤더를 로딩하는 것뿐이기 때문입니다.</p>
+
+
+<h3 id="BackCompatHeaders">기본 설정 헤더로 이전 버전 지원하기</h3>
+
+<p>애플리케이션이 Android 3.0 이전 버전을 지원하는 경우에도 여전히 헤더를 사용하여 
+Android 3.0 이상에서 창 두 개짜리 레이아웃을 제공하도록 할 수 있습니다. 개발자가 해야 할 일은 추가로 기본 설정 XML 파일을 
+생성하는 것뿐입니다. 이 파일은 마치 헤더 항목처럼 동작하는 기본적인 {@link android.preference.Preference
+&lt;Preference&gt;} 요소를 사용합니다(이것을 이전 Android 버전이 사용하도록 
+할 예정).</p>
+
+<p>하지만 새로운 {@link android.preference.PreferenceScreen}을 여는 대신 각 {@link
+android.preference.Preference &lt;Preference&gt;} 요소가 {@link android.content.Intent}를 하나씩 
+{@link android.preference.PreferenceActivity}에 전송합니다. 이것이 로딩할 XML 파일이 무엇인지를 
+나타냅니다.</p>
+
+<p>예를 들어 다음은 Android 3.0 이상에서 사용되는 기본 설정 헤더에 대한 
+XML 파일입니다({@code res/xml/preference_headers.xml}).</p> 
+
+<pre>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" />
+&lt;/preference-headers>
+</pre>
+
+<p>그리고 다음은, Android 3.0 이전 버전에 같은 헤더를 제공하는 기본 설정 
+파일입니다({@code res/xml/preference_headers_legacy.xml}).</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;Preference 
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one"  >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_ONE" />
+    &lt;/Preference>
+    &lt;Preference 
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_TWO" />
+    &lt;/Preference>
+&lt;/PreferenceScreen>
+</pre>
+
+<p>{@code &lt;preference-headers&gt;}에 대한 지원이 Android 3.0에서 추가되었기 때문에 시스템이 
+{@link android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()}를 {@link
+android.preference.PreferenceActivity}에서 호출하는 것은 Android 3.0 이상에서 실행될 때뿐입니다. "레거시" 헤더 파일을 
+로딩하려면({@code preference_headers_legacy.xml}) 반드시 Android 
+버전을 확인해야 하며, 해당 버전이 Android 3.0 이전인 경우({@link
+android.os.Build.VERSION_CODES#HONEYCOMB}), {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}를 호출하여 
+레거시 헤더 파일을 로딩해야 합니다. 예:</p>
+
+<pre>
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    ...
+
+    if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+
+// Called only on Honeycomb and later
+&#64;Override
+public void onBuildHeaders(List&lt;Header> target) {
+   loadHeadersFromResource(R.xml.preference_headers, target);
+}
+</pre>
+
+<p>이제 남은 할 일이라고는 {@link android.content.Intent}를 처리하는 것뿐입니다. 이것은 
+액티비티로 전달되어 어느 기본 설정 파일을 로딩해야 하는지 식별하는 데 쓰입니다. 그럼 이제 인텐트의 작업을 검색하여 기본 설정 XML의 
+{@code &lt;intent&gt;} 태그에서 사용한 알려진 작업 문자열에 비교해보겠습니다.</p>
+
+<pre>
+final static String ACTION_PREFS_ONE = "com.example.prefs.PREFS_ONE";
+...
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+
+    String action = getIntent().getAction();
+    if (action != null &amp;&amp; action.equals(ACTION_PREFS_ONE)) {
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+
+    else if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+</pre>
+
+<p>{@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}를 연이어 호출하면 
+모든 기본 설정을 하나의 목록에 쌓게 된다는 점을 유의하십시오. 따라서 이것은 'Else-if' 문이 있는 조건을 변경하여 딱 한 번만 
+호출하도록 주의해야 합니다.</p>
+
+
+
+
+
+<h2 id="ReadingPrefs">기본 설정 읽기</h2>
+
+<p>기본적으로 앱의 기본 설정은 모두 
+애플리케이션 내의 어디서든 정적 메서드 {@link
+android.preference.PreferenceManager#getDefaultSharedPreferences
+PreferenceManager.getDefaultSharedPreferences()}를 호출하면 액세스할 수 있는 파일에 저장됩니다. 이것은 {@link
+android.content.SharedPreferences} 객체를 반환하며, 여기에 {@link
+android.preference.PreferenceActivity}에서 사용한 {@link android.preference.Preference} 객체와 
+연관된 모든 키-값 쌍이 들어있습니다.</p>
+
+<p>예를 들어 다음은 기본 설정 값 중 하나를 애플리케이션 내의 다른 모든 액티비티에서 읽는 방법을 
+나타낸 것입니다.</p>
+
+<pre>
+SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
+String syncConnPref = sharedPref.getString(SettingsActivity.KEY_PREF_SYNC_CONN, "");
+</pre>
+
+
+
+<h3 id="Listening">기본 설정 변경 수신 대기</h3>
+
+<p>사용자가 기본 설정 중 하나를 변경하자마자 이에 대해 알림을 받는 것이 좋은 데에는 몇 가지 
+이유가 있습니다. 기본 설정 중 어느 하나에라도 변경이 발생했을 때 콜백을 받으려면, 
+{@link android.content.SharedPreferences.OnSharedPreferenceChangeListener
+SharedPreference.OnSharedPreferenceChangeListener} 인터페이스를 구현하고 
+{@link android.content.SharedPreferences} 객체에 대한 수신기를 등록합니다. 이때 {@link
+android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
+registerOnSharedPreferenceChangeListener()}를 호출하면 됩니다.</p>
+
+<p>이 인터페이스에는 콜백 메서드가 {@link
+android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged
+onSharedPreferenceChanged()} 하나뿐이며, 인터페이스를 액티비티의 일부분으로 구현하는 것이 
+가장 쉬운 방법일 공산이 큽니다. 예:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity
+                              implements OnSharedPreferenceChangeListener {
+    public static final String KEY_PREF_SYNC_CONN = "pref_syncConnectionType";
+    ...
+
+    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
+        String key) {
+        if (key.equals(KEY_PREF_SYNC_CONN)) {
+            Preference connectionPref = findPreference(key);
+            // Set summary to be the user-description for the selected value
+            connectionPref.setSummary(sharedPreferences.getString(key, ""));
+        }
+    }
+}
+</pre>
+
+<p>이 예시에서 메서드는 변경된 설정이 알려진 기본 설정 키에 대한 것인지 여부를 확인합니다. 이것은 
+{@link android.preference.PreferenceActivity#findPreference findPreference()}를 호출하여 
+변경된 {@link android.preference.Preference} 객체를 가져오는데, 이렇게 해야 항목의 요약을 수정하여 
+사용자의 선택에 대한 설명이 되도록 할 수 있습니다. 다시 말해, 설정이 {@link
+android.preference.ListPreference} 또는 다른 다중 선택 설정인 경우, 설정이 변경되어 현재 상태를 표시하도록 하면 {@link
+android.preference.Preference#setSummary setSummary()}를 호출해야 한다는 뜻입니다(예를 들어 
+그림 5에 표시된 절전 모드 설정과 같음).</p>
+
+<p class="note"><strong>참고:</strong> Android 디자인 문서의 <a href="{@docRoot}design/patterns/settings.html">설정</a> 관련 내용에서 설명한 바와 같이, 사용자가 기본 설정을 변경할 때마다 
+{@link android.preference.ListPreference}의 요약을 업데이트하는 것을 권장합니다. 이렇게 하여 현재 설정을 
+나타내는 것입니다.</p>
+
+<p>액티비티에서 적절한 수명 주기 관리를 수행하려면 
+{@link android.content.SharedPreferences.OnSharedPreferenceChangeListener}를 등록하고 등록 해제하는 작업은 각각 {@link
+android.app.Activity#onResume} 및 {@link android.app.Activity#onPause} 콜백 중에 수행하는 것을 권장합니다.</p>
+
+<pre>
+&#64;Override
+protected void onResume() {
+    super.onResume();
+    getPreferenceScreen().getSharedPreferences()
+            .registerOnSharedPreferenceChangeListener(this);
+}
+
+&#64;Override
+protected void onPause() {
+    super.onPause();
+    getPreferenceScreen().getSharedPreferences()
+            .unregisterOnSharedPreferenceChangeListener(this);
+}
+</pre>
+
+<p class="caution"><strong>주의:</strong> {@link
+android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
+registerOnSharedPreferenceChangeListener()}를 호출하면 
+현재의 경우, 기본 설정 관리자가 수신기에 대한 강력한 참조를 저장하지 않습니다. 반드시 수신기에 대한 강력한 
+참조를 저장해야 합니다. 그렇지 않으면 가비지 수집의 대상이 될 가능성이 높습니다. 권장 사항으로는 
+수신기를 객체의 인스턴스 데이터 안에 보관하는 것을 추천합니다. 이 객체는 
+수신기를 필요로 하는 기간만큼 오래 존재할 것이 확실해야 합니다.</p>
+
+<p>예를 들어 다음 코드에서 발신자는 수신기에 대한 참조를 
+보관하지 않습니다. 그 결과 해당 수신기가 가비지 수집의 대상이 되며 
+향후 언젠가 알 수 없는 시점에 고장을 일으키게 될 것입니다.</p>
+
+<pre>
+prefs.registerOnSharedPreferenceChangeListener(
+  // Bad! The listener is subject to garbage collection!
+  new SharedPreferences.OnSharedPreferenceChangeListener() {
+  public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+    // listener implementation
+  }
+});
+</pre>
+
+<p>대신, 수신기에 대한 참조를 수신기가 필요한 기간만큼 오래 존재할 것이 확실한 객체의 
+인스턴스 데이터 필드에 저장하십시오.</p>
+
+<pre>
+SharedPreferences.OnSharedPreferenceChangeListener listener =
+    new SharedPreferences.OnSharedPreferenceChangeListener() {
+  public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+    // listener implementation
+  }
+};
+prefs.registerOnSharedPreferenceChangeListener(listener);
+</pre>
+
+<h2 id="NetworkUsage">네트워크 사용량 관리하기</h2>
+
+
+<p>Android 4.0부터 시스템의 설정 애플리케이션을 사용하면 사용자가 
+애플리케이션이 전경과 배경에 있는 동안 각각 얼마나 많은 네트워크 데이터를 사용하는지 알아볼 수 있게 되었습니다. 그런 다음 
+사용자는 각각의 앱에 대해 배경 데이터 사용을 비활성화할 수 있습니다. 사용자가 여러분의 앱이 배경에서 
+데이터에 액세스하는 기능을 비활성화하는 사태를 피하려면 데이터 연결을 효율적으로 사용하고 
+사용자가 애플리케이션 설정을 통하여 앱의 데이터 사용량을 미세 조정할 수 있도록 허용해야 합니다.<p>
+
+<p>예를 들어 사용자에게 앱의 데이터 동기화 빈도를 제어하도록 허용할 수 있습니다. 앱이 Wi-Fi에 있을 때에만 
+업로드/다운로드를 수행하도록 할지 여부, 앱이 로밍 중에 데이터를 사용하도록 할지 여부 등을 이렇게 조절합니다. 사용자가 
+이러한 제어 기능을 사용할 수 있게 되면 시스템 설정에서 설정한 한도에 가까워지고 
+있을 때 앱의 데이터 액세스를 비활성화할 가능성이 낮아집니다. 그 대신 앱이 사용하는 데이터 양을 
+정밀하게 제어할 수 있기 때문입니다.</p>
+
+<p>일단 필요한 기본 설정을 {@link android.preference.PreferenceActivity}에 
+추가하여 앱의 데이터 습관을 제어하도록 했으면, 다음으로 매니페스트 파일에 있는 {@link
+android.content.Intent#ACTION_MANAGE_NETWORK_USAGE}에 대한 인텐트 필터를 추가해야 합니다. 예:</p>
+
+<pre>
+&lt;activity android:name="SettingsActivity" ... >
+    &lt;intent-filter>
+       &lt;action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />
+       &lt;category android:name="android.intent.category.DEFAULT" />
+    &lt;/intent-filter>
+&lt;/activity>
+</pre>
+
+<p>이 인텐트 필터는 이것이 애플리케이션의 데이터 사용량을 제어하는 액티비티라는 
+사실을 시스템에 나타내는 역할을 합니다. 따라서, 사용자가 시스템의 설정 앱에서 여러분의 앱이 
+얼마나 많은 데이터를 사용하는지 알아볼 때면 <em>애플리케이션 설정 보기</em> 버튼을 사용할 수 있어 
+{@link android.preference.PreferenceActivity}를 시작하게 됩니다. 그러면 사용자는 
+앱이 사용할 데이터 양을 미세하게 조정할 수 있습니다.</p>
+
+
+
+
+
+
+
+<h2 id="Custom">사용자 지정 기본 설정 구축하기</h2>
+
+<p>Android 프레임워크에는 다양한 {@link android.preference.Preference} 하위 클래스가 포함되어 있어 
+여러 가지 설정 유형에 맞게 UI를 구축할 수 있습니다. 
+하지만, 기본 제공 솔루션이 없는 설정이 필요하게 되는 경우도 있습니다. 예를 들어 숫자 선택기 또는 
+날짜 선택기 등이 이에 해당됩니다. 그러한 경우에는 사용자 지정 기본 설정을 만들어야 합니다. 이때 
+{@link android.preference.Preference} 클래스 또는 다른 하위 클래스 중 하나를 확장하는 방법을 씁니다.</p>
+
+<p>{@link android.preference.Preference} 클래스를 확장하는 경우, 다음과 같이 
+몇 가지 중요한 해야 할 일이 있습니다.</p>
+
+<ul>
+  <li>사용자가 설정을 선택하면 나타나는 사용자 인터페이스를 지정합니다.</li>
+  <li>필요에 따라 설정의 값을 저장합니다.</li>
+  <li>{@link android.preference.Preference}가 보이게 되면 
+이를 현재(또는 기본) 값으로 초기화합니다.</li>
+  <li>시스템이 요청하는 경우 기본 값을 제공합니다.</li>
+  <li>{@link android.preference.Preference}가 나름의 UI(예: 대화)를 제공하는 경우, 상태를 
+저장하고 복원하여 수명 주기 변경을 처리할 수 있도록 합니다(예: 사용자가 화면을 돌리는 경우).</li>
+</ul>
+
+<p>다음 섹션에서는 이와 같은 각각의 작업을 수행하는 방법을 설명합니다.</p>
+
+
+
+<h3 id="CustomSelected">사용자 인터페이스 지정하기</h3>
+
+  <p>{@link android.preference.Preference} 클래스를 직접 확장하는 경우, 
+{@link android.preference.Preference#onClick()}을 구현하여 사용자가 
+항목을 선택할 때 일어날 동작을 정의해야 합니다. 그러나, 대부분의 사용자 지정 설정은 {@link android.preference.DialogPreference}를 확장하여 
+대화를 표시하도록 합니다. 이렇게 하면 절차가 단순해집니다. {@link
+android.preference.DialogPreference}를 확장하는 경우에는 클래스 생성자 중에 반드시 {@link
+android.preference.DialogPreference#setDialogLayoutResource setDialogLayoutResourcs()}를 호출하여 
+대화에 대한 레이아웃을 지정해야 합니다.</p>
+
+  <p>예를 들어 다음은 레이아웃을 선언하는 사용자 지정 {@link
+android.preference.DialogPreference}와 기본 
+긍정적 및 부정적 대화 버튼에 대한 텍스트를 지정하는 생성자입니다.</p>
+
+<pre>
+public class NumberPickerPreference extends DialogPreference {
+    public NumberPickerPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        
+        setDialogLayoutResource(R.layout.numberpicker_dialog);
+        setPositiveButtonText(android.R.string.ok);
+        setNegativeButtonText(android.R.string.cancel);
+        
+        setDialogIcon(null);
+    }
+    ...
+}
+</pre>
+
+
+
+<h3 id="CustomSave">설정의 값 저장하기</h3>
+
+<p>설정에 대한 값은 언제든 저장할 수 있습니다. {@link
+android.preference.Preference} 클래스의 {@code persist*()} 메서드 중 하나를 호출하기만 하면 됩니다. 예를 들어 설정의 값이 정수인 경우 {@link
+android.preference.Preference#persistInt persistInt()}를, 부울을 저장하려면 
+{@link android.preference.Preference#persistBoolean persistBoolean()}을 호출하십시오.</p>
+
+<p class="note"><strong>참고:</strong> 각각의 {@link android.preference.Preference}는 데이터 유형 하나씩만 
+저장할 수 있으므로, 사용자 지정 
+{@link android.preference.Preference}에서 사용한 데이터 유형에 적절한 {@code persist*()} 메서드를 사용해야 합니다.</p>
+
+<p>설정을 유지하기로 선택하는 시점은 확장하는 지점이 {@link
+android.preference.Preference} 클래스인지에 좌우될 수 있습니다. {@link
+android.preference.DialogPreference}를 확장하면 값을 유지하는 것은 대화가 긍정적인 결과로 인해 
+닫히는 경우만으로 국한해야 합니다(사용자가 "확인(OK)" 버튼을 선택하는 경우).</p>
+
+<p>{@link android.preference.DialogPreference}가 닫히면 시스템이 {@link
+android.preference.DialogPreference#onDialogClosed onDialogClosed()} 메서드를 호출합니다. 이 메서드에는 
+부울 인수가 포함되어 있어 사용자의 결과가 "긍정적"인지 아닌지를 나타냅니다. 이 값이 
+<code>true</code>인 경우, 사용자가 긍정적 버튼을 선택한 것이고 새 값을 저장해야 합니다. 예:
+</p>
+
+<pre>
+&#64;Override
+protected void onDialogClosed(boolean positiveResult) {
+    // When the user selects "OK", persist the new value
+    if (positiveResult) {
+        persistInt(mNewValue);
+    }
+}
+</pre>
+
+<p>이 예시에서 <code>mNewValue</code>는 설정의 현재 값을 보유한 클래스 
+구성원입니다. {@link android.preference.Preference#persistInt persistInt()}를 호출하면 
+{@link android.content.SharedPreferences} 파일에 대한 값을 저장합니다(이 
+{@link android.preference.Preference}에 대하여 XML 파일에 지정된 키를 자동으로 사용합니다).</p>
+
+
+<h3 id="CustomInitialize">현재 값 초기화하기</h3>
+
+<p>시스템이 {@link android.preference.Preference}를 화면에 추가하는 경우, 이는 
+{@link android.preference.Preference#onSetInitialValue onSetInitialValue()}를 호출하여 
+설정에 유지된 값이 있는지 없는지를 알립니다. 유지된 값이 없는 경우, 이 호출은 기본 값을 
+제공합니다.</p>
+
+<p>{@link android.preference.Preference#onSetInitialValue onSetInitialValue()} 메서드는 
+부울 값 <code>restorePersistedValue</code>를 전달하여 해당 설정에 대해 이미 어떤 값이 유지되었는지 
+아닌지를 나타냅니다. 만일 이것이 <code>true</code>라면, 유지된 값을 검색하되 
+{@link
+android.preference.Preference} 클래스의 {@code getPersisted*()} 메서드 중 하나를 호출하는 방법을 써야 합니다. 예를 들어 정수 값이라면 {@link
+android.preference.Preference#getPersistedInt getPersistedInt()}를 사용합니다. 보통은 
+유지된 값을 검색하여, UI에 이전에 저장된 값을 반영하여 이를 적절하게 업데이트할 수 
+있도록 하는 것이 좋습니다.</p>
+
+<p><code>restorePersistedValue</code>가 <code>false</code>인 경우, 
+두 번째 인수로 전달된 기본 값을 사용해야 합니다.</p>
+
+<pre>
+&#64;Override
+protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
+    if (restorePersistedValue) {
+        // Restore existing state
+        mCurrentValue = this.getPersistedInt(DEFAULT_VALUE);
+    } else {
+        // Set default state from the XML attribute
+        mCurrentValue = (Integer) defaultValue;
+        persistInt(mCurrentValue);
+    }
+}
+</pre>
+
+<p>각 {@code getPersisted*()} 메서드는 기본 값을 나타내는 인수를 취하여 
+사실은 유지된 값이 전혀 없거나 키 자체가 존재하지 않는 경우 사용하도록 합니다. 위의 
+예시에서는 혹시 {@link
+android.preference.Preference#getPersistedInt getPersistedInt()}가 유지된 값을 반환할 수 없는 경우에 사용하도록 기본 값을 나타내는 데 로컬 상수를 사용하였습니다.</p>
+
+<p class="caution"><strong>주의:</strong> {@code getPersisted*()} 메서드에서는 
+<code>defaultValue</code>를 기본 값으로 사용하면 <strong>안 됩니다</strong>. 이것의 값은 
+<code>restorePersistedValue</code>가 <code>true</code>이면 항상 null이기 때문입니다.</p>
+
+
+<h3 id="CustomDefault">기본 값 제공하기</h3>
+
+<p>{@link android.preference.Preference} 클래스의 인스턴스가 기본 값을 나타내는 경우
+({@code android:defaultValue} 속성으로), 시스템은 
+값을 검색하기 위해 객체를 인스턴트화할 때 {@link android.preference.Preference#onGetDefaultValue
+onGetDefaultValue()}를 호출합니다. 이 메서드를 구현해야 
+시스템이 {@link
+android.content.SharedPreferences}에 있는 기본 값을 저장할 수 있습니다. 예:</p>
+
+<pre>
+&#64;Override
+protected Object onGetDefaultValue(TypedArray a, int index) {
+    return a.getInteger(index, DEFAULT_VALUE);
+}
+</pre>
+
+<p>이 메서드 인수가 여러분에게 필요한 모든 것을 제공합니다. 즉 속성 배열과 
+{@code android:defaultValue}의 위치로, 이는 반드시 검색해야 합니다. 이 메서드를 
+반드시 구현하여 속성에서 기본 값을 추출해야만 하는 이유는 값이 정의되지 않은 경우, 속성에 대한 
+로컬 기본 값을 꼭 지정해야 하기 때문입니다.</p>
+
+
+
+<h3 id="CustomSaveState">기본 설정의 상태 저장 및 복원하기</h3>
+
+<p>레이아웃에서의 {@link android.view.View}와 마찬가지로 {@link android.preference.Preference}
+하위 클래스가 액티비티 또는 프래그먼트가 재시작했을 때 
+그 상태를 저장하고 복원하는 역할을 맡습니다(예를 들어 사용자가 화면을 돌리는 경우 등). 
+{@link android.preference.Preference} 클래스의 상태를 적절하게 저장하고 복원하려면, 
+수명 주기 콜백 메서드 {@link android.preference.Preference#onSaveInstanceState
+onSaveInstanceState()} 및 {@link
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()}를 구현해야 합니다.</p>
+
+<p>{@link android.preference.Preference}의 상태를 정의하는 것은 
+{@link android.os.Parcelable} 인터페이스를 구현하는 객체입니다. Android 프레임워크는 
+그러한 객체를 제공하여 상태 객체를 정의하는 데 일종의 시작 지점으로 사용하도록 하고 있습니다. 즉 {@link
+android.preference.Preference.BaseSavedState} 클래스가 이에 해당됩니다.</p>
+
+<p>{@link android.preference.Preference} 클래스가 자신의 상태를 저장하는 방법을 정의하려면 
+{@link android.preference.Preference.BaseSavedState} 클래스를 확장해야 합니다. 아주 약간의 메서드를 재정의하고 
+{@link android.preference.Preference.BaseSavedState#CREATOR}
+객체를 정의해야 합니다.</p>
+
+<p>대부분의 앱에서는 다음과 같은 구현을 복사한 다음, 
+{@code value}를 처리하는 줄만 변경하면 됩니다. 이는 {@link android.preference.Preference} 하위 클래스가 정수보다는 데이터 
+유형을 저장하는 경우 해당됩니다.</p>
+
+<pre>
+private static class SavedState extends BaseSavedState {
+    // Member that holds the setting's value
+    // Change this data type to match the type saved by your Preference
+    int value;
+
+    public SavedState(Parcelable superState) {
+        super(superState);
+    }
+
+    public SavedState(Parcel source) {
+        super(source);
+        // Get the current preference's value
+        value = source.readInt();  // Change this to read the appropriate data type
+    }
+
+    &#64;Override
+    public void writeToParcel(Parcel dest, int flags) {
+        super.writeToParcel(dest, flags);
+        // Write the preference's value
+        dest.writeInt(value);  // Change this to write the appropriate data type
+    }
+
+    // Standard creator object using an instance of this class
+    public static final Parcelable.Creator&lt;SavedState> CREATOR =
+            new Parcelable.Creator&lt;SavedState>() {
+
+        public SavedState createFromParcel(Parcel in) {
+            return new SavedState(in);
+        }
+
+        public SavedState[] newArray(int size) {
+            return new SavedState[size];
+        }
+    };
+}
+</pre>
+
+<p>위의 {@link android.preference.Preference.BaseSavedState} 구현을 앱에 
+추가하고 나면(주로 {@link android.preference.Preference} 하위 클래스의 하위 클래스로), 이제 
+{@link android.preference.Preference#onSaveInstanceState
+onSaveInstanceState()} 및 {@link
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()} 메서드를 구현해야 합니다. 이것은 
+{@link android.preference.Preference} 하위 클래스를 위한 것입니다.</p>
+
+<p>예:</p>
+
+<pre>
+&#64;Override
+protected Parcelable onSaveInstanceState() {
+    final Parcelable superState = super.onSaveInstanceState();
+    // Check whether this Preference is persistent (continually saved)
+    if (isPersistent()) {
+        // No need to save instance state since it's persistent,
+        // use superclass state
+        return superState;
+    }
+
+    // Create instance of custom BaseSavedState
+    final SavedState myState = new SavedState(superState);
+    // Set the state's value with the class member that holds current
+    // setting value
+    myState.value = mNewValue;
+    return myState;
+}
+
+&#64;Override
+protected void onRestoreInstanceState(Parcelable state) {
+    // Check whether we saved the state in onSaveInstanceState
+    if (state == null || !state.getClass().equals(SavedState.class)) {
+        // Didn't save the state, so call superclass
+        super.onRestoreInstanceState(state);
+        return;
+    }
+
+    // Cast state to custom BaseSavedState and pass to superclass
+    SavedState myState = (SavedState) state;
+    super.onRestoreInstanceState(myState.getSuperState());
+    
+    // Set this Preference's widget to reflect the restored state
+    mNumberPicker.setValue(myState.value);
+}
+</pre>
+
diff --git a/docs/html-intl/intl/ko/guide/topics/ui/ui-events.jd b/docs/html-intl/intl/ko/guide/topics/ui/ui-events.jd
new file mode 100644
index 0000000..b059bd2
--- /dev/null
+++ b/docs/html-intl/intl/ko/guide/topics/ui/ui-events.jd
@@ -0,0 +1,291 @@
+page.title=입력 이벤트
+parent.title=사용자 인터페이스
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>이 문서의 내용</h2>
+  <ol>
+    <li><a href="#EventListeners">이벤트 수신기</a></li>
+    <li><a href="#EventHandlers">이벤트 처리기</a></li>
+    <li><a href="#TouchMode">터치 모드</a></li>
+    <li><a href="#HandlingFocus">초점 처리하기</a></li>
+  </ol>
+
+</div>
+</div>
+
+<p>Android에는 사용자와 애플리케이션의 상호 작용으로부터 이벤트를 가로채는 방법이 여러 가지 있습니다. 
+사용자 인터페이스 내의 이벤트가 관련된 경우, 이러한 방식은 이벤트를 사용자가 상호 작용하는 
+특정 보기 객체로부터 캡처하는 것입니다. 이에 필요한 수단은 보기 클래스가 제공합니다.</p>
+
+<p>레이아웃을 작성하는 데 사용하게 되는 여러 가지 보기 클래스 안을 보면 UI 이벤트에 유용해 보이는 공개 콜백 
+메서드가 여러 개 있는 것이 눈에 띕니다. 이러한 메서드는 해당 객체에서 각각의 작업이 발생할 때 Android 프레임워크가 
+호출하는 것입니다. 예를 들어 보기(예: 버튼)를 하나 터치하면 
+해당 객체에서 <code>onTouchEvent()</code> 메서드가 호출됩니다. 그러나 이것을 가로채려면 클래스를 확장하고 
+메서드를 재정의해야 합니다. 다만 그런 이벤트를 처리하기 위해 모든 보기 객체를 
+다 확장하는 것은 타당성이 없습니다. 이 때문에 보기 클래스에 
+일련의 중첩된 인터페이스가 있고 거기에 훨씬 쉽게 정의할 수 있는 콜백에 있습니다. 이와 같은 
+인터페이스를 일명 <a href="#EventListeners">이벤트 수신기</a>라고 하는데, 이것이 UI와 사용자 상호 작용을 캡처하는 데 아주 적합합니다.</p>
+
+<p>사용자 상호 작용을 수신 대기하는 데에는 이벤트 수신기를 사용하는 것이 좀 더 보편적이지만, 사용자 지정 
+구성 요소를 구축하기 위해 보기 클래스를 확장하고자 하는 상황이 올 수도 있습니다. 
+어쩌면 {@link android.widget.Button}
+클래스를 확장하여 무언가 더 복잡한 것을 만들고자 할 수도 있습니다. 이런 경우, 클래스에 대한 기본 이벤트 행동을 클래스 
+<a href="#EventHandlers">이벤트 처리기</a>를 사용하여 정의할 수 있습니다.</p>
+
+
+<h2 id="EventListeners">이벤트 수신기</h2>
+
+<p>이벤트 수신기란 {@link android.view.View} 클래스 내에 있는 일종의 인터페이스로, 이 안에 하나의 
+콜백 메서드가 들어있습니다. 이러한 메서드는 수신기가 등록된 보기가 UI 안의 항목과 사용자의 상호 작용으로 인하여 트리거되었을 때 
+Android 프레임워크가 호출하는 것입니다.</p>
+
+<p>이벤트 수신기 인터페이스에 포함된 콜백 메서드는 다음과 같습니다.</p>
+
+<dl>
+  <dt><code>onClick()</code></dt>
+    <dd>{@link android.view.View.OnClickListener}에서 온 것입니다. 
+이것이 호출되는 것은 사용자가 항목을 터치하거나
+(터치 모드에 있을 때), 탐색 키 또는 트랙볼을 사용하여 해당 항목에 초점을 맞추고 있으면서 
+적절한 "엔터" 키를 누르거나 트랙볼을 꾹 누를 때입니다.</dd>
+  <dt><code>onLongClick()</code></dt>
+    <dd>{@link android.view.View.OnLongClickListener}에서 온 것입니다. 
+이것이 호출되는 것은 사용자가 항목을 길게 누르거나(터치 모드에 있을 때), 
+탐색 키 또는 트랙볼을 사용하여 해당 항목에 초점을 맞추고 있으면서 
+적절한 "엔터" 키를 누르거나 트랙볼을 꾹 누를 때입니다(일 초간).</dd>
+  <dt><code>onFocusChange()</code></dt>
+    <dd>{@link android.view.View.OnFocusChangeListener}에서 온 것입니다. 
+이것이 호출되는 것은 사용자가 탐색 키 또는 트랙볼을 사용하여 항목 쪽으로 이동하거나 항목에서 멀어질 때입니다.</dd>
+  <dt><code>onKey()</code></dt>
+    <dd>{@link android.view.View.OnKeyListener}에서 온 것입니다. 
+이것이 호출되는 것은 사용자가 항목에 초점을 맞추고 있으면서 기기에 있는 하드웨어 키를 누르거나 키에서 손을 떼는 경우입니다.</dd>
+  <dt><code>onTouch()</code></dt>
+    <dd>{@link android.view.View.OnTouchListener}에서 온 것입니다. 
+이것이 호출되는 것은 사용자가 터치 이벤트로서의 자격을 만족하는 작업을 수행하는 경우로, 여기에 
+누르기, 손 떼기와 화면에서 이루어지는 모든 움직임 동작(항목의 경계 내에서)이 포함됩니다.</dd>
+  <dt><code>onCreateContextMenu()</code></dt>
+    <dd>{@link android.view.View.OnCreateContextMenuListener}에서 온 것입니다. 
+이것을 호출하는 것은 컨텍스트 메뉴가 구축되는 중일 때입니다(정체된 "롱 클릭"의 결과로). 
+<a href="{@docRoot}guide/topics/ui/menus.html#context-menu">메뉴</a>
+ 개발자 가이드에 있는 컨텍스트 메뉴 관련 논의를 참조하십시오.</dd>
+</dl>
+
+<p>이러한 메서드는 각자의 인터페이스 안에 거주하는 유일한 주민입니다. 이러한 메서드 중 하나를 
+정의하고 이벤트를 처리하려면 액티비티 내의 중첩된 인터페이스를 구현하거나 익명의 클래스로 정의하면 됩니다. 
+그런 다음 구현의 인스턴스 하나를 
+각각의 <code>View.set...Listener()</code> 메서드에 전달하십시오 (예: 
+<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>를 
+호출한 다음 이를 {@link android.view.View.OnClickListener OnClickListener}의 구현에 전달합니다).</p>
+
+<p>아래의 예시는 버튼에 대하여 온-클릭 수신기를 등록하는 방법을 나타낸 것입니다. </p>
+
+<pre>
+// Create an anonymous implementation of OnClickListener
+private OnClickListener mCorkyListener = new OnClickListener() {
+    public void onClick(View v) {
+      // do something when the button is clicked
+    }
+};
+
+protected void onCreate(Bundle savedValues) {
+    ...
+    // Capture our button from layout
+    Button button = (Button)findViewById(R.id.corky);
+    // Register the onClick listener with the implementation above
+    button.setOnClickListener(mCorkyListener);
+    ...
+}
+</pre>
+
+<p>OnClickListener를 액티비티의 일부로 구현하는 것이 더 편리할 수도 있습니다.
+이렇게 하면 클래스 부하와 객체 할당이 추가되는 것을 피할 수 있습니다. 예:</p>
+<pre>
+public class ExampleActivity extends Activity implements OnClickListener {
+    protected void onCreate(Bundle savedValues) {
+        ...
+        Button button = (Button)findViewById(R.id.corky);
+        button.setOnClickListener(this);
+    }
+
+    // Implement the OnClickListener callback
+    public void onClick(View v) {
+      // do something when the button is clicked
+    }
+    ...
+}
+</pre>
+
+<p>위의 예시에서 <code>onClick()</code> 콜백에는 
+반환 값이 없지만 다른 이벤트 수신기 메서드 중에는 부울 값을 반환해야만 하는 것도 있다는 점을 유의하십시오. 그 이유는 이벤트에 따라 
+다릅니다. 이런 필수 사항이 적용되는 몇몇 메서드의 경우, 이유는 다음과 같습니다.</p>
+<ul>
+  <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> - 
+이것은 부울 값을 반환하여 이벤트를 완전히 사용하였으며 더 이상 이를 담지 않아도 되는지 여부를 나타냅니다. 
+다시 말해, <em>참</em>을 반환하면 이벤트를 처리했으며 여기에서 중단해야 한다는 것을 의미하며 
+<em>거짓</em>을 반환하면 이벤트가 아직 미처리 상태이며/거나 이 이벤트를 다른 
+온-클릭 수신기로 계속 진행해야 할지 나타내는 것입니다.</li>
+  <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> - 
+이것은 부울 값을 반환하여 이벤트를 완전히 사용하였으며 더 이상 이를 담지 않아도 되는지 여부를 나타냅니다.
+    다시 말해, <em>참</em>을 반환하면 이벤트를 처리했으며 여기에서 중단해야 한다는 것을 의미하며 
+<em>거짓</em>을 반환하면 이벤트가 아직 미처리 상태이며/거나 이 이벤트를 다른 
+온-키 수신기로 계속 진행해야 할지 나타내는 것입니다.</li>
+  <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> - 
+이것은 부울 값을 반환하여 수신기가 이 이벤트를 사용하는지 아닌지를 나타냅니다. 여기서 중요한 점은 
+이 이벤트에는 서로 연달아 발생하는 여러 개의 작업이 있을 수 있다는 것입니다. 그러므로 '아래로' 작업 이벤트를 수신했을 때 <em>거짓</em>을 반환하면, 
+해당 이벤트를 사용하지 않았으며 이 이벤트로부터 이어지는 이후의 작업에 
+흥미가 없음을 나타내는 것이 됩니다. 따라서 이 이벤트 내의 다른 모든 작업에 대해 
+호출되지 않습니다(예: 손가락 동작 또는 최종적인 '위로' 작업 이벤트 등).</li>
+</ul>
+
+<p>하드웨어 키 이벤트는 항상 현재 초점의 중심에 있는 보기로 전달된다는 점을 명심하십시오. 이들은 보기 계층의 맨 위에서 시작하여 
+아래 방향으로 발송되어 적절한 목적지에 도달할 때까지 계속합니다. 보기(또는 보기의 하위)에 
+현재 초점이 맞춰져 있으면, 이벤트가 <code>{@link android.view.View#dispatchKeyEvent(KeyEvent)
+dispatchKeyEvent()}</code> 메서드를 통과하여 이동하는 것을 확인할 수 있습니다. 보기를 통해 키 이벤트를 캡처하는 대신, 액티비티 내부의 모든 이벤트를 <code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>및 
+
+<code>{@link android.app.Activity#onKeyUp(int,KeyEvent) onKeyUp()}</code>을 사용하여 수신할 수도 있습니다.</p>
+
+<p>또한, 애플리케이션에 대한 텍스트 입력의 경우 대다수의 기기에는 소프트웨어 입력 메서드만 있다는 사실을 
+명심하십시오. 그러한 메서드는 반드시 키 기반이 아니어도 됩니다. 음성 입력, 손글씨 등을 사용하는 것도 있습니다. 입력 
+메서드가 키보드 같은 인터페이스를 표시하더라도 일반적으로 
+<code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code> 이벤트군을 트리거하지는 <strong>않습니다</strong>. 특정 키 누름을 
+제어해야만 하는 UI는 절대 구축하면 안 됩니다. 이렇게 하면 애플리케이션이 하드웨어 키보드가 있는 
+기기에만 한정됩니다. 특히, 사용자가 리턴 키를 누르면 입력의 유효성을 검사하는 데 이와 같은 메서드에 
+의존해서는 안 됩니다. 대신, {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE}과 같은 작업을 사용하여 애플리케이션이 반응할 것으로 기대되는 방식에 해당되는 
+입력 메서드를 신호하여 의미 있는 방식으로 UI를 변경할 수 있게 하는 것이 좋습니다. 소프트웨어 입력 메서드가 
+어떻게 작동할지 임의로 추정하지 마시고, 이미 서식 지정된 텍스트를 애플리케이션에 제공해줄 것이라 믿으면 됩니다.</p>
+
+<p class="note"><strong>참고:</strong> Androids는 우선 이벤트 처리기부터 호출하고, 그 다음에 클래스 정의로부터 가져온 
+적절한 기본 처리기를 두 번째로 호출합니다. 따라서, 이와 같은 이벤트 수신기에서 <em>참</em>을 반환하면 이벤트가 
+다른 이벤트 수신기로 전파되는 것을 중지시킬 뿐만 아니라 보기에 있는 
+기본 이벤트 처리기로의 콜백도 차단하게 됩니다. 따라서 <em>참</em>을 반환하는 경우 해당 이벤트를 종료하고 싶은 것인지 확신해야 합니다.</p>
+
+
+<h2 id="EventHandlers">이벤트 처리기</h2>
+
+<p>보기에서 사용자 지정 구성 요소를 구축하는 경우, 기본 이벤트 처리기로 사용될 콜백 메서드를 
+여러 개 정의할 수 있게 됩니다.
+<a href="{@docRoot}guide/topics/ui/custom-components.html">사용자 지정
+구성 요소</a>에 대한 문서를 보면 이벤트 처리에 사용되는 몇 가지 보편적인 콜백을 확인할 수 있습니다. 
+다음은 그 몇 가지 예입니다.</p>
+<ul>
+  <li><code>{@link  android.view.View#onKeyDown}</code> - 새로운 키 이벤트가 발생하면 호출합니다.</li>
+  <li><code>{@link  android.view.View#onKeyUp}</code> - 새로운 키 '위로' 이벤트가 발생하면 호출합니다.</li>
+  <li><code>{@link  android.view.View#onTrackballEvent}</code> - 트랙볼 동작 이벤트가 발생하면 호출합니다.</li>
+  <li><code>{@link  android.view.View#onTouchEvent}</code> - 터치 스크린 동작 이벤트가 발생하면 호출합니다.</li>
+  <li><code>{@link  android.view.View#onFocusChanged}</code> - 보기가 초점을 취하거나 이를 잃으면 호출합니다.</li>
+</ul>
+<p>개발자 여러분이 알아두어야 하는 다른 메서드가 몇 가지 더 있습니다. 이들은 보기 클래스의 일부분이 아니지만, 
+이벤트를 처리할 수 있는 방식에 직접적으로 영향을 미칠 수 있는 것들입니다. 그러니, 레이아웃 안에서 좀 더 복잡한 이벤트를 관리하는 경우, 
+이와 같은 다른 메서드도 고려하십시오.</p>
+<ul>
+  <li><code>{@link  android.app.Activity#dispatchTouchEvent(MotionEvent)
+    Activity.dispatchTouchEvent(MotionEvent)}</code> - 이것을 사용하면 {@link 
+    android.app.Activity}로 하여금 모든 터치 이벤트가 창으로 발송되기 전에 이들을 가로채도록 할 수 있습니다.</li>
+  <li><code>{@link  android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)
+    ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> - 이것을 사용하면 {@link
+    android.view.ViewGroup}으로 하여금 이벤트가 하위 보기로 발송되는 것을 지켜보도록 할 수 있습니다.</li>
+  <li><code>{@link  android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
+    ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - 이것을 
+호출하는 것은 상위 보기에 <code>{@link 
+    android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code>가 있는 터치 이벤트를 가로채면 안 된다고 나타낼 때입니다.</li>
+</ul>
+
+<h2 id="TouchMode">터치 모드</h2>
+<p>
+사용자가 방향 키 또는 트랙볼을 사용하여 사용자 인터페이스를 탐색하고 있는 경우, 
+조치 가능한 항목(예: 버튼)에 초점을 맞춰 어느 것이 입력을 허용할지 사용자가 
+볼 수 있도록 해야 합니다.  하지만 기기에 터치 기능이 있고 사용자가 
+인터페이스를 터치하여 인터페이스와의 상호 작용을 시작하는 경우라면, 더 이상 항목을 강조 표시하거나 
+특정 보기에 초점을 맞추지 않아도 됩니다.  따라서 "터치 모드"라고 불리는 상호 작용에 대한 
+모드가 따로 있습니다. 
+</p>
+<p>
+터치 기능이 있는 기기의 경우, 사용자가 화면을 터치하면 기기가 터치 모드에 
+진입하게 됩니다.  이 시점부터는 
+{@link android.view.View#isFocusableInTouchMode}가 참인 보기에만 초점을 맞출 수 있습니다. 예를 들어 텍스트 편집 위젯이 이에 해당됩니다. 
+버튼처럼 터치할 수 있는 다른 보기의 경우 터치해도 주의를 끌 수 없으며 이를 누르면 그저 
+온-클릭 수신기를 실행시키기만 합니다.
+</p>
+<p>
+사용자가 방향 키를 누르거나 트랙볼로 스크롤 동작을 할 때마다 기기가 
+터치 모드를 종료하고 초점을 맞출 보기를 찾습니다. 이제 사용자는 사용자 인터페이스와 
+상호 작용을 재개해도 되며, 화면을 터치하지 않아도 됩니다.
+</p>
+<p>
+터치 모드 상태는 시스템 전체를 통틀어 유지됩니다(모든 창과 액티비티 포함). 
+현재 상태를 쿼리하려면 
+{@link android.view.View#isInTouchMode}를 호출하여 기기가 현재 터치 모드에 있는지 확인하면 됩니다.
+</p>
+
+
+<h2 id="HandlingFocus">초점 처리하기</h2>
+
+<p>프레임워크가 사용자 입력에 응답하여 일상적인 초점 이동을 처리합니다. 
+여기에는 보기가 제거되거나 숨겨지는 것, 또는 새 보기를 사용할 수 있게 됨에 따라 
+초점을 변경하는 것이 포함됩니다. 보기는 초점을 취하고자 하는 의향을 
+<code>{@link android.view.View#isFocusable()}</code> 메서드를 통해 나타냅니다. 보기가 초점을 취할 수 있는지 여부를 변경하려면 
+<code>{@link android.view.View#setFocusable(boolean) setFocusable()}</code>을 호출합니다.  터치 모드에 있는 경우, 
+어느 보기가 <code>{@link android.view.View#isFocusableInTouchMode()}</code>로 초점을 취하는 것을 허용하는지 여부를 쿼리할 수 있습니다. 
+이것은 <code>{@link android.view.View#setFocusableInTouchMode(boolean) setFocusableInTouchMode()}</code>로 변경하면 됩니다.
+</p>
+
+<p>초점 이동은 주어진 방향에서 가장 가까운 이웃을 찾아내는 알고리즘을 기반으로 
+합니다. 드문 일이지만 기본 알고리즘이 개발자가 의도한 행동과 일치하지 않는 
+경우도 있습니다. 이러한 상황이라면, 레이아웃 파일에서 다음과 같은 XML 속성을 
+사용하여 명시적 재정의를 제공하면 됩니다.
+<var>nextFocusDown</var>, <var>nextFocusLeft</var>, <var>nextFocusRight</var>, 및
+<var>nextFocusUp</var>입니다. 이와 같은 속성 중 한 가지를 초점이 <em>떠나고</em> 있는 보기에 
+추가합니다. 속성의 값을 초점을 
+<em>맞춰야 할</em> 보기의 ID가 되도록 정의합니다. 예:</p>
+<pre>
+&lt;LinearLayout
+    android:orientation="vertical"
+    ... >
+  &lt;Button android:id="@+id/top"
+          android:nextFocusUp="@+id/bottom"
+          ... />
+  &lt;Button android:id="@+id/bottom"
+          android:nextFocusDown="@+id/top"
+          ... />
+&lt;/LinearLayout>
+</pre>
+
+<p>보통은 이런 수직 레이아웃에서 첫 버튼부터 위로 이동하면 아무 데도 갈 수 없고, 
+두 번째 버튼에서 아래로 이동해도 마찬가지입니다. 이제 맨 위 버튼이 맨 아래 버튼을 다음과 같이 
+정의했습니다. <var>nextFocusUp</var> (반대쪽도 마찬가지) 따라서 이동 초점은 위에서 아래로 갔다가 
+아래에서 위로 순환하게 됩니다.</p>
+
+<p>보기를 UI에서 초점을 맞출 수 있는 것으로 선언하고자 하는 경우(일반적으로는 그렇지 않음), 
+보기에 레이아웃 선언에서 <code>android:focusable</code> XML 속성을 추가합니다. 
+이 값을 <var>참</var>으로 설정합니다. 터치 모드에 있을 때에도 보기를 초점을 맞출 수 있는 것으로 
+선언할 수 있습니다. <code>android:focusableInTouchMode</code>를 사용하면 됩니다.</p>
+<p>특정 보기에 초점을 맞추기를 요청하려면, <code>{@link android.view.View#requestFocus()}</code>를 호출하십시오.</p>
+<p>초점 이벤트를 수신 대기하려면(어떤 보기에 초점이 맞춰지거나 이를 잃는 경우 알림을 받으려면), 
+<code>{@link android.view.View.OnFocusChangeListener#onFocusChange(View,boolean) onFocusChange()}</code>를 사용하면 됩니다. 
+이는 위의 <a href="#EventListeners">이벤트 수신기</a> 섹션에서 이야기한 바와 같습니다.</p>
+
+
+
+<!--
+<h2 is="EventCycle">Event Cycle</h2>
+   <p>The basic cycle of a View is as follows:</p>
+   <ol>
+    <li>An event comes in and is dispatched to the appropriate View. The View
+    handles the event and notifies any listeners.</li>
+    <li>If, in the course of processing the event, the View's bounds may need
+    to be changed, the View will call {@link android.view.View#requestLayout()}.</li>
+    <li>Similarly, if in the course of processing the event the View's appearance
+    may need to be changed, the View will call {@link android.view.View#invalidate()}.</li>
+    <li>If either {@link android.view.View#requestLayout()} or {@link android.view.View#invalidate()} were called,
+    the framework will take care of measuring, laying out, and drawing the tree
+    as appropriate.</li>
+   </ol>
+   
+   <p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on
+   the UI thread when calling any method on any View.
+   If you are doing work on other threads and want to update the state of a View
+   from that thread, you should use a {@link android.os.Handler}.
+   </p>
+-->
diff --git a/docs/html-intl/intl/ko/index.jd b/docs/html-intl/intl/ko/index.jd
index d95d698..01c8587 100644
--- a/docs/html-intl/intl/ko/index.jd
+++ b/docs/html-intl/intl/ko/index.jd
@@ -5,42 +5,81 @@
 
 @jd:body
 
-<!-- <div class="dac-hero-carousel" data-carousel-query="collection:index/carousel">
-</div> -->
-<section class="dac-hero-carousel">
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
 
-<!-- <article class="dac-expand dac-hero dac-invert active" style="background-color: rgb(38, 50, 56);"> -->
-<article class="dac-expand dac-hero dac-invert dac-darken mprev active" style="background-color: #75d1ff;">
-<a href="/preview/index.html">
+<section class="dac-expand dac-hero dac-invert" style="background-color:#455A64">
   <div class="wrap" style="max-width:1100px;margin-top:0">
-    <div class="cols dac-hero-content">
-      <div class="col-8of16 col-push-6of16 dac-hero-figure mprev">
-      </div>
-      <div class="col-8of16 col-pull-7of16">
-        <div class="dac-hero-tag"></div>
-
-        <h1 class="dac-hero-title" style="white-space:nowrap;">Android 6.0 Marshmallow</h1>
-        <p class="dac-hero-description">Android의 다음 버전을 만나볼 준비가
-        되셨습니까? 여러분의 앱을 Nexus 5, 6, 9 및 Player에서 테스트해보십시오. </p>
-
-        <a class="dac-hero-cta" href="{@docRoot}preview/index.html">
+    <div class="col-7of16 col-push-9of16" style="padding-left:2em;">
+      <a href="{@docRoot}preview/index.html">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
+        <p class="dac-hero-description">
+          Get ready for the next version of Android!
+          <strong>Test your apps</strong> on Nexus and other devices. Support new system
+          behaviors to <strong>save power and memory</strong>.
+          Extend your apps with <strong>multi-window UI</strong>,
+          <strong>direct reply notifications</strong> and more.
+        </p>
+        <a class="dac-hero-cta" href="/preview/index.html">
           <span class="dac-sprite dac-auto-chevron"></span>
-          지금 시작하세요!
-        </a><br>
-        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
+          Learn more
+        </a><!--<br>
+        <a class="dac-hero-cta" href="/preview/support.html">
           <span class="dac-sprite dac-auto-chevron"></span>
-          Developer Preview 3 (final SDK)</a>
-      </div>
+          Update to Developer Preview (final SDK)
+        </a><br>-->
+      </a>
+    </div>
+    <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:0em;padding-right:1.5em;">
+      <a href="{@docRoot}preview/index.html">
+        <img style="" class="dac-hero-image" src="/images/home/n-preview-hero.png"
+             srcset="/images/home/n-preview-hero.png 1x,
+             /images/home/n-preview-hero_2x.png 2x">
+        </a>
     </div>
   </div>
-</a>
-</article></section>
+</section>
 
-<div class="actions-bar dac-expand dac-invert">
+<div id="useUpdatedTemplates" style="display:none" class="dac-section dac-slim dac-gray dac-expand">
   <div class="wrap dac-offset-parent">
     <a class="dac-fab dac-scroll-button" data-scroll-button href="#build-apps">
       <i class="dac-sprite dac-arrow-down-gray"></i>
     </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}sdk/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Get the SDK
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}samples/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Browse sample code
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}distribute/stories/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Watch stories
+        </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+    <a class="dac-fab dac-scroll-button" data-scroll-button="" href="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
     <div class="actions">
       <div><a href="{@docRoot}sdk/index.html">
         <span class="dac-sprite dac-auto-chevron-large"></span>
@@ -50,17 +89,15 @@
         <span class="dac-sprite dac-auto-chevron-large"></span>
         Browse Samples
       </a></div>
-      <div><a href="//www.youtube.com/user/androiddevelopers">
+      <div><a href="{@docRoot}distribute/stories/index.html">
         <span class="dac-sprite dac-auto-chevron-large"></span>
-        Watch Videos
+        Watch Stories
       </a></div>
     </div><!-- end .actions -->
   </div><!-- end .wrap -->
-</div><!-- end .actions-bar -->
+</div>
 
-
-
-<section class="dac-section dac-section-light" id="build-apps"><div class="wrap">
+<section class="dac-section dac-light" id="build-apps"><div class="wrap">
   <h1 class="dac-section-title">Build Beautiful Apps</h1>
   <div class="dac-section-subtitle">
     Resources to get you started with designing and developing for Android.
diff --git a/docs/html-intl/intl/ko/preview/api-overview.jd b/docs/html-intl/intl/ko/preview/api-overview.jd
deleted file mode 100644
index f9308b1..0000000
--- a/docs/html-intl/intl/ko/preview/api-overview.jd
+++ /dev/null
@@ -1,521 +0,0 @@
-page.title=API 개요
-page.keywords=미리 보기, SDK, 호환성
-page.tags=previewresources, androidm
-sdk.platform.apiLevel=22-mnc
-page.image=images/cards/card-api-overview_16-9_2x.png
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>이 문서의 내용
-    <a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
-        <span class="more">더 보기</span>
-        <span class="less" style="display:none">숨기기</span></a></h2>
-
-<ol id="toc44" class="hide-nested">
-  <li><a href="#app-linking">앱 연결</a></li>
-  <li><a href="#backup">앱용 자동 백업</a></li>
-  <li><a href="#authentication">인증</a>
-    <ol>
-      <li><a href="#fingerprint-authentication">지문 인증</a></li>
-      <li><a href="#confirm-credential">확인 자격 증명</a></li>
-    </ol>
-  </li>
-  <li><a href="#direct-share">직접 공유</a></li>
-  <li><a href="#voice-interactions">음성 상호작용</a></li>
-  <li><a href="#assist">지원 API</a></li>
-  <li><a href="#notifications">알림</a></li>
-  <li><a href="#bluetooth-stylus">블루투스 스타일러스 지원</a></li>
-  <li><a href="#ble-scanning">블루투스 저전력 스캔 개선</a></li>
-  <li><a href="#hotspot">핫스팟 2.0 릴리스 1 지원</a></li>
-  <li><a href="#4K-display">4K 디스플레이 모드</a></li>
-  <li><a href="#behavior-themeable-colorstatelists">테마 지정 가능 ColorStateLists</a></li>
-  <li><a href="#audio">오디오 기능</a></li>
-  <li><a href="#video">비디오 기능</a></li>
-  <li><a href="#camera">카메라 기능</a>
-    <ol>
-      <li><a href="#flashlight">Flashlight API</a></li>
-      <li><a href="#reprocessing">카메라 재처리</a></li>
-    </ol>
-  </li>
-  <li><a href="#afw">Android for Work 기능</a></li>
-</ol>
-
-<h2>API 차이점</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">M 미리 보기에 대한 API 레벨 22 &raquo;</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M 개발자 미리 보기에서는 다가오는 Android 플랫폼 릴리스를 미리 볼 수 있도록 하였습니다. 이 릴리스는 사용자와 앱 개발자를 위한 여러 가지 새 기능을 제공합니다.
-
- 이 문서에서는 가장 중요한 API를 몇 가지 소개합니다.</p>
-
-<p>M 개발자 미리 보기는 <strong>개발자 얼리 어답터</strong>와 <strong>테스터</strong>를 위해 마련된 것입니다.
- Android 프레임워크가 나아갈 방향에 영향을 미치는 데 관심이 있으시다면, <a href="{@docRoot}preview/setup-sdk.html">M 개발자 미리 보기를 시도해 보시고</a> 피드백을 보내주세요!
-
-
-</p>
-
-<p class="caution"><strong>주의:</strong> M 개발자 미리 보기를 사용하는 앱을 Google Play 스토어에 게시하지 마세요.
-</p>
-
-<p class="note"><strong>참고:</strong> 이 문서에서 종종 언급하는 클래스와 메서드 중에는 아직 <a href="{@docRoot}">developer.android.com</a>에서 참조 자료로 이용할 수 없는 것도 있습니다.
- 이와 같은 API 요소는 이 문서에서 {@code code style}로 형식 지정되어 있습니다(하이퍼링크 없이).
- 이러한 요소에 대한 임시 API 관련 문서가 필요한 경우, <a href="{@docRoot}preview/download.html#docs">미리 보기 참조</a>를 다운로드하세요.
-</p>
-
-<h3>중요한 동작 변경</h3>
-
-<p>이전에 Android용 앱을 게시한 적이 있는 경우, 플랫폼 변경으로 인해 앱이 영향받을 수 있다는 점을 유의하세요.
-</p>
-
-<p>완전한 정보는 <a href="behavior-changes.html">동작 변경</a>을 참조하세요.</p>
-
-<h2 id="app-linking">앱 연결</h2>
-<p>이 미리 보기는 더욱 강력한 앱 연결을 제공하여 Android의 인텐트 시스템을 한층 강화합니다. 이 기능을 사용하면 앱을 본인이 소유한 웹 도메인과 연관시킬 수 있습니다.
- 플랫폼은 이 연관 관계를 근거로 특정한 웹 링크를 처리하는 데 사용할 기본 앱을 결정할 수 있고 사용자에게 앱을 선택하라는 메시지를 건너뛸 수 있습니다. 이 기능을 구현하는 방법을 알아보려면 <a href="{@docRoot}preview/features/app-linking.html">앱 연결</a>을 참조하세요.
-
-
-
-
-<h2 id="backup">앱용 자동 백업</h2>
-<p>시스템에서 이제 앱에 대한 완전한 데이터 백업과 복원을 자동으로 수행합니다. 이 동작은 앱 대상 지정 M 미리 보기에 대한 기본으로 활성화되며, 추가 코드를 전혀 추가하지 않아도 됩니다.
- 사용자가 Google 계정을 삭제하면 계정의 백업 데이터도 함께 삭제됩니다.
- 이 기능의 작동 원리와 파일 시스템에서 백업 내용 구성하는 방법에 대해 알아보려면 <a href="{@docRoot}preview/backup/index.html">앱용 자동 백업</a>을 참조하세요.
-
-</p>
-
-<h2 id="authentication">인증</h2>
-<p>이 미리 보기에서는 사용자를 인증할 때 지원되는 기기에서 지문 스캔을 사용하도록 해주는 새로운 API를 제공합니다. 또한 기기 잠금 해제 메커니즘(예: 화면 잠금 비밀번호)을 사용해 사용자의 마지막 인증 시간을 확인할 수도 있습니다.
-
- 이러한 API는 <a href="{@docRoot}training/articles/keystore.html">Android Keystore 시스템</a>과 함께 사용하세요.
-</p>
-
-<h3 id="fingerprint-authentication">지문 인증</h3>
-
-<p>지문 스캔을 통해 사용자를 인증하려면 새로운 {@code android.hardware.fingerprint.FingerprintManager} 클래스의 인스턴스를 가져와 {@code FingerprintManager.authenticate()} 메서드를 호출하세요.
-
- 앱이 지문 센서가 있는 호환되는 기기에서 실행되고 있어야 합니다.
- 지문 인증 흐름에 대한 사용자 인터페이스를 앱에 구현해야 하며, UI에 표준 Android 지문 아이콘을 사용해야 합니다. 이 Android 지문 아이콘({@code c_fp_40px.png})은 <a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">샘플 앱</a>에 포함되어 있습니다. 지문 인증을 사용하는 앱을 여러 개 개발하는 경우, 각 앱이 사용자의 지문을 따로따로 인증해야 한다는 사실을 명심하세요.
-
-
-
-
-</p>
-
-<p>앱에서 이 기능을 사용하려면 우선 매니페스트에 {@code USE_FINGERPRINT} 권한을 추가해야 합니다.
-</p>
-
-<pre>
-&lt;uses-permission
-        android:name="android.permission.USE_FINGERPRINT" /&gt;
-</pre>
-
-<img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-
-<p>지문 인증의 앱 구현을 확인하려면, <a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">지문 대화 샘플</a>을 참조하세요.
-
-</p>
-
-<p>이 기능을 테스트하는 경우, 다음 단계를 따르면 됩니다.</p>
-<ol>
-<li>아직 Android SDK 도구 수정 버전 24.3을 설치합니다(설치하지 않은 경우).</li>
-<li>에뮬레이터에 새 지문을 등록하려면 <strong>설정 &gt; 보안 &gt; 지문</strong>으로 이동한 다음, 등록 지침을 따르면 됩니다.
-</li>
-<li>에뮬레이터를 사용하여 지문 터치 이벤트를 에뮬레이트하되 다음 명령을 사용하세요.
- 잠금 화면이나 앱에서 지문 터치 이벤트를 에뮬레이트할 때에도 같은 명령을 사용합니다.
-
-<pre class="no-prettyprint">
-adb -e emu finger touch &lt;finger_id&gt;
-</pre>
-<p>Windows에서는 {@code telnet 127.0.0.1 <emulator-id>}에 뒤이어 {@code finger touch <finger_id>}를 실행해야 할 수도 있습니다.
-
-</p>
-</li>
-</ol>
-
-<h3 id="confirm-credential">확인 자격 증명</h3>
-<p>앱에서 사용자를 인증할 때 해당 사용자가 기기를 마지막으로 잠금 해제한 시간을 근거로 할 수 있습니다. 이 기능을 사용하면 사용자가 앱에 따라 각기 다른 비밀번호를 기억할 필요가 없어지고, 개발자는 자신만의 인증 사용자 인터페이스를 구현하지 않아도 됩니다.
-
- 앱에서 이 기능을 사용하려면 사용자 인증에 대한 공개 또는 비밀 키 구현과 함께 사용해야 합니다.
-</p>
-
-<p>사용자를 성공적으로 인증한 다음 같은 키를 재사용하기 위한 시간 초과 기간을 설정하려면, 새로운 {@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()} 메서드를 호출하세요. {@link javax.crypto.KeyGenerator} 또는 {@link java.security.KeyPairGenerator}를 설정할 때 사용하면 됩니다.
-
-
-
- 현재 이 기능은 대칭형 암호화 작동에 맞게 작동합니다.
-</p>
-
-<p>재인증 대화창을 과도하게 표시하는 것을 삼가세요. 우선 앱에서 암호화 객체 사용을 시도해보고, 제한 시간이 만료되면 {@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()} 메서드를 사용해 앱 내에서 해당 사용자를 재인증하면 됩니다.
-
-
-
-</p>
-
-<p>이 기능의 앱 구현을 확인하려면, <a href="https://github.com/googlesamples/android-ConfirmCredential" class="external-link">확인 자격 증명 샘플</a>를 참조하세요.
-
-</p>
-
-<h2 id="direct-share">직접 공유</h2>
-
-<img src="{@docRoot}preview/images/direct-share-screen.png" srcset="{@docRoot}preview/images/direct-share-screen.png 1x, {@docRoot}preview/images/direct-share-screen_2x.png 2x" style="float:right; margin:0 0 20px 30px" width="312" height="329" />
-
-<p>이 미리 보기에서는 사용자가 공유 기능을 간편하고 신속하게 이용할 수 있도록 해주는 API를 제공합니다. 이제 앱에서 특정 액티비티를 시작하는 <em>직접 공유 대상</em>을 정의할 수 있습니다. 이와 같은 직접 공유 대상은 <em>공유</em> 메뉴를 통해 사용자에게 노출됩니다.
-
- 이 기능을 사용하면 사용자가 다른 앱 내의 대상(예: 연락처)에 대해 콘텐츠를 공유할 수 있습니다.
- 예를 들어, 직접 공유 대상이 다른 소셜 네트워크 앱에서 액티비티를 시작하면 사용자가 해당 앱에 있는 특정 친구나 커뮤니티와 콘텐츠를 공유할 수 있습니다.
-
-</p>
-
-<p>직접 공유 대상을 활성화하려면 반드시 {@code android.service.}
- <br>
-{@code chooser.ChooserTargetService} 클래스를 확장하는 클래스를 정의해야 합니다. 매니페스트에서 {@code ChooserTargetService}를 선언하고
- 해당 선언 내에서 {@code BIND_CHOOSER_TARGET_SERVICE} 권한을 지정하고 {@code SERVICE_INTERFACE} 작업으로 인텐트 필터를 지정합니다.
-
-</p>
-<p>다음 예는 매니페스트에서 {@code ChooserTargetService}를 선언할 수 있는 방법입니다.
-</p>
-<pre>
-&lt;service android:name=".ChooserTargetService"
-        android:label="&#64;string/service_name"
-        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"&gt;
-    &lt;intent-filter&gt;
-        &lt;action android:name="android.service.chooser.ChooserTargetService" /&gt;
-    &lt;/intent-filter&gt;
-&lt;/service&gt;
-</pre>
-
-<p>{@code ChooserTargetService}에 노출하고자 하는 액티비티마다 {@code <meta-data>} 요소를 하나씩 추가하고, 앱 매니페스트에 {@code "android.service.chooser.chooser_target_service"} 이름을 추가합니다.
-
-
-</p>
-
-<pre>
-&lt;activity android:name=".MyShareActivity”
-        android:label="&#64;string/share_activity_label"&gt;
-    &lt;intent-filter>
-        &lt;action android:name="android.intent.action.SEND" /&gt;
-    &lt;/intent-filter>
-&lt;meta-data
-        android:name="android.service.chooser.chooser_target_service"
-        android:value=".ChooserTargetService" /&gt;
-&lt;/activity>
-</pre>
-
-<h2 id="voice-interactions">음성 상호작용</h2>
-<p>
-이 미리 보기에서 제공하는 새로운 음성 상호작용 API는 <a href="https://developers.google.com/voice-actions/" class="external-link">음성 액션</a>과 같이 앱에 대화형 음성 환경을 구축할 수 있도록 합니다.
-
- {@code android.app.Activity.isVoiceInteraction()} 메서드를 호출하여 액티비티가 음성 액션에 대응하여 시작된 것인지 알아보세요.
-
- 이 경우에 해당되면, 앱이 {@code android.app.VoiceInteractor} 클래스를 사용하여 사용자로부터 음성 확인을 요청하거나, 선택 항목 목록에서 선택하게 하는 등 여러 가지 일을 할 수 있습니다.
-
- 음성 액션 구현에 대한 자세한 정보는 <a href="https://developers.google.com/voice-actions/interaction/" class="external-link">음성 액션 개발자 사이트</a>를 참조하세요.
-
-</p>
-
-<h2 id="assist">지원 API</h2>
-<p>
-이 미리 보기에서는 사용자가 도우미를 통해 앱에 참여하게 하는 새로운 방식을 제시합니다. 이 기능을 사용하려면, 사용자가 현재 컨텍스트를 사용하기 위해 도우미를 활성화해야 합니다.
- 일단 활성화하고 나면 <strong>홈</strong> 버튼을 길게 눌러 해당 도우미를 어느 앱에서나 불러낼 수 있습니다.
-</p>
-<p>앱이 현재 컨텍스트를 도우미와 공유하지 않기로 선택하는 경우, {@link android.view.WindowManager.LayoutParams#FLAG_SECURE} 플래그를 설정하면 됩니다.
- 플랫폼이 도우미에게 전달하는 일반적인 일련의 정보 외에도 앱이 추가적인 정보를 공유할 수 있도록 하려면 새로 나온 {@code android.app.Activity.AssistContent} 클래스를 사용할 수 있습니다.
-
-</p>
-
-<p>도우미에게 앱에서 가져온 추가 컨텍스트를 제공하려면, 다음 단계를 따르면 됩니다.</p>
-
-<ol>
-<li>{@link android.app.Application.OnProvideAssistDataListener} 인터페이스를 구현합니다.</li>
-<li>{@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()}를 사용하여 이 수신기를 등록합니다.
-</li>
-<li>액티비티에 따라 각기 다른 상황별 정보를 제공하려면 {@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()} 콜백을 재정의하고, 선택 사항으로 새로운 {@code Activity.onProvideAssistContent()} 콜백도 재정의합니다.
-
-
-</ol>
-
-<h2 id="notifications">알림</h2>
-<p>이 미리 보기에서는 알림 기능에 다음과 같은 API 변경을 추가합니다.</p>
-<ul>
-  <li>새 {@code NotificationListenerService.INTERRUPTION_FILTER_ALARMS} 필터 수준이 추가되었습니다. 이것은 새로운 <em>알람 전용</em> 방해 금지 모드에 상응하는 것입니다.
-</li>
-  <li>새 {@code Notification.CATEGORY_REMINDER} 카테고리 값이 추가되었습니다. 이것은 다른 이벤트로부터 사용자가 일정을 지정한 미리 알림({@link android.app.Notification#CATEGORY_EVENT}) 및 알람({@link android.app.Notification#CATEGORY_ALARM})를 구분하는 데 사용됩니다.
-
-
-</li>
-  <li>새 {@code android.graphics.drawable.Icon} 클래스가 추가되었습니다. 이것은 {@code Notification.Builder.setSmallIcon(Icon)} 및 {@code Notification.Builder.setLargeIcon(Icon)} 메서드를 통해 알림에 첨부할 수 있습니다.
-
-</li>
-  <li>새 {@code NotificationManager.getActiveNotifications()} 메서드가 추가되었습니다. 이것을 사용하면 앱이 자신의 알림 중 현재 활성 상태인 것이 무엇인지 알아낼 수 있습니다.
- 이 기능을 사용하는 앱 구현을 확인하려면 <a href="https://github.com/googlesamples/android-ActiveNotifications" class="external-link">활성 알림 샘플</a>을 참조하세요.
-</li>
-</ul>
-
-<h2 id="bluetooth-stylus">블루투스 스타일러스 지원</h2>
-<p>이 미리 보기에서는 블루투스 스타일러스를 사용하는 사용자 입력에 대한 지원을 개선하여 제공합니다. 사용자는 전화기나 태블릿을 호환되는 블루투스 스타일러스와 페어링하고 이에 연결할 수 있습니다.
-  연결된 동안 터치 스크린에서 가져온 위치 정보가 스타일러스에서 가져온 압력 및 버튼 정보와 합쳐져 하나의 터치 스크린을 사용할 때보다 훨씬 폭넓은 표현을 제공합니다.
-
- 앱이 스타일러스 버튼 누르기를 수신 대기하고 보조 작업을 수행하도록 하려면, 액티비티에 새로운 {@code View.onStylusButtonPressListener} 및 {@code GestureDetector.OnStylusButtonPressListener} 콜백을 등록하면 됩니다.
-
-
-</p>
-
-<p>스타일러스 버튼 상호작용을 감지하려면 {@link android.view.MotionEvent} 메서드와 상수를 사용하세요.
-</p>
-<ul>
-<li>사용자가 앱의 화면에 있는 버튼으로 스타일러스를 터치하면 {@link android.view.MotionEvent#getToolType(int) getTooltype()} 메서드가 {@link android.view.MotionEvent#TOOL_TYPE_STYLUS}를 반환합니다.
-
-</li>
-<li>M 미리 보기를 대상으로 삼는 앱의 경우, {@link android.view.MotionEvent#getButtonState() getButtonState()} 메서드는 사용자가 기본 스타일러스 버튼을 누르면 {@code MotionEvent.STYLUS_BUTTON_PRIMARY}를 반환합니다.
-
-
- 스타일러스에 두 번째 버튼이 있는 경우, 사용자가 그것을 누르면 같은 메서드가 {@code MotionEvent.STYLUS_BUTTON_SECONDARY}를 반환합니다.
- 사용자가 두 버튼을 동시에 누르는 경우, 이 메서드는 두 값을 'OR'로 함께 묶어 모두 반환합니다({@code STYLUS_BUTTON_PRIMARY|STYLUS_BUTTON_SECONDARY}).
-
-</li>
-<li>
-더 낮은 플랫폼 버전을 대상으로 하는 앱의 경우, {@link android.view.MotionEvent#getButtonState() getButtonState()} 메서드가 {@link android.view.MotionEvent#BUTTON_SECONDARY}(기본 스타일러스 버튼 누름)를 반환하고, {@link android.view.MotionEvent#BUTTON_TERTIARY}(보조 스타일러스 버튼 누름)를 반환하거나 둘 모두를 반환합니다.
-
-
-
-</li>
-</ul>
-
-<h2 id="ble-scanning">블루투스 저전력 스캔 개선</h2>
-<p>
-앱이 블루투스 저전력 스캔을 수행하는 경우, 새로운 {@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} 메서드를 사용해 콜백에 알림을 원하는 시점을 지정할 수 있습니다.즉, 정해진 {@link android.bluetooth.le.ScanFilter}에 일치하는 광고 패킷을 처음 찾았을 때와 이것을 일정한 시간 동안 확인하지 못했을 때에만 콜백에 알리도록 하면 됩니다.
-
-
-
- 스캔 기능에 대해 이런 식으로 접근하면 이전 버전의 플랫폼에서 제공되었던 것에 비해 훨씬 전력 효율적입니다.
-
-</p>
-
-<h2 id="hotspot">핫스팟 2.0 릴리스 1 지원</h2>
-<p>
-이 미리 보기에서는 Nexus 6 및 Nexus 9 기기에서의 핫스팟 2.0 릴리스 1 사양에 대한 지원을 추가합니다. 앱에 핫스팟 2.0 자격 증명을 프로비저닝하려면 {@link android.net.wifi.WifiEnterpriseConfig} 클래스의 새 메서드를 사용할 수 있습니다(예: {@code setPlmn()} 및 {@code setRealm()}).
-
-
- {@link android.net.wifi.WifiConfiguration} 객체에서는 {@link android.net.wifi.WifiConfiguration#FQDN} 및 {@code providerFriendlyName} 필드를 설정하면 됩니다. 새로 나온 {@code ScanResult.PasspointNetwork} 속성이 감지된 네트워크가 핫스팟 2.0 액세스 지점을 나타내는지 여부를 알려줍니다.
-
-
-
-</p>
-
-<h2 id="4K-display">4K 디스플레이 모드</h2>
-<p>이제 플랫폼에서 앱이 호환되는 하드웨어에서 디스플레이 해상도를 4K 렌더링으로 업그레이드하도록 요청할 수 있습니다.
- 현재의 물리적 해상도를 쿼리하려면 새로운 {@code android.view.Display.Mode} API를 사용할 수 있습니다.
- UI가 더 낮은 논리적 해상도에서 그려졌고 더 큰 물리적 해상도에 맞춰 확장된 경우, {@code Display.Mode.getPhysicalWidth()} 메서드가 반환하는 물리적 해상도가 {@link android.view.Display#getSize(android.graphics.Point) getSize()}가 보고하는 논리적 해상도와 다를 수 있다는 점을 유의하세요.
-
-
-</p>
-
-<p>앱이 실행되는 중에 시스템에 물리적 해상도를 변경하도록 요청할 수도 있습니다. 앱의 창에서 {@code WindowManager.LayoutParams.preferredDisplayModeId} 속성을 설정하면 됩니다.
-  이 기능은 4K 디스플레이 해상도로 전환하고자 하는 경우 무척 유용합니다.
- 4K 디스플레이 모드에서 UI는 계속 원래 해상도(예: 1080p)에서 렌더링되며 4K로 확장되지만, {@link android.view.SurfaceView} 객체는 원래 해상도에서 콘텐츠를 표시할 수 있습니다.
-
-</p>
-
-<h2 id="behavior-themeable-colorstatelists">테마 지정 가능 ColorStateLists</h2>
-<p>이제 M 미리 보기를 실행하는 기기에 대해 테마 속성이 {@link android.content.res.ColorStateList}에서 지원됩니다.
- {@link android.content.res.Resources#getColorStateList(int) getColorStateList()} 및 {@link android.content.res.Resources#getColor(int) getColor()} 메서드는 사용이 중단되었습니다.
-
- 이러한 API를 호출하려면, 대신 새로운 {@code Context.getColorStateList()} 또는 {@code Context.getColor()} 메서드를 호출하세요.
-
- 이 두 메서드는 v4 AppCompat 라이브러리에서도 {@link android.support.v4.content.ContextCompat}를 통해 이용할 수 있습니다.
-</p>
-
-<h2 id="audio">오디오 기능</h2>
-
-<p>이 미리 보기에서는 Android에서의 오디오 처리에 개선점을 더했습니다. </p>
-<ul>
-  <li><a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a> 프로토콜을 지원하는 새로운 {@code android.media.midi} API를 추가했습니다.
- 이와 같은 API를 사용하면 MIDI 이벤트를 전송 및 수신할 수 있습니다.
-</li>
-  <li>새 {@code android.media.AudioRecord.Builder} 및 {@code android.media.AudioTrack.Builder} 클래스를 추가하여 각각 디지털 오디오 캡처와 재생 객체를 생성하고, 오디오 소스와 싱크 속성을 구성하여 시스템 기본 설정을 재정의하도록 하였습니다.
-
-</li>
-  <li>오디오 및 입력 기기를 연관시키기 위한 API Hook이 추가되었습니다. 이것은 특히 앱이 사용자에게 게임 컨트롤러 또는 Android TV에 연결된 리모컨에서 음성을 검색하는 데 유용합니다. 사용자가 검색을 시작하면 시스템이 새로운 {@code android.app.Activity.onSearchRequested()} 콜백을 호출합니다.
-
-
- 사용자의 입력 기기에 마이크가 내장되어 있는지 판별하려면, 해당 콜백에서 {@link android.view.InputDevice} 객체를 검색한 다음 새 {@code InputDevice.hasMic()} 메서드를 호출하면 됩니다.
-
-</li>
-  <li>새 {@code android.media.AudioDevicesManager} 클래스를 추가하여 첨부된 소스와 싱크 오디오 기기 전체 목록을 검색할 수 있습니다.
- 이외에도, {@code android.media.OnAudioDeviceConnectionListener} 객체를 지정하여 오디오 기기가 연결되거나 연결 해제되었을 때 앱에 알릴 수도 있습니다.
-
-</li>
-</ul>
-
-<h2 id="video">비디오 기능</h2>
-<p>이 미리 보기에서는 비디오 처리 API에 새로운 기능을 추가합니다.</p>
-<ul>
-<li>새 {@code android.media.MediaSync} 클래스를 추가하여 여러 애플리케이션이 오디오와 비디오 스트림을 동기적으로 렌더링하는 데 지원하도록 하였습니다.
- 오디오 버퍼는 비블로킹 방식으로 제출된 다음 콜백을 통해 반환됩니다.
- 이것은 동적 재생 속도도 지원합니다.
-</li>
-<li>새 {@code MediaDrm.EVENT_SESSION_RECLAIMED} 이벤트를 추가하여 앱이 연 세션을 리소스 관리자가 회수했다는 내용을 나타낼 수 있습니다.
- 앱이 DRM 세션을 사용하는 경우, 이 이벤트를 처리해야 하고 회수된 세션을 사용하지 않도록 해야 합니다.
-
-</li>
-<li>새 {@code MediaCodec.CodecException.ERROR_RECLAIMED} 오류 코드를 추가했습니다. 이것은 코덱이 사용하는 미디어 리소스를 리소스 관리자가 회수했다는 내용을 나타냅니다.
- 이런 경우를 예외로 하고, 코덱은 종료 상태로 이동하면서 해제되어야 합니다.
-
-</li>
-<li>새 {@code MediaCodecInfo.CodecCapabilities.getMaxSupportedInstances()} 인터페이스를 추가하여 지원되는 동시 코덱 인스턴스의 최대 수에 대한 힌트를 얻을 수 있습니다.
-
-</li>
-<li>새 {@code MediaPlayer.setPlaybackParams()} 메서드로는 빠른 재생 또는 느린 동작 재생에 대한 미디어 재생 속도를 설정할 수 있습니다.
- 이는 또한 비디오와 함께 오디오 재생을 자동으로 늘리거나 속도를 높이기도 합니다.
-</li>
-</ul>
-
-<h2 id="camera">카메라 기능</h2>
-<p>이 미리 보기에는 다음과 같은 새 API를 제공하여 카메라의 플래시에 액세스하고 이미지를 재처리하는 카메라에 액세스할 수 있도록 했습니다.
-</p>
-
-<h3 id="flashlight">Flashlight API</h3>
-<p>카메라 기기에 플래시 장치가 있는 경우, {@code CameraManager.setTorchMode()} 메서드를 호출하여 카메라 기기를 열지 않고도 플래시 장치의 Torch 모드를 켜거나 끌 수 있습니다.
- 앱에는 플래시 장치 또는 카메라 기기에 대한 독점적인 소유권이 없습니다.
- Torch 모드는 꺼져 있다가 카메라 기기를 이용할 수 없게 될 때마다 이용 불가능한 상태가 되고, Torch 모드를 켜진 상태로 유지하던 다른 카메라 리소스를 이용할 수 없게 되면 이용 불가능하게 됩니다.
-
- 다른 앱도 {@code setTorchMode()}를 호출하여 Torch 모드를 끌 수 있습니다.
- Torch 모드를 켠 마지막 앱이 종료되면 Troch 모드도 꺼집니다.
-</p>
-
-<p>Torch 모드 상태에 대해 알림을 받기 위한 콜백을 등록하려면 {@code CameraManager.registerTorchCallback()} 메서드를 호출하면 됩니다.
- 콜백을 처음 등록하면 그 즉시, 현재 알려진 모든 카메라 기기(플래시 장치가 있는)의 Torch 모드 상태와 함께 호출됩니다.
-
- Torch 모드가 성공적으로 켜지거나 꺼지면 {@code CameraManager.TorchCallback.onTorchModeChanged()} 메서드가 불려나옵니다.
-</p>
-
-<h3 id="reprocessing">재처리 API</h3>
-<p>{@link android.hardware.camera2 Camera2} API를 확장하여 YUV를 지원하고 비공개 불투명 형식 이미지 재처리를 지원하게 되었습니다.
- 앱은 재처리 기능을 이용할 수 있는지 알아보기 위해 {@code CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES}를 통합니다.
- 기기가 재처리를 지원하는 경우, 재처리 가능한 카메라 캡처 세션을 생성하려면 {@code CameraDevice.createReprocessableCaptureSession()}을 호출하고 입력 버퍼 재처리를 위한 요청을 생성하면 됩니다.
-
-
-</p>
-
-<p>{@code ImageWriter} 클래스를 사용하여 카메라 재처리 입력에 입력 버퍼 흐름을 연결시키세요.
- 빈 버퍼를 가져오려면 다음과 같은 프로그래밍 모델을 따르면 됩니다.</p>
-
-<ol>
-<li>{@code ImageWriter.dequeueInputImage()} 메서드를 호출합니다.</li>
-<li>입력 버퍼에 이 데이터를 채웁니다.</li>
-<li>{@code ImageWriter.queueInputImage()} 메서드를 호출하여 해당 버퍼를 카메라에 전송합니다.</li>
-</ol>
-
-<p>{@code ImageWriter} 객체와 {@code android.graphics.ImageFormat.PRIVATE} 이미지를 함께 사용하는 경우, 앱이 이미지 데이터에 직접 액세스할 수 없습니다.
-
- 대신, 버퍼 사본 없이 {@code ImageWriter.queueInputImage()} 메서드를 호출하여 {@code ImageFormat.PRIVATE} 이미지를 {@code ImageWriter}에 직접 전달하면 됩니다.
-
-</p>
-
-<p>이제 {@code ImageReader} 클래스가 {@code android.graphics.ImageFormat.PRIVATE} 형식 이미지 스트림을 지원합니다.
- 이로써 앱이 {@code ImageReader} 출력 이미지의 원형 이미지 대기열을 유지하고 하나 이상의 이미지를 선택하여 이들을 {@code ImageWriter}에 보내 카메라 재처리를 할 수 있습니다.
-
-</p>
-
-<h2 id="afw">Android for Work 기능</h2>
-<p>이 미리 보기에는 다음과 같은 Android for Work에 대한 새 API가 포함되어 있습니다.</p>
-<ul>
-  <li><strong>회사 소유, 일회용 기기 제어 능력 향상:</strong> 이제 기기 소유자가 다음과 같은 설정을 제어하여 회사 소유, 일회용(COSU) 기기 관리를 한층 개선할 수 있습니다.
-
-
-  <ul>
-    <li>키가드를 비활성화하거나 다시 활성화하려면 {@code DevicePolicyManager.setKeyguardEnabledState()} 메서드를 사용하세요.
-</li>
-    <li>상태 표시줄(빠른 설정, 알림과 Google Now를 시작하는 탐색 스와이프 업 동작 포함)을 비활성화하거나 다시 활성화하려면 {@code DevicePolicyManager.setStatusBarEnabledState()} 메서드를 사용하세요.
-
-</li>
-    <li>안전 부팅을 비활성화하거나 다시 활성화하려면 {@link android.os.UserManager} 상수 {@code DISALLOW_SAFE_BOOT}를 사용하세요.
-</li>
-    <li>플러그인 상태에서 화면이 꺼지지 않도록 방지하려면 {@link android.provider.Settings.Global} 상수 {@code STAY_ON_WHILE_PLUGGED_IN}을 사용하세요.
-</li>
-  </ul>
-  </li>
-  <li><strong>기기 소유자의 앱 자동 설치 및 설치 제거:</strong> 이제 기기 소유자가 애플리케이션을 자동으로 설치하고 제거할 수 있습니다. 업무용 Google Play와는 따로 {@link android.content.pm.PackageInstaller} API를 사용하면 됩니다.
-
- 이제 사용자 상호작용 없이도 앱을 가져오고 설치하는 기기 소유자를 통해 기기를 프로비저닝할 수 있습니다.
- 이 기능은 Google 계정을 활성화하지 않고도 키오스크 또는 그와 같은 다른 기기를 원터치 방식으로 프로비저닝하는 데 유용합니다.
-</li>
-<li><strong>자동 엔터프라이즈 인증서 액세스: </strong> 사용자에게 인증서를 선택하라는 메시지가 표시되기 전에 앱이{@link android.security.KeyChain#choosePrivateKeyAlias(android.app.Activity,android.security.KeyChainAliasCallback,java.lang.String[],java.security.Principal[],java.lang.String,int,java.lang.String) choosePrivateKeyAlias()}를 호출하는 경우, 이제 프로필 또는 기기 소유자가 {@code DeviceAdminReceiver.onChoosePrivateKeyAlias()}를 호출하여 요청하는 애플리케이션에 자동으로 별칭을 제공할 수 있습니다.
-
-
-
- 이 기능을 사용하면 관리된 앱에 사용자 상호작용 없이도 인증서에 대한 액세스 권한을 부여할 수 있습니다.
-</li>
-<li><strong>시스템 업데이트 자동 수락:</strong> 시스템 업데이트 정책을 {@code DevicePolicyManager.setSystemUpdatePolicy()}로 설정하면, 이제 기기 소유자가 자동으로 시스템 업데이트를 수락할 수 있습니다(예: 키오스크 기기의 경우). 또는 업데이트를 연기하거나 사용자가 업데이트를 수행하지 못하도록 최대 30일까지 막을 수 있습니다.
-
-
- 이에 더해, 관리자가 매일 시간 창을 설정하여 여기에서 업데이트를 수행하도록 할 수 있습니다. 예를 들어, 키오스크 기기를 사용하지 않는 시간 중에 업데이트하도록 합니다.
- 시스템 업데이트를 사용할 수 있게 되면 시스템이 작업 정책 컨트롤러 앱에 시스템 업데이트 정책이 설정되어 있는지 확인하고, 그에 따라 동작합니다.
-
-
-</li>
-<li>
-<strong>인증서 설치 위임:</strong> 이제 프로필 또는 기기 소유자가 타사 앱에 권한을 부여하여 다음과 같은 {@link android.app.admin.DevicePolicyManager} 인증서 관리 API를 호출할 수 있습니다.
-
-
-<ul>
-  <li>{@link android.app.admin.DevicePolicyManager#getInstalledCaCerts(android.content.ComponentName)
-getInstalledCaCerts()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#hasCaCertInstalled(android.content.ComponentName,byte[])
-hasCaCertInstalled()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#installCaCert(android.content.ComponentName,byte[])
-installCaCert()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#uninstallCaCert(android.content.ComponentName,byte[])
-uninstallCaCert()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#uninstallAllUserCaCerts(android.content.ComponentName)
-uninstallAllUserCaCerts()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#installKeyPair(android.content.ComponentName,java.security.PrivateKey,java.security.cert.Certificate,java.lang.String)
-installKeyPair()}</li>
-</ul>
-</li>
-<li><strong>엔터프라이즈 공장 재설정 보호:</strong> 기기 소유자를 프로비저닝하는 경우, 이제 {@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS} 번들을 설정하여 공장 재설정 보호(FRP)를 잠금 해제하는 데 사용되는 매개변수를 구성할 수 있습니다.
-
- 이와 같은 매개변수는 기기를 재설정하여 FRP를 잠금 해제하도록 하고 기기를 프로비저닝하기로 한 다음에 NFC 프로그래머 앱이 제공할 수 있으며, 이전에 구성한 Google 계정도 필요하지 않습니다.
-
- 이와 같은 매개변수를 수정하지 않으면 FRP가 제자리에 유지되어 이전에 활성화한 Google 자격 증명 없이는 기기가 활성화되지 않도록 방지합니다.
-
-
-<p>이외에도 Google Play 서비스에 앱 제한을 설정하면 기기 소유자가 기기에서 활성화된 것을 대신할 대체 Google 계정을 지정하여 FRP를 잠금 해제하는 데 사용할 수 있습니다.
-</p>
-</li>
-<img src="{@docRoot}preview/images/work-profile-screen.png" srcset="{@docRoot}preview/images/work-profile-screen.png 1x, {@docRoot}preview/images/work-profile-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-<li><strong>데이터 사용량 추적:</strong> 새로운 {@code android.app.usage.NetworkStatsManager} 메서드를 사용하여 이제 프로필 또는 기기 소유자가 <strong>설정 &gt; 데이터</strong>에 표시되는 데이터 사용량 통계를 쿼리할 수 있습니다.
-
- 프로필 소유자에게는 자신이 관리하는 프로필에서 데이터를 쿼리할 권한이 자동으로 부여되는 반면, 기기 소유자의 경우에는 관리된 기본 사용자의 사용량 데이터에 대한 액세스 권한이 주어집니다.
-
-</li>
-<li><strong>런타임 권한 관리:</strong>
-<p>프로필 또는 기기 소유자는 모든 애플리케이션의 모든 런타임 요청에 대해 권한 정책을 설정할 수 있습니다. {@code DevicePolicyManager.setPermissionPolicy()}를 사용해 사용자에게 정상적으로 권한을 부여하라는 메시지를 표시하거나, 자동으로 권한을 허용하거나 해당 권한을 자동으로 거부하도록 할 수도 있습니다.
-
-
- 후자의 정책이 설정된 경우, 사용자는 앱의 <strong>설정</strong> 내에 있는 권한 화면 안에서 프로필 또는 기기 소유자가 선택한 내용을 수정할 수 없습니다.
-
-</p></li>
-<li><strong>설정 VPN:</strong> 이제 VPN 앱이 <strong>설정 &gt; 더 보기 &gt; VPN</strong>에 표시됩니다. 이외에도, VPN 사용량에 수반되는 알림은 이제 VPN 구성 방식만 구체적으로 다루게 되었습니다.
-
-
- 프로필 소유자의 경우, 이러한 알림은 VPN이 관리된 프로필에 대해 구성되었는지, 아니면 개인 프로필에 구성되었거나 둘 모두에 구성되었는지 여부에 한정됩니다.
- 기기 소유자의 경우, 이 알림은 VPN이 기기 전체에 대해 구성되었는지 여부만 나타냅니다.
-</li>
-<li><strong>작업 상태 알림:</strong> 이제 관리된 프로필에서 온 앱에 전경에 있는 액티비티가 있을 때마다 상태 표시줄 서류가방 아이콘이 나타납니다.
- 또한, 기기가 관리된 프로필 내 앱의 액티비티에 대해 직접 잠금 해제된 경우, 알림 메시지가 표시되어 사용자에게 지금 작업 프로필 내에 있다는 사실을 알려주기도 합니다.
-
-
-</li>
-</ul>
-
-<p class="note">
-  M 개발자 미리 보기의 모든 API 변경 내용에 대한 상세한 정보는 <a href="{@docRoot}preview/download.html">API 차이점 보고서</a>를 참조하세요.
-</p>
diff --git a/docs/html-intl/intl/ko/preview/backup/index.jd b/docs/html-intl/intl/ko/preview/backup/index.jd
deleted file mode 100644
index b3952d5..0000000
--- a/docs/html-intl/intl/ko/preview/backup/index.jd
+++ /dev/null
@@ -1,327 +0,0 @@
-page.title=앱용 자동 백업
-page.tags=backup, previewresources, androidm
-page.keywords=백업, 자동 백업, 미리 보기
-page.image=images/cards/card-auto-backup_2x.png
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>이 문서의 내용</h2>
-      <ol>
-        <li><a href="#overview">개요</a></li>
-        <li><a href="#configuring">데이터 백업 구성</a></li>
-        <li><a href="#testing">백업 구성 테스트</a></li>
-        <li><a href="#issues">알려진 문제</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  사용자는 앱 내에서 데이터를 생성하고 기본 설정을 설정하는 데 상당한 시간과 노력을 들이는 경우가 빈번합니다.
- 사용자가 고장 난 기기를 교체하거나 새것으로 업그레이드하면 그러한 데이터를 보존해 두는 것이 훌륭한 사용자 환경을 보장하는 데 중요한 부분을 차지합니다.
- Android M 미리 보기 시스템에서 실행되는 기기는 이러한 상황에서 사용자에게 좋은 환경을 보장하는 데 도움을 주기 위해 앱 데이터를 Google Drive에 자동으로 백업합니다.
-
- 이런 앱 데이터는 사용자가 기기를 바꾸거나 업그레이드하면 자동으로 복원됩니다.
-
-</p>
-
-<p>
-  자동 백업 기능은 Android M 미리 보기에서 실행되는 기기에 설치된 모든 앱에 활성화되어 있습니다. 달리 앱 코드를 추가하지 않아도 됩니다.
- 시스템은 사용자에게 자동 데이터 백업에서 옵트아웃할 수도 있습니다.
- 앱에서 어떤 데이터를 백업할지 제한하는 쪽을 선택할 수도 있습니다.
-</p>
-
-<p>
-  이 문서에서는 새로운 시스템 동작과 앱에 대해 어느 데이터를 백업할지 지정하는 방법을 설명합니다.
-
-</p>
-
-<h2 id="overview">개요</h2>
-
-<p>
-  자동 백업 기능은 앱이 사용자 기기에서 생성한 데이터를 보존하기 위해 해당 데이터를 사용자의 Google Drive 계정에 업로드하고 암호화합니다.
- 데이터 저장에 대해 개발자나 사용자에게 아무런 요금도 부과하지 않고, 저장된 데이터는 사용자 개인의 Drive 할당량을 사용한 것으로 감안하지 않습니다.
- M 미리 보기 시행 기간 중 사용자는 Android 앱 한 개당 최대 25MB까지 저장할 수 있습니다.
-
-</p>
-
-<p>
-  자동 백업은 24시간마다 한 번씩, 기기가 유휴 상태일 때, 충전 중일 때 및 Wi-Fi 네트워크에 연결될 때마다 수행합니다.
- 이러한 조건에 부합하면 백업 관리자 서비스가 이용 가능한 모든 백업 데이터를 클라우드에 업로드합니다.
- 사용자가 새 기기로 전환하거나 백업된 앱을 제거했다가 다시 설치하면 복원 작업이 백업된 데이터를 새로 설치된 앱의 데이터 디렉터리 안에 복사합니다.
-
-
-</p>
-
-<p class="note">
-  <strong>참고:</strong> 레거시 <a href="{@docRoot}google/backup/index.html">Android 백업 서비스</a>를 이용하는 앱의 경우, 이 새 동작이 적용되지 않고 기존 백업 동작이 평소처럼 작동합니다.
-
-
-</p>
-
-
-<h3 id="auto-exclude">자동으로 배제된 데이터 파일</h3>
-
-<p>
-  데이터 중에는 예를 들어 임시 파일과 캐시 등 백업하지 않아도 되는 것도 있습니다. 따라서 자동 백업 서비스는 특정 데이터 파일을 기본적으로 배제합니다.
-
-</p>
-
-<ul>
-  <li>디렉터리 내의 파일 중 {@link android.content.Context#getCacheDir
-    getCacheDir()} 및 {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()}
- 메서드로 참조되는 파일.
-  </li>
-
-  <li>외부 저장소에 위치한 파일 중(디렉터리에 상주하는 것이 아닌 한) 
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
- 메서드로 참조되는 파일.
-  </li>
-
-  <li>디렉터리에 위치한 파일 중 
-{@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()} 메서드로 참조되는 파일.
-  </li>
-</ul>
-
-<h2 id="configuring">데이터 백업 구성</h2>
-
-<p>
-  M 미리 보기 기기에 설치된 앱이 생성한 데이터는 모두 백업됩니다. 다만 이전 섹션에서 나열한 자동으로 배제되는 파일만은 예외입니다.
- 앱에서 어느 데이터를 백업할지 좀 더 상세하게 제한하고 구성하려면 앱 매니페스트에 있는 설정을 사용하면 됩니다.
-
-</p>
-
-<h3 id="include-exclude">데이터 포함 또는 배제</h3>
-
-<p>
-  앱에 필요한 데이터가 무엇이며 어떤 식으로 저장하는지에 따라 특정 파일이나 디렉터리를 포함 또는 배제하기 위해 특정한 규칙을 설정해야 할 수 있습니다.
- 자동 백업 서비스는 이러한 백업 규칙 설정을 지원하는 데 XML 구성 파일과 앱 매니페스트를 사용하는 방식을 씁니다.
-
- 앱 매니페스트에서는 다음 예에서 표시된 것처럼 백업 구성표 구성 파일을 지정하면 됩니다.
-
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:tools="http://schemas.android.com/tools"
-        package="com.my.appexample"&gt;
-    &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
-    &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
-    &lt;app ...
-<strong>        android:fullBackupContent="&#64;xml/mybackupscheme"&gt;</strong>
-    &lt;/app&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
-
-<p>
-  이 예시 코드에서는 <code>android:fullBackupContent</code> 특성이 XML 파일을 나타냅니다. 이는 앱 개발 프로젝트의 <code>res/xml/</code> 디렉터리 내에 위치하며, 일명 <code>mybackupscheme.xml</code>이라고 합니다.
-
- 이 구성 파일에는 어느 파일이 백업되는지에 대한 규칙이 포함되어 있습니다.
- 다음 예시 코드는 특정 파일을 백업에서 배제하는 구성 파일을 나타낸 것입니다.
-
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;full-backup-content&gt;
-    &lt;exclude domain="database" path="device_info.db"/&gt;
-&lt;/full-backup-content&gt;
-</pre>
-
-<p>
-  이 예에서의 백업 구성은 특정 데이터베이스 파일만 백업되지 않게 배제합니다.
-  나머지 파일은 모두 백업됩니다.
-</p>
-
-<h4>백업 구성 구문</h4>
-
-<p>
-  백업 서비스 구성을 사용하면 구체적으로 어느 파일을 백업에 포함시키고 백업에서 배제할지 지정할 수 있게 해줍니다.
- 데이터 백업 구성 XML 파일에 사용되는 구문은 다음과 같습니다.
-</p>
-
-<pre>
-&lt;full-backup-content&gt;
-    &lt;include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
-    &lt;exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
-&lt;/full-backup-content&gt;
-</pre>
-
-<p>
-  다음의 요소와 특성을 사용하면 어느 파일을 백업에 포함시키거나 백업에서 배제할지 지정할 수 있게 해줍니다.
-
-</p>
-
-<ul>
-  <li>
-  <code>&lt;include&gt;</code>. 이 요소는 일련의 리소스를 백업하기로 지정하는 경우 사용하십시오. 시스템이 기본적으로 앱 안의 모든 데이터를 백업하는 대신 이 방식을 쓰면 됩니다.
- 예를 들어 <code>&lt;include&gt;</code> 태그를 지정하면 시스템은 이 요소로 <em>지정된 리소스만</em> 백업합니다.
-
-
-  </li>
-
-  <li>
-  <code>&lt;exclude&gt;</code>. 이 요소는 일련의 리소스를 백업에서 배제하기로 지정하는 데 사용하세요.
- 시스템이 앱 안의 모든 데이터를 백업하되, 이 요소로 지정된 리소스만 제외합니다.
-
-  </li>
-
-  <li>
-  <code>domain.</code> 백업에 포함시키거나 백업에서 배제하고자 하는 리소스 유형입니다. 이 특성에 대해 지정할 수 있는 유효한 값에는 다음과 같은 것들이 있습니다.
-
-  </li>
-
-  <li style="list-style: none">
-  <ul>
-    <li>
-    <code>root</code>. 리소스가 앱의 루트 디렉터리에 있음을 나타냅니다.
-    </li>
-
-    <li>
-    <code>file</code>. 디렉터리 내에 있는 리소스 중 
-    {@link android.content.Context#getFilesDir getFilesDir()} 메서드에 의해 반환된 것에 상응합니다.
-    </li>
-
-    <li>
-    <code>database</code>. 
-    {@link android.content.Context#getDatabasePath getDatabasePath()} 메서드에 의해, 또는 
-    {@link android.database.sqlite.SQLiteOpenHelper} 클래스를 사용하여 반환된 데이터베이스에 상응합니다.
-    </li>
-
-    <li>
-    <code>sharedpref</code>. {@link android.content.Context#getSharedPreferences getSharedPreferences()}
- 메서드에 의해 반환된 {@link android.content.SharedPreferences} 객체에
- 상응합니다.
-    </li>
-
-    <li>
-    <code>external</code>. 리소스가 외부 저장소에 있으며, 디렉터리 내의 파일 중 {@link android.content.Context#getExternalFilesDir getExternalFilesDir()} 메서드에 의해 반환된 것에 상응합니다.
-
-
-    </li>
-
-    <li>
-    <code>path</code>. 백업에 포함시키거나 백업에서 배제하고자 하는 리소스로 이어지는 파일 경로입니다.
-
-    </li>
-  </ul>
-  </li>
-</ul>
-
-
-<h3 id="prohibit">데이터 백업 금지하기</h3>
-
-<p>
-  앱 데이터 중 어떤 것이라도 자동 백업을 방지하기로 선택할 수도 있습니다. 매니페스트의 앱 요소에서 <code>android:allowBackup</code> 특성을 <code>false</code>로 설정하면 됩니다.
-
- 이 설정은 다음 예시 코드로 설명해 놓았습니다.
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:tools="http://schemas.android.com/tools"
-        package="com.my.appexample"&gt;
-    &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
-    &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
-    &lt;app ...
-<strong>        android:allowBackup="false"&gt;</strong>
-    &lt;/app&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
-
-
-<h2 id="testing">백업 구성 테스트</h2>
-
-<p>
-  백업 구성을 만들었으면 앱이 데이터를 저장하고 제대로 복구되는지 확인하기 위해 테스트해보는 것이 좋습니다.
-
-</p>
-
-
-<h4>백업 로깅 활성화</h4>
-
-<p>
-  백업 기능이 XML 파일을 구문 분석하는 방법을 결정하는 데 도움이 되는 방법으로 테스트 백업을 수행하기 전에 로깅을 활성화하는 방안이 있습니다.
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
-</pre>
-
-<h4>백업 테스트</h4>
-
-<p>수동으로 백업을 실행하려면, 우선 다음과 같은 명령을 호출하여 백업 관리자를 초기화해야 합니다.
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr run
-</pre>
-
-<p>
-  다음으로, 다음과 같은 명령을 사용하여 애플리케이션을 수동으로 백업하되 앱의 패키지 이름을 <code>&lt;PACKAGE&gt;</code> 매개변수로 지정합니다.
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr fullbackup &lt;PACKAGE&gt;</pre>
-
-
-<h4>복구 테스트</h4>
-
-<p>
-  앱 데이터를 백업한 다음 수동으로 복구를 시작하려면, 다음 명령을 호출하되, 앱에 대한 패키지 이름을 <code>&lt;PACKAGE&gt;</code> 매개변수로 지정하십시오.
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr restore &lt;PACKAGE&gt;
-</pre>
-
-<p class="warning">
-  <b>경고:</b> 이 작업을 수행하면 앱이 중지되고 복구 작업을 수행하기 전에 데이터를 지워버립니다.
-
-</p>
-
-<p>
-  앱의 복구 프로세스를 시작하려면 앱을 제거했다가 다시 설치하면 됩니다. 앱 데이터는 앱 설치가 완료되면 클라우드에서 자동으로 복원됩니다.
-
-</p>
-
-
-<h4>백업 문제 해결</h4>
-
-<p>
-  문제에 직면하면 백업 데이터와 관련 메타데이터를 지우면 됩니다. 그러려면 <strong>설정 &gt; 백업</strong>에서 백업을 껐다가 켜거나, 기기를 공장 재설정하거나 아니면 다음의 명령을 호출하십시오.
-
-
-</p>
-
-<pre>$ adb shell bmgr wipe &lt;TRANSPORT&gt; &lt;PACKAGE&gt;</pre>
-
-<p>
-  <code>&lt;TRANSPORT&gt;</code> 값이 <code>com.google.android.gms</code>로 접두사가 붙어있어야 합니다.
-  전송 목록을 가져오려면 다음과 같은 명령을 호출하면 됩니다.
-</p>
-
-<pre>$ adb shell bmgr list transports</pre>
-
-<h2 id="issues">알려진 문제</h2>
-
-<p>다음은 자동 백업 서비스에 대해 알려진 문제입니다.</p>
-
-<ul>
-  <li><strong>Google Cloud 메시지</strong> - 푸시 알림에 Google Cloud 메시지를 사용하는 앱의 경우, Google Cloud 메시지 등록에 의해 반환된 등록 ID를 백업하면 복원된 앱에 대한 푸시 알림을 끊게 되는 문제가 알려져 있습니다. 새 기기에 설치된 다음에는 새 등록 ID에 대하여 API를 쿼리하는 것이 중요합니다. 이것은 기존 등록 ID가 백업된 경우는 해당되지 않습니다.
-
-
-
-
- 이 문제를 피하려면 백업된 파일 집합에서 등록 ID를 배제하십시오.
-
-  </li>
-</ul>
diff --git a/docs/html-intl/intl/ko/preview/behavior-changes.jd b/docs/html-intl/intl/ko/preview/behavior-changes.jd
deleted file mode 100644
index fa95070..0000000
--- a/docs/html-intl/intl/ko/preview/behavior-changes.jd
+++ /dev/null
@@ -1,402 +0,0 @@
-page.title=동작 변경
-page.keywords=미리 보기, SDK, 호환성
-sdk.platform.apiLevel=MNC
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>이 문서의 내용</h2>
-
-<ol id="toc44" class="hide-nested">
-    <li><a href="#behavior-runtime-permissions">런타임 권한</a></li>
-    <li><a href="#behavior-power">절전 최적화</a>
-        <ol>
-            <li><a href="#behavior-doze">Doze</a></li>
-            <li><a href="#behavior-app-standby">앱 대기 모드</a></li>
-        </ol>
-    </li>
-    <li><a href="#behavior-adoptable-storage">채택 가능한 저장소 기기</a></li>
-    <li><a href="#behavior-apache-http-client">Apache HTTP 클라이언트 제거</a></li>
-    <li><a href="#behavior-audiomanager-Changes">AudioManager 변경</a></li>
-    <li><a href="#behavior-test-selection">텍스트 선택</a></li>
-    <li><a href="#behavior-keystore">Android 키노트 변경</a></li>
-    <li><a href="#behavior-network">Wi-Fi 및 네트워킹 변경</a></li>
-    <li><a href="#behavior-camera">카메라 서비스 변경</a></li>
-    <li><a href="#behavior-art-runtime">ART 런타임</a></li>
-    <li><a href="#behavior-apk-validation">APK 유효성 검사</a></li>
-    <li><a href="#behavior-afw">Android for Work 변경</a></li>
-</ol>
-
-<h2>API 차이점</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">M 미리 보기에 대한 API 레벨 22 &raquo;</a> </li>
-</ol>
-
-
-<h2>참고 항목</h2>
-<ol>
-<li><a href="{@docRoot}preview/api-overview.html">M 개발자 미리 보기 API 개요</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M 개발자 미리 보기에는 새로운 기능 및 특징과 더불어 다양한 시스템 변경과 API 동작 변경 내용이 포함되어 있습니다.
- 이 문서에서는 개발자 여러분이 숙지해야 하고 앱을 개발할 때 감안해야 하는 몇 가지 주요 변경 내용을 소개하겠습니다.
-</p>
-
-<p>이전에 Android용 앱을 게시한 적이 있는 경우, 이와 같은 플랫폼 변경으로 인해 앱이 영향을 받을 수 있다는 점을 유의하세요.
-</p>
-
-<h2 id="behavior-runtime-permissions">런타임 권한</h1>
-<p>이 미리 보기에서는 새 권한 모델을 소개합니다. 여기에서는 이제 사용자가 런타임에 직접 앱 권한을 관리할 수 있게 됩니다.
- 이 모델을 사용하면 사용자에게 개선된 가시성과 권한에 대한 제어권을 부여하는 한편 앱 개발자에게는 설치와 자동 업데이트 과정을 간소화해줍니다. 사용자는 설치된 여러 앱에 대해 따로따로 권한을 허용하거나 취소할 수 있습니다.
-
- </p>
-
-<p>M 미리 보기를 대상으로 하는 앱을 개발하는 경우, 권한 확인과 요청은 런타임에 해야 합니다.
- 앱에 어떤 권한이 허용되었는지 판단하려면, 새로운 {@code Context.checkSelfPermission()} 메서드를 호출하면 됩니다.
- 권한을 요청하려면 새 {@code Activity.requestPermission()} 메서드를 호출하세요.
- 앱이 M을 대상으로 하지 않더라도, 앱을 새 권한 모델에서 테스트해보는 것이 좋습니다.
-</p>
-
-<p>앱에서 새 권한 모델을 지원하는 방법에 대한 자세한 내용은 <a href="{@docRoot}preview/features/runtime-permissions.html">권한</a> 개발자 미리 보기 페이지를 참조하세요.
-
- 앱에 미친 영향을 평가하는 방법에 대한 팁은 <a href="{@docRoot}preview/testing/guide.html#runtime-permissions">테스트 가이드</a>를 참조하세요.
-</p>
-
-<h2 id="behavior-power">절전 최적화</h2>
-<p>이 미리 보기에서는 유휴 상태의 기기 및 앱에 대한 새로운 절전 최적화 기능을 소개합니다.</p>
-
-<h3 id="behavior-doze">Doze</h3>
-<p>기기의 플러그가 뽑히고 화면이 꺼진 채로 일정 시간 동안 변화 없는 상태로 유지되면, <em>Doze</em> 상태로 들어갑니다. 이 상태에서는 기기가 시스템을 절전 모드 상태로 유지하려 시도합니다.
- 이 모드에서 기기는 정기적으로 잠시 동안 정상 작동을 재개하여 앱 동기화가 일어날 수 있도록 하고 보류된 작업이 있으면 시스템이 이를 수행할 수 있도록 합니다.
-
-</p>
-
-<p>앱이 Doze 상태에 있는 동안 다음과 같은 제한 사항이 적용됩니다.</p>
-<ul>
-<li>네트워크 액세스가 비활성화됩니다. 다만 앱이 우선 순위가 높은 Google Cloud 메시지 Tickle을 받을 때는 예외입니다.
-</li>
-<li><a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">절전 모드 해제 잠금</a>이 무시됩니다.</li>
-<li>{@link android.app.AlarmManager} 클래스로 일정이 예약된 알람이 비활성화됩니다. 다만 {@link android.app.AlarmManager#setAlarmClock setAlarmClock()} 메서드 및 {@code AlarmManager.setAndAllowWhileIdle()}로 설정한 알람은 예외입니다.
-
-</li>
-<li>WiFi 스캔을 수행하지 않습니다.</li>
-<li>동기화 어댑터와 {@link android.app.job.JobScheduler}의 동기화와 작업 실행이 금지됩니다.
-</li>
-</ul>
-</p>
-<p>기기가 Doze 모드를 종료하면 보류되어 있던 작업과 동기화를 모두 실행합니다.</p>
-<p>이 기능을 테스트하려면 개발 머신에 M 미리 보기를 실행하는 기기를 연결하여 다음과 같은 명령을 호출하면 됩니다.
-
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-<p class="note"><strong>참고:</strong> 다가오는 <a href="https://developers.google.com/cloud-messaging/" class="external-link">Google Cloud 메시지</a> 릴리스에서는 개발자에게 우선 순위가 높은 메시지를 지정하게 해줍니다.
-
-
- 앱이 우선 순위가 높은 GCM 메시지를 수신하면 이 앱에는 기기가 Doze 모드에 있더라도 잠시 네트워크 액세스가 허용됩니다.
-
-</p>
-
-<p>앱에서 Doze를 테스트하는 방법에 대한 팁은 <a href="{@docRoot}preview/testing/guide.html#doze-standby">테스트 가이드</a>를 참조하세요.
-
- </p>
-
-<h3 id="behavior-app-standby">앱 대기 모드</h3>
-<p>이 미리 보기에서는 시스템이 보기에 앱이 활성 사용 중이 아닌 경우 해당 앱은 유휴 상태라고 판별할 수 있습니다.
- 일정 시간이 지나면 앱이 유휴 상태인 것으로 간주되는데, 시스템이 다음과 같은 신호 중 하나를 감지하는 경우는 예외입니다.
-</p>
-
-<ul>
-<li>사용자가 명시적으로 앱을 시작했습니다.</li>
-<li>앱에 현재 전경에 있는 프로세스가 있습니다(액티비티 또는 전경 서비스 중 하나의 형태로, 또는 다른 액티비티나 전경 서비스가 사용 중인 상태로).
-</li>
-<li>앱이 알림을 생성하여 사용자가 그것을 잠금 화면에서 보거나 알림 트레이에서 확인합니다.
-</li>
-<li><strong>설정</strong>을 통해 사용자가 명시적으로 앱이 최적화에서 면제되도록 요청합니다.
-</li>
-</ul>
-
-<p>기기의 플러그가 뽑혀 있는 경우, 유휴 상태인 것으로 간주된 앱은 자신의 네트워크 액세스를 비활성화하고 동기화와 작업을 일시 중단시킵니다.
- 기기가 전원 공급 장치에 연결되면 이와 같은 앱에 네트워크 액세스가 허용되며 보류 중이었던 작업과 동기화를 모두 실행할 수 있습니다.
- 기기가 오랜 시간 동안 유휴 상태인 경우, 유휴 앱에는 하루에 한 번 정도 네트워크 액세스가 허용됩니다.
-</p>
-
-<p>이 기능을 테스트하려면 개발 머신에 M 미리 보기를 실행하는 기기를 연결하여 다음과 같은 명령을 호출하면 됩니다.
-
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell am set-idle &lt;packageName&gt; true
-$ adb shell am set-idle &lt;packageName&gt; false
-$ adb shell am get-idle &lt;packageName&gt;
-</pre>
-
-<p class="note"><strong>참고:</strong> 다가오는 <a href="https://developers.google.com/cloud-messaging/" class="external-link">Google Cloud 메시지</a>(GCM) 릴리스에서는 개발자에게 우선 순위가 높은 메시지를 지정할 수 있습니다.
-
-
- 앱이 우선 순위가 높은 GCM 메시지를 수신하면 이 앱에는 앱이 유휴 상태에 있더라도 잠시 네트워크 액세스가 허용됩니다.
-
-</p>
-
-<p>앱에서 앱 대기 모드를 테스트하는 방법에 대한 팁은 <a href="{@docRoot}preview/testing/guide.html#doze-standby">테스트 가이드</a>를 참조하세요.
-
- </p>
-
-<h2 id="behavior-adoptable-storage">채택 가능한 저장소 기기</h2>
-<p>
-이 미리 보기에서는 사용자가 SD 카드와 같은 외부 저장소 기기를 <em>채택</em>할 수 있습니다. 외부 저장소 기기를 채택하면 기기를 암호화하고 포맷하여 내부 저장소처럼 작동하도록 합니다.
- 이 기능을 사용하면 사용자가 앱과 해당 앱의 비공개 데이터를 여러 저장소 기기 사이에서 이동시킬 수 있습니다.
- 앱을 이동시키는 경우, 시스템은 매니페스트의 <a href="{@docRoot}guide/topics/manifest/manifest-element.html#install">{@code android:installLocation}</a> 기본 설정을 사용합니다.
-
-
-</p>
-
-<p>앱이 다음과 같은 API 또는 필드에 액세스하는 경우, 앱이 내부 및 외부 저장소 기기 사이를 이동하면서 반환하는 파일 경로가 급격하게 달라진다는 점을 유의하세요. 파일 경로를 구축할 때에는 이와 같은 API를 항상 동적으로 호출하는 것을 강력히 권장합니다. 하드코드된 파일 경로를 사용하거나 이전에 구축된 정규화된 파일 경로를 유지하지 마세요.
-
-
-</p>
-
-<ul>
-<li>{@link android.content.Context} 메서드:
-    <ul>
-        <li>{@link android.content.Context#getFilesDir() getFilesDir()}</li>
-        <li>{@link android.content.Context#getCacheDir() getCacheDir()}</li>
-        <li>{@link android.content.Context#getCodeCacheDir() getCodeCacheDir()}</li>
-        <li>{@link android.content.Context#getDatabasePath(java.lang.String) getDatabasePath()}</li>
-        <li>{@link android.content.Context#getDir(java.lang.String,int) getDir()}</li>
-        <li>{@link android.content.Context#getNoBackupFilesDir() getNoBackupFilesDir()}</li>
-        <li>{@link android.content.Context#getFileStreamPath(java.lang.String) getFileStreamPath()}</li>
-        <li>{@link android.content.Context#getPackageCodePath() getPackageCodePath()}</li>
-        <li>{@link android.content.Context#getPackageResourcePath() getPackageResourcePath()}</li>
-    </ul>
-</li>
-<li>{@link android.content.pm.ApplicationInfo} 필드:
-    <ul>
-        <li>{@link android.content.pm.ApplicationInfo#dataDir dataDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#sourceDir sourceDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#nativeLibraryDir nativeLibraryDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#publicSourceDir publicSourceDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#splitSourceDirs splitSourceDirs}</li>
-        <li>{@link android.content.pm.ApplicationInfo#splitPublicSourceDirs splitPublicSourceDirs}</li>
-    </ul>
-</li>
-</ul>
-
-<p>개발자 미리 보기에서 이 기능을 디버그하려면, 다음 명령을 실행하여 USB On-The-Go(OTG) 케이블을 통해 Android 기기에 연결된 USB 드라이브 채택을 활성화하면 됩니다.
-</p>
-
-<pre class="no-prettyprint">
-$ adb shell sm set-force-adoptable true
-</pre>
-
-<h2 id="behavior-apache-http-client">Apache HTTP 클라이언트 제거</h2>
-<p>이 미리 보기에서는 Apache HTTP 클라이언트에 대한 지원을 제거합니다. 앱이 이 클라이언트를 사용하고 Android 2.3(API 레벨 9) 이상을 대상으로 하는 경우, {@link java.net.HttpURLConnection} 클래스를 대신 사용하세요.
-
- 이는 투명한 압축과 응답 캐싱을 통해 네트워크 사용량을 줄이고 전력 소모를 최소화하기 때문에 API가 더 효율적입니다.
- Apache HTTP API를 계속 사용하려면 우선 다음과 같은 컴파일-시간 종속성을 {@code build.gradle} 파일에서 선언해야 합니다.
-
-</p>
-<pre>
-android {
-    useLibrary 'org.apache.http.legacy'
-}
-</pre>
-<p>Android는 OpenSSL에서 <a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a> 라이브러리로 옮겨갑니다.
-
- 앱에서 Android NDK를 사용하는 경우, NDK API의 일부분이 아닌 암호화 라이브러리에 대해 링크를 연결하지 마세요(예:{@code libcrypto.so} 및 {@code libssl.so}).
- 이러한 라이브러리는 공개 API가 아니며, 여러 릴리스와 기기에 걸쳐 통보 없이 변경되거나 중단될 수 있으며 스스로를 보안 취약점에 노출시킬 수도 있습니다.
-
- 대신에 원래 코드를 수정하여 JNI를 통해 Java 암호화 API를 호출하도록 하거나, 직접 선택한 암호화 라이브러리에 대해 정적으로 연결하도록 하세요.
-
-</p>
-
-<h2 id="behavior-audiomanager-Changes">AudioManager 변경</h2>
-<p>볼륨을 직접 설정하거나 특정 스트림을 {@link android.media.AudioManager} 클래스를 통해 음소거하는 것은 이제 더 이상 지원되지 않습니다.
- {@link android.media.AudioManager#setStreamSolo(int,boolean)
-setStreamSolo()} 메서드는 사용이 중단되었으며, 그 대신 {@code AudioManager.requestAudioFocus()} 메서드를 호출해야 합니다.
- 이와 마찬가지로, {@link android.media.AudioManager#setStreamMute(int,boolean) setStreamMute()} 메서드도 사용이 중단되었습니다. 그 대신 {@code AudioManager.adjustStreamVolume()} 메서드를 호출하고 방향 값 {@code ADJUST_MUTE} 또는 {@code ADJUST_UNMUTE}에서 전달해야 합니다.
-
-
-</p>
-
-<h2 id="behavior-test-selection">텍스트 선택</h2>
-
-<img src="{@docRoot}preview/images/text-selection.gif" style="float:right; margin:0 0 20px 30px" width="360" height="640" />
-
-<p>사용자가 앱에서 텍스트를 선택하면 이제 텍스트 선택 작업을 표시할 수 있습니다. 예를 들어 <em>잘라내기</em>, <em>복사</em> 및 <em>붙여넣기</em>를 <a href="http://www.google.com/design/spec/patterns/selection.html#selection-text-selection" class="external-link">부동 도구 모음</a>으로 표시하게 됩니다.
-
- 이 사용자 상호작용 구현은 상황별 작업 모음에서와 비슷합니다. 이 내용은 <a href="{@docRoot}guide/topics/ui/menus.html#CABforViews">각각의 보기에 대한 상황별 작업 모드의 활성화</a>에 설명되어 있습니다.
-
-
-</p>
-
-<p>텍스트 선택을 위해 부동 도구 모음을 구현하려면 기존 앱에 다음과 같은 변경을 적용하면 됩니다.
-</p>
-<ol>
-<li>{@link android.view.View} 또는 {@link android.app.Activity} 객체에서 {@link android.view.ActionMode} 호출을 {@code startActionMode(Callback)}에서 {@code startActionMode(Callback, ActionMode.TYPE_FLOATING)}로 변경합니다.
-
-</li>
-<li>기존 {@code ActionMode.Callback} 구현을 변경하여 대신 {@code ActionMode.Callback2}를 확장합니다.
-</li>
-<li>{@code Callback2.onGetContentRect()} 메서드를 재정의하여 보기에서 콘텐츠 {@link android.graphics.Rect} 객체(예: 텍스트 선택 직사각형)의 좌표를 제공합니다.
-</li>
-<li>직사각형 위치 지정이 더 이상 유효하지 않고, 무효화할 요소가 이것뿐인 경우 {@code ActionMode.invalidateContentRect()} 메서드를 호출합니다.
-</li>
-</ol>
-
-<p><a href="{@docRoot}tools/support-library/index.html">Android 지원 라이브러리</a> 수정 버전 22.2를 사용하는 경우, 부동 도구 모음은 이전 버전과 호환되지 않으며 AppCompat이 기본적으로 {@link android.view.ActionMode} 객체의 제어권을 넘겨받는다는 점을 유의하세요.
-
-
- 이렇게 하면 부동 도구 모음이 표시되지 않도록 방지합니다. {@link android.support.v7.app.AppCompatActivity}에서 {@link android.view.ActionMode}를 활성화하려면, {@code android.support.v7.app.AppCompatActivity.getDelegate()}를 호출한 다음 {@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()}를 반환된 {@link android.support.v7.app.AppCompatDelegate} 객체에서 호출하고 입력 매개변수를 {@code false}로 설정하세요.
-
-
-
-
-
- 이 호출은 {@link android.view.ActionMode} 객체의 제어권을 프레임워크에 돌려줍니다.
- M 미리 보기를 실행하는 기기에서 이렇게 하면 프레임워크가 {@link android.support.v7.app.ActionBar} 또는 부동 도구 모음 모드를 지원할 수 있고, 한편 M 미리 보기 이전 기기에서는 {@link android.support.v7.app.ActionBar} 모드만 지원됩니다.
-
-</p>
-
-<h2 id="behavior-keystore">Android 키노트 변경</h2>
-<p>이 미리 보기에서는 <a href="{@docRoot}training/articles/keystore.html">Android 키노트 제공자</a>가 더 이상 DSA를 지원하지 않습니다.
-
- ECDSA는 여전히 지원됩니다.</p>
-
-<p>휴식 중일 때 암호화가 필요하지 않은 키도 보안 잠금 화면이 비활성화되거나 재설정될 때(예: 사용자가 또는 기기 관리자가 재설정) 더 이상 삭제되지 않습니다.
- 휴식 중일 때 암호화가 필요한 키는 이러한 이벤트 중에 삭제됩니다.
-</p>
-
-<h2 id="behavior-network">Wi-Fi 및 네트워킹 변경</h2>
-
-<p>이 미리 보기에서는 Wi-Fi와 네트워킹 API에 다음과 같은 동작 변경을 도입합니다.</p>
-<ul>
-<li>이제 앱이 {@link android.net.wifi.WifiConfiguration} 객체의 상태를 변경할 수 있는 것은 개발자가 이와 같은 객체를 생성한 경우뿐입니다.
- 사용자 또는 다른 앱이 생성한 {@link android.net.wifi.WifiConfiguration} 객체는 개발자가 수정하거나 삭제할 권한이 없습니다.
-
-</li>
-<li>
-이전에는 앱이 기기에 강제로 특정 Wi-Fi 네트워크에 연결하도록 하는 경우, 즉{@link android.net.wifi.WifiManager#enableNetwork(int,boolean) enableNetwork()}를 {@code disableAllOthers=true} 설정으로 사용하면 기기가 셀룰러 데이터와 같은 다른 네트워크에서는 연결을 해제했습니다.
-
-
- 이 미리 보기에서는 기기가 그러한 다른 네트워크에서 더 이상 연결을 해제하지 않습니다. 앱의 {@code targetSdkVersion}이 {@code “20”} 이하인 경우, 이것은 선택한 Wi-Fi 네트워크에 고정되어 있습니다.
-
- 앱의 {@code targetSdkVersion}이 {@code “21”} 이상인 경우, 멀티네트워크 API를 사용합니다(예: {@link android.net.Network#openConnection(java.net.URL) openConnection()}, {@link android.net.Network#bindSocket(java.net.Socket) bindSocket()} 및 새로운 {@code ConnectivityManager.bindProcessToNetwork()} 메서드). 이렇게 하면 네트워크 트래픽이 선택한 네트워크에서 전송되도록 보장할 수 있습니다.
-
-
-
-
-</li>
-</ul>
-
-<h2 id="behavior-camera">카메라 서비스 변경</h2>
-<p>이 미리 보기에서는 카메라 서비스에서 공유된 리소스에 액세스하는 모델이 이전의 "선착순" 액세스 모델에서 바뀌어 우선 순위가 높은 프로세스를 선호하는 액세스 모델로 변경되었습니다.
-
-  서비스 동작에 대한 변경 내용은 다음과 같습니다.</p>
-<ul>
-<li>카메라 하위 시스템 리소스(카메라 기기 열기 및 구성하기 포함)에 대한 액세스 권한은 클라이언트 애플리케이션 프로세스의 "우선 순위"를 기반으로 부여됩니다.
- 대개는 사용자에게 표시되는 액티비티 또는 전경 액티비티가 있는 애플리케이션 프로세스에 높은 우선 순위가 부여되어 카메라 리소스 획득과 사용에 좀 더 신뢰감을 더합니다.
-
-</li>
-<li>우선 순위가 낮은 앱에 대한 활성 카메라 클라이언트는 우선 순위가 더 높은 애플리케이션이 카메라를 사용하려 시도하면 "제거"될 수 있습니다.
-  사용이 중단된 {@link android.hardware.Camera} API의 경우, 이 때문에 {@link android.hardware.Camera.ErrorCallback#onError(int,android.hardware.Camera) onError()}가 제거된 클라이언트에 대해 호출되는 결과를 초래합니다.
-
-
- {@link android.hardware.camera2 Camera2} API에서는 제거된 클라이언트에 대해 {@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected(android.hardware.camera2.CameraDevice) onDisconnected()}가 호출됩니다.
-
-</li>
-<li>적절한 카메라 하드웨어를 갖춘 기기에서는 별도의 애플리케이션 프로세스가 각자 따로따로 열려 동시에 각기 다른 카메라 기기를 사용할 수 있습니다.
- 하지만 여러 프로세스를 사용하는 경우 동시에 액세스하면 열려 있는 카메라 기기 모두의 성능 또는 기능이 대폭 저하되는 결과를 유발했었는데, 이런 경우도 이제 카메라 서비스가 감지하여 허용하지 않게 됩니다.
-
- 이러한 변경으로 인해, 같은 카메라 기기에 직접 액세스하려 시도하는 앱이 없는 경우에도 우선 순위가 낮은 클라이언트를 "제거"하는 결과를 초래할 수도 있습니다.
-
-
-</li>
-<li>
-현재 사용자를 변경하면 앱 내에서 이전 사용자 계정이 소유하는 활성 카메라 클라이언트를 제거하는 결과를 유발할 수 있습니다.
-  카메라에 대한 액세스는 현재 기기 사용자가 소유한 사용자 프로필에게만 국한됩니다. 이것은 실제로 예를 들면, 사용자가 다른 계정으로 전환하면 "Guest" 계정은 카메라 시스템을 사용하는 실행 중인 프로세스에서 나갈 수 없게 된다는 뜻입니다.
-
-
-</li>
-</ul>
-
-<h2 id="behavior-art-runtime">ART 런타임</h2>
-<p>이제 ART 런타임이 {@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} 메서드에 대한 액세스 규칙을 제대로 구현할 수 있습니다.
- 이 변경 덕분에 이전 버전에서는 Dalvik이 액세스 규칙을 잘못 확인하던 문제를 해결했습니다. 앱이 {@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} 메서드를 사용하고 액세스 확인을 재정의하고자 하는 경우, {@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()} 메서드를 호출하되 입력 매개변수를 {@code true}로 설정한 상태로 사용합니다.
-
-
-
-
-
- 앱이 <a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7 AppCompat 라이브러리</a> 또는 <a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">v7 RecyclerView 라이브러리</a>를 사용하는 경우, 앱을 업데이트하여 이러한 라이브러리의 최신 버전을 사용하도록 해야 합니다.
-
-
- 그렇지 않으면, XML에서 참조되는 모든 사용자 지정 클래스가 업데이트되도록 확인하여 그 클래스 생성자에 액세스할 수 있도록 해야 합니다.
-</p>
-
-<p>이 미리 보기에서는 동적 링커의 동작을 업데이트합니다. 동적 링커는 이제 라이브러리의 {@code soname}과 그 경로(<a href="https://code.google.com/p/android/issues/detail?id=6670" class="external-link">공개 버그 6670</a>) 사이의 차이점을 숙지하고 있으며, 이제 {@code soname} 기준 검색도 구현되었습니다.
-
-
-
- 이전에 작동한 앱 중에서 {@code DT_NEEDED} 항목이 있는 경우(주로 빌드 머신의 파일 시스템에 있는 절대 경로) 로딩했을 때 실패할 수 있습니다.
-</p>
-
-<p>이제 {@code dlopen(3) RTLD_LOCAL} 플래그를 올바르게 구현했습니다. 이때 {@code RTLD_LOCAL}이 기본이므로 {@code dlopen(3)}에 대한 호출 중에서 {@code RTLD_LOCAL}을 명시적으로 사용하지 않으면 영향받을 수 있다는 점을 유의하세요(다만 앱이 명시적으로 {@code RTLD_GLOBAL}을 사용한 경우는 예외입니다).
-
- {@code RTLD_LOCAL}의 경우, 나중에 {@code dlopen(3)}으로 한 호출로 인해 로딩된 라이브러리에서는 기호를 이용할 수 없게 됩니다({@code DT_NEEDED} 항목에 의해 참조된 것과는 반대입니다).
-
-</p>
-</p>
-
-<h2 id="behavior-apk-validation">APK 유효성 검사</h2>
-<p>이제 플랫폼이 APK에 대해 좀 더 엄격한 유효성 검사를 수행합니다. APK는 파일이 매니페스트에서는 선언되었지만 APK 자체에는 없는 경우 손상된 것으로 간주됩니다.
- 콘텐츠가 하나라도 제거되면 APK를 다시 서명해야 합니다.
-</p>
-
-<h2 id="behavior-afw">Android for Work 변경</h2>
-<p>이 미리 보기에는 Android for Work에 대해 다음과 같은 동작 변경을 포함합니다.</p>
-<ul>
-<li><strong>업무용 연락처를 개인적인 맥락에서 이용.</strong> 이제 Google 다이얼러 통화 기록에서 사용자가 이전 통화 목록을 볼 때 업무용 연락처를 표시합니다. {@code DevicePolicyManager.setCrossProfileCallerIdDisabled()}를 {@code true}로 설정하면 Google 다이얼러 통화 기록에서 업무용 프로필 연락처를 숨길 수 있습니다.
-
-
- {@code DevicePolicyManager.setBluetoothContactSharingDisabled()}를 {@code false}로 설정했을 때에만 블루투스를 통해 기기에 업무용 연락처를 개인용 연락처와 함께 표시합니다.
-
- 이것은 기본적으로 {@code true}로 설정되어 있습니다.
-
-</li>
-<li><strong>WiFi 구성 제거:</strong> 프로필 소유자가 추가한 WiFi 구성(예를 들어 {@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration)
-addNetwork()} 메서드로의 호출을 통해)은 이제 해당 작업 프로필이 삭제되면 함께 제거됩니다.
-
-</li>
-<li><strong>WiFi 구성 잠금:</strong> 이제 활성 기기 소유자가 생성한 WiFi 구성이라면 사용자는 임의의 구성을 수정 또는 삭제할 수 없습니다.
- 사용자는 여전히 본인의 WiFi 구성을 생성하고 수정할 수 있습니다. 해당 사용자에 대해 {@link android.os.UserManager} 상수 {@link android.os.UserManager#DISALLOW_CONFIG_WIFI}가 설정되지만 않았으면 됩니다.
-
-</li>
-<li><strong>Google 계정 추가를 통해 작업 정책 컨트롤러 다운로드:</strong> 작업 정책 컨트롤러(WPC) 앱을 통해 관리해야 하는 Google 계정이 관리된 맥락을 벗어나 기기에 추가되는 경우, 이제 추가 계정 흐름이 사용자에게 메시지를 표시하여 적절한 WPC를 설치하도록 합니다. 이 동작은 최초 기기 설정 마법사의 <strong>설정 &gt; 계정</strong>을 통해서 추가되는 계정에도 적용됩니다.
-
-
-
-</li>
-<li><strong>특정 DevicePolicyManager API 동작에 적용된 변경:</strong> {@link android.app.admin.DevicePolicyManager#setCameraDisabled(android.content.ComponentName,boolean) setCameraDisabled()} 메서드를 호출하면 호출한 사용자에 대한 카메라에만 영향을 미칩니다. 이것을 관리된 프로필에서 호출하면 기본 사용자에서 실행 중인 카메라 앱에 영향을 미치지 않습니다.
-
-
- 또한, 이제 {@link android.app.admin.DevicePolicyManager#setKeyguardDisabledFeatures(android.content.ComponentName,int) setKeyguardDisabledFeatures()} 메서드를 기기 소유자뿐만 아니라 프로필 소유자에 대해서도 이용할 수 있습니다.
-
- 프로필 소유자는 다음과 같은 키가드 제한 사항을 설정할 수 있습니다.
-
-<ul>
-<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_TRUST_AGENTS} 및 {@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_FINGERPRINT}를 설정하면 프로필의 상위 사용자에 대한 키가드 설정에 영향을 미칩니다.
-
-</li>
-<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS}를 설정하면 관리된 프로필에 있는 애플리케이션이 생성한 알림에만 영향을 미칩니다.
-</li>
-</ul>
-</li>
-</ul>
diff --git a/docs/html-intl/intl/ko/preview/download.jd b/docs/html-intl/intl/ko/preview/download.jd
deleted file mode 100644
index d92453a..0000000
--- a/docs/html-intl/intl/ko/preview/download.jd
+++ /dev/null
@@ -1,361 +0,0 @@
-page.title=다운로드
-page.image=images/cards/card-download_16-9_2x.png
-
-@jd:body
-
-<div style="position:relative; min-height:600px">
-
-  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
-    <p class="sdk-terms-intro">Android 미리 보기 SDK의 구성 요소를 다운로드하고 설치하기 전에 우선 다음과 같은 사용 약관에 동의해야 합니다.
-</p>
-
-    <h2 class="norule">사용 약관</h2>
-
-    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-이것은 Android SDK 미리 보기 라이선스 계약서입니다(이하 "라이선스 계약").
-
-1. 개요
-
-1.1 Android SDK 미리 보기(본 라이선스 계약에서는 "미리 보기"라고 칭하며, 구체적으로 Android 시스템 파일, 패키지 API 및 미리 보기 라이브러리 파일이 이용 가능한 경우 및 이용 가능하게 전환된 경우 이를 포함한 것을 가리킴)는 본 라이선스 계약 조건에 따라 계약자에게 사용을 허여합니다. 본 라이선스 계약은 미리 보기 사용과 관련하여 계약자와 Google 간에 법적 구속력이 있는 계약을 체결합니다.
-
-1.2 "Android"는 기기를 위한 Android 소프트웨어 스택을 의미합니다. 이는 http://source.android.com/ URL에 위치하며 수시로 업데이트되는 Android 오픈 소스 프로젝트에서 제공됩니다.
-
-1.3 "Google"은 미국 1600 Amphitheatre Parkway, Mountain View, CA 94043에 본사를 두고 있는 델라웨어주 법인인 Google Inc.를 의미합니다.
-
-2. 라이선스 계약에 동의
-
-2.1 이 미리 보기를 사용하려면, 먼저 라이선스 계약에 동의해야 합니다. 이 라이선스 계약에 동의하지 않고 미리 보기를 사용해서는 안 됩니다.
-
-2.2 수락을 클릭하고/거나 미리 보기를 사용하면 본 라이선스 계약 조건에 동의하는 것으로 간주됩니다.
-
-2.3 미국법 또는 현재 거주 중이거나 미리 보기를 사용하는 국가를 포함하여 다른 국가의 법에 따라 미리 보기를 받는 것이 금지된 경우, 미리 보기를 사용할 수 없으며 본 라이선스 계약을 수락할 수 없습니다.
-
-2.4 회사 또는 단체 내에서 내부적으로 미리 보기를 사용하며 고용주 또는 기타 단체를 대신하여 본 라이선스 계약 준수에 동의하는 경우, 계약자의 고용주나 그 단체에 본 라이선스 계약에 대한 구속력을 부여할 수 있는 모든 법적 권한을 계약자가 갖고 있음을 진술하고 보증합니다. 구속력을 부여할 수 있는 법적 권한이 없을 경우, 고용주 또는 기타 단체를 대신하여 본 라이선스 계약에 동의하거나 미리 보기를 사용할 수 없습니다.
-
-3. Google이 허하는 미리 보기 라이선스
-
-3.1 본 라이선스 계약의 조건에 따라 Google은 계약자에게 로열티 없고 양도 불가능하며 비독점적이고 2차 인가를 불허하며, 한정되고 무효화할 수 있는 미리 보기 사용 권한을 허용하여 회사 또는 조직 내에서 개인적 또는 내부적으로 사용할 수 있도록 합니다. 이는 Android 플랫폼에서 실행되는 애플리케이션을 개발할 목적으로만 사용해야 합니다.
-
-3.2 계약자는 SDK에 존재하는 지적 재산권을 포함한 SDK에 대한 모든 법적인 권리, 소유권 및 이익이 Google 또는 제3자에게 있음에 동의합니다 "지적 재산권"은 모든 특허법, 저작권법, 영업비밀법, 상표법상 존재하는 모든 권리 및 기타 모든 재산권을 의미합니다. Google은 계약자에게 명시적으로 부여하지 않은 모든 권리를 보유합니다.
-
-3.3 본 라이선스 계약에 명시적으로 허용된 용도 외에는 미리 보기를 사용할 수 없습니다. 해당 제3자 라이선스 요건이 허용하는 범위를 제외하고 계약자는 미리 보기의 일부분을 (a) 복사(백업 목적 제외), 수정, 개작, 재배포, 역컴파일, 리버스 엔지니어링, 분해하거나 이를 통해 파생물을 생성하거나 (b) 개인 컴퓨터를 제외한 모바일 단말기 또는 기타 모든 하드웨어 기기에 미리 보기의 일부를 로드하거나, 미리 보기의 일부를 다른 소프트웨어와 결합하거나 미리 보기의 일부가 통합된 일체의 소프트웨어나 기기를 배포해서는 안 됩니다.
-
-3.4 계약자는 미리 보기에서 파생된 소프트웨어 개발 키트의 배포, 이러한 키트 생성에 참여 또는 홍보를 포함하되 이에 국한되지 않고, Android의 단편화를 야기하는 어떠한 행동도 취하지 않을 것임에 동의합니다.
-
-3.5 오픈 소스 소프트웨어 라이선스에 의거한 미리 보기 구성요소의 사용, 재생산, 배포에는 본 라이선스 계약이 아닌, 해당 오픈 소스 소프트웨어 라이선스의 조건이 적용됩니다. 계약자는 허용된 모든 권한 하에서 그러한 오픈 소스 소프트웨어 라이선스에 관해 충실한 피허가자로서의 자세를 견지할 것이며 그러한 권한을 종료, 일시 중단 또는 침해하는 행위를 삼갈 것을 동의합니다.
-
-3.6 계약자는 Google이 제공하는 SDK의 형태 및 특성이 사전 통지 없이 변경될 수 있음에 동의하며, 이전 버전의 미리 보기에서 개발된 애플리케이션이 이후 버전의 SDK와 호환되지 않을 수 있음에 동의합니다. 계약자는 계약자 또는 사용자에게 사전 통지 없이 SDK(또는 SDK에 포함된 기능) 제공을(영구적 또는 일시적으로) 중단할 수 있는 권한이 Google에게 있음에 동의합니다.
-
-3.7 본 라이선스 계약은 계약자에게 Google의 상표명, 상표, 서비스 표시, 로고, 도메인 이름, 기타 독특한 브랜드 특징에 대한 사용 권한을 부여하지 않습니다.
-
-3.8 계약자는 SDK에 부착되어 있거나 포함되어 있는 모든 소유권 고지 사항(저작권 및 상표 고지 사항 포함)을 제거, 변경 또는 불분명하게 만들지 않을 것에 동의합니다.
-
-4. 계약자의 미리 보기 사용
-
-4.1 Google은 본 라이선스 계약의 어떤 조항도 계약자(또는 계약자의 사용 허가자)가 미리 보기를 사용하여 개발한 소프트웨어 애플리케이션에 대한 권리, 소유권 또는 이익, 그리고 해당 애플리케이션에 존재하는 모든 지적 재산권을 부여하지 않는다는 점에 동의합니다.
-
-4.2 계약자는 (a) 본 라이선스 계약 그리고 (b) 모든 준거법, 규정 또는 관련 관할권 내에서 일반적으로 수용되는 관행 또는 지침(미국 또는 기타 관련 국가로/에서의 데이터 또는 소프트웨어 수출과 관련된 모든 법률 포함)에서 허용하는 용도에 한하여 미리 보기를 사용하고 애플리케이션을 작성하는 것에 동의합니다.
-
-4.3 계약자는 일반 대중 사용자를 대상으로 미리 보기를 사용하여 애플리케이션을 개발하는 경우, 해당 사용자의 프라이버시 및 법적 권리를 보호하는 것에 동의합니다. 사용자가 계약자에게 사용자 이름, 비밀번호 또는 기타 로그인 정보나 개인 정보를 제공하는 경우, 계약자는 제공된 정보가 자신의 애플리케이션에 제공된다는 사실을 사용자에게 알려야 하며, 반드시 법적으로 적절한 개인정보 보호정책 고지 및 보호를 해당 사용자에게 제공해야 합니다. 애플리케이션에서 사용자가 제공한 개인정보나 민감한 정보를 저장하는 경우, 이를 안전하게 처리해야 합니다. 사용자들이 애플리케이션에 Google 계정 정보를 제공하는 경우, 애플리케이션은 해당 사용자의 Google 계정에 액세스하는 목적으로만, 그리고 각 사용자가 허용한 범위 내의 한정된 목적으로만 이러한 정보를 사용해야 합니다.
-
-4.4 계약자는 Google 또는 기타 모든 타사의 서버, 네트워크 또는 기타 모든 재산 또는 서비스를 허가 없이 방해, 교란, 손상 또는 액세스하는 애플리케이션의 개발 또는 배포를 포함한 하등의 행위에 미리 보기를 이용하지 않을 것임을 동의합니다.
-
-4.5 계약자는 자신이 Android 및/또는 Android용 애플리케이션을 통해 생성, 전송 또는 표시하는 모든 데이터, 콘텐츠 또는 리소스 그리고 그로 인한 결과(Google이 입을 수 있는 모든 피해나 손실 포함)에 대해 전적으로 책임이 있다는 것(그리고 Google은 계약자 또는 모든 제3자에 대한 책임이 없다는 것)에 동의합니다.
-
-4.6 계약자는 본 라이선스 계약, 모든 해당 제3자 계약 또는 서비스 약관, 또는 모든 준거법 또는 규정에 의거한 계약자 의무 위반, 그리고 그로 인한 결과(Google 또는 제3자가 입을 수 있는 모든 피해나 손실 포함)에 전적으로 책임이 있다는 것(그리고 Google은 계약자 또는 모든 제3자에 대한 책임이 없다는 것)에 동의합니다.
-
-4.7 이 미리 보기는 현재 개발 단계에 있으며, 계약자의 테스트와 피드백은 그러한 개발 과정에 중요한 부분을 차지합니다. 미리 보기를 사용함으로써 계약자는 일부 기능의 구현은 아직 개발 중인 상태이며 미리 보기가 안정된 릴리스처럼 완벽하게 기능할 것이라 믿고 사용해서는 안 된다는 점을 인지하는 것으로 간주합니다. 계약자는 이 미리 보기를 사용한 애플리케이션을 공개적으로 배포 또는 배송하지 않기로 동의합니다. 이 미리 보기는 공식 Android SDK가 출시된 이후에는 더 이상 지원되지 않기 때문입니다.
-
-5. 계약자의 개발자 자격 증명
-
-5.1 계약자는 Google이 발급했거나 자신이 선택한 모든 개발자 자격 증명에 대한 기밀성을 유지할 책임이 있으며 계약자의 개발자 자격 증명 하에 개발된 모든 애플리케이션에 대한 전적인 책임이 있음에 동의합니다.
-
-6. 개인정보 보호정책 및 정보
-
-6.1 미리 보기를 지속적으로 혁신하고 개선하기 위해, Google은 고유 식별자, 관련 IP 주소, 소프트웨어 버전 번호, 미리 보기에서 사용 중인 도구 및/또는 서비스와 도구의 사용법에 대한 정보를 포함하되 이에 국한되지 않고 소프트웨어에서 특정 사용량 통계 정보를 수집할 수 있습니다. 그러한 정보를 수집하기 전에 미리 보기는 계약자에게 이를 통지하고 동의를 구할 것입니다. 계약자가 동의하지 않을 경우 정보를 수집하지 않습니다.
-
-6.2 수집된 데이터는 모두 취합된 형태로 미리 보기 개선을 위해 검토되며, Google의 개인정보 보호정책에 따라 유지 관리됩니다. 이 정보는 http://www.google.com/policies/privacy/를 참조하십시오.
-
-7. 제3자 애플리케이션
-
-7.1 제3자가 개발한 애플리케이션을 실행하거나 제3자가 제공한 데이터, 콘텐츠 또는 리소스에 액세스하기 위해 미리 보기를 사용하는 경우, 계약자는 Google이 그러한 애플리케이션, 데이터, 콘텐츠 또는 리소스에 대한 책임이 없음에 동의합니다. 계약자는 그러한 제3자 애플리케이션을 통해 자신이 액세스한 모든 데이터, 콘텐츠 또는 리소스에 대한 책임은 그것을 만든 사람에게 있음에 동의합니다. 또한 계약자가 그러한 모든 제3자 애플리케이션, 데이터, 콘텐츠 또는 리소스를 사용하거나 액세스함으로써 비롯된 모든 피해나 손실에 대한 책임이 Google에게 없음에 동의합니다.
-
-7.2 그러한 제3자 애플리케이션을 통해 계약자에게 제공된 데이터, 콘텐츠 그리고 리소스는 그것을 제공한 제공자(또는 제공자를 대신하는 기타 개인 또는 기업)가 소유한 지적 재산권에 의해 보호될 수 있음을 유의해야 합니다. 그러한 데이터, 콘텐츠 또는 리소스(전부 또는 일부)를 수정, 임대, 리스, 대여, 판매, 배포하거나 이를 기반으로 파생물을 생성해서는 안 됩니다. 단, 관련 소유자로부터 그러한 작업을 수행해도 좋다는 허락을 받은 경우에는 예외입니다.
-
-7.3 계약자는 그러한 제3자 애플리케이션, 데이터, 콘텐츠 또는 리소스의 사용은 계약자와 관련 제3자 간에 체결하는 별도의 계약 조건의 적용을 받는다는 것을 인정합니다.
-
-8. Google API 사용
-
-8.1 Google Data API
-
-8.1.1 Google에서 데이터를 검색하기 위해 API를 사용하는 경우, 그러한 데이터가 Google 또는 데이터를 제공하는 당사자(또는 당사자를 대신하는 기타 개인 또는 기업)가 소유한 지적 재산권에 의해 보호될 수 있음을 인정합니다. 그러한 API를 사용하는 경우, 추가적인 서비스 약관의 적용을 받을 수 있습니다. 관련 서비스 약관에 허용되지 않은 한, 그러한 데이터(전부 또는 일부)를 변경, 임대, 리스, 대여, 판매, 배포하거나 이를 기반으로 파생물을 생성해서는 안 됩니다.
-
-8.1.2 Google에서 사용자 데이터를 검색하기 위해 API를 사용하는 경우, 계약자는 사용자로부터 명시적인 동의를 얻은 경우에 한하여, 그리고 해당 사용자가 허용한 범위 내의 한정된 목적으로만 데이터를 검색해야 합니다.
-
-9. 라이선스 계약 종료
-
-9.1 본 라이선스 계약은 계약자 또는 Google에 의해 아래와 같은 조건 하에 종료될 때까지 계속 적용됩니다.
-
-9.2 계약자가 라이선스 계약을 종료하고자 하는 경우, 미리 보기 및 관련 개발자 자격 증명 일체의 사용을 중단하는 것으로 그러한 의사를 피력할 수 있습니다.
-
-9.3 Google은 언제든 이유 여하를 불문하고 계약자에게 통고하여 라이선스 계약을 종료할 수 있습니다.
-
-9.4 본 라이선스 계약은 통보 또는 여타의 행위 없이도 자동으로 종료됩니다. 이에 해당되려면 다음과 같은 조건이 수반되어야 합니다.
-(A) Google이 계약자가 거주하는 국가 또는 계약자가 서비스를 사용하는 지역에서 미리 보기 또는 미리 보기의 특정 부분 제공을 중지하는 경우 및
-(B) Google이 Android SDK의 최종 릴리스 버전을 발행하는 경우.
-
-9.5 본 라이선스 계약이 종료되면 라이선스 계약으로 계약자에게 허용한 라이선스가 취소되며, 이에 따라 계약자는 미리 보기 사용을 즉시 모두 중단해야 하고 제 10, 11, 12 및 14절의 조항이 기한 없이 유지됩니다.
-
-10. 면책 조항
-
-10.1 계약자는 미리 보기 이용에 대한 위험 부담이 전적으로 본인에게 있으며, Google이 일체의 보증 없이 미리 보기를 "있는 그대로" 그리고 "이용 가능한" 상태로 제공한다는 것을 분명히 이해하고 동의합니다.
-
-10.2 미리 보기 이용 및 이용 과정에서 다운로드하거나 얻게 되는 모든 자료를 사용하는 것은 본인의 재량에 따르며 이에 대한 위험 부담이 전적으로 본인에게 있으며, 그러한 사용으로 인해 발생하는 컴퓨터 시스템 또는 다른 기기의 손상 또는 데이터 손실에 대한 책임은 전적으로 본인에게 있습니다. 전술한 조항을 제한하지 않는 범위 내에서 계약자는 미리 보기가 안정된 릴리스가 아니며 오류, 결함 및 보안 취약성이 포함되어 있을 수 있어 그 결과로 중대한 손상을 유발할 수 있다는 점을 이해하는 것으로 간주합니다. 여기에는 계약자의 컴퓨터 시스템 또는 기타 기기의 완전하고 돌이킬 수 없는 손실도 포함됩니다.
-
-10.3 더 나아가, Google은 상품성, 특정 목적에 대한 적합성 및 비침해의 묵시적 보증 등을 포함하되 이에 국한되지 않고 명시적이든 묵시적이든 모든 종류의 보증 및 조건을 명시적으로 부인합니다.
-
-11. 책임 한계
-
-11.1 계약자는 계약자에게 발생할 수 있는 직접, 간접, 부수적, 특별, 결과적 또는 징벌적 손해에 대해 그 어떤 책임 이론에 근거해서도 Google, 해당 자회사, 계열사 및 사용 허가자가 어떠한 책임도 지지 아니함을 분명히 이해하고 동의합니다. 이러한 손해에는 Google 또는 해당 대리자가 이러한 손실 발생 가능성에 대해 통지를 받았거나 이러한 사항을 인식했는지에 상관없이 모든 데이터 손실이 포함됩니다.
-
-12. 면책
-
-12.1 법률에 의해 허용되는 최대한의 범위 안에서 계약자는 (a) 미리 보기 사용, (b) 계약자가 미리 보기에서 개발한 일체의 애플리케이션에서 초래된 모든 사람의 저작권, 상표, 영업비밀, 트레이드 드레스, 특허 또는 기타 지적 재산권의 침해, 또는 어떤 사람의 명예를 훼손하거나 초상권 또는 개인정보 보호정책을 침해함 또는 (C)계약자 본인이 본 라이선스 계약을 위반함으로써 발생하거나 생기는 모든 청구, 조치, 소송 또는 절차, 그리고 모든 손실, 책임, 손해, 경비(합리적인 변호사 비용 포함)로부터 Google을 옹호하고, 면책시키고, Google이 손해를 입지 않도록 하는 데 동의합니다.
-
-13. 라이선스 계약 변경
-
-13.1 미리 보기의 새로운 버전을 배포할 때, Google은 본 라이선스 계약의 내용을 변경할 수 있습니다. 그러한 변경이 이뤄진 경우, Google은 미리 보기가 제공되는 웹사이트에 새로운 라이선스 계약 버전을 게재할 것입니다.
-
-14. 일반 법적 조건
-
-14.1 본 라이선스 계약은 계약자와 Google 간의 모든 법적 계약을 구성하며, 계약자의 미리 보기 사용을 규제하고(별도의 서면 계약을 통해 Google이 계약자에게 제공하는 모든 서비스는 제외), 미리 보기와 관련하여 이전에 계약자와 Google이 맺은 모든 계약을 완전히 대체합니다.
-
-14.2 계약자는 Google이 라이선스 계약에 포함된(또는 관련 법률에 의해 Google이 향유하는) 법적 권리 또는 구제수단을 행사하거나 집행하지 않더라도, Google이 권리를 공식적으로 포기한 것으로 간주하지 않으며, Google이 계속해서 그러한 권리 또는 구제수단을 이용할 수 있음에 동의합니다.
-
-14.3 본 라이선스 계약의 조항이 무효라고 이 사안에 관한 판결을 할 수 있는 관할권을 가진 법원이 판결할 경우, 그 조항은 라이선스 계약의 나머지 조항에 영향을 미치지 않는 형태로 라이선스 계약에서 제거됩니다. 본 라이선스 계약의 나머지 조항은 여전히 유효하며 집행 가능합니다.
-
-14.4 계약자는 Google이 모회사가 되는 회사 그룹에 속한 각 회사가 본 라이선스 계약의 제3수익자이며, 그러한 다른 회사들이 그들에게 이익(또는 유리한 권리)을 부여하는 본 라이선스 계약의 모든 조항을 직접 행사하고 적용할 수 있는 권리를 가진다는 데 동의합니다. 그 외에는 다른 어떤 개인이나 회사도 본 라이선스 계약의 제3수익자가 될 수 없습니다.
-
-14.5 수출 규제. 미리 보기는 미국의 수출법과 규정의 적용을 받습니다. 계약자는 미리 보기에 적용되는 모든 국내 및 국제 수출법과 규정을 준수해야 합니다. 그러한 법에는 수출 대상국, 최종 사용자 및 최종 용도에 대한 제한이 포함됩니다.
-
-14.6 계약자 또는 Google은 상대 당사자의 사전 서면 승인 없이 본 라이선스 계약에서 부여된 권리를 제3자에게 양도하거나 이전할 수 없으며, 그러한 승인 없이 이루어진 양도 시도는 모두 무효입니다. 계약자는 Google의 사전 승인 없이 본 라이선스 계약 상의 책임 또는 의무를 위임할 수 없습니다.
-
-14.7 본 라이선스 계약, 그리고 본 라이선스 계약 상의 계약자와 Google의 관계는 법률 조항 간의 충돌과는 무관하게 캘리포니아주법에 의한 규제를 받습니다. 계약자와 Google은 본 라이선스 계약으로부터 발생하는 모든 법적 문제 해결을 캘리포니아주 산타 클라라(Santa Clara) 카운티 내에 소재한 전속 관할 법원에 의뢰하는 것에 동의합니다. 위 규정에도 불구하고, 계약자는 Google이 여전히 모든 관할권에서 강제 구제책(또는 동등한 유형의 긴급 법적 구제)을 신청할 수 있음에 동의합니다.
-  </div><!-- sdk terms -->
-
-
-
-    <div id="sdk-terms-form">
-      <p>
-        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-        <label id="agreeLabel" for="agree">본인은 상기 사용 약관을 읽었으며 이에 동의합니다.</label>
-      </p>
-      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-    </div>
-
-
-  </div><!-- end TOS -->
-
-
-  <div id="landing">
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>이 문서의 내용</h2>
-      <ol>
-        <li><a href="#sdk">Android 6.0 SDK</a></li>
-        <li><a href="#docs">개발자 관련 문서</a></li>
-        <li><a href="#images">하드웨어 시스템 이미지</a></li>
-      </ol>
-
-     <h2>Legacy downloads</h2>
-        <ol>
-           <li><a href="{@docRoot}preview/download_mp1.html">Developer Preview 1</a></li>
-           <li><a href="{@docRoot}preview/download_mp2.html">Developer Preview 2</a></li>
-        </ol>
-  </div>
-</div>
-
-
-<p>
-  Android M 미리 보기 SDK에는 개발 도구, Android 시스템 파일 및 라이브러리 파일이 포함되어 있어 앱을 테스트하고 플랫폼의 다음 릴리스에 도입되는 새 API를 테스트하는 데 유용합니다.
- 이 문서에서는 미리 보기의 다운로드할 수 있는 구성 요소를 가져와 앱을 테스트하는 방법에 대해 설명합니다.
-
-</p>
-
-
-<h2 id="sdk">Android 6.0 SDK</h2>
-
-<p>
-  미리 보기 SDK는 <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>를 통해 다운로드할 수 있습니다. 미리 보기 SDK를 다운로드하고 구성하는 데 관한 자세한 정보는 <a href="{@docRoot}preview/setup-sdk.html#downloadSdk">미리 보기 SDK 설정하기</a>를 참조하십시오.
-
-</p>
-
-
-<h2 id="docs">개발자 관련 문서</h2>
-
-<p>
-  개발자 관련 문서 다운로드 패키지에서는 자세한 API 참조 정보와 미리 보기에 대한 API 차이점 보고서를 제공합니다.
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Description</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="docs-dl">
-    <td>Android M Preview 3<br>Developer Docs</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >m-preview-3-developer-docs.zip</a><br>
-      MD5: d99b14b0c06d31c8dfecb25072654ca3<br>
-      SHA-1: 9cefeeda07676130da606a1796e1c00fffc667c1
-    </td>
-  </tr>
-</table>
-
-
-<h2 id="images">하드웨어 시스템 이미지</h2>
-
-<p>
-  이러한 시스템 이미지를 사용하면 물리적인 기기에서 플랫폼의 미리 보기 버전을 설치하여 테스트할 수 있게 해줍니다.
- 이러한 이미지 중 한 가지로 기기를 구성하면, 앱을 설치하고 테스트하여 앱이 플랫폼의 다음 버전에서 어떤 성능을 보일지 확인할 수 있습니다.
- 기기에 시스템 이미지를 설치하는 과정은<em>기기에서 모든 데이터를 제거하므로</em>, 시스템 이미지를 설치하기에 앞서 데이터를 백업하는 것이 좋습니다.
-
-
-</p>
-
-<p class="warning">
-  <b>경고:</b> 다음 Android 시스템 이미지는 미리 보기이며 사정에 따라 변동될 수 있습니다. 이러한 시스템 이미지를 사용할 때에는 Android SDK 미리 보기 라이선스 계약을 따라야 합니다.
- Android 미리 보기 시스템 이미지는 안정된 릴리스가 아니며, 오류나 결함이 들어있을 수 있고 이 때문에 컴퓨터 시스템, 기기 및 데이터에 손상을 초래할 수 있습니다.
-
- 미리 보기 Android 시스템 이미지는 공장 OS와 같은 테스트를 거치며 전화기 및 설치된 서비스와 애플리케이션의 작동이 중단되는 결과를 낳을 수 있습니다.
-
-
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Device</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="hammerhead">
-    <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >hammerhead-MPA44I-preview-2ebbc049.tgz</a><br>
-      MD5: 91a924fb0c9f8e716e3b4c9954fd0dbb<br>
-      SHA-1: 2ebbc049b68c4da8baeee3e42bb94d7a965ba4a3
-    </td>
-  </tr>
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-MPA44I-preview-62b9c486.tgz</a><br>
-      MD5: ac6e58da86125073d9c395257fd42664<br>
-      SHA-1: 62b9c486fd7a5020e228d53ca5acd5c1857e48ff
-    </td>
-  </tr>
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-MPA44I-preview-5c30a6e2.tgz</a><br>
-      MD5: 7f83768757913d3fea945a661020d185<br>
-      SHA-1: 5c30a6e2acd11a81f4105b12d23ff654f534f699
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-MPA44I-preview-2860040a.tgz</a><br>
-      MD5: 438da8d37da9e341a69cfb16a4001ac5<br>
-      SHA-1: 2860040a326582f1ff5f702bf9a1ef002717fc98
-    </td>
-  </tr>
-
-</table>
-
-<h3 id="install-image">기기에 이미지 설치</h3>
-
-<p>
-  기기 이미지를 테스트용으로 사용하려면, 이를 호환되는 기기에 설치해야만 합니다. 시스템 이미지를 설치하려면 아래의 지침을 따르십시오.
-
-</p>
-
-<ol>
-  <li>여기 목록에 나열된 시스템 이미지 중 하나를 다운로드하여 압축을 해제합니다.</li>
-  <li>기기에서 보존하고자 하는 데이터를 모두 백업합니다.</li>
-  <li>이미지를 기기에 플래시하려면 <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>에 있는 지침을 따릅니다.
-
-</li>
-</ol>
-
-<p class="note">
-  <strong>참고:</strong> 일단 개발 기기에 미리 보기 시스템 이미지를 플래시하고 나면 이것은 OTA(over-the-air) 업데이트를 통해 다음 미리 보기 릴리스에 맞춰 자동으로 업그레이드됩니다.
-
-</p>
-
-<h3 id="revertDevice">기기를 공장 사양으로 되돌리기</h3>
-
-<p>
-  미리 보기의 설치를 제거하고 기기를 공장 사양으로 되돌리고자 하는 경우, <a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a>를 방문하여 기기에 플래시하고자 하는 이미지를 다운로드하십시오.
-
- 해당 페이지에 있는 지침을 따라 기기에 이미지를 플래시하면 됩니다.
-
-</p>
-
-  </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
-  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
-  function onDownload(link) {
-
-    $("#downloadForRealz").html("Download " + $(link).text());
-    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
-    $("#tos").fadeIn('fast');
-    $("#landing").fadeOut('fast');
-
-    return true;
-  }
-
-
-  function onAgreeChecked() {
-    /* verify that the TOS is agreed */
-    if ($("input#agree").is(":checked")) {
-      /* reveal the download button */
-      $("a#downloadForRealz").removeClass('disabled');
-    } else {
-      $("a#downloadForRealz").addClass('disabled');
-    }
-  }
-
-  function onDownloadForRealz(link) {
-    if ($("input#agree").is(':checked')) {
-    /*
-      $("#tos").fadeOut('fast');
-      $("#landing").fadeIn('fast');
-    */
-
-      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
-
-    /*
-      location.hash = "";
-    */
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  $(window).hashchange( function(){
-    if (location.hash == "") {
-      location.reload();
-    }
-  });
-
-</script>
diff --git a/docs/html-intl/intl/ko/preview/features/app-linking.jd b/docs/html-intl/intl/ko/preview/features/app-linking.jd
deleted file mode 100644
index 0e23801..0000000
--- a/docs/html-intl/intl/ko/preview/features/app-linking.jd
+++ /dev/null
@@ -1,123 +0,0 @@
-page.title=앱 링크
-page.image=images/cards/card-app-linking_2x.png
-page.keywords=applinking, 딥 링크, 인텐트
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>이 문서의 내용</h2>
-      <ol>
-        <li><a href="#web-assoc">웹사이트 연관 선언</a></li>
-        <li><a href="#verfy-links">앱 링크 확인 요청</a></li>
-        <li><a href="#user-manage">앱 링크 설정 관리</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  Android 인텐트 시스템은 유연한 메커니즘이라 앱이 콘텐츠와 요청을 처리할 수 있습니다.
-  여러 개의 앱이 자신의 인텐트 필터에서 모두 일치하는 URI 패턴을 선언할 수 있습니다. 사용자가 기본 시작 처리자가 없는 웹 링크를 클릭하는 경우 플랫폼이 대화창을 표시하여 해당 사용자가 일치하는 인텐트 필터를 선언한 앱 목록에서 선택 할 수 있습니다.
-
-
-</p>
-
-<p>
-  Android M 개발자 미리 보기에서는 앱 링크에 대한 지원을 도입합니다. 이를 통해 앱 개발자들이 앱을 본인이 소유한 웹 도메인과 연관시켜 기존의 링크 처리를 한 단계 개선합니다.
- 개발자가 이 연관 관계를 생성하면 플랫폼이 특정 웹 링크를 처리하는 데 사용된 기본 앱을 알아서 판단하여 사용자에게 물어보는 과정을 건너뛸 수 있습니다.
-
-
-</p>
-
-
-<h2 id="web-assoc">웹사이트 연관 선언</h2>
-
-<p>
-  웹사이트 소유자가 앱 링크를 설정하려면 앱과의 연관 관계를 선언해야 합니다. 사이트 소유자는 앱에 대한 이러한 관계를 선언하는 데 JSON 파일을 호스팅하는 방식을 씁니다. 일명 {@code statements.json}이라는 파일을 도메인에서 잘 알려진 위치에 선언합니다.
-
-
-</p>
-
-<pre>http://&lt;domain&gt;:&lt;optional port&gt;/.well-known/statements.json</pre>
-
-<p class="note">
-  <strong>참고:</strong>
-  M 개발자 미리 보기 기간 중에는 JSON 파일을 http 프로토콜을 통해 확인합니다. 플랫폼이 공식적으로 출시되면 이 파일을 암호화된 https 프로토콜에서 확인하게 됩니다.
-
-</p>
-
-<p>
-  이 JSON 파일은 이 도메인 아래에서 URL에 대한 기본 처리자로 사용되어야 하는 Android 앱을 나타냅니다.
- 이것이 앱을 식별하는 기반은 다음과 같은 필드입니다.
-</p>
-
-<ul>
-  <li>{@code package_name}: 앱의 매니페스트에 선언된 패키지 이름입니다.</li>
-
-  <li>{@code sha256_cert_fingerprints}: 앱의 서명 인증서의 SHA256 지문입니다.
-    Java keytool을 사용하여 이 지문을 생성하려면 다음과 같은 명령을 사용십시오.
-    <pre>keytool -list -v -keystore my-release-key.keystore</pre>
-  </li>
-</ul>
-
-<p>
-  다음 파일 목록은
-{@code statements.json} 파일의 콘텐츠와 형식을 예를 들어 나타낸 것입니다.
-</p>
-
-<pre>
-[{
-  "relation": ["delegate_permission/common.handle_all_urls"],
-  "target": {
-    "namespace": "android_app",
-    "package_name": "<strong>&lt;package name&gt;</strong>",
-    "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
-  }
-}]
-</pre>
-
-
-<h2 id="verfy-links">앱 링크 확인 요청</h2>
-
-<p>
-  앱은 플랫폼에 자신의 인텐트 필터의 데이터 요소 내에서 호스트 이름으로 정의된 모든 앱 링크를 자동으로 확인해달라고 요청할 수 있습니다. 이때 비교 대상은 각각의 웹 도메인에서 호스팅된 {@code statements.json} 파일입니다.
-
- 앱 링크 확인을 요청하려면 매니페스트에서 원하는 인텐트 필터 각각에 {@code android:autoVerify}
-특성을 하나씩 추가하면 됩니다. 다음 매니페스트 코드 조각에 나타낸 내용을 참고하십시오.
-
-</p>
-
-<pre>
-&lt;activity ...&gt;
-    &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
-        &lt;action android:name="android.intent.action.VIEW" /&gt;
-        &lt;category android:name="android.intent.category.DEFAULT" /&gt;
-        &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
-        &lt;data android:scheme="http" android:host="www.android.com" /&gt;
-        &lt;data android:scheme="https" android:host="www.android.com" /&gt;
-    &lt;/intent-filter&gt;
-&lt;/activity&gt;
-</pre>
-
-<p>
-  앱 매니페스트에 {@code android:autoVerify} 특성이 있으면, 플랫폼은 앱이 설치된 시점에 앱 링크를 확인하려 시도합니다.
- 플랫폼이 앱 링크를 성공적으로 확인하지 못하면 해당 앱은 웹 링크를 처리하기 위한 기본 설정 앱으로 설정되지 않습니다.
- 다음번에 사용자가 그런 링크 중 하나를 열면, 플랫폼은 사용자에게 메시지를 표시하는 방식으로 변경합니다.
-
-
-</p>
-
-<p class="note">
-  <strong>참고:</strong> 테스트 중에는 확인에 실패하고 나서 거짓 긍정 결과가 나올 가능성이 있지만, 사용자가 앱에 물어보지 않고 지원되는 링크를 열도록 명시적으로 활성화해 놓았고 이때 시스템 설정 앱을 사용한 경우, 대화창이 표시되지 않고 링크는 개발자 본인의 앱으로 이동하지만 이는 순전히 사용자 설정 때문이고 확인이 성공해서가 아닙니다.
-
-
-
-</p>
-
-
-<h2 id="user-manage">앱 링크 설정 관리</h2>
-
-<p>
-  사용자가 앱 링크 설정을 변경하여 URL을 본인이 선호하는 방식으로 처리하도록 할 수 있습니다. 앱 링크를 검토하고 관리하려면 <strong>설정 &gt; 앱 &gt; 앱 정보 &gt; 기본으로 열기</strong> 아래의 시스템 설정 앱에서 하면 됩니다.
-
-
-</p>
diff --git a/docs/html-intl/intl/ko/preview/features/runtime-permissions.jd b/docs/html-intl/intl/ko/preview/features/runtime-permissions.jd
deleted file mode 100644
index 20c5232..0000000
--- a/docs/html-intl/intl/ko/preview/features/runtime-permissions.jd
+++ /dev/null
@@ -1,794 +0,0 @@
-page.title=권한
-page.tags=previewresources, androidm
-page.keywords=권한, 런타임, 미리 보기
-page.image={@docRoot}preview/features/images/permissions_check.png
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>간략히 보기</h2>
-    <ul>
-      <li>앱이 M 미리 보기 SDK를 대상으로 하는 경우, 앱은 사용자에게 설치 시점이 아닌 런타임에 권한을 허용하도록 메시지를 표시합니다.
-</li>
-      <li>사용자는 앱 설정 화면에서 언제든 권한을 취소할 수 있습니다.
-</li>
-      <li>앱은 실행될 때마다 자신에게 필요한 권한이 있는지 확인해야 합니다.
-</li>
-    </ul>
-
-    <h2>이 문서의 내용</h2>
-    <ol>
-      <li><a href="#overview">개요</a></li>
-      <li><a href="#coding">런타임 권한에 대한 코딩</a></li>
-      <li><a href="#testing">런타임 권한 테스트</a></li>
-      <li><a href="#best-practices">모범 사례</a></li>
-    </ol>
-
-<!--
-  <h2>Related Samples</h2>
-  <ol>
-    <li></li>
-  </ol>
--->
-
-<!--
-  <h2>See also</h2>
-  <ol>
-    <li></li>
-  </ol>
--->
-  </div> <!-- qv -->
-</div> <!-- qv-wrapper -->
-
-
-<p>
-  M 개발자 미리 보기에서는 새로운 앱 권한 모델을 소개하여 사용자가 앱을 설치하고 업그레이드하는 과정을 간소화할 수 있습니다.
- M 미리 보기에서 실행되는 앱이 새 권한 모델을 지원하는 경우, 사용자가 앱을 설치하거나 업그레이드할 때 아무런 권한을 허용하지 않아도 됩니다. 그 대신, 앱이 필요할 때마다 권한을 요청하고 시스템이 사용자에게 해당 권한을 요청하는 대화창을 표시합니다.
-
-
-
-
-</p>
-
-<p>
-  앱이 새 권한 모델을 지원하는 경우, Android 이전 버전을 실행하는 기기에서도 설치 및 실행할 수 있는 것은 변하지 않습니다. 이 경우, 그러한 기기의 기존 권한 모델을 사용합니다.
-
-
-</p>
-
-<h2 id="overview">
-  개요
-</h2>
-
-<p>
-  M 개발자 미리 보기에서는 플랫폼에 새로운 권한 모델을 도입합니다.
- 이 새로운 모델의 주요 구성 요소를 다음과 같이 요약해 보았습니다.
-</p>
-
-<ul>
-  <li>
-    <strong>권한 선언:</strong> 이전 Android 플랫폼에서와 같이 앱은 자신이 필요로 하는 권한을 모두 매니페스트에서 선언합니다.
-
-  </li>
-
-  <li>
-    <strong>권한 그룹:</strong> 권한은 각자의 기능을 기반으로 <em>권한 그룹</em>으로 나뉩니다.
- 예를 들어 <code>CONTACTS</code> 권한 그룹에는 사용자의 연락처와 프로필 정보를 읽고 쓰는 데 필요한 권한이 들어있습니다.
-
-
-  </li>
-
-  <li>
-    <p><strong>설치 시점에 제한된 권한 허용:</strong> 사용자가 앱을 설치 또는 업데이트하면 시스템이 해당 앱에 앱이 요청하는 권한 중 {@link android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}에 포함되는 것을 모두 허용합니다.
-
-
-
-    예를 들어 알람 시계와 인터넷 권한은 {@link android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}에 속하므로 이들 권한은 설치 시점에 자동으로 허용됩니다.
-
-
-    </p>
-
-    <p>시스템은 이외에도 앱 서명과 시스템 권한을 허용할 수도 있습니다. 이 내용은 <a href="#system-apps">시스템 앱 및 서명 권한</a>에 설명되어 있습니다.
-
- 설치 시 사용자에게 권한을 허용하라는 메시지가 표시되지 <em>않습니다.</em>
-</p>
-  </li>
-
-  <li>
-    <strong>사용자가 런타임에 권한 허용:</strong> 앱이 권한을 요청하면, 시스템이 사용자에게 대화창을 표시한 다음 앱의 콜백 기능을 호출해 권한이 허용되었는지를 알려줍니다.
-
- 사용자가 권한을 허용하는 경우, 앱에는 앱 매니페스트에서 선언한 해당 권한의 기능 영역에 관한 모든 권한이 부여됩니다.
-
-
-  </li>
-
-</ul>
-
-<p>
-  이 권한 모델은 앱이 권한을 필요로 하는 기능에 대해 동작하는 방식을 바꾸어 놓습니다.
- 다음은 이 모델에 적응하기 위한 몇 가지 개발 사례를 요약했습니다.
-
-</p>
-
-<ul>
-
-  <li>
-    <strong>항상 권한을 확인:</strong> 앱이 권한을 필요로 하는 작업을 수행해야 할 때마다, 우선 앱에 해당 권한이 있는지 확인해야 합니다.
-
- 권한이 없는 경우, 해당 권한을 허용해도록 요청합니다.
-
-  </li>
-
-  <li>
-    <strong>권한 부족을 안정적으로 처리:</strong> 앱이 적절한 권한을 허용받지 못하면, 실패를 깔끔하게 처리할 수 있어야 합니다.
-
-    예를 들어 권한에 기능만 추가하면 되는 것이었다면, 앱이 해당 기능을 비활성화하면 됩니다.
- 해당 권한이 앱이 제대로 기능하는 데 꼭 필요한 것이라면, 앱이 자신의 기능을 모두 비활성화하고 사용자에게 그 권한을 허용해야 한다고 알릴 수도 있습니다.
-
-
-  </li>
-
-  <div class="figure" style="width:220px" id="fig-perms-screen">
-    <img src="{@docRoot}preview/features/images/app-permissions-screen_2x.png" srcset="{@docRoot}preview/features/images/app-permissions-screen.png 1x, {@docRoot}preview/features/images/app-permissions-screen_2x.png 2x" alt="" width="220">
-    <p class="img-caption">
-      <strong>그림 1.</strong> 앱의 '설정'에 있는 권한 화면.
-    </p>
-  </div>
-
-  <li>
-    <strong>취소 가능한 권한:</strong> 사용자는 언제든 앱의 권한을 취소할 수 있습니다.
- 사용자가 앱의 권한을 끄면 해당 앱에 그 사실을 알리지 <em>않습니다.</em>
- 이런 경우, 앱이 제한된 작업을 수행하려면 필요한 권한이 있다는 점을 다시 확인해야 합니다.
-
-  </li>
-</ul>
-
-<p class="note">
-  <strong>참고:</strong> 앱이 M 개발자 미리 보기를 대상으로 하는 경우, <em>반드시</em> 새 권한 모델을 사용해야 합니다.
-
-</p>
-
-<p>
-  M 개발자 미리 보기 시작 시점에는 Google 앱 중에 새 권한 모델을 완전히 구현하지 않는 앱도 있습니다.
- Google은 이러한 앱을 M 개발자 미리 보기를 시행하면서 시간을 두고 업데이트하여 권한 설정/해제 설정을 제대로 사용하도록 할 예정입니다.
-
-
-</p>
-
-<p class="note">
-  <strong>참고:</strong> 앱에 자체 API 표면이 있는 경우, 권한을 대리로 허가하기 전에 우선 발신자에게 해당 데이터에 액세스할 필수 권한이 있는지 확인해야 합니다.
-
-
-</p>
-
-<h3 id="system-apps">
-  시스템 앱 및 서명 권한
-</h3>
-
-<p>
-  보통 사용자가 앱을 설치하면 시스템이 앱에 {@link android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}만 허용합니다.
-
- 하지만 시스템이 앱에 더 많은 권한을 허용하는 경우도 몇 가지 있습니다.
-
-</p>
-
-<ul>
-  <li>앱이 시스템 이미지의 일부분인 경우, 이 앱의 매니페스트에 목록으로 표시된 권한을 자동으로 모두 허용합니다.
-
-  </li>
-
-  <li>앱이 매니페스트에서 권한을 요청했는데 그것이 {@link android.content.pm.PermissionInfo#PROTECTION_SIGNATURE PROTECTION_SIGNATURE}에 속하며 해당 앱이 그러한 권한을 선언한 앱과 같은 인증서로 서명되어 있는 경우, 시스템은 요청하는 앱을 설치할 때 그러한 권한을 허용합니다.
-
-
-
-
-  </li>
-</ul>
-
-<p>
-  두 가지 경우 모두, 사용자가 언제든 권한을 취소할 수 있는 것은 변하지 않습니다. 시스템의 <strong>설정</strong> 화면으로 이동하여 <strong>앱 &gt;</strong>
-
- <i>app_name</i> <strong>&gt; 권한</strong>을 선택하면 됩니다. 이 앱은 계속해서 런타임에 권한을 확인하고 필요한 경우 해당 권한을 요청해야 합니다.
-
-
-</p>
-
-<h3 id="compatibility">
-  이전 및 이후 버전과의 호환성
-</h3>
-
-<p>
-  앱이 M 개발자 미리 보기를 대상으로 하지 않더라도, 앱은 M 미리 보기 기기에서도 기존 권한 모델을 계속 사용합니다.
- 사용자가 앱을 설치하면 시스템이 사용자에게 앱의 매니페스트에 목록으로 표시된 권한을 모두 허용하도록 요청합니다.
-
-
-</p>
-
-<p class="note">
-  <strong>참고:</strong> M 개발자 미리 보기를 실행하는 기기에서는 사용자가 어느 앱에 대해서든(레거시 앱 포함) 앱의 설정 화면에서 권한을 끌 수 있습니다.
-
- 사용자가 레거시 앱에 대한 권한을 끄면, 시스템이 자동으로 적절한 기능을 비활성화합니다.
- 앱이 해당 권한을 필요로 하는 작업을 수행하려 시도한다고 해도 그 작업이 반드시 예외를 발생시키는 것은 아닙니다.
-
- 그 대신에 빈 데이터 세트를 반환하거나 오류를 신호하거나, 기타 예기치 못한 동작을 선보일 수 있습니다.
- 예를 들어 권한 없이 캘린더를 쿼리하면 해당 메서드가 빈 데이터 세트를 반환합니다.
-
-</p>
-
-<p>
-  M 미리 보기를 실행하지 않는 기기에서 새 권한 모델을 사용하는 앱을 설치하면 시스템은 해당 앱을 다른 앱과 똑같이 다룹니다. 즉, 설치 시점에 시스템에 사용자에게 선언된 권한 모두를 허용하도록 요청합니다.
-
-
-
-</p>
-
-<p class="note">
-  <strong>참고:</strong> 미리 보기 릴리스에서는 최소 SDK 버전을 M 미리 보기 SDK로 설정해야 미리 보기 SDK와 컴파일할 수 있습니다.
- 즉, 개발자 미리 보기 시행 중에는 그러한 앱을 기존 플랫폼에서 테스트할 수 없다는 뜻입니다.
-
-
-</p>
-
-<h3 id="perms-vs-intents">권한과 인텐트 비교</h3>
-
-<p>
-  대부분의 경우, 앱에게 어떤 작업을 수행하도록 하려면 두 가지 방식 중 하나를 선택할 수 있습니다.
- 첫째로 앱이 작업을 직접 수행하도록 권한을 요청할 수 있습니다.
- 또는, 앱에 인텐트를 사용하도록 하여 또 다른 앱이 해당 작업을 수행하도록 할 수 있습니다.
-
-</p>
-
-<p>
-  예를 들어 앱이 기기 카메라로 사진을 촬영할 수 있어야 한다고 가정합시다.
- 그러면 앱은 <code>android.permission.CAMERA</code> 권한을 요청할 수 있습니다. 이렇게 하면 앱이 카메라에 직접 액세스할 수 있습니다.
-
- 그런 다음 앱이 카메라 API를 사용하여 카메라를 제어하고 사진을 촬영합니다.
- 이 방식을 사용하면 앱에 사진 촬영 과정에 대해 완전한 제어권을 부여하고, 카메라 UI를 앱에 통합할 수 있습니다.
-
-
-</p>
-
-<p>
-  하지만, 그러한 제어권이 필요하지 않은 경우라면 그저 {@link android.provider.MediaStore#ACTION_IMAGE_CAPTURE ACTION_IMAGE_CAPTURE} 인텐트를 사용해 이미지를 요청하면 됩니다.
-
- 이 인텐트를 시작하면 사용자에게 카메라 앱을 선택하라는 메시지가 표시되고(기본 카메라 앱이 이미 있는 경우) 그 앱이 사진을 촬영합니다.
-
- 이 카메라 앱은 촬영한 사진을 개발자의 앱의 {@link android.app.Activity#onActivityResult onActivityResult()} 메서드에 반환합니다.
-
-</p>
-
-<p>
-  이와 마찬가지로, 전화를 걸어야 하거나 사용자의 연락처에 액세스해야 하는 경우 등에는 적절한 인텐트를 만들거나 적절한 객체에 직접 액세스하도록 권한을 요청할 수 있습니다.
-
- 이 두 가지 방식에는 각각 장단점이 있습니다.
-
-</p>
-
-<p>
-  권한을 사용하는 경우:
-</p>
-
-<ul>
-  <li>개발자가 직접 작업을 수행하는 경우 본인의 앱이 사용자 환경을 완전히 제어합니다.
- 다만, 그렇게 포괄적인 제어권을 가지면 적절한 UI를 디자인해야 하므로 작업이 복잡해집니다.
-
-  </li>
-
-  <li>사용자에게 권한을 부여하라는 메시지는 작업을 처음 수행할 때만 표시됩니다.
- 그 다음부터는 앱이 사용자로부터 더 이상의 상호작용을 요청하지 않아도 작업을 수행할 수 있습니다.
- 다만, 사용자가 해당 권한을 허용하지 않는 경우(또는 나중에 취소하는 경우), 앱은 해당 작업을 수행할 수 없게 됩니다.
-
-
-  </li>
-</ul>
-
-<p>
-  인텐트를 사용하는 경우:
-</p>
-
-<ul>
-  <li>작업을 위해 UI를 디자인하지 않아도 됩니다. 이는 인텐트를 처리하는 앱이 UI를 제공하기 때문입니다. 하지만, 이것은 즉 개발자에게 사용자 환경에 대한 제어권이 전혀 없다는 뜻이기도 합니다.
-
- 사용자는 어쩌면 개발자가 본 적도 없는 앱과 상호작용하고 있을지 모릅니다.
-
-  </li>
-
-  <li>사용자에게 해당 작업에 대한 기본 앱이 없는 경우, 시스템은 사용자에게 앱을 선택하라는 메시지를 표시합니다. 사용자가 기본 처리기를 지정하지 않으면 해당 작업을 수행할 때마다 추가 대화창을 거쳐야 할 수도 있습니다.
-
-
-
-  </li>
-</ul>
-
-<h2 id="coding">런타임 권한에 대한 코딩</h2>
-
-<p>
-  새로운 M 개발자 미리 보기를 대상으로 앱을 개발하는 경우, 새 권한 모델을 사용해야 합니다.
- 이는 즉, 매니페스트에 필요한 권한을 선언하는 것 말고도 런타임에 자신이 해당 권한을 가지고 있는지도 확인해야 하며, 그러한 권한을 이미 가지고 있지 않으면 권한을 요청해야 한다는 뜻입니다.
-
-
-
-</p>
-
-<h3 id="enabling">
-  새 권한 모델 활성화하기
-</h3>
-
-<p>
-  새로운 M 개발자 미리 보기 권한 모델을 활성화하려면 앱의 <code>targetSdkVersion</code> 특성을 <code>"MNC"</code>로 설정하고, <code>compileSdkVersion</code>은 <code>"android-MNC"</code>로 설정하세요.
-
- 이렇게 하면 새 권한 기능이 모두 활성화됩니다.
-
-</p>
-
-<p>
-  미리 보기 릴리스에서는 <code>minSdkVersion</code>을 <code>"MNC"</code>로 설정해야만 미리 보기 SDK와 컴파일할 수 있습니다.
-
-</p>
-
-<h3 id="m-only-perm">
-  M 미리 보기 전용 권한 지정하기
-</h3>
-
-<p>
-  새 <code>&lt;uses-permission-sdk-m&gt;</code> 요소를 앱 매니페스트에 사용하여 권한이 M 개발자 미리 보기에서만 필요하다는 것을 나타낼 수 있습니다.
- 권한을 이런 식으로 선언하면 앱이 이전 버전의 기기에 설치될 때마다 시스템에서 사용자에게 메시지를 표시하지도 않고 앱에 권한을 허용하지도 않습니다. <code>&lt;uses-permission-sdk-m&gt;</code> 요소를 사용하면 새 권한을 앱의 업데이트된 버전에 추가하면서도 사용자가 업데이트를 설치할 때 권한을 허용하라고 강제로 시키지 않아도 됩니다.
-
-
-
-
-
-
-</p>
-
-<p>
-  앱이 M 개발자 미리 보기를 갖춘 기기에서 실행되는 경우, <code>&lt;uses-permission-sdk-m&gt;</code>은 <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>과 똑같이 동작합니다.
-
-
-  시스템은 사용자가 앱을 설치할 때 권한을 허용하라는 메시지를 표시하지 않고, 앱이 필요할 때마다 권한을 요청하게 됩니다.
-
-</p>
-
-<h3 id="prompting">
-  권한에 대한 메시지 표시하기
-</h3>
-
-<p>
-  앱이 새로운 M 개발자 미리 보기 권한 모델을 사용하는 경우, 앱이 M 미리 보기에서 실행되는 기기에서 처음 시작되었을 때 사용자에게 모든 권한을 허용하도록 요청하지 않습니다.
-
- 대신, 앱은 필요할 때마다 권한을 요청합니다.
- 앱이 권한을 요청하면 시스템이 사용자에게 대화창으로 표시합니다.
-
-</p>
-
-<p>
-  앱이 SDK 22 이하를 탑재한 기기에서 실행되는 경우, 앱은 기존 권한 모델을 사용합니다.
- 사용자가 앱을 설치하면 앱이 자신의 매니페스트에서 요청하는 모든 권한을 허용하라는 메시지가 표시되는데, 이때 <code>&lt;uses-permission-sdk-m&gt;</code>이라는 레이블이 붙은 권한은 예외입니다.
-
-
-</p>
-
-<h4 id="check-platform">앱이 실행되는 플랫폼 확인</h4>
-
-<p>
-  이 권한 모델은 M 개발자 미리 보기를 실행하는 기기에서만 지원됩니다.
- 이러한 메서드 중에서 호출하려면 앱은 우선 {@link android.os.Build.VERSION#CODENAME Build.VERSION.CODENAME} 값을 확인하여 자신이 어느 플랫폼에서 실행 중인지 확인해야 합니다.
-
-
- 기기가 M 개발자 미리 보기에서 실행 중인 경우, {@link android.os.Build.VERSION#CODENAME CODENAME}은 <code>"MNC"</code>입니다.
-
-</p>
-
-<h4 id="check-for-permission">앱에 필요한 권한이 있는지 확인</h4>
-
-<p>사용자가 권한을 필요로 하는 무언가를 하려고 시도하면, 앱은 자신이 현재 이 작업을 수행하는 데 필요한 권한을 가지고 있는지 확인합니다.
- 이렇게 하기 위해 앱은 <code>Context.checkSelfPermission( )</code>을 호출합니다.
-
-<i>permission_name</i> 사용자가 앱의 권한을 언제든 취소할 수 있기 때문에 앱은 사용자가 해당 권한을 이미 허용했다는 것을 알고 있더라도 확인 작업을 수행해야 합니다.
-
-
- 예를 들어, 사용자가 사진 촬영 앱을 사용하고자 한다면 앱은 <code>Context.checkSelfPermission(Manifest.permission.CAMERA)</code>를 호출합니다.
-
-</p>
-
-<p class="table-caption" id="permission-groups">
-  <strong>표 1.</strong> 권한과 권한 그룹.</p>
-<table>
-  <tr>
-    <th scope="col">권한 그룹</th>
-    <th scope="col">권한</th>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CALENDAR</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_CALENDAR</code>
-        </li>
-      </ul>
-      <ul>
-        <li>
-          <code>android.permission.WRITE_CALENDAR</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CAMERA</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.CAMERA</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CONTACTS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_CONTACTS</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_CONTACTS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_PROFILE</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_PROFILE</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.LOCATION</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.ACCESS_FINE_LOCATION</code>
-        </li>
-        <li>
-          <code>android.permission.ACCESS_COARSE_LOCATION</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.MICROPHONE</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.RECORD_AUDIO</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.PHONE</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_PHONE_STATE</code>
-        </li>
-        <li>
-          <code>android.permission.CALL_PHONE</code>
-        </li>
-        <li>
-          <code>android.permission.READ_CALL_LOG</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_CALL_LOG</code>
-        </li>
-        <li>
-          <code>com.android.voicemail.permission.ADD_VOICEMAIL</code>
-        </li>
-        <li>
-          <code>android.permission.USE_SIP</code>
-        </li>
-        <li>
-          <code>android.permission.PROCESS_OUTGOING_CALLS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.SENSORS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.BODY_SENSORS</code>
-        </li>
-      </ul>
-      <ul>
-        <li>
-          <code>android.permission.USE_FINGERPRINT</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.SMS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.SEND_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_WAP_PUSH</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_MMS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_CELL_BROADCASTS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-</table>
-
-<h4 id="request-permissions">필요한 경우 권한 요청</h4>
-
-<p>앱이 자신에게 필요한 권한을 이미 가지고 있지 않은 경우, 앱은 <code>Activity.requestPermissions(String[], int)</code> 메서드를 호출하여 적절한 권한(여러 개일 수 있음)을 요청합니다.
-
- 앱은 원하는 권한을 요청하면서 정수 "요청 코드"를 요청합니다.
-
-  이 메서드는 비동기화 방식으로 기능합니다. 이는 즉각적으로 반환되며, 사용자가 대화 상자에 응답한 다음에는 시스템이 결과를 가지고 앱의 콜백 메서드를 호출하여 앱이 <code>requestPermissions()</code>에 전달한 "요청 코드"와 같은 코드를 전달합니다.
-
-
-</p>
-
-  <p>다음 코드는 앱에 사용자의 연락처를 읽을 권한이 있는지 코드 확인을 하고, 필요한 경우 해당 권한을 요청합니다.
-</p>
-
-<pre>
-if (checkSelfPermission(Manifest.permission.READ_CONTACTS)
-        != PackageManager.PERMISSION_GRANTED) {
-    requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
-            MY_PERMISSIONS_REQUEST_READ_CONTACTS);
-
-    // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
-    // app-defined int constant
-
-    return;
-}
-</pre>
-
-<h4 id="handle-response">권한 요청 응답 처리하기</h4>
-
-<p>
-  앱이 권한을 요청하면 시스템이 사용자에게 대화 상자를 표시합니다.
- 사용자가 응답하면 시스템은 앱의 <code>Activity.onRequestPermissionsResult(int, String[], int[])</code>를 불러내 이를 사용자 응답에 전달합니다.
-
- 앱은 해당 메서드를 재정의해야 합니다. 이 콜백에는 개발자가 <code>requestPermissions()</code>에 전달한 것과 같은 요청 코드가 전달됩니다.
-
- 예를 들어 어느 앱이 <code>READ_CONTACTS</code> 액세스를 요청한다면 다음과 같은 콜백 메서드를 가지고 있을 수 있습니다.
-
-
-</p>
-
-<pre>
-&#64;Override
-public void onRequestPermissionsResult(int requestCode,
-        String permissions[], int[] grantResults) {
-    switch (requestCode) {
-        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
-            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-
-                // permission was granted, yay! do the
-                // calendar task you need to do.
-
-            } else {
-
-                // permission denied, boo! Disable the
-                // functionality that depends on this permission.
-            }
-            return;
-        }
-
-        // other 'switch' lines to check for other
-        // permissions this app might request
-    }
-}
-</pre>
-
-  <p>사용자가 권한을 허용하면 시스템은 앱 매니페스트에 그 기능 영역에 대해 목록으로 표시된 모든 권한을 해당 앱에 부여합니다.
- 사용자가 요청을 거부하면 적절한 조치를 취해야 합니다.
- 예를 들어 이 권한에 좌우되는 메뉴 작업을 모두 비활성화할 수 있습니다.
-
-  </li>
-</p>
-
-<p>
-  시스템이 사용자에게 권한을 허용하도록 요청하면 사용자에게는 시스템에 해당 권한을 다시 요청하지 말라고 지시할 선택권이 있습니다.
- 그런 경우, 앱이 해당 권한을 요청하기 위해 <code>requestPermissions()</code>를 사용하면 시스템이 즉시 요청을 거부합니다.
-
- 이 경우 시스템은 사용자가 명시적으로 개발자의 요청을 다시 거부한 것처럼 <code>onRequestPermissionsResult()</code>를 호출합니다.
-
- 이러한 이유로, 앱은 사용자와의 직접적인 상호작용이 일어났다고 가정해서는 안 됩니다.
-
-</p>
-
-<h2 id="testing">런타임 권한 테스트</h2>
-
-
-<p>
-  M 개발자 미리 보기를 대상으로 삼고 앱을 개발하는 경우, 이 앱이 권한을 적절하게 처리하는지 테스트해보아야 합니다.
- 앱이 실행될 때 특정 권한을 가지고 있다고 가정해서는 안 됩니다.
- 앱을 처음 시작할 때에는 아무런 권한도 없을 가능성이 높고, 사용자가 언제든 권한을 취소하거나 복원할 수 있기 때문입니다.
-
-
-</p>
-
-<p>
-  앱을 테스트하여 모든 권한 관련 상황에서 제대로 작동하는지 확인하는 것이 좋습니다.
- M 미리 보기 SDK에서는 새로운 <a href="{@docRoot}tools/help/adb.html">Android 디버그 브리지(adb)</a> 명령을 제공하여 여러분이 시도해 보아야 하는 권한 설정이 무엇이든 앱을 테스트할 수 있도록 하였습니다.
-
-
-
-</p>
-
-<h3>
-  새로운 adb 명령 및 선택 사항
-</h3>
-
-<p>
-  M 미리 보기 SDK 플랫폼 도구에서는 여러 가지 새로운 명령을 제공하여 앱이 권한을 처리하는 방식을 테스트해볼 수 있습니다.
-
-</p>
-
-<h4>
-  권한으로 설치
-</h4>
-
-<p>
-  <a href="{@docRoot}tools/help/adb.html#move"><code>adb
-  install</code></a> 명령의 새로운 <code>-g</code> 선택 항목을 사용하면 앱을 설치하고 해당 앱의 매니페스트에 목록으로 표시된 모든 권한을 허용합니다.
-
-</p>
-
-<pre class="no-pretty-print">
-$ adb install -g &lt;path_to_apk&gt;
-</pre>
-
-<h4>
-  권한 허용 및 취소
-</h4>
-
-<p>
-  새로운 ADB <a href="{@docRoot}tools/help/adb.html#pm">패키지 관리자(pm)</a> 명령을 사용하면 설치된 앱에 권한을 허용하고 취소할 수 있습니다. 이 기능은 자동화 설정에서 유용하게 쓰일 수 있습니다.
-
-
-</p>
-
-<p>
-  권한을 허용하려면, 패키지 관리자의 <code>grant</code> 명령을 사용하세요.
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant &lt;package_name&gt; &lt;permission_name&gt;
-</pre>
-
-<p>
-  예를 들어 com.example.myapp 패키지 권한을 허용하여 오디오를 녹음하려면 이 명령을 사용하면 됩니다.
-
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant com.example.myapp android.permission.RECORD_AUDIO
-</pre>
-
-<p>
-  권한을 취소하려면, 패키지 관리자의 <code>revoke</code> 명령을 사용하세요.
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm revoke &lt;package_name&gt; &lt;permission_name&gt;
-</pre>
-
-<h2 id="best-practices">모범 사례</h2>
-
-<p>
-  새 권한 모델을 사용하면 사용자에게 보다 원활한 환경을 제공하고, 앱을 더욱 쉽게 설치하며 앱이 어떤 작업을 하고 있는지 바로 확인할 수 있습니다.
-
- 새 모델의 장점을 최대한 활용할 수 있도록 다음과 같은 모범 사례를 추천해 드립니다.
-
-</p>
-
-
-<h3 id="bp-what-you-need">필요한 권한만 요청</h3>
-
-<p>
-  권한을 요청할 때마다 사용자에게는 결정을 내리라는 강요를 하는 셈입니다.
-  사용자가 요청을 거절하면 앱의 기능이 저하됩니다.
-  때문에 이러한 요청을 하는 횟수를 최소한으로 줄이는 것이 좋습니다.
-</p>
-
-<p>
-  예를 들어 앱이 권한을 요청하는 대신 <a href="{@docRoot}guide/components/intents-filters.html">인텐트</a>를 사용해 필요한 기능을 얻을 수 있는 경우도 꽤 많습니다.
-
- 앱이 전화기의 카메라를 사용해 사진을 촬영해야 하는 경우, 앱은 {@link android.provider.MediaStore#ACTION_IMAGE_CAPTURE MediaStore.ACTION_IMAGE_CAPTURE} 인텐트를 사용할 수 있습니다.
-
-
- 앱이 인텐트를 실행하면 시스템이 사용자에게 메시지를 표시해 이미 설치된 카메라 앱을 선택하여 사진을 촬영하도록 합니다.
-
-
-</p>
-
-<h3 id="bp-dont-overwhelm">
-  사용자에게 부담을 주지 말 것
-</h3>
-
-<p>
-  사용자에게 엄청나게 많은 수의 권한 요청을 한꺼번에 들이밀면 사용자가 부담을 느끼고 앱을 종료해버리는 결과를 초래할 수 있습니다. 대신 권한이 필요할 때마다 요청하는 것이 좋습니다.
-
-
-</p>
-
-<p>
-  일부 경우에는 앱에 절대적으로 꼭 필요한 권한이 한 개 이상 있을 수도 있습니다. 그런 경우에는 앱이 시작되자마자 해당 권한을 모두 요청하는 것을 권장합니다.
-
- 예를 들어 사진 앱을 만들면 앱이 기기 카메라로 액세스할 수 있는 권한이 필요합니다.
- 사용자가 앱을 처음으로 시작할 때 카메라를 사용할 권한을 요청받아도 놀라지는 않을 것입니다.
-
- 하지만 같은 앱에 사용자의 연락처과 사진을 공유하는 기능도 있다고 가정한다면 이 경우 해당 권한을 첫 시작 시점에 요청하는 것은 별로 권장할 만한 일이 <em>아닙니다.</em>
-
- 대신, 사용자가 "공유" 기능을 요청하려 할 때까지 기다렸다가 그 때 해당 권한을 요청하면 됩니다.
-
-</p>
-
-<p>
-  앱이 튜토리얼을 제공하는 경우, 튜토리얼 시퀀스가 다 끝날 무렵에 앱의 필수 권한을 요청하는 것이 이치에 맞을 수 있습니다.
-
-</p>
-
-<h3 id="bp-explain">
-  권한이 필요한 이유 설명
-</h3>
-
-<p>
-  개발자가 <code>requestPermissions()</code>를 호출하면 시스템이 표시하는 권한 대화창에는 앱이 원하는 권한이 무엇인지는 나타나 있지만 그것이 필요한 이유는 설명하지 않습니다.
-
- 사용자가 이런 것을 의아하게 여기는 경우가 있을 수 있습니다.
-  우선 사용자에게 앱이 왜 그런 권한을 원하는지 설명한 다음 <code>requestPermissions()</code>를 호출하는 것이 좋습니다.
-
-</p>
-
-<p>
-  예를 들어 사진 앱인 경우 위치 서비스를 이용하고자 할 수 있습니다. 그래야 사진에 지오태그를 표시할 수 있기 때문입니다.
- 일반적인 사용자는 사진에 위치 정보를 담을 수 있다는 점을 모를 수도 있고, 그러면 사진 앱이 왜 위치를 알고 싶어 하는지 의아하게 여길 수 있습니다.
-
- 그러므로 이런 경우에는 앱이 사용자에게 이런 기능에 대해 <em>미리</em> 알려드린 후 <code>requestPermissions()</code>를 호출하는 것이 좋습니다.
-
-
-</p>
-
-<p>
-  이를 수행하기 위한 한 가지 방법은 이러한 요청을 앱 튜토리얼에 넣는 것입니다. 튜토리얼에는 앱의 각 기능을 표시할 수 있고, 그러면서 어느 권한이 필요한지 설명할 수도 있기 때문입니다.
-
- 예를 들어 사진 앱의 튜토리얼에서 "연락처 목록의 지인들과 사진 공유" 기능을 시연한 다음 사용자에게 앱이 사용자의 연락처를 보려면 권한을 부여해야 한다고 알리면 됩니다.
-
-
- 그런 다음, 앱이 <code>requestPermissions()</code>를 호출하여 사용자에게 해당 액세스를 요청합니다.
- 물론 튜토리얼을 따르지 않는 사용자도 있게 마련이므로 앱의 정상 작동 중에 권한을 확인하고 요청해야 합니다.
-
-
-</p>
diff --git a/docs/html-intl/intl/ko/preview/index.jd b/docs/html-intl/intl/ko/preview/index.jd
deleted file mode 100644
index badb9f6..0000000
--- a/docs/html-intl/intl/ko/preview/index.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Android M 개발자 미리 보기
-page.tags="preview",
-meta.tags="preview, M preview", androidm
-fullpage=true
-section.landing=true
-header.hide=1
-footer.hide=1
-@jd:body
-
-<section class="dac-expand dac-hero dac-light" >
-  <div class="wrap">
-    <div class="cols dac-hero-content">
-      <div class="col-9of16 col-push-7of16 dac-hero-figure">
-        <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png" srcset="{@docRoot}images/home/devices-hero_620px.png 1x,
-             {@docRoot}images/home/devices-hero_620px_2x.png 2x">
-      </div>
-      <div class="col-7of16 col-pull-9of16">
-        <h1 class="dac-hero-title">Android M 개발자 미리 보기</h1>
-        <p class="dac-hero-description">
-          Android의 다음 버전을 만나볼 준비가 되셨습니까? 여러분의 앱을 Nexus 5, 6, 9 및 Player에서 테스트해보십시오.
- 새로운 내용은 무엇인지 둘러보십시오. <strong>런타임 권한</strong>, <strong>Doze</strong> 및 <strong>앱 대기 모드</strong> 절전 기능, 새로 나온 <strong>지원 기술</strong>, 이외에도 많은 것이 있습니다.
-
-
-        </p>
-
-        <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          지금 시작하세요!
-</a><br>
-        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          Developer Preview 3 (final SDK)</a>
-      </div>
-    </div>
-    <div class="dac-section dac-small">
-      <div class="resource-widget resource-flow-layout col-16"
-           data-query="collection:preview/landing/resources"
-           data-cardSizes="6x2"
-           data-maxResults="6"></div>
-    </div>
-  </div>
-</section>
-
-<section class="dac-section dac-gray"><div class="wrap">
-  <h1 class="dac-section-title">리소스</h1>
-  <div class="dac-section-subtitle">
-    앱을 Android M에 대비시키는 데 유용한 중요 정보입니다.
-  </div>
-
-  <div class="resource-widget resource-flow-layout col-16"
-       data-query="collection:preview/landing/more"
-       data-cardSizes="6x6"
-       data-maxResults="16"></div>
-
-    <ul class="dac-section-links">
-      <li class="dac-section-link">
-        <a href="https://code.google.com/p/android-developer-preview/">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          문제 보고
-</a>
-      </li>
-      <li class="dac-section-link"><a href="http://g.co/dev/AndroidMDevPreview">
-        <span class="dac-sprite dac-auto-chevron"></span>
-        G+ 커뮤니티 가입
-</a>
-      </li>
-    </ul>
-  </div>
-</section>
-
diff --git a/docs/html-intl/intl/ko/preview/license.jd b/docs/html-intl/intl/ko/preview/license.jd
deleted file mode 100644
index 71c9d45..0000000
--- a/docs/html-intl/intl/ko/preview/license.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=라이선스 계약
-
-@jd:body
-
-<p>
-Android SDK 미리보기를 시작하려면 우선 다음과 같은 사용 약관에 동의해야 합니다. 아래에 설명한 바와 같이, 이것은 Android SDK의 미리 보기 버전이며 변경될 가능성이 있고 이를 사용하는 위험 부담은 계약자 본인에게 있음을 유의하십시오.
-  Android SDK 미리보기는 안정된 릴리스가 아니며, 오류나 결함이 들어있을 수 있고 이 때문에 컴퓨터 시스템, 기기 및 데이터에 심각한 손상을 초래할 수 있습니다.
-</p>
-
-<p>
-이것은 Android SDK 미리 보기 라이선스 계약서입니다(이하 "라이선스 계약").
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1. 개요 
-
-1.1 Android SDK 미리 보기(본 라이선스 계약에서는 "미리 보기"라고 칭하며, 구체적으로 Android 시스템 파일, 패키지 API 및 미리 보기 라이브러리 파일이 이용 가능한 경우 및 이용 가능하게 전환된 경우 이를 포함한 것을 가리킴)는 본 라이선스 계약 조건에 따라 계약자에게 사용을 허여합니다. 본 라이선스 계약은 미리 보기 사용과 관련하여 계약자와 Google 간에 법적 구속력이 있는 계약을 체결합니다.
-
-1.2 "Android"는 기기를 위한 Android 소프트웨어 스택을 의미합니다. 이는 http://source.android.com/ URL에 위치하며 수시로 업데이트되는 Android 오픈 소스 프로젝트에서 제공됩니다.
-
-1.3 "Google"은 미국 1600 Amphitheatre Parkway, Mountain View, CA 94043에 본사를 두고 있는 델라웨어주 법인인 Google Inc.를 의미합니다.
-
-2. 라이선스 계약에 동의 
-
-2.1 이 미리 보기를 사용하려면, 먼저 라이선스 계약에 동의해야 합니다. 이 라이선스 계약에 동의하지 않고 미리 보기를 사용해서는 안 됩니다. 
-
-2.2 수락을 클릭하고/거나 미리 보기를 사용하면 본 라이선스 계약 조건에 동의하는 것으로 간주됩니다.
-
-2.3 미국법 또는 현재 거주 중이거나 미리 보기를 사용하는 국가를 포함하여 다른 국가의 법에 따라 미리 보기를 받는 것이 금지된 경우, 미리 보기를 사용할 수 없으며 본 라이선스 계약을 수락할 수 없습니다.
-
-2.4 회사 또는 단체 내에서 내부적으로 미리 보기를 사용하며 고용주 또는 기타 단체를 대신하여 본 라이선스 계약 준수에 동의하는 경우, 계약자의 고용주나 그 단체에 본 라이선스 계약에 대한 구속력을 부여할 수 있는 모든 법적 권한을 계약자가 갖고 있음을 진술하고 보증합니다. 구속력을 부여할 수 있는 법적 권한이 없을 경우, 고용주 또는 기타 단체를 대신하여 본 라이선스 계약에 동의하거나 미리 보기를 사용할 수 없습니다.
-
-3. Google이 허하는 미리 보기 라이선스 
-
-3.1 본 라이선스 계약의 조건에 따라 Google은 계약자에게 로열티 없고 양도 불가능하며 비독점적이고 2차 인가를 불허하며, 한정되고 무효화할 수 있는 미리 보기 사용 권한을 허용하여 회사 또는 조직 내에서 개인적 또는 내부적으로 사용할 수 있도록 합니다. 이는 Android 플랫폼에서 실행되는 애플리케이션을 개발할 목적으로만 사용해야 합니다. 
-
-3.2 계약자는 SDK에 존재하는 지적 재산권을 포함한 SDK에 대한 모든 법적인 권리, 소유권 및 이익이 Google 또는 제3자에게 있음에 동의합니다 "지적 재산권"은 모든 특허법, 저작권법, 영업비밀법, 상표법상 존재하는 모든 권리 및 기타 모든 재산권을 의미합니다. Google은 계약자에게 명시적으로 부여하지 않은 모든 권리를 보유합니다.
-
-3.3 본 라이선스 계약에 명시적으로 허용된 용도 외에는 미리 보기를 사용할 수 없습니다. 해당 제3자 라이선스 요건이 허용하는 범위를 제외하고 계약자는 미리 보기의 일부분을 (a) 복사(백업 목적 제외), 수정, 개작, 재배포, 역컴파일, 리버스 엔지니어링, 분해하거나 이를 통해 파생물을 생성하거나 (b) 개인 컴퓨터를 제외한 모바일 단말기 또는 기타 모든 하드웨어 기기에 미리 보기의 일부를 로드하거나, 미리 보기의 일부를 다른 소프트웨어와 결합하거나 미리 보기의 일부가 통합된 일체의 소프트웨어나 기기를 배포해서는 안 됩니다.
-
-3.4 계약자는 미리 보기에서 파생된 소프트웨어 개발 키트의 배포, 이러한 키트 생성에 참여 또는 홍보를 포함하되 이에 국한되지 않고, Android의 단편화를 야기하는 어떠한 행동도 취하지 않을 것임에 동의합니다.
-
-3.5 오픈 소스 소프트웨어 라이선스에 의거한 미리 보기 구성요소의 사용, 재생산, 배포에는 본 라이선스 계약이 아닌, 해당 오픈 소스 소프트웨어 라이선스의 조건이 적용됩니다. 계약자는 허용된 모든 권한 하에서 그러한 오픈 소스 소프트웨어 라이선스에 관해 충실한 피허가자로서의 자세를 견지할 것이며 그러한 권한을 종료, 일시 중단 또는 침해하는 행위를 삼갈 것을 동의합니다. 
-
-3.6 계약자는 Google이 제공하는 SDK의 형태 및 특성이 사전 통지 없이 변경될 수 있음에 동의하며, 이전 버전의 미리 보기에서 개발된 애플리케이션이 이후 버전의 SDK와 호환되지 않을 수 있음에 동의합니다. 계약자는 계약자 또는 사용자에게 사전 통지 없이 SDK(또는 SDK에 포함된 기능) 제공을(영구적 또는 일시적으로) 중단할 수 있는 권한이 Google에게 있음에 동의합니다.
-
-3.7 본 라이선스 계약은 계약자에게 Google의 상표명, 상표, 서비스 표시, 로고, 도메인 이름, 기타 독특한 브랜드 특징에 대한 사용 권한을 부여하지 않습니다.
-
-3.8 계약자는 SDK에 부착되어 있거나 포함되어 있는 모든 소유권 고지 사항(저작권 및 상표 고지 사항 포함)을 제거, 변경 또는 불분명하게 만들지 않을 것에 동의합니다.
-
-4. 계약자의 미리 보기 사용 
-
-4.1 Google은 본 라이선스 계약의 어떤 조항도 계약자(또는 계약자의 사용 허가자)가 미리 보기를 사용하여 개발한 소프트웨어 애플리케이션에 대한 권리, 소유권 또는 이익, 그리고 해당 애플리케이션에 존재하는 모든 지적 재산권을 부여하지 않는다는 점에 동의합니다.
-
-4.2 계약자는 (a) 본 라이선스 계약 그리고 (b) 모든 준거법, 규정 또는 관련 관할권 내에서 일반적으로 수용되는 관행 또는 지침(미국 또는 기타 관련 국가로/에서의 데이터 또는 소프트웨어 수출과 관련된 모든 법률 포함)에서 허용하는 용도에 한하여 미리 보기를 사용하고 애플리케이션을 작성하는 것에 동의합니다. 
-
-4.3 계약자는 일반 대중 사용자를 대상으로 미리 보기를 사용하여 애플리케이션을 개발하는 경우, 해당 사용자의 프라이버시 및 법적 권리를 보호하는 것에 동의합니다. 사용자가 계약자에게 사용자 이름, 비밀번호 또는 기타 로그인 정보나 개인 정보를 제공하는 경우, 계약자는 제공된 정보가 자신의 애플리케이션에 제공된다는 사실을 사용자에게 알려야 하며, 반드시 법적으로 적절한 개인정보 보호정책 고지 및 보호를 해당 사용자에게 제공해야 합니다. 애플리케이션에서 사용자가 제공한 개인정보나 민감한 정보를 저장하는 경우, 이를 안전하게 처리해야 합니다. 사용자들이 애플리케이션에 Google 계정 정보를 제공하는 경우, 애플리케이션은 해당 사용자의 Google 계정에 액세스하는 목적으로만, 그리고 각 사용자가 허용한 범위 내의 한정된 목적으로만 이러한 정보를 사용해야 합니다.
-
-4.4 계약자는 Google 또는 기타 모든 타사의 서버, 네트워크 또는 기타 모든 재산 또는 서비스를 허가 없이 방해, 교란, 손상 또는 액세스하는 애플리케이션의 개발 또는 배포를 포함한 하등의 행위에 미리 보기를 이용하지 않을 것임을 동의합니다.
-
-4.5 계약자는 자신이 Android 및/또는 Android용 애플리케이션을 통해 생성, 전송 또는 표시하는 모든 데이터, 콘텐츠 또는 리소스 그리고 그로 인한 결과(Google이 입을 수 있는 모든 피해나 손실 포함)에 대해 전적으로 책임이 있다는 것(그리고 Google은 계약자 또는 모든 제3자에 대한 책임이 없다는 것)에 동의합니다.
-
-4.6 계약자는 본 라이선스 계약, 모든 해당 제3자 계약 또는 서비스 약관, 또는 모든 준거법 또는 규정에 의거한 계약자 의무 위반, 그리고 그로 인한 결과(Google 또는 제3자가 입을 수 있는 모든 피해나 손실 포함)에 전적으로 책임이 있다는 것(그리고 Google은 계약자 또는 모든 제3자에 대한 책임이 없다는 것)에 동의합니다.
-
-4.7 이 미리 보기는 현재 개발 단계에 있으며, 계약자의 테스트와 피드백은 그러한 개발 과정에 중요한 부분을 차지합니다. 미리 보기를 사용함으로써 계약자는 일부 기능의 구현은 아직 개발 중인 상태이며 미리 보기가 안정된 릴리스처럼 완벽하게 기능할 것이라 믿고 사용해서는 안 된다는 점을 인지하는 것으로 간주합니다. 계약자는 이 미리 보기를 사용한 애플리케이션을 공개적으로 배포 또는 배송하지 않기로 동의합니다. 이 미리 보기는 공식 Android SDK가 출시된 이후에는 더 이상 지원되지 않기 때문입니다. 
-
-5. 계약자의 개발자 자격 증명
-
-5.1 계약자는 Google이 발급했거나 자신이 선택한 모든 개발자 자격 증명에 대한 기밀성을 유지할 책임이 있으며 계약자의 개발자 자격 증명 하에 개발된 모든 애플리케이션에 대한 전적인 책임이 있음에 동의합니다.
-
-6. 개인정보 보호정책 및 정보
-
-6.1 미리 보기를 지속적으로 혁신하고 개선하기 위해, Google은 고유 식별자, 관련 IP 주소, 소프트웨어 버전 번호, 미리 보기에서 사용 중인 도구 및/또는 서비스와 도구의 사용법에 대한 정보를 포함하되 이에 국한되지 않고 소프트웨어에서 특정 사용량 통계 정보를 수집할 수 있습니다. 그러한 정보를 수집하기 전에 미리 보기는 계약자에게 이를 통지하고 동의를 구할 것입니다. 계약자가 동의하지 않을 경우 정보를 수집하지 않습니다.
-
-6.2 수집된 데이터는 모두 취합된 형태로 미리 보기 개선을 위해 검토되며, Google의 개인정보 보호정책에 따라 유지 관리됩니다. 이 정보는 http://www.google.com/policies/privacy/를 참조하십시오.
-
-7. 제3자 애플리케이션
-
-7.1 제3자가 개발한 애플리케이션을 실행하거나 제3자가 제공한 데이터, 콘텐츠 또는 리소스에 액세스하기 위해 미리 보기를 사용하는 경우, 계약자는 Google이 그러한 애플리케이션, 데이터, 콘텐츠 또는 리소스에 대한 책임이 없음에 동의합니다. 계약자는 그러한 제3자 애플리케이션을 통해 자신이 액세스한 모든 데이터, 콘텐츠 또는 리소스에 대한 책임은 그것을 만든 사람에게 있음에 동의합니다. 또한 계약자가 그러한 모든 제3자 애플리케이션, 데이터, 콘텐츠 또는 리소스를 사용하거나 액세스함으로써 비롯된 모든 피해나 손실에 대한 책임이 Google에게 없음에 동의합니다.
-
-7.2 그러한 제3자 애플리케이션을 통해 계약자에게 제공된 데이터, 콘텐츠 그리고 리소스는 그것을 제공한 제공자(또는 제공자를 대신하는 기타 개인 또는 기업)가 소유한 지적 재산권에 의해 보호될 수 있음을 유의해야 합니다. 그러한 데이터, 콘텐츠 또는 리소스(전부 또는 일부)를 수정, 임대, 리스, 대여, 판매, 배포하거나 이를 기반으로 파생물을 생성해서는 안 됩니다. 단, 관련 소유자로부터 그러한 작업을 수행해도 좋다는 허락을 받은 경우에는 예외입니다.
-
-7.3 계약자는 그러한 제3자 애플리케이션, 데이터, 콘텐츠 또는 리소스의 사용은 계약자와 관련 제3자 간에 체결하는 별도의 계약 조건의 적용을 받는다는 것을 인정합니다.
-
-8. Google API 사용
-
-8.1 Google Data API
-
-8.1.1 Google에서 데이터를 검색하기 위해 API를 사용하는 경우, 그러한 데이터가 Google 또는 데이터를 제공하는 당사자(또는 당사자를 대신하는 기타 개인 또는 기업)가 소유한 지적 재산권에 의해 보호될 수 있음을 인정합니다. 그러한 API를 사용하는 경우, 추가적인 서비스 약관의 적용을 받을 수 있습니다. 관련 서비스 약관에 허용되지 않은 한, 그러한 데이터(전부 또는 일부)를 변경, 임대, 리스, 대여, 판매, 배포하거나 이를 기반으로 파생물을 생성해서는 안 됩니다.
-
-8.1.2 Google에서 사용자 데이터를 검색하기 위해 API를 사용하는 경우, 계약자는 사용자로부터 명시적인 동의를 얻은 경우에 한하여, 그리고 해당 사용자가 허용한 범위 내의 한정된 목적으로만 데이터를 검색해야 합니다.
-
-9. 라이선스 계약 종료
-
-9.1 본 라이선스 계약은 계약자 또는 Google에 의해 아래와 같은 조건 하에 종료될 때까지 계속 적용됩니다.
-
-9.2 계약자가 라이선스 계약을 종료하고자 하는 경우, 미리 보기 및 관련 개발자 자격 증명 일체의 사용을 중단하는 것으로 그러한 의사를 피력할 수 있습니다.
-
-9.3 Google은 언제든 이유 여하를 불문하고 계약자에게 통고하여 라이선스 계약을 종료할 수 있습니다.
-
-9.4 본 라이선스 계약은 통보 또는 여타의 행위 없이도 자동으로 종료됩니다. 이에 해당되려면 다음과 같은 조건이 수반되어야 합니다.
-(A) Google이 계약자가 거주하는 국가 또는 계약자가 서비스를 사용하는 지역에서 미리 보기 또는 미리 보기의 특정 부분 제공을 중지하는 경우 및
-(B) Google이 Android SDK의 최종 릴리스 버전을 발행하는 경우.
-
-9.5 본 라이선스 계약이 종료되면 라이선스 계약으로 계약자에게 허용한 라이선스가 취소되며, 이에 따라 계약자는 미리 보기 사용을 즉시 모두 중단해야 하고 제 10, 11, 12 및 14절의 조항이 기한 없이 유지됩니다.
-
-10. 면책 조항
-
-10.1 계약자는 미리 보기 이용에 대한 위험 부담이 전적으로 본인에게 있으며, Google이 일체의 보증 없이 미리 보기를 "있는 그대로" 그리고 "이용 가능한" 상태로 제공한다는 것을 분명히 이해하고 동의합니다.
-
-10.2 미리 보기 이용 및 이용 과정에서 다운로드하거나 얻게 되는 모든 자료를 사용하는 것은 본인의 재량에 따르며 이에 대한 위험 부담이 전적으로 본인에게 있으며, 그러한 사용으로 인해 발생하는 컴퓨터 시스템 또는 다른 기기의 손상 또는 데이터 손실에 대한 책임은 전적으로 본인에게 있습니다. 전술한 조항을 제한하지 않는 범위 내에서 계약자는 미리 보기가 안정된 릴리스가 아니며 오류, 결함 및 보안 취약성이 포함되어 있을 수 있어 그 결과로 중대한 손상을 유발할 수 있다는 점을 이해하는 것으로 간주합니다. 여기에는 계약자의 컴퓨터 시스템 또는 기타 기기의 완전하고 돌이킬 수 없는 손실도 포함됩니다.
-
-10.3 더 나아가, Google은 상품성, 특정 목적에 대한 적합성 및 비침해의 묵시적 보증 등을 포함하되 이에 국한되지 않고 명시적이든 묵시적이든 모든 종류의 보증 및 조건을 명시적으로 부인합니다.
-
-11. 책임 한계
-
-11.1 계약자는 계약자에게 발생할 수 있는 직접, 간접, 부수적, 특별, 결과적 또는 징벌적 손해에 대해 그 어떤 책임 이론에 근거해서도 Google, 해당 자회사, 계열사 및 사용 허가자가 어떠한 책임도 지지 아니함을 분명히 이해하고 동의합니다. 이러한 손해에는 Google 또는 해당 대리자가 이러한 손실 발생 가능성에 대해 통지를 받았거나 이러한 사항을 인식했는지에 상관없이 모든 데이터 손실이 포함됩니다.
-
-12. 면책
-
-12.1 법률에 의해 허용되는 최대한의 범위 안에서 계약자는 (a) 미리 보기 사용, (b) 계약자가 미리 보기에서 개발한 일체의 애플리케이션에서 초래된 모든 사람의 저작권, 상표, 영업비밀, 트레이드 드레스, 특허 또는 기타 지적 재산권의 침해, 또는 어떤 사람의 명예를 훼손하거나 초상권 또는 개인정보 보호정책을 침해함 또는 (C)계약자 본인이 본 라이선스 계약을 위반함으로써 발생하거나 생기는 모든 청구, 조치, 소송 또는 절차, 그리고 모든 손실, 책임, 손해, 경비(합리적인 변호사 비용 포함)로부터 Google을 옹호하고, 면책시키고, Google이 손해를 입지 않도록 하는 데 동의합니다.
-
-13. 라이선스 계약 변경
-
-13.1 미리 보기의 새로운 버전을 배포할 때, Google은 본 라이선스 계약의 내용을 변경할 수 있습니다. 그러한 변경이 이뤄진 경우, Google은 미리 보기가 제공되는 웹사이트에 새로운 라이선스 계약 버전을 게재할 것입니다.
-
-14. 일반 법적 조건
-
-14.1 본 라이선스 계약은 계약자와 Google 간의 모든 법적 계약을 구성하며, 계약자의 미리 보기 사용을 규제하고(별도의 서면 계약을 통해 Google이 계약자에게 제공하는 모든 서비스는 제외), 미리 보기와 관련하여 이전에 계약자와 Google이 맺은 모든 계약을 완전히 대체합니다.
-
-14.2 계약자는 Google이 라이선스 계약에 포함된(또는 관련 법률에 의해 Google이 향유하는) 법적 권리 또는 구제수단을 행사하거나 집행하지 않더라도, Google이 권리를 공식적으로 포기한 것으로 간주하지 않으며, Google이 계속해서 그러한 권리 또는 구제수단을 이용할 수 있음에 동의합니다.
-
-14.3 본 라이선스 계약의 조항이 무효라고 이 사안에 관한 판결을 할 수 있는 관할권을 가진 법원이 판결할 경우, 그 조항은 라이선스 계약의 나머지 조항에 영향을 미치지 않는 형태로 라이선스 계약에서 제거됩니다. 본 라이선스 계약의 나머지 조항은 여전히 유효하며 집행 가능합니다.
-
-14.4 계약자는 Google이 모회사가 되는 회사 그룹에 속한 각 회사가 본 라이선스 계약의 제3수익자이며, 그러한 다른 회사들이 그들에게 이익(또는 유리한 권리)을 부여하는 본 라이선스 계약의 모든 조항을 직접 행사하고 적용할 수 있는 권리를 가진다는 데 동의합니다. 그 외에는 다른 어떤 개인이나 회사도 본 라이선스 계약의 제3수익자가 될 수 없습니다.
-
-14.5 수출 규제. 미리 보기는 미국의 수출법과 규정의 적용을 받습니다. 계약자는 미리 보기에 적용되는 모든 국내 및 국제 수출법과 규정을 준수해야 합니다. 그러한 법에는 수출 대상국, 최종 사용자 및 최종 용도에 대한 제한이 포함됩니다.
-
-14.6 계약자 또는 Google은 상대 당사자의 사전 서면 승인 없이 본 라이선스 계약에서 부여된 권리를 제3자에게 양도하거나 이전할 수 없으며, 그러한 승인 없이 이루어진 양도 시도는 모두 무효입니다. 계약자는 Google의 사전 승인 없이 본 라이선스 계약 상의 책임 또는 의무를 위임할 수 없습니다. 
-
-14.7 본 라이선스 계약, 그리고 본 라이선스 계약 상의 계약자와 Google의 관계는 법률 조항 간의 충돌과는 무관하게 캘리포니아주법에 의한 규제를 받습니다. 계약자와 Google은 본 라이선스 계약으로부터 발생하는 모든 법적 문제 해결을 캘리포니아주 산타 클라라(Santa Clara) 카운티 내에 소재한 전속 관할 법원에 의뢰하는 것에 동의합니다. 위 규정에도 불구하고, 계약자는 Google이 여전히 모든 관할권에서 강제 구제책(또는 동등한 유형의 긴급 법적 구제)을 신청할 수 있음에 동의합니다.
-
-
-</div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ko/preview/overview.jd b/docs/html-intl/intl/ko/preview/overview.jd
deleted file mode 100644
index 04febc7..0000000
--- a/docs/html-intl/intl/ko/preview/overview.jd
+++ /dev/null
@@ -1,389 +0,0 @@
-page.title=프로그램 개요
-page.metaDescription=Android M 개발자 미리 보기를 시작하신 여러분, 환영합니다. 이 프로그램은 Android의 다음 버전에 대해 앱을 테스트하고 최적화하는 데 필요한 모든 것을 제공해 드립니다.
-page.image=images/cards/card-preview_16-9_2x.png
-page.tags="preview", "developer", "android"
-
-@jd:body
-
-<div class="cols" style=
-"background-color:#ffebc3; padding: 5px 0;margin-bottom:1em; text-align:center;">
-<h3>
-    Developer Preview 2 is now available
-  </h3>
-
- <ul class="dac-section-links">
-    <li class="dac-section-link">
-      <a href="{@docRoot}preview/support.html#preview2-notes">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Read the Notes</a>
-    </li>
-
-    <li class="dac-section-link">
-      <a href="{@docRoot}preview/support.html#preview2-get">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Get the Update</a>
-    </li>
-
-    <li class="dac-section-link">
-      <a href="https://code.google.com/p/android-developer-preview/">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Report Issues</a>
-    </li>
-  </ul>
-</div>
-
-<p>
-  <strong>Android M 개발자 미리 보기</strong>를 시작하신 여러분, 환영합니다. 이 프로그램은 Android의 다음 버전에 대해 앱을 테스트하고 최적화하는 데 필요한 모든 것을 제공해 드립니다.
-
- 이 프로그램은 무료이며, M 개발자 미리 보기 도구만 다운로드하면 시작하실 수 있습니다.
-
-</p>
-
-<div style="background-color:#eceff1;padding:1em;">
-<div class="wrap">
-  <div class="cols">
-    <div class="col-4of12">
-      <h5>
-        하드웨어 및 에뮬레이터 시스템 이미지
-      </h5>
-
-      <p>
-        Nexus 5, 6, 9, Player(TV용)와 에뮬레이터에서 앱을 실행하고 테스트해 보세요.
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        최신 플랫폼 코드
-      </h5>
-
-      <p>
-        미리 보기 시행 중에 여러 번의 업데이트를 제공할 예정입니다. 이로써 여러분은 항상 최신 플랫폼 변경에 대해 테스트할 수 있습니다.
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        업데이트를 OTA로 전달
-      </h5>
-
-      <p>
-        일단 기기를 최초 미리 보기에 플래시하고 나면 OTA로 업데이트를 받을 수 있습니다.
-
-      </p>
-    </div>
-  </div>
-
-  <div class="cols">
-
-
-    <div class="col-4of12">
-      <h5>
-        새 동작 및 기능
-      </h5>
-
-      <p>
-        작업을 일찍 시작하여 새 런타임 권한 모델과 절전 기능 등 새로운 플랫폼 동작을 지원합니다.
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        개발자가 보고한 문제에 대한 우선 순위 창
-      </h5>
-
-      <p>
-        Google에서는 처음 몇 주 동안 개발자가 보고한 문제에 우선 순위를 부여할 예정입니다. 가능한 빨리 테스트하고 피드백을 보내 주세요.
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        피드백 및 지원
-      </h5>
-
-      <p>
-        문제를 보고하고 Google의 <a href="https://code.google.com/p/android-developer-preview/">문제 추적기</a>를 사용해 피드백을 보내 주세요.
-        <a href="http://g.co/dev/AndroidMDevPreview">M&nbsp;개발자 커뮤니티</a>를 이용하면 다른 개발자들과 의견을 주고받을 수 있습니다.
-
-      </p>
-    </div>
-  </div>
-</div>
-</div>
-
-<!--
-<p>
-  With the M Developer Preview, you'll get an early start on testing your apps,
-  with enough time to make adjustments before the public platform release later
-  in the year. We'll provide several updates to the Preview tools in the weeks
-  ahead, so you can keep in sync with the latest changes as the platform moves
-  toward launch.
-</p>
-<img src="{@docRoot}preview/images/m-preview-timeline.png" alt=
-"Preview program timeline" id="timeline">
-<p>
-  You can help us improve the platform by <a href=
-  "https://code.google.com/p/android-developer-preview/">reporting issues</a>
-  through our feedback channels. This is especially
-  critical in the first month of the preview, when we’ll be giving priority to
-  developer-reported issues and feedback.
-</p> -->
-
-
-<h2 id="timeline">
-  일정 및 업데이트
-</h2>
-<img src="{@docRoot}preview/images/m-preview-timeline-crop.png" alt="Preview program timeline" id="timeline">
-<p>
-  M 개발자 미리 보기는 5월 28일부터 최종 Android M SDK가 출시될 때까지 실행됩니다. 최종 버전은 2015년 3사분기 중으로 예정된 공개 릴리스 직전에 출시할 계획입니다.
-
-
-</p>
-
-<p>
-  개발 중 중요 단계에 다다를 때마다 여러분의 테스트 기기를 위해 업데이트를 전달해 드리겠습니다.
-  잠정적인 중요 단계는 다음과 같습니다.
-</p>
-
-<ul>
-  <li>
-    <strong>미리 보기&nbsp;1</strong>(최초 미리 보기 릴리스, 5월 말)
-  </li>
-
-  <li>
-    <strong>미리 보기&nbsp;2</strong>(6월 말/7월 초)
-  </li>
-
-  <li>
-    <strong>미리 보기&nbsp;3</strong>(최종 버전 출시 직전, 7월 말)
-  </li>
-</ul>
-
-<p>
-  이러한 업데이트는 <strong>최종 SDK</strong>(3사분기 후반)로 막을 내릴 것이며, 이것으로 Android 새 버전에 대한 공식 API뿐만 아니라 최종 시스템 동작 및 기능도 제공하게 됩니다.
-
-
-</p>
-
-<p>
-  Android M에서 테스트와 개발을 수행하는 동안 미리 보기 업데이트가 출시되는 것에 맞춰 <strong>개발 환경을 최신 상태로 유지</strong>할 것을 강력히 권장합니다.
-
-  이 과정을 보다 단순화하기 위해 이미 미리 보기 빌드에 플래시한 기기에는 <strong>OTA(over-the-air) 업데이트</strong>를 제공할 예정이며, 이외에도 수동으로 다운로드하고 플래시할 수 있는 시스템 이미지도 제공할 계획입니다.
-
-
-</p>
-<p class="note">
-  <strong>참고:</strong> 최종 SDK와 시스템 이미지는 OTA로 전달할 수 없습니다. 그 대신 개발자 본인의 테스트 기기에서 <strong>수동으로 플래시</strong>해야 합니다.</strong>
-
-
-</p>
-
-<p>
-  미리 보기 업데이트를 이용할 수 있게 될 때마다 <a href="http://android-developers.blogspot.com/">Android 개발자 블로그</a>, 해당 사이트 및 <a href="http://g.co/dev/AndroidMDevPreview">Android M 개발자 커뮤니티</a>를 통해서 알려드릴 것입니다.
-
-
-</p>
-
-<h2 id="preview_tools">
-  미리 보기 내용
-</h2>
-
-<p>
-  M 개발자 미리 보기에는 기존 앱을 여러 가지 화면 크기, 네트워크 기술, CPU/GPU 칩세트 및 하드웨어 아키텍처에서 테스트하는 데 필요한 모든 것이 포함되어 있습니다.
-
-
-</p>
-
-<h4>
-  SDK 도구
-</h4>
-
-<p>
-  이러한 구성 요소는 <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a>에서 SDK Manager를 통해 다운로드할 수 있습니다.
-</p>
-
-<ul>
-  <li>M 개발자 미리 보기 <strong>SDK 도구</strong>
-  </li>
-
-  <li>M 개발자 미리 보기 <strong>에뮬레이터 시스템 이미지</strong>(32비트 및 64비트)
-
-  </li>
-
-  <li>M 개발자 미리 보기 <strong>Android TV용 에뮬레이터 시스템 이미지</strong>(32비트)
-
-  </li>
-</ul>
-
-<h4>
-  하드웨어 시스템 이미지
-</h4>
-
-<p>
-  Nexus 기기에 대한 다음과 같은 하드웨어 시스템 이미지는 <a href="download.html">다운로드 페이지</a>에서 다운로드할 수 있습니다.
-
-</p>
-
-<ul>
-  <li>
-    <strong>Nexus 5</strong>(GSM/LTE) “hammerhead” 기기 시스템 이미지
-  </li>
-
-  <li>
-    <strong>Nexus 6</strong> “shamu” 기기 시스템 이미지
-  </li>
-
-  <li>
-    <strong>Nexus 9</strong>(Wi-Fi) “volantis” 기기 시스템 이미지
-  </li>
-
-  <li>
-    <strong>Nexus Player</strong>(Android TV) “fugu” 기기 시스템 이미지
-  </li>
-</ul>
-
-<h4>
-  관련 문서 및 샘플 코드
-</h4>
-
-<p>
-  다음과 같은 관련 문서 리소스는 미리 보기에 대해 익히는 데 유용합니다.
-</p>
-
-<ul>
-  <li>
-    <a href="setup-sdk.html">SDK 설정</a>에는 시작하는 데 필요한 단계별 지침이 들어 있습니다.
-
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/testing/guide.html">테스트 가이드</a>와 <a href="behavior-changes.html">동작 변경</a>에서는 테스트해야 할 주요 영역을 알려줍니다.
-  </li>
-
-  <li>새 API 관련 문서 중에서 <a href="api-overview.html">API 개요</a>, 다운로드할 수 있는 <a href="{@docRoot}preview/download.html#docs">API 참조</a>와 자세한 개발자 가이드(<a href="{@docRoot}preview/features/runtime-permissions.html">권한</a>, <a href="{@docRoot}preview/backup/index.html">앱 백업</a> 등 주요 기능에 대한 내용)도 참조하세요.
-
-
-
-
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/samples.html">샘플 코드</a>는 권한과 기타 새로운 기능을 지원하는 방법을 설명합니다.
-
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/support.html#release-notes">릴리스 노트</a>를 보면 M 개발자 미리 보기의 현재 버전에 대해 변경 내용 참고 사항과 차이점 보고서 등 관련 정보를 확인할 수 있습니다.
-
-  </li>
-</ul>
-
-<h4>
-  지원 리소스
-</h4>
-
-<p>
-  M 개발자 미리 보기에서 테스트하고 개발하는 데 유용한 지원 리소스를 소개합니다.
-
-</p>
-
-<ul>
-  <li><a href="https://code.google.com/p/android-developer-preview/">M 개발자 미리 보기 문제 추적기</a>가 여러분의 <strong>기본 피드백 채널</strong>입니다.
-
- 문제 추적기를 통해 버그와 성능 문제를 보고하고 전반적인 피드백을 주시면 됩니다.
- 이를 통해 <a href="https://code.google.com/p/android-developer-preview/wiki/KnownIssues">알려진 문제</a>를 확인하고 해결 방법 단계를 찾아볼 수도 있습니다.
-
-  </li>
-
-  <li><a href="http://g.co/dev/AndroidMDevPreview">Android M 개발자 커뮤니티</a>는 일종의 Google+ 커뮤니티로, 여기에서 여러분은 Android M을 가지고 작업하는 <strong>다른 개발자들과 이야기</strong>를 나눌 수 있습니다. 서로의 의견이나 아이디어를 나누고 Android M 관련 질문에 대한 대답을 찾을 수도 있습니다.
-
-
-
-  </li>
-</ul>
-
-
-<h2 id="preview_apis_and_publishing">
-  대상 지정, 미리 보기 API 및 게시
-</h2>
-
-<p>
-  Android M 개발자 미리 보기는 개발 전용 릴리스이며 <strong>표준 API 레벨이 없습니다</strong>.
- 앱을 테스트하기 위해 호환성 동작에서 옵트아웃하고자 하는 경우(강력히 권장함), M 개발자 미리 보기를 대상으로 지정하면 됩니다. 앱의 <code><a href=
-  "/guide/topics/manifest/uses-sdk-element.html">targetSdkVersion</a></code>을 <code>“MNC”</code>로 지정하세요.
-
-
-
-</p>
-
-<p>
-  Android M 개발자 미리 보기에서는 <strong>미리 보기 API</strong>를 제공합니다. &mdash;이 API는 최종 SDK가 출시될 때까지 공식적인 버전으로 인정되지 않습니다. 최종 SDK 릴리스는 현재 2015년 삼사분기 무렵으로 예정되어 있습니다.
-
- 이는 즉, 시간이 지나면서 <strong>사소한 API 변경</strong>이 있을 것이라는 점을 예상해야 한다는 뜻입니다. 특히 프로그램 초반 몇 주 동안은 유의해야 합니다.
-
- Android M 개발자 미리 보기를 업데이트할 때마다 변경 내용을 요약해서 제공해 드릴 것입니다.
-
-</p>
-
-<p class="note">
-  미리 보기 API는 변경될 수 있지만, 런타임 권한과 절전 기능과 같은 기본 시스템 동작은 안정적이며 지금 바로 테스트 가능한 상태입니다.
-
-
-</p>
-
-<p>
-  게시에 관해서는, Google Play에서는 <strong>M 개발자 미리 보기를 대상으로 삼는 앱의 게시를 방지합니다.</strong>
- Android M 최종 SDK를 이용할 수 있게 되면 공식 Android M API 레벨을 대상으로 지정할 수 있고, 그때 Google Play에 앱을 게시하면 됩니다.
-
- 그때까지는 테스터들에게 Android M을 대상으로 지정한 앱을 배포하고자 하는 경우 이메일이나 본인의 사이트에서 직접 다운로드를 통해 하시면 됩니다.
-
-
-</p>
-
-<h2 id="get_started">
-  시작 방법
-</h2>
-
-<p>
-  앱 테스트를 시작하려면
-</p>
-
-<ol>
-  <li><a href="{@docRoot}preview/api-overview.html">API 개요</a>와 <a href="{@docRoot}preview/behavior-changes.html">동작 변경</a>을 검토해 새로운 내용과 이것이 본인의 앱에 미치는 영향에 대해 알고 있어야 합니다.
-
- 특히, 새로운 <a href="{@docRoot}preview/features/runtime-permissions.html">런타임 권한</a> 모델, 절전 기능과 자동 백업에 대해 숙지하는 것이 좋습니다.
-
-
-  </li>
-
-  <li>환경을 설정할 때에는 <a href="{@docRoot}preview/setup-sdk.html">미리 보기 SDK 설정</a>과 테스트 기기를 구성하는 데 관련된 지침을 따르세요.
-
-
-  </li>
-
-  <li><a href="https://developers.google.com/android/nexus/images">플래시 지침</a>을 따라 최신 M 개발자 미리 보기 시스템 이미지를 Nexus 5, 6, 9 및 Player에 플래시하세요.
-
- 일단 개발 기기를 플래시하고 나면, 미리 보기 업데이트가 OTA(over-the-air) 업데이트를 통해 전달됩니다.</a>
-
-  </li>
-
-  <li><a href="{@docRoot}preview/download.html#docs">M 미리 보기 API 참조</a>와 <a href="{@docRoot}preview/samples.html">M 미리 보기 샘플</a>을 다운로드하면 새로운 API 기능과 앱에서 그러한 기능을 사용하는 방법에 대해 좀 더 자세히 파악할 수 있습니다.
-
-
-
-  </li>
-
-  <li><a href="http://g.co/dev/AndroidMDevPreview">Android M 개발자 커뮤니티</a>에 가입하여 최신 소식을 알아보고, 새 플랫폼으로 작업하는 다른 개발자들과 이야기를 나눠보세요.
-
-
-  </li>
-</ol>
-
-<p>
-  Android M 개발자 미리 보기 프로그램에 참가해 주셔서 대단히 감사합니다!
-</p>
diff --git a/docs/html-intl/intl/ko/preview/samples.jd b/docs/html-intl/intl/ko/preview/samples.jd
deleted file mode 100644
index aeb8fc2..0000000
--- a/docs/html-intl/intl/ko/preview/samples.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=샘플
-page.image=images/cards/samples-new_2x.png
-@jd:body
-
-<p>
-  다음 코드 샘플은 M 개발자 미리 보기를 위해 제공된 것입니다. Android Studio에서 샘플을 다운로드하려면 <b>파일 &gt; 샘플 가져오기</b> 메뉴 옵션을 선택하십시오.
-
-</p>
-
-<p class="note">
-  <strong>참고:</strong> 이러한 다운로드 가능한 프로젝트는 Gradle 및 Android Studio와 함께 쓰도록 만들어진 것입니다.
-
-</p>
-
-
-<h3 id="RuntimePermissions">런타임 권한</h3>
-
-<p>
- Android M은 시스템 권한이 작동하는 방식을 확 바꾸어 놓습니다. 사용자는 설치 중이 아니라 런타임에 권한 요청을 승인해 달라는 요청을 받습니다.
- 이 샘플은 이와 같은 권한을 요청하는 방법을 나타낸 것입니다.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-RuntimePermissions">GitHub에서 가져오기</a></p>
-
-<h3 id="ConfirmCredentials">확인 자격 증명</h3>
-
-<p>
- 이 샘플은 앱에서 기기 자격 증명을 인증 방법으로 사용하는 법을 나타낸 것입니다.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ConfirmCredential">GitHub에서 가져오기</a>
-</p>
-
-<h3 id="FingerprintDialog">지문 대화창</h3>
-
-<p>
- 이 샘플은 앱에서 사용자를 인증하기 위해 등록된 지문을 인식하는 방법을 나타낸 것입니다.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-FingerprintDialog">GitHub에서 가져오기</a></p>
-
-<h3 id="AutomaticBackup">앱용 자동 백업</h3>
-
-<p>
- Android M은 앱 설정에서 사용할 수 있는 자동 백업을 도입합니다. 이 샘플은 설정 백업을 관리하기 위해 앱에 필터링 규칙을 추가하는 방법을 나타낸 것입니다.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-AutoBackupForApps">GitHub에서 가져오기</a></p>
-
-<h3 id="CameraRaw">카메라 2 RAW</h3>
-
-<p>
-  <code>Camera2</code> API를 사용해 RAW 카메라 버퍼를 캡처하고 이를 <code>DNG</code> 파일로 저장하는 법을 나타낸 것입니다.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-Camera2Raw">GitHub에서 가져오기</a></p>
-
-<h3 id="ActiveNotification">활성 알림</h3>
-
-<p>
-  이 샘플은 <a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a>를 사용하여 앱이 현재 표시하고 있는 알림 수가 몇 개인지 알게 되는 원리를 나타낸 것입니다.
-
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ActiveNotifications">GitHub에서 가져오기</a></p>
diff --git a/docs/html-intl/intl/ko/preview/setup-sdk.jd b/docs/html-intl/intl/ko/preview/setup-sdk.jd
deleted file mode 100644
index cf3084b..0000000
--- a/docs/html-intl/intl/ko/preview/setup-sdk.jd
+++ /dev/null
@@ -1,207 +0,0 @@
-page.title=미리 보기 SDK 설정하기
-page.image=images/cards/card-set-up_16-9_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>이 문서의 내용</h2>
-      <ol>
-        <li><a href="#get-as13">Android Studio 1.3 가져오기</a></li>
-        <li><a href="#get-sdk">미리 보기 SDK 가져오기</a></li>
-        <li><a href="#create-update">프로젝트 생성 또는 업데이트</a></li>
-        <li><a href="#setup-test">테스트를 위해 설정</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>M 개발자 미리 보기 SDK는 Android SDK Manager에서 이용할 수 있습니다. 이 문서에서는 독자 여러분이 Android 앱 개발, 예를 들어 Android SDK Manager 사용이나 프로젝트 생성 등에 익숙하다고 가정합니다.
-
- Android를 처음 사용하시는 경우, 우선 <a href="{@docRoot}training/basics/firstapp/index.html">첫 앱 구축하기</a> 학습 단원부터 참조하십시오.</a>
-
-</p>
-
-<h2 id="get-as13">Android Studio 1.3 가져오기</h2>
-
-<p>개발자 미리 보기는 역시 미리 보기 상태인 Android Studio 1.3과 함께 사용하는 것이 가장 좋습니다.
- Android Studio 1.3의 미리 보기 버전을 설치하여 미리 보기 SDK 작업에 사용하는 것을 적극 추천합니다.
-</p>
-
-<p class="caution"><strong>주의:</strong> Android Studio 1.3의 카나리아 미리 보기는 아직도 활발히 개발 중인 상태입니다.
- 기본 개발 머신을 사용하여 개발자 미리 보기를 테스트하는 경우, 두 번째 Android Studio 설치를 하나 더 생성해 테스트에 사용하면 됩니다.
-
-</p>
-
-<p>Android Studio 1.3 미리 보기를 설치하려면 다음과 같이 하면 됩니다.</p>
-
-<ol>
-  <li><a href="{@docRoot}tools/studio/index.html">Android Studio</a>를 다운로드하여 시작합니다.
-
-  </li>
-
-  <li><strong>설정</strong> 창을 엽니다(또는 Windows의 경우 <strong>파일 &gt; 설정</strong>을 선택해도 됩니다).
- <strong>외관 및 동작 &gt; 시스템 &gt; 설정 &gt; 업데이트</strong> 패널을 선택하십시오.
-
-
-
-    <p class="aside">OSX의 경우, <strong>외관 및 동작</strong> 패널은 Android Studio의 <strong>기본 설정</strong> 창에 있습니다.
-
-</p>
-  </li>
-
-  <li> <strong>업데이트</strong> 패널에서 <strong>다음에 대해 업데이트 자동 확인:
- Canary 채널</strong>이라는 선택 사항을 선택합니다.
-  </li>
-
-  <li><strong>업데이트</strong> 패널에서 <strong>지금 확인</strong>을 선택하여 최신 카나리아 빌드를 확인합니다.
- 메시지가 표시되면 빌드를 다운로드하고 설치하십시오.
-
-  </li>
-</ol>
-
-<h2 id="get-sdk">미리 보기 SDK 가져오기</h2>
-
-<p>개발 환경에 미리 보기 SDK 구성 요소를 추가하려면 다음과 같이 하면 됩니다.</p>
-
-<ol>
-  <li>Android Studio 1.3 미리 보기를 시작합니다.
-  </li>
-
-  <li><strong>설정</strong> 창을 엽니다(또는 Windows의 경우 <strong>파일 &gt; 설정</strong>을 선택해도 됩니다).
- <strong>외관 및 동작 &gt; 시스템 &gt; 설정 &gt; 업데이트</strong> 패널을 선택하십시오.
-
-
-
-    <p class="aside">OSX의 경우, <strong>외관 및 동작</strong> 패널은 Android Studio의 <strong>기본 설정</strong> 창에 있습니다.
-
-</p>
-  </li>
-
-  <li><strong>업데이트</strong> 패널에서 <strong>다음에 대해 업데이트 자동 확인:
- Canary 채널</strong> 및 <strong>Android SDK에 대한 업데이트 자동 확인:
- 미리 보기 채널</strong> 선택 사항을 선택합니다.
-  </li>
-
-  <li><strong>Android SDK Manager</strong>를 시작합니다 (Android Studio 1.3에서는 SDK Manager가 독립 실행형 애플리케이션이 아니고 Android Studio에 통합되어 있습니다).
-
-
-  </li>
-
-  <li><strong>플랫폼</strong> 섹션 아래에서 <strong>Android MNC 미리 보기</strong>를 선택하십시오.
-
-  </li>
-
-  <li><strong>도구</strong> 섹션에서 최신 Android <strong>SDK 도구</strong>, <strong>플랫폼-도구</strong>, 및 <strong>빌드-도구</strong>를 선택합니다.
-
-
-  </li>
-
-  <li><strong>패키지 설치</strong>를 클릭하고 패키지 전체에 대해 라이선스 사용 계약을 수락합니다.
-
-  </li>
-
-  <li>M 개발자 미리 보기가 설치되었는지 확인하려면 <strong>설정</strong> 창을 열고 <strong>외관 및 동작 &gt; 시스템 설정 &gt; Android SDK</strong> 패널을 선택하면 됩니다.
-
-</li>
-
-  <li><strong>Android SDK</strong> 패널에서 <strong>SDK 플랫폼</strong> 탭을 선택합니다.
- <strong>Android MNC 미리 보기</strong>가 <em>설치됨</em> 아래 목록으로 나열되어 있는 것이 정상입니다.
- 또한, <strong>SDK 도구</strong> 탭을 열어 최신 도구가 설치되었는지 확인하십시오.
-
-
-  </li>
-</ol>
-<p>이러한 단계를 완료하고 나면 미리 보기 구성 요소를 본인의 개발 환경에서 이용할 수 있습니다.
- </p>
-
-
-<h2 id="create-update">프로젝트 생성 또는 업데이트</h2>
-
-<p>
-  미리 보기 API를 사용하려면 개발 프로젝트를 하나 생성하거나 업데이트하여 미리 보기 구성 요소를 사용해야 합니다.
-
-</p>
-
-
-<h3 id="create">새 프로젝트 생성하기</h3>
-
-<p>
-  미리 보기로 프로젝트를 생성하려면 Android Studio를 사용할 것을 권장합니다. <a href="{@docRoot}sdk/installing/create-project.html">프로젝트 생성하기</a>에 설명되어 있는 단계를 쭉 따라가다 보면 프로젝트 마법사의 <em>폼 팩터</em> 화면에 도달합니다.
-
- 그러면 다음과 같은 단계를 따라 미리 보기에 맞게 구성된 프로젝트를 생성하면 됩니다.
-
-</p>
-
-<ul>
-  <li><strong>전화기 및 태블릿</strong>을 확인합니다.</li>
-  <li><strong>MNC: Android M(미리 보기)</strong>를 선택합니다. 이것은 <strong>최소 SDK</strong> 안에 있습니다.
-</li>
-</ul>
-
-
-<h3 id="update">기존 프로젝트 업데이트</h3>
-
-<p>
-  기존 프로젝트의 경우, 미리 보기 API를 활성화하려면 프로젝트 구성을 수정해야 합니다. 개발 환경에서 본인의 모듈에 대한 <code>build.gradle</code> 파일을 열고 다음의 값을 다음과 같이 설정합니다.
-
-
-</p>
-
-<ul>
-  <li><code>compileSdkVersion</code>을 <code>'android-MNC'</code>로 설정</li>
-  <li><code>minSdkVersion</code>을 <code>'MNC'</code>로 설정</li>
-  <li><code>targetSdkVersion</code>을 <code>'MNC'</code>로 설정</li>
-</ul>
-
-
-<h2 id="setup-test">테스트를 위해 설정</h2>
-
-<p>
-  앱을 미리 보기로 테스트하려면 플랫폼의 미리 보기 버전으로 구성한 기기 또는 가상 기기가 있어야 합니다.
- 호환되는 기기를 가지고 있으면 미리 보기 플랫폼을 설치하여 테스트에 쓰면 됩니다.
- 그렇지 않은 경우, 가상 기기를 구성하여 테스트에 사용할 수도 있습니다.
-</p>
-
-<h3 id="setup-device">물리적 기기 설정</h3>
-
-<p>
-  Nexus 5, Nexus 6, Nexus 9 또는 Android TV를 가지고 있는 경우, 이들 기기에 미리 보기 시스템 이미지를 설치하여 앱을 테스트하는 데 쓸 수 있습니다. 플랫폼의 미리 보기 버전으로 가상 기기를 설정하려면 Android Studio 내에서 해당 버전을 다운로드하면 됩니다. 이때 Android 가상 기기 관리자 도구를 사용하십시오.
-
-
-
-</p>
-
-<p class="caution">
-  <strong>중요:</strong> 기기에 미리 보기 이미지를 설치하면 <em>기기에서 모든 데이터를 제거하므로</em>, 미리 보기 이미지를 설치하기에 앞서 데이터를 모두 백업하는 것이 좋습니다.
-
-</p>
-
-<h3 id="setupAVD">가상 기기 설정</h3>
-
-<p>
-  플랫폼의 미리 보기 버전으로 가상 기기를 설정하려면 Android Studio 내에서 해당 버전을 다운로드하면 됩니다. 이때 Android 가상 기기 관리자 도구를 사용하십시오.
-
-</p>
-
-<p>AVD Manager로 AVD를 생성하려면 다음과 같이 하면 됩니다.</p>
-
-<ol>
-  <li><a href="{@docRoot}preview/setup-sdk.html">미리 보기 SDK 설정하기</a>에 설명된 바에 따라 개발 환경에 미리 보기 SDK를 설치합니다.
-
-</li>
-  <li><a href="{@docRoot}tools/devices/managing-avds.html">AVD Manager로 AVD 관리하기</a>에 나온 단계를 따르십시오.
-
- 다음과 같은 설정을 사용하면 됩니다.
-    <ul>
-      <li><strong>기기:</strong> Nexus 5, Nexus 6, Nexus 9 또는 Android TV</li>
-      <li><strong>대상:</strong>
-       Android M(미리 보기) - API 레벨 M</li>
-      <li><strong>ABI:</strong> x86</li>
-    </ul>
-  </li>
-</ol>
-
-<p>
-  테스트를 위해 가상 기기를 생성하는 데 대한 자세한 정보는 <a href="{@docRoot}tools/devices/index.html">가상 기기 관리하기</a>를 참조하십시오.
-</p>
diff --git a/docs/html-intl/intl/ko/preview/testing/guide.jd b/docs/html-intl/intl/ko/preview/testing/guide.jd
deleted file mode 100644
index 7f17071..0000000
--- a/docs/html-intl/intl/ko/preview/testing/guide.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=테스트 가이드
-page.image=images/cards/card-build_16x9_2x.png
-page.keywords=previewresources,androidm,testing,permissions
-
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>이 문서의 내용</h2>
-      <ol>
-        <li><a href="#runtime-permissions">권한 테스트</a></li>
-        <li><a href="#doze-standby">Doze 및 앱 대기 모드 테스트</a></li>
-        <li><a href="#ids">자동 백업 및 기기 식별자</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  Android M 개발자 미리 보기에서는 앱이 플랫폼의 다음 버전에서 제대로 작동할 것인지 확인해볼 기회를 부여합니다.
- 이 미리 보기에는 앱에 영향을 미칠 수 있는 수많은 API와 동작 변경 내용이 포함되어 있습니다.이 내용은 <a href="{@docRoot}preview/api-overview.html">API 개요</a>와 <a href="{@docRoot}preview/behavior-changes.html">동작 변경</a>에 설명해 놓았습니다.
-
- 미리 보기로 앱을 테스트할 때에는 사용자에게 좋은 환경을 제공하기 위해 개발자 여러분이 꼭 주안점을 두어야 할 몇 가지 특정한 시스템 변경 내용이 있습니다.
-
-
-</p>
-
-<p>
-  이 가이드는 앱에서 테스트할 미리 보기 기능은 어떤 것이고, 테스트 방법은 어떤지에 대해 설명한 것입니다. 이와 같은 특정 미리 보기 기능을 먼저 테스트하는 것이 좋습니다. 이들은 앱의 동작에 미치는 영향이 클 가능성이 높기 때문입니다.
-
-
-</p>
-
-<ul>
-  <li><a href="#runtime-permissions">권한</a>
-  </li>
-  <li><a href="#doze-standby">Doze 및 앱 대기 모드</a>
-  </li>
-  <li><a href="#ids">자동 백업 및 기기 식별자</a></li>
-</ul>
-
-<p>
-  테스트용 미리 보기 시스템 이미지로 기기 또는 가상 기기를 설정하는 방법에 대한 자세한 정보는 <a href="{@docRoot}preview/setup-sdk.html">미리 보기 SDK 설정하기</a>를 참조하십시오.
-
-</p>
-
-
-<h2 id="runtime-permissions">권한 테스트</h2>
-
-<p>
-  새로운 <a href="{@docRoot}preview/features/runtime-permissions.html">권한</a> 모델은 사용자가 여러분의 앱에 권한을 할당하는 방법을 바꿔 놓습니다.
- 설치 절차 중에 모든 권한을 허용하는 것이 아니라, 앱이 런타임에 사용자에게 각각의 권한을 요청해야 합니다.
-
- 사용자 입장에서는 이러한 동작으로 각 앱의 액티비티에 대해 더 세분화된 제어권을 행사할 수 있을 뿐만 아니라 이 앱이 어째서 특정한 권한을 요청하고 있는 것인지 맥락을 더 잘 이해할 수 있게 되기도 합니다.
- 사용자는 언제든 앱에 개별적으로 권한을 허용할 수 있고, 이를 취소할 수도 있습니다.
- 미리 보기의 이러한 기능은 앱의 동작에 영향을 미칠 가능성이 가장 높고, 앱의 몇 가지 기능이 작동하지 않도록 막거나 저하된 상태로 작동하게 할 수도 있습니다.
-
-
-</p>
-
-<p class="caution">
-  이 변경 내용은 새 플랫폼에서 실행되는 모든 앱에 영향을 비치며, 새 플랫폼 버전을 대상으로 하지 않는 앱도 예외가 아닙니다.
- 레거시 앱에 대해 플랫폼이 제한된 호환성 동작을 제공하기는 하지만, 지금 바로 새 권한 모델로 앱의 마이그레이션 계획을 시작하는 편이 좋습니다. 플랫폼이 공식적으로 출시될 때에 맞춰 앱의 업데이트된 버전을 게시하는 것을 목표로 하십시오.
-
-
-</p>
-
-
-<h3 id="permission-test-tips">테스트 팁</h3>
-
-<p>
-  다음은 새 권한 동작에 대해 앱 테스트를 계획하고 실행하는 데 유용한 몇 가지 테스트 팁입니다.
-
-</p>
-
-<ul>
-  <li>앱의 현재 권한과 관련된 코드 경로를 확인합니다.</li>
-  <li>권한 보호된 서비스 및 데이터 전반에 걸친 사용자 흐름을 테스트합니다.</li>
-  <li>허용된/취소된 권한을 여러 가지로 조합하여 테스트합니다.</li>
-  <li>명령줄에서 권한을 관리할 때 {@code adb} 도구를 사용합니다.
-    <ul>
-      <li>권한과 상태를 그룹별로 목록으로 나열합니다.
-        <pre>adb shell pm list permissions -d -g</pre>
-      </li>
-      <li>하나 이상의 권한을 다음과 같은 구문을 사용하여 허용하거나 취소합니다.<br>
-        <pre>adb shell pm [grant|revoke] &lt;permission.name&gt; ...</pre>
-      </li>
-    </ul>
-  </li>
-  <li>권한을 사용하는 서비스에 대해 앱을 분석해봅니다.</li>
-</ul>
-
-<h3 id="permission-test-strategy">테스트 전략</h3>
-
-<p>
-  권한을 변경하면 앱의 구조와 디자인은 물론 사용자 환경과, 개발자가 사용자에게 제공하는 흐름에도 영향을 미칩니다.
- 앱의 현재 권한 사용 내용을 평가한 다음 제공하고자 하는 새로운 흐름을 계획하기 시작해야 합니다.
- 플랫폼의 공식 릴리스에서 호환성 동작을 제공할 예정이지만, 이와 같은 동작에만 의존하지 말고 앱 업데이트를 계획하는 것이 좋습니다.
-
-
-</p>
-
-<p>
-  앱이 실제로 필요로 하고 사용하는 권한을 확인한 다음, 권한 보호된 서비스를 사용하는 여러 가지 코드 경로를 찾습니다.
- 이렇게 하려면 새 플랫폼에서 여러 가지로 조합한 테스트를 거치고 코드 분석을 통해야 합니다.
- 테스트에서는 런타임 권한에 옵트인하는 것에 주안점을 두는 것이 좋습니다. 앱의 {@code targetSdkVersion}을 미리 보기 버전으로 변경하세요.
- 자세한 정보는 <a href="{@docRoot}preview/setup-sdk.html#">미리 보기 SDK 설정하기</a>를 참조하십시오.
-
-</p>
-
-<p>
-  불러내고 추가한 여러 가지 권한들을 다양하게 조합해서 테스트해보면 권한에 좌우되는 사용자 흐름을 강조할 수 있습니다.
- 종속성이 분명하지 않거나 논리적인 경우, 리팩터링을 고려해 보거나 해당 흐름을 구분하여 종속성을 제거, 또는 해당 권한이 왜 필요한지 분명히 하는 방안을 고려해야 합니다.
-
-
-</p>
-
-<p>
-  런타임 권한의 동작, 테스트 및 모범 사례에 대한 자세한 정보는 <a href="{@docRoot}preview/features/runtime-permissions.html">권한</a> 개발자 미리 보기 페이지를 참조하십시오.
-
-
-</p>
-
-
-<h2 id="doze-standby">Doze 및 앱 대기 모드 테스트</h2>
-
-<p>
-  Doze 및 앱 대기 모드의 절전 기능은 기기가 유휴 상태에 있을 때 또는 사용자가 앱에 초점을 맞추고 있지 않을 때 앱이 수행할 수 있는 배경 처리의 양을 제한합니다.
- 시스템이 앱에 부과할 수 있는 제한 사항에는 네트워크 액세스를 제한하거나 없애기, 배경 작업을 일시 중지시키기, 알림 일시 중지, 절전 모드 해제 및 알람 요청 무시 등이 포함됩니다.
-
- 이러한 절전 기능에 앱이 적절히 동작하도록 확실히 해 두려면 이와 같은 저전력 상태를 시뮬레이트하여 앱을 테스트해보아야 합니다.
-
-
-</p>
-
-<h4 id="doze">앱에서 Doze 테스트하기</h4>
-
-<p>앱으로 Doze 기능을 테스트하려면 다음과 같이 하면 됩니다.</p>
-
-<ol>
-<li>하드웨어 기기 또는 가상 기기를 M 미리 보기 시스템 이미지로 구성합니다.</li>
-<li>기기를 개발 머신에 연결시키고 앱을 설치합니다.</li>
-<li>앱을 실행시킨 다음 활성 상태로 그냥 둡니다.</li>
-<li>기기가 Doze 모드에 들어가는 것을 시뮬레이트하려면 다음 명령을 실행하십시오.
-
-<pre>
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-
-  </li>
-  <li>기기가 다시 활성화되면 앱이 어떻게 동작하는지 살펴보십시오. 기기가 Doze 모드를 종료할 때 정상적으로 복구되는지 확인해야 합니다.
-</li>
-</ol>
-
-
-<h4 id="standby">앱에서 앱 대기 모드 테스트하기</h4>
-
-<p>앱으로 앱 대기 모드를 테스트하려면 다음과 같이 하면 됩니다.</p>
-
-<ol>
-  <li>하드웨어 기기 또는 가상 기기를 M 미리 보기 시스템 이미지로 구성합니다.</li>
-  <li>기기를 개발 머신에 연결시키고 앱을 설치합니다.</li>
-  <li>앱을 실행시킨 다음 활성 상태로 그냥 둡니다.</li>
-  <li>앱이 대기 모드에 들어가는 것을 시뮬레이트하려면 다음 명령을 실행하십시오.
-
-<pre>
-$ adb shell am broadcast -a android.os.action.DISCHARGING
-$ adb shell am set-idle &lt;packageName&gt; true
-</pre>
-
-  </li>
-  <li>앱이 절전 모드 해제되는 상태를 시뮬레이트하려면 다음 명령을 사용하면 됩니다.
-    <pre>$ adb shell am set-idle &lt;packageName&gt; false</pre>
-  </li>
-  <li>앱이 절전 모드에서 해제되면서 어떻게 동작하는지 살펴보십시오. 대기 모드에서 정상적으로 복구되는지 확인해야 합니다.
- 특히, 앱의 알림과 배경 작업이 계속 예상했던 대로 기능하는지 확인해야 합니다.
-</li>
-</ol>
-
-<h2 id="ids">앱용 자동 백업 및 기기별 식별자</h2>
-
-<p>앱이 내부 저장소에서 각 기기에 따라 다른 식별자를 유지하는 경우(예: Google Cloud 메시지 등록 ID), 모범 사례를 따라 저장소 위치를 자동 백업에서 배제해야 합니다. 이 내용은 <a href="{@docRoot}preview/backup/index.html">앱용 자동 백업</a>에 설명되어 있습니다.
-
-
-
- </p>
diff --git a/docs/html-intl/intl/ko/preview/testing/performance.jd b/docs/html-intl/intl/ko/preview/testing/performance.jd
deleted file mode 100644
index ce2bf27..0000000
--- a/docs/html-intl/intl/ko/preview/testing/performance.jd
+++ /dev/null
@@ -1,656 +0,0 @@
-page.title=표시 성능 테스트
-page.image=images/cards/card-test-performance_2x.png
-page.keywords=성능, FPS, 도구
-
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>이 문서의 내용</h2>
-      <ol>
-        <li><a href="#measure">UI 성능 측정</a>
-          <ul>
-            <li><a href="#aggregate">프레임 상태 집계</a></li>
-            <li><a href="#timing-info">정확한 프레임 타이밍 정보</a></li>
-            <li><a href="#timing-dump">단순한 프레임 타이밍 덤프</a></li>
-            <li><a href="#collection-window">상태 수집 창 제어</a></li>
-            <li><a href="#diagnose">성능 저하 진단</a></li>
-            <li><a href="#resources">추가 리소스</a></li>
-          </ul>
-        </li>
-        <li><a href="#automate">UI 성능 테스트 자동화</a>
-          <ul>
-            <li><a href="#ui-tests">UI 테스트 설정</a></li>
-            <li><a href="#automated-tests">자동화된 UI 테스트 설정</a></li>
-            <li><a href="#triage">관측된 문제 심사 및 수정</a></li>
-          </ul>
-        </li>
-      </ol>
-  </div>
-</div>
-
-
-<p>
-  사용자 인터페이스(UI) 성능 테스트를 수행하면 앱이 기능적인 요건에 부합할 뿐만 아니라 사용자가 앱과 부드럽고 매끈하게 상호작용하며 초당 60 프레임의 일관된 속도로(<a href="https://www.youtube.com/watch?v=CaMTIgxCSqU&amp;index=25&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">왜 60fps일까요?</a>) 생략되거나 지연된 프레임, 또는 전문 용어로 <em>jank</em>(프레임이 넘어가는 현상)가 없이 실행되게 보장할 수 있습니다.
-
-
- 이 문서에서는 UI 성능을 측정하는 데 사용할 수 있는 몇 가지 도구를 설명하고, 테스트 방법에 UI 성능 측정법을 통합하는 데 쓰이는 접근법을 보여드립니다.
-
-
-</p>
-
-
-<h2 id="measure">UI 성능 측정</h2>
-
-<p>
-  성능을 개선하려면 우선 시스템의 성능을 측정할 수 있는 능력부터 갖추고, 그 다음에 파이프라인의 여러 부분에서 나올 수 있는 다양한 문제를 진단하고 식별해야 합니다.
-
-
-</p>
-
-<p>
-  <em><a href="https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></em>는 Android 도구의 일종으로 기기에서 실행되면서 시스템 서비스의 상태에 대한 흥미로운 정보를 덤프하는 역할을 합니다.
-
- <em>gfxinfo</em> 명령을 dumpsys에 전달하면 기록 단계 중에 발생하는 애니메이션 프레임과 관련된 성능 정보가 담긴 logcat으로 출력을 제공합니다.
-
-
-</p>
-
-<pre>
-&gt; adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt;
-</pre>
-
-<p>
-  이 명령은 프레임 타이밍 데이터의 서로 다른 변형을 여러 개 작성할 수 있습니다.
-</p>
-
-<h3 id="aggregate">프레임 상태 집계</h3>
-
-<p>
-  M 미리 보기에서 이 명령은 프레임 데이터의 집계된 분석을 logcat으로 출력합니다. 이는 프로세스의 전 수명을 통틀어 수집한 것입니다.
- 예를 들면 다음과 같습니다.
-</p>
-
-<pre class="noprettyprint">
-Stats since: 752958278148ns
-Total frames rendered: 82189
-Janky frames: 35335 (42.99%)
-90th percentile: 34ms
-95th percentile: 42ms
-99th percentile: 69ms
-Number Missed Vsync: 4706
-Number High input latency: 142
-Number Slow UI thread: 17270
-Number Slow bitmap uploads: 1542
-Number Slow draw: 23342
-</pre>
-
-<p>
-  이와 같은 높은 레벨의 통계는 레벨이 높을 때 앱의 렌더링 성능을 나타내며, 이외에도 여러 프레임에 걸친 앱의 안정성을 나타내기도 합니다.
-
-</p>
-
-
-<h3 id="timing-info">정확한 프레임 타이밍 정보</h3>
-
-<p>
-  M 미리 보기에서는 gfxinfo에 사용할 수 있는 새 명령어를 도입했습니다. 바로 <em>framestats</em>로, 이는 최근 프레임으로부터 극히 상세한 프레임 타이밍 정보를 제공하여 문제를 더욱 정확하게 추적하고 디버그할 수 있습니다.
-
-
-</p>
-
-<pre>
-&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; framestats
-</pre>
-
-<p>
-  이 명령은 프레임 타이밍 정보를 나노초 타임스탬프로 출력하며, 그 출처는 앱이 만든 마지막 120개의 프레임입니다. 아래는 adb dumpsys gfxinfo
-  &lt;PACKAGE_NAME&gt; framestats에서 가져온 원시 출력을 예로 나타낸 것입니다.
-
-</p>
-
-<pre class="noprettyprint">
-0,49762224585003,49762241251670,9223372036854775807,0,49762257627204,49762257646058,49762257969704,49762258002100,49762265541631,49762273951162,49762300914808,49762303675954,
-0,49762445152142,49762445152142,9223372036854775807,0,49762446678818,49762446705589,49762447268818,49762447388037,49762453551527,49762457134131,49762474889027,49762476150120,
-0,49762462118845,49762462118845,9223372036854775807,0,49762462595381,49762462619287,49762462919964,49762462968454,49762476194547,49762476483454,49762480214964,49762480911527,
-0,49762479085548,49762479085548,9223372036854775807,0,49762480066370,49762480099339,49762481013089,49762481085850,49762482232152,49762482478350,49762485657620,49762486116683,
-</pre>
-
-<p>
-  이 출력의 각 줄은 앱이 만든 프레임을 나타냅니다. 각 줄에는 정해진 숫자의 열이 있으며 이 열은 프레임 제작 파이프라인의 각 단계에서 소요한 시간을 나타냅니다.
- 다음 섹션에서는 각 열이 무엇을 나타내는지 등, 이 형식에 대해 좀 더 자세히 다뤄보겠습니다.
-
-</p>
-
-
-<h4 id="fs-data-format">Framestats 데이터 형식</h4>
-
-<p>
-  데이터 블록은 CSV 형식으로 출력되기 때문에 이를 개발자가 선택한 스프레드시트 도구에 붙여넣거나 수집해서 스크립트로 구문 분석하기 등의 작업이 매우 단도직입적입니다.
- 다음 표는 출력 데이터 열의 형식을 설명한 것입니다.
- 타임스탬프는 모두 나노초 단위입니다.
-</p>
-
-<ul>
-  <li>플래그
-    <ul>
-      <li>플래그 열에 '0'이 기재되어 있는 행의 경우, 총 프레임 시간을 계산하려면 FRAME_COMPLETED 열에서 INTENDED_VSYNC 열을 빼면 됩니다.
-
-      </li>
-
-      <li>이것이 0이 아니면 그 행은 무시해야 합니다. 해당 프레임이 정상 성능의 이상값인 것으로 판별되었기 때문이며, 여기에서는 레이아웃과 그리기에 16ms 이상이 걸릴 것으로 예상됩니다.
-
- 다음은 이런 일이 일어나는 몇 가지 이유입니다.
-        <ul>
-          <li>창 레이아웃이 변경되었습니다(애플리케이션의 첫 프레임 또는 한 회 회전 이후).
-
-          </li>
-
-          <li>프레임을 건너뛰었을 가능성도 있습니다. 이 경우 몇몇 값에 가비지 타임스탬프가 있을 것입니다.
- 프레임을 건너뛰는 것은 해당 프레임이 60fps를 초과하는 경우 또는 화상에 나타난 것 중 아무 것도 변한 것이 없을 때 등이며, 이는 반드시 앱에 문제가 있음을 나타내는 징후는 아닙니다.
-
-
-          </li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-
-  <li>INTENDED_VSYNC
-    <ul>
-      <li>프레임에 대한 원래 의도한 시작 지점입니다. 이 값이 VSYNC와 다른 경우, UI 스레드에서 발생한 작업이 있어 이것이 vsync 신호에 적절한 시간 내에 응답하지 못하도록 한 것입니다.
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>VSYNC
-    <ul>
-      <li>Vsync 수신기 전체와 프레임에 대한 드로잉에서 사용된 시간 값입니다.(Choreographer 프레임 콜백, 애니메이션, View.getDrawingTime() 등)
-
-      </li>
-
-      <li>VSYNC와 이것이 애플리케이션에 미치는 영향에 대해 더 자세히 알아보려면 <a href="https://www.youtube.com/watch?v=1iaHxmfZGGc&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=23">VSYNC 이해하기</a> 비디오를 확인하십시오.
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>OLDEST_INPUT_EVENT
-    <ul>
-      <li>입력 대기열에서 가장 오래된 입력 이벤트의 타임스탬프 또는 프레임에 대한 입력 이벤트가 없는 경우 Long.MAX_VALUE입니다.
-
-      </li>
-
-      <li>이 값은 기본적으로 플랫폼 작업을 위해 의도된 것이며 앱 개발자에게는 한정된 정도로 유용한 값입니다.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>NEWEST_INPUT_EVENT
-    <ul>
-      <li>입력 대기열에서 가장 최근 입력 이벤트의 타임스탬프 또는 프레임에 대한 입력 이벤트가 없는 경우 Long.MAX_VALUE입니다.
-
-      </li>
-
-      <li>이 값은 기본적으로 플랫폼 작업을 위해 의도된 것이며 앱 개발자에게는 한정된 정도로 유용한 값입니다.
-
-      </li>
-
-      <li>다만 앱이 얼마나 긴 대기 시간을 추가하고 있는지를 대략적으로 알아볼 수는 있습니다. (FRAME_COMPLETED - NEWEST_INPUT_EVENT)를 살펴보면 됩니다.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>HANDLE_INPUT_START
-    <ul>
-      <li>입력 이벤트가 애플리케이션에 발송된 시점의 타임스탬프입니다.
-      </li>
-
-      <li>이것과 ANIMATION_START 사이의 시간을 보면 애플리케이션이 입력 이벤트를 처리하느라 보낸 시간을 측정할 수 있습니다.
-
-      </li>
-
-      <li>이 숫자가 크면(2ms 초과) 이는 앱이 입력 이벤트를 처리하느라 보기 드물게 긴 시간을 소요한다는 뜻입니다. 예를 들어 View.onTouchEvent()는 이 작업을 최적화해야 하거나 다른 스레드로 오프로드해야 한다는 뜻일 수 있습니다.
-
- 다른 시나리오도 몇 가지 있을 수 있다는 점을 유의하십시오. 예를 들어 새 액티비티를 시작하는 클릭 이벤트나 그와 비슷한 것의 경우, 이 숫자가 클 것을 예상하고 받아들일 수 있습니다.
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>ANIMATION_START
-    <ul>
-      <li>Choreographer에 등록된 애니메이션이 실행된 시점의 타임스탬프입니다.
-      </li>
-
-      <li>이것과 PERFORM_TRANVERSALS_START 사이의 시간을 보면 실행 중인 애니메니터 전체((ObjectAnimator, ViewPropertyAnimator 및 Transitions가 보편적인 것들임)를 평가하는 데 시간이 얼마나 걸렸는지 판단할 수 있습니다.
-
-
-      </li>
-
-      <li>이 숫자가 크면(2ms 초과), 앱이 사용자 지정 애니메이터를 작성한 적이 있는지 확인하십시오. 아니면 ObjectAnimators가 애니메이션 효과를 실행하는 필드가 어느 것인지 알아보고 이들이 애니메이션에 대해 적절한지 확인해야 합니다.
-
-
-      </li>
-
-      <li>Choreographer에 대한 자세한 정보는 <a href="https://developers.google.com/events/io/sessions/325418001">버터거나 나쁘거나(For Butter or Worse)</a> 비디오를 참조하십시오.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>PERFORM_TRAVERSALS_START
-    <ul>
-      <li>이 값에서 DRAW_START를 빼면 레이아웃과 측정 단계를 완료하는 데 얼마나 걸렸는지 추출할 수 있습니다(스크롤 또는 애니메이션 중에는 이 값이 0에 가까울 것이라는 예상이 나와야 한다는 점을 유의하십시오).
-
-
-      </li>
-
-      <li>렌더링 파이프라인의 측정 및 레이아웃 단계에 대한 자세한 정보는 <a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">무효화, 레이아웃 및 성능</a> 비디오를 참조하십시오.
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>DRAW_START
-    <ul>
-      <li>PerformTraversals의 그리기 단계가 시작된 시점입니다. 이것은 무효화된 모든 보기의 표시 목록을 기록하는 시작 지점입니다.
-
-      </li>
-
-      <li>이것과 SYNC_START 사이의 시간이 트리의 모든 무효화된 보기에서 View.draw()를 호출하는 데 걸린 시간입니다.
-
-      </li>
-
-      <li>드로잉 모델에 대한 자세한 정보는 <a href="{@docRoot}guide/topics/graphics/hardware-accel.html#hardware-model">하드웨어 가속</a> 또는 <a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">무효화, 레이아웃 및 성능</a> 비디오를 참조하십시오.
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>SYNC_START
-    <ul>
-      <li>드로잉의 동기화 단계가 시작된 시점입니다.
-      </li>
-
-      <li>이것과 ISSUE_DRAW_COMMANDS_START 사이의 시간이 상당히 큰 값인 경우(0.4ms 초과 또는 그와 유사), 일반적으로 새로운 비트맵이 많이 그려져서 이를 GPU에 업로드해야 한다는 뜻입니다.
-
-
-      </li>
-
-      <li>동기화 단계에 대해 더 자세히 알아보려면 <a href="https://www.youtube.com/watch?v=VzYkVL1n4M8&amp;index=24&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">프로필 GPU 렌더링</a> 비디오를 참조하십시오.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>ISSUE_DRAW_COMMANDS_START
-    <ul>
-      <li>하드웨어 렌더러가 GPU에 드로잉 명령을 발행하기 시작한 시점입니다.
-      </li>
-
-      <li>이것과 FRAME_COMPLETED 사이의 시간을 보면 앱이 얼마나 많은 GPU 작업을 생성하고 있는지 대략적으로 알 수 있습니다.
- Overdraw가 너무 많거나 렌더링 효과가 비효율적인 것 등의 문제가 여기에 나타납니다.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>SWAP_BUFFERS
-    <ul>
-      <li>EglSwapBuffers가 호출된 시점으로, 플랫폼 작업 외에는 비교적 흥미롭지 않습니다.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>FRAME_COMPLETED
-    <ul>
-      <li>모두 끝났습니다! 이 프레임에 작업하느라 소요된 총 시간을 계산하려면 FRAME_COMPLETED - INTENDED_VSYNC를 수행하면 됩니다.
-
-      </li>
-    </ul>
-  </li>
-
-</ul>
-
-<p>
-  이 데이터는 여러 가지 방법으로 사용할 수 있습니다. 한 가지 단순하면서도 유용한 시각화는 프레임 시간의 분배(FRAME_COMPLETED - INTENDED_VSYNC)를 여러 가지 대기 시간 버킷에서 표시한 히스토그램을 예로 들 수 있습니다. 아래 그림을 참조하십시오.
-
- 이 그래프를 보면 한 눈에 대부분의 프레임이 아주 양호했다는 것을 알아볼 수 있습니다. 대부분 16ms 최종 기한(빨간색으로 표시)보다 한참 아래에 있지만, 최종 기한을 크게 넘어선 프레임도 몇 개 있습니다.
-
- 이 히스토그램에서 시간 경과에 따른 변화를 살펴보면 대규모 이동이나 새 이상값이 생성되는 것을 확인할 수 있습니다.
- 이외에도 데이터 내의 수많은 타임스탬프를 근거로 입력 대기 시간, 레이아웃에서 보낸 시간 또는 여타 비슷한 흥미로운 메트릭도 그래프로 표현할 수 있습니다.
-
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-framestats.png">
-
-
-<h3 id="timing-dump">단순한 프레임 타이밍 덤프</h3>
-
-<p>
-  <strong>프로필 GPU 렌더링</strong>이 개발자 옵션에서 <strong>adb 셸의 dumpsys gfxinfo</strong>로 설정된 경우, <code>adb shell dumpsys gfxinfo</code> 명령이 가장 최근의 120개 프레임에 대한 타이밍 정보를 출력하되, 몇 개의 서로 다른 카테고리로 나누어 탭으로 구분된 값을 담아 표현합니다.
-
-
- 이 데이터를 사용하면 드로잉 파이프라인의 어떤 부분이 레벨이 높을 때 느려지는지 나타내는 데 유용합니다.
-
-</p>
-
-<p>
-  위의 <a href="#fs-data-format">framestats</a>와 마찬가지로, 이것을 개발자가 선택한 스프레드시트 도구에 붙여넣거나 수집해서 스크립트로 구문 분석하는 작업은 매우 단도직입적입니다.
-
- 다음 그래프는 앱이 생성한 수많은 프레임이 어디에서 시간을 보내는지 분석한 내용을 표시한 것입니다.
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-frame-latency.png">
-
-<p>
-  Gfxinfo를 실행한 결과, 그 출력을 복사하여 이를 스프레드시트 애플리케이션에 붙여넣은 다음 데이터를 누적 가로 막대형 그래프로 나타내는 것입니다.
-
-</p>
-
-<p>
-  각 세로 막대는 애니메이션 한 프레임을 나타냅니다. 그 막대의 높이가 해당 애니메이션 프레임을 계산하는 데 걸린 밀리초 수를 나타냅니다.
- 막대에서 색이 지정된 각 세그먼트는 렌더링 파이프라인의 각기 다른 단계를 나타내므로, 개발자는 이것을 보고 애플리케이션의 어떤 부분이 병목 현상을 유발하고 있는지 확인할 수 있습니다.
-
- 렌더링 파이프라인을 잘 이해하고 이에 맞게 최적화하는 법에 대한 자세한 내용은 <a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;index=27&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">무효화 레이아웃 및 성능</a> 비디오를 참조하십시오.
-
-
-</p>
-
-
-<h3 id="collection-window">상태 수집 창 제어</h3>
-
-<p>
-  Framestats와 단순한 프레임 타이밍은 양쪽 모두 아주 짧은 시간 범위 동안 데이터를 수집합니다. 렌더링 약 2초에 상당하는 시간입니다.
- 이 시간 범위를 정확하게 제어하려면(예: 데이터를 특정 애니메이션에 제한), 카운터를 모두 초기화한 다음 수집한 통계를 집계하면 됩니다.
-
-
-</p>
-
-<pre>
-&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; reset
-</pre>
-
-<p>
-  이 방법은 명령 자체를 덤프하는 방법과 함께 써서 정기적인 간격을 두고 수집과 초기화를 반복하여 계속해서 2초 미만의 프레임 창을 캡처하도록 하는 데 쓰일 수도 있습니다.
-
-
-</p>
-
-
-<h3 id="diagnose">성능 저하 진단</h3>
-
-<p>
-  성능이 저하된 것을 알아내는 것은 문제를 추적하고 애플리케이션의 건강 상태를 높은 수준으로 유지 관리하는 데 좋은 첫 단계입니다.
- 그러나 dumpsys는 문제의 존재 여부와 상대적인 심각도만 식별하는 데 그치지 않습니다.
- 각 성능 문제의 제각기 다른 원인을 진단하고 이를 해결하기 위해 적절한 방법을 찾아야 하는 것은 변하지 않습니다.
- 이를 위해, <a href="{@docRoot}tools/help/systrace.html">systrace</a> 도구를 사용하는 것을 적극적으로 추천합니다.
-
-</p>
-
-
-<h3 id="resources">추가 리소스</h3>
-
-<p>
-  Android의 렌더링 파이프라인의 작동 원리나 여기에서 마주칠 수 있는 보편적인 문제와 그 해결 방법에 대한 자세한 정보를 원하시면, 다음 리소스 중 몇 가지를 유용하게 쓸 수 있습니다.
-
-
-</p>
-
-<ul>
-  <li>렌더링 성능의 기초
-  </li>
-  <li>왜 60fps일까요?
-  </li>
-  <li>Android UI와 GPU
-  </li>
-  <li>무효화 레이아웃 및 성능
-  </li>
-  <li>Systrace로 UI 성능 분석하기
-  </li>
-</ul>
-
-
-<h2 id="automate">UI 성능 테스트 자동화</h2>
-
-<p>
-  UI 성능 테스트에 대한 한 가지 관점은 그저 인간 테스터가 대상 앱에서 일련의 사용자 작업을 수행하도록 하는 것입니다. 그러면서 육안으로 jank가 있는지 살펴보든가, 아니면 오랜 시간을 들여 도구 중심적인 관점으로 jank를 찾아내는 것입니다.
-
- 하지만 이와 같은 수동식 방법은 위험 투성이입니다. 프레임 속도 변화를 인지하는 사람의 능력에는 개인차가 극명하고, 시간도 오래 걸릴 뿐더러 지루하고 오류가 발생할 가능성이 높습니다.
-
-
-</p>
-
-<p>
-  보다 효율적인 접근 방식은 자동화된 UI 테스트로부터 가져온 주요 성능 메트릭을 기록하고 분석하는 것입니다.
- Android M 개발자 미리 보기에는 새로운 로깅 기능이 포함되어 있어 애플리케이션 애니메이션의 jank의 양과 심각도를 판별하기 쉽고, 이를 사용해 현재 성능을 판단하고 앞으로의 성능 목표를 추적하기 위해 철저한 프로세스를 구축할 수도 있습니다.
-
-
-
-</p>
-
-<p>
-  이 글에서는 그러한 데이터를 사용하여 성능 테스트를 자동화하는 데 권장되는 방안을 찬찬히 알려드립니다.
-
-</p>
-
-<p>
-  이것은 주로 두 가지 주요 작업으로 나뉘어 있습니다. 첫째로 무엇을 테스트할지, 어떻게 테스트할지를 확인합니다. 그런 다음 두 번째로 자동화된 테스트 환경을 설정하고 유지 관리하는 것입니다.
-
-
-</p>
-
-
-<h3 id="ui-tests">UI 테스트 설정</h3>
-
-<p>
-  자동화된 테스트를 시작하기 전에 우선 몇 가지 수준 높은 결정을 내려야 합니다. 그래야 테스트 공간과 스스로에게 필요한 부분을 제대로 숙지할 수 있습니다.
-
-</p>
-
-<h4>
-  테스트할 주요 애니메이션/흐름 알아내기
-</h4>
-
-<p>
-  성능이 불량한 것이 사용자에게 가장 눈에 띄는 것은 애니메이션이 원활히 작동하지 않을 때라는 점을 명심하십시오.
- 따라서, 테스트할 UI 작업 유형을 식별할 때에는 사용자가 가장 많이 접하게 되는 애니메이션이나 사용자 환경에 가장 중요한 것에 주안점을 두면 유용합니다.
-
- 예를 들어 다음은 이처럼 식별하는 데 유용하게 쓰일 수 있는 몇 가지 보편적인 시나리오입니다.
-</p>
-
-<ul>
-  <li>기본 ListView 또는 RecyclerView를 스크롤링
-  </li>
-
-  <li>비동기 대기 주기 동안 표시되는 애니메이션
-  </li>
-
-  <li>비트맵 로딩/조작이 들어 있을 수 있는 모든 애니메이션
-  </li>
-
-  <li>알파 혼합이 포함된 애니메이션
-  </li>
-
-  <li>Canvas로 사용자 지정 보기 드로잉
-  </li>
-</ul>
-
-<p>
-  팀 구성원인 엔지니어, 디자이너와 제품 관리자와 협력하여 이와 같이 테스트 대상 범위에 넣어야 하는 주요 제품 애니메이션의 우선 순위를 지정하십시오.
-
-</p>
-
-<h4>
-  앞으로의 목표를 정의하고 그것을 추적하기
-</h4>
-
-<p>
-  레벨이 높을 때에는 특정한 성능 목표를 알아내고 테스트 작성에 집중하며, 그에 관한 데이터를 수집하는 것이 매우 중요할 수 있습니다.
- 예를 들면 다음과 같습니다.
-</p>
-
-<ul>
-  <li>처음에만 UI 성능을 추적하여 좀 더 자세히 알아보기만 했으면 합니까?
-  </li>
-
-  <li>앞으로 마주치게 될 성능 저하를 방지하고자 합니까?
-  </li>
-
-  <li>지금은 매끄러운 프레임 비율이 약 90% 정도이지만 이번 사분기 내에 98%까지 올리고자 합니까?
-  </li>
-
-  <li>지금 매끄러운 프레임이 약 98%이고 성능이 저하되지 않기를 바랍니까?
-  </li>
-
-  <li>저사양 기기에서 성능을 개선하는 것이 목표입니까?
-  </li>
-</ul>
-
-<p>
-  이 모든 경우, 애플리케이션의 여러 버전에 걸쳐 성능을 나타내주는 사용 기록 추적을 수행하는 것이 좋습니다.
-
-</p>
-
-<h4>
-  테스트할 기기 정하기
-</h4>
-
-<p>
-  애플리케이션의 성능은 어느 기기에서 실행되는지에 따라 여러 가지로 달라집니다. 메모리 용량이 적고 GPU 파워가 딸리거나 CPU 칩 속도가 느린 기기도 있습니다.
- 이는 즉 한 가지 하드웨어 세트에서는 잘 작동하는 애니메이션이 다른 곳에서는 그렇지 않을 수도 있다는 뜻입니다. 더 나쁜 경우로는 파이프라인의 서로 다른 부분에서 병목 현상이 일어나는 결과를 초래할 수도 있습니다.
-
- 따라서, 사용자가 볼 수도 있는 이러한 변형을 감안하기 위해 테스트를 실행할 기기를 여러 가지로 선택하는 것이 중요합니다. 최신 고사양 기기, 저사양 기기, 태블릿 등 양쪽 측면을 모두 고려하십시오.
-
- CPU 성능, RAM, 화면 밀도, 크기 등의 변형을 잘 살피십시오.
- 고사양 기기를 통과하는 테스트가 저사양 기기에서는 실패할 수도 있습니다.
-
-</p>
-
-<h4>
-  UI 테스트의 기본 프레임워크
-</h4>
-
-<p>
-  <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>와 <a href="{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a> 등의 도구 스위트는 개발자의 애플리케이션을 통과하는 사용자의 동작을 자동화하는 데 도움이 되도록 구축된 것입니다.
-
- 이들은 단순한 프레임워크로, 사용자와 기기의 상호작용을 흉내 냅니다.
- 이러한 프레임워크를 사용하려면, 사실상 개발자가 나름의 고유한 스크립트를 생성해야 합니다. 이는 일련의 사용자-동작을 통해 실행되고, 이를 기기 자체에서 재생합니다.
-
-
-</p>
-
-<p>
-  이렇게 자동화된 테스트를 여러 가지로 조합하여 <code>dumpsys gfxinfo</code>와 함께 사용하면 재현 가능한 시스템을 재빨리 만들어내 테스트를 실행하고 해당 조건 하에서 성능 정보를 측정할 수 있습니다.
-
-
-</p>
-
-
-<h3 id="automated-tests">자동화된 UI 테스트 설정</h3>
-
-<p>
-  UI 테스트를 실행할 수 있게 되고, 한 번의 테스트로부터 데이터를 수집할 파이프라인을 갖추게 되면 다음으로 중요한 단계는 해당 테스트를 여러 번, 여러 기기에 걸쳐 실행하고 그 결과 도출된 성능 데이터를 집계하여 개발 팀이 한층 더 상세하게 분석할 수 있게 해주는 프레임워크를 채택하는 것입니다.
-
-
-
-</p>
-
-<h4>
-  테스트 자동화를 위한 프레임워크
-</h4>
-
-<p>
-  UI 테스트 프레임워크(예: <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>)는 대상 기기/에뮬레이터에서 직접 실행된다는 점에 주목할 만한 가치가 있습니다.
- 반면 <em>dumpsys gfxinfo</em>에 의해 완료되는 성능 수집 정보는 호스트 머신이 구동하여 ADB를 통해 명령을 전송합니다.
- 이러한 각각의 항목 자동화를 연결하는 데 도움을 주기 위해 <a href="{@docRoot}tools/help/monkeyrunner_concepts.html">MonkeyRunner</a> 프레임워크가 개발되었습니다. 이것은 호스트 머신에서 실행되는 스크립팅 시스템으로, 일련의 연결된 기기에 명령을 발행하기도 하고 이들로부터 데이터를 수신할 수도 있습니다.
-
-
-
-</p>
-
-<p>
-  UI 성능 테스트를 제대로 자동화하기 위해 최소한의 수준으로 일련의 스크립트를 구축하는 경우, 다음과 같은 작업을 수행하기 위해 monkeyRunner를 활용할 수 있어야 합니다.
-
-</p>
-
-<ul>
-  <li>원하는 APK를 대상 기기(하나 이상일 수 있음) 또는 에뮬레이터에 로드하여 시작합니다.
-  </li>
-
-  <li>UI Automator UI 테스트를 시작하고 실행되도록 허용하십시오.
-  </li>
-
-  <li><em>dumpsys gfxinfo</em><em></em>를 통해 성능 정보를 수집합니다.
-  </li>
-
-  <li>정보를 집계하고 이를 다시 유용한 방식으로 표시해 개발자에게 보여줍니다.
-  </li>
-</ul>
-
-
-<h3 id="triage">관측된 문제 심사 및 수정</h3>
-
-<p>
-  문제의 패턴이나 성능 저하를 확인했으면, 다음 단계는 해결 방법을 알아내어 적용합니다.
- 자동화된 테스트 프레임워크가 프레임에 대해 정확한 타이밍 분석을 유지하는 경우, 최근의 의심스러운 코드/레이아웃 변경 내용을 꼼꼼히 훑어보거나(성능 저하의 경우) 수동 조사로 전환했을 때 시스템의 어느 부분을 분석할지 범위를 좁히는 데 도움이 될 수 있습니다.
-
-
- 수동 조사의 경우, <a href="{@docRoot}tools/help/systrace.html">systrace</a>부터 시작하는 것이 좋습니다. 이렇게 하면 렌더링 파이프라인의 모든 단계, 시스템에 있는 모든 스레드와 코어는 물론 개발자가 정의한 사용자 지정 이벤트 마커 일체에 대해 정확한 타이밍 정보를 나타내주기 때문입니다.
-
-
-</p>
-
-<h4>
-  임시 타이밍을 적절하게 프로파일링하기
-</h4>
-
-<p>
-  렌더링 성능에서 타이밍을 가져와 이를 측정하는 데 수반되는 몇 가지 어려움을 알아두는 것이 중요합니다.
- 이와 같은 숫자는 본래 결정적인 것이 아니고 시스템 상태, 이용 가능한 메모리 용량, 열 제한 및 개발자가 사는 지역에 태양 플레어가 마지막으로 영향을 미친 시점 등에 따라 변동폭이 큽니다.
-
- 요점은 같은 테스트를 두 번 실행하면서 서로 근사치이지만 완전히 똑같지는 않은, 약간 다른 숫자를 얻어내는 데 있습니다.
-
-
-</p>
-
-<p>
-  이런 식으로 데이터를 제대로 수집하고 프로파일링한다는 것은 같은 테스트를 여러 번 거듭 실행하면서 얻어지는 결과를 평균 또는 중간값(너무 복잡해지니 이것을 '배치(batch)'라고 부르기로 합시다)으로 누적한다는 것을 뜻합니다. 이렇게 하면 테스트 성과를 대략적으로 어림잡을 수 있으면서 정확한 타이밍은 없어도 됩니다.
-
-
-
-</p>
-
-<p>
-  이러한 배치를 코드 변경 사이사이에 사용하여 그러한 변경 내용이 성능에 미치는 상대적인 영향을 알아볼 수도 있습니다.
- 변경 전 배치의 평균 프레임 속도가 변경 후 배치에서보다 빠른 경우, 해당 변경에 대해 전반적으로 좋은 WRT 성능을 성취했다는 뜻입니다.
-
-
-</p>
-
-<p>
-  이는 즉 개발자가 수행하는 자동화된 UI 테스트는 모두 이 개념을 감안해야 한다는 뜻이기도 하고, 테스트 중에 일어나는 모든 변칙적인 부분 또한 감안해야 한다는 뜻입니다.
- 예를 들어 애플리케이션 성능이 일종의 기기 문제(본인의 애플리케이션에서 기인한 것이 아님) 때문에 갑자기 뚝 떨어지는 경우라면 해당 배치를 다시 실행하여 조금 덜 혼란스러운 타이밍을 얻어야 할 수도 있습니다.
-
-
-
-</p>
-
-<p>
-  그렇다면 측정값이 의의를 지니려면 테스트를 몇 번이나 수행하는 것이 좋습니까? 최소한 10번은 해야 합니다. 실행 횟수가 50이나 100처럼 커질수록 더욱 정확한 경과를 도출할 수 있습니다(물론, 이제는 정확도와 시간을 맞바꿔야 하는 셈입니다).
-
-
-</p>
diff --git a/docs/html-intl/intl/ko/sdk/index.jd b/docs/html-intl/intl/ko/sdk/index.jd
new file mode 100644
index 0000000..d68d736
--- /dev/null
+++ b/docs/html-intl/intl/ko/sdk/index.jd
@@ -0,0 +1,431 @@
+page.title=Android Studio 및 SDK 도구 다운로드
+page.tags=sdk, android studio
+page.template=sdk
+page.image=images/cards/android-studio_2x.png
+header.hide=1
+page.metaDescription=Android 휴대폰, 태블릿, 웨어러블, TV 등을 위한 앱을 구축하는 데 사용할 수 있는 공식 Android IDE 및 개발자 도구를 다운로드하세요.
+
+@jd:body
+
+<style type="text/css">
+  .offline {display:none;}
+  h2.feature {
+    padding-top:30px;
+    margin-top:0;
+    clear:both;
+  }
+  .feature-blurb {
+  margin:0px; font-size:16px; font-weight:300;
+  padding-top:40px;
+  }
+
+  .landing-button .small {
+    font-size: 12px;
+    font-weight: normal;
+    line-height: 12px;
+    display: block;
+  }
+
+  h1.studio-logo {
+    width:226px;
+    height:78px;
+    display:block;
+    padding:0;
+    white-space: nowrap;
+    text-indent: -10000px;
+    font-size:0px;
+    background: url({@docRoot}images/tools/studio-logo.png);
+    background-image: -webkit-image-set(url({@docRoot}images/tools/studio-logo.png) 1x, url({@docRoot}images/tools/studio-logo_2x.png) 2x);
+    background-size: 226px 78px;
+  }
+
+</style>
+
+
+
+
+
+<div style="position:relative;">
+
+
+<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
+<div class="col-13" style="margin:0;">&nbsp;</div><!-- provides top margin for content -->
+
+<h1 id="tos-header" style="margin-top:0">다운로드</h1>
+
+<p class="sdk-terms-intro">Android Studio 또는 독립 실행형 SDK 도구를 설치하려면,
+먼저 다음 사용 약관에 동의해야 합니다.</p>
+
+<div class="sdk-terms" onfocus="this.blur()">
+<h2 class="norule">사용 약관</h2>
+이것은 Android SDK(소프트웨어 개발 키트)에 대한 라이선스 계약입니다.
+
+
+<h3>1. Introduction</h3>
+1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
+
+1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
+
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+
+
+<h3>2. Accepting this License Agreement</h3>
+2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
+
+2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
+
+2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
+
+2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
+
+
+<h3>3. SDK License from Google</h3>
+3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
+
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
+
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+
+3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+
+3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
+
+3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
+
+3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+
+3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
+
+
+<h3>4. Use of the SDK by You</h3>
+4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
+
+4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
+
+4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
+
+4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
+
+4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
+
+4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
+
+
+<h3>5. Your Developer Credentials</h3>
+5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
+
+
+<h3>6. Privacy and Information</h3>
+6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
+
+6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
+
+
+<h3>7. Third Party Applications</h3>
+7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
+
+7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
+
+7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
+
+
+<h3>8. Using Android APIs</h3>
+8.1 Google Data APIs
+
+8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
+
+8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
+
+
+<h3>9. Terminating this License Agreement</h3>
+9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
+
+9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
+
+9.3 Google may at any time, terminate the License Agreement with you if:
+(A) you have breached any provision of the License Agreement; or
+(B) Google is required to do so by law; or
+(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
+(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
+
+9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
+
+
+<h3>10. DISCLAIMER OF WARRANTIES</h3>
+10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+
+10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
+
+10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+
+
+<h3>11. LIMITATION OF LIABILITY</h3>
+11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
+
+<h3>12. Indemnification</h3>
+12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
+
+
+<h3>13. Changes to the License Agreement</h3>
+13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
+
+
+<h3>14. General Legal Terms</h3>
+14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
+
+14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
+
+14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
+
+14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
+
+14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
+
+14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
+
+14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+
+<em>November 20, 2015</em>
+</div>
+
+
+
+
+
+<div id="next-steps" style="display:none;position:absolute;width:inherit">
+  <p>이제 금방 Android용 앱 구축을 시작할 수 있게 됩니다!</p>
+  <p>곧
+<a id="next-link" href="{@docRoot}sdk/installing/index.html">Android SDK 설치하기</a> 페이지로 이동됩니다.</p>
+
+</div><!-- end next-steps -->
+
+
+
+<div id="sdk-terms-form">
+<p>
+<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+<label id="agreeLabel" for="agree">본인은 상기 사용 약관을 읽었으며 이에 동의합니다.</label>
+</p>
+<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+</div>
+
+
+</div><!-- end TOS -->
+
+
+
+
+
+
+<div id="landing">
+
+<div class="col-13">&nbsp;</div><!-- provides top margin for content -->
+
+<img src="{@docRoot}images/tools/studio-hero.png" srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x" width="760" height="400"/>
+
+<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
+
+<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>
+
+<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
+width: 400px;text-align: center;">공식 Android IDE</p>
+
+<ul style="font-size:12px;line-height:19px;">
+<li>Android Studio IDE</li>
+<li>Android SDK Tools</li>
+<li>Android 6.0(Marshmallow) 플랫폼</li>
+<li>Google API를 사용하는 Android 6.0 에뮬레이터 시스템 이미지</li>
+</ul>
+
+<a class="online landing-button green download-bundle-button"
+href="#Other" >Download Android Studio<br/><span class='small'></span></a>
+
+<!-- this appears when viewing the offline docs -->
+<p class="offline">
+Android Studio 또는 독립 실행형 SDK 도구를 얻으려면 <a href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a> 페이지를 방문하십시오.
+</p>
+</div>
+
+<ul>
+  <li><a href="#Requirements">시스템 요건</a></li>
+  <li><a href="#Other">기타 다운로드 옵션</a></li>
+  <li><a href="{@docRoot}sdk/installing/migrate.html">Android Studio로 마이그레이션</a></li>
+  <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform" target="_blank">설문조사 참여</a></li>
+</ul>
+
+
+
+
+
+<h2 class="feature norule" >지능형 코드 편집기</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-code.png" srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Android Studio의 핵심에는 고급 코드 작성, 리팩터링, 코드 분석이 가능한 지능형
+코드 편집기가 있습니다.</p>
+  <p>이 강력한 코드 편집기를 사용하면 여러분이 더욱 생산적인 Android 앱 개발자가 되는 데 도움이 됩니다.</p>
+</div>
+
+
+
+
+
+<h2 class="feature norule">코드 템플릿 및 GitHub 통합</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-import.png" srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>새 프로젝트 마법사를 통해 새로운 프로젝트를 더욱 쉽게 시작할 수 있습니다.</p>
+
+  <p>탐색 드로어 및 보기 호출기와 같은 패턴에 대한 템플릿 코드를 사용해 프로젝트를 시작하고,
+GitHub에서 Google 코드 샘플을 가져올 수도 있습니다.</p>
+</div>
+
+
+
+
+<h2 class="feature norule">다중 화면 앱 개발</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-screens.png" srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Android 휴대폰, 태블릿, Android Wear, Android TV,
+Android Auto 그리고 Google Glass용 앱을 구축할 수 있습니다.</p>
+  <p>Android Studio의 새로운 Android 프로젝트 보기 및 모듈 지원 기능을 통해
+앱 프로젝트 및 리소스 관리를 더욱 쉽게 수행할 수 있습니다.
+</div>
+
+
+
+
+<h2 class="feature norule">모든 모양 및 크기를 지원하는 가상 기기</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-avds.png" srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Android Studio는 최적화된 에뮬레이터 이미지로 사전 구성된 형태로 제공됩니다.</p>
+  <p>업데이트되고 간소화된 Virtual Device Manager는 일반 Android 기기에 대해
+사전 정의된 기기 프로필을 제공합니다.</p>
+</div>
+
+
+
+
+<h2 class="feature norule">
+Gradle을 통해 진화된 Android 빌드</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-gradle.png" srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>동일한 프로젝트를 사용하여 다양한 기능을 갖춘 Android 앱을 위한 여러 APK를 생성할 수 있습니다.</p>
+  <p>Maven을 통해 앱 종속관계를 관리할 수 있습니다.</p>
+  <p>Android Studio 또는 명령줄에서 APK를 구축할 수 있습니다.</p>
+</div>
+
+
+
+
+<h2 class="feature norule">Android Studio에 대한 추가 정보</h2>
+<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
+
+<a class="online landing-button green download-bundle-button" style="margin:0 0 40px 60px;float:right" href="">Download</a>
+
+  <ul>
+  <li>JetBrains에서 제공하는 인기 있는 Java IDE인 IntelliJ IDEA Community Edition 기반</li>
+  <li>유연한 Gradle 기반 빌드 시스템</li>
+  <li>빌드 변형 및 여러 APK 생성</li>
+  <li>템플릿 지원 확대를 통해 Google Services 및 다양한 기기 유형 지원</li>
+  <li>테마 편집을 지원하는 고급 레이아웃 편집기</li>
+  <li>성능, 유용성, 버전 호환성 및 기타 문제를 파악하는 Lint 도구</li>
+  <li>ProGuard 및 앱 서명 기능</li>
+  <li>Google Cloud Messaging 및 App Engine의 통합을 용이하게 하는 Google Cloud Platform에 대한
+기본 지원 기능</li>
+  </ul>
+
+<p style="margin:0">
+Android Studio에서 사용할 수 있는 기능에 대한 자세한 내용은
+<a href="{@docRoot}tools/studio/index.html">Android Studio 개요</a> 가이드를 참조하세요.</p>
+</div>
+
+
+<p>ADT와 함께 Eclipse를 사용하고 있었다면 현재 Android의 공식 IDE는
+Android Studio이므로, 모든 최신 IDE 업데이트를 받을 수 있도록 Android Studio로
+마이그레이션해야 합니다. 프로젝트 이동에 대한 도움말은
+<a href="{@docRoot}sdk/installing/migrate.html">Migrating to Android
+Studio</a>를 참조하세요.</p>
+
+
+
+
+
+
+
+<h2 id="Requirements">시스템 요건</h2>
+
+<h3>Windows</h3>
+
+<ul>
+<li>Microsoft&reg; Windows&reg; 8/7/Vista/2003(32비트 또는 64비트)</li>
+<li>최소 2GB RAM, 4GB RAM 권장</li>
+<li>400MB 하드 디스크 공간</li>
+<li>Android SDK, 에뮬레이터 시스템 이미지 및 캐시용 최소 1GB</li>
+<li>1280 x 800 이상의 화면 해상도</li>
+<li>JDK(Java Development Kit) 7 </li>
+<li>가속 에뮬레이터를 위한 선택 사항: Intel® VT-x, Intel® EM64T(Intel® 64) 및 XD(Execute Disable) Bit
+기능 지원 Intel® 프로세서</li>
+</ul>
+
+
+<h3>Mac OS X</h3>
+
+<ul>
+<li>Mac&reg; OS X&reg; 10.8.5 이상, 최대 10.9(Mavericks)</li>
+<li>최소 2GB RAM, 4GB RAM 권장</li>
+<li>400MB 하드 디스크 공간</li>
+<li>Android SDK, 에뮬레이터 시스템 이미지 및 캐시용 최소 1GB</li>
+<li>1280 x 800 이상의 화면 해상도</li>
+<li>JRE(Java Runtime Environment) 6</li>
+<li>JDK(Java Development Kit) 7</li>
+<li>가속 에뮬레이터를 위한 선택 사항: Intel® VT-x, Intel® EM64T(Intel® 64) 및 XD(Execute Disable) Bit
+기능 지원 Intel® 프로세서</li>
+</ul>
+
+<p>Mac OS에서는 최적화된 글꼴 렌더링을 위해 JRE(Java Runtime Environment) 6에서 Android Studio를
+실행하십시오. 그런 다음, JDK(Java Development Kit) 6 또는 JDK 7을 사용하여 프로젝트를 구성할 수 있습니다.</p>
+
+
+
+<h3>Linux</h3>
+
+<ul>
+<li>GNOME 또는 KDE 데스크톱</li>
+<li>GNU C Library(glibc) 2.15 이상</li>
+<li>최소 2GB RAM, 4GB RAM 권장</li>
+<li>400MB 하드 디스크 공간</li>
+<li>Android SDK, 에뮬레이터 시스템 이미지 및 캐시용 최소 1GB</li>
+<li>1280 x 800 이상의 화면 해상도</li>
+<li>Oracle&reg; JDK(Java Development Kit) 7 </li>
+</ul>
+<p>Ubuntu&reg; 14.04, Precise Pangolin(32비트 애플리케이션 실행 가능 64비트 버전)에서
+테스트됨</p>
+
+
+
+
+<h2 id="Other" style="clear:left">기타 다운로드 옵션</h2>
+
+<!-- alternative SDK options follows -->
diff --git a/docs/html-intl/intl/ko/sdk/installing/adding-packages.jd b/docs/html-intl/intl/ko/sdk/installing/adding-packages.jd
new file mode 100644
index 0000000..b935d87
--- /dev/null
+++ b/docs/html-intl/intl/ko/sdk/installing/adding-packages.jd
@@ -0,0 +1,226 @@
+page.title=SDK 패키지 추가하기
+
+page.tags=sdk manager
+
+@jd:body
+
+<style>
+ol.large {
+  margin-left:0;
+}
+ol.large > li {
+  list-style-position: inside;
+  list-style-type:none;
+  margin:30px 0 0 0;
+  padding:30px 20px;
+  background:#eee;
+}
+ol.large > li:nth-child(odd) {
+}
+ol.large > li:before {
+  display:inline;
+  left:-40px;
+  float:left;
+  width:20px;
+  font-size:20px;
+  line-height:20px;
+}
+ol.large > li > h2 {
+  font-size:20px;
+  line-height:20px;
+  padding:0 0 0 20px;
+  margin:0 0 20px 0;
+  display:inline;
+  font-weight:normal;
+}
+ol.large > li:nth-child(1):before {
+  content:"1. ";
+}
+ol.large > li:nth-child(2):before {
+  content:"2. ";
+}
+ol.large > li:nth-child(3):before {
+  content:"3. ";
+}
+ol.large > li:nth-child(4):before {
+  content:"4. ";
+}
+ol.large > li:nth-child(5):before {
+  content:"5. ";
+}
+ol.large > li:nth-child(6):before {
+  content:"6. ";
+}
+</style>
+
+
+<p>
+기본적으로 Android SDK에는 개발을 시작하는 데 필요한 모든 것이 포함되어 있지 않습니다. 
+SDK는 도구, 플랫폼과 기타 구성요소를 여러 개의 
+패키지로 구분하여 필요에 따라 
+<a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>를 사용하여 다운로드할 수 있습니다.
+따라서 시작하기 전에 Android SDK에 추가해야 하는 패키지가 몇 개 있습니다.</p>
+
+<p>패키지를 추가하려면, 다음 중 한 가지 방법을 사용하여 Android SDK Manager를 시작합니다.</p>
+<ul>
+  <li>Android Studio의 도구 모음에서 <strong>SDK Manager</strong>
+<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:17px" />를 클릭합니다.</li>
+  <li>Android Studio를 사용하지 않는 경우:
+    <ul>
+      <li>Windows: Android
+ SDK 디렉터리의 루트에 있는 <code>SDK Manager.exe</code> 파일을 더블 클릭합니다.</li>
+      <li>Mac/Linux: 터미널을 열고 Android SDK가 설치된 <code>tools/</code> 디렉터리로
+이동한 후 <code>android sdk</code>를 실행합니다.</li>
+    </ul>
+  </li>
+</ul>
+
+<p>SDK Manager를 처음 열 때에는, 여러 개의 패키지가 기본적으로 선택되어 
+있습니다. 이들은 선택된 상태로 두십시오. 다만 다음 단계를 따라 시작하는 데 필요한 모든 것을 
+갖추고 있는지 확인해야 합니다.</p>
+
+
+<ol class="large">
+<li>
+  <h2 id="GetTools" class="norule">최신 SDK 도구 다운로드</h2>
+
+<img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
+
+  <p>Android SDK를 설정할 때는 
+최신 도구와 Android 플랫폼 다운로드가 최소한의 준비 사항입니다.</p>
+  <ol>
+   <li>도구 디렉터리를 열고 다음을 선택합니다.
+     <ul>
+       <li><strong>Android SDK Tools</strong></li>
+       <li><strong>Android SDK Platform-tools</strong></li>
+       <li><strong>Android SDK Build-tools</strong>(최상위 버전)</li>
+     </ul>
+   </li>
+   <li>첫 번째 Android X.X 폴더(최신 버전)를 열고 다음을 선택합니다.
+     <ul>
+      <li><strong>SDK Platform</strong></li>
+      <li>에뮬레이터용 시스템 이미지(다음 예시 참조) <br>
+      <strong>ARM EABI v7a 시스템 이미지</strong></li>
+     </ul>
+   </li>
+  </ol>
+</li>
+
+<li>
+  <h2 id="GetSupportLib" class="norule">추가 API를 위한 지원 라이브러리 가져오기</h2>
+
+  <div class="sidebox">
+    <p>지원 라이브러리는 다음 용도에 필요합니다.</p>
+    <ul>
+      <li><a href="{@docRoot}wear/index.html">Android Wear</a></li>
+      <li><a href="{@docRoot}tv/index.html">Android TV</a></li>
+      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
+    </ul>
+
+    <p>또한 다음과 같은 인기 API를 제공하기도 합니다.</p>
+    <ul>
+      <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">탐색
+창</a></li>
+      <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">보기 스와이프</a></li>
+      <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">이전 버전 호환
+동작 막대</a></li>
+    </ul>
+  </div>
+
+  <p><a href="{@docRoot}tools/support-library/features.html">Android 지원 라이브러리</a>는
+ 대부분의 Android 버전과 호환되는 광범위한 집합의 API를 제공합니다.</p>
+
+  <p><strong>Extras</strong> 디렉터리를 열고 다음을 선택합니다.</p>
+     <ul>
+       <li><strong>Android 지원 리포지토리</strong></li>
+       <li><strong>Android 지원 라이브러리</strong></li>
+     </ul>
+
+  <p>&nbsp;</p>
+  <p>&nbsp;</p>
+
+</li>
+
+
+<li>
+  <h2 id="GetGoogle" class="norule">더 많은 API를 위해 Google Play 서비스 가져오기</h2>
+
+  <div class="sidebox">
+
+    <p>Google Play 서비스 API는 Android
+ 앱에 다음과 같이 다양한 기능과 서비스를 제공합니다.</p>
+    <ul>
+      <li><a href="{@docRoot}google/play-services/plus.html">사용자 인증</a></li>
+      <li><a href="{@docRoot}google/play-services/maps.html">Google Maps</a></li>
+      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
+      <li><a href="{@docRoot}google/play-services/games.html">게임 도전 과제 및
+ 리더보드</a></li>
+      <li><a href="{@docRoot}google/play-services/index.html">그 외 다수</a></li>
+    </ul>
+  </div>
+
+  <p>Google API로 개발하려면 Google Play 서비스 패키지가 필요합니다.</p>
+  <p><strong>Extras</strong> 디렉터리를 열고 다음을 선택합니다.</p>
+     <ul>
+       <li><strong>Google Repository</strong></li>
+       <li><strong>Google Play 서비스</strong></li>
+     </ul>
+
+  <p class="note"><strong>참고:</strong> Google Play 서비스를 모든 Android 구동 기기에서 
+사용할 수 있는 것은 아니지만, Google Play Store가 있는 기기에서는 모두 사용할 수 있습니다. 이와 같은 API를 
+Android 에뮬레이터에서 사용하려면, SDK Manager의 최신 Android X.X 디렉터리에서 <strong>Google API</strong>
+ 시스템 이미지도 설치해야 합니다.</p>
+</li>
+
+
+<li>
+  <h2 id="Install" class="norule">패키지 설치</h2>
+  <p>원하는 패키지를 모두 선택하면 계속 진행하여 설치합니다.</p>
+  <ol>
+   <li><strong>X 패키지 설치</strong>를 클릭합니다.</li>
+   <li>다음 창에서, 왼쪽에 있는 각 패키지 이름을 더블 클릭하여 각각의 
+라이선스 동의서를 수락합니다.</li>
+   <li><strong>설치</strong>를 클릭합니다.</li>
+  </ol>
+  <p>다운로드 진행률이 SDK Manager 창 맨 아래에 표시됩니다.
+  <strong>SDK Manager를 종료하지 마십시오</strong>. 다운로드가 취소됩니다.</p>
+</li>
+
+<li>
+  <h2 id="Build" class="norule">뭐든 구축하세요!</h2>
+
+<p>이제 Android SDK에 위의 패키지를 설치했으니 Android용 앱을 구축할 준비가 끝난 
+셈입니다. 새로운 도구와 다른 API를 사용할 수 있게 되면, SDK Manager를 시작하여 
+사용자의 SDK에 새 패키지를 다운로드할 수 있습니다.</p>
+
+<p>진행 방법에 대한 몇 가지 옵션을 소개합니다.</p>
+
+<div class="cols" style="padding:10px 0">
+<div class="col-4">
+<h3>시작하기</h3>
+<p>Android 개발이 처음인 경우, Android 앱의 기초를 배울 수 있는 
+<strong><a href="{@docRoot}training/basics/firstapp/index.html">첫 앱 구축하기</a></strong> 가이드를 참조하십시오.</p>
+
+</div>
+<div class="col-4 box">
+<h3>웨어러블용 앱 구축하기</h3>
+<p>Android 웨어러블용 앱을 구축할 준비가 되었다면 
+<strong><a href="{@docRoot}wear/preview/start.html">Android Wear용 앱 구축하기</a></strong> 가이드를 참조하십시오.</p>
+
+</div>
+<div class="col-4 box">
+<h3>Google API 사용</h3>
+<p>Maps 또는 Play Game 서비스와 같은 
+Google API를 사용하려면 
+<strong><a href="{@docRoot}google/play-services/setup.html">Google Play
+서비스 설정하기</a></strong> 가이드를 참조하십시오.</p>
+
+</div>
+</div><!-- end cols -->
+
+
+</li>
+
+</ol>
+
+
diff --git a/docs/html-intl/intl/ko/training/material/animations.jd b/docs/html-intl/intl/ko/training/material/animations.jd
new file mode 100644
index 0000000..e8c6267
--- /dev/null
+++ b/docs/html-intl/intl/ko/training/material/animations.jd
@@ -0,0 +1,550 @@
+page.title=사용자지정 애니메이션의 정의
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>이 과정에서 다루는 내용</h2>
+<ol>
+  <li><a href="#Touch">사용자지정 터치 피드백</a></li>
+  <li><a href="#Reveal">표시 효과 사용</a></li>
+  <li><a href="#Transitions">사용자지정 액티비티 전환</a></li>
+  <li><a href="#ViewState">뷰 상태 변경 애니메이트</a></li>
+  <li><a href="#AnimVector">벡터 드로어블 애니메이트</a></li>
+</ol>
+<h2>필독 항목</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">머티리얼 디자인 사양</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android의 머티리얼 디자인</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>머티리얼 디자인에서 애니메이션은 사용자에게 자신의 동작에 대한 피드백을 제공하고, 앱과 상호작용할 때 시각적 연속성을 제공합니다.
+ 머티리얼 테마는 버튼 및 액티비티 전환을 위한 몇 가지 기본 애니메이션을 제공합니다. Android 5.0(API 레벨 21) 이상에서는 이러한 애니메이션을 사용자가 지정하거나 새로운 애니메이션을 만들 수 있습니다.
+
+</p>
+
+<ul>
+<li>터치 피드백</li>
+<li>회전하며 나타나기</li>
+<li>액티비티 전환</li>
+<li>커브 모션</li>
+<li>뷰 상태 변경</li>
+</ul>
+
+
+<h2 id="Touch">사용자지정 터치 피드백</h2>
+
+<p>머티리얼 디자인의 터치 피드백은 사용자가 UI 요소와 상호작용하는 시점에서 즉시 시각적으로 확인할 수 있습니다.
+ 버튼의 기본 터치 피드백 애니메이션은 물결 효과를 통해 서로 다른 상태 간에 전환하는 새 {@link android.graphics.drawable.RippleDrawable} 클래스를 사용합니다.
+
+</p>
+
+<p>대부분의 경우, 다음과 같이 뷰 배경을 지정하는 방식으로 뷰 XML에서 이 기능을 적용해야 합니다.
+</p>
+
+<ul>
+<li>제한된 물결의 경우, <code>?android:attr/selectableItemBackground</code></li>
+<li>뷰를 넘어 확장되는 물결의 경우, <code>?android:attr/selectableItemBackgroundBorderless</code> 
+ 이 경우 물결이 null이 아닌 배경을 가진 뷰의 가장 가까운 상위 요소 위에 그려지고 해당 상위 요소까지로 제한됩니다.
+</li>
+</ul>
+
+<p class="note"><strong>참고:</strong> <code>selectableItemBackgroundBorderless</code>는 API 레벨 21에서 새로 도입된 특성입니다.
+</p>
+
+
+<p>또는 <code>ripple</code> 요소를 사용하여 {@link android.graphics.drawable.RippleDrawable}
+을 XML 리소스로 정의할 수 있습니다.</p>
+
+<p>{@link android.graphics.drawable.RippleDrawable} 객체에 색상을 지정할 수 있습니다. 기본 터치 피드백 색상을 변경하려면 테마의 <code>android:colorControlHighlight</code>
+특성을 사용합니다.
+</p>
+
+<p>자세한 내용은 {@link
+android.graphics.drawable.RippleDrawable} 클래스의 API 레퍼런스를 참조하세요.</p>
+
+
+<h2 id="Reveal">표시 효과 사용</h2>
+
+<p>표시 애니메이션은 UI 요소 그룹을 표시하거나 숨길 때 사용자에게 시각적 연속성을 제공합니다.
+ {@link android.view.ViewAnimationUtils#createCircularReveal
+ViewAnimationUtils.createCircularReveal()} 메서드를 사용하면 클리핑 서클을 애니메이트하여 뷰를 표시하거나 숨길 수 있습니다.
+</p>
+
+<p>이 효과를 사용하여 이전에 보이지 않았던 뷰를 표시하려면:</p>
+
+<pre>
+// previously invisible view
+View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the final radius for the clipping circle
+int finalRadius = Math.max(myView.getWidth(), myView.getHeight());
+
+// create the animator for this view (the start radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);
+
+// make the view visible and start the animation
+myView.setVisibility(View.VISIBLE);
+anim.start();
+</pre>
+
+<p>이 효과를 사용하여 이전에 보였던 뷰를 숨기려면:</p>
+
+<pre>
+// previously visible view
+final View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the initial radius for the clipping circle
+int initialRadius = myView.getWidth();
+
+// create the animation (the final radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0);
+
+// make the view invisible when the animation is done
+anim.addListener(new AnimatorListenerAdapter() {
+    &#64;Override
+    public void onAnimationEnd(Animator animation) {
+        super.onAnimationEnd(animation);
+        myView.setVisibility(View.INVISIBLE);
+    }
+});
+
+// start the animation
+anim.start();
+</pre>
+
+
+<h2 id="Transitions">사용자지정 액티비티 전환</h2>
+
+<!-- shared transition video -->
+<div style="width:290px;margin-left:35px;float:right">
+  <div class="framed-nexus5-port-span-5">
+  <video class="play-on-hover" autoplay="">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.mp4">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.webm">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.ogv">
+  </video>
+  </div>
+  <div style="font-size:10pt;margin-left:20px;margin-bottom:30px">
+    <p class="img-caption" style="margin-top:3px;margin-bottom:10px"><strong>그림 1</strong> - 
+    공유 요소를 이용한 전환.</p>
+    <em>영화를 재생하려면 기기 화면을 클릭하세요.</em>
+  </div>
+</div>
+
+<p>머티리얼 디자인 앱의 액티비티 전환은 공통 요소 간의 모션 및 변환을 통해 서로 다른 상태 간에 시각적 연결을 제공합니다.
+ 들어가기 및 나가기 전환과 액티비티 간 공유 요소의 전환을 위한 사용자지정 애니메이션을 지정할 수 있습니다.
+</p>
+
+<ul>
+<li><strong>들어가기</strong> 전환은 액티비티에서 뷰가 장면 속으로 들어가는 방식을 결정합니다. 예를 들어, <em>explode</em> 들어가기 전환의 경우, 뷰가 밖에서 장면 속으로 들어가며 화면의 중앙으로 향합니다.
+
+</li>
+
+<li><strong>나가기</strong> 전환은 액티비티의 뷰가 장면을 나가는 방식을 결정합니다. 예를 들어, 나가기 전환으로 <em>explode</em>를 지정하면 뷰가 중앙에서부터 화면을 벗어납니다.
+
+</li>
+
+<li><strong>공유 요소</strong> 전환은 두 액티비티 간에 공유되는 뷰가 이 두 액티비티 간에 전환되는 방식을 결정합니다.
+ 예를 들어 두 액티비티에서 사용하는 동일한 이미지가 다른 위치에 있고 크기도 다를 경우, <em>changeImageTransform</em> 공유 요소 전환은 두 액티비티 간에 이미지를 매끄럽게 변환하고 배율을 조정합니다.
+
+</li>
+</ul>
+
+<p>Android 5.0(API 레벨 21)은 다음 들어가기 및 나가기 전환을 지원합니다.</p>
+
+<ul>
+<li><em>explode</em> - 뷰를 장면의 중앙에서 안이나 밖으로 이동합니다.</li>
+<li><em>slide</em> - 뷰를 장면의 가장자리 중 하나에서 안이나 밖으로 이동합니다.</li>
+<li><em>fade</em> - 불투명도를 변경하여 뷰를 추가하거나 장면에서 제거합니다.</li>
+</ul>
+
+<p>{@link android.transition.Visibility} 클래스를 확장하는 모든 전환은 들어가기 또는 나가기 전환으로 지원됩니다.
+ 자세한 내용은
+{@link android.transition.Transition} 클래스의 API 레퍼런스를 참조하세요.</p>
+
+<p>Android 5.0(API 레벨 21)은 다음의 공유 요소 전환도 지원합니다.</p>
+
+<ul>
+<li><em>changeBounds</em> - 대상 뷰의 레이아웃 경계에서 변경을 애니메이트합니다.</li>
+<li><em>changeClipBounds</em> - 대상 뷰의 클리핑 경계에서 변경을 애니메이트합니다.</li>
+<li><em>changeTransform</em> - 대상 뷰의 배율 및 회전 변경을 애니메이트합니다.</li>
+<li><em>changeImageTransform</em> - 대상 이미지의 크기 및 배율 변경을 애니메이트합니다.</li>
+</ul>
+
+<p>앱에서 액티비티 전환을 활성화할 경우, 들어가기 및 나가기 액티비티 간에 기본 크로스페이딩(cross-fading) 전환이 활성화됩니다.
+</p>
+
+<img src="{@docRoot}training/material/images/SceneTransition.png" alt="" width="600" height="405" style="margin-top:20px" />
+<p class="img-caption">
+  <strong>그림 2</strong> - 하나의 공유 요소로 장면 전환.
+</p>
+
+<h3>사용자지정 전환 지정</h3>
+
+<p>먼저 머티리얼 테마에서 상속하는 스타일을 정의할 때, <code>android:windowContentTransitions</code>
+특성을 통해 창 콘텐츠 전환을 활성화합니다. 들어가기, 나가기 및 공유 요소 전환도 스타일 정의에서 지정할 수 있습니다.
+</p>
+
+<pre>
+&lt;style name="BaseAppTheme" parent="android:Theme.Material">
+  &lt;!-- enable window content transitions -->
+  &lt;item name="android:windowContentTransitions">true&lt;/item>
+
+  &lt;!-- specify enter and exit transitions -->
+  &lt;item name="android:windowEnterTransition">@transition/explode&lt;/item>
+  &lt;item name="android:windowExitTransition">@transition/explode&lt;/item>
+
+  &lt;!-- specify shared element transitions -->
+  &lt;item name="android:windowSharedElementEnterTransition">
+    &#64;transition/change_image_transform&lt;/item>
+  &lt;item name="android:windowSharedElementExitTransition">
+    &#64;transition/change_image_transform&lt;/item>
+&lt;/style>
+</pre>
+
+<p>이 예에서 <code>change_image_transform</code> 전환은 다음과 같이 정의됩니다.</p>
+
+<pre>
+&lt;!-- res/transition/change_image_transform.xml -->
+&lt;!-- (see also Shared Transitions below) -->
+&lt;transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;changeImageTransform/>
+&lt;/transitionSet>
+</pre>
+
+<p><code>changeImageTransform</code> 요소는
+{@link android.transition.ChangeImageTransform} 클래스에 해당합니다. 자세한 내용은 {@link android.transition.Transition}의 API 레퍼런스를 참조하세요.
+</p>
+
+<p>코드에서 창 콘텐츠 전환을 활성화하려면
+{@link android.view.Window#requestFeature Window.requestFeature()} 메서드를 호출합니다.</p>
+
+<pre>
+// inside your activity (if you did not enable transitions in your theme)
+getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+
+// set an exit transition
+getWindow().setExitTransition(new Explode());
+</pre>
+
+<p>코드에서 전환을 지정하려면 {@link
+android.transition.Transition} 객체를 사용하여 다음과 같은 메서드를 호출합니다.</p>
+
+<ul>
+  <li>{@link android.view.Window#setEnterTransition Window.setEnterTransition()}</li>
+  <li>{@link android.view.Window#setExitTransition Window.setExitTransition()}</li>
+  <li>{@link android.view.Window#setSharedElementEnterTransition
+      Window.setSharedElementEnterTransition()}</li>
+  <li>{@link android.view.Window#setSharedElementExitTransition
+      Window.setSharedElementExitTransition()}</li>
+</ul>
+
+<p>{@link android.view.Window#setExitTransition setExitTransition()} 및 {@link
+android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} 메서드는 호출하는 액티비티의 나가기 전환을 정의합니다.
+ {@link android.view.Window#setEnterTransition
+setEnterTransition()} 및 {@link android.view.Window#setSharedElementEnterTransition
+setSharedElementEnterTransition()} 메서드는 호출되는 액티비티의 들어가기 전환을 정의합니다.</p>
+
+<p>전환 효과를 극대화하려면 호출하는 액티비티와 호출되는 액티비티 모두에서 창 콘텐츠 전환을 활성화해야 합니다.
+ 그렇지 않으면 호출하는 액티비티가 나가기 전환을 시작하지만, 배율 또는 페이드와 같은 창 전환이 나타납니다.
+</p>
+
+<p>들어가기 전환을 최대한 빨리 시작하려면 호출되는 액티비티에서 
+{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}
+ 메서드를 사용하세요. 그러면 더욱 인상적인 들어가기 전환이 가능합니다.</p>
+
+<h3>전환을 사용하여 액티비티 시작</h3>
+
+<p>전환을 활성화하고 액티비티에 대해 나가기 전환을 설정한 경우, 다음과 같이 다른 액티비티를 시작하면 전환이 활성화됩니다.
+</p>
+
+<pre>
+startActivity(intent,
+              ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
+</pre>
+
+<p>두 번째 액티비티에 대해 들어가기 전환을 설정한 경우, 액티비티가 시작되면 전환도 활성화됩니다.
+ 다른 액티비티를 시작할 때 전환을 비활성화하려면 <code>null</code> 옵션 번들을 제공하십시오.
+</p>
+
+<h3>공유 요소를 가진 액티비티 시작</h3>
+
+<p>공유 요소를 가진 두 액티비티 간에 화면 전환 애니메이션을 만들려면:</p>
+
+<ol>
+<li>테마에서 창 콘텐츠 전환을 활성화합니다.</li>
+<li>스타일에서 공유 요소 전환을 지정합니다.</li>
+<li>전환을 XML 리소스로 정의합니다.</li>
+<li>
+ <code>android:transitionName</code> 특성을 사용하여 두 레이아웃의 공유 요소에 공통 이름을 지정합니다.</li>
+<li>{@link android.app.ActivityOptions#makeSceneTransitionAnimation
+ActivityOptions.makeSceneTransitionAnimation()} 메서드를 사용합니다.</li>
+</ol>
+
+<pre>
+// get the element that receives the click event
+final View imgContainerView = findViewById(R.id.img_container);
+
+// get the common element for the transition in this activity
+final View androidRobotView = findViewById(R.id.image_small);
+
+// define a click listener
+imgContainerView.setOnClickListener(new View.OnClickListener() {
+    &#64;Override
+    public void onClick(View view) {
+        Intent intent = new Intent(this, Activity2.class);
+        // create the transition animation - the images in the layouts
+        // of both activities are defined with android:transitionName="robot"
+        ActivityOptions options = ActivityOptions
+            .makeSceneTransitionAnimation(this, androidRobotView, "robot");
+        // start the new activity
+        startActivity(intent, options.toBundle());
+    }
+});
+</pre>
+
+<p>코드에서 생성하는 공유된 동적 뷰의 경우, 
+{@link android.view.View#setTransitionName View.setTransitionName()} 메서드를 사용하여 두 액티비티의 공통 요소 이름을 지정합니다.
+</p>
+
+<p>두 번째 액티비티 종료 시, 장면 전환 애니메이션을 되돌리려면 {@link android.app.Activity#finish Activity.finish()} 대신
+{@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()}
+ 메서드를 호출합니다.</p>
+
+<h3>여러 공유 요소를 가진 액티비티 시작</h3>
+
+<p>2개 이상의 공유 요소를 가진 두 액티비티 간에 적용할 장면 전환 애니메이션을 만들려면 <code>android:transitionName</code>
+특성으로 (또는 두 액티비티에서{@link android.view.View#setTransitionName View.setTransitionName()} 메서드를 사용하여) 두 레이아웃의 공유 요소를 정의하고 다음과 같이 {@link android.app.ActivityOptions} 개체를 생성합니다.
+
+</p>
+
+<pre>
+ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
+        Pair.create(view1, "agreedName1"),
+        Pair.create(view2, "agreedName2"));
+</pre>
+
+
+<h2 id="CurvedMotion">커브 모션 사용</h2>
+
+<p>머티리얼 디자인의 애니메이션은 시간 보간 및 공간 이동 패턴에서 커브를 사용합니다.
+ Android 5.0(API 레벨 21) 이상에서 애니메이션의 사용자지정 타이밍 커브 및 커브 모션 패턴을 정의할 수 있습니다.
+</p>
+
+<p>{@link android.view.animation.PathInterpolator} 클래스는 베지어 곡선 또는 {@link android.graphics.Path} 개체를 기반으로 하는 새 보간기입니다.
+ 이 보간기는 생성자 인수를 사용하여 지정된 기준점 (0,0) 및 (1,1)과 제어점으로 모션 커브를 1x1 정사각형 안에 지정합니다.
+
+ 또한 경로 보간기를 XML 리소스로 정의할 수도 있습니다.</p>
+
+<pre>
+&lt;pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:controlX1="0.4"
+    android:controlY1="0"
+    android:controlX2="1"
+    android:controlY2="1"/>
+</pre>
+
+<p>시스템은 머티리얼 디자인 사양에서 세 가지 기본 커브에 대한 XML 리소스를 제공합니다.
+</p>
+
+<ul>
+  <li><code>&#64;interpolator/fast_out_linear_in.xml</code></li>
+  <li><code>&#64;interpolator/fast_out_slow_in.xml</code></li>
+  <li><code>&#64;interpolator/linear_out_slow_in.xml</code></li>
+</ul>
+
+<p>{@link android.view.animation.PathInterpolator} 객체를 {@link
+android.animation.Animator#setInterpolator Animator.setInterpolator()} 메서드에 전달할 수 있습니다.</p>
+
+<p>{@link android.animation.ObjectAnimator} 클래스에는 한 번에 2개 이상의 속성을 사용하여 경로를 따라 좌표를 애니메이트할 수 있는 새 생성자가 있습니다.
+ 예를 들어 다음 애니메이터는 뷰의 X 및 Y 속성을 애니메이트하기 위해 {@link android.graphics.Path} 객체를 사용합니다.
+</p>
+
+<pre>
+ObjectAnimator mAnimator;
+mAnimator = ObjectAnimator.ofFloat(view, View.X, View.Y, path);
+...
+mAnimator.start();
+</pre>
+
+
+<h2 id="ViewState">뷰 상태 변경 애니메이트</h2>
+
+<p>{@link android.animation.StateListAnimator} 클래스를 사용하면 뷰의 상태가 변경될 때 실행되는 애니메이터를 정의할 수 있습니다.
+ 다음 예는 {@link
+android.animation.StateListAnimator}를 XML 리소스로 정의하는 방법을 보여줍니다.</p>
+
+<pre>
+&lt;!-- animate the translationZ property of a view when pressed -->
+&lt;selector xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;item android:state_pressed="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="@android:integer/config_shortAnimTime"
+        android:valueTo="2dp"
+        android:valueType="floatType"/>
+        &lt;!-- you could have other objectAnimator elements
+             here for "x" and "y", or other properties -->
+    &lt;/set>
+  &lt;/item>
+  &lt;item android:state_enabled="true"
+    android:state_pressed="false"
+    android:state_focused="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="100"
+        android:valueTo="0"
+        android:valueType="floatType"/>
+    &lt;/set>
+  &lt;/item>
+&lt;/selector>
+</pre>
+
+<p>사용자지정 뷰 상태 애니메이션을 뷰에 첨부하려면 이 예와 같이 XML 리소스 파일의 
+<code>selector</code> 요소를 사용하여 애니메이터를 정의한 후에 <code>android:stateListAnimator</code> 특성을 통해 뷰에 할당합니다.
+ 코드에서 뷰에 상태 목록 애니메이터를 할당하려면 {@link android.animation.AnimatorInflater#loadStateListAnimator
+AnimationInflater.loadStateListAnimator()} 메서드를 사용하고,
+{@link android.view.View#setStateListAnimator View.setStateListAnimator()} 메서드로 애니메이터를 뷰에 할당합니다.
+</p>
+
+<p>머티리얼 테마를 확장하는 테마의 경우, 버튼은 기본적으로 Z 애니메이션을 가집니다. 버튼에서 이러한 동작을 피하려면 <code>android:stateListAnimator</code> 특성을
+<code>@null</code>로 설정합니다.
+</p>
+
+<p>{@link android.graphics.drawable.AnimatedStateListDrawable} 클래스를 사용하면 연관된 뷰의 상태 변경 사이에 애니메이션을 보여주는 Drawable을 생성할 수 있습니다.
+ Android 5.0의 일부 시스템 위젯은 이러한 애니메이션을 기본적으로 사용합니다.
+ 다음 예는 {@link android.graphics.drawable.AnimatedStateListDrawable}를 XML 리소스로 정의하는 방법을 보여줍니다.
+</p>
+
+<pre>
+&lt;!-- res/drawable/myanimstatedrawable.xml -->
+&lt;animated-selector
+    xmlns:android="http://schemas.android.com/apk/res/android">
+
+    &lt;!-- provide a different drawable for each state-->
+    &lt;item android:id="@+id/pressed" android:drawable="@drawable/drawableP"
+        android:state_pressed="true"/>
+    &lt;item android:id="@+id/focused" android:drawable="@drawable/drawableF"
+        android:state_focused="true"/>
+    &lt;item android:id="@id/default"
+        android:drawable="@drawable/drawableD"/>
+
+    &lt;!-- specify a transition -->
+    &lt;transition android:fromId="@+id/default" android:toId="@+id/pressed">
+        &lt;animation-list>
+            &lt;item android:duration="15" android:drawable="@drawable/dt1"/>
+            &lt;item android:duration="15" android:drawable="@drawable/dt2"/>
+            ...
+        &lt;/animation-list>
+    &lt;/transition>
+    ...
+&lt;/animated-selector>
+</pre>
+
+
+<h2 id="AnimVector">벡터 드로어블 애니메이트</h2>
+
+<p><a href="{@docRoot}training/material/drawables.html#VectorDrawables">벡터 드로어블</a>은 정의를 잃지 않고 확대할 수 있습니다.
+ {@link android.graphics.drawable.AnimatedVectorDrawable}
+클래스를 사용하면 Vector Drawable의 속성을 애니메이트할 수 있습니다.</p>
+
+<p>일반적으로 애니메이트된 벡터 드로어블은 다음 3개의 XML 파일에서 정의합니다.</p>
+
+<ul>
+<li>
+<code>res/drawable/</code>의 <code>&lt;vector&gt;</code> 요소를 가진 벡터 드로어블</li>
+<li>
+<code>res/drawable/</code>의 <code>&lt;animated-vector&gt;</code> 요소를 가진 애니메이트된 벡터 드로어블</li>
+<li>
+<code>res/anim/</code>의 <code>&lt;objectAnimator&gt;</code> 요소를 가진 하나 이상의 객체 애니메이터</li>
+</ul>
+
+<p>애니메이트된 벡터 드로어블은 <code>&lt;group&gt;</code> 및
+<code>&lt;path&gt;</code> 요소의 특성을 애니메이트할 수 있습니다. <code>&lt;group&gt;</code> 요소는 경로 또는 하위 그룹 집합을 정의하며, <code>&lt;path&gt;</code> 요소는 그릴 경로를 정의합니다.
+</p>
+
+<p>애니메이트할 벡터 드로어블을 정의하는 경우, 애니메이터 정의에서 참조할 수 있도록 <code>android:name</code>
+특성을 사용하여 그룹 및 경로에 고유한 이름을 할당합니다.
+ 예:</p>
+
+<pre>
+&lt;!-- res/drawable/vectordrawable.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="64dp"
+    android:width="64dp"
+    android:viewportHeight="600"
+    android:viewportWidth="600">
+    &lt;group
+        <strong>android:name="rotationGroup"</strong>
+        android:pivotX="300.0"
+        android:pivotY="300.0"
+        android:rotation="45.0" >
+        &lt;path
+            <strong>android:name="v"</strong>
+            android:fillColor="#000000"
+            android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
+    &lt;/group>
+&lt;/vector>
+</pre>
+
+<p>애니메이트된 벡터 드로어블 정의는 벡터 드로어블의 그룹 및 경로를 이름으로 참조합니다.
+</p>
+
+<pre>
+&lt;!-- res/drawable/animvectordrawable.xml -->
+&lt;animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+  android:drawable="@drawable/vectordrawable" >
+    &lt;target
+        android:name="rotationGroup"
+        android:animation="@anim/rotation" />
+    &lt;target
+        android:name="v"
+        android:animation="@anim/path_morph" />
+&lt;/animated-vector>
+</pre>
+
+<p>애니메이션 정의는 {@link android.animation.ObjectAnimator} 또는 {@link
+android.animation.AnimatorSet} 객체를 나타냅니다. 이 예의 첫 번째 애니메이터는 대상 그룹을 360도 회전합니다.
+</p>
+
+<pre>
+&lt;!-- res/anim/rotation.xml -->
+&lt;objectAnimator
+    android:duration="6000"
+    android:propertyName="rotation"
+    android:valueFrom="0"
+    android:valueTo="360" />
+</pre>
+
+<p>두 번째 애니메이터는 벡터 드로어블의 경로를 다른 모양으로 모핑합니다.
+ 두 경로 모두 모핑이 가능해야 하며, 같은 수의 명령어와 각 명령어에 대해 같은 수의 매개변수가 있어야 합니다.
+</p>
+
+<pre>
+&lt;!-- res/anim/path_morph.xml -->
+&lt;set xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;objectAnimator
+        android:duration="3000"
+        android:propertyName="pathData"
+        android:valueFrom="M300,70 l 0,-70 70,70 0,0   -70,70z"
+        android:valueTo="M300,70 l 0,-70 70,0  0,140 -70,0 z"
+        android:valueType="pathType" />
+&lt;/set>
+</pre>
+
+<p>자세한 내용은 {@link
+android.graphics.drawable.AnimatedVectorDrawable}의 API 레퍼런스를 참조하세요.</p>
diff --git a/docs/html-intl/intl/ko/training/material/compatibility.jd b/docs/html-intl/intl/ko/training/material/compatibility.jd
new file mode 100644
index 0000000..266cd7c
--- /dev/null
+++ b/docs/html-intl/intl/ko/training/material/compatibility.jd
@@ -0,0 +1,168 @@
+page.title=호환성 유지
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>이 과정에서 다루는 내용</h2>
+<ol>
+  <li><a href="#Theme">대체 스타일 정의</a></li>
+  <li><a href="#Layouts">대체 레이아웃 제공</a></li>
+  <li><a href="#SupportLib">지원 라이브러리 사용</a></li>
+  <li><a href="#CheckVersion">시스템 버전 확인</a></li>
+</ol>
+<h2>필독 항목</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">머티리얼 디자인 사양</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android의 머티리얼 디자인</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>머티리얼 테마 및 사용자지정 액티비티 전환과 같은 일부 머티리얼 디자인 기능은 Android 5.0(API 레벨 21) 이상에서만 이용할 수 있습니다.
+ 그러나 머티리얼 디자인을 지원하는 기기에서 실행할 경우 이러한 기능을 사용하면서도 이전 버전의 Android를 실행하는 기기와도 호환되도록 앱을 디자인할 수 있습니다.
+
+</p>
+
+
+<h2 id="Theme">대체 스타일 정의</h2>
+
+<p>머티리얼 테마를 지원하는 기기에서 해당 테마를 사용하고, 이전 버전의 Android를 실행하는 기기에서 구버전의 테마로 되돌리도록 앱을 구성할 수 있습니다.
+</p>
+
+<ol>
+<li>
+<code>res/values/styles.xml</code>에서 구버전의 테마에서 상속된 테마(Holo 등)를 정의합니다.</li>
+<li>
+<code>res/values-v21/styles.xml</code>에서 머티리얼 테마에서 상속된, 같은 이름을 가진 테마를 정의합니다.</li>
+<li>매니페스트 파일에서 이 테마를 앱의 테마로 설정합니다.</li>
+</ol>
+
+<p class="note"><strong>참고:</strong>
+앱이 머티리얼 테마를 사용하지만 이러한 방식으로 대체 테마를 제공하지 않으면 Android 5.0 이전 버전에서는 앱이 실행되지 않습니다.
+
+</p>
+
+
+<h2 id="Layouts">대체 레이아웃 제공</h2>
+
+<p>머티리얼 디자인 지침에 따라 디자인한 레이아웃이 Android 5.0(API 레벨 21)에서 새로 도입된 XML 특성을 사용하지 않는 경우, 해당 레이아웃은 이전 버전의 Android에서 실행됩니다.
+
+ 그렇지 않은 경우 대체 레이아웃을 제공할 수 있습니다. 또한 이전 버전의 Android에서 앱이 표시되는 방식을 사용자가 지정할 수 있는 대체 레이아웃을 제공할 수도 있습니다.
+</p>
+
+<p><code>res/layout-v21/</code> 안에서 Android 5.0(API 레벨 21)의 레이아웃 파일을 생성하고, <code>res/layout/</code> 안에서 이전 버전의 Android를 위한 대체 레이아웃 파일을 생성합니다.
+예를 들어, <code>res/layout/my_activity.xml</code>은
+<code>res/layout-v21/my_activity.xml</code>의 대체 레이아웃입니다.
+</p>
+
+<p>코드의 중복을 피하기 위해 <code>res/values/</code> 안에서 스타일을 정의하고, 새 API에 대해 <code>res/values-v21/</code>에서 스타일을 수정하고, 스타일 상속을 사용하여 <code>res/values/</code>에서 기본 스타일을 정의하고 <code>res/values-v21/</code>에서 해당 스타일로부터 상속합니다.
+
+</p>
+
+
+<h2 id="SupportLib">지원 라이브러리 사용</h2>
+
+<p><a href="{@docRoot}tools/support-library/features.html#v7">v7 Support Libraries</a>
+ r21 이상에는 다음과 같은 머티리얼 디자인 기능이 포함되어 있습니다.</p>
+
+<ul>
+<li><code>Theme.AppCompat</code> 테마 중 하나를 적용할 때 일부 시스템 위젯에
+대한 <a href="{@docRoot}training/material/theme.html">머티리얼 디자인 스타일</a></li>
+<li><code>Theme.AppCompat</code> 테마의 <a href="{@docRoot}training/material/theme.html#ColorPalette">색상표 테마 특성</a>
+</li>
+<li><a href="{@docRoot}training/material/lists-cards.html#RecyclerView">데이터 컬렉션 표시</a>를 위한 {@link android.support.v7.widget.RecyclerView} 위젯
+</li>
+<li><a href="{@docRoot}training/material/lists-cards.html#CardView">카드 생성</a>을 위한 {@link android.support.v7.widget.CardView} 위젯</li>
+<li><a href="{@docRoot}training/material/drawables.html#ColorExtract">이미지에서 주요 색상을 추출</a>하기 위한 {@link android.support.v7.graphics.Palette} 클래스
+</li>
+</ul>
+
+<h3>시스템 위젯</h3>
+
+<p><code>Theme.AppCompat</code> 테마는 다음 위젯에 대한 머티리얼 디자인 스타일을 제공합니다.</p>
+
+<ul>
+  <li>{@link android.widget.EditText}</li>
+  <li>{@link android.widget.Spinner}</li>
+  <li>{@link android.widget.CheckBox}</li>
+  <li>{@link android.widget.RadioButton}</li>
+  <li>{@link android.support.v7.widget.SwitchCompat}</li>
+  <li>{@link android.widget.CheckedTextView}</li>
+</ul>
+
+<h3>색상표</h3>
+
+<p>Android v7 지원 라이브러리에서 머티리얼 디자인 스타일을 가져와서 색상표를 사용자지정하려면 <code>Theme.AppCompat</code> 테마 중 하나를 적용합니다.
+</p>
+
+<pre>
+&lt;!-- extend one of the Theme.AppCompat themes -->
+&lt;style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
+    &lt;!-- customize the color palette -->
+    &lt;item name="colorPrimary">@color/material_blue_500&lt;/item>
+    &lt;item name="colorPrimaryDark">@color/material_blue_700&lt;/item>
+    &lt;item name="colorAccent">@color/material_green_A200&lt;/item>
+&lt;/style>
+</pre>
+
+<h3>목록 및 카드</h3>
+
+<p>{@link android.support.v7.widget.RecyclerView} 및 {@link
+android.support.v7.widget.CardView} 위젯은 Android v7 지원 라이브러리를 통해 이전 버전의 Android에서 사용할 수 있지만, 다음과 같은 제약이 있습니다.
+</p>
+<ul>
+<li>{@link android.support.v7.widget.CardView}는 추가 패딩을 사용하여 프로그래밍 방식의 그림자 구현으로 환원됩니다.
+</li>
+<li>{@link android.support.v7.widget.CardView}는 둥근 모서리와 교차하는 하위 뷰를 클리핑하지 않습니다.
+</li>
+</ul>
+
+
+<h3>종속 사항</h3>
+
+<p>Android 5.0(API 레벨 21) 이전 버전에서 이러한 기능을 사용하려면 프로젝트에 Android v7 지원 라이브러리를 <a href="{@docRoot}/sdk/installing/studio-build.html#dependencies">Gradle 종속 사항</a>으로 포함합니다.
+</p>
+
+<pre>
+dependencies {
+    compile 'com.android.support:appcompat-v7:21.0.+'
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
+
+
+<h2 id="CheckVersion">시스템 버전 확인</h2>
+
+<p>다음 기능은 Android 5.0(API 레벨 21) 이상에서만 사용할 수 있습니다.</p>
+
+<ul>
+<li>액티비티 전환</li>
+<li>터치 피드백</li>
+<li>애니메이션 표시</li>
+<li>경로기반 애니메이션</li>
+<li>벡터 드로어블</li>
+<li>드로어블 색조 적용</li>
+</ul>
+
+<p>이전 버전 Android와 호환성을 유지하려면, 이러한 기능을 위한 API를 호출하기 전에 런타임에 시스템 {@link
+android.os.Build.VERSION#SDK_INT version}을 확인하세요.
+</p>
+
+<pre>
+// Check if we're running on Android 5.0 or higher
+if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+    // Call some material design APIs here
+} else {
+    // Implement this feature without material design
+}
+</pre>
+
+<p class="note"><strong>참고:</strong> 앱에서 어떤 버전의 Android를 지원할지 지정하려면 매니페스트 파일에서 <code>android:minSdkVersion</code> 및 <code>android:targetSdkVersion</code>
+특성을 사용하세요.
+ Android 5.0에서 머티어리얼 디자인 기능을 사용하려면 <code>android:targetSdkVersion</code> 특성을 <code>21</code>로 설정하세요.
+ 자세한 내용은 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt; API 가이드</a>를 참조하세요.
+
+</p>
diff --git a/docs/html-intl/intl/ko/training/material/drawables.jd b/docs/html-intl/intl/ko/training/material/drawables.jd
new file mode 100644
index 0000000..18d5bf8
--- /dev/null
+++ b/docs/html-intl/intl/ko/training/material/drawables.jd
@@ -0,0 +1,126 @@
+page.title=드로어블 사용
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>이 과정에서 다루는 내용</h2>
+<ol>
+  <li><a href="#DrawableTint">드로어블 리소스 색조 적용</a></li>
+  <li><a href="#ColorExtract">이미지에서 주요 색상 추출</a></li>
+  <li><a href="#VectorDrawables">벡터 드로어블 생성</a></li>
+</ol>
+<h2>필독 항목</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">머티리얼 디자인 사양</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android의 머티리얼 디자인</a></li>
+</ul>
+</div>
+</div>
+
+<p>드로어블의 다음 기능은 앱에서 머티리얼 디자인을 구현하는 데 도움이 됩니다.</p>
+
+<ul>
+<li>드로어블 색조 적용</li>
+<li>주요 색상 추출</li>
+<li>벡터 드로어블</li>
+</ul>
+
+<p>이 과정은 앱에서 이러한 기능을 사용하는 방법을 보여줍니다.</p>
+
+
+<h2 id="DrawableTint">드로어블 리소스 색조 적용</h2>
+
+<p>Android 5.0(API 레벨 21) 이상에서는 알파 마스크로 정의된 비트맵 및 나인패치에 색조를 적용할 수 있습니다.
+ 색상 리소스 또는 색상 리소스로 변환되는 테마 특성(예: <code>?android:attr/colorPrimary</code>)을 사용하여 색조를 적용할 수 있습니다.
+ 일반적으로 이러한 자산은 한 번만 생성하며 자동으로 채색되어 테마와 일치하게 됩니다.
+</p>
+
+<p>{@code setTint()} 메서드를 사용하여 {@link android.graphics.drawable.BitmapDrawable} 또는 {@link
+android.graphics.drawable.NinePatchDrawable} 객체에 색조를 적용할 수 있습니다. 또한
+<code>android:tint</code> 및 <code>android:tintMode</code> 특성으로 레이아웃에 색조 색상과 모드를 설정할 수 있습니다.
+</p>
+
+
+<h2 id="ColorExtract">이미지에서 주요 색상 추출</h2>
+
+<p>Android 지원 라이브러리 r21 이상에는 이미지에서 주요 색상을 추출할 수 있는 {@link
+android.support.v7.graphics.Palette} 클래스가 있습니다. 이 클래스는 다음과 같은 주요 색상을 추출합니다.
+</p>
+
+<ul>
+<li>생생한 색상</li>
+<li>생생한 어두운 색상</li>
+<li>생생한 밝은 색상</li>
+<li>차분한 색상</li>
+<li>차분하고 어두운 색상</li>
+<li>차분하고 밝은 색상</li>
+</ul>
+
+<p>이러한 색상을 추출하려면, 이미지를 불러올 배경 스레드에서
+{@link android.support.v7.graphics.Palette#generate Palette.generate()} 정적 메서드로 {@link android.graphics.Bitmap} 객체를 전달합니다.
+ 스레드를 사용할 수 없는 경우, 대신
+{@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} 메서드를 호출하고 Listener를 제공합니다.
+</p>
+
+<p><code>Palette.getVibrantColor</code>와 같은
+<code>Palette</code> 클래스의 getter 메서드를 사용하여 이미지에서 주요 색상을 추출할 수 있습니다.</p>
+
+<p>프로젝트에서 {@link android.support.v7.graphics.Palette} 클래스를 사용하려면 다음
+<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">Gradle 종속 사항을</a>를 앱의 모듈에 추가합니다.
+</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:palette-v7:21.0.0'
+}
+</pre>
+
+<p>자세한 내용은 {@link android.support.v7.graphics.Palette}
+클래스의 API 레퍼런스를 참조하세요.</p>
+
+
+<h2 id="VectorDrawables">벡터 드로어블 생성</h2>
+
+<!-- video box -->
+<a class="notice-developers-video" href="https://www.youtube.com/watch?v=wlFVIIstKmA" style="margin-top:18px">
+<div>
+    <h3>비디오</h3>
+    <p>Android 벡터 그래픽</p>
+</div>
+</a>
+
+<p>Android 5.0(API 레벨 21) 이상에서는 정의를 잃지 않고 배율을 조정하는 벡터 드로어블을 정의할 수 있습니다.
+ 비트맵 이미지의 경우 각 화면 밀도마다 자산 파일이 필요한 반면, 벡터 이미지의 경우에는 하나의 자산 파일만 필요합니다.
+ 벡터 이미지를 생성하려면 <code>&lt;vector&gt;</code> XML 요소 안에 모양의 세부정보를 정의합니다.
+</p>
+
+<p>다음 예에서는 하트 모양을 가진 벡터 이미지를 정의합니다.</p>
+
+<pre>
+&lt;!-- res/drawable/heart.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    &lt;!-- intrinsic size of the drawable -->
+    android:height="256dp"
+    android:width="256dp"
+    &lt;!-- size of the virtual canvas -->
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+
+  &lt;!-- draw a path -->
+  &lt;path android:fillColor="#8fff"
+      android:pathData="M20.5,9.5
+                        c-1.955,0,-3.83,1.268,-4.5,3
+                        c-0.67,-1.732,-2.547,-3,-4.5,-3
+                        C8.957,9.5,7,11.432,7,14
+                        c0,3.53,3.793,6.257,9,11.5
+                        c5.207,-5.242,9,-7.97,9,-11.5
+                        C25,11.432,23.043,9.5,20.5,9.5z" />
+&lt;/vector>
+</pre>
+
+<p>벡터 이미지는 Android에서 {@link android.graphics.drawable.VectorDrawable}
+객체로 나타납니다. <code>pathData</code> 구문에 대한 자세한 내용은 <a href="http://www.w3.org/TR/SVG11/paths.html#PathData">SVG Path reference</a>를 참조하세요. 벡터 드로어블의 속성 애니메이트에 대한 자세한 내용은
+<a href="{@docRoot}training/material/animations.html#AnimVector">벡터 드로어블 애니메이트</a>를 참조하세요.
+</p>
diff --git a/docs/html-intl/intl/ko/training/material/get-started.jd b/docs/html-intl/intl/ko/training/material/get-started.jd
new file mode 100644
index 0000000..be1fca2
--- /dev/null
+++ b/docs/html-intl/intl/ko/training/material/get-started.jd
@@ -0,0 +1,171 @@
+page.title=시작하기
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>이 과정에서 다루는 내용</h2>
+<ol>
+  <li><a href="#ApplyTheme">머티리얼 테마 적용</a></li>
+  <li><a href="#Layouts">레이아웃 디자인</a></li>
+  <li><a href="#Depth">뷰에서 엘리베이션 지정</a></li>
+  <li><a href="#ListsCards">목록 및 카드 생성</a></li>
+  <li><a href="#Animations">애니메이션 사용자지정</a></li>
+</ol>
+<h2>필독 항목</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">머티리얼 디자인 사양</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android의 머티리얼 디자인</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>머티리얼 디자인으로 앱을 생성하려면:</p>
+
+<ol>
+  <li style="margin-bottom:10px">
+    <a href="http://www.google.com/design/spec">머티리얼 디자인 사양</a>을 검토합니다.</li>
+  <li style="margin-bottom:10px">
+    앱에 머티리얼 <strong>테마</strong>를 적용합니다.</li>
+  <li style="margin-bottom:10px">
+    머티리얼 디자인 지침에 따라 <strong>레이아웃</strong>을 생성합니다.</li>
+  <li style="margin-bottom:10px">
+    그림자를 드리우기 위한 뷰의 <strong>엘리베이션</strong>을 지정합니다.</li>
+  <li style="margin-bottom:10px">
+    목록 및 카드에는 시스템 <strong>위젯</strong>을 사용합니다.</li>
+  <li style="margin-bottom:10px">
+    앱에서 <strong>애니메이션</strong>을 사용자지정합니다.</li>
+</ol>
+
+<h3>이전 버전과의 호환성 유지</h3>
+
+<p>Android 5.0 이전 버전과의 호환성을 유지하면서 다양한 머티리얼 디자인 기능을 앱에 추가할 수 있습니다.
+ 자세한 내용은
+<a href="{@docRoot}training/material/compatibility.html">호환성 유지</a>를 참조하세요.</p>
+
+<h3>머티리얼 디자인으로 앱 업데이트</h3>
+
+<p>머티리얼 디자인을 통합하기 위해 기존 앱을 업데이트하려면 머티리얼 디자인 지침에 따라 레이아웃을 업데이트하세요.
+ 또한 깊이, 터치 피드백, 애니메이션도 통합하세요.
+</p>
+
+<h3>머티리얼 디자인으로 새 앱 생성</h3>
+
+<p>머티리얼 디자인 기능으로 새 앱을 생성하는 경우, <a href="http://www.google.com/design/spec">머티리얼 디자인 지침</a>은 효율적인 디자인 프레임워크를 제공합니다.
+ 앱 디자인 및 개발 시 이 지침을 따르고 Android 프레임워크의 새로운 기능을 사용하세요.
+</p>
+
+
+<h2 id="ApplyTheme">머티리얼 테마 적용</h2>
+
+<p>머티리얼 테마를 앱에 적용하려면
+<code>android:Theme.Material</code>에서 상속하는 스타일을 지정합니다.</p>
+
+<pre>
+&lt;!-- res/values/styles.xml -->
+&lt;resources>
+  &lt;!-- your theme inherits from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- theme customizations -->
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<p>머티리얼 테마는 터치 피드백 및 액티비티 전환을 위한 색상표 및 기본 애니메이션을 설정할 수 있는 업데이트된 시스템 위젯을 제공합니다.
+ 자세한 내용은
+<a href="{@docRoot}training/material/theme.html">머티리얼 테마 사용</a>을 참조하세요.</p>
+
+
+<h2 id="Layouts">레이아웃 디자인</h2>
+
+<p>머티리얼 테마를 적용하고 사용자지정하는 것과 더불어, 레이아웃이 <a href="http://www.google.com/design/spec">머티리얼 디자인 지침</a>을 따라야 합니다.
+ 레이아웃 디자인 시 다음 사항에 특히 주의하세요.
+</p>
+
+<ul>
+<li>기준선 그리드</li>
+<li>키라인</li>
+<li>간격</li>
+<li>터치 대상 크기</li>
+<li>레이아웃 구조</li>
+</ul>
+
+
+<h2 id="Depth">뷰에서 엘리베이션 지정</h2>
+
+<p>뷰는 그림자를 드리울 수 있으며 뷰의 엘리베이션 값은 그림자 크기 및 그리는 순서를 결정합니다.
+ 뷰의 엘리베이션을 설정하려면 레이아웃에서
+<code>android:elevation</code> 특성을 사용하세요.</p>
+
+<pre>
+&lt;TextView
+    android:id="&#64;+id/my_textview"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:text="&#64;string/next"
+    android:background="&#64;color/white"
+    android:elevation="5dp" />
+</pre>
+
+<p>새 <code>translationZ</code> 속성을 사용하여 뷰 엘리베이션의 일시적 변경을 반영하는 애니메이션을 생성할 수 있습니다.
+ 엘리베이션 변경은
+<a href="{@docRoot}training/material/animations.html#ViewState">터치
+제스처에 반응</a>할 때 유용하게 쓰일 수 있습니다.</p>
+
+<p>자세한 내용은 <a href="{@docRoot}training/material/shadows-clipping.html">그림자 정의 및 뷰 클리핑</a>을 참조하세요.
+</p>
+
+
+<h2 id="ListsCards">목록 및 카드 생성</h2>
+
+<p>{@link android.support.v7.widget.RecyclerView}는 {@link
+android.widget.ListView}의 플러그 기능이 개선된 버전으로, 다양한 레이아웃 유형을 지원하고 향상된 성능을 제공합니다.
+{@link android.support.v7.widget.CardView}를 사용하면 모든 앱에서 일관된 모습으로 카드 안의 정보를 표시할 수 있습니다.
+ 다음 코드 예는 {@link android.support.v7.widget.CardView}를 레이아웃에
+포함시키는 방법을 보여줍니다.</p>
+
+<pre>
+&lt;android.support.v7.widget.CardView
+    android:id="&#64;+id/card_view"
+    android:layout_width="200dp"
+    android:layout_height="200dp"
+    card_view:cardCornerRadius="3dp">
+    ...
+&lt;/android.support.v7.widget.CardView>
+</pre>
+
+<p>자세한 내용은 <a href="{@docRoot}training/material/lists-cards.html">목록 및 카드 생성</a>을 참조하세요.
+</p>
+
+
+<h2 id="Animations">애니메이션 사용자지정</h2>
+
+<p>Android 5.0(API 레벨 21)에는 앱에서 사용자지정 애니메이션 생성을 위한 새 API가 포함되어 있습니다. 예를 들어, 액티비티 전환을 활성화하고 액티비티 내부에서 나가기 전환을 정의할 수 있습니다.
+
+</p>
+
+<pre>
+public class MyActivity extends Activity {
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // enable transitions
+        getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+        setContentView(R.layout.activity_my);
+    }
+
+    public void onSomeButtonClicked(View view) {
+        getWindow().setExitTransition(new Explode());
+        Intent intent = new Intent(this, MyOtherActivity.class);
+        startActivity(intent,
+                      ActivityOptions
+                          .makeSceneTransitionAnimation(this).toBundle());
+    }
+}
+</pre>
+
+<p>이 액티비티에서 다른 액티비티를 시작하면 나가기 전환이 활성화됩니다.</p>
+
+<p>새 애니메이션 API에 대한 자세한 내용은 <a href="{@docRoot}training/material/animations.html">사용자지정 애니메이션 정의</a>를 참조하세요.</p>
diff --git a/docs/html-intl/intl/ko/training/material/index.jd b/docs/html-intl/intl/ko/training/material/index.jd
new file mode 100644
index 0000000..3dfb514
--- /dev/null
+++ b/docs/html-intl/intl/ko/training/material/index.jd
@@ -0,0 +1,61 @@
+page.title=개발자를 위한 머티리얼 디자인
+page.type=design
+page.image=images/cards/material_2x.png
+page.metaDescription=Learn how to apply material design to your apps.
+
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+  <h2>종속 사항 및 전제조건</h2>
+  <ul>
+    <li>Android 5.0(API 레벨 21)</li>
+  </ul>
+</div>
+</div>
+
+<p>머티리얼 디자인은 플랫폼 및 기기 전반의 표현 방식, 모션 및 상호 작용 디자인에 대한 종합적인 지침입니다.
+ Android 앱에서 머티리얼 디자인을 사용하려면
+<a href="http://www.google.com/design/spec/material-design/introduction.html">머티리얼 디자인 사양</a>에 설명된 지침을 따르고 Android 5.0(API 레벨 21)에서 제공되는 새 구성 요소 및 기능들을 활용하세요.
+
+
+</p>
+
+<p>이 클래스에서는 다음 요소를 사용하여 머티리얼 디자인 앱을 만드는 방법을 보여줍니다.</p>
+
+<ul>
+<li>머티리얼 테마</li>
+<li>목록 및 카드용 위젯</li>
+<li>사용자지정 그림자 및 뷰 클리핑</li>
+<li>벡터 드로어블</li>
+<li>사용자지정 애니메이션</li>
+</ul>
+
+<p>또한 이 클래스에서는 앱에서 머티리얼 디자인 기능을 사용할 때
+Android 5.0(API 레벨 21) 이전 버전과의 호환성을 유지하는 방법도 배웁니다.</p>
+
+<h2>과정</h2>
+
+<dl>
+  <dt><a href="{@docRoot}training/material/get-started.html">시작하기</a></dt>
+  <dd>머티리얼 디자인 기능을 사용하여 앱을 업데이트하는 방법을 배웁니다.</dd>
+
+  <dt><a href="{@docRoot}training/material/theme.html">머티리얼 테마 사용</a></dt>
+  <dd>앱에 머티리얼 디자인 스타일을 적용하는 방법을 배웁니다.</dd>
+
+  <dt><a href="{@docRoot}training/material/lists-cards.html">목록 및 카드 생성</a></dt>
+  <dd>시스템 위젯을 사용하여 일관된 모양과 느낌을 가진 목록과 카드를 만드는 방법을 배웁니다.</dd>
+
+  <dt><a href="{@docRoot}training/material/shadows-clipping.html">그림자 정의 및 뷰 클리핑</a></dt>
+  <dd>뷰에 대한 엘리베이션을 설정하여 사용자지정 그림자를 생성하는 방법과 뷰를 클리핑하는 방법을 배웁니다.</dd>
+
+  <dt><a href="{@docRoot}training/material/drawables.html">드로어블 사용</a></dt>
+  <dd>벡터 드로어블을 생성하는 방법과 드로어블 리소스를 채색하는 방법을 배웁니다.</dd>
+
+  <dt><a href="{@docRoot}training/material/animations.html">사용자지정 애니메이션 정의</a></dt>
+  <dd>공유 요소를 사용하여 뷰 및 액티비티 전환을 위한 사용자지정 애니메이션을 생성하는 방법을 배웁니다.</dd>
+
+  <dt><a href="{@docRoot}training/material/compatibility.html">호환성 유지</a></dt>
+  <dd>Android 5.0 이전 버전 플랫폼과의 호환성을 유지하는 방법을 배웁니다.</dd>
+</dl>
diff --git a/docs/html-intl/intl/ko/training/material/lists-cards.jd b/docs/html-intl/intl/ko/training/material/lists-cards.jd
new file mode 100644
index 0000000..28fdf22
--- /dev/null
+++ b/docs/html-intl/intl/ko/training/material/lists-cards.jd
@@ -0,0 +1,266 @@
+page.title=목록 및 카드 생성
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>이 과정에서 다루는 내용</h2>
+<ol>
+  <li><a href="#RecyclerView">목록 생성</a></li>
+  <li><a href="#CardView">카드 생성</a></li>
+  <li><a href="#Dependencies">종속 사항 추가</a></li>
+</ol>
+<h2>필독 항목</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">머티리얼 디자인 사양</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android의 머티리얼 디자인</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>앱에서 머티리얼 디자인 스타일로 복잡한 목록과 카드를 생성하려면
+{@link android.support.v7.widget.RecyclerView} 및 {@link android.support.v7.widget.CardView}
+위젯을 사용하세요.</p>
+
+
+<h2 id="RecyclerView">목록 생성</h2>
+
+<p>{@link android.support.v7.widget.RecyclerView} 위젯은 {@link android.widget.ListView}의 더욱 향상되고 유연해진 버전입니다.
+ 이 위젯은 한정된 수의 뷰를 유지함으로써 매우 효율적으로 스크롤할 수 있는 큰 데이터 집합을 표시하기 위한 컨테이너입니다.
+ 사용자 작업 또는 네트워크 이벤트에 따라 런타임에 요소가 변경되는 데이터 컬렉션이 있는 경우
+{@link android.support.v7.widget.RecyclerView} 위젯을 사용하세요.
+</p>
+
+<p>{@link android.support.v7.widget.RecyclerView} 클래스는 다음 기능을 제공하여 큰 데이터 집합의 표시 및 취급 작업을 단순화합니다.
+</p>
+
+<ul>
+  <li>항목 위치 지정을 위한 레이아웃 관리자</li>
+  <li>항목 제거 및 추가와 같은 공통 항목 작업을 위한 기본 애니메이션</li>
+</ul>
+
+<p>또한 필요에 따라 {@link
+android.support.v7.widget.RecyclerView} 위젯을 위한 사용자지정 레이아웃 관리자 및 애니메이션을 정의할 수도 있습니다.</p>
+
+<img src="{@docRoot}training/material/images/RecyclerView.png" alt="" width="550" height="106" />
+<p class="img-caption">
+<strong>그림 1</strong>. <code>RecyclerView</code> 위젯.
+</p>
+
+<p>{@link android.support.v7.widget.RecyclerView} 위젯을 사용하려면 어댑터와 레이아웃 관리자를 지정해야 합니다.
+ 어댑터를 생성하려면 {@link
+android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter} 클래스를 확장하세요. 구현 세부사항은 데이터 집합의 사양 및 뷰 유형에 의해 결정됩니다.
+ 자세한 내용은 아래의 <a href="#RVExamples">예</a>를 참조하세요.
+</p>
+
+<div style="float:right">
+<img src="{@docRoot}design/material/images/list_mail.png" alt="" width="250" height="426" />
+<p class="img-caption" style="margin-left:8px">
+<strong>그림 2</strong> - <code>RecyclerView</code>를 사용한 목록.
+</p>
+</div>
+
+<p><strong>레이아웃 관리자</strong>는 항목 뷰를 {@link
+android.support.v7.widget.RecyclerView}내에 배치하고, 사용자에게는 더 이상 보이지 않는 항목 뷰를 언제 재사용할지 결정합니다.
+ 뷰를 재사용 (또는 <em>재활용</em>)하기 위해, 레이아웃 관리자는 어댑터에게 뷰의 콘텐츠를 데이터 집합의 다른 요소로 교체하도록 요청할 수 있습니다.
+ 이런 방식으로 뷰를 재활용하면 불필요한 뷰 생성이나 리소스를 많이 소모하는 {@link android.app.Activity#findViewById findViewById()} 조회를 수행하지 않아도 되므로 성능이 개선됩니다.
+
+</p>
+
+<p>{@link android.support.v7.widget.RecyclerView}는 다음과 같은 내장 레이아웃 관리자를 제공합니다.</p>
+
+<ul>
+<li>{@link android.support.v7.widget.LinearLayoutManager}는 항목을 가로 또는 세로 스크롤 목록으로 표시합니다.
+</li>
+<li>{@link android.support.v7.widget.GridLayoutManager}는 그리드 형식으로 항목을 표시합니다.</li>
+<li>{@link android.support.v7.widget.StaggeredGridLayoutManager}는 지그재그형의 그리드 형식으로 항목을 표시합니다.</li>
+</ul>
+
+<p>사용자지정 레이아웃 관리자를 생성하려면 {@link
+android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager} 클래스를 확장하십시오.</p>
+
+<h3>애니메이션</h3>
+
+<p>항목 추가 및 제거를 위한 애니메이션은 {@link
+android.support.v7.widget.RecyclerView}에서 기본적으로 활성화됩니다. 이러한 애니메이션을 사용자지정하려면
+{@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} 클래스를
+확장하고 {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()}
+메서드를 사용하세요.</p>
+
+<h3 id="RVExamples">예:</h3>
+
+<p>다음 코드 예는
+{@link android.support.v7.widget.RecyclerView}를 레이아웃에 추가하는 방법을 보여줍니다.</p>
+
+<pre>
+&lt;!-- A RecyclerView with some commonly used attributes -->
+&lt;android.support.v7.widget.RecyclerView
+    android:id="@+id/my_recycler_view"
+    android:scrollbars="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"/>
+</pre>
+
+<p>{@link android.support.v7.widget.RecyclerView} 위젯을 레이아웃에 추가한 후, 객체 핸들을 얻어 레이아웃 관리자에 연결하고, 표시할 데이터의 어댑터를 첨부합니다.
+
+</p>
+
+<pre>
+public class MyActivity extends Activity {
+    private RecyclerView mRecyclerView;
+    private RecyclerView.Adapter mAdapter;
+    private RecyclerView.LayoutManager mLayoutManager;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.my_activity);
+        mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
+
+        // use this setting to improve performance if you know that changes
+        // in content do not change the layout size of the RecyclerView
+        mRecyclerView.setHasFixedSize(true);
+
+        // use a linear layout manager
+        mLayoutManager = new LinearLayoutManager(this);
+        mRecyclerView.setLayoutManager(mLayoutManager);
+
+        // specify an adapter (see also next example)
+        mAdapter = new MyAdapter(myDataset);
+        mRecyclerView.setAdapter(mAdapter);
+    }
+    ...
+}
+</pre>
+
+<p>어댑터는 데이터 집합의 항목에 액세스할 수 있게 해주며, 항목 뷰를 생성하고, 원래의 항목이 더 이상 보이지 않을 경우 일부 뷰의 콘텐츠를 새 데이터 항목으로 교체합니다.
+
+ 다음 코드 예는 {@link android.widget.TextView} 위젯을 사용하여 표시된 문자열 배열로 이루어진 데이터 집합의 간단한 구현을 보여줍니다.
+</p>
+
+<pre>
+public class MyAdapter extends RecyclerView.Adapter&lt;MyAdapter.ViewHolder> {
+    private String[] mDataset;
+
+    // Provide a reference to the views for each data item
+    // Complex data items may need more than one view per item, and
+    // you provide access to all the views for a data item in a view holder
+    public static class ViewHolder extends RecyclerView.ViewHolder {
+        // each data item is just a string in this case
+        public TextView mTextView;
+        public ViewHolder(TextView v) {
+            super(v);
+            mTextView = v;
+        }
+    }
+
+    // Provide a suitable constructor (depends on the kind of dataset)
+    public MyAdapter(String[] myDataset) {
+        mDataset = myDataset;
+    }
+
+    // Create new views (invoked by the layout manager)
+    &#64;Override
+    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
+                                                   int viewType) {
+        // create a new view
+        View v = LayoutInflater.from(parent.getContext())
+                               .inflate(R.layout.my_text_view, parent, false);
+        // set the view's size, margins, paddings and layout parameters
+        ...
+        ViewHolder vh = new ViewHolder(v);
+        return vh;
+    }
+
+    // Replace the contents of a view (invoked by the layout manager)
+    &#64;Override
+    public void onBindViewHolder(ViewHolder holder, int position) {
+        // - get element from your dataset at this position
+        // - replace the contents of the view with that element
+        holder.mTextView.setText(mDataset[position]);
+
+    }
+
+    // Return the size of your dataset (invoked by the layout manager)
+    &#64;Override
+    public int getItemCount() {
+        return mDataset.length;
+    }
+}
+</pre>
+
+
+<div style="float:right;margin-top:15px;margin-left:30px">
+<img src="{@docRoot}design/material/images/card_travel.png" alt="" width="225" height="383">
+<p class="img-caption" style="margin-left:12px">
+<strong>그림 3</strong>. 카드 예.
+</p>
+</div>
+
+<h2 id="CardView">카드 생성</h2>
+
+<p>{@link android.support.v7.widget.CardView}는 {@link android.widget.FrameLayout} 클래스를
+확장하고 카드 내의 정보를 플랫폼에서 일관된 모습으로 표시할 수 있도록 합니다. {@link
+android.support.v7.widget.CardView} 위젯은 그림자와 둥근 모서리를 가질 수 있습니다.</p>
+
+<p>그림자가 있는 카드를 생성하려면 <code>card_view:cardElevation</code> 특성을 사용합니다. 
+{@link android.support.v7.widget.CardView}는 Android 5.0(API 레벨 21) 이상에서 실제 엘리베이션 및 동적 그림자를 사용하며, 이전 버전에서는 이전의 프로그래밍 방식의 그림자 구현으로 환원됩니다. 자세한 내용은 <a href="{@docRoot}training/material/compatibility.html">호환성 유지</a>를 참조하세요.
+
+
+</p>
+
+<p>이러한 속성을 사용하여
+{@link android.support.v7.widget.CardView} 위젯의 모습을 사용자지정합니다.</p>
+
+<ul>
+  <li>레이아웃에 모서리 반지름을 설정하려면 <code>card_view:cardCornerRadius</code>
+특성을 사용합니다.</li>
+  <li>코드에서 모서리 반지름을 설정하려면 <code>CardView.setRadius</code> 메서드를 사용합니다.</li>
+  <li>카드의 배경색을 설정하려면 <code>card_view:cardBackgroundColor</code>
+특성을 사용합니다.</li>
+</ul>
+
+<p>다음 코드 예는 {@link android.support.v7.widget.CardView}
+위젯을 레이아웃에 포함시키는 방법을 보여줍니다.</p>
+
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    ... >
+    &lt;!-- A CardView that contains a TextView -->
+    &lt;android.support.v7.widget.CardView
+        xmlns:card_view="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/card_view"
+        android:layout_gravity="center"
+        android:layout_width="200dp"
+        android:layout_height="200dp"
+        card_view:cardCornerRadius="4dp">
+
+        &lt;TextView
+            android:id="@+id/info_text"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
+    &lt;/android.support.v7.widget.CardView>
+&lt;/LinearLayout>
+</pre>
+
+<p>자세한 내용은 {@link android.support.v7.widget.CardView}의 API 레퍼런스를 참조하세요.</p>
+
+
+<h2 id="Dependencies">종속 사항 추가</h2>
+
+<p>{@link android.support.v7.widget.RecyclerView} 및 {@link android.support.v7.widget.CardView}
+위젯은 <a href="{@docRoot}tools/support-library/features.html#v7">v7 지원 라이브러리</a>의 일부입니다.
+ 이러한 위젯을 프로젝트에서 사용하려면 다음
+<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">Gradle 종속 사항</a>을 앱의 모듈에 추가하세요.
+</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
diff --git a/docs/html-intl/intl/ko/training/material/shadows-clipping.jd b/docs/html-intl/intl/ko/training/material/shadows-clipping.jd
new file mode 100644
index 0000000..e04d0c5
--- /dev/null
+++ b/docs/html-intl/intl/ko/training/material/shadows-clipping.jd
@@ -0,0 +1,133 @@
+page.title=그림자 정의 및 뷰 클리핑
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>이 과정에서 다루는 내용</h2>
+<ol>
+  <li><a href="#Elevation">뷰에 엘리베이션 지정</a></li>
+  <li><a href="#Shadows">뷰 그림자 및 윤곽선 사용자지정</a></li>
+  <li><a href="#Clip">뷰 클리핑</a></li>
+</ol>
+<h2>필독 항목</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">머티리얼 디자인 사양</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android의 머티리얼 디자인</a></li>
+</ul>
+</div>
+</div>
+
+<p>머티어리얼 디자인은 UI 요소에 엘리베이션을 도입합니다. 엘리베이션은 사용자가 각 요소의 상대적 중요성을 이해하고 현재 직면한 작업에 집중할 수 있도록 도와줍니다.
+</p>
+
+<p>Z 속성으로 표현되는 뷰의 엘리베이션은 그림자의 시각적인 모양을 결정합니다. 예를 들어, 더 높은 Z값을 가진 뷰는 더 크고 부드러운 그림자를 드리웁니다.
+ 높은 Z값을 가진 뷰는 낮은 Z값을 가진 뷰를 가립니다. 하지만 뷰의 Z값이 뷰의 크기에 영향을 주지는 않습니다.
+</p>
+
+<p>그림자는 엘리베이트된 뷰의 상위 요소에 의해 그려지며, 따라서 기본적으로 상위 요소에 의해 클리핑되는 표준 뷰 클리핑이 적용됩니다.
+</p>
+
+<p>엘리베이션은 특정 작업 수행 시 위젯이 일시적으로 뷰 평면 위로 올라오는 애니메이션을 생성하는 경우에도 유용합니다.
+</p>
+
+<p>머티리얼 디자인의 엘리베이션에 대한 자세한 내용은
+<a href="http://www.google.com/design/spec/what-is-material/objects-in-3d-space.html">3D 공간의 개체</a>를 참조하세요.
+</p>
+
+
+<h2 id="Elevation">뷰에 엘리베이션 지정</h2>
+
+<p>뷰의 Z 값은 2개의 구성요소를 가집니다.
+
+<ul>
+<li>엘리베이션: 정적 구성요소.</li>
+<li>변환: 애니메이션에 사용되는 동적 구성요소.</li>
+</ul>
+
+<p><code>Z = elevation + translationZ</code></p>
+
+<img src="{@docRoot}training/material/images/shadows-depth.png" width="580" height="261" alt="" />
+<p class="img-caption"><strong>그림 1</strong> - 서로 다른 뷰 엘리베이션의 그림자.</p>
+
+<p>레이아웃 정의에서 뷰의 엘리베이션을 설정하려면 <code>android:elevation</code>
+특성을 사용합니다. 액티비티의 코드에서 뷰의 엘리베이션을 설정하려면
+{@link android.view.View#setElevation View.setElevation()} 메서드를 사용합니다.</p>
+
+<p>뷰의 변환을 설정하려면 {@link android.view.View#setTranslationZ
+View.setTranslationZ()} 메서드를 사용합니다.</p>
+
+<p>새 {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} 및 {@link
+android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} 메서드를 사용하면 뷰의 엘리베이션을 손쉽게 애니메이트할 수 있습니다.
+ 자세한 내용은
+{@link android.view.ViewPropertyAnimator}의 API 레퍼런스와 <a href="{@docRoot}guide/topics/graphics/prop-animation.html">속성 애니메이션</a> 개발자 가이드를 참조하세요.
+</p>
+
+<p>{@link android.animation.StateListAnimator}를 사용해서 이러한 애니메이션을 선언적 방식으로 지정할 수도 있습니다.
+ 이는 사용자가 버튼을 누를 때와 같이 상태 변경이 애니메이션을 트리거하는 경우에 특히 유용합니다.
+ 자세한 내용은
+<a href="{@docRoot}training/material/animations.html#ViewState">뷰 상태 변경 애니메이트</a>를 참조하세요.</p>
+
+<p>Z 값은 dp(밀도 독립적 픽셀)로 측정됩니다.</p>
+
+
+<h2 id="Shadows">뷰 그림자 및 윤곽선 사용자지정</h2>
+
+<p>뷰의 배경 드로어블의 경계는 해당 그림자의 기본 모양을 결정합니다.
+<strong>윤곽선</strong>은 그래픽 객체의 바깥쪽 모양을 나타내고 터치 피드백의 물결 영역을 정의합니다.
+</p>
+
+<p>배경 드로어블을 사용하여 정의된 다음 뷰를 살펴봅시다.</p>
+
+<pre>
+&lt;TextView
+    android:id="@+id/myview"
+    ...
+    android:elevation="2dp"
+    android:background="@drawable/myrect" />
+</pre>
+
+<p>배경 드로어블은 둥근 모서리를 가진 직사각형으로 정의됩니다.</p>
+
+<pre>
+&lt;!-- res/drawable/myrect.xml -->
+&lt;shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+    &lt;solid android:color="#42000000" />
+    &lt;corners android:radius="5dp" />
+&lt;/shape>
+</pre>
+
+<p>배경 드로어블이 뷰의 윤곽선을 정의하기 때문에 뷰는 둥근 모서리를 가진 그림자를 드리웁니다.
+ 사용자지정 윤곽선을 제공하면 뷰 그림자의 기본 모양이 재정의됩니다.</p>
+
+<p>코드에서 뷰의 사용자지정 윤곽선을 정의하려면:<p>
+
+<ol>
+<li>{@link android.view.ViewOutlineProvider} 클래스를 확장합니다.</li>
+<li>{@link android.view.ViewOutlineProvider#getOutline getOutline()} 메서드를 재정의합니다.</li>
+<li>{@link
+android.view.View#setOutlineProvider View.setOutlineProvider()} 메서드를 사용하여 새로운 윤곽선 공급자를 뷰에 할당합니다.</li>
+</ol>
+
+<p>{@link android.graphics.Outline} 클래스의 메서드를 사용하여 둥근 모서리를 가진 타원형 및 직사각형 윤곽선을 생성할 수 있습니다.
+ 뷰의 기본 윤곽선 공급자는 뷰의 배경에서 윤곽선을 가져옵니다.
+ 뷰에 그림자가 드리우는 것을 원치 않으면 뷰의 윤곽선 공급자를 <code>null</code>로 설정하세요.
+</p>
+
+
+<h2 id="Clip">뷰 클리핑</h2>
+
+<p>뷰를 클리핑하면 뷰의 모양을 손쉽게 바꿀 수 있습니다. 다른 디자인 요소와의 일관성을 위해, 또는 사용자 입력에 응답하여 뷰의 모양을 바꾸기 위해 뷰를 클리핑할 수 있습니다. {@link android.view.View#setClipToOutline
+View.setClipToOutline()} 메서드나 <code>android:clipToOutline</code> 특성을 사용하여 뷰를 해당 윤곽선 영역까지 클리핑할 수 있습니다.
+
+ 
+{@link android.graphics.Outline#canClip Outline.canClip()} 메서드에서 결정된 대로 사각형, 원형 및 둥근 사각형의 윤곽선만 클리핑을 지원합니다.
+</p>
+
+<p>드로어블 모양으로 뷰를 클리핑하려면 위와 같이 드로어블을 뷰의 배경으로
+설정하고 {@link android.view.View#setClipToOutline View.setClipToOutline()}
+메서드를 호출합니다.</p>
+
+<p>뷰 클리핑은 리소스 소모가 많은 작업이므로,뷰를 클리핑하는 데 사용하는 모양을 애니메이트하지 마세요.
+ 이 효과를 얻으려면 <a href="{@docRoot}training/material/animations.html#Reveal">표시 효과</a> 애니메이션을 사용하세요.</p>
diff --git a/docs/html-intl/intl/ko/training/material/theme.jd b/docs/html-intl/intl/ko/training/material/theme.jd
new file mode 100644
index 0000000..ef4ff58
--- /dev/null
+++ b/docs/html-intl/intl/ko/training/material/theme.jd
@@ -0,0 +1,131 @@
+page.title=머티리얼 테마 사용
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>이 과정에서 다루는 내용</h2>
+<ol>
+  <li><a href="#ColorPalette">색상표 사용자지정</a></li>
+  <li><a href="#StatusBar">상태 표시줄 사용자지정</a></li>
+  <li><a href="#Inheritance">개별 뷰의 테마 지정</a></li>
+</ol>
+<h2>필독 항목</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">머티리얼 디자인 사양</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android의 머티리얼 디자인</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>새 머티리얼 테마는 다음과 같은 기능을 제공합니다.</p>
+
+<ul>
+  <li>색상표를 설정할 수 있는 시스템 위젯</li>
+  <li>시스템 위젯의 터치 피드백 애니메이션</li>
+  <li>액티비티 전환 애니메이션</li>
+</ul>
+
+<p>제어 중인 색상표로 브랜드 ID에 따라 머티리얼 테마의 모습을 사용자지정할 수 있습니다.
+ <a href="#fig3">그림 3</a>과 같이 테마 특성을 사용하여 작업 표시줄 및 상태 표시줄에 색조를 적용할 수 있습니다.
+</p>
+
+<p>시스템 위젯에는 새 디자인 및 터치 피드백 애니메이션이 있습니다. 앱에서 색상표, 터치 피드백 애니메이션, 액티비티 전환을 사용자지정할 수 있습니다.
+</p>
+
+<p>머티리얼 테마는 다음과 같이 정의됩니다.</p>
+
+<ul>
+  <li><code>@android:style/Theme.Material</code> (어두운 버전)</li>
+  <li><code>@android:style/Theme.Material.Light</code> (밝은 버전)</li>
+  <li><code>@android:style/Theme.Material.Light.DarkActionBar</code></li>
+</ul>
+
+<p>사용가능한 머티리얼 스타일 목록은
+{@link android.R.style R.style}의 API 레퍼런스를 참조하세요.</p>
+
+<!-- two columns, dark/light material theme example -->
+<div style="width:700px;margin-top:25px;margin-bottom:10px">
+<div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
+  <img src="{@docRoot}design/material/images/MaterialDark.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>그림 1</strong>. 어두운 머티리얼 테마</p>
+  </div>
+</div>
+<div style="float:left;width:250px;margin-right:0px;">
+  <img src="{@docRoot}design/material/images/MaterialLight.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>그림 2</strong>. 밝은 머티리얼 테마</p>
+  </div>
+</div>
+<br style="clear:left">
+</div>
+
+<p class="note">
+<strong>참고:</strong> 머티리얼 테마는 Android 5.0(API 레벨 21) 이상에서만 사용할 수 있습니다.
+ <a href="{@docRoot}tools/support-library/features.html#v7">v7 지원 라이브러리</a>
+는 일부 위젯에 머티리얼 디자인 스타일의 테마를 제공하고 색상표 사용자지정을 지원합니다.
+ 자세한 내용은
+<a href="{@docRoot}training/material/compatibility.html">호환성 유지</a>를 참조하세요.
+</p>
+
+
+<h2 id="ColorPalette">색상표 사용자지정</h2>
+
+<p style="margin-bottom:30px">테마의 기본 색상을 브랜드에 맞게 사용자지정하려면 머티리얼 테마에서 상속 시 테마 특성을 사용하여 사용자지정 색상을 정의합니다.
+</p>
+
+<pre>
+&lt;resources>
+  &lt;!-- inherit from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- Main theme colors -->
+    &lt;!--   your app branding color for the app bar -->
+    &lt;item name="android:colorPrimary">@color/primary&lt;/item>
+    &lt;!--   darker variant for the status bar and contextual app bars -->
+    &lt;item name="android:colorPrimaryDark">@color/primary_dark&lt;/item>
+    &lt;!--   theme UI controls like checkboxes and text fields -->
+    &lt;item name="android:colorAccent">@color/accent&lt;/item>
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<div style="float:right;margin-left:25px;margin-top:20px;margin-bottom:10px" id="fig3">
+<img src="{@docRoot}training/material/images/ThemeColors.png" width="250" height="445" />
+<p class="img-caption" style="margin-bottom:0px">
+<strong>그림 3.</strong> 머티리얼 테마 사용자자정</p>
+</div>
+
+
+<h2 id="StatusBar">상태 표시줄 사용자지정</h2>
+
+<p>머티리얼 테마를 사용하면 손쉽게 상태 표시줄을 사용자지정할 수 있습니다. 따라서 브랜드에 맞는 색상을 지정하고 흰색 상태 아이콘이 보이도록 충분한 대비를 제공할 수 있습니다.
+ 상태 표시줄의 사용자지정 색상을 설정하려면 머티리얼 테마를 확장할 때 <code>android:statusBarColor</code> 특성을 사용합니다.
+
+ 기본적으로 <code>android:statusBarColor</code>는 <code>android:colorPrimaryDark</code>의 값을 상속합니다.
+</p>
+
+<p>직접 상태 표시줄 뒤에 그릴 수도 있습니다. 예를 들어 사진 위에 상태 표시줄이 투명하게 표시되도록 하려면, 희미하게 어두운 그라데이션으로 흰색 상태 아이콘이 보이게 합니다.
+
+ 그렇게 하려면 <code>android:statusBarColor</code> 특성을
+<code>&#64;android:color/transparent</code>로 설정하고 필요한 경우 창 플래그를 조정합니다. 또한 {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} 메서드를 사용하여 애니메이션 또는 페이드 효과를 줄 수도 있습니다.
+
+</p>
+
+<p class="note">
+<strong>참고:</strong> 상태 표시줄은 거의 언제나 기본 도구모음과 경계가 분명히 식별되어야 합니다. 단, 이러한 표시줄 뒤에 다채로운 가장자리 이미지 또는 미디어 콘텐츠를 표시하는 경우나 아이콘이 계속 보이도록 그라데이션을 사용하는 경우는 제외됩니다.
+
+
+</p>
+
+<p>탐색 표시줄과 상태 표시줄을 사용자지정하는 경우, 둘 다 투명하게 만들거나 상태 표시줄만 수정합니다.
+ 그 밖의 경우 탐색 표시줄은 항상 검은색을 유지해야 합니다.</p>
+
+
+<h2 id="Inheritance">개별 뷰의 테마 지정</h3>
+
+<p>XML 레이아웃 정의에 있는 요소는 테마 리소스를 참조하는 <code>android:theme</code> 특성을 지정할 수 있습니다.
+ 이 특성은 요소와 모든 하위 요소의 테마를 수정하며, 인터페이스의 특정 부분에서 테마 색상표를 바꿀 때 유용합니다.
+
+</p>
diff --git a/docs/html-intl/intl/pt-br/design/get-started/principles.jd b/docs/html-intl/intl/pt-br/design/get-started/principles.jd
index 46af758..82e28cc 100644
--- a/docs/html-intl/intl/pt-br/design/get-started/principles.jd
+++ b/docs/html-intl/intl/pt-br/design/get-started/principles.jd
@@ -9,13 +9,13 @@
 
 <p>
 Considere estes princípios ao aplicar 
-suas próprias criatividade e mentalidade de projeto. Desvie-se de forma objetiva.
+sua criatividade e sua mentalidade de projeto. Desvie-se de forma objetiva.
 </p>
 
 <h2 id="enchant-me">Encante-me</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="delight-me">Agrade-me de formas surpreendentes</h4>
 <p>Uma bela superfície, uma animação cuidadosamente posicionada ou um efeito sonoro no momento certo 
@@ -23,7 +23,7 @@
 poderoso está à mão.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_delight.png">
 
@@ -32,15 +32,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="real-objects-more-fun">Objetos reais são mais divertidos que botões e menus</h4>
 <p>Deixe que as pessoas manipulem e toquem diretamente em objetos no seu aplicativo. Isso reduz o esforço cognitivo
 necessário para realizar uma tarefa e torna o aplicativo mais emocionalmente satisfatório.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_real_objects.png">
 
@@ -49,16 +49,16 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
-<h4 id="make-it-mine">Deixe-me torná-lo meu</h4>
+<h4 id="make-it-mine">Deixe-me dar meu toque pessoal</h4>
 <p>As pessoas adoram adicionar toques pessoais, pois isso as ajuda a se sentirem à vontade e em controle. Forneça
 padrões sensatos e belos, mas também considere personalizações divertidas e opcionais que não
 prejudiquem as tarefas principais.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_make_it_mine.png">
 
@@ -67,15 +67,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="get-to-know-me">Conheça-me</h4>
 <p>Conheça as preferências das pessoas no decorrer do tempo. Em vez de pedir que façam as mesmas escolhas repetidamente,
 coloque escolhas anteriores em alcance fácil.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_get_to_know_me.png">
 
@@ -84,14 +84,14 @@
 
 <h2 id="simplify-my-life">Simplifique minha vida</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="keep-it-brief">Seja breve</h4>
 <p>Use frases curtas com palavras simples. As pessoas provavelmente ignorarão frases longas.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_keep_it_brief.png">
 
@@ -100,15 +100,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="pictures-faster-than-words">Imagens são mais rápidas que palavras</h4>
 <p>Considere usar imagens para explicar ideias. Elas chamam a atenção das pessoas e podem ser muito mais eficientes
 que palavras.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_pictures.png">
 
@@ -117,15 +117,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="decide-for-me">Decida por mim, mas deixe que eu tenha a palavra final</h4>
 <p>Faça a melhor suposição e tome uma ação, em vez de primeiro perguntar. Escolhas e decisões demais deixam as pessoas
 incomodadas. Caso suponha errado, permita "desfazer".</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_decide_for_me.png">
 
@@ -134,15 +134,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
-<h4 id="only-show-when-i-need-it">Mostre só o que preciso, quando eu precisar</h4>
+<h4 id="only-show-when-i-need-it">Mostre só o que é preciso, quando eu precisar</h4>
 <p>As pessoas se sentem oprimidas quando veem coisas demais de uma vez. Detalhe tarefas e informações em partes
 pequenas e digeríveis. Oculte opções que não sejam essenciais no momento e ensine as pessoas à medida que avançam.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_information_when_need_it.png">
 
@@ -151,15 +151,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="always-know-where-i-am">Eu sempre devo saber onde estou</h4>
 <p>Dê às pessoas a confiança de saberem o que fazer. Faça com que os locais no seu aplicativo pareçam distintos
 e use transições para mostrar relacionamentos entre telas. Forneça feedback sobre tarefas em andamento.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_navigation.png">
 
@@ -168,8 +168,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="never-lose-my-stuff">Nunca perca as minhas coisas</h4>
 <p>Salve o que as pessoas criaram e deixe que elas acessem de qualquer lugar. Lembre-se de configurações,
@@ -177,7 +177,7 @@
 coisa mais fácil do mundo.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_never_lose_stuff.png">
 
@@ -186,15 +186,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="looks-same-should-act-same">Se parece igual, deve agir da mesma forma</h4>
 <p>Ajude as pessoas a discernir diferenças funcionais tornando-as visualmente distintas, em vez de sutis.
 Evite que modos locais que agem de forma diferente sobre a mesma entrada se pareçam.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_looks_same.png">
 
@@ -203,15 +203,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="interrupt-only-if-important">Só me interrompa se for importante</h4>
 <p>Como um bom assistente pessoal, proteja as pessoas de informações não importantes. As pessoas querem ficar
 concentradas e, a não ser que seja crítica e dependente de tempo, uma interrupção pode ser irritante e frustrante.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_important_interruption.png">
 
@@ -220,8 +220,8 @@
 
 <h2 id="make-me-amazing">Faça com que eu seja incrível</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="give-me-tricks">Dê-me truques que funcionem em qualquer lugar</h4>
 <p>As pessoas se sentem ótimas quando descobrem coisas sozinhas. Torne seu aplicativo mais inteligível ao
@@ -229,7 +229,7 @@
 pode ser um bom atalho de navegação.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_tricks.png">
 
@@ -238,8 +238,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="its-not-my-fault">Não é culpa minha</h4>
 <p>Seja gentil sobre como solicita correções a pessoas. Elas querem se sentir inteligentes ao usar o seu
@@ -247,7 +247,7 @@
 Se for possível corrigir em segundo plano, melhor ainda.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_error.png">
 
@@ -256,15 +256,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="sprinkle-encouragement">Espalhe motivação</h4>
 <p>Divida tarefas complexas em passos menores que possam ser realizados facilmente. Dê feedback sobre ações,
 mesmo que seja um brilho sutil.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_sprinkle_encouragement.png">
 
@@ -273,8 +273,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="do-heavy-lifting-for-me">Faça o trabalho pesado por mim</h4>
 <p>Faça com que novatos se sintam peritos possibilitando que façam coisas que nunca acharam possíveis. Por
@@ -282,7 +282,7 @@
 com apenas alguns passos.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_heavy_lifting.png">
 
@@ -291,15 +291,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="make-important-things-fast">Torne coisas importantes rápidas</h4>
 <p>Nem todas as ações são iguais. Decida o que é mais importante em seu aplicativo e torne fácil de encontrar e
 rápido de usar, como o botão do obturador em uma câmera ou o botão de pausa em um reprodutor de música.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_make_important_fast.png">
 
diff --git a/docs/html-intl/intl/pt-br/design/material/index.jd b/docs/html-intl/intl/pt-br/design/material/index.jd
index 60289a3..5368d2d 100644
--- a/docs/html-intl/intl/pt-br/design/material/index.jd
+++ b/docs/html-intl/intl/pt-br/design/material/index.jd
@@ -1,7 +1,7 @@
-page.title=Material Design
+page.title=Material Design para Android
 page.tags=Material,design
 page.type=design
-page.image=design/material/images/MaterialLight.png
+page.image=images/cards/design-material-for-android_2x.jpg
 
 @jd:body
 
@@ -162,7 +162,7 @@
 </li>
 </ul>
 
-<p>Animações de feedback de toque são integradas em várias vistas padrões, como botões. As novas APIs
+<p>Animações de feedback de toque são integradas em várias vistas padrão, como botões. As novas APIs
 permitem personalizar essas animações e adicioná-las às vistas personalizadas.</p>
 
 <p>Para obter mais informações, consulte <a href="{@docRoot}training/material/animations.html">Como definir 
diff --git a/docs/html-intl/intl/pt-br/design/patterns/compatibility.jd b/docs/html-intl/intl/pt-br/design/patterns/compatibility.jd
new file mode 100644
index 0000000..775af0c
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/design/patterns/compatibility.jd
@@ -0,0 +1,70 @@
+page.title=Compatibilidade com versões anteriores
+page.tags="support"
+page.metaDescription=Observações sobre como o Android 4.x adapta IUs projetadas para versões de SO e hardware mais antigos.
+@jd:body
+
+<a class="notice-developers" href="{@docRoot}training/basics/supporting-devices/index.html">
+  <div>
+    <h3>Documentos do desenvolvedor</h3>
+    <p>Suporte a diferentes dispositivos</p>
+  </div>
+</a>
+
+<p>Mudanças significativas no Android 3.0 incluem:</p>
+<ul>
+<li>Obsolescência de teclas de navegação do hardware (Voltar, Menu, Pesquisar, Página inicial) em favor do tratamento da navegação
+  com controles virtuais (Voltar, Página inicial, Recentes).</li>
+<li>Padrão robusto para o uso de menus em barras de ações.</li>
+</ul>
+<p>O Android 4.0 leva essas mudanças para tablets à plataforma de telefone.</p>
+
+<h2 id="older-hardware">Adaptação do Android 4.0 a hardware e aplicativos mais antigos</h2>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>Telefones com controles de navegação virtuais</h4>
+<p>Aplicativos Android escritos para o Android 3.0 e posteriores exibem ações na barra de ações. Ações que não cabem
+na barra de ações ou não são importantes o suficiente para serem exibidas no nível superior aparecem nas
+ações adicionais.</p>
+<p>Os usuários acessam as ações adicionais tocando na barra de ações.</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_virtual_nav.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>Telefones com teclas de navegação físicas</h4>
+<p>Telefones Android com teclas de navegação de hardware tradicionais não exigem a barra de navegação virtual na
+parte inferior da tela. Em vez disso, as ações adicionais estão disponíveis na tecla de hardware de menu. A janela pop-up
+de ações resultante tem o mesmo estilo que no exemplo anterior, mas é exibida na parte inferior da tela.</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_physical_buttons.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>Aplicativos legados em telefones com controles de navegação virtuais</h4>
+<p>Ao executar um aplicativo que foi desenvolvido para Android 2.3 ou anterior em um telefone com controles de 
+navegação virtuais, um controle de ações adicionais é exibido no lado direito da barra de navegação virtual. É possível
+tocar no controle para exibir as ações do aplicativo no estilo tradicional de menu do Android.</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_legacy_apps.png">
+
+  </div>
+</div>
diff --git a/docs/html-intl/intl/pt-br/design/patterns/confirming-acknowledging.jd b/docs/html-intl/intl/pt-br/design/patterns/confirming-acknowledging.jd
index 934dbdd..237c719 100644
--- a/docs/html-intl/intl/pt-br/design/patterns/confirming-acknowledging.jd
+++ b/docs/html-intl/intl/pt-br/design/patterns/confirming-acknowledging.jd
@@ -4,12 +4,12 @@
 
 <p>Em algumas situações, quando um usuário invoca uma ação em seu aplicativo, é uma boa ideia <em>confirmar</em> ou <em>reconhecer</em> essa ação com texto.</p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <img src="{@docRoot}design/media/confirm_ack_confirming.png">
     <p><strong>Confirmar</strong> é pedir ao usuário que verifique se realmente quer prosseguir com a ação que acabou de invocar. Em alguns casos, a confirmação é apresentada com uma advertência ou informações críticas relacionadas à ação que ele precisa considerar.</p>
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/confirm_ack_acknowledge.png">
     <p><strong>Reconhecer</strong> é exibir texto para avisar ao usuário que a ação que acabou de ser invocada foi concluída. Isso remove a incerteza sobre operações implícitas que o sistema adota. Em alguns casos, o reconhecimento é apresentado com uma opção para desfazer a ação.</p>
   </div>
@@ -22,14 +22,14 @@
 <img src="{@docRoot}design/media/confirm_ack_flowchart.png">
 
 <h2>Confirmação</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-    <h4>Exemplo: livros do Google Play</h4>
+<div class="cols">
+  <div class="col-6">
+    <h4>Exemplo: Livros do Google Play</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_books.png">
     <p>Nesse exemplo, o usuário solicitou a exclusão de um livro da biblioteca do Google Play. Um <a href="{@docRoot}design/building-blocks/dialogs.html#alerts">alerta</a> aparece para confirmar essa ação porque é importante entender que o livro não estará mais disponível em nenhum dispositivo.</p>
     <p>Ao montar uma caixa de diálogo de confirmação, use um título significativo que ecoe a ação solicitada.</p>
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <h4>Exemplo: Android Beam</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_beam.png">
     <p>As confirmações não necessariamente precisam ser apresentadas em um alerta com dois botões. Depois de iniciar o Android Beam, o usuário é solicitado a tocar no conteúdo a ser compartilhado (nesse exemplo, uma foto). Se ele decidir não prosseguir, simplesmente afastará o celular.</p>
@@ -37,30 +37,30 @@
 </div>
 
 <h2>Reconhecimento</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-    <h4>Exemplo: abandonar rascunho salvo do Gmail</h4>
+<div class="cols">
+  <div class="col-6">
+    <h4>Exemplo: Abandonar rascunho salvo do Gmail</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_draftsave.png">
     <p>Nesse exemplo, se o usuário navegar para trás ou para cima na tela de composição do Gmail, alguma coisa possivelmente inesperada acontecerá: o rascunho atual será salvo automaticamente. Um reconhecimento na forma de aviso torna isso aparente. Ele desaparece depois de alguns segundos.</p>
-    <p>Desfazer não é adequado aqui, pois o ato de salvar foi iniciado pelo aplicativo, não pelo usuário, Além de ser rápido e fácil retomar a composição da mensagem navegando para a lista de rascunhos.</p>
+    <p>Desfazer não é adequado aqui, pois o ato de salvar foi iniciado pelo aplicativo, não pelo usuário, além de ser rápido e fácil retomar a composição da mensagem navegando para a lista de rascunhos.</p>
 
   </div>
-  <div class="layout-content-col span-6">
-    <h4>Exemplo: conversa do Gmail excluída</h4>
+  <div class="col-6">
+    <h4>Exemplo: Conversa do Gmail excluída</h4>
     <img src="{@docRoot}design/media/confirm_ack_draft_deleted.png">
     <p>Depois que o usuário exclui uma conversa da lista no Gmail, um reconhecimento aparece com a opção de desfazer. O reconhecimento permanece até que o usuário tome uma ação não relacionada, como rolar a lista.</p>
   </div>
 </div>
 
 <h2>Sem confirmação nem reconhecimento</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>Exemplo: +1</h4>
     <img style="padding: 33px 0 30px;" src="{@docRoot}design/media/confirm_ack_ex_plus1.png">
     <p><strong>A confirmação é desnecessária.</strong> Se o usuário usar +1 por acidente, não é um problema. Poderá simplesmente tocar no botão novamente para desfazer a ação.</p>
     <p><strong>O reconhecimento é desnecessário.</strong> O usuário verá o botão +1 oscilar e ficar vermelho. Esse é um sinal muito claro.</p>
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <h4>Exemplo: Remover um aplicativo da tela inicial</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_removeapp.png">
     <p><strong>A confirmação é desnecessária.</strong> Essa é uma ação deliberada: o usuário precisa arrastar e soltar um item em um alvo relativamente grande e isolado. Portanto, acidentes são altamente improváveis. Mas, se o usuário se arrepender da decisão, levará apenas alguns segundos para trazê-lo de volta.</p>
diff --git a/docs/html-intl/intl/pt-br/design/patterns/navigation.jd b/docs/html-intl/intl/pt-br/design/patterns/navigation.jd
index 920ccec..8ed12f7 100644
--- a/docs/html-intl/intl/pt-br/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/pt-br/design/patterns/navigation.jd
@@ -20,13 +20,13 @@
 
 <img src="{@docRoot}design/media/navigation_with_back_and_up.png">
 
-<h2 id="up-vs-back">Para Cima vs. Voltar</h2>
+<h2 id="up-vs-back">Para Cima vs Voltar</h2>
 
 <p>O botão Para Cima é usado para navegar dentro de um aplicativo com base nos relacionamentos hierárquicos
-entre telas. Por exemplo, se a tela A exibe uma lista de itens e, selecionar um item leva à
-tela B (que apresenta aquele item em mais detalhes), então a tela B deve oferecer um botão Para Cima que
+entre telas. Por exemplo, se a tela A exibe uma lista de itens e selecionar um item leva à
+tela B (que apresenta aquele item em mais detalhes), a tela B deve oferecer um botão Para Cima que
 volte à tela A.</p>
-<p>Se determinada tela é a superior na hierarquia de um aplicativo (ou seja, a página inicial do aplicativo), ela não deve apresentar um botão
+<p>Se determinada tela é a superior na hierarquia de um aplicativo (ou seja, a tela inicial do aplicativo), ela não deve apresentar um botão
 Para Cima.</p>
 
 <p>O botão Voltar do sistema é usado para navegar, em ordem cronológica inversa, pelo histórico
@@ -50,9 +50,9 @@
 <h2 id="within-app">Navegação dentro do seu aplicativo</h2>
 
 <h4>Navegação para telas com vários pontos de entrada</h4>
-<p>Algumas vezes, uma tela não tem uma posição estrita dentro da hierarquia do aplicativo e pode ser atingida
-de vários pontos de entrada &mdash; como uma tela de configurações que pode ser atingida de qualquer outra tela
-do aplicativo. Nesse caso, o botão Para Cima deve escolher voltar para a tela anterior, comportando-se
+<p>Algumas vezes, uma tela não tem uma posição rigorosa dentro da hierarquia do aplicativo e pode ser acessada
+de vários pontos de entrada &mdash; como uma tela de configurações que pode ser acessada de qualquer outra tela
+no aplicativo. Nesse caso, o botão Para Cima deve escolher voltar à tela anterior, comportando-se
 de forma idêntica a Voltar.</p>
 <h4>Mudança de vista dentro de uma tela</h4>
 <p>Mudar opções de vista de uma tela não muda o comportamento de Para Cima nem de Voltar: a tela ainda
@@ -60,7 +60,7 @@
 <p>Exemplos de tais mudanças de vista são:</p>
 <ul>
 <li>Alternar vistas usando guias e/ou deslizando para a esquerda e para a direita</li>
-<li>Alternar vistas usando um menu suspenso (também chamados de abas recolhidas)</li>
+<li>Alternar vistas usando um menu suspenso (também chamadas de abas recolhidas)</li>
 <li>Filtrar uma lista</li>
 <li>Classificar uma lista</li>
 <li>Mudar características de exibição (como mudar o zoom)</li>
@@ -78,7 +78,7 @@
 vinculadas pela lista de referência &mdash; por exemplo, ao navegar na Play Store entre aplicativos
 do mesmo desenvolvedor ou álbuns do mesmo artista. Nesses casos, seguir cada link cria
 um histórico, fazendo com que o botão Voltar passe por cada tela visualizada anteriormente. Para Cima deve continuar a
-ignorar essas relacionadas e navegar para a tela do contêiner visualizada mais recentemente.</p>
+ignorar essas telas relacionadas e navegar para a tela do contêiner visualizada mais recentemente.</p>
 
 <img src="{@docRoot}design/media/navigation_between_siblings_market1.png">
 
@@ -89,9 +89,9 @@
 
 <img src="{@docRoot}design/media/navigation_between_siblings_market2.png">
 
-<h2 id="into-your-app">Navegação para o seu aplicativo pelos widgets de página inicial e notificações</h2>
+<h2 id="into-your-app">Navegação para o seu aplicativo pelos widgets de tela inicial e notificações</h2>
 
-<p>Você pode usar widget de página inicial ou notificações para ajudar seus usuários a navegar diretamente para telas
+<p>Você pode usar widgets de tela inicial ou notificações para ajudar os usuários a navegar diretamente para telas
 profundas na hierarquia do seu aplicativo. Por exemplo, o widget Caixa de Entrada do Gmail e a notificação de nova mensagem podem
 ignorar a tela Caixa de Entrada, levando o usuário diretamente a uma vista de conversa.</p>
 
@@ -100,17 +100,17 @@
 <ul>
 <li><em>Se a tela de destino é normalmente acessada de uma determinada tela dentro do
 aplicativo</em>, Para Cima deve navegar para essa tela.</li>
-<li><em>Caso contrário</em>, Para Cima deve navegar para a tela superior ("Página inicial") do aplicativo.</li>
+<li><em>Caso contrário</em>, Para Cima deve navegar para a tela superior ("Tela inicial") do aplicativo.</li>
 </ul>
 
 <p>No caso do botão Voltar, você deve tornar a navegação mais previsível inserindo o caminho de navegação para cima
-completo na pilha de retorno da tarefa, até a tela superior do aplicativo. Isso permite que usuários
+completo na pilha de retorno da tarefa até a tela superior do aplicativo. Isso permite que usuários
 que se esqueceram de como entraram no aplicativo naveguem para a tela superior do aplicativo
 antes de saírem.</p>
 
-<p>Como exemplo, o widget da Página inicial do Gmail tem um botão para mergulhar diretamente para a tela
+<p>Como exemplo, o widget da Tela inicial do Gmail tem um botão para mergulhar diretamente para a tela
 de composição. Para Cima ou Voltar na tela de composição deve levar o usuário à Caixa de Entrada e, de lá, o
-botão Voltar continua até a Página inicial.</p>
+botão Voltar continua até a Tela inicial.</p>
 
 <img src="{@docRoot}design/media/navigation_from_outside_back.png">
 
@@ -123,7 +123,7 @@
 
 <p>Diferentemente de em notificações padrão (diretas), pressionar Voltar em uma tela intersticial da
 notificação indireta retorna o usuário ao ponto em que a notificação foi acionada &mdash; nenhuma
-tela adicional é inserida na pilha de retorno. Quando o usuário prossegue para o aplicativo a partir da
+tela adicional é inserida na pilha de retorno. Quando o usuário prossegue para o aplicativo da
 tela intersticial, Para Cima e Voltar se comportam como em notificações padrão, como descrito acima:
 navegando dentro do aplicativo em vez de voltar à tela intersticial.</p>
 
@@ -166,13 +166,13 @@
 
 <p>No Android, uma <strong>atividade</strong> é um componente do aplicativo que define uma tela de
 informações e todas as ações associadas que o usuário pode executar. Seu aplicativo é uma coleção de
-atividades, consistindo em atividades que você cria e aquelas que reutiliza de outros aplicativos.</p>
+atividades, consistindo em atividades que você cria e naquelas que reutiliza de outros aplicativos.</p>
 
 <p>Uma <strong>tarefa</strong> é a sequência de atividades que um usuário segue para atingir um objetivo. Uma
 única tarefa pode usar atividades apenas de um aplicativo ou pode retirar atividades de uma série 
 de outros aplicativos.</p>
 
-<p>Uma <strong>intenção</strong> é um mecanismo para que um aplicativo sinalize que gostaria da assistência de outro
+<p>Uma <strong>intenção</strong> é um mecanismo para que um aplicativo sinalize que gostaria a assistência de outro
 aplicativo para realizar uma ação. As atividades de um aplicativo podem indicar a que intenções
 ele responde. Para intenções comuns, como "Compartilhar", o usuário pode ter vários aplicativos
 instalados que atendam a essa solicitação.</p>
@@ -180,7 +180,7 @@
 <h4>Exemplo: navegação entre aplicativos para suporte a compartilhamento</h4>
 
 <p>Para entender como atividades, tarefas e intenções funcionam juntas, entenda como um aplicativo permite que usuários
-compartilhem conteúdo usando outro aplicativo. Por exemplo, executar o aplicativo Play Store na tela inicial inicia
+compartilhem conteúdo usando outro aplicativo. Por exemplo, executar o aplicativo Play Store na tela inicial começa
 uma nova Tarefa A (veja a figura baixo). Depois de navegar pela Play Store e tocar em um livro em promoção
 para ver os detalhes, o usuário permanecerá na mesma tarefa, estendendo-a ao adicionar atividades. Acionar
 a ação Compartilhar exibe ao usuário uma caixa de diálogo listando cada uma das atividades (de diferentes aplicativos)
@@ -209,5 +209,5 @@
 pela Tarefa B &mdash; o contexto anterior é abandonado em favor do novo objetivo do usuário.</p>
 
 <p>Quando o aplicativo é registrado para tratar intenções com uma atividade em um ponto profundo da hierarquia do aplicativo,
-consulte <a href="#into-your-app">Navegação para o seu aplicativo pelos widgets de página 
+consulte <a href="#into-your-app">Navegação para o seu aplicativo pelos widgets de tela 
 inicial e notificações</a> para ver orientações sobre como especificar a navegação Para Cima.</p>
diff --git a/docs/html-intl/intl/pt-br/guide/components/activities.jd b/docs/html-intl/intl/pt-br/guide/components/activities.jd
new file mode 100644
index 0000000..71986ab
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/components/activities.jd
@@ -0,0 +1,756 @@
+page.title=Atividades
+page.tags=atividade,intenção
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Neste documento</h2>
+<ol>
+  <li><a href="#Creating">Criação de uma atividade</a>
+    <ol>
+      <li><a href="#UI">Implementação de uma interface do usuário</a></li>
+      <li><a href="#Declaring">Declaração de uma atividade no manifesto</a></li>
+    </ol>
+  </li>
+  <li><a href="#StartingAnActivity">Início de uma atividade</a>
+    <ol>
+      <li><a href="#StartingAnActivityForResult">Início de uma atividade de um resultado</a></li>
+    </ol>
+  </li>
+  <li><a href="#ShuttingDown">Encerramento de uma atividade</a></li>
+  <li><a href="#Lifecycle">Gerenciamento do ciclo de vida da atividade</a>
+    <ol>
+      <li><a href="#ImplementingLifecycleCallbacks">Implementação de retornos de chamada do ciclo de vida</a></li>
+      <li><a href="#SavingActivityState">Gravação do estado da atividade</a></li>
+      <li><a href="#ConfigurationChanges">Manipulação de alterações de configuração</a></li>
+      <li><a href="#CoordinatingActivities">Coordenação de atividades</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>Classes principais</h2>
+<ol>
+  <li>{@link android.app.Activity}</li>
+</ol>
+
+<h2>Veja também</h2>
+<ol>
+  <li><a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tarefas e pilha
+de retorno</a></li>
+</ol>
+
+</div>
+</div>
+
+
+
+<p>{@link android.app.Activity} é um componente de aplicativo que fornece uma tela com a qual
+os usuários podem interagir para fazer algo, como discar um número no telefone, tirar uma foto, enviar um e-mail
+ou ver um mapa. Cada atividade recebe uma janela que exibe a interface do usuário. Geralmente, a janela
+preenche a tela, mas pode ser menor que a tela e flutuar
+sobre outras janelas.</p>
+
+<p> Aplicativos geralmente possuem várias atividades pouco vinculadas
+entre si. Normalmente, uma atividade em um aplicativo é especificada como "principal",
+que é a apresentada ao usuário ao iniciar o aplicativo pela primeira vez. Cada
+atividade pode, então, iniciar outra atividade para executar diferentes ações. Ao iniciar uma nova
+atividade, a atividade anterior é interrompida, mas o sistema conserva a atividade
+em uma pilha (a "pilha de retorno"). Quando uma atividade inicia, ela é enviada para a pilha de retorno
+e obtém o foco do usuário. A pilha de retorno segue o mecanismo básico de pilha UEPS (o último que entra é o primeiro que sai).
+Assim, quando o usuário terminar a atividade atual e apertar o botão <em>Voltar</em>,
+ela sairá da pilha (é destruída) e a atividade anterior será retomada (a pilha de retorno
+é discutida em mais detalhes no documento <a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tarefas
+e Pilha de Retorno</a>).</p>
+
+<p>Quando uma atividade é interrompida devido ao início de uma nova atividade, ela é notificada acerca dessa alteração de estado
+por meio de métodos de retorno de chamada do ciclo de vida da atividade.
+Há diversos métodos de retorno de chamada que uma atividade pode receber devido a uma alteração
+em seu estado &mdash; quando o sistema a está criando, interrompendo, retomando ou destruindo &mdash; e cada
+retorno de chamada oferece uma oportunidade de executar trabalhos específicos
+adequados a essa alteração de estado. Por exemplo: quando interrompida, a atividade deve liberar
+todos os objetos grandes, como conexões com a rede ou com um banco de dados. Quando a atividade for retomada, será possível
+readquirir os recursos necessários e retomar as ações interrompidas. Essas transições de estado
+são parte do ciclo de vida da atividade.</p>
+
+<p>O restante deste documento discute o básico sobre a compilação e o uso de uma atividade,
+incluindo uma discussão completa sobre o funcionamento do ciclo de vida da atividade para gerenciar adequadamente
+a transição entre os diversos estados da atividade.</p>
+
+
+
+<h2 id="Creating">Criação de uma atividade</h2>
+
+<p>Para criar uma atividade, é preciso criar uma subclasse de {@link android.app.Activity}
+(ou uma respectiva subclasse existente). Na subclasse, é preciso implementar um método de retorno de chamada
+que o sistema chama quando ocorre a transição entre os diversos estados de seu ciclo de vida,
+como na criação, interrupção, retomada ou destruição da atividade. Os dois métodos mais importantes
+de retorno de chamada são:</p>
+
+<dl>
+  <dt>{@link android.app.Activity#onCreate onCreate()}</dt>
+  <dd>É preciso implementar esse método. O sistema o chama ao criar
+a atividade. Na implementação, é preciso inicializar os componentes essenciais
+da atividade.
+    E, fundamentalmente, é quando se deve chamar {@link android.app.Activity#setContentView
+setContentView()} para definir o layout da interface do usuário da atividade.</dd>
+  <dt>{@link android.app.Activity#onPause onPause()}</dt>
+  <dd>O sistema chama esse método como o primeiro indício de que o usuário está saindo
+da atividade (embora não seja sempre uma indicação de que a atividade será destruída). É quando geralmente
+se deve confirmar qualquer alteração que deva persistir além da sessão do usuário atual (porque
+o usuário pode não retornar).</dd>
+</dl>
+
+<p>Há outros métodos de retorno de chamada do ciclo de vida que se pode usar para oferecer
+uma experiência fluida ao usuário entre atividades e manipular interrupções inesperadas que venham a parar
+ou até a destruir a atividade. Todos os métodos de retorno de chamada do ciclo de vida serão discutidos mais adiante
+na seção sobre <a href="#Lifecycle">Gerenciamento do ciclo de vida da atividade</a>.</p>
+
+
+
+<h3 id="UI">Implementação de uma interface do usuário</h3>
+
+<p> A interface do usuário de uma atividade é fornecida por uma hierarquia de objetos &mdash; de vistas derivados
+da classe {@link android.view.View}.  Cada vista controla um espaço retangular específico
+dentro da janela da atividade e pode responder à interação com o usuário. Por exemplo: uma vista pode ser
+um botão que inicia uma ação quando o usuário toca nele.</p>
+
+<p>O Android oferece algumas vistas prontas que podem ser usadas para projetar e organizar
+o layout. "Widgets" são vistas que fornecem elementos visuais (e interativos) à tela,
+como um botão, um campo de texto, uma caixa de seleção ou apenas uma imagem. "Layouts" são vistas derivadas de {@link
+android.view.ViewGroup} que oferecem um modelo de layout exclusivo para suas vistas filhas,
+como um layout linear, um layout em grade ou um layout relativo. Também é possível definir como subclasse as classes
+{@link android.view.View} e {@link android.view.ViewGroup} (ou subclasses existentes) para criar widgets e layouts próprios
+e aplicá-los no layout da atividade.</p>
+
+<p>A forma mais comum de definir um layout usando vistas é com um arquivo de layout XML salvo
+nos recursos do aplicativo. Assim, é possível manter o projeto da interface do usuário separado
+do código fonte que define o comportamento da atividade. É possível definir o layout como a IU da atividade
+com {@link android.app.Activity#setContentView(int) setContentView()}, passando
+o ID de recurso do layout. No entanto, também é possível criar novas {@link android.view.View}s
+no código da atividade e compilar uma hierarquia de vistas inserindo novas {@link
+android.view.View}s em um {@link android.view.ViewGroup} e, em seguida, usar esse layout passando a raiz
+{@link android.view.ViewGroup} para {@link android.app.Activity#setContentView(View)
+setContentView()}.</p>
+
+<p>Para obter mais informações sobre a criação de uma interface do usuário, consulte a documentação <a href="{@docRoot}guide/topics/ui/index.html">Interface do Usuário</a>.</p>
+
+
+
+<h3 id="Declaring">Declaração de uma atividade no manifesto</h3>
+
+<p>É preciso declarar a atividade no arquivo de manifesto para torná-la
+acessível para o sistema. Para declarar a atividade, abra o arquivo de manifesto e adicione um elemento <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+como filho do elemento
+<a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>. Por exemplo:</p>
+
+<pre>
+&lt;manifest ... &gt;
+  &lt;application ... &gt;
+      &lt;activity android:name=".ExampleActivity" /&gt;
+      ...
+  &lt;/application ... &gt;
+  ...
+&lt;/manifest &gt;
+</pre>
+
+<p>Existem outros atributos que podem ser incluídos nesse elemento para definir propriedades
+como o rótulo da atividade, um ícone para a atividade ou um tema para estilizar a IU da atividade.
+ O atributo <a href="{@docRoot}guide/topics/manifest/activity-element.html#nm">{@code android:name}</a>
+ é o único atributo obrigatório &mdash; ele especifica o nome de classe da atividade. Depois
+de publicar o aplicativo, não se deve alterar-lhe o nome porque, se isso acontecer, podem ocorrer danos
+em algumas funcionalidades, como os atalhos do aplicativo (leia a publicação do blogue <a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">Coisas
+que não podem mudar</a>).</p>
+
+<p>Consulte a referência do elemento <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+para obter mais informações sobre como declarar a atividade no manifesto.</p>
+
+
+<h4>Uso de filtros de intenções</h4>
+
+<p>Um elemento <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> também pode especificar vários filtros de intenções &mdash; usando o elemento <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> &mdash; para declarar o modo com que os componentes de aplicativo
+podem ativá-lo.</p>
+
+<p>Ao criar um novo aplicativo com as ferramentas do Android SDK, o esboço da atividade
+criado contém automaticamente um filtro de intenção que declara que a atividade responde
+à ação "main" (principal) e deve ser colocada na categoria "launcher” (inicializador). O filtro de intenção
+tem a seguinte aparência:</p>
+
+<pre>
+&lt;activity android:name=".ExampleActivity" android:icon="@drawable/app_icon"&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p>O elemento <a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> especifica que este é o “principal” ponto de entrada do aplicativo. O elemento <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> especifica que essa atividade deve ser listada no inicializador do aplicativo
+do sistema (para permitir que os usuários iniciem essa atividade).</p>
+
+<p>Se pretende-se que o aplicativo seja autônomo e que não permita que outros aplicativos ativem
+suas atividades, não será necessário nenhum outro filtro de intenção. Só uma atividade deve ter
+a ação "main" e a categoria "launcher", como no exemplo anterior. As atividades
+que não devem estar disponíveis a outros aplicativos não devem ter filtros de intenção, já que é possível
+iniciá-las por meio de intenções explícitas (conforme discutido na seção a seguir).</p>
+
+<p>No entanto, se a atividade deve responder a intenções implícitas derivadas de outros aplicativos
+(e do aplicativo em questão), é preciso definir filtros de intenções adicionais
+para a atividade. Para cada tipo de intenção que deve responder, é preciso incluir um <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> que contenha um elemento
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> e, opcionalmente, um elemento <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> e/ou um elemento <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
+&lt;data&gt;}</a>. Esses elementos especificam o tipo de intenção a que a atividade pode
+responder.</p>
+
+<p>Para obter mais informações sobre a forma com que as atividades podem responder a intenções, consulte o documento
+<a href="{@docRoot}guide/components/intents-filters.html">Intenções e filtros de intenções</a>.</p>
+
+
+
+<h2 id="StartingAnActivity">Início de uma atividade</h2>
+
+<p>Para iniciar outra atividade, é possível chamar {@link android.app.Activity#startActivity
+startActivity()} passando uma {@link android.content.Intent} que descreva a atividade
+que se deseja iniciar. A intenção especifica a atividade exata que deve ser iniciada ou descreve o tipo
+de ação que ela deve executar (e o sistema seleciona a atividade adequada,
+que
+pode ser até de um outro aplicativo). Uma intenção também pode portar pequenas quantidades de dados
+a serem usados pela atividade iniciada.</p>
+
+<p>Ao trabalhar no aplicativo, frequentemente será necessário iniciar uma atividade conhecida.
+ Para isso, pode-se criar uma intenção que defina explicitamente a atividade que deve ser iniciada
+por meio de um nome de classe. Por exemplo, a seguir é demonstrado como uma atividade inicia outra atividade de nome {@code
+SignInActivity}:</p>
+
+<pre>
+Intent intent = new Intent(this, SignInActivity.class);
+startActivity(intent);
+</pre>
+
+<p>No entanto, o aplicativo também pode ter que executar algumas ações, como enviar um e-mail,
+mensagem de texto ou atualização de status usando os dados da atividade em questão. Nesse caso, o aplicativo
+pode não ter suas próprias atividades para executar tais ações; para isso, pode-se aproveitar as atividades
+fornecidas por outros aplicativos do dispositivo que podem executar essas ações. Esses são os casos
+em que as intenções são muito importantes &mdash; é possível criar uma intenção que descreva
+uma ação a executar para que o sistema
+inicie a atividade apropriada de outro aplicativo. Se houver
+mais de uma atividade que possa manipular a intenção, o usuário poderá escolher qual usará. Por exemplo:
+ se quiser que o usuário envie uma mensagem de e-mail, é possível criar
+a seguinte intenção:</p>
+
+<pre>
+Intent intent = new Intent(Intent.ACTION_SEND);
+intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
+startActivity(intent);
+</pre>
+
+<p>O {@link android.content.Intent#EXTRA_EMAIL} adicionado à intenção é uma matriz de sequência
+de endereços de e-mail para os quais o e-mail poderá ser enviado. Quando um aplicativo de e-mail responde à essa intenção,
+ele lê a matriz de sequência fornecida no extra e a coloca no campo "para"
+do formulário de composição do e-mail. Nessa situação, a atividade do aplicativo de e-mail inicia e, quando o usuário termina o trabalho,
+sua atividade é retomada.</p>
+
+
+
+
+<h3 id="StartingAnActivityForResult">Início de uma atividade para um resultado</h3>
+
+<p>Às vezes, é necessário receber um resultado de alguma atividade iniciada. Nesse caso,
+ inicie a atividade chamando {@link android.app.Activity#startActivityForResult
+startActivityForResult()} (em vez de {@link android.app.Activity#startActivity
+ startActivity()}). Para receber o resultado de uma atividade
+subsequente, implemente o método de retorno de chamada
+{@link android.app.Activity#onActivityResult onActivityResult()}. Quando a atividade subsequente estiver concluída, ela retornará um resultado em uma {@link
+android.content.Intent} para o método
+{@link android.app.Activity#onActivityResult onActivityResult()}.</p>
+
+<p>Por exemplo, talvez você queira que o usuário escolha um dos contatos dele, deste modo, a atividade poderá
+fazer algo com as informações naquele contato. A seguir expõe-se como criar uma intenção desse tipo
+e manipular o resultado:</p>
+
+<pre>
+private void pickContact() {
+    // Create an intent to "pick" a contact, as defined by the content provider URI
+    Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
+    startActivityForResult(intent, PICK_CONTACT_REQUEST);
+}
+
+&#64;Override
+protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+    // If the request went well (OK) and the request was PICK_CONTACT_REQUEST
+    if (resultCode == Activity.RESULT_OK &amp;&amp; requestCode == PICK_CONTACT_REQUEST) {
+        // Perform a query to the contact's content provider for the contact's name
+        Cursor cursor = getContentResolver().query(data.getData(),
+        new String[] {Contacts.DISPLAY_NAME}, null, null, null);
+        if (cursor.moveToFirst()) { // True if the cursor is not empty
+            int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
+            String name = cursor.getString(columnIndex);
+            // Do something with the selected contact's name...
+        }
+    }
+}
+</pre>
+
+<p>Esse exemplo mostra a lógica básica que deve ser usada no método {@link
+android.app.Activity#onActivityResult onActivityResult()} para manipular
+o resultado de uma atividade. A primeira condição verifica se a solicitação foi bem-sucedida &mdash; se for,
+o {@code resultCode} será {@link android.app.Activity#RESULT_OK} &mdash; e se a solicitação
+a que esse resultado responderá for desconhecida &mdash;, nesse caso, o {@code requestCode} corresponderá
+ao segundo parâmetro com {@link android.app.Activity#startActivityForResult
+startActivityForResult()}. A partir daí, o código manipula o resultado da atividade com uma consulta
+dos dados retornados em uma {@link android.content.Intent} (o parâmetro {@code data}).</p>
+
+<p>Nesse momento, um {@link
+android.content.ContentResolver} executa uma consulta em um provedor de conteúdo, que retorna
+um {@link android.database.Cursor} que permite a leitura dos dados consultados. Para obter mais informações,
+consulte o documento <a href="{@docRoot}guide/topics/providers/content-providers.html">Provedores de conteúdo</a>.</p>
+
+<p>Para obter mais informações sobre intenções, consulte o documento
+<a href="{@docRoot}guide/components/intents-filters.html">Intenções e filtros de intenções</a>.</p>
+
+
+<h2 id="ShuttingDown">Encerramento de uma atividade</h2>
+
+<p>Para encerrar uma atividade, chame o método {@link android.app.Activity#finish
+finish()}. Também é possível encerrar uma atividade separada iniciada anteriormente chamando
+{@link android.app.Activity#finishActivity finishActivity()}.</p>
+
+<p class="note"><strong>Observação:</strong> na maioria dos casos, não se deve finalizar explicitamente
+uma atividade usando esses métodos. Conforme discutido na seção anterior sobre o ciclo de vida da atividade,
+o sistema Android gerencia a vida de uma atividade, portanto não é necessário finalizar
+as atividades. Chamar esses métodos poderia afetar negativamente a experiência
+do usuário esperada e isso só deve ser usado quando realmente não se desejar que o usuário
+retorne a essa instância da atividade.</p>
+
+
+<h2 id="Lifecycle">Gerenciamento do ciclo de vida da atividade</h2>
+
+<p>O gerenciamento do ciclo de vida das atividades por meio da implementação
+de métodos de retorno de chamada
+é essencial para desenvolver um aplicativo flexível. O ciclo de vida de uma atividade é diretamente afetado
+por sua associação a outras atividades, sua tarefa e sua pilha de retorno.</p>
+
+<p>Uma atividade pode existir essencialmente em três estados:</p>
+
+<dl>
+  <dt><i>Retomada</i></dt>
+    <dd>A atividade está em primeiro plano na tela e tem o foco do usuário (em geral,
+chama-se esse estado de "em execução”).</dd>
+
+  <dt><i>Pausada</i></dt>
+    <dd>A atividade ainda está visível, mas outra atividade está em primeiro plano e tem o foco. Ou seja,
+outra atividade está visível por cima desta e está parcialmente transparente
+ou não cobre inteiramente a tela. Uma atividade pausada está totalmente ativa (o objeto
+{@link android.app.Activity} está retido na memória, mantém todas as informações de estado e do membro e permanece anexado
+ao gerenciador de janela), mas pode ser eliminada pelo sistema em situações de memória extremamente baixa.</dd>
+
+  <dt><i>Interrompida</i></dt>
+    <dd>A atividade está totalmente suplantada por outra (a atividade passa para
+"segundo plano"). Uma atividade interrompida ainda está ativa (o objeto
+{@link android.app.Activity} está retido na memória, mantém todas as informações de estado e do membro, mas <em>não</em> está
+anexado ao gerenciador de janelas). No entanto, ela não fica mais visível para o usuário
+e pode ser eliminada pelo sistema se a memória for necessária em outro processo.</dd>
+</dl>
+
+<p>Se uma atividade estiver pausada ou interrompida, o sistema poderá descartá-la da memória solicitando a
+finalização do processo (chamando seu método {@link android.app.Activity#finish finish()}) ou simplesmente
+eliminando-o.  Quando a atividade for reaberta (depois de finalizada ou eliminada), ele deverá ser
+totalmente recriada.</p>
+
+
+
+<h3 id="ImplementingLifecycleCallbacks">Implementação de retornos de chamada do ciclo de vida</h3>
+
+<p>Quando uma atividade transita entre os diferentes estados descritos acima, ela é notificada
+por meio de vários métodos de retorno de chamada. Todos os métodos de retorno de chamada são ganchos
+que podem ser substituídos para executar um trabalho adequado quando o estado da atividade muda. O esqueleto de atividade
+a seguir contém cada um dos métodos do ciclo de vida fundamentais:</p>
+
+
+<pre>
+public class ExampleActivity extends Activity {
+    &#64;Override
+    public void {@link android.app.Activity#onCreate onCreate}(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // The activity is being created.
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onStart onStart()} {
+        super.onStart();
+        // The activity is about to become visible.
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onResume onResume()} {
+        super.onResume();
+        // The activity has become visible (it is now "resumed").
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onPause onPause()} {
+        super.onPause();
+        // Another activity is taking focus (this activity is about to be "paused").
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onStop onStop()} {
+        super.onStop();
+        // The activity is no longer visible (it is now "stopped")
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onDestroy onDestroy()} {
+        super.onDestroy();
+        // The activity is about to be destroyed.
+    }
+}
+</pre>
+
+<p class="note"><strong>Observação:</strong> a implementação desses métodos do ciclo de vida
+deve sempre chamar a implementação da superclasse antes de realizar qualquer trabalho, conforme ilustrado no exemplo acima.</p>
+
+<p>Juntos, esses métodos definem todo o ciclo de vida da atividade. Ao implementá-los,
+é possível monitorar três loops aninhados no ciclo de vida da atividade: </p>
+
+<ul>
+<li><b>Todo o tempo de vida</b> de uma atividade acontece entre a chamada de {@link
+android.app.Activity#onCreate onCreate()} e a chamada de {@link
+android.app.Activity#onDestroy}. A atividade deve executar configuração
+de estado "global" (como definindo layout) em {@link android.app.Activity#onCreate onCreate()}
+e liberar todos os recursos restantes em {@link android.app.Activity#onDestroy}. Por exemplo: se a sua atividade
+tiver um encadeamento em execução em segundo plano para baixar dados da rede, ela pode
+criá-lo em {@link android.app.Activity#onCreate onCreate()} e, em seguida, interrompê-lo em {@link
+android.app.Activity#onDestroy}.</li>
+
+<li><p>O <b>tempo de vida visível</b> de uma atividade acontece entre a chamada de {@link
+android.app.Activity#onStart onStart()} e a chamada de {@link
+android.app.Activity#onStop onStop()}. Durante esse tempo, o usuário pode ver a atividade
+na tela e interagir com ela. Por exemplo: {@link android.app.Activity#onStop onStop()} é chamado
+quando uma nova atividade inicia e esta não fica mais visível. Entre esses dois métodos, é possível
+manter os recursos necessários para exibir a atividade ao usuário. Por exemplo: você pode registrar
+um {@link android.content.BroadcastReceiver} em {@link
+android.app.Activity#onStart onStart()} para monitorar as alterações que afetem a IU e cancelar o registro
+ em {@link android.app.Activity#onStop onStop()} quando o usuário não puder mais ver
+o que você está exibindo. O sistema pode chamar {@link android.app.Activity#onStart onStart()} e {@link
+android.app.Activity#onStop onStop()} várias vezes durante todo o tempo de vida de uma atividade
+enquanto ela alterna entre visível e oculta ao usuário.</p></li>
+
+<li><p>O <b>tempo de vida em primeiro plano</b> de uma atividade ocorre entre a chamada de {@link
+android.app.Activity#onResume onResume()} e a chamada de {@link android.app.Activity#onPause
+onPause()}. Durante esse tempo, a atividade está na frente de todas as outras atividades na tela
+e tem o foco de interação do usuário.  Frequentemente, uma atividade pode transitar entre o primeiro e
+o segundo plano &mdash; por exemplo, {@link android.app.Activity#onPause onPause()} é chamado quando o dispositivo está em suspensão
+ou quando uma caixa de diálogo é exibida. Como esse estado pode transitar frequentemente, o código nesses dois métodos deve
+ser bem leve para evitar transições lentas que façam o usuário esperar.</p></li>
+</ul>
+
+<p>A figura 1 ilustra esses loops e os caminhos que uma atividade pode tomar entre os estados.
+Os retângulos representam os métodos de retorno de chamada que podem ser implementados para executar operações
+quando a atividade transita entre estados. <p>
+
+<img src="{@docRoot}images/activity_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Figura 1.</strong> Ciclo de vida da atividade.</p>
+
+<p>Os mesmos métodos de retorno de chamada do ciclo de vida são listados na tabela 1, que descreve cada um deles
+em mais detalhes e localiza cada um dentro
+do ciclo de vida geral da atividade, inclusive se o sistema puder eliminar a atividade depois
+da conclusão do método de retorno de chamada.</p>
+
+<p class="table-caption"><strong>Tabela 1.</strong> Resumo dos métodos de retorno de chamada
+do ciclo de vida da atividade.</p>
+
+<table border="2" width="85%" frame="hsides" rules="rows">
+<colgroup align="left" span="3"></colgroup>
+<colgroup align="left"></colgroup>
+<colgroup align="center"></colgroup>
+<colgroup align="center"></colgroup>
+
+<thead>
+<tr><th colspan="3">Método</th> <th>Descrição</th> <th>Eliminável depois de?</th> <th>Próximo</th></tr>
+</thead>
+
+<tbody>
+<tr>
+  <td colspan="3" align="left"><code>{@link android.app.Activity#onCreate onCreate()}</code></td>
+  <td>Chamado quando a atividade é criada pela primeira vez.
+      É quando deve-se fazer toda a configuração estática normal &mdash;
+criar vistas, vincular dados a listas etc.  Esse método recebe
+um objeto Bundle (pacote) contendo o estado anterior da atividade, se esse
+estado for capturado (consulte <a href="#actstate">Gravação do estado da atividade</a>
+mais adiante).
+      <p>Sempre seguido de {@code onStart()}.</p></td>
+  <td align="center">Não</td>
+      <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td rowspan="5" style="border-left: none; border-right: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onRestart
+onRestart()}</code></td>
+   <td>Chamado depois que atividade tiver sido interrompida, logo antes de ser
+reiniciada.
+       <p>Sempre seguido de {@code onStart()}.</p></td>
+   <td align="center">Não</td>
+   <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStart onStart()}</code></td>
+   <td>Chamado logo antes de a atividade se tornar visível ao usuário.
+       <p>Seguido de {@code onResume()} se a atividade
+for para segundo plano ou {@code onStop()} se ficar oculta.</p></td>
+    <td align="center">Não</td>
+    <td align="center">{@code onResume()} <br/>ou<br/> {@code onStop()}</td>
+</tr>
+
+<tr>
+   <td rowspan="2" style="border-left: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td align="left"><code>{@link android.app.Activity#onResume onResume()}</code></td>
+   <td>Chamado logo antes de a atividade iniciar
+a interação com o usuário.  Nesse ponto, a atividade estará
+no topo da pilha de atividades com a entrada do usuário direcionada a ela.
+       <p>Sempre seguido de {@code onPause()}.</p></td>
+   <td align="center">Não</td>
+   <td align="center">{@code onPause()}</td>
+</tr>
+
+<tr>
+   <td align="left"><code>{@link android.app.Activity#onPause onPause()}</code></td>
+   <td>Chamado quando o sistema está prestes a retomar
+outra atividade.  Esse método normalmente é usado para confirmar alterações
+não salvas a dados persistentes, animações interrompidas e outras coisas que talvez
+estejam consumindo CPU e assim por diante.  Ele sempre deve fazer tudo bem rapidamente porque
+a próxima atividade não será retomada até ela retornar.
+       <p>Seguido de {@code onResume()} se a atividade
+retornar para a frente ou de {@code onStop()} se ficar
+invisível ao usuário.</td>
+   <td align="center"><strong style="color:#800000">Sim</strong></td>
+   <td align="center">{@code onResume()} <br/>ou<br/> {@code onStop()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStop onStop()}</code></td>
+   <td>Chamado quando a atividade não está mais visível ao usuário.  Isso
+pode acontecer porque ela está sendo destruída ou porque outra atividade
+(uma existente ou uma nova) foi retomada e está cobrindo-a.
+       <p>Seguido de {@code onRestart()} se a atividade
+estiver voltando a interagir com o usuário
+ou {@code onDestroy()} se estiver saindo.</p></td>
+   <td align="center"><strong style="color:#800000">Sim</strong></td>
+   <td align="center">{@code onRestart()} <br/>ou<br/> {@code onDestroy()}</td>
+</tr>
+
+<tr>
+   <td colspan="3" align="left"><code>{@link android.app.Activity#onDestroy
+onDestroy()}</code></td>
+   <td>Chamado antes de a atividade ser destruída.  É a última chamada
+que a atividade receberá.  Pode ser chamado porque a atividade
+está finalizando (alguém chamou <code>{@link android.app.Activity#finish
+       finish()}</code> nela) ou porque o sistema está destruindo temporariamente essa instância
+da atividade para poupar espaço.  É possível distinguir
+entre essas duas situações com o método <code>{@link
+       android.app.Activity#isFinishing isFinishing()}</code>.</td>
+   <td align="center"><strong style="color:#800000">Sim</strong></td>
+   <td align="center"><em>nada</em></td>
+</tr>
+</tbody>
+</table>
+
+<p>A coluna de nome "Eliminável depois de?" indica se o sistema pode ou não
+eliminar o processo que hospeda a atividade a qualquer momento <em>após o método retornar</em>
+sem executar outra linha de código da atividade.  Estes três métodos são marcados como "sim": ({@link
+android.app.Activity#onPause
+onPause()}, {@link android.app.Activity#onStop onStop()} e {@link android.app.Activity#onDestroy
+onDestroy()}). Como {@link android.app.Activity#onPause onPause()} é o primeiro
+dos três, assim que a atividade é criada, {@link android.app.Activity#onPause onPause()} é
+o último método que certamente será chamado antes que o processo <em>possa</em> ser eliminado &mdash;
+se o sistema precisar recuperar memória em uma emergência, {@link
+android.app.Activity#onStop onStop()} e {@link android.app.Activity#onDestroy onDestroy()} poderão
+não ser chamados. Portanto, deve-se usar {@link android.app.Activity#onPause onPause()} para gravar
+dados persistentes cruciais (como edições do usuário) no armazenamento. No entanto, deve-se sempre ser seletivo
+acerca das informações que devem ser retidas durante {@link android.app.Activity#onPause onPause()} porque
+qualquer procedimento de bloqueio nesse método bloqueará a transição para a próxima atividade e retardará
+a experiência do usuário.</p>
+
+<p> Os métodos marcados como "Não" na coluna <b>Elimináveis</b> protegem o processo que hospeda
+a atividade. evitando a eliminação dele no momento em que é chamado.  Assim, uma atividade é eliminável
+do momento em que {@link android.app.Activity#onPause onPause()} retorna ao momento em que
+{@link android.app.Activity#onResume onResume()} é chamado. Ela não será eliminável novamente até que
+{@link android.app.Activity#onPause onPause()} seja chamado e retorne novamente. </p>
+
+<p class="note"><strong>Observação:</strong> uma atividade tecnicamente não "eliminável”, por essa definição
+na tabela 1, ainda pode ser eliminada pelo sistema &mdash; mas isso só ocorreria
+em circunstâncias extremas, quando não houvesse outra opção. A possibilidade de uma atividade ser eliminada
+é discutida em mais detalhes no documento <a href="{@docRoot}guide/components/processes-and-threads.html">Processos
+e encadeamentos</a>.</p>
+
+
+<h3 id="SavingActivityState">Gravação do estado da atividade</h3>
+
+<p>A introdução a <a href="#Lifecycle">Gerenciamento do ciclo de vida da atividade</a> menciona brevemente
+que,
+quando uma atividade é pausada ou interrompida, o estado da atividade é retido. Isso acontece porque
+o objeto {@link android.app.Activity} continua mantido na memória quando a atividade está pausada
+ou interrompida &mdash; todas as informações sobre seus membros e estado atual ainda estão ativas. Assim, todas as alterações
+feitas pelo usuário dentro da atividade são retidas, de forma que, quando a atividade retornar
+ao primeiro plano (quando é "retomada"), essas alterações ainda estejam lá.</p>
+
+<p>No entanto, quando o sistema destrói uma atividade para recuperar memória, o objeto {@link
+android.app.Activity} é destruído, por isso o sistema não pode simplesmente retomá-la com seu estado
+intacto. Em vez disso, o sistema tem que recriar o objeto {@link android.app.Activity} se o usuário
+navegar de volta a ele. Ainda assim, o usuário não estará ciente
+de que o sistema destruiu a atividade e recriou-a e, assim, provavelmente
+esperará que a atividade esteja exatamente como antes. Nessa situação, para garantir que
+as informações importantes sobre o estado da atividade sejam preservadas, implementa-se um método
+adicional de retorno de chamada que permite salvar as informações sobre o estado da atividade: {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}.</p>
+
+<p>O sistema chama {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
+antes de deixar a mensagem vulnerável à destruição. O sistema passa a esse método
+um {@link android.os.Bundle} no qual é possível salvar
+informações de estado acerca da atividade, como pares nome-valor, usando métodos como {@link
+android.os.Bundle#putString putString()} e {@link
+android.os.Bundle#putInt putInt()}. Em seguida, se o sistema eliminar o processo
+do aplicativo e o usuário voltar à atividade, o sistema recriará a atividade e passará
+o {@link android.os.Bundle} a {@link android.app.Activity#onCreate onCreate()} e a {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}. Usando qualquer um desses métodos,
+é possível extrair o estado salvo de {@link android.os.Bundle} e restaurar
+o estado da atividade. Se não houver informações de estado a restaurar, o {@link
+android.os.Bundle} passado será nulo (que é o caso quando a atividade é criada
+pela primeira vez).</p>
+
+<img src="{@docRoot}images/fundamentals/restore_instance.png" alt="" />
+<p class="img-caption"><strong>Figura 2.</strong> As duas formas pelas quais uma atividade retorna ao foco
+do usuário com seu estado intacto: ou a atividade é destruída e recriada em seguida — e ela deve restaurar
+o estado salvo anteriormente —, ou a atividade é interrompida e retomada em seguida — e o estado dela
+permanece intacto.</p>
+
+<p class="note"><strong>Observação:</strong> não há garantia nenhuma de que {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} será chamado antes de a atividade
+ser destruída porque há casos em que não será necessário salvar o estado
+(como quando o usuário sai da atividade usando o botão <em>Voltar</em>) porque o usuário está fechando
+explicitamente
+a atividade). Se o sistema chamar {@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()}, ele o fará antes de {@link
+android.app.Activity#onStop onStop()} e possivelmente antes de {@link android.app.Activity#onPause
+onPause()}.</p>
+
+<p>No entanto, mesmo se você não fizer nada e não implementar {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}, parte do estado da atividade
+será restaurada pela implementação padrão da classe {@link android.app.Activity} de {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}. Especificamente, a implementação
+padrão chama o método {@link
+android.view.View#onSaveInstanceState onSaveInstanceState()} correspondente para cada {@link
+android.view.View} no layout, o que permite que cada vista forneça informações próprias sobre o que
+deve ser salvo. Quase todo widget na estrutura do Android implementa esse método
+conforme o necessário, de forma que qualquer alteração visível na IU seja automaticamente salva e restaurada
+ao criar a atividade. Por exemplo, o widget {@link android.widget.EditText} salva qualquer texto
+inserido pelo usuário e o widget {@link android.widget.CheckBox} salva independente
+de verificação. O único trabalho necessário será fornecer um ID exclusivo (com
+o atributo <a href="{@docRoot}guide/topics/resources/layout-resource.html#idvalue">{@code android:id}</a>) para cada widget que for salvar seu estado. Se o widget não salvar nenhum ID, o sistema
+não poderá salvar seu estado.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<p>Para fazer com que uma vista deixe explicitamente de salvar seu estado, defina o atributo
+{@link android.R.attr#saveEnabled android:saveEnabled} como {@code "false"} ou chame
+o método {@link android.view.View#setSaveEnabled setSaveEnabled()}. Geralmente, não se deve
+desativar isso, mas é possível caso se deseje restaurar o estado da IU da atividade de forma diferente.</p>
+</div>
+</div>
+
+<p>Embora a implementação padrão de {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} salve informações úteis sobre
+a IU da atividade, talvez ainda seja necessário substituí-la para salvar informações adicionais.
+Por exemplo: pode ser necessário salvar valores de membro alterados durante a vida da atividade (possivelmente
+correlacionados a valores restaurados na IU, mas os membros que retêm esses valores de IU, por padrão,
+não são restaurados).</p>
+
+<p>Como a implementação padrão de {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} ajuda a salvar o estado da IU,
+se o método for substituído para salvar informações de estado adicionais, deve-se sempre chamar a implementação
+da superclasse de {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
+antes de fazer qualquer trabalho. Da mesma forma, deve-se também chamar a implementação da superclasse de {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} se ela for substituída para que
+a implementação padrão possa restaurar estados da vista.</p>
+
+<p class="note"><strong>Observação:</strong> Como nem sempre {@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()} é chamado,
+deve-se usá-lo somente para registrar o estado temporário da atividade (o estado
+da IU) &mdash; nunca se deve usá-lo para armazenar dados persistentes.  Em vez disso, deve-se usar {@link
+android.app.Activity#onPause onPause()} para armazenar dados persistentes (como dados que devem ser salvos
+em um banco de dados) quando o usuário sair da atividade.</p>
+
+<p>Uma boa forma de testar a capacidade do aplicativo de restaurar seu estado é girar
+o dispositivo para alterar a orientação da tela. Quando a orientação de tela muda, o sistema
+destrói e recria a atividade para aplicar recursos alternativos que podem ser disponibilizados
+para a nova configuração de tela. Por esse motivo somente, é muito importante que a atividade
+restaure completamente seu estado quando for recriada porque os usuários normalmente giram a tela
+ao usar aplicativos.</p>
+
+
+<h3 id="ConfigurationChanges">Manipulação de alterações de configuração</h3>
+
+<p>Algumas configurações do dispositivo podem mudar em tempo de execução (como A orientação da tela, disponibilidade
+do teclado e idioma). Quando ocorre uma alteração, o Android recria a atividade em execução
+(o sistema chama {@link android.app.Activity#onDestroy} e, em seguida, chama {@link
+android.app.Activity#onCreate onCreate()} imediatamente). Esse comportamento foi projetado
+para ajudar o aplicativo a se adaptar a novas configurações recarregando-o automaticamente
+com recursos alternativos fornecidos pelo programador (como diferentes layouts
+para orientações e tamanhos de telas diferentes).</p>
+
+<p>Se você projetar adequadamente a atividade para manipular um reinício devido a uma alteração na orientação da tela
+e restaurar o estado da atividade conforme descrito acima, o aplicativo será mais resiliente a outros
+eventos inesperados no ciclo de vida da atividade.</p>
+
+<p>A melhor forma de manipular um reinício desse tipo
+é salvar e restaurar o estado da atividade com {@link
+ android.app.Activity#onSaveInstanceState onSaveInstanceState()} e {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} (ou com {@link
+android.app.Activity#onCreate onCreate()}), conforme abordado na seção anterior.</p>
+
+<p>Para obter mais informações sobre alterações de configuração que podem ocorrer em tempo de execução e como manipulá-las,
+leia o guia em <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Tratamento de
+alterações em tempo de execução</a>.</p>
+
+
+
+<h3 id="CoordinatingActivities">Coordenação de atividades</h3>
+
+ <p>Quando uma atividade inicia outra, ambas passam por transições no ciclo de vida. A primeira atividade
+é pausada e interrompida (embora ela não seja interrompida se ainda estiver visível em segundo plano) enquanto a outra
+atividade é criada. Caso essas atividades compartilhem dados salvos em disco ou em outro lugar, é importante
+compreender que a primeira atividade não é totalmente interrompida antes da criação da segunda.
+Em vez disso, o processo de iniciar a segunda se sobrepõe ao processo de interromper
+a primeira.</p>
+
+<p>A ordem dos retornos de chamada do ciclo de vida é bem definida, especialmente quando as duas atividades estão
+no mesmo processo e uma está iniciando a outra. A seguir há a ordem das operações que ocorrem quando a atividade A
+inicia a atividade B: </p>
+
+<ol>
+<li>O método {@link android.app.Activity#onPause onPause()} da atividade A é executado.</li>
+
+<li>Os métodos {@link android.app.Activity#onCreate onCreate()}, {@link
+android.app.Activity#onStart onStart()} e {@link android.app.Activity#onResume onResume()}
+da atividade B são executados em sequência (a atividade B agora tem o foco do usuário).</li>
+
+<li>Em seguida, se a atividade A não estiver mais visível na tela, seu método {@link
+android.app.Activity#onStop onStop()} é executado.</li>
+</ol>
+
+ <p>Essa sequência previsível de retornos de chamada do ciclo de vida permite gerenciar a transição
+de informações de uma atividade para outra. Por exemplo: se você for gravar em um banco de dados o momento em que
+a primeira atividade é interrompida para que a atividade a seguir possa lê-lo, é preciso realizar a gravação
+no banco de dados durante {@link android.app.Activity#onPause onPause()} e não durante {@link
+android.app.Activity#onStop onStop()}.</p>
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For more information about how Android maintains a history of activities and
+enables user multitasking, continue with the <b><a
+href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back
+Stack</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/pt-br/guide/components/bound-services.jd b/docs/html-intl/intl/pt-br/guide/components/bound-services.jd
new file mode 100644
index 0000000..aa02494
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/components/bound-services.jd
@@ -0,0 +1,658 @@
+page.title=Serviços vinculados
+parent.title=Serviços
+parent.link=services.html
+@jd:body
+
+
+<div id="qv-wrapper">
+<ol id="qv">
+<h2>Neste documento</h2>
+<ol>
+  <li><a href="#Basics">Conceitos básicos</a></li>
+  <li><a href="#Creating">Criação de um serviço vinculado</a>
+    <ol>
+      <li><a href="#Binder">Extensão da classe Binder</a></li>
+      <li><a href="#Messenger">Uso de um mensageiro</a></li>
+    </ol>
+  </li>
+  <li><a href="#Binding">Vinculação a um serviço</a></li>
+  <li><a href="#Lifecycle">Gerenciamento do ciclo de vida de um serviço vinculado</a></li>
+</ol>
+
+<h2>Classes principais</h2>
+<ol>
+  <li>{@link android.app.Service}</li>
+  <li>{@link android.content.ServiceConnection}</li>
+  <li>{@link android.os.IBinder}</li>
+</ol>
+
+<h2>Exemplos</h2>
+<ol>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html">{@code
+      RemoteService}</a></li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+      LocalService}</a></li>
+</ol>
+
+<h2>Veja também</h2>
+<ol>
+  <li><a href="{@docRoot}guide/components/services.html">Serviços</a></li>
+</ol>
+</div>
+
+
+<p>Um serviço vinculado é o servidor em uma interface servidor-cliente. Um serviço vinculado permite que componentes
+(como atividades) sejam vinculados ao serviço, enviem solicitações, recebam respostas e até estabeleçam
+comunicação entre processos (IPC). Um serviço vinculado, geralmente, vive somente enquanto serve
+outro componente do aplicativo e não é executado em segundo plano indefinidamente.</p>
+
+<p>Este documento mostra como criar um serviço vinculado, inclusive como criar vínculos
+com o serviço a partir de outros componentes do aplicativo. No entanto, você também deve consultar a documentação <a href="{@docRoot}guide/components/services.html">Serviços</a> para obter
+informações adicionais sobre serviços de forma geral, por exemplo: como enviar notificações de um serviço,
+como definir o serviço a ser executado em primeiro plano etc.</p>
+
+
+<h2 id="Basics">Conceitos básicos</h2>
+
+<p>Um serviço vinculado é uma implementação da classe {@link android.app.Service} que permite
+que outros aplicativos sejam vinculados e interajam com ele. Para fornecer a vinculação
+a um serviço, você deve implementar o método de retorno de chamada {@link android.app.Service#onBind onBind()}. Este método
+retorna um objeto {@link android.os.IBinder} que define a interface de programação
+que os clientes podem usar para interagir com o serviço.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>Vinculação com um serviço iniciado</h3>
+
+<p>Como discutido na documentação <a href="{@docRoot}guide/components/services.html">Serviços</a>,
+é possível criar um serviço que já foi iniciado e vinculado. Ou seja, o serviço pode
+ser iniciado chamando {@link android.content.Context#startService startService()}, que permite que ele
+permaneça em execução indefinidamente e também permite que um cliente vincule-o chamando {@link
+android.content.Context#bindService bindService()}.
+  <p>Se você permitir que o serviço seja iniciado e vinculado, então, quando ele
+for iniciado, o sistema <em>não</em> o destruirá quando todos os clientes desfizerem a vínculo. Em vez disso, você deve
+interromper o serviço explicitamente chamando {@link android.app.Service#stopSelf stopSelf()} ou {@link
+android.content.Context#stopService stopService()}.</p>
+
+<p>Apesar de normalmente se implementar {@link android.app.Service#onBind onBind()}
+<em>ou</em> {@link android.app.Service#onStartCommand onStartCommand()}, às vezes
+é necessário implementar ambos. Por exemplo, um reprodutor de música pode achar útil permitir que o seu serviço
+permaneça em execução indefinidamente, além de fornecer vinculação. Desta forma, uma atividade pode iniciar o serviço
+para reproduzir algumas músicas e a música continuará em reprodução mesmo quando o usuário sair do aplicativo. Em seguida, quando o usuário
+voltar ao aplicativo, a atividade poderá vincular-se ao serviço para retomar o controle da reprodução.</p>
+
+<p>Certifique-se de ler a seção sobre <a href="#Lifecycle">Gerenciamento do ciclo de vida de um serviço
+vinculado</a> para obter mais informações sobre o ciclo de vida do serviço ao adicionar vinculação
+a um serviço iniciado.</p>
+</div>
+</div>
+
+<p>Um cliente pode vincular-se ao serviço chamando {@link android.content.Context#bindService
+bindService()}. Quando isto ocorre, é preciso fornecer uma implementação de {@link
+android.content.ServiceConnection}, que monitora a conexão com o serviço. O método {@link
+android.content.Context#bindService bindService()} retorna imediatamente sem um valor,
+mas quando o sistema Android cria a conexão entre
+o cliente e o serviço, ele chama {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} em {@link
+android.content.ServiceConnection} para fornecer o {@link android.os.IBinder}
+que o cliente pode usar para comunicar-se com o serviço.</p>
+
+<p>Vários clientes podem conectar-se ao serviço de uma vez. No entanto, o sistema chama o método
+{@link android.app.Service#onBind onBind()} do serviço para recuperar o {@link android.os.IBinder}
+somente quando o primeiro cliente é vinculado. Em seguida, o sistema entrega o mesmo {@link android.os.IBinder}
+para quaisquer clientes adicionais que vincularem-se, sem chamar {@link android.app.Service#onBind onBind()} novamente.</p>
+
+<p>Quando o último cliente desvincular-se do serviço, o sistema destruirá o serviço
+(a não ser que ele também seja iniciado por {@link android.content.Context#startService startService()}).</p>
+
+<p>Ao implementar o serviço vinculado, o mais importante é definir a interface
+que o método de retorno de chamada {@link android.app.Service#onBind onBind()} retornará. Há poucas maneiras diferentes
+de definir a interface {@link android.os.IBinder} do serviço e a
+seção a seguir discute cada técnica.</p>
+
+
+
+<h2 id="Creating">Criação de um serviço vinculado</h2>
+
+<p>Ao criar um serviço que fornece vinculação, você deve fornecer um {@link android.os.IBinder}
+que ofereça a interface de programação que os clientes podem usar para interagir com o serviço. Há três maneiras
+possíveis de definir a interface:</p>
+
+<dl>
+  <dt><a href="#Binder">Extensão da classe Binder</a></dt>
+  <dd>Se o serviço for privado para o próprio aplicativo e for executado no mesmo processo que o cliente
+(o que é comum), deve-se criar a interface estendendo-se a classe {@link android.os.Binder}
+e retornando uma instância dela a partir de
+{@link android.app.Service#onBind onBind()}. O cliente receberá {@link android.os.Binder}
+e poderá usá-lo para acessar os métodos públicos disponíveis na implementação de {@link android.os.Binder}
+ou até em {@link android.app.Service} diretamente.
+  <p>Esta é a técnica preferencial quando o serviço é meramente um trabalhador de segundo plano
+para o aplicativo. O único motivo pelo qual não se criaria a interface desta maneira
+é porque o serviço está sendo usado por outros aplicativos ou em processos separados.</dd>
+
+  <dt><a href="#Messenger">Uso de um mensageiro</a></dt>
+  <dd>Caso precise que a interface funcione em diferentes processos, é possível
+criar uma interface para o serviço com {@link android.os.Messenger}. Desta maneira, o serviço
+define um {@link android.os.Handler} que responde a diferentes tipos de objetos {@link
+android.os.Message}. Este {@link android.os.Handler}
+é a base para {@link android.os.Messenger}, que pode então compartilhar um {@link android.os.IBinder}
+com o cliente, permitindo que ele envie comandos ao serviço usando objetos {@link
+android.os.Message}. Além disso, o cliente pode definir o próprio {@link android.os.Messenger}
+para que o serviço possa enviar as mensagens de volta.
+  <p>Esta é a maneira mais simples de estabelecer comunicação entre processos (IPC), pois o {@link
+android.os.Messenger} coloca todas as solicitações em fila em um único encadeamento para que você não precise
+projetar o serviço de modo que seja seguro para encadeamentos.</p>
+  </dd>
+
+  <dt>Uso de AIDL</dt>
+  <dd>O AIDL (Android Interface Definition Language, linguagem de definição de interface do Android) realiza todo o trabalho de decomposição de objetos
+em primitivos para que o sistema operacional possa entendê-los e dispô-los em processos
+para realizar a IPC. A técnica anterior, usando o {@link android.os.Messenger}, tem base em AIDL
+como a estrutura fundamental. Como mencionado acima, o {@link android.os.Messenger} cria uma fila
+de todas as solicitações de cliente em um único encadeamento para que o serviço receba uma solicitação por vez. Se, no entanto,
+você quiser que o serviço lide com várias solicitações simultaneamente, é possível usar a AIDL
+diretamente. Neste caso, o serviço deverá ser capaz de realizar vários encadeamentos e ser programado de forma segura para encadeamentos.
+  <p>Para usar a AIDL diretamente, deve-se
+criar um arquivo {@code .aidl} que defina a interface de programação. As ferramentas SDK do Android
+usam este arquivo para gerar uma classe abstrata que implemente a interface e lide com a IPC,
+que pode ser estendida dentro do serviço.</p>
+  </dd>
+</dl>
+
+  <p class="note"><strong>Observação:</strong> a maioria dos aplicativos <strong>não deve</strong> usar a AIDL
+para criar um serviço vinculado, pois isto requer capacidade de se trabalhar com encadeamentos múltiplos
+e pode resultar em uma implementação mais complicada. Portanto, a AIDL não é adequada para a maioria dos aplicativos
+e este documento não discute o seu uso para o serviço. Caso tenha certeza de que
+precisa usar a AIDL diretamente, consulte a documentação
+<a href="{@docRoot}guide/components/aidl.html">AIDL</a>.</p>
+
+
+
+
+<h3 id="Binder">Extensão da classe Binder</h3>
+
+<p>Se o serviço for usado somente pelo aplicativo local e não precisar trabalhar entre processos,
+então será possível implementar a própria classe {@link android.os.Binder} que fornece ao cliente
+acesso direto aos métodos públicos no serviço.</p>
+
+<p class="note"><strong>Observação:</strong> isto funciona somente se o cliente e o serviço
+estiverem no mesmo aplicativo e processo, o que é muito comum. Por exemplo, isto funcionaria bem para um
+aplicativo de música que precise vincular uma atividade ao próprio serviço que está
+reproduzindo música em segundo plano.</p>
+
+<p>Como configurar:</p>
+<ol>
+  <li>No serviço, crie uma instância de {@link android.os.Binder} que:
+    <ul>
+      <li>contenha métodos públicos que o cliente possa chamar</li>
+      <li>retorne ao cliente a instância {@link android.app.Service}, que tenha métodos públicos
+que ele possa chamar</li>
+      <li>ou retorne uma instância de outra classe hospedada pelo serviço com métodos públicos
+que o cliente possa chamar</li>
+    </ul>
+  <li>Retorne esta instância de {@link android.os.Binder} a partir do método de retorno de chamada {@link
+android.app.Service#onBind onBind()}.</li>
+  <li>No cliente, receba o {@link android.os.Binder} a partir do método de retorno de chamada {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()}
+e faça chamadas para o serviços vinculados usando os métodos fornecidos.</li>
+</ol>
+
+<p class="note"><strong>Observação:</strong> o motivo pelo qual o serviço e o cliente devem estar no mesmo aplicativo
+é para que o cliente possa lançar o objeto retornado e chamar as APIs adequadamente. O serviço e o cliente
+também devem estar no mesmo processo, pois esta técnica não possui
+nenhuma ingerência entre processos.</p>
+
+<p>Por exemplo, a seguir há um serviço que fornece aos clientes acesso aos métodos no serviço
+por meio de uma implementação de {@link android.os.Binder}:</p>
+
+<pre>
+public class LocalService extends Service {
+    // Binder given to clients
+    private final IBinder mBinder = new LocalBinder();
+    // Random number generator
+    private final Random mGenerator = new Random();
+
+    /**
+     * Class used for the client Binder.  Because we know this service always
+     * runs in the same process as its clients, we don't need to deal with IPC.
+     */
+    public class LocalBinder extends Binder {
+        LocalService getService() {
+            // Return this instance of LocalService so clients can call public methods
+            return LocalService.this;
+        }
+    }
+
+    &#64;Override
+    public IBinder onBind(Intent intent) {
+        return mBinder;
+    }
+
+    /** method for clients */
+    public int getRandomNumber() {
+      return mGenerator.nextInt(100);
+    }
+}
+</pre>
+
+<p>O {@code LocalBinder} fornece o método {@code getService()} para que os clientes
+recuperem a instância atual de {@code LocalService}. Isto permite que os clientes chamem métodos públicos
+no serviço. Por exemplo, eles podem chamar {@code getRandomNumber()} a partir do serviço.</p>
+
+<p>Abaixo há uma atividade que vincula-se a {@code LocalService} e chama {@code getRandomNumber()}
+quando um botão é pressionado:</p>
+
+<pre>
+public class BindingActivity extends Activity {
+    LocalService mService;
+    boolean mBound = false;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+
+    &#64;Override
+    protected void onStart() {
+        super.onStart();
+        // Bind to LocalService
+        Intent intent = new Intent(this, LocalService.class);
+        bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+    }
+
+    &#64;Override
+    protected void onStop() {
+        super.onStop();
+        // Unbind from the service
+        if (mBound) {
+            unbindService(mConnection);
+            mBound = false;
+        }
+    }
+
+    /** Called when a button is clicked (the button in the layout file attaches to
+      * this method with the android:onClick attribute) */
+    public void onButtonClick(View v) {
+        if (mBound) {
+            // Call a method from the LocalService.
+            // However, if this call were something that might hang, then this request should
+            // occur in a separate thread to avoid slowing down the activity performance.
+            int num = mService.getRandomNumber();
+            Toast.makeText(this, "number: " + num, Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    /** Defines callbacks for service binding, passed to bindService() */
+    private ServiceConnection mConnection = new ServiceConnection() {
+
+        &#64;Override
+        public void onServiceConnected(ComponentName className,
+                IBinder service) {
+            // We've bound to LocalService, cast the IBinder and get LocalService instance
+            LocalBinder binder = (LocalBinder) service;
+            mService = binder.getService();
+            mBound = true;
+        }
+
+        &#64;Override
+        public void onServiceDisconnected(ComponentName arg0) {
+            mBound = false;
+        }
+    };
+}
+</pre>
+
+<p>O exemplo acima mostra como o cliente vincula um serviço usando uma implementação
+de {@link android.content.ServiceConnection} e o retorno de chamada {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()}. A próxima seção
+fornece mais informações sobre este processo de vinculação ao serviço.</p>
+
+<p class="note"><strong>Observação:</strong> o exemplo acima não desfaz a vinculação explicitamente a partir do serviço,
+mas todos os clientes devem fazê-lo no momento adequado (como quando a atividade pausa).</p>
+
+<p>Para obter mais códigos de exemplo, consulte a classe <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+LocalService.java}</a> e a classe <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceActivities.html">{@code
+LocalServiceActivities.java}</a> em <a href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a>.</p>
+
+
+
+
+
+<h3 id="Messenger">Uso de um mensageiro</h3>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h4>Comparado ao AIDL</h4>
+  <p>Quando é necessário fazer uma IPC, usar o {@link android.os.Messenger} para a interface
+é mais simples do que implementá-la com AIDL, pois o {@link android.os.Messenger} enfileira
+todas as chamadas do serviço, enquanto que uma interface de AIDL pura envia solicitações simultâneas
+ao serviço, que deve então lidar com vários encadeamentos.</p>
+  <p>Para a maioria dos aplicativos, o serviço não precisa realizar vários encadeamentos. Portanto, usar {@link
+android.os.Messenger} permite que o serviço lide com uma chamada por vez. Caso seja importante
+que o serviço realize vários encadeamentos, deve-se usar a <a href="{@docRoot}guide/components/aidl.html">AIDL</a> para definir a interface.</p>
+</div>
+</div>
+
+<p>Caso precise que o serviço comunique-se com processos remotos, é possível usar 
+o {@link android.os.Messenger} para fornecer a interface ao serviço. Esta técnica permite
+estabelecer comunicação entre processos (IPC) sem precisar usar a AIDL.</p>
+
+<p>A seguir há um resumo sobre como usar um {@link android.os.Messenger}:</p>
+
+<ul>
+  <li>O serviço implementa um {@link android.os.Handler} que recebe um retorno de chamada
+para cada chamada de um cliente.</li>
+  <li>O {@link android.os.Handler} é usado para criar um objeto {@link android.os.Messenger}
+(que é uma referência para o {@link android.os.Handler}).</li>
+  <li>O {@link android.os.Messenger} cria um {@link android.os.IBinder} que o serviço
+retorna aos clientes a partir de {@link android.app.Service#onBind onBind()}.</li>
+  <li>Os clientes usam {@link android.os.IBinder} para instanciar o {@link android.os.Messenger}
+(que menciona o {@link android.os.Handler} do serviço), que usam para enviar objetos 
+{@link android.os.Message} para o serviço.</li>
+  <li>O serviço recebe cada {@link android.os.Message} em seu {@link
+android.os.Handler} &mdash; especificamente, no método {@link android.os.Handler#handleMessage
+handleMessage()}.</li>
+</ul>
+
+
+<p>Desta forma, não há "métodos" para o cliente chamar no serviço. Em vez disso, o cliente
+envia "mensagens" (objetos {@link android.os.Message}) que o serviço recebe
+no {@link android.os.Handler}.</p>
+
+<p>Abaixo há um exemplo simples de serviço que usa uma interface {@link android.os.Messenger}:</p>
+
+<pre>
+public class MessengerService extends Service {
+    /** Command to the service to display a message */
+    static final int MSG_SAY_HELLO = 1;
+
+    /**
+     * Handler of incoming messages from clients.
+     */
+    class IncomingHandler extends Handler {
+        &#64;Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_SAY_HELLO:
+                    Toast.makeText(getApplicationContext(), "hello!", Toast.LENGTH_SHORT).show();
+                    break;
+                default:
+                    super.handleMessage(msg);
+            }
+        }
+    }
+
+    /**
+     * Target we publish for clients to send messages to IncomingHandler.
+     */
+    final Messenger mMessenger = new Messenger(new IncomingHandler());
+
+    /**
+     * When binding to the service, we return an interface to our messenger
+     * for sending messages to the service.
+     */
+    &#64;Override
+    public IBinder onBind(Intent intent) {
+        Toast.makeText(getApplicationContext(), "binding", Toast.LENGTH_SHORT).show();
+        return mMessenger.getBinder();
+    }
+}
+</pre>
+
+<p>Observe que o método {@link android.os.Handler#handleMessage handleMessage()}
+no {@link android.os.Handler} é onde o serviço recebe a {@link android.os.Message}
+e decide o que fazer, com base no membro {@link android.os.Message#what}.</p>
+
+<p>Tudo que o cliente precisa fazer é criar um {@link android.os.Messenger} com base no {@link
+android.os.IBinder} retornado pelo serviço e enviar uma mensagem usando {@link
+android.os.Messenger#send send()}. Por exemplo, a seguir há uma atividade simples que vincula-se
+ao serviço e envia a mensagem {@code MSG_SAY_HELLO} a ele:</p>
+
+<pre>
+public class ActivityMessenger extends Activity {
+    /** Messenger for communicating with the service. */
+    Messenger mService = null;
+
+    /** Flag indicating whether we have called bind on the service. */
+    boolean mBound;
+
+    /**
+     * Class for interacting with the main interface of the service.
+     */
+    private ServiceConnection mConnection = new ServiceConnection() {
+        public void onServiceConnected(ComponentName className, IBinder service) {
+            // This is called when the connection with the service has been
+            // established, giving us the object we can use to
+            // interact with the service.  We are communicating with the
+            // service using a Messenger, so here we get a client-side
+            // representation of that from the raw IBinder object.
+            mService = new Messenger(service);
+            mBound = true;
+        }
+
+        public void onServiceDisconnected(ComponentName className) {
+            // This is called when the connection with the service has been
+            // unexpectedly disconnected -- that is, its process crashed.
+            mService = null;
+            mBound = false;
+        }
+    };
+
+    public void sayHello(View v) {
+        if (!mBound) return;
+        // Create and send a message to the service, using a supported 'what' value
+        Message msg = Message.obtain(null, MessengerService.MSG_SAY_HELLO, 0, 0);
+        try {
+            mService.send(msg);
+        } catch (RemoteException e) {
+            e.printStackTrace();
+        }
+    }
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+
+    &#64;Override
+    protected void onStart() {
+        super.onStart();
+        // Bind to the service
+        bindService(new Intent(this, MessengerService.class), mConnection,
+            Context.BIND_AUTO_CREATE);
+    }
+
+    &#64;Override
+    protected void onStop() {
+        super.onStop();
+        // Unbind from the service
+        if (mBound) {
+            unbindService(mConnection);
+            mBound = false;
+        }
+    }
+}
+</pre>
+
+<p>Observe que este exemplo não mostra como o serviço pode responder ao cliente. Caso queira que o serviço responda,
+é necessário criar um {@link android.os.Messenger} no cliente também. Em seguida,
+quando o cliente receber o retorno de chamada de {@link android.content.ServiceConnection#onServiceConnected
+onServiceConnected()}, ele enviará uma {@link android.os.Message} para o serviço que inclui
+o {@link android.os.Messenger} no parâmetro {@link android.os.Message#replyTo}
+do método {@link android.os.Messenger#send send()}.</p>
+
+<p>É possível ver um exemplo de como fornecer mensagens de duas vias nos exemplos <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerService.html">{@code
+MessengerService.java}</a> (serviço) e <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerServiceActivities.html">{@code
+MessengerServiceActivities.java}</a> (cliente).</p>
+
+
+
+
+
+<h2 id="Binding">Vinculação a um serviço</h2>
+
+<p>Um componente de aplicativo (cliente) pode vincular-se a um serviço chamando
+{@link android.content.Context#bindService bindService()}. O sistema Android, em seguida,
+chama o método {@link android.app.Service#onBind
+onBind()} do serviço, que retorna um {@link android.os.IBinder} para interagir com o serviço.</p>
+
+<p>A vinculação é assíncrona. {@link android.content.Context#bindService
+bindService()} retorna imediatamente e <em>não</em> retorna o {@link android.os.IBinder}
+ao cliente. Para receber {@link android.os.IBinder}, o cliente deve criar uma instância de {@link
+android.content.ServiceConnection} e passá-la para {@link android.content.Context#bindService
+bindService()}. O {@link android.content.ServiceConnection} inclui um método de retorno de chamada
+que o sistema chama para entregar o {@link android.os.IBinder}.</p>
+
+<p class="note"><strong>Observação:</strong> somente atividades, serviços e provedores de conteúdo
+podem vincular-se a um serviço &mdash; você <strong>não</strong> pode fazer isto a partir de um receptor de transmissão.</p>
+
+<p>Portanto, para vincular-se a um serviço a partir do cliente, deve-se: </p>
+<ol>
+  <li>Implementar {@link android.content.ServiceConnection}.
+    <p>Sua implementação deve substituir dois métodos de retorno de chamada:</p>
+    <dl>
+      <dt>{@link android.content.ServiceConnection#onServiceConnected onServiceConnected()}</dt>
+        <dd>O sistema chama isto para entregar o {@link android.os.IBinder} retornado
+pelo método {@link android.app.Service#onBind onBind()} do serviço.</dd>
+      <dt>{@link android.content.ServiceConnection#onServiceDisconnected
+onServiceDisconnected()}</dt>
+        <dd>O sistema Android chama isto quando a conexão ao serviço é perdida inesperadamente,
+ como quando o serviço apresenta problemas ou é fechado repentinamente. Isto <em>não</em> é chamado quando
+o cliente desfaz o vínculo.</dd>
+    </dl>
+  </li>
+  <li>Chamar {@link
+android.content.Context#bindService bindService()}, passando a implementação {@link
+android.content.ServiceConnection}. </li>
+  <li>Quando o sistema chamar o método de retorno de chamada {@link android.content.ServiceConnection#onServiceConnected
+onServiceConnected()}, é possível fazer chamadas para o serviço
+usando os métodos definidos pela interface.</li>
+  <li>Para desconectar-se de um serviço, chamar {@link
+android.content.Context#unbindService unbindService()}.
+    <p>Quando um cliente é destruído, o vínculo com o serviço acaba. No entanto, sempre desvincule-se
+ao terminar a interação com o serviço ou quando a atividade pausar para que o serviço
+possa ser encerrado enquanto não estiver em uso (os momentos adequados para vincular ou desvincular
+são abordados mais abaixo).</p>
+  </li>
+</ol>
+
+<p>Por exemplo, o fragmento a seguir conecta o cliente ao serviço criado acima 
+<a href="#Binder">estendendo a classe Binder</a> para que tudo que ele tenha que fazer seja lançar
+o {@link android.os.IBinder} retornado para a classe {@code LocalService} e solicitar a instância de {@code
+LocalService}:</p>
+
+<pre>
+LocalService mService;
+private ServiceConnection mConnection = new ServiceConnection() {
+    // Called when the connection with the service is established
+    public void onServiceConnected(ComponentName className, IBinder service) {
+        // Because we have bound to an explicit
+        // service that is running in our own process, we can
+        // cast its IBinder to a concrete class and directly access it.
+        LocalBinder binder = (LocalBinder) service;
+        mService = binder.getService();
+        mBound = true;
+    }
+
+    // Called when the connection with the service disconnects unexpectedly
+    public void onServiceDisconnected(ComponentName className) {
+        Log.e(TAG, "onServiceDisconnected");
+        mBound = false;
+    }
+};
+</pre>
+
+<p>Com este {@link android.content.ServiceConnection}, o cliente pode vincular-se a um serviço
+passando-o para {@link android.content.Context#bindService bindService()}. Por exemplo:</p>
+
+<pre>
+Intent intent = new Intent(this, LocalService.class);
+bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+</pre>
+
+<ul>
+  <li>O primeiro parâmetro de {@link android.content.Context#bindService bindService()}
+é uma {@link android.content.Intent} que nomeia explicitamente o serviço que será vinculado (apesar de a intenção
+poder ser implícita).</li>
+<li>O segundo parâmetro é o objeto {@link android.content.ServiceConnection}.</li>
+<li>O terceiro parâmetro é um sinalizador que indica as opções de vinculação. Geralmente, ele deve ser {@link
+android.content.Context#BIND_AUTO_CREATE} para criar o serviço se não estiver ativo ainda.
+Outros possíveis valores são {@link android.content.Context#BIND_DEBUG_UNBIND}
+e {@link android.content.Context#BIND_NOT_FOREGROUND}, ou {@code 0} para nada.</li>
+</ul>
+
+
+<h3>Observações adicionais</h3>
+
+<p>A seguir há algumas observações importantes sobre a vinculação com um serviço:</p>
+<ul>
+  <li>Deve-se sempre capturar exceções{@link android.os.DeadObjectException}, que são lançadas
+quando a conexão apresenta erros. Esta é a única exceção lançada por métodos remotos.</li>
+  <li>Objetos são referências contadas em todos os processos. </li>
+  <li>Geralmente, alterna-se entre a vinculação e a desvinculação
+durante os momentos crescentes e decrescentes do ciclo de vida do cliente. Por exemplo:
+    <ul>
+      <li>Caso precise interagir com o serviço enquanto a atividade estiver visível,
+deve-se vincular durante {@link android.app.Activity#onStart onStart()} e desvincular durante {@link
+android.app.Activity#onStop onStop()}.</li>
+      <li>Caso queira que a atividade receba mensagens mesmo quando for interrompida
+em segundo plano, é possível vincular durante {@link android.app.Activity#onCreate onCreate()}
+e desvincular durante {@link android.app.Activity#onDestroy onDestroy()}. Cuidado, pois isto significa que a atividade
+precisa usar o serviço durante todo o tempo de execução (mesmo em segundo plano).
+Portanto, se o serviço estiver em outro processo, o peso do processo será aumentado
+e é mais provável que o sistema elimine-o.</li>
+    </ul>
+    <p class="note"><strong>Observação:</strong> geralmente, <strong>não</strong> se realiza o vínculo e o seu rompimento
+durante o {@link android.app.Activity#onResume onResume()} e o {@link
+android.app.Activity#onPause onPause()} da atividade, pois esses retornos de chamada ocorrem em todas as transições do ciclo de vida
+e deve-se usar menos processamento possível nessas transações. Além disso,
+se várias atividades no aplicativo vincularem-se ao mesmo serviço e houver uma transação entre duas
+dessas atividades, o serviço poderá ser destruído e recriado à medida que a atividade desvincula-se,
+durante a pausa, antes do próximo vínculo, durante a retomada (esta transição de atividade
+para como as atividades coordenam os ciclos de vida é descrita no documento <a href="{@docRoot}guide/components/activities.html#CoordinatingActivities">Atividades</a>
+).</p>
+</ul>
+
+<p>Para obter mais códigos de exemplo mostrando como vincular a um serviço, consulte a classe <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html">{@code
+RemoteService.java}</a> no <a href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a>.</p>
+
+
+
+
+
+<h2 id="Lifecycle">Gerenciamento do ciclo de vida de um serviço vinculado</h2>
+
+<p>Quando um serviço é desvinculado de todos os clientes, o sistema Android o destrói (a não ser que ele
+também tenha sido inicializado com {@link android.app.Service#onStartCommand onStartCommand()}). Portanto, não é necessário
+gerenciar o ciclo de vida do serviço se ele for puramente um serviço vinculado
+&mdash; o sistema Android o gerencia com base nos vínculos com os clientes.</p>
+
+<p>No entanto, se você escolher implementar o método de retorno de chamada {@link android.app.Service#onStartCommand
+onStartCommand()}, interrompa o serviço explicitamente, pois o serviço
+já terá sido considerado como <em>iniciado</em>. Neste caso, o serviço permanece em execução até
+ser interrompido com {@link android.app.Service#stopSelf()} ou outras chamadas de componente {@link
+android.content.Context#stopService stopService()}, independente de vínculo
+com qualquer cliente.</p>
+
+<p>Além disso, se o serviço for iniciado e aceitar vínculos, quando o sistema chamar
+o método {@link android.app.Service#onUnbind onUnbind()}, será possível retornar 
+{@code true} opcionalmente se você quiser receber uma chamada de {@link android.app.Service#onRebind
+onRebind()} na próxima vez em que um cliente vincular-se ao serviço (em vez de receber uma chamada de {@link
+android.app.Service#onBind onBind()}). {@link android.app.Service#onRebind
+onRebind()} retorna vazio, mas o cliente ainda recebe {@link android.os.IBinder}
+no retorno de chamada {@link android.content.ServiceConnection#onServiceConnected onServiceConnected()}.
+Abaixo, a figura 1 ilustra a lógica para este tipo de ciclo de vida.</p>
+
+
+<img src="{@docRoot}images/fundamentals/service_binding_tree_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Figura 1.</strong> O ciclo de vida para um serviço que é iniciado
+e também permite vínculos.</p>
+
+
+<p>Para obter mais informações sobre o ciclo de vida de um serviço iniciado, consulte o documento <a href="{@docRoot}guide/components/services.html#Lifecycle">Serviços</a>.</p>
+
+
+
+
diff --git a/docs/html-intl/intl/pt-br/guide/components/fragments.jd b/docs/html-intl/intl/pt-br/guide/components/fragments.jd
new file mode 100644
index 0000000..7b1acf9e
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/components/fragments.jd
@@ -0,0 +1,812 @@
+page.title=Fragmentos
+parent.title=Atividades
+parent.link=activities.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Neste documento</h2>
+  <ol>
+    <li><a href="#Design">Filosofia do projeto</a></li>
+    <li><a href="#Creating">Criação de um fragmento</a>
+      <ol>
+        <li><a href="#UI">Adição de uma interface do usuário</a></li>
+        <li><a href="#Adding">Adição de um fragmento a uma atividade</a></li>
+      </ol>
+    </li>
+    <li><a href="#Managing">Gerenciamento de fragmentos</a></li>
+    <li><a href="#Transactions">Realização de operações com fragmentos</a></li>
+    <li><a href="#CommunicatingWithActivity">Comunicação com a atividade</a>
+      <ol>
+        <li><a href="#EventCallbacks">Criação de eventos de retornos de chamada para a atividade</a></li>
+        <li><a href="#ActionBar">Adição de itens à barra de ação</a></li>
+      </ol>
+    </li>
+    <li><a href="#Lifecycle">Tratamento do ciclo de vida dos fragmentos</a>
+      <ol>
+        <li><a href="#CoordinatingWithActivity">Coordenação com o ciclo de vida da atividade</a></li>
+      </ol>
+    </li>
+    <li><a href="#Example">Exemplo</a></li>
+  </ol>
+
+  <h2>Classes principais</h2>
+  <ol>
+    <li>{@link android.app.Fragment}</li>
+    <li>{@link android.app.FragmentManager}</li>
+    <li>{@link android.app.FragmentTransaction}</li>
+  </ol>
+  
+  <h2>Veja também</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/fragments/index.html">Construção de uma IU dinâmica com Fragmentos</a></li>
+    <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">Compatibilidade com
+tablets e celulares</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Um {@link android.app.Fragment} representa o comportamento ou uma parte da interface do usuário em um
+{@link android.app.Activity}. É possível combinar vários fragmentos em uma única atividade para compilar
+uma IU de painéis múltiplos e reutilizar um fragmento em diversas atividades. Um fragmento
+é como uma seção modular de uma atividade, que tem o próprio ciclo de vida, recebe os próprios eventos de entrada
+e que pode ser adicionado ou removido com a atividade em execução (uma espécie de "sub-atividade"
+que pode ser reutilizada em diferentes atividades).</p>
+
+<p>Um fragmento deve sempre ser embutido em uma atividade e o ciclo de vida dele
+é diretamente impactado pelo ciclo de vida da atividade do host. Por exemplo, quando a atividade é pausada, todos os fragmentos
+também são e, quando a atividade é destruída, todos os fragmentos também são. No entanto, enquanto
+uma atividade estiver em execução (estiver no <em>estado do ciclo de vida</em> <a href="{@docRoot}guide/components/activities.html#Lifecycle">retomado</a>), é possível
+manipular cada fragmento independentemente, como adicionar ou removê-los. Ao realizar tal operação com fragmentos,
+também é possível adicioná-los a uma pilha de retorno que é gerenciada pela
+atividade &mdash; cada entrada da pilha de retorno na atividade é um registro da operação de fragmento
+que ocorreu. A pilha de retorno permite que o usuário inverta uma operação de fragmento (navegue ao contrário),
+pressionando o botão <em>Voltar</em>.</p>
+
+<p>Ao adicionar um fragmento como parte do layout da atividade, ele viverá em um {@link
+android.view.ViewGroup} dentro da hierarquia de vistas e o fragmento definirá o próprio
+layout da vista.
+É possível inserir um fragmento no layout, declarando-o no arquivo de layout
+da atividade, como um elemento {@code &lt;fragment&gt;} ou a partir do código do aplicativo adicionando-o
+a um {@link android.view.ViewGroup} existente. No entanto, não é necessário que um fragmento faça parte
+do layout da atividade; também é possível usar um fragmento sem a IU como um trabalhador invisível
+da atividade.</p>
+
+<p>Este documento descreve como compilar o aplicativo para usar fragmentos,
+incluindo como os fragmentos podem manter seu estado ao serem adicionados à pilha de retorno da atividade,
+como compartilhar eventos com a atividade e com outros fragmentos da atividade, como contribuir para a barra de ação
+da atividade e muito mais.</p>
+
+
+<h2 id="Design">Filosofia do projeto</h2>
+
+<p>O Android introduziu os fragmentos no Android 3.0 (API de nível 11), principalmente para suportar
+mais projetos de IU flexíveis e dinâmicos em telas grandes, como em tablets. Como a tela de um tablet
+é muito maior que a de um celular, há mais espaço para combinar
+e alternar componentes da IU. Os fragmentos permitem tais projetos sem haver a necessidade de gerenciar
+alterações complexas na hierarquia de vistas. Ao dividir o layout de uma atividade em fragmentos, é possível
+modificar a aparência da atividade em tempo de execução e preservar essas alterações na pilha de retorno,
+que é gerenciada por esta atividade.</p>
+
+<p>Por exemplo, um aplicativo de notícias pode usar um fragmento para exibir uma lista de artigos
+na esquerda e outro fragmento para exibir um artigo na direita &mdash; ambos os fragmentos aparecem
+em uma atividade, lado a lado, e cada fragmento possui o próprio conjunto de métodos de retorno de chamada do ciclo de vida e lidam
+com os próprios eventos de entrada do usuário. Portanto, em vez de usar uma atividade para selecionar um artigo
+e outra atividade para lê-lo, o usuário pode selecionar um artigo e lê-lo por completo dentro
+da mesma atividade, como ilustrado no layout do tablet na figura 1.</p>
+
+<p>Você deve projetar cada fragmento como um componente modular e reutilizável da atividade. Ou seja, como cada fragmento
+define seu próprio layout e comportamento com os próprios retornos de chamada do ciclo de vida, é possível
+incluir um fragmento em várias atividades para poder projetá-lo para reutilização e evitar
+a manipulação direta de um fragmento a partir de outro fragmento. Isto é especialmente importante porque
+um fragmento modular permite alterar as combinações de fragmentos para tamanhos de tela diferentes. Ao projetar o aplicativo
+para ser compatível com tablets e celulares, você poderá reutilizar os fragmentos em diferentes configurações
+de layout para otimizar a experiência do usuário com base no espaço de tela disponível. Por exemplo,
+em um celular, talvez seja necessário separar os fragmentos para fornecer uma IU de painel único
+quando mais de um não se encaixar dentro da mesma atividade.</p>
+
+<img src="{@docRoot}images/fundamentals/fragments.png" alt="" />
+<p class="img-caption"><strong>Figura 1.</strong> Um exemplo de como dois módulos de IU definidos
+pelos fragmentos podem ser combinados em uma atividade de um projeto para tablet mas separados
+em um projeto para celular.</p>
+
+<p>Por exemplo, &mdash; continuando com o exemplo do aplicativo de notícias &mdash; o aplicativo pode embutir
+dois fragmentos na <em>atividade A</em>, quando executado em um dispositivo do tamanho de um tablet. No entanto,
+em uma tela de tamanho de celular, não há espaço suficiente para ambos os fragmentos, então a <em>atividade A</em> inclui
+somente o fragmento da lista de artigos e, quando o usuário seleciona um artigo, ele inicia
+a <em>atividade B</em>, que inclui o segundo fragmento para ler o artigo. Portanto, o aplicativo
+é compatível com tablets e celulares através da reutilização dos fragmentos em combinações diferentes, como ilustrado
+na figura 1.</p>
+
+<p>Para obter mais informações sobre o projeto de aplicativos com diferentes combinações de fragmentos
+para configurações de tela diferentes, consulte o guia <a href="{@docRoot}guide/practices/tablets-and-handsets.html">Compatibilidade com tablets e celulares</a>.</p>
+
+
+
+<h2 id="Creating">Criação de um fragmento</h2>
+
+<div class="figure" style="width:327px">
+<img src="{@docRoot}images/fragment_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Figura 2.</strong> O ciclo de vida de um fragmento
+(enquanto sua atividade está em execução).</p>
+</div>
+
+<p>Para criar um fragmento, é preciso criar uma subclasse de {@link android.app.Fragment} (ou uma respectiva
+subclasse existente). A classe {@link android.app.Fragment} tem um código que é muito parecido
+com o de uma {@link android.app.Activity}. Ele contém métodos de retorno de chamada semelhantes aos de uma atividade,
+como {@link android.app.Fragment#onCreate onCreate()}, {@link android.app.Fragment#onStart onStart()},
+{@link android.app.Fragment#onPause onPause()} e {@link android.app.Fragment#onStop onStop()}. Na verdade,
+caso esteja convertendo um aplicativo do Android existente para usar os fragmentos, basta mover
+o código dos métodos de retorno de chamada da atividade para os respectivos métodos de retorno de chamada
+do fragmento.</p>
+
+<p>Geralmente, deve-se implementar pelo menos os seguintes métodos de ciclo de vida:</p>
+
+<dl>
+  <dt>{@link android.app.Fragment#onCreate onCreate()}</dt>
+  <dd>O sistema o chama ao criar o fragmento. Dentro da implementação,
+deve-se inicializar os componentes essenciais do fragmento que deseja-se reter quando o fragmento
+for pausado ou interrompido e, em seguida, retomado.</dd>
+  <dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
+  <dd>O sistema chama isto quando é o momento de o fragmento desenhar a interface do usuário
+pela primeira vez. Para desenhar uma IU para o fragmento, você deve retornar uma {@link android.view.View}
+deste método, que é a raiz do layout do fragmento. É possível retornar como nulo se o fragmento
+não fornecer uma IU.</dd>
+  <dt>{@link android.app.Activity#onPause onPause()}</dt>
+  <dd>O sistema chama esse método como o primeiro indício de que o usuário está saindo
+do fragmento (embora não seja sempre uma indicação de que o fragmento está sendo destruído). É quando geralmente
+deve-se confirmar qualquer alteração que deva se manter além da sessão atual do usuário (porque
+o usuário pode não retornar).</dd>
+</dl>
+
+<p>A maioria dos aplicativos deve implementar pelo menos três destes métodos para cada fragmento,
+mas há vários outros métodos de retorno de chamada que você deve usar para lidar com diversos estágios
+do ciclo de vida do fragmento. Todos os métodos de retorno de chamada do ciclo de vida são abordados com mais detalhes na seção
+<a href="#Lifecycle">Tratamento do ciclo de vida dos fragmentos</a>.</p>
+
+
+<p>Há também algumas subclasses que você pode querer estender, em vez de a classe {@link
+android.app.Fragment} de base:</p>
+
+<dl>
+  <dt>{@link android.app.DialogFragment}</dt>
+  <dd>Exibe uma caixa de diálogo flutuante. Usar esta classe para criar uma caixa de diálogo é uma boa alternativa
+para usar métodos auxiliares das caixas de diálogo na classe {@link android.app.Activity},
+pois é possível incorporar uma caixa de diálogo de fragmento na pilha de retorno dos fragmentos gerenciados pela atividade,
+permitindo que o usuário retorne a um fragmento dispensado.</dd>
+
+  <dt>{@link android.app.ListFragment}</dt>
+  <dd>Exibe uma lista de itens que são gerenciados por um adaptador (como um {@link
+android.widget.SimpleCursorAdapter}), semelhante à {@link android.app.ListActivity}. Ele fornece vários métodos
+para gerenciar uma vista de lista, como o retorno de chamada {@link
+android.app.ListFragment#onListItemClick(ListView,View,int,long) onListItemClick()}
+para lidar com eventos de clique.</dd>
+
+  <dt>{@link android.preference.PreferenceFragment}</dt>
+  <dd>Exibe uma hierarquia de objetos {@link android.preference.Preference} como uma lista,
+parecido com {@link android.preference.PreferenceActivity}. Isto é útil ao criar uma atividade
+de "configurações" para o aplicativo.</dd>
+</dl>
+
+
+<h3 id="UI">Adição de uma interface do usuário</h3>
+
+<p>Um fragmento é geralmente usado como parte de uma interface do usuário da atividade e contribui
+para a atividade com seu próprio layout.</p>
+
+<p>Para fornecer um layout para um fragmento, você deve implementar o método de retorno de chamada {@link
+android.app.Fragment#onCreateView onCreateView()}, que o sistema Android chama
+no momento em que o fragmento deve desenhar o layout. A implementação deste método deve retornar
+uma {@link android.view.View}, que é a raiz do layout do fragmento.</p>
+
+<p class="note"><strong>Observação:</strong> se o fragmento for uma subclasse de {@link
+android.app.ListFragment}, a implementação padrão retornará uma {@link android.widget.ListView}
+de {@link android.app.Fragment#onCreateView onCreateView()}, então não será necessário implementá-lo.</p>
+
+<p>Para retornar um layout de {@link
+android.app.Fragment#onCreateView onCreateView()}, é possível inflá-lo a partir de um <a href="{@docRoot}guide/topics/resources/layout-resource.html">recurso de layout</a> definido no XML. Para ajudar
+a fazer isto, o {@link android.app.Fragment#onCreateView onCreateView()} fornece
+um objeto {@link android.view.LayoutInflater}.</p>
+
+<p>Por exemplo, a seguir há uma subclasse de {@link android.app.Fragment} que carrega um layout
+do arquivo {@code example_fragment.xml}:</p>
+
+<pre>
+public static class ExampleFragment extends Fragment {
+    &#64;Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.example_fragment, container, false);
+    }
+}
+</pre>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>Criação de um layout</h3>
+  <p>No exemplo acima, {@code R.layout.example_fragment} é uma referência para um recurso de layout
+chamado {@code example_fragment.xml}, salvo nos recursos do aplicativo. Para obter informações sobre
+como criar um layout no XML, consulte a documentação <a href="{@docRoot}guide/topics/ui/index.html">Interface do usuário</a>
+.</p>
+</div>
+</div>
+
+<p>O parâmetro {@code container} passado para {@link android.app.Fragment#onCreateView
+onCreateView()} é o pai de {@link android.view.ViewGroup} (do layout da atividade)
+em que o layout do fragmento
+será inserido. O parâmetro {@code savedInstanceState} é um {@link android.os.Bundle}
+que fornece dados sobre a instância anterior do fragmento, se o fragmento estiver sendo retomado
+(a restauração de estado é abordada mais detalhadamente na seção <a href="#Lifecycle">Tratamento do ciclo
+de vida dos fragmentos</a>).</p>
+
+<p>O método {@link android.view.LayoutInflater#inflate(int,ViewGroup,boolean) inflate()}
+usa três argumentos:</p>
+<ul>
+  <li>O ID de recurso do layout que você quer inflar.</li>
+  <li>O {@link android.view.ViewGroup} que será pai do layout inflado. Passar o {@code
+container} é importante para que o sistema aplique os parâmetros de layout à vista raiz
+do layout inflado, especificado pela vista pai em que está ocorrendo.</li>
+  <li>Um booleano que indica se o layout inflado deve ser anexado a {@link
+android.view.ViewGroup} (o segundo parâmetro) durante a inflação (neste caso,
+isto é falso, pois o sistema já está inserindo o layout inflado no {@code
+container} &mdash; retornar como verdadeiro criaria um grupo de vistas redundante no layout final).</li>
+</ul>
+
+<p>Este é o modo de criar um fragmento que fornece um layout. A seguir,
+é preciso adicionar o fragmento à atividade.</p>
+
+
+
+<h3 id="Adding">Adição de um fragmento a uma atividade</h3>
+
+<p>Geralmente, um fragmento contribui com a atividade do host com uma parte da IU, que é embutida como parte
+da hierarquia de vistas geral da atividade. Há duas formas de adicionar um fragmento ao layout
+da atividade:</p>
+
+<ul>
+  <li><b>Declarar o fragmento dentro do arquivo de layout da atividade.</b>
+<p>Neste caso,
+é possível especificar as propriedades do layout para o fragmento como se fosse uma vista. Por exemplo, a seguir há o arquivo de layout
+para uma atividade com dois fragmentos:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"&gt;
+    &lt;fragment android:name="com.example.news.ArticleListFragment"
+            android:id="@+id/list"
+            android:layout_weight="1"
+            android:layout_width="0dp"
+            android:layout_height="match_parent" /&gt;
+    &lt;fragment android:name="com.example.news.ArticleReaderFragment"
+            android:id="@+id/viewer"
+            android:layout_weight="2"
+            android:layout_width="0dp"
+            android:layout_height="match_parent" /&gt;
+&lt;/LinearLayout&gt;
+</pre>
+  <p>O atributo {@code android:name} em {@code &lt;fragment&gt;} especifica a classe {@link
+android.app.Fragment} a instanciar no layout.</p>
+
+<p>Quando o sistema cria este layout de atividade, ele instancia cada fragmento especificado
+no layout e chama o método {@link android.app.Fragment#onCreateView onCreateView()} para cada um
+para recuperar o layout de cada fragmento. O sistema insere a {@link android.view.View} retornada
+pelo fragmento diretamente no lugar do elemento {@code &lt;fragment&gt;}.</p>
+
+<div class="note">
+  <p><strong>Observação:</strong> cada fragmento requer um identificador único
+que o sistema possa usar para restaurá-lo se a atividade for reiniciada (e que possa ser usado
+para capturar o fragmento para realizar operações, como a remoção). Há três maneiras de fornecer
+um ID para um fragmento:</p>
+  <ul>
+    <li>Fornecer o atributo {@code android:id} com um ID único.</li>
+    <li>Fornecer o atributo {@code android:tag} com uma string única.</li>
+    <li>Caso não forneça nenhuma das alternativas anteriores, o sistema usará o ID da vista
+do recipiente.</li>
+  </ul>
+</div>
+  </li>
+
+  <li><b>Ou adicionar programaticamente o fragmento a um {@link android.view.ViewGroup} existente.</b>
+<p>A qualquer momento, enquanto a atividade está em execução, é possível adicionar fragmentos ao layout da atividade. Você precisa
+apenas especificar um {@link
+android.view.ViewGroup} para posicionar o fragmento.</p>
+  <p>Para realizar operações de fragmentos na atividade (como adicionar, remover ou substituir
+um fragmento), você deve usar APIs de {@link android.app.FragmentTransaction}. É possível adquirir
+uma instância de {@link android.app.FragmentTransaction} da {@link android.app.Activity} desta maneira:</p>
+
+<pre>
+FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()}
+FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
+</pre>
+
+<p>É possível adicionar um fragmento usando o método {@link
+android.app.FragmentTransaction#add(int,Fragment) add()}, especificando o fragmento que será adicionado
+e a vista em que será inserido. Por exemplo:</p>
+
+<pre>
+ExampleFragment fragment = new ExampleFragment();
+fragmentTransaction.add(R.id.fragment_container, fragment);
+fragmentTransaction.commit();
+</pre>
+
+  <p>O primeiro argumento passado para {@link android.app.FragmentTransaction#add(int,Fragment) add()}
+é {@link android.view.ViewGroup}, onde o fragmento deve ser colocado, especificado
+pelo ID de recurso e o segundo parâmetro é o fragmento a ser adicionado.</p>
+  <p>Ao realizar as alterações
+com {@link android.app.FragmentTransaction},
+deve-se chamar{@link android.app.FragmentTransaction#commit} para que as alterações entrem em vigor.</p>
+  </li>
+</ul>
+
+
+<h4 id="AddingWithoutUI">Adição de um fragmento sem IU</h4>
+
+<p>O exemplo acima mostra como adicionar um fragmento à atividade para fornecer uma IU. No entanto,
+é possível também usar um fragmento para fornecer o comportamento de segundo plano para a atividade sem apresentar
+IU adicional.</p>
+
+<p>Para adicionar um fragmento sem uma IU, adicione o fragmento da atividade usando {@link
+android.app.FragmentTransaction#add(Fragment,String)} (fornecendo uma "tag" de string única
+para o fragmento, em vez de um ID de vista). Isto adiciona o fragmento, mas, como ele não está associado
+a uma vista no layout da atividade, não recebe uma chamada de {@link
+android.app.Fragment#onCreateView onCreateView()}. Portanto, não é necessário implementar este método.</p>
+
+<p>Fornecer uma tag de string para o fragmento não é algo estrito para fragmentos que não sejam de IU &mdash; é possível também
+fornecer tags de string para fragmentos que possuam uma IU &mdash; mas, se o fragmento não possuir uma IU,
+a tag de string é a única maneira de identificá-lo. Caso queira obter o fragmento da atividade posteriormente,
+você precisará usar {@link android.app.FragmentManager#findFragmentByTag
+findFragmentByTag()}.</p>
+
+<p>Para ver uma atividade de exemplo que usa um fragmento como um trabalhador de segundo plano, sem uma IU, consulte o exemplo de {@code
+FragmentRetainInstance.java}, incluso nos exemplos do SDK (disponibilizados pelo 
+Android SDK Manager) e localizado no sistema como 
+<code>&lt;sdk_root&gt;/APIDemos/app/src/main/java/com/example/android/apis/app/FragmentRetainInstance.java</code>.</p>
+
+
+
+<h2 id="Managing">Gerenciamento de fragmentos</h2>
+
+<p>Para gerenciar os fragmentos na atividade, você precisa usar {@link android.app.FragmentManager}. Para adquiri-lo,
+chame {@link android.app.Activity#getFragmentManager()} a partir da atividade.</p>
+
+<p>Algumas das coisas que você pode fazer com {@link android.app.FragmentManager} incluem:</p>
+
+<ul>
+  <li>Adquirir fragmentos existentes na atividade, com {@link
+android.app.FragmentManager#findFragmentById findFragmentById()} (para fragmentos que forneçam uma IU
+no layout da atividade) ou {@link android.app.FragmentManager#findFragmentByTag
+findFragmentByTag()} (para fragmentos que forneçam ou não uma IU).</li> 
+  <li>Retire os fragmentos da pilha de retorno com {@link
+android.app.FragmentManager#popBackStack()} (simulando um comando de <em>Voltar</em> do usuário).</li>
+  <li>Registre uma escuta para as alterações na pilha de retorno com {@link
+android.app.FragmentManager#addOnBackStackChangedListener addOnBackStackChangedListener()}.</li>
+</ul>
+
+<p>Para obter mais informações sobre esses e outros métodos, consulte a documentação da classe {@link
+android.app.FragmentManager}.</p>
+
+<p>Como demonstrado na seção anterior, é possível usar o {@link android.app.FragmentManager}
+para abrir uma {@link android.app.FragmentTransaction}, que permite realizar operações,
+como adicionar e remover fragmentos.</p>
+
+
+<h2 id="Transactions">Realização de operações com fragmentos</h2>
+
+<p>Um grande recurso fornecido por fragmentos em atividades é a possibilidade de adicionar, remover, substituir
+e realizar outras ações com eles em resposta à interação do usuário. Cada conjunto de alterações que forem realizadas
+na atividade é chamado de operação e podem ser feitas usando APIs em {@link
+android.app.FragmentTransaction}. Também é possível salvar cada operação em uma pilha de retorno gerenciada pela atividade,
+permitindo que o usuário navegue inversamente por meio de alterações de fragmento (semelhante à navegação
+inversa por meio de atividades).</p>
+
+<p>É possível adquirir uma instância de {@link android.app.FragmentTransaction} a partir do {@link
+android.app.FragmentManager} da seguinte forma:</p>
+
+<pre>
+FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()};
+FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
+</pre>
+
+<p>Cada operação é um conjunto de alterações que você deseja realizar ao mesmo tempo. É possível definir
+todas as alterações desejadas para uma operação usando métodos como {@link
+android.app.FragmentTransaction#add add()}, {@link android.app.FragmentTransaction#remove remove()}
+e {@link android.app.FragmentTransaction#replace replace()}. Em seguida, para aplicar a operação
+à atividade, deve-se chamar {@link android.app.FragmentTransaction#commit()}.</p>
+</dl>
+
+<p>Antes de chamar {@link
+android.app.FragmentTransaction#commit()}, no entanto, você pode querer chamar {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()} para adicionar a operação
+a uma pilha de retorno de operações de fragmentos. A pilha de retorno é gerenciada pela atividade
+e permite que o usuário retorne ao estado anterior do fragmento, ao pressionar o botão <em>Voltar</em>.</p>
+
+<p>Por exemplo, a seguir é apresentado o modo de substituir um fragmento por outro e preservar
+o estado anterior da pilha de retorno:</p>
+
+<pre>
+// Create new fragment and transaction
+Fragment newFragment = new ExampleFragment();
+FragmentTransaction transaction = getFragmentManager().beginTransaction();
+
+// Replace whatever is in the fragment_container view with this fragment,
+// and add the transaction to the back stack
+transaction.replace(R.id.fragment_container, newFragment);
+transaction.addToBackStack(null);
+
+// Commit the transaction
+transaction.commit();
+</pre>
+
+<p>Neste exemplo, {@code newFragment} substitui qualquer fragmento (se houver) que estiver
+no recipiente do layout identificado pelo ID {@code R.id.fragment_container}. Ao chamar {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()}, a operação de substituição
+é salva na pilha de retorno para que o usuário possa reverter a operação
+e voltar ao fragmento anterior pressionando o botão <em>Voltar</em>.</p>
+
+<p>Se você adicionar várias alterações à operação (como outro {@link
+android.app.FragmentTransaction#add add()} ou {@link android.app.FragmentTransaction#remove
+remove()}) e chamar {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()}, todas as alterações aplicadas
+antes de chamar {@link android.app.FragmentTransaction#commit commit()} serão adicionadas
+à pilha de retorno como uma única operação e o botão <em>Voltar</em> reverterá todas elas juntas.</p>
+
+<p>A ordem em que você adicionar as alterações em {@link android.app.FragmentTransaction} não importa,
+exceto que:</p>
+<ul>
+  <li>Você deve chamar {@link android.app.FragmentTransaction#commit()} por último</li>
+  <li>Caso esteja adicionando vários fragmentos ao mesmo recipiente, a ordem em que
+adicioná-los determina a ordem em que eles aparecerão na hierarquia de vistas</li>
+</ul>
+
+<p>Caso você não chame {@link android.app.FragmentTransaction#addToBackStack(String)
+addToBackStack()} ao realizar uma operação que remove um fragmento, este fragmento
+será destruído quando a operação for realizada e o usuário não poderá navegar de volta a ele. Considerando que,
+se você não chamar {@link android.app.FragmentTransaction#addToBackStack(String) addToBackStack()}
+ao remover um fragmento, o fragmento será <em>interrompido</em> e será retomado se o usuário
+navegar de volta.</p>
+
+<p class="note"><strong>Dica:</strong> para cada operação de fragmento, é possível aplicar uma animação
+de transição, chamando {@link android.app.FragmentTransaction#setTransition setTransition()}
+antes da realização.</p>
+
+<p>Chamar {@link android.app.FragmentTransaction#commit()} não realiza a operação
+imediatamente. Em vez disso, o parâmetro agenda a execução no encadeamento da IU da atividade (o encadeamento “main”, ou principal)
+assim que possível. Se necessário, no entanto, é possível chamar {@link
+android.app.FragmentManager#executePendingTransactions()} a partir do encadeamento da IU para executar imediatamente
+as operações enviadas por {@link android.app.FragmentTransaction#commit()}. Tal medida, geralmente,
+não é necessária, a não ser que a operação represente uma dependência para trabalhos em outros encadeamentos.</p>
+
+<p class="caution"><strong>Atenção:</strong> É possível realizar uma operação usando {@link
+android.app.FragmentTransaction#commit commit()} somente antes da atividade <a href="{@docRoot}guide/components/activities.html#SavingActivityState">salvar
+seu estado</a> (quando o usuário deixa a atividade). Caso tente efetivas as alterações após este ponto,
+uma exceção será lançada. Isto acontece porque o estado após a efetivação pode ser perdido se a atividade
+precisar ser restaurada. Para situações em que não haja problema em perder a efetivação, use {@link
+android.app.FragmentTransaction#commitAllowingStateLoss()}.</p>
+
+
+
+
+<h2 id="CommunicatingWithActivity">Comunicação com a atividade</h2>
+
+<p>Apesar de {@link android.app.Fragment} ser implementado como um objeto independente
+de uma {@link android.app.Activity} e poder ser usado dentro de várias atividades, uma dada instância
+de um fragmento é diretamente vinculada à atividade que o contém.</p>
+
+<p>Especificamente, o fragmento pode acessar a instância {@link android.app.Activity} com {@link
+android.app.Fragment#getActivity()} e realizar facilmente tarefas como encontrar uma vista
+no layout da atividade:</p>
+
+<pre>
+View listView = {@link android.app.Fragment#getActivity()}.{@link android.app.Activity#findViewById findViewById}(R.id.list);
+</pre>
+
+<p>Do mesmo modo, a atividade pode chamar métodos no fragmento adquirindo uma referência
+para o {@link android.app.Fragment} a partir do {@link android.app.FragmentManager} usando {@link
+android.app.FragmentManager#findFragmentById findFragmentById()} ou {@link
+android.app.FragmentManager#findFragmentByTag findFragmentByTag()}. Por exemplo:</p>
+
+<pre>
+ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
+</pre>
+
+
+<h3 id="EventCallbacks">Criação de retornos de chamada de evento para a atividade</h3>
+
+<p>Em alguns casos, um fragmento que compartilhe eventos com a atividade pode ser necessário. Uma boa maneira de fazer isto
+é definir uma interface de retorno de chamada dentro do fragmento e solicitar que a atividade do host
+implemente-a. Quando a atividade recebe um retorno de chamada por meio da interface, ela pode compartilhar as informações
+com outros fragmentos no layout conforme necessário.</p>
+
+<p>Por exemplo, se um aplicativo de notícias em uma atividade tiver dois fragmentos &mdash; um para exibir uma lista
+de artigos (fragmento A) e outro para exibir um artigo (fragmento B) &mdash; então o fragmento A
+deve informar à atividade quando um item de lista é selecionado para que ela possa instruir o fragmento B a exibir o artigo. Neste caso,
+ a interface {@code OnArticleSelectedListener} é declarada dentro do fragmento A:</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    ...
+    // Container Activity must implement this interface
+    public interface OnArticleSelectedListener {
+        public void onArticleSelected(Uri articleUri);
+    }
+    ...
+}
+</pre>
+
+<p>Portanto, a atividade que hospeda o fragmento implementa a interface {@code OnArticleSelectedListener}
+e suspende
+{@code onArticleSelected()} para notificar o fragmento B do evento do fragmento A. Para garantir
+que a atividade do host implemente esta interface, o método de retorno de chamada de {@link
+android.app.Fragment#onAttach onAttach()} do fragmento A (que o sistema chama ao adicionar
+o fragmento à atividade) instanciará {@code OnArticleSelectedListener}
+lançando a {@link android.app.Activity}, que é passada para {@link android.app.Fragment#onAttach
+onAttach()}:</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    OnArticleSelectedListener mListener;
+    ...
+    &#64;Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        try {
+            mListener = (OnArticleSelectedListener) activity;
+        } catch (ClassCastException e) {
+            throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener");
+        }
+    }
+    ...
+}
+</pre>
+
+<p>Se a atividade não implementar a interface, o fragmento lançará
+{@link java.lang.ClassCastException}.
+Se for bem-sucedida, o membro {@code mListener} reterá uma referência da implementação da atividade
+de {@code OnArticleSelectedListener}, para que o fragmento A possa compartilhar os eventos com a atividade
+chamando métodos definidos pela interface {@code OnArticleSelectedListener}. Por exemplo, se o fragmento A
+for uma extensão de {@link android.app.ListFragment}, sempre
+que o usuário clicar em um item de lista, o sistema chamará {@link android.app.ListFragment#onListItemClick
+onListItemClick()} no fragmento que, em seguida, chamará {@code onArticleSelected()} para compartilhar
+o evento com a atividade:</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    OnArticleSelectedListener mListener;
+    ...
+    &#64;Override
+    public void onListItemClick(ListView l, View v, int position, long id) {
+        // Append the clicked item's row ID with the content provider Uri
+        Uri noteUri = ContentUris.{@link android.content.ContentUris#withAppendedId withAppendedId}(ArticleColumns.CONTENT_URI, id);
+        // Send the event and Uri to the host activity
+        mListener.onArticleSelected(noteUri);
+    }
+    ...
+}
+</pre>
+
+<p>O parâmetro {@code id} passado para {@link
+android.app.ListFragment#onListItemClick onListItemClick()} é o ID da linha do item clicado
+que a atividade (ou outro fragmento) usa para resgatar o artigo do {@link
+android.content.ContentProvider} do aplicativo.</p>
+
+<p><!--To see a complete implementation of this kind of callback interface, see the <a
+href="{@docRoot}resources/samples/NotePad/index.html">NotePad sample</a>. -->Mais informações sobre
+como usar o provedor de conteúdo estão disponíveis na documentação <a href="{@docRoot}guide/topics/providers/content-providers.html">Provedores de conteúdo</a>.</p>
+
+
+
+<h3 id="ActionBar">Adição de itens à barra de ação</h3>
+
+<p>Os fragmentos podem contribuir com itens de menu para o <a href="{@docRoot}guide/topics/ui/menus.html#options-menu">menu de opções</a> da atividade (e, consequentemente, para a <a href="{@docRoot}guide/topics/ui/actionbar.html">barra de ação</a>) implementando 
+{@link android.app.Fragment#onCreateOptionsMenu(Menu,MenuInflater) onCreateOptionsMenu()}. Para que este método
+receba chamadas, no entanto, você deve chamar {@link
+android.app.Fragment#setHasOptionsMenu(boolean) setHasOptionsMenu()} durante {@link
+android.app.Fragment#onCreate(Bundle) onCreate()} para indicar que o fragmento
+gostaria de adicionar itens ao menu de opções (caso contrário, o fragmento não receberá uma chamada
+para {@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()}).</p>
+
+<p>Quaisquer itens adicionados ao menu de opções do fragmento são anexados
+aos itens de menu existentes. O fragmento também recebe retornos de chamada para {@link
+android.app.Fragment#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} quando um item de menu
+é selecionado.</p>
+
+<p>Também é possível registrar uma vista no layout do fragmento para fornecer um menu de contexto chamando {@link
+android.app.Fragment#registerForContextMenu(View) registerForContextMenu()}. Quando o usuário
+abre o menu de contexto, o fragmento recebe uma chamada de {@link
+android.app.Fragment#onCreateContextMenu(ContextMenu,View,ContextMenu.ContextMenuInfo)
+onCreateContextMenu()}. Quando o usuário seleciona um item, o fragmento recebe uma chamada de {@link
+android.app.Fragment#onContextItemSelected(MenuItem) onContextItemSelected()}.</p>
+
+<p class="note"><strong>Observação:</strong> apesar de o fragmento receber um retorno de chamada selecionado no item
+para cada item de menu que adiciona, a atividade é a primeira a receber o respectivo retorno de chamada quando o usuário
+seleciona um item de menu. Se a implementação da atividade do retorno de chamada selecionado no item não
+lida com o item selecionado, o evento é passado para o retorno de chamada do fragmento. Isto é verdadeiro
+para o menu de opções e os menus de contexto.</p>
+
+<p>Para obter mais informações sobre menus, consulte os guias do desenvolvedor <a href="{@docRoot}guide/topics/ui/menus.html">Menus</a> e <a href="{@docRoot}guide/topics/ui/actionbar.html">Barra de ação</a>.</p>
+
+
+
+
+<h2 id="Lifecycle">Tratamento do ciclo de vida dos fragmentos</h2>
+
+<div class="figure" style="width:350px">
+<img src="{@docRoot}images/activity_fragment_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Figura 3.</strong> O efeito do ciclo de vida da atividade no ciclo de vida
+do fragmento.</p>
+</div>
+
+<p>Gerenciar o ciclo de vida de um fragmento é muito parecido com gerenciar o ciclo de vida de uma atividade. Como uma atividade,
+um fragmento pode existir em três estados:</p>
+
+<dl>
+  <dt><i>Retomado</i></dt>
+    <dd>O fragmento é visível na atividade em execução.</dd>
+
+  <dt><i>Pausado</i></dt>
+    <dd>Outra atividade está em primeiro plano, mas a atividade em que este fragmento
+vive ainda está visível (a atividade de primeiro plano é parcialmente transparente
+ou não cobre a tela inteira).</dd>
+
+  <dt><i>Interrompido</i></dt>
+    <dd>O fragmento não é visível. A atividade do host foi interrompida
+ou o fragmento foi removido da atividade mas adicionado à pilha de retorno. Um fragmento interrompido
+ainda está vivo (todas as informações do membro e de estado estão retidas no sistema). No entanto,
+não está mais visível e será eliminado se a atividade também for.</dd>
+</dl>
+
+<p>Além disso, como uma atividade, é possível reter o estado de um fragmento usando um {@link
+android.os.Bundle}, caso o processo da atividade seja eliminado e você precise restaurar
+o estado do fragmento quando a atividade for recriada. É possível salvar o estado durante o retorno de chamada {@link
+android.app.Fragment#onSaveInstanceState onSaveInstanceState()} do fragmento e restaurá-lo
+durante {@link android.app.Fragment#onCreate onCreate()}, {@link
+android.app.Fragment#onCreateView onCreateView()} ou {@link
+android.app.Fragment#onActivityCreated onActivityCreated()}. Para obter mais informações sobre
+como salvar o estado, consulte a documentação <a href="{@docRoot}guide/components/activities.html#SavingActivityState">Atividades</a>
+.</p>
+
+<p>A diferença mais significante entre o ciclo de vida de uma atividade e de um fragmento
+é o armazenamento em suas respectivas pilhas de retorno. Por padrão, uma atividade é colocada de volta na pilha de retorno de atividades,
+que é gerenciada pelo sistema, quando interrompida (para que o usuário possa navegar
+a ela com o botão <em>Voltar</em>, como discutido em <a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tarefas e pilha de retorno</a>).
+No entanto, um fragmento é posicionado em uma pilha de retorno gerenciada pela atividade do host somente
+ao solicitar explicitamente que a instância seja salva chamando {@link
+android.app.FragmentTransaction#addToBackStack(String) addToBackStack()} durante uma operação
+que remove o fragmento.</p>
+
+<p>Caso contrário, gerenciar o ciclo de vida do fragmento é muito semelhante a gerenciar
+o ciclo de vida da atividade. Portanto, as mesmas práticas para <a href="{@docRoot}guide/components/activities.html#Lifecycle">gerenciar o ciclo de vida
+da atividade</a> aplicam-se aos fragmentos. O que você também precisa entender, no entanto, é como a vida
+da atividade afeta a vida do fragmento.</p>
+
+<p class="caution"><strong>Atenção:</strong> caso precise de um objeto {@link android.content.Context}
+dentro do {@link android.app.Fragment}, é possível chamar {@link android.app.Fragment#getActivity()}.
+No entanto, tome cuidado para chamar {@link android.app.Fragment#getActivity()} somente quando o fragmento
+estiver anexado a uma atividade. Quando o fragmento ainda não estiver anexado, ou tiver sido desvinculado durante o fim
+do seu ciclo de vida, {@link android.app.Fragment#getActivity()} retornará como nulo.</p>
+
+
+<h3 id="CoordinatingWithActivity">Coordenação do ciclo de vida da atividade</h3>
+
+<p>O ciclo de vida da atividade em que o fragmento vive afeta diretamente o ciclo de vida
+do fragmento, da mesma forma que um retorno de chamada de cada ciclo de vida da atividade resulta em um retorno de chamada semelhante
+de cada fragmento. Por exemplo, quando a atividade receber {@link android.app.Activity#onPause},
+cada fragmento na atividade receberá {@link android.app.Fragment#onPause}.</p>
+
+<p>Os fragmentos têm alguns retornos de chamada do ciclo de vida extras. No entanto, isto trata da interação única
+com a atividade para realizar ações como compilar e destruir a IU do fragmento. Esses
+métodos adicionais de retorno de chamada são:</p>
+
+<dl>
+  <dt>{@link android.app.Fragment#onAttach onAttach()}</dt>
+    <dd>Chamado quando o fragmento tiver sido associado à atividade ({@link
+android.app.Activity} é passado aqui).</dd>
+  <dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
+    <dd>Chamado para criar a hierarquia de vistas associada ao fragmento.</dd>
+  <dt>{@link android.app.Fragment#onActivityCreated onActivityCreated()}</dt>
+    <dd>Chamado quando o método {@link android.app.Activity#onCreate
+onCreate()} da atividade tiver retornado.</dd>
+  <dt>{@link android.app.Fragment#onDestroyView onDestroyView()}</dt>
+    <dd>Chamado quando a hierarquia de vistas associada ao fragmento estiver sendo removida.</dd>
+  <dt>{@link android.app.Fragment#onDetach onDetach()}</dt>
+    <dd>Chamado quando o fragmento estiver sendo desassociado da atividade.</dd>
+</dl>
+
+<p>O fluxo do ciclo de vida do fragmento, afetado pela atividade do host, como ilustrado
+pela figura 3. Nesta figura, é possível ver como cada estado sucessivo da atividade determina
+qual método de retorno de chamada um fragmento pode receber. Por exemplo, quando a atividade recebe o retorno de chamada {@link
+android.app.Activity#onCreate onCreate()}, um fragmento na atividade recebe nada mais
+do que o retorno de chamada {@link android.app.Fragment#onActivityCreated onActivityCreated()}.</p>
+
+<p>Quando a atividade atinge o estado retomado, é possível adicionar e remover fragmentos
+dela livremente. Portanto, somente quando a atividade estiver no estado retomado, o ciclo de vida
+de um fragmento poderá alterar-se de forma independente.</p>
+
+<p>No entanto, quando a atividade deixa o estado retomado, o fragmento é novamente forçado
+a passar pelo ciclo de vida pela atividade.</p>
+
+
+
+
+<h2 id="Example">Exemplo</h2>
+
+<p>Para juntar tudo que foi discutido neste documento, abaixo há um exemplo de uma atividade
+que usa dois fragmentos para criar um layout de dois painéis. A atividade abaixo inclui um fragmento
+para exibir uma lista de títulos de peças de Shakespeare e outra para exibir um resumo da peça,
+quando selecionada na lista. Ela também determina como fornecer diferentes configurações de fragmentos,
+com base na configuração da tela.</p>
+
+<p class="note"><strong>Observação:</strong> O código fonte completo desta atividade está disponível em
+<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.html">{@code
+FragmentLayout.java}</a>.</p>
+
+<p>A atividade principal aplica-se de maneira comum, durante {@link
+android.app.Activity#onCreate onCreate()}:</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java main}
+
+<p>O layout aplicado é {@code fragment_layout.xml}:</p>
+
+{@sample development/samples/ApiDemos/res/layout-land/fragment_layout.xml layout}
+
+<p>Usando este layout, o sistema instancia {@code TitlesFragment} (que lista os títulos
+das peças) assim que a atividade carrega o layout, enquanto que {@link android.widget.FrameLayout}
+(onde o fragmento para exibir o resumo da peça aparecerá) consome o espaço do lado direito da tela,
+ mas primeiramente permanece vazio. Como verá abaixo, ele não estará visível até que o usuário selecione um item
+na lista em que um fragmento esteja posicionado no {@link android.widget.FrameLayout}.</p>
+
+<p>No entanto, nem todas as configurações de tela são grandes o suficiente para exibir a lista
+de peças e o resumo, lado a lado. Portanto, o layout acima é usado somente para configuração
+de tela de paisagem, salvando-o em {@code res/layout-land/fragment_layout.xml}.</p>
+
+<p>Por isso, quando a tela está na orientação de retrato, o sistema aplica o seguinte layout,
+que é salvo em {@code res/layout/fragment_layout.xml}:</p>
+
+{@sample development/samples/ApiDemos/res/layout/fragment_layout.xml layout}
+
+<p>Este layout inclui somente {@code TitlesFragment}. Isto significa que, quando o dispositivo
+está na orientação de retrato, somente a lista de título das peças está disponível. Portanto, quando o usuário clicar
+em um item da lista nesta configuração, o aplicativo iniciará uma nova atividade para exibir o resumo,
+em vez de carregar um segundo fragmento.</p>
+
+<p>A seguir, é possível ver como isto é realizado com classes de fragmento. Primeiro, {@code
+TitlesFragment}, que exibe a lista de peças de Shakespeare. Este fragmento estende {@link
+android.app.ListFragment} e confia nele para lidar com grande parte do trabalho da vista de lista.</p>
+
+<p>Enquanto inspeciona este código, observe que há dois possíveis comportamentos quando um usuário
+clica em um item de lista: dependendo de qual dos dois layouts está ativo, ele pode criar e exibir
+um novo fragmento para exibir os detalhes na mesma atividade (adicionando o fragmento {@link
+android.widget.FrameLayout}), ou iniciar uma nova atividade (onde o fragmento possa ser exibido).</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java titles}
+
+<p>O segundo fragmento, {@code DetailsFragment}, exibe o resumo da peça para o item selecionado
+na lista de {@code TitlesFragment}:</p>
+ 
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
+
+<p>Uma nova chamada da classe {@code TitlesFragment}, ou seja, se o usuário clicar em um item de lista
+e o layout original <em>não</em> incluir a vista {@code R.id.details} (a que
+{@code DetailsFragment} pertence), o aplicativo iniciará a atividade {@code DetailsActivity}
+para exibir o conteúdo do item.</p>
+
+<p>A seguir há {@code DetailsActivity}, que simplesmente embute {@code DetailsFragment} para exibir
+o resumo da peça selecionada quando a tela está na orientação de retrato:</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
+details_activity}
+ 
+<p>Observe que esta atividade finaliza-se se a configuração for de paisagem,
+pois a atividade principal pode tomar o controle e exibir {@code DetailsFragment} juntamente com {@code TitlesFragment}.
+Isto pode acontecer se o usuário iniciar {@code DetailsActivity} enquanto estiver na orientação de retrato,
+mas alternar para orientação de paisagem (o que reinicia a atividade atual).</p>
+
+
+<p>Para obter mais exemplos do uso de fragmentos (e arquivos fonte completos deste exemplo),
+consulte o aplicativo de exemplo API Demos disponível em <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/index.html#Fragment">
+ApiDemos</a> (disponível para download em <a href="{@docRoot}resources/samples/get.html">Exemplos de componentes do SDK</a>).</p>
+
+
diff --git a/docs/html-intl/intl/pt-br/guide/components/fundamentals.jd b/docs/html-intl/intl/pt-br/guide/components/fundamentals.jd
new file mode 100644
index 0000000..47b9845
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/components/fundamentals.jd
@@ -0,0 +1,480 @@
+page.title=Fundamentos de aplicativos
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Neste documento</h2>
+<ol>
+<li><a href="#Components">Componentes de aplicativo</a>
+  <ol>
+    <li><a href="#ActivatingComponents">Ativação de componentes</a></li>
+  </ol>
+</li>
+<li><a href="#Manifest">O arquivo de manifesto</a>
+  <ol>
+    <li><a href="#DeclaringComponents">Declaração de componentes</a></li>
+    <li><a href="#DeclaringRequirements">Declaração de requisitos do aplicativo</a></li>
+  </ol>
+</li>
+<li><a href="#Resources">Recursos do aplicativo</a></li>
+</ol>
+</div>
+</div>
+
+<p>Os aplicativos do Android são programados em linguagem de programação Java. As ferramentas Android SDK compilam
+o código &mdash; em conjunto com todos os arquivos de dados e recursos &mdash; em um APK, que é o <i>pacote do Android</i>,
+um arquivo de arquivamento com sufixo {@code .apk}. Os arquivos de APK contêm todo o conteúdo
+de um aplicativo do Android e são os arquivos que os dispositivos desenvolvidos para Android usam para instalar o aplicativo.</p>
+
+<p>Depois de instalado em um dispositivo, cada aplicativo do Android é ativado em sua própria área de segurança: </p>
+
+<ul>
+ <li>O sistema operacional Android é um sistema Linux multiusuário em que cada aplicativo
+é um usuário diferente.</li>
+
+<li>Por padrão, o sistema atribui a cada aplicativo um ID de usuário do Linux exclusivo (o ID é usado somente
+pelo sistema e é desconhecido para o aplicativo). O sistema define permissões para todos os arquivos
+em um aplicativo, de modo que somente o ID de usuário atribuído àquele aplicativo pode acessá-los. </li>
+
+<li>Cada processo tem sua própria máquina virtual (VM), portanto o código de um aplicativo é executado isoladamente
+de outros aplicativos.</li>
+
+<li>Por padrão, cada aplicativo é executado em seu próprio processo Linux. O Android inicia o processo quando é preciso
+executar algum componente do aplicativo; em seguida, encerra-o quando não mais é
+necessário ou quando o sistema precisa recuperar memória para outros aplicativos.</li>
+</ul>
+
+<p>Assim, o sistema Android implementa o <em>princípio do privilégio mínimo</em>. Ou seja,
+cada aplicativo, por padrão, tem acesso somente aos componentes necessários para a execução do seu trabalho
+e nada mais. Isso cria um ambiente muito seguro em que o aplicativo não pode acessar partes
+do sistema para o qual não tem permissão.</p>
+
+<p>No entanto, sempre existe uma maneira de um aplicativo compartilhar dados com outros aplicativos
+e acessar serviços do sistema:</p>
+
+<ul>
+  <li>É impossível fazer com que dois aplicativos compartilhem o mesmo ID de usuário do Linux, caso em que
+eles são capazes de acessar os arquivos um do outro.  Para preservar os recursos do sistema, os aplicativos com o mesmo
+ID de usuário também podem ser combinados para serem executados no mesmo processo Linux e compartilhar a mesma VM
+(também é preciso atribuir o mesmo certificado aos aplicativos).</li>
+  <li>Um aplicativo pode solicitar permissão para acessar dados de dispositivo como
+contatos do usuário, mensagens SMS, o sistema montável (cartão SD), câmera, Bluetooth etc. Todas
+as permissões de aplicativo devem ser concedidas pelo usuário no momento da instalação.</li>
+</ul>
+
+<p>Essas são as informações básicas de como um aplicativo do Android existe dentro do sistema. O restante
+deste documento apresenta o leitor a:</p>
+<ul>
+  <li>Componentes fundamentais de estrutura que definem o aplicativo.</li>
+  <li>O arquivo de manifesto em que os componentes são declarados e os recursos de dispositivo necessários
+ao aplicativo.</li>
+  <li>Recursos separados do código do aplicativo que permitem
+otimizar o comportamento de uma variedade de configurações de dispositivo.</li>
+</ul>
+
+
+
+<h2 id="Components">Componentes de aplicativo</h2>
+
+<p>Os componentes de aplicativo são os blocos de construção fundamentais de um aplicativo do Android.
+Cada componente é um ponto diferente pelo qual o sistema pode entrar no aplicativo. Nem todos
+os componentes são pontos de entrada reais para o usuário e alguns dependem uns dos outros, mas cada um existe
+como uma entidade independente e desempenha uma função específica &mdash; cada um é um bloco de construção exclusivo
+que ajuda a definir o comportamento geral do aplicativo.</p>
+
+<p>Há quatro tipos diferentes de componentes de aplicativo. Cada tipo tem uma finalidade distinta
+e tem um ciclo de vida específico que define a forma pela qual o componente é criado e destruído.</p>
+
+<p>A seguir apresentam-se os quatro tipos de componentes de aplicativos:</p>
+
+<dl>
+
+<dt><b>Atividades</b></dt>
+
+<dd>As <i>atividades</i> representam uma tela única com uma interface do usuário. Por exemplo:
+um aplicativo de e-mails pode ter uma atividade que mostra uma lista de novos
+e-mails, outra atividade que compõe um e-mail e outra ainda que lê e-mails. Embora
+essas atividades funcionem juntas para formar uma experiência de usuário coesa no aplicativo de e-mails,
+elas são independentes entre si. Portanto, um aplicativo diferente pode iniciar qualquer uma
+dessas atividades (se o aplicativo de e-mails permitir). Por exemplo: um aplicativo de câmera pode iniciar
+a atividade no aplicativo de e-mail que compõe o novo e-mail para que o usuário compartilhe uma foto.
+
+<p>Uma atividade é implementada como uma subclasse de {@link android.app.Activity} — saiba mais sobre isso
+no guia do desenvolvedor
+<a href="{@docRoot}guide/components/activities.html">Atividades</a>.</p>
+</dd>
+
+
+<dt><b>Serviços</b></dt>
+
+<dd>Os <i>serviços</i> são componentes executados em segundo plano para realizar operações
+de execução longa ou para realizar trabalho para processos remotos. Eles
+não apresentam uma interface do usuário. Por exemplo: um serviço pode tocar música em segundo plano
+enquanto o usuário está em um aplicativo diferente ou buscar dados na rede sem bloquear
+a interação do usuário com uma atividade. Outro componente, como uma atividade, pode iniciar
+o serviço e deixá-lo executar ou vincular-se a ele para interagir.
+
+<p>Um serviço é implementado como uma subclasse de {@link android.app.Service} — saiba mais sobre isso
+no guia do desenvolvedor
+<a href="{@docRoot}guide/components/services.html">Serviços</a>.</p>
+</dd>
+
+
+<dt><b>Provedores de conteúdo</b></dt>
+
+<dd>Os <i>provedores de conteúdo</i> gerenciam um conjunto compartilhado de dados do aplicativo. É possível armazenar os dados
+no sistema de arquivos, em um banco de dados SQLite ou em qualquer local de armazenamento persistente
+que o aplicativo possa acessar. Por meio do provedor de conteúdo, outros aplicativos podem consultar ou até modificar
+os dados (se o provedor de conteúdo permitir). Por exemplo: o sistema Android oferece um provedor
+de conteúdo que gerencia as informações de contato do usuário. Assim, qualquer aplicativo
+com as permissões adequadas pode consultar parte do provedor de conteúdo (como {@link
+android.provider.ContactsContract.Data}) para ler e gravar informações sobre uma pessoa específica.
+
+<p>Os provedores de conteúdo são úteis para ler e gravar dados privados
+no aplicativo e não compartilhados. Por exemplo: o exemplo de aplicativo <a href="{@docRoot}resources/samples/NotePad/index.html">Note Pad</a> usa
+um provedor de conteúdo para salvar notas.</p>
+
+<p>Um provedor de conteúdo é implementado como uma subclasse de {@link android.content.ContentProvider}
+e precisa implementar um conjunto padrão de APIs que permitem a outros aplicativos
+realizar transações. Para obter mais informações, consulte o guia de desenvolvedor
+<a href="{@docRoot}guide/topics/providers/content-providers.html">Provedores de conteúdo</a>.</p>
+</dd>
+
+
+<dt><b>Receptores de transmissão</b></dt>
+
+<dd>Os <i>receptores de transmissão</i> são componentes que respondem a anúncios de transmissão
+por todo o sistema.  Muitas transmissões se originam do sistema &mdash; por exemplo, uma transmissão que anuncia
+que uma tela foi desligada, a bateria está baixa ou uma tela foi capturada.
+Os aplicativos também podem iniciar transmissões &mdash; por exemplo, para comunicar a outros dispositivos
+que alguns dados foram baixados no dispositivo e estão disponíveis para uso. Embora os receptores
+de transmissão não exibam nenhuma interface do usuário, eles podem <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">criar uma notificação na barra de status</a>
+para alertar ao usuário quando ocorre uma transmissão. Mais comumente, no entanto, um receptor de transmissão
+é somente um "portal" para outros componentes e realiza uma quantidade mínima de trabalho. Por
+exemplo: ele pode iniciar um serviço para executar um trabalho baseado no evento.
+
+<p>Os receptores de transmissão são implementados como subclasses de {@link android.content.BroadcastReceiver}
+e cada transmissão é entregue como um objeto {@link android.content.Intent}. Para obter mais informações,
+consulte a classe {@link android.content.BroadcastReceiver}.</p>
+</dd>
+
+</dl>
+
+
+
+<p>Um aspecto exclusivo do projeto do sistema Android é que qualquer aplicativo pode iniciar
+um componente de outro aplicativo. Por exemplo: se você quiser que o usuário capture
+uma foto com a câmera do dispositivo, provavelmente haverá outro aplicativo que faz isso
+e o seu aplicativo poderá usá-lo, ou seja, não será necessário desenvolver uma atividade para capturar uma foto. Não é
+necessário incorporar nem mesmo vinculá-lo do aplicativo da câmera ao código.
+Em vez disso, basta iniciar a atividade no aplicativo da câmera que captura
+uma foto. Quando concluída, a foto até retorna ao aplicativo em questão para ser usada. Para o usuário,
+parece que a câmera é realmente parte do aplicativo.</p>
+
+<p>Quando o sistema inicia um componente, ele inicia o processo daquele aplicativo (se ele já
+não estiver em execução) e instancia as classes necessárias para o componente. Por exemplo: se o aplicativo
+iniciar a atividade no aplicativo da câmera que captura uma foto, aquele aplicativo
+é executado no processo que pertence ao aplicativo da câmera e não no processo do aplicativo.
+Portanto, ao contrário dos aplicativos na maioria dos outros sistemas, os aplicativos do Android não têm um ponto
+de entrada único (não há a função {@code main()}, por exemplo).</p>
+
+<p>Como o sistema executa cada aplicativo em um processo separado com permissões de arquivo
+que restringem o acesso a outros aplicativos, o aplicativo não pode ativar diretamente um componente
+a partir de outro aplicativo. No entanto, o sistema Android pode. Portanto, para ativar um componente
+em outro aplicativo, é preciso enviar uma mensagem ao sistema que especifique a <em>intenção</em>
+de iniciar um componente específico. Em seguida, o sistema ativa o componente.</p>
+
+
+<h3 id="ActivatingComponents">Ativação de componentes</h3>
+
+<p>Três dos quatro tipos de componente &mdash; atividades, serviços
+e receptores de transmissão &mdash; são ativados por uma mensagem assíncrona chamada <em>intenção</em>.
+As intenções vinculam componentes individuais entre si em tempo de execução (como
+mensageiros que solicitam uma ação de outros componentes), seja o componente pertencente
+ao aplicativo ou não.</p>
+
+<p>A intenção é criada com um objeto {@link android.content.Intent}, que define uma mensagem
+para ativar um componente específico ou um <em>tipo</em> específico de componente &mdash; as intenções
+podem ser explícitas ou implícitas, respectivamente.</p>
+
+<p>Para atividades e serviços, as intenções definem a ação a executar (por exemplo, "exibir" ou
+"enviar" algo) e podem especificar a URI dos dados usados na ação (entre outras coisas
+que o componente a iniciar precisa saber). Por exemplo: uma intenção pode transmitir uma solicitação
+de uma atividade para exibir uma imagem ou abrir uma página da web. Em alguns casos, é preciso iniciar
+uma atividade para receber um resultado; nesse caso, a atividade também retorna
+o resultado em um {@link android.content.Intent} (por exemplo, é possível emitir uma intenção para
+que o usuário selecione um contato pessoal e o retorne a você &mdash; a intenção de retorno contém
+uma URI que aponta para o contato selecionado).</p>
+
+<p>Para receptores de transmissão, a intenção simplesmente define
+o anúncio que está sendo transmitido (por exemplo, uma transmissão para indicar que a bateria do dispositivo está acabando
+contém uma string de ação conhecida que indica "nível baixo da bateria").</p>
+
+<p>O outro tipo de componente, o provedor de conteúdo, não é ativado por intenções. Em vez disso,
+ele é ativado por uma solicitação de um {@link android.content.ContentResolver}. O resolvedor
+de conteúdo manipula todas as transações diretas com o provedor de conteúdo para que o componente
+que executa as transações com o provedor não precise e, em vez disso, chama os métodos no objeto {@link
+android.content.ContentResolver}. Isso deixa uma camada de abstração entre o provedor
+de conteúdo e o componente que solicita informações (por segurança).</p>
+
+<p>Há dois métodos separados para ativar cada tipo de componente:</p>
+<ul>
+  <li>É possível iniciar uma atividade (ou dar-lhe algo novo para fazer)
+passando uma {@link android.content.Intent} a {@link android.content.Context#startActivity
+startActivity()} ou {@link android.app.Activity#startActivityForResult startActivityForResult()}
+(para que, quando desejado, a atividade retorne um resultado).</li>
+  <li>É possível iniciar um dispositivo (ou dar novas instruções a um serviço em andamento)
+passando uma {@link android.content.Intent} a {@link android.content.Context#startService
+startService()}. Ou então, é possível vincular ao serviço passando uma{@link android.content.Intent}
+a {@link android.content.Context#bindService bindService()}.</li>
+  <li>É possível iniciar uma transmissão passando uma{@link android.content.Intent} a métodos como
+{@link android.content.Context#sendBroadcast(Intent) sendBroadcast()}, {@link
+android.content.Context#sendOrderedBroadcast(Intent, String) sendOrderedBroadcast()} ou {@link
+android.content.Context#sendStickyBroadcast sendStickyBroadcast()}.</li>
+  <li>É possível iniciar uma consulta a um provedor de conteúdo chamando {@link
+android.content.ContentProvider#query query()} em um {@link android.content.ContentResolver}.</li>
+</ul>
+
+<p>Para obter mais informações sobre intenções, consulte o documento
+<a href="{@docRoot}guide/components/intents-filters.html">Intenções e filtros de intenções</a>. Veja mais informações sobre a ativação de componentes específicos
+nos seguintes documentos: <a href="{@docRoot}guide/components/activities.html">Atividades</a>, <a href="{@docRoot}guide/components/services.html">Serviços</a>, {@link
+android.content.BroadcastReceiver} e <a href="{@docRoot}guide/topics/providers/content-providers.html">Provedores de conteúdo</a>.</p>
+
+
+<h2 id="Manifest">O arquivo de manifesto</h2>
+
+<p>Antes de o sistema Android iniciar um componente de aplicativo, é preciso ler o arquivo {@code AndroidManifest.xml}
+(o arquivo de "manifesto")
+do aplicativo para que o sistema saiba se o componente existe. O aplicativo precisa declarar todos os seus componentes nesse arquivo, que deve estar na raiz
+do diretório do projeto do aplicativo.</p>
+
+<p>O manifesto faz outras coisas além de declarar os componentes do aplicativo,
+por exemplo:</p>
+<ul>
+  <li>Identifica todas as permissões do usuário de que o aplicativo precisa, como acesso à internet
+ou acesso de somente leitura aos contatos do usuário.</li>
+  <li>Declara o <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">nível de API</a> mínimo
+exigido pelo aplicativo com base nas APIs que o aplicativo usa.</li>
+  <li>Declara os recursos de hardware e software usados ou exigidos pelo aplicativo, como câmera,
+serviços de bluetooth ou tela multitoque.</li>
+  <li>As bibliotecas de API às quais o aplicativo precisa vincular-se (outras além das APIs
+de estrutura do Android), como a <a href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">biblioteca
+Google Maps</a>.</li>
+  <li>E outros.</li>
+</ul>
+
+
+<h3 id="DeclaringComponents">Declaração de componentes</h3>
+
+<p>A principal tarefa do manifesto é informar ao sistema os componentes do aplicativo. Por
+exemplo: um arquivo de manifesto pode declarar uma atividade da seguinte forma: </p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;manifest ... &gt;
+    &lt;application android:icon="@drawable/app_icon.png" ... &gt;
+        &lt;activity android:name="com.example.project.ExampleActivity"
+                  android:label="@string/example_label" ... &gt;
+        &lt;/activity&gt;
+        ...
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>No elemento <code><a
+href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+, o atributo {@code android:icon} aponta para recursos de um ícone que identifica
+o aplicativo.</p>
+
+<p>No elemento <code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
+o atributo {@code android:name} especifica o nome da classe totalmente qualificada da subclasse de {@link
+android.app.Activity} e o atributo {@code android:label} especifica uma string
+a usar como a etiqueta da atividade visível ao usuário.</p>
+
+<p>É preciso declarar todos os componentes desta forma:</p>
+<ul>
+  <li>Elementos <code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+para atividades</li>
+  <li>Elementos <code><a
+href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+para serviços</li>
+  <li>Elementos <code><a
+href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
+para receptores de transmissão</li>
+  <li>Elementos <code><a
+href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+para provedores de conteúdo</li>
+</ul>
+
+<p>Atividades, serviços e provedores de conteúdo incluídos na fonte, mas não declarados
+no manifesto, não ficam visíveis para o sistema e, consequentemente, podem não ser executados.  No entanto, receptores
+de transmissão
+podem ser declarados no manifesto dinamicamente no código (como objetos
+{@link android.content.BroadcastReceiver}) e registrados no sistema chamando-se
+{@link android.content.Context#registerReceiver registerReceiver()}.</p>
+
+<p>Para obter mais informações sobre a estrutura do arquivo de manifesto de aplicativos, consulte a documentação
+<a href="{@docRoot}guide/topics/manifest/manifest-intro.html">O arquivo AndroidManifest.xml</a>. </p>
+
+
+
+<h3 id="DeclaringComponentCapabilities">Declaração de recursos de componentes</h3>
+
+<p>Conforme abordado acima, em <a href="#ActivatingComponents">Ativação de componentes</a>, é possível usar
+uma {@link android.content.Intent} para iniciar atividades, serviços e receptores de transmissão. Isso pode ser feito
+nomeando-se explicitamente o componente-alvo (usando o nome da classe do componente) na intenção. No entanto,
+a verdadeira força das intenções reside no conceito de <em>intenções implícitas</em>. As intenções implícitas
+descrevem simplesmente o tipo de ação a executar (e, opcionalmente, os dados em que
+a ação deve ser executada) e permitem ao sistema encontrar e iniciar um componente no dispositivo que pode executar
+a ação. Se houver mais de um componente que possa executar a ação descrita
+pela intenção, o usuário selecionará qual deles usar.</p>
+
+<p>Para o sistema identificar os componentes que podem responder a uma intenção, compara-se
+a intenção recebida com os <i>filtros de intenções</i> fornecidos no arquivo de manifesto de outros aplicativos
+do dispositivo.</p>
+
+<p>Ao declarar uma atividade no manifesto do aplicativo, pode-se incluir
+filtros de intenções que declarem os recursos da atividade para que ela responda
+a intenções de outros aplicativos. Para declarar um filtro de intenções no componentes,
+adiciona-se um elemento <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> como filho do elemento de declaração do componente.</p>
+
+<p>Por exemplo: se você estiver programando um aplicativo de e-mail com uma atividade de compor um novo e-mail,
+é possível declarar um filtro de intenções para responder a intenções "enviar" (para enviar um novo e-mail), assim:</p>
+<pre>
+&lt;manifest ... >
+    ...
+    &lt;application ... &gt;
+        &lt;activity android:name="com.example.project.ComposeEmailActivity">
+            &lt;intent-filter>
+                &lt;action android:name="android.intent.action.SEND" />
+                &lt;data android:type="*/*" />
+                &lt;category android:name="android.intent.category.DEFAULT" />
+            &lt;/intent-filter>
+        &lt;/activity>
+    &lt;/application&gt;
+&lt;/manifest>
+</pre>
+
+<p>Em seguida, se outro aplicativo criar uma intenção com a ação {@link
+android.content.Intent#ACTION_SEND} e passá-la para {@link android.app.Activity#startActivity
+startActivity()}, o sistema poderá iniciar a atividade de forma que o usuário possa rascunhar e enviar
+um e-mail.</p>
+
+<p>Para obter mais informações sobre filtros de intenções, consulte o documento <a href="{@docRoot}guide/components/intents-filters.html">Intenções e filtros de intenções</a>.
+</p>
+
+
+
+<h3 id="DeclaringRequirements">Declaração de requisitos do aplicativo</h3>
+
+<p>Existem vários dispositivos desenvolvidos para Android e nem todos apresentam os mesmos
+recursos e características. Para evitar que o aplicativo seja instalado em dispositivos
+que não contenham os recursos que o aplicativo necessita, é importante definir um perfil
+para os tipos de dispositivo compatíveis com o aplicativo. É preciso declarar os requisitos de dispositivo e software
+no arquivo de manifesto. A maior parte dessas declarações é somente informativa e o sistema não as lê,
+mas serviços externos, como o Google Play, as leem para oferecer uma filtragem
+aos usuários quando buscam esses aplicativos para seu dispositivo.</p>
+
+<p>Por exemplo: se o aplicativo exige uma câmera e usa APIs introduzidas no Android 2.1 (<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API de nível</a> 7),
+deve-se declarar esses requisitos no arquivo de manifesto da seguinte forma:</p> 
+
+<pre>
+&lt;manifest ... >
+    &lt;uses-feature android:name="android.hardware.camera.any"
+                  android:required="true" />
+    &lt;uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" />
+    ...
+&lt;/manifest>
+</pre>
+
+<p>Assim, dispositivos que <em>não</em> tenham câmera e tenham
+versão Android <em>anterior</em> a 2.1 não poderão instalar o aplicativo a partir do Google Play.</p>
+
+<p>No entanto, também é possível declarar que o aplicativo usa a câmera como recurso 
+<em>não obrigatório</em>. Nesse caso, o aplicativo precisa definir o atributo <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#required">{@code required}</a>
+ como {@code "false"} e verificar em tempo de execução
+se o dispositivo tem câmera e desativar os recursos da câmera conforme o necessário.</p>
+
+<p>Veja mais informações sobre o gerenciamento da compatibilidade do aplicativo com diferentes dispositivos
+no documento <a href="{@docRoot}guide/practices/compatibility.html">Compatibilidade
+do dispositivo</a>.</p>
+
+
+
+<h2 id="Resources">Recursos do aplicativo</h2>
+
+<p>Os aplicativos Android são compostos por mais do que somente códigos &mdash; eles requerem recursos
+separados do código-fonte, como imagens, arquivos de áudio e tudo o que se relaciona
+com a apresentação visual do aplicativo. Por exemplo: deve-se definir animações, menus, estilos, cores
+e o layout das interfaces do usuário da atividade com arquivos XML. O uso de recursos de aplicativo facilita
+a atualização de diversas características do aplicativo sem a necessidade de modificar
+o código e &mdash; fornecendo conjuntos de recursos alternativos &mdash; permite otimizar o aplicativo
+para diversas configurações de dispositivo (como idiomas e tamanhos de tela diferentes).</p>
+
+<p>Para todo recurso incluído no projeto Android, as ferramentas de programação SDK definem
+um ID inteiro exclusivo que o programador pode usar para referenciar o recurso do código do aplicativo
+ou de outros recursos definidos no XML. Por exemplo: se o aplicativo contiver um arquivo de imagem de nome {@code
+logo.png} (salvo no diretório {@code res/drawable/}), as ferramentas de SDK gerarão um ID de recurso
+chamado {@code R.drawable.logo}, que pode ser usado para referenciar a imagem e inseri-la
+na interface do usuário.</p>
+
+<p>Um dos aspectos mais importantes de fornecer recursos separados do código-fonte
+é a capacidade de fornecer recursos alternativos para diferentes configurações
+de dispositivo. Por exemplo: ao definir strings de IU em XML, é possível converter as strings em outros
+idiomas e salvá-las em arquivos separados. Em seguida, com base em um <em>qualificador</em> de idioma
+acrescentado ao nome do diretório do recurso (como {@code res/values-fr/} para valores
+de string em francês) e a configuração de idioma do usuário, o sistema Android aplica as strings de idioma adequadas
+à IU.</p>
+
+<p>O Android aceita vários <em>qualificadores</em> para recursos alternativos. O qualificador
+é uma string curta incluída no nome dos diretórios de recurso para definir
+a configuração de dispositivo em que esses recursos serão usados. Outro exemplo:
+deve-se criar diferentes layouts para as atividades conforme a orientação
+e o tamanho da tela do dispositivo. Por exemplo: quando a tela do dispositivo está em orientação
+retrato (vertical), pode ser desejável um layout com botões na vertical, mas, quando a tela está em orientação
+paisagem (horizontal), os botões devem estar alinhados horizontalmente. Para alterar o layout
+conforme a orientação, pode-se definir dois layouts diferentes e aplicar o qualificador
+adequado ao nome do diretório de cada layout. Em seguida, o sistema aplica automaticamente o layout adequado
+conforme a orientação atual do dispositivo.</p>
+
+<p>Para obter mais informações sobre os diferentes tipos de recursos a incluir no aplicativo
+e como criar recursos alternativos para diferentes configurações de dispositivo, leia <a href="{@docRoot}guide/topics/resources/providing-resources.html">Como fornecer recursos</a>.</p>
+
+
+
+<div class="next-docs">
+<div class="col-6">
+  <h2 class="norule">Continue lendo sobre:</h2>
+  <dl>
+    <dt><a href="{@docRoot}guide/components/intents-filters.html">Intenções e filtros de intenções</a>
+    </dt>
+    <dd>Informações sobre o uso de APIs {@link android.content.Intent} para
+ativar componentes de aplicativos, como atividades e serviços, e como disponibilizar componentes
+de aplicativo para uso em outros aplicativos.</dd>
+    <dt><a href="{@docRoot}guide/components/activities.html">Atividades</a></dt>
+    <dd>Informações sobre a criação de uma instância da classe {@link android.app.Activity},
+que permite uma tela diferente no aplicativo com uma interface do usuário.</dd>
+    <dt><a href="{@docRoot}guide/topics/resources/providing-resources.html">Como fornecer recursos</a></dt>
+    <dd>Informações sobre a estrutura de aplicativos Android para recursos de aplicativo separados do código-fonte
+, inclusive como fornecer recursos alternativos para configurações
+de dispositivo específicas.
+    </dd>
+  </dl>
+</div>
+<div class="col-6">
+  <h2 class="norule">Você também pode se interessar por:</h2>
+  <dl>
+    <dt><a href="{@docRoot}guide/practices/compatibility.html">Compatibilidade do dispositivo</a></dt>
+    <dd>Informações sobre como o Android funciona em diferentes tipos de dispositivo e uma introdução
+a como otimizar o aplicativo para cada dispositivo ou restringir a disponibilidade
+a diferentes dispositivos.</dd>
+    <dt><a href="{@docRoot}guide/topics/security/permissions.html">Permissões do sistema</a></dt>
+    <dd>Informações sobre como o aplicativo restringe o acesso do Android a determinadas APIs sem um
+sistema de permissão que exija o consentimento do usuário para que o aplicativo use essas APIs.</dd>
+  </dl>
+</div>
+</div>
+
diff --git a/docs/html-intl/intl/pt-br/guide/components/index.jd b/docs/html-intl/intl/pt-br/guide/components/index.jd
new file mode 100644
index 0000000..02fcaa6
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/components/index.jd
@@ -0,0 +1,57 @@
+page.title=Componentes do aplicativo
+page.landing=true
+page.landing.intro=A estrutura de aplicativo do Android permite criar aplicativos ricos e inovadores usando um conjunto de componentes reutilizáveis. Esta seção explica como criar os componentes que definem os blocos de construção do aplicativo e como conectá-los usando intenções. 
+page.metaDescription=A estrutura de aplicativo do Android permite criar aplicativos ricos e inovadores usando um conjunto de componentes reutilizáveis. Esta seção mostra como criar os componentes que definem os blocos de construção do aplicativo e como conectá-los usando intenções. 
+page.landing.image=images/develop/app_components.png
+page.image=images/develop/app_components.png
+
+@jd:body
+
+<div class="landing-docs">
+
+  <div class="col-6">
+    <h3>Artigos de blogue</h3>
+    
+    <a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
+      <h4>Uso de DialogFragments</h4>
+      <p>Nesta publicação, mostrarei como usar DialogFragments com a biblioteca de suporte v4 (para compatibilidade retroativa em dispositivos anteriores a Honeycomb) para mostrar uma caixa de diálogo de edição simples e retornar um resultado para a Atividade chamadora usando uma interface.</p>
+    </a>
+
+    <a href="http://android-developers.blogspot.com/2011/03/fragments-for-all.html">
+      <h4>Fragmentos para todos</h4>
+      <p>Hoje, lançamos uma biblioteca estática que expõe a mesma API Fragments (bem como o novo LoaderManager e algumas outras classes) para que aplicativos compatíveis com Android 1.6 e posteriores possam usar fragmentos para criar interfaces de usuário compatíveis com tablets. </p>
+    </a>
+    
+    <a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
+      <h4>Multiencadeamento para desempenho</h4>
+      <p>Uma boa prática para criar aplicativos responsivos é garantir que o encadeamento principal da IU
+realize uma quantidade mínima de trabalho. Qualquer tarefa possivelmente longa que possa travar o aplicativo deve ser tratada
+em um encadeamento diferente.</p>
+    </a>
+  </div>
+
+  <div class="col-6">
+    <h3>Treinamento</h3>
+    
+    <a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
+      <h4>Gerenciamento do ciclo de vida da atividade</h4>
+      <p>Essa lição explica a importância dos métodos de retorno de chamada do ciclo de vida que cada instância de
+Atividade recebe e como utilizá-los para que a atividade faça o que o usuário espera e não consuma recursos 
+do sistema quando não estiver em uso.</p>
+    </a>
+
+    <a href="http://developer.android.com/training/basics/fragments/index.html">
+      <h4>Como construir uma IU dinâmica com Fragmentos</h4>
+      <p>Esta classe mostra como criar uma experiência dinâmica para o usuário com fragmentos e como otimizar
+a experiência do aplicativo ao usuário para dispositivos com diferentes tamanhos de tela e ainda manter compatibilidade com dispositivos que executem versões
+de plataforma tão antigas quanto o Android 1.6.</p>
+    </a>
+
+    <a href="http://developer.android.com/training/sharing/index.html">
+      <h4>Compartilhamento de conteúdo</h4>
+      <p>Esta classe aborda algumas formas comuns para enviar e receber conteúdo entre
+aplicativos usando APIs de Intenção e o objeto ActionProvider.</p>
+    </a>
+  </div>
+
+</div>
diff --git a/docs/html-intl/intl/pt-br/guide/components/intents-filters.jd b/docs/html-intl/intl/pt-br/guide/components/intents-filters.jd
new file mode 100644
index 0000000..80e3f08
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/components/intents-filters.jd
@@ -0,0 +1,899 @@
+page.title=Intenções e filtros de intenções
+page.tags="IntentFilter"
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Neste documento</h2>
+<ol>
+  <li><a href="#Types">Tipos de intenções</a></li>
+  <li><a href="#Building">Criação de uma intenção</a>
+    <ol>
+      <li><a href="#ExampleExplicit">Exemplo de intenção explícita</a></li>
+      <li><a href="#ExampleSend">Exemplo de intenção implícita</a></li>
+      <li><a href="#ForceChooser">Forçar um seletor de aplicativo</a></li>
+    </ol>
+  </li>
+  <li><a href="#Receiving">Recepção de uma intenção implícita</a>
+    <ol>
+      <li><a href="#ExampleFilters">Exemplos de filtros</a></li>
+    </ol>
+  </li>
+  <li><a href="#PendingIntent">Uso de uma intenção pendente</a></li>
+  <li><a href="#Resolution">Resolução de intenções</a>
+    <ol>
+      <li><a href="#ActionTest">Teste de ação</a></li>
+      <li><a href="#CategoryTest">Teste de categoria</a></li>
+      <li><a href="#DataTest">Teste de dados</a></li>
+      <li><a href="#imatch">Correspondência de intenções</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>Veja também</h2>
+<ol>
+<li><a href="{@docRoot}training/basics/intents/index.html">Interação com outros aplicativos</a></li>
+<li><a href="{@docRoot}training/sharing/index.html">Compartilhamento de conteúdo</a></li>
+</ol>
+
+</div>
+</div>
+
+
+
+
+<p>A {@link android.content.Intent} é um objeto de mensagem que pode ser usado para solicitar uma ação
+de outro <a href="{@docRoot}guide/components/fundamentals.html#Components">componente de aplicativo</a>.
+Embora as intenções facilitem a comunicação entre componentes de diversos modos, há três
+casos de uso fundamentais:</p>
+
+<ul>
+<li><b>Para iniciar uma atividade:</b>
+<p>A {@link android.app.Activity} representa uma única tela em um aplicativo. É possível iniciar uma nova
+instância de uma {@link android.app.Activity} passando uma {@link android.content.Intent}
+a {@link android.content.Context#startActivity startActivity()}. A {@link android.content.Intent}
+descreve a atividade a iniciar e carrega todos os dados necessários.</p>
+
+<p>Se você deseja receber um resultado da atividade quando ela finalizar,
+chame {@link android.app.Activity#startActivityForResult
+startActivityForResult()}. Sua atividade recebe o resultado
+como um objeto {@link android.content.Intent} separado no retorno de chamada de {@link
+android.app.Activity#onActivityResult onActivityResult()} da atividade.
+Para obter mais informações, consulte o guia <a href="{@docRoot}guide/components/activities.html">Atividades</a>.</p></li>
+
+<li><b>Para iniciar um serviço:</b>
+<p>O {@link android.app.Service} é um componente que realiza operações em segundo plano
+sem interface de usuário. É possível iniciar um serviço para realizar uma operação que acontece uma vez
+(como baixar um arquivo) passando uma {@link android.content.Intent}
+a {@link android.content.Context#startService startService()}. A {@link android.content.Intent}
+descreve o serviço a iniciar e carrega todos os dados necessários.</p>
+
+<p>Se o serviço for projetado com uma interface servidor-cliente, é possível vincular ao serviço
+a partir de outro componente passando uma {@link android.content.Intent} a {@link
+android.content.Context#bindService bindService()}</code>. Para obter mais informações, consulte o guia <a href="{@docRoot}guide/components/services.html">Serviços</a>.</p></li>
+
+<li><b>Para fornecer uma transmissão:</b>
+<p>Transmissão é uma mensagem que qualquer aplicativo pode receber. O sistema fornece diversas
+transmissões para eventos do sistema, como quando o sistema inicializa ou o dispositivo inicia o carregamento.
+Você pode fornecer uma transmissão a outros aplicativos passando uma {@link android.content.Intent}
+a {@link android.content.Context#sendBroadcast(Intent) sendBroadcast()},
+{@link android.content.Context#sendOrderedBroadcast(Intent, String)
+sendOrderedBroadcast()} ou {@link
+android.content.Context#sendStickyBroadcast sendStickyBroadcast()}.</p>
+</li>
+</ul>
+
+
+
+
+<h2 id="Types">Tipos de intenções</h2>
+
+<p>Há dois tipos de intenções:</p>
+
+<ul>
+<li>As <b>intenções explícitas</b> especificam o componente a iniciar pelo nome
+(o nome de classe totalmente qualificado). Normalmente, usa-se uma intenção explícita para iniciar um componente
+no próprio aplicativo porque se sabe o nome de classe da atividade ou serviço que se deseja iniciar.
+Por exemplo, iniciar uma nova atividade em resposta a uma ação do usuário ou iniciar um serviço para baixar
+um arquivo em segundo plano.</li>
+
+<li>As <b>intenções implícitas</b> não nomeiam nenhum componente específico, mas declaram uma ação geral
+a realizar, o que permite que um componente de outro aplicativo a trate. Por exemplo: se você deseja
+exibir ao usuário uma localização em um mapa, pode usar uma intenção implícita para solicitar que outro aplicativo
+capaz exiba uma localização especificada no mapa.</li>
+</ul>
+
+<p>Ao criar uma intenção explícita para iniciar uma atividade ou serviço, o sistema inicia imediatamente
+o componente do aplicativo especificado no objeto {@link android.content.Intent} .</p>
+
+<div class="figure" style="width:446px">
+<img src="{@docRoot}images/components/intent-filters@2x.png" width="446" alt="" />
+<p class="img-caption"><strong>Figura 1.</strong> Ilustração de como uma intenção implícita
+é fornecida pelo sistema para iniciar outra atividade: <b>[1]</b> <em>A atividade A</em> cria uma
+{@link android.content.Intent} com uma descrição de ação e passa-a para {@link
+android.content.Context#startActivity startActivity()}. <b>[2]</b> O sistema Android busca, em todos
+os aplicativos, um filtro de intenções que corresponda à intenção. Ao encontrar uma correspondência, <b>[3]</b> o sistema
+inicia a atividade correspondente (<em>atividade B</em>) chamando seu método {@link
+android.app.Activity#onCreate onCreate()} e passando a {@link android.content.Intent} para ele.
+</p>
+</div>
+
+<p>Ao criar uma intenção implícita, o sistema Android encontra o componente adequado para iniciar,
+comparando o conteúdo da intenção aos <em>filtros de intenções</em> declarados no <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">arquivo de manifesto</a> de outros aplicativos
+no dispositivo. Se a intenção corresponder a um filtro de intenções, o sistema iniciará esse componente e entregará
+o objeto {@link android.content.Intent}. Se diversos filtros de intenções corresponderem, o sistema
+exibirá uma caixa de diálogo para que o usuário selecione o aplicativo que deseja usar.</p>
+
+<p>O filtro de intenções é uma expressão em um arquivo de manifesto do aplicativo
+que especifica o tipo de intenções que o componente
+gostaria de receber. Por exemplo, ao declarar um filtro de intenções para uma atividade,
+outros aplicativos se tornam capazes de iniciar diretamente sua atividade com o determinado tipo de intenção.
+Do mesmo modo, se você <em>não</em> declarar nenhum filtro de intenções para uma atividade, ela poderá ser iniciada
+somente com uma intenção explícita.</p>
+
+<p class="caution"><strong>Atenção:</strong> para garantir a segurança do seu aplicativo, sempre use uma intenção
+explícita ao iniciar um {@link android.app.Service} e não
+declare filtros de intenções para os serviços. O uso de uma intenção implícita para iniciar um serviço representa
+um risco de segurança porque não é possível determinar qual serviço responderá à intenção
+e o usuário não poderá ver que serviço é iniciado. A partir do Android 5.0 (API de nível 21), o sistema
+lança uma exceção ao chamar {@link android.content.Context#bindService bindService()}
+com uma intenção implícita.</p>
+
+
+
+
+
+<h2 id="Building">Criação de uma intenção</h2>
+
+<p>Um objeto {@link android.content.Intent} carrega informações que o sistema Android usa
+para determinar o componente a iniciar (como o nome exato do componente ou categoria
+do componente que deve receber a intenção), além de informações que o componente receptor usa para
+realizar a ação adequadamente (como a ação a tomar e os dados a usar).</p>
+
+
+<p>As informações principais contidas em uma {@link android.content.Intent} são as seguintes:</p>
+
+<dl>
+
+<dt><b>Nome do componente</b></dt>
+<dd>O nome do componente a iniciar.
+
+<p>É opcional, mas é a informação fundamental que torna uma intenção
+<b>explícita</b>, o que significa que a intenção deve ser entregue somente ao componente do aplicativo
+definido pelo nome do componente. Sem nome de componente, a intenção será <b>implícita</b>
+e o sistema decidirá qual componente deve receber a intenção, com base nas informações de outra intenção
+(como a ação, os dados e a categoria &mdash; descritos abaixo). Portanto, se for necessário iniciar
+um componente específico no seu aplicativo, deve-se especificar o nome do componente.</p>
+
+<p class="note"><strong>Observação:</strong> ao iniciar um {@link android.app.Service}, deve-se
+<strong>sempre especificar o nome do componente</strong>. Caso contrário, não será possível determinar qual serviço
+responderá à intenção e o usuário não poderá ver que serviço é iniciado.</p>
+
+<p>Esse campo da {@link android.content.Intent} é um
+objeto {@link android.content.ComponentName} que pode ser especificado usando um nome
+de classe totalmente qualificado do componente-alvo, inclusive o nome do pacote do aplicativo. Por exemplo,
+{@code com.example.ExampleActivity}. É possível definir o nome do componente com {@link
+android.content.Intent#setComponent setComponent()}, {@link android.content.Intent#setClass
+setClass()}, {@link android.content.Intent#setClassName(String, String) setClassName()} ou com
+o construtor de {@link android.content.Intent}.</p>
+
+</dd>
+
+<p><dt><b>Ação</b></dt>
+<dd>String que especifica a ação genérica a realizar (como <em>exibir</em> ou <em>selecionar</em>).
+
+<p>No caso de uma intenção de transmissão, essa é a ação que entrou em vigor e que está sendo relatada.
+A ação determina amplamente como o resto da intenção é estruturado &mdash; especificamente,
+o que está contido nos dados e em extras.
+
+<p>É possível especificar as ações para uso por intenções dentro do aplicativo (ou para uso por outros
+aplicativos para chamar componentes no seu aplicativo), mas normalmente usam-se constantes de ação
+definidas pela classe {@link android.content.Intent} ou por outras classes de estrutura. A seguir há algumas
+ações comuns para iniciar uma atividade:</p>
+
+<dl>
+<dt>{@link android.content.Intent#ACTION_VIEW}</dt>
+   <dd>Use essa ação em uma intenção com {@link
+   android.content.Context#startActivity startActivity()} quando houver informações que
+   uma atividade possa exibir ao usuário, como uma foto para exibição em um aplicativo de galeria ou um endereço
+   para exibição em um aplicativo de mapa.</dd>
+
+<dt>{@link android.content.Intent#ACTION_SEND}</dt>
+   <dd>Também conhecida como a intenção de "compartilhamento", ela deve ser usada em uma intenção com {@link
+   android.content.Context#startActivity startActivity()} quando houver alguns dados que o usuário possa
+   compartilhar por meio de outro aplicativo, como um aplicativo de e-mail ou de compartilhamento social.</dd>
+</dl>
+
+<p>Consulte a referência da classe {@link android.content.Intent} para obter mais
+constantes que definem ações genéricas.  Outras ações são definidas
+em outros locais na estrutura do Android, como nas {@link android.provider.Settings} para ações
+que abrem telas específicas no aplicativo de Configurações do sistema.</p>
+
+<p>É possível especificar a ação para uma intenção com {@link android.content.Intent#setAction
+setAction()} ou com um construtor de {@link android.content.Intent}.</p>
+
+<p>Se você definir as próprias ações, certifique-se de incluir o nome do pacote do seu aplicativo
+como prefixo. Por exemplo:</p>
+<pre>static final String ACTION_TIMETRAVEL = "com.example.action.TIMETRAVEL";</pre>
+</dd>
+
+<dt><b>Dados</b></dt>
+<dd>A URI (um objeto {@link android.net.Uri}) que referencia os dados a serem aproveitados e/ou o
+tipo MIME desses dados. O tipo dos dados fornecidos geralmente é determinado pela ação da intenção.
+Por exemplo: se a ação for {@link android.content.Intent#ACTION_EDIT}, os dados devem conter
+a URI do documento a editar.
+
+<p>Ao criar uma intenção,
+em geral, é importante especificar o tipo de dados (seu tipo MIME) em adição à URI.
+Por exemplo: uma atividade capaz de exibir imagens provavelmente não será capaz
+de reproduzir um arquivo de áudio, mesmo que os formatos da URI sejam similares.
+Portanto, especificar o tipo MIME dos dados ajuda o sistema
+Android a encontrar o melhor componente para receber a intenção.
+Contudo, o tipo MIME, às vezes, pode ser inferido a partir da URI &mdash; especificamente quando os dados são
+uma URI de {@code content:}, indicando que os dados se localizam no dispositivo e são controlados
+por um {@link android.content.ContentProvider}, que torna o tipo MIME dos dados visíveis para o sistema.</p>
+
+<p>Para definir somente a URI de dados, chame {@link android.content.Intent#setData setData()}.
+Para definir somente o tipo MIME, chame {@link android.content.Intent#setType setType()}. Se necessário,
+é possível definir ambos explicitamente com {@link
+android.content.Intent#setDataAndType setDataAndType()}.</p>
+
+<p class="caution"><strong>Atenção:</strong> se você deseja definir a URI e o tipo MIME,
+<strong>não</strong> chame {@link android.content.Intent#setData setData()}
+e {@link android.content.Intent#setType setType()}, pois eles anulam seus valores mutuamente.
+Sempre use {@link android.content.Intent#setDataAndType setDataAndType()} para definir
+a URI e o tipo MIME juntos.</p>
+</dd>
+
+<p><dt><b>Categoria</b></dt>
+<dd>String que contém informações adicionais sobre o tipo de componente
+que deve tratar da intenção.  Qualquer número de descrições de categoria pode ser
+inserido em uma intenção, mas a maioria das intenções não requer nenhuma categoria.
+A seguir há algumas categorias comuns:
+
+<dl>
+<dt>{@link android.content.Intent#CATEGORY_BROWSABLE}</dt>
+  <dd>A atividade-alvo permite seu início por um navegador da web para exibir dados
+       referenciados por um link &mdash; como uma imagem ou uma mensagem de e-mail.
+  </dd>
+<dt>{@link android.content.Intent#CATEGORY_LAUNCHER}</dt>
+  <dd>A atividade é a atividade inicial de uma tarefa e é listada
+       no inicializador do aplicativo do sistema.
+  </dd>
+</dl>
+
+<p>Consulte a descrição da classe {@link android.content.Intent} para obter a lista completa
+de categorias.</p>
+
+<p>É possível especificar uma categoria com {@link android.content.Intent#addCategory addCategory()}.</p>
+</dd>
+</dl>
+
+
+<p>As propriedades listadas abaixo (nome do componente, ação, dados e categoria) representam
+as características de definição de uma intenção. Ao ler estas propriedades, o sistema Android
+será capaz de definir o componente de aplicativo que ele deve iniciar.</p>
+
+<p>Contudo, uma intenção pode carregar informações adicionais que não afetam
+o modo com que é tratada para um componente do aplicativo. As intenções também podem fornecer:</p>
+
+<dl>
+<dt><b>Extras</b></dt>
+<dd>Pares de valores-chave que carregam informações adicionais exigidas para realizar a ação solicitada.
+Assim, como algumas ações usam determinados tipos de URIs de dados, outras também usam determinados extras.
+
+<p>É possível adicionar dados extras com diversos métodos {@link android.content.Intent#putExtra putExtra()},
+cada um aceitando dois parâmetros: o nome principal e o valor.
+Também é possível criar um objeto {@link android.os.Bundle} com todos os dados extras e, em seguida, inserir
+o {@link android.os.Bundle} na {@link android.content.Intent} com {@link
+android.content.Intent#putExtras putExtras()}.</p>
+
+<p>Por exemplo: ao criar uma intenção para enviar um e-mail com
+{@link android.content.Intent#ACTION_SEND}, é possível especificar o recipiente "para" com
+a chave {@link android.content.Intent#EXTRA_EMAIL} e especificar o "assunto" com
+a chave {@link android.content.Intent#EXTRA_SUBJECT}.</p>
+
+<p>A classe {@link android.content.Intent} especifica diversas constantes {@code EXTRA_*}
+para tipos de dados padronizados. Se for necessário declarar chaves extras (para intenções que
+seu aplicativo receba), certifique-se de incluir o nome do pacote do aplicativo
+como prefixo. Por exemplo:</p>
+<pre>static final String EXTRA_GIGAWATTS = "com.example.EXTRA_GIGAWATTS";</pre>
+</dd>
+
+<dt><b>Sinalizadores</b></dt>
+<dd>Sinalizadores definidos na classe {@link android.content.Intent} que funcionam como metadados
+para a intenção. Os sinalizadores podem instruir o sistema Android sobre como inicializar uma atividade (por exemplo, a qual
+<a href="{@docRoot}guide/components/tasks-and-back-stack.html">tarefa</a> a atividade deve
+pertencer) e como tratá-la após sua inicialização (por exemplo, se ela pertencer a uma lista de atividades
+recentes).
+
+<p>Para obter mais informações, consulte o método {@link android.content.Intent#setFlags setFlags()}.</p>
+</dd>
+
+</dl>
+
+
+
+
+<h3 id="ExampleExplicit">Exemplo de intenção explícita</h3>
+
+<p>A intenção explícita é usada para inicializar um componente específico de um aplicativo, como
+uma atividade ou serviço em particular, no seu aplicativo. Para criar uma intenção explícita, defina
+o nome do componente para o objeto {@link android.content.Intent} &mdash; todas
+as outras propriedades da intenção são opcionais.</p>
+
+<p>Por exemplo: se você criar um serviço no aplicativo, chamado {@code DownloadService} e
+projetado para baixar um arquivo da web, poderá iniciá-lo com o código a seguir:</p>
+
+<pre>
+// Executed in an Activity, so 'this' is the {@link android.content.Context}
+// The fileUrl is a string URL, such as "http://www.example.com/image.png"
+Intent downloadIntent = new Intent(this, DownloadService.class);
+downloadIntent.setData({@link android.net.Uri#parse Uri.parse}(fileUrl));
+startService(downloadIntent);
+</pre>
+
+<p>O construtor {@link android.content.Intent#Intent(Context,Class)}
+ fornece {@link android.content.Context} ao aplicativo
+e um objeto {@link java.lang.Class} ao componente. Assim,
+essa intenção inicia explicitamente a classe {@code DownloadService} no aplicativo.</p>
+
+<p>Para obter mais informações sobre a criação e inicialização de um serviço, consulte
+o guia <a href="{@docRoot}guide/components/services.html">Serviços</a>.</p>
+
+
+
+
+<h3 id="ExampleSend">Exemplo de intenção implícita</h3>
+
+<p>A intenção implícita especifica uma ação que possa chamar qualquer aplicativo no dispositivo capaz
+de realizar a ação. A intenção implícita é útil quando o aplicativo não pode realizar
+a ação, mas outros aplicativos provavelmente podem e o usuário seleciona que aplicativo usar.</p>
+
+<p>Por exemplo: se você tem o conteúdo que deseja que o usuário compartilhe com outras pessoas, crie uma intenção
+com a ação {@link android.content.Intent#ACTION_SEND}
+e adicione extras que especifiquem o conteúdo a compartilhar. Ao chamar
+{@link android.content.Context#startActivity startActivity()} com esta intenção, o usuário poderá
+selecionar um aplicativo pelo qual deseja compartilhar o conteúdo.</p>
+
+<p class="caution"><strong>Atenção:</strong> é possível que um usuário não tenha <em>nenhum</em>
+aplicativo que trate da intenção implícita enviada a {@link android.content.Context#startActivity
+startActivity()}. Se isso acontecer, a chamada e seu aplicativo falharão. Para verificar
+se uma atividade receberá a intenção, chame {@link android.content.Intent#resolveActivity
+resolveActivity()} no objeto {@link android.content.Intent}. Se o resultado não for nulo,
+há pelo menos um aplicativo que pode tratar da intenção e será seguro chamar
+{@link android.content.Context#startActivity startActivity()}. Se o resultado for nulo,
+você não deve usar a intenção e, se possível, deve desativar o recurso que emite
+a intenção.</p>
+
+
+<pre>
+// Create the text message with a string
+Intent sendIntent = new Intent();
+sendIntent.setAction(Intent.ACTION_SEND);
+sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
+sendIntent.setType("text/plain");
+
+// Verify that the intent will resolve to an activity
+if (sendIntent.resolveActivity(getPackageManager()) != null) {
+    startActivity(sendIntent);
+}
+</pre>
+
+<p class="note"><strong>Observação:</strong> nesse caso, não será usada nenhuma URI, mas o tipo de dados da intenção
+será declarado para especificar o conteúdo carregado pelos extras.</p>
+
+
+<p>Quando {@link android.content.Context#startActivity startActivity()} é chamada, o sistema
+avalia todos os aplicativos instalados para determinar quais deles podem tratar esse tipo de intenção
+(uma intenção com a ação {@link android.content.Intent#ACTION_SEND} e que carrega dados
+de "texto/simples". Se houver somente um aplicativo que possa tratá-la, o aplicativo abre imediatamente e recebe
+a intenção. Se diversas atividades aceitarem a intenção, o sistema
+exibirá uma caixa de diálogo para que o usuário selecione que aplicativo usar.</p>
+
+
+<div class="figure" style="width:200px">
+  <img src="{@docRoot}images/training/basics/intent-chooser.png" alt="">
+  <p class="img-caption"><strong>Figura 2.</strong> Caixa de diálogo seletora.</p>
+</div>
+
+<h3 id="ForceChooser">Forçar um seletor de aplicativo</h3>
+
+<p>Quando há mais de um aplicativo que responde à intenção implícita,
+o usuário pode selecionar o aplicativo que deseja usar e tornar este aplicativo a escolha padrão para
+a ação. Isso é positivo ao executar uma ação para a qual o usuário
+deseja usar o mesmo aplicativo todas as vezes, como quando abre uma página da web (os usuários
+geralmente usam apenas um navegador).</p>
+
+<p>Contudo, se diversos aplicativos podem responder à intenção e o usuário deve ficar livre para usar um aplicativo
+diferente em cada vez, é preciso exibir uma caixa de diálogo seletora explicitamente. A caixa de diálogo seletora pede que
+o usuário selecione o aplicativo desejado para a ação todas as vezes (o usuário não pode selecionar um aplicativo padrão para
+a ação). Por exemplo: quando o aplicativo realiza "compartilhar" com a ação {@link
+android.content.Intent#ACTION_SEND}, os usuários podem querer compartilhar usando um aplicativo diferente
+conforme a situação, portanto deve-se sempre usar a caixa de diálogo seletora, como ilustrado na figura 2.</p>
+
+
+
+
+<p>Para exibir o seletor, crie uma {@link android.content.Intent} usando {@link
+android.content.Intent#createChooser createChooser()} e passe-a para {@link
+android.app.Activity#startActivity startActivity()}. Por exemplo:</p>
+
+<pre>
+Intent sendIntent = new Intent(Intent.ACTION_SEND);
+...
+
+// Always use string resources for UI text.
+// This says something like "Share this photo with"
+String title = getResources().getString(R.string.chooser_title);
+// Create intent to show the chooser dialog
+Intent chooser = Intent.createChooser(sendIntent, title);
+
+// Verify the original intent will resolve to at least one activity
+if (sendIntent.resolveActivity(getPackageManager()) != null) {
+    startActivity(chooser);
+}
+</pre>
+
+<p>Isso exibe uma caixa de diálogo com uma lista de aplicativos que respondem à intenção transmitida ao método {@link
+android.content.Intent#createChooser createChooser()} e utiliza o texto fornecido como
+título da caixa de diálogo.</p>
+
+
+
+
+
+
+
+
+
+<h2 id="Receiving">Recepção de uma intenção implícita</h2>
+
+<p>Para anunciar quais intenções implícitas o aplicativo pode receber, declare um ou mais filtros de intenções
+para cada um dos componentes do aplicativo com um elemento
+<a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a> no <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">arquivo de manifesto</a>.
+Cada filtro de intenções especifica o tipo de intenções aceito com base na ação
+nos dados e na categoria da intenção. O sistema fornecerá uma intenção implícita ao componente do seu aplicativo somente se ela
+puder passar por um dos filtros de intenções.</p>
+
+<p class="note"><strong>Observação:</strong> a intenção explícita é sempre entregue ao alvo
+independentemente dos filtros de intenções que o componente declare.</p>
+
+<p>Os componentes de um aplicativo devem declarar filtros separados para cada trabalho exclusivo que podem fazer.
+Por exemplo, uma atividade em um aplicativo de galeria de imagens pode ter dois filtros: um filtro
+para visualizar uma imagem e outro para editar uma imagem. Quando a atividade inicia,
+ela inspeciona a {@link android.content.Intent} e decide como se comportar com base nas informações
+na {@link android.content.Intent} (como para exibir ou não os controles do editor).</p>
+
+<p>Cada filtro de intenções é definido por um elemento <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a>
+no arquivo de manifesto do aplicativo, aninhado no componente correspondente do aplicativo (como
+um elemento
+<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>). Dentro de <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a>,
+é possível especificar o tipo de intenções aceitas usando um ou mais
+dos três elementos a seguir:</p>
+
+<dl>
+<dt><a href="{@docRoot}guide/topics/manifest/action-element.html">{@code &lt;action&gt;}</a></dt>
+  <dd>Declara a ação da intenção aceita, no atributo {@code name}. O valor
+  deve ser o valor literal da string de uma ação, e não a constante da classe.</dd>
+<dt><a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a></dt>
+  <dd>Declara o tipo de dados aceitos usando um ou mais atributos que especificam diversos
+  aspectos da URI de dados (<code>scheme</code>, <code>host</code>, <code>port</code>,
+<code>path</code> etc.) e do tipo MIME.</dd>
+<dt><a href="{@docRoot}guide/topics/manifest/category-element.html">{@code &lt;category&gt;}</a></dt>
+  <dd>Declara a categoria da intenção aceita, no atributo {@code name}. O valor
+  deve ser o valor literal da string de uma ação, e não a constante da classe.
+
+  <p class="note"><strong>Observação:</strong> para receber intenções implícitas,
+  <strong>é preciso incluir</strong> a
+  categoria {@link android.content.Intent#CATEGORY_DEFAULT} no filtro de intenções. Os métodos
+{@link android.app.Activity#startActivity startActivity()} e
+{@link android.app.Activity#startActivityForResult startActivityForResult()} tratam de todas as intenções
+  como se eles declarassem a categoria {@link android.content.Intent#CATEGORY_DEFAULT}.
+  Se você não a declarar no filtro de intenções, nenhuma intenção implícita retomará
+  a sua atividade.</p>
+  </dd>
+</dl>
+
+<p>Por exemplo, abaixo há uma declaração de atividade com um filtro de intenções para receber
+uma intenção {@link android.content.Intent#ACTION_SEND} quando o tipo de dados for texto:</p>
+
+<pre>
+&lt;activity android:name="ShareActivity">
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="text/plain"/>
+    &lt;/intent-filter>
+&lt;/activity>
+</pre>
+
+<p>Não há problemas em criar um filtro que inclua mais de uma instância de
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code &lt;action&gt;}</a>,
+<a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a> ou
+<a href="{@docRoot}guide/topics/manifest/category-element.html">{@code &lt;category&gt;}</a>.
+Se você o fizer, basta certificar-se de que o componente possa tratar todas e quaisquer combinações
+daqueles elementos do filtro.</p>
+
+<p>Para tratar de diversos tipos de intenções, mas somente em combinações específicas
+de ações, dados e tipos de categoria, será necessário criar diversos filtros de intenções.</p>
+
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>Restrição de acesso a componentes</h2>
+<p>O uso de filtros de intenção não é um modo seguro de evitar que outros aplicativos iniciem
+componentes. Embora os filtros de intenções restrinjam um componente a responder somente
+a determinados tipos de intenções implícitas, outro aplicativo pode iniciar o componente do aplicativo
+usando uma intenção explícita se o desenvolvedor determinar os nomes dos componentes.
+Se for importante que <em>somente determinado aplicativo</em> inicie um dos seus componentes,
+defina o atributo <a href="{@docRoot}guide/topics/manifest/activity-element.html#exported">{@code
+exported}</a> como {@code "false"} para o componente em questão.
+</p>
+</div>
+</div>
+
+<p>As intenções implícitas são testadas em relação a um filtro por meio da comparação da intenção com cada um
+dos três elementos. Para ser entregue ao componente, a intenção deve passar por todos os três testes.
+Se ela falhar em algum deles, o sistema Android não entregará a intenção
+ao componente.  No entanto, como um componente poder ter diversos filtros de intenções, uma intenção que não
+passe por um dos filtros de um componente pode passar por outro filtro.
+Veja mais informações sobre como o sistema resolve intenções na seção abaixo
+sobre <a href="#Resolution">Resolução de intenções</a>.</p>
+
+<p class="caution"><strong>Atenção:</strong> para evitar a execução involuntária de um {@link android.app.Service}
+diferente do aplicativo, sempre use uma intenção explícita para iniciar o próprio serviço
+e não declare filtros de intenções para ele.</p>
+
+<p class="note"><strong>Observação:</strong>
+para todas as atividades, é necessário declarar os filtros de intenções no arquivo de manifesto.
+Contudo, os filtros para receptores de transmissão podem ser registrados dinamicamente chamando
+{@link android.content.Context#registerReceiver(BroadcastReceiver, IntentFilter, String,
+Handler) registerReceiver()}. Assim, será possível cancelar o registro do receptor com {@link
+android.content.Context#unregisterReceiver unregisterReceiver()}. Isso permitirá que o aplicativo
+receba transmissões específicas durante um período de tempo especificado apenas quando o aplicativo
+estiver em execução.</p>
+
+
+
+
+
+
+
+<h3 id="ExampleFilters">Exemplos de filtros</h3>
+
+<p>Para compreender melhor alguns dos comportamentos do filtro de intenções, veja o fragmento a seguir
+do arquivo de manifesto de um aplicativo de compartilhamento social.</p>
+
+<pre>
+&lt;activity android:name="MainActivity">
+    &lt;!-- This activity is the main entry, should appear in app launcher -->
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.MAIN" />
+        &lt;category android:name="android.intent.category.LAUNCHER" />
+    &lt;/intent-filter>
+&lt;/activity>
+
+&lt;activity android:name="ShareActivity">
+    &lt;!-- This activity handles "SEND" actions with text data -->
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="text/plain"/>
+    &lt;/intent-filter&gt;
+    &lt;!-- This activity also handles "SEND" and "SEND_MULTIPLE" with media data -->
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;action android:name="android.intent.action.SEND_MULTIPLE"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="application/vnd.google.panorama360+jpg"/>
+        &lt;data android:mimeType="image/*"/>
+        &lt;data android:mimeType="video/*"/>
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p>A primeira atividade, {@code MainActivity}, é o ponto de entrada principal do aplicativo &mdash; a atividade
+que abre quando o usuário inicializa o aplicativo pela primeira vez com o ícone de inicialização:</p>
+<ul>
+  <li>A ação {@link android.content.Intent#ACTION_MAIN}
+  indica que este é o ponto de entrada principal e não espera nenhum dado de intenção.</li>
+  <li>A categoria {@link android.content.Intent#CATEGORY_LAUNCHER} indica que esse ícone
+  da atividade deve ser colocado no inicializador de aplicativo do sistema. Se o elemento <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+  não especificar um ícone com {@code icon}, o sistema usará o ícone do elemento
+  <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>.</li>
+</ul>
+<p>Esses dois devem ser pareados juntos para que a atividade apareça no inicializador do aplicativo.</p>
+
+<p>A segunda atividade, {@code ShareActivity}, destina-se a facilitar o compartilhamento de conteúdo de texto
+e mídia. Apesar de os usuários poderem acessar essa atividade pela {@code MainActivity},
+eles também podem acessar {@code ShareActivity} diretamente de outro aplicativo que emita uma intenção
+implícita que corresponda a um dos dois filtros de intenções.</p>
+
+<p class="note"><strong>Observação:</strong> o tipo MIME,
+<a href="https://developers.google.com/panorama/android/">{@code
+application/vnd.google.panorama360+jpg}</a>, é um tipo de dados especial que especifica
+fotos panorâmicas que podem ser tratadas com as APIs do <a href="{@docRoot}reference/com/google/android/gms/panorama/package-summary.html">Google
+Panorama</a>.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h2 id="PendingIntent">Uso de uma intenção pendente</h2>
+
+<p>Um objeto {@link android.app.PendingIntent} é um agrupador em torno de um objeto {@link
+android.content.Intent}. A principal finalidade de uma {@link android.app.PendingIntent}
+ é conceder permissão a um aplicativo externo
+para usar a {@link android.content.Intent} contida como se ela fosse executada a partir
+do processo do próprio aplicativo.</p>
+
+<p>Os principais casos de uso de uma intenção pendente são:</p>
+<ul>
+  <li>Declarar uma intenção a ser executada quando o usuário realiza uma ação com a <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Notificação</a>
+  (o {@link android.app.NotificationManager} do sistema Android
+  executa a {@link android.content.Intent}).
+  <li>Declarar uma intenção a ser executada quando o usuário realiza uma ação com o
+  <a href="{@docRoot}guide/topics/appwidgets/index.html">Widget do aplicativo</a>
+  (o aplicativo de tela inicial executa a {@link android.content.Intent}).
+  <li>Declarar uma intenção a ser executada em um momento específico no futuro (o {@link android.app.AlarmManager}
+  do sistema Android executa a {@link android.content.Intent}).
+</ul>
+
+<p>Como cada objeto {@link android.content.Intent} é projetado para ser tratado por um tipo
+específico de componentes do aplicativo (uma {@link android.app.Activity}, um {@link android.app.Service}
+ou um {@link android.content.BroadcastReceiver}), uma {@link android.app.PendingIntent}
+deve ser criada com a mesma consideração. Ao usar uma intenção pendente, o aplicativo
+não executará a intenção com uma chamada como de {@link android.content.Context#startActivity
+startActivity()}. Em vez disso, deve-se declarar o tipo do componente pretendido ao criar
+a {@link android.app.PendingIntent} chamando o respectivo método criador:</p>
+
+<ul>
+  <li>{@link android.app.PendingIntent#getActivity PendingIntent.getActivity()} para uma
+  {@link android.content.Intent} que inicia uma {@link android.app.Activity}.</li>
+  <li>{@link android.app.PendingIntent#getService PendingIntent.getService()} para uma
+  {@link android.content.Intent} que inicia um {@link android.app.Service}.</li>
+  <li>{@link android.app.PendingIntent#getBroadcast PendingIntent.getBroadcast()} para uma
+  {@link android.content.Intent} que inicia um {@link android.content.BroadcastReceiver}.</li>
+</ul>
+
+<p>A menos que o aplicativo esteja <em>recebendo</em> intenções pendentes de outros aplicativos,
+os métodos acima para criar uma {@link android.app.PendingIntent} são provavelmente
+os únicos métodos de {@link android.app.PendingIntent} necessários.</p>
+
+<p>Cada método toma o {@link android.content.Context} do aplicativo atual,
+a {@link android.content.Intent} que você deseja agrupar e um ou mais sinalizadores que especificam
+como a intenção deve ser usada (como se a intenção pudesse ser usada mais de uma vez).</p>
+
+<p>Veja mais informações sobre o uso de intenções pendentes na documentação
+dos respectivos casos de uso, como nos guias das APIs de <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Notificações</a>
+e <a href="{@docRoot}guide/topics/appwidgets/index.html">Widget do aplicativo</a>.</p>
+
+
+
+
+
+
+
+<h2 id="Resolution">Resolução de intenções</h2>
+
+
+<p>Quando o sistema recebe uma intenção implícita para iniciar uma atividade, ele busca
+as melhores atividades para a intenção comparando-a com os filtros de intenções com base em três aspectos:</p>
+
+<ul>
+  <li>A ação da intenção
+  <li>Os dados da intenção (URI e tipo de dados)
+  <li>A categoria da intenção
+</ul>
+
+<p>As seções a seguir descrevem como uma intenção é combinada com os componentes apropriados
+em termos de como o filtro de intenções é declarado no arquivo de manifesto de um aplicativo.</p>
+
+
+<h3 id="ActionTest">Teste de ação</h3>
+
+<p>Para especificar ações de intenções aceitas, um filtro de intenções pode declarar zero ou mais
+elementos <a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a>.  Por exemplo:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.EDIT" /&gt;
+    &lt;action android:name="android.intent.action.VIEW" /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>Para passar por este filtro, a ação especificada na {@link android.content.Intent}
+  deve corresponder a uma das ações listadas no filtro.</p>
+
+<p>Se o filtro não listar nenhuma ação, não há nada a que
+uma intenção corresponda, portanto todas as intenções falharão no teste. Contudo, se uma {@link android.content.Intent}
+não especificar nenhuma ação, ela passará no teste (desde que o filtro
+contenha pelo menos uma ação).</p>
+
+
+
+<h3 id="CategoryTest">Teste de categoria</h3>
+
+<p>Para especificar as categorias de intenção aceitas, um filtro de intenções pode declarar zero ou mais
+elementos <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a>.  Por exemplo:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+    &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>Para que uma intenção passe no teste de categoria, cada categoria na {@link android.content.Intent}
+deve corresponder a uma categoria no filtro. O inverso não é necessário &mdash; o filtro de intenções pode
+declarar mais categorias das especificadas na {@link android.content.Intent} e
+a {@link android.content.Intent} ainda passará no teste. Portanto, uma intenção sem categorias sempre
+passará nesse teste independentemente das categorias declaradas no filtro.</p>
+
+<p class="note"><strong>Observação:</strong>
+O Android aplica automaticamente a categoria {@link android.content.Intent#CATEGORY_DEFAULT}
+para todas as intenções implícitas passadas a {@link
+android.content.Context#startActivity startActivity()} e {@link
+android.app.Activity#startActivityForResult startActivityForResult()}.
+Por isso, se você deseja que a atividade receba intenções implícitas, ela deve
+conter uma categoria de {@code "android.intent.category.DEFAULT"} nos filtros de intenções (como
+exibido no exemplo de {@code &lt;intent-filter&gt;} anterior).</p>
+
+
+
+<h3 id="DataTest">Teste de dados</h3>
+
+<p>Para especificar dados de intenções aceitas, um filtro de intenções pode declarar zero ou mais
+elementos <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
+&lt;data&gt;}</a>.  Por exemplo:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:mimeType="video/mpeg" android:scheme="http" ... /&gt;
+    &lt;data android:mimeType="audio/mpeg" android:scheme="http" ... /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>Cada elemento
+<code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code> pode especificar uma estrutura de URI e um tipo de dados (tipo de mídia MIME).  Há atributos
+separados &mdash; {@code scheme}, {@code host}, {@code port} e
+{@code path} &mdash; para cada parte da URI:
+</p>
+
+<p style="margin-left: 2em">{@code &lt;scheme&gt;://&lt;host&gt;:&lt;port&gt;/&lt;path&gt;}</p>
+
+<p>
+Por exemplo:
+</p>
+
+<p style="margin-left: 2em">{@code content://com.example.project:200/folder/subfolder/etc}</p>
+
+<p>Nessa URI, o esquema é {@code content}, o host é {@code com.example.project},
+a porta é {@code 200} e o caminho é {@code folder/subfolder/etc}.
+</p>
+
+<p>Cada um desses atributos é opcional em um elemento <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>,
+mas há dependências lineares:</p>
+<ul>
+  <li>Se não houver esquema especificado, o host será ignorado.</li>
+  <li>Se não houver host especificado, a porta será ignorada.</li>
+  <li>Se não houver esquema nem host especificado, o caminho será ignorado.</li>
+</ul>
+
+<p>Quando a URI em uma intenção é comparada a uma especificação de URI em um filtro,
+a comparação é feita somente com as partes da URI incluídas no filtro. Por exemplo:</p>
+<ul>
+  <li>Se um filtro especificar somente um esquema, todas as URIs com esse esquema atenderão
+ao filtro.</li>
+  <li>Se um filtro especificar um esquema e uma autoridade, mas não um caminho, todas as URIs
+com o mesmo esquema e autoridade passarão pelo filtro independentemente dos caminhos.</li>
+  <li>Se um filtro especificar um esquema, uma autoridade e um caminho, somente URIs com o mesmo esquema,
+autoridade e caminho passarão pelo filtro.</li>
+</ul>
+
+<p class="note"><strong>Observação:</strong> a especificação de caminho pode
+conter um asterisco especial (*) para exigir somente uma correspondência parcial do nome do caminho.</p>
+
+<p>O teste de dados compara a URI e o tipo MIME da intenção com uma URI
+e um tipo MIME especificados no filtro.  As regras são as seguintes:
+</p>
+
+<ol type="a">
+<li>A intenção que não contiver URI nem tipo MIME passará
+no teste somente se o filtro não especificar nenhuma URI nem tipo MIME.</li>
+
+<li>A intenção que contiver URI mas nenhum tipo MIME (nem explícito, nem inferível a partir
+da URI) passará pelo teste somente se a URI corresponder ao formato de URI do filtro
+e se o filtro, igualmente, não especificar um tipo MIME.</li>
+
+<li>A intenção que contiver tipo MIME mas nenhuma URI passará pelo teste
+somente se o filtro listar o mesmo tipo MIME e não especificar nenhum formato de URI.</li>
+
+<li>A intenção que contiver URI e tipo MIME (explícito ou inferível a partir
+da URI) passará a parte do tipo MIME do teste somente se esse
+tipo corresponder a um tipo listado no filtro.  A parte da URI passará no teste
+se corresponder a uma URI no filtro ou se tiver uma URI de {@code content:}
+ou {@code file:} e se o filtro não especificar nenhuma URI. Em outras palavras,
+presume-se que um componente seja compatível com dados de {@code content:} e de {@code file:} se
+o filtro listar <em>somente</em> um tipo MIME.</p></li>
+</ol>
+
+<p>
+Essa última regra (d) reflete a expectativa
+de que os componentes sejam capazes de obter dados de local de um arquivo ou provedor de conteúdo.
+Portanto, os filtros podem listar somente um tipo de dados e não precisam nomear
+explicitamente os esquemas {@code content:} e {@code file:}.
+Este é um caso típico.  Um elemento <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>
+como o seguinte, por exemplo, informa ao Android que o componente pode obter dados de imagem de um provedor
+de conteúdo e exibi-los:
+</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:mimeType="image/*" /&gt;
+    ...
+&lt;/intent-filter&gt;</pre>
+
+<p>
+Como a maioria dos dados disponíveis é dispensada pelos provedores de conteúdo, os filtros
+que especificam um tipo de dados mas não uma URI são, talvez, os mais comuns.
+</p>
+
+<p>
+Outra configuração comum é: filtros com um esquema e um tipo de dados.  Por
+exemplo, um elemento
+<a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>, como o seguinte, informa ao Android
+que o componente pode recuperar dados de vídeo da rede para realizar a ação:
+</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:scheme="http" android:type="video/*" /&gt;
+    ...
+&lt;/intent-filter&gt;</pre>
+
+
+
+<h3 id="imatch">Correspondência de intenções</h3>
+
+<p>Intenções são correspondidas a filtros de intenções não somente para descobrir
+um componente-alvo a ativar, mas também para descobrir algo sobre o conjunto
+de componentes do dispositivo.  Por exemplo: o aplicativo Home preenche o inicializador do aplicativo
+encontrando todas as atividades com filtros de intenções que especifiquem
+a ação {@link android.content.Intent#ACTION_MAIN} e
+a categoria {@link android.content.Intent#CATEGORY_LAUNCHER}.</p>
+
+<p>O aplicativo pode usar a correspondência de intenções de modo similar.
+O {@link android.content.pm.PackageManager} tem um conjunto de métodos
+{@code query...()}, que retornam todos os componentes que podem aceitar uma determinada intenção
+e uma série de métodos {@code resolve...()} similares, que determinam o melhor
+componente para responder a uma intenção.  Por exemplo:
+{@link android.content.pm.PackageManager#queryIntentActivities
+queryIntentActivities()} retorna uma lista de todas as atividades que podem realizar
+a intenção passada como um argumento e {@link
+android.content.pm.PackageManager#queryIntentServices
+queryIntentServices()} retorna uma lista de serviços semelhantes.
+Nenhum dos métodos ativa os componentes — eles apenas listam aqueles que
+podem responder.  Há um método semelhante
+para receptores de transmissão — o {@link android.content.pm.PackageManager#queryBroadcastReceivers
+queryBroadcastReceivers()}.
+</p>
+
+
+
+
diff --git a/docs/html-intl/intl/pt-br/guide/components/loaders.jd b/docs/html-intl/intl/pt-br/guide/components/loaders.jd
new file mode 100644
index 0000000..f3c4209
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/components/loaders.jd
@@ -0,0 +1,494 @@
+page.title=Carregadores
+parent.title=Atividades
+parent.link=activities.html
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+    <h2>Neste documento</h2>
+    <ol>
+    <li><a href="#summary">Resumo de API de carregador</a></li>
+    <li><a href="#app">Uso de carregadores em um aplicativo</a>
+      <ol>
+        <li><a href="#requirements"></a></li>
+        <li><a href="#starting">Início de um carregador</a></li>
+        <li><a href="#restarting">Reinício de um carregador</a></li>
+        <li><a href="#callback">Uso dos retornos de chamada de LoaderManager</a></li>
+      </ol>
+    </li>
+    <li><a href="#example">Exemplo</a>
+       <ol>
+         <li><a href="#more_examples">Mais exemplos</a></li>
+        </ol>
+    </li>
+  </ol>
+    
+  <h2>Classes principais</h2>
+    <ol>
+      <li>{@link android.app.LoaderManager}</li>
+      <li>{@link android.content.Loader}</li>
+
+    </ol>   
+    
+    <h2>Exemplos relacionados</h2>
+   <ol>
+     <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
+LoaderCursor</a></li>
+     <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html">
+LoaderThrottle</a></li>
+   </ol>
+  </div>
+</div>
+
+<p>Introduzidos no Android 3.0, os carregadores facilitam o carregamento assíncrono de dados
+em uma atividade ou fragmento. Os carregadores têm as seguintes características:</p>
+  <ul>
+    <li>Eles estão disponíveis para cada {@link android.app.Activity} e {@link
+android.app.Fragment}.</li>
+    <li>Eles fornecem carregamento assíncrono de dados.</li>
+    <li>Eles monitoram a origem dos dados e fornecem novos resultados
+quando o conteúdo é alterado.</li>
+    <li>Eles reconectam-se automaticamente ao cursor do último carregador
+quando são recriados após uma alteração de configuração. Portanto, eles não precisam reconsultar
+os dados.</li>
+  </ul>
+ 
+<h2 id="summary">Resumo da API de carregador</h2>
+
+<p>Há várias classes e interfaces que podem ser envolvidas no uso
+de carregadores em um aplicativo. Elas são resumidas nesta tabela:</p>
+
+<table>
+  <tr>
+    <th>Classe/Interface</th>
+    <th>Descrição</th>
+  </tr>
+  <tr>
+    <td>{@link android.app.LoaderManager}</td>
+    <td>Uma classe abstrata associada a {@link android.app.Activity} ou
+{@link android.app.Fragment} para gerenciar uma ou mais instâncias de {@link
+android.content.Loader}. Isto ajuda um aplicativo a gerenciar
+operações executadas por longos períodos juntamente com o ciclo de vida de {@link android.app.Activity}
+ou {@link android.app.Fragment}; o uso mais comum disto é com 
+{@link android.content.CursorLoader}. No entanto, os aplicativos têm a liberdade de criar
+os próprios carregadores para outros tipos de dados.
+    <br />
+    <br />
+    Há apenas um {@link android.app.LoaderManager} por atividade ou fragmento. No entanto, um {@link android.app.LoaderManager} pode ter
+vários carregadores.</td>
+  </tr>
+  <tr>
+    <td>{@link android.app.LoaderManager.LoaderCallbacks}</td>
+    <td>Uma interface de retorno de chamada para um cliente interagir com {@link
+android.app.LoaderManager}. Por exemplo, usa-se o método de retorno de chamada {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}
+para criar um novo carregador.</td>
+  </tr>
+  <tr>
+    <td>{@link android.content.Loader}</td>
+    <td>Uma classe abstrata que realiza carregamento assíncrono de dados. Esta é a classe de base
+de um carregador. Geralmente, você usaria {@link
+android.content.CursorLoader}, mas é possível implementar subclasse própria. Enquanto os carregadores
+estiverem ativos, devem monitorar a origem dos dados e fornecer
+novos resultados quando o conteúdo for alterado. </td>
+  </tr>
+  <tr>
+    <td>{@link android.content.AsyncTaskLoader}</td>
+    <td>Um carregador abstrato que fornece uma {@link android.os.AsyncTask} para realizar o trabalho.</td>
+  </tr>
+  <tr>
+    <td>{@link android.content.CursorLoader}</td>
+    <td>Uma subclasse de {@link android.content.AsyncTaskLoader} que consulta
+{@link android.content.ContentResolver} e retorna um {@link
+android.database.Cursor}. Esta classe implementa o protocolo {@link
+android.content.Loader} de forma padrão para cursores de consulta,
+compilando em {@link android.content.AsyncTaskLoader} para realizar a consulta de cursor
+em um encadeamento de segundo plano para que a IU do aplicativo não seja bloqueada. Usar
+este carregador é a melhor maneira de carregar dados de forma assíncrona a partir de um {@link
+android.content.ContentProvider}, em vez de realizar uma consulta gerenciada pelas
+APIs da atividade ou do fragmento.</td>
+  </tr>
+</table>
+
+<p>As classes e interfaces na tabela acima são os componentes essenciais
+que você usará para implementar um carregador no aplicativo. Você não precisará de todos eles
+para cada carregador criado, mas sempre precisará de uma referência a {@link
+android.app.LoaderManager} para inicializar um carregador e uma implementação
+de uma classe {@link android.content.Loader}, como {@link
+android.content.CursorLoader}. As seguintes seções mostram como usar
+essas classes e interfaces em um aplicativo.</p>
+
+<h2 id ="app">Uso de carregadores em um aplicativo</h2>
+<p>Esta seção descreve como usar os carregadores em um aplicativo do Android. Um aplicativo
+que usa os carregadores, geralmente, inclui o seguinte:</p>
+<ul>
+  <li>Uma {@link android.app.Activity} ou um {@link android.app.Fragment}.</li>
+  <li>Uma instância de {@link android.app.LoaderManager}.</li>
+  <li>Um {@link android.content.CursorLoader} para carregar dados baseados em um {@link
+android.content.ContentProvider}. Alternativamente, é possível implementar a própria subclasse
+de {@link android.content.Loader} ou {@link android.content.AsyncTaskLoader}
+para carregar dados de outra origem.</li>
+  <li>Uma implementação de {@link android.app.LoaderManager.LoaderCallbacks}.
+É aqui que é possível criar novos carregadores e gerenciar as referências
+a carregadores existentes.</li> 
+<li>Uma maneira de exibir os dados do carregador, como um {@link
+android.widget.SimpleCursorAdapter}.</li>
+  <li>Uma origem de dados, como um {@link android.content.ContentProvider}, ao usar
+{@link android.content.CursorLoader}.</li>
+</ul>
+<h3 id="starting">Início de um carregador</h3>
+
+<p>O {@link android.app.LoaderManager} gerencia uma ou mais instâncias de {@link
+android.content.Loader} dentro de uma {@link android.app.Activity}
+ou um {@link android.app.Fragment}. Há apenas um {@link
+android.app.LoaderManager} por atividade ou fragmento.</p> 
+
+<p>Geralmente,
+inicializa-se um {@link android.content.Loader} dentro do método {@link
+android.app.Activity#onCreate onCreate()} da atividade, ou dentro do método
+{@link android.app.Fragment#onActivityCreated onActivityCreated()} do fragmento. Faça
+isso da seguinte maneira:</p>
+
+<pre>// Prepare the loader.  Either re-connect with an existing one,
+// or start a new one.
+getLoaderManager().initLoader(0, null, this);</pre>
+
+<p>O método {@link android.app.LoaderManager#initLoader initLoader()}
+recebe os seguintes parâmetros:</p>
+<ul>
+  <li>Um ID único que identifica o carregador. Neste exemplo, o ID é 0.</li>
+<li>Argumentos opcionais para fornecer ao carregador
+em construção (<code>null</code> neste exemplo).</li> 
+
+<li>Uma implementação de {@link android.app.LoaderManager.LoaderCallbacks},
+que {@link android.app.LoaderManager} chama para relatar eventos do carregador. Nesse exemplo,
+ a classe local implementa a interface de {@link
+android.app.LoaderManager.LoaderCallbacks}, para que ela passe uma referência
+para si, {@code this}.</li> 
+</ul>
+<p>A chamada de {@link android.app.LoaderManager#initLoader initLoader()} garante que o carregador
+foi inicializado e que está ativo. Ela possui dois possíveis resultados:</p>
+<ul>
+  <li>Se o carregador especificado pelo ID já existir, o último carregador
+criado será usado novamente.</li>
+  <li>Se o carregador especificado pelo ID <em>não</em> existir,
+{@link android.app.LoaderManager#initLoader initLoader()} ativará o método
+{@link android.app.LoaderManager.LoaderCallbacks} {@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}.
+É aqui que você implementa o código para instanciar e retornar um novo carregador.
+Para obter mais informações, consulte a seção <a href="#onCreateLoader">onCreateLoader</a>.</li>
+</ul>
+<p>Em qualquer um dos casos, a implementação de {@link android.app.LoaderManager.LoaderCallbacks}
+fornecida é associada ao carregador e será chamada quando o estado
+do carregador mudar.  Se, no momento desta chamada, o autor dela
+estiver no estado inicializado e o carregador solicitado já existir e tiver
+gerado seus dados, o sistema chamará {@link
+android.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()}
+imediatamente (durante{@link android.app.LoaderManager#initLoader initLoader()}),
+então prepare-se para tais situações. Consulte <a href="#onLoadFinished">
+onLoadFinished</a> para obter mais informações sobre este retorno de chamada</p>
+
+<p>Observe que o método {@link android.app.LoaderManager#initLoader initLoader()}
+retorna o {@link android.content.Loader} que é criado, mas você não precisará
+capturar uma referência para ele. O {@link android.app.LoaderManager} gerencia
+a vida do carregador automaticamente. O {@link android.app.LoaderManager}
+inicia e interrompe o carregamento quando necessário, além de manter o estado do carregador
+e do conteúdo associado. À medida que isso ocorre, você raramente interage com os carregadores
+diretamente (para ver um exemplo de métodos para aprimorar o comportamento
+de um carregador, consulte o exemplo de <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a>). 
+Geralmente, usam-se os métodos {@link
+android.app.LoaderManager.LoaderCallbacks} para intervir no processo de carregamento
+quando determinados eventos ocorrem. Para obter mais informações sobre este assunto, consulte <a href="#callback">Uso dos retornos de chamada de LoaderManager</a>.</p>
+
+<h3 id="restarting">Reinício de um carregador</h3>
+
+<p>Ao usar {@link android.app.LoaderManager#initLoader initLoader()},
+como mostrado acima, ele usará um carregador existente com o ID especificado, se houver um.
+Caso contrário, um carregador será criado. No entanto, às vezes, você quer descartar os dados antigos
+e começar do início.</p>
+
+<p>Para descartar os dados antigos, use {@link
+android.app.LoaderManager#restartLoader restartLoader()}. Por exemplo,
+esta implementação de {@link android.widget.SearchView.OnQueryTextListener} reinicia
+o carregador quando a consulta do usuário é alterada. O carregador precisa ser reiniciado
+para que possa usar o filtro de busca revisado para realizar uma nova consulta:</p>
+
+<pre>
+public boolean onQueryTextChanged(String newText) {
+    // Called when the action bar search text has changed.  Update
+    // the search filter, and restart the loader to do a new query
+    // with this filter.
+    mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+    getLoaderManager().restartLoader(0, null, this);
+    return true;
+}</pre>
+
+<h3 id="callback">Uso dos retornos de chamada de LoaderManager</h3>
+
+<p>{@link android.app.LoaderManager.LoaderCallbacks} é uma interface de retorno de chamada
+que permite que um cliente interaja com o {@link android.app.LoaderManager}. </p>
+<p>Carregadores, em determinado {@link android.content.CursorLoader}, devem
+reter os dados após serem interrompidos. Isto permite que os aplicativos
+mantenham os dados dos métodos {@link android.app.Activity#onStop
+onStop()} e {@link android.app.Activity#onStart onStart()} do fragmento ou da atividade
+para que, quando os usuários voltarem a um aplicativo, não tenham que esperar
+o recarregamento dos dados. Você usa os métodos {@link android.app.LoaderManager.LoaderCallbacks}
+para saber quando deve criar um novo carregador, e para dizer ao aplicativo quando
+ deve interromper o uso dos dados de um carregador.</p>
+
+<p>{@link android.app.LoaderManager.LoaderCallbacks} inclui
+esses métodos:</p>
+<ul>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}  —
+instancia e retorna um novo {@link android.content.Loader} para o ID fornecido.
+</li></ul>
+<ul>
+  <li> {@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()}
+— chamado quando um carregador anteriormente criado termina o seu carregamento.
+</li></ul>
+<ul>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}  
+    — chamado quando um carregador anteriormente criado é reiniciado,
+tornando os dados indisponíveis.
+</li>
+</ul>
+<p>Esses métodos são descritos com mais informações nas seguintes seções.</p>
+
+<h4 id ="onCreateLoader">onCreateLoader</h4>
+
+<p>Ao tentar acessar um carregador (por exemplo, por meio de {@link
+android.app.LoaderManager#initLoader initLoader()}), ele verifica
+se o carregador especificado pelo ID existe. Se não existir, ele ativa o método {@link
+android.app.LoaderManager.LoaderCallbacks} {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}. É aqui
+que você pode criar um novo carregador. Geralmente, será um {@link
+android.content.CursorLoader}, mas é possível implementar a própria subclasse de {@link
+android.content.Loader}. </p>
+
+<p>Nesse exemplo, o método de retorno de chamada de {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}
+cria um {@link android.content.CursorLoader}. Você deve compilar
+{@link android.content.CursorLoader} usando o método construtor,
+que exige um conjunto completo de informações necessárias para realizar uma consulta ao {@link
+android.content.ContentProvider}. Especificamente, ele precisa de:</p>
+<ul>
+  <li><em>uri</em> — a URI do conteúdo a ser recuperado. </li>
+  <li><em>projection</em> — uma lista de quais colunas devem ser retornadas. Passar
+<code>null</code> retornará todas as colunas, o que é ineficiente. </li>
+  <li><em>selection</em> — um filtro que declara quais linhas devem retornar,
+formatado por uma cláusula SQL WHERE (excluindo WHERE). Passar
+<code>null</code> retornará todas as linhas da URI em questão. </li>
+  <li><em>selectionArgs</em> — é possível incluir interrogações na seleção,
+que serão substituídas pelos valores de <em>selectionArgs</em>, na ordem em que aparecem
+na seleção. Os valores serão vinculados como Strings. </li>
+  <li><em>sortOrder</em> — como ordenar as linhas, formatadas em uma cláusula SQL
+ORDER BY (excluindo ORDER BY). Passar <code>null</code>
+usará a ordem de classificação padrão, que pode ser desordenada.</li>
+</ul>
+<p>Por exemplo:</p>
+<pre>
+ // If non-null, this is the current filter the user has provided.
+String mCurFilter;
+...
+public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+    // This is called when a new Loader needs to be created.  This
+    // sample only has one Loader, so we don't care about the ID.
+    // First, pick the base URI to use depending on whether we are
+    // currently filtering.
+    Uri baseUri;
+    if (mCurFilter != null) {
+        baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+                  Uri.encode(mCurFilter));
+    } else {
+        baseUri = Contacts.CONTENT_URI;
+    }
+
+    // Now create and return a CursorLoader that will take care of
+    // creating a Cursor for the data being displayed.
+    String select = &quot;((&quot; + Contacts.DISPLAY_NAME + &quot; NOTNULL) AND (&quot;
+            + Contacts.HAS_PHONE_NUMBER + &quot;=1) AND (&quot;
+            + Contacts.DISPLAY_NAME + &quot; != '' ))&quot;;
+    return new CursorLoader(getActivity(), baseUri,
+            CONTACTS_SUMMARY_PROJECTION, select, null,
+            Contacts.DISPLAY_NAME + &quot; COLLATE LOCALIZED ASC&quot;);
+}</pre>
+<h4 id="onLoadFinished">onLoadFinished</h4>
+
+<p>Este método é chamado quando um carregador anteriormente criado terminar o seu carregamento.
+Este método certamente será chamado antes da liberação dos últimos dados
+que forem fornecidos por este carregador.  Neste ponto, você deve remover todo o uso
+dos dados antigos (já que serão liberados em breve), mas não deve fazer
+a liberação dos dados, já que pertencem ao carregador e ele lidará com isso.</p>
+
+
+<p>O carregador liberará os dados quando souber
+que o aplicativo não está mais usando-os.  Por exemplo, se os dados forem um cursor de um {@link
+android.content.CursorLoader}, você não deve chamar {@link
+android.database.Cursor#close close()} por conta própria. Se o cursor estiver
+sendo colocado em um {@link android.widget.CursorAdapter}, você deve usar o método {@link
+android.widget.SimpleCursorAdapter#swapCursor swapCursor()}  para que o antigo
+{@link android.database.Cursor} não seja fechado. Por exemplo:</p>
+
+<pre>
+// This is the Adapter being used to display the list's data.<br
+/>SimpleCursorAdapter mAdapter;
+...
+
+public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
+    // Swap the new cursor in.  (The framework will take care of closing the
+    // old cursor once we return.)
+    mAdapter.swapCursor(data);
+}</pre>
+
+<h4 id="onLoaderReset">onLoaderReset</h4>
+
+<p>Este método é chamado quando um carregador anteriormente criado é reiniciado,
+tornando os dados indisponíveis. Este retorno de chamada permite que você descubra quando os dados
+estão prestes a serem liberados para que seja possível remover a referência a eles.  </p>
+<p>Esta implementação chama 
+{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}
+com um valor de <code>null</code>:</p>
+
+<pre>
+// This is the Adapter being used to display the list's data.
+SimpleCursorAdapter mAdapter;
+...
+
+public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
+    // This is called when the last Cursor provided to onLoadFinished()
+    // above is about to be closed.  We need to make sure we are no
+    // longer using it.
+    mAdapter.swapCursor(null);
+}</pre>
+
+
+<h2 id="example">Exemplo</h2>
+
+<p>Como exemplo, a seguir há uma implementação completa de um {@link
+android.app.Fragment} que exibe uma {@link android.widget.ListView} contendo
+os resultados de uma consulta aos provedores de conteúdo de contatos. Ela usa um {@link
+android.content.CursorLoader} para gerenciar a consulta no provedor.</p>
+ 
+<p>Para um aplicativo acessar os contatos de um usuário, como neste exemplo,
+o manifesto deverá incluir a permissão
+{@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS}.</p>
+
+<pre>
+public static class CursorLoaderListFragment extends ListFragment
+        implements OnQueryTextListener, LoaderManager.LoaderCallbacks&lt;Cursor&gt; {
+
+    // This is the Adapter being used to display the list's data.
+    SimpleCursorAdapter mAdapter;
+
+    // If non-null, this is the current filter the user has provided.
+    String mCurFilter;
+
+    @Override public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        // Give some text to display if there is no data.  In a real
+        // application this would come from a resource.
+        setEmptyText(&quot;No phone numbers&quot;);
+
+        // We have a menu item to show in action bar.
+        setHasOptionsMenu(true);
+
+        // Create an empty adapter we will use to display the loaded data.
+        mAdapter = new SimpleCursorAdapter(getActivity(),
+                android.R.layout.simple_list_item_2, null,
+                new String[] { Contacts.DISPLAY_NAME, Contacts.CONTACT_STATUS },
+                new int[] { android.R.id.text1, android.R.id.text2 }, 0);
+        setListAdapter(mAdapter);
+
+        // Prepare the loader.  Either re-connect with an existing one,
+        // or start a new one.
+        getLoaderManager().initLoader(0, null, this);
+    }
+
+    @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        // Place an action bar item for searching.
+        MenuItem item = menu.add(&quot;Search&quot;);
+        item.setIcon(android.R.drawable.ic_menu_search);
+        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+        SearchView sv = new SearchView(getActivity());
+        sv.setOnQueryTextListener(this);
+        item.setActionView(sv);
+    }
+
+    public boolean onQueryTextChange(String newText) {
+        // Called when the action bar search text has changed.  Update
+        // the search filter, and restart the loader to do a new query
+        // with this filter.
+        mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+        getLoaderManager().restartLoader(0, null, this);
+        return true;
+    }
+
+    @Override public boolean onQueryTextSubmit(String query) {
+        // Don't care about this.
+        return true;
+    }
+
+    @Override public void onListItemClick(ListView l, View v, int position, long id) {
+        // Insert desired behavior here.
+        Log.i(&quot;FragmentComplexList&quot;, &quot;Item clicked: &quot; + id);
+    }
+
+    // These are the Contacts rows that we will retrieve.
+    static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
+        Contacts._ID,
+        Contacts.DISPLAY_NAME,
+        Contacts.CONTACT_STATUS,
+        Contacts.CONTACT_PRESENCE,
+        Contacts.PHOTO_ID,
+        Contacts.LOOKUP_KEY,
+    };
+    public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+        // This is called when a new Loader needs to be created.  This
+        // sample only has one Loader, so we don't care about the ID.
+        // First, pick the base URI to use depending on whether we are
+        // currently filtering.
+        Uri baseUri;
+        if (mCurFilter != null) {
+            baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+                    Uri.encode(mCurFilter));
+        } else {
+            baseUri = Contacts.CONTENT_URI;
+        }
+
+        // Now create and return a CursorLoader that will take care of
+        // creating a Cursor for the data being displayed.
+        String select = &quot;((&quot; + Contacts.DISPLAY_NAME + &quot; NOTNULL) AND (&quot;
+                + Contacts.HAS_PHONE_NUMBER + &quot;=1) AND (&quot;
+                + Contacts.DISPLAY_NAME + &quot; != '' ))&quot;;
+        return new CursorLoader(getActivity(), baseUri,
+                CONTACTS_SUMMARY_PROJECTION, select, null,
+                Contacts.DISPLAY_NAME + &quot; COLLATE LOCALIZED ASC&quot;);
+    }
+
+    public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
+        // Swap the new cursor in.  (The framework will take care of closing the
+        // old cursor once we return.)
+        mAdapter.swapCursor(data);
+    }
+
+    public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
+        // This is called when the last Cursor provided to onLoadFinished()
+        // above is about to be closed.  We need to make sure we are no
+        // longer using it.
+        mAdapter.swapCursor(null);
+    }
+}</pre>
+<h3 id="more_examples">Mais exemplos</h3>
+
+<p>Há alguns exemplos variados na <strong>ApiDemos</strong>
+que ilustra o uso de carregadores:</p>
+<ul>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
+LoaderCursor</a> — uma versão completa do
+fragmento exibido acima.</li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> — um exemplo de como usar o regulador
+para reduzir o número de consultas que o provedor de conteúdo realiza quando os dados são alterados.</li>
+</ul>
+
+<p>Para obter mais informações sobre o download e a instalação de exemplos de SDK, consulte <a href="http://developer.android.com/resources/samples/get.html">Obtenção
+dos exemplos</a>. </p>
+
diff --git a/docs/html-intl/intl/pt-br/guide/components/processes-and-threads.jd b/docs/html-intl/intl/pt-br/guide/components/processes-and-threads.jd
new file mode 100644
index 0000000..c8e636d
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/components/processes-and-threads.jd
@@ -0,0 +1,411 @@
+page.title=Processos e encadeamentos
+page.tags=lifecycle,background
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Neste documento</h2>
+<ol>
+<li><a href="#Processes">Processos</a>
+  <ol>
+    <li><a href="#Lifecycle">Ciclo de vida dos processos</a></li>
+  </ol>
+</li>
+<li><a href="#Threads">Encadeamentos</a>
+  <ol>
+    <li><a href="#WorkerThreads">Encadeamentos de trabalho</a></li>
+    <li><a href="#ThreadSafe">Métodos seguros de encadeamento</a></li>
+  </ol>
+</li>
+<li><a href="#IPC">Comunicação entre processos</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Quando um componente de aplicativo inicia e o aplicativo não tem nenhum outro componente em execução,
+o sistema Android inicia um novo processo no Linux para o aplicativo com um único encadeamento
+de execução. Por padrão, todos os componentes do mesmo aplicativo são executados no mesmo processo
+e encadeamento (chamado de encadeamento "principal"). Se um componente de aplicativo iniciar e já existir um processo
+para este aplicativo (pois outro componente do aplicativo já existe), ele será iniciado
+dentro deste processo e usará o mesmo encadeamento de execução. No entanto, é possível organizar para que vários componentes
+no aplicativo sejam executados em processos separados e criar encadeamentos
+adicionais para qualquer processo.</p>
+
+<p>Este documento discute como os processos e os encadeamentos funcionam em um aplicativo do Android.</p>
+
+
+<h2 id="Processes">Processos</h2>
+
+<p>Por padrão, todos os componentes do mesmo aplicativo são executados no mesmo processo
+e a maioria dos aplicativos não deve alterar isso. No entanto, se achar que precisa de controle sobre o processo a que um certo
+componente pertence, é possível fazer isto no arquivo de manifesto.</p>
+
+<p>A entrada do manifesto para cada tipo de elemento de componente &mdash; <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a>, <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code
+&lt;service&gt;}</a>, <a href="{@docRoot}guide/topics/manifest/receiver-element.html">{@code
+&lt;receiver&gt;}</a> e <a href="{@docRoot}guide/topics/manifest/provider-element.html">{@code
+&lt;provider&gt;}</a> &mdash; é compatível com um atributo {@code android:process} que pode especificar
+um processo em que este componente deverá ser executado. É possível definir este atributo para que cada componente
+seja executado em seu próprio processo ou para que alguns componentes compartilhem um processo, enquanto que outros não.  Também é possível definir
+{@code android:process} para que os componentes de aplicativos diferentes sejam executados no mesmo
+processo &mdash; fornecido para que os aplicativos compartilhem o mesmo ID de usuário do Linux e sejam assinados
+com os mesmos certificados.</p>
+
+<p>O elemento <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code
+&lt;application&gt;}</a> também suporta um atributo {@code android:process}
+para definir um valor padrão que se aplique a todos os elementos.</p>
+
+<p>O Android pode decidir desativar um processo em certo ponto, quando a memória estiver baixa e for necessária
+para outros processos que atendem o usuário de forma mais imediata. Os componentes
+de aplicativo em execução no processo que é eliminado são consequentemente eliminados.  Um processo é iniciado
+novamente para aqueles componentes quando houver trabalho para eles.</p>
+
+<p>Ao decidir que processo eliminar, o sistema Android avalia a importância relativa dele
+para o usuário.  Por exemplo, ele fechará mais prontamente um processo que hospede atividades que não estejam mais
+visíveis na tela, comparado a um processo que hospede atividades visíveis. A decisão
+é exterminar processo ou não, portanto, depende do estado dos componentes em execução neste processo. As regras
+usadas para decidir quais processos serão exterminados são discutidas abaixo. </p>
+
+
+<h3 id="Lifecycle">Ciclo de vida dos processos</h3>
+
+<p>O sistema Android tenta manter um processo do aplicativo pelo maior período possível,
+mas eventualmente precisa remover processos antigos para recuperar memória para processos novos e mais importantes.  Para determinar
+quais processos manter
+e quais exterminar, o sistema posiciona cada um em uma "hierarquia de importância" com base
+nos componentes em execução e no estado deles.  Processos com menos importância
+serão eliminados primeiro e, em seguida, aqueles com a menor importância depois deles também serão, consecutivamente, até que os recursos
+do sistema sejam recuperados.</p>
+
+<p>Há cinco níveis na hierarquia de importância. A lista a seguir mostra os tipos
+de processo em ordem de importância (o primeiro processo é o <em>mais importante</em>
+e o <em>eliminado por último</em>):</p>
+
+<ol>
+  <li><b>Processos em primeiro plano</b>
+    <p>Um processo necessário para o que o usuário está fazendo.  Considera-se
+      um processo como em primeiro plano se qualquer uma das condições for verdadeira:</p>
+
+      <ul>
+        <li>Se ele hospedar uma {@link android.app.Activity} com a qual o usuário esteja interagindo (se o método {@link android.app.Activity#onResume onResume()} de {@link
+android.app.Activity}
+for chamado).</li>
+
+        <li>Se ele hospedar um {@link android.app.Service} vinculado à atividade com a qual o usuário
+esteja interagindo.</li>
+
+        <li>Se ele hospedar um {@link android.app.Service} em execução "em primeiro plano"&mdash; se o serviço
+tiver chamado {@link android.app.Service#startForeground startForeground()}.
+
+        <li>Se ele hospedar um {@link android.app.Service} que esteja executando um de seus retornos de chamada
+do ciclo de vida ({@link android.app.Service#onCreate onCreate()}, {@link android.app.Service#onStart
+onStart()}, ou {@link android.app.Service#onDestroy onDestroy()}).</li>
+
+        <li>Se ele hospedar um {@link android.content.BroadcastReceiver} que esteja executando seu método {@link
+        android.content.BroadcastReceiver#onReceive onReceive()}.</li>
+    </ul>
+
+    <p>Geralmente, somente poucos processos em primeiro plano existem em um determinado momento.  Eles serão eliminados
+somente como último recurso &mdash; se a memória estiver baixa demais para suportar a execução de todos.  Geralmente, neste ponto,
+o dispositivo atingiu o estado de paginação de memória. Portanto, eliminar alguns processos em primeiro plano
+é necessário para que a interface permaneça responsiva.</p></li>
+
+  <li><b>Processos visíveis</b>
+    <p>Um processo que não tenha nenhum componente em primeiro plano,
+      mas que ainda possa afetar o que o usuário vê na tela. Um processo é considerado visível
+      se uma das condições a seguir for verdadeira:</p>
+
+      <ul>
+        <li>Se ele hospedar um {@link android.app.Activity} que não esteja em primeiro plano,
+mas ainda seja visível para o usuário (o seu método {@link android.app.Activity#onPause onPause()} tiver sido chamado). 
+Isto poderá ocorrer, por exemplo, se a atividade em primeiro plano iniciar um diálogo, o que permitirá
+que a atividade anterior seja vista por trás dela.</li>
+
+        <li>Se ele hospedar um {@link android.app.Service} que esteja vinculado a uma atividade visível
+(ou em primeiro plano).</li>
+      </ul>
+
+      <p>Um processo visível é considerado extremamente importante e não será eliminado a não ser
+que seja necessário para manter em execução os processos em primeiro plano. </p>
+    </li>
+
+  <li><b>Processos de serviço</b>
+    <p>Um processo que esteja executando um serviço que tenha sido iniciado com o método {@link
+android.content.Context#startService startService()} e não
+esteja em uma das duas categorias mais altas. Apesar de processos de serviço não estarem diretamente ligados a tudo o que os usuários veem,
+eles estão geralmente fazendo coisas com que o usuário se importa (como reproduzindo música em segundo plano
+ou baixando dados na rede), então o sistema os mantém em execução a não ser que haja memória suficiente
+para retê-los juntamente com todos os processos visíveis e em primeiro plano. </p>
+  </li>
+
+  <li><b>Processos em segundo plano</b>
+    <p>Um processo que mantenha uma atividade que não esteja atualmente visível para o usuário (se o método
+{@link android.app.Activity#onStop onStop()} da atividade tiver sido chamado). Esses processos não têm impacto direto
+na experiência do usuário e o sistema poderá eliminá-los a qualquer momento para recuperar memória para processos
+em primeiro plano,
+visíveis ou de serviço. Geralmente há vários processos em segundo plano em execução e eles são mantidos
+em uma lista LRU (least recently used - menos usados recentemente) para garantir que o processo com a atividade
+que foi mais vista recentemente pelo usuário seja a última a ser eliminada. Se uma atividade implementar o seu método de ciclo de vida
+corretamente e salvar o estado atual, eliminar o seu processo não terá efeito visível
+na experiência do usuário, pois quando ele navegar de volta à atividade, ela restaurará
+todo o estado visível. Consulte o documento <a href="{@docRoot}guide/components/activities.html#SavingActivityState">Atividades</a>
+para obter informações sobre os estados de restauração e de gravação.</p>
+  </li>
+
+  <li><b>Processos vazios</b>
+    <p>Um processo que não possui nenhum componente de aplicativo ativo.  O único motivo para manter este tipo de processo
+ativo é para armazenamento em cache, para aprimorar o tempo de inicialização
+na próxima vez em que um componente precisar executá-lo.  O sistema frequentemente elimina esses processos para equilibrar os recursos do sistema em geral
+entre os armazenamentos em cache do processo e os de núcleo subjacente.</p>
+  </li>
+</ol>
+
+
+  <p>O Android coloca o processo no maior nível possível, com base na importância dos componentes
+atualmente ativos no processo.  Por exemplo, se um processo hospedar um serviço e uma atividade visível
+, ele terá a classificação de um processo visível, e não a de um processo de serviço.</p>
+
+  <p>Além disso, a classificação de um processo pode ser elevada porque outros processos
+dependem dele &mdash; um processo que está servindo a outro processo nunca pode ter classificação menor
+do que a do processo que está sendo servido. Por exemplo, se um provedor de conteúdo no processo A estiver servindo um cliente no processo B,
+ou se um serviço no processo A estiver vinculado a um componente no processo B, o processo A será sempre considerado
+menos importante do que o processo B.</p>
+
+  <p>Como um processo que executa um serviço tem classificação maior do que um processo com atividades em segundo plano,
+uma atividade que iniciar uma operação de longo prazo poderá também iniciar um <a href="{@docRoot}guide/components/services.html">serviço</a> para esta operação, em vez de simplesmente
+criar um encadeamento de trabalho &mdash; especificamente se a operação exceder a atividade.
+Por exemplo, uma atividade que esteja fazendo upload de uma imagem para um site deverá iniciar um serviço
+para fazer o upload para que ele possa continuar em segundo plano mesmo se o usuário deixar a atividade.
+Usar um serviço garante que a operação tenha pelo menos a prioridade "processo de serviço",
+independente do que acontecer à atividade. Este é o mesmo motivo pelo qual os receptores de transmissão devem
+empregar serviços em vez de simplesmente usar operações que consomem tempo em um encadeamento.</p>
+
+
+
+
+<h2 id="Threads">Encadeamentos</h2>
+
+<p>Quando um aplicativo é executado, o sistema cria um encadeamento de execução para ele,
+chamado de "principal". Este encadeamento é muito importante, pois está encarregado de despachar eventos
+para os widgets adequados da interface do usuário, incluindo eventos de desenho. É também o encadeamento
+em que o aplicativo interage com componentes do kit de ferramentas da IU do Android (componentes dos pacotes {@link
+android.widget} e {@link android.view}). Portanto, o encadeamento principal, às vezes,
+também chama o encadeamento da IU.</p>
+
+<p>O sistema <em>não</em> cria um encadeamento separado para cada instância de um componente. Todos os componentes
+executados no mesmo processo são instanciados no encadeamento da IU, e as chamadas do sistema
+para cada componente são despachadas deste encadeamento. Consequentemente, métodos que respondam aos retornos de chamada
+(como {@link android.view.View#onKeyDown onKeyDown()} para informar ações de usuário
+ou um método de retorno de chamada do ciclo de vida) sempre serão executados no encadeamento da IU do processo.</p>
+
+<p>Por exemplo, quando o usuário toca em um botão na tela, o encadeamento da IU do aplicativo despacha
+o evento de toque para o widget que, em troca, ativa o seu estado pressionado e publica uma solicitação de invalidação
+à fila do evento. O encadeamento da IU retira a solicitação da fila e notifica o widget de que ele deve
+desenhar novamente por conta própria.</p>
+
+<p>Quando o aplicativo realiza trabalho intenso em resposta à interação do usuário, este modelo de único encadeamento
+pode produzir desempenho inferior a não ser que você implemente o aplicativo adequadamente. Especificamente, se tudo estiver
+acontecendo no encadeamento da IU, realizar operações longas, como acesso à rede
+ou consultas a banco de dados, bloqueará toda a IU. Quando o encadeamento é bloqueado, nenhum evento pode ser despachado,
+incluindo eventos de desenho. Da perspectiva do usuário,
+o aplicativo parece travar. Pior ainda, se o encadeamento da IU for bloqueado por mais do que alguns segundos
+(cerca de 5 segundos atualmente), o usuário receberá a vergonhosa mensagem "<a href="http://developer.android.com/guide/practices/responsiveness.html">aplicativo
+não respondendo</a>" (ANR). O usuário poderá, então, decidir fechar o aplicativo e desinstalá-lo
+se estiver descontente.</p>
+
+<p>Além disso, o kit de ferramentas de IU do Android <em>não</em> é seguro para encadeamentos. Portanto, você não deve manipular a IU
+a partir de um encadeamento de trabalho &mdash; deve-se realizar toda a manipulação para a interface do usuário
+a partir do encadeamento da IU. Com isso dito, há duas regras simples para o modelo de encadeamento único do Android:</p>
+
+<ol>
+<li>Não bloquear o encadeamento da IU
+<li>Não acessar o kit de ferramentas de IU do Android fora do encadeamento da IU
+</ol>
+
+<h3 id="WorkerThreads">Encadeamentos de trabalho</h3>
+
+<p>Por causa do modelo de encadeamento único descrito acima, é essencial para a capacidade de resposta da IU do aplicativo
+que você não bloqueie o encadeamento da IU. Caso tenha operações a realizar
+que não sejam instantâneas, deverá certificar-se de fazê-las em encadeamentos separados (encadeamentos de "segundo plano"
+ou "de trabalho").</p>
+
+<p>Por exemplo, abaixo apresenta-se o código de uma escuta de clique que baixa uma imagem de um encadeamento separado
+e exibe-a em uma {@link android.widget.ImageView}:</p>
+
+<pre>
+public void onClick(View v) {
+    new Thread(new Runnable() {
+        public void run() {
+            Bitmap b = loadImageFromNetwork("http://example.com/image.png");
+            mImageView.setImageBitmap(b);
+        }
+    }).start();
+}
+</pre>
+
+<p>À primeira vista, parece não apresentar problemas, pois ele cria um novo encadeamento para lidar
+com a operação de rede. No entanto, ele viola a segunda regra do modelo de encadeamento único: <em>não acessar o kit de ferramentas de IU do Android
+de fora do encadeamento da IU</em> &mdash; este exemplo modifica o {@link
+android.widget.ImageView} a partir do encadeamento de trabalho em vez de o encadeamento da IU. Isto pode resultar em comportamentos
+inesperados e indefinidos, que podem ser difíceis de rastrear e consumir bastante tempo.</p>
+
+<p>Para resolver este problema, o Android oferece várias maneiras de acessar o encadeamento da IU a partir
+de outros encadeamentos. Abaixo há uma lista dos métodos que podem ajudar:</p>
+
+<ul>
+<li>{@link android.app.Activity#runOnUiThread(java.lang.Runnable)
+Activity.runOnUiThread(Runnable)}</li>
+<li>{@link android.view.View#post(java.lang.Runnable) View.post(Runnable)}</li>
+<li>{@link android.view.View#postDelayed(java.lang.Runnable, long) View.postDelayed(Runnable,
+long)}</li>
+</ul>
+
+<p>Por exemplo, é possível resolver o código acima usando o método {@link
+android.view.View#post(java.lang.Runnable) View.post(Runnable)}:</p>
+
+<pre>
+public void onClick(View v) {
+    new Thread(new Runnable() {
+        public void run() {
+            final Bitmap bitmap = loadImageFromNetwork("http://example.com/image.png");
+            mImageView.post(new Runnable() {
+                public void run() {
+                    mImageView.setImageBitmap(bitmap);
+                }
+            });
+        }
+    }).start();
+}
+</pre>
+
+<p>Agora esta implementação é segura para encadeamentos: a operação de rede é concluída a partir de um encadeamento separado
+enquanto que a {@link android.widget.ImageView} é manipulada a partir do encadeamento da IU.</p>
+
+<p>No entanto, à medida que a complexidade da operação aumenta, este tipo de código pode tornar-se complexo
+e difícil demais para ser mantido. Para lidar com interações mais complexas com um encadeamento de trabalho, considere
+usar um {@link android.os.Handler} nele para processar as mensagens entregues
+pelo encadeamento da IU. Apesar de que, talvez, a melhor solução seja estender a classe {@link android.os.AsyncTask},
+que simplifica a execução das tarefas do encadeamento de trabalho que precisam interagir com a IU.</p>
+
+
+<h4 id="AsyncTask">Uso de AsyncTask</h4>
+
+<p>{@link android.os.AsyncTask} permite que você trabalhe de forma assíncrona
+na interface do usuário. Ela realiza operações de bloqueio em um encadeamento de trabalho e, em seguida, publica os resultados
+no encadeamento da IU, sem que você precise lidar com os encadeamentos e/ou os manipuladores.</p>
+
+<p>Para usá-la, você deve atribuir a subclasse {@link android.os.AsyncTask} e implementar o método de retorno de chamada {@link
+android.os.AsyncTask#doInBackground doInBackground()}, que executa uma série
+de encadeamentos de segundo plano. Para atualizar a IU, deve-se implementar {@link
+android.os.AsyncTask#onPostExecute onPostExecute()}, que entrega o resultado de {@link
+android.os.AsyncTask#doInBackground doInBackground()} e é executado no encadeamento da IU para que seja possível
+atualizar a IU de forma segura. É possível, em seguida, executar a tarefa chamando {@link android.os.AsyncTask#execute execute()}
+a partir do encadeamento da IU.</p>
+
+<p>Por exemplo, é possível implementar o exemplo anterior usando {@link android.os.AsyncTask}
+da seguinte forma:</p>
+
+<pre>
+public void onClick(View v) {
+    new DownloadImageTask().execute("http://example.com/image.png");
+}
+
+private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
+    /** The system calls this to perform work in a worker thread and
+      * delivers it the parameters given to AsyncTask.execute() */
+    protected Bitmap doInBackground(String... urls) {
+        return loadImageFromNetwork(urls[0]);
+    }
+    
+    /** The system calls this to perform work in the UI thread and delivers
+      * the result from doInBackground() */
+    protected void onPostExecute(Bitmap result) {
+        mImageView.setImageBitmap(result);
+    }
+}
+</pre>
+
+<p>Agora a IU está segura e o código está mais simples, pois ele separa o trabalho
+em uma parte que deve ser feita em um encadeamento de trabalho e outra parte que deve ser feita no encadeamento da IU.</p>
+
+<p>Leia a referência {@link android.os.AsyncTask} para compreender melhor
+o uso desta classe, mas a seguir há uma visão geral rápida sobre como ela funciona:</p>
+
+<ul>
+<li>É possível especificar o tipo dos parâmetros, valores de progresso e valor final
+da tarefa, usando genéricos</li>
+<li>O método {@link android.os.AsyncTask#doInBackground doInBackground()} é executado automaticamente
+em um encadeamento de trabalho</li>
+<li>{@link android.os.AsyncTask#onPreExecute onPreExecute()}, {@link
+android.os.AsyncTask#onPostExecute onPostExecute()} e {@link
+android.os.AsyncTask#onProgressUpdate onProgressUpdate()} são invocados no encadeamento da IU</li>
+<li>O valor retornado por {@link android.os.AsyncTask#doInBackground doInBackground()}
+é enviado para {@link android.os.AsyncTask#onPostExecute onPostExecute()}</li>
+<li>É possível chamar {@link android.os.AsyncTask#publishProgress publishProgress()} a qualquer momento em {@link
+android.os.AsyncTask#doInBackground doInBackground()} para executar {@link
+android.os.AsyncTask#onProgressUpdate onProgressUpdate()} no encadeamento da IU</li>
+<li>É possível cancelar a tarefa a qualquer momento, a partir de qualquer encadeamento</li>
+</ul>
+
+<p class="caution"><strong>Atenção:</strong> outro problema que pode ocorrer ao usar
+um encadeamento de trabalho são reinicializações inesperadas da atividade devido a <a href="{@docRoot}guide/topics/resources/runtime-changes.html">alterações na configuração em tempo de execução</a>
+(como quando o usuário altera a orientação da tela), que podem eliminar o encadeamento de trabalho. Para ver como é possível
+manter uma tarefa durante uma dessas reinicializações e como cancelar adequadamente a tarefa
+quando a atividade for eliminada, consulte o código fonte do aplicativo <a href="http://code.google.com/p/shelves/">Prateleiras</a> de exemplo.</p>
+
+
+<h3 id="ThreadSafe">Métodos seguros de encadeamento</h3>
+
+<p> Em algumas situações, os métodos implementados podem ser chamados a partir de mais de um encadeamento e, portanto,
+devem ser programados para serem seguros para encadeamento. </p>
+
+<p>Isto é especialmente verdadeiro para métodos que podem ser cancelados remotamente &mdash; como métodos em um <a href="{@docRoot}guide/components/bound-services.html">serviço vinculado</a>. Quando uma chamada
+de um método implementado em um {@link android.os.IBinder} tiver origem no mesmo processo
+em que {@link android.os.IBinder IBinder} estiver em execução, o método será executado no encadeamento do autor da chamada.
+No entanto, quando a chamada tiver origem em outro processo, o método será executado em um encadeamento
+escolhido a partir de uma série de encadeamentos que o sistema mantém no mesmo processo que {@link android.os.IBinder
+IBinder} (ele não será executado no encadeamento da IU do processo).  Por exemplo, enquanto o método
+{@link android.app.Service#onBind onBind()} de um serviço seria chamado a partir de um encadeamento da IU do processo
+de um serviço, os métodos implementados no objeto que {@link android.app.Service#onBind
+onBind()} retorna (por exemplo, uma subclasse que implementa métodos de RPC) seriam chamados
+a partir dos encadeamentos no conjunto. Como um serviço pode ter mais de um cliente, mais de um encadeamento no conjunto
+pode envolver o mesmo método {@link android.os.IBinder IBinder} ao mesmo tempo. Os métodos {@link android.os.IBinder
+IBinder} devem, portanto, ser implementados para serem seguros para encadeamentos.</p>
+
+<p> De forma semelhante, um provedor de conteúdo pode receber solicitações de dados que tenham origem em outros processos.
+Apesar de as classes {@link android.content.ContentResolver} e {@link android.content.ContentProvider}
+ocultarem os detalhes de como a comunicação entre processos é gerenciada, os métodos {@link
+android.content.ContentProvider} que respondem a essas solicitações &mdash; os métodos {@link
+android.content.ContentProvider#query query()}, {@link android.content.ContentProvider#insert
+insert()}, {@link android.content.ContentProvider#delete delete()}, {@link
+android.content.ContentProvider#update update()} e {@link android.content.ContentProvider#getType
+getType()} &mdash; serão chamados de um conjunto de encadeamentos no processo do provedor de conteúdo, não no encadeamento da IU
+para o processo.  Como esses métodos podem ser chamados a partir de qualquer quantidade de encadeamentos
+ao mesmo tempo, eles também devem ser implementados para serem seguros para encadeamento. </p>
+
+
+<h2 id="IPC">Comunicação entre processos</h2>
+
+<p>O Android oferece um mecanismo para comunicação entre processos (IPC) usando chamadas de procedimento remoto (RPCs),
+onde um método é chamado por uma atividade ou outro componente de aplicativo, mas é executado
+remotamente (em outro processo), com qualquer resultado retornado
+de volta ao autor da chamada. Isto acarreta na decomposição de uma chamada de método e de seus dados para um nível em que o sistema operacional
+possa entender, transmitindo-a do processo local e do espaço de endereço ao processo remoto
+e ao espaço de endereço e, em seguida, remontando e restabelecendo a chamada lá.  Os valores de retorno
+são transmitidos na direção oposta.  O Android fornece todo o código para realizar essas operações
+de IPC para que você possa concentrar-se em definir e implementar a interface de programação de RPC. </p>
+
+<p>Para realizar o IPC, o aplicativo deve vincular-se a um serviço usando {@link
+android.content.Context#bindService bindService()}. Para obter mais informações, consulte o guia do desenvolvedor <a href="{@docRoot}guide/components/services.html">Serviços</a>.</p>
+
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For information about how to perform work in the background for an indefinite period of time
+(without a user interface), continue with the <b><a
+href="{@docRoot}guide/components/services.html">Services</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/pt-br/guide/components/recents.jd b/docs/html-intl/intl/pt-br/guide/components/recents.jd
new file mode 100644
index 0000000..467f620
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/components/recents.jd
@@ -0,0 +1,256 @@
+page.title=Tela de visão geral
+page.tags="recents","overview"
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>Neste documento</h2>
+  <ol>
+    <li><a href="#adding">Adição de tarefas à tela de visão geral</a>
+      <ol>
+        <li><a href="#flag-new-doc">Uso do sinalizador Intent para adicionar uma tarefa</a></li>
+        <li><a href="#attr-doclaunch">Uso do atributo Activity para adicionar uma tarefa</a></li>
+      </ol>
+    </li>
+    <li><a href="#removing">Remoção de tarefas</a>
+      <ol>
+        <li><a href="#apptask-remove">Uso da classe AppTask para remover tarefas</a></li>
+        <li><a href="#retain-finished">Retenção de tarefas terminadas</a></li>
+      </ol>
+    </li>
+  </ol>
+
+  <h2>Classes principais</h2>
+  <ol>
+    <li>{@link android.app.ActivityManager.AppTask}</li>
+    <li>{@link android.content.Intent}</li>
+  </ol>
+
+  <h2>Exemplo de código</h2>
+  <ol>
+    <li><a href="{@docRoot}samples/DocumentCentricApps/index.html">Aplicativos centralizados em documentos</a></li>
+  </ol>
+
+</div>
+</div>
+
+<p>A tela de visão geral (também chamada de tela de recentes, lista de tarefas recentes ou aplicativos recentes)
+é uma IU de nível de sistema que lista <a href="{@docRoot}guide/components/activities.html">
+atividades</a> e <a href="{@docRoot}guide/components/tasks-and-back-stack.html">tarefas</a> acessadas recentemente. O
+usuário pode navegar pela lista e selecionar uma tarefa a retomar ou remover uma tarefa da
+lista deslizando-a para fora. Com a versão 5.0 do Android (API de nível 21), várias instâncias da
+mesma atividade contendo diferentes documentos podem aparecer como tarefas na tela de visão geral. Por exemplo, o 
+Google Drive pode ter uma tarefa para cada um dos vários documentos do Google. Cada documento aparece como uma
+tarefa na tela de visão geral.</p>
+
+<img src="{@docRoot}images/components/recents.png" alt="" width="284" />
+<p class="img-caption"><strong>Figura 1.</strong> A tela de visão geral mostrando três documentos do Google Drive,
+cada um representado como uma tarefa separada.</p>
+
+<p>Normalmente, você deve permitir que o sistema defina como as tarefas e as
+atividades são representadas na tela de visão geral e não precisa modificar esse comportamento.
+No entanto, o seu aplicativo pode determinar como e quando as atividades aparecem na tela de visão geral. A
+classe {@link android.app.ActivityManager.AppTask} permite gerenciar tarefas e os sinalizadores de atividade da classe
+{@link android.content.Intent} permitem especificar quando uma atividade é adicionada ou removida da
+tela de visão geral. Além disso, os atributos <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
+&lt;activity&gt;</a></code> permitem definir o comportamento no manifesto.</p>
+
+<h2 id="adding">Adição de tarefas à tela de visão geral</h2>
+
+<p>Usar os sinalizadores da classe {@link android.content.Intent} para adicionar uma tarefa permite maior controle sobre
+quando e como um documento é aberto ou reaberto na tela de visão geral. Ao usar os atributos
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
+é possível escolher entre sempre abrir o documento em uma nova tarefa ou reutilizar uma
+tarefa existente para o documento.</p>
+
+<h3 id="flag-new-doc">Uso do sinalizador Intent para adicionar uma tarefa</h3>
+
+<p>Ao criar um novo documento para a atividade, você chama o método
+{@link android.app.ActivityManager.AppTask#startActivity(android.content.Context, android.content.Intent, android.os.Bundle) startActivity()}
+da classe {@link android.app.ActivityManager.AppTask}, passando a ele a intenção que
+inicia a atividade. Para inserir uma quebra lógica para que o sistema trate a atividade como uma nova
+tarefa na tela de visão geral, passe o sinalizador {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+no método {@link android.content.Intent#addFlags(int) addFlags()} da {@link android.content.Intent}
+que inicia a atividade.</p>
+
+<p class="note"><strong>Observação:</strong> o sinalizador {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+substitui o sinalizador {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET},
+obsoleto a partir do Android 5.0 (API de nível 21).</p>
+
+<p>Se você usar o sinalizador {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} ao criar
+o novo documento, o sistema sempre criará uma nova tarefa com a atividade-alvo como raiz.
+Essa configuração permite que o mesmo documento seja aberto em mais de uma tarefa. O código a seguir demonstra
+como a atividade principal faz isso:</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+DocumentCentricActivity.java</a></p>
+<pre>
+public void createNewDocument(View view) {
+      final Intent newDocumentIntent = newDocumentIntent();
+      if (useMultipleTasks) {
+          newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
+      }
+      startActivity(newDocumentIntent);
+  }
+
+  private Intent newDocumentIntent() {
+      boolean useMultipleTasks = mCheckbox.isChecked();
+      final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
+      newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
+      newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());
+      return newDocumentIntent;
+  }
+
+  private static int incrementAndGet() {
+      Log.d(TAG, "incrementAndGet(): " + mDocumentCounter);
+      return mDocumentCounter++;
+  }
+}
+</pre>
+
+<p class="note"><strong>Observação:</strong> Atividades iniciadas com o sinalizador {@code FLAG_ACTIVITY_NEW_DOCUMENT}
+devem ter o valor do atributo {@code android:launchMode="standard"} (o padrão) definido no
+manifesto.</p>
+
+<p>Quando a atividade principal inicia uma nova atividade, o sistema procura nas tarefas existentes uma
+cuja intenção corresponda ao nome do componente da intenção e aos dados de Intent para a atividade. Se a tarefa
+não for encontrada ou se a intenção continha o sinalizador {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK},
+uma nova tarefa será criada com a atividade como raiz. Se o sistema encontrar uma tarefa, ele a trará
+para a frente e passará a nova intenção para {@link android.app.Activity#onNewIntent onNewIntent()}.
+A nova atividade receberá a intenção e criará um novo documento na tela de visão geral, como no
+exemplo a seguir:</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+NewDocumentActivity.java</a></p>
+<pre>
+&#64;Override
+protected void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_new_document);
+    mDocumentCount = getIntent()
+            .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0);
+    mDocumentCounterTextView = (TextView) findViewById(
+            R.id.hello_new_document_text_view);
+    setDocumentCounterText(R.string.hello_new_document_counter);
+}
+
+&#64;Override
+protected void onNewIntent(Intent intent) {
+    super.onNewIntent(intent);
+    /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this activity
+    is reused to create a new document.
+     */
+    setDocumentCounterText(R.string.reusing_document_counter);
+}
+</pre>
+
+
+<h3 id="#attr-doclaunch">Uso do atributo Activity para adicionar uma tarefa</h3>
+
+<p>Uma atividade também pode especificar em seu manifesto que sempre iniciará uma nova tarefa usando
+o atributo <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
+ <a href="{@docRoot}guide/topics/manifest/activity-element.html#dlmode">
+{@code android:documentLaunchMode}</a>. Esse atributo tem quatro valores que produzem os seguintes
+efeitos quando o usuário abre um documento com o aplicativo:</p>
+
+<dl>
+  <dt>"{@code intoExisting}"</dt>
+  <dd>A atividade reutiliza uma tarefa existente para o documento. Isso é o mesmo que configurar o
+  sinalizador {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} <em>sem</em> configurar 
+  o sinalizador {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}, como descrito em 
+  <a href="#flag-new-doc">Uso do sinalizador Intent para adicionar uma tarefa</a> acima.</dd>
+
+  <dt>"{@code always}"</dt>
+  <dd>A atividade cria uma nova tarefa para o documento, mesmo se o mesmo já estiver aberto. Usar
+  esse valor é o mesmo que configurar os sinalizadores {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+  e {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}.</dd>
+
+  <dt>"{@code none”}"</dt>
+  <dd>A atividade não cria uma nova tarefa para o documento. A tela de visão geral trata a
+  atividade como aconteceria por padrão: ela exibe uma tarefa para o aplicativo, que 
+  retoma a atividade invocada por último pelo usuário.</dd>
+
+  <dt>"{@code never}"</dt>
+  <dd>A atividade não cria uma nova tarefa para o documento. Definir esse valor substitui o
+  comportamento dos sinalizadores {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+  e {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}, caso um deles esteja definido
+  na intenção, e a tela de visão geral exibe uma tarefa para o aplicativo, que retoma a
+  atividade invocada por último pelo usuário.</dd>
+</dl>
+
+<p class="note"><strong>Observação:</strong> para valores diferentes de {@code none} e {@code never}, a
+atividade deve ser definida com {@code launchMode="standard"}. Se esse atributo não for especificado,
+{@code documentLaunchMode="none"} será usado.</p>
+
+<h2 id="removing">Remoção de tarefas</h2>
+
+<p>Por padrão, uma tarefa de documento é automaticamente removida da tela de visão geral quando a atividade
+termina. Esse comportamento pode ser substituído com a classe {@link android.app.ActivityManager.AppTask},
+com um sinalizador {@link android.content.Intent} ou com um atributo <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
+&lt;activity&gt;</a></code>.</p>
+
+<p>É possível excluir inteiramente uma tarefa da tela de visão geral definindo o
+atributo <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
+ <a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">
+{@code android:excludeFromRecents}</a> como {@code true}.</p>
+
+<p>É possível definir o número máximo de tarefas que o aplicativo pode incluir na tela de visão geral definindo
+o atributo <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#maxrecents">{@code android:maxRecents}
+</a> como um valor inteiro. O padrão é 16. Quando o número máximo de tarefas é atingido, a tarefa usada menos
+recentemente é removida da tela de visão geral. O valor máximo de {@code android:maxRecents}
+é 50 (25 em dispositivos com pouca memória); valores menores que 1 não são válidos.</p>
+
+<h3 id="#apptask-remove">Uso da classe AppTask para remover tarefas</h3>
+
+<p>Na atividade que cria uma nova tarefa na tela de visão geral, é possível 
+especificar quando remover a tarefa e terminar todas as atividades associadas a ela chamando
+o método {@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()}.</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+NewDocumentActivity.java</a></p>
+<pre>
+public void onRemoveFromRecents(View view) {
+    // The document is no longer needed; remove its task.
+    finishAndRemoveTask();
+}
+</pre>
+
+<p class="note"><strong>Observação:</strong> o uso
+do método {@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()}
+substitui o uso do sinalizador {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS}
+discutido abaixo.</p>
+
+<h3 id="#retain-finished">Retenção de tarefas terminadas</h3>
+
+<p>Se você deseja reter uma tarefa na tela de visão geral, mesmo que a atividade tenha terminado, passe
+o sinalizador {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} no
+método {@link android.content.Intent#addFlags(int) addFlags()} da Intent que inicia a atividade.</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+DocumentCentricActivity.java</a></p>
+<pre>
+private Intent newDocumentIntent() {
+    final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
+    newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
+      android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS);
+    newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());
+    return newDocumentIntent;
+}
+</pre>
+
+<p>Para obter o mesmo efeito, defina o
+atributo <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#autoremrecents">
+{@code android:autoRemoveFromRecents}</a> como {@code false}. O valor padrão é {@code true}
+para atividades de documentos e {@code false} para atividades comuns. Usar esse atributo substitui
+o sinalizador {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} discutido anteriormente.</p>
+
+
+
+
+
+
+
diff --git a/docs/html-intl/intl/pt-br/guide/components/services.jd b/docs/html-intl/intl/pt-br/guide/components/services.jd
new file mode 100644
index 0000000..123d90a
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/components/services.jd
@@ -0,0 +1,813 @@
+page.title=Serviços
+@jd:body
+
+<div id="qv-wrapper">
+<ol id="qv">
+<h2>Neste documento</h2>
+<ol>
+<li><a href="#Basics">Conceitos básicos</a></li>
+<ol>
+  <li><a href="#Declaring">Declaração de serviço no manifesto</a></li>
+</ol>
+<li><a href="#CreatingAService">Criação de serviço iniciado</a>
+  <ol>
+    <li><a href="#ExtendingIntentService">Extensão da classe IntentService</a></li>
+    <li><a href="#ExtendingService">Extensão da classe Service</a></li>
+    <li><a href="#StartingAService">Início de serviço</a></li>
+    <li><a href="#Stopping">Interrupção de serviço</a></li>
+  </ol>
+</li>
+<li><a href="#CreatingBoundService">Criação de serviço vinculado</a></li>
+<li><a href="#Notifications">Envio de notificações ao usuário</a></li>
+<li><a href="#Foreground">Execução de serviço em primeiro plano</a></li>
+<li><a href="#Lifecycle">Gerenciamento do ciclo de vida de um serviço</a>
+<ol>
+  <li><a href="#LifecycleCallbacks">Implementação dos retornos de chamada do ciclo de vida</a></li>
+</ol>
+</li>
+</ol>
+
+<h2>Classes principais</h2>
+<ol>
+  <li>{@link android.app.Service}</li>
+  <li>{@link android.app.IntentService}</li>
+</ol>
+
+<h2>Exemplos</h2>
+<ol>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.html">{@code
+      ServiceStartArguments}</a></li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+      LocalService}</a></li>
+</ol>
+
+<h2>Veja também</h2>
+<ol>
+<li><a href="{@docRoot}guide/components/bound-services.html">Serviços vinculados</a></li>
+</ol>
+
+</div>
+
+
+<p>Um {@link android.app.Service} é um componente do aplicativo que pode realizar
+operações longas e não fornece uma interface do usuário. Outro componente do aplicativo
+pode iniciar um serviço e ele continuará em execução em segundo plano mesmo que o usuário
+alterne para outro aplicativo. Além disso, um componente poderá vincular-se a um serviço
+para interagir com ele e até estabelecer comunicação entre processos (IPC). Por exemplo, um serviço pode lidar
+com operações de rede, reproduzir música, executar E/S de arquivos, ou interagir com um provedor de conteúdo,
+tudo a partir do segundo plano.</p>
+
+<p>Um serviço pode essencialmente ter duas formas:</p>
+
+<dl>
+  <dt>Iniciado</dt>
+  <dd>Um serviço é "iniciado" quando um componente do aplicativo (como um atividade)
+inicia-o chamando {@link android.content.Context#startService startService()}. Quando iniciado, um serviço
+pode ficar em execução em segundo plano indefinidamente, mesmo que o componente que o iniciou seja destruído. Geralmente,
+um serviço iniciado realiza uma única operação e não retorna um resultado para o autor da chamada.
+Por exemplo, ele pode fazer download ou upload de um arquivo pela rede. Quando a operação for concluída,
+o serviço deverá ser interrompido.</dd>
+  <dt>Vinculado</dt>
+  <dd>Um serviço é "vinculado" quando um componente do aplicativo o vincula chamando {@link
+android.content.Context#bindService bindService()}. Um serviço vinculado oferece uma interface
+servidor-cliente que permite que os componentes interajam com a interface, enviem solicitações, obtenham resultados,
+mesmo em processos com comunicação interprocessual (IPC). Um serviço vinculado permanece em execução somente enquanto
+outro componente do aplicativo estiver vinculado a ele. Vários componentes podem ser vinculados ao serviço de uma só vez,
+mas quando todos desfizerem o vínculo, o serviço será destruído.</dd>
+</dl>
+
+<p>Apesar de esta documentação discutir os dois tipos de serviços separadamente,
+um serviço pode funcionar das duas maneiras &mdash; ele pode ser iniciado (para permanecer em execução indefinidamente) e também permitir a vinculação.
+Basta você implementar alguns métodos de retorno de chamada: {@link
+android.app.Service#onStartCommand onStartCommand()} para permitir que os componentes iniciem o serviço e {@link
+android.app.Service#onBind onBind()} para permitir a vinculação.</p>
+
+<p>Se o aplicativo for iniciado, vinculado ou ambos, qualquer componente do aplicativo
+poderá usar o serviço (mesmo a partir de um aplicativo separado), da mesma forma que qualquer componente poderá usar
+uma atividade &mdash; iniciando com uma {@link android.content.Intent}. No entanto, é possível declarar
+o serviço como privado, no arquivo do manifesto, e bloquear o acesso de outros aplicativos. Isto é discutido com mais detalhes
+na seção <a href="#Declaring">Declaração do serviço
+no manifesto</a>.</p>
+
+<p class="caution"><strong>Atenção:</strong> um serviço é executado
+no encadeamento principal em seu processo de hospedagem &mdash; o serviço <strong>não</strong> cria seu próprio encadeamento
+e <strong>não</strong> é executado em um processo separado (salvo se especificado). Isso significa que,
+ se o serviço for realizar qualquer trabalho intensivo de CPU ou operações de bloqueio (como reprodução
+de MP3 ou rede), você deve criar um novo encadeamento dentro do serviço. Usando um encadeamento separado,
+você reduzirá o risco da ocorrência de erros de Aplicativo não respondendo (ANR)
+e o encadeamento principal do aplicativo poderá permanecer dedicado à interação do usuário com as atividades.</p>
+
+
+<h2 id="Basics">Conceitos básicos</h2>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>Você deve usar um serviço ou um encadeamento?</h3>
+  <p>Um serviço é simplesmente um componente que pode ser executado em segundo plano mesmo quando o usuário
+não está interagindo com o aplicativo. Portanto, um serviço deve ser criado somente
+se for realmente necessário.</p>
+  <p>Caso precise realizar trabalhos fora do encadeamento principal, mas somente enquanto o usuário estiver interagindo
+com o aplicativo, então você deve criar um novo encadeamento e não um serviço. Por exemplo,
+se quiser reproduzir músicas, mas somente enquanto a atividade estiver em execução, você pode criar um encadeamento
+em {@link android.app.Activity#onCreate onCreate()}, iniciando a execução em {@link
+android.app.Activity#onStart onStart()}, e interrompendo em {@link android.app.Activity#onStop
+onStop()}. Considere também usar {@link android.os.AsyncTask} ou {@link android.os.HandlerThread},
+em vez de a classe tradicional {@link java.lang.Thread}. Consulte o documento <a href="{@docRoot}guide/components/processes-and-threads.html#Threads">Processos e
+encadeamentos</a> para obter mais informações sobre encadeamentos.</p>
+  <p>Lembre-se de que, se usar um serviço, ele ainda será executado no encadeamento principal do aplicativo por padrão,
+portanto deve-se criar um novo encadeamento dentro do serviço se ele realizar operações
+intensivas ou de bloqueio.</p>
+</div>
+</div>
+
+<p>Para criar um serviço, você deve criar uma subclasse de {@link android.app.Service}
+(ou uma das subclasses existentes). Na implementação, será necessário substituir alguns métodos de retorno de chamada
+que lidem com aspectos essenciais do ciclo de vida do serviço e forneçam um mecanismo para vincular
+componentes ao serviço, se apropriado. Os dois métodos mais importantes de retorno de chamada que você deve substituir são:</p>
+
+<dl>
+  <dt>{@link android.app.Service#onStartCommand onStartCommand()}</dt>
+    <dd>O sistema chama este método quando outro componente, como uma atividade,
+solicita que o serviço seja iniciado, chamando {@link android.content.Context#startService
+startService()}. Quando este método é executado, o serviço é iniciado e pode ser executado
+em segundo plano indefinidamente. Se implementar isto, é de sua responsabilidade interromper o serviço
+quando o trabalho for concluído, chamando {@link android.app.Service#stopSelf stopSelf()} ou {@link
+android.content.Context#stopService stopService()} (caso queira somente fornecer a vinculação,
+não é necessário implementar este método).</dd>
+  <dt>{@link android.app.Service#onBind onBind()}</dt>
+    <dd>O sistema chama este método quando outro componente quer vincular-se
+ao serviço (como para realizações de RPC) chamando {@link android.content.Context#bindService
+bindService()}. Na implementação deste método, você deve fornecer uma interface que os clientes
+usem para comunicar-se com o serviço, retornando um {@link android.os.IBinder}. Você sempre deve implementar este método,
+mas, se não quiser permitir a vinculação, retorne nulo.</dd>
+  <dt>{@link android.app.Service#onCreate()}</dt>
+    <dd>O sistema chama este método quando o serviço é criado pela primeira vez para realizar procedimentos únicos
+de configuração (antes de chamar {@link android.app.Service#onStartCommand onStartCommand()} ou
+{@link android.app.Service#onBind onBind()}). Se o serviço já estiver em execução, este método
+não é chamado.</dd>
+  <dt>{@link android.app.Service#onDestroy()}</dt>
+    <dd>O sistema chama este método quando o serviço não é mais usado e está sendo destruído.
+O serviço deve implementar isto para limpar quaisquer recursos, como encadeamentos, escutas
+registradas, receptores etc. Esta é a última chamada que o serviço recebe.</dd>
+</dl>
+
+<p>Se um componente iniciar o serviço chamando {@link
+android.content.Context#startService startService()} (o que resulta em uma chamada para {@link
+android.app.Service#onStartCommand onStartCommand()}),
+o serviço permanecerá em execução até ser interrompido por conta própria com {@link android.app.Service#stopSelf()} ou por outro componente
+chamando {@link android.content.Context#stopService stopService()}.</p>
+
+<p>Se um componente
+chamar {@link android.content.Context#bindService bindService()} para criar o serviço (e {@link
+android.app.Service#onStartCommand onStartCommand()} <em>não</em> for chamado), o serviço será executado
+somente enquanto o componente estiver vinculado a ele. Quando o serviço for desvinculado de todos os clientes,
+o sistema o destruirá.</p>
+
+<p>O sistema Android forçará a interrupção de um serviço somente quando a memória estiver baixa e precisar
+recuperar os recursos do sistema para a atividade com que o usuário estiver interagindo. Se o serviço estiver vinculado a uma atividade que o usuário
+tenha atribuído foco, é menos provável que ele seja eliminado. E, se o serviço for declarado para <a href="#Foreground">ser executado em primeiro plano</a> (discutido posteriormente), então ele quase nunca será eliminado.
+Caso contrário, se o serviço for iniciado e estiver em uma longa execução, o sistema reduzirá sua posição
+na lista de tarefas de segundo plano no decorrer do tempo e o serviço se tornará altamente suscetível
+à eliminação &mdash; se o serviço for iniciado, então você deve programá-lo para lidar
+com reinicializações pelo sistema. Se o sistema eliminar o seu serviço, ele reiniciará assim que os recursos
+estiverem disponíveis novamente (apesar de isto também depender do valor que você retornar de {@link
+android.app.Service#onStartCommand onStartCommand()}, como discutido a seguir). Para obter mais informações sobre
+quando o sistema deve destruir um serviço, consulte o documento <a href="{@docRoot}guide/components/processes-and-threads.html">Processos e encadeamentos</a>
+.</p>
+
+<p>Nas seguintes seções, você verá como é possível criar cada tipo de serviço e como
+usá-los a partir de outros componentes do aplicativo.</p>
+
+
+
+<h3 id="Declaring">Declaração de serviço no manifesto</h3>
+
+<p>Como atividades (e outros componentes), você deve declarar todos os serviços no arquivo de manifesto
+do aplicativo.</p>
+
+<p>Para declarar o serviço, adicione um elemento <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> 
+como filho do elemento <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>
+. Por exemplo:</p>
+
+<pre>
+&lt;manifest ... &gt;
+  ...
+  &lt;application ... &gt;
+      &lt;service android:name=".ExampleService" /&gt;
+      ...
+  &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+
+<p>Consulte a referência de elemento <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a>
+para obter mais informações sobre como declarar o serviço no manifesto.</p>
+
+<p>É possível incluir outros atributos no elemento <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a>
+para definir propriedades como permissões necessárias para iniciar o serviço e o processo
+em que o serviço deve ser executado. O atributo <a href="{@docRoot}guide/topics/manifest/service-element.html#nm">{@code android:name}</a>
+é o único necessário &mdash; ele especifica o nome da classe do serviço. Ao publicar o aplicativo,
+ não deve-se alterar-lhe o nome porque, se isso acontecer, há riscos de ocorrência de erros
+de código devido à dependência de intenções explícitas para iniciar ou vincular o serviço (leia a publicação do blogue, <a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">Coisas
+que não podem mudar</a>).
+
+<p>Para garantir a segurança do aplicativo, <strong>sempre use uma intenção explícita ao iniciar ou vincular
+{@link android.app.Service}</strong> e não declare filtros de intenção para o serviço. Caso seja essencial permitir alguma ambiguidade, como qual serviço deve ser usado para iniciar,
+é possível fornecer filtros de intenções
+para os serviços e excluir o nome do componente de {@link
+android.content.Intent}, mas é preciso definir o pacote para a intenção com {@link
+android.content.Intent#setPackage setPackage()}, que fornece desambiguidade suficiente para
+o serviço alvo.</p>
+
+<p>Além disso, é possível garantir que o serviço esteja disponível somente para o aplicativo
+incluindo o atributo <a href="{@docRoot}guide/topics/manifest/service-element.html#exported">{@code android:exported}</a>
+e definindo-o como {@code "false"}. Isto impede efetivamente que outros aplicativos iniciem o serviço,
+ mesmo usando uma intenção explícita.</p>
+
+
+
+
+<h2 id="CreatingStartedService">Criação de um serviço iniciado</h2>
+
+<p>Um serviço iniciado é o que outro componente inicia chamando {@link
+android.content.Context#startService startService()}, resultando em uma chamada para o método
+{@link android.app.Service#onStartCommand onStartCommand()} do serviço.</p>
+
+<p>Quando um serviço é iniciado, ele tem um ciclo de vida que não depende do componente
+que o iniciou. Além disso, o serviço pode ser executado em segundo plano indefinidamente,
+mesmo se o componente que o iniciou for eliminado. Além disso, o serviço deve ser interrompido quando o seu trabalho
+for realizado, chamando {@link android.app.Service#stopSelf stopSelf()}. Outros componentes podem interrompê-lo
+chamando {@link android.content.Context#stopService stopService()}.</p>
+
+<p>Um componente do aplicativo, como uma atividade, pode iniciar o serviço chamando {@link
+android.content.Context#startService startService()} e passando {@link android.content.Intent},
+que especifica o serviço e inclui os dados para o serviço usar. O serviço
+recebe esta {@link android.content.Intent} no método {@link android.app.Service#onStartCommand
+onStartCommand()}.</p>
+
+<p>Por exemplo, presuma que uma atividade precise salvar alguns dados em um banco de dados on-line. A atividade pode iniciar
+um serviço de acompanhamento e entregar a ele os dados a salvar passando uma intenção para {@link
+android.content.Context#startService startService()}. O serviço recebe a intenção em {@link
+android.app.Service#onStartCommand onStartCommand()}, conecta-se à Internet e realiza
+a transação no banco de dados. Quando a operação é concluída, o serviço é interrompido
+e destruído.</p>
+
+<p class="caution"><strong>Atenção:</strong> um serviço é executado no mesmo processo que o aplicativo
+em que ele é declarado e no encadeamento principal do aplicativo, por padrão. Portanto, se o serviço
+realizar operações intensivas ou de bloqueio quando o usuário interagir com uma atividade do mesmo aplicativo,
+diminuirá o desempenho da atividade. Para evitar impacto no desempenho do aplicativo,
+deve-se iniciar um novo encadeamento dentro do serviço.</p>
+
+<p>Geralmente, há duas classes que podem ser estendidas para criar um serviço iniciado:</p>
+<dl>
+  <dt>{@link android.app.Service}</dt>
+  <dd>Esta é a classe de base para todos os serviços. Ao estender esta classe, é importante
+criar um novo encadeamento para fazer todo o trabalho do serviço, pois o serviço usa
+o encadeamento principal do aplicativo, por padrão, o que deve diminuir o desempenho de qualquer atividade
+que o aplicativo estiver executando.</dd>
+  <dt>{@link android.app.IntentService}</dt>
+  <dd>Esta é uma subclasse de {@link android.app.Service} que usa um encadeamento de trabalho para lidar
+com todas as solicitações de inicialização, uma por vez. Esta é a melhor opção se não quiser que o serviço
+lide com várias solicitações simultaneamente. Tudo que precisa fazer é implementar {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}, que recebe a intenção para cada solicitação
+de início para que você possa realizar o trabalho de segundo plano.</dd>
+</dl>
+
+<p>As seguintes seções descrevem como é possível implementar o serviço usando
+uma dessas classes.</p>
+
+
+<h3 id="ExtendingIntentService">Extensão da classe IntentService</h3>
+
+<p>Como a maioria dos serviços não precisam lidar com várias solicitações simultaneamente
+(o que pode ser perigoso para situações de vários encadeamentos), é melhor
+se o serviço for implementado usando a classe {@link android.app.IntentService}.</p>
+
+<p>O {@link android.app.IntentService} faz o seguinte:</p>
+
+<ul>
+  <li>Cria um encadeamento de trabalho padrão que executa todas as intenções entregues a {@link
+android.app.Service#onStartCommand onStartCommand()} separado do encadeamento principal
+do aplicativo.</li>
+  <li>Cria uma fila de trabalho que passa uma intenção por vez à implementação {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}, para que nunca seja necessário
+preocupar-se com vários encadeamentos.</li>
+  <li>Interrompe o serviço depois que todas as solicitações forem resolvidas para que não seja necessário chamar
+{@link android.app.Service#stopSelf}.</li>
+  <li>Fornece implementações padrão de {@link android.app.IntentService#onBind onBind()}
+que retornam como nulo.</li>
+  <li>Fornece uma implementação padrão de {@link android.app.IntentService#onStartCommand
+onStartCommand()} que envia a intenção para a fila de trabalho e, em seguida, para a implementação de {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}.</li>
+</ul>
+
+<p>Tudo isso adiciona-se ao fato de que basta implementar {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} para fazer o trabalho fornecido
+pelo cliente (embora também seja necessário fornecer um pequeno construtor para o serviço).</p>
+
+<p>A seguir há um exemplo de implementação de {@link android.app.IntentService}:</p>
+
+<pre>
+public class HelloIntentService extends IntentService {
+
+  /**
+   * A constructor is required, and must call the super {@link android.app.IntentService#IntentService}
+   * constructor with a name for the worker thread.
+   */
+  public HelloIntentService() {
+      super("HelloIntentService");
+  }
+
+  /**
+   * The IntentService calls this method from the default worker thread with
+   * the intent that started the service. When this method returns, IntentService
+   * stops the service, as appropriate.
+   */
+  &#64;Override
+  protected void onHandleIntent(Intent intent) {
+      // Normally we would do some work here, like download a file.
+      // For our sample, we just sleep for 5 seconds.
+      long endTime = System.currentTimeMillis() + 5*1000;
+      while (System.currentTimeMillis() &lt; endTime) {
+          synchronized (this) {
+              try {
+                  wait(endTime - System.currentTimeMillis());
+              } catch (Exception e) {
+              }
+          }
+      }
+  }
+}
+</pre>
+
+<p>É tudo que você precisa: um construtor e uma implementação de {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}.</p>
+
+<p>Caso decida substituir outros métodos de retorno de chamada, como {@link
+android.app.IntentService#onCreate onCreate()}, {@link
+android.app.IntentService#onStartCommand onStartCommand()} ou {@link
+android.app.IntentService#onDestroy onDestroy()}, certifique-se de chamar a super-implementação
+para que o {@link android.app.IntentService} possa lidar adequadamente com a vida do encadeamento de trabalho.</p>
+
+<p>Por exemplo, {@link android.app.IntentService#onStartCommand onStartCommand()} deve retornar
+a implementação padrão (que é como a intenção é entregue para {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}):</p>
+
+<pre>
+&#64;Override
+public int onStartCommand(Intent intent, int flags, int startId) {
+    Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
+    return super.onStartCommand(intent,flags,startId);
+}
+</pre>
+
+<p>Além de {@link android.app.IntentService#onHandleIntent onHandleIntent()}, o único método
+que não precisa ser usado para chamar a superclasse é {@link android.app.IntentService#onBind
+onBind()} (mas é necessário implementá-lo se o serviço permitir vinculações).</p>
+
+<p>Na próxima seção, você verá como o mesmo tipo de serviço é implementado ao estender
+a classe de base {@link android.app.Service}, que possui muito mais códigos, mas que pode
+ser apropriada para lidar com solicitações de inicialização simultâneas.</p>
+
+
+<h3 id="ExtendingService">Extensão da classe Service</h3>
+
+<p>Como você viu na seção anterior, o uso de {@link android.app.IntentService}
+torna a implementação de um serviço iniciado muito simples. Se, no entanto, você precisa do serviço
+para realizar vários encadeamentos (em vez de processar as solicitações de inicialização por meio de uma fila de trabalho),
+é possível estender a classe {@link android.app.Service} para lidar com cada intenção.</p>
+
+<p>Para efeito de comparação, o seguinte exemplo de código é uma implementação da classe {@link
+android.app.Service} que realiza exatamente o mesmo trabalho que o exemplo acima usando {@link
+android.app.IntentService}. Ou seja, para cada solicitação de inicialização, ela usa um encadeamento
+de trabalho para realizar o trabalho e processa apenas uma solicitação por vez.</p>
+
+<pre>
+public class HelloService extends Service {
+  private Looper mServiceLooper;
+  private ServiceHandler mServiceHandler;
+
+  // Handler that receives messages from the thread
+  private final class ServiceHandler extends Handler {
+      public ServiceHandler(Looper looper) {
+          super(looper);
+      }
+      &#64;Override
+      public void handleMessage(Message msg) {
+          // Normally we would do some work here, like download a file.
+          // For our sample, we just sleep for 5 seconds.
+          long endTime = System.currentTimeMillis() + 5*1000;
+          while (System.currentTimeMillis() &lt; endTime) {
+              synchronized (this) {
+                  try {
+                      wait(endTime - System.currentTimeMillis());
+                  } catch (Exception e) {
+                  }
+              }
+          }
+          // Stop the service using the startId, so that we don't stop
+          // the service in the middle of handling another job
+          stopSelf(msg.arg1);
+      }
+  }
+
+  &#64;Override
+  public void onCreate() {
+    // Start up the thread running the service.  Note that we create a
+    // separate thread because the service normally runs in the process's
+    // main thread, which we don't want to block.  We also make it
+    // background priority so CPU-intensive work will not disrupt our UI.
+    HandlerThread thread = new HandlerThread("ServiceStartArguments",
+            Process.THREAD_PRIORITY_BACKGROUND);
+    thread.start();
+
+    // Get the HandlerThread's Looper and use it for our Handler
+    mServiceLooper = thread.getLooper();
+    mServiceHandler = new ServiceHandler(mServiceLooper);
+  }
+
+  &#64;Override
+  public int onStartCommand(Intent intent, int flags, int startId) {
+      Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
+
+      // For each start request, send a message to start a job and deliver the
+      // start ID so we know which request we're stopping when we finish the job
+      Message msg = mServiceHandler.obtainMessage();
+      msg.arg1 = startId;
+      mServiceHandler.sendMessage(msg);
+
+      // If we get killed, after returning from here, restart
+      return START_STICKY;
+  }
+
+  &#64;Override
+  public IBinder onBind(Intent intent) {
+      // We don't provide binding, so return null
+      return null;
+  }
+
+  &#64;Override
+  public void onDestroy() {
+    Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();
+  }
+}
+</pre>
+
+<p>Como pode ver, é muito mais trabalhoso do que usar {@link android.app.IntentService}.</p>
+
+<p>No entanto, como você lida com cada chamada de {@link android.app.Service#onStartCommand
+onStartCommand()}, é possível realizar várias solicitações simultaneamente. Isso não é o que este exemplo faz,
+mas, se for o que quer, é possível criar um novo encadeamento
+para cada solicitação e executá-las na hora (em vez de esperar que a solicitação anterior seja concluída).</p>
+
+<p>Observe que o método {@link android.app.Service#onStartCommand onStartCommand()} deve retornar
+um número inteiro. O número inteiro é um valor que descreve como o sistema deve continuar o serviço
+no evento em que o sistema o eliminar (como discutido acima, a implementação padrão de {@link
+android.app.IntentService} lida com isto, apesar de ser possível modificá-lo). O valor de retorno
+de {@link android.app.Service#onStartCommand onStartCommand()} deve ser uma das seguintes
+constantes:</p>
+
+<dl>
+  <dt>{@link android.app.Service#START_NOT_STICKY}</dt>
+    <dd>Se o sistema eliminar o serviço após o retorno de {@link android.app.Service#onStartCommand
+onStartCommand()}, <em>não</em> recrie o serviço, a não ser que tenha
+intenções pendentes para entregar. Esta é a opção mais segura para evitar executar o serviço quando desnecessário
+e quando o aplicativo puder simplesmente reiniciar qualquer trabalho incompleto.</dd>
+  <dt>{@link android.app.Service#START_STICKY}</dt>
+    <dd>Se o sistema eliminar o serviço após o retorno de {@link android.app.Service#onStartCommand
+onStartCommand()}, recrie o serviço e chame {@link
+android.app.Service#onStartCommand onStartCommand()}, mas <em>não</em> entregue novamente a última intenção.
+Em vez disso, o sistema chama {@link android.app.Service#onStartCommand onStartCommand()} com intenção nula,
+a não ser que tenha intenções pendentes para iniciar o serviço e,
+nesse caso, essas intenções são entregues. Isto é adequado para reprodutores de mídia (ou serviços semelhantes)
+que não estejam executando comandos, mas estejam em execução indefinidamente e aguardando um trabalho.</dd>
+  <dt>{@link android.app.Service#START_REDELIVER_INTENT}</dt>
+    <dd>Se o sistema eliminar o serviço após o retorno de {@link android.app.Service#onStartCommand
+onStartCommand()}, recrie o serviço e chame {@link
+android.app.Service#onStartCommand onStartCommand()} com a última intenção que foi entregue
+ao serviço. Quaisquer intenções pendentes são entregues, por sua vez. Isto é adequado para serviços que estejam realizando
+um trabalho ativamente que deva ser retomado imediatamente, como o download de um arquivo.</dd>
+</dl>
+<p>Para obter mais informações sobre esses valores de retorno, veja a documentação de referência vinculada
+a cada constante.</p>
+
+
+
+<h3 id="StartingAService">Início de um serviço</h3>
+
+<p>É possível iniciar um dispositivo de uma atividade ou outro componente do aplicativo passando uma 
+{@link android.content.Intent} a {@link
+android.content.Context#startService startService()}. O sistema Android chama o método {@link
+android.app.Service#onStartCommand onStartCommand()} do serviço e passa a ele a {@link
+android.content.Intent} (nunca deve-se chamar {@link android.app.Service#onStartCommand
+onStartCommand()} diretamente).</p>
+
+<p>Por exemplo, uma atividade pode iniciar o serviço de exemplo na seção anterior ({@code
+HelloSevice}) usando uma intenção explícita com {@link android.content.Context#startService
+startService()}:</p>
+
+<pre>
+Intent intent = new Intent(this, HelloService.class);
+startService(intent);
+</pre>
+
+<p>O método {@link android.content.Context#startService startService()} retorna imediatamente
+e o sistema Android chama o método {@link android.app.Service#onStartCommand
+onStartCommand()} do serviço. Se o serviço não estiver em execução, o sistemo primeiro chama {@link
+android.app.Service#onCreate onCreate()} e, em seguida, chama {@link android.app.Service#onStartCommand
+onStartCommand()}.</p>
+
+<p>Se o serviço não fornecer vinculação, a intenção entregue com {@link
+android.content.Context#startService startService()} é o único modo de comunicação entre
+o componente do aplicativo e o serviço. No entanto, se quiser que o serviço envie um resultado de volta,
+o cliente que iniciar o serviço poderá criar um {@link android.app.PendingIntent} para uma transmissão
+(com {@link android.app.PendingIntent#getBroadcast getBroadcast()}) e entregá-la ao serviço
+na {@link android.content.Intent} que iniciar o serviço. O serviço pode então
+usar a transmissão para entregar um resultado.</p>
+
+<p>Várias solicitações para iniciar o serviço resultam em diversas chamadas correspondentes
+ao {@link android.app.Service#onStartCommand onStartCommand()} do serviço. No entanto, somente uma solicitação para interromper
+o serviço (com {@link android.app.Service#stopSelf stopSelf()} ou {@link
+android.content.Context#stopService stopService()}) é necessária para interrompê-lo.</p>
+
+
+<h3 id="Stopping">Interrupção de um serviço</h3>
+
+<p>Um serviço iniciado deve gerenciar seu próprio ciclo de vida. Ou seja, o sistema não interrompe
+ou elimina o serviço, a não ser que tenha que recuperar a memória do sistema e o serviço
+continuar em execução depois que {@link android.app.Service#onStartCommand onStartCommand()} retornar. Portanto,
+o serviço deve ser interrompido chamando {@link android.app.Service#stopSelf stopSelf()} ou outro
+componente pode interrompê-lo chamando {@link android.content.Context#stopService stopService()}.</p>
+
+<p>Ao solicitar o interrompimento com {@link android.app.Service#stopSelf stopSelf()} ou {@link
+android.content.Context#stopService stopService()}, o sistema elimina o serviço
+assim que possível.</p>
+
+<p>No entanto, se o serviço lida com várias solicitações para {@link
+android.app.Service#onStartCommand onStartCommand()} ao mesmo tempo, não se deve interromper
+o serviço ao terminar o processamento de uma solicitação de inicialização, pois é possível
+que uma nova solicitação de inicialização tenha ocorrido (interromper no final da primeira solicitação eliminaria a segunda). Para evitar este problema,
+é possível usar {@link android.app.Service#stopSelf(int)} para garantir que a solicitação
+que interrompe o serviço sempre se baseie na solicitação de inicialização mais recente. Ou seja, ao chamar {@link
+android.app.Service#stopSelf(int)}, você passa o ID da solicitação de inicialização (o <code>startId</code>
+entregue a {@link android.app.Service#onStartCommand onStartCommand()}) para aquele que solicitação de interrompimento
+corresponde. Em seguida, se o serviço receber uma nova solicitação de inicialização antes de ser possível chamar {@link
+android.app.Service#stopSelf(int)}, o ID não corresponderá e o serviço não será interrompido.</p>
+
+<p class="caution"><strong>Atenção:</strong> é importante que um aplicativo interrompa seus serviços
+quando terminar os trabalhos para evitar o desperdício dos recursos do sistema e consumo da bateria. Se necessário,
+outros componentes podem interromper o serviço chamando {@link
+android.content.Context#stopService stopService()}. Mesmo se for possível vincular-se ao serviço,
+deve-se sempre interrompê-lo por conta própria se ele tiver recebido uma chamada de {@link
+android.app.Service#onStartCommand onStartCommand()}.</p>
+
+<p>Para obter mais informações sobre o ciclo de vida de um serviço, consulte a seção <a href="#Lifecycle">Gerenciamento do ciclo de vida de um serviço</a> abaixo.</p>
+
+
+
+<h2 id="CreatingBoundService">Criação de um serviço vinculado</h2>
+
+<p>Um serviço vinculado permite que componentes de aplicativo sejam vinculados chamando {@link
+android.content.Context#bindService bindService()} para criar uma conexão de longo prazo
+(e, geralmente, não permite que os componentes o <em>iniciem</em> chamando {@link
+android.content.Context#startService startService()}).</p>
+
+<p>Deve-se criar um serviço vinculado quando se deseja interagir com o serviço a partir de atividades
+e outros componentes no aplicativo ou para expor algumas das funcionalidades do aplicativo
+para outros aplicativos, por meio de comunicação entre processos (IPC).</p>
+
+<p>Para criar um serviço vinculado, você deve implementar o método de retorno de chamada {@link
+android.app.Service#onBind onBind()} para retornar um {@link android.os.IBinder}
+que define a interface para a comunicação com o serviço. Outros componentes de aplicativo podem chamar
+{@link android.content.Context#bindService bindService()} para recuperar a interface
+e começar a chamar métodos no serviço. O serviço vive somente para servir o componente do aplicativo
+ao qual ele está vinculado. Portanto, quando não houver componentes vinculados ao serviço, o sistema o eliminará
+(<em>não</em> é necessário interromper um serviço vinculado da mesma maneira que quando o serviço é iniciado
+por meio de {@link android.app.Service#onStartCommand onStartCommand()}).</p>
+
+<p>Para criar um serviço vinculado, a primeira coisa a se fazer é definir a interface que especifica
+como um cliente pode comunicar-se com o servidor. Esta interface entre o serviço
+e um cliente deve ser uma implementação de {@link android.os.IBinder} e é o que o serviço deve retornar
+a partir do método de retorno de chamada {@link android.app.Service#onBind
+onBind()}. Quando o cliente receber {@link android.os.IBinder}, ele poderá começar
+a interagir com o serviço por meio da interface.</p>
+
+<p>Vários clientes podem vincular-se ao serviço por vez. Quando um cliente terminar de interagir com o serviço,
+ ele chamará {@link android.content.Context#unbindService unbindService()} para desvincular-se. Quando não houver
+clientes vinculados ao serviço, o sistema o eliminará.</p>
+
+<p>Há várias maneiras de implementar um serviço vinculado e a implementação é mais complicada
+que um serviço iniciado. Logo, a discussão sobre serviços vinculados aparece em um documento separado
+sobre <a href="{@docRoot}guide/components/bound-services.html">Serviços vinculados</a>.</p>
+
+
+
+<h2 id="Notifications">Enviar notificações ao usuário</h2>
+
+<p>Quando em execução, um serviço pode notificar o usuário sobre eventos usando <a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">Notificações de aviso</a> ou <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Notificações da barra de status</a>.</p>
+
+<p>Uma notificação de aviso é uma mensagem que aparece na superfície da janela atual
+por um breve momento antes de desaparecer, enquanto que uma notificação da barra de status fornece um ícone na barra de status
+com uma mensagem que o usuário pode selecionar para realizar uma ação (como iniciar uma atividade).</p>
+
+<p>Geralmente, uma notificação da barra de status é a melhor técnica quando um trabalho de segundo plano é concluído
+(como download
+de arquivo completo) e o usuário pode agir a partir dele. Quando o usuário seleciona a notificação a partir
+da vista expandida, ela pode iniciar uma atividade (como a vista do arquivo baixado).</p>
+
+<p>Consulte os guias de desenvolvedor <a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">Notificações de aviso</a> ou <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Notificações da barra de status</a>
+para obter mais informações.</p>
+
+
+
+<h2 id="Foreground">Execução de serviço em primeiro plano</h2>
+
+<p>Um serviço de primeiro plano é aquele
+com que o usuário está ativamente interagindo e não é uma opção para o sistema eliminá-lo quando a memória estiver baixa. Um serviço de primeiro plano
+deve fornecer uma notificação para a barra de status, que é colocada sob
+"o cabeçalho "Em andamento", o que significa que a notificação não pode ser dispensada a não ser que o serviço
+seja interrompido ou removido do primeiro plano.</p>
+
+<p>Por exemplo, um reprodutor de música que reproduz a partir de um serviço deve ser configurado
+para permanecer em execução em primeiro plano, pois o usuário está
+prestando atenção em sua operação explicitamente. A notificação na barra de status pode indicar a música atual
+e permitir que o usuário inicie uma atividade para interagir com o reprodutor de música.</p>
+
+<p>Para solicitar que o serviço seja executado em primeiro plano, chame {@link
+android.app.Service#startForeground startForeground()}. Este método usa dois parâmetros: um número inteiro
+que identifica unicamente a notificação e {@link
+android.app.Notification} para a barra de status. Por exemplo:</p>
+
+<pre>
+Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text),
+        System.currentTimeMillis());
+Intent notificationIntent = new Intent(this, ExampleActivity.class);
+PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
+notification.setLatestEventInfo(this, getText(R.string.notification_title),
+        getText(R.string.notification_message), pendingIntent);
+startForeground(ONGOING_NOTIFICATION_ID, notification);
+</pre>
+
+<p class="caution"><strong>Atenção:</strong> O ID do número inteiro fornecido para {@link
+android.app.Service#startForeground startForeground()} não deve ser zero.</p>
+
+
+<p>Para remover o serviço do primeiro plano, chame {@link
+android.app.Service#stopForeground stopForeground()}. Este método usa um booleano,
+indicando se deve remover também a notificação da barra de status. Este método <em>não</em> interrompe
+o serviço. No entanto, se você interromper o serviço enquanto estiver em execução em primeiro plano,
+a notificação também será removida.</p>
+
+<p>Para obter mais informações sobre notificações, consulte <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Criação de notificações
+da barra de status</a>.</p>
+
+
+
+<h2 id="Lifecycle">Gerenciamento do ciclo de vida de um serviço</h2>
+
+<p>O ciclo de vida de um serviço é muito mais simples do que o de uma atividade. No entanto, é ainda mais importante
+que você preste muita atenção em como o serviço é criado e eliminado, pois ele
+pode ser executado em primeiro plano sem que o usuário esteja ciente.</p>
+
+<p>O ciclo de vida do serviço &mdash; desde quando é criado até ser eliminado &mdash; pode seguir
+dois caminhos:</p>
+
+<ul>
+<li>Um serviço iniciado
+  <p>O serviço é criado quando outro componente chama {@link
+android.content.Context#startService startService()}. Depois, o serviço permanece em execução indefinidamente e deve
+interromper-se chamando {@link
+android.app.Service#stopSelf() stopSelf()}. Outro componente também pode interromper
+o serviço chamando {@link
+android.content.Context#stopService stopService()}. Quando o serviço é interrompido, o sistema o elimina.</p></li>
+
+<li>Um serviço vinculado
+  <p>O serviço é criado quando outro componente (um cliente) chama {@link
+android.content.Context#bindService bindService()}. O cliente comunica-se com o serviço
+pela interface {@link android.os.IBinder}. O cliente pode escolher encerrar a conexão chamando
+{@link android.content.Context#unbindService unbindService()}. Vários clientes podem ser vinculados
+ao mesmo serviço e, quando todos os vínculos terminam, o sistema destrói o serviço (o serviço
+<em>não</em> precisa ser interrompido).</p></li>
+</ul>
+
+<p>Esses dois caminhos não são inteiramente separados. Ou seja, é possível vincular um serviço
+que já foi iniciado com {@link android.content.Context#startService startService()}. Por exemplo, um serviço de música
+de segundo plano pode ser iniciado chamando {@link android.content.Context#startService
+startService()} com uma {@link android.content.Intent} que identifica a música reproduzida. Depois,
+possivelmente quando o usuário quiser exercer mais controle sobre o reprodutor ou obter informações
+sobre a música em reprodução, uma atividade pode ser vinculada ao serviço chamando {@link
+android.content.Context#bindService bindService()}. Em casos como esse, {@link
+android.content.Context#stopService stopService()} ou {@link android.app.Service#stopSelf
+stopSelf()} não interrompe o serviço até que todos os clientes sejam desvinculados. </p>
+
+
+<h3 id="LifecycleCallbacks">Implementação de retornos de chamada do ciclo de vida</h3>
+
+<p>Como uma atividade, um serviço tem um método de ciclo de vida que é possível implementar
+para monitorar as alterações no estado do serviço e realizar trabalhos em momentos adequados. O seguinte serviço de esqueleto
+demonstra cada um dos métodos de ciclo de vida:</p>
+
+<pre>
+public class ExampleService extends Service {
+    int mStartMode;       // indicates how to behave if the service is killed
+    IBinder mBinder;      // interface for clients that bind
+    boolean mAllowRebind; // indicates whether onRebind should be used
+
+    &#64;Override
+    public void {@link android.app.Service#onCreate onCreate}() {
+        // The service is being created
+    }
+    &#64;Override
+    public int {@link android.app.Service#onStartCommand onStartCommand}(Intent intent, int flags, int startId) {
+        // The service is starting, due to a call to {@link android.content.Context#startService startService()}
+        return <em>mStartMode</em>;
+    }
+    &#64;Override
+    public IBinder {@link android.app.Service#onBind onBind}(Intent intent) {
+        // A client is binding to the service with {@link android.content.Context#bindService bindService()}
+        return <em>mBinder</em>;
+    }
+    &#64;Override
+    public boolean {@link android.app.Service#onUnbind onUnbind}(Intent intent) {
+        // All clients have unbound with {@link android.content.Context#unbindService unbindService()}
+        return <em>mAllowRebind</em>;
+    }
+    &#64;Override
+    public void {@link android.app.Service#onRebind onRebind}(Intent intent) {
+        // A client is binding to the service with {@link android.content.Context#bindService bindService()},
+        // after onUnbind() has already been called
+    }
+    &#64;Override
+    public void {@link android.app.Service#onDestroy onDestroy}() {
+        // The service is no longer used and is being destroyed
+    }
+}
+</pre>
+
+<p class="note"><strong>Observação:</strong> diferentemente dos métodos de retorno de chamada do ciclo de vida da atividade,
+você <em>não</em> precisa chamar a implementação da superclasse.</p>
+
+<img src="{@docRoot}images/service_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Figura 2.</strong> Ciclo de vida do serviço. O diagrama à esquerda
+mostra o ciclo de vida quando o serviço é criado com {@link android.content.Context#startService
+startService()} e o diagrama à direita mostra o ciclo de vida quando o serviço
+é criado com {@link android.content.Context#bindService bindService()}.</p>
+
+<p>Ao implementar esses métodos, é possível monitorar dois retornos (loops) aninhados no ciclo de vida do serviço: </p>
+
+<ul>
+<li><strong>Todo o ciclo de vida</strong> de um serviço acontece entre o momento em que {@link
+android.app.Service#onCreate onCreate()} é chamado e em que {@link
+android.app.Service#onDestroy} retorna. Como uma atividade, um serviço faz a sua configuração inicial
+em {@link android.app.Service#onCreate onCreate()} e libera todos os recursos restantes em {@link
+android.app.Service#onDestroy onDestroy()}.  Por exemplo,
+um serviço de reprodução de música pode criar um encadeamento onde a música será reproduzida em {@link
+android.app.Service#onCreate onCreate()}, e interromperá o encadeamento em {@link
+android.app.Service#onDestroy onDestroy()}.
+
+<p>Os métodos {@link android.app.Service#onCreate onCreate()} e {@link android.app.Service#onDestroy
+onDestroy()} são chamados para todos os serviços,
+se tiverem sido criados por {@link android.content.Context#startService startService()} ou {@link
+android.content.Context#bindService bindService()}.</p></li>
+
+<li>O <strong>ciclo de vida ativo</strong> de um serviço começa com uma chamada de {@link
+android.app.Service#onStartCommand onStartCommand()} ou {@link android.app.Service#onBind onBind()}.
+Cada método entrega a {@link
+android.content.Intent} que foi passada para {@link android.content.Context#startService
+startService()} ou {@link android.content.Context#bindService bindService()}, respectivamente.
+<p>Se o serviço for iniciado, o ciclo de vida ativo terminará no mesmo momento
+em que o ciclo de vida inteiro terminar (o serviço permanece ativo mesmo após o retorno de {@link android.app.Service#onStartCommand
+onStartCommand()}). Se o serviço estiver vinculado, o ciclo de ida ativo acabará quando {@link
+android.app.Service#onUnbind onUnbind()} retornar.</p>
+</li>
+</ul>
+
+<p class="note"><strong>Observação:</strong> apesar de um serviço iniciado ser interrompido com uma chamada
+de {@link android.app.Service#stopSelf stopSelf()} ou {@link
+android.content.Context#stopService stopService()}, não há um retorno de chamada respectivo
+para o serviço (não há retorno de chamada de {@code onStop()}). Portanto, a não ser que o serviço esteja vinculado a um cliente,
+o sistema o eliminará quando for interrompido &mdash; {@link
+android.app.Service#onDestroy onDestroy()} será o único retorno de chamada recebido.</p>
+
+<p>A figura 2 ilustra os métodos de retorno de chamada tradicionais para um serviço. Apesar de a figura separar
+os serviços que são criados por {@link android.content.Context#startService startService()}
+daqueles que são criados por {@link android.content.Context#bindService bindService()},
+observe que qualquer serviço, não importa como foi iniciado, pode permitir a vinculação de clientes.
+Portanto, um serviço que já foi iniciado com {@link android.app.Service#onStartCommand
+onStartCommand()} (por um cliente chamando  {@link android.content.Context#startService startService()})
+ainda pode receber uma chamada de {@link android.app.Service#onBind onBind()} (quando um cliente chama
+{@link android.content.Context#bindService bindService()}).</p>
+
+<p>Para obter mais informações sobre como criar um serviço que forneça vinculação, consulte o documento <a href="{@docRoot}guide/components/bound-services.html">Serviços vinculados</a>,
+que aborda mais profundamente o método de retorno de chamada {@link android.app.Service#onRebind onRebind()}
+na seção sobre <a href="{@docRoot}guide/components/bound-services.html#Lifecycle">Gerenciamento do ciclo de vida
+de um serviço vinculado</a>.</p>
+
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>To learn how to query data from the system or other applications (such as contacts or media
+stored on the device), continue with the <b><a
+href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a></b>
+document.</p>
+-->
diff --git a/docs/html-intl/intl/pt-br/guide/components/tasks-and-back-stack.jd b/docs/html-intl/intl/pt-br/guide/components/tasks-and-back-stack.jd
new file mode 100644
index 0000000..d309c67
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/components/tasks-and-back-stack.jd
@@ -0,0 +1,578 @@
+page.title=Tarefas e pilhas de retorno
+parent.title=Atividades
+parent.link=activities.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Neste documento</h2>
+<ol>
+<li><a href="#ActivityState">Gravação do estado da atividade</a></li></li>
+<li><a href="#ManagingTasks">Gerenciamento de tarefas</a>
+  <ol>
+    <li><a href="#TaskLaunchModes">Definição de modos de inicialização</a></li>
+    <li><a href="#Affinities">Tratamento de afinidades</a></li>
+    <li><a href="#Clearing">Apagar a pilha de retorno</a></li>
+    <li><a href="#Starting">Início de uma tarefa</a></li>
+  </ol>
+</li>
+</ol>
+
+<h2>Artigos</h2>
+<ol>
+  <li><a href="http://android-developers.blogspot.com/2010/04/multitasking-android-way.html">
+  Multitarefa do modo Android</a></li>
+</ol>
+
+<h2>Veja também</h2>
+<ol>
+  <li><a href="{@docRoot}design/patterns/navigation.html">Projeto para Android:
+Navegação</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html">Elemento de manifesto
+{@code &lt;activity&gt;}</a></li>
+  <li><a href="{@docRoot}guide/components/recents.html">Tela de visão geral</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>Os aplicativos normalmente contêm diversas <a href="{@docRoot}guide/components/activities.html">atividades</a>. Cada atividade
+deve ser projetada com relação a tipos específicos de ações que o usuário pode realizar e que podem iniciar outras
+atividades. Por exemplo: um aplicativo de e-mail pode ter uma atividade para exibir uma lista de novas mensagens.
+Quando o usuário seleciona uma mensagem, uma nova atividade abre para exibir essa mensagem.</p>
+
+<p>As atividades podem também iniciar atividades existentes em outros aplicativos no dispositivo. Por
+exemplo: se o seu aplicativo deseja enviar um e-mail, é possível definir uma intenção para realizar
+uma ação de "enviar" e incluir alguns dados, como um endereço de e-mail e uma mensagem. Uma atividade de outro
+aplicativo que se declara para tratar deste tipo de intenções, então, abre-se. Nesse caso, a intenção
+destina-se ao envio de e-mails, portanto inicia-se uma atividade de “composição" do aplicativo de e-mail (se diversas atividades
+forem compatíveis com a mesma intenção, o sistema permitirá que o usuário selecione qual usar). Quando o e-mail é
+enviado, sua atividade reinicia, parecendo que a atividade de e-mail faz parte do seu aplicativo. Apesar
+de as atividades serem de aplicativos diferentes, o Android mantém essa experiência
+do usuário retilínea mantendo ambas as atividades na mesma <em>tarefa</em>.</p>
+
+<p>Tarefas são coleções de atividades com as quais os usuários interagem
+ao realizar determinado trabalho. As atividades são organizadas em uma pilha (a <em>pilha de retorno</em>)
+na ordem em que cada atividade é aberta.</p>
+
+<!-- SAVE FOR WHEN THE FRAGMENT DOC IS ADDED
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h3>Adding fragments to a task's back stack</h3>
+
+<p>Your activity can also include {@link android.app.Fragment}s to the back stack. For example,
+suppose you have a two-pane layout using fragments, one of which is a list view (fragment A) and the
+other being a layout to display an item from the list (fragment B). When the user selects an item
+from the list, fragment B is replaced by a new fragment (fragment C). In this case, it might be
+desireable for the user to navigate back to reveal fragment B, using the <em>Back</em> button.</p>
+<p>In order to add fragment B to the back stack so that this is possible, you must call {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()} before you {@link
+android.app.FragmentTransaction#commit()} the transaction that replaces fragment B with fragment
+C.</p>
+<p>For more information about using fragments and adding them to the back stack, see the {@link
+android.app.Fragment} class documentation.</p>
+
+</div>
+</div>
+-->
+
+<p>A tela inicial do dispositivo é o ponto de partida para a maioria das tarefas. Quando o usuário toca em um ícone no inicializador do 
+aplicativo
+ (ou em um atalho na tela inicial), essa tarefa do aplicativo acontece em primeiro plano. Se não
+existir nenhuma tarefa para o aplicativo (se o aplicativo não tiver sido usado recentemente), uma nova tarefa
+será criada e a atividade "principal" daquele aplicativo abrirá como a atividade raiz na pilha.</p>
+
+<p>Quando a atividade atual inicia outra, a nova atividade é colocada no topo da pilha
+e recebe foco. A atividade anterior permanece na pilha, mas é interrompida. Quando uma atividade
+para, o sistema retém o estado atual da interface do usuário. Quando o usuário pressiona o botão 
+<em>Voltar</em>
+, a atividade atual é retirada do topo da pilha (a atividade é destruída)
+e a atividade anterior reinicia (o estado anterior da IU é restaurado). Atividades na pilha nunca
+são reorganizadas, somente colocadas e retiradas da pilha &mdash; colocadas na pilha quando iniciadas
+pela atividade atual e retiradas quando o usuário se retira dela usando o botão <em>Voltar</em>. Desse modo, a pilha
+de retorno
+opera como uma estrutura de objeto UEPS (último que entra, primeiro que sai). A figura 1
+ilustra esse comportamento com uma linha cronológica exibindo o progresso entre atividades junto com a pilha de retorno
+atual em cada ponto no tempo.</p>
+
+<img src="{@docRoot}images/fundamentals/diagram_backstack.png" alt="" />
+<p class="img-caption"><strong>Figura 1.</strong> Representação de como cada nova atividade
+em uma tarefa adiciona um item à pilha de retorno. Quando o usuário pressiona o botão <em>Voltar</em>,
+a atividade atual é
+destruída e a atividade anterior reinicia.</p>
+
+
+<p>Se o usuário continua pressionando <em>Voltar</em>, cada atividade na pilha é retirada para 
+revelar
+a anterior até que o usuário retorne à tela inicial (ou a qualquer atividade que estivesse em execução
+no começo da tarefa). Quando todas as atividades forem removidas da pilha, a tarefa não existirá mais.</p>
+
+<div class="figure" style="width:287px">
+<img src="{@docRoot}images/fundamentals/diagram_multitasking.png" alt="" /> <p
+class="img-caption"><strong>Figura 2.</strong> Duas tarefas: a tarefa B recebe a interação do usuário
+em primeiro plano enquanto a tarefa A está em segundo plano aguardando para ser retomada.</p>
+</div>
+<div class="figure" style="width:215px">
+  <img src="{@docRoot}images/fundamentals/diagram_multiple_instances.png" alt="" /> <p
+class="img-caption"><strong>Figura 3.</strong> Uma única atividade é instanciada diversas vezes.</p>
+</div>
+
+<p>As tarefas são unidades coesas que podem mover-se para "segundo plano" quando usuário inicia uma nova tarefa
+ou ir para a tela inicial por meio do botão <em>Página inicial</em>. Quando em segundo plano, todas as atividades
+da tarefa são
+interrompidas, mas a pilha de retorno das tarefas continua intacta &mdash; a tarefa simplesmente perdeu o foco,
+que foi para outra tarefa, como ilustrado na figura 2. Uma tarefa pode, então, retornar ao "primeiro plano" para que os usuários
+continuem de onde pararam. Suponha, por exemplo, que a tarefa atual (tarefa A) tenha três
+atividades na sua pilha &mdash; duas sob a atividade atual. O usuário pressiona o botão <em>Página inicial</em> e,
+em seguida,
+inicia um novo aplicativo no inicializador do aplicativo. Quando a tela inicial aparece, a tarefa A
+vai para segundo plano. Quando o novo aplicativo inicia, o sistema inicia uma tarefa para este aplicativo
+(tarefa B) com sua própria pilha de atividades. Após interagir
+com este aplicativo, o usuário retorna à Página inicial novamente e seleciona o aplicativo que originalmente
+iniciou a tarefa A. Agora, a tarefa A fica
+em primeiro plano &mdash; todas as três atividades nas pilhas estão intactas e a atividade no topo
+da pilha reinicia. Nesse
+momento, o usuário pode alternar para a tarefa B acessando a Página inicial e selecionando o ícone do aplicativo
+que iniciou essa tarefa (ou selecionando a tarefa do aplicativo
+na <a href="{@docRoot}guide/components/recents.html">tela de visão geral</a>).
+Esse é um exemplo de multitarefas no Android.</p>
+
+<p class="note"><strong>Observação:</strong> várias tarefas podem ser mantidas em segundo plano simultaneamente.
+Contudo, se o usuário estiver executando diversas tarefas em segundo plano ao mesmo tempo, o sistema pode começar
+a destruir atividades de segundo plano para recuperar memória, fazendo com que o estado das atividades seja perdido.
+Consulte a seção a seguir sobre <a href="#ActivityState">Estado de atividades</a>.</p>
+
+<p>Como as atividades na pilha de retorno nunca são reorganizadas, se o seu aplicativo permitir que
+usuários iniciem uma determinada atividade a partir de mais de uma atividade, uma nova instância
+dela será criada e colocada na pilha (em vez de trazer qualquer instância anterior
+dela para o topo). Assim, uma atividade no aplicativo pode ser instanciada diversas
+vezes (mesmo a partir de diferentes tarefas), como ilustrado na figura 3. Assim, se o usuário navegar inversamente
+usando o botão <em>Voltar</em>, as instâncias da atividade serão revelada na ordem em que foram
+abertas (cada uma
+com o próprio estado da IU). No entanto, é possível modificar esse comportamento se você não deseja que uma atividade seja
+instanciada mais de uma vez. Esse assunto é abordado na próxima seção sobre <a href="#ManagingTasks">Gerenciamento de tarefas</a>.</p>
+
+
+<p>Para resumir o comportamento padrão de atividades e tarefas:</p>
+
+<ul>
+  <li>Quando a atividade A inicia a atividade B, a atividade A é interrompida, mas o sistema retém seu estado
+(como posição de rolagem e texto inserido em formulários).
+Se o usuário pressionar o botão <em>Voltar</em> na atividade B, a atividade A reiniciará com seu estado
+restaurado.</li>
+  <li>Quando o usuário se retira de uma tarefa pressionando o botão <em>Página inicial</em>, a atividade atual é
+interrompida
+e sua tarefa fica em segundo plano. O sistema retém o estado de cada atividade na tarefa. Se,
+mais tarde, o usuário reiniciar a tarefa selecionando o ícone de inicialização que a inicia, ela ficará
+em primeiro plano e reiniciará a atividade no topo da pilha.</li>
+  <li>Se o usuário pressionar o botão <em>Voltar</em>, a atividade atual será retirada da pilha
+e
+destruída. A atividade anterior na pilha é retomada. Quando uma atividade é destruída, o sistema
+<em>não</em> retém seu estado.</li>
+  <li>As atividades podem ser instanciadas diversas vezes mesmo a partir de outras tarefas.</li>
+</ul>
+
+
+<div class="note design">
+<p><strong>Projeto de navegação</strong></p>
+  <p>Para saber mais sobre o funcionamento da navegação de aplicativos no Android, leia o guia <a href="{@docRoot}design/patterns/navigation.html">Navegação</a> do Projeto do Android.</p>
+</div>
+
+
+<h2 id="ActivityState">Gravação do estado da atividade</h2>
+
+<p>Como discutido acima, o comportamento padrão do sistema preserva o estado de uma atividade quando ela é
+interrompida. Desse modo, quando usuários navegam inversamente a uma atividade anterior, a interface do usuário aparece
+na forma em que foi deixada. Entretanto, é possível &mdash; e <strong>recomendável</strong> &mdash; reter proativamente
+o estado das atividades usando métodos de retorno de chamada nos casos em que a atividade é destruída e deve
+ser recriada.</p>
+
+<p>Quando o sistema interrompe uma das atividades (como quando uma nova atividade inicia ou a tarefa
+se move para segundo plano), o sistema pode destruir esta atividade completamente se precisar recuperar
+a memória do sistema. Quando isso ocorre, as informações sobre o estado da atividade são perdidas. Se isso acontecer,
+o sistema ainda
+saberá que a atividade tem um lugar na pilha de retorno, mas quando a atividade for levada
+ao topo da pilha, o sistema precisará recriá-la (em vez de reiniciá-la). Para
+evitar perder o trabalho do usuário, deve-se retê-la proativamente implementando
+métodos de retorno de chamada {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
+na atividade.</p>
+
+<p>Para obter mais informações sobre a gravação do estado da atividade, consulte o documento
+<a href="{@docRoot}guide/components/activities.html#SavingActivityState">Atividades</a>.</p>
+
+
+
+<h2 id="ManagingTasks">Gerenciamento de tarefas</h2>
+
+<p>O modo com que o Android gerencia tarefas e a pilha de retorno, como descrito abaixo &mdash; posicionando todas
+as atividades iniciadas em sucessão na mesma tarefa em uma pilha UEPS (último que entra, primeiro que sai) &mdash; funciona
+muito bem para a maioria dos aplicativo e não é preciso preocupar-se com a associação das atividades
+a tarefas ou como elas estão organizadas na pilha de retorno. No entanto, pode-se decidir interromper
+o comportamento normal. Talvez você deseje que uma atividade inicie uma nova tarefa no aplicativo ao ser
+iniciada (em vez de ser colocada dentro da tarefa atual); ou, quando você inicia uma atividade, deseja
+apresentar uma instância dela existente (em vez de criar uma nova
+instância no topo da pilha de retorno); ou talvez você deseje que a pilha apague
+todas as atividades, exceto a atividade raiz, quando o usuário sai da tarefa.</p>
+
+<p>É possível fazer tudo isso e muito mais com atributos
+no elemento <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> do manifesto
+ e com sinalizadores na intenção passada
+a {@link android.app.Activity#startActivity startActivity()}.</p>
+
+<p>Com relação a isso, os principais atributos <a href="{@docRoot}guide/topics/manifest/activity-element.html">
+{@code &lt;activity&gt;}</a> que podem ser usados são:</p>
+
+<ul class="nolist">
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">
+  {@code taskAffinity}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">
+  {@code launchMode}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">
+  {@code allowTaskReparenting}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">
+  {@code clearTaskOnLaunch}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
+  {@code alwaysRetainTaskState}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">
+  {@code finishOnTaskLaunch}</a></li>
+</ul>
+
+<p>E os principais sinalizadores de intenção que podem ser usados são:</p>
+
+<ul class="nolist">
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</li>
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</li>
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</li>
+</ul>
+
+<p>Nas seções a seguir, você verá como usar esses atributos de manifesto e sinalizadores
+de intenção para definir como as atividades são associadas a tarefas e como elas se comportam na pilha de retorno.</p>
+
+<p>Além disso, são discutidas separadamente as considerações sobre como tarefas e atividades podem ser representadas
+e gerenciadas na tela de visão geral. Consulte <a href="{@docRoot}guide/components/recents.html">Tela de visão geral</a>
+para obter mais informações. Normalmente, é preciso permitir que o sistema defina como as tarefas
+e as atividades são representadas na tela de visão geral e não é necessário modificar esse comportamento.</p>
+
+<p class="caution"><strong>Atenção:</strong> a maioria dos aplicativos não deve interromper o comportamento
+padrão de atividades e tarefas. Se você determinar que é necessário modificar os comportamentos padrão
+da atividade, seja prudente e certifique-se de testar a capacidade de uso da atividade durante
+a inicialização e ao navegar de volta para ela de outras atividades e tarefas com o botão <em>Voltar</em>.
+Certifique-se de testar os comportamentos de navegação que podem entrar em conflito com o comportamento esperado pelo usuário.</p>
+
+
+<h3 id="TaskLaunchModes">Definição de modos de inicialização</h3>
+
+<p>Os modos de inicialização permitem definir a forma com que uma nova instância de uma atividade é associada
+à tarefa atual. Pode-se definir diferentes modos de inicialização de duas maneiras:</p>
+<ul class="nolist">
+  <li><a href="#ManifestForTasks">Usando o arquivo de manifesto</a>
+    <p>Ao declarar uma atividade em um arquivo de manifesto, pode-se especificar como a atividade
+deve associar-se a tarefas quando ela inicia.</li>
+  <li><a href="#IntentFlagsForTasks">Usando sinalizadores de intenção</a>
+    <p>Ao chamar {@link android.app.Activity#startActivity startActivity()},
+é possível incluir um sinalizador na {@link android.content.Intent} que declara como
+(ou se) a nova atividade deve associar-se à tarefa atual.</p></li>
+</ul>
+
+<p>Assim, se a atividade A iniciar a atividade B, a atividade B poderá definir no manifesto como
+deve associar-se à tarefa atual (se ocorrer) e a atividade A poderá solicitar o modo pelo qual a atividade
+B deverá associar-se à tarefa atual. Se ambas as atividades definem como a atividade B
+deve associar-se a uma tarefa, a solicitação da atividade A (como definido na intenção) sobrepõe
+a solicitação da atividade B (como definido no seu manifesto).</p>
+
+<p class="note"><strong>Observação:</strong> Alguns modos de inicialização disponíveis para o arquivo de manifesto
+não estão disponíveis como sinalizadores para uma intenção e, do mesmo modo, alguns modos de inicialização disponíveis como sinalizadores
+de uma intenção não podem ser definidos no manifesto.</p>
+
+
+<h4 id="ManifestForTasks">Uso do arquivo de manifesto</h4>
+
+<p>Ao declarar uma atividade no arquivo de manifesto, pode-se especificar como a atividade
+deve associar-se a tarefas usando o atributo <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
+launchMode}</a> do elemento
+<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>.</p>
+
+<p>O atributo <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
+launchMode}</a> especifica uma instrução sobre como a atividade deve ser inicializada
+em uma tarefa. Há quatro modos diferentes de inicialização que podem ser designados ao atributo 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">launchMode</a></code>:
+</p>
+
+<dl>
+<dt>{@code "standard"} (o modo padrão)</dt>
+  <dd>Padrão. O sistema cria uma nova instância da atividade na tarefa
+pela qual foi iniciada e encaminha-lhe a intenção. A atividade pode ser instanciada diversas vezes;
+cada instância pode pertencer a diferentes tarefas e uma tarefa pode ter diversas instâncias.</dd>
+<dt>{@code "singleTop"}</dt>
+  <dd>Se uma instância da atividade já existir no topo da tarefa atual, o sistema
+encaminhará a intenção àquela instância por meio de uma chamada do método {@link
+android.app.Activity#onNewIntent onNewIntent()} em vez de criar uma nova instância
+da atividade. A atividade pode ser instanciada diversas vezes; cada instância pode
+pertencer a diferentes tarefas e uma tarefa pode ter diversas instâncias (mas somente se
+a atividade no topo da pilha de retorno <em>não</em> for uma instância existente da atividade).
+  <p>Por exemplo: suponhamos que uma pilha de retorno da tarefa consista na atividade raiz A com as atividades B, C e
+D no topo (a pilha é A-B-C-D, com D no topo). Uma intenção chega de uma atividade de tipo D.
+Se D for o modo de inicialização {@code "standard"} padrão, uma nova instância da classe será inicializada
+e a tarefa se tornará A-B-C-D-D. Entretanto, se o modo de inicialização de D for {@code "singleTop"}, a instância existente
+de D receberá a intenção por {@link
+android.app.Activity#onNewIntent onNewIntent()} porque ela está no topo da pilha &mdash;
+a pilha permanece A-B-C-D. Contudo, se uma intenção chegar de uma atividade de tipo B, uma nova
+instância de B será adicionada à pilha, mesmo que o modo de inicialização seja {@code "singleTop"}.</p>
+  <p class="note"><strong>Observação:</strong> quando uma nova instância de uma atividade é criada,
+o usuário pode pressionar o botão <em>Voltar</em> para retornar à atividade anterior. Porém, quando uma
+instância
+existente de uma atividade trata de uma nova intenção, o usuário não pode pressionar o botão <em>Voltar</em> para retornar
+ao estado
+da atividade antes que a nova intenção chegue em {@link android.app.Activity#onNewIntent
+onNewIntent()}.</p>
+</dd>
+
+<dt>{@code "singleTask"}</dt>
+  <dd>O sistema cria uma nova tarefa e instancia a atividade em sua raiz.
+Entretanto, se uma instância da atividade já existir em uma tarefa separada, o sistema encaminhará
+a intenção àquela instância por meio de uma chamada do método {@link
+android.app.Activity#onNewIntent onNewIntent()} em vez de criar uma nova instância. Somente
+uma instância da atividade pode existir por vez.
+  <p class="note"><strong>Observação:</strong> embora a atividade inicie em uma nova tarefa, o botão 
+<em>Voltar</em> ainda direciona o usuário à atividade anterior.</p></dd>
+<dt>{@code "singleInstance"}.</dt>
+  <dd>Igual à {@code "singleTask"}, exceto que o sistema não inicializa nenhuma outra atividade
+na tarefa que contém a instância. A atividade é sempre o único e exclusivo membro de sua tarefa;
+toda atividade iniciada por ela abre em uma tarefa separada.</dd>
+</dl>
+
+
+<p>Outro exemplo: o aplicativo Navegador do Android declara que a atividade do navegador da web deve
+sempre abrir na própria tarefa &mdash; especificando o modo de inicialização {@code singleTask} no elemento <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>.
+Isso significa que, se o aplicativo emite uma
+intenção para abrir o navegador do Android, sua atividade <em>não</em> é colocada na mesma
+tarefa do aplicativo. Em vez disso, uma nova tarefa inicia para o navegador ou, se o navegador
+já possui uma tarefa em execução em segundo plano, essa tarefa é colocada em primeiro plano para tratar a nova
+intenção.</p>
+
+<p>Se uma atividade inicia em uma nova tarefa ou na mesma tarefa que a atividade que
+a iniciou, o botão <em>Voltar</em> sempre direciona o usuário à atividade anterior. Porém, se você
+iniciar uma atividade que especifica o modo de inicialização {@code singleTask} e se uma instância
+dessa atividade existir em uma tarefa de segundo plano, toda a tarefa será colocada em primeiro plano. Nesse
+momento, a pilha de retorno conterá todas as atividades da tarefa colocada em primeiro plano
+no topo. A figura 4 ilustra essa situação.</p>
+
+<img src="{@docRoot}images/fundamentals/diagram_backstack_singletask_multiactivity.png" alt="" />
+<p class="img-caption"><strong>Figura 4.</strong> Representação de como uma atividade
+com modo de inicialização "singleTask" é adicionada à pilha de retorno. Se a atividade já for parte de uma tarefa
+de segundo plano com a própria pilha de retorno, toda a pilha também virá
+para primeiro plano, no topo da tarefa atual.</p>
+
+<p>Para obter mais informações sobre o uso de modos de inicialização no arquivo de manifesto, consulte a documentação do elemento
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+, onde o atributo {@code launchMode} e os valores aceitos
+são discutidos mais aprofundadamente.</p>
+
+<p class="note"><strong>Observação:</strong> os comportamentos a especificar para a atividade com o atributo <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
+ podem ser neutralizados por sinalizadores incluídos na intenção que inicia a atividade, conforme abordado
+na próxima seção.</p>
+
+
+
+<h4 id="#IntentFlagsForTasks">Uso de sinalizadores de intenção</h4>
+
+<p>Ao iniciar uma atividade, é possível modificar a associação padrão de uma atividade à tarefa
+incluindo sinalizadores na intenção fornecida a {@link
+android.app.Activity#startActivity startActivity()}. Os sinalizadores que podem ser usados para modificar
+o comportamento padrão são:</p>
+
+<p>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</dt>
+    <dd>Inicia a atividade em uma nova tarefa. Se uma tarefa já estiver em execução para a atividade que você está
+iniciando agora, ela será colocada em primeiro plano com o último estado restaurado e a atividade
+receberá a nova intenção em {@link android.app.Activity#onNewIntent onNewIntent()}.
+    <p>Isso produz o mesmo comportamento que o valor {@code "singleTask"} do <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>,
+abordado na seção anterior.</p></dd>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</dt>
+    <dd>Se a atividade iniciada for a atual (no topo da pilha de retorno),
+a instância existente receberá uma chamada de {@link android.app.Activity#onNewIntent onNewIntent()}
+em vez de criar uma nova instância da atividade.
+    <p>Isso produz o mesmo comportamento que o valor {@code "singleTop"} do <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
+abordado na seção anterior.</p></dd>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</dt>
+    <dd>Se a atividade iniciada já estiver em execução na tarefa atual, em vez
+de lançar uma nova instância daquela atividade, todas as outras atividades no topo dela serão
+destruídas e essa intenção será entregue à instância reiniciada da atividade (agora no topo)
+por {@link android.app.Activity#onNewIntent onNewIntent()}.
+    <p>Não há nenhum valor para o atributo <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
+ que produza esse comportamento.</p>
+    <p>{@code FLAG_ACTIVITY_CLEAR_TOP} é mais usado em conjunto com
+    {@code FLAG_ACTIVITY_NEW_TASK}.
+Quando usados juntos, estes sinalizadores são o modo de localizar uma atividade existente
+em outra tarefa e colocá-la em uma posição em que possa responder à intenção. </p>
+    <p class="note"><strong>Observação:</strong> se o modo de inicialização da atividade designada for
+{@code "standard"},
+ela também será removida da pilha e uma nova instância será iniciada em seu lugar para tratar
+a intenção recebida.  Isso se deve ao fato de que uma nova instância é sempre criada para uma nova intenção quando o
+modo de inicialização é {@code "standard"}. </p>
+</dd>
+</dl>
+
+
+
+
+
+<h3 id="Affinities">Tratamento de afinidades</h3>
+
+<p>A <em>afinidade</em> indica a que tarefa uma atividade prefere pertencer. Por padrão, todas
+as atividades do mesmo aplicativo têm afinidade entre si. Assim, por padrão, todas
+as atividades no mesmo aplicativo preferem estar na mesma tarefa. Contudo, é possível modificar
+a afinidade padrão de uma atividade. Atividades definidas
+em aplicativos diferentes podem compartilhar uma afinidade, ou atividades definidas no mesmo aplicativo podem ter
+diferentes afinidades de tarefa atribuídas.</p>
+
+<p>É possível modificar a afinidade de qualquer atividade com o atributo <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
+ do elemento
+<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>.</p>
+
+<p>O atributo <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
+ recebe um valor de string que deve ser exclusivo do nome do pacote padrão
+declarado no elemento <a href="{@docRoot}guide/topics/manifest/manifest-element.html">
+{@code &lt;manifest&gt;}
+</a> porque o sistema usa esse nome para identificar a afinidade
+de tarefa padrão do aplicativo.</p>
+
+<p>A afinidade tem relevância em duas circunstâncias:</p>
+<ul>
+  <li>Quando a intenção que inicializa uma atividade contém
+  o sinalizador
+  {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}.
+
+<p>Uma nova atividade é, por padrão, inicializada na tarefa da atividade
+que chamou {@link android.app.Activity#startActivity startActivity()}. Ela é colocada na mesma
+pilha de retorno do autor da chamada.  Contudo, se a intenção passada a
+{@link android.app.Activity#startActivity startActivity()}
+contiver o sinalizador {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}
+, o sistema procurará uma tarefa diferente para comportar a nova atividade. Na maioria das vezes, é uma nova tarefa.
+Porém, isso não é obrigatório.  Se já houver uma tarefa com a mesma afinidade
+da nova atividade, ela será inicializada naquela tarefa.  Caso contrário, ela iniciará uma nova tarefa.</p>
+
+<p>Se esse sinalizador fizer com que uma atividade inicie uma nova tarefa e se o usuário pressionar o botão <em>Página inicial</em>
+para sair dela,
+ será necessário ter um modo de o usuário navegar de volta à tarefa. Algumas entidades (como
+o gerenciador de notificação) sempre iniciam atividades em tarefas externas, nunca como parte de si mesmas, por isso
+elas sempre colocam {@code FLAG_ACTIVITY_NEW_TASK} nas intenções que passam
+a {@link android.app.Activity#startActivity startActivity()}.
+Se você tiver uma atividade que possa ser chamada
+por uma entidade externa que possa usar este sinalizador, certifique-se de que o usuário tenha um modo independente
+de voltar à tarefa iniciada, como com um ícone de inicialização (a atividade raiz da tarefa
+tem um filtro de intenções {@link android.content.Intent#CATEGORY_LAUNCHER}; consulte a seção <a href="#Starting">Início de uma tarefa</a> abaixo).</p>
+</li>
+
+  <li>Quando uma atividade tem o atributo <a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">
+{@code allowTaskReparenting}</a> definido como {@code "true"}.
+  <p>Nesse caso, a atividade pode mover-se da tarefa que iniciou para a tarefa afim
+quando for colocada em primeiro plano.</p>
+  <p>Por exemplo: suponhamos que uma atividade que relate condições do clima em cidades selecionadas seja
+definida como parte de um aplicativo de viagens.  Ela tem a mesma afinidade que outras atividades no mesmo
+aplicativo (a afinidade padrão do aplicativo) e permite a redefinição da hierarquia com esse atributo.
+Quando uma das atividades inicia a atividade de notificação de clima, ela inicialmente pertence à mesma
+tarefa de sua atividade. Porém, quando a tarefa do aplicativo de viagens é colocada em primeiro plano,
+a atividade de notificação de clima é reatribuída a essa tarefa e exibida dentro dela.</p>
+</li>
+</ul>
+
+<p class="note"><strong>Dica:</strong> se um arquivo {@code .apk} contiver mais de um "aplicativo"
+do ponto de vista do usuário, você provavelmente desejará usar o atributo <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
+ para designar diferentes afinidades às atividades associadas a cada "aplicativo".</p>
+
+
+
+<h3 id="Clearing">Apagar a pilha de retorno</h3>
+
+<p>Se o usuário sair de uma tarefa por muito tempo, o sistema apagará a tarefa de todas as atividades exceto
+a da atividade raiz.  Quando o usuário retornar à tarefa, somente a atividade raiz será restaurada.
+O sistema comporta-se dessa maneira porque, após longo tempo de uso, os usuários provavelmente abandonaram
+o que estavam fazendo antes e são direcionados de volta à tarefa para começar algo novo. </p>
+
+<p>Há alguns atributos de atividade que podem ser usados para modificar esse comportamento: </p>
+
+<dl>
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#always">alwaysRetainTaskState</a></code>
+</dt>
+<dd>Se esse atributo for definido como {@code "true"} na atividade raiz de uma tarefa,
+o comportamento padrão descrito não acontecerá.
+A tarefa reterá todas as atividades em sua pilha mesmo após um longo período.</dd>
+
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#clear">clearTaskOnLaunch</a></code></dt>
+<dd>Se esse atributo for definido como {@code "true"} na atividade raiz de uma tarefa,
+a pilha será apagada da atividade raiz sempre que o usuário sair da tarefa
+e retornar a ela.  Em outras palavras, é o oposto de 
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
+{@code alwaysRetainTaskState}</a>. O usuário sempre retorna à tarefa
+no estado inicial, mesmo ao retirar-se da tarefa somente por um momento.</dd>
+
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTaskLaunch</a></code>
+</dt>
+<dd>Esse atributo é como <a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">{@code clearTaskOnLaunch}</a>,
+mas opera
+em uma única atividade, e não em uma tarefa inteira.  Ele também apaga todas as atividades,
+inclusive a atividade raiz.  Quando definido como {@code "true"},
+a atividade permanece parte da tarefa somente para a sessão atual.  Se o usuário
+retirar-se e, em seguida, retornar à tarefa, ela não estará mais presente.</dd>
+</dl>
+
+
+
+
+<h3 id="Starting">Início de uma tarefa</h3>
+
+<p>É possível configurar uma atividade como ponto de entrada de uma tarefa fornecendo-lhe um filtro de intenções
+com {@code "android.intent.action.MAIN"} como a ação especificada
+e {@code "android.intent.category.LAUNCHER"}
+como a categoria especificada. Por exemplo:</p>
+
+<pre>
+&lt;activity ... &gt;
+    &lt;intent-filter ... &gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+    ...
+&lt;/activity&gt;
+</pre>
+
+<p>Um filtro de intenções desse tipo faz com que um ícone e o rótulo
+da atividade sejam exibidos no inicializador do aplicativo, fornecendo aos usuários um modo de inicializar a atividade
+e de retornar à tarefa criada a qualquer tempo após sua inicialização.
+</p>
+
+<p>Este segundo recurso é importante: é preciso que os usuários possam sair de uma tarefa e voltar a ela
+mais tarde usando esse inicializador de atividades. Por isso, os dois <a href="#LaunchModes">modos
+de inicialização</a> que marcam atividades como sempre iniciando uma tarefa ({@code "singleTask"} e
+{@code "singleInstance"}) devem ser usados somente quando a atividade tiver um filtro
+{@link android.content.Intent#ACTION_MAIN}
+e um {@link android.content.Intent#CATEGORY_LAUNCHER}. Imagine, por exemplo, o que
+aconteceria se o filtro não estivesse presente: uma intenção inicializaria uma atividade {@code "singleTask"}, iniciando uma
+nova tarefa, e o usuário perderia algum tempo trabalhando nessa tarefa. O usuário, então, pressiona o botão
+<em>Página inicial</em>. A tarefa é enviada para segundo plano e não fica mais visível. O usuário não tem como voltar
+à tarefa porque ela não é representada no inicializador do aplicativo.</p>
+
+<p>Para esses casos em que se deseja que o usuário não seja capaz de retornar a uma atividade, defina 
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">{@code finishOnTaskLaunch}</a>
+ do elemento 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+como {@code "true"} (consulte <a href="#Clearing">Apagar a pilha</a>).</p>
+
+<p>Veja mais informações sobre a representação e o gerenciamento de atividades 
+na tela de visão geral em <a href="{@docRoot}guide/components/recents.html">
+Tela de visão geral</a>.</p>
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For more information about how to use intents to
+activate other application components and publish the intents to which your components
+respond, continue with the <b><a
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent
+Filters</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/pt-br/guide/index.jd b/docs/html-intl/intl/pt-br/guide/index.jd
new file mode 100644
index 0000000..ab39647
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/index.jd
@@ -0,0 +1,74 @@
+page.title=Introdução ao Android
+
+@jd:body
+
+
+<div class="sidebox" style="width:220px"><!-- width to match col-4 below -->
+<p>Para saber como os aplicativos funcionam, comece com
+<a href="{@docRoot}guide/components/fundamentals.html">Fundamentos do aplicativo</a>.</p>
+<p>Para começar a programar imediatamente, leia <a href="{@docRoot}training/basics/firstapp/index.html">Criação do primeiro aplicativo</a>.</p>
+</div>
+
+<p>O Android fornece uma estrutura de aplicativo rica que permite criar aplicativos e jogos inovadores
+para dispositivos móveis em um ambiente de linguagem Java. Os documentos listados na navegação
+à esquerda fornecem detalhes da criação de aplicativos usando as várias APIs do Android.</p>
+
+<p>Se você é novo no desenvolvimento para Android, é importante que entenda
+os seguintes conceitos fundamentais sobre a estrutura de aplicativos do Android:</p>
+
+
+<div class="landing-banner">
+
+<div class="col-6">
+
+<h4>Aplicativos oferecem vários pontos de entrada</h4>
+
+<p>Aplicativos para Android são criados como uma combinação de componentes distintos que podem ser invocados
+individualmente. Por exemplo, uma <em>atividade</em> individual fornece uma única
+tela para a interface de usuário e um <em>serviço</em> realiza trabalho
+em segundo plano de forma independente.</p>
+
+<p>De um componente, é possível executar outro componente usando uma <em>intenção</em>. É possível até mesmo
+iniciar um componente em um aplicativo diferente, como uma atividade em um aplicativo de mapas para mostrar um endereço. Esse modelo 
+fornece vários pontos de entrada para um único aplicativo e permite que qualquer aplicativo se comporte como o "padrão" de um usuário
+para uma ação que outros aplicativos podem invocar.</p>
+
+
+<p><b>Saiba mais:</b></p>
+<ul class="nolist">
+<li><a href="{@docRoot}guide/components/fundamentals.html">Fundamentos de aplicativos</a>
+<li><a href="{@docRoot}guide/components/intents-filters.html">Intenções e filtros de intenções</a>
+<li><a href="{@docRoot}guide/components/activities.html">Atividades</a>
+</ul>
+
+</div>
+
+
+<div class="col-6">
+
+<h4>Os aplicativos se adaptam a diferentes dispositivos</h4>
+
+<p>O Android fornece uma estrutura de aplicativo adaptativa que permite fornecer recursos exclusivos para
+diferentes configurações de dispositivos. Por exemplo, é possível criar diferentes arquivos XML
+de layout para diversos tamanhos de tela e o sistema
+determina qual layout deverá aplicar com base no tamanho da tela do dispositivo atual.</p>
+
+<p>Você pode consultar a disponibilidade dos recursos do dispositivo em tempo de execução se qualquer recurso do 
+aplicativo exigir hardware específico, como uma câmera. Se necessário, também é possível declarar recursos que o aplicativo exige,
+para que mercados como a Google Play Store não permitam a instalação em dispositivos que não sejam compatíveis
+com aquele recurso.</p>
+
+
+<p><b>Saiba mais:</b></p>
+<ul class="nolist">
+<li><a href="{@docRoot}guide/practices/compatibility.html">Compatibilidade do dispositivo</a>
+<li><a href="{@docRoot}guide/topics/resources/overview.html">Visão geral dos recursos</a>
+<li><a href="{@docRoot}guide/topics/ui/overview.html">Visão geral da interface do usuário</a>
+</ul>
+
+</div>
+
+</div><!-- end landing-banner -->
+
+
+
diff --git a/docs/html-intl/intl/pt-br/guide/topics/manifest/manifest-intro.jd b/docs/html-intl/intl/pt-br/guide/topics/manifest/manifest-intro.jd
new file mode 100644
index 0000000..e337796
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/manifest/manifest-intro.jd
@@ -0,0 +1,517 @@
+page.title=Manifesto do aplicativo
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Neste documento</h2>
+<ol>
+<li><a href="#filestruct">Estrutura do arquivo de manifesto</a></li>
+<li><a href="#filec">Convenções de arquivos</a>
+<li><a href="#filef">Características do arquivo</a>
+	<ol>
+	<li><a href="#ifs">Filtros de intenções</a></li>
+	<li><a href="#iconlabel">Ícones e etiquetas</a></li>
+	<li><a href="#perms">Permissões</a></li>
+	<li><a href="#libs">Bibliotecas</a></li>
+	</ol></li>
+</ol>
+</div>
+</div>
+
+<p>
+  Todo aplicativo tem que ter um arquivo AndroidManifest.xml (precisamente
+com esse nome) no seu diretório raiz. <span itemprop="description">O arquivo de manifesto
+apresenta informações essenciais sobre o aplicativo ao sistema Android,
+necessárias para o sistema antes que ele possa executar o código
+do aplicativo.</span> Entre outras coisas, o manifesto serve para:
+</p>
+
+<ul>
+<li>Nomear o pacote Java para o aplicativo.
+O nome do pacote serve como identificador exclusivo para o aplicativo.</li>
+
+<li>Descrever os componentes do aplicativo &mdash; as atividades,
+os serviços, os receptores de transmissão e os provedores de conteúdo que compõem
+o aplicativo.  Nomear as classes que implementam os componentes
+e publicam seus recursos (por exemplo, que mensagens {@link android.content.Intent 
+Intent} eles podem tratar).  Essas declarações permitem ao sistema Android
+saber quais são os componentes e em que condições eles podem ser iniciados.</li>
+
+<li>Determinar que processos hospedarão componentes de aplicativo.</li>  
+
+<li>Declarar as permissões que o aplicativo deve ter para acessar
+partes protegidas da API e interagir com outros aplicativos.</li>  
+
+<li>Declarar também as permissões que outros devem ter
+para interagir com os componentes do aplicativo.</li>
+
+<li>Listar as classes {@link android.app.Instrumentation} que fornecem
+geração de perfil e outras informações durante a execução do aplicativo.  Essas declarações
+estão presentes no manifesto somente enquanto o aplicativo está em desenvolvimento
+e teste — elas são removidas antes da publicação do aplicativo.</li>
+
+<li>Declarar o nível mínimo da API do Android que o aplicativo
+exige.</li>
+
+<li>Listar as bibliotecas às quais o aplicativo deve se vincular.</li>
+</ul>
+
+
+<h2 id="filestruct">Estrutura do arquivo de manifesto</h2>
+
+<p>
+O diagrama ilustra a estrutura geral do arquivo de manifesto e cada
+elemento que ele pode conter.  Cada elemento e seus atributos
+são documentados na totalidade em um arquivo separado.  Para exibir informações detalhadas
+sobre cada elemento, clique no nome do elemento no diagrama,
+na lista de elementos em ordem alfabética que acompanha o diagrama
+ou em qualquer outra menção ao nome do elemento. 
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
+
+    <a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration /&gt;</a>  <!-- ##api level 3## -->
+    <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature /&gt;</a>  <!-- ##api level 4## -->
+    <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens /&gt;</a>  <!-- ##api level 4## -->
+    <a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html">&lt;compatible-screens /&gt;</a>  <!-- ##api level 9## -->
+    <a href="{@docRoot}guide/topics/manifest/supports-gl-texture-element.html">&lt;supports-gl-texture /&gt;</a>  <!-- ##api level 11## -->
+
+    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action /&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category /&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;/activity&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;/activity-alias&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data/&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;/service&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;/receiver&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/path-permission-element.html">&lt;path-permission /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;/provider&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library /&gt;</a>
+
+    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;/application&gt;</a>
+
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;/manifest&gt;</a>
+</pre>
+
+<p>
+Todos os elementos que podem aparecer no arquivo de manifesto estão
+relacionados abaixo em ordem alfabética.  Estes são os únicos elementos legais. Não é possível
+adicionar elementos ou atributos próprios.  
+</p>
+
+<p style="margin-left: 2em">
+<code><a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens&gt;</a></code>  <!-- ##api level 4## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration&gt;</a></code>  <!-- ##api level 3## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature&gt;</a></code>  <!-- ##api level 4## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</a></code>
+</p>
+
+
+    
+
+<h2 id="filec">Convenções de arquivos</h2>
+
+<p>
+Algumas convenções e regras se aplicam geralmente a todos os elementos e atributos
+no manifesto:
+</p>
+
+<dl>
+<dt><b>Elementos</b></dt>
+<dd>Somente os elementos
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+e <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+são necessários — eles devem estar presentes e ocorrer somente uma vez.  
+A maioria dos outros pode ocorrer diversas vezes ou nunca &mdash; embora
+pelo menos alguns deles devam estar presentes para que o manifesto
+realize algo significativo.
+
+<p>
+Se um elemento contiver qualquer coisa, ele conterá outros elementos.  
+Todos os valores são definidos por meio de atributos, e não como dados de caracteres dentro de um elemento.
+</p>
+
+<p>
+Elementos de mesmo nível geralmente não são ordenados.  Por exemplo: os elementos
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>, 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+e <code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code> 
+podem ser combinados entre si em qualquer sequência.  (O elemento 
+<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
+é uma exceção a essa regra:  ele deve seguir o 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 
+para o qual é alias.)
+</p></dd>
+
+<dt><b>Atributos</b></dt>
+<dd>Formalmente, todos os atributos são opcionais.  No entanto, alguns deles
+devem ser especificados para um elemento para cumprir a sua finalidade.  Use
+a documentação como guia.  Para atributos verdadeiramente opcionais, ele menciona
+um valor padrão ou declara o que acontece na ausência de uma especificação.
+
+<p>Exceto por alguns atributos do elemento 
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+raiz, todos os nomes de atributo têm um prefixo {@code android:} &mdash; 
+por exemplo, {@code android:alwaysRetainTaskState}.  Como o prefixo é universal,
+a documentação geralmente o omite ao referir-se a atributos
+pelo nome.</p></dd>
+
+<dt><b>Declaração de nomes de classe</b></dt>
+<dd>Muitos elementos correspondem a objetos Java, inclusive elementos do próprio
+aplicativo (o elemento 
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+) e seus componentes principais &mdash; atividades 
+(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>), 
+serviços 
+(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>), 
+receptores de transmissão 
+(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>) 
+e provedores de conteúdo 
+(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>).  
+
+<p>
+Se uma subclasse for definida, como quase sempre acontece para classes de componentes 
+({@link android.app.Activity}, {@link android.app.Service}, 
+{@link android.content.BroadcastReceiver} e {@link android.content.ContentProvider}), 
+a subclasse será declarada por meio de um atributo {@code name}.  O nome deve conter
+toda a designação do pacote.  
+Por exemplo: uma subclasse {@link android.app.Service} pode ser declarada assim:
+</p>
+
+<pre>&lt;manifest . . . &gt;
+    &lt;application . . . &gt;
+        &lt;service android:name="com.example.project.SecretService" . . . &gt;
+            . . .
+        &lt;/service&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+No entanto, para encurtar, se o primeiro caractere da string for um ponto,
+a string será acrescentada ao nome do pacote do aplicativo (conforme especificado pelo atributo 
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code> 
+ do elemento 
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> 
+).  A seguinte atribuição é igual à atribuição acima: 
+</p>
+
+<pre>&lt;manifest package="com.example.project" . . . &gt;
+    &lt;application . . . &gt;
+        &lt;service android:name=".SecretService" . . . &gt;
+            . . .
+        &lt;/service&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+Ao iniciar um componente, o Android cria uma instância da subclasse nomeada.  
+Se nenhuma subclasse for especificada, ele criará uma instância da classe base.
+</p></dd>
+
+<dt><b>Vários valores</b></dt>
+<dd>Se for especificado mais de um valor, o elemento sempre será repetido
+em vez de listar os vários valores dentro de um único elemento.  
+Por exemplo, um filtro de intenção pode listar algumas ações:
+
+<pre>&lt;intent-filter . . . &gt;
+    &lt;action android:name="android.intent.action.EDIT" /&gt;
+    &lt;action android:name="android.intent.action.INSERT" /&gt;
+    &lt;action android:name="android.intent.action.DELETE" /&gt;
+    . . .
+&lt;/intent-filter&gt;</pre></dd>
+
+<dt><b>Valores de recurso</b></dt>
+<dd>Alguns atributos têm valores que podem ser exibidos aos usuários &mdash; por exemplo,
+uma etiqueta e um ícone de uma atividade.  Os valores desses atributos
+devem ser localizados e, por tanto, definidos a partir de um recurso ou tema.  Os valores 
+de recurso são expressos no formato a seguir:</p>
+
+<p style="margin-left: 2em">{@code @[<i>pacote</i>:]<i>tipo</i>:<i>nome</i>}</p>
+
+<p>
+em que o nome do <i>pacote</i> pode ser omitido se o recurso estiver no mesmo pacote
+que o aplicativo <i>tipo</i> é um tipo de recurso &mdash; como uma "string" ou 
+"drawable" (desenhável) &mdash; e <i>nome</i> é o nome que identifica o recurso específico.  
+Por exemplo:
+</p>
+
+<pre>&lt;activity android:icon="@drawable/smallPic" . . . &gt</pre>
+
+<p>
+Os valores de um tema são expressos de forma semelhante, mas, com um '{@code ?}' 
+em vez de '{@code @}':
+</p>
+
+<p style="margin-left: 2em">{@code ?[<i>pacote</i>:]<i>tipo</i>:<i>nome</i>}
+</p></dd>
+
+<dt><b>Valores de string</b></dt>
+<dd>Quando o valor de um atributo é uma string, devem-se usar duas barras invertidas ('{@code \\}') 
+para caracteres de escape &mdash; por exemplo, '{@code \\n}' para 
+uma nova linha ou '{@code \\uxxxx}' para um caractere Unicode.</dd>
+</dl>
+
+
+<h2 id="filef">Características do arquivo</h2>
+
+<p>
+As seções a seguir descrevem como alguns recursos do Android se refletem
+no arquivo de manifesto.
+</p>
+
+
+<h3 id="ifs">Filtros de intenções</h3>
+
+<p>
+Os componentes fundamentais de um aplicativo (suas atividades, serviços e receptores
+de transmissão) são ativados por <i>intenções</i>.  Intenções são
+pacotes de informações (objetos {@link android.content.Intent}) que descrevem
+uma ação desejada &mdash; inclusive os dados usados em ações, a categoria
+do componente que deve executar a ação e outras instruções pertinentes.  
+O Android localiza um componente adequado para responder à intenção, inicia
+uma nova instância do componente se necessário e passa-o
+ao objeto da intenção.
+</p>
+
+<p>
+Os componentes anunciam seus recursos &mdash; os tipos de intenção aos quais eles podem
+responder &mdash; por meio de <i>filtros de intenções</i>.  Como o sistema Android
+precisa saber que intenções um componente pode tratar antes de iniciá-lo, os filtros
+de intenções são especificados no manifesto como elementos 
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+.  Os componentes podem ter qualquer quantidade de filtros, em que cada um descreve
+um recurso diferente.
+</p>
+
+<p>
+A intenção que nomeia explicitamente um componente alvo ativará
+aquele componente — o filtro não desempenha nenhuma função.  Porém, uma intenção que não especifica nenhum alvo
+pelo nome pode ativar um componente somente se ele puder passar por um dos filtros
+do componente.
+</p>
+
+<p>
+Para ver como os objetos de intenção são testados em relação aos filtros de intenções,
+consulte o documento 
+<a href="{@docRoot}guide/components/intents-filters.html">Intenções 
+e filtros de intenções</a> em separado.
+</p>
+
+
+<h3 id="iconlabel">Ícones e etiquetas</h3>
+
+<p>
+Alguns elementos têm atributos {@code icon} e {@code label} de um pequeno ícone
+e uma etiqueta de texto que pode ficar visível para os usuários.  Alguns deles também têm um atributo 
+{@code description} para um texto explicativo mais longo que também pode ser 
+exibido na tela.  Por exemplo: o elemento 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+tem todos os três atributos; assim, quando o usuário é consultado para dar 
+permissão a um aplicativo que a solicitou, serão apresentados ao usuário um ícone 
+que representa a permissão, o nome da permissão e uma descrição 
+de tudo o que está envolvido.
+</p>
+
+<p>
+Em todo caso, o ícone e a etiqueta definidos em um elemento recipiente se tornam as configurações 
+{@code icon} e {@code label} padrão de todos os subelementos do contêiner.  
+Assim, o ícone e a etiqueta definidos no elemento 
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+são o ícone e a etiqueta padrão para cada um dos componentes do aplicativo.  
+Da mesma forma, o ícone e a etiqueta definidos para um componente &mdash; por exemplo, um elemento 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 
+ &mdash; são as configurações padrão para cada um dos elementos 
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> 
+do componente.  Se um elemento
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+define uma etiqueta, mas uma atividade e seu filtro de intenção não definem, 
+a etiqueta do aplicativo é tratada como a etiqueta de atividade 
+e do filtro de intenção.
+</p>
+
+<p>
+O ícone e a etiqueta definidos para um filtro de intenção são usados para representar um componente 
+apresentado para o usuário para preencher a função
+anunciada pelo filtro.  Por exemplo: um filtro com as configurações 
+"{@code android.intent.action.MAIN}" e 
+"{@code android.intent.category.LAUNCHER}" anuncia uma atividade 
+como uma que inicia um aplicativo &mdash; ou seja,
+que deve ser exibida no inicializador do aplicativo.  O ícone e a etiqueta 
+definidos no filtro são, portanto, as exibidas no inicializador.
+</p>
+
+
+<h3 id="perms">Permissões</h3>
+
+<p>
+As <i>permissões</i> são restrições que limitam o acesso a parte do código 
+ou aos dados de um dispositivo.   A limitação é imposta para proteger dados 
+essenciais que podem sofrer mau uso e distorções ou prejudicar a experiência do usuário.  
+</p>
+
+<p>
+Cada permissão é identificada por uma etiqueta exclusiva.  Geralmente a etiqueta indica 
+a ação que foi restringida.  A seguir há alguns exemplos de permissões definidas 
+pelo Android:
+</p>
+
+<p style="margin-left: 2em">{@code android.permission.CALL_EMERGENCY_NUMBERS}
+<br/>{@code android.permission.READ_OWNER_DATA}
+<br/>{@code android.permission.SET_WALLPAPER}
+<br/>{@code android.permission.DEVICE_POWER}</p>
+
+<p>
+Um recurso pode ser protegido por, no máximo, uma permissão.
+</p>
+
+<p>
+Se um aplicativo precisar de acesso a um recurso protegido por uma permissão, 
+ele deve declarar que precisa da permissão com um elemento 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 
+no manifesto.  Assim, quando o aplicativo é instalado 
+no dispositivo, o instalador determina se concederá ou não a permissão 
+solicitada, marcando as autoridades que assinaram os certificados 
+do aplicativo e, em alguns casos, perguntando ao usuário.  
+Se a permissão for concedida, o aplicativo será capaz de usar os recursos 
+protegidos.  Caso contrário, sua tentativa de acessar esses recursos simplesmente falhará 
+sem nenhuma notificação ao usuário. 
+</p>
+
+<p>
+Um aplicativo também pode proteger seus componentes (atividades, serviços, 
+receptores de transmissão e provedores de conteúdo) com permissões.  Ele pode empregar 
+qualquer uma das permissões definidas pelo Android (listadas em 
+{@link android.Manifest.permission android.Manifest.permission}) ou declaradas 
+por outros aplicativos.  Ou então, ele pode definir as suas próprias.  As novas permissões são declaradas 
+com o elemento 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>.
+  Por exemplo: uma atividade pode ser protegida da seguinte forma:
+</p>
+
+<pre>
+&lt;manifest . . . &gt;
+    &lt;permission android:name="com.example.project.DEBIT_ACCT" . . . /&gt;
+    &lt;uses-permission android:name="com.example.project.DEBIT_ACCT" /&gt;
+    . . .
+    &lt;application . . .&gt;
+        &lt;activity android:name="com.example.project.FreneticActivity"
+                  android:permission="com.example.project.DEBIT_ACCT"
+                  . . . &gt;
+            . . .
+        &lt;/activity&gt;
+    &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+
+<p>
+Observe que, nesse exemplo, a permissão {@code DEBIT_ACCT}, além de declarada
+com o elemento 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+, tem seu uso solicitado com o elemento 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
+  Ela deve ser solicitada para que outros componentes do aplicativo
+iniciem a atividade protegida, mesmo que a proteção 
+seja imposta pelo próprio aplicativo.  
+</p>
+
+<p>
+Se, no mesmo exemplo, o atributo {@code permission} fosse definido
+como uma permissão declarada em outro lugar 
+(como {@code android.permission.CALL_EMERGENCY_NUMBERS}), não seria
+necessário declará-la novamente com um elemento 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>.
+  No entanto, ainda seria necessário solicitar seu uso com 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>. 
+</p>
+
+<p>
+O elemento 
+<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code> 
+declara um espaço de nome de um grupo de permissões que será definido 
+no código.  E 
+<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+define um etiqueta de um conjunto de permissões (os dois declarados no manifesto com elementos 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 
+e as declaradas em outro lugar).  Ele afeta somente a forma com que as permissões estão 
+agrupadas quando apresentadas ao usuário.  O elemento 
+<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+não especifica que permissões pertencem ao grupo; 
+ele só dá um nome ao grupo.  Para incluir uma permissão no grupo,
+designa-se o nome do grupo ao atributo 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code> 
+ do elemento 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>.
+
+</p>
+
+
+<h3 id="libs">Bibliotecas</h3>
+
+<p>
+Todo aplicativo está vinculado à biblioteca Android padrão, que 
+contém os pacotes básicos para programar aplicativos (com classes comuns 
+tais como Activity, Service, Intent, View, Button, Application, ContentProvider
+etc.).
+</p>
+
+<p>
+No entanto, alguns pacotes residem em suas próprias bibliotecas.  Se o aplicativo 
+usar código de algum desses pacotes, ele deve receber solicitação explícita para ser 
+vinculado a eles.  O manifesto deve conter um elemento 
+<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
+ separado para nomear cada uma das bibliotecas  (o nome da biblioteca se encontra 
+na documentação do pacote).
+</p>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/providers/calendar-provider.jd b/docs/html-intl/intl/pt-br/guide/topics/providers/calendar-provider.jd
new file mode 100644
index 0000000..ce72b7d
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/providers/calendar-provider.jd
@@ -0,0 +1,1184 @@
+page.title=Provedor de agenda
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+    <h2>Neste documento</h2>
+    <ol>
+  <li><a href="#overview">Conceitos básicos</a></li>
+  <li><a href="#manifest">Permissões do usuário</a></li>
+  <li><a href="#calendar">Tabela de agenda</a>
+<ol>
+      <li><a href="#query">Consulta em uma agenda</a></li>
+      <li><a href="#modify-calendar">Modificação de uma agenda</a></li>
+      <li><a href="#insert-calendar">Inserção de uma agenda</a></li>
+    </ol>
+  </li>
+  <li><a href="#events">Tabelas de eventos</a>
+<ol>
+      <li><a href="#add-event">Adição de eventos</a></li>
+      <li><a href="#update-event">Atualização de eventos</a></li>
+      <li><a href="#delete-event">Exclusão de eventos</a></li>
+    </ol>
+  </li>
+  <li><a href="#attendees">Tabela de participantes</a>
+<ol>
+      <li><a href="#add-attendees">Adição de participantes</a></li>
+    </ol>
+  </li>
+  <li><a href="#reminders">Tabela de lembretes</a>
+<ol>
+      <li><a href="#add-reminders">Adição de lembretes</a></li>
+    </ol>
+  </li>
+  <li><a href="#instances">Tabela de instâncias</a>
+  <ol>
+      <li><a href="#query-instances">Consulta na tabela de instâncias</a></li>
+  </ol></li>
+  <li><a href="#intents">Intenções do Agenda</a>
+  <ol>
+      <li><a href="#intent-insert">Uso de uma intenção para inserir um evento</a></li>
+      <li><a href="#intent-edit">Uso de uma intenção para editar um evento</a></li>
+      <li><a href="#intent-view">Uso de intenções para exibir dados de agenda</a></li>
+    </ol>
+  </li>
+  
+  <li><a href="#sync-adapter">Adaptadores de sincronização</a></li>
+</ol>
+
+    <h2>Classes principais</h2>
+    <ol>
+      <li>{@link android.provider.CalendarContract.Calendars}</li>
+      <li>{@link android.provider.CalendarContract.Events}</li>
+      <li>{@link android.provider.CalendarContract.Attendees}</li>
+      <li>{@link android.provider.CalendarContract.Reminders}</li>
+    </ol>
+</div>
+</div>
+
+<p>O Provedor de agenda é um repositório para eventos da agenda do usuário. A
+API do Provedor de Agenda permite consultar, inserir, atualizar e excluir
+operações em agendas, eventos, participantes, lembretes etc.</p>
+
+
+<p>A API do Provedor de Agenda pode ser usada por aplicativos e adaptadores de sincronização. As regras
+variam conforme o tipo de programa que realiza as chamadas. Este documento
+se concentra principalmente no uso da API do Provedor de Agenda como um aplicativo. Veja
+uma discussão sobre as diferenças entre adaptadores de sincronização em
+<a href="#sync-adapter">Adaptadores de sincronização</a>.</p>
+
+
+<p>Normalmente, para ler ou programar dados da agenda, o manifesto de um aplicativo deve
+conter as permissões adequadas descritas em <a href="#manifest">Permissões
+do usuário</a>. Para facilitar a realização de operações comuns, o Provedor
+de Agenda fornece um conjunto de intenções conforme descrito em <a href="#intents">Intenções
+do Agenda</a>. Essas intenções levam os usuários ao aplicativo Agenda para inserir, exibir
+e editar eventos. O usuário interage com o aplicativo Agenda e, em seguida,
+retorna ao aplicativo original. Assim, o aplicativo não precisa solicitar permissões
+nem fornecer uma interface gráfica para exibir ou criar eventos.</p>
+
+<h2 id="overview">Conceitos básicos</h2>
+
+<p>Os <a href="{@docRoot}guide/topics/providers/content-providers.html">provedores de conteúdo</a> armazenam dados e disponibilizam-nos
+para aplicativos. Os provedores de conteúdo oferecidos pela plataforma do Android (inclusive o Provedor de Agenda) normalmente expõem dados como um conjunto de tabelas baseadas em
+um modelo de banco de dados relacional, em que cada linha é um registro e cada coluna são dados
+de um tipo e significado específico. Por meio da API do Provedor de Agenda, aplicativos
+e adaptadores de sincronização podem obter acesso de leitura/gravação às tabelas do banco de dados que armazenam
+dados da agenda do usuário.</p>
+
+<p>Cada provedor de conteúdo expõe uma URI pública (agrupada como
+um objeto {@link android.net.Uri}
+) que identifica exclusivamente seu conjunto de dados.  Um provedor de conteúdo que controla
+diversos conjuntos de dados (diversas tabelas) expõe uma URI separada para cada um.  Todas as
+URIs de provedores começam com a string "content://".  Ela
+identifica os dados como controlados por um provedor de conteúdo. O Provedor
+de Agenda define constantes para as URIs de cada uma das classes (tabelas). Essas
+URIs têm o formato <code><em>&lt;class&gt;</em>.CONTENT_URI</code>. Por exemplo:
+ {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.</p>
+
+<p>A figura 1 exibe uma representação gráfica do modelo de dados do Provedor de Agenda. Ela ilustra
+as tabelas e os campos principais que as vinculam entre si.</p>
+
+<img src="{@docRoot}images/providers/datamodel.png" alt="Calendar Provider Data Model" />
+<p class="img-caption"><strong>Figura 1.</strong> Modelo de dados do Provedor de Agenda.</p>
+
+<p>Cada usuário pode ter diversas agendas e diferentes agendas podem ser associadas a diferentes tipos de conta (Google Agenda, Exchange etc.).</p>
+
+<p>O {@link android.provider.CalendarContract} define o modelo de dados de informações relacionadas a eventos e agendas. Esses dados são armazenados em diversas tabelas, que são listadas a seguir.</p>
+
+<table>
+  <tr>
+    <th>Tabela (classe)</th>
+    <th>Descrição</th>
+  </tr>
+  <tr>
+    <td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
+    
+    <td>Essa tabela contém
+as informações específicas da agenda. Cada linha nessa tabela contém os detalhes
+de uma única agenda, como nome, cor, informações de sincronização etc.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Events}</td>
+    
+    <td>Essa tabela contém
+as informações específicas do evento. Cada linha nessa tabela tem as informações de um único
+evento &mdash; por exemplo: título do evento, local, horário de início, horário
+de término etc. O evento pode ocorrer uma vez ou diversas vezes. Os participantes,
+lembretes e propriedades estendidas são armazenados em tabelas separadas. 
+Cada um deles tem um {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
+que referencia o {@link android.provider.BaseColumns#_ID} na tabela de eventos.</td>
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances}</td>
+    
+    <td>Essa tabela contém os
+horários de início e término para cada ocorrência em um evento. Cada linha nessa tabela
+representa uma única ocorrência do evento. Para eventos de ocorrência única, há um mapeamento 1:1
+de instâncias para eventos. Para eventos recorrentes, diversas linhas correspondentes
+a diversas ocorrências daquele evento são geradas automaticamente.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Attendees}</td>
+    
+    <td>Essa tabela contém
+as informações dos participantes (convidados) do evento. Cada linha representa um único convidado
+de um evento. Ela especifica o tipo de convidado e a resposta quanto à participação do convidado
+no evento.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Reminders}</td>
+    
+    <td>Essa tabela contém os
+dados de alerta/notificação. Cada linha representa um único alerta de um evento. Um evento
+pode ter vários lembretes. O número máximo de lembretes por evento
+é especificado em
+{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS},
+que é definido pelo adaptador de sincronização
+que possui a agenda fornecida. Os lembretes são especificados em minutos antes do evento
+e têm um método que determina a forma de alertar o usuário.</td>
+  </tr>
+  
+</table>
+
+<p>A API do Provedor de Agenda é projetada para ser flexível e poderosa. Ao mesmo tempo,
+é importante fornecer uma boa experiência ao usuário final
+e proteger a integridade da agenda e de seus dados. Para isso, a seguir apresentam-se
+alguns pontos a considerar ao usar a API:</p>
+
+<ul>
+
+<li><strong>Inserção, atualização e exibição de eventos da agenda.</strong> Para inserir, modificar e ler eventos diretamente do provedor de agenda, é necessário ter as <a href="#manifest">permissões</a> apropriadas. Contudo, se o aplicativo em criação não for um aplicativo de agenda totalmente desenvolvido nem um adaptador de sincronização, não será necessário solicitar essas permissões. Em vez disso, podem-se usar intenções compatíveis com o aplicativo Agenda do Android para entregar operações de leitura e gravação a esse aplicativo. Ao usar as intenções, o aplicativo envia usuários ao aplicativo Agenda para realizar a operação desejada
+em um formulário pré-preenchido. Após finalizarem a operação, eles serão direcionados de volta ao aplicativo.
+Ao projetar seu aplicativo para realizar operações comuns através do Agenda,
+os usuários têm uma experiência em uma interface robusta e consistente. Essa é
+a abordagem recomendada. Para obter mais informações, consulte <a href="#intents">Intenções
+do Agenda</a>.</p>
+
+
+<li><strong>Adaptadores de sincronização.</strong> Os adaptadores de sincronização sincronizam os dados da agenda
+em um dispositivo do usuário com outro servidor ou fonte de dados. Nas tabelas
+{@link android.provider.CalendarContract.Calendars}
+e {@link android.provider.CalendarContract.Events},
+há colunas reservadas para o uso dos adaptadores de sincronização.
+O provedor e os aplicativos não devem modificá-las. De fato, elas não são
+visíveis a menos que sejam acessadas como um adaptador de sincronização. Para obter mais informações sobre
+adaptadores de sincronização, consulte <a href="#sync-adapter">Adaptadores de sincronização</a>.</li>
+
+</ul>
+
+
+<h2 id="manifest">Permissões do usuário</h2>
+
+<p>Para ler dados da agenda, o aplicativo deve conter a permissão {@link
+android.Manifest.permission#READ_CALENDAR} no arquivo de manifesto. Ele
+deve conter a permissão {@link android.Manifest.permission#WRITE_CALENDAR}
+para excluir, inserir ou atualizar dados da agenda:</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;...&gt;
+    &lt;uses-sdk android:minSdkVersion=&quot;14&quot; /&gt;
+    &lt;uses-permission android:name=&quot;android.permission.READ_CALENDAR&quot; /&gt;
+    &lt;uses-permission android:name=&quot;android.permission.WRITE_CALENDAR&quot; /&gt;
+    ...
+&lt;/manifest&gt;
+</pre>
+
+
+<h2 id="calendar">Tabela de agendas</h2>
+
+<p>A tabela {@link android.provider.CalendarContract.Calendars} contém detalhes
+de agendas individuais. As colunas
+Agendas a seguir são graváveis tanto por aplicativos quanto por <a href="#sync-adapter">adaptadores de sincronização</a>. 
+Para obter uma lista completa de campos compatíveis, consulte
+a referência {@link android.provider.CalendarContract.Calendars}</p>
+<table>
+  <tr>
+    <th>Constante</th>
+    <th>Descrição</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#NAME}</td>
+    <td>O nome da agenda.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#CALENDAR_DISPLAY_NAME}</td>
+    <td>O nome desta agenda que é exibido ao usuário.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
+    
+    <td>Um booleano indicando se a agenda foi selecionada para ser exibida. Um valor
+de 0 indica que eventos associados a essa agenda não devem ser
+exibidos.  Um valor de 1 indica que eventos associados a essa agenda devem
+ser exibidos. Esse valor afeta a geração de linhas na tabela {@link
+android.provider.CalendarContract.Instances}.</td>
+
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
+    
+    <td>Um booleano que indica se a agenda deve ser sincronizada e ter
+os eventos armazenados no dispositivo. Um valor de 0 indica a não sincronização dessa agenda
+e o não armazenamento dos eventos no dispositivo.  Um valor de 1 indica a sincronização dos eventos dessa agenda
+e o armazenamento dos eventos no dispositivo.</td>
+  </tr>
+</table>
+
+<h3 id="query">Consulta em uma agenda</h3>
+
+<p>A seguir há um exemplo que mostra como obter as agendas de propriedade de determinado
+usuário. Para simplificar o exemplo, a operação de consulta é exibida no
+encadeamento da interface do usuário ("encadeamento principal"). Na prática, isso deve ser feito em um encadeamento
+assíncrono em vez de no encadeamento principal. Para ver mais discussões, consulte 
+<a href="{@docRoot}guide/components/loaders.html">Carregadores</a>. Se você não estiver somente
+lendo dados, mas modificando-os, consulte {@link android.content.AsyncQueryHandler}.
+</p>
+
+
+<pre>
+// Projection array. Creating indices for this array instead of doing
+// dynamic lookups improves performance.
+public static final String[] EVENT_PROJECTION = new String[] {
+    Calendars._ID,                           // 0
+    Calendars.ACCOUNT_NAME,                  // 1
+    Calendars.CALENDAR_DISPLAY_NAME,         // 2
+    Calendars.OWNER_ACCOUNT                  // 3
+};
+  
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
+private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
+private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
+  
+
+<div class="sidebox-wrapper"> <div class="sidebox"> <h3>Por que incluir
+ACCOUNT_TYPE?</h3> <p>Ao consultar um {@link
+android.provider.CalendarContract.Calendars#ACCOUNT_NAME
+Calendars.ACCOUNT_NAME}, é necessário incluir
+{@link android.provider.CalendarContract.Calendars#ACCOUNT_TYPE Calendars.ACCOUNT_TYPE}
+na seleção. Isso porque determinada conta
+só é considerada exclusiva devido a seus <code>ACCOUNT_NAME</code>
+e <code>ACCOUNT_TYPE</code>. <code>ACCOUNT_TYPE</code> é a string correspondente
+ao autenticador da conta que foi usado quando ela foi registrada com
+o {@link android.accounts.AccountManager}. Há também um tipo especial de conta chamado {@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} para agendas
+não associadas a nenhuma conta do dispositivo. Contas {@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} não são
+sincronizadas.</p> </div> </div> 
+
+
+<p> Na próxima parte do exemplo, você construirá a consulta. A seleção
+especifica os critérios da consulta. Neste exemplo, a consulta busca
+agendas que tenham o <code>ACCOUNT_NAME</code>
+"sampleuser@google.com", o <code>ACCOUNT_TYPE</code>
+"com.google" e o <code>OWNER_ACCOUNT</code>
+"sampleuser@google.com". Para ver todas as agendas que um usuário
+tenha exibido, não somente as que ele possui, omita o <code>OWNER_ACCOUNT</code>.
+A consulta retorna um objeto {@link android.database.Cursor}
+que pode ser usado para cruzar o conjunto de resultados retornado pela consulta
+do banco de dados. Para ver mais informações sobre o uso de consultas em provedores de conteúdo,
+consulte <a href="{@docRoot}guide/topics/providers/content-providers.html">Provedores de conteúdo</a>.</p>
+
+
+<pre>// Run query
+Cursor cur = null;
+ContentResolver cr = getContentResolver();
+Uri uri = Calendars.CONTENT_URI;   
+String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND (" 
+                        + Calendars.ACCOUNT_TYPE + " = ?) AND ("
+                        + Calendars.OWNER_ACCOUNT + " = ?))";
+String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
+        "sampleuser@gmail.com"}; 
+// Submit the query and get a Cursor object back. 
+cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
+
+<p>Essa próxima seção usa o cursor para avançar pelo conjunto de resultados. Ele usa
+as constantes definidas no início do exemplo para retornar os valores
+de cada campo.</p>
+    
+<pre>// Use the cursor to step through the returned records
+while (cur.moveToNext()) {
+    long calID = 0;
+    String displayName = null;
+    String accountName = null;
+    String ownerName = null;
+      
+    // Get the field values
+    calID = cur.getLong(PROJECTION_ID_INDEX);
+    displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
+    accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
+    ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
+              
+    // Do something with the values...
+
+   ...
+}
+</pre>
+  
+<h3 id="modify-calendar">Modificação de uma agenda</h3>
+
+<p>Para realizar uma atualização de uma agenda, é possível fornecer o {@link
+android.provider.BaseColumns#_ID} da agenda como um ID anexado à
+URI
+
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
+ou como o primeiro item de seleção. A seleção
+deve iniciar com <code>&quot;_id=?&quot;</code> e o primeiro
+<code>selectionArg</code> deve ser o {@link
+android.provider.BaseColumns#_ID} da agenda. 
+Também é possível realizar atualizações com codificações do ID na URI. Este exemplo altera
+o nome de exibição de uma agenda usando a
+abordagem
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}):</p>
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long calID = 2;
+ContentValues values = new ContentValues();
+// The new display name for the calendar
+values.put(Calendars.CALENDAR_DISPLAY_NAME, &quot;Trevor's Calendar&quot;);
+Uri updateUri = ContentUris.withAppendedId(Calendars.CONTENT_URI, calID);
+int rows = getContentResolver().update(updateUri, values, null, null);
+Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);</pre>
+
+<h3 id="insert-calendar">Inserção de uma agenda</h2>
+
+<p>Agendas são projetadas para serem gerenciadas principalmente por um adaptador de sincronização, por isso
+deve-se inserir somente novas agendas como um adaptador de sincronização. Para a maior parte,
+aplicativos só podem efetuar mudanças superficiais em agendas, como mudar o nome de exibição. Se
+um aplicativo precisa criar uma agenda local, pode fazê-lo realizando
+a inserção da agenda como um adaptador de sincronização usando um {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} de {@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}.
+{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
+é um tipo de conta especial para agendas
+não associado a nenhuma conta do dispositivo. Agendas desse tipo não são sincronizadas com um servidor. Para 
+ver discussões sobre adaptadores de sincronização, consulte <a href="#sync-adapter">Adaptadores de sincronização</a>.</p>
+
+<h2 id="events">Tabela de eventos</h2>
+
+<p>A tabela {@link android.provider.CalendarContract.Events} contém detalhes
+de eventos individuais. Para adicionar, atualizar ou excluir eventos, um aplicativo deve
+conter a permissão {@link android.Manifest.permission#WRITE_CALENDAR} 
+no <a href="#manifest">arquivo de manifesto</a>.</p>
+
+<p>As colunas de Eventos a seguir são graváveis tanto por um aplicativo quanto por um adaptador
+de sincronização. Para obter uma lista completa de campos compatíveis, consulte a referência de {@link
+android.provider.CalendarContract.Events}.</p>
+
+<table>
+  <tr>
+    <th>Constante</th>
+    <th>Descrição</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#CALENDAR_ID}</td>
+    <td>O {@link android.provider.BaseColumns#_ID} da agenda à qual o evento pertence.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#ORGANIZER}</td>
+    <td>E-mail do organizador (dono) do evento.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#TITLE}</td>
+    <td>O título do evento.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION}</td>
+    <td>Onde o evento acontece. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION}</td>
+    <td>A descrição do evento.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DTSTART}</td>
+    <td>O horário de início do evento em milissegundos em UTC desde a época. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DTEND}</td>
+    <td>O horário de término do evento em milissegundos em UTC desde a época. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}</td>
+    <td>O fuso horário do evento.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_END_TIMEZONE}</td>
+    <td>O fuso horário do horário de término do evento.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
+    
+    <td>A duração do evento em formato <a href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RCF5545</a>.
+Por exemplo, um valor de <code>&quot;PT1H&quot;</code> indica que o evento
+deve durar uma hora, e um valor de <code>&quot;P2W&quot;</code> indica
+uma duração de 2 semanas. </td>
+
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
+    
+    <td>Um valor de 1 indica que esse evento ocupa o dia inteiro, como definido
+pelo fuso horário local. Um valor de 0 indica que é um evento comum que pode iniciar
+e terminar a qualquer momento durante um dia.</td>
+
+    
+  </tr>
+  
+  
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
+    
+    <td>A regra de recorrência do formato do evento. Por
+exemplo, <code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code>. Veja
+mais exemplos <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">aqui</a>.</td>
+    
+  </tr>
+  
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
+    <td>As datas de recorrência do evento. 
+    Normalmente, usa-se {@link android.provider.CalendarContract.EventsColumns#RDATE} 
+    em conjunto com {@link android.provider.CalendarContract.EventsColumns#RRULE} 
+    para definir um conjunto agregado
+de ocorrências repetidas. Para ver mais discussões, consulte <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.2">Especificação RFC5545</a>.</td>
+</tr>
+ 
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY}</td>
+    
+    <td>Se esse evento considera tempo ocupado ou se há tempo livre que pode ser
+reagendado. </td>
+    
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
+    <td>Se convidados podem modificar o evento. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_INVITE_OTHERS}</td>
+    <td>Se convidados podem convidar outros. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_SEE_GUESTS}</td>
+    <td>Se convidados podem ver a lista de participantes.</td>
+  </tr>
+</table>
+
+<h3 id="add-event">Adição de eventos</h3>
+
+<p>Quando o aplicativo insere um novo evento, recomenda-se usar
+uma intenção {@link android.content.Intent#ACTION_INSERT INSERT}, como descrito em <a href="#intent-insert">Uso de uma intenção para inserir um evento</a>. Contudo, se for
+necessário, é possível inserir eventos diretamente. Esta seção descreve como
+fazê-lo.</p>
+
+
+<p>Abaixo apresentam-se as regras para inserção de um novo evento: </p>
+<ul>
+
+  <li>É necessário incluir {@link
+android.provider.CalendarContract.EventsColumns#CALENDAR_ID} e {@link
+android.provider.CalendarContract.EventsColumns#DTSTART}.</li>
+
+<li>É necessário incluir um {@link
+android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}. Para obter uma lista
+dos IDs de fuso horário instalados do sistema, use {@link
+java.util.TimeZone#getAvailableIDs()}. Observe que essa regra não se aplica
+a inserções de evento pela intenção {@link
+android.content.Intent#ACTION_INSERT INSERT} descrita em <a href="#intent-insert">Uso de uma intenção para inserir um evento</a> &mdash; nesta
+situação, é fornecido um fuso horário padrão.</li>
+  
+  <li>Para eventos não recorrentes, é preciso incluir {@link
+android.provider.CalendarContract.EventsColumns#DTEND}. </li>
+  
+  
+  <li>Para eventos recorrentes, é necessário incluir uma {@link
+android.provider.CalendarContract.EventsColumns#DURATION} além de uma {@link
+android.provider.CalendarContract.EventsColumns#RRULE} ou {@link
+android.provider.CalendarContract.EventsColumns#RDATE}. Observe que essa regra não se aplica
+a inserções de evento pela intenção {@link
+android.content.Intent#ACTION_INSERT INSERT} descrita em <a href="#intent-insert">Uso de uma intenção para inserir um evento</a> &mdash; nessa situação,
+é possível usar uma {@link
+android.provider.CalendarContract.EventsColumns#RRULE} em conjunto com {@link android.provider.CalendarContract.EventsColumns#DTSTART} e {@link android.provider.CalendarContract.EventsColumns#DTEND}. Desta forma, o aplicativo Agenda
+a converte em uma duração automaticamente.</li>
+  
+</ul>
+
+<p>A seguir há um exemplo de inserção de um evento: para simplificar, isso está sendo realizado
+no encadeamento da IU. Na prática, inserções e atualizações devem ser feitas
+em um encadeamento assíncrono para mover a ação para um encadeamento de segundo plano. Para obter
+mais informações, consulte {@link android.content.AsyncQueryHandler}.</p>
+
+
+<pre>
+long calID = 3;
+long startMillis = 0; 
+long endMillis = 0;     
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2012, 9, 14, 7, 30);
+startMillis = beginTime.getTimeInMillis();
+Calendar endTime = Calendar.getInstance();
+endTime.set(2012, 9, 14, 8, 45);
+endMillis = endTime.getTimeInMillis();
+...
+
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Events.DTSTART, startMillis);
+values.put(Events.DTEND, endMillis);
+values.put(Events.TITLE, &quot;Jazzercise&quot;);
+values.put(Events.DESCRIPTION, &quot;Group workout&quot;);
+values.put(Events.CALENDAR_ID, calID);
+values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");
+Uri uri = cr.insert(Events.CONTENT_URI, values);
+
+// get the event ID that is the last element in the Uri
+long eventID = Long.parseLong(uri.getLastPathSegment());
+// 
+// ... do something with event ID
+//
+//</pre>
+
+<p class="note"><strong>Observação:</strong> veja como este exemplo captura o ID
+do evento depois que o evento é criado. Este é o modo mais fácil de obter um ID de evento. Muitas vezes o ID do evento
+é necessário para realizar outras operações de agenda &mdash; por exemplo, adicionar
+participantes ou lembretes a um evento.</p>
+
+
+<h3 id="update-event">Atualização de eventos</h3>
+
+<p>Quando o aplicativo deseja permitir que o usuário edite um evento, é recomendável
+usar uma intenção {@link android.content.Intent#ACTION_EDIT EDIT}, como
+descrito em <a href="#intent-edit">Uso de uma intenção para editar um evento</a>.
+Contudo, se for necessário, é possível editar eventos diretamente. Para realizar uma atualização
+de um evento, é possível fornecer o <code>_ID</code>
+do evento como um ID anexado à URI ({@link
+android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
+ou como o primeiro item de seleção. 
+A seleção deve iniciar com <code>&quot;_id=?&quot;</code> e o primeiro
+<code>selectionArg</code> deve ser o <code>_ID</code> do evento. Você também
+pode realizar atualizações usando uma seleção sem ID. A seguir há um exemplo de como atualizar
+um evento. É possível mudar o título do evento usando
+a abordagem
+{@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}:</p>
+
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long eventID = 188;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+Uri updateUri = null;
+// The new title for the event
+values.put(Events.TITLE, &quot;Kickboxing&quot;); 
+updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+int rows = getContentResolver().update(updateUri, values, null, null);
+Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);  </pre>
+
+<h3 id="delete-event">Exclusão de eventos</h3>
+
+<p>Pode-se excluir um evento tanto pelo {@link
+android.provider.BaseColumns#_ID} como um ID anexado na URI quanto usando-se
+a seleção padrão. Ao usar um ID anexado, não é possível fazer seleções.
+Há duas versões de exclusão: como aplicativo e como adaptador de sincronização. 
+A exclusão por um aplicativo define as colunas <em>excluídas</em> como 1. Esse sinalizador é que diz
+ao adaptador de sincronização que a linha foi excluída e que essa exclusão deve ser
+propagada para o servidor. A exclusão por um adaptador de sincronização remove o evento
+do banco de dados junto com todos os dados associados. A seguir há um exemplo de um aplicativo
+excluindo um evento pelo seu {@link android.provider.BaseColumns#_ID}:</p>
+
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long eventID = 201;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+Uri deleteUri = null;
+deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+int rows = getContentResolver().delete(deleteUri, null, null);
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);  
+</pre>
+
+<h2 id="attendees">Tabela de participantes</h2>
+
+<p>Cada linha da tabela {@link android.provider.CalendarContract.Attendees}
+representa um único participante ou convidado de um evento. Chamar
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}
+retorna uma lista de participantes para
+o evento com o {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} dado. 
+Esse {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
+deve corresponder ao {@link
+android.provider.BaseColumns#_ID} de determinado evento.</p> 
+
+<p>A tabela a seguir lista
+os campos graváveis. Ao inserir um novo participante, é necessário incluir todos eles
+exceto <code>ATTENDEE_NAME</code>.
+</p>
+
+
+<table>
+  <tr>
+    <th>Constante</th>
+    <th>Descrição</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}</td>
+    <td>O ID do evento.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_NAME}</td>
+    <td>O nome do participante.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_EMAIL}</td>
+    <td>O endereço de e-mail do participante.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_RELATIONSHIP}</td>
+    <td><p>A relação do participante com o evento. Uma das seguintes:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_ATTENDEE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_NONE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_ORGANIZER}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_PERFORMER}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_SPEAKER}</li>
+    </ul>
+    </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_TYPE}</td>
+    <td><p>O tipo de participante. Uma das seguintes: </p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#TYPE_REQUIRED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#TYPE_OPTIONAL}</li>
+    </ul></td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS}</td>
+    <td><p>O status de participação do participante. Uma das seguintes:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_ACCEPTED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_DECLINED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_INVITED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_NONE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_TENTATIVE}</li>
+    </ul></td>
+  </tr>
+</table>
+
+<h3 id="add-attendees">Adição de participantes</h3>
+
+<p>A seguir há um exemplo que adiciona um único participante a um evento. Observe que
+o {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
+é obrigatório:</p>
+
+<pre>
+long eventID = 202;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Attendees.ATTENDEE_NAME, &quot;Trevor&quot;);
+values.put(Attendees.ATTENDEE_EMAIL, &quot;trevor@example.com&quot;);
+values.put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ATTENDEE);
+values.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_OPTIONAL);
+values.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_INVITED);
+values.put(Attendees.EVENT_ID, eventID);
+Uri uri = cr.insert(Attendees.CONTENT_URI, values);
+</pre>
+
+<h2 id="reminders">Tabela de lembretes</h2>
+
+<p>Cada linha da tabela {@link android.provider.CalendarContract.Reminders}
+representa um único lembrete de um evento. Chamar
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} retorna uma lista de lembretes para
+o evento com o dado
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}.</p>
+
+
+<p>A tabela a seguir relaciona os campos graváveis de lembretes. Todos eles devem
+ser incluídos ao inserir um novo lembrete. Observe que adaptadores de sincronização especificam
+os tipos de lembretes compatíveis na tabela {@link
+android.provider.CalendarContract.Calendars}. Consulte
+{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}
+para obter detalhes.</p>
+
+
+<table>
+  <tr>
+    <th>Constante</th>
+    <th>Descrição</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#EVENT_ID}</td>
+    <td>O ID do evento.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#MINUTES}</td>
+    <td>Os minutos antes do evento em que o lembrete deve disparar.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#METHOD}</td>
+    <td><p>O método de alarme, como definido no servidor. Uma das seguintes:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_ALERT}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_DEFAULT}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_EMAIL}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_SMS}</li>
+    </ul></td>
+  </tr>
+</table>
+
+<h3 id="add-reminders">Adição de lembretes</h3>
+
+<p>Este exemplo adiciona um lembrete para um evento. O lembrete dispara
+15 minutos antes do evento.</p>
+<pre>
+long eventID = 221;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Reminders.MINUTES, 15);
+values.put(Reminders.EVENT_ID, eventID);
+values.put(Reminders.METHOD, Reminders.METHOD_ALERT);
+Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
+
+<h2 id="instances">Tabela de instâncias</h2>
+
+<p>A tabela 
+{@link android.provider.CalendarContract.Instances} contém
+os horários de início e término das ocorrência de um evento. Cada linha nessa tabela
+representa uma única ocorrência do evento. A tabela de instâncias não é gravável e fornece
+somente um modo de consultar ocorrências de eventos. </p>
+
+<p>A tabela a seguir relaciona alguns dos campos passíveis de consulta de uma instância. Observe
+que o fuso horário é definido por
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE}
+e 
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES}.</p>
+
+
+<table>
+  <tr>
+    <th>Constante</th>
+    <th>Descrição</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#BEGIN}</td>
+    <td>O horário de início da instância, em milissegundos UTC.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END}</td>
+    <td>O horário de término da instância, em milissegundos UTC.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
+    
+    <td>O dia final juliano da instância relativo ao fuso horário
+do Agenda. 
+    
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
+    
+    <td>O minuto final da instância calculado a partir de meia-noite
+no fuso horário do Agenda.</td>
+    
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
+    <td>O <code>_ID</code> do evento para essa instância.</td>
+  </tr>
+    <tr>
+    <td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
+    <td>O dia inicial juliano da instância relativo ao fuso horário do Agenda. 
+ </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
+    
+    <td>O minuto inicial da instância calculado a partir de meia-noite, relativo
+ao fuso horário do Agenda. 
+</td>
+    
+  </tr>
+
+</table>
+
+<h3 id="query-instances">Consulta na tabela de instâncias</h3>
+
+<p>Para consultar a Tabela de instâncias, é necessário especificar um intervalo de tempo para a consulta
+na URI. Neste exemplo, {@link android.provider.CalendarContract.Instances}
+obtém acesso ao campo {@link
+android.provider.CalendarContract.EventsColumns#TITLE} por meio
+da sua implementação da interface {@link android.provider.CalendarContract.EventsColumns}. 
+Em outras palavras, {@link
+android.provider.CalendarContract.EventsColumns#TITLE} é retornado por uma
+vista do banco de dados, não pela consulta da tabela {@link
+android.provider.CalendarContract.Instances} bruta.</p>
+
+<pre>
+private static final String DEBUG_TAG = "MyActivity";
+public static final String[] INSTANCE_PROJECTION = new String[] {
+    Instances.EVENT_ID,      // 0
+    Instances.BEGIN,         // 1
+    Instances.TITLE          // 2
+  };
+  
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_BEGIN_INDEX = 1;
+private static final int PROJECTION_TITLE_INDEX = 2;
+...
+
+// Specify the date range you want to search for recurring
+// event instances
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2011, 9, 23, 8, 0);
+long startMillis = beginTime.getTimeInMillis();
+Calendar endTime = Calendar.getInstance();
+endTime.set(2011, 10, 24, 8, 0);
+long endMillis = endTime.getTimeInMillis();
+  
+Cursor cur = null;
+ContentResolver cr = getContentResolver();
+
+// The ID of the recurring event whose instances you are searching
+// for in the Instances table
+String selection = Instances.EVENT_ID + " = ?";
+String[] selectionArgs = new String[] {"207"};
+
+// Construct the query with the desired date range.
+Uri.Builder builder = Instances.CONTENT_URI.buildUpon();
+ContentUris.appendId(builder, startMillis);
+ContentUris.appendId(builder, endMillis);
+
+// Submit the query
+cur =  cr.query(builder.build(), 
+    INSTANCE_PROJECTION, 
+    selection, 
+    selectionArgs, 
+    null);
+   
+while (cur.moveToNext()) {
+    String title = null;
+    long eventID = 0;
+    long beginVal = 0;    
+    
+    // Get the field values
+    eventID = cur.getLong(PROJECTION_ID_INDEX);
+    beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
+    title = cur.getString(PROJECTION_TITLE_INDEX);
+              
+    // Do something with the values. 
+    Log.i(DEBUG_TAG, "Event:  " + title); 
+    Calendar calendar = Calendar.getInstance();
+    calendar.setTimeInMillis(beginVal);  
+    DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
+    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));    
+    }
+ }</pre>
+
+<h2 id="intents">Intenções do Agenda</h2>
+<p>O aplicativo não precisa de <a href="#manifest">permissões</a> para ler e gravar dados de agenda. Em vez disso, ele pode usar intenções compatíveis com o aplicativo Agenda do Android para entregar operações de leitura e gravação. A tabela a seguir lista as intenções compatíveis com o Provedor de Agenda.</p>
+<table>
+  <tr>
+    <th>Ação</th>
+    <th>URI</th>
+
+    <th>Descrição</th>
+    <th>Extras</th>
+  </tr>
+  <tr>
+    <td><br>
+    {@link android.content.Intent#ACTION_VIEW VIEW} <br></td>
+    <td><p><code>content://com.android.calendar/time/&lt;ms_since_epoch&gt;</code></p>
+    Também pode-se consultar a URI com
+{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}. 
+Para ver um exemplo do uso dessa intenção, consulte <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Uso de intenções para exibir dados de calendários</a>. 
+
+    </td>
+    <td>Abre a agenda no horário especificado por <code>&lt;ms_since_epoch&gt;</code>.</td>
+    <td>Nenhum.</td>
+  </tr>
+  <tr>
+    <td><p>{@link android.content.Intent#ACTION_VIEW VIEW} </p>
+
+     </td>
+    <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
+    
+    Também é possível consultar a URI com
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}. 
+Para ver um exemplo do uso dessa intenção, consulte <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Uso de intenções para exibir dados de calendários</a>.
+    
+    </td>
+    <td>Exibe o evento especificado por <code>&lt;event_id&gt;</code>.</td>
+
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}<br>
+      <br>
+      <br>
+    {@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}</td>
+  </tr>
+
+  <tr>
+    <td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
+    <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
+    
+  Também é possível consultar a URI com
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}. 
+Para ver um exemplo do uso dessa intenção, consulte <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">Uso de uma intenção para editar um evento</a>.
+    
+    
+    </td>
+    <td>Edita o evento especificado por <code>&lt;event_id&gt;</code>.</td>
+
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}<br>
+      <br>
+      <br>
+    {@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}</td>
+  </tr>
+
+  <tr>
+    <td>{@link android.content.Intent#ACTION_EDIT EDIT} <br>
+    <br>
+    {@link android.content.Intent#ACTION_INSERT INSERT} </td>
+    <td><p><code>content://com.android.calendar/events</code></p>
+    
+   Também é possível consultar a URI com
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}. 
+Para ver um exemplo do uso dessa intenção, consulte <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">Uso de uma intenção para inserir um evento</a>.
+    
+    </td>
+
+    <td>Cria um evento.</td>
+    <td>Qualquer um dos extras listados na tabela abaixo.</td>
+  </tr>
+</table>
+
+<p>A tabela a seguir lista os extras de intenção compatíveis com o Provedor de Agenda:
+</p>
+<table>
+  <tr>
+    <th>Extra de intenção</th>
+    <th>Descrição</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#TITLE Events.TITLE}</td>
+    <td>Nome do evento.</td>
+  </tr>
+  <tr>
+  
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
+CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
+    <td>Horário de início do evento em milissegundos a partir da época.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME
+CalendarContract.EXTRA_EVENT_END_TIME}</td>
+    
+    <td>Horário de término do evento em milissegundos a partir da época.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY
+CalendarContract.EXTRA_EVENT_ALL_DAY}</td>
+    
+    <td>Um booleano que indica que um evento acontece o dia inteiro. O valor pode ser
+<code>true</code> ou <code>false</code>.</td> </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION
+Events.EVENT_LOCATION}</td>
+    
+    <td>Local do evento.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION
+Events.DESCRIPTION}</td>
+    
+    <td>Descrição do evento.</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}</td>
+    <td>Endereços de e-mail daqueles a convidar em forma de lista com termos separados por vírgula.</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.provider.CalendarContract.EventsColumns#RRULE Events.RRULE}</td>
+    <td>A regra de recorrência do evento.</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL
+Events.ACCESS_LEVEL}</td>
+    
+    <td>Se o evento é privado ou público.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY
+Events.AVAILABILITY}</td>
+    
+    <td>Se esse evento considera tempo ocupado na contagem ou se há tempo livre que pode ser reagendado.</td>
+    
+</table> 
+<p>As seções a seguir descrevem como usar estas intenções.</p>
+
+
+<h3 id="intent-insert">Uso de uma intenção para inserir um evento</h3>
+
+<p>A intenção {@link android.content.Intent#ACTION_INSERT INSERT}
+permite que o aplicativo entregue a tarefa de inserção de eventos ao próprio aplicativo Agenda.
+Com essa abordagem, o aplicativo não precisará ter a permissão {@link
+android.Manifest.permission#WRITE_CALENDAR} contida no <a href="#manifest">arquivo de manifesto</a>.</p>
+
+  
+<p>Quando usuários executam um aplicativo que usa essa abordagem, ele os direciona
+ao Agenda para finalizar a adição do evento. A intenção {@link
+android.content.Intent#ACTION_INSERT INSERT} usa campos extras para
+pré-preencher um formulário com os detalhes do evento na Agenda. Os usuários podem,
+então, cancelar o evento, editar o formulário conforme o necessário ou salvar o evento nas suas
+agendas.</p>
+  
+
+
+<p>A seguir há um fragmento de código que agenda um evento em 19 de janeiro de 2012, que acontece
+das 7h30 às 8h30. Observe o exposto a seguir sobre esse fragmento de código:</p>
+
+<ul>
+  <li>Ele especifica {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}
+ como a URI.</li>
+  
+  <li>Ele usa os campos extras {@link
+android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
+CalendarContract.EXTRA_EVENT_BEGIN_TIME} e {@link
+android.provider.CalendarContract#EXTRA_EVENT_END_TIME
+CalendarContract.EXTRA_EVENT_END_TIME} para pré-preencher o formulário
+com o horário do evento. Os valores desses horários devem estar em milissegundos UTC
+da época.</li>
+  
+  <li>Ele usa o campo extra {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}
+ para fornecer uma lista de termos separados por vírgula de convidados, especificados por endereço de e-mail.</li>
+  
+</ul>
+<pre>
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2012, 0, 19, 7, 30);
+Calendar endTime = Calendar.getInstance();
+endTime.set(2012, 0, 19, 8, 30);
+Intent intent = new Intent(Intent.ACTION_INSERT)
+        .setData(Events.CONTENT_URI)
+        .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())
+        .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis())
+        .putExtra(Events.TITLE, &quot;Yoga&quot;)
+        .putExtra(Events.DESCRIPTION, &quot;Group class&quot;)
+        .putExtra(Events.EVENT_LOCATION, &quot;The gym&quot;)
+        .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY)
+        .putExtra(Intent.EXTRA_EMAIL, &quot;rowan@example.com,trevor@example.com&quot;);
+startActivity(intent);
+</pre>
+
+<h3 id="intent-edit">Uso de uma intenção para editar um evento</h3>
+
+<p>É possível atualizar um evento diretamente, como descrito em <a href="#update-event">Atualização de eventos</a>. Porém, o uso da intenção {@link
+android.content.Intent#ACTION_EDIT EDIT} permite que um aplicativo
+sem permissão forneça a edição de eventos ao aplicativo Agenda.
+Quando usuários finalizam a edição do evento no Agenda, retornam
+ao aplicativo original.</p> <p>A seguir há um exemplo de uma intenção que define um novo
+título para o evento especificado e permite aos usuários editar o evento no Agenda.</p>
+
+
+<pre>long eventID = 208;
+Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+Intent intent = new Intent(Intent.ACTION_EDIT)
+    .setData(uri)
+    .putExtra(Events.TITLE, &quot;My New Title&quot;);
+startActivity(intent);</pre>
+
+<h3 id="intent-view">Uso de intenções para exibir dados de agenda</h3>
+<p>O Provedor de Agenda oferece dois modos diferentes de usar a intenção {@link android.content.Intent#ACTION_VIEW VIEW}:</p>
+<ul>
+  <li>Para abrir o Agenda em uma data específica.</li>
+  <li>Para exibir um evento.</li>
+
+</ul>
+<p>A seguir há um exemplo que mostra como abrir o Agenda em uma data específica:</p>
+<pre>// A date-time specified in milliseconds since the epoch.
+long startMillis;
+...
+Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
+builder.appendPath(&quot;time&quot;);
+ContentUris.appendId(builder, startMillis);
+Intent intent = new Intent(Intent.ACTION_VIEW)
+    .setData(builder.build());
+startActivity(intent);</pre>
+
+<p>Abaixo há um exemplo que mostra como abrir um evento para exibição:</p>
+<pre>long eventID = 208;
+...
+Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+Intent intent = new Intent(Intent.ACTION_VIEW)
+   .setData(uri);
+startActivity(intent);
+</pre>
+
+
+<h2 id="sync-adapter">Adaptadores de sincronização</h2>
+
+
+<p>Há pequenas diferenças apenas nos modos de acesso ao Provedor de Agenda
+via aplicativo e via adaptador de sincronização:</p>
+
+<ul>
+  <li>Um adaptador de sincronização precisa especificar que é um adaptador de sincronização que define {@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER} como <code>true</code>.</li>
+  
+  
+  <li>Os adaptadores de sincronização precisam fornecer um {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME} e um {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} como parâmetros da consulta na URI. </li>
+  
+  <li>Os adaptadores de sincronização têm acesso de gravação a mais colunas do que um aplicativo ou widget.
+  Por exemplo: um aplicativo só pode modificar algumas características de uma agenda,
+como nome, nome de exibição, configurações de visibilidade e se a agenda está
+sincronizada. Por comparação, um adaptador de sincronização pode acessar não somente essas colunas, mas muitas outras,
+como cores da agenda, fuso horário, nível de acesso, local etc.
+No entanto, um adaptador de sincronização é restrito ao <code>ACCOUNT_NAME</code>
+e ao <code>ACCOUNT_TYPE</code> que especificou.</li> </ul>
+
+<p>A seguir há um método auxiliar que pode ser usado para retornar uma URI para uso com um adaptador de sincronização:</p>
+<pre> static Uri asSyncAdapter(Uri uri, String account, String accountType) {
+    return uri.buildUpon()
+        .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,&quot;true&quot;)
+        .appendQueryParameter(Calendars.ACCOUNT_NAME, account)
+        .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
+ }
+</pre>
+<p>Para obter uma implementação de exemplo de um adaptador de sincronização (não especificamente relacionada ao Agenda), consulte 
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>.
diff --git a/docs/html-intl/intl/pt-br/guide/topics/providers/contacts-provider.jd b/docs/html-intl/intl/pt-br/guide/topics/providers/contacts-provider.jd
new file mode 100644
index 0000000..0d42d2d
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/providers/contacts-provider.jd
@@ -0,0 +1,2356 @@
+page.title=Provedor de Contatos
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Visualização rápida</h2>
+<ul>
+    <li>Repositório de informações sobre pessoas do Android.</li>
+    <li>
+        Sincronização com a web.
+    </li>
+    <li>
+        Integração de dados de fluxos sociais.
+    </li>
+</ul>
+<h2>Neste documento</h2>
+<ol>
+    <li>
+        <a href="#InformationTypes">Organização do Provedor de Contatos</a>
+    </li>
+    <li>
+        <a href="#RawContactBasics">Contatos brutos</a>
+    </li>
+    <li>
+        <a href="#DataBasics">Dados</a>
+    </li>
+    <li>
+        <a href="#ContactBasics">Contatos</a>
+    </li>
+    <li>
+        <a href="#Sources">Dados de adaptadores de sincronização</a>
+    </li>
+    <li>
+        <a href="#Permissions">Permissões necessárias</a>
+    </li>
+    <li>
+        <a href="#UserProfile">O perfil do usuário</a>
+    </li>
+    <li>
+        <a href="#ContactsProviderMetadata">Metadados do Provedor de Contatos</a>
+    </li>
+    <li>
+        <a href="#Access">Acesso ao Provedor de Contatos</a>
+    <li>
+    </li>
+    <li>
+        <a href="#SyncAdapters">Adaptadores de sincronização do Provedor de Contatos</a>
+    </li>
+    <li>
+        <a href="#SocialStream">Dados de fluxos sociais</a>
+    </li>
+    <li>
+        <a href="#AdditionalFeatures">Recursos adicionais do Provedor de Contatos</a>
+    </li>
+</ol>
+<h2>Classes principais</h2>
+<ol>
+    <li>{@link android.provider.ContactsContract.Contacts}</li>
+    <li>{@link android.provider.ContactsContract.RawContacts}</li>
+    <li>{@link android.provider.ContactsContract.Data}</li>
+    <li>{@code android.provider.ContactsContract.StreamItems}</li>
+</ol>
+<h2>Exemplos relacionados</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}resources/samples/ContactManager/index.html">
+        Gerente de contatos
+        </a>
+    </li>
+    <li>
+        <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+        Exemplo de adaptador de sincronização</a>
+    </li>
+</ol>
+<h2>Veja também</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        Preceitos do provedor de conteúdo
+        </a>
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    O Provedor de Contatos é um componente poderoso e flexível do Android que gerencia
+o principal repositório de dados sobre pessoas do dispositivo. O Provedor de Contatos é a fonte dos dados
+    vistos nos aplicativos de contatos do dispositivo e, por ele, também é possível acessar os dados
+    no próprio aplicativo e transferi-los entre o dispositivo e serviços on-line. O provedor fornece
+    uma grande variedade de fontes de dados e tenta gerenciar o máximo de dados possíveis para cada pessoa,
+    uma vez que organizá-los é algo complexo. Por isso, a API do provedor contém
+    um conjunto extensivo de classes e interfaces de contrato que facilitam a recuperação e a modificação
+    dos dados.
+</p>
+<p>
+    Este guia descreve o seguinte:
+</p>
+    <ul>
+        <li>
+            A estrutura básica do provedor.
+        </li>
+        <li>
+            Como recuperar dados por um provedor.
+        </li>
+        <li>
+            Como modificar dados no provedor.
+        </li>
+        <li>
+            Como criar um adaptador de sincronização para sincronizar dados do servidor com
+o Provedor de Contatos.
+        </li>
+    </ul>
+<p>
+    Este guia considera que o leitor conhece os preceitos dos provedores de conteúdo do Android. Para saber mais
+    sobre provedores de conteúdo do Android, leia o guia
+    <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+    Preceitos do provedor de conteúdo</a>. 
+    O aplicativo <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">Exemplo de adaptador de sincronização</a>
+    é um exemplo de uso de um adaptador de sincronização que transfere dados entre o Provedor
+    de contatos e um aplicativo de amostra hospedado pelo Google Web Services.
+</p>
+<h2 id="InformationTypes">Organização do Provedor de Contatos</h2>
+<p>
+    O Provedor de Contatos é um componente do provedor de conteúdo do Android. Ele mantém três tipos de 
+    dados sobre uma pessoa, sendo cada um deles correspondente a uma tabela fornecida pelo provedor, como
+    ilustrado na figura 1:
+</p>
+<img src="{@docRoot}images/providers/contacts_structure.png" alt="" height="364" id="figure1" />
+<p class="img-caption">
+  <strong>Figura 1.</strong> Estrutura da tabela do Provedor de Contatos.
+</p>
+<p>
+    As três tabelas são comumente identificadas pelo nome de suas classes de contrato. As classes
+    definem constantes para URIs de conteúdo e nomes e valores de colunas usados pela tabela:
+</p>
+<dl>
+    <dt>
+        Tabela {@link android.provider.ContactsContract.Contacts}
+    </dt>
+    <dd>
+        As linhas representam pessoas diferentes com base em agregações de linhas de contatos brutos.
+    </dd>
+    <dt>
+        Tabela {@link android.provider.ContactsContract.RawContacts}
+    </dt>
+    <dd>
+        As linhas contêm um resumo dos dados de uma pessoa, específicos a um tipo e uma conta de usuário.
+    </dd>
+    <dt>
+        Tabela {@link android.provider.ContactsContract.Data}
+    </dt>
+    <dd>
+        As linhas contêm os detalhes dos contatos brutos, como endereços de e-mail ou números de telefone.
+    </dd>
+</dl>
+<p>
+    As outras tabelas representadas pelas classes de contrato em {@link android.provider.ContactsContract}
+    são tabelas auxiliares que o Provedor de Contatos usa para gerenciar suas operações ou compatibilizar
+    funções específicas nos contatos do dispositivo ou em aplicativos de telefonia.
+</p>
+<h2 id="RawContactBasics">Contatos brutos</h2>
+<p>
+    Os contatos brutos representam os dados de uma pessoa provenientes de um tipo único de conta e um nome
+    de conta. Como o Provedor de Contatos permite mais de um serviço on-line como fonte
+de dados de uma pessoa, ele permite diversos contatos brutos para a mesma pessoa.
+    Diversos contatos brutos também permitem que um usuário combine os dados de uma pessoa de mais de uma conta
+    a partir do mesmo tipo de conta.
+</p>
+<p>
+    A maioria dos dados de um contato bruto não é armazenada
+    na tabela {@link android.provider.ContactsContract.RawContacts}. Em vez disso, é armazenada em uma ou mais
+    linhas na tabela {@link android.provider.ContactsContract.Data}. Cada linha de dados tem uma coluna
+    {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID Data.RAW_CONTACT_ID} que
+    contém o valor {@code android.provider.BaseColumns#_ID RawContacts._ID} de sua
+    linha {@link android.provider.ContactsContract.RawContacts} pai.
+</p>
+<h3 id="RawContactsColumns">Colunas importantes de contatos brutos</h3>
+<p>
+    As colunas importantes na tabela {@link android.provider.ContactsContract.RawContacts} são
+    listadas na tabela 1. Leia as observações que se seguem após a tabela:
+</p>
+<p class="table-caption" id="table1">
+    <strong>Tabela 1.</strong> Importantes colunas de contatos brutos.
+</p>
+<table>
+    <tr>
+        <th scope="col">Nome da coluna</th>
+        <th scope="col">Uso</th>
+        <th scope="col">Observações</th>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_NAME}
+        </td>
+        <td>
+            O nome da conta para o tipo de conta que é a fonte desse contato bruto.
+            Por exemplo: o nome da conta de uma conta da Google é um dos endereços do Gmail do proprietário
+    do dispositivo. Para obter mais informações,
+            acesse o próximo item
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}.
+        </td>
+        <td>
+            O formato desse nome é específico deste tipo de conta. 
+            Não se trata necessariamente de um endereço de e-mail.
+        </td>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}
+        </td>
+        <td>
+            O tipo de conta que é a fonte desse contato bruto. Por exemplo: o tipo
+            de conta de uma conta da Google é <code>com.google</code>. Sempre qualifique o tipo de conta
+            com um identificador de domínio para um domínio que você controla ou possui. Isso garantirá que seu
+            tipo de conta seja único.
+        </td>
+        <td>
+            Os tipos de conta que fornecem dados de contatos normalmente têm um adaptador de sincronização associado que
+            sincroniza-se com o Provedor de Contatos.
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.RawContactsColumns#DELETED}
+        </td>
+        <td>
+            O sinalizador "excluído" de um contato bruto.
+        </td>
+        <td>
+            Esse sinalizador permite que o Provedor de Contatos mantenha a linha internamente até
+            que os adaptadores de sincronização possam excluí-la dos servidores e, em seguida, excluí-la
+            do repositório.
+        </td>
+    </tr>
+</table>
+<h4>Observações</h4>
+<p>
+    As observações a seguir sobre a tabela
+    {@link android.provider.ContactsContract.RawContacts} são importantes:
+</p>
+<ul>
+    <li>
+        O nome de um contato bruto não é armazenado em sua linha em
+        {@link android.provider.ContactsContract.RawContacts}. Em vez disso, é armazenado na 
+        tabela {@link android.provider.ContactsContract.Data}, em uma
+        linha {@link android.provider.ContactsContract.CommonDataKinds.StructuredName}. Os contatos brutos
+        têm apenas uma linha desse tipo na tabela {@link android.provider.ContactsContract.Data}.
+    </li>
+    <li>
+        <strong>Atenção:</strong> para usar os dados da própria conta em uma linha de contato bruto, é necessário
+        registrá-la primeiro com o {@link android.accounts.AccountManager}. Para isso, faça com que
+        os usuários adicionem o tipo e o nome da conta à lista de contas. Caso
+        contrário, o Provedor de Contatos excluirá a linha do contato bruto automaticamente.
+        <p>
+            Por exemplo: se quiser que o aplicativo mantenha dados de contato do seu serviço baseado em web
+            com o {@code com.example.dataservice} de domínio e com a conta do usuário do serviço
+            {@code becky.sharp@dataservice.example.com}, o usuário precisa, primeiramente, adicionar o "tipo"
+            de conta ({@code com.example.dataservice}) e o "nome" da conta
+            ({@code becky.smart@dataservice.example.com}) antes que o aplicativo adicione linhas de contato bruto.
+            Você pode explicar esse requisito ao usuário em documentações ou pode exigir que o
+            usuário adicione o tipo ou o nome ou ambos. Tipos e nomes de conta
+            são descritos com mais detalhes na próxima seção.
+    </li>
+</ul>
+<h3 id="RawContactsExample">Fontes de dados de contatos brutos</h3>
+<p>
+    Para compreender como os contatos brutos funcionam, considere a usuária "Emily Dickinson" que tem as seguintes
+    três contas de usuário definidas no seu dispositivo:
+</p>
+<ul>
+    <li><code>emily.dickinson@gmail.com</code></li>
+    <li><code>emilyd@gmail.com</code></li>
+    <li>Conta do twitter "belle_of_amherst"</li>
+</ul>
+<p>
+    Essa usuária ativou <em>Sincronizar contatos</em> para todas as três contas nas
+    Configurações da <em>conta</em>.
+</p>
+<p>
+    Suponhamos que Emily Dickinson abra uma janela do navegador, acesse o Gmail como 
+    <code>emily.dickinson@gmail.com</code>, abra
+    Contatos e adicione "Thomas Higginson". Mais tarde, ela acessa o Gmail como
+    <code>emilyd@gmail.com</code> e envia um e-mail para "Thomas Higginson", o que automaticamente
+    o adiciona como um contato. Ela também segue "colonel_tom" (ID do twitter de Thomas Higginson) no
+    Twitter.
+</p>
+<p>
+    O Provedor de Contatos cria três contatos brutos como resultado desse trabalho:
+</p>
+<ol>
+    <li>
+        Um contato bruto de "Thomas Higginson" associado a <code>emily.dickinson@gmail.com</code>.
+        O tipo de conta do usuário é Google.
+    </li>
+    <li>
+        Um segundo contato bruto de "Thomas Higginson" associado a <code>emilyd@gmail.com</code>.
+        O tipo de conta do usuário também é Google. Há um segundo contato bruto,
+        embora o nome seja idêntico a um nome anterior porque a pessoa foi adicionada
+        a uma conta de usuário diferente.
+    </li>
+    <li>
+        Um terceiro contato bruto de "Thomas Higginson" associado a "belle_of_amherst". O tipo
+        de conta de usuário é Twitter.
+    </li>
+</ol>
+<h2 id="DataBasics">Dados</h2>
+<p>
+    Como observado anteriormente, os dados de um contato bruto são armazenados
+    em uma linha {@link android.provider.ContactsContract.Data} vinculada ao valor <code>_ID</code>
+    do contato bruto. Isso permite que um único contato bruto tenha diversas instâncias do mesmo
+    tipo de dados, como endereços de e-mail ou números de telefone. Por exemplo: se
+    "Thomas Higginson" para {@code emilyd@gmail.com}  (a linha do contato bruto de Thomas Higginson
+    associada à conta Google <code>emilyd@gmail.com</code>) tem um endereço de e-mail pessoal
+    <code>thigg@gmail.com</code> e um de trabalho 
+    <code>thomas.higginson@gmail.com</code>, o Provedor de Contatos armazena as duas linhas de endereço de e-mail
+    e vincula ambas ao contato bruto.
+</p>
+<p>
+    Observe que diferentes tipos de dados são armazenados nessa única tabela. Linhas de nome de exibição,
+    número de telefone, e-mail, endereço postal, foto e detalhes de site são encontradas
+    na tabela {@link android.provider.ContactsContract.Data}. Para ajudar a gerenciar isso,
+    a tabela {@link android.provider.ContactsContract.Data} tem algumas colunas com nomes descritivos
+    e outras com nomes genéricos. O conteúdo de uma coluna de nome descritivo tem o mesmo significado
+    independente do tipo de dado da linha, enquanto o conteúdo de uma coluna de nome genérico tem
+    diferentes significados dependendo do tipo de dados.
+</p>
+<h3 id="DescriptiveColumns">Nomes de coluna descritiva</h3>
+<p>
+    A seguir há alguns exemplos de nomes descritivos de colunas:
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.Data#RAW_CONTACT_ID}
+    </dt>
+    <dd>
+        O valor da coluna <code>_ID</code> do contato bruto para estes dados.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.Data#MIMETYPE}
+    </dt>
+    <dd>
+        O tipo de dado armazenado nessa linha, expresso como um tipo MIME personalizado. O Provedor de Contatos
+        usa os tipos MIME definidos nas subclasses de
+        {@link android.provider.ContactsContract.CommonDataKinds}. Esses tipos MIME têm código aberto
+        e podem ser usados por qualquer aplicativo ou adaptador de sincronização que funcione com o Provedor de Contatos.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY}
+    </dt>
+    <dd>
+        Se esse tipo de linha de dados puder ocorrer mais do que uma vez em um contato bruto,
+        a coluna {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} sinaliza
+        a linha de dados que contém os dados primários do tipo. Por exemplo: se
+        o usuário pressionar por algum tempo um número de telefone de um contato e selecionar <strong>Definir padrão</strong>,
+        a linha {@link android.provider.ContactsContract.Data} que contém esse número
+        tem sua coluna {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} definida
+        como um valor diferente de zero.
+    </dd>
+</dl>
+<h3 id="GenericColumns">Nomes de coluna genérica</h3>
+<p>
+    Há 15 colunas genéricas de nome <code>DATA1</code> a
+    <code>DATA15</code> que estão, em geral, disponíveis e quatro colunas genéricas
+     adicionais <code>SYNC1</code> a <code>SYNC4</code> que devem ser usadas somente por adaptadores
+    de sincronização. As constantes de nome da coluna genérica sempre funcionam independentemente do tipo
+    de dados que a linha contenha.
+</p>
+<p>
+    A coluna <code>DATA1</code> é indexada.  O Provedor de Contatos sempre usa essa coluna para
+    os dados que o provedor espera serem os alvos mais frequentes de uma consulta. Por exemplo:
+    em uma linha de e-mail, essa coluna contém o endereço de e-mail atual.
+</p>
+<p>
+    Por convenção, a coluna <code>DATA15</code> é reservada para armazenar dados de BLOBs
+    (Binary Large Object), como miniaturas de fotos.
+</p>
+<h3 id="TypeSpecificNames">Nomes de coluna de tipo específico</h3>
+<p>
+    Para facilitar o trabalho com as colunas para um tipo específico de linha, o Provedor de Contatos
+    também fornece constantes de nome de colunas de tipo específico, definidas em subclasses de
+    {@link android.provider.ContactsContract.CommonDataKinds}. As constantes simplesmente dão
+    um nome de constante diferente para o mesmo nome de coluna, o que ajuda no acesso aos dados em uma linha
+    de um tipo específico.
+</p>
+<p>
+    Por exemplo: a classe {@link android.provider.ContactsContract.CommonDataKinds.Email} define
+    constantes de nome de coluna de tipo específico para uma linha {@link android.provider.ContactsContract.Data}
+    que tem o tipo MIME
+    {@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
+    Email.CONTENT_ITEM_TYPE}. A classe contém a constante
+    {@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS} para a coluna de endereço
+    de e-mail. O valor atual
+    de {@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS} é "data1", que é
+    igual ao nome genérico da coluna.
+</p>
+<p class="caution">
+    <strong>Atenção:</strong> não adicione seus dados personalizados
+    à tabela {@link android.provider.ContactsContract.Data} usando uma linha que tenha um dos
+    tipos de MIME predefinidos do provedor. Caso contrário, há o risco de perda de dados ou mau funcionamento
+    do provedor. Por exemplo: não se deve adicionar uma linha com o tipo MIME
+    {@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
+    Email.CONTENT_ITEM_TYPE} que contenha um nome de usuário em vez de um endereço de e-mail na
+    coluna <code>DATA1</code>. Se for usado um tipo MIME personalizado para a linha, será possível
+    definir os próprios nomes de coluna de tipo específico e usar as colunas como quiser.
+</p>
+<p>
+    A figura 2 mostra como colunas descritivas e colunas de dados aparecem
+    em uma linha {@link android.provider.ContactsContract.Data} e como os nomes de coluna de tipo específico se "sobrepõem"
+    aos nomes de coluna genérica.
+</p>
+<img src="{@docRoot}images/providers/data_columns.png" alt="How type-specific column names map to generic column names" height="311" id="figure2" />
+<p class="img-caption">
+  <strong>Figura 2.</strong> Nomes de coluna de tipo específico e nomes de coluna genérica.
+</p>
+<h3 id="ColumnMaps">Classes de nome de coluna de tipo específico</h3>
+<p>
+    A tabela 2 lista as classes de nome de coluna de tipo específico mais usadas:
+</p>
+<p class="table-caption" id="table2">
+  <strong>Tabela 2.</strong> Classes de nome de coluna de tipo específico</p>
+<table>
+  <tr>
+    <th scope="col">Classes de mapeamento</th>
+    <th scope="col">Tipo de dados</th>
+    <th scope="col">Observações</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredName}</td>
+    <td>Os dados de nome do contato bruto associados a essa linha de dados.</td>
+    <td>Os contatos brutos têm apenas uma dessas linhas.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Photo}</td>
+    <td>A foto principal do contato bruto associada a essa linha de dados.</td>
+    <td>Os contatos brutos têm apenas uma dessas linhas.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Email}</td>
+    <td>Um endereço de e-mail do contato bruto associado a essa linha de dados.</td>
+    <td>Os contatos brutos podem ter diversos endereços de e-mail.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal}</td>
+    <td>Um endereço postal do contato bruto associado a essa linha de dados.</td>
+    <td>Os contatos brutos podem ter diversos endereços postais.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.GroupMembership}</td>
+    <td>Um identificador que vincula o contato bruto a um dos grupos no Provedor de Contatos.</td>
+    <td>
+        Grupos são um recurso opcional de um tipo e um nome de conta. Eles são descritos
+        mais detalhadamente na seção <a href="#Groups">Grupos de contato</a>.
+    </td>
+  </tr>
+</table>
+<h3 id="ContactBasics">Contatos</h3>
+<p>
+    O Provedor de Contatos combina as linhas do contato bruto entre todos os tipos e nomes de conta
+    para formar um <strong>contato</strong>. Isso facilita a exibição e modificação de todos os dados de uma pessoa que um
+    usuário tenha coletado. O Provedor de Contatos gerencia a criação de linhas
+    de novos contatos e a agregação de contatos brutos a uma linha de contato existente. Nem os aplicativos, nem
+    os adaptadores de sincronização têm permissão para adicionar contatos, e algumas colunas em uma linha de contato são de somente leitura.
+</p>
+<p class="note">
+    <strong>Observação:</strong> a tentativa de adicionar um contato ao Provedor de Contatos com um
+    {@link android.content.ContentResolver#insert(Uri,ContentValues) insert()} gerará
+    uma exceção {@link java.lang.UnsupportedOperationException}. A tentativa de atualizar uma coluna
+    listada como "somente leitura" será ignorada.
+</p>
+<p>
+    O Provedor de Contatos cria um novo contato em resposta à adição de um novo contato bruto
+    que não corresponda a nenhum contato existente. O provedor também faz isso se os dados de um
+    contato bruto existente mudam de modo a não corresponder mais ao contato
+    inserido anteriormente. Se um aplicativo ou um adaptador de sincronização criar um novo contato bruto que
+    <em>corresponda</em> a um contato existente, o novo contato bruto será agregado ao contato
+    existente.
+</p>
+<p>
+    O Provedor de Contatos liga uma linha do contato às linhas do contato bruto com a coluna <code>_ID</code>
+    da linha do contato na tabela
+    {@link android.provider.ContactsContract.Contacts Contacts}. A coluna <code>CONTACT_ID</code> da tabela de contatos brutos
+    {@link android.provider.ContactsContract.RawContacts} contém valores <code>_ID</code> para
+    a linha dos contatos associados a cada linha dos contatos brutos.
+</p>
+<p>
+    A tabela {@link android.provider.ContactsContract.Contacts} também tem a coluna
+    {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}, que é
+    um vínculo "permanente" com a linha do contato. Como o Provedor de Contatos mantém contatos
+    automaticamente, ele pode mudar o valor de {@code android.provider.BaseColumns#_ID} da linha do contato
+    em resposta a uma agregação ou sincronização. Mesmo que isso aconteça, a URI de conteúdo
+    {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI} combinada com
+    {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} do contato continuará
+    apontado para a linha do contato para permitir o uso de
+    {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}
+    e manter ligações com contatos "favoritos" e assim por diante. Essa coluna tem o próprio formato, que 
+    não tem nenhuma relação com o formato da coluna {@code android.provider.BaseColumns#_ID}.
+</p>
+<p>
+    A figura 3 mostra como as três tabelas principais se relacionam entre si.
+</p>
+<img src="{@docRoot}images/providers/contacts_tables.png" alt="Contacts provider main tables" height="514" id="figure4" />
+<p class="img-caption">
+  <strong>Figura 3.</strong> Contatos, contatos brutos e relacionamentos da tabela de detalhes.
+</p>
+<h2 id="Sources">Dados de adaptadores de sincronização</h2>
+<p>
+    Os usuários inserem dados de contato diretamente no dispositivo, mas os dados também são direcionados ao Provedor
+    de Contatos a partir de serviços web via <strong>adaptadores de sincronização</strong>, que automatizam
+    a transferência de dados entre dispositivo e serviços. Adaptadores de sincronização funcionam em segundo plano,
+    controlados pelo sistema, e chamam métodos {@link android.content.ContentResolver}
+    para gerenciar os dados.
+</p>
+<p>
+    No Android, o serviço web com o qual um adaptador de sincronização trabalha é identificado por um tipo de conta.
+    Cada adaptador de sincronização funciona com um tipo de conta, mas é compatível com diversos nomes de conta
+    para o tipo em questão. Tipos e nomes de conta são descritos brevemente na seção
+    <a href="#RawContactsExample">Fontes de dados de contatos brutos</a>. As definições a seguir fornecem
+    mais detalhes e descrevem como o tipo e o nome de conta se relacionam com adaptadores de sincronização e serviços.
+</p>
+<dl>
+    <dt>
+        Tipo de conta
+    </dt>
+    <dd>
+        Identifica um serviço em que o usuário tenha armazenado dados. Na maior parte do tempo, o usuário deve
+        autenticar com o serviço. Por exemplo: Google Contacts é um tipo de conta, identificado
+        pelo código <code>google.com</code>. Esse valor corresponde ao tipo de conta usado pelo
+        {@link android.accounts.AccountManager}.
+    </dd>
+    <dt>
+        Nome da conta
+    </dt>
+    <dd>
+        Identifica uma conta ou login específico de um tipo de conta. As contas Google Contacts
+        são idênticas às contas Google, que têm um endereço de e-mail como nome da conta.
+        Outros serviços podem usar um nome de usuário com só uma palavra ou ID numérico.
+    </dd>
+</dl>
+<p>
+    Os tipos de conta não precisam ser exclusivos. Um usuário pode configurar diversas contas Google Contacts
+    e baixar os dados dela para o Provedor de Contatos. Isso pode acontecer se o usuário tiver um grupo de
+    contatos pessoais para um nome de conta pessoal e outro grupo para um de conta de trabalho. Nomes de conta normalmente
+    são exclusivos. Juntos, eles identificam um fluxo de dados específicos entre o Provedor de Contatos e
+    um serviço externo.
+</p>
+<p>
+    Se você desejar transferir os dados do serviço ao Provedor de Contatos, precisará criar seu
+    próprio adaptador de sincronização. Isso é descrito com mais detalhes na seção
+    <a href="#SyncAdapters">Adaptadores de sincronização do Provedor de Contatos</a>.
+</p>
+<p>
+    A figura 4 mostra como o Provedor de Contatos se insere no fluxo de dados
+    sobre pessoas. Na caixa marcada "adaptadores de sincronização", cada adaptador é etiquetado pelo tipo de conta.
+</p>
+<img src="{@docRoot}images/providers/ContactsDataFlow.png" alt="Flow of data about people" height="252" id="figure5" />
+<p class="img-caption">
+  <strong>Figura 4.</strong> Fluxo de dados do Provedor de Contatos.
+</p>
+<h2 id="Permissions">Permissões necessárias</h2>
+<p>
+    Os aplicativos que queiram acessar o Provedor de Contatos devem solicitar as seguintes
+    permissões:
+</p>
+<dl>
+    <dt>Acesso de leitura a uma ou mais tabelas</dt>
+    <dd>
+        {@link android.Manifest.permission#READ_CONTACTS}, especificado em
+        <code>AndroidManifest.xml</code> com
+        o elemento <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code>
+        como <code>&lt;uses-permission android:name="android.permission.READ_CONTACTS"&gt;</code>.
+    </dd>
+    <dt>Acesso de gravação a uma ou mais tabelas</dt>
+    <dd>
+        {@link android.Manifest.permission#WRITE_CONTACTS}, especificado em
+        <code>AndroidManifest.xml</code> com
+        o elemento <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code>
+        como <code>&lt;uses-permission android:name="android.permission.WRITE_CONTACTS"&gt;</code>.
+    </dd>
+</dl>
+<p>
+    Essas permissões não se estendem aos dados do perfil do usuário. O perfil do usuário
+        e suas permissões necessárias são abordados na seção a seguir:
+        <a href="#UserProfile">O perfil do usuário</a>.
+</p>
+<p>
+    Lembre-se de que os dados de contato do usuário são pessoais e confidenciais. Os usuários se preocupam
+    com a privacidade e, por isso, não querem aplicativos que coletem dados sobre eles ou seus contatos.
+    Se não for óbvio o motivo da necessidade de permissões para acessar os dados de contato de um usuário, eles podem atribuir
+    avaliações ruins ao seu aplicativo ou simplesmente não instalá-lo.
+</p>
+<h2 id="UserProfile">O perfil do usuário</h2>
+<p>
+    A tabela {@link android.provider.ContactsContract.Contacts} tem uma única linha contendo
+    os dados do perfil do usuário do dispositivo. Esses dados descrevem o <code>user</code> do dispositivo em vez
+    de um dos contatos do usuário. A linha de contatos do perfil é vinculada a uma linha
+    de contatos brutos para cada sistema que usa um perfil.
+    Cada linha de contato bruto de perfil pode ter diversas linhas de dados. Constantes de acesso ao perfil
+    do usuário estão disponíveis na classe {@link android.provider.ContactsContract.Profile}.
+</p>
+<p>
+    O acesso ao perfil do usuário exige permissões especiais. Além das permissões
+    {@link android.Manifest.permission#READ_CONTACTS} e
+    {@link android.Manifest.permission#WRITE_CONTACTS} necessárias para ler e gravar, o acesso
+    ao perfil do usuário requer as permissões {@code android.Manifest.permission#READ_PROFILE} e
+    {@code android.Manifest.permission#WRITE_PROFILE}, respectivamente, para ler e
+    gravar.
+</p>
+<p>
+    Lembre-se de que é preciso considerar a confidencialidade de um perfil do usuário. A permissão
+    {@code android.Manifest.permission#READ_PROFILE} permite o acesso aos dados de identificação
+    pessoal do usuário do dispositivo. Certifique-se de informar ao usuário o motivo
+    da necessidade de permissões de acesso ao perfil do usuário na descrição do aplicativo.
+</p>
+<p>
+    Para recuperar a linha de contato que contém o perfil do usuário,
+    chame {@link android.content.ContentResolver#query(Uri,String[], String, String[], String)
+    ContentResolver.query()}. Defina a URI de conteúdo como
+    {@link android.provider.ContactsContract.Profile#CONTENT_URI} e não forneça nenhum
+    critério de seleção. Também é possível usar essa URI de conteúdo como base para recuperar
+    contatos brutos ou dados do perfil. Por exemplo, esse fragmento recupera dados do perfil:
+</p>
+<pre>
+// Sets the columns to retrieve for the user profile
+mProjection = new String[]
+    {
+        Profile._ID,
+        Profile.DISPLAY_NAME_PRIMARY,
+        Profile.LOOKUP_KEY,
+        Profile.PHOTO_THUMBNAIL_URI
+    };
+
+// Retrieves the profile from the Contacts Provider
+mProfileCursor =
+        getContentResolver().query(
+                Profile.CONTENT_URI,
+                mProjection ,
+                null,
+                null,
+                null);
+</pre>
+<p class="note">
+    <strong>Observação:</strong> se você recuperar diversas linhas de contato e quiser determinar se uma delas
+    é o perfil do usuário, teste a coluna
+    {@link android.provider.ContactsContract.ContactsColumns#IS_USER_PROFILE} da linha. Essa coluna
+    é definida como "1" se o contato for o perfil do usuário.
+</p>
+<h2 id="ContactsProviderMetadata">Metadados do Provedor de Contatos</h2>
+<p>
+    O Provedor de Contatos gerencia dados que acompanham o estado dos dados de contatos
+    no repositório. Esses metadados sobre o repositório são armazenados em vários locais, inclusive
+    os contatos brutos, os dados e as linhas da tabela de contatos,
+    a tabela {@link android.provider.ContactsContract.Settings}
+    e a tabela {@link android.provider.ContactsContract.SyncState}. A tabela a seguir mostra
+    o efeito de cada uma dessas partes de metadados:
+</p>
+<p class="table-caption" id="table3">
+  <strong>Tabela 3.</strong> Metadados no Provedor de Contatos</p>
+<table>
+    <tr>
+        <th scope="col">Tabela</th>
+        <th scope="col">Coluna</th>
+        <th scope="col">Valores</th>
+        <th scope="col">Significado</th>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.RawContacts}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.SyncColumns#DIRTY}</td>
+        <td>"0" - sem modificação desde a última sincronização.</td>
+        <td rowspan="2">
+            Sinaliza contatos brutos que não mudaram no dispositivo e devem ser sincronizados com
+            o servidor. O valor é definido automaticamente pelo Provedor de Contatos quando os aplicativos
+            do Android atualizam uma linha.
+            <p>
+                Adaptadores de sincronização que modificam o contato bruto ou as tabelas de dados sempre devem anexar a
+                string {@link android.provider.ContactsContract#CALLER_IS_SYNCADAPTER}
+                à URI de conteúdo usada. Isso evita que o provedor sinalize alguma linha como suja.
+                Caso contrário, as modificações do adaptador de sincronização parecem ser modificações locais e são
+                enviadas ao servidor, mesmo que o servidor seja a origem da modificação.
+            </p>
+        </td>
+    </tr>
+    <tr>
+            <td>"1" - modificado desde a última sincronização, precisa ser sincronizado com o servidor.</td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#VERSION}</td>
+        <td>O número da versão dessa linha.</td>
+        <td>
+            O Provedor de Contatos incrementa esse valor automaticamente sempre que a linha ou
+            os dados relacionados a ela mudam.
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.Data}</td>
+        <td>{@link android.provider.ContactsContract.DataColumns#DATA_VERSION}</td>
+        <td>O número da versão dessa linha.</td>
+        <td>
+            O Provedor de Contatos incrementa esse valor automaticamente sempre que a linha de dados
+            é modificada.
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}</td>
+        <td>
+            Valor de string que identifica exclusivamente esse contato bruto para a conta em
+            que foi criado.
+        </td>
+        <td>
+            Quando um adaptador de sincronização cria um novo contato bruto, essa coluna deve ser definida como
+            o ID exclusivo do servidor para o contato bruto. Quando um aplicativo do Android cria um novo
+            contato bruto, o aplicativo deve deixar essa coluna vazia. Isso sinaliza ao adaptador
+            de sincronização que ele deve criar um novo contato bruto no servidor e obter
+            um valor para o {@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}.
+            <p>
+                Em particular, o ID de origem deve ser <strong>exclusivo</strong> de cada tipo
+            de conta e estável em sincronizações:
+            </p>
+                <ul>
+                    <li>
+                        Exclusivo: cada contato bruto de uma conta deve ter o próprio ID de origem. Se isso
+                        não for aplicado, haverá problemas no aplicativo de contatos.
+                        Observe que dois contatos brutos do mesmo <em>tipo</em> de conta podem ter
+                        o mesmo ID de origem. Por exemplo: o contato bruto "Thomas Higginson" da
+                        conta {@code emily.dickinson@gmail.com} pode ter o mesmo ID
+                        de origem do contato bruto "Thomas Higginson" da conta
+                        {@code emilyd@gmail.com}.
+                    </li>
+                    <li>
+                        Estável: IDs de origem são uma parte permanente dos dados do serviço on-line para
+                        o contato bruto. Por exemplo: se o usuário apaga o Armazenamento de Contatos
+                        nas configurações dos aplicativos e ressincroniza, os contatos brutos restaurados devem ter os mesmos
+                        IDs de origem de antes. Se isso não for aplicado, os atalhos
+                        deixarão de funcionar.
+                    </li>
+                </ul>
+        </td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Groups}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.GroupsColumns#GROUP_VISIBLE}</td>
+        <td>"0" - os contatos nesse grupo não devem ser visíveis em IUs do aplicativo do Android.</td>
+        <td>
+            Essa coluna se destina à compatibilidade com servidores, que permitem que um usuário oculte contatos
+            em determinados grupos.
+        </td>
+    </tr>
+    <tr>
+        <td>"1" - os contatos nesse grupo podem ser visíveis nas IUs do aplicativo.</td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Settings}</td>
+        <td rowspan="2">
+            {@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE}</td>
+        <td>
+            "0" - para essa conta e esse tipo de conta, os contatos que não pertencem a um grupo são
+            invisíveis nas IUs do aplicativo do Android.
+        </td>
+        <td rowspan="2">
+            Por padrão, os contatos são invisíveis se nenhum dos contatos brutos pertencer a algum grupo
+            (a associação de grupo de um contato bruto é indicada por uma ou mais
+            linhas {@link android.provider.ContactsContract.CommonDataKinds.GroupMembership}
+            na tabela {@link android.provider.ContactsContract.Data}).
+            Por padrão, é possível fazer com que contatos sem grupos sejam visíveis
+            por meio desse sinalizador na linha da tabela {@link android.provider.ContactsContract.Settings} para um tipo de conta e uma conta.
+            Esse sinalizador serve para exibir contatos de servidores que não usam grupos.
+        </td>
+    </tr>
+    <tr>
+        <td>
+            "1" - para essa conta e esse tipo de conta, os contatos que não pertencem a um grupo são
+            visíveis nas IUs do aplicativo.
+        </td>
+
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.SyncState}</td>
+        <td>(todos)</td>
+        <td>
+            Use essa tabela para armazenar metadados do seu adaptador de sincronização.
+        </td>
+        <td>
+            Com essa tabela, é possível armazenar o estado de sincronização e outros dados relacionados à sincronização persistentes
+            no dispositivo.
+        </td>
+    </tr>
+</table>
+<h2 id="Access">Acesso ao Provedor de Contatos</h2>
+<p>
+    Esta seção descreve orientações quanto ao acesso a dados do Provedor de Contatos, com foco
+    no seguinte:
+</p>
+<ul>
+    <li>
+        Consultas de entidade.
+    </li>
+    <li>
+        Modificação em lote.
+    </li>
+    <li>
+        Recuperação e modificação com intenções.
+    </li>
+    <li>
+        Integridade dos dados.
+    </li>
+</ul>
+<p>
+    A realização de modificações de um adaptador de sincronização também é abordada na seção
+    <a href="#SyncAdapters">Adaptadores de sincronização do Provedor de Contatos</a>.
+</p>
+<h3 id="Entities">Consultas de entidades</h3>
+<p>
+    A organização hierárquica das tabelas do Provedor de Contatos é muito útil
+    para recuperar uma linha e todas as linhas "filhas" vinculadas. Por exemplo: para exibir
+    todas as informações de uma pessoa, você pode querer recuperar todas
+    as linhas {@link android.provider.ContactsContract.RawContacts} de uma única
+    linha {@link android.provider.ContactsContract.Contacts} ou todas
+    as linhas {@link android.provider.ContactsContract.CommonDataKinds.Email} de uma única
+    linha {@link android.provider.ContactsContract.RawContacts}. Para facilitar isso, o Provedor
+    de contatos oferece a ideia de <strong>entidade</strong>, que atua como uma junção dos bancos de dados entre
+    tabelas.
+</p>
+<p>
+    Entidade é como uma tabela composta de colunas selecionadas de uma tabela pai e uma tabela filha.
+    Ao consultar uma entidade, fornece-se uma projeção e buscam-se critérios com base nas colunas
+    disponíveis da entidade. O resultado é um {@link android.database.Cursor} que contém
+    uma linha para cada linha recuperada da tabela filha. Por exemplo: ao consultar
+    {@link android.provider.ContactsContract.Contacts.Entity} de um nome de contato
+    e todas as linhas {@link android.provider.ContactsContract.CommonDataKinds.Email} de todos os
+    contatos brutos por esse nome, você obterá um {@link android.database.Cursor} contendo uma linha
+    para cada linha {@link android.provider.ContactsContract.CommonDataKinds.Email}.
+</p>
+<p>
+    As entidades simplificam as consultas. Usando uma entidade, é possível recuperar todos os dados de contatos
+    de um contato ou contato bruto de uma vez, sem precisar consultar primeiro a tabela pai para obter
+    um ID e, em seguida, ter que consultar a tabela filha com esse ID. Além disso, o Provedor de Contatos processa
+    uma consulta com uma entidade em uma transação única, o que garante que os dados recuperados
+    sejam consistentes internamente.
+</p>
+<p class="note">
+    <strong>Observação:</strong> uma entidade normalmente não contém todas as colunas da tabela pai e
+    da tabela filha. Se você tentar trabalhar com um nome de coluna que não esteja na lista de constantes de nomes de coluna
+    da entidade, será gerada uma {@link java.lang.Exception}.
+</p>
+<p>
+    O fragmento a seguir mostra como recuperar todas as linhas de contato bruto de um contato. O fragmento
+    é parte de um aplicativo maior que tem duas atividades: "principal" e “de detalhes". A atividade principal
+    exibe uma lista de linhas de contato. Quando um usuário seleciona uma delas, a atividade envia o ID correspondente à atividade
+    de detalhes. A atividade de detalhes usa {@link android.provider.ContactsContract.Contacts.Entity}
+    para exibir todas as linhas de dados de todos os contatos brutos associados ao contato
+    selecionado.
+</p>
+<p>
+    Esse fragmento é extraído da atividade "de detalhes":
+</p>
+<pre>
+...
+    /*
+     * Appends the entity path to the URI. In the case of the Contacts Provider, the
+     * expected URI is content://com.google.contacts/#/entity (# is the ID value).
+     */
+    mContactUri = Uri.withAppendedPath(
+            mContactUri,
+            ContactsContract.Contacts.Entity.CONTENT_DIRECTORY);
+
+    // Initializes the loader identified by LOADER_ID.
+    getLoaderManager().initLoader(
+            LOADER_ID,  // The identifier of the loader to initialize
+            null,       // Arguments for the loader (in this case, none)
+            this);      // The context of the activity
+
+    // Creates a new cursor adapter to attach to the list view
+    mCursorAdapter = new SimpleCursorAdapter(
+            this,                        // the context of the activity
+            R.layout.detail_list_item,   // the view item containing the detail widgets
+            mCursor,                     // the backing cursor
+            mFromColumns,                // the columns in the cursor that provide the data
+            mToViews,                    // the views in the view item that display the data
+            0);                          // flags
+
+    // Sets the ListView's backing adapter.
+    mRawContactList.setAdapter(mCursorAdapter);
+...
+&#64;Override
+public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+
+    /*
+     * Sets the columns to retrieve.
+     * RAW_CONTACT_ID is included to identify the raw contact associated with the data row.
+     * DATA1 contains the first column in the data row (usually the most important one).
+     * MIMETYPE indicates the type of data in the data row.
+     */
+    String[] projection =
+        {
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID,
+            ContactsContract.Contacts.Entity.DATA1,
+            ContactsContract.Contacts.Entity.MIMETYPE
+        };
+
+    /*
+     * Sorts the retrieved cursor by raw contact id, to keep all data rows for a single raw
+     * contact collated together.
+     */
+    String sortOrder =
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID +
+            " ASC";
+
+    /*
+     * Returns a new CursorLoader. The arguments are similar to
+     * ContentResolver.query(), except for the Context argument, which supplies the location of
+     * the ContentResolver to use.
+     */
+    return new CursorLoader(
+            getApplicationContext(),  // The activity's context
+            mContactUri,              // The entity content URI for a single contact
+            projection,               // The columns to retrieve
+            null,                     // Retrieve all the raw contacts and their data rows.
+            null,                     //
+            sortOrder);               // Sort by the raw contact ID.
+}
+</pre>
+<p>
+    Quando o carregamento é finalizado, {@link android.app.LoaderManager} invoca um retorno de chamada para
+    {@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished(Loader, D)
+    onLoadFinished()}. Um dos argumentos de entrada nesse método é um
+    {@link android.database.Cursor} com os resultados da consulta. No seu aplicativo, você pode obter os
+    dados desse {@link android.database.Cursor} para exibi-los ou trabalhar com eles posteriormente.
+</p>
+<h3 id="Transactions">Modificação em lote</h3>
+<p>
+    Sempre que possível, deve-se inserir, atualizar e excluir dados no Provedor de Contatos
+    em "modo de lote", criando um {@link java.util.ArrayList} de
+    objetos {@link android.content.ContentProviderOperation} e chamando
+    {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}. Como
+    o Provedor de Contatos realiza todas as operações em um
+    {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} em uma única
+    transação, as modificações nunca deixarão o repositório de contatos em um estado
+    inconsistente. As modificações em lote também facilitam a inserção de um contato bruto e seus dados de detalhe
+    ao mesmo tempo.
+</p>
+<p class="note">
+    <strong>Observação:</strong> para modificar um contato bruto <em>exclusivo</em>, considere enviar uma intenção ao
+    aplicativo de contatos do dispositivo em vez de realizar a modificação no aplicativo.
+    Na seção <a href="#Intents">Recuperação e modificação com intenções</a> há mais detalhes
+    sobre como fazer isso.
+</p>
+<h4>Pontos de rendimento</h4>
+<p>
+    As modificações em lote que contiverem muitas operações podem bloquear outros processos,
+    resultando em uma experiência geral ruim para o usuário. Para organizar todas as modificações
+    a realizar no menor número de listas separadas possível e, ao mesmo tempo, evitar
+    o bloqueio do sistema, é preciso definir <strong>pontos de rendimento</strong> para uma ou mais operações.
+    Pontos de rendimento são objetos {@link android.content.ContentProviderOperation} que têm seu
+    valor {@link android.content.ContentProviderOperation#isYieldAllowed()} definido como
+    <code>true</code>. Quando o Provedor de Contatos encontra um ponto de rendimento, ele pausa o trabalho
+    para permitir a execução de outros processos e encerra a transação em curso. Quando o provedor retorna, ele
+    continua na próxima operação da {@link java.util.ArrayList} e inicia
+    uma nova transação.
+</p>
+<p>
+    Os pontos de rendimento resultam em mais de uma transação por chamada de
+    {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}. Por isso,
+    é preciso definir um ponto de rendimento para a última operação de um conjunto de linhas relacionadas.
+    Por exemplo: é preciso definir um ponto de rendimento para a última operação em um conjunto que adicione
+    linhas de um contato bruto e linhas de dados associados a ele, ou para a última operação de um conjunto de linhas relacionadas
+    a um único contato.
+</p>
+<p>
+    Os pontos de rendimento também são uma unidade de operação atômica. Todos os acessos entre dois pontos de rendimento
+    terão sucesso ou fracasso como uma unidade. Se não houver pontos de rendimento definidos, a menor
+    operação atômica será todo o lote de operações. Se forem usados pontos de rendimento, eles evitarão
+    que as operações prejudiquem o desempenho do sistema e, ao mesmo tempo, garantirá que o subconjunto
+    de operações seja atômico.
+</p>
+<h4>Referências de retorno da modificação</h4>
+<p>
+    Ao inserir uma nova linha de contato bruto e as linhas de dados associados como um conjunto
+    de objetos {@link android.content.ContentProviderOperation}, é preciso vincular as linhas de dados
+    à linha de contato bruto pela inserção do valor
+    {@code android.provider.BaseColumns#_ID} do contato bruto como
+    o valor {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}. Contudo, esse
+    valor não está disponível ao criar a {@link android.content.ContentProviderOperation}
+    para a linha de dados porque 
+    {@link android.content.ContentProviderOperation} ainda não foi aplicada à linha de contato bruto. Para trabalhar com isso,
+    a classe {@link android.content.ContentProviderOperation.Builder} tem o método
+    {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}.
+    Esse método permite a inserção ou modificação de uma coluna com
+    o resultado de uma operação anterior.
+</p>
+<p>
+    O método {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+    tem dois argumentos:
+</p>
+    <dl>
+        <dt>
+            <code>key</code>
+        </dt>
+        <dd>
+            O principal de um par de valores principais. O valor desse argumento deve ser o nome de uma coluna
+            na tabela que será modificada.
+        </dd>
+        <dt>
+            <code>previousResult</code>
+        </dt>
+        <dd>
+            O índice com base 0 de um valor em uma matriz
+            de objetos {@link android.content.ContentProviderResult}
+de             {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}. Quando
+            as operações em lote são aplicadas, o resultado de cada operação é armazenado
+            em uma matriz intermediária de resultados. O valor <code>previousResult</code> é o índice
+            de um desses resultados, que é recuperado e armazenado com o valor
+            <code>key</code>. Isso permite a inserção de um novo registro de contato bruto e a recuperação do seu
+            valor {@code android.provider.BaseColumns#_ID}, seguido de uma "referência de retorno" ao
+            valor ao adicionar uma linha {@link android.provider.ContactsContract.Data}.
+            <p>
+                Toda a matriz de resultados é criada ao chamar
+                {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} pela primeira vez,
+                com tamanho igual ao da {@link java.util.ArrayList}
+                de objetos {@link android.content.ContentProviderOperation} fornecidos. No entanto, todos
+                os elementos na matriz de resultados são definidos como <code>null</code> e, se houver uma tentativa
+                de referência de retorno a um resultado de uma operação ainda não realizada,
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+                gera uma {@link java.lang.Exception}.
+
+            </p>
+        </dd>
+    </dl>
+<p>
+    Os fragmentos a seguir mostram como inserir um novo contato bruto e dados em lote. Eles
+    contém o código que estabelece um ponto de rendimento e usam uma referência de retorno. Os fragmentos são
+    uma versão expandida do método <code>createContacEntry()</code>, que é parte
+    da classe <code>ContactAdder</code>
+    no aplicativo de exemplo de <code><a href="{@docRoot}resources/samples/ContactManager/index.html">
+    Contact Manager</a></code>.
+</p>
+<p>
+    O primeiro fragmento recupera dados de contato da IU. Nesse momento, o usuário já
+    selecionou a conta na qual o novo contato bruto deve ser adicionado.
+</p>
+<pre>
+// Creates a contact entry from the current UI values, using the currently-selected account.
+protected void createContactEntry() {
+    /*
+     * Gets values from the UI
+     */
+    String name = mContactNameEditText.getText().toString();
+    String phone = mContactPhoneEditText.getText().toString();
+    String email = mContactEmailEditText.getText().toString();
+
+    int phoneType = mContactPhoneTypes.get(
+            mContactPhoneTypeSpinner.getSelectedItemPosition());
+
+    int emailType = mContactEmailTypes.get(
+            mContactEmailTypeSpinner.getSelectedItemPosition());
+</pre>
+<p>
+    O próximo fragmento cria uma operação para inserir a linha de contato bruto
+    na tabela {@link android.provider.ContactsContract.RawContacts}:
+</p>
+<pre>
+    /*
+     * Prepares the batch operation for inserting a new raw contact and its data. Even if
+     * the Contacts Provider does not have any data for this person, you can't add a Contact,
+     * only a raw contact. The Contacts Provider will then add a Contact automatically.
+     */
+
+     // Creates a new array of ContentProviderOperation objects.
+    ArrayList&lt;ContentProviderOperation&gt; ops =
+            new ArrayList&lt;ContentProviderOperation&gt;();
+
+    /*
+     * Creates a new raw contact with its account type (server type) and account name
+     * (user's account). Remember that the display name is not stored in this row, but in a
+     * StructuredName data row. No other data is required.
+     */
+    ContentProviderOperation.Builder op =
+            ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
+            .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType())
+            .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    Em seguida, o código cria linhas de dados para as linhas de nome de exibição, telefone e e-mail.
+</p>
+<p>
+    Cada objeto construtor de operações usa
+    {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+    para obter
+    o {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}. Os pontos de referência
+    voltam ao objeto {@link android.content.ContentProviderResult} a partir da primeira operação,
+    que adiciona a linha de contato bruto e retorna seu novo valor
+    {@code android.provider.BaseColumns#_ID}. Como resultado, cada linha de dados é automaticamente vinculada por meio do
+    {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}
+    à nova linha {@link android.provider.ContactsContract.RawContacts} à qual ela pertence.
+</p>
+<p>
+    O objeto {@link android.content.ContentProviderOperation.Builder} que adiciona a linha de e-mail é
+    sinalizado com {@link android.content.ContentProviderOperation.Builder#withYieldAllowed(boolean)
+    withYieldAllowed()}, que define um ponto de rendimento:
+</p>
+<pre>
+    // Creates the display name for the new raw contact, as a StructuredName data row.
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * withValueBackReference sets the value of the first argument to the value of
+             * the ContentProviderResult indexed by the second argument. In this particular
+             * call, the raw contact ID column of the StructuredName data row is set to the
+             * value of the result returned by the first operation, which is the one that
+             * actually adds the raw contact row.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to StructuredName
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
+
+            // Sets the data row's display name to the name in the UI.
+            .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified phone number and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Phone
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
+
+            // Sets the phone number and type
+            .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone)
+            .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified email and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Email
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
+
+            // Sets the email address and type
+            .withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email)
+            .withValue(ContactsContract.CommonDataKinds.Email.TYPE, emailType);
+
+    /*
+     * Demonstrates a yield point. At the end of this insert, the batch operation's thread
+     * will yield priority to other threads. Use after every set of operations that affect a
+     * single contact, to avoid degrading performance.
+     */
+    op.withYieldAllowed(true);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    O último fragmento exibe a chamada
+    a {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} que
+    insere as novas linhas de contato bruto e de dados.
+</p>
+<pre>
+    // Ask the Contacts Provider to create a new contact
+    Log.d(TAG,"Selected account: " + mSelectedAccount.getName() + " (" +
+            mSelectedAccount.getType() + ")");
+    Log.d(TAG,"Creating contact: " + name);
+
+    /*
+     * Applies the array of ContentProviderOperation objects in batch. The results are
+     * discarded.
+     */
+    try {
+
+            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
+    } catch (Exception e) {
+
+            // Display a warning
+            Context ctx = getApplicationContext();
+
+            CharSequence txt = getString(R.string.contactCreationFailure);
+            int duration = Toast.LENGTH_SHORT;
+            Toast toast = Toast.makeText(ctx, txt, duration);
+            toast.show();
+
+            // Log exception
+            Log.e(TAG, "Exception encountered while inserting contact: " + e);
+    }
+}
+</pre>
+<p>
+    As operações de lote também permitem a implementação de <strong>controle otimista de simultaneidade</strong>,
+    um método de aplicar transações de modificação sem precisar bloquear o repositório subjacente.
+    Para usar esse método, aplique a transação e, em seguida, verifique se há outras modificações que
+    possam ter sido realizadas ao mesmo tempo. Se ficar determinado que houve uma modificação incoerente,
+    reverte-se a transação e tenta-se novamente.
+</p>
+<p>
+    O controle otimista de simultaneidade é útil para dispositivos móveis em que haja somente um usuário
+    de uma vez e que sejam raros os acessos simultâneos a um repositório de dados. Como os bloqueios não são usados,
+    não há tempo gasto em bloqueios de configuração nem espera para que outras transações liberem os respectivos bloqueios.
+</p>
+<p>
+    Para usar o controle otimista de simultaneidade ao atualizar uma única
+    linha {@link android.provider.ContactsContract.RawContacts}, siga estas etapas:
+</p>
+<ol>
+    <li>
+        Recupere a coluna {@link android.provider.ContactsContract.SyncColumns#VERSION}
+        do contato bruto em conjunto com os outros dados recuperados.
+    </li>
+    <li>
+        Crie um objeto {@link android.content.ContentProviderOperation.Builder} adequado para
+        forçar uma restrição com o método
+        {@link android.content.ContentProviderOperation#newAssertQuery(Uri)}. Para a URI de conteúdo,
+        use {@link android.provider.ContactsContract.RawContacts#CONTENT_URI
+        RawContacts.CONTENT_URI}
+        com o {@code android.provider.BaseColumns#_ID} do contato bruto anexado a ela.
+    </li>
+    <li>
+        Para o objeto {@link android.content.ContentProviderOperation.Builder}, chame
+        {@link android.content.ContentProviderOperation.Builder#withValue(String, Object)
+        withValue()} para comparar a coluna
+        {@link android.provider.ContactsContract.SyncColumns#VERSION} com o número da versão recém-recuperado.
+    </li>
+    <li>
+        Para o mesmo {@link android.content.ContentProviderOperation.Builder}, chame
+        {@link android.content.ContentProviderOperation.Builder#withExpectedCount(int)
+        withExpectedCount()} para garantir que somente uma linha seja testada por essa instrução.
+    </li>
+    <li>
+        Chame {@link android.content.ContentProviderOperation.Builder#build()} para criar
+        o objeto {@link android.content.ContentProviderOperation}; em seguida, adicione esse objeto como
+        o primeiro objeto na {@link java.util.ArrayList} passada para
+        {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}.
+    </li>
+    <li>
+        Aplique a transação em lote.
+    </li>
+</ol>
+<p>
+    Se a linha de contato bruto for atualizada por outra operação entre o momento da leitura da linha
+       e o momento de sua modificação, a "assert" {@link android.content.ContentProviderOperation}
+        falhará e todo o lote de operações será cancelado. Depois disso, as opções são tentar novamente
+        ou tomar outra medida.
+</p>
+<p>
+    O fragmento a seguir demonstra como criar uma "assert"
+        {@link android.content.ContentProviderOperation} após consultar um contato bruto exclusivo usando
+    um {@link android.content.CursorLoader}:
+</p>
+<pre>
+/*
+ * The application uses CursorLoader to query the raw contacts table. The system calls this method
+ * when the load is finished.
+ */
+public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor cursor) {
+
+    // Gets the raw contact's _ID and VERSION values
+    mRawContactID = cursor.getLong(cursor.getColumnIndex(BaseColumns._ID));
+    mVersion = cursor.getInt(cursor.getColumnIndex(SyncColumns.VERSION));
+}
+
+...
+
+// Sets up a Uri for the assert operation
+Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, mRawContactID);
+
+// Creates a builder for the assert operation
+ContentProviderOperation.Builder assertOp = ContentProviderOperation.netAssertQuery(rawContactUri);
+
+// Adds the assertions to the assert operation: checks the version and count of rows tested
+assertOp.withValue(SyncColumns.VERSION, mVersion);
+assertOp.withExpectedCount(1);
+
+// Creates an ArrayList to hold the ContentProviderOperation objects
+ArrayList ops = new ArrayList&lt;ContentProviderOperationg&gt;;
+
+ops.add(assertOp.build());
+
+// You would add the rest of your batch operations to "ops" here
+
+...
+
+// Applies the batch. If the assert fails, an Exception is thrown
+try
+    {
+        ContentProviderResult[] results =
+                getContentResolver().applyBatch(AUTHORITY, ops);
+
+    } catch (OperationApplicationException e) {
+
+        // Actions you want to take if the assert operation fails go here
+    }
+</pre>
+<h3 id="Intents">Recuperação e modificação com intenções</h3>
+<p>
+    Enviar uma intenção ao aplicativo de contatos do dispositivo permite o acesso indireto ao Provedor
+    de contatos. A intenção inicia a IU do aplicativo de contatos do dispositivo, na qual os usuários podem
+    fazer tarefas relacionadas a contatos. Com esse tipo de acesso, os usuários podem:
+    <ul>
+        <li>Selecionar um contato de uma lista e retorná-lo ao aplicativo para trabalhos futuros.</li>
+        <li>Editar dados de um contato existente.</li>
+        <li>Inserir um novo contato bruto para quaisquer das suas contas.</li>
+        <li>Excluir um contato ou dados dos contatos.</li>
+    </ul>
+<p>
+    Se o usuário estiver inserindo ou atualizando dados, é possível coletar os dados antes e enviá-los como
+    parte da intenção.
+</p>
+<p>
+    Ao usar intenções para acessar o Provedor de Contatos por meio do aplicativo de contatos do dispositivo,
+    não é necessário criar a própria IU ou código para acessar o provedor. Também não é necessário
+    solicitar permissão de leitura e gravação ao provedor. O aplicativo de contatos do dispositivo pode
+    delegar a você permissões de leitura de um contato e, pelo fato de você fazer modificações
+    no provedor por meio de outro aplicativo, não é necessário ter permissões de gravação.
+</p>
+<p>
+    O processo geral de envio de uma intenção para acessar um provedor é descrito detalhadamente
+    no guia<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+Preceitos do provedor de conteúdo</a>, seção "Acesso a dados via intenções". Os valores
+    de ação, do tipo MIME e dos dados usados para as tarefas disponíveis são resumidos na tabela 4
+    e os valores extras que podem ser usados com
+    {@link android.content.Intent#putExtra(String, String) putExtra()} são listados na
+    documentação de referência de {@link android.provider.ContactsContract.Intents.Insert}:
+</p>
+<p class="table-caption" id="table4">
+  <strong>Tabela 4.</strong> Intenções do Provedor de Contatos
+</p>
+<table style="width:75%">
+    <tr>
+        <th scope="col" style="width:10%">Tarefa</th>
+        <th scope="col" style="width:5%">Ação</th>
+        <th scope="col" style="width:10%">Dados</th>
+        <th scope="col" style="width:10%">Tipo MIME</th>
+        <th scope="col" style="width:25%">Observações</th>
+    </tr>
+    <tr>
+        <td><strong>Selecionar um contato de uma lista</strong></td>
+        <td>{@link android.content.Intent#ACTION_PICK}</td>
+        <td>
+            Um dos seguintes:
+            <ul>
+                <li>
+{@link android.provider.ContactsContract.Contacts#CONTENT_URI Contacts.CONTENT_URI},
+                    que exibe uma lista de contatos.
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Phone#CONTENT_URI Phone.CONTENT_URI},
+                    que exibe uma lista de números de telefone de um contato bruto.
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal#CONTENT_URI
+StructuredPostal.CONTENT_URI},
+                    que exibe uma lista de endereços postais de um contato bruto.
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_URI Email.CONTENT_URI},
+                    que exibe uma lista de endereços de e-mail de um contato bruto.
+                </li>
+            </ul>
+        </td>
+        <td>
+            Não usado
+        </td>
+        <td>
+            Exibe uma lista de contatos brutos ou uma lista de dados de um contato bruto conforme
+            o tipo da URI de conteúdo fornecido.
+            <p>
+                Chame
+         {@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()},
+                que retorna a URI de conteúdo da linha selecionada. O formulário da URI é a
+                URI de conteúdo da tabela com o <code>LOOKUP_ID</code> da linha anexado a ela.
+                O aplicativo de contatos do dispositivo delega permissões de leitura e gravação a essa URI de conteúdo
+                pelo tempo que a atividade durar. Consulte
+                o guia<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+                Preceitos do provedor de conteúdo</a> para obter mais detalhes.
+            </p>
+        </td>
+    </tr>
+    <tr>
+        <td><strong>Inserir um novo contato bruto</strong></td>
+        <td>{@link android.provider.ContactsContract.Intents.Insert#ACTION Insert.ACTION}</td>
+        <td>Não aplicável</td>
+        <td>
+            {@link android.provider.ContactsContract.RawContacts#CONTENT_TYPE
+            RawContacts.CONTENT_TYPE}, tipo MIME para um grupo de contatos brutos.
+        </td>
+        <td>
+            Exibe a tela <strong>Adicionar contato</strong> do aplicativo de contatos do dispositivo. 
+            São exibidos os valores extras adicionados à intenção. Se enviada com
+        {@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()},
+            a URI de conteúdo do contato bruto recentemente adicionado é passada de volta
+            ao método de retorno de chamada
+            {@link android.app.Activity#onActivityResult(int, int, Intent) onActivityResult()}no argumento {@link android.content.Intent},
+no campo "dados". Para obter o valor, chame {@link android.content.Intent#getData()}.
+        </td>
+    </tr>
+    <tr>
+        <td><strong>Editar um contato</strong></td>
+        <td>{@link android.content.Intent#ACTION_EDIT}</td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI}
+            do contato. A atividade do editor permitirá que o usuário edite os dados associados
+            a esse contato.
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE
+            Contacts.CONTENT_ITEM_TYPE}, um único contato.</td>
+        <td>
+            Exibe a tela Editar contato no aplicativo de contatos. São exibidos os valores extras
+            adicionados à intenção. Quando o usuário clica em <strong>Concluído</strong> para salvar
+            as edições, a atividade retorna ao primeiro plano.
+        </td>
+    </tr>
+    <tr>
+        <td><strong>Exibir um seletor que também pode adicionar dados.</strong></td>
+        <td>{@link android.content.Intent#ACTION_INSERT_OR_EDIT}</td>
+        <td>
+            Não aplicável
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE}
+        </td>
+         <td>
+            Essa intenção sempre exibe a tela do seletor do aplicativo de contatos. </strong>O usuário pode
+            selecionar um contato para editar ou adicionar um novo. É exibida a tela de edição ou de adição,
+            conforme a escolha do usuário e são exibidos os dados extras passados
+            para a intenção. Se o aplicativo exibe dados de contato como um e-mail ou número de telefone, use
+            essa intenção para permitir que o usuário adicione os dados a um contato existente.
+
+            <p class="note">
+                <strong>Observação:</strong> Não é necessário enviar nenhum valor de nome dos extras da intenção
+            porque o usuário sempre seleciona um nome existente ou adiciona um novo. Além disso,
+            se você enviar um nome e o usuário escolher editar, o aplicativo de contatos
+            exibirá o nome enviado, substituindo o valor anterior. Se o usuário
+            não notar isso e salvar a edição, o valor antigo será perdido.
+            </p>
+         </td>
+    </tr>
+</table>
+<p>
+    O aplicativo de contatos do dispositivo não permite a exclusão de um contato bruto ou de seus dados
+    com uma intenção. Em vez disso, para excluir um contato bruto, use
+    {@link android.content.ContentResolver#delete(Uri, String, String[]) ContentResolver.delete()}
+    ou {@link android.content.ContentProviderOperation#newDelete(Uri)
+    ContentProviderOperation.newDelete()}.
+</p>
+<p>
+    O fragmento a seguir mostra como construir e enviar uma intenção que insira um novo
+    contato bruto e dados:
+</p>
+<pre>
+// Gets values from the UI
+String name = mContactNameEditText.getText().toString();
+String phone = mContactPhoneEditText.getText().toString();
+String email = mContactEmailEditText.getText().toString();
+
+String company = mCompanyName.getText().toString();
+String jobtitle = mJobTitle.getText().toString();
+
+// Creates a new intent for sending to the device's contacts application
+Intent insertIntent = new Intent(ContactsContract.Intents.Insert.ACTION);
+
+// Sets the MIME type to the one expected by the insertion activity
+insertIntent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
+
+// Sets the new contact name
+insertIntent.putExtra(ContactsContract.Intents.Insert.NAME, name);
+
+// Sets the new company and job title
+insertIntent.putExtra(ContactsContract.Intents.Insert.COMPANY, company);
+insertIntent.putExtra(ContactsContract.Intents.Insert.JOB_TITLE, jobtitle);
+
+/*
+ * Demonstrates adding data rows as an array list associated with the DATA key
+ */
+
+// Defines an array list to contain the ContentValues objects for each row
+ArrayList&lt;ContentValues&gt; contactData = new ArrayList&lt;ContentValues&gt;();
+
+
+/*
+ * Defines the raw contact row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues rawContactRow = new ContentValues();
+
+// Adds the account type and name to the row
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType());
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+// Adds the row to the array
+contactData.add(rawContactRow);
+
+/*
+ * Sets up the phone number data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues phoneRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+phoneRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
+);
+
+// Adds the phone number and its type to the row
+phoneRow.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone);
+
+// Adds the row to the array
+contactData.add(phoneRow);
+
+/*
+ * Sets up the email data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues emailRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+emailRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE
+);
+
+// Adds the email address and its type to the row
+emailRow.put(ContactsContract.CommonDataKinds.Email.ADDRESS, email);
+
+// Adds the row to the array
+contactData.add(emailRow);
+
+/*
+ * Adds the array to the intent's extras. It must be a parcelable object in order to
+ * travel between processes. The device's contacts app expects its key to be
+ * Intents.Insert.DATA
+ */
+insertIntent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, contactData);
+
+// Send out the intent to start the device's contacts app in its add contact activity.
+startActivity(insertIntent);
+</pre>
+<h3 id="DataIntegrity">Integridade dos dados</h3>
+<p>
+    Como o repositório de contatos contém dados importantes e confidenciais que usuários esperam que estejam
+    corretos e atualizados, o Provedor de Contatos tem regras bem definidas para a integridade dos dados. É de
+    sua responsabilidade adequar-se a essas regras ao modificar dados de contatos. As regras
+    importantes são listadas a seguir:
+</p>
+<dl>
+    <dt>
+        Sempre adicione uma linha {@link android.provider.ContactsContract.CommonDataKinds.StructuredName}
+        para cada linha {@link android.provider.ContactsContract.RawContacts} adicionada.
+    </dt>
+    <dd>
+        Uma linha {@link android.provider.ContactsContract.RawContacts} sem uma
+        linha {@link android.provider.ContactsContract.CommonDataKinds.StructuredName}
+        na tabela {@link android.provider.ContactsContract.Data} pode causar problemas durante
+        a agregação.
+    </dd>
+    <dt>
+        Sempre conecte novas linhas {@link android.provider.ContactsContract.Data} às respectivas
+        linhas pai {@link android.provider.ContactsContract.RawContacts}.
+    </dt>
+    <dd>
+        Uma linha {@link android.provider.ContactsContract.Data} que não esteja conectada a um
+        {@link android.provider.ContactsContract.RawContacts} não será visível no aplicativo
+        de contatos do dispositivo, o que pode causar problemas com adaptadores de sincronização.
+    </dd>
+    <dt>
+        Altere dados somente para os seus contatos brutos.
+    </dt>
+    <dd>
+        Lembre-se de que o Provedor de Contatos normalmente gerencia dados de diversos tipos de conta
+        e serviços on-line diferentes. É preciso garantir que o aplicativo modifique
+        ou exclua somente dados de linhas que pertencem a você e que ele insira dados apenas
+        com um tipo e nome de conta que você controla.
+    </dd>
+    <dt>
+        Sempre use as constantes definidas em {@link android.provider.ContactsContract} e suas
+        subclasses de autoridades, URIs de conteúdo, caminhos de URI, nomes de coluna, tipos MIME e
+        valores {@link android.provider.ContactsContract.CommonDataKinds.CommonColumns#TYPE}.
+    </dt>
+    <dd>
+        O uso dessas constantes ajuda a evitar erros. Você também será notificado com avisos
+        do compilador se uma das constantes não for aprovada.
+    </dd>
+</dl>
+<h3 id="CustomData">Linhas de dados personalizados</h3>
+<p>
+    Ao criar e usar seus próprios tipos MIME personalizados, você pode inserir, editar, excluir e recuperar
+    suas linhas de dados na tabela {@link android.provider.ContactsContract.Data}. As linhas
+    são limitadas a usar a coluna definida em
+    {@link android.provider.ContactsContract.DataColumns}, embora seja possível mapear
+    os nomes de coluna de tipo específico para os nomes de coluna padrão. No aplicativo de contatos do dispositivo,
+    os dados das linhas são exibidos, mas não podem ser editados nem excluídos e os usuários não podem inserir
+    dados adicionais. Para permitir que usuários modifiquem suas linhas de dados personalizados, é necessário fornecer
+    uma atividade do editor no próprio aplicativo.
+</p>
+<p>
+    Para exibir os dados personalizados, forneça um arquivo <code>contacts.xml</code> contendo
+    um elemento <code>&lt;ContactsAccountType&gt;</code> ou um ou mais
+    dos elementos filho <code>&lt;ContactsDataKind&gt;</code>. Isso é abordado com mais detalhes na
+    seção <a href="#SocialStreamDataKind"><code>&lt;ContactsDataKind&gt; element</code></a>.
+</p>
+<p>
+    Para saber mais sobre tipos MIME personalizados, leia o
+    guia <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+    Criação de um provedor de conteúdo</a>.
+</p>
+<h2 id="SyncAdapters">Adaptadores de sincronização do Provedor de Contatos</h2>
+<p>
+    O Provedor de Contatos foi projetado especificamente para tratar a <strong>sincronização</strong>
+    de dados de contatos entre um dispositivo e um serviço on-line. Isso permite que usuários baixem
+    dados existentes em um novo dispositivo e transfiram dados existentes a uma nova conta.
+    A sincronização também garante que usuários tenham os dados mais recentes à mão, independentemente
+    da origem de adições e alterações. Outra vantagem da sincronização é
+    a disponibilidade dos dados dos contatos mesmo quando o dispositivo não está conectado à rede.
+</p>
+<p>
+    Embora seja possível implementar a sincronização de diversos modos, o sistema Android fornece 
+    uma estrutura de sincronização de extensão que automatiza as seguintes tarefas:
+    <ul>
+
+    <li>
+        Verificação da disponibilidade da rede.
+    </li>
+    <li>
+        Agendamento e execução de sincronizações, com base nas preferências do usuário.
+    </li>
+    <li>
+        Reinicialização de sincronizações que foram interrompidas.
+    </li>
+    </ul>
+<p>
+    Para usar essa estrutura, deve-se fornecer uma extensão do adaptador de sincronização. Cada adaptador de sincronização é exclusivo
+    de um serviço e um provedor de conteúdo, mas pode tratar diversos nomes de conta do mesmo serviço. 
+    A estrutura também permite diversos adaptadores de sincronização para o mesmo serviço e provedor.
+</p>
+<h3 id="SyncClassesFiles">Classes e arquivos do adaptador de sincronização</h3>
+<p>
+    O adaptador de sincronização é implementado como uma subclasse
+    de {@link android.content.AbstractThreadedSyncAdapter} e instalado como parte do aplicativo
+    do Android. O sistema coleta dados do adaptador de sincronização a partir de elementos no manifesto
+    do aplicativo e de um arquivo XML especial direcionado pelo manifesto. O arquivo XML define
+    o tipo de conta do serviço on-line e a autoridade do provedor de conteúdo que, juntos,
+    identificam exclusivamente o adaptador. O adaptador de sincronização não fica ativo até que o usuário adicione
+    uma conta para o tipo de conta do adaptador de sincronização e habilite a sincronização para
+    o provedor de conteúdo com o qual o adaptador se sincroniza.  Nesse ponto, o sistema começa a gerenciar o adaptador,
+    chamando-o quando necessário para estabelecer a sincronização entre o provedor de conteúdo e o servidor.
+</p>
+<p class="note">
+    <strong>Observação:</strong> usar um tipo de conta como parte da identificação do adaptador de sincronização permite
+    que o sistema detecte e agrupe adaptadores de sincronização que acessam diferentes serviços
+    da mesma organização. Por exemplo, todos os adaptadores de sincronização dos serviços on-line da Google têm o mesmo
+    tipo de conta <code>com.google</code>. Quando o usuário adiciona uma conta Google aos dispositivos, todos
+    os adaptadores de sincronização dos serviços Google instalados são listados juntos; cada um
+    dos listados sincroniza-se com um provedor de conteúdo diferente no dispositivo.
+</p>
+<p>
+    Como a maioria dos serviços exige que usuários verifiquem a identidade antes de acessar
+    os dados, o sistema Android oferece uma estrutura de autenticação similar à estrutura
+    dos adaptadores de sincronização e muitas vezes usada junto com eles. A estrutura de autenticação usa
+    autenticadores de extensão que são subclasses
+    de {@link android.accounts.AbstractAccountAuthenticator}. Um autenticador verifica
+    a identidade do usuário nas seguintes etapas:
+    <ol>
+        <li>
+            Coleta nome, senha ou informação similar do usuário (as <strong>credenciais</strong>
+            do usuário).
+        </li>
+        <li>
+            Envia as credenciais para o serviço
+        </li>
+        <li>
+            Avalia a resposta do serviço.
+        </li>
+    </ol>
+<p>
+    Se o serviço aceitar as credenciais, o autenticador pode
+    armazená-las para uso futuro. Devido à estrutura do autenticador de extensão,
+    o {@link android.accounts.AccountManager} pode conferir acesso a quaisquer tokens de autenticação compatíveis com
+    um autenticador que escolha expô-los, como os tokens de autenticação OAuth2.
+</p>
+<p>
+    Embora as autenticações não sejam necessárias, a maioria dos serviços de contato as usam.
+    Contudo, não é obrigatório usar a estrutura de autenticação do Android para efetuá-las.
+</p>
+<h3 id="SyncAdapterImplementing">Implementação do adaptador de sincronização</h3>
+<p>
+    Para implementar um adaptador de sincronização para o Provedor de Contatos, primeiramente é necessário criar
+    um aplicativo do Android que contenha o seguinte:
+</p>
+    <dl>
+        <dt>
+            Um componente {@link android.app.Service} que responda a solicitações do sistema para
+            vincular ao adaptador de sincronização.
+        </dt>
+        <dd>
+            Quando o sistema quer executar uma sincronização, ele chama o método
+            {@link android.app.Service#onBind(Intent) onBind()} do serviço para obter
+            um {@link android.os.IBinder} para o adaptador de sincronização. Isso permite que o sistema efetue chamadas
+            entre processos aos métodos do adaptador.
+            <p>
+                No aplicativo
+            <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">Exemplo de adaptador de sincronização</a>, o nome de classe desse serviço é
+                <code>com.example.android.samplesync.syncadapter.SyncService</code>.
+            </p>
+        </dd>
+        <dt>
+            O adaptador de sincronização atual, implementado como uma subclasse concreta de
+                {@link android.content.AbstractThreadedSyncAdapter}.
+        </dt>
+        <dd>
+            Essa classe realiza o trabalho de baixar dados do servidor, atualizar dados
+                do dispositivo e resolver conflitos. A principal tarefa do adaptador é
+                feita no método {@link android.content.AbstractThreadedSyncAdapter#onPerformSync(
+            Account, Bundle, String, ContentProviderClient, SyncResult)
+            onPerformSync()}. Essa classe deve ser instanciada como um singleton.
+            <p>
+                No aplicativo
+            <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">Exemplo de adaptador de sincronização</a>, o adaptador de sincronização é definido na classe
+                <code>com.example.android.samplesync.syncadapter.SyncAdapter</code>.
+            </p>
+        </dd>
+        <dt>
+            Uma subclasse de {@link android.app.Application}.
+        </dt>
+        <dd>
+            Essa classe atua como uma fábrica para o singleton do adaptador de sincronização. Use
+            o método {@link android.app.Application#onCreate()} para instanciar o adaptador de sincronização
+            e fornecer um método "coletor" estático para retornar o singleton ao
+            método {@link android.app.Service#onBind(Intent) onBind()} do serviço do adaptador
+            de sincronização.
+        </dd>
+        <dt>
+            <strong>Opcional:</strong> um componente {@link android.app.Service} que responda a
+            solicitações do sistema para autenticação do usuário.
+        </dt>
+        <dd>
+            O {@link android.accounts.AccountManager} ativa esse serviço para iniciar o processo
+            de autenticação. O método {@link android.app.Service#onCreate()} do serviço instancia
+            um objeto autenticador. Quando o sistema quer autenticar uma conta de usuário para
+            o adaptador de sincronização do aplicativo, ele chama o método
+            {@link android.app.Service#onBind(Intent) onBind()} do serviço para obter um
+            {@link android.os.IBinder} para o autenticador. Isso permite que o sistema efetue chamadas
+            entre processos aos métodos do autenticador.
+            <p>
+                No aplicativo
+            <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">Exemplo de adaptador de sincronização</a>, o nome de classe desse serviço é
+                <code>com.example.android.samplesync.authenticator.AuthenticationService</code>.
+            </p>
+        </dd>
+        <dt>
+            <strong>Opcional:</strong> uma subclasse concreta de
+            {@link android.accounts.AbstractAccountAuthenticator} que trate de solicitações de
+            autenticação.
+        </dt>
+        <dd>
+            Essa classe fornece métodos que chamam {@link android.accounts.AccountManager}
+            para autenticar as credenciais do usuário no servidor. Os detalhes
+            desse processo de autenticação variam amplamente, com base na tecnologia em uso no servidor. Consulte
+            a documentação do software do servidor para ver mais informações sobre autenticação.
+            <p>
+                No aplicativo
+            <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">Exemplo de adaptador de sincronização</a>, o autenticador é definido na classe
+                <code>com.example.android.samplesync.authenticator.Authenticator</code>.
+            </p>
+        </dd>
+        <dt>
+            Os arquivos XML que definem o adaptador de sincronização e o autenticador para o sistema.
+        </dt>
+        <dd>
+            Os componentes de serviço do adaptador de sincronização e do autenticador descritos anteriormente são
+            definidos em
+elementos <code>&lt;<a href="{@docRoot}guide/topics/manifest/service-element.html">service</a>&gt;</code>
+ no manifesto do aplicativo. Esses elementos
+            contêm
+elementos filho <code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+que fornecem dados específicos ao
+            sistema:
+            <ul>
+                <li>
+                    O
+elemento <code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+ de serviço do adaptador de sincronização direciona-se
+            ao <code>res/xml/syncadapter.xml</code> do arquivo XML. Em troca, esse arquivo especifica
+                    uma URI para o serviço web que será sincronizado com o Provedor de Contatos
+                    e um tipo de conta.
+                </li>
+                <li>
+                    <strong>Opcional:</strong> o
+elemento <code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+ do autenticador aponta para o arquivo XML
+                    <code>res/xml/authenticator.xml</code>. Em troca, esse arquivo especifica
+                    o tipo de conta compatível com esse autenticador, bem como recursos de IU
+                    que aparecem durante o processo de autenticação. O tipo de conta especificado
+                    nesse elemento deve ser o mesmo que o especificado para
+                    o adaptador de sincronização.
+                </li>
+            </ul>
+        </dd>
+    </dl>
+<h2 id="SocialStream">Dados de fluxos sociais</h2>
+<p>
+    As tabelas {@code android.provider.ContactsContract.StreamItems}
+    e {@code android.provider.ContactsContract.StreamItemPhotos}
+    gerenciam dados advindos de redes sociais. É possível criar um adaptador de sincronização que adicione dados de fluxo
+    da sua própria rede a essas tabelas ou ler dados de fluxo dessas tabelas
+    e exibi-los no seu aplicativo, ou ambos. Com esses recursos, os serviços e aplicativos
+    de redes sociais podem ser integrados na experiência das redes sociais no Android.
+</p>
+<h3 id="StreamText">Textos de fluxos sociais</h3>
+<p>
+    Itens de fluxo sempre são associados a um contato bruto. 
+    O {@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID} conecta-se ao
+    valor <code>_ID</code> do contato bruto. O tipo e o nome da conta do contato
+    bruto também são armazenados na linha do item de fluxo.
+</p>
+<p>
+    Armazene os dados do seu fluxo nas colunas a seguir:
+</p>
+<dl>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_TYPE}
+    </dt>
+    <dd>
+        <strong>Obrigatório.</strong> O tipo de conta do usuário do contato bruto associado a esse
+        item de fluxo. Lembre-se de definir esse valor ao inserir um item de fluxo.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_NAME}
+    </dt>
+    <dd>
+        <strong>Obrigatório.</strong> O nome de conta do usuário do contato bruto associado
+        a esse item de fluxo. Lembre-se de definir esse valor ao inserir um item de fluxo.
+    </dd>
+    <dt>
+        Colunas identificadoras
+    </dt>
+    <dd>
+        <strong>Obrigatório.</strong> É necessário inserir as colunas identificadoras a seguir
+        ao inserir um item de fluxo:
+        <ul>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_ID}: 
+                o valor {@code android.provider.BaseColumns#_ID} do contato ao qual esse item
+                de fluxo está associado.
+            </li>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_LOOKUP_KEY}: 
+                o valor{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} do
+                contato ao qual esse item de fluxo está associado.
+            </li>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}: 
+                o valor {@code android.provider.BaseColumns#_ID} do contato bruto ao qual esse item
+                de fluxo está associado.
+            </li>
+        </ul>
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#COMMENTS}
+    </dt>
+    <dd>
+        Opcional. Armazena informações resumidas que podem ser exibidas no início do item de fluxo.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#TEXT}
+    </dt>
+    <dd>
+        O texto do item de fluxo, o conteúdo que foi publicado pela fonte do item
+                ou uma descrição de alguma ação que gerou o item de fluxo. Essa coluna pode conter
+                imagens de recurso incorporadas e de qualquer formato que possam ser renderizadas
+        {@link android.text.Html#fromHtml(String) fromHtml()}. O provedor pode truncar
+        ou abreviar conteúdos longos, mas ele tentará evitar quebrar as tags.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP}
+    </dt>
+    <dd>
+        Uma string de texto contendo o tempo em que o item de fluxo foi inserido ou atualizado, em forma
+        de <em>milissegundos</em> desde a época. Aplicativos que inserem ou atualizam itens de fluxo são
+        responsáveis por manter essa coluna, ela não é mantida automaticamente pelo
+        Provedor de Contatos.
+    </dd>
+</dl>
+<p>
+    Para exibir informações de identificação para os itens de fluxo, use
+    {@code android.provider.ContactsContract.StreamItemsColumns#RES_ICON},
+    {@code android.provider.ContactsContract.StreamItemsColumns#RES_LABEL} e
+    {@code android.provider.ContactsContract.StreamItemsColumns#RES_PACKAGE} para vincular a recursos
+    no aplicativo.
+</p>
+<p>
+    A tabela {@code android.provider.ContactsContract.StreamItems} também contém as colunas
+    {@code android.provider.ContactsContract.StreamItemsColumns#SYNC1} por meio de
+    {@code android.provider.ContactsContract.StreamItemsColumns#SYNC4} para uso exclusivo
+    dos adaptadores de sincronização.
+</p>
+<h3 id="StreamPhotos">Fotos de fluxos sociais</h3>
+<p>
+   A tabela {@code android.provider.ContactsContract.StreamItemPhotos} armazena fotos associadas
+    a um item de fluxo. A coluna
+    {@code android.provider.ContactsContract.StreamItemPhotosColumns#STREAM_ITEM_ID} da tabela
+    vincula-se a valores na coluna {@code android.provider.BaseColumns#_ID}
+    da tabela {@code android.provider.ContactsContract.StreamItems}. Referências de fotografias são armazenadas
+    na tabela nessas colunas:
+</p>
+<dl>
+    <dt>
+        Coluna {@code android.provider.ContactsContract.StreamItemPhotos#PHOTO} (um BLOB).
+    </dt>
+    <dd>
+        Representação binária da foto, redimensionada pelo provedor para armazenar e exibir.
+        Essa coluna está disponível para compatibilidade retroativa com versões anteriores do Provedor
+        de Contatos que a usavam para armazenar fotos. Contudo, na versão atual,
+        não se deve usar essa coluna para armazenar fotos. Em vez disso, use
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID} ou
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI} (ambas são
+        descritas nos pontos a seguir) para armazenar fotos em um arquivo. Essa coluna
+        passa a conter uma miniatura da foto, que estará disponível para leitura.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID}
+    </dt>
+    <dd>
+        Identificador numérico de uma foto de um contato bruto. Anexe esse valor à constante
+        {@link android.provider.ContactsContract.DisplayPhoto#CONTENT_URI DisplayPhoto.CONTENT_URI}
+        para obter uma URI de conteúdo direcionada para um único arquivo de foto e, em seguida, chame
+        {@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
+        openAssetFileDescriptor()} para obter um identificador para o arquivo de foto.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI}
+    </dt>
+    <dd>
+        URI de conteúdo direcionada diretamente para o arquivo de foto da foto representada por essa linha.
+        Chame {@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
+        openAssetFileDescriptor()} com essa URI para obter um identificador para o arquivo de foto.
+    </dd>
+</dl>
+<h3 id="SocialStreamTables">Uso de tabelas de fluxos sociais</h3>
+<p>
+    Essas tabelas funcionam como as outras tabelas principais do Provedor de Contatos, exceto que:
+</p>
+    <ul>
+        <li>
+            Exigem permissões de acesso adicionais. Para ler o conteúdo delas, o aplicativo
+            deve ter a permissão {@code android.Manifest.permission#READ_SOCIAL_STREAM}. Para
+            modificá-las, o aplicativo precisa ter a permissão
+            {@code android.Manifest.permission#WRITE_SOCIAL_STREAM}.
+        </li>
+        <li>
+            Para a tabela {@code android.provider.ContactsContract.StreamItems}, o número de linhas
+            armazenadas para cada contato bruto é limitado. Ao atingir o limite,
+            o Provedor de Contatos abre espaço para novas linhas de itens de fluxo excluindo automaticamente
+            as linhas que têm
+            o {@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP} mais antigo. Para conhecer
+            o limite, faça uma consulta à URI de conteúdo
+            {@code android.provider.ContactsContract.StreamItems#CONTENT_LIMIT_URI}. É possível deixar
+            todos os argumentos, exceto a URI de conteúdo, definidos como <code>null</code>. A consulta
+            retorna um Cursor contendo uma linha única com a coluna única
+            {@code android.provider.ContactsContract.StreamItems#MAX_ITEMS}.
+        </li>
+    </ul>
+
+<p>
+    A classe {@code android.provider.ContactsContract.StreamItems.StreamItemPhotos} define
+    uma subtabela de {@code android.provider.ContactsContract.StreamItemPhotos} que contém as linhas
+    de foto de um único item de fluxo.
+</p>
+<h3 id="SocialStreamInteraction">Interações de fluxos sociais</h3>
+<p>
+    Os dados de fluxos sociais gerenciados pelo Provedor de Contatos, em conjunto com o
+    aplicativo de contatos do dispositivo, oferecem um método poderoso de conexão ao sistema de redes sociais
+    com contatos existentes. Os seguintes recursos estão disponíveis:
+</p>
+    <ul>
+        <li>
+            Ao sincronizar seu serviço de rede social com o Provedor de Contatos com um adaptador
+            de sincronização, é possível recuperar atividades recentes de contatos de um usuário e armazená-las
+            nas tabelas {@code android.provider.ContactsContract.StreamItems}
+            e {@code android.provider.ContactsContract.StreamItemPhotos} para uso posterior.
+        </li>
+        <li>
+            Além da sincronização regular, é possível ativar o adaptador de sincronização para recuperar
+            dados adicionais quando o usuário seleciona um contato para exibir. Isso permite que o adaptador de sincronização
+            recupere fotos de alta resolução e os itens de fluxo mais recentes do contato.
+        </li>
+        <li>
+            Ao registrar uma notificação com o aplicativo de contatos do dispositivo e o Provedor
+            de Contatos, é possível <em>recuperar</em> uma intenção quando um contato é exibido e, nesse ponto,
+            atualizar o status do contato pelo serviço. Essa abordagem pode ser mais rápida e usar menos
+            largura de banda do que realizar uma sincronização completa com um adaptador de sincronização.
+        </li>
+        <li>
+            Os usuários podem adicionar um contato ao seu serviço de rede social enquanto exibem-no
+            no aplicativo de contatos do dispositivo. É possível ativar isso com o recurso "convidar contato",
+            que é ativado com uma combinação de uma atividade que adiciona um contato existente à sua
+            rede, um arquivo XML que fornece o aplicativo de contatos do dispositivo
+            e o Provedor de Contatos com os detalhes do aplicativo.
+        </li>
+    </ul>
+<p>
+    A sincronização regular de itens de fluxo com o Provedor de Contatos é igual
+    a outras sincronizações. Para saber mais sobre sincronizações, consulte a seção
+    <a href="#SyncAdapters">Adaptadores de sincronização do Provedor de Contatos</a>. O registro de notificações
+    e o convite a contatos são abordados nas próximas duas seções.
+</p>
+<h4>Registro para manipular exibições de redes sociais</h4>
+<p>
+    Para registrar o adaptador de sincronização para receber notificações quando o usuário exibe um contato que é
+    gerenciado pelo adaptador de sincronização:
+</p>
+<ol>
+    <li>
+        Crie um arquivo chamado <code>contacts.xml</code> no diretório <code>res/xml/</code>
+        do projeto. Se você já tiver esse arquivo, pule esta etapa.
+    </li>
+    <li>
+        Nesse arquivo, adicione o elemento
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>.
+        Se esse elemento já existir, pule esta etapa.
+    </li>
+    <li>
+        Para registrar um serviço que seja notificado quando o usuário abre uma página de detalhes do contato
+        no aplicativo de contatos do dispositivo, adicione o atributo
+        <code>viewContactNotifyService="<em>serviceclass</em>"</code> ao elemento, em que
+        <code><em>serviceclass</em></code> é o nome de classe totalmente qualificado do serviço
+        que deve receber a intenção do aplicativo de contatos do dispositivo. Para o serviço
+        de notificação, use a classe que estende {@link android.app.IntentService} para permitir que o serviço
+        receba intenções. Os dados nas intenções recebidas contêm a URI de conteúdo do contato
+        bruto em que o usuário clicou. No serviço de notificação, é possível vincular e chamar
+        o adaptador de sincronização para atualizar os dados do contato bruto.
+    </li>
+</ol>
+<p>
+    Para registrar uma atividade a ser chamada quando o usuário clica em um item de fluxo ou foto, ou ambos:
+</p>
+<ol>
+    <li>
+        Crie um arquivo chamado <code>contacts.xml</code> no diretório <code>res/xml/</code>
+        do projeto. Se você já tiver esse arquivo, pule esta etapa.
+    </li>
+    <li>
+        Nesse arquivo, adicione o elemento
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>.
+        Se esse elemento já existir, pule esta etapa.
+    </li>
+    <li>
+        Para registrar uma das atividades para tratar do usuário que clica em um item de fluxo
+        no aplicativo de contatos do dispositivo, adicione o atributo
+        <code>viewStreamItemActivity="<em>activityclass</em>"</code> ao elemento, em que
+        <code><em>activityclass</em></code> é o nome de classe totalmente qualificado da atividade
+        que deve receber a intenção do aplicativo de contatos do dispositivo.
+    </li>
+    <li>
+        Para registrar uma das atividades para tratar do usuário que clica em uma foto de fluxo
+        no aplicativo de contatos do dispositivo, adicione o atributo
+        <code>viewStreamItemPhotoActivity="<em>activityclass</em>"</code> ao elemento, em que
+        <code><em>activityclass</em></code> é o nome de classe totalmente qualificado da atividade
+        que deve receber a intenção do aplicativo de contatos do dispositivo.
+    </li>
+</ol>
+<p>
+    O elemento <code>&lt;ContactsAccountType&gt;</code> é descrito em mais detalhes
+        na seção <a href="#SocialStreamAcctType">Elemento &lt;ContactsAccountType&gt;</a>.
+</p>
+<p>
+    A intenção recebida contém a URI de conteúdo do item ou foto em que o usuário clicou.
+    Para ter atividades separadas para itens de texto e para fotos, use os dois atributos no mesmo arquivo.
+</p>
+<h4>Interação com o serviço de redes sociais</h4>
+<p>
+    Os usuários não precisam sair do aplicativo de contatos do dispositivo para convidar um contato para
+        seu site de contatos. Em vez disso, o aplicativo de contatos do dispositivo pode enviar uma intenção de convidar
+        o contato para uma das atividades. Para configurar isso:
+</p>
+<ol>
+    <li>
+        Crie um arquivo chamado <code>contacts.xml</code> no diretório <code>res/xml/</code>
+        do projeto. Se você já tiver esse arquivo, pule esta etapa.
+    </li>
+    <li>
+        Nesse arquivo, adicione o elemento
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>.
+        Se esse elemento já existir, pule esta etapa.
+    </li>
+    <li>
+        Adicione os seguintes atributos:
+        <ul>
+            <li><code>inviteContactActivity="<em>activityclass</em>"</code></li>
+            <li>
+                <code>inviteContactActionLabel="&#64;string/<em>invite_action_label</em>"</code>
+            </li>
+        </ul>
+        O valor <code><em>activityclass</em></code> é o nome de classe totalmente qualificado
+        da atividade que deve receber a intenção. O valor <code><em>invite_action_label</em></code>
+        é uma string de texto exibida no menu <strong>Adicionar conexão</strong>
+        no aplicativo de contatos do dispositivo.
+    </li>
+</ol>
+<p class="note">
+    <strong>Observação:</strong> <code>ContactsSource</code> é um nome de tag reprovado para
+    <code>ContactsAccountType</code>.
+</p>
+<h3 id="ContactsFile">Referência do contacts.xml</h3>
+<p>
+    O arquivo <code>contacts.xml</code> contém elementos XML que controlam a interação
+    do adaptador de sincronização e o aplicativo com o aplicativo de contatos e o Provedor de Contatos. Esses
+    elementos são descritos nas seções a seguir.
+</p>
+<h4 id="SocialStreamAcctType">Elemento &lt;ContactsAccountType&gt;</h4>
+<p>
+    O elemento <code>&lt;ContactsAccountType&gt;</code> controla a interação
+    do aplicativo com o aplicativo de contatos. Ele tem a seguinte sintaxe:
+</p>
+<pre>
+&lt;ContactsAccountType
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        inviteContactActivity="<em>activity_name</em>"
+        inviteContactActionLabel="<em>invite_command_text</em>"
+        viewContactNotifyService="<em>view_notify_service</em>"
+        viewGroupActivity="<em>group_view_activity</em>"
+        viewGroupActionLabel="<em>group_action_text</em>"
+        viewStreamItemActivity="<em>viewstream_activity_name</em>"
+        viewStreamItemPhotoActivity="<em>viewphotostream_activity_name</em>"&gt;
+</pre>
+<p>
+    <strong>contido em:</strong>
+</p>
+<p>
+    <code>res/xml/contacts.xml</code>
+</p>
+<p>
+    <strong>pode conter:</strong>
+</p>
+<p>
+    <strong><code>&lt;ContactsDataKind&gt;</code></strong>
+</p>
+<p>
+    <strong>Descrição:</strong>
+</p>
+<p>
+    Declara componentes e etiquetas da IU do Android que permitem aos usuários convidar um dos seus contatos a
+    uma rede social, notificar usuários quando um dos seus fluxos de redes sociais é atualizado
+    etc.
+</p>
+<p>
+    Observe que o prefixo <code>android:</code> do atributo não é necessário para os atributos
+    de <code>&lt;ContactsAccountType&gt;</code>.
+</p>
+<p>
+    <strong>Atributos:</strong>
+</p>
+<dl>
+    <dt>{@code inviteContactActivity}</dt>
+    <dd>
+        O nome de classe totalmente qualificado da atividade no aplicativo que você deseja
+        ativar quando o usuário seleciona <strong>Adicionar conexão</strong> no aplicativo
+        de contatos do dispositivo.
+    </dd>
+    <dt>{@code inviteContactActionLabel}</dt>
+    <dd>
+        Uma string de texto exibida para a atividade especificada
+        em {@code inviteContactActivity}, no menu <strong>Adicionar conexão</strong>.
+        Por exemplo: você pode usar a string "Siga-me na rede". Você pode usar um identificador
+        do recurso da string nessa etiqueta.
+    </dd>
+    <dt>{@code viewContactNotifyService}</dt>
+    <dd>
+        O nome de classe totalmente qualificado de um serviço no aplicativo que deve receber
+        notificações de quando o usuário exibe um contato. Essa notificação é enviada pelo aplicativo
+        de contatos do dispositivo, isso permite que o aplicativo adie operações de dados intensivos
+        até que elas sejam necessárias. Por exemplo: o aplicativo pode responder a essa notificação
+        lendo e exibindo a foto de alta resolução do contato e os itens de fluxo social
+        mais recentes. Esse recurso é descrito com mais detalhes na seção
+        <a href="#SocialStreamInteraction">Interações de fluxos sociais</a>. É possível ver
+        um exemplo de serviço de notificação no arquivo <code>NotifierService.java</code>
+        no aplicativo de exemplo
+        <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>.
+    </dd>
+    <dt>{@code viewGroupActivity}</dt>
+    <dd>
+        O nome de classe totalmente qualificado de uma atividade no aplicativo que pode exibir
+        informações de grupo. Quando o usuário clica na etiqueta do grupo no aplicativo
+        de contatos do dispositivo, a IU dessa atividade é exibida.
+    </dd>
+    <dt>{@code viewGroupActionLabel}</dt>
+    <dd>
+        A etiqueta que o aplicativo de contatos exibe para um controle de IU que permite
+ que o usuário veja grupos no seu aplicativo.
+        <p>
+            Por exemplo: se você instalar o aplicativo do Google+ no dispositivo e sincronizá-lo
+        com o aplicativo de contatos, verá os círculos do Google+ listados como grupos
+        na aba <strong>Grupos</strong> do aplicativo de contatos. Ao clicar
+        em um círculo do Google+, você verá pessoas nesse círculo listadas como um "grupo". Na parte superior
+        da tela, você verá um ícone do Google+; ao clicar nele, o controle muda para
+        o aplicativo do Google+. O aplicativo de contatos faz isso com
+        {@code viewGroupActivity} usando o ícone como o valor
+            de {@code viewGroupActionLabel}.
+        </p>
+        <p>
+            Um identificador de recurso de string é permitido para esse atributo.
+        </p>
+    </dd>
+    <dt>{@code viewStreamItemActivity}</dt>
+    <dd>
+        O nome de classe totalmente qualificado de uma atividade no aplicativo que
+        o aplicativo de contatos do dispositivo executa quando o usuário clica em um item de fluxo de um contato bruto.
+    </dd>
+    <dt>{@code viewStreamItemPhotoActivity}</dt>
+    <dd>
+        O nome de classe totalmente qualificado de uma atividade no aplicativo que
+        o aplicativo de contatos do dispositivo executa quando o usuário clica em uma foto no item de fluxo
+        de um contato bruto.
+    </dd>
+</dl>
+<h4 id="SocialStreamDataKind">Elemento &lt;ContactsDataKind&gt;</h4>
+<p>
+    O elemento <code>&lt;ContactsDataKind&gt;</code> controla a tela das linhas de dados
+        personalizados do aplicativo na IU do aplicativo de contatos. Ele tem a seguinte sintaxe:
+</p>
+<pre>
+&lt;ContactsDataKind
+        android:mimeType="<em>MIMEtype</em>"
+        android:icon="<em>icon_resources</em>"
+        android:summaryColumn="<em>column_name</em>"
+        android:detailColumn="<em>column_name</em>"&gt;
+</pre>
+<p>
+    <strong>contido em:</strong>
+</p>
+<code>&lt;ContactsAccountType&gt;</code>
+<p>
+    <strong>Descrição:</strong>
+</p>
+<p>
+    Use esse elemento para que o aplicativo de contatos exiba o conteúdo de uma linha de dados personalizados como
+        parte dos detalhes de um contato bruto. Cada elemento filho <code>&lt;ContactsDataKind&gt;</code>
+    de <code>&lt;ContactsAccountType&gt;</code> representa um tipo de linha de dados personalizados que o adaptador
+    de sincronização adiciona à tabela {@link android.provider.ContactsContract.Data}. Adicione
+    um elemento <code>&lt;ContactsDataKind&gt;</code> para cada tipo MIME personalizado usado. Não será necessário
+    adicionar o elemento se você tiver uma linha de dados personalizados para a qual não deseja exibir dados.
+</p>
+<p>
+    <strong>Atributos:</strong>
+</p>
+<dl>
+    <dt>{@code android:mimeType}</dt>
+    <dd>
+        O tipo MIME personalizado definido para um dos tipos de linha de dados personalizados
+        na tabela {@link android.provider.ContactsContract.Data}. Por exemplo: o valor
+        <code>vnd.android.cursor.item/vnd.example.locationstatus</code> poderia ser um tipo MIME
+        personalizado para uma linha de dados que registra a última localização conhecida do contato.
+    </dd>
+    <dt>{@code android:icon}</dt>
+    <dd>
+        
+        <a href="{@docRoot}guide/topics/resources/drawable-resource.html">Recurso desenhável</a> do Android
+        que o aplicativo de contatos exibe próximo aos dados. Use isso para indicar
+        ao usuário que os dados são advindos do seu serviço.
+    </dd>
+    <dt>{@code android:summaryColumn}</dt>
+    <dd>
+        O nome de coluna do primeiro de dois valores recuperados da linha de dados. 
+        O valor é exibido como a primeira linha da entrada para essa linha de dados. A primeira linha
+        destina-se ao uso como um resumo dos dados, mas isso é opcional. Veja também
+        <a href="#detailColumn">android:detailColumn</a>.
+    </dd>
+    <dt>{@code android:detailColumn}</dt>
+    <dd>
+        O nome de coluna do segundo de dois valores recuperados da linha de dados. O valor é
+        exibido como a segunda linha da entrada dessa linha de dados. Veja também
+        {@code android:summaryColumn}.
+    </dd>
+</dl>
+<h2 id="AdditionalFeatures">Recursos adicionais do Provedor de Contatos</h2>
+<p>
+    Além dos principais recursos descritos nas seções anteriores, o Provedor de Contatos oferece
+        estes recursos úteis para trabalhar com dados de contatos:
+</p>
+    <ul>
+       <li>Grupos de contatos</li>
+       <li>Recursos de foto</li>
+    </ul>
+<h3 id="Groups">Grupos de contatos</h3>
+<p>
+    O Provedor de Contatos pode, opcionalmente, etiquetar grupos de contatos relacionados com
+    dados de <strong>grupo</strong>. Se o servidor associado a uma conta de usuário
+    deseja manter grupos, o adaptador de sincronização para o tipo da conta deve transferir
+    dados de grupo entre o Provedor de Contatos e o servidor. Quando o usuário adiciona um novo contato
+    ao servidor e, em seguida, coloca este contato em um novo grupo, o adaptador de sincronização deve adicionar o novo grupo
+    na tabela {@link android.provider.ContactsContract.Groups}. O grupo ou grupos a que um contato
+    bruto pertence são armazenados na tabela {@link android.provider.ContactsContract.Data}, usando
+    o tipo MIME {@link android.provider.ContactsContract.CommonDataKinds.GroupMembership}.
+</p>
+<p>
+    Se estiver projetando um adaptador de sincronização que adicionará dados de contato bruto ao Provedor de Contatos
+    a partir de servidores e não estiver usando grupos, será necessário fazer com que
+    o provedor torne os dados visíveis. No código que é executado quando um usuário adiciona uma conta
+    ao dispositivo, atualize a linha {@link android.provider.ContactsContract.Settings}
+    que o Provedor de Contatos adicionou para a conta. Nessa linha, defina o valor da
+    coluna {@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE
+    Settings.UNGROUPED_VISIBLE} como 1. Ao fazê-lo, o Provedor de Contatos sempre
+    deixará os dados de contatos visíveis, mesmo sem usar grupos.
+</p>
+<h3 id="Photos">Fotos de contatos</h3>
+<p>
+    A tabela {@link android.provider.ContactsContract.Data} armazena fotos como linhas com tipo MIME
+    {@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
+    Photo.CONTENT_ITEM_TYPE}. A coluna
+    {@link android.provider.ContactsContract.RawContactsColumns#CONTACT_ID} da linha é vinculada
+    à coluna {@code android.provider.BaseColumns#_ID} do contato bruto à qual pertence.
+    A classe {@link android.provider.ContactsContract.Contacts.Photo} define uma subtabela de
+    {@link android.provider.ContactsContract.Contacts} contendo informações de foto
+    de uma foto principal do contato, que é a foto principal do contato bruto principal do contato. Da mesma forma,
+    a classe {@link android.provider.ContactsContract.RawContacts.DisplayPhoto} define uma subtabela
+    de {@link android.provider.ContactsContract.RawContacts} contendo informações de foto
+    de uma foto principal do contato bruto.
+</p>
+<p>
+    A documentação de referência de {@link android.provider.ContactsContract.Contacts.Photo} e
+    {@link android.provider.ContactsContract.RawContacts.DisplayPhoto} contém exemplos
+    de recuperação de informações de foto. Não há classe conveniente para recuperar a miniatura
+    principal de um contato bruto, mas é possível enviar uma consulta
+    à tabela {@link android.provider.ContactsContract.Data}, selecionando no {@code android.provider.BaseColumns#_ID}
+    do contato bruto, o
+    {@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
+    Photo.CONTENT_ITEM_TYPE} e a coluna
+    {@link android.provider.ContactsContract.Data#IS_PRIMARY} para encontrar a linha da foto principal do contato bruto.
+</p>
+<p>
+    Dados de fluxos sociais de uma pessoa também podem conter fotos. Elas são armazenadas
+    na tabela {@code android.provider.ContactsContract.StreamItemPhotos}, que é descrita com mais
+    detalhes na seção <a href="#StreamPhotos">Fotos de fluxos sociais</a>.
+</p>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/providers/content-provider-basics.jd b/docs/html-intl/intl/pt-br/guide/topics/providers/content-provider-basics.jd
new file mode 100644
index 0000000..5005f92
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/providers/content-provider-basics.jd
@@ -0,0 +1,1196 @@
+page.title=Preceitos do provedor de conteúdo
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<!-- In this document -->
+<h2>Neste documento</h2>
+<ol>
+    <li>
+        <a href="#Basics">Visão geral</a>
+        <ol>
+            <li>
+                <a href="#ClientProvider">Acesso a um provedor</a>
+            </li>
+            <li>
+                <a href="#ContentURIs">URIs de conteúdo</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#SimpleQuery">Recuperação de dados do provedor</a>
+        <ol>
+            <li>
+                <a href="#RequestPermissions">Solicitação de permissão de acesso para leitura</a>
+            </li>
+            <li>
+                <a href="#Query">Construção da consulta</a>
+            </li>
+            <li>
+                <a href="#DisplayResults">Exibição dos resultados da consulta</a>
+            </li>
+            <li>
+                <a href="#GettingResults">Obtenção de dados de resultados da consulta</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#Permissions">Permissões do provedor de conteúdo</a>
+    </li>
+    <li>
+        <a href="#Modifications">Inserção, atualização e exclusão de dados</a>
+        <ol>
+            <li>
+                <a href="#Inserting">Inserção de dados</a>
+            </li>
+            <li>
+                <a href="#Updating">Atualização de dados</a>
+            </li>
+            <li>
+                <a href="#Deleting">Exclusão de dados</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#DataTypes">Tipos de dados do provedor</a>
+    </li>
+    <li>
+        <a href="#AltForms">Formas alternativas de acesso ao provedor</a>
+        <ol>
+            <li>
+                <a href="#Batch">Acesso em lote</a>
+            </li>
+            <li>
+                <a href="#Intents">Acesso a dados via intenções</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#ContractClasses">Classes de contrato</a>
+    </li>
+    <li>
+        <a href="#MIMETypeReference">Referência de tipo MIME</a>
+    </li>
+</ol>
+
+    <!-- Key Classes -->
+<h2>Classes principais</h2>
+    <ol>
+        <li>
+            {@link android.content.ContentProvider}
+        </li>
+        <li>
+            {@link android.content.ContentResolver}
+        </li>
+        <li>
+            {@link android.database.Cursor}
+        </li>
+        <li>
+            {@link android.net.Uri}
+        </li>
+    </ol>
+
+    <!-- Related Samples -->
+<h2>Exemplos relacionados</h2>
+    <ol>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html">
+        Cursor (Pessoas)</a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html">
+        Cursor (Telefones)</a>
+        </li>
+    </ol>
+
+    <!-- See also -->
+<h2>Veja também</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+            Criação de um Provedor de conteúdo</a>
+        </li>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+            Provedor de agenda</a>
+        </li>
+    </ol>
+</div>
+</div>
+
+    <!-- Intro paragraphs -->
+<p>
+    O provedor de conteúdo gerencia o acesso a um repositório central de dados. Um provedor
+    é parte de um aplicativo do Android, que, em geral, fornece a própria IU para trabalhar com
+    os dados. Contudo, provedores de conteúdo destinam-se principalmente ao uso por outros
+    aplicativos, que acessam o provedor usando um objeto cliente do provedor. Juntos, provedores
+    e clientes do provedor oferecem interface padronizada e consistente para dados que também lidam com
+    comunicação em processos internos e garantem acesso a dados.
+</p>
+<p>
+    Esse tópico descreve os conceitos básicos do seguinte:
+</p>
+    <ul>
+        <li>Como os provedores de conteúdo funcionam.</li>
+        <li>A API usada para recuperar dados de um provedor de conteúdo.</li>
+        <li>A API usada para inserir, atualizar ou excluir dados em um provedor de conteúdo.</li>
+        <li>Outros recursos de API que facilitam o trabalho com provedores.</li>
+    </ul>
+
+    <!-- Basics -->
+<h2 id="Basics">Visão geral</h2>
+<p>
+    O provedor de conteúdo apresenta dados a aplicativos externos na forma de uma ou mais tabelas
+    similares às tabelas encontradas em um banco de dados relacional. Uma linha representa uma instância de algum tipo
+    de dados que o provedor coleta e cada coluna na linha representa uma parte individual de
+    dados coletados por uma instância.
+</p>
+<p>
+    Por exemplo: um dos provedores embutidos na plataforma do Android é o dicionário do usuário, que
+    armazena as grafias de palavras incomuns que o usuário deseja manter. A tabela 1 ilustra
+    como podem ser os dados nesta tabela do provedor:
+</p>
+<p class="table-caption">
+    <strong>Tabela 1:</strong> Tabela de dicionário do usuário de exemplo.
+</p>
+<table id="table1" style="width: 50%;">
+    <tr>
+        <th style="width:20%" align="center" scope="col">palavra</th>
+        <th style="width:20%" align="center" scope="col">id do aplicativo</th>
+        <th style="width:20%" align="center" scope="col">frequência</th>
+        <th style="width:20%" align="center" scope="col">localidade</th>
+        <th style="width:20%" align="center" scope="col">_ID</th>
+    </tr>
+    <tr>
+        <td align="center" scope="row">reduçãodomapa</td>
+        <td align="center">usuário1</td>
+        <td align="center">100</td>
+        <td align="center">en_US</td>
+        <td align="center">1</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">pré-compilador</td>
+        <td align="center">usuário14</td>
+        <td align="center">200</td>
+        <td align="center">fr_FR</td>
+        <td align="center">2</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">applet</td>
+        <td align="center">usuário2</td>
+        <td align="center">225</td>
+        <td align="center">fr_CA</td>
+        <td align="center">3</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">const</td>
+        <td align="center">usuário1</td>
+        <td align="center">255</td>
+        <td align="center">pt_BR</td>
+        <td align="center">4</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">int</td>
+        <td align="center">usuário5</td>
+        <td align="center">100</td>
+        <td align="center">en_UK</td>
+        <td align="center">5</td>
+    </tr>
+</table>
+<p>
+    Na tabela 1, cada linha representa uma instância de uma palavra que pode não ser
+    encontrada em um dicionário comum. Cada coluna representa alguns dados dessa palavra, como
+    a localidade em que foi encontrada pela primeira vez. Os cabeçalhos da coluna são nomes de coluna armazenados
+    no provedor. Para consultar a localidade de uma linha, consulte a sua coluna <code>locale</code>. Para
+    esse provedor, a coluna <code>_ID</code> serve como uma coluna de "chave principal" que
+    o provedor mantém automaticamente.
+</p>
+<p class="note">
+    <strong>Observação:</strong> os provedores não precisam ter uma chave principal e não precisam
+    usar <code>_ID</code> como o nome de coluna de uma chave principal se uma for apresentada. Contudo,
+    se você deseja agrupar dados de um provedor em um {@link android.widget.ListView}, um dos
+    nomes de coluna deve ser <code>_ID</code>. Esse requisito é explicado com mais detalhes
+    na seção <a href="#DisplayResults">Exibição dos resultados da consulta</a>.
+</p>
+<h3 id="ClientProvider">Acesso a um provedor</h3>
+<p>
+    Os aplicativos acessam dados a partir de um provedor de conteúdo
+    com um objeto cliente {@link android.content.ContentResolver}. Esse objeto tem métodos que chamam
+    métodos de nome idêntico no objeto do provedor, uma instância de uma das subclasses
+    concretas de {@link android.content.ContentProvider}. 
+    Os métodos {@link android.content.ContentResolver} fornecem as funções básicas
+    do "CRUD" (criar, recuperar, atualizar e excluir) de armazenamento persistente.
+</p>
+<p>
+    O objeto {@link android.content.ContentResolver} no processo do aplicativo
+    cliente e o objeto {@link android.content.ContentProvider} no aplicativo que possui
+    o provedor lidam automaticamente com a comunicação de processos internos.
+    {@link android.content.ContentProvider} também age como uma camada de abstração entre
+    ser repositório de dados e a aparência externa de dados na forma de tabelas.
+</p>
+<p class="note">
+    <strong>Observação:</strong> para acessar um provedor, o aplicativo normalmente precisa solicitar permissões
+    específicas no arquivo de manifesto. Isso é descrito com mais detalhes na seção
+    <a href="#Permissions">Permissões do provedor de conteúdo</a>.
+</p>
+<p>
+    Por exemplo: para obter uma lista das palavras e respectivas localidades do Provedor de dicionário do usuário,
+    chama-se {@link android.content.ContentResolver#query ContentResolver.query()}.
+    O método {@link android.content.ContentResolver#query query()} chama
+    o método {@link android.content.ContentProvider#query ContentProvider.query()} definido pelo
+    Provedor de dicionário do usuário. As linhas de código a seguir exibem
+    uma chamada {@link android.content.ContentResolver#query ContentResolver.query()}:
+<p>
+<pre>
+// Queries the user dictionary and returns results
+mCursor = getContentResolver().query(
+    UserDictionary.Words.CONTENT_URI,   // The content URI of the words table
+    mProjection,                        // The columns to return for each row
+    mSelectionClause                    // Selection criteria
+    mSelectionArgs,                     // Selection criteria
+    mSortOrder);                        // The sort order for the returned rows
+</pre>
+<p>
+    A tabela 2 mostra como os argumentos para
+    {@link android.content.ContentResolver#query 
+    query(Uri,projection,selection,selectionArgs,sortOrder)} correspondem a uma declaração SQL SELECT:
+</p>
+<p class="table-caption">
+    <strong>Tabela 2:</strong> Query() comparada à consulta SQL.
+</p>
+<table id="table2" style="width: 75%;">
+    <tr>
+        <th style="width:25%" align="center" scope="col">Argumento query()</th>
+        <th style="width:25%" align="center" scope="col">Palavra-chave/parâmetro de SELEÇÃO</th>
+        <th style="width:50%" align="center" scope="col">Observações</th>
+    </tr>
+    <tr>
+        <td align="center"><code>Uri</code></td>
+        <td align="center"><code>FROM <em>table_name</em></code></td>
+        <td><code>Uri</code> mapeia para a tabela no provedor chamado <em>table_name</em>.</td>
+    </tr>
+    <tr>
+        <td align="center"><code>projection</code></td>
+        <td align="center"><code><em>col,col,col,...</em></code></td>
+        <td>
+            <code>projection</code> é uma matriz de colunas que devem ser incluídas para cada linha
+            recuperada.
+        </td>
+    </tr>
+    <tr>
+        <td align="center"><code>selection</code></td>
+        <td align="center"><code>WHERE <em>col</em> = <em>value</em></code></td>
+        <td><code>selection</code> especifica o critério para a seleção de linhas.</td>
+    </tr>
+    <tr>
+        <td align="center"><code>selectionArgs</code></td>
+        <td align="center">
+            (Não exatamente equivalente. Argumentos de seleção substituem marcadores de posição <code>?</code>
+            na cláusula de seleção.)
+        </td>
+    </tr>
+    <tr>
+        <td align="center"><code>sortOrder</code></td>
+        <td align="center"><code>ORDER BY <em>col,col,...</em></code></td>
+        <td>
+            <code>sortOrder</code> especifica a ordem em que as linhas aparecem
+            no {@link android.database.Cursor} retornado.
+        </td>
+    </tr>
+</table>
+<h3 id="ContentURIs">URIs de conteúdo</h3>
+<p>
+    <strong>URI de conteúdo</strong> é uma URI que identifica dados em um provedor. URIs de conteúdo
+    contêm o nome simbólico de todo o provedor (sua <strong>autoridade</strong>)
+    e um nome que aponta para uma tabela (um <strong>caminho</strong>). Ao chamar
+    um método cliente para acessar uma tabela em um provedor, a URI de conteúdo da tabela é
+    um dos argumentos.
+</p>
+<p>
+    Nas linhas de código anteriores, a constante
+    {@link android.provider.UserDictionary.Words#CONTENT_URI} contém a URI de conteúdo
+    da tabela de "palavras" do dicionário do usuário. O objeto {@link android.content.ContentResolver}
+    analisa a autoridade da URI e usa-na para "determinar" o provedor
+    comparando a autoridade a uma tabela de provedores conhecidos do sistema. 
+    O {@link android.content.ContentResolver} pode, então, enviar os argumentos da consulta ao provedor
+    correto.
+</p>
+<p>
+    O {@link android.content.ContentProvider} usa o caminho que é parte da URI de conteúdo para escolher
+    a tabela para acessar. Os provedores normalmente têm um <strong>caminho</strong> para cada tabela exposta.
+</p>
+<p>
+    Nas linhas de código anteriores, a URI completa da tabela de "palavras" é:
+</p>
+<pre>
+content://user_dictionary/words
+</pre>
+<p>
+    onde a string <code>user_dictionary</code> é a autoridade do provedor e
+    a string <code>words</code> é o caminho da tabela. A string
+    <code>content://</code> (o <strong>esquema</strong>) está sempre presente
+    e identifica isso como uma URI de conteúdo.
+</p>
+<p>
+    Muitos provedores permitem acesso a uma única linha em uma tabela, por meio da anexação do valor de um ID
+    no fim da URI. Por exemplo, para recuperar uma linha em que <code>_ID</code> seja
+    <code>4</code> do dicionário do usuário, é possível usar essa URI de conteúdo:
+</p>
+<pre>
+Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);
+</pre>
+<p>
+    Normalmente usam-se valores de ID ao recuperar um conjunto de linhas e, em seguida, é necessário atualizar ou excluir
+    uma delas.
+</p>
+<p class="note">
+    <strong>Observação:</strong> as classes {@link android.net.Uri} e {@link android.net.Uri.Builder}
+    contêm métodos convenientes para a construção de objetos de URI bem formados a partir de strings. 
+    As {@link android.content.ContentUris} contêm métodos conveniente para anexar valores de ID
+    a uma URI. O fragmento anterior usa {@link android.content.ContentUris#withAppendedId
+    withAppendedId()} para anexar um ID à URI de conteúdo UserDictionary.
+</p>
+
+
+    <!-- Retrieving Data from the Provider -->
+<h2 id="SimpleQuery">Recuperação de dados pelo Provedor</h2>
+<p>
+    Esta seção descreve como recuperar dados de um provedor usando o Provedor de dicionário do usuário
+    como um exemplo.
+</p>
+<p class="note">
+    Por uma questão de clareza, os fragmentos de código nesta seção chamam
+    {@link android.content.ContentResolver#query ContentResolver.query()} no "encadeamento da IU". 
+    No código atual, contudo, deve-se realizar consultas assincronamente em um encadeamento separado. Um modo de fazê-lo
+    é usar a classe {@link android.content.CursorLoader}, descrita
+    com mais detalhes no guia <a href="{@docRoot}guide/components/loaders.html">
+    Carregadores</a>. Além disso, as linhas de código são somente fragmentos — não mostram um aplicativo
+    completo.
+</p>
+<p>
+    Para recuperar dados de um provedor, siga essas etapas básicas:
+</p>
+<ol>
+   <li>
+        Solicite a permissão de acesso para leitura para um provedor.
+   </li>
+   <li>
+        Defina o código que envia uma consulta ao provedor.
+   </li>
+</ol>
+<h3 id="RequestPermissions">Solicitação de permissão de acesso para leitura</h3>
+<p>
+    Para recuperar dados de um provedor, o aplicativo precisa de "permissão de acesso a leitura"
+    para o provedor. Não é possível solicitar essa permissão em tempo de execução. Em vez disso, deve-se especificar
+    que precisa dessa permissão no manifesto com o elemento
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+    e o nome da permissão exata definida
+    pelo provedor. Ao especificar esse elemento no manifesto, você está efetivamente "solicitando" essa
+    permissão para o aplicativo. Quando usuários instalam seu aplicativo, eles concedem essa solicitação
+    implicitamente.
+</p>
+<p>
+    Para encontrar o nome exato da permissão de acesso para leitura do provedor que está usando, bem
+    como os nomes de outras permissões de acesso usadas pelo provedor, consulte a documentação
+    do provedor.
+</p>
+<p>
+    O papel das permissões no acesso a provedores é descrito com mais detalhes na seção
+    <a href="#Permissions">Permissões do provedor de conteúdo</a>.
+</p>
+<p>
+    O Provedor de Dicionário do Usuário define a permissão
+    <code>android.permission.READ_USER_DICTIONARY</code> no arquivo de manifesto, portanto, se um
+    aplicativo quiser ler pelo provedor, deve solicitar essa permissão.
+</p>
+<!-- Constructing the query -->
+<h3 id="Query">Construção da consulta</h3>
+<p>
+    A próxima etapa na recuperação de dados de um provedor é construir uma consulta. Este primeiro fragmento
+    define algumas variáveis para acessar o Provedor de Dicionário do Usuário:
+</p>
+<pre class="prettyprint">
+
+// A "projection" defines the columns that will be returned for each row
+String[] mProjection =
+{
+    UserDictionary.Words._ID,    // Contract class constant for the _ID column name
+    UserDictionary.Words.WORD,   // Contract class constant for the word column name
+    UserDictionary.Words.LOCALE  // Contract class constant for the locale column name
+};
+
+// Defines a string to contain the selection clause
+String mSelectionClause = null;
+
+// Initializes an array to contain selection arguments
+String[] mSelectionArgs = {""};
+
+</pre>
+<p>
+    O próximo fragmento mostra como usar
+    {@link android.content.ContentResolver#query ContentResolver.query()} usando o Provedor de
+    Dicionário do Usuário como exemplo. Uma consulta cliente do provedor é similar a uma consulta SQL e contém um
+    conjunto de colunas para retornar, um conjunto de critérios de seleção e uma classificação ordenada.
+</p>
+<p>
+    O conjunto de colunas que a consulta deve retornar é chamado de <strong>projeção</strong>
+    (a variável <code>mProjection</code>).
+</p>
+<p>
+    A expressão que especifica as linhas a recuperar é dividida em uma cláusula de seleção
+    e em argumentos de seleção. A cláusula de seleção é uma combinação de expressões lógicas e booleanas
+    e nomes e valores de colunas (a variável <code>mSelectionClause</code>). Ao especificar
+    o parâmetro <code>?</code> substituível em vez de um valor, o método da consulta recupera o valor
+    da matriz de argumentos de seleção (a variável <code>mSelectionArgs</code>).
+</p>
+<p>
+    No próximo fragmento, se o usuário não inserir nenhuma palavra, a cláusula de seleção será definida como
+    <code>null</code> e a consulta retornará todas as palavras no provedor. Se o usuário inserir
+    uma palavra, a cláusula de seleção será definida como <code>UserDictionary.Words.WORD + " = ?"</code>
+    e o primeiro elemento da matriz de argumentos de seleção é definida como a palavra que o usuário inserir.
+</p>
+<pre class="prettyprint">
+/*
+ * This defines a one-element String array to contain the selection argument.
+ */
+String[] mSelectionArgs = {""};
+
+// Gets a word from the UI
+mSearchString = mSearchWord.getText().toString();
+
+// Remember to insert code here to check for invalid or malicious input.
+
+// If the word is the empty string, gets everything
+if (TextUtils.isEmpty(mSearchString)) {
+    // Setting the selection clause to null will return all words
+    mSelectionClause = null;
+    mSelectionArgs[0] = "";
+
+} else {
+    // Constructs a selection clause that matches the word that the user entered.
+    mSelectionClause = UserDictionary.Words.WORD + " = ?";
+
+    // Moves the user's input string to the selection arguments.
+    mSelectionArgs[0] = mSearchString;
+
+}
+
+// Does a query against the table and returns a Cursor object
+mCursor = getContentResolver().query(
+    UserDictionary.Words.CONTENT_URI,  // The content URI of the words table
+    mProjection,                       // The columns to return for each row
+    mSelectionClause                   // Either null, or the word the user entered
+    mSelectionArgs,                    // Either empty, or the string the user entered
+    mSortOrder);                       // The sort order for the returned rows
+
+// Some providers return null if an error occurs, others throw an exception
+if (null == mCursor) {
+    /*
+     * Insert code here to handle the error. Be sure not to use the cursor! You may want to
+     * call android.util.Log.e() to log this error.
+     *
+     */
+// If the Cursor is empty, the provider found no matches
+} else if (mCursor.getCount() &lt; 1) {
+
+    /*
+     * Insert code here to notify the user that the search was unsuccessful. This isn't necessarily
+     * an error. You may want to offer the user the option to insert a new row, or re-type the
+     * search term.
+     */
+
+} else {
+    // Insert code here to do something with the results
+
+}
+</pre>
+<p>
+    Essa consulta é análoga à declaração SQL:
+</p>
+<pre>
+SELECT _ID, word, locale FROM words WHERE word = &lt;userinput&gt; ORDER BY word ASC;
+</pre>
+<p>
+    Nesta declaração SQL, os nomes de coluna reais são usados no lugar de constantes de classes de contrato.
+</p>
+<h4 id="Injection">Proteção contra inserções mal-intencionadas</h4>
+<p>
+    Se os dados gerenciados pelo provedor de conteúdo estiverem em um banco de dados SQL, inclusive dados não confiáveis
+    externos nas declarações SQL brutas, existe a possibilidade de haver uma injeção de SQL.
+</p>
+<p>
+    Considere esta cláusula de seleção:
+</p>
+<pre>
+// Constructs a selection clause by concatenating the user's input to the column name
+String mSelectionClause =  "var = " + mUserInput;
+</pre>
+<p>
+    Se você fizer isso, estará permitindo que o usuário concatene SQL mal-intencionados na sua declaração SQL.
+    Por exemplo: o usuário poderia inserir "nada; REMOVER TABELA *;" para <code>mUserInput</code>, o que
+    resultaria na cláusula de seleção <code>var = nothing; DROP TABLE *;</code>. Como
+    a cláusula de seleção é tratada como uma declaração SQL, isso pode fazer com que o provedor apague todas
+    as tabelas no banco de dados SQLite em questão (a menos que o provedor esteja configurado para capturar
+    tentativas de <a href="http://en.wikipedia.org/wiki/SQL_injection">injeção de SQL</a>).
+</p>
+<p>
+    Para evitar este problema, use uma cláusula de seleção que use <code>?</code> como um parâmetro
+    substituível e uma matriz de argumentos de seleção separada. Ao fazer isso, a inserção de dados do usuário
+    limita-se diretamente à consulta em vez de ser interpretada como parte de uma declaração SQL.
+    Pelo fato de não ser tratada como SQL, a inserção de dados do usuário não injeta SQL mal-intencionados. Em vez de usar
+    a concatenação para incluir a inserção de dados do usuário, use esta cláusula de seleção:
+</p>
+<pre>
+// Constructs a selection clause with a replaceable parameter
+String mSelectionClause =  "var = ?";
+</pre>
+<p>
+    Configure a matriz de argumentos de seleção desta maneira:
+</p>
+<pre>
+// Defines an array to contain the selection arguments
+String[] selectionArgs = {""};
+</pre>
+<p>
+    Insira um valor na matriz de argumentos de seleção desta maneira:
+</p>
+<pre>
+// Sets the selection argument to the user's input
+selectionArgs[0] = mUserInput;
+</pre>
+<p>
+    Usar uma cláusula de seleção que use <code>?</code> como um parâmetro substituível e uma matriz
+    de argumentos de seleção é o melhor modo de especificar uma seleção, mesmo que o provedor se baseie
+    base em um banco de dados SQL.
+</p>
+<!-- Displaying the results -->
+<h3 id="DisplayResults">Exibição dos resultados da consulta</h3>
+<p>
+    O método cliente {@link android.content.ContentResolver#query ContentResolver.query()} sempre
+    retorna um {@link android.database.Cursor} contendo as colunas especificadas pela projeção
+    da consulta para as linhas que atendem aos critérios de seleção da consulta. 
+    Um objeto {@link android.database.Cursor} fornece acesso para leitura aleatório para as linhas e colunas que
+    contém. Usando métodos {@link android.database.Cursor}, é possível repetir as linhas
+    nos resultados, determinar o tipo dos dados de cada coluna, extrair os dados de uma coluna e examinar
+    outras propriedades dos resultados. Algumas implementações do {@link android.database.Cursor} atualizam o objeto
+    automaticamente quando os dados do provedor mudam ou acionam métodos em um objeto observador
+    quando o {@link android.database.Cursor} muda, ou ambos.
+</p>
+<p class="note">
+    <strong>Observação:</strong> os provedores podem restringir acesso a colunas com base na natureza
+    do objeto que realiza a consulta. Por exemplo: o Provedor de Contatos restringe o acesso de algumas colunas
+    a adaptadores de sincronização, por isso ela não os retornará a uma atividade ou serviço.
+</p>
+<p>
+    Se nenhuma linha atender aos critérios de seleção, o provedor
+    retorna um objeto {@link android.database.Cursor} para o qual
+    {@link android.database.Cursor#getCount Cursor.getCount()} é 0 (um cursor vazio).
+</p>
+<p>
+    Se ocorrer um erro interno, os resultados da consulta dependem do provedor determinado. Ele pode
+    escolher retornar <code>null</code> ou pode gerar uma {@link java.lang.Exception}.
+</p>
+<p>
+    Já que {@link android.database.Cursor} é uma "lista" de linhas, um bom modo de exibir
+    o conteúdo de um {@link android.database.Cursor} é vinculá-lo a uma {@link android.widget.ListView}
+    por meio de um {@link android.widget.SimpleCursorAdapter}.
+</p>
+<p>
+    O fragmento a seguir continua o código do fragmento anterior. Ele cria
+    um objeto {@link android.widget.SimpleCursorAdapter} contendo o {@link android.database.Cursor}
+    recuperado pela consulta e configura esse objeto para ser o adaptador de uma
+    {@link android.widget.ListView}:
+</p>
+<pre class="prettyprint">
+// Defines a list of columns to retrieve from the Cursor and load into an output row
+String[] mWordListColumns =
+{
+    UserDictionary.Words.WORD,   // Contract class constant containing the word column name
+    UserDictionary.Words.LOCALE  // Contract class constant containing the locale column name
+};
+
+// Defines a list of View IDs that will receive the Cursor columns for each row
+int[] mWordListItems = { R.id.dictWord, R.id.locale};
+
+// Creates a new SimpleCursorAdapter
+mCursorAdapter = new SimpleCursorAdapter(
+    getApplicationContext(),               // The application's Context object
+    R.layout.wordlistrow,                  // A layout in XML for one row in the ListView
+    mCursor,                               // The result from the query
+    mWordListColumns,                      // A string array of column names in the cursor
+    mWordListItems,                        // An integer array of view IDs in the row layout
+    0);                                    // Flags (usually none are needed)
+
+// Sets the adapter for the ListView
+mWordList.setAdapter(mCursorAdapter);
+</pre>
+<p class="note">
+    <strong>Observação:</strong> para retornar uma {@link android.widget.ListView} com um
+    {@link android.database.Cursor}, o cursor deve conter uma coluna chamada <code>_ID</code>.
+    Por isso, a consulta exibida anteriormente recupera a coluna <code>_ID</code> da
+    tabelas de "palavras", mesmo que a {@link android.widget.ListView} não a exiba.
+    Essa restrição também explica por que a maioria dos provedores tem uma coluna <code>_ID</code> para cada
+    tabela.
+</p>
+
+        <!-- Getting data from query results -->
+<h3 id="GettingResults">Obtenção de dados de resultados da consulta</h3>
+<p>
+    Em vez de simplesmente exibir resultados da consulta, é possível usá-los para outras tarefas. Por
+    exemplo: é possível recuperar grafias de um dicionário do usuário e, em seguida, procurá-los
+    em outros provedores. Para isso, repetem-se as linhas no {@link android.database.Cursor}:
+</p>
+<pre class="prettyprint">
+
+// Determine the column index of the column named "word"
+int index = mCursor.getColumnIndex(UserDictionary.Words.WORD);
+
+/*
+ * Only executes if the cursor is valid. The User Dictionary Provider returns null if
+ * an internal error occurs. Other providers may throw an Exception instead of returning null.
+ */
+
+if (mCursor != null) {
+    /*
+     * Moves to the next row in the cursor. Before the first movement in the cursor, the
+     * "row pointer" is -1, and if you try to retrieve data at that position you will get an
+     * exception.
+     */
+    while (mCursor.moveToNext()) {
+
+        // Gets the value from the column.
+        newWord = mCursor.getString(index);
+
+        // Insert code here to process the retrieved word.
+
+        ...
+
+        // end of while loop
+    }
+} else {
+
+    // Insert code here to report an error if the cursor is null or the provider threw an exception.
+}
+</pre>
+<p>
+    As implementações {@link android.database.Cursor} contêm diversos métodos "get" (obter)
+    para recuperar diferentes tipos de dados do objeto. Por exemplo, o fragmento anterior
+    usa {@link android.database.Cursor#getString getString()}. Elas também têm
+    um método {@link android.database.Cursor#getType getType()} que retorna um valor indicando
+    o tipo dos dados da coluna.
+</p>
+
+
+    <!-- Requesting permissions -->
+<h2 id="Permissions">Permissões do provedor de conteúdo</h2>
+<p>
+    Um aplicativo do provedor pode especificar permissões que outros aplicativos devem ter para
+    acessar os dados do provedor. Essas permissões garantem que o usuário saiba quais dados
+    um aplicativo tentará acessar. Com base nos requisitos do provedor, outros aplicativos
+    solicitam as permissões de que precisam para acessar o provedor. Usuários finais veem as permissões
+    solicitadas quando instalam o aplicativo.
+</p>
+<p>
+    Se um aplicativo do provedor não especificar nenhuma permissão, outros aplicativos não terão
+    acesso aos dados do provedor. No entanto, os componentes no aplicativo do provedor sempre têm
+    acesso total para leitura e gravação, independentemente das permissões especificadas.
+</p>
+<p>
+    Como observado anteriormente, o Provedor de Dicionário do Usuário requer
+    a permissão <code>android.permission.READ_USER_DICTIONARY</code> para recuperar dados dele.
+    O provedor tem a permissão <code>android.permission.WRITE_USER_DICTIONARY</code>
+    separadamente para inserção, atualização ou exclusão de dados.
+</p>
+<p>
+    Para obter as permissões necessárias para acessar um provedor, um aplicativo as solicita
+como um elemento <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+    no arquivo de manifesto. Quando o Android Package Manager (gerente de pacotes do Android) instala o aplicativo, o usuário
+    precisa aprovar todas as permissões que o aplicativo solicita. Se o usuário aprovar todas elas,
+    o gerente de pacotes continua a instalação; se o usuário não as aprovar, o gerente de pacotes
+    aborta a instalação.
+</p>
+<p>
+    O elemento
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> a seguir
+     solicita acesso para leitura ao Provedor de Dicionário do Usuário:
+</p>
+<pre>
+    &lt;uses-permission android:name="android.permission.READ_USER_DICTIONARY"&gt;
+</pre>
+<p>
+    O impacto das permissões no acesso ao provedor é explicado com mais detalhes
+    no guia <a href="{@docRoot}guide/topics/security/security.html">Permissões e segurança</a>.
+</p>
+
+
+<!-- Inserting, Updating, and Deleting Data -->
+<h2 id="Modifications">Inserção, atualização e exclusão de dados</h2>
+<p>
+    Do mesmo modo que se recupera dados de um provedor, também usa-se a interação entre
+    um cliente do provedor e o {@link android.content.ContentProvider} do provedor para modificar dados.
+    Chama-se um método de {@link android.content.ContentResolver} com argumentos que são passados para
+    o método correspondente de {@link android.content.ContentProvider}. O provedor e o cliente
+    do provedor tratam automaticamente da segurança e da comunicação de processos internos.
+</p>
+<h3 id="Inserting">Inserção de dados</h3>
+<p>
+    Para inserir dados em um provedor, chame
+    o método
+{@link android.content.ContentResolver#insert ContentResolver.insert()}. Esse método insere uma nova linha no provedor e retorna uma URI de conteúdo dessa linha.
+    Este fragmento mostra como inserir uma nova palavra no Provedor de Dicionário do Usuário:
+</p>
+<pre class="prettyprint">
+// Defines a new Uri object that receives the result of the insertion
+Uri mNewUri;
+
+...
+
+// Defines an object to contain the new values to insert
+ContentValues mNewValues = new ContentValues();
+
+/*
+ * Sets the values of each column and inserts the word. The arguments to the "put"
+ * method are "column name" and "value"
+ */
+mNewValues.put(UserDictionary.Words.APP_ID, "example.user");
+mNewValues.put(UserDictionary.Words.LOCALE, "en_US");
+mNewValues.put(UserDictionary.Words.WORD, "insert");
+mNewValues.put(UserDictionary.Words.FREQUENCY, "100");
+
+mNewUri = getContentResolver().insert(
+    UserDictionary.Word.CONTENT_URI,   // the user dictionary content URI
+    mNewValues                          // the values to insert
+);
+</pre>
+<p>
+    Os dados da nova linha vão para um objeto {@link android.content.ContentValues} único, que
+    tem forma semelhante a um cursor de uma linha. As colunas nesse objeto não precisam ter
+    o mesmo tipo de dados e, se você não quiser especificar um valor, pode definir uma coluna
+    como <code>null</code> usando {@link android.content.ContentValues#putNull ContentValues.putNull()}.
+</p>
+<p>
+    O fragmento não adiciona a coluna <code>_ID</code> porque essa coluna é mantida
+    automaticamente. O provedor atribui um valor exclusivo de <code>_ID</code> para cada linha
+    adicionada. Os provedores normalmente usam esse valor como a chave principal da tabela.
+</p>
+<p>
+    A URI de conteúdo retornada em <code>newUri</code> identifica a linha recentemente adicionada com
+    o seguinte formato:
+</p>
+<pre>
+content://user_dictionary/words/&lt;id_value&gt;
+</pre>
+<p>
+    O <code>&lt;id_value&gt;</code> é o conteúdo de <code>_ID</code> da nova linha.
+    A maioria dos provedores pode detectar essa forma de URI de conteúdo automaticamente e, em seguida, realizar a operação
+    solicitada naquela linha.
+</p>
+<p>
+    Para obter o valor de <code>_ID</code> do {@link android.net.Uri} retornado, chame
+    {@link android.content.ContentUris#parseId ContentUris.parseId()}.
+</p>
+<h3 id="Updating">Atualização de dados</h3>
+<p>
+    Para atualizar uma linha, use um objeto {@link android.content.ContentValues} com os valores
+    e os critérios de seleção atualizados, como se faz com uma inserção e em uma consulta, respectivamente.
+    O método cliente usado é
+    {@link android.content.ContentResolver#update ContentResolver.update()}. Só é necessário adicionar
+    valores ao objeto {@link android.content.ContentValues} das colunas que forem atualizadas. Se você
+    deseja apagar o conteúdo de uma coluna, defina o valor como <code>null</code>.
+</p>
+<p>
+    O fragmento a seguir altera todas as linhas cuja localidade tem o idioma "en" para
+    terem uma localidade de <code>null</code>. O valor de retorno é o número de linhas que foram atualizadas:
+</p>
+<pre>
+// Defines an object to contain the updated values
+ContentValues mUpdateValues = new ContentValues();
+
+// Defines selection criteria for the rows you want to update
+String mSelectionClause = UserDictionary.Words.LOCALE +  "LIKE ?";
+String[] mSelectionArgs = {"en_%"};
+
+// Defines a variable to contain the number of updated rows
+int mRowsUpdated = 0;
+
+...
+
+/*
+ * Sets the updated value and updates the selected words.
+ */
+mUpdateValues.putNull(UserDictionary.Words.LOCALE);
+
+mRowsUpdated = getContentResolver().update(
+    UserDictionary.Words.CONTENT_URI,   // the user dictionary content URI
+    mUpdateValues                       // the columns to update
+    mSelectionClause                    // the column to select on
+    mSelectionArgs                      // the value to compare to
+);
+</pre>
+<p>
+    Você também deve filtrar a inserção de dados do usuário ao chamar
+    {@link android.content.ContentResolver#update ContentResolver.update()}. Para saber mais sobre
+    isso, leia a seção <a href="#Injection">Proteção contra inserções mal-intencionadas</a>.
+</p>
+<h3 id="Deleting">Exclusão de dados</h3>
+<p>
+    Excluir linhas é semelhante a recuperar dados de linhas: especificam-se critérios de seleção para as linhas
+    que se deseja excluir e o método cliente retorna o número de linhas excluídas.
+    O fragmento a seguir exclui linhas cujo appid (id do aplicativo) corresponda a "usuário". O método retorna
+    o número de linhas excluídas.
+</p>
+<pre>
+
+// Defines selection criteria for the rows you want to delete
+String mSelectionClause = UserDictionary.Words.APP_ID + " LIKE ?";
+String[] mSelectionArgs = {"user"};
+
+// Defines a variable to contain the number of rows deleted
+int mRowsDeleted = 0;
+
+...
+
+// Deletes the words that match the selection criteria
+mRowsDeleted = getContentResolver().delete(
+    UserDictionary.Words.CONTENT_URI,   // the user dictionary content URI
+    mSelectionClause                    // the column to select on
+    mSelectionArgs                      // the value to compare to
+);
+</pre>
+<p>
+    Também se deve filtrar a inserção de dados do usuário ao chamar
+    {@link android.content.ContentResolver#delete ContentResolver.delete()}. Para saber mais sobre
+    isso, leia a seção <a href="#Injection">Proteção contra inserções mal-intencionadas</a>.
+</p>
+<!-- Provider Data Types -->
+<h2 id="DataTypes">Tipos de dados do provedor</h2>
+<p>
+    Provedores de conteúdo podem oferecer muitos tipos de dados diferentes. O Provedor de Dicionário do Usuário oferece somente
+    texto, mas provedores também podem oferecer os seguintes formatos:
+</p>
+    <ul>
+        <li>
+            número inteiro
+        </li>
+        <li>
+            número inteiro longo (longo)
+        </li>
+        <li>
+            ponto flutuante
+        </li>
+        <li>
+            ponto flutuante longo (duplo)
+        </li>
+    </ul>
+<p>
+    Outros tipos de dados que provedores usam com frequência são objetos binários largos (BLOB) implementados como uma
+    matriz de byte de 64 kB. É possível ver os tipos de dados disponíveis consultando
+    os métodos "get" da classe {@link android.database.Cursor}.
+</p>
+<p>
+    O tipo dos dados para cada coluna em um provedor normalmente é listado na documentação do provedor.
+    Os tipos de dados do Provedor de Dicionário do Usuário são listados na documentação de referência
+    para sua classe de contrato {@link android.provider.UserDictionary.Words} (classes de contrato são
+    descritas na seção <a href="#ContractClasses">Classes de contrato</a>).
+    Também é possível determinar o tipo dos dados chamando {@link android.database.Cursor#getType
+    Cursor.getType()}.
+</p>
+<p>
+    Os provedores também mantêm informações do tipo MIME de dados para cada URI de conteúdo que definem. É possível
+    usar as informações do tipo MIME para descobrir se o aplicativo pode tratar de dados que
+    o provedor fornece ou para escolher um tipo de tratamento com base no tipo MIME. Normalmente é necessário ter
+    o tipo MIME ao trabalhar com um provedor que contenha estruturas
+    complexas de dados ou arquivos. Por exemplo: a tabela {@link android.provider.ContactsContract.Data}
+    no Provedor de contatos usa tipos MIME para etiquetar o tipo dos dados de contato armazenados em cada
+    linha. Para obter o tipo MIME correspondente a uma URI de conteúdo, chame
+    {@link android.content.ContentResolver#getType ContentResolver.getType()}.
+</p>
+<p>
+    A seção <a href="#MIMETypeReference">Referência de tipo MIME</a> descreve
+    a sintaxe de tipos MIME padrão e personalizados.
+</p>
+
+
+<!-- Alternative Forms of Provider Access -->
+<h2 id="AltForms">Formas alternativas de acessar o provedor</h2>
+<p>
+    Três formas alternativas de acesso ao provedor são importantes no desenvolvimento do aplicativo:
+</p>
+<ul>
+    <li>
+        <a href="#Batch">Acesso em lote</a>: É possível criar um lote de chamadas de acesso com métodos na
+        classe {@link android.content.ContentProviderOperation} e, em seguida, aplicá-los com
+        {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}.
+    </li>
+    <li>
+        Consultas assíncronas: Devem-se realizar consultas em um encadeamento separado. Um modo de fazer isso é
+        usar um objeto {@link android.content.CursorLoader}. Os exemplos
+        no guia <a href="{@docRoot}guide/components/loaders.html">Carregadores</a> demonstram
+        como fazer isso.
+    </li>
+    <li>
+        <a href="#Intents">Acesso a dados via intenções</a> Embora não seja possível enviar uma intenção
+        diretamente a um provedor, é possível enviar uma intenção ao aplicativo do provedor, que
+        normalmente é o recomendável para modificar os dados do provedor.
+    </li>
+</ul>
+<p>
+    O acesso em lote e a modificação via intenções são descritos nas seções a seguir.
+</p>
+<h3 id="Batch">Acesso em lote</h3>
+<p>
+    O acesso em lote a um provedor é útil para inserir uma grande quantidade de linhas ou para inserir
+    linhas em diversas tabelas na mesma chamada de método ou, em geral, para realizar um conjunto de
+    operações dentre limites de processo como uma transação (uma operação atômica).
+</p>
+<p>
+    Para acessar um provedor em "modo de lote",
+    cria-se uma matriz de objetos {@link android.content.ContentProviderOperation} e, em seguida,
+    envia-os a um provedor de conteúdo com
+    {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}. Confere-se a 
+    <em>autoridade</em> do provedor de conteúdo para esse método em vez de para uma URI de conteúdo específica.
+    Isso permite que cada objeto {@link android.content.ContentProviderOperation} na matriz trabalhe
+    com uma tabela diferente. Chamar {@link android.content.ContentResolver#applyBatch
+    ContentResolver.applyBatch()} retorna uma matriz de resultados.
+</p>
+<p>
+    A descrição da classe de contrato {@link android.provider.ContactsContract.RawContacts}
+    contém um fragmento de código que demonstra a inserção em lote. 
+O aplicativo de exemplo do <a href="{@docRoot}resources/samples/ContactManager/index.html">Gerente de contato</a>
+    contém um exemplo de acesso em lote em seu
+    arquivo de origem <code>ContactAdder.java</code>.
+</p>
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>Exibição de dados usando um aplicativo auxiliar</h2>
+<p>
+    Se o seu aplicativo <em>tem</em> permissões de acesso, ainda é possível usar
+    uma intenção para exibir dados em outro aplicativo. Por exemplo: o aplicativo Agenda aceita
+    uma intenção {@link android.content.Intent#ACTION_VIEW} que exibe uma data ou evento específico.
+    Isso permite a exibição de informações da agenda sem precisar criar a própria IU.
+    Para saber mais sobre esse recurso, consulte
+    o guia <a href="{@docRoot}guide/topics/providers/calendar-provider.html">Provedor de agenda</a>.
+</p>
+<p>
+    O aplicativo para o qual você enviou uma intenção não precisa ser o aplicativo
+    associado ao provedor. Por exemplo: você pode recuperar um contato
+    do Provedor de Contatos e, em seguida, enviar uma intenção {@link android.content.Intent#ACTION_VIEW}
+    que contém a URI de conteúdo da imagem do contato para um visualizador de imagens.
+</p>
+</div>
+</div>
+<h3 id="Intents">Acesso a dados via intenções</h3>
+<p>
+    Intenções podem fornecer acesso indireto a um provedor de conteúdo. Basta permitir que o usuário acesse
+    dados em um provedor mesmo se o aplicativo não tiver permissões de acesso, tanto
+    retornando uma intenção de resultado de um aplicativo que tem permissões quanto ativando
+    um aplicativo que tem permissões e permitindo que o usuário trabalhe nele.
+</p>
+<h4>Obtenção de acesso com permissões temporárias</h4>
+<p>
+    É possível acessar dados em um provedor de conteúdo, mesmo sem s permissões
+    de acesso adequadas. Basta enviar uma intenção a um aplicativo que tenha as permissões e
+    receber de volta uma intenção de resultado contendo permissões da "URI".
+    Essas são permissões para uma URI de conteúdo específica que duram enquanto durar a atividade
+    que as recebeu. O aplicativo que tem permissões permanentes concedem permissões
+    temporárias ativando um sinalizador na intenção de resultado:
+</p>
+<ul>
+    <li>
+        <strong>Permissão de leitura:</strong>
+        {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}
+    </li>
+    <li>
+        <strong>Permissão de gravação:</strong>
+        {@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}
+    </li>
+</ul>
+<p class="note">
+    <strong>Observação:</strong> esses sinalizadores não fornecem acesso geral de leitura ou gravação ao provedor
+    cuja autoridade esteja contida na URI de conteúdo. O acesso destina-se somente à URI.
+</p>
+<p>
+    Um provedor define permissões de URI para URIs de conteúdo no manifesto usando o atributo
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">android:grantUriPermission</a></code>
+    do elemento
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>,
+    bem como o elemento filho
+<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
+    do elemento
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+. O mecanismo das permissões de URI é explicado com mais detalhes
+    no guia <a href="{@docRoot}guide/topics/security/security.html">Permissões e segurança</a>,
+    na seção "Permissões da URI".
+</p>
+<p>
+    Por exemplo: é possível recuperar dados de um contato no Provedor de Contatos, mesmo sem
+    a permissão {@link android.Manifest.permission#READ_CONTACTS}. Você pode desejar fazer
+    isso em um aplicativo que envie e-mails de parabenização a um contato no aniversário dele. Em vez de
+    solicitar {@link android.Manifest.permission#READ_CONTACTS}, que fornece acesso a todos
+    os contatos do usuário e suas informações, é preferível deixar que o usuário controle quais
+    contatos serão usados pelo seu aplicativo. Para isso, use o processo a seguir:
+</p>
+<ol>
+    <li>
+        O aplicativo envia uma intenção contendo a ação
+    {@link android.content.Intent#ACTION_PICK} e o tipo MIME
+    {@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE} dos "contatos" usando
+    o método {@link android.app.Activity#startActivityForResult
+        startActivityForResult()}.
+    </li>
+    <li>
+        Como essa intenção corresponde ao filtro de intenções da
+        atividade de "seleção" do aplicativo Pessoas, a atividade ficará em primeiro plano.
+    </li>
+    <li>
+        Na atividade de seleção, o usuário seleciona
+        um contato para atualizar. Quando isso acontece, a atividade de seleção chama
+        {@link android.app.Activity#setResult setResult(resultcode, intent)}
+        para configurar uma intenção para retornar ao aplicativo. A intenção contém a URI de conteúdo
+        do contato que o usuário selecionou e os sinalizadores "extras"
+        {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}. Esses sinalizadores concedem
+        permissão de URI para que o aplicativo leia dados do contato apontados pela
+        URI de conteúdo. A atividade de seleção, em seguida, chama {@link android.app.Activity#finish()} para
+        retornar o controle para o aplicativo.
+    </li>
+    <li>
+        A atividade volta ao primeiro plano e o sistema chama o
+        método {@link android.app.Activity#onActivityResult onActivityResult()}
+        da sua atividade. Esse método recebe a intenção de resultado criada pela atividade de seleção
+        no aplicativo Pessoas.
+    </li>
+    <li>
+        Com a URI de conteúdo da intenção de resultado, é possível ler os dados do contato
+        a partir do Provedor de Contatos, mesmo que não tenha solicitado permissão permanente de acesso a leitura
+        para o provedor no manifesto. Pode-se, então, pode obter as informações de data de nascimento do contato
+        ou seu endereço de e-mail e, assim, enviar um e-mail de parabenização.
+    </li>
+</ol>
+<h4>Uso de outro aplicativo</h4>
+<p>
+    Um modo simples que permite ao usuário modificar dados para os quais você não tem permissões de acesso é
+    ativar um aplicativo que tenha permissões e deixar o usuário fazer o resto.
+</p>
+<p>
+    Por exemplo: o aplicativo Agenda aceita uma
+    intenção {@link android.content.Intent#ACTION_INSERT} que permite a ativação da
+    IU de inserção do aplicativo. Você pode passar dados "extras" nessa intenção que o aplicativo
+    usa para "pré-preencher" a IU. como os eventos recorrentes têm sintaxe complexa, o modo
+    recomendado de inserir eventos no Provedor de Agenda é ativar o aplicativo Agenda com um
+    {@link android.content.Intent#ACTION_INSERT} e, em seguida, deixar o usuário inserir o evento.
+</p>
+<!-- Contract Classes -->
+<h2 id="ContractClasses">Classes de contrato</h2>
+<p>
+    As classes de contrato definem constantes que ajudam os aplicativos a trabalhar com URIs de conteúdo, nomes
+    de colunas, ações de intenções e outros recursos de um provedor de conteúdo. Elas não estão
+    automaticamente inclusas em um provedor; o desenvolvedor do provedor deve defini-las e
+    disponibilizá-las a outros desenvolvedores. Muitos dos provedores incluídos na plataforma
+    do Android têm classes de contrato correspondentes no pacote {@link android.provider}.
+</p>
+<p>
+    Por exemplo: o Provedor de Dicionário do Usuário tem uma classe de contrato
+    {@link android.provider.UserDictionary} que contém constantes de URI de conteúdo e de nome de coluna. 
+    A URI de conteúdo da tabela de "palavras" é definida na constante
+    {@link android.provider.UserDictionary.Words#CONTENT_URI UserDictionary.Words.CONTENT_URI}.
+    A classe {@link android.provider.UserDictionary.Words} também contém constantes de nome de coluna
+    que são usadas nos fragmentos de exemplo neste guia. Por exemplo, uma projeção de consulta pode ser
+    definida como:
+</p>
+<pre>
+String[] mProjection =
+{
+    UserDictionary.Words._ID,
+    UserDictionary.Words.WORD,
+    UserDictionary.Words.LOCALE
+};
+</pre>
+<p>
+    Outra classe de contrato é {@link android.provider.ContactsContract} para o Provedor de Contatos.
+    A documentação de referência desta classe contém fragmentos de código de exemplo. Uma das suas
+    subclasses, {@link android.provider.ContactsContract.Intents.Insert}, é uma classe
+    de contrato que contém constantes para intenções e dados da intenção.
+</p>
+
+
+<!-- MIME Type Reference -->
+<h2 id="MIMETypeReference">Referência do tipo MIME</h2>
+<p>
+    Provedores de conteúdo podem retornar tipos MIME de mídia, strings de tipos MIME personalizados ou ambos.
+</p>
+<p>
+    Tipos MIME têm o formato
+</p>
+<pre>
+<em>type</em>/<em>subtype</em>
+</pre>
+<p>
+    Por exemplo: o tipo MIME <code>text/html</code> conhecido tem o tipo <code>text</code>
+    e o subtipo <code>html</code>. Se o provedor retornar esse tipo para uma URI,
+    uma consulta usando essa URI retornará um texto que contém tags HTML.
+</p>
+<p>
+    Strings de tipo MIME personalizado, também chamadas de tipos MIME "específicos do fornecedor" (vendor-specific), têm mais
+    valores de <em>tipo</em> e <em>subtipo</em> complexos. O valor de <em>tipo</em> é sempre
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>
+</pre>
+<p>
+    para diversas linhas ou
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>
+</pre>
+<p>
+    para uma única linha.
+</p>
+<p>
+    O <em>subtipo</em> é específico do provedor. Os provedores embutidos do Android normalmente têm um subtipo
+    simples. Por exemplo, quando o aplicativo de contatos cria uma linha para um número de telefone,
+    ele configura o seguinte tipo MIME na linha:
+</p>
+<pre>
+vnd.android.cursor.item/phone_v2
+</pre>
+<p>
+    Observe que o valor do subtipo é simplesmente <code>phone_v2</code>.
+</p>
+<p>
+    Outros desenvolvedores de provedor podem criar os próprios padrões de subtipos com base
+    na autoridade do provedor e nos nomes da tabela. Por exemplo: considere um provedor que contenha horários de trens.
+    A autoridade do provedor é <code>com.example.trains</code> e ele contém as tabelas
+    Linha1, Linha2 e Linha3. Em resposta à URI de conteúdo
+</p>
+<p>
+<pre>
+content://com.example.trains/Line1
+</pre>
+<p>
+    para a tabela Linha1, o provedor retorna o tipo MIME
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>/vnd.example.line1
+</pre>
+<p>
+     Em resposta à URI de conteúdo
+</p>
+<pre>
+content://com.example.trains/Line2/5
+</pre>
+<p>
+    da linha 5 na tabela Linha2, o provedor retorna o tipo MIME
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>/vnd.example.line2
+</pre>
+<p>
+    A maioria dos provedores define constantes de classe de contrato para os tipos MIME que usam. 
+    A classe de contrato {@link android.provider.ContactsContract.RawContacts} do Provedor de Contatos,
+    por exemplo, define a constante
+    {@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE} para o tipo MIME
+    de uma linha exclusiva do contato bruto.
+</p>
+<p>
+    URIs de conteúdo de linhas exclusivas são descritas na seção
+    <a href="#ContentURIs">URIs de conteúdo</a>.
+</p>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/providers/content-provider-creating.jd b/docs/html-intl/intl/pt-br/guide/topics/providers/content-provider-creating.jd
new file mode 100644
index 0000000..11ad4c3
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/providers/content-provider-creating.jd
@@ -0,0 +1,1214 @@
+page.title=Criação de um Provedor de Conteúdo
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+
+<h2>Neste documento</h2>
+<ol>
+    <li>
+        <a href="#DataStorage">Projeto de armazenamento de dados</a>
+    </li>
+    <li>
+        <a href="#ContentURI">Projeto de URIs de conteúdo</a>
+    </li>
+    <li>
+        <a href="#ContentProvider">Implementação da classe ContentProvider</a>
+        <ol>
+            <li>
+                <a href="#RequiredAccess">Métodos obrigatórios</a>
+            </li>
+            <li>
+                <a href="#Query">Implementação do método query()</a>
+            </li>
+            <li>
+                <a href="#Insert">Implementação do método insert()</a>
+            </li>
+            <li>
+                <a href="#Delete">Implementação do método delete()</a>
+            </li>
+            <li>
+                <a href="#Update">Implementação do método update()</a>
+            </li>
+            <li>
+                <a href="#OnCreate">Implementação do método onCreate()</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#MIMETypes">Implementação de tipos MIME do Provedor de Conteúdo</a>
+        <ol>
+            <li>
+                <a href="#TableMIMETypes">Tipos MIME para tabelas</a>
+            </li>
+            <li>
+                <a href="#FileMIMETypes">Tipos MIME para arquivos</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#ContractClass">Implementação de uma classe de contrato</a>
+    </li>
+    <li>
+        <a href="#Permissions">Implementação de permissões do Provedor de Conteúdo</a>
+    </li>
+    <li>
+        <a href="#ProviderElement">O elemento &lt;provider&gt;</a>
+    </li>
+    <li>
+        <a href="#Intents">Intenções e acesso a dados</a>
+    </li>
+</ol>
+<h2>Classes principais</h2>
+    <ol>
+        <li>
+            {@link android.content.ContentProvider}
+        </li>
+        <li>
+            {@link android.database.Cursor}
+        </li>
+        <li>
+            {@link android.net.Uri}
+        </li>
+    </ol>
+<h2>Exemplos relacionados</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}resources/samples/NotePad/index.html">
+                Aplicativo de exemplo do Bloco de Notas
+            </a>
+        </li>
+    </ol>
+<h2>Veja também</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+            Preceitos do provedor de conteúdo</a>
+        </li>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+            Provedor de agenda</a>
+        </li>
+    </ol>
+</div>
+</div>
+
+
+<p>
+    O provedor de conteúdo gerencia o acesso a um repositório central de dados. Implementa-se
+    um provedor como uma ou mais classes em um aplicativo do Android, em conjunto com elementos
+    no arquivo de manifesto. Uma das classes implementa uma subclasse
+    {@link android.content.ContentProvider}, que é a interface entre o provedor
+    e outros aplicativos. Embora provedores de conteúdo se destinem a disponibilizar dados a outros
+    aplicativos, naturalmente é possível ter atividades no aplicativo que permitam ao usuário
+    consultar e modificar os dados gerenciados pelo provedor.
+</p>
+<p>
+    O restante deste tópico é uma lista básica de etapas para a criação de um provedor de conteúdo e uma lista
+    de APIs para usar.
+</p>
+
+
+<!-- Before You Start Building -->
+<h2 id="BeforeYouStart">Antes de começar a criar</h2>
+<p>
+    Antes de começar a criar um provedor, faça o seguinte:
+</p>
+<ol>
+    <li>
+        <strong>Avalie se você precisa de um provedor de conteúdo</strong>. É necessário criar um provedor
+        de conteúdo para fornecer um ou mais dos recursos a seguir:
+        <ul>
+            <li>Oferecer dados ou arquivos complexos a outros aplicativos.</li>
+            <li>Permitir que usuários copiem dados complexos do seu aplicativo para outros aplicativos.</li>
+            <li>Fornecer sugestões de pesquisa personalizada usando a estrutura de pesquisa.</li>
+        </ul>
+    <p>
+        <em>Não</em> é necessário um provedor para usar um banco de dados SQLite se o uso for inteiramente dentro
+        do próprio aplicativo.
+    </p>
+    </li>
+    <li>
+        Se você ainda não tiver feito isso, leia o tópico
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        Preceitos do provedor de conteúdo</a> para saber mais sobre provedores.
+    </li>
+</ol>
+<p>
+    A seguir, siga estas etapas para criar seu provedor:
+</p>
+<ol>
+    <li>
+        Projete o armazenamento bruto dos dados. Os provedores de conteúdo oferecem dados de duas maneiras:
+        <dl>
+            <dt>
+                Dados de arquivo
+            </dt>
+            <dd>
+                Dados que normalmente transitam em arquivos, como
+                fotos, áudio ou vídeos. Armazene os arquivos no espaço privado
+                do seu aplicativo. Em resposta a uma solicitação de um arquivo por outro aplicativo,
+                o provedor pode oferecer um identificador para o arquivo.
+            </dd>
+            <dt>
+                Dados "estruturados"
+            </dt>
+            <dd>
+                Dados que normalmente transitam em um banco de dados, uma matriz ou estrutura similar.
+                Armazene os dados de forma compatível com tabelas de linhas e colunas. Cada linha
+                representa uma entidade, como uma pessoa ou um item em um inventário. Cada coluna representa
+                alguns dados da entidade, como o nome da pessoa ou o preço do item. Um modo comum de
+                armazenar esse tipo de dados é em um banco de dados SQLite, mas é possível usar qualquer tipo
+                de armazenamento persistente. Para saber mais sobre os tipos de armazenamento disponíveis
+                no sistema Android, consulte a seção <a href="#DataStorage">
+Projeto de armazenamento de dados</a>.
+            </dd>
+        </dl>
+    </li>
+    <li>
+        Defina uma implementação sólida da classe {@link android.content.ContentProvider}
+        e seus métodos obrigatórios. Essa classe é a interface entre seus dados e o restante
+        do sistema Android. Para obter mais informações sobre essa classe, consulte a seção
+        <a href="#ContentProvider">Implementação da classe ContentProvider</a>.
+    </li>
+    <li>
+        Defina a string de autoridade do provedor, suas URIs de conteúdo e seus nomes de coluna. Se você deseja que
+        o aplicativo do provedor trate de intenções, defina também ações de intenção, dados extras
+        e sinalizadores. Também defina as permissões necessárias para aplicativos que queiram
+        acessar seus dados. Deve-se considerar definir todos esses valores como constantes
+        em uma classe de contrato separada; posteriormente, será possível expor essa classe a outros desenvolvedores. Para
+        obter mais informações sobre URIs de conteúdo, consulte
+        a seção <a href="#ContentURI">Projeto de URIs de conteúdo</a>.
+        Para obter mais informações sobre intenções, consulte
+        a seção <a href="#Intents">Intenções e acesso a dados</a>.
+    </li>
+    <li>
+        Adicione outras partes opcionais, como dados de exemplo ou uma implementação
+        de {@link android.content.AbstractThreadedSyncAdapter} que possa sincronizar dados entre
+        o provedor e os dados com base em nuvem.
+    </li>
+</ol>
+
+
+<!-- Designing Data Storage -->
+<h2 id="DataStorage">Projeto de armazenamento de dados</h2>
+<p>
+    Os provedores de conteúdo são a interface para dados salvos em um formato estruturado. Antes de criar
+    a interface, é preciso decidir como armazenar os dados. É possível armazená-los da forma que
+    quiser e, em seguida, projetar a interface para ler e gravar os dados conforme o necessário.
+</p>
+<p>
+    Essas são algumas das tecnologias de armazenamento de dados disponíveis no Android:
+</p>
+<ul>
+    <li>
+        O sistema Android contém uma API de banco de dados SQLite que os provedores do Android usam
+    para armazenar dados orientados a tabela. 
+        A classe {@link android.database.sqlite.SQLiteOpenHelper} ajuda a criar bancos de dados
+        e a classe {@link android.database.sqlite.SQLiteDatabase} é a classe de base para acessar
+        banco de dados.
+        <p>
+            Lembre-se de que não é necessário usar nenhum banco de dados para implementar o repositório. Um provedor
+            aparece externamente como um conjunto de tabelas, semelhante a um banco de dados relacional, mas isso não
+            é um requisito para a implementação interna do provedor.
+        </p>
+    </li>
+    <li>
+        Para armazenar dados de arquivos, o Android tem diversas APIs orientadas a arquivo.
+        Para saber mais sobre armazenamento de arquivos, leia o tópico
+        <a href="{@docRoot}guide/topics/data/data-storage.html">Armazenamento de dados</a>. Se você estiver
+        projetando um provedor que oferece dados relacionados a mídia como música ou vídeos, é possível
+        ter um provedor que combine dados de tabela e de arquivos.
+    </li>
+    <li>
+        Para trabalhar com dados com base em rede, use classes em {@link java.net}
+        e em {@link android.net}. É possível, também, sincronizar dados com base em rede com uma armazenagem
+        local de dados, como um banco de dados e, em seguida, fornecer os dados na forma de tabelas ou arquivos.
+        O exemplo de aplicativo <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+        Exemplo de adaptador de sincronização</a>  demonstra o tipo de sincronização.
+    </li>
+</ul>
+<h3 id="DataDesign">
+    Considerações para projetar dados
+</h3>
+<p>
+    A seguir há algumas dicas para projetar a estrutura de dados do seu provedor:
+</p>
+<ul>
+    <li>
+        Os dados de tabela sempre devem ter uma coluna de "chave principal" que o provedor mantém
+        como um valor numérico exclusivo para cada linha. É possível usar esse valor para vincular a linha a linhas
+        relacionadas em outras tabelas (usando-o como uma "chave externa"). Embora seja possível usar qualquer nome
+        para essa coluna, é melhor usar {@link android.provider.BaseColumns#_ID BaseColumns._ID}
+        porque a vinculação dos resultados de uma consulta de provedor com uma
+        {@link android.widget.ListView} requer que uma das colunas tenha o nome
+        <code>_ID</code>.
+    </li>
+    <li>
+        Se você deseja fornecer imagens bitmap ou outras partes muito grandes de dados orientados a arquivo, armazene
+        os dados em um arquivo e, em seguida, forneça-o indiretamente em vez de armazená-lo diretamente em uma
+        tabela. Ao fazer isso, será necessário informar aos usuários do provedor que eles precisam usar
+        um método de arquivo {@link android.content.ContentResolver} para acessar os dados.
+    </li>
+    <li>
+        Use objeto grande binário (BLOB) como tipo de dados para armazenar dados que variam em tamanho ou que tenham
+        estrutura variável. Por exemplo: é possível usar uma coluna de BLOB para armazenar
+        um <a href="http://code.google.com/p/protobuf">buffer de protocolo</a> ou
+        uma <a href="http://www.json.org">estrutura JSON</a>.
+        <p>
+            Pode-se usar um BLOB para implementar uma tabela <em>independente de esquema</em>. Nesse
+            tipo de tabela, define-se uma coluna de chave principal, uma coluna de tipo MIME e uma
+            ou mais colunas genéricas como BLOB. O significado dos dados nas colunas BLOB é indicado
+            pelo valor na coluna de tipo MIME. Isso permite o armazenamento de diferentes tipos de linha
+            na mesma tabela. A tabela de "dados" {@link android.provider.ContactsContract.Data}
+            do Provedor de contatos é um exemplo de uma tabela
+            independente de esquema.
+        </p>
+    </li>
+</ul>
+<!-- Designing Content URIs -->
+<h2 id="ContentURI">Projeto de URIs de conteúdo</h2>
+<p>
+    <strong>URI de conteúdo</strong> é uma URI que identifica dados em um provedor. URIs de conteúdo
+    contêm o nome simbólico de todo o provedor (sua <strong>autoridade</strong>) e um
+    nome que aponta para uma tabela ou arquivo (um <strong>caminho</strong>). Parte do ID opcional aponta para
+    uma linha individual em uma tabela. Cada método de acesso aos dados
+    {@link android.content.ContentProvider} de tem uma URI de conteúdo como um argumento. Isso permite
+    determinar a tabela, a linha ou o arquivo a acessar.
+</p>
+<p>
+    Os conceitos básicos de URIs de conteúdo são escritos no tópico
+    <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+    Preceitos do provedor de conteúdo</a>.
+</p>
+<h3>Projeto de uma autoridade</h3>
+<p>
+    Os provedores normalmente têm uma única autoridade, que serve como seu nome interno do Android. Para
+    evitar conflitos com outros provedores, deve-se usar a propriedade de domínio da internet (ao contrário)
+    como a base da autoridade do provedor. Em virtude de esta recomendação ser verdadeira para nomes
+    de pacote do Android, é possível definir a autoridade do provedor como uma extensão do nome
+    do pacote que contém o provedor. Por exemplo: se o nome do pacote do Android for
+    <code>com.example.&lt;appname&gt;</code>, deve-se atribuir ao provedor
+    a autoridade <code>com.example.&lt;appname&gt;.provider</code>.
+</p>
+<h3>Projeto de uma estrutura de caminho</h3>
+<p>
+    Desenvolvedores normalmente criam URIs de conteúdo a partir da autoridade anexando caminhos que apontam para
+    tabelas individuais. Por exemplo: se você tiver duas tabelas (<em>tabela1</em> e
+    <em>tabela2</em>), combine a autoridade do exemplo anterior para produzir
+    as URIs de conteúdo
+    <code>com.example.&lt;appname&gt;.provider/table1</code> e
+    <code>com.example.&lt;appname&gt;.provider/table2</code>. Caminhos não
+    se limitam a um único segmento e não precisa ter uma tabela para cada nível do caminho.
+</p>
+<h3>Identificação de IDs de URIs de conteúdo</h3>
+<p>
+    Por convenção, provedores fornecem acesso a uma linha exclusiva em uma tabela aceitando uma URI de conteúdo
+    com um valor de ID para a linha no fim da URI. Também por convenção, provedores combinam
+    o valor do ID com a coluna <code>_ID</code> da tabela e realizam o acesso solicitado
+    na linha correspondente.
+</p>
+<p>
+    Essa convenção facilita a padronização comum do projeto para aplicativos que acessam um provedor. O aplicativo
+    realiza uma consulta no provedor e exibe o {@link android.database.Cursor}
+    resultante em uma {@link android.widget.ListView} usando um {@link android.widget.CursorAdapter}.
+    A definição de {@link android.widget.CursorAdapter} requer que uma das colunas
+    no {@link android.database.Cursor} seja <code>_ID</code>
+</p>
+<p>
+    Em seguida, o usuário seleciona uma das linhas exibidas na IU para visualizar ou modificar
+    os dados. O aplicativo tem a linha correspondente do {@link android.database.Cursor} apoiando
+    a {@link android.widget.ListView}, obtém o valor <code>_ID</code> para essa linha, anexa-o
+    à URI de conteúdo e envia a solicitação de acesso ao provedor. O provedor, então, pode realizar
+    a consulta ou modificação na exata linha que o usuário selecionou.
+</p>
+<h3>Padrões de URI de conteúdo</h3>
+<p>
+    Para ajudar a escolher que ação tomar para uma URI de conteúdo recebida, a API do provedor contém
+    a classe de conveniência {@link android.content.UriMatcher}, que mapeia "padrões" de URI de conteúdo
+    como valores de número inteiro. É possível usar os valores de número inteiro em uma declaração <code>switch</code> que
+    escolha a ação desejada para a URI de conteúdo ou URIs que atendam ao padrão determinado.
+</p>
+<p>
+    Um padrão de URI de conteúdo corresponde a URIs de conteúdo que usam caracteres especiais:
+</p>
+    <ul>
+        <li>
+            <strong><code>*</code>:</strong> Corresponde a uma string de qualquer caractere válido de qualquer comprimento.
+        </li>
+        <li>
+            <strong><code>#</code>:</strong> Corresponde a uma string de caracteres numéricos de qualquer comprimento.
+        </li>
+    </ul>
+<p>
+    Como um exemplo de projeto e codificação da identificação de URIs de conteúdo, considere um provedor
+    com a autoridade <code>com.example.app.provider</code> que reconheça as URIs de conteúdo
+    que apontam para tabelas:
+</p>
+<ul>
+    <li>
+        <code>content://com.example.app.provider/table1</code>: Uma tabela chamada <code>table1</code>.
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table2/dataset1</code>: Uma tabela chamada
+        <code>dataset1</code>.
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table2/dataset2</code>: Uma tabela chamada
+        <code>dataset1</code>.
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table3</code>: Uma tabela chamada <code>table3</code>.
+    </li>
+</ul>
+<p>
+    O provedor também reconhece essas URIs de conteúdo se elas tiverem um ID de linha anexado, como
+    <code>content://com.example.app.provider/table3/1</code> para a linha identificada por
+    <code>1</code> em <code>table3</code>.
+</p>
+<p>
+    Os seguintes padrões de URI de conteúdo seriam possíveis:
+</p>
+<dl>
+    <dt>
+        <code>content://com.example.app.provider/*</code>
+    </dt>
+    <dd>
+        Corresponde a qualquer URI de conteúdo no provedor.
+    </dd>
+    <dt>
+        <code>content://com.example.app.provider/table2/*</code>:
+    </dt>
+    <dd>
+        Corresponde a uma URI de conteúdo das tabelas <code>dataset1</code>
+        e <code>dataset2</code>, mas não a URIs de conteúdo de <code>table1</code>
+        nem <code>table3</code>.
+    </dd>
+    <dt>
+        <code>content://com.example.app.provider/table3/#</code>: Corresponde a uma URI de conteúdo
+        para linhas exclusivas em <code>table3</code>, como
+        <code>content://com.example.app.provider/table3/6</code> da linha identificada por
+        <code>6</code>.
+    </dt>
+</dl>
+<p>
+    O fragmento de código a seguir mostra como funcionam os métodos em {@link android.content.UriMatcher}.
+    Esse código identifica URIs para toda uma tabela, diferentemente das URIs
+    para uma linha exclusiva, usando o padrão de URI de conteúdo
+    <code>content://&lt;authority&gt;/&lt;path&gt;</code> para tabelas e
+    <code>content://&lt;authority&gt;/&lt;path&gt;/&lt;id&gt;</code> para linhas exclusivas.
+</p>
+<p>
+    O método {@link android.content.UriMatcher#addURI(String, String, int) addURI()} mapeia
+    uma autoridade e um caminho como um valor de número inteiro. O método {@link android.content.UriMatcher#match(Uri)
+    match()} retorna o valor de número inteiro para a URI. Uma declaração <code>switch</code>
+    escolhe entre consultar a tabela inteira e consultar um único registro:
+</p>
+<pre class="prettyprint">
+public class ExampleProvider extends ContentProvider {
+...
+    // Creates a UriMatcher object.
+    private static final UriMatcher sUriMatcher;
+...
+    /*
+     * The calls to addURI() go here, for all of the content URI patterns that the provider
+     * should recognize. For this snippet, only the calls for table 3 are shown.
+     */
+...
+    /*
+     * Sets the integer value for multiple rows in table 3 to 1. Notice that no wildcard is used
+     * in the path
+     */
+    sUriMatcher.addURI("com.example.app.provider", "table3", 1);
+
+    /*
+     * Sets the code for a single row to 2. In this case, the "#" wildcard is
+     * used. "content://com.example.app.provider/table3/3" matches, but
+     * "content://com.example.app.provider/table3 doesn't.
+     */
+    sUriMatcher.addURI("com.example.app.provider", "table3/#", 2);
+...
+    // Implements ContentProvider.query()
+    public Cursor query(
+        Uri uri,
+        String[] projection,
+        String selection,
+        String[] selectionArgs,
+        String sortOrder) {
+...
+        /*
+         * Choose the table to query and a sort order based on the code returned for the incoming
+         * URI. Here, too, only the statements for table 3 are shown.
+         */
+        switch (sUriMatcher.match(uri)) {
+
+
+            // If the incoming URI was for all of table3
+            case 1:
+
+                if (TextUtils.isEmpty(sortOrder)) sortOrder = "_ID ASC";
+                break;
+
+            // If the incoming URI was for a single row
+            case 2:
+
+                /*
+                 * Because this URI was for a single row, the _ID value part is
+                 * present. Get the last path segment from the URI; this is the _ID value.
+                 * Then, append the value to the WHERE clause for the query
+                 */
+                selection = selection + "_ID = " uri.getLastPathSegment();
+                break;
+
+            default:
+            ...
+                // If the URI is not recognized, you should do some error handling here.
+        }
+        // call the code to actually do the query
+    }
+</pre>
+<p>
+    Outra classe, {@link android.content.ContentUris}, fornece métodos convenientes para trabalhar
+    com a parte <code>id</code> das URIs de conteúdo. As classes {@link android.net.Uri}
+    e {@link android.net.Uri.Builder} contêm métodos convenientes para analisar objetos
+    {@link android.net.Uri} existentes e criar novos.
+</p>
+
+<!-- Implementing the ContentProvider class -->
+<h2 id="ContentProvider">Implementação da classe ContentProvider</h2>
+<p>
+    A instância {@link android.content.ContentProvider} gerencia o acesso
+    a um conjunto de dados estruturado lidando com solicitações de outros aplicativos. Todas as formas
+    de acesso ocasionalmente chamam {@link android.content.ContentResolver} que, em seguida, chama um método
+    concreto de {@link android.content.ContentProvider} para obter acesso.
+</p>
+<h3 id="RequiredAccess">Métodos obrigatórios</h3>
+<p>
+    A classe abstrata {@link android.content.ContentProvider} define seis métodos abstratos
+    que devem ser implementados como parte das subclasses concretas. Todos esses métodos, exceto
+    {@link android.content.ContentProvider#onCreate() onCreate()}, são chamados por um aplicativo cliente
+    que está tentando acessar seu provedor de conteúdo:
+</p>
+<dl>
+    <dt>
+        {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+        query()}
+    </dt>
+    <dd>
+        Recupere dados do provedor. Use os argumentos para selecionar a tabela
+        para consultar as linhas e colunas a retornar e a ordem de classificação do resultado.
+        Retorne os dados como um objeto {@link android.database.Cursor}.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}
+    </dt>
+    <dd>
+        Insira uma nova linha no provedor. Use os argumentos para selecionar
+        a tabela de destino e obter os valores de coluna a usar. Retorne uma URI de conteúdo para
+        a linha recentemente inserida.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#update(Uri, ContentValues, String, String[])
+        update()}
+    </dt>
+    <dd>
+        Atualize as linhas existentes no provedor. Use os argumentos para selecionar a tabela e linhas
+        para atualizar e obter os valores de coluna atualizados. Retorne o número de linhas atualizadas.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()}
+    </dt>
+    <dd>
+        Exclua linhas do provedor. Use os argumentos para selecionar a tabela e as linhas
+        a excluir. Retorne o número de linhas excluídas.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#getType(Uri) getType()}
+    </dt>
+    <dd>
+        Retorne o tipo MIME correspondente a uma URI de conteúdo. Esse método é descrito com mais
+        detalhes na seção <a href="#MIMETypes">Implementação de tipos MIME do Provedor de Conteúdo</a>.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#onCreate() onCreate()}
+    </dt>
+    <dd>
+        Inicializar o provedor. O sistema Android chama esse método imediatamente
+        após criar o provedor. Observe que o provedor não é criado até que
+        um objeto {@link android.content.ContentResolver} tente acessá-lo.
+    </dd>
+</dl>
+<p>
+    Observe que esses métodos têm a mesma assinatura dos métodos 
+        {@link android.content.ContentResolver} de mesmo nome.
+</p>
+<p>
+    A implementação desses métodos deve levar em conta o seguinte:
+</p>
+<ul>
+    <li>
+        Todos esses métodos, exceto {@link android.content.ContentProvider#onCreate() onCreate()},
+        podem ser chamados por diversos encadeamentos simultaneamente, então devem ter encadeamento seguro. Para saber
+        mais sobre encadeamentos múltiplos, consulte o tópico
+        <a href="{@docRoot}guide/components/processes-and-threads.html">
+        Processos e encadeamentos</a>.
+    </li>
+    <li>
+        Evite realizar longas operações em {@link android.content.ContentProvider#onCreate()
+        onCreate()}. Adie tarefas de inicialização até que sejam realmente necessárias.
+        A seção <a href="#OnCreate">Implementação do método onCreate()</a>
+        aborda o assunto mais detalhadamente.
+    </li>
+    <li>
+        Embora seja preciso implementar esses métodos, o código não precisa fazer nada além
+        de retornar o tipo de dados esperado. Por exemplo: você pode querer evitar que outros aplicativos
+        insiram dados em algumas tabelas. Para tanto, pode-se ignorar a chamada de
+        {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} e retornar
+        0.
+    </li>
+</ul>
+<h3 id="Query">Implementação do método query()</h3>
+<p>
+    
+    O método {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+    ContentProvider.query()} precisa retornar um objeto {@link android.database.Cursor}  ou, se
+    falhar, gerar uma {@link java.lang.Exception}. Se você estiver usando um banco de dados SQLite
+    como armazenamento de dados, pode simplesmente retornar o {@link android.database.Cursor} retornado
+    por um dos métodos <code>query()</code> da classe {@link android.database.sqlite.SQLiteDatabase}.
+    Se a consulta não corresponder a nenhuma linha, deve-se retornar uma instância {@link android.database.Cursor}
+cujo método {@link android.database.Cursor#getCount()} retorne 0.
+    Deve-se retornar <code>null</code> somente se ocorrer um erro interno durante o processo de consulta.
+</p>
+<p>
+    Se você não estiver usando um banco de dados SQLite como modo de armazenamento de dados, use uma das subclasses concretas
+    de {@link android.database.Cursor}. Por exemplo, a classe {@link android.database.MatrixCursor}
+    implementa um cursor em que cada linha é uma matriz de {@link java.lang.Object}. Com essa classe,
+    use {@link android.database.MatrixCursor#addRow(Object[]) addRow()} para adicionar uma nova linha.
+</p>
+<p>
+    Lembre-se de que o sistema Android deve ser capaz de se comunicar com {@link java.lang.Exception}
+    entre limites de processo. O Android pode fazer isso para as exceções a seguir, que podem ser úteis
+    para tratar de erros de consulta:
+</p>
+<ul>
+    <li>
+        {@link java.lang.IllegalArgumentException} (é possível escolher lançar isso se o provedor
+        receber uma URI de conteúdo inválida)
+    </li>
+    <li>
+        {@link java.lang.NullPointerException}
+    </li>
+</ul>
+<h3 id="Insert">Implementação do método insert()</h3>
+<p>
+    O método {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} adiciona
+    uma nova linha à tabela apropriada usando os valores no argumento
+    {@link android.content.ContentValues}. Se um nome de coluna não estiver no argumento {@link android.content.ContentValues},
+    talvez seja necessário fornecer um valor padrão para ele tanto no código do provedor quanto no esquema
+    do banco de dados.
+</p>
+<p>
+    Esse método deve retornar a URI de conteúdo da nova linha. Para construir isso, anexe o valor <code>_ID</code>
+    da nova linha (ou outra chave principal) à URI de conteúdo da tabela usando
+    {@link android.content.ContentUris#withAppendedId(Uri, long) withAppendedId()}.
+</p>
+<h3 id="Delete">Implementação do método delete()</h3>
+<p>
+    O método {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()}
+    não precisa excluir linhas fisicamente do armazenamento de dados. Se você estiver usando um adaptador de sincronização
+    com o provedor, considere marcar uma linha excluída
+    com um sinalizador "excluir" em vez de removê-la totalmente. O adaptador de sincronização pode
+    verificar se há linhas excluídas e removê-las do servidor antes de excluí-las do provedor.
+</p>
+<h3 id="Update">Implementação do método update()</h3>
+<p>
+    O método {@link android.content.ContentProvider#update(Uri, ContentValues, String, String[])
+    update()} usa o mesmo argumento {@link android.content.ContentValues} usado por
+    {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}, e os
+    mesmos argumentos <code>selection</code> e <code>selectionArgs</code> usados por
+    {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()} e
+    {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+    ContentProvider.query()}. Isso deve permitir a reutilização do código entre esses métodos.
+</p>
+<h3 id="OnCreate">Implementação do método onCreate()</h3>
+<p>
+    O sistema Android chama {@link android.content.ContentProvider#onCreate()
+    onCreate()} quando inicia o provedor. Nesse método, devem-se realizar apenas tarefas de inicialização
+    de execução rápida e adiar a criação do banco de dados e o carregamento dos dados até que o provedor
+    receba efetivamente uma solicitação de acesso aos dados. Se houver tarefas longas
+    em {@link android.content.ContentProvider#onCreate() onCreate()}, a inicialização do provedor
+    ficará lenta. Consequentemente, isso diminuirá a rapidez da resposta do provedor
+    a outros aplicativos.
+</p>
+<p>
+    Por exemplo: se você estiver usando um banco de dados SQLite, é possível criar
+    um novo objeto {@link android.database.sqlite.SQLiteOpenHelper}
+    em {@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()}
+    e, em seguida, criar as tabelas SQL na primeira vez em que o banco de dados for aberto. Para facilitar isso,
+    a primeira vez que chamar {@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase
+    getWritableDatabase()}, ele automaticamente chamará
+    o método {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+    SQLiteOpenHelper.onCreate()}
+</p>
+<p>
+    Os dois fragmentos a seguir demonstram a interação
+    entre {@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()}
+    e {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+    SQLiteOpenHelper.onCreate()}. O primeiro fragmento é a implementação de
+    {@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()}.
+</p>
+<pre class="prettyprint">
+public class ExampleProvider extends ContentProvider
+
+    /*
+     * Defines a handle to the database helper object. The MainDatabaseHelper class is defined
+     * in a following snippet.
+     */
+    private MainDatabaseHelper mOpenHelper;
+
+    // Defines the database name
+    private static final String DBNAME = "mydb";
+
+    // Holds the database object
+    private SQLiteDatabase db;
+
+    public boolean onCreate() {
+
+        /*
+         * Creates a new helper object. This method always returns quickly.
+         * Notice that the database itself isn't created or opened
+         * until SQLiteOpenHelper.getWritableDatabase is called
+         */
+        mOpenHelper = new MainDatabaseHelper(
+            getContext(),        // the application context
+            DBNAME,              // the name of the database)
+            null,                // uses the default SQLite cursor
+            1                    // the version number
+        );
+
+        return true;
+    }
+
+    ...
+
+    // Implements the provider's insert method
+    public Cursor insert(Uri uri, ContentValues values) {
+        // Insert code here to determine which table to open, handle error-checking, and so forth
+
+        ...
+
+        /*
+         * Gets a writeable database. This will trigger its creation if it doesn't already exist.
+         *
+         */
+        db = mOpenHelper.getWritableDatabase();
+    }
+}
+</pre>
+<p>
+    O próximo fragmento é a implementação de
+    {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+    SQLiteOpenHelper.onCreate()}, inclusive uma classe auxiliar:
+</p>
+<pre class="prettyprint">
+...
+// A string that defines the SQL statement for creating a table
+private static final String SQL_CREATE_MAIN = "CREATE TABLE " +
+    "main " +                       // Table's name
+    "(" +                           // The columns in the table
+    " _ID INTEGER PRIMARY KEY, " +
+    " WORD TEXT"
+    " FREQUENCY INTEGER " +
+    " LOCALE TEXT )";
+...
+/**
+ * Helper class that actually creates and manages the provider's underlying data repository.
+ */
+protected static final class MainDatabaseHelper extends SQLiteOpenHelper {
+
+    /*
+     * Instantiates an open helper for the provider's SQLite data repository
+     * Do not do database creation and upgrade here.
+     */
+    MainDatabaseHelper(Context context) {
+        super(context, DBNAME, null, 1);
+    }
+
+    /*
+     * Creates the data repository. This is called when the provider attempts to open the
+     * repository and SQLite reports that it doesn't exist.
+     */
+    public void onCreate(SQLiteDatabase db) {
+
+        // Creates the main table
+        db.execSQL(SQL_CREATE_MAIN);
+    }
+}
+</pre>
+
+
+<!-- Implementing ContentProvider MIME Types -->
+<h2 id="MIMETypes">Implementação de tipos MIME de ContentProvider</h2>
+<p>
+    A classe {@link android.content.ContentProvider} tem dois métodos para retornar tipos MIME:
+</p>
+<dl>
+    <dt>
+        {@link android.content.ContentProvider#getType(Uri) getType()}
+    </dt>
+    <dd>
+        Um dos métodos obrigatórios que devem ser implementados em qualquer provedor.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}
+    </dt>
+    <dd>
+        Um método que deve ser implementado se o provedor fornecer arquivos.
+    </dd>
+</dl>
+<h3 id="TableMIMETypes">Tipos MIME para tabelas</h3>
+<p>
+    O método {@link android.content.ContentProvider#getType(Uri) getType()} retorna
+    uma {@link java.lang.String} em formato MIME que descreve o tipo de dados retornado pelo argumento
+    da URI de conteúdo. O argumento {@link android.net.Uri} pode ser um padrão em vez de uma URI específica;
+    nesse caso, deve-se retornar o tipo de dados associado a URIs de conteúdo que correspondam
+    ao padrão.
+</p>
+<p>
+    Para tipos de dados comuns como texto, HTML ou JPEG,
+    {@link android.content.ContentProvider#getType(Uri) getType()} deve retornar o tipo MIME
+    padrão daqueles dados. Há uma lista completa desse tipos de padrão
+    no site de 
+    <a href="http://www.iana.org/assignments/media-types/index.htm">Tipos de mídia MIME IANA</a>.
+</p>
+<p>
+    Para obter URIs de conteúdo que apontam para uma linha ou linhas de dados de tabela,
+    {@link android.content.ContentProvider#getType(Uri) getType()} deve retornar
+    um tipo MIME no formato MIME específico do fornecedor do Android:
+</p>
+<ul>
+    <li>
+        Parte do tipo: <code>vnd</code>
+    </li>
+    <li>
+        Parte do subtipo:
+        <ul>
+            <li>
+    Se um padrão de URI se destinar a uma única linha: <code>android.cursor.<strong>item</strong>/</code>
+            </li>
+            <li>
+    Se um padrão de URI se destinar a mais de uma linha: <code>android.cursor.<strong>dir</strong>/</code>
+            </li>
+        </ul>
+    </li>
+    <li>
+        Parte específica do provedor: <code>vnd.&lt;name&gt;</code>.<code>&lt;type&gt;</code>
+        <p>
+            Fornecem-se <code>&lt;name&gt;</code> e o <code>&lt;type&gt;</code>.
+            O valor <code>&lt;name&gt;</code> deve ser globalmente exclusivo
+            e o <code>&lt;type&gt;</code> deve ser exclusivo para o padrão de URI
+            correspondente. Uma boa escolha para <code>&lt;name&gt;</code> é o nome da empresa
+            ou alguma parte do nome do pacote do Android do seu aplicativo. Uma boa escolha para
+            <code>&lt;type&gt;</code> é uma string que identifique a tabela associada
+            à URI.
+        </p>
+
+    </li>
+</ul>
+<p>
+    Por exemplo: se a autoridade de um provedor
+    for <code>com.example.app.provider</code> e ele expuser uma tabela chamada
+    <code>table1</code>, o tipo MIME de diversas linhas em <code>table1</code> será:
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>/vnd.com.example.provider.table1
+</pre>
+<p>
+    Para uma única linha de <code>table1</code>, o tipo MIME será:
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>/vnd.com.example.provider.table1
+</pre>
+<h3 id="FileMIMETypes">Tipos MIME para arquivos</h3>
+<p>
+    Se o provedor oferecer arquivos, implemente
+    {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}.
+    O método retorna uma matriz {@link java.lang.String} de tipos MIME para os arquivos que o provedor
+    pode retornar de uma dada URI de conteúdo. É preciso filtrar os tipos MIME oferecidos pelo argumento do filtro
+    de tipo MIME para retornar somente os tipos MIME que o cliente quer tratar.
+</p>
+<p>
+    Por exemplo: considere um provedor que ofereça imagens de foto como arquivos em formatos <code>.jpg</code>,
+    <code>.gif</code> e <code>.png</code>.
+    Se um aplicativo chama {@link android.content.ContentResolver#getStreamTypes(Uri, String)
+    ContentResolver.getStreamTypes()} com a string de filtro <code>image/*</code> (algo que
+    seja uma "imagem"),
+    o método {@link android.content.ContentProvider#getStreamTypes(Uri, String)
+    ContentProvider.getStreamTypes()} deve retornar a matriz:
+</p>
+<pre>
+{ &quot;image/jpeg&quot;, &quot;image/png&quot;, &quot;image/gif&quot;}
+</pre>
+<p>
+    Se o aplicativo estiver interessado apenas em arquivos <code>.jpg</code>, ele pode chamar
+    {@link android.content.ContentResolver#getStreamTypes(Uri, String)
+    ContentResolver.getStreamTypes()} com a string de filtro <code>*\/jpeg</code>
+    e {@link android.content.ContentProvider#getStreamTypes(Uri, String)
+    ContentProvider.getStreamTypes()} deve retornar:
+<pre>
+{&quot;image/jpeg&quot;}
+</pre>
+<p>
+    Se o provedor não oferecer nenhum tipo MIME solicitado na string de filtro,
+    {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}
+    deve retornar <code>null</code>.
+</p>
+
+
+<!--  Implementing a Contract Class -->
+<h2 id="ContractClass">Implementação de uma classe de contrato</h2>
+<p>
+    Uma classe de contrato é uma classe <code>public final</code> que contém definições de constantes para
+    os nomes de coluna das URIs, dos tipos MIME e de outros metadados que pertencem ao provedor. A classe
+    estabelece um contrato entre o provedor e outros aplicativos, garantindo que o provedor
+    possa ser corretamente acessado mesmo se houver mudanças nos valores atuais de URIs, nomes de coluna
+    etc.
+</p>
+<p>
+    As classes de contrato também ajudam os desenvolvedores porque normalmente suas constantes têm nomes mnemônicos e,
+    por isso, os desenvolvedores têm menos chance de usar valores incorretos para nomes de coluna ou URIs. Já que é
+    uma classe, ela pode conter documentação Javadoc. Ambientes de desenvolvimento integrados, como
+    o Eclipse, podem preencher automaticamente os nomes de constantes da classe de contrato e exibir Javadoc para
+    as constantes.
+</p>
+<p>
+    Os desenvolvedores não podem acessar o arquivo de classe da classe de contrato do aplicativo, mas podem
+    compilá-lo estaticamente no aplicativo a partir de um arquivo <code>.jar</code> que você fornece.
+</p>
+<p>
+    A classe {@link android.provider.ContactsContract} e classes aninhadas são exemplos
+    de classes de contrato.
+</p>
+<h2 id="Permissions">Implementação de permissões do Provedor de Conteúdo</h2>
+<p>
+    Permissões e acesso, para todos os aspectos do sistema Android, são descritos detalhadamente no
+    tópico <a href="{@docRoot}guide/topics/security/security.html">Permissões e segurança</a>.
+    O tópico <a href="{@docRoot}guide/topics/data/data-storage.html">Armazenamento de dados</a> também
+    descreve segurança e permissões em vigor para diversos tipos de armazenamento.
+    Em resumo, os pontos importantes são:
+</p>
+<ul>
+    <li>
+        Por padrão, arquivos de dados armazenados no armazenamento interno do dispositivo são privados em relação
+        ao aplicativo e ao provedor.
+    </li>
+    <li>
+        Os bancos de dados {@link android.database.sqlite.SQLiteDatabase} criados são privados em relação
+        ao aplicativo e ao provedor.
+    </li>
+    <li>
+        Por padrão, arquivos de dados salvos em armazenamentos externos são <em>públicos</em>
+        e <em>legíveis para todos</em>. Não é possível usar um provedor de conteúdo para restringir o acesso a arquivos
+        em um armazenamento externo porque outros aplicativos podem usar chamadas de outra API para lê-los e gravar neles.
+    </li>
+    <li>
+        O método que chama a abertura ou criação de arquivos ou bancos de dados SQLite no armazenamento
+        interno do seu dispositivo podem fornecer acesso de leitura e gravação a todos os outros aplicativos. Se você
+        usar um arquivo ou banco de dados interno como o repositório do provedor e conceder-lhe
+        acesso "legível para todos" ou "gravável por todos", as permissões definidas para o provedor
+        no manifesto não protegerão os dados. O acesso padrão de arquivos e bancos de dados
+        no armazenamento interno é "privado" e, para o repositório do provedor, não é recomendável alterar isso.
+    </li>
+</ul>
+<p>
+    Se você deseja usar permissões do provedor de conteúdo para controlar o acesso aos dados, deve
+    armazená-los em arquivos internos, bancos de dados SQLite ou em "nuvem" (por exemplo,
+    em um servidor remoto) e mantê-los privados em relação ao aplicativo.
+</p>
+<h3>Implementação de permissões</h3>
+<p>
+    Todos os aplicativos podem ler ou gravar no provedor, mesmo que os dados em questão
+    sejam privados porque, por padrão, o provedor não tem permissões definidas. Para mudar isso,
+    defina permissões do provedor no arquivo de manifesto por meio de atributos ou elementos
+    filho do elemento <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+    &lt;provider&gt;</a></code>. É possível definir permissões que se apliquem a todo o provedor,
+    a determinadas tabelas, a registros específicos ou a todos os três.
+</p>
+<p>
+    As permissões são definidas para o provedor com um ou mais
+    elementos <code><a href="{@docRoot}guide/topics/manifest/permission-element.html">
+    &lt;permission&gt;</a></code> no arquivo de manifesto. Para tornar
+    a permissão exclusiva para o provedor, use escopo de estilo Java para
+    o atributo <code><a href="{@docRoot}guide/topics/manifest/permission-element.html#nm">
+    android:name</a></code>. Por exemplo: nomeie a permissão de leitura
+    <code>com.example.app.provider.permission.READ_PROVIDER</code>.
+
+</p>
+<p>
+    A lista a seguir descreve o escopo de permissões do provedor, começando
+    com as permissões que se aplicam a todo o provedor e seguindo para as mais específicas.
+    Permissões mais específicas têm precedência sobre as de escopo maior:
+</p>
+<dl>
+    <dt>
+        Única permissão de leitura e gravação no nível do provedor
+    </dt>
+    <dd>
+        Uma permissão que controla os acessos de leitura e gravação a todo o provedor, especificada
+        com o atributo <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+        android:permission</a></code>
+        do elemento <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code>.
+    </dd>
+    <dt>
+        Permissões de leitura e gravação separadas no nível do provedor
+    </dt>
+    <dd>
+        Uma permissão de leitura e uma permissão de gravação para todo o provedor. São especificadas
+        com os atributos <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">
+        android:readPermission</a></code>
+        e <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">
+        android:writePermission</a></code>
+        do elemento <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code>. Elas têm precedência sobre a permissão exigida
+        por <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+        android:permission</a></code>.
+    </dd>
+    <dt>
+        Permissão no nível do caminho
+    </dt>
+    <dd>
+        Permissão de leitura, gravação ou leitura/gravação para uma URI de conteúdo no provedor. Especifica-se
+        cada URI que se deseja controlar
+        com um elemento filho <code><a href="{@docRoot}guide/topics/manifest/path-permission-element.html">
+        &lt;path-permission&gt;</a></code> 
+        do elemento <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code>. Para cada URI de conteúdo, pode-se especificar
+        uma permissão de leitura/gravação, uma permissão de leitura, uma permissão de gravação ou as três. As permissões
+        de leitura e gravação têm precedência sobre a permissão de leitura/gravação. Além disso,
+        permissões no nível do caminho têm precedência sobre permissões no nível do provedor.
+    </dd>
+    <dt>
+        Permissão temporária
+    </dt>
+    <dd>
+        Nível de permissão que concede acesso temporário a um aplicativo mesmo que ele
+        não tenha as permissões normalmente exigidas. O recurso de acesso
+        temporário reduz o número de permissões que um aplicativo deve solicitar
+        no manifesto. Ao ativar permissões temporárias, os únicos aplicativos que precisam de
+        permissões "permanentes" para seu provedor são os que têm acesso contínuo
+        a todos os dados.
+        <p>
+            Considere as permissões necessárias para implementar um provedor e um aplicativo de e-mail
+        ao permitir um aplicativo visualizador de imagens externas para exibir anexos de fotos
+        do provedor. Para conceder o acesso necessário ao visualizador de imagens sem as permissões exigidas,
+        configure permissões temporárias das URIs de conteúdo de fotos. Projete o aplicativo de e-mail
+        para que, quando o usuário quiser exibir uma foto, o aplicativo envie uma intenção
+        com a URI de conteúdo da foto e sinalizadores de permissão para o visualizador de imagens. O visualizador de imagens poderá,
+        então, consultar o provedor de e-mail para recuperar a foto mesmo que ele
+        não tenha a permissão normal de leitura para o provedor.
+        </p>
+        <p>
+            Para ativar permissões temporárias, defina
+        o atributo <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+            android:grantUriPermissions</a></code>
+        do elemento <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> ou adicione um ou mais
+        elementos filhos <code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
+            &lt;grant-uri-permission&gt;</a></code>
+        ao elemento <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code>. Se forem usadas permissões temporárias, será necessário chamar
+                    {@link android.content.Context#revokeUriPermission(Uri, int)
+            Context.revokeUriPermission()} sempre que remover suporte a URI de conteúdo do
+            provedor, e a URI de conteúdo será associada a uma permissão temporária.
+        </p>
+        <p>
+            O valor do atributo determina o nível de acessibilidade do provedor.
+            Se o atributo estiver definido como <code>true</code>, o sistema concederá permissão
+            temporária a todo o provedor, sobrepondo todas as outras permissões exigidas
+            pelas permissões no nível do provedor ou no nível do caminho.
+        </p>
+        <p>
+            Se esse sinalizador estiver definido como <code>false</code>, será necessário adicionar
+            elementos filhos <code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
+            &lt;grant-uri-permission&gt;</a></code>
+            ao elemento <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code>. Cada elemento filho especifica a URI ou URIs
+            de conteúdo para as quais o acesso temporário é concedido.
+        </p>
+        <p>
+            Para delegar o acesso temporário a um aplicativo, a intenção deve conter
+            os sinalizadores {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION},
+            {@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION} ou ambos. Eles
+            são definidos com o método {@link android.content.Intent#setFlags(int) setFlags()}.
+        </p>
+        <p>
+            Se o atributo <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+            android:grantUriPermissions</a></code> não estiver presente, presume-se que ele seja
+            <code>false</code>.
+        </p>
+    </dd>
+</dl>
+
+
+
+<!-- The Provider Element -->
+<h2 id="ProviderElement">O elemento &lt;provider&gt;</h2>
+<p>
+    Como os componentes {@link android.app.Activity} e {@link android.app.Service},
+            a subclasse de {@link android.content.ContentProvider}
+            deve ser definida no arquivo de manifesto do aplicativo
+            pelo elemento <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+    &lt;provider&gt;</a></code>. O sistema Android obtém as seguintes informações
+            do elemento:
+<dl>
+    <dt>
+        Autoridade
+            (<a href="{@docRoot}guide/topics/manifest/provider-element.html#auth">{@code
+        android:authorities}</a>)
+    </dt>
+    <dd>
+        Nomes simbólicos que identificam todo o provedor dentro do sistema. Esse
+        atributo é descrito com mais detalhes na seção
+        <a href="#ContentURI">Projeto de URIs de conteúdo</a>.
+    </dd>
+    <dt>
+        Nome da classe do provedor
+        (<code>
+<a href="{@docRoot}guide/topics/manifest/provider-element.html#nm">android:name</a>
+        </code>)
+    </dt>
+    <dd>
+        A classe que implementa {@link android.content.ContentProvider}. Esta classe é
+        abordada com mais detalhes na seção
+        <a href="#ContentProvider">Implementação da classe ContentProvider</a>.
+    </dd>
+    <dt>
+        Permissões
+    </dt>
+    <dd>
+        Atributos que especificam as permissões que outros aplicativos precisam ter para acessar
+        os dados do provedor:
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+                android:grantUriPermssions</a></code>: Sinalizador de permissão temporária.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+                android:permission</a></code>: Permissão única de leitura/gravação por todo o provedor.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">
+                android:readPermission</a></code>: Permissão de leitura por todo o provedor.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">
+                android:writePermission</a></code>: Permissão de gravação por todo o provedor.
+            </li>
+        </ul>
+        <p>
+            As permissões e os atributos correspondentes são abordados com mais
+            detalhes na seção
+            <a href="#Permissions">Implementação de permissões do Provedor de conteúdo</a>.
+        </p>
+    </dd>
+    <dt>
+        Atributos de início e controle
+    </dt>
+    <dd>
+        Esses atributos determinam como e quando o sistema Android inicia o provedor,
+        as características do processo do provedor e outras configurações de tempo de execução:
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#enabled">
+                android:enabled</a></code>: sinalizador que permite ao sistema iniciar o provedor.
+            </li>
+              <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#exported">
+                android:exported</a></code>: sinalizador que permite a outros aplicativos usarem esse provedor.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#init">
+                android:initOrder</a></code>: a ordem em que esse provedor deve ser iniciado,
+                relativa a outros provedores no mesmo processo.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#multi">
+                android:multiProcess</a></code>: sinalizador que permite ao sistema iniciar o provedor
+                no mesmo processo que o cliente chama.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#proc">
+                android:process</a></code>: o nome do processo em que o provedor deve
+                ser executado.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#sync">
+                android:syncable</a></code>: sinalizador que indica que os dados do provedor devem ser
+                sincronizados com os dados em um servidor.
+            </li>
+        </ul>
+        <p>
+            os atributos estão totalmente documentados no tópico do guia de desenvolvimento
+            do elemento
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code>.
+        </p>
+    </dd>
+    <dt>
+        Atributos informacionais
+    </dt>
+    <dd>
+        Um ícone e um rótulo opcionais para o provedor:
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#icon">
+                android:icon</a></code>: um recurso desenhável contendo um ícone para o provedor.
+                O ícone aparece próximo ao rótulo do provedor na lista de aplicativos
+                em <em>Configurações</em> &gt; <em>Aplicativos</em> &gt; <em>Todos</em>.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#label">
+                android:label</a></code>: um rótulo informacional que descreve o provedor,
+                seus dados ou ambos. O rótulo aparece na lista de aplicativos
+                em <em>Configurações</em> &gt; <em>Aplicativos</em> &gt; <em>Todos</em>.
+            </li>
+        </ul>
+        <p>
+            Os atributos estão totalmente documentados no tópico do guia de desenvolvimento
+            do elemento <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code>.
+        </p>
+    </dd>
+</dl>
+
+<!-- Intent Access -->
+<h2 id="Intents">Intenções e acesso a dados</h2>
+<p>
+    Os aplicativos podem acessar um provedor de conteúdo indiretamente com uma {@link android.content.Intent}.
+    O aplicativo não chama nenhum método de {@link android.content.ContentResolver}
+    nem de {@link android.content.ContentProvider}. Em vez disso, ele envia uma intenção que inicia uma atividade,
+    que, em geral, é parte do aplicativo do próprio provedor. A atividade de destino é responsável
+    pela recuperação e exibição dos dados na IU. Conforme a ação na intenção,
+    a atividade de destino também pode levar o usuário a realizar modificações nos dados do provedor.
+    Uma intenção também pode conter dados "extras" que a atividade de destino exibe
+    na IU; o usuário terá, então, a opção de alterar esses dados antes de usá-los para modificar
+    os dados no provedor.
+</p>
+<p>
+
+</p>
+<p>
+    Pode ser necessário usar acesso de intenções para ajudar a garantir a integridade deles. O provedor pode depender
+    de ter dados inseridos, atualizados e excluídos de acordo com a lógica de negócio rigorosamente definida. Se
+    for o caso, a permissão para que outros aplicativos modifiquem os dados diretamente pode levar
+    à invalidação dos dados. Se você deseja que os desenvolvedores usem o acesso via intenções, certifique-se de documentá-lo minuciosamente.
+    Explique por que o acesso via intenções pela IU do aplicativo é melhor do que tentar
+    modificar os dados com códigos.
+</p>
+<p>
+    O tratamento das intenções recebidas com a intenção de modificar os dados do provedor não é diferente
+    de tratar de outras intenções. Para saber mais sobre o uso de intenções, leia o tópico
+    <a href="{@docRoot}guide/components/intents-filters.html">Intenções e filtros de intenções</a>.
+</p>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/providers/content-providers.jd b/docs/html-intl/intl/pt-br/guide/topics/providers/content-providers.jd
new file mode 100644
index 0000000..c9574f6
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/providers/content-providers.jd
@@ -0,0 +1,108 @@
+page.title=Provedores de conteúdo
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+
+<!-- In this document -->
+<h2>Tópicos</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        Preceitos do provedor de conteúdo        </a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+            Criação de um Provedor de conteúdo</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/calendar-provider.html">Provedor de agenda</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/contacts-provider.html">Provedor de contatos</a>
+    </li>
+</ol>
+
+    <!-- Related Samples -->
+<h2>Exemplos relacionados</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}resources/samples/ContactManager/index.html">
+            Aplicativo Gerenciador de contatos</a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html">
+        "Cursor (pessoas)"
+</a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html">
+        "Cursor (telefones)"</a>
+        </li>
+        <li>
+            <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+        Exemplo de adaptador de sincronização</a>
+        </li>
+    </ol>
+</div>
+</div>
+<p>
+    Provedores de conteúdo gerenciam o acesso a um conjunto estruturado de dados. Eles encapsulam os
+dados e fornecem mecanismos para definir a segurança dos dados. Provedores de conteúdo são a interface
+ padrão que conecta dados em um processo com código em execução em outro processo.
+</p>
+<p>
+    Quando desejar acessar dados em um provedor de conteúdo, você usa o 
+    objeto {@link android.content.ContentResolver} no 
+    {@link android.content.Context} do aplicativo para se comunicar com o provedor como cliente.
+    O objeto {@link android.content.ContentResolver} se comunica com o objeto provedor, uma
+    instância de uma classe que implementa {@link android.content.ContentProvider}. O objeto
+    provedor recebe solicitações de dados de clientes, realiza a ação solicitada e 
+    devolve os resultados.
+</p>
+<p>
+    Não é preciso desenvolver o próprio provedor se você não pretende compartilhar seus dados com
+    outros aplicativos. No entanto, precisará do próprio provedor para fornecer sugestões de pesquisa
+    personalizada em seu aplicativo. Também precisará do próprio provedor se quiser copiar e colar
+    dados complexos ou arquivos de seu aplicativo em outros aplicativos.
+</p>
+<p>
+    O Android propriamente dito inclui provedores de conteúdo que gerenciam dados como áudio, vídeo, imagens e
+    informações de contato pessoais. Alguns deles estão listados na documentação de 
+    referência do 
+    pacote <code><a href="{@docRoot}reference/android/provider/package-summary.html">android.provider</a>
+    </code>. Com algumas restrições, esses provedores podem ser acessados por qualquer aplicativo 
+    Android.
+</p><p>
+    Os tópicos a seguir descrevem provedores de conteúdo em mais detalhes:
+</p>
+<dl>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        Preceitos do provedor de conteúdo</a></strong>
+    </dt>
+    <dd>
+        Como acessar dados em um provedor de conteúdo quando os dados estão organizados em tabelas.
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+Criação de um Provedor de conteúdo</a></strong>
+    </dt>
+    <dd>
+        Como criar o próprio provedor de conteúdo.
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+Provedor de agenda</a></strong>
+    </dt>
+    <dd>
+        Como acessar o Provedor de agenda que é parte da plataforma Android.
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/contacts-provider.html">
+Provedor de contatos</a></strong>
+    </dt>
+    <dd>
+        Como acessar o Provedor de contatos que é parte da plataforma Android.
+    </dd>
+</dl>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/providers/document-provider.jd b/docs/html-intl/intl/pt-br/guide/topics/providers/document-provider.jd
new file mode 100644
index 0000000..25aab7a
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/providers/document-provider.jd
@@ -0,0 +1,916 @@
+page.title=Estrutura de acesso ao armazenamento
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Neste documento
+ <a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
+        <span class="more">mostrar mais</span>
+        <span class="less" style="display:none">mostrar menos</span></a></h2>
+<ol id="toc44" class="hide-nested">
+    <li>
+        <a href="#overview">Visão geral</a>
+    </li>
+    <li>
+        <a href="#flow">Controlar fluxo</a>
+    </li>
+    <li>
+        <a href="#client">Programação de um aplicativo cliente</a>
+        <ol>
+        <li><a href="#search">Busca de documentos</a></li>
+        <li><a href="#process">Processamento de resultados</a></li>
+        <li><a href="#metadata">Examinação de metadados de documentos</a></li>
+        <li><a href="#open">Abertura de um documento</a></li>
+        <li><a href="#create">Criação de um novo documento</a></li>
+        <li><a href="#delete">Exclusão de um documento</a></li>
+        <li><a href="#edit">Edição de um documento</a></li>
+        <li><a href="#permissions">Manutenção de permissões</a></li>
+        </ol>
+    </li>
+    <li><a href="#custom">Criação de um provedor de documentos personalizado</a>
+        <ol>
+        <li><a href="#manifest">Manifesto</a></li>
+        <li><a href="#contract">Contratos</a></li>
+        <li><a href="#subclass">Subclasse DocumentsProvider</a></li>
+        <li><a href="#security">Segurança</a></li>
+        </ol>
+    </li>
+
+</ol>
+<h2>Classes principais</h2>
+<ol>
+    <li>{@link android.provider.DocumentsProvider}</li>
+    <li>{@link android.provider.DocumentsContract}</li>
+</ol>
+
+<h2>Vídeos</h2>
+
+<ol>
+    <li><a href="http://www.youtube.com/watch?v=zxHVeXbK1P4">
+DevBytes: estrutura de acesso ao armazenamento do Android 4.4: Provedor</a></li>
+     <li><a href="http://www.youtube.com/watch?v=UFj9AEz0DHQ">
+DevBytes: estrutura de acesso ao armazenamento do Android 4.4: Cliente</a></li>
+</ol>
+
+
+<h2>Amostras de código</h2>
+
+<ol>
+    <li><a href="{@docRoot}samples/StorageProvider/index.html">
+Provedor de armazenamento</a></li>
+     <li><a href="{@docRoot}samples/StorageClient/index.html">
+StorageClient</a></li>
+</ol>
+
+<h2>Veja também</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        Preceitos do provedor de conteúdo
+        </a>
+    </li>
+</ol>
+
+</div>
+</div>
+
+
+<p>O Android 4.4 (API de nível 19) introduz a Estrutura de Acesso ao Armazenamento (SAF). A SAF
+ simplifica para os usuários a busca e abertura de documentos, imagens e outros arquivos
+dentre todos os provedores de armazenamento de documentos de preferência. A interface gráfica padrão é fácil de usar
+e permite aos usuários buscar arquivos e acessar arquivos recentes de modo coerente em todos os aplicativos e provedores.</p>
+
+<p>Serviços de armazenamento local ou em nuvem podem participar desse ecossistema por meio da implementação
+de um {@link android.provider.DocumentsProvider} que encapsula os serviços. Aplicativos
+clientes que precisam acessar documentos de um provedor podem integrar-se com a SAF com apenas algumas
+linhas de código.</p>
+
+<p>A SAF contém:</p>
+
+<ul>
+<li><strong>Provedor de documentos</strong> &mdash; Provedor de conteúdo que oferece
+um serviço de armazenamento (como o Google Drive) para exibir os arquivos que gerencia. O provedor de documentos
+é implementado como uma subclasse da classe {@link android.provider.DocumentsProvider}.
+O esquema do provedor de documento se baseia em uma hierarquia de arquivo tradicional,
+embora o modo de armazenamento físico de dados do provedor de documentos seja definido pelo programador.
+A plataforma do Android contém diversos provedores de documento embutidos, como
+Downloads, Imagens e Vídeos.</li>
+
+<li><strong>Aplicativo cliente</strong> &mdash; Aplicativo personalizado que chama a intenção
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT}
+e/ou {@link android.content.Intent#ACTION_CREATE_DOCUMENT} e recebe
+os arquivos retornados pelos provedores de documentos.</li>
+
+<li><strong>Seletor</strong> &mdash; IU de sistema que permite aos usuários acessar documentos de todos
+os provedores de documentos que satisfazem os critérios de busca do aplicativo cliente.</li>
+</ul>
+
+<p>A seguir há alguns recursos oferecidos pela SAF:</p>
+<ul>
+<li>Permitir que usuários busquem conteúdo de todos os provedores de documentos, não somente de um único aplicativo.</li>
+<li>Possibilitar ao aplicativo a obtenção de acesso persistente e de longo prazo
+a documentos de propriedade de um provedor de documentos. Por meio deste acesso, os usuários podem adicionar, editar,
+ salvar e excluir arquivos no provedor.</li>
+<li>É compatível com diversas contas de usuário e raízes transitórias como provedores
+de armazenamento USB, que só aparecem se o dispositivo estiver plugado. </li>
+</ul>
+
+<h2 id ="overview">Visão geral</h2>
+
+<p>A SAF consiste em um provedor de conteúdo que é uma
+subclasse da classe {@link android.provider.DocumentsProvider}. Dentro de um <em>provedor de documentos</em>, os dados
+são estruturados como uma hierarquia de arquivo tradicional:</p>
+<p><img src="{@docRoot}images/providers/storage_datamodel.png" alt="data model" /></p>
+<p class="img-caption"><strong>Figura 1.</strong> Modelo de dados do provedor de documentos Uma Raiz aponta para um único Documento,
+que então inicia o fan-out de toda a árvore.</p>
+
+<p>Observe o seguinte:</p>
+<ul>
+
+<li>Cada provedor de documentos relata uma ou mais
+"raízes", que são pontos de partida na exploração de uma árvore de documentos.
+Cada raiz tem um {@link android.provider.DocumentsContract.Root#COLUMN_ROOT_ID} exclusivo
+e ele aponta para um documento (um diretório)
+representando o conteúdo sob essa raiz.
+As raízes têm um projeto dinâmico para oferecer compatibilidade a casos de uso como diversas contas,
+dispositivos de armazenamento USB transitórios ou login/logout do usuário.</li>
+
+<li>Sob cada raiz há um documento único. Esse documento indica 1 a <em>N</em> documentos,
+cada um deles, por sua vez, podem indicar 1 a <em>N</em> documentos. </li>
+
+<li>Cada back-end de armazenamento apresenta
+arquivos e diretórios individuais referenciando-os com um 
+{@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID} exclusivo.
+IDs de documentos devem ser exclusivos e não podem mudar depois de emitidos, pois são usados para concessões persistentes
+da URI em reinicializações do dispositivo.</li>
+
+
+<li>Documentos podem ser um arquivo ou um diretório que pode ser aberto (com um tipo MIME específico)
+ contendo documentos adicionais (com
+o tipo MIME{@link android.provider.DocumentsContract.Document#MIME_TYPE_DIR}).</li>
+
+<li>Cada documento tem diferentes recursos, como descrito por
+{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS COLUMN_FLAGS}.
+Por exemplo,{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_WRITE},
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE}
+e {@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_THUMBNAIL}.
+O mesmo {@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID} pode ser
+incluído em diversos diretórios.</li>
+</ul>
+
+<h2 id="flow">Controle de fluxo</h2>
+<p>Como indicado anteriormente, o modelo de dados do provedor de documentos se baseia
+em uma hierarquia de arquivo tradicional. Contudo, é possível armazenar os dados fisicamente como quiser desde
+que eles possam ser acessados pela API {@link android.provider.DocumentsProvider}. Por exemplo: seria
+possível usar armazenamento em nuvem com base em tag para os dados.</p>
+
+<p>A figura 2 ilustra um exemplo de um aplicativo de foto que usa a SAF
+para acessar dados armazenados:</p>
+<p><img src="{@docRoot}images/providers/storage_dataflow.png" alt="app" /></p>
+
+<p class="img-caption"><strong>Figura 2.</strong> Fluxo da estrutura de acesso ao armazenamento</p>
+
+<p>Observe o seguinte:</p>
+<ul>
+
+<li>Na SAF, provedores e clientes não interagem
+diretamente. O cliente solicita permissão para interagir
+com arquivos (ou seja, para ler, editar, criar ou excluir arquivos).</li>
+
+<li>A interação começa quando um aplicativo (neste exemplo, um aplicativo de foto) dispara a intenção
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} ou {@link android.content.Intent#ACTION_CREATE_DOCUMENT}. A intenção pode conter filtros
+para refinar ainda mais os critérios &mdash; por exemplo: "quero todos os arquivos que podem ser abertos
+e que tenham o tipo MIME de tal imagem".</li>
+
+<li>Ao disparar a intenção, o seletor do sistema contata cada provedor registrado
+e exibe as raízes de conteúdo correspondentes ao usuário.</li>
+
+<li>O seletor fornece aos usuários uma interface padrão para acessar documentos,
+embora os provedores de documentos subjacentes possam ser bem diferentes. Por exemplo: a figura 2
+exibe um provedor do Google Drive, um provedor USB e um provedor de nuvem.</li>
+</ul>
+
+<p>A figura 3 exibe um seletor em que um usuário em busca de imagens selecionou
+uma conta do Google Drive:</p>
+
+<p><img src="{@docRoot}images/providers/storage_picker.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
+
+<p class="img-caption"><strong>Figura 3.</strong> Seletor</p>
+
+<p>Quando o usuário seleciona o Google Drive, as imagens são exibidas como ilustrado
+na figura 4. Desse momento em diante, o usuário poderá interagir com eles de todos os modos
+compatíveis com o provedor e o aplicativo cliente.
+
+<p><img src="{@docRoot}images/providers/storage_photos.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
+
+<p class="img-caption"><strong>Figura 4.</strong> Imagens</p>
+
+<h2 id="client">Programação de um aplicativo cliente</h2>
+
+<p>No Android 4.3 e em versões anteriores, para o aplicativo recuperar um arquivo de outro
+aplicativo, ele precisa chamar uma intenção como {@link android.content.Intent#ACTION_PICK}
+ou {@link android.content.Intent#ACTION_GET_CONTENT}. Em seguida, o usuário deve selecionar
+um único aplicativo do qual deseja retirar um arquivo e o aplicativo selecionado deve fornecer uma interface
+do usuário para a busca e a seleção dos arquivos disponíveis. </p>
+
+<p>No Android 4.4 e em versões posteriores, existe a opção adicional de usar
+a intenção {@link android.content.Intent#ACTION_OPEN_DOCUMENT},
+que exibe uma IU do seletor controlada pelo sistema que permite ao usuário
+buscar todos os arquivos que outros aplicativos disponibilizaram. Nessa IU exclusiva,
+o usuário pode selecionar um arquivo de qualquer aplicativo compatível.</p>
+
+<p>{@link android.content.Intent#ACTION_OPEN_DOCUMENT}
+não substitui {@link android.content.Intent#ACTION_GET_CONTENT}.
+O uso de cada um deles depende da necessidade do aplicativo:</p>
+
+<ul>
+<li>Use {@link android.content.Intent#ACTION_GET_CONTENT} se deseja que o aplicativo
+simplesmente leia ou importe dados. Nessa abordagem, o aplicativo importa uma cópia dos dados,
+assim como um arquivo de imagem.</li>
+
+<li>Use {@link android.content.Intent#ACTION_OPEN_DOCUMENT} se deseja que o aplicativo
+tenha acesso persistente e de longo prazo a documentos de propriedade de um provedor
+de documentos. Um exemplo seria um aplicativo de edição de fotos que permite aos usuários editar
+imagens armazenadas em um provedor de documentos. </li>
+
+</ul>
+
+
+<p>Esta seção descreve como programar aplicativos clientes com base nas intenções 
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT}
+e {@link android.content.Intent#ACTION_CREATE_DOCUMENT}.</p>
+
+
+<h3 id="search">Busca de documentos</h3>
+
+<p>
+O fragmento a seguir usa {@link android.content.Intent#ACTION_OPEN_DOCUMENT}
+para buscar provedores de documentos
+que contenham arquivos de imagem:</p>
+
+<pre>private static final int READ_REQUEST_CODE = 42;
+...
+/**
+ * Fires an intent to spin up the &quot;file chooser&quot; UI and select an image.
+ */
+public void performFileSearch() {
+
+    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's file
+    // browser.
+    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as a
+    // file (as opposed to a list of contacts or timezones)
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Filter to show only images, using the image MIME data type.
+    // If one wanted to search for ogg vorbis files, the type would be &quot;audio/ogg&quot;.
+    // To search for all documents available via installed storage providers,
+    // it would be &quot;*/*&quot;.
+    intent.setType(&quot;image/*&quot;);
+
+    startActivityForResult(intent, READ_REQUEST_CODE);
+}</pre>
+
+<p>Observe o seguinte:</p>
+<ul>
+<li>Quando o aplicativo dispara a intenção
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT}, ele aciona um seletor que exibe todos os provedores de documentos compatíveis.</li>
+
+<li>A adição da categoria {@link android.content.Intent#CATEGORY_OPENABLE}
+à intenção filtra os resultados, que exibem somente documentos que podem ser abertos, como os arquivos de imagem.</li>
+
+<li>A declaração {@code intent.setType("image/*")} filtra ainda mais
+para exibir somente documentos que têm o tipo de dados MIME da imagem.</li>
+</ul>
+
+<h3 id="results">Processamento de resultados</h3>
+
+<p>Quando o usuário seleciona um documento no seletor,
+{@link android.app.Activity#onActivityResult onActivityResult()} é chamado.
+A URI direcionada ao documento selecionado está presente no parâmetro
+{@code resultData}. Extraia a URI usando {@link android.content.Intent#getData getData()}.
+Depois, será possível usá-la para recuperar o documento que o usuário deseja. Por
+exemplo:</p>
+
+<pre>&#64;Override
+public void onActivityResult(int requestCode, int resultCode,
+        Intent resultData) {
+
+    // The ACTION_OPEN_DOCUMENT intent was sent with the request code
+    // READ_REQUEST_CODE. If the request code seen here doesn't match, it's the
+    // response to some other intent, and the code below shouldn't run at all.
+
+    if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
+        // The document selected by the user won't be returned in the intent.
+        // Instead, a URI to that document will be contained in the return intent
+        // provided to this method as a parameter.
+        // Pull that URI using resultData.getData().
+        Uri uri = null;
+        if (resultData != null) {
+            uri = resultData.getData();
+            Log.i(TAG, "Uri: " + uri.toString());
+            showImage(uri);
+        }
+    }
+}
+</pre>
+
+<h3 id="metadata">Examinação de metadados de documentos</h3>
+
+<p>Quando tiver a URI de um documento, você terá acesso aos seus metadados. Este
+fragmento apanha os metadados de um documento especificado pela URI e registra-os:</p>
+
+<pre>public void dumpImageMetaData(Uri uri) {
+
+    // The query, since it only applies to a single document, will only return
+    // one row. There's no need to filter, sort, or select fields, since we want
+    // all fields for one document.
+    Cursor cursor = getActivity().getContentResolver()
+            .query(uri, null, null, null, null, null);
+
+    try {
+    // moveToFirst() returns false if the cursor has 0 rows.  Very handy for
+    // &quot;if there's anything to look at, look at it&quot; conditionals.
+        if (cursor != null &amp;&amp; cursor.moveToFirst()) {
+
+            // Note it's called &quot;Display Name&quot;.  This is
+            // provider-specific, and might not necessarily be the file name.
+            String displayName = cursor.getString(
+                    cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
+            Log.i(TAG, &quot;Display Name: &quot; + displayName);
+
+            int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE);
+            // If the size is unknown, the value stored is null.  But since an
+            // int can't be null in Java, the behavior is implementation-specific,
+            // which is just a fancy term for &quot;unpredictable&quot;.  So as
+            // a rule, check if it's null before assigning to an int.  This will
+            // happen often:  The storage API allows for remote files, whose
+            // size might not be locally known.
+            String size = null;
+            if (!cursor.isNull(sizeIndex)) {
+                // Technically the column stores an int, but cursor.getString()
+                // will do the conversion automatically.
+                size = cursor.getString(sizeIndex);
+            } else {
+                size = &quot;Unknown&quot;;
+            }
+            Log.i(TAG, &quot;Size: &quot; + size);
+        }
+    } finally {
+        cursor.close();
+    }
+}
+</pre>
+
+<h3 id="open-client">Abertura de um documento</h3>
+
+<p>Assim que tiver a URI de um documento, você poderá abri-lo ou fazer o que
+quiser com ele.</p>
+
+<h4>Bitmap</h4>
+
+<p>A seguir há um exemplo de como abrir um {@link android.graphics.Bitmap}:</p>
+
+<pre>private Bitmap getBitmapFromUri(Uri uri) throws IOException {
+    ParcelFileDescriptor parcelFileDescriptor =
+            getContentResolver().openFileDescriptor(uri, "r");
+    FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
+    Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
+    parcelFileDescriptor.close();
+    return image;
+}
+</pre>
+
+<p>Observe que não se deve realizar essa operação no encadeamento da IU. Faça isso
+em segundo plano usando {@link android.os.AsyncTask}. Assim que abrir o bitmap, você
+poderá exibi-lo em uma {@link android.widget.ImageView}.
+</p>
+
+<h4>Obter uma InputStream</h4>
+
+<p>Abaixo há um exemplo de como obter uma {@link java.io.InputStream} dessa URI.
+Neste fragmento, as linhas do arquivo estão sendo lidas em uma string:</p>
+
+<pre>private String readTextFromUri(Uri uri) throws IOException {
+    InputStream inputStream = getContentResolver().openInputStream(uri);
+    BufferedReader reader = new BufferedReader(new InputStreamReader(
+            inputStream));
+    StringBuilder stringBuilder = new StringBuilder();
+    String line;
+    while ((line = reader.readLine()) != null) {
+        stringBuilder.append(line);
+    }
+    fileInputStream.close();
+    parcelFileDescriptor.close();
+    return stringBuilder.toString();
+}
+</pre>
+
+<h3 id="create">Criação de um novo documento</h3>
+
+<p>O aplicativo pode criar um novo documento em um provedor de documentos usando
+a intenção
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT}. Para criar um arquivo, deve-se fornecer um tipo MIME e um nome para o arquivo à intenção
+e ativá-la com um código de solicitação exclusivo. O resto você não precisa fazer:</p>
+
+
+<pre>
+// Here are some examples of how you might call this method.
+// The first parameter is the MIME type, and the second parameter is the name
+// of the file you are creating:
+//
+// createFile("text/plain", "foobar.txt");
+// createFile("image/png", "mypicture.png");
+
+// Unique request code.
+private static final int WRITE_REQUEST_CODE = 43;
+...
+private void createFile(String mimeType, String fileName) {
+    Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as
+    // a file (as opposed to a list of contacts or timezones).
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Create a file with the requested MIME type.
+    intent.setType(mimeType);
+    intent.putExtra(Intent.EXTRA_TITLE, fileName);
+    startActivityForResult(intent, WRITE_REQUEST_CODE);
+}
+</pre>
+
+<p>Ao criar um novo documento, é possível obter sua URI
+em {@link android.app.Activity#onActivityResult onActivityResult()} para que
+seja possível continuar a gravar nele.</p>
+
+<h3 id="delete">Exclusão de um documento</h3>
+
+<p>Se você tem uma URI de um documento
+e os {@link android.provider.DocumentsContract.Document#COLUMN_FLAGS Document.COLUMN_FLAGS} do documento
+ contêm
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE SUPPORTS_DELETE},
+você pode excluir o documento. Por exemplo:</p>
+
+<pre>
+DocumentsContract.deleteDocument(getContentResolver(), uri);
+</pre>
+
+<h3 id="edit">Edição de um documento</h3>
+
+<p>Você pode usar a SAF para editar o documento de texto no local em que está armazenado.
+Esse fragmento dispara
+a intenção {@link android.content.Intent#ACTION_OPEN_DOCUMENT} e usa
+a categoria {@link android.content.Intent#CATEGORY_OPENABLE} para exibir somente
+documentos que possam ser abertos. Ela filtra ainda mais para exibir somente arquivos de texto:</p>
+
+<pre>
+private static final int EDIT_REQUEST_CODE = 44;
+/**
+ * Open a file for writing and append some text to it.
+ */
+ private void editDocument() {
+    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's
+    // file browser.
+    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as a
+    // file (as opposed to a list of contacts or timezones).
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Filter to show only text files.
+    intent.setType(&quot;text/plain&quot;);
+
+    startActivityForResult(intent, EDIT_REQUEST_CODE);
+}
+</pre>
+
+<p>Em seguida, de {@link android.app.Activity#onActivityResult onActivityResult()}
+(consulte <a href="#results">Processar resultados</a>), você pode chamar o código para realizar a edição.
+O fragmento a seguir obtém um {@link java.io.FileOutputStream}
+do {@link android.content.ContentResolver}. Por padrão, ele usa o modo de "gravação".
+Recomenda-se solicitar a menor quantidade de acesso necessária, portanto não solicite
+acesso de leitura e programação se só for necessária a programação:</p>
+
+<pre>private void alterDocument(Uri uri) {
+    try {
+        ParcelFileDescriptor pfd = getActivity().getContentResolver().
+                openFileDescriptor(uri, "w");
+        FileOutputStream fileOutputStream =
+                new FileOutputStream(pfd.getFileDescriptor());
+        fileOutputStream.write(("Overwritten by MyCloud at " +
+                System.currentTimeMillis() + "\n").getBytes());
+        // Let the document provider know you're done by closing the stream.
+        fileOutputStream.close();
+        pfd.close();
+    } catch (FileNotFoundException e) {
+        e.printStackTrace();
+    } catch (IOException e) {
+        e.printStackTrace();
+    }
+}</pre>
+
+<h3 id="permissions">Manutenção de permissões</h3>
+
+<p>Quando o aplicativo abre um arquivo para leitura ou programação, o sistema lhe fornece
+uma concessão da permissão da URI para tal arquivo. Ela vigora até a reinicialização do dispositivo do usuário.
+Contudo, suponhamos que seu aplicativo seja de edição de imagens e você queira que os usuários
+acessem as últimas 5 imagens que editaram diretamente do aplicativo. Se o dispositivo do usuário
+reiniciou, você teria que enviar o usuário de volta ao seletor do sistema para encontrar
+os arquivos, o que, obviamente, não é o ideal.</p>
+
+<p>Para evitar que isso aconteça, você pode manter as permissões que o sistema
+forneceu ao aplicativo. Efetivamente, o aplicativo "toma" a concessão de permissão da URI persistente
+que o sistema está oferecendo. Isso concede ao usuário um acesso contínuo aos arquivos 
+por meio do aplicativo mesmo se o dispositivo for reiniciado:</p>
+
+
+<pre>final int takeFlags = intent.getFlags()
+            &amp; (Intent.FLAG_GRANT_READ_URI_PERMISSION
+            | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+// Check for the freshest data.
+getContentResolver().takePersistableUriPermission(uri, takeFlags);</pre>
+
+<p>Há uma etapa final. Você pode ter salvo as URIs
+mais recentes acessadas pelo seu aplicativo, mas elas não serão mais válidas &mdash; outro aplicativo
+pode ter excluído ou modificado um documento. Portanto, deve-se sempre chamar
+{@code getContentResolver().takePersistableUriPermission()} para verificar
+se há dados mais recentes.</p>
+
+<h2 id="custom">Criação de um provedor de documentos personalizado</h2>
+
+<p>
+Se você está desenvolvimento um aplicativo que fornece serviços de armazenamento para arquivos (como
+um serviço de armazenamento em nuvem), é possível disponibilizar os arquivos
+pela SAF criando um provedor de documentos personalizado.  Esta seção mostra
+como fazê-lo.</p>
+
+
+<h3 id="manifest">Manifesto</h3>
+
+<p>Para implementar um provedor de documentos personalizado, adicione ao manifesto
+do aplicativo:</p>
+<ul>
+
+<li>Um alvo de API de nível 19 ou posterior.</li>
+
+<li>Um elemento <code>&lt;provider&gt;</code> que declare o provedor de armazenamento
+personalizado. </li>
+
+<li>O nome do provedor, que é o nome da classe, inclusive o nome do pacote.
+Por exemplo: <code>com.example.android.storageprovider.MyCloudProvider</code>.</li>
+
+<li>O nome da autoridade, que é o nome do pacote (neste exemplo,
+<code>com.example.android.storageprovider</code>) e o tipo de provedor de conteúdo
+(<code>documents</code>). Por exemplo: {@code com.example.android.storageprovider.documents}.</li>
+
+<li>O atributo <code>android:exported</code> definido como <code>&quot;true&quot;</code>.
+É necessário exportar o provedor para que outros aplicativos possam vê-lo.</li>
+
+<li>O atributo <code>android:grantUriPermissions</code> definido como
+<code>&quot;true&quot;</code>. Essa configuração permite ao sistema conceder acesso ao conteúdo
+no provedor a outros aplicativos. Para ver como manter uma concessão
+para determinado documento, consulte <a href="#permissions">Manutenção de permissões</a>.</li>
+
+<li>A permissão {@code MANAGE_DOCUMENTS}. Por padrão, um provedor está disponível
+para todos. A adição dessa permissão restringirá o provedor em relação ao sistema.
+Essa restrição é importante em termos de segurança.</li>
+
+<li>O atributo {@code android:enabled} definido como um valor booleano determinado em um arquivo
+de recursos. Esse atributo visa desativar o provedor em dispositivos que executam o Android 4.3 ou versões anteriores.
+Por exemplo: {@code android:enabled="@bool/atLeastKitKat"}. Além
+disso, para incluir esse atributo no manifesto, deve-se fazer o seguinte:
+<ul>
+<li>No arquivo de recursos {@code bool.xml} em {@code res/values/}, adicione
+esta linha: <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;false&lt;/bool&gt;</pre></li>
+
+<li>No arquivo de recursos {@code bool.xml} em {@code res/values-v19/}, adicione
+esta linha: <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;true&lt;/bool&gt;</pre></li>
+</ul></li>
+
+<li>Um filtro de intenções que contenha
+a ação {@code android.content.action.DOCUMENTS_PROVIDER} para que o provedor
+apareça no seletor quando o sistema procurar provedores.</li>
+
+</ul>
+<p>Abaixo há alguns excertos de amostra de um manifesto que contém um provedor:</p>
+
+<pre>&lt;manifest... &gt;
+    ...
+    &lt;uses-sdk
+        android:minSdkVersion=&quot;19&quot;
+        android:targetSdkVersion=&quot;19&quot; /&gt;
+        ....
+        &lt;provider
+            android:name=&quot;com.example.android.storageprovider.MyCloudProvider&quot;
+            android:authorities=&quot;com.example.android.storageprovider.documents&quot;
+            android:grantUriPermissions=&quot;true&quot;
+            android:exported=&quot;true&quot;
+            android:permission=&quot;android.permission.MANAGE_DOCUMENTS&quot;
+            android:enabled=&quot;&#64;bool/atLeastKitKat&quot;&gt;
+            &lt;intent-filter&gt;
+                &lt;action android:name=&quot;android.content.action.DOCUMENTS_PROVIDER&quot; /&gt;
+            &lt;/intent-filter&gt;
+        &lt;/provider&gt;
+    &lt;/application&gt;
+
+&lt;/manifest&gt;</pre>
+
+<h4 id="43">Compatibilidade com dispositivos que executam Android 4.3 ou anterior</h4>
+
+<p>
+A intenção {@link android.content.Intent#ACTION_OPEN_DOCUMENT} está disponível somente
+em dispositivos que executam o Android 4.4 ou posteriores.
+Se você deseja que o aplicativo seja compatível com {@link android.content.Intent#ACTION_GET_CONTENT}
+para adaptar-se a dispositivos que executam o Android 4.3 ou versões anteriores, é necessário
+desativar o filtro de intenção {@link android.content.Intent#ACTION_GET_CONTENT}
+no manifesto para dispositivos que executam Android 4.4 ou versões posteriores. 
+Um provedor de documentos e {@link android.content.Intent#ACTION_GET_CONTENT} devem ser avaliados
+de forma mutuamente exclusiva. Se houver compatibilidade com ambos simultaneamente, o aplicativo
+aparecerá duas vezes na IU do seletor do sistema, oferecendo dois meios de acesso
+diferentes aos dados armazenados. Isso pode confundir os usuários.</p>
+
+<p>A seguir apresenta-se a forma recomendada de desativar
+o filtro de intenções {@link android.content.Intent#ACTION_GET_CONTENT} para dispositivos
+que executam o Android 4.4 ou versões posteriores:</p>
+
+<ol>
+<li>No arquivo de recursos {@code bool.xml} em {@code res/values/}, adicione
+esta linha: <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;true&lt;/bool&gt;</pre></li>
+
+<li>No arquivo de recursos {@code bool.xml} em {@code res/values-v19/}, adicione
+esta linha: <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;false&lt;/bool&gt;</pre></li>
+
+<li>Adicione
+um <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">alias
+de atividade</a> para desativar o filtro de intenções
+{@link android.content.Intent#ACTION_GET_CONTENT} para versões 4.4 (API de nível 19) e posteriores. Por exemplo:
+
+<pre>
+&lt;!-- This activity alias is added so that GET_CONTENT intent-filter
+     can be disabled for builds on API level 19 and higher. --&gt;
+&lt;activity-alias android:name=&quot;com.android.example.app.MyPicker&quot;
+        android:targetActivity=&quot;com.android.example.app.MyActivity&quot;
+        ...
+        android:enabled=&quot;@bool/atMostJellyBeanMR2&quot;&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name=&quot;android.intent.action.GET_CONTENT&quot; /&gt;
+        &lt;category android:name=&quot;android.intent.category.OPENABLE&quot; /&gt;
+        &lt;category android:name=&quot;android.intent.category.DEFAULT&quot; /&gt;
+        &lt;data android:mimeType=&quot;image/*&quot; /&gt;
+        &lt;data android:mimeType=&quot;video/*&quot; /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity-alias&gt;
+</pre>
+</li>
+</ol>
+<h3 id="contract">Contratos</h3>
+
+<p>Normalmente, ao criar um provedor de conteúdo personalizado, uma das tarefas
+é implementar classes de contrato, como descrito
+no guia dos desenvolvedores de<a href="{@docRoot}guide/topics/providers/content-provider-creating.html#ContractClass">
+Provedores de conteúdo</a>. Classe de contrato é uma classe {@code public final}
+que contém definições constantes das URIs, nomes de coluna, tipos MIME
+e outros metadados que pertencem ao provedor. A SAF
+fornece essas classes de contrato, portanto não é necessário
+programá-las:</p>
+
+<ul>
+   <li>{@link android.provider.DocumentsContract.Document}</li>
+   <li>{@link android.provider.DocumentsContract.Root}</li>
+</ul>
+
+<p>Por exemplo, eis as colunas que podem retornar em um cursor
+ao consultar documentos ou a raiz do provedor de documentos:</p>
+
+<pre>private static final String[] DEFAULT_ROOT_PROJECTION =
+        new String[]{Root.COLUMN_ROOT_ID, Root.COLUMN_MIME_TYPES,
+        Root.COLUMN_FLAGS, Root.COLUMN_ICON, Root.COLUMN_TITLE,
+        Root.COLUMN_SUMMARY, Root.COLUMN_DOCUMENT_ID,
+        Root.COLUMN_AVAILABLE_BYTES,};
+private static final String[] DEFAULT_DOCUMENT_PROJECTION = new
+        String[]{Document.COLUMN_DOCUMENT_ID, Document.COLUMN_MIME_TYPE,
+        Document.COLUMN_DISPLAY_NAME, Document.COLUMN_LAST_MODIFIED,
+        Document.COLUMN_FLAGS, Document.COLUMN_SIZE,};
+</pre>
+
+<h3 id="subclass">Subclasse DocumentsProvider</h3>
+
+<p>A próxima etapa na criação de um provedor de documentos personalizado é atribuir uma subclasse à
+classe {@link android.provider.DocumentsProvider} abstrata. No mínimo, é necessário
+implementar os seguintes métodos:</p>
+
+<ul>
+<li>{@link android.provider.DocumentsProvider#queryRoots queryRoots()}</li>
+
+<li>{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}</li>
+
+<li>{@link android.provider.DocumentsProvider#queryDocument queryDocument()}</li>
+
+<li>{@link android.provider.DocumentsProvider#openDocument openDocument()}</li>
+</ul>
+
+<p>Esses são os únicos métodos que obrigatoriamente devem ser implementados, mas há
+muitos outros que podem ser usados. Consulte {@link android.provider.DocumentsProvider}
+para ver mais detalhes.</p>
+
+<h4 id="queryRoots">Implementação de queryRoots</h4>
+
+<p>A implementação de {@link android.provider.DocumentsProvider#queryRoots
+queryRoots()} deve retornar um {@link android.database.Cursor} que aponta para todos
+os diretórios raiz dos provedores de documentos, usando colunas definidas
+em {@link android.provider.DocumentsContract.Root}.</p>
+
+<p>No fragmento a seguir, o parâmetro {@code projection} representa
+os campos específicos que o autor da chamada quer receber de volta. O fragmento cria um novo cursor
+e adiciona-lhe uma linha &mdash; uma raiz, um diretório de nível superior, como
+Downloads ou Imagens.  A maioria dos provedores tem somente uma raiz. É possível ter mais de uma,
+por exemplo, no caso de diversas contas de usuário. Nesse caso, adicione somente
+uma segunda linha ao cursor.</p>
+
+<pre>
+&#64;Override
+public Cursor queryRoots(String[] projection) throws FileNotFoundException {
+
+    // Create a cursor with either the requested fields, or the default
+    // projection if "projection" is null.
+    final MatrixCursor result =
+            new MatrixCursor(resolveRootProjection(projection));
+
+    // If user is not logged in, return an empty root cursor.  This removes our
+    // provider from the list entirely.
+    if (!isUserLoggedIn()) {
+        return result;
+    }
+
+    // It's possible to have multiple roots (e.g. for multiple accounts in the
+    // same app) -- just add multiple cursor rows.
+    // Construct one row for a root called &quot;MyCloud&quot;.
+    final MatrixCursor.RowBuilder row = result.newRow();
+    row.add(Root.COLUMN_ROOT_ID, ROOT);
+    row.add(Root.COLUMN_SUMMARY, getContext().getString(R.string.root_summary));
+
+    // FLAG_SUPPORTS_CREATE means at least one directory under the root supports
+    // creating documents. FLAG_SUPPORTS_RECENTS means your application's most
+    // recently used documents will show up in the &quot;Recents&quot; category.
+    // FLAG_SUPPORTS_SEARCH allows users to search all documents the application
+    // shares.
+    row.add(Root.COLUMN_FLAGS, Root.FLAG_SUPPORTS_CREATE |
+            Root.FLAG_SUPPORTS_RECENTS |
+            Root.FLAG_SUPPORTS_SEARCH);
+
+    // COLUMN_TITLE is the root title (e.g. Gallery, Drive).
+    row.add(Root.COLUMN_TITLE, getContext().getString(R.string.title));
+
+    // This document id cannot change once it's shared.
+    row.add(Root.COLUMN_DOCUMENT_ID, getDocIdForFile(mBaseDir));
+
+    // The child MIME types are used to filter the roots and only present to the
+    //  user roots that contain the desired type somewhere in their file hierarchy.
+    row.add(Root.COLUMN_MIME_TYPES, getChildMimeTypes(mBaseDir));
+    row.add(Root.COLUMN_AVAILABLE_BYTES, mBaseDir.getFreeSpace());
+    row.add(Root.COLUMN_ICON, R.drawable.ic_launcher);
+
+    return result;
+}</pre>
+
+<h4 id="queryChildDocuments">Implementação de queryChildDocuments</h4>
+
+<p>A implementação
+de {@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}
+deve retornar um {@link android.database.Cursor} que aponta para todos os arquivos
+no diretório especificado com colunas definidas em
+{@link android.provider.DocumentsContract.Document}.</p>
+
+<p>Esse método é chamado quando uma raiz do aplicativo é escolhida na IU do seletor.
+Ele coleta os documentos filhos de um diretório na raiz.  Ele pode ser chamado em qualquer nível
+na hierarquia de arquivos, não somente na raiz. Esse fragmento
+cria um novo cursor com as colunas solicitadas e, em seguida, adiciona informações ao cursor
+sobre cada filho imediato no diretório pai.
+O filho pode ser uma imagem, outro diretório &mdash; qualquer arquivo:</p>
+
+<pre>&#64;Override
+public Cursor queryChildDocuments(String parentDocumentId, String[] projection,
+                              String sortOrder) throws FileNotFoundException {
+
+    final MatrixCursor result = new
+            MatrixCursor(resolveDocumentProjection(projection));
+    final File parent = getFileForDocId(parentDocumentId);
+    for (File file : parent.listFiles()) {
+        // Adds the file's display name, MIME type, size, and so on.
+        includeFile(result, null, file);
+    }
+    return result;
+}
+</pre>
+
+<h4 id="queryDocument">Implementação de queryDocument</h4>
+
+<p>A implementação de
+{@link android.provider.DocumentsProvider#queryDocument queryDocument()}
+deve retornar um {@link android.database.Cursor} que aponta para o arquivo especificado
+com colunas definidas em {@link android.provider.DocumentsContract.Document}.
+</p>
+
+<p>O método {@link android.provider.DocumentsProvider#queryDocument queryDocument()}
+retorna as mesmas informações passadas em
+{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()},
+mas para um arquivo específico.</p>
+
+
+<pre>&#64;Override
+public Cursor queryDocument(String documentId, String[] projection) throws
+        FileNotFoundException {
+
+    // Create a cursor with the requested projection, or the default projection.
+    final MatrixCursor result = new
+            MatrixCursor(resolveDocumentProjection(projection));
+    includeFile(result, documentId, null);
+    return result;
+}
+</pre>
+
+<h4 id="openDocument">Implementação de openDocument</h4>
+
+<p>Deve-se implementar {@link android.provider.DocumentsProvider#openDocument
+openDocument()} para retornar um {@link android.os.ParcelFileDescriptor} que represente
+o arquivo especificado. Outros aplicativos podem usar o {@link android.os.ParcelFileDescriptor} retornado
+para transmitir dados. O sistema chama esse método quando o usuário seleciona um arquivo
+e o aplicativo cliente solicita acesso a ele chamando
+{@link android.content.ContentResolver#openFileDescriptor openFileDescriptor()}.
+Por exemplo:</p>
+
+<pre>&#64;Override
+public ParcelFileDescriptor openDocument(final String documentId,
+                                         final String mode,
+                                         CancellationSignal signal) throws
+        FileNotFoundException {
+    Log.v(TAG, &quot;openDocument, mode: &quot; + mode);
+    // It's OK to do network operations in this method to download the document,
+    // as long as you periodically check the CancellationSignal. If you have an
+    // extremely large file to transfer from the network, a better solution may
+    // be pipes or sockets (see ParcelFileDescriptor for helper methods).
+
+    final File file = getFileForDocId(documentId);
+
+    final boolean isWrite = (mode.indexOf('w') != -1);
+    if(isWrite) {
+        // Attach a close listener if the document is opened in write mode.
+        try {
+            Handler handler = new Handler(getContext().getMainLooper());
+            return ParcelFileDescriptor.open(file, accessMode, handler,
+                        new ParcelFileDescriptor.OnCloseListener() {
+                &#64;Override
+                public void onClose(IOException e) {
+
+                    // Update the file with the cloud server. The client is done
+                    // writing.
+                    Log.i(TAG, &quot;A file with id &quot; +
+                    documentId + &quot; has been closed!
+                    Time to &quot; +
+                    &quot;update the server.&quot;);
+                }
+
+            });
+        } catch (IOException e) {
+            throw new FileNotFoundException(&quot;Failed to open document with id &quot;
+            + documentId + &quot; and mode &quot; + mode);
+        }
+    } else {
+        return ParcelFileDescriptor.open(file, accessMode);
+    }
+}
+</pre>
+
+<h3 id="security">Segurança</h3>
+
+<p>Suponha que o provedor de documentos seja um serviço de armazenamento em nuvem protegido por senha
+e que você queira certificar-se de que os usuários estejam conectados antes de iniciar o compartilhamento dos arquivos.
+O que o aplicativo deve fazer se o usuário não estiver conectado?  A solução é retornar
+zero raiz na implementação de {@link android.provider.DocumentsProvider#queryRoots
+queryRoots()}, ou seja, um cursor de raiz vazio:</p>
+
+<pre>
+public Cursor queryRoots(String[] projection) throws FileNotFoundException {
+...
+    // If user is not logged in, return an empty root cursor.  This removes our
+    // provider from the list entirely.
+    if (!isUserLoggedIn()) {
+        return result;
+}
+</pre>
+
+<p>A outra etapa é chamar {@code getContentResolver().notifyChange()}.
+Lembra-se do {@link android.provider.DocumentsContract}?  Estamos usando-o para criar
+esta URI. O fragmento a seguir pede ao sistema que consulte as raízes
+do provedor de documentos sempre que o status de login do usuário mudar. Se o usuário não estiver
+conectado, uma chamada de {@link android.provider.DocumentsProvider#queryRoots queryRoots()} retornará um
+cursor vazio, como exibido anteriormente. Isso garante que os documentos do provedor estejam
+disponíveis somente se o usuário tiver acesso ao provedor.</p>
+
+<pre>private void onLoginButtonClick() {
+    loginOrLogout();
+    getContentResolver().notifyChange(DocumentsContract
+            .buildRootsUri(AUTHORITY), null);
+}
+</pre>
\ No newline at end of file
diff --git a/docs/html-intl/intl/pt-br/guide/topics/resources/accessing-resources.jd b/docs/html-intl/intl/pt-br/guide/topics/resources/accessing-resources.jd
new file mode 100644
index 0000000..f196dfe
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/resources/accessing-resources.jd
@@ -0,0 +1,337 @@
+page.title=Acesso aos recursos
+parent.title=Recursos de aplicativos
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Visualização rápida</h2>
+  <ul>
+    <li>Recursos podem ser referenciados a partir do código usando números inteiros de {@code R.java}, como
+{@code R.drawable.myimage}</li>
+    <li>Recursos podem ser referenciados de recursos usando uma sintaxe XML especial, como {@code
+&#64;drawable/myimage}</li>
+    <li>Também é possível acessar os recursos do aplicativo com métodos em 
+{@link android.content.res.Resources}</li>
+  </ul>
+
+  <h2>Classes principais</h2>
+  <ol>
+    <li>{@link android.content.res.Resources}</li>
+  </ol>
+
+  <h2>Neste documento</h2>
+  <ol>
+    <li><a href="#ResourcesFromCode">Acesso aos recursos do código</a></li>
+    <li><a href="#ResourcesFromXml">Acesso aos recursos do XML</a>
+      <ol>
+        <li><a href="#ReferencesToThemeAttributes">Referência a atributos de estilo</a></li>
+      </ol>
+    </li>
+    <li><a href="#PlatformResources">Acesso aos recursos da plataforma</a></li>
+  </ol>
+
+  <h2>Veja também</h2>
+  <ol>
+    <li><a href="providing-resources.html">Fornecimento de recursos</a></li>
+    <li><a href="available-resources.html">Tipos de recursos</a></li>
+  </ol>
+</div>
+</div>
+
+
+
+
+<p>Depois de fornecer um recurso no aplicativo (discutido em <a href="providing-resources.html">Fornecimento de recursos</a>), é possível aplicá-lo
+referenciando seu ID de recurso. Todos os IDs de recursos são definidos na classe {@code R} do projeto, que 
+a ferramenta {@code aapt} gera automaticamente.</p>
+
+<p>Quando o aplicativo é compilado, {@code aapt} gera a classe {@code R}, que contém 
+IDs de recursos para todos os recursos no diretório {@code
+res/}. Para cada tipo de recurso, há uma subclasse {@code R} (por exemplo,
+{@code R.drawable} para todos os recursos desenháveis) e, para cada recurso daquele tipo, há um número inteiro
+estático (por exemplo, {@code R.drawable.icon}). Esse número inteiro é o ID do recurso que pode ser usado para
+recuperá-lo.</p>
+
+<p>Apesar de a classe {@code R} ser o local onde os IDs de recursos são especificados, não deve nunca ser necessário
+verificá-la para descobrir um ID de recurso. Ele é sempre composto de:</p>
+<ul>
+  <li>O <em>tipo de recurso</em>: cada recurso é agrupado em um "tipo", como {@code
+string}, {@code drawable} e {@code layout}. Para saber mais sobre os diferentes tipos, consulte <a href="available-resources.html">Tipos de recursos</a>.
+  </li>
+  <li>O <em>nome do recurso</em>, que é: o nome do arquivo,
+excluindo a extensão; ou o valor no atributo {@code android:name} do XML, se o 
+recurso for um valor simples (como uma string).</li>
+</ul>
+
+<p>Há duas formas de acessar um recurso:</p>
+<ul>
+  <li><strong>No código:</strong> Usando um número inteiro estático de uma subclasse de sua classe {@code R},
+como:
+    <pre class="classic no-pretty-print">R.string.hello</pre>
+    <p>{@code string} é o tipo de recurso e {@code hello} é o nome do recurso. Há muitas
+APIs do Android que podem acessar os seus recursos quando você fornece um ID de recurso nesse formato. Consulte
+<a href="#ResourcesFromCode">Acesso aos recursos no código</a>.</p>
+  </li>
+  <li><strong>No XML:</strong> usando uma sintaxe XML especial que também corresponde ao
+ID de recurso definido em sua classe {@code R}, como:
+    <pre class="classic no-pretty-print">&#64;string/hello</pre>
+    <p>{@code string} é o tipo de recurso e {@code hello} é o nome do recurso. Você pode usar essa
+sintaxe em um recurso XML em qualquer lugar em que um valor é esperado e que seja fornecido em um recurso. Consulte <a href="#ResourcesFromXml">Acesso aos recursos do XML</a>.</p>
+  </li>
+</ul>
+
+
+
+<h2 id="ResourcesFromCode">Acesso aos recursos no código </h2>
+
+<p>Você pode usar um recurso no código passando o ID do recurso como um parâmetro do método. Por
+exemplo, é possível definir uma {@link android.widget.ImageView} para usar o recurso {@code res/drawable/myimage.png}
+usando {@link android.widget.ImageView#setImageResource(int) setImageResource()}:</p>
+<pre>
+ImageView imageView = (ImageView) findViewById(R.id.myimageview);
+imageView.setImageResource(<strong>R.drawable.myimage</strong>);
+</pre>
+
+<p>Também é possível recuperar recursos individuais usando métodos em {@link
+android.content.res.Resources}, dos quais é possível obter uma instância
+com {@link android.content.Context#getResources()}.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>Acesso aos arquivos originais</h2>
+
+<p>Apesar de ser incomum, pode ser necessário acessar os arquivos e os diretórios originais. Nesse caso, 
+salvar os arquivos em {@code res/} não funcionará, pois a única forma de ler um recurso de
+{@code res/} é com o ID do recurso. Em vez disso, é possível salvar os recursos no
+diretório {@code assets/}.</p>
+<p>Arquivos salvos no diretório {@code assets/} <em>não</em> recebem um ID de recurso,
+portanto, não é possível referenciá-los com a classe {@code R} nem de recursos XML. Em vez disso, é possível
+consultar arquivos no diretório {@code assets/} como um sistema de arquivos normal e ler dados brutos usando o
+{@link android.content.res.AssetManager}.</p>
+<p>No entanto, se você só precisa da capacidade de ler dados brutos (como um arquivo de vídeo ou áudio),
+salve o arquivo no diretório {@code res/raw/} e leia um fluxo de bytes usando {@link
+android.content.res.Resources#openRawResource(int) openRawResource()}.</p>
+
+</div>
+</div>
+
+
+<h3>Sintaxe</h3>
+
+<p>Esta é a sintaxe para referenciar um recurso no código:</p>
+
+<pre class="classic no-pretty-print">
+[<em>&lt;package_name&gt;</em>.]R.<em>&lt;resource_type&gt;</em>.<em>&lt;resource_name&gt;</em>
+</pre>
+
+<ul>
+  <li><em>{@code &lt;package_name&gt;}</em> é o nome do pacote no qual o recurso está localizado (não
+é obrigatório ao referenciar recursos de seu próprio pacote).</li>
+  <li><em>{@code &lt;resource_type&gt;}</em> é a subclasse {@code R} do tipo de recurso.</li>
+  <li><em>{@code &lt;resource_name&gt;}</em> é o nome do arquivo do recurso
+sem a extensão ou o valor do atributo {@code android:name} no elemento XML (para valores
+simples).</li>
+</ul>
+<p>Consulte <a href="available-resources.html">Tipos de recursos</a> para
+obter mais informações sobre cada tipo de recurso e como referenciá-los.</p>
+
+
+<h3>Casos de uso</h3>
+
+<p>Há muitos métodos que aceitam um parâmetro de ID de recurso e você pode recuperar recursos usando 
+métodos em {@link android.content.res.Resources}. É possível obter uma instância de {@link
+android.content.res.Resources} com {@link android.content.Context#getResources
+Context.getResources()}.</p>
+
+
+<p>Abaixo há alguns exemplos do acesso aos recursos no código:</p>
+
+<pre>
+// Load a background for the current screen from a drawable resource
+{@link android.app.Activity#getWindow()}.{@link
+android.view.Window#setBackgroundDrawableResource(int)
+setBackgroundDrawableResource}(<strong>R.drawable.my_background_image</strong>) ;
+
+// Set the Activity title by getting a string from the Resources object, because
+//  this method requires a CharSequence rather than a resource ID
+{@link android.app.Activity#getWindow()}.{@link android.view.Window#setTitle(CharSequence)
+setTitle}(getResources().{@link android.content.res.Resources#getText(int)
+getText}(<strong>R.string.main_title</strong>));
+
+// Load a custom layout for the current screen
+{@link android.app.Activity#setContentView(int)
+setContentView}(<strong>R.layout.main_screen</strong>);
+
+// Set a slide in animation by getting an Animation from the Resources object
+mFlipper.{@link android.widget.ViewAnimator#setInAnimation(Animation)
+setInAnimation}(AnimationUtils.loadAnimation(this,
+        <strong>R.anim.hyperspace_in</strong>));
+
+// Set the text on a TextView object using a resource ID
+TextView msgTextView = (TextView) findViewById(<strong>R.id.msg</strong>);
+msgTextView.{@link android.widget.TextView#setText(int)
+setText}(<strong>R.string.hello_message</strong>);
+</pre>
+
+
+<p class="caution"><strong>Atenção:</strong> nunca modifique o arquivo {@code
+R.java} manualmente &mdash; ele é gerado pela ferramenta {@code aapt} quando o projeto é 
+compilado. As alterações serão sobrepostas na próxima compilação.</p>
+
+
+
+<h2 id="ResourcesFromXml">Acesso aos recursos do XML</h2>
+
+<p>Você pode definir valores para alguns atributos e elementos XML usando uma
+referência a um recurso existente. Isso será feito com frequência ao criar arquivos de layout
+para fornecer strings e imagens para os widgets.</p>
+
+<p>Por enviar mensagem de texto, se você adicionar um {@link android.widget.Button} ao layout, deverá usar
+um <a href="string-resource.html">recurso de string</a> para o texto do botão:</p>
+
+<pre>
+&lt;Button
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:text="<strong>@string/submit</strong>" /&gt;
+</pre>
+
+
+<h3>Sintaxe</h3>
+
+<p>Esta é a sintaxe para referenciar um recurso em um recurso XML:</p>
+
+<pre class="classic no-pretty-print">
+&#64;[<em>&lt;package_name&gt;</em>:]<em>&lt;resource_type&gt;</em>/<em>&lt;resource_name&gt;</em>
+</pre>
+
+<ul>
+  <li>{@code &lt;package_name&gt;} é o nome do pacote no qual o recurso está localizado (não
+é obrigatório ao referenciar recursos do mesmo pacote).</li>
+  <li>{@code &lt;resource_type&gt;} é a subclasse 
+{@code R} do tipo de recurso.</li>
+  <li>{@code &lt;resource_name&gt;} é o nome do arquivo do recurso
+sem a extensão ou o valor do atributo {@code android:name} no elemento XML (para valores
+simples).</li>
+</ul>
+
+<p>Consulte <a href="available-resources.html">Tipos de recursos</a> para
+obter mais informações sobre cada tipo de recurso e como referenciá-los.</p>
+
+
+<h3>Casos de uso</h3>
+
+<p>Em alguns casos, é preciso usar um recurso para um valor em XML (por exemplo, para aplicar uma imagem desenhável
+a um widget), mas você também pode usar um recurso em XML em qualquer lugar que aceite um valor simples. Por
+exemplo, se você tiver o seguinte arquivo de recursos que inclui um <a href="more-resources.html#Color">recurso de cor</a> e um <a href="string-resource.html">recurso de string</a>:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+   &lt;color name="opaque_red">#f00&lt;/color>
+   &lt;string name="hello">Hello!&lt;/string>
+&lt;/resources>
+</pre>
+
+<p>É possível usar esses recursos no arquivo de layout a seguir para definir a cor to texto e a
+string do texto:</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;fill_parent&quot;
+    android:textColor=&quot;<strong>&#64;color/opaque_red</strong>&quot;
+    android:text=&quot;<strong>&#64;string/hello</strong>&quot; /&gt;
+</pre>
+
+<p>Nesse caso, não é preciso especificar o nome do pacote na referência do recurso porque os
+recursos são de seu próprio pacote. Para
+referenciar um recurso do sistema, é preciso incluir o nome do pacote. Por exemplo:</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;fill_parent&quot;
+    android:textColor=&quot;<strong>&#64;android:color/secondary_text_dark</strong>&quot;
+    android:text=&quot;&#64;string/hello&quot; /&gt;
+</pre>
+
+<p class="note"><strong>Observação:</strong> você deve usar recursos de string
+o tempo inteiro para que o seu aplicativo possa ser localizado para outros idiomas. 
+Para obter informações sobre a criação de recursos
+alternativos (como strings localizadas), consulte <a href="providing-resources.html#AlternativeResources">Fornecimento de recursos 
+alternativos</a>. Para obter um guia completo para localizar o aplicativo para outros idiomas, 
+consulte <a href="localization.html">Localização</a>.</p>
+
+<p>Você pode até mesmo usar recursos em XML para criar alias. Por exemplo, é possível criar um recurso
+desenhável que seja um alias para outro recurso desenhável:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/other_drawable" />
+</pre>
+
+<p>Isso parece redundante, mas pode ser muito útil ao usar um recurso alternativo. Leia mais sobre
+<a href="providing-resources.html#AliasResources">Criação de recursos de alias</a>.</p>
+
+
+
+<h3 id="ReferencesToThemeAttributes">Referência a atributos de estilo</h3>
+
+<p>Um recurso de atributo de estilo permite referenciar o valor
+de um atributo no tema atualmente aplicado. Referenciar um atributo de estilo permite
+personalizar a aparência de elementos da IU deixando-os com estilo que corresponda a variações padrão fornecidas pelo
+tema atual, em vez de fornecer um valor codificado. Referenciar um atributo de estilo
+essencialmente significa "usar o estilo que é definido por esse atributo no tema atual".</p>
+
+<p>Para referenciar um atributo de estilo, a sintaxe do nome é quase idêntica ao formato normal de recurso,
+mas, em vez de o símbolo arroba ({@code @}), use um ponto de interrogação ({@code ?}). Além disso, 
+a parte do tipo de recurso é opcional. Por exemplo:</p>
+
+<pre class="classic">
+?[<em>&lt;package_name&gt;</em>:][<em>&lt;resource_type&gt;</em>/]<em>&lt;resource_name&gt;</em>
+</pre>
+
+<p>Por exemplo, abaixo apresenta-se como você pode referenciar um atributo para definir a cor do texto para que corresponda à 
+cor "principal" do texto do tema do sistema:</p>
+
+<pre>
+&lt;EditText id=&quot;text&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;wrap_content&quot;
+    android:textColor=&quot;<strong>?android:textColorSecondary</strong>&quot;
+    android:text=&quot;&#64;string/hello_world&quot; /&gt;
+</pre>
+
+<p>Aqui, o atributo {@code android:textColor} especifica o nome de um atributo de estilo
+no tema atual. O Android agora usa o valor aplicado ao atributo de estilo {@code android:textColorSecondary}
+como o valor para {@code android:textColor} nesse widget. Como a ferramenta de recursos
+do sistema sabe que um recurso de atributo é esperado nesse contexto,
+não é preciso declarar explicitamente o tipo (que seria
+<code>?android:attr/textColorSecondary</code>) &mdash; você pode excluir o tipo de {@code attr}.</p>
+
+
+
+
+<h2 id="PlatformResources">Acesso aos recursos da plataforma</h2>
+
+<p>O Android contém uma série de recursos padrão, como estilos, temas e layouts. Para
+acessá-los, qualifique a referência de recurso com o 
+nome do pacote <code>android</code>. Por exemplo, o Android fornece um recurso de layout que pode ser usado para
+listar itens em um {@link android.widget.ListAdapter}:</p>
+
+<pre>
+{@link android.app.ListActivity#setListAdapter(ListAdapter)
+setListAdapter}(new {@link
+android.widget.ArrayAdapter}&lt;String&gt;(this, <strong>android.R.layout.simple_list_item_1</strong>, myarray));
+</pre>
+
+<p>Nesse exemplo, {@link android.R.layout#simple_list_item_1} é um recurso de layout definido pela
+plataforma para itens em uma {@link android.widget.ListView}. Você pode usá-lo em vez de criar o
+próprio layout para itens de lista. Para obter mais informações, consulte o
+guia do desenvolvedor de <a href="{@docRoot}guide/topics/ui/layout/listview.html">Vista de lista</a>.</p>
+
diff --git a/docs/html-intl/intl/pt-br/guide/topics/resources/overview.jd b/docs/html-intl/intl/pt-br/guide/topics/resources/overview.jd
new file mode 100644
index 0000000..5bf37e6
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/resources/overview.jd
@@ -0,0 +1,103 @@
+page.title=Visão geral dos recursos
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Tópicos</h2>
+  <ol>
+    <li><a href="providing-resources.html">Fornecimento de recursos</a></li>
+    <li><a href="accessing-resources.html">Acesso aos recursos</a></li>
+    <li><a href="runtime-changes.html">Tratamento de alterações em tempo de execução</a></li>
+    <li><a href="localization.html">Localização</a></li>
+  </ol>
+
+  <h2>Referência</h2>
+  <ol>
+    <li><a href="available-resources.html">Tipos de recursos</a></li>
+  </ol>
+</div>
+</div>
+
+
+<p>Deve-se sempre exteriorizar os recursos do aplicativo, como imagens e strings do código do aplicativo,
+para que você possa mantê-los independentemente. Exteriorizar os recursos
+também permite fornecer recursos alternativos que sejam compatíveis com configurações
+de dispositivos específicos, como idiomas ou tamanhos de tela diferentes, que se tornam cada vez
+mais importantes à medida que mais dispositivos com Android são disponibilizados com configurações diferentes. Para fornecer
+compatibilidade com diferentes configurações, é preciso organizar recursos no 
+diretório {@code res/} de seu projeto usando vários subdiretórios que agrupem recursos por tipo e 
+configuração.</p>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram1.png" height="167" alt="" />
+<p class="img-caption">
+<strong>Figura 1.</strong> Dois dispositivos diferentes, cada um usando o layout padrão
+(o aplicativo não fornece layouts alternativos).</p>
+</div>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
+<p class="img-caption">
+<strong>Figura 2.</strong> Dois dispositivos diferentes, cada um usando um layout diferente fornecido
+para diferentes tamanhos de tela.</p>
+</div>
+
+<p>Para qualquer tipo de recurso, é possível especificar recursos <em>padrão</em> e vários recursos
+<em>alternativos</em> para o aplicativo:</p>
+<ul>
+  <li>Recursos padrão são aqueles que devem ser usados independentemente
+da configuração do dispositivo ou quando não há recursos alternativos que correspondam à
+configuração atual.</li>
+  <li>Recursos alternativos são aqueles projetados para uso com uma configuração
+específica. Para definir que um grupo de recursos é para uma configuração específica,
+anexe um qualificador de configuração apropriado ao nome do diretório.</li>
+</ul>
+
+<p>Por exemplo, enquanto o layout da IU padrão
+é salvo no diretório {@code res/layout/}, é possível especificar um layout diferente
+a ser usado quando a tela está na orientação de paisagem salvando-o no diretório {@code res/layout-land/}
+. O Android automaticamente aplica os recursos adequados correspondendo
+a configuração atual do dispositivo com os nomes de diretórios de recursos.</p>
+
+<p>A figura 1 ilustra como o sistema aplica o mesmo layout para dois
+dispositivos diferentes quando não há recursos alternativos disponíveis. A figura 2 mostra
+o mesmo aplicativo quando é adicionado um recurso de layout alternativo para telas maiores.</p>
+
+<p>Os documentos a seguir fornecem um guia completo sobre como organizar os recursos do aplicativo,
+especificar recursos alternativos, acessá-los no aplicativo e muito mais:</p>
+
+<dl>
+  <dt><strong><a href="providing-resources.html">Como fornecer recursos</a></strong></dt>
+  <dd>Os tipos de recursos que você pode fornecer no aplicativo, onde salvá-los e como criar
+recursos alternativos para configurações específicas de dispositivos.</dd>
+  <dt><strong><a href="accessing-resources.html">Acesso aos recursos</a></strong></dt>
+  <dd>Como usar os recursos que você forneceu referenciando-os no código do aplicativo
+ou de outros recursos XML.</dd>
+  <dt><strong><a href="runtime-changes.html">Tratar alterações no tempo de execução</a></strong></dt>
+  <dd>Como gerenciar alterações de configuração que ocorrem enquanto a Atividade está em execução.</dd>
+  <dt><strong><a href="localization.html">Localização</a></strong></dt>
+  <dd>Um guia ascendente para localizar o aplicativo usando recursos alternativos. Apesar de esse ser
+apenas um uso específico de recursos alternativos, ele é muito importante para atingir mais
+usuários.</dd>
+  <dt><strong><a href="available-resources.html">Tipos de recursos</a></strong></dt>
+  <dd>Uma referência a vários tipos de recursos que você pode fornecer, descrevendo os elementos XML,
+os atributos e a sintaxe. Por exemplo, esta referência mostra como criar um recurso
+para menus do aplicativo, desenháveis, animações e mais.</dd>
+</dl>
+
+<!--
+<h2>Raw Assets</h2>
+
+<p>An alternative to saving files in {@code res/} is to save files in the {@code
+assets/} directory. This should only be necessary if you need direct access to original files and
+directories by name. Files saved in the {@code assets/} directory will not be given a resource
+ID, so you can't reference them through the {@code R} class or from XML resources. Instead, you can
+query data in the {@code assets/} directory like an ordinary file system, search through the
+directory and
+read raw data using {@link android.content.res.AssetManager}. For example, this can be more useful
+when dealing with textures for a game. However, if you only need to read raw data from a file
+(such as a video or audio file), then you should save files into the {@code res/raw/} directory and
+then read a stream of bytes using {@link android.content.res.Resources#openRawResource(int)}. This
+is uncommon, but if you need direct access to original files in {@code assets/}, refer to the {@link
+android.content.res.AssetManager} documentation.</p>
+-->
diff --git a/docs/html-intl/intl/pt-br/guide/topics/resources/providing-resources.jd b/docs/html-intl/intl/pt-br/guide/topics/resources/providing-resources.jd
new file mode 100644
index 0000000..1118fd5
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/resources/providing-resources.jd
@@ -0,0 +1,1094 @@
+page.title=Fornecimento de recursos
+parent.title=Recursos de aplicativo
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Visualização rápida</h2>
+  <ul>
+    <li>Tipos diferentes de recursos pertencem a subdiretórios diferentes de {@code res/}</li>
+    <li>Recursos alternativos fornecem arquivos de recurso específicos de configuração</li>
+    <li>Sempre inclua recursos padrão para que o aplicativo não dependa de configurações
+específicas do dispositivo</li>
+  </ul>
+  <h2>Neste documento</h2>
+  <ol>
+    <li><a href="#ResourceTypes">Agrupamento de tipos de recursos</a></li>
+    <li><a href="#AlternativeResources">Fornecimento de recursos alternativos</a>
+      <ol>
+        <li><a href="#QualifierRules">Regras de nome do qualificador</a></li>
+        <li><a href="#AliasResources">Criação de recursos de alias</a></li>
+      </ol>
+    </li>
+    <li><a href="#Compatibility">Fornecimento da melhor compatibilidade de dispositivo com recursos</a></li>
+    <li><a href="#BestMatch">Como o Android encontra o melhor recurso compatível</a></li>
+  </ol>
+
+  <h2>Veja também</h2>
+  <ol>
+    <li><a href="accessing-resources.html">Acesso aos recursos</a></li>
+    <li><a href="available-resources.html">Tipos de recursos</a></li>
+    <li><a href="{@docRoot}guide/practices/screens_support.html">Compatibilidade com
+várias telas</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Deve-se sempre exteriorizar os recursos do aplicativo, como imagens e strings do código,
+para que você possa mantê-los independentemente. Deve-se também fornecer recursos alternativos para
+configurações específicas do dispositivo, agrupando-os em diretórios de recursos especialmente nomeados. Em
+tempo de execução, o Android usa o recurso adequado com base na configuração atual. Por
+exemplo, você pode querer fornecer um layout de IU diferente dependendo do tamanho da tela ou
+strings diferentes dependendo da configuração de idioma.</p>
+
+<p>Ao exteriorizar os recursos do aplicativo, é possível acessá-los
+usando IDs de recurso que são gerados na classe {@code R} do projeto. O procedimento para usar
+recursos no aplicativo é discutido em <a href="accessing-resources.html">Acesso aos
+recursos</a>. Este documento mostra como agrupar os recursos no projeto do Android
+e fornecer recursos alternativos para configurações específicas do dispositivo.</p>
+
+
+<h2 id="ResourceTypes">Agrupamento de tipos de recursos</h2>
+
+<p>Você deve posicionar cada tipo de recurso em um subdiretório específico do diretório
+{@code res/} do projeto. Por exemplo, abaixo está a hierarquia de arquivos para um projeto simples:</p>
+
+<pre class="classic no-pretty-print">
+MyProject/
+    src/  <span style="color:black">
+        MyActivity.java  </span>
+    res/
+        drawable/  <span style="color:black">
+            graphic.png  </span>
+        layout/  <span style="color:black">
+            main.xml
+            info.xml</span>
+        mipmap/  <span style="color:black">
+            icon.png </span>
+        values/  <span style="color:black">
+            strings.xml  </span>
+</pre>
+
+<p>Como pode ver neste exemplo, o diretório {@code res/} contém todos os recursos (em subdiretórios):
+um recurso de imagem, dois recursos de layout, diretórios {@code mipmap/} para ícones de 
+inicialização e um arquivo de recurso de string. Os nomes dos diretórios
+de recursos são importantes e são descritos na tabela 1.</p>
+
+<p class="note"><strong>Observação:</strong> para obter mais informações sobre o uso de pastas de mipmap, consulte
+<a href="{@docRoot}tools/projects/index.html#mipmap">Visão geral do gerenciamento de projetos</a>.</p>
+
+<p class="table-caption" id="table1"><strong>Tabela 1.</strong> Os diretórios de recursos
+compatíveis dentro do diretório {@code res/} do projeto.</p>
+
+<table>
+  <tr>
+    <th scope="col">Diretório</th>
+    <th scope="col">Tipo de recurso</th>
+  </tr>
+
+  <tr>
+    <td><code>animator/</code></td>
+    <td>Arquivos XML que definem as <a href="{@docRoot}guide/topics/graphics/prop-animation.html">animações
+da propriedade</a>.</td>
+  </tr>
+
+  <tr>
+    <td><code>anim/</code></td>
+    <td>Arquivos XML que definem as <a href="{@docRoot}guide/topics/graphics/view-animation.html#tween-animation">animações
+intermediárias</a>. (As animações de propriedade também podem ser salvas neste diretório,
+mas o diretório {@code animator/} é o preferencial para animações de propriedade para distinguir os dois
+tipos.)</td>
+  </tr>
+
+  <tr>
+    <td><code>color/</code></td>
+    <td>Arquivos XML que definem uma lista de estado de cores. Consulte <a href="color-list-resource.html">Recurso de
+lista de estado de cores</a></td>
+  </tr>
+
+  <tr>
+    <td><code>drawable/</code></td>
+
+    <td><p>Os arquivos Bitmap ({@code .png}, {@code .9.png}, {@code .jpg}, {@code .gif}) ou arquivos XML
+são compilados nos seguintes subtipos de recurso desenhável:</p>
+      <ul>
+        <li>Arquivos Bitmap</li>
+        <li>Nine-Patch (bitmaps redimensionáveis)</li>
+        <li>Listas de estado</li>
+        <li>Formatos</li>
+        <li>Desenháveis de animação</li>
+        <li>Outros desenháveis</li>
+      </ul>
+      <p>Veja <a href="drawable-resource.html">Recursos desenháveis</a>.</p>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>mipmap/</code></td>
+    <td>Arquivos desenháveis para diferentes densidades do ícone do inicializador. Para obter mais informações sobre o gerenciamento de
+    ícones do inicializador com pastas {@code mipmap/}, consulte
+    <a href="{@docRoot}tools/project/index.html#mipmap">Visão geral do gerenciamento de projetos</a>.</td>
+  </tr>
+
+  <tr>
+    <td><code>layout/</code></td>
+    <td>Arquivos XML que definem um layout de interface do usuário.
+        Consulte <a href="layout-resource.html">Recurso de layout</a>.</td>
+  </tr>
+
+  <tr>
+    <td><code>menu/</code></td>
+    <td>Arquivos XML que definem os menus do aplicativo, como Menu de opções, Menu de contexto
+ou Submenu. Consulte <a href="menu-resource.html">Recurso de menu</a>.</td>
+  </tr>
+
+  <tr>
+    <td><code>raw/</code></td>
+    <td><p>Arquivos arbitrários para salvar na forma bruta. Para abrir esses recursos
+com {@link java.io.InputStream} bruto, chame {@link android.content.res.Resources#openRawResource(int)
+Resources.openRawResource()} com o ID do recurso, que é {@code R.raw.<em>filename</em>}.</p>
+      <p>No entanto, caso precise de acesso aos nomes e à hierarquia dos arquivos originais, considere salvar
+alguns recursos no diretório {@code
+assets/} (em vez de {@code res/raw/}). Os arquivos em {@code assets/} não recebem um ID de recurso,
+então é possível lê-los usando apenas o {@link android.content.res.AssetManager}.</p></td>
+  </tr>
+
+  <tr>
+    <td><code>values/</code></td>
+    <td><p>Arquivos XML que contêm valores simples, como strings, números inteiros e cores.</p>
+      <p>Enquanto os arquivos de recurso XML estiverem em outros subdiretórios {@code res/}, defina um único recurso
+com base no nome do arquivo XML, os arquivos no diretório {@code values/} descrevem vários recursos.
+Para cada arquivo neste diretório, cada filho do elemento {@code &lt;resources&gt;} define um único
+recurso. Por exemplo, um elemento {@code &lt;string&gt;} cria
+um recurso {@code R.string} e um elemento {@code &lt;color&gt;} cria um recurso 
+{@code R.color}.</p>
+      <p>Como cada recurso é definido com seu próprio elemento XML, é possível nomear o arquivo
+da forma que quiser e colocar tipos de recurso variados em um arquivo. No entanto, para esclarecer, você pode
+querer colocar tipos de recursos únicos em arquivos diferentes. Por exemplo, a seguir há algumas convenções
+de nome de arquivo para recursos que podem ser criados neste diretório:</p>
+      <ul>
+        <li>arrays.xml para matriz de recurso (<a href="more-resources.html#TypedArray">matriz digitadas</a>).</li>
+        <li>colors.xml para <a href="more-resources.html#Color">valores de cor</a></li>
+        <li>dimens.xml para <a href="more-resources.html#Dimension">valores de dimensão</a>.</li>
+        <li>strings.xml para <a href="string-resource.html">valores
+de string</a>.</li>
+        <li>styles.xml para <a href="style-resource.html">estilos</a>.</li>
+      </ul>
+      <p>Consulte <a href="string-resource.html">Recursos de string</a>,
+        <a href="style-resource.html">Recurso de estilo</a>
+        e <a href="more-resources.html">Mais tipos de recursos</a>.</p>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>xml/</code></td>
+    <td>Arquivos arbitrários XML que podem ser lidos em tempo de execução chamando {@link
+android.content.res.Resources#getXml(int) Resources.getXML()}. Vários arquivos de configuração XML
+devem ser salvos aqui, como uma <a href="{@docRoot}guide/topics/search/searchable-config.html">configuração buscável</a>.
+<!-- or preferences configuration. --></td>
+  </tr>
+</table>
+
+<p class="caution"><strong>Atenção:</strong> nunca salve arquivos de recurso diretamente no diretório
+{@code res/} &mdash; isto provocará um erro ao compilador.</p>
+
+<p>Para obter mais informações sobre determinados tipos de recursos, consulte a documentação <a href="available-resources.html">Tipos de recursos</a>.</p>
+
+<p>Os recursos salvos nos subdiretórios definidos na tabela 1 são os recursos
+"padrão". Ou seja, esses recursos definem projeto e conteúdo padrão para o aplicativo.
+No entanto, tipos diferentes de dispositivos com Android podem chamar diferentes tipos de recursos.
+Por exemplo: se um dispositivo tiver uma tela maior do que o normal, deve-se fornecer
+recursos de layout diferentes que aproveitem o espaço extra na tela. Ou, se um dispositivo tiver
+uma configuração de idioma diferente, deve-se fornecer recursos de string diferentes que traduzam
+o texto na interface do usuário. Para fornecer esses diferentes recursos para configurações de dispositivo
+diferentes, você precisa fornecer recursos alternativos, além dos recursos
+padrão.</p>
+
+
+<h2 id="AlternativeResources">Fornecimento de recursos alternativos</h2>
+
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
+<p class="img-caption">
+<strong>Figura 1.</strong> Dois dispositivos diferentes, cada um usando recursos diferentes de layout.</p>
+</div>
+
+<p>Quase todos os aplicativos devem fornecer recursos alternativos para suportar
+configurações específicas do dispositivo. Por exemplo: deve-se incluir recursos desenháveis alternativos para densidades
+de tela diferentes e recursos alternativos de string para idiomas diferentes. Em tempo de execução,
+o Android detecta a configuração atual do dispositivo e carrega os recursos
+adequados para o aplicativo.</p>
+
+<p>Para especificar as alternativas de configuração específica para um conjunto de recursos:</p>
+<ol>
+  <li>Crie um novo diretório no {@code res/} nomeado na forma de {@code
+<em>&lt;resources_name&gt;</em>-<em>&lt;config_qualifier&gt;</em>}.
+    <ul>
+      <li><em>{@code &lt;resources_name&gt;}</em> é o nome do diretório dos recursos padrão correspondentes
+(definido na tabela 1).</li>
+      <li><em>{@code &lt;qualifier&gt;}</em> é um nome que especifica uma configuração individual
+para a qual esses recursos destinam-se (definido na tabela 2).</li>
+    </ul>
+    <p>É possível anexar mais de um <em>{@code &lt;qualifier&gt;}</em>. Separe cada
+um com um travessão.</p>
+    <p class="caution"><strong>Atenção:</strong> ao anexar vários qualificadores, deve-se
+colocá-los na mesma ordem em que foram listados na tabela 2. Se os qualificadores forem ordenados
+de forma incorreta, os recursos serão ignorados.</p>
+  </li>
+  <li>Salve os respectivos recursos alternativos neste novo diretório. Os arquivos de recurso devem ser
+nomeados exatamente da mesma forma que os arquivos de recurso padrão.</li>
+</ol>
+
+<p>Por exemplo, a seguir há alguns recursos alternativos e outros padrão:</p>
+
+<pre class="classic no-pretty-print">
+res/
+    drawable/   <span style="color:black">
+        icon.png
+        background.png    </span>
+    drawable-hdpi/  <span style="color:black">
+        icon.png
+        background.png  </span>
+</pre>
+
+<p>O qualificador {@code hdpi} indica que os recursos neste diretório são para os dispositivos
+com tela de alta densidade. As imagens em cada um desses diretórios desenháveis são dimensionadas para uma densidade de tela
+específica, mas os nomes dos arquivos
+são exatamente os mesmos. Desta maneira, o ID de recurso usado para referenciar {@code icon.png} ou a imagem {@code
+background.png} é sempre o mesmo, mas o Android seleciona
+a versão de cada arquivo que melhor compatibiliza-se com o dispositivo atual, comparando as informações de configuração
+com os qualificadores no nome do diretório do recurso.</p>
+
+<p>O Android é compatível com vários qualificadores de configuração e é possível
+adicionar vários qualificadores a um nome de diretório separando cada qualificador com um travessão. A tabela 2
+lista os qualificadores de configuração válidos, em ordem de precedência &mdash; caso use vários
+qualificadores para um diretório de recursos, você deve adicioná-los ao nome do diretório na ordem que foram listados
+na tabela.</p>
+
+
+<p class="table-caption" id="table2"><strong>Tabela 2.</strong> Nomes de qualificadores
+de configuração.</p>
+<table>
+    <tr>
+        <th>Configuração</th>
+        <th>Valores do qualificador</th>
+        <th>Descrição</th>
+    </tr>
+    <tr id="MccQualifier">
+      <td>MCC e MNC</td>
+      <td>Exemplos:<br/>
+        <code>mcc310</code><br/>
+        <code><nobr>mcc310-mnc004</nobr></code><br/>
+        <code>mcc208-mnc00</code><br/>
+        etc.
+      </td>
+      <td>
+        <p>O código de dispositivos móveis do país (MCC), opcionalmente seguido do código de rede móvel (MNC)
+        do cartão SIM no dispositivo. Por exemplo, <code>mcc310</code> é dos E.U.A. em qualquer operadora,
+        <code>mcc310-mnc004</code> é dos E.U.A., em Verizon, e <code>mcc208-mnc00</code> é da França,
+        em Orange.</p>
+        <p>Se o dispositivo usar uma conexão de rádio (telefone GSM), os valores MCC e MNC serão
+        os do cartão SIM.</p>
+        <p>Você também pode usar somente o MCC (por exemplo, para incluir recursos legais específicos do país
+no aplicativo). Caso precise especificar com base somente no idioma, use o qualificador
+de <em>idioma e região</em> (discutido a seguir). Caso decida usar o qualificador
+de MCC e MNC, tome cuidado e teste o seu funcionamento.</p>
+        <p>Veja também os campos de configuração {@link
+android.content.res.Configuration#mcc} e {@link
+android.content.res.Configuration#mnc}, que indicam o código de dispositivos móveis do país atual
+e o código de rede móvel, respectivamente.</p>
+      </td>
+    </tr>
+    <tr id="LocaleQualifier">
+      <td>Idioma e região</td>
+      <td>Exemplos:<br/>
+        <code>en</code><br/>
+        <code>fr</code><br/>
+        <code>en-rUS</code><br/>
+        <code>fr-rFR</code><br/>
+        <code>fr-rCA</code><br/>
+        etc.
+      </td>
+      <td><p>O idioma é definido por um código de idioma<a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">ISO
+              639-1</a> de duas letras, opcionalmente seguido por um código da região
+              <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO
+              3166-1-alpha-2</a> (precedido de "{@code r}" em minúsculo).
+        </p><p>
+        Os códigos <em>não</em> diferenciam maiúsculas e minúsculas; o prefixo {@code r} é usado
+        para distinguir a parte da região.
+        Não é possível especificar uma região só.</p>
+        <p>Isto pode mudar durante a vida útil
+do aplicativo se o usuário mudar o idioma nas configurações do sistema. Consulte <a href="runtime-changes.html">Tratamento de alterações em tempo de execução</a> para obter informações
+sobre como isto pode afetar o aplicativo em tempo de execução.</p>
+        <p>Consulte <a href="localization.html">Localização</a> para obter um guia completo para localizar
+os aplicativos para outros idiomas.</p>
+        <p>Veja também o campo de configuração {@link android.content.res.Configuration#locale},
+que indica a localidade atual.</p>
+      </td>
+    </tr>
+    <tr id="LayoutDirectionQualifier">
+      <td>Direção do layout</td>
+      <td><code>ldrtl</code><br/>
+        <code>ldltr</code><br/>
+      </td>
+      <td><p>A direção do layout do aplicativo. {@code ldrtl} significa "layout-direction-right-to-left" (direção do layout da direita para a esquerda).
+      {@code ldltr} significa "layout-direction-left-to-right" (direção do layout da esquerda para a direita) e é o valor implícito padrão.
+      </p>
+      <p>Isto pode aplicar-se a qualquer recurso, como layouts, desenháveis ou valores.
+      </p>
+      <p>Por exemplo, caso queira fornecer um layout específico para o idioma arábico e
+      layouts genéricos para outros idiomas que seguem a leitura da direita para a esquerda, como os idiomas hebreu e persa, então você teria:
+      </p>
+<pre class="classic no-pretty-print">
+res/
+    layout/   <span style="color:black">
+        main.xml  </span>(Default layout)
+    layout-ar/  <span style="color:black">
+        main.xml  </span>(Specific layout for Arabic)
+    layout-ldrtl/  <span style="color:black">
+        main.xml  </span>(Any "right-to-left" language, except
+                  for Arabic, because the "ar" language qualifier
+                  has a higher precedence.)
+</pre>
+        <p class="note"><strong>Observação:</strong> para ativar recursos de layout de leitura da direita para a esquerda
+        para o aplicativo, você deve definir <a href="{@docRoot}guide/topics/manifest/application-element.html#supportsrtl">{@code
+        supportsRtl}</a> como {@code "true"} e <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> como 17 ou maior.</p>
+        <p><em>Adicionado à API de nível 17.</em></p>
+      </td>
+    </tr>
+    <tr id="SmallestScreenWidthQualifier">
+      <td>smallestWidth</td>
+      <td><code>sw&lt;N&gt;dp</code><br/><br/>
+        Exemplos:<br/>
+        <code>sw320dp</code><br/>
+        <code>sw600dp</code><br/>
+        <code>sw720dp</code><br/>
+        etc.
+      </td>
+      <td>
+        <p>O tamanho fundamental de uma tela, como indicado pela menor dimensão da área da tela
+disponível. Especificamente, o valor smallestWidth do dispositivo é o menor da altura e largura
+da tela (pode-se também interpretar isso como a "menor largura possível" da tela). É possível
+usar este qualificador para garantir que, independentemente da orientação atual da tela,
+o aplicativo tenha pelo menos {@code &lt;N&gt;} dps de largura disponível para a IU.</p>
+        <p>Por exemplo, se o seu layout exigir que a menor dimensão da área da tela seja de pelo menos
+600 dp, é possível usar o seguinte qualificador para criar os recursos do layout: {@code
+res/layout-sw600dp/}. O sistema usará esses recursos somente quando a menor dimensão
+da tela disponível for de pelo menos 600 dp, independentemente se o lado de 600 dp é a altura ou a largura
+percebida pelo usuário. O valor smallestWidth é uma característica fixa do tamanho da tela do dispositivo;<strong>o valor smallestWidth
+do dispositivo não altera quando a orientação da tela muda</strong>.</p>
+        <p>O smallestWidth de um dispositivo considera a IU do sistema e as decorações da tela. Por exemplo,
+se o dispositivo tiver alguns elementos de IU persistentes na tela que considera o espaço ao longo do eixo
+de smallestWidth, o sistema declara que smallestWidth é menor do que o tamanho
+atual da tela, pois são pixels de tela não disponíveis para a IU. Portanto, o valor usado
+deve ser a dimensão real menor <em>necessária para o layout</em> (geralmente, este valor
+é a "menor largura" compatível com o layout, independente da orientação atual da tela).</p>
+        <p>Alguns dos valores que você pode usar para tamanhos de tela comuns:</p>
+        <ul>
+          <li>320, para dispositivos com configurações de tela como:
+            <ul>
+              <li>240 x 320 ldpi (celular QVGA)</li>
+              <li>320 x 480 mdpi (celular)</li>
+              <li>480 x 800 hdpi (celular de alta densidade)</li>
+            </ul>
+          </li>
+          <li>480, para telas como 480 x 800 mdpi (tablet/celular).</li>
+          <li>600, para telas como 600 x 1024 mdpi (tablet de 7 polegadas).</li>
+          <li>720, para telas como 720 x 1280 mdpi (tablet de 10 polegadas).</li>
+        </ul>
+        <p>Quando o aplicativo fornece vários diretórios de recursos com valores diferentes
+          para o qualificador smallestWidth, o sistema usa o mais próximo (sem exceder) ao
+de smallestWidth do dispositivo. </p>
+        <p><em>Adicionado à API de nível 13.</em></p>
+        <p>Veja também o atributo <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html#requiresSmallest">{@code
+android:requiresSmallestWidthDp}</a>, que declara a smallestWidth mínima compatível
+com o aplicativo e o campo de configuração {@link
+android.content.res.Configuration#smallestScreenWidthDp}, que retém
+o valor de smallestWidth do dispositivo.</p>
+        <p>Para obter mais informações sobre como projetar para telas diferentes e usar
+este qualificador, consulte o guia do desenvolvedor <a href="{@docRoot}guide/practices/screens_support.html">Compatibilidade com
+várias telas</a>.</p>
+      </td>
+    </tr>
+    <tr id="ScreenWidthQualifier">
+      <td>Largura disponível</td>
+      <td><code>w&lt;N&gt;dp</code><br/><br/>
+        Exemplos:<br/>
+        <code>w720dp</code><br/>
+        <code>w1024dp</code><br/>
+        etc.
+      </td>
+      <td>
+        <p>Especifica uma largura mínima disponível da tela, em unidades {@code dp} em que o recurso
+          deve ser usado &mdash; definido pelo valor <code>&lt;N&gt;</code>.  Este valor
+          de configuração mudará quando a orientação
+          alternar entre paisagem e retrato para corresponder à largura atual.</p>
+        <p>Quando o aplicativo fornece vários diretórios de recurso com valores diferentes
+          para esta configuração, o sistema usa o mais próximo (sem exceder)
+          da largura atual da tela do dispositivo.  O
+          valor aqui considera as decorações da tela. Portanto, se o dispositivo tiver alguns
+          elementos de IU persistentes na borda esquerda ou direita da tela, ele usa
+          um valor para a largura menor do que o tamanho atual da tela, considerando
+          esses elementos de IU e reduzindo o espaço disponível do aplicativo.</p>
+        <p><em>Adicionado à API de nível 13.</em></p>
+        <p>Veja também o campo de configuração {@link android.content.res.Configuration#screenWidthDp},
+          que possui a largura atual da tela.</p>
+        <p>Para obter mais informações sobre como projetar para telas diferentes e usar
+este qualificador, consulte o guia do desenvolvedor <a href="{@docRoot}guide/practices/screens_support.html">Compatibilidade com
+várias telas</a>.</p>
+      </td>
+    </tr>
+    <tr id="ScreenHeightQualifier">
+      <td>Altura disponível</td>
+      <td><code>h&lt;N&gt;dp</code><br/><br/>
+        Exemplos:<br/>
+        <code>h720dp</code><br/>
+        <code>h1024dp</code><br/>
+        etc.
+      </td>
+      <td>
+        <p>Especifica uma altura mínima disponível da tela, em unidades "dp" em que o recurso
+          deve ser usado &mdash; definido pelo valor <code>&lt;N&gt;</code>.  Este valor
+          de configuração mudará quando a orientação
+          alternar entre paisagem e retrato para corresponder à altura atual.</p>
+        <p>Quando o aplicativo fornece vários diretórios de recursos com valores diferentes
+          para esta configuração, o sistema usa o mais próximo (sem exceder)
+          da altura atual da tela do dispositivo.  O
+          valor aqui considera as decorações da tela. Portanto, se o dispositivo tiver alguns
+          elementos de IU persistentes na borda superior ou inferior da tela, ele usa
+          um valor para a altura menor do que o tamanho atual da tela, considerando
+          esses elementos da IU e reduzindo o espaço disponível do aplicativo.  As decorações da tela
+          que não forem fixas (como uma barra de status do telefone que pode ser
+          ocultada com tela cheia) <em>não</em> são consideradas aqui, assim como
+          as decorações da janela, como a barra de título ou a barra de ação. Portanto, os aplicativos devem ser preparados para
+          lidar com o espaço um pouco menor do que especificam.
+        <p><em>Adicionado à API de nível 13.</em></p>
+        <p>Veja também o campo de configuração {@link android.content.res.Configuration#screenHeightDp},
+          que possui a largura atual da tela.</p>
+        <p>Para obter mais informações sobre como projetar para telas diferentes e usar
+este qualificador, consulte o guia do desenvolvedor <a href="{@docRoot}guide/practices/screens_support.html">Compatibilidade com
+várias telas</a>.</p>
+      </td>
+    </tr>
+    <tr id="ScreenSizeQualifier">
+      <td>Tamanho da tela</td>
+      <td>
+        <code>small</code><br/>
+        <code>normal</code><br/>
+        <code>large</code><br/>
+        <code>xlarge</code>
+      </td>
+      <td>
+        <ul class="nolist">
+        <li>{@code small}: Telas de tamanho semelhante
+        à tela de pouca densidade QVGA. O tamanho mínimo do layout para uma tela pequena
+        é de aproximadamente 320 x 426 unidades dp.  Exemplos são QVGA de pouca densidade e VGA de alta
+        densidade.</li>
+        <li>{@code normal}: Telas de tamanho semelhante
+        à tela de média densidade HVGA. O tamanho mínimo do layout para uma tela normal
+        é de aproximadamente 320 x 470 unidades dp.  Exemplos
+        de tais delas são as WQVGA de pouca densidade, HVGA de média densidade e WVGA
+        de alta densidade.</li>
+        <li>{@code large}: Telas de tamanho semelhante
+        à tela de média densidade VGA.
+        O tamanho mínimo do layout para uma tela grande é de aproximadamente 480 x 640 unidades dp.
+        Exemplos são as telas de densidade média VGA e WVGA.</li>
+        <li>{@code xlarge}: Telas que são consideravelmente maiores do que a
+        tela tradicional de média densidade HVGA. O tamanho mínimo do layout para uma tela muito grande
+        é de aproximadamente 720x960 unidades dp.  Na maioria dos casos, dispositivos com telas
+        muito grandes seriam grandes demais para serem carregados em bolsos e, provavelmente,
+        seriam dispositivos no estilo tablet. <em>Adicionado à API de nível 9.</em></li>
+        </ul>
+        <p class="note"><strong>Observação:</strong> usar um qualificador de tamanho não significa
+que os recursos sejam <em>apenas</em> para telas deste tamanho. Caso não forneça recursos
+alternativos com qualificadores que melhor correspondem à configuração atual do dispositivo, o sistema poderá usar
+quaisquer recursos que representarem a <a href="#BestMatch">melhor correspondência</a>.</p>
+        <p class="caution"><strong>Atenção:</strong> se todos os recursos usarem um qualificador de tamanho
+<em>maior</em> do que a tela atual, o sistema <strong>não</strong> os usará
+e o aplicativo apresentará um erro em tempo de execução (por exemplo, se todos os recursos de layout receberem tag com o qualificador {@code
+xlarge}, mas o dispositivo tiver uma tela de tamanho normal).</p>
+        <p><em>Adicionado à API de nível 4.</em></p>
+        
+        <p>Consulte <a href="{@docRoot}guide/practices/screens_support.html">Compatibilidade com
+várias telas</a> para obter mais informações.</p>
+        <p>Consulte também o campo de configuração {@link android.content.res.Configuration#screenLayout},
+que indica se a tela é pequena, normal
+ou grande.</p>
+      </td>
+    </tr>
+    <tr id="ScreenAspectQualifier">
+      <td>Aspecto da tela</td>
+      <td>
+        <code>long</code><br/>
+        <code>notlong</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code long}: Telas grandes, como WQVGA, WVGA, FWVGA</li>
+          <li>{@code notlong}: Telas que não são grandes, como QVGA, HVGA e VGA</li>
+        </ul>
+        <p><em>Adicionado à API de nível 4.</em></p>
+        <p>Isto baseia-se puramente na relação de aspecto da tela (uma tela "grande" é mais larga). Isto
+não está relacionado à orientação da tela.</p>
+        <p>Consulte também o campo de configuração {@link android.content.res.Configuration#screenLayout},
+que indica se a tela é grande.</p>
+      </td>
+    </tr>
+    <tr id="OrientationQualifier">
+      <td>Orientação da tela</td>
+      <td>
+        <code>port</code><br/>
+        <code>land</code>  <!-- <br/>
+        <code>square</code>  -->
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code port}: O dispositivo está na orientação de retrato (vertical)</li>
+          <li>{@code land}: O dispositivo está na orientação de paisagem (horizontal)</li>
+          <!-- Square mode is currently not used. -->
+        </ul>
+        <p>Isto pode mudar durante a vida útil do aplicativo se o usuário girar
+a tela. Consulte <a href="runtime-changes.html">Tratamento de alterações em tempo de execução</a> para obter informações
+sobre como isto pode afetar o aplicativo em tempo de execução.</p>
+        <p>Veja também o campo de configuração {@link android.content.res.Configuration#orientation},
+que indica a orientação atual do dispositivo.</p>
+      </td>
+    </tr>
+    <tr id="UiModeQualifier">
+      <td>Modo de IU</td>
+      <td>
+        <code>car</code><br/>
+        <code>desk</code><br/>
+        <code>television</code><br/>
+        <code>appliance</code>
+        <code>watch</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code car}: O dispositivo está exibindo em uma estação de acoplamento de carro</li>
+          <li>{@code desk}: O dispositivo está exibindo em uma estação de acoplamento de mesa</li>
+          <li>{@code television}: O dispositivo está exibindo em uma televisão, fornecendo
+          uma experiência à distância, onde a IU é em tela grande,
+          o usuário está longe, orientado principalmente por um controle direcional ou por outro tipo de
+          interação sem indicador</li>
+          <li>{@code appliance}: O dispositivo está servindo como uma aplicação,
+          sem tela</li>
+          <li>{@code watch}: O dispositivo tem uma tela que é usada no braço</li>
+        </ul>
+        <p><em>Adicionado à API de nível 8, televisão adicionada à API de nível 13 e relógio adicionado à API de nível 20.</em></p>
+        <p>Para obter informações sobre como o aplicativo pode responder quando o dispositivo é inserido
+        ou removido de um dock, consulte <a href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">Determinação
+e monitoramento do tipo e do estado do dock</a>.</p>
+        <p>Isto pode mudar durante a vida útil do aplicativo se o usuário colocar o dispositivo
+em um dock. É possível ativar ou desativar alguns desses modos usando {@link
+android.app.UiModeManager}. Consulte <a href="runtime-changes.html">Tratamento de alterações em tempo de execução</a> para obter informações
+sobre como isto pode afetar o aplicativo em tempo de execução.</p>
+      </td>
+    </tr>
+    <tr id="NightQualifier">
+      <td>Modo noturno</td>
+      <td>
+        <code>night</code><br/>
+        <code>notnight</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code night}: Noite</li>
+          <li>{@code notnight}: Dia</li>
+        </ul>
+        <p><em>Adicionado à API de nível 8.</em></p>
+        <p>Isto pode mudar durante a vida útil do aplicativo se o modo noturno for deixado
+no modo automático (padrão), em que o modo altera-se com base no horário.  É possível ativar
+ou desativar este modo usando {@link android.app.UiModeManager}. Consulte <a href="runtime-changes.html">Tratamento de alterações em tempo de execução</a> para obter informações
+sobre como isto pode afetar o aplicativo em tempo de execução.</p>
+      </td>
+    </tr>
+    <tr id="DensityQualifier">
+      <td>Densidade de pixel da tela (dpi)</td>
+      <td>
+        <code>ldpi</code><br/>
+        <code>mdpi</code><br/>
+        <code>hdpi</code><br/>
+        <code>xhdpi</code><br/>
+        <code>xxhdpi</code><br/>
+        <code>xxxhdpi</code><br/>
+        <code>nodpi</code><br/>
+        <code>tvdpi</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code ldpi}: Telas de pouca densidade, aproximadamente 120 dpi.</li>
+          <li>{@code mdpi}: Telas de média densidade (em HVGA tradicional); aproximadamente
+160 dpi.</li>
+          <li>{@code hdpi}: Telas de alta densidade, aproximadamente 240 dpi.</li>
+          <li>{@code xhdpi}: Telas de densidade extra-alta, aproximadamente 320 dpi. <em>Adicionado à API de
+nível 8</em></li>
+          <li>{@code xxhdpi}: Telas de densidade extra-extra-alta, aproximadamente 480 dpi. <em>Adicionado à API de
+nível 16</em></li>
+          <li>{@code xxxhdpi}: Usos de densidade extra-extra-extra-alta (somente ícone do inicializador, consulte a 
+            <a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">observação</a> 
+            em <em>Compatibilidade com várias telas</em>), aproximadamente 640 dpi. <em>Adicionado à API de
+nível 18</em></li>
+          <li>{@code nodpi}: Isto pode ser usado para recursos de bitmap que você não deseja dimensionar
+para corresponder à densidade do dispositivo.</li>
+          <li>{@code tvdpi}: Telas entre mdpi e hdpi, aproximadamente 213 dpi. Não é considerado
+um grupo de densidade "principal". Geralmente usado para televisões
+e a maioria dos aplicativos não precisam &mdash; fornecer recursos mdpi e hdpi é o suficiente para a maioria dos aplicativos
+e o sistema dimensionará de forma adequada. Este qualificador foi introduzido com a API de nível 13.</li>
+        </ul>
+        <p>Há uma razão de dimensionamento de 3:4:6:8:12:16 entre as seis densidades principais (ignorando
+a densidade tvdpi). Então, um bitmap de 9 x 9 em ldpi é 12 x 12 em mdpi, 18 x 18 em hdpi, 24 x 24 em xhdpi e por aí em diante.
+</p>
+        <p>Caso decida que os recursos de imagem não parecem suficientemente bons para uma televisão
+ou outros dispositivos e queira testar recursos tvdpi, o fator de dimensionamento é 1,33*mdpi. Por exemplo:
+uma imagem de 100 px x 100 px para telas mdpi deve ser de 133 px x 133 px para tvdpi.</p>
+        <p class="note"><strong>Observação:</strong> usar um qualificador de densidade não significa
+que os recursos sejam <em>apenas</em> para telas desta densidade. Caso não forneça recursos
+alternativos com qualificadores que melhor correspondem à configuração atual do dispositivo, o sistema poderá usar
+quaisquer recursos que representarem a <a href="#BestMatch">melhor correspondência</a>.</p>
+        <p>Consulte <a href="{@docRoot}guide/practices/screens_support.html">Compatibilidade com
+várias telas</a> para obter mais informações sobre como lidar com as diferentes densidades de tela e como o Android
+pode dimensionar os bitmaps para encaixá-los na densidade atual.</p>
+       </td>
+    </tr>
+    <tr id="TouchscreenQualifier">
+      <td>Tipo de tela sensível ao toque</td>
+      <td>
+        <code>notouch</code><br/>
+        <code>finger</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code notouch}: Os dispositivos não têm uma tela sensível ao toque.</li>
+          <li>{@code finger}: O dispositivo tem uma tela sensível ao toque que destina-se
+          à interação direcional do dedo do usuário.</li>
+        </ul>
+        <p>Veja também o campo de configuração {@link android.content.res.Configuration#touchscreen},
+que indica o tipo de tela sensível ao toque no dispositivo.</p>
+      </td>
+    </tr>
+    <tr id="KeyboardAvailQualifier">
+      <td>Disponibilidade de teclado</td>
+      <td>
+        <code>keysexposed</code><br/>
+        <code>keyshidden</code><br/>
+        <code>keyssoft</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code keysexposed}: O dispositivo tem um teclado disponível. Se o dispositivo tiver um teclado de software
+ativo (o que é provável), ele deve ser usado mesmo quando o teclado de hardware
+<em>não</em> estiver exposto ao usuário, mesmo se o dispositivo não tiver teclado de hardware. Caso nenhum teclado de software
+seja fornecido ou esteja desativado, então isto será usado apenas quando um teclado de hardware
+for exposto.</li>
+          <li>{@code keyshidden}: O dispositivo tem um teclado de hardware disponível,
+mas está oculto <em>e</em> o dispositivo <em>não</em> tem um teclado de software ativo.</li>
+          <li>{@code keyssoft}: O dispositivo tem um teclado de software ativo,
+visível ou não.</li>
+        </ul>
+        <p>Se você fornecer os recursos <code>keysexposed</code>, mas não os recursos <code>keyssoft</code>,
+ o sistema usará os recursos <code>keysexposed</code> independente da visibilidade
+do teclado, contanto que o sistema tenha um teclado de software ativo.</p>
+        <p>Isto pode mudar durante a vida útil do aplicativo se o usuário abrir um teclado
+de hardware. Consulte <a href="runtime-changes.html">Tratamento de alterações em tempo de execução</a> para obter informações
+sobre como isto pode afetar o aplicativo em tempo de execução.</p>
+        <p>Veja também os campos de configuração {@link
+android.content.res.Configuration#hardKeyboardHidden} e {@link
+android.content.res.Configuration#keyboardHidden}, que indicam a visibilidade de um teclado de hardware
+e a visibilidade de qualquer tipo de teclado (incluindo software), respectivamente.</p>
+      </td>
+    </tr>
+    <tr id="ImeQualifier">
+      <td>Método principal de entrada de texto</td>
+      <td>
+        <code>nokeys</code><br/>
+        <code>qwerty</code><br/>
+        <code>12key</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code nokeys}: O dispositivo não tem teclas de hardware para entradas de texto.</li>
+          <li>{@code qwerty}: O dispositivo tem um teclado QWERTY de hardware, esteja ele visível ao
+usuário
+ou não.</li>
+          <li>{@code 12key}: O dispositivo tem um teclado de hardware de 12 teclas, esteja ele visível ao usuário
+ou não.</li>
+        </ul>
+        <p>Veja também o campo de configuração {@link android.content.res.Configuration#keyboard},
+que indica o método de entrada de texto principal disponível.</p>
+      </td>
+    </tr>
+    <tr id="NavAvailQualifier">
+      <td>Disponibilidade da chave de navegação</td>
+      <td>
+        <code>navexposed</code><br/>
+        <code>navhidden</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code navexposed}: As teclas de navegação estão disponíveis para o usuário.</li>
+          <li>{@code navhidden}: As teclas de navegação não estão disponíveis (como as que ficam atrás
+de uma tampa fechada).</li>
+        </ul>
+        <p>Isto pode mudar durante a vida útil do aplicativo se o usuário revelar
+as teclas de navegação. Consulte <a href="runtime-changes.html">Tratamento de alterações em tempo de execução</a> para obter informações
+sobre como isto pode afetar o aplicativo em tempo de execução.</p>
+        <p>Consulte também o campo de configuração {@link android.content.res.Configuration#navigationHidden},
+que indica se as teclas de navegação estão ocultas.</p>
+      </td>
+    </tr>
+    <tr id="NavigationQualifier">
+      <td>Método principal de navegação sem toque</td>
+      <td>
+        <code>nonav</code><br/>
+        <code>dpad</code><br/>
+        <code>trackball</code><br/>
+        <code>wheel</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code nonav}: O dispositivo não tem recursos de navegação além
+da tela sensível ao toque.</li>
+          <li>{@code dpad}: O dispositivo tem um teclado direcional (d-pad) para navegação.</li>
+          <li>{@code trackball}: O dispositivo tem um cursor de bola para navegação.</li>
+          <li>{@code wheel}: O dispositivo tem rodas direcionais para navegação (incomum).</li>
+        </ul>
+        <p>Veja também o campo de configuração {@link android.content.res.Configuration#navigation},
+que indica o tipo de método de navegação disponível.</p>
+      </td>
+    </tr>
+<!-- DEPRECATED
+    <tr>
+      <td>Screen dimensions</td>
+      <td>Examples:<br/>
+        <code>320x240</code><br/>
+        <code>640x480</code><br/>
+        etc.
+      </td>
+      <td>
+        <p>The larger dimension must be specified first. <strong>This configuration is deprecated
+and should not be used</strong>. Instead use "screen size," "wider/taller screens," and "screen
+orientation" described above.</p>
+      </td>
+    </tr>
+-->
+    <tr id="VersionQualifier">
+      <td>Versão da plataforma (nível de API)</td>
+      <td>Exemplos:<br/>
+        <code>v3</code><br/>
+        <code>v4</code><br/>
+        <code>v7</code><br/>
+        etc.</td>
+      <td>
+        <p>O nível de API suportado pelo dispositivo. Por exemplo, <code>v1</code> para a API de nível 1
+(dispositivos com Android 1.0 ou mais recente) e <code>v4</code> para API de nível 4 (dispositivos com Android
+1.6 ou mais recente). Veja o documento <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Níveis de API do Android</a> para obter mais informações
+sobre esses valores.</p>
+      </td>
+    </tr>
+</table>
+
+
+<p class="note"><strong>Observação:</strong> alguns qualificadores de configuração foram adicionados desde o Android 1.0,
+ então nem todas as versões do Android suportam todos eles. Usar um novo qualificador
+adiciona implicitamente um qualificador da versão de plataforma, então dispositivos mais antigos com certeza o ignorarão. Por exemplo, usar
+um qualificador <code>w600dp</code> incluirá automaticamente o qualificador <code>v13</code>,
+pois o qualificador de largura disponível era novo na API de nível 13. Para evitar quaisquer problemas, sempre inclua um conjunto
+de recursos padrão (um conjunto de recursos <em>sem qualificadores</em>). Para obter mais informações, consulte
+a seção <a href="#Compatibility">Fornecimento da melhor compatibilidade de dispositivo com
+recursos</a>.</p>
+
+
+
+<h3 id="QualifierRules">Regras de nome do qualificador</h3>
+
+<p>A seguir há algumas regras sobre como usar nomes de qualificador de configuração:</p>
+
+<ul>
+    <li>É possível especificar vários qualificadores para um único conjunto de recursos, separados por travessões. Por exemplo,
+<code>drawable-en-rUS-land</code> aplica-se aos dispositivos em inglês dos E.U.A.
+na orientação de paisagem.</li>
+    <li>Os qualificador devem estar na ordem listada na <a href="#table2">tabela 2</a>. Por
+exemplo:
+      <ul>
+        <li>Incorreto: <code>drawable-hdpi-port/</code></li>
+        <li>Correto: <code>drawable-port-hdpi/</code></li>
+      </ul>
+    </li>
+    <li>Os diretórios de recursos alternativos não podem ser aninhados. Por exemplo, não é possível ter
+<code>res/drawable/drawable-en/</code>.</li>
+    <li>Os valores não diferenciam letras maiúsculas e minúsculas.  O compilador de recursos converte nomes de diretório
+    para letras minúsculas antes de processar para evitar problemas nos sistemas de arquivo
+    que não diferenciam maiúsculas e minúsculas. Qualquer letra maiúscula nos nomes é apenas para o benefício da leitura.</li>
+    <li>Somente um valor para cada tipo de qualificador é suportado. Por exemplo, se quiser usar
+os mesmos arquivos desenháveis para Espanha e França, <em>não</em> é possível ter um diretório chamado 
+<code>drawable-rES-rFR/</code>. Em vez disso, você precisa de dois diretórios de recursos, como
+<code>drawable-rES/</code> e <code>drawable-rFR/</code>, que contenham arquivos adequados.
+No entanto, não é necessário duplicar os mesmos arquivos em ambos os locais. Em vez disso,
+é possível criar um alias para um recurso. Consulte <a href="#AliasResources">Criação de recursos
+de alias</a> abaixo.</li>
+</ul>
+
+<p>Após salvar os recursos alternativos nos diretórios nomeados
+com esses qualificadores, o Android aplicará automaticamente os recursos no aplicativo com base
+na configuração atual do dispositivo. Sempre que um recurso for solicitado, o Android verificará diretórios de recursos alternativos
+que contenham o arquivo de recurso solicitado e, em seguida,<a href="#BestMatch">encontrará o melhor
+recurso correspondente</a> (discutido abaixo). Se não houver recursos alternativos que correspondam
+a uma configuração de dispositivo específica, o Android usará os recursos padrão correspondentes
+(o conjunto de recursos para um tipo de recurso específico que não inclua um qualificador
+de configuração).</p>
+
+
+
+<h3 id="AliasResources">Criação de recursos de alias</h3>
+
+<p>Quando estiver com um recurso que gostaria de usar para mais
+de uma configuração de dispositivo, mas não quer fornecê-lo como um recurso padrão), não será necessário usar o mesmo
+recurso em mais de um diretório de recursos alternativos. Em vez disso, é possível (em alguns casos) criar um
+recurso
+alternativo que age como um alias para um recurso salvo no diretório de recurso padrão.</p>
+
+<p class="note"><strong>Observação:</strong> nem todos os recursos oferecem um mecanismo que possibilita
+criar um alias para outro recurso. Em particular, recursos de animação, de menu, brutos
+e de outros tipos no diretório {@code xml/} não oferecem esta função.</p>
+
+<p>Por exemplo, imagine que você possui um ícone do aplicativo, {@code icon.png}, e precisa da versão exclusiva
+para diferentes localidades. No entanto, duas localidades, inglês canadense e francês canadense,
+precisam usar a mesma versão. Você pode presumir que precisa copiar a mesma imagem
+para o diretório do recurso do inglês canadense e do francês canadense,
+mas não é verdade. Em vez disso, é possível salvar a imagem que é usada para ambos como {@code icon_ca.png} (qualquer
+nome que não seja {@code icon.png}) e colocá-la
+no diretório {@code res/drawable/} padrão. Em seguida, crie um arquivo {@code icon.xml} em {@code
+res/drawable-en-rCA/} e em {@code res/drawable-fr-rCA/} que mencione o recurso {@code icon_ca.png}
+usando o elemento {@code &lt;bitmap&gt;}. Isto permite que você armazene apenas uma versão do arquivo
+PNG e dois arquivos XML pequenos que apontam para ele. (Um exemplo de arquivo XML é exibido abaixo)</p>
+
+
+<h4>Desenhável</h4>
+
+<p>Para criar um alias para um desenhável existente, use o elemento {@code &lt;bitmap&gt;}.
+Por exemplo:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/icon_ca" />
+</pre>
+
+<p>Se salvar esse arquivo como {@code icon.xml} (em um diretório de recursos alternativos,
+como {@code res/drawable-en-rCA/}), ele será compilado em um recurso
+que pode ser mencionado como {@code R.drawable.icon}, mas é um alias para o recurso {@code
+R.drawable.icon_ca}, que é salvo em{@code res/drawable/}.</p>
+
+
+<h4>Layout</h4>
+
+<p>Para criar um alias para um layout existente, use o elemento {@code &lt;include&gt;}
+, agrupado em um {@code &lt;merge&gt;}. Por exemplo:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;merge>
+    &lt;include layout="@layout/main_ltr"/>
+&lt;/merge>
+</pre>
+
+<p>Se salvar esse arquivo como {@code main.xml}, ele será compilado em um recurso
+que pode ser mencionado como {@code R.layout.main}, mas é um alias para o recurso {@code R.layout.main_ltr}
+.</p>
+
+
+<h4>Strings e outros valores simples</h4>
+
+<p>Para criar um alias para uma string existente, basta usar o ID de recurso da string
+desejado como o valor para a nova string. Por exemplo:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;string name="hello">Hello&lt;/string>
+    &lt;string name="hi">@string/hello&lt;/string>
+&lt;/resources>
+</pre>
+
+<p>O recurso {@code R.string.hi} é agora um alias para {@code R.string.hello}.</p>
+
+<p> <a href="{@docRoot}guide/topics/resources/more-resources.html">Outros valores simples</a> funcionam
+da mesma forma. Por exemplo, uma cor:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;color name="yellow">#f00&lt;/color>
+    &lt;color name="highlight">@color/red&lt;/color>
+&lt;/resources>
+</pre>
+
+
+
+
+<h2 id="Compatibility">Fornecimento da melhor compatibilidade de dispositivo com recursos</h2>
+
+<p>Para o aplicativo suportar várias configurações de dispositivo, é muito importante
+que você sempre forneça recursos padrão para cada tipo de recurso que o aplicativo usar.</p>
+
+<p>Por exemplo, se o aplicativo suportar vários idiomas, sempre inclua um diretório {@code
+values/} (em que as strings sejam salvas) <em>sem</em> um <a href="#LocaleQualifier">qualificador de região e idioma</a>. Se colocar todos os arquivos de string
+em diretórios que têm qualificadores de região e idioma, o aplicativo apresentará erros ao entrar em execução
+em dispositivo configurado para um idioma que as strings não suportem. Mas, contanto que você forneça recursos
+{@code values/} padrão, o aplicativo será executado sem problemas (mesmo que o usuário
+não entenda o idioma &mdash; é melhor do que apresentar erros).</p>
+
+<p>Do mesmo modo, se você fornecer recursos de layout diferentes com base na orientação da tela, deve
+escolher uma orientação como a padrão. Por exemplo, em vez de fornecer recursos de layout em {@code
+layout-land/} para paisagem e {@code layout-port/} para retrato, deixe uma como padrão, como
+{@code layout/} para paisagem e {@code layout-port/} para retrato.</p>
+
+<p>Fornecer recursos padrão é importante não só porque o aplicativo pode ser executado
+em uma configuração que você não tenha antecipado, mas também as novas versões do Android, às vezes, adicionam
+qualificadores de configuração que as versões mais antigas não suportam. Se usar um novo qualificador de recurso,
+mas mantiver a compatibilidade do código com versões mais antigas do Android, quando uma versão mais antiga
+do Android executar seu aplicativo, ocorrerá um erro caso você não forneça os recursos padrão, pois ele
+não poderá usar os recursos nomeados com o novo qualificador. Por exemplo, se <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code
+minSdkVersion}</a> estiver definido como 4 e você qualificar todos os recursos desenháveis usando o <a href="#NightQualifier">modo noturno</a> ({@code night} ou {@code notnight}, que foram adicionados à API de nível 8),
+então o dispositivo com API de nível 4 não poderá acessar os recursos desenháveis e apresentará erro. Neste caso,
+você provavelmente quererá que {@code notnight} seja o recurso padrão, então deverá excluir esse qualificador
+para que os recursos desenháveis fiquem em {@code drawable/} ou {@code drawable-night/}.</p>
+
+<p>Então, para fornecer a melhor compatibilidade de dispositivo, sempre forneça os recursos
+padrão para os recursos imprescindíveis para o aplicativo para obter o desempenho adequado. Em seguida,
+crie recursos para configurações específicas de dispositivo usando os qualificadores de configuração.</p>
+
+<p>Há uma exceção a esta regra: Se a <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> do aplicativo for 4
+ou maior, você <em>não</em> precisará de recursos desenháveis padrão ao fornecer recursos desenháveis alternativos
+com o qualificador de <a href="#DensityQualifier">densidade da tela</a>. Mesmo sem os recursos desenháveis
+padrão, o Android poderá encontrar a melhor correspondência dentre as densidades de tela alternativas e dimensionar
+os bitmaps conforme necessário. No entanto, para obter a melhor experiência em todos os tipos de dispositivo,
+você deve fornecer desenháveis alternativos para todos os três tipos de densidade.</p>
+
+
+
+<h2 id="BestMatch">Como o Android encontra o melhor recurso correspondente</h2>
+
+<p>Ao solicitar um recurso para o qual você fornece alternativas, o Android seleciona
+quais recursos alternativos usar em tempo de execução, dependendo da configuração do dispositivo atual. Para demonstrar
+como o Android seleciona um recurso alternativo, presuma que os seguintes diretórios desenháveis
+contenham versões diferentes das mesmas imagens:</p>
+
+<pre class="classic no-pretty-print">
+drawable/
+drawable-en/
+drawable-fr-rCA/
+drawable-en-port/
+drawable-en-notouch-12key/
+drawable-port-ldpi/
+drawable-port-notouch-12key/
+</pre>
+
+<p>E presuma que a configuração do dispositivo é a seguinte:</p>
+
+<p style="margin-left:1em;">
+Localidade = <code>en-GB</code> <br/>
+Orientação da tela = <code>port</code> <br/>
+Densidade de pixel da tela = <code>hdpi</code> <br/>
+Tipo de tela sensível ao toque = <code>notouch</code> <br/>
+Método principal de entrada de texto = <code>12key</code>
+</p>
+
+<p>Ao comparar a configuração do dispositivo com os recursos alternativos disponíveis, o Android seleciona
+desenháveis de {@code drawable-en-port}.</p>
+
+<p>O sistema chega à conclusão de quais recursos deve usar
+com a seguinte lógica:</p>
+
+
+<div class="figure" style="width:371px">
+<img src="{@docRoot}images/resources/res-selection-flowchart.png" alt="" height="471" />
+<p class="img-caption"><strong>Figura 2.</strong> Fluxograma de como o Android
+encontra o melhor recurso correspondente.</p>
+</div>
+
+
+<ol>
+  <li>Elimine os arquivos de recurso que contradizem a configuração do dispositivo.
+    <p>O diretório <code>drawable-fr-rCA/</code> é eliminado,
+pois contradiz a localidade <code>en-GB</code>.</p>
+<pre class="classic no-pretty-print">
+drawable/
+drawable-en/
+<strike>drawable-fr-rCA/</strike>
+drawable-en-port/
+drawable-en-notouch-12key/
+drawable-port-ldpi/
+drawable-port-notouch-12key/
+</pre>
+<p class="note"><strong>Exceção:</strong> a densidade de pixel da tela é a que o qualificador
+não eliminou devido a uma contradição. Apesar de a densidade da tela do dispositivo ser hdpi,
+<code>drawable-port-ldpi/</code> não é eliminado, pois todas as densidades de telas
+são consideradas uma correspondência neste ponto. Obtenha mais informações no documento <a href="{@docRoot}guide/practices/screens_support.html">Compatibilidade com
+várias telas</a>.</p></li>
+
+  <li>Escolha o (próximo) qualificador de maior precedência na lista (<a href="#table2">tabela 2</a>).
+(Comece com MCC e, em seguida, siga para baixo.) </li>
+  <li>Algum dos diretórios de recurso incluem este qualificador?  </li>
+    <ul>
+      <li>Se não, volte à etapa 2 e veja o próximo qualificador. (Neste exemplo,
+  a resposta é "não" até que o qualificador de idioma seja alcançado.)</li>
+      <li>Se sim, prossiga para a etapa 4.</li>
+    </ul>
+  </li>
+
+  <li>Elimine os diretórios de recurso que não incluem este qualificador. No exemplo, o sistema
+elimina todos os diretórios que não incluem um qualificador de idioma:</li>
+<pre class="classic no-pretty-print">
+<strike>drawable/</strike>
+drawable-en/
+drawable-en-port/
+drawable-en-notouch-12key/
+<strike>drawable-port-ldpi/</strike>
+<strike>drawable-port-notouch-12key/</strike>
+</pre>
+<p class="note"><strong>Exceção:</strong> se o qualificador em questão for a densidade de pixel da tensidade da tela
+do dispositivo de forma mais aproximada.
+Geralmente, o Android prefere dimensionar uma imagem original maior
+em vez de uma maior. Consulte <a href="{@docRoot}guide/practices/screens_support.html">Compatibilidade com
+várias telas</a>.</p>
+  </li>
+
+  <li>Volte e repita as etapas 2, 3 e 4 até que reste apenas um diretório. No exemplo, a orientação da tela
+é o próximo qualificador, onde há várias correspondências.
+Portanto, os recursos que não especificarem uma orientação de tela serão eliminados:
+<pre class="classic no-pretty-print">
+<strike>drawable-en/</strike>
+drawable-en-port/
+<strike>drawable-en-notouch-12key/</strike>
+</pre>
+<p>O diretório restante é {@code drawable-en-port}.</p>
+  </li>
+</ol>
+
+<p>Apesar de este processo ser executado para cada recurso solicitado, o sistema posteriormente aprimora
+alguns aspectos. Tal otimização, quando a configuração do dispositivo é conhecida,
+pode eliminar os recursos alternativos que nunca correspondem. Por exemplo, se o idioma
+da configuração for inglês ("en"), então qualquer diretório de recurso que tiver um qualificador de idioma definido para
+outro idioma que não seja inglês nunca será incluído no conjunto de recursos verificados (apesar de um
+diretório de recursos <em>sem</em> o qualificador de idioma ainda ser incluído).</p>
+
+<p>Ao selecionar os recursos com base nos qualificadores de tamanho da tela, o sistema usará os recursos
+projetados para uma tela menor do que a tela atual, caso não tenha recursos que correspondam de forma mais eficaz
+(por exemplo: uma tela de tamanho grande usará os recursos de tela de tamanho normal se necessário). No entanto,
+se os únicos recursos disponíveis forem <em>maiores</em> do que a tela atual, o sistema
+<strong>não</strong> os usará e o aplicativo apresentará erros se nenhum outro recurso corresponder à configuração
+do dispositivo (por exemplo, se todos os recursos de layout estiverem com a tag do qualificador {@code xlarge},
+mas o dispositivo tiver uma tela de tamanho normal).</p>
+
+<p class="note"><strong>Observação:</strong> a <em>precedência</em> do qualificador (na <a href="#table2">tabela 2</a>) é mais importante
+do que o número de qualificadores que correspondem exatamente ao dispositivo. Por exemplo, na etapa 4 acima, a última
+escolha na lista inclui três qualificadores que correspondem exatamente ao dispositivo (orientação, tipo de
+tela sensível ao toque e método de entrada), enquanto que <code>drawable-en</code> possui apenas um parâmetro que corresponde
+(idioma). No entanto, o idioma tem uma precedência maior que esses outros qualificadores, então 
+<code>drawable-port-notouch-12key</code> está fora.</p>
+
+<p>Para obter mais informações sobre como usar os recursos no aplicativo, acesse <a href="accessing-resources.html">Acesso aos recursos</a>.</p>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/resources/runtime-changes.jd b/docs/html-intl/intl/pt-br/guide/topics/resources/runtime-changes.jd
new file mode 100644
index 0000000..366ce0d
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/resources/runtime-changes.jd
@@ -0,0 +1,281 @@
+page.title=Tratar alterações no tempo de execução
+page.tags=atividade,ciclo de vida
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>Neste documento</h2>
+  <ol>
+    <li><a href="#RetainingAnObject">Retenção de um objeto durante uma alteração de configuração</a></li>
+    <li><a href="#HandlingTheChange">Tratar você mesmo da alteração de configuração</a>
+  </ol>
+
+  <h2>Veja também</h2>
+  <ol>
+    <li><a href="providing-resources.html">Fornecimento de recursos</a></li>
+    <li><a href="accessing-resources.html">Acesso aos recursos</a></li>
+    <li><a href="http://android-developers.blogspot.com/2009/02/faster-screen-orientation-change.html">Alteração
+mais rápida da orientação da tela</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Algumas configurações do dispositivo podem mudar durante o tempo de execução
+(como orientação de tela, disponibilidade do teclado e idioma). Quando ocorre uma alteração,
+o Android precisa reiniciar a execução
+de {@link android.app.Activity} ({@link android.app.Activity#onDestroy()} é chamado, seguido de {@link
+android.app.Activity#onCreate(Bundle) onCreate()}). O comportamento de reinício foi projetado para ajudar
+o aplicativo a se adaptar a novas configurações recarregando automaticamente o aplicativo
+com recursos alternativos que correspondam com a configuração do dispositivo.</p>
+
+<p>Para tratar adequadamente um reinício, é importante que a atividade se restaure
+ao estado anterior por meio do <a href="{@docRoot}guide/components/activities.html#Lifecycle">ciclo de vida
+da atividade</a>, no qual o Android chama
+{@link android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()} antes de destruir
+a atividade para que seja possível salvar os dados acerca do estado do aplicativo. Em seguida, é possível restaurar o estado
+durante {@link android.app.Activity#onCreate(Bundle) onCreate()} ou {@link
+android.app.Activity#onRestoreInstanceState(Bundle) onRestoreInstanceState()}.</p>
+
+<p>Para testar se o aplicativo se reinicia com o estado de aplicativo intacto, deve-se
+invocar as alterações de configuração (como alterações na orientação da tela) enquanto executa diversas
+tarefas no aplicativo. O aplicativo deve ser capaz de reiniciar a qualquer momento sem perda
+de dados do usuário ou estado para tratar eventos como alterações de configuração ou quando o usuário recebe
+uma chamada telefônica e, em seguida, retorna ao aplicativo bem depois
+de destruído o processo do aplicativo. Para ver como restaurar o estado da atividade, leia sobre o <a href="{@docRoot}guide/components/activities.html#Lifecycle">Ciclo de vida da atividade</a>.</p>
+
+<p>No entanto, pode-se encontrar uma situação em que o reinício do aplicativo
+e a restauração representem quantidades significativas de dados que podem ser custosos e prejudicar a experiência do usuário. Nessa situação,
+temos duas opções:</p>
+
+<ol type="a">
+  <li><a href="#RetainingAnObject">Reter um objeto durante uma alteração de configuração</a>
+  <p>Permita que a atividade reinicie quando uma configuração muda, mas transporte um objeto
+de estado para a nova instância da atividade.</p>
+
+  </li>
+  <li><a href="#HandlingTheChange">Tratar você mesmo da alteração de configuração</a>
+  <p>Evite que o sistema reinicie a atividade durante certas alterações
+de configuração, mas receba um retorno de chamada quando as configurações se alteram, para que você atualize manualmente
+a atividade conforme necessário.</p>
+  </li>
+</ol>
+
+
+<h2 id="RetainingAnObject">Retenção de um objeto durante uma alteração de configuração</h2>
+
+<p>Se a retenção da atividade exigir a recuperação de grandes conjuntos de dados, restabelecer uma conexão
+de rede ou executar outras operações intensivas, um reinício completo devido a uma alteração
+de configuração pode prejudicar a experiência do usuário. Além disso, pode não ser possível restaurar completamente
+o estado da atividade com o {@link android.os.Bundle} que o sistema salva com o retorno de chamada {@link
+android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()} &mdash; ele
+não foi projetado para transportar objetos grandes (como bitmaps) e os dados contidos devem ser serializados
+e, em seguida, desserializados, o que pode consumir muita memória e retardar a alteração de configuração. Nesse caso,
+para aliviar o peso de reinicializar a atividade, pode-se reter um {@link
+android.app.Fragment} quando a atividade for reiniciada devido a uma alteração de configuração. Esse fragmento
+pode conter referências a objetos com estado que seja preciso reter.</p>
+
+<p>Quando o sistema Android encerra a atividade devido a uma alteração de configuração, os fragmentos
+da atividade marcados para serem retidos não são destruídos. É possível adicionar esses fragmentos
+à atividade para preservar objetos de estado.</p>
+
+<p>Para reter objetos de estado em um fragmento durante uma alteração de configuração em tempo de execução:</p>
+
+<ol>
+  <li>Estenda a classe {@link android.app.Fragment} e declare referências aos objetos
+de estado.</li>
+  <li>Chame {@link android.app.Fragment#setRetainInstance(boolean)} quando o fragmento for criado.
+      </li>
+  <li>Acrescente o fragmento à atividade.</li>
+  <li>Use {@link android.app.FragmentManager} para recuperar o fragmento quando a atividade for
+reiniciada.</li>
+</ol>
+
+<p>Por exemplo: defina o fragmento da seguinte forma:</p>
+
+<pre>
+public class RetainedFragment extends Fragment {
+
+    // data object we want to retain
+    private MyDataObject data;
+
+    // this method is only called once for this fragment
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // retain this fragment
+        setRetainInstance(true);
+    }
+
+    public void setData(MyDataObject data) {
+        this.data = data;
+    }
+
+    public MyDataObject getData() {
+        return data;
+    }
+}
+</pre>
+
+<p class="caution"><strong>Atenção:</strong> ao restaurar qualquer objeto,
+não se deve nunca passar um objeto vinculado a {@link android.app.Activity}, como um {@link
+android.graphics.drawable.Drawable}, um {@link android.widget.Adapter}, um {@link android.view.View}
+ou qualquer outro objeto associado a um {@link android.content.Context}. Se o fizer,
+ele vazará todas as vistas e recursos da instância da atividade original (vazar recursos
+significa que o aplicativo mantém a retenção deles, que não podem ser recolhidos, o que
+causa perda de memória).</p>
+
+<p>Em seguida, use {@link android.app.FragmentManager} para adicionar o fragmento à atividade. 
+É possível obter o objeto de dados do fragmento quando a atividade reiniciar durante as alterações
+de configuração em tempo de execução. Por exemplo: defina a atividade da seguinte forma:</p>
+
+<pre>
+public class MyActivity extends Activity {
+
+    private RetainedFragment dataFragment;
+
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+
+        // find the retained fragment on activity restarts
+        FragmentManager fm = getFragmentManager();
+        dataFragment = (DataFragment) fm.findFragmentByTag(“data”);
+
+        // create the fragment and data the first time
+        if (dataFragment == null) {
+            // add the fragment
+            dataFragment = new DataFragment();
+            fm.beginTransaction().add(dataFragment, “data”).commit();
+            // load the data from the web
+            dataFragment.setData(loadMyData());
+        }
+
+        // the data is available in dataFragment.getData()
+        ...
+    }
+
+    &#64;Override
+    public void onDestroy() {
+        super.onDestroy();
+        // store the data in the fragment
+        dataFragment.setData(collectMyLoadedData());
+    }
+}
+</pre>
+
+<p>Nesse exemplo, {@link android.app.Activity#onCreate(Bundle) onCreate()} adiciona um fragmento
+ou restaura uma referência a ele. {@link android.app.Activity#onCreate(Bundle) onCreate()} também
+armazena o objeto de estado dentro da instância de fragmento.
+{@link android.app.Activity#onDestroy() onDestroy()} atualiza o objeto de estado dentro
+da instância de fragmento retida.</p>
+
+
+
+
+
+<h2 id="HandlingTheChange">Tratar você mesmo da alteração de configuração</h2>
+
+<p>Se o aplicativo não tiver que atualizar recursos durante uma alteração de configuração específica
+<em>e</em> se houver alguma limitação de desempenho que
+impeça a atividade de reiniciar, pode-se declarar que a atividade trata ela mesma da alteração de configuração,
+o que evita que o sistema reinicie a atividade.</p>
+
+<p class="note"><strong>Observação:</strong> Tratar você mesmo da alteração de configuração
+pode dificultar muito o uso de recursos alternativos, pois o sistema não os aplicará
+automaticamente. Esta técnica deve ser considerada um último recurso, quando é preciso evitar reinícios
+devido a uma alteração de configuração e não é recomendada para a maioria dos aplicativos.</p>
+
+<p>Para declarar que a atividade manipula uma alteração de configuração, edite o elemento <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+apropriado no arquivo de manifesto para que inclua o atributo <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> com um valor que represente a configuração
+a tratar. Os valores possíveis estão listados na documentação do atributo <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> (os valores mais comumente usados são {@code "orientation"}, para
+impedir reinícios durante alterações na orientação da tela, e {@code "keyboardHidden"} para impedir
+reinícios quando a disponibilidade do teclado muda).  Para declarar vários valores de configuração
+no atributo, usa-se um separador na forma de caractere barra reta {@code |}.</p>
+
+<p>Por exemplo: o código de manifesto a seguir declara uma atividade que trata tanto
+da alteração de orientação da tela quanto da disponibilidade do teclado:</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"
+          android:configChanges="orientation|keyboardHidden"
+          android:label="@string/app_name">
+</pre>
+
+<p>Agora, quando uma dessas configurações mudar, {@code MyActivity} não reiniciará.
+Em vez disso, a {@code MyActivity} recebe uma chamada para {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}. Um objeto
+{@link android.content.res.Configuration} é passado a esse método e especifica
+a nova configuração do dispositivo. Ao ler os campos em {@link android.content.res.Configuration},
+pode-se determinar a nova configuração e atualizar os recursos na interface para fazer
+as alterações adequadas. No momento
+em que o método é chamado, o objeto {@link android.content.res.Resources} da atividade é atualizado
+para retornar recursos com base na nova configuração, o que facilita
+a redefinição de elementos da IU sem que o sistema reinicie a atividade.</p>
+
+<p class="caution"><strong>Atenção:</strong> a partir do Android 3.2 (nível da API 13), <strong>o "tamanho
+da tela" também muda</strong> quando o dispositivo alterna entre as orientações retrato
+e paisagem. Assim, se você deseja evitar que o tempo de execução reinicie devido a uma mudança da orientação
+ao desenvolver uma API nível 13 ou posterior (conforme declarado pelos atributos <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> e <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a>),
+é preciso incluir o valor {@code "screenSize"} além do valor {@code
+"orientation"}. Ou seja, é preciso declarar {@code
+android:configChanges="orientation|screenSize"}. No entanto, se o aplicativo tem como alvo uma API nível
+12 ou inferior, a atividade sempre trata ela mesma a alteração de configuração (essa mudança
+de configuração não reinicia a atividade, mesmo em execução em Android 3.2 ou dispositivo posterior).</p>
+
+<p>Por exemplo: a implementação a seguir {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} verifica
+a orientação de dispositivo atual:</p>
+
+<pre>
+&#64;Override
+public void onConfigurationChanged(Configuration newConfig) {
+    super.onConfigurationChanged(newConfig);
+
+    // Checks the orientation of the screen
+    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
+        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
+    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
+        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
+    }
+}
+</pre>
+
+<p>O objeto {@link android.content.res.Configuration} representa todas as configurações
+atuais, não somente as que foram alteradas. Na maior parte do tempo, não importa como
+a configuração foi alterada; basta reatribuir todos os recursos que apresentam alternativas
+à configuração que estão sendo tratadas. Por exemplo: como o objeto {@link
+android.content.res.Resources} está atualizado, pode-se redefinir
+qualquer {@link android.widget.ImageView} com {@link android.widget.ImageView#setImageResource(int)
+setImageResource()}
+e será usado o recurso adequado à nova configuração (conforme descrito em <a href="providing-resources.html#AlternateResources">Como fornecer recursos</a>).</p>
+
+<p>Observe que os valores dos campos de {@link
+android.content.res.Configuration} são inteiros que correspondem a constantes específicas
+da classe {@link android.content.res.Configuration}. Para ver a documentação sobre as constantes
+a usar em cada campo, consulte o campo em questão na referência sobre {@link
+android.content.res.Configuration}.</p>
+
+<p class="note"><strong>Lembre-se:</strong> ao declarar a atividade para tratar uma alteração
+de configuração, você é responsável por redefinir todos os elementos que fornecem alternativas. Se você
+declarar a atividade para tratar a alteração de orientação e tiver imagens que alterariam
+entre paisagem e retrato, é preciso reatribuir cada recurso a cada elemento durante {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}.</p>
+
+<p>Se não for necessário atualizar o aplicativo com base nessas alterações
+de configuração, pode-se <em>não</em> implementar {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}. Nesse
+caso, todos os recursos usados antes da alteração de configuração ainda são usados
+e somente o reinício da atividade é evitado. No entanto, o aplicativo deve sempre ser capaz
+de se encerrar e reiniciar com seu estado anterior intacto, portanto essa técnica não deve
+ser considerada uma fuga da retenção do estado durante o ciclo de vida normal da atividade, Não somente porque
+há outras alterações de configuração impossíveis de evitar que reiniciem o aplicativo,
+mas também porque devem-se tratar eventos como o do usuário que sai do aplicativo e ele é destruído
+antes de o usuário voltar a ele.</p>
+
+<p>Para obter mais informações sobre as alterações de configuração que devem ser tratadas na atividade, consulte a documentação sobre <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> e a classe
+{@link android.content.res.Configuration}.</p>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/ui/controls.jd b/docs/html-intl/intl/pt-br/guide/topics/ui/controls.jd
new file mode 100644
index 0000000..58a4fcd
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/controls.jd
@@ -0,0 +1,90 @@
+page.title=Controles de entrada
+parent.title=Interface do usuário
+parent.link=index.html
+@jd:body
+
+<div class="figure" style="margin:0">
+  <img src="{@docRoot}images/ui/ui-controls.png" alt="" style="margin:0" />
+</div>
+
+<p>Controles de entrada são os componentes interativos na interface do usuário de seu aplicativo. O Android oferece
+uma ampla variedade de controles que podem ser usados na IU, como botões, campos de texto, barras de busca,
+caixas de seleção, botões de zoom, botões de alternância e muito mais.</p>
+
+<p>Adicionar um controle de entrada à IU é tão simples quanto adicionar um elemento XML ao <a href="{@docRoot}guide/topics/ui/declaring-layout.html">layout XML</a>. Por exemplo, a seguir apresenta-se
+um layout com um campo de texto e um botão:</p>
+
+<pre style="clear:right">
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="horizontal">
+    &lt;EditText android:id="@+id/edit_message"
+        android:layout_weight="1"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:hint="@string/edit_message" />
+    &lt;Button android:id="@+id/button_send"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/button_send"
+        android:onClick="sendMessage" />
+&lt;/LinearLayout>
+</pre>
+
+<p>Cada controle de entrada tem suporte para um conjunto específico de eventos de entrada, portanto, você pode tratar eventos como quando
+o usuário digita texto ou toca em um botão.</p>
+
+
+<h2 id="CommonControls">Controles comuns</h2>
+<p>A seguir há uma lista de alguns controles comuns que você pode usar no aplicativo. Siga os links para saber
+mais sobre o uso de cada um.</p>
+
+<p class="note"><strong>Observação:</strong> o Android fornece muitos outros controles além dos listados
+aqui. Navegue no pacote {@link android.widget} para descobrir mais. Se o aplicativo precisa
+de um tipo específico de controle de entrada, você pode criar os próprios <a href="{@docRoot}guide/topics/ui/custom-components.html">componentes personalizados</a>.</p>
+
+<table>
+    <tr>
+        <th scope="col">Tipo de controle</th>
+        <th scope="col">Descrição</th>
+	<th scope="col">Classes relacionadas</th>
+    </tr>
+    <tr>
+        <td><a href="controls/button.html">Botão</a></td>
+        <td>Um botão de pressão que pode ser pressionado ou clicado pelo usuário para realizar uma ação.</td>
+	<td>{@link android.widget.Button Button} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/text.html">Campo de texto</a></td>
+        <td>Um campo de texto editável. É possível usar o widget <code>AutoCompleteTextView</code> para criar um widget de entrada de texto que forneça sugestões para preenchimento automático</td>
+	<td>{@link android.widget.EditText EditText}, {@link android.widget.AutoCompleteTextView}</td>
+    </tr>
+    <tr>
+        <td><a href="controls/checkbox.html">Caixa de seleção</a></td>
+        <td>Uma chave liga/desliga que pode ser alternada pelo usuário. Use caixas de seleção ao apresentar aos usuários um grupo de opções selecionáveis que não sejam mutualmente exclusivas.</td>
+	<td>{@link android.widget.CheckBox CheckBox} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/radiobutton.html">Botão de opção</a></td>
+        <td>Similar às caixas de seleção, exceto que somente uma opção pode ser selecionada no grupo.</td>
+	<td>{@link android.widget.RadioGroup RadioGroup} 
+	<br>{@link android.widget.RadioButton RadioButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/togglebutton.html" style="white-space:nowrap">Botão de alternância</a></td>
+        <td>Um botão liga/desliga com um indicador de luz.</td>
+	<td>{@link android.widget.ToggleButton ToggleButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/spinner.html">Controle giratório</a></td>
+        <td>Uma lista suspensa que permite que os usuários selecionem um valor de um conjunto.</td>
+	<td>{@link android.widget.Spinner Spinner} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/pickers.html">Seletores</a></td>
+        <td>Uma caixa de diálogo para que os usuários selecionem um valor para um conjunto usando botões para cima/para baixo ou via gesto de deslizar. Use um widget <code>DatePicker</code>code&gt; para inserir os valores para a data (mês, dia, ano) ou um widget <code>TimePicker</code> para inserir valores para um horário (hora, minuto, AM/PM), que será formatado automaticamente para a localidade do usuário.</td>
+	<td>{@link android.widget.DatePicker}, {@link android.widget.TimePicker}</td>
+    </tr>
+</table>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/ui/declaring-layout.jd b/docs/html-intl/intl/pt-br/guide/topics/ui/declaring-layout.jd
new file mode 100644
index 0000000..09dbd2c
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/declaring-layout.jd
@@ -0,0 +1,492 @@
+page.title=Layouts
+page.tags=vista,grupodevistas
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Neste documento</h2>
+<ol>
+  <li><a href="#write">Programação do XML</a></li>
+  <li><a href="#load">Carregamento do recurso XML</a></li>
+  <li><a href="#attributes">Atributos</a>
+    <ol>
+      <li><a href="#id">ID</a></li>
+      <li><a href="#layout-params">Parâmetros do layout</a></li>
+    </ol>
+  </li>
+  <li><a href="#Position">Posição do layout</a></li>
+  <li><a href="#SizePaddingMargins">Tamanho, preenchimento e margens</a></li>
+  <li><a href="#CommonLayouts">Layouts comuns</a></li>
+  <li><a href="#AdapterViews">Criação de layouts com um adaptador</a>
+    <ol>
+      <li><a href="#FillingTheLayout">Preenchimento da vista de um adaptador com dados</a></li>
+      <li><a href="#HandlingUserSelections">Tratamento de eventos de clique</a></li>
+    </ol>
+  </li>
+</ol>
+
+  <h2>Classes principais</h2>
+  <ol>
+    <li>{@link android.view.View}</li>
+    <li>{@link android.view.ViewGroup}</li>
+    <li>{@link android.view.ViewGroup.LayoutParams}</li>
+  </ol>
+
+  <h2>Veja também</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/firstapp/building-ui.html">Construção de uma interface do usuário
+simples</a></li> </div>
+</div>
+
+<p>O layout define a estrutura visual para uma interface do usuário, como a IU de uma <a href="{@docRoot}guide/components/activities.html">atividade</a> ou de um <a href="{@docRoot}guide/topics/appwidgets/index.html">widget de aplicativo</a>.
+É possível declarar um layout de dois modos:</p>
+<ul>
+<li><strong>Declarar elementos da IU em XML</strong>. O Android fornece um vocabulário XML
+direto que corresponde às classes e subclasses de View, como as de widgets e layouts.</li>
+<li><strong>Instanciar elementos do layout em tempo de execução</strong>. 
+O aplicativo pode criar objetos de View e ViewGroup (e manipular suas propriedades) programaticamente. </li>
+</ul>
+
+<p>A estrutura do Android é flexível para usar um destes métodos ou ambos para declarar e gerenciar a IU do seu aplicativo. Por exemplo: você pode declarar um layout padrão do aplicativo em XML, e incluir os elementos da tela que aparecerão neles e suas propriedades. Em seguida, você poderia adicionar códigos ao aplicativo que modificariam o estado dos objetos da tela, inclusive os declarados em XML, em tempo de execução. </p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <ul>
+  <li>A <a href="{@docRoot}tools/sdk/eclipse-adt.html">Extensão
+ADT para Eclipse</a> oferece uma pré-visualização do layout do XML &mdash;
+com o arquivo XML aberto, selecione a guia <strong>Layout</strong>.</li>
+  <li>Pode-se usar também a
+  ferramenta de <a href="{@docRoot}tools/debugging/debugging-ui.html#hierarchyViewer">Visualização de hierarquia</a>
+para depurar layouts &mdash; ela revela os valores de propriedades do layout,
+desenha o esqueleto do layout com indicadores de preenchimento/margens e vistas totalmente renderizadas
+e a depuração pode ocorrer no emulador ou no dispositivo.</li>
+  <li>A ferramenta <a href="{@docRoot}tools/debugging/debugging-ui.html#layoutopt">layoutopt</a> permite
+  a rápida análise dos layouts e hierarquias com relação a ineficiências e outros problemas.</li>
+</div>
+</div>
+
+<p>A vantagem de declarar a IU em XML é separar melhor a apresentação do aplicativo a partir do código que controla seu comportamento. As descrições da IU são externas ao código do aplicativo, ou seja, é possível modificá-la ou adaptá-la sem modificar o código-fonte e recompilar. Por exemplo: é possível criar layouts XML para diferentes orientações de tela, diferentes tamanhos de tela de dispositivos e diferentes idiomas. Além disso, a declaração de layout em XML facilita a exibição da estrutura da sua IU, o que facilita a depuração de problemas. Assim sendo, este documento se concentrará em ensinar a declarar o layout em XML. Se você
+estiver interessado em instanciar objetos View em tempo de execução, consulte as referências das classes
+{@link android.view.ViewGroup} e {@link android.view.View}.</p>
+
+<p>Em geral, o vocabulário XML para declarar elementos da IU segue rigorosamente a estrutura e a atribuição de nome às classes e aos métodos, em que os nomes de elementos correspondem a nomes de classe e nomes de atributos correspondem a métodos. Na verdade, a correspondência normalmente é tão direta que é possível supor qual atributo XML corresponde a determinado método de classe ou supor qual classe corresponde a certo elemento XML. Contudo, observe que nem todo vocabulário é idêntico. Em alguns casos, há pequenas diferenças de nome. Por exemplo:
+o elemento EditText tem um atributo <code>text</code> que corresponde
+a <code>EditText.setText()</code>. </p>
+
+<p class="note"><strong>Dica:</strong> Veja os diferentes tipos de layout em <a href="{@docRoot}guide/topics/ui/layout-objects.html">Objetos
+de layout comuns</a>. Também há uma coleção de tutoriais sobre a criação de diversos layouts
+no guia de tutorial <a href="{@docRoot}resources/tutorials/views/index.html">Vistas de boas-vindas</a>.</p>
+
+<h2 id="write">Programação do XML</h2>
+
+<p>Usando o vocabulário XML do Android, é possível projetar rapidamente layouts de IU e os elementos de tela intrínsecos do mesmo modo que se cria páginas web em HTML &mdash; com uma série de elementos aninhados. </p>
+
+<p>Cada arquivo de layout deve conter exatamente um elemento raiz, que deve ser um objeto View ou ViewGroup. Com o elemento raiz definido, é possível adicionar objetos ou widgets de layout extras como elementos filho para construir gradualmente uma hierarquia de View que define o layout. Por exemplo: eis um layout XML que usa um {@link android.widget.LinearLayout} vertical
+para conter uma {@link android.widget.TextView} e um {@link android.widget.Button}:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:orientation="vertical" >
+    &lt;TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="Hello, I am a TextView" />
+    &lt;Button android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Hello, I am a Button" />
+&lt;/LinearLayout>
+</pre>
+
+<p>Após declarar o layout no XML, salve o arquivo com uma extensão <code>.xml</code>
+no diretório <code>res/layout/</code> do projeto do Android para compilá-lo adequadamente. </p>
+
+<p>Veja mais informações sobre a sintaxe de um arquivo XML de layout no documento <a href="{@docRoot}guide/topics/resources/layout-resource.html">Recursos de layout</a>.</p>
+
+<h2 id="load">Carregamento do recurso XML</h2>
+
+<p>Ao compilar o aplicativo, cada arquivo de layout XML é compilado
+em um recurso {@link android.view.View}. Deve-se carregar o recurso de layout do código do aplicativo
+na implementação de retorno de chamada {@link android.app.Activity#onCreate(android.os.Bundle) Activity.onCreate()}.
+Para isso, chame <code>{@link android.app.Activity#setContentView(int) setContentView()}</code>,
+passando a referência para o recurso de layout na forma:
+<code>R.layout.<em>layout_file_name</em></code>.
+Por exemplo: se o layout XML for salvo como <code>main_layout.xml</code>, será necessário carregá-lo
+para a Atividade desta forma:</p>
+<pre>
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.main_layout);
+}
+</pre>
+
+<p>O método de retorno de chamada <code>onCreate()</code> na Atividade é chamado pela estrutura do Android quando
+ela é inicializada (veja a discussão sobre ciclos de vida no documento 
+<a href="{@docRoot}guide/components/activities.html#Lifecycle">Atividades</a>
+).</p>
+
+
+<h2 id="attributes">Atributos</h2>
+
+<p>Cada objeto View e ViewGroup aceita uma variedade própria de atributos XML.
+Alguns atributos são específicos de um objeto View (por exemplo, TextView aceita o atributo
+<code>textSize</code>), mas esses atributos também são herdados de objetos View que possam estender essa classe.
+Alguns são comuns a todos os objetos View porque são herdados da classe View raiz (como
+o atributo <code>id</code>). Além disso, outros atributos são considerados "parâmetros do layout", que são
+os que descrevem determinadas orientações de layout do objeto View conforme definido pelo objeto
+ViewGroup pai daquele objeto.</p>
+
+<h3 id="id">ID</h3>
+
+<p>Qualquer objeto View pode ter um ID de número inteiro associado para identificar exclusivamente o View dentro da árvore.
+Ao compilar o aplicativo, esse ID é referenciado como um número inteiro, mas o ID normalmente
+é atribuído no arquivo XML do layout como uma string, no atributo <code>id</code>.
+É um atributo XML comum a todos os objetos View
+(definido pela classe {@link android.view.View}) e você o usará com frequência.
+A sintaxe de um ID, dentro de uma tag XML, é:</p>
+<pre>android:id="&#64;+id/my_button"</pre>
+
+<p>Um símbolo de arroba (@) no início da string indica que o analisador XML deve analisar e expandir o restante
+da string de ID e identificá-la como um recurso de ID. O símbolo de mais (+) significa que é um novo nome de recurso que precisa
+ser criado e adicionado aos recursos (no arquivo <code>R.java</code>). Há diversos outros recursos de ID
+oferecidos pela estrutura do Android. Ao referenciar um ID de recurso do Android, não é necessário ter o símbolo de mais,
+mas deve-se adicionar o conjunto de nomes (namespace) do pacote <code>android</code> da seguinte maneira:</p>
+<pre>android:id="&#64;android:id/empty"</pre>
+<p>Com o conjunto de nomes (namespace) do pacote <code>android</code> em vigor, podemos referenciar um ID da classe
+de recursos <code>android.R</code> em vez de um da classe de recursos locais.</p>
+
+<p>Para criar vistas e referenciá-las a partir do aplicativo, um modo padrão comum é:</p>
+<ol>
+  <li>Definir uma visualizaçãovistawidget no arquivo de layout e atribuir um ID exclusivo a ele/ela:
+<pre>
+&lt;Button android:id="&#64;+id/my_button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="&#64;string/my_button_text"/>
+</pre>
+  </li>
+  <li>Em seguida, crie uma instância do objeto de vista e capture-a do layout
+(normalmente no método <code>{@link android.app.Activity#onCreate(Bundle) onCreate()}</code>):
+<pre>
+Button myButton = (Button) findViewById(R.id.my_button);
+</pre>
+  </li>
+</ol>
+<p>Definir IDs para objetos de vista é importante ao criar um {@link android.widget.RelativeLayout}.
+Em um layout relativo, vistas irmãs podem definir o layout relativo para outra vista irmã
+referenciada pelo ID exclusivo.</p>
+<p>Os Ids não precisam ser exclusivo por toda a árvore, mas devem ser
+exclusivos dentro da parte da árvore em que se está procurando (que pode, com frequência, ser toda a árvore, portanto é preferível
+ser totalmente exclusivo sempre que possível).</p>
+
+
+<h3 id="layout-params">Parâmetros do layout</h3>
+
+<p>Os atributos do layout XML chamados <code>layout_<em>something</em></code> definem
+parâmetros para a View que for apropriado para a ViewGroup em que reside.</p>
+
+<p>Cada classe ViewGroup implementa uma classe aninhada que estende {@link
+android.view.ViewGroup.LayoutParams}. Essa subclasse
+contém tipos de propriedade que definem o tamanho e a posição de cada vista filha, conforme
+o necessário para o grupo de vistas. Como se pode ver na figura 1, um grupo de vistas
+pais define parâmetros de layout para cada vista filha (incluindo o grupo de vistas filhas).</p>
+
+<img src="{@docRoot}images/layoutparams.png" alt="" />
+<p class="img-caption"><strong>Figura 1.</strong> Vista de uma hierarquia de vistas com parâmetros
+de layout associados a cada uma delas.</p>
+
+<p>Observe que cada subclasse LayoutParams tem a própria sintaxe para definir
+valores. Cada elemento filho deve definir LayoutParams apropriados para seu pai,
+embora possa também definir diferentes LayoutParams para os próprios filhos. </p>
+
+<p>Todos os grupos de vistas contêm largura e altura (<code>layout_width</code> e 
+<code>layout_height</code>) e cada vista é obrigatória para defini-las. Muitos
+LayoutParams também contêm margens e bordas opcionais. <p>
+
+<p>É possível especificar largura e altura com medidas exatas, embora não seja
+recomendável na maioria dos casos. Em geral, usa-se uma destas constantes para
+definir a largura e a altura: </p>
+
+<ul>
+  <li><var>wrap_content</var> instrui a vista a dimensionar-se de acordo com
+as medidas exigidas pelo conteúdo.</li>
+  <li><var>match_parent</var> (de nome <var>fill_parent</var> antes da API de nível 8)
+instrui a vista a tornar-se tão grande quanto o grupo de vistas pais permitir.</li>
+</ul>
+
+<p>Em geral, a especificação de largura e altura de um layout com unidades absolutas, como
+pixels, não é recomendada. Em vez disso, usam-se medidas relativas como
+unidades de pixel independentes de densidade (<var>dp</var>), <var>wrap_content</var>ou
+<var>match_parent</var>, é uma abordagem melhor porque ajuda a garantir
+que o aplicativo exiba o conteúdo adequadamente dentre diversos tamanhos de tela de dispositivos.
+Os tipos de medidas aceitos são definidos no documento
+<a href="{@docRoot}guide/topics/resources/available-resources.html#dimension">
+Recursos disponíveis</a>.</p>
+
+
+<h2 id="Position">Posição do layout</h2>
+   <p>
+   A geometria de uma vista de um retângulo. As vistas têm uma localização,
+   expressa como um par de coordenadas <em>esquerda</em> e <em>topo</em> 
+   e duas dimensões, expressas como largura e altura. A unidade de localização
+   e de dimensões é o pixel.
+   </p>
+
+   <p>
+   É possível recuperar a localização de uma vista chamando os métodos
+   {@link android.view.View#getLeft()} e {@link android.view.View#getTop()}. O primeiro retorna a coordenada
+   esquerda, ou X, do retângulo que representa a vista. O último retorna a coordenada
+   topo, ou Y, do retângulo que representa a vista. Esses métodos
+   retornam a localização da vista em relação ao pai correspondente. Por exemplo:
+   quando <code>getLeft()</code> retorna 20, significa que a vista se localiza 20 pixels à
+   direita da borda esquerda do seu pai direto.
+   </p>
+
+   <p>
+   Adicionalmente, diversos métodos de conveniência são oferecidos para evitar cálculos
+desnecessárias, chamados {@link android.view.View#getRight()} e {@link android.view.View#getBottom()}.
+   Esses métodos retornam as coordenadas das bordas direita e de baixo
+   do retângulo que representa a vista. Por exemplo: chamar {@link android.view.View#getRight()}
+   é semelhante ao seguinte cálculo: <code>getLeft() + getWidth()</code>.
+   </p>
+
+
+<h2 id="SizePaddingMargins">Tamanho, preenchimento e margens</h2>
+   <p>
+   O tamanho de uma vista é expresso por largura e altura. As vistas, na verdade,
+   têm dois pares de valores de largura e altura.
+   </p>
+
+   <p>
+   O primeiro par é conhecido como <em>largura medida</em>
+   e <em>altura medida</em>. Essas dimensões definem o tamanho que a vista terá
+   dentro da vista pai. 
+   Para obter as dimensões medidas, chamam-se {@link android.view.View#getMeasuredWidth()}
+   e {@link android.view.View#getMeasuredHeight()}.
+   </p>
+
+   <p>
+   O segundo par é simplesmente conhecido como <em>largura</em> e <em>altura</em> ou,
+   às vezes, <em>largura do desenho</em> e <em>altura do desenho</em>. Essas
+   dimensões definem o tamanho real da vista na tela, em tempo de desenho e
+   após o layout. Esses valores podem diferir da largura
+   e da altura medidas. Para obter os valores de largura e altura, chamam-se
+   {@link android.view.View#getWidth()} e {@link android.view.View#getHeight()}.
+   </p>
+
+   <p>
+   Para medir as dimensões, a vista leva em conta o preenchimento. O preenchimento
+   é expresso em pixels para a esquerda, a direita e as partes de cima e de baixo da vista.
+   O preenchimento pode ser usado para compensar o conteúdo da vista por um número específico
+   de pixels. Por exemplo: um preenchimento à esquerda de 2 empurrará o conteúdo da vista
+   em 2 pixels para a direita da borda esquerda. Para definir o preenchimento, usa-se
+   o método {@link android.view.View#setPadding(int, int, int, int)} e consulta-se com as chamadas
+   {@link android.view.View#getPaddingLeft()}, {@link android.view.View#getPaddingTop()},
+   {@link android.view.View#getPaddingRight()} e {@link android.view.View#getPaddingBottom()}.
+   </p>
+
+   <p>
+   Mesmo que cada vista possa definir um preenchimento, ela não fornece nenhuma compatibilidade
+   com margens. No entanto, os grupos de vistas oferecem essa compatibilidade. Consulte
+   {@link android.view.ViewGroup}
+   e {@link android.view.ViewGroup.MarginLayoutParams} para ver mais informações.
+   </p>
+
+   <p>Para obter mais informações sobre dimensões, consulte
+   <a href="{@docRoot}guide/topics/resources/more-resources.html#Dimension">Valores de dimensões</a>.
+   </p>
+
+
+
+
+
+
+<style type="text/css">
+div.layout {
+  float:left;
+  width:200px;
+  margin:0 0 20px 20px;
+}
+div.layout.first {
+  margin-left:0;
+  clear:left;
+}
+</style>
+
+
+
+
+<h2 id="CommonLayouts">Layouts comuns</h2>
+
+<p>Cada subclasse da classe {@link android.view.ViewGroup} fornece um modo exclusivo de exibir
+as vistas aninhadas dentro dela. Eis alguns dos tipos de layout mais comuns criados
+na plataforma Android.</p>
+
+<p class="note"><strong>Observação:</strong> Embora seja possível aninhar um ou mais layouts em outro
+layout para obter o projeto de IU, deve-se procurar manter a hierarquia do layout a menos profunda
+possível. O layout carrega mais rápido se tiver menos layouts aninhados (uma hierarquia de vistas grande é
+melhor do que uma hierarquia de vistas profunda).</p>
+
+<!--
+<h2 id="framelayout">FrameLayout</h2>
+<p>{@link android.widget.FrameLayout FrameLayout} is the simplest type of layout
+object. It's basically a blank space on your screen that you can
+later fill with a single object &mdash; for example, a picture that you'll swap in and out.
+All child elements of the FrameLayout are pinned to the top left corner of the screen; you cannot
+specify a different location for a child view. Subsequent child views will simply be drawn over
+previous ones,
+partially or totally obscuring them (unless the newer object is transparent).
+</p>
+-->
+
+
+<div class="layout first">
+  <h4><a href="layout/linear.html">Layout linear</a></h4>
+  <a href="layout/linear.html"><img src="{@docRoot}images/ui/linearlayout-small.png" alt="" /></a>
+  <p>Layout que organiza os filhos em uma única linha horizontal ou vertical. Ele
+  cria uma barra de rolagem se o comprimento da janela exceder o comprimento da tela.</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/relative.html">Layout relativo</a></h4>
+  <a href="layout/relative.html"><img src="{@docRoot}images/ui/relativelayout-small.png" alt="" /></a>
+  <p>Permite especificar a localização de objetos filhos relativos entre si (filho A
+à esquerda do filho B) ou relativos aos pais (alinhados no topo do pai).</p>
+</div>
+
+<div class="layout">
+  <h4><a href="{@docRoot}guide/webapps/webview.html">Vista web</a></h4>
+  <a href="{@docRoot}guide/webapps/webview.html"><img src="{@docRoot}images/ui/webview-small.png" alt="" /></a>
+  <p>Exibe páginas da web.</p>
+</div>
+
+
+
+
+<h2 id="AdapterViews" style="clear:left">Criação de layouts com um adaptador</h2>
+
+<p>Quando o conteúdo do layout é dinâmico ou não predeterminado, é possível usar um layout que
+torne {@link android.widget.AdapterView} uma subclasse para preencher o layout com vistas em tempo de execução. 
+Uma subclasse da classe {@link android.widget.AdapterView} usa um {@link android.widget.Adapter}
+para agrupar dados ao seu layout. O {@link android.widget.Adapter} se comporta como um intermediário entre a fonte
+dos dados e o layout do {@link android.widget.AdapterView} &mdash; o {@link android.widget.Adapter}
+recupera os dados (de uma fonte como uma matriz ou uma consulta de banco de dados) e converte cada entrada
+em uma vista que pode ser adicionada ao layout do {@link android.widget.AdapterView}.</p>
+
+<p>Alguns layouts comuns retornados por um adaptador:</p>
+
+<div class="layout first">
+  <h4><a href="layout/listview.html">Vista em lista</a></h4>
+  <a href="layout/listview.html"><img src="{@docRoot}images/ui/listview-small.png" alt="" /></a>
+  <p>Exibe uma lista de rolagem de coluna única.</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/gridview.html">Vista em grade</a></h4>
+  <a href="layout/gridview.html"><img src="{@docRoot}images/ui/gridview-small.png" alt="" /></a>
+  <p>Exibe uma grade de rolagem de colunas e linhas.</p>
+</div>
+
+
+
+<h3 id="FillingTheLayout" style="clear:left">Preenchimento da vista de adaptador com dados</h3>
+
+<p>É possível preencher um {@link android.widget.AdapterView} como {@link android.widget.ListView}
+ou {@link android.widget.GridView} agrupando-se a instância do {@link android.widget.AdapterView}
+a um {@link android.widget.Adapter}, o que recupera dados de uma fonte externa e cria uma {@link
+android.view.View} que representa cada entrada de dados.</p>
+
+<p>O Android oferece diversas subclasses de {@link android.widget.Adapter} que são úteis para
+recuperar diferentes tipos de dados e criar vistas de um {@link android.widget.AdapterView}. 
+Os dois adaptadores mais comuns são:</p>
+
+<dl>
+  <dt>{@link android.widget.ArrayAdapter}</dt>
+    <dd>Use esse adaptador quando a fonte de dados for uma matriz. Por padrão, {@link
+android.widget.ArrayAdapter} cria uma vista para cada item de matriz chamando {@link
+java.lang.Object#toString()} em cada item e posicionando o conteúdo em uma {@link
+android.widget.TextView}.
+      <p>Por exemplo: se você tiver uma matriz de strings que deseja exibir em uma {@link
+android.widget.ListView}, inicialize um novo {@link android.widget.ArrayAdapter} com
+um construtor para especificar o layout de cada string e a matriz de strings:</p>
+<pre>
+ArrayAdapter&lt;String> adapter = new ArrayAdapter&lt;String>(this,
+        android.R.layout.simple_list_item_1, myStringArray);
+</pre>
+<p>Os argumentos desse construtor são:</p>
+<ul>
+  <li>O {@link android.content.Context} do aplicativo</li>
+  <li>O layout que contém uma {@link android.widget.TextView} para cada string na matriz</li>
+  <li>A matriz de strings</li>
+</ul>
+<p>Em seguida, simplesmente chame
+{@link android.widget.ListView#setAdapter setAdapter()} na {@link android.widget.ListView}:</p>
+<pre>
+ListView listView = (ListView) findViewById(R.id.listview);
+listView.setAdapter(adapter);
+</pre>
+
+      <p>Para personalizar a aparência de cada item, é possível suspender o método {@link
+java.lang.Object#toString()} para os objetos na matriz. Ou, para criar uma vista para cada
+item diferente de uma {@link android.widget.TextView} (por exemplo, se você quiser
+uma {@link android.widget.ImageView} para cada item da matriz), estenda a classe {@link
+android.widget.ArrayAdapter} e suspenda {@link android.widget.ArrayAdapter#getView
+getView()} para retornar o tipo de vista que deseja para cada item.</p>
+
+</dd>
+
+  <dt>{@link android.widget.SimpleCursorAdapter}</dt>
+    <dd>Use este adaptador quando os dados vierem de um {@link android.database.Cursor}. 
+Ao usar {@link android.widget.SimpleCursorAdapter}, é necessário especificar um layout a usar para cada
+linha no {@link android.database.Cursor} e que colunas no {@link android.database.Cursor}
+devem ser inseridas em determinadas vistas do layout. Por exemplo: se você deseja criar uma lista
+de nome e número de telefone de pessoas, pode-se realizar uma consulta que retorna um {@link
+android.database.Cursor} que contém uma linha para cada pessoa e colunas para os nomes
+e números. Assim, cria-se uma matriz de strings especificando quais colunas do {@link
+android.database.Cursor} estarão no layout para cada resultado e uma matriz de números inteiros especificando
+as vistas correspondentes em que cada coluna deve ser colocada:</p>
+<pre>
+String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME,
+                        ContactsContract.CommonDataKinds.Phone.NUMBER};
+int[] toViews = {R.id.display_name, R.id.phone_number};
+</pre>
+<p>Ao instanciar o {@link android.widget.SimpleCursorAdapter}, passe o layout a usar
+para cada resultado, o {@link android.database.Cursor} contendo os resultados e estas duas matrizes:</p>
+<pre>
+SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
+        R.layout.person_name_and_number, cursor, fromColumns, toViews, 0);
+ListView listView = getListView();
+listView.setAdapter(adapter);
+</pre>
+<p>Em seguida, o {@link android.widget.SimpleCursorAdapter} cria uma vista de cada linha
+no{@link android.database.Cursor} usando o layout fornecido por meio da inserção de cada item de {@code
+fromColumns} na vista {@code toViews} correspondente.</p>.</dd>
+</dl>
+
+
+<p>Se durante o curso de vida do aplicativo, você mudar os dados subjacentes lidos 
+pelo adaptador, chame {@link android.widget.ArrayAdapter#notifyDataSetChanged()}. Isso
+notificará à vista anexada que os dados foram alterados e que ela deve se atualizar.</p>
+
+
+
+<h3 id="HandlingUserSelections">Tratamento de eventos de clique</h3>
+
+<p>Para responder a eventos de clique em cada item em um {@link android.widget.AdapterView},
+implementa-se a interface {@link android.widget.AdapterView.OnItemClickListener}. Por exemplo:</p>
+
+<pre>
+// Create a message handling object as an anonymous class.
+private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
+    public void onItemClick(AdapterView parent, View v, int position, long id) {
+        // Do something in response to the click
+    }
+};
+
+listView.setOnItemClickListener(mMessageClickedHandler);
+</pre>
+
+
+
diff --git a/docs/html-intl/intl/pt-br/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/pt-br/guide/topics/ui/dialogs.jd
new file mode 100644
index 0000000..2cbedbe
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/dialogs.jd
@@ -0,0 +1,798 @@
+page.title=Caixas de diálogo
+page.tags=diálogodealerta,fragmentodediálogo
+
+@jd:body
+
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>Neste documento</h2>
+<ol>
+  <li><a href="#DialogFragment">Criação de um fragmento de caixa de diálogo</a></li>
+  <li><a href="#AlertDialog">Construção de uma caixa de diálogo de alerta</a>
+    <ol>
+      <li><a href="#AddingButtons">Adição de botões</a></li>
+      <li><a href="#AddingAList">Adição de listas</a></li>
+      <li><a href="#CustomLayout">Criação de layout personalizado</a></li>
+    </ol>
+  </li>
+  <li><a href="#PassingEvents">Direcionamento de eventos de volta ao host da caixa de diálogo</a></li>
+  <li><a href="#ShowingADialog">Exibição de uma caixa de diálogo</a></li>
+  <li><a href="#FullscreenDialog">Exibição de uma caixa de diálogo em tela cheia ou como um fragmento incorporado</a>
+    <ol>
+      <li><a href="#ActivityAsDialog">Exibição de uma atividade como uma caixa de diálogo em telas grandes</a></li>
+    </ol>
+  </li>
+  <li><a href="#DismissingADialog">Dispensa de uma caixa de diálogo</a></li>
+</ol>
+
+    <h2>Classes principais</h2>
+    <ol>
+      <li>{@link android.app.DialogFragment}</li>
+      <li>{@link android.app.AlertDialog}</li>
+    </ol>
+    
+    <h2>Veja também</h2>
+    <ol>
+      <li><a href="{@docRoot}design/building-blocks/dialogs.html">Guia de projeto de caixas de diálogo</a></li>
+      <li><a href="{@docRoot}guide/topics/ui/controls/pickers.html">Seletores</a> (caixas de diálogo de data e hora)</li>
+    </ol>
+  </div>
+</div>
+
+<p>As caixas de diálogo são pequenas janelas que levam o usuário
+a tomar uma decisão ou inserir informações adicionais. Elas não ocupam toda a tela e são
+normalmente susada para eventos modais que exijam que usuários realizem uma ação antes de continuar.</p>
+
+<div class="note design">
+<p><strong>Projeto de caixas de diálogo</strong></p>
+  <p>Para obter mais informações sobre como projetar caixas de diálogo, inclusive sobre recomendações
+  de idioma, leia o guia de projeto <a href="{@docRoot}design/building-blocks/dialogs.html">Caixas de diálogo</a>.</p>
+</div>
+
+<img src="{@docRoot}images/ui/dialogs.png" />
+
+<p>A classe {@link android.app.Dialog} é a classe de base para caixas de diálogo, mas
+deve-se evitar instanciar {@link android.app.Dialog} diretamente.
+Em vez disso, use uma das subclasses a seguir:</p>
+<dl>
+  <dt>{@link android.app.AlertDialog}</dt>
+  <dd>Caixa de diálogo que pode exibir um título, até três botões, uma lista
+    de itens selecionáveis ou um layout personalizado.</dd>
+  <dt>{@link android.app.DatePickerDialog} ou {@link android.app.TimePickerDialog}</dt>
+  <dd>Caixa de diálogo com uma IU predefinida que permite ao usuário selecionar uma data ou hora.</dd>
+</dl>
+
+<div class="sidebox">
+<h2>Evite ProgressDialog</h2>
+<p>O Android tem outra classe de caixa de diálogo chamada
+{@link android.app.ProgressDialog}, que exibe uma caixa de diálogo com uma barra de andamento. Entretanto, se for
+necessário indicar carregamento ou andamento indeterminado, deve-se seguir as orientações
+de projeto de <a href="{@docRoot}design/building-blocks/progress.html">Progresso e
+atividade</a> e usar uma {@link android.widget.ProgressBar} no layout.</p>
+</div>
+
+<p>Essas classes definem o estilo e a estrutura da caixa de diálogo, mas deve-se
+usar um {@link android.support.v4.app.DialogFragment} como um contêiner para a caixa de diálogo.
+A classe {@link android.support.v4.app.DialogFragment} fornece todos os controles
+necessários para criar uma caixa de diálogo e gerenciar sua aparência em vez de chamar métodos
+no objeto {@link android.app.Dialog}.</p>
+
+<p>O uso de {@link android.support.v4.app.DialogFragment} para gerenciar a caixa de diálogo
+garante que ela trate corretamente os eventos de ciclos de vida,
+como quando o usuário pressiona o botão <em>Voltar</em> ou gira a tela. A classe {@link
+android.support.v4.app.DialogFragment} também permite a reutilização da IU da caixa de diálogo como
+um componente incorporável em uma IU maior, assim como um {@link
+android.support.v4.app.Fragment} tradicional (como nas vezes em que se deseja que a IU da caixa de diálogo apareça de modos diferentes
+em telas grandes e pequenas).</p>
+
+<p>As seções a seguir neste guia descrevem como usar um {@link
+android.support.v4.app.DialogFragment} combinado com um objeto
+{@link android.app.AlertDialog}. Se você quiser criar um seletor de data ou hora, leia o guia
+<a href="{@docRoot}guide/topics/ui/controls/pickers.html">Seletores</a>.</p>
+
+<p class="note"><strong>Observação:</strong>
+como a classe {@link android.app.DialogFragment} foi adicionada originalmente com
+o Android 3.0 (API de nível 11), este documento descreve como usar a classe {@link
+android.support.v4.app.DialogFragment} fornecida com a <a href="{@docRoot}tools/support-library/index.html">Biblioteca de Suporte</a>. Ao adicionar essa biblioteca
+ao aplicativo, pode-se usar {@link android.support.v4.app.DialogFragment} e uma variedade de outras
+APIs em dispositivos que executam o Android 1.6 ou versão posterior. Se a versão mais antiga com a qual seu aplicativo é compatível
+for a API de nível 11 ou posterior, é possível usar a versão de estrutura de {@link
+android.app.DialogFragment}, mas esteja ciente de que os links neste documento são para APIs
+de biblioteca de suporte. Ao usar a biblioteca de suporte,
+certifique-se de importar a classe <code>android.support.v4.app.DialogFragment</code>
+e <em>não</em> a <code>android.app.DialogFragment</code>.</p>
+
+
+<h2 id="DialogFragment">Criação de um fragmento de caixa de diálogo</h2>
+
+<p>É possível realizar uma grande variedade de projetos de caixas de diálogo &mdash; inclusive
+layouts personalizados e outros descritos no guia de projeto <a href="{@docRoot}design/building-blocks/dialogs.html">Caixas de diálogo</a>
+ &mdash;, estendendo
+{@link android.support.v4.app.DialogFragment} e criando uma{@link android.app.AlertDialog}
+no método de retorno de chamada {@link android.support.v4.app.DialogFragment#onCreateDialog
+onCreateDialog()}.</p>
+
+<p>Por exemplo, a seguir há um {@link android.app.AlertDialog} básico gerenciado dentro
+de um {@link android.support.v4.app.DialogFragment}:</p>
+
+<pre>
+public class FireMissilesDialogFragment extends DialogFragment {
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Use the Builder class for convenient dialog construction
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // FIRE ZE MISSILES!
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // User cancelled the dialog
+                   }
+               });
+        // Create the AlertDialog object and return it
+        return builder.create();
+    }
+}
+</pre>
+
+<div class="figure" style="width:290px;margin:0 0 0 20px">
+<img src="{@docRoot}images/ui/dialog_buttons.png" alt="" />
+<p class="img-caption"><strong>Figura 1.</strong>
+Caixa de diálogo com uma mensagem e dois botões de ação.</p>
+</div>
+
+<p>Ao criar uma instância dessa classe e chamar {@link
+android.support.v4.app.DialogFragment#show show()} nesse objeto, a caixa de diálogo será exibida como
+ilustrado na figura 1.</p>
+
+<p>A próxima seção descreve em mais detalhes o uso das APIs{@link android.app.AlertDialog.Builder}
+para a criação de uma caixa de diálogo.</p>
+
+<p>Conforme o nível de complexidade da caixa de diálogo, é possível implementar diversos outros métodos
+de retorno de chamada no {@link android.support.v4.app.DialogFragment}, inclusive todos os
+<a href="{@docRoot}guide/components/fragments.html#Lifecycle">métodos de ciclo de vida de fragmentos</a> básicos.
+
+
+
+
+
+<h2 id="AlertDialog">Construção de uma caixa de diálogo de alerta</h2>
+
+
+<p>A classe {@link android.app.AlertDialog} permite a criação de diversos projetos de caixa de diálogo
+e normalmente é a única classe de caixa de diálogo necessária.
+Como ilustrado na figura 2, há três regiões de uma caixa de diálogo de alerta:</p>
+
+<div class="figure" style="width:311px;margin-top:0">
+<img src="{@docRoot}images/ui/dialogs_regions.png" alt="" style="margin-bottom:0" />
+<p class="img-caption"><strong>Figura 2.</strong> Layout de uma caixa de diálogo.</p>
+</div>
+
+<ol>
+<li><b>Título</b>
+  <p>É opcional e deve ser usado somente quando a área do conteúdo
+  estiver ocupada por uma mensagem detalhada, uma lista ou layout personalizado. Se for necessário declarar
+  uma mensagem ou pergunta simples (como a caixa de diálogo na figura 1), o título não é necessário.</li>
+<li><b>Área do conteúdo</b>
+  <p>Pode exibir uma mensagem, uma lista ou outro layout personalizado.</p></li>
+<li><b>Botões de ação</b>
+  <p>Não deve haver mais de três botões em uma caixa de diálogo.</p></li>
+</ol>
+
+<p>A classe {@link android.app.AlertDialog.Builder}
+ fornece APIs que permitem a criação de uma {@link android.app.AlertDialog}
+ com esses tipos de conteúdo, inclusive um layout personalizado.</p>
+
+<p>Para criar uma {@link android.app.AlertDialog}:</p>
+
+<pre>
+<b>// 1. Instantiate an {@link android.app.AlertDialog.Builder} with its constructor</b>
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+
+<b>// 2. Chain together various setter methods to set the dialog characteristics</b>
+builder.setMessage(R.string.dialog_message)
+       .setTitle(R.string.dialog_title);
+
+<b>// 3. Get the {@link android.app.AlertDialog} from {@link android.app.AlertDialog.Builder#create()}</b>
+AlertDialog dialog = builder.create();
+</pre>
+
+<p>Os tópicos a seguir mostram como definir diversos atributos de caixas de diálogo
+com a classe {@link android.app.AlertDialog.Builder}.</p>
+
+
+
+
+<h3 id="AddingButtons">Adição de botões</h3>
+
+<p>Para adicionar botões de ação como os da figura 2,
+chame os métodos {@link android.app.AlertDialog.Builder#setPositiveButton setPositiveButton()} e
+{@link android.app.AlertDialog.Builder#setNegativeButton setNegativeButton()}:</p>
+
+<pre style="clear:right">
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+// Add the buttons
+builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User clicked OK button
+           }
+       });
+builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User cancelled the dialog
+           }
+       });
+// Set other dialog properties
+...
+
+// Create the AlertDialog
+AlertDialog dialog = builder.create();
+</pre>
+
+<p>Os métodos <code>set...Button()</code> exigem um título para o botão (fornecido
+por um <a href="{@docRoot}guide/topics/resources/string-resource.html">recurso de string</a>) e um 
+{@link android.content.DialogInterface.OnClickListener} que defina a ação a realizar 
+quando o usuário pressionar o botão.</p>
+
+<p>Há três botões de ação diferente que podem ser adicionados:</p>
+<dl>
+  <dt>Positivo</dt>
+  <dd>É o que se deve usar para aceitar e continuar a ação (a ação "OK").</dd>
+  <dt>Negativo</dt>
+  <dd>É o que se deve usar para cancelar a ação.</dd>
+  <dt>Neutro</dt>
+  <dd>É o que se deve usar quando houver a opção de o usuário não querer continuar a ação,
+  mas não necessariamente cancelá-la. Ele aparece entre os botões positivo
+  e negativo. Por exemplo: a ação pode ser "Notifique-me mais tarde".</dd> 
+</dl>
+
+<p>É possível adicionar somente um de cada tipo de botão a uma {@link
+android.app.AlertDialog}, ou seja, não é possível ter mais de um botão "positivo".</p>
+
+
+
+<div class="figure" style="width:290px;margin:0 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_list.png" alt="" />
+<p class="img-caption"><strong>Figura 3.</strong>
+Caixa de diálogo com um título e uma lista.</p>
+</div>
+
+<h3 id="AddingAList">Adição de listas</h3>
+
+<p>Há três tipos de listas disponíveis nas APIs {@link android.app.AlertDialog}:</p>
+<ul>
+<li>Lista de escolha única tradicional</li>
+<li>Lista de escolha única persistente (botões de opção)</li>
+<li>Lista de escolhas múltiplas persistentes (caixas de seleção)</li>
+</ul>
+
+<p>Para criar uma lista de escolha única como a da figura 3, 
+use o método {@link android.app.AlertDialog.Builder#setItems setItems()}:</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    builder.setTitle(R.string.pick_color)
+           .setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int which) {
+               // The 'which' argument contains the index position
+               // of the selected item
+           }
+    });
+    return builder.create();
+}
+</pre>
+
+<p>Como a lista aparece na área do conteúdo da caixa de diálogo,
+a caixa não pode exibir uma mensagem e uma lista, e será preciso definir um título
+para ela com {@link android.app.AlertDialog.Builder#setTitle setTitle()}. 
+Para especificar os itens da lista, chame {@link
+android.app.AlertDialog.Builder#setItems setItems()} passando uma matriz.
+Alternativamente, é possível especificar uma lista com {@link
+android.app.AlertDialog.Builder#setAdapter setAdapter()}. Isso permite retroceder a lista
+com dados dinâmicos (como os de um banco de dados) com um {@link android.widget.ListAdapter}.</p>
+
+<p>Se você optar por retroceder a lista com um {@link android.widget.ListAdapter},
+sempre use um {@link android.support.v4.content.Loader} para que o conteúdo carregue
+assincronamente. Veja mais detalhes sobre isso nos guias
+<a href="{@docRoot}guide/topics/ui/declaring-layout.html#AdapterViews">Criação de layouts
+com um adaptador</a> e
+<a href="{@docRoot}guide/components/loaders.html">Carregadores</a>.</p>
+
+<p class="note"><strong>Observação:</strong> por padrão, o toque em um item de lista dispensa a caixa de diálogo
+a menos que você esteja usando uma das listas de escolha persistentes a seguir.</p>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_checkboxes.png" />
+<p class="img-caption"><strong>Figura 4.</strong>
+Lista de itens de múltipla escolha.</p>
+</div>
+
+
+<h4 id="Checkboxes">Adição de uma lista de escolha única ou de múltipla escolha persistente</h4>
+
+<p>Para adicionar uma lista de itens de múltipla escolha (caixas de seleção)
+ou itens de escolha única (botões de rádio), use os métodos
+{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} ou 
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()} respectivamente.</p>
+
+<p>Por exemplo, a seguir apresenta-se como criar uma lista de múltipla escolha como
+a ilustrada na figura 4, que salva os itens
+selecionados em uma {@link java.util.ArrayList}:</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    mSelectedItems = new ArrayList();  // Where we track the selected items
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Set the dialog title
+    builder.setTitle(R.string.pick_toppings)
+    // Specify the list array, the items to be selected by default (null for none),
+    // and the listener through which to receive callbacks when items are selected
+           .setMultiChoiceItems(R.array.toppings, null,
+                      new DialogInterface.OnMultiChoiceClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int which,
+                       boolean isChecked) {
+                   if (isChecked) {
+                       // If the user checked the item, add it to the selected items
+                       mSelectedItems.add(which);
+                   } else if (mSelectedItems.contains(which)) {
+                       // Else, if the item is already in the array, remove it 
+                       mSelectedItems.remove(Integer.valueOf(which));
+                   }
+               }
+           })
+    // Set the action buttons
+           .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // User clicked OK, so save the mSelectedItems results somewhere
+                   // or return them to the component that opened the dialog
+                   ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   ...
+               }
+           });
+
+    return builder.create();
+}
+</pre>
+
+<p>Embora a lista tradicional e uma lista com botões de opção
+forneçam uma ação de "escolha única", deve-se usar {@link
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()} se você desejar manter a escolha do usuário.
+Ou seja, se a caixa de diálogo abrir novamente mais tarde, deve indicar qual é a escolha atual do usuário,
+portanto deve-se criar uma lista com botões de opção.</p>
+
+
+
+
+
+<h3 id="CustomLayout">Criação de layout personalizado</h3>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_custom.png" alt="" />
+<p class="img-caption"><strong>Figura 5.</strong> Layout personalizado da caixa de diálogo.</p>
+</div>
+
+<p>Se você deseja um layout personalizado em uma caixa de diálogo, crie um layout e adicione-o a uma
+{@link android.app.AlertDialog} chamando {@link
+android.app.AlertDialog.Builder#setView setView()} no objeto {@link
+android.app.AlertDialog.Builder}.</p>
+
+<p>Por padrão, o layout personalizado preenche a janela da caixa de diálogo, mas ainda é possível
+usar métodos {@link android.app.AlertDialog.Builder} para adicionar botões e um título.</p>
+
+<p>Por exemplo, a seguir há o arquivo de layout para a caixa de diálogo na figura 5:</p>
+
+<p style="clear:right" class="code-caption">res/layout/dialog_signin.xml</p>
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+    &lt;ImageView
+        android:src="@drawable/header_logo"
+        android:layout_width="match_parent"
+        android:layout_height="64dp"
+        android:scaleType="center"
+        android:background="#FFFFBB33"
+        android:contentDescription="@string/app_name" />
+    &lt;EditText
+        android:id="@+id/username"
+        android:inputType="textEmailAddress"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="16dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="4dp"
+        android:hint="@string/username" />
+    &lt;EditText
+        android:id="@+id/password"
+        android:inputType="textPassword"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="4dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="16dp"
+        android:fontFamily="sans-serif"
+        android:hint="@string/password"/>
+&lt;/LinearLayout>
+</pre>
+
+<p class="note"><strong>Dica:</strong> por padrão, ao definir um elemento
+{@link android.widget.EditText} para usar o tipo de entrada {@code "textPassword"}, a família da fonte é definida como de espaço único, portanto
+deve-se alterar a família da fonte para {@code "sans-serif"} para que os campos de texto usem
+um estilo de fonte compatível.</p>
+
+<p>Para inflar o layout no {@link android.support.v4.app.DialogFragment},
+obtenha um {@link android.view.LayoutInflater} com 
+{@link android.app.Activity#getLayoutInflater()} e chame
+{@link android.view.LayoutInflater#inflate inflate()}, em que o primeiro parâmetro
+é o ID de recurso do layout e o segundo é uma vista pai do layout.
+Em seguida, pode-se chamar {@link android.app.AlertDialog#setView setView()}
+para posicionar o layout na caixa de diálogo.</p>
+
+<pre>
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Get the layout inflater
+    LayoutInflater inflater = getActivity().getLayoutInflater();
+
+    // Inflate and set the layout for the dialog
+    // Pass null as the parent view because its going in the dialog layout
+    builder.setView(inflater.inflate(R.layout.dialog_signin, null))
+    // Add action buttons
+           .setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // sign in the user ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int id) {
+                   LoginDialogFragment.this.getDialog().cancel();
+               }
+           });      
+    return builder.create();
+}
+</pre>
+
+<div class="note">
+<p><strong>Dica:</strong> se você deseja uma caixa de diálogo personalizada,
+pode exibir uma {@link android.app.Activity} como uma caixa de diálogo
+em vez de usar as APIs {@link android.app.Dialog}. Basta criar uma atividade e definir seu tema como
+{@link android.R.style#Theme_Holo_Dialog Theme.Holo.Dialog}
+no elemento <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> do manifesto:</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.Dialog" >
+</pre>
+<p>Pronto. Agora a atividade é exibida em uma janela da caixa de diálogo em vez de tela cheia.</p>
+</div>
+
+
+
+<h2 id="PassingEvents">Direcionamento de eventos de volta ao host da caixa de diálogo</h2>
+
+<p>Quando o usuário toca em um dos botões de ação da caixa de diálogo ou seleciona um item de sua lista,
+o {@link android.support.v4.app.DialogFragment} pode realizar a ação
+necessária sozinho, mas normalmente será necessário fornecer o evento à atividade ou ao fragmento
+que abriu a caixa de diálogo. Para isso, defina uma interface com um método para cada tipo de evento de clique.
+Em seguida, implemente essa interface no componente do host
+que receberá os eventos de ação da caixa de diálogo.</p>
+
+<p>Por exemplo, a seguir há um {@link android.support.v4.app.DialogFragment} que define
+uma interface por meio da qual entrega os eventos de volta à atividade do host:</p>
+
+<pre>
+public class NoticeDialogFragment extends DialogFragment {
+    
+    /* The activity that creates an instance of this dialog fragment must
+     * implement this interface in order to receive event callbacks.
+     * Each method passes the DialogFragment in case the host needs to query it. */
+    public interface NoticeDialogListener {
+        public void onDialogPositiveClick(DialogFragment dialog);
+        public void onDialogNegativeClick(DialogFragment dialog);
+    }
+    
+    // Use this instance of the interface to deliver action events
+    NoticeDialogListener mListener;
+    
+    // Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
+    &#64;Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        // Verify that the host activity implements the callback interface
+        try {
+            // Instantiate the NoticeDialogListener so we can send events to the host
+            mListener = (NoticeDialogListener) activity;
+        } catch (ClassCastException e) {
+            // The activity doesn't implement the interface, throw exception
+            throw new ClassCastException(activity.toString()
+                    + " must implement NoticeDialogListener");
+        }
+    }
+    ...
+}
+</pre>
+
+<p>A atividade que hospeda a caixa de diálogo cria uma instância da caixa
+com o construtor do fragmento da caixa de diálogo e recebe os eventos
+dela por meio de uma implementação da interface {@code NoticeDialogListener}:</p>
+
+<pre>
+public class MainActivity extends FragmentActivity
+                          implements NoticeDialogFragment.NoticeDialogListener{
+    ...
+    
+    public void showNoticeDialog() {
+        // Create an instance of the dialog fragment and show it
+        DialogFragment dialog = new NoticeDialogFragment();
+        dialog.show(getSupportFragmentManager(), "NoticeDialogFragment");
+    }
+
+    // The dialog fragment receives a reference to this Activity through the
+    // Fragment.onAttach() callback, which it uses to call the following methods
+    // defined by the NoticeDialogFragment.NoticeDialogListener interface
+    &#64;Override
+    public void onDialogPositiveClick(DialogFragment dialog) {
+        // User touched the dialog's positive button
+        ...
+    }
+
+    &#64;Override
+    public void onDialogNegativeClick(DialogFragment dialog) {
+        // User touched the dialog's negative button
+        ...
+    }
+}
+</pre>
+
+<p>Como a atividade do host implementa o {@code NoticeDialogListener} &mdash; que é
+forçado pelo método de retorno de chamada {@link android.support.v4.app.Fragment#onAttach onAttach()}
+exibido acima &mdash;, o fragmento da caixa de diálogo pode usar
+os métodos de retorno de chamada da interface para entregar eventos de clique à atividade:</p>
+
+<pre>
+public class NoticeDialogFragment extends DialogFragment {
+    ...
+
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Build the dialog and set up the button click handlers
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the positive button event back to the host activity
+                       mListener.onDialogPositiveClick(NoticeDialogFragment.this);
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the negative button event back to the host activity
+                       mListener.onDialogNegativeClick(NoticeDialogFragment.this);
+                   }
+               });
+        return builder.create();
+    }
+}
+</pre>
+
+
+
+<h2 id="ShowingADialog">Exibição de uma caixa de diálogo</h2>
+
+<p>Para exibir a caixa de diálogo, crie uma instância do {@link
+android.support.v4.app.DialogFragment} e chame {@link android.support.v4.app.DialogFragment#show
+show()} passando o {@link android.support.v4.app.FragmentManager} e um nome de tag
+para o fragmento da caixa de diálogo.</p>
+
+<p>Para obter o {@link android.support.v4.app.FragmentManager}, chama-se
+{@link android.support.v4.app.FragmentActivity#getSupportFragmentManager()}
+da {@link android.support.v4.app.FragmentActivity} ou {@link
+android.support.v4.app.Fragment#getFragmentManager()} de um {@link
+android.support.v4.app.Fragment}. Por exemplo:</p>
+
+<pre>
+public void confirmFireMissiles() {
+    DialogFragment newFragment = new FireMissilesDialogFragment();
+    newFragment.show(getSupportFragmentManager(), "missiles");
+}
+</pre>
+
+<p>O segundo argumento, {@code "missiles"}, é um nome de tag exclusivo que o sistema usa para salvar
+e restaurar o estado do fragmento quando necessário. Para que a tag obtenha um identificador
+do fragmento, chama-se {@link android.support.v4.app.FragmentManager#findFragmentByTag
+findFragmentByTag()}.</p>
+
+
+
+
+<h2 id="FullscreenDialog">Exibição de uma caixa de diálogo em tela cheia ou como um fragmento incorporado</h2>
+
+<p>Pode-se ter um projeto de IU em que uma parte da IU apareça como uma caixa de diálogo em determinadas
+situações, mas como tela cheia ou fragmento incorporado em outras (dependendo, talvez,
+do tamanho da tela do dispositivo). A classe {@link android.support.v4.app.DialogFragment}
+oferece esta flexibilidade porque ainda pode comportar-se como um {@link
+android.support.v4.app.Fragment} incorporável.</p>
+
+<p>Contudo, não é possível usar {@link android.app.AlertDialog.Builder AlertDialog.Builder}
+nem outros objetos {@link android.app.Dialog} para criar a caixa de diálogo nesse caso. Se
+você deseja que {@link android.support.v4.app.DialogFragment} seja
+incorporável, defina a IU da caixa de diálogo em um layout e carregue ou layout no retorno de chamada
+{@link android.support.v4.app.DialogFragment#onCreateView
+onCreateView()}.</p>
+
+<p>A seguir há um exemplo de {@link android.support.v4.app.DialogFragment} que pode aparecer tanto como
+caixa de diálogo quanto como fragmento incorporável (usando um layout chamado <code>purchase_items.xml</code>):</p>
+
+<pre>
+public class CustomDialogFragment extends DialogFragment {
+    /** The system calls this to get the DialogFragment's layout, regardless
+        of whether it's being displayed as a dialog or an embedded fragment. */
+    &#64;Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        // Inflate the layout to use as dialog or embedded fragment
+        return inflater.inflate(R.layout.purchase_items, container, false);
+    }
+  
+    /** The system calls this only when creating the layout in a dialog. */
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // The only reason you might override this method when using onCreateView() is
+        // to modify any dialog characteristics. For example, the dialog includes a
+        // title by default, but your custom layout might not need it. So here you can
+        // remove the dialog title, but you must call the superclass to get the Dialog.
+        Dialog dialog = super.onCreateDialog(savedInstanceState);
+        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+        return dialog;
+    }
+}
+</pre>
+
+<p>A seguir, veja alguns códigos que decidem por exibir o fragmento como uma caixa de diálogo
+ou como uma IU de tela cheia com base no tamanho da tela:</p>
+
+<pre>
+public void showDialog() {
+    FragmentManager fragmentManager = getSupportFragmentManager();
+    CustomDialogFragment newFragment = new CustomDialogFragment();
+    
+    if (mIsLargeLayout) {
+        // The device is using a large layout, so show the fragment as a dialog
+        newFragment.show(fragmentManager, "dialog");
+    } else {
+        // The device is smaller, so show the fragment fullscreen
+        FragmentTransaction transaction = fragmentManager.beginTransaction();
+        // For a little polish, specify a transition animation
+        transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
+        // To make it fullscreen, use the 'content' root view as the container
+        // for the fragment, which is always the root view for the activity
+        transaction.add(android.R.id.content, newFragment)
+                   .addToBackStack(null).commit();
+    }
+}
+</pre>
+
+<p>Para obter mais informações sobre a realização de operações de fragmentos, consulte o guia 
+<a href="{@docRoot}guide/components/fragments.html">Fragmentos</a>.</p>
+
+<p>Nesse exemplo, o booleano <code>mIsLargeLayout</code> especifica se o dispositivo atual
+deve usar o projeto de layout grande do aplicativo (e, portanto, exibir esse fragmento como uma caixa de diálogo em
+vez de tela cheia). O melhor modo de definir esse tipo de booleano é declarar
+um <a href="{@docRoot}guide/topics/resources/more-resources.html#Bool">valor de recurso bool</a>
+com um valor de <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">recurso alternativo</a> para diferentes tamanhos de tela. Por exemplo, a seguir há duas
+versões de recurso bool para diferentes tamanhos de tela:</p>
+
+<p class="code-caption">res/values/bools.xml</p>
+<pre>
+&lt;!-- Default boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">false&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p class="code-caption">res/values-large/bools.xml</p>
+<pre>
+&lt;!-- Large screen boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">true&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p>Assim, é possível inicializar o valor {@code mIsLargeLayout} durante o método 
+{@link android.app.Activity#onCreate onCreate()} da atividade:</p>
+
+<pre>
+boolean mIsLargeLayout;
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_main);
+
+    mIsLargeLayout = getResources().getBoolean(R.bool.large_layout);
+}
+</pre>
+
+
+
+<h3 id="ActivityAsDialog">Exibição de uma atividade como uma caixa de diálogo em telas grandes</h3>
+
+<p>Em vez de exibir uma caixa de diálogo como uma IU de tela cheia em telas pequenas, é possível obter
+o mesmo resultado exibindo uma {@link android.app.Activity} como uma caixa de diálogo
+em telas grandes. A abordagem escolhida depende do projeto do aplicativo,
+mas a exibição de uma atividade como caixa de diálogo normalmente é útil quando o aplicativo já está projetado
+para telas pequenas e é preciso melhorar a experiência em tablets exibindo uma atividade de vida curta
+como uma caixa de diálogo.</p>
+
+<p>Para exibir uma atividade como uma caixa de diálogo somente em telas grandes,
+aplique o tema {@link android.R.style#Theme_Holo_DialogWhenLarge Theme.Holo.DialogWhenLarge}
+no elemento <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> do manifesto:</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.DialogWhenLarge" >
+</pre>
+
+<p>Para obter mais informações sobre estilizar as atividades com temas, consulte o guia <a href="{@docRoot}guide/topics/ui/themes.html">Estilos e temas</a>.</p>
+
+
+
+<h2 id="DismissingADialog">Dispensa de uma caixa de diálogo</h2>
+
+<p>Quando o usuário toca em qualquer botão de ação criado
+com um {@link android.app.AlertDialog.Builder}, o sistema dispensa a caixa de diálogo.</p>
+
+<p>O sistema também dispensa a caixa de diálogo quando o usuário toca em um item em uma lista da caixa de diálogo, exceto
+quanto a lista usa botões de opção ou caixas de seleção. Caso contrário, é possível dispensá-la manualmente
+chamando {@link android.support.v4.app.DialogFragment#dismiss()} no {@link
+android.support.v4.app.DialogFragment}.</p>
+
+<p>Se for necessário realizar determinadas
+ações quando a caixa de diálogo é dispensada, é possível implementar o método {@link
+android.support.v4.app.DialogFragment#onDismiss onDismiss()} no {@link
+android.support.v4.app.DialogFragment}.</p>
+
+<p>Também é possível <em>cancelar</em> uma caixa de diálogo. Trata-se de um evento especial que indica que o usuário
+se retirou explicitamente da caixa de diálogo sem concluir a tarefa. Isso ocorre se o usuário pressionar o botão 
+<em>Voltar</em>, tocar na tela fora da área da caixa de diálogo
+ou se você chamar {@link android.app.Dialog#cancel()} explicitamente no {@link
+android.app.Dialog} (como em resposta a um botão "Cancelar" na caixa de diálogo).</p>
+
+<p>Como mostrado no exemplo acima, é possível responder ao evento de cancelamento implementando
+{@link android.support.v4.app.DialogFragment#onCancel onCancel()} na classe {@link
+android.support.v4.app.DialogFragment}.</p>
+
+<p class="note"><strong>Observação:</strong> o sistema chama
+{@link android.support.v4.app.DialogFragment#onDismiss onDismiss()} para cada evento que
+chama o retorno de chamada {@link android.support.v4.app.DialogFragment#onCancel onCancel()}. Entretanto,
+se você chamar {@link android.app.Dialog#dismiss Dialog.dismiss()} ou  {@link
+android.support.v4.app.DialogFragment#dismiss DialogFragment.dismiss()},
+ o sistema chamará {@link android.support.v4.app.DialogFragment#onDismiss onDismiss()}, <em>mas
+não</em> {@link android.support.v4.app.DialogFragment#onCancel onCancel()}. Portanto, geralmente, deve-se
+chamar {@link android.support.v4.app.DialogFragment#dismiss dismiss()} quando o usuário pressiona
+o botão <em>positivo</em> na caixa de diálogo para removê-la da vista.</p>
+
+
diff --git a/docs/html-intl/intl/pt-br/guide/topics/ui/menus.jd b/docs/html-intl/intl/pt-br/guide/topics/ui/menus.jd
new file mode 100644
index 0000000..833f896
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/menus.jd
@@ -0,0 +1,1031 @@
+page.title=Menus
+parent.title=Interface do usuário
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Neste documento</h2>
+<ol>
+  <li><a href="#xml">Definição de um menu em XML</a></li>
+  <li><a href="#options-menu">Criação de um menu de opções</a>
+    <ol>
+      <li><a href="#RespondingOptionsMenu">Tratamento de eventos de clique</a></li>
+      <li><a href="#ChangingTheMenu">Alteração de itens de menu em tempo de execução</a></li>
+    </ol>
+  </li>
+  <li><a href="#context-menu">Criação de menus contextuais</a>
+    <ol>
+      <li><a href="#FloatingContextMenu">Criação de um menu de contexto flutuante</a></li>
+      <li><a href="#CAB">Uso do modo de ação contextual</a></li>
+    </ol>
+  </li>
+  <li><a href="#PopupMenu">Criação de um menu pop-up</a>
+    <ol>
+      <li><a href="#PopupEvents">Tratamento de eventos de clique</a></li>
+    </ol>
+  </li>
+  <li><a href="#groups">Criação de grupos de menu</a>
+    <ol>
+      <li><a href="#checkable">Uso de itens de menu marcáveis</a></li>
+    </ol>
+  </li>
+  <li><a href="#intents">Adição de itens de menu com base em uma intenção</a>
+    <ol>
+      <li><a href="#AllowingToAdd">Permissão para a atividade ser adicionada a outros menus</a></li>
+    </ol>
+  </li>
+</ol>
+
+  <h2>Classes principais</h2>
+  <ol>
+    <li>{@link android.view.Menu}</li>
+    <li>{@link android.view.MenuItem}</li>
+    <li>{@link android.view.ContextMenu}</li>
+    <li>{@link android.view.ActionMode}</li>
+  </ol>
+
+  <h2>Veja também</h2>
+  <ol>
+    <li><a href="{@docRoot}guide/topics/ui/actionbar.html">Barra de ação</a></li>
+    <li><a href="{@docRoot}guide/topics/resources/menu-resource.html">Recurso de menu</a></li>
+    <li><a href="http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html">Diga
+adeus ao botão de menu</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Menus são componentes comuns da interface do usuário em diversos tipos de aplicativos. Para fornecer uma experiência
+familiar e consistente ao usuário, você deve usar APIs de {@link android.view.Menu} para apresentar
+ações de usuário e outras opções em suas atividades.</p>
+
+<p>Começando com Android 3.0 (API de nível 11), dispositivos Android não são mais necessários
+para fornecer um botão de <em>Menu</em> dedicado. Com esta alteração, os aplicativos do Android devem migrar de uma dependência
+no painel de menu 6 itens tradicional para fornecer uma barra de ação para apresentar as ações comuns
+de usuário.</p>
+
+<p>Apesar de o design e a experiência do usuário para alguns dos itens do menu terem passado por mudanças, a semântica para definir
+um conjunto de ações e opções ainda baseia-se em APIs de {@link android.view.Menu} . Este guia
+mostra como criar os três tipos fundamentais de menus ou apresentações de ação
+em todas as versões do Android:</p>
+
+<dl>
+  <dt><strong>Menu de opções e barra de ação</strong></dt>
+    <dd>O <a href="#options-menu">menu de opções</a> é a coleção principal de itens de menu
+para uma atividade. É onde deve-se colocar as ações que têm impacto global no aplicativo,
+como "Buscar", "Escrever e-mail" e "Configurações".
+  <p>Se estiver desenvolvendo para Android 2.3 ou anterior, os usuários
+podem revelar o painel do menu de opções pressionando o botão <em>Menu</em>.</p>
+  <p>No Android 3.0 ou em posteriores, os itens do menu de opções são apresentados pela <a href="{@docRoot}guide/topics/ui/actionbar.html">barra de ação</a> como uma combinação de itens
+de ação na tela e opções de estouro. A partir do Android 3.0, o botão <em>Menu</em> é censurado (alguns
+dispositivos
+não têm), então você deve migrar usando a barra de ação para fornecer acesso a ações
+e outras opções.</p>
+  <p>Consulte a seção <a href="#options-menu">Criação de um menu de opções</a>.</p>
+    </dd>
+    
+  <dt><strong>Modo de ação contextual e menu de contexto</strong></dt>
+  
+   <dd>Um menu de contexto é um <a href="#FloatingContextMenu">menu flutuante</a> que aparece quando
+o usuário realiza um clique longo em um elemento. Ele fornece ações que afetam o conteúdo selecionado
+ou a estrutura do contexto.
+  <p>Ao desenvolver para Android 3.0 ou posterior, você deve usar o <a href="#CAB">modo de ação contextual</a> para ativar as ações no conteúdo selecionado. Este modo exibe os itens de ação
+que afetam o conteúdo selecionado em uma barra no topo da tela e permite que o usuário
+selecione vários itens.</p>
+  <p>Consulte a seção <a href="#context-menu">Criação de menus contextuais</a>.</p>
+</dd>
+    
+  <dt><strong>Menu pop-up</strong></dt>
+    <dd>Um menu pop-up exibe itens em uma lista vertical ancorada à vista
+que apresentou o menu. É bom para fornecer um estouro de ações relacionado a conteúdo específico
+ou opções de fornecimento de uma segunda parte de um comando. As ações em um menu pop-up
+<strong>não</strong> devem afetar diretamente o conteúdo correspondente &mdash; é para isso que servem
+as ações contextuais. Preferivelmente, o menu pop-up serve para ações estendidas que relacionam as regiões de conteúdo
+na atividade.
+  <p>Consulte a seção <a href="#PopupMenu">criar um menu pop-up</a>.</p>
+</dd>
+</dl>
+
+
+
+<h2 id="xml">Definição de um menu em XML</h2>
+
+<p>Para todos os tipos de menu, o Android fornece um formato XML padrão para definir os itens de menu.
+Em vez de criar um menu no código da atividade, você deve definir um menu e todos os seus itens
+em um <a href="{@docRoot}guide/topics/resources/menu-resource.html">recurso de menu</a> XML. É possível, assim,
+inflar o recurso do menu (carregá-lo como um objeto {@link android.view.Menu}) na atividade, ou
+no fragmento.</p>
+
+<p>Usar um recurso de menu é uma boa prática por alguns motivos:</p>
+<ul>
+  <li>É mais fácil para visualizar a estrutura do menu em XML.</li>
+  <li>Ele separa o conteúdo do menu do código comportamental do aplicativo.</li>
+  <li>Ele permite criar configurações alternativas de menu para versões diferentes de plataforma,
+de tamanhos de tela e de outras configurações aproveitando a estrutura dos <a href="{@docRoot}guide/topics/resources/index.html">recursos do aplicativo</a>.</li>
+</ul>
+
+<p>Para definir o menu, crie um arquivo XML dentro do diretório <code>res/menu/</code>
+do projeto e crie o menu com os seguintes elementos:</p>
+<dl>
+  <dt><code>&lt;menu></code></dt>
+    <dd>Define um {@link android.view.Menu}, que é um recipiente para os itens de menu. Um elemento
+<code>&lt;menu></code> deve ser o nódulo raiz para o arquivo e pode reter um ou mais elementos
+<code>&lt;item></code> e <code>&lt;group></code>.</dd>
+
+  <dt><code>&lt;item></code></dt>
+    <dd>Cria um {@link android.view.MenuItem}, que representa um único item em um menu. Este
+elemento pode conter um elemento <code>&lt;menu></code> aninhado para criar um submenu.</dd>
+    
+  <dt><code>&lt;group></code></dt>
+    <dd>Um recipiente invisível e opcional para os elementos {@code &lt;item&gt;}. Ele permite que você categorize
+itens de menu para que eles compartilhem propriedades como estado ativo e visibilidade. Para obter mais informações,
+consulte a seção <a href="#groups">Criação de grupos de menu</a>.</dd>
+</dl>
+
+
+<p>A seguir há um exemplo de menu chamado <code>game_menu.xml</code>:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/new_game"
+          android:icon="@drawable/ic_new_game"
+          android:title="@string/new_game"
+          android:showAsAction="ifRoom"/&gt;
+    &lt;item android:id="@+id/help"
+          android:icon="@drawable/ic_help"
+          android:title="@string/help" /&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>O elemento <code>&lt;item></code> é compatível com vários atributos que você pode usar para definir a aparência ou o comportamento
+de um item. Os itens no menu acima incluem os seguintes atributos:</p>
+
+<dl>
+  <dt>{@code android:id}</dt>
+    <dd>Um ID de recurso que é único para o item. Ele permite que o aplicativo reconheça o item
+quando o usuário o seleciona.</dd>
+  <dt>{@code android:icon}</dt>
+    <dd>Uma referência a um desenhável para usar como o ícone do item.</dd>
+  <dt>{@code android:title}</dt>
+    <dd>Uma referência a uma string para usar como o título do item.</dd>
+  <dt>{@code android:showAsAction}</dt>
+    <dd>Especifica quando e como este item deve aparecer como um item de ação na <a href="{@docRoot}guide/topics/ui/actionbar.html">barra de ação</a>.</dd>
+</dl>
+
+<p>Esses são os atributos mais importantes que devem ser usados, mas há vários outros disponíveis.
+Para obter informações sobre todos os atributos compatíveis, consulte o documento <a href="{@docRoot}guide/topics/resources/menu-resource.html">Recurso de menu</a>.</p>
+
+<p>É possível adicionar um submenu a um item em qualquer menu (exceto a um submenu) adicionando um elemento {@code &lt;menu&gt;}
+como filho de um {@code &lt;item&gt;}. Os submenus são úteis quando o aplicativo
+tem várias funções que podem ser organizadas em tópicos, como itens em uma barra de menu do aplicativo do PC (arquivo,
+editar, visualizar etc.). Por exemplo:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/file"
+          android:title="@string/file" &gt;
+        &lt;!-- "file" submenu --&gt;
+        &lt;menu&gt;
+            &lt;item android:id="@+id/create_new"
+                  android:title="@string/create_new" /&gt;
+            &lt;item android:id="@+id/open"
+                  android:title="@string/open" /&gt;
+        &lt;/menu&gt;
+    &lt;/item&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>Para usar o menu em sua atividade, você precisa inflar o recurso do menu (converter o recurso
+XML em um objeto programável) usando {@link android.view.MenuInflater#inflate(int,Menu)
+MenuInflater.inflate()}. Nas seções a seguir, você verá como inflar um menu para cada
+tipo de menu.</p>
+
+
+
+<h2 id="options-menu">Criação de um menu de opções</h2>
+
+<div class="figure" style="width:200px;margin:0">
+  <img src="{@docRoot}images/options_menu.png" height="333" alt="" />
+  <p class="img-caption"><strong>Figura 1.</strong> Menu de opções
+no navegador, no Android 2.3.</p>
+</div>
+
+<p>O menu de opções é onde você deve incluir ações e outras opções que são relevantes
+para o contexto de atividade atual, como "Buscar", "Escrever e-mail" e "Configurações".</p>
+
+<p>O local onde os itens no menu de opções aparecem na tela depende da versão em que o aplicativo
+foi desenvolvido:</p>
+
+<ul>
+  <li>Caso tenha desenvolvido o aplicativo para <strong>Android 2.3.x (API de nível 10) ou 
+inferior</strong>, os conteúdos do menu de opções aparecerão na parte inferior da tela, quando o usuário
+pressionar o botão <em>Menu</em>, como exibido na figura 1. Quando aberto, a primeira parte visível é
+o menu
+de ícones, que possui até seis itens de menu. Se o menu incluir mais de seis itens, o Android
+colocará o sexto item e o resto em um menu flutuante, que o usuário poderá abrir selecionando
+<em>Mais</em>.</li>
+
+  <li>Se você desenvolveu o aplicativo para <strong>Android 3.0 (API de nível 11) ou
+superior</strong>, os itens do menu de opções estão disponíveis na <a href="{@docRoot}guide/topics/ui/actionbar.html">barra de ação</a>. Por padrão, o sistema
+posiciona todos os itens na ação de estouro, que o usuário pode revelar com o ícone de estouro de ação
+no lado direito da barra de ação (ou pressionando o botão <em>Menu</em>, se disponível). Para
+ativar
+o acesso rápido a ações importantes, é possível promover alguns itens para aparecerem na barra de ação adicionando
+{@code android:showAsAction="ifRoom"} aos elementos {@code &lt;item&gt;} correspondentes (veja a figura
+2). <p>Para obter mais informações sobre os itens de ação e outros comportamentos da barra de ação, consulte o guia <a href="{@docRoot}guide/topics/ui/actionbar.html">Barra de ação</a>. </p>
+<p class="note"><strong>Observação:</strong> Mesmo se <em>não</em> estiver desenvolvendo para Android 3.0 ou
+posteriores, é possível compilar seu próprio layout de barra de ação para obter um efeito semelhante. Para obter um exemplo de como é possível
+suportar versões mais antigas do Android com uma barra de ação, consulte o exemplo <a href="{@docRoot}resources/samples/ActionBarCompat/index.html">Compatibilidade da barra de ação</a>
+.</p>
+</li>
+</ul>
+
+<img src="{@docRoot}images/ui/actionbar.png" alt="" />
+<p class="img-caption"><strong>Figura 2.</strong> Barra de ação do aplicativo <a href="{@docRoot}resources/samples/HoneycombGallery/index.html">Honeycomb Gallery</a>, exibindo
+guias de navegação e um item de ação de câmera (além do botão de estouro de ação).</p>
+
+<p>É possível declarar itens para o menu de opções da subclasse {@link android.app.Activity}
+ou de uma subclasse {@link android.app.Fragment}. Se a atividade e os fragmentos
+declararem itens para o menu de opções, eles estarão combinados na IU. O item da atividade aparece primeiro,
+seguido de cada um desses fragmentos na ordem em que são adicionados
+à atividade. Se necessário, é possível reorganizar os itens do menu com o atributo {@code android:orderInCategory}
+em cada {@code &lt;item&gt;} que precisar mover.</p>
+
+<p>Para especificar o menu de opções para uma atividade, substitua {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} (os fragmentos fornecem
+o próprio retorno de chamada de {@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()}). Neste método
+, é possível inflar o recurso de menu (<a href="#xml">definido no XML</a>) em um {@link
+android.view.Menu} fornecido no retorno de chamada. Por exemplo:</p>
+
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu) {
+    MenuInflater inflater = {@link android.app.Activity#getMenuInflater()};
+    inflater.inflate(R.menu.game_menu, menu);
+    return true;
+}
+</pre>
+
+<p>Também é possível adicionar itens de menu usando {@link android.view.Menu#add(int,int,int,int)
+add()} e recuperar os itens com {@link android.view.Menu#findItem findItem()} para revisar
+as propriedades com APIs de {@link android.view.MenuItem}.</p>
+
+<p>Caso tenha desenvolvido o aplicativo para Android 2.3.x e anteriores, o sistema chamará {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} para criar o menu de opções
+quando o usuário abrir o menu pela primeira vez. Caso tenha desenvolvido para Android 3.0 e posteriores,
+o sistema chama {@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}
+ao iniciar a atividade para mostrar os itens para a barra de ação.</p>
+
+
+
+<h3 id="RespondingOptionsMenu">Tratamento de eventos de clique</h3>
+
+<p>Quando o usuário seleciona um item para o menu de opções (incluindo os itens de ação na barra de ação),
+o sistema chama o método {@link android.app.Activity#onOptionsItemSelected(MenuItem)
+onOptionsItemSelected()} da atividade. Este método passa o {@link android.view.MenuItem} selecionado. É possível
+identificar o item chamando {@link android.view.MenuItem#getItemId()}, que retorna o ID único
+para o item de menu (definido pelo atributo {@code android:id} no recurso de menu ou em um número inteiro
+dado ao método {@link android.view.Menu#add(int,int,int,int) add()}). É possível combinar este ID
+com itens de menu conhecidos para realizar a ação adequada. Por exemplo:</p>
+
+<pre>
+&#64;Override
+public boolean onOptionsItemSelected(MenuItem item) {
+    // Handle item selection
+    switch (item.getItemId()) {
+        case R.id.new_game:
+            newGame();
+            return true;
+        case R.id.help:
+            showHelp();
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+    }
+}
+</pre>
+
+<p>Ao lidar com um item de menu, retorne {@code true}. Se não lidar com o item de menu,
+ você deverá chamar a implementação de superclasse de {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} (a implementação
+padrão retornará como falsa).</p>
+
+<p>Se a atividade incluir fragmentos, o sistema chamará primeiro {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} para a atividade e, em seguida,
+para cada fragmento (na ordem em que cada fragmento foi adicionado) até um retornar como
+{@code true} ou até todos os fragmentos serem chamados.</p>
+
+<p class="note"><strong>Dica:</strong> o Android 3.0 adiciona a possibilidade de definir o comportamento do clique
+para um item de menu em XML, usando o atributo {@code android:onClick}. O valor do atributo
+deve ser o nome de um método definido pela atividade usando o menu. O método
+deve ser público e aceitar um único parâmetro {@link android.view.MenuItem} &mdash; quando o sistema chamar este método,
+ ele passará o item de menu selecionado. Para obter mais informações e um exemplo, consulte o documento <a href="{@docRoot}guide/topics/resources/menu-resource.html">Recurso de menu</a>.</p>
+
+<p class="note"><strong>Dica:</strong> se o aplicativo contiver várias atividades
+e algumas delas fornecerem o mesmo menu de opções,
+considere criar uma atividade que não implemente nada exceto os métodos {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()} e {@link android.app.Activity#onOptionsItemSelected(MenuItem)
+onOptionsItemSelected()}. Em seguida, estenda esta classe para cada atividade que deve compartilhar
+o mesmo menu de opções. Desta maneira, é possível gerenciar um conjunto de códigos para lidar com ações de menu
+e cada classe descendente herda os comportamentos do menu.
+Se quiser adicionar itens de menu a uma das atividades descendentes,
+substitua {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()} nesta atividade. Chame {@code super.onCreateOptionsMenu(menu)} para que os itens de menu originais
+sejam criados e, em seguida, adicione os novos itens de menu com {@link
+android.view.Menu#add(int,int,int,int) menu.add()}. Você também pode substituir o comportamento
+da superclasse para itens de menu individuais.</p>
+
+
+<h3 id="ChangingTheMenu">Alteração dos itens de menu em tempo de execução</h3>
+
+<p>Depois que o sistema chamar {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()}, ele reterá uma instância do {@link android.view.Menu} que você populará
+e não chamará {@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}
+novamente, a não ser que o menu seja invalidado por algum motivo. No entanto, você deve usar {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} somente para criar o estado inicial do menu
+e não para realizar alterações durante o ciclo de vida da atividade.</p>
+
+<p>Caso queira modificar o menu de opções com base
+em eventos que ocorrem durante o ciclo de vida da atividade, é possível fazê-lo
+no método {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}. Este método
+passa a você o objeto {@link android.view.Menu}, já que ele existe para que seja possível modificá-lo,
+como com adição, remoção ou desativação de itens. (Os fragmentos também fornecem um retorno de chamada {@link
+android.app.Fragment#onPrepareOptionsMenu onPrepareOptionsMenu()}.)</p>
+
+<p>No Android 2.3.x e em anteriores, o sistema chamará {@link
+android.app.Activity#onPrepareOptionsMenu(Menu)
+onPrepareOptionsMenu()} sempre que o usuário abrir o menu de opções (pressionar o botão <em>Menu</em>
+).</p>
+
+<p>No Android 3.0 e posteriores, avalia-se o menu de opções quanto a sempre estar aberto quando os itens de menu
+são apresentados na barra de ação. Quando um evento ocorre e você quer realizar uma atualização de menu,
+você deve chamar {@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()} para pedir
+que o sistema chame {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}.</p>
+
+<p class="note"><strong>Observação:</strong> 
+você nunca deve alterar os itens no menu de opções com base no {@link android.view.View} atualmente
+em foco. Quando estiver no modo de toque (quando o usuário não está usando cursor de bola ou um teclado), as vistas
+não podem ter foco, então você nunca deve usar o foco como base para modificar
+os itens no menu de opções. Se quiser fornecer itens de menu que sejam sensíveis a contexto para um {@link
+android.view.View}, use um <a href="#context-menu">menu de contexto</a>.</p>
+
+
+
+
+<h2 id="context-menu">Criação de menus contextuais</h2>
+
+<div class="figure" style="width:420px;margin-top:-1em">
+  <img src="{@docRoot}images/ui/menu-context.png" alt="" />
+  <p class="img-caption"><strong>Figura 3.</strong> Capturas de tela de um menu de contexto flutuante (esquerda)
+e a barra de ação contextual (direita).</p>
+</div>
+
+<p>Um menu contextual oferece ações que afetam um item ou estrutura de contexto específica na IU.
+É possível fornecer um menu de contexto para qualquer vista, mas ele é geralmente usado para itens em um {@link
+android.widget.ListView}, {@link android.widget.GridView}, ou em outras coleções de vistas
+em que o usuário pode realizar ações diretas em cada item.</p>
+
+<p>Há duas formas de fornecer ações contextuais:</p>
+<ul>
+  <li>Em um <a href="#FloatingContextMenu">menu de contexto flutuante</a>. Um menu aparece como uma lista flutuante
+de itens de menu (semelhante a uma caixa de diálogo) quando o usuário realiza um clique longo (pressiona e segura)
+em uma vista que declara suporte para um menu de contexto. Os usuários podem realizar uma ação contextual
+em um item por vez.</li>
+
+  <li>No <a href="#CAB">modo de ação contextual</a>. Este modo é uma implementação de sistema de
+{@link android.view.ActionMode} que exibe uma <em>barra de ação contextual</em> no topo da tela
+com itens de ação que afetam os itens selecionados. Quando este modo está ativo,
+os usuários podem realizar uma ação em vários itens por vez (se o aplicativo permitir).</li>
+</ul>
+
+<p class="note"><strong>Observação:</strong> o modo de ação contextual está disponível no Android 3.0 (API
+de nível 11) e em posteriores e é a técnica preferencial para exibir ações contextuais
+quando disponível. Se o aplicativo for compatível com versões mais antigas que a 3.0, então você deve retornar a um menu
+de contexto flutuante nestes dispositivos.</p>
+
+
+<h3 id="FloatingContextMenu">Criação de um menu de contexto flutuante</h3>
+
+<p>Para fornecer um menu de contexto flutuante:</p>
+<ol>
+  <li>Registre o {@link android.view.View} ao qual o menu de contexto deve estar associado
+chamando {@link android.app.Activity#registerForContextMenu(View) registerForContextMenu()} e passe-o
+para {@link android.view.View}.
+  <p>Se a atividade usar {@link android.widget.ListView} ou {@link android.widget.GridView}
+e você quiser que cada item forneça o mesmo menu de contexto, registre todos os itens para um menu de contexto
+passando {@link android.widget.ListView} ou {@link android.widget.GridView} para {@link
+android.app.Activity#registerForContextMenu(View) registerForContextMenu()}.</p>
+</li>
+
+  <li>Implemente o método {@link
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()}
+em {@link android.app.Activity} ou {@link android.app.Fragment}.
+  <p>Quando a vista registrada receber um evento de clique longo, o sistema chamará o método {@link
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()}
+. É aqui que você define os itens de menu, geralmente inflando um recurso de menu. Por
+exemplo:</p>
+<pre>
+&#64;Override
+public void onCreateContextMenu(ContextMenu menu, View v,
+                                ContextMenuInfo menuInfo) {
+    super.onCreateContextMenu(menu, v, menuInfo);
+    MenuInflater inflater = getMenuInflater();
+    inflater.inflate(R.menu.context_menu, menu);
+}
+</pre>
+
+<p>{@link android.view.MenuInflater} permite que você infle o menu de contexto de um <a href="{@docRoot}guide/topics/resources/menu-resource.html">recurso de menu</a>. Os parâmetros do método
+de retorno de chamada incluem o {@link android.view.View}
+que o usuário selecionou e um objeto {@link android.view.ContextMenu.ContextMenuInfo} que fornece
+informações adicionais sobre o item selecionado. Se sua atividade tiver várias vistas, em que cada uma forneça
+um menu de contexto diferente, você deve usar esses parâmetros para determinar qual menu de contexto
+deve ser inflado.</p>
+</li>
+
+<li>Implemente {@link android.app.Activity#onContextItemSelected(MenuItem)
+onContextItemSelected()}.
+  <p>Quando o usuário selecionar um item de menu, o sistema chamará este método para que você possa realizar
+a ação adequada. Por exemplo:</p>
+
+<pre>
+&#64;Override
+public boolean onContextItemSelected(MenuItem item) {
+    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
+    switch (item.getItemId()) {
+        case R.id.edit:
+            editNote(info.id);
+            return true;
+        case R.id.delete:
+            deleteNote(info.id);
+            return true;
+        default:
+            return super.onContextItemSelected(item);
+    }
+}
+</pre>
+
+<p>O método {@link android.view.MenuItem#getItemId()} consulta o ID
+para o item de menu selecionado, o qual pode ser atribuído a cada item de menu no XML usando o atributo {@code
+android:id}, como exibido na seção <a href="#xml">Definição de um menu em
+XML</a>.</p>
+
+<p>Ao lidar com um item de menu, retorne {@code true}. Se não lidar com o item de menu,
+você deverá passar o item de menu para a implementação de superclasse. Se a atividade incluir fragmentos,
+ela receberá este retorno de chamada primeiro. Ao chamar a superclasse ao não lidar, o sistema
+passará o evento para o respectivo método de retorno de chamada em cada fragmento, um por vez (na ordem
+em que cada fragmento foi adicionado) até que {@code true} ou {@code false} seja retornado. (A implementação
+padrão para {@link android.app.Activity} e {@code android.app.Fragment} retorna {@code
+false}, então você deve sempre chamar a superclasse ao não tratar de um item de menu.)</p>
+</li>
+</ol>
+
+
+<h3 id="CAB">Uso do modo de ação contextual</h3>
+
+<p>O modo de ação contextual é uma implementação de sistema de {@link android.view.ActionMode}
+que direciona a interação do usuário a efetuar ações contextuais. Quando um usuário
+ativa este modo selecionando um item, uma <em>barra de ação contextual</em> aparece na parte superior da tela
+para apresentar as ações que o usuário pode realizar nos itens selecionados. Enquanto este modo estiver ativo,
+o usuário pode selecionar vários itens (se você permitir), desmarcar itens e continuar
+a navegar dentro da atividade (o tanto que você permitir). O modo de ação
+é desativado e a barra de ação contextual desaparece quando o usuário desmarca todos os itens, pressiona o botão VOLTAR,
+ou seleciona a ação <em>Pronto</em> na lateral esquerda da barra.</p>
+
+<p class="note"><strong>Observação:</strong> a barra de ação contextual não é necessariamente
+associada à <a href="{@docRoot}guide/topics/ui/actionbar.html">barra de ação</a>. Elas operam de forma independente,
+apesar de a barra de ação contextual ocupar visualmente a posição
+da barra de ação.</p>
+
+<p>Caso esteja desenvolvendo para Android 3.0 (API de nível 11) e posteriores,
+você deve usar o modo de ação contextual para apresentar ações contextuais, em vez de usar o <a href="#FloatingContextMenu">menu de contexto flutuante</a>.</p>
+
+<p>Para oferecer vistas que fornecem ações contextuais, você deve invocar o modo de ação contextual
+sobre um dos eventos (ou ambos):</p>
+<ul>
+  <li>O usuário realiza um clique longo na vista.</li>
+  <li>O usuário seleciona uma caixa de seleção ou um componente de IU semelhante dentro da vista.</li>
+</ul>
+
+<p>A maneira do aplicativo de invocar o modo de ação contextual e definir o comportamento
+para cada ação depende do seu projeto. Há basicamente dois projetos:</p>
+<ul>
+  <li>Para ações contextuais em vistas arbitrárias individuais.</li>
+  <li>Para ações contextuais de agrupadas em itens em um {@link
+android.widget.ListView} ou {@link android.widget.GridView} (permitindo que o usuário selecione vários itens
+e realize uma ação em todos eles).</li>
+</ul>
+
+<p>As seguintes seções descrevem a configuração necessária para cada cenário.</p>
+
+
+<h4 id="CABforViews">Ativação do modo de ação contextual para vistas individuais</h4>
+
+<p>Caso queira invocar o modo de ação contextual somente quando o usuário selecionar
+vistas específicas, você deve:</p>
+<ol>
+  <li>Implementar a interface {@link android.view.ActionMode.Callback}. Em seus métodos de retorno de chamada,
+é possível especificar as ações da barra de ação contextual, responder aos eventos de clique em itens de ação,
+e tratar de outros eventos de ciclo de vida do modo de ação.</li>
+  <li>Chame {@link android.app.Activity#startActionMode startActionMode()} quando quiser exibir
+a barra (como quando o usuário realiza cliques longos na visualização).</li>
+</ol>
+
+<p>Por exemplo:</p>
+
+<ol>
+  <li>Implementar a interface {@link android.view.ActionMode.Callback ActionMode.Callback}:
+<pre>
+private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
+
+    // Called when the action mode is created; startActionMode() was called
+    &#64;Override
+    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+        // Inflate a menu resource providing context menu items
+        MenuInflater inflater = mode.getMenuInflater();
+        inflater.inflate(R.menu.context_menu, menu);
+        return true;
+    }
+
+    // Called each time the action mode is shown. Always called after onCreateActionMode, but
+    // may be called multiple times if the mode is invalidated.
+    &#64;Override
+    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+        return false; // Return false if nothing is done
+    }
+
+    // Called when the user selects a contextual menu item
+    &#64;Override
+    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.menu_share:
+                shareCurrentItem();
+                mode.finish(); // Action picked, so close the CAB
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    // Called when the user exits the action mode
+    &#64;Override
+    public void onDestroyActionMode(ActionMode mode) {
+        mActionMode = null;
+    }
+};
+</pre>
+
+<p>Observe que esses retornos de chamada de eventos são quase exatamente iguais aos retornos de chamada do <a href="#options-menu">menu de opções</a>, exceto que cada um deles também passa o objeto {@link
+android.view.ActionMode} associado ao evento. É possível usar APIs de {@link
+android.view.ActionMode} para realizar várias alterações ao CAB, como revisar um título e um subtítulo
+com {@link android.view.ActionMode#setTitle setTitle()} e {@link
+android.view.ActionMode#setSubtitle setSubtitle()} (útil para indicar quantos itens
+são selecionados).</p>
+
+<p>Observe também que os exemplos acima definem a variável {@code mActionMode} como nula quando
+o modo de ação é destruído. Na etapa a seguir, você verá como ela é inicializada
+e quão útil salvar a variável do membro na atividade ou no fragmento pode ser.</p>
+</li>
+
+  <li>Chame {@link android.app.Activity#startActionMode startActionMode()} para ativar o modo de ação contextual
+quando apropriado, como em resposta a um clique longo em um {@link
+android.view.View}:</p>
+
+<pre>
+someView.setOnLongClickListener(new View.OnLongClickListener() {
+    // Called when the user long-clicks on someView
+    public boolean onLongClick(View view) {
+        if (mActionMode != null) {
+            return false;
+        }
+
+        // Start the CAB using the ActionMode.Callback defined above
+        mActionMode = getActivity().startActionMode(mActionModeCallback);
+        view.setSelected(true);
+        return true;
+    }
+});
+</pre>
+
+<p>Ao chamar {@link android.app.Activity#startActionMode startActionMode()}, o sistema
+retorna o {@link android.view.ActionMode} criado. Ao salvar isto em uma variável do membro,
+é possível realizar alterações na barra de ação contextual em resposta a outros eventos. No exemplo acima,
+{@link android.view.ActionMode} é usado para garantir que a instância {@link android.view.ActionMode}
+não seja recriada se já estiver ativa, verificando se o membro é nulo antes de iniciar
+o modo de ação.</p>
+</li>
+</ol>
+
+
+
+<h4 id="CABforListView">Ativação de ações contextuais agrupadas em ListView ou GridView</h4>
+
+<p>Se tiver uma coleção de itens em um {@link android.widget.ListView} ou {@link
+android.widget.GridView} (ou outra extensão de {@link android.widget.AbsListView}) e quiser
+permitir que os usuários realizem ações de agrupamento, você deve:</p>
+
+<ul>
+  <li>Implementar a interface {@link android.widget.AbsListView.MultiChoiceModeListener} e defini-la
+para o grupo de visualização com {@link android.widget.AbsListView#setMultiChoiceModeListener
+setMultiChoiceModeListener()}. Nos métodos de retorno de chamada da escuta, é possível especificar as ações
+para a barra de ação contextual, responder a eventos de clique em itens de ação e lidar com outros retornos de chamada
+herdados da interface {@link android.view.ActionMode.Callback}.</li>
+
+  <li>Chame {@link android.widget.AbsListView#setChoiceMode setChoiceMode()} com o argumento {@link
+android.widget.AbsListView#CHOICE_MODE_MULTIPLE_MODAL}.</li>
+</ul>
+
+<p>Por exemplo:</p>
+
+<pre>
+ListView listView = getListView();
+listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
+listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
+
+    &#64;Override
+    public void onItemCheckedStateChanged(ActionMode mode, int position,
+                                          long id, boolean checked) {
+        // Here you can do something when items are selected/de-selected,
+        // such as update the title in the CAB
+    }
+
+    &#64;Override
+    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+        // Respond to clicks on the actions in the CAB
+        switch (item.getItemId()) {
+            case R.id.menu_delete:
+                deleteSelectedItems();
+                mode.finish(); // Action picked, so close the CAB
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    &#64;Override
+    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+        // Inflate the menu for the CAB
+        MenuInflater inflater = mode.getMenuInflater();
+        inflater.inflate(R.menu.context, menu);
+        return true;
+    }
+
+    &#64;Override
+    public void onDestroyActionMode(ActionMode mode) {
+        // Here you can make any necessary updates to the activity when
+        // the CAB is removed. By default, selected items are deselected/unchecked.
+    }
+
+    &#64;Override
+    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+        // Here you can perform updates to the CAB due to
+        // an {@link android.view.ActionMode#invalidate} request
+        return false;
+    }
+});
+</pre>
+
+<p>É isso. Agora, quando o usuário selecionar um item com um clique longo, o sistema chamará o método {@link
+android.widget.AbsListView.MultiChoiceModeListener#onCreateActionMode onCreateActionMode()}
+e exibirá a barra de ação contextual com as ações especificadas. Enquanto a barra de ação contextual
+estiver visível, os usuários poderão selecionar itens adicionais.</p>
+
+<p>Em alguns casos em que as ações contextuais fornecem itens de ação comuns, você pode
+querer adicionar uma caixa de seleção ou um elemento de IU semelhante que permite que os usuários selecionem itens,
+pois eles podem não descobrir o comportamento do clique longo. Quando um usuário seleciona a caixa de seleção,
+é possível invocar o modo de ação contextual definindo o respectivo item de lista
+para o estado marcado com {@link android.widget.AbsListView#setItemChecked setItemChecked()}.</p>
+
+
+
+
+<h2 id="PopupMenu">Criação de um menu pop-up</h2>
+
+<div class="figure" style="width:220px">
+<img src="{@docRoot}images/ui/popupmenu.png" alt="" />
+<p><strong>Figura 4.</strong> Um menu pop-up no aplicativo do Gmail, ancorado ao botão
+de estouro no cando direito superior.</p>
+</div>
+
+<p>Um {@link android.widget.PopupMenu} é um menu modal ancorado a uma {@link android.view.View}.
+Ele aparece sob a vista de âncora se tiver espaço, ou sobre a vista. Ele é útil para:</p>
+<ul>
+  <li>Fornecer um menu de estilo de estouro para ações que <em>se relacionam</em> com o conteúdo específico (como
+cabeçalhos de e-mail do Gmail, exibidos na figura 4).
+    <p class="note"><strong>Observação:</strong> Isto não é igual ao menu de contexto,
+que geralmente é usado para ações que <em>afetam</em> o conteúdo selecionado. Para ações que afetam o conteúdo
+selecionado, use o <a href="#CAB">modo de ação contextual</a> ou o <a href="#FloatingContextMenu">menu de contexto flutuante</a>.</p></li>
+  <li>Fornecer uma segunda parte de uma sentença de comando (como um botão marcado como "Adicionar"
+que produz um menu pop-up com opções diferentes de "Adicionar").</li>
+  <li>Fornecer um menu suspenso semelhante a {@link android.widget.Spinner} que não retenha
+uma seleção persistente.</li>
+</ul>
+
+
+<p class="note"><strong>Observação:</strong> {@link android.widget.PopupMenu} está disponível com a API
+de nível 11 ou posteriores.</p>
+
+<p>Se <a href="#xml">definir o menu em XML</a>, abaixo é exposto o modo de exibir o menu pop-up:</p>
+<ol>
+  <li>Represente um {@link android.widget.PopupMenu} com seu construtor,
+que usa o aplicativo {@link android.content.Context} e {@link android.view.View} atual ao qual o menu
+deve ser ancorado.</li>
+  <li>Use {@link android.view.MenuInflater} para inflar o recurso de menu no objeto {@link
+android.view.Menu} retornado por {@link
+android.widget.PopupMenu#getMenu() PopupMenu.getMenu()}. Em APIs de nível 14 ou posteriores, é possível usar
+{@link android.widget.PopupMenu#inflate PopupMenu.inflate()}.</li>
+  <li>Chame {@link android.widget.PopupMenu#show() PopupMenu.show()}.</li>
+</ol>
+
+<p>Por exemplo, a seguir há um botão com o atributo {@link android.R.attr#onClick android:onClick}
+que exibe um menu pop-up:</p>
+
+<pre>
+&lt;ImageButton
+    android:layout_width="wrap_content" 
+    android:layout_height="wrap_content" 
+    android:src="@drawable/ic_overflow_holo_dark"
+    android:contentDescription="@string/descr_overflow_button"
+    android:onClick="showPopup" />
+</pre>
+
+<p>A atividade pode então exibir o menu pop-up desta forma:</p>
+
+<pre>
+public void showPopup(View v) {
+    PopupMenu popup = new PopupMenu(this, v);
+    MenuInflater inflater = popup.getMenuInflater();
+    inflater.inflate(R.menu.actions, popup.getMenu());
+    popup.show();
+}
+</pre>
+
+<p>Em APIs de nível 14 ou posteriores, é possível combinar as duas linhas que inflam o menu com {@link
+android.widget.PopupMenu#inflate PopupMenu.inflate()}.</p>
+
+<p>O menu é dispensado quando o usuário seleciona um item ou toca fora
+da área do menu. É possível ouvir o evento de dispensa usando {@link
+android.widget.PopupMenu.OnDismissListener}.</p>
+
+<h3 id="PopupEvents">Tratamento de eventos de clique</h3>
+
+<p>Para realizar uma ação
+quando o usuário seleciona um item de menu, você deve implementar a interface {@link
+android.widget.PopupMenu.OnMenuItemClickListener} e registrá-la com {@link
+android.widget.PopupMenu} chamando {@link android.widget.PopupMenu#setOnMenuItemClickListener
+setOnMenuItemclickListener()}. Quando o usuário seleciona um item, o sistema chama o retorno de chamada {@link
+android.widget.PopupMenu.OnMenuItemClickListener#onMenuItemClick onMenuItemClick()}
+na interface.</p>
+
+<p>Por exemplo:</p>
+
+<pre>
+public void showMenu(View v) {
+    PopupMenu popup = new PopupMenu(this, v);
+
+    // This activity implements OnMenuItemClickListener
+    popup.setOnMenuItemClickListener(this);
+    popup.inflate(R.menu.actions);
+    popup.show();
+}
+
+&#64;Override
+public boolean onMenuItemClick(MenuItem item) {
+    switch (item.getItemId()) {
+        case R.id.archive:
+            archive(item);
+            return true;
+        case R.id.delete:
+            delete(item);
+            return true;
+        default:
+            return false;
+    }
+}
+</pre>
+
+
+<h2 id="groups">Criação de grupos de menu</h2>
+
+<p>Um grupo de menu é uma coleção de itens de menu que compartilham certas peculiaridades. Com um grupo,
+é possível:</p>
+<ul>
+  <li>Exibir ou ocultar todos os itens com {@link android.view.Menu#setGroupVisible(int,boolean)
+setGroupVisible()}</li>
+  <li>Ativar ou desativar todos os itens com {@link android.view.Menu#setGroupEnabled(int,boolean)
+setGroupEnabled()}</li>
+  <li>Especificar se todos os itens são marcáveis com {@link
+android.view.Menu#setGroupCheckable(int,boolean,boolean) setGroupCheckable()}</li>
+</ul>
+
+<p>É possível criar um grupo aninhando elementos {@code &lt;item&gt;} dentro de um elemento {@code &lt;group&gt;}
+no recurso de menu ou especificando um ID de grupo com o método {@link
+android.view.Menu#add(int,int,int,int) add()}.</p>
+
+<p>Abaixo há um exemplo de recurso de menu que inclui um grupo:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/menu_save"
+          android:icon="@drawable/menu_save"
+          android:title="@string/menu_save" /&gt;
+    &lt;!-- menu group --&gt;
+    &lt;group android:id="@+id/group_delete"&gt;
+        &lt;item android:id="@+id/menu_archive"
+              android:title="@string/menu_archive" /&gt;
+        &lt;item android:id="@+id/menu_delete"
+              android:title="@string/menu_delete" /&gt;
+    &lt;/group&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>Os itens que estão no grupo aparecem no mesmo nível que o primeiro item &mdash; todos os três itens
+no menu são irmãos. No entanto, é possível modificar as peculiaridades dos dois itens
+no grupo mencionando o ID do grupo e usando os métodos listados acima. O sistema
+também nunca separará os itens agrupados. Por exemplo, se você declarar {@code
+android:showAsAction="ifRoom"} para cada item, eles aparecerão na barra de ação
+ou no estouro de ação.</p>
+
+
+<h3 id="checkable">Uso de itens de menu marcáveis</h3>
+
+<div class="figure" style="width:200px">
+  <img src="{@docRoot}images/radio_buttons.png" height="333" alt="" />
+  <p class="img-caption"><strong>Figura 5.</strong> Captura de tela de um submenu
+com itens marcáveis.</p>
+</div>
+
+<p>Um menu como uma interface pode ser útil para ativar e desativar as opções, usar uma caixa de seleção
+para opções independentes ou botões de rádio para grupos
+de opções mutuamente exclusivas. A figura 5 mostra um submenu com itens marcáveis
+com botões de rádio.</p>
+
+<p class="note"><strong>Observação:</strong> os itens de menu no menu de ícones (do menu de opções)
+não podem exibir uma caixa de seleção ou um botão de rádio. Caso escolha tornar marcáveis os itens no menu de ícones,
+você deverá indicar manualmente o estado marcado arrastando o ícone e/ou digitando
+sempre que o estado for alterado.</p>
+
+<p>É possível definir o comportamento marcável para itens individuais de menu usando o atributo {@code
+android:checkable} no elemento {@code &lt;item&gt;}, ou para um grupo inteiro
+com o atributo {@code android:checkableBehavior} no elemento {@code &lt;group&gt;}. Por exemplo,
+todos os itens neste grupo de menu são marcáveis com um botão de rádio:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;group android:checkableBehavior="single"&gt;
+        &lt;item android:id="@+id/red"
+              android:title="@string/red" /&gt;
+        &lt;item android:id="@+id/blue"
+              android:title="@string/blue" /&gt;
+    &lt;/group&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>O atributo {@code android:checkableBehavior} aceita:
+<dl>
+  <dt>{@code single}</dt>
+    <dd>Somente um item do grupo pode ser marcado (botões de rádio)</dd>
+  <dt>{@code all}</dt>
+    <dd>Todos os itens podem ser marcados (caixas de seleção)</dd>
+  <dt>{@code none}</dt>
+    <dd>Nenhum item é marcável</dd>
+</dl>
+
+<p>É possível aplicar um estado marcado padrão a um item usando o atributo {@code android:checked}
+no elemento {@code &lt;item&gt;} e alterar o seu código com o método {@link
+android.view.MenuItem#setChecked(boolean) setChecked()}.</p>
+
+<p>Quando um item marcável é selecionado, o sistema chama o respectivo método retorno de chamada do item selecionado
+(como {@link android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}). É aqui
+que você deve definir o estado da caixa de seleção, pois a caixa de seleção ou o botão de rádio
+não altera o seu estado automaticamente. É possível consultar o estado do item (como ele era antes
+do usuário selecioná-lo) com {@link android.view.MenuItem#isChecked()} e, em seguida, definir o estado marcado com 
+{@link android.view.MenuItem#setChecked(boolean) setChecked()}. Por exemplo:</p>
+
+<pre>
+&#64;Override
+public boolean onOptionsItemSelected(MenuItem item) {
+    switch (item.getItemId()) {
+        case R.id.vibrate:
+        case R.id.dont_vibrate:
+            if (item.isChecked()) item.setChecked(false);
+            else item.setChecked(true);
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+    }
+}
+</pre>
+
+<p>Caso você não defina o estado marcado desta maneira, o estado visível do item (a caixa de seleção
+ou o botão de rádio)
+não se alterará quando o usuário selecioná-lo. Quando o estado é definido, a atividade preserva o estado marcado
+do item para que, quando o usuário abrir o menu posteriormente, o estado marcado
+definido esteja visível.</p>
+
+<p class="note"><strong>Observação:</strong>
+os itens de menu marcáveis servem para serem usados somente em uma base por sessão e não são salvos quando
+o aplicativo é destruído. Caso tenha configurações de aplicativo que gostaria de salvar para o usuário,
+você deve armazenar os dados usando as <a href="{@docRoot}guide/topics/data/data-storage.html#pref">preferências compartilhadas</a>.</p>
+
+
+
+<h2 id="intents">Adição de itens de menu com base em uma intenção</h2>
+
+<p>Às vezes, você desejará que um item de menu inicie uma atividade usando uma {@link android.content.Intent}
+(se é uma atividade no seu ou em outro aplicativo). Quando você sabe qual intenção
+quer usar e tem um item de menu específico que deve iniciar a intenção, é possível executá-la
+com {@link android.app.Activity#startActivity(Intent) startActivity()} durante
+o método de retorno de chamada selecionado no item (como o retorno de chamada {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}).</p>
+
+<p>No entanto, caso não tenha certeza de que o dispositivo
+do usuário contém um aplicativo que lida com a intenção, adicionar um item que o invoca
+resulta em um item de menu que não funciona, pois a intenção pode não se resolver
+em uma atividade. Para resolver isto, o Android permite que você adicione itens de menu dinamicamente ao seu menu
+quando encontra atividades no dispositivo que lidam com a intenção.</p>
+
+<p>Para adicionar itens de menu com base nas atividades disponíveis que aceitam uma intenção:</p>
+<ol>
+  <li>Defina a intenção
+com a categoria {@link android.content.Intent#CATEGORY_ALTERNATIVE}
+e/ou {@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE}, além de quaisquer outros requisitos.</li>
+  <li>Chame {@link
+android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+Menu.addIntentOptions()}. O Android procura um aplicativo que possa realizar a intenção
+e adiciona-o ao seu menu.</li>
+</ol>
+
+<p>Se não houver nenhum aplicativo instalado
+que satisfaça a intenção, nenhum item de menu será adicionado.</p>
+
+<p class="note"><strong>Observação:</strong>
+{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} é usado para lidar com o elemento atualmente selecionado
+na tela. Portanto, ele deve ser usado apenas ao criar um menu em {@link
+android.app.Activity#onCreateContextMenu(ContextMenu,View,ContextMenuInfo)
+onCreateContextMenu()}.</p>
+
+<p>Por exemplo:</p>
+
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu){
+    super.onCreateOptionsMenu(menu);
+
+    // Create an Intent that describes the requirements to fulfill, to be included
+    // in our menu. The offering app must include a category value of Intent.CATEGORY_ALTERNATIVE.
+    Intent intent = new Intent(null, dataUri);
+    intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
+
+    // Search and populate the menu with acceptable offering applications.
+    menu.addIntentOptions(
+         R.id.intent_group,  // Menu group to which new items will be added
+         0,      // Unique item ID (none)
+         0,      // Order for the items (none)
+         this.getComponentName(),   // The current activity name
+         null,   // Specific items to place first (none)
+         intent, // Intent created above that describes our requirements
+         0,      // Additional flags to control items (none)
+         null);  // Array of MenuItems that correlate to specific items (none)
+
+    return true;
+}</pre>
+
+<p>Para cada atividade encontrada que fornece um filtro de intenção correspondente à intenção definida,
+um item de menu é adicionado, usando o valor no <code>android:label</code> do filtro de intenção
+como o título do item e o ícone do aplicativo como o ícone do item de menu. O método
+{@link android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+addIntentOptions()} retorna o número de itens de menu adicionados.</p>
+
+<p class="note"><strong>Observação:</strong> Ao chamar {@link
+android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+addIntentOptions()}, ele substitui todos os itens de menu no grupo do menu especificado
+no primeiro argumento.</p>
+
+
+<h3 id="AllowingToAdd">Permissão para a atividade ser adicionada a outros menus</h3>
+
+<p>Você pode também oferecer os serviços da sua atividade para outros aplicativos,
+para que o aplicativo possa ser incluído no menu de outros (revertendo as funções descritas acima).</p>
+
+<p>Para ser incluído nos menus de outros aplicativos, você precisa definir
+um filtro de intenção como normalmente faz, mas certificando-se de incluir os valores {@link android.content.Intent#CATEGORY_ALTERNATIVE}
+e/ou {@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} para a categoria
+do filtro de intenção. Por exemplo:</p>
+<pre>
+&lt;intent-filter label="&#64;string/resize_image">
+    ...
+    &lt;category android:name="android.intent.category.ALTERNATIVE" />
+    &lt;category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
+    ...
+&lt;/intent-filter>
+</pre>
+
+<p>Leia mais sobre a criação de filtros de intenção no documento 
+<a href="/guide/components/intents-filters.html">Intenções e filtros de intenções</a>.</p>
+
+<p>Para obter um exemplo de aplicativo que usa esta técnica, consulte o código de exemplo do 
+<a href="{@docRoot}resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html">Bloco
+de notas</a>.</p>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/ui/notifiers/notifications.jd b/docs/html-intl/intl/pt-br/guide/topics/ui/notifiers/notifications.jd
new file mode 100644
index 0000000..42563ac
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/notifiers/notifications.jd
@@ -0,0 +1,979 @@
+page.title=Notificações
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Neste documento</h2>
+<ol>
+  <li><a href="#Design">Considerações de projeto</a></li>
+  <li><a href="#CreateNotification">Criação de uma notificação</a>
+    <ol>
+      <li><a href="#Required">Conteúdo necessário da notificação</a></li>
+      <li><a href="#Optional">Configurações e conteúdo opcionais da notificação</a></li>
+      <li><a href="#Actions">Ações da notificação</a></li>
+      <li><a href="#Priority">Prioridade da notificação</a></li>
+      <li><a href="#SimpleNotification">Criação de uma notificação simples</a></li>
+      <li><a href="#ApplyStyle">Aplicação de um layout expandido a uma notificação</a></li>
+      <li><a href="#Compatibility">Tratamento da compatibilidade</a></li>
+    </ol>
+  </li>
+  <li><a href="#Managing">Gerenciamento de notificações</a>
+    <ol>
+      <li><a href="#Updating">Atualização de notificações</a></li>
+      <li><a href="#Removing">Remoção de notificações</a></li>
+    </ol>
+  </li>
+  <li><a href="#NotificationResponse">Preservação da navegação ao iniciar uma atividade</a>
+    <ol>
+      <li><a href="#DirectEntry">Definição de uma atividade PendingIntent comum</a></li>
+      <li><a href="#ExtendedNotification">Definição de uma atividade PendingIntent especial</a></li>
+    </ol>
+  </li>
+  <li><a href="#Progress">Exibição do progresso em uma notificação</a>
+    <ol>
+      <li><a href="#FixedProgress">Exibição de um indicador de progresso de duração fixa</a></li>
+      <li><a href="#ActivityIndicator">Exibição de um indicador de atividade contínua</a></li>
+    </ol>
+  </li>
+  <li><a href="#metadata">Metadados de notificação</a></li>
+  <li><a href="#Heads-up">Notificações de informações prévias</a></li>
+  <li><a href="#lockscreenNotification">Notificações na tela de bloqueio</a></li>
+    <ol>
+      <li><a href="#visibility">Configuração de visibilidade</a></li>
+      <li><a href="#controllingMedia">Controle de reprodução de mídia na tela de bloqueio</a></li>
+    </ol>
+  <li><a href="#CustomNotification">Layouts de notificação personalizados</a></li>
+</ol>
+
+    <h2>Classes principais</h2>
+    <ol>
+        <li>{@link android.app.NotificationManager}</li>
+        <li>{@link android.support.v4.app.NotificationCompat}</li>
+    </ol>
+    <h2>Vídeos</h2>
+    <ol>
+        <li>
+            <a href="http://www.youtube.com/watch?v=Yc8YrVc47TI&amp;feature=player_detailpage#t=1672s">
+            Notificações em 4.1</a>
+        </li>
+    </ol>
+<h2>Veja também</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}design/patterns/notifications.html">Projeto para Android: Notificações</a>
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    Uma notificação é uma mensagem que pode ser exibida ao usuário fora da IU normal do aplicativo.
+Quando você diz ao sistema para emitir uma notificação, ela primeiro aparece como um ícone
+na <strong>área de notificação</strong>. Para ver os detalhes da notificação, o usuário abre
+a <strong>gaveta de notificação</strong>. A área de notificação e a gaveta de notificação
+são áreas controladas pelo sistema que o usuário pode visualizar a qualquer momento.
+</p>
+<img id="figure1" src="{@docRoot}images/ui/notifications/notification_area.png" height="" alt="" />
+<p class="img-caption">
+    <strong>Figura 1.</strong> Notificações na área de notificação.
+</p>
+<img id="figure2" src="{@docRoot}images/ui/notifications/notification_drawer.png" width="280px" alt="" />
+<p class="img-caption">
+    <strong>Figura 2.</strong> Notificações na gaveta de notificação.
+</p>
+
+<p class="note"><strong>Observação:</strong> exceto quando notado, este guia menciona a classe
+{@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder}
+na versão 4 da <a href="{@docRoot}tools/support-library/index.html">Biblioteca de suporte</a>.
+A classe {@link android.app.Notification.Builder Notification.Builder} foi adicionada no Android
+3.0 (API de nível 11).</p>
+
+<h2 id="Design">Considerações de projeto</h2>
+
+<p>As notificações, como parte importante da interface do usuário do Android, possuem as próprias diretrizes de projeto.
+As alterações do Material Design introduzidas no Android 5.0 (API de nível 21) são de importância
+específica e, por isso, recomenda-se revisar o treinamento do <a href="{@docRoot}training/material/index.html">Material Design</a>
+ para obter mais informações. Para saber como projetar notificações e suas interações, leia o guia de projeto 
+<a href="{@docRoot}design/patterns/notifications.html">Notificações</a>.</p>
+
+<h2 id="CreateNotification">Criação de uma notificação</h2>
+
+<p>Você especifica as ações e informações da IU para uma notificação
+no objeto {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder}.
+Para criar a própria notificação, chama-se
+{@link android.support.v4.app.NotificationCompat.Builder#build NotificationCompat.Builder.build()},
+que retorna um objeto {@link android.app.Notification} contendo suas especificações. Para emitir a notificação,
+passa-se o objeto {@link android.app.Notification} ao sistema
+chamando {@link android.app.NotificationManager#notify NotificationManager.notify()}.</p>
+
+<h3 id="Required">Conteúdo necessário da notificação</h3>
+<p>
+    Um objeto {@link android.app.Notification} <em>deve</em> conter o seguinte:
+</p>
+<ul>
+    <li>
+        Um ícone pequeno, definido por
+        {@link android.support.v4.app.NotificationCompat.Builder#setSmallIcon setSmallIcon()}
+    </li>
+    <li>
+        Um título, definido por
+        {@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()}
+    </li>
+    <li>
+        Texto de detalhes, definido por
+        {@link android.support.v4.app.NotificationCompat.Builder#setContentText setContentText()}
+    </li>
+</ul>
+<h3 id="Optional">Configurações e conteúdo opcionais da notificação</h3>
+<p>
+    Todas as outras configurações e o conteúdo da notificação são opcionais. Para saber mais sobre isso,
+    consulte as documentações de referência de {@link android.support.v4.app.NotificationCompat.Builder}.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Actions">Ações da notificação</h3>
+<p>
+    Apesar de serem opcionais, deve-se adicionar pelo menos uma ação à notificação.
+    Uma ação permite que os usuários direcionem-se diretamente da notificação
+    para uma {@link android.app.Activity} no aplicativo, onde podem visualizar um ou mais eventos
+    ou realizar outros trabalhos.
+</p>
+<p>
+    Uma notificação pode fornecer várias ações. Deve-se sempre definir a ação que será ativada
+    quando o usuário clicar na notificação. Geralmente, esta ação abre uma
+    {@link android.app.Activity} no aplicativo. É possível também adicionar botões à notificação
+    que realizem ações adicionais, como ativar a soneca de um alarme imediatamente
+    para uma mensagem de texto. Este recurso está disponível a partir do Android 4.1. Se você usar botões de ação adicionais,
+    também deverá disponibilizar a funcionalidade em uma {@link android.app.Activity} no aplicativo; consulte
+    a seção <a href="#Compatibility">Tratamento da compatibilidade</a> para obter mais informações.
+</p>
+<p>
+    Dentro de uma {@link android.app.Notification}, a própria ação é definida
+    por uma {@link android.app.PendingIntent} contendo uma
+    {@link android.content.Intent} que inicia
+    uma {@link android.app.Activity} no aplicativo. Para associar
+    a {@link android.app.PendingIntent} a um gesto, chame o método adequado
+    de {@link android.support.v4.app.NotificationCompat.Builder}. Por exemplo, se quiser iniciar
+    {@link android.app.Activity} quando o usuário clicar no texto da notificação
+    na gaveta de notificação, deve-se adicionar {@link android.app.PendingIntent} chamando
+        {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent setContentIntent()}.
+</p>
+<p>
+    Iniciar uma {@link android.app.Activity} quando o usuário clica na notificação
+    é o cenário de ação mais comum. É possível também iniciar uma {@link android.app.Activity} quando o usuário
+    dispensa uma notificação. A partir do Android 4.1, é possível iniciar
+    uma {@link android.app.Activity} a partir de um botão de ação. Para obter mais informações, leia o guia de referência
+    de {@link android.support.v4.app.NotificationCompat.Builder}.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Priority">Prioridade da notificação</h3>
+<p>
+    Se quiser, é possível definir a prioridade de uma notificação. A prioridade
+    age como uma sugestão à IU do dispositivo sobre como a notificação deve ser exibida.
+    Para definir a prioridade de uma notificação, chame {@link
+    android.support.v4.app.NotificationCompat.Builder#setPriority(int)
+    NotificationCompat.Builder.setPriority()} e passe em uma das constantes de prioridade {@link
+    android.support.v4.app.NotificationCompat}. Há cinco níveis de prioridade,
+    de {@link
+    android.support.v4.app.NotificationCompat#PRIORITY_MIN} (-2) a {@link
+    android.support.v4.app.NotificationCompat#PRIORITY_MAX} (2); se não for definida, a prioridade
+    segue o padrão de {@link
+    android.support.v4.app.NotificationCompat#PRIORITY_DEFAULT} (0).
+</p>
+<p> Para obter mais informações sobre como definir um nível de prioridade adequado, Consulte "Definição e gerenciamento corretos da prioridade das notificações"
+    no guia de projeto
+    <a href="{@docRoot}design/patterns/notifications.html">Notificações</a>.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="SimpleNotification">Criação de uma notificação simples</h3>
+<p>
+    O seguinte fragmento ilustra uma notificação simples que especifica uma atividade para abrir quando
+o usuário clica na notificação. Observe que o código cria um objeto
+    {@link android.support.v4.app.TaskStackBuilder} e usa-o para criar
+    a {@link android.app.PendingIntent} para a ação. Este padrão é explicado com mais detalhes
+    na seção <a href="#NotificationResponse">
+    Preservação da navegação ao iniciar uma atividade</a>:
+</p>
+<pre>
+NotificationCompat.Builder mBuilder =
+        new NotificationCompat.Builder(this)
+        .setSmallIcon(R.drawable.notification_icon)
+        .setContentTitle("My notification")
+        .setContentText("Hello World!");
+// Creates an explicit intent for an Activity in your app
+Intent resultIntent = new Intent(this, ResultActivity.class);
+
+// The stack builder object will contain an artificial back stack for the
+// started Activity.
+// This ensures that navigating backward from the Activity leads out of
+// your application to the Home screen.
+TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
+// Adds the back stack for the Intent (but not the Intent itself)
+stackBuilder.addParentStack(ResultActivity.class);
+// Adds the Intent that starts the Activity to the top of the stack
+stackBuilder.addNextIntent(resultIntent);
+PendingIntent resultPendingIntent =
+        stackBuilder.getPendingIntent(
+            0,
+            PendingIntent.FLAG_UPDATE_CURRENT
+        );
+mBuilder.setContentIntent(resultPendingIntent);
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// mId allows you to update the notification later on.
+mNotificationManager.notify(mId, mBuilder.build());
+</pre>
+<p>É isso. O usuário foi notificado.</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ApplyStyle">Aplicação de um layout expandido a uma notificação</h3>
+<p>
+    Para que uma notificação apareça em uma vista expandida, cria-se primeiro
+    um objeto {@link android.support.v4.app.NotificationCompat.Builder} com as opções
+    de visualização normal desejadas. Em seguida, chama-se {@link android.support.v4.app.NotificationCompat.Builder#setStyle
+    Builder.setStyle()} com um objeto de layout expandido como o argumento.
+</p>
+<p>
+    Lembre-se de que as notificações expandidas não estão disponíveis em plataformas anteriores ao Android 4.1. Para saber mais
+    sobre como tratar de notificações para Android 4.1 e plataformas anteriores, leia
+    a seção <a href="#Compatibility">Tratamento da compatibilidade</a>.
+</p>
+<p>
+    Por exemplo, o seguinte fragmento de código demonstra como alterar a notificação criada
+    no fragmento anterior para usar o layout expandido:
+</p>
+<pre>
+NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
+    .setSmallIcon(R.drawable.notification_icon)
+    .setContentTitle("Event tracker")
+    .setContentText("Events received")
+NotificationCompat.InboxStyle inboxStyle =
+        new NotificationCompat.InboxStyle();
+String[] events = new String[6];
+// Sets a title for the Inbox in expanded layout
+inboxStyle.setBigContentTitle("Event tracker details:");
+...
+// Moves events into the expanded layout
+for (int i=0; i &lt; events.length; i++) {
+
+    inboxStyle.addLine(events[i]);
+}
+// Moves the expanded layout object into the notification object.
+mBuilder.setStyle(inBoxStyle);
+...
+// Issue the notification here.
+</pre>
+
+<h3 id="Compatibility">Tratamento da compatibilidade</h3>
+
+<p>
+    Nem todos os recursos de notificação estão disponíveis para uma versão específica,
+    mesmo se os métodos que os definem estiverem na classe
+    {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} da biblioteca de suporte.
+    Por exemplo, botões de ação, que dependem das notificações expandidas, aparecem somente a partir do Android
+    4.1 ou de posteriores porque as próprias notificações expandidas estão disponíveis somente a partir
+    destas versões.
+</p>
+<p>
+    Para garantir a melhor compatibilidade, crie notificações
+    com {@link android.support.v4.app.NotificationCompat NotificationCompat} e suas subclasses,
+    particularmente {@link android.support.v4.app.NotificationCompat.Builder
+    NotificationCompat.Builder}. Além disso, siga o processo a seguir ao implementar uma notificação:
+</p>
+<ol>
+    <li>
+        Forneça toda a funcionalidade da notificação aos usuários, independentemente
+        da versão que estejam usando. Para fazer isto, verifique se toda a disponibilidade está disponível a partir de uma
+        {@link android.app.Activity} no aplicativo. Pode-se adicionar uma nova
+        {@link android.app.Activity} para fazer isto.
+        <p>
+            Por exemplo, caso queira usar
+        {@link android.support.v4.app.NotificationCompat.Builder#addAction addAction()}
+        para fornecer um controle que interrompa e inicie a reprodução de mídia, primeiro implemente
+        este controle em uma {@link android.app.Activity} no aplicativo.
+        </p>
+    </li>
+    <li>
+        Certifique-se de que todos os usuários possam acessar a funcionalidade na {@link android.app.Activity},
+        iniciando-a quando o usuário clicar na notificação. Para fazer isto,
+        crie uma {@link android.app.PendingIntent}
+        para a{@link android.app.Activity}. Chame
+        {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+        setContentIntent()} para adicionar a {@link android.app.PendingIntent} à notificação.
+    </li>
+    <li>
+        Agora, adicione os recursos de notificação expandidos que deseja usar à notificação. Lembre-se
+        de que qualquer funcionalidade adicionada também deve estar disponível na {@link android.app.Activity}
+        que é iniciada quando os usuários clicam na notificação.
+    </li>
+</ol>
+
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="Managing">Gerenciamento de notificações</h2>
+<p>
+    Quando for necessário emitir uma notificação várias vezes para o mesmo tipo de evento,
+    deve-se evitar criar uma notificação completamente nova. Em vez disso, deve-se considerar atualizar
+    uma notificação anterior, alterando e/ou adicionado alguns valores.
+</p>
+<p>
+    Por exemplo, o Gmail notifica o usuário de que novos e-mails foram recebidos aumentando a contagem
+de mensagens não lidas e adicionando um resumo de cada e-mail à notificação. Isto é chamado
+    de "acumular" a notificação. Isto é descrito com mais detalhes no guia de projeto
+    <a href="{@docRoot}design/patterns/notifications.html">Notificações</a>.
+</p>
+<p class="note">
+    <strong>Observação:</strong> este recurso do Gmail requer o layout expandido da "caixa de entrada",
+    que faz parte do recurso de notificação expandida disponível a partir do Android 4.1.
+</p>
+<p>
+    A seguinte seção descreve como atualizar as notificações e como removê-las.
+</p>
+<h3 id="Updating">Atualização de notificações</h3>
+<p>
+    Para definir uma notificação para que possa ser atualizada, deve-se emiti-la com um ID de notificação
+    chamando {@link android.app.NotificationManager#notify(int, android.app.Notification) NotificationManager.notify()}.
+    Para atualizar esta notificação após emiti-la,
+    atualize ou crie um objeto {@link android.support.v4.app.NotificationCompat.Builder},
+    compile um objeto {@link android.app.Notification} a partir dele e emita
+    a {@link android.app.Notification} com o mesmo ID usado anteriormente. Se a notificação anterior
+    ainda estiver visível, o sistema a atualizará com o conteúdo
+    do objeto {@link android.app.Notification}. Se a notificação anterior for dispensada,
+    uma nova notificação será criada.
+</p>
+<p>
+    O seguinte fragmento demonstra uma notificação que é atualizada para refletir
+    o número de eventos que ocorreram. Ele acumula a notificação, exibindo um resumo:
+</p>
+<pre>
+mNotificationManager =
+        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// Sets an ID for the notification, so it can be updated
+int notifyID = 1;
+mNotifyBuilder = new NotificationCompat.Builder(this)
+    .setContentTitle("New Message")
+    .setContentText("You've received new messages.")
+    .setSmallIcon(R.drawable.ic_notify_status)
+numMessages = 0;
+// Start of a loop that processes data and then notifies the user
+...
+    mNotifyBuilder.setContentText(currentText)
+        .setNumber(++numMessages);
+    // Because the ID remains unchanged, the existing notification is
+    // updated.
+    mNotificationManager.notify(
+            notifyID,
+            mNotifyBuilder.build());
+...
+</pre>
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Removing">Remoção de notificações</h3>
+<p>
+    As notificações permanecem visíveis até que um dos seguintes casos aconteça:
+</p>
+<ul>
+    <li>
+        O usuário dispense a notificação individualmente usando "Apagar tudo"
+    (se a notificação puder ser apagada).
+    </li>
+    <li>
+        O usuário clique na notificação
+    e chame-se {@link android.support.v4.app.NotificationCompat.Builder#setAutoCancel setAutoCancel()}
+    quando a notificação é criada.
+    </li>
+    <li>
+        Chame-se {@link android.app.NotificationManager#cancel(int) cancel()}
+    para um ID de notificação específico. Este método também exclui notificações contínuas.
+    </li>
+    <li>
+        Chame-se {@link android.app.NotificationManager#cancelAll() cancelAll()}, que remove
+todas as notificações emitidas anteriormente.
+    </li>
+</ul>
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="NotificationResponse">Preservação da navegação ao iniciar uma atividade</h2>
+<p>
+    Ao iniciar uma {@link android.app.Activity} a partir de uma notificação, deve-se preservar
+    a experiência de navegação esperada pelo usuário. Clicar em <i>Voltar</i> deve levar o usuário
+    de volta pelo fluxo de trabalho normal do aplicativo à tela Inicial, e clicar em <i>Recentes</i> deve exibir
+    a {@link android.app.Activity} como uma tarefa separada. Para preservar a experiência de navegação,
+    deve-se iniciar a {@link android.app.Activity} em uma tarefa nova. O modo de definição
+    da {@link android.app.PendingIntent} para fornecer uma tarefa nova depende da natureza
+    da {@link android.app.Activity} que está sendo iniciado. Há duas situações gerais:
+</p>
+<dl>
+    <dt>
+        Atividade comum
+    </dt>
+    <dd>
+        Inicia-se uma {@link android.app.Activity} que faz parte do fluxo de trabalho normal
+        do aplicativo. Nesta situação, defina {@link android.app.PendingIntent}
+        para iniciar uma tarefa nova e forneça a {@link android.app.PendingIntent} com uma pilha de retorno
+        que reproduza o comportamento <i>Voltar</i> normal do aplicativo.
+        <p>
+            As notificações do aplicativo do Gmail demonstram isso. Ao clicar em uma notificação
+            para uma única mensagem de e-mail, a própria mensagem será exibida. Tocar em <b>Voltar</b>
+            faz com que o usuário volte ao Gmail até a tela inicial, como se ele tivesse acessado o Gmail
+            a partir da tela inicial em vez de a partir da notificação.
+        </p>
+        <p>
+            Isto acontece independentemente do aplicativo que estava em primeiro plano
+            quando a notificação foi tocada. Por exemplo, se você estiver no Gmail escrevendo uma mensagem e clicar
+            em uma notificação de um e-mail, você acessará este e-mail imediatamente. Tocar em <i>Voltar</i>
+            leva você de volta à caixa de entrada e, em seguida, à tela inicial, em vez de levar
+            à mensagem que estava escrevendo.
+        </p>
+    </dd>
+    <dt>
+        Atividade especial
+    </dt>
+    <dd>
+        O usuário vê apenas esta {@link android.app.Activity} se for iniciada a partir de uma notificação.
+        De certo modo, a {@link android.app.Activity} estende a notificação fornecendo
+        informações que seriam difíceis de exibir na própria notificação. Para estas situações,
+        defina a {@link android.app.PendingIntent} para iniciar em uma tarefa nova. Não há necessidade
+        de criar uma pilha de retorno, pois a {@link android.app.Activity} iniciada
+        não faz parte do fluxo de atividades do aplicativo. Clicar em <i>Voltar</i> ainda levará o usuário
+        à tela inicial.
+    </dd>
+</dl>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="DirectEntry">Definição de uma atividade PendingIntent comum</h3>
+<p>
+    Para definir uma {@link android.app.PendingIntent} que inicia uma {@link android.app.Activity} de entrada
+    direta, siga estas etapas:
+</p>
+<ol>
+    <li>
+        Defina a hierarquia de {@link android.app.Activity} do aplicativo no manifesto.
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                Adicione compatibilidade com Android 4.0.3 e mais antigos. Para fazer isto, especifique o pai
+                da {@link android.app.Activity} que está iniciando adicionando um elemento
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
+                como o filho de 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>.
+                <p>
+                    Para este elemento, defina 
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a>="android.support.PARENT_ACTIVITY"</code>.
+                    Defina
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#val">android:value</a>="&lt;parent_activity_name&gt;"</code>,
+                    onde <code>&lt;parent_activity_name&gt;</code> é o valor de 
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a></code>
+                    para o elemento
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+                    pai. Veja o XML a seguir para ver um exemplo.
+                </p>
+            </li>
+            <li>
+                Adicione também compatibilidade com Android 4.1 e mais recentes. Para fazer isto, adicione o atributo
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#parent">android:parentActivityName</a></code>
+                    ao elemento
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+                    da {@link android.app.Activity} que estiver iniciando.
+            </li>
+        </ol>
+        <p>
+            O XML final deve parecer-se com isto:
+        </p>
+<pre>
+&lt;activity
+    android:name=".MainActivity"
+    android:label="&#64;string/app_name" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+&lt;activity
+    android:name=".ResultActivity"
+    android:parentActivityName=".MainActivity"&gt;
+    &lt;meta-data
+        android:name="android.support.PARENT_ACTIVITY"
+        android:value=".MainActivity"/&gt;
+&lt;/activity&gt;
+</pre>
+    </li>
+    <li>
+        Crie uma pilha de retorno com base na {@link android.content.Intent} que inicia
+        a {@link android.app.Activity}:
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                Crie a {@link android.content.Intent} para iniciar a{@link android.app.Activity}.
+            </li>
+            <li>
+                Crie um compilador de pilhas chamando {@link android.app.TaskStackBuilder#create
+                                TaskStackBuilder.create()}.
+            </li>
+            <li>
+                Adicione a pilha de retorno ao compilador de pilha chamando
+                {@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}.
+                Para cada {@link android.app.Activity} na hierarquia definida no manifesto,
+                a pilha de retorno conterá um objeto {@link android.content.Intent}
+                que inicia a {@link android.app.Activity}. Este método adiciona sinalizadores
+                    que iniciam a pilha em uma tarefa nova.
+                <p class="note">
+                    <strong>Observação:</strong> Apesar de o argumento
+                    de {@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}
+                    ser uma referência para a {@link android.app.Activity} iniciada, a chamada do método
+                    não adiciona a {@link android.content.Intent} que inicia
+                    a {@link android.app.Activity}. Em vez disso, lidamos com isto na próxima etapa.
+                </p>
+            </li>
+            <li>
+                Adicione a {@link android.content.Intent} que inicia a {@link android.app.Activity}
+                a partir da notificação chamando
+                {@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()}.
+                Passe a {@link android.content.Intent} criada na primeira etapa
+                como o argumento
+                para {@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()}.
+            </li>
+            <li>
+                Se for necessário, adicione argumentos para os objetos {@link android.content.Intent}
+                na pilha chamando {@link android.support.v4.app.TaskStackBuilder#editIntentAt
+                TaskStackBuilder.editIntentAt()}. Às vezes, isto é necessário para garantir
+                que a {@link android.app.Activity} alvo exiba dados significantes quando o usuário
+                navegar a ela usando <i>Voltar</i>.
+            </li>
+            <li>
+                Adquira uma {@link android.app.PendingIntent} para esta pilha de retorno chamando
+                {@link android.support.v4.app.TaskStackBuilder#getPendingIntent getPendingIntent()}.
+                É possível usar esta {@link android.app.PendingIntent} como o argumento
+                para {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+                setContentIntent()}.
+            </li>
+        </ol>
+     </li>
+</ol>
+<p>
+    O seguinte fragmento de código demonstra o processo:
+</p>
+<pre>
+...
+Intent resultIntent = new Intent(this, ResultActivity.class);
+TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
+// Adds the back stack
+stackBuilder.addParentStack(ResultActivity.class);
+// Adds the Intent to the top of the stack
+stackBuilder.addNextIntent(resultIntent);
+// Gets a PendingIntent containing the entire back stack
+PendingIntent resultPendingIntent =
+        stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
+...
+NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+builder.setContentIntent(resultPendingIntent);
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+mNotificationManager.notify(id, builder.build());
+</pre>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ExtendedNotification">Definição de uma atividade PendingIntent especial</h3>
+<p>
+    A seção a seguir descreve como definir uma atividade
+    {@link android.app.PendingIntent} especial.
+</p>
+<p>
+    Uma {@link android.app.Activity} especial não precisa de uma pilha de retorno, então não é necessário
+    definir sua hierarquia de {@link android.app.Activity} no manifesto
+    e chamar
+    {@link android.support.v4.app.TaskStackBuilder#addParentStack  addParentStack()} para compilar
+    uma pilha de retorno. Em vez disso, use o manifesto para definir as opções de tarefa da {@link android.app.Activity}
+    e crie a {@link android.app.PendingIntent}
+    chamando {@link android.app.PendingIntent#getActivity getActivity()}:
+</p>
+<ol>
+    <li>
+        No manifesto, adicione os seguintes atributos ao elemento
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+        para a {@link android.app.Activity}
+        <dl>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#nm">android:name</a>="<i>activityclass</i>"</code>
+            </dt>
+            <dd>
+                O nome da classe completamente qualificado da atividade.
+            </dd>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">android:taskAffinity</a>=""</code>
+            </dt>
+            <dd>
+                Combinado com o sinalizador
+                {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK}
+                que foi definido no código, isto garante que esta {@link android.app.Activity}
+                não acesse a tarefa padrão do aplicativo. Tarefas existentes
+                que tiverem a afinidade padrão do aplicativo não serão afetadas.
+            </dd>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">android:excludeFromRecents</a>="true"</code>
+            </dt>
+            <dd>
+                Exclui a nova tarefa de <i>Recentes</i>para que o usuário não
+                navegue acidentalmente de volta.
+            </dd>
+        </dl>
+        <p>
+            Este fragmento mostra o elemento:
+        </p>
+<pre>
+&lt;activity
+    android:name=".ResultActivity"
+...
+    android:launchMode="singleTask"
+    android:taskAffinity=""
+    android:excludeFromRecents="true"&gt;
+&lt;/activity&gt;
+...
+</pre>
+    </li>
+    <li>
+        Compilar e emitir a notificação:
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                Crie uma {@link android.content.Intent} que inicie
+                a {@link android.app.Activity}.
+            </li>
+            <li>
+                Defina a {@link android.app.Activity} para iniciar em uma tarefa nova e vazia
+                chamando {@link android.content.Intent#setFlags setFlags()} com os sinalizadores
+                {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK}
+                e
+                {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TASK FLAG_ACTIVITY_CLEAR_TASK}.
+            </li>
+            <li>
+                Defina quaisquer outras opções necessárias para a {@link android.content.Intent}.
+            </li>
+            <li>
+                Crie uma {@link android.app.PendingIntent} a partir da {@link android.content.Intent}
+                chamando {@link android.app.PendingIntent#getActivity getActivity()}.
+                É possível usar esta {@link android.app.PendingIntent} como o argumento
+                para {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+                setContentIntent()}.
+            </li>
+        </ol>
+    <p>
+        O seguinte fragmento de código demonstra o processo:
+    </p>
+<pre>
+// Instantiate a Builder object.
+NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+// Creates an Intent for the Activity
+Intent notifyIntent =
+        new Intent(this, ResultActivity.class);
+// Sets the Activity to start in a new, empty task
+notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+                        | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+// Creates the PendingIntent
+PendingIntent notifyPendingIntent =
+        PendingIntent.getActivity(
+        this,
+        0,
+        notifyIntent,
+        PendingIntent.FLAG_UPDATE_CURRENT
+);
+
+// Puts the PendingIntent into the notification builder
+builder.setContentIntent(notifyPendingIntent);
+// Notifications are issued by sending them to the
+// NotificationManager system service.
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// Builds an anonymous Notification object from the builder, and
+// passes it to the NotificationManager
+mNotificationManager.notify(id, builder.build());
+</pre>
+    </li>
+</ol>
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="Progress">Exibição do progresso em uma notificação</h2>
+<p>
+    As notificações podem incluir um indicador de progresso animado que exibe aos usuários
+    o status de uma operação em andamento. Se for possível estimar a duração da operação
+    e o quanto dela já foi concluído em um determinado momento, use a forma "determinada" do indicador
+    (uma barra de progresso). Se não for possível estimar a duração da operação,
+    use a forma "indeterminada" do indicador (um indicador de atividade).
+</p>
+<p>
+    Os indicadores de progresso são exibidos com a implementação da plataforma
+    da classe {@link android.widget.ProgressBar}.
+</p>
+<p>
+    Para usar o indicador de progresso em plataformas a partir do Android 4.0,
+    chame {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}. Para versões mais antigas,
+    deve-se criar o próprio layout personalizado de notificação
+    que inclua uma vista de {@link android.widget.ProgressBar}.
+</p>
+<p>
+    As seguintes seções descrevem como exibir o progresso em uma notificação
+    usando {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="FixedProgress">Exibição de um indicador de progresso de duração fixa</h3>
+<p>
+    Para exibir uma determinada barra de progresso, adicione a barra à notificação
+    chamando {@link android.support.v4.app.NotificationCompat.Builder#setProgress
+    setProgress(max, progress, false)} e, em seguida, emitindo a notificação. À medida que a operação prosseguir,
+    incremente <code>progress</code> e atualize a notificação. No término da operação,
+    <code>progress</code> deve ser igual a <code>max</code>. Uma maneira comum de chamar
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}
+    é definir <code>max</code> como 100 e, em seguida, incrementar <code>progress</code>
+    como um valor "percentual completo" para a operação.
+</p>
+<p>
+    É possível deixar a barra de progresso em exibição ou removê-la quando a operação for concluída. Em ambos os casos,
+    lembre-se de atualizar o texto da notificação para exibir que a operação foi concluída.
+    Para remover a barra de progresso,
+    chame {@link android.support.v4.app.NotificationCompat.Builder#setProgress
+    setProgress(0, 0, false)}. Por exemplo:
+</p>
+<pre>
+...
+mNotifyManager =
+        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+mBuilder = new NotificationCompat.Builder(this);
+mBuilder.setContentTitle("Picture Download")
+    .setContentText("Download in progress")
+    .setSmallIcon(R.drawable.ic_notification);
+// Start a lengthy operation in a background thread
+new Thread(
+    new Runnable() {
+        &#64;Override
+        public void run() {
+            int incr;
+            // Do the "lengthy" operation 20 times
+            for (incr = 0; incr &lt;= 100; incr+=5) {
+                    // Sets the progress indicator to a max value, the
+                    // current completion percentage, and "determinate"
+                    // state
+                    mBuilder.setProgress(100, incr, false);
+                    // Displays the progress bar for the first time.
+                    mNotifyManager.notify(0, mBuilder.build());
+                        // Sleeps the thread, simulating an operation
+                        // that takes time
+                        try {
+                            // Sleep for 5 seconds
+                            Thread.sleep(5*1000);
+                        } catch (InterruptedException e) {
+                            Log.d(TAG, "sleep failure");
+                        }
+            }
+            // When the loop is finished, updates the notification
+            mBuilder.setContentText("Download complete")
+            // Removes the progress bar
+                    .setProgress(0,0,false);
+            mNotifyManager.notify(ID, mBuilder.build());
+        }
+    }
+// Starts the thread by calling the run() method in its Runnable
+).start();
+</pre>
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ActivityIndicator">Exibição de um indicador de atividade contínua</h3>
+<p>
+    Para exibir um indicador de atividade indeterminado, adicione-o à notificação
+    com {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, true)}
+    (os dois primeiros argumentos são ignorados) e emita a notificação. O resultado é um indicador
+    que tem o mesmo estilo que uma barra de progresso, exceto que sua animação é contínua.
+</p>
+<p>
+    Emita a notificação no início da operação. A animação será executada
+    até que a notificação seja modificada. Quando a operação for concluída,
+    chame {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, false)}
+    e, em seguida, atualize a notificação para remover o indicador de atividade.
+    Sempre faça isso. Caso contrário, a animação será executada mesmo quando a operação for concluída. Lembre-se também de alterar
+    o texto da notificação para indicar que a operação foi concluída.
+</p>
+<p>
+    Para ver como os indicadores de atividade funcionam, consulte o fragmento anterior. Localize as seguintes linhas:
+</p>
+<pre>
+// Sets the progress indicator to a max value, the current completion
+// percentage, and "determinate" state
+mBuilder.setProgress(100, incr, false);
+// Issues the notification
+mNotifyManager.notify(0, mBuilder.build());
+</pre>
+<p>
+    Substitua as linhas encontradas pelas seguintes linhas:
+</p>
+<pre>
+ // Sets an activity indicator for an operation of indeterminate length
+mBuilder.setProgress(0, 0, true);
+// Issues the notification
+mNotifyManager.notify(0, mBuilder.build());
+</pre>
+
+<h2 id="metadata">Metadados de notificação</h2>
+
+<p>As notificações podem ser classificadas de acordo com os metadados atribuídos
+com os seguintes métodos {@link android.support.v4.app.NotificationCompat.Builder}:</p>
+
+<ul>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#setCategory(java.lang.String) setCategory()}
+    diz ao sistema como lidar com as notificações do aplicativo quando o dispositivo estiver no modo de Prioridade
+    (por exemplo: se a notificação representar uma chamada recebida, mensagem instantânea ou alarme).</li>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#setPriority(int) setPriority()} faz com que as notificações
+    com o campo de prioridade definido para {@code PRIORITY_MAX} ou {@code PRIORITY_HIGH}
+    apareçam em uma pequena janela flutuante se a notificação também tiver som ou vibração.</li>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#addPerson(java.lang.String) addPerson()}
+    permite a adição de uma lista de pessoas a uma notificação. O aplicativo pode usar isto para sinalizar
+    ao sistema que ele deve agrupar as notificações de pessoas específicas, ou classificar notificações
+    destas pessoas como sendo mais importantes.</li>
+</ul>
+
+<div class="figure" style="width:230px">
+  <img src="{@docRoot}images/ui/notifications/heads-up.png" alt="" width="" height="" id="figure3" />
+  <p class="img-caption">
+    <strong>Figura 3.</strong> Atividade de tela cheia exibindo uma notificação de informações prévias
+  </p>
+</div>
+
+<h2 id="Heads-up">Notificação de informações prévias</h2>
+
+<p>Com o Android 5.0 (API de nível 21), as notificações podem aparecer em uma pequena janela flutuante
+(também chamada de <em>notificação de informações prévias</em>) quando o dispositivo estiver ativo
+(ou seja, com o dispositivo desbloqueado e a tela ativada). Essas notificações
+aparecem de maneira semelhante à forma compacta da notificação, exceto que a notificação de informações prévias
+também exibe botões de ação. Os usuários podem agir
+ou dispensar a notificação de informações prévias sem deixar o aplicativo atual.</p>
+
+<p>Exemplos de condições que podem ativar uma notificação de informações prévias incluem:</p>
+
+<ul>
+  <li>A atividade do usuário estar no modo de tela cheia (o aplicativo usar
+{@link android.app.Notification#fullScreenIntent}) ou</li>
+  <li>A notificação tem alta prioridade e usa toques
+ou vibrações</li>
+</ul>
+
+<h2 id="lockscreenNotification">Notificações da tela de bloqueio</h2>
+
+<p>Com o lançamento do Android 5.0 (API de nível 21), as notificações podem aparecer
+na tela de bloqueio. O aplicativo pode usar esta funcionalidade para fornecer controles de reprodução de mídia e outras
+ações comuns. Os usuários podem escolher, acessando Configurações, se querem exibir notificações na tela de bloqueio
+e é possível designar se uma notificação do aplicativo será visível na tela de bloqueio.</p>
+
+<h3 id="visibility">Configuração de visibilidade</h3>
+
+<p>O aplicativo pode controlar o nível de detalhe visível nas notificações exibidas
+em uma tela de bloqueio segura. Chama-se {@link android.support.v4.app.NotificationCompat.Builder#setVisibility(int) setVisibility()}
+e especifica-se um dos seguintes valores:</p>
+
+<ul>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC} exibe o conteúdo completo
+da notificação.</li>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_SECRET} não exibe parte alguma
+desta notificação na tela de bloqueio.</li>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE} exibe informações básicas,
+como o ícone e o título do conteúdo da notificação, mas oculta o conteúdo completo.</li>
+</ul>
+
+<p>Quando {@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE} é definido, é possível
+fornecer também uma versão alternativa do conteúdo da notificação que oculta determinados detalhes. Por exemplo,
+um aplicativo de SMS pode exibir uma notificação que exiba <em>Você tem 3 novas mensagens de texto</em>, mas oculte
+o conteúdo e o remetente das mensagens. Para fornecer esta notificação alternativa, cria-se primeiro
+uma notificação de substituição usando {@link android.support.v4.app.NotificationCompat.Builder}. Ao criar
+o objeto de notificação privada, anexe a notificação de substituição a ele
+usando o método {@link android.support.v4.app.NotificationCompat.Builder#setPublicVersion(android.app.Notification) setPublicVersion()}
+.</p>
+
+<h3 id="controllingMedia">Controle de reprodução de mídia na tela de bloqueio</h3>
+
+<p>No Android 5.0 (API de nível 21), a tela de bloqueio deixa de exibir controles de mídia
+com base em {@link android.media.RemoteControlClient}, que foi reprovado. Em vez disso, usa-se o modelo
+{@link android.app.Notification.MediaStyle} com o método
+{@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()},
+que converte as ações em ícones clicáveis.</p>
+
+<p class="note"><strong>Observação:</strong> o modelo e o método {@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
+não estão incluídos na biblioteca de suporte. Portanto, esses recursos funcionam somente no Android 5.0
+e em versões mais recentes.</p>
+
+<p>Para exibir os controles de reprodução de mídia na tela de bloqueio no Android 5.0, defina a visibilidade
+como {@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}, como descrito acima. Em seguida,
+adicione as ações e defina o modelo {@link android.app.Notification.MediaStyle}, como descrito
+no seguinte exemplo de código:</p>
+
+<pre>
+Notification notification = new Notification.Builder(context)
+    // Show controls on lock screen even when user hides sensitive content.
+    .setVisibility(Notification.VISIBILITY_PUBLIC)
+    .setSmallIcon(R.drawable.ic_stat_player)
+    // Add media control buttons that invoke intents in your media service
+    .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0
+    .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent)  // #1
+    .addAction(R.drawable.ic_next, "Next", nextPendingIntent)     // #2
+    // Apply the media style template
+    .setStyle(new Notification.MediaStyle()
+    .setShowActionsInCompactView(1 /* #1: pause button */)
+    .setMediaSession(mMediaSession.getSessionToken())
+    .setContentTitle("Wonderful music")
+    .setContentText("My Awesome Band")
+    .setLargeIcon(albumArtBitmap)
+    .build();
+</pre>
+
+<p class="note"><strong>Observação:</strong> a reprovação de {@link android.media.RemoteControlClient}
+tem mais implicações para o controle de mídia. Consulte
+<a href="{@docRoot}about/versions/android-5.0.html#MediaPlaybackControl">Controle de reprodução de mídia</a>
+para obter mais informações sobre as novas APIs para gerenciar a sessão de mídia e o controle de reprodução.</p>
+
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="CustomNotification">Layouts de notificação personalizados</h2>
+<p>
+    A estrutura das notificações permite que um layout de notificação personalizado seja definido,
+    o que define a aparência da notificação em um objeto {@link android.widget.RemoteViews}.
+    As notificações de layout personalizado são parecidas com notificações normais, mas baseiam-se
+    em um {@link android.widget.RemoteViews} definido em um arquivo de layout XML.
+</p>
+<p>
+    A altura disponível para um layout de notificação personalizado depende da vista da notificação. Layouts de vista normal
+    são limitados a 64 dp, e layouts de vista expandida são limitados a 256 dp.
+</p>
+<p>
+    Para definir um layout de notificação personalizada, comece instanciando
+    um objeto {@link android.widget.RemoteViews} que infle um arquivo de layout XML. Em seguida,
+    em vez de chamar métodos como
+    {@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()},
+    chame {@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()}. Para definir
+    os detalhes do conteúdo na notificação personalizada, use os métodos em
+    {@link android.widget.RemoteViews} para definir os valores dos filhos da vista:
+</p>
+<ol>
+    <li>
+        Crie um layout XML para a notificação em um arquivo separado. É possível usar o nome de arquivo que desejar,
+        mas deve-se usar a extensão <code>.xml</code>
+    </li>
+    <li>
+        No aplicativo, use métodos {@link android.widget.RemoteViews} para definir os ícones
+        e o texto da notificação. Coloque este objeto {@link android.widget.RemoteViews}
+        em {@link android.support.v4.app.NotificationCompat.Builder}
+        chamando {@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()}. Evite definir
+        um {@link android.graphics.drawable.Drawable} de segundo plano
+        no objeto {@link android.widget.RemoteViews}, pois a cor do texto pode torná-lo ilegível.
+    </li>
+</ol>
+<p>
+    A classe {@link android.widget.RemoteViews} também inclui métodos que podem ser usados
+    para adicionar facilmente um {@link android.widget.Chronometer} ou uma {@link android.widget.ProgressBar}
+    ao layout da notificação. Para obter mais informações sobre como criar layouts personalizados
+    para a notificação, consulte a documentação de referência de {@link android.widget.RemoteViews}.
+</p>
+<p class="caution">
+    <strong>Atenção:</strong> ao usar um layout personalizado de notificação, certifique-se
+    de garantir que ele funcione com diferentes orientações e resoluções do dispositivo. Enquanto este aviso
+    aplica-se a todos os layouts de vistas, é muito importante para as notificações,
+    pois o espaço na gaveta da notificação é muito restrito. Não torne o layout personalizado muito complexo
+    e certifique-se de testá-lo em várias configurações.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h4>Uso de recursos de estilo para texto de notificação personalizada</h4>
+<p>
+    Sempre use recursos de estilo para o texto de uma notificação personalizada A cor de fundo
+    da notificação pode variar dentre vários dispositivos e versões e o uso de recursos de estilo
+    ajuda a lidar com isto. A partir do Android 2.3, o sistema definiu um estilo
+    para o texto do layout de notificação padrão. Se usar o mesmo estilo nos aplicativos que usam Android
+    2.3 ou mais recentes, você garantirá que o texto esteja visível em relação ao fundo da exibição.
+</p>
diff --git a/docs/html-intl/intl/pt-br/guide/topics/ui/overview.jd b/docs/html-intl/intl/pt-br/guide/topics/ui/overview.jd
new file mode 100644
index 0000000..d12bfe5
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/overview.jd
@@ -0,0 +1,71 @@
+page.title=Visão geral da IU
+@jd:body
+
+
+<p>Todos os elementos da interface do usuário em um aplicativo para Android são criados usando objetos {@link android.view.View} e
+{@link android.view.ViewGroup}. Uma {@link android.view.View} é um objeto que desenha
+algo na tela com o qual o usuário pode interagir. Um {@link android.view.ViewGroup} é um 
+objeto que contém outros objetos {@link android.view.View} (e {@link android.view.ViewGroup}) para
+definir o layout da interface.</p>
+
+<p>O Android fornece uma coleção de subclasses {@link android.view.View} e {@link
+android.view.ViewGroup} que oferecem controles de entrada comuns (como botões e campos de 
+texto) e vários modelos de layout (como um layout linear ou relativo).</p>
+
+
+<h2 id="Layout">Layout da interface do usuário</h2>
+
+<p>A interface do usuário de cada componente do aplicativo é definida usando uma hierarquia de objetos {@link
+android.view.View} e {@link android.view.ViewGroup}, como mostra a figura 1. Cada grupo de vistas
+é um recipiente invisível que organiza vistas de nível inferior, enquanto que as vistas de nível inferior podem ser
+controles de entrada ou outros widgets
+que desenham alguma parte da IU. Essa árvore hierárquica pode ser simples ou complexa, conforme necessário
+(mas a simplicidade é melhor para desempenho).</p>
+
+<img src="{@docRoot}images/viewgroup.png" alt="" />
+<p class="img-caption"><strong>Figura 1.</strong> Ilustração de uma hierarquia de vistas, que define o layout
+de uma IU.</p>
+
+<p>Para declarar o layout, é possível instanciar objetos {@link android.view.View} no código e começar a
+criar uma árvore. Mas a forma mais fácil e efetiva de definir o layout é com um arquivo XML.
+O XML oferece uma estrutura legível por humanos para o layout, similar a HTML.</p>
+
+<p>O nome de um elemento XML para uma vista é respectivo à classe do Android que ele representa. Portanto, um elemento 
+<code>&lt;TextView&gt;</code> cria um widget {@link android.widget.TextView} na IU
+e um elemento <code>&lt;LinearLayout&gt;</code> cria um grupo de vistas de {@link android.widget.LinearLayout}
+. </p>
+
+<p>Por exemplo, um layout vertical simples com uma vista de texto e um botão se parece com:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="fill_parent" 
+              android:layout_height="fill_parent"
+              android:orientation="vertical" >
+    &lt;TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="I am a TextView" />
+    &lt;Button android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="I am a Button" />
+&lt;/LinearLayout>
+</pre>
+
+<p>Ao carregar um recurso de layout no aplicativo, o Android inicializa cada nó do layout em um
+objeto em tempo de execução que pode ser usado para definir comportamentos adicionais, consultar o estado do objeto ou modificar o
+layout.</p>
+
+<p>Para obter um guia completo para criar um layout de IU, consulte <a href="declaring-layout.html">Layouts
+XML</a>.
+
+  
+<h2 id="UIComponents">Componentes da interface do usuário</h2>
+
+<p>Você não precisa criar toda a IU usando objetos {@link android.view.View} e {@link
+android.view.ViewGroup}. O Android fornece vários componentes de aplicativo que oferecem
+um layout de IU padrão para os quais basta definir o conteúdo. Esses componentes de IU
+têm um conjunto único de APIs que são descritas nos respectivos documentos, como <a href="{@docRoot}guide/topics/ui/actionbar.html">Barra de ação</a>, <a href="{@docRoot}guide/topics/ui/dialogs.html">Caixas de diálogo</a> e <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Notificações de status</a>.</p>
+
+
diff --git a/docs/html-intl/intl/pt-br/guide/topics/ui/settings.jd b/docs/html-intl/intl/pt-br/guide/topics/ui/settings.jd
new file mode 100644
index 0000000..f95966c
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/settings.jd
@@ -0,0 +1,1202 @@
+page.title=Configurações
+page.tags=preferência,preferenceactivity,preferencefragment
+
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Neste documento</h2>
+<ol>
+  <li><a href="#Overview">Visão geral</a>
+    <ol>
+      <li><a href="#SettingTypes">Preferências</a></li>
+    </ol>
+  </li>
+  <li><a href="#DefiningPrefs">Definição de preferências em XML</a>
+    <ol>
+      <li><a href="#Groups">Criação de grupos de configuração</a></li>
+      <li><a href="#Intents">Uso de intenções</a></li>
+    </ol>
+  </li>
+  <li><a href="#Activity">Criação de uma atividade de preferência</a></li>
+  <li><a href="#Fragment">Uso de fragmentos de preferência</a></li>
+  <li><a href="#Defaults">Configuração de valores padrão</a></li>
+  <li><a href="#PreferenceHeaders">Uso de cabeçalhos de preferência</a>
+    <ol>
+      <li><a href="#CreateHeaders">Criação do arquivo de cabeçalhos</a></li>
+      <li><a href="#DisplayHeaders">Exibição de cabeçalhos</a></li>
+      <li><a href="#BackCompatHeaders">Compatibilidade de versões mais antigas com cabeçalhos de preferência</a></li>
+    </ol>
+  </li>
+  <li><a href="#ReadingPrefs">Leitura de preferências</a>
+    <ol>
+      <li><a href="#Listening">Escuta de alterações de preferência</a></li>
+    </ol>
+  </li>
+  <li><a href="#NetworkUsage">Gerenciamento de uso de rede</a></li>
+  <li><a href="#Custom">Composição de uma preferência personalizada</a>
+    <ol>
+      <li><a href="#CustomSelected">Especificação da interface do usuário</a></li>
+      <li><a href="#CustomSave">Salvamento do valor da configuração</a></li>
+      <li><a href="#CustomInitialize">Inicialização do valor atual</a></li>
+      <li><a href="#CustomDefault">Fornecimento de um valor padrão</a></li>
+      <li><a href="#CustomSaveState">Salvamento e restauração do estado da preferência</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>Classes principais</h2>
+<ol>
+  <li>{@link android.preference.Preference}</li>
+  <li>{@link android.preference.PreferenceActivity}</li>
+  <li>{@link android.preference.PreferenceFragment}</li>
+</ol>
+
+
+<h2>Veja também</h2>
+<ol>
+  <li><a href="{@docRoot}design/patterns/settings.html">Guia de projeto de configurações</a></li>
+</ol>
+</div>
+</div>
+
+
+
+
+<p>Geralmente os aplicativos contêm configurações que permitem aos usuários modificar características e comportamentos do aplicativo. Por
+exemplo: alguns aplicativos permitem aos usuários especificar se as notificações estão ativadas ou especificar a frequência
+com que o aplicativo sincroniza dados com a nuvem.</p>
+
+<p>Para fornecer configurações ao aplicativo, é preciso usar
+as APIs {@link android.preference.Preference} do Android para programar uma interface coerente
+com a experiência do usuário em outros aplicativos Android (inclusive as configurações do sistema). Este documento descreve
+como programar as configurações do aplicativo por meio de APIs {@link android.preference.Preference}.</p>
+
+<div class="note design">
+<p><strong>Projeto de configurações</strong></p>
+  <p>Para obter mais informações sobre o projeto de configurações, leia o guia de projeto <a href="{@docRoot}design/patterns/settings.html">Configurações</a>.</p>
+</div>
+
+
+<img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
+<p class="img-caption"><strong>Figura 1.</strong> Capturas de tela das configurações do aplicativo Mensagens
+do Android. A seleção de um item definido por uma {@link android.preference.Preference} 
+abre uma interface para alterar a configuração.</p>
+
+
+
+
+<h2 id="Overview">Visão geral</h2>
+
+<p>Em vez de usar objetos {@link android.view.View} para criar a interface do usuário, as configurações
+são criadas por meio de várias subclasses da classe {@link android.preference.Preference}
+declaradas em um arquivo XML.</p>
+
+<p>Os objetos {@link android.preference.Preference} são as peças fundamentais de uma única
+configuração. Cada {@link android.preference.Preference} aparece como um item em uma lista e oferece a IU
+adequada para que os usuários modifiquem a configuração. Por exemplo: uma {@link
+android.preference.CheckBoxPreference} cria um item de lista que exibe uma caixa de seleção e uma {@link
+android.preference.ListPreference} cria um item que abre uma caixa de diálogo com uma lista de opções.</p>
+
+<p>Cada {@link android.preference.Preference} adicionada tem um par de valor-chave correspondente
+que o sistema usa para salvar a configuração em um arquivo
+{@link android.content.SharedPreferences} padrão para as configurações do aplicativo. Quando o usuário altera uma configuração, o sistema atualiza o valor
+correspondente no arquivo {@link android.content.SharedPreferences}. O único momento em que
+se deve interagir diretamente com o arquivo {@link android.content.SharedPreferences} associado
+é no momento de ler o valor para determinar o comportamento do aplicativo com base na configuração do usuário.</p>
+
+<p>O valor salvo em {@link android.content.SharedPreferences} para cada configuração pode ser
+um dos seguintes tipos de dados:</p>
+
+<ul>
+  <li>Boolean</li>
+  <li>Float</li>
+  <li>Int</li>
+  <li>Long</li>
+  <li>String</li>
+  <li>String {@link java.util.Set}</li>
+</ul>
+
+<p>Como a IU de configurações do aplicativo é criada com objetos {@link android.preference.Preference}
+ em vez de objetos 
+{@link android.view.View}, é preciso usar uma subclasse {@link android.app.Activity} ou 
+{@link android.app.Fragment} especializada para exibir as configurações de lista:</p>
+
+<ul>
+  <li>Se o aplicativo for compatível com versões do Android anteriores à 3.0 (nível da API 10 ou anterior), será
+necessário criar a atividade como uma extensão da classe {@link android.preference.PreferenceActivity}.</li>
+  <li>No Android 3.0 ou versões posteriores, deve-se usar um {@link android.app.Activity} tradicional
+que hospeda um {@link android.preference.PreferenceFragment} que exige as configurações do aplicativo.
+No entanto, pode-se também usar {@link android.preference.PreferenceActivity} para criar um layout de dois painéis
+para telas maiores quando há vários grupos de configurações.</li>
+</ul>
+
+<p>Veja como configurar a {@link android.preference.PreferenceActivity} e instâncias de {@link
+android.preference.PreferenceFragment} nas seções sobre a <a href="#Activity">Criação de uma atividade de preferência</a> e <a href="#Fragment">Uso
+de fragmentos de preferência</a>.</p>
+
+
+<h3 id="SettingTypes">Preferências</h3>
+
+<p>Toda configuração do aplicativo é representada por uma subclasse específica da classe {@link
+android.preference.Preference}. Cada subclasse contém um conjunto de propriedades essenciais que permitem
+especificar itens como o título da configuração e o valor padrão. Cada subclasse também oferece
+suas propriedades e interface do usuário especializadas. Por exemplo: a figura 1 ilustra uma captura de tela
+das configurações do aplicativo Mensagens. Cada item de lista na tela de configurações tem, como fundo, um objeto {@link
+android.preference.Preference} diferente.</p>
+
+<p>A seguir há algumas das preferências mais comuns:</p>
+
+<dl>
+  <dt>{@link android.preference.CheckBoxPreference}</dt>
+  <dd>Exibe um item com uma caixa de seleção para uma configuração que esteja ativada ou desativada. O valor
+salvo é um booleano (<code>true</code> se estiver selecionada).</dd>
+
+  <dt>{@link android.preference.ListPreference}</dt>
+  <dd>Abre uma caixa de diálogo com uma lista de botões de opção. O valor salvo
+pode ser qualquer um dos tipos de valor compatíveis (listados acima).</dd>
+
+  <dt>{@link android.preference.EditTextPreference}</dt>
+  <dd>Abre uma caixa de diálogo com um widget {@link android.widget.EditText}. O valor salvo é um {@link
+java.lang.String}.</dd>
+</dl>
+
+<p>Consulte a classe {@link android.preference.Preference} para ver uma lista de todas as outras subclasses e
+as propriedades correspondentes.</p>
+
+<p>É claro que as classes embutidas não acomodam todas as necessidades e o aplicativo pode exigir
+algo mais especializado. Por exemplo: a plataforma atualmente não fornece nenhuma classe {@link
+android.preference.Preference} para selecionar um número ou data. Portanto, pode ser necessário definir
+a própria subclasse {@link android.preference.Preference}. Veja mais informações na seção sobre <a href="#Custom">Composição de uma preferência personalizada</a>.</p>
+
+
+
+<h2 id="DefiningPrefs">Definição de preferências em XML</h2>
+
+<p>Embora se possa instanciar novos objetos {@link android.preference.Preference} em tempo de execução,
+deve-se definir uma lista de configurações no XML com uma hierarquia
+de objetos {@link android.preference.Preference}. Recomenda-se o uso de um arquivo XML para definir a coleção de configurações porque o arquivo
+oferece uma estrutura fácil de ler e simples de atualizar. Além disso, as configurações do aplicativo
+geralmente são predeterminadas, embora ainda seja possível modificar a coleção em tempo de execução.</p>
+
+<p>Cada subclasse {@link android.preference.Preference} pode ser declarada com um elemento XML
+correspondente ao nome da classe, como {@code &lt;CheckBoxPreference&gt;}.</p>
+
+<p>É preciso salvar o arquivo XML no diretório {@code res/xml/}. Embora seja possível nomear livremente
+o arquivo, é mais frequente vê-lo com o nome {@code preferences.xml}. Geralmente só é necessário um arquivo
+porque as ramificações na hierarquia (que abrem sua própria lista de configurações) são declaradas
+por meio de instâncias aninhadas de {@link android.preference.PreferenceScreen}.</p>
+
+<p class="note"><strong>Observação:</strong> se você deseja criar um layout de vários painéis
+para as configurações, serão necessários arquivos XML separados para cada fragmento.</p>
+
+<p>O nó raiz do arquivo XML deve ser um elemento {@link android.preference.PreferenceScreen
+&lt;PreferenceScreen&gt;}. É dentro desse elemento que se adiciona cada {@link
+android.preference.Preference}. Cada filho adicionado dentro do elemento
+{@link android.preference.PreferenceScreen &lt;PreferenceScreen&gt;} é exibido com um item
+único na lista de configurações.</p>
+
+<p>Por exemplo:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;CheckBoxPreference
+        android:key="pref_sync"
+        android:title="@string/pref_sync"
+        android:summary="@string/pref_sync_summ"
+        android:defaultValue="true" />
+    &lt;ListPreference
+        android:dependency="pref_sync"
+        android:key="pref_syncConnectionType"
+        android:title="@string/pref_syncConnectionType"
+        android:dialogTitle="@string/pref_syncConnectionType"
+        android:entries="@array/pref_syncConnectionTypes_entries"
+        android:entryValues="@array/pref_syncConnectionTypes_values"
+        android:defaultValue="@string/pref_syncConnectionTypes_default" />
+&lt;/PreferenceScreen>
+</pre>
+
+<p>Nesse exemplo, existe um {@link android.preference.CheckBoxPreference} e um {@link
+android.preference.ListPreference}. Os dois itens contêm estes três atributos:</p>
+
+<dl>
+  <dt>{@code android:key}</dt>
+  <dd>Esse atributo é necessário para preferências que persistem a um valor de dados. Ele especifica a chave
+exclusiva (uma string) que o sistema usa ao salvar o valor dessa configuração em {@link
+android.content.SharedPreferences}. 
+  <p>As únicas instâncias em que esse atributo é <em>dispensável</em> ocorrem quando a preferência é um 
+{@link android.preference.PreferenceCategory} ou {@link android.preference.PreferenceScreen},
+ou quando a preferência especifica um {@link android.content.Intent} para invocar (com um elemento <a href="#Intents">{@code &lt;intent&gt;}</a>) ou um {@link android.app.Fragment} para exibir (com um atributo <a href="{@docRoot}reference/android/preference/Preference.html#attr_android:fragment">{@code
+android:fragment}</a>).</p>
+  </dd>
+  <dt>{@code android:title}</dt>
+  <dd>Fornece à configuração um nome visível ao usuário.</dd>
+  <dt>{@code android:defaultValue}</dt>
+  <dd>Especifica o valor inicial que o sistema deve definir no arquivo {@link
+android.content.SharedPreferences}. Deve-se fornecer um valor padrão para
+todas as configurações.</dd>
+</dl>
+
+<p>Para mais informações sobre todos os outros atributos compatíveis, consulte a documentação {@link
+android.preference.Preference} (e subclasse respectiva).</p>
+
+
+<div class="figure" style="width:300px">
+  <img src="{@docRoot}images/ui/settings/settings-titles.png" alt="" />
+  <p class="img-caption"><strong>Figura 2.</strong> Definição de categorias
+com títulos. <br/><b>1.</b> A categoria é especificada pelo elemento {@link
+android.preference.PreferenceCategory &lt;PreferenceCategory&gt;}. <br/><b>2.</b> O título
+é especificado com o atributo {@code android:title}.</p>
+</div>
+
+
+<p>Quando a lista de configurações excede cerca de 10 itens, pode ser necessário adicionar títulos
+para definir grupos de configurações ou exibir esses grupos
+em uma tela separada. Essas opções são descritas nas seções a seguir.</p>
+
+
+<h3 id="Groups">Criação de grupos de configuração</h3>
+
+<p>Se você apresentar uma lista de 10 ou mais configurações,
+os usuários podem ter dificuldade de percorrê-las, compreendê-las e processá-las. Para solucionar isso,
+pode-se dividir algumas ou todas as configurações em grupos, transformando uma longa lista
+em várias listas mais curtas. Um grupo de configurações relacionadas pode ser apresentado de uma das seguintes formas:</p>
+
+<ul>
+  <li><a href="#Titles">Uso de títulos</a></li>
+  <li><a href="#Subscreens">Uso de subtelas</a></li>
+</ul>
+
+<p>Pode-se usar uma ou ambas as técnicas de agrupamento para organizar as configurações do aplicativo. Ao decidir
+qual delas usar e como dividir as configurações, deve-se seguir as diretrizes do guia
+<a href="{@docRoot}design/patterns/settings.html">Configurações</a> de Projeto do Android.</p>
+
+
+<h4 id="Titles">Uso de títulos</h4>
+
+<p>Para usar divisores com cabeçalhos entre grupos de configurações (como ilustrado na figura 2),
+coloca-se cada grupo de objetos {@link android.preference.Preference} dentro de {@link
+android.preference.PreferenceCategory}.</p>
+
+<p>Por exemplo:</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;PreferenceCategory 
+        android:title="&#64;string/pref_sms_storage_title"
+        android:key="pref_key_storage_settings">
+        &lt;CheckBoxPreference
+            android:key="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_auto_delete"
+            android:title="&#64;string/pref_title_auto_delete"
+            android:defaultValue="false"... />
+        &lt;Preference 
+            android:key="pref_key_sms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_sms_delete"... />
+        &lt;Preference 
+            android:key="pref_key_mms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_mms_delete" ... />
+    &lt;/PreferenceCategory>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h4 id="Subscreens">Uso de subtelas</h4>
+
+<p>Para usar grupos de configurações em uma subtela (como ilustrado na figura 3), coloque o grupo 
+de objetos {@link android.preference.Preference} dentro de {@link
+android.preference.PreferenceScreen}.</p>
+
+<img src="{@docRoot}images/ui/settings/settings-subscreen.png" alt="" />
+<p class="img-caption"><strong>Figura 3.</strong> Subtelas de configuração. O elemento {@code
+&lt;PreferenceScreen&gt;} cria
+um item que, quando selecionado, abre uma lista separada para exibir as configurações aninhadas.</p>
+
+<p>Por exemplo:</p>
+
+<pre>
+&lt;PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;!-- opens a subscreen of settings -->
+    &lt;PreferenceScreen
+        android:key="button_voicemail_category_key"
+        android:title="&#64;string/voicemail"
+        android:persistent="false">
+        &lt;ListPreference
+            android:key="button_voicemail_provider_key"
+            android:title="&#64;string/voicemail_provider" ... />
+        &lt;!-- opens another nested subscreen -->
+        &lt;PreferenceScreen
+            android:key="button_voicemail_setting_key"
+            android:title="&#64;string/voicemail_settings"
+            android:persistent="false">
+            ...
+        &lt;/PreferenceScreen>
+        &lt;RingtonePreference
+            android:key="button_voicemail_ringtone_key"
+            android:title="&#64;string/voicemail_ringtone_title"
+            android:ringtoneType="notification" ... />
+        ...
+    &lt;/PreferenceScreen>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h3 id="Intents">Uso de intenções</h3>
+
+<p>Em alguns casos, pode ser necessário que um item de preferência abra em um atividade diferente
+e não na tela de configuração, como um navegador da web para exibir uma página da web. Para invocar um {@link
+android.content.Intent} quando o usuário seleciona um item de preferência, adicione um elemento {@code &lt;intent&gt;}
+como filho do elemento {@code &lt;Preference&gt;} correspondente.</p>
+
+<p>Por exemplo, a seguir apresenta-se como usar um item de preferência para abrir uma página da web:</p>
+
+<pre>
+&lt;Preference android:title="@string/prefs_web_page" >
+    &lt;intent android:action="android.intent.action.VIEW"
+            android:data="http://www.example.com" />
+&lt;/Preference>
+</pre>
+
+<p>É possível criar intenções implícitas e explícitas usando os seguintes atributos:</p>
+
+<dl>
+  <dt>{@code android:action}</dt>
+    <dd>A ação a atribuir, conforme o método {@link android.content.Intent#setAction setAction()}.
+</dd>
+  <dt>{@code android:data}</dt>
+    <dd>Os dados a atribuir, conforme o método {@link android.content.Intent#setData setData()}.</dd>
+  <dt>{@code android:mimeType}</dt>
+    <dd>O tipo MIME atribuir, conforme o método {@link android.content.Intent#setType setType()}.
+</dd>
+  <dt>{@code android:targetClass}</dt>
+    <dd>A parte de classe do nome do componente, conforme o método {@link android.content.Intent#setComponent
+setComponent()}.</dd>
+  <dt>{@code android:targetPackage}</dt>
+    <dd>A parte de pacote do nome do componente, conforme o método {@link
+android.content.Intent#setComponent setComponent()}.</dd>
+</dl>
+
+
+
+<h2 id="Activity">Criação de uma atividade de preferência</h2>
+
+<p>Para exibir as configurações em uma atividade, estenda a classe {@link
+android.preference.PreferenceActivity}. É uma extensão da classe tradicional {@link
+android.app.Activity} que exibe uma lista de configurações com base em uma hierarquia de objetos {@link
+android.preference.Preference}. A {@link android.preference.PreferenceActivity}
+automaticamente persiste às configurações associadas a cada {@link
+android.preference.Preference} quando o usuário faz uma alteração.</p>
+
+<p class="note"><strong>Observação:</strong> ao desenvolver um aplicativo para Android 3.0
+ou superior, deve-se usar o {@link android.preference.PreferenceFragment}. Consulte a próxima
+seção sobre o <a href="#Fragment">Uso de fragmentos de preferência</a>.</p>
+
+<p>O mais importante é não carregar um layout de vistas durante o retorno de chamada {@link
+android.preference.PreferenceActivity#onCreate onCreate()}. Em vez disso, chama-se {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}
+para adicionar à atividade as preferências declaradas em um arquivo XML. Por exemplo: abaixo há o código mínimo
+necessário para um {@link android.preference.PreferenceActivity} funcional:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.preferences);
+    }
+}
+</pre>
+
+<p>Na verdade, esse código é suficiente para alguns aplicativos porque, assim que o usuário modifica uma preferência,
+o sistema salva as alterações em um arquivo padrão {@link android.content.SharedPreferences}
+que os componentes do outro aplicativo poderá ler quando for necessário verificar as configurações do usuário. No entanto,
+muitos aplicativos exigem um pouco mais de código para escutar as alterações que ocorrem nas preferências.
+Para informações sobre a escuda de alterações no arquivo {@link android.content.SharedPreferences},
+consulte a seção sobre <a href="#ReadingPrefs">Leitura de preferências</a>.</p>
+
+
+
+
+<h2 id="Fragment">Uso de fragmentos de preferência</h2>
+
+<p>Ao desenvolver para Android 3.0 (nível da API 11) ou versões posteriores, deve-se usar um {@link
+android.preference.PreferenceFragment} para exibir a lista de objetos {@link android.preference.Preference}.
+ Pode-se adicionar um {@link android.preference.PreferenceFragment} a qualquer atividade &mdash; não é
+necessário usar {@link android.preference.PreferenceActivity}.</p>
+
+<p>Os <a href="{@docRoot}guide/components/fragments.html">fragmentos</a> permitem uma arquitetura
+mais flexível para o aplicativo em comparação com o uso de apenas atividades para qualquer
+tipo de atividade criada. Assim, sugerimos usar {@link
+android.preference.PreferenceFragment} para controlar a exibição das configurações em vez de {@link
+android.preference.PreferenceActivity} sempre que possível.</p>
+
+<p>A implementação de {@link android.preference.PreferenceFragment} pode ser tão simples
+quanto definir o método {@link android.preference.PreferenceFragment#onCreate onCreate()} para carregar
+um arquivo de preferências com {@link android.preference.PreferenceFragment#addPreferencesFromResource
+addPreferencesFromResource()}. Por exemplo:</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Load the preferences from an XML resource
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+}
+</pre>
+
+<p>É possível adicionar esse fragmento a um {@link android.app.Activity} como se faria com qualquer outro
+{@link android.app.Fragment}. Por exemplo:</p>
+
+<pre>
+public class SettingsActivity extends Activity {
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Display the fragment as the main content.
+        getFragmentManager().beginTransaction()
+                .replace(android.R.id.content, new SettingsFragment())
+                .commit();
+    }
+}
+</pre>
+
+<p class="note"><strong>Observação:</strong> um {@link android.preference.PreferenceFragment} não tem
+seu próprio objeto {@link android.content.Context}. Se for necessário um objeto {@link android.content.Context}
+, é possível chamar {@link android.app.Fragment#getActivity()}. No entanto, tome cuidado para chamar
+{@link android.app.Fragment#getActivity()} somente quando o fragmento estiver anexado a uma atividade. Quando
+o fragmento ainda não estiver anexado, ou tiver sido separado durante o fim do seu ciclo de vida, {@link
+android.app.Fragment#getActivity()} retornará como nulo.</p>
+
+
+<h2 id="Defaults">Configuração de valores padrão</h2>
+
+<p>As preferências criadas provavelmente definem alguns comportamentos importantes do aplicativo, portanto
+é necessário inicializar o arquivo {@link android.content.SharedPreferences} associado
+com os valores padrão de cada {@link android.preference.Preference} quando o usuário abre o aplicativo
+pela primeira vez.</p>
+
+<p>A primeira coisa a fazer é especificar o valor padrão de cada objeto {@link
+android.preference.Preference}
+no arquivo XML com o atributo {@code android:defaultValue}. O valor pode ser qualquer tipo de dados
+apropriado para o objeto {@link android.preference.Preference} correspondente. Por
+exemplo:</p>
+
+<pre>
+&lt;!-- default value is a boolean -->
+&lt;CheckBoxPreference
+    android:defaultValue="true"
+    ... />
+
+&lt;!-- default value is a string -->
+&lt;ListPreference
+    android:defaultValue="@string/pref_syncConnectionTypes_default"
+    ... />
+</pre>
+
+<p>Em seguida, a partir do método {@link android.app.Activity#onCreate onCreate()} na atividade principal
+do aplicativo &mdash; e em qualquer outra atividade pela qual o usuário possa entrar no aplicativo pela
+primeira vez &mdash;, chame {@link android.preference.PreferenceManager#setDefaultValues
+setDefaultValues()}:</p>
+
+<pre>
+PreferenceManager.setDefaultValues(this, R.xml.advanced_preferences, false);
+</pre>
+
+<p>Essa chamada durante {@link android.app.Activity#onCreate onCreate()} garante que o aplicativo
+seja adequadamente inicializado com as configurações padrão, que o aplicativo pode precisar ler
+para determinar alguns comportamentos (se, por exemplo, baixará dados enquanto estiver
+em uma rede de celular).</p>
+
+<p>Esse método usa três argumentos:</p>
+<ul>
+  <li>O {@link android.content.Context} do aplicativo.</li>
+  <li>O ID de recurso do arquivo XML de preferências para o qual você deseja definir os valores padrão.</li>
+  <li>Booleano que indica se os valores padrão devem ser definidos mais de uma vez.
+<p>Quando <code>false</code>, o sistema define os valores parão somente se esse método nunca tiver
+sido chamado (ou se {@link android.preference.PreferenceManager#KEY_HAS_SET_DEFAULT_VALUES}
+no arquivo de preferências compartilhadas do valor padrão for falso).</p></li>
+</ul>
+
+<p>Enquanto o terceiro argumento estiver definido como <code>false</code>, pode-se chamar esse método com segurança
+toda vez que a atividade iniciar sem substituir as preferências salvas do usuário redefinindo-as
+para os padrões. No entanto, se ele for definido como <code>true</code>, todos os valores anteriores
+serão substituídos pelos padrões.</p>
+
+
+
+<h2 id="PreferenceHeaders">Uso de cabeçalhos de preferência</h2>
+
+<p>Em casos raros, pode ser necessário projetar as configurações de forma que a primeira tela
+exiba somente uma lista de <a href="#Subscreens">subtelas</a> (como as do aplicativo Configurações
+conforme ilustrado nas figuras 4 e 5). Ao desenvolver um projeto desse tipo para Android 3.0 ou versão posterior,
+deve-se usar um novo recurso "cabeçalhos" no Android 3.0 em vez de criar subtelas com elementos
+{@link android.preference.PreferenceScreen} aninhados.</p>
+
+<p>Para criar as configurações com cabeçalhos, é preciso:</p>
+<ol>
+  <li>Separar cada grupo de configurações em instâncias separadas de {@link
+android.preference.PreferenceFragment}. Ou seja, cada grupo de configurações precisa de um arquivo
+XML separado.</li>
+  <li>Criar um arquivo XML de cabeçalhos que lista cada grupo de configurações e declara que fragmento
+contém a lista correspondente de configurações.</li>
+  <li>Estender a classe {@link android.preference.PreferenceActivity} para hospedar as configurações.</li>
+  <li>Implementar o retorno de chamada {@link
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} para especificar
+o arquivo de cabeçalhos.</li>
+</ol>
+
+<p>Um grande benefício de usar esse modelo é que {@link android.preference.PreferenceActivity}
+automaticamente apresenta o layout de dois painéis ilustrado na figura 4 ao executar em telas grandes.</p>
+
+<p>Mesmo se o aplicativo for compatível com versões de Android anteriores à 3.0, é possível programar
+o aplicativo para usar {@link android.preference.PreferenceFragment} para uma apresentação em dois painéis
+em dispositivos mais novos e ser compatível com a hierarquia tradicional multitelas
+em dispositivos mais antigos (veja a seção sobre <a href="#BackCompatHeaders">Compatibilidade de versões
+mais antigas com cabeçalhos de preferência</a>).</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-tablet.png" alt="" />
+<p class="img-caption"><strong>Figura 4.</strong> Layout de dois painéis com cabeçalhos. <br/><b>1.</b> Os cabeçalhos
+são definidos com um arquivo XML de cabeçalhos. <br/><b>2.</b> Cada grupo de configurações é definido por um
+{@link android.preference.PreferenceFragment} especificado por um elemento {@code &lt;header&gt;}
+no arquivo de cabeçalhos.</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-handset.png" alt="" />
+<p class="img-caption"><strong>Figura 5.</strong> Um dispositivo celular com cabeçalhos de configuração. Quando
+um item é selecionado o {@link android.preference.PreferenceFragment} associado substitui
+os cabeçalhos.</p>
+
+
+<h3 id="CreateHeaders" style="clear:left">Criação do arquivo de cabeçalhos</h3>
+
+<p>Cada grupo de configurações na lista de cabeçalhos é especificado por um único elemento {@code &lt;header&gt;}
+dentro de um elemento raiz {@code &lt;preference-headers&gt;}. Por exemplo:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;!-- key/value pairs can be included as arguments for the fragment. -->
+        &lt;extra android:name="someKey" android:value="someHeaderValue" />
+    &lt;/header>
+&lt;/preference-headers>
+</pre>
+
+<p>Com o atributo {@code android:fragment}, cada cabeçalho declara uma instância de {@link
+android.preference.PreferenceFragment} que deve abrir quando o usuário selecionar o cabeçalho.</p>
+
+<p>O elemento {@code &lt;extras&gt;} permite passar os pares de valores-chave para o fragmento em um {@link
+android.os.Bundle}. O fragmento pode recuperar os argumentos chamando {@link
+android.app.Fragment#getArguments()}. Há vários motivos para passar argumentos ao fragmento,
+mas um bom motivo é reutilizar a mesma subclasse de {@link
+android.preference.PreferenceFragment} para cada grupo e usar o argumento para especificar
+o arquivo XML de preferências que o fragmento deve carregar.</p>
+
+<p>Por exemplo, a seguir há um fragmento que pode ser reutilizado em vários grupos de configurações, quando
+cada cabeçalho define um argumento {@code &lt;extra&gt;} com a chave {@code "settings"}:</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        String settings = getArguments().getString("settings");
+        if ("notifications".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_wifi);
+        } else if ("sync".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_sync);
+        }
+    }
+}
+</pre>
+
+
+
+<h3 id="DisplayHeaders">Exibição de cabeçalhos</h3>
+
+<p>Para exibir os cabeçalhos de preferência, é preciso implementar o método de retorno de chamada {@link
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} e chamar 
+{@link android.preference.PreferenceActivity#loadHeadersFromResource
+loadHeadersFromResource()}. Por exemplo:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onBuildHeaders(List&lt;Header> target) {
+        loadHeadersFromResource(R.xml.preference_headers, target);
+    }
+}
+</pre>
+
+<p>Quando o usuário seleciona um item de uma lista de cabeçalhos, o sistema abre o {@link
+android.preference.PreferenceFragment} associado.</p>
+
+<p class="note"><strong>Observação:</strong> ao usar cabeçalhos de preferência, a subclasse de {@link
+android.preference.PreferenceActivity} não precisa implementar o método {@link
+android.preference.PreferenceActivity#onCreate onCreate()} porque a única tarefa
+necessária para a atividade é carregar os cabeçalhos.</p>
+
+
+<h3 id="BackCompatHeaders">Compatibilidade de versões mais antigas com cabeçalhos de preferência</h3>
+
+<p>Se o aplicativo for compatível com versões de Android anteriores à 3.0, ainda será possível usar cabeçalhos
+para fornecer um layout em dois painéis ao executar no Android 3.0 e versões posteriores. Basta criar um arquivo XML de preferências
+adicional que usa elementos básicos {@link android.preference.Preference
+&lt;Preference&gt;} que se comportam como os itens de cabeçalho (para uso das versões mais antigas
+do Android).</p>
+
+<p>No entanto, em vez de abrir um novo {@link android.preference.PreferenceScreen}, cada elemento {@link
+android.preference.Preference &lt;Preference&gt;} envia um {@link android.content.Intent}
+ao {@link android.preference.PreferenceActivity} que especifica que arquivo XML de preferência
+carregar.</p>
+
+<p>Por exemplo, abaixo há um arquivo XML de cabeçalhos de preferência usado no Android 3.0
+e posterior ({@code res/xml/preference_headers.xml}):</p> 
+
+<pre>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" />
+&lt;/preference-headers>
+</pre>
+
+<p>E apresenta-se também um arquivo de preferências que fornece os mesmos cabeçalhos de versões de Android
+mais antigas que a 3.0 ({@code res/xml/preference_headers_legacy.xml}):</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;Preference 
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one"  >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_ONE" />
+    &lt;/Preference>
+    &lt;Preference 
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_TWO" />
+    &lt;/Preference>
+&lt;/PreferenceScreen>
+</pre>
+
+<p>Como a compatibilidade com {@code &lt;preference-headers&gt;} foi adicionada no Android 3.0, o sistema chama
+{@link android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} em seu {@link
+android.preference.PreferenceActivity} somente ao executar em Androd 3.0 ou posterior. Para carregar
+o arquivo de cabeçalhos de “legado" ({@code preference_headers_legacy.xml}), é preciso verificar a versãodo Android
+e, se a versão for mais antiga que o Android 3.0 ({@link
+android.os.Build.VERSION_CODES#HONEYCOMB}), chama {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}
+para carregar o arquivo de cabeçalho legado. Por exemplo:</p>
+
+<pre>
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    ...
+
+    if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+
+// Called only on Honeycomb and later
+&#64;Override
+public void onBuildHeaders(List&lt;Header> target) {
+   loadHeadersFromResource(R.xml.preference_headers, target);
+}
+</pre>
+
+<p>Depois só resta tratar o {@link android.content.Intent} passado para a atividade
+para identificar que arquivo de preferências carregar. Portanto, para recuperar a ação da intenção e compará-la
+com strings de ações conhecidas usadas nas tags de {@code &lt;intent&gt;} do XML de preferências:</p>
+
+<pre>
+final static String ACTION_PREFS_ONE = "com.example.prefs.PREFS_ONE";
+...
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+
+    String action = getIntent().getAction();
+    if (action != null &amp;&amp; action.equals(ACTION_PREFS_ONE)) {
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+
+    else if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+</pre>
+
+<p>Observe que chamadas consecutivas a {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}
+empilharão todas as preferências em uma única lista, portanto certifique-se de que seja chamado somente uma vez, encadeando
+as condições com declarações else-if.</p>
+
+
+
+
+
+<h2 id="ReadingPrefs">Leitura de preferências</h2>
+
+<p>Por padrão, todas as preferências do aplicativo são salvas em um arquivo acessível de qualquer lugar
+dentro do aplicativo chamando o método estático {@link
+android.preference.PreferenceManager#getDefaultSharedPreferences
+PreferenceManager.getDefaultSharedPreferences()}. Isso retorna o objeto {@link
+android.content.SharedPreferences} que contém todos os pares de valores-chave associados
+aos objetos {@link android.preference.Preference} usados em {@link
+android.preference.PreferenceActivity}.</p>
+
+<p>Por exemplo, abaixo apresenta-se como ler um dos valores de preferência de outra atividade
+no aplicativo:</p>
+
+<pre>
+SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
+String syncConnPref = sharedPref.getString(SettingsActivity.KEY_PREF_SYNC_CONN, "");
+</pre>
+
+
+
+<h3 id="Listening">Escuta de alterações de preferência</h3>
+
+<p>Há alguns motivos pelos quais pode ser necessário ser notificado assim que o usuário altera
+uma das preferências. Para receber um retorno de chamada quando acontece uma alteração em alguma das preferências,
+implemente a interface {@link android.content.SharedPreferences.OnSharedPreferenceChangeListener
+SharedPreference.OnSharedPreferenceChangeListener} e registre a escuta
+para o objeto {@link android.content.SharedPreferences} chamando {@link
+android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
+registerOnSharedPreferenceChangeListener()}.</p>
+
+<p>A interface tem somente um método de retorno de chamada, {@link
+android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged
+onSharedPreferenceChanged()}, e pode ser mais fácil implementar a interface como parte
+da atividade. Por exemplo:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity
+                              implements OnSharedPreferenceChangeListener {
+    public static final String KEY_PREF_SYNC_CONN = "pref_syncConnectionType";
+    ...
+
+    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
+        String key) {
+        if (key.equals(KEY_PREF_SYNC_CONN)) {
+            Preference connectionPref = findPreference(key);
+            // Set summary to be the user-description for the selected value
+            connectionPref.setSummary(sharedPreferences.getString(key, ""));
+        }
+    }
+}
+</pre>
+
+<p>Nesse exemplo, o método verifica se a configuração alterada se destina a uma chave de preferência conhecida. Ele
+chama {@link android.preference.PreferenceActivity#findPreference findPreference()} para obter
+o objeto {@link android.preference.Preference} alterado para que possa modificar o sumário
+do item como uma descrição da seleção do usuário. Ou seja, quando a configuração for uma {@link
+android.preference.ListPreference} ou outra configuração de múltipla escolha, deve-se chamar {@link
+android.preference.Preference#setSummary setSummary()} quando a configuração for alterada para exibir
+o status atual (como a configuração Suspensão mostrada na figura 5).</p>
+
+<p class="note"><strong>Observação:</strong> conforme descrito no documento do Projeto para Android sobre <a href="{@docRoot}design/patterns/settings.html">Configurações</a>, recomendamos atualizar
+o sumário de {@link android.preference.ListPreference} a cada vez que o usuário alterar a preferência
+para descrever a configuração atual.</p>
+
+<p>Para um gerenciamento adequado do ciclo de vida na atividade, recomendamos registrar e remover o registro
+de {@link android.content.SharedPreferences.OnSharedPreferenceChangeListener} durante os retornos de chamada de {@link
+android.app.Activity#onResume} e {@link android.app.Activity#onPause} respectivamente:</p>
+
+<pre>
+&#64;Override
+protected void onResume() {
+    super.onResume();
+    getPreferenceScreen().getSharedPreferences()
+            .registerOnSharedPreferenceChangeListener(this);
+}
+
+&#64;Override
+protected void onPause() {
+    super.onPause();
+    getPreferenceScreen().getSharedPreferences()
+            .unregisterOnSharedPreferenceChangeListener(this);
+}
+</pre>
+
+<p class="caution"><strong>Atenção:</strong> ao chamar {@link
+android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
+registerOnSharedPreferenceChangeListener()}, o gerenciador de preferências
+não armazena atualmente uma referência à escuta. É preciso armazenar uma referência
+forte à escuta, senão ela será suscetível à coleta de lixo. Recomendamos
+manter uma referência à escuta nos dados de instância de um objeto
+que existirá enquanto a escuta for necessária.</p>
+
+<p>Por exemplo: no código a seguir, o autor da chamada não mantém nenhuma
+referência à escuta. Como resultado, a escuta estará sujeita à coleta de lixo
+e falhará futuramente em algum momento indeterminado:</p>
+
+<pre>
+prefs.registerOnSharedPreferenceChangeListener(
+  // Bad! The listener is subject to garbage collection!
+  new SharedPreferences.OnSharedPreferenceChangeListener() {
+  public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+    // listener implementation
+  }
+});
+</pre>
+
+<p>Em vez disso, armazene uma referência à escuta nos dados de instância de um objeto
+que existirá enquanto a escuta for necessária:</p>
+
+<pre>
+SharedPreferences.OnSharedPreferenceChangeListener listener =
+    new SharedPreferences.OnSharedPreferenceChangeListener() {
+  public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+    // listener implementation
+  }
+};
+prefs.registerOnSharedPreferenceChangeListener(listener);
+</pre>
+
+<h2 id="NetworkUsage">Gerenciamento de uso de rede</h2>
+
+
+<p>A partir do Android 4.0, o aplicativo Configurações do sistema permite aos usuários ver o quanto
+de dados de rede que os aplicativos usam em primeiro e segundo plano. Portanto, os usuários
+podem desativar os dados em segundo plano de aplicativos individuais. Para evitar que os usuários desativem
+o acesso do aplicativo a dados em segundo plano, deve-se usar a conexão de dados de forma eficiente
+e permitir aos usuários refinar o uso de dados do aplicativo por meio das configurações do aplicativo.<p>
+
+<p>Por exemplo: deve-se permitir ao usuário controlar a frequência de sincronização dos dados do aplicativo para
+uploads/downloads somente quando estiver em Wi-Fi, o aplicativo usar dados em deslocamento etc. Com esses
+controles disponíveis para eles, é bem menos provável que os usuários desativem o acesso do aplicativo a dados
+quando eles se aproximam dos limites que definem nas Configurações do sistema porque, em vez disso, podem controlar
+precisamente a quantidade de dados que o aplicativo usa.</p>
+
+<p>Depois de adicionadas as preferências necessárias em {@link android.preference.PreferenceActivity}
+para controlar os hábitos de dados do aplicativo, deve-se adicionar um filtro de intenções para {@link
+android.content.Intent#ACTION_MANAGE_NETWORK_USAGE} no arquivo de manifesto. Por exemplo:</p>
+
+<pre>
+&lt;activity android:name="SettingsActivity" ... >
+    &lt;intent-filter>
+       &lt;action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />
+       &lt;category android:name="android.intent.category.DEFAULT" />
+    &lt;/intent-filter>
+&lt;/activity>
+</pre>
+
+<p>Esse filtro de intenções indica ao sistema que se trata da atividade que controla
+o uso de dados do aplicativo. Assim, quando o usuário inspeciona a quantidade de dados que o aplicativo está usando
+no aplicativo Configurações do sistema, um botão <em>Exibir configurações de aplicativo</em> fica disponível e inicia
+{@link android.preference.PreferenceActivity} para que o usuário refine a quantidade de dados que
+o aplicativo usa.</p>
+
+
+
+
+
+
+
+<h2 id="Custom">Composição de uma preferência personalizada</h2>
+
+<p>A estrutura do Android contém uma variedade de subclasses {@link android.preference.Preference} que permitem
+criar uma IU com diferentes tipos de configurações.
+No entanto, pode ser necessário descobrir uma configuração pra a qual não há nenhuma solução embutida,
+como um seletor de números ou seletor de datas. Nesse caso, será preciso criar uma preferência personalizada, estendendo
+a classe {@link android.preference.Preference} ou uma das outras subclasses.</p>
+
+<p>Ao estender a classe {@link android.preference.Preference}, há algumas coisas importantes
+a fazer:</p>
+
+<ul>
+  <li>Especificar a interface do usuário exibida quando o usuário seleciona as configurações.</li>
+  <li>Salvar os valores da configuração conforme apropriado.</li>
+  <li>Inicializar {@link android.preference.Preference} com o valor atual (ou padrão)
+quando ela é exibida.</li>
+  <li>Fornecer o valor padrão quando solicitado pelo sistema.</li>
+  <li>Se {@link android.preference.Preference} fornece sua própria IU (como uma caixa de diálogo, por exemplo), salve
+e restaure o estado para tratar de alterações de ciclo de vida (como quando o usuário gira a tela).</li>
+</ul>
+
+<p>As seções a seguir descrevem como executar cada uma dessas tarefas.</p>
+
+
+
+<h3 id="CustomSelected">Especificação da interface do usuário</h3>
+
+  <p>Se a classe {@link android.preference.Preference} for estendida, será preciso implementar
+{@link android.preference.Preference#onClick()} para definir a ação que ocorre quando
+o usuário a seleciona. No entanto, a maioria das configurações personalizadas estendem {@link android.preference.DialogPreference}
+para exibir uma caixa de diálogo, o que simplifica o procedimento. Quando se estende {@link
+android.preference.DialogPreference}, é preciso chamar {@link
+android.preference.DialogPreference#setDialogLayoutResource setDialogLayoutResourcs()} na classe
+do construtor para especificar o layout da caixa de diálogo.</p>
+
+  <p>Por exemplo, eis o construtor de um {@link
+android.preference.DialogPreference} personalizado que declara o layout e especifica o texto dos botões padrão
+da caixa de diálogo positiva e negativa:</p>
+
+<pre>
+public class NumberPickerPreference extends DialogPreference {
+    public NumberPickerPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        
+        setDialogLayoutResource(R.layout.numberpicker_dialog);
+        setPositiveButtonText(android.R.string.ok);
+        setNegativeButtonText(android.R.string.cancel);
+        
+        setDialogIcon(null);
+    }
+    ...
+}
+</pre>
+
+
+
+<h3 id="CustomSave">Salvamento do valor da configuração</h3>
+
+<p>Para salvar um valor da configuração a qualquer momento, chame um dos métodos {@code persist*()} da classe {@link
+android.preference.Preference}, como {@link
+android.preference.Preference#persistInt persistInt()} se o valor da configuração for um inteiro
+ou {@link android.preference.Preference#persistBoolean persistBoolean()} para salvar um booleano.</p>
+
+<p class="note"><strong>Observação:</strong> cada {@link android.preference.Preference} pode salvar somente
+um tipo de dados, portanto é preciso usar o método {@code persist*()} adequado para o tipo de dados usado pela
+{@link android.preference.Preference} personalizada.</p>
+
+<p>Quando se opta por persistir, a configuração pode depender da classe {@link
+android.preference.Preference} estendida. Se {@link
+android.preference.DialogPreference} for estendida, deve-se persistir o valor somente quando a caixa de diálogo
+fecha devido a um resultado positivo (o usuário seleciona o botão "OK").</p>
+
+<p>Quando uma {@link android.preference.DialogPreference} fecha, o sistema chama o método {@link
+android.preference.DialogPreference#onDialogClosed onDialogClosed()}. O método contém um argumento
+booleano que especifica se o resultado do usuário é "positivo" &mdash; se o valor é
+<code>true</code> e, em seguida, o usuário selecionou o botão positivo e você deve salvar o novo valor. Por
+exemplo:</p>
+
+<pre>
+&#64;Override
+protected void onDialogClosed(boolean positiveResult) {
+    // When the user selects "OK", persist the new value
+    if (positiveResult) {
+        persistInt(mNewValue);
+    }
+}
+</pre>
+
+<p>Nesse exemplo, <code>mNewValue</code> é um membro da classe que retém o valor atual
+da configuração. A chamada de {@link android.preference.Preference#persistInt persistInt()} salva o valor
+no arquivo {@link android.content.SharedPreferences} (usando automaticamente a chave
+especificada no arquivo XML dessa {@link android.preference.Preference}).</p>
+
+
+<h3 id="CustomInitialize">Inicialização do valor atual</h3>
+
+<p>Quando o sistema adiciona o {@link android.preference.Preference} à tela, ele chama
+{@link android.preference.Preference#onSetInitialValue onSetInitialValue()} para notificar
+se a configuração tem um valor persistido. Se não houver valor persistido, essa chamada fornece
+o valor padrão.</p>
+
+<p>O método {@link android.preference.Preference#onSetInitialValue onSetInitialValue()} passa
+um booleano, <code>restorePersistedValue</code>, para indicar se um valor já foi persistido
+para a configuração. Se for <code>true</code>, deve-se recuperar o valor persistindo chamando-se
+ um dos métodos {@code getPersisted*()} da classe {@link
+android.preference.Preference}, como {@link
+android.preference.Preference#getPersistedInt getPersistedInt()} para um valor inteiro. Geralmente
+se recupera o valor persistido para atualizar adequadamente a IU de forma a refletir
+o valor salvo anteriormente.</p>
+
+<p>Se <code>restorePersistedValue</code> for <code>false</code>, deve-se
+usar o valor padrão passado no segundo argumento.</p>
+
+<pre>
+&#64;Override
+protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
+    if (restorePersistedValue) {
+        // Restore existing state
+        mCurrentValue = this.getPersistedInt(DEFAULT_VALUE);
+    } else {
+        // Set default state from the XML attribute
+        mCurrentValue = (Integer) defaultValue;
+        persistInt(mCurrentValue);
+    }
+}
+</pre>
+
+<p>Cada método {@code getPersisted*()} pega um argumento que especifica o valor
+padrão a usar caso não haja nenhum valor persistido ou se a chave não existir. No
+exemplo acima, uma constante local é usada para especificar o valor padrão se {@link
+android.preference.Preference#getPersistedInt getPersistedInt()} não puder retornar um valor persistido.</p>
+
+<p class="caution"><strong>Atenção:</strong> <strong>não</strong> é possível usar
+<code>defaultValue</code> como valor padrão no método {@code getPersisted*()} porque
+seu valor é sempre nulo quando <code>restorePersistedValue</code> é <code>true</code>.</p>
+
+
+<h3 id="CustomDefault">Fornecimento de um valor padrão</h3>
+
+<p>Se a instância da classe {@link android.preference.Preference} especificar um valor padrão
+(com o atributo {@code android:defaultValue}),
+o sistema chama {@link android.preference.Preference#onGetDefaultValue
+onGetDefaultValue()} quando instancia o objeto para recuperar o valor. É preciso
+implementar esse método para que o sistema salve o valor padrão em {@link
+android.content.SharedPreferences}. Por exemplo:</p>
+
+<pre>
+&#64;Override
+protected Object onGetDefaultValue(TypedArray a, int index) {
+    return a.getInteger(index, DEFAULT_VALUE);
+}
+</pre>
+
+<p>Os argumentos do método oferecem todo o necessário: a matriz de atributos e a posição
+do índice do {@code android:defaultValue}, que é preciso recuperar. É preciso implementar esse método
+para extrair o valor padrão do atributo porque deve-se especificar um valor padrão
+local para o atributo caso o valor seja indefinido.</p>
+
+
+
+<h3 id="CustomSaveState">Salvamento e restauração do estado da preferência</h3>
+
+<p>Como um {@link android.view.View} em um layout, a subclasse {@link android.preference.Preference}
+é responsável por salvar e restaurar seu estado caso a atividade ou fragmento seja
+reiniciado (como ocorre quando o usuário gira a tela). Para salvar e restaurar
+adequadamente o estado da classe {@link android.preference.Preference}, é preciso implementar
+os métodos de retorno de chamada do ciclo de vida {@link android.preference.Preference#onSaveInstanceState
+onSaveInstanceState()} e {@link
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()}.</p>
+
+<p>O estado de {@link android.preference.Preference} é definido por um objeto que implementa
+a interface {@link android.os.Parcelable}. A estrutura do Android fornece esse objeto
+como um ponto inicial para definir o objeto de estado: a classe {@link
+android.preference.Preference.BaseSavedState}.</p>
+
+<p>Para definir como a classe {@link android.preference.Preference} salva seu estado, deve-se estender
+a classe {@link android.preference.Preference.BaseSavedState}. É preciso substituir
+alguns métodos e definir o objeto {@link android.preference.Preference.BaseSavedState#CREATOR}.
+</p>
+
+<p>Na maioria dos aplicativos, é possível copiar a implementação a seguir e simplesmente alterar as linhas
+que tratam o {@code value} se a subclasse {@link android.preference.Preference} salvar um tipo
+de dados que não seja um inteiro.</p>
+
+<pre>
+private static class SavedState extends BaseSavedState {
+    // Member that holds the setting's value
+    // Change this data type to match the type saved by your Preference
+    int value;
+
+    public SavedState(Parcelable superState) {
+        super(superState);
+    }
+
+    public SavedState(Parcel source) {
+        super(source);
+        // Get the current preference's value
+        value = source.readInt();  // Change this to read the appropriate data type
+    }
+
+    &#64;Override
+    public void writeToParcel(Parcel dest, int flags) {
+        super.writeToParcel(dest, flags);
+        // Write the preference's value
+        dest.writeInt(value);  // Change this to write the appropriate data type
+    }
+
+    // Standard creator object using an instance of this class
+    public static final Parcelable.Creator&lt;SavedState> CREATOR =
+            new Parcelable.Creator&lt;SavedState>() {
+
+        public SavedState createFromParcel(Parcel in) {
+            return new SavedState(in);
+        }
+
+        public SavedState[] newArray(int size) {
+            return new SavedState[size];
+        }
+    };
+}
+</pre>
+
+<p>Com a implementação acima de {@link android.preference.Preference.BaseSavedState} adicionada
+ao aplicativo (geralmente como uma subclasse da subclasse {@link android.preference.Preference}),
+é preciso implementar os métodos {@link android.preference.Preference#onSaveInstanceState
+onSaveInstanceState()} e {@link
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()}
+da subclasse {@link android.preference.Preference}.</p>
+
+<p>Por exemplo:</p>
+
+<pre>
+&#64;Override
+protected Parcelable onSaveInstanceState() {
+    final Parcelable superState = super.onSaveInstanceState();
+    // Check whether this Preference is persistent (continually saved)
+    if (isPersistent()) {
+        // No need to save instance state since it's persistent,
+        // use superclass state
+        return superState;
+    }
+
+    // Create instance of custom BaseSavedState
+    final SavedState myState = new SavedState(superState);
+    // Set the state's value with the class member that holds current
+    // setting value
+    myState.value = mNewValue;
+    return myState;
+}
+
+&#64;Override
+protected void onRestoreInstanceState(Parcelable state) {
+    // Check whether we saved the state in onSaveInstanceState
+    if (state == null || !state.getClass().equals(SavedState.class)) {
+        // Didn't save the state, so call superclass
+        super.onRestoreInstanceState(state);
+        return;
+    }
+
+    // Cast state to custom BaseSavedState and pass to superclass
+    SavedState myState = (SavedState) state;
+    super.onRestoreInstanceState(myState.getSuperState());
+    
+    // Set this Preference's widget to reflect the restored state
+    mNumberPicker.setValue(myState.value);
+}
+</pre>
+
diff --git a/docs/html-intl/intl/pt-br/guide/topics/ui/ui-events.jd b/docs/html-intl/intl/pt-br/guide/topics/ui/ui-events.jd
new file mode 100644
index 0000000..e0ace1d
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/guide/topics/ui/ui-events.jd
@@ -0,0 +1,291 @@
+page.title=Eventos de entrada
+parent.title=Interface do usuário
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Neste documento</h2>
+  <ol>
+    <li><a href="#EventListeners">Escutas de evento</a></li>
+    <li><a href="#EventHandlers">Manipuladores de evento</a></li>
+    <li><a href="#TouchMode">Modo de toque</a></li>
+    <li><a href="#HandlingFocus">Tratamento de foco</a></li>
+  </ol>
+
+</div>
+</div>
+
+<p>No Android, há mais de uma maneira de interceptar os eventos da interação de um usuário com o aplicativo.
+Ao considerar os eventos dentro da interface do usuário, a abordagem é capturar os eventos
+de um objeto de View específico com o qual o usuário interage. A classe View fornece os meios para fazer isto.</p>
+
+<p>Dentro das várias classes View que você usará para compor o layout, é possível notar vários métodos
+públicos de retorno de chamada que parecem úteis para eventos de IU. Esses métodos são chamados pela estrutura do Android quando
+a ação respectiva ocorre neste objeto. Por exemplo, quando uma View (como um botão) é tocada,
+o método <code>onTouchEvent()</code> é chamado neste objeto. No entanto, para interceptar isto, você deve estender
+a classe e substituir o método. No entanto, estender todos os objetos de View
+para lidar com tal evento não seria algo prático. É por isso que a classe View também contém
+uma coleção de interfaces aninhadas com retornos de chamada que podem ser definidas com muito mais facilidade. Essas interfaces,
+chamadas de <a href="#EventListeners">escutas de evento</a>, são a sua passagem para capturar a interação do usuário com a IU.</p>
+
+<p>Geralmente, as escutas de evento são usadas para escutar a interação do usuário.
+No entanto, há casos em que você pode querer estender uma classe View para criar um componente personalizado. 
+Talvez você queira estender a classe {@link android.widget.Button}
+para deixar algo mais extravagante. Neste caso, você poderá definir os comportamentos de evento padrão
+para a classe usando <a href="#EventHandlers">manipuladores de evento</a>.</p>
+
+
+<h2 id="EventListeners">Escutas de evento</h2>
+
+<p>Uma escuta de evento é uma interface na classe {@link android.view.View} que contém
+um único método de retorno de chamada. Esses métodos serão chamados pela estrutura do Android, quando a View para a qual a escuta
+estiver registrada for ativada pela interação do usuário com o item na IU.</p>
+
+<p>Inclusos nas interfaces da escuta de evento estão os seguintes métodos de retorno de chamada:</p>
+
+<dl>
+  <dt><code>onClick()</code></dt>
+    <dd>De {@link android.view.View.OnClickListener}. 
+    Isto é chamado quando o usuário toca no item
+    (no modo de toque), ou atribui foco ao item com as teclas de navegação ou cursor de bola
+    e pressiona a tecla "enter" adequada ou pressiona o cursor de bola.</dd>
+  <dt><code>onLongClick()</code></dt>
+    <dd>De {@link android.view.View.OnLongClickListener}. 
+    Isto é chamado quando o usuário toca e mantém o item pressionado (no modo de toque),
+ ou atribui foco ao item com as teclas de navegação ou cursor de bola
+    e mantém pressionada a tecla "enter" adequada ou o cursor de bola (por um segundo).</dd>
+  <dt><code>onFocusChange()</code></dt>
+    <dd>De {@link android.view.View.OnFocusChangeListener}. 
+    Isto é chamado quando o usuário navega no ou do item, usando as teclas de navegação ou cursor de bola.</dd>
+  <dt><code>onKey()</code></dt>
+    <dd>De {@link android.view.View.OnKeyListener}. 
+    Isto é chamado quando o usuário está com foco no item ou solta uma tecla de hardware no dispositivo.</dd>
+  <dt><code>onTouch()</code></dt>
+    <dd>De {@link android.view.View.OnTouchListener}. 
+    Isto é chamado quando o usuário realiza uma ação qualificada como um toque de evento, incluindo o pressionamento, a liberação,
+    ou qualquer outro gesto de movimento na tela (dentro dos limites do item).</dd>
+  <dt><code>onCreateContextMenu()</code></dt>
+    <dd>De {@link android.view.View.OnCreateContextMenuListener}. 
+    Isto é chamado quando um menu de contexto está sendo construído (como resultado de um "clique longo"). Consulte a discussão
+    sobre menus de contexto no guia do desenvolvedor <a href="{@docRoot}guide/topics/ui/menus.html#context-menu">Menus</a>
+.</dd>
+</dl>
+
+<p>Esses métodos são os únicos habitantes de suas respectivas interfaces. Para definir um desses métodos
+e lidar com seus eventos, implemente a interface aninhada na atividade ou defina-a como uma classe anônima.
+Em seguida, passe uma instância da implementação
+para o respectivo método <code>View.set...Listener()</code>. (Ex.:, chame 
+<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code> 
+e passe-o à implementação de {@link android.view.View.OnClickListener OnClickListener}.)</p>
+
+<p>O exemplo abaixo mostra como registrar uma escuta de clique para um botão. </p>
+
+<pre>
+// Create an anonymous implementation of OnClickListener
+private OnClickListener mCorkyListener = new OnClickListener() {
+    public void onClick(View v) {
+      // do something when the button is clicked
+    }
+};
+
+protected void onCreate(Bundle savedValues) {
+    ...
+    // Capture our button from layout
+    Button button = (Button)findViewById(R.id.corky);
+    // Register the onClick listener with the implementation above
+    button.setOnClickListener(mCorkyListener);
+    ...
+}
+</pre>
+
+<p>Você também pode achar mais conveniente implementar OnClickListener como parte da atividade.
+Isto evitará carga adicional na classe e a alocação do objeto. Por exemplo:</p>
+<pre>
+public class ExampleActivity extends Activity implements OnClickListener {
+    protected void onCreate(Bundle savedValues) {
+        ...
+        Button button = (Button)findViewById(R.id.corky);
+        button.setOnClickListener(this);
+    }
+
+    // Implement the OnClickListener callback
+    public void onClick(View v) {
+      // do something when the button is clicked
+    }
+    ...
+}
+</pre>
+
+<p>Observe que o retorno de chamada <code>onClick()</code> no exemplo acima
+não tem valor de retorno, mas outros métodos de escuta de evento podem retornar um booleano. O motivo
+depende do evento. Para os poucos que retornam, apresenta-se a razão:</p>
+<ul>
+  <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> - 
+    Isto retorna um booleano para indicar se você consumiu o evento e se ele deve ser levado adiante. 
+    Ou seja, ele retorna <em>verdadeiro</em> para indicar que você lidou com o evento e não deve seguir adiante; 
+    ou retorna <em>falso</em> caso você não tenha lidado com ele e/ou o evento deva continuar para qualquer
+    outra escuta de clique.</li>
+  <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> - 
+    Isto retorna um booleano para indicar se você consumiu o evento e se ele deve ser levado adiante.
+        Ou seja, ele retorna <em>verdadeiro</em> para indicar que você lidou com o evento e não deve seguir adiante; 
+    ou retorna <em>falso</em> caso você não tenha lidado com ele e/ou o evento deva continuar para qualquer
+    outra escuta de tecla.</li>
+  <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> - 
+    Isto retorna um booleano para indicar se a escuta consome este evento. O importante é que este evento
+    pode possuir várias ações que se seguem mutuamente. Portanto, se retornar <em>falso</em> quando
+    o evento de ação inferior for recebido, você indicará que não consumiu o evento e que não está
+    interessado em ações subsequentes deste evento. Logo, você não será chamado para outras ações
+    dentro do evento, como um gesto de dedo ou um evento de ação para cima eventual.</li>
+</ul>
+
+<p>Lembre-se de que os eventos de tecla de hardware sempre são entregues à vista atualmente em foco. Eles são enviados a partir da parte superior
+da hierarquia de vistas e segue à parte inferior até atingir o destino adequado. Se a vista (ou um filho da vista)
+estiver em foco, é possível ver o percurso do evento pelo método <code>{@link android.view.View#dispatchKeyEvent(KeyEvent)
+dispatchKeyEvent()}</code>. Como uma alternativa para capturar eventos de tecla por meio da vista, também é possível
+receber todos os eventos dentro da Atividade com <code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>
+e <code>{@link android.app.Activity#onKeyUp(int,KeyEvent) onKeyUp()}</code>.</p>
+
+<p>Além disso, ao pensar sobre a entrada de texto para o aplicativo, lembre-se de que vários dispositivos possuem apenas
+métodos de entrada de software. Tais métodos não precisam ser baseados em teclas; alguns podem usar entrada de texto por voz, por escrita e outros. Mesmo se um método de entrada
+apresentar uma interface parecida com teclado, geralmente ele <strong>não</strong> ativa
+a família de eventos <code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>. Nunca deve-se compilar
+uma IU que exija pressionamentos de teclas específicas para ser controlada, a não ser que você queira limitar o aplicativo a dispositivos
+com um teclado físico. Em particular, não confie nestes métodos para validar a entrada quando o usuário pressiona a tecla
+de retorno; em vez disso, use ações como {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE} para sinalizar
+ao método de entrada como o aplicativo espera reagir para que ele possa alterar a IU de forma significativa. Evite suposições
+sobre como um método de entrada de software deve funcionar e confie apenas no fornecimento do texto já formatado para o aplicativo.</p>
+
+<p class="note"><strong>Observação:</strong> o Android chamará manipuladores de evento e, em seguida, manipuladores adequados padrão
+a partir da segunda definição de classe. Logo, retornar <em>verdadeiro</em> destas escutas de evento
+interromperá a propagação do evento para outras escutas de evento e também bloqueará o retorno de chamada
+para o manipulador de evento padrão na vista. Portanto, certifique-se de que quer encerrar o evento ao retornar <em>verdadeiro</em>.</p>
+
+
+<h2 id="EventHandlers">Manipuladores de evento</h2>
+
+<p>Se estiver compilando um componente personalizado a partir de View, então você poderá definir vários métodos de retorno de chamada
+usados como manipuladores de evento padrão.
+No documento sobre <a href="{@docRoot}guide/topics/ui/custom-components.html">Componentes
+personalizados</a>, você aprenderá a ver alguns dos retornos de chamada usados para lidar com eventos,
+incluindo:</p>
+<ul>
+  <li><code>{@link  android.view.View#onKeyDown}</code> - Chamado quando um novo evento de tecla ocorre.</li>
+  <li><code>{@link  android.view.View#onKeyUp}</code> - Chamado quando um evento de tecla para cima ocorre.</li>
+  <li><code>{@link  android.view.View#onTrackballEvent}</code> - Chamado quando um evento de movimento do cursor de bola ocorre.</li>
+  <li><code>{@link  android.view.View#onTouchEvent}</code> - Chamado quando um evento de movimento de toque ocorre.</li>
+  <li><code>{@link  android.view.View#onFocusChanged}</code> - Chamado quando a vista ganha ou perde foco.</li>
+</ul>
+<p>Há alguns outros métodos que você deve ter ciência que não fazem parte da classe View,
+mas podem ter impacto direto na maneira de lidar com os eventos. Portanto, ao gerenciar eventos mais complexos
+dentro de um layout, considere esses outros métodos:</p>
+<ul>
+  <li><code>{@link  android.app.Activity#dispatchTouchEvent(MotionEvent)
+    Activity.dispatchTouchEvent(MotionEvent)}</code> - Isto permite que {@link 
+    android.app.Activity} intercepte todos os evento de toque antes de serem enviados à janela.</li>
+  <li><code>{@link  android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)
+    ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> - Isto permite que {@link
+    android.view.ViewGroup} assista aos eventos à medida que são enviados para as vistas filho.</li>
+  <li><code>{@link  android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
+    ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - Chame isto
+    sobre uma Vista pai para indicar que ela não deve interceptar eventos de toque com <code>{@link 
+    android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code>.</li>
+</ul>
+
+<h2 id="TouchMode">Modo de toque</h2>
+<p>
+Quando um usuário está navegando em uma interface do usuário com teclas direcionais ou cursor de bola,
+é necessário fornecer foco para itens de ação (como botões) para que o usuário possa
+ver o que aceitará entrada.  Se o dispositivo tiver capacidades de toque, no entanto, e o usuário
+começar a interagir com a interface por meio de toque, então não é mais necessário
+destacar itens ou fornecer foco para uma vista específica.  Contudo, há um modo
+de interação chamado "modo de toque". 
+</p>
+<p>
+Para dispositivos com capacidades de toque, quando o usuário toca na tela, o dispositivo
+entra no modo de toque.  A partir deste ponto, somente vistas que tiverem
+{@link android.view.View#isFocusableInTouchMode} como verdadeiro poderão ter foco, como widgets de edição de texto.
+Outras vistas tocáveis, como botões, não receberão foco ao serem tocadas. Em vez disso,
+elas simplesmente dispararão escutas de clique quando forem pressionadas.
+</p>
+<p>
+Sempre que um usuário pressionar teclas direcionais ou rolar com o cursor de bola, o dispositivo
+sairá do modo de toque e encontrará uma vista para atribuir foco. Agora, o usuário pode retomar a interação
+com a interface do usuário sem tocar na tela.
+</p>
+<p>
+O estado de modo de toque é mantido em todo o sistema (todas as janelas e atividades). 
+Para consultar o estado atual, é possível chamar
+{@link android.view.View#isInTouchMode} para ver se o dispositivo está no modo de toque no momento.
+</p>
+
+
+<h2 id="HandlingFocus">Tratamento de foco</h2>
+
+<p>A estrutura lidará com a rotina de movimento de foco em resposta à entrada do usuário.
+Isto inclui a mudança de foco à medida que as vistas são removidas ou ocultadas, ou à medida que novas
+vistas se tornem disponíveis. As vistas indicam a prontidão para receber foco
+por meio do método <code>{@link android.view.View#isFocusable()}</code>. Para determinar se uma vista pode receber
+foco, chame <code>{@link android.view.View#setFocusable(boolean) setFocusable()}</code>.  Quando no modo de toque,
+é possível consultar se uma vista permite foco com <code>{@link android.view.View#isFocusableInTouchMode()}</code>.
+É possível alterar isto com <code>{@link android.view.View#setFocusableInTouchMode(boolean) setFocusableInTouchMode()}</code>.
+</p>
+
+<p>O movimento de foco é baseado em um algoritmo que encontra um semelhante mais próximo
+em uma dada direção. Em casos raros, o algoritmo padrão pode não corresponder
+ao comportamento pretendido do desenvolvedor. Nessas situações, é possível
+fornecer substituições explícitas com os seguintes atributos XML no arquivo do layout:
+<var>nextFocusDown</var>, <var>nextFocusLeft</var>, <var>nextFocusRight</var>e
+<var>nextFocusUp</var>. Adicione um desses atributos à vista <em>a partir</em>
+do foco que ela está abandonando. Defina o valor do atributo para ser o ID da vista
+<em>para</em> o foco que deve ser fornecido. Por exemplo:</p>
+<pre>
+&lt;LinearLayout
+    android:orientation="vertical"
+    ... >
+  &lt;Button android:id="@+id/top"
+          android:nextFocusUp="@+id/bottom"
+          ... />
+  &lt;Button android:id="@+id/bottom"
+          android:nextFocusDown="@+id/top"
+          ... />
+&lt;/LinearLayout>
+</pre>
+
+<p>Geralmente, neste layout vertical, navegar para cima a partir do primeiro botão
+não resultaria em nada, nem navegar para baixo a partir do segundo botão. Agora que o botão superior
+definiu o botão do fundo como <var>nextFocusUp</var> (e vice-versa), o foco da navegação
+alternará de "cima para baixo" e "baixo para cima".</p>
+
+<p>Caso queira declarar uma vista como alvo de foco na IU (quando tradicionalmente não é),
+adicione o atributo XML <code>android:focusable</code> à vista, na declaração do layout.
+Defina o valor <var>como verdadeiro</var>. Também é possível declarar uma vista
+como alvo de foco no Modo de Toque com <code>android:focusableInTouchMode</code>.</p>
+<p>Para solicitar foco a uma determinada Vista, chame <code>{@link android.view.View#requestFocus()}</code>.</p>
+<p>Para ouvir eventos de foco (receber notificações quando uma vista receber ou perder foco), use
+<code>{@link android.view.View.OnFocusChangeListener#onFocusChange(View,boolean) onFocusChange()}</code>,
+como discutido na seção <a href="#EventListeners">Escutas de evento</a> acima.</p>
+
+
+
+<!--
+<h2 is="EventCycle">Event Cycle</h2>
+   <p>The basic cycle of a View is as follows:</p>
+   <ol>
+    <li>An event comes in and is dispatched to the appropriate View. The View
+    handles the event and notifies any listeners.</li>
+    <li>If, in the course of processing the event, the View's bounds may need
+    to be changed, the View will call {@link android.view.View#requestLayout()}.</li>
+    <li>Similarly, if in the course of processing the event the View's appearance
+    may need to be changed, the View will call {@link android.view.View#invalidate()}.</li>
+    <li>If either {@link android.view.View#requestLayout()} or {@link android.view.View#invalidate()} were called,
+    the framework will take care of measuring, laying out, and drawing the tree
+    as appropriate.</li>
+   </ol>
+   
+   <p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on
+   the UI thread when calling any method on any View.
+   If you are doing work on other threads and want to update the state of a View
+   from that thread, you should use a {@link android.os.Handler}.
+   </p>
+-->
diff --git a/docs/html-intl/intl/pt-br/index.jd b/docs/html-intl/intl/pt-br/index.jd
index 4d0a39e..f5e1569 100644
--- a/docs/html-intl/intl/pt-br/index.jd
+++ b/docs/html-intl/intl/pt-br/index.jd
@@ -5,41 +5,81 @@
 
 @jd:body
 
-<!-- <div class="dac-hero-carousel" data-carousel-query="collection:index/carousel">
-</div> -->
-<section class="dac-hero-carousel">
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
 
-<!-- <article class="dac-expand dac-hero dac-invert active" style="background-color: rgb(38, 50, 56);"> -->
-<article class="dac-expand dac-hero dac-invert dac-darken mprev active" style="background-color: #75d1ff;">
-<a href="/preview/index.html">
+<section class="dac-expand dac-hero dac-invert" style="background-color:#455A64">
   <div class="wrap" style="max-width:1100px;margin-top:0">
-    <div class="cols dac-hero-content">
-      <div class="col-8of16 col-push-6of16 dac-hero-figure mprev">
-      </div>
-      <div class="col-8of16 col-pull-7of16">
-        <div class="dac-hero-tag"></div>
-
-        <h1 class="dac-hero-title" style="white-space:nowrap;">Android 6.0 Marshmallow</h1>
-        <p class="dac-hero-description">Prepare-se para a próxima versão do
-        Android. Teste os aplicativos no Nexus 5, 6, 9 e Player.  </p>
-
-        <a class="dac-hero-cta" href="{@docRoot}preview/index.html">
+    <div class="col-7of16 col-push-9of16" style="padding-left:2em;">
+      <a href="{@docRoot}preview/index.html">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
+        <p class="dac-hero-description">
+          Get ready for the next version of Android!
+          <strong>Test your apps</strong> on Nexus and other devices. Support new system
+          behaviors to <strong>save power and memory</strong>.
+          Extend your apps with <strong>multi-window UI</strong>,
+          <strong>direct reply notifications</strong> and more.
+        </p>
+        <a class="dac-hero-cta" href="/preview/index.html">
           <span class="dac-sprite dac-auto-chevron"></span>
-          Comece!</a><br>
-        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
+          Learn more
+        </a><!--<br>
+        <a class="dac-hero-cta" href="/preview/support.html">
           <span class="dac-sprite dac-auto-chevron"></span>
-          Developer Preview 3 (final SDK)</a>
-      </div>
+          Update to Developer Preview (final SDK)
+        </a><br>-->
+      </a>
+    </div>
+    <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:0em;padding-right:1.5em;">
+      <a href="{@docRoot}preview/index.html">
+        <img style="" class="dac-hero-image" src="/images/home/n-preview-hero.png"
+             srcset="/images/home/n-preview-hero.png 1x,
+             /images/home/n-preview-hero_2x.png 2x">
+        </a>
     </div>
   </div>
-</a>
-</article></section>
+</section>
 
-<div class="actions-bar dac-expand dac-invert">
+<div id="useUpdatedTemplates" style="display:none" class="dac-section dac-slim dac-gray dac-expand">
   <div class="wrap dac-offset-parent">
     <a class="dac-fab dac-scroll-button" data-scroll-button href="#build-apps">
       <i class="dac-sprite dac-arrow-down-gray"></i>
     </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}sdk/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Get the SDK
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}samples/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Browse sample code
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}distribute/stories/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Watch stories
+        </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+    <a class="dac-fab dac-scroll-button" data-scroll-button="" href="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
     <div class="actions">
       <div><a href="{@docRoot}sdk/index.html">
         <span class="dac-sprite dac-auto-chevron-large"></span>
@@ -49,17 +89,15 @@
         <span class="dac-sprite dac-auto-chevron-large"></span>
         Browse Samples
       </a></div>
-      <div><a href="//www.youtube.com/user/androiddevelopers">
+      <div><a href="{@docRoot}distribute/stories/index.html">
         <span class="dac-sprite dac-auto-chevron-large"></span>
-        Watch Videos
+        Watch Stories
       </a></div>
     </div><!-- end .actions -->
   </div><!-- end .wrap -->
-</div><!-- end .actions-bar -->
+</div>
 
-
-
-<section class="dac-section dac-section-light" id="build-apps"><div class="wrap">
+<section class="dac-section dac-light" id="build-apps"><div class="wrap">
   <h1 class="dac-section-title">Build Beautiful Apps</h1>
   <div class="dac-section-subtitle">
     Resources to get you started with designing and developing for Android.
diff --git a/docs/html-intl/intl/pt-br/preview/api-overview.jd b/docs/html-intl/intl/pt-br/preview/api-overview.jd
deleted file mode 100644
index 139fb33..0000000
--- a/docs/html-intl/intl/pt-br/preview/api-overview.jd
+++ /dev/null
@@ -1,521 +0,0 @@
-page.title=Visão geral da API
-page.keywords=preview,sdk,compatibility
-page.tags=previewresources, androidm
-sdk.platform.apiLevel=22-mnc
-page.image=images/cards/card-api-overview_16-9_2x.png
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Neste documento
- <a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
-        <span class="more">mostrar mais</span>
-        <span class="less" style="display:none">mostrar menos</span></a></h2>
-
-<ol id="toc44" class="hide-nested">
-  <li><a href="#app-linking">Vínculo de aplicativo</a></li>
-  <li><a href="#backup">Backup automático para aplicativos</a></li>
-  <li><a href="#authentication">Autenticação</a>
-    <ol>
-      <li><a href="#fingerprint-authentication">Autenticação com impressão digital</a></li>
-      <li><a href="#confirm-credential">Confirmação de credencial</a></li>
-    </ol>
-  </li>
-  <li><a href="#direct-share">Compartilhamento direto</a></li>
-  <li><a href="#voice-interactions">Interações por voz</a></li>
-  <li><a href="#assist">Auxiliar API</a></li>
-  <li><a href="#notifications">Notificações</a></li>
-  <li><a href="#bluetooth-stylus">Suporte para Bluetooth Stylus</a></li>
-  <li><a href="#ble-scanning">Digitalização de baixa energia por Bluetooth aprimorada</a></li>
-  <li><a href="#hotspot">Suporte a Hotspot 2.0 Release 1</a></li>
-  <li><a href="#4K-display">Modo de exibição 4K</a></li>
-  <li><a href="#behavior-themeable-colorstatelists">ColorStateLists com tema</a></li>
-  <li><a href="#audio">Recursos de áudio</a></li>
-  <li><a href="#video">Recursos de vídeo</a></li>
-  <li><a href="#camera">Recursos de câmera</a>
-    <ol>
-      <li><a href="#flashlight">API da lanterna</a></li>
-      <li><a href="#reprocessing">Reprocessamento da câmera</a></li>
-    </ol>
-  </li>
-  <li><a href="#afw">Recursos do Android for Work</a></li>
-</ol>
-
-<h2>Diferenças de API</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">API de nível 22 para M Preview &raquo;</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>O M Developer Preview fornece uma visualização avançada no próximo lançamento
- para a plataforma Android, oferecendo novos recursos para desenvolvedores e usuários
-de aplicativos. Este documento fornece uma introdução às APIs mais notáveis.</p>
-
-<p>O M Developer Preview foi feito para <strong>novos desenvolvedores
-adotantes</strong> e <strong>testadores</strong>. Caso tenha interesse
- em influenciar a direção da estrutura do Android,
-<a href="{@docRoot}preview/setup-sdk.html">experimente o M Developer
- Preview</a> e envie-nos feedback!</p>
-
-<p class="caution"><strong>Cuidado:</strong> não publique aplicativos
-que usam o M Developer Preview na Google Play Store.</p>
-
-<p class="note"><strong>Observação:</strong> este documento frequentemente
-menciona classes e métodos que ainda não possuem material de referência disponível em <a href="{@docRoot}">developer.android.com</a>. Esses elementos de API
-são formatados em {@code code style} neste documento (sem hyperlinks). Para a
-documentação de API preliminar destes elementos, faça o download da <a href="{@docRoot}preview/download.html#docs">referência da prévia</a>.</p>
-
-<h3>Alterações importantes de comportamento</h3>
-
-<p>Caso tenha publicado anteriormente um aplicativo para Android, saiba que ele pode ser afetado
-pelas alterações na plataforma.</p>
-
-<p>Consulte <a href="behavior-changes.html">alterações de comportamento</a> para obter mais informações.</p>
-
-<h2 id="app-linking">Vínculo de aplicativo</h2>
-<p>Esta prévia aprimora o sistema de intenções do Android fornecendo vínculo de aplicativo mais poderoso.
-Este recurso permite que você associe um aplicativo com um domínio de web próprio. Com base nesta
-associação, a plataforma pode determinar o aplicativo padrão a ser usado para lidar com um link da web
-em particular e ignorar a solicitação aos usuários para selecionar um aplicativo. Para aprender como implementar este aplicativo, consulte 
-<a href="{@docRoot}preview/features/app-linking.html">vínculo de aplicativo</a>.
-
-<h2 id="backup">Backup automático para aplicativos</h2>
-<p>O sistema agora realiza backup automático completo de dados e restauração para aplicativos. Este comportamento
-é ativado por padrão para aplicativos com M Preview; não é necessário mais código adicional. Se
-os usuários excluírem as contas da Google, os dados de backup também serão excluídos. Para aprender como este recurso
-funciona e como configurar o backup no sistema do arquivo, consulte
-<a href="{@docRoot}preview/backup/index.html">backup automático para aplicativos</a>.</p>
-
-<h2 id="authentication">Autenticação</h2>
-<p>Esta prévia oferece novas APIs para permitir que você autentique os usuários usando digitalizadores de impressão digital em dispositivos
-suportados e verifique o quão recentemente os usuários autenticaram pela última vez usando o
-mecanismo de desbloqueio por dispositivo (como senha de tela de bloqueio). Use essas APIs em conjunto com
-o <a href="{@docRoot}training/articles/keystore.html">sistema Android Keystore</a>.</p>
-
-<h3 id="fingerprint-authentication">Autenticação com impressão digital</h3>
-
-<p>Para autenticar os usuários por meio de digitalização de impressão digital, adquira uma instância da nova classe 
-{@code android.hardware.fingerprint.FingerprintManager} e chame o método 
-{@code FingerprintManager.authenticate()}. O aplicativo deve ser executado em um dispositivo
-compatível com sensor de impressão digital. Deve-se implementar a interface do usuário para o fluxo de autenticação
-de impressão digital no aplicativo e usar o ícone de impressão digital padrão do Android na IU.
-O ícone de impressão digital do Android ({@code c_fp_40px.png}) é incluído no 
-<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">aplicativo de exemplo</a>. Caso esteja desenvolvendo vários aplicativos que usam
-autenticação de impressão digital, observe que cada aplicativo deve autenticar a impressão digital do usuário independentemente.
-</p>
-
-<p>Para usar este recurso no aplicativo, adicione primeiro a permissão {@code USE_FINGERPRINT} no
-manifesto.</p>
-
-<pre>
-&lt;uses-permission
-        android:name="android.permission.USE_FINGERPRINT" /&gt;
-</pre>
-
-<img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-
-<p>Para ver a implementação do aplicativo da autenticação com impressão digital, consulte o
-<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">
- exemplo de caixa de diálogo de impressão digital</a>.</p>
-
-<p>Caso esteja testando este recurso, siga estas etapas:</p>
-<ol>
-<li>Instale o Android SDK Tools Revision 24.3, caso ainda não tenha instalado.</li>
-<li>Registre uma nova impressão digital no emulador acessando 
-<strong>Configurações &gt; Segurança &gt; Impressão digital</strong> e, em seguida, siga as instruções de registro.</li>
-<li>Use um emulador para emular eventos de toque de dedo com o
-comando a seguir. Use o mesmo comando para emular os eventos de toque de impressão digital na tela de
-bloqueio ou no aplicativo.
-<pre class="no-prettyprint">
-adb -e emu finger touch &lt;finger_id&gt;
-</pre>
-<p>No Windows, talvez seja necessário executar {@code telnet 127.0.0.1 <emulator-id>} seguido de
-{@code finger touch <finger_id>}.
-</p>
-</li>
-</ol>
-
-<h3 id="confirm-credential">Confirmação de credencial</h3>
-<p>O aplicativo pode autenticar os usuários com base no quão recentemente o dispositivo foi desbloqueado pela última vez. Este
-recurso libera o usuário de ter que lembrar de senhas específicas de aplicativo extras e evita
-a necessidade de implementar a própria interface do usuário de autenticação. O aplicativo deve usar este recurso
-em conjunto com uma implementação de chave secreta ou pública para a implementação de usuário.</p>
-
-<p>Para definir uma duração de tempo limite em que a mesma chave pode ser usada novamente
-após o usuário autenticar, chame o novo método 
-{@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()}
- ao definir um {@link javax.crypto.KeyGenerator} ou 
-{@link java.security.KeyPairGenerator}. Este recurso funciona para operações criptográficas
-simétricas.</p>
-
-<p>Evite exibir o diálogo de nova autenticação excessivamente — os aplicativos devem tentar
-usar o objeto criptográfico primeiro e, se o tempo limite expirar, usar o método 
-{@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()}
- para autenticar novamente o usuário dentro do aplicativo.
-</p>
-
-<p>Para ver uma implementação de aplicativo deste recurso, consulte o 
-<a href="https://github.com/googlesamples/android-ConfirmCredential" class="external-link">
-exemplo de confirmação de credencial</a>.</p>
-
-<h2 id="direct-share">Compartilhamento direto</h2>
-
-<img src="{@docRoot}preview/images/direct-share-screen.png" srcset="{@docRoot}preview/images/direct-share-screen.png 1x, {@docRoot}preview/images/direct-share-screen_2x.png 2x" style="float:right; margin:0 0 20px 30px" width="312" height="329" />
-
-<p>Esta prévia fornece as APIs para tornar o compartilhamento intuitivo e rápido para os usuários. É possível
-definir os <em>alvos de compartilhamento direto</em> que iniciam uma atividade específica no aplicativo.
-Esses alvos de compartilhamento direto são expostos aos usuários por meio do menu <em>Compartilhar</em>. Este recurso permite que os usuários
-compartilhem conteúdos aos alvos, como contatos, dentro de outros aplicativos. Por exemplo: o alvo de compartilhamento direto
-pode iniciar uma atividade em outro aplicativo de rede social, o que permite que o usuário compartilhe o conteúdo diretamente
-para um amigo ou comunidade específica neste aplicativo.</p>
-
-<p>Para ativar os alvos de compartilhamento direto, deve-se definir uma classe que estende a classe 
-{@code android.service.} <br>
-{@code chooser.ChooserTargetService}. Declare o 
-{@code ChooserTargetService} no manifesto. Dentro desta declaração, especifique a permissão 
-{@code BIND_CHOOSER_TARGET_SERVICE} e um filtro de intenções na ação 
-{@code SERVICE_INTERFACE}.</p>
-<p>O seguinte exemplo mostra como se deve declarar o {@code ChooserTargetService} no
-manifesto.</p>
-<pre>
-&lt;service android:name=".ChooserTargetService"
-        android:label="&#64;string/service_name"
-        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"&gt;
-    &lt;intent-filter&gt;
-        &lt;action android:name="android.service.chooser.ChooserTargetService" /&gt;
-    &lt;/intent-filter&gt;
-&lt;/service&gt;
-</pre>
-
-<p>Para cada atividade que quiser expor ao {@code ChooserTargetService}, adicione um elemento 
-{@code <meta-data>} com o nome
-{@code "android.service.chooser.chooser_target_service"} no manifesto do aplicativo.
-</p>
-
-<pre>
-&lt;activity android:name=".MyShareActivity”
-        android:label="&#64;string/share_activity_label"&gt;
-    &lt;intent-filter>
-        &lt;action android:name="android.intent.action.SEND" /&gt;
-    &lt;/intent-filter>
-&lt;meta-data
-        android:name="android.service.chooser.chooser_target_service"
-        android:value=".ChooserTargetService" /&gt;
-&lt;/activity>
-</pre>
-
-<h2 id="voice-interactions">Interações por voz</h2>
-<p>
-Esta prévia fornece uma API de interação por voz que, junto com 
-<a href="https://developers.google.com/voice-actions/" class="external-link">ações de voz</a>
-, permite a criação de experiências por voz nos aplicativos. Chame o método 
-{@code android.app.Activity.isVoiceInteraction()} para determinar se a atividade
-foi iniciada em resposta à ação de voz. Caso tenha sido iniciada, o aplicativo pode usar a classe 
-{@code android.app.VoiceInteractor} para solicitar uma confirmação de voz do usuário,
-selecionar a partir de uma lista de opções e muito mais. Para aprender mais sobre a implementação de ações de voz, consulte 
-<a href="https://developers.google.com/voice-actions/interaction/" class="external-link">o site de desenvolvedor de ações de voz</a>.
-</p>
-
-<h2 id="assist">Auxiliar API</h2>
-<p>
-Esta prévia oferece uma nova maneira de usuários se envolverem com os aplicativos com um assistente. Para usar este
-recurso, o usuário deve possibilitar que o assistente use o contexto atual. Quando ativado,
-o usuário pode invocar um assistente dentro de qualquer aplicativo mantendo o botão <strong>Iniciar</strong> pressionado.</p>
-<p>O aplicativo pode optar por não compartilhar o contexto atual com o assistente configurando o sinalizador 
-{@link android.view.WindowManager.LayoutParams#FLAG_SECURE}. Além do conjunto
-padrão de informações que a plataforma passa ao assistente, o aplicativo pode compartilhar
-informações adicionais usando a nova classe {@code android.app.Activity.AssistContent}.</p>
-
-<p>Para fornecer ao assistente contexto adicional do aplicativo, siga estas etapas:</p>
-
-<ol>
-<li>Implemente a interface {@link android.app.Application.OnProvideAssistDataListener}.</li>
-<li>Registre esta escuta usando 
-{@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()}.</li>
-<li>Para fornecer informações contextuais específicas da atividade, substitua o retorno de chamada 
-{@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()}
- e, opcionalmente, o novo retorno de chamada {@code Activity.onProvideAssistContent()}.
-</ol>
-
-<h2 id="notifications">Notificações</h2>
-<p>Esta prévia adiciona as seguintes alterações de API às notificações:</p>
-<ul>
-  <li>Novo nível de filtro {@code NotificationListenerService.INTERRUPTION_FILTER_ALARMS} que corresponde
-ao modo "não perturbe" de <em>despertadores apenas</em>.</li>
-  <li>Novo valor da categoria {@code Notification.CATEGORY_REMINDER} que é usado para distinguir
-lembretes de agendamentos do usuário de outros eventos (
-{@link android.app.Notification#CATEGORY_EVENT}) e despertadores (
-{@link android.app.Notification#CATEGORY_ALARM}).</li>
-  <li>Nova classe {@code android.graphics.drawable.Icon} que pode ser anexada às notificações
-por meio dos métodos {@code Notification.Builder.setSmallIcon(Icon)} e 
-{@code Notification.Builder.setLargeIcon(Icon)}.</li>
-  <li>Novo método {@code NotificationManager.getActiveNotifications()} que permite que os aplicativos
-descubram quais das notificações ainda estão ativas. Para ver uma implementação de aplicativo que usa este recurso,
-consulte o <a href="https://github.com/googlesamples/android-ActiveNotifications" class="external-link">exemplo de notificações ativas</a>.</li>
-</ul>
-
-<h2 id="bluetooth-stylus">Suporte para Bluetooth Stylus</h2>
-<p>Esta prévia fornece um suporte aprimorado para a entrada de usuário usando um Bluetooth Stylus. Os usuários podem
-parear e conectar um Bluetooth Stylus compatível com o telefone ou tablet.  Quando conectado, as informações
-de posição da tela tátil são fundidas com as informações de botão e pressão do Stylus
-para fornecer um alcance maior de expressão em comparação à tela tátil sozinha. O aplicativo pode escutar o pressionar
-de botões do Stylus e realizar ações secundárias registrando os novos retornos de chamada 
-{@code View.onStylusButtonPressListener} e {@code GestureDetector.OnStylusButtonPressListener}
- na atividade.</p>
-
-<p>Use as constantes e os métodos {@link android.view.MotionEvent} para detectar as interações
-de botão do Stylus:</p>
-<ul>
-<li>Se o usuário toca no Stylus com um botão na tela do aplicativo, o método 
-{@link android.view.MotionEvent#getToolType(int) getTooltype()} retorna 
-{@link android.view.MotionEvent#TOOL_TYPE_STYLUS}.</li>
-<li>Para aplicativos com M Preview, o método 
-{@link android.view.MotionEvent#getButtonState() getButtonState()}
- retorna {@code MotionEvent.STYLUS_BUTTON_PRIMARY} quando o usuário
-pressiona o botão principal do Stylus. Se o Stylus tiver um segundo botão, o mesmo método retorna 
-{@code MotionEvent.STYLUS_BUTTON_SECONDARY} quando o usuário o pressiona. Se o usuário pressiona
-os dois botões simultaneamente, o método retorna os valores com OR juntos (
-{@code STYLUS_BUTTON_PRIMARY|STYLUS_BUTTON_SECONDARY}).</li>
-<li>
-Para aplicativos com uma versão de plataforma inferior , o método 
-{@link android.view.MotionEvent#getButtonState() getButtonState()} retorna 
-{@link android.view.MotionEvent#BUTTON_SECONDARY} (para o pressionar do botão principal do Stylus), 
-{@link android.view.MotionEvent#BUTTON_TERTIARY} (para o pressionar do botão secundário do Stylus) ou ambos.
-</li>
-</ul>
-
-<h2 id="ble-scanning">Digitalização de baixa energia por Bluetooth aprimorada</h2>
-<p>
-Se o aplicativo realizar digitalizações de baixa energia por Bluetooth, é possível usar o novo método 
-{@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} para especificar
-que você quer que os retornos de chamada sejam notificados apenas quando um pacote de propaganda correspondente ao conjunto 
-{@link android.bluetooth.le.ScanFilter} for encontrado primeiro e quando
-ele não for visto por um período. Esta abordagem de digitalização é mais eficiente
-do que a fornecida na versão anterior da plataforma.
-</p>
-
-<h2 id="hotspot">Suporte a Hotspot 2.0 Release 1</h2>
-<p>
-Esta prévia adiciona suporte ao Hotspot 2.0 Release 1 nos dispositivos Nexus 6 e Nexus 9. Para fornecer
-as credenciais de Hotspot 2.0 no aplicativo, use os novos métodos da classe 
-{@link android.net.wifi.WifiEnterpriseConfig}, como {@code setPlmn()} e 
-{@code setRealm()}. No objeto {@link android.net.wifi.WifiConfiguration}, é possível definir os campos 
-{@link android.net.wifi.WifiConfiguration#FQDN} e {@code providerFriendlyName}.
-A nova propriedade {@code ScanResult.PasspointNetwork} indica se uma rede detectada representa
-um ponto de acesso Hotspot 2.0.
-</p>
-
-<h2 id="4K-display">Modo de exibição 4K</h2>
-<p>A plataforma agora permite que aplicativos solicitem que a resolução seja aprimorada para renderização 4K
-em hardware compatível. Para consultar a resolução física atual, use as novas APIs
-{@code android.view.Display.Mode}. Se a IU for desenhada em uma resolução lógica
-menor e for redimensionada para uma resolução física maior, saiba que a resolução física que o método 
-{@code Display.Mode.getPhysicalWidth()} retorna pode ser diferente da resolução
-física informada por {@link android.view.Display#getSize(android.graphics.Point) getSize()}.</p>
-
-<p>É possível solicitar que o sistema altere a resolução física no aplicativo à medida que ele é executado configurando
-a propriedade {@code WindowManager.LayoutParams.preferredDisplayModeId} da janela do aplicativo.  Este
-recurso é útil se quiser alternar para a resolução de exibição 4K. Enquanto estiver no modo de exibição 4K,
-a IU continua a ser renderizada na resolução original (como 1080 p) e é escalonada para 4K, mas os objetos 
-{@link android.view.SurfaceView} podem exibir o conteúdo na resolução nativa.</p>
-
-<h2 id="behavior-themeable-colorstatelists">ColorStateLists com tema</h2>
-<p>Os atributos de tema agora são suportados no 
-{@link android.content.res.ColorStateList} para dispositivos que executam o M Preview. Os métodos 
-{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} e 
-{@link android.content.res.Resources#getColor(int) getColor()} ficaram obsoletos. Caso esteja chamando
-essas APIs, chame os novos métodos {@code Context.getColorStateList()} ou 
-{@code Context.getColor()}. Esses métodos também estão disponíveis na biblioteca
-v4 appcompat via {@link android.support.v4.content.ContextCompat}.</p>
-
-<h2 id="audio">Recursos de áudio</h2>
-
-<p>Esta prévia adiciona aprimoramentos ao processamento de áudio no Android, incluindo: </p>
-<ul>
-  <li>Suporte para protocolo <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a>
-, com as novas APIs {@code android.media.midi}. Use essas APIs para enviar e receber eventos
-de MIDI.</li>
-  <li>Use as novas classes {@code android.media.AudioRecord.Builder} e {@code android.media.AudioTrack.Builder}
- para criar captura de áudio digital e objetos de reprodução, respectivamente,
-e configure a fonte de áudio e as propriedades do coletor para substituir os padrões do sistema.</li>
-  <li>Ganchos de API para associação de dispositivos de entrada e áudio. Isto é particularmente útil se o aplicativo
-permite que os usuários iniciem uma pesquisa de voz a partir de um controle de jogo ou controle remoto para Android
-TV. O sistema invoca o novo retorno de chamada {@code android.app.Activity.onSearchRequested()} quando
-o usuário inicia uma pesquisa. Para determinar se o dispositivo de entrada do usuário tem um microfone integrado, recupere
-o objeto {@link android.view.InputDevice} deste retorno de chamada e, em seguida, chame o novo método 
-{@code InputDevice.hasMic()}.</li>
-  <li>Novas classes {@code android.media.AudioDevicesManager} que permitem que você
-recupere uma lista completa de todas as fontes e dispositivos de áudio do coletor anexados. Também é possível especificar um objeto 
-{@code android.media.OnAudioDeviceConnectionListener} caso queira que o aplicativo seja notificado
-quando um dispositivo de áudio for conectado ou desconectado.</li>
-</ul>
-
-<h2 id="video">Recursos de vídeo</h2>
-<p>Esta prévia adiciona novas capacidades às APIs de processamento de vídeo, incluindo:</p>
-<ul>
-<li>A nova classe {@code android.media.MediaSync} que ajuda os aplicativos a renderizar transmissões
-de vídeo e áudio sincronizadamente. Os buffers de áudio são enviados sem bloqueio e retornados
-por um retorno de chamada. Eles também suportam taxa de reprodução dinâmica.
-</li>
-<li>O novo evento {@code MediaDrm.EVENT_SESSION_RECLAIMED}, que indica que uma sessão aberta pelo aplicativo
-foi recuperada pelo gerenciador de recursos. Se o aplicativo usa sessões de DRM, deve-se
-lidar com este evento e garantir que uma sessão recuperada não seja usada.
-</li>
-<li>O novo código de erro {@code MediaCodec.CodecException.ERROR_RECLAIMED}, que indica que o gerenciador
-de recurso recuperou o recurso de mídia usado pelo codec. Com esta exceção, o codec
-deve ser liberado, como se fosse movido para o estado terminal.
-</li>
-<li>A nova interface {@code MediaCodecInfo.CodecCapabilities.getMaxSupportedInstances()} para obter
-uma dica do número máximo suportado de instâncias de codec concorrentes.
-</li>
-<li>O novo método {@code MediaPlayer.setPlaybackParams()} para definir a taxa de reprodução de mídia
-para reprodução de movimento lento ou rápido. Ele também estica ou acelera a reprodução de áudio automaticamente
-em conjunto com o vídeo.</li>
-</ul>
-
-<h2 id="camera">Recursos de câmera</h2>
-<p>Esta prévia inclui as seguintes novas APIs para acessar a lanterna da câmera
-e para o reprocessamento da câmera de imagens:</p>
-
-<h3 id="flashlight">API da lanterna</h3>
-<p>Se um dispositivo de câmera tem uma unidade de flash, é possível chamar o método {@code CameraManager.setTorchMode()}
-para ligar ou desligar o modo de tocha da unidade de flash sem abrir o dispositivo da câmera. O aplicativo
-não tem propriedade exclusiva da unidade de flash ou do dispositivo de câmera. O modo de tocha é desativado
-e torna-se indisponível sempre que o dispositivo de câmera estiver indisponível ou quando outros
-recursos de câmera que mantêm a tocha ativada ficam indisponíveis. Outros aplicativos também podem chamar {@code setTorchMode()}
-para desativar o modo de tocha. Quando o aplicativo que ativou o modo
-de tocha for fechado, o modo é desativado.</p>
-
-<p>É possível registrar um retorno de chamada para ser notificado sobre o estado da tocha chamando o método
-{@code CameraManager.registerTorchCallback()}. Na primeira vez que o retorno de chamada é registrado,
-ele é imediatamente chamado com o estado do modo de tocha de todos os dispositivos de câmera conhecidos com
-uma unidade de flash. Se o modo de tocha é ativado ou desativado, o método
-{@code CameraManager.TorchCallback.onTorchModeChanged()} é invocado.</p>
-
-<h3 id="reprocessing">API de reprocessamento</h3>
-<p>A API {@link android.hardware.camera2 Camera2} é estendida para suportar YUV e reprocessamento
-de imagem de formato opaco privado. O aplicativo determina se as capacidades de reprocessamento estão disponíveis
-via {@code CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES}. Se um dispositivo suporta o reprocessamento,
-é possível criar uma sessão de captura de câmera de reprocessamento chamando
-{@code CameraDevice.createReprocessableCaptureSession()} e criando solicitações para o reprocessamento
-do buffer de entrada.</p>
-
-<p>Use a classe {@code ImageWriter} para conectar o fluxo de buffer de entrada à entrada de reprocessamento
-da câmera. Para obter um buffer vazio, siga este modelo de programação:</p>
-
-<ol>
-<li>Chame o método {@code ImageWriter.dequeueInputImage()}.</li>
-<li>Preencha os dados no buffer de entrada.</li>
-<li>Envie o buffer à câmera chamando o método {@code ImageWriter.queueInputImage()}.</li>
-</ol>
-
-<p>Caso esteja usando um objeto {@code ImageWriter} junto com uma imagem
-{@code android.graphics.ImageFormat.PRIVATE}, o aplicativo não poderá acessar os dados
-da imagem diretamente. Em vez disso, passe a imagem {@code ImageFormat.PRIVATE} diretamente ao
-{@code ImageWriter} chamando o método {@code ImageWriter.queueInputImage()} sem nenhuma
-cópia de buffer.</p>
-
-<p>A classe {@code ImageReader} agora suporta as transmissões de imagem
-de formato {@code android.graphics.ImageFormat.PRIVATE}. Este suporte permite que o aplicativo mantenha uma fila de imagem circular de imagens de saída
-{@code ImageReader}, selecione uma ou mais imagens e envie-as para
-{@code ImageWriter} para o reprocessamento de câmera.</p>
-
-<h2 id="afw">Recursos do Android for Work</h2>
-<p>Esta prévia inclui as seguintes novas APIs para Android for Work:</p>
-<ul>
-  <li><strong>Controles aprimorados para dispositivos de uso único e pertencentes a empresas:</strong> O dono do dispositivo
-pode controlar as seguintes configurações para aprimorar
-os dispositivos de uso único pertencentes a empresas (COSU):
-  <ul>
-    <li>Desativar ou reativar a proteção de bloqueio com o método
-{@code DevicePolicyManager.setKeyguardEnabledState()}.</li>
-    <li>Desativar ou reativar a barra de status (incluindo configurações rápidas,
-notificações e o gesto de arrastar para cima que inicia o Google Now) com o método 
-{@code DevicePolicyManager.setStatusBarEnabledState()}.</li>
-    <li>Desativar ou reativar inicialização segura com a constante {@link android.os.UserManager}
-{@code DISALLOW_SAFE_BOOT}.</li>
-    <li>Evitar que a tela desligue quando conectada com a constante 
-{@link android.provider.Settings.Global} {@code STAY_ON_WHILE_PLUGGED_IN}.</li>
-  </ul>
-  </li>
-  <li><strong>Instalação e desinstalação silenciosa de aplicativos pelo dono do dispositivo:</strong> O dono do dispositivo pode agora
-instalar e desinstalar aplicativos silenciosamente usando as APIs {@link android.content.pm.PackageInstaller},
-independente do Google Play for Work. É possível tomar providências para os dispositivos
-por meio de um dono do dispositivo que recupera e instala aplicativos se a interação de usuário. Este recurso é útil para ativar a provisão de um toque
-de telefones públicos ou de outros dispositivos sem a ativação da conta Google.</li>
-<li><strong>Acesso silencioso de certificado empresarial: </strong> Quando um aplicativo chama 
-{@link android.security.KeyChain#choosePrivateKeyAlias(android.app.Activity,android.security.KeyChainAliasCallback,java.lang.String[],java.security.Principal[],java.lang.String,int,java.lang.String) choosePrivateKeyAlias()}
-, antes do usuário receber a solicitação para selecionar um certificado, o perfil ou dono do dispositivo
-pode chamar o método {@code DeviceAdminReceiver.onChoosePrivateKeyAlias()} para fornecer
-o alias silenciosamente ao aplicativo da solicitação. Este recurso permite que você forneça acesso de aplicativos gerenciados para certificados
-sem a interação de usuário.</li>
-<li><strong>Aceitação automática de atualizações do sistema.</strong> Ao configurar a política de atualização do sistema com 
-{@code DevicePolicyManager.setSystemUpdatePolicy()}, o dono do dispositivo pode aceitar automaticamente a atualização
-do sistema, no caso de um dispositivo público, ou adiar a atualização e evitar
-que ela seja feita pelo usuário por até 30 dias. Além disso, um administrador pode definir uma janela de tempo diária
-em que uma atualização deve ser realizada. Por exemplo: durante os momentos em que um dispositivo público não está em uso. Quando
-uma atualização do sistema está disponível, o sistema verifica se o aplicativo de controlador de política de trabalho definiu uma política de atualização
-do sistema e, portanto, comporta-se de acordo com a definição.
-</li>
-<li>
-<strong>Instalação de certificado delegado:</strong> Um perfil ou dono do dispositivo pode agora fornecer ao aplicativo
-de terceiros a habilidade de chamar essas APIs de gerenciamento
-de certificado de {@link android.app.admin.DevicePolicyManager}:
-<ul>
-  <li>{@link android.app.admin.DevicePolicyManager#getInstalledCaCerts(android.content.ComponentName)
-getInstalledCaCerts()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#hasCaCertInstalled(android.content.ComponentName,byte[])
-hasCaCertInstalled()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#installCaCert(android.content.ComponentName,byte[])
-installCaCert()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#uninstallCaCert(android.content.ComponentName,byte[])
-uninstallCaCert()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#uninstallAllUserCaCerts(android.content.ComponentName)
-uninstallAllUserCaCerts()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#installKeyPair(android.content.ComponentName,java.security.PrivateKey,java.security.cert.Certificate,java.lang.String)
-installKeyPair()}</li>
-</ul>
-</li>
-<li><strong>Proteção de redefinição de fábrica da empresa:</strong> Ao preparar um dono do dispositivo, agora é possível
-configurar parâmetros para desbloquear a proteção de redefinição de fábrica (FRP) configurando o pacote 
-{@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS}. Um aplicativo de programador
-NFC pode fornecer estes parâmetros depois que um dispositivo for redefinido para desbloquear o FRP e preparar o dispositivo,
-sem a necessidade da conta Google anteriormente configurada. Caso não modifique esses parâmetros,
-o FRP permanece no local e evita que o dispositivo seja ativado sem as credenciais
-Google anteriormente ativadas.
-<p>Além disso, ao configurar as restrições do aplicativo nos serviços Google, o dono do dispositivo pode especificar contas
-Google alternativas para desbloquear o FRP para substituir as contas ativadas no dispositivo.</p>
-</li>
-<img src="{@docRoot}preview/images/work-profile-screen.png" srcset="{@docRoot}preview/images/work-profile-screen.png 1x, {@docRoot}preview/images/work-profile-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-<li><strong>Rastreamento de uso de dados.</strong> Um perfil ou dono do dispositivo pode agora
-consultar as estatísticas de uso de dados visíveis em <strong>Configurações &gt; Uso de</strong> dados usando os novos métodos 
-{@code android.app.usage.NetworkStatsManager}. Os donos de perfis recebem automaticamente
-a permissão para consultar os dados no perfil que gerenciam, enquanto que os donos do dispositivo têm acesso aos dados
-de uso do usuário principal gerenciado.</li>
-<li><strong>Gerenciamento de permissão de tempo de execução:</strong>
-<p>Um perfil ou dono do dispositivo pode definir uma política
-de permissão para todas as solicitações do tempo de execução de todos os aplicativos que usam 
-{@code DevicePolicyManager.setPermissionPolicy()}, seja para solicitar ao usuário para conceder
-a permissão como normal ou automaticamente conceder ou negar a permissão silenciosamente. Se a política posterior
-for definida, o usuário não poderá modificar a seleção feita pelo perfil ou dono do dispositivo dentro da tela de permissões
-do aplicativo em <strong>configurações</strong>.</p></li>
-<li><strong>VPN em configurações:</strong> Os aplicativos de VPN agora estão visíveis em 
-<strong>Configurações &gt; Mais &gt; VPN</strong>.
-Além disso, as notificações que acompanham o uso de VPN são específicas sobre como essa VPN
-é configurada. Para o dono de um perfil, as notificações são específicas para determinar
-se a VPN é configurada para um perfil gerenciado, um perfil pessoal ou ambos. Para o dono do dispositivo, as notificações
-são específicas para determinar se a VPN é configurada para todo o dispositivo.</li>
-<li><strong>Notificação de estado de trabalho:</strong> Um ícone de pasta da barra de status agora aparece
-sempre que um aplicativo do perfil gerenciado tiver uma atividade no primeiro plano. Além disso, se o usuário é desbloqueado
-diretamente para a atividade de um aplicativo no perfil gerenciado, um aviso é exibido notificando
-ao usuário que ele está dentro do perfil de trabalho.
-</li>
-</ul>
-
-<p class="note">
-  Para obter uma vista detalhada de todas as alterações de API no M Developer Preview, consulte o <a href="{@docRoot}preview/download.html">relatório de diferenças de API</a>.
-</p>
diff --git a/docs/html-intl/intl/pt-br/preview/backup/index.jd b/docs/html-intl/intl/pt-br/preview/backup/index.jd
deleted file mode 100644
index 1ba039b..0000000
--- a/docs/html-intl/intl/pt-br/preview/backup/index.jd
+++ /dev/null
@@ -1,327 +0,0 @@
-page.title=Backup automático para aplicativos
-page.tags=backup, previewresources, androidm
-page.keywords=backup, autobackup, preview
-page.image=images/cards/card-auto-backup_2x.png
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Neste documento</h2>
-      <ol>
-        <li><a href="#overview">Visão geral</a></li>
-        <li><a href="#configuring">Configurar backup de dados</a></li>
-        <li><a href="#testing">Testar configuração de backup</a></li>
-        <li><a href="#issues">Problemas conhecidos</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  Frenquentemente, os usuários investem muito tempo e esforço para criar dados e configurar preferências
- nos aplicativos. Preservar esses dados para os usuários caso substituam um dispositivo quebrado ou atualizem-se para um novo
- é importante para garantir uma ótima experiência de usuário. Dispositivos que executam o sistema Android M Preview
- ajudam a garantir uma boa experiência para os usuários nessas circunstâncias realizando o backup dos dados do aplicativo
- automaticamente no Google Drive. Os dados do aplicativo são restaurados automaticamente se um usuário alterar ou atualizar um
- dispositivo.
-</p>
-
-<p>
-  Os backups automáticos estão ativos para todos os aplicativos instalados nos dispositivos que executam o Android M Preview. Nenhum
- código adicional de aplicativo é necessário. O sistema fornece aos usuários a habilidade de decisão
- sobre os backups automáticos de dados. Também é possível limitar quais dados do aplicativo devem ter o backup.
-</p>
-
-<p>
-  Este documento descreve o novo comportamento do sistema e como especificar quais dados terão backup
- para o aplicativo.
-</p>
-
-<h2 id="overview">Visão geral</h2>
-
-<p>
-  O recurso de backup automático preserva os dados que o aplicativo cria em um dispositivo de usuário enviando-os
- à conta do Google Drive do usuário e criptografando-os. Não há cobranças para você ou para o usuário
- em relação ao armazenamento de dados e os dados salvos não contam para a cota do Drive pessoal do usuário. Durante
- o período do M Preview, os usuários podem armazenar até 25 MB por aplicativo do Android.
-</p>
-
-<p>
-  Os backups automáticos ocorrem a cada 24 horas, quando o dispositivo está ocioso, carregando e conectado
- a uma rede Wi-Fi. Quando esses requisitos são atendidos, o serviço Backup Manager envia todos os dados de backup
- disponíveis à nuvem. Quando um usuário transita para um novo dispositivo, ou desinstala e reinstala
- o aplicativo com backup realizado, uma operação de restauração copia os dados de backup para o diretório de dados
- do aplicativo recém-instalado.
-</p>
-
-<p class="note">
-  <strong>Observação:</strong> se o usuário usar o
- <a href="{@docRoot}google/backup/index.html">serviço de Backup do Android</a> de legado, este novo comportamento
- não se aplicará aos trabalhos de comportamento de backup existentes com o normal.
-</p>
-
-
-<h3 id="auto-exclude">Arquivos de dados excluídos automaticamente</h3>
-
-<p>
-  Nem todos os dados do aplicativo devem ter backup, como arquivos temporários e de armazenamento em cachê. Portanto, o serviço de backup automático
- exclui determinados arquivos de dados por padrão:
-</p>
-
-<ul>
-  <li>Arquivos em diretórios identificados pelos métodos {@link android.content.Context#getCacheDir
- getCacheDir()} e {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()}
-.
-  </li>
-
-  <li>Arquivos localizados no armazenamento externo, a não ser que estejam no diretório identificado pelo método
- {@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
-.
-  </li>
-
-  <li>Arquivos localizados no diretório identificado pelo método
- {@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()}.
-  </li>
-</ul>
-
-<h2 id="configuring">Configurar backup de dados</h2>
-
-<p>
-  Os dados criados por qualquer aplicativo instalado em um dispositivo M Preview têm backup, exceto
- os arquivos excluídos automaticamente listados na seção anterior. É possível limitar e configurar
- quais dados terão backup no seu aplicativo usando as configurações no manifesto do aplicativo.
-</p>
-
-<h3 id="include-exclude">Incluir ou excluir dados</h3>
-
-<p>
-  Dependendo de quais dados o aplicativo precisar e do modo que forem salvos, você precisará definir
- regras específicas para incluir ou excluir determinados arquivos ou diretórios. O serviço de backup automático suporta
- a configuração dessas regras de backup por meio do uso de um arquivo de configuração XML e do
- manifesto do aplicativo. No manifesto do aplicativo, é possível especificar o arquivo de configuração de esquema de backup como exibido
- no seguinte exemplo:
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:tools="http://schemas.android.com/tools"
-        package="com.my.appexample"&gt;
-    &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
-    &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
-    &lt;app ...
-<strong>        android:fullBackupContent="&#64;xml/mybackupscheme"&gt;</strong>
-    &lt;/app&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
-
-<p>
-  Neste código de exemplo, o atributo <code>android:fullBackupContent</code> especifica um arquivo XML,
- localizado no diretório <code>res/xml/</code> do projeto de desenvolvimento do aplicativo, chamado
- <code>mybackupscheme.xml</code>. Este arquivo de configuração inclui as regras de quais arquivos terão
- backup. O seguinte código de exemplo mostra um arquivo de configuração que exclui um arquivo específico
- dos backups:
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;full-backup-content&gt;
-    &lt;exclude domain="database" path="device_info.db"/&gt;
-&lt;/full-backup-content&gt;
-</pre>
-
-<p>
-  Esta configuração de backup de exemplo exclui do backup somente um arquivo específico do banco de dados.
-  Todos os outros arquivos terão backup.
-</p>
-
-<h4>Sintaxe da configuração de backup</h4>
-
-<p>
-  A configuração do serviço de backup permite que você especifique quais arquivos incluir ou excluir do
-backup. A sintaxe para o arquivo XML de configuração de backup de dados é a seguinte:
-</p>
-
-<pre>
-&lt;full-backup-content&gt;
-    &lt;include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
-    &lt;exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
-&lt;/full-backup-content&gt;
-</pre>
-
-<p>
-  Os seguintes elementos e atributos permitem que você especifique os arquivos que serão incluídos ou excluídos
- do backup:
-</p>
-
-<ul>
-  <li>
-  <code>&lt;include&gt;</code>. Use este elemento se quiser especificar um conjunto de recursos
-para o backup, em vez de fazer o sistema realizar o backup de todos os dados no aplicativo por padrão. Ao especificar
- uma tag <code>&lt;include&gt;</code>, o sistema realiza apenas o backup <em>dos recursos especificados</em>
- com este elemento.
-  </li>
-
-  <li>
-  <code>&lt;exclude&gt;</code>. Use este elemento para especificar um conjunto de recursos que será excluído
- do backup. O sistema realiza o backup de todos os dados no aplicativo, exceto os recursos especificados
- com este elemento.
-  </li>
-
-  <li>
-  <code>domain.</code> O tipo de recurso que deseja excluir ou incluir no backup. Os valores válidos
- que podem ser especificados para este atributo incluem:
-  </li>
-
-  <li style="list-style: none">
-  <ul>
-    <li>
-    <code>root</code>. Especifica que o recurso está no diretório raiz do aplicativo.
-    </li>
-
-    <li>
-    <code>file</code>. Corresponde ao recurso no diretório retornado
- pelo método {@link android.content.Context#getFilesDir getFilesDir()}.
-    </li>
-
-    <li>
-    <code>database</code>. Corresponde ao banco de dados retornado
- pelo método {@link android.content.Context#getDatabasePath getDatabasePath()} ou usando
- a classe {@link android.database.sqlite.SQLiteOpenHelper}.
-    </li>
-
-    <li>
-    <code>sharedpref</code>. Corresponde a um objeto {@link android.content.SharedPreferences}
- retornado pelo método {@link android.content.Context#getSharedPreferences getSharedPreferences()}
-.
-    </li>
-
-    <li>
-    <code>external</code>. Especifica que o recurso está no armazenamento externo e corresponde
- a um arquivo no diretório retornado pelo método
- {@link android.content.Context#getExternalFilesDir getExternalFilesDir()}.
-    </li>
-
-    <li>
-    <code>path</code>. O caminho de arquivo para um recurso que deseja excluir ou incluir
- no backup.
-    </li>
-  </ul>
-  </li>
-</ul>
-
-
-<h3 id="prohibit">Proibir backup de dados</h3>
-
-<p>
-  É possível optar por evitar backups automáticos de quaisquer dados do aplicativo configurando
- o atributo <code>android:allowBackup</code> para <code>false</code> no elemento do aplicativo
- do manifesto. Esta configuração é ilustrada no seguinte código de exemplo:
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:tools="http://schemas.android.com/tools"
-        package="com.my.appexample"&gt;
-    &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
-    &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
-    &lt;app ...
-<strong>        android:allowBackup="false"&gt;</strong>
-    &lt;/app&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
-
-
-<h2 id="testing">Testar configuração de backup</h2>
-
-<p>
-  Ao criar uma configuração de backup, deve-se testá-la para garantir que o aplicativo
- salva os dados e que eles podem ser restaurados corretamente.
-</p>
-
-
-<h4>Ativar registro de backup</h4>
-
-<p>
-  Para ajudar a determinar como o recurso de backup analisa o arquivo XML, ative o registro
- antes de realizar um backup de teste:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
-</pre>
-
-<h4>Teste de backup</h4>
-
-<p>Para executar um backup manualmente, primeiro deve-se inicializar o Backup Manager chamando o seguinte
- comando:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr run
-</pre>
-
-<p>
-  Em seguida, realiza-se o backup manualmente do aplicativo usando o seguinte comando, especificando o nome
- do pacote para o aplicativo como o parâmetro <code>&lt;PACKAGE&gt;</code>:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr fullbackup &lt;PACKAGE&gt;</pre>
-
-
-<h4>Teste de restauração</h4>
-
-<p>
-  Para iniciar manualmente uma restauração após o backup dos dados do aplicativo, chame o seguinte comando,
- especificando o nome do pacote para o aplicativo como o parâmetro <code>&lt;PACKAGE&gt;</code>:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr restore &lt;PACKAGE&gt;
-</pre>
-
-<p class="warning">
-  <b>Aviso:</b> esta ação impede o aplicativo de apagar os dados antes de realizar
- a operação de restauração.
-</p>
-
-<p>
-  Para iniciar o processo de restauração do aplicativo, deve-se desinstalar e reinstalá-lo. Os dados
- do aplicativo são restaurados automaticamente a partir da nuvem quando a instalação do aplicativo for concluída.
-</p>
-
-
-<h4>Resolução de problemas de backups</h4>
-
-<p>
-  Caso ocorra problemas, é possível apagar os dados de backup e os metadados associados desativando o backup
- e reativando-o em <strong>Settings (Configurações) &gt; Backup</strong>, redefinindo o dispositivo para as especificações de fábrica, ou
- chamando este comando:
-</p>
-
-<pre>$ adb shell bmgr wipe &lt;TRANSPORT&gt; &lt;PACKAGE&gt;</pre>
-
-<p>
-  O valor <code>&lt;TRANSPORT&gt;</code> deve ser prefixado por <code>com.google.android.gms</code>.
-  Para obter uma lista de transportes, chame o seguinte comando:
-</p>
-
-<pre>$ adb shell bmgr list transports</pre>
-
-<h2 id="issues">Problemas conhecidos</h2>
-
-<p>A seguir estão os problemas conhecidos com o serviço de backup automático:</p>
-
-<ul>
-  <li><strong>Google Cloud Messaging</strong> -
- Para aplicativos que usam o Google Cloud Messaging para notificações push, há um problema conhecido
- onde o backup do ID de registro retornado pelo registro do Google Cloud Messaging pode
- desencadear notificações push para o aplicativo restaurado. É importante consultar a API para obter um novo ID de registro
- após a instalação em um novo dispositivo, o que não deve ser o caso se o ID de registro antigo
- tiver backup. Para evitar isto, exclua o ID de registro do conjunto de arquivos
- de backup.
-  </li>
-</ul>
diff --git a/docs/html-intl/intl/pt-br/preview/behavior-changes.jd b/docs/html-intl/intl/pt-br/preview/behavior-changes.jd
deleted file mode 100644
index cd99bbd..0000000
--- a/docs/html-intl/intl/pt-br/preview/behavior-changes.jd
+++ /dev/null
@@ -1,402 +0,0 @@
-page.title=Mudanças de comportamento
-page.keywords=preview,sdk,compatibility
-sdk.platform.apiLevel=MNC
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Neste documento</h2>
-
-<ol id="toc44" class="hide-nested">
-    <li><a href="#behavior-runtime-permissions">Permissões do tempo de execução</a></li>
-    <li><a href="#behavior-power">Otimizações de economia de energia</a>
-        <ol>
-            <li><a href="#behavior-doze">Soneca</a></li>
-            <li><a href="#behavior-app-standby">Aplicativo em espera</a></li>
-        </ol>
-    </li>
-    <li><a href="#behavior-adoptable-storage">Dispositivos de armazenamento adotáveis</a></li>
-    <li><a href="#behavior-apache-http-client">Remoção do cliente Apache HTTP</a></li>
-    <li><a href="#behavior-audiomanager-Changes">Mudanças no AudioManager</a></li>
-    <li><a href="#behavior-test-selection">Seleção de texto</a></li>
-    <li><a href="#behavior-keystore">Mudanças no Android Keystore</a></li>
-    <li><a href="#behavior-network">Mudanças de rede e Wi-Fi</a></li>
-    <li><a href="#behavior-camera">Mudanças no serviço de câmera</a></li>
-    <li><a href="#behavior-art-runtime">Tempo de execução de ART</a></li>
-    <li><a href="#behavior-apk-validation">Validação de APK</a></li>
-    <li><a href="#behavior-afw">Mudanças do Android for Work</a></li>
-</ol>
-
-<h2>Diferenças de API</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">API de nível 22 para M Preview &raquo;</a> </li>
-</ol>
-
-
-<h2>Veja também</h2>
-<ol>
-<li><a href="{@docRoot}preview/api-overview.html">Visão geral da API do M Developer Preview</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>Junto com novas capacidades e recursos, o M Developer Preview inclui uma variedade
-de mudanças do sistema e alterações no comportamento da API. Este documento destaca algumas
-das alterações principais que você deve entender e levar em consideração nos aplicativos.</p>
-
-<p>Caso tenha publicado anteriormente um aplicativo para Android, saiba que ele pode ser afetado
- pelas alterações na plataforma.</p>
-
-<h2 id="behavior-runtime-permissions">Permissões do tempo de execução</h1>
-<p>Esta prévia introduz um novo modelo de permissões em que os usuários podem gerenciar diretamente
- as permissões do aplicativo no tempo de execução. Este modelo fornece aos usuários uma visibilidade aprimorada e controle sobre permissões,
- ao mesmo tempo em que agiliza os processos de atualização automática e instalação para os desenvolvedores de aplicativos.
-Os usuários podem conceder ou revogar as permissões individualmente para os aplicativos instalados. </p>
-
-<p>Nos aplicativos direcionados para o M Preview, certifique-se de verificar e solicitar as permissões
- no tempo de execução. Para determinar se o aplicativo recebeu uma permissão, chame
- o novo método {@code Context.checkSelfPermission()}. Para solicitar uma permissão, chame o novo método
- {@code Activity.requestPermission()}. Mesmo se o aplicativo não é direcionado para o M,
- deve-se testá-lo sob o novo modelo de permissões.</p>
-
-<p>Para obter mais detalhes sobre o suporte do novo modelo de permissões no aplicativo, consulte a página de prévia de desenvolvedor 
-<a href="{@docRoot}preview/features/runtime-permissions.html">
-Permissões</a>. Para obter dicas sobre como avaliar o impacto no aplicativo,
- consulte o <a href="{@docRoot}preview/testing/guide.html#runtime-permissions">guia de teste</a>.</p>
-
-<h2 id="behavior-power">Otimizações de economia de energia</h2>
-<p>Esta prévia introduz novas otimizações de economia de energia para dispositivos e aplicativos ociosos.</p>
-
-<h3 id="behavior-doze">Soneca</h3>
-<p>Se o dispositivo estiver desconectado e parado com a tela desligada por um período,
- o modo <em>Soneca</em> será ativado, onde ele tentará manter o sistema em um estado ocioso. Neste modo,
- os dispositivos retomam as operações normais periodicamente por breves períodos para que a sincronização de aplicativos
- possa ocorrer e para que o sistema possa realizar quaisquer operações pendentes.</p>
-
-<p>As seguintes restrições se aplicam aos aplicativos durante a Soneca:</p>
-<ul>
-<li>O acesso à rede é desativado, a não ser que o aplicativo receba um convite de alta prioridade
- do Google Cloud Messaging.</li>
-<li><a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">Bloqueios de soneca</a> são ignorados.</li>
-<li>Os despertadores agendados com a classe {@link android.app.AlarmManager} são ignorados,
- exceto os alarmes definidos com o método {@link android.app.AlarmManager#setAlarmClock setAlarmClock()}
- e {@code AlarmManager.setAndAllowWhileIdle()}.</li>
-<li>As verificações de Wi-Fi não são realizadas.</li>
-<li>Sincronizações e trabalhos para os adaptadores de sincronização e {@link android.app.job.JobScheduler}
- não têm permissão para serem executados.</li>
-</ul>
-</p>
-<p>Quando o dispositivo sair do modo soneca, quaisquer sincronizações e trabalhos pendentes são executados.</p>
-<p>É possível testar este recurso conectando o dispositivo executando o M Preview
- à máquina de desenvolvimento e chamando os seguintes comandos:
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-<p class="note"><strong>Observação</strong>: o próximo lançamento do 
-<a href="https://developers.google.com/cloud-messaging/" class="external-link">
-Google Cloud Messaging</a> permite que você designe
- mensagens de alta prioridade. Se o aplicativo recebe mensagens de alta prioridade do GCM,
- um acesso breve à rede é concedido mesmo quando o dispositivo está no modo soneca.
-</p>
-
-<p>Consulte o
-<a href="{@docRoot}preview/testing/guide.html#doze-standby">guia de teste</a> para obter dicas sobre
-como testar a soneca nos aplicativos. </p>
-
-<h3 id="behavior-app-standby">Aplicativo em espera</h3>
-<p>Com esta prévia, o sistema pode determinar quais aplicativos estão em espera quando
-não estão em uso ativo. O aplicativo é considerado em espera após um período, a não ser que o sistema detecte
-algum destes sinais:</p>
-
-<ul>
-<li>O aplicativo foi explicitamente iniciado pelo usuário.</li>
-<li>O aplicativo tem um processo atualmente em primeiro plano (seja uma atividade ou serviço de primeiro plano
- ou esteja em uso por outra atividade ou serviço de primeiro plano).</li>
-<li>O aplicativo gera uma notificação que o usuário vê na tela de bloqueio
- ou na bandeja de notificações.</li>
-<li>O usuário explicitamente pede para que o aplicativo seja liberado das otimizações,
- ajustado em <strong>Settings (Configurações)</strong>.</li>
-</ul>
-
-<p>Se o dispositivo estiver desconectado, o aplicativo considerado ocioso terá o acesso
-à rede desativado e as sincronizações e os trabalhos suspensos. Quando o dispositivo está conectado em uma fonte de alimentação,
- esses aplicativos têm acesso à rede permitido e podem executar quaisquer sincronizações e trabalhos pendentes. Se o dispositivo permanece ocioso por longos períodos,
- os aplicativos ociosos têm acesso à rede permitido aproximadamente uma vez por dia.</p>
-
-<p>É possível testar este recurso conectando o dispositivo executando o M Preview
- à máquina de desenvolvimento e chamando os seguintes comandos:
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell am set-idle &lt;packageName&gt; true
-$ adb shell am set-idle &lt;packageName&gt; false
-$ adb shell am get-idle &lt;packageName&gt;
-</pre>
-
-<p class="note"><strong>Observação</strong>: o próximo lançamento do
-<a href="https://developers.google.com/cloud-messaging/" class="external-link">
-Google Cloud Messaging</a> (GCM) permite que você
-designe mensagens de alta prioridade. Se o aplicativo recebe mensagens de alta prioridade do GCM,
-um acesso breve à rede é concedido mesmo quando o aplicativo está ocioso.
-</p>
-
-<p>Consulte o
-<a href="{@docRoot}preview/testing/guide.html#doze-standby">guia de teste</a> para obter dicas sobre como
-testar a espera dos aplicativos. </p>
-
-<h2 id="behavior-adoptable-storage">Dispositivos de armazenamento adotáveis</h2>
-<p>
-Com esta prévia, os usuários podem <em>adotar</em> dispositivos de armazenamento externo como cartões SD. Adotar um dispositivo
-de armazenamento externo criptografa e formata o dispositivo para agir como um armazenamento interno. Este recurso
-permite que os usuários movam aplicativos e dados privados desses aplicativos entre dispositivos de armazenamento. Ao mover aplicativos,
-o sistema respeita a preferência
-<a href="{@docRoot}guide/topics/manifest/manifest-element.html#install">{@code android:installLocation}</a>
-no manifesto.</p>
-
-<p>Se o aplicativo acessar as seguintes APIs ou campos, saiba que os caminhos de arquivos retornados
-serão alterados dinamicamente quando o aplicativo for movido entre os dispositivos de armazenamento externo e interno.
-Ao compilar caminhos de arquivos, é recomendado que essas APIs sempre sejam chamadas dinamicamente.
-Não use caminhos de arquivo criptografados nem persista em caminhos de arquivo completamente qualificados que foram compilados anteriormente.</p>
-
-<ul>
-<li>Métodos {@link android.content.Context}:
-    <ul>
-        <li>{@link android.content.Context#getFilesDir() getFilesDir()}</li>
-        <li>{@link android.content.Context#getCacheDir() getCacheDir()}</li>
-        <li>{@link android.content.Context#getCodeCacheDir() getCodeCacheDir()}</li>
-        <li>{@link android.content.Context#getDatabasePath(java.lang.String) getDatabasePath()}</li>
-        <li>{@link android.content.Context#getDir(java.lang.String,int) getDir()}</li>
-        <li>{@link android.content.Context#getNoBackupFilesDir() getNoBackupFilesDir()}</li>
-        <li>{@link android.content.Context#getFileStreamPath(java.lang.String) getFileStreamPath()}</li>
-        <li>{@link android.content.Context#getPackageCodePath() getPackageCodePath()}</li>
-        <li>{@link android.content.Context#getPackageResourcePath() getPackageResourcePath()}</li>
-    </ul>
-</li>
-<li>Campos {@link android.content.pm.ApplicationInfo}:
-    <ul>
-        <li>{@link android.content.pm.ApplicationInfo#dataDir dataDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#sourceDir sourceDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#nativeLibraryDir nativeLibraryDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#publicSourceDir publicSourceDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#splitSourceDirs splitSourceDirs}</li>
-        <li>{@link android.content.pm.ApplicationInfo#splitPublicSourceDirs splitPublicSourceDirs}</li>
-    </ul>
-</li>
-</ul>
-
-<p>Para depurar este recurso na prévia de desenvolvedor, é possível ativar a adoção
-de uma unidade USB que está conectada a um dispositivo Android por meio de um cabo USB On-The-Go (OTG) executando este comando:</p>
-
-<pre class="no-prettyprint">
-$ adb shell sm set-force-adoptable true
-</pre>
-
-<h2 id="behavior-apache-http-client">Remoção do cliente Apache HTTP</h2>
-<p>Esta prévia remove o suporte para o cliente Apache HTTP. Se o aplicativo estiver usando este cliente e for direcionado
-para Android 2.3 (nível da API 9) ou mais recente, use
-a classe {@link java.net.HttpURLConnection}. Esta API é mais eficiente, pois reduz o uso de rede por meio de compressão transparente e armazenamento
-em cachê de respostas, além de minimizar o consumo de energia. Para continuar usando as APIs do Apache HTTP,
-deve-se primeiro declarar a dependência de tempo de compilação no arquivo {@code build.gradle}:
-</p>
-<pre>
-android {
-    useLibrary 'org.apache.http.legacy'
-}
-</pre>
-<p>O Android está mudando da biblioteca OpenSSL para
-<a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a>
-. Caso esteja usando o Android NDK no aplicativo, não vincule contra bibliotecas criptográficas
-que não fazem parte da API de NDK, como {@code libcrypto.so} e {@code libssl.so}. Estas bibliotecas não são APIs públicas
-e podem mudar ou apresentar erros sem notificar entre liberações e dispositivos.
-Além disso, você pode se expor a vulnerabilidades de segurança. Em vez disso,
-modifique o código nativo para chamar as APIs de criptografia Java via JNI ou para vincular estaticamente
-com relação a uma biblioteca criptográfica de sua escolha.</p>
-
-<h2 id="behavior-audiomanager-Changes">Mudanças no AudioManager</h2>
-<p>Ajustar o volume diretamente ou desativar o áudio de transmissões específicas por meio da classe {@link android.media.AudioManager}
-não são mais recursos suportados. O método {@link android.media.AudioManager#setStreamSolo(int,boolean)
-setStreamSolo()} é obsoleto e deve-se chamar o método
-{@code AudioManager.requestAudioFocus()}. De forma semelhante, o método
-{@link android.media.AudioManager#setStreamMute(int,boolean) setStreamMute()} é
-obsoleto; em vez disso, chame o método {@code AudioManager.adjustStreamVolume()}
-e passe o valor da direção de {@code ADJUST_MUTE} ou {@code ADJUST_UNMUTE}.</p>
-
-<h2 id="behavior-test-selection">Seleção de texto</h2>
-
-<img src="{@docRoot}preview/images/text-selection.gif" style="float:right; margin:0 0 20px 30px" width="360" height="640" />
-
-<p>Quando os usuários selecionam o texto no aplicativo, agora é possível exibir ações de seleção de texto como 
-<em>Recortar</em>, <em>Copiar</em> e <em>Colar</em> na 
-<a href="http://www.google.com/design/spec/patterns/selection.html#selection-text-selection" class="external-link">barra de ferramentas flutuante</a>. A implementação da interação do usuário é semelhante ao processo
-da barra de ação contextual, como descrito em 
-<a href="{@docRoot}guide/topics/ui/menus.html#CABforViews">
-Ativação do modo de ação contextual para vistas individuais</a>.</p>
-
-<p>Para implementar uma barra de ferramentas flutuante para seleção de texto, faça as seguintes alterações nos aplicativos
-existentes:</p>
-<ol>
-<li>No objeto {@link android.view.View} ou {@link android.app.Activity}, altere as chamadas 
-{@link android.view.ActionMode} de 
-{@code startActionMode(Callback)} para {@code startActionMode(Callback, ActionMode.TYPE_FLOATING)}.</li>
-<li>Pegue a implementação existente de {@code ActionMode.Callback} e torne-a uma extensão de
-{@code ActionMode.Callback2}.</li>
-<li>Substitua o método {@code Callback2.onGetContentRect()} para fornecer as coordenadas do conteúdo
-do objeto {@link android.graphics.Rect} (como um retângulo de seleção de texto) na vista.</li>
-<li>Se o posicionamento do retângulo deixar de ser válido e for o único elemento a ser invalidado,
-chame o método {@code ActionMode.invalidateContentRect()}.</li>
-</ol>
-
-<p>Caso esteja usando a <a href="{@docRoot}tools/support-library/index.html">
-biblioteca de suporte Android</a> revisão 22.2, saiba que as barras de ferramentas flutuantes não
-têm compatibilidade com versões anteriores e que o appcompat tem controle sobre os objetos {@link android.view.ActionMode} por
-padrão. Isto evita que barras de ferramentas flutuantes sejam exibidas. Para ativar o suporte de 
-{@link android.view.ActionMode} em um 
-{@link android.support.v7.app.AppCompatActivity}, chame 
-{@code android.support.v7.app.AppCompatActivity.getDelegate()} e, em seguida, chame 
-{@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()} no objeto 
-{@link android.support.v7.app.AppCompatDelegate} retornado e defina
-o parâmetro de entrada para {@code false}. Esta chamada retorna o controle dos objetos {@link android.view.ActionMode}
-à estrutura. Em dispositivos que são executados no M Preview, isto permite que a estrutura suporte os modos de 
-{@link android.support.v7.app.ActionBar} ou de barra de ferramenta flutuante, enquanto que, para dispositivos anteriores ao M Preview,
-somente os modos {@link android.support.v7.app.ActionBar} são suportados.</p>
-
-<h2 id="behavior-keystore">Mudanças no Android Keystore</h2>
-<p>Com esta prévia,
-o <a href="{@docRoot}training/articles/keystore.html">provedor Android Keystore</a> não suporta mais
-DSA. ECDSA ainda é suportado.</p>
-
-<p>As chaves que não exigem criptografia em rest não precisam ser excluídas quando a tela de bloqueio segura
-é desativada ou redefinida (por exemplo, pelo usuário ou por um administrador do dispositivo). As chaves que exigem
-criptografia serão excluídas durante esses eventos.</p>
-
-<h2 id="behavior-network">Mudanças de rede e Wi-Fi</h2>
-
-<p>Esta prévia introduz as seguintes alterações de comportamento nas APIs de rede e Wi-Fi.</p>
-<ul>
-<li>Os aplicativos podem alterar o estado dos objetos {@link android.net.wifi.WifiConfiguration}
-somente se você os tiver criado. Você não tem permissão para modificar nem excluir objetos
-{@link android.net.wifi.WifiConfiguration} criados pelo usuário ou outros aplicativos.
-</li>
-<li>
-Anteriormente, se um aplicativo forçasse o dispositivo a se conectar a uma rede Wi-Fi específica usando
-{@link android.net.wifi.WifiManager#enableNetwork(int,boolean) enableNetwork()} com a configuração
-{@code disableAllOthers=true}, o dispositivo desconectava de outras redes,
-como dados de celular. Nesta prévia, o dispositivo não rompe a conexão com outras redes. Se
-o {@code targetSdkVersion} do aplicativo for {@code “20”} ou menor, ele é fixado
-à rede Wi-Fi selecionada. Se o {@code targetSdkVersion} do aplicativo for {@code “21”} ou maior, use
-as APIS de multi-rede (como
-{@link android.net.Network#openConnection(java.net.URL) openConnection()},
-{@link android.net.Network#bindSocket(java.net.Socket) bindSocket()} e o novo método
-{@code ConnectivityManager.bindProcessToNetwork()}) para garantir que o tráfego de rede
-seja enviado na rede selecionada.</li>
-</ul>
-
-<h2 id="behavior-camera">Mudanças no serviço de câmera</h2>
-<p>Nesta prévia, o modelo para acessar recursos compartilhados no serviço de câmera foi alterado
-do antigo modelo de acesso “primeiro a chegar, primeiro a ser atendido” para um modelo de acesso onde
-os processos de alta prioridade são favorecidos.  As mudanças no comportamento do serviço incluem:</p>
-<ul>
-<li>Acesso aos recursos do subsistema da câmera, incluindo abertura e configuração de um dispositivo de câmera,
-concedido com base na prioridade do processo do aplicativo do cliente. Processos de aplicativos com atividades
-visíveis ao usuário ou de primeiro plano são geralmente de alta prioridade, tornando a aquisição
-e o uso de recursos da câmera mais dependentes.</li>
-<li>Clientes de câmera ativa para aplicativos de menor prioridade podem ser "despejados" quando
-um aplicativo de alta prioridade tenta usar a câmera.  Na API {@link android.hardware.Camera} obsoleta,
-isto resulta em
-{@link android.hardware.Camera.ErrorCallback#onError(int,android.hardware.Camera) onError()} sendo
-chamado para o cliente despejado. Na API {@link android.hardware.camera2 Camera2}, isto resulta em
-{@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected(android.hardware.camera2.CameraDevice) onDisconnected()}
-sendo chamado para o cliente despejado.</li>
-<li>Em dispositivos com hardware de câmera adequado, processos de aplicativo separados podem
-abrir e usar independentemente os dispositivos de câmera simultaneamente. No entanto, casos de uso de vários processos
-em que o acesso simultâneo causa uma degradação significante de desempenho ou capacidades
-de qualquer um dos dispositivos de câmera abertos agora são detectados e proibidos pelo serviço da câmera. Esta alteração
-pode resultar em "despejos" para clientes de menor prioridade quando nenhum aplicativo está
-tentando acessar o mesmo dispositivo de câmera diretamente.
-</li>
-<li>
-Alterar o usuário atual faz com que os clientes da câmera ativa em aplicativos pertencentes à conta do usuário anterior
-sejam despejados.  O acesso à câmera é limitado a perfis de usuário pertencentes ao usuário do dispositivo atual.
-Na prática, isso significa que uma conta de "convidado", por exemplo, não poderá deixar
-processos em execução que usam o subsistema da câmera quando o usuário alternar para uma conta diferente.
-</li>
-</ul>
-
-<h2 id="behavior-art-runtime">Tempo de execução de ART</h2>
-<p>O tempo de execução de ART agora implementa adequadamente as regras de acesso
-para o método {@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()}. Esta
-alteração corrige um problema onde o Dalvik estava verificando as regras de acesso incorretamente em versões anteriores.
-Se o aplicativo usa o método
-{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} e você quer
-substituir as verificações de acesso, chame o método
-{@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()} com o parâmetro
-de entrada definido como {@code true}. Se o aplicativo usar a
-<a href="{@docRoot}tools/support-library/features.html#v7-appcompat">biblioteca v7 appcompat</a> ou a 
-<a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">biblioteca v7 recyclerview</a>,
-deve-se atualizá-lo para usar as versões mais recentes dessas bibliotecas. Caso contrário, certifique-se
-de que as classes personalizadas mencionadas a partir do XML sejam atualizadas para que os construtores de classe estejam acessíveis.</p>
-
-<p>Esta prévia atualiza o comportamento do vinculador dinâmico. O vinculador dinâmico agora entende
-a diferença entre um {@code soname} da biblioteca e o seu caminho
-(<a href="https://code.google.com/p/android/issues/detail?id=6670" class="external-link">
-erro público 6670</a>), e a pesquisa por {@code soname}
-agora está implementada. Os aplicativos que anteriormente trabalhavam e têm entradas {@code DT_NEEDED} inválidas
-(geralmente, caminhos absolutos no sistema de arquivo na máquina de programação) podem falhar ao serem carregados.</p>
-
-<p>O sinalizador {@code dlopen(3) RTLD_LOCAL} agora está corretamente implementado. Observe que
-{@code RTLD_LOCAL} é o padrão. Portanto, chamadas para {@code dlopen(3)} que não usam explicitamente
-{@code RTLD_LOCAL} serão afetadas (a não ser que o aplicativo tenha usado explicitamente {@code RTLD_GLOBAL}). Com
-{@code RTLD_LOCAL}, os símbolos não estarão disponíveis para as bibliotecas carregadas por chamadas posteriores a
-{@code dlopen(3)} (o oposto ocorre quando mencionado por entradas {@code DT_NEEDED}).</p>
-</p>
-
-<h2 id="behavior-apk-validation">Validação de APK</h2>
-<p>A plataforma agora realiza validações mais estritas de APKs. Um APK é considerado corrompido se um arquivo
-for declarado no manifesto, mas não estiver presente no próprio APK. Um APK deve ser atribuído novamente se qualquer
-conteúdo for removido.</p>
-
-<h2 id="behavior-afw">Mudanças do Android for Work</h2>
-<p>Esta prévia inclui as seguintes mudanças de comportamento para Android for Work:</p>
-<ul>
-<li><strong>Contatos de trabalho em contextos pessoais.</strong> O registro de chamadas do telefone do Google
-agora exibe os contatos de trabalho quando o usuário visualiza chamadas anteriores.
-A configuração {@code DevicePolicyManager.setCrossProfileCallerIdDisabled()} para {@code true} oculta
-os contatos do perfil de trabalho no registro de chamadas do telefone. Os contatos de trabalho podem ser exibidos junto com os contatos pessoais
-aos dispositivos por meio de Bluetooth somente
-se {@code DevicePolicyManager.setBluetoothContactSharingDisabled()} estiver definido como {@code false}. Por
-padrão, ele está definido como {@code true}.
-</li>
-<li><strong>Remoção de configuração Wi-Fi:</strong> as configurações de Wi-Fi adicionadas por um dono de perfil
-(por exemplo, por meio de chamadas para o método
-{@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration)
-addNetwork()}) agora são removidas se esse perfil de trabalho é excluído.</li>
-<li><strong>Bloqueio de configuração Wi-Fi:</strong> qualquer configuração Wi-Fi criada por um dono do dispositivo
-ativo não pode mais ser modificada nem excluída pelo usuário. O usuário ainda pode criar
-e modificar as próprias configurações de Wi-Fi, contanto que a constante {@link android.os.UserManager}
-{@link android.os.UserManager#DISALLOW_CONFIG_WIFI} não tenha sido definida por ele.</li>
-<li><strong>Faça o download do Work Policy Controller por meio de uma adição de conta Google:</strong> quando uma conta Google
-que requer um gerenciamento por meio do aplicativo Work Policy Controller (WPC) é adicionada ao dispositivo
-fora de um contexto gerenciado, o fluxo de conta adicionada agora solicita ao usuário para instalar
-o WPC adequado. Este comportamento também se aplica a contas adicionadas por meio de 
-<strong>Settings (Configurações) &gt; Accounts (Contas)</strong> no assistente de configuração inicial do dispositivo.</li>
-<li><strong>Alterações aos comportamentos específicos da API DevicePolicyManager:</strong>
-chamar o método {@link android.app.admin.DevicePolicyManager#setCameraDisabled(android.content.ComponentName,boolean) setCameraDisabled()}
-afeta a câmera somente para o usuário que realizou a chamada. Chamá-lo a partir do perfil gerenciado
-não afeta os aplicativos de câmera em execução no usuário principal. Além disso,
-o método {@link android.app.admin.DevicePolicyManager#setKeyguardDisabledFeatures(android.content.ComponentName,int) setKeyguardDisabledFeatures()}
-agora está disponível para donos de perfil, além dos donos do dispositivo. Um dono de perfil pode definir
-estas restrições de proteção de bloqueio:
-<ul>
-<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_TRUST_AGENTS} e
- {@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_FINGERPRINT}, que afetam
- as configurações de proteção de bloqueio para o usuário pai do perfil.</li>
-<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS}, que
- afeta somente as notificações geradas por aplicativos no perfil gerenciado.</li>
-</ul>
-</li>
-</ul>
diff --git a/docs/html-intl/intl/pt-br/preview/download.jd b/docs/html-intl/intl/pt-br/preview/download.jd
deleted file mode 100644
index 80685f9..0000000
--- a/docs/html-intl/intl/pt-br/preview/download.jd
+++ /dev/null
@@ -1,361 +0,0 @@
-page.title=Downloads
-page.image=images/cards/card-download_16-9_2x.png
-
-@jd:body
-
-<div style="position:relative; min-height:600px">
-
-  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
-    <p class="sdk-terms-intro">Antes de fazer o download ou instalar componentes do Android Preview
- SDK, você deve concordar com os seguintes termos e condições.</p>
-
-    <h2 class="norule">Termos e condições</h2>
-
-    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-Este é o contrato de licença do Android SDK Preview (o “Contrato de Licença”).
-
-1. Introdução
-
-1.1 O Android SDK Preview (que este Contrato de licença chama de "Preview", incluindo especificamente os arquivos de sistema do Android, APIs integradas e arquivos da biblioteca Preview, se e quando estiverem disponíveis) é licenciado por meio da concordância com os termos deste contrato. O Contrato de licença forma um vínculo contratual legal entre o contratante e a Google em relação ao uso do Preview.
-
-1.2 "Android" se refere à pilha de software do Android para dispositivos, conforme disponibilizado no Projeto de código aberto do Android, localizado no URL a seguir: http://source.android.com/, atualizado periodicamente.
-
-1.3 "Google" refere-se à Google Inc, uma corporação de Delaware, com sede em 1600 Amphitheatre Parkway, Mountain View, CA 94043, Estados Unidos.
-
-2. Aceitação do Contrato de Licença
-
-2.1 A fim de usar o Preview, é necessário concordar com este Contrato de licença. O uso do Preview é proibido àqueles que não concordam com este Contrato de licença.
-
-2.2 Ao clicar em aceitar e/ou usar o Preview, você concorda com os termos do Contrato de licença
-
-2.3 É proibido o uso do Preview e a aceitação deste contrato pelo indivíduo que tenha impedimento legal sobre o recebimento do Preview sob as leis dos Estados Unidos ou de outros países, incluindo o país de residência ou no qual usa o Preview.
-
-2.4 Se for usar o Preview internamente na empresa ou organização, você deverá concordar com o vínculo com este contrato em nome do empregador ou de outra entidade e declarar e garantir que tem total autoridade legal para tanto. Se você não tem a autoridade necessária, não deve concordar com este contrato nem usar o Preview em nome do empregador ou de outra entidade.
-
-3. Licença do Preview da Google
-
-3.1 Sujeito aos termos do Contrato de licença, a Google confere uma licença limitada, revogável, livre de taxas, intransmissível, não sub-licenciável e não exclusiva para o uso apenas do Preview, pessoal ou internamente dentro da sua empresa ou organização, para fins de desenvolvimento de aplicativos executados na plataforma do Android.
-
-3.2 Você concorda que a Google ou terceiros detêm todos os direitos legais, títulos e interesses relativos ao Preview, incluindo quaisquer direitos de propriedade intelectual que subsistam no Preview. "Direitos de propriedade intelectual" se referem a todo e qualquer direito sob as leis de patentes, de direitos autorais, de segredo comercial, de marca registrada e todos os outros direitos de propriedade. A Google reserva todos os direitos não conferidos expressamente a você.
-
-3.3 O uso do Preview não é autorizado para qualquer finalidade não expressamente permitida por este Contrato de licença. Salvo na extensão exigida por licenças aplicáveis de terceiros, é proibido: (a) copiar (exceto para fins de cópia de segurança), modificar, adaptar, redistribuir, descompilar, fazer engenharia reversa, desmontar ou criar trabalhos derivados do Preview ou qualquer parte dele; ou (b) carregar qualquer parte do Preview em um aparelho celular ou outro dispositivo de hardware, exceto em computador pessoal, combinar qualquer parte do Preview com outros softwares ou distribuir qualquer software ou dispositivo que contenha uma parte do Preview.
-
-3.4 Você concorda que não tomará quaisquer medidas que possam causar ou resultar em fragmentação do Android, incluindo, sem limitar-se, a distribuição e a participação na criação ou na promoção, sob quaisquer formas, de um conjunto de desenvolvimento de software derivado do Preview.
-
-3.5 O uso, a reprodução e a distribuição de componentes do Preview licenciado sob licença de software de código aberto são regidos exclusivamente pelos termos daquela licença de software de código aberto, e não por este Contrato de licença. Você concorda em manter uma licença em bom estado para as licenças de software de código aberto sob todos os direitos concedidos e deter quaisquer ações que possam limitar, suspender ou romper tais direitos.
-
-3.6 Você concorda que a forma e a natureza do SDK que a Google fornece podem mudar sem aviso prévio e que as versões futuras do SDK podem ser incompatíveis com aplicativos desenvolvidos em versões anteriores do SDK. Você concorda que a Google pode cessar (permanente ou temporariamente) o fornecimento do Preview (ou quaisquer recursos dentro dele) a você ou a usuários em geral sob critério exclusivo da Google, sem aviso prévio.
-
-3.7 Nada neste Contrato de licença confere o direito de uso de quaisquer nomes comerciais, marcas comerciais, marcas de serviço, logomarcas, nomes de domínios e outros recursos de marcas especiais da Google.
-
-3.8 Você concorda que não removerá, ocultará nem alterará quaisquer observações de direitos de propriedade (incluindo observações de direitos autorais e de marcas registradas) que possam estar afixadas ou contidas no Preview.
-
-4. Uso do Preview por você
-
-4.1 A Google compreende que nada no Contrato de licença dá a ela direito, título nem interesse no usuário (ou em seus licenciadores), sob o presente Contrato de licença, no que tange ao desenvolvimento de aplicativos de software através do uso do Preview, incluindo quaisquer direitos de propriedade intelectual que subsistam nos referidos aplicativos.
-
-4.2 Você concorda em usar o Preview e desenvolver aplicativos somente para as finalidades permitidas por (a) este Contrato de licença e (b) quaisquer leis, normas, diretrizes geralmente aceitas ou orientações aplicáveis nas jurisdições relevantes (incluindo quaisquer leis acerca da exportação e da importação de dados ou softwares nos Estados Unidos ou em outros países relevantes).
-
-4.3 Você concorda que, se usar o Preview para o desenvolvimento de aplicativos, deverá proteger a privacidade e os direitos legais destes usuários. Se nomes de usuário, senhas ou outras informações de acesso ou informações pessoais forem fornecidos ao aplicativo, deve-se informá-los de que tais dados estarão disponíveis para o aplicativo, além de fornecer observações de privacidade e proteção legalmente adequadas a esses usuários. Se o aplicativo armazenar informações pessoais ou confidenciais fornecidas pelos usuários, deve fazê-lo com segurança. Se o usuário fornecer informações da conta do Google, o aplicativo poderá usar essas informações exclusivamente para acessar a conta da Google do usuário quando houver autorização para fazê-lo e para os fins limitados pela autorização.
-
-4.4 Você concorda que não se envolverá em qualquer atividade com o Preview, incluindo o desenvolvimento e a distribuição de um aplicativo que interfira, perturbe, danifique ou acesse, de modo não autorizado, servidores, redes ou outras propriedades ou serviços da Google ou qualquer outro terceiro.
-
-4.5 Você concorda que é exclusivamente responsável por (e que a Google não tem qualquer responsabilidade com você ou terceiro) quaisquer dados, conteúdo ou recursos que criar, transmitir ou exibir por meio do Android e/ou de aplicativos do Android e pelas consequências que suas ações (incluindo perda ou dano que a Google possa sofrer) podem gerar.
-
-4.6 Você concorda que é exclusivamente responsável por (e que a Google não tem qualquer responsabilidade com você ou terceiro) qualquer violação das obrigações exigidas neste Contrato de licença, qualquer contrato ou termos de serviço aplicáveis a terceiros, qualquer lei ou norma aplicável e pelas consequências (incluindo a perda ou dano que a Google ou qualquer terceiro possa sofrer) de quaisquer violações.
-
-4.7 O Preview está em desenvolvimento e o seu teste e feedback são uma parte importante deste processo. Ao usar o Preview, você está ciente de que a implementação de alguns recursos ainda estão em desenvolvimento e que não se deve confiar que o Preview tem a funcionalidade completa de uma versão estável. Você concorda em não distribuir nem enviar publicamente quaisquer aplicativos usando este Preview, pois ele não será mais suportado após o lançamento oficial do Android SDK.
-
-5. Suas credenciais de desenvolvedor
-
-5.1 Você é responsável pela manutenção da confidencialidade de quaisquer credenciais de desenvolvedor que possam ser emitidas pela Google ou escolhidas por você e será o único responsável por todos os aplicativos que forem desenvolvidos sob suas credenciais de desenvolvedor.
-
-6. Privacidade e informações
-
-6.1 A fim de inovar e aprimorar continuamente o Preview, a Google pode coletar certas estatísticas de uso do software, incluindo, sem limitar-se, um identificador exclusivo, endereço IP associado, número de versão do software e informações sobre quais ferramentas e/ou serviços no Preview estão sendo usados e como estão sendo usados. Antes de coletar quaisquer dessas informações, o Preview o notificará e buscará seu consentimento. Se você recusar, as informações não serão coletadas.
-
-6.2 Os dados coletados são examinados coletivamente para aprimorar o Preview e são mantidos em conformidade com a Política de privacidade da Google acessível em http://www.google.com/policies/privacy/.
-
-7. Aplicativos de terceiros
-
-7.1 Ao usar o Preview para executar aplicativos desenvolvidos por terceiros ou que acessam dados, conteúdo ou recursos fornecidos por terceiros, você concorda que a Google não é responsável por tais aplicativos, dados, conteúdo ou recursos. Você compreende que quaisquer dados, conteúdo ou recursos passíveis de aceitação por meio de tais aplicativos de terceiros imputam responsabilidade exclusiva ao indivíduo que os originou. A Google não é responsável por qualquer perda ou dano que possa ocorrer como resultado do uso ou acesso de quaisquer aplicativos, dados, conteúdo ou recursos de terceiros.
-
-7.2 Você deve estar ciente de que os dados, conteúdo e recursos apresentados a você por aplicativos de terceiros podem ser protegidos pelos direitos de propriedade intelectual de posse dos fornecedores (ou de outras pessoas ou empresas em seus nomes). Não é permitido modificar, alugar, arrendar, emprestar, vender, distribuir nem criar trabalhos derivados com base nestes dados, conteúdo ou recursos (na totalidade ou em parte), salvo se houver permissão explícita especificada pelos respectivos detentores de direitos.
-
-7.3 Você reconhece que o uso de tais aplicativos, dados, conteúdo ou recursos de terceiros pode estar sujeito a termos adicionais entre você e o terceiro em questão.
-
-8. Uso de APIs da Google
-
-8.1 APIs da Google
-
-8.1.1 Ao usar qualquer API para recuperar dados da Google, você reconhece que eles podem ser protegidos por direitos de propriedade intelectual de posse da Google ou dos terceiros que fornecem os dados (ou de pessoas ou empresas em nomes deles). O uso de tal API pode estar sujeito a termos de serviço adicionais. Não é permitido modificar, alugar, arrendar, emprestar, vender, distribuir nem criar trabalhos derivados baseados nesses dados (na totalidade ou em parte), salvo se permitido pelos termos de serviço pertinentes.
-
-8.1.2 Se você usar qualquer API para recuperar dados de um usuário a partir da Google, reconhece e concorda que deve recuperar dados somente com consentimento explícito do usuário e somente quando, e para os fins limitados aos quais, o usuário conceder permissão para fazê-lo.
-
-9. Rescisão do Contrato de licença
-
-9.1 O Contrato de licença continuará a se aplicar até que ocorra uma rescisão sua ou da Google, como definido abaixo.
-
-9.2 Caso queira rescindir o Contrato de licença, você pode fazer isto cessando o uso do Preview e de qualquer credencial de desenvolvedor relevante.
-
-9.3 A Google pode, a qualquer momento, rescindir o Contrato de licença, com ou sem causa, com uma notificação.
-
-9.4 O Contrato de licença será encerrado automaticamente sem aviso ou outras ações na ocorrência de:
-(A) a Google interromper o fornecimento do Preview ou de determinadas partes do Preview aos usuários no país em que você reside ou de onde o serviço é usado; e
-(B) a Google emitir uma versão de lançamento final do Android SDK.
-
-9.5 Quando o Contrato de licença é rescindido, a licença concedida a você no Contrato de licença é finalizada, todo o uso do Preview será interrompido e as provisões dos parágrafos 10, 11, 12 e 14 deverão permanecer indefinidamente.
-
-10. EXCLUSÕES
-
-10.1 VOCÊ COMPREENDE E CONCORDA EXPRESSAMENTE QUE O RISCO DO USO DO PREVIEW É EXCLUSIVAMENTE SEU E QUE O PREVIEW É FORNECIDO NA FORMA EM QUE SE ENCONTRA E COMO DISPONIBILIZADO, SEM GARANTIA DE QUALQUER TIPO DA GOOGLE.
-
-10.2 O USO DO PREVIEW E DE QUALQUER MATERIAL BAIXADO OU OBTIDO DE OUTRO MODO PELO USO DO PREVIEW ESTÁ A SEU CRITÉRIO E RISCO E VOCÊ É O ÚNICO RESPONSÁVEL POR QUALQUER DANO AO SEU SISTEMA OPERACIONAL OU OUTRO DISPOSITIVO OU PELA PERDA DE DADOS QUE RESULTEM DE TAL USO. SEM LIMITAR OS PRECEDENTES, VOCÊ ENTENDE QUE O PREVIEW NÃO É UMA VERSÃO ESTÁVEL E QUE PODE CONTER ERROS, DEFEITOS E VULNERABILIDADES DE SEGURANÇA QUE PODEM RESULTAR EM DANOS SIGNIFICANTES, INCLUINDO A PERDA IRRECUPERÁVEL OU COMPLETA DO USO DO SISTEMA DO COMPUTADOR OU DE OUTROS DISPOSITIVOS.
-
-10.3 A GOOGLE EXCLUI EXPRESSAMENTE TODAS AS GARANTIAS E CONDIÇOES DE QUALQUER TIPO, EXPRESSAS OU IMPLÍCITAS, INCLUINDO, MAS NÃO LIMITADO A, GARANTIAS E CONDIÇÕES DE COMERCIALIZAÇÃO IMPLÍCITAS, ADEQUAÇÃO A UMA FINALIDADE PARTICULAR E A NÃO VIOLAÇÃO.
-
-11. LIMITAÇÃO DE RESPONSABILIDADE
-
-11.1 VOCÊ COMPREENDE E CONCORDA EXPRESSAMENTE QUE A GOOGLE, SUAS SUBSIDIÁRIAS, AFILIADAS E SEUS LICENCIADORES NÃO SERÃO RESPONSABILIZADOS POR VOCÊ SOB QUALQUER TEORIA DE RESPONSABILIDADE POR QUAISQUER DANOS, SEJAM ELES DIRETOS, INDIRETOS, INCIDENTAIS, ESPECIAIS, CONSEQUENCIAIS OU DE EXEMPLO QUE POSSAM INCORRER, INCLUINDO QUALQUER PERDA DE DADOS, INDEPENDENTE DE AVISO À GOOGLE OU A SEUS REPRESENTANTES OU DA NECESSIDADE DE AVISO SOBRE A POSSIBILIDADE DA INCORRÊNCIA DE TAIS PERDAS.
-
-12. Indenização
-
-12.1 Ao limite máximo permitido por lei, você concorda em defender, indenizar e isentar a Google, suas afiliadas e respectivos conselheiros, diretores, empregados e agentes com relação a todas e quaisquer reivindicações, ações, processos ou procedimentos, bem como todas e quaisquer perdas, responsabilidades, danos, custos e despesas (incluindo honorários advocatícios) decorrentes ou provenientes de: (a) seu uso do Preview, (b) qualquer aplicativo desenvolvido no Preview que infrinja direitos de propriedade intelectual de qualquer pessoa, difame qualquer pessoa ou viole seus direitos de publicidade ou privacidade e (c) qualquer não cumprimento deste Contrato de licença.
-
-13. Mudanças no Contrato de licença
-
-13.1 A Google pode realizar mudanças no Contrato de licença à medida que distribui novas versões do Preview. Quando essas mudanças forem realizadas, a Google fará uma nova versão do Contrato de licença disponível no site em que o Preview estiver disponível.
-
-14. Termos legais gerais
-
-14.1 Esse Contrato de licença constitui o contrato legal integral entre você e a Google e rege o uso do Preview (excluindo quaisquer serviços que a Google possa fornecer a você sob um contrato escrito em separado), e substitui inteiramente quaisquer contratos anteriores entre você e a Google em relação ao Preview.
-
-14.2 Você concorda que, se a Google não exercer nem impetrar qualquer direito ou recurso legal que esteja contido no Contrato de licença (ou que a Google detenha direitos nos termos de qualquer lei aplicável), não se considerará esse fato como uma renúncia formal aos direitos da Google e esses direitos ou recursos continuarão disponíveis à Google.
-
-14.3 Se qualquer tribunal de justiça que tiver a competência para decidir sobre esse tema determinar que qualquer cláusula do Contrato de licença é inválida, tal cláusula será removida do contrato sem afetar as cláusulas restantes ou sua vigência. As cláusulas restantes do Contrato de licença continuarão válidas e obrigatórias.
-
-14.4 Você reconhece e concorda que cada membro do grupo de empresas das quais a Google é a empresa controladora deve ser beneficiário terceiro do Contrato de licença e que essas outras empresas terão o poder de aplicar diretamente, e apoiar-se em, qualquer cláusula do Contrato de licença que confira um direito (ou direitos em favor) deles. Além disso, nenhuma outra pessoa nem empresa deve ser beneficiário terceiro do Contrato de licença.
-
-14.5 RESTRIÇÕES DE EXPORTAÇÃO. O PREVIEW ESTÁ SUJEITO ÀS LEIS E NORMAS DE EXPORTAÇÃO DOS ESTADOS UNIDOS. VOCÊ DEVE CUMPRIR TODAS AS LEIS E NORMAS DOMÉSTICAS E INTERNACIONAIS QUE SE APLICAREM AO PREVIEW. ESSAS LEIS INCLUEM RESTRIÇÕES SOBRE DESTINOS, USUÁRIOS FINAIS E USO FINAL.
-
-14.6 O Contrato de licença não pode ser atribuído nem transferido por você sem a aprovação prévia por escrito da Google. Qualquer tentativa de atribuição sem a aprovação será inválida. Você não deve delegar as próprias responsabilidades ou obrigações nos termos do Contrato de licença sem aprovação prévia por escrito da Google.
-
-14.7 O Contrato de licença e sua relação com a Google nos termos do contrato serão regidos pelas leis do estado da Califórnia sem considerar conflitos de disposições legais. Você e a Google concordam em se submeter à competência exclusiva dos tribunais localizados na comarca de Santa Clara, Califórnia, para dirimir quaisquer questões legais decorrentes do Contrato de licença. Não obstante a isso, você concorda que a Google continua habilitada a impetrar medidas cautelares (ou mecanismo legal urgente equivalente) em qualquer jurisdição.
-  </div><!-- sdk terms -->
-
-
-
-    <div id="sdk-terms-form">
-      <p>
-        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-        <label id="agreeLabel" for="agree">Li e concordo com todos os termos e condições expressos acima</label>
-      </p>
-      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-    </div>
-
-
-  </div><!-- end TOS -->
-
-
-  <div id="landing">
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Neste documento</h2>
-      <ol>
-        <li><a href="#sdk">Android 6.0 SDK</a></li>
-        <li><a href="#docs">Documentação do desenvolvedor</a></li>
-        <li><a href="#images">Imagens do sistema de hardware</a></li>
-      </ol>
-
-     <h2>Legacy downloads</h2>
-        <ol>
-           <li><a href="{@docRoot}preview/download_mp1.html">Developer Preview 1</a></li>
-		   <li><a href="{@docRoot}preview/download_mp2.html">Developer Preview 2</a></li>
-        </ol>
-  </div>
-</div>
-
-
-<p>
-  O Android M Preview SDK inclui ferramentas de desenvolvimento, arquivos de sistema do Android e arquivos da biblioteca
- para ajudar você a testar o aplicativo e novas APIs da próxima versão da plataforma. Este documento
- descreve como adquirir os componentes disponíveis para download da prévia para o teste do aplicativo.
-</p>
-
-
-<h2 id="sdk">Android 6.0 SDK</h2>
-
-<p>
-  O Preview SDK está disponível para download no <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>. Para obter mais informações
- sobre o download e a configuração do Preview SDK, consulte <a href="{@docRoot}preview/setup-sdk.html#downloadSdk">Configuração do Preview SDK</a>.
-</p>
-
-
-<h2 id="docs">Documentação do desenvolvedor</h2>
-
-<p>
-  O pacote de download da documentação do desenvolvedor fornece informações de referência de API detalhadas e um relatório de diferença de API para a prévia.
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Description</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="docs-dl">
-    <td>Android M Preview 3<br>Developer Docs</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >m-preview-3-developer-docs.zip</a><br>
-      MD5: d99b14b0c06d31c8dfecb25072654ca3<br>
-      SHA-1: 9cefeeda07676130da606a1796e1c00fffc667c1
-    </td>
-  </tr>
-</table>
-
-
-<h2 id="images">Imagens do sistema de hardware</h2>
-
-<p>
-  Essas imagens do sistema permitem que você instale uma versão de prévia da plataforma em um dispositivo físico
-para fins de teste. Ao configurar um dispositivo com uma dessas imagens, é possível instalar e testar o aplicativo
- para verificar o seu desempenho na próxima versão da plataforma. O processo de instalação de uma imagem do sistema
- em um dispositivo <em>remove todos os dados do dispositivo</em>. Portanto, deve-se realizar um backup dos dados
- antes de instalar uma imagem do sistema.
-</p>
-
-<p class="warning">
-  <b>Aviso:</b> as seguintes imagens do sistema Android são prévias e estão sujeitas a alterações. O uso
- dessas imagens do sistema são governadas pelo Contrato de licença do Android SDK Preview. As imagens do sistema do Android Preview
- não são versões estáveis e podem conter erros e defeitos que podem resultar
- em danos aos sistemas do computador, aos dispositivos e aos dados. As imagens do sistema Android Preview
- não estão sujeitas ao mesmo teste do sistema operacional de fábrica e podem fazer com que o telefone e aplicativos e os serviços
- instalados parem de funcionar.
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Device</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="hammerhead">
-    <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >hammerhead-MPA44I-preview-2ebbc049.tgz</a><br>
-      MD5: 91a924fb0c9f8e716e3b4c9954fd0dbb<br>
-      SHA-1: 2ebbc049b68c4da8baeee3e42bb94d7a965ba4a3
-    </td>
-  </tr>
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-MPA44I-preview-62b9c486.tgz</a><br>
-      MD5: ac6e58da86125073d9c395257fd42664<br>
-      SHA-1: 62b9c486fd7a5020e228d53ca5acd5c1857e48ff
-    </td>
-  </tr>
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-MPA44I-preview-5c30a6e2.tgz</a><br>
-      MD5: 7f83768757913d3fea945a661020d185<br>
-      SHA-1: 5c30a6e2acd11a81f4105b12d23ff654f534f699
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-MPA44I-preview-2860040a.tgz</a><br>
-      MD5: 438da8d37da9e341a69cfb16a4001ac5<br>
-      SHA-1: 2860040a326582f1ff5f702bf9a1ef002717fc98
-    </td>
-  </tr>
-
-</table>
-
-<h3 id="install-image">Instalar uma imagem no dispositivo</h3>
-
-<p>
-  Para usar uma imagem de dispositivo para testes, deve-se instalá-lo em um dispositivo compatível. Siga
- as instruções abaixo para instalar uma imagem de sistema.
-</p>
-
-<ol>
-  <li>Faça o download e descompacte um dos pacotes de imagem do sistema listados aqui.</li>
-  <li>Faça um backup dos dados do dispositivo que deseja preservar.</li>
-  <li>Siga as instruções em
- <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
-  para programar em flash a imagem no dispositivo.</li>
-</ol>
-
-<p class="note">
-  <strong>Observação:</strong> ao programar em flash a imagem do sistema de prévia no dispositivo de desenvolvimento,
- ele é atualizado automaticamente com o próximo lançamento da prévia por meio de atualizações over-the-air (OTA).
-</p>
-
-<h3 id="revertDevice">Reverter um dispositivo para as especificações de fábrica</h3>
-
-<p>
-  Caso queira desinstalar a prévia e reverter o dispositivo para as especificações de fábrica, acesse
- <a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a> e
- faça o download da imagem que deseja programar em flash no dispositivo. Siga as instruções nesta página
- para programar em flash a imagem no dispositivo.
-</p>
-
-  </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
-  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
-  function onDownload(link) {
-
-    $("#downloadForRealz").html("Download " + $(link).text());
-    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
-    $("#tos").fadeIn('fast');
-    $("#landing").fadeOut('fast');
-
-    return true;
-  }
-
-
-  function onAgreeChecked() {
-    /* verify that the TOS is agreed */
-    if ($("input#agree").is(":checked")) {
-      /* reveal the download button */
-      $("a#downloadForRealz").removeClass('disabled');
-    } else {
-      $("a#downloadForRealz").addClass('disabled');
-    }
-  }
-
-  function onDownloadForRealz(link) {
-    if ($("input#agree").is(':checked')) {
-    /*
-      $("#tos").fadeOut('fast');
-      $("#landing").fadeIn('fast');
-    */
-
-      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
-
-    /*
-      location.hash = "";
-    */
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  $(window).hashchange( function(){
-    if (location.hash == "") {
-      location.reload();
-    }
-  });
-
-</script>
diff --git a/docs/html-intl/intl/pt-br/preview/features/app-linking.jd b/docs/html-intl/intl/pt-br/preview/features/app-linking.jd
deleted file mode 100644
index 17a9896..0000000
--- a/docs/html-intl/intl/pt-br/preview/features/app-linking.jd
+++ /dev/null
@@ -1,123 +0,0 @@
-page.title=Links de aplicativos
-page.image=images/cards/card-app-linking_2x.png
-page.keywords=applinking, deeplinks, intents
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Neste documento</h2>
-      <ol>
-        <li><a href="#web-assoc">Declarar uma associação de site</a></li>
-        <li><a href="#verfy-links">Solicitar verificação de link de aplicativo</a></li>
-        <li><a href="#user-manage">Gerenciar configurações de link de aplicativo</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  O sistema de intenções do Android é um mecanismo flexível para possibilitar que aplicativos lidem com conteúdos e solicitações.
-  Vários aplicativos podem declarar padrões de URI correspondentes em seus filtros de intenções. Quando um usuário clica em um
- link da web que não tem um manipulador de inicialização padrão, a plataforma pode exibir um diálogo para
- o usuário selecionar entre uma lista de aplicativos que declararam filtros de intenções correspondentes.
-</p>
-
-<p>
-  O Android M Developer Preview introduz suporte para links de aplicativos, que aprimora
- a manipulação de links existentes, permitindo que desenvolvedores de aplicativos associem um aplicativo a um domínio da web pertencente a eles. Quando
- os desenvolvedores criam esta associação, a plataforma pode automaticamente determinar o aplicativo padrão usado
- para lidar com um link da web particular e ignorar a solicitação aos usuários.
-</p>
-
-
-<h2 id="web-assoc">Declarar uma associação de site</h2>
-
-<p>
-  Os donos de sites da web devem declarar as associações aos aplicativos para estabelecer um link de aplicativo. O dono do site
- declara a relação com um aplicativo hospedando um arquivo JSON chamado {@code statements.json} no
- local bem conhecido no domínio:
-</p>
-
-<pre>http://&lt;domain&gt;:&lt;optional port&gt;/.well-known/statements.json</pre>
-
-<p class="note">
-  <strong>Observação:</strong>
-  durante o período do M Developer Preview, o arquivo JSON é verificado por meio de protocolo http. Para
- o lançamento oficial da plataforma, o arquivo é verificado com o protocolo http criptografado.
-</p>
-
-<p>
-  Este arquivo JSON indica o aplicativo do Android que deve ser usado como o manipulador padrão para URLs
- neste domínio. Ele identifica o aplicativo com base nestes campos:
-</p>
-
-<ul>
-  <li>{@code package_name}: o nome do pacote declarado no manifesto do arquivo.</li>
-
-  <li>{@code sha256_cert_fingerprints}: a impressão digital SHA256 do certificado assinado do aplicativo.
-    É possível usar o Java Keytool para gerar a impressão digital usando o seguinte comando:
-    <pre>keytool -list -v -keystore my-release-key.keystore</pre>
-  </li>
-</ul>
-
-<p>
-  A seguinte lista de arquivos exibe um exemplo de conteúdo e formato
- de um arquivo {@code statements.json}:
-</p>
-
-<pre>
-[{
-  "relation": ["delegate_permission/common.handle_all_urls"],
-  "target": {
-    "namespace": "android_app",
-    "package_name": "<strong>&lt;package name&gt;</strong>",
-    "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
-  }
-}]
-</pre>
-
-
-<h2 id="verfy-links">Solicitar verificação de link de aplicativo</h2>
-
-<p>
-  Um aplicativo pode solicitar que a plataforma verifique automaticamente quaisquer links de aplicativo relacionados aos arquivos {@code statements.json}
- hospedados nos respectivos domínios da web que são definidos pelos nomes de host
- nos elementos de dados dos seus filtros de intenções. Para solicitar a verificação de link de aplicativo, adicione um atributo {@code android:autoVerify}
- a cada filtro de intenção desejado no manifesto, como exibido no seguinte fragmento
- de código do manifesto:
-</p>
-
-<pre>
-&lt;activity ...&gt;
-    &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
-        &lt;action android:name="android.intent.action.VIEW" /&gt;
-        &lt;category android:name="android.intent.category.DEFAULT" /&gt;
-        &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
-        &lt;data android:scheme="http" android:host="www.android.com" /&gt;
-        &lt;data android:scheme="https" android:host="www.android.com" /&gt;
-    &lt;/intent-filter&gt;
-&lt;/activity&gt;
-</pre>
-
-<p>
-  Quando o atributo {@code android:autoVerify} está presente em um manifesto do aplicativo, a plataforma
- tenta verificar os links do aplicativo quando o aplicativo é instalado. Se a plataforma não conseguir
- verificar os links do aplicativo, o aplicativo não será definido como o aplicativo preferencial para lidar com os links da web. Na próxima vez
- que um usuário tentar abrir um dos links, a plataforma voltará a apresentar ao usuário
- uma caixa de diálogo.
-</p>
-
-<p class="note">
-  <strong>Observação:</strong> no teste, há chances de ocorrer um falso positivo se a verificação
- falhar, mas o usuário explicitamente permitiu que o aplicativo abrisse links sem solicitar, usando
- o aplicativo do sistema Settings (Configurações). Neste caso, nenhum diálogo é exibido e o link vai direto para o
- aplicativo, mas somente devido à configuração do usuário, e não porque a verificação foi bem-sucedida.
-</p>
-
-
-<h2 id="user-manage">Gerenciar configurações de link de aplicativo</h2>
-
-<p>
-  Os usuários podem alterar as configurações de link de aplicativo para que os URLs sejam tratados da maneira que preferirem. É possível revisar e
- gerenciar os links de aplicativo no aplicativo Settings (Configurações) do sistema, em <strong>Settings (Configurações) &gt; Apps (Aplicativos) &gt; App Info (Informações do aplicativo) &gt;
- Open by default (Abrir por padrão)</strong>.
-</p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/runtime-permissions.jd b/docs/html-intl/intl/pt-br/preview/features/runtime-permissions.jd
deleted file mode 100644
index 762e1ae..0000000
--- a/docs/html-intl/intl/pt-br/preview/features/runtime-permissions.jd
+++ /dev/null
@@ -1,794 +0,0 @@
-page.title=Permissões
-page.tags=previewresources, androidm
-page.keywords=permissions, runtime, preview
-page.image={@docRoot}preview/images/permissions_check.png
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Visualização rápida</h2>
-    <ul>
-      <li>Se o aplicativo direciona o M Preview SDK, ele indica aos usuários para conceder
- permissões no tempo de execução, em vez de tempo de instalação.</li>
-      <li>Os usuários podem revogar as permissões a qualquer momento na tela de configurações
-do aplicativo.</li>
-      <li>O aplicativo precisa verificar se tem as permissões necessárias
-sempre que for executado.</li>
-    </ul>
-
-    <h2>Neste documento</h2>
-    <ol>
-      <li><a href="#overview">Visão geral</a></li>
-      <li><a href="#coding">Codificação para permissões de tempo de execução</a></li>
-      <li><a href="#testing">Teste de permissões de tempo de execução</a></li>
-      <li><a href="#best-practices">Práticas recomendadas</a></li>
-    </ol>
-
-<!--
-  <h2>Related Samples</h2>
-  <ol>
-    <li></li>
-  </ol>
--->
-
-<!--
-  <h2>See also</h2>
-  <ol>
-    <li></li>
-  </ol>
--->
-  </div> <!-- qv -->
-</div> <!-- qv-wrapper -->
-
-
-<p>
-  O M Developer Preview introduz um novo modelo de permissões de aplicativo
-que agiliza o processo de instalação e atualização de aplicativos para os usuários. Se um aplicativo
- que está sendo executado no M Preview suporta o novo modelo de permissões, o usuário não precisa conceder
- permissões ao instalar ou atualizar o aplicativo. Em vez disso, o aplicativo
- solicita as permissões à medida que precisar e o sistema exibe um diálogo
- ao usuário pedindo a permissão.
-</p>
-
-<p>
-  Se um aplicativo suportar o novo modelo de permissões, ele
- ainda poderá ser instalado e executado em versões mais antigas do Android, usando o antigo modelo
- de permissões nesses dispositivos.
-</p>
-
-<h2 id="overview">
-  Visão geral
-</h2>
-
-<p>
-  Com o M Developer Preview, a plataforma introduz um novo modelo
- de permissões. Eis um resumo dos componentes essenciais deste novo modelo:
-</p>
-
-<ul>
-  <li>
-    <strong>Declaração de permissões:</strong> O aplicativo declara todas
- as permissões necessárias no manifesto, como nas plataformas anteriores do Android.
-  </li>
-
-  <li>
-    <strong>Grupos de permissão:</strong> As permissões são divididas em
-<em>grupos de permissão</em>, baseados na funcionalidade. Por exemplo: o grupo de permissão
- <code>CONTACTS</code> contém permissões para ler e escrever
- informações de perfil e contatos do usuário.
-  </li>
-
-  <li>
-    <p><strong>Permissões limitadas concedidas no tempo de instalação:</strong> Quando o usuário
- instala ou atualiza o aplicativo, o sistema concede todas
- as permissões que o aplicativo solicita que estão em {@link
- android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}.
-    Por exemplo: as permissões de internet e despertador estão em {@link
- android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}. Portanto,
- as permissões são concedidas automaticamente no tempo de instalação.
-    </p>
-
-    <p>O sistema pode também conceder as permissões de sistema e assinatura de aplicativo,
- como descrito em <a href="#system-apps">permissões de assinatura
- e aplicativos do sistema</a>. O usuário <em>não</em> é alertado a conceder permissões
- no tempo de instalação.</p>
-  </li>
-
-  <li>
-    <strong>O usuário concede permissões no tempo de execução:</strong> Quando um aplicativo solicita
- uma permissão, o sistema exibe um diálogo ao usuário e, em seguida,
- chama a função de retorno de chamada do aplicativo para notificá-lo se a permissão foi concedida. Se um
- usuário concede uma permissão, o aplicativo recebe todas
- as permissões na área funcional desta permissão que foram declaradas no manifesto do aplicativo.
-  </li>
-
-</ul>
-
-<p>
-  Este modelo de permissões altera a forma como o aplicativo se comporta diante os recursos
- que precisam de permissões. Eis um resumo das práticas de desenvolvimento que devem
- ser seguidas para ajustar para este modelo:
-</p>
-
-<ul>
-
-  <li>
-    <strong>Sempre verificar as permissões:</strong> Quando o aplicativo
- precisa realizar uma ação que requer uma permissão, ele deve primeiro verificar
- se já a tem. Caso não tenha, ele solicita
- o concedimento desta permissão.
-  </li>
-
-  <li>
-    <strong>Lidar com falta de permissões dignamente:</strong> Se o aplicativo não
- recebe a permissão adequada, ele deve lidar com a falha de forma limpa.
-    Por exemplo, se a permissão é necessária para um recurso adicionado,
- o aplicativo pode desativar este recurso. Se a permissão for essencial
- para que o aplicativo funcione, ele desativará toda sua funcionalidade
- e informará ao usuário que precisa desta permissão.
-  </li>
-
-  <div class="figure" style="width:220px" id="fig-perms-screen">
-    <img src="{@docRoot}preview/features/images/app-permissions-screen_2x.png" srcset="{@docRoot}preview/features/images/app-permissions-screen.png 1x, {@docRoot}preview/features/images/app-permissions-screen_2x.png 2x" alt="" width="220">
-    <p class="img-caption">
-      <strong>Figura 1.</strong> Tela de permissões nas configurações do aplicativo.
-    </p>
-  </div>
-
-  <li>
-    <strong>As permissões são revogáveis:</strong> Os usuários podem revogar as permissões
- de um aplicativo a qualquer momento. Se um usuário desativar as permissões de um aplicativo,
- o aplicativo <em>não</em> é notificado. Novamente, o aplicativo deve verificar
- se tem todas as permissões necessárias antes de realizar qualquer ação restrita.
-  </li>
-</ul>
-
-<p class="note">
-  <strong>Observação:</strong> se um aplicativo direcionar o M Developer Preview, ele
- <em>deve</em> usar o novo modelo de permissões.
-</p>
-
-<p>
-  No momento do lançamento do M Developer Preview,
- nem todos os aplicativos Google implementam completamente o novo modelo de permissões. A Google está atualizando estes aplicativos
- durante o curso do M Developer Preview para respeitar adequadamente a configuração
- de alternação de permissões.
-</p>
-
-<p class="note">
-  <strong>Observação:</strong> se o aplicativo tiver a própria superfície de API,
- não represente permissões sem antes garantir que o autor da chamada tenha as permissões necessárias
- para acessar esses dados.
-</p>
-
-<h3 id="system-apps">
-  Permissões de assinatura e aplicativos do sistema
-</h3>
-
-<p>
-  Geralmente, quando um usuário instala um aplicativo, o sistema somente fornece ao aplicativo o
- {@link android.content.pm.PermissionInfo#PROTECTION_NORMAL
- PROTECTION_NORMAL}. No entanto, sob algumas circunstâncias, o sistema concede
- ao aplicativo mais permissões:
-</p>
-
-<ul>
-  <li>Se um aplicativo faz parte da imagem do sistema, ele recebe automaticamente
- todas as permissões listadas no manifesto.
-  </li>
-
-  <li>Se o aplicativo solicitar as permissões no manifesto que está em {@link
- android.content.pm.PermissionInfo#PROTECTION_SIGNATURE PROTECTION_SIGNATURE},
- e estiver assinado com o mesmo certificado que o aplicativo que declarou essas permissões,
- o sistema concederá essas permissões na instalação ao aplicativo
- que fez a solicitação.
-  </li>
-</ul>
-
-<p>
-  Em ambos os casos, o usuário ainda pode revogar as permissões a qualquer
- momento acessando a tela de <strong>configurações</strong> do sistema e escolhendo <strong>Aplicativos
- &gt;</strong> <i>app_name</i> <strong>&gt; Permissões</strong>. O aplicativo
- deve continuar com a verificação das permissões no tempo de execução e solicitá-las
- se necessário.
-</p>
-
-<h3 id="compatibility">
-  Compatibilidade anterior e posterior
-</h3>
-
-<p>
-  Se um aplicativo não direciona para o M Developer Preview, ele deve continuar a usar
- o modelo antigo de permissões mesmo nos dispositivos M Preview. Quando o usuário instala
- o aplicativo, o sistema pede para que ele conceda todas as permissões
- listadas no manifesto do aplicativo.
-</p>
-
-<p class="note">
-  <strong>Observação:</strong> em dispositivos que são executados no M Developer Preview,
- um usuário pode desativar as permissões para qualquer aplicativo (incluindo aplicativos de legado)
- na tela de configurações do aplicativo. Se um usuário desativa as permissões de um aplicativo de legado, o sistema
- silenciosamente desativa a funcionalidade adequada. Quando um aplicativo tentar realizar
- uma operação que requer esta permissão, a operação não necessariamente causará
- uma exceção. Em vez disso, ele retornará um conjunto de dados vazio,
- sinalizará um erro ou exibirá um comportamento inesperado. Por exemplo, caso queira
- consultar um calendário sem permissão, o método retorna um conjunto de dados vazio.
-</p>
-
-<p>
-  Se instalar um aplicativo usando o novo modelo de permissões em um dispositivo
- que não está executando o M Preview,
- o sistema o tratará da mesma forma que qualquer outro aplicativo: o sistema pedirá
- para que o usuário conceda todas as permissões declaradas no momento da instalação.
-</p>
-
-<p class="note">
-  <strong>Observação:</strong> para a liberação de prévia, deve-se definir a versão mínima de SDK
- para o M Preview SDK para compilar com o SDK de prévia. Isto significa que você
- não poderá testar tais aplicativos em plataformas mais antigas durante a prévia
- de desenvolvedor.
-</p>
-
-<h3 id="perms-vs-intents">Permissões versus intenções</h3>
-
-<p>
-  Em vários casos, é possível escolher entre duas maneiras para que o aplicativo realize
- uma tarefa. É possível fazer com que o aplicativo solicite uma permissão para realizar a operação
- por conta própria. Alternativamente, é possível fazer com que o aplicativo use uma intenção para que outro aplicativo
- realize a tarefa.
-</p>
-
-<p>
-  Por exemplo, imagine que o aplicativo precisa da função de tirar fotos com
- a câmera do dispositivo. O aplicativo pode solicitar a permissão
-<code>android.permission.CAMERA</code>, que permite que ele acesse
- a câmera diretamente. O aplicativo então usará as APIs da câmera
- para controlar a câmera e tirar uma foto. Esta abordagem fornece ao aplicativo
- controle completo sobre o processo de fotografia e permite
- que você incorpore a IU da câmera.
-</p>
-
-<p>
-  No entanto, caso não precise de tal controle, é possível apenas usar uma intenção {@link
- android.provider.MediaStore#ACTION_IMAGE_CAPTURE ACTION_IMAGE_CAPTURE}
- para solicitar uma imagem. Ao iniciar a intenção, o usuário deve escolher
- um aplicativo de câmera (se não houver um aplicativo padrão de câmera)
- para tirar a foto. O aplicativo da câmera retorna a imagem ao método {@link
- android.app.Activity#onActivityResult onActivityResult()} do aplicativo.
-</p>
-
-<p>
-  De forma semelhante, caso precise realizar uma ligação,
- acessar os contatos do usuário etc., é possível fazer estas ações criando uma intenção adequada
- ou solicitar a permissão e o acesso aos objetos adequados diretamente. Essas são
- as vantagens e desvantagens de cada abordagem.
-</p>
-
-<p>
-  Se usar permissões:
-</p>
-
-<ul>
-  <li>O aplicativo tem controle completo sobre a experiência do usuário ao realizar
- a operação. No entanto, esse controle amplo é adicionado à complexidade da tarefa,
- levando em consideração a necessidade de projetar uma IU adequada.
-  </li>
-
-  <li>O usuário deve fornecer a permissão uma vez: na primeira realização
- da operação. Depois, o aplicativo pode realizar a operação sem
- precisar de mais interações do usuário. No entanto,
- se o usuário não conceder a permissão (ou revogá-la posteriormente),
- o aplicativo não conseguirá realizar a operação.
-  </li>
-</ul>
-
-<p>
-  Se usar uma intenção:
-</p>
-
-<ul>
-  <li>Você não terá que projetar a IU para a operação. O aplicativo que lida com
- a intenção fornece a IU. No entanto, isso significa que você não terá controle
- completo sobre a experiência de usuário. O usuário poderá interagir com um aplicativo
- que você nunca viu.
-  </li>
-
-  <li>Se o usuário não tem um aplicativo padrão para a operação,
- o sistema pede para que o usuário escolha um aplicativo.
- Se o usuário não designar um manipulador padrão,
- ele terá que acessar uma caixa de diálogo extra sempre que realizar a operação.
-  </li>
-</ul>
-
-<h2 id="coding">Codificação para permissões de tempo de execução</h2>
-
-<p>
-  Se um aplicativo direciona o novo M Developer Preview, ele deve usar o novo
- modelo de permissões. Isto significa que, além de declarar as permissões necessárias no manifesto,
- deve-se também verificar se o aplicativo
- tem as permissões no tempo de execução e,
- caso ainda não as tenha, solicitá-las.
-</p>
-
-<h3 id="enabling">
-  Possibilitar um novo modelo de permissões
-</h3>
-
-<p>
-  Para possibilitar o modelo de permissões do M Developer Preview, configure o atributo
-<code>targetSdkVersion</code> do aplicativo para <code>"MNC"</code> e
-<code>compileSdkVersion</code> para <code>"android-MNC"</code>. Isto ativará
- todos os novos recursos de permissão.
-</p>
-
-<p>
-  Para a liberação de uma prévia, deve-se definir <code>minSdkVersion</code> para
-<code>"MNC"</code> para compilar com o SDK de prévia.
-</p>
-
-<h3 id="m-only-perm">
-  Designar uma permissão somente para o M Preview
-</h3>
-
-<p>
-  É possível usar o novo elemento <code>&lt;uses-permission-sdk-m&gt;</code> no manifesto do aplicativo
- para indicar que uma permissão é necessária apenas no M Developer Preview. Se você
- declarar uma permissão desta maneira, sempre que o aplicativo for instalado
- em um dispositivo mais antigo, o sistema não solicitará ao usuário
- nem concederá a permissão ao aplicativo. Usando o elemento <code>&lt;uses-permission-sdk-m&gt;</code>
-, é possível adicionar novas permissões
- a versões atualizadas do aplicativo sem forçar os usuários a conceder permissões
- ao instalar a atualização.
-</p>
-
-<p>
-  Se o aplicativo está sendo executado em um dispositivo com M Developer Preview, o
-<code>&lt;uses-permission-sdk-m&gt;</code> se comporta da mesma forma que
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
-  O sistema não solicita ao usuário que conceda quaisquer permissões ao instalar o aplicativo
- e o aplicativo solicita as permissões à medida que forem necessárias.
-</p>
-
-<h3 id="prompting">
-  Solicitação de permissões
-</h3>
-
-<p>
-  Se o aplicativo usa o novo modelo de permissões do M Developer Preview,
- o usuário não recebe solicitações para conceder todas as permissões quando o aplicativo é iniciado pela primeira vez em um dispositivo
- que está sendo executado no M Preview. Em vez disso, o aplicativo solicita as permissões à medida
- que forem necessárias. Quando um aplicativo solicita uma permissão, o sistema exibe uma caixa de diálogo
- ao usuário.
-</p>
-
-<p>
-  Se o aplicativo executar em um dispositivo que tem SDK 22 ou inferior,
- ele usará o antigo modelo de permissões. Quando o usuário instala o aplicativo, ele é solicitado a conceder
- todas as permissões que o aplicativo lista no manifesto,
- exceto as permissões que forem marcadas com <code>&lt;uses-permission-sdk-m&gt;</code>.
-</p>
-
-<h4 id="check-platform">Verifique em qual plataforma o aplicativo está sendo executado</h4>
-
-<p>
-  Este modelo de permissões é suportado apenas em dispositivos que estão executando
- o M Developer Preview. Antes de chamar qualquer um destes métodos,
- o aplicativo deve verificar em qual plataforma está sendo executado
- verificando o valor de {@link android.os.Build.VERSION#CODENAME
- Build.VERSION.CODENAME}. Se o dispositivo estiver sendo executado no M Developer Preview,
- {@link android.os.Build.VERSION#CODENAME CODENAME} será <code>"MNC"</code>.
-</p>
-
-<h4 id="check-for-permission">Verifique se o aplicativo tem a permissão necessária</h4>
-
-<p>Quando o usuário tenta fazer algo que requer uma permissão,
- o aplicativo verifica se tem a permissão para realizar esta operação. Para fazer isto,
- o aplicativo chama
- <code>Context.checkSelfPermission(<i>permission_name</i>)</code>. O aplicativo
- deve realizar isto para verificar se sabe que o usuário já concedeu esta permissão,
- levando em consideração que o usuário pode revogar
- as permissões do aplicativo a qualquer momento. Por exemplo,
- se um usuário quiser usar um aplicativo para tirar uma foto, o aplicativo chamará
- <code>Context.checkSelfPermission(Manifest.permission.CAMERA)</code>.</p>
-
-<p class="table-caption" id="permission-groups">
-  <strong>Tabela 1.</strong> Permissões e grupos de permissões.</p>
-<table>
-  <tr>
-    <th scope="col">Grupo de permissões</th>
-    <th scope="col">Permissões</th>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CALENDAR</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_CALENDAR</code>
-        </li>
-      </ul>
-      <ul>
-        <li>
-          <code>android.permission.WRITE_CALENDAR</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CAMERA</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.CAMERA</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CONTACTS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_CONTACTS</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_CONTACTS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_PROFILE</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_PROFILE</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.LOCATION</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.ACCESS_FINE_LOCATION</code>
-        </li>
-        <li>
-          <code>android.permission.ACCESS_COARSE_LOCATION</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.MICROPHONE</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.RECORD_AUDIO</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.PHONE</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_PHONE_STATE</code>
-        </li>
-        <li>
-          <code>android.permission.CALL_PHONE</code>
-        </li>
-        <li>
-          <code>android.permission.READ_CALL_LOG</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_CALL_LOG</code>
-        </li>
-        <li>
-          <code>com.android.voicemail.permission.ADD_VOICEMAIL</code>
-        </li>
-        <li>
-          <code>android.permission.USE_SIP</code>
-        </li>
-        <li>
-          <code>android.permission.PROCESS_OUTGOING_CALLS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.SENSORS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.BODY_SENSORS</code>
-        </li>
-      </ul>
-      <ul>
-        <li>
-          <code>android.permission.USE_FINGERPRINT</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.SMS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.SEND_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_WAP_PUSH</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_MMS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_CELL_BROADCASTS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-</table>
-
-<h4 id="request-permissions">Solicitar permissões se necessário</h4>
-
-<p>Se o aplicativo já não tem a permissão necessária, ele chama o método
- <code>Activity.requestPermissions(String[], int)</code> para solicitar
- as permissões necessárias. O aplicativo passa
- as permissões que deseja e também um "código de solicitação" do inteiro.
-  Este método funciona de forma assíncrona: ele retorna imediatamente e,
- depois que o usuário responde à caixa de diálogo, o sistema chama
- o método de retorno de chamada do aplicativo com os resultados, passando o mesmo "código de solicitação" que o aplicativo passou
- para <code>requestPermissions()</code>.</p>
-
-  <p>O seguinte código verifica se o aplicativo tem a permissão
- para ler os contatos do usuário e solicita a permissão, se necessário:</p>
-
-<pre>
-if (checkSelfPermission(Manifest.permission.READ_CONTACTS)
-        != PackageManager.PERMISSION_GRANTED) {
-    requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
-            MY_PERMISSIONS_REQUEST_READ_CONTACTS);
-
-    // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
-    // app-defined int constant
-
-    return;
-}
-</pre>
-
-<h4 id="handle-response">Lidar com a resposta de solicitação das permissões</h4>
-
-<p>
-  Quando um aplicativo solicita as permissões, o sistema apresenta uma caixa de diálogo
- ao usuário. Quando o usuário responde, o sistema invoca o
- <code>Activity.onRequestPermissionsResult(int, String[], int[])</code>
- do aplicativo, passando a ele a resposta do usuário. O aplicativo precisa substituir este método. O retorno de chamada
- recebe o mesmo código de solicitação passado para
- <code>requestPermissions()</code>. Por exemplo, se um aplicativo solicita o acesso
- <code>READ_CONTACTS</code>, ele pode ter o seguinte
- método de retorno de chamada:
-</p>
-
-<pre>
-&#64;Override
-public void onRequestPermissionsResult(int requestCode,
-        String permissions[], int[] grantResults) {
-    switch (requestCode) {
-        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
-            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-
-                // permission was granted, yay! do the
-                // calendar task you need to do.
-
-            } else {
-
-                // permission denied, boo! Disable the
-                // functionality that depends on this permission.
-            }
-            return;
-        }
-
-        // other 'switch' lines to check for other
-        // permissions this app might request
-    }
-}
-</pre>
-
-  <p>Se o usuário concede a permissão, o sistema fornece ao aplicativo todas as permissões
- que o manifesto do aplicativo lista para esta área funcional. Se o usuário negar a solicitação,
- deve-se tomar a ação adequada. Por exemplo, deve-se desativar
- quaisquer ações de menu que dependam desta permissão.
-  </li>
-</p>
-
-<p>
-  Quando o sistema pede para que o usuário conceda uma permissão, esse usuário tem a opção
- de dizer ao sistema para que não peça esta permissão novamente. Nesse caso,
- quando um aplicativo usa <code>requestPermissions()</code> para solicitar esta permissão,
- o sistema nega imediatamente. Neste caso, o sistema chama
- <code>onRequestPermissionsResult()</code> da mesma forma que faria se o usuário tivesse
- rejeitado explicitamente a solicitação novamente. Por este motivo, o aplicativo
- não pode presumir que uma interação direta com o usuário ocorreu.
-</p>
-
-<h2 id="testing">Teste de permissões de tempo de execução</h2>
-
-
-<p>
-  Se o aplicativo for direcionado para o M Developer Preview, deve-se testar
- se ele lida com as permissões corretamente. Não se pode presumir que o aplicativo
- terá qualquer permissão quando executado. Quando o aplicativo é iniciado pela primeira vez,
- é provável que não tenha permissões. O usuário pode revogar e restaurar permissões
- a qualquer momento.
-</p>
-
-<p>
-  Deve-se testar o aplicativo para garantir que ele se comporte corretamente em todas
- as situações de permissão. Com o M Preview SDK, fornecemos os novos comandos
- de <a href="{@docRoot}tools/help/adb.html">Android
-  Debug Bridge (adb)</a> para possibilitar que o aplicativo seja testado com quaisquer
- configurações de permissões necessárias.
-</p>
-
-<h3>
-  Novas opções e comandos adb
-</h3>
-
-<p>
-  As ferramentas da plataforma M Preview SDK fornecem vários comandos novos para permitir
- que você teste como o aplicativo lida com permissões.
-</p>
-
-<h4>
-  Instalar com permissões
-</h4>
-
-<p>
-  É possível usar a nova opção <code>-g</code> do comando <a href="{@docRoot}tools/help/adb.html#move"><code>adb
-  install</code></a>, que instala o aplicativo
- e fornece todas as permissões listadas em seu manifesto:
-</p>
-
-<pre class="no-pretty-print">
-$ adb install -g &lt;path_to_apk&gt;
-</pre>
-
-<h4>
-  Conceder e revogar permissões
-</h4>
-
-<p>
-  É possível usar os novos comandos do <a href="{@docRoot}tools/help/adb.html#pm">gerenciador
- de pacotes (pm)</a> de ADB para conceder e revogar as permissões de um aplicativo instalado.
- Esta funcionalidade pode ser útil para testes automatizados.
-</p>
-
-<p>
-  Para conceder uma permissão, use o comando <code>grant</code> do gerenciador de pacote:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant &lt;package_name&gt; &lt;permission_name&gt;
-</pre>
-
-<p>
-  Por exemplo: para conceder a permissão do pacote com.example.myapp para gravar áudios,
- use este comando:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant com.example.myapp android.permission.RECORD_AUDIO
-</pre>
-
-<p>
-  Para revogar uma permissão, use o comando <code>revoke</code> do gerenciador de pacote:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm revoke &lt;package_name&gt; &lt;permission_name&gt;
-</pre>
-
-<h2 id="best-practices">Práticas recomendadas</h2>
-
-<p>
-  O novo modelo de permissões fornece aos usuários uma experiência mais suave
- e facilita a instalação de aplicativos, deixando-os mais confortáveis
- com o que os aplicativos estão fazendo. Sugerimos que você siga as práticas recomendadas para aproveitar
- todas as vantagens do novo modelo.
-</p>
-
-
-<h3 id="bp-what-you-need">Peça somente as permissões necessárias</h3>
-
-<p>
-  Sempre que você pede uma permissão, o usuário é forçado a tomar uma decisão.
-  Se o usuário negar a solicitação, a funcionalidade do aplicativo será reduzida.
-  Deve-se minimizar o número de solicitações realizadas.
-</p>
-
-<p>
-  Por exemplo: o aplicativo pode frequentemente adquirir a funcionalidade necessária usando
- uma <a href="{@docRoot}guide/components/intents-filters.html">intenção</a> em vez
- de solicitar permissões. Se o aplicativo precisa tirar fotos com a câmera do telefone,
- é possível usar uma intenção {@link
-  android.provider.MediaStore#ACTION_IMAGE_CAPTURE
- MediaStore.ACTION_IMAGE_CAPTURE}. Quando o aplicativo executa a intenção,
- o sistema pede para que o usuário escolha um aplicativo de câmera já instalado
- para tirar a foto.
-</p>
-
-<h3 id="bp-dont-overwhelm">
-  Não oprima o usuário
-</h3>
-
-<p>
-  Se você confrontar o usuário com várias solicitações de permissão de uma só vez,
- é possível que ele se sinta oprimido e saia do aplicativo.
- Em vez disso, deve-se solicitar as permissões somente quando necessário.
-</p>
-
-<p>
-  Em alguns casos, uma ou mais permissões podem ser absolutamente essenciais para o aplicativo.
- Nesta situação, faz sentido solicitar todas as permissões assim
- que o aplicativo é iniciado. Por exemplo: se você fizer um aplicativo de fotografia,
- ele precisará de acesso à câmera do dispositivo. Quando o usuário iniciar o aplicativo
- pela primeira vez, ele não se surpreenderá quando receber
- uma solicitação de permissão para usar a câmera. Mas, se o mesmo aplicativo tiver um recurso
- para compartilhar fotos com os contatos do usuário, <em>não</em> se deve
- pedir esta permissão na primeira inicialização. Em vez disso, espere o usuário tentar usar
- o recurso de compartilhamento para pedir a permissão.
-</p>
-
-<p>
-  Se o aplicativo fornecer um tutorial, faz sentido solicitar as permissões
- necessárias no final da sequência do tutorial.
-</p>
-
-<h3 id="bp-explain">
-  Explique o porquê da necessidade das permissões
-</h3>
-
-<p>
-  O diálogo de permissões exibido pelo sistema ao chamar
- <code>requestPermissions()</code> diz quais permissões o aplicativo requer,
- mas não diz o porquê. Em alguns casos, o usuário pode achar isto confuso.
-  É uma boa ideia explicar ao usuário o porquê da necessidade das permissões
- para o aplicativo antes de chamar <code>requestPermissions()</code>.
-</p>
-
-<p>
-  Por exemplo: um aplicativo de fotografia pode precisar usar serviços de localização
- para poder marcar as fotos geograficamente. Um usuário normal pode não entender que uma foto
- pode conter informações de localização e ficar confuso quando
- o aplicativo de fotografia quiser saber a localização. Portanto, neste caso, é uma boa ideia o aplicativo explicar
- ao usuário sobre este recurso <em>antes</em> de chamar
- <code>requestPermissions()</code>.
-</p>
-
-<p>
-  Uma maneira de fazer isto é incorporar estas solicitações em um tutorial do aplicativo. O tutorial pode exibir cada um dos recursos
- do aplicativo e, à medida que fizer isto,
- pode também explicar quais permissões são necessárias. Por exemplo, o tutorial do aplicativo de fotografia
- pode demonstrar os recursos de compartilhamento de fotos com os contatos e,
- em seguida, dizer ao usuário que ele precisa fornecer as permissões
- para que o aplicativo possa visualizar os contatos. O aplicativo pode então chamar <code>requestPermissions()</code> para solicitar
- ao usuário este acesso. É claro que nem todos os usuários seguirão o tutorial.
- Portanto, ainda é necessário verificar e solicitar as permissões durante
- a operação normal do aplicativo.
-</p>
diff --git a/docs/html-intl/intl/pt-br/preview/images/direct-share-screen.png b/docs/html-intl/intl/pt-br/preview/images/direct-share-screen.png
deleted file mode 100644
index a53a33e..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/direct-share-screen.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/direct-share-screen_2x.png b/docs/html-intl/intl/pt-br/preview/images/direct-share-screen_2x.png
deleted file mode 100644
index 87816ff..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/direct-share-screen_2x.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen.png b/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen.png
deleted file mode 100644
index 77f9982..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen_2x.png b/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen_2x.png
deleted file mode 100644
index 4749bcf..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen_2x.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline-crop.png b/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline-crop.png
deleted file mode 100644
index 724a6af..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline-crop.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline.png b/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline.png
deleted file mode 100644
index e9a339e..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/perf-test-frame-latency.png b/docs/html-intl/intl/pt-br/preview/images/perf-test-frame-latency.png
deleted file mode 100644
index 87d1cfc..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/perf-test-frame-latency.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/perf-test-framestats.png b/docs/html-intl/intl/pt-br/preview/images/perf-test-framestats.png
deleted file mode 100644
index 589a923..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/perf-test-framestats.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/text-selection.gif b/docs/html-intl/intl/pt-br/preview/images/text-selection.gif
deleted file mode 100644
index 1d82fc6..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/text-selection.gif
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/work-profile-screen.png b/docs/html-intl/intl/pt-br/preview/images/work-profile-screen.png
deleted file mode 100644
index c3e4e44..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/work-profile-screen.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/work-profile-screen_2x.png b/docs/html-intl/intl/pt-br/preview/images/work-profile-screen_2x.png
deleted file mode 100644
index 5dcf610..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/work-profile-screen_2x.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/index.jd b/docs/html-intl/intl/pt-br/preview/index.jd
deleted file mode 100644
index 6936718..0000000
--- a/docs/html-intl/intl/pt-br/preview/index.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Android M Developer Preview
-page.tags="preview",
-meta.tags="preview, M preview", androidm
-fullpage=true
-section.landing=true
-header.hide=1
-footer.hide=1
-@jd:body
-
-<section class="dac-expand dac-hero dac-light" >
-  <div class="wrap">
-    <div class="cols dac-hero-content">
-      <div class="col-9of16 col-push-7of16 dac-hero-figure">
-        <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png" srcset="{@docRoot}images/home/devices-hero_620px.png 1x,
-             {@docRoot}images/home/devices-hero_620px_2x.png 2x">
-      </div>
-      <div class="col-7of16 col-pull-9of16">
-        <h1 class="dac-hero-title">Android M Developer Preview</h1>
-        <p class="dac-hero-description">
-          Prepare-se para a próxima versão do Android. Teste os aplicativos no Nexus 5, 6, 9 e
- Player. Explore o que há de novo &mdash; <strong>permissões em tempo de execução</strong>,
- recursos de economia de energia <strong>aplicativo em espera</strong> e <strong>soneca</strong>, novas
- <strong>tecnologias de auxílio</strong> e muito mais.
-        </p>
-
-        <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          Comece!
-</a><br>
-        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          Developer Preview 3 (final SDK)</a>
-      </div>
-    </div>
-    <div class="dac-section dac-small">
-      <div class="resource-widget resource-flow-layout col-16"
-           data-query="collection:preview/landing/resources"
-           data-cardSizes="6x2"
-           data-maxResults="6"></div>
-    </div>
-  </div>
-</section>
-
-<section class="dac-section dac-gray"><div class="wrap">
-  <h1 class="dac-section-title">Recursos</h1>
-  <div class="dac-section-subtitle">
-    Informações essenciais para ajudar você a preparar os aplicativos para Android M.
-  </div>
-
-  <div class="resource-widget resource-flow-layout col-16"
-       data-query="collection:preview/landing/more"
-       data-cardSizes="6x6"
-       data-maxResults="16"></div>
-
-    <ul class="dac-section-links">
-      <li class="dac-section-link">
-        <a href="https://code.google.com/p/android-developer-preview/">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          Relate problemas
-</a>
-      </li>
-      <li class="dac-section-link"><a href="http://g.co/dev/AndroidMDevPreview">
-        <span class="dac-sprite dac-auto-chevron"></span>
-        Junte-se à comunidade do G+
-</a>
-      </li>
-    </ul>
-  </div>
-</section>
-
diff --git a/docs/html-intl/intl/pt-br/preview/license.jd b/docs/html-intl/intl/pt-br/preview/license.jd
deleted file mode 100644
index 9e28b8a..0000000
--- a/docs/html-intl/intl/pt-br/preview/license.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=Contrato de licença
-
-@jd:body
-
-<p>
-Para começar a usar o Android SDK Preview, você deve concordar com os seguintes termos e condições. 
-Como descrito abaixo, observe que isto é uma versão de prévia do Android SDK, sujeita a alterações, que deve ser usada a seu risco.  O Android SDK Preview não é uma versão estável e pode conter erros e defeitos que podem resultar em danos sérios aos sistemas de computador, aos dispositivos e aos dados.
-</p>
-
-<p>
-Este é o contrato de licença do Android SDK Preview (o “Contrato de Licença”).
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1. Introdução
-
-1.1 O Android SDK Preview (que este Contrato de licença chama de "Preview", incluindo especificamente os arquivos de sistema do Android, APIs integradas e arquivos da biblioteca Preview, se e quando estiverem disponíveis) é licenciado por meio da concordância com os termos deste contrato. O Contrato de licença forma um vínculo contratual legal entre o contratante e a Google em relação ao uso do Preview.
-
-1.2 "Android" refere-se à pilha de software do Android para dispositivos, conforme disponibilizado no Projeto de código aberto do Android, localizado no URL a seguir: http://source.android.com/, atualizado periodicamente.
-
-1.3 "Google" refere-se à Google Inc, uma corporação de Delaware, com sede em 1600 Amphitheatre Parkway, Mountain View, CA 94043, Estados Unidos.
-
-2. Aceitação do Contrato de Licença
-
-2.1 A fim de usar o Preview, é necessário concordar com este Contrato de licença. O uso do Preview é proibido àqueles que não concordam com este Contrato de licença.
-
-2.2 Ao clicar em aceitar e/ou usar o Preview, você concorda com os termos do Contrato de licença
-
-2.3 É proibido o uso do Preview e a aceitação deste contrato pelo indivíduo que tenha impedimento legal sobre o recebimento do Preview sob as leis dos Estados Unidos ou de outros países, incluindo o país de residência ou no qual usa o Preview.
-
-2.4 Se for usar o Preview internamente na empresa ou organização, você deverá concordar com o vínculo com este contrato em nome do empregador ou de outra entidade e declarar e garantir que tem total autoridade legal para tanto. Se você não tem a autoridade necessária, não deve concordar com este contrato nem usar o Preview em nome do empregador ou de outra entidade.
-
-3. Licença do Preview da Google
-
-3.1 Sujeito aos termos do Contrato de licença, a Google confere uma licença limitada, revogável, livre de taxas, intransmissível, não sub-licenciável e não exclusiva para o uso apenas do Preview, pessoal ou internamente dentro da sua empresa ou organização, para fins de desenvolvimento de aplicativos executados na plataforma do Android.
-
-3.2 Você concorda que a Google ou terceiros detêm todos os direitos legais, títulos e interesses relativos ao Preview, incluindo quaisquer direitos de propriedade intelectual que subsistam no Preview. "Direitos de propriedade intelectual" se referem a todo e qualquer direito sob as leis de patentes, de direitos autorais, de segredo comercial, de marca registrada e todos os outros direitos de propriedade. A Google reserva todos os direitos não conferidos expressamente a você.
-
-3.3 O uso do Preview não é autorizado para qualquer finalidade não expressamente permitida por este Contrato de licença. Salvo na extensão exigida por licenças aplicáveis de terceiros, é proibido: (a) copiar (exceto para fins de cópia de segurança), modificar, adaptar, redistribuir, descompilar, fazer engenharia reversa, desmontar ou criar trabalhos derivados do Preview ou qualquer parte dele; ou (b) carregar qualquer parte do Preview em um aparelho celular ou outro dispositivo de hardware, exceto em computador pessoal, combinar qualquer parte do Preview com outros softwares ou distribuir qualquer software ou dispositivo que contenha uma parte do Preview.
-
-3.4 Você concorda que não tomará quaisquer medidas que possam causar ou resultar em fragmentação do Android, incluindo, sem limitar-se, a distribuição e a participação na criação ou na promoção, sob quaisquer formas, de um conjunto de desenvolvimento de software derivado do Preview.
-
-3.5 O uso, a reprodução e a distribuição de componentes do Preview licenciado sob licença de software de código aberto são regidos exclusivamente pelos termos daquela licença de software de código aberto, e não por este Contrato de licença. Você concorda em manter uma licença em bom estado para as licenças de software de código aberto sob todos os direitos concedidos e deter quaisquer ações que possam limitar, suspender ou romper tais direitos.
-
-3.6 Você concorda que a forma e a natureza do SDK que a Google fornece podem mudar sem aviso prévio e que as versões futuras do SDK podem ser incompatíveis com aplicativos desenvolvidos em versões anteriores do SDK. Você concorda que a Google pode cessar (permanente ou temporariamente) o fornecimento do Preview (ou quaisquer recursos dentro dele) a você ou a usuários em geral sob critério exclusivo da Google, sem aviso prévio.
-
-3.7 Nada neste Contrato de licença confere o direito de uso de quaisquer nomes comerciais, marcas comerciais, marcas de serviço, logomarcas, nomes de domínios e outros recursos de marcas especiais da Google.
-
-3.8 Você concorda que não removerá, ocultará nem alterará quaisquer observações de direitos de propriedade (incluindo observações de direitos autorais e de marcas registradas) que possam estar afixadas ou contidas no Preview.
-
-4. Uso do Preview por você
-
-4.1 A Google compreende que nada no Contrato de licença da a ela direito, título nem interesse no usuário (ou em seus licenciadores), sob o presente Contrato de licença, no que tange ao desenvolvimento de aplicativos de software através do uso do Preview, incluindo quaisquer direitos de propriedade intelectual que subsistam nos referidos aplicativos.
-
-4.2 Você concorda em usar o Preview e desenvolver aplicativos somente para as finalidades permitidas por (a) este Contrato de licença e (b) quaisquer leis, normas, diretrizes geralmente aceitas ou orientações aplicáveis nas jurisdições relevantes (incluindo quaisquer leis acerca da exportação e da importação de dados ou softwares nos Estados Unidos ou em outros países relevantes). 
-
-4.3 Você concorda que, se usar o Preview para o desenvolvimento de aplicativos, deverá proteger a privacidade e os direitos legais dos usuários. Se nomes de usuário, senhas ou outras informações de acesso ou informações pessoais forem fornecidos ao aplicativo, deve-se informá-los de que tais dados estarão disponíveis para o aplicativo, além de fornecer observações de privacidade e proteção legalmente adequadas a esses usuários. Se o aplicativo armazenar informações pessoais ou confidenciais fornecidas pelos usuários, deve fazê-lo com segurança. Se o usuário fornecer informações da conta do Google, o aplicativo poderá usar essas informações exclusivamente para acessar a conta da Google do usuário quando houver autorização para fazê-lo e para os fins limitados pela autorização.
-
-4.4 Você concorda que não se envolverá em qualquer atividade com o Preview, incluindo o desenvolvimento e a distribuição de um aplicativo que interfira, perturbe, danifique ou acesse, de modo não autorizado, servidores, redes ou outras propriedades ou serviços da Google ou qualquer outro terceiro.
-
-4.5 Você concorda que é exclusivamente responsável por (e que a Google não tem qualquer responsabilidade com você ou terceiro) quaisquer dados, conteúdo ou recursos que criar, transmitir ou exibir por meio do Android e/ou de aplicativos do Android e pelas consequências que suas ações (incluindo perda ou dano que a Google possa sofrer) podem gerar.
-
-4.6 Você concorda que é exclusivamente responsável por (e que a Google não tem qualquer responsabilidade com você ou terceiro) qualquer violação das obrigações exigidas neste Contrato de licença, qualquer contrato ou termos de serviço aplicáveis a terceiros, qualquer lei ou norma aplicável e pelas consequências (incluindo a perda ou dano que a Google ou qualquer terceiro possa sofrer) de quaisquer violações.
-
-4.7 O Preview está em desenvolvimento e o seu teste e feedback são uma parte importante deste processo. Ao usar o Preview, você está ciente de que a implementação de alguns recursos ainda estão em desenvolvimento e que não se deve confiar que o Preview tem a funcionalidade completa de uma versão estável. Você concorda em não distribuir nem enviar publicamente quaisquer aplicativos usando este Preview, pois ele não será mais suportado após o lançamento oficial do Android SDK.
-
-5. Suas credenciais de desenvolvedor
-
-5.1 Você é responsável pela manutenção da confidencialidade de quaisquer credenciais de desenvolvedor que possam ser emitidas pela Google ou escolhidas por você e será o único responsável por todos os aplicativos que forem desenvolvidos sob suas credenciais de desenvolvedor.
-
-6. Privacidade e informações
-
-6.1 A fim de inovar e aprimorar continuamente o Preview, a Google pode coletar certas estatísticas de uso do software, incluindo, sem limitar-se, um identificador exclusivo, endereço IP associado, número de versão do software e informações sobre quais ferramentas e/ou serviços no Preview estão sendo usados e como estão sendo usados. Antes de coletar quaisquer dessas informações, o Preview o notificará e buscará seu consentimento. Se você recusar, as informações não serão coletadas.
-
-6.2 Os dados coletados são examinados coletivamente para aprimorar o Preview e são mantidos em conformidade com a Política de privacidade da Google acessível em http://www.google.com/policies/privacy/.
-
-7. Aplicativos de terceiros
-
-7.1 Ao usar o Preview para executar aplicativos desenvolvidos por terceiros ou que acessam dados, conteúdo ou recursos fornecidos por terceiros, você concorda que a Google não é responsável por tais aplicativos, dados, conteúdo ou recursos. Você compreende que quaisquer dados, conteúdo ou recursos passíveis de aceitação por meio de tais aplicativos de terceiros imputam responsabilidade exclusiva ao indivíduo que os originou. A Google não é responsável por qualquer perda ou dano que possa ocorrer como resultado do uso ou acesso de quaisquer aplicativos, dados, conteúdo ou recursos de terceiros.
-
-7.2 Você deve estar ciente de que os dados, conteúdo e recursos apresentados a você por aplicativos de terceiros podem ser protegidos pelos direitos de propriedade intelectual de posse dos fornecedores (ou de outras pessoas ou empresas em seus nomes). Não é permitido modificar, alugar, arrendar, emprestar, vender, distribuir nem criar trabalhos derivados com base nestes dados, conteúdo ou recursos (na totalidade ou em parte), salvo se houver permissão explícita especificada pelos respectivos detentores de direitos.
-
-7.3 Você reconhece que o uso de tais aplicativos, dados, conteúdo ou recursos de terceiros pode estar sujeito a termos adicionais entre você e o terceiro em questão.
-
-8. Uso de APIs da Google
-
-8.1 APIs da Google
-
-8.1.1 Ao usar qualquer API para recuperar dados da Google, você reconhece que eles podem ser protegidos por direitos de propriedade intelectual de posse da Google ou dos terceiros que fornecem os dados (ou de pessoas ou empresas em nomes deles). O uso de tal API pode estar sujeito a termos de serviço adicionais. Não é permitido modificar, alugar, arrendar, emprestar, vender, distribuir nem criar trabalhos derivados baseados nesses dados (na totalidade ou em parte), salvo se permitido pelos termos de serviço pertinentes.
-
-8.1.2 Se você usar qualquer API para recuperar dados de um usuário a partir da Google, reconhece e concorda que deve recuperar dados somente com consentimento explícito do usuário e somente quando, e para os fins limitados aos quais, o usuário conceder permissão para fazê-lo.
-
-9. Rescisão do Contrato de licença
-
-9.1 O Contrato de licença continuará a se aplicar até que ocorra uma rescisão sua ou da Google, como definido abaixo.
-
-9.2 Caso queira rescindir o Contrato de licença, você pode fazer isto cessando o uso do Preview e de qualquer credencial de desenvolvedor relevante.
-
-9.3 A Google pode, a qualquer momento, rescindir o Contrato de licença, com ou sem causa, com uma notificação.
-
-9.4 O Contrato de licença será encerrado automaticamente sem aviso ou outras ações na ocorrência de:
-(A) a Google interromper o fornecimento do Preview ou de determinadas partes do Preview aos usuários no país em que você reside ou de onde o serviço é usado; e
-(B) a Google emitir uma versão de lançamento final do Android SDK.
-
-9.5 Quando o Contrato de licença é rescindido, a licença concedida a você no Contrato de licença é finalizada, todo o uso do Preview será interrompido e as provisões dos parágrafos 10, 11, 12 e 14 deverão permanecer indefinidamente.
-
-10. EXCLUSÕES
-
-10.1 VOCÊ COMPREENDE E CONCORDA EXPRESSAMENTE QUE O RISCO DO USO DO PREVIEW É EXCLUSIVAMENTE SEU E QUE O PREVIEW É FORNECIDO NA FORMA EM QUE SE ENCONTRA E COMO DISPONIBILIZADO, SEM GARANTIA DE QUALQUER TIPO DA GOOGLE.
-
-10.2 O USO DO PREVIEW E DE QUALQUER MATERIAL BAIXADO OU OBTIDO DE OUTRO MODO PELO USO DO PREVIEW ESTÁ A SEU CRITÉRIO E RISCO E VOCÊ É O ÚNICO RESPONSÁVEL POR QUALQUER DANO AO SEU SISTEMA OPERACIONAL OU OUTRO DISPOSITIVO OU PELA PERDA DE DADOS QUE RESULTEM DE TAL USO. SEM LIMITAR OS PRECEDENTES, VOCÊ ENTENDE QUE O PREVIEW NÃO É UMA VERSÃO ESTÁVEL E QUE PODE CONTER ERROS, DEFEITOS E VULNERABILIDADES DE SEGURANÇA QUE PODEM RESULTAR EM DANOS SIGNIFICANTES, INCLUINDO A PERDA IRRECUPERÁVEL OU COMPLETA DO USO DO SISTEMA DO COMPUTADOR OU DE OUTROS DISPOSITIVOS.
-
-10.3 A GOOGLE EXCLUI EXPRESSAMENTE TODAS AS GARANTIAS E CONDIÇOES DE QUALQUER TIPO, EXPRESSAS OU IMPLÍCITAS, INCLUINDO, MAS NÃO LIMITADO A, GARANTIAS E CONDIÇÕES DE COMERCIALIZAÇÃO IMPLÍCITAS, ADEQUAÇÃO A UMA FINALIDADE PARTICULAR E A NÃO VIOLAÇÃO.
-
-11. LIMITAÇÃO DE RESPONSABILIDADE
-
-11.1 VOCÊ COMPREENDE E CONCORDA EXPRESSAMENTE QUE A GOOGLE, SUAS SUBSIDIÁRIAS, AFILIADAS E SEUS LICENCIADORES NÃO SERÃO RESPONSABILIZADOS POR VOCÊ SOB QUALQUER TEORIA DE RESPONSABILIDADE POR QUAISQUER DANOS, SEJAM ELES DIRETOS, INDIRETOS, INCIDENTAIS, ESPECIAIS, CONSEQUENCIAIS OU DE EXEMPLO QUE POSSAM INCORRER, INCLUINDO QUALQUER PERDA DE DADOS, INDEPENDENTE DE AVISO À GOOGLE OU A SEUS REPRESENTANTES OU DA NECESSIDADE DE AVISO SOBRE A POSSIBILIDADE DA INCORRÊNCIA DE TAIS PERDAS.
-
-12. Indenização
-
-12.1 Ao limite máximo permitido por lei, você concorda em defender, indenizar e isentar a Google, suas afiliadas e respectivos conselheiros, diretores, empregados e agentes com relação a todas e quaisquer reivindicações, ações, processos ou procedimentos, bem como todas e quaisquer perdas, responsabilidades, danos, custos e despesas (incluindo honorários advocatícios) decorrentes ou provenientes de: (a) seu uso do Preview, (b) qualquer aplicativo desenvolvido no Preview que infrinja direitos de propriedade intelectual de qualquer pessoa, difame qualquer pessoa ou viole seus direitos de publicidade ou privacidade e (c) qualquer não cumprimento deste Contrato de licença.
-
-13. Mudanças no Contrato de licença
-
-13.1 A Google pode realizar mudanças no Contrato de licença à medida que distribui novas versões do Preview. Quando essas mudanças forem realizadas, a Google fará uma nova versão do Contrato de licença disponível no site em que o Preview estiver disponível.
-
-14. Termos legais gerais
-
-14.1 Esse Contrato de licença constitui o contrato legal integral entre você e a Google e rege o uso do Preview (excluindo quaisquer serviços que a Google possa fornecer a você sob um contrato escrito em separado), e substitui inteiramente quaisquer contratos anteriores entre você e a Google em relação ao Preview.
-
-14.2 Você concorda que, se a Google não exercer nem impetrar qualquer direito ou recurso legal que esteja contido no Contrato de licença (ou que a Google detenha direitos nos termos de qualquer lei aplicável), não se considerará esse fato como uma renúncia formal aos direitos da Google e esses direitos ou recursos continuarão disponíveis à Google.
-
-14.3 Se qualquer tribunal de justiça que tiver a competência para decidir sobre esse tema determinar que qualquer cláusula do Contrato de licença é inválida, tal cláusula será removida do contrato sem afetar as cláusulas restantes ou sua vigência. As cláusulas restantes do Contrato de licença continuarão válidas e obrigatórias.
-
-14.4 Você reconhece e concorda que cada membro do grupo de empresas das quais a Google é a empresa controladora deve ser beneficiário terceiro do Contrato de licença e que essas outras empresas terão o poder de aplicar diretamente, e apoiar-se em, qualquer cláusula do Contrato de licença que confira um direito (ou direitos em favor) deles. Além disso, nenhuma outra pessoa nem empresa deve ser beneficiário terceiro do Contrato de licença.
-
-14.5 RESTRIÇÕES DE EXPORTAÇÃO. O PREVIEW ESTÁ SUJEITO ÀS LEIS E NORMAS DE EXPORTAÇÃO DOS ESTADOS UNIDOS. VOCÊ DEVE CUMPRIR TODAS AS LEIS E NORMAS DOMÉSTICAS E INTERNACIONAIS QUE SE APLICAREM AO PREVIEW. ESSAS LEIS INCLUEM RESTRIÇÕES SOBRE DESTINOS, USUÁRIOS FINAIS E USO FINAL.
-
-14.6 O Contrato de licença não pode ser atribuído nem transferido por você sem a aprovação prévia por escrito da Google. Qualquer tentativa de atribuição sem a aprovação será inválida. Você não deve delegar as próprias responsabilidades ou obrigações nos termos do Contrato de licença sem aprovação prévia por escrito da Google.
-
-14.7 O Contrato de licença e sua relação com a Google nos termos do contrato serão regidos pelas leis do estado da Califórnia sem considerar conflitos de disposições legais. Você e a Google concordam em se submeter à competência exclusiva dos tribunais localizados na comarca de Santa Clara, Califórnia, para dirimir quaisquer questões legais decorrentes do Contrato de licença. Não obstante a isso, você concorda que a Google continua habilitada a impetrar medidas cautelares (ou mecanismo legal urgente equivalente) em qualquer jurisdição.
-
-
-</div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/pt-br/preview/overview.jd b/docs/html-intl/intl/pt-br/preview/overview.jd
deleted file mode 100644
index e81ccd7..0000000
--- a/docs/html-intl/intl/pt-br/preview/overview.jd
+++ /dev/null
@@ -1,389 +0,0 @@
-page.title=Visão geral do programa
-page.metaDescription=Boas-vindas ao Android M Developer Preview, um programa que fornece tudo que é necessário para testar e otimizar os aplicativos para a próxima versão do Android.
-page.image=images/cards/card-preview_16-9_2x.png
-page.tags="preview", "developer", "android"
-
-@jd:body
-
-<div class="cols" style=
-"background-color:#ffebc3; padding: 5px 0;margin-bottom:1em; text-align:center;">
-<h3>
-    Developer Preview 2 is now available
-  </h3>
-
- <ul class="dac-section-links">
-    <li class="dac-section-link">
-      <a href="{@docRoot}preview/support.html#preview2-notes">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Read the Notes</a>
-    </li>
-
-    <li class="dac-section-link">
-      <a href="{@docRoot}preview/support.html#preview2-get">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Get the Update</a>
-    </li>
-
-    <li class="dac-section-link">
-      <a href="https://code.google.com/p/android-developer-preview/">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Report Issues</a>
-    </li>
-  </ul>
-</div>
-
-<p>
-  Boas-vindas ao <strong>Android M Developer Preview</strong>, um programa que fornece
- tudo que é necessário para testar e otimizar os aplicativos para a próxima versão
- do Android. É de graça e você pode começar agora mesmo: basta fazer
- o download das ferramentas M Developer Preview.
-</p>
-
-<div style="background-color:#eceff1;padding:1em;">
-<div class="wrap">
-  <div class="cols">
-    <div class="col-4of12">
-      <h5>
-        Imagens de sistema de emulador e hardware
-      </h5>
-
-      <p>
-        Execute e teste os aplicativos no Nexus 5, 6, 9 e Player (para TV), bem como
- em emuladores.
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        Código de plataforma mais recente
-      </h5>
-
-      <p>
-        Nós forneceremos várias atualizações durante a prévia. Portanto, você
- testará de acordo com as alterações mais recentes da plataforma.
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        Atualizações entregues por OTA
-      </h5>
-
-      <p>
-        É possível obter atualizações por OTA (over-the-air) ao programar o dispositivo
- em flash para a prévia inicial.
-      </p>
-    </div>
-  </div>
-
-  <div class="cols">
-
-
-    <div class="col-4of12">
-      <h5>
-        Novos comportamentos e capacidades
-      </h5>
-
-      <p>
-        Inicie o trabalho cedo para suportar os novos comportamentos da plataforma,
- como novo modelo de permissões de tempo de execução e recursos de economia de energia.
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        Janela de prioridades para problemas informados por desenvolvedores
-      </h5>
-
-      <p>
-        Durante as primeiras semanas, nós daremos prioridade aos problemas informados
- por desenvolvedores. Portanto, teste e forneça-nos feedback o quanto antes.
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        Feedback e suporte
-      </h5>
-
-      <p>
-        Informe problemas e dê-nos feedback usando o <a href="https://code.google.com/p/android-developer-preview/">issue tracker</a>.
-        Conecte-se a outros desenvolvedores na <a href="http://g.co/dev/AndroidMDevPreview">Comunidade M&nbsp;Developer</a>.
-
-      </p>
-    </div>
-  </div>
-</div>
-</div>
-
-<!--
-<p>
-  With the M Developer Preview, you'll get an early start on testing your apps,
-  with enough time to make adjustments before the public platform release later
-  in the year. We'll provide several updates to the Preview tools in the weeks
-  ahead, so you can keep in sync with the latest changes as the platform moves
-  toward launch.
-</p>
-<img src="{@docRoot}preview/images/m-preview-timeline.png" alt=
-"Preview program timeline" id="timeline">
-<p>
-  You can help us improve the platform by <a href=
-  "https://code.google.com/p/android-developer-preview/">reporting issues</a>
-  through our feedback channels. This is especially
-  critical in the first month of the preview, when we’ll be giving priority to
-  developer-reported issues and feedback.
-</p> -->
-
-
-<h2 id="timeline">
-  Linha do tempo e atualizações
-</h2>
-<img src="{@docRoot}preview/images/m-preview-timeline-crop.png" alt="Preview program timeline" id="timeline">
-<p>
-  O M Developer Preview estará em execução de 28 de maio até o Android M SDK final, que
- disponibilizaremos brevemente antes do lançamento público durante
- o 3º trimestre de 2015.
-</p>
-
-<p>
-  Nos marcos de desenvolvimento principais, entregamos atualizações para os dispositivos de teste.
-  Os marcos de experiência são
-</p>
-
-<ul>
-  <li>
-    <strong>Preview&nbsp;1</strong> (lançamento inicial do Preview, final de maio),
-  </li>
-
-  <li>
-    <strong>Preview&nbsp;2</strong> (final de junho/início de julho) e
-  </li>
-
-  <li>
-    <strong>Preview&nbsp;3</strong> (próximo ao final de julho)
-  </li>
-</ul>
-
-<p>
-  Estas atualizações culminam no <strong>SDK final</strong> (no 3º trimestre),
- que fornecerá APIs oficiais para a nova versão do Android,
- bem como os recursos e comportamentos do sistema final.
-</p>
-
-<p>
-  Ao testar e desenvolver no Android M, recomendamos que você <strong>mantenha
- o ambiente de desenvolvimento atualizado</strong> à medida que atualizações do Preview são lançadas.
-  Para facilitar o processo, fornecemos <strong>atualizações "over-the-air"
- (OTA)</strong> aos dispositivos já programados em flash para uma versão do Preview, além
- de fornecemos imagens do sistema que estão disponíveis para download e programação em flash manualmente.
-</p>
-<p class="note">
-  <strong>Observação:</strong> as imagens do sistema e o SDK final não podem ser entregues
- por OTA. Em vez disso, precisarão ser <strong>programadas em flash manualmente</strong> para
- os dispositivos de teste.</strong>
-</p>
-
-<p>
-  Notificaremos você quando as atualizações do Preview estiverem disponíveis por meio do <a href="http://android-developers.blogspot.com/">Blogue de desenvolvedores do Android</a>, além
- deste site
- e da <a href="http://g.co/dev/AndroidMDevPreview">Comunidade Android M Developer</a>.
-</p>
-
-<h2 id="preview_tools">
-  O que há no Preview?
-</h2>
-
-<p>
-  O M Developer Preview inclui tudo que é necessário para testar os aplicativos existentes
- em uma variedade de tamanhos de tela, tecnologias de rede, chipsets de CPU/GPU
- e arquiteturas de hardware.
-</p>
-
-<h4>
-  Ferramentas SDK
-</h4>
-
-<p>
-  É possível fazer o download destes componentes pelo SDK Manager no <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a>:
-</p>
-
-<ul>
-  <li>M Developer Preview <strong>ferramentas SDK</strong>
-  </li>
-
-  <li>M Developer Preview <strong>imagem do sistema de emulador</strong> (32 bits
-e 64 bits)
-  </li>
-
-  <li>M Developer Preview <strong>imagem do sistema de emulador para Android TV</strong>
- (32 bits)
-  </li>
-</ul>
-
-<h4>
-  Imagens do sistema de hardware
-</h4>
-
-<p>
-  É possível fazer o download destas imagens de sistema de hardware para dispositivos Nexus a partir
- da <a href="download.html">página de download</a>:
-</p>
-
-<ul>
-  <li>
-    <strong>Nexus 5</strong> (GSM/LTE) imagem do sistema de dispositivo “hammerhead”
-  </li>
-
-  <li>
-    <strong>Nexus 6</strong> imagem do sistema de dispositivo “shamu”
-  </li>
-
-  <li>
-    <strong>Nexus 9</strong> (Wi-Fi) imagem do sistema de dispositivo “volantis”
-  </li>
-
-  <li>
-    <strong>Nexus Player</strong> (Android TV) imagem do sistema de dispositivo “fugu”
-  </li>
-</ul>
-
-<h4>
-  Exemplo de código e documentação
-</h4>
-
-<p>
-  Estes recursos de documentação ajudam você a aprender sobre o Preview:
-</p>
-
-<ul>
-  <li>
-    <a href="setup-sdk.html">Configuração do SDK</a> tem instruções passo a passo
- para você começar.
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/testing/guide.html">Guia de teste</a> e <a href="behavior-changes.html">Mudanças de comportamento</a> mostram as áreas essenciais para o teste.
-  </li>
-
-  <li>Documentação de novas APIs, incluindo uma <a href="api-overview.html">Visão geral das APIs</a>,
- <a href="{@docRoot}preview/download.html#docs">Referência da API</a> disponível para download e guias de desenvolvedor detalhados sobre
- os recursos principais, como
- <a href="{@docRoot}preview/features/runtime-permissions.html">permissões</a>,
- <a href="{@docRoot}preview/backup/index.html">backup de aplicativo</a> etc.
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/samples.html">Exemplo de código</a> que demonstra como suportar
- permissões e outros novos recursos.
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/support.html#release-notes">Notas de versão</a> para a versão atual do
- M Developer Preview, incluindo notas de mudanças e relatórios de diferença.
-  </li>
-</ul>
-
-<h4>
-  Recursos de suporte
-</h4>
-
-<p>
-  Use estes recursos de suporte ao testar e desenvolver no
- M Developer Preview:
-</p>
-
-<ul>
-  <li>O <a href="https://code.google.com/p/android-developer-preview/">Issue Tracker do M
- Developer Preview</a> é o <strong>canal principal
- de feedback.</strong> É possível informar erros, problemas de desempenho e feedback
- geral pelo issue tracker. Também é possível verificar os <a href="https://code.google.com/p/android-developer-preview/wiki/KnownIssues">erros conhecidos</a>
- e encontrar etapas de resolução.
-  </li>
-
-  <li>A <a href="http://g.co/dev/AndroidMDevPreview">Comunidade Android M Developer
-</a> é uma comunidade do Google+ onde é possível <strong>se conectar
- a outros desenvolvedores</strong> que trabalham com o Android M. É possível compartilhar
- observações ou ideias, além de encontrar respostas para as dúvidas sobre o Android M.
-  </li>
-</ul>
-
-
-<h2 id="preview_apis_and_publishing">
-  Destinação, APIs de prévia e publicação
-</h2>
-
-<p>
-  O Android M Developer Preview é uma versão apenas para desenvolvimento
- e <strong>não possui um nível da API padrão</strong>. Caso opte
- pelos comportamentos de compatibilidade para testar o aplicativo (o que é muito recomendado),
- é possível destinar o M Developer Preview configurando o <code><a href=
-  "/guide/topics/manifest/uses-sdk-element.html">targetSdkVersion</a></code>
- do aplicativo para <code>“MNC”</code>.
-</p>
-
-<p>
-  O Android M Developer Preview fornece <strong>APIs de prévia</strong>
- &mdash; as APIs não serão oficiais até o lançamento do SDK final,
- atualmente planejado para o terceiro trimestre de 2015. Isto significa que é possível
- <strong>esperar alterações secundárias de APIs</strong> com o tempo, especialmente
- durante as semanas iniciais do programa. Forneceremos um resumo das alterações
- com cada atualização do Android M Developer Preview.
-</p>
-
-<p class="note">
-  Observe que, apesar das APIs da prévia poderem ser alteradas, os comportamentos essenciais do sistema,
- como permissões de tempo de execução e recursos de economia de energia, são estáveis e estão prontos
- para serem testados.
-</p>
-
-<p>
-  Em termos de publicação, o Google Play <strong>evita a publicação de aplicativos
- destinados para o M Developer Preview</strong>. Quando o SDK final do Android M estiver
- disponível, você poderá destinar o nível da API do Android M oficial
- e publicar o aplicativo no Google Play. Enquanto isso, caso queira distribuir um aplicativo
- destinado para Android M para testadores, é possível fazê-lo por e-mail ou por download direto
- a partir do site.
-</p>
-
-<h2 id="get_started">
-  Como começar
-</h2>
-
-<p>
-  Para começar o teste do aplicativo:
-</p>
-
-<ol>
-  <li>Revise a <a href="{@docRoot}preview/api-overview.html">Visão geral da API</a>
- e as <a href="{@docRoot}preview/behavior-changes.html">Mudanças de comportamento</a> para
- ter uma ideia do que há de novo e como isto afeta os aplicativos. Em particular, aprenda mais sobre
- o novo modelo<a href="{@docRoot}preview/features/runtime-permissions.html">de permissões
- de tempo de execução</a>, recursos de economia de energia e backup automático.
-  </li>
-
-  <li>Configure o ambiente seguindo as instruções para
- <a href="{@docRoot}preview/setup-sdk.html">Configurar o Preview SDK</a>
- e ajustar os dispositivos de teste.
-  </li>
-
-  <li>Siga <a href="https://developers.google.com/android/nexus/images">
- as instruções de programação em flash</a> para programar em flash a imagem do sistema do M Developer Preview mais recente
- para Nexus 5, 6, 9 e Player. Após programar em flash o dispositivo de desenvolvimento,
- as atualizações do Preview serão entregues por atualizações OTA (over-the-air).</a>
-  </li>
-
-  <li>Faça o download da <a href="{@docRoot}preview/download.html#docs">Referência da API do
- M Preview</a> e dos <a href="{@docRoot}preview/samples.html">exemplos do M Preview
-</a> para obter mais informações sobre os novos recursos de API e como usá-los
- no aplicativo.
-  </li>
-
-  <li>Junte-se à <a href="http://g.co/dev/AndroidMDevPreview">Comunidade Android M
- Developer</a> para obter as notícias mais recentes e conecte-se a outros
- desenvolvedores que trabalham com a nova plataforma.
-  </li>
-</ol>
-
-<p>
-  Agradecemos a sua participação no programa M Developer Preview do Android!
-</p>
diff --git a/docs/html-intl/intl/pt-br/preview/samples.jd b/docs/html-intl/intl/pt-br/preview/samples.jd
deleted file mode 100644
index a664837..0000000
--- a/docs/html-intl/intl/pt-br/preview/samples.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Exemplos
-page.image=images/cards/samples-new_2x.png
-@jd:body
-
-<p>
-  Os seguintes exemplos de código são fornecidos para o M Developer Preview. Para fazer o download
- dos exemplos no Android Studio, selecione a opção do menu <b>File (Arquivo) &gt; Import Samples (Importar exemplos)</b>.
-</p>
-
-<p class="note">
-  <strong>Observação:</strong> estes projetos disponíveis para download foram feitos
-para serem usados com Gradle e Android Studio.
-</p>
-
-
-<h3 id="RuntimePermissions">Permissões em tempo de execução</h3>
-
-<p>
- O Android M altera a maneira como as permissões do sistema funcionam. Os usuários são solicitados a aprovar
- as permissões em tempo de execução em vez de aprovar durante a instalação. Este exemplo mostra como solicitar
- essas permissões.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-RuntimePermissions">Obtenha isto no GitHub</a></p>
-
-<h3 id="ConfirmCredentials">Confirmação de credencial</h3>
-
-<p>
- Este exemplo demonstra como usar as credenciais do dispositivo como um método de autenticação no aplicativo.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ConfirmCredential">Obtenha isto
-no GitHub</a></p>
-
-<h3 id="FingerprintDialog">Diálogo de impressão digital</h3>
-
-<p>
- Este exemplo demonstra como reconhecer as impressões digitais registradas para autenticar o usuário
- no aplicativo.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-FingerprintDialog">Obtenha isto no GitHub</a></p>
-
-<h3 id="AutomaticBackup">Backup automático para aplicativos</h3>
-
-<p>
- O Android M introduz o backup automático para as configurações de aplicativos. Este exemplo demonstra como adicionar
- regras de filtro a um aplicativo para gerenciar o backup de configurações.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-AutoBackupForApps">Obtenha isto no GitHub</a></p>
-
-<h3 id="CameraRaw">Câmera 2 Bruta</h3>
-
-<p>
-  Demonstra como usar a API <code>Camera2</code> API para capturar buffers de câmera RAW e salvá-los
- como arquivos <code>DNG</code>.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-Camera2Raw">Obtenha isto no GitHub</a></p>
-
-<h3 id="ActiveNotification">Notificação ativa</h3>
-
-<p>
-  Este exemplo demonstra como o
- <a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a>
- pode dizer quantas notificações o aplicativo está exibindo.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ActiveNotifications">Obtenha isto no GitHub</a></p>
diff --git a/docs/html-intl/intl/pt-br/preview/setup-sdk.jd b/docs/html-intl/intl/pt-br/preview/setup-sdk.jd
deleted file mode 100644
index 894fe43..0000000
--- a/docs/html-intl/intl/pt-br/preview/setup-sdk.jd
+++ /dev/null
@@ -1,207 +0,0 @@
-page.title=Configuração do Preview SDK
-page.image=images/cards/card-set-up_16-9_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Neste documento</h2>
-      <ol>
-        <li><a href="#get-as13">Obter o Android Studio 1.3</a></li>
-        <li><a href="#get-sdk">Obter o Preview SDK</a></li>
-        <li><a href="#create-update">Criar ou atualizar um projeto</a></li>
-        <li><a href="#setup-test">Configurar para teste</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>O M Developer Preview SDK está disponível a partir do Android SDK Manager.
-Este documento assume que você está familiarizado com o desenvolvimento de aplicativos do Android,
-como o uso do Android SDK Manager e criação de projetos. Caso seja novo no
-Android, consulte a lição de treinamento <a href="{@docRoot}training/basics/firstapp/index.html">Como criar o primeiro
-aplicativo</a> primeiro.</a></p>
-
-<h2 id="get-as13">Obter o Android Studio 1.3</h2>
-
-<p>A prévia de desenvolvedor é melhor usada com o Android Studio 1.3, que está no estado
-de prévia. É altamente recomendado que você instale a versão de prévia
-do Android Studio 1.3 para que funcione com o Preview SDK.</p>
-
-<p class="caution"><strong>Cuidado:</strong> a prévia canário do Android
-Studio 1.3 ainda está em desenvolvimento ativo. Caso esteja usando a máquina de desenvolvimento principal
-para testar a prévia de desenvolvedor, é possível criar uma segunda instalação
-do Android Studio para usar em testes.</p>
-
-<p>Para instalar a prévia do Android Studio 1.3:</p>
-
-<ol>
-  <li>Faça o download e inicie o <a href="{@docRoot}tools/studio/index.html">Android
- Studio</a>.
-  </li>
-
-  <li>Abra a janela <strong>Settings (Configurações)</strong> (no Windows, é possível fazer isto
- escolhendo <strong>File (Arquivo) &gt; Settings (Configurações)</strong>). Escolha o painel
- <strong>Appearance &amp; Behavior (Aparência e comportamento) &gt; System
- Settings (Configurações do sistema) &gt; Updates (Atualizações)</strong>.
-
-    <p class="aside">No OSX, é possível encontrar o painel <strong>Appearance &amp;
- Behavior (Aparência e comportamento)</strong>
- na janela <strong>Preferences (Preferências)</strong> do Android Studio.</p>
-  </li>
-
-  <li> No painel <strong>Updates (Atualizações)</strong>, escolha a opção
- <strong>Automatically check updates for: Canary Channel (Verificar atualizações automaticamente para: canal canário)</strong>.
-  </li>
-
-  <li>No painel <strong>Updates (Atualizações)</strong>, selecione <strong>Check Now (Verificar agora)</strong>
- para verificar a versão mais recente da versão canário. Faça o download e instale a versão
- quando solicitado.
-  </li>
-</ol>
-
-<h2 id="get-sdk">Obter o Preview SDK</h2>
-
-<p>Para adicionar os componentes do Preview SDK ao ambiente de desenvolvimento:</p>
-
-<ol>
-  <li>Inicie a prévia do Android Studio 1.3.
-  </li>
-
-  <li>Abra a janela <strong>Settings (Configurações)</strong> (no Windows, é possível fazer isto
- escolhendo <strong>File (Arquivo) &gt; Settings (Configurações)</strong>). Escolha o painel
- <strong>Appearance &amp; Behavior (Aparência e comportamento) &gt; System
- Settings (Configurações do sistema) &gt; Updates (Atualizações)</strong>.
-
-    <p class="aside">No OSX, é possível encontrar o painel <strong>Appearance &amp;
- Behavior (Aparência e comportamento)</strong>
- na janela <strong>Preferences (Preferências)</strong> do Android Studio.</p>
-  </li>
-
-  <li>No painel <strong>Updates (Atualizações)</strong>, escolha a opção
- <strong>Automatically check updates for: Canary Channel (Verificar atualizações automaticamente para: canal canário)</strong> e
- <strong>Automatically check atualização for Android SDK: Preview Channel (Verificar atualizações automaticamente para: canal de pré-visualização)</strong>.
-  </li>
-
-  <li>Inicie o <strong>Android SDK Manager</strong>. (Com o Android Studio 1.3,
- o SDK Manager está integrado no Android Studio, em vez de ser
- um aplicativo independente.)
-  </li>
-
-  <li>Na seção <strong>Platforms (Plataformas)</strong>, selecione <strong>Android MNC
- Preview</strong>.
-  </li>
-
-  <li>Na seção <strong>Tools (Ferramentas)</strong>, selecione o Android <strong>
-SDK Tools</strong>, <strong>Platform-tools</strong> e 
-<strong>Build-tools</strong> mais recentes.
-  </li>
-
-  <li>Clique em <strong>Install packages (Instalar pacotes)</strong> e aceite o contrato de licença
- para todos os pacotes.
-  </li>
-
-  <li>Verifique se o M Developer Preview está instalado abrindo a janela <strong>
-Settings (Configurações)</strong> e escolhendo o painel <strong>Appearance &amp; Behavior (Aparência e comportamento) 
-&gt; System Settings (Configurações do sistema) &gt; Android SDK</strong>.</li>
-
-  <li>No painel <strong>Android SDK</strong>, escolha
- a guia <strong>SDK Platforms (Plataformas SDK)</strong>. <strong>Android MNC
- Preview</strong> deve estar listado como <em>Installed (Instalado)</em>. Além disso, abra a guia
- <strong>SDK Tools (Ferramentas SDK)</strong> para verificar se as ferramentas mais recentes
- estão instaladas.
-  </li>
-</ol>
-<p>Após concluir estas etapas, os componentes de prévia estarão disponíveis
- no ambiente de desenvolvimento. </p>
-
-
-<h2 id="create-update">Criar ou atualizar um projeto</h2>
-
-<p>
-  Para usar as APIs de prévia, deve-se criar ou atualizar um projeto de desenvolvimento para usar
- os componentes de prévia.
-</p>
-
-
-<h3 id="create">Criar um novo projeto</h3>
-
-<p>
-  Recomendamos o uso do Android Studio para criar um projeto com a prévia. Siga as etapas
- descritas em <a href="{@docRoot}sdk/installing/create-project.html">Criar um projeto</a>
- até chegar na tela <em>Form Factors (Novas especificações)</em> no assistente do projeto. Em seguida,
- realize as seguintes etapas para criar um projeto configurado para a prévia.
-</p>
-
-<ul>
-  <li>Verifique <strong>Phone and Tablet (Telefone e tablet)</strong>.</li>
-  <li>Selecione <strong>MNC: Android M (Preview)</strong> em <strong>Minimum
- SDK (SDK mínimo)</strong>.</li>
-</ul>
-
-
-<h3 id="update">Atualizar um projeto existente</h3>
-
-<p>
-  Para projetos existentes, deve-se modificar a configuração de projeto para ativar as APIs de prévia. No
- ambiente de desenvolvimento, abra o arquivo <code>build.gradle</code> para o módulo
- e defina estes valores da seguinte forma:
-</p>
-
-<ul>
-  <li><code>compileSdkVersion</code> para <code>'android-MNC'</code></li>
-  <li><code>minSdkVersion</code> para <code>'MNC'</code></li>
-  <li><code>targetSdkVersion</code> para <code>'MNC'</code></li>
-</ul>
-
-
-<h2 id="setup-test">Configurar para teste</h2>
-
-<p>
-  Testar um aplicativo com a prévia requer que você tenha um dispositivo ou dispositivo virtual configurado
- com a versão de prévia da plataforma. Caso tenha um dispositivo compatível, é possível instalar a plataforma
- de prévia para teste. Caso contrário, é possível configurar um dispositivo virtual para o teste.
-</p>
-
-<h3 id="setup-device">Configurar um dispositivo físico</h3>
-
-<p>
-  Caso tenha um Nexus 5, Nexus 6, Nexus 9 ou Android TV, é possível instalar uma imagem do sistema
- de prévia nestes dispositivos para testar o aplicativo.
- É possível configurar um dispositivo virtual com a versão de prévia da plataforma a partir do Android Studio
- usando a ferramenta Android Virtual Device Manager.
-</p>
-
-<p class="caution">
-  <strong>Importante:</strong> instalar uma imagem de prévia em um dispositivo <em>remove todos os dados
- dele</em>. Portanto, deve-se realizar o backup de quaisquer dados antes de instalar uma imagem de prévia.
-</p>
-
-<h3 id="setupAVD">Configurar um dispositivo virtual</h3>
-
-<p>
-  É possível configurar um dispositivo virtual com a versão de prévia da plataforma dentro do Android Studio
- usando a ferramenta Android Virtual Device Manager.
-</p>
-
-<p>Para criar um AVD com o AVD Manager:</p>
-
-<ol>
-  <li>Instale o Preview SDK no ambiente de desenvolvimento, como descrito
- em <a href="{@docRoot}preview/setup-sdk.html">Configurar o Preview
- SDK.</a></li>
-  <li>Siga as etapas em
- <a href="{@docRoot}tools/devices/managing-avds.html">Como gerenciar AVDs com
- o Gerenciador de AVD</a>. Use as seguintes configurações:
-    <ul>
-      <li><strong>Dispositivo:</strong> Nexus 5, Nexus 6, Nexus 9 ou Android TV</li>
-      <li><strong>Alvo:</strong>
-       Android M (Preview) - Nível da API M</li>
-      <li><strong>ABI:</strong> x86</li>
-    </ul>
-  </li>
-</ol>
-
-<p>
-  Para obter mais informações sobre como criar dispositivos virtuais para teste, consulte <a href="{@docRoot}tools/devices/index.html">Gerenciamento de dispositivos virtuais</a>.
-</p>
diff --git a/docs/html-intl/intl/pt-br/preview/testing/guide.jd b/docs/html-intl/intl/pt-br/preview/testing/guide.jd
deleted file mode 100644
index b995f8b..0000000
--- a/docs/html-intl/intl/pt-br/preview/testing/guide.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=Guia de teste
-page.image=images/cards/card-build_16x9_2x.png
-page.keywords=previewresources,androidm,testing,permissions
-
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Neste documento</h2>
-      <ol>
-        <li><a href="#runtime-permissions">Teste de permissões</a></li>
-        <li><a href="#doze-standby">Teste de soneca e aplicativo em espera</a></li>
-        <li><a href="#ids">Identificadores de dispositivo e backup automático</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  O Android M Developer Preview fornece uma oportunidade de garantir que os aplicativos funcionem
- na próxima versão da plataforma. Esta prévia inclui um número de mudanças de comportamento e APIs que podem
- ter impacto no aplicativo, como descrito em <a href="{@docRoot}preview/api-overview.html">Visão geral da API
-</a> e <a href="{@docRoot}preview/behavior-changes.html">Mudanças de comportamento</a>. No teste
- do aplicativo com a prévia, há algumas alterações de sistema específicas em que você deve se concentrar
- para garantir que os usuários tenham uma boa experiência.
-</p>
-
-<p>
-  Este guia descreve quais recursos de prévia testar e como testá-los com o aplicativo. Você deve
- priorizar o teste destes recursos de prévia específicos, devido ao grande impacto potencial no
- comportamento do aplicativo:
-</p>
-
-<ul>
-  <li><a href="#runtime-permissions">Permissões</a>
-  </li>
-  <li><a href="#doze-standby">Soneca e aplicativo em espera</a>
-  </li>
-  <li><a href="#ids">Identificadores de dispositivo e backup automático</a></li>
-</ul>
-
-<p>
-  Para obter mais informações sobre como configurar dispositivos físicos ou virtuais com uma imagem do sistema de prévia
- para teste, consulte <a href="{@docRoot}preview/setup-sdk.html">Configuração do Preview SDK</a>.
-</p>
-
-
-<h2 id="runtime-permissions">Teste de permissões</h2>
-
-<p>
-  O novo modelo de <a href="{@docRoot}preview/features/runtime-permissions.html">permissões</a>
- altera a maneira que as permissões são alocadas ao aplicativo pelo usuário. Em vez de conceder todas as permissões
- durante o procedimento de instalação, o aplicativo deve pedir ao usuário permissões individuais
- em tempo de execução. Para os usuários, este comportamento fornece um controle mais granular sobre as atividades de cada aplicativo, bem
- como um melhor contexto para entender o porquê do aplicativo estar solicitando uma permissão específica. Os usuários
- podem conceder ou revogar as permissões concedidas a um aplicativo individualmente a qualquer momento. É provável que este recurso
- da prévia tenha um impacto no comportamento do aplicativo e pode impedir que alguns
- dos recursos do aplicativo funcionem, ou funcionem em um estado degradado.
-</p>
-
-<p class="caution">
-  Esta alteração afeta todos os aplicativos em execução na nova plataforma, mesmo aqueles que não são destinados
- para a versão nova da plataforma. A plataforma fornece um comportamento de compatibilidade limitado para aplicativos legados. No entanto,
- você deve começar a planejar a migração do aplicativo para o novo modelo de permissões agora, com o objetivo
- de publicar uma versão atualizada do aplicativo no lançamento oficial da plataforma.
-</p>
-
-
-<h3 id="permission-test-tips">Dicas de teste</h3>
-
-<p>
-  Use as seguintes dicas de teste para ajudar você a planejar e executar os testes do aplicativo com o novo
- comportamento de permissões.
-</p>
-
-<ul>
-  <li>Identifique as permissões atuais do aplicativo e os caminhos de código relacionados.</li>
-  <li>Teste o fluxo de usuário entre serviços protegidos por permissão e dados.</li>
-  <li>Teste com várias combinações de permissões revogadas/concedidas.</li>
-  <li>Use a ferramenta {@code adb} para gerenciar as permissões da linha de comando:
-    <ul>
-      <li>Liste as permissões e o status por grupos:
-        <pre>adb shell pm list permissions -d -g</pre>
-      </li>
-      <li>Conceda ou revogue uma ou mais permissões usando a seguinte sintaxe:<br>
-        <pre>adb shell pm [grant|revoke] &lt;permission.name&gt; ...</pre>
-      </li>
-    </ul>
-  </li>
-  <li>Analise o aplicativo para encontrar os serviços que usam permissões.</li>
-</ul>
-
-<h3 id="permission-test-strategy">Estratégia de teste</h3>
-
-<p>
-  A mudança de permissões afeta a estrutura e o projeto do aplicativo, bem como
- a experiência dos usuários e os fluxos fornecidos a eles. Você deve avaliar o uso das permissões atuais
- do aplicativo e começar a planejar novos fluxos que deseja oferecer. O lançamento oficial
- da plataforma fornece comportamento de compatibilidade, mas deve-se planejar a atualização do aplicativo e
- não confiar nestes comportamentos.
-</p>
-
-<p>
-  Identifique as permissões que o aplicativo realmente precisa e usa e, em seguida, encontre os vários caminhos
- de código que usam os serviços protegidos por permissões. É possível fazer isto por meio de uma combinação de
- testes na nova plataforma e análise de códigos. Nos testes, você deve se concentrar em usar
- as permissões em tempo de execução alterando {@code targetSdkVersion} do aplicativo para a versão da prévia. Para
- obter mais informações, consulte <a href="{@docRoot}preview/setup-sdk.html#">Configuração do Preview SDK</a>.
-</p>
-
-<p>
-  Teste com várias combinações de permissões revogadas e concedidas para destacar os fluxos de usuário
-que dependem de permissões. Onde uma dependência não for óbvia ou lógica, considere
-refatorar ou compartimentalizar este fluxo para eliminar a dependência ou para esclarecer por que
-a permissão é necessária.
-</p>
-
-<p>
-  Para obter mais informações sobre o comportamento das permissões em tempo de execução, de testes e de melhores práticas, consulte a página
- <a href="{@docRoot}preview/features/runtime-permissions.html">Permissões</a> do Developer
- Preview.
-</p>
-
-
-<h2 id="doze-standby">Teste de soneca e aplicativo em espera</h2>
-
-<p>
-  Os recursos de economia de energia de aplicativo em espera e soneca limitam a quantidade de processamento de segundo plano que o aplicativo
- pode realizar quando um dispositivo está no estado ocioso ou enquanto não está em foco. As
- restrições que o sistema pode impor nos aplicativos inclui acesso a rede limitado ou restrito,
- tarefas de segundo plano suspensas, notificações suspensas, solicitações de soneca ignoradas e despertadores. Para garantir
- que o aplicativo se comportará adequadamente com essas otimizações de economia de energia, deve-se testá-lo
- simulando estes estados de baixa energia.
-</p>
-
-<h4 id="doze">Testar o aplicativo com Soneca</h4>
-
-<p>Para testar a Soneca com o aplicativo:</p>
-
-<ol>
-<li>Configure um dispositivo de hardware ou virtual com uma imagem do sistema M Preview.</li>
-<li>Conecte o dispositivo à máquina de desenvolvimento e instale o aplicativo.</li>
-<li>Execute o aplicativo e deixe-o ativo.</li>
-<li>Simule o dispositivo acessando o modo Soneca executando os seguintes comandos:
-
-<pre>
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-
-  </li>
-  <li>Observe o comportamento do aplicativo quando o dispositivo é reativado. Certifique-se de que
- ele se recupere corretamente quando o dispositivo sai do modo Soneca.</li>
-</ol>
-
-
-<h4 id="standby">Testar o aplicativo no modo de espera</h4>
-
-<p>Para testar o modo de espera do aplicativo:</p>
-
-<ol>
-  <li>Configure um dispositivo de hardware ou virtual com uma imagem do sistema M Preview.</li>
-  <li>Conecte o dispositivo à máquina de desenvolvimento e instale o aplicativo.</li>
-  <li>Execute o aplicativo e deixe-o ativo.</li>
-  <li>Simule o aplicativo acessando o modo de espera executando os seguintes comandos:
-
-<pre>
-$ adb shell am broadcast -a android.os.action.DISCHARGING
-$ adb shell am set-idle &lt;packageName&gt; true
-</pre>
-
-  </li>
-  <li>Simule o despertar do aplicativo usando o seguinte comando:
-    <pre>$ adb shell am set-idle &lt;packageName&gt; false</pre>
-  </li>
-  <li>Observe o comportamento do aplicativo quando ele é despertado. Certifique-se de que ele se recupere corretamente
- do modo de espera. Particularmente, deve-se verificar se as notificações e os trabalho de segundo plano
- do aplicativo continuam a funcionar como o esperado.</li>
-</ol>
-
-<h2 id="ids">Backup automático para aplicativos e identificadores específicos do dispositivo</h2>
-
-<p>Caso o aplicativo esteja persistindo qualquer identificador específico do dispositivo, como o ID de registro do Google
-Cloud Messaging, no armazenamento interno,
-certifique-se de seguir as práticas recomendadas para excluir o local de armazenamento
-do backup automático, como descrito em <a href="{@docRoot}preview/backup/index.html">Backup automático
-para aplicativos</a>. </p>
diff --git a/docs/html-intl/intl/pt-br/preview/testing/performance.jd b/docs/html-intl/intl/pt-br/preview/testing/performance.jd
deleted file mode 100644
index d541be1..0000000
--- a/docs/html-intl/intl/pt-br/preview/testing/performance.jd
+++ /dev/null
@@ -1,656 +0,0 @@
-page.title=Teste de desempenho de exibição
-page.image=images/cards/card-test-performance_2x.png
-page.keywords=performance, fps, tools
-
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Neste documento</h2>
-      <ol>
-        <li><a href="#measure">Medir desempenho da IU</a>
-          <ul>
-            <li><a href="#aggregate">Agregar estatísticas de quadro</a></li>
-            <li><a href="#timing-info">Informações de precisão de quadro</a></li>
-            <li><a href="#timing-dump">Despejo de precisão de quadro simples</a></li>
-            <li><a href="#collection-window">Controlar janela de coleta de estatísticas</a></li>
-            <li><a href="#diagnose">Diagnosticar regressões de desempenho</a></li>
-            <li><a href="#resources">Recursos adicionais</a></li>
-          </ul>
-        </li>
-        <li><a href="#automate">Automatizar teste de desempenho da IU</a>
-          <ul>
-            <li><a href="#ui-tests">Configurar testes da IU</a></li>
-            <li><a href="#automated-tests">Configurar testes automatizados da IU</a></li>
-            <li><a href="#triage">Triagem e resolução de problemas observados</a></li>
-          </ul>
-        </li>
-      </ol>
-  </div>
-</div>
-
-
-<p>
-  O teste de desempenho da interface do usuário (IU) garante que o aplicativo
- não só esteja de acordo com os requisitos funcionais, como também que as interações de usuários
- sejam muito mais suaves, executando a 60 quadros por segundo de forma consistente (<a href="https://www.youtube.com/watch?v=CaMTIgxCSqU&amp;index=25&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">por que
- 60 qps?</a>), sem nenhum quadro atrasado ou descartado ou, como gostamos de chamar, <em>"jank"</em>. Este documento explica as ferramentas disponíveis
- para medir o desempenho da IU e dispõe uma abordagem para integrar
- as medidas de desempenho de IU nas práticas de teste.
-</p>
-
-
-<h2 id="measure">Medir desempenho da IU</h2>
-
-<p>
-  Para aprimorar o desempenho, deve-se primeiro ter a habilidade de medir o desempenho
- do sistema e, em seguida, diagnosticar e identificar problemas que podem ocorrer
- em várias partes do processo.
-</p>
-
-<p>
-  <em><a href="https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></em> é uma ferramenta
- do Android que é executada no dispositivo e despeja informações interessantes sobre o estado
- dos serviços do sistema. Passar o comando <em>gfxinfo</em> para dumpsys fornece uma saída no logcat
- com informações de desempenho relacionada aos quadros de animação que ocorrem
- durante a fase de registro.
-</p>
-
-<pre>
-&gt; adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt;
-</pre>
-
-<p>
-  Este comando pode produzir diversas variáveis de dados de precisão de quadro.
-</p>
-
-<h3 id="aggregate">Agregar estatísticas de quadro</h3>
-
-<p>
-  Com o M Preview, o comando emite uma análise agregada dos dados de quadro para logcat,
- coletados em todo o ciclo de vida do processo. Por exemplo:
-</p>
-
-<pre class="noprettyprint">
-Stats since: 752958278148ns
-Total frames rendered: 82189
-Janky frames: 35335 (42.99%)
-90th percentile: 34ms
-95th percentile: 42ms
-99th percentile: 69ms
-Number Missed Vsync: 4706
-Number High input latency: 142
-Number Slow UI thread: 17270
-Number Slow bitmap uploads: 1542
-Number Slow draw: 23342
-</pre>
-
-<p>
-  Estas estatísticas de alto nível carregam um alto nível de desempenho de renderização do aplicativo,
- bem como a estabilidade em vários quadros.
-</p>
-
-
-<h3 id="timing-info">Informações de precisão de quadro</h3>
-
-<p>
-  Com o M Preview, há um novo comando para gfxinfo, o <em>framestats</em>, que fornece
- informações de precisão de quadros extremamente detalhadas dos quadros recentes para que você possa rastrear
- e depurar os problemas de forma mais precisa.
-</p>
-
-<pre>
-&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; framestats
-</pre>
-
-<p>
-  Este comando emite informações de precisão de quadros, com marcações de data e hora, dos últimos 120
- quadros produzidos pelo aplicativo. Abaixo, há um exemplo de saída bruta das estatísticas
- de quadro de adb dumpsys gfxinfo &lt;PACKAGE_NAME&gt;:
-</p>
-
-<pre class="noprettyprint">
-0,49762224585003,49762241251670,9223372036854775807,0,49762257627204,49762257646058,49762257969704,49762258002100,49762265541631,49762273951162,49762300914808,49762303675954,
-0,49762445152142,49762445152142,9223372036854775807,0,49762446678818,49762446705589,49762447268818,49762447388037,49762453551527,49762457134131,49762474889027,49762476150120,
-0,49762462118845,49762462118845,9223372036854775807,0,49762462595381,49762462619287,49762462919964,49762462968454,49762476194547,49762476483454,49762480214964,49762480911527,
-0,49762479085548,49762479085548,9223372036854775807,0,49762480066370,49762480099339,49762481013089,49762481085850,49762482232152,49762482478350,49762485657620,49762486116683,
-</pre>
-
-<p>
-  Cada linha desta saída representa um quadro produzido pelo aplicativo. Cada linha tem um número fixo
- de colunas que descrevem o tempo gasto em cada estágio do pipeline que produz quadros. A próxima seção descreve
- este formato com detalhes, incluindo o que cada coluna representa.
-</p>
-
-
-<h4 id="fs-data-format">Formato de dados de estatísticas de quadro</h4>
-
-<p>
-  Como o bloco de dados é a saída no formato CSV, basta colá-lo na ferramenta
- de planilha de sua escolha ou coletá-lo e analisá-lo com o script. A tabela a seguir explica o formato
- das colunas de dados de saída. Todas as marcações de data e hora estão em nanossegundos.
-</p>
-
-<ul>
-  <li>SINALIZADORES
-    <ul>
-      <li>Linhas com ‘0’ para a coluna FLAGS podem ter o tempo total de quadros calculado
- subtraindo a coluna INTENDED_VSYNC da coluna FRAME_COMPLETED.
-      </li>
-
-      <li>Se for um número diferente de zero, a linha deverá ser ignorada, pois o quadro será determinado
- como exceção em comparação ao desempenho normal, onde espera-se que o layout e o desenho
- demorem mais do que 16 ms. Eis alguns motivos para que isto ocorra:
-        <ul>
-          <li>Layout da janela alterado (como o primeiro quadro do aplicativo
- ou após uma rotação)
-          </li>
-
-          <li>Também é possível que o quadro seja ignorado, quando alguns valores
- ainda terão marcações de data e hora de lixo. Um quadro pode ser ignorado se, por exemplo,
- estiver executando a 60 quadros por segundo ou se nada na tela estiver incorreto, o que não necessariamente
- é um sinal de problema no aplicativo.
-          </li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-
-  <li>INTENDED_VSYNC
-    <ul>
-      <li>O ponto inicial planejado para o quadro. Se este valor for diferente de VSYNC,
- significa que há um trabalho ocorrendo no encadeamento da IU que não permitiu que ele respondesse
- ao sinal de vsync de forma precisa.
-      </li>
-    </ul>
-  </li>
-
-  <li>VSYNC
-    <ul>
-      <li>O valor de tempo foi usado em todos os escutadores vsync e no desenho para o quadro
- (retorno de chamada do quadro Choreographer, animações, View.getDrawingTime(), etc.)
-      </li>
-
-      <li>Para entender mais sobre VSYNC e como ele influencia o aplicativo, assista ao vídeo
- <a href="https://www.youtube.com/watch?v=1iaHxmfZGGc&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=23">
-Entendimento do VSYNC</a>.
-      </li>
-    </ul>
-  </li>
-
-  <li>OLDEST_INPUT_EVENT
-    <ul>
-      <li>A marcação de data e hora do evento de entrada mais antigo na fila de entrada, ou Long.MAX_VALUE
- se não houver eventos de entrada para o quadro.
-      </li>
-
-      <li>Este valor é principalmente planejado para o trabalho da plataforma e tem utilidade limitada
- para desenvolvedores de aplicativos.
-      </li>
-    </ul>
-  </li>
-
-  <li>NEWEST_INPUT_EVENT
-    <ul>
-      <li>A marcação de data e hora do evento de entrada mais recente na fila de entrada
- ou 0 se não houver eventos de entrada para o quadro.
-      </li>
-
-      <li>Este valor é principalmente planejado para o trabalho da plataforma e tem utilidade limitada
- para desenvolvedores de aplicativos.
-      </li>
-
-      <li>No entanto, é possível ter uma breve ideia da quantidade de latência que o aplicativo
- está adicionado verificando (FRAME_COMPLETED - NEWEST_INPUT_EVENT).
-      </li>
-    </ul>
-  </li>
-
-  <li>HANDLE_INPUT_START
-    <ul>
-      <li>A marcação de data e hora em que os eventos de entrada foram despachados para o aplicativo.
-      </li>
-
-      <li>Ao olhar o horário entre isto e ANIMATION_START, é possível medir o tempo que o aplicativo
- gastou para lidar com os eventos de entrada.
-      </li>
-
-      <li>Se este número for alto (&gt; 2 ms), indica que o aplicativo está gastando
- tempo demais processando os eventos de entrada, como View.onTouchEvent(), o que pode indicar
- que este trabalho precisa ser otimizado ou descarregado para um encadeamento diferente. Observe que há algumas situações,
- como eventos de clique que iniciam novas atividades,
- em que é esperado e aceitável que este número seja grande.
-      </li>
-    </ul>
-  </li>
-
-  <li>ANIMATION_START
-    <ul>
-      <li>A marcação de data e hora em que as animações registradas com Choreographer foram executadas.
-      </li>
-
-      <li>Ao olhar para o tempo entre isto e PERFORM_TRANVERSALS_START,
- é possível determinar o tempo levado para avaliar todos os animadores
- (ObjectAnimator, ViewPropertyAnimator e Transitions sendo as mais comuns) que estão sendo executados.
-      </li>
-
-      <li>Se este número for alto (&gt; 2 ms), verifique se o aplicativo gravou qualquer animador
- personalizado ou quais campos de ObjectAnimators estão animando
- e certifique-se de que eles sejam adequados para uma animação.
-      </li>
-
-      <li>Para saber mais sobre Choreographer, assista ao vídeo
- <a href="https://developers.google.com/events/io/sessions/325418001">Para melhor ou pior</a>.
-      </li>
-    </ul>
-  </li>
-
-  <li>PERFORM_TRAVERSALS_START
-    <ul>
-      <li>Se você subtrair o DRAW_START deste valor, será possível extrair o tempo que as fases de medida e layout
- levaram para serem concluídas (observação: durante uma rolagem ou animação,
- espera-se que este valor seja próximo a zero).
-      </li>
-
-      <li>Para saber mais sobre as fases de medida e layout do pipeline de renderização,
- assista ao vídeo <a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">
-Invalidações, layouts e desempenho</a>
-      </li>
-    </ul>
-  </li>
-
-  <li>DRAW_START
-    <ul>
-      <li>O horário em que a fase de desenho de performTraversals foi iniciada. Este é o ponto inicial
- do registro de listas de exibição de vistas que foram invalidadas.
-      </li>
-
-      <li>O tempo entre isto e SYNC_START é o tempo levado para chamar View.draw()
- em todas as vistas invalidadas na árvore.
-      </li>
-
-      <li>Para obter mais informações sobre o modelo de desenho, assista aos vídeos <a href="{@docRoot}guide/topics/graphics/hardware-accel.html#hardware-model">Aceleração de hardware</a>
- ou <a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">
- Invalidações, layouts e desempenho</a>
-      </li>
-    </ul>
-  </li>
-
-  <li>SYNC_START
-    <ul>
-      <li>O horário em que a fase de sincronização do desenho foi iniciada.
-      </li>
-
-      <li>Se o tempo entre isto e ISSUE_DRAW_COMMANDS_START for substancial (aproximadamente &gt; 0,4ms),
- geralmente indicará que vários Bitmaps novos que foram desenhados deverão
- ser enviados para o GPU.
-      </li>
-
-      <li>Para entender mais sobre a fase de sincronização, assista ao vídeo <a href="https://www.youtube.com/watch?v=VzYkVL1n4M8&amp;index=24&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">
-Renderização de GPU de perfil</a>
-      </li>
-    </ul>
-  </li>
-
-  <li>ISSUE_DRAW_COMMANDS_START
-    <ul>
-      <li>O horário em que o renderizador de hardware começou a emitir comandos de desenho para a GPU.
-      </li>
-
-      <li>O tempo entre isto e FRAME_COMPLETED fornece uma breve ideia da quantidade de trabalho de GPU
- que o aplicativo está produzindo. Problemas com excesso ou efeitos de renderização
- ineficientes são exibidos aqui.
-      </li>
-    </ul>
-  </li>
-
-  <li>SWAP_BUFFERS
-    <ul>
-      <li>O horário em que o eglSwapBuffers foi chamado, relativamente desinteressante
- fora do trabalho da plataforma.
-      </li>
-    </ul>
-  </li>
-
-  <li>FRAME_COMPLETED
-    <ul>
-      <li>Tudo feito! O tempo total gasto trabalhando neste quadro pode ser calculando
- realizando FRAME_COMPLETED - INTENDED_VSYNC.
-      </li>
-    </ul>
-  </li>
-
-</ul>
-
-<p>
-  É possível usar estes dados de várias formas. Uma visualização simples mas útil é o histograma
- exibindo a distribuição dos tempos dos quadros (FRAME_COMPLETED - INTENDED_VSYNC)
- em diferentes espaços de latência. Consulte a figura abaixo. Este gráfico mostra brevemente que a maioria
- dos quadros estavam bons — bem abaixo do limite de 16 ms (representado em vermelho) —,
- mas que alguns quadros estavam bem acima do limite. Podemos verificar as alterações neste histograma
- com o tempo para encontrar as mudanças indiscriminadas ou novas exceções sendo criadas. Também é possível colocar em gráfico a latência de entrada,
- o tempo gasto no layout ou outras medidas interessantes com base
- nas várias marcações de data e hora nos dados.
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-framestats.png">
-
-
-<h3 id="timing-dump">Despejo de precisão de quadro simples</h3>
-
-<p>
-  Se a <strong>renderização de GPU de perfil</strong> for definida para <strong>em adb shell dumpsys gfxinfo</strong>
- nas opções de desenvolvedor, o comando <code>adb shell dumpsys gfxinfo</code> emitirá informações
- de precisão para os 120 quadros mais recentes, divididas em algumas categorias
- com valores separados por guias. Estes dados podem ser úteis para indicar quais partes do pipeline
- de desenho podem estar lentas em um nível alto.
-</p>
-
-<p>
-  Semelhante às <a href="#fs-data-format">estatísticas de quadro</a> acima,
- basta colá-los na ferramenta de planilha de sua escolha ou coletá-los e analisá-los
- com um script. O gráfico a seguir exibe um detalhamento de onde os vários quadros produzidos
- pelo aplicativo gastaram o tempo.
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-frame-latency.png">
-
-<p>
-  O resultado de executar gfxinfo, copiar a saída, colá-lo no aplicativo de planilha
- e gerar um gráfico dos dados como barras empilhadas.
-</p>
-
-<p>
-  Cada barra vertical representa um quadro da animação; sua altura representa a quantidade
- de milissegundos para calcular este quadro de animação. Cada segmento colorido da barra
- representa um estágio diferente do pipeline de renderização para que você possa ver que partes do aplicativo
- podem estar criando um afunilamento. Para obter mais informações sobre o entendimento do pipeline
- de renderização e como otimizá-lo, assista ao vídeo <a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;index=27&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">
-Invalidações, layouts e desempenho</a>.
-</p>
-
-
-<h3 id="collection-window">Controlar janela de coleta de estatísticas</h3>
-
-<p>
-  As precisões de quadro simples e estatísticas de quadro coletam dados
- em um período muito curto — cerca de dois segundos de renderização. Para controlar este período de forma precisa — por exemplo,
- restringir os dados para uma animação em particular —, é possível redefinir
- todos os contadores e agregar as estatísticas coletadas.
-</p>
-
-<pre>
-&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; reset
-</pre>
-
-<p>
-  Isto também pode ser usado em conjunto com os próprios comandos de despejo para coletar
- e redefinir em uma cadência regular, capturando períodos de menos de dois segundos de quadros
- continuamente.
-</p>
-
-
-<h3 id="diagnose">Diagnosticar regressões de desempenho</h3>
-
-<p>
-  A identificação de regressões é uma boa primeira etapa para rastrear os problemas
- e manter o bem-estar do aplicativo. No entanto, o dumpsys identifica apenas a existência
- e a gravidade relativa dos problemas. Ainda é necessário diagnosticar a causa particular dos problemas
- de desempenho e encontrar maneiras adequadas de resolvê-los. Para isso, é altamente recomendado
- o uso da ferramenta <a href="{@docRoot}tools/help/systrace.html">systrace</a>.
-</p>
-
-
-<h3 id="resources">Recursos adicionais</h3>
-
-<p>
-  Para obter mais informações sobre como o pipeline de renderização do Android funciona,
- problemas comuns que podem ser encontrados e como resolvê-los,
- alguns dos seguintes recursos podem ser úteis:
-</p>
-
-<ul>
-  <li>Desempenho de renderização 101
-  </li>
-  <li>Por que 60 qps?
-  </li>
-  <li>GPU e IU do Android
-  </li>
-  <li>Invalidações, layouts e desempenho
-  </li>
-  <li>Análise do desempenho de IU com Systrace
-  </li>
-</ul>
-
-
-<h2 id="automate">Automatizar teste de desempenho da IU</h2>
-
-<p>
-  Uma abordagem para o teste de desempenho da IU é fazer com que um testador humano
- realize uma série de operações de usuário no aplicativo-alvo e procure visualmente problemas
- ou gaste uma grande quantidade de tempo usando uma abordagem de ferramenta para encontrá-los. No entanto, esta abordagem manual
- é repleta de riscos: a habilidade humana de notar alterações na taxa de quadros varia tremendamente,
- além de consumir tempo, ser tedioso e propenso a erros.
-</p>
-
-<p>
-  Uma abordagem mais eficiente é registrar e analisar as métricas de desempenho essenciais
- dos testes de IU automatizados. O Android M Developer Preview inclui novas capacidades de registro que facilitam
- a determinação da quantidade e da gravidade de erros nas animações do aplicativo
- e que podem ser usadas para compilar um processo rigoroso para determinar o desempenho atual
- e rastrear os futuros objetivos de desempenho.
-</p>
-
-<p>
-  Este artigo mostra uma abordagem recomendada para usar estes dados para automatizar
- o teste de desempenho.
-</p>
-
-<p>
-  Ele é geralmente dividido em duas ações principais. Primeiro: identificar o que está testando
- e como será testado. Segundo: configuração e manutenção
- de um ambiente de teste automatizado.
-</p>
-
-
-<h3 id="ui-tests">Configurar de testes da IU</h3>
-
-<p>
-  Antes de iniciar o teste automatizado, é importante determinar algumas decisões de alto nível
- para entender corretamente o espaço de teste e as possíveis necessidades.
-</p>
-
-<h4>
-  Identificar principais animações/fluxos a testar
-</h4>
-
-<p>
-  Lembre-se que um desempenho ruim é mais visível aos usuários quando
- interrompe uma animação suave. Portanto, ao identificar que tipos de ações de IU serão testadas, é útil se concentrar
- nas animações principais que os usuários veem
- ou nas mais importantes para a experiência. Por exemplo, eis alguns cenários comuns que pode ser útil identificar:
-</p>
-
-<ul>
-  <li>Rolagem de um ListView ou RecyclerView principal
-  </li>
-
-  <li>Animações durante ciclos de espera assíncrona
-  </li>
-
-  <li>Qualquer animação que possa ter manipulação ou carregamento de bitmap
-  </li>
-
-  <li>Animações com mistura alpha
-  </li>
-
-  <li>Desenho de vista personalizada com Canvas
-  </li>
-</ul>
-
-<p>
-  Trabalhe com engenheiros, designers, e gerentes de produto em sua equipe para priorizar
- as animações de produto essenciais para a cobertura de teste.
-</p>
-
-<h4>
-  Defina os futuros objetivos e faça um rastreamento
-</h4>
-
-<p>
-  De um alto nível, talvez seja essencial identificar os objetivos específicos de desempenho
- e concentrar-se em escrever testes e coletar dados. Por exemplo:
-</p>
-
-<ul>
-  <li>Quer apenas iniciar o rastreamento de desempenho de IU pela primeira vez para aprender mais?
-  </li>
-
-  <li>Quer evitar regressões que possam ser introduzidas no futuro?
-  </li>
-
-  <li>Está com 90% de quadros suaves hoje e deseja chegar a 98% neste trimestre?
-  </li>
-
-  <li>Está com 98% de quadros suaves e não quer regredir?
-  </li>
-
-  <li>O seu objetivo é aprimorar o desempenho em dispositivos de baixo nível?
-  </li>
-</ul>
-
-<p>
-  Em todos esses casos, você optará pelo rastreamento histórico, que exibe o desempenho
- entre várias versões do aplicativo.
-</p>
-
-<h4>
-  Identificar dispositivos para realizar testes
-</h4>
-
-<p>
-  O desempenho do aplicativo varia dependendo do dispositivo em que está sendo executado. Alguns dispositivos podem
- conter menos memória, GPUs menos eficientes ou chips de CPU mais lentos. Isto significa que as animações que podem
- ter um bom desempenho em um conjunto de hardwares podem não ter o mesmo desempenho em outras,
- podendo ser o resultado de um afunilamento em uma parte diferente do pipeline. Portanto, para contabilizar
- esta variação em o que o usuário pode ver, escolha uma variação de dispositivos
- para executar os testes: dispositivos e tablets de alto e baixo nível etc. Procure variações no desempenho de CPU,
- RAM, densidade da tela, tamanho etc. Testes que passam em dispositivos de alto nível
- podem falhar em dispositivos de baixo nível.
-</p>
-
-<h4>
-  Estruturas básicas para teste de IU
-</h4>
-
-<p>
-  Conjuntos de ferramenta, como <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a> e
- <a href="{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a>,
- são integrados para ajudar na automatização da ação de um usuário movendo-se pelo aplicativo. São estruturas simples
- que imitam a interação de usuário no dispositivo. Para usar estas estruturas,
- você cria efetivamente scripts únicos que executam um conjunto
- de ações de usuário e reproduzem-nas no próprio dispositivo.
-</p>
-
-<p>
-  Ao combinar estes testes automatizados, juntamente com <code>dumpsys gfxinfo</code>, é possível criar
- rapidamente um sistema reproduzível que permite a execução de um teste e a medição das informações
- de desempenho desta condição em particular.
-</p>
-
-
-<h3 id="automated-tests">Configurar testes automatizados da IU</h3>
-
-<p>
-  Com a habilidade de executar um teste de IU e um pipeline para coletar
- os dados de um único teste, a próxima etapa importante é adotar uma estrutura que pode executar
- esse teste várias vezes, em vários dispositivos, e agregar os dados de desempenho resultados
- para futuras análises da equipe de desenvolvimento.
-</p>
-
-<h4>
-  Uma estrutura para automatização de testes
-</h4>
-
-<p>
-  Vale observar que as estruturas de teste de IU (como o <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>)
- são executadas diretamente no emulador/dispositivo alvo. Enquanto as informações de coleta de desempenho feita
- pelo <em>dumpsys gfxinfo</em> forem direcionadas por uma máquina hospedeira, envie comandos pelo ADB. Para ajudar a transmitir
- a automatização dessas entidades separadas, a estrutura <a href="{@docRoot}tools/help/monkeyrunner_concepts.html">MonkeyRunner</a>
- foi desenvolvida: um sistema de script que é executado na máquina host que pode
- emitir comandos para um conjunto de dispositivos conectados, bem como receber dados deles.
-</p>
-
-<p>
-  A compilação de um conjunto de scripts para uma automatização adequada de teste de desempenho de IU,
- no mínimo, deve ser capaz de utilizar o MonkeyRunner para realizar as seguintes tarefas:
-</p>
-
-<ul>
-  <li>Carregar e iniciar um APK desejado para um emulador ou dispositivo alvo.
-  </li>
-
-  <li>Iniciar um teste de IU do UI Automator e permitir que ele seja executado.
-  </li>
-
-  <li>Coletar informações de desempenho por meio de <em>dumpsys gfxinfo</em><em>.</em>
-  </li>
-
-  <li>Agregar informações e exibi-las de forma útil para o desenvolvedor.
-  </li>
-</ul>
-
-
-<h3 id="triage">Triagem e resolução de problemas observados</h3>
-
-<p>
-  Quando os padrões ou regressões dos problemas forem identificados, a próxima etapa
- é identificar e aplicar a resolução. Se a estrutura de teste automatizado preservar o detalhamento preciso para os quadros,
- ela poderá ajudar na inspeção de alterações de layout/código suspeitos recentes (em caso
- de regressão) ou reduzir a parte do sistema que você está analisando ao alternar
- para a investigação manual. Para a investigação manual, <a href="{@docRoot}tools/help/systrace.html">systrace</a> é um ótimo lugar para começar,
- exibindo as informações de precisão sobre cada estágio do pipeline de renderização,
- cada encadeamento e núcleo no sistema, bem como quaisquer marcadores de evento personalizados definidos.
-</p>
-
-<h4>
-  Geração de perfis adequada de precisões temporais
-</h4>
-
-<p>
-  É importante observar as dificuldades em obter e medir as precisões
- do desempenho de renderização. Esses números são, por natureza, não determinísticos e frequentemente
- oscilam dependendo do estado do sistema, da quantidade de memória disponível,
- da diminuição termal e da última vez em que a luz do sol atingiu a sua área da Terra. Ou seja, é possível executar
- o mesmo teste duas vezes e receber números levemente diferentes
- que podem ser muito próximos, mas não idênticos.
-</p>
-
-<p>
-  A coleta e a geração de perfil de dados nesta maneira significa executar o mesmo teste,
- várias vezes, e acumular os resultados como uma média ou valor mediano (para a simplicidade,
- chamemos de "lote"). Isto fornece uma aproximação do desempenho do teste,
- já que precisões exatas não são necessárias.
-</p>
-
-<p>
-  Os lotes podem ser usados entre alterações de códigos para verificar o impacto relativo
- dessas alterações no desempenho. Se a taxa de quadros média para o lote antes da alteração
- for maior do que o lote após a alteração, então o resultado de desempenho wrt geral será um sucesso
- para esta alteração em particular.
-</p>
-
-<p>
-  Isto significa que qualquer teste de IU automatizado feito deve levar este conceito
- em consideração, bem como quaisquer anomalias que possam ocorrer durante um teste. Por exemplo,
- se o desempenho do aplicativo repentinamente cair devido a algum problema do dispositivo
- (que não tenha sido causado pelo aplicativo), então talvez seja necessário executar
- o lote novamente para obter precisões menos caóticas.
-</p>
-
-<p>
-  Logo, quantas vezes deve-se realizar um teste antes de as medidas terem algum sentido? 10 vezes deve ser o mínimo,
- com números altos como 50 ou 10 oferecendo resultados mais precisos
- (é claro que se deve levar em consideração o tempo para ter mais precisão).
-</p>
diff --git a/docs/html-intl/intl/pt-br/sdk/index.jd b/docs/html-intl/intl/pt-br/sdk/index.jd
new file mode 100644
index 0000000..c8f8292
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/sdk/index.jd
@@ -0,0 +1,430 @@
+page.title=Como baixar o Android Studio e o SDK Tools
+page.tags=sdk, android studio
+page.template=sdk
+page.image=images/cards/android-studio_2x.png
+header.hide=1
+page.metaDescription=Baixar o Android IDE e ferramentas do desenvolvedor para compilar aplicativos para celulares, tablets, dispositivos de uso junto ao corpo, TVs e muito mais do Android.
+
+@jd:body
+
+<style type="text/css">
+  .offline {display:none;}
+  h2.feature {
+    padding-top:30px;
+    margin-top:0;
+    clear:both;
+  }
+  .feature-blurb {
+  margin:0px; font-size:16px; font-weight:300;
+  padding-top:40px;
+  }
+
+  .landing-button .small {
+    font-size: 12px;
+    font-weight: normal;
+    line-height: 12px;
+    display: block;
+  }
+
+  h1.studio-logo {
+    width:226px;
+    height:78px;
+    display:block;
+    padding:0;
+    white-space: nowrap;
+    text-indent: -10000px;
+    font-size:0px;
+    background: url({@docRoot}images/tools/studio-logo.png);
+    background-image: -webkit-image-set(url({@docRoot}images/tools/studio-logo.png) 1x, url({@docRoot}images/tools/studio-logo_2x.png) 2x);
+    background-size: 226px 78px;
+  }
+
+</style>
+
+
+
+
+
+<div style="position:relative;">
+
+
+<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
+<div class="col-13" style="margin:0;">&nbsp;</div><!-- provides top margin for content -->
+
+<h1 id="tos-header" style="margin-top:0">Baixar</h1>
+
+<p class="sdk-terms-intro">Antes de instalar o Android Studio ou a versão independente das ferramentas SDK,
+você deve concordar com os termos e condições a seguir:</p>
+
+<div class="sdk-terms" onfocus="this.blur()">
+<h2 class="norule">Termos e condições</h2>
+Esse é o Contrato de licença do conjunto de desenvolvimento de software do Android
+
+<h3>1. Introduction</h3>
+1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
+
+1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
+
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+
+
+<h3>2. Accepting this License Agreement</h3>
+2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
+
+2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
+
+2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
+
+2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
+
+
+<h3>3. SDK License from Google</h3>
+3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
+
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
+
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+
+3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+
+3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
+
+3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
+
+3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+
+3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
+
+
+<h3>4. Use of the SDK by You</h3>
+4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
+
+4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
+
+4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
+
+4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
+
+4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
+
+4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
+
+
+<h3>5. Your Developer Credentials</h3>
+5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
+
+
+<h3>6. Privacy and Information</h3>
+6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
+
+6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
+
+
+<h3>7. Third Party Applications</h3>
+7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
+
+7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
+
+7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
+
+
+<h3>8. Using Android APIs</h3>
+8.1 Google Data APIs
+
+8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
+
+8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
+
+
+<h3>9. Terminating this License Agreement</h3>
+9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
+
+9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
+
+9.3 Google may at any time, terminate the License Agreement with you if:
+(A) you have breached any provision of the License Agreement; or
+(B) Google is required to do so by law; or
+(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
+(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
+
+9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
+
+
+<h3>10. DISCLAIMER OF WARRANTIES</h3>
+10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+
+10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
+
+10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+
+
+<h3>11. LIMITATION OF LIABILITY</h3>
+11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
+
+<h3>12. Indemnification</h3>
+12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
+
+
+<h3>13. Changes to the License Agreement</h3>
+13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
+
+
+<h3>14. General Legal Terms</h3>
+14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
+
+14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
+
+14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
+
+14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
+
+14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
+
+14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
+
+14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+
+<em>November 20, 2015</em>
+</div>
+
+
+
+
+
+<div id="next-steps" style="display:none;position:absolute;width:inherit">
+  <p>Você está a alguns passos de programar aplicativos para Android!</p>
+  <p>Em alguns instantes você será redirecionado para
+<a id="next-link" href="{@docRoot}sdk/installing/index.html">Instalação do Android SDK</a>.</p>
+
+</div><!-- end next-steps -->
+
+
+
+<div id="sdk-terms-form">
+<p>
+<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+<label id="agreeLabel" for="agree">Li e concordo com todos os termos e condições expressos acima</label>
+</p>
+<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+</div>
+
+
+</div><!-- end TOS -->
+
+
+
+
+
+
+<div id="landing">
+
+<div class="col-13">&nbsp;</div><!-- provides top margin for content -->
+
+<img src="{@docRoot}images/tools/studio-hero.png" srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x" width="760" height="400"/>
+
+<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
+
+<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>
+
+<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
+width: 400px;text-align: center;">O IDE oficial do Android</p>
+
+<ul style="font-size:12px;line-height:19px;">
+<li>IDE do Android Studio</li>
+<li>Ferramentas do Android SDK</li>
+<li>Plataforma do Android 6.0 (Marshmallow)</li>
+<li>Imagem do sistema do emulador do Android 6.0 com APIs da Google</li>
+</ul>
+
+
+<a class="online landing-button green download-bundle-button"
+href="#Other" >Download Android Studio<br/><span class='small'></span></a>
+
+<!-- this appears when viewing the offline docs -->
+<p class="offline">
+Para obter o Android Studio ou a versão independente das ferramentas SDK, acesse <a href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
+</p>
+</div>
+
+<ul>
+  <li><a href="#Requirements">Requisitos do sistema</a></li>
+  <li> <a href="#Other">Outras opções de download</a></li>
+  <li><a href="{@docRoot}sdk/installing/migrate.html">Migração para o Android Studio</a></li>
+  <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform" target="_blank">Realização de uma pesquisa</a></li>
+</ul>
+
+
+
+
+<h2 class="feature norule" >Editor de código inteligente</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-code.png" srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>No núcleo do Android Studio, há um editor de código inteligente capaz de realizar,
+refatorar e analisar códigos avançados.</p>
+  <p>O poderoso editor de código auxilia na maior produtividade do desenvolvedor de aplicativos Android.</p>
+</div>
+
+
+
+
+
+<h2 class="feature norule">Modelos de códigos e integração GitHub</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-import.png" srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Os novos assistentes de projeto facilitam iniciar um projeto como nunca antes.</p>
+
+  <p>Inicie projetos usando códigos de modelo para padrões como menus de navegação e ViewPagers,
+e até importe exemplos de código da Google a partir do GitHub.</p>
+</div>
+
+
+
+
+<h2 class="feature norule">Desenvolvimento de aplicativos multitelas</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-screens.png" srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Programe aplicativos para celulares Android, tablets, Android Wear,
+Android TV, Android Auto e Google Glass.</p>
+  <p>Com a nova visualização de projeto Android e a compatibilidade com módulos no Android Studio,
+é mais fácil gerenciar projetos e recursos de aplicativos.
+</div>
+
+
+
+
+<h2 class="feature norule">Dispositivos virtuais para todas as formas e tamanhos</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-avds.png" srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>O Android Studio já é pré-configurado com uma imagem do emulador otimizada.</p>
+  <p>O Gerenciador de dispositivos virtual atualizado e simplificado fornece
+perfis de dispositivos pré-definidos para dispositivos Android comuns.</p>
+</div>
+
+
+
+
+<h2 class="feature norule">
+As versões do Android evoluíram com o Gradle</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-gradle.png" srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Crie diversos APKs para seu aplicativo Android com diferentes recursos usando o mesmo projeto.</p>
+  <p>Gerencie dependências de aplicativo com o Maven.</p>
+  <p>Crie APKs com o Android Studio ou com a linha de comando.</p>
+</div>
+
+
+
+
+<h2 class="feature norule">Saiba mais sobre o Android Studio</h2>
+<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
+
+<a class="online landing-button green download-bundle-button" style="margin:0 0 40px 60px;float:right" href="">Download</a>
+
+  <ul>
+  <li>Programado no IntelliJ IDEA Edição de Comunidade, o popular IDE da Java da JetBrains.</li>
+  <li>Sistema flexível de programação baseado em Gradle.</li>
+  <li>Crie variantes e várias gerações de APK.</li>
+  <li>Compatibilidade com modelos do Google Services ampliada e com diversos tipos de dispositivos.</li>
+  <li>Editor de layout completo compatível com edição de tema.</li>
+  <li>Ferramentas de identificação de construção suspeita para identificar problemas de desempenho, usabilidade, compatibilidade de versão e outros problemas.</li>
+  <li>ProGuard e recursos de assinatura de aplicativo.</li>
+  <li>Compatibilidade embutida na Google Cloud Platform, facilitando a integração com o Google Cloud
+Messasing e com o App Engine.</li>
+  </ul>
+
+<p style="margin:0">
+Para obter mais detalhes sobre recursos disponíveis no Android Studio,
+leia o guia <a href="{@docRoot}tools/studio/index.html">Conceitos básicos do Android Studio</a>.</p>
+</div>
+
+
+<p>Se você usou o Eclipse com ADT, esteja ciente de que o Android Studio é agora o IDE oficial
+para Android, portanto, é preciso migrar para o Android Studio para receber todas
+as últimas atualizações do IDE. Para obter ajuda para mover projetos,
+consulte <a href="{@docRoot}sdk/installing/migrate.html">Como migrar para o Android
+Studio</a>.</p>
+
+
+
+
+
+
+
+<h2 id="Requirements">Requisitos do sistema</h2>
+
+<h3>Windows</h3>
+
+<ul>
+<li>Microsoft&reg; Windows&reg; 8/7/Vista/2003 (32 ou 64 bits)</li>
+<li>Mínimo de 2 GB de RAM, 4 GB de RAM recomendado</li>
+<li>Espaço de 400 MB no disco rígido</li>
+<li>Pelo menos 1 GB para o Android SDK, imagens do sistema de emulador e caches</li>
+<li>Resolução de tela de 1.280 x 800 no mínimo</li>
+<li>Kit de desenvolvimento Java (JDK) 7 </li>
+<li>Opcional para emulador acelerado: Processador Intel® compatível com Intel® VT-x, Intel® EM64T
+(Intel® 64) e Desativador de bit executável (XD)</li>
+</ul>
+
+
+<h3>Mac OS X</h3>
+
+<ul>
+<li>Mac&reg; OS X&reg; 10.8.5 ou posterior, até o 10.9 (Mavericks)</li>
+<li>Mínimo de 2 GB de RAM, 4 GB de RAM recomendado</li>
+<li>Espaço de 400 MB no disco rígido</li>
+<li>Pelo menos 1 GB para o Android SDK, imagens do sistema de emulador e caches</li>
+<li>Resolução de tela de 1.280 x 800 no mínimo</li>
+<li>Ambiente de tempo de execução Java (JRE) 6</li>
+<li>Kit de desenvolvimento Java (JDK) 7</li>
+<li>Opcional para emulador acelerado: Processador Intel® compatível com Intel® VT-x, Intel® EM64T
+(Intel® 64) e Desativador de bit executável (XD)</li>
+</ul>
+
+<p>No Mac OS, execute o Android Studio com o Ambiente de tempo de execução Java (JRE) 6 para otimizar
+a renderização de fontes. Você pode, então, configurar o projeto para usar o Kit de desenvolvimento Java (JDK) 6 ou o JDK 7.</p>
+
+
+
+<h3>Linux</h3>
+
+<ul>
+<li>Área de trabalho GNOME ou KDE</li>
+<li>Biblioteca GNU C (glibc) 2.15 ou posterior</li>
+<li>Mínimo de 2 GB de RAM, 4 GB de RAM recomendado</li>
+<li>Espaço de 400 MB no disco rígido</li>
+<li>Pelo menos 1 GB para o Android SDK, imagens do sistema de emulador e caches</li>
+<li>Resolução de tela de 1.280 x 800 no mínimo</li>
+<li>Kit de desenvolvimento Oracle&reg; Java (JDK) 7 </li>
+</ul>
+<p>Testado no Trusty Tahr do Ubuntu&reg; 14.04 (distribuição de 64 bits capaz de executar
+aplicativos de 32 bits).</p>
+
+
+
+
+<h2 id="Other" style="clear:left">Outras opções de download</h2>
+
+<!-- alternative SDK options follows -->
diff --git a/docs/html-intl/intl/pt-br/sdk/installing/adding-packages.jd b/docs/html-intl/intl/pt-br/sdk/installing/adding-packages.jd
new file mode 100644
index 0000000..bda33b6
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/sdk/installing/adding-packages.jd
@@ -0,0 +1,226 @@
+page.title=Como adicionar pacotes SDK
+
+page.tags=sdk manager
+
+@jd:body
+
+<style>
+ol.large {
+  margin-left:0;
+}
+ol.large > li {
+  list-style-position: inside;
+  list-style-type:none;
+  margin:30px 0 0 0;
+  padding:30px 20px;
+  background:#eee;
+}
+ol.large > li:nth-child(odd) {
+}
+ol.large > li:before {
+  display:inline;
+  left:-40px;
+  float:left;
+  width:20px;
+  font-size:20px;
+  line-height:20px;
+}
+ol.large > li > h2 {
+  font-size:20px;
+  line-height:20px;
+  padding:0 0 0 20px;
+  margin:0 0 20px 0;
+  display:inline;
+  font-weight:normal;
+}
+ol.large > li:nth-child(1):before {
+  content:"1. ";
+}
+ol.large > li:nth-child(2):before {
+  content:"2. ";
+}
+ol.large > li:nth-child(3):before {
+  content:"3. ";
+}
+ol.large > li:nth-child(4):before {
+  content:"4. ";
+}
+ol.large > li:nth-child(5):before {
+  content:"5. ";
+}
+ol.large > li:nth-child(6):before {
+  content:"6. ";
+}
+</style>
+
+
+<p>
+Por padrão, o Android SDK não inclui tudo que é necessário para começar a desenvolver.
+O SDK separa ferramentas, plataformas e outros componentes em pacotes que podem ser
+baixados conforme necessário usando o 
+<a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>.
+Portanto, antes de iniciar, há alguns pacotes que você deve adicionar ao Android SDK.</p>
+
+<p>Para começar a adicionar pacotes, execute o Android SDK Manager de uma das formas a seguir:</p>
+<ul>
+  <li>No Android Studio, clique em <strong>SDK Manager</strong>
+<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:17px" /> na barra de ferramentas.</li>
+  <li>Se não estiver usando o Android Studio:
+    <ul>
+      <li>Windows: Clique duas vezes no arquivo <code>SDK Manager.exe</code> na raiz do diretório do Android
+  SDK.</li>
+      <li>Mac/Linux: Abra um terminal e navegue para o diretório <code>tools/</code> no 
+      local em que o Android SDK foi instalado. Em seguida, execute <code>android sdk</code>.</li>
+    </ul>
+  </li>
+</ul>
+
+<p>Ao abrir o SDK Manager pela primeira vez, vários pacotes são selecionados
+por padrão. Deixe-os selecionados, mas certifique-se de ter tudo o que é necessário
+para começar seguindo os seguintes passos:</p>
+
+
+<ol class="large">
+<li>
+  <h2 id="GetTools" class="norule">Obtenha as ferramentas mais recentes do SDK</h2>
+
+<img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
+
+  <p>No mínimo, ao configurar o Android SDK,
+  é preciso baixar as ferramentas mais recentes e a plataforma Android:</p>
+  <ol>
+   <li>Abra o diretório Tools e selecione:
+     <ul>
+       <li><strong>Ferramentas do Android SDK</strong></li>
+       <li><strong>Ferramentas-plataforma Android SDK</strong></li>
+       <li><strong>Ferramentas-Android SDK Build</strong> (versão mais recente)</li>
+     </ul>
+   </li>
+   <li>Abra a pasta do primeiro Android X.X (a versão mais recente) e selecione:
+     <ul>
+      <li><strong>Plataforma SDK</strong></li>
+      <li>Uma imagem do sistema para o emulador, como <br>
+      <strong>Imagem do sistema ARM EABI v7a</strong></li>
+     </ul>
+   </li>
+  </ol>
+</li>
+
+<li>
+  <h2 id="GetSupportLib" class="norule">Obtenha a biblioteca de suporte para APIs adicionais</h2>
+
+  <div class="sidebox">
+    <p>A biblioteca de suporte é necessária para:</p>
+    <ul>
+      <li><a href="{@docRoot}wear/index.html">Android Wear</a></li>
+      <li><a href="{@docRoot}tv/index.html">Android TV</a></li>
+      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
+    </ul>
+
+    <p>Ela também fornece estas APIs populares:</p>
+    <ul>
+      <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">Gaveta de
+      navegação</a></li>
+      <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">Vistas de deslizar</a></li>
+      <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">Barra de ação com compatibilidade
+      retroativa</a></li>
+    </ul>
+  </div>
+
+  <p>A <a href="{@docRoot}tools/support-library/features.html">Biblioteca de Suporte do Android</a>
+  fornece um conjunto estendido de APIs compatíveis com a maioria das versões do Android.</p>
+
+  <p>Abra o diretório <strong>Extras</strong> e selecione:</p>
+     <ul>
+       <li><strong>Repositório de Suporte do Android</strong></li>
+       <li><strong>Biblioteca de Suporte do Android</strong></li>
+     </ul>
+
+  <p>&nbsp;</p>
+  <p>&nbsp;</p>
+
+</li>
+
+
+<li>
+  <h2 id="GetGoogle" class="norule">Obtenha os serviços do Google Play para obter ainda mais APIs</h2>
+
+  <div class="sidebox">
+
+    <p>As APIs dos serviços do Google Play fornecem uma variedade de recursos e serviços para aplicativos 
+    Android, como:</p>
+    <ul>
+      <li><a href="{@docRoot}google/play-services/plus.html">Autenticação do usuário</a></li>
+      <li><a href="{@docRoot}google/play-services/maps.html">Google Maps</a></li>
+      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
+      <li><a href="{@docRoot}google/play-services/games.html">Conquistas e placares de líderes
+      para jogos</a></li>
+      <li><a href="{@docRoot}google/play-services/index.html">E muito mais</a></li>
+    </ul>
+  </div>
+
+  <p>Para desenvolver com as APIs do Google, você precisa do pacote de serviços do Google Play:</p>
+  <p>Abra o diretório <strong>Extras</strong> e selecione:</p>
+     <ul>
+       <li><strong>Repositório do Google</strong></li>
+       <li><strong>Serviços Google Play</strong></li>
+     </ul>
+
+  <p class="note"><strong>Observação:</strong> as APIs dos serviços do Google Play não estão disponíveis em todos os dispositivos
+  com Android, mas estão disponíveis em todos os dispositivos com Google Play Store. Para usar essas 
+  APIs no emulador do Android, também é preciso instalar a imagem do sistema das <strong>APIs do Google</strong>
+  do diretório Android X.X mais recente no SDK Manager.</p>
+</li>
+
+
+<li>
+  <h2 id="Install" class="norule">Instale os pacotes</h2>
+  <p>Depois de selecionar todos os pacotes desejados, prossiga para a instalação:</p>
+  <ol>
+   <li>Clique em <strong>Install X packages</strong> (Instalar X pacotes).</li>
+   <li>Na janela seguinte, clique duas vezes no nome de cada pacote à esquerda
+ para aceitar o contrato de licença de cada um.</li>
+   <li>Clique em <strong>Install</strong> (Instalar).</li>
+  </ol>
+  <p>O andamento do download é exibido na parte inferior da tela do SDK Manager.
+  <strong>Não saia do SDK Manager</strong>, pois isso cancelará o download.</p>
+</li>
+
+<li>
+  <h2 id="Build" class="norule">Crie alguma coisa!</h2>
+
+<p>Com os pacotes acima agora no seu Android SDK, você está pronto para criar aplicativos
+para o Android. À medida que novas ferramentas e outras APIs forem disponibilizadas, basta executar o SDK Manager
+  para baixar os novos pacotes para o SDK.</p>
+
+<p>A seguir há algumas opções sobre como prosseguir:</p>
+
+<div class="cols" style="padding:10px 0">
+<div class="col-4">
+<h3>Introdução</h3>
+<p>Se você é novo no desenvolvimento para Android, aprenda os fundamentos de aplicativos para Android seguindo
+o guia para <strong><a href="{@docRoot}training/basics/firstapp/index.html">Criação do primeiro aplicativo</a></strong>.</p>
+
+</div>
+<div class="col-4 box">
+<h3>Desenvolva para vestíveis</h3>
+<p>Se você está pronto para começar a desenvolver aplicativos para vestíveis Android, consulte o guia para 
+<strong><a href="{@docRoot}wear/preview/start.html">Criação de aplicativos para Android Wear</a></strong>.</p>
+
+</div>
+<div class="col-4 box">
+<h3>Use as APIs do Google</h3>
+<p>Para começar a usar as APIs do Google, como os serviços Maps ou 
+Play Game, consulte o guia para 
+<strong><a href="{@docRoot}google/play-services/setup.html">Configuração dos serviços do 
+Google Play</a></strong>.</p>
+
+</div>
+</div><!-- end cols -->
+
+
+</li>
+
+</ol>
+
+
diff --git a/docs/html-intl/intl/pt-br/training/material/animations.jd b/docs/html-intl/intl/pt-br/training/material/animations.jd
new file mode 100644
index 0000000..6597db6
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/training/material/animations.jd
@@ -0,0 +1,550 @@
+page.title=Como definir animações personalizadas
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Esta lição ensina a</h2>
+<ol>
+  <li><a href="#Touch">Personalizar feedback de toque</a></li>
+  <li><a href="#Reveal">Usar o efeito de revelação</a></li>
+  <li><a href="#Transitions">Personalizar transições de atividades</a></li>
+  <li><a href="#ViewState">Animar mudança de estado da visualização</a></li>
+  <li><a href="#AnimVector">Animar desenháveis de vetor</a></li>
+</ol>
+<h2>Você também deve ler</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Especificações do Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design no Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>As animações no Material Design dão feedback aos usuários sobre as ações deles e fornecem
+continuidade visual à medida que interagem com o seu aplicativo. O tema do Material fornece algumas animações padrão para
+botões e transições de atividades e o Android 5.0 (API de nível 21) e posteriores permitem a personalização
+dessas animações e a criação de novas:</p>
+
+<ul>
+<li>Feedback de toque</li>
+<li>Revelação circular</li>
+<li>Transições de atividades</li>
+<li>Movimento curvado</li>
+<li>Mudanças de estado da visualização</li>
+</ul>
+
+
+<h2 id="Touch">Personalizar feedback de toque</h2>
+
+<p>Os feedbacks de toque no Material Design fornecem confirmação visual instantânea no
+ponto de contato quando os usuários interagem com elementos da interface do usuário. As animações de feedback de toque padrão
+para botões usam a nova classe {@link android.graphics.drawable.RippleDrawable}, que passa por transições
+entre diferentes estados com um efeito de ondulação.</p>
+
+<p>Na maioria dos casos, você deve aplicar essa funcionalidade no XML de visualização especificando o segundo plano da
+visualização como:</p>
+
+<ul>
+<li><code>?android:attr/selectableItemBackground</code> para uma ondulação delimitada.</li>
+<li><code>?android:attr/selectableItemBackgroundBorderless</code> para uma ondulação que se estenda além
+da visualização. Ele será desenhado sobre e delimitado pelo pai mais próximo da visualização com um segundo plano
+não nulo.</li>
+</ul>
+
+<p class="note"><strong>Observação:</strong> <code>selectableItemBackgroundBorderless</code> é um novo
+atributo introduzido na API de nível 21.</p>
+
+
+<p>Alternativamente, você pode definir um {@link android.graphics.drawable.RippleDrawable}
+como um recurso XML usando o elemento <code>ripple</code>.</p>
+
+<p>Você pode atribuir uma cor para objetos {@link android.graphics.drawable.RippleDrawable}. Para alterar
+a cor do feedback de toque padrão, use o atributo <code>android:colorControlHighlight</code>
+do tema.</p>
+
+<p>Para obter mais informações, consulte a referência de API para a classe {@link
+android.graphics.drawable.RippleDrawable}.</p>
+
+
+<h2 id="Reveal">Usar o efeito de revelação</h2>
+
+<p>Revelar animações fornece continuidade visual aos usuários ao exibir ou esconder um grupo
+de elementos da interface do usuário. O método {@link android.view.ViewAnimationUtils#createCircularReveal
+ViewAnimationUtils.createCircularReveal()} permite animar um círculo de recorte para
+revelar ou ocultar uma visualização.</p>
+
+<p>Para revelar uma visualização anteriormente invisível usando esse efeito:</p>
+
+<pre>
+// previously invisible view
+View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the final radius for the clipping circle
+int finalRadius = Math.max(myView.getWidth(), myView.getHeight());
+
+// create the animator for this view (the start radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);
+
+// make the view visible and start the animation
+myView.setVisibility(View.VISIBLE);
+anim.start();
+</pre>
+
+<p>Para esconder uma visualização anteriormente visível usando esse efeito:</p>
+
+<pre>
+// previously visible view
+final View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the initial radius for the clipping circle
+int initialRadius = myView.getWidth();
+
+// create the animation (the final radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0);
+
+// make the view invisible when the animation is done
+anim.addListener(new AnimatorListenerAdapter() {
+    &#64;Override
+    public void onAnimationEnd(Animator animation) {
+        super.onAnimationEnd(animation);
+        myView.setVisibility(View.INVISIBLE);
+    }
+});
+
+// start the animation
+anim.start();
+</pre>
+
+
+<h2 id="Transitions">Personalizar transições de atividades</h2>
+
+<!-- shared transition video -->
+<div style="width:290px;margin-left:35px;float:right">
+  <div class="framed-nexus5-port-span-5">
+  <video class="play-on-hover" autoplay="">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.mp4">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.webm">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.ogv">
+  </video>
+  </div>
+  <div style="font-size:10pt;margin-left:20px;margin-bottom:30px">
+    <p class="img-caption" style="margin-top:3px;margin-bottom:10px"><strong>Figura 1</strong> - uma
+    transição com elementos compartilhados.</p>
+    <em>Para reproduzir o filme, clique na tela do dispositivo</em>
+  </div>
+</div>
+
+<p>As transições de atividades em aplicativos com Material Design fornecem conexões visuais
+entre estados diferentes por meio de movimentos e transformações entre elementos comuns. Você pode especificar animações personalizadas para
+transições de entrada e de saída e para transições de elementos compartilhados entre atividades.</p>
+
+<ul>
+<li>Uma transição de <strong>entrada</strong> determina como as visualizações em uma atividade entram em cena.
+Por exemplo, na transição de entrada <em>explodir</em>, as visualizações entram em cena por fora
+e voam em direção ao centro da tela.</li>
+
+<li>Uma transição de <strong>saída</strong> determina como as visualizações em uma atividade saem de cena. Por
+  exemplo, na transição de saída <em>explodir</em>, as visualizações saem de cena a partir do
+centro.</li>
+
+<li>Uma transição de <strong>elementos compartilhados</strong> determina como as visualizações compartilhadas
+entre duas atividades fazem transição entre essas atividades. Por exemplo, se duas atividades têm a mesma
+imagem em posições e tamanhos diferentes, a transição de elemento compartilhado <em>changeImageTransform</em> converte
+e dimensiona a imagem suavemente entre essas atividades.</li>
+</ul>
+
+<p>O Android 5.0 (API de nível 21) é compatível com estas transições de entrada e de saída:</p>
+
+<ul>
+<li><em>explodir</em> - move as visualizações para dentro ou para fora partindo do centro da cena.</li>
+<li><em>deslizar</em> - move as visualizações para dentro ou para fora partindo de um dos cantos da cena.</li>
+<li><em>esmaecer</em> - adiciona ou remove uma visualização de uma cena alterando a opacidade.</li>
+</ul>
+
+<p>Qualquer transição que amplie a classe {@link android.transition.Visibility} é suportada
+como uma transição de entrada ou de saída. Para obter mais informações, consulte a referência de API para a classe
+{@link android.transition.Transition}.</p>
+
+<p>O Android 5.0 (API de nível 21) também é compatível com estas transições de elementos compartilhados:</p>
+
+<ul>
+<li><em>changeBounds</em> - anima as mudanças das visualizações desejadas em limites do layout.</li>
+<li><em>changeBounds</em> - anima as mudanças das visualizações desejadas em limites de corte.</li>
+<li><em>changeBounds</em> - anima as mudanças das visualizações desejadas em escala e rotação.</li>
+<li><em>changeImageTransform</em> - anima as mudanças das imagens desejadas em tamanho e escala.</li>
+</ul>
+
+<p>Ao habilitar as transições de atividades no seu aplicativo, a transição de esmaecimento cruzado padrão é
+ativada entre as atividades de entrada e saída.</p>
+
+<img src="{@docRoot}training/material/images/SceneTransition.png" alt="" width="600" height="405" style="margin-top:20px" />
+<p class="img-caption">
+  <strong>Figura 2</strong> - uma transição de cena com um elemento compartilhado.
+</p>
+
+<h3>Especificar transições de atividades</h3>
+
+<p>Primeiro, habilite as transições de conteúdo da janela com o atributo <code>android:windowContentTransitions</code>
+ao definir um estilo herdado do tema do Material. Você também pode especificar
+transições de entrada, saída e elemento compartilhado na definição de estilo:</p>
+
+<pre>
+&lt;style name="BaseAppTheme" parent="android:Theme.Material">
+  &lt;!-- enable window content transitions -->
+  &lt;item name="android:windowContentTransitions">true&lt;/item>
+
+  &lt;!-- specify enter and exit transitions -->
+  &lt;item name="android:windowEnterTransition">@transition/explode&lt;/item>
+  &lt;item name="android:windowExitTransition">@transition/explode&lt;/item>
+
+  &lt;!-- specify shared element transitions -->
+  &lt;item name="android:windowSharedElementEnterTransition">
+    &#64;transition/change_image_transform&lt;/item>
+  &lt;item name="android:windowSharedElementExitTransition">
+    &#64;transition/change_image_transform&lt;/item>
+&lt;/style>
+</pre>
+
+<p>A transição <code>change_image_transform</code> nesse exemplo é definida a seguir:</p>
+
+<pre>
+&lt;!-- res/transition/change_image_transform.xml -->
+&lt;!-- (see also Shared Transitions below) -->
+&lt;transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;changeImageTransform/>
+&lt;/transitionSet>
+</pre>
+
+<p>O elemento <code>changeImageTransform</code> corresponde à classe
+{@link android.transition.ChangeImageTransform}. Para obter mais informações, consulte a referência de
+API para {@link android.transition.Transition}.</p>
+
+<p>Para habilitar transições de conteúdo da janela no código como alternativa, chame o método
+{@link android.view.Window#requestFeature Window.requestFeature()}:</p>
+
+<pre>
+// inside your activity (if you did not enable transitions in your theme)
+getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+
+// set an exit transition
+getWindow().setExitTransition(new Explode());
+</pre>
+
+<p>Para especificar transições no código, chame os métodos a seguir com um objeto {@link
+android.transition.Transition}:</p>
+
+<ul>
+  <li>{@link android.view.Window#setEnterTransition Window.setEnterTransition()}</li>
+  <li>{@link android.view.Window#setExitTransition Window.setExitTransition()}</li>
+  <li>{@link android.view.Window#setSharedElementEnterTransition
+      Window.setSharedElementEnterTransition()}</li>
+  <li>{@link android.view.Window#setSharedElementExitTransition
+      Window.setSharedElementExitTransition()}</li>
+</ul>
+
+<p>Os métodos {@link android.view.Window#setExitTransition setExitTransition()} e {@link
+android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} definem
+a transição de saída para a atividade de chamada. Os métodos {@link android.view.Window#setEnterTransition
+setEnterTransition()} e {@link android.view.Window#setSharedElementEnterTransition
+setSharedElementEnterTransition()} definem a transição de entrada para a atividade chamada.</p>
+
+<p>Para obter o efeito completo de uma transição, você deve habilitar as transições de conteúdo da janela tanto na atividade
+chamada quanto na atividade de chamada. Caso contrário, a atividade de chamada acionará a transição de saída,
+mas você verá uma transição de janela (como dimensionamento ou esmaecimento).</p>
+
+<p>Para iniciar uma transição de entrada o mais cedo possível, use o método
+{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}
+na atividade chamada. Isso faz com que haja transições de entrada mais dramáticas.</p>
+
+<h3>Iniciar uma atividade usando transições</h3>
+
+<p>Se você habilita as transições e define uma transição de saída para uma atividade, a transição
+será ativada ao iniciar outra atividade, como a seguir:</p>
+
+<pre>
+startActivity(intent,
+              ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
+</pre>
+
+<p>Se você configurou uma transição de entrada para a segunda atividade, a transição também
+será ativada quando a atividade for iniciada. Para desabilitar as transições ao iniciar outra atividade, forneça um pacote de
+opções <code>null</code>.</p>
+
+<h3>Iniciar uma atividade com um elemento compartilhado</h3>
+
+<p>Para criar uma animação de transição de tela entre duas atividades que têm um elemento compartilhado:</p>
+
+<ol>
+<li>Habilite transições de conteúdo da janela no tema.</li>
+<li>Especifique uma transição de elementos compartilhados no estilo.</li>
+<li>Defina a transição como um recurso XML.</li>
+<li>Atribua um nome comum aos elementos compartilhados em ambos os layouts com o atributo
+    <code>android:transitionName</code>.</li>
+<li>Use o método {@link android.app.ActivityOptions#makeSceneTransitionAnimation
+ActivityOptions.makeSceneTransitionAnimation()}.</li>
+</ol>
+
+<pre>
+// get the element that receives the click event
+final View imgContainerView = findViewById(R.id.img_container);
+
+// get the common element for the transition in this activity
+final View androidRobotView = findViewById(R.id.image_small);
+
+// define a click listener
+imgContainerView.setOnClickListener(new View.OnClickListener() {
+    &#64;Override
+    public void onClick(View view) {
+        Intent intent = new Intent(this, Activity2.class);
+        // create the transition animation - the images in the layouts
+        // of both activities are defined with android:transitionName="robot"
+        ActivityOptions options = ActivityOptions
+            .makeSceneTransitionAnimation(this, androidRobotView, "robot");
+        // start the new activity
+        startActivity(intent, options.toBundle());
+    }
+});
+</pre>
+
+<p>Para obter visualizações dinâmicas compartilhadas geradas no código, use o método
+{@link android.view.View#setTransitionName View.setTransitionName()} para especificar um nome de
+elemento comum em ambas as atividades.</p>
+
+<p>Para reverter a animação de transição de cena ao finalizar a segunda atividade, chame o método
+{@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()}
+em vez de {@link android.app.Activity#finish Activity.finish()}.</p>
+
+<h3>Iniciar uma atividade com diversos elementos compartilhados</h3>
+
+<p>Para criar uma animação de transição de cena entre duas atividades que têm mais de um elemento
+compartilhado, defina os elementos compartilhados em ambos os layouts com o atributo <code>android:transitionName</code>
+(ou use o método {@link android.view.View#setTransitionName View.setTransitionName()} em ambas
+as atividades) e crie um objeto {@link android.app.ActivityOptions}, como a seguir:</p>
+
+<pre>
+ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
+        Pair.create(view1, "agreedName1"),
+        Pair.create(view2, "agreedName2"));
+</pre>
+
+
+<h2 id="CurvedMotion">Usar movimento curvado</h2>
+
+<p>As animações no Material Design dependem das curvas para obter padrões de interpolação
+de tempo e de movimentos espaciais. Com o Android 5.0 (API de nível 21) e posteriores, você pode definir padrões de curvas de
+temporização personalizada e de movimentos curvados para animações.</p>
+
+<p>A classe {@link android.view.animation.PathInterpolator} é um novo interpolador baseado em uma
+curva Bézier ou em um objeto {@link android.graphics.Path}. Esse interpolador especifica uma curva de movimento em
+um quadrado de 1x1, com pontos de ancoragem em (0,0) e (1,1) e pontos de controle conforme especificado usando
+os argumentos do construtor. Você também pode definir um interpolador de caminho como um recurso XML:</p>
+
+<pre>
+&lt;pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:controlX1="0.4"
+    android:controlY1="0"
+    android:controlX2="1"
+    android:controlY2="1"/>
+</pre>
+
+<p>O sistema fornece recursos XML para três curvas básicas na especificação do
+Material Design:</p>
+
+<ul>
+  <li><code>&#64;interpolator/fast_out_linear_in.xml</code></li>
+  <li><code>&#64;interpolator/fast_out_slow_in.xml</code></li>
+  <li><code>&#64;interpolator/linear_out_slow_in.xml</code></li>
+</ul>
+
+<p>Você pode passar um objeto {@link android.view.animation.PathInterpolator} para o método {@link
+android.animation.Animator#setInterpolator Animator.setInterpolator()}.</p>
+
+<p>A classe {@link android.animation.ObjectAnimator} tem novos construtores que permitem a animação de
+coordenadas ao longo de um caminho usando duas ou mais propriedades simultaneamente. Por exemplo, o animador a seguir usa um
+objeto {@link android.graphics.Path} para animar as propriedades X e Y de uma visualização:</p>
+
+<pre>
+ObjectAnimator mAnimator;
+mAnimator = ObjectAnimator.ofFloat(view, View.X, View.Y, path);
+...
+mAnimator.start();
+</pre>
+
+
+<h2 id="ViewState">Animar mudança de estado da visualização</h2>
+
+<p>A classe {@link android.animation.StateListAnimator} permite a definição de animadores que são executados
+quando o estado de uma visualização muda. O exemplo a seguir mostra como definir um {@link
+android.animation.StateListAnimator} como um recurso XML:</p>
+
+<pre>
+&lt;!-- animate the translationZ property of a view when pressed -->
+&lt;selector xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;item android:state_pressed="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="@android:integer/config_shortAnimTime"
+        android:valueTo="2dp"
+        android:valueType="floatType"/>
+        &lt;!-- you could have other objectAnimator elements
+             here for "x" and "y", or other properties -->
+    &lt;/set>
+  &lt;/item>
+  &lt;item android:state_enabled="true"
+    android:state_pressed="false"
+    android:state_focused="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="100"
+        android:valueTo="0"
+        android:valueType="floatType"/>
+    &lt;/set>
+  &lt;/item>
+&lt;/selector>
+</pre>
+
+<p>Para anexar animações de estado de visualização personalizadas a uma visualização, defina um animador usando o elemento
+<code>selector</code> em um arquivo de recurso XML, como nesse exemplo, e
+atribua-o à visualização com o atributo <code>android:stateListAnimator</code>. Para atribuir um animador de lista de estado
+a uma visualização no código, use o método {@link android.animation.AnimatorInflater#loadStateListAnimator
+AnimationInflater.loadStateListAnimator()} e atribua o animador à visualização com o método
+{@link android.view.View#setStateListAnimator View.setStateListAnimator()}.</p>
+
+<p>Quando o tema amplia o tema do Material, os botões têm uma animação Z por padrão. Para evitar esse
+comportamento nos botões, defina o atributo <code>android:stateListAnimator</code> como
+<code>@null</code>.</p>
+
+<p>A classe {@link android.graphics.drawable.AnimatedStateListDrawable} permite a criação de
+desenháveis que exibem animações entre mudanças de estado da visualização associada. Alguns dos widgets de sistema no
+Android 5.0 usam essas animações por padrão. O exemplo a seguir mostra como
+definir um {@link android.graphics.drawable.AnimatedStateListDrawable} como um recurso XML:</p>
+
+<pre>
+&lt;!-- res/drawable/myanimstatedrawable.xml -->
+&lt;animated-selector
+    xmlns:android="http://schemas.android.com/apk/res/android">
+
+    &lt;!-- provide a different drawable for each state-->
+    &lt;item android:id="@+id/pressed" android:drawable="@drawable/drawableP"
+        android:state_pressed="true"/>
+    &lt;item android:id="@+id/focused" android:drawable="@drawable/drawableF"
+        android:state_focused="true"/>
+    &lt;item android:id="@id/default"
+        android:drawable="@drawable/drawableD"/>
+
+    &lt;!-- specify a transition -->
+    &lt;transition android:fromId="@+id/default" android:toId="@+id/pressed">
+        &lt;animation-list>
+            &lt;item android:duration="15" android:drawable="@drawable/dt1"/>
+            &lt;item android:duration="15" android:drawable="@drawable/dt2"/>
+            ...
+        &lt;/animation-list>
+    &lt;/transition>
+    ...
+&lt;/animated-selector>
+</pre>
+
+
+<h2 id="AnimVector">Animar desenháveis de vetor</h2>
+
+<p><a href="{@docRoot}training/material/drawables.html#VectorDrawables">Desenháveis de vetor</a> são
+dimensionáveis sem perder definição. A classe {@link android.graphics.drawable.AnimatedVectorDrawable}
+permite a animação de propriedades de um desenhável de vetor.</p>
+
+<p>Você normalmente define desenháveis de vetor animados em três arquivos XML:</p>
+
+<ul>
+<li>Um desenhável de vetor com o elemento <code>&lt;vector&gt;</code> em
+<code>res/drawable/</code></li>
+<li>Um desenhável de vetor animado com o elemento <code>&lt;animated-vector&gt;</code> em
+<code>res/drawable/</code></li>
+<li>Um ou mais animadores de objeto com o elemento <code>&lt;objectAnimator&gt;</code> em
+<code>res/anim/</code></li>
+</ul>
+
+<p>Desenháveis de vetor animados podem animar os atributos dos elementos <code>&lt;group&gt;</code> e
+<code>&lt;path&gt;</code>. Os elementos <code>&lt;group&gt;</code> definem um conjunto de
+caminhos ou subgrupos e o elemento <code>&lt;path&gt;</code> define caminhos a serem desenhados.</p>
+
+<p>Ao definir um desenhável de vetor que você queira animar, use o atributo <code>android:name</code>
+para atribuir um nome único a grupos e caminhos para poder referenciá-los nas definições
+do animador. Por exemplo:</p>
+
+<pre>
+&lt;!-- res/drawable/vectordrawable.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="64dp"
+    android:width="64dp"
+    android:viewportHeight="600"
+    android:viewportWidth="600">
+    &lt;group
+        <strong>android:name="rotationGroup"</strong>
+        android:pivotX="300.0"
+        android:pivotY="300.0"
+        android:rotation="45.0" >
+        &lt;path
+            <strong>android:name="v"</strong>
+            android:fillColor="#000000"
+            android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
+    &lt;/group>
+&lt;/vector>
+</pre>
+
+<p>A definição de desenhável de vetor animado se refere a grupos e caminhos no desenhável de vetor
+pelos respectivos nomes:</p>
+
+<pre>
+&lt;!-- res/drawable/animvectordrawable.xml -->
+&lt;animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+  android:drawable="@drawable/vectordrawable" >
+    &lt;target
+        android:name="rotationGroup"
+        android:animation="@anim/rotation" />
+    &lt;target
+        android:name="v"
+        android:animation="@anim/path_morph" />
+&lt;/animated-vector>
+</pre>
+
+<p>As definições de animação representam objetos {@link android.animation.ObjectAnimator} ou {@link
+android.animation.AnimatorSet}. O primeiro animador nesse exemplo gira o grupo
+desejado em 360º:</p>
+
+<pre>
+&lt;!-- res/anim/rotation.xml -->
+&lt;objectAnimator
+    android:duration="6000"
+    android:propertyName="rotation"
+    android:valueFrom="0"
+    android:valueTo="360" />
+</pre>
+
+<p>O segundo animador nesse exemplo transforma a forma do caminho do desenhável
+de vetor. Ambos os caminhos devem ser compatíveis com a transformação: eles precisam ter o mesmo
+número de comandos e de parâmetros para cada comando.</p>
+
+<pre>
+&lt;!-- res/anim/path_morph.xml -->
+&lt;set xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;objectAnimator
+        android:duration="3000"
+        android:propertyName="pathData"
+        android:valueFrom="M300,70 l 0,-70 70,70 0,0   -70,70z"
+        android:valueTo="M300,70 l 0,-70 70,0  0,140 -70,0 z"
+        android:valueType="pathType" />
+&lt;/set>
+</pre>
+
+<p>Para obter mais informações, consulte a referência de API para {@link
+android.graphics.drawable.AnimatedVectorDrawable}.</p>
diff --git a/docs/html-intl/intl/pt-br/training/material/compatibility.jd b/docs/html-intl/intl/pt-br/training/material/compatibility.jd
new file mode 100644
index 0000000..2540df1
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/training/material/compatibility.jd
@@ -0,0 +1,168 @@
+page.title=Como manter a compatibilidade
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Esta lição ensina a</h2>
+<ol>
+  <li><a href="#Theme">Definir estilos alternativos</a></li>
+  <li><a href="#Layouts">Fornecer layouts alternativos</a></li>
+  <li><a href="#SupportLib">Usar a Biblioteca de Suporte</a></li>
+  <li><a href="#CheckVersion">Verificar a versão do sistema</a></li>
+</ol>
+<h2>Você também deve ler</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Especificações do Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design no Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Alguns recursos do Material Design, como o tema do Material e transições personalizadas de atividades, estão
+disponíveis apenas no Android 5.0 (API de nível 21) e posteriores. Contudo, você pode projetar os aplicativos
+para usar esses recursos ao executá-los em dispositivos compatíveis com o Material Design e ainda mantê-los
+compatíveis com dispositivos executando versões anteriores do Android.</p>
+
+
+<h2 id="Theme">Definir estilos alternativos</h2>
+
+<p>Você pode configurar o aplicativo para usar o tema do Material em dispositivos compatíveis
+com ele e reverter para um tema antigo em dispositivos que executem versões anteriores do Android:</p>
+
+<ol>
+<li>Defina um tema herdado de um tema antigo (como Holo) em
+    <code>res/values/styles.xml</code>.</li>
+<li>Defina um tema com o mesmo nome herdado do tema do Material em
+    <code>res/values-v21/styles.xml</code>.</li>
+<li>Defina esse tema como o tema do seu aplicativo no arquivo de manifesto.</li>
+</ol>
+
+<p class="note"><strong>Observação:</strong>
+se o seu aplicativo usa o tema do Material mas não fornece um tema alternativo dessa maneira,
+o aplicativo não rodará em versões mais antigas do que o Android 5.0.
+</p>
+
+
+<h2 id="Layouts">Fornecer layouts alternativos</h2>
+
+<p>Se os layouts que você projetou de acordo com as orientações do Material Design não usarem
+quaisquer dos novos atributos XML introduzidos no Android 5.0 (API de nível 21), eles funcionarão em
+versões antigas do Android. Caso contrário, você pode fornecer layouts alternativos. Você também pode fornecer
+layouts alternativos para personalizar a aparência do seu aplicativo em versões anteriores do Android.</p>
+
+<p>Crie arquivos de layout para Android 5.0 (API de nível 21) dentro de <code>res/layout-v21/</code> e arquivos de
+layout alternativo para versões anteriores do Android dentro de <code>res/layout/</code>.
+Por exemplo, <code>res/layout/my_activity.xml</code> é um layout alternativo de
+<code>res/layout-v21/my_activity.xml</code>.</p>
+
+<p>Para evitar duplicação do código, defina os estilos dentro de <code>res/values/</code>, modifique-os
+em <code>res/values-v21/</code> para as novas APIs e use herança de estilo, definindo
+estilos de base em <code>res/values/</code> e herdando daqueles em <code>res/values-v21/</code>.</p>
+
+
+<h2 id="SupportLib">Usar a Biblioteca de Suporte</h2>
+
+<p>A <a href="{@docRoot}tools/support-library/features.html#v7">v7 da Biblioteca de Suporte</a>
+r21 e posteriores incluem os seguintes recursos do Material Design:</p>
+
+<ul>
+<li><a href="{@docRoot}training/material/theme.html">Estilos do Material Design</a> para alguns widgets do
+sistema quando se aplica um dos temas <code>Theme.AppCompat</code>.</li>
+<li><a href="{@docRoot}training/material/theme.html#ColorPalette">Atributos de tema da paleta de cores</a>
+    nos temas <code>Theme.AppCompat</code>.</li>
+<li>O widget {@link android.support.v7.widget.RecyclerView} para <a href="{@docRoot}training/material/lists-cards.html#RecyclerView">exibir coleções
+    de dados</a>.</li>
+<li>O widget {@link android.support.v7.widget.CardView} para <a href="{@docRoot}training/material/lists-cards.html#CardView">criar cartões</a>.</li>
+<li>A classe {@link android.support.v7.graphics.Palette} para <a href="{@docRoot}training/material/drawables.html#ColorExtract">extrair cores proeminentes de
+    imagens</a>.</li>
+</ul>
+
+<h3>Widgets de sistema</h3>
+
+<p>Os temas <code>Theme.AppCompat</code> fornecem estilos do Material Design para os seguintes widgets:</p>
+
+<ul>
+  <li>{@link android.widget.EditText}</li>
+  <li>{@link android.widget.Spinner}</li>
+  <li>{@link android.widget.CheckBox}</li>
+  <li>{@link android.widget.RadioButton}</li>
+  <li>{@link android.support.v7.widget.SwitchCompat}</li>
+  <li>{@link android.widget.CheckedTextView}</li>
+</ul>
+
+<h3>Paleta de cores</h3>
+
+<p>Para obter estilos do Material Design e personalizar a paleta de cores com a v7 da Biblioteca de Suporte
+do Android, aplique um dos temas <code>Theme.AppCompat</code>:</p>
+
+<pre>
+&lt;!-- extend one of the Theme.AppCompat themes -->
+&lt;style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
+    &lt;!-- customize the color palette -->
+    &lt;item name="colorPrimary">@color/material_blue_500&lt;/item>
+    &lt;item name="colorPrimaryDark">@color/material_blue_700&lt;/item>
+    &lt;item name="colorAccent">@color/material_green_A200&lt;/item>
+&lt;/style>
+</pre>
+
+<h3>Listas e cartões</h3>
+
+<p>Os widgets {@link android.support.v7.widget.RecyclerView} e {@link
+android.support.v7.widget.CardView} estão disponíveis em versões anteriores do Android na
+Biblioteca de Suporte v7 do Android com as seguintes limitações:</p>
+<ul>
+<li>{@link android.support.v7.widget.CardView} volta a uma implementação de sombra programática
+   usando preenchimento adicional.</li>
+<li>{@link android.support.v7.widget.CardView} não recorta as visualizações filhas que cortam
+    as bordas arredondadas.</li>
+</ul>
+
+
+<h3>Dependências</h3>
+
+<p>Para usar esses recursos em versões anteriores ao Android 5.0 (API de nível 21), inclua a
+Biblioteca de Suporte v7 do Android no projeto como uma <a href="{@docRoot}/sdk/installing/studio-build.html#dependencies">dependência de Gradle</a>:</p>
+
+<pre>
+dependencies {
+    compile 'com.android.support:appcompat-v7:21.0.+'
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
+
+
+<h2 id="CheckVersion">Verificar a versão do sistema</h2>
+
+<p>Os recursos a seguir estão disponíveis somente no Android 5.0 (API de nível 21) e em posteriores:</p>
+
+<ul>
+<li>Transições de atividades</li>
+<li>Feedback de toque</li>
+<li>Animações de revelação</li>
+<li>Animações com base em caminhos</li>
+<li>Desenháveis de vetor</li>
+<li>Tingimento desenhável</li>
+</ul>
+
+<p>Para preservar a compatibilidade com versões anteriores do Android, verifique a {@link
+android.os.Build.VERSION#SDK_INT version} do sistema em tempo de execução antes de chamar as APIs para quaisquer
+destes recursos:</p>
+
+<pre>
+// Check if we're running on Android 5.0 or higher
+if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+    // Call some material design APIs here
+} else {
+    // Implement this feature without material design
+}
+</pre>
+
+<p class="note"><strong>Observação:</strong> Para especificar quais versões do Android são compatíveis com o seu aplicativo,
+use os atributos <code>android:minSdkVersion</code> e <code>android:targetSdkVersion</code>
+no arquivo de manifesto. Para usar os recursos do Material Design no Android 5.0, defina o
+atributo <code>android:targetSdkVersion</code> como <code>21</code>. Para obter mais informações, consulte
+o <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">guia de API
+&lt;uses-sdk&gt;</a>.</p>
diff --git a/docs/html-intl/intl/pt-br/training/material/drawables.jd b/docs/html-intl/intl/pt-br/training/material/drawables.jd
new file mode 100644
index 0000000..4eb9f36
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/training/material/drawables.jd
@@ -0,0 +1,126 @@
+page.title=Como trabalhar com desenháveis
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Esta lição ensina a</h2>
+<ol>
+  <li><a href="#DrawableTint">Colorir recursos desenháveis</a></li>
+  <li><a href="#ColorExtract">Extrair cores proeminentes de uma imagem</a></li>
+  <li><a href="#VectorDrawables">Criar desenháveis de vetor</a></li>
+</ol>
+<h2>Você também deve ler</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Especificações do Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design no Android</a></li>
+</ul>
+</div>
+</div>
+
+<p>As seguintes capacidades dos desenháveis ajudam na implementação do Material Design nos aplicativos:</p>
+
+<ul>
+<li>Tingimento desenhável</li>
+<li>Extração de cor proeminente</li>
+<li>Desenháveis de vetor</li>
+</ul>
+
+<p>Esta lição mostra como usar esses recursos no seu aplicativo.</p>
+
+
+<h2 id="DrawableTint">Colorir recursos desenháveis</h2>
+
+<p>Com o Android 5.0 (API de nível 21) e posteriores, você pode colorir bitmaps e nine-patches definidos como
+máscaras alfa. Você pode colori-los com recursos de cor ou atributos de tema que determinam os recursos
+de cor (por exemplo, <code>?android:attr/colorPrimary</code>). Normalmente, você cria esses ativos
+somente uma vez e colore-os automaticamente para combinar com seu tema.</p>
+
+<p>Você pode aplicar um tingimento aos objetos {@link android.graphics.drawable.BitmapDrawable} ou {@link
+android.graphics.drawable.NinePatchDrawable} com o método {@code setTint()}. Você também
+pode configurar a cor e o modo do tingimento nos layouts com os atributos <code>android:tint</code> e 
+<code>android:tintMode</code>.</p>
+
+
+<h2 id="ColorExtract">Extrair cores proeminentes de uma imagem</h2>
+
+<p>A Biblioteca de Suporte r21 do Android e posteriores incluem a classe {@link
+android.support.v7.graphics.Palette}, que permite a extração de cores proeminentes de uma imagem.
+Essa classe extrai as seguintes cores proeminentes:</p>
+
+<ul>
+<li>Vibrante</li>
+<li>Escuro vibrante</li>
+<li>Claro vibrante</li>
+<li>Suave</li>
+<li>Escuro suave</li>
+<li>Claro suave</li>
+</ul>
+
+<p>Para extrair essas cores, passe um objeto {@link android.graphics.Bitmap} para o método estático
+{@link android.support.v7.graphics.Palette#generate Palette.generate()} no encadeamento do segundo
+plano em que você carrega as imagens. Se você não puder usar aquele encadeamento, chame o método
+{@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} e forneça um escutador
+como alternativa.</p>
+
+<p>Você pode recuperar as cores proeminentes da imagem usando métodos de obtenção na classe
+<code>Palette</code>, como <code>Palette.getVibrantColor</code>.</p>
+
+<p>Para usar a classe {@link android.support.v7.graphics.Palette} no projeto, adicione a seguinte
+<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">dependência do Gradle</a> ao
+módulo do aplicativo:</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:palette-v7:21.0.0'
+}
+</pre>
+
+<p>Para obter mais informações, consulte a referência de API para a classe {@link android.support.v7.graphics.Palette}
+.</p>
+
+
+<h2 id="VectorDrawables">Criar desenháveis de vetor</h2>
+
+<!-- video box -->
+<a class="notice-developers-video" href="https://www.youtube.com/watch?v=wlFVIIstKmA" style="margin-top:18px">
+<div>
+    <h3>Vídeos</h3>
+    <p>Gráficos de vetor do Android</p>
+</div>
+</a>
+
+<p>No Android 5.0 (API de nível 21) e posteriores, você pode definir desenháveis de vetor que são dimensionáveis
+sem perder definição. Você precisa apenas de um arquivo de ativos para uma imagem de vetor, em vez de um arquivo de ativos
+para cada densidade de tela no caso de imagens de bitmap. Para criar uma imagem de vetor, defina os detalhes
+da forma dentro de um elemento XML <code>&lt;vector&gt;</code>.</p>
+
+<p>O exemplo a seguir define uma imagem de vetor com a forma de um coração:</p>
+
+<pre>
+&lt;!-- res/drawable/heart.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    &lt;!-- intrinsic size of the drawable -->
+    android:height="256dp"
+    android:width="256dp"
+    &lt;!-- size of the virtual canvas -->
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+
+  &lt;!-- draw a path -->
+  &lt;path android:fillColor="#8fff"
+      android:pathData="M20.5,9.5
+                        c-1.955,0,-3.83,1.268,-4.5,3
+                        c-0.67,-1.732,-2.547,-3,-4.5,-3
+                        C8.957,9.5,7,11.432,7,14
+                        c0,3.53,3.793,6.257,9,11.5
+                        c5.207,-5.242,9,-7.97,9,-11.5
+                        C25,11.432,23.043,9.5,20.5,9.5z" />
+&lt;/vector>
+</pre>
+
+<p>Imagens de vetor são representadas no Android como objetos {@link android.graphics.drawable.VectorDrawable}
+. Para obter mais informações sobre a sintaxe <code>pathData</code>, consulte a <a href="http://www.w3.org/TR/SVG11/paths.html#PathData">Referência do caminho SVG</a>. Para obter informações sobre
+como animar propriedades de desenháveis de vetor, consulte
+<a href="{@docRoot}training/material/animations.html#AnimVector">Animar desenháveis de vetor</a>.</p>
diff --git a/docs/html-intl/intl/pt-br/training/material/get-started.jd b/docs/html-intl/intl/pt-br/training/material/get-started.jd
new file mode 100644
index 0000000..e7b56a3
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/training/material/get-started.jd
@@ -0,0 +1,171 @@
+page.title=Como iniciar
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Esta lição ensina a</h2>
+<ol>
+  <li><a href="#ApplyTheme">Aplicar o tema do Material</a></li>
+  <li><a href="#Layouts">Projetar layouts</a></li>
+  <li><a href="#Depth">Especificar a elevação em visualizações</a></li>
+  <li><a href="#ListsCards">Criar listas e cartões</a></li>
+  <li><a href="#Animations">Personalizar animações</a></li>
+</ol>
+<h2>Você também deve ler</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Especificações do Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design no Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Para criar aplicativos com o Material Design:</p>
+
+<ol>
+  <li style="margin-bottom:10px">
+    Reveja as <a href="http://www.google.com/design/spec">especificações do Material Design</a>.</li>
+  <li style="margin-bottom:10px">
+    Aplique o <strong>tema</strong> do Material no seu aplicativo.</li>
+  <li style="margin-bottom:10px">
+    Crie <strong>layouts</strong> de acordo com as orientações do Material Design.</li>
+  <li style="margin-bottom:10px">
+    Especifique a <strong>elevação</strong> das visualizações para inserir sombras.</li>
+  <li style="margin-bottom:10px">
+    Use <strong>widgets</strong> do sistema para listas e cartões.</li>
+  <li style="margin-bottom:10px">
+    Personalize <strong>animações</strong> no aplicativo.</li>
+</ol>
+
+<h3>Manter compatibilidade com versões anteriores</h3>
+
+<p>Você pode adicionar muitos recursos do Material Design ao aplicativo e, ao mesmo tempo, manter
+a compatibilidade com versões anteriores ao Android 5.0. Para obter mais informações, consulte
+<a href="{@docRoot}training/material/compatibility.html">Como manter a compatibilidade</a>.</p>
+
+<h3>Atualizar o aplicativo com o Material Design</h3>
+
+<p>Para atualizar um aplicativo existente para incorporar o Material Design, atualize os layouts
+de acordo com as orientações do Material Design. Certifique-se também de incorporar profundidade, feedbacks de toque e
+animações.</p>
+
+<h3>Criar novos aplicativos com o Material Design</h3>
+
+<p>Se você está criando um novo aplicativo com recursos do Material Design, as <a href="http://www.google.com/design/spec">orientações do Material Design</a> fornecem uma
+estrutura de projeto coesa. Siga tais orientações e use a nova funcionalidade na estrutura do Android para
+projetar e desenvolver o aplicativo.</p>
+
+
+<h2 id="ApplyTheme">Aplicar o tema do Material</h2>
+
+<p>Para aplicar o tema do Material no aplicativo, especifique um estilo herdado de
+<code>android:Theme.Material</code>:</p>
+
+<pre>
+&lt;!-- res/values/styles.xml -->
+&lt;resources>
+  &lt;!-- your theme inherits from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- theme customizations -->
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<p>O tema do Material fornece widgets do sistema atualizados que permitem definir a paleta de cores e as animações
+padrão para feedback de toque e transições de atividades. Para obter mais detalhes, consulte
+<a href="{@docRoot}training/material/theme.html">Como usar o tema do Material</a>.</p>
+
+
+<h2 id="Layouts">Projetar layouts</h2>
+
+<p>Além de aplicar e personalizar o tema do Material, os layouts devem estar em conformidade
+com as <a href="http://www.google.com/design/spec">orientações do Material Design</a>. Ao projetar os
+layouts, dê atenção especial ao seguinte:</p>
+
+<ul>
+<li>Grades das linhas de base</li>
+<li>Linhas-chave</li>
+<li>Espaçamento</li>
+<li>Tamanho do alvo de toque</li>
+<li>Estrutura do layout</li>
+</ul>
+
+
+<h2 id="Depth">Especificar a elevação em visualizações</h2>
+
+<p>As visualizações podem lançar sombras e o valor da elevação delas
+determina o tamanho da sombra e a ordem dos desenhos. Para definir a elevação de uma visualização, use o atributo
+<code>android:elevation</code> nos layouts:</p>
+
+<pre>
+&lt;TextView
+    android:id="&#64;+id/my_textview"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:text="&#64;string/next"
+    android:background="&#64;color/white"
+    android:elevation="5dp" />
+</pre>
+
+<p>A nova propriedade <code>translationZ</code> permite a criação de animações que refletem mudanças
+temporárias na elevação de uma visualização. As mudanças de elevação podem ser úteis ao
+<a href="{@docRoot}training/material/animations.html#ViewState">responder a gestos
+de toque</a>.</p>
+
+<p>Para obter mais detalhes, consulte <a href="{@docRoot}training/material/shadows-clipping.html">Como definir
+sombras e recortar visualizações</a>.</p>
+
+
+<h2 id="ListsCards">Criar listas e cartões</h2>
+
+<p>{@link android.support.v7.widget.RecyclerView} é uma versão mais completa de {@link
+android.widget.ListView} compatível com diferentes tipos de layout e que fornece melhor desempenho.
+{@link android.support.v7.widget.CardView} permite a exibição de informações dentro dos cartões com uma
+aparência consistente nos aplicativos. O exemplo de código a seguir mostra como incluir um
+{@link android.support.v7.widget.CardView} no layout:</p>
+
+<pre>
+&lt;android.support.v7.widget.CardView
+    android:id="&#64;+id/card_view"
+    android:layout_width="200dp"
+    android:layout_height="200dp"
+    card_view:cardCornerRadius="3dp">
+    ...
+&lt;/android.support.v7.widget.CardView>
+</pre>
+
+<p>Para obter mais informações, consulte <a href="{@docRoot}training/material/lists-cards.html">Como criar
+listas e cartões</a>.</p>
+
+
+<h2 id="Animations">Personalizar animações</h2>
+
+<p>O Android 5.0 (API de nível 21) inclui novas APIs para criar animações personalizadas no aplicativo.
+Por exemplo, você pode habilitar transições de atividades e definir uma transição de saída dentro
+de uma atividade:</p>
+
+<pre>
+public class MyActivity extends Activity {
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // enable transitions
+        getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+        setContentView(R.layout.activity_my);
+    }
+
+    public void onSomeButtonClicked(View view) {
+        getWindow().setExitTransition(new Explode());
+        Intent intent = new Intent(this, MyOtherActivity.class);
+        startActivity(intent,
+                      ActivityOptions
+                          .makeSceneTransitionAnimation(this).toBundle());
+    }
+}
+</pre>
+
+<p>Ao iniciar outra atividade a partir desta, a transição de saída é ativada.</p>
+
+<p>Para saber mais sobre as novas APIs de animação, consulte <a href="{@docRoot}training/material/animations.html">Como definir animações personalizadas</a>.</p>
diff --git a/docs/html-intl/intl/pt-br/training/material/index.jd b/docs/html-intl/intl/pt-br/training/material/index.jd
new file mode 100644
index 0000000..76580c8
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/training/material/index.jd
@@ -0,0 +1,61 @@
+page.title=Material Design para desenvolvedores
+page.type=design
+page.image=images/cards/material_2x.png
+page.metaDescription=Saiba como aplicar o Material Design em seus aplicativos.
+
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+  <h2>Dependências e pré-requisitos</h2>
+  <ul>
+    <li>Android 5.0 (API de nível 21)</li>
+  </ul>
+</div>
+</div>
+
+<p>O Material Design é um guia abrangente para design visual, de movimento e de interação para
+diversas plataformas e dispositivos. Para usar o Material Design nos aplicativos Android, siga as orientações
+descritas nas
+<a href="http://www.google.com/design/spec/material-design/introduction.html">especificações do
+Material Design</a> e use os novos componentes e funcionalidades disponíveis no Android 5.0
+(API de nível 21).</p>
+
+<p>Essa lição mostra como criar aplicativos do Material Design com os seguintes elementos:</p>
+
+<ul>
+<li>O tema do Material</li>
+<li>Widgets para cartões e listas</li>
+<li>Sombras personalizadas e recorte de visualizações</li>
+<li>Desenháveis de vetor</li>
+<li>Animações personalizadas</li>
+</ul>
+
+<p>Esta lição também ensina a manter a compatibilidade com versões anteriores ao Android
+5.0 (API de nível 21) ao usar recursos do Material Design no aplicativo.</p>
+
+<h2>Lições</h2>
+
+<dl>
+  <dt><a href="{@docRoot}training/material/get-started.html">Como iniciar</a></dt>
+  <dd>Aprenda a atualizar o aplicativo com recursos do Material Design.</dd>
+
+  <dt><a href="{@docRoot}training/material/theme.html">Como usar o tema do Material</a></dt>
+  <dd>Saiba como aplicar estilos do Material Design ao aplicativo.</dd>
+
+  <dt><a href="{@docRoot}training/material/lists-cards.html">Como criar listas e cartões</a></dt>
+  <dd>Aprenda a criar listas e cartões com uma aparência consistente usando widgets do sistema.</dd>
+
+  <dt><a href="{@docRoot}training/material/shadows-clipping.html">Como definir sombras e recortar visualizações</a></dt>
+  <dd>Saiba como definir elevação para as visualizações para criar sombras personalizadas e como recortar visualizações.</dd>
+
+  <dt><a href="{@docRoot}training/material/drawables.html">Como trabalhar com desenháveis</a></dt>
+  <dd>Aprenda a criar desenháveis de vetor e a colorir recursos desenháveis.</dd>
+
+  <dt><a href="{@docRoot}training/material/animations.html">Como definir animações personalizadas</a></dt>
+  <dd>Saiba como criar animações personalizadas para visualizações e transições de atividades com elementos compartilhados.</dd>
+
+  <dt><a href="{@docRoot}training/material/compatibility.html">Como manter a compatibilidade</a></dt>
+  <dd>Aprenda a manter a compatibilidade com versões de plataforma anteriores ao Android 5.0.</dd>
+</dl>
diff --git a/docs/html-intl/intl/pt-br/training/material/lists-cards.jd b/docs/html-intl/intl/pt-br/training/material/lists-cards.jd
new file mode 100644
index 0000000..eb336ac
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/training/material/lists-cards.jd
@@ -0,0 +1,266 @@
+page.title=Como criar listas e cartões
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Esta lição ensina a</h2>
+<ol>
+  <li><a href="#RecyclerView">Criar listas</a></li>
+  <li><a href="#CardView">Criar cartões</a></li>
+  <li><a href="#Dependencies">Adicionar dependências</a></li>
+</ol>
+<h2>Você também deve ler</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Especificações do Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design no Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Para criar listas e cartões complexos com estilos do Material Design no seu aplicativo, você pode usar os widgets
+{@link android.support.v7.widget.RecyclerView} e {@link android.support.v7.widget.CardView}
+.</p>
+
+
+<h2 id="RecyclerView">Criar listas</h2>
+
+<p>O widget {@link android.support.v7.widget.RecyclerView} é uma versão mais avançada e flexível
+do {@link android.widget.ListView}. Esse widget é um contêiner para exibir grandes conjuntos
+de dados que podem ser rolados com muita eficiência ao manter um número limitado de visualizações. Use o widget
+{@link android.support.v7.widget.RecyclerView} quando tiver coletas de dados cujos elementos mudam
+durante a execução baseados na ação do usuário ou em eventos de rede.</p>
+
+<p>A classe {@link android.support.v7.widget.RecyclerView} simplifica a exibição e o tratamento de
+grandes conjuntos de dados oferecendo:</p>
+
+<ul>
+  <li>Gerenciadores de layout para posicionar itens</li>
+  <li>Animações padrão para operações de item comuns, como remoção ou adição de itens</li>
+</ul>
+
+<p>Você também tem a flexibilidade de definir gerenciadores de layout e animações personalizadas para widgets {@link
+android.support.v7.widget.RecyclerView}.</p>
+
+<img src="{@docRoot}training/material/images/RecyclerView.png" alt="" width="550" height="106" />
+<p class="img-caption">
+<strong>Figura 1</strong>. O widget <code>RecyclerView</code>.
+</p>
+
+<p>Para usar o widget {@link android.support.v7.widget.RecyclerView}, você deve especificar um
+adaptador e um gerenciador de layout. Para criar um adaptador, amplie a classe {@link
+android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter}. Os detalhes
+da implementação dependem das especificações do conjunto de dados e do tipo de visualização. Para obter
+mais informações, veja os <a href="#RVExamples">exemplos</a> abaixo.</p>
+
+<div style="float:right">
+<img src="{@docRoot}design/material/images/list_mail.png" alt="" width="250" height="426" />
+<p class="img-caption" style="margin-left:8px">
+<strong>Figura 2</strong> - Listas com <code>RecyclerView</code>.
+</p>
+</div>
+
+<p>Um <strong>gerenciador de layout</strong> posiciona as visualizações de item dentro de um {@link
+android.support.v7.widget.RecyclerView} e determina quando reutilizar visualizações de item que não
+estão mais visíveis ao usuário. Para reutilizar (ou <em>reciclar</em>) uma visualização, um gerenciador de layout pode solicitar
+ao adaptador a substituição do conteúdo da visualização com um elemento diferente do conjunto de dados. Visualizações
+recicladas dessa maneira aprimoram o desempenho ao evitar a criação de visualizações desnecessárias ou a
+realização de pesquisas {@link android.app.Activity#findViewById findViewById()} caras.</p>
+
+<p>{@link android.support.v7.widget.RecyclerView} fornece esses gerenciadores de layout embutidos:</p>
+
+<ul>
+<li>{@link android.support.v7.widget.LinearLayoutManager} exibe itens em uma lista de rolagem
+vertical ou horizontal.</li>
+<li>{@link android.support.v7.widget.GridLayoutManager} exibe itens em uma grade.</li>
+<li>{@link android.support.v7.widget.StaggeredGridLayoutManager} exibe itens em uma grade escalonada.</li>
+</ul>
+
+<p>Para criar um gerenciador de layout personalizado, amplie a classe {@link
+android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager}.</p>
+
+<h3>Animações</h3>
+
+<p>As animações para a adição e a remoção de itens são habilitadas, por padrão, em {@link
+android.support.v7.widget.RecyclerView}. Para personalizá-las, amplie a classe
+{@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} e use o
+método {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()}
+.</p>
+
+<h3 id="RVExamples">Exemplos</h3>
+
+<p>O exemplo de código a seguir demonstra como adicionar o
+{@link android.support.v7.widget.RecyclerView} a um layout:</p>
+
+<pre>
+&lt;!-- A RecyclerView with some commonly used attributes -->
+&lt;android.support.v7.widget.RecyclerView
+    android:id="@+id/my_recycler_view"
+    android:scrollbars="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"/>
+</pre>
+
+<p>Depois de adicionar um widget {@link android.support.v7.widget.RecyclerView} ao seu layout,
+obtenha um identificador para o objeto, conecte-o a um gerenciador de layout e anexe um adaptador para que os
+dados sejam exibidos:</p>
+
+<pre>
+public class MyActivity extends Activity {
+    private RecyclerView mRecyclerView;
+    private RecyclerView.Adapter mAdapter;
+    private RecyclerView.LayoutManager mLayoutManager;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.my_activity);
+        mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
+
+        // use this setting to improve performance if you know that changes
+        // in content do not change the layout size of the RecyclerView
+        mRecyclerView.setHasFixedSize(true);
+
+        // use a linear layout manager
+        mLayoutManager = new LinearLayoutManager(this);
+        mRecyclerView.setLayoutManager(mLayoutManager);
+
+        // specify an adapter (see also next example)
+        mAdapter = new MyAdapter(myDataset);
+        mRecyclerView.setAdapter(mAdapter);
+    }
+    ...
+}
+</pre>
+
+<p>O adaptador dá acesso aos itens no conjunto de dados, cria visualizações para os itens e
+substitui o conteúdo de algumas das visualizações por novos itens de dados quando o item original não está
+mais visível. O exemplo de código a seguir mostra uma implementação simples para um conjunto de dados
+que consiste em uma matriz de strings exibidas usando widgets {@link android.widget.TextView}:</p>
+
+<pre>
+public class MyAdapter extends RecyclerView.Adapter&lt;MyAdapter.ViewHolder> {
+    private String[] mDataset;
+
+    // Provide a reference to the views for each data item
+    // Complex data items may need more than one view per item, and
+    // you provide access to all the views for a data item in a view holder
+    public static class ViewHolder extends RecyclerView.ViewHolder {
+        // each data item is just a string in this case
+        public TextView mTextView;
+        public ViewHolder(TextView v) {
+            super(v);
+            mTextView = v;
+        }
+    }
+
+    // Provide a suitable constructor (depends on the kind of dataset)
+    public MyAdapter(String[] myDataset) {
+        mDataset = myDataset;
+    }
+
+    // Create new views (invoked by the layout manager)
+    &#64;Override
+    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
+                                                   int viewType) {
+        // create a new view
+        View v = LayoutInflater.from(parent.getContext())
+                               .inflate(R.layout.my_text_view, parent, false);
+        // set the view's size, margins, paddings and layout parameters
+        ...
+        ViewHolder vh = new ViewHolder(v);
+        return vh;
+    }
+
+    // Replace the contents of a view (invoked by the layout manager)
+    &#64;Override
+    public void onBindViewHolder(ViewHolder holder, int position) {
+        // - get element from your dataset at this position
+        // - replace the contents of the view with that element
+        holder.mTextView.setText(mDataset[position]);
+
+    }
+
+    // Return the size of your dataset (invoked by the layout manager)
+    &#64;Override
+    public int getItemCount() {
+        return mDataset.length;
+    }
+}
+</pre>
+
+
+<div style="float:right;margin-top:15px;margin-left:30px">
+<img src="{@docRoot}design/material/images/card_travel.png" alt="" width="225" height="383">
+<p class="img-caption" style="margin-left:12px">
+<strong>Figura 3</strong>. Exemplos de cartões.
+</p>
+</div>
+
+<h2 id="CardView">Criar cartões</h2>
+
+<p>{@link android.support.v7.widget.CardView} amplia a classe {@link android.widget.FrameLayout} e
+permite que você exiba informações dentro dos cartões que têm uma aparência consistente em toda a plataforma. Os widgets {@link
+android.support.v7.widget.CardView} podem ter sombras e bordas arredondadas.</p>
+
+<p>Para criar um cartão com sombra, use o atributo <code>card_view:cardElevation</code>.
+{@link android.support.v7.widget.CardView} usa elevação real e sombras dinâmicas no Android 5.0
+(API de nível 21) e posteriores e volta para uma implementação de sombra programática em versões anteriores.
+Para obter mais informações, consulte <a href="{@docRoot}training/material/compatibility.html">Como manter
+a compatibilidade</a>.</p>
+
+<p>Use estas propriedades para personalizar a aparência do widget
+{@link android.support.v7.widget.CardView}:</p>
+
+<ul>
+  <li>Para definir o raio do canto nos layouts, use o atributo <code>card_view:cardCornerRadius</code>
+.</li>
+  <li>Para definir o raio do canto no seu código, use o método <code>CardView.setRadius</code>.</li>
+  <li>Para definir a cor de segundo plano de um cartão, use o atributo <code>card_view:cardBackgroundColor</code>
+.</li>
+</ul>
+
+<p>O exemplo de código a seguir mostra como incluir um widget {@link android.support.v7.widget.CardView}
+no layout:</p>
+
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    ... >
+    &lt;!-- A CardView that contains a TextView -->
+    &lt;android.support.v7.widget.CardView
+        xmlns:card_view="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/card_view"
+        android:layout_gravity="center"
+        android:layout_width="200dp"
+        android:layout_height="200dp"
+        card_view:cardCornerRadius="4dp">
+
+        &lt;TextView
+            android:id="@+id/info_text"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
+    &lt;/android.support.v7.widget.CardView>
+&lt;/LinearLayout>
+</pre>
+
+<p>Para obter mais informações, consulte a referência de API para {@link android.support.v7.widget.CardView}.</p>
+
+
+<h2 id="Dependencies">Adicionar dependências</h2>
+
+<p>Os widgets {@link android.support.v7.widget.RecyclerView} e {@link android.support.v7.widget.CardView}
+são parte da <a href="{@docRoot}tools/support-library/features.html#v7">Biblioteca de
+Suporte v7</a>. Para usar esses widgets no projeto, adicione estas
+<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">dependências do Gradle</a> ao módulo
+do aplicativo:</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
diff --git a/docs/html-intl/intl/pt-br/training/material/shadows-clipping.jd b/docs/html-intl/intl/pt-br/training/material/shadows-clipping.jd
new file mode 100644
index 0000000..4c4f154
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/training/material/shadows-clipping.jd
@@ -0,0 +1,133 @@
+page.title=Como definir sombras e recortar visualizações
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Esta lição ensina a</h2>
+<ol>
+  <li><a href="#Elevation">Atribuir elevação a visualizações</a></li>
+  <li><a href="#Shadows">Personalizar sombras e contornos de visualizações</a></li>
+  <li><a href="#Clip">Recortar visualizações</a></li>
+</ol>
+<h2>Você também deve ler</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Especificações do Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design no Android</a></li>
+</ul>
+</div>
+</div>
+
+<p>O Material Design introduz a elevação em elementos da interface do usuário. A elevação ajuda os usuários a entender
+a importância relativa de cada elemento e concentrar a atenção deles nas tarefas à mão.</p>
+
+<p>A elevação de uma visualização, representada pela propriedade Z, determina a aparência visual das
+sombras: visualizações com valores de Z mais altos lançam sombras maiores e mais suaves. Visualizações com valores de Z mais altos ocultam
+visualizações com valores de Z mais baixos, mas o valor de Z de uma visualização não afeta o tamanho dela.</p>
+
+<p>As sombras são desenhadas pelo pai da visualização elevada e, por isso, estão sujeitas a recortes padrão de
+visualização, recortadas pelo pai por padrão.</p>
+
+<p>A elevação também é útil para criar animações em que os widgets se elevam temporariamente
+sobre o plano de visualização ao realizar alguma ação.</p>
+
+<p>Para obter mais informações sobre elevação no Material Design, consulte
+<a href="http://www.google.com/design/spec/what-is-material/objects-in-3d-space.html">Objetos
+no espaço 3D</a>.</p>
+
+
+<h2 id="Elevation">Atribuir elevação a visualizações</h2>
+
+<p>O valor de Z para uma visualização tem dois componentes:
+
+<ul>
+<li>Elevação: o componente estático.</li>
+<li>Movimentação: o componente dinâmico usado para animações.</li>
+</ul>
+
+<p><code>Z = elevation + translationZ</code></p>
+
+<img src="{@docRoot}training/material/images/shadows-depth.png" width="580" height="261" alt="" />
+<p class="img-caption"><strong>Figura 1</strong> - sombras para diferentes elevações de visualização.</p>
+
+<p>Para definir a elevação de uma visualização em uma definição de layout, use o atributo <code>android:elevation</code>
+. Para definir a elevação de uma visualização no código de uma atividade, use o método
+{@link android.view.View#setElevation View.setElevation()}.</p>
+
+<p>Para definir a conversão de uma visualização, use o método {@link android.view.View#setTranslationZ
+View.setTranslationZ()}.</p>
+
+<p>Os novos métodos {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} e {@link
+android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} permitem
+animar facilmente a elevação de visualizações. Para obter mais informações, consulte a referência de API para
+{@link android.view.ViewPropertyAnimator} e o guia do desenvolvedor <a href="{@docRoot}guide/topics/graphics/prop-animation.html">Animação de
+propriedade</a>.</p>
+
+<p>Você também pode usar um {@link android.animation.StateListAnimator} para
+especificar essas animações de um modo declarativo, o que é especialmente útil para casos em que o estado muda
+as animações de acionamento, como quando um usuário pressiona um botão. Para obter mais informações, consulte
+<a href="{@docRoot}training/material/animations.html#ViewState">Mudanças de estado de visualização da animação</a>.</p>
+
+<p>Os valores de Z são medidos em dp (pixels independentes de densidade).</p>
+
+
+<h2 id="Shadows">Personalizar sombras e contornos de visualizações</h2>
+
+<p>Os limites de um desenhável do segundo plano da visualização determinam a forma padrão da sombra.
+<strong>Contornos</strong> representam a forma externa de um objeto gráfico e definem a área
+de ondulação para o feedback de toque.</p>
+
+<p>Analise esta visualização, definida com um desenhável de segundo plano:</p>
+
+<pre>
+&lt;TextView
+    android:id="@+id/myview"
+    ...
+    android:elevation="2dp"
+    android:background="@drawable/myrect" />
+</pre>
+
+<p>O desenhável do segundo plano é definido como um retângulo com bordas arredondadas:</p>
+
+<pre>
+&lt;!-- res/drawable/myrect.xml -->
+&lt;shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+    &lt;solid android:color="#42000000" />
+    &lt;corners android:radius="5dp" />
+&lt;/shape>
+</pre>
+
+<p>A visualização lança uma sombra com bordas arredondadas, uma vez que o desenhável de segundo plano
+define o contorno da visualização. Fornecer um contorno personalizado neutraliza a forma padrão de uma sombra da visualização.</p>
+
+<p>Para definir um contorno personalizado para uma visualização no seu código:<p>
+
+<ol>
+<li>Amplie a classe {@link android.view.ViewOutlineProvider}.</li>
+<li>Neutralize o método {@link android.view.ViewOutlineProvider#getOutline getOutline()}.</li>
+<li>Atribua o novo fornecedor de contorno à visualização com o método {@link
+android.view.View#setOutlineProvider View.setOutlineProvider()}.</li>
+</ol>
+
+<p>Você pode criar contornos ovais e retangulares com bordas arredondadas usando os métodos na classe
+{@link android.graphics.Outline}. O fornecedor de contorno padrão para visualizações obtém o contorno
+do segundo plano da visualização. Para evitar que uma visualização lance uma sombra, defina o fornecedor de contorno
+dela como <code>null</code>.</p>
+
+
+<h2 id="Clip">Recortar visualizações</h2>
+
+<p>Recortar visualizações permite mudar facilmente a forma de uma visualização. Você pode recortar visualizações
+para obter consistência com outros elementos de design ou para mudar a forma de uma visualização em resposta à interação do usuário.
+É possível recortar uma visualização na área do contorno usando o método {@link android.view.View#setClipToOutline
+View.setClipToOutline()} ou o atributo <code>android:clipToOutline</code>. Somente
+contornos retangulares, circulares e retangulares redondos são compatíveis com recorte, conforme determinado pelo método
+{@link android.graphics.Outline#canClip Outline.canClip()}.</p>
+
+<p>Para recortar uma visualização na forma de um desenhável, defina o desenhável como o segundo plano da visualização
+(conforme exibido acima) e chame o método {@link android.view.View#setClipToOutline View.setClipToOutline()}
+.</p>
+
+<p>O recorte de visualizações é uma operação cara, por isso, não anime a forma que você
+usa para recortar uma visualização. Para atingir esse efeito, use a animação <a href="{@docRoot}training/material/animations.html#Reveal">Efeito de Revelação</a>.</p>
diff --git a/docs/html-intl/intl/pt-br/training/material/theme.jd b/docs/html-intl/intl/pt-br/training/material/theme.jd
new file mode 100644
index 0000000..df0e1ce
--- /dev/null
+++ b/docs/html-intl/intl/pt-br/training/material/theme.jd
@@ -0,0 +1,131 @@
+page.title=Como usar o tema do Material
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Esta lição ensina a</h2>
+<ol>
+  <li><a href="#ColorPalette">Personalizar a paleta de cores</a></li>
+  <li><a href="#StatusBar">Personalizar a barra de status</a></li>
+  <li><a href="#Inheritance">Atribuir tema a visualizações individuais</a></li>
+</ol>
+<h2>Você também deve ler</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Especificações do Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design no Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>O novo tema do Material fornece:</p>
+
+<ul>
+  <li>Widgets do sistema que permitem a configuração da paleta de cores</li>
+  <li>Animações de feedback de toque para os widgets do sistema</li>
+  <li>Animações de transição de atividades</li>
+</ul>
+
+<p>É possível personalizar a aparência do tema do Material com
+uma paleta de cores que você controla, de acordo com a identidade da sua marca. Você pode atribuir cor à barra de ações e
+à barra de status usando atributos de tema, conforme exibido na <a href="#fig3">Figura 3</a>.</p>
+
+<p>Os widgets de sistema têm um novo design e animações de feedback de toque. Você pode personalizar a
+paleta de cores, as animações de feedback de toque e as transições de atividades do aplicativo.</p>
+
+<p>O tema do Material é definido como:</p>
+
+<ul>
+  <li><code>@android:style/Theme.Material</code> (versão escura)</li>
+  <li><code>@android:style/Theme.Material.Light</code> (versão clara)</li>
+  <li><code>@android:style/Theme.Material.Light.DarkActionBar</code></li>
+</ul>
+
+<p>Para obter uma lista de estilos do Material que podem ser usados, consulte a referência de API para
+{@link android.R.style R.style}.</p>
+
+<!-- two columns, dark/light material theme example -->
+<div style="width:700px;margin-top:25px;margin-bottom:10px">
+<div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
+  <img src="{@docRoot}design/material/images/MaterialDark.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>Figura 1</strong>. Tema escuro do Material</p>
+  </div>
+</div>
+<div style="float:left;width:250px;margin-right:0px;">
+  <img src="{@docRoot}design/material/images/MaterialLight.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>Figura 2</strong>. Tema claro do Material</p>
+  </div>
+</div>
+<br style="clear:left">
+</div>
+
+<p class="note">
+<strong>Observação:</strong> o tema do Material só está disponível no Android 5.0 (API de nível 21) e
+posteriores. A <a href="{@docRoot}tools/support-library/features.html#v7">Biblioteca de Suporte v7</a>
+fornece temas com estilos do Material Design para alguns widgets e compatibilidade com a personalização da
+paleta de cores. Para obter mais informações, consulte
+<a href="{@docRoot}training/material/compatibility.html">Como manter a compatibilidade</a>.
+</p>
+
+
+<h2 id="ColorPalette">Personalizar a paleta de cores</h2>
+
+<p style="margin-bottom:30px">Para personalizar as cores de base do tema para adequá-lo à sua marca, defina
+as cores personalizadas usando os atributos de tema ao herdar do tema do Material:</p>
+
+<pre>
+&lt;resources>
+  &lt;!-- inherit from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- Main theme colors -->
+    &lt;!--   your app branding color for the app bar -->
+    &lt;item name="android:colorPrimary">@color/primary&lt;/item>
+    &lt;!--   darker variant for the status bar and contextual app bars -->
+    &lt;item name="android:colorPrimaryDark">@color/primary_dark&lt;/item>
+    &lt;!--   theme UI controls like checkboxes and text fields -->
+    &lt;item name="android:colorAccent">@color/accent&lt;/item>
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<div style="float:right;margin-left:25px;margin-top:20px;margin-bottom:10px" id="fig3">
+<img src="{@docRoot}training/material/images/ThemeColors.png" width="250" height="445" />
+<p class="img-caption" style="margin-bottom:0px">
+<strong>Figura 3.</strong> Como personalizar o tema do Material</p>
+</div>
+
+
+<h2 id="StatusBar">Personalizar a barra de status</h2>
+
+<p>O tema do Material permite a fácil personalização da barra de status, para você poder
+especificar uma cor adequada à sua marca, e fornece contraste suficiente para exibir os ícones de status brancos. Para
+definir uma cor personalizada para a barra de status, use o atributo <code>android:statusBarColor</code> ao
+ampliar o tema do Material. Por padrão, <code>android:statusBarColor</code> herda o
+valor de <code>android:colorPrimaryDark</code>.</p>
+
+<p>Você também pode personalizar a parte de trás da barra de status. Por exemplo, se você quiser mostrar
+uma barra de status transparente sobre uma foto, com um degradê escuro sutil, para garantir que os ícones de status
+brancos sejam visíveis, defina o atributo <code>android:statusBarColor</code> como
+<code>&#64;android:color/transparent</code> e ajuste os marcadores de janela conforme necessário. Você também
+pode usar o método {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} para
+animações ou esmaecimento.</p>
+
+<p class="note">
+<strong>Observação:</strong> a barra de status deve ter, quase sempre, um traçado distante da barra de ferramentas
+principal, exceto em casos em que haja imagens ricas de ponta a ponta, conteúdo de mídia por trás
+dessas barras e quando se usa degradê, para garantir que os ícones continuem visíveis.
+</p>
+
+<p>Ao personalizar as barras de navegação e de status, deixe-as transparentes ou modifique
+somente a barra de status. A barra de navegação deve permanecer preta em todos os outros casos.</p>
+
+
+<h2 id="Inheritance">Atribuir tema a visualizações individuais</h3>
+
+<p>Elementos nas definições do layout XML podem especificar o atributo <code>android:theme</code>,
+que referencia um recurso do tema. Esse atributo modifica o tema do elemento e quaisquer
+elementos-filho, o que é útil para alterar as paletas de cores do tema em uma parte específica
+de uma interface.</p>
diff --git a/docs/html-intl/intl/ru/design/get-started/principles.jd b/docs/html-intl/intl/ru/design/get-started/principles.jd
index 7f4977c..7e4ea12 100644
--- a/docs/html-intl/intl/ru/design/get-started/principles.jd
+++ b/docs/html-intl/intl/ru/design/get-started/principles.jd
@@ -14,8 +14,8 @@
 
 <h2 id="enchant-me">Постарайтесь понравиться пользователю</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="delight-me">Вызовите у пользователя восхищение неожиданными решениями</h4>
 <p>Красивые экраны, тщательно продуманная анимация или своевременные звуковые сигналы создают у пользователя
@@ -23,7 +23,7 @@
 что его возможности не ограничены.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_delight.png">
 
@@ -32,15 +32,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="real-objects-more-fun">Реальные объекты доставляют больше удовольствия, чем кнопки и меню</h4>
-<p>Позвольте пользователю касаться объектов приложения и манипулировать ими. Это сокращает когнитивные усилия,
-необходимые для выполнения задачи, повышая эмоциональное удовлетворение.</p>
+<p>Позвольте пользователю касаться объектов приложения и манипулировать ими. Это делает
+понятнее процесс выполнения задачи, повышая эмоциональное удовлетворение.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_real_objects.png">
 
@@ -49,8 +49,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="make-it-mine">Позвольте пользователю сделать интерфейс индивидуальным</h4>
 <p>Люди любят вносить в интерфейс что-то личное, чтобы чувствовать себя более комфортно и считать, что всё под контролем. Предоставьте
@@ -58,7 +58,7 @@
 выполнению основных задач.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_make_it_mine.png">
 
@@ -67,15 +67,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="get-to-know-me">Изучите пользователя</h4>
-<p>Постепенно выясняйте предпочтения пользователя Вместо того, чтобы снова и снова заставлять его выбирать одно и то же,
+<p>Постепенно выясняйте предпочтения пользователя. Вместо того, чтобы снова и снова заставлять его выбирать одно и то же,
  сделайте непосредственно доступными ранее выбранные варианты.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_get_to_know_me.png">
 
@@ -84,14 +84,14 @@
 
 <h2 id="simplify-my-life">Упростите жизнь пользователю</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="keep-it-brief">Будьте лаконичны</h4>
 <p>Используйте короткие фразы с простыми словами. Люди, скорее всего, пропустят длинные предложения.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_keep_it_brief.png">
 
@@ -100,15 +100,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="pictures-faster-than-words">Картинки воспринимаются быстрее чем слова</h4>
 <p>Используйте картинки в своих объяснениях. Они завладевают вниманием и действуют гораздо эффективнее
 слов.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_pictures.png">
 
@@ -117,15 +117,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="decide-for-me">Принимайте решения за пользователя, но оставляйте последнее слово за ним</h4>
 <p>Не задавайте пользователю лишних вопросов и действуйте наиболее разумным образом. Слишком широкий выбор вызывает чувство
 растерянности. Если существует вероятность, что ваш выбор не устроит пользователя, предоставьте ему возможность отмены.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_decide_for_me.png">
 
@@ -134,15 +134,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="only-show-when-i-need-it">Показывайте только самое необходимое и в нужный момент времени</h4>
 <p>Люди не в состоянии справиться сразу с большим количеством информации. Разбивайте задачи и информацию на небольшие легко
 воспринимаемые части. Скройте несущественные на данный момент опции и обучайте пользователя по ходу дела.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_information_when_need_it.png">
 
@@ -151,15 +151,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="always-know-where-i-am">Пользователь всегда должен знать, в каком месте приложения он находится</h4>
 <p>Придайте пользователю уверенность, что он не заблудился. Сделайте так, чтобы экраны в вашем приложении отличались друг от друга, и
 используйте переходы, чтобы показать связь между экранами. Обеспечивайте обратную связь от выполняемых задач.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_navigation.png">
 
@@ -168,8 +168,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="never-lose-my-stuff">Ни в коем случае не теряйте данные пользователей</h4>
 <p>Сохраняйте данные, на создание которых пользователь потратил свое время, и обеспечьте ему доступ к этой информации из любого места. Запоминайте настройки
@@ -177,7 +177,7 @@
 обновление приложения.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_never_lose_stuff.png">
 
@@ -186,15 +186,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="looks-same-should-act-same">Внешне похожие элементы должны вести себя одинаково</h4>
 <p>Помогите людям распознать функциональные различия, сделав их визуально отличимыми.
 Избегайте ситуаций, в которых разные места приложения выглядят похоже, но работают по-разному при одних тех же исходных данных.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_looks_same.png">
 
@@ -203,15 +203,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="interrupt-only-if-important">Прерывайте пользователя только в действительно важных ситуациях</h4>
 <p>Подобно хорошему секретарю, приложение должно оградить пользователя от несущественных мелочей. Люди не любят отвлекаться,
 и беспокоить их следует только в исключительно серьезных или не терпящих отлагательства ситуациях.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_important_interruption.png">
 
@@ -220,8 +220,8 @@
 
 <h2 id="make-me-amazing">Постарайтесь приятно удивить пользователя</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="give-me-tricks">Предоставьте пользователю привычные приемы</h4>
 <p>У людей повышается самооценка, когда они могут разобраться в чем-либо самостоятельно. Сделайте ваше приложение простым в освоении
@@ -229,7 +229,7 @@
 является хорошим навигационным приемом.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_tricks.png">
 
@@ -238,16 +238,16 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="its-not-my-fault">Пользователь ни в чем не виноват</h4>
 <p>Будьте корректны, подсказывая пользователю, как выйти из сложного положения. Никто не хочет чувствовать себя бестолковым, имея дело с вашим
 приложением. При возникновении проблем дайте четкие указания по восстановлению, но избавьте пользователя от технических деталей.
-В идеальном варианте приложение способно самостоятельно исправить ситуацию.</p>
+Если приложение само исправит ситуацию, будет еще лучше.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_error.png">
 
@@ -256,15 +256,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="sprinkle-encouragement">Не скупитесь на поддержку пользователя</h4>
 <p>Разбейте сложные задачи на более мелкие, легко выполнимые этапы. Обеспечьте обратную связь, 
 даже при незначительных операциях.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_sprinkle_encouragement.png">
 
@@ -273,16 +273,16 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="do-heavy-lifting-for-me">Выполняйте за пользователя черную работу</h4>
-<p>Дайте новичкам возможность почувствовать себя экспертами, реализовав операции о которых они и не подозревали. Например,
+<p>Дайте новичкам возможность почувствовать себя экспертами, реализовав операции, о которых они и не подозревали. Например,
 ярлыки, объединяющие несколько фотоэффектов, позволят превратить любительские фотографии в шедевры всего за
 несколько шагов.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_heavy_lifting.png">
 
@@ -291,15 +291,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="make-important-things-fast">Важные действия должны происходить быстро</h4>
 <p>Не все действия равноценны. Решите, какие функции вашего приложения являются самыми важными, и обеспечьте возможность 
 быстро найти и использовать их. Например, это может быть кнопка спуска затвора в фотокамере или кнопка паузы в музыкальном плеере.</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_make_important_fast.png">
 
diff --git a/docs/html-intl/intl/ru/design/material/index.jd b/docs/html-intl/intl/ru/design/material/index.jd
index 2cfd91e..da0352a 100644
--- a/docs/html-intl/intl/ru/design/material/index.jd
+++ b/docs/html-intl/intl/ru/design/material/index.jd
@@ -1,7 +1,7 @@
-page.title=Material Design
-page.tags=Material Design
-page.type=design
-page.image=design/material/images/MaterialLight.png
+page.title=Material Design для Android
+page.tags=Material,design
+page.type=разработка
+page.image=images/cards/design-material-for-android_2x.jpg
 
 @jd:body
 
@@ -92,7 +92,7 @@
 <div style="width:700px;margin-top:25px;margin-bottom:20px">
 <div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
   <img src="{@docRoot}design/material/images/list_mail.png" width="500" height="426" />
-  <p>Виджет <code>RecyclerView</code> Представляет собой более гибкую версию <code>ListView</code>,
+  <p>Виджет <code>RecyclerView</code> представляет собой более гибкую версию <code>ListView</code>,
 которая поддерживает различные типы макетов и способствует повышению производительности.</p>
 </div>
 <div style="float:left;width:250px;margin-right:0px;">
@@ -137,9 +137,9 @@
 <h3>Анимация</h3>
 
 <p>Новые API-интерфейсы анимации позволяют создавать нестандартную анимацию для реакции на касание в элементах пользовательского интерфейса,
-изменения состояниия представления и переходов между действиями.</p>
+изменения состояния представления и переходов между действиями.</p>
 
-<p>Эти API-интерфейсы позволяют</p>
+<p>Эти API-интерфейсы позволяют:</p>
 
 <ul>
 <li style="margin-bottom:15px">
@@ -149,7 +149,7 @@
 скрывать и отображать представление с помощью анимации для <strong>кругового появления</strong>;
 </li>
 <li style="margin-bottom:15px">
-переключаться меду действиями с помощью настраиваемой анимации для <strong>переходов между действиями</strong>;
+переключаться между действиями с помощью настраиваемой анимации для <strong>переходов между действиями</strong>;
 </li>
 <li style="margin-bottom:15px">
 создавать более естественное движение с помощью анимации для <strong>перемещения по кривой</strong>;
@@ -158,14 +158,14 @@
 анимировать изменение одного или нескольких свойств представления с помощью анимации для <strong>изменения состояния представления</strong>;
 </li>
 <li style="margin-bottom:15px">
-отображать анимацию в <strong>графических элементах списков состояний</strong> в помежутке между изменением состояний представления.
+отображать анимацию в <strong>графических элементах списков состояний</strong> в промежутке между изменением состояний представления.
 </li>
 </ul>
 
-<p>Анимация для реакции на касание встроена а некоторые стандартные представления, например, кнопки. Новые API-интерфейсы
+<p>Анимация для реакции на касание встроена в некоторые стандартные представления, например кнопки. Новые API-интерфейсы
 позволяют разработчику настраивать эти анимации и добавлять их в свои нестандартные представления.</p>
 
-<p>Дополнительные сведения, см. в разделе <a href="{@docRoot}training/material/animations.html">Определение настраиваемой 
+<p>Дополнительные сведения см. в разделе <a href="{@docRoot}training/material/animations.html">Определение настраиваемой 
 анимации</a>.</p>
 
 
diff --git a/docs/html-intl/intl/ru/design/patterns/compatibility.jd b/docs/html-intl/intl/ru/design/patterns/compatibility.jd
new file mode 100644
index 0000000..fd1f5a8
--- /dev/null
+++ b/docs/html-intl/intl/ru/design/patterns/compatibility.jd
@@ -0,0 +1,70 @@
+page.title=Обратная совместимость
+page.tags="support"
+page.metaDescription=Примечания о том, как Android 4.x адаптирует пользовательский интерфейс, разработанный для ОС и оборудования более старых версий.
+@jd:body
+
+<a class="notice-developers" href="{@docRoot}training/basics/supporting-devices/index.html">
+  <div>
+    <h3>Документация для разработчиков</h3>
+    <p>Поддержка различных устройств</p>
+  </div>
+</a>
+
+<p>Существенные изменения в Android 3.0, включенные в новую версию:</p>
+<ul>
+<li>Прекращено использование аппаратных клавиш навигации ("Назад", "Меню", "Поиск", "Главная"). Вместо них за навигацию теперь отвечают
+ виртуальные элементы управления ("Назад", "Главная", "Последние").</li>
+<li>Функциональный шаблон для использования меню на панелях действий.</li>
+</ul>
+<p>Эти изменения в Android 4.0 для планшетов также реализованы в платформе для телефонов.</p>
+
+<h2 id="older-hardware">Адаптация Android 4.0 для оборудования и приложений более старых версий</h2>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>Телефоны с виртуальными элементами навигации</h4>
+<p>В приложениях Android, созданных для Android 3.0 и более поздних версий, действия отображаются на панели действий. Действия, которые не помещаются на этой панели или не являются существенными, чтобы размещать их в элементе верхнего уровня, отображаются в панели дополнительных действий.
+
+</p>
+<p>Чтобы открыть панель дополнительных действий, необходимо коснуться ее значка в панели действий.</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_virtual_nav.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>Телефоны с физическими клавишами навигации</h4>
+<p>На телефонах Android с традиционными аппаратными клавишами отсутствует виртуальная панель навигации (в нижней части экрана).
+ Вместо этого для отображения дополнительных действий используется аппаратная клавиша меню. Открывающееся в результате нажатия этой клавиши
+окно оформлено в том же стиле, что и в примере выше, однако отображается оно в нижней части экрана.</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_physical_buttons.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>Устаревшие приложения на телефонах с виртуальными элементами навигации</h4>
+<p>Если запустить приложение, созданное для Android 2.3 или более ранних версий, на телефоне с виртуальными элементами
+навигации, то панель дополнительных действий отобразится справа в виртуальной панели навигации. Можно
+коснуться элемента управления, чтобы отобразить действия приложения в стиле традиционного меню Android.</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_legacy_apps.png">
+
+  </div>
+</div>
diff --git a/docs/html-intl/intl/ru/design/patterns/confirming-acknowledging.jd b/docs/html-intl/intl/ru/design/patterns/confirming-acknowledging.jd
index 99a0d17..d3f8bdd 100644
--- a/docs/html-intl/intl/ru/design/patterns/confirming-acknowledging.jd
+++ b/docs/html-intl/intl/ru/design/patterns/confirming-acknowledging.jd
@@ -4,12 +4,12 @@
 
 <p>В некоторых ситуациях, когда пользователь выполняет действие в вашем приложении, полезно в текстовом виде <em>запросить подтверждение</em> этого действия или <em>отобразить уведомление</em> о его выполнении.</p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <img src="{@docRoot}design/media/confirm_ack_confirming.png">
     <p><strong>Подтверждение</strong> — это просьба к пользователю подтвердить, что он действительно хочет, чтобы запущенное действие было выполнено. Иногда подтверждение отображается вместе с предупреждением или важной информацией относительно действия, которую пользователь должен принять во внимание.</p>
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/confirm_ack_acknowledge.png">
     <p><strong>Уведомление</strong> отображает текст, позволяющий пользователю узнать о завершении действия. Это устраняет неопределенность в отношении неявных операций, которые выполняет система. В некоторых случаях уведомления отображаются вместе с возможностью отменить действие.</p>
   </div>
@@ -22,14 +22,14 @@
 <img src="{@docRoot}design/media/confirm_ack_flowchart.png">
 
 <h2>Подтверждение</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>Пример: Google Play Books</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_books.png">
-    <p>В этом примере пользователь пытается удалить книгу из своей библиотеки Play Google. Для подтверждения этого действия отображается <a href="{@docRoot}design/building-blocks/dialogs.html#alerts">оповещение</a>, поскольку пользователь должен понимать, что книга больше не будет доступна ни с одного устройства.</p>
+    <p>В этом примере пользователь пытается удалить книгу из своей библиотеки Google Play. Для подтверждения этого действия отображается <a href="{@docRoot}design/building-blocks/dialogs.html#alerts">оповещение</a>, поскольку пользователь должен понимать, что книга больше не будет доступна ни с одного устройства.</p>
     <p>При разработке диалогового окна подтверждения следует создать осмысленный заголовок, отражающий запрошенное действие.</p>
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <h4>Пример: Android Beam</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_beam.png">
     <p>Подтверждения не обязательно должны быть представлены в виде оповещения с двумя кнопками. После старта Android Beam пользователю предлагается прикоснуться к содержимому (в данном примере, к фотографии) для обмена данными. Если пользователь решит не продолжать, он просто ничего не предпримет.</p>
@@ -37,31 +37,31 @@
 </div>
 
 <h2>Уведомление</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
-    <h4>Пример: Сохранение оставленного черновика Gmail</h4>
+<div class="cols">
+  <div class="col-6">
+    <h4>Пример: сохранение оставленного черновика Gmail</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_draftsave.png">
     <p>В этом примере, если пользователь переходит назад или вверх от экрана составления писем Gmail (возможно, вследствие неожиданного события), текущий черновик автоматически сохраняется. Всплывающее уведомление обращает внимание пользователя на этот факт. Через несколько секунд оно исчезает.</p>
     <p>Отмена здесь неуместна, поскольку сохранение было инициировано приложением, а не пользователем. Кроме того, пользователь сможет без труда вернуться к написанию сообщения, перейдя к списку черновиков.</p>
 
   </div>
-  <div class="layout-content-col span-6">
-    <h4>Пример: Удаление переписки Gmail</h4>
+  <div class="col-6">
+    <h4>Пример: удаление переписки Gmail</h4>
     <img src="{@docRoot}design/media/confirm_ack_draft_deleted.png">
     <p>После того, как пользователь удалит переписку из Gmail, появляется уведомление с возможностью отмены действия. Оно остается, пока пользователь не предпримет постороннее действие, например, прокрутит список писем.</p>
   </div>
 </div>
 
 <h2>Отсутствие подтверждения или уведомления</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>Пример: +1</h4>
     <img style="padding: 33px 0 30px;" src="{@docRoot}design/media/confirm_ack_ex_plus1.png">
     <p><strong>Подтверждение не требуется</strong>. Если пользователь нажал +1 случайно, это не имеет большого значения. Он может просто нажать кнопку еще раз, чтобы отменить действие.</p>
     <p><strong>Уведомление не требуется</strong>. Пользователь увидит, что кнопка +1 поменяла состояние и стала красной. Это достаточно ясный сигнал.</p>
   </div>
-  <div class="layout-content-col span-7">
-    <h4>Пример: Удаление приложения с главного экрана</h4>
+  <div class="col-7">
+    <h4>Пример: удаление приложения с главного экрана</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_removeapp.png">
     <p><strong>Подтверждение не требуется</strong>. Это преднамеренное действие: пользователь должен перетащить элемент на относительно крупную отдельно расположенную цель. Поэтому случайности здесь практически невероятны. К тому же, если пользователь пожалеет о своем решении, ему потребуется всего несколько секунд, чтобы вернуть приложение.</p>
     <p><strong>Уведомление не требуется</strong>. Пользователь будет знать, что приложение удалено с главного экрана, потому что сам заставил его исчезнуть в результате перетаскивания.</p>
diff --git a/docs/html-intl/intl/ru/design/patterns/navigation.jd b/docs/html-intl/intl/ru/design/patterns/navigation.jd
index a65a8f6..3a0fc6e 100644
--- a/docs/html-intl/intl/ru/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/ru/design/patterns/navigation.jd
@@ -16,14 +16,14 @@
 инструкциям по применению кнопок "Назад" и "Вверх" сделает навигацию в вашем приложении предсказуемой и надежной с точки зрения пользователей.</p>
 <p>В Android 2.3 и в более ранних версиях для навигации внутри приложения использовалась системная кнопка <em>Назад</em>.
  С появлением панели действий в Android 3.0 стал доступен второй механизм 
-навигации, — кнопка <em>Вверх</em>, содержащая значок приложения и левую угловую скобку.</p>
+навигации – кнопка <em>Вверх</em>, содержащая значок приложения и левую угловую скобку.</p>
 
 <img src="{@docRoot}design/media/navigation_with_back_and_up.png">
 
 <h2 id="up-vs-back">Кнопки "Вверх" и "Назад"</h2>
 
 <p>Кнопка "Вверх" используется для навигации внутри приложения по иерархической структуре его
-экранов. Например, если на экране A отображается некоторый список, и при выборе какого-либо элемента открывается
+экранов. Например, если на экране A отображается некоторый список и при выборе какого-либо элемента открывается
 экран B (с подробной информацией об этом элементе), то на экране B должна присутствовать кнопка "Вверх"
  для возврата к экрану A.</p>
 <p>Если экран является самым верхним в приложении (то есть главным), он не должен содержать кнопку
@@ -34,7 +34,7 @@
 экранов, а не на иерархии приложения.</p>
 
 <p>Если предыдущий экран одновременно является иерархическим родителем текущего, 
-кнопка "Назад" имеет то же действие, что и кнопка "Вверх"&mdash;, и это случается довольно
+кнопка "Назад" имеет то же действие, что и кнопка "Вверх", &mdash; и это случается довольно
 часто. Однако, в отличие от кнопки "Вверх", гарантирующей, что пользователь остается в приложении, кнопка "Назад"
 может перевести его на главный экран или даже в другое приложение.</p>
 
@@ -57,7 +57,7 @@
 <h4>Изменение представления содержимого на экране</h4>
 <p>Изменение параметров представления содержимого на экране не сказывается на поведении кнопок "Вверх" и "Назад", — экран остается
 на прежнем месте в иерархии приложения, а история навигации не меняется.</p>
-<p>Примерами изменения представления являются</p>
+<p>Примерами изменения представления являются:</p>
 <ul>
 <li>переключение представлений с помощью вкладок или жестов прокрутки вправо/влево;</li>
 <li>переключение представлений с помощью раскрывающихся (или свернутых) вкладок;</li>
@@ -75,7 +75,7 @@
 <img src="{@docRoot}design/media/navigation_between_siblings_gmail.png">
 
 <p>Однако существует важное исключение из этого правила во время просмотра подробных представлений элементов, не связанных
-вместе ссылающимся списком, например&mdash;, приложений
+вместе ссылающимся списком, например приложений
 одного разработчика или альбомов одного исполнителя в Play Store. В этих случаях переход по каждой ссылке создает
 историю навигации, что заставляет кнопку "Назад" перебирать все ранее просмотренные экраны. Кнопка "Вверх" должна по-прежнему
 игнорировать эти связанные по смыслу экраны и осуществлять переход на последний просмотренный контейнерный экран.</p>
@@ -104,7 +104,7 @@
 </ul>
 
 <p>Что касается кнопки "Назад", необходимо обеспечить более предсказуемую навигацию, вставив в 
-в стек переходов назад полный путь навигации вверх к самому верхнему экрану приложения. Это позволит пользователям,
+стек переходов назад полный путь навигации вверх к самому верхнему экрану приложения. Это позволит пользователям,
 забывшим, как они вошли в приложение, перейти к его главному экрану перед выходом из
 приложения.</p>
 
@@ -122,8 +122,8 @@
 называются <em>косвенными</em>.</p>
 
 <p>Кнопка "Назад" действует не так, как в случае со стандартными (прямыми) уведомлениями. Нажав ее на промежуточном экране косвенного уведомления,
-пользователь вернется в точку, где было сгенерировано уведомление, &mdash;поскольку
-в стеке переходов назад не появились никакие дополнительные экраны. Если пользователь перейдет в приложение с
+пользователь вернется в точку, где было создано уведомление, поскольку
+в стеке обратных переходов не появилось дополнительных экранов. Если пользователь перейдет в приложение с
 промежуточного экрана, поведение кнопок "Вверх" и "Назад" будет таким же, как и при стандартных уведомлениях:
 навигация внутри приложения, а не возврат к промежуточному экрану.</p>
 
@@ -152,15 +152,15 @@
 
 <h2 id="between-apps">Навигация между приложениями</h2>
 
-<p>Одним из фундаментальных достоинств системы Android является способность приложений активировать друг
-друга, что дает пользователю возможность переходить непосредственно из одного приложения в другое. Например, 
+<p>Одним из фундаментальных достоинств системы Android является способность взаимного запуска приложений,
+что дает пользователю возможность переходить непосредственно из одного приложения в другое. Например, 
 приложение, которому нужно сделать снимок, может активировать приложение Camera, которое передаст фотографию
-вызвавшему приложению. Это огромное преимущество, как для разработчика, имеющего возможность без проблем воспользоваться
+вызвавшему его приложению. Это огромное преимущество как для разработчика, имеющего возможность без проблем воспользоваться
 кодом других приложений, так и для пользователя, получающего согласованный интерфейс для часто выполняемых
 действий.</p>
 
-<p>Чтобы разобраться в навигации между приложениями, необходимо разобраться в поведении платформы Android,
-которое обсуждается ниже.</p>
+<p>Чтобы разобраться в навигации между приложениями, необходимо понять поведение платформы Android,
+ обсуждаемое ниже.</p>
 
 <h4>Действия, задачи и намерения</h4>
 
@@ -168,28 +168,28 @@
 информацией и все действия, которые при этом может выполнить пользователь. Приложение представляет собой набор
 действий, состоящий как из действий, созданных разработчиком, так и из тех, которые выполняются с помощью других приложений.</p>
 
-<p><strong>Задача</strong> — последовательность действий, выполняемых пользователем для достижения цели. Отдельная
+<p><strong>Задача</strong> — это последовательность действий, выполняемых пользователем для достижения цели. Отдельная
 задача может использовать действия, заимствованные у одного или у нескольких
 различных приложений.</p>
 
-<p><strong>Намерение</strong> — механизм, позволяющий приложению сигнализировать, что ему требуется помощь
+<p><strong>Намерение</strong> — это механизм, позволяющий приложению сигнализировать, что ему требуется помощь
 другого приложения в выполнении некоторого действия. Действия, выполняемые приложением, могут указывать, на какие намерения
-они готовы отвечать. Для осуществления достаточно распространенных намерений, например, "Поделиться", у пользователя может быть установлено несколько приложений,
+они готовы отвечать. Для осуществления достаточно распространенных намерений, например "Поделиться", у пользователя может быть установлено несколько приложений,
  способных выполнить соответствующий запрос.</p>
 
 <h4>Пример: навигация между приложениями для поддержки совместного использования ресурсов</h4>
 
 <p>Чтобы понять, как действия, задачи и намерения взаимодействуют друг с другом, разберемся, как одно приложение позволяет пользователям
-поделиться содержимым с помощью другого приложения. Например, запуск приложения Play Store из главного экрана создает
-новую задачу, Task A (см. рисунок ниже). Когда пользователь выполнит навигацию по Play Store и коснется интересующей его книги,
-чтобы просмотреть информацию о ней, он останется в том же приложении, расширив его возможности с помощью добавленных действий. Запуск 
+поделиться содержимым с помощью другого приложения. Например, при запуске приложения Play Store с главного экрана создается
+новая задача, Task A (см. рисунок ниже). Когда пользователь выполнит навигацию по Play Store и коснется интересующей его книги,
+чтобы просмотреть информацию о ней, он остается в той же задаче, расширяя ее с помощью добавленных действий. Запуск 
 действия "Поделиться" выводит перед пользователем диалоговое окно со списком действий (из разных приложений),
 зарегистрированных для выполнения намерения "Поделиться".</p>
 
 <img src="{@docRoot}design/media/navigation_between_apps_inward.png">
 
 <p>Если пользователь предпочтет поделиться информацией через Gmail, действие "Написать" приложения Gmail добавляется как продолжение задачи
-Task A&mdash;, и никакая новая задача не создается. Если в фоновом режиме работает собственная задача Gmail, на нее это никак
+Task A, и никакая новая задача не создается. Если в фоновом режиме работает собственная задача Gmail, на нее это никак
 не повлияет.</p>
 
 <p>Если во время действия "Составление сообщения" пользователь отправит сообщение или коснется кнопки "Назад", он вернется к
@@ -199,7 +199,7 @@
 <img src="{@docRoot}design/media/navigation_between_apps_back.png">
 
 <p>Однако, коснувшись кнопки "Вверх" во время действия "Составление сообщения", пользователь выскажет пожелание остаться в приложении 
-Gmail. Откроется экран действия "Переписка" приложения Gmail, и для него будет создано новая задача Task B. Новые задачи
+Gmail. Откроется экран действия "Переписка" приложения Gmail, и для него будет создана новая задача Task B. Новые задачи
 всегда имеют корень на главном экране, поэтому касание кнопки "Назад" на экране переписки возвращает пользователя именно туда.</p>
 
 <img src="{@docRoot}design/media/navigation_between_apps_up.png">
diff --git a/docs/html-intl/intl/ru/guide/components/activities.jd b/docs/html-intl/intl/ru/guide/components/activities.jd
new file mode 100644
index 0000000..5f55a35
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/components/activities.jd
@@ -0,0 +1,756 @@
+page.title=Операции
+page.tags=операция,намерение
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Содержание документа</h2>
+<ol>
+  <li><a href="#Creating">Создание операции</a>
+    <ol>
+      <li><a href="#UI">Реализация пользовательского интерфейса</a></li>
+      <li><a href="#Declaring">Объявление операции в манифесте</a></li>
+    </ol>
+  </li>
+  <li><a href="#StartingAnActivity">Запуск операции</a>
+    <ol>
+      <li><a href="#StartingAnActivityForResult">Запуск операции для получения результата</a></li>
+    </ol>
+  </li>
+  <li><a href="#ShuttingDown">Завершение операции</a></li>
+  <li><a href="#Lifecycle">Управление жизненным циклом операций</a>
+    <ol>
+      <li><a href="#ImplementingLifecycleCallbacks">Реализация обратных вызовов жизненного цикла</a></li>
+      <li><a href="#SavingActivityState">Сохранение состояния операции</a></li>
+      <li><a href="#ConfigurationChanges">Обработка изменений в конфигурации</a></li>
+      <li><a href="#CoordinatingActivities">Согласование операций</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>Ключевые классы</h2>
+<ol>
+  <li>{@link android.app.Activity}</li>
+</ol>
+
+<h2>См. также:</h2>
+<ol>
+  <li><a href="{@docRoot}guide/components/tasks-and-back-stack.html">Задачи и стек
+переходов назад</a></li>
+</ol>
+
+</div>
+</div>
+
+
+
+<p>{@link android.app.Activity} — это компонент приложения, который выдает экран,
+ и с которым пользователи могут взаимодействовать для выполнения каких-либо действий, например набрать номер телефона, сделать фото, отправить письмо или
+просмотреть карту. Каждой операции присваивается окно для прорисовки соответствующего пользовательского интерфейса. Обычно окно
+отображается во весь экран, однако его размер может быть меньше, и оно может размещаться поверх других
+окон.</p>
+
+<p> Как правило, приложение состоит из нескольких операций, которые слабо 
+связаны друг с другом. Обычно одна из операций в приложении обозначается как «основная», 
+предлагаемая пользователю при первом запуске приложения. В свою очередь, каждая
+операция может запустить другую операцию для выполнения различных действий. Каждый раз, когда
+запускается новая операция, предыдущая операция останавливается, однако система сохраняет ее
+в стеке («стек переходов назад»). При запуске новой операции она помещается в стек переходов назад и
+отображается для пользователя. Стек переходов назад работает по принципу «последним вошёл — первым вышел»,
+поэтому после того как пользователь завершил текущую операцию и нажал кнопку <em>Назад</em>, текущая операция
+удаляется из стека (и уничтожается), и возобновляется предыдущая операция. (Подробные сведения о стеке
+переходов назад представлены в статье <a href="{@docRoot}guide/components/tasks-and-back-stack.html">Задачи и стек
+переходов назад</a>.)</p>
+
+<p>Когда операция останавливается по причине запуска новой операции, для уведомления об изменении ее состояния
+используются методы обратного вызова жизненного цикла операции.
+Существует несколько таких методов, которые может принимать операция вследствие изменения своего состояния
+&mdash; создание операции, ее остановка, возобновление или уничтожение системой; также
+каждый обратный вызов представляет возможность выполнить определенное действие,
+подходящее для соответствующего изменения состояния. Например, в случае остановки операция должна освободить любые
+крупные объекты, например, подключение к сети или базе данных. При возобновлении операции вы можете
+повторно получить необходимые ресурсы и возобновить выполнение прерванных действий. Такие изменения состояния
+являются частью жизненного цикла операции.</p>
+
+<p>Далее в этом документе рассматриваются основы создания и использования операций,
+включая полное описание жизненного цикла операции, чтобы вы могли лучше понять, как следует управлять
+переходами между различными состояниями операции.</p>
+
+
+
+<h2 id="Creating">Создание операции</h2>
+
+<p>Чтобы создать операцию, сначала необходимо создать подкласс класса {@link android.app.Activity} (или
+воспользоваться существующим его подклассом). В таком подклассе необходимо реализовать методы обратного вызова, которые
+вызывает система при переходе операции из одного состояния своего жизненного цикла в другое, например при
+создании, остановке, возобновлении или уничтожении операции. Вот два наиболее важных метода
+обратного вызова:</p>
+
+<dl>
+  <dt>{@link android.app.Activity#onCreate onCreate()}</dt>
+  <dd>Этот метод необходимо обязательно реализовать, поскольку система вызывает его при создании вашей
+операции. В своей реализации вам необходимо инициализировать ключевые компоненты
+операции.
+    Наиболее важно именно здесь вызвать {@link android.app.Activity#setContentView
+setContentView()} для определения макета пользовательского интерфейса операции.</dd>
+  <dt>{@link android.app.Activity#onPause onPause()}</dt>
+  <dd>Система вызывает этот метод в качестве первого признака выхода пользователя из
+операции (однако это не всегда означает, что операция будет уничтожена). Обычно именно здесь
+необходимо применять любые изменения, которые должны быть сохранены помимо текущего сеанса работы пользователя (поскольку
+пользователь может не вернуться назад).</dd>
+</dl>
+
+<p>Существуют также и некоторые другие методы обратного вызова жизненного цикла, которые необходимо использовать для того, чтобы обеспечить
+плавный переход между операциями, а также для обработки непредвиденных нарушений в работе операции, в результате которых она может быть
+остановлена или даже уничтожена. Более подробное описание всех методов обратного вызова жизненного цикла представлены в разделе,
+посвященном <a href="#Lifecycle">управлению жизненным циклом операций</a>.</p>
+
+
+
+<h3 id="UI">Реализация пользовательского интерфейса</h3>
+
+<p> Для реализации пользовательского интерфейса операции используется иерархия представлений &mdash;объектов, полученных из
+класса {@link android.view.View}.  Каждое представление отвечает за определенную прямоугольную область
+окна операции и может реагировать на действия пользователей. Например, представлением может быть
+кнопка, нажатие на которую приводит к выполнению определенного действия.</p>
+
+<p>В Android предусмотрен набор уже готовых представлений, которые можно использовать для создания дизайна макета и его
+организации. Виджеты — это представления с визуальными (и интерактивными) элементами, например, 
+кнопками, текстовыми полями, чекбоксами или просто изображениями. Макеты — это представления, полученные из класса {@link
+android.view.ViewGroup}, обеспечивающие уникальную модель компоновки для своих дочерних представлений, таких как линейный
+макет, сетка или относительный макет. Также можно создать подкласс для классов {@link android.view.View} и
+{@link android.view.ViewGroup} (или воспользоваться существующими подклассами), чтобы создать собственные виджеты и 
+макеты, и затем применить их к макету своей операции.</p>
+
+<p>Чаще всего для задания макета с помощью представлений используется XML-файл макета, сохраненный в
+ресурсах приложения. Таким образом вы можете хранить дизайн пользовательского интерфейса отдельно от
+исходного кода, который служит для задания поведения операции. Чтобы задать макет в качестве пользовательского интерфейса
+операции, можно использовать метод {@link android.app.Activity#setContentView(int) setContentView()}, передав в него
+идентификатор ресурса для макета. Однако вы также можете создать новые {@link android.view.View} в коде вашей
+операции и создать иерархию представлений. Для этого вставьте {@link
+android.view.View} в {@link android.view.ViewGroup}, а затем используйте этот макет, передав корневой объект
+{@link android.view.ViewGroup} в метод {@link android.app.Activity#setContentView(View)
+setContentView()}.</p>
+
+<p>Подробные сведения о создании пользовательского интерфейса см. в статье <a href="{@docRoot}guide/topics/ui/index.html">Пользовательский интерфейс</a>.</p>
+
+
+
+<h3 id="Declaring">Объявление операции в манифесте</h3>
+
+<p>Чтобы операция стала доступна системе, ее необходимо объявить в файле
+манифеста. Для этого откройте файл манифеста и добавьте элемент <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> в
+качестве дочернего для элемента
+<a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>. Например:</p>
+
+<pre>
+&lt;manifest ... &gt;
+  &lt;application ... &gt;
+      &lt;activity android:name=".ExampleActivity" /&gt;
+      ...
+  &lt;/application ... &gt;
+  ...
+&lt;/manifest &gt;
+</pre>
+
+<p>Существует несколько других атрибутов, которые можно включить в этот элемент, чтобы определить такие
+свойства, как метка операции, значок операции или тема оформления для пользовательского интерфейса операции.
+Единственным обязательным атрибутом является <a href="{@docRoot}guide/topics/manifest/activity-element.html#nm">{@code android:name}</a>
+&mdash; он определяет имя класса операции. После
+публикации вашего приложения вам не следует переименовывать его, поскольку это может нарушить некоторые
+функциональные возможности приложения, например, ярлыки приложения (ознакомьтесь с публикацией <a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">Вещи
+, которые нельзя менять</a> в блоге разработчиков).</p>
+
+<p>Дополнительные сведения об объявлении операции
+в манифесте см. в справке по элементу <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>.</p>
+
+
+<h4>Использование фильтров намерений</h4>
+
+<p>Элемент <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> также может задавать различные фильтры намерений &mdash; с помощью элемента <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> &mdash; для объявления того, как другие компоненты приложения
+могут активировать операцию.</p>
+
+<p>При создании нового приложения с помощью инструментов Android SDK в заготовке операции,
+создаваемой автоматически, имеется фильтр намерений, который объявляет операцию.
+Эта операция реагирует на выполнение «основного» действия, и ее следует поместить в категорию переходсредства запуска. Фильтр намерений
+выглядит следующим образом.</p>
+
+<pre>
+&lt;activity android:name=".ExampleActivity" android:icon="@drawable/app_icon"&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p>Элемент <a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> указывает, что это «основная» точка входа в приложение. Элемент <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a>указывает, что эту операцию следует указать в
+средстве запуска приложений системы (чтобы пользователи могли запускать эту операцию).</p>
+
+<p>Если приложение планируется создать самодостаточным и запретить другим приложениям активировать
+его операции, то других фильтров намерений создавать не нужно. В этом случае только в одной операции
+должно иметься «основное» действие, и ее следует поместить в категорию средства запуска, как в примере выше. В операциях,
+которые не должны быть доступны для других приложений, не следует включать фильтры намерений.
+Вы можете самостоятельно запустить такие операции с помощью явных намерений (как описывается в следующем разделе).</p>
+
+<p>Однако, если вам необходимо, чтобы операция реагировала на неявные намерения,
+получаемые от других приложений (а также из вашего приложения), для операции необходимо определить дополнительные фильтры
+намерений. Для каждого типа намерения, на который необходимо реагировать, необходимо указать объект <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a>, включающий элемент
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> и необязательный элемент <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> или <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
+&lt;data&gt;}</a> (или оба этих элемента). Эти элементы определяют тип намерения, на который может реагировать
+ваша операция.</p>
+
+<p>Дополнительные сведения о том, как операции могут реагировать на намерения, приведены в статье <a href="{@docRoot}guide/components/intents-filters.html">Намерения и фильтры намерений</a>.
+</p>
+
+
+
+<h2 id="StartingAnActivity">Запуск операции</h2>
+
+<p>Для запуска другой операции достаточно вызвать метод {@link android.app.Activity#startActivity
+startActivity()}, передав в него объект {@link android.content.Intent}, который описывает запускаемую
+операцию. В намерении указывается либо точная операция для запуска, либо описывается
+тип операции, которую вы хотите выполнить (после чего система выбирает для вас подходящую
+операцию, которая
+может даже находиться в другом приложении). Намерение также может содержать небольшой объем данных,
+которые будут использоваться запущенной операцией.</p>
+
+<p>При работе с собственным приложением зачастую требуется лишь запустить нужную операцию.
+ Для этого необходимо создать намерение, которое явно определяет требуемую операцию
+с помощью имени класса. Ниже представлен пример запуска одной операцией другой операции с именем {@code
+SignInActivity}.</p>
+
+<pre>
+Intent intent = new Intent(this, SignInActivity.class);
+startActivity(intent);
+</pre>
+
+<p>Однако в вашем приложении также может потребоваться выполнить некоторое действие, например, отправить письмо, текстовое
+сообщение или обновить статус, используя данные из вашей операции. В этом случае в вашем приложении могут
+отсутствовать такие действия, поэтому вы можете воспользоваться операциями
+из других приложений, имеющихся на устройстве, которые могут выполнять требуемые действия. Как раз в этом случае
+намерения особенно полезны &mdash; можно создать намерение, которое описывает необходимое действие,
+после чего система
+запускает его из другого приложения. При наличии
+нескольких операций, которые могут обработать намерение, пользователь может выбирать, какое из них следует использовать. Например,
+если пользователю требуется предоставить возможность отправить электронное письмо, можно создать
+следующее намерение:</p>
+
+<pre>
+Intent intent = new Intent(Intent.ACTION_SEND);
+intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
+startActivity(intent);
+</pre>
+
+<p>Дополнительный компонент {@link android.content.Intent#EXTRA_EMAIL}, добавленный в намерение, представляет собой строковый массив
+адресов электронной почты для отправки письма. Когда почтовая программа реагирует на это
+намерение, она считывает дополнительно добавленный строковый массив и помещает имеющиеся в нем адреса в поле получателя
+в окне создания письма. При этом запускается операция почтовой программы, а после того, как
+пользователь завершит требуемые действия, возобновляется ваша операция.</p>
+
+
+
+
+<h3 id="StartingAnActivityForResult">Запуск операции для получения результата</h3>
+
+<p>В некоторых случаях после запуска операции может потребоваться получить результат. Для этого
+вызовите метод {@link android.app.Activity#startActivityForResult
+startActivityForResult()} (вместо {@link android.app.Activity#startActivity
+startActivity()}). Чтобы получить результат после выполнения последующей
+операции, реализуйте метод обратного
+вызова {@link android.app.Activity#onActivityResult onActivityResult()}. По завершении последующей операции она возвращает результат в объекте {@link
+android.content.Intent}
+в вызванный метод {@link android.app.Activity#onActivityResult onActivityResult()}.</p>
+
+<p>К примеру, пользователю потребуется выбрать один из контактов, чтобы ваша операция могла
+выполнить некоторые действия с информацией об этом контакте. Ниже представлен пример создания такого намерения
+и обработки результата.</p>
+
+<pre>
+private void pickContact() {
+    // Create an intent to "pick" a contact, as defined by the content provider URI
+    Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
+    startActivityForResult(intent, PICK_CONTACT_REQUEST);
+}
+
+&#64;Override
+protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+    // If the request went well (OK) and the request was PICK_CONTACT_REQUEST
+    if (resultCode == Activity.RESULT_OK &amp;&amp; requestCode == PICK_CONTACT_REQUEST) {
+        // Perform a query to the contact's content provider for the contact's name
+        Cursor cursor = getContentResolver().query(data.getData(),
+        new String[] {Contacts.DISPLAY_NAME}, null, null, null);
+        if (cursor.moveToFirst()) { // True if the cursor is not empty
+            int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
+            String name = cursor.getString(columnIndex);
+            // Do something with the selected contact's name...
+        }
+    }
+}
+</pre>
+
+<p>В этом примере демонстрируется базовая логика, которой следует руководствоваться при использовании метода {@link
+android.app.Activity#onActivityResult onActivityResult()} для обработки результата
+выполнения операции. Первое условие проверяет, успешен ли запрос, и если он успешен, то результат для
+{@code resultCode} будет {@link android.app.Activity#RESULT_OK}; также проверяется, известен ли запрос,
+для которого получен этот результат, и в этом случае {@code requestCode} соответствует
+второму параметру, отправленному в метод {@link android.app.Activity#startActivityForResult
+startActivityForResult()}. Здесь код обрабатывает результат выполнения операции путем запроса данных,
+возвращенных в {@link android.content.Intent} (параметр {@code data}).</p>
+
+<p>При этом {@link
+android.content.ContentResolver} выполняет запрос к поставщику контента, который возвращает объект
+{@link android.database.Cursor}, обеспечивающий считывание запрошенных данных. Дополнительные сведения представлены в статье
+<a href="{@docRoot}guide/topics/providers/content-providers.html">Поставщики контента</a>.</p>
+
+<p>Дополнительные сведения об использовании намерений см. в статье <a href="{@docRoot}guide/components/intents-filters.html">Намерения и фильтры
+намерений</a>.</p>
+
+
+<h2 id="ShuttingDown">Завершение операции</h2>
+
+<p>Для завершения операции достаточно вызвать ее метод {@link android.app.Activity#finish
+finish()}. Также для завершения отдельной операции, запущенной ранее, можно вызвать метод
+{@link android.app.Activity#finishActivity finishActivity()}.</p>
+
+<p class="note"><strong>Примечание.</strong> В большинстве случаев вам не следует явно завершать операцию
+с помощью этих методов. Как указано в следующем разделе, посвященном управлению жизненным циклом операции, система
+Android выполняет такое управление за вас, поэтому вам не нужно завершать ваши
+собственные операции. Вызов этих методов может отрицательно сказаться на ожидаемом
+поведении приложения. Их следует использовать исключительно тогда, когда вы абсолютно не хотите, чтобы пользователь возвращался к этому
+экземпляру операции.</p>
+
+
+<h2 id="Lifecycle">Управление жизненным циклом операций</h2>
+
+<p>Управление жизненным циклом операций путем реализации методов обратного вызова
+имеет важное значение при разработке надежных
+и гибких приложений. На жизненный цикл операции напрямую влияют его связи
+с другими операциями, его задачами и стеком переходов назад.</p>
+
+<p>Существует всего три состояния операции:</p>
+
+<dl>
+  <dt><i>Возобновлена</i></dt>
+    <dd>Операция выполняется на переднем плане экрана и отображается для пользователя. (Это состояние
+также иногда называется «Выполняется».)</dd>
+
+  <dt><i>Приостановлена</i></dt>
+    <dd>На переднем фоне выполняется другая операция, которая отображается для пользователя, однако эта операция по-прежнему не скрыта. То есть 
+поверх текущей операции отображается другая операция, частично прозрачная или не занимающая 
+полностью весь экран. Приостановленная операция полностью активна (объект {@link android.app.Activity}
+по-прежнему находится в памяти, в нем сохраняются все сведения о состоянии и информация об элементах, и он также остается связанным с
+диспетчером окон), однако в случае острой нехватки памяти система может завершить ее.</dd>
+
+  <dt><i>Остановлена</i></dt>
+    <dd>Операция полностью перекрывается другой операцией (теперь она выполняется в
+фоновом режиме). Остановленная операция по-прежнему активна (объект {@link android.app.Activity}
+по-прежнему находится в памяти, в нем сохраняются все сведения о состоянии и информация об элементах, но объект больше <em>не</em>
+связан с диспетчером окон). Однако операция больше не видна пользователю, и в случае нехватки памяти система
+может завершить ее.</dd>
+</dl>
+
+<p>Если операция приостановлена или полностью остановлена, система может очистить ее из памяти путем 
+завершения самой операции (с помощью метода {@link android.app.Activity#finish finish()}) или просто завершить ее
+процесс.  В случае повторного открытия операции (после ее завершения) ее потребуется создать
+полностью.</p>
+
+
+
+<h3 id="ImplementingLifecycleCallbacks">Реализация обратных вызовов жизненного цикла</h3>
+
+<p>При переходе операции из одного вышеописанного состояния в другое, уведомления об этом 
+реализуются через различные методы обратного вызова. Все методы обратного вызова представляют собой привязки, которые
+можно переопределить для выполнения подходящего действия при изменении состояния операции. Указанная ниже базовая
+операция включает каждый из основных методов жизненного цикла.</p>
+
+
+<pre>
+public class ExampleActivity extends Activity {
+    &#64;Override
+    public void {@link android.app.Activity#onCreate onCreate}(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // The activity is being created.
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onStart onStart()} {
+        super.onStart();
+        // The activity is about to become visible.
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onResume onResume()} {
+        super.onResume();
+        // The activity has become visible (it is now "resumed").
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onPause onPause()} {
+        super.onPause();
+        // Another activity is taking focus (this activity is about to be "paused").
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onStop onStop()} {
+        super.onStop();
+        // The activity is no longer visible (it is now "stopped")
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onDestroy onDestroy()} {
+        super.onDestroy();
+        // The activity is about to be destroyed.
+    }
+}
+</pre>
+
+<p class="note"><strong>Примечание.</strong> При реализации этих методов жизненного цикла
+всегда вызывайте реализацию суперкласса, прежде чем выполнять какие-либо действия, как показано в примерах выше.</p>
+
+<p>Вместе все эти методы определяют весь жизненный цикл операции. С помощью реализации этих
+методов можно отслеживать три вложенных цикла в жизненном цикле операции: </p>
+
+<ul>
+<li><b>Весь жизненный цикл</b> операции происходит между вызовом метода {@link
+android.app.Activity#onCreate onCreate()} и вызовом метода {@link
+android.app.Activity#onDestroy}. Ваша операция должна выполнить настройку
+«глобального» состояния (например, определение макета) в методе {@link android.app.Activity#onCreate onCreate()}, а затем
+освободить все оставшиеся в {@link android.app.Activity#onDestroy} ресурсы. Например, если в вашей операции
+имеется поток, выполняющийся в фоновом режиме, для загрузки данных по сети, операция может создать
+такой поток в методе {@link android.app.Activity#onCreate onCreate()}, а затем остановить его в методе {@link
+android.app.Activity#onDestroy}.</li>
+
+<li><p><b>Видимый жизненный цикл</b> операции происходит между вызовами методов {@link
+android.app.Activity#onStart onStart()} и {@link
+android.app.Activity#onStop onStop()}. В течение этого времени операция
+отображается на экране, где пользователь может взаимодействовать с ней. Например, метод {@link android.app.Activity#onStop onStop()} вызывается в
+случае, когда запускается новая операция, а текущая больше не отображается. В промежутке между вызовами этих двух методов можно
+сохранить ресурсы, необходимые для отображения операции для пользователя. Например, можно зарегистрировать объект
+{@link android.content.BroadcastReceiver} в методе {@link
+android.app.Activity#onStart onStart()} для отслеживания изменений, влияющих на пользовательский интерфейс, а затем отменить его регистрацию
+в методе {@link android.app.Activity#onStop onStop()}, когда пользователь больше не видит 
+отображаемого. В течение всего жизненного цикла операции система может несколько раз вызывать методы {@link android.app.Activity#onStart onStart()} и {@link
+android.app.Activity#onStop onStop()}, поскольку
+операция то отображается для пользователя, то скрывается от него.</p></li>
+
+<li><p><b>Жизненный цикл операции, выполняемый на переднем плане</b>, происходит между вызовами методов {@link
+android.app.Activity#onResume onResume()} и {@link android.app.Activity#onPause
+onPause()}. В течение этого времени операция выполняется на фоне всех прочих операций и
+отображается для пользователя.  Операция может часто уходить в фоновый режим и выходить из него &mdash; например,
+метод {@link android.app.Activity#onPause onPause()} вызывается при переходе устройства в спящий режим или
+при появлении диалогового окна. Поскольку переход в это состояние может выполняться довольно часто, код в этих двух методах
+должен быть легким, чтобы не допустить медленных переходов и не заставлять пользователя ждать.</p></li>
+</ul>
+
+<p>На рисунке 1 иллюстрируются проходы и пути, которые операция может пройти между состояниями.
+Прямоугольниками обозначены методы обратного вызова, которые можно реализовать для выполнения действий между переходами операции из одного
+состояния в другое. <p>
+
+<img src="{@docRoot}images/activity_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Рисунок 1.</strong> Жизненный цикл операции.</p>
+
+<p>Эти же методы жизненного цикла перечислены в таблице 1, в которой подробно описан каждый метод
+обратного вызова и указано его место в
+жизненном цикле операции в целом, включая сведения о том, может ли система завершить операцию по завершении
+метода обратного вызова.</p>
+
+<p class="table-caption"><strong>Таблица 1.</strong> Сводные сведения о методах обратного вызова
+жизненного цикла операции.</p>
+
+<table border="2" width="85%" frame="hsides" rules="rows">
+<colgroup align="left" span="3"></colgroup>
+<colgroup align="left"></colgroup>
+<colgroup align="center"></colgroup>
+<colgroup align="center"></colgroup>
+
+<thead>
+<tr><th colspan="3">Метод</th> <th>Описание</th> <th>Завершаемый?</th> <th>Следующий</th></tr>
+</thead>
+
+<tbody>
+<tr>
+  <td colspan="3" align="left"><code>{@link android.app.Activity#onCreate onCreate()}</code></td>
+  <td>Вызывается при первом создании операции.
+      Здесь необходимо настроить все обычные статические элементы &mdash;
+создать представления, привязать данные и т. д.  Этот метод передает
+объект Bundle, содержащий предыдущее состояние операции (если
+такое состояние было зафиксировано ранее; см. раздел <a href="#actstate">Сохранение состояния
+операции</a>).
+      <p>За ним всегда следует метод {@code onStart()}.</p></td>
+  <td align="center">Нет</td>
+      <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td rowspan="5" style="border-left: none; border-right: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onRestart
+onRestart()}</code></td>
+   <td>Вызывается после остановки операции непосредственно перед ее
+повторным запуском.
+       <p>За ним всегда следует метод {@code onStart()}.</p></td>
+   <td align="center">Нет</td>
+   <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStart onStart()}</code></td>
+   <td>Вызывается непосредственно перед тем, как операция становится видимой для пользователя.
+       <p>За ним следует метод {@code onResume()}, если операция
+переходит на передний план, или метод {@code onStop()}, если она становится скрытой.</p></td>
+    <td align="center">Нет</td>
+    <td align="center">{@code onResume()} <br/>или<br/> {@code onStop()}</td>
+</tr>
+
+<tr>
+   <td rowspan="2" style="border-left: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td align="left"><code>{@link android.app.Activity#onResume onResume()}</code></td>
+   <td>Вызывается непосредственно перед тем, как операция
+начинает взаимодействие с пользователем.  На этом этапе операция находится в самом
+верху стека операций, и в нее поступают данные, вводимые пользователем.
+       <p>За ним всегда следует метод {@code onPause()}.</p></td>
+   <td align="center">Нет</td>
+   <td align="center">{@code onPause()}</td>
+</tr>
+
+<tr>
+   <td align="left"><code>{@link android.app.Activity#onPause onPause()}</code></td>
+   <td>Вызывается, когда система собирается возобновить
+другую операцию.  Этот метод обычно используется для записи несохраненных изменений
+в постоянное место хранения данных, остановки анимаций и других элементов, которые могут
+использовать ресурсы ЦП и т. д.  Здесь крайне важна оперативность, поскольку
+следующая операция не будет возобновлена до тех пор, пока она не будет возвращена на передний план.
+       <p>За ним следует либо метод {@code onResume()}, если операция
+возвращается на передний план, либо метод {@code onStop()}, если операция
+становится скрытой для пользователя.</td>
+   <td align="center"><strong style="color:#800000">Да</strong></td>
+   <td align="center">{@code onResume()} <br/>или<br/> {@code onStop()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStop onStop()}</code></td>
+   <td>Вызывается в случае, когда операция больше не отображается для пользователя.  Это может
+произойти по причине того, что операция уничтожена, или ввиду возобновления поверх нее другой операции
+(существующей или новой).
+       <p>За ним следует либо метод {@code onRestart()}, если
+операция возобновляет взаимодействие с пользователем, либо метод
+{@code onDestroy()}, если операция переходит в фоновый режим.</p></td>
+   <td align="center"><strong style="color:#800000">Да</strong></td>
+   <td align="center">{@code onRestart()} <br/>или<br/> {@code onDestroy()}</td>
+</tr>
+
+<tr>
+   <td colspan="3" align="left"><code>{@link android.app.Activity#onDestroy
+onDestroy()}</code></td>
+   <td>Вызывается перед тем, как операция будет уничтожена.  Это финальный вызов,
+который получает операция.  Его можно вызвать либо по причине
+завершения операции (вызов метода <code>{@link android.app.Activity#finish
+       finish()}</code>), либо ввиду временного уничтожения системой этого
+экземпляра операции с целью освободить место.  Чтобы различить эти два
+сценария, используется метод <code>{@link
+       android.app.Activity#isFinishing isFinishing()}</code>.</td>
+   <td align="center"><strong style="color:#800000">Да</strong></td>
+   <td align="center"><em>Ничего</em></td>
+</tr>
+</tbody>
+</table>
+
+<p>В столбце «Завершаемый?» указывается, может ли система
+в любое время завершить процесс, содержащий операцию, <em>после возвращения метода</em> без
+выполнения другой строки кода операции.  Для трех методов в этом столбце указано «Да»: ({@link
+android.app.Activity#onPause
+onPause()}, {@link android.app.Activity#onStop onStop()} и {@link android.app.Activity#onDestroy
+onDestroy()}). Поскольку метод {@link android.app.Activity#onPause onPause()} является первым из
+этих трех после создания операции, метод {@link android.app.Activity#onPause onPause()} является
+последним, который гарантированно будет вызван перед тем, как процесс <em>можно будет</em> завершить; если
+системе потребуется срочно восстановить память в случае аварийной ситуации, то методы {@link
+android.app.Activity#onStop onStop()} и {@link android.app.Activity#onDestroy onDestroy()} вызвать
+не удастся. Поэтому следует воспользоваться {@link android.app.Activity#onPause onPause()}, чтобы записать
+критически важные данные (такие как правки пользователя) в хранилище постоянных данных. Однако следует внимательно подходить к выбору информации,
+которую необходимо сохранить во время выполнения метода {@link android.app.Activity#onPause onPause()}, поскольку любая блокировка
+процедур в этом методе может вызвать блокирование перехода к следующей операции и тормозить работу
+пользователя.</p>
+
+<p> Методы, для которых в столбце <b>Завершаемый?</b> указано «Нет», защищают процесс, содержащий операцию
+, от завершения сразу с момента их вызова.  Поэтому завершить операцию
+можно в период между возвратом {@link android.app.Activity#onPause onPause()} и вызовом
+{@link android.app.Activity#onResume onResume()}. Его снова не удастся завершить, пока снова не будет вызван и возвращен
+{@link android.app.Activity#onPause onPause()}. </p>
+
+<p class="note"><strong>Примечание.</strong> Операцию, которую технически невозможно завершить в соответствии с определением
+в таблице 1, по-прежнему может завершить система, однако это может произойти только в
+чрезвычайных ситуациях, когда нет другой возможности. Случаи, когда возможно завершение операции,
+более подробно рассматриваются в статье<a href="{@docRoot}guide/components/processes-and-threads.html">Процессы и
+потоки</a>.</p>
+
+
+<h3 id="SavingActivityState">Сохранение состояния операции</h3>
+
+<p>В обзорных сведениях об <a href="#Lifecycle">управлении жизненным циклом операции</a> кратко упоминается,
+что
+в случае приостановки или полной остановки операции ее состояние сохраняется. Это действительно так, поскольку
+объект {@link android.app.Activity} при этом по-прежнему находится в памяти
+, и вся информация о ее элементах и текущем состоянии по-прежнему активна. Поэтому любые
+вносимые пользователем в операции изменения сохраняются, и когда операция возвращается на передний план
+(когда она «возобновляется»), эти изменения остаются в этом объекте.</p>
+
+<p>Однако когда система уничтожает операцию в целях восстановления памяти, объект {@link
+android.app.Activity} уничтожается, в результате чего системе не удается просто восстановить состояние операции для взаимодействия
+с ней. Вместо этого системе необходимо повторно создать объект {@link android.app.Activity}, если пользователь
+возвращается к нему. Но пользователю неизвестно,
+что система уже уничтожила операцию и создала ее повторно, поэтому, возможно,
+он ожидает, что операция осталась прежней. В этой ситуации можно обеспечить
+сохранение важной информации о состоянии операции путем реализации дополнительного
+метода обратного вызова, который позволяет сохранить информацию о вашей операции: {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}.</p>
+
+<p>Прежде чем сделать операцию доступной для уничтожения, система вызывает метод
+{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}. Система передает в этот метод объект
+{@link android.os.Bundle}, в котором можно сохранить
+информацию о состоянии операции в виде пар «имя-значение», используя для этого такие методы, как {@link
+android.os.Bundle#putString putString()} и {@link
+android.os.Bundle#putInt putInt()}. Затем, если система завершает процесс
+вашего приложения и пользователь возвращается к вашей операции, система повторно создает операцию и передает объект
+{@link android.os.Bundle} в оба метода: {@link android.app.Activity#onCreate onCreate()} и {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}. С помощью любого из этих
+методов можно извлечь из объекта {@link android.os.Bundle} сохраненную информацию о состоянии операции и восстановить
+ее. Если такая информация отсутствует, то объект {@link
+android.os.Bundle} передается с нулевым значением (это происходит в случае, когда операция
+создается в первый раз).</p>
+
+<img src="{@docRoot}images/fundamentals/restore_instance.png" alt="" />
+<p class="img-caption"><strong>Рисунок 2.</strong> Два способа возврата операции к отображению для пользователя
+в неизмененном состоянии: уничтожение операции с последующим ее повторным созданием, когда операция должна восстановить свое
+ранее сохраненное состояние, или остановка операции и ее последующее восстановление в неизмененном
+состоянии.</p>
+
+<p class="note"><strong>Примечание.</strong> Нет никаких гарантий, что метод {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} будет вызван до того, как ваша
+операция будет уничтожена, поскольку существуют случаи, когда нет необходимости сохранять состояние
+(например, когда пользователь покидает вашу операцию нажатием кнопки <em>Назад</em>, 
+явным образом
+закрывая ее). Если система вызывает метод {@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()}, она делает это до вызова метода {@link
+android.app.Activity#onStop onStop()} и, возможно, перед вызовом метода {@link android.app.Activity#onPause
+onPause()}.</p>
+
+<p>Однако, даже если вы ничего не предпринимаете и не реализуете метод {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}, часть состояния операции восстанавливается
+реализацией по умолчанию метода {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} класса {@link android.app.Activity}. В частности, реализация
+по умолчанию вызывает соответствующий метод {@link
+android.view.View#onSaveInstanceState onSaveInstanceState()} для каждого объекта {@link
+android.view.View} в макете, благодаря чему каждое представление может предоставлять ту информацию о себе,
+которую следует сохранить. Почти каждый виджет в платформе Android реализует этот метод необходимым
+для себя способом так, что любые видимые изменения в пользовательском интерфейсе автоматически сохраняются и восстанавливаются при повторном
+создании операции. Например, виджет {@link android.widget.EditText} сохраняет любой текст,
+введенный пользователем, а виджет {@link android.widget.CheckBox} сохраняет информацию о том, был
+ли установлен флажок. От вас требуется лишь указать уникальный идентификатор (с атрибутом <a href="{@docRoot}guide/topics/resources/layout-resource.html#idvalue">{@code android:id}</a>)
+для каждого виджета, состояние которого необходимо сохранить. Если виджету не присвоен идентификатор, то системе
+не удастся сохранить его состояние.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<p>Вы также можете явно отключить сохранение информации о состоянии представления в макете. Для этого задайте для атрибута
+{@link android.R.attr#saveEnabled android:saveEnabled} значение {@code "false"} или вызовите метод
+{@link android.view.View#setSaveEnabled setSaveEnabled()}. Обычно отключать сохранение такой информации не требуется
+, однако это может потребоваться в случаях, когда восстановить состояние пользовательского интерфейса операции необходимо другим образом.</p>
+</div>
+</div>
+
+<p>Несмотря на то что реализация метода {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} по умолчанию позволяет сохранить полезную информацию о
+пользовательском интерфейсе вашей операции, вам по-прежнему может потребоваться переопределить ее для сохранения дополнительной информации.
+Например, может потребоваться сохранить значения элементов, которые изменялись в течение жизненного цикла операции (которые могут
+коррелировать со значениями, восстановленными в пользовательском интерфейсе, однако элементы, содержащие эти значения пользовательского интерфейса, по умолчанию не
+были восстановлены).</p>
+
+<p>Поскольку реализация метода {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} по умолчанию позволяет сохранить состояние пользовательского интерфейса, в случае
+, если вы переопределите метод с целью сохранить дополнительную информацию о состоянии, перед выполнением каких-либо действий вы всегда можете вызвать реализацию
+суперкласса для метода
+{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}. Точно так же реализацию суперкласса {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} следует вызывать в случае ее переопределения, чтобы реализация по умолчанию могла сохранить
+состояния представлений.</p>
+
+<p class="note"><strong>Примечание.</strong> Поскольку вызов метода {@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()} не гарантируется,
+вам следует использовать его только для записи переходного состояния операции (состояние
+пользовательского интерфейса) &mdash; никогда не используйте его для хранения постоянных данных.  Вместо этого используйте метод {@link
+android.app.Activity#onPause onPause()} для сохранения постоянных данных (например, тех, которые следует сохранить в
+базу данных), когда пользователь покидает операцию.</p>
+
+<p>Отличный способ проверить возможность вашего приложения восстанавливать свое состояние — это просто повернуть
+устройство для изменения ориентации экрана. При изменении ориентации экрана система
+уничтожает и повторно создает операцию, чтобы применить альтернативные ресурсы, которые могут быть
+доступны для новой конфигурации экрана. Только по одной этой причине крайне важно, чтобы ваша операция
+могла полностью восстанавливать свое состояние при ее повторном создании, поскольку пользователи постоянно работают с
+приложениями в разных ориентациях экрана.</p>
+
+
+<h3 id="ConfigurationChanges">Обработка изменений в конфигурации</h3>
+
+<p>Некоторые конфигурации устройств могут изменяться в режиме выполнения
+(например, ориентация экрана, доступность клавиатуры и язык). В таких случаях Android повторно создает выполняющуюся операцию
+(система сначала вызывает метод {@link android.app.Activity#onDestroy}, а затем сразу же вызывает метод {@link
+android.app.Activity#onCreate onCreate()}). Такое поведение позволяет
+приложению учитывать новые конфигурации путем автоматической перезагрузки в приложение
+альтернативных ресурсов, которые вы предоставили (например, различные макеты для
+разных ориентаций и экранов разных размеров).</p>
+
+<p>Если операция разработана должным образом и должным образом поддерживает перезапуск после изменения ориентации экрана и
+восстановление своего состояния, как описано выше, ваше приложение можно считать более устойчивым к другим
+непредвиденным событиям в жизненном цикле операции.</p>
+
+<p>Лучший способ обработки такого перезапуска
+— сохранить и восстановить состояние операции с помощью методов {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} и {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} (или {@link
+android.app.Activity#onCreate onCreate()}), как описано в предыдущем разделе.</p>
+
+<p>Дополнительные сведения об изменениях конфигурации, происходящих в режиме выполнения, и о способах их обработки
+представлены в руководстве<a href="{@docRoot}guide/topics/resources/runtime-changes.html">Обработка изменений в режиме
+выполнения</a>.</p>
+
+
+
+<h3 id="CoordinatingActivities">Согласование операций</h3>
+
+ <p>Когда одна операция запускает другую, в жизненных циклах обеих из них происходит переход из одного состояния в другое. Первая операция
+приостанавливается и заврешается (однако она не будет остановлена, если она по-прежнему видима на фоне), а вторая 
+операция создается. В случае, если эти операции обмениваются данным, сохраненными на диске или в другом месте, важно понимать,
+что первая операция не останавливается полностью до тех пор, пока не будет создана вторая операция.
+Наоборот, процесс запуска второй операции накладывается на процесс остановки первой
+операции.</p>
+
+<p>Порядок обратных вызовов жизненного цикла четко определен, в частности, когда в одном и том же процессе находятся две операции
+, и одна из них запускает другую. Ниже представлен порядок выполнения действий в случае, когда операция
+А запускает операцию Б. </p>
+
+<ol>
+<li>Выполняется метод {@link android.app.Activity#onPause onPause()} операции А.</li>
+
+<li>Последовательно выполняются методы {@link android.app.Activity#onCreate onCreate()}, {@link
+android.app.Activity#onStart onStart()} и {@link android.app.Activity#onResume onResume()}
+операции Б. (Теперь для пользователя отображается операция Б.)</li>
+
+<li>Затем, если операция A больше не отображается на экране, выполняется ее метод {@link
+android.app.Activity#onStop onStop()}.</li>
+</ol>
+
+ <p>Такая предсказуемая последовательность выполнения обратных вызовов жизненного цикла позволяет управлять переходом
+информации из одной операции в другую. Например, если после остановки первой операции требуется выполнить запись в базу данных,
+чтобы следующая операция могла считать их, то запись в базу данных следует выполнить
+во время выполнения метода {@link android.app.Activity#onPause onPause()}, а не во время выполнения метода {@link
+android.app.Activity#onStop onStop()}.</p>
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For more information about how Android maintains a history of activities and
+enables user multitasking, continue with the <b><a
+href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back
+Stack</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/ru/guide/components/bound-services.jd b/docs/html-intl/intl/ru/guide/components/bound-services.jd
new file mode 100644
index 0000000..ad690b7
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/components/bound-services.jd
@@ -0,0 +1,658 @@
+page.title=Привязанные службы
+parent.title=Службы
+parent.link=services.html
+@jd:body
+
+
+<div id="qv-wrapper">
+<ol id="qv">
+<h2>Содержание документа</h2>
+<ol>
+  <li><a href="#Basics">Основы</a></li>
+  <li><a href="#Creating">Создание привязанной службы</a>
+    <ol>
+      <li><a href="#Binder">Расширение класса Binder</a></li>
+      <li><a href="#Messenger">Использование объекта Messenger</a></li>
+    </ol>
+  </li>
+  <li><a href="#Binding">Привязка к службе</a></li>
+  <li><a href="#Lifecycle">Управление жизненным циклом привязанной службы</a></li>
+</ol>
+
+<h2>Ключевые классы</h2>
+<ol>
+  <li>{@link android.app.Service}</li>
+  <li>{@link android.content.ServiceConnection}</li>
+  <li>{@link android.os.IBinder}</li>
+</ol>
+
+<h2>Примеры</h2>
+<ol>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html">{@code
+      RemoteService}</a></li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+      LocalService}</a></li>
+</ol>
+
+<h2>См. также:</h2>
+<ol>
+  <li><a href="{@docRoot}guide/components/services.html">Службы</a></li>
+</ol>
+</div>
+
+
+<p>Привязанная служба предоставляет интерфейс типа клиент-сервер. Привязанная служба позволяет компонентам приложения
+(например, операциям) взаимодействовать со службой, отправлять запросы, получать результаты и даже делать то же самое с другими процессами через
+IPC. Привязанная служба обычно работает, пока другой компонент приложения
+привязан к ней. Она не работает постоянно в фоновом режиме.</p>
+
+<p>В этом документе рассказывается, как создать привязанную службу, включая привязку 
+службы к другим компонентам приложения. Также рекомендуем обратиться к статье <a href="{@docRoot}guide/components/services.html">Службы</a>, чтобы узнать подробнее
+о службах, например, об организации отправки уведомлений от службы, настройке службы 
+на работу на переднем плане и т. д.</p>
+
+
+<h2 id="Basics">Основы</h2>
+
+<p>Привязанная служба представляет собой реализацию класса {@link android.app.Service}, которая позволяет
+другим приложениям привязываться к нему и взаимодействовать с ним. Чтобы обеспечить привязку службы
+, сначала необходимо реализовать метод обратного вызова {@link android.app.Service#onBind onBind()}. Этот
+метод возвращает объект {@link android.os.IBinder}. Он определяет программный интерфейс,
+с помощью которого клиенты могут взаимодействовать со службой.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>Привязка к запущенной службе</h3>
+
+<p>Как указано в статье <a href="{@docRoot}guide/components/services.html">Службы</a>,
+можно создать службу, которая одновременно и запущена, и привязана. Это означает, что службу можно запустить
+путем вызова метода {@link android.content.Context#startService startService()}, который позволяет службе
+работать неограниченное время, а также позволяет клиентам привязываться к ней с помощью вызова метода {@link
+android.content.Context#bindService bindService()}.
+  <p>Если разрешить запуск и привязку службы, то после ее запуска
+система <em>не</em> уничтожает ее после отмены всех привязок клиентов. Вместо этого необходимо
+явным образом остановить службу, вызвав метод {@link android.app.Service#stopSelf stopSelf()} или {@link
+android.content.Context#stopService stopService()}.</p>
+
+<p>Несмотря на то, что обычно необходимо реализовывать либо метод {@link android.app.Service#onBind onBind()},
+<em>либо метод</em> {@link android.app.Service#onStartCommand onStartCommand()}, в некоторых случаях требуется
+реализовать оба этих метода. Например, в музыкальном проигрывателе может оказаться полезным разрешить выполнение службы в течение
+неограниченного времени, а также обеспечить ее привязку. Таким образом, операция может запустить службу для воспроизведения музыки
+, которая будет воспроизводиться даже после выхода пользователя из приложения. После того возвращения
+пользователя к приложению операция может отменить привязку к службе, чтобы вернуть управление воспроизведением.</p>
+
+<p>Обязательно ознакомьтесь с разделом, посвященным <a href="#Lifecycle">управлению жизненным циклом привязанной
+службы</a>. В нем представлены подробные сведения о жизненном цикле службы, привязанной к уже
+запущенной службе.</p>
+</div>
+</div>
+
+<p>Для привязки к службе клиент может вызвать метод {@link android.content.Context#bindService
+bindService()}. После привязки он должен предоставить реализацию метода {@link
+android.content.ServiceConnection}, который служит для отслеживания подключения к службе. Метод {@link
+android.content.Context#bindService bindService()} возвращается незамедлительно без значения, однако
+, когда система Android устанавливает подключение 
+клиент-служба, она вызывает метод {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} для {@link
+android.content.ServiceConnection}, чтобы выдать объект {@link android.os.IBinder}, который
+клиент может использовать для взаимодействия со службой.</p>
+
+<p>Одновременно к службе могут подключиться сразу несколько клиентов. Однако система вызывает метод
+{@link android.app.Service#onBind onBind()} вашей службы для получения объекта {@link android.os.IBinder}
+только при первой привязке клиента. После чего система выдает такой же объект {@link android.os.IBinder} для любых
+дополнительных клиентов, которые выполняют привязку, без повторного вызова метода {@link android.app.Service#onBind onBind()}.</p>
+
+<p>Когда отменяется привязка последнего клиента от службы, система уничтожает службу (если только
+служба не была так же запущена методом {@link android.content.Context#startService startService()}).</p>
+
+<p>Самую важную роль в реализации привязанной службы играет определение интерфейса,
+который возвращает ваш метод обратного вызова {@link android.app.Service#onBind onBind()}. Существует несколько
+различных способов определения интерфейса {@link android.os.IBinder} службы. Каждый из них рассматривается в следующем
+разделе.</p>
+
+
+
+<h2 id="Creating">Создание привязанной службы</h2>
+
+<p>При создании службы, обеспечивающей привязку, требуется объект {@link android.os.IBinder},
+который обеспечивает программный интерфейс, с помощью которого клиенты могут взаимодействовать со службой. Существует
+три способа определения такого интерфейса:</p>
+
+<dl>
+  <dt><a href="#Binder">Расширение класса Binder</a></dt>
+  <dd>Если служба является частной и предоставляется в рамках вашего собственного приложения, а также выполняется в том же процессе, что и клиент
+(общий процесс), создавать интерфейс следует путем расширения класса {@link android.os.Binder}
+и возврата его экземпляра из метода
+{@link android.app.Service#onBind onBind()}. Клиент получает объект {@link android.os.Binder},
+после чего он может использовать его для получения прямого доступа к общедоступным методам, имеющимся либо в реализации {@link android.os.Binder},
+либо даже в {@link android.app.Service}.
+  <p>Этот способ является предпочтительным, когда служба просто выполняется в фоновом режиме для
+вашего приложения. Этот способ не подходит для создания интерфейса только тогда, 
+когда ваша служба используется другими приложениями или в отдельных процессах.</dd>
+
+  <dt><a href="#Messenger">Использование объекта Messenger</a></dt>
+  <dd>Если необходимо, чтобы интерфейс службы был доступен для разных процессов, его можно создать
+с помощью объекта {@link android.os.Messenger}. Таким образом, служба
+определяет объект {@link android.os.Handler}, соответствующий различным типам объектов {@link
+android.os.Message}. Этот объект {@link android.os.Handler}
+является основой для объекта {@link android.os.Messenger}, который, в свою очередь, предоставляет клиенту объект {@link android.os.IBinder},
+благодаря чему последний может отправлять команды в службу с помощью объектов {@link
+android.os.Message}. Кроме того, клиент может определить объект {@link android.os.Messenger} для самого
+себя, что позволяет службе возвращать сообщения клиенту.
+  <p>Это самый простой способ организовать взаимодействие процессов, поскольку {@link
+android.os.Messenger} организует очередь всех запросов в рамках одного потока, поэтому вам не нужно делать
+свою службу потокобезопасной.</p>
+  </dd>
+
+  <dt>Использование языка AIDL</dt>
+  <dd>AIDL (Android Interface Definition Language) выполняет всю работу по разделению объектов на
+примитивы, которые операционная система может распознать и распределить по процессам для организации
+взаимодействия между ними (IPC). Предыдущий способ с использованием объекта {@link android.os.Messenger} фактически основан на AIDL, поскольку это его
+базовая структура. Как уже упоминалось выше, объект {@link android.os.Messenger} создает очередь из всех
+запросов клиентов в рамках одного потока, поэтому служба одновременно получает только один запрос. Однако, 
+если необходимо, чтобы служба обрабатывала одновременно сразу несколько запросов, можно использовать AIDL
+напрямую. В таком случае ваша служба должна поддерживать многопоточность и должна быть потокобезопасной.
+  <p>Чтобы использовать AIDL напрямую, необходимо
+создать файл {@code .aidl}, который определяет программный интерфейс. Этот файл используется инструментами SDK Android для
+создания абстрактного класса, который реализует интерфейс и обеспечивает взаимодействие процессов, и который
+в дальнейшем можно расширить в службе.</p>
+  </dd>
+</dl>
+
+  <p class="note"><strong>Примечание.</strong> В большинстве приложений <strong>не следует</strong> использовать AIDL для
+создания и привязки службы, поскольку для этого может потребоваться поддержка многопоточности, что, в свою очередь, может привести
+к более сложной реализации. Поэтому AIDL не подходит для большинства приложений,
+и в этой статье мы не будем рассматривать использование этого способа для вашей службы. Если же вы точно уверены, что
+вам необходимо использовать AIDL напрямую, обратитесь к статье
+<a href="{@docRoot}guide/components/aidl.html">AIDL</a>.</p>
+
+
+
+
+<h3 id="Binder">Расширение класса Binder</h3>
+
+<p>Если ваша служба используется только локальным приложением и не взаимодействует с разными процессами,
+можно реализовать собственный класс {@link android.os.Binder}, с помощью которого клиент получает прямой
+доступ к общедоступным методам в службе.</p>
+
+<p class="note"><strong>Примечание.</strong> Этот вариант подходит только в том случае, если клиент и служба выполняются внутри
+одного приложения и процесса, что является наиболее распространенной ситуацией. Например, расширение класса отлично подойдет для
+музыкального приложения, в котором необходимо привязать операцию к собственной службе приложения, которая
+воспроизводит музыку в фоновом режиме.</p>
+
+<p>Вот как это сделать:</p>
+<ol>
+  <li>Создайте в вашей службе экземпляр класса {@link android.os.Binder} со следующими характеристиками:
+    <ul>
+      <li>экземпляр содержит общедоступные методы, которые может вызывать клиент; либо</li>
+      <li>экземпляр возвращает текущий экземпляр класса {@link android.app.Service}, содержащий
+общедоступные методы, которые может вызывать клиент; или</li>
+      <li>экземпляр возвращает экземпляр другого класса, размещенного в службе, содержащий общедоступные методы,
+которые может вызывать клиент.</li>
+    </ul>
+  <li>Верните этот экземпляр класса {@link android.os.Binder} из метода обратного вызова {@link
+android.app.Service#onBind onBind()}.</li>
+  <li>В клиенте получите класс {@link android.os.Binder} от метода обратного вызова {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} и
+выполните вызовы к привязанной службе с помощью предоставленных методов.</li>
+</ol>
+
+<p class="note"><strong>Примечание.</strong> Служба и клиент должны выполняться в одном и том же приложении
+, поскольку в этом случае клиент может транслировать возвращенный объект и надлежащим образом вызывать его API-интерфейсы. Кроме того, служба
+и клиент должны выполняться в рамках одного и того же процесса, поскольку этот способ не подразумевает какого-либо
+распределения по процессам.</p>
+
+<p>Ниже представлен пример службы, которая предоставляет клиентам доступ к методам посредством реализации класса
+{@link android.os.Binder}:</p>
+
+<pre>
+public class LocalService extends Service {
+    // Binder given to clients
+    private final IBinder mBinder = new LocalBinder();
+    // Random number generator
+    private final Random mGenerator = new Random();
+
+    /**
+     * Class used for the client Binder.  Because we know this service always
+     * runs in the same process as its clients, we don't need to deal with IPC.
+     */
+    public class LocalBinder extends Binder {
+        LocalService getService() {
+            // Return this instance of LocalService so clients can call public methods
+            return LocalService.this;
+        }
+    }
+
+    &#64;Override
+    public IBinder onBind(Intent intent) {
+        return mBinder;
+    }
+
+    /** method for clients */
+    public int getRandomNumber() {
+      return mGenerator.nextInt(100);
+    }
+}
+</pre>
+
+<p>Объект {@code LocalBinder} предоставляет для клиентов метод {@code getService()}, чтобы они могли получить
+текущий экземпляр класса {@code LocalService}. Благодаря этому клиенты могут вызывать общедоступные методы в
+службе. Например, клиенты могут вызвать метод {@code getRandomNumber()} из службы.</p>
+
+<p>Ниже представлен пример операции, которая выполняет привязку к классу {@code LocalService} и вызывает метод {@code getRandomNumber()}
+при нажатии кнопки:</p>
+
+<pre>
+public class BindingActivity extends Activity {
+    LocalService mService;
+    boolean mBound = false;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+
+    &#64;Override
+    protected void onStart() {
+        super.onStart();
+        // Bind to LocalService
+        Intent intent = new Intent(this, LocalService.class);
+        bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+    }
+
+    &#64;Override
+    protected void onStop() {
+        super.onStop();
+        // Unbind from the service
+        if (mBound) {
+            unbindService(mConnection);
+            mBound = false;
+        }
+    }
+
+    /** Called when a button is clicked (the button in the layout file attaches to
+      * this method with the android:onClick attribute) */
+    public void onButtonClick(View v) {
+        if (mBound) {
+            // Call a method from the LocalService.
+            // However, if this call were something that might hang, then this request should
+            // occur in a separate thread to avoid slowing down the activity performance.
+            int num = mService.getRandomNumber();
+            Toast.makeText(this, "number: " + num, Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    /** Defines callbacks for service binding, passed to bindService() */
+    private ServiceConnection mConnection = new ServiceConnection() {
+
+        &#64;Override
+        public void onServiceConnected(ComponentName className,
+                IBinder service) {
+            // We've bound to LocalService, cast the IBinder and get LocalService instance
+            LocalBinder binder = (LocalBinder) service;
+            mService = binder.getService();
+            mBound = true;
+        }
+
+        &#64;Override
+        public void onServiceDisconnected(ComponentName arg0) {
+            mBound = false;
+        }
+    };
+}
+</pre>
+
+<p>В примере выше показано, как клиент привязывается к службе с помощью реализации
+{@link android.content.ServiceConnection} и обратного вызова {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()}. В
+следующем разделе представлена более подробная информация об этом процессе привязки к службе.</p>
+
+<p class="note"><strong>Примечание.</strong> В примере выше не выполняется явная отмена привязки к службе,
+однако всем клиентам следует отменять привязку в соответствующие сроки (например, когда операция приостанавливается).</p>
+
+<p>Примеры кода представлены в статьях, посвященных классам <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+LocalService.java}</a> и <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceActivities.html">{@code
+LocalServiceActivities.java}</a>, в <a href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a>.</p>
+
+
+
+
+
+<h3 id="Messenger">Использование объекта Messenger</h3>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h4>Сравнение с AIDL</h4>
+  <p>Когда необходимо организовать взаимодействие между процессами, использование объекта {@link android.os.Messenger} для интерфейса
+намного проще реализации с помощью AIDL, поскольку объект {@link android.os.Messenger} помещает
+в очередь все запросы к службе, тогда как интерфейс, основанный исключительно на AIDL, отправляет службе несколько запросов одновременно,
+для чего требуется поддержка многопоточности.</p>
+  <p>В большинстве приложений служба не должна поддерживать многопоточность, поэтому при использовании объекта {@link
+android.os.Messenger} служба может одновременно обрабатывать один запрос. Если вам важно,
+чтобы служба была многопоточной, для определения интерфейса следует использовать <a href="{@docRoot}guide/components/aidl.html">AIDL</a>.</p>
+</div>
+</div>
+
+<p>Если необходимо, чтобы служба взаимодействовала с удаленными процессами, для предоставления интерфейса службы можно воспользоваться объектом
+{@link android.os.Messenger}. Такой подход
+позволяет организовать взаимодействие между процессами (IPC) без необходимости использовать AIDL.</p>
+
+<p>Вот краткий обзор того, как следует использовать объект {@link android.os.Messenger}:</p>
+
+<ul>
+  <li>Служба реализует объект {@link android.os.Handler}, который получает обратный вызов для каждого
+вызова от клиента.</li>
+  <li>Объект {@link android.os.Handler} используется для создания объекта {@link android.os.Messenger}
+(который является ссылкой на объект {@link android.os.Handler}).</li>
+  <li>Объект {@link android.os.Messenger} создает объект {@link android.os.IBinder}, который служба
+возвращает клиентам из метода {@link android.app.Service#onBind onBind()}.</li>
+  <li>Клиенты используют полученный объект {@link android.os.IBinder} для создания экземпляра объекта {@link android.os.Messenger}
+(который ссылается на объект {@link android.os.Handler} службы), используемого клиентом для отправки объектов
+{@link android.os.Message} в службу.</li>
+  <li>Служба получает каждый объект {@link android.os.Message} в своем объекте {@link
+android.os.Handler} &mdash; в частности, в методе {@link android.os.Handler#handleMessage
+handleMessage()}.</li>
+</ul>
+
+
+<p>Таким образом, для клиента отсутствуют «методы» для отправки вызова службе. Вместо этого
+клиент отправляет «сообщения» (объекты {@link android.os.Message}), которые служба получает в
+своем объекте {@link android.os.Handler}.</p>
+
+<p>Ниже представлен пример службы, которая использует интерфейс {@link android.os.Messenger}:</p>
+
+<pre>
+public class MessengerService extends Service {
+    /** Command to the service to display a message */
+    static final int MSG_SAY_HELLO = 1;
+
+    /**
+     * Handler of incoming messages from clients.
+     */
+    class IncomingHandler extends Handler {
+        &#64;Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_SAY_HELLO:
+                    Toast.makeText(getApplicationContext(), "hello!", Toast.LENGTH_SHORT).show();
+                    break;
+                default:
+                    super.handleMessage(msg);
+            }
+        }
+    }
+
+    /**
+     * Target we publish for clients to send messages to IncomingHandler.
+     */
+    final Messenger mMessenger = new Messenger(new IncomingHandler());
+
+    /**
+     * When binding to the service, we return an interface to our messenger
+     * for sending messages to the service.
+     */
+    &#64;Override
+    public IBinder onBind(Intent intent) {
+        Toast.makeText(getApplicationContext(), "binding", Toast.LENGTH_SHORT).show();
+        return mMessenger.getBinder();
+    }
+}
+</pre>
+
+<p>Обратите внимание, что метод {@link android.os.Handler#handleMessage handleMessage()} в объекте
+{@link android.os.Handler} — это место, где служба получает входящие объекты {@link android.os.Message}
+и решает, что делать дальше, руководствуясь элементом {@link android.os.Message#what}.</p>
+
+<p>Клиенту требуется лишь создать объект {@link android.os.Messenger} на основе объекта {@link
+android.os.IBinder}, возвращенного службой, и отправить сообщение с помощью метода {@link
+android.os.Messenger#send send()}. Ниже представлен пример того, как простая операция выполняет привязку к
+службе и отправляет ей сообщение {@code MSG_SAY_HELLO}:</p>
+
+<pre>
+public class ActivityMessenger extends Activity {
+    /** Messenger for communicating with the service. */
+    Messenger mService = null;
+
+    /** Flag indicating whether we have called bind on the service. */
+    boolean mBound;
+
+    /**
+     * Class for interacting with the main interface of the service.
+     */
+    private ServiceConnection mConnection = new ServiceConnection() {
+        public void onServiceConnected(ComponentName className, IBinder service) {
+            // This is called when the connection with the service has been
+            // established, giving us the object we can use to
+            // interact with the service.  We are communicating with the
+            // service using a Messenger, so here we get a client-side
+            // representation of that from the raw IBinder object.
+            mService = new Messenger(service);
+            mBound = true;
+        }
+
+        public void onServiceDisconnected(ComponentName className) {
+            // This is called when the connection with the service has been
+            // unexpectedly disconnected -- that is, its process crashed.
+            mService = null;
+            mBound = false;
+        }
+    };
+
+    public void sayHello(View v) {
+        if (!mBound) return;
+        // Create and send a message to the service, using a supported 'what' value
+        Message msg = Message.obtain(null, MessengerService.MSG_SAY_HELLO, 0, 0);
+        try {
+            mService.send(msg);
+        } catch (RemoteException e) {
+            e.printStackTrace();
+        }
+    }
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+
+    &#64;Override
+    protected void onStart() {
+        super.onStart();
+        // Bind to the service
+        bindService(new Intent(this, MessengerService.class), mConnection,
+            Context.BIND_AUTO_CREATE);
+    }
+
+    &#64;Override
+    protected void onStop() {
+        super.onStop();
+        // Unbind from the service
+        if (mBound) {
+            unbindService(mConnection);
+            mBound = false;
+        }
+    }
+}
+</pre>
+
+<p>Обратите внимание, что в этом примере не показано, как служба отвечает клиенту. Если требуется,
+чтобы служба реагировала, необходимо создать объект {@link android.os.Messenger} и в клиенте. Затем,
+когда клиент получает обратный вызов {@link android.content.ServiceConnection#onServiceConnected
+onServiceConnected()}, она отправляет в службу объект {@link android.os.Message}, который включает объект
+{@link android.os.Messenger} клиента в качестве значения параметра {@link android.os.Message#replyTo}
+метода {@link android.os.Messenger#send send()}.</p>
+
+<p>Пример организации двустороннего обмена сообщениями приведен в примерах кода <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerService.html">{@code
+MessengerService.java}</a> (служба) и <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerServiceActivities.html">{@code
+MessengerServiceActivities.java}</a> (клиент).</p>
+
+
+
+
+
+<h2 id="Binding">Привязка к службе</h2>
+
+<p>Для привязки к службе компоненты приложения (клиенты) могут использовать метод
+{@link android.content.Context#bindService bindService()}. После этого система Android
+вызывает метод {@link android.app.Service#onBind
+onBind()} службы, который возвращает объект {@link android.os.IBinder} для взаимодействия со службой.</p>
+
+<p>Привязка выполняется асинхронно. {@link android.content.Context#bindService
+bindService()} возвращается сразу же и <em>не</em> возвращает клиенту объект 
+{@link android.os.IBinder}. Для получения объекта {@link android.os.IBinder} клиенту необходимо создать экземпляр {@link
+android.content.ServiceConnection} и передать его в метод {@link android.content.Context#bindService
+bindService()}. Интерфейс {@link android.content.ServiceConnection} включает метод обратного вызова,
+который система использует для того, чтобы выдать объект {@link android.os.IBinder}.</p>
+
+<p class="note"><strong>Примечание.</strong> Выполнить привязку к службе могут только операции, другие службы и поставщики контента
+&mdash; вы <strong>не можете</strong> самостоятельно выполнить привязку к службе из ресивера.</p>
+
+<p>Поэтому для привязки к службе из клиента необходимо выполнить указанные ниже действия. </p>
+<ol>
+  <li>Реализуйте интерфейс {@link android.content.ServiceConnection}.
+    <p>Ваша реализация должна переопределять два метода обратного вызова:</p>
+    <dl>
+      <dt>{@link android.content.ServiceConnection#onServiceConnected onServiceConnected()}</dt>
+        <dd>Система вызывает этот метод, чтобы выдать объект {@link android.os.IBinder}, возвращенный методом
+{@link android.app.Service#onBind onBind()}службы.</dd>
+      <dt>{@link android.content.ServiceConnection#onServiceDisconnected
+onServiceDisconnected()}</dt>
+        <dd>Система Android вызывает этот метод в случае непредвиденной потери
+подключения к службе, например при сбое в работе службы или в случае ее завершения. Этот метод <em>не</em> вызывается, когда клиент
+отменяет привязку.</dd>
+    </dl>
+  </li>
+  <li>Вызовите метод {@link
+android.content.Context#bindService bindService()}, передав в него реализацию интерфейса {@link
+android.content.ServiceConnection}. </li>
+  <li>Когда система вызывает ваш метод обратного вызова {@link android.content.ServiceConnection#onServiceConnected
+onServiceConnected()}, вы можете приступить к выполнению вызовов к службе с помощью
+методов, определенных интерфейсом.</li>
+  <li>Чтобы отключиться от службы, вызовите метод {@link
+android.content.Context#unbindService unbindService()}.
+    <p>В случае уничтожения клиента выполняется отмена его привязки к службе, однако вам всегда следует отменять
+привязку по завершении взаимодействия со службой или в случае приостановки операции, чтобы служба
+могла завершить свою работу, когда она не используется. (Более подробно подходящее время для привязки и ее отмены
+рассматриваются далее в этом документе).</p>
+  </li>
+</ol>
+
+<p>Ниже представлен пример фрагмента кода для подключения клиента к созданной выше службе путем
+<a href="#Binder">расширения класса Binder</a> — клиенту нужно лишь передать возвращенный объект
+{@link android.os.IBinder} в класс {@code LocalService} и запросить экземпляр {@code
+LocalService}:</p>
+
+<pre>
+LocalService mService;
+private ServiceConnection mConnection = new ServiceConnection() {
+    // Called when the connection with the service is established
+    public void onServiceConnected(ComponentName className, IBinder service) {
+        // Because we have bound to an explicit
+        // service that is running in our own process, we can
+        // cast its IBinder to a concrete class and directly access it.
+        LocalBinder binder = (LocalBinder) service;
+        mService = binder.getService();
+        mBound = true;
+    }
+
+    // Called when the connection with the service disconnects unexpectedly
+    public void onServiceDisconnected(ComponentName className) {
+        Log.e(TAG, "onServiceDisconnected");
+        mBound = false;
+    }
+};
+</pre>
+
+<p>С помощью этого интерфейса {@link android.content.ServiceConnection} клиент может выполнить привязку к службе, передав ее в
+метод {@link android.content.Context#bindService bindService()}. Например:</p>
+
+<pre>
+Intent intent = new Intent(this, LocalService.class);
+bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+</pre>
+
+<ul>
+  <li>Первый параметр в методе {@link android.content.Context#bindService bindService()} представляет собой объект
+{@link android.content.Intent}, который явным образом именует службу для привязки (хотя переход может быть
+и неявным).</li>
+<li>Второй параметр — это объект {@link android.content.ServiceConnection}.</li>
+<li>Третий параметр представляет собой флаг, указывающий параметры привязки. Обычно им является {@link
+android.content.Context#BIND_AUTO_CREATE}, создающий службу, если она уже не выполняется.
+Другие возможные значения: {@link android.content.Context#BIND_DEBUG_UNBIND}
+и {@link android.content.Context#BIND_NOT_FOREGROUND} или {@code 0}, если значение отсутствует.</li>
+</ul>
+
+
+<h3>Дополнительные примечания</h3>
+
+<p>Ниже представлены некоторые важные замечания о привязке к службе.</p>
+<ul>
+  <li>Всегда отлавливайте исключения {@link android.os.DeadObjectException}, которые выдаются
+при возникновении сбоя подключения. Это единственное исключение, которое выдается удаленными методами.</li>
+  <li>Для объектов всегда учитываются ссылки на них в процессах. </li>
+  <li>Обычно необходимо связать привязку и ее отмену во время
+сопоставления моментов подключения и отключения в жизненном цикле клиента. Например:
+    <ul>
+      <li>Если взаимодействие со службой требуется лишь в то время, когда операция отображается, привязку
+необходимо выполнить во время метода {@link android.app.Activity#onStart onStart()}, а отмену привязки — во время выполнения метода {@link
+android.app.Activity#onStop onStop()}.</li>
+      <li>Если необходимо, чтобы операция получала ответы даже в случае ее остановки во время работы в фоновом режиме,
+то привязку можно выполнить во время {@link android.app.Activity#onCreate onCreate()}, а отмену привязки
+ — во время выполнения {@link android.app.Activity#onDestroy onDestroy()}. Однако следует помнить, что такой способ подразумевает,
+что вашей операции необходимо использовать службу все время, пока она выполняется (даже если она выполняется в фоновом режиме). Поэтому,
+если служба находится в другом процессе, вы тем самым утяжеляете процесс, а это
+повышает вероятность того, что система завершит его.</li>
+    </ul>
+    <p class="note"><strong>Примечание.</strong> Обычно <strong>не</strong> следует выполнять привязку или отменять ее
+во время выполнения методов {@link android.app.Activity#onResume onResume()} и {@link
+android.app.Activity#onPause onPause()} вашей операции, поскольку такие обратные вызовы происходят при каждом переходе из одного состояния в другое,
+ а обработка данных, выполняемая при таких переходах, должна быть минимальной. Кроме того, если к одной и той же
+службе привязано несколько операций в вашем приложении, и имеется переход между 
+двумя этими операциями, служба может быть уничтожена и создана повторно, поскольку текущая операция выполняет отмену привязки
+(во время приостановки) до того, как следующая служба выполнит привязку (во время возобновления). (Подробные сведения о согласовании жизненных циклов операций при таких переходах
+представлены в статье
+<a href="{@docRoot}guide/components/activities.html#CoordinatingActivities">Операции</a>.)</p>
+</ul>
+
+<p>Пример кода, в котором показан порядок привязки к службе, см. в статье, посвященной классу <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html">{@code
+RemoteService.java}</a>, в <a href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a>.</p>
+
+
+
+
+
+<h2 id="Lifecycle">Управление жизненным циклом привязанной службы</h2>
+
+<p>Когда выполняется отмена привязки службы ко всем клиентам, система Android уничтожает такую службу (если она не была запущена
+вместе с {@link android.app.Service#onStartCommand onStartCommand()}). В таком случае вам не нужно
+управлять жизненным циклом своей службы, если она исключительно привязанная служба
+&mdash; система Android управляет ей за вас на основании привязки службы к любым другим клиентам.</p>
+
+<p>Однако, если вы решите реализовать метод обратного вызова {@link android.app.Service#onStartCommand
+onStartCommand()}, вам необходимо явным образом остановить службу, поскольку в
+этом случае она считается <em>запущенной</em>. В таком случае служба выполняется до тех пор, пока
+сама не остановит свою работу с помощью метода {@link android.app.Service#stopSelf()} или до тех пор, пока другой компонент не вызовет метод {@link
+android.content.Context#stopService stopService()}, независимо от привязки службы к каким-либо
+клиентам.</p>
+
+<p>Кроме того, если ваша служба запущена и принимает привязку, то при вызове системой
+вашего метода {@link android.app.Service#onUnbind onUnbind()} вы также можете вернуть
+{@code true}, если желаете получить вызов к {@link android.app.Service#onRebind
+onRebind()} при следующей привязке к службе (вместо получения вызова к методу {@link
+android.app.Service#onBind onBind()}). Метод {@link android.app.Service#onRebind
+onRebind()} возвращает значение void, однако клиент по-прежнему получает объект {@link android.os.IBinder} в своем методе обратного вызова
+{@link android.content.ServiceConnection#onServiceConnected onServiceConnected()}.
+На рисунке 1 ниже иллюстрируется логика жизненного цикла такого рода.</p>
+
+
+<img src="{@docRoot}images/fundamentals/service_binding_tree_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Рисунок 1.</strong> Жизненный цикл запущенной службы,
+для которой выполняется привязка.</p>
+
+
+<p>Дополнительные сведения о жизненном цикле уже запущенной службы представлены в статье <a href="{@docRoot}guide/components/services.html#Lifecycle">Службы</a>.</p>
+
+
+
+
diff --git a/docs/html-intl/intl/ru/guide/components/fragments.jd b/docs/html-intl/intl/ru/guide/components/fragments.jd
new file mode 100644
index 0000000..b13fcc3
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/components/fragments.jd
@@ -0,0 +1,812 @@
+page.title=Фрагменты
+parent.title=Операции
+parent.link=activities.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Содержание документа</h2>
+  <ol>
+    <li><a href="#Design">Философия проектирования</a></li>
+    <li><a href="#Creating">Создание фрагмента</a>
+      <ol>
+        <li><a href="#UI">Добавление пользовательского интерфейса</a></li>
+        <li><a href="#Adding">Добавление фрагмента в операцию</a></li>
+      </ol>
+    </li>
+    <li><a href="#Managing">Управление фрагментами</a></li>
+    <li><a href="#Transactions">Выполнение транзакций с фрагментами</a></li>
+    <li><a href="#CommunicatingWithActivity">Взаимодействие с операцией</a>
+      <ol>
+        <li><a href="#EventCallbacks">Создание обратного вызова события для операции</a></li>
+        <li><a href="#ActionBar">Добавление элементов в строку действий</a></li>
+      </ol>
+    </li>
+    <li><a href="#Lifecycle">Управление жизненным циклом фрагмента</a>
+      <ol>
+        <li><a href="#CoordinatingWithActivity">Согласование с жизненным циклом операции</a></li>
+      </ol>
+    </li>
+    <li><a href="#Example">Пример:</a></li>
+  </ol>
+
+  <h2>Ключевые классы</h2>
+  <ol>
+    <li>{@link android.app.Fragment}</li>
+    <li>{@link android.app.FragmentManager}</li>
+    <li>{@link android.app.FragmentTransaction}</li>
+  </ol>
+  
+  <h2>См. также:</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/fragments/index.html">Создание динамического интерфейса пользователя с использованием фрагментов</a></li>
+    <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">Поддержка планшетов
+и смартфонов</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Фрагмент (класс {@link android.app.Fragment}) представляет поведение или часть пользовательского интерфейса в операции
+(класс {@link android.app.Activity}). Разработчик может объединить несколько фрагментов в одну операцию для построения
+многопанельного пользовательского интерфейса и повторного использования фрагмента в нескольких операциях. Фрагмент можно рассматривать как
+ модульную часть операции. Такая часть имеет свой жизненный цикл и самостоятельно обрабатывает события ввода. Кроме того,
+ее можно добавить или удалить непосредственно во время выполнения операции. Это нечто вроде вложенной операции, которую
+можно многократно использовать в различных операциях.</p>
+
+<p>Фрагмент всегда должен быть встроен в операцию, и на его жизненный цикл напрямую
+влияет жизненный цикл операции. Например, когда операция приостановлена, в том же состоянии находятся и все
+фрагменты внутри нее, а когда операция уничтожается, уничтожаются и все фрагменты. Однако пока
+операция выполняется (это соответствует состоянию <em>возобновлена</em> <a href="{@docRoot}guide/components/activities.html#Lifecycle">жизненного цикла</a>), можно 
+манипулировать каждым фрагментом независимо, например добавлять или удалять их. Когда разработчик выполняет такие
+транзакции с фрагментами, он может также добавить их в стек переходов назад, которым управляет
+операция. Каждый элемент стека переходов назад в операции является записью 
+ выполненной транзакции с фрагментом. Стек переходов назад позволяет пользователю обратить транзакцию с фрагментом (выполнить навигацию в обратном направлении),
+нажимая кнопку <em>Назад</em>.</p>
+
+<p>Когда фрагмент добавлен как часть макета операции, он находится в объекте {@link
+android.view.ViewGroup} внутри иерархии представлений операции и определяет собственный
+макет представлений.
+Разработчик может вставить фрагмент в макет операции двумя способами. Для этого следует объявить фрагмент в
+файле макета операции как элемент {@code &lt;fragment&gt;} или добавить его в
+существующий объект{@link android.view.ViewGroup} в коде приложения. Впрочем, фрагмент не обязан быть частью
+макета операции. Можно использовать фрагмент без интерфейса в качестве невидимого рабочего потока
+операции.</p>
+
+<p>В этом документе показано, как построить приложение, использующее фрагменты. В частности, обсуждается,
+как фрагменты могут поддерживать свое состояние, когда они добавляются в стек переходов назад операции, использовать
+события совместно с операцией и другими фрагментами внутри нее, выводить данные в
+строку действий операции и т. д.</p>
+
+
+<h2 id="Design">Философия проектирования</h2>
+
+<p>Фрагменты впервые появились в Android версии 3.0 (API уровня 11), главным образом, для обеспечения
+большей динамичности и гибкости пользовательских интерфейсов на больших экранах, например, у планшетов. Поскольку экраны
+планшетов гораздо больше, чем у смартфонов, они предоставляют больше возможностей для объединения и
+перестановки компонентов пользовательского интерфейса. Фрагменты позволяют делать это, избавляя разработчика от необходимости управлять
+сложными изменениями в иерархии представлений. Разбивая макет операции на фрагменты, разработчик получает возможность
+модифицировать внешний вид операции в ходе выполнения и сохранять эти изменения в стеке переходов назад,
+которым управляет операция.</p>
+
+<p>Например, новостное приложение может использовать один фрагмент для показа списка статей слева,
+а другой&mdash;для отображения статьи справа. Оба фрагмента отображаются за
+одну операцию рядом друг с другом, и каждый имеет собственный набор методов обратного вызова жизненного цикла и управляет
+собственными событиями пользовательского ввода. Таким образом, вместо применения одной операции для выбора статьи, а другой
+ — для чтения статей, пользователь может выбрать статью и читать ее в рамках одной
+операции, как на планшете, изображенном на рисунке 1.</p>
+
+<p>Следует разрабатывать каждый фрагмент как модульный и повторно используемый компонент операции.  Поскольку
+ каждый фрагмент определяет собственный макет и собственное поведение со своими обратными вызовами жизненного цикла, разработчик может 
+включить один фрагмент в несколько операций. Поэтому он должен предусмотреть повторное использование фрагмента и не допускать,
+чтобы один фрагмент непосредственно манипулировал другим. Это особенно важно, потому что модульность фрагментов
+позволяет изменять их сочетания в соответствии с различными размерами экранов. Если
+приложение должно работать и на планшетах, и на смартфонах, можно повторно использовать фрагменты в различных
+конфигурациях макета, чтобы оптимизировать взаимодействие с пользователем в зависимости от доступного размера экрана. Например,
+на смартфоне может возникнуть необходимость в разделении фрагментов для предоставления однопанельного пользовательского интерфейса, если
+ разработчику не удается поместить более одного фрагмента в одну операцию.</p>
+
+<img src="{@docRoot}images/fundamentals/fragments.png" alt="" />
+<p class="img-caption"><strong>Рисунок 1.</strong> Пример того, как два модуля пользовательского интерфейса, определенные
+фрагментами, могут быть объединены внутри одной операции для работы на планшетах, но разделены на
+смартфонах.</p>
+
+<p>Вернемся к примеру с новостным приложением. Оно может иметь
+два фрагмента, встроенных в <em>Операцию А</em>, когда выполняется на устройстве планшетного формата. В то же время на
+экране смартфона недостаточно места для обоих фрагментов, и поэтому <em>Операция А</em> включает в себя
+только фрагмент со списком статей. Когда пользователь выбирает статью, запускается
+<em>Операция В</em>, содержащая второй фрагмент для чтения статьи. Таким образом, приложение
+поддерживает как планшеты, так и смартфоны благодаря повторному использованию фрагментов в различных сочетаниях, как показано на
+рисунке 1.</p>
+
+<p>Подробные сведения относительно разработки приложения с различными сочетаниями фрагментов для
+различных конфигураций экрана приводятся в руководстве <a href="{@docRoot}guide/practices/tablets-and-handsets.html">Поддержка планшетов и смартфонов</a></p>
+
+
+
+<h2 id="Creating">Создание фрагмента</h2>
+
+<div class="figure" style="width:327px">
+<img src="{@docRoot}images/fragment_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Рисунок 2.</strong> Жизненный цикл фрагмента (во время
+выполнения операции)</p>
+</div>
+
+<p>Для создания фрагмента необходимо создать подкласс класса {@link android.app.Fragment} (или его существующего
+подкласса). Класс {@link android.app.Fragment} имеет код, во многом схожий с
+кодом {@link android.app.Activity}. Он содержит методы обратного вызова, аналогичные методам операции, такие
+как {@link android.app.Fragment#onCreate onCreate()}, {@link android.app.Fragment#onStart onStart()},
+{@link android.app.Fragment#onPause onPause()} и {@link android.app.Fragment#onStop onStop()}. На практике,
+если требуется преобразовать существующее приложение Android так, чтобы в нем использовались фрагменты, достаточно просто переместить
+код из методов обратного вызова операции в соответствующие методы обратного вызова
+фрагмента.</p>
+
+<p>Как правило, необходимо реализовать следующие методы жизненного цикла:</p>
+
+<dl>
+  <dt>{@link android.app.Fragment#onCreate onCreate()}</dt>
+  <dd>Система вызывает этот метод, когда создает фрагмент. В своей реализации разработчик должен
+инициализировать ключевые компоненты фрагмента, которые требуется сохранить, когда фрагмент находится в состоянии
+паузы или возобновлен после остановки.</dd>
+  <dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
+  <dd>Система вызывает этот метод при первом отображении пользовательского интерфейса фрагмента
+на дисплее. Для прорисовки пользовательского интерфейса фрагмента следует возвратить из этого метода объект {@link android.view.View},
+который является корневым в макете фрагмента. Если фрагмент не имеет пользовательского интерфейса, можно
+возвратить null.</dd>
+  <dt>{@link android.app.Activity#onPause onPause()}</dt>
+  <dd>Система вызывает этот метод как первое указание того, что пользователь покидает
+фрагмент (это не всегда означает уничтожение фрагмента). Обычно именно в этот момент
+необходимо фиксировать все изменения, которые должны быть сохранены за рамками текущего сеанса работы пользователя (поскольку
+пользователь может не вернуться назад).</dd>
+</dl>
+
+<p>В большинстве приложений для каждого фрагмента должны быть реализованы, как минимум, эти три метода. Однако существуют и
+другие методы обратного вызова, которые следует использовать для управления различными этапами жизненного цикла
+фрагмента. Все методы обратного вызова жизненного цикла подробно обсуждаются в разделе
+ <a href="#Lifecycle">Управление жизненным циклом фрагмента</a>.</p>
+
+
+<p>Существует также ряд подклассов, которые, возможно, потребуется расширить вместо использования базового класса {@link
+android.app.Fragment}:</p>
+
+<dl>
+  <dt>{@link android.app.DialogFragment}</dt>
+  <dd>Отображение перемещаемого диалогового окна. Использование этого класса для создания диалогового окна является хорошей альтернативой
+ вспомогательным методам диалогового окна в классе{@link android.app.Activity}. Дело в том, что он дает возможность
+вставить диалоговое окно фрагмента в управляемый операцией стек переходов назад для фрагментов,
+что позволяет пользователю вернуться к закрытому фрагменту.</dd>
+
+  <dt>{@link android.app.ListFragment}</dt>
+  <dd>Отображение списка элементов, управляемых адаптером (например, {@link
+android.widget.SimpleCursorAdapter}), аналогично классу {@link android.app.ListActivity}. Этот класс предоставляет
+несколько методов для управления списком представлений, например, метод обратного вызова {@link
+android.app.ListFragment#onListItemClick(ListView,View,int,long) onListItemClick()} для
+обработки нажатий.</dd>
+
+  <dt>{@link android.preference.PreferenceFragment}</dt>
+  <dd>Отображение иерархии объектов {@link android.preference.Preference} в виде списка, аналогично классу
+{@link android.preference.PreferenceActivity}. Этот класс полезен, когда в приложении создается
+операция «Настройки».</dd>
+</dl>
+
+
+<h3 id="UI">Добавление пользовательского интерфейса</h3>
+
+<p>Фрагмент обычно используется как часть пользовательского интерфейса операции, при этом он добавляет в операцию
+свой макет.</p>
+
+<p>Чтобы создать макет для фрагмента, разработчик должен реализовать метод обратного вызова {@link
+android.app.Fragment#onCreateView onCreateView()}, который система Android вызывает,
+когда для фрагмента наступает время отобразить свой макет. Реализация этого метода должна возвращать объект
+{@link android.view.View}, который является корневым в макете фрагмента. </p>
+
+<p class="note"><strong>Примечание.</strong> Если фрагмент является подклассом класса {@link
+android.app.ListFragment}, реализация по умолчанию возвращает класс {@link android.widget.ListView} из метода
+ {@link android.app.Fragment#onCreateView onCreateView()}, так что реализовывать его нет необходиомости.</p>
+
+<p>Чтобы возвратить макет из метода {@link
+android.app.Fragment#onCreateView onCreateView()}, можно выполнить его раздувание из <a href="{@docRoot}guide/topics/resources/layout-resource.html">ресурса макета</a>, определенного в XML-файле. Для
+этой цели метод {@link android.app.Fragment#onCreateView onCreateView()} предоставляет объект
+{@link android.view.LayoutInflater}.</p>
+
+<p>Например, код подкласса класса {@link android.app.Fragment}, загружающий макет из файла
+{@code example_fragment.xml}, может выглядеть так:</p>
+
+<pre>
+public static class ExampleFragment extends Fragment {
+    &#64;Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.example_fragment, container, false);
+    }
+}
+</pre>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>Создание макета</h3>
+  <p>В приведенном коде конструкция {@code R.layout.example_fragment} является ссылкой на ресурс макета
+по имени {@code example_fragment.xml}, хранящийся в ресурсах приложения. Подробные сведения о
+создании макета в XML см. в статье <a href="{@docRoot}guide/topics/ui/index.html">Пользовательский интерфейс</a>.
+</p>
+</div>
+</div>
+
+<p>Параметр {@code container}, передаваемый методу {@link android.app.Fragment#onCreateView
+onCreateView()}, является родительским классом {@link android.view.ViewGroup} (из макета операции), в который
+будет вставлен макет
+фрагмента. Параметр {@code savedInstanceState} является классом {@link android.os.Bundle}, который
+предоставляет данные о предыдущем экземпляре фрагмента во время возобновления фрагмента
+(восстановление состояния подробно обсуждается в разделе <a href="#Lifecycle">Управление
+жизненным циклом фрагмента</a>).</p>
+
+<p>Метод {@link android.view.LayoutInflater#inflate(int,ViewGroup,boolean) inflate()} принимает
+три аргумента:</p>
+<ul>
+  <li>Идентификатор ресурса макета, раздувание которого следует выполнить.</li>
+  <li>Объект класса {@link android.view.ViewGroup}, который должен стать родительским для макета после раздувания. Передача параметра {@code
+container} необходима для того, чтобы система смогла применить параметры макета к корневому представлению
+раздутого макета, определяемому родительским представлением, в которое направляется макет.</li>
+  <li>Логическое значение, показывающее, следует ли прикрепить макет к объекту {@link
+android.view.ViewGroup} (второй параметр) во время раздувания. (В данном случае это
+false, потому что система уже вставляет раздутый макет в объект {@code
+container}, ипередача значения true создала бы лишнюю группу представления в окончательном макете).</li>
+</ul>
+
+<p>Мы увидели, как создавать фрагмент, предоставляющий макет. Теперь необходимо добавить
+фрагмент в операцию.</p>
+
+
+
+<h3 id="Adding">Добавление фрагмента в операцию</h3>
+
+<p>Как правило, фрагмент добавляет часть пользовательского интерфейса в операцию, и этот интерфейс встраивается
+в общую иерархию представлений операции. Разработчик может добавить фрагмент в макет операции двумя
+способами:</p>
+
+<ul>
+  <li><b>объявив фрагмент в файле макета операции.</b>
+<p>В этом случае можно
+указать свойства макета для фрагмента, как будто он является представлением. Например, файл макета операции
+с двумя фрагментами может выглядеть следующим образом:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"&gt;
+    &lt;fragment android:name="com.example.news.ArticleListFragment"
+            android:id="@+id/list"
+            android:layout_weight="1"
+            android:layout_width="0dp"
+            android:layout_height="match_parent" /&gt;
+    &lt;fragment android:name="com.example.news.ArticleReaderFragment"
+            android:id="@+id/viewer"
+            android:layout_weight="2"
+            android:layout_width="0dp"
+            android:layout_height="match_parent" /&gt;
+&lt;/LinearLayout&gt;
+</pre>
+  <p>Атрибут {@code android:name} в элементе {@code &lt;fragment&gt;} определяет класс {@link
+android.app.Fragment}, экземпляр которого создается в макете.</p>
+
+<p>Когда система создает этот макет операции, она создает экземпляр каждого фрагмента, определенного в макете,
+и для каждого вызывает метод {@link android.app.Fragment#onCreateView onCreateView()},
+чтобы получить макет каждого фрагмента. Система вставляет объект {@link android.view.View}, возвращенный
+ фрагментом, непосредственно вместо элемента {@code &lt;fragment&gt;}.</p>
+
+<div class="note">
+  <p><strong>Примечание.</strong> Каждый фрагмент должен иметь уникальный идентификатор, который
+система сможет использовать для восстановления фрагмента в случае перезапуска операции. (Что касается разработчика, он может использовать этот идентификатор для
+захвата фрагмента с целью выполнения транзакций с ним, например, чтобы удалить его). Предоставить
+идентификатор фрагменту можно тремя способами:</p>
+  <ul>
+    <li>указать атрибут {@code android:id} с уникальным идентификатором;</li>
+    <li>указать атрибут {@code android:tag} с уникальной строкой;</li>
+    <li>ничего не предпринимать, чтобы система использовала идентификатор контейнерного
+представления.</li>
+  </ul>
+</div>
+  </li>
+
+  <li><b>или программным образом, добавив фрагмент в существующий объект {@link android.view.ViewGroup}.</b>
+<p>В любой момент выполнения операции разработчик может добавить фрагменты в ее макет.  Для
+этого достаточно указать объект {@link
+android.view.ViewGroup}, в котором следует разместить фрагмент.</p>
+  <p>Для выполнения транзакций с фрагментами внутри операции (таких как добавление, удаление или замена
+фрагмента) необходимо использовать API-интерфейсы из {@link android.app.FragmentTransaction}. Экземпляр
+ класса {@link android.app.FragmentTransaction} можно получить от объекта {@link android.app.Activity} следующим образом:</p>
+
+<pre>
+FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()}
+FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
+</pre>
+
+<p>После этого можно добавить фрагмент методом {@link
+android.app.FragmentTransaction#add(int,Fragment) add()}, указав добавляемый фрагмент и
+представление, в которое он должен быть добавлен. Например:</p>
+
+<pre>
+ExampleFragment fragment = new ExampleFragment();
+fragmentTransaction.add(R.id.fragment_container, fragment);
+fragmentTransaction.commit();
+</pre>
+
+  <p>Первый аргумент, передаваемый методу {@link android.app.FragmentTransaction#add(int,Fragment) add()},
+представляет собой контейнерный объект {@link android.view.ViewGroup} для фрагмента, указанный при помощи
+идентификатора ресурса. Второй параметр — это фрагмент, который нужно добавить.</p>
+  <p>Выполнив изменения с помощью 
+{@link android.app.FragmentTransaction}, необходимо
+вызвать метод {@link android.app.FragmentTransaction#commit}, чтобы они вступили в силу.</p>
+  </li>
+</ul>
+
+
+<h4 id="AddingWithoutUI">Добавление фрагмента, не имеющего пользовательского интерфейса</h4>
+
+<p>Пример, приведенный выше, демонстрирует, как добавлять в операцию фрагмент с предоставлением пользовательского интерфейса. Однако
+можно использовать фрагмент и для реализации фонового поведения операции без какого-либо дополнительного
+пользовательского интерфейса.</p>
+
+<p>Чтобы добавить фрагмент без пользовательского интерфейса, добавьте фрагмент из операции, используя метод {@link
+android.app.FragmentTransaction#add(Fragment,String)} (передав ему уникальный строковый «тег» для
+фрагмента вместо идентификатора представления). Фрагмент будет добавлен, но, поскольку он не связан
+с представлением в макете операции, он не будет принимать вызов метода {@link
+android.app.Fragment#onCreateView onCreateView()}. Поэтому в реализации этого метода нет необходимости.</p>
+
+<p>Передача строкового тега свойственна не только фрагментам без пользовательского интерфейса, поэтому можно
+передавать строковые теги и фрагментам, имеющим пользовательский интерфейс. Однако, если у фрагмента нет 
+ пользовательского интерфейса, то строковый тег является единственным способом его идентификации. Если впоследствии потребуется получить фрагмент от
+операции, нужно будет вызвать метод {@link android.app.FragmentManager#findFragmentByTag
+findFragmentByTag()}.</p>
+
+<p>Пример операции, использующей фрагмент в качестве фонового потока, без пользовательского интерфейса, приведен в образце кода {@code
+FragmentRetainInstance.java}, входящем в число образцов в SDK (и доступном при помощи 
+Android SDK Manager). Путь к нему в системе — 
+<code>&lt;sdk_root&gt;/APIDemos/app/src/main/java/com/example/android/apis/app/FragmentRetainInstance.java</code>.</p>
+
+
+
+<h2 id="Managing">Управление фрагментами</h2>
+
+<p>Для управления фрагментами в операции нужен класс {@link android.app.FragmentManager}. Чтобы получить его,
+ следует вызвать метод {@link android.app.Activity#getFragmentManager()} из кода операции.</p>
+
+<p>Ниже указаны действия, которые позволяет выполнить{@link android.app.FragmentManager}:</p>
+
+<ul>
+  <li>получать фрагменты, имеющиеся в операции, с помощью метода {@link
+android.app.FragmentManager#findFragmentById findFragmentById()} (для фрагментов, предоставляющих пользовательский интерфейс в
+ макете операции) или {@link android.app.FragmentManager#findFragmentByTag
+findFragmentByTag()} (как для фрагментов, имеющих пользовательский интерфейс, так и для фрагментов без него);</li> 
+  <li>снимать фрагменты со стека переходов назад методом {@link
+android.app.FragmentManager#popBackStack()} (имитируя нажатие кнопки <em>Назад</em> пользователем);</li>
+  <li>регистрировать процесс-слушатель изменений в стеке переходов назад при помощи метода {@link
+android.app.FragmentManager#addOnBackStackChangedListener addOnBackStackChangedListener()}.</li>
+</ul>
+
+<p>Дополнительные сведения об этих и других методах приводятся в документации по классу {@link
+android.app.FragmentManager}.</p>
+
+<p>Как было показано в предыдущем разделе, можно использовать класс {@link android.app.FragmentManager}
+для открытия {@link android.app.FragmentTransaction}, что позволяет выполнять транзакции с фрагментами, например,
+добавление и удаление.</p>
+
+
+<h2 id="Transactions">Выполнение транзакций с фрагментами</h2>
+
+<p>Большим достоинством использования фрагментов в операции является возможность добавлять, удалять, заменять их и
+выполнять другие действия с ними в ответ на действия пользователя. Любой набор изменений,
+вносимых в операцию, называется транзакцией. Ее можно выполнить при помощи API-интерфейсов в {@link
+android.app.FragmentTransaction}. Каждую транзакцию можно сохранить в стеке переходов назад,
+которым управляет операция. Это позволит пользователю перемещаться назад по изменениям во фрагментах (аналогично перемещению
+назад по операциям).</p>
+
+<p>Экземпляр класса {@link android.app.FragmentTransaction} можно получить от {@link
+android.app.FragmentManager}, например, так:</p>
+
+<pre>
+FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()};
+FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
+</pre>
+
+<p>Каждая транзакция является набором изменений, выполняемых одновременно. Разработчик может указать
+все изменения, которые ему нужно выполнить в данной транзакции, вызывая методы {@link
+android.app.FragmentTransaction#add add()}, {@link android.app.FragmentTransaction#remove remove()}
+и {@link android.app.FragmentTransaction#replace replace()}. Затем, чтобы применить транзакцию
+к операции, следует вызвать метод {@link android.app.FragmentTransaction#commit()}.</p>
+</dl>
+
+<p>Впрочем, до вызова метода{@link
+android.app.FragmentTransaction#commit()} у разработчика может возникнуть необходимость вызвать метод {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()}, чтобы добавить транзакцию
+в стек переходов назад по транзакциям фрагмента. Этим стеком переходов назад управляет операция, что позволяет
+пользователю вернуться к предыдущему состоянию фрагмента, нажав кнопку <em>Назад</em>.</p>
+
+<p>Например, следующий код демонстрирует, как можно заменить один фрагмент другим, сохранив при этом предыдущее
+состояние в стеке переходов назад:</p>
+
+<pre>
+// Create new fragment and transaction
+Fragment newFragment = new ExampleFragment();
+FragmentTransaction transaction = getFragmentManager().beginTransaction();
+
+// Replace whatever is in the fragment_container view with this fragment,
+// and add the transaction to the back stack
+transaction.replace(R.id.fragment_container, newFragment);
+transaction.addToBackStack(null);
+
+// Commit the transaction
+transaction.commit();
+</pre>
+
+<p>В этом коде объект {@code newFragment} замещает фрагмент (если таковой имеется), находящийся в
+контейнере макета, на который указывает идентификатор {@code R.id.fragment_container}. В результате вызова метода {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()} транзакция замены
+сохраняется в стеке переходов назад, чтобы пользователь мог обратить транзакцию и вернуть
+предыдущий фрагмент, нажав кнопку <em>Назад</em>.</p>
+
+<p>Если в транзакцию добавить несколько изменений (например, еще раз вызвать {@link
+android.app.FragmentTransaction#add add()} или {@link android.app.FragmentTransaction#remove
+remove()}), а затем вызвать {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()}, все изменения, примененные до вызова
+метода {@link android.app.FragmentTransaction#commit commit()}, будут добавлены в стек
+ переходов назад как одна транзакция, и кнопка<em>Назад</em> обратит их все вместе.</p>
+
+<p>Порядок добавления изменений к объекту {@link android.app.FragmentTransaction} не играет роли
+ за следующими исключениями:</p>
+<ul>
+  <li>метод {@link android.app.FragmentTransaction#commit()} должен быть вызван в последнюю очередь;</li>
+  <li>если в один контейнер добавляется несколько фрагментов, то порядок их
+добавления определяет порядок, в котором они появляются в иерархии видов.</li>
+</ul>
+
+<p>Если при выполнении транзакции, удаляющей фрагмент, не вызвать метод {@link android.app.FragmentTransaction#addToBackStack(String)
+addToBackStack()}, при фиксации транзакции фрагмент
+уничтожается, и пользователь теряет возможность вернуться к нему. В то же время, если
+вызвать {@link android.app.FragmentTransaction#addToBackStack(String) addToBackStack()} при
+удалении фрагмента, фрагмент перейдет в состояние <em>остановки</em> и будет возобновлен, если пользователь вернется
+к нему.</p>
+
+<p class="note"><strong>Совет.</strong> К каждой транзакции с фрагментом можно применить анимацию
+перехода, вызвав {@link android.app.FragmentTransaction#setTransition setTransition()} до
+фиксации.</p>
+
+<p>Вызов метода {@link android.app.FragmentTransaction#commit()} не приводит к немедленному выполнению
+ транзакции. Метод запланирует ее выполнение в потоке пользовательского интерфейса операции (в «главном» потоке), как только
+у потока появится возможность для этого. Впрочем, при необходимости можно вызвать {@link
+android.app.FragmentManager#executePendingTransactions()} из потока пользовательского интерфейса, чтобы 
+транзакции, запланированные методом {@link android.app.FragmentTransaction#commit()} были выполнены немедленно. Как правило,
+в этом нет необходимости, за исключением случаев, когда транзакция является зависимостью для заданий в других потоках.</p>
+
+<p class="caution"><strong>Внимание!</strong> Фиксировать транзакцию методом {@link
+android.app.FragmentTransaction#commit commit()} можно только до того, как операция<a href="{@docRoot}guide/components/activities.html#SavingActivityState">сохранит свое
+состояние</a> (после того, как пользователь покинет ее). Попытка зафиксировать транзакцию после этого момента
+ вызовет исключение. Дело в том, что состояние после фиксации может быть потеряно, если понадобится
+восстановить операцию. В ситуациях, в которых потеря фиксации не критична, следует вызывать {@link
+android.app.FragmentTransaction#commitAllowingStateLoss()}.</p>
+
+
+
+
+<h2 id="CommunicatingWithActivity">Взаимодействие с операцией</h2>
+
+<p>Хотя {@link android.app.Fragment} реализован как объект, независимый от
+класса {@link android.app.Activity}, и может быть использован внутри нескольких операций, конкретный экземпляр
+фрагмента напрямую связан с содержащей его операцией.</p>
+
+<p>В частности, фрагмент может обратиться к экземпляру {@link android.app.Activity} с помощью метода {@link
+android.app.Fragment#getActivity()} и без труда выполнить такие задачи, как поиск представления в макете
+операции:</p>
+
+<pre>
+View listView = {@link android.app.Fragment#getActivity()}.{@link android.app.Activity#findViewById findViewById}(R.id.list);
+</pre>
+
+<p>Аналогичным образом операция может вызывать методы фрагмента, получив ссылку на объект
+{@link android.app.Fragment} от {@link android.app.FragmentManager} с помощью метода {@link
+android.app.FragmentManager#findFragmentById findFragmentById()} или {@link
+android.app.FragmentManager#findFragmentByTag findFragmentByTag()}. Например:</p>
+
+<pre>
+ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
+</pre>
+
+
+<h3 id="EventCallbacks">Создание обратного вызова события для операции</h3>
+
+<p>В некоторых случаях необходимо, чтобы фрагмент использовал события совместно с операцией. Хороший способ реализации этого
+состоит в том, чтобы определить интерфейс обратного вызова внутри фрагмента и потребовать от контейнерной операции
+его реализации. Когда операция примет обратный вызов через этот интерфейс, она сможет обмениваться информацией с
+другими фрагментами в макете по мере необходимости.</p>
+
+<p>Пусть, например, у новостного приложения имеются два фрагмента в одной операции: один для отображения списка
+статей (фрагмент A), а другой&mdash;для отображения статьи (фрагмент B). Тогда фрагмент A должен сообщать
+операции о том, что выбран пункт списка, чтобы она могла сообщить фрагменту B о необходимости отобразить статью. В
+этом случае интерфейс {@code OnArticleSelectedListener} объявляется во фрагменте A:</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    ...
+    // Container Activity must implement this interface
+    public interface OnArticleSelectedListener {
+        public void onArticleSelected(Uri articleUri);
+    }
+    ...
+}
+</pre>
+
+<p>Тогда операция, содержащая этот фрагмент, реализует интерфейс {@code OnArticleSelectedListener}
+и переопределит
+метод {@code onArticleSelected()}, чтобы извещать фрагмент B о событии, исходящем от фрагмента A. Чтобы
+контейнерная операция наверняка реализовала этот интерфейс, метод обратного вызова {@link
+android.app.Fragment#onAttach onAttach()} во фрагменте A (который система вызывает при добавлении
+фрагмента в операцию) создает экземпляр класса {@code OnArticleSelectedListener}, выполнив
+приведение типа объекта {@link android.app.Activity}, который передается методу {@link android.app.Fragment#onAttach
+onAttach()}:</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    OnArticleSelectedListener mListener;
+    ...
+    &#64;Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        try {
+            mListener = (OnArticleSelectedListener) activity;
+        } catch (ClassCastException e) {
+            throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener");
+        }
+    }
+    ...
+}
+</pre>
+
+<p>Если операция не реализовала интерфейс, фрагмент генерирует исключение
+{@link java.lang.ClassCastException}.
+В случае успеха элемент {@code mListener} будет содержать ссылку на реализацию интерфейса
+{@code OnArticleSelectedListener} в операции, чтобы фрагмент A мог использовать
+события совместно с операцией, вызывая методы, определенные интерфейсом {@code OnArticleSelectedListener}. Например, если фрагмент A является расширением
+класса {@link android.app.ListFragment}, то всякий раз,
+когда пользователь нажимает элемент списка, система вызывает {@link android.app.ListFragment#onListItemClick
+onListItemClick()} во фрагменте. Этот метод, в свою очередь, вызывает метод {@code onArticleSelected()}, чтобы использовать
+событие совместно с операцией:</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    OnArticleSelectedListener mListener;
+    ...
+    &#64;Override
+    public void onListItemClick(ListView l, View v, int position, long id) {
+        // Append the clicked item's row ID with the content provider Uri
+        Uri noteUri = ContentUris.{@link android.content.ContentUris#withAppendedId withAppendedId}(ArticleColumns.CONTENT_URI, id);
+        // Send the event and Uri to the host activity
+        mListener.onArticleSelected(noteUri);
+    }
+    ...
+}
+</pre>
+
+<p>Параметр {@code id}, передаваемый методу {@link
+android.app.ListFragment#onListItemClick onListItemClick()}, — это идентификатор строки с выбранным элементом списка,
+который операция (или другой фрагмент) использует для получения статьи от объекта {@link
+android.content.ContentProvider} приложения.</p>
+
+<p><!--To see a complete implementation of this kind of callback interface, see the <a
+href="{@docRoot}resources/samples/NotePad/index.html">NotePad sample</a>. -->Дополнительные сведения о
+работе с поставщиком контента приводятся в документе <a href="{@docRoot}guide/topics/providers/content-providers.html">Поставщики контента</a>.</p>
+
+
+
+<h3 id="ActionBar">Добавление элементов в строку действий</h3>
+
+<p>Фрагменты могут добавлять пункты меню в <a href="{@docRoot}guide/topics/ui/menus.html#options-menu">Меню вариантов</a> операции (и, следовательно, в <a href="{@docRoot}guide/topics/ui/actionbar.html">Строку действий</a>), реализовав 
+{@link android.app.Fragment#onCreateOptionsMenu(Menu,MenuInflater) onCreateOptionsMenu()}. Однако, чтобы этот метод мог
+принимать вызовы, необходимо вызывать {@link
+android.app.Fragment#setHasOptionsMenu(boolean) setHasOptionsMenu()} во время выполнения метода {@link
+android.app.Fragment#onCreate(Bundle) onCreate()}, чтобы сообщить, что фрагмент
+намеревается добавить пункты в Меню вариантов (в противном случае фрагмент не примет вызов метода
+{@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()}).</p>
+
+<p>Любые пункты, добавляемые фрагментом в Меню вариантов, присоединяются к
+уже существующим. Кроме того, фрагмент принимает обратные вызовы метода {@link
+android.app.Fragment#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}, когда пользователь выбирает пункт
+меню.</p>
+
+<p>Разработчик может также зарегистрировать представление в макете своего фрагмента, чтобы предоставить контекстное меню. Для этого следует вызвать метод {@link
+android.app.Fragment#registerForContextMenu(View) registerForContextMenu()}. Когда пользователь открывает
+контекстное меню, фрагмент принимает вызов метода {@link
+android.app.Fragment#onCreateContextMenu(ContextMenu,View,ContextMenu.ContextMenuInfo)
+onCreateContextMenu()}. Когда пользователь выбирает пункт меню, фрагмент принимает вызов метода {@link
+android.app.Fragment#onContextItemSelected(MenuItem) onContextItemSelected()}.</p>
+
+<p class="note"><strong>Примечание.</strong> Хотя фрагмент принимает обратный вызов по событию «выбран пункт меню»
+для каждого добавленного им пункта, операция первой принимает соответствующий обратный вызов, когда пользователь
+выбирает пункт меню. Если имеющаяся в операции реализация обратного вызова по событию «выбран пункт меню» не
+обрабатывает выбранный пункт, событие передается методу обратного вызова во фрагменте. Это справедливо для
+Меню вариантов и контекстных меню.</p>
+
+<p>Подробные сведения относительно меню см. в руководствах для разработчиков <a href="{@docRoot}guide/topics/ui/menus.html">Меню</a> и <a href="{@docRoot}guide/topics/ui/actionbar.html">Строка действий</a> </p>
+
+
+
+
+<h2 id="Lifecycle">Управление жизненным циклом фрагмента</h2>
+
+<div class="figure" style="width:350px">
+<img src="{@docRoot}images/activity_fragment_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Рисунок 3</strong>. Влияние жизненного цикла операции на жизненный цикл
+фрагмента</p>
+</div>
+
+<p>Управление жизненным циклом фрагмента во многом аналогично управлению жизненным циклом операции. Как и 
+операция, фрагмент может существовать в одном из трех состояний:</p>
+
+<dl>
+  <dt><i>Возобновлен</i></dt>
+    <dd>Фрагмент виден во время выполнения операции.</dd>
+
+  <dt><i>Приостановлен</i></dt>
+    <dd>На переднем плане выполняется и находится в фокусе другая операция, но операция, содержащая данный
+фрагмент, по-прежнему видна (операция переднего плана частично прозрачна или не
+занимает весь экран).</dd>
+
+  <dt><i>Остановлен</i></dt>
+    <dd>Фрагмент не виден. Либо контейнерная операция остановлена, либо
+фрагмент удален из нее, но добавлен в стек переходов назад. Остановленный фрагмент
+по-прежнему активен (вся информация о состоянии и элементах сохранена в системе). Однако он больше
+не виден пользователю и будет уничтожен в случае уничтожения операции.</dd>
+</dl>
+
+<p>Здесь снова просматривается аналогия с операцией: разработчик может сохранить состояние фрагмента с помощью {@link
+android.os.Bundle} на случай, если процесс операции будет уничтожен, а разработчику понадобится восстановить
+состояние фрагмента при повторном создании операции. Состояние можно сохранить во время выполнения метода обратного вызова {@link
+android.app.Fragment#onSaveInstanceState onSaveInstanceState()} во фрагменте и восстановить его во время выполнения
+{@link android.app.Fragment#onCreate onCreate()}, {@link
+android.app.Fragment#onCreateView onCreateView()} или {@link
+android.app.Fragment#onActivityCreated onActivityCreated()}. Дополнительные сведения о сохранении
+состояния приводятся в документе <a href="{@docRoot}guide/components/activities.html#SavingActivityState">Операции</a>.
+</p>
+
+<p>Самое значительное различие в ходе жизненного цикла между операцией и фрагментом состоит в принципах
+их сохранения в соответствующих стеках переходов назад. По умолчанию операция помещается в управляемый системой стек переходов назад для операций,
+когда она останавливается (чтобы пользователь мог вернуться
+к ней с помощью кнопки <em>Назад</em>, как описано в статье <a href="{@docRoot}guide/components/tasks-and-back-stack.html">Задачи и стек переходов назад</a>).
+В то же время, фрагмент помещается в стек переходов назад, управляемый операцией, только когда разработчик
+явно запросит сохранение конкретного экземпляра, вызвав метод {@link
+android.app.FragmentTransaction#addToBackStack(String) addToBackStack()} во время транзакции,
+удаляющей фрагмент.</p>
+
+<p>В остальном управление жизненным циклом фрагмента очень похоже на управление жизненным циклом 
+операции. Поэтому практические рекомендации по <a href="{@docRoot}guide/components/activities.html#Lifecycle">управлению жизненным циклом
+операций</a> применимы и к фрагментам. При этом разработчику необходимо понимать, как жизненный цикл
+операции влияет на жизненный цикл фрагмента.</p>
+
+<p class="caution"><strong>Внимание!</strong> Если возникнет необходимость в объекте {@link android.content.Context}
+внутри объекта класса {@link android.app.Fragment}, можно вызвать метод{@link android.app.Fragment#getActivity()}.
+Однако разработчик должен быть внимательным и вызывать метод {@link android.app.Fragment#getActivity()} только когда фрагмент
+прикреплен к операции. Если фрагмент еще не прикреплен или был откреплен в конце
+его жизненного цикла, метод {@link android.app.Fragment#getActivity()} возвратит null.</p>
+
+
+<h3 id="CoordinatingWithActivity">Согласование с жизненным циклом операции</h3>
+
+<p>Жизненый цикл операции, содержащей фрагмент, непосредственным образом влияет на жизненый цикл
+фрагмента, так что каждый обратный вызов жизненного цикла операции приводит к аналогичному обратного вызову для каждого
+фрагмента. Например, когда операция принимает вызов {@link android.app.Activity#onPause}, каждый
+ее фрагмент принимает {@link android.app.Fragment#onPause}.</p>
+
+<p>Однако у фрагментов есть несколько дополнительных методов обратного вызова жизненого цикла, которые обеспечивают уникальное взаимодействие с операцией
+для выполнения таких действий, как создание и уничтожение пользовательского интерфейса фрагмента. Вот эти
+методы:</p>
+
+<dl>
+  <dt>{@link android.app.Fragment#onAttach onAttach()}</dt>
+    <dd>Вызывается, когда фрагмент связывается с операцией (ему передается объект {@link
+android.app.Activity}).</dd>
+  <dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
+    <dd>Вызывается для создания иерархии представлений, связанной с фрагментом.</dd>
+  <dt>{@link android.app.Fragment#onActivityCreated onActivityCreated()}</dt>
+    <dd>Вызывается, когда метод {@link android.app.Activity#onCreate
+onCreate()}, принадлежащий операции, возвращает управление.</dd>
+  <dt>{@link android.app.Fragment#onDestroyView onDestroyView()}</dt>
+    <dd>Вызывается при удалении иерархии представлений, связанной с фрагментом.</dd>
+  <dt>{@link android.app.Fragment#onDetach onDetach()}</dt>
+    <dd>Вызывается при разрыве связи фрагмента с операцией.</dd>
+</dl>
+
+<p>Зависимость жизненого цикла фрагмента от содержащей его операции иллюстрируется
+рисунком 3. На этом рисунке можно видеть, что очередное состояние операции определяет, какие
+методы обратного вызова может принимать фрагмент. Например, когда операция принимает свой метод обратного вызова {@link
+android.app.Activity#onCreate onCreate()}, фрагмент внутри этой операции принимает всего лишь метод обратного вызова
+{@link android.app.Fragment#onActivityCreated onActivityCreated()}.</p>
+
+<p>Когда операция переходит в состояние «возобновлена», можно свободно добавлять в нее фрагменты и удалять
+их. Таким образом, жизненный цикл фрагмента может быть независимо изменен, только пока операция остается 
+в состоянии «возобновлена».</p>
+
+<p>Однако, когда операция выходит из этого состояния, продвижение фрагмента по его
+жизненному циклу снова осуществляется операцией.</p>
+
+
+
+
+<h2 id="Example">Пример:</h2>
+
+<p>Чтобы суммировать все сказанное в этом документе, рассмотрим пример операции,
+использующей два фрагмента для создания макета с двумя панелями. Операция, код которой приведен ниже, включает в себя один фрагмент для
+отображения списка пьес Шекспира, а другой — для отображения краткого содержания пьесы, выбранной
+из списка. В примере показано, как следует организовывать различные конфигурации фрагментов
+в зависимости от конфигурации экрана. </p>
+
+<p class="note"><strong>Примечание.</strong> Полный исходный код этой операции находится в разделе
+<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.html">{@code
+FragmentLayout.java}</a>.</p>
+
+<p>Главная операция применяет макет обычным способом, в методе {@link
+android.app.Activity#onCreate onCreate()}:</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java main}
+
+<p>Здесь применяется макет {@code fragment_layout.xml}:</p>
+
+{@sample development/samples/ApiDemos/res/layout-land/fragment_layout.xml layout}
+
+<p>Пользуясь этим макетом, система создает экземпляр класса {@code TitlesFragment} (список
+пьес), как только операция загрузит макет. При этом объект {@link android.widget.FrameLayout}
+(в котором будет находиться фрагмент с кратким содержанием) занимает место в правой части
+экрана, но поначалу остается пустым. Как будет показано ниже, фрагмент не помещается в {@link android.widget.FrameLayout}, пока пользователь не выберет элемент
+в списке.</p>
+
+<p>Однако не все экраны достаточно широки, чтобы отображать
+краткое содержание рядом со списком пьес. Поэтому описанный выше макет используется только при альбомной ориентации
+экрана и хранится в файле {@code res/layout-land/fragment_layout.xml}.</p>
+
+<p>Когда же устройство находится в книжной ориентации, система применяет макет, приведенный ниже, который
+хранится в файле{@code res/layout/fragment_layout.xml}:</p>
+
+{@sample development/samples/ApiDemos/res/layout/fragment_layout.xml layout}
+
+<p>В этом макете присутствует только объект {@code TitlesFragment}. Это означает, что при
+книжной ориентации устройства виден только список пьес. Когда пользователь нажимает на элемент
+списка в этой конфигурации, приложение запускает новую операцию для отображения краткого содержания,
+а не загружает второй фрагмент.</p>
+
+<p>Далее можно видеть, как это реализовано в классах фрагмента. Вначале идет код класса {@code
+TitlesFragment}, отображающий список пьес Шекспира. Этот фрагмент является расширением класса {@link
+android.app.ListFragment} и использует его функции для выполнения основной работы со списком.</p>
+
+<p>Изучая код, обратите внимание на то, что в качестве реакции на нажатие пользователем
+элемента списка возможны две модели поведения. В зависимости от того, какой из двух макетов активен, либо в рамках одной операции создается и отображается новый фрагмент
+с кратким содержанием (за счет добавления фрагмента в объект {@link
+android.widget.FrameLayout}), либо запускается новая операция (отображающая фрагмент).</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java titles}
+
+<p>Второй фрагмент, {@code DetailsFragment}, отображает краткое содержание пьесы, выбранной в
+списке {@code TitlesFragment}:</p>
+ 
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
+
+<p>Вспомним код класса {@code TitlesFragment}: если пользователь нажимает на пункт списка, а
+текущий макет <em>не</em> включает в себя представление {@code R.id.details} (которому принадлежит фрагмент
+{@code DetailsFragment}), то приложение запускает операцию {@code DetailsActivity}
+для отображения содержимого элемента.</p>
+
+<p>Далее идет код класса {@code DetailsActivity}, который всего лишь содержит объект {@code DetailsFragment} для отображения
+краткого содержания выбранной пьесы на экране в книжной ориентации:</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
+details_activity}
+ 
+<p>Обратите внимание, что в альбомной конфигурации эта операция самостоятельно завершается, чтобы главная
+операция могла принять управление и отобразить фрагмент {@code DetailsFragment} рядом с фрагментом{@code TitlesFragment}.
+Это может произойти, если пользователь запустит операцию {@code DetailsActivity} в книжной ориентации экрана, а
+затем перевернет устройство в альбомную ориентацию (в результате чего текущая операция будет перезапущена).</p>
+
+
+<p>Дополнительные образцы кода, использующего фрагменты (и файлы с полным исходным кодом этого примера),
+доступны в приложении-примере API Demos в разделе <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/index.html#Fragment">
+ApiDemos</a> (которое можно загрузить из <a href="{@docRoot}resources/samples/get.html">компонента Samples SDK</a>).</p>
+
+
diff --git a/docs/html-intl/intl/ru/guide/components/fundamentals.jd b/docs/html-intl/intl/ru/guide/components/fundamentals.jd
new file mode 100644
index 0000000..181cbbd
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/components/fundamentals.jd
@@ -0,0 +1,480 @@
+page.title=Основы создания приложений
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Содержание документа</h2>
+<ol>
+<li><a href="#Components">Компоненты приложения</a>
+  <ol>
+    <li><a href="#ActivatingComponents">Активация компонентов</a></li>
+  </ol>
+</li>
+<li><a href="#Manifest">Файл манифеста</a>
+  <ol>
+    <li><a href="#DeclaringComponents">Объявление компонентов</a></li>
+    <li><a href="#DeclaringRequirements">Объявление требований приложения</a></li>
+  </ol>
+</li>
+<li><a href="#Resources">Ресурсы приложения</a></li>
+</ol>
+</div>
+</div>
+
+<p>Приложения для Android пишутся на языке программирования Java. Инструменты Android SDK (Software Development Kit – комплект разработки программного обеспечения) компилируют
+написанный вами код &mdash; и все требуемые файлы данных и ресурсов &mdash; в файл APK – <i>программный пакет Android</i>,
+который представляет собой файл архива с расширением {@code .apk}. В файле APK находится все, что требуется для работы
+Android-приложения, и он позволяет установить приложение на любом устройстве под управлением системы Android.</p>
+
+<p>Каждое приложение Android, установленное на устройстве, работает в собственной "песочнице" (изолированной программной среде): </p>
+
+<ul>
+ <li>операционная система Android представляет собой многопользовательскую систему Linux, в которой каждое приложение является
+отдельным пользователем;</li>
+
+<li>по умолчанию система назначает каждому приложению уникальный идентификатор пользователя Linux (этот идентификатор используется только
+системой и неизвестен приложению); система устанавливает полномочия для всех файлов
+ в приложении, с тем чтобы доступ к ним был разрешен только пользователю с идентификатором, назначенным этому приложению; </li>
+
+<li>у каждого процесса имеется собственная виртуальная машина (ВМ), так что код приложения выполняется изолированно от
+других приложений;</li>
+
+<li>по умолчанию каждое приложение выполняется в собственном процессе Linux. Android запускает процесс, когда требуется
+выполнить какой-либо компонент приложения, а затем завершает процесс, когда он больше не
+нужен либо когда системе требуется освободить память для других приложений.</li>
+</ul>
+
+<p>Таким образом система Android реализует <em>принцип предоставления минимальных прав</em>. То есть
+каждое приложение по умолчанию имеет доступ только к тем компонентам, которые ему необходимы для работы, и
+ни к каким другим. Благодаря этому формируется исключительно безопасная среда, в которой приложение не имеет доступа к недозволенным областям
+системы.</p>
+
+<p>Однако у приложения есть варианты предоставления своих данных другим приложениям и
+доступа к системным службам:</p>
+
+<ul>
+  <li>двум приложениям можно назначить один идентификатор пользователя Linux. В этом случае
+каждый из них сможет обращаться к файлам другого приложения.  Для экономии ресурсов системы также можно
+сделать так, чтобы приложения с одинаковым идентификатором пользователя выполнялись в одном процессе Linux и использовали одну ВМ (
+приложения также должны быть подписаны одним сертификатом);</li>
+  <li>приложение может запросить разрешение на доступ к данным устройства, например к контактам
+пользователя, SMS-сообщениям, подключаемой карте памяти (SD-карте), камере, Bluetooth и др. Все
+разрешения должны предоставляться приложению при его установке.</li>
+</ul>
+
+<p>Это основные сведения о том, каким образом приложение Android существует в системе. В остальной части
+этого документа раскрываются следующие темы:</p>
+<ul>
+  <li>базовые компоненты, которые определяют приложение;</li>
+  <li>файл манифеста, в котором объявляются компоненты и функции устройства, необходимые для
+приложения;</li>
+  <li>ресурсы, которые существуют отдельно от кода приложения и позволяют приложению
+адаптировать свою работу к устройствам с различными конфигурациями.</li>
+</ul>
+
+
+
+<h2 id="Components">Компоненты приложения</h2>
+
+<p>Компоненты приложения являются кирпичиками, из которых состоит приложение для Android. Каждый
+компонент представляет собой отдельную точку, через которую система может войти в приложение. Не все
+компоненты являются точками входа для пользователя, а некоторые из них зависят друг от друга. При этом каждый компонент является
+самостоятельной структурной единицей и играет определенную роль &mdash; каждый из них представляет собой уникальный элемент структуры, который
+определяет работу приложения в целом.</p>
+
+<p>Компоненты приложения можно отнести к одному из четырех типов. Компоненты каждого типа предназначены для определенной цели,
+они имеют собственный жизненный цикл, который определяет способ создания и прекращения существования компонента.</p>
+
+<p>Четыре типа компонентов:</p>
+
+<dl>
+
+<dt><b>Операции</b></dt>
+
+<dd>Операция (Activity) <i>представляет</i> собой один экран с пользовательским интерфейсом. Например,
+в приложении для работы с электронной почтой одна операция может служить для отображения списка новых
+сообщений, другая – для составления сообщения и третья операция – для чтения сообщений. Несмотря на то что
+операции совместно формируют связное взаимодействие пользователя с приложением по работе с электронной почтой, каждая из них
+не зависит от других операций. Любые из этих операций могут быть запущены
+другим приложением (если это позволяет приложение по работе с электронной почтой). Например, приложение для камеры может запустить
+операцию в приложении по работе с электронной почтой, которая составляет новое сообщение, чтобы пользователь мог отослать фотографию.
+
+<p>Операция относится к подклассу класса {@link android.app.Activity}. Подробные сведения об этом можно
+найти в руководстве для разработчиков в статье <a href="{@docRoot}guide/components/activities.html">Операции</a>
+.</p>
+</dd>
+
+
+<dt><b>Службы</b></dt>
+
+<dd>Служба (Service) <i>представляет</i> собой компонент, который работает в фоновом режиме и выполняет длительные
+операции, связанные с работой удаленных процессов. Служба
+не имеет пользовательского интерфейса. Например, она может воспроизводить музыку в фоновом режиме, пока
+пользователь работает в другом приложении, или же она может получать данные по сети, не
+блокируя взаимодействие пользователя с операцией. Служба может быть запущена другим компонентом, который затем будут взаимодействовать с ней, – например
+операцией.
+
+<p>Служба относится к подклассу класса {@link android.app.Service}. Подробные сведения об этом можно
+найти в руководстве для разработчиков в статье <a href="{@docRoot}guide/components/services.html">Службы</a>
+.</p>
+</dd>
+
+
+<dt><b>Поставщики контента</b></dt>
+
+<dd>Поставщик <i>контента (Content provider)</i> управляет общим набором данных приложения. Данные можно хранить в
+файловой системе, базе данных SQLite, в Интернете или любом другом постоянном месте хранения, к которому у вашего
+приложения имеется доступ. Посредством поставщика контента другие приложения могут запрашивать или даже изменять
+данные (если поставщик контента позволяет делать это). Например, в системе Android есть поставщик
+контента, который управляет информацией контактов пользователя. Любое приложение, получившее соответствующие
+разрешения, может запросить часть этого поставщика контента (например {@link
+android.provider.ContactsContract.Data}), для чтения и записи сведений об определенном человеке.
+
+<p>Поставщики контента также используются для чтения и записи данных, доступ к которым внешним компонентам
+приложение не предоставляет. Например, в образце приложения <a href="{@docRoot}resources/samples/NotePad/index.html">Note Pad</a> с помощью
+поставщика контента выполняется сохранение заметок.</p>
+
+<p>Поставщик контента относится к подклассу класса {@link android.content.ContentProvider}.
+Он должен реализовывать стандартный набор API-интерфейсов, с помощью которых другие приложения будут выполнять
+транзакции. Подробные сведения можно найти в руководстве для разработчиков в статье <a href="{@docRoot}guide/topics/providers/content-providers.html">Поставщики контента</a>
+.</p>
+</dd>
+
+
+<dt><b>Приемники широковещательных сообщений</b></dt>
+
+<dd>Приемник широковещательных сообщений (Broadcast receiver) <i>представляет</i> собой компонент, который реагирует на объявления
+распространяемые по всей системе.  Многие из этих объявлений рассылает система &mdash; например объявление о том,
+что экран выключился, аккумулятор разряжен или был сделан фотоснимок.
+Объявления также могут рассылаться приложениями, &mdash; например, чтобы сообщить другим приложениям о том, что
+какие-то данные были загружены на устройство и теперь готовы для использования. Несмотря на то что приемники широковещательных сообщений
+не имеют пользовательского интерфейса, они могут<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">создавать уведомления в строке состояния,</a>
+чтобы предупредить пользователя о событии "рассылка объявления". Однако чаще всего они являются
+просто "шлюзом" для других компонентов и предназначены для выполнения минимального объема работы. Например
+, они могут инициировать выполнение службой определенных действий при возникновении события.
+
+<p>Приемник широковещательных сообщений относится к подклассу класса {@link android.content.BroadcastReceiver}
+, а каждое такое сообщение предоставляется как объект {@link android.content.Intent}. Подробные сведения изложены
+в  руководстве, посвященном классу {@link android.content.BroadcastReceiver}.</p>
+</dd>
+
+</dl>
+
+
+
+<p>Уникальной особенностью системы Android является то, что любое приложение может запустить компонент
+другого приложения. Например, если вы хотите дать пользователю возможность фотографировать, используя
+камеру устройства, то, поскольку наверняка имеется другое приложение, которое может выполнить это действие, вместо того чтобы разработать операцию фотографирования в своем приложении, вы можете вызвать 
+такое приложение. Вам не
+нужно внедрять код из приложения для камеры или даже устанавливать на него ссылку.
+Вместо этого вы можете просто запустить операцию фотографирования
+ из приложения для камеры. По завершении этой операции фотография будет возвращена в ваше приложение, и ее можно будет использовать. Для пользователя
+ это будет выглядеть как одно приложение.</p>
+
+<p>Когда система запускает компонент, она запускает процесс для этого приложения (если
+он еще не был запущен) и создает экземпляры классов, которые требуются этому компоненту. Например, если ваше приложение
+запустит операцию фотографирования в приложении для камеры, эта операция
+будет выполняться в процессе, который относится к этому стороннему приложению, а не в процессе вашего приложения.
+Поэтому, в отличие от приложений для большинства других систем, в приложениях для Android отсутствует единая
+точка входа (например, в них нет функции {@code main()}).</p>
+
+<p>Поскольку система выполняет каждое приложение в отдельном процессе с такими правами доступа к файлам, которые
+ограничивают доступ в другие приложения, ваше приложение не может напрямую вызвать компонент из
+другого приложения. Это может сделать сама система Android. Поэтому, чтобы вызвать компонент в
+другом приложении, необходимо сообщить системе о своем намерении (<em>Intent</em>)
+запустить определенный компонент. После этого система активирует для вас этот компонент.</p>
+
+
+<h3 id="ActivatingComponents">Активация компонентов</h3>
+
+<p>Компоненты трех из четырех возможных типов &mdash; операции, службы и
+приемники широковещательных сообщений &mdash; активируются асинхронным сообщением, которое называется <em>Intent</em> (намерение).
+Объекты Intent связывают друг с другом отдельные компоненты во время выполнения, будь то это компоненты
+ вашего или стороннего приложения (эти объекты Intent можно представить себе
+в виде мессенджеров, которые посылают другим компонентам запрос на выполнение действий).</p>
+
+<p>Объект Intent создается с помощью объекта {@link android.content.Intent}, который описывает запрос на
+активацию либо конкретного компонента, либо компонента конкретного <em>типа</em> &mdash; соответственно, намерение Intent
+может быть явным или неявным.</p>
+
+<p>Для операций и служб Объект Intent определяет действие, которое требуется выполнить (например, просмотреть (view) или
+отправить (send) что-то), а также может указывать URI (Uniform Resource Identifier – унифицированный идентификатор ресурса) данных, с которыми это действие нужно выполнить (помимо прочих сведений, которые
+нужно знать запускаемому компоненту). Например, объект Intent может передавать запрос
+на выполнение операции "показать изображение" или "открыть веб-страницу". В некоторых ситуациях операцию можно
+запустить, чтобы получить результат. В этом случае операция возвращает
+результат также в виде объекта {@link android.content.Intent} (например, можно отправить сообщение Intent, чтобы дать
+пользователю возможность выбрать контакт и вернуть его вам &mdash; в ответном сообщении Intent будет содержаться
+URI, указывающий на выбранный контакт).</p>
+
+<p>Для приемников широковещательных сообщений Intent просто определяет
+передаваемое объявление (например, широковещательное сообщение о низком уровне заряда аккумулятора
+содержит только строку "аккумулятор разряжен").</p>
+
+<p>Компоненты четвертого типа – поставщики контента – сообщениями Intent не активируются. Они
+активируются по запросу от {@link android.content.ContentResolver}. Процедура определения 
+ контента (content resolver) обрабатывает все прямые транзакции с поставщиком контента, с тем чтобы этого не пришлось делать компоненту, который
+выполняет транзакции с поставщиком. Вместо этого он вызывает методы для объекта {@link
+android.content.ContentResolver}. Это формирует слой, абстрагирующий (в целях безопасности) поставщика
+контента от компонента, запрашивающего информацию.</p>
+
+<p>Для активации компонентов каждого типа имеются отдельные методы:</p>
+<ul>
+  <li>Можно запустить операцию (или определить для нее какое-то новое действие),
+передав объект {@link android.content.Intent} методу {@link android.content.Context#startActivity
+startActivity()} или {@link android.app.Activity#startActivityForResult startActivityForResult()}
+(если требуется, чтобы операция вернула результат).</li>
+  <li>Можно запустить службу (либо выдать работающей службе новые инструкции), 
+передав объект {@link android.content.Intent} методу {@link android.content.Context#startService
+startService()}. Либо можно установить привязку к службе, передав объект{@link android.content.Intent} методу
+{@link android.content.Context#bindService bindService()}.</li>
+  <li>Можно инициировать рассылку сообщений, передав объект {@link android.content.Intent} таким методам, как
+{@link android.content.Context#sendBroadcast(Intent) sendBroadcast()}, {@link
+android.content.Context#sendOrderedBroadcast(Intent, String) sendOrderedBroadcast()} и {@link
+android.content.Context#sendStickyBroadcast sendStickyBroadcast()}.</li>
+  <li>Можно выполнить запрос к поставщику контента, вызвав метод {@link
+android.content.ContentProvider#query query()} для объекта {@link android.content.ContentResolver}.</li>
+</ul>
+
+<p>Подробные сведения об использовании объектов Intent приведены в документе <a href="{@docRoot}guide/components/intents-filters.html">Объекты Intent и 
+фильтры объектов Intent</a>. Более подробная информация об активации определенных компонентов также приведена
+в следующих документах: <a href="{@docRoot}guide/components/activities.html">Операции</a>, <a href="{@docRoot}guide/components/services.html">Службы</a>, {@link
+android.content.BroadcastReceiver} и <a href="{@docRoot}guide/topics/providers/content-providers.html">Поставщики контента</a>.</p>
+
+
+<h2 id="Manifest">Файл манифеста</h2>
+
+<p>Для запуска компонента приложения системе Android необходимо знать, что
+компонент существует. Для этого она читает файл {@code AndroidManifest.xml} приложения (файл
+манифеста). В этом файле, который должен находиться в корневой папке
+приложения, должны быть объявлены все компоненты приложения.</p>
+
+<p>Помимо объявления компонентов приложения, манифест служит и для других целей,
+среди которых:</p>
+<ul>
+  <li>указание всех полномочий пользователя, которые требуются приложению, например разрешения на доступ в Интернет или
+на чтение контактов пользователя;</li>
+  <li>объявление минимального<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">уровня API</a>,
+требуемого приложению, с учетом того, какие API-интерфейсы оно использует;</li>
+  <li>объявление аппаратных и программных функций, которые нужны приложению или используются им, например камеры,
+службы Bluetooth или сенсорного экрана;</li>
+  <li>указание библиотек API, с которыми необходимо связать приложение (отличные от API-интерфейсов платформы
+Android), например библиотеки <a href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps
+</a>;</li>
+  <li>и многое другое.</li>
+</ul>
+
+
+<h3 id="DeclaringComponents">Объявление компонентов</h3>
+
+<p>Основная задача манифеста – это информировать систему о компонентах приложения. Например,
+ файл манифеста может объявлять операцию следующим образом: </p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;manifest ... &gt;
+    &lt;application android:icon="@drawable/app_icon.png" ... &gt;
+        &lt;activity android:name="com.example.project.ExampleActivity"
+                  android:label="@string/example_label" ... &gt;
+        &lt;/activity&gt;
+        ...
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>Атрибут {@code android:icon} в элементе <code><a
+href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+указывает на ресурсы для значка, который обозначает
+приложение.</p>
+
+<p>Атрибут {@code android:name} в элементе <code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+указывает полное имя класса подкласса {@link
+android.app.Activity}, а атрибут {@code android:label} указывает строку,
+которую необходимо использовать в качестве метки операции, отображаемой для пользователя.</p>
+
+<p>Все компоненты приложения необходимо объявлять следующим образом:</p>
+<ul>
+  <li>элементы <code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+для операций;</li>
+  <li>элементы <code><a
+href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+для служб;</li>
+  <li>элементы <code><a
+href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
+для приемников широковещательных сообщений;</li>
+  <li>элементы <code><a
+href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+для поставщиков контента</li>
+</ul>
+
+<p>Системе не видны операции, службы и поставщики контента, которые имеются в исходном коде, но не объявлены
+в манифесте, поэтому они не могут быть запущены.  А вот
+приемники широковещательных сообщений
+можно либо объявить в манифесте, либо создать динамически в коде (как объекты
+{@link android.content.BroadcastReceiver}) и зарегистрировать в системе путем вызова 
+{@link android.content.Context#registerReceiver registerReceiver()}.</p>
+
+<p>Подробные сведения о структуризации файла манифеста для приложения см. в документе <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">Файл AndroidManifest.xml</a>
+. </p>
+
+
+
+<h3 id="DeclaringComponentCapabilities">Объявление возможностей компонентов</h3>
+
+<p>Как уже говорилось в разделе <a href="#ActivatingComponents">Активация компонентов</a>, с помощью объекта
+{@link android.content.Intent} можно запускать операции, службы и приемники широковещательных сообщений. Для этого в объекте Intent следует
+явно указать имя целевого компонента (с помощью имени класса компонента). Однако
+в полной мере возможности объектов Intent раскрываются при использовании концепции <em>неявных Intent</em>. В неявном сообщении Intent
+просто описывается тип действия, которое требуется выполнить (а также, хотя это и не обязательно, дата, в которую вы бы хотели
+выполнить это действие). Системе же предоставляется возможности найти на устройстве компонент, который может выполнить это
+действие, и запустить его. При наличии нескольких компонентов, которые могут выполнить действие, описанное в сообщении
+Intent, пользователь выбирает, какой из них будет использоваться.</p>
+
+<p>Система определяет компоненты, которые могут ответить на сообщение Intent, путем сравнения 
+полученного сообщения Intent с <i>фильтрами объектов Intent,</i> указанными в файле манифеста других приложений, имеющихся
+ на устройстве.</p>
+
+<p>При объявлении операции в манифесте своего приложения по желанию можно указать
+фильтры объектов Intent, которые указывают возможности операции, с тем чтобы она могла реагировать на сообщения Intent
+от других приложений. Чтобы объявить фильтр Intent для своего компонента,
+необходимо добавить элемент <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> в качестве дочернего для элемента объявления компонента.</p>
+
+<p>Например, если вы создали приложение для работы с электронной почтой с операцией составления нового сообщения, вы можете
+объявить фильтр для ответа на сообщения Intent типа "send" (для отправки нового сообщения электронной почты) следующим образом:</p>
+<pre>
+&lt;manifest ... >
+    ...
+    &lt;application ... &gt;
+        &lt;activity android:name="com.example.project.ComposeEmailActivity">
+            &lt;intent-filter>
+                &lt;action android:name="android.intent.action.SEND" />
+                &lt;data android:type="*/*" />
+                &lt;category android:name="android.intent.category.DEFAULT" />
+            &lt;/intent-filter>
+        &lt;/activity>
+    &lt;/application&gt;
+&lt;/manifest>
+</pre>
+
+<p>Затем, если другое приложение создаст объект Intent с действием {@link
+android.content.Intent#ACTION_SEND} и передаст его в {@link android.app.Activity#startActivity
+startActivity()}, система сможет запустить вашу операцию, дав пользователю возможность написать и отправить
+сообщение электронной почты.</p>
+
+<p>Подробные сведения о создании фильтров объектов Intent приведены в документе <a href="{@docRoot}guide/components/intents-filters.html">Объекты Intent и фильтры объектов Intent</a>.
+</p>
+
+
+
+<h3 id="DeclaringRequirements">Объявление требований приложения</h3>
+
+<p>Существует огромное количество устройств, работающих под управлением Android, и не все они имеют
+одинаковые функциональные возможности. Чтобы ваше приложение не могло быть установлено на устройствах,
+в которых отсутствуют функции, необходимые приложению, важно четко определить профиль для
+типов устройств, поддерживаемых вашим приложением, указав требования к аппаратному и программному обеспечению в 
+файле манифеста. Эти объявления по большей части носят информационный характер, система их не
+читает. Однако их читают внешние службы, например Google Play, с целью обеспечения
+фильтрации для пользователей, которые ищут приложения для своих устройств.</p>
+
+<p>Например, если вашему приложению требуется камера и оно использует API-интерфейсы из Android 2.1 (<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">уровень API</a> 7),
+эти параметры следует объявить в файле манифеста в качестве требований следующим образом:</p> 
+
+<pre>
+&lt;manifest ... >
+    &lt;uses-feature android:name="android.hardware.camera.any"
+                  android:required="true" />
+    &lt;uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" />
+    ...
+&lt;/manifest>
+</pre>
+
+<p>Теперь ваше приложение нельзя будет установить из Google Play на устройствах, в которых <em>нет</em> камеры, а также на устройствах, работающих под управлением 
+Android версии <em>ниже</em> 2.1.</p>
+
+<p>Однако можно также объявить, что приложение использует камеру, но для его работы она не является
+<em>непременно необходимой</em>. В этом случае в приложении атрибуту <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#required">{@code required}</a>
+необходимо задать значение {@code "false"}, а во время работы оно должно проверять, имеется ли
+на устройстве камера, и при необходимости отключать свои функции, которые используют камеру.</p>
+
+<p>Более подробные сведения об управлении совместимостью своего приложения с различными устройствами
+приведены в документе <a href="{@docRoot}guide/practices/compatibility.html">Совместимость устройств</a>
+.</p>
+
+
+
+<h2 id="Resources">Ресурсы приложения</h2>
+
+<p>Приложение Android состоит не только из кода &mdash; ему необходимы такие существующие отдельно от исходного кода
+ресурсы, как изображения, аудиофайлы и все, что связано с визуальным
+представлением приложения. Например, необходимо определять анимацию, меню, стили, цвета
+и макет пользовательских интерфейсов операций в файлах XML. Используя ресурсы приложения, можно без труда
+изменять его различные характеристики, не меняя код, а, кроме того, &mdash;путем предоставления
+наборов альтернативных ресурсов &mdash; можно оптимизировать свое приложение для работы с различными
+конфигурациями устройств (например, для различных языков или размеров экрана).</p>
+
+<p>Для каждого ресурса, включаемого в проект Android, инструменты SDK задают уникальный
+целочисленный идентификатор, который может использоваться, чтобы сослаться на ресурс из кода приложения или из
+других ресурсов, определенных в XML. Например, если в вашем приложении имеется файл изображения с именем {@code
+logo.png} (сохраненный в папке {@code res/drawable/}), инструменты SDK сформируют идентификатор ресурса
+под именем {@code R.drawable.logo}, с помощью которого на изображение можно будет ссылаться и вставлять его в
+пользовательский интерфейс.</p>
+
+<p>Один из наиболее важных аспектов предоставления ресурсов отдельно от исходного кода
+заключается в возможности использовать альтернативные ресурсы для различных конфигураций
+устройств. Например, определив строки пользовательского интерфейса в XML, вы сможете перевести их на другие
+языки и сохранить эти переводы в отдельных файлах. Затем по <em>квалификатору</em> языка
+, добавленному к имени каталога ресурса (скажем {@code res/values-fr/} для строк на французском
+языке), и выбранному пользователем языку система Android применит к вашему пользовательскому интерфейсу строки на
+соответствующем языке.</p>
+
+<p>Android поддерживает разные <em>квалификаторы</em> для соответствующих ресурсов. Квалификатор
+ представляет собой короткую строку, которая включается в имена каталогов ресурсов с целью 
+определения конфигурации устройства, для которой эти ресурсы следует использовать. В качестве другого
+примера можно сказать, что для своих операций следует создавать разные макеты, которые будут соответствовать
+размеру и ориентации экрана устройства. Например, когда экран устройства имеет книжную
+ориентацию (расположен вертикально), кнопки в макете можно также размещатьь по вертикали, а когда экран
+развернут горизонтально (альбомная ориентация), кнопки следует размещать по горизонтали. Чтобы при изменении ориентации экрана изменялся макет,
+можно определить два разных макета и применить соответствующий
+квалификатор к имени каталога каждого макета. После этого система будет автоматически применять соответствующий
+макет в зависимости от ориентации устройства.</p>
+
+<p>Подробные сведения о различных видах ресурсов, которые можно включить в приложение, а также о том, как
+создавать альтернативные ресурсы для разных конфигурацией устройств, см. в разделе <a href="{@docRoot}guide/topics/resources/providing-resources.html">Предоставление ресурсов</a>.</p>
+
+
+
+<div class="next-docs">
+<div class="col-6">
+  <h2 class="norule">Также читайте:</h2>
+  <dl>
+    <dt><a href="{@docRoot}guide/components/intents-filters.html">Объекты Intent и фильтры объектов Intent</a>
+    </dt>
+    <dd>Сведения об использовании API-интерфейсов {@link android.content.Intent} для
+    активации таких компонентов приложений, как операции и службы, а также о предоставлении возможности другим приложениям
+    использовать компоненты своего приложения.</dd>
+    <dt><a href="{@docRoot}guide/components/activities.html">Операции</a></dt>
+    <dd>Сведения о создании экземпляра класса {@link android.app.Activity},
+ который выдает определенный экран в вашем приложении с пользовательским интерфейсом.</dd>
+    <dt><a href="{@docRoot}guide/topics/resources/providing-resources.html">Предоставление ресурсов</a></dt>
+    <dd>Описание структуры приложений Android, в которой ресурсы приложения существуют отдельно от
+   его кода, а также сведения о том, как предоставлять альтернативные ресурсы для определенных конфигураций
+   устройств.
+    </dd>
+  </dl>
+</div>
+<div class="col-6">
+  <h2 class="norule">Возможно, вас также заинтересует:</h2>
+  <dl>
+    <dt><a href="{@docRoot}guide/practices/compatibility.html">Совместимость устройств</a></dt>
+    <dd>Сведения о том, каким образом система Android работает на устройствах разных типов, и общие сведения о том,
+    как оптимизировать свое приложение для каждого устройства или ограничить круг устройств, на которых может быть установлено 
+    приложение.</dd>
+    <dt><a href="{@docRoot}guide/topics/security/permissions.html">Системные разрешения</a></dt>
+    <dd>Сведения о том, как система Android ограничивает доступ приложений к определенным API-интерфейсам с помощью системы
+    разрешений, которая требует согласия пользователя на использование этих API-интерфейсов вашим приложением.</dd>
+  </dl>
+</div>
+</div>
+
diff --git a/docs/html-intl/intl/ru/guide/components/index.jd b/docs/html-intl/intl/ru/guide/components/index.jd
new file mode 100644
index 0000000..41d5a34
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/components/index.jd
@@ -0,0 +1,57 @@
+page.title=Компоненты приложения
+page.landing=true
+page.landing.intro=Платформа приложений системы Android позволяет создавать функциональные и инновационные приложения с помощью набора компонентов, которые можно использовать многократно. В этом разделе рассказывается о том, как создавать компоненты, определяющие элементы структуры вашего приложения, и как связывать их воедино с помощью объектов Intent. 
+page.metaDescription=Платформа приложений системы Android позволяет создавать функциональные и инновационные приложения с помощью набора компонентов, которые можно использовать многократно. В этом разделе рассказывается о том, как создавать компоненты, определяющие элементы структуры вашего приложения, и как связывать их воедино с помощью объектов Intent. 
+page.landing.image=images/develop/app_components.png
+page.image=images/develop/app_components.png
+
+@jd:body
+
+<div class="landing-docs">
+
+  <div class="col-6">
+    <h3>Статьи блога</h3>
+    
+    <a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
+      <h4>Использование класса DialogFragment</h4>
+      <p>В этой статье я расскажу, как с помощью DialogFragment с использованием вспомогательной библиотеки v4 (в целях обеспечения совместимости с устройствами, работающими под управлением системы с версией ниже, чем Honeycomb) можно отобразить простое диалоговое окно редактирования и вернуть результат в вызывающую операцию с помощью интерфейса.</p>
+    </a>
+
+    <a href="http://android-developers.blogspot.com/2011/03/fragments-for-all.html">
+      <h4>Фрагменты для всех</h4>
+      <p>Сегодня мы выпустили библиотеку статических элементов, которая предоставляет доступ к тому же Fragments API (а также новому классу LoaderManager и нескольким другим классам), с тем чтобы приложения, совместимые с Android 1.6 и более поздними версиями, могли использовать фрагменты для создания пользовательских интерфейсов для планшетов. </p>
+    </a>
+    
+    <a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
+      <h4>Многопоточность для повышения производительности</h4>
+      <p>Для создания быстро реагирующих приложений рекомендуется, чтобы в основном потоке пользовательского интерфейса
+выполнялся минимальный объем работы. Любая задача, которая в принципе может выполнять долго и привести к зависанию приложения, должна
+обрабатываться в другом потоке.</p>
+    </a>
+  </div>
+
+  <div class="col-6">
+    <h3>Обучение</h3>
+    
+    <a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
+      <h4>Управление жизненным циклом операций</h4>
+      <p>В этом учебном курсе разъясняются важные методы обратного вызова жизненного цикла, которые получает каждый экземпляр
+ операции, и описывается, как их использовать, чтобы операция выполнялась так, как этого ожидает пользователь, и не потребляла системные
+ ресурсы, когда они ей не нужны.</p>
+    </a>
+
+    <a href="http://developer.android.com/training/basics/fragments/index.html">
+      <h4>Создание динамического интерфейса пользователя с использованием фрагментов</h4>
+      <p>Данный курс обучения посвящен созданию динамического интерфейса пользователя с использованием
+фрагментов и его оптимизации для устройств с экранами разных размеров, включая поддержку
+устройств с версией Android 1.6.</p>
+    </a>
+
+    <a href="http://developer.android.com/training/sharing/index.html">
+      <h4>Общий доступ к контенту</h4>
+      <p>В этом курсе обучения рассказывается о некоторых стандартных способах отправки и получения контента
+ приложениями с помощью API-интерфейсов Intent и объекта ActionProvider.</p>
+    </a>
+  </div>
+
+</div>
diff --git a/docs/html-intl/intl/ru/guide/components/intents-filters.jd b/docs/html-intl/intl/ru/guide/components/intents-filters.jd
new file mode 100644
index 0000000..d710081
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/components/intents-filters.jd
@@ -0,0 +1,899 @@
+page.title=Объекты Intent и фильтры объектов Intent
+page.tags="IntentFilter"
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Содержание документа</h2>
+<ol>
+  <li><a href="#Types">Типы объектов Intent</a></li>
+  <li><a href="#Building">Создание объекта Intent</a>
+    <ol>
+      <li><a href="#ExampleExplicit">Пример явного объекта Intent</a></li>
+      <li><a href="#ExampleSend">Пример неявного объекта Intent</a></li>
+      <li><a href="#ForceChooser">Принудительное использование блока выбора приложения</a></li>
+    </ol>
+  </li>
+  <li><a href="#Receiving">Получение неявного объекта Intent</a>
+    <ol>
+      <li><a href="#ExampleFilters">Примеры фильтров</a></li>
+    </ol>
+  </li>
+  <li><a href="#PendingIntent">Использование ожидающего объекта Intent</a></li>
+  <li><a href="#Resolution">Разрешение объектов Intent</a>
+    <ol>
+      <li><a href="#ActionTest">Тестирование действия</a></li>
+      <li><a href="#CategoryTest">Тестирование категории</a></li>
+      <li><a href="#DataTest">Тестирование данных</a></li>
+      <li><a href="#imatch">Сопоставление объектов Intent</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>См. также</h2>
+<ol>
+<li><a href="{@docRoot}training/basics/intents/index.html">Взаимодействие с другими приложениями</a></li>
+<li><a href="{@docRoot}training/sharing/index.html">Общий доступ к контенту</a></li>
+</ol>
+
+</div>
+</div>
+
+
+
+
+<p>{@link android.content.Intent} представляет собой объект обмена сообщениями, с помощью которого можно запросить выполнение действия
+у <a href="{@docRoot}guide/components/fundamentals.html#Components">компонента другого приложения</a>.
+Несмотря на то, что объекты Intent упрощают обмен данными между компонентами по нескольким аспектам, в основном они используются
+в трех ситуациях:</p>
+
+<ul>
+<li><b>Для запуска операции:</b>
+<p>Компонент {@link android.app.Activity} представляет собой один экран в приложении. Для запуска нового
+экземпляра компонента {@link android.app.Activity} необходимо передать объект {@link android.content.Intent}
+методу{@link android.content.Context#startActivity startActivity()}. Объект {@link android.content.Intent}
+описывает операцию, которую требуется запустить, а также содержит все остальные необходимые данные.</p>
+
+<p>Если после завершения операции от нее требуется получить результат,
+вызовите метод {@link android.app.Activity#startActivityForResult
+startActivityForResult()}. Ваша операция получит результат
+в виде отдельного объекта {@link android.content.Intent} в обратном вызове метода {@link
+android.app.Activity#onActivityResult onActivityResult()} операции.
+Подробные сведения см. в руководстве <a href="{@docRoot}guide/components/activities.html">Операции</a>.</p></li>
+
+<li><b>Для запуска службы:</b>
+<p>{@link android.app.Service} является компонентом, который выполняет действия в фоновом режиме
+без пользовательского интерфейса. Службу можно запустить для выполнения однократного действия
+(например, чтобы загрузить файл), передав объект{@link android.content.Intent}
+методу {@link android.content.Context#startService startService()}. Объект {@link android.content.Intent}
+описывает службу, которую требуется запустить, а также содержит все остальные необходимые данные.</p>
+
+<p>Если служба сконструирована с интерфейсом клиент-сервер, к ней
+можно установить привязку из другого компонента, передав объект{@link android.content.Intent} методу {@link
+android.content.Context#bindService bindService()}</code>. Подробные сведения см. в руководстве <a href="{@docRoot}guide/components/services.html">Службы</a>.</p></li>
+
+<li><b>Для рассылки широковещательных сообщений:</b>
+<p>Широковещательное сообщение ― это сообщение, которое может принять любое приложение. Система выдает различные
+широковещательные сообщения о системных событиях, например, когда система загружается или устройство начинает заряжаться.
+Для выдачи широковещательных сообщений другим приложениям необходимо передать объект {@link android.content.Intent}
+методу {@link android.content.Context#sendBroadcast(Intent) sendBroadcast()},
+{@link android.content.Context#sendOrderedBroadcast(Intent, String)
+sendOrderedBroadcast()} или {@link
+android.content.Context#sendStickyBroadcast sendStickyBroadcast()}.</p>
+</li>
+</ul>
+
+
+
+
+<h2 id="Types">Типы объектов Intent</h2>
+
+<p>Есть два типа объектов Intent:</p>
+
+<ul>
+<li><b>Явные объекты Intent</b> указывают компонент, который требуется запустить, по имени (
+полное имя класса). Явные объекты Intent обычно используются для запуска компонента из
+вашего собственного приложения, поскольку вам известно имя класса операции или службы, которую необходимо запустить. Например
+, можно запустить новую операцию в ответ на действие пользователя или запустить службу, чтобы загрузить
+файл в фоновом режиме.</li>
+
+<li><b>Неявные объекты Intent</b> не содержат имени конкретного компонента. Вместо этого они в целом объявляют действие,
+которое требуется выполнить, что дает возможность компоненту из другого приложения обработать этот запрос. Например, если требуется
+показать пользователю место на карте, то с помощью неявного объекта Intent можно запросить, чтобы это сделало другое приложение, в котором
+такая возможность предусмотрена.</li>
+</ul>
+
+<p>Когда создан явный объект Intent для запуска операции или службы, система немедленно
+запускает компонент приложения, указанный в объекте {@link android.content.Intent}.</p>
+
+<div class="figure" style="width:446px">
+<img src="{@docRoot}images/components/intent-filters@2x.png" width="446" alt="" />
+<p class="img-caption"><strong>Рисунок 1.</strong> Схематическое изображение процесса передачи неявного объекта Intent
+по системе для запуска другой операции: <b>[1]</b> <em>Операция А</em> создает объект
+{@link android.content.Intent} с описанием действия и передает его методу {@link
+android.content.Context#startActivity startActivity()}. <b>[2]</b> Система Android ищет во всех
+приложениях фильтры Intent, которые соответствуют данному объекту Intent. Когда приложение с подходящим фильтром найдено, <b>[3]</b> система
+запускает соответствующую операцию (<em>Операция B</em>), вызвав ее метод {@link
+android.app.Activity#onCreate onCreate()} и передав ему объект {@link android.content.Intent}.
+</p>
+</div>
+
+<p>Когда создан неявный объект Intent, система Android находит подходящий компонент путем
+сравнения содержимого объекта Intent с <em>фильтрами Intent</em>, объявленными в <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">файлах манифеста</a> других приложений, имеющихся на
+устройстве. Если объект Intent совпадает с фильтром Intent, система запускает этот компонент и передает ему
+объект {@link android.content.Intent}. Если подходящими оказываются несколько фильтров Intent, система
+выводит диалоговое окно, где пользователь может выбрать приложение для выполнения данного действия.</p>
+
+<p>Фильтр Intent представляет собой выражение в файле манифеста приложения,
+указывающее типы объектов Intent, которые мог бы
+принимать компонент. Например, объявив фильтр Intent для операции,
+вы даете другим приложениям возможность напрямую запускать вашу операцию с помощью некоторого объекта Intent.
+Точно так же, если вы <em>не</em> объявите какие-либо фильтры Intent для операции, то ее можно будет запустить
+только с помощью явного объекта Intent.</p>
+
+<p class="caution"><strong>Внимание!</strong> В целях обеспечения безопасности приложения всегда используйте явный объект
+Intent при запуске {@link android.app.Service} и не
+объявляйте фильтры Intent для своих служб. Запуск служб с помощью неявных объектов Intent является
+рискованным с точки зрения безопасности, поскольку нельзя быть на абсолютно уверенным, какая служба отреагирует на такой объект Intent,
+а пользователь не может видеть, какая служба запускается. Начиная с Android 5.0 (уровень API 21) система
+вызывает исключение при вызове метода {@link android.content.Context#bindService bindService()}
+с помощью неявного объекта Intent.</p>
+
+
+
+
+
+<h2 id="Building">Создание объекта Intent</h2>
+
+<p>Объект {@link android.content.Intent} содержит информацию, на основании которой система Android
+определяет, какой компонент требуется запустить (например, точное имя компонента или категорию
+компонентов, которые должны получить этот объект Intent), а также сведения, которые необходимы компоненту-получателю,
+чтобы надлежащим образом выполнить действие (а именно — выполняемое действие и данные, с которыми его требуется выполнить).</p>
+
+
+<p>Основные сведения, содержащиеся в объекте {@link android.content.Intent}:</p>
+
+<dl>
+
+<dt><b>Имя компонента</b></dt>
+<dd>Имя компонента, который требуется запустить.
+
+<p>Эта информация является необязательной, но именно она и делает объект Intent
+<b>явным</b>. Ее наличие означает, что объект Intent следует доставить только компоненту приложения,
+определенному по имени. При отсутствии имени компонента объект Intent является <b>неявным</b>, а
+система определяет, какой компонент получит этот объект Intent по другим сведениям, которые в нем содержатся
+(например, по действию, данным и категории &mdash; см. описание далее). Поэтому, если вам требуется запустить определенный
+компонент из своего приложения, следует указать его имя.</p>
+
+<p class="note"><strong>Примечание.</strong> При запуске {@link android.app.Service} следует
+<strong>всегда указывать имя компонента</strong>. В противном случае вы не сможете быть на абсолютно уверенным в том, какая служба
+отреагирует на объект Intent, а пользователь не может видеть, какая служба запускается.</p>
+
+<p>Это поле объекта {@link android.content.Intent} представляет собой объект
+{@link android.content.ComponentName}, который можно указать с помощью полного
+имени класса целевого компонента, включая имя пакета приложения. Например,
+{@code com.example.ExampleActivity}. Задать имя компонента можно с помощью метода {@link
+android.content.Intent#setComponent setComponent()}, {@link android.content.Intent#setClass
+setClass()}, {@link android.content.Intent#setClassName(String, String) setClassName()} или конструктора
+{@link android.content.Intent}.</p>
+
+</dd>
+
+<p><dt><b>Действие</b></dt>
+<dd>Строка, определяющая стандартное действие, которое требуется выполнить (например, <em>view</em> (просмотр) или <em>pick</em> (выбор)).
+
+<p>При выдаче объектов Intent с широковещательными сообщениями это действие, которое произошло и о котором сообщается.
+Действие в значительной степени определяет, каким образом структурирована остальная часть объекта Intent,&mdash;в частности,
+что именно содержится в разделе данных и дополнительных данных.
+
+<p>Для использования объектами Intent в пределах своего приложения (либо для использования другими
+приложениями, чтобы вызывать компоненты из вашего приложения) можно указать собственные действия. Обычно же следует использовать константы действий,
+определенные классом {@link android.content.Intent} или другими классами платформы. Вот несколько
+стандартных действий для запуска операции:</p>
+
+<dl>
+<dt>{@link android.content.Intent#ACTION_VIEW}</dt>
+   <dd>Используйте это действие в объекте Intent с методом {@link
+   android.content.Context#startActivity startActivity()}, когда имеется определенная информация, которую
+   операция может показать пользователю, например, фотография в приложении галереи или адрес для
+   просмотра в картографическом приложении.</dd>
+
+<dt>{@link android.content.Intent#ACTION_SEND}</dt>
+   <dd>Его еще называют объектом Intent "share" (намерение предоставить общий доступ). Это действие следует использовать в объекте Intent с методом {@link
+   android.content.Context#startActivity startActivity()}, при наличии определенных данных, доступ к которым пользователь может
+   предоставить через другое приложение, например приложение для работы с электронной почтой или социальными сетями.</dd>
+</dl>
+
+<p>Другие константы, определяющие стандартные действия, см. в справочнике по классу {@link android.content.Intent}
+.  Другие действия определяются
+в других частях платформы Android. Например, в {@link android.provider.Settings} определяются действия,
+открывающие ряд экранов приложения настройки системы.</p>
+
+<p>Действие можно указать для объекта Intent с методом {@link android.content.Intent#setAction
+setAction()} или конструктором {@link android.content.Intent}.</p>
+
+<p>Если вы определяете собственные действия, обязательно используйте в качестве их префикса имя пакета
+вашего приложения. Например:</p>
+<pre>static final String ACTION_TIMETRAVEL = "com.example.action.TIMETRAVEL";</pre>
+</dd>
+
+<dt><b>Данные</b></dt>
+<dd>URI (объект {@link android.net.Uri}), ссылающийся на данные, с которыми будет выполняться действие и/или
+тип MIME этих данных. Тип передаваемых данных обычно определяется действием объекта Intent. Например,
+если действием является {@link android.content.Intent#ACTION_EDIT}, в данных должен содержаться
+URI документа, который требуется отредактировать.
+
+<p>При создании объекта Intent,
+помимо URI, зачастую бывает важно указать тип данных (их тип MIME).
+Например, операция, которая может выводить на экран изображения, скорее всего, не сможет
+воспроизвести аудиофайл, даже если и у тех, и у других данных будут одинаковые форматы URI.
+Поэтому указание типа MIME данных помогает системе Android
+найти наиболее подходящий компонент для получения вашего объекта Intent.
+Однако тип MIME иногда можно унаследовать от URI &mdash; в частности, когда данные представляют собой
+{@code content:} URI, который указывает, что данные находятся на устройстве и ими управляет
+{@link android.content.ContentProvider}, а это дает возможность системе видеть тип MIME данных.</p>
+
+<p>Чтобы задать только URI данных, вызовите {@link android.content.Intent#setData setData()}.
+Чтобы задать только тип MIME, вызовите {@link android.content.Intent#setType setType()}. При необходимости
+оба этих параметра можно в явном виде задать с помощью {@link
+android.content.Intent#setDataAndType setDataAndType()}.</p>
+
+<p class="caution"><strong>Внимание!</strong> Если требуется задать и URI, и тип MIME,
+<strong>не</strong> вызывайте {@link android.content.Intent#setData setData()} и
+{@link android.content.Intent#setType setType()}, поскольку каждый из этих методов аннулирует результат выполнения другого.
+Чтобы задать URI и тип MIME всегда используйте
+ метод {@link android.content.Intent#setDataAndType setDataAndType()}.</p>
+</dd>
+
+<p><dt><b>Категория</b></dt>
+<dd>Строка, содержащая прочие сведения о том, каким компонентом
+должна выполняться обработка этого объекта Intent.  В объект Intent можно поместить любое количество
+описаний категорий, однако большинству объектов Intent категория не требуется.
+Вот некоторые стандартные категории:
+
+<dl>
+<dt>{@link android.content.Intent#CATEGORY_BROWSABLE}</dt>
+  <dd>Целевая операция позволяет запускать себя веб-браузером для отображения данных,
+       указанных по ссылке &mdash; например, изображения или сообщения электронной почты.
+  </dd>
+<dt>{@link android.content.Intent#CATEGORY_LAUNCHER}</dt>
+  <dd>Эта операция является начальной операцией задачи, она указана в
+       средстве запуска приложений системы.
+  </dd>
+</dl>
+
+<p>Полный список категорий см. в описании класса {@link android.content.Intent}
+.</p>
+
+<p>Указать категорию можно с помощью{@link android.content.Intent#addCategory addCategory()}.</p>
+</dd>
+</dl>
+
+
+<p>Приведенные выше свойства (имя компонента, действие, данные и категория) представляют собой
+характеристики, определяющие объект Intent. На основании этих свойств система Android
+может решить, какой компонент следует запустить.</p>
+
+<p>Однако в объекте Intent может быть приведена и другая информация, которая не влияет на то,
+каким образом определяется требуемый компонент приложения. Объект Intent также может содержать:</p>
+
+<dl>
+<dt><b>Дополнительные данные</b></dt>
+<dd>Пары "ключ-значение", содержащие прочую информацию, которая необходима для выполнения запрошенного действия.
+Точно так же, как некоторые действия используют определенные виды URI данных, некоторые действия используют определенные дополнительные данные.
+
+<p>Добавлять дополнительные данные можно с помощью различных методов {@link android.content.Intent#putExtra putExtra()},
+каждый из которых принимает два параметра: имя и значение ключа.
+Также можно создать объект {@link android.os.Bundle} со всеми дополнительными данными, затем вставить
+объект {@link android.os.Bundle} в объект {@link android.content.Intent} с помощью метода {@link
+android.content.Intent#putExtras putExtras()}.</p>
+
+<p>Например, при создании объекта Intent для отправки сообщения электронной почты с методом
+{@link android.content.Intent#ACTION_SEND} можно указать получателя с помощью ключа
+{@link android.content.Intent#EXTRA_EMAIL}, а тему сообщения ― с помощью ключа
+{@link android.content.Intent#EXTRA_SUBJECT}.</p>
+
+<p>Класс {@link android.content.Intent} указывает много констант {@code EXTRA_*}
+для стандартных типов данных. Если вам требуется объявить собственные дополнительные ключи (для объектов Intent, которые
+принимает ваше приложение), обязательно указывайте в качестве префикса
+имя пакета своего приложения. Например:</p>
+<pre>static final String EXTRA_GIGAWATTS = "com.example.EXTRA_GIGAWATTS";</pre>
+</dd>
+
+<dt><b>Флаги</b></dt>
+<dd>Флаги, определенные в классе {@link android.content.Intent}, которые действуют как метаданные для объекта
+Intent. Флаги должны указывать системе Android, каким образом следует запускать операцию (например, к какой
+<a href="{@docRoot}guide/components/tasks-and-back-stack.html">задаче</a> должна принадлежать операция
+) и как с ней обращаться после запуска (например, будет ли она указана в списке последних
+операций).
+
+<p>Подробные сведения см. в документе, посвященном методу {@link android.content.Intent#setFlags setFlags()}.</p>
+</dd>
+
+</dl>
+
+
+
+
+<h3 id="ExampleExplicit">Пример явного объекта Intent</h3>
+
+<p>Явные объекты Intent используются для запуска конкретных компонентов приложения, например
+определенной операции или службы. Чтобы создать явный объект Intent, задайте
+имя компонента для объекта {@link android.content.Intent} &mdash; все
+остальные свойства объекта Intent можно не задавать.</p>
+
+<p>Например, если в своем приложении вы создали службу с именем {@code DownloadService},
+предназначенную для загрузки файлов из Интернета, то для ее запуска можно использовать следующий код:</p>
+
+<pre>
+// Executed in an Activity, so 'this' is the {@link android.content.Context}
+// The fileUrl is a string URL, such as "http://www.example.com/image.png"
+Intent downloadIntent = new Intent(this, DownloadService.class);
+downloadIntent.setData({@link android.net.Uri#parse Uri.parse}(fileUrl));
+startService(downloadIntent);
+</pre>
+
+<p>Конструктор {@link android.content.Intent#Intent(Context,Class)}
+предоставляет {@link android.content.Context} приложению, а
+компоненту ― объект {@link java.lang.Class}. Фактически
+этот объект Intent явно запускает класс{@code DownloadService} в приложении.</p>
+
+<p>Подробные сведения о создании и запуске службы см. в  руководстве
+<a href="{@docRoot}guide/components/services.html">Службы</a>.</p>
+
+
+
+
+<h3 id="ExampleSend">Пример неявного объекта Intent</h3>
+
+<p>Неявный объект Intent указывает действие, которым может быть вызвано любое имеющееся на устройстве приложение, способное
+выполнить это действие. Неявные объекты Intent используются, когда ваше приложение не может выполнить
+то или иное действие, а другие приложения, скорее всего, могут и вы хотите, чтобы пользователь имел возможность выбрать, какое приложение для этого использовать.</p>
+
+<p>Например, если у вас есть контент и вы хотите, чтобы пользователь поделился им с другими людьми, создайте объект Intent
+с действием {@link android.content.Intent#ACTION_SEND}
+и добавьте дополнительные данные, указывающие на контент, общий доступ к которому следует предоставить. Когда с помощью этого объекта Intent вы вызываете
+{@link android.content.Context#startActivity startActivity()}, пользователь сможет
+выбрать приложение, посредством которого к контенту будет предоставлен общий доступ.</p>
+
+<p class="caution"><strong>Внимание!</strong> Возможна ситуация, когда на устройстве пользователя не будет<em>никакого</em>
+приложения, которое может откликнуться на неявный объект Intent, отправленный вами методу {@link android.content.Context#startActivity
+startActivity()}. В этом случае вызов закончится неудачей, а работа приложения аварийно завершится. Чтобы проверить,
+будет получен ли операцией объект Intent, вызовите метод {@link android.content.Intent#resolveActivity
+resolveActivity()} для своего объекта {@link android.content.Intent}. Если результатом будет значение, отличное от null,
+значит, имеется хотя бы одно приложение, которое способно откликнуться на объект Intent и можно вызывать
+{@link android.content.Context#startActivity startActivity()}. Если же результатом будет значение null,
+объект Intent не следует использовать и по возможности следует отключить функцию, которая выдает
+этот объект Intent.</p>
+
+
+<pre>
+// Create the text message with a string
+Intent sendIntent = new Intent();
+sendIntent.setAction(Intent.ACTION_SEND);
+sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
+sendIntent.setType("text/plain");
+
+// Verify that the intent will resolve to an activity
+if (sendIntent.resolveActivity(getPackageManager()) != null) {
+    startActivity(sendIntent);
+}
+</pre>
+
+<p class="note"><strong>Примечание.</strong> В этом случае URI не используется, а вместо этого следует объявить
+тип данных объекта Intent, чтобы указать контент, содержащийся в дополнительных данных.</p>
+
+
+<p>При вызове метода {@link android.content.Context#startActivity startActivity()} система
+анализирует все установленные приложения, чтобы определить, какие из них могут откликнуться на объект Intent этого вида (объект
+Intent с действием {@link android.content.Intent#ACTION_SEND} и данными "text/plain"
+). Если имеется только одно подходящее приложение, оно будет сразу же открыто и получит данный объект
+Intent. Если объект Intent принимают несколько операций, система
+отображает диалоговое окно, в котором пользователь может выбрать приложение для выполнения данного действия.</p>
+
+
+<div class="figure" style="width:200px">
+  <img src="{@docRoot}images/training/basics/intent-chooser.png" alt="">
+  <p class="img-caption"><strong>Рисунок 2.</strong> Диалоговое окно выбора.</p>
+</div>
+
+<h3 id="ForceChooser">Принудительное использование блока выбора приложения</h3>
+
+<p>При наличии нескольких приложений, откликающихся на ваш неявный объект Intent,
+пользователь может выбрать требуемое приложение и указать, что оно будет по умолчанию выполнять это
+действие. Это удобно в случае действия, для выполнения которого
+пользователь обычно хочет всегда использовать одно и то же приложение, например, при открытии веб-страницы (пользователи
+обычно используют один и тот же браузер).</p>
+
+<p>Однако если на объект Intent могут откликнуться несколько приложений, возможно, пользователь предпочтет каждый раз использовать другое
+приложение, поэтому следует явно выводить диалоговое окно выбора. В диалоговом окне
+выбора приложения пользователю предлагается при каждом запуске выбирать, какое приложение использовать для действия (пользователь не может выбрать приложение,
+используемое по умолчанию). Например, когда ваше приложение выполняет операцию "share" (поделиться) с помощью действия {@link
+android.content.Intent#ACTION_SEND}, пользователи могут, в зависимости от ситуации, предпочесть каждый раз делать это с помощью разных приложений
+, поэтому следует всегда использовать диалоговое окно выбора, как показано на рисунке 2.</p>
+
+
+
+
+<p>Чтобы вывести на экран блок выбора приложения, создайте {@link android.content.Intent} с помощью {@link
+android.content.Intent#createChooser createChooser()} и передайте его {@link
+android.app.Activity#startActivity startActivity()}. Например:</p>
+
+<pre>
+Intent sendIntent = new Intent(Intent.ACTION_SEND);
+...
+
+// Always use string resources for UI text.
+// This says something like "Share this photo with"
+String title = getResources().getString(R.string.chooser_title);
+// Create intent to show the chooser dialog
+Intent chooser = Intent.createChooser(sendIntent, title);
+
+// Verify the original intent will resolve to at least one activity
+if (sendIntent.resolveActivity(getPackageManager()) != null) {
+    startActivity(chooser);
+}
+</pre>
+
+<p>В результате на экран будет выведено диалоговое окно со списком приложений, которые могут отреагировать на объект Intent, переданный методу {@link
+android.content.Intent#createChooser createChooser()} и используют указанный текст в качестве
+заголовка диалога.</p>
+
+
+
+
+
+
+
+
+
+<h2 id="Receiving">Получение неявного объекта Intent</h2>
+
+<p>Чтобы указать, какие неявные объекты Intent может принимать ваше приложение, объявите один или несколько фильтров Intent для
+каждого компонента приложения с помощью элемента <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a>
+в <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">файле манифеста</a>.
+Каждый фильтр Intent указывает тип объектов Intent, которые принимает компонент на основании действия,
+данных и категории, заданных в объекте Intent. Система передаст неявный объект Intent вашему приложению, только если
+он может пройти через один из ваших фильтров Intent.</p>
+
+<p class="note"><strong>Примечание.</strong> Явный объект Intent всегда доставляется его целевому компоненту,
+без учета любых фильтров Intent, объявленных компонентом.</p>
+
+<p>Компонент приложения должен объявлять отдельные фильтры для каждой уникальной работы, которую он может выполнить.
+Например, у операции из приложения для работы с галереей изображений может быть два фильтра: один фильтр
+для просмотра изображения, и второй для его редактирования. Когда операция запускается,
+она анализирует объект {@link android.content.Intent} и выбирает режим своей работы на основании информации,
+приведенной в {@link android.content.Intent} (например, показывать элементы управления редактора или нет).</p>
+
+<p>Каждый фильтр Intent определяется элементом <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a>
+в файле манифеста приложения, указанном в объявлении соответствующего компонента приложения (например,
+в элементе <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>).
+ Внутри элемента <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a>,
+можно указать тип объектов Intent, которые будут приниматься, с помощью одного или нескольких
+из следующих трех элементов:</p>
+
+<dl>
+<dt><a href="{@docRoot}guide/topics/manifest/action-element.html">{@code &lt;action&gt;}</a></dt>
+  <dd>Объявляет принимаемое действие, заданное в объекте Intent, в атрибуте {@code name}. Значение
+  должно быть текстовой строкой действия, а не константой класса.</dd>
+<dt><a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a></dt>
+  <dd>Объявляет тип принимаемых данных, для чего используется один или несколько атрибутов, указывающих различные
+  составные части URI данных (<code>scheme</code>, <code>host</code>, <code>port</code>,
+  <code>path</code> и т. д.) и тип MIME.</dd>
+<dt><a href="{@docRoot}guide/topics/manifest/category-element.html">{@code &lt;category&gt;}</a></dt>
+  <dd>Объявляет принимаемую категорию, заданную в объекте Intent, в атрибуте {@code name}. Значение
+  должно быть текстовой строкой действия, а не константой класса.
+
+  <p class="note"><strong>Примечание.</strong> Для получения неявных объектов Intent
+ <strong>необходимо включить</strong> категорию
+{@link android.content.Intent#CATEGORY_DEFAULT} в фильтр Intent. Методы
+  {@link android.app.Activity#startActivity startActivity()} и
+  {@link android.app.Activity#startActivityForResult startActivityForResult()} обрабатывают все объекты Intent, как если бы они объявляли
+ категорию{@link android.content.Intent#CATEGORY_DEFAULT}.
+  Если вы не объявляете эту категорию в своем фильтре Intent, никакие неявные объекты Intent не будут переданы в
+вашу операцию.</p>
+  </dd>
+</dl>
+
+<p>В следующем примере объявлена операция с фильтром Intent, определяющим получение объекта Intent
+{@link android.content.Intent#ACTION_SEND}, когда данные относятся к типу text:</p>
+
+<pre>
+&lt;activity android:name="ShareActivity">
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="text/plain"/>
+    &lt;/intent-filter>
+&lt;/activity>
+</pre>
+
+<p>Можно создавать фильтры, в которых будет несколько экземпляров
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code &lt;action&gt;}</a>,
+<a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a> или
+<a href="{@docRoot}guide/topics/manifest/category-element.html">{@code &lt;category&gt;}</a>.
+В этом случае просто нужно убедиться в том, что компонент может справиться с любыми сочетаниями
+этих элементов фильтра.</p>
+
+<p>Когда требуется обрабатывать объекты Intent нескольких видов, но только в определенных сочетаниях
+действия, типа данных и категории, необходимо создать несколько фильтров Intent.</p>
+
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>Ограничение доступа к компонентам</h2>
+<p>Использование фильтра Intent не является безопасным способом предотвращения запуска ваших компонентов
+другими приложениями. Несмотря на то, что после применения фильтров Intent компонент будет реагировать только
+на неявные объекты Intent определенного вида, другое приложение теоретически может запустить компонент вашего приложения
+с помощью явного объекта Intent, если разработчик определит имена ваших компонентов.
+Если важно, чтобы <em>только ваше собственное приложение</em> могло запускать один из ваших компонентов,
+задайте для атрибута <a href="{@docRoot}guide/topics/manifest/activity-element.html#exported">{@code
+exported}</a> этого компонента значение {@code "false"}.
+</p>
+</div>
+</div>
+
+<p>Неявный объект Intent проверяется фильтром путем сравнения объекта Intent с каждым из
+этих трех элементов. Чтобы объект Intent был доставлен компоненту, он должен пройти все три теста.
+Если он не будет соответствовать хотя бы одному из них, система Android не доставит этот объект Intent
+компоненту.  Однако, поскольку у компонента может быть несколько фильтров Intent, объект Intent, который
+не проходит через один из фильтров компонента, может пройти через другой фильтр.
+Подробные сведения о том, каким образом система принимает решения по поводу объектов Intent, см. в приведенном далее разделе
+ <a href="#Resolution">Разрешение объектов Intent</a>.</p>
+
+<p class="caution"><strong>Внимание!</strong> Чтобы случайно не запустить
+{@link android.app.Service} другого приложения, всегда используйте явные объекты Intent для запуска собственных служб и не
+объявляйте для них фильтры Intent.</p>
+
+<p class="note"><strong>Примечание.</strong>
+Фильтры Intent необходимо объявлять в файле манифеста для всех операций.
+Фильтры для приемников широковещательных сообщений можно регистрировать динамически путем вызова
+{@link android.content.Context#registerReceiver(BroadcastReceiver, IntentFilter, String,
+Handler) registerReceiver()}. После этого регистрацию приемника широковещательных сообщений можно отменить с помощью {@link
+android.content.Context#unregisterReceiver unregisterReceiver()}. В результате ваше приложение
+сможет воспринимать определенные объявления только в течение указанного периода времени в процессе работы
+приложения.</p>
+
+
+
+
+
+
+
+<h3 id="ExampleFilters">Примеры фильтров</h3>
+
+<p>Чтобы лучше понять различные режимы работы фильтров Intent, рассмотрите следующий фрагмент
+из файла манифеста приложения для работы с социальными сетями.</p>
+
+<pre>
+&lt;activity android:name="MainActivity">
+    &lt;!-- This activity is the main entry, should appear in app launcher -->
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.MAIN" />
+        &lt;category android:name="android.intent.category.LAUNCHER" />
+    &lt;/intent-filter>
+&lt;/activity>
+
+&lt;activity android:name="ShareActivity">
+    &lt;!-- This activity handles "SEND" actions with text data -->
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="text/plain"/>
+    &lt;/intent-filter&gt;
+    &lt;!-- This activity also handles "SEND" and "SEND_MULTIPLE" with media data -->
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;action android:name="android.intent.action.SEND_MULTIPLE"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="application/vnd.google.panorama360+jpg"/>
+        &lt;data android:mimeType="image/*"/>
+        &lt;data android:mimeType="video/*"/>
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p>Первая операция ({@code MainActivity}) является основной точкой входа приложения &mdash; это операция, которая
+открывается, когда пользователь запускает приложение нажатием на его значок:</p>
+<ul>
+  <li>Действие {@link android.content.Intent#ACTION_MAIN}
+ указывает на то, что это основная точка входа, и не ожидает никаких данных объекта Intent.</li>
+  <li>Категория {@link android.content.Intent#CATEGORY_LAUNCHER} указывает, что значок этой операции
+ следует поместить в средство запуска приложений системы. Если элемент <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+ не содержит указаний на конкретный значок с помощью {@code icon}, то система воспользуется значком из элемента <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>
+.</li>
+</ul>
+<p>Чтобы операция отображалась в средстве запуска приложений системы, два этих элемента необходимо связать вместе.</p>
+
+<p>Вторая операция ({@code ShareActivity}) предназначена для упрощения обмена текстовым и мультимедийным
+контентом. Несмотря на то, что пользователи могут входить в эту операцию, выбрав ее из {@code MainActivity},
+они также могут входить в {@code ShareActivity} напрямую из другого приложения, которое выдает неявный объект
+Intent, соответствующий одному из двух фильтров Intent.</p>
+
+<p class="note"><strong>Примечание.</strong> Тип MIME
+(<a href="https://developers.google.com/panorama/android/">{@code
+application/vnd.google.panorama360+jpg}</a>) является особым типом данных, указывающим на
+панорамные фотографии, с которыми можно работать с помощью API-интерфейсов <a href="{@docRoot}reference/com/google/android/gms/panorama/package-summary.html">Google
+panorama</a>.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h2 id="PendingIntent">Использование ожидающего объекта Intent</h2>
+
+<p>Объект {@link android.app.PendingIntent} является оболочкой, в которую заключается объект {@link
+android.content.Intent}. Объект {@link android.app.PendingIntent}
+в основном предназначен для того, чтобы предоставлять разрешение внешним приложениям
+на использование содержащегося в нем объекта {@link android.content.Intent}, как если бы он исполнялся из
+процесса вашего собственного приложения.</p>
+
+<p>Основные варианты использования ожидающего объекта Intent:</p>
+<ul>
+  <li>Объявление объекта Intent, который должен будет исполняться, когда пользователь выполняет действие с вашим <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">уведомлением</a>
+  ({@link android.app.NotificationManager} системы Android
+ исполняет {@link android.content.Intent}).
+  <li>Объявление объекта Intent, который должен будет исполняться, когда пользователь выполняет действие с вашим
+<a href="{@docRoot}guide/topics/appwidgets/index.html">виджетом приложения</a>
+  (приложение главного экрана исполняет {@link android.content.Intent}).
+  <li>Объявление объекта Intent, который должен будет исполняться в указанное время в будущем ({@link android.app.AlarmManager} системы
+Android исполняет {@link android.content.Intent}).
+</ul>
+
+<p>Поскольку каждый объект {@link android.content.Intent} предназначен для обработки компонентом приложения,
+который относится к определенному типу ({@link android.app.Activity}, {@link android.app.Service} или
+ {@link android.content.BroadcastReceiver}), объект {@link android.app.PendingIntent} также следует создавать
+с учетом этого обстоятельства. При использовании ожидающего объекта Intent ваше приложение не будет
+исполнять объект Intent вызовом, например, {@link android.content.Context#startActivity
+startActivity()}. Вместо этого вам необходимо будет объявить требуемый тип компонента при создании
+{@link android.app.PendingIntent} путем вызова соответствующего метода-создателя:</p>
+
+<ul>
+  <li>Метод {@link android.app.PendingIntent#getActivity PendingIntent.getActivity()} для
+  {@link android.content.Intent}, который запускает {@link android.app.Activity}.</li>
+  <li>Метод {@link android.app.PendingIntent#getService PendingIntent.getService()} для
+  {@link android.content.Intent}, который запускает {@link android.app.Service}.</li>
+  <li>Метод {@link android.app.PendingIntent#getBroadcast PendingIntent.getBroadcast()} для
+  {@link android.content.Intent}, который запускает {@link android.content.BroadcastReceiver}.</li>
+</ul>
+
+<p>Если только ваше приложение не <em>принимает</em> ожидающие объекты Intent от других приложений,
+указанные выше методы создания {@link android.app.PendingIntent} являются единственными методами
+{@link android.app.PendingIntent}, которые вам когда-либо понадобятся.</p>
+
+<p>Каждый метод принимает текущий {@link android.content.Context} приложения, объект
+{@link android.content.Intent}, который требуется поместить в оболочку, и один или несколько флагов, указывающих,
+каким образом следует использовать объект Intent (например, можно ли использовать объект Intent неоднократно).</p>
+
+<p>Подробные сведения об использовании ожидающих объектов Intent приведены в документации по каждому
+из соответствующих вариантов использования, например, в руководствах, посвященным API-интерфейсам: <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Уведомления</a>
+и <a href="{@docRoot}guide/topics/appwidgets/index.html">Виджеты приложений</a>.</p>
+
+
+
+
+
+
+
+<h2 id="Resolution">Разрешение объектов Intent</h2>
+
+
+<p>Когда система получает неявный объект Intent для запуска операции, она выполняет поиск
+наиболее подходящей операции путем сравнения объекта Intent с фильтрами Intent по трем критериям:</p>
+
+<ul>
+  <li>действие объекта Intent;
+  <li>данные объекта Intent (тип URI и данных);
+  <li>категория объекта Intent.
+</ul>
+
+<p>В следующих разделах описывается, каким образом объекты Intent сопоставляются с соответствующими компонентами,
+а именно, как должен быть фильтр Intent объявлен в файле манифеста приложения.</p>
+
+
+<h3 id="ActionTest">Тестирование действия</h3>
+
+<p>Для указания принимаемых действий объекта Intent фильтр Intent может объявлять любое (в том числе нулевое) число элементов
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+action&gt;}</a>.  Например:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.EDIT" /&gt;
+    &lt;action android:name="android.intent.action.VIEW" /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>Чтобы пройти через этот фильтр, действие, указанное в объекте {@link android.content.Intent},
+ должно соответствовать одному или нескольким действиям, перечисленным в фильтре.</p>
+
+<p>Если в фильтре не перечислены какие-либо действия, объекту
+Intent будет нечему соответствовать, поэтому все объекты Intent не пройдут этот тест. Однако, если в объекте {@link android.content.Intent}
+не указано действие, он пройдет тест (если в фильтре
+содержится хотя бы одно действие).</p>
+
+
+
+<h3 id="CategoryTest">Тестирование категории</h3>
+
+<p>Для указания принимаемых категорий объекта Intent фильтр Intent может объявлять любое (в том числе нулевое) число элементов
+<a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a>.  Например:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+    &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>Чтобы объект Intent прошел тестирование категории, все категории, приведенные в объекте {@link android.content.Intent},
+должны соответствовать категории из фильтра. Обратное не требуется &mdash; фильтр Intent может
+объявлять и другие категории, которых нет в объекте {@link android.content.Intent}, объект
+{@link android.content.Intent} при этом все равно пройдет тест. Поэтому объект Intent без категорий
+всегда пройдет этот тест, независимо от того, какие категории объявлены в фильтре.</p>
+
+<p class="note"><strong>Примечание.</strong>
+Система Android автоматически применяет категорию {@link android.content.Intent#CATEGORY_DEFAULT}
+ко всем неявным объектам Intent, которые передаются в {@link
+android.content.Context#startActivity startActivity()} и {@link
+android.app.Activity#startActivityForResult startActivityForResult()}.
+Поэтому, если вы хотите, чтобы ваша операция принимала неявные объекты Intent, в ее фильтрах Intent
+должна быть указана категория для {@code "android.intent.category.DEFAULT"} (как
+показано в предыдущем примере {@code &lt;intent-filter&gt;}).</p>
+
+
+
+<h3 id="DataTest">Тестирование данных</h3>
+
+<p>Для указания принимаемых данных объекта Intent фильтр Intent может объявлять любое (в том числе нулевое) число элементов
+<a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
+&lt;data&gt;}</a>.  Например:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:mimeType="video/mpeg" android:scheme="http" ... /&gt;
+    &lt;data android:mimeType="audio/mpeg" android:scheme="http" ... /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>Каждый элемент <code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code>
+может конкретизировать структуру URI и тип данных (тип мультимедиа MIME).  Имеются отдельные
+атрибуты &mdash; {@code scheme}, {@code host}, {@code port}
+и {@code path} &mdash; для каждой составной части URI:
+</p>
+
+<p style="margin-left: 2em">{@code &lt;scheme&gt;://&lt;host&gt;:&lt;port&gt;/&lt;path&gt;}</p>
+
+<p>
+Например:
+</p>
+
+<p style="margin-left: 2em">{@code content://com.example.project:200/folder/subfolder/etc}</p>
+
+<p>В этом URI схема имеет вид {@code content}, узел ―  {@code com.example.project},
+порт ― {@code 200}, а путь ― {@code folder/subfolder/etc}.
+</p>
+
+<p>Каждый из этих атрибутов является необязательным в элементе <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>,
+однако имеются линейные зависимости:</p>
+<ul>
+  <li>Если схема не указана, узел игнорируется.</li>
+  <li>Если узел не указан, порт игнорируется.</li>
+  <li>Если не указана ни схема, ни узел, путь игнорируется.</li>
+</ul>
+
+<p>Когда URI, указанный в объекте Intent, сравнивается с URI из фильтра,
+сравнение выполняется только с теми составными частями URI, которые приведены в фильтре. Например:</p>
+<ul>
+  <li>Если в фильтре указана только схема, то все URI с этой схемой будет соответствовать
+фильтру.</li>
+  <li>Если в фильтре указаны схема и полномочия, но отсутствует путь, все URI
+с такими же схемой и полномочиями пройдут фильтр, а их пути учитываться не будут.</li>
+  <li>Если в фильтре указаны схема, полномочия и путь, то только URI с такими же схемой,
+полномочиями и путем пройдут фильтр.</li>
+</ul>
+
+<p class="note"><strong>Примечание.</strong> Путь может быть
+указан с подстановочным символом (*), чтобы потребовалось только частичное соответствие имени пути.</p>
+
+<p>При выполнении тестирования данных сравнивается и URI, и тип MIME, указанные в объекте Intent, с URI
+и типом MIME из фильтра.  Действуют следующие правила:
+</p>
+
+<ol type="a">
+<li>Объект Intent, который не содержит ни URI, ни тип MIME, пройдет этот
+тест, только если в фильтре не указано никаких URI или типов MIME.</li>
+
+<li>Объект Intent, в котором имеется URI, но отсутствует тип MIME (ни явный, ни тот, который можно вывести из
+URI), пройдет этот тест, только если URI соответствует формату URI из фильтра
+, а в фильтре также не указан тип MIME.</li>
+
+<li>Объект Intent, в котором имеется тип MIME, но отсутствует URI, пройдет этот тест,
+только если в фильтре указан тот же тип MIME и не указан формат URI.</li>
+
+<li>Объект Intent, в котором имеется и URI, и тип MIME (явный или тот, который можно вывести из
+URI), пройдет только часть этого теста, проверяющую тип MIME,
+в том случае, если этот тип совпадает с типом, приведенным в фильтре.  Он пройдет часть этого теста, которая проверяет URI,
+либо если его URI совпадает с URI из фильтра, либо если этот объект содержит URI {@code content:}
+или {@code file:}, а в фильтре URI не указан. Другими словами,
+предполагается, что компонент поддерживает данные {@code content:} и {@code file:}, если в его
+фильтре указан <em>только</em> тип MIME.</p></li>
+</ol>
+
+<p>
+Это последнее правило (правило (d)) отражает ожидание того,
+что компоненты будут в состоянии получать локальные данные из файла или от поставщика контента.
+Поэтому их фильтры могут содержать только тип данных, а явно
+указывать схемы {@code content:} и {@code file:} не требуется.
+Это типичный случай.  Например, такой элемент <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>, как
+приведенный далее, сообщает системе Android, что компонент может получать данные изображений от поставщика
+контента и выводить их на экран:
+</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:mimeType="image/*" /&gt;
+    ...
+&lt;/intent-filter&gt;</pre>
+
+<p>
+Поскольку имеющиеся данные преимущественно распространяются поставщиками контента, фильтры, в которых
+указан тип данных и нет URI, вероятно, являются самыми распространенными.
+</p>
+
+<p>
+Другой стандартной конфигурацией являются фильтры со схемой и типом данных.  Например,
+такой элемент <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>,
+как приведенный далее, сообщает системе Android, что
+компонент может получать видеоданные из сети для выполнения действия:
+</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:scheme="http" android:type="video/*" /&gt;
+    ...
+&lt;/intent-filter&gt;</pre>
+
+
+
+<h3 id="imatch">Сопоставление объектов Intent</h3>
+
+<p>Объекты Intent сопоставляются с фильтрами Intent не только для определения целевого
+компонента, который требуется активировать, но также для выявления определенных сведений о наборе
+компонентов, имеющихся на устройстве.  Например, приложение главного экрана заполняет средство запуска приложений
+путем поиска всех операций с фильтрами Intent, в которых указано действие
+{@link android.content.Intent#ACTION_MAIN} и категория
+{@link android.content.Intent#CATEGORY_LAUNCHER}.</p>
+
+<p>Ваше приложение может использовать сопоставление объектов Intent таким же образом.
+В {@link android.content.pm.PackageManager} имеется набор методов {@code query...()},
+которые возвращают все компоненты, способные принять определенный объект, а также
+схожий набор методов {@code resolve...()}, которые определяют наиболее подходящий
+компонент, способный реагировать на объект Intent.  Например, метод
+{@link android.content.pm.PackageManager#queryIntentActivities
+queryIntentActivities()} возвращает передаваемый как аргумент список всех операций, которые могут выполнить
+объект Intent, а метод {@link
+android.content.pm.PackageManager#queryIntentServices
+queryIntentServices()} возвращает такой же список служб.
+Ни тот, ни другой метод не активирует компоненты; они просто перечисляют те из них, которые
+могут откликнуться.  Имеется схожий метод для приемников широковещательных сообщений (
+{@link android.content.pm.PackageManager#queryBroadcastReceivers
+).
+</p>
+
+
+
+
diff --git a/docs/html-intl/intl/ru/guide/components/loaders.jd b/docs/html-intl/intl/ru/guide/components/loaders.jd
new file mode 100644
index 0000000..eea72a2
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/components/loaders.jd
@@ -0,0 +1,494 @@
+page.title=Загрузчики
+parent.title=Операции
+parent.link=activities.html
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+    <h2>Содержание документа</h2>
+    <ol>
+    <li><a href="#summary">Сводная информация об API-интерфейсе загрузчика</a></li>
+    <li><a href="#app">Использование загрузчиков в приложении</a>
+      <ol>
+        <li><a href="#requirements"></a></li>
+        <li><a href="#starting">Запуск загрузчика</a></li>
+        <li><a href="#restarting">Перезапуск загрузчика</a></li>
+        <li><a href="#callback">Использование обратных вызовов класса LoaderManager</a></li>
+      </ol>
+    </li>
+    <li><a href="#example">Пример</a>
+       <ol>
+         <li><a href="#more_examples">Другие примеры</a></li>
+        </ol>
+    </li>
+  </ol>
+    
+  <h2>Основные классы</h2>
+    <ol>
+      <li>{@link android.app.LoaderManager}</li>
+      <li>{@link android.content.Loader}</li>
+
+    </ol>   
+    
+    <h2>Образцы кода по теме</h2>
+   <ol>
+     <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
+LoaderCursor</a></li>
+     <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html">
+LoaderThrottle</a></li>
+   </ol>
+  </div>
+</div>
+
+<p>Загрузчики, которые появились в Android 3.0, упрощают асинхронную загрузку данных
+в операцию или фрагмент. Загрузчики имеют следующие свойства:</p>
+  <ul>
+    <li>Они имеются для любых операций {@link android.app.Activity} и фрагментов {@link
+android.app.Fragment}.</li>
+    <li>Они обеспечивают асинхронную загрузку данных.</li>
+    <li>Они отслеживают источник своих данных и выдают новые результаты при
+изменении контента.</li>
+    <li>Они автоматически переподключаются к последнему курсору загрузчика при
+воссоздании после изменения конфигурации. Таким образом, им не требуется повторно запрашивать свои
+данные.</li>
+  </ul>
+ 
+<h2 id="summary">Сводная информация об API-интерфейсе загрузчика</h2>
+
+<p>Имеется несколько классов и интерфейсов, которые могут использовать
+загрузчики в приложении. Они приведены в этой таблице:</p>
+
+<table>
+  <tr>
+    <th>Класс/интерфейс</th>
+    <th>Описание</th>
+  </tr>
+  <tr>
+    <td>{@link android.app.LoaderManager}</td>
+    <td>Абстрактный класс, связываемый с {@link android.app.Activity} или
+{@link android.app.Fragment} для управления одним или несколькими интерфейсами {@link
+android.content.Loader}. Это позволяет приложению управлять
+длительно выполняющимися операциями вместе с жизненным циклом {@link android.app.Activity}
+или {@link android.app.Fragment}; чаще всего этот класс используется с 
+{@link android.content.CursorLoader}, однако приложения могут писать
+свои собственные загрузчики для работы с другими типами данных.
+    <br />
+    <br />
+    Имеется только один класс {@link android.app.LoaderManager} на операцию или фрагмент. Однако у класса {@link android.app.LoaderManager} может быть
+несколько загрузчиков.</td>
+  </tr>
+  <tr>
+    <td>{@link android.app.LoaderManager.LoaderCallbacks}</td>
+    <td>Интерфейс обратного вызова, обеспечивающий взаимодействие клиента с {@link
+android.app.LoaderManager}. Например, с помощью метода обратного вызова {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}
+создается новый загрузчик.</td>
+  </tr>
+  <tr>
+    <td>{@link android.content.Loader}</td>
+    <td>Абстрактный класс, который выполняет асинхронную загрузку данных. Это
+базовый класс для загрузчика. Обычно используется {@link
+android.content.CursorLoader}, но можно реализовать и собственный подкласс. Когда
+загрузчики активны, они должны отслеживать источник своих данных и выдавать новые
+результаты при изменении контента. </td>
+  </tr>
+  <tr>
+    <td>{@link android.content.AsyncTaskLoader}</td>
+    <td>Абстрактный загрузчик, который предоставляет {@link android.os.AsyncTask} для выполнения работы.</td>
+  </tr>
+  <tr>
+    <td>{@link android.content.CursorLoader}</td>
+    <td>Подкласс класса {@link android.content.AsyncTaskLoader}, который запрашивает
+{@link android.content.ContentResolver} и возвращает {@link
+android.database.Cursor}. Этот класс реализует протокол {@link
+android.content.Loader} стандартным способом для выполнения запросов к курсорам.
+Он строится на {@link android.content.AsyncTaskLoader} для выполнения запроса к курсору
+в фоновом потоке, чтобы не блокировать пользовательский интерфейс приложения. Использование
+этого загрузчика — это лучший способ асинхронной загрузки данных из {@link
+android.content.ContentProvider} вместо выполнения управляемого запроса через
+платформу или API-интерфейсы операции.</td>
+  </tr>
+</table>
+
+<p>Приведенные в этой таблице классы и интерфейсы являются наиболее важными компонентами,
+с помощью которых в приложении реализуется загрузчик. При создании каждого загрузчика
+не нужно использовать все эти компоненты, однако всегда следует указывать ссылку на {@link
+android.app.LoaderManager} для инициализации загрузчика и использовать реализацию
+класса {@link android.content.Loader}, например {@link
+android.content.CursorLoader}. В следующих разделах рассказывается, как использовать эти
+классы и интерфейсы в приложении.</p>
+
+<h2 id ="app">Использование загрузчиков в приложении</h2>
+<p>В этом разделе описывается использование загрузчиков в приложении для Android. В
+приложениях, использующих загрузчики, обычно имеются следующие элементы:</p>
+<ul>
+  <li>{@link android.app.Activity} или {@link android.app.Fragment};</li>
+  <li>экземпляр {@link android.app.LoaderManager};</li>
+  <li>{@link android.content.CursorLoader} для загрузки данных, выдаваемых {@link
+android.content.ContentProvider}. Вы также можете реализовать собственный подкласс
+класса {@link android.content.Loader} или {@link android.content.AsyncTaskLoader} для
+загрузки данных из другого источника;</li>
+  <li>реализация для {@link android.app.LoaderManager.LoaderCallbacks}.
+Именно здесь создаются новые загрузчики и ведется управление ссылками на существующие
+загрузчики;</li> 
+<li>способ отображения данных загрузчика, например {@link
+android.widget.SimpleCursorAdapter};</li>
+  <li>источник данных, например {@link android.content.ContentProvider}, когда используется 
+{@link android.content.CursorLoader}.</li>
+</ul>
+<h3 id="starting">Запуск загрузчика</h3>
+
+<p>{@link android.app.LoaderManager} управляет одним или несколькими экземплярами {@link
+android.content.Loader} в {@link android.app.Activity} или
+{@link android.app.Fragment}. Имеется только один {@link
+android.app.LoaderManager} на каждую операцию или каждый фрагмент.</p> 
+
+<p>{@link android.content.Loader} обычно
+инициализируется в методе {@link
+android.app.Activity#onCreate onCreate()} операции или в методе фрагмента 
+{@link android.app.Fragment#onActivityCreated onActivityCreated()}. Делается
+это следующим образом:</p>
+
+<pre>// Prepare the loader.  Either re-connect with an existing one,
+// or start a new one.
+getLoaderManager().initLoader(0, null, this);</pre>
+
+<p>Метод {@link android.app.LoaderManager#initLoader initLoader()} принимает
+следующие параметры:</p>
+<ul>
+  <li>уникальный идентификатор, обозначающий загрузчик. В данном примере идентификатором является 0;</li>
+<li>необязательные аргументы, которые передаются загрузчику при
+построении (в данном примере это <code>null</code>);</li> 
+
+<li>реализация {@link android.app.LoaderManager.LoaderCallbacks}, которая
+вызывает класс {@link android.app.LoaderManager} для выдачи событий загрузчика. В данном
+примере локальный класс реализует интерфейс {@link
+android.app.LoaderManager.LoaderCallbacks}, поэтому он передает ссылку
+самому себе: {@code this}.</li> 
+</ul>
+<p>Вызов {@link android.app.LoaderManager#initLoader initLoader()} обеспечивает инициализацию
+загрузчика. Возможен один из двух результатов:</p>
+<ul>
+  <li>Если загрузчик, указанный с помощью идентификатора, уже существует, будет повторно использован загрузчик, созданный
+последним.</li>
+  <li>Если загрузчик, указанный с помощью идентификатора, <em>не</em> существует,
+{@link android.app.LoaderManager#initLoader initLoader()} вызывает метод
+{@link android.app.LoaderManager.LoaderCallbacks} из {@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}.
+Именно здесь реализуется код для создания экземпляра и возврата нового загрузчика.
+Более подробные сведения см. в разделе <a href="#onCreateLoader">onCreateLoader</a>.</li>
+</ul>
+<p>В любом случае данная реализация {@link android.app.LoaderManager.LoaderCallbacks}
+связывается с загрузчиком и будет вызываться
+при изменении состояния загрузчика.  Если в момент этого вызова вызывающий компонент находится в
+запущенном состоянии, это означает, что запрошенный загрузчик уже существует и сформировал свои
+данные. В этом случае система сразу же вызовет {@link
+android.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()}
+ (во время{@link android.app.LoaderManager#initLoader initLoader()}),
+будьте готовы к этому. Более подробные сведения об этом обратном вызове см. в разделе <a href="#onLoadFinished">
+onLoadFinished</a>.</p>
+
+<p>Обратите внимание, что метод {@link android.app.LoaderManager#initLoader initLoader()}
+возвращает создаваемый класс {@link android.content.Loader}, но записывать
+ссылку на него не требуется. Класс {@link android.app.LoaderManager} управляет
+жизненным циклом загрузчика автоматически. Класс {@link android.app.LoaderManager}
+начинает загрузку и заканчивает ее при необходимости, а также поддерживает состояние загрузчика
+и связанного с ним контента. А это подразумевает, что вы будете редко взаимодействовать с загрузчиками
+напрямую (однако пример использования методов загрузчика для тонкой настройки его
+поведения см. в образце кода <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a>). 
+Для вмешательства в процесс загрузки при возникновении определенных событий обычно используются методы {@link
+android.app.LoaderManager.LoaderCallbacks}
+. Более подробные сведения об этом см. в разделе <a href="#callback">Использование обратных вызовов LoaderManager</a>.</p>
+
+<h3 id="restarting">Перезапуск загрузчика</h3>
+
+<p>При использовании метода {@link android.app.LoaderManager#initLoader initLoader()}, как
+показано выше, он задействует существующий загрузчик с указанным идентификатором — в случае его наличия.
+Если такого загрузчика нет, метод его создаст. Однако иногда старые данные нужно отбросить
+и начать все заново.</p>
+
+<p>Для удаления старых данных используется метод {@link
+android.app.LoaderManager#restartLoader restartLoader()}. Например, эта
+реализация метода{@link android.widget.SearchView.OnQueryTextListener} перезапускает
+загрузчик, когда изменяется запрос пользователя. Загрузчик необходимо перезагрузить,
+ с тем чтобы он мог использовать измененный фильтр поиска для выполнения нового запроса:</p>
+
+<pre>
+public boolean onQueryTextChanged(String newText) {
+    // Called when the action bar search text has changed.  Update
+    // the search filter, and restart the loader to do a new query
+    // with this filter.
+    mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+    getLoaderManager().restartLoader(0, null, this);
+    return true;
+}</pre>
+
+<h3 id="callback">Использование обратных вызовов класса LoaderManager</h3>
+
+<p>{@link android.app.LoaderManager.LoaderCallbacks} представляет собой интерфейс обратного вызова,
+который позволяет клиенту взаимодействовать с классом {@link android.app.LoaderManager}. </p>
+<p>Ожидается, что загрузчики, в частности {@link android.content.CursorLoader}, будут сохранять
+свои данные после их остановки. Это позволяет приложениям сохранять свои
+данные в методах {@link android.app.Activity#onStop
+onStop()} и {@link android.app.Activity#onStart onStart()} операции или фрагмента, с тем чтобы,
+когда пользователь вернется в приложение, ему не пришлось ждать, пока данные
+загрузятся заново. Методы {@link android.app.LoaderManager.LoaderCallbacks} используются,
+чтобы узнать, когда требуется создать новый загрузчик, а также для того, чтобы указать приложению, когда
+пришло время перестать использовать данные загрузчика.</p>
+
+<p>Интерфейс {@link android.app.LoaderManager.LoaderCallbacks} использует следующие
+методы:</p>
+<ul>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}  —
+создает экземпляр и возвращает новый класс {@link android.content.Loader} для данного идентификатора.
+</li></ul>
+<ul>
+  <li> {@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()}
+— вызывается, когда созданный ранее загрузчик завершил загрузку.
+</li></ul>
+<ul>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}
+— вызывается, когда состояние созданного ранее загрузчика сбрасывается, в результате чего его данные
+теряются.
+</li>
+</ul>
+<p>Более подробно эти методы описаны в разделах ниже.</p>
+
+<h4 id ="onCreateLoader">onCreateLoader</h4>
+
+<p>При попытке доступа к загрузчику (например, посредством метода {@link
+android.app.LoaderManager#initLoader initLoader()}), он проверяет, существует ли
+загрузчик, указанный с помощью идентификатора. Если он не существует, он вызывает метод {@link
+android.app.LoaderManager.LoaderCallbacks} {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}. Именно
+здесь и создается новый загрузчик. Обычно это будет класс {@link
+android.content.CursorLoader}, однако можно реализовать и собственный подкласс класса {@link
+android.content.Loader}. </p>
+
+<p>В этом примере метод обратного вызова {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}
+создает класс {@link android.content.CursorLoader}. Вы должны построить
+класс {@link android.content.CursorLoader} с помощью его метода конструктора, для чего
+требуется полный набор информации, которая нужна для выполнения запроса к {@link
+android.content.ContentProvider}. В частности, требуется:</p>
+<ul>
+  <li><em>uri</em> — URI контента, который необходимо получить; </li>
+  <li><em>projection</em> — список столбцов, которые будут возвращены. При передаче
+<code>null</code> будут возвращены все столбцы, а это неэффективно; </li>
+  <li><em>selection</em> — фильтр, объявляющий, какие строки возвращать,
+отформатированный в виде предложения SQL WHERE (за исключением самого WHERE). При передаче
+<code>null</code> будут возвращены все строки для данного URI; </li>
+  <li><em>selectionArgs</em> — в выборку можно включить символы "?", которые будут
+заменены значениями из <em>selectionArgs</em> в порядке следования в
+выборке. Значения будут привязаны как строки; </li>
+  <li><em>sortOrder</em> — порядок расположения строк, отформатированный в виде предложения SQL
+ORDER BY (за исключением самого ORDER BY). При передаче <code>null</code> будет
+использоваться стандартный порядок сортировки, поэтому, список, возможно, будет неотсортирован.</li>
+</ul>
+<p>Например:</p>
+<pre>
+ // If non-null, this is the current filter the user has provided.
+String mCurFilter;
+...
+public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+    // This is called when a new Loader needs to be created.  This
+    // sample only has one Loader, so we don't care about the ID.
+    // First, pick the base URI to use depending on whether we are
+    // currently filtering.
+    Uri baseUri;
+    if (mCurFilter != null) {
+        baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+                  Uri.encode(mCurFilter));
+    } else {
+        baseUri = Contacts.CONTENT_URI;
+    }
+
+    // Now create and return a CursorLoader that will take care of
+    // creating a Cursor for the data being displayed.
+    String select = &quot;((&quot; + Contacts.DISPLAY_NAME + &quot; NOTNULL) AND (&quot;
+            + Contacts.HAS_PHONE_NUMBER + &quot;=1) AND (&quot;
+            + Contacts.DISPLAY_NAME + &quot; != '' ))&quot;;
+    return new CursorLoader(getActivity(), baseUri,
+            CONTACTS_SUMMARY_PROJECTION, select, null,
+            Contacts.DISPLAY_NAME + &quot; COLLATE LOCALIZED ASC&quot;);
+}</pre>
+<h4 id="onLoadFinished">onLoadFinished</h4>
+
+<p>Этот метод вызывается, когда созданный ранее загрузчик завершил загрузку.
+Этот метод гарантировано вызывается до высвобождения последних данных,
+которые были предоставлены этому загрузчику.  К этому моменту необходимо полностью перестать использовать
+старые данные (поскольку они скоро будут заменены). Однако этого не следует делать
+самостоятельно, поскольку данными владеет загрузчик и он позаботится об этом.</p>
+
+
+<p>Загрузчик высвободит данные, как только узнает, что приложение их больше не
+использует.  Например, если данными является курсор из {@link
+android.content.CursorLoader}, не следует вызывать {@link
+android.database.Cursor#close close()} самостоятельно. Если курсор
+размещается в {@link android.widget.CursorAdapter}, следует использовать метод {@link
+android.widget.SimpleCursorAdapter#swapCursor swapCursor()} с тем, чтобы
+старый {@link android.database.Cursor} не закрылся. Например:</p>
+
+<pre>
+// This is the Adapter being used to display the list's data.<br
+/>SimpleCursorAdapter mAdapter;
+...
+
+public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
+    // Swap the new cursor in.  (The framework will take care of closing the
+    // old cursor once we return.)
+    mAdapter.swapCursor(data);
+}</pre>
+
+<h4 id="onLoaderReset">onLoaderReset</h4>
+
+<p>Этот метод вызывается, когда состояние созданного ранее загрузчика сбрасывается, в результате чего
+его данные теряются. Этот обратный вызов позволяет узнать, когда данные
+вот-вот будут высвобождены, с тем чтобы можно было удалить свою ссылку на них.  </p>
+<p>Данная реализация вызывает 
+{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}  
+со значением <code>null</code>:</p>
+
+<pre>
+// This is the Adapter being used to display the list's data.
+SimpleCursorAdapter mAdapter;
+...
+
+public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
+    // This is called when the last Cursor provided to onLoadFinished()
+    // above is about to be closed.  We need to make sure we are no
+    // longer using it.
+    mAdapter.swapCursor(null);
+}</pre>
+
+
+<h2 id="example">Пример</h2>
+
+<p>В качестве примера далее приведена полная реализация фрагмента {@link
+android.app.Fragment}, который отображает {@link android.widget.ListView} с
+результатами запроса к поставщику такого контента, как контакты. Для управления запросом к поставщику используется класс {@link
+android.content.CursorLoader}.</p>
+ 
+<p>Чтобы приложение могло обращаться к контактам пользователя, как показано в этом примере, в его
+манифесте должно присутствовать разрешение
+{@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS}.</p>
+
+<pre>
+public static class CursorLoaderListFragment extends ListFragment
+        implements OnQueryTextListener, LoaderManager.LoaderCallbacks&lt;Cursor&gt; {
+
+    // This is the Adapter being used to display the list's data.
+    SimpleCursorAdapter mAdapter;
+
+    // If non-null, this is the current filter the user has provided.
+    String mCurFilter;
+
+    @Override public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        // Give some text to display if there is no data.  In a real
+        // application this would come from a resource.
+        setEmptyText(&quot;No phone numbers&quot;);
+
+        // We have a menu item to show in action bar.
+        setHasOptionsMenu(true);
+
+        // Create an empty adapter we will use to display the loaded data.
+        mAdapter = new SimpleCursorAdapter(getActivity(),
+                android.R.layout.simple_list_item_2, null,
+                new String[] { Contacts.DISPLAY_NAME, Contacts.CONTACT_STATUS },
+                new int[] { android.R.id.text1, android.R.id.text2 }, 0);
+        setListAdapter(mAdapter);
+
+        // Prepare the loader.  Either re-connect with an existing one,
+        // or start a new one.
+        getLoaderManager().initLoader(0, null, this);
+    }
+
+    @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        // Place an action bar item for searching.
+        MenuItem item = menu.add(&quot;Search&quot;);
+        item.setIcon(android.R.drawable.ic_menu_search);
+        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+        SearchView sv = new SearchView(getActivity());
+        sv.setOnQueryTextListener(this);
+        item.setActionView(sv);
+    }
+
+    public boolean onQueryTextChange(String newText) {
+        // Called when the action bar search text has changed.  Update
+        // the search filter, and restart the loader to do a new query
+        // with this filter.
+        mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+        getLoaderManager().restartLoader(0, null, this);
+        return true;
+    }
+
+    @Override public boolean onQueryTextSubmit(String query) {
+        // Don't care about this.
+        return true;
+    }
+
+    @Override public void onListItemClick(ListView l, View v, int position, long id) {
+        // Insert desired behavior here.
+        Log.i(&quot;FragmentComplexList&quot;, &quot;Item clicked: &quot; + id);
+    }
+
+    // These are the Contacts rows that we will retrieve.
+    static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
+        Contacts._ID,
+        Contacts.DISPLAY_NAME,
+        Contacts.CONTACT_STATUS,
+        Contacts.CONTACT_PRESENCE,
+        Contacts.PHOTO_ID,
+        Contacts.LOOKUP_KEY,
+    };
+    public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+        // This is called when a new Loader needs to be created.  This
+        // sample only has one Loader, so we don't care about the ID.
+        // First, pick the base URI to use depending on whether we are
+        // currently filtering.
+        Uri baseUri;
+        if (mCurFilter != null) {
+            baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+                    Uri.encode(mCurFilter));
+        } else {
+            baseUri = Contacts.CONTENT_URI;
+        }
+
+        // Now create and return a CursorLoader that will take care of
+        // creating a Cursor for the data being displayed.
+        String select = &quot;((&quot; + Contacts.DISPLAY_NAME + &quot; NOTNULL) AND (&quot;
+                + Contacts.HAS_PHONE_NUMBER + &quot;=1) AND (&quot;
+                + Contacts.DISPLAY_NAME + &quot; != '' ))&quot;;
+        return new CursorLoader(getActivity(), baseUri,
+                CONTACTS_SUMMARY_PROJECTION, select, null,
+                Contacts.DISPLAY_NAME + &quot; COLLATE LOCALIZED ASC&quot;);
+    }
+
+    public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
+        // Swap the new cursor in.  (The framework will take care of closing the
+        // old cursor once we return.)
+        mAdapter.swapCursor(data);
+    }
+
+    public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
+        // This is called when the last Cursor provided to onLoadFinished()
+        // above is about to be closed.  We need to make sure we are no
+        // longer using it.
+        mAdapter.swapCursor(null);
+    }
+}</pre>
+<h3 id="more_examples">Другие примеры</h3>
+
+<p>В <strong>ApiDemos</strong> есть несколько различных примеров, которые
+иллюстрируют использование загрузчиков:</p>
+<ul>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
+LoaderCursor</a> — полная версия
+показанного выше фрагмента.</li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> — пример того, как использовать регулирование
+для сокращения числа запросов, выполняемых поставщиком контента при изменении его данных.</li>
+</ul>
+
+<p>Сведения о загрузке и установке образцов кода SDK см. в статье <a href="http://developer.android.com/resources/samples/get.html"> Получение
+образцов кода</a>. </p>
+
diff --git a/docs/html-intl/intl/ru/guide/components/processes-and-threads.jd b/docs/html-intl/intl/ru/guide/components/processes-and-threads.jd
new file mode 100644
index 0000000..fd298e0
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/components/processes-and-threads.jd
@@ -0,0 +1,411 @@
+page.title=Процессы и потоки
+page.tags=жизненный цикл,фон
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Содержание документа</h2>
+<ol>
+<li><a href="#Processes">Процессы</a>
+  <ol>
+    <li><a href="#Lifecycle">Жизненный цикл процесса</a></li>
+  </ol>
+</li>
+<li><a href="#Threads">Потоки</a>
+  <ol>
+    <li><a href="#WorkerThreads">Рабочие потоки</a></li>
+    <li><a href="#ThreadSafe">Потокобезопасные методы</a></li>
+  </ol>
+</li>
+<li><a href="#IPC">Взаимодействие процессов</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Когда компонент приложения запускается при отсутствии других работающих компонентов
+, система Android запускает новый процесс Linux для приложения с одним потоком
+выполнения. По умолчанию все компоненты одного приложения работают в одном процессе и потоке
+(называется «главным потоком»). Если компонент приложения запускается при наличии процесса
+для этого приложения (так как существует другой компонент из приложения), тогда компонент
+запускается в этом процессе и использует тот же поток выполнения. Однако можно организовать выполнение
+других компонентов приложения в отдельных процессах и создавать дополнительный
+поток для любого процесса.</p>
+
+<p>В этом документе обсуждается работа процессов и потоков в приложении Android.</p>
+
+
+<h2 id="Processes">Процессы</h2>
+
+<p>По умолчанию все компоненты одного приложения работают в одном процессе, и большинство приложений
+не должно менять это поведение. Однако, если необходимо контролировать, к какому процессу принадлежат определенный
+компонент, можно сделать это в файле манифеста.</p>
+
+<p>Запись манифеста для каждого типа элементов компонента &mdash;<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a>, <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code
+&lt;service&gt;}</a>, <a href="{@docRoot}guide/topics/manifest/receiver-element.html">{@code
+&lt;receiver&gt;}</a> и <a href="{@docRoot}guide/topics/manifest/provider-element.html">{@code
+&lt;provider&gt;}</a> &mdash;поддерживает атрибут {@code android:process}, позволяющий задавать
+процесс, в котором следует выполнять этот компонент. Можно установить этот атрибут так, чтобы каждый компонент выполнялся
+в собственном процессе, или так, чтобы только некоторые компоненты совместно использовали один процесс.  Можно также настроить процесс
+{@code android:process} так, чтобы компоненты разных приложений выполнялись в одном
+процессе, при условии что приложения совместно используют один идентификатор пользователя Linux и выполняют вход с
+одним сертификатом.</p>
+
+<p>Элемент <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code
+&lt;application&gt;}</a> также поддерживает атрибут {@code android:process}, позволяющий задать
+значение по умолчанию, которое применяется ко всем компонентам.</p>
+
+<p>Android может остановить процесс в некоторой точке, когда не хватает памяти и она необходима другим
+процессам, которые обслуживают пользователя в данный момент. Работа компонентов
+приложения, работающих в этом процессе, последовательно останавливается.  Процесс для этих компонентов запускается
+повторно, когда для них появляется работа.</p>
+
+<p>Принимая решение о прерывании процессов, система Android взвешивает их относительную важность
+для пользователя.  Например, более вероятно выключение процессов, содержащих действия, которые
+не отображаются на экране, по сравнению с процессом, содержащим видимые действия. Следовательно, решение
+о прерывании процесса зависит от состояния компонентов, работающих в этом процессе. Ниже обсуждаются правила,
+на основании которых принимается решение о выборе прерываемых процессов. </p>
+
+
+<h3 id="Lifecycle">Жизненный цикл процесса</h3>
+
+<p>Система Android пытается сохранять процесс приложения как можно дольше, но
+ в конечном счете вынуждена удалять старые процессы, чтобы восстановить память для новых или более важных процессов.  Чтобы
+определить, какие процессы сохранить,
+а какие удалить, система помещает каждый процесс в «иерархию важности» на основе
+компонентов, выполняющихся в процессе, и состояния этих компонентов.  Процессы с самым низким уровнем
+важности исключаются в первую очередь, затем исключаются процессы следующего уровня важности и т. д., насколько это необходимо
+для восстановления ресурсов системы.</p>
+
+<p>В иерархии важности предусмотрено пять уровней. В следующем списке представлены различные
+типы процессов в порядке важности (первый процесс является <em>наиболее важным</em> и
+<em>удаляется в последнюю очередь</em>):</p>
+
+<ol>
+  <li><b>Процесс переднего плана</b>
+    <p>Процесс, необходимый для текущей деятельности пользователя.  Процесс
+ считается процессом переднего плана, если выполняется любое из следующих условий:</p>
+
+      <ul>
+        <li>Он содержит действие {@link android.app.Activity}, с которым взаимодействует пользователь (вызван метод {@link
+android.app.Activity}
+{@link android.app.Activity#onResume onResume()}).</li>
+
+        <li>Он содержит службу {@link android.app.Service}, связанную с действием, с которым
+взаимодействует пользователь.</li>
+
+        <li>Он содержит службу {@link android.app.Service}, которая выполняется "на переднем плане", &mdash; службу,
+которая называется {@link android.app.Service#startForeground startForeground()}.
+
+        <li>Он содержит службу{@link android.app.Service}, которая выполняет один из обратных вызовов
+ жизненного цикла ({@link android.app.Service#onCreate onCreate()}, {@link android.app.Service#onStart
+onStart()} или {@link android.app.Service#onDestroy onDestroy()}).</li>
+
+        <li>Он содержит ресивер {@link android.content.BroadcastReceiver}, который выполняет метод {@link
+android.content.BroadcastReceiver#onReceive onReceive()}.</li>
+    </ul>
+
+    <p>Обычно одновременно работает лишь несколько процессов переднего плана.  Они уничтожаются только
+в крайнем случае, если памяти остается так мало, что они не могут продолжать совместную работу.  Обычно в этот момент
+устройство достигло состояния разбиения памяти на страницы, поэтому для того, чтобы пользовательский интерфейс откликался на действия пользователя, необходимо
+удаление некоторых процессов на переднем плане.</p></li>
+
+  <li><b>Видимые процессы</b>
+    <p>Процессы, которые не содержат компонентов переднего плана, но могут
+влиять на отображение на экране. Процесс считается видимым,
+если выполняется любое из следующих условий:</p>
+
+      <ul>
+        <li>Он содержит действие {@link android.app.Activity}, которое не находится на переднем плане, но
+видно пользователю (вызван метод {@link android.app.Activity#onPause onPause()}). 
+Например, это может происходить, если действие на переднем плане запустило диалоговое окно, которое позволяет видеть
+предыдущее действие позади него.</li>
+
+        <li>Он содержит службу {@link android.app.Service}, связанную с видимым
+действием или действием переднего плана.</li>
+      </ul>
+
+      <p>Видимый процесс считается исключительно важным, его следует удалять
+только в случае, если требуется сохранить работу всех процессов переднего плана. </p>
+    </li>
+
+  <li><b>Служебный процесс</b>
+    <p>Процесс, который выполняет службу, запущенную с помощью метода {@link
+android.content.Context#startService startService()}, и не попадает ни в одну из двух
+категорий более высокого уровня. Хотя служебные процессы не связаны непосредственно с тем, что видит пользователь,
+они обычно выполняют важные для пользователя действия (например, воспроизводят музыку в фоновом режиме или
+загружают данные в сеть), поэтому система сохраняет их выполнение, если памяти достаточно для
+их работы наряду со всеми видимыми процессами и процессами переднего плана. </p>
+  </li>
+
+  <li><b>Фоновый процесс</b>
+    <p>Процесс, содержащий действия, которые не видны пользователю в настоящее время (вызван метод 
+{@link android.app.Activity#onStop onStop()} действия). Эти процессы не оказывают непосредственного
+воздействия на работу пользователя, и система может удалить их в любой момент, чтобы освободить память для
+процессов переднего плана,
+видимых или служебных процессов. Обычно выполняется множество фоновых процессов, поэтому они хранятся в списке
+LRU (недавно использованные), чтобы процессы, содержащие самые
+недавние действия, которые видел пользователь, удалялись в последнюю очередь. Если для действия правильно реализованы методы жизненного цикла,
+и действие сохраняет текущее состояние, удаление процесса этого действия не оказывает видимого воздействия на
+работу пользователя, так как когда пользователь возвращается к этому действию, оно восстанавливает
+все элементы своего видимого состояния. Информацию о сохранении и восстановлении состояния см. в документе <a href="{@docRoot}guide/components/activities.html#SavingActivityState">Действия</a>
+.</p>
+  </li>
+
+  <li><b>Пустой процесс</b>
+    <p>Процесс, не содержащий никаких компонентов активного приложения.  Единственная причина сохранять процесс
+такого типа — это кэширование, которое улучшает время следующего запуска
+компонента в этом процессе.  Система часто удаляет эти процессы для равномерного распределения всех системных
+ресурсов между кэшем процесса и кэшем базового ядра.</p>
+  </li>
+</ol>
+
+
+  <p>Система Android относит процесс к максимально высокому уровню на основе важности
+компонентов, активных в процессе в текущее время.  Например, если процесс содержит служебное и видимое действие,
+процесс считается видимым, а не служебным процессом.</p>
+
+  <p>Кроме того, уровень процесса может быть повышен, поскольку имеются другие процессы, зависимые от него. 
+Например, процесс, обслуживающий другой процесс, не может иметь уровень ниже уровня обслуживаемого
+процесса. Например, если поставщик контента в процессе A обслуживает клиента в процессе B или
+служебный процесс A связан с компонентом в процессе B, процесс A всегда считается не менее
+важным, чем процесс B.</p>
+
+  <p>Так как процесс, выполняющий службу, оценивается выше процесса с фоновыми действиям,
+действие, запускающее долговременную операцию, может запустить <a href="{@docRoot}guide/components/services.html">службу</a> для этой операции, а не просто
+создать рабочий поток, особенно в случае, если операция продлится дольше действия.
+Например, действие, которое загружает изображение на веб-сайт, должно запустить службу для выполнения
+загрузки, так что загрузка может продолжаться в фоновом режиме даже после выхода пользователя из действия.
+Использование службы гарантирует, что операция будет иметь приоритет не ниже «служебного процесса»,
+независимо от того, что происходит с действием. По этой же причине ресиверы должны
+использовать службы, а не просто ставить в поток операции, требующие много времени для выполнения.</p>
+
+
+
+
+<h2 id="Threads">Потоки</h2>
+
+<p>При запуске приложения система создает поток выполнения для приложения,
+который называется «главным». Этот поток очень важен, так как он отвечает за диспетчеризацию событий
+на виджеты соответствующего интерфейса пользователя, включая события графического представления. Он также является потоком, в котором
+приложение взаимодействует с компонентами из набора инструментов пользовательского интерфейса Android (компонентами из пакетов {@link
+android.widget} и {@link android.view}). По существу, главный поток — это то, что иногда называют
+потоком пользовательского интерфейса.</p>
+
+<p>Система <em>не</em> создает отдельного потока для каждого экземпляра компонента. Все
+компоненты, которые выполняются в одном процессе, создают экземпляры в потоке пользовательского интерфейса, и системные вызовы
+каждого компонента отправляются из этого потока. Поэтому методы, которые отвечают на системные
+обратные вызовы (такие как метод {@link android.view.View#onKeyDown onKeyDown()} для сообщения о действиях пользователя
+или метод обратного вызова жизненного цикла), всегда выполняются в потоке пользовательского интерфейса процесса.</p>
+
+<p>Например, когда пользователь нажимает кнопку на экране, поток пользовательского интерфейса вашего приложения отправляет
+событие нажатия в виджет, который, в свою очередь, устанавливает кнопку в нажатое состояние и отправляет запрос на аннулирование
+в очередь событий. Поток пользовательского интерфейса исключает запрос из очереди и уведомляет виджет, что он должен
+отобразиться повторно.</p>
+
+<p>Когда приложение выполняет интенсивную работу в ответ на действия пользователя, эта одиночная модель потока
+может показывать плохую производительность, если приложение реализовано неправильно. То есть, если
+все происходит в потоке пользовательского интерфейса, выполнение долговременных операций, таких как сетевой доступ или
+запросы к базе данных, будет блокировать весь пользовательский интерфейс. Когда поток заблокирован, не могут обрабатываться никакие события,
+включая события изменения отображения. С точки зрения пользователя
+приложение выглядит зависшим. Хуже того, если поток пользовательского интерфейса заблокирован более нескольких секунд
+(в настоящее время около 5 секунд), отображается печально известное диалоговое окно <a href="http://developer.android.com/guide/practices/responsiveness.html">«приложение не
+отвечает</a>». После этого недовольный пользователь может выйти из вашего приложения
+и удалить его.</p>
+
+<p>Кроме того, набор инструментов пользовательского интерфейса Andoid <em>не</em> является потокобезопасным. Поэтому, вы не должны работать
+с пользовательским интерфейсом из рабочего потока. Манипуляции с пользовательским интерфейсом необходимо выполнять из
+потока пользовательского интерфейса. Таким образом, существует только два правила однопоточной модели Android:</p>
+
+<ol>
+<li>Не блокируйте поток пользовательского интерфейса
+<li>Не обращайтесь к набору инструментов пользовательского интерфейса Android снаружи потока пользовательского интерфейса
+</ol>
+
+<h3 id="WorkerThreads">Рабочие потоки</h3>
+
+<p>Вследствие описанной выше однопоточной модели для динамичности пользовательского интерфейса ваших приложений
+очень важно не блокировать поток пользовательского интерфейса. Если требуется выполнять операции,
+занимающие некоторое время, обязательно выполняйте их в отдельных потоках (»фоновых» или
+«рабочих» потоках).</p>
+
+<p>Например, ниже приведен код контроля нажатий, который загружает изображение из отдельного
+потока и отображает их в виджете {@link android.widget.ImageView}:</p>
+
+<pre>
+public void onClick(View v) {
+    new Thread(new Runnable() {
+        public void run() {
+            Bitmap b = loadImageFromNetwork("http://example.com/image.png");
+            mImageView.setImageBitmap(b);
+        }
+    }).start();
+}
+</pre>
+
+<p>На первый взгляд, он должен работать хорошо, так как он создает новый поток для обработки сетевой
+операции. Однако, он нарушает второе правило однопоточной модели: <em>не обращайтесь к набору инструментов пользовательского интерфейса
+Android снаружи потока пользовательского интерфейса</em> &mdash; этот пример изменяет {@link
+android.widget.ImageView} из рабочего потока, а не из потока пользовательского интерфейса. Это может привести
+к неопределенному и непредвиденному поведению, отследить которое будет трудно.</p>
+
+<p>Для устранения этой проблемы Android предлагает несколько путей доступа к потоку пользовательского интерфейса из других
+потоков. Ниже приведен список полезных методов:</p>
+
+<ul>
+<li>{@link android.app.Activity#runOnUiThread(java.lang.Runnable)
+Activity.runOnUiThread(Runnable)}</li>
+<li>{@link android.view.View#post(java.lang.Runnable) View.post(Runnable)}</li>
+<li>{@link android.view.View#postDelayed(java.lang.Runnable, long) View.postDelayed(Runnable,
+long)}</li>
+</ul>
+
+<p>Например, можно исправить приведенный выше код с помощью метода {@link
+android.view.View#post(java.lang.Runnable) View.post(Runnable)}:</p>
+
+<pre>
+public void onClick(View v) {
+    new Thread(new Runnable() {
+        public void run() {
+            final Bitmap bitmap = loadImageFromNetwork("http://example.com/image.png");
+            mImageView.post(new Runnable() {
+                public void run() {
+                    mImageView.setImageBitmap(bitmap);
+                }
+            });
+        }
+    }).start();
+}
+</pre>
+
+<p>Теперь реализация является потокобезопасной: сетевая операция выполняется из отдельного потока,
+тогда как {@link android.widget.ImageView} работает из потока пользовательского интерфейса.</p>
+
+<p>Однако по мере роста сложности, код такого типа может становиться запутанным и сложным
+для поддержания. Чтобы обрабатывать более сложные взаимодействия с рабочим потоком, можно
+использовать метод {@link android.os.Handler} в рабочем потоке для обработки сообщений, поступающих из потока
+пользовательского интерфейса. Вероятно, самым лучшим решением является расширение класса {@link android.os.AsyncTask},
+которое упрощает выполнение заданий рабочего потока, которые должны взаимодействовать с пользовательским интерфейсом.</p>
+
+
+<h4 id="AsyncTask">Использование AsyncTask</h4>
+
+<p>Метод {@link android.os.AsyncTask} позволяет выполнять асинхронную работу в пользовательском
+интерфейсе. Он выполняет операции блокирования в рабочем потоке и затем публикует результаты в потоке
+пользовательского интерфейса без необходимости самостоятельно обрабатывать потоки и/или обработчики.</p>
+
+<p>Для использования этого метода необходимо создать подкласс {@link android.os.AsyncTask} и реализовать метод обратного вызова {@link
+android.os.AsyncTask#doInBackground doInBackground()}, который работает в пуле
+фоновых потоков. Чтобы обновить пользовательский интерфейс, следует реализовать метод {@link
+android.os.AsyncTask#onPostExecute onPostExecute()}, который доставляет результат из {@link
+android.os.AsyncTask#doInBackground doInBackground()} и работает в потоке пользовательского интерфейса, так что вы можете безопасно
+обновлять пользовательский интерфейс. Задача выполняется через вызов метода {@link android.os.AsyncTask#execute execute()}
+из потока пользовательского интерфейса.</p>
+
+<p>Например, можно реализовать предыдущий пример с помощью метода {@link android.os.AsyncTask} следующим
+образом:</p>
+
+<pre>
+public void onClick(View v) {
+    new DownloadImageTask().execute("http://example.com/image.png");
+}
+
+private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
+    /** The system calls this to perform work in a worker thread and
+      * delivers it the parameters given to AsyncTask.execute() */
+    protected Bitmap doInBackground(String... urls) {
+        return loadImageFromNetwork(urls[0]);
+    }
+    
+    /** The system calls this to perform work in the UI thread and delivers
+      * the result from doInBackground() */
+    protected void onPostExecute(Bitmap result) {
+        mImageView.setImageBitmap(result);
+    }
+}
+</pre>
+
+<p>Теперь пользовательский интерфейс защищен и код стал проще, так как работа разделена на
+часть, которая должна выполняться в рабочем потоке, и часть, которая должна выполняться в потоке пользовательского интерфейса.</p>
+
+<p>Прочитайте статью {@link android.os.AsyncTask}, чтобы полностью понять
+использование этого класса. Здесь приведен краткий обзор его работы:</p>
+
+<ul>
+<li>Можно указывать тип параметров, значения хода выполнения и конечное
+значение задания с помощью универсальных компонентов</li>
+<li>Метод {@link android.os.AsyncTask#doInBackground doInBackground()} выполняется автоматически
+в рабочем потоке</li>
+<li>Методы {@link android.os.AsyncTask#onPreExecute onPreExecute()}, {@link
+android.os.AsyncTask#onPostExecute onPostExecute()} и {@link
+android.os.AsyncTask#onProgressUpdate onProgressUpdate()} запускаются в потоке пользовательского интерфейса</li>
+<li>Значение, возвращенное методом {@link android.os.AsyncTask#doInBackground doInBackground()}, отправляется в метод
+{@link android.os.AsyncTask#onPostExecute onPostExecute()}</li>
+<li>Можно вызвать {@link android.os.AsyncTask#publishProgress publishProgress()} в любой момент в {@link
+android.os.AsyncTask#doInBackground doInBackground()} для выполнения {@link
+android.os.AsyncTask#onProgressUpdate onProgressUpdate()} в потоке пользовательского интерфейса</li>
+<li>Задание можно отменить в любой момент из любого потока</li>
+</ul>
+
+<p class="caution"><strong>Предупреждение!</strong> Другая проблема, с которой вы можете столкнуться при использовании рабочего
+потока, состоит в непредсказуемом перезапуске действия вследствие <a href="{@docRoot}guide/topics/resources/runtime-changes.html">изменения конфигурации в режиме выполнения</a>,
+(например, когда пользователь изменяет ориентацию экрана), что может разрушить рабочий поток. Чтобы
+увидеть, как можно сохранить задание во время одного из подобных перезапусков и как правильно отменить задание
+при разрушении действия, изучите исходный код примера приложения <a href="http://code.google.com/p/shelves/">Shelves</a>.</p>
+
+
+<h3 id="ThreadSafe">Потокобезопасные методы</h3>
+
+<p> В некоторых ситуациях реализованные методы могут вызываться из нескольких потоков и, следовательно,
+должны быть написаны с сохранением потокобезопасности. </p>
+
+<p>В первую очередь это относится к методам, которые можно вызывать удаленно, например, к методам в <a href="{@docRoot}guide/components/bound-services.html">связанной службе</a>. Когда вызов
+метода реализуется в классе {@link android.os.IBinder}, происходящем из того же процесса, в котором выполняется
+{@link android.os.IBinder IBinder}, метод выполняется в потоке вызывающего метода.
+Однако, когда вызов происходит из другого процесса, метод выполняется в потоке, выбранном из пула
+потоков, которые система поддерживает в том же процессе, что и {@link android.os.IBinder
+IBinder} (он не выполняется в потоке пользовательского интерфейса процесса).  Например, поскольку метод
+{@link android.app.Service#onBind onBind()} службы будет вызываться из потока пользовательского интерфейса
+процесса службы, методы, реализованные в объекте, который возвращает {@link android.app.Service#onBind
+onBind()} (например, подкласс, который реализует методы RPC), будут вызываться из потоков
+в пуле. Так как служба может иметь несколько клиентов, несколько потоков из пула могут одновременно использовать
+один и тот же метод {@link android.os.IBinder IBinder}. Поэтому методы {@link android.os.IBinder
+IBinder} должны быть реализованы с сохранением потокобезопасности.</p>
+
+<p> Аналогичным образом поставщик контента может получать запросы данных, которые происходят из другого процесса.
+Хотя классы {@link android.content.ContentResolver} и {@link android.content.ContentProvider}
+скрывают подробности управления взаимодействием процессов, методы {@link
+android.content.ContentProvider}, которые отвечают на эти запросы, &mdash;методы {@link
+android.content.ContentProvider#query query()}, {@link android.content.ContentProvider#insert
+insert()}, {@link android.content.ContentProvider#delete delete()}, {@link
+android.content.ContentProvider#update update()} и {@link android.content.ContentProvider#getType
+getType()} &mdash;вызываются из пула потоков в процессе поставщика контента, а не в процессе
+потока пользовательского интерфейса.  Поскольку эти методы могут вызываться из любого числа потоков одновременно,
+они также должны быть реализованы с сохранением потокобезопасности. </p>
+
+
+<h2 id="IPC">Взаимодействие процессов</h2>
+
+<p>Система Android предлагает механизм взаимодействия процессов (IPC) с помощью удаленного вызова процедуры
+(RPC), при котором метод вызывается действием или другим компонентом приложения, но выполняется
+удаленно (в другом процессе) с возвратом всех результатов
+вызывающему компоненту. Это влечет разложение вызова метода и его данных до уровня, понятного
+операционной системе, передачу его из локального процесса и адресного пространства удаленному процессу и
+адресному пространству, а затем повторную сборку и восстановление вызова.  После этого возвращенные значения
+передаются в обратном направлении.  Система Android содержит все коды для выполнения этих механизмов IPC,
+так что вы можете сосредоточиться на определении и реализации программного интерфейса RPC. </p>
+
+<p>Для выполнения IPC приложение должно быть привязано к службе с помощью метода {@link
+android.content.Context#bindService bindService()}. Дополнительные сведения представлены в разделе <a href="{@docRoot}guide/components/services.html">Службы</a> руководства для разработчиков.</p>
+
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For information about how to perform work in the background for an indefinite period of time
+(without a user interface), continue with the <b><a
+href="{@docRoot}guide/components/services.html">Services</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/ru/guide/components/recents.jd b/docs/html-intl/intl/ru/guide/components/recents.jd
new file mode 100644
index 0000000..3720631
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/components/recents.jd
@@ -0,0 +1,256 @@
+page.title=Экран обзора
+page.tags="recents","overview"
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>Содержание документа</h2>
+  <ol>
+    <li><a href="#adding">Добавление задач на экран обзора</a>
+      <ol>
+        <li><a href="#flag-new-doc">Использование флага Intent для добавления задачи</a></li>
+        <li><a href="#attr-doclaunch">Использование атрибута Операция для добавления задачи</a></li>
+      </ol>
+    </li>
+    <li><a href="#removing">Удаление задач</a>
+      <ol>
+        <li><a href="#apptask-remove">Использование класса AppTask для удаления задач</a></li>
+        <li><a href="#retain-finished">Сохранение завершенных задач</a></li>
+      </ol>
+    </li>
+  </ol>
+
+  <h2>Ключевые классы</h2>
+  <ol>
+    <li>{@link android.app.ActivityManager.AppTask}</li>
+    <li>{@link android.content.Intent}</li>
+  </ol>
+
+  <h2>Пример кода</h2>
+  <ol>
+    <li><a href="{@docRoot}samples/DocumentCentricApps/index.html">Приложения для работы с документами</a></li>
+  </ol>
+
+</div>
+</div>
+
+<p>Экран обзора (также используются названия: экран последних задач, список последних задач или последние приложения)
+является элементом пользовательского интерфейса системного уровня, в котором содержится список последних <a href="{@docRoot}guide/components/activities.html">
+операций</a> и <a href="{@docRoot}guide/components/tasks-and-back-stack.html">задач</a>. Пользователь
+может перемещаться по списку и выбирать задачи для возобновления, или жестом удалять задачи
+из списка. В версии Android 5.0 (уровень API 21) несколько экземпляров
+одной операции, содержащие различные документы, могут отображаться в виде задач на экране обзора. Например,
+Google Диск может иметь задачу для каждого из нескольких документов Google. На экране обзора каждый документ
+отображается в виде задачи.</p>
+
+<img src="{@docRoot}images/components/recents.png" alt="" width="284" />
+<p class="img-caption"><strong>Рисунок 1.</strong> Экран обзора, на котором показаны три документа Google Диск,
+ представленные в виде отдельных задач.</p>
+
+<p>Обычно следует разрешить системе определить способ представления ваших задач и
+операций на экране обзора. Вам не нужно менять это поведение.
+Однако приложение может определять способ и время появления операции на экране обзора. С помощью класса
+{@link android.app.ActivityManager.AppTask} можно управлять задачами, а с помощью флагов операции класса
+{@link android.content.Intent} указывается, когда операция добавляется на экран обзора
+или удаляется с него. Кроме того, атрибуты <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
+&lt;activity&gt;</a></code> позволяют устанавливать поведение в манифесте.</p>
+
+<h2 id="adding">Добавление задач на экран обзора</h2>
+
+<p>Использование флагов класса {@link android.content.Intent} для добавления задачи обеспечивает лучшее управление
+временем и способом открытия или повторного открытия документа на экране обзора. С помощью атрибутов
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+можно выбрать открытие документа в новой задаче или повторное использование
+существующей задачи для документа.</p>
+
+<h3 id="flag-new-doc">Использование флага Intent для добавления задачи</h3>
+
+<p>При создании нового документа для операции вы вызываете метод
+{@link android.app.ActivityManager.AppTask#startActivity(android.content.Context, android.content.Intent, android.os.Bundle) startActivity()}
+класса {@link android.app.ActivityManager.AppTask}, передавая ему intent,
+который запускает операцию. Для вставки логического разрыва, чтобы система обрабатывала вашу операцию как новую
+задачу на экране обзора, передайте флаг {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+в метод {@link android.content.Intent#addFlags(int) addFlags()} {@link android.content.Intent},
+который запускает операцию.</p>
+
+<p class="note"><strong>Примечание.</strong> Флаг {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+замещает флаг {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET},
+который является устаревшим для систем Android 5.0 и выше (уровень API 21).</p>
+
+<p>Если вы установили флаг {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} при создании
+нового документа, система всегда создает новую задачу с целевой операцией в качестве корня.
+Этот параметр позволяет открывать один документ в нескольких задачах. Следующий код показывает,
+как это делает основная операция:</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+DocumentCentricActivity.java</a></p>
+<pre>
+public void createNewDocument(View view) {
+      final Intent newDocumentIntent = newDocumentIntent();
+      if (useMultipleTasks) {
+          newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
+      }
+      startActivity(newDocumentIntent);
+  }
+
+  private Intent newDocumentIntent() {
+      boolean useMultipleTasks = mCheckbox.isChecked();
+      final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
+      newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
+      newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());
+      return newDocumentIntent;
+  }
+
+  private static int incrementAndGet() {
+      Log.d(TAG, "incrementAndGet(): " + mDocumentCounter);
+      return mDocumentCounter++;
+  }
+}
+</pre>
+
+<p class="note"><strong>Примечание.</strong> Операции, запущенные с флагом {@code FLAG_ACTIVITY_NEW_DOCUMENT},
+должны иметь значение атрибута {@code android:launchMode="standard"} (по умолчанию), установленное
+в манифесте.</p>
+
+<p>Когда основная операция запускает новую операцию, система ищет в существующих задачах одну,
+значение intent которой соответствует имени компонента и данным Intent для операции. Если задача
+не найдена или intent содержит флаг {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK},
+создается новая задача с операцией в качестве корня. Если задача найдена, система выводит
+ эту задачу на передний план и передает новое значение intent в {@link android.app.Activity#onNewIntent onNewIntent()}.
+Новая операция получает intent и создает новый документ на экране обзора, как
+в следующем примере:</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+NewDocumentActivity.java</a></p>
+<pre>
+&#64;Override
+protected void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_new_document);
+    mDocumentCount = getIntent()
+            .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0);
+    mDocumentCounterTextView = (TextView) findViewById(
+            R.id.hello_new_document_text_view);
+    setDocumentCounterText(R.string.hello_new_document_counter);
+}
+
+&#64;Override
+protected void onNewIntent(Intent intent) {
+    super.onNewIntent(intent);
+    /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this activity
+    is reused to create a new document.
+     */
+    setDocumentCounterText(R.string.reusing_document_counter);
+}
+</pre>
+
+
+<h3 id="#attr-doclaunch">Использование атрибута Операция для добавления задачи</h3>
+
+<p>В манифесте операции можно также указать, что операция всегда запускается в новой задаче. Для этого используется атрибут
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+, <a href="{@docRoot}guide/topics/manifest/activity-element.html#dlmode">
+{@code android:documentLaunchMode}</a>. Этот атрибут имеет четыре значения, которые работают следующим образом,
+когда пользователь открывает документ в приложении:</p>
+
+<dl>
+  <dt>"{@code intoExisting}"</dt>
+  <dd>Операция повторно использует существующую задачу для документа. Это равносильно установке
+флага {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} <em>без</em> установки
+флага {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}, как описано в разделе
+<a href="#flag-new-doc">Использование флага Intent для добавления задачи</a> выше.</dd>
+
+  <dt>"{@code always}"</dt>
+  <dd>Операция создает новую задачу для документа, даже если документ уже открыт. Использование
+этого значения равносильно установке обоих флагов {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+и {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}.</dd>
+
+  <dt>"{@code none”}"</dt>
+  <dd>Операция не создает новой задачи для документа. Экран обзора обрабатывает
+операцию как операцию по умолчанию: на экране обзора отображается одна задача для приложения, которая
+возобновляется с любой последней операции, вызванной пользователем.</dd>
+
+  <dt>"{@code never}"</dt>
+  <dd>Операция не создает новой задачи для документа. Установка этого значения
+переопределяет поведение флагов {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+ и {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}, если оба они установлены в
+intent, и на экране обзора отображается одна задача для приложения, которая
+возобновляется с любой последней операции, вызванной пользователем.</dd>
+</dl>
+
+<p class="note"><strong>Примечание.</strong> Для значений кроме {@code none} и {@code never}
+операция должна быть определена с атрибутом {@code launchMode="standard"}. Если этот атрибут не указан,
+используется {@code documentLaunchMode="none"}.</p>
+
+<h2 id="removing">Удаление задач</h2>
+
+<p>По умолчанию задача документа автоматически удаляется с экрана обзора после завершения
+соответствующей операции. Можно переопределить это поведение с помощью класса {@link android.app.ActivityManager.AppTask},
+с флагом {@link android.content.Intent} или атрибутом <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
+&lt;activity&gt;</a></code>.</p>
+
+<p>Можно в любой момент полностью убрать задачу с экрана обзора, установив для атрибута
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+ <a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">
+{@code android:excludeFromRecents}</a> значение {@code true}.</p>
+
+<p>Можно установить максимальное число задач, которое ваше приложение может включить в экран обзора, установив для атрибута
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+ <a href="{@docRoot}guide/topics/manifest/activity-element.html#maxrecents">{@code android:maxRecents}
+</a> целое значение. Значение по умолчанию: 16. При достижении максимального количества задач самая
+долго не используемая задача удаляется с экрана обзора. Максимальное значение {@code android:maxRecents} составляет
+50 (25 для устройств с малым объемом памяти); Значения менее 1 не допускаются.</p>
+
+<h3 id="#apptask-remove">Использование класса AppTask для удаления задач</h3>
+
+<p>В операции, которая создает новую задачу на экране обзора,
+можно указать время удаления задачи и завершения всех связанных с ней операций, вызвав
+метод {@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()}.</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+NewDocumentActivity.java</a></p>
+<pre>
+public void onRemoveFromRecents(View view) {
+    // The document is no longer needed; remove its task.
+    finishAndRemoveTask();
+}
+</pre>
+
+<p class="note"><strong>Примечание.</strong> Использование
+метода {@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()},
+который переопределяет использование тега {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS},
+рассмотрен ниже.</p>
+
+<h3 id="#retain-finished">Сохранение завершенных задач</h3>
+
+<p>Чтобы сохранить задачу на экране обзора, даже если ее операция завершена, передайте
+флаг {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} в метод
+{@link android.content.Intent#addFlags(int) addFlags()} объекта Intent, который запускает операцию.</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+DocumentCentricActivity.java</a></p>
+<pre>
+private Intent newDocumentIntent() {
+    final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
+    newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
+      android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS);
+    newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());
+    return newDocumentIntent;
+}
+</pre>
+
+<p>Для достижения того же результата установите для атрибута
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+ <a href="{@docRoot}guide/topics/manifest/activity-element.html#autoremrecents">
+{@code android:autoRemoveFromRecents}</a> значение {@code false}. Значение по умолчанию {@code true}
+для операций документа и {@code false} для обычных операций. Использование этого атрибута переопределяет
+флаг {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS}, описанный выше.</p>
+
+
+
+
+
+
+
diff --git a/docs/html-intl/intl/ru/guide/components/services.jd b/docs/html-intl/intl/ru/guide/components/services.jd
new file mode 100644
index 0000000..62a6a7e
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/components/services.jd
@@ -0,0 +1,813 @@
+page.title=Службы
+@jd:body
+
+<div id="qv-wrapper">
+<ol id="qv">
+<h2>Содержание документа</h2>
+<ol>
+<li><a href="#Basics">Основы</a></li>
+<ol>
+  <li><a href="#Declaring">Объявление службы в манифесте</a></li>
+</ol>
+<li><a href="#CreatingAService">Создание запущенной службы</a>
+  <ol>
+    <li><a href="#ExtendingIntentService">Наследование класса IntentService</a></li>
+    <li><a href="#ExtendingService">Наследование класса Service</a></li>
+    <li><a href="#StartingAService">Запуск службы</a></li>
+    <li><a href="#Stopping">Остановка службы</a></li>
+  </ol>
+</li>
+<li><a href="#CreatingBoundService">Создание привязанной службы</a></li>
+<li><a href="#Notifications">Отправка уведомлений пользователю</a></li>
+<li><a href="#Foreground">Запуск службы на переднем плане</a></li>
+<li><a href="#Lifecycle">Управление жизненным циклом службы</a>
+<ol>
+  <li><a href="#LifecycleCallbacks">Реализация обратных вызовов жизненного цикла</a></li>
+</ol>
+</li>
+</ol>
+
+<h2>Ключевые классы</h2>
+<ol>
+  <li>{@link android.app.Service}</li>
+  <li>{@link android.app.IntentService}</li>
+</ol>
+
+<h2>Примеры</h2>
+<ol>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.html">{@code
+      ServiceStartArguments}</a></li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+      LocalService}</a></li>
+</ol>
+
+<h2>См. также:</h2>
+<ol>
+<li><a href="{@docRoot}guide/components/bound-services.html">Привязанные службы</a></li>
+</ol>
+
+</div>
+
+
+<p>{@link android.app.Service} является компонентом приложения, который может выполнять
+длительные операции в фоновом режиме и не содержит пользовательского интерфейса. Другой компонент
+приложения может запустить службу, которая продолжит работу в фоновом режиме даже в том случае, когда пользователь
+перейдет в другое приложение. Кроме того, компонент может привязаться к службе для
+взаимодействия с ней и даже выполнять межпроцессное взаимодействие (IPC). Например, служба может
+обрабатывать сетевые транзакции, воспроизводить музыку, выполнять ввод-вывод файла или взаимодействовать с поставщиком контента, и все
+это в фоновом режиме.</p>
+
+<p>Фактически служба может принимать две формы:</p>
+
+<dl>
+  <dt>Запущенная</dt>
+  <dd>Служба является «запущенной», когда компонент приложения (например, операция) запускает ее
+вызовом {@link android.content.Context#startService startService()}. После запуска служба
+может работать в фоновом режиме в течение неограниченного времени, даже если уничтожен компонент, который ее запустил. Обычно
+запущенная служба выполняет одну операцию и не возвращает результатов вызывающему компоненту.
+Например, она может загружать или выгружать файл по сети. Когда операция выполнена,
+служба должна остановиться самостоятельно.</dd>
+  <dt>Привязанная</dt>
+  <dd>Служба является «привязанной», когда компонент приложения привязывается к ней вызовом {@link
+android.content.Context#bindService bindService()}. Привязанная служба предлагает интерфейс клиент-сервер,
+который позволяет компонентам взаимодействовать со службой, отправлять запросы, получать результаты и даже
+делать это между разными процессами посредством межпроцессного взаимодействия (IPC). Привязанная служба работает только пока
+к ней привязан другой компонент приложения. К службе могут быть привязаны несколько компонентов одновременно,
+но когда все они отменяют привязку, служба уничтожается.</dd>
+</dl>
+
+<p>Хотя в этой документации эти два типа служб обсуждаются отдельно, служба может
+работать обеими способами — она может быть запущенной (и работать в течение неограниченного времени) и допускать привязку.
+Это зависит от реализации пары методов обратного вызова: {@link
+android.app.Service#onStartCommand onStartCommand()} позволяет компонентам запускать службу, а {@link
+android.app.Service#onBind onBind()} позволяет выполнять привязку.</p>
+
+<p>Независимо от состояния приложения (запущенное, привязанное или и оба сразу) любой компонент приложения
+может использовать службу (даже из отдельного приложения) подобно тому, как любой компонент может использовать
+операцию — запустив ее с помощью {@link android.content.Intent}. Однако вы можете объявить закрытую
+службу в файле манифеста и заблокировать доступ к ней из других приложений. Более подробно
+это обсуждается в разделе <a href="#Declaring">Объявление службы
+в манифесте</a>.</p>
+
+<p class="caution"><strong>Внимание!</strong> Служба работает
+в основном потоке ведущего процесса — служба <strong>не</strong> создает своего потока
+и <strong>не</strong> выполняется в отдельном процессе (если вы не указали иное). Это означает,
+что если ваша служба собирается выполнять любую работу с высокой нагрузкой ЦП или блокирующие операции (например, воспроизведение MP3
+или сетевые операции), вы должны создать в службе новый поток для выполнения этой работы. Используя
+отдельный поток, вы снижаете риск возникновения ошибок «Приложение не отвечает», и
+основной поток приложения может отрабатывать взаимодействие пользователя с вашими операциями.</p>
+
+
+<h2 id="Basics">Основы</h2>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>Что лучше использовать — службу или поток?</h3>
+  <p>Служба — это просто компонент, который может выполняться в фоновом режиме, даже когда пользователь
+не взаимодействует с приложением. Следовательно, вы должны создавать службу только в том случае, если вам нужно
+именно это.</p>
+  <p>Если вам требуется выполнить работу за пределами основного потока, но только в то время, когда пользователь взаимодействует
+с приложением, то вам, вероятно, следует создать новый поток, а не службу. Например,
+если вы хотите воспроизводить определенную музыку, но только во время работы операции, вы можете создать
+поток в {@link android.app.Activity#onCreate onCreate()}, запустить его выполнение в методе {@link
+android.app.Activity#onStart onStart()}, а затем остановить его в методе {@link android.app.Activity#onStop
+onStop()}. Также рассмотрите возможность использования класса {@link android.os.AsyncTask} или {@link android.os.HandlerThread}
+вместо обычного класса {@link java.lang.Thread}. В документе <a href="{@docRoot}guide/components/processes-and-threads.html#Threads">Процессы
+и потоки</a> содержится дополнительная информация об этих потоках.</p>
+  <p>Помните, что если вы действительно используете службу, она выполняется в основном потоке вашего приложения по умолчанию,
+поэтому вы должны создать новый поток в службе, если она выполняет интенсивные или
+блокирующие операции.</p>
+</div>
+</div>
+
+<p>Чтобы создать службу, необходимо создать подкласс класса {@link android.app.Service} (или одного
+из существующих его подклассов). В вашей реализации необходимо переопределить некоторые методы обратного вызова,
+которые обрабатывают ключевые моменты жизненного цикла службы и при необходимости
+предоставляют механизм привязывания компонентов. Наиболее важные методы обратного вызова, которые необходимо переопределить:</p>
+
+<dl>
+  <dt>{@link android.app.Service#onStartCommand onStartCommand()}</dt>
+    <dd>Система вызывает этот метод, когда другой компонент, например, операция,
+запрашивает запуск этой службы, вызывая {@link android.content.Context#startService
+startService()}. После выполнения этого метода служба запускается и может в течение неограниченного времени
+работать в фоновом режиме. Если вы реализуете такой метод, вы обязаны остановить службу
+посредством вызова {@link android.app.Service#stopSelf stopSelf()} или {@link
+android.content.Context#stopService stopService()}. (Если требуется только обеспечить привязку,
+реализовывать этот метод не обязательно).</dd>
+  <dt>{@link android.app.Service#onBind onBind()}</dt>
+    <dd>Система вызывает этот метод, когда другой компонент хочет выполнить привязку
+к службе (например, для выполнения удаленного вызова процедуры) путем вызова {@link android.content.Context#bindService
+bindService()}. В вашей реализации этого метода вы должны обеспечить интерфейс, который клиенты
+используют для взаимодействия со службой, возвращая {@link android.os.IBinder}. Всегда необходимо реализовывать
+этот метод, но если вы не хотите разрешать привязку, необходимо возвращать значение null.</dd>
+  <dt>{@link android.app.Service#onCreate()}</dt>
+    <dd>Система вызывает этот метод при первом создании службы для выполнения однократных
+процедур настройки (перед вызовом {@link android.app.Service#onStartCommand onStartCommand()} или
+{@link android.app.Service#onBind onBind()}). Если служба уже запущена, этот метод не
+вызывается.</dd>
+  <dt>{@link android.app.Service#onDestroy()}</dt>
+    <dd>Система вызывает этот метод, когда служба более не используется и выполняется ее уничтожение.
+Ваша служба должна реализовать это для очистки ресурсов, таких как потоки, зарегистрированные
+приемники, ресиверы и т. д. Это последний вызов, который получает служба.</dd>
+</dl>
+
+<p>Если компонент запускает службу посредством вызова {@link
+android.content.Context#startService startService()} (что приводит к вызову {@link
+android.app.Service#onStartCommand onStartCommand()}), то служба
+продолжает работу, пока она не остановится самостоятельно с помощью {@link android.app.Service#stopSelf()} или другой
+компонент не остановит ее посредством вызова {@link android.content.Context#stopService stopService()}.</p>
+
+<p>Если компонент вызывает
+{@link android.content.Context#bindService bindService()} для создания службы (и {@link
+android.app.Service#onStartCommand onStartCommand()} <em>не</em> вызывается), то служба работает, пока
+к ней привязан компонент. Как только выполняется отмена привязки службы ко всем клиентам,
+система уничтожает службу.</p>
+
+<p>Система Android будет принудительно останавливать службу только в том случае, когда не хватает памяти, и необходимо восстановить системные
+для операции, которая отображается на переднем плане. Если служба привязана к операции, которая отображается на переднем плане,
+менее вероятно, что она будет уничтожена, и если служба объявлена для <a href="#Foreground">выполнения в фоновом режиме</a> (как обсуждалось выше), она почти никогда не будет уничтожаться.
+В противном случае, если служба была запущена и является длительной, система со временем будет опускать ее положение в списке
+фоновых задач, и служба станет очень чувствительной к
+уничтожению — если ваша служба запущена, вы должны предусмотреть изящную обработку ее перезапуска
+системой. Если система уничтожает вашу службу, она перезапускает ее, как только снова появляется
+доступ к ресурсам (хотя это также зависит от значения, возвращаемого методом {@link
+android.app.Service#onStartCommand onStartCommand()}, как обсуждается ниже). Дополнительная информация
+о ситуациях, в которых система может уничтожить службу приведена в документе <a href="{@docRoot}guide/components/processes-and-threads.html">Процессы и потоки</a>
+.</p>
+
+<p>В следующих разделах описаны способы создания служб каждого типа и использования
+их из других компонентов приложения.</p>
+
+
+
+<h3 id="Declaring">Объявление службы в манифесте</h3>
+
+<p>Все службы, как и операции (и другие компоненты), должны быть объявлены в файле
+манифеста вашего приложения.</p>
+
+<p>Чтобы объявить службу, добавьте элемент <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a>
+, в качестве дочернегоэлемента <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>
+. Например:</p>
+
+<pre>
+&lt;manifest ... &gt;
+  ...
+  &lt;application ... &gt;
+      &lt;service android:name=".ExampleService" /&gt;
+      ...
+  &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+
+<p>Дополнительные сведения об объявлении службы
+в манифесте см. в справке по элементу <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a>.</p>
+
+<p>Имеются другие атрибуты, которые можно включить в элемент <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> для
+задания свойств, например, необходимых для запуска разрешений, и процесса,
+в котором должна выполняться служба. Атрибут <a href="{@docRoot}guide/topics/manifest/service-element.html#nm">{@code android:name}</a>
+является единственным обязательным атрибутом — он указывает имя класса для службы. После
+публикации вашего приложения вам не следует менять это имя, поскольку это может разрушить
+код из-за зависимости от явных намерений, используемых, чтобы запустить или привязать службу (ознакомьтесь с публикацией <a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">Вещи, которые
+нельзя менять</a> в блоге разработчиков).
+
+<p>Для обеспечения безопасности приложения <strong>всегда используйте явное намерение при запуске
+или привязке {@link android.app.Service}</strong> и не объявляйте фильтров намерений для службы. Если вам
+важно допустить некоторую неопределенность в отношении того, какая служба запускается, вы можете
+предоставить фильтры намерений для ваших служб и исключить имя компонента из {@link
+android.content.Intent}, но затем вы должны установить пакет для намерения с помощью {@link
+android.content.Intent#setPackage setPackage()}, который обеспечивает достаточное устранение неоднозначности
+для целевой службы.</p>
+
+<p>Дополнительно можно обеспечить доступность вашей службы только для вашего приложения,
+включив атрибут <a href="{@docRoot}guide/topics/manifest/service-element.html#exported">{@code android:exported}</a>
+и установив для него значение {@code "false"}. Это не позволяет другим приложениям запускать
+вашу службу даже при использовании явного намерения.</p>
+
+
+
+
+<h2 id="CreatingStartedService">Создание запущенной службы</h2>
+
+<p>Запущенная служба — это служба, которую запускает другой компонент вызовом {@link
+android.content.Context#startService startService()}, что приводит к вызову
+метода {@link android.app.Service#onStartCommand onStartCommand()} службы.</p>
+
+<p>При запуске служба обладает сроком жизни, не зависящим от запустившего ее компонента,
+и может работать в фоновом режиме в течение неограниченного времени,
+даже если уничтожен компонент, который ее запустил. Поэтому после выполнения своей работы служба должна остановиться самостоятельно
+посредством вызова метода {@link android.app.Service#stopSelf stopSelf()}, либо ее может остановить другой компонент
+посредством вызова метода{@link android.content.Context#stopService stopService()}.</p>
+
+<p>Компонент приложения, например, операция, может запустить службу, вызвав метод {@link
+android.content.Context#startService startService()} и передав объект {@link android.content.Intent},
+который указывает службу и любые данные, которые служба должна использовать. Служба получает
+этот объект {@link android.content.Intent} в методе {@link android.app.Service#onStartCommand
+onStartCommand()}.</p>
+
+<p>Предположим, что операции требуется сохранить некоторые данные в сетевой базе данных. Операция может
+запустить службу и предоставить ей данные для сохранения, передав намерение в метод {@link
+android.content.Context#startService startService()}. Служба получает намерение в методе {@link
+android.app.Service#onStartCommand onStartCommand()}, подключается к Интернету и выполняет транзакцию
+с базой данных. Когда транзакция выполнена, служба останавливается
+самостоятельно и уничтожается.</p>
+
+<p class="caution"><strong>Внимание!</strong> По умолчанию службы работают в том же процессе, что и приложение,
+в котором они объявлены, а также в основном потоке этого приложения. Поэтому, если ваша служба
+выполняет интенсивные или блокирующие операции, в то время как пользователь взаимодействует с операцией из того же
+приложения, служба будет замедлять выполнение операции. Чтобы избежать негативного воздействия на скорость работы
+приложения, вы должны запустить новый поток внутри службы.</p>
+
+<p>Традиционно имеется два класса, которые вы можете наследовать для создания запущенной службы:</p>
+<dl>
+  <dt>{@link android.app.Service}</dt>
+  <dd>Это базовый класс для всех служб. Когда вы наследуете этот класс, важно
+создать новый поток, в котором будет выполняться вся работа службы, поскольку по умолчанию служба использует основной поток вашего
+приложения, что может замедлить любую операцию, которую
+выполняет ваше приложение.</dd>
+  <dt>{@link android.app.IntentService}</dt>
+  <dd>Это подкласс класса {@link android.app.Service}, который использует рабочий поток для обработки всех
+запросов запуска поочередно. Это оптимальный вариант, если вам не требуется, чтобы ваша служба
+обрабатывала несколько запросов одновременно. Достаточно реализовать метод {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}, который получает намерение для каждого
+запроса запуска, позволяя выполнять фоновую работу.</dd>
+</dl>
+
+<p>В следующих разделах описано, как реализовать службу с помощью любого их этих
+классов.</p>
+
+
+<h3 id="ExtendingIntentService">Наследование класса IntentService</h3>
+
+<p>Так как большинству запущенных приложений не требуется обрабатывать несколько запросов одновременно,
+(что может быть действительно опасным сценарием), вероятно будет лучше, если вы
+реализуете свою службу с помощью класса {@link android.app.IntentService}.</p>
+
+<p>Класс {@link android.app.IntentService} делает следующее:</p>
+
+<ul>
+  <li>Создает рабочий поток по умолчанию, который выполняет все намерения, доставленные в метод {@link
+android.app.Service#onStartCommand onStartCommand()}, отдельно от основного потока
+вашего приложения.</li>
+  <li>Создает рабочую очередь, которая передает намерения по одному в вашу реализацию метода {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}, поэтому вы не должны беспокоиться
+относительно многопоточности.</li>
+  <li>Останавливает службу после обработки всех запросов запуска, поэтому вам никогда не требуется вызывать 
+{@link android.app.Service#stopSelf}.</li>
+  <li>Предоставляет реализацию метода {@link android.app.IntentService#onBind onBind()} по умолчанию, которая
+возвращает null.</li>
+  <li>Предоставляет реализацию метода {@link android.app.IntentService#onStartCommand
+onStartCommand()} по умолчанию, которая отправляет намерение в рабочую очередь и затем в вашу реализацию {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}.</li>
+</ul>
+
+<p>Все это означает, что вам достаточно реализовать метод {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} для выполнения работы, предоставленной
+клиентом. (Хотя, кроме того, вы должны предоставить маленький конструктор для службы).</p>
+
+<p>Здесь приведен пример реализации класса {@link android.app.IntentService}:</p>
+
+<pre>
+public class HelloIntentService extends IntentService {
+
+  /**
+   * A constructor is required, and must call the super {@link android.app.IntentService#IntentService}
+   * constructor with a name for the worker thread.
+   */
+  public HelloIntentService() {
+      super("HelloIntentService");
+  }
+
+  /**
+   * The IntentService calls this method from the default worker thread with
+   * the intent that started the service. When this method returns, IntentService
+   * stops the service, as appropriate.
+   */
+  &#64;Override
+  protected void onHandleIntent(Intent intent) {
+      // Normally we would do some work here, like download a file.
+      // For our sample, we just sleep for 5 seconds.
+      long endTime = System.currentTimeMillis() + 5*1000;
+      while (System.currentTimeMillis() &lt; endTime) {
+          synchronized (this) {
+              try {
+                  wait(endTime - System.currentTimeMillis());
+              } catch (Exception e) {
+              }
+          }
+      }
+  }
+}
+</pre>
+
+<p>Это все, что нужно: конструктор и реализация класса {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}.</p>
+
+<p>Если вы решили переопределить также и другие методы обратного вызова, такие как {@link
+android.app.IntentService#onCreate onCreate()}, {@link
+android.app.IntentService#onStartCommand onStartCommand()} или {@link
+android.app.IntentService#onDestroy onDestroy()}, обязательно вызовите реализацию суперкласса,
+чтобы класс {@link android.app.IntentService} мог правильно обрабатывать жизненный цикл рабочего потока.</p>
+
+<p>Например, метод {@link android.app.IntentService#onStartCommand onStartCommand()} должен возвращать
+реализацию по умолчанию (которая доставляет намерение в {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}):</p>
+
+<pre>
+&#64;Override
+public int onStartCommand(Intent intent, int flags, int startId) {
+    Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
+    return super.onStartCommand(intent,flags,startId);
+}
+</pre>
+
+<p>Помимо {@link android.app.IntentService#onHandleIntent onHandleIntent()}, единственный метод,
+из которого вам не требуется вызывать суперкласс, это метод {@link android.app.IntentService#onBind
+onBind()} (но его нужно реализовывать только в случае, если ваша служба допускает привязку).</p>
+
+<p>В следующем разделе вы увидите, как реализовывается служба такого же типа при наследовании
+базового класса {@link android.app.Service}, которая содержит намного больше кода, но которая может
+подойти, если вам требуется обрабатывать одновременные запросы запуска.</p>
+
+
+<h3 id="ExtendingService">Наследование класса Service</h3>
+
+<p>Как вы видели в предыдущем разделе, использование класса {@link android.app.IntentService} значительно упрощает
+реализацию запущенной службы. Однако, если необходимо, чтобы ваша служба
+поддерживала многопоточность (вместо обработки запросов запуска через рабочую очередь), можно
+наследовать класс {@link android.app.Service} для обработки каждого намерения.</p>
+
+<p>В качестве примера приведена следующая реализация класса {@link
+android.app.Service}, которая выполняет ту же работу, как и пример выше, использующий класс {@link
+android.app.IntentService}. То есть для каждого запроса запуска он использует рабочий поток для выполнения
+задания и обрабатывает запросы по одному.</p>
+
+<pre>
+public class HelloService extends Service {
+  private Looper mServiceLooper;
+  private ServiceHandler mServiceHandler;
+
+  // Handler that receives messages from the thread
+  private final class ServiceHandler extends Handler {
+      public ServiceHandler(Looper looper) {
+          super(looper);
+      }
+      &#64;Override
+      public void handleMessage(Message msg) {
+          // Normally we would do some work here, like download a file.
+          // For our sample, we just sleep for 5 seconds.
+          long endTime = System.currentTimeMillis() + 5*1000;
+          while (System.currentTimeMillis() &lt; endTime) {
+              synchronized (this) {
+                  try {
+                      wait(endTime - System.currentTimeMillis());
+                  } catch (Exception e) {
+                  }
+              }
+          }
+          // Stop the service using the startId, so that we don't stop
+          // the service in the middle of handling another job
+          stopSelf(msg.arg1);
+      }
+  }
+
+  &#64;Override
+  public void onCreate() {
+    // Start up the thread running the service.  Note that we create a
+    // separate thread because the service normally runs in the process's
+    // main thread, which we don't want to block.  We also make it
+    // background priority so CPU-intensive work will not disrupt our UI.
+    HandlerThread thread = new HandlerThread("ServiceStartArguments",
+            Process.THREAD_PRIORITY_BACKGROUND);
+    thread.start();
+
+    // Get the HandlerThread's Looper and use it for our Handler
+    mServiceLooper = thread.getLooper();
+    mServiceHandler = new ServiceHandler(mServiceLooper);
+  }
+
+  &#64;Override
+  public int onStartCommand(Intent intent, int flags, int startId) {
+      Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
+
+      // For each start request, send a message to start a job and deliver the
+      // start ID so we know which request we're stopping when we finish the job
+      Message msg = mServiceHandler.obtainMessage();
+      msg.arg1 = startId;
+      mServiceHandler.sendMessage(msg);
+
+      // If we get killed, after returning from here, restart
+      return START_STICKY;
+  }
+
+  &#64;Override
+  public IBinder onBind(Intent intent) {
+      // We don't provide binding, so return null
+      return null;
+  }
+
+  &#64;Override
+  public void onDestroy() {
+    Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();
+  }
+}
+</pre>
+
+<p>Как можно видеть, этот код значительно длиннее, чем код с использованием класса {@link android.app.IntentService}.</p>
+
+<p>Однако, так как вы обрабатываете каждый вызов {@link android.app.Service#onStartCommand
+onStartCommand()} самостоятельно, вы можете выполнять несколько запросов одновременно. Данный код
+выполняет не совсем эту работу, но при необходимости вы можете создавать новые потоки для каждого
+запроса и сразу запускать их (а не ожидать завершения предыдущего запроса).</p>
+
+<p>Обратите внимание, что метод {@link android.app.Service#onStartCommand onStartCommand()} должен
+возвращать целое число. Это целое число описывает, как система должна продолжать выполнение службы в случае,
+когда система уничтожила ее (как описано выше, реализация по умолчанию для класса {@link
+android.app.IntentService} обрабатывает эту ситуацию, хотя вы изменить ход реализации). Значение,
+возвращаемое методом {@link android.app.Service#onStartCommand onStartCommand()}, должно быть одной из следующих
+констант:</p>
+
+<dl>
+  <dt>{@link android.app.Service#START_NOT_STICKY}</dt>
+    <dd>Если система уничтожает службу после возвращения из {@link android.app.Service#onStartCommand
+onStartCommand()}, <em>не нужно</em> повторно создавать службу, если нет ожидающих
+доставки намерений. Это самый безопасный вариант, позволяющий избежать запуска вашей службы, когда это не нужно
+и когда ваше приложение может просто перезапустить любые незавершенные задания.</dd>
+  <dt>{@link android.app.Service#START_STICKY}</dt>
+    <dd>Если система уничтожает службу после возвращения из {@link android.app.Service#onStartCommand
+onStartCommand()}, повторно создайте службу и вызовите {@link
+android.app.Service#onStartCommand onStartCommand()}, но <em>не</em> передавайте последнее намерение повторно.
+Вместо этого система вызывает метод {@link android.app.Service#onStartCommand onStartCommand()} с намерением,
+которое имеет значение null, если нет ожидающих намерений для запуска службы. Если ожидающие намерения есть,
+они доставляются. Это подходит для мультимедийных проигрывателей (или подобных служб), которые не
+выполняют команды, а работают независимо и ожидают задание.</dd>
+  <dt>{@link android.app.Service#START_REDELIVER_INTENT}</dt>
+    <dd>Если система уничтожает службу после возвращения из {@link android.app.Service#onStartCommand
+onStartCommand()}, повторно создайте службу и вызовите {@link
+android.app.Service#onStartCommand onStartCommand()} с последним намерением, которое было доставлено
+в службу. Все ожидающие намерения доставляются по очереди. Это подходит для служб,
+активно выполняющих задание, которое должно быть возобновлено немедленно, например, для загрузок файла.</dd>
+</dl>
+<p>Для получения дополнительных сведений об этих возвращаемых значениях см. справочную документацию по ссылке для каждой
+константы.</p>
+
+
+
+<h3 id="StartingAService">Запуск службы</h3>
+
+<p>Можно запустить службу из операции или другого компонента приложения, передав объект
+{@link android.content.Intent} (указывающий службу, которую требуется запустить) в {@link
+android.content.Context#startService startService()}. Система Android вызывает метод {@link
+android.app.Service#onStartCommand onStartCommand()} службы и передает ей {@link
+android.content.Intent}. (Ни в коем случае не следует вызывать метод {@link android.app.Service#onStartCommand
+onStartCommand()} напрямую).</p>
+
+<p>Например, операция может запустить службу из примера в предыдущем разделе ({@code
+HelloSevice}), используя явное намерение с помощью {@link android.content.Context#startService
+startService()}:</p>
+
+<pre>
+Intent intent = new Intent(this, HelloService.class);
+startService(intent);
+</pre>
+
+<p>Метод {@link android.content.Context#startService startService()} возвращается немедленно, и система
+Android вызывает метод службы {@link android.app.Service#onStartCommand
+onStartCommand()}. Если служба еще не выполняется, система сначала вызывает {@link
+android.app.Service#onCreate onCreate()}, а затем {@link android.app.Service#onStartCommand
+onStartCommand()}.</p>
+
+<p>Если служба также не представляет привязку, намерение, доставляемое с помощью {@link
+android.content.Context#startService startService()}, является единственным режимом связи между
+компонентом приложения и службой. Однако, если вы хотите, чтобы служба оправляла результат обратно,
+клиент, который запускает службу, может создать объект {@link android.app.PendingIntent} для сообщения
+(с помощью {@link android.app.PendingIntent#getBroadcast getBroadcast()}) и доставить его в службу
+в объекте {@link android.content.Intent}, который запускает службу. Затем служба может использовать
+сообщение для доставки результата.</p>
+
+<p>Несколько запросов запуска службы приводят к нескольким соответствующим вызовам метода
+{@link android.app.Service#onStartCommand onStartCommand()} службы. Однако для ее остановки достаточно только одного запроса на остановку
+службы (с помощью {@link android.app.Service#stopSelf stopSelf()} или {@link
+android.content.Context#stopService stopService()}).</p>
+
+
+<h3 id="Stopping">Остановка службы</h3>
+
+<p>Запущенная служба должна управлять своим жизненным циклом. То есть, система не останавливает и не
+уничтожает службу, если не требуется восстановить память системы, и служба
+продолжает работу после возвращения из метода {@link android.app.Service#onStartCommand onStartCommand()}. Поэтому
+служба должна останавливаться самостоятельно посредством вызова метода {@link android.app.Service#stopSelf stopSelf()}, либо другой
+компонент может остановить ее посредством вызова метода {@link android.content.Context#stopService stopService()}.</p>
+
+<p>Получив запрос на остановку посредством {@link android.app.Service#stopSelf stopSelf()} или {@link
+android.content.Context#stopService stopService()}, система как можно скорее уничтожает службу
+.</p>
+
+<p>Однако, если служба обрабатывает несколько запросов {@link
+android.app.Service#onStartCommand onStartCommand()} одновременно, вы не должны останавливать службу
+после завершения обработки запроса запуска, поскольку вы, вероятно, уже получили новый
+запрос запуска (остановка в конце первого запроса привела бы к прерыванию второго). Чтобы избежать
+этой проблемы, вы можете использовать метод {@link android.app.Service#stopSelf(int)}, гарантирующий, что ваш запрос на
+остановку службы всегда основан на самом последнем запросе запуска. То есть, когда вы вызываете {@link
+android.app.Service#stopSelf(int)}, вы передаете идентификатор запроса запуска (идентификатор <code>startId</code>,
+доставленный в {@link android.app.Service#onStartCommand onStartCommand()}), которому соответствует ваш
+запрос остановки. Тогда, если служба получит новый запрос запуска до того, как вы сможете вызвать {@link
+android.app.Service#stopSelf(int)}, идентификатор не будет совпадать и служба не будет остановлена.</p>
+
+<p class="caution"><strong>Внимание!</strong> Ваше приложение обязательно должно останавливать свои службы по окончании работы,
+чтобы избежать расходования ресурсов системы и потребления энергии аккумулятора. При необходимости
+другие компоненты могут остановить службу посредством вызова метода {@link
+android.content.Context#stopService stopService()}. Даже если вы можете выполнять привязку службы,
+следует всегда останавливать службу самостоятельно, если она когда-либо получила вызов {@link
+android.app.Service#onStartCommand onStartCommand()}.</p>
+
+<p>Дополнительные сведения о жизненном цикле службы представлены в разделе <a href="#Lifecycle">Управление жизненным циклом службы</a> ниже.</p>
+
+
+
+<h2 id="CreatingBoundService">Создание привязанной службы</h2>
+
+<p>Привязанная служба — это служба, которая допускает привязку к ней компонентов приложения посредством вызова {@link
+android.content.Context#bindService bindService()} для создания долговременного соединения
+(и обычно не позволяет компонентам <em>запускать</em> ее посредством вызова {@link
+android.content.Context#startService startService()}).</p>
+
+<p>Вы должны создать привязанную службу, когда вы хотите взаимодействовать со службой из операций
+и других компонентов вашего приложения или показывать некоторые функции вашего приложения
+другим приложениям посредством межпроцессного взаимодействия (IPC).</p>
+
+<p>Чтобы создать привязанную службу, необходимо реализовать метод обратного вызова {@link
+android.app.Service#onBind onBind()} для возвращения объекта {@link android.os.IBinder},
+который определяет интерфейс взаимодействия со службой. После этого другие компоненты приложения могут вызвать
+метод {@link android.content.Context#bindService bindService()} для извлечения интерфейса и
+начать вызывать методы службы. Служба существует только для обслуживания привязанного к ней компонента приложения,
+поэтому, когда нет компонентов, привязанных к службе, система уничтожает ее
+(вам <em>не</em> требуется останавливать привязанную службу, как это требуется для службы, запущенной
+посредством {@link android.app.Service#onStartCommand onStartCommand()}).</p>
+
+<p>Чтобы создать привязанную службу, необходимо в первую очередь определить интерфейс, взаимодействия
+клиента со службой. Этот интерфейс между службой
+и клиентом должен быть реализацией объекта {@link android.os.IBinder}, которую ваша служба должна
+возвращать из метода обратного вызова {@link android.app.Service#onBind
+onBind()}. После того, как клиент получает объект {@link android.os.IBinder}, он может начать
+взаимодействие со службой посредством этого интерфейса.</p>
+
+<p>Одновременно к службе могут быть привязаны несколько клиентов. Когда клиент заканчивает взаимодействие
+со службой, он вызывает {@link android.content.Context#unbindService unbindService()} для отмены привязки. Как только
+не остается ни одного клиента, привязанного к службе, система уничтожает службу.</p>
+
+<p>Существует несколько способов реализации привязанной службы, и эти реализации сложнее,
+чем реализации запущенной службы, поэтому обсуждение привязанной службы приведено в отдельном
+документе <a href="{@docRoot}guide/components/bound-services.html">Привязанные службы</a>.</p>
+
+
+
+<h2 id="Notifications">Отправка уведомлений пользователю</h2>
+
+<p>После запуска служба может уведомлять пользователя о событиях, используя <a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">Всплывающие уведомления</a> или <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Уведомления в строке состояния</a>.</p>
+
+<p>Всплывающее уведомление — это сообщение, кратковременно появляющееся на поверхности текущего окна,
+тогда как уведомление в строке состояния — это значок в строке состояния с сообщением,
+который пользователь может выбрать, чтобы выполнить действие (такое как запуск операции).</p>
+
+<p>Обычно уведомление в строке состояния является самым удобным решением, когда завершается какая-то фоновая работа
+(например, завершена
+загрузка файла), и пользователь может действовать. Когда пользователь выбирает уведомление в
+расширенном виде, уведомление может запустить операцию (например, для просмотра загруженного файла).</p>
+
+<p>Дополнительную информацию см. в руководствах для разработчиков <a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">Всплывающие уведомления</a> и<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">
+Уведомления в строке состояния</a>.</p>
+
+
+
+<h2 id="Foreground">Запуск службы на переднем плане</h2>
+
+<p>Служба переднего плана — это служба, о которой пользователь активно
+осведомлен, и поэтому она не является кандидатом для удаления системой в случае нехватки памяти. Служба
+переднего плана должна выводить уведомление в строку состояния, которая находится под заголовком
+«Постоянные». Это означает, что уведомление не может быть удалено, пока служба
+не будет остановлена или удалена с переднего плана.</p>
+
+<p>Например, музыкальный проигрыватель, который воспроизводит музыку из службы, должен быть настроен на работу
+на переднем плане, так как пользователь точно знает о
+его работе. Уведомление в строке состояния может показывать текущее произведение и позволять пользователю
+запускать операцию для взаимодействия с музыкальным проигрывателем.</p>
+
+<p>Для запроса на выполнение вашей службы на переднем плане вызовите метод {@link
+android.app.Service#startForeground startForeground()}. Этот метод имеет два параметра: целое число,
+которое однозначно идентифицирует уведомление и объект {@link
+android.app.Notification} для строки состояния. Например:</p>
+
+<pre>
+Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text),
+        System.currentTimeMillis());
+Intent notificationIntent = new Intent(this, ExampleActivity.class);
+PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
+notification.setLatestEventInfo(this, getText(R.string.notification_title),
+        getText(R.string.notification_message), pendingIntent);
+startForeground(ONGOING_NOTIFICATION_ID, notification);
+</pre>
+
+<p class="caution"><strong>Внимание!</strong> Целочисленный идентификатор ID, который вы передаете в метод {@link
+android.app.Service#startForeground startForeground()}, не должен быть равен 0.</p>
+
+
+<p>Чтобы удалить службу с переднего плана, вызовите {@link
+android.app.Service#stopForeground stopForeground()}. Этот метод содержит логическое значение, указывающее,
+следует ли также удалять уведомление в строке состояния. Этот метод <em>не</em> останавливает
+службу. Однако, если вы останавливаете службу, работающую на переднем плане,
+уведомление также удаляется.</p>
+
+<p>Дополнительную информацию об уведомлениях см. в разделе <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Создание уведомлений
+в строке состояния</a>.</p>
+
+
+
+<h2 id="Lifecycle">Управление жизненным циклом службы</h2>
+
+<p>Жизненный цикл службы намного проще, чем жизненный цикл операции. Однако, намного важнее
+уделить пристальное внимание тому, как ваша служба создается и уничтожается, так как служба
+может работать в фоновом режиме без ведома пользователя.</p>
+
+<p>Жизненный цикл службы от создания до уничтожения может следовать двум 
+разным путям:</p>
+
+<ul>
+<li>Запущенная служба
+  <p>Служба создается, когда другой компонент вызывает метод {@link
+android.content.Context#startService startService()}. Затем служба работает в течение неограниченного времени и должна
+остановиться самостоятельно посредством вызова метода {@link
+android.app.Service#stopSelf() stopSelf()}. Другой компонент также может остановить службу
+посредством вызова метода {@link android.content.Context#stopService
+stopService()}. Когда служба останавливается, система уничтожает ее.</p></li>
+
+<li>Привязанная служба
+  <p>Служба создается, когда другой компонент (клиент) вызывает метод {@link
+android.content.Context#bindService bindService()}. Затем клиент взаимодействует со службой
+через интерфейс {@link android.os.IBinder}. Клиент может закрыть соединение посредством вызова
+метода {@link android.content.Context#unbindService unbindService()}. К одной службе могут быть привязано
+несколько клиентов, и когда все они отменяют привязку, система уничтожает службу. (Служба
+<em>не</em> должна останавливаться самостоятельно.)</p></li>
+</ul>
+
+<p>Эти два способа необязательно работают независимо друг от друга. То есть вы можете привязать службу, которая уже была
+запущена посредством метода {@link android.content.Context#startService startService()}. Например, фоновая
+музыкальная служба может быть запущена посредством вызова метода {@link android.content.Context#startService
+startService()} с объектом {@link android.content.Intent}, который идентифицирует музыку для воспроизведения. Позже,
+например, когда пользователь хочет получить доступ к управлению проигрывателем или информацию о текущем произведении,
+операция может установить привязку к службе посредством вызова метода {@link
+android.content.Context#bindService bindService()}. В подобных случаях методы {@link
+android.content.Context#stopService stopService()} и {@link android.app.Service#stopSelf
+stopSelf()} фактически не останавливают службу, пока не будет отменена привязка всех клиентов. </p>
+
+
+<h3 id="LifecycleCallbacks">Реализация обратных вызовов жизненного цикла</h3>
+
+<p>Подобно операции, служба содержит методы обратного вызова жизненного цикла, которые можно реализовать для контроля
+изменений состояния службы и выполнения работы в соответствующие моменты времени. Указанная ниже базовая
+служба показывает каждый из методов жизненного цикла.</p>
+
+<pre>
+public class ExampleService extends Service {
+    int mStartMode;       // indicates how to behave if the service is killed
+    IBinder mBinder;      // interface for clients that bind
+    boolean mAllowRebind; // indicates whether onRebind should be used
+
+    &#64;Override
+    public void {@link android.app.Service#onCreate onCreate}() {
+        // The service is being created
+    }
+    &#64;Override
+    public int {@link android.app.Service#onStartCommand onStartCommand}(Intent intent, int flags, int startId) {
+        // The service is starting, due to a call to {@link android.content.Context#startService startService()}
+        return <em>mStartMode</em>;
+    }
+    &#64;Override
+    public IBinder {@link android.app.Service#onBind onBind}(Intent intent) {
+        // A client is binding to the service with {@link android.content.Context#bindService bindService()}
+        return <em>mBinder</em>;
+    }
+    &#64;Override
+    public boolean {@link android.app.Service#onUnbind onUnbind}(Intent intent) {
+        // All clients have unbound with {@link android.content.Context#unbindService unbindService()}
+        return <em>mAllowRebind</em>;
+    }
+    &#64;Override
+    public void {@link android.app.Service#onRebind onRebind}(Intent intent) {
+        // A client is binding to the service with {@link android.content.Context#bindService bindService()},
+        // after onUnbind() has already been called
+    }
+    &#64;Override
+    public void {@link android.app.Service#onDestroy onDestroy}() {
+        // The service is no longer used and is being destroyed
+    }
+}
+</pre>
+
+<p class="note"><strong>Примечание.</strong> В отличие от методов обратного вызова жизненного цикла операции, вам
+<em>не</em> требуется вызывать реализацию суперкласса этих методов обратного вызова.</p>
+
+<img src="{@docRoot}images/service_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Рисунок 2.</strong> Жизненный цикл службы. На схеме слева
+показан жизненный цикл, когда служба создана посредством метода {@link android.content.Context#startService
+startService()}, а на схеме справа показан жизненный цикл, когда служба создана
+посредством метода {@link android.content.Context#bindService bindService()}.</p>
+
+<p>С помощью реализации этих методов можно отслеживать два вложенных цикла в жизненном цикле службы: </p>
+
+<ul>
+<li><strong>Весь жизненный цикл</strong> службы происходит между вызовом метода {@link
+android.app.Service#onCreate onCreate()} и возвратом из метода {@link
+android.app.Service#onDestroy}. Подобно операции, служба выполняет начальную настройку в методе
+{@link android.app.Service#onCreate onCreate()} и освобождает все оставшиеся ресурсы в методе {@link
+android.app.Service#onDestroy onDestroy()}.  Например,
+служба воспроизведения музыки может создать поток для воспроизведения музыки в методе {@link
+android.app.Service#onCreate onCreate()}, затем остановить поток в методе {@link
+android.app.Service#onDestroy onDestroy()}.
+
+<p>Методы {@link android.app.Service#onCreate onCreate()} и {@link android.app.Service#onDestroy
+onDestroy()} вызываются для всех служб, независимо от метода создания:
+{@link android.content.Context#startService startService()} или {@link
+android.content.Context#bindService bindService()}.</p></li>
+
+<li><strong>Активный жизненный цикл</strong> службы начинается с вызова метода {@link
+android.app.Service#onStartCommand onStartCommand()} или {@link android.app.Service#onBind onBind()}.
+Каждый метод направляется намерением {@link
+android.content.Intent}, которое было передано методу {@link android.content.Context#startService
+startService()} или {@link android.content.Context#bindService bindService()}, соответственно.
+<p>Если служба запущена, активный жизненный цикл заканчивается одновременно с окончанием
+всего жизненного цикла (служба активна даже после возврата из метода {@link android.app.Service#onStartCommand
+onStartCommand()}). Если служба является привязанной, активный жизненный цикл заканчивается, когда возвращается метод {@link
+android.app.Service#onUnbind onUnbind()}.</p>
+</li>
+</ul>
+
+<p class="note"><strong>Примечание.</strong> Хотя запущенная служба останавливается посредством вызова
+метода {@link android.app.Service#stopSelf stopSelf()} или {@link
+android.content.Context#stopService stopService()}, для службы не существует соответствующего обратного вызова
+(нет обратного вызова {@code onStop()}). Поэтому, если служба не привязана к клиенту,
+система уничтожает ее при остановке службы — метод {@link
+android.app.Service#onDestroy onDestroy()} является единственным получаемым методом обратного вызова.</p>
+
+<p>Рисунок 2 иллюстрирует типичные методы обратного вызова для службы. Хотя на рисунке отделены
+службы, созданные посредством метода {@link android.content.Context#startService startService()}, от служб,
+созданных посредством метода {@link android.content.Context#bindService bindService()}, помните,
+что любая служба, независимо от способа запуска, позволяет клиентам выполнять привязку к ней.
+Поэтому служба, изначально созданная посредством метода {@link android.app.Service#onStartCommand
+onStartCommand()} (клиентом, который вызвал {@link android.content.Context#startService startService()}),
+может получать вызов метода {@link android.app.Service#onBind onBind()} (когда клиент вызывает
+метод {@link android.content.Context#bindService bindService()}).</p>
+
+<p>Дополнительные сведения о создании службы, которая обеспечивает привязку, см. в документе <a href="{@docRoot}guide/components/bound-services.html">Привязанные службы</a>,
+который содержит дополнительную информацию о методе обратного вызова {@link android.app.Service#onRebind onRebind()}
+в разделе <a href="{@docRoot}guide/components/bound-services.html#Lifecycle">Управление жизненным циклом
+привязанной службы</a>.</p>
+
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>To learn how to query data from the system or other applications (such as contacts or media
+stored on the device), continue with the <b><a
+href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a></b>
+document.</p>
+-->
diff --git a/docs/html-intl/intl/ru/guide/components/tasks-and-back-stack.jd b/docs/html-intl/intl/ru/guide/components/tasks-and-back-stack.jd
new file mode 100644
index 0000000..c9fdc0e
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/components/tasks-and-back-stack.jd
@@ -0,0 +1,578 @@
+page.title=Задачи и стек переходов назад
+parent.title=Операции
+parent.link=activities.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Содержание документа</h2>
+<ol>
+<li><a href="#ActivityState">Сохранение состояния операции</a></li></li>
+<li><a href="#ManagingTasks">Управление задачами</a>
+  <ol>
+    <li><a href="#TaskLaunchModes">Определение режимов запуска</a></li>
+    <li><a href="#Affinities">Обработка привязок</a></li>
+    <li><a href="#Clearing">Очистка стека переходов назад</a></li>
+    <li><a href="#Starting">Запуск задачи</a></li>
+  </ol>
+</li>
+</ol>
+
+<h2>Статьи</h2>
+<ol>
+  <li><a href="http://android-developers.blogspot.com/2010/04/multitasking-android-way.html">
+Многозадачность в системе Android</a></li>
+</ol>
+
+<h2>См. также:</h2>
+<ol>
+  <li><a href="{@docRoot}design/patterns/navigation.html">Дизайн Android:
+навигация</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html">Элемент манифеста 
+{@code &lt;activity&gt;}</a></li>
+  <li><a href="{@docRoot}guide/components/recents.html">Экран обзора</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>Обычно приложение содержит несколько <a href="{@docRoot}guide/components/activities.html">операций</a>. Каждая операция
+должна разрабатываться в связи с действием определенного типа, которое пользователь может выполнять, и может запускать другие
+операции. Например, приложение электронной почты может содержать одну операцию для отображения списка новых сообщений.
+Когда пользователь выбирает сообщение, открывается новая операция для просмотра этого сообщения.</p>
+
+<p>Операция может даже запускать операции, существующие в других приложениях на устройстве. Например,
+если ваше приложение хочет отправить сообщение электронной почты, вы можете определить намерение для выполнения 
+действия «отправить» и включить в него некоторые данные, например, адрес электронной почты и текст сообщения. После этого открывается операция из другого
+приложения, которая объявила, что она обрабатывает намерения такого типа. В этом случае намерение состоит в том, чтобы
+отправить сообщение электронной почты, поэтому в приложении электронной почты запускается операция «составить сообщение» (если одно намерение
+может обрабатываться несколькими операциями, система предлагает пользователю выбрать, какую из операций использовать). После отправки сообщения электронной почты
+ваша операция возобновляет работу, и все выглядит так, будто операция отправки электронной почты является частью вашего приложения. Хотя
+операции могут быть частями разных приложений, система Android поддерживает удобство работы
+пользователя, сохраняя обе операции в одной <em>задаче</em>.</p>
+
+<p>Задача — это коллекция операций, с которыми взаимодействует пользователь
+при выполнении определенного задания. Операции упорядочены в виде стека (<em>стека переходов назад</em>), в том
+порядке, в котором открывались операции.</p>
+
+<!-- SAVE FOR WHEN THE FRAGMENT DOC IS ADDED
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h3>Adding fragments to a task's back stack</h3>
+
+<p>Your activity can also include {@link android.app.Fragment}s to the back stack. For example,
+suppose you have a two-pane layout using fragments, one of which is a list view (fragment A) and the
+other being a layout to display an item from the list (fragment B). When the user selects an item
+from the list, fragment B is replaced by a new fragment (fragment C). In this case, it might be
+desireable for the user to navigate back to reveal fragment B, using the <em>Back</em> button.</p>
+<p>In order to add fragment B to the back stack so that this is possible, you must call {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()} before you {@link
+android.app.FragmentTransaction#commit()} the transaction that replaces fragment B with fragment
+C.</p>
+<p>For more information about using fragments and adding them to the back stack, see the {@link
+android.app.Fragment} class documentation.</p>
+
+</div>
+</div>
+-->
+
+<p>Начальным местом для большинства задач является главный экран устройства. Когда пользователь касается значка в средстве
+запуска
+приложений (или ярлыка на главном экране), эта задача приложения переходит на передний план. Если для
+приложения нет задач (приложение не использовалось в последнее время), тогда создается новая задача
+и открывается «основная» операция для этого приложения в качестве корневой операции в стеке.</p>
+
+<p>Когда текущая операция запускает другую, новая операция помещается в вершину стека
+и получает фокус. Предыдущая операция остается в стеке, но ее выполнение останавливается. Когда операция останавливается
+, система сохраняет текущее состояние ее пользовательского интерфейса. Когда пользователь нажимает кнопку
+<em>Назад</em>,
+текущая операция удаляется из вершины стека (операция уничтожается) и возобновляется
+работа предыдущей операции (восстанавливается предыдущее состояние ее пользовательского интерфейса). Операции в стеке
+никогда не переупорядочиваются, только добавляются в стек и удаляются из него — добавляются в стек при запуске текущей операцией
+и удаляются, когда пользователь выходит из нее с помощью кнопки <em>Назад</em>. По существу,
+стек
+переходов назад работает по принципу «последним вошел — первым вышел». На рисунке 1 это поведение
+показано на временной шкале: состояние операций и текущее состояние стека переходов назад
+ показано в каждый момент времени.</p>
+
+<img src="{@docRoot}images/fundamentals/diagram_backstack.png" alt="" />
+<p class="img-caption"><strong>Рисунок 1.</strong> Иллюстрация того, как каждая новая операция в задаче
+добавляет элемент в стек переходов назад. Когда пользователь нажимает кнопку<em>Назад</em>, текущая
+операция
+уничтожается, и возобновляется работа предыдущей операции.</p>
+
+
+<p>Если пользователь продолжает нажимать кнопку <em>Назад</em>, операции поочередно удаляются из стека,
+открывая
+предыдущую операцию, пока пользователь не вернется на главный экран (или в операцию, которая была запущена
+в начале выполнения задачи). Когда все операции удалены из стека, задача прекращает существование.</p>
+
+<div class="figure" style="width:287px">
+<img src="{@docRoot}images/fundamentals/diagram_multitasking.png" alt="" /> <p
+class="img-caption"><strong>Рисунок 2.</strong> Две задачи: Задача B взаимодействует с пользователем
+на переднем плане, тогда как Задача A находится в фоновом режиме, ожидая возобновления.</p>
+</div>
+<div class="figure" style="width:215px">
+  <img src="{@docRoot}images/fundamentals/diagram_multiple_instances.png" alt="" /> <p
+class="img-caption"><strong>Рисунок 3.</strong> Создается несколько экземпляров одной операции.</p>
+</div>
+
+<p>Задача — это связанный блок, который может переходить в фоновый режим, когда пользователи начинают новую задачу или переходят
+на главный экран с помощью кнопки <em>Домой</em>. В фоновом режиме все операции
+задачи
+остановлены, но стек обратного вызова для задачи остается неизменным. Задача просто потеряла фокус во время
+выполнения другой задачи, как показано на рисунке 2. Затем задача может вернуться на передний план, так что пользователи
+могут продолжить ее с прерванного места. Предположим, например, что текущая задача (Задача A) содержит три операции
+в своем стеке — две операции под текущей операцией. Пользователь нажимает кнопку <em>Домой</em>,
+ затем запускает
+новое приложение из средства запуска приложений. Когда появляется главный экран, Задача A переходит
+в фоновый режим. Когда запускается новое приложение, система запускает задачу для этого приложения 
+(Задачу B) со своим собственным стеком операций. После взаимодействия с этим
+приложением пользователь снова возвращается на главный экран и выбирает изначально запущенную
+Задачу A. Теперь Задача A переходит на передний
+план — все три операции ее стека остались неизменными, и возобновляется операция, находящаяся на
+вершине стека. В этот
+момент пользователь может также переключиться обратно на Задачу B, перейдя на главный экран и выбрав значок приложения,
+которое запустило эту задачу (или выбрав задачу приложения на
+<a href="{@docRoot}guide/components/recents.html">экране обзора</a>).
+Это пример многозадачности в системе Android.</p>
+
+<p class="note"><strong>Примечание.</strong> В фоновом режиме может находиться несколько задач одновременно.
+Однако, если пользователь запускает много фоновых задач одновременно, система может начать
+уничтожение фоновых операций для освобождения памяти, что приведет к потере состояния задач.
+См. следующий раздел <a href="#ActivityState">Состояние операции</a>.</p>
+
+<p>Поскольку операции в стеке никогда не переупорядочиваются, если ваше приложение позволяет
+пользователям запускать определенную операцию из нескольких операций, новый экземпляр
+такой операции создается и помещается в стек (вместо помещения любого из предыдущих экземпляров
+операции на вершину стека). По существу, для одной операции вашего приложения может быть создано несколько
+экземпляров (даже из разных задач), как показано на рисунке 3. Поэтому, если пользователь переходит назад с помощью
+кнопки <em>Назад</em>, каждый экземпляр операции появляется в том порядке, в котором они
+были открыты (каждый
+со своим состоянием пользовательского интерфейса). Однако вы можете изменить это поведение, если вы не хотите, чтобы создавалось несколько
+экземпляров операции. Это описано в разделе <a href="#ManagingTasks">Управление задачами</a> ниже.</p>
+
+
+<p>Подведем итоги поведения операций и задач:</p>
+
+<ul>
+  <li>Когда Операция A запускает Операцию B, Операция A останавливается, но система сохраняет ее состояние
+(например, положение прокрутки и текст, введенный в формы).
+Если пользователь нажимает кнопку <em>Назад</em> в Операции B, Операция A возобновляет работу
+из сохраненного состояния.</li>
+  <li>Когда пользователь выходит из задачи нажатием кнопки <em>Домой</em>, текущая операция
+останавливается и
+ее задача переводится в фоновый режим. Система сохраняет состояние каждой операции в задаче. Если
+пользователь впоследствии возобновляет задачу, выбирая значок запуска задачи, она переводится
+на передний план и возобновляет операцию на вершине стека.</li>
+  <li>Если пользователь нажимает кнопку <em>Назад</em>, текущая операция удаляется из стека

+уничтожается. Возобновляется предыдущая операция в стеке. Когда операция уничтожается, система
+<em>не</em> сохраняет состояние операции.</li>
+  <li>Можно создавать несколько экземпляров операции, даже из других задач.</li>
+</ul>
+
+
+<div class="note design">
+<p><strong>Дизайн навигации</strong></p>
+  <p>Для получения дополнительной информации о работе навигации в приложении Android, прочитайте раздел <a href="{@docRoot}design/patterns/navigation.html">Навигация</a> руководства «Дизайн для Android».</p>
+</div>
+
+
+<h2 id="ActivityState">Сохранение состояния операции</h2>
+
+<p>Как говорилось выше, система по умолчанию сохраняет состояние операции, когда она
+останавливается. Таким образом, когда пользователи возвращаются обратно в предыдущую операцию, восстанавливается ее пользовательский интерфейс
+в момент остановки. Однако вы можете — и <strong>должны</strong> — с упреждением сохранять
+состояние ваших операций посредством методов обратного вызова на случай уничтожения операции и необходимости ее
+повторного создания.</p>
+
+<p>Когда система останавливает одну из ваших операций (например, когда запускается новая операция или задача
+перемещается в фоновый режим), система может полностью уничтожить эту операцию, если необходимо восстановить
+память системы. Когда это происходит, информация о состоянии операции теряется. Если это происходит,
+система
+знает, что операция находится в стеке переходов назад, но когда операция переходит
+на вершину стека, система должна создать ее повторно (а не возобновить ее). Чтобы избежать
+потери работы пользователя, вы должны с упреждением сохранять ее путем реализации методов
+обратного вызова {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
+в вашей операции.</p>
+
+<p>Дополнительную информацию о сохранении состояния вашей операции см. в документе
+<a href="{@docRoot}guide/components/activities.html#SavingActivityState">Операции</a>.</p>
+
+
+
+<h2 id="ManagingTasks">Управление задачами</h2>
+
+<p>Для большинства приложений способ, которым Android управляет задачами и стеком переходов назад, описанный выше, — помещение всех
+операций последовательно в одну задачу в стек «последним вошёл — первым вышел», —
+работает хорошо, и вы не должны беспокоиться о связи ваших операций с задачами
+или об их существовании в стеке переходов назад. Однако вы можете решить, что вы хотите прервать
+обычное поведение. Возможно, вы хотите, чтобы операция в вашем приложении начинала новую задачу
+при запуске (вместо помещения в текущую задачу), или при запуске операции вы хотите
+перенести на передний план ее существующий экземпляр (вместо создания нового
+экземпляра на вершине стека переходов назад), или вы хотите чтобы при выходе пользователя из задачи из вашего стек переходов удалялись все
+операции, кроме корневой операции.</p>
+
+<p>Вы можете совершать эти и многие другие действия с помощью атрибутов в элементе манифеста
+<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+и с помощью флагов в намерении, которое вы передаете в
+{@link android.app.Activity#startActivity startActivity()}.</p>
+
+<p>В этом смысле главными атрибутами <a href="{@docRoot}guide/topics/manifest/activity-element.html">
+{@code &lt;activity&gt;}</a>, которые вы можете использовать, являются следующие:</p>
+
+<ul class="nolist">
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">
+  {@code taskAffinity}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">
+  {@code launchMode}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">
+  {@code allowTaskReparenting}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">
+  {@code clearTaskOnLaunch}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
+  {@code alwaysRetainTaskState}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">
+  {@code finishOnTaskLaunch}</a></li>
+</ul>
+
+<p>А главными флагами намерений, которые вы можете использовать, являются следующие:</p>
+
+<ul class="nolist">
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</li>
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</li>
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</li>
+</ul>
+
+<p>В следующих разделах показано, как можно использовать эти атрибуты манифеста и флаги
+намерений для определения связи операций с задачами и их поведения в стеке переходов назад.</p>
+
+<p>Кроме того, отдельно обсуждаются рекомендации о представлении задач и операций и управлении ими
+на экране обзора. Дополнительную информацию см. в разделе
+<a href="{@docRoot}guide/components/recents.html">Экран обзора</a>. Обычно следует разрешить системе определить способ представления вашей задачи и
+операций на экране обзора. Вам не нужно менять это поведение.</p>
+
+<p class="caution"><strong>Внимание!</strong> В большинстве приложений не следует прерывать поведение
+операций и задач по умолчанию. Если вы обнаружили, что вашей операции необходимо изменить
+поведение по умолчанию, будьте внимательны и протестируйте удобство работы с операцией во время
+запуска и при обратной навигации к ней из других операций и задач с помощью кнопки <em>Назад</em>.
+Обязательно протестируйте поведение навигации, которое может противоречить поведению, ожидаемому пользователем.</p>
+
+
+<h3 id="TaskLaunchModes">Определение режимов запуска</h3>
+
+<p>Режимы запуска позволяют вам определять связь нового экземпляра операции
+с текущей задачей. Вы можете задавать различные режимы запуска двумя способами:</p>
+<ul class="nolist">
+  <li><a href="#ManifestForTasks">Использование файла манифеста</a>
+    <p>Когда вы объявляете операцию в вашем файле манифеста, вы можете указать, как операция
+должна связываться с задачами при ее запуске.</li>
+  <li><a href="#IntentFlagsForTasks">Использование флагов намерений</a>
+    <p>Когда вы вызываете {@link android.app.Activity#startActivity startActivity()},
+вы можете включить флаг в {@link android.content.Intent}, который объявляет, как должна быть связана
+новая операция с текущей задачей (и должна ли).</p></li>
+</ul>
+
+<p>По существу, если Операция A запускает Операцию B, Операция B может определить в своем манифесте, как она
+должна быть связана с текущей задачей (если вообще должна), а Операция A может также запросить, как Операция B
+должна быть связана с текущей задачей. Если обе операции определяют, как Операция B
+должна быть связана с задачей, тогда запрос Операции A (как определено в намерении) обрабатывается через
+запрос Операции B (как определено в ее манифесте).</p>
+
+<p class="note"><strong>Примечание.</strong> Некоторые режимы запуска, доступные для файла манифеста,
+недоступны в виде флагов для намерения и, аналогичным образом, некоторые режимы запуска, доступные в виде флагов
+для намерения, не могут быть определены в манифесте.</p>
+
+
+<h4 id="ManifestForTasks">Использование файла манифеста</h4>
+
+<p>При объявлении операции в вашем файле манифеста вы можете указать, как операция должна
+быть связана с задачей посредством атрибута <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
+launchMode}</a> 
+элемента <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>.</p>
+
+<p>Атрибут <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
+launchMode}</a> указывает инструкцию по запуску операции в
+задаче. Существует четыре различных режима запуска,
+которые вы можете назначить атрибуту
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">launchMode</a></code>:</p>
+
+<dl>
+<dt>{@code "standard"} (режим по умолчанию)</dt>
+  <dd>Режим по умолчанию. Система создает новый экземпляр операции в задаче, из
+которой она была запущена, и направляет ему намерение. Может быть создано несколько экземпляров операции,
+каждый экземпляр может принадлежать различным задачам, и одна задача может содержать несколько экземпляров.</dd>
+<dt>{@code "singleTop"}</dt>
+  <dd>Если экземпляр операции уже существует на вершине текущей задачи, система
+направляет намерение в этот экземпляр путем вызова его метода {@link
+android.app.Activity#onNewIntent onNewIntent()}, а не путем создания нового экземпляра
+операции. Может быть создано несколько экземпляров операции, каждый экземпляр может
+принадлежать различным задачам, и одна задача может содержать несколько экземпляров (но только если
+операция на вершине стека переходов назад <em>не</em> является существующим экземпляром операции).
+  <p>Предположим, что стек переходов назад задачи состоит из корневой операции A с операциями B, C
+и D на вершине (стек имеет вид A-B-C-D и D находится на вершине). Поступает намерение для операции типа D.
+Если D имеет режим запуска {@code "standard"} по умолчанию, запускается новый экземпляр класса и
+стек принимает вид A-B-C-D-D. Однако, если D имеет режим запуска {@code "singleTop"}, существующий экземпляр
+D получает намерение через {@link
+android.app.Activity#onNewIntent onNewIntent()}, так как этот экземпляр находится на вершине стека —
+стек сохраняет вид A-B-C-D. Однако, если поступает намерение для операции типа B, тогда в стек
+добавляется новый экземпляр B, даже если он имеет режим запуска {@code "singleTop"}.</p>
+  <p class="note"><strong>Примечание.</strong> Когда создается новый экземпляр операции,
+пользователь может нажать кнопку <em>Назад</em> для возврата к предыдущей операции. Но когда существующий
+экземпляр
+операции обрабатывает новое намерение, пользователь не может нажать кнопку <em>Назад</em> для возврата к
+состоянию
+операции до поступления нового намерения в {@link android.app.Activity#onNewIntent
+onNewIntent()}.</p>
+</dd>
+
+<dt>{@code "singleTask"}</dt>
+  <dd>Система создает новую задачу и создает экземпляр операции в корне новой задачи.
+Однако, если экземпляр операции уже существует в отдельной задаче, система направляет
+намерение в существующий экземпляр путем вызова его метода {@link
+android.app.Activity#onNewIntent onNewIntent()}, а не путем создания нового экземпляра. Одновременно
+может существовать только один экземпляр операции.
+  <p class="note"><strong>Примечание.</strong> Хотя операция запускает новую задачу, кнопка
+<em>Назад</em> возвращает пользователя к предыдущей операции.</p></dd>
+<dt>{@code "singleInstance"}.</dt>
+  <dd>То же, что и {@code "singleTask"}, но при этом система не запускает никаких других операций
+в задаче, содержащей этот экземпляр. Операция всегда является единственным членом своей задачи;
+любые операции, запущенные этой операцией, открываются в отдельной задаче.</dd>
+</dl>
+
+
+<p>В качестве другого примера: приложение Android Browser объявляет, что операция веб-браузера должна
+всегда открываться в своей собственной задаче — путем указания режима запуска {@code singleTask} в элементе <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>.
+Это означает, что если ваше приложение выдает
+намерение открыть Android Browser, его операция <em>не</em> помещается в ту же
+задачу, что и ваше приложение. Вместо этого, либо для браузера запускается новая задача, либо, если браузер уже
+имеет задачу, работающую в фоновом режиме, эта задача переводится на передний план для обработки нового
+намерения.</p>
+
+<p>И при запуске операции в новой задаче, и при запуске операции в существующей задаче, 
+ кнопка <em>Назад</em> всегда возвращает пользователя к предыдущей операции. Однако, если вы
+запускаете операцию, которая указывает режим запуска {@code singleTask}, вся задача переводится на передний план, если экземпляр
+этой операции существует в фоновой задаче. В этот момент
+стек переходов назад помещает все операции из задачи, переведенной на передний план, на вершину
+стека. Рисунок 4 иллюстрирует сценарий этого типа.</p>
+
+<img src="{@docRoot}images/fundamentals/diagram_backstack_singletask_multiactivity.png" alt="" />
+<p class="img-caption"><strong>Рисунок 4.</strong> Представление того, как операция с режимом
+запуска singleTask добавляется в стек переходов назад. Если операция уже является частью
+фоновой задачи со своим собственным стеком переходов назад, то весь стек переходов назад также переносится вверх,
+на вершину текущей задачи.</p>
+
+<p>Дополнительную информацию об использовании режимов запуска в файле манифеста см. в документации элемента
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
+ где более подробно обсуждаются атрибут {@code launchMode}
+и принимаемые значения.</p>
+
+<p class="note"><strong>Примечание.</strong> Поведение, которое вы указываете для вашей операции с помощью атрибута <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>,
+может быть переопределено флагами, включенными в намерение, которое запускает вашу операцию, как описано
+в следующем разделе.</p>
+
+
+
+<h4 id="#IntentFlagsForTasks">Использование флагов намерений</h4>
+
+<p>При запуске операции вы можете изменить связывание операции с ее задачей по умолчанию
+путем включения флагов в намерение, которое доставляется в {@link
+android.app.Activity#startActivity startActivity()}. Для изменения поведения по умолчанию
+вы можете использовать следующие флаги:</p>
+
+<p>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</dt>
+    <dd>Запуск операции в новой задаче. Если задача уже работает для операции, которую вы запускаете
+сейчас, эта задача переводится на передний план, ее последнее состояние восстанавливается, и операция получает
+новое намерение в {@link android.app.Activity#onNewIntent onNewIntent()}.
+    <p>Это приводит к тому же поведению, что и значение <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> в режиме {@code "singleTask"},
+как описано в предыдущем разделе.</p></dd>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</dt>
+    <dd>Если запускаемая операция является текущей операцией (находится на вершине стека переходов назад), тогда
+вызов в {@link android.app.Activity#onNewIntent onNewIntent()} получает существующий экземпляр,
+ без создания нового экземпляра операции.
+    <p>Это приводит к тому же поведению, что и значение <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> в режиме {@code "singleTop"},
+как описано в предыдущем разделе.</p></dd>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</dt>
+    <dd>Если запускаемая операция уже работает в текущей задаче, тогда вместо
+запуска нового экземпляра этой операции уничтожаются все другие операции, расположенные в стеке выше нее
+, и это намерение доставляется в возобновленный экземпляр этой операции (которая теперь находится на вершине стека)
+посредством {@link android.app.Activity#onNewIntent onNewIntent()}).
+    <p>Для формирования такого поведения не существует значения для атрибута
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>.</p>
+    <p>Флаг {@code FLAG_ACTIVITY_CLEAR_TOP} чаще всего используется совместно с
+флагом {@code FLAG_ACTIVITY_NEW_TASK}.
+При использовании вместе эти флаги позволяют найти существующую операцию
+в другой задаче и поместить ее в положение, где она сможет реагировать на намерение. </p>
+    <p class="note"><strong>Примечание.</strong> Если для назначенной операции установлен режим запуска
+{@code "standard"},
+она также удаляется из стека и на ее месте запускается новый экземпляр, чтобы обработать
+входящее намерение.  Именно поэтому в режиме запуска {@code "standard"} всегда создается новый
+экземпляр для нового намерения. </p>
+</dd>
+</dl>
+
+
+
+
+
+<h3 id="Affinities">Обработка привязок</h3>
+
+<p><em>Привязка</em> указывает предпочтительную принадлежность операции к задаче. По умолчанию все
+операции из одного приложения имеют привязку друг к другу. Поэтому по умолчанию все
+операции одного приложения предпочитают находиться в одной задаче. Однако вы можете изменить
+привязку по умолчанию для операции. Операции, определенные
+в разных приложениях, могут совместно использовать одну привязку; таким же образом операции, определенные в одном приложении, могут получить
+привязки к разным задачам.</p>
+
+<p>Вы можете изменить привязку любой данный операции с помощью
+атрибута <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
+элемента <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>.</p>
+
+<p>Атрибут <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
+принимает строковое значение, которое должно отличаться от имени пакета по умолчанию,
+объявленного в элементе <a href="{@docRoot}guide/topics/manifest/manifest-element.html">
+{@code &lt;manifest&gt;}
+</a>, поскольку система использует это имя для идентификации привязки задачи по умолчанию
+для приложения.</p>
+
+<p>Привязка вступает в игру в двух случаях:</p>
+<ul>
+  <li>Когда намерение, запускающее
+операцию, содержит флаг
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}.
+
+<p>Новая операция по умолчанию запускается в задаче той операции,
+которая вызвала {@link android.app.Activity#startActivity startActivity()}. Она помещается в тот же
+стек переходов назад, что и вызывающая операция.  Однако, если намерение, переданное
+в {@link android.app.Activity#startActivity startActivity()},
+содержит флаг {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK},
+ система ищет другую задачу для помещения новой операции. Часто это новая задача.
+Но необязательно.  Если уже существует задача с той же привязкой, что
+и у новой операции, операция запускается в этой задаче.  Если нет, операция начинает новую задачу.</p>
+
+<p>Если этот флаг приводит к тому, что операция начинает новую задачу, и пользователь нажимает кнопку <em>Домой</em>
+для выхода из нее,
+должен существовать способ, позволяющий пользователю вернуться к задаче. Некоторые объекты (такие как
+диспетчер уведомлений) всегда запускают операции во внешней задаче, а не в составе собственной, поэтому
+они всегда помещают флаг {@code FLAG_ACTIVITY_NEW_TASK} в намерения, которые они передают
+в {@link android.app.Activity#startActivity startActivity()}.
+Если у вас есть операция, которую можно вызвать
+внешним объектом, использующим этот флаг, позаботьтесь о том, чтобы у пользователя был независимый способ
+вернуться в запущенную задачу, например, с помощью значка запуска (корневая операция задачи
+содержит фильтр намерений {@link android.content.Intent#CATEGORY_LAUNCHER}; см. раздел <a href="#Starting">Запуск задачи</a> ниже).</p>
+</li>
+
+  <li>Если для атрибута <a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">
+{@code allowTaskReparenting}</a> операции установлено значение {@code "true"}.
+  <p>В этом случае операция может переместиться из запустившей ее задачи в задачу, к которой у операции есть привязка,
+когда эта задача переходит на передний план.</p>
+  <p>Предположим, что операция, которая сообщает о погодных условиях в выбранных городах,
+определена в составе приложения для путешественников.  Она имеет ту же привязку, что и другие операции в том же
+приложении (привязка приложения по умолчанию), и допускает переподчинение с этим атрибутом.
+Когда одна из ваших операций запускает операцию прогноза погоды, она изначально принадлежит той же
+задаче, что и ваша операция. Однако, когда задача из приложения для путешественников переходит на передний план,
+операция прогноза погоды переназначается этой задаче и отображается внутри нее.</p>
+</li>
+</ul>
+
+<p class="note"><strong>Совет.</strong> Если файл {@code .apk} содержит более одного «приложения»
+с точки зрения пользователя, вы, вероятно, захотите использовать атрибут <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
+для назначения разных привязок операциям, связанным с каждым «приложением».</p>
+
+
+
+<h3 id="Clearing">Очистка стека переходов назад</h3>
+
+<p>Если пользователь выходит из задачи на длительное время, система удаляет из задачи все операции, кроме
+корневой операции.  Когда пользователь возвращается в задачу, восстанавливается только корневая операция.
+Система ведет себя таким образом, так как после продолжительного времени пользователи обычно уже забросили то,
+чем они занимались ранее, и возвращаются в задачу, чтобы начать что-то новое. </p>
+
+<p>Для изменения такого поведения предусмотрено несколько атрибутов операции, которыми вы можете воспользоваться: </p>
+
+<dl>
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#always">alwaysRetainTaskState</a></code>
+</dt>
+<dd>Если для этого атрибута установлено значение {@code "true"} в корневой операции задачи,
+описанное выше поведение по умолчанию не происходит.
+Задача восстанавливает все операции в своем стеке даже по истечении длительного периода времени.</dd>
+
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#clear">clearTaskOnLaunch</a></code></dt>
+<dd>Если для этого атрибута установлено значение {@code "true"} в корневой операции задачи,
+стек очищается до корневой операции каждый раз, когда пользователь выходит из задачи
+и возвращается в нее.  Другими словами, этот атрибут противоположен атрибуту 
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
+{@code alwaysRetainTaskState}</a>. Пользователь всегда возвращается в задачу в ее
+исходном состоянии, даже после кратковременного выхода из нее.</dd>
+
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTaskLaunch</a></code>
+</dt>
+<dd>Этот атрибут похож на <a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">{@code clearTaskOnLaunch}</a>,
+но он действует на
+одну операцию, а не на всю задачу.  Он также может приводить к удалению любой операции,
+включая корневую операцию.  Когда для него установлено значение {@code "true"},
+операция остается частью задачи только для текущего сеанса.  Если пользователь
+выходит из задачи, а затем возвращается в нее, операция уже отсутствует.</dd>
+</dl>
+
+
+
+
+<h3 id="Starting">Запуск задачи</h3>
+
+<p>Вы можете сделать операцию точкой входа, назначая ей фильтр намерений со значением 
+{@code "android.intent.action.MAIN"} в качестве указанного действия и
+{@code "android.intent.category.LAUNCHER"}
+в качестве указанной категории. Например:</p>
+
+<pre>
+&lt;activity ... &gt;
+    &lt;intent-filter ... &gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+    ...
+&lt;/activity&gt;
+</pre>
+
+<p>Фильтр намерений такого типа приводит к тому, что в средстве запуска приложения отображаются значок и метка для
+операции, что позволяет пользователю запускать операцию
+и возвращаться в создавшую ее задачу в любой момент после ее запуска.
+</p>
+
+<p>Эта вторая возможность очень важна: пользователи должны иметь возможность выходить из задачи и затем возвращаться в нее
+с помощью этого средства запуска операции. Поэтому два <a href="#LaunchModes">режима
+запуска</a>, которые отмечают, что операции всегда инициируют задачу, {@code "singleTask"} и
+{@code "singleInstance"}, должны использоваться только в тех случаях, когда операция содержит
+{@link android.content.Intent#ACTION_MAIN}
+и фильтр {@link android.content.Intent#CATEGORY_LAUNCHER}. Представьте, например, что может произойти,
+если фильтр отсутствует: намерение запускает операцию {@code "singleTask"}, которая инициирует
+новую задачу, и пользователь некоторое время работает в этой задаче. Затем пользователь нажимает кнопку
+<em>Домой</em>. Задача переводится в фоновый режим и не отображается. Теперь у пользователя нет возможности вернуться
+к задаче, так как она отсутствует в средстве запуска приложения.</p>
+
+<p>Для таких случаев, когда вы не хотите, чтобы пользователь мог вернуться к операции, установите для атрибута
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">{@code finishOnTaskLaunch}</a>
+элемента
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+значение {@code "true"} (см. раздел <a href="#Clearing">Очистка стека</a>).</p>
+
+<p>Дополнительную информацию о представлении задач и операций и управлении ими
+на экране обзора см. в разделе <a href="{@docRoot}guide/components/recents.html">
+Экран обзора</a>.</p>
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For more information about how to use intents to
+activate other application components and publish the intents to which your components
+respond, continue with the <b><a
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent
+Filters</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/ru/guide/index.jd b/docs/html-intl/intl/ru/guide/index.jd
new file mode 100644
index 0000000..b073272
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/index.jd
@@ -0,0 +1,74 @@
+page.title=Общие сведения о платформе Android
+
+@jd:body
+
+
+<div class="sidebox" style="width:220px"><!-- width to match col-4 below -->
+<p>Чтобы узнать, как работают приложения, начните с раздела 
+<a href="{@docRoot}guide/components/fundamentals.html">Основы создания приложений</a>.</p>
+<p>Чтобы сразу приступить к программированию, читайте раздел <a href="{@docRoot}training/basics/firstapp/index.html">Создание первого приложения</a>.</p>
+</div>
+
+<p>Система Android предоставляет разностороннюю платформу приложений, на основе которой можно создавать инновационные приложения и игры
+для мобильных устройств в среде языка Java. В документах, ссылки на которые приведены на панели навигации слева,
+рассказывается о том, как создавать приложения с помощью различных API-интерфейсов Android.</p>
+
+<p>Если создание программ для Android является для вас новым делом, вам важно усвоить
+следующие основные концепции, касающиеся платформы приложений Android:</p>
+
+
+<div class="landing-banner">
+
+<div class="col-6">
+
+<h4>Приложения имеют несколько точек входа</h4>
+
+<p>Приложения для Android строятся из отдельных компонентов, которые можно вызывать
+независимо друг от друга. Например, отдельная <em>операция</em> предоставляет один
+экран для пользовательского интерфейса, а <em>служба</em> независимо выполняет
+работу в фоновом режиме.</p>
+
+<p>С помощью объекта <em>Intent</em> из одного компонента можно запустить другой компонент. Можно даже запустить
+компонент из другого приложения, скажем, операцию из картографического приложения, чтобы показать адрес. Эта модель
+формирует несколько точек входа для одного приложения, и при этом пользователь может выбрать любое приложение для выполнения по умолчанию
+того или иного действия, которое могут вызывать другие приложения.</p>
+
+
+<p><b>Подробнее:</b></p>
+<ul class="nolist">
+<li><a href="{@docRoot}guide/components/fundamentals.html">Основы создания приложений</a>
+<li><a href="{@docRoot}guide/components/intents-filters.html">Объекты Intent и фильтры объектов Intent</a>
+<li><a href="{@docRoot}guide/components/activities.html">Операции</a>
+</ul>
+
+</div>
+
+
+<div class="col-6">
+
+<h4>Приложения адаптируются к различным устройствам</h4>
+
+<p>Android предоставляет адаптивную платформу приложений, которая позволяет обеспечивать уникальные ресурсы
+для различных конфигураций устройств. Например, можно создать разные файлы XML
+макета для экранов разных размеров, а система будет
+определять, какой макет использовать, с учетом размера экрана данного устройства.</p>
+
+<p>Если каким-либо функциям приложения требуется определенное оборудование, например камера, можно
+запрашивать его наличие в устройстве во время выполнения. При необходимости также можно объявлять функции, которые требуются приложению,
+с тем чтобы такие магазины приложений, как Google Play, не позволяли устанавливать приложения на устройствах, в которых
+этой функции нет.</p>
+
+
+<p><b>Подробнее:</b></p>
+<ul class="nolist">
+<li><a href="{@docRoot}guide/practices/compatibility.html">Совместимость устройств</a>
+<li><a href="{@docRoot}guide/topics/resources/overview.html">Обзор ресурсов</a>
+<li><a href="{@docRoot}guide/topics/ui/overview.html">Обзор пользовательского интерфейса</a>
+</ul>
+
+</div>
+
+</div><!-- end landing-banner -->
+
+
+
diff --git a/docs/html-intl/intl/ru/guide/topics/manifest/manifest-intro.jd b/docs/html-intl/intl/ru/guide/topics/manifest/manifest-intro.jd
new file mode 100644
index 0000000..f2c5a9e0
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/manifest/manifest-intro.jd
@@ -0,0 +1,517 @@
+page.title=Манифест приложения
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Содержание документа</h2>
+<ol>
+<li><a href="#filestruct">Структура файла манифеста</a></li>
+<li><a href="#filec">Соглашения о компонентах файла</a>
+<li><a href="#filef">Отображение функций в файле</a>
+	<ol>
+	<li><a href="#ifs">Фильтры объектов Intent</a></li>
+	<li><a href="#iconlabel">Значки и метки</a></li>
+	<li><a href="#perms">Разрешения</a></li>
+	<li><a href="#libs">Библиотеки</a></li>
+	</ol></li>
+</ol>
+</div>
+</div>
+
+<p>
+  В корневой папке каждого приложения должен находиться файл AndroidManifest.xml (который именно так и называется
+). <span itemprop="description">Файл манифеста
+ содержит важную информацию о приложении, которая требуется системе Android.
+ Только получив эту информацию, система может выполнить какой-либо код
+ приложения.</span> Среди прочего файл манифеста выполняет следующие действия:
+</p>
+
+<ul>
+<li>Он задает имя пакета Java для приложения.
+Это имя пакета служит уникальным идентификатором приложения.</li>
+
+<li>Он описывает компоненты приложения &mdash; операции, 
+службы, приемники широковещательных сообщений и поставщиков контента, из которых состоит
+приложение.  Он содержит имена классов, которые реализуют каждый компонент, и 
+публикует их возможности (указывает, например, какие сообщения {@link android.content.Intent 
+Intent} они могут принимать).  На основании этих деклараций система Android 
+может определить, из каких компонентов состоит приложение и при каких условиях их можно запускать.</li>
+
+<li>Он определяет, в каких процессах будут размещаться компоненты приложения.</li>  
+
+<li>Он объявляет, какие разрешения должны быть выданы приложению, чтобы оно могло получить 
+доступ к защищенным частям API-интерфейса и взаимодействовать с другими приложениями.</li>  
+
+<li>Он также объявляет разрешения, требуемые для 
+взаимодействия с компонентами данного приложения.</li>
+
+<li>Он содержит список классов {@link android.app.Instrumentation}, которые при выполнении приложения предоставляют 
+сведения о профиле и прочую информацию.  Эти объявления 
+присутствуют в файле манифеста только во время разработки и отладки 
+приложения и удаляются перед его публикацией.</li>
+
+<li>Он объявляет минимальный уровень API-интерфейса Android, который требуется 
+приложению.</li>
+
+<li>Он содержит список библиотек, с которыми должно быть связано приложение.</li>
+</ul>
+
+
+<h2 id="filestruct">Структура файла манифеста</h2>
+
+<p>
+Приведенная далее схема позволяет ознакомиться с общей структурой файла манифеста и 
+всеми элементами, которые могут в нем содержаться.  Каждый элемент вместе со всеми своими 
+атрибутами, полностью описывается в отдельном файле.  Для просмотра подробных 
+сведений о любом элементе, щелкните имя элемента на схеме, 
+в алфавитном списке элементов, приведенном после схемы, или 
+в любом другом месте, где этот элемент упоминается. 
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
+
+    <a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration /&gt;</a>  <!-- ##api level 3## -->
+    <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature /&gt;</a>  <!-- ##api level 4## -->
+    <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens /&gt;</a>  <!-- ##api level 4## -->
+    <a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html">&lt;compatible-screens /&gt;</a>  <!-- ##api level 9## -->
+    <a href="{@docRoot}guide/topics/manifest/supports-gl-texture-element.html">&lt;supports-gl-texture /&gt;</a>  <!-- ##api level 11## -->
+
+    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action /&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category /&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;/activity&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;/activity-alias&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data/&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;/service&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;/receiver&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/path-permission-element.html">&lt;path-permission /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;/provider&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library /&gt;</a>
+
+    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;/application&gt;</a>
+
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;/manifest&gt;</a>
+</pre>
+
+<p>
+Далее приведен список всех элементов, расположенных в алфавитном порядке, которые могут 
+присутствовать в файле манифеста.  Там могут находиться только эти элементы, а никакие другие
+элементы или атрибуты добавлять нельзя.  
+</p>
+
+<p style="margin-left: 2em">
+<code><a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens&gt;</a></code>  <!-- ##api level 4## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration&gt;</a></code>  <!-- ##api level 3## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature&gt;</a></code>  <!-- ##api level 4## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</a></code>
+</p>
+
+
+    
+
+<h2 id="filec">Соглашения о компонентах файла</h2>
+
+<p>
+Ко всем элементам и атрибутам 
+из файла манифеста применяется рад соглашений и правил:
+</p>
+
+<dl>
+<dt><b>Элементы</b></dt>
+<dd>Обязательными 
+являются только элементы<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> и
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+. Оба они должны присутствовать в файле манифеста, при этом указать их можно только один раз.  
+Большинство других элементов можно указывать по нескольку раз или не указывать вовсе &mdash; хотя по 
+крайней мере некоторые из них нужны, чтобы файл манифеста был сколько-нибудь 
+информативным.
+
+<p>
+Если в элементе и есть какое-то содержимое, то это другие элементы.  
+Все значения задаются с помощью атрибутов, а не как символьные данные в элементе.
+</p>
+
+<p>
+Элементы, находящиеся на одном уровне, обычно не упорядочиваются.  Например,
+ элементы <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>, 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> и 
+<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code> 
+можно указать в любой последовательности.  (Элемент 
+<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
+является исключением из этого правила.  Он должен следовать за элементом 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>, 
+псевдонимом которого он является.)
+</p></dd>
+
+<dt><b>Атрибуты</b></dt>
+<dd>Формально все атрибуты являются необязательными.  Однако некоторые их них 
+указывать необходимо, чтобы файл мог выполнять свое предназначение.  В качестве руководства используйте эту
+документацию.  В отношении атрибутов, которые являются и вправду необязательными, в ней указывается значение, 
+используемое по умолчанию, или говорится, что произойдет, если такой атрибут не будет указан.
+
+<p>За исключением некоторых атрибутов корневого элемента 
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> 
+, имена всех атрибутов должны начинаться с префикса {@code android:} &mdash; 
+например, {@code android:alwaysRetainTaskState}.  Поскольку этот префикс является 
+универсальным, в документации при указании атрибутов по имени 
+он обычно опускается.</p></dd>
+
+<dt><b>Объявление имен классов</b></dt>
+<dd>Многие элементы соответствуют объектам Java, в том числе элементы для самого 
+приложения (элемент 
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+) и основных его компонентов &mdash; операций 
+(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>), 
+служб 
+(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>), 
+приемников широковещательных сообщений 
+(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>) 
+и поставщиков контента 
+(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>).  
+
+<p>
+Если вы определяете подкласс, а это практически всегда делается для классов компонентов 
+({@link android.app.Activity}, {@link android.app.Service}, 
+{@link android.content.BroadcastReceiver} и {@link android.content.ContentProvider}), 
+выполняется это с помощью атрибута {@code name}.  В состав имени должно входить 
+полное обозначение пакета.  
+Например, подкласс {@link android.app.Service} можно объявить следующим образом:
+</p>
+
+<pre>&lt;manifest . . . &gt;
+    &lt;application . . . &gt;
+        &lt;service android:name="com.example.project.SecretService" . . . &gt;
+            . . .
+        &lt;/service&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+Однако его можно укоротить. Если первым символом в строке указать точку, эта 
+строка будет добавляться к имени пакета приложения (указанного атрибутом 
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>  
+элемента 
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code> 
+).  Следующее назначение является таким же, как приведенное выше: 
+</p>
+
+<pre>&lt;manifest package="com.example.project" . . . &gt;
+    &lt;application . . . &gt;
+        &lt;service android:name=".SecretService" . . . &gt;
+            . . .
+        &lt;/service&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+При запуске компонента Android создает экземпляр подкласса, указанного по имени.  
+Если подкласс не указан, система создает экземпляр базового класса.
+</p></dd>
+
+<dt><b>Несколько значений</b></dt>
+<dd>Если можно указать несколько значений, элемент почти всегда 
+приводится повторно. Делается это вместо перечисления нескольких значений в одном элементе.  
+Например, в фильтре Intent может быть перечислено несколько действий:
+
+<pre>&lt;intent-filter . . . &gt;
+    &lt;action android:name="android.intent.action.EDIT" /&gt;
+    &lt;action android:name="android.intent.action.INSERT" /&gt;
+    &lt;action android:name="android.intent.action.DELETE" /&gt;
+    . . .
+&lt;/intent-filter&gt;</pre></dd>
+
+<dt><b>Значения ресурсов</b></dt>
+<dd>Значения некоторых атрибутов могут отображаться на экране &mdash; например, 
+метка и значок операции.  Значения этих атрибутов 
+следует локализовать, поэтому они должны задаваться в ресурсе или теме.  Значения 
+ресурсов выражаются в следующем формате:</p>
+
+<p style="margin-left: 2em">{@code @[<i>пакет</i>:]<i>тип</i>:<i>имя</i>}</p>
+
+<p>
+где <i>имя пакета</i> можно опустить, если ресурс находится в одном пакете 
+с приложением, <i>тип —</i> это тип ресурса, &mdash; например "string" или 
+"drawable", &mdash; а <i>имя —</i> это имя, определяющее ресурс.  
+Например:
+</p>
+
+<pre>&lt;activity android:icon="@drawable/smallPic" . . . &gt</pre>
+
+<p>
+Значения из темы выражаются схожим образом, только в начале у них идет "{@code ?}", 
+а не "{@code @}":
+</p>
+
+<p style="margin-left: 2em">{@code ?[<i>пакет</i>:]<i>тип</i>:<i>имя</i>}
+</p></dd>
+
+<dt><b>Строковые значения</b></dt>
+<dd>Когда значением атрибута является строка, следует использовать двойную обратную косую черту ("{@code \\}") 
+для выделения управляющей последовательности символов, &mdash; например "{@code \\n}" для 
+новой строки или "{@code \\uxxxx}" для символа Юникода.</dd>
+</dl>
+
+
+<h2 id="filef">Отображение функций в файле</h2>
+
+<p>
+В следующих разделах описано, как некоторые функции Android отображаются 
+в файле манифеста.
+</p>
+
+
+<h3 id="ifs">Фильтры объектов Intent</h3>
+
+<p>
+Базовые компоненты приложения (его операции, службы и 
+приемники широковещательных сообщений) активируются <i>объектами Intent</i>.  Intent — 
+это совокупность информации (объект {@link android.content.Intent}), описывающей 
+требуемое действие, &mdash; в том числе в ней указаны данные, с которыми следует выполнить это действие, категория 
+компонентов, которые должны выполнять это действие, и другие уместные инструкции.  
+Система Android находит компонент, который отреагирует на объект Intent, запускает 
+новый экземпляр компонента, если он требуется, и передает ему 
+объект Intent.
+</p>
+
+<p>
+Компоненты объявляют свои возможности &mdash; виды объектов Intent, на которые они могут 
+реагировать, &mdash; с помощью <i>фильтров Intent</i>.  Поскольку система Android 
+должна узнать, какие объекты Intent может обрабатывать тот или иной компонент, до того как она его запустит, 
+фильтры Intent указываются в файле манифеста как 
+элементы <code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> 
+.  Компонент может иметь любое количество фильтров, каждый из которых описывает 
+отдельную возможность компонента.
+</p>
+
+<p>
+Объект Intent, в котором целевой компонент явно указан по имени, активирует этот компонент, 
+и фильтр при этом не учитывается.  Но объект Intent, в котором имя целевого 
+компонента не указано, может активировать компонент, только если он может пройти через один из фильтров 
+компонента.
+</p>
+
+<p>
+Сведения о том, каким образом объекты Intent проверяются по фильтрам Intent, 
+см. в отдельном документе 
+<a href="{@docRoot}guide/components/intents-filters.html">Объекты Intent 
+и фильтры объектов Intent</a>.
+</p>
+
+
+<h3 id="iconlabel">Значки и метки</h3>
+
+<p>
+У ряда элементов есть атрибуты {@code icon} и {@code label} для 
+небольшого значка и текстовой метки, которые могут отображаться на экране.  У некоторых из них также есть атрибут 
+{@code description} для более длинного описательного текста, который также может 
+отображаться на экране.  Например, элемент 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+имеет все три таких атрибута, поэтому, когда пользователю задается вопрос, предоставить ли 
+разрешение запросившему его приложению, на экране может отображаться значок, 
+представляющий разрешение, имя разрешения и описание того, что оно 
+за собой влечет.
+</p>
+
+<p>
+В любом случае значок и метка, заданные в элементе-контейнере, становятся параметрами 
+{@code icon} и {@code label}, используемыми по умолчанию для всех вложенных в этот контейнер дочерних элементов.  
+Так, значок и метка, заданные в элементе 
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>, 
+являются значком и меткой, используемыми по умолчанию для каждого компонента приложения.  
+Точно так же, значок и метка, заданные для компонента, &mdash; например элемента 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>, &mdash; 
+являются параметрами, используемыми по умолчанию для каждого элемента 
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> 
+ компонента.  Если в элементе 
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+задана метка, а в операции и ее фильтре Intent — нет, 
+метка приложения будет считаться меткой и для операции, и для 
+фильтра Intent.
+</p>
+
+<p>
+Значок и метка, заданные для фильтра Intent, используются для обозначения компонента, 
+когда он представляется пользователю, для указания функции,
+которую анонсирует фильтр.  Например, фильтр с параметрами 
+"{@code android.intent.action.MAIN}" и 
+"{@code android.intent.category.LAUNCHER}" сообщает, что эта операция 
+инициирует приложение, &mdash; то есть он обозначает ее как
+ операцию, которая должна быть отображена в средстве запуска приложений.  Отсюда следует, что значок и метка, 
+заданные в фильтре, отображаются в средстве запуска.
+</p>
+
+
+<h3 id="perms">Разрешения</h3>
+
+<p>
+Разрешение <i>представляет</i> собой ограничение на доступ к части кода 
+или к данным, имеющимся на устройстве.   Это ограничение накладывается для защиты важных 
+данных и кода, ненадлежащее использование которых может пагубно сказаться на работе приложения.  
+</p>
+
+<p>
+Каждое разрешение обозначается уникальной меткой.  Зачастую метка обозначает 
+действие, выполнение которого ограничивается.  Например, вот некоторые разрешения, определенные 
+системой Android:
+</p>
+
+<p style="margin-left: 2em">{@code android.permission.CALL_EMERGENCY_NUMBERS}
+<br/>{@code android.permission.READ_OWNER_DATA}
+<br/>{@code android.permission.SET_WALLPAPER}
+<br/>{@code android.permission.DEVICE_POWER}</p>
+
+<p>
+Функцию можно защитить не более чем одним разрешением.
+</p>
+
+<p>
+Если приложению требуется доступ к функции, защищенной разрешением, 
+оно должно объявить, что ему необходимо это разрешение, с помощью элемента 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 
+в файле манифеста.  Затем, когда приложение устанавливается на 
+устройство, установщик определяет, выдать ли запрошенное 
+разрешение, проверяя полномочия органов, подписавших сертификаты 
+приложения, а также, в некоторых случаях, спрашивая об этом пользователя.  
+Если разрешение предоставляется, приложение сможет использовать защищенные 
+функции.  В противном случае его попытки доступа к этим функциям будут безуспешными,
+причем пользователь не получит никакого уведомления об этом. 
+</p>
+
+<p>
+Приложение также может защищать с помощью разрешений собственные компоненты (операции, службы, 
+приемники широковещательных сообщений и поставщиков контента).  Оно может использовать 
+любые разрешения, определенные системой Android (они приведены в объекте 
+{@link android.Manifest.permission android.Manifest.permission}) или объявленные 
+другими приложениями.  Либо оно может определить разрешения самостоятельно.  Новое разрешение объявляется 
+с помощью элемента 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+.  Например, операцию можно защитить следующим образом:
+</p>
+
+<pre>
+&lt;manifest . . . &gt;
+    &lt;permission android:name="com.example.project.DEBIT_ACCT" . . . /&gt;
+    &lt;uses-permission android:name="com.example.project.DEBIT_ACCT" /&gt;
+    . . .
+    &lt;application . . .&gt;
+        &lt;activity android:name="com.example.project.FreneticActivity"
+                  android:permission="com.example.project.DEBIT_ACCT"
+                  . . . &gt;
+            . . .
+        &lt;/activity&gt;
+    &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+
+<p>
+Обратите внимание, что в этом примере разрешение {@code DEBIT_ACCT} не только 
+объявляется с помощью элемента 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+, его использование также запрашивается с помощью элемента 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+.  Чтобы другие компоненты приложения запускали защищенную
+операцию, ее использование должно быть запрошено, даже несмотря на то, что защита 
+наложена самим приложением.  
+</p>
+
+<p>
+В этом же примере: если атрибут {@code permission} был бы задан как 
+разрешение, объявленное где-то еще 
+(например, {@code android.permission.CALL_EMERGENCY_NUMBERS}), его бы не 
+нужно было объявлять еще раз с помощью элемента 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+.  Однако все равно нужно было бы запрашивать его использование с помощью 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>. 
+</p>
+
+<p>
+Элемент 
+<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code> 
+объявляет пространство имен для группы разрешений, которые будут определены в 
+коде.  А элемент 
+<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+определяет метку для набора разрешений (как для разрешений, объявленных в файле манифеста с помощью элементов 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+, так и для объявленных где-то еще).  Это влияет только на то, каким образом разрешения 
+группируются, когда отображаются пользователю.  Элемент 
+<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+не указывает, какие разрешения относятся к группе. 
+Он просто дает группе имя.  Чтобы включить разрешение в группу,
+атрибуту 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code> 
+ его элемента 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 
+необходимо присвоить имя группы.
+</p>
+
+
+<h3 id="libs">Библиотеки</h3>
+
+<p>
+Каждое приложение связывается с используемой по умолчанию библиотекой Android, в которой 
+имеются базовые пакеты для построения приложений (со стандартными классами, 
+например Activity, Service, Intent, View, Button, Application, ContentProvider 
+и так далее).
+</p>
+
+<p>
+Однако некоторые пакеты находятся в собственных библиотеках.  Если ваше приложение 
+использует код из одного из таких пакетов, оно должно в явном виде потребовать, чтобы его связали 
+с этим пакетом.  Файл манифеста должен содержать отдельный элемент 
+<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code> 
+для указания имени каждой библиотеки.  (Имя библиотеки можно найти в 
+документации по пакету.)
+</p>
diff --git a/docs/html-intl/intl/ru/guide/topics/providers/calendar-provider.jd b/docs/html-intl/intl/ru/guide/topics/providers/calendar-provider.jd
new file mode 100644
index 0000000..2d12e12
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/providers/calendar-provider.jd
@@ -0,0 +1,1184 @@
+page.title=Поставщик календаря
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+    <h2>Содержание документа</h2>
+    <ol>
+  <li><a href="#overview">Основы</a></li>
+  <li><a href="#manifest">Разрешения пользователей</a></li>
+  <li><a href="#calendar">Таблица календарей</a>
+<ol>
+      <li><a href="#query">Запрос календаря</a></li>
+      <li><a href="#modify-calendar">Изменение календаря</a></li>
+      <li><a href="#insert-calendar">Вставка календаря</a></li>
+    </ol>
+  </li>
+  <li><a href="#events">Таблица событий</a>
+<ol>
+      <li><a href="#add-event">Добавление событий</a></li>
+      <li><a href="#update-event">Обновление событий</a></li>
+      <li><a href="#delete-event">Удаление событий</a></li>
+    </ol>
+  </li>
+  <li><a href="#attendees">Таблица участников</a>
+<ol>
+      <li><a href="#add-attendees">Добавление участников</a></li>
+    </ol>
+  </li>
+  <li><a href="#reminders">Таблица напоминаний</a>
+<ol>
+      <li><a href="#add-reminders">Добавление напоминаний</a></li>
+    </ol>
+  </li>
+  <li><a href="#instances">Таблица экземпляров</a>
+  <ol>
+      <li><a href="#query-instances">Запрос таблицы экземпляров</a></li>
+  </ol></li>
+  <li><a href="#intents">Намерения календаря</a>
+  <ol>
+      <li><a href="#intent-insert">Использование намерения для вставки события</a></li>
+      <li><a href="#intent-edit">Использование намерения для редактирования события</a></li>
+      <li><a href="#intent-view">Использование намерения для просмотра данных календаря</a></li>
+    </ol>
+  </li>
+  
+  <li><a href="#sync-adapter">Адаптеры синхронизации</a></li>
+</ol>
+
+    <h2>Ключевые классы</h2>
+    <ol>
+      <li>{@link android.provider.CalendarContract.Calendars}</li>
+      <li>{@link android.provider.CalendarContract.Events}</li>
+      <li>{@link android.provider.CalendarContract.Attendees}</li>
+      <li>{@link android.provider.CalendarContract.Reminders}</li>
+    </ol>
+</div>
+</div>
+
+<p>Поставщик календаря представляет собой репозиторий для событий календаря пользователя. API
+поставщика календаря позволяет запрашивать, вставлять, обновлять и удалять календари,
+события, участников, напоминания и т. д.</p>
+
+
+<p>API поставщика календаря может использоваться как приложениями, так и адаптерами синхронизации. Правила
+зависят от типа программы, которая выполняет вызовы. В этой статье
+главным образом рассматривается использование API поставщика календаря в качестве приложения. Сведения о различиях
+между адаптерами синхронизации представлены в разделе
+<a href="#sync-adapter">Адаптеры синхронизации</a>.</p>
+
+
+<p>Обычно, чтобы считать или записать данные календаря, в манифесте приложения
+должны быть включены надлежащие разрешения, которые описываются в разделе <a href="#manifest">Разрешения
+пользователей</a>. Чтобы упростить выполнение часто используемых операций, в поставщике
+календаря предусмотрен набор намерений, как описано в разделе <a href="#intents">Намерения
+календаря</a>. Эти намерения позволяют пользователям переходить в приложение календаря для вставки, просмотра
+и редактирования событий. После взаимодействия пользователя с календарем он возвращается
+в исходное приложение. Поэтому вашему приложению не нужно запрашивать разрешения,
+а также предоставлять пользовательский интерфейс для просмотра или создания событий.</p>
+
+<h2 id="overview">Основы</h2>
+
+<p><a href="{@docRoot}guide/topics/providers/content-providers.html">Поставщики контента</a> хранят в себе данные и предоставляют к ним доступ
+для приложений. Поставщики контента, предлагаемые платформой Android (включая поставщик календаря) обычно представляют данные в виде набора таблиц, в основе
+которых лежит модель реляционной базы данных. Каждая строка в такой таблице представляет собой запись, а каждый столбец — данные
+определенного типа и значения. Благодаря API поставщика календаря приложения
+и адаптеры синхронизации получают доступ на чтение/запись к таблицам в базе данных, в которых
+представлены данные календаря пользователя.</p>
+
+<p>Каждый поставщик календаря предоставляет общедоступный URI (упакованный в объект
+{@link android.net.Uri}),
+который служит уникальным идентификатором своего набора данных.  Поставщик контента, который управляет
+несколькими наборами данных (несколькими таблицами), предоставляет отдельный URI для каждого набора.  Все
+URI поставщиков начинаются со строки content://.  Она
+определяет данные, которые находятся под управлением поставщика контента. Поставщик календаря
+задает константы для URI каждого из своих классов (таблиц). Такие
+URI имеют формат <code><em>&lt;class&gt;</em>.CONTENT_URI</code>. Например,
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.</p>
+
+<p>На рисунке 1 изображено графическое представление модели данных поставщика календаря. На нем представлены
+основные таблицы и поля, которые связывают их друг с другом.</p>
+
+<img src="{@docRoot}images/providers/datamodel.png" alt="Calendar Provider Data Model" />
+<p class="img-caption"><strong>Рисунок 1.</strong> Модель данных поставщика календаря.</p>
+
+<p>У пользователя может быть несколько календарей, причем они могут быть связаны с аккаунтами разных типов (Google Календарь, Exchange и т. д.).</p>
+
+<p>Класс {@link android.provider.CalendarContract} определяет модель данных календаря и информацию, относящуюся к событиям. Эти данные хранятся в различных таблицах, указанных ниже.</p>
+
+<table>
+  <tr>
+    <th>Таблица (класс)</th>
+    <th>Описание</th>
+  </tr>
+  <tr>
+    <td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
+    
+    <td>В этой таблице находится
+информация о календарях. В каждой строке этой таблицы представлены сведения
+об отдельном календаре, например, его название, цвет, информация о синхронизации и т. д.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Events}</td>
+    
+    <td>В этой таблице находится
+информация о событиях. В каждой строке этой таблицы содержится информация об отдельном
+событии &mdash;например, заголовок события, место проведения, время начала, время
+завершения и т. д. Событие может быть однократным или повторяющимся. Сведения об участниках,
+напоминаниях и расширенные свойства хранятся в отдельных таблицах. 
+В каждой из них имеется целочисленная переменная {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID},
+которая ссылается на объект {@link android.provider.BaseColumns#_ID} в таблице событий.</td>
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances}</td>
+    
+    <td>В этой таблице содержатся данные о времени
+начала и окончания каждого повторения события. В каждой строке этой таблицы
+представлено одно повторение события. Однократные события сопоставляются с повторениями
+один к одному. Для повторяющихся событий автоматически создаются несколько строк,
+которые соответствуют нескольким повторениям события.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Attendees}</td>
+    
+    <td>В этой таблице находится
+информация об участниках (гостях). В каждой строке этой таблицы указан один
+гость. В ней указываются тип гостя и информация о том,
+посетит ли он событие.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Reminders}</td>
+    
+    <td>В этой таблице находятся
+данные уведомлений или оповещений. В каждой строке этой таблицы указано одно уведомление или оповещение. Для одного
+события можно создать несколько напоминаний. Максимальное количество таких напоминаний для события
+задается с помощью
+целочисленной переменной {@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS},
+значение которой задает адаптер синхронизации, владеющий
+указанным календарем. Напоминания задаются в минутах до начала события и
+имеют метод, который определяет порядок уведомления пользователя.</td>
+  </tr>
+  
+</table>
+
+<p>API поставщика календаря обеспечивает достаточную гибкость и эффективность. В то же время
+важно предоставить интерфейс, который будет удобным для пользователя,
+и обеспечить защиту целостности календаря и его данных. Поэтому существует
+ряд моментов, которые следует учитывать при использовании этого API.</p>
+
+<ul>
+
+<li><strong>Вставка, обновление и просмотр событий календаря.</strong> Чтобы вставить, изменить и считать события напрямую из поставщика календаря, требуются соответствующие <a href="#manifest">разрешения</a>. Однако, если вы не планируете создавать полнофункциональное приложение календаря или адаптер синхронизации, запрашивать такие разрешения не обязательно. Вместо этого можно использовать намерения, поддерживаемые приложением «Календарь» Android, для обработки операций чтения и записи в этом приложении. При использовании намерений ваше приложение отправляет пользователям приложение «Календарь» для выполнения требуемой операции
+в предварительно заполненной форме. По завершении они возвращаются в приложение.
+Реализовав в вашем приложении возможность выполнения часто используемых операций через приложение «Календарь»,
+вы обеспечиваете для пользователей единообразный и функциональный пользовательский интерфейс. Мы рекомендуем использовать
+именно такой подход. Дополнительные сведения представлены в разделе <a href="#intents">Намерения
+календаря</a>.</p>
+
+
+<li><strong>Адаптеры синхронизации.</strong> Адаптер синхронизации синхронизирует данные календаря
+на устройстве пользователя с данными на сервере или в другом источнике данных. В таблицах
+{@link android.provider.CalendarContract.Calendars} и
+{@link android.provider.CalendarContract.Events} имеются
+столбцы, зарезервированные для адаптеров синхронизации.
+Ни поставщик, ни приложения не должны изменять их. Фактически они скрыты
+до тех пор, пока адаптер синхронизации не начнет использовать их. Дополнительные сведения об
+адаптерах синхронизации представлены в разделе <a href="#sync-adapter">Адаптеры синхронизации</a>.</li>
+
+</ul>
+
+
+<h2 id="manifest">Разрешения пользователей</h2>
+
+<p>Чтобы считать данные календаря, в файл манифеста приложения необходимо включить разрешение {@link
+android.Manifest.permission#READ_CALENDAR}. Также в него
+следует включить разрешение {@link android.Manifest.permission#WRITE_CALENDAR}
+для удаления, вставки или обновления данных календаря:</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;...&gt;
+    &lt;uses-sdk android:minSdkVersion=&quot;14&quot; /&gt;
+    &lt;uses-permission android:name=&quot;android.permission.READ_CALENDAR&quot; /&gt;
+    &lt;uses-permission android:name=&quot;android.permission.WRITE_CALENDAR&quot; /&gt;
+    ...
+&lt;/manifest&gt;
+</pre>
+
+
+<h2 id="calendar">Таблица календарей</h2>
+
+<p>В таблице {@link android.provider.CalendarContract.Calendars} содержатся подробные сведения
+о каждом отдельном календаре. Выполнять запись в указанные ниже столбцы
+этой таблицы могут и приложение, и <a href="#sync-adapter">адаптер синхронизации</a>. 
+Полный список поддерживаемых полей представлен в справке по классу
+{@link android.provider.CalendarContract.Calendars}.</p>
+<table>
+  <tr>
+    <th>Константа</th>
+    <th>Описание</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#NAME}</td>
+    <td>Название календаря.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#CALENDAR_DISPLAY_NAME}</td>
+    <td>Название этого календаря, которое отображается для пользователя.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
+    
+    <td>Логическое значение, обозначающее, выбран ли календарь для отображения. Значение
+«0» указывает на то, что события, связанные с
+этим календарем, не отображаются.  Значение «1» указывает на то, что события, связанные с
+этим календарем, отображаются. Это значение влияет на создание строк в таблице {@link
+android.provider.CalendarContract.Instances}.</td>
+
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
+    
+    <td>Логическое значение, обозначающее, следует ли синхронизировать календарь и хранить имеющиеся в нем события
+на устройстве. Значение «0» указывает, что не следует синхронизировать этот календарь или
+хранить имеющиеся в нем события на устройстве.  Значение «1» указывает, что этот календарь следует синхронизировать и
+хранить имеющиеся в нем события на устройстве.</td>
+  </tr>
+</table>
+
+<h3 id="query">Запрос календаря</h3>
+
+<p>Ниже представлен пример того, как получить календари, которыми
+владеет определенный пользователь. Для простоты демонстрации операция запроса в этом примере находится в
+потоке пользовательского интерфейса («основной поток»). На практике это следует делать в асинхронном
+потоке, а не в основном. Дополнительные сведения представлены в статье
+<a href="{@docRoot}guide/components/loaders.html">Загрузчики</a>. Если же вы не только
+считываете данные, но и вносите в них изменения, обратитесь к справке по классу {@link android.content.AsyncQueryHandler}.
+</p>
+
+
+<pre>
+// Projection array. Creating indices for this array instead of doing
+// dynamic lookups improves performance.
+public static final String[] EVENT_PROJECTION = new String[] {
+    Calendars._ID,                           // 0
+    Calendars.ACCOUNT_NAME,                  // 1
+    Calendars.CALENDAR_DISPLAY_NAME,         // 2
+    Calendars.OWNER_ACCOUNT                  // 3
+};
+  
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
+private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
+private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
+  
+
+<div class="sidebox-wrapper"> <div class="sidebox"> <h3>Зачем необходимо указывать параметр
+ACCOUNT_TYPE?</h3> <p>При создании запроса {@link
+android.provider.CalendarContract.Calendars#ACCOUNT_NAME
+Calendars.ACCOUNT_NAME} необходимо также
+указать
+{@link android.provider.CalendarContract.Calendars#ACCOUNT_TYPE Calendars.ACCOUNT_TYPE}. Это необходимо сделать ввиду того, что указанный аккаунт
+считается уникальным только тогда, когда для него указаны и параметр <code>ACCOUNT_NAME</code>, и параметр
+<code>ACCOUNT_TYPE</code>. Параметр <code>ACCOUNT_TYPE</code> в строке обозначает
+структуру проверки подлинности аккаунта, которая использовалась при регистрации аккаунта с помощью
+{@link android.accounts.AccountManager}. Существует также особый тип аккаунтов, называемый {@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}. Он используется для календарей,
+которые не связаны с аккаунтом устройства. Аккаунты {@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} не
+синхронизируются.</p> </div> </div> 
+
+
+<p> В следующей части примера создается запрос. С помощью выбора определяются
+критерии для запроса. В этом примере выполняется поиск
+календарей со следующими значениями параметров: <code>ACCOUNT_NAME</code>
+— sampleuser@google.com, <code>ACCOUNT_TYPE</code>
+— com.google и <code>OWNER_ACCOUNT</code>
+ — sampleuser@google.com. Для просмотра всех просмотренных
+пользователем календарей, а не только имеющихся у него, не указывайте параметр <code>OWNER_ACCOUNT</code>.
+Запрос возвращает объект {@link android.database.Cursor},
+который можно использовать для перебора результатов, возвращенных запросом к базе
+данных. Дополнительные сведения об использовании запросов в поставщиках контента
+представлены в статье <a href="{@docRoot}guide/topics/providers/content-providers.html">Поставщики контента</a>.</p>
+
+
+<pre>// Run query
+Cursor cur = null;
+ContentResolver cr = getContentResolver();
+Uri uri = Calendars.CONTENT_URI;   
+String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND (" 
+                        + Calendars.ACCOUNT_TYPE + " = ?) AND ("
+                        + Calendars.OWNER_ACCOUNT + " = ?))";
+String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
+        "sampleuser@gmail.com"}; 
+// Submit the query and get a Cursor object back. 
+cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
+
+<p>В следующем разделе кода выполняется пошаговый обзор набора результатов с помощью курсора. В нем
+используются константы, которые были заданы в начале примера, для получения значений
+для каждого из полей.</p>
+    
+<pre>// Use the cursor to step through the returned records
+while (cur.moveToNext()) {
+    long calID = 0;
+    String displayName = null;
+    String accountName = null;
+    String ownerName = null;
+      
+    // Get the field values
+    calID = cur.getLong(PROJECTION_ID_INDEX);
+    displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
+    accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
+    ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
+              
+    // Do something with the values...
+
+   ...
+}
+</pre>
+  
+<h3 id="modify-calendar">Изменение календаря</h3>
+
+<p>Чтобы обновить календарь, можно указать {@link
+android.provider.BaseColumns#_ID} календаря: либо в виде идентификатора,
+добавленного к URI
+
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}),
+либо в качестве первого элемента выделения. Выделение
+должно начинаться с <code>&quot;_id=?&quot;</code>, а первым аргументом
+<code>selectionArg</code> должен быть {@link
+android.provider.BaseColumns#_ID} календаря. 
+Также для выполнения обновлений можно закодировать идентификатор в URI. В этом примере для
+изменения отображаемого имени календаря используется
+подход
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}):</p>
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long calID = 2;
+ContentValues values = new ContentValues();
+// The new display name for the calendar
+values.put(Calendars.CALENDAR_DISPLAY_NAME, &quot;Trevor's Calendar&quot;);
+Uri updateUri = ContentUris.withAppendedId(Calendars.CONTENT_URI, calID);
+int rows = getContentResolver().update(updateUri, values, null, null);
+Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);</pre>
+
+<h3 id="insert-calendar">Вставка календаря</h2>
+
+<p>Для управления календарями в основном используются адаптеры синхронизации, поэтому
+новые календари следует вставлять исключительно как адаптер синхронизации. По большей части
+приложения могут вносить в календари только поверхностные изменения, такие как изменение отображаемого имени. Если
+приложению требуется создать локальный календарь, это можно сделать путем
+вставки календаря в виде адаптера синхронизации с помощью параметра {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} типа {@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}.
+{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
+представляет собой особый тип аккаунтов для календарей, которые не связаны
+с аккаунтом устройства. Календари этого типа не синхронизируются с сервером. Дополнительные сведения
+об адаптерах синхронизации представлены в статье <a href="#sync-adapter">Адаптеры синхронизации</a>.</p>
+
+<h2 id="events">Таблица событий</h2>
+
+<p>В таблице {@link android.provider.CalendarContract.Events} содержатся подробные сведения
+о каждом отдельном событии. Чтобы получить возможность добавлять, обновлять или удалять события,
+в <a href="#manifest">файл манифеста</a>
+приложения необходимо включить разрешение {@link android.Manifest.permission#WRITE_CALENDAR}.</p>
+
+<p>Выполнять запись в указанные ниже столбцы этой таблицы могут и приложение, и 
+адаптер синхронизации. Полный список поддерживаемых полей представлен в справке по классу {@link
+android.provider.CalendarContract.Events}.</p>
+
+<table>
+  <tr>
+    <th>Константа</th>
+    <th>Описание</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#CALENDAR_ID}</td>
+    <td>{@link android.provider.BaseColumns#_ID} календаря, к которому принадлежит событие.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#ORGANIZER}</td>
+    <td>Адрес эл. почты организатора (владельца) события.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#TITLE}</td>
+    <td>Название события.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION}</td>
+    <td>Место проведения. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION}</td>
+    <td>Описание события.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DTSTART}</td>
+    <td>Время начала события по UTC (в миллисекундах) от точки отсчета. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DTEND}</td>
+    <td>Время окончания события по UTC (в миллисекундах) от точки отсчета. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}</td>
+    <td>Часовой пояс события.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_END_TIMEZONE}</td>
+    <td>Часовой пояс для времени окончания события.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
+    
+    <td>Продолжительность события в формате <a href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RFC5545</a>.
+Например, значение <code>&quot;PT1H&quot;</code> обозначает, что событие
+должно длиться один час, а значение <code>&quot;P2W&quot;</code> указывает на продолжительность
+в 2 недели. </td>
+
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
+    
+    <td>Значение «1» обозначает, что это событие занимает весь день по
+местному часовому поясу. Значение «0» указывает на то, что это регулярное событие, которое может начаться
+и завершиться в любое время в течение дня.</td>
+
+    
+  </tr>
+  
+  
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
+    
+    <td>Правило повторения для формата события. Например,
+<code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code>. С другими
+примерами можно ознакомиться <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">здесь</a>.</td>
+    
+  </tr>
+  
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
+    <td>Даты повторения события. 
+Обычно {@link android.provider.CalendarContract.EventsColumns#RDATE}
+используется вместе с {@link android.provider.CalendarContract.EventsColumns#RRULE}
+для определения агрегированного набора
+повторяющихся событий. Дополнительные сведения представлены в <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.2">спецификации RFC5545</a>.</td>
+</tr>
+ 
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY}</td>
+    
+    <td>Если событие считается как занятое или как свободное время,
+ доступное для планирования. </td>
+    
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
+    <td>Указывает, могут ли гости вносить изменения в событие. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_INVITE_OTHERS}</td>
+    <td>Указывает, могут ли гости приглашать других гостей. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_SEE_GUESTS}</td>
+    <td>Указывает, могут ли гости просматривать список участников.</td>
+  </tr>
+</table>
+
+<h3 id="add-event">Добавление событий</h3>
+
+<p>Когда ваше приложение вставляет новое событие, мы рекомендуем использовать намерение
+{@link android.content.Intent#ACTION_INSERT INSERT}, как описано в разделе <a href="#intent-insert">Использование намерения для вставки события</a>. Однако при
+необходимости вы можете вставлять события напрямую. В этом разделе как раз описывается то, как это
+сделать.</p>
+
+
+<p>Ниже указаны правила, которыми следует руководствоваться для вставки нового события. </p>
+<ul>
+
+  <li>Необходимо указать {@link
+android.provider.CalendarContract.EventsColumns#CALENDAR_ID} и {@link
+android.provider.CalendarContract.EventsColumns#DTSTART}.</li>
+
+<li>Необходимо указать {@link
+android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}. Чтобы получить список
+установленных в системе идентификаторов часовых поясов, воспользуйтесь методом {@link
+java.util.TimeZone#getAvailableIDs()}. Обратите внимание, что это правило не применяется при
+вставке события с помощью намерения {@link
+android.content.Intent#ACTION_INSERT INSERT}, как описано в разделе <a href="#intent-insert">Использование намерения для вставки события</a>, &mdash; в этом
+случае используется часовой пояс по умолчанию.</li>
+  
+  <li>Для однократных событий необходимо указать {@link
+android.provider.CalendarContract.EventsColumns#DTEND}. </li>
+  
+  
+  <li>Для повторяющихся событий необходимо указать {@link
+android.provider.CalendarContract.EventsColumns#DURATION} в дополнение к {@link
+android.provider.CalendarContract.EventsColumns#RRULE} или {@link
+android.provider.CalendarContract.EventsColumns#RDATE}. Обратите внимание, что это правило не применяется при
+вставке события с помощью намерения {@link
+android.content.Intent#ACTION_INSERT INSERT}, как описано в разделе <a href="#intent-insert">Использование намерения для вставки события</a>, &mdash; в этом
+случае можно использовать {@link
+android.provider.CalendarContract.EventsColumns#RRULE} в сочетании с {@link android.provider.CalendarContract.EventsColumns#DTSTART} и {@link android.provider.CalendarContract.EventsColumns#DTEND}; кроме того, приложение «Календарь»
+ автоматически преобразует указанный период в продолжительность.</li>
+  
+</ul>
+
+<p>Ниже представлен пример вставки события. Для простоты все это выполняется в потоке
+пользовательского интерфейса. На практике же все вставки и обновления следует выполнять в
+асинхронном потоке, чтобы переместить операцию в фоновый поток. Дополнительные сведения представлены в справке по
+{@link android.content.AsyncQueryHandler}.</p>
+
+
+<pre>
+long calID = 3;
+long startMillis = 0; 
+long endMillis = 0;     
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2012, 9, 14, 7, 30);
+startMillis = beginTime.getTimeInMillis();
+Calendar endTime = Calendar.getInstance();
+endTime.set(2012, 9, 14, 8, 45);
+endMillis = endTime.getTimeInMillis();
+...
+
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Events.DTSTART, startMillis);
+values.put(Events.DTEND, endMillis);
+values.put(Events.TITLE, &quot;Jazzercise&quot;);
+values.put(Events.DESCRIPTION, &quot;Group workout&quot;);
+values.put(Events.CALENDAR_ID, calID);
+values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");
+Uri uri = cr.insert(Events.CONTENT_URI, values);
+
+// get the event ID that is the last element in the Uri
+long eventID = Long.parseLong(uri.getLastPathSegment());
+// 
+// ... do something with event ID
+//
+//</pre>
+
+<p class="note"><strong>Примечание.</strong> Ниже демонстрируется, как в примере кода выполняется захват
+идентификатора события после создания этого события. Это самый простой способ получить идентификатор события. Зачастую
+идентификатор события необходим для выполнения других действий с календарем &mdash; например, для добавления участников или
+напоминаний о событии.</p>
+
+
+<h3 id="update-event">Обновление событий</h3>
+
+<p>Когда ваше приложение хочет предоставить пользователю возможность изменить событие, мы рекомендуем использовать намерение
+{@link android.content.Intent#ACTION_EDIT EDIT}, как описано в разделе
+<a href="#intent-edit">Использование намерения для вставки события</a>.
+Однако при необходимости вы можете редактировать события напрямую. Чтобы обновить
+событие, можно указать
+<code>_ID</code> события: либо в виде идентификатора, добавленного к URI({@link
+android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}),
+либо в качестве первого элемента выделения. Выделение
+должно начинаться с <code>&quot;_id=?&quot;</code>, а первым аргументом
+<code>selectionArg</code> должен быть <code>_ID</code> события. Также можно обновлять
+выделения без идентификаторов. Ниже представлен пример обновления
+события. Это пример изменения названия события с помощью
+метода
+{@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}:</p>
+
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long eventID = 188;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+Uri updateUri = null;
+// The new title for the event
+values.put(Events.TITLE, &quot;Kickboxing&quot;); 
+updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+int rows = getContentResolver().update(updateUri, values, null, null);
+Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);  </pre>
+
+<h3 id="delete-event">Удаление событий</h3>
+
+<p>Удалить событие можно по его {@link
+android.provider.BaseColumns#_ID}, который добавлен в качестве идентификатора к URI, или с помощью
+стандартного выделения. В случае использования добавленного идентификатора невозможно также выполнить и выделение.
+Существует две версии операции удаления: для приложения и для адаптера синхронизации. При удалении
+для приложения в столбце <em>deleted</em> устанавливается значение «1». Этот флаг
+сообщает адаптеру синхронизации о том, что строка была удалена и информацию об удалении следует
+передать серверу. При удалении для адаптера синхронизации событие удаляется из
+базы данных вместе со всеми связанными с ним данными. Ниже представлен пример удаления
+события для приложения по его {@link android.provider.BaseColumns#_ID}.</p>
+
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long eventID = 201;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+Uri deleteUri = null;
+deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+int rows = getContentResolver().delete(deleteUri, null, null);
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);  
+</pre>
+
+<h2 id="attendees">Таблица участников</h2>
+
+<p>В каждой строке таблицы {@link android.provider.CalendarContract.Attendees}
+указан один участник или гость события. При вызове метода
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}
+возвращается список участников для события
+с заданным {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}. 
+Этот {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
+должен соответствовать {@link
+android.provider.BaseColumns#_ID} определенного события.</p> 
+
+<p>В таблице ниже указаны
+поля, доступные для записи. При вставке нового участника необходимо указать все эти поля, кроме
+<code>ATTENDEE_NAME</code>.
+</p>
+
+
+<table>
+  <tr>
+    <th>Константа</th>
+    <th>Описание</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}</td>
+    <td>Идентификатор события.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_NAME}</td>
+    <td>Имя участника.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_EMAIL}</td>
+    <td>Адрес эл. почты участника.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_RELATIONSHIP}</td>
+    <td><p>Связь участника с событием. Одно из следующего:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_ATTENDEE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_NONE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_ORGANIZER}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_PERFORMER}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_SPEAKER}</li>
+    </ul>
+    </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_TYPE}</td>
+    <td><p>Тип участника. Одно из следующего: </p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#TYPE_REQUIRED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#TYPE_OPTIONAL}</li>
+    </ul></td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS}</td>
+    <td><p>Статус посещения события участником. Одно из следующего:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_ACCEPTED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_DECLINED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_INVITED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_NONE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_TENTATIVE}</li>
+    </ul></td>
+  </tr>
+</table>
+
+<h3 id="add-attendees">Добавление участников</h3>
+
+<p>Ниже представлен пример добавления одного участника события. Обратите внимание, что нужно в обязательном порядке
+указать
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}.</p>
+
+<pre>
+long eventID = 202;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Attendees.ATTENDEE_NAME, &quot;Trevor&quot;);
+values.put(Attendees.ATTENDEE_EMAIL, &quot;trevor@example.com&quot;);
+values.put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ATTENDEE);
+values.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_OPTIONAL);
+values.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_INVITED);
+values.put(Attendees.EVENT_ID, eventID);
+Uri uri = cr.insert(Attendees.CONTENT_URI, values);
+</pre>
+
+<h2 id="reminders">Таблица напоминаний</h2>
+
+<p>В каждой строке таблицы {@link android.provider.CalendarContract.Reminders}
+указано одно напоминание о событии. При вызове метода
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}возвращается список напоминаний для события
+с заданным 
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}.</p>
+
+
+<p>В таблице ниже указаны поля, доступные для записи. При вставке нового
+напоминания необходимо указать все эти поля. Обратите внимание, что адаптеры синхронизации задают
+типы напоминаний, которые они поддерживают, в таблице {@link
+android.provider.CalendarContract.Calendars}. Подробные сведения см.
+в справке по
+{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}.</p>
+
+
+<table>
+  <tr>
+    <th>Константа</th>
+    <th>Описание</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#EVENT_ID}</td>
+    <td>Идентификатор события.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#MINUTES}</td>
+    <td>Время срабатывания уведомления (в минутах) до начала события.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#METHOD}</td>
+    <td><p>Метод уведомления, заданный на сервере. Одно из следующего:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_ALERT}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_DEFAULT}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_EMAIL}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_SMS}</li>
+    </ul></td>
+  </tr>
+</table>
+
+<h3 id="add-reminders">Добавление напоминаний</h3>
+
+<p>Ниже представлен пример добавления напоминания в событие. Напоминание срабатывает за 15
+минут до начала события.</p>
+<pre>
+long eventID = 221;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Reminders.MINUTES, 15);
+values.put(Reminders.EVENT_ID, eventID);
+values.put(Reminders.METHOD, Reminders.METHOD_ALERT);
+Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
+
+<h2 id="instances">Таблица экземпляров</h2>
+
+<p>В таблице
+{@link android.provider.CalendarContract.Instances} содержатся данные о времени
+начала и окончания повторений события. В каждой строке этой таблицы
+представлено одно повторение события. Таблица экземпляров недоступна для записи; она предоставляет только
+возможность запрашивать повторения событий. </p>
+
+<p>В таблице ниже перечислены некоторые из полей, которые можно запросить для экземпляра. Обратите внимание,
+что часовой пояс задается параметрами 
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE} 

+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES}.</p>
+
+
+<table>
+  <tr>
+    <th>Константа</th>
+    <th>Описание</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#BEGIN}</td>
+    <td>Время начала экземпляра в формате UTC (в миллисекундах).</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END}</td>
+    <td>Время окончания экземпляра в формате UTC (в миллисекундах).</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
+    
+    <td>День окончания экземпляра по юлианскому календарю относительно часового пояса
+приложения «Календарь». 
+    
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
+    
+    <td>Минута окончания экземпляра, вычисленная от полуночи по часовому поясу
+приложения «Календарь».</td>
+    
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
+    <td><code>_ID</code> события для этого экземпляра.</td>
+  </tr>
+    <tr>
+    <td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
+    <td>День начала экземпляра по юлианскому календарю относительно часового пояса приложения «Календарь». 
+ </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
+    
+    <td>Минута начала экземпляра, вычисленная от полуночи по часовому поясу
+приложения «Календарь». 
+</td>
+    
+  </tr>
+
+</table>
+
+<h3 id="query-instances">Запрос таблицы экземпляров</h3>
+
+<p>Чтобы запросить таблицу экземпляров, необходимо указать промежуток времени для запроса в 
+URI. В этом примере {@link android.provider.CalendarContract.Instances}
+получает доступ к полю {@link
+android.provider.CalendarContract.EventsColumns#TITLE} посредством своей реализации
+интерфейса {@link android.provider.CalendarContract.EventsColumns}. 
+Другими словами, {@link
+android.provider.CalendarContract.EventsColumns#TITLE}
+возвращается посредством обращения к базе данных, а не путем запроса таблицы {@link
+android.provider.CalendarContract.Instances} с необработанными данными.</p>
+
+<pre>
+private static final String DEBUG_TAG = "MyActivity";
+public static final String[] INSTANCE_PROJECTION = new String[] {
+    Instances.EVENT_ID,      // 0
+    Instances.BEGIN,         // 1
+    Instances.TITLE          // 2
+  };
+  
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_BEGIN_INDEX = 1;
+private static final int PROJECTION_TITLE_INDEX = 2;
+...
+
+// Specify the date range you want to search for recurring
+// event instances
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2011, 9, 23, 8, 0);
+long startMillis = beginTime.getTimeInMillis();
+Calendar endTime = Calendar.getInstance();
+endTime.set(2011, 10, 24, 8, 0);
+long endMillis = endTime.getTimeInMillis();
+  
+Cursor cur = null;
+ContentResolver cr = getContentResolver();
+
+// The ID of the recurring event whose instances you are searching
+// for in the Instances table
+String selection = Instances.EVENT_ID + " = ?";
+String[] selectionArgs = new String[] {"207"};
+
+// Construct the query with the desired date range.
+Uri.Builder builder = Instances.CONTENT_URI.buildUpon();
+ContentUris.appendId(builder, startMillis);
+ContentUris.appendId(builder, endMillis);
+
+// Submit the query
+cur =  cr.query(builder.build(), 
+    INSTANCE_PROJECTION, 
+    selection, 
+    selectionArgs, 
+    null);
+   
+while (cur.moveToNext()) {
+    String title = null;
+    long eventID = 0;
+    long beginVal = 0;    
+    
+    // Get the field values
+    eventID = cur.getLong(PROJECTION_ID_INDEX);
+    beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
+    title = cur.getString(PROJECTION_TITLE_INDEX);
+              
+    // Do something with the values. 
+    Log.i(DEBUG_TAG, "Event:  " + title); 
+    Calendar calendar = Calendar.getInstance();
+    calendar.setTimeInMillis(beginVal);  
+    DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
+    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));    
+    }
+ }</pre>
+
+<h2 id="intents">Намерения календаря</h2>
+<p>Вашему приложению не нужно запрашивать <a href="#manifest">разрешения</a> на чтение и запись данных календаря. Вместо этого можно использовать намерения, поддерживаемые приложением «Календарь» Android, для обработки операций чтения и записи в этом приложении. В таблице ниже указаны намерения, поддерживаемые поставщиком календаря.</p>
+<table>
+  <tr>
+    <th>Действие</th>
+    <th>URI</th>
+
+    <th>Описание</th>
+    <th>Дополнительные данные</th>
+  </tr>
+  <tr>
+    <td><br>
+    {@link android.content.Intent#ACTION_VIEW VIEW} <br></td>
+    <td><p><code>content://com.android.calendar/time/&lt;ms_since_epoch&gt;</code></p>
+    Сослаться на URI также можно с помощью
+{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}. 
+Пример использования этого намерения представлен в разделе <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Использование намерений для просмотра данных календаря</a>. 
+
+    </td>
+    <td>Открытие календаря во время, заданное параметром <code>&lt;ms_since_epoch&gt;</code>.</td>
+    <td>Отсутствуют.</td>
+  </tr>
+  <tr>
+    <td><p>{@link android.content.Intent#ACTION_VIEW VIEW} </p>
+
+     </td>
+    <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
+    
+    Сослаться на URI также можно с помощью
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}. 
+Пример использования этого намерения представлен в разделе <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Использование намерений для просмотра данных календаря</a>.
+    
+    </td>
+    <td>Просмотр события, указанного с помощью <code>&lt;event_id&gt;</code>.</td>
+
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}<br>
+      <br>
+      <br>
+    {@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}</td>
+  </tr>
+
+  <tr>
+    <td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
+    <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
+    
+  Сослаться на URI также можно с помощью
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}. 
+Пример использования этого намерения представлен в разделе <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">Использование намерения для редактирования события</a>.
+    
+    
+    </td>
+    <td>Редактирование события, указанного с помощью <code>&lt;event_id&gt;</code>.</td>
+
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}<br>
+      <br>
+      <br>
+    {@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}</td>
+  </tr>
+
+  <tr>
+    <td>{@link android.content.Intent#ACTION_EDIT EDIT} <br>
+    <br>
+    {@link android.content.Intent#ACTION_INSERT INSERT} </td>
+    <td><p><code>content://com.android.calendar/events</code></p>
+    
+   Сослаться на URI также можно с помощью
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}. 
+Пример использования этого намерения представлен в разделе <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">Использование намерения для редактирования события</a>.
+    
+    </td>
+
+    <td>Создание события.</td>
+    <td>Любые из дополнительных данных, указанных в таблице ниже.</td>
+  </tr>
+</table>
+
+<p>В таблице ниже указаны дополнительные данные намерения, которые поддерживаются поставщиком календаря.
+</p>
+<table>
+  <tr>
+    <th>Дополнительные данные намерения</th>
+    <th>Описание</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#TITLE Events.TITLE}</td>
+    <td>Название события.</td>
+  </tr>
+  <tr>
+  
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
+CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
+    <td>Время начала события (в миллисекундах) от эпохи.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME
+CalendarContract.EXTRA_EVENT_END_TIME}</td>
+    
+    <td>Время окончания события (в миллисекундах) от эпохи.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY
+CalendarContract.EXTRA_EVENT_ALL_DAY}</td>
+    
+    <td>Логическое значение, обозначающее, что это событие на весь день. Значение может быть
+<code>true</code> или <code>false</code>.</td> </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION
+Events.EVENT_LOCATION}</td>
+    
+    <td>Место проведения события.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION
+Events.DESCRIPTION}</td>
+    
+    <td>Описание события.</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}</td>
+    <td>Адреса эл. почты приглашенных (через запятую).</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.provider.CalendarContract.EventsColumns#RRULE Events.RRULE}</td>
+    <td>Правило повторения для события.</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL
+Events.ACCESS_LEVEL}</td>
+    
+    <td>Указывает на то, является ли событие общедоступным или закрытым.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY
+Events.AVAILABILITY}</td>
+    
+    <td>Если событие считается как занятое или как свободное время, доступное для планирования.</td>
+    
+</table> 
+<p>В разделах ниже указан порядок использования этих намерений.</p>
+
+
+<h3 id="intent-insert">Использование намерения для вставки события</h3>
+
+<p>С помощью намерения {@link android.content.Intent#ACTION_INSERT INSERT}
+ваше приложение может отправлять задачи вставки события прямо в приложение «Календарь».
+Благодаря этому в <a href="#manifest">файл манифеста</a> вашего приложения не нужно включать разрешение {@link
+android.Manifest.permission#WRITE_CALENDAR}.</p>
+
+  
+<p>Когда пользователи работают с приложением, в котором используется такой подход, приложение отправляет
+их в «Календарь» для завершения добавления события. Намерение {@link
+android.content.Intent#ACTION_INSERT INSERT} использует дополнительные поля
+для предварительного указания в форме сведений о событии в приложении «Календарь». После этого пользователи
+могут отменить событие, отредактировать форму или сохранить событие в своем
+календаре.</p>
+  
+
+
+<p>Ниже представлен фрагмент кода, в котором на 19 января 2012 г. планируется событие, которое будет проходить с
+7:30 до 8:30. Однако следует учесть некоторые моменты, касающиеся этого примера кода.</p>
+
+<ul>
+  <li>В качестве URI в нем задается
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.</li>
+  
+  <li>В нем используются дополнительные поля {@link
+android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
+CalendarContract.EXTRA_EVENT_BEGIN_TIME} и {@link
+android.provider.CalendarContract#EXTRA_EVENT_END_TIME
+CalendarContract.EXTRA_EVENT_END_TIME} для предварительного указания в форме
+сведений о времени события. Значения времени должны быть указаны в формате UTC и в миллисекундах от
+эпохи.</li>
+  
+  <li>В нем используется дополнительное поле {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}
+для предоставления списка участников, разделенных запятыми (их адреса эл. почты).</li>
+  
+</ul>
+<pre>
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2012, 0, 19, 7, 30);
+Calendar endTime = Calendar.getInstance();
+endTime.set(2012, 0, 19, 8, 30);
+Intent intent = new Intent(Intent.ACTION_INSERT)
+        .setData(Events.CONTENT_URI)
+        .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())
+        .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis())
+        .putExtra(Events.TITLE, &quot;Yoga&quot;)
+        .putExtra(Events.DESCRIPTION, &quot;Group class&quot;)
+        .putExtra(Events.EVENT_LOCATION, &quot;The gym&quot;)
+        .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY)
+        .putExtra(Intent.EXTRA_EMAIL, &quot;rowan@example.com,trevor@example.com&quot;);
+startActivity(intent);
+</pre>
+
+<h3 id="intent-edit">Использование намерения для редактирования события</h3>
+
+<p>Событие можно отредактировать напрямую, как описано в разделе <a href="#update-event">Обновление событий</a>. Благодаря намерению {@link
+android.content.Intent#ACTION_EDIT EDIT} приложение,
+у которого нет разрешения, может делегировать редактирование события приложению «Календарь».
+По завершении редактирования события в приложении «Календарь» пользователи возвращаются
+в исходное приложение.</p> <p>Ниже представлен пример намерения, который задает
+новый заголовок для указанного события и позволяет пользователям редактировать событие в приложении «Календарь».</p>
+
+
+<pre>long eventID = 208;
+Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+Intent intent = new Intent(Intent.ACTION_EDIT)
+    .setData(uri)
+    .putExtra(Events.TITLE, &quot;My New Title&quot;);
+startActivity(intent);</pre>
+
+<h3 id="intent-view">Использование намерений для просмотра данных календаря</h3>
+<p>Поставщик календаря позволяет использовать намерение {@link android.content.Intent#ACTION_VIEW VIEW} двумя различными способами:</p>
+<ul>
+  <li>Открытие приложения «Календарь» на определенной дате.</li>
+  <li>Просмотр события.</li>
+
+</ul>
+<p>Ниже представлен пример открытия приложения «Календарь» на определенной дате.</p>
+<pre>// A date-time specified in milliseconds since the epoch.
+long startMillis;
+...
+Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
+builder.appendPath(&quot;time&quot;);
+ContentUris.appendId(builder, startMillis);
+Intent intent = new Intent(Intent.ACTION_VIEW)
+    .setData(builder.build());
+startActivity(intent);</pre>
+
+<p>Ниже представлен пример открытия события для его просмотра.</p>
+<pre>long eventID = 208;
+...
+Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+Intent intent = new Intent(Intent.ACTION_VIEW)
+   .setData(uri);
+startActivity(intent);
+</pre>
+
+
+<h2 id="sync-adapter">Адаптеры синхронизации</h2>
+
+
+<p>Существуют лишь незначительные различия в том, как приложение и адаптер синхронизации
+получают доступ к поставщику календаря.</p>
+
+<ul>
+  <li>Адаптеру синхронизации необходимо указать, что он является таковым, задав для параметра {@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER} значение <code>true</code>.</li>
+  
+  
+  <li>Адаптеру синхронизации необходимо предоставить {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME} и {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} в качестве параметров запроса в URI. </li>
+  
+  <li>Адаптер синхронизации имеет доступ на запись к большему числу столбцов, чем приложение или виджет.
+  Например, приложение может изменять только некоторые характеристики календаря,
+такие как название, отображаемое имя, настройки видимости и
+синхронизации. Тогда как адаптер синхронизации имеет доступ не только к этим столбцам, но и ко многим другим его характеристикам,
+таким как цвет календаря, часовой пояс, уровень доступа, местоположение и т. д.
+Однако адаптер синхронизации ограничен задаваемыми им параметрами <code>ACCOUNT_NAME</code> и
+<code>ACCOUNT_TYPE</code>.</li> </ul>
+
+<p>Ниже представлен метод, который можно использовать, чтобы получить URI для использования вместе с адаптером синхронизации.</p>
+<pre> static Uri asSyncAdapter(Uri uri, String account, String accountType) {
+    return uri.buildUpon()
+        .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,&quot;true&quot;)
+        .appendQueryParameter(Calendars.ACCOUNT_NAME, account)
+        .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
+ }
+</pre>
+<p>Пример реализации адаптера синхронизации (который не связан с приложением «Календарь») представлен в статье, посвященной
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>.
diff --git a/docs/html-intl/intl/ru/guide/topics/providers/contacts-provider.jd b/docs/html-intl/intl/ru/guide/topics/providers/contacts-provider.jd
new file mode 100644
index 0000000..4d07856
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/providers/contacts-provider.jd
@@ -0,0 +1,2356 @@
+page.title=Поставщик контактов
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Краткое описание</h2>
+<ul>
+    <li>Репозиторий Android с пользовательскими данными.</li>
+    <li>
+        Синхронизация со службами в Интернете.
+    </li>
+    <li>
+        Интеграция с потоками данных из социальных сетей.
+    </li>
+</ul>
+<h2>Содержание документа</h2>
+<ol>
+    <li>
+        <a href="#InformationTypes">Структура поставщика контактов</a>
+    </li>
+    <li>
+        <a href="#RawContactBasics">Необработанные контакты</a>
+    </li>
+    <li>
+        <a href="#DataBasics">Данные</a>
+    </li>
+    <li>
+        <a href="#ContactBasics">Контакты</a>
+    </li>
+    <li>
+        <a href="#Sources">Данные, полученные от адаптеров синхронизации</a>
+    </li>
+    <li>
+        <a href="#Permissions">Требуемые разрешения</a>
+    </li>
+    <li>
+        <a href="#UserProfile">Профиль пользователя</a>
+    </li>
+    <li>
+        <a href="#ContactsProviderMetadata">Метаданные поставщика контактов</a>
+    </li>
+    <li>
+        <a href="#Access">Доступ к поставщику контактов</a>
+    <li>
+    </li>
+    <li>
+        <a href="#SyncAdapters">Адаптеры синхронизации поставщика контактов</a>
+    </li>
+    <li>
+        <a href="#SocialStream">Потоки данных из социальных сетей</a>
+    </li>
+    <li>
+        <a href="#AdditionalFeatures">Дополнительные возможности поставщика контактов</a>
+    </li>
+</ol>
+<h2>Ключевые классы</h2>
+<ol>
+    <li>{@link android.provider.ContactsContract.Contacts}</li>
+    <li>{@link android.provider.ContactsContract.RawContacts}</li>
+    <li>{@link android.provider.ContactsContract.Data}</li>
+    <li>{@code android.provider.ContactsContract.StreamItems}</li>
+</ol>
+<h2>Образцы кода по теме</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}resources/samples/ContactManager/index.html">
+Диспетчер контактов
+</a>
+    </li>
+    <li>
+        <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+Пример адаптера синхронизации</a>
+    </li>
+</ol>
+<h2>См. также:</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+Основные сведения о поставщике контента
+</a>
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    Поставщик контактов представляет собой эффективный и гибкий компонент Android, который управляет
+центральным репозиторием устройства, в котором хранятся пользовательские данные. Поставщик контактов — это источник данных,
+которые отображаются в приложении «Контакты» на вашем устройстве. Вы также можете получить доступ к этим данным в своем собственном
+приложении и организовать обмен такими данными между устройством и службами в Интернете. Поставщик взаимодействует
+с широким набором источников данных и пытается организовать управление как можно большим набором данных о каждом человеке, поэтому
+организация поставщика довольно сложная. По этой причине API поставщика
+содержит широкий набор классов-контрактов и интерфейсов, отвечающих как за получение данных, так и за их
+изменение.
+</p>
+<p>
+    В этом руководстве рассматриваются следующие вопросы:
+</p>
+    <ul>
+        <li>
+            основная структура поставщика;
+        </li>
+        <li>
+            порядок получения данных от поставщика;
+        </li>
+        <li>
+            порядок изменения данных в поставщике;
+        </li>
+        <li>
+            порядок записи адаптера синхронизации для синхронизации данных, полученных с вашего сервера, с данными в
+поставщике контактов.
+        </li>
+    </ul>
+<p>
+    При изучении данного материала подразумевается, что вы уже знакомы с основами поставщиков контента Android. Дополнительные сведения
+о поставщиках контента Android представлены в руководстве
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">Основные
+сведения о поставщике контента</a>. Пример
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">адаптера синхронизации</a>
+служит примером использования такого приложения для обмена данными между поставщиком
+контактов и приложением, размещенным в веб-службах Google.
+</p>
+<h2 id="InformationTypes">Структура поставщика контактов</h2>
+<p>
+    Поставщик контактов представляет собой поставщик контента Android. Он содержит в себе три типа
+данных о пользователе, каждый из которых указан в отдельной таблице, предоставляемой поставщиком,
+как показано на рисунке 1.
+</p>
+<img src="{@docRoot}images/providers/contacts_structure.png" alt="" height="364" id="figure1" />
+<p class="img-caption">
+  <strong>Рисунок 1.</strong> Структура таблицы поставщика контактов.
+</p>
+<p>
+    В качестве имен этих трех таблиц обычно используются названия соответствующих классов-контрактов. Эти классы
+определяют константы для URI контента, названий столбцов и значений в столбцах этих таблиц.
+</p>
+<dl>
+    <dt>
+        Таблица {@link android.provider.ContactsContract.Contacts}
+    </dt>
+    <dd>
+        Строки в этой таблице содержат данные о разных пользователях, полученные путем агрегации строк необработанных контактов.
+    </dd>
+    <dt>
+        Таблица {@link android.provider.ContactsContract.RawContacts}
+    </dt>
+    <dd>
+        Строки в этой таблице содержат сводные данные о пользователе, относящиеся к пользовательскому аккаунту и его типу.
+    </dd>
+    <dt>
+        Таблица {@link android.provider.ContactsContract.Data}
+    </dt>
+    <dd>
+        Строки в этой таблице содержат сведения о необработанных контактах, такие как адреса эл. почты или номера телефонов.
+    </dd>
+</dl>
+<p>
+    Другие таблицы, представленные классами-контрактами в {@link android.provider.ContactsContract},
+представляют собой вспомогательные таблицы, которые поставщик контактов использует для управления своими операциями или поддержки
+определенных функций, имеющихся в приложении устройства «Контакты» или приложениях для телефонной связи.
+</p>
+<h2 id="RawContactBasics">Необработанные контакты</h2>
+<p>
+    Необработанный контакт представляет собой данные о пользователе, поступающие из одного аккаунта определенного
+типа. Поскольку в качестве источника данных о пользователе в поставщике контактов может выступать сразу несколько онлайн-служб,
+для одного и того же пользователя в поставщике контактов может существовать несколько необработанных контактов.
+    Это также позволяет пользователю объединять пользовательские данные из нескольких аккаунтов
+одного и того же типа.
+</p>
+<p>
+    Большая часть данных необработанного контакта не хранится в таблице
+{@link android.provider.ContactsContract.RawContacts}. Вместо этого они хранятся в одной или нескольких
+строках в таблице {@link android.provider.ContactsContract.Data}. В каждой строке данных имеется
+столбец {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID Data.RAW_CONTACT_ID},
+в котором содержится значение {@code android.provider.BaseColumns#_ID RawContacts._ID} его
+родительской строки{@link android.provider.ContactsContract.RawContacts}.
+</p>
+<h3 id="RawContactsColumns">Важные столбцы необработанных контактов</h3>
+<p>
+    В таблице 1 указаны столбцы таблицы {@link android.provider.ContactsContract.RawContacts},
+которые имеют большое значение. Обязательно ознакомьтесь с примечаниями, приведенными после этой таблицы.
+</p>
+<p class="table-caption" id="table1">
+    <strong>Таблица 1.</strong> Важные столбцы необработанных контактов.
+</p>
+<table>
+    <tr>
+        <th scope="col">Название столбца</th>
+        <th scope="col">Использование</th>
+        <th scope="col">Примечания</th>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_NAME}
+        </td>
+        <td>
+            Имя аккаунта для типа аккаунта, который выступает в роли источника данных для необработанного контакта.
+            Например, имя аккаунта Google является одним из эл. адресов почты Gmail
+владельца устройства. Дополнительные сведения
+см. в следующей записи
+{@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}.
+        </td>
+        <td>
+            Формат этого имени зависит от типа аккаунта. Это не обязательно
+адрес эл. почты.
+        </td>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}
+        </td>
+        <td>
+            Тип аккаунта, который выступает в роли источника данных для необработанного контакта. Например, тип аккаунта
+Google — <code>com.google</code>. Всегда указывайте тип аккаунта
+и идентификатор домена, которым вы владеете или управляете. Это позволит гарантировать уникальность
+типа вашего аккаунта.
+        </td>
+        <td>
+            У типа аккаунта, выступающего в роли источника данных контактов, обычно имеется связанный с ним адаптер синхронизации,
+который синхронизирует данные с поставщиком контактов.
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.RawContactsColumns#DELETED}
+        </td>
+        <td>
+            Флаг deleted для необработанного контакта.
+        </td>
+        <td>
+            Этот флаг позволяет поставщику контактов хранить строку внутри себя до тех пор,
+пока адаптеры синхронизации не смогут удалить эту строку с серверов, а затем
+удалить ее из репозитория.
+        </td>
+    </tr>
+</table>
+<h4>Примечания</h4>
+<p>
+    Ниже представлены важные примечания к таблице
+{@link android.provider.ContactsContract.RawContacts}.
+</p>
+<ul>
+    <li>
+        Имя необработанного контакта не хранится в его строке в таблице
+{@link android.provider.ContactsContract.RawContacts}. Вместо этого оно хранится в
+таблице {@link android.provider.ContactsContract.Data}
+в строке {@link android.provider.ContactsContract.CommonDataKinds.StructuredName}. У необработанного контакта
+имеется в таблице {@link android.provider.ContactsContract.Data} только одна строка такого типа.
+    </li>
+    <li>
+        <strong>Внимание!</strong> Чтобы использовать в строке необработанного контакта данные собственного аккаунта, строку
+, сначала необходимо зарегистрировать его в классе {@link android.accounts.AccountManager}. Для этого предложите
+пользователям добавить тип аккаунта и его имя в список аккаунтов. Если
+не сделать этого, поставщик контактов автоматически удалит вашу строку необработанного контакта.
+        <p>
+            Например, если необходимо, чтобы в вашем приложении хранились данные контактов для веб-службы
+в домене {@code com.example.dataservice}, и аккаунт пользователя службы
+ выглядит следующим образом:{@code becky.sharp@dataservice.example.com}, то пользователю сначала необходимо добавить
+«тип» аккаунта ({@code com.example.dataservice}) и его «имя»
+({@code becky.smart@dataservice.example.com}) прежде чем ваше приложение сможет добавлять строки необработанных контактов.
+            Это требование можно указать в документации для пользователей, а также можно предложить
+пользователю добавить тип и имя своего аккаунта, либо реализовать оба этих варианта. Более подробно типы и имена аккаунтов
+рассматриваются в следующем разделе.
+    </li>
+</ul>
+<h3 id="RawContactsExample">Источники данных необработанных контактов</h3>
+<p>
+    Чтобы понять, что такое необработанный контакт, рассмотрим пример с пользователем Emily Dickinson, на устройстве которой имеется три
+следующих аккаунта:
+</p>
+<ul>
+    <li><code>emily.dickinson@gmail.com</code>;</li>
+    <li><code>emilyd@gmail.com</code>;</li>
+    <li>Аккаунт belle_of_amherst в Twitter</li>
+</ul>
+<p>
+    Она включила функцию <em>Синхронизировать контакты</em> для всех трех этих аккаунтов
+в настройках <em>Аккаунты</em>.
+</p>
+<p>
+    Предположим, что Emily Dickinson открывает браузер, входит в Gmail под именем
+<code>emily.dickinson@gmail.com</code>, затем открывает
+Контакты и добавляет новый контакт Thomas Higginson. Позже она снова входит в Gmail под именем
+<code>emilyd@gmail.com</code> и отправляет письмо пользователю Thomas Higginson, который автоматически
+добавляется в ее контакты. Также она подписана на новости от colonel_tom (аккаунт пользователя Thomas Higginson в Twitter) в
+Twitter.
+</p>
+<p>
+    В результате этих действий поставщик контактов создает три необработанных контакта:
+</p>
+<ol>
+    <li>
+        Необработанный контакт Thomas Higginson связан с аккаунтом <code>emily.dickinson@gmail.com</code>.
+        Тип этого аккаунта — Google.
+    </li>
+    <li>
+        Второй необработанный контакт Thomas Higginson связан с аккаунтом <code>emilyd@gmail.com</code>.
+        Тип этого аккаунта — также Google. Второй необработанный контакт создается даже в том случае,
+если его имя полностью совпадает с именем предыдущего контакта, поскольку первый
+был добавлен для другого аккаунта.
+    </li>
+    <li>
+        Третий необработанный контакт Thomas Higginson связан с аккаунтом belle_of_amherst. Тип этого аккаунта
+— Twitter.
+    </li>
+</ol>
+<h2 id="DataBasics">Данные</h2>
+<p>
+    Как уже указывалось ранее, данные необработанного контакта
+хранятся в строке {@link android.provider.ContactsContract.Data}, которая связана со значением
+<code>_ID</code> необработанного контакта. Благодаря этому для одного необработанного контакта может существовать несколько экземпляров
+одного и того же типа данных (например, адресов эл. почты или номеров телефонов). Например, если у контакта
+Thomas Higginson для аккаунта {@code emilyd@gmail.com} (строка необработанного контакта Thomas Higginson,
+связанная с учетной записью Google <code>emilyd@gmail.com</code>) имеется адрес эл. почты
+<code>thigg@gmail.com</code> и служебный адрес эл. почты
+<code>thomas.higginson@gmail.com</code>, то поставщик контактов сохраняет две строки
+адреса эл. почты и связывает их с этим необработанным контактом.
+</p>
+<p>
+    Обратите внимание, что в этой таблице хранятся данные разных типов. Строки со сведениями об отображаемом имени,
+номере телефона, адресе эл. почты, почтовом адресе, фото и веб-сайте хранятся в таблице
+{@link android.provider.ContactsContract.Data}. Для упрощения управления этими данными в таблице
+{@link android.provider.ContactsContract.Data} предусмотрены столбцы с описательными именами,
+а также другие столбцы с универсальными именами. Содержимое в столбце с описательным именем имеет то же значение,
+независимо от типа данных в строке, тогда как содержимое столбца с универсальным именем
+может иметь разное значение в зависимости от типа данных.
+</p>
+<h3 id="DescriptiveColumns">Описательные имена столбцов</h3>
+<p>
+    Вот некоторые примеры столбцов с описательными именами:
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.Data#RAW_CONTACT_ID}
+    </dt>
+    <dd>
+        Значение в столбце <code>_ID</code> необработанного контакта для этих данных.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.Data#MIMETYPE}
+    </dt>
+    <dd>
+        Тип данных, хранящихся в этой строке, в виде настраиваемого типа MIME. Поставщик контактов
+использует типы MIME, заданные в подклассах класса
+{@link android.provider.ContactsContract.CommonDataKinds}. Эти типы MIME являются открытыми, и
+их может использовать любое приложение или адаптер синхронизации, поддерживающие работу с поставщиком контактов.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY}
+    </dt>
+    <dd>
+        Если этот тип данных для необработанного контакта встречается несколько раз, то
+столбец {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} помечает флагом
+строки данных, в которых содержатся основные данные для этого типа. Например, если
+пользователь нажал и удерживает номер телефона контакта и выбрал параметр <strong>Использовать по умолчанию</strong>,
+то в столбце {@link android.provider.ContactsContract.Data} с этим номером телефона
+в соответствующем столбце {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} задается
+значение, отличное от нуля.
+    </dd>
+</dl>
+<h3 id="GenericColumns">Универсальные имена столбцов</h3>
+<p>
+    Существует 15 общедоступных столбцов с универсальными именами (<code>DATA1</code>–<code>DATA15</code>)
+и четыре дополнительных столбца
+(<code>SYNC1</code>–<code>SYNC4</code>), которые используются только адаптерами
+синхронизации. Константы столбцов с универсальными именами применяются всегда, независимо от типа данных,
+содержащихся в столбце.
+</p>
+<p>
+    Столбец <code>DATA1</code> является индексируемым.  Поставщик контактов всегда использует этот столбец для
+данных, которые, как он ожидает, будут наиболее часто являться целевыми в запросах. Например,
+в строке с адресами эл. почты в этом столбце указывается фактический адрес эл. почты.
+</p>
+<p>
+    Обычно столбец <code>DATA15</code> зарезервирован для данных больших двоичных объектов
+(BLOB), таких как миниатюры фотографий.
+</p>
+<h3 id="TypeSpecificNames">Имена столбцов по типам строк</h3>
+<p>
+    Для упрощения работы со столбцами определенного типа строк в поставщике контактов
+также предусмотрены константы для имен столбцов по типам строк, которые определены в подклассах класса
+{@link android.provider.ContactsContract.CommonDataKinds}. Эти константы просто
+присваивают одному и тому же имени столбца различные константы, что позволяет вам получать доступ к данным в строке
+определенного типа.
+</p>
+<p>
+    Например, класс {@link android.provider.ContactsContract.CommonDataKinds.Email} определяет
+константы имени столбца для строки {@link android.provider.ContactsContract.Data},
+в которой имеется тип MIME
+{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
+Email.CONTENT_ITEM_TYPE}. В этом классе содержится константа
+{@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS} для столбца адреса
+эл. почты. Фактическое значение
+{@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS} — data1, которое совпадает
+с универсальным именем столбца.
+</p>
+<p class="caution">
+    <strong>Внимание!</strong> Не добавляйте свои настраиваемые данные в таблицу
+{@link android.provider.ContactsContract.Data} с помощью строки, в которой имеется один из
+предварительно заданных поставщиком типов MIME. В противном случае вы можете потерять данные или вызвать неполадки
+в работе поставщика. Например, не следует добавлять строку с типом MIME
+{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
+Email.CONTENT_ITEM_TYPE}, в которой в столбце
+<code>DATA1</code> вместо адреса эл. почты содержится имя пользователя. Если вы укажете в строке собственный настраиваемый тип MIME, вы можете свободно
+указывать собственные имена столбцов по типам строк и использовать их так, как пожелаете.
+</p>
+<p>
+    На рисунке 2 показано, как столбцы с описательными именами и столбцы данных отображаются в строке
+{@link android.provider.ContactsContract.Data}, а также как имена столбцов по типу строк «накладываются»
+на универсальные имена столбцов.
+</p>
+<img src="{@docRoot}images/providers/data_columns.png" alt="How type-specific column names map to generic column names" height="311" id="figure2" />
+<p class="img-caption">
+  <strong>Рисунок 2.</strong> Имена столбцов по типам строк и универсальные имена столбцов.
+</p>
+<h3 id="ColumnMaps">Классы имен столбцов по типам строк</h3>
+<p>
+    В таблице 2 перечислены наиболее часто используемые классы имен столбцов по типам строк.
+</p>
+<p class="table-caption" id="table2">
+  <strong>Таблица 2.</strong> Классы имен столбцов по типам строк</p>
+<table>
+  <tr>
+    <th scope="col">Класс сопоставления</th>
+    <th scope="col">Тип данных</th>
+    <th scope="col">Примечания</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredName}</td>
+    <td>Данные об имени необработанного контакта, связанного с этой строкой данных.</td>
+    <td>У необработанного контакта имеется только одна строка такого типа.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Photo}</td>
+    <td>Основная фотография необработанного контакта, связанного с этой строкой данных.</td>
+    <td>У необработанного контакта имеется только одна строка такого типа.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Email}</td>
+    <td>Адрес эл. почты необработанного контакта, связанного с этой строкой данных.</td>
+    <td>У необработанного контакта может быть несколько адресов эл. почты.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal}</td>
+    <td>Почтовый адрес необработанного контакта, связанного с этой строкой данных.</td>
+    <td>У необработанного контакта может быть несколько почтовых адресов.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.GroupMembership}</td>
+    <td>Идентификатор, с помощью которого необработанный контакт связан с одной из групп в поставщике контактов.</td>
+    <td>
+        Группы представляют собой необязательный компонент для типа аккаунта и имени аккаунта. Дополнительные сведения о
+группах представлены в разделе <a href="#Groups">Группы контактов</a>.
+    </td>
+  </tr>
+</table>
+<h3 id="ContactBasics">Контакты</h3>
+<p>
+    Поставщик контактов объединяет строки с необработанными контактами для всех типов аккаунтов и имен аккаунтов
+для создания <strong>контакта</strong>. Это позволяет упростить отображение и изменение всех данных,
+собранных в отношении пользователя. Поставщик контактов управляет процессом создания строк
+контактов и агрегированием необработанных контактов, у которых имеется строка контакта. Ни приложениям, ни
+адаптерам синхронизации не разрешается добавлять контакты, а некоторые столбцы в строке контакта доступны только для чтения.
+</p>
+<p class="note">
+    <strong>Примечание.</strong> Если попытаться добавить контакт в поставщик контактов с помощью метода
+{@link android.content.ContentResolver#insert(Uri,ContentValues) insert()}, будет выдано исключение
+{@link java.lang.UnsupportedOperationException}. Если вы попытаетесь обновить столбец,
+доступный только для чтения, это действие будет проигнорировано.
+</p>
+<p>
+    При добавлении нового необработанного контакта,
+который не соответствует ни одному из существующих контактов, поставщик контактов создает новый контакт. Поставщик поступает аналогично в случае, если 
+данные в строке существующего необработанного контакта изменяются таким образом, что они больше не соответствуют контакту,
+с которым они ранее были связаны. При создании приложением или адаптером синхронизации нового контакта,
+который <em></em> соответствует существующему контакту, то новый контакт объединяется с
+существующим контактом.
+</p>
+<p>
+    Поставщик контактов связывает строку контакта с его строками необработанного контакта посредством столбца
+<code>_ID</code> строки контакта в таблице
+{@link android.provider.ContactsContract.Contacts Contacts}. Столбец <code>CONTACT_ID</code> в таблице необработанных контактов
+{@link android.provider.ContactsContract.RawContacts} содержит значения <code>_ID</code> для
+строки контактов, связанной с каждой строкой необработанных контактов.
+</p>
+<p>
+    В таблице {@link android.provider.ContactsContract.Contacts} также имеется столбец
+{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}, который выступает в роли
+«постоянной ссылки» на строку контакта. Поскольку поставщик контактов автоматически сохраняет контакты,
+в ответ на агрегирование или синхронизацию он может изменить значение {@code android.provider.BaseColumns#_ID}
+строки контакта. Даже если это произойдет, URI контента
+{@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI}, объединенный с
+{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} контакта, будет
+по-прежнему указывать на строку контакта, поэтому вы можете смело использовать
+{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}
+для сохранения ссылок на «избранные» контакты и др. Столбец имеет собственный формат,
+который не связан с форматом столбца{@code android.provider.BaseColumns#_ID}.
+</p>
+<p>
+    На рисунке 3 показаны взаимосвязи этих трех основных таблиц друг с другом.
+</p>
+<img src="{@docRoot}images/providers/contacts_tables.png" alt="Contacts provider main tables" height="514" id="figure4" />
+<p class="img-caption">
+  <strong>Рисунок 3</strong>. Взаимосвязи между таблицами контактов, необработанных контактов и сведений.
+</p>
+<h2 id="Sources">Данные, полученные от адаптеров синхронизации</h2>
+<p>
+    Пользователь вводит данные контактов прямо на устройстве, однако данные также поступают в поставщик контактов
+из веб-служб посредством <strong>адаптеров синхронизации</strong>, что позволяет автоматизировать
+обмен данными между устройством и службами в Интернете. Адаптеры синхронизации выполняются в фоновом режиме под
+управлением системы, и для управления данными они вызывают методы
+{@link android.content.ContentResolver}.
+</p>
+<p>
+    В Android веб-служба, с которой работает адаптер синхронизации, определяется по типу аккаунта.
+    Каждый адаптер синхронизации работает с одним типом аккаунта, однако он может поддерживать несколько имен аккаунтов
+такого типа. Вкратце типы и имена аккаунтов рассматриваются
+в разделе <a href="#RawContactsExample">Источники данных необработанных контактов</a>. Указанные ниже определения позволяют
+более точно охарактеризовать связь между типами и именами аккаунтов и адаптерами синхронизации и службами.
+</p>
+<dl>
+    <dt>
+        Тип аккаунта
+    </dt>
+    <dd>
+        Определяет службу, в которой пользователь хранит данные. В большинстве случаев для работы со
+службой пользователю необходимо пройти проверку подлинности. Например, Google Контакты представляет собой тип аккаунтов, обозначаемый кодом
+<code>google.com</code>. Это значение соответствует типу аккаунта, используемого
+{@link android.accounts.AccountManager}.
+    </dd>
+    <dt>
+        Имя аккаунта
+    </dt>
+    <dd>
+        Определяет конкретный аккаунт или имя для входа для типа аккаунта. Аккаунты «Контакты Google»
+— это то же, что и аккаунты Google, в качестве имени которых используется адрес эл. почты.
+        В других службах может использоваться имя пользователя, состоящее из одного слова, или числовой идентификатор.
+    </dd>
+</dl>
+<p>
+    Типы аккаунтов не обязательно должны быть уникальными. Пользователь может создать несколько аккаунтов Google Контакты
+и загрузить данные из них в поставщик контактов; это может произойти в случае, если у пользователя имеется один набор
+персональных контактов для личного аккаунта, и другой набор — для служебного аккаунта. Имена
+аккаунтов обычно уникальные. Вместе они формируют определенный поток данных между поставщиком контактов
+и внешними службами.
+</p>
+<p>
+    Если необходимо передать данные из службы в поставщик контактов, необходимо создать
+собственный адаптер синхронизации. Дополнительные сведения об этом представлены в разделе 
+<a href="#SyncAdapters">Адаптеры синхронизации поставщика контактов</a>.
+</p>
+<p>
+    На рисунке 4 показано, какую роль выполняет поставщик контактов в потоке передачи данных
+о пользователях. В области, отмеченной на рисунке как sync adapters, каждый адаптер промаркирован в соответствии с поддерживаемым им типом аккаунтов.
+</p>
+<img src="{@docRoot}images/providers/ContactsDataFlow.png" alt="Flow of data about people" height="252" id="figure5" />
+<p class="img-caption">
+  <strong>Рисунок 4</strong>. Поток передачи данных через поставщика контактов.
+</p>
+<h2 id="Permissions">Требуемые разрешения</h2>
+<p>
+    Приложения, которым требуется доступ к поставщику контактов,
+должны запросить указанные ниже разрешения.
+</p>
+<dl>
+    <dt>Доступ на чтение одной или нескольких таблиц</dt>
+    <dd>
+        {@link android.Manifest.permission#READ_CONTACTS}, указанный в файле
+<code>AndroidManifest.xml</code> с элементом
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code> в виде
+<code>&lt;uses-permission android:name="android.permission.READ_CONTACTS"&gt;</code>.
+    </dd>
+    <dt>Доступ на запись в одну или несколько таблиц</dt>
+    <dd>
+        {@link android.Manifest.permission#WRITE_CONTACTS}, указанный в файле
+<code>AndroidManifest.xml</code> с элементом
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code> в виде
+<code>&lt;uses-permission android:name="android.permission.WRITE_CONTACTS"&gt;</code>.
+    </dd>
+</dl>
+<p>
+    Эти разрешения не распространяются на работу с данными профиля пользователя. Профиль пользователя
+и требуемые разрешения для работы с ним рассматриваются в разделе
+<a href="#UserProfile">Профиль пользователя</a> ниже.
+</p>
+<p>
+    Помните, что данные о контактах пользователя являются личными и конфиденциальными. Пользователи заботятся о своей конфиденциальности,
+поэтому не хотят, чтобы приложения собирали данные о них самих или их контактах.
+    Если пользователю не до конца ясно, для чего требуется разрешение на доступ к данным контактов, они могут присвоить
+вашему приложению низкий рейтинг или вообще откажутся его устанавливать.
+</p>
+<h2 id="UserProfile">Профиль пользователя</h2>
+<p>
+    В таблице {@link android.provider.ContactsContract.Contacts} имеется всего одна строка, содержащая
+данные профиля для устройства пользователя. Эти данные описывают <code>user</code> устройства,
+а не один из контактов пользователя. Строка контактов профиля связана со строкой
+необработанных контактов в каждой из систем, в которой используется профиль.
+    В каждой строке необработанного контакта профиля может содержаться несколько строк данных. Константы для доступа к профилю пользователя
+представлены в классе {@link android.provider.ContactsContract.Profile}.
+</p>
+<p>
+    Для доступа к профилю пользователя требуются особые разрешения. Кроме разрешений
+{@link android.Manifest.permission#READ_CONTACTS} и
+{@link android.Manifest.permission#WRITE_CONTACTS}, которые требуются для чтения и записи, для доступа к профилю пользователя необходимы разрешения
+{@code android.Manifest.permission#READ_PROFILE} и
+{@code android.Manifest.permission#WRITE_PROFILE}
+на чтение и запись соответственно.
+</p>
+<p>
+    Всегда следует помнить, что профиль пользователя представляет собой конфиденциальную информацию. Разрешение
+{@code android.Manifest.permission#READ_PROFILE} предоставляет вам доступ к личной информации на устройстве
+пользователя. В описании своего приложения обязательно укажите, для
+чего вам требуется доступ к профилю пользователя.
+</p>
+<p>
+    Чтобы получить строку контакта с профилем пользователя, вызовите метод
+{@link android.content.ContentResolver#query(Uri,String[], String, String[], String)
+ContentResolver.query()}. Задайте для URI контента значение
+{@link android.provider.ContactsContract.Profile#CONTENT_URI} и не указывайте никаких критериев
+выборки. Этот URI контента также можно использовать в качестве основного URI для получения
+необработанных контактов или данных профиля. Ниже представлен фрагмент кода для получения данных профиля.
+</p>
+<pre>
+// Sets the columns to retrieve for the user profile
+mProjection = new String[]
+    {
+        Profile._ID,
+        Profile.DISPLAY_NAME_PRIMARY,
+        Profile.LOOKUP_KEY,
+        Profile.PHOTO_THUMBNAIL_URI
+    };
+
+// Retrieves the profile from the Contacts Provider
+mProfileCursor =
+        getContentResolver().query(
+                Profile.CONTENT_URI,
+                mProjection ,
+                null,
+                null,
+                null);
+</pre>
+<p class="note">
+    <strong>Примечание.</strong> Если при извлечении несколько строк контактов необходимо определить,
+какой из них является профилем пользователя, обратитесь к столбцу
+{@link android.provider.ContactsContract.ContactsColumns#IS_USER_PROFILE} этой строки. Если в этом столбце
+указано значение «1», то в это строке находится профиль пользователя.
+</p>
+<h2 id="ContactsProviderMetadata">Метаданные поставщика контактов</h2>
+<p>
+    Поставщик контактов управляет данными, которые используются для отслеживания состояния данных контакта в
+репозитории. Эти метаданные о репозитории хранятся в различных местах, включая
+строки необработанных контактов, данные и строки таблицы контактов, таблицу
+{@link android.provider.ContactsContract.Settings} и таблицу
+{@link android.provider.ContactsContract.SyncState}. В таблице ниже
+указаны значения каждого из этих фрагментов метаданных.
+</p>
+<p class="table-caption" id="table3">
+  <strong>Таблица 3.</strong> Метаданные в поставщике контактов</p>
+<table>
+    <tr>
+        <th scope="col">Таблица</th>
+        <th scope="col">Столбец</th>
+        <th scope="col">Значения</th>
+        <th scope="col">Описание</th>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.RawContacts}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.SyncColumns#DIRTY}</td>
+        <td>«0» — с момента последней синхронизации изменения не вносились.</td>
+        <td rowspan="2">
+            Служит для отметки необработанных контактов, которые были изменены на устройстве и которые необходимо снова синхронизировать с
+сервером. Значение устанавливается автоматически поставщиком контактов при обновлении строк приложениями
+Android.
+            <p>
+                Адаптеры синхронизации, которые вносят изменения в необработанные контакты или таблицы данных, должны всегда добавлять к используемому ими URI
+контента строку 
+{@link android.provider.ContactsContract#CALLER_IS_SYNCADAPTER}. Это позволяет предотвратить пометку таких строк поставщиком как «грязных».
+                В противном случае изменения, внесенные адаптером синхронизации, будут рассматриваться как локальные изменения,
+которые подлежат отправке на сервер, даже если источником таких изменений был сам сервер.
+            </p>
+        </td>
+    </tr>
+    <tr>
+            <td>«1» — с момента последней синхронизации были внесены изменения, которые необходимо отразить и на сервере.</td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#VERSION}</td>
+        <td>Номер версии этой строки.</td>
+        <td>
+            Поставщик контактов автоматически увеличивает это значение при каждом
+изменении в строке или в связанных с ним данных.
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.Data}</td>
+        <td>{@link android.provider.ContactsContract.DataColumns#DATA_VERSION}</td>
+        <td>Номер версии этой строки.</td>
+        <td>
+            Поставщик контактов автоматически увеличивает это значение при каждом
+изменении в строке данных.
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}</td>
+        <td>
+            Строковое значение, которое служит уникальным идентификатором данного необработанного контакта в аккаунте,
+в котором он был создан.
+        </td>
+        <td>
+            Когда адаптер синхронизации создает новый необработанный контакт, в этом столбце следует указать
+уникальный идентификатор этого необработанного контакта на сервере. Когда же приложение Android создает
+новый необработанный контакт, то приложению следует оставить этот столбец пустым. Это служит сигналом для
+адаптера синхронизации, чтобы создать новый необработанный контакт на сервере и
+получить значение {@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}.
+            <p>
+                В частности, идентификатор источника должен быть <strong>уникальным</strong> для каждого типа аккаунта
+и неизменным при синхронизации.
+            </p>
+                <ul>
+                    <li>
+                        Уникальный: у каждого необработанного контакта для аккаунта должен быть свой собственный идентификатор источника. Если
+не применить это требование, у вас обязательно возникнут проблемы с приложением «Контакты».
+                        Обратите внимание, что два необработанных контакта одного и того же <em>типа</em> аккаунта могут
+иметь одинаковый идентификатор источника. Например, необработанный контакт Thomas Higginson для
+аккаунта {@code emily.dickinson@gmail.com} может иметь такой же
+идентификатор источника, что и контакт Thomas Higginson для аккаунта
+{@code emilyd@gmail.com}.
+                    </li>
+                    <li>
+                        Стабильный: идентификаторы источников представляют собой неизменную часть данных онлайн-службы для
+необработанного контакта. Например, если пользователь выполняет повторную синхронизацию после очистки хранилища контактов в
+настройках приложения, идентификаторы источников восстановленных необработанных контактов должны быть такими же,
+как и прежде. Если не применить это требование, перестанут
+работать ярлыки.
+                    </li>
+                </ul>
+        </td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Groups}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.GroupsColumns#GROUP_VISIBLE}</td>
+        <td>«0» — контакты, представленные в этой группе, не должны отображаться в интерфейсах пользователя приложений Android.</td>
+        <td>
+            Этот столбец предназначен для сведений о совместимости с серверами, позволяющими пользователям скрывать контакты
+в определенных группах.
+        </td>
+    </tr>
+    <tr>
+        <td>«1» — контакты, представленные в этой группе, могут отображаться в интерфейсах пользователя приложений.</td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Settings}</td>
+        <td rowspan="2">
+            {@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE}</td>
+        <td>
+            «0» — для этого аккаунта и аккаунтов этого типа контакты, не принадлежащие к группе,
+не отображаются в интерфейсах пользователя приложений Android.
+        </td>
+        <td rowspan="2">
+            По умолчанию контакты скрыты, если ни один из их необработанных контактов не принадлежит группе
+(принадлежность необработанного контакта к группе указывается в одном или нескольких строках
+{@link android.provider.ContactsContract.CommonDataKinds.GroupMembership}
+в таблице {@link android.provider.ContactsContract.Data}).
+            Установив этот флаг в строке таблицы {@link android.provider.ContactsContract.Settings}
+для типа аккаунта и имени аккаунта, вы можете принудительно сделать видимыми контакты, не принадлежащие какой-либо группе.
+            Один из вариантов использования этого флага — отображение контактов с серверов, на которых не используются группы.
+        </td>
+    </tr>
+    <tr>
+        <td>
+            «1» — для этого аккаунта и аккаунтов этого типа контакты, не принадлежащие к группе,
+отображаются в интерфейсах пользователя приложений Android.
+        </td>
+
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.SyncState}</td>
+        <td>(все)</td>
+        <td>
+            Эта таблица используется для хранения метаданных для вашего адаптера синхронизации.
+        </td>
+        <td>
+            С помощью этой таблицы вы можете на постоянной основе хранить на устройстве сведения о состоянии синхронизации и другие связанные с
+синхронизацией данные.
+        </td>
+    </tr>
+</table>
+<h2 id="Access">Доступ к поставщику контактов</h2>
+<p>
+    В этом разделе рассматриваются инструкции по получению доступа к данным из поставщика контактов, в частности,
+следующие:
+</p>
+<ul>
+    <li>
+        запросы объектов;
+    </li>
+    <li>
+        пакетное изменение;
+    </li>
+    <li>
+        получение и изменение данных с помощью намерений;
+    </li>
+    <li>
+        целостность данных.
+    </li>
+</ul>
+<p>
+    Дополнительные сведения о внесении изменений с помощью адаптеров синхронизации представлены в разделе
+<a href="#SyncAdapters">Адаптеры синхронизации поставщика контактов</a>.
+</p>
+<h3 id="Entities">Запрос объектов</h3>
+<p>
+    Таблицы поставщика контактов имеют иерархическую структуру, поэтому зачастую полезно
+извлекать строку и все связанные с ней ее дочерние строки. Например, для отображения
+всей информации о пользователе вы, возможно, захотите извлечь все строки
+{@link android.provider.ContactsContract.RawContacts} для одной строки
+{@link android.provider.ContactsContract.Contacts} или все строки
+{@link android.provider.ContactsContract.CommonDataKinds.Email} для одной строки
+{@link android.provider.ContactsContract.RawContacts}. Чтобы упростить этот процесс, в поставщике контактов имеются
+<strong>объекты</strong>, которые выступают в роли соединителей базы данных между
+таблицами.
+</p>
+<p>
+    Объект представляет собой подобие таблицы, состоящей из выбранных столбцов родительской таблицы и ее дочерней таблицы.
+    При запросе объекта вы предоставляете проекцию и критерии поиска на основе доступных в
+объекте столбцов. В результате вы получаете объект {@link android.database.Cursor}, в котором
+содержится одна строка для каждой извлеченной строки дочерней таблицы. Например, если запросить объект
+{@link android.provider.ContactsContract.Contacts.Entity} для имени контакта и все строки
+{@link android.provider.ContactsContract.CommonDataKinds.Email} для всех необработанных контактов,
+соответствующих этому имени, вы получите объект {@link android.database.Cursor}, содержащий по одной строке
+для каждой строки {@link android.provider.ContactsContract.CommonDataKinds.Email}.
+</p>
+<p>
+    Использование объектов упрощает запросы. С помощью объекта можно извлечь сразу все данные для
+контакта или необработанного контакта, вместо того, чтобы сначала делать запрос к родительской таблице для получения
+идентификатора и последующего запроса к дочерней таблице с использованием полученного идентификатора. Кроме того, поставщик контактов обрабатывает запрос
+объекта за одну транзакцию, что гарантирует внутреннюю согласованность полученных
+данных.
+</p>
+<p class="note">
+    <strong>Примечание.</strong> Объект обычно содержит не все столбцы
+родительской и дочерней таблиц. Если вы попытаетесь изменить имя столбца, который отсутствует в списке
+констант имени столбца для объекта, вы получите {@link java.lang.Exception}.
+</p>
+<p>
+    Ниже представлен пример кода для получения всех строк необработанного контакта для контакта. Это фрагмент
+более крупного приложения, в котором имеются две операции: «основная» и «для получения сведений». Основная операция
+служит для получения списка строк контактов; при выборе пользователем контакта операция отправляет его идентификатор в операцию
+для получения сведений. Операция для получения сведений использует объект {@link android.provider.ContactsContract.Contacts.Entity}
+для отображения всех строк данных, полученных ото всех необработанных контактов, которые связаны с выбранным
+контактом.
+</p>
+<p>
+    Вот фрагмент кода операции «для получения сведений»:
+</p>
+<pre>
+...
+    /*
+     * Appends the entity path to the URI. In the case of the Contacts Provider, the
+     * expected URI is content://com.google.contacts/#/entity (# is the ID value).
+     */
+    mContactUri = Uri.withAppendedPath(
+            mContactUri,
+            ContactsContract.Contacts.Entity.CONTENT_DIRECTORY);
+
+    // Initializes the loader identified by LOADER_ID.
+    getLoaderManager().initLoader(
+            LOADER_ID,  // The identifier of the loader to initialize
+            null,       // Arguments for the loader (in this case, none)
+            this);      // The context of the activity
+
+    // Creates a new cursor adapter to attach to the list view
+    mCursorAdapter = new SimpleCursorAdapter(
+            this,                        // the context of the activity
+            R.layout.detail_list_item,   // the view item containing the detail widgets
+            mCursor,                     // the backing cursor
+            mFromColumns,                // the columns in the cursor that provide the data
+            mToViews,                    // the views in the view item that display the data
+            0);                          // flags
+
+    // Sets the ListView's backing adapter.
+    mRawContactList.setAdapter(mCursorAdapter);
+...
+&#64;Override
+public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+
+    /*
+     * Sets the columns to retrieve.
+     * RAW_CONTACT_ID is included to identify the raw contact associated with the data row.
+     * DATA1 contains the first column in the data row (usually the most important one).
+     * MIMETYPE indicates the type of data in the data row.
+     */
+    String[] projection =
+        {
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID,
+            ContactsContract.Contacts.Entity.DATA1,
+            ContactsContract.Contacts.Entity.MIMETYPE
+        };
+
+    /*
+     * Sorts the retrieved cursor by raw contact id, to keep all data rows for a single raw
+     * contact collated together.
+     */
+    String sortOrder =
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID +
+            " ASC";
+
+    /*
+     * Returns a new CursorLoader. The arguments are similar to
+     * ContentResolver.query(), except for the Context argument, which supplies the location of
+     * the ContentResolver to use.
+     */
+    return new CursorLoader(
+            getApplicationContext(),  // The activity's context
+            mContactUri,              // The entity content URI for a single contact
+            projection,               // The columns to retrieve
+            null,                     // Retrieve all the raw contacts and their data rows.
+            null,                     //
+            sortOrder);               // Sort by the raw contact ID.
+}
+</pre>
+<p>
+    По завершении загрузки {@link android.app.LoaderManager} выполняет обратный вызов метода
+{@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished(Loader, D)
+onLoadFinished()}. Одним их входящих аргументов для этого метода является
+{@link android.database.Cursor} с результатом запроса. В своем приложении вы можете
+получить данные из этого объекта {@link android.database.Cursor} для его отображения или дальнейшей работы с ним.
+</p>
+<h3 id="Transactions">Пакетное изменение</h3>
+<p>
+    При каждой возможности данные в поставщике контактов следует вставлять, обновлять и удалять в
+«пакетном режиме» путем создания {@link java.util.ArrayList} из объектов
+{@link android.content.ContentProviderOperation} и вызова метода
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}. Поскольку
+поставщик контактов выполняет все операции в методе
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} за одну
+транзакцию, ваши изменения всегда будут находиться в рамках репозитория контактов и
+всегда будут согласованными. Пакетное изменение также упрощает вставку необработанного контакта одновременно с его подробными
+данными.
+</p>
+<p class="note">
+    <strong>Примечание.</strong> Чтобы изменить <em>отдельный</em> необработанный контакт, рекомендуется отправить намерение в
+приложение для работы с контактами на устройстве вместо обработки изменения в вашем приложении.
+Более подробно эта операция описана в разделе
+<a href="#Intents">Получение и изменение данных с помощью намерений</a>.
+</p>
+<h4>Пределы</h4>
+<p>
+    Пакетное изменение большого количества операций может заблокировать выполнение других процессов,
+что может негативно сказаться на работе пользователя с приложением. Чтобы упорядочить все необходимые изменения
+в рамках как можно меньшего количества отдельных списков и при этом предотвратить
+блокирование работы системы, следует задать <strong>пределы</strong> для одной или нескольких операций.
+    Предел представляет собой объект {@link android.content.ContentProviderOperation}, в качестве значения параметра
+{@link android.content.ContentProviderOperation#isYieldAllowed()} которого задано
+<code>true</code>. При достижении поставщиком контактов предела он приостанавливает свою работу,
+чтобы могли выполняться другие процессы, и закрывает текущую транзакцию. Когда поставщик запускается снова, он
+выполняет следующую операцию в {@link java.util.ArrayList} и запускает
+новую транзакцию.
+</p>
+<p>
+    Использование пределов позволяет за один вызов метода
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} выполнять более одной транзакции. По этой причине
+вам следует задать предел для последней операции с набором связанных строк.
+    Например, необходимо задать предел для последней операции в наборе, которая
+добавляет строки необработанного контакта и связанные с ним строки данных, или для последней операции с набором строк, связанных
+с одним контактом.
+</p>
+<p>
+    Пределы также являются единицами атомарных операций. Все операции доступа в промежутке между двумя пределами завершаются либо
+успехом, либо сбоем в рамках одной единицы. Если любой из пределов не задан, наименьшей
+атомарной операцией считается весь пакет операций. Использование пределов позволяет предотвратить
+снижение производительности системы и одновременно обеспечить выполнение набора
+операций на атомарном уровне.
+</p>
+<h4>Изменение обратных ссылок</h4>
+<p>
+    При вставке новой строки необработанного контакта и связанных с ним рядов данных в виде набора объектов
+{@link android.content.ContentProviderOperation} вам приходится связывать строки данных
+со строкой необработанного контакта путем вставки значения
+{@code android.provider.BaseColumns#_ID} необработанного контакта в виде значения
+{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}. Однако это значение
+недоступно, когда вы создаете{@link android.content.ContentProviderOperation}
+для строки данных, поскольку вы еще не применили
+{@link android.content.ContentProviderOperation} для строки необработанного контакта. Чтобы обойти это ограничение,
+в классе {@link android.content.ContentProviderOperation.Builder} предусмотрен метод
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}.
+    С помощью этого метода можно вставлять или изменять столбец
+с результатом предыдущей операции.
+</p>
+<p>
+    В методе {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+предусмотрено два аргумента:
+</p>
+    <dl>
+        <dt>
+            <code>key</code>
+        </dt>
+        <dd>
+            Ключ для пары «ключ-значение». Значением этого аргумента должно быть имя столбца
+в таблице, которую вы изменяете.
+        </dd>
+        <dt>
+            <code>previousResult</code>
+        </dt>
+        <dd>
+            Индекс значения, начинающийся с «0», в массиве объектов
+{@link android.content.ContentProviderResult} из метода
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}. По мере
+выполнения пакетных операций результат каждой операции сохраняется в
+промежуточном массиве результатов. Значением <code>previousResult</code> является индекс
+одного из этих результатов, который извлекается и хранится со значением
+<code>key</code>. Благодаря этому можно вставить новую запись необработанного контакта и получить обратно его значение
+{@code android.provider.BaseColumns#_ID}, а затем создать «обратную ссылку» на
+значение при добавлении строки {@link android.provider.ContactsContract.Data}.
+            <p>
+                Целиком весь результат создается при первом вызове метода
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}.
+Размер результата равен размеру {@link java.util.ArrayList} предоставленных вами объектов
+{@link android.content.ContentProviderOperation}. Однако для всех
+элементов в массиве результатов присваивается значение <code>null</code>, и при попытке
+воспользоваться обратной ссылкой на результат еще не выполненной операции метод
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+выдает {@link java.lang.Exception}.
+
+            </p>
+        </dd>
+    </dl>
+<p>
+    Ниже представлены фрагменты кода для вставки нового необработанного контакта и его данных в пакетном режиме. Они включают
+код, который задает предел и использует обратную ссылку. Эти фрагменты
+представляют собой расширенную версию метода <code>createContacEntry()</code>, который входит в класс
+<code>ContactAdder</code> в примере приложения
+<code><a href="{@docRoot}resources/samples/ContactManager/index.html">
+    Contact Manager</a></code>.
+</p>
+<p>
+    Первый фрагмент кода служит для извлечения данных контакта из пользовательского интерфейса. На этом этапе пользователь уже выбрал
+аккаунт, для которого необходимо добавить новый необработанный контакт.
+</p>
+<pre>
+// Creates a contact entry from the current UI values, using the currently-selected account.
+protected void createContactEntry() {
+    /*
+     * Gets values from the UI
+     */
+    String name = mContactNameEditText.getText().toString();
+    String phone = mContactPhoneEditText.getText().toString();
+    String email = mContactEmailEditText.getText().toString();
+
+    int phoneType = mContactPhoneTypes.get(
+            mContactPhoneTypeSpinner.getSelectedItemPosition());
+
+    int emailType = mContactEmailTypes.get(
+            mContactEmailTypeSpinner.getSelectedItemPosition());
+</pre>
+<p>
+    В следующем фрагменте кода создается операция для вставки строки необработанного контакта в таблицу
+{@link android.provider.ContactsContract.RawContacts}:
+</p>
+<pre>
+    /*
+     * Prepares the batch operation for inserting a new raw contact and its data. Even if
+     * the Contacts Provider does not have any data for this person, you can't add a Contact,
+     * only a raw contact. The Contacts Provider will then add a Contact automatically.
+     */
+
+     // Creates a new array of ContentProviderOperation objects.
+    ArrayList&lt;ContentProviderOperation&gt; ops =
+            new ArrayList&lt;ContentProviderOperation&gt;();
+
+    /*
+     * Creates a new raw contact with its account type (server type) and account name
+     * (user's account). Remember that the display name is not stored in this row, but in a
+     * StructuredName data row. No other data is required.
+     */
+    ContentProviderOperation.Builder op =
+            ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
+            .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType())
+            .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    Затем код создает строки данных для строк отображаемого имени, телефона и адреса эл. почты.
+</p>
+<p>
+    Каждый объект компонента операции использует метод
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+для получения
+{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}. Ссылка возвращается
+обратно к объекту {@link android.content.ContentProviderResult} из первой операции,
+в результате чего добавляется строка необработанного контакта и возвращается его новое значение
+{@code android.provider.BaseColumns#_ID}. После этого каждая строка данных автоматически связывается по своему
+{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}
+с новой строкой {@link android.provider.ContactsContract.RawContacts}, которой она принадлежит.
+</p>
+<p>
+    Объект {@link android.content.ContentProviderOperation.Builder}, который добавляет строку адреса эл. почты,
+помечается флагом с помощью метода {@link android.content.ContentProviderOperation.Builder#withYieldAllowed(boolean)
+withYieldAllowed()}, который задает предел:
+</p>
+<pre>
+    // Creates the display name for the new raw contact, as a StructuredName data row.
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * withValueBackReference sets the value of the first argument to the value of
+             * the ContentProviderResult indexed by the second argument. In this particular
+             * call, the raw contact ID column of the StructuredName data row is set to the
+             * value of the result returned by the first operation, which is the one that
+             * actually adds the raw contact row.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to StructuredName
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
+
+            // Sets the data row's display name to the name in the UI.
+            .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified phone number and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Phone
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
+
+            // Sets the phone number and type
+            .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone)
+            .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified email and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Email
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
+
+            // Sets the email address and type
+            .withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email)
+            .withValue(ContactsContract.CommonDataKinds.Email.TYPE, emailType);
+
+    /*
+     * Demonstrates a yield point. At the end of this insert, the batch operation's thread
+     * will yield priority to other threads. Use after every set of operations that affect a
+     * single contact, to avoid degrading performance.
+     */
+    op.withYieldAllowed(true);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    В последнем фрагменте кода представлен вызов метода
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}
+для вставки нового необработанного контакта и его строк данных.
+</p>
+<pre>
+    // Ask the Contacts Provider to create a new contact
+    Log.d(TAG,"Selected account: " + mSelectedAccount.getName() + " (" +
+            mSelectedAccount.getType() + ")");
+    Log.d(TAG,"Creating contact: " + name);
+
+    /*
+     * Applies the array of ContentProviderOperation objects in batch. The results are
+     * discarded.
+     */
+    try {
+
+            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
+    } catch (Exception e) {
+
+            // Display a warning
+            Context ctx = getApplicationContext();
+
+            CharSequence txt = getString(R.string.contactCreationFailure);
+            int duration = Toast.LENGTH_SHORT;
+            Toast toast = Toast.makeText(ctx, txt, duration);
+            toast.show();
+
+            // Log exception
+            Log.e(TAG, "Exception encountered while inserting contact: " + e);
+    }
+}
+</pre>
+<p>
+    С помощью пакетных операций можно также реализовать<strong>оптимистическое управление параллелизмом</strong>.
+Это метод применения транзакций изменения без необходимости блокировать базовый репозиторий.
+    Чтобы воспользоваться этим методом, необходимо применить транзакцию и проверить наличие других изменений,
+которые могли быть внесены в это же время. Если обнаружится, что имеется несогласованное изменение,
+транзакцию можно откатить и выполнить повторно.
+</p>
+<p>
+    Оптимистическое управление параллелизмом подходит для мобильных устройств, где с системой одновременно взаимодействует только один пользователь,
+ а одновременный доступ к репозиторию данных нескольких пользователей — довольно редкое явление. Поскольку не применяется блокировка,
+экономится ценное время, которое требуется на установку блокировок или ожидания того, когда другие транзакции отменят свои блокировки.
+</p>
+<p>
+    Ниже представлен порядок использования оптимистического управления параллелизмом при обновлении одной строки
+{@link android.provider.ContactsContract.RawContacts}.
+</p>
+<ol>
+    <li>
+        Извлеките столбец {@link android.provider.ContactsContract.SyncColumns#VERSION}
+необработанного контакта, а также другие данные, которые необходимо извлечь.
+    </li>
+    <li>
+        Создайте объект {@link android.content.ContentProviderOperation.Builder}, подходящий для
+применения ограничения, с помощью метода
+{@link android.content.ContentProviderOperation#newAssertQuery(Uri)}. Для URI контента
+используйте {@link android.provider.ContactsContract.RawContacts#CONTENT_URI
+RawContacts.CONTENT_URI},
+добавив к нему {@code android.provider.BaseColumns#_ID} необработанного контакта.
+    </li>
+    <li>
+        Для объекта {@link android.content.ContentProviderOperation.Builder} вызовите метод
+{@link android.content.ContentProviderOperation.Builder#withValue(String, Object)
+withValue()}, чтобы сравнить столбец {@link android.provider.ContactsContract.SyncColumns#VERSION}
+с номером версии, которую вы только что получили.
+    </li>
+    <li>
+        Для того же объекта {@link android.content.ContentProviderOperation.Builder} вызовите метод
+{@link android.content.ContentProviderOperation.Builder#withExpectedCount(int)
+withExpectedCount()}, чтобы убедиться в том, что проверочное утверждение проверяет только одну строка.
+    </li>
+    <li>
+        Вызовите метод {@link android.content.ContentProviderOperation.Builder#build()}, чтобы создать объект
+{@link android.content.ContentProviderOperation}, затем добавьте этот объект в качестве первого объекта в
+{@link java.util.ArrayList}, который вы передаете в метод
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}.
+    </li>
+    <li>
+        Примените пакетную транзакцию.
+    </li>
+</ol>
+<p>
+    Если в промежутке между считыванием строки и попыткой ее изменения строка необработанного контакта была обновлена другой
+операцией, assert {@link android.content.ContentProviderOperation}
+завершится сбоем и в выполнении всего пакета операций будет отказано. Можно выбрать повторное выполнение
+пакета или выполнить другое действие.
+</p>
+<p>
+    В примере кода ниже демонстрируется, как создать assert
+{@link android.content.ContentProviderOperation} после запроса одного необработанного контакта с помощью
+{@link android.content.CursorLoader}.
+</p>
+<pre>
+/*
+ * The application uses CursorLoader to query the raw contacts table. The system calls this method
+ * when the load is finished.
+ */
+public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor cursor) {
+
+    // Gets the raw contact's _ID and VERSION values
+    mRawContactID = cursor.getLong(cursor.getColumnIndex(BaseColumns._ID));
+    mVersion = cursor.getInt(cursor.getColumnIndex(SyncColumns.VERSION));
+}
+
+...
+
+// Sets up a Uri for the assert operation
+Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, mRawContactID);
+
+// Creates a builder for the assert operation
+ContentProviderOperation.Builder assertOp = ContentProviderOperation.netAssertQuery(rawContactUri);
+
+// Adds the assertions to the assert operation: checks the version and count of rows tested
+assertOp.withValue(SyncColumns.VERSION, mVersion);
+assertOp.withExpectedCount(1);
+
+// Creates an ArrayList to hold the ContentProviderOperation objects
+ArrayList ops = new ArrayList&lt;ContentProviderOperationg&gt;;
+
+ops.add(assertOp.build());
+
+// You would add the rest of your batch operations to "ops" here
+
+...
+
+// Applies the batch. If the assert fails, an Exception is thrown
+try
+    {
+        ContentProviderResult[] results =
+                getContentResolver().applyBatch(AUTHORITY, ops);
+
+    } catch (OperationApplicationException e) {
+
+        // Actions you want to take if the assert operation fails go here
+    }
+</pre>
+<h3 id="Intents">Получение и изменение данных с помощью намерений</h3>
+<p>
+    С помощью отправки намерения в приложение для работы с контактами, которое имеется на устройстве, можно в обход получить доступ
+к поставщику контактов. Намерение запускает пользовательский интерфейс приложения на устройстве, посредством которого пользователь
+может работать с контактами. Такой тип доступа позволяет пользователю выполнять следующие действия:
+    <ul>
+        <li>выбор контактов из списка и их возврат в приложение для дальнейшей работы;</li>
+        <li>изменение данных существующего контакта;</li>
+        <li>вставка нового необработанного контакта для любых других аккаунтов;</li>
+        <li>удаление контакта или его данных.</li>
+    </ul>
+<p>
+    Если пользователь вставляет или обновляет данные , вы можете сначала собрать эти данные, а затем отправить их вместе
+с намерением.
+</p>
+<p>
+    При использовании намерений для доступа к поставщику контактов посредством приложения для работы с контактами, имеющегося на устройстве, вам
+не нужно создавать собственный пользовательский интерфейс или код для доступа к поставщику. Также вам
+не нужно запрашивать разрешение на чтение или запись в поставщик. Приложение для работы с контактами, имеющееся на устройстве, может
+делегировать вам разрешение на чтение контакта, и поскольку вы вносите изменения
+в поставщик через другое приложение, вам не нужно разрешение на запись.
+</p>
+<p>
+    Более подробно общий процесс отправки намерения для получения доступа к поставщику описан в руководстве
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">Основные сведения о поставщике контента</a>
+в разделе «Доступ к данным посредством намерений». В таблице 4 ниже представлены сводные сведения об операциях,
+типе MIME и значениях данных, которые используются для доступных задач. Значения
+дополнительных данных, которые можно использовать для
+{@link android.content.Intent#putExtra(String, String) putExtra()}, указаны в справочной
+документации по {@link android.provider.ContactsContract.Intents.Insert}.
+</p>
+<p class="table-caption" id="table4">
+  <strong>Таблица 4.</strong> Намерения в поставщике контактов.
+</p>
+<table style="width:75%">
+    <tr>
+        <th scope="col" style="width:10%">Задача</th>
+        <th scope="col" style="width:5%">Действие</th>
+        <th scope="col" style="width:10%">Данные</th>
+        <th scope="col" style="width:10%">Тип MIME</th>
+        <th scope="col" style="width:25%">Примечания</th>
+    </tr>
+    <tr>
+        <td><strong>Выбор контакта из списка</strong></td>
+        <td>{@link android.content.Intent#ACTION_PICK}</td>
+        <td>
+            Одно из следующего:
+            <ul>
+                <li>
+{@link android.provider.ContactsContract.Contacts#CONTENT_URI Contacts.CONTENT_URI}
+(отображение списка контактов);
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Phone#CONTENT_URI Phone.CONTENT_URI}
+(отображение номеров телефонов для необработанного контакта);
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal#CONTENT_URI
+StructuredPostal.CONTENT_URI}
+(отображение списка почтовых адресов для необработанного контакта);
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_URI Email.CONTENT_URI}
+(отображение адресов эл. почты для необработанного контакта).
+                </li>
+            </ul>
+        </td>
+        <td>
+            Не используется
+        </td>
+        <td>
+            Отображение списка необработанных контактов или списка данных необработанного контакта (в зависимости от
+предоставленного URI контента).
+            <p>
+                Вызовите метод
+{@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()},
+который возвращает URI контента для выбранной строки. URI представлен в форме
+URI контента таблицы, к которому добавлен <code>LOOKUP_ID</code> строки.
+                Приложение для работы с контактами, установленное на устройстве, делегирует этому URI контента
+разрешения на чтение и запись, которые действуют в течение всего жизненного цикла вашей операции. Дополнительные сведения представлены в статье
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">Основные
+сведения о поставщике контента</a>.
+            </p>
+        </td>
+    </tr>
+    <tr>
+        <td><strong>Вставка нового необработанного контакта</strong></td>
+        <td>{@link android.provider.ContactsContract.Intents.Insert#ACTION Insert.ACTION}</td>
+        <td>Н/Д</td>
+        <td>
+            {@link android.provider.ContactsContract.RawContacts#CONTENT_TYPE
+RawContacts.CONTENT_TYPE}, тип MIME для набора необработанных контактов.
+        </td>
+        <td>
+            Отображение экрана <strong>Добавить контакт</strong> в приложении для работы с контактами, которое установлено на устройстве. Отображаются
+значения дополнительных данных, добавленных вами в намерение. При отправке с помощью метода
+{@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()}
+URI контента нового добавленного необработанного контакта передается обратно в метод обратного вызова
+{@link android.app.Activity#onActivityResult(int, int, Intent) onActivityResult()}
+вашей операции в аргументе {@link android.content.Intent} в поле
+data. Чтобы получить значение, вызовите метод {@link android.content.Intent#getData()}.
+        </td>
+    </tr>
+    <tr>
+        <td><strong>Изменение контакта</strong></td>
+        <td>{@link android.content.Intent#ACTION_EDIT}</td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI}
+контакта. Операция редактора разрешит пользователю изменить любые данные, связанные с
+этим контактом.
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE
+Contacts.CONTENT_ITEM_TYPE}, один контакт.</td>
+        <td>
+            Отображение экрана редактирования контакта в приложении для работы с контактами. Отображаются
+значения дополнительных данных, добавленных вами в намерение. Когда пользователь нажимает на кнопку <strong>Готово</strong> для сохранения
+внесенных изменений, ваша операция возвращается на передний план.
+        </td>
+    </tr>
+    <tr>
+        <td><strong>Отображение средства выбора, в котором также можно добавлять данные</strong></td>
+        <td>{@link android.content.Intent#ACTION_INSERT_OR_EDIT}</td>
+        <td>
+            Н/Д
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE}
+        </td>
+         <td>
+            Это намерение также отображает экран средства выбора приложения для работы с контактами. Пользователь
+может выбрать контакт для изменения или добавить новый контакт. В зависимости от выбора отображается экран редактирования или добавления контакта,
+и отображаются дополнительные данные,
+переданные вами в намерение. Если ваше приложение отображает такие данные контакта, как адрес эл. почты или номер телефона,
+воспользуйтесь этим намерением, чтобы разрешить пользователю добавлять данные к существующему
+контакту.
+            <p class="note">
+                <strong>Примечание.</strong> Вам не нужно отправлять значение имени в дополнительные данные этого намерения,
+поскольку пользователь всегда выбирает существующее имя или добавляет новое. Кроме того,
+если отправить имя, а пользователь решит внести изменения, приложение для работы с контактами
+отобразит отправленное вами имя, перезаписав предыдущее значение. Если пользователь
+не заметит этого и сохранит изменения, старое значение будет утеряно.
+            </p>
+         </td>
+    </tr>
+</table>
+<p>
+    Приложение для работы с контактами, имеющееся на устройстве, не разрешает вам удалять необработанные контакты или любые его данные с
+помощью намерений. Вместо этого для обработки необработанного контакта используйте метод
+{@link android.content.ContentResolver#delete(Uri, String, String[]) ContentResolver.delete()}
+или {@link android.content.ContentProviderOperation#newDelete(Uri)
+ContentProviderOperation.newDelete()}.
+</p>
+<p>
+    Ниже представлен фрагмент кода для создания и отправки намерения, который вставляет новый
+необработанный контакт и его данные.
+</p>
+<pre>
+// Gets values from the UI
+String name = mContactNameEditText.getText().toString();
+String phone = mContactPhoneEditText.getText().toString();
+String email = mContactEmailEditText.getText().toString();
+
+String company = mCompanyName.getText().toString();
+String jobtitle = mJobTitle.getText().toString();
+
+// Creates a new intent for sending to the device's contacts application
+Intent insertIntent = new Intent(ContactsContract.Intents.Insert.ACTION);
+
+// Sets the MIME type to the one expected by the insertion activity
+insertIntent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
+
+// Sets the new contact name
+insertIntent.putExtra(ContactsContract.Intents.Insert.NAME, name);
+
+// Sets the new company and job title
+insertIntent.putExtra(ContactsContract.Intents.Insert.COMPANY, company);
+insertIntent.putExtra(ContactsContract.Intents.Insert.JOB_TITLE, jobtitle);
+
+/*
+ * Demonstrates adding data rows as an array list associated with the DATA key
+ */
+
+// Defines an array list to contain the ContentValues objects for each row
+ArrayList&lt;ContentValues&gt; contactData = new ArrayList&lt;ContentValues&gt;();
+
+
+/*
+ * Defines the raw contact row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues rawContactRow = new ContentValues();
+
+// Adds the account type and name to the row
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType());
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+// Adds the row to the array
+contactData.add(rawContactRow);
+
+/*
+ * Sets up the phone number data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues phoneRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+phoneRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
+);
+
+// Adds the phone number and its type to the row
+phoneRow.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone);
+
+// Adds the row to the array
+contactData.add(phoneRow);
+
+/*
+ * Sets up the email data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues emailRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+emailRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE
+);
+
+// Adds the email address and its type to the row
+emailRow.put(ContactsContract.CommonDataKinds.Email.ADDRESS, email);
+
+// Adds the row to the array
+contactData.add(emailRow);
+
+/*
+ * Adds the array to the intent's extras. It must be a parcelable object in order to
+ * travel between processes. The device's contacts app expects its key to be
+ * Intents.Insert.DATA
+ */
+insertIntent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, contactData);
+
+// Send out the intent to start the device's contacts app in its add contact activity.
+startActivity(insertIntent);
+</pre>
+<h3 id="DataIntegrity">Целостность данных</h3>
+<p>
+    Поскольку в репозитории контактов содержится важная и конфиденциальная информация, которая, как ожидает пользователь, верна и
+актуальна, в поставщике контактов предусмотрены четко определенные правила для обеспечения целостности данных. При изменении данных контактов вы обязаны
+соблюдать эти правила. Вот наиболее
+важные из этих правил:
+</p>
+<dl>
+    <dt>
+        Всегда добавляйте строку {@link android.provider.ContactsContract.CommonDataKinds.StructuredName}
+к каждой добавляемой вами строке {@link android.provider.ContactsContract.RawContacts}.
+    </dt>
+    <dd>
+        Если в таблице {@link android.provider.ContactsContract.Data} имеется строка {@link android.provider.ContactsContract.RawContacts}
+без строки {@link android.provider.ContactsContract.CommonDataKinds.StructuredName},
+то могут возникнуть
+проблемы во время агрегирования.
+    </dd>
+    <dt>
+        Всегда связывайте новые строки {@link android.provider.ContactsContract.Data} с их
+родительскими строками {@link android.provider.ContactsContract.RawContacts}.
+    </dt>
+    <dd>
+        Строка {@link android.provider.ContactsContract.Data}, которая не связана
+с {@link android.provider.ContactsContract.RawContacts}, не будет отображаться в
+приложении для работы с контактами, имеющемся на устройстве, а также может привести к проблемам с адаптерами синхронизации.
+    </dd>
+    <dt>
+        Следует изменять данные только тех необработанных контактов, которыми вы владеете.
+    </dt>
+    <dd>
+        Помните о том, что поставщик контактов обычно управляет данными из
+нескольких аккаунтов различных типов или служб в Интернете. Необходимо убедиться в том, что ваше приложение изменяет
+или удаляет данные только для тех строк, которые принадлежат вам, а также в том, что оно вставляет данные с использованием только тех типов и имени аккаунта,
+которыми вы управляете.
+    </dd>
+    <dt>
+        Всегда используйте
+для центров, URI контента, путей URI, имен столбцов, типов MIME и значений
+{@link android.provider.ContactsContract.CommonDataKinds.CommonColumns#TYPE} только те константы, которые определены в классе {@link android.provider.ContactsContract} и его подклассах.
+    </dt>
+    <dd>
+        Это позволит избежать ошибок. Если какая либо константа устарела, компилятор сообщит об этом
+с помощью соответствующего предупреждения.
+    </dd>
+</dl>
+<h3 id="CustomData">Настраиваемые строки данных</h3>
+<p>
+    Создав и используя собственные типы MIME, вы можете вставлять, изменять, удалять и извлекать
+в таблице{@link android.provider.ContactsContract.Data} собственные строки данных. Ваши строки
+ограничены использованием столбца, который определен в
+{@link android.provider.ContactsContract.DataColumns}, однако вы можете сопоставить ваши собственные имена столбцов по типам строк
+с именами столбцов по умолчанию. Данные для ваших строк отображаются в приложении для работы с контактами, которое имеется на устройстве,
+однако их не удастся изменить или удалить, а также пользователи не смогут
+добавить дополнительные данные. Чтобы разрешить пользователям изменять ваши настраиваемые строки данных, необходимо реализовать в вашем приложении операцию
+редактора.
+</p>
+<p>
+    Для отображения настраиваемых данных укажите файл <code>contacts.xml</code>, содержащий элемент
+<code>&lt;ContactsAccountType&gt;</code> и один или несколько его
+<code>&lt;ContactsDataKind&gt;</code> дочерних элементов. Дополнительные сведения об этом представлены в разделе
+<a href="#SocialStreamDataKind"><code>&lt;ContactsDataKind&gt; element</code></a>.
+</p>
+<p>
+    Дополнительные сведения о настраиваемых типах MIME представлены в руководстве
+<a href="{@docRoot}guide/topics/providers/content-provider-creating.html">Создание
+поставщика контента</a>.
+</p>
+<h2 id="SyncAdapters">Адаптеры синхронизации поставщика контактов</h2>
+<p>
+    Поставщик контактов разработан специально для обработки операций <strong>синхронизации</strong>
+данных контактов между устройством и службой в Интернете. Благодаря этому пользователи
+могут загружать существующие данные на новое устройство и отправлять их в новый аккаунт.
+    Синхронизация также обеспечивает предоставление пользователю всегда актуальных сведений, независимо от
+источника их добавления и внесенных в них изменений. Еще одно преимущество синхронизации заключается в том,
+что данные контактов доступны даже в том случае, если устройство не подключено к сети.
+</p>
+<p>
+    Несмотря на множество различных способов реализации синхронизации данных, в системе Android имеется
+подключаемая платформа синхронизации, которая позволяет автоматизировать выполнение следующих задач:
+    <ul>
+
+    <li>
+        проверка доступности сети;
+    </li>
+    <li>
+        планирование и выполнение синхронизации на основе предпочтений пользователя;
+    </li>
+    <li>
+        перезапуск остановленных процессов синхронизации.
+    </li>
+    </ul>
+<p>
+    Для использования этой платформы вы предоставляете подключаемый модуль адаптера синхронизации. Каждый адаптер синхронизации является уникальным
+для службы и поставщика контента, однако способен работать с несколькими аккаунтами в одной службе. В платформе
+также предусмотрена возможность использовать несколько адаптеров синхронизации для одной и той же службы или поставщика.
+</p>
+<h3 id="SyncClassesFiles">Классы и файлы адаптера синхронизации</h3>
+<p>
+    Адаптер синхронизации реализуется как подкласс класса
+{@link android.content.AbstractThreadedSyncAdapter} и устанавливается в составе приложения
+Android. Система узнает о наличии адаптера синхронизации из элементов в манифесте
+вашего приложения, а также из особого файла XML, на который имеется указание в манифесте. В файле XML определяются
+тип аккаунта в онлайн-службе и центр поставщика контента, которые вместе служат уникальными
+идентификаторами адаптера. Адаптер синхронизации находится в неактивном состоянии до тех пор, пока пользователь не добавит
+тип аккаунта и не включит синхронизацию
+с поставщиком контента.  На этом этапе система вступает в управление адаптером
+, при необходимости вызывая его для синхронизации данных между поставщиком контента и сервером.
+</p>
+<p class="note">
+    <strong>Примечание.</strong> Использование типа аккаунта для идентификации адаптера синхронизации
+позволяет системе обнаруживать и группировать адаптеры синхронизации, которые обращаются к разным службам
+из одной и той же организации. Например, у всех адаптеров синхронизации для онлайн-служб Google
+один и тот же тип аккаунта — <code>com.google</code>. Когда пользователи добавляют на свои устройства аккаунт Google, все
+установленные адаптеры синхронизации группируются вместе; каждый из адаптеров
+синхронизируется только с отдельным поставщиком контента на устройстве.
+</p>
+<p>
+    Поскольку в большинстве служб пользователям сначала необходимо подтвердить свою подлинность, прежде чем они смогут получить доступ к данным,
+система Android предлагает платформу аутентификации, которая аналогична
+платформе адаптера синхронизации и зачастую используется совместно с ней. Платформа аутентификации
+использует подключаемые структуры проверки подлинности, которые представляют собой подклассы класса
+{@link android.accounts.AbstractAccountAuthenticator}. Такая структура проверяет
+подлинность пользователя следующим образом:
+    <ol>
+        <li>
+            Сначала собираются сведения об имени пользователя и его пароле или аналогичная информация (<strong>учетные данные</strong>
+пользователя).
+        </li>
+        <li>
+            Затем учетные данные оправляются в службу.
+        </li>
+        <li>
+            Наконец, изучается ответ, полученный от службы.
+        </li>
+    </ol>
+<p>
+    Если служба приняла учетные данные, структура проверки подлинности может
+сохранить их для использования в дальнейшем. Благодаря использованию структур проверки подлинности
+{@link android.accounts.AccountManager} может предоставить доступ к любым маркерам аутентификации, которые
+поддерживает структура проверки подлинности и которые она решает предоставить, например, к маркерам аутентификации OAuth2.
+</p>
+<p>
+    Несмотря на то что аутентификация не требуется, она используется большинством служб для работы с контактами.
+    Тем не менее, вам не обязательно использовать платформу аутентификации Android для проверки подлинности.
+</p>
+<h3 id="SyncAdapterImplementing">Реализация адаптера синхронизации</h3>
+<p>
+    Чтобы реализовать адаптер синхронизации для поставщика контактов, начните с создания
+приложения Android, которое содержит следующие компоненты.
+</p>
+    <dl>
+        <dt>
+            Компонент {@link android.app.Service}, который отвечает на запросы системы
+для привязки к адаптеру синхронизации.
+        </dt>
+        <dd>
+            Когда системе требуется запустить синхронизацию, она вызывает метод
+{@link android.app.Service#onBind(Intent) onBind()} службы, чтобы получить объект
+{@link android.os.IBinder} для адаптера синхронизации. Благодаря этому система
+может вызывать методы адаптера между процессами.
+            <p>
+                В
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">примере адаптера синхронизации</a> именем класса этой службы является
+<code>com.example.android.samplesync.syncadapter.SyncService</code>.
+            </p>
+        </dd>
+        <dt>
+            Адаптер синхронизации, фактически реализованный как конкретный подкласс
+класса {@link android.content.AbstractThreadedSyncAdapter}.
+        </dt>
+        <dd>
+            Этот класс не подходит для загрузки данных с сервера, отправки данных
+с устройства и разрешения конфликтов. Основную свою работу адаптер
+выполняет в методе {@link android.content.AbstractThreadedSyncAdapter#onPerformSync(
+Account, Bundle, String, ContentProviderClient, SyncResult)
+onPerformSync()}. Этот класс допускает создание только одного экземпляра.
+            <p>
+                В
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">примере адаптера синхронизации</a> адаптер определяется в классе
+<code>com.example.android.samplesync.syncadapter.SyncAdapter</code>.
+            </p>
+        </dd>
+        <dt>
+            Подкласс класса {@link android.app.Application}.
+        </dt>
+        <dd>
+            Этот класс выступает в роли фабрики для единственного экземпляра адаптера синхронизации. Воспользуйтесь методом
+{@link android.app.Application#onCreate()}, чтобы создать экземпляр адаптера синхронизации, а затем
+предоставьте статический метод get, чтобы возвратить единственный экземпляр в метод
+{@link android.app.Service#onBind(Intent) onBind()} службы
+адаптера синхронизации.
+        </dd>
+        <dt>
+            <strong>Необязательно:</strong> компонент {@link android.app.Service}, который отвечает на запросы
+системы для аутентификации пользователей.
+        </dt>
+        <dd>
+            {@link android.accounts.AccountManager} запускает службу, чтобы начать процесс
+аутентификации. Метод {@link android.app.Service#onCreate()} службы создает экземпляр
+объекта структуры проверки подлинности. Когда системе требуется запустить аутентификацию аккаунта пользователя для
+адаптера синхронизации приложения, она вызывает метод
+{@link android.app.Service#onBind(Intent) onBind()} службы, чтобы получить объект
+{@link android.os.IBinder} для структуры проверки подлинности. Благодаря этому система
+может вызывать методы структуры проверки подлинности между процессами.
+            <p>
+                В
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">примере адаптера синхронизации</a> именем класса этой службы является
+<code>com.example.android.samplesync.authenticator.AuthenticationService</code>.
+            </p>
+        </dd>
+        <dt>
+            <strong>Необязательно:</strong> конкретный подкласс класса
+{@link android.accounts.AbstractAccountAuthenticator}, который обрабатывает запросы на
+аутентификацию.
+        </dt>
+        <dd>
+            В этом классе имеются методы, которые {@link android.accounts.AccountManager} вызывает
+для проверки подлинности учетных данных пользователя на сервере. Подробности процесса
+аутентификации значительно различаются в зависимости от технологии, используемой на сервере. Чтобы узнать подробнее об аутентификации,
+обратитесь к соответствующей документации к программному обеспечению используемого сервера.
+            <p>
+                В
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">примере адаптера синхронизации</a> структура проверки подлинности определяется в классе
+<code>com.example.android.samplesync.authenticator.Authenticator</code>.
+            </p>
+        </dd>
+        <dt>
+            Файлы XML, в которых определяются адаптер синхронизация и структура проверки подлинности для системы.
+        </dt>
+        <dd>
+            Описанные ранее компоненты службы адаптера синхронизации и структуры проверки подлинности определяются
+в элементах
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/service-element.html">service</a>&gt;</code>
+в манифесте приложения. Эти элементы
+включают дочерние элементы
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+, в которых имеются определенные данные для
+системы.
+            <ul>
+                <li>
+                    Элемент
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+для службы адаптера синхронизации указывает на файл
+XML <code>res/xml/syncadapter.xml</code>. В свою очередь, в этом файле задается
+URI веб-службы для синхронизации с поставщиком контактов,
+а также тип аккаунта для этой веб-службы.
+                </li>
+                <li>
+                    <strong>Необязательно:</strong> элемент
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+для структуры проверки подлинности указывает на файл XML 
+<code>res/xml/authenticator.xml</code>. В свою очередь, в этом файле задается
+тип аккаунта, который поддерживает структура проверки подлинности, а также ресурсы пользовательского интерфейса,
+которые отображаются в процессе аутентификации. Тип аккаунта, указанный в этом
+элементе, должен совпадать с типом аккаунта, который задан для
+адаптера синхронизации.
+                </li>
+            </ul>
+        </dd>
+    </dl>
+<h2 id="SocialStream">Потоки данных из социальных сетей</h2>
+<p>
+    Для управления входящими данными из социальных сетей используются таблицы {@code android.provider.ContactsContract.StreamItems}

+{@code android.provider.ContactsContract.StreamItemPhotos}. Можно создать адаптер синхронизации, который добавляет поток данных
+из вашей собственной сети в эти таблицы, либо вы можете считывать поток данных из этих таблиц и отображать
+их в собственном приложении. Можно также реализовать оба этих способа. С помощью этих функций вы можете интегрировать службы социальных сетей
+в компоненты Android для работы с социальными сетями.
+</p>
+<h3 id="StreamText">Текст из потока данных из социальных сетей</h3>
+<p>
+    Элементы потока всегда ассоциируются с необработанным контактом. Идентификатор
+{@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID} связывается со значением
+<code>_ID</code> необработанного контакта. Тип аккаунта и его имя для необработанного
+контакта также хранятся в строке элемента потока.
+</p>
+<p>
+    Данные из потока следует хранить в следующих столбцах:
+</p>
+<dl>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_TYPE}
+    </dt>
+    <dd>
+        <strong>Обязательный.</strong> Тип аккаунта пользователя для необработанного контакта, связанного с
+этим элементом потока. Не забудьте задать это значение при вставке элемента потока.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_NAME}
+    </dt>
+    <dd>
+        <strong>Обязательный.</strong> Имя аккаунта пользователя для необработанного контакта, связанного с
+этим элементом потока. Не забудьте задать это значение при вставке элемента потока.
+    </dd>
+    <dt>
+        Столбцы идентификатора
+    </dt>
+    <dd>
+        <strong>Обязательный.</strong> При вставке элемента потока необходимо вставить
+указанные ниже столбцы идентификатора.
+        <ul>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_ID}: значение
+{@code android.provider.BaseColumns#_ID} для контакта, с которым ассоциирован
+этот элемент потока.
+            </li>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_LOOKUP_KEY}: значение
+{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} для контакта, с которым ассоциирован
+этот элемент потока.
+            </li>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}: значение
+{@code android.provider.BaseColumns#_ID} для необработанного контакта, с которым ассоциирован
+этот элемент потока.
+            </li>
+        </ul>
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#COMMENTS}
+    </dt>
+    <dd>
+        Необязательный. В нем хранится сводная информация, которую можно отобразить в начале элемента потока.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#TEXT}
+    </dt>
+    <dd>
+        Текст элемента потока: либо контент, опубликованный источником элемента,
+либо описание некоторого действия, сгенерировавшего элемент потока. В этом столбце могут содержаться
+любое форматирование и встроенные изображения ресурсов, рендеринг которых можно выполнить с помощью метода
+{@link android.text.Html#fromHtml(String) fromHtml()}. Поставщик может обрезать слишком длинный контент
+или заменить его часть многоточием, однако он попытается избежать нарушения тегов.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP}
+    </dt>
+    <dd>
+        Текстовая строка с информацией о времени вставки или обновления элемента в
+<em>миллисекундах</em> от начала отсчета времени. Обслуживанием этого столбца занимаются приложения, которые вставляют или
+обновляют элементы потока; поставщик контактов не выполняет
+это автоматически.
+    </dd>
+</dl>
+<p>
+    Для отображения идентификационной информации для элементов потока воспользуйтесь
+{@code android.provider.ContactsContract.StreamItemsColumns#RES_ICON},
+{@code android.provider.ContactsContract.StreamItemsColumns#RES_LABEL} и
+{@code android.provider.ContactsContract.StreamItemsColumns#RES_PACKAGE} для связывания с ресурсами
+в вашем приложении.
+</p>
+<p>
+    В таблице {@code android.provider.ContactsContract.StreamItems} также имеются столбцы
+{@code android.provider.ContactsContract.StreamItemsColumns#SYNC1}—{@code android.provider.ContactsContract.StreamItemsColumns#SYNC4},
+которые предназначены исключительно для
+адаптеров синхронизации.
+</p>
+<h3 id="StreamPhotos">Фотографии из потока данных из социальных сетей</h3>
+<p>
+   Фотографии, связанные с элементом потока, хранятся в таблице
+{@code android.provider.ContactsContract.StreamItemPhotos}. Столбец
+{@code android.provider.ContactsContract.StreamItemPhotosColumns#STREAM_ITEM_ID}
+в этой таблице связан со столбцом {@code android.provider.BaseColumns#_ID}
+в таблице {@code android.provider.ContactsContract.StreamItems}. Ссылки на фотографии хранятся в следующих столбцах
+таблицы:
+</p>
+<dl>
+    <dt>
+        Столбец {@code android.provider.ContactsContract.StreamItemPhotos#PHOTO} (объект BLOB).
+    </dt>
+    <dd>
+        Представление фотографии в двоичном формате и с измененным поставщиком размером для ее хранения и отображения.
+        Этот столбец доступен для обеспечения обратной совместимости с предыдущими версиями поставщика
+контактов, которые использовались для хранения фотографий. Однако в текущей версии
+поставщика мы не рекомендуем использовать этот столбец для хранения фотографий. Вместо этого воспользуйтесь столбцом
+{@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID} или
+{@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI} (или обоими
+столбцами, как описано далее) для хранения фотографий в файле. В этом
+столбце теперь хранятся миниатюры фотографий, доступных для чтения.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID}
+    </dt>
+    <dd>
+        Числовой идентификатор фотографии для необработанного контакта. Добавьте это значение к константе
+{@link android.provider.ContactsContract.DisplayPhoto#CONTENT_URI DisplayPhoto.CONTENT_URI},
+чтобы получить URI контента для одного файла фотографии, а затем вызовите метод
+{@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
+openAssetFileDescriptor()}, чтобы получить средство обработки файла фотографии.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI}
+    </dt>
+    <dd>
+        URI контента, указывающий на файл фотографии, для фотографии, которая представлена этой строкой.
+        Вызовите метод {@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
+openAssetFileDescriptor()}, передав в него этот URI, чтобы получить средство обработки файла фотографии.
+    </dd>
+</dl>
+<h3 id="SocialStreamTables">Использование таблиц из потока данных из социальных сетей</h3>
+<p>
+    Эти таблицы работают аналогично другим основным таблицам в поставщике контактов, за исключением указанных ниже моментов.
+</p>
+    <ul>
+        <li>
+            Для работы с этими таблицами требуются дополнительные разрешения на доступ. Для чтения данных из них вашему приложению
+должно быть предоставлено разрешение {@code android.Manifest.permission#READ_SOCIAL_STREAM}. Для
+изменения таблиц ваше приложение должно иметь разрешение
+{@code android.Manifest.permission#WRITE_SOCIAL_STREAM}.
+        </li>
+        <li>
+            Для таблицы {@code android.provider.ContactsContract.StreamItems} существует ограничение на количество строк,
+которое можно хранить для каждого необработанного контакта. При достижении этого ограничения
+поставщик контактов освобождает место для новых строк элементов потока путем автоматического удаления
+строк со самой старой меткой
+{@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP}. Чтобы получить это ограничение,
+запросите URI контента
+{@code android.provider.ContactsContract.StreamItems#CONTENT_LIMIT_URI}. Для всех аргументов,
+отличных от URI контента, можно оставить значение <code>null</code>. Запрос возвращает
+объект Cursor, в котором содержится одна строка с одним столбцом
+{@code android.provider.ContactsContract.StreamItems#MAX_ITEMS}.
+        </li>
+    </ul>
+
+<p>
+    Класс {@code android.provider.ContactsContract.StreamItems.StreamItemPhotos} определяет
+дочернюю таблицу объектов {@code android.provider.ContactsContract.StreamItemPhotos}, в которой содержатся
+строки для одного элемента потока.
+</p>
+<h3 id="SocialStreamInteraction">Взаимодействие с потоками данных из социальных сетей</h3>
+<p>
+    Управление потоком данных из социальных сетей осуществляется поставщиком контактов совместно с приложением для управления контактами, имеющимся на устройстве.
+Такой подход позволяет организовать эффективное использование данных из социальных сетей
+с данными о существующих контактах. Доступны указанные ниже функции.
+</p>
+    <ul>
+        <li>
+            Организовав синхронизацию данных из социальной службы с поставщиком контактов посредством
+адаптера синхронизации, вы можете получать данные о недавней активности контактов пользователя и хранить такие данные в таблицах
+,{@code android.provider.ContactsContract.StreamItems}
+и {@code android.provider.ContactsContract.StreamItemPhotos} для использования в дальнейшем.
+        </li>
+        <li>
+            Помимо регулярной синхронизации, адаптер синхронизации можно настроить на получение
+дополнительных данных при выборе пользователем контакта для просмотра. Благодаря этому ваш адаптер синхронизации
+может получать фотографии высокого разрешения и самые актуальные элементы потока для контакта.
+        </li>
+        <li>
+            Регистрируя уведомление в приложении для работы с контактами и в поставщике
+контактов, вы можете<em>получать</em> намерения при просмотре контакта и обновлять на этом этапе
+данные о состоянии контакта из вашей службы. Такой подход может обеспечить большее быстродействие и меньший объем
+использования полосы пропускания, чем выполнение полной синхронизации с помощью адаптера синхронизации.
+        </li>
+        <li>
+            Пользователи могут добавить контакт в вашу службу социальной сети, обратившись к контакту
+в приложении для работы с контактами, которое имеется на устройстве. Это реализуется с помощью функции «пригласить контакт»,
+для включения которой используется сочетание операции,
+которая добавляет существующий контакт в вашу сеть, и файла XML, в котором представлены сведения о вашем приложении для поставщика контактов и приложения для работы с
+контактами.
+        </li>
+    </ul>
+<p>
+    Регулярная синхронизация элементов потока с помощью поставщика контактов выполняется так же,
+как и любая другая синхронизация. Дополнительные сведения о синхронизации представлены в разделе 
+<a href="#SyncAdapters">Адаптеры синхронизации поставщика контактов</a>. Регистрация уведомлений
+и приглашение контактов рассматриваются в следующих двух разделах.
+</p>
+<h4>Регистрация для обработки просмотров контактов в социальных сетях</h4>
+<p>
+    Чтобы зарегистрировать адаптер синхронизации для получения уведомлений о просмотрах пользователями контакта,
+управление которым осуществляется вашим адаптером синхронизации, выполните указанные ниже действия.
+</p>
+<ol>
+    <li>
+        В каталоге <code>res/xml/</code> своего проекта создайте файл
+<code>contacts.xml</code>. Если у вас уже есть этот файл, переходите к следующему действию.
+    </li>
+    <li>
+        В этом файле добавьте элемент
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>.
+        Если этот элемент уже существует, можете переходить к следующему действию.
+    </li>
+    <li>
+        Чтобы зарегистрировать службу, которой отправляется уведомление при открытии пользователем страницы со сведениями о контакте
+в приложении для работы с контактами, которое имеется на устройстве, добавьте атрибут
+<code>viewContactNotifyService="<em>serviceclass</em>"</code> к элементу, где
+<code><em>serviceclass</em></code> — это полное имя класса службы,
+которая должна получить намерение из приложения для работы с контактами. Для службы-уведомителя
+используйте класс, который является расширением класса {@link android.app.IntentService}, чтобы разрешить службе
+получать намерения. Данные во входящем намерении содержат URI контента необработанного
+контакта, выбранного пользователем. В службе-уведомителе можно привязать адаптер синхронизации, а затем вызвать его
+для обновления данных для необработанного контакта.
+    </li>
+</ol>
+<p>
+    Чтобы зарегистрировать операцию, которую следует вызвать при выборе пользователем элемента потока или фотографии (или обоих элементов), выполните указанные ниже действия.
+</p>
+<ol>
+    <li>
+        В каталоге <code>res/xml/</code> своего проекта создайте файл
+<code>contacts.xml</code>. Если у вас уже есть этот файл, переходите к следующему действию.
+    </li>
+    <li>
+        В этом файле добавьте элемент
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>.
+        Если этот элемент уже существует, можете переходить к следующему действию.
+    </li>
+    <li>
+        Чтобы зарегистрировать одну из ваших операций для обработки выбора пользователем элемента потока
+в приложении для работы с контактами, которое имеется на устройстве, добавьте атрибут
+<code>viewStreamItemActivity="<em>activityclass</em>"</code> к элементу, где
+<code><em>activityclass</em></code> — это полное имя класса операции,
+которая должна получить намерение из приложения для работы с контактами.
+    </li>
+    <li>
+        Чтобы зарегистрировать одну из ваших операций для обработки выбора пользователем фотографии в потоке
+в приложении для работы с контактами, которое имеется на устройстве, добавьте атрибут
+<code>viewStreamItemPhotoActivity="<em>activityclass</em>"</code> к элементу, где
+<code><em>activityclass</em></code> — это полное имя класса операции,
+которая должна получить намерение из приложения для работы с контактами.
+    </li>
+</ol>
+<p>
+    Дополнительные сведения об элементе <code>&lt;ContactsAccountType&gt;</code> представлены в разделе
+<a href="#SocialStreamAcctType">элемент &lt;ContactsAccountType&gt;</a>.
+</p>
+<p>
+    Данные во входящем намерении содержат URI контента элемента или фотографии, выбранных пользователем.
+    Чтобы использовать разные операции для текстовых элементов и фотографий, используйте оба атрибута в одном файле.
+</p>
+<h4>Взаимодействие со службой социальной сети</h4>
+<p>
+    Пользователям не обязательно выходить из приложения для работы с контактами, которое имеется на устройстве, чтобы пригласить контакт на сайт
+социальной сети. Вместо этого приложение для работы с контактами может отправить намерение для приглашения 
+контакта в одну из ваших операций. Для этого выполните указанные ниже действия.
+</p>
+<ol>
+    <li>
+        В каталоге <code>res/xml/</code> своего проекта создайте файл
+<code>contacts.xml</code>. Если у вас уже есть этот файл, переходите к следующему действию.
+    </li>
+    <li>
+        В этом файле добавьте элемент
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>.
+        Если этот элемент уже существует, можете переходить к следующему действию.
+    </li>
+    <li>
+        Добавьте следующие атрибуты:
+        <ul>
+            <li><code>inviteContactActivity="<em>activityclass</em>"</code>;</li>
+            <li>
+                <code>inviteContactActionLabel="&#64;string/<em>invite_action_label</em>"</code>.
+            </li>
+        </ul>
+        Значение <code><em>activityclass</em></code> представляет собой полное имя класса операции,
+которая должна получить намерение. Значение<code><em>invite_action_label</em></code>
+— это текстовая строка, которая отображается в меню <strong>Добавить подключение</strong>
+в приложении для работы с контактами.
+    </li>
+</ol>
+<p class="note">
+    <strong>Примечание.</strong> <code>ContactsSource</code> — это устаревшее имя тега для
+<code>ContactsAccountType</code>, которое больше не используется.
+</p>
+<h3 id="ContactsFile">Ссылка contacts.xml</h3>
+<p>
+    В файле <code>contacts.xml</code> содержатся элементы XML, которые управляют взаимодействием вашего
+адаптера синхронизации и вашего приложения с поставщиком контактов и приложением для работы с контактами. Эти
+элементы описаны в следующих разделах.
+</p>
+<h4 id="SocialStreamAcctType">Элемент &lt;ContactsAccountType&gt;</h4>
+<p>
+    Элемент <code>&lt;ContactsAccountType&gt;</code> управляет взаимодействием вашего
+приложения с приложением для работы с контактами. Ниже представлен его синтаксис.
+</p>
+<pre>
+&lt;ContactsAccountType
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        inviteContactActivity="<em>activity_name</em>"
+        inviteContactActionLabel="<em>invite_command_text</em>"
+        viewContactNotifyService="<em>view_notify_service</em>"
+        viewGroupActivity="<em>group_view_activity</em>"
+        viewGroupActionLabel="<em>group_action_text</em>"
+        viewStreamItemActivity="<em>viewstream_activity_name</em>"
+        viewStreamItemPhotoActivity="<em>viewphotostream_activity_name</em>"&gt;
+</pre>
+<p>
+    <strong>находится в:</strong>
+</p>
+<p>
+    <code>res/xml/contacts.xml</code>
+</p>
+<p>
+    <strong>может содержать:</strong>
+</p>
+<p>
+    <strong><code>&lt;ContactsDataKind&gt;</code></strong>
+</p>
+<p>
+    <strong>Описание</strong>
+</p>
+<p>
+    Этот элемент объявляет компоненты и элементы пользовательского интерфейса, с помощью которых пользователи могут приглашать свои контакты
+в социальную сеть, уведомлять пользователей при обновлении одного из их потоков данных из социальных сетей и
+др.
+</p>
+<p>
+    Обратите внимание, что префикс атрибута <code>android:</code> необязательно использовать для атрибутов
+<code>&lt;ContactsAccountType&gt;</code>.
+</p>
+<p>
+    <strong>Атрибуты</strong>
+</p>
+<dl>
+    <dt>{@code inviteContactActivity}</dt>
+    <dd>
+        Полное имя класса операции в вашем приложении, которую необходимо активировать
+при выборе пользователем элемента <strong>Добавить подключение</strong> в приложении
+для работы с контактами, которое имеется на устройстве.
+    </dd>
+    <dt>{@code inviteContactActionLabel}</dt>
+    <dd>
+        Текстовая строка, которая отображается для операции, заданной в
+{@code inviteContactActivity}, в меню <strong>Добавить подключение</strong>.
+        Например, можно указать фразу «Следите за новостями в моей сети». Для этого элемента можно использовать
+идентификатор строкового ресурса.
+    </dd>
+    <dt>{@code viewContactNotifyService}</dt>
+    <dd>
+        Полное имя класса службы в вашем приложении, которая должна получать
+уведомления при просмотре контакта пользователем. Такое уведомление отправляется приложением для работы с контактами,
+которое имеется на устройстве; благодаря этому ваше приложение может отложить выполнение операций, требующих обработки большого объема данных, до тех пор
+, пока это не потребуется. Например, ваше приложение может реагировать на такое уведомление
+путем считывания и отображения фотографии контакта в высоком разрешении и самых актуальных
+элементов потока данных из социальной сети. Дополнительные сведения об этой функции представлены в разделе
+<a href="#SocialStreamInteraction">Взаимодействие с потоками данных из социальных сетей</a>. Пример
+службы уведомлений представлен в файле
+<code>NotifierService.java</code> в
+образце приложения<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>.
+    </dd>
+    <dt>{@code viewGroupActivity}</dt>
+    <dd>
+        Полное имя класса операции в вашем приложении, которая может отобразить
+информацию о группе. При нажатии пользователем на метку группы в приложении для работы с данными,
+которое имеется на устройстве, отображается пользовательский интерфейс для этой операции.
+    </dd>
+    <dt>{@code viewGroupActionLabel}</dt>
+    <dd>
+        Метка, отображаемая приложением для работы с контактами для элемента пользовательского интерфейса, с помощью которой
+пользователь может просмотреть группы в вашем приложении.
+        <p>
+            Например, если вы установили приложение Google+ на ваше устройство и выполняете синхронизацию
+данных в Google+ с приложением для работы с контактами, то круги Google+ будут обозначены в приложении для работы с контактами как
+группы на вкладке <strong>Группы</strong>. При нажатии на на круг
+Google+ участники крга отобразятся как группа контактов. В верхней части экрана
+находится значок Google+; если нажать на него, управление перейдет в приложение
+Google+. В приложении для управления контактами это реализовано с помощью
+{@code viewGroupActivity}, в которой значок Google+ используется в качестве значения
+{@code viewGroupActionLabel}.
+        </p>
+        <p>
+            Для этого атрибута можно использовать идентификатор строкового ресурса.
+        </p>
+    </dd>
+    <dt>{@code viewStreamItemActivity}</dt>
+    <dd>
+        Полное имя класса операции в вашем приложении, которую запускает
+приложение для работы с контактами, когда пользователь выбирает элемент потока для необработанного контакта.
+    </dd>
+    <dt>{@code viewStreamItemPhotoActivity}</dt>
+    <dd>
+        Полное имя класса операции в вашем приложении, которую запускает
+приложение для работы с контактами, когда пользователь выбирает фотографию в элементе
+потока для необработанного контакта.
+    </dd>
+</dl>
+<h4 id="SocialStreamDataKind">Элемент &lt;ContactsDataKind&gt;</h4>
+<p>
+    Элемент <code>&lt;ContactsDataKind&gt;</code> управляет отображением настраиваемых строк данных вашего
+приложения в интерфейсе приложения для работы с контактами, которое имеется на устройстве. Ниже представлен его синтаксис.
+</p>
+<pre>
+&lt;ContactsDataKind
+        android:mimeType="<em>MIMEtype</em>"
+        android:icon="<em>icon_resources</em>"
+        android:summaryColumn="<em>column_name</em>"
+        android:detailColumn="<em>column_name</em>"&gt;
+</pre>
+<p>
+    <strong>находится в:</strong>
+</p>
+<code>&lt;ContactsAccountType&gt;</code>
+<p>
+    <strong>Описание</strong>
+</p>
+<p>
+    Используйте этот элемент для отображения содержимого настраиваемой строки данных в приложении для работы с контактами как части
+сведений о необработанном контакте. Каждый дочерний элемент <code>&lt;ContactsDataKind&gt;</code>
+элемента <code>&lt;ContactsAccountType&gt;</code> представляет собой тип настраиваемой строки данных, который
+адаптер синхронизации добавляет в таблицу {@link android.provider.ContactsContract.Data}. Для каждого используемого вами настраиваемого типа MIME необходимо добавить один элемент
+<code>&lt;ContactsDataKind&gt;</code>. Вам не нужно добавлять элемент
+, если у вас имеется настраиваемая строка данных, для которой не требуется отображать данные.
+</p>
+<p>
+    <strong>Атрибуты</strong>
+</p>
+<dl>
+    <dt>{@code android:mimeType}</dt>
+    <dd>
+        Определенные вами настраиваемые типы MIME для одного из ваших типов настраиваемых строк данных в таблице
+{@link android.provider.ContactsContract.Data}. Например, значение
+<code>vnd.android.cursor.item/vnd.example.locationstatus</code> может быть настраиваемым
+типом MIME для строки данных, в которой находятся записи о последнем известном местоположении контакта.
+    </dd>
+    <dt>{@code android:icon}</dt>
+    <dd>
+        <a href="{@docRoot}guide/topics/resources/drawable-resource.html">Графический ресурс </a>
+Android,
+который приложение для работы с контактами отображает рядом с вашими данными. Используйте его для обозначения того,
+что эти данные получены из вашей службы.
+    </dd>
+    <dt>{@code android:summaryColumn}</dt>
+    <dd>
+        Имя столбца для первого из двух значений, полученных из строки данных. Значение
+отображается в виде первой строки записи в этой строке данных. Первая строка
+предназначена для использования в качестве сводных данных, однако она необязательна. См. также
+<a href="#detailColumn">android:detailColumn</a>.
+    </dd>
+    <dt>{@code android:detailColumn}</dt>
+    <dd>
+        Имя столбца для второго из двух значений, полученных из строки данных. Значение
+отображается в виде второй строки записи в этой строке данных. См. также
+{@code android:summaryColumn}.
+    </dd>
+</dl>
+<h2 id="AdditionalFeatures">Дополнительные возможности поставщика контактов</h2>
+<p>
+    Помимо основных функций, описанных разделах выше, в поставщике
+контактов предусмотрены указанные ниже полезные функции для работы с данными контактов.
+</p>
+    <ul>
+       <li>Группы контактов</li>
+       <li>Функции работы с фотографиями</li>
+    </ul>
+<h3 id="Groups">Группы контактов</h3>
+<p>
+    Поставщик контактов может дополнительно отметить коллекции связанных контактов с данными о
+<strong>группе</strong>. Если серверу, который связан с учетной записью пользователя,
+требуется сохранить группы, адаптеру синхронизации для типа этого аккаунта следует передать
+данные о группах из поставщика контактов на сервер. При добавлении пользователем нового контакта на сервер
+и последующем помещении этого контакта в новую группу адаптер синхронизации должен добавить эту новую группу в таблицу
+{@link android.provider.ContactsContract.Groups}. Группа или группы, в которые входит необработанный контакт,
+хранятся в таблице {@link android.provider.ContactsContract.Data} с использованием типа MIME
+{@link android.provider.ContactsContract.CommonDataKinds.GroupMembership}.
+</p>
+<p>
+    Если необходимо создать адаптер синхронизации, который будет добавлять данные необработанного контакта с сервера
+в поставщик контактов, а вы не используете группы, то вам необходимо указать для поставщика,
+чтобы он сделал ваши данные видимыми. В коде, который выполняется при добавлении пользователем
+аккаунта на устройство, обновите строку {@link android.provider.ContactsContract.Settings},
+которую поставщик контактов добавляет для этого аккаунта. В этой строке укажите в столбце
+{@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE
+Settings.UNGROUPED_VISIBLE} значение «1». После этого поставщик контактов всегда будет
+делать ваши данные видимыми, даже если вы не используете группы.
+</p>
+<h3 id="Photos">Фотографии контактов</h3>
+<p>
+    В таблице {@link android.provider.ContactsContract.Data} хранятся фотографии в виде строк
+{@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
+Photo.CONTENT_ITEM_TYPE} типа MIME. Столбец
+{@link android.provider.ContactsContract.RawContactsColumns#CONTACT_ID} в строке связан со столбцом
+{@code android.provider.BaseColumns#_ID} необработанного контакта, которому он принадлежит.
+    Класс {@link android.provider.ContactsContract.Contacts.Photo} определяет вложенную таблицу
+{@link android.provider.ContactsContract.Contacts}, в которой содержится информация об основной фотографии
+контакта (которая является основной фотографией основного необработанного контакта этого контакта). Аналогичным образом класс
+{@link android.provider.ContactsContract.RawContacts.DisplayPhoto} определяет вложенную таблицу
+{@link android.provider.ContactsContract.RawContacts}, в которой содержится информация об основной фотографии
+необработанного контакта.
+</p>
+<p>
+    В справочной документации по {@link android.provider.ContactsContract.Contacts.Photo} и
+{@link android.provider.ContactsContract.RawContacts.DisplayPhoto} содержатся примеры
+получения информации о фотографии. К сожалению, отсутствует класс для удобного извлечения миниатюры
+основной фотографии необработанного контакта, однако вы можете отправить запрос в таблицу
+{@link android.provider.ContactsContract.Data}, выбрать
+{@code android.provider.BaseColumns#_ID} необработанного контакта,
+{@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
+Photo.CONTENT_ITEM_TYPE} и столбец {@link android.provider.ContactsContract.Data#IS_PRIMARY},
+чтобы найти строку основной фотографии необработанного контакта.
+</p>
+<p>
+    Потоки данных из социальных сетей также могут включать фотографии. Они находятся в таблице
+{@code android.provider.ContactsContract.StreamItemPhotos}, дополнительные сведения о которой представлены в разделе
+<a href="#StreamPhotos">Фотографии из потока данных из социальных сетей</a>.
+</p>
diff --git a/docs/html-intl/intl/ru/guide/topics/providers/content-provider-basics.jd b/docs/html-intl/intl/ru/guide/topics/providers/content-provider-basics.jd
new file mode 100644
index 0000000..c912dbc
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/providers/content-provider-basics.jd
@@ -0,0 +1,1196 @@
+page.title=Основные сведения о поставщике контента
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<!-- In this document -->
+<h2>Содержание документа</h2>
+<ol>
+    <li>
+        <a href="#Basics">Обзор</a>
+        <ol>
+            <li>
+                <a href="#ClientProvider">Доступ к поставщику</a>
+            </li>
+            <li>
+                <a href="#ContentURIs">URI контента</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#SimpleQuery">Получение данных от поставщика</a>
+        <ol>
+            <li>
+                <a href="#RequestPermissions">Запрос разрешения на чтение</a>
+            </li>
+            <li>
+                <a href="#Query">Создание запроса</a>
+            </li>
+            <li>
+                <a href="#DisplayResults">Отображение результатов запроса</a>
+            </li>
+            <li>
+                <a href="#GettingResults">Получение данных из результатов запроса</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#Permissions">Разрешения поставщика контента</a>
+    </li>
+    <li>
+        <a href="#Modifications">Вставка, обновление и удаление данных</a>
+        <ol>
+            <li>
+                <a href="#Inserting">Вставка данных</a>
+            </li>
+            <li>
+                <a href="#Updating">Обновление данных</a>
+            </li>
+            <li>
+                <a href="#Deleting">Удаление данных</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#DataTypes">Типы поставщиков данных</a>
+    </li>
+    <li>
+        <a href="#AltForms">Альтернативные формы доступа к поставщику</a>
+        <ol>
+            <li>
+                <a href="#Batch">Пакетный доступ</a>
+            </li>
+            <li>
+                <a href="#Intents">Доступ к данным с помощью намерений</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#ContractClasses">Классы-контракты</a>
+    </li>
+    <li>
+        <a href="#MIMETypeReference">Справка по типам MIME</a>
+    </li>
+</ol>
+
+    <!-- Key Classes -->
+<h2>Ключевые классы</h2>
+    <ol>
+        <li>
+            {@link android.content.ContentProvider}
+        </li>
+        <li>
+            {@link android.content.ContentResolver}
+        </li>
+        <li>
+            {@link android.database.Cursor}
+        </li>
+        <li>
+            {@link android.net.Uri}
+        </li>
+    </ol>
+
+    <!-- Related Samples -->
+<h2>Связанные примеры</h2>
+    <ol>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html">
+        Cursor (People)</a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html">
+        Cursor (Phones)</a>
+        </li>
+    </ol>
+
+    <!-- See also -->
+<h2>См. также</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+Создание поставщика контента</a>
+        </li>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+Поставщик календаря</a>
+        </li>
+    </ol>
+</div>
+</div>
+
+    <!-- Intro paragraphs -->
+<p>
+    Поставщик контента управляет доступом к центральному репозиторию данных. Поставщик
+является компонентом приложения Android, который зачастую имеет собственный пользовательский интерфейс для
+работы с данными. Однако поставщики контента предназначены в первую очередь для использования другими приложениями,
+которые получают доступ к поставщику посредством клиентского объекта поставщика. Вместе поставщики
+и клиенты поставщиков обеспечивают согласованный, стандартный интерфейс к данным, который также обрабатывает
+взаимодействие между процессами и обеспечивает защищенный доступ к данным.
+</p>
+<p>
+    В этой статье рассматриваются основные сведения, касающиеся следующих тем:
+</p>
+    <ul>
+        <li>принцип работы поставщика контента;</li>
+        <li>API, используемый для получения данных от поставщика контента;</li>
+        <li>API, используемый для вставки данных в поставщик контента и их обновления или удаления в нем;</li>
+        <li>другие функции API, которые упрощают работу с поставщиками.</li>
+    </ul>
+
+    <!-- Basics -->
+<h2 id="Basics">Обзор</h2>
+<p>
+    Поставщик контента предоставляет данные внешним приложениям в виде одной или нескольких таблиц,
+аналогичных таблицам в реляционной базе данных. Строка представляет собой экземпляр некоторого типа
+собираемых поставщиком данных, а каждый столбец в этой строке — это отдельный элемент данных,
+собранных для экземпляра.
+</p>
+<p>
+    Примером встроенного поставщика в платформе Android может служить пользовательский словарь,
+в котором хранятся данные о написании нестандартных слов, добавленных пользователем. В таблице 1 показано,
+как данные могут выглядеть в этой таблице поставщика.
+</p>
+<p class="table-caption">
+    <strong>Таблица 1.</strong> Пример таблицы пользовательского словаря.
+</p>
+<table id="table1" style="width: 50%;">
+    <tr>
+        <th style="width:20%" align="center" scope="col">word</th>
+        <th style="width:20%" align="center" scope="col">app id</th>
+        <th style="width:20%" align="center" scope="col">frequency</th>
+        <th style="width:20%" align="center" scope="col">locale</th>
+        <th style="width:20%" align="center" scope="col">_ID</th>
+    </tr>
+    <tr>
+        <td align="center" scope="row">mapreduce</td>
+        <td align="center">user1</td>
+        <td align="center">100</td>
+        <td align="center">en_US</td>
+        <td align="center">1</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">precompiler</td>
+        <td align="center">user14</td>
+        <td align="center">200</td>
+        <td align="center">fr_FR</td>
+        <td align="center">2</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">applet</td>
+        <td align="center">user2</td>
+        <td align="center">225</td>
+        <td align="center">fr_CA</td>
+        <td align="center">3</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">const</td>
+        <td align="center">user1</td>
+        <td align="center">255</td>
+        <td align="center">pt_BR</td>
+        <td align="center">4</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">int</td>
+        <td align="center">user5</td>
+        <td align="center">100</td>
+        <td align="center">en_UK</td>
+        <td align="center">5</td>
+    </tr>
+</table>
+<p>
+    В каждой строке таблицы 1 представлен экземпляр слова, которое отсутствует
+в стандартном словаре. В каждом ее столбце содержатся некоторые данные для слова,
+например, данные о языке, на котором это слово было впервые использовано. Заголовки столбцов представляют собой имена столбцов, которые хранятся
+в поставщике. Чтобы узнать язык строки, необходимо обратиться к столбцу <code>locale</code>. В этом
+поставщике столбец <code>_ID</code> выступает в роли «основного ключа»,
+который поставщик автоматически сохраняет.
+</p>
+<p class="note">
+    <strong>Примечание.</strong> В поставщике необязательно должен быть основной ключ, а также ему необязательно
+использовать<code>_ID</code> в качестве имени столбца основного ключа, если таковой имеется. Однако, если
+необходимо привязать данные из поставщика к классу {@link android.widget.ListView},
+один из столбцов должен именоваться <code>_ID</code>. Дополнительные сведения об этом требовании представлены в разделе
+<a href="#DisplayResults">Отображение результатов запроса</a>.
+</p>
+<h3 id="ClientProvider">Доступ к поставщику</h3>
+<p>
+    Для доступа приложения к данным из поставщика контента
+используется клиентский объект {@link android.content.ContentResolver}. В этом объекте имеются методы, которые вызывают
+идентичные методы в объекте поставщика, который представляет собой экземпляр одного из конкретных
+подклассов класса {@link android.content.ContentProvider}. В этих методах
+{@link android.content.ContentResolver} представлены основные функции
+ CRUD (аббревиатура create, retrieve, update, delete [создание, получение, обновление и удаление]) постоянного хранилища.
+</p>
+<p>
+    Объект {@link android.content.ContentResolver} в процессе клиентского приложения
+и объект {@link android.content.ContentProvider} в приложении,
+которое владеет поставщиком, автоматически обрабатывают взаимодействие между процессами.
+Объект {@link android.content.ContentProvider} также выступает в роли уровня абстракции между
+репозиторием данных и внешним представлением данных в виде таблиц.
+</p>
+<p class="note">
+    <strong>Примечание.</strong> Для доступа к поставщику ваше приложение обычно должно запросить определенные разрешения
+в своем файле манифеста. Дополнительные сведения об этом представлены в разделе
+<a href="#Permissions">Разрешения поставщика контента</a>.
+</p>
+<p>
+    Например, чтобы получить из поставщика пользовательского словаря список слов и языков, на которых они представлены,
+вызовите метод {@link android.content.ContentResolver#query ContentResolver.query()}.
+    В свою очередь, метод {@link android.content.ContentResolver#query query()} вызывает метод
+{@link android.content.ContentProvider#query ContentProvider.query()}, определенный поставщиком
+пользовательского словаря. В примере кода ниже показан вызов метода
+{@link android.content.ContentResolver#query ContentResolver.query()}.
+<p>
+<pre>
+// Queries the user dictionary and returns results
+mCursor = getContentResolver().query(
+    UserDictionary.Words.CONTENT_URI,   // The content URI of the words table
+    mProjection,                        // The columns to return for each row
+    mSelectionClause                    // Selection criteria
+    mSelectionArgs,                     // Selection criteria
+    mSortOrder);                        // The sort order for the returned rows
+</pre>
+<p>
+    В таблице 2 указано соответствие аргументов для метода
+{@link android.content.ContentResolver#query 
+query(Uri,projection,selection,selectionArgs,sortOrder)} SQL-инструкции SELECT.
+</p>
+<p class="table-caption">
+    <strong>Таблица 2.</strong> Сравнение метода query() и SQL-запроса.
+</p>
+<table id="table2" style="width: 75%;">
+    <tr>
+        <th style="width:25%" align="center" scope="col">Аргумент метода query()</th>
+        <th style="width:25%" align="center" scope="col">Параметр/ключевое слово SELECT</th>
+        <th style="width:50%" align="center" scope="col">Примечания</th>
+    </tr>
+    <tr>
+        <td align="center"><code>Uri</code></td>
+        <td align="center"><code>FROM <em>table_name</em></code></td>
+        <td><code>Uri</code> соответствует таблице <em>table_name</em> в поставщике.</td>
+    </tr>
+    <tr>
+        <td align="center"><code>projection</code></td>
+        <td align="center"><code><em>col,col,col,...</em></code></td>
+        <td>
+            <code>projection</code> представляет собой массив столбцов, которые следует включить
+в каждую полученную строку.
+        </td>
+    </tr>
+    <tr>
+        <td align="center"><code>selection</code></td>
+        <td align="center"><code>WHERE <em>col</em> = <em>value</em></code></td>
+        <td><code>selection</code> задает критерии для выбора строк.</td>
+    </tr>
+    <tr>
+        <td align="center"><code>selectionArgs</code></td>
+        <td align="center">
+            (Точный эквивалент отсутствует. В предложении выбора заполнители <code>?</code>
+заменяются аргументами выбора).
+        </td>
+    </tr>
+    <tr>
+        <td align="center"><code>sortOrder</code></td>
+        <td align="center"><code>ORDER BY <em>col,col,...</em></code></td>
+        <td>
+            <code>sortOrder</code> задает порядок отображения строк в возвращаемом объекте
+{@link android.database.Cursor}.
+        </td>
+    </tr>
+</table>
+<h3 id="ContentURIs">URI контента</h3>
+<p>
+    <strong>URI контента</strong> представляет собой URI, который определяет данные в поставщике. URI контента
+могут включать символическое имя всего поставщика (его <strong>центр</strong>) и
+имя, которое указывает на таблицу (<strong>путь</strong>). При вызове
+клиентского метода для доступа к таблице в поставщике URI контента этой таблицы выступает в роли одного
+из аргументов этого метода.
+</p>
+<p>
+    Константа
+{@link android.provider.UserDictionary.Words#CONTENT_URI} в предыдущих строках кода содержит URI контента
+таблицы words в пользовательском словаре. Объект{@link android.content.ContentResolver}
+анализирует центр URI и использует его для «разрешения» поставщика
+путем сравнения центра с системной таблицей известных поставщиков. {@link android.content.ContentResolver}
+может отправить аргументы запроса в соответствующий
+поставщик.
+</p>
+<p>
+    {@link android.content.ContentProvider} использует часть URI контента, в которой указан путь, для выбора таблицы
+для доступа. В поставщике обычно имеется <strong>путь</strong> для каждой предоставляемой им таблицы.
+</p>
+<p>
+    В предыдущих строках кода полный URI для таблицы words выглядит следующим образом:
+</p>
+<pre>
+content://user_dictionary/words
+</pre>
+<p>
+    Строка <code>user_dictionary</code> ֪– это центр поставщика, а строка
+<code>words</code> — это путь к таблице. Строка
+<code>content://</code> (<strong>схема</strong>) присутствует всегда;
+она определяет, что это URI контента.
+</p>
+<p>
+    Многие поставщики предоставляют доступ к одной строке в таблице путем добавления идентификатора
+в конец URI. Например, чтобы извлечь из пользовательского словаря строку, в столбце <code>_ID</code> которой
+указано <code>4</code>, можно воспользоваться следующим URI контента:
+</p>
+<pre>
+Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);
+</pre>
+<p>
+    Идентификаторы часто используются в случае, когда вы извлекли набор строк и хотите обновить или удалить
+одну из них.
+</p>
+<p class="note">
+    <strong>Примечание.</strong> В классах {@link android.net.Uri} и {@link android.net.Uri.Builder}
+имеются методы для удобного создания правильно оформленных объектов URI из строк. {@link android.content.ContentUris}
+содержит методы для удобного добавления идентификаторов
+к URI. В примере кода выше для добавления идентификатора к URI контента UserDictionary используется метод {@link android.content.ContentUris#withAppendedId
+withAppendedId()}.
+</p>
+
+
+    <!-- Retrieving Data from the Provider -->
+<h2 id="SimpleQuery">Получение данных от поставщика</h2>
+<p>
+    В это разделе рассматривается порядок получения данных от поставщика на примере
+поставщика пользовательского словаря.
+</p>
+<p class="note">
+    Для полной ясности в примерах кода, приведенных в этом разделе, методы
+{@link android.content.ContentResolver#query ContentResolver.query()} вызываются в потоке пользовательского интерфейса. В реальном
+коде запросы следует выполнять асинхронно в отдельном потоке. Одним из способов реализовать
+это является использование класса {@link android.content.CursorLoader}, который более подробно описан в
+статье
+<a href="{@docRoot}guide/components/loaders.html">Загрузчики</a>. Кроме того, в этой статье представлены лишь фрагменты кода; они не представляют собой готовое
+приложение.
+</p>
+<p>
+    Чтобы получить данные из поставщика, выполните указанные ниже основные действия.
+</p>
+<ol>
+   <li>
+        Запросите у поставщика разрешение на чтение.
+   </li>
+   <li>
+        Определите код, который отвечает за отправку запроса поставщику.
+   </li>
+</ol>
+<h3 id="RequestPermissions">Запрос разрешения на чтение</h3>
+<p>
+    Чтобы ваше приложение могло получать данные от поставщика, приложению требуется получить от поставщика разрешение
+на чтение. Это разрешение невозможно получить во время выполнения; вместо этого вам необходимо указать, что вам требуется
+такое разрешение, в манифесте приложения. Для этого воспользуйтесь элементом
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+и укажите точное название разрешения,
+определенное поставщиком. Указав этот элемент в манифесте, вы тем самым запрашиваете
+необходимое разрешение для вашего приложения. Когда пользователи устанавливают ваше приложение, они косвенно
+получают разрешение по этому запросу.
+</p>
+<p>
+    Чтобы узнать точное название разрешения на чтение в используемом поставщике,
+а также названия других используемых в нем разрешений на чтение, обратитесь
+к документации поставщика.
+</p>
+<p>
+    Дополнительные сведения о роли разрешений в получении доступа к поставщику представлены в разделе
+<a href="#Permissions">Разрешения поставщика контента</a>.
+</p>
+<p>
+    Поставщик пользовательского словаря задает разрешение
+<code>android.permission.READ_USER_DICTIONARY</code> в своем файле манифеста,
+поэтому приложению, которому требуется выполнить чтение данных из поставщика, необходимо запросить именно это разрешение.
+</p>
+<!-- Constructing the query -->
+<h3 id="Query">Создание запроса</h3>
+<p>
+    Следующим этапом получения данных от поставщика является создание запроса. В следующем фрагменте кода
+задаются некоторые переменные для доступа к поставщику пользовательского словаря:
+</p>
+<pre class="prettyprint">
+
+// A "projection" defines the columns that will be returned for each row
+String[] mProjection =
+{
+    UserDictionary.Words._ID,    // Contract class constant for the _ID column name
+    UserDictionary.Words.WORD,   // Contract class constant for the word column name
+    UserDictionary.Words.LOCALE  // Contract class constant for the locale column name
+};
+
+// Defines a string to contain the selection clause
+String mSelectionClause = null;
+
+// Initializes an array to contain selection arguments
+String[] mSelectionArgs = {""};
+
+</pre>
+<p>
+    В следующем фрагменте кода демонстрируется порядок использования метода
+{@link android.content.ContentResolver#query ContentResolver.query()} (в качестве примера выступает
+поставщик пользовательского словаря): Клиентский запрос поставщика аналогичен SQL-запросу. В нем содержится
+набор столбцов, которые возвращаются, набор критериев выборки и порядок сортировки.
+</p>
+<p>
+    Набор столбцов, которые должен возвратить запрос, называется <strong>проекцией</strong>
+(переменная <code>mProjection</code>).
+</p>
+<p>
+    Выражение, которое задает строки для получения, состоит из предложения выбора
+и аргументов выбора. Предложение выбора представляет собой сочетание логических выражений,
+имен столбцов и значений (переменная <code>mSelectionClause</code>). Если вместо значения указать подставляемый параметр
+<code>?</code>, метод запроса извлекает значение из массива аргументов выбора (переменная
+<code>mSelectionArgs</code>).
+</p>
+<p>
+    В следующем фрагменте кода, если пользователь не указал слово, то для предложения выбора задается значение
+<code>null</code>, а запрос возвращает все слова, имеющиеся в поставщике. Если пользователь указал слово, то для предложения выбора задается значение
+<code>UserDictionary.Words.WORD + " = ?"</code>,
+а для первого элемента в массиве аргументов выбора задается введенное пользователем слово.
+</p>
+<pre class="prettyprint">
+/*
+ * This defines a one-element String array to contain the selection argument.
+ */
+String[] mSelectionArgs = {""};
+
+// Gets a word from the UI
+mSearchString = mSearchWord.getText().toString();
+
+// Remember to insert code here to check for invalid or malicious input.
+
+// If the word is the empty string, gets everything
+if (TextUtils.isEmpty(mSearchString)) {
+    // Setting the selection clause to null will return all words
+    mSelectionClause = null;
+    mSelectionArgs[0] = "";
+
+} else {
+    // Constructs a selection clause that matches the word that the user entered.
+    mSelectionClause = UserDictionary.Words.WORD + " = ?";
+
+    // Moves the user's input string to the selection arguments.
+    mSelectionArgs[0] = mSearchString;
+
+}
+
+// Does a query against the table and returns a Cursor object
+mCursor = getContentResolver().query(
+    UserDictionary.Words.CONTENT_URI,  // The content URI of the words table
+    mProjection,                       // The columns to return for each row
+    mSelectionClause                   // Either null, or the word the user entered
+    mSelectionArgs,                    // Either empty, or the string the user entered
+    mSortOrder);                       // The sort order for the returned rows
+
+// Some providers return null if an error occurs, others throw an exception
+if (null == mCursor) {
+    /*
+     * Insert code here to handle the error. Be sure not to use the cursor! You may want to
+     * call android.util.Log.e() to log this error.
+     *
+     */
+// If the Cursor is empty, the provider found no matches
+} else if (mCursor.getCount() &lt; 1) {
+
+    /*
+     * Insert code here to notify the user that the search was unsuccessful. This isn't necessarily
+     * an error. You may want to offer the user the option to insert a new row, or re-type the
+     * search term.
+     */
+
+} else {
+    // Insert code here to do something with the results
+
+}
+</pre>
+<p>
+    Этот запрос аналогичен следующей инструкции SQL:
+</p>
+<pre>
+SELECT _ID, word, locale FROM words WHERE word = &lt;userinput&gt; ORDER BY word ASC;
+</pre>
+<p>
+    В этой инструкции SQL вместо констант класса-контракта используются фактические имена столбцов.
+</p>
+<h4 id="Injection">Защита от ввода вредоносного кода</h4>
+<p>
+    Если данные, которыми управляет поставщик контента, находятся в базе данных SQL, то включение в необработанные инструкции
+SQL внешних ненадежных данных может привести к атаке путем внедрения кода SQL.
+</p>
+<p>
+    Рассмотрим следующее предложение выбора:
+</p>
+<pre>
+// Constructs a selection clause by concatenating the user's input to the column name
+String mSelectionClause =  "var = " + mUserInput;
+</pre>
+<p>
+    Если вы используете это предложение, вы разрешаете пользователю связать вашу инструкцию SQL с вредоносным кодом SQL.
+    Например, пользователь может ввести nothing; DROP TABLE *; для <code>mUserInput</code>, что
+приведет к созданию следующего предложения выбора: <code>var = nothing; DROP TABLE *;</code>. Поскольку
+предложение выбора выполняется в потоке как инструкция SQL, это может привести к тому, что поставщик удалит все
+таблицы в соответствующей базе данных SQLite (если только в поставщик не настроен на отслеживание попыток
+<a href="http://en.wikipedia.org/wiki/SQL_injection">внедрить вредоносный код SQL</a>).
+</p>
+<p>
+    Чтобы избежать этого, воспользуйтесь предложением выбора, в котором <code>?</code> выступает в качестве подставляемого
+параметра, а также отдельным массивом аргументов выбора. После этого ввод пользователя
+будет связан напрямую с запросом и не будет интерпретироваться как часть инструкции SQL.
+    Поскольку в этом случае введенный пользователем запрос не рассматривается как код SQL, то в него не удастся внедрить вредоносный код SQL. Вместо
+объединения, которое следует включить в пользовательский ввод, используйте следующее предложение выбора:
+</p>
+<pre>
+// Constructs a selection clause with a replaceable parameter
+String mSelectionClause =  "var = ?";
+</pre>
+<p>
+    Настройте массив аргументов выбора следующим образом:
+</p>
+<pre>
+// Defines an array to contain the selection arguments
+String[] selectionArgs = {""};
+</pre>
+<p>
+    Укажите значение для массива аргументов выбора:
+</p>
+<pre>
+// Sets the selection argument to the user's input
+selectionArgs[0] = mUserInput;
+</pre>
+<p>
+    Предложение выбора, в котором <code>?</code> используется в качестве подстановочного параметра, и массив
+аргументов выбора представляют собой предпочтительный способ указания выбора, даже если поставщик
+не использует базу данных SQL.
+</p>
+<!-- Displaying the results -->
+<h3 id="DisplayResults">Отображение результатов запроса</h3>
+<p>
+    Клиентский метод {@link android.content.ContentResolver#query ContentResolver.query()} всегда возвращает объект
+{@link android.database.Cursor}, содержащий столбцы, указанные в проекции
+запроса для строк, которые соответствуют критериям выборки в запросе. Объект
+{@link android.database.Cursor} предоставляет прямой доступ на чтение содержащихся в нем строк и
+столбцов. С помощью методов {@link android.database.Cursor} можно выполнить итерацию по строкам
+в результатах, определить тип данных для каждого столбца, получить данные из столбца, а также проверить другие свойства
+результатов. Некоторые реализации объекта {@link android.database.Cursor} автоматически обновляют
+объект при изменении данных в поставщике или запускают выполнение методов в объекте-наблюдателе
+при изменении объекта{@link android.database.Cursor}, либо выполняют и то, и другое.
+</p>
+<p class="note">
+    <strong>Примечание.</strong> Поставщик может ограничить доступ к столбцам на основе характера
+объекта, выполняющего запрос. Например, поставщик контактов ограничивает доступ адаптеров синхронизации к некоторым столбцам,
+поэтому он не возвращает их в операцию или службу.
+</p>
+<p>
+    Если строки, соответствующие критериям выборки, отсутствуют, поставщик
+возвращает объект{@link android.database.Cursor}, в котором для метода
+{@link android.database.Cursor#getCount Cursor.getCount()} указано значение «0» (пустой объект cursor).
+</p>
+<p>
+    При возникновении внутренней ошибки результаты запроса зависят от определенного поставщика. Поставщик может
+возвратить<code>null</code> или выдать {@link java.lang.Exception}.
+</p>
+<p>
+    Поскольку {@link android.database.Cursor} представляет собой «список» строк, то наилучшим способом отобразить содержимое объекта
+{@link android.database.Cursor} будет связать его с {@link android.widget.ListView}
+посредством {@link android.widget.SimpleCursorAdapter}.
+</p>
+<p>
+    Следующий фрагмент кода является продолжением предыдущего фрагмента. Он создает объект
+{@link android.widget.SimpleCursorAdapter}, содержащий объект{@link android.database.Cursor},
+который был получен в запросе, а затем определяет этот объект в качестве адаптера для
+{@link android.widget.ListView}:
+</p>
+<pre class="prettyprint">
+// Defines a list of columns to retrieve from the Cursor and load into an output row
+String[] mWordListColumns =
+{
+    UserDictionary.Words.WORD,   // Contract class constant containing the word column name
+    UserDictionary.Words.LOCALE  // Contract class constant containing the locale column name
+};
+
+// Defines a list of View IDs that will receive the Cursor columns for each row
+int[] mWordListItems = { R.id.dictWord, R.id.locale};
+
+// Creates a new SimpleCursorAdapter
+mCursorAdapter = new SimpleCursorAdapter(
+    getApplicationContext(),               // The application's Context object
+    R.layout.wordlistrow,                  // A layout in XML for one row in the ListView
+    mCursor,                               // The result from the query
+    mWordListColumns,                      // A string array of column names in the cursor
+    mWordListItems,                        // An integer array of view IDs in the row layout
+    0);                                    // Flags (usually none are needed)
+
+// Sets the adapter for the ListView
+mWordList.setAdapter(mCursorAdapter);
+</pre>
+<p class="note">
+    <strong>Примечание.</strong> Чтобы вернуть {@link android.widget.ListView} с объектом
+{@link android.database.Cursor}, объект cursor должен содержать столбец с именем <code>_ID</code>.
+    Поэтому показанный ранее запрос извлекает столбец<code>_ID</code> для таблицы
+words, даже если {@link android.widget.ListView} не отображает ее.
+    Данное ограничение также объясняет, почему в каждой таблице поставщика имеется столбец
+<code>_ID</code>.
+</p>
+
+        <!-- Getting data from query results -->
+<h3 id="GettingResults">Получение данных из результатов запроса</h3>
+<p>
+    Вместо того, чтобы просто отобразить результаты запроса, вы можете использовать их для выполнения других задач. Например,
+можно получить написание слов из пользовательского словаря, а затем выполнить их поиск в
+других поставщиках. Для этого выполните итерацию по строкам в объекте {@link android.database.Cursor}:
+</p>
+<pre class="prettyprint">
+
+// Determine the column index of the column named "word"
+int index = mCursor.getColumnIndex(UserDictionary.Words.WORD);
+
+/*
+ * Only executes if the cursor is valid. The User Dictionary Provider returns null if
+ * an internal error occurs. Other providers may throw an Exception instead of returning null.
+ */
+
+if (mCursor != null) {
+    /*
+     * Moves to the next row in the cursor. Before the first movement in the cursor, the
+     * "row pointer" is -1, and if you try to retrieve data at that position you will get an
+     * exception.
+     */
+    while (mCursor.moveToNext()) {
+
+        // Gets the value from the column.
+        newWord = mCursor.getString(index);
+
+        // Insert code here to process the retrieved word.
+
+        ...
+
+        // end of while loop
+    }
+} else {
+
+    // Insert code here to report an error if the cursor is null or the provider threw an exception.
+}
+</pre>
+<p>
+    Реализации объекта {@link android.database.Cursor} содержат несколько методов get для
+получения из объекта различных типов данных. Например, в следующем фрагменте кода используется метод
+{@link android.database.Cursor#getString getString()}. В них также имеется метод
+{@link android.database.Cursor#getType getType()}, который возвращает значение, указывающее на тип
+данных в столбце.
+</p>
+
+
+    <!-- Requesting permissions -->
+<h2 id="Permissions">Разрешения поставщика контента</h2>
+<p>
+    Приложение поставщика может задавать разрешения, которые требуются другим приложениям для доступа к
+данным в поставщике. Такие разрешения гарантируют, что пользователь знает, к каким
+данным приложение будет пытаться получить доступ. На основе требований поставщика другие
+приложения запрашивают разрешения, которые требуются им для доступа к поставщику. Конечные пользователи видят
+запрошенные разрешения при установке приложения.
+</p>
+<p>
+    Если приложение поставщика не задает никаких разрешений, другие приложения не получают доступ к
+данным поставщика. Однако компонентам приложения поставщика
+всегда предоставлен полный доступ на чтение и запись, независимо от заданных разрешений.
+</p>
+<p>
+    Как уже было отмечено ранее, для получения данных из поставщика пользовательского словаря требуется разрешение
+<code>android.permission.READ_USER_DICTIONARY</code>.
+    В поставщике предусмотрено отдельное разрешение<code>android.permission.WRITE_USER_DICTIONARY</code>
+для вставки, обновления или удаления данных.
+</p>
+<p>
+    Чтобы получить разрешения, необходимые для доступа к поставщику, приложение запрашивает их с помощью элемента 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+в файле манифеста. При установке менеджером пакетов Android приложения пользователю необходимо
+утвердить все разрешения, запрашиваемые приложением. В случае утверждения всех разрешений
+менеджер пакетов продолжает установку; если же пользователь отклоняет их, менеджер
+пакетов отменяет установку.
+</p>
+<p>
+    Для запроса доступа на чтение данных в поставщике пользовательского словаря используется
+следующий элемент
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>:
+</p>
+<pre>
+    &lt;uses-permission android:name="android.permission.READ_USER_DICTIONARY"&gt;
+</pre>
+<p>
+    Дополнительные сведения о влиянии разрешений на доступ к поставщику представлены в статье
+<a href="{@docRoot}guide/topics/security/security.html">Безопасность и разрешения</a>.
+</p>
+
+
+<!-- Inserting, Updating, and Deleting Data -->
+<h2 id="Modifications">Вставка, обновление и удаление данных</h2>
+<p>
+    Подобно тому, как вы получаете данные от поставщика, вы также можете можете использовать возможности взаимодействия между клиентом поставщика и объектом
+{@link android.content.ContentProvider} поставщика для изменения данных.
+    Можно вызвать метод объекта {@link android.content.ContentResolver}, указав аргументы,
+которые были переданы в соответствующий метод объекта {@link android.content.ContentProvider}. Поставщик и клиент поставщика
+автоматически обрабатывают взаимодействие между процессами и обеспечивают безопасность.
+</p>
+<h3 id="Inserting">Вставка данных</h3>
+<p>
+    Для вставки данных в поставщик вызовите
+метод
+{@link android.content.ContentResolver#insert ContentResolver.insert()}. Этот метод вставляет новую строку в поставщик и возвращает URI контента для этой строки.
+    В следующем фрагменте кода демонстрируется порядок вставки нового слова в поставщик пользовательского словаря:
+</p>
+<pre class="prettyprint">
+// Defines a new Uri object that receives the result of the insertion
+Uri mNewUri;
+
+...
+
+// Defines an object to contain the new values to insert
+ContentValues mNewValues = new ContentValues();
+
+/*
+ * Sets the values of each column and inserts the word. The arguments to the "put"
+ * method are "column name" and "value"
+ */
+mNewValues.put(UserDictionary.Words.APP_ID, "example.user");
+mNewValues.put(UserDictionary.Words.LOCALE, "en_US");
+mNewValues.put(UserDictionary.Words.WORD, "insert");
+mNewValues.put(UserDictionary.Words.FREQUENCY, "100");
+
+mNewUri = getContentResolver().insert(
+    UserDictionary.Word.CONTENT_URI,   // the user dictionary content URI
+    mNewValues                          // the values to insert
+);
+</pre>
+<p>
+    Данные для новой строки поступают в один объект {@link android.content.ContentValues},
+который аналогичен объекту cursor с одной строкой. Столбцы в этом объекте необязательно
+должны содержать данные такого же типа, и если вы вообще не собираетесь указывать значение, вы можете задать для столбца значение
+<code>null</code> с помощью метода {@link android.content.ContentValues#putNull ContentValues.putNull()}.
+</p>
+<p>
+    Код в представленном фрагменте не добавляет столбец <code>_ID</code>, поскольку этот столбец сохраняется
+автоматически. Поставщик присваивает уникальное значение <code>_ID</code> каждой
+добавляемой строке. Обычно поставщики используют это значение в качестве основного ключа таблицы.
+</p>
+<p>
+    URI контента, возвращенный в элементе <code>newUri</code>, служит для идентификации новой добавленной строки
+в следующем формате:
+</p>
+<pre>
+content://user_dictionary/words/&lt;id_value&gt;
+</pre>
+<p>
+    <code>&lt;id_value&gt;</code> — это содержимое столбца <code>_ID</code> для новой строки.
+    Большинство поставщиков автоматически определяют эту форму URI контента, а затем
+выполняют запрошенную операцию с требуемой строкой.
+</p>
+<p>
+    Чтобы получить значение <code>_ID</code> из возвращенного объекта {@link android.net.Uri}, вызовите метод
+{@link android.content.ContentUris#parseId ContentUris.parseId()}.
+</p>
+<h3 id="Updating">Обновление данных</h3>
+<p>
+    Чтобы обновить строку, используйте объект {@link android.content.ContentValues} с обновленными
+значениями (точно так же, как вы это делаете при вставке) и критериями выборки (так же, как и с запросом).
+    Используемый вами клиентский метод называется
+{@link android.content.ContentResolver#update ContentResolver.update()}. Вам не нужно добавлять значения в объект
+{@link android.content.ContentValues} для обновляемых столбцов. Чтобы очистить содержимое столбца, задайте значение
+<code>null</code>.
+</p>
+<p>
+    Следующий фрагмент кода служит для изменения языка во всех строках, где в качестве языка указано en, на
+<code>null</code>. Возвращаемое значение представляет собой количество строк, которые были обновлены:
+</p>
+<pre>
+// Defines an object to contain the updated values
+ContentValues mUpdateValues = new ContentValues();
+
+// Defines selection criteria for the rows you want to update
+String mSelectionClause = UserDictionary.Words.LOCALE +  "LIKE ?";
+String[] mSelectionArgs = {"en_%"};
+
+// Defines a variable to contain the number of updated rows
+int mRowsUpdated = 0;
+
+...
+
+/*
+ * Sets the updated value and updates the selected words.
+ */
+mUpdateValues.putNull(UserDictionary.Words.LOCALE);
+
+mRowsUpdated = getContentResolver().update(
+    UserDictionary.Words.CONTENT_URI,   // the user dictionary content URI
+    mUpdateValues                       // the columns to update
+    mSelectionClause                    // the column to select on
+    mSelectionArgs                      // the value to compare to
+);
+</pre>
+<p>
+    Также следует проверить пользовательский ввод при вызове метода
+{@link android.content.ContentResolver#update ContentResolver.update()}. Дополнительные сведения об этом
+представлены в разделе <a href="#Injection">Защита от ввода вредоносного кода</a>.
+</p>
+<h3 id="Deleting">Удаление данных</h3>
+<p>
+    Удаление данных аналогично получению данных строки: необходимо указать критерии выборки для строк,
+которые требуется удалить, после чего клиентский метод возвратит количество удаленных строк.
+    Ниже представлен фрагмент кода для удаления строк с идентификатором appid user. Метод возвращает
+количество удаленных строк.
+</p>
+<pre>
+
+// Defines selection criteria for the rows you want to delete
+String mSelectionClause = UserDictionary.Words.APP_ID + " LIKE ?";
+String[] mSelectionArgs = {"user"};
+
+// Defines a variable to contain the number of rows deleted
+int mRowsDeleted = 0;
+
+...
+
+// Deletes the words that match the selection criteria
+mRowsDeleted = getContentResolver().delete(
+    UserDictionary.Words.CONTENT_URI,   // the user dictionary content URI
+    mSelectionClause                    // the column to select on
+    mSelectionArgs                      // the value to compare to
+);
+</pre>
+<p>
+    Также следует проверить пользовательский ввод при вызове метода
+{@link android.content.ContentResolver#delete ContentResolver.delete()}. Дополнительные сведения об этом
+представлены в разделе <a href="#Injection">Защита от ввода вредоносного кода</a>.
+</p>
+<!-- Provider Data Types -->
+<h2 id="DataTypes">Типы поставщиков данных</h2>
+<p>
+    Поставщики контента могут предоставлять различные тип данных. Поставщик пользовательского словаря предоставляет только
+текст, но также может предоставлять следующие форматы:
+</p>
+    <ul>
+        <li>
+            целое число;
+        </li>
+        <li>
+            длинное целое число (long);
+        </li>
+        <li>
+            число с плавающей запятой;
+        </li>
+        <li>
+            длинное число с плавающей запятой (double).
+        </li>
+    </ul>
+<p>
+    Другим типом данных, предлагаемых поставщиком, является большой двоичный объект (BLOB), реализованный как
+64-разрядный массив. Чтобы просмотреть доступные типы данных, обратитесь к методам get класса
+{@link android.database.Cursor}.
+</p>
+<p>
+    Тип данных для каждого столбца в поставщике обычно указывается в документации к поставщику.
+    Типы данных для поставщика пользовательского словаря указаны в справочной документации
+для класса-контракта {@link android.provider.UserDictionary.Words} (дополнительные сведения о классах-контрактах представлены в разделе
+<a href="#ContractClasses">Классы-контракты</a>).
+    Также определить тип данных можно путем вызова метода {@link android.database.Cursor#getType
+Cursor.getType()}.
+</p>
+<p>
+    Поставщики также хранят информацию о типе данных MIME для каждого определяемого ими URI контента. Эту информацию
+можно использовать для определения того, может ли ваше приложение обрабатывать предлагаемые
+поставщиком данные, а также для выбора типа обработки на основе типа MIME. Информация о типе
+MIME обычно требуется при работе с поставщиком, который содержит
+сложные структуры данных или файлы. Например, в таблице{@link android.provider.ContactsContract.Data}
+в поставщике контактов используются типы MIME для отметки типа данных контакта, которые хранятся в каждой
+строке. Чтобы получить тип MIME, соответствующий URI контента, вызовите метод
+{@link android.content.ContentResolver#getType ContentResolver.getType()}.
+</p>
+<p>
+    Синтаксис стандартных и настраиваемых типов MIME описан в
+<a href="#MIMETypeReference">справке по типам MIME</a>.
+</p>
+
+
+<!-- Alternative Forms of Provider Access -->
+<h2 id="AltForms">Альтернативные формы доступа к поставщику</h2>
+<p>
+    При разработке приложения следует учитывать три альтернативных формы доступа к поставщику:
+</p>
+<ul>
+    <li>
+        <a href="#Batch">Пакетный доступ:</a> можно создать пакет вызовов доступа с использованием методов в классе
+{@link android.content.ContentProviderOperation}, а затем применить их с помощью метода
+{@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}.
+    </li>
+    <li>
+        Асинхронные запросы: Запросы следует выполнять в отдельном потоке. Одним из способов реализовать это является использование объекта
+{@link android.content.CursorLoader}. Примеры этого представлены в
+статье
+<a href="{@docRoot}guide/components/loaders.html">Загрузчики</a>.
+    </li>
+    <li>
+        <a href="#Intents">Доступ к данным с помощью намерений:</a> Несмотря на то, что намерение
+невозможно отправить напрямую в поставщик, вы можете отправить запрос в приложение поставщика, в котором обычно
+имеется больше возможностей для изменения данных поставщика.
+    </li>
+</ul>
+<p>
+    Пакетный доступ и изменение с помощью намерений описаны в следующих разделах.
+</p>
+<h3 id="Batch">Пакетный доступ</h3>
+<p>
+    Пакетный доступ к поставщику полезно использовать в случаях, когда необходимо вставить большое количество строк, или для вставки
+строк в несколько таблиц в рамках одного вызова метода, а также в общих случаях для выполнения ряда
+операций на границах процессов в виде транзакции (атомарной операции).
+</p>
+<p>
+    Для доступа к поставщику в «пакетном режиме» необходимо создать массив объектов
+{@link android.content.ContentProviderOperation}, а затем
+отправить их в поставщик контента с помощью метода
+{@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}. В этот метод необходимо передать
+<em>центр</em> поставщика контента, а не определенный URI контента.
+Это позволит каждому объекту {@link android.content.ContentProviderOperation} в массиве взаимодействовать
+с разными таблицами. Метод {@link android.content.ContentResolver#applyBatch
+ContentResolver.applyBatch()} возвращает массив результатов.
+</p>
+<p>
+    В описании класса-контракта {@link android.provider.ContactsContract.RawContacts}
+также представлен фрагмент кода, в котором демонстрируется вставка в пакетном режиме. В исходном файле <code>ContactAdder.java</code> примера приложения
+<a href="{@docRoot}resources/samples/ContactManager/index.html">Диспетчер контактов</a>
+имеется пример пакетного
+доступа.
+</p>
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>Отображение данных с помощью вспомогательного приложения</h2>
+<p>
+    Если вашему приложению <em>не предоставлены</em> разрешения, вы по-прежнему можете воспользоваться
+намерением для отображения данных в другом приложении. Например, приложение «Календарь» принимает намерение
+{@link android.content.Intent#ACTION_VIEW}, которое позволяет отобразить определенную дату или событие.
+    Благодаря этому информацию календаря можно отображать без необходимости создавать собственный пользовательский интерфейс.
+Дополнительные сведения об этой функции представлены в статье
+<a href="{@docRoot}guide/topics/providers/calendar-provider.html">Поставщик календаря</a>.
+</p>
+<p>
+    Приложение, в которое вы отправляете намерение, не обязательно
+должно быть связано с поставщиком. Например,
+в поставщике контактов можно создать форму контакта, а затем отправить намерение {@link android.content.Intent#ACTION_VIEW},
+содержащее URI контента для изображения контакта, в средство просмотра изображений.
+</p>
+</div>
+</div>
+<h3 id="Intents">Доступ к данным с помощью намерений</h3>
+<p>
+    Намерения позволяют в обход получать доступ к поставщику контента. Вы можете разрешить пользователям доступ к
+данным в поставщике даже в том случае, если у приложения отсутствуют разрешения на доступ, либо путем
+получения результирующего намерения от приложения, у которого имеются необходимые разрешения, либо путем активации
+приложения, у которого имеются разрешения и которое разрешает пользователю работать с ним.
+</p>
+<h4>Получение доступа с временными разрешениями</h4>
+<p>
+    Вы можете получить доступ к данным в поставщике контента даже тогда, когда у вас нет необходимых разрешений на доступ
+, путем отправки намерения в приложение, у которого есть такие разрешения, и получения
+результирующего намерения, которое содержит разрешения URI.
+    Эти разрешения для определенного URI контента действуют до тех пор, пока не будет завершена операция, получившая
+их. Приложение, у которой имеются бессрочные разрешения, предоставляет временные
+разрешения путем задания соответствующего флага в результирующем намерении:
+</p>
+<ul>
+    <li>
+        <strong>Разрешение на чтение:</strong>
+{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}
+    </li>
+    <li>
+        <strong>Разрешение на запись:</strong>
+{@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}
+    </li>
+</ul>
+<p class="note">
+    <strong>Примечание.</strong> Эти флаги не предоставляют общий доступ на чтение или запись поставщику,
+центр которого указан в URI контента. Доступ предоставляется только самому URI.
+</p>
+<p>
+    Поставщик определяет разрешения URI для URI контента в своем манифесте с помощью атрибута
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">android:grantUriPermission</a></code>
+элемента
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>,
+а также
+с помощью дочернего элемента
+<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
+элемента
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>. Дополнительные сведения о механизме разрешений URI представлены в статье
+<a href="{@docRoot}guide/topics/security/security.html">Безопасность и разрешения</a> в разделе
+Разрешения URI.
+</p>
+<p>
+    Например, можно получить данные о контакте из поставщика контактов, даже если у вас нет разрешения
+{@link android.Manifest.permission#READ_CONTACTS}. Возможно, это потребуется реализовать
+в приложении, которое отправляет электронные поздравления контакту в день его рождения. Вместо запроса
+{@link android.Manifest.permission#READ_CONTACTS}, когда вы получаете доступ ко всем контактам пользователя
+и всей информации о них, можно предоставить пользователю возможность указать,
+какие контакты используются вашим приложением. Для этого воспользуйтесь указанным ниже процессом.
+</p>
+<ol>
+    <li>
+        Ваше приложение отправляет намерение, содержащее действие
+{@link android.content.Intent#ACTION_PICK} и тип MIME
+{@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE} контактов, используя для этого метод
+{@link android.app.Activity#startActivityForResult
+startActivityForResult()}.
+    </li>
+    <li>
+        Поскольку это намерение соответствует условиям отбора намерений для операции выбора
+приложения «Контакты», эта операция переходит на передний план.
+    </li>
+    <li>
+        В операции выбора пользователь выбирает
+контакт для обновления. Когда это происходит, операция выбора вызывает метод
+{@link android.app.Activity#setResult setResult(resultcode, intent)}
+для создания намерения, которое будет передано обратно в ваше приложение. Намерение содержит URI контента
+выбранного пользователем контакта, а также флаги
+{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION} дополнительных данных. Эти флаги предоставляют вашему приложению разрешение URI
+на чтение данных контакта, на который указывает
+URI контента. Затем операция выбора вызывает метод{@link android.app.Activity#finish()},
+чтобы вернуть управление вашему приложению.
+    </li>
+    <li>
+        Ваша операция возвращается на передний план, а система вызывает метод
+{@link android.app.Activity#onActivityResult onActivityResult()}
+вашей операции. Этот метод получает результирующее намерение, созданное операцией выбора в
+приложении «Контакты».
+    </li>
+    <li>
+        С помощью URI контента из результирующего намерения можно выполнить чтение данных контакта
+из поставщика контактов, даже если вы не запрашивали у поставщика постоянный доступ на чтение
+в своем манифесте. Можно получить информацию о дне рождения контакта
+или сведения о его адресе эл. почты, а затем отправить контакту электронное поздравление.
+    </li>
+</ol>
+<h4>Использование другого приложения</h4>
+<p>
+    Простой способ разрешить пользователю изменять данные, на доступ к которым у вас нет доступа
+— это активировать приложение, у которого есть такие разрешения, а затем предоставить пользователю возможность выполнять необходимые действия в этом приложении.
+</p>
+<p>
+    Например, приложение «Календарь» принимает намерения
+{@link android.content.Intent#ACTION_INSERT}, с помощью которого можно активировать
+пользовательский интерфейс приложения для вставки. Вы можете передать в это намерение дополнительные данные, которые приложение
+использует для заполнения полей в пользовательском интерфейсе. Поскольку синтаксис повторяющихся событий довольно сложный, то события предпочтительно
+вставлять в поставщик календаря путем активации приложения «Календарь» с помощью действия
+{@link android.content.Intent#ACTION_INSERT} и последующего предоставления пользователю возможности самому вставить событие в этом приложении.
+</p>
+<!-- Contract Classes -->
+<h2 id="ContractClasses">Классы-контракты</h2>
+<p>
+    Класс-контракт определяет константы, которые обеспечивают для приложений возможность работать с URI контента, именами
+столбцов, операциями намерения и другими функциями поставщика контента. Классы-контракты не
+включены в поставщик; разработчику поставщика следует определить их и сделать
+их доступными для других разработчиков. Многие из поставщиков, включенные в платформу Android,
+содержат соответствующие классы-контракты в пакете {@link android.provider}.
+</p>
+<p>
+    Например, в поставщике пользовательского календаря имеется класс-контракт
+{@link android.provider.UserDictionary}, содержащий константы URI контента и имен столбцов. URI
+контента для таблицы words определен в константе
+{@link android.provider.UserDictionary.Words#CONTENT_URI UserDictionary.Words.CONTENT_URI}.
+    В классе {@link android.provider.UserDictionary.Words} также имеются константы имен столбцов,
+которые используются в фрагментах кода примера приложения, представленных в этой статье. Например, проекцию запроса
+можно определить следующим образом:
+</p>
+<pre>
+String[] mProjection =
+{
+    UserDictionary.Words._ID,
+    UserDictionary.Words.WORD,
+    UserDictionary.Words.LOCALE
+};
+</pre>
+<p>
+    Другим классом-контрактом является класс {@link android.provider.ContactsContract} для поставщика контактов.
+    В справочной документации к этому классу представлены фрагменты кода примера приложения. Один из его подклассов,
+{@link android.provider.ContactsContract.Intents.Insert}, представляет собой класс-контракт,
+который содержит константы для намерений и их данных.
+</p>
+
+
+<!-- MIME Type Reference -->
+<h2 id="MIMETypeReference">Справка по типам MIME</h2>
+<p>
+    Поставщики контента могут возвращать как стандартные типы мультимедиа MIME, так и строки с настраиваемым типом MIME, либо оба этих типа.
+</p>
+<p>
+    Типы MIME имеют следующий формат:
+</p>
+<pre>
+<em>type</em>/<em>subtype</em>
+</pre>
+<p>
+    Например, хорошо известный тип MIME <code>text/html</code> имеет тип <code>text</code> и подтип
+<code>html</code>. Если поставщик возвращает этот тип URI, это означает, что
+строка запроса, в которой используется этот URI, возвратит текста с тегами HTML.
+</p>
+<p>
+    Строки с настраиваемым типом MIME, которые также называются типами MIME поставщика, имеют более сложные значения
+<em>типов</em> и <em>подтипов</em>. Значение <em>типа</em> всегда следующее:
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>
+</pre>
+<p>
+    для нескольких строк, или
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>
+</pre>
+<p>
+    для одной строки.
+</p>
+<p>
+    <em>Подтип</em> зависит от поставщика. Встроенные поставщики Android обычно содержат простой
+подтип. Например, когда приложение «Контакты» создает строку для номера телефона,
+оно задает следующий тип MIME в этой строке:
+</p>
+<pre>
+vnd.android.cursor.item/phone_v2
+</pre>
+<p>
+    Обратите внимание, что значение подтипа просто <code>phone_v2</code>.
+</p>
+<p>
+    Разработчики поставщиков могут создавать свои собственные шаблоны подтипов на основе
+центра и названий таблиц поставщика. Например, рассмотрим поставщик, который содержит расписание движения поездов.
+    Центром поставщика является <code>com.example.trains</code>, в котором содержатся таблицы
+Line1, Line2 и Line3. В ответ на следующий URI контента
+</p>
+<p>
+<pre>
+content://com.example.trains/Line1
+</pre>
+<p>
+    для таблицы Line1 поставщик возвращает следующий тип MIME
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>/vnd.example.line1
+</pre>
+<p>
+     В ответ на следующий URI контента
+</p>
+<pre>
+content://com.example.trains/Line2/5
+</pre>
+<p>
+    для строки 5 в таблице Line2 поставщик возвращает следующий тип MIME
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>/vnd.example.line2
+</pre>
+<p>
+    В большинстве поставщиков контента определены константы класса-контракта для используемых в них типов MIME. Например, класс-контракт
+{@link android.provider.ContactsContract.RawContacts}
+поставщика контактов определяет константу
+{@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE} для типа MIME одной
+строки необработанного контакта.
+</p>
+<p>
+    URI контента для единичных строк описываются в разделе
+<a href="#ContentURIs">URI контента</a>.
+</p>
diff --git a/docs/html-intl/intl/ru/guide/topics/providers/content-provider-creating.jd b/docs/html-intl/intl/ru/guide/topics/providers/content-provider-creating.jd
new file mode 100644
index 0000000..d8f7873
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/providers/content-provider-creating.jd
@@ -0,0 +1,1214 @@
+page.title=Создание поставщика контента
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+
+<h2>Содержание документа</h2>
+<ol>
+    <li>
+        <a href="#DataStorage">Проектирование хранилища данных</a>
+    </li>
+    <li>
+        <a href="#ContentURI">Проектирование URI контента</a>
+    </li>
+    <li>
+        <a href="#ContentProvider">Реализация класса ContentProvider</a>
+        <ol>
+            <li>
+                <a href="#RequiredAccess">Необходимые методы</a>
+            </li>
+            <li>
+                <a href="#Query">Реализация метода query()</a>
+            </li>
+            <li>
+                <a href="#Insert">Реализация метода insert()</a>
+            </li>
+            <li>
+                <a href="#Delete">Реализация метода delete()</a>
+            </li>
+            <li>
+                <a href="#Update">Реализация метода update()</a>
+            </li>
+            <li>
+                <a href="#OnCreate">Реализация метода onCreate()</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#MIMETypes">Реализация типов MIME поставщика контента</a>
+        <ol>
+            <li>
+                <a href="#TableMIMETypes">Типы MIME для таблиц</a>
+            </li>
+            <li>
+                <a href="#FileMIMETypes">Типы MIME для файлов</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#ContractClass">Реализация класса-контракта</a>
+    </li>
+    <li>
+        <a href="#Permissions">Реализация разрешений поставщика контента</a>
+    </li>
+    <li>
+        <a href="#ProviderElement">Элемент &lt;provider&gt;</a>
+    </li>
+    <li>
+        <a href="#Intents">Намерения и доступ к данным</a>
+    </li>
+</ol>
+<h2>Ключевые классы</h2>
+    <ol>
+        <li>
+            {@link android.content.ContentProvider}
+        </li>
+        <li>
+            {@link android.database.Cursor}
+        </li>
+        <li>
+            {@link android.net.Uri}
+        </li>
+    </ol>
+<h2>Образцы кода по теме</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}resources/samples/NotePad/index.html">
+Пример приложения Note Pad
+</a>
+        </li>
+    </ol>
+<h2>См. также:</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+Основные сведения о поставщике контента</a>
+        </li>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+Поставщик календаря</a>
+        </li>
+    </ol>
+</div>
+</div>
+
+
+<p>
+    Поставщик контента управляет доступом к центральному репозиторию данных. Реализация
+поставщика включает один или несколько классов в приложении Android, а также элементы
+в файле манифеста. Один из классов реализует подкласс
+{@link android.content.ContentProvider}, который выступает в роли интерфейса между вашим поставщиком и
+другими приложениями. Несмотря на то, что поставщики контента изначально предназначены для предоставления доступа к данным
+другим приложениям, в вашем приложении, несомненно, могут содержаться операции, которые разрешают пользователю
+запрашивать и изменять данные, управляемые вашим поставщиком.
+</p>
+<p>
+    В данной статье представлены базовые инструкции по созданию поставщика контента и список необходимых для этого
+API-интерфейсов.
+</p>
+
+
+<!-- Before You Start Building -->
+<h2 id="BeforeYouStart">Подготовка к созданию поставщика</h2>
+<p>
+    Прежде чем приступить к созданию поставщика, выполните указанные ниже действия.
+</p>
+<ol>
+    <li>
+        <strong>Решите, нужен ли вообще вам поставщик контента</strong>. Поставщик
+контента требуется в случаях, если вы хотите реализовать в своем приложении одну или несколько следующих функций:
+        <ul>
+            <li>предоставление сложных данных или файлов другим приложениям;</li>
+            <li>предоставление пользователям возможности копировать сложные данные из вашего приложения в другие приложения;</li>
+            <li>предоставление настраиваемых поисковых подсказок с помощью платформы поиска.</li>
+        </ul>
+    <p>
+        Вам <em>не нужен</em> поставщик для работы с базой данных SQLite, если ее планируется использовать
+исключительно в вашем приложении.
+    </p>
+    </li>
+    <li>
+        Если вы еще не приняли окончательное решение, ознакомьтесь со
+статьей
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">Основные сведения о поставщике контента</a>, чтобы узнать подробнее о поставщиках контента.
+    </li>
+</ol>
+<p>
+    После этого можно приступать к созданию поставщика. Для этого выполните указанные ниже действия.
+</p>
+<ol>
+    <li>
+        Спроектируйте базовое хранилище для своих данных. Поставщик контента предоставляет данные двумя способами:
+        <dl>
+            <dt>
+                Данные для файлов
+            </dt>
+            <dd>
+                Данные, которые обычно поступают в файлы, такие как
+фотографии, аудио- или видеоданные. Файлы следует хранить в закрытом
+пространстве вашего приложения. В ответ на запрос файла из другого приложения
+ваш поставщик может предложить дескриптор для файла.
+            </dd>
+            <dt>
+                Структурированные данные
+            </dt>
+            <dd>
+                Данные, которые обычно поступают в базу данных, массив или аналогичную структуру.
+                Данные следует хранить в той форме, которая совместима с таблицами из строк и столбцов. Строка
+представляет собой объект, например, пользователя, позицию или учетную единицу. Столбец
+представляет собой некоторые данные об объекте, например, имя пользователя или стоимость единицы. Обычно
+данные такого типа хранятся в базе данных SQLite, однако вы можете использовать постоянное хранилище
+любого типа. Дополнительные сведения о типах хранилищ, доступных в системе
+Android, представлены в разделе
+<a href="#DataStorage">Проектирование хранилища данных</a>.
+            </dd>
+        </dl>
+    </li>
+    <li>
+        Определите конкретную реализацию класса {@link android.content.ContentProvider}
+и его необходимые методы. Этот класс выступает в роли интерфейса между вашими данными и остальной частью системы
+Android. Дополнительные сведения об этом классе представлены в разделе
+<a href="#ContentProvider">Реализация класса ContentProvider</a>.
+    </li>
+    <li>
+        Определите строку центра поставщика, его URI контента и имена столбцов. Если необходимо,
+чтобы приложение поставщика обрабатывало намерения, также необходимо определить действия намерений, дополнительные данные
+и флаги. Кроме того, необходимо определить разрешения, которые будут необходимы приложениям для доступа к вашим
+данным. Все эти значения следует определить как константы в отдельном
+классе-контракте; в дальнейшем этот класс можно предоставить другим разработчикам. Дополнительные сведения о
+ URI контента представлены в разделе
+<a href="#ContentURI">Проектирование URI контента</a>.
+        Дополнительные сведения о намерениях представлены в разделе
+<a href="#Intents">Намерения и доступ к данным</a>.
+    </li>
+    <li>
+        Добавьте другие дополнительные компоненты, например, демонстрационные данные или реализация адаптера
+{@link android.content.AbstractThreadedSyncAdapter}, который служит для синхронизации данных между
+поставщиком и облаком.
+    </li>
+</ol>
+
+
+<!-- Designing Data Storage -->
+<h2 id="DataStorage">Проектирование хранилища данных</h2>
+<p>
+    Поставщик контента представляет собой интерфейс для передачи данных, сохраненных в структурированном формате. Прежде чем создавать
+интерфейс, определите способ хранения данных. Данные можно хранить
+в любой форме, а затем спроектировать интерфейс для чтения и записи данных при необходимости.
+</p>
+<p>
+    В Android имеются некоторые технологии хранения данных:
+</p>
+<ul>
+    <li>
+        В системе Android имеется API базы данных SQLite, который используется собственными поставщиками Android для
+хранения табличных данных. С помощью класса
+{@link android.database.sqlite.SQLiteOpenHelper} можно создавать базы данных, а класс
+{@link android.database.sqlite.SQLiteDatabase} представляет собой базовый класс для доступа
+к базам данных.
+        <p>
+            Обратите внимание, что вам не обязательно использовать базу данных для реализации своего репозитория. Поставщик представляет собой
+внешний набор таблиц, как в случае с реляционной базой данных, однако это
+не является требованием к внутренней реализации поставщика.
+        </p>
+    </li>
+    <li>
+        Для хранения данных файлов в Android предусмотрены различные API-интерфейсы для работы с файлами.
+        Дополнительные сведения о хранилище файлов представлены в статье
+<a href="{@docRoot}guide/topics/data/data-storage.html">Хранилище данных</a>. Если вы
+проектируете поставщик, который предлагает мультимедийные данные, такие как музыка или видео, можно создать поставщик,
+объединяющий табличные данные и файлы.
+    </li>
+    <li>
+        Для работы с сетевыми данными используйте классы в {@link java.net} и
+{@link android.net}. Вы также можете синхронизировать сетевые данные с локальным
+хранилищем данных (например, с базой данных), а затем предоставить такие данные в виде таблиц или файлов.
+        Такой тип синхронизации демонстрируется в
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">примере приложения адаптера синхронизации</a>.
+    </li>
+</ul>
+<h3 id="DataDesign">
+    Рекомендации по проектированию данных
+</h3>
+<p>
+    Вот несколько советов и рекомендаций, касающихся проектирования структуры данных поставщика:
+</p>
+<ul>
+    <li>
+        В табличных данных всегда должен быть столбец для «основного ключа», который поставщик хранит
+в виде уникального числового значения для каждой строки. Вы можете использовать это значение для связывания строки
+со строками в других таблицах (используя его в качестве «внешнего ключа»). Несмотря на то, что вы можете использовать любое имя
+для этого столбца, рекомендуется указать имя {@link android.provider.BaseColumns#_ID BaseColumns._ID},
+поскольку для связывания результатов запроса поставщика с
+{@link android.widget.ListView} необходимо, чтобы один из получаемых столбцов назывался
+<code>_ID</code>.
+    </li>
+    <li>
+        Если вы планируете предоставлять растровые изображения или очень большие фрагменты данных для файлов, то данные
+следует хранить в файлах, а затем предоставлять их косвенно вместо хранения таких данных прямо в
+таблице. В таком случае вам необходимо сообщить пользователям вашего поставщика о том, что для доступа к данным им потребуется воспользоваться методом
+{@link android.content.ContentResolver}.
+    </li>
+    <li>
+        Для хранения данных разного размера или с разной структурой используйте тип
+BLOB. Например, столбец BLOB можно использовать для хранения
+<a href="http://code.google.com/p/protobuf">буфера протокола</a> или
+<a href="http://www.json.org">структуры JSON</a>.
+        <p>
+            BLOB также можно использовать для реализации таблицы, <em>не зависящей от схемы</em>. В таблице
+такого типа определяются столбец основного ключа, столбец типа MIME и один
+или несколько общих столбцов BLOB. На смысл данных в столбцах BLOB
+указывает значение в столбце типа MIME. Благодаря этому в одной и той же таблице можно хранить строки
+разных типов. Примером таблицы, не зависящей от схемы, может служить таблица с данными поставщика
+контента
+{@link android.provider.ContactsContract.Data}.
+        </p>
+    </li>
+</ul>
+<!-- Designing Content URIs -->
+<h2 id="ContentURI">Проектирование URI контента</h2>
+<p>
+    <strong>URI контента</strong> представляет собой URI, который определяет данные в поставщике. URI контента
+могут включать символическое имя всего поставщика (его <strong>центр</strong>) и
+имя, которое указывает на таблицу или файл (<strong>путь</strong>). Дополнительная часть URI с идентификатором
+указывает на отдельную строку в таблице. У каждого метода доступа к данным в классе
+{@link android.content.ContentProvider} имеется URI контента (в виде аргумента); благодаря этому вы можете
+определить таблицу, строку или файл для доступа.
+</p>
+<p>
+    Базовые сведения о URI контента представлены в
+статье
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">Основные сведения о поставщике контента</a>.
+</p>
+<h3>Проектирование центра поставщика</h3>
+<p>
+    У поставщика обычно имеется только один центр, который выступает в качестве его внутреннего имени в системе Android. Во
+избежание конфликтов с другими поставщиками в качестве основы центра поставщика должны выступать сведения о владении доменом в Интернете
+(в обратном порядке). Поскольку эта рекомендация также применяется и к названиям пакетов Android,
+вы можете определить центр своего поставщика в виде расширения названия
+пакета, в котором содержится поставщик. Например, если пакет Android называется
+<code>com.example.&lt;appname&gt;</code>, то центром
+вашего поставщика должен быть <code>com.example.&lt;appname&gt;.provider</code>.
+</p>
+<h3>Проектирование структуры пути</h3>
+<p>
+    Обычно разработчики создают URI контента на основе центра поставщика, добавляя к нему путь, который указывает
+на отдельные таблицы. Например, если имеется две таблицы, <em>table1</em> и
+<em>table2</em>, центр поставщика из предыдущего примера следует объединить для формирования
+следующих URI контента:
+<code>com.example.&lt;appname&gt;.provider/table1</code> и
+<code>com.example.&lt;appname&gt;.provider/table2</code>. Пути не ограничены
+одним сегментом, и не на каждом уровне пути имеется таблица.
+</p>
+<h3>Обработка идентификаторов URI контента</h3>
+<p>
+    Обычно поставщики предоставляют доступ к одной строке в таблице путем принятия URI контента,
+в конце которого указано значение идентификатора строки. Также поставщики обычно проверяют совпадение
+значения идентификатора по столбцу <code>_ID</code> в таблице и предоставляют запрашиваемый доступ к
+соответствующей строке.
+</p>
+<p>
+    Это упрощает создание общего метода проектирования для приложений, получающих доступ к поставщику. Приложение
+отправляет запрос поставщику и отображает полученный в результате такого запроса объект {@link android.database.Cursor}
+в объекте {@link android.widget.ListView} с помощью {@link android.widget.CursorAdapter}.
+    Для определения {@link android.widget.CursorAdapter} необходимо, чтобы один из столбцов в объекте
+{@link android.database.Cursor} назывался <code>_ID</code>
+</p>
+<p>
+    Затем пользователь выбирает в пользовательском интерфейсе одну из отображаемых строк, чтобы просмотреть данные
+или изменить их. Приложение получает соответствующую строку из объекта{@link android.database.Cursor} в базовом объекте
+{@link android.widget.ListView}, получает значение <code>_ID</code> для этой строки, добавляет его к
+URI контента, а затем отправляет поставщику запрос на доступ. Затем поставщик может
+запросить или изменить строку, выбранную пользователем.
+</p>
+<h3>Шаблоны URI контента</h3>
+<p>
+    Чтобы помочь вам в выборе действия для выполнения со входящим URI контента, в API поставщика
+имеется класс {@link android.content.UriMatcher}, который сопоставляет шаблоны URI контента с
+целочисленными значениями. Такие целочисленные значения можно использовать в операторе <code>switch</code>,
+который выбирает подходящее действие для URI контента, которые соответствуют определенному шаблону.
+</p>
+<p>
+    Для определения совпадения URI контента с шаблоном используются подстановочные символы:
+</p>
+    <ul>
+        <li>
+            <strong><code>*</code>:</strong> соответствие строке любой длины с любыми допустимыми символами;
+        </li>
+        <li>
+            <strong><code>#</code>:</strong> соответствие строке любой длины с цифрами.
+        </li>
+    </ul>
+<p>
+    В качестве примера для проектирования и написания кода для обработки URI контента
+рекомендуется использовать центр поставщика<code>com.example.app.provider</code>, который распознает
+следующие URI контента, указывающие на таблицы:
+</p>
+<ul>
+    <li>
+        <code>content://com.example.app.provider/table1</code>: таблица <code>table1</code>;
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table2/dataset1</code>: таблица
+<code>dataset1</code>;
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table2/dataset2</code>: таблица
+<code>dataset2</code>;
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table3</code>: таблица <code>table3</code>.
+    </li>
+</ul>
+<p>
+    Поставщик также распознает следующие URI контента, если к ним добавлен идентификатор строки (например,
+<code>content://com.example.app.provider/table3/1</code> для строки с
+идентификатором<code>1</code> в таблице <code>table3</code>.
+</p>
+<p>
+    Возможно использование следующих шаблонов URI контента:
+</p>
+<dl>
+    <dt>
+        <code>content://com.example.app.provider/*</code>
+    </dt>
+    <dd>
+        Совпадает с любым URI контента в поставщике.
+    </dd>
+    <dt>
+        <code>content://com.example.app.provider/table2/*</code>:
+    </dt>
+    <dd>
+        Совпадает с URI контента в таблицах <code>dataset1</code>
+и <code>dataset2</code>, однако не совпадает с URI контента в таблице <code>table1</code> или
+<code>table3</code>.
+    </dd>
+    <dt>
+        <code>content://com.example.app.provider/table3/#</code>: Совпадает с URI контента
+для отдельных строк в таблице <code>table3</code>, такими как
+<code>content://com.example.app.provider/table3/6</code> для строки с идентификатором
+<code>6</code>.
+    </dt>
+</dl>
+<p>
+    Во фрагменте кода ниже показано, как работают методы в классе {@link android.content.UriMatcher}.
+    Этот код обрабатывает URI для всей таблицы иначе, чем для URI
+для отдельной строки, используя шаблон URI контента
+<code>content://&lt;authority&gt;/&lt;path&gt;</code> для таблиц и шаблон
+<code>content://&lt;authority&gt;/&lt;path&gt;/&lt;id&gt;</code> — для отдельных строк.
+</p>
+<p>
+    Метод {@link android.content.UriMatcher#addURI(String, String, int) addURI()} сопоставляет
+центр поставщика и его путь с целочисленным значением. Метод {@link android.content.UriMatcher#match(Uri)
+match()} возвращает целочисленное значение для URI. Оператор <code>switch</code>
+выбирает, следует ли ему выполнить запрос всей таблицы или только отдельной записи:
+</p>
+<pre class="prettyprint">
+public class ExampleProvider extends ContentProvider {
+...
+    // Creates a UriMatcher object.
+    private static final UriMatcher sUriMatcher;
+...
+    /*
+     * The calls to addURI() go here, for all of the content URI patterns that the provider
+     * should recognize. For this snippet, only the calls for table 3 are shown.
+     */
+...
+    /*
+     * Sets the integer value for multiple rows in table 3 to 1. Notice that no wildcard is used
+     * in the path
+     */
+    sUriMatcher.addURI("com.example.app.provider", "table3", 1);
+
+    /*
+     * Sets the code for a single row to 2. In this case, the "#" wildcard is
+     * used. "content://com.example.app.provider/table3/3" matches, but
+     * "content://com.example.app.provider/table3 doesn't.
+     */
+    sUriMatcher.addURI("com.example.app.provider", "table3/#", 2);
+...
+    // Implements ContentProvider.query()
+    public Cursor query(
+        Uri uri,
+        String[] projection,
+        String selection,
+        String[] selectionArgs,
+        String sortOrder) {
+...
+        /*
+         * Choose the table to query and a sort order based on the code returned for the incoming
+         * URI. Here, too, only the statements for table 3 are shown.
+         */
+        switch (sUriMatcher.match(uri)) {
+
+
+            // If the incoming URI was for all of table3
+            case 1:
+
+                if (TextUtils.isEmpty(sortOrder)) sortOrder = "_ID ASC";
+                break;
+
+            // If the incoming URI was for a single row
+            case 2:
+
+                /*
+                 * Because this URI was for a single row, the _ID value part is
+                 * present. Get the last path segment from the URI; this is the _ID value.
+                 * Then, append the value to the WHERE clause for the query
+                 */
+                selection = selection + "_ID = " uri.getLastPathSegment();
+                break;
+
+            default:
+            ...
+                // If the URI is not recognized, you should do some error handling here.
+        }
+        // call the code to actually do the query
+    }
+</pre>
+<p>
+    Другой класс, {@link android.content.ContentUris}, предоставляет удобные методы для работы с частью
+<code>id</code> URI контента. Классы {@link android.net.Uri} и
+{@link android.net.Uri.Builder} содержат удобные методы для синтаксического анализа существующих объектов
+{@link android.net.Uri} и создания новых.
+</p>
+
+<!-- Implementing the ContentProvider class -->
+<h2 id="ContentProvider">Реализация класса ContentProvider</h2>
+<p>
+    Экземпляр класса {@link android.content.ContentProvider} управляет доступом к структурированному набору данных
+ путем обработки запросов от других приложений. В конечном счете, при всех формах доступа
+вызывается метод {@link android.content.ContentResolver}, который затем вызывает конкретный метод
+{@link android.content.ContentProvider} для получения доступа.
+</p>
+<h3 id="RequiredAccess">Необходимые методы</h3>
+<p>
+    В абстрактном классе {@link android.content.ContentProvider} определены шесть абстрактных методов,
+которые необходимо реализовать в рамках вашего собственного конкретного подкласса. Все указанные ниже методы, кроме 
+{@link android.content.ContentProvider#onCreate() onCreate()}, вызываются клиентским приложением,
+которое пытается получить доступ к вашему поставщику контента.
+</p>
+<dl>
+    <dt>
+        {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+query()}
+    </dt>
+    <dd>
+        Получение данных от поставщика. Использует аргументы для выбора таблицы для запроса,
+строк и столбцов, которые необходимо возвратить, и указания порядка сортировки результатов.
+        Возвращает данные в виде объекта {@link android.database.Cursor}.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}
+    </dt>
+    <dd>
+        Вставка строки в ваш поставщик. Использует аргументы для выбора
+конечной таблицы и получения значений столбца, которые следует использовать. Возвращает URI контента
+для новой вставленной строки.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#update(Uri, ContentValues, String, String[])
+update()}
+    </dt>
+    <dd>
+        Обновление существующих строк в поставщике. Использует аргументы для выбора
+таблицы и строк для обновления, а также для получения обновленных значений столбца. Возвращает количество обновленных строк.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()}
+    </dt>
+    <dd>
+        Удаление строк из поставщика. Использует аргументы для выбора
+таблицы и строк для удаления. Возвращает количество удаленных строк.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#getType(Uri) getType()}
+    </dt>
+    <dd>
+        Возвращение типа MIME, соответствующего URI контента. Дополнительные сведения об этом методе представлены в разделе
+<a href="#MIMETypes">Реализация типов MIME поставщика контента</a>.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#onCreate() onCreate()}
+    </dt>
+    <dd>
+        Инициализация поставщика. Система Android вызывает этот метод сразу после
+создания вашего поставщика. Обратите внимание, что поставщик не будет создан до тех пор, пока объект
+{@link android.content.ContentResolver} не прекратит попытки получить доступ к нему.
+    </dd>
+</dl>
+<p>
+    Подпись этих методов аналогична подписи для идентичных методов в объекте
+{@link android.content.ContentResolver}.
+</p>
+<p>
+    При реализации этих методов следует учитывать указанные ниже моменты.
+</p>
+<ul>
+    <li>
+        Все эти методы, кроме {@link android.content.ContentProvider#onCreate() onCreate()},
+можно вызвать сразу из нескольких потоков, поэтому они должны быть реализованы с сохранением потокобезопасности. Дополнительные сведения об
+использовании нескольких потоков представлены в
+статье
+<a href="{@docRoot}guide/components/processes-and-threads.html">Процессы и потоки</a>.
+    </li>
+    <li>
+        Избегайте слишком длинных операций в методе {@link android.content.ContentProvider#onCreate()
+onCreate()}. Отложите выполнение задач инициализации до тех пор, пока они не потребуются.
+        Дополнительные сведения об этом представлены в разделе
+<a href="#OnCreate">Реализация метода onCreate</a>.
+    </li>
+    <li>
+        Несмотря на то, что вы должны реализовать эти методы, ваш код необязательно должен выполнять какие-либо другие действия, кроме
+возврата ожидаемого типа данных. Например, может потребоваться, чтобы другие приложения не имели возможности
+вставлять данные в некоторые таблицы. Для этого можно игнорировать вызов метода
+{@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} и возвратить
+0.
+    </li>
+</ul>
+<h3 id="Query">Реализация метода query()</h3>
+<p>
+    Метод
+{@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+ContentProvider.query()} должен возвращать объект {@link android.database.Cursor}, а при сбое выдавать
+{@link java.lang.Exception}. Если в качестве хранилища данных используется база данных SQLite,
+можно просто возвратить объект {@link android.database.Cursor}, который был возвращен одним из методов
+<code>query()</code> класса {@link android.database.sqlite.SQLiteDatabase}.
+    Если запрос не соответствует ни одной строке, следует возвратить экземпляр объекта{@link android.database.Cursor}, метод
+{@link android.database.Cursor#getCount()} которого возвращает 0.
+    <code>null</code> следует возвращать только в том случае, если во время обработки запроса произошла внутренняя ошибка.
+</p>
+<p>
+    Если вы не используете базу данных SQLite в качестве хранилища данных, обратитесь к одному из конкретных подклассов объекта
+{@link android.database.Cursor}. Например, класс {@link android.database.MatrixCursor}
+реализует объект cursor, в котором каждая строка представляет собой массив класса {@link java.lang.Object}. С помощью этого класса воспользуйтесь методом
+{@link android.database.MatrixCursor#addRow(Object[]) addRow()}, чтобы добавить новую строку.
+</p>
+<p>
+    Следует помнить, что система Android должна иметь возможность взаимодействовать с {@link java.lang.Exception}
+в пределах процесса. Система Android позволяет это делать для указанных ниже исключений, которые могут быть полезны при обработке
+ошибок запросов.
+</p>
+<ul>
+    <li>
+        {@link java.lang.IllegalArgumentException} (это исключение можно выдать в случае,
+если поставщик получает недопустимый URI контента);
+    </li>
+    <li>
+        {@link java.lang.NullPointerException}.
+    </li>
+</ul>
+<h3 id="Insert">Реализация метода insert()</h3>
+<p>
+    Метод {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} добавляет новую
+строку в соответствующую строку, используя значения в аргументе
+{@link android.content.ContentValues}. Если в аргументе {@link android.content.ContentValues} отсутствует имя столбца,
+возможно, потребуется указать для него значение по умолчанию (либо в коде поставщика, либо в
+схеме базы данных).
+</p>
+<p>
+    Этот метод должен возвращать URI контента для новой строки. Для этого добавьте значение
+<code>_ID</code> новой строки (или иной основной ключ) к URI контента таблицы, используя метод
+{@link android.content.ContentUris#withAppendedId(Uri, long) withAppendedId()}.
+</p>
+<h3 id="Delete">Реализация метода delete()</h3>
+<p>
+    Методу {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()}
+необязательно фактически удалять строки из вашего хранилища данных. Если для работы с поставщиком используется адаптер синхронизации,
+рассмотрите возможность отметки удаленной строки флагом
+delete вместо окончательного удаления строки. Адаптер синхронизации может
+проверить наличие удаленных строк с флагом delete и удалить их с сервера перед удалением их из поставщика.
+</p>
+<h3 id="Update">Реализация метода update()</h3>
+<p>
+    Метод {@link android.content.ContentProvider#update(Uri, ContentValues, String, String[])
+update()} принимает тот же аргумент {@link android.content.ContentValues}, который используется методом
+{@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}, и те же аргументы
+<code>selection</code> и <code>selectionArgs</code>, которые используются методами
+{@link android.content.ContentProvider#delete(Uri, String, String[]) delete()} и
+{@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+ContentProvider.query()}. Благодаря этому код можно повторно использовать между данными методами.
+</p>
+<h3 id="OnCreate">Реализация метода onCreate()</h3>
+<p>
+    Система Android вызывает метод {@link android.content.ContentProvider#onCreate()
+onCreate()} при запуске поставщика. В этом методе следует выполнять только быстро выполняющиеся задачи
+инициализации, а создание базы данных и загрузку данных отложить до момента фактического получения
+поставщиком запроса на данные. Слишком длинные операции в методе
+{@link android.content.ContentProvider#onCreate() onCreate()} приводят к увеличению времени
+запуска поставщика. В свою очередь, это увеличивает время отклика поставщика на запросы от других
+приложений.
+</p>
+<p>
+    Например, если вы используете базу данных SQLite,
+в методе
+{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()} можно создать новый объект
+{@link android.database.sqlite.SQLiteOpenHelper}, а затем создать таблицы SQL при первом открытии базы данных. Чтобы упростить это, при первом вызове метода
+{@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase
+getWritableDatabase()} он автоматически вызывает метод
+{@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+SQLiteOpenHelper.onCreate()}.
+</p>
+<p>
+    В двух указанных ниже фрагментах кода иллюстрируется взаимодействие между методом
+{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()} и методом
+{@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+SQLiteOpenHelper.onCreate()}. В первом фрагменте кода представлена реализация метода
+{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()}:
+</p>
+<pre class="prettyprint">
+public class ExampleProvider extends ContentProvider
+
+    /*
+     * Defines a handle to the database helper object. The MainDatabaseHelper class is defined
+     * in a following snippet.
+     */
+    private MainDatabaseHelper mOpenHelper;
+
+    // Defines the database name
+    private static final String DBNAME = "mydb";
+
+    // Holds the database object
+    private SQLiteDatabase db;
+
+    public boolean onCreate() {
+
+        /*
+         * Creates a new helper object. This method always returns quickly.
+         * Notice that the database itself isn't created or opened
+         * until SQLiteOpenHelper.getWritableDatabase is called
+         */
+        mOpenHelper = new MainDatabaseHelper(
+            getContext(),        // the application context
+            DBNAME,              // the name of the database)
+            null,                // uses the default SQLite cursor
+            1                    // the version number
+        );
+
+        return true;
+    }
+
+    ...
+
+    // Implements the provider's insert method
+    public Cursor insert(Uri uri, ContentValues values) {
+        // Insert code here to determine which table to open, handle error-checking, and so forth
+
+        ...
+
+        /*
+         * Gets a writeable database. This will trigger its creation if it doesn't already exist.
+         *
+         */
+        db = mOpenHelper.getWritableDatabase();
+    }
+}
+</pre>
+<p>
+    В следующем фрагменте кода представлена реализация метода
+{@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+SQLiteOpenHelper.onCreate()}, включая вспомогательный класс:
+</p>
+<pre class="prettyprint">
+...
+// A string that defines the SQL statement for creating a table
+private static final String SQL_CREATE_MAIN = "CREATE TABLE " +
+    "main " +                       // Table's name
+    "(" +                           // The columns in the table
+    " _ID INTEGER PRIMARY KEY, " +
+    " WORD TEXT"
+    " FREQUENCY INTEGER " +
+    " LOCALE TEXT )";
+...
+/**
+ * Helper class that actually creates and manages the provider's underlying data repository.
+ */
+protected static final class MainDatabaseHelper extends SQLiteOpenHelper {
+
+    /*
+     * Instantiates an open helper for the provider's SQLite data repository
+     * Do not do database creation and upgrade here.
+     */
+    MainDatabaseHelper(Context context) {
+        super(context, DBNAME, null, 1);
+    }
+
+    /*
+     * Creates the data repository. This is called when the provider attempts to open the
+     * repository and SQLite reports that it doesn't exist.
+     */
+    public void onCreate(SQLiteDatabase db) {
+
+        // Creates the main table
+        db.execSQL(SQL_CREATE_MAIN);
+    }
+}
+</pre>
+
+
+<!-- Implementing ContentProvider MIME Types -->
+<h2 id="MIMETypes">Реализация типов MIME для класса ContentProvider</h2>
+<p>
+    В классе {@link android.content.ContentProvider} предусмотрены два метода для возврата типов MIME:
+</p>
+<dl>
+    <dt>
+        {@link android.content.ContentProvider#getType(Uri) getType()}
+    </dt>
+    <dd>
+        Один из необходимых методов, который требуется реализовать для каждого поставщика.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}
+    </dt>
+    <dd>
+        Метод, который нужно реализовать в случае, если поставщик предоставляет файлы.
+    </dd>
+</dl>
+<h3 id="TableMIMETypes">Типы MIME для таблиц</h3>
+<p>
+    Метод {@link android.content.ContentProvider#getType(Uri) getType()} возвращает объект
+{@link java.lang.String} в формате MIME, который описывает тип данных, возвращаемых аргументом
+URI контента. Аргумент {@link android.net.Uri} может выступать в качестве шаблона, а не в виде определенного URI;
+в этом случае необходимо возвратить тип данных, связанный с URI контента, который соответствует
+шаблону.
+</p>
+<p>
+    Для общих типов данных, таких как текст, HTML или JPEG, метод
+{@link android.content.ContentProvider#getType(Uri) getType()} должен возвращать стандартный тип
+MIME. Полный список стандартных типов представлен на 
+веб-сайте
+<a href="http://www.iana.org/assignments/media-types/index.htm">IANA MIME Media Types</a>.
+</p>
+<p>
+    Для URI контента, которые указывают на одну или несколько строк табличных данных, метод
+{@link android.content.ContentProvider#getType(Uri) getType()} должен возвращать
+тип MIME в формате MIME поставщика, который имеется в системе Android:
+</p>
+<ul>
+    <li>
+        Часть типа: <code>vnd</code>
+    </li>
+    <li>
+        Часть подтипа:
+        <ul>
+            <li>
+    Если шаблон URI предназначен для одной строки: <code>android.cursor.<strong>item</strong>/</code>
+            </li>
+            <li>
+    Если шаблон URI предназначен для нескольких строк: <code>android.cursor.<strong>dir</strong>/</code>
+            </li>
+        </ul>
+    </li>
+    <li>
+        Часть поставщика: <code>vnd.&lt;name&gt;</code>.<code>&lt;type&gt;</code>
+        <p>
+            Вы указываете <code>&lt;name&gt;</code> и <code>&lt;type&gt;</code>.
+            Значение <code>&lt;name&gt;</code> должно быть уникальным глобально,
+а значение <code>&lt;type&gt;</code> должно быть уникальным для соответствующего шаблона
+URI. В качестве <code>&lt;name&gt;</code> рекомендуется использовать название вашей компании
+или часть названия пакета Android вашего приложения. В качестве
+<code>&lt;type&gt;</code> рекомендуется использовать строку, которая определяет связанную с
+URI таблицу.
+        </p>
+
+    </li>
+</ul>
+<p>
+    Например, если центром поставщика является
+<code>com.example.app.provider</code>, который предоставляет таблицу
+<code>table1</code>, то тип MIME для нескольких строк в таблице <code>table1</code> будет следующим:
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>/vnd.com.example.provider.table1
+</pre>
+<p>
+    Для одной строки в таблице <code>table1</code> тип MIME будет следующим:
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>/vnd.com.example.provider.table1
+</pre>
+<h3 id="FileMIMETypes">Типы MIME для файлов</h3>
+<p>
+    Если поставщик предоставляет файлы, необходимо реализовать метод
+{@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}.
+    Этот метод возвращает массив {@link java.lang.String} с типами MIME для файлов,
+возвращаемых поставщиком для заданного URI контента. Предлагаемые поставщиком типы следует сортировать с помощью аргумента фильтра типов MIME,
+чтобы возвращались только те типы MIME, которые необходимо обработать клиенту.
+</p>
+<p>
+    Например, рассмотрим поставщик, который предоставляет фотографии в виде файлов в форматах <code>.jpg</code>,
+<code>.png</code> и <code>.gif</code>.
+    Если приложение вызывает метод {@link android.content.ContentResolver#getStreamTypes(Uri, String)
+ContentResolver.getStreamTypes()} со строкой фильтра <code>image/*</code> (нечто вроде «изображения»),
+то метод {@link android.content.ContentProvider#getStreamTypes(Uri, String)
+ContentProvider.getStreamTypes()}
+должен возвращать следующий массив:
+</p>
+<pre>
+{ &quot;image/jpeg&quot;, &quot;image/png&quot;, &quot;image/gif&quot;}
+</pre>
+<p>
+    Если же приложению требуются только файлы <code>.jpg</code>, то оно вызывает метод
+{@link android.content.ContentResolver#getStreamTypes(Uri, String)
+ContentResolver.getStreamTypes()} со строкой фильтра <code>*\/jpeg</code>; метод
+{@link android.content.ContentProvider#getStreamTypes(Uri, String)
+ContentProvider.getStreamTypes()} при этом должен возвращать следующее:
+<pre>
+{&quot;image/jpeg&quot;}
+</pre>
+<p>
+    Если поставщик не предоставляет ни один из типов MIME, запрошенных в строке фильтра, то метод
+{@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}
+должен возвращать <code>null</code>.
+</p>
+
+
+<!--  Implementing a Contract Class -->
+<h2 id="ContractClass">Реализация класса-контракта</h2>
+<p>
+    Класс-контракт представляет собой класс <code>public final</code>, в котором содержатся определения констант для
+URI, имен столбцов, типов MIME и других метаданных поставщика. Класс
+устанавливает контрактные отношения между поставщиком и другими приложениями путем обеспечения 
+прямого доступа к поставщику даже в случае изменения фактических значений URI, имен столбцов и 
+т. д.
+</p>
+<p>
+    Класс-контракт также полезен для разработчиков тем, что в нем содержатся мнемонические имена для его констант,
+благодаря чему снижается риск того, что разработчики воспользуются неправильными значениями для имен столбцов или URI. Поскольку это класс,
+он может содержать документацию Javadoc. Интегрированные среды разработки, такие как
+Eclipse, могут автоматически заполнять имена констант из класса-контракта и отображать Javadoc для
+констант.
+</p>
+<p>
+    У разработчиков нет доступа к файлу класса-контракта из вашего приложения, однако они могут
+статически скомпилировать класс-контракт в свое приложение из предоставленного вами файла <code>.jar</code>.
+</p>
+<p>
+    Примом класса-контракта может служить класс
+{@link android.provider.ContactsContract} и его вложенные классы.
+</p>
+<h2 id="Permissions">Реализация разрешений поставщика контента</h2>
+<p>
+    Разрешения и доступ ко всем компонентам системы Android подробно описаны в статье
+<a href="{@docRoot}guide/topics/security/security.html">Безопасность и разрешения</a>.
+    Кроме того, в статье <a href="{@docRoot}guide/topics/data/data-storage.html">Хранилище данных</a>
+представлены сведения о безопасности и разрешениях, применяемых к различным типам хранилища.
+    Ниже приведен краткий обзор основных моментов.
+</p>
+<ul>
+    <li>
+        По умолчанию файлы с данными хранятся во внутреннем хранилище устройства и доступны только
+вашему приложению и поставщику.
+    </li>
+    <li>
+        Создаваемые вами базы данных {@link android.database.sqlite.SQLiteDatabase} также доступны только вашему
+приложению и поставщику.
+    </li>
+    <li>
+        Файлы с данными, которые вы сохраняете во внешнем хранилище, по умолчанию являются <em>общедоступными</em>, которые
+<em>может считать любой пользователь</em>. Вам не удастся использовать поставщик контента для ограничения доступа к файлам,
+которые хранятся во внешнем хранилище, поскольку приложения могут использовать другие вызовы API для их чтения или записи.
+    </li>
+    <li>
+        Вызовы метода для открытия или создания файлов или баз данных SQLite, находящихся во внутреннем хранилище на вашем устройстве,
+потенциально могут предоставить всем другим приложениям доступ как на запись, так и на чтение данных. Если вы используете
+внутренний файл или базу данных в качестве репозитория поставщика, выполнить чтение или запись данных в котором может
+любой пользователь, то разрешений, заданных в манифесте поставщика, будет явно недостаточно для
+защиты ваших данных. По умолчанию доступ к файлам и базам данных
+во внутреннем хранилище является закрытым, и вам не следует изменять параметры доступа к репозиторию вашего поставщика.
+    </li>
+</ul>
+<p>
+    При необходимости использовать разрешения поставщика контента для управления доступом к данным, данные
+следует хранить во внутренних файлах, в базах данных SQLite или в облаке (например,
+на удаленном сервере), а доступ к файлам и базам данных должен быть предоставлен только вашему приложению.
+</p>
+<h3>Реализация разрешений</h3>
+<p>
+    Любое приложение может выполнять чтение данных в поставщике или записывать их, даже если соответствующие данные
+являются закрытыми, поскольку по умолчанию для поставщика не заданы разрешения. Чтобы изменить эти настройки, 
+задайте разрешения для поставщика в файле манифеста с помощью атрибутов элемента
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+    &lt;provider&gt;</a></code> или его дочерних элементов. Можно задать разрешения, которые применяются ко всему поставщику
+или только к определенным таблицам, либо даже только к определенным записям или всему дереву.
+</p>
+<p>
+    Для задания разрешений используется один или несколько
+элементов <code><a href="{@docRoot}guide/topics/manifest/permission-element.html">
+    &lt;permission&gt;</a></code> в файле манифеста. Чтобы разрешения
+были уникальными для поставщика, используйте области, аналогичные Java, для атрибута
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#nm">
+    android:name</a></code>. Например, присвойте разрешению на чтение имя
+<code>com.example.app.provider.permission.READ_PROVIDER</code>.
+
+</p>
+<p>
+    Ниже перечислены области разрешений для поставщика, начиная с разрешений,
+которые применяются ко всему поставщику, и заканчивая более подробными разрешениями.
+    Более подробные разрешения имеют преимущество над разрешениями с более широкими областями.
+</p>
+<dl>
+    <dt>
+        Единичное разрешение на чтение/запись на уровне поставщика
+    </dt>
+    <dd>
+        Единичное разрешение, которое управляет доступом как на чтение, так и на запись для всего поставщика, которое задается с помощью атрибута
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+        android:permission</a></code> элемента
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code>.
+    </dd>
+    <dt>
+        Отдельное разрешение на чтение/запись на уровне поставщика
+    </dt>
+    <dd>
+        Разрешение на чтение и запись для всего поставщика. Такие разрешения задаются с помощью атрибутов
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">
+        android:readPermission</a></code> и
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">
+        android:writePermission</a></code> элемента
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code>. Они имеют преимущественную силу над разрешением, заданным с помощью атрибута
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+        android:permission</a></code>.
+    </dd>
+    <dt>
+        Разрешение на уровне пути
+    </dt>
+    <dd>
+        Разрешение на чтение, запись или чтение/запись для URI контента в поставщике. Каждый
+URI, которым необходимо управлять, задается с помощью дочернего элемента
+<code><a href="{@docRoot}guide/topics/manifest/path-permission-element.html">
+        &lt;path-permission&gt;</a></code> элемента
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code>. Для каждого указываемого URI контента можно задать разрешение
+на чтение/запись, только чтение или только запись, либо все три разрешения. Разрешения на чтение и
+запись имеют преимущественную силу над разрешением на чтение/запись. Кроме того, разрешения на уровне пути
+имеют преимущественную силу над разрешениями на уровне поставщика.
+    </dd>
+    <dt>
+        Временное разрешение
+    </dt>
+    <dd>
+        Разрешения этого уровня предоставляют приложению временный доступ, даже если у приложения
+нет разрешений, которые обычно требуются. Функция временного доступа
+ограничивает набор разрешений, которые приложению необходимо запросить в своем
+манифесте. Если включены временные разрешения, единственными приложениями,
+которым требуются «постоянные» разрешения на работу с поставщиком, являются те, которые непрерывно получают доступ ко всем вашим
+данным.
+        <p>
+            Рассмотрим пример с разрешениями, которые необходимо реализовать для поставщика электронной почты и приложения, когда вам
+необходимо разрешить внешнему приложению для просмотра изображений отображать вложенные в письма фотографии
+из поставщика. Чтобы предоставить средству просмотра изображений требуемый доступ без запроса разрешений,
+задайте временные разрешения для URI контента фотографий. Спроектируйте ваше приложение для работы с электронной почтой таким образом,
+чтобы в случаях, когда пользователь желает отобразить фотографию, приложение отправляло намерение, в котором содержится
+URI контента фотографии и флаги разрешения для средства просмотра изображений. Затем средство просмотра изображений
+может отправить поставщику эл. почты запрос на получение фотографии, даже если у средства просмотра отсутствует обычное
+разрешение на чтение данных из поставщика.
+        </p>
+        <p>
+            Чтобы включить временные разрешения, задайте атрибут
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+            android:grantUriPermissions</a></code> для элемента
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code>, либо добавьте один или несколько дочерних элементов
+<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
+            &lt;grant-uri-permission&gt;</a></code>в ваш элемент
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code>. Если вы используете временные разрешения, вам необходимо вызывать метод
+{@link android.content.Context#revokeUriPermission(Uri, int)
+Context.revokeUriPermission()} каждый раз, когда вы осуществляете удаленную поддержку URI контента
+из поставщика, а URI контента связан с временным разрешением.
+        </p>
+        <p>
+            Значение атрибута определяет, какая часть поставщика доступна.
+            Если для атрибута задано значение <code>true</code>, система предоставит временные
+разрешения для всего поставщика, отменяя тем самым любые другие разрешения, которые требуются
+на уровне поставщика или на уровне пути.
+        </p>
+        <p>
+            Если для флага задано значение <code>false</code>, вам необходимо добавить дочерние элементы
+<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
+            &lt;grant-uri-permission&gt;</a></code> в свой элемент
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code>. Каждый дочерний элемент задает URI контента,
+для которых предоставляется временное разрешение.
+        </p>
+        <p>
+            Чтобы делегировать приложению временный доступ, в намерении должны быть указаны флаги
+{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION} или
+{@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION} , либо оба флага. Эти флаги задаются с помощью метода
+{@link android.content.Intent#setFlags(int) setFlags()}.
+        </p>
+        <p>
+            Если атрибут <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+            android:grantUriPermissions</a></code> отсутствует, предполагается, что его значение
+<code>false</code>.
+        </p>
+    </dd>
+</dl>
+
+
+
+<!-- The Provider Element -->
+<h2 id="ProviderElement">Элемент &lt;provider&gt;</h2>
+<p>
+    Как и компоненты {@link android.app.Activity} и {@link android.app.Service},
+подкласс класса {@link android.content.ContentProvider}
+должен быть определен в файле манифеста приложения с помощью элемента
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+    &lt;provider&gt;</a></code>. Ниже указана информация, которую система Android получает из
+этого элемента.
+<dl>
+    <dt>
+        Центр поставщика
+(<a href="{@docRoot}guide/topics/manifest/provider-element.html#auth">{@code
+android:authorities}</a>)
+    </dt>
+    <dd>
+        Символические имена, которые идентифицируют весь поставщик в системе. Дополнительные сведения об этом атрибуте представлены в
+разделе
+<a href="#ContentURI">Проектирование URI контента</a>.
+    </dd>
+    <dt>
+        Название класса поставщика
+(<code>
+<a href="{@docRoot}guide/topics/manifest/provider-element.html#nm">android:name</a>
+        </code>)
+    </dt>
+    <dd>
+        Класс, который реализует класс {@link android.content.ContentProvider}. Дополнительные сведения об этом классе представлены в
+разделе
+<a href="#ContentProvider">Реализация класса ContentProvider</a>.
+    </dd>
+    <dt>
+        Разрешения
+    </dt>
+    <dd>
+        Атрибуты, которые определяют разрешения, необходимые другим приложениям для
+доступа к данным в поставщике:
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+                android:grantUriPermssions</a></code>: флаг временного разрешения;
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+                android:permission</a></code>: единичное разрешение на чтение/запись на уровне поставщика;
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">
+                android:readPermission</a></code>: разрешение на чтение на уровне поставщика;
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">
+                android:writePermission</a></code>: разрешение на запись на уровне поставщика.
+            </li>
+        </ul>
+        <p>
+            Дополнительные сведения о разрешениях и соответствующих атрибутах представлены в
+разделе
+<a href="#Permissions">Реализация разрешений поставщика контента</a>.
+        </p>
+    </dd>
+    <dt>
+        Атрибуты запуска и управления
+    </dt>
+    <dd>
+        Следующие атрибуты определяют порядок и время запуска поставщика системой Android, характеристики
+процесса поставщика, а также другие параметры выполнения:
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#enabled">
+                android:enabled</a></code>: флаг, позволяющий системе запускать поставщик;
+            </li>
+              <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#exported">
+                android:exported</a></code>: флаг, позволяющий другим приложениям использовать этот поставщик;
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#init">
+                android:initOrder</a></code>: порядок запуска поставщика
+(относительно других поставщиков в одном и том же процессе);
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#multi">
+                android:multiProcess</a></code>: флаг, позволяющий системе запускать поставщик
+в том же процессе, что и вызывающий клиент;
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#proc">
+                android:process</a></code>: название процесса, в котором
+запускается поставщик;
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#sync">
+                android:syncable</a></code>: флаг, указывающий на то, что данные в поставщике
+следует синхронизировать с данными на сервере.
+            </li>
+        </ul>
+        <p>
+            Полная документация по атрибутам представлена в статье, посвященной
+элементу
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code>.
+        </p>
+    </dd>
+    <dt>
+        Информационные атрибуты
+    </dt>
+    <dd>
+        Дополнительный значок и метка для поставщика:
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#icon">
+                android:icon</a></code>: графический ресурс, содержащий значок для поставщика.
+                Значок отображается рядом с меткой поставщика в списке приложений в разделе
+<em>Настройки</em> &gt; <em>Приложения</em> &gt; <em>Все</em>.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#label">
+                android:label</a></code>: информационная метка с описанием поставщика или его
+данных, либо обоих описаний. Метка отображается в списке приложений в разделе
+<em>Настройки</em> &gt; <em>Приложения</em> &gt; <em>Все</em>.
+            </li>
+        </ul>
+        <p>
+            Полная документация по атрибутам представлена в статье, посвященной
+элементу<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code>.
+        </p>
+    </dd>
+</dl>
+
+<!-- Intent Access -->
+<h2 id="Intents">Намерения и доступ к данным</h2>
+<p>
+    Приложения могут получать доступ к поставщику контента в обход с помощью объектов {@link android.content.Intent}.
+    Приложение при этом не вызывает какие-либо методы классов {@link android.content.ContentResolver} или
+{@link android.content.ContentProvider}. Вместо этого оно отправляет намерение, запускающе операцию,
+которая обычно является частью собственного приложения поставщика. Получение и отображение данных в своем пользовательском интерфейсе
+выполняет конечная операция. В зависимости от действия, указанного в намерении,
+конечная операция также может предложить пользователю внести изменения в данные поставщика.
+    В намерении также могут содержаться дополнительные данные, которые конечная операция отображает в
+пользовательском интерфейсе; затем пользователю предлагается возможность изменить эти данные, прежде чем использовать их для изменения
+данных в поставщике.
+</p>
+<p>
+
+</p>
+<p>
+    Возможно, доступ с помощью намерения потребуется использовать для обеспечения целостности данных. Для вставки,
+обновления и удаления данных в поставщике может существовать строго определенный программный код, реализующий его функциональные возможности. В
+этом случае предоставление другим приложениям прямого доступа для изменения данных
+может привести к тому, что данные станут недействительными. Если вы хотите предоставить разработчикам возможность доступа посредством намерений, вам следует тщательно задокументировать такую функцию.
+    Объясните им, почему доступ посредством намерений через пользовательский интерфейс вашего приложения намного лучше изменения
+данных посредством их кода.
+</p>
+<p>
+    Обработка входящего намерения для изменения данных поставщика ничем не отличается
+от обработки других намерений. Дополнительные сведения об использовании намерений представлены в статье
+<a href="{@docRoot}guide/components/intents-filters.html">Объекты Intent и фильтры объектов Intent</a>.
+</p>
diff --git a/docs/html-intl/intl/ru/guide/topics/providers/content-providers.jd b/docs/html-intl/intl/ru/guide/topics/providers/content-providers.jd
new file mode 100644
index 0000000..3d7b651
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/providers/content-providers.jd
@@ -0,0 +1,108 @@
+page.title=Поставщики контента
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+
+<!-- In this document -->
+<h2>Темы</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+Основные сведения о поставщике контента</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+Создание поставщика контента</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/calendar-provider.html">Поставщик календаря</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/contacts-provider.html">Поставщик контактов</a>
+    </li>
+</ol>
+
+    <!-- Related Samples -->
+<h2>Образцы кода по теме</h2>
+    <ol>
+        <li>
+            Приложение
+<a href="{@docRoot}resources/samples/ContactManager/index.html">Диспетчер контактов</a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html">
+Cursor (People)
+</a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html">
+Cursor (Phones)</a>
+        </li>
+        <li>
+            <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+Пример адаптера синхронизации</a>
+        </li>
+    </ol>
+</div>
+</div>
+<p>
+    Поставщики контента управляют доступом к структурированному набору данных. Они инкапсулируют данные
+и предоставляют механизмы обеспечения их безопасности. Поставщики контента представляют собой стандартный
+интерфейс для объединения данных в одном процессе с кодом, который выполняется в другом процессе.
+</p>
+<p>
+    Когда вам требуется доступ к данным в поставщике контента, используйте объект
+{@link android.content.ContentResolver} в интерфейсе
+{@link android.content.Context} вашего приложения, чтобы подключиться к поставщику как клиент.
+    Объект {@link android.content.ContentResolver} взаимодействует с объектом поставщика, который представляет собой экземпляр класса, реализующий объект
+{@link android.content.ContentProvider}. Объект
+поставщика получает от клиентов запросы данных, выполняет запрашиваемые действия и
+возвращает результаты.
+</p>
+<p>
+    Вам не нужно разрабатывать собственный поставщик, если вы не планируете предоставлять доступ к своим данным
+другим приложениям. Однако вам потребуется собственный поставщик для предоставления настраиваемых
+поисковых подсказок в вашем собственном приложении. Вам также потребуется собственный поставщик, если вы хотите копировать и вставлять сложные данные или файлы из своего приложения
+в другие приложения.
+</p>
+<p>
+    В состав системы Android входят поставщики контента, которые управляют такими данными, как аудио, видео, изображения и
+личная контактная информация. Некоторые из поставщиков указаны в справочной документации для
+пакета
+<code><a href="{@docRoot}reference/android/provider/package-summary.html">android.provider</a>
+    .</code> Работать с этими поставщиками может любое приложение Android
+(однако с некоторыми ограничениями).
+</p><p>
+    Ниже перечислены статьи, в которых представлено более подробное описание поставщиков контента.
+</p>
+<dl>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+Основные сведения о поставщике контента</a></strong>
+    </dt>
+    <dd>
+        Сведения о доступе к данным в поставщике контента, которые представлены в таблицах.
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+Создание поставщика контента</a></strong>
+    </dt>
+    <dd>
+        Сведения о создании своего собственного поставщика контента.
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+Поставщик календаря</a></strong>
+    </dt>
+    <dd>
+        Сведения о доступе к поставщику календаря, который входит в состав платформы Android.
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/contacts-provider.html">
+Поставщик контактов</a></strong>
+    </dt>
+    <dd>
+        Сведения о доступе к поставщику контактов, который входит в состав платформы Android.
+    </dd>
+</dl>
diff --git a/docs/html-intl/intl/ru/guide/topics/providers/document-provider.jd b/docs/html-intl/intl/ru/guide/topics/providers/document-provider.jd
new file mode 100644
index 0000000..c594968
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/providers/document-provider.jd
@@ -0,0 +1,916 @@
+page.title=Платформа доступа к хранилищу (Storage Access Framework)
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Содержание документа
+<a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
+        <span class="more">больше информации</span>
+        <span class="less" style="display:none">меньше информации</span></a></h2>
+<ol id="toc44" class="hide-nested">
+    <li>
+        <a href="#overview">Обзор</a>
+    </li>
+    <li>
+        <a href="#flow">Поток управления</a>
+    </li>
+    <li>
+        <a href="#client">Создание клиентского приложения</a>
+        <ol>
+        <li><a href="#search">Поиск документов</a></li>
+        <li><a href="#process">Обработка результатов</a></li>
+        <li><a href="#metadata">Изучение метаданных документа</a></li>
+        <li><a href="#open">Открытие документа</a></li>
+        <li><a href="#create">Создание нового документа</a></li>
+        <li><a href="#delete">Удаление документа</a></li>
+        <li><a href="#edit">Редактирование документа</a></li>
+        <li><a href="#permissions">Удержание прав доступа</a></li>
+        </ol>
+    </li>
+    <li><a href="#custom">Создание собственного поставщика документов</a>
+        <ol>
+        <li><a href="#manifest">Манифест</a></li>
+        <li><a href="#contract">Контракты</a></li>
+        <li><a href="#subclass">Создание подкласса класса DocumentsProvider</a></li>
+        <li><a href="#security">Безопасность</a></li>
+        </ol>
+    </li>
+
+</ol>
+<h2>Ключевые классы</h2>
+<ol>
+    <li>{@link android.provider.DocumentsProvider}</li>
+    <li>{@link android.provider.DocumentsContract}</li>
+</ol>
+
+<h2>Видео</h2>
+
+<ol>
+    <li><a href="http://www.youtube.com/watch?v=zxHVeXbK1P4">
+DevBytes: Android 4.4 Storage Access Framework: Поставщик</a></li>
+     <li><a href="http://www.youtube.com/watch?v=UFj9AEz0DHQ">
+DevBytes: Android 4.4 Storage Access Framework: Клиент</a></li>
+</ol>
+
+
+<h2>Примеры кода</h2>
+
+<ol>
+    <li><a href="{@docRoot}samples/StorageProvider/index.html">
+Класс StorageProvider</a></li>
+     <li><a href="{@docRoot}samples/StorageClient/index.html">
+Класс StorageClient</a></li>
+</ol>
+
+<h2>См. также:</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+Основные сведения о поставщике контента
+</a>
+    </li>
+</ol>
+
+</div>
+</div>
+
+
+<p>Платформа доступа к хранилищу (Storage Access Framework, SAF) впервые появилась в Android версии 4.4 (API уровня 19). Платформа SAF
+ облегчает пользователям поиск и открытие документов, изображений и других файлов
+в хранилищах всех поставщиков, с которыми они работают. Стандартный удобный интерфейс
+позволяет пользователям применять единый для всех приложений и поставщиков способ поиска файлов и доступа к последним добавленным файлам.</p>
+
+<p>Облачные или локальные службы хранения могут присоединиться к этой экосистеме, реализовав
+класс {@link android.provider.DocumentsProvider}, инкапсулирующий их услуги. Клиентские
+приложения, которым требуется доступ к документам поставщика, могут интегрироваться с SAF с помощью всего нескольких
+строчек кода.</p>
+
+<p>Платформа SAF включает в себя следующие компоненты:</p>
+
+<ul>
+<li><strong>Поставщик документов</strong>&mdash;поставщик контента, позволяющий
+службе хранения (например, Диск Google) показывать файлы, которыми он управляет. Поставщик документов
+реализуется как подкласс класса{@link android.provider.DocumentsProvider}.
+Его схема основана на традиционной файловой иерархии,
+однако физический способ хранения данных в поставщике документов остается на усмотрении разработчика.
+ Платформа Android включает в себя несколько встроенных поставщиков документов, таких как
+Загрузки, Изображения и Видео.</li>
+
+<li><strong>Клиентское приложение</strong>&mdash;пользовательское приложение, вызывающее намерение
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} и/или
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT} и принимающее
+файлы, возвращаемые поставщиками документов.</li>
+
+<li><strong>Элемент выбора</strong>&mdash;системный пользовательский интерфейс, обеспечивающий пользователям доступ к документам у всех
+поставщиков документов, которые удовлетворяют критериям поиска, заданным в клиентском приложении.</li>
+</ul>
+
+<p>Платформа SAF в числе прочих предоставляет следующие функции:</p>
+<ul>
+<li>позволяет пользователям искать контент у всех поставщиков документов, а не только у одного приложения;</li>
+<li>обеспечивает приложению возможность долговременного, постоянного доступа к
+ документам, принадлежащим поставщику документов. Благодаря такому доступу пользователи могут добавлять, редактировать,
+ сохранять и удалять файлы, хранящиеся у поставщика;</li>
+<li>поддерживает несколько учетных записей и временные корневые каталоги, например, поставщики
+на USB-накопителях, которые появляются, только когда накопитель вставлен в порт. </li>
+</ul>
+
+<h2 id ="overview">Обзор</h2>
+
+<p>В центре платформы SAF находится поставщик контента, являющийся
+подклассом класса {@link android.provider.DocumentsProvider}. Внутри <em>поставщика документов</em>данные имеют
+структуру традиционной файловой иерархии:</p>
+<p><img src="{@docRoot}images/providers/storage_datamodel.png" alt="data model" /></p>
+<p class="img-caption"><strong>Рисунок 1.</strong> Модель данных поставщика документов. На рисунке Root (Корневой каталог) указывает на один объект Document (Документ),
+который затем разветвляется в целое дерево.</p>
+
+<p>Обратите внимание на следующее.</p>
+<ul>
+
+<li>Каждый поставщик документов предоставляет один или несколько
+«корневых каталогов», являющихся отправными точками при обходе дерева документов.
+Каждый корневой каталог имеет уникальный идентификатор {@link android.provider.DocumentsContract.Root#COLUMN_ROOT_ID}
+и указывает на документ (каталог),
+представляющий содержимое на уровне ниже корневого.
+Корневые каталоги динамичны по своей конструкции, чтобы обеспечивать поддержку таким вариантам использования, как несколько учетных записей,
+временные хранилища на USB-нкопителях и возможность для пользователя войти в систему и выйти из нее.</li>
+
+<li>В каждом корневом каталоге находится один документ. Этот документ указывает на количество документов <em>N</em>
+каждый из которых, в свою очередь, может указывать на один или <em>N</em> документов. </li>
+
+<li>Каждый сервер хранилища показывает
+отдельные файлы и каталоги, ссылаясь на них с помощью уникального
+идентификатора {@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID}.
+Идентификаторы документов должны быть уникальными и не меняться после присвоения, поскольку они используются для выдачи постоянных
+URI, не зависящих от перезагрузки устройства.</li>
+
+
+<li>Документ — это или открываемый файл (имеющий конкретный MIME-тип), или
+каталог, содержащий другие документы (с
+MIME-типом {@link android.provider.DocumentsContract.Document#MIME_TYPE_DIR}).</li>
+
+<li>Каждый документ может иметь различные свойства, описываемые флагами
+{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS COLUMN_FLAGS},
+такими как{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_WRITE},
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE} и
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_THUMBNAIL}.
+Документ с одним и тем же идентификатором {@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID} может находиться
+в нескольких каталогах.</li>
+</ul>
+
+<h2 id="flow">Поток управления</h2>
+<p>Как было сказано выше, модель данных поставщика документов основана на традиционной
+файловой иерархии. Однако физический способ хранения данных остается на усмотрение разработчика, при
+условии, что к ним можно обращаться через API-интерфейс {@link android.provider.DocumentsProvider}. Например, можно
+использовать для данных облачное хранилище на основе тегов.</p>
+
+<p>На рисунке 2 показан пример того, как приложение для обработки фотографий может использовать SAF
+для доступа к сохраненным данным:</p>
+<p><img src="{@docRoot}images/providers/storage_dataflow.png" alt="app" /></p>
+
+<p class="img-caption"><strong>Рисунок 2.</strong> Поток управления Storage Access Framework</p>
+
+<p>Обратите внимание на следующее.</p>
+<ul>
+
+<li>На платформе SAF поставщики и клиенты не взаимодействуют
+напрямую. Клиент запрашивает разрешение на взаимодействие
+с файлами (то есть, на чтение, редактирование, создание или удаление файлов).</li>
+
+<li>Взаимодействие начинается, когда приложение (в нашем примере обрабатывающее фотографии) активизирует намерение
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} или {@link android.content.Intent#ACTION_CREATE_DOCUMENT}. Намерение может включать в себя фильтры
+для уточнения критериев, например, «предоставить открываемые файлы
+с MIME-типом image».</li>
+
+<li>Когда намерение срабатывает, системный элемент выбора переходит к каждому зарегистрированному поставщику
+и показывает пользователю корневые каталоги с контентом, соответствующим запросу.</li>
+
+<li>Элемент выбора предоставляет пользователю стандартный интерфейс, даже
+если поставщики документов значительно различаются. В качестве примера на рисунке 2
+изображены Диск Google, поставщик на USB-накопителе и облачный поставщик.</li>
+</ul>
+
+<p>На рисунке 3 показан элемент выбора, в котором пользователь для поиска изображений выбрал учетную запись
+Диск Google:</p>
+
+<p><img src="{@docRoot}images/providers/storage_picker.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
+
+<p class="img-caption"><strong>Рисунок 3.</strong> Элемент выбора</p>
+
+<p>Когда пользователь выбирает Диск Google, изображения отображаются, как показано на
+рисунке 4. С этого момента пользователь может взаимодействовать с ними любыми способами,
+ которые поддерживаются поставщиком и клиентским приложением.
+
+<p><img src="{@docRoot}images/providers/storage_photos.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
+
+<p class="img-caption"><strong>Рисунок 4.</strong> Изображения</p>
+
+<h2 id="client">Создание клиентского приложения</h2>
+
+<p>В Android версии 4.3 и ниже для того, чтобы приложение могло получать файл от другого
+приложения, оно должно активизировать намерение, например, {@link android.content.Intent#ACTION_PICK}
+или {@link android.content.Intent#ACTION_GET_CONTENT}. После этого пользователь должен выбрать
+какое-либо одно приложение, чтобы получить файл, а оно должно предоставить пользователю
+интерфейс, с помощью которого он сможет выбирать и получать файлы. </p>
+
+<p>Начиная с Android 4.4 и выше, у разработчика имеется дополнительная возможность — намерение
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT},
+которое отображает пользовательский интерфейс элемента выбора, управляемого системой. Этот элемент предоставляет пользователю
+обзор всех файлов, доступных в других приложениях. Благодаря этому единому интерфейсу,
+пользователь может выбрать файл в любом из поддерживаемых приложений.</p>
+
+<p>Намерение {@link android.content.Intent#ACTION_OPEN_DOCUMENT} не
+является заменой для намерения {@link android.content.Intent#ACTION_GET_CONTENT}.
+ Разработчику следует использовать то, которое лучше соответствует потребностям приложения:</p>
+
+<ul>
+<li>используйте {@link android.content.Intent#ACTION_GET_CONTENT}, если приложению нужно просто
+прочитать или импортировать данные. При таком подходе приложение импортирует копию данных,
+ например, файл с изображением.</li>
+
+<li>используйте {@link android.content.Intent#ACTION_OPEN_DOCUMENT}, если
+приложению нужна возможность долговременного, постоянного доступа к документам, принадлежащим поставщику
+документов. В качестве примера можно назвать редактор фотографий, позволяющий пользователям обрабатывать
+изображения, хранящиеся в поставщике документов. </li>
+
+</ul>
+
+
+<p>В этом разделе показано, как написать клиентское приложение, использующее намерения
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} и
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT}.</p>
+
+
+<h3 id="search">Поиск документов</h3>
+
+<p>
+В следующем фрагменте кода намерение {@link android.content.Intent#ACTION_OPEN_DOCUMENT}
+используется для поиска поставщиков документов,
+содержащих файлы изображений:</p>
+
+<pre>private static final int READ_REQUEST_CODE = 42;
+...
+/**
+ * Fires an intent to spin up the &quot;file chooser&quot; UI and select an image.
+ */
+public void performFileSearch() {
+
+    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's file
+    // browser.
+    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as a
+    // file (as opposed to a list of contacts or timezones)
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Filter to show only images, using the image MIME data type.
+    // If one wanted to search for ogg vorbis files, the type would be &quot;audio/ogg&quot;.
+    // To search for all documents available via installed storage providers,
+    // it would be &quot;*/*&quot;.
+    intent.setType(&quot;image/*&quot;);
+
+    startActivityForResult(intent, READ_REQUEST_CODE);
+}</pre>
+
+<p>Обратите внимание на следующее.</p>
+<ul>
+<li>Когда приложение активизирует намерение {@link android.content.Intent#ACTION_OPEN_DOCUMENT}
+, оно запускает элемент выбора, отображающий всех поставщиков документов, соответствующих заданным критериям.</li>
+
+<li>Добавление категории {@link android.content.Intent#CATEGORY_OPENABLE} в
+фильтры намерения приводит к отображению только тех документов, которые можно открыть, например, файлов с изображениями.</li>
+
+<li>Оператор {@code intent.setType("image/*")} выполняет дальнейшую фильтрацию, чтобы
+отображались только документы с MIME-типом image.</li>
+</ul>
+
+<h3 id="results">Обработка результатов</h3>
+
+<p>Когда пользователь выбирает документ в элементе выбора,
+вызывается метод {@link android.app.Activity#onActivityResult onActivityResult()}.
+Идентификатор URI, указывающий на выбранный документ, содержится в параметре{@code resultData}.
+ Чтобы извлечь URI, следует вызвать {@link android.content.Intent#getData getData()}.
+Этот URI можно использовать для получения документа, нужного пользователю. Например:
+</p>
+
+<pre>&#64;Override
+public void onActivityResult(int requestCode, int resultCode,
+        Intent resultData) {
+
+    // The ACTION_OPEN_DOCUMENT intent was sent with the request code
+    // READ_REQUEST_CODE. If the request code seen here doesn't match, it's the
+    // response to some other intent, and the code below shouldn't run at all.
+
+    if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
+        // The document selected by the user won't be returned in the intent.
+        // Instead, a URI to that document will be contained in the return intent
+        // provided to this method as a parameter.
+        // Pull that URI using resultData.getData().
+        Uri uri = null;
+        if (resultData != null) {
+            uri = resultData.getData();
+            Log.i(TAG, "Uri: " + uri.toString());
+            showImage(uri);
+        }
+    }
+}
+</pre>
+
+<h3 id="metadata">Изучение метаданных документа</h3>
+
+<p>Имея в своем распоряжении URI документа, разработчик получает доступ к его метаданным. В следующем
+фрагменте кода метаданные документа, определяемого идентификатором URI, считываются и записываются в журнал:</p>
+
+<pre>public void dumpImageMetaData(Uri uri) {
+
+    // The query, since it only applies to a single document, will only return
+    // one row. There's no need to filter, sort, or select fields, since we want
+    // all fields for one document.
+    Cursor cursor = getActivity().getContentResolver()
+            .query(uri, null, null, null, null, null);
+
+    try {
+    // moveToFirst() returns false if the cursor has 0 rows.  Very handy for
+    // &quot;if there's anything to look at, look at it&quot; conditionals.
+        if (cursor != null &amp;&amp; cursor.moveToFirst()) {
+
+            // Note it's called &quot;Display Name&quot;.  This is
+            // provider-specific, and might not necessarily be the file name.
+            String displayName = cursor.getString(
+                    cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
+            Log.i(TAG, &quot;Display Name: &quot; + displayName);
+
+            int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE);
+            // If the size is unknown, the value stored is null.  But since an
+            // int can't be null in Java, the behavior is implementation-specific,
+            // which is just a fancy term for &quot;unpredictable&quot;.  So as
+            // a rule, check if it's null before assigning to an int.  This will
+            // happen often:  The storage API allows for remote files, whose
+            // size might not be locally known.
+            String size = null;
+            if (!cursor.isNull(sizeIndex)) {
+                // Technically the column stores an int, but cursor.getString()
+                // will do the conversion automatically.
+                size = cursor.getString(sizeIndex);
+            } else {
+                size = &quot;Unknown&quot;;
+            }
+            Log.i(TAG, &quot;Size: &quot; + size);
+        }
+    } finally {
+        cursor.close();
+    }
+}
+</pre>
+
+<h3 id="open-client">Открытие документа</h3>
+
+<p>Получив URI документа, разработчик может открывать его и в целом
+делать с ним всё, что угодно.</p>
+
+<h4>Объект растровых изображений</h4>
+
+<p>Приведем пример кода для открытия объекта {@link android.graphics.Bitmap}:</p>
+
+<pre>private Bitmap getBitmapFromUri(Uri uri) throws IOException {
+    ParcelFileDescriptor parcelFileDescriptor =
+            getContentResolver().openFileDescriptor(uri, "r");
+    FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
+    Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
+    parcelFileDescriptor.close();
+    return image;
+}
+</pre>
+
+<p>Обратите внимание, что не следует производить эту операцию в потоке пользовательского интерфейса. Ее нужно выполнять
+в фоне, с помощью {@link android.os.AsyncTask}. Когда файл с растровым изображением откроется, его
+можно отобразить в виджете {@link android.widget.ImageView}.
+</p>
+
+<h4>Получение объекта InputStream</h4>
+
+<p>Далее приведен пример того, как можно получить объект {@link java.io.InputStream} по идентификатору URI. В этом
+фрагменте кода строчки файла считываются в объект строкового типа:</p>
+
+<pre>private String readTextFromUri(Uri uri) throws IOException {
+    InputStream inputStream = getContentResolver().openInputStream(uri);
+    BufferedReader reader = new BufferedReader(new InputStreamReader(
+            inputStream));
+    StringBuilder stringBuilder = new StringBuilder();
+    String line;
+    while ((line = reader.readLine()) != null) {
+        stringBuilder.append(line);
+    }
+    fileInputStream.close();
+    parcelFileDescriptor.close();
+    return stringBuilder.toString();
+}
+</pre>
+
+<h3 id="create">Создание нового документа</h3>
+
+<p>Приложение может создать новый документ в поставщике документов, используя намерение
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT}
+. Чтобы создать файл, нужно указать в намерении MIME-тип и имя файла, а затем
+запустить его с уникальным кодом запроса. Об остальном позаботится платформа:</p>
+
+
+<pre>
+// Here are some examples of how you might call this method.
+// The first parameter is the MIME type, and the second parameter is the name
+// of the file you are creating:
+//
+// createFile("text/plain", "foobar.txt");
+// createFile("image/png", "mypicture.png");
+
+// Unique request code.
+private static final int WRITE_REQUEST_CODE = 43;
+...
+private void createFile(String mimeType, String fileName) {
+    Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as
+    // a file (as opposed to a list of contacts or timezones).
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Create a file with the requested MIME type.
+    intent.setType(mimeType);
+    intent.putExtra(Intent.EXTRA_TITLE, fileName);
+    startActivityForResult(intent, WRITE_REQUEST_CODE);
+}
+</pre>
+
+<p>После создания нового документа можно получить его URI с помощью
+метода {@link android.app.Activity#onActivityResult onActivityResult()}, чтобы иметь возможность
+записывать в него данные.</p>
+
+<h3 id="delete">Удаление документа</h3>
+
+<p>Если у разработчика имеется URI документа, а объект
+{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS Document.COLUMN_FLAGS}
+этого документа содержит флаг
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE SUPPORTS_DELETE},
+то документ можно удалить. Например:</p>
+
+<pre>
+DocumentsContract.deleteDocument(getContentResolver(), uri);
+</pre>
+
+<h3 id="edit">Редактирование документа</h3>
+
+<p>Платформа SAF позволяет редактировать текстовые документы на месте.
+В следующем фрагменте кода активизируется
+намерение {@link android.content.Intent#ACTION_OPEN_DOCUMENT}, а
+категория {@link android.content.Intent#CATEGORY_OPENABLE} используется, чтобы отображались только
+документы, которые можно открыть. Затем производится дальнейшая фильтрация, чтобы отображались только текстовые файлы:</p>
+
+<pre>
+private static final int EDIT_REQUEST_CODE = 44;
+/**
+ * Open a file for writing and append some text to it.
+ */
+ private void editDocument() {
+    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's
+    // file browser.
+    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as a
+    // file (as opposed to a list of contacts or timezones).
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Filter to show only text files.
+    intent.setType(&quot;text/plain&quot;);
+
+    startActivityForResult(intent, EDIT_REQUEST_CODE);
+}
+</pre>
+
+<p>Далее, из метода {@link android.app.Activity#onActivityResult onActivityResult()}
+(см. <a href="#results">Обработка результатов</a>) можно вызвать код для выполнения редактирования.
+В следующем фрагменте кода объект {@link java.io.FileOutputStream}
+получен с помощью объекта класса {@link android.content.ContentResolver}. По умолчанию используется режим записи.
+Рекомендуется запрашивать минимально необходимые права доступа, поэтому не следует запрашивать
+чтение/запись, если приложению требуется только записать файл:</p>
+
+<pre>private void alterDocument(Uri uri) {
+    try {
+        ParcelFileDescriptor pfd = getActivity().getContentResolver().
+                openFileDescriptor(uri, "w");
+        FileOutputStream fileOutputStream =
+                new FileOutputStream(pfd.getFileDescriptor());
+        fileOutputStream.write(("Overwritten by MyCloud at " +
+                System.currentTimeMillis() + "\n").getBytes());
+        // Let the document provider know you're done by closing the stream.
+        fileOutputStream.close();
+        pfd.close();
+    } catch (FileNotFoundException e) {
+        e.printStackTrace();
+    } catch (IOException e) {
+        e.printStackTrace();
+    }
+}</pre>
+
+<h3 id="permissions">Удержание прав доступа</h3>
+
+<p>Когда приложение открывает файл для чтения или записи, система предоставляет
+ему URI-разрешение на этот файл. Разрешение действует вплоть до перезагрузки устройства.
+Предположим, что в графическом редакторе требуется, чтобы у пользователя была возможность
+открыть непосредственно в этом приложении последние пять изображений, которые он редактировал. Если он
+перезапустил устройство, возникает необходимость снова отсылать его к системному элементу выбора для поиска
+файлов. Очевидно, это далеко не идеальный вариант.</p>
+
+<p>Чтобы избежать такой ситуации, разработчик может удержать права доступа, предоставленные системой
+его приложению. Приложение фактически принимает постоянное URI-разрешение,
+предлагаемое системой. В результате пользователь получает непрерывный доступ к файлам
+из приложения, независимо от перезагрузки устройства:</p>
+
+
+<pre>final int takeFlags = intent.getFlags()
+            &amp; (Intent.FLAG_GRANT_READ_URI_PERMISSION
+            | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+// Check for the freshest data.
+getContentResolver().takePersistableUriPermission(uri, takeFlags);</pre>
+
+<p>Остается один заключительный шаг. Можно сохранить последние
+URI-идентификаторы, с которыми работало приложение. Однако не исключено, что они потеряют актуальность, поскольку другое приложение
+может удалить или модифицировать документ. Поэтому следует всегда вызывать
+{@code getContentResolver().takePersistableUriPermission()}, чтобы получать
+актуальные данные.</p>
+
+<h2 id="custom">Создание собственного поставщика документов</h2>
+
+<p>
+При разработке приложения, оказывающего услуги по хранению файлов (например,
+службы хранения в облаке), можно предоставить доступ к файлам при помощи
+SAF, написав собственный поставщик документов.  В этом разделе показано,
+как это сделать.</p>
+
+
+<h3 id="manifest">Манифест</h3>
+
+<p>Чтобы реализовать собственный поставщик документов, необходимо добавить в манифест приложения
+следующую информацию:</p>
+<ul>
+
+<li>Целевой API-интерфейс уровня 19 или выше.</li>
+
+<li>Элемент <code>&lt;provider&gt;</code>, в котором объявляется нестандартный поставщик
+ хранилища. </li>
+
+<li>Имя поставщика, т. е., имя его класса с именем пакета.
+Например: <code>com.example.android.storageprovider.MyCloudProvider</code>.</li>
+
+<li>Имя центра поставщика, т. е. имя пакета (в этом примере —
+<code>com.example.android.storageprovider</code>) с типом поставщика контента
+(<code>documents</code>). Например,{@code com.example.android.storageprovider.documents}.</li>
+
+<li>Атрибут <code>android:exported</code>, установленный в значение <code>&quot;true&quot;</code>.
+ Необходимо экспортировать поставщик, чтобы он был виден другим приложениям.</li>
+
+<li>Атрибут <code>android:grantUriPermissions</code>, установленный в значение 
+<code>&quot;true&quot;</code>. Этот параметр позволяет системе предоставлять другим приложениям доступ
+к контенту поставщика. Обсуждение того, как следует удерживать права доступа
+к конкретному документу см. в разделе <a href="#permissions">Удержание прав доступа</a>.</li>
+
+<li>Разрешение {@code MANAGE_DOCUMENTS}. По умолчанию поставщик доступен
+всем. Добавление этого разрешения в манифест делает поставщик доступным только системе.
+Это важно для обеспечения безопасности.</li>
+
+<li>Атрибут {@code android:enabled}, имеющий логическое значение, определенное в файле
+ресурсов. Этот атрибут предназначен для отключения поставщика на устройствах под управлением Android версии 4.3 и ниже.
+ Например: {@code android:enabled="@bool/atLeastKitKat"}. Помимо
+включения этого атрибута в манифест, необходимо сделать следующее:
+<ul>
+<li>В файл ресурсов {@code bool.xml}, расположенный в каталоге {@code res/values/}, добавить
+строчку <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;false&lt;/bool&gt;</pre></li>
+
+<li>В файл ресурсов {@code bool.xml}, расположенный в каталоге {@code res/values-v19/}, добавить
+строчку <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;true&lt;/bool&gt;</pre></li>
+</ul></li>
+
+<li>Фильтр намерения с действием
+{@code android.content.action.DOCUMENTS_PROVIDER}, чтобы поставщик
+появлялся в элементе выбора, когда система будет искать поставщиков.</li>
+
+</ul>
+<p>Ниже приведены отрывки из образца манифеста, включающего в себя поставщик:</p>
+
+<pre>&lt;manifest... &gt;
+    ...
+    &lt;uses-sdk
+        android:minSdkVersion=&quot;19&quot;
+        android:targetSdkVersion=&quot;19&quot; /&gt;
+        ....
+        &lt;provider
+            android:name=&quot;com.example.android.storageprovider.MyCloudProvider&quot;
+            android:authorities=&quot;com.example.android.storageprovider.documents&quot;
+            android:grantUriPermissions=&quot;true&quot;
+            android:exported=&quot;true&quot;
+            android:permission=&quot;android.permission.MANAGE_DOCUMENTS&quot;
+            android:enabled=&quot;&#64;bool/atLeastKitKat&quot;&gt;
+            &lt;intent-filter&gt;
+                &lt;action android:name=&quot;android.content.action.DOCUMENTS_PROVIDER&quot; /&gt;
+            &lt;/intent-filter&gt;
+        &lt;/provider&gt;
+    &lt;/application&gt;
+
+&lt;/manifest&gt;</pre>
+
+<h4 id="43">Поддержка устройств под управлением Android версии 4.3 и ниже</h4>
+
+<p>Намерение
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} доступно только
+на устройствах с Android версии 4.4 и выше.
+Если приложение должно поддерживать {@link android.content.Intent#ACTION_GET_CONTENT},
+чтобы обслуживать устройства, работающие под управлением Android 4.3 и ниже, необходимо
+отключить фильтр намерения {@link android.content.Intent#ACTION_GET_CONTENT} в
+манифесте для устройств с Android версии 4.4 и выше. Поставщик
+документов и намерение {@link android.content.Intent#ACTION_GET_CONTENT} следует считать
+взаимоисключающими. Если приложение поддерживает их одновременно, оно
+будет появляться в пользовательском интерфейсе системного элемента выбора дважды, предлагая два различных способа доступа
+к сохраненным данным. Это запутает пользователей.</p>
+
+<p>Отключать фильтр намерения
+{@link android.content.Intent#ACTION_GET_CONTENT} на устройствах
+с Android версии 4.4 и выше рекомендуется следующим образом:</p>
+
+<ol>
+<li>В файл ресурсов {@code bool.xml}, расположенный в каталоге {@code res/values/}, добавить
+следующую строку: <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;true&lt;/bool&gt;</pre></li>
+
+<li>В файл ресурсов {@code bool.xml}, расположенный в каталоге {@code res/values-v19/}, добавить
+следующую строку: <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;false&lt;/bool&gt;</pre></li>
+
+<li>Добавить
+<a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">псевдоним
+операции</a>, чтобы отключить фильтр намерения {@link android.content.Intent#ACTION_GET_CONTENT}
+для версий 4.4 (API уровня 19) и выше. Например:
+
+<pre>
+&lt;!-- This activity alias is added so that GET_CONTENT intent-filter
+     can be disabled for builds on API level 19 and higher. --&gt;
+&lt;activity-alias android:name=&quot;com.android.example.app.MyPicker&quot;
+        android:targetActivity=&quot;com.android.example.app.MyActivity&quot;
+        ...
+        android:enabled=&quot;@bool/atMostJellyBeanMR2&quot;&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name=&quot;android.intent.action.GET_CONTENT&quot; /&gt;
+        &lt;category android:name=&quot;android.intent.category.OPENABLE&quot; /&gt;
+        &lt;category android:name=&quot;android.intent.category.DEFAULT&quot; /&gt;
+        &lt;data android:mimeType=&quot;image/*&quot; /&gt;
+        &lt;data android:mimeType=&quot;video/*&quot; /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity-alias&gt;
+</pre>
+</li>
+</ol>
+<h3 id="contract">Контракты</h3>
+
+<p>Как правило, при создании нестандартного поставщика контента одной из задач
+является реализация классов-контрактов, описанная в руководстве для разработчиков
+<a href="{@docRoot}guide/topics/providers/content-provider-creating.html#ContractClass">
+Поставщики контента</a>. Класс-контракт представляет собой класс {@code public final},
+в котором содержатся определения констант для URI, имен столбцов, типов MIME и
+других метаданных поставщика. Платформа SAF
+предоставляет разработчику следующие классы-контракты, так что ему не нужно писать
+собственные:</p>
+
+<ul>
+   <li>{@link android.provider.DocumentsContract.Document}</li>
+   <li>{@link android.provider.DocumentsContract.Root}</li>
+</ul>
+
+<p>Например, когда
+к поставщику документов приходит запрос на документы или корневой каталог, можно возвращать в курсоре следующие столбцы:</p>
+
+<pre>private static final String[] DEFAULT_ROOT_PROJECTION =
+        new String[]{Root.COLUMN_ROOT_ID, Root.COLUMN_MIME_TYPES,
+        Root.COLUMN_FLAGS, Root.COLUMN_ICON, Root.COLUMN_TITLE,
+        Root.COLUMN_SUMMARY, Root.COLUMN_DOCUMENT_ID,
+        Root.COLUMN_AVAILABLE_BYTES,};
+private static final String[] DEFAULT_DOCUMENT_PROJECTION = new
+        String[]{Document.COLUMN_DOCUMENT_ID, Document.COLUMN_MIME_TYPE,
+        Document.COLUMN_DISPLAY_NAME, Document.COLUMN_LAST_MODIFIED,
+        Document.COLUMN_FLAGS, Document.COLUMN_SIZE,};
+</pre>
+
+<h3 id="subclass">Создание подкласса класса DocumentsProvider</h3>
+
+<p>Следующим шагом в разработке собственного поставщика документов является создание подкласса
+абстрактного класса {@link android.provider.DocumentsProvider}. Как минимум, необходимо
+реализовать следующие методы:</p>
+
+<ul>
+<li>{@link android.provider.DocumentsProvider#queryRoots queryRoots()}</li>
+
+<li>{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}</li>
+
+<li>{@link android.provider.DocumentsProvider#queryDocument queryDocument()}</li>
+
+<li>{@link android.provider.DocumentsProvider#openDocument openDocument()}</li>
+</ul>
+
+<p>Это единственные методы, реализация которых строго обязательна, однако существует
+намного больше методов, которые, возможно, тоже придется реализовать. Подробности приводятся в описании класса{@link android.provider.DocumentsProvider}
+.</p>
+
+<h4 id="queryRoots">Реализация метода queryRoots</h4>
+
+<p>Реализация метода {@link android.provider.DocumentsProvider#queryRoots
+queryRoots()} должна возвращать объект {@link android.database.Cursor}, указывающий на все
+корневые каталоги поставщиков документов, используя столбцы, определенные в
+{@link android.provider.DocumentsContract.Root}.</p>
+
+<p>В следующем фрагменте кода параметр {@code projection} представляет
+конкретные поля, нужные вызывающему объекту. В этом коде создается курсор,
+и к нему добавляется одна строка, соответствующая одному корневому каталогу (каталогу верхнего уровня), например,
+Загрузки или Изображения.  Большинство поставщиков имеет только один корневой каталог. Однако ничто не мешает иметь несколько корневых каталогов,
+например, при наличии нескольких учетных записей. В этом случае достаточно добавить в
+курсор еще одну строку.</p>
+
+<pre>
+&#64;Override
+public Cursor queryRoots(String[] projection) throws FileNotFoundException {
+
+    // Create a cursor with either the requested fields, or the default
+    // projection if "projection" is null.
+    final MatrixCursor result =
+            new MatrixCursor(resolveRootProjection(projection));
+
+    // If user is not logged in, return an empty root cursor.  This removes our
+    // provider from the list entirely.
+    if (!isUserLoggedIn()) {
+        return result;
+    }
+
+    // It's possible to have multiple roots (e.g. for multiple accounts in the
+    // same app) -- just add multiple cursor rows.
+    // Construct one row for a root called &quot;MyCloud&quot;.
+    final MatrixCursor.RowBuilder row = result.newRow();
+    row.add(Root.COLUMN_ROOT_ID, ROOT);
+    row.add(Root.COLUMN_SUMMARY, getContext().getString(R.string.root_summary));
+
+    // FLAG_SUPPORTS_CREATE means at least one directory under the root supports
+    // creating documents. FLAG_SUPPORTS_RECENTS means your application's most
+    // recently used documents will show up in the &quot;Recents&quot; category.
+    // FLAG_SUPPORTS_SEARCH allows users to search all documents the application
+    // shares.
+    row.add(Root.COLUMN_FLAGS, Root.FLAG_SUPPORTS_CREATE |
+            Root.FLAG_SUPPORTS_RECENTS |
+            Root.FLAG_SUPPORTS_SEARCH);
+
+    // COLUMN_TITLE is the root title (e.g. Gallery, Drive).
+    row.add(Root.COLUMN_TITLE, getContext().getString(R.string.title));
+
+    // This document id cannot change once it's shared.
+    row.add(Root.COLUMN_DOCUMENT_ID, getDocIdForFile(mBaseDir));
+
+    // The child MIME types are used to filter the roots and only present to the
+    //  user roots that contain the desired type somewhere in their file hierarchy.
+    row.add(Root.COLUMN_MIME_TYPES, getChildMimeTypes(mBaseDir));
+    row.add(Root.COLUMN_AVAILABLE_BYTES, mBaseDir.getFreeSpace());
+    row.add(Root.COLUMN_ICON, R.drawable.ic_launcher);
+
+    return result;
+}</pre>
+
+<h4 id="queryChildDocuments">Реализация метода queryChildDocuments</h4>
+
+<p>Реализация метода 
+{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}
+должна возвращать объект{@link android.database.Cursor}, указывающий на все файлы в
+заданном каталоге, используя столбцы, определенные в
+{@link android.provider.DocumentsContract.Document}.</p>
+
+<p>Этот метод вызывается, когда в интерфейсе элемента выбора пользователь выбирает корневой каталог приложения.
+Метод получает документы-потомки каталога на уровне ниже корневого.  Его можно вызывать на любом уровне
+файловой иерархии, а не только в корневом каталоге. В следующем фрагменте кода
+создается курсор с запрошенными столбцами. Затем в него заносится информация о
+каждом ближайшем потомке родительского каталога.
+Потомком может быть изображение, еще один каталог, в общем, любой файл:</p>
+
+<pre>&#64;Override
+public Cursor queryChildDocuments(String parentDocumentId, String[] projection,
+                              String sortOrder) throws FileNotFoundException {
+
+    final MatrixCursor result = new
+            MatrixCursor(resolveDocumentProjection(projection));
+    final File parent = getFileForDocId(parentDocumentId);
+    for (File file : parent.listFiles()) {
+        // Adds the file's display name, MIME type, size, and so on.
+        includeFile(result, null, file);
+    }
+    return result;
+}
+</pre>
+
+<h4 id="queryDocument">Реализация метода queryDocument</h4>
+
+<p>Реализация метода
+{@link android.provider.DocumentsProvider#queryDocument queryDocument()}
+должна возвращать объект{@link android.database.Cursor}, указывающий на заданный файл,
+используя столбцы, определенные в{@link android.provider.DocumentsContract.Document}.
+</p>
+
+<p>Метод {@link android.provider.DocumentsProvider#queryDocument queryDocument()}
+возвращает ту же информацию, которую возвращал
+{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()},
+но для конкретного файла:</p>
+
+
+<pre>&#64;Override
+public Cursor queryDocument(String documentId, String[] projection) throws
+        FileNotFoundException {
+
+    // Create a cursor with the requested projection, or the default projection.
+    final MatrixCursor result = new
+            MatrixCursor(resolveDocumentProjection(projection));
+    includeFile(result, documentId, null);
+    return result;
+}
+</pre>
+
+<h4 id="openDocument">Реализация метода openDocument</h4>
+
+<p>Необходимо реализовать метод {@link android.provider.DocumentsProvider#openDocument
+openDocument()}, который возвращает объект {@link android.os.ParcelFileDescriptor}, представляющий
+указанный файл. Другие приложения смогут воспользоваться возращенным объектом {@link android.os.ParcelFileDescriptor}
+для организации потока данных. Система вызывает этот метод, когда пользователь выбирает файл,
+и клиентское приложение запрашивает доступ нему, вызывая
+метод {@link android.content.ContentResolver#openFileDescriptor openFileDescriptor()}.
+Например:</p>
+
+<pre>&#64;Override
+public ParcelFileDescriptor openDocument(final String documentId,
+                                         final String mode,
+                                         CancellationSignal signal) throws
+        FileNotFoundException {
+    Log.v(TAG, &quot;openDocument, mode: &quot; + mode);
+    // It's OK to do network operations in this method to download the document,
+    // as long as you periodically check the CancellationSignal. If you have an
+    // extremely large file to transfer from the network, a better solution may
+    // be pipes or sockets (see ParcelFileDescriptor for helper methods).
+
+    final File file = getFileForDocId(documentId);
+
+    final boolean isWrite = (mode.indexOf('w') != -1);
+    if(isWrite) {
+        // Attach a close listener if the document is opened in write mode.
+        try {
+            Handler handler = new Handler(getContext().getMainLooper());
+            return ParcelFileDescriptor.open(file, accessMode, handler,
+                        new ParcelFileDescriptor.OnCloseListener() {
+                &#64;Override
+                public void onClose(IOException e) {
+
+                    // Update the file with the cloud server. The client is done
+                    // writing.
+                    Log.i(TAG, &quot;A file with id &quot; +
+                    documentId + &quot; has been closed!
+                    Time to &quot; +
+                    &quot;update the server.&quot;);
+                }
+
+            });
+        } catch (IOException e) {
+            throw new FileNotFoundException(&quot;Failed to open document with id &quot;
+            + documentId + &quot; and mode &quot; + mode);
+        }
+    } else {
+        return ParcelFileDescriptor.open(file, accessMode);
+    }
+}
+</pre>
+
+<h3 id="security">Безопасность</h3>
+
+<p>Предположим, что поставщик документов представляет собой защищенную паролем службу хранения в облаке,
+а приложение должно убедиться, что пользователь вошел в систему, прежде чем оно предоставит ему доступ к файлам.
+Что должно предпринять приложение, если пользователь не выполнил вход?  Решение состоит в том, чтобы
+реализация метода {@link android.provider.DocumentsProvider#queryRoots
+queryRoots()} не возвращала корневых каталогов. Иными словами, это должен быть пустой корневой курсор:</p>
+
+<pre>
+public Cursor queryRoots(String[] projection) throws FileNotFoundException {
+...
+    // If user is not logged in, return an empty root cursor.  This removes our
+    // provider from the list entirely.
+    if (!isUserLoggedIn()) {
+        return result;
+}
+</pre>
+
+<p>Следующий шаг состоит в вызове метода {@code getContentResolver().notifyChange()}.
+Помните объект {@link android.provider.DocumentsContract}?  Воспользуемся им для создания
+соответствующего URI. В следующем фрагменте кода система извещается о необходимости опрашивать корневые каталоги
+поставщика документов, когда меняется статус входа пользователя в систему. Если пользователь не
+выполнил вход, метод {@link android.provider.DocumentsProvider#queryRoots queryRoots()} возвратит
+пустой курсор, как показано выше. Это гарантирует, что документы поставщика будут
+доступны только пользователям, вошедшим в поставщик.</p>
+
+<pre>private void onLoginButtonClick() {
+    loginOrLogout();
+    getContentResolver().notifyChange(DocumentsContract
+            .buildRootsUri(AUTHORITY), null);
+}
+</pre>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ru/guide/topics/resources/accessing-resources.jd b/docs/html-intl/intl/ru/guide/topics/resources/accessing-resources.jd
new file mode 100644
index 0000000..3d59ceb
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/resources/accessing-resources.jd
@@ -0,0 +1,337 @@
+page.title=Доступ к ресурсам
+parent.title=Ресурсы приложения
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Краткое описание</h2>
+  <ul>
+    <li>В коде для создания ссылок на ресурсы можно использовать целочисленные переменные из {@code R.java}, такие как
+{@code R.drawable.myimage}</li>
+    <li>Для создания ссылок на ресурсы из самих ресурсов можно использовать особый синтаксис XML, например {@code
+&#64;drawable/myimage}</li>
+    <li>Также для доступа к ресурсам приложения используются методы класса
+{@link android.content.res.Resources}</li>
+  </ul>
+
+  <h2>Ключевые классы</h2>
+  <ol>
+    <li>{@link android.content.res.Resources}</li>
+  </ol>
+
+  <h2>Содержание документа</h2>
+  <ol>
+    <li><a href="#ResourcesFromCode">Доступ к ресурсам из кода</a></li>
+    <li><a href="#ResourcesFromXml">Доступ к ресурсам из XML</a>
+      <ol>
+        <li><a href="#ReferencesToThemeAttributes">Ссылка на атрибуты стиля</a></li>
+      </ol>
+    </li>
+    <li><a href="#PlatformResources">Доступ к ресурсам платформы</a></li>
+  </ol>
+
+  <h2>См. также:</h2>
+  <ol>
+    <li><a href="providing-resources.html">Предоставление ресурсов</a></li>
+    <li><a href="available-resources.html">Типы ресурсов</a></li>
+  </ol>
+</div>
+</div>
+
+
+
+
+<p>После того, как вы предоставили ресурс в вашем приложении (см. раздел <a href="providing-resources.html">Предоставление ресурсов</a>), этот ресурс можно применить. Для этого необходимо создать
+ссылку на идентификатор ресурса. Для задания всех таких идентификаторов в вашем проекте используется класс {@code R}, который автоматически создается инструментом
+{@code aapt}.</p>
+
+<p>Во время компиляции приложения инструмент {@code aapt} создает класс {@code R}, в котором находятся
+идентификаторы для всех ресурсов в каталоге {@code
+res/}. Для каждого типа ресурсов предусмотрен подкласс {@code R} (например,
+класс {@code R.drawable} для элементов дизайна), а для каждого ресурса указанного типа существует статическая
+целочисленная переменная (например, {@code R.drawable.icon}). Эта переменная как раз и служит идентификатором ресурса, которую можно
+использовать для его получения.</p>
+
+<p>Несмотря на то, что в классе {@code R} находятся идентификаторы ресурсов, никогда не обращайтесь к нему
+для поиска идентификатора ресурса. Последний состоит из следующих компонентов:</p>
+<ul>
+  <li><em>Тип ресурса</em>: ресурсы объединены по типам, таким как {@code
+string}, {@code drawable} и {@code layout}. Дополнительные сведения о различных типах представлены в разделе <a href="available-resources.html">Типы ресурсов</a>.
+  </li>
+  <li><em>Имя ресурса</em>, в качестве которого выступает либо имя файла
+(без расширения), либо значение атрибута XML {@code android:name} (если
+ресурс представляет собой простое значение, например строку).</li>
+</ul>
+
+<p>Существует два способа доступа к ресурсу.</p>
+<ul>
+  <li><strong>Из кода:</strong> с помощью статической целочисленной переменной из подкласса вашего класса {@code R}
+, например:
+    <pre class="classic no-pretty-print">R.string.hello</pre>
+    <p>{@code string} — это тип ресурса, а {@code hello} — это его имя. Существует множество API-интерфейсов
+Android, которые могут получать доступ к ресурсам, идентификаторы которых указаны в этом формате. См. раздел
+<a href="#ResourcesFromCode">Доступ к ресурсам из кода</a>.</p>
+  </li>
+  <li><strong>Из XML:</strong> с помощью особого синтаксиса XML, который также соответствует
+идентификатору ресурса, заданному в классе {@code R}, например:
+    <pre class="classic no-pretty-print">&#64;string/hello</pre>
+    <p>{@code string} — это тип ресурса, а {@code hello} — это его имя. Этот синтаксис можно
+использовать в любом фрагменте ресурса XML, где ожидается значение, указанное вами в ресурсе. См. раздел <a href="#ResourcesFromXml">Доступ к ресурсам из XML</a></p>
+  </li>
+</ul>
+
+
+
+<h2 id="ResourcesFromCode">Доступ к ресурсам из кода </h2>
+
+<p>Чтобы использовать ресурс в коде, можно передать идентификатор ресурса в виде параметра метода. Например, с
+помощью метода {@link android.widget.ImageView#setImageResource(int) setImageResource()} можно указать использование виджетом {@link android.widget.ImageView} ресурса {@code res/drawable/myimage.png}:
+</p>
+<pre>
+ImageView imageView = (ImageView) findViewById(R.id.myimageview);
+imageView.setImageResource(<strong>R.drawable.myimage</strong>);
+</pre>
+
+<p>Отдельные ресурсы также можно получать с помощью методов в классе {@link
+android.content.res.Resources}, экземпляр которого можно получить с помощью
+метода {@link android.content.Context#getResources()}.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>Доступ к исходным файлам</h2>
+
+<p>В редких случаях может потребоваться получить доступ к исходным файлам и каталогам. В этом случае просто сохранить
+файлы в каталоге {@code res/} будет недостаточно, поскольку обратиться к ресурсу из папки
+{@code res/} можно только по его идентификатору. Вместо этого ресурсы можно сохранить в каталоге
+{@code assets/}.</p>
+<p>Файлам, которые сохранены в каталоге {@code assets/}, <em>не</em> присваиваются идентификаторы
+ресурсов, поэтому вам не удастся сослаться на них с помощью класса {@code R} или из ресурсов XML. Вместо этого можно
+запросить файлы из каталога {@code assets/}, как в обычной файловой системе, и считать необработанные данные с помощью
+{@link android.content.res.AssetManager}.</p>
+<p>Однако, если вам требуется всего лишь возможность считать необработанные данные (например, видео- или аудиофайл),
+ сохраните требуемый файл в каталоге {@code res/raw/} и считайте поток байтов с помощью метода {@link
+android.content.res.Resources#openRawResource(int) openRawResource()}.</p>
+
+</div>
+</div>
+
+
+<h3>Синтаксис</h3>
+
+<p>Ниже представлен синтаксис ссылки на ресурс из кода.</p>
+
+<pre class="classic no-pretty-print">
+[<em>&lt;package_name&gt;</em>.]R.<em>&lt;resource_type&gt;</em>.<em>&lt;resource_name&gt;</em>
+</pre>
+
+<ul>
+  <li><em>{@code &lt;package_name&gt;}</em> — это имя пакета, в котором находится ресурс (не
+требуется при создании ссылок на ресурсы из вашего собственного пакета).</li>
+  <li><em>{@code &lt;resource_type&gt;}</em> — это подкласс {@code R} для типа ресурса.</li>
+  <li><em>{@code &lt;resource_name&gt;}</em> — это либо имя файла
+ресурса (без расширения), либо значение атрибута {@code android:name} в элементе XML (для простых
+значений).</li>
+</ul>
+<p>Дополнительные сведения о каждом типе
+ресурсов и порядке создания ссылок на них см. в разделе <a href="available-resources.html">Типы ресурсов</a>.</p>
+
+
+<h3>Примеры использования</h3>
+
+<p>Существует множество методов, которые могут принимать идентификатор ресурса в виде параметра. Для получения ресурсов можно использовать методы,
+представленные в классе {@link android.content.res.Resources}. Можно получить экземпляр {@link
+android.content.res.Resources} с помощью {@link android.content.Context#getResources
+Context.getResources()}.</p>
+
+
+<p>Вот некоторые примеры доступа к ресурсам из кода:</p>
+
+<pre>
+// Load a background for the current screen from a drawable resource
+{@link android.app.Activity#getWindow()}.{@link
+android.view.Window#setBackgroundDrawableResource(int)
+setBackgroundDrawableResource}(<strong>R.drawable.my_background_image</strong>) ;
+
+// Set the Activity title by getting a string from the Resources object, because
+//  this method requires a CharSequence rather than a resource ID
+{@link android.app.Activity#getWindow()}.{@link android.view.Window#setTitle(CharSequence)
+setTitle}(getResources().{@link android.content.res.Resources#getText(int)
+getText}(<strong>R.string.main_title</strong>));
+
+// Load a custom layout for the current screen
+{@link android.app.Activity#setContentView(int)
+setContentView}(<strong>R.layout.main_screen</strong>);
+
+// Set a slide in animation by getting an Animation from the Resources object
+mFlipper.{@link android.widget.ViewAnimator#setInAnimation(Animation)
+setInAnimation}(AnimationUtils.loadAnimation(this,
+        <strong>R.anim.hyperspace_in</strong>));
+
+// Set the text on a TextView object using a resource ID
+TextView msgTextView = (TextView) findViewById(<strong>R.id.msg</strong>);
+msgTextView.{@link android.widget.TextView#setText(int)
+setText}(<strong>R.string.hello_message</strong>);
+</pre>
+
+
+<p class="caution"><strong>Внимание!</strong> Никогда не изменяйте файл {@code
+R.java} вручную &mdash; этот файл создается инструментом {@code aapt} во время компиляции вашего
+проекта. Любые внесенные в него изменения перезаписываются после следующей компиляции.</p>
+
+
+
+<h2 id="ResourcesFromXml">Доступ к ресурсам из XML</h2>
+
+<p>Для задания значений для некоторых атрибутов и элементов XML можно использовать
+ссылку на существующий ресурс. Это зачастую требуется при создании файлов макета при
+указании строк и изображений для виджетов.</p>
+
+<p>Например, при добавлении в макет элемента {@link android.widget.Button} необходимо использовать
+<a href="string-resource.html">строковый ресурс</a> для надписи на кнопке:</p>
+
+<pre>
+&lt;Button
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:text="<strong>@string/submit</strong>" /&gt;
+</pre>
+
+
+<h3>Синтаксис</h3>
+
+<p>Ниже представлен синтаксис ссылки на ресурс из ресурса XML.</p>
+
+<pre class="classic no-pretty-print">
+&#64;[<em>&lt;package_name&gt;</em>:]<em>&lt;resource_type&gt;</em>/<em>&lt;resource_name&gt;</em>
+</pre>
+
+<ul>
+  <li>{@code &lt;package_name&gt;} — это имя пакета, в котором находится ресурс (не
+требуется при создании ссылок на ресурсы из одного и того же пакета).</li>
+  <li>{@code &lt;resource_type&gt;} — это подкласс 
+{@code R} для типа ресурса.</li>
+  <li>{@code &lt;resource_name&gt;} — это либо имя файла
+ресурса (без расширения), либо значение атрибута {@code android:name} в элементе XML (для простых
+значений).</li>
+</ul>
+
+<p>Дополнительные сведения о каждом типе
+ресурсов и порядке создания ссылок на них см. в разделе <a href="available-resources.html">Типы ресурсов</a>.</p>
+
+
+<h3>Примеры использования</h3>
+
+<p>В некоторых случаях ресурс необходимо использовать в качестве значения в элементе XML (например, чтобы применить графическое изображение к 
+виджету), однако вы также можете использовать ресурс в любом фрагменте XML, где ожидается простое значение. Например,
+если имеется следующий файл ресурса, включающий <a href="more-resources.html#Color">цветовой ресурс</a> и <a href="string-resource.html">строковый ресурс</a>:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+   &lt;color name="opaque_red">#f00&lt;/color>
+   &lt;string name="hello">Hello!&lt;/string>
+&lt;/resources>
+</pre>
+
+<p>Эти ресурсы можно использовать в следующем файле макета для задания цвета текста и
+надписи:</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;fill_parent&quot;
+    android:textColor=&quot;<strong>&#64;color/opaque_red</strong>&quot;
+    android:text=&quot;<strong>&#64;string/hello</strong>&quot; /&gt;
+</pre>
+
+<p>В этом случае в ссылке на ресурс не нужно указывать имя пакета, поскольку
+ресурсы находятся в вашем собственном пакете. Однако для создания
+ссылки на системный ресурс вам потребуется указать имя пакета. Например:</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;fill_parent&quot;
+    android:textColor=&quot;<strong>&#64;android:color/secondary_text_dark</strong>&quot;
+    android:text=&quot;&#64;string/hello&quot; /&gt;
+</pre>
+
+<p class="note"><strong>Примечание.</strong> Всегда используйте строковые ресурсы,
+поскольку ваше приложение может потребоваться перевести на другие языки. 
+Сведения о создании альтернативных
+ресурсов (например, локализованных строк) представлены в разделе <a href="providing-resources.html#AlternativeResources">Предоставление альтернативных
+ресурсов</a>. В разделе <a href="localization.html">Локализация</a> приведено полное руководство по локализации
+приложения.</p>
+
+<p>Вы даже можете использовать ресурсы в XML для создания псевдонимов. Например, можно создать 
+элемент дизайна, который будет служить псевдонимом для другого элемента дизайна:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/other_drawable" />
+</pre>
+
+<p>Это может показаться излишним, однако такой подход очень полезен при использовании альтернативных ресурсов. Узнайте подробнее о
+<a href="providing-resources.html#AliasResources">создании псевдонимов ресурсов</a>.</p>
+
+
+
+<h3 id="ReferencesToThemeAttributes">Ссылка на атрибуты стиля</h3>
+
+<p>С помощью ресурса атрибута стиля можно создать ссылку на значение
+атрибута в текущей примененной теме. Таким образом можно
+настраивать внешний вид элементов пользовательского интерфейса, подстраивая их под стандартные варианты элементов оформления
+текущей темы, вместо указания жестко заданных значений. Создание ссылки на атрибут стиля
+представляет собой своеобразную инструкцию «использовать стиль, заданный этим атрибутом в текущей теме».</p>
+
+<p>Синтаксис для создания ссылки на атрибут стиля практически идентичен обычному формату
+ресурса, только в этом случае вместо символа{@code @} необходимо указать вопросительный знак ({@code ?}), а тип ресурса
+вообще необязательно указывать. Например:</p>
+
+<pre class="classic">
+?[<em>&lt;package_name&gt;</em>:][<em>&lt;resource_type&gt;</em>/]<em>&lt;resource_name&gt;</em>
+</pre>
+
+<p>Ниже представлен пример создания ссылки на атрибут для задания цвета текста в соответствии с
+«основным» цветом текста системной темы оформления:</p>
+
+<pre>
+&lt;EditText id=&quot;text&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;wrap_content&quot;
+    android:textColor=&quot;<strong>?android:textColorSecondary</strong>&quot;
+    android:text=&quot;&#64;string/hello_world&quot; /&gt;
+</pre>
+
+<p>Здесь атрибут {@code android:textColor} служит для задания имени атрибута стиля
+в текущей теме. Теперь в Android используется значение, примененное к атрибуту стиля{@code android:textColorSecondary}
+в качестве значения для {@code android:textColor} в этом виджете. Поскольку инструменту для работы с системными
+ресурсами известно, что в этом контексте ожидается ресурс атрибута,
+вам не нужно явно указывать его тип (который должен быть
+<code>?android:attr/textColorSecondary</code>) &mdash; тип {@code attr} можно исключить.</p>
+
+
+
+
+<h2 id="PlatformResources">Доступ к ресурсам платформы</h2>
+
+<p>В Android предусмотрен ряд стандартных ресурсов, например, стилей, тем и макетов. Для
+доступа к этим ресурсам укажите в ссылке на ресурс имя пакета
+<code>android</code>. Например, в Android имеется ресурс макета, который можно использовать для
+элементов списка в виджете {@link android.widget.ListAdapter}:</p>
+
+<pre>
+{@link android.app.ListActivity#setListAdapter(ListAdapter)
+setListAdapter}(new {@link
+android.widget.ArrayAdapter}&lt;String&gt;(this, <strong>android.R.layout.simple_list_item_1</strong>, myarray));
+</pre>
+
+<p>В этом примере {@link android.R.layout#simple_list_item_1} представляет собой ресурс макета, определенный
+платформой для элементов в виджете {@link android.widget.ListView}. Вы можете использовать его вместо создания
+собственных макетов для элементов списка. Дополнительные сведения представлены в руководстве для разработчиков, посвященном
+<a href="{@docRoot}guide/topics/ui/layout/listview.html">представлению в виде списка</a>.</p>
+
diff --git a/docs/html-intl/intl/ru/guide/topics/resources/overview.jd b/docs/html-intl/intl/ru/guide/topics/resources/overview.jd
new file mode 100644
index 0000000..c809c85
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/resources/overview.jd
@@ -0,0 +1,103 @@
+page.title=Обзор ресурсов
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Темы</h2>
+  <ol>
+    <li><a href="providing-resources.html">Предоставление ресурсов</a></li>
+    <li><a href="accessing-resources.html">Доступ к ресурсам</a></li>
+    <li><a href="runtime-changes.html">Обработка изменений в режиме выполнения</a></li>
+    <li><a href="localization.html">Локализация</a></li>
+  </ol>
+
+  <h2>Дополнительные материалы</h2>
+  <ol>
+    <li><a href="available-resources.html">Типы ресурсов</a></li>
+  </ol>
+</div>
+</div>
+
+
+<p>Необходимо обязательно экспортировать ресурсы, такие как изображения и строки, из кода
+приложения, чтобы можно было обрабатывать их независимо. Кроме того, экспорт
+ресурсов позволяет предоставлять альтернативные ресурсы для поддержки конфигураций
+конкретных устройств, например, различные языки или размеры экранов. Значение этого возрастает по мере того, как
+появляется все больше устройств Android с разными конфигурациями. Чтобы обеспечить
+совместимость с различными конфигурациями, необходимо организовать ресурсы
+в каталоге {@code res/} проекта с использованием различных подкаталогов для группирования ресурсов по типу и
+конфигурации.</p>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram1.png" height="167" alt="" />
+<p class="img-caption">
+<strong>Рисунок 1.</strong> Два разных устройства, каждое из которых использует макет по умолчанию
+(приложение не предоставляет альтернативных макетов).</p>
+</div>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
+<p class="img-caption">
+<strong>Рисунок 2</strong>. Два разных устройства, каждое из которых использует свой макет, разработанный для
+экранов разных размеров.</p>
+</div>
+
+<p>Для ресурсов любого типа можно указать ресурс <em>по умолчанию</em> и несколько
+<em>альтернативных</em> ресурсов для приложения:</p>
+<ul>
+  <li>Ресурсы по умолчанию должны использоваться независимо от
+конфигурации устройства или в том случае, когда отсутствуют альтернативные ресурсы, соответствующие
+текущей конфигурации.</li>
+  <li>Альтернативные ресурсы предназначены для работы с определенными
+конфигурациями. Чтобы указать, что группа ресурсов предназначена для определенной конфигурации,
+добавьте соответствующий квалификатор к имени каталога.</li>
+</ul>
+
+<p>Например, несмотря на то, что макет пользовательского интерфейса по умолчанию
+сохранен в каталоге {@code res/layout/}, можно указать другой макет для
+использования на экране с альбомной ориентацией, сохранив его в каталоге {@code res/layout-land/}
+. Android автоматически применяет соответствующие ресурсы, сопоставляя текущую конфигурацию
+устройства с именами каталогов ресурсов.</p>
+
+<p>На рисунке 1 показано, как система применяет одинаковый макет для
+двух разных устройств, когда альтернативные ресурсы отсутствуют. На рисунке 2 показано
+то же приложение, когда для больших экранов добавлен альтернативный ресурс макета.</p>
+
+<p>В следующих документах содержится полное руководство по организации ресурсов приложения,
+указания альтернативных ресурсов, доступа к ним из приложения и т. д.:</p>
+
+<dl>
+  <dt><strong><a href="providing-resources.html">Предоставление ресурсов</a></strong></dt>
+  <dd>Типы ресурсов, которые можно предоставлять в приложении, место их сохранения и способы создания
+альтернативных ресурсов для определенных конфигураций устройств.</dd>
+  <dt><strong><a href="accessing-resources.html">Доступ к ресурсам</a></strong></dt>
+  <dd>Способ использования предоставленных ресурсов: путем ссылки на них из кода приложения
+или из других ресурсов XML.</dd>
+  <dt><strong><a href="runtime-changes.html">Обработка изменений в режиме выполнения</a></strong></dt>
+  <dd>Управление изменениями конфигурации во время выполнения операции.</dd>
+  <dt><strong><a href="localization.html">Локализация</a></strong></dt>
+  <dd>Руководство по локализации приложения «снизу вверх» с помощью альтернативных ресурсов. Хотя это лишь
+один из примеров использования альтернативных ресурсов, он очень важен для охвата более широкой аудитории
+пользователей.</dd>
+  <dt><strong><a href="available-resources.html">Типы ресурсов</a></strong></dt>
+  <dd>Ссылка на различные типы ресурсов, которые вы можете предоставлять, с описанием элементов XML,
+атрибутов и синтаксиса. Например, эта ссылка показывает, как создать ресурс для меню
+, рисунков, анимаций приложения и т. д.</dd>
+</dl>
+
+<!--
+<h2>Raw Assets</h2>
+
+<p>An alternative to saving files in {@code res/} is to save files in the {@code
+assets/} directory. This should only be necessary if you need direct access to original files and
+directories by name. Files saved in the {@code assets/} directory will not be given a resource
+ID, so you can't reference them through the {@code R} class or from XML resources. Instead, you can
+query data in the {@code assets/} directory like an ordinary file system, search through the
+directory and
+read raw data using {@link android.content.res.AssetManager}. For example, this can be more useful
+when dealing with textures for a game. However, if you only need to read raw data from a file
+(such as a video or audio file), then you should save files into the {@code res/raw/} directory and
+then read a stream of bytes using {@link android.content.res.Resources#openRawResource(int)}. This
+is uncommon, but if you need direct access to original files in {@code assets/}, refer to the {@link
+android.content.res.AssetManager} documentation.</p>
+-->
diff --git a/docs/html-intl/intl/ru/guide/topics/resources/providing-resources.jd b/docs/html-intl/intl/ru/guide/topics/resources/providing-resources.jd
new file mode 100644
index 0000000..be0af95
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/resources/providing-resources.jd
@@ -0,0 +1,1094 @@
+page.title=Предоставление ресурсов
+parent.title=Ресурсы приложения
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Краткое описание</h2>
+  <ul>
+    <li>Разные типы ресурсов находятся в разных подкаталогах каталога {@code res/}</li>
+    <li>Альтернативные ресурсы представляют собой файлы ресурсов для определенных конфигураций</li>
+    <li>Обязательно включайте ресурсы по умолчанию, чтобы приложение не зависело от конфигураций конкретного
+устройства</li>
+  </ul>
+  <h2>Содержание документа</h2>
+  <ol>
+    <li><a href="#ResourceTypes">Группирование типов ресурсов</a></li>
+    <li><a href="#AlternativeResources">Предоставление альтернативных ресурсов</a>
+      <ol>
+        <li><a href="#QualifierRules">Правила квалификатора имени</a></li>
+        <li><a href="#AliasResources">Создание псевдонимов ресурсов</a></li>
+      </ol>
+    </li>
+    <li><a href="#Compatibility">Обеспечение оптимальной совместимости устройства с ресурсами</a></li>
+    <li><a href="#BestMatch">Как Android находит наиболее подходящий ресурс</a></li>
+  </ol>
+
+  <h2>См. также:</h2>
+  <ol>
+    <li><a href="accessing-resources.html">Доступ к ресурсам</a></li>
+    <li><a href="available-resources.html">Типы ресурсов</a></li>
+    <li><a href="{@docRoot}guide/practices/screens_support.html">Поддержка
+нескольких экранов</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Обязательно необходимо экспортировать из кода ресурсы приложения, такие как изображения и строки,
+для последующей их независимой обработки. Следует также обеспечить альтернативные ресурсы для
+определенных конфигураций устройств, группируя их в каталогах ресурсов со специальными именами. В
+режиме выполнения Android использует соответствующие ресурсы с учетом текущей конфигурации. Например,
+можно предоставлять другой макет пользовательского интерфейса в зависимости от размера экрана или различные
+строки в зависимости от настройки языка.</p>
+
+<p>После выполнения экспорта ресурсов приложения можно обращаться к ним
+с помощью идентификаторов ресурсов, которые генерируются в классе {@code R} вашего проекта. Использование
+ресурсов в приложении рассмотрено в разделе <a href="accessing-resources.html">Доступ
+к ресурсам</a>. В этом документе показано, как группировать ресурсы в проекте Android и
+предоставлять альтернативные ресурсы для определенных конфигураций устройств.</p>
+
+
+<h2 id="ResourceTypes">Группирование типов ресурсов</h2>
+
+<p>Следует поместить ресурсы каждого типа в определенный подкаталог каталога
+{@code res/} вашего проекта. В качестве примера приведена иерархия файлов для простого проекта:</p>
+
+<pre class="classic no-pretty-print">
+MyProject/
+    src/  <span style="color:black">
+        MyActivity.java  </span>
+    res/
+        drawable/  <span style="color:black">
+            graphic.png  </span>
+        layout/  <span style="color:black">
+            main.xml
+            info.xml</span>
+        mipmap/  <span style="color:black">
+            icon.png </span>
+        values/  <span style="color:black">
+            strings.xml  </span>
+</pre>
+
+<p>Как видно в этом примере, каталог {@code res/} содержит все ресурсы (в
+подкаталогах): ресурс-изображение, два ресурса-макета, каталоги {@code mipmap/} для значков
+запуска и файл строк. Имена каталогов
+ресурсов очень важны и описаны в таблице 1.</p>
+
+<p class="note"><strong>Примечание.</strong> Подробные сведения об использовании папок множественного отображения см. в разделе
+<a href="{@docRoot}tools/projects/index.html#mipmap">Обзор управления проектами</a>.</p>
+
+<p class="table-caption" id="table1"><strong>Таблица 1.</strong> Каталоги ресурсов,
+поддерживаемые в каталоге {@code res/} проекта.</p>
+
+<table>
+  <tr>
+    <th scope="col">Каталог</th>
+    <th scope="col">Тип ресурсов</th>
+  </tr>
+
+  <tr>
+    <td><code>animator/</code></td>
+    <td>Файлы XML, которые определяют <a href="{@docRoot}guide/topics/graphics/prop-animation.html">анимации
+свойств</a>.</td>
+  </tr>
+
+  <tr>
+    <td><code>anim/</code></td>
+    <td>Файлы XML, которые определяют <a href="{@docRoot}guide/topics/graphics/view-animation.html#tween-animation">анимации
+преобразований</a>. (Анимации свойств также можно сохранять в этом каталоге, но
+для анимаций свойств предпочтительнее использовать каталог {@code animator/}, чтобы различать эти два
+типа).</td>
+  </tr>
+
+  <tr>
+    <td><code>color/</code></td>
+    <td>Файлы XML, которые определяют список состояний цветов. См. раздел <a href="color-list-resource.html">Ресурс списка
+состояний цветов</a></td>
+  </tr>
+
+  <tr>
+    <td><code>drawable/</code></td>
+
+    <td><p>Файлы растровых изображений ({@code .png}, {@code .9.png}, {@code .jpg}, {@code .gif}) или файлы XML, которые
+составляют следующие подтипы графических ресурсов:</p>
+      <ul>
+        <li>Файлы растровых изображений</li>
+        <li>Файлы из девяти фрагментов (растровые изображения с возможностью изменения размера)</li>
+        <li>Списки состояний</li>
+        <li>Формы</li>
+        <li>Графические анимации</li>
+        <li>Другие графические элементы</li>
+      </ul>
+      <p>См. раздел <a href="drawable-resource.html">Графические ресурсы</a>.</p>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>mipmap/</code></td>
+    <td>Графические файлы для значков запуска с различной плотностью. Подробные сведения об управлении
+значками запуска с помощью папок {@code mipmap/} см. в разделе
+ <a href="{@docRoot}tools/project/index.html#mipmap">Обзор управления проектами</a>.</td>
+  </tr>
+
+  <tr>
+    <td><code>layout/</code></td>
+    <td>Файлы XML, которые определяют макет пользовательского интерфейса.
+        См. раздел <a href="layout-resource.html">Ресурсы макетов</a>.</td>
+  </tr>
+
+  <tr>
+    <td><code>menu/</code></td>
+    <td>Файлы XML, которые определяют меню приложения, такие как меню параметров, контекстные меню или вложенные
+меню. См. раздел <a href="menu-resource.html">Ресурсы меню</a>.</td>
+  </tr>
+
+  <tr>
+    <td><code>raw/</code></td>
+    <td><p>Произвольные файлы для сохранения в исходной форме. Чтобы открыть эти ресурсы с помощью
+{@link java.io.InputStream}, вызовите {@link android.content.res.Resources#openRawResource(int)
+Resources.openRawResource()} с идентификатором ресурса, который имеет вид {@code R.raw.<em>filename</em>}.</p>
+      <p>Однако, если требуется получить доступ к исходным именам файлов и иерархии файлов, можно
+сохранять некоторые ресурсы в каталоге {@code
+assets/} (вместо каталога {@code res/raw/}). Файлы в каталоге {@code assets/} не получают
+идентификатора ресурса, поэтому их чтение возможно только с помощью {@link android.content.res.AssetManager}.</p></td>
+  </tr>
+
+  <tr>
+    <td><code>values/</code></td>
+    <td><p>Файлы XML, которые содержат простые значения, такие как строки, целые числа и цвета.</p>
+      <p>Тогда как XML-файлы ресурсов в других подкаталогах каталога {@code res/} определяют отдельные ресурсы
+на базе имени файла XML, файлы в каталоге {@code values/} описывают несколько ресурсов.
+Для файла в этом каталоге каждый дочерний элемент элемента {@code &lt;resources&gt;} определяет один
+ресурс. Например, элемент {@code &lt;string&gt;} создает ресурс
+{@code R.string}, а элемент {@code &lt;color&gt;} создает ресурс {@code R.color}
+.</p>
+      <p>Так как каждый ресурс определяется с помощью своего собственного элемента XML, можно назначать имя файла
+по своему усмотрению и помещать ресурсы разных типов в один файл. Тем не мене, может
+появиться необходимость поместить ресурсы отдельных типов в разные файлы. Например, ниже приведены соглашения для имен файлов
+ресурсов, которые можно создать в этом каталоге:</p>
+      <ul>
+        <li>arrays.xml для ресурсов-массивов (<a href="more-resources.html#TypedArray">массивы с указанием типа</a>)</li>
+        <li>colors.xml для <a href="more-resources.html#Color">значений цветов</a></li>
+        <li>dimens.xml для <a href="more-resources.html#Dimension">значений единиц измерений</a></li>
+        <li>strings.xml для <a href="string-resource.html">строковых
+значений</a></li>
+        <li>styles.xml для <a href="style-resource.html">стилей</a>.</li>
+      </ul>
+      <p>См. разделы <a href="string-resource.html">Строковые ресурсы</a>,
+        <a href="style-resource.html">Ресурсы стиля</a> и
+ <a href="more-resources.html">Дополнительные типы ресурсов</a>.</p>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>xml/</code></td>
+    <td>Произвольные XML-файлы, которые можно читать в режиме выполнения вызовом метода {@link
+android.content.res.Resources#getXml(int) Resources.getXML()}. Здесь должны сохраняться различные файлы конфигурации XML,
+например, <a href="{@docRoot}guide/topics/search/searchable-config.html">конфигурация с возможностью поиска</a>.
+<!-- or preferences configuration. --></td>
+  </tr>
+</table>
+
+<p class="caution"><strong>Предупреждение!</strong> Не сохраняйте файлы ресурсов непосредственно в
+каталоге {@code res/}, так как это вызывает ошибку компилятора.</p>
+
+<p>Дополнительную информацию об определенных типах ресурсов см. в документации <a href="available-resources.html">Типы ресурсов</a>.</p>
+
+<p>Ресурсы, сохраненные в подкаталогах, которые описаны в таблице 1, являются ресурсами
+«по умолчанию». Таким образом, эти ресурсы определяют дизайн и содержимое приложения по умолчанию.
+Однако различные типы устройств Android могут вызывать различные типы ресурсов.
+Например, если устройство оснащено экраном больше нормального, следует предоставить
+другие ресурсы макета, которые будут использовать преимущества дополнительного места на экране. Или, если устройство
+содержит различные языковые настройки, следует предоставить другие строковые ресурсы, содержащие перевод
+текста пользовательского интерфейса. Чтобы предоставить разные ресурсы для разных конфигураций устройств,
+необходимо предоставить альтернативные ресурсы в дополнение к ресурсам
+по умолчанию.</p>
+
+
+<h2 id="AlternativeResources">Предоставление альтернативных ресурсов</h2>
+
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
+<p class="img-caption">
+<strong>Рисунок 1.</strong> Два разных устройства, которые используют разные ресурсы макета.</p>
+</div>
+
+<p>Почти каждое приложение должно предоставлять альтернативные ресурсы, чтобы поддерживать определенные конфигурации
+устройств. Например, необходимо включить альтернативные графические ресурсы для экранов с
+разной плотностью растра и альтернативные ресурсы для разных языков. В режиме выполнения Android
+определяет конфигурацию устройства и загружает соответствующие
+ресурсы для приложения.</p>
+
+<p>Чтобы указать альтернативы для конкретных конфигураций набора ресурсов, выполните следующие действия:</p>
+<ol>
+  <li>Создайте новый каталог в каталоге {@code res/} с именем следующего вида {@code
+<em>&lt;имя_ресурса&gt;</em>-<em>&lt;квалификатор_конфигурации&gt;</em>}.
+    <ul>
+      <li><em>{@code &lt;resources_name&gt;}</em> – имя каталога соответствующих ресурсов
+по умолчанию (определено в таблице 1).</li>
+      <li><em>{@code &lt;qualifier&gt;}</em> – имя, которое указывает определенную конфигурацию,
+для которой должны использоваться эти ресурсы (определено в таблице 2).</li>
+    </ul>
+    <p>Можно добавлять несколько квалификаторов <em>{@code &lt;qualifier&gt;}</em>. Разделяйте их
+знаком дефиса.</p>
+    <p class="caution"><strong>Предупреждение!</strong> При добавлении нескольких квалификаторов необходимо
+располагать их в том же порядке, в котором они перечислены в таблице 2. Если порядок квалификаторов нарушен,
+ ресурсы игнорируются.</p>
+  </li>
+  <li>Сохраните соответствующие альтернативные ресурсы в этом новом каталоге. Файлы ресурсов должны
+иметь имена, точно совпадающие с именами файлов ресурсов по умолчанию.</li>
+</ol>
+
+<p>В качестве примера здесь приведено несколько ресурсов по умолчанию и альтернативных ресурсов:</p>
+
+<pre class="classic no-pretty-print">
+res/
+    drawable/   <span style="color:black">
+        icon.png
+        background.png    </span>
+    drawable-hdpi/  <span style="color:black">
+        icon.png
+        background.png  </span>
+</pre>
+
+<p>Квалификатор {@code hdpi} указывает, что ресурсы в этом каталоге предназначены для устройств, оснащенных экраном
+высокой плотности. Изображения в каждом из этих каталогов для графических объектов имеют размер для определенной плотности
+экрана, но имена файлов полностью
+совпадают. Таким образом, идентификатор ресурса, который указывает на изображение {@code icon.png} или {@code
+background.png}, всегда одинаков, но Android выбирает
+версию каждого ресурса, которая оптимально соответствует текущему устройству, сравнивая информацию о конфигурации устройства
+с квалификаторами в имени каталога ресурсов.</p>
+
+<p>Android поддерживает несколько квалификаторов конфигурации, позволяя
+добавлять несколько квалификаторов к одному имени каталога, разделяя квалификаторы дефисом. В таблице 2
+перечислены допустимые квалификаторы конфигурации в порядке приоритета &mdash; если используется несколько
+квалификаторов для каталога ресурсов, необходимо добавлять их к имени каталога в том порядке, в котором
+они перечислены в таблице.</p>
+
+
+<p class="table-caption" id="table2"><strong>Таблица 2.</strong> Имена квалификаторов
+конфигурации.</p>
+<table>
+    <tr>
+        <th>Конфигурация</th>
+        <th>Значения квалификатора</th>
+        <th>Описание</th>
+    </tr>
+    <tr id="MccQualifier">
+      <td>MCC и MNC</td>
+      <td>Примеры:<br/>
+        <code>mcc310</code><br/>
+        <code><nobr>mcc310-mnc004</nobr></code><br/>
+        <code>mcc208-mnc00</code><br/>
+        и т. д.
+      </td>
+      <td>
+        <p>Код страны для мобильной связи (MCC), за которым может следовать код сети мобильной связи (MNC)
+ из SIM-карты устройства. Например, <code>mcc310</code> – код США для любого поставщика услуг,
+ <code>mcc310-mnc004</code> – код США для Verizon и <code>mcc208-mnc00</code> – код Франции
+ для Orange.</p>
+        <p>Если в устройстве используется радиосвязь (телефон GSM), значения MCC и MNC добываются
+ из SIM-карты.</p>
+        <p>Можно также использовать только код MCC (например, для включения в приложении разрешенных в стране
+ресурсов). Если требуется указать только язык, используйте квалификатор
+<em>язык и регион</em> (обсуждается ниже). Если принято решение использовать квалификатор MCC и
+MNC, следует делать это с осторожностью и проверить корректность его работы.</p>
+        <p>См. также поля конфигурации {@link
+android.content.res.Configuration#mcc} и {@link
+android.content.res.Configuration#mnc}, которые указывают текущий код страны при мобильной связи
+и код сети мобильной связи соответственно.</p>
+      </td>
+    </tr>
+    <tr id="LocaleQualifier">
+      <td>Язык и регион</td>
+      <td>Примеры:<br/>
+        <code>en</code><br/>
+        <code>fr</code><br/>
+        <code>en-rUS</code><br/>
+        <code>fr-rFR</code><br/>
+        <code>fr-rCA</code><br/>
+        и т. д.
+      </td>
+      <td><p>Язык задается двухбуквенным кодом языка <a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">ISO
+ 639-1</a>, к которому можно добавить двухбуквенный код региона
+ <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO
+ 3166-1-alpha-2</a> (которому предшествует строчная буква "{@code r}").
+        </p><p>
+        Коды <em>не</em> зависят от регистра; префикс {@code r} служит для
+обозначения кода региона.
+        Нельзя указывать только код региона.</p>
+        <p>Он может измениться за время работы
+приложения, если пользователь изменяет свой язык в системных настройках. В разделе <a href="runtime-changes.html">Обработка изменений в режиме выполнения</a> содержится информация
+о воздействии таких изменений на приложение во время выполнения.</p>
+        <p>В разделе <a href="localization.html">Локализация</a> приведено полное руководство по локализации
+приложения для других языков.</p>
+        <p>См. также поле конфигурации {@link android.content.res.Configuration#locale}, которое
+указывает текущий язык.</p>
+      </td>
+    </tr>
+    <tr id="LayoutDirectionQualifier">
+      <td>Направление макета</td>
+      <td><code>ldrtl</code><br/>
+        <code>ldltr</code><br/>
+      </td>
+      <td><p>Направление макета для приложения. Квалификатор {@code ldrtl} означает «направление макета справа налево».
+Квалификатор {@code ldltr} означает «направление макета слева направо» и используется по умолчанию.
+      </p>
+      <p>Эти квалификаторы можно применять к любым ресурсам, таким как макеты, графические элементы или значения.
+      </p>
+      <p>Например, если требуется предоставить специальный макет для арабского языка и
+общий макет для других языков, использующих написание «справа налево» (таких как фарси или иврит), используйте следующий код:
+      </p>
+<pre class="classic no-pretty-print">
+res/
+    layout/   <span style="color:black">
+        main.xml  </span>(Default layout)
+    layout-ar/  <span style="color:black">
+        main.xml  </span>(Specific layout for Arabic)
+    layout-ldrtl/  <span style="color:black">
+        main.xml  </span>(Any "right-to-left" language, except
+                  for Arabic, because the "ar" language qualifier
+                  has a higher precedence.)
+</pre>
+        <p class="note"><strong>Примечание.</strong> Чтобы включить в приложение функцию макета «справа налево»,
+необходимо установить для параметра <a href="{@docRoot}guide/topics/manifest/application-element.html#supportsrtl">{@code
+        supportsRtl}</a> значение {@code "true"} и для параметра <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> значение 17 или больше.</p>
+        <p><em>Добавлено в API уровня 17.</em></p>
+      </td>
+    </tr>
+    <tr id="SmallestScreenWidthQualifier">
+      <td>smallestWidth</td>
+      <td><code>sw&lt;N&gt;dp</code><br/><br/>
+        Примеры:<br/>
+        <code>sw320dp</code><br/>
+        <code>sw600dp</code><br/>
+        <code>sw720dp</code><br/>
+        и т. д.
+      </td>
+      <td>
+        <p>Основной размер экрана, указывающий минимальный размер доступной
+области экрана. Точнее говоря, минимальная ширина устройства – это наименьший из двух размеров экрана:
+высоты и ширины (можно также называть ее «меньшей стороной» экрана). Этот квалификатор
+позволяет гарантировать, что независимо от текущей ориентации экрана
+приложение имеет доступную ширину пользовательского интерфейса не менее {@code &lt;N&gt;} пикселов.</p>
+        <p>Например, если для макета требуется, чтобы минимальный размер области экрана всегда был
+не менее 600 пикселов, можно использовать этот квалификатор для создания ресурсов этого макета, {@code
+res/layout-sw600dp/}. Система будет использовать эти ресурсы только в том случае, если минимальный размер
+доступной области экрана составляет не менее 600 пикселов, независимо от воспринимаемой пользователем
+высоты или ширины. Значение минимальной ширины является постоянной характеристикой размера экрана для устройства; <strong>минимальная
+ширина устройства не изменяется при изменении ориентации экрана</strong>.</p>
+        <p>Минимальная ширина устройства учитывает оформление экрана и пользовательский интерфейс системы. Например,
+если не экране присутствуют постоянные элементы пользовательского интерфейса, которые занимают пространство вдоль
+оси минимальной ширины, система объявляет, что минимальная ширина меньше фактического
+размера экрана, так как эти пикселы экрана недоступны для пользовательского интерфейса приложения. Следовательно используемое значение
+должно быть фактическим наименьшим размером, <em>который необходим для вашего макета</em> (обычно это значение является
+«минимальной шириной», которую поддерживает ваш макет, независимо от текущей ориентации экрана).</p>
+        <p>Здесь приведены некоторые значения, которые можно использовать для экранов обычных размеров:</p>
+        <ul>
+          <li>320 для устройств с конфигурациями экрана:
+            <ul>
+              <li>240x320 ldpi (смартфон QVGA)</li>
+              <li>320x480 mdpi (смартфон)</li>
+              <li>480x800 hdpi (смартфон высокой плотности)</li>
+            </ul>
+          </li>
+          <li>480 для таких экранов, как 480x800 mdpi (планшет/смартфон).</li>
+          <li>600 для таких экранов, как 600x1024 mdpi (планшет с диагональю 7").</li>
+          <li>720 для таких экранов, как 720x1280 mdpi (планшет с диагональю 10").</li>
+        </ul>
+        <p>Когда приложение предоставляет несколько каталогов ресурсов с разными значениями
+квалификатора «минимальная ширина», система использует квалификатор, ближайший
+к минимальной ширине устройства, но не превышающий ее. </p>
+        <p><em>Добавлено в API уровня 13.</em></p>
+        <p>См. также атрибут <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html#requiresSmallest">{@code
+android:requiresSmallestWidthDp}</a>, который объявляет минимальную ширину, совместимую
+с вашим приложением, и поле конфигурации {@link
+android.content.res.Configuration#smallestScreenWidthDp}, которое содержит значение
+минимальной ширины устройства.</p>
+        <p>Дополнительную информацию о разработке для различных экранов и использовании этого
+квалификатора см. в руководстве разработчика <a href="{@docRoot}guide/practices/screens_support.html">Поддержка
+нескольких экранов</a>.</p>
+      </td>
+    </tr>
+    <tr id="ScreenWidthQualifier">
+      <td>Доступная ширина</td>
+      <td><code>w&lt;N&gt;dp</code><br/><br/>
+        Примеры:<br/>
+        <code>w720dp</code><br/>
+        <code>w1024dp</code><br/>
+        и т. д.
+      </td>
+      <td>
+        <p>Указывает минимальную доступную ширину экрана в единицах {@code dp}, для которой должен использоваться ресурс,
+заданный значением <code>&lt;N&gt;</code>.  Это
+значение конфигурации будет изменяться в соответствии с текущей фактической шириной
+при изменении альбомной/книжной ориентации.</p>
+        <p>Когда приложение предоставляет несколько каталогов ресурсов с разными значениями
+этой конфигурации, система использует ширину, ближайшую к текущей
+ширине экрана устройства, но не превышающую ее.  Это значение
+учитывает оформление экрана, поэтому, если устройство содержит
+постоянные элементы пользовательского интерфейса вдоль левого или правого края дисплея, оно
+использует значение ширины, которое меньше реального размера экрана: эти элементы
+пользовательского интерфейса учитываются и уменьшают пространство, доступное для приложения.</p>
+        <p><em>Добавлено в API уровня 13.</em></p>
+        <p>См. также поле конфигурации {@link android.content.res.Configuration#screenWidthDp}
+, которое содержит текущую ширину экрана.</p>
+        <p>Дополнительную информацию о разработке для различных экранов и использовании этого
+квалификатора см. в руководстве разработчика <a href="{@docRoot}guide/practices/screens_support.html">Поддержка
+нескольких экранов</a>.</p>
+      </td>
+    </tr>
+    <tr id="ScreenHeightQualifier">
+      <td>Доступная высота</td>
+      <td><code>h&lt;N&gt;dp</code><br/><br/>
+        Примеры:<br/>
+        <code>h720dp</code><br/>
+        <code>h1024dp</code><br/>
+        и т. д.
+      </td>
+      <td>
+        <p>Указывает минимальную доступную высоту экрана в пикселах, для которой должен использоваться ресурс,
+заданный значением <code>&lt;N&gt;</code>.  Это
+значение конфигурации будет изменяться в соответствии с текущей фактической высотой
+при изменении альбомной/книжной ориентации.</p>
+        <p>Когда приложение предоставляет несколько каталогов ресурсов с разными значениями
+этой конфигурации, система использует высоту, ближайшую к текущей
+высоте экрана устройства, но не превышающую ее.  Это значение
+учитывает оформление экрана, поэтому, если устройство содержит
+постоянные элементы пользовательского интерфейса вдоль верхнего или нижнего края дисплея, оно
+использует значение высоты, которое меньше реального размера экрана: эти элементы
+пользовательского интерфейса учитываются и уменьшают пространство, доступное для приложения.  Элементы оформления
+экрана, которые не являются постоянными (например, строка состояния телефона может быть
+скрыта в полноэкранном режиме), здесь <em>не</em> учитываются; также не учитываются такие элементы
+оформления окна, как строка заголовка или строка действий, поэтому приложения должны быть готовы к работе с меньшим
+пространством, чем указано.
+        <p><em>Добавлено в API уровня 13.</em></p>
+        <p>См. также поле конфигурации {@link android.content.res.Configuration#screenHeightDp}
+, которое содержит текущую ширину экрана.</p>
+        <p>Дополнительную информацию о разработке для различных экранов и использовании этого
+квалификатора см. в руководстве разработчика <a href="{@docRoot}guide/practices/screens_support.html">Поддержка
+нескольких экранов</a>.</p>
+      </td>
+    </tr>
+    <tr id="ScreenSizeQualifier">
+      <td>Размер экрана</td>
+      <td>
+        <code>small</code><br/>
+        <code>normal</code><br/>
+        <code>large</code><br/>
+        <code>xlarge</code>
+      </td>
+      <td>
+        <ul class="nolist">
+        <li>{@code small}: Экраны, подобные по размеру
+экрану QVGA низкой плотности. Минимальный размер макета для маленького экрана
+составляет приблизительно 320x426 пикселов.  Примерами являются экраны QVGA низкой плотности и VGA высокой
+плотности.</li>
+        <li>{@code normal}: Экраны, подобные по размеру
+экрану HVGA средней плотности. Минимальный
+размер макета для нормального экрана составляет приблизительно 320x470 пикселов.  Примерами таких экранов
+являются экраны WQVGA низкой плотности, HVGA средней плотности, WVGA
+высокой плотности.</li>
+        <li>{@code large}: Экраны, подобные по размеру
+экрану VGA средней плотности.
+        Минимальный размер макета для большого экрана составляет приблизительно 480x640 пикселов.
+        Примерами являются экраны VGA и WVGA средней плотности.</li>
+        <li>{@code xlarge}: Экраны значительно крупнее обычного 
+экрана HVGA средней плотности. Минимальный размер макета для очень большого экрана составляет
+приблизительно 720x960 пикселов.  В большинстве случаев устройства с очень большими
+экранами слишком велики для карманного использования и, скорее всего,
+относятся к планшетам. <em>Добавлено в API уровня 9.</em></li>
+        </ul>
+        <p class="note"><strong>Примечание.</strong> Использование квалификатора размера не подразумевает, что
+ресурсы предназначены <em>только</em> для экранов этого размера. Если не предусмотрены
+альтернативные ресурсы с квалификаторами, лучше подходящими к текущей конфигурации устройства, система может использовать
+любые <a href="#BestMatch">наиболее подходящие</a> ресурсы.</p>
+        <p class="caution"><strong>Предупреждение!</strong> Если все ресурсы используют квалификатор размера,
+который <em>превосходит</em> размер текущего экрана, система <strong>не</strong> будет использовать эти ресурсы, и приложение
+аварийно завершится во время выполнения (например, если все ресурсы макета отмечены квалификатором {@code
+xlarge}, но устройство оснащено экраном нормального размера).</p>
+        <p><em>Добавлено в API уровня 4.</em></p>
+        
+        <p>Дополнительную информацию см. в разделе <a href="{@docRoot}guide/practices/screens_support.html">Поддержка нескольких
+экранов</a>.</p>
+        <p>См. также поле конфигурации {@link android.content.res.Configuration#screenLayout}, которое
+указывает тип размера экрана: маленький, нормальный
+или большой.</p>
+      </td>
+    </tr>
+    <tr id="ScreenAspectQualifier">
+      <td>Формат экрана</td>
+      <td>
+        <code>long</code><br/>
+        <code>notlong</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code long}: Длинные экраны, такие как WQVGA, WVGA, FWVGA</li>
+          <li>{@code notlong}: Недлинные экраны, такие как QVGA, HVGA и VGA</li>
+        </ul>
+        <p><em>Добавлено в API уровня 4.</em></p>
+        <p>Формат основан исключительно на соотношении сторон экрана («длинный» экран шире). Это
+не связано с ориентацией экрана.</p>
+        <p>См. также поле конфигурации {@link android.content.res.Configuration#screenLayout}, которое
+указывает, является ли экран длинным.</p>
+      </td>
+    </tr>
+    <tr id="OrientationQualifier">
+      <td>Ориентация экрана</td>
+      <td>
+        <code>port</code><br/>
+        <code>land</code>  <!-- <br/>
+        <code>square</code>  -->
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code port}: Устройство в портретной (вертикальной) ориентации</li>
+          <li>{@code land}: Устройство в книжной (горизонтальной) ориентации</li>
+          <!-- Square mode is currently not used. -->
+        </ul>
+        <p>Ориентация может измениться за время работы приложения, если
+пользователь поворачивает экран. В разделе <a href="runtime-changes.html">Обработка изменений в режиме выполнения</a> содержится информация
+о воздействии таких изменений на приложение во время выполнения.</p>
+        <p>См. также поле конфигурации {@link android.content.res.Configuration#orientation}, которое
+указывает текущую ориентацию устройства.</p>
+      </td>
+    </tr>
+    <tr id="UiModeQualifier">
+      <td>Режим пользовательского интерфейса</td>
+      <td>
+        <code>car</code><br/>
+        <code>desk</code><br/>
+        <code>television</code><br/>
+        <code>appliance</code>
+        <code>watch</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code car}: Устройство подсоединено к автомобильной док-станции</li>
+          <li>{@code desk}: Устройство подсоединено к настольной док-станции</li>
+          <li>{@code television}: Устройство подсоединено к телевизору, обеспечивая
+взаимодействие с расстояния «три метра», когда пользовательский интерфейс находится на большом экране,
+находящемся вдалеке от пользователя, ориентированное на управление с помощью навигационной клавиши или другого
+устройства без указателя</li>
+          <li>{@code appliance}: Устройство служит в качестве прибора без
+дисплея</li>
+          <li>{@code watch}: Устройство с дисплеем для ношения на запястье</li>
+        </ul>
+        <p><em>Добавлено в API уровня 8, телевизор добавлен в API 13, часы добавлены в API 20.</em></p>
+        <p>Информацию о том, как приложение может реагировать на установку устройства в
+док-станцию или извлечение из нее, прочитайте документ <a href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">Определение
+и мониторинг типа и состояния подключения к док-станции</a>.</p>
+        <p>Подключение может измениться за время работы приложения, если пользователь помещает устройство
+в док-станцию. Некоторые из этих режимов можно включить или отключить с помощью {@link
+android.app.UiModeManager}. В разделе <a href="runtime-changes.html">Обработка изменений в режиме выполнения</a> содержится
+информация о воздействии таких изменений на приложение во время выполнения.</p>
+      </td>
+    </tr>
+    <tr id="NightQualifier">
+      <td>Ночной режим</td>
+      <td>
+        <code>night</code><br/>
+        <code>notnight</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code night}: Ночное время</li>
+          <li>{@code notnight}: Дневное время</li>
+        </ul>
+        <p><em>Добавлено в API уровня 8.</em></p>
+        <p>Этот режим может измениться за время работы, если ночной режим оставлен в
+автоматическом режиме (по умолчанию), в котором режим изменяется в зависимости от времени суток.  Этот режим можно включить
+или отключить с помощью {@link android.app.UiModeManager}. В разделе <a href="runtime-changes.html">Обработка изменений в режиме выполнения</a> содержится информация о воздействии таких
+изменений на приложение во время выполнения.</p>
+      </td>
+    </tr>
+    <tr id="DensityQualifier">
+      <td>Плотность пикселов на экране (dpi)</td>
+      <td>
+        <code>ldpi</code><br/>
+        <code>mdpi</code><br/>
+        <code>hdpi</code><br/>
+        <code>xhdpi</code><br/>
+        <code>xxhdpi</code><br/>
+        <code>xxxhdpi</code><br/>
+        <code>nodpi</code><br/>
+        <code>tvdpi</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code ldpi}: Экраны низкой плотности; приблизительно 120 dpi.</li>
+          <li>{@code mdpi}: Экраны средней плотности (обычные HVGA); приблизительно
+160 dpi.</li>
+          <li>{@code hdpi}: Экраны высокой плотности; приблизительно 240 dpi.</li>
+          <li>{@code xhdpi}: Экраны очень высокой плотности; приблизительно 320 dpi. <em>Добавлено в API
+уровня 8.</em></li>
+          <li>{@code xxhdpi}: Экраны сверхвысокой плотности; приблизительно 480 dpi. <em>Добавлено в API
+уровня 16.</em></li>
+          <li>{@code xxxhdpi}: Использование исключительно высокой плотности (только значок запуска, см.
+<a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">примечание</a>
+в документе <em>Поддержка нескольких экранов</em>); приблизительно 640 dpi. <em>Добавлено в API
+уровня 18.</em></li>
+          <li>{@code nodpi}: Этот режим можно использовать для растровых графических ресурсов, которые не требуется масштабировать
+в соответствии с плотностью устройства.</li>
+          <li>{@code tvdpi}: Экраны промежуточной плотности между mdpi и hdpi; приблизительно 213 dpi. Этот режим не считается
+«основной» группой плотности. Он главным образом предназначен для телевизоров, и большинство
+приложений в нем не нуждается &mdash; при условии, что ресурсов mdpi и hdpi достаточно для большинства приложений, и
+система будет масштабировать их при необходимости. Этот квалификатор введен в API уровня 13.</li>
+        </ul>
+        <p>Шесть основных уровней плотности соотносятся как 3:4:6:8:12:16 (если игнорировать
+плотность tvdpi). Так, растровое изображение 9x9 в ldpi представляется как 12x12 в mdpi, 18x18 в hdpi, 24x24 в xhdpi и т. д.
+</p>
+        <p>Если графические ресурсы выглядят недостаточно хорошо на телевизоре или
+других определенных устройствах, и хочется попробовать ресурсы tvdpi, используйте масштабный коэффициент 1,33*mdpi. Например,
+ изображение 100 x 100 пикселов для экранов mdpi должно иметь размер 133 x 133 пиксела для tvdpi.</p>
+        <p class="note"><strong>Примечание.</strong> Использование квалификатора плотности не подразумевает, что
+ресурсы предназначены <em>только</em> для экранов этой плотности. Если не предусмотрены
+альтернативные ресурсы с квалификаторами, лучше подходящими к текущей конфигурации устройства, система может использовать
+любые <a href="#BestMatch">наиболее подходящие</a> ресурсы.</p>
+        <p>Дополнительную информацию о том, как обрабатывать
+различные плотности экранов, и как Android может масштабировать растровые изображения в соответствии текущей плотностью, см. в разделе <a href="{@docRoot}guide/practices/screens_support.html">Поддержка нескольких
+экранов</a>.</p>
+       </td>
+    </tr>
+    <tr id="TouchscreenQualifier">
+      <td>Тип сенсорного экрана</td>
+      <td>
+        <code>notouch</code><br/>
+        <code>finger</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code notouch}: Устройство не оснащено сенсорным экраном.</li>
+          <li>{@code finger}: Устройство оснащено сенсорным экраном, предназначенным
+для ввода с помощью пальцев пользователя.</li>
+        </ul>
+        <p>См. также поле конфигурации {@link android.content.res.Configuration#touchscreen}, которое
+указывает тип сенсорного экрана устройства.</p>
+      </td>
+    </tr>
+    <tr id="KeyboardAvailQualifier">
+      <td>Доступность клавиатуры</td>
+      <td>
+        <code>keysexposed</code><br/>
+        <code>keyshidden</code><br/>
+        <code>keyssoft</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code keysexposed}: В устройстве доступна клавиатура. Если в устройстве включена
+экранная клавиатура (что весьма вероятно), она может использоваться даже в случае, когда аппаратная клавиатура
+<em></em> недоступна пользователю, даже если устройство не имеет аппаратной клавиатуры. Если экранная
+клавиатура отсутствует или отключена, это квалификатор используется только в том случае, когда доступна
+аппаратная клавиатура.</li>
+          <li>{@code keyshidden}: Устройство имеет аппаратную клавиатуру, но она
+скрыта, <em>и </em> в устройстве <em>не</em> включена экранная клавиатура.</li>
+          <li>{@code keyssoft}: Экранная клавиатура в устройстве включена независимо от того,
+видна она или нет.</li>
+        </ul>
+        <p>Если предоставляются ресурсы <code>keysexposed</code>, но не предоставляются ресурсы <code>keyssoft</code>,
+система использует ресурсы <code>keysexposed</code> независимо от видимости
+клавиатуры, поскольку в системе включена экранная клавиатура.</p>
+        <p>Это состояние может измениться за время работы приложения, если
+пользователь открывает аппаратную клавиатуру. В разделе <a href="runtime-changes.html">Обработка изменений в режиме выполнения</a> содержится информация о воздействии таких
+изменений на приложение во время выполнения.</p>
+        <p>См. также поля конфигурации {@link
+android.content.res.Configuration#hardKeyboardHidden} и {@link
+android.content.res.Configuration#keyboardHidden}, которые указывают видимость аппаратной
+клавиатуры и видимость клавиатуры любого типа (включая экранную), соответственно.</p>
+      </td>
+    </tr>
+    <tr id="ImeQualifier">
+      <td>Основной способ ввода текста</td>
+      <td>
+        <code>nokeys</code><br/>
+        <code>qwerty</code><br/>
+        <code>12key</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code nokeys}: В устройстве отсутствуют аппаратные клавиши для ввода текста.</li>
+          <li>{@code qwerty}: Устройство оснащено аппаратной клавиатурой с раскладкой qwerty, независимо от того, видна она
+пользователю
+или нет.</li>
+          <li>{@code 12key}: Устройство оснащено аппаратной клавиатурой с 12 клавишами, независимо от того, видна она пользователю
+или нет.</li>
+        </ul>
+        <p>См. также поле конфигурации {@link android.content.res.Configuration#keyboard}, которое
+указывает основной доступный способ ввода текста.</p>
+      </td>
+    </tr>
+    <tr id="NavAvailQualifier">
+      <td>Доступность клавиш перемещения</td>
+      <td>
+        <code>navexposed</code><br/>
+        <code>navhidden</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code navexposed}: Клавиши перемещения доступны пользователю.</li>
+          <li>{@code navhidden}: Клавиши перемещения недоступны (например, находятся за
+закрытой крышкой).</li>
+        </ul>
+        <p>Это состояние может измениться за время работы приложения, если
+пользователь открывает клавиши перемещения. В разделе <a href="runtime-changes.html">Обработка изменений в режиме выполнения</a> содержится
+информация о воздействии таких изменений на приложение во время выполнения.</p>
+        <p>См. также поле конфигурации {@link android.content.res.Configuration#navigationHidden}, которое
+указывает, скрыты ли клавиши перемещения.</p>
+      </td>
+    </tr>
+    <tr id="NavigationQualifier">
+      <td>Основной несенсорный способ перемещения курсора</td>
+      <td>
+        <code>nonav</code><br/>
+        <code>dpad</code><br/>
+        <code>trackball</code><br/>
+        <code>wheel</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code nonav}: Устройство не оснащено другими средствами перемещения курсора, кроме
+сенсорного экрана.</li>
+          <li>{@code dpad}: Устройство оснащено навигационной клавишей.</li>
+          <li>{@code trackball}: Устройство оснащено трекболом.</li>
+          <li>{@code wheel}: Устройство оснащено навигационным колесиком (редко).</li>
+        </ul>
+        <p>См. также поле конфигурации {@link android.content.res.Configuration#navigation}, которое
+указывает способ перемещения курсора.</p>
+      </td>
+    </tr>
+<!-- DEPRECATED
+    <tr>
+      <td>Screen dimensions</td>
+      <td>Examples:<br/>
+        <code>320x240</code><br/>
+        <code>640x480</code><br/>
+        etc.
+      </td>
+      <td>
+        <p>The larger dimension must be specified first. <strong>This configuration is deprecated
+and should not be used</strong>. Instead use "screen size," "wider/taller screens," and "screen
+orientation" described above.</p>
+      </td>
+    </tr>
+-->
+    <tr id="VersionQualifier">
+      <td>Версия платформы (уровень API)</td>
+      <td>Примеры:<br/>
+        <code>v3</code><br/>
+        <code>v4</code><br/>
+        <code>v7</code><br/>
+        и т. д.</td>
+      <td>
+        <p>Уровень API, поддерживаемый устройством. Например, <code>v1</code> для уровня API
+1 (устройства с Android 1.0 или выше) и <code>v4</code> для уровня API 4 (устройства с Android
+1.6 или выше). В документе <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Уровни API Android</a> содержится дополнительная информация
+об этих значениях.</p>
+      </td>
+    </tr>
+</table>
+
+
+<p class="note"><strong>Примечание.</strong> Некоторые квалификаторы конфигурации добавлены после версии Android
+1.0, поэтому в некоторых версиях Android поддерживаются не все квалификаторы. При использовании нового квалификатора косвенно
+добавляется квалификатор версии платформы, чтобы более старые устройства игнорировали его. Например, при использовании
+квалификатора <code>w600dp</code> автоматически добавляется квалификатор <code>v13</code>, так как квалификатор
+доступной ширины был новым в API уровня 13. Чтобы исключить какие-либо проблемы, всегда включайте набор
+ресурсов по умолчанию (набор ресурсов <em>без квалификаторов</em>). Для получения дополнительной информации см.
+раздел <a href="#Compatibility">Обеспечение оптимальной совместимости устройства с
+ресурсами</a>.</p>
+
+
+
+<h3 id="QualifierRules">Правила квалификатора имени</h3>
+
+<p>Здесь приведены некоторые правила использования имен квалификаторов:</p>
+
+<ul>
+    <li>Можно указать несколько квалификаторов для одного набора ресурсов, разделяя их дефисами. Например,
+ <code>drawable-en-rUS-land</code> применяется к устройствам в США, на английском языке в альбомной
+ориентации.</li>
+    <li>Квалификаторы должны идти в том же порядке, в котором они перечислены в <a href="#table2">таблице 2</a>. Например:
+
+      <ul>
+        <li>Неправильно: <code>drawable-hdpi-port/</code></li>
+        <li>Правильно: <code>drawable-port-hdpi/</code></li>
+      </ul>
+    </li>
+    <li>Нельзя использовать вложенные каталоги альтернативных ресурсов. Например, нельзя иметь каталог
+<code>res/drawable/drawable-en/</code>.</li>
+    <li>Значения не зависят от регистра букв.  Компилятор ресурсов преобразует имена каталогов
+в нижний регистр перед обработкой, чтобы избежать проблем в файловых системах,
+не учитывающих регистр. Прописные буквы в именах служат исключительно для удобочитаемости.</li>
+    <li>Поддерживается только одно значение квалификатора каждого типа. Например, если требуется использовать
+одинаковые графические файлы для испанского и французского языков, <em>нельзя</em> создавать
+каталог с именем <code>drawable-rES-rFR/</code>. Вместо этого необходимо создать два каталога ресурсов, например,
+<code>drawable-rES/</code> и <code>drawable-rFR/</code>, которые содержат соответствующие файлы.
+Однако не обязательно фактически копировать одинаковые файлы в оба каталога. Вместо этого
+можно создать псевдоним для ресурса. См. раздел <a href="#AliasResources">Создание
+псевдонимов ресурсов</a> ниже.</li>
+</ul>
+
+<p>После сохранения альтернативных ресурсов в каталоги с именами
+этих квалификаторов Android автоматически применяет ресурсы в приложении на основе текущей конфигурации
+устройства. При каждом запросе ресурсов Android проверяет каталоги альтернативных
+ресурсов, которые содержат файл запрошенного ресурса, затем <a href="#BestMatch">находят
+наиболее подходящий ресурс</a> (обсуждается ниже). Если нет альтернативных ресурсов, которые
+соответствуют конкретной конфигурации устройства, Android использует ресурсы по умолчанию (набор
+ресурсов для конкретного типа ресурсов, которые не содержат квалификатора
+конфигурации).</p>
+
+
+
+<h3 id="AliasResources">Создание псевдонимов ресурсов</h3>
+
+<p>Ресурс, предназначенный для нескольких конфигураций
+устройства (но не являющийся ресурсом по умолчанию), следует помещать
+только в один каталог альтернативных ресурсов. Вместо этого можно (в некоторых случаях) создать
+альтернативный
+ресурс, действующий в качестве псевдонима для ресурса, сохраненного в каталоге ресурсов по умолчанию.</p>
+
+<p class="note"><strong>Примечание.</strong> Не все ресурсы предлагают механизм, позволяющий
+создавать псевдоним для другого ресурса. В частности, анимации, меню, необработанные и другие неустановленные
+ресурсы в каталоге {@code xml/} не содержат такой возможности.</p>
+
+<p>Например, представьте, что имеется значок приложения, {@code icon.png}, и требуется иметь уникальные версии
+этого значка для разных языков. Однако в двух языках, канадском английском и канадском французском, требуется
+использовать одинаковую версию. Можно предположить, что требуется скопировать одно изображение
+в каталоги ресурсов для обоих языков, но
+это неверно. Вместо этого можно сохранить изображение для обоих языков, как {@code icon_ca.png} (любое
+имя, кроме {@code icon.png}), и поместить его
+в каталог по умолчанию {@code res/drawable/}. Затем создайте файл {@code icon.xml} в каталогах {@code
+res/drawable-en-rCA/} и {@code res/drawable-fr-rCA/} который ссылается на ресурс {@code icon_ca.png}
+с помощью элемента {@code &lt;bitmap&gt;}. Это позволяет хранить только одну версию файла PNG
+и два маленьких файла XML, которые указывают на него. (Пример файла XML показан ниже.)</p>
+
+
+<h4>Графические объекты</h4>
+
+<p>Чтобы создать псевдоним для существующего графического объекта, используйте элемент {@code &lt;bitmap&gt;}.
+Например:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/icon_ca" />
+</pre>
+
+<p>Если сохранить этот файл под именем {@code icon.xml} (в каталоге альтернативных ресурсов, например,
+{@code res/drawable-en-rCA/}), он компилируется в ресурс, на который
+можно ссылаться с помощью {@code R.drawable.icon}, но фактически он является псевдонимом для ресурса {@code
+R.drawable.icon_ca} (который сохранен в каталоге {@code res/drawable/}).</p>
+
+
+<h4>Макет</h4>
+
+<p>Чтобы создать псевдоним для существующего макета, используйте элемент {@code &lt;include&gt;}
+, заключенный в теги {@code &lt;merge&gt;}. Например:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;merge>
+    &lt;include layout="@layout/main_ltr"/>
+&lt;/merge>
+</pre>
+
+<p>Если сохранить этот файл под именем {@code main.xml}, он компилируется в ресурс, на который можно ссылаться
+с помощью {@code R.layout.main}, но фактически он является псевдонимом для ресурса {@code R.layout.main_ltr}
+.</p>
+
+
+<h4>Строки и другие простые значения</h4>
+
+<p>Чтобы создать псевдоним для существующей строки используйте идентификатор ресурса нужной
+строки в качестве значения для новой строки. Например:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;string name="hello">Hello&lt;/string>
+    &lt;string name="hi">@string/hello&lt;/string>
+&lt;/resources>
+</pre>
+
+<p>Ресурс {@code R.string.hi} теперь является псевдонимом для {@code R.string.hello}.</p>
+
+<p> <a href="{@docRoot}guide/topics/resources/more-resources.html">Другие простые значения</a> работают
+аналогично. Например, цвет:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;color name="yellow">#f00&lt;/color>
+    &lt;color name="highlight">@color/red&lt;/color>
+&lt;/resources>
+</pre>
+
+
+
+
+<h2 id="Compatibility">Обеспечение оптимальной совместимости устройства с ресурсами</h2>
+
+<p>Для того чтобы приложение поддерживало несколько конфигураций устройств, очень важно
+всегда предоставлять ресурсы по умолчанию для каждого типа ресурсов, используемых приложением.</p>
+
+<p>Например, если приложение поддерживает несколько языков, всегда включайте каталог {@code
+values/} (в котором сохранены строки) <em>без</em> <a href="#LocaleQualifier">квалификатора языка и региона</a>. Если вместо этого поместить все файлы строк
+в каталоги с квалификаторами языка и региона, приложение закроется с ошибкой при запуске
+на устройстве, на котором установлен язык, отсутствующий в ваших строках. Но как только вы предоставили ресурсы
+{@code values/} по умолчанию, приложение будет работать правильно (даже если пользователь не
+понимает этого языка, это лучше, чем завершение с ошибкой).</p>
+
+<p>Таким же образом, если вы предоставляете различные ресурсы макета в зависимости от ориентации экрана, следует
+указать одну ориентацию в качестве ориентации по умолчанию. Например, вместо предоставления ресурсов макета в каталоге {@code
+layout-land/} для альбомной ориентации и в каталоге {@code layout-port/} для книжной ориентации, оставьте один вариант по умолчанию: например,
+{@code layout/} для альбомной и {@code layout-port/} для книжной ориентации.</p>
+
+<p>Предоставление ресурсов по умолчанию важно не только потому, что приложение сможет работать на конфигурации,
+которую вы не предусмотрели, но также и потому, что новые версии Android иногда добавляют
+квалификаторы конфигураций, которые не поддерживаются более старыми версиями. Если вы используете новый квалификатор ресурсов,
+но поддерживаете совместимость кода с более старыми версиями Android, то при выполнении вашего приложения в более старой версии
+Android оно завершится в ошибкой, если вы не предусмотрели ресурсы по умолчанию, так как
+оно не может использовать ресурсы, проименованные новым квалификатором. Например, если для параметра <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code
+minSdkVersion}</a> установлено значение 4 и вы квалифицировали все графические ресурсы с использованием <a href="#NightQualifier">ночного режима</a> ({@code night} или {@code notnight}, который был добавлен в API
+уровня 8), то устройства с API уровня 4 не смогут получить доступ к графическим ресурсам и приложение завершится с ошибкой. В этом
+случае, вероятно, следует использовать {@code notnight} в качестве ресурсов по умолчанию и исключить этот
+квалификатор, разместив графические ресурсы в каталогах {@code drawable/} или {@code drawable-night/}.</p>
+
+<p>Поэтому для обеспечения оптимальной совместимости с устройствами обязательно предоставляйте ресурсы
+по умолчанию, которые приложение может правильно выполнять. Затем создайте альтернативные
+ресурсы для определенных конфигураций устройств с помощью квалификаторов конфигурации.</p>
+
+<p>Из этого правила есть одно исключение: Если в приложении для параметра <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> установлено значение 4 или
+выше, <em>не требуется</em> предоставлять графические ресурсы по умолчанию при предоставлении альтернативных графических
+ресурсов с квалификатором <a href="#DensityQualifier">плотность экрана</a>. Даже без графических ресурсов
+по умолчанию Android может найти наиболее подходящую альтернативную плотность экрана и масштабировать
+растровые изображения при необходимости. Однако для оптимальной работы на устройствах всех типов следует
+предоставить альтернативные графические ресурсы для всех трех типов плотности.</p>
+
+
+
+<h2 id="BestMatch">Как Android находит наиболее подходящий ресурс</h2>
+
+<p>Когда вы запрашиваете ресурс, для которого предоставлена альтернатива, Android выбирает
+альтернативный ресурс для использования в режиме выполнения в зависимости от текущей конфигурации устройства. Чтобы
+продемонстрировать, как Android выбирает альтернативный ресурс, допустим, что имеются следующие каталоги графических ресурсов,
+каждый из которых содержит различные версии одинаковых изображений:</p>
+
+<pre class="classic no-pretty-print">
+drawable/
+drawable-en/
+drawable-fr-rCA/
+drawable-en-port/
+drawable-en-notouch-12key/
+drawable-port-ldpi/
+drawable-port-notouch-12key/
+</pre>
+
+<p>И допустим, что устройство имеет следующую конфигурацию:</p>
+
+<p style="margin-left:1em;">
+Язык = <code>en-GB</code> <br/>
+Ориентация экрана = <code>port</code> <br/>
+Плотность пикселов на экране = <code>hdpi</code> <br/>
+Тип сенсорного экрана = <code>notouch</code> <br/>
+Основной способ ввода текста = <code>12key</code>
+</p>
+
+<p>Сравнивая конфигурацию устройства с доступными альтернативными ресурсами, Android выбирает
+графику из каталога {@code drawable-en-port}.</p>
+
+<p>Система приходит к решению об используемых ресурсах на основе следующей
+логики:</p>
+
+
+<div class="figure" style="width:371px">
+<img src="{@docRoot}images/resources/res-selection-flowchart.png" alt="" height="471" />
+<p class="img-caption"><strong>Рисунок 2.</strong> Как Android находит наиболее подходящий ресурс.
+Структурная схема.</p>
+</div>
+
+
+<ol>
+  <li>Исключение файлов ресурсов, которые противоречат конфигурации устройства.
+    <p>Каталог <code>drawable-fr-rCA/</code> исключается, так как он
+противоречит языку <code>en-GB</code>.</p>
+<pre class="classic no-pretty-print">
+drawable/
+drawable-en/
+<strike>drawable-fr-rCA/</strike>
+drawable-en-port/
+drawable-en-notouch-12key/
+drawable-port-ldpi/
+drawable-port-notouch-12key/
+</pre>
+<p class="note"><strong>Исключение.</strong> Квалификатор плотности пикселов на экране не исключается
+вследствие противоречия. Хотя плотность экрана устройства hdpi,
+каталог <code>drawable-port-ldpi/</code> не исключается, так как на этом этапе любая плотность экрана
+считается подходящей. Более подробная информация доступна в документе <a href="{@docRoot}guide/practices/screens_support.html">Поддержка нескольких
+экранов</a>.</p></li>
+
+  <li>Указание (следующего) квалификатора с высшим приоритетом в списке (<a href="#table2">таблица 2</a>).
+(Начать с MCC, затем двигаться вниз.) </li>
+  <li>Содержат ли какие-либо каталоги ресурсов этот квалификатор?  </li>
+    <ul>
+      <li>Если Нет, вернуться к шагу 2 и найти следующий квалификатор. (В нашем примере
+получается ответ «нет», пока не достигнут квалификатор языка.)</li>
+      <li>Если Да, перейти к шагу 4.</li>
+    </ul>
+  </li>
+
+  <li>Исключить каталоги ресурсов, которые не содержат этого квалификатора. В данном примере система исключает
+все каталоги, которые не содержат квалификатора языка:</li>
+<pre class="classic no-pretty-print">
+<strike>drawable/</strike>
+drawable-en/
+drawable-en-port/
+drawable-en-notouch-12key/
+<strike>drawable-port-ldpi/</strike>
+<strike>drawable-port-notouch-12key/</strike>
+</pre>
+<p class="note"><strong>Исключение.</strong> Если получен квалификатор плотности пикселов на экране,
+Android выбирает вариант, наиболее близко соответствующий плотности экрана устройства.
+Как правило, Android предпочитает уменьшать большие исходные изображения, чем увеличивать
+мелкие. См. раздел <a href="{@docRoot}guide/practices/screens_support.html">Поддержка нескольких
+экранов</a>.</p>
+  </li>
+
+  <li>Вернуться и повторять шаги 2, 3 и 4, пока не останется только один каталог. В нашем примере следующим
+квалификатором, для которого есть совпадения, является ориентация экрана.
+Поэтому исключаются ресурсы, не указывающие ориентацию экрана:
+<pre class="classic no-pretty-print">
+<strike>drawable-en/</strike>
+drawable-en-port/
+<strike>drawable-en-notouch-12key/</strike>
+</pre>
+<p>Остается каталог {@code drawable-en-port}.</p>
+  </li>
+</ol>
+
+<p>Хотя эта процедура выполняется для каждого запрошенного ресурса, система дополнительно оптимизирует
+некоторые вопросы. Одна из таких оптимизаций состоит в том, что поскольку конфигурация устройства известна, можно
+исключить альтернативные ресурсы, которые не могут подойти. Например, если используется конфигурация с английским
+языком ("en"), все каталоги ресурсов, для которых установлен другой квалификатор языка,
+никогда не включаются в пул проверяемых ресурсов (хотя
+каталоги ресурсов <em>без</em> квалификатора языка включаются).</p>
+
+<p>При выборе ресурсов на основе квалификаторов размера экрана система будет использовать ресурсы
+предназначенные для экрана, меньшего чем текущий экран, если нет более подходящих ресурсов
+(например, на экранах большого размера при необходимости будут использоваться ресурсы, предназначенные для экранов нормального размера). Однако, если
+ единственные доступные ресурсы <em>превосходят</em> размер текущего экрана, система
+<strong>не</strong> будет использовать эти ресурсы, и приложение аварийно завершится, если нет других ресурсов, соответствующих конфигурации
+устройства (например, если все ресурсы макета отмечены квалификатором {@code xlarge},
+но устройство оснащено экраном нормального размера).</p>
+
+<p class="note"><strong>Примечание.</strong> <em>Приоритет</em> квалификатора (в <a href="#table2">таблице 2</a>) более важен,
+чем число квалификаторов, которые точно соответствуют устройству. Например, на шаге 4 выше, последний
+вариант в списке содержит три квалификатора, которые точно соответствуют устройству (ориентация, тип
+сенсорного экрана и способ ввода), в то время как <code>drawable-en</code> содержит только один подходящий параметр
+(язык). Однако язык имеет более высокий приоритет, чем эти остальные квалификаторы, поэтому 
+<code>drawable-port-notouch-12key</code> вычеркивается.</p>
+
+<p>Для получения более подробной информации об использовании ресурсов в приложении перейдите к разделу <a href="accessing-resources.html">Доступ к ресурсам</a>.</p>
diff --git a/docs/html-intl/intl/ru/guide/topics/resources/runtime-changes.jd b/docs/html-intl/intl/ru/guide/topics/resources/runtime-changes.jd
new file mode 100644
index 0000000..5dc59c8
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/resources/runtime-changes.jd
@@ -0,0 +1,281 @@
+page.title=Обработка изменений в режиме выполнения
+page.tags=операция,жизненный цикл
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>Содержание документа</h2>
+  <ol>
+    <li><a href="#RetainingAnObject">Сохранение объекта во время изменения конфигурации</a></li>
+    <li><a href="#HandlingTheChange">Самостоятельная обработка изменения конфигурации</a>
+  </ol>
+
+  <h2>См. также:</h2>
+  <ol>
+    <li><a href="providing-resources.html">Предоставление ресурсов</a></li>
+    <li><a href="accessing-resources.html">Доступ к ресурсам</a></li>
+    <li><a href="http://android-developers.blogspot.com/2009/02/faster-screen-orientation-change.html">Более
+быстрое изменение ориентации экрана</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Некоторые конфигурации устройств могут изменяться в режиме выполнения
+(например, ориентация экрана, доступность клавиатуры и язык). Когда происходит такое изменение,
+Android перезапускает выполнение
+{@link android.app.Activity} (вызывается {@link android.app.Activity#onDestroy()}, затем {@link
+android.app.Activity#onCreate(Bundle) onCreate()}). Поведение при перезапуске позволяет
+приложению учитывать новые конфигурации путем автоматической перезагрузки в приложение
+альтернативных ресурсов, которые соответствуют новой конфигурации устройства.</p>
+
+<p>Для правильной обработки перезапуска важно, чтобы операция восстанавливала предыдущее
+состояние в течение нормального <a href="{@docRoot}guide/components/activities.html#Lifecycle">жизненного цикла
+операции</a>, при котором Android вызывает
+{@link android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()} перед уничтожением
+операции, чтобы вы могли сохранить данные о состоянии приложения. Затем вы можете восстановить состояние
+во время выполнения метода {@link android.app.Activity#onCreate(Bundle) onCreate()} или {@link
+android.app.Activity#onRestoreInstanceState(Bundle) onRestoreInstanceState()}.</p>
+
+<p>Чтобы проверить, перезапускается ли приложение в неизмененном состоянии, следует
+вызывать изменение конфигурации (например, изменение ориентации экрана) во время выполнения различных
+задач в приложении. Приложение должно перезапускаться в любой момент без потери
+пользовательских данных и состояния, чтобы обработать события, например, изменение конфигурации или получение пользователем
+входящего телефонного звонка с последующим возвращением в приложение после того, как процесс
+приложения мог быть уничтожен. Чтобы узнать, как восстановить состояние операции, прочитайте раздел <a href="{@docRoot}guide/components/activities.html#Lifecycle">Жизненный цикл операции</a>.</p>
+
+<p>Однако возможна ситуация, при которой перезапуск приложения и
+восстановление значительного объема данных может быть слишком ресурсоемким и может создавать неприятное впечатление у пользователя. В такой ситуации
+есть два других варианта:</p>
+
+<ol type="a">
+  <li><a href="#RetainingAnObject">Сохранение объекта во время изменения конфигурации</a>
+  <p>Необходимо позволить перезапуск операции при изменении конфигурации, при этом перенести объект
+с сохранением состояния в новый экземпляр операции.</p>
+
+  </li>
+  <li><a href="#HandlingTheChange">Самостоятельная обработка изменения конфигурации</a>
+  <p>Не допускайте перезапуска операции системой во время определенных изменений конфигурации,
+но получайте обратный вызов при изменении конфигурации, чтобы при необходимости можно было вручную обновить
+операцию.</p>
+  </li>
+</ol>
+
+
+<h2 id="RetainingAnObject">Сохранение объекта во время изменения конфигурации</h2>
+
+<p>Если перезапуск операции требует восстановления больших объемов данных, повторного подключения к сети
+или выполнения других масштабных действий, то полный перезапуск вследствие изменения конфигурации
+может тормозить работу пользователя. Кроме того, может быть невозможно полное восстановление состояния операции
+ из объекта {@link android.os.Bundle}, который система сохраняет с помощью обратного вызова {@link
+android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()}, поскольку он не
+предназначен для переноса больших объектов (таких как растровые изображения), и данные в нем должны быть преобразованы в последовательную
+форму, а затем обратно, что потребляет много памяти и тормозит изменение конфигурации. В такой ситуации
+вы можете облегчить бремя повторной инициализации операции путем сохранения фрагмента {@link
+android.app.Fragment} в случае перезапуска операции вследствие изменения конфигурации. Этот фрагмент
+может содержать ссылки на объекты с сохранением состояния, которые требуется сохранить.</p>
+
+<p>Когда система Android завершает операцию вследствие изменения конфигурации, фрагменты
+операции, отмеченные для сохранения, не уничтожаются. Такие фрагменты можно добавлять в операцию
+для защиты объектов с сохранением состояния.</p>
+
+<p>Сохранение объектов с сохранением состояния во фрагменте во время изменения конфигурации в режиме выполнения:</p>
+
+<ol>
+  <li>Расширьте класс {@link android.app.Fragment} и объявите ссылки на объекты,
+сохраняющие состояние.</li>
+  <li>Вызовите {@link android.app.Fragment#setRetainInstance(boolean)}, когда фрагмент создан.
+      </li>
+  <li>Добавьте фрагмент в операцию.</li>
+  <li>Используйте {@link android.app.FragmentManager} для извлечения фрагмента при перезапуске
+операции.</li>
+</ol>
+
+<p>В качестве привмера приведено определение фрагмента следующим образом:</p>
+
+<pre>
+public class RetainedFragment extends Fragment {
+
+    // data object we want to retain
+    private MyDataObject data;
+
+    // this method is only called once for this fragment
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // retain this fragment
+        setRetainInstance(true);
+    }
+
+    public void setData(MyDataObject data) {
+        this.data = data;
+    }
+
+    public MyDataObject getData() {
+        return data;
+    }
+}
+</pre>
+
+<p class="caution"><strong>Внимание!</strong> Хотя можно сохранить любой объект,
+не следует передавать объект, связанный с {@link android.app.Activity}, например, {@link
+android.graphics.drawable.Drawable}, {@link android.widget.Adapter}, {@link android.view.View}
+или любой другой объект, связанный с {@link android.content.Context}. В этом случае произойдет
+утечка всех видов и ресурсов исходного экземпляра операции. (Утечка ресурсов
+означает, что приложение удерживает их, и система не может очистить от них память, поэтому
+может теряться значительный объем памяти).</p>
+
+<p>Затем используйте {@link android.app.FragmentManager} для добавления фрагмента в операцию. 
+Можно получить объект данных из фрагмента, когда операция повторно запускается в результате изменения конфигурации
+в режиме выполнения. В качестве примера операция определена следующим образом:</p>
+
+<pre>
+public class MyActivity extends Activity {
+
+    private RetainedFragment dataFragment;
+
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+
+        // find the retained fragment on activity restarts
+        FragmentManager fm = getFragmentManager();
+        dataFragment = (DataFragment) fm.findFragmentByTag(“data”);
+
+        // create the fragment and data the first time
+        if (dataFragment == null) {
+            // add the fragment
+            dataFragment = new DataFragment();
+            fm.beginTransaction().add(dataFragment, “data”).commit();
+            // load the data from the web
+            dataFragment.setData(loadMyData());
+        }
+
+        // the data is available in dataFragment.getData()
+        ...
+    }
+
+    &#64;Override
+    public void onDestroy() {
+        super.onDestroy();
+        // store the data in the fragment
+        dataFragment.setData(collectMyLoadedData());
+    }
+}
+</pre>
+
+<p>В этом примере {@link android.app.Activity#onCreate(Bundle) onCreate()} добавляет фрагмент
+или восстанавливает ссылку на него. Метод {@link android.app.Activity#onCreate(Bundle) onCreate()} также
+хранит объект, сохраняющий состояние, внутри экземпляра фрагмента.
+Метод {@link android.app.Activity#onDestroy() onDestroy()} обновляет объект, сохраняющий состояние, внутри 
+сохраненного экземпляра фрагмента.</p>
+
+
+
+
+
+<h2 id="HandlingTheChange">Самостоятельная обработка изменения конфигурации</h2>
+
+<p>Если приложению не требуется обновление ресурсов во время определенного изменения
+конфигурации <em>и</em> имеются ограничения производительности, не разрешающие
+перезапуск операции, можно объявить самостоятельную обработку операцией изменения конфигурации
+, что запрещает системе перезапускать эту операцию.</p>
+
+<p class="note"><strong>Примечание.</strong> Самостоятельная обработка изменения конфигурации может
+значительно затруднить использование альтернативных ресурсов, так как система не
+применяет их автоматически. Этот подход может применяться в крайнем случае, когда необходимо избежать перезапуска в результате
+изменения конфигурации, и для большинства приложений его использование не рекомендуется.</p>
+
+<p>Для объявления самостоятельной обработки изменения конфигурации операцией отредактируйте соответствующий элемент <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+в файле манифеста и включите в него атрибут <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> со значением, представляющим конфигурацию, которую
+требуется обрабатывать самостоятельно. Возможные значения перечислены в документации для атрибута <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> (наиболее часто используются значения {@code "orientation"} для
+предотвращения перезапуска при изменении ориентации экрана и {@code "keyboardHidden"} для предотвращения
+перезапуска при изменении доступности клавиатуры).  Можно объявить несколько значений конфигурации
+в атрибуте, разделяя их символом вертикальной черты {@code |}.</p>
+
+<p>Например, следующий код манифеста объявляет операцию, которая обрабатывает как
+изменение ориентации экрана, так и изменение доступности экрана:</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"
+          android:configChanges="orientation|keyboardHidden"
+          android:label="@string/app_name">
+</pre>
+
+<p>Теперь, при изменении одного из этих элементов конфигурации, операция {@code MyActivity} не перезапускается.
+Вместо этого {@code MyActivity} получает вызов {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}. Этот метод
+получает объект {@link android.content.res.Configuration}, в котором указана
+новая конфигурация устройства. При считываении полей {@link android.content.res.Configuration}
+можно определить новую конфигурацию и внести соответствующие изменения, обновляя
+ресурсы, которые используются в интерфейсе. В момент
+вызова этого метода объект {@link android.content.res.Resources} операции обновляется
+и возвращает ресурсы на основе новой конфигурации, поэтому можно просто
+сбросить элементы пользовательского интерфейса без перезапуска операции системой.</p>
+
+<p class="caution"><strong>Внимание!</strong> Начиная с Android 3.2 (уровень API 13), <strong>
+«размер экрана» также изменяется</strong> при переходе между книжной и альбомной
+ориентациями устройства. Таким образом, если в режиме выполнения требуется предотвратить перезапуск вследствие изменения ориентации при разработке для
+уровня API 13 или выше (как объявлено в атрибутах <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> и <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a>
+), необходимо включить значение {@code "screenSize"} в дополнение к значению {@code
+"orientation"}. То есть необходимо объявить {@code
+android:configChanges="orientation|screenSize"}. Однако, если приложение нацелено на уровень API
+12 или ниже, ваша операция всегда обрабатывает это изменение конфигурации самостоятельно (это изменение
+конфигурации не перезапускает операцию даже при работе на устройстве с Android 3.2 или более поздней версией).</p>
+
+<p>Например, следующая реализация метода {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}
+проверяет текущую ориентацию устройства:</p>
+
+<pre>
+&#64;Override
+public void onConfigurationChanged(Configuration newConfig) {
+    super.onConfigurationChanged(newConfig);
+
+    // Checks the orientation of the screen
+    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
+        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
+    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
+        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
+    }
+}
+</pre>
+
+<p>Объект {@link android.content.res.Configuration} представляет все текущие
+конфигурации, а не только изменившиеся. В большинстве случаев неважно,
+как именно изменилась конфигурация, поэтому можно просто переназначить все ресурсы, предоставляющие альтернативу
+для обрабатываемой конфигурации. Например, так как объект {@link
+android.content.res.Resources} обновлен, можно сбросить
+любые виды {@link android.widget.ImageView} с помощью {@link android.widget.ImageView#setImageResource(int)
+setImageResource()}
+, и после этого будут использоваться ресурсы, соответствующие новой конфигурации (как описано в разделе <a href="providing-resources.html#AlternateResources">Предоставление ресурсов</a>).</p>
+
+<p>Обратите внимание, что значения из полей {@link
+android.content.res.Configuration} являются целыми, которые соответствуют определенным константам
+из класса {@link android.content.res.Configuration}. Документацию об используемых константах
+для каждого поля см. в соответствующем поле по ссылке {@link
+android.content.res.Configuration}.</p>
+
+<p class="note"><strong>Помните!</strong> При объявлении операции, обрабатывающей изменение
+конфигурации, вы отвечаете за сброс любых элементов, для которых вы предоставили альтернативы. Если вы
+объявили, что операция обрабатывает изменение ориентации, и у вас есть изображения, которые должны быть заменены при переходе между
+альбомной и книжной ориентацией, вы должны переназначить каждый ресурс каждому элементу во время выполнения метода {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}.</p>
+
+<p>Если вам не требуется обновлять приложение на основе этих изменений
+конфигурации, можно вместо этого <em>не</em> реализовывать метод {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}. В этом
+случае все ресурсы, использованные до изменения конфигурации, продолжают использоваться
+, просто не происходит перезапуск операции. Однако ваше приложение обязательно должно быть
+способно выключаться и перезапускаться в предыдущем состоянии, поэтому не следует использовать эту технику
+как способ избежать сохранения состояния во время нормального жизненного цикла операции. Не только потому, что
+есть другие изменения конфигурации, которые приведут к перезапуску приложения, но
+также и потому, что вы должны обрабатывать события, например, когда пользователь покидает приложение, и оно
+закрывается до возвращения в него пользователя.</p>
+
+<p>Более подробную информацию об изменениях конфигурации, которые можно обрабатывать внутри операции, см. в документации <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> и описании
+класса {@link android.content.res.Configuration}.</p>
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/controls.jd b/docs/html-intl/intl/ru/guide/topics/ui/controls.jd
new file mode 100644
index 0000000..62f4c76
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/ui/controls.jd
@@ -0,0 +1,90 @@
+page.title=Элементы управления вводом
+parent.title=Пользовательский интерфейс
+parent.link=index.html
+@jd:body
+
+<div class="figure" style="margin:0">
+  <img src="{@docRoot}images/ui/ui-controls.png" alt="" style="margin:0" />
+</div>
+
+<p>Элементы управления вводом представляют собой интерактивные компоненты пользовательского интерфейса приложения. В Android имеется
+широкий набор элементов управления, которые можно использовать в пользовательском интерфейсе, например, кнопки, текстовые поля, полосы прокрутки,
+флажки, кнопки изменения масштаба, переключатели и многие другие элементы.</p>
+
+<p>Чтобы добавить элемент управления вводом в пользовательский интерфейс, достаточно вставить соответствующий элемент XML в <a href="{@docRoot}guide/topics/ui/declaring-layout.html">XML-файл макета</a>. Ниже представлен пример макета
+с текстовым полем и кнопкой.</p>
+
+<pre style="clear:right">
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="horizontal">
+    &lt;EditText android:id="@+id/edit_message"
+        android:layout_weight="1"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:hint="@string/edit_message" />
+    &lt;Button android:id="@+id/button_send"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/button_send"
+        android:onClick="sendMessage" />
+&lt;/LinearLayout>
+</pre>
+
+<p>Каждый элемент управления вводом поддерживает определенный набор событий ввода, чтобы можно было обрабатывать такие события, как ввод
+пользователем текста или нажатие кнопки.</p>
+
+
+<h2 id="CommonControls">Часто используемые элементы управления</h2>
+<p>Ниже представлен список некоторых часто используемых элементов управления, которые можно использовать в приложении. Чтобы узнать подробнее о каждом элементе управления,
+перейдите по соответствующей ссылке.</p>
+
+<p class="note"><strong>Примечание.</strong> Ниже перечислены далеко не все элементы управления, которые имеются в системе
+Android. Все они имеются в пакете {@link android.widget}. Если в вашем приложении требуется реализовать
+определенный тип элемента управления вводом, вы можете создать собственные <a href="{@docRoot}guide/topics/ui/custom-components.html">настраиваемые компоненты</a>.</p>
+
+<table>
+    <tr>
+        <th scope="col">Тип элемента управления</th>
+        <th scope="col">Описание</th>
+	<th scope="col">Связанные классы</th>
+    </tr>
+    <tr>
+        <td><a href="controls/button.html">Кнопка</a></td>
+        <td>Кнопка, которую пользователь может нажать для выполнения действия.</td>
+	<td>{@link android.widget.Button Button} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/text.html">Текстовое поле</a></td>
+        <td>Редактируемое текстовое поле. Можно воспользоваться виджетом <code>AutoCompleteTextView</code>, чтобы создать виджет для ввода текста с возможностью автозаполнения с помощью подсказок.</td>
+	<td>{@link android.widget.EditText EditText}, {@link android.widget.AutoCompleteTextView}</td>
+    </tr>
+    <tr>
+        <td><a href="controls/checkbox.html">Флажок</a></td>
+        <td>Переключатель, которым можно воспользоваться для включения или отключения функции или компонента. Флажки следует использовать при отображении группы доступных для выбора параметров, которые не являются взаимоисключающими.</td>
+	<td>{@link android.widget.CheckBox CheckBox} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/radiobutton.html">Переключатель</a></td>
+        <td>Этот элемент управления аналогичен флажку, за исключением того, что в группе элементов можно выбрать только один вариант.</td>
+	<td>{@link android.widget.RadioGroup RadioGroup} 
+	<br>{@link android.widget.RadioButton RadioButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/togglebutton.html" style="white-space:nowrap">Кнопка-переключатель</a></td>
+        <td>Кнопка включения/отключения с индикатором.</td>
+	<td>{@link android.widget.ToggleButton ToggleButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/spinner.html">Раскрывающийся список</a></td>
+        <td>Раскрывающийся список параметров, в котором пользователь может выбрать только одно значение.</td>
+	<td>{@link android.widget.Spinner Spinner} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/pickers.html">Элементы выбора</a></td>
+        <td>Элементы диалогового окна для выбора одного значения из набора с помощью кнопок со стрелками вверх и вниз или с помощью жеста пролистывания. Для ввода значений даты (дня, месяца, года) используйте виджет <code>DatePicker</code>, а для ввода значений времени (часов, минут и указания времени до полудня или после [AM/PM]) — виджет <code>TimePicker</code>. Формат этих виджетов выбирается автоматически на основе региональных настроек на устройстве.</td>
+	<td>{@link android.widget.DatePicker}, {@link android.widget.TimePicker}</td>
+    </tr>
+</table>
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/declaring-layout.jd b/docs/html-intl/intl/ru/guide/topics/ui/declaring-layout.jd
new file mode 100644
index 0000000..71428f6
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/ui/declaring-layout.jd
@@ -0,0 +1,492 @@
+page.title=Макеты
+page.tags=view,viewgroup
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Содержание документа</h2>
+<ol>
+  <li><a href="#write">Создание XML</a></li>
+  <li><a href="#load">Загрузка ресурса XML</a></li>
+  <li><a href="#attributes">Атрибуты</a>
+    <ol>
+      <li><a href="#id">Идентификатор</a></li>
+      <li><a href="#layout-params">Параметры макета</a></li>
+    </ol>
+  </li>
+  <li><a href="#Position">Размещение макета</a></li>
+  <li><a href="#SizePaddingMargins">Размер, отступ и поля</a></li>
+  <li><a href="#CommonLayouts">Часто используемые макеты</a></li>
+  <li><a href="#AdapterViews">Создание макетов с помощью адаптера</a>
+    <ol>
+      <li><a href="#FillingTheLayout">Заполнение представления адаптера данными</a></li>
+      <li><a href="#HandlingUserSelections">Обработка нажатий</a></li>
+    </ol>
+  </li>
+</ol>
+
+  <h2>Ключевые классы</h2>
+  <ol>
+    <li>{@link android.view.View}</li>
+    <li>{@link android.view.ViewGroup}</li>
+    <li>{@link android.view.ViewGroup.LayoutParams}</li>
+  </ol>
+
+  <h2>См. также:</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/firstapp/building-ui.html">Создание простого
+пользовательского интерфейса</a></li> </div>
+</div>
+
+<p>Макет определяет визуальную структуру пользовательского интерфейса, например, пользовательского интерфейса <a href="{@docRoot}guide/components/activities.html">операции</a> или <a href="{@docRoot}guide/topics/appwidgets/index.html">виджета приложения</a>.
+Существует два способа объявить макет:</p>
+<ul>
+<li><strong>Объявление элементов пользовательского интерфейса в XML</strong>. В Android имеется удобный справочник XML-элементов
+для классов View и их подклассов, например таких, которые используются для виджетов и макетов.</li>
+<li><strong>Создание экземпляров элементов во время выполнения</strong>. Ваше
+приложение может программным образом создавать объекты View и ViewGroup (а также управлять их свойствами). </li>
+</ul>
+
+<p>Платформа Android предоставляет вам гибкость при использовании любого из этих способов для объявления пользовательского интерфейса приложения и его управления. Например, вы можете объявить в XML макеты по умолчанию, включая элементы экрана, которые будут отображаться в макетах, и их свойства. Затем вы можете добавить в приложение код, который позволяет изменять состояние объектов на экране (включая объявленные в XML) во время выполнения. </p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <ul>
+  <li>В <a href="{@docRoot}tools/sdk/eclipse-adt.html">подключаемом модуле ADT
+для Eclipse</a> предусмотрена функция предварительного просмотра созданного вами файла XML &mdash;
+достаточно открыть файл XML и выбрать вкладку <strong>Layout</strong> (Макет).</li>
+  <li>Для отладки макетов можно воспользоваться инструментом
+<a href="{@docRoot}tools/debugging/debugging-ui.html#hierarchyViewer">Hierarchy Viewer</a>
+&mdash; с его помощью можно просмотреть значения свойств,
+рамки с индикаторами заполнения или полей, а также полностью отрисованные представления
+прямо во время отладки приложения в эмуляторе или на устройстве.</li>
+  <li>С помощью инструмента <a href="{@docRoot}tools/debugging/debugging-ui.html#layoutopt">layoutopt</a>
+можно быстро проанализировать макеты и их иерархии на предмет низкой эффективности или иных проблем.</li>
+</div>
+</div>
+
+<p>Преимущество объявления пользовательского интерфейса в файле XML заключается в том, что таким образом вы можете более эффективно отделить представление своего приложения от кода, который управляет его поведением. Описания пользовательского интерфейса находятся за пределами кода вашего приложения. Это означает, что вы можете изменять или адаптировать интерфейс без необходимости вносить правки в исходный код и повторно компилировать его. Например, можно создать разные файлы XML макета для экранов разных размеров и разных ориентаций экрана, а также для различных языков. Кроме того, объявление макета в XML упрощает визуализацию структуры пользовательского интерфейса, благодаря чему отладка проблем также становится проще. В данной статье мы научим вас объявлять макет в XML. Если вы
+предпочитаете создавать экземпляры объектов View во время выполнения, обратитесь к справочной документации для классов {@link android.view.ViewGroup} и
+{@link android.view.View}.</p>
+
+<p>Как правило, справочник XML-элементов для объявления элементов пользовательского интерфейса точно следует структуре и правилам именования для классов и методов — названия элементов соответствуют названиям классов, а названия атрибутов соответствуют методам. Фактически, соответствие зачастую такое точное, что вы можете с легкостью догадаться, какой атрибут XML соответствует тому или иному методу класса, или какой класс соответствует заданному элементу XML. Однако следует отметить, что не все справочники являются идентичными. В некоторых случаях названия могут несколько отличаться. Например,
+у элемента EditText есть атрибут <code>text</code>, который соответствует методу
+<code>EditText.setText()</code>. </p>
+
+<p class="note"><strong>Совет.</strong> Дополнительные сведения о различных типах макетов представлены в разделе
+<a href="{@docRoot}guide/topics/ui/layout-objects.html">Часто используемые макеты</a>. Также в инструкциях по построению
+<a href="{@docRoot}resources/tutorials/views/index.html">объектов представления Hello </a> изложены сведения о создании различных макетов.</p>
+
+<h2 id="write">Создание XML</h2>
+
+<p>С помощью справочника XML-элементов, который имеется в Android, можно быстро и просто создавать макеты пользовательского интерфейса и содержащиеся в нем элементы, точно так же, как при создании веб-страниц в HTML &mdash; с помощью вложенных элементов. </p>
+
+<p>В каждом файле макета должен быть всего один корневой элемент, в качестве которого должен выступать объект представления (View) или представления группы (ViewGroup). После определения корневого элемента можно приступать к добавлению дополнительных объектов макета или виджетов в качестве дочерних элементов для постепенного формирования иерархии представлений, которая определяет ваш макет. Ниже представлен пример макета XML, в котором используется вертикальный объект {@link android.widget.LinearLayout},
+в котором размещены элементы {@link android.widget.TextView} и {@link android.widget.Button}.</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:orientation="vertical" >
+    &lt;TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="Hello, I am a TextView" />
+    &lt;Button android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Hello, I am a Button" />
+&lt;/LinearLayout>
+</pre>
+
+<p>После объявления макета в файле XML сохраните файл с расширением <code>.xml</code>
+в каталог <code>res/layout/</code> своего проекта Android для последующей компиляции. </p>
+
+<p>Дополнительные сведения о синтаксисе для файла XML макета представлены в документе <a href="{@docRoot}guide/topics/resources/layout-resource.html">Ресурсы макета</a>.</p>
+
+<h2 id="load">Загрузка ресурса XML</h2>
+
+<p>Во время компиляции приложения каждый файл XML макета компилируется в ресурс
+{@link android.view.View}. Вам необходимо загрузить ресурс макета в коде приложения в ходе реализации метода обратного вызова
+{@link android.app.Activity#onCreate(android.os.Bundle) Activity.onCreate()}.
+Для этого вызовите метод
+<code>{@link android.app.Activity#setContentView(int) setContentView()}</code>, передайте в него ссылку на ресурс макета в следующей форме:
+<code>R.layout.<em>layout_file_name</em></code>.
+Например, если макет XML сохранен как файл <code>main_layout.xml</code>, загрузить его
+для вашей операции необходимо следующим образом:</p>
+<pre>
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.main_layout);
+}
+</pre>
+
+<p>Метод обратного вызова <code>onCreate()</code> в вашей операции вызывается платформой Android во время
+запуска операции (см. сведения о жизненных циклах в
+документе
+<a href="{@docRoot}guide/components/activities.html#Lifecycle">Операции</a>).</p>
+
+
+<h2 id="attributes">Атрибуты</h2>
+
+<p>Каждый объект View и ViewGroup поддерживают свои собственные атрибуты XML.
+Некоторые атрибуты характерны только для объекта View (например, объект TextView поддерживает атрибут <code>textSize</code>),
+однако эти атрибуты также наследуются любыми объектами View, которые могут наследовать этот класс.
+Некоторые атрибуты являются общими для всех объектов View, поскольку они наследуются от корневого класса View (такие как атрибут
+<code>id</code>). Любые другие атрибуты рассматриваются как «параметры макета». Такие атрибуты
+описывают определенные ориентации макета для объекта View, которые заданы
+родительским объектом ViewGroup такого объекта.</p>
+
+<h3 id="id">Идентификатор</h3>
+
+<p>У любого объекта View может быть связанный с ним целочисленный идентификатор, который служит для обозначения уникальности объекта View в иерархии.
+Во время компиляции приложения этот идентификатор используется как целое число, однако идентификатор
+обычно назначается в файле XML макета в виде строки в атрибуте <code>id</code>.
+Этот атрибут XML является общим для всех объектов View
+(определенных классом {@link android.view.View}), который вы будете использовать довольно часто.
+Синтаксис для идентификатора внутри тега XML следующий:</p>
+<pre>android:id="&#64;+id/my_button"</pre>
+
+<p>Символ @ в начале строки указывает на то, что обработчику XML следует выполнить синтаксический анализ остальной части
+идентификатора, выполнить ее синтаксический анализ и определить ее в качестве ресурса идентификатора. Символ плюса (+) обозначает, что это имя нового ресурса,
+который необходимо создать и добавить к нашим ресурсам (в файле <code>R.java</code>). В Android существует ряд других ресурсов
+идентификатора. При ссылке на идентификатор ресурса Android вам не нужно указывать символ плюса,
+однако необходимо добавить пространство имен пакета <code>android</code>, как указано ниже:</p>
+<pre>android:id="&#64;android:id/empty"</pre>
+<p>После добавления пространства имен пакета <code>android</code> можно сослаться на идентификатор из класса ресурсов<code>android.R</code>,
+а не из локального класса ресурсов.</p>
+
+<p>Чтобы создать представления и сослаться на них из приложения, обычно следует выполнить указанные ниже действия.</p>
+<ol>
+  <li>Определите представление или виджет в файле макета и присвойте ему уникальный идентификатор:
+<pre>
+&lt;Button android:id="&#64;+id/my_button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="&#64;string/my_button_text"/>
+</pre>
+  </li>
+  <li>Затем создайте экземпляр объекта представления и выполните его захват из макета
+(обычно с помощью метода <code>{@link android.app.Activity#onCreate(Bundle) onCreate()}</code>):
+<pre>
+Button myButton = (Button) findViewById(R.id.my_button);
+</pre>
+  </li>
+</ol>
+<p>Определение идентификаторов для объектов представления имеет важное значение при создании объекта {@link android.widget.RelativeLayout}.
+В относительном макете универсальные идентификаторы используются для
+расположения представлений относительно друг друга.</p>
+<p>Идентификатор не обязательно должен быть уникальным в рамках всей иерархии,
+а только в той ее части, где вы выполняете поиск (зачастую это может быть как раз вся иерархия, поэтому
+при возможности идентификаторы должны быть полностью уникальными).</p>
+
+
+<h3 id="layout-params">Параметры макета</h3>
+
+<p>Атрибуты макета XML, которые называются <code>layout_<em>something</em></code>, определяют
+параметры макета для объекта представления, подходящие для класса ViewGroup, в котором он находится.</p>
+
+<p>Каждый класс ViewGroup реализует вложенный класс, который наследует {@link
+android.view.ViewGroup.LayoutParams}. В этом подклассе
+имеются типы свойств, которые определяют размер и положение каждого дочернего представления,
+подходящие для его группы. На рисунке 1 показано, что родительская группа
+представлений определяет параметры макета для каждого дочернего представления (включая дочернюю группу представлений).</p>
+
+<img src="{@docRoot}images/layoutparams.png" alt="" />
+<p class="img-caption"><strong>Рисунок 1.</strong> Графическое представление иерархии представления с параметрами
+макета каждого представления.</p>
+
+<p>Обратите внимание, что подкласс LayoutParams имеет собственный синтаксис для задания
+значений. Каждый дочерний элемент должен определять LayoutParams, которые подходят для его родительского элемента,
+тогда как он сам может определять другие LayoutParams для своих дочерних элементов. </p>
+
+<p>Все группы представлений включают в себя параметры ширины и высоты (<code>layout_width</code> и
+<code>layout_height</code>), и каждое представление должно определять их. Многие
+LayoutParams также включают дополнительные параметры полей и границ. <p>
+
+<p>Для параметров ширины и высоты можно указать точные значения, хотя, возможно,
+вам не захочется делать это часто. Обычно для задания значений ширины и высоты используется одна из следующих
+констант: </p>
+
+<ul>
+  <li><var>wrap_content</var> — размер представления задается по размерам
+его содержимого;</li>
+  <li><var>match_parent</var> (которая до API уровня 8 <var>называлась fill_parent</var> )
+ — размер представления определяется ограничениями, задаваемыми его родительской группой представлений.</li>
+</ul>
+
+<p>Как правило, не рекомендуется задавать абсолютные значения ширины и высоты макета
+(например, в пикселах). Вместо этого используйте относительные единицы измерения, такие как
+пикселы, не зависящие от разрешения экрана (<var>dp</var>), <var>wrap_content</var>или
+<var>match_parent</var>Это гарантирует одинаковое отображение 
+вашего приложения на устройствах с экранами разных размеров.
+Принятые типы измерения определены в 
+документе
+<a href="{@docRoot}guide/topics/resources/available-resources.html#dimension">Доступные ресурсы</a>.</p>
+
+
+<h2 id="Position">Размещение макета</h2>
+   <p>
+   Представление имеет прямоугольную форму. Расположение представления
+определяется его координатами <em>слева</em> и <em>сверху</em>, а его размеры
+— параметрами ширины и высоты. Расположение измеряется
+в пикселах.
+   </p>
+
+   <p>
+   Расположение представления можно получить путем вызова методов
+{@link android.view.View#getLeft()} и {@link android.view.View#getTop()}. Первый возвращает координату слева (по оси X)
+для прямоугольника представления. Второй возвращает верхнюю координату
+ (по оси Y) для прямоугольника представления. Оба этих метода
+возвращают расположение представления относительно его родительского элемента. Например,
+когда метод <code>getLeft()</code> возвращает 20, это означает, что представление находится на расстоянии 20 пикселов
+от левого края его непосредственного родительского элемента.
+   </p>
+
+   <p>
+   Кроме того, имеется несколько удобных методов
+({@link android.view.View#getRight()} и {@link android.view.View#getBottom()}), которые позволяют избежать лишних вычислений.
+   Эти методы возвращают координаты правого и нижнего краев
+прямоугольника представления. Например, вызов метода {@link android.view.View#getRight()}
+аналогичен следующему вычислению: <code>getLeft() + getWidth()</code>.
+   </p>
+
+
+<h2 id="SizePaddingMargins">Размер, отступ и поля</h2>
+   <p>
+   Размер представления выражается его шириной и высотой. Фактически, представление
+обладает двумя парами значений «ширина-высота».
+   </p>
+
+   <p>
+   Первая пара — это <em>измеренная ширина</em> и
+<em>измеренная высота</em>. Эти размеры определяют размер представления
+в границах своего родительского элемента. Измеренные
+размеры можно получить, вызвав методы {@link android.view.View#getMeasuredWidth()}
+и{@link android.view.View#getMeasuredHeight()}.
+   </p>
+
+   <p>
+   Вторая пара значений — это просто <em>ширина</em> и <em>высота</em> (иногда они называются
+<em>чертежная ширина</em> и <em>чертежная высота</em>). Эти размеры
+определяют фактический размер представления на экране после разметки во время их
+отрисовки. Эти значения могут отличаться от
+измеренных ширины и высоты, хотя это и не обязательно. Значения ширины и высоты можно получить, вызвав методы
+{@link android.view.View#getWidth()} и {@link android.view.View#getHeight()}.
+   </p>
+
+   <p>
+   При измерении своих размеров представление учитывает заполнение. Отступ
+выражается в пикселах для левой, верхней, правой и нижней частей представления.
+   Отступ можно использовать для смещения содержимого представления на определенное количество
+пикселов. Например, значение отступа слева, равное 2, приведет к тому, что содержимое представления будет смещено
+на 2 пиксела вправо от левого края представления. Для задания отступов можно использовать метод
+{@link android.view.View#setPadding(int, int, int, int)}. Чтобы запросить отступ, используются методы
+{@link android.view.View#getPaddingLeft()}, {@link android.view.View#getPaddingTop()},
+{@link android.view.View#getPaddingRight()} и {@link android.view.View#getPaddingBottom()}.
+   </p>
+
+   <p>
+   Даже если представление может определить отступ, в нем отсутствует поддержка
+полей. Такая возможность имеется у группы представлений. Дополнительные сведения представлены в справке по объектам
+{@link android.view.ViewGroup} и
+{@link android.view.ViewGroup.MarginLayoutParams}.
+   </p>
+
+   <p>Дополнительные сведения о размерах представлены в разделе
+<a href="{@docRoot}guide/topics/resources/more-resources.html#Dimension">Значения размеров</a>.
+   </p>
+
+
+
+
+
+
+<style type="text/css">
+div.layout {
+  float:left;
+  width:200px;
+  margin:0 0 20px 20px;
+}
+div.layout.first {
+  margin-left:0;
+  clear:left;
+}
+</style>
+
+
+
+
+<h2 id="CommonLayouts">Часто используемые макеты</h2>
+
+<p>В каждом подклассе класса {@link android.view.ViewGroup} имеется уникальный способ отображения
+вложенных в него представлений. Ниже представлены некоторые из наиболее часто используемых типов макетов, которые входят в состав платформы
+Android.</p>
+
+<p class="note"><strong>Примечание.</strong> Несмотря на то, что для формирования пользовательского интерфейса один
+макет может содержать один или несколько вложенных макетов, рекомендуется использовать как можно более простую 
+иерархию макетов. Чем меньше в макете вложенных элементов, тем быстрее выполняется его отрисовка (горизонтальная иерархия
+представлений намного лучше вертикальной).</p>
+
+<!--
+<h2 id="framelayout">FrameLayout</h2>
+<p>{@link android.widget.FrameLayout FrameLayout} is the simplest type of layout
+object. It's basically a blank space on your screen that you can
+later fill with a single object &mdash; for example, a picture that you'll swap in and out.
+All child elements of the FrameLayout are pinned to the top left corner of the screen; you cannot
+specify a different location for a child view. Subsequent child views will simply be drawn over
+previous ones,
+partially or totally obscuring them (unless the newer object is transparent).
+</p>
+-->
+
+
+<div class="layout first">
+  <h4><a href="layout/linear.html">Линейный макет</a></h4>
+  <a href="layout/linear.html"><img src="{@docRoot}images/ui/linearlayout-small.png" alt="" /></a>
+  <p>Макет, в котором дочерние элементы представлены в горизонтальных или вертикальных столбцах. Если длина окна больше длины экрана, в нем
+создается полоса прокрутки.</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/relative.html">Относительный макет</a></h4>
+  <a href="layout/relative.html"><img src="{@docRoot}images/ui/relativelayout-small.png" alt="" /></a>
+  <p>В этом макете можно задавать расположение дочерних объектов относительно друг друга (дочерний элемент А находится
+слева от дочернего элемента Б) или относительно родительского объекта (выравнивание относительно верхнего края родительского элемента).</p>
+</div>
+
+<div class="layout">
+  <h4><a href="{@docRoot}guide/webapps/webview.html">Представление веб-страницы</a></h4>
+  <a href="{@docRoot}guide/webapps/webview.html"><img src="{@docRoot}images/ui/webview-small.png" alt="" /></a>
+  <p>Отображение веб-страниц.</p>
+</div>
+
+
+
+
+<h2 id="AdapterViews" style="clear:left">Создание макетов с помощью адаптера</h2>
+
+<p>Если содержимое макета является динамическим или не определено заранее, можно использовать макет, который создает подклассы класса
+{@link android.widget.AdapterView} для заполнения макета представлениями во время выполнения. Подкласс класса
+{@link android.widget.AdapterView} использует {@link android.widget.Adapter} для
+привязки данных к своему макету. {@link android.widget.Adapter} выступает в качестве посредника между источником
+данных и макетом {@link android.widget.AdapterView} &mdash; {@link android.widget.Adapter}
+извлекает данные (из источника, например, массива или запроса к базе данных) и преобразует каждую запись
+в представление, которое можно добавить в макет {@link android.widget.AdapterView}.</p>
+
+<p>Часто используемые макеты, для создания которых можно использовать адаптер, включают в себя следующие:</p>
+
+<div class="layout first">
+  <h4><a href="layout/listview.html">Представление в виде списка</a></h4>
+  <a href="layout/listview.html"><img src="{@docRoot}images/ui/listview-small.png" alt="" /></a>
+  <p>Отображение списка в один столбец с возможностью прокрутки.</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/gridview.html">Представление в виде сетки</a></h4>
+  <a href="layout/gridview.html"><img src="{@docRoot}images/ui/gridview-small.png" alt="" /></a>
+  <p>Отображение сетки из столбцов и строк с возможностью прокрутки.</p>
+</div>
+
+
+
+<h3 id="FillingTheLayout" style="clear:left">Заполнение представления адаптера данными</h3>
+
+<p>Чтобы заполнить адаптер {@link android.widget.AdapterView}, такой как {@link android.widget.ListView} или
+{@link android.widget.GridView}, свяжите экземпляр {@link android.widget.AdapterView} с приложением
+{@link android.widget.Adapter}, которое извлекает данные из внешнего источника и создает объект {@link
+android.view.View}, который представляет каждую запись данных.</p>
+
+<p>В Android предусмотрено несколько подклассов адаптера {@link android.widget.Adapter}, которые полезно использовать для
+извлечения данных различных видов и создания представлений для {@link android.widget.AdapterView}. Вот
+два наиболее часто используемых адаптера:</p>
+
+<dl>
+  <dt>{@link android.widget.ArrayAdapter}</dt>
+    <dd>Этот адаптер используется в случае, когда в качестве источника данных выступает массив. По умолчанию {@link
+android.widget.ArrayAdapter} создает представление для каждого элемента массива путем вызова метода {@link
+java.lang.Object#toString()} для каждого элемента и помещения его содержимого в объект {@link
+android.widget.TextView}.
+      <p>Например, если имеется массив строк, которые необходимо отобразить в объекте {@link
+android.widget.ListView}, запустите новый {@link android.widget.ArrayAdapter} с помощью
+конструктора, чтобы указать макет для каждой строки и массива строк:</p>
+<pre>
+ArrayAdapter&lt;String> adapter = new ArrayAdapter&lt;String>(this,
+        android.R.layout.simple_list_item_1, myStringArray);
+</pre>
+<p>Аргументы для такого конструктора следующие:</p>
+<ul>
+  <li>ваше приложение {@link android.content.Context};</li>
+  <li>макет, в котором содержится объект {@link android.widget.TextView} для каждой строки в массиве;</li>
+  <li>массив строк.</li>
+</ul>
+<p>Затем достаточно вызвать метод
+{@link android.widget.ListView#setAdapter setAdapter()} для своего объекта {@link android.widget.ListView}:</p>
+<pre>
+ListView listView = (ListView) findViewById(R.id.listview);
+listView.setAdapter(adapter);
+</pre>
+
+      <p>Чтобы настроить внешний вид каждого элемента, можно переопределить метод {@link
+java.lang.Object#toString()} для объектов в массиве. Либо можно создать представление для каждого элемента,
+который отличается от{@link android.widget.TextView} (например, если для каждого элемента массива требуется объект
+{@link android.widget.ImageView}), наследовать класс {@link
+android.widget.ArrayAdapter} и переопределить метод {@link android.widget.ArrayAdapter#getView
+getView()}, чтобы возвратить требуемый тип представления для каждого элемента.</p>
+
+</dd>
+
+  <dt>{@link android.widget.SimpleCursorAdapter}</dt>
+    <dd>Этот адаптер используется в случае, когда в качестве источника данных выступает объект {@link android.database.Cursor}. Если
+используется {@link android.widget.SimpleCursorAdapter}, необходимо указать макет, который будет
+использоваться для каждой строки в объекте {@link android.database.Cursor}, а также в какие представления макета необходимо вставить столбцы в объекте {@link android.database.Cursor}
+. Например, если необходимо создать список
+имен людей с их номерами телефонов, можно выполнить запрос, который возвращает объект {@link
+android.database.Cursor}, содержащий строку для каждого человека и столбцы для имен и номеров
+телефонов. Затем создается массив строк с указанием столбцов из объекта {@link
+android.database.Cursor}, которые необходимо поместить в макет для каждого результата, а также массив целых чисел, в котором указаны
+соответствующие представления для вставки каждого столбца:</p>
+<pre>
+String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME,
+                        ContactsContract.CommonDataKinds.Phone.NUMBER};
+int[] toViews = {R.id.display_name, R.id.phone_number};
+</pre>
+<p>При создании экземпляра объекта {@link android.widget.SimpleCursorAdapter} передайте в него макет,
+который будет использоваться для каждого результата, объект {@link android.database.Cursor} с результатами и два следующих массива:</p>
+<pre>
+SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
+        R.layout.person_name_and_number, cursor, fromColumns, toViews, 0);
+ListView listView = getListView();
+listView.setAdapter(adapter);
+</pre>
+<p>Затем {@link android.widget.SimpleCursorAdapter} создает представление для каждой строки в объекте
+{@link android.database.Cursor} с помощью предоставленного макета путем вставки каждого элемента {@code
+fromColumns} в соответствующее представление {@code toViews}.</p>.</dd>
+</dl>
+
+
+<p>Если в течение жизненного цикла вашего приложения вы вносите изменения в соответствующие данные, чтение которых
+выполняет адаптер, вам следует вызвать метод {@link android.widget.ArrayAdapter#notifyDataSetChanged()}. Это позволит
+уведомить связанное представление о том, что данные были изменены и ему требуется выполнить обновление.</p>
+
+
+
+<h3 id="HandlingUserSelections">Обработка нажатий</h3>
+
+<p>Чтобы организовать реагирование на нажатие каждого элемента в {@link android.widget.AdapterView},
+реализуйте интерфейс {@link android.widget.AdapterView.OnItemClickListener}. Например:</p>
+
+<pre>
+// Create a message handling object as an anonymous class.
+private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
+    public void onItemClick(AdapterView parent, View v, int position, long id) {
+        // Do something in response to the click
+    }
+};
+
+listView.setOnItemClickListener(mMessageClickedHandler);
+</pre>
+
+
+
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/ru/guide/topics/ui/dialogs.jd
new file mode 100644
index 0000000..515ecc6
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/ui/dialogs.jd
@@ -0,0 +1,798 @@
+page.title=Диалоговые окна
+page.tags=alertdialog,dialogfragment
+
+@jd:body
+
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>Содержание документа</h2>
+<ol>
+  <li><a href="#DialogFragment">Создание фрагмента диалогового окна</a></li>
+  <li><a href="#AlertDialog">Создание диалогового окна оповещения</a>
+    <ol>
+      <li><a href="#AddingButtons">Добавление кнопок</a></li>
+      <li><a href="#AddingAList">Добавление списка</a></li>
+      <li><a href="#CustomLayout">Создание пользовательского макета</a></li>
+    </ol>
+  </li>
+  <li><a href="#PassingEvents">Передача событий обратно в основное приложение</a></li>
+  <li><a href="#ShowingADialog">Отображение диалогового окна</a></li>
+  <li><a href="#FullscreenDialog">Отображение диалогового окна в полноэкранном режиме или в виде встроенного фрагмента</a>
+    <ol>
+      <li><a href="#ActivityAsDialog">Отображение операции в качестве диалога на больших экранах</a></li>
+    </ol>
+  </li>
+  <li><a href="#DismissingADialog">Закрытие диалогового окна</a></li>
+</ol>
+
+    <h2>Ключевые классы</h2>
+    <ol>
+      <li>{@link android.app.DialogFragment}</li>
+      <li>{@link android.app.AlertDialog}</li>
+    </ol>
+    
+    <h2>См. также:</h2>
+    <ol>
+      <li><a href="{@docRoot}design/building-blocks/dialogs.html">Руководство по дизайну диалоговых окон</a></li>
+      <li><a href="{@docRoot}guide/topics/ui/controls/pickers.html">Элементы выбора</a> (диалоговые окна выбора даты/времени)</li>
+    </ol>
+  </div>
+</div>
+
+<p>Диалоговое окно — это небольшое окно, которое предлагает пользователю
+принять решение или ввести дополнительную информацию. Диалоговое окно не заполняет весь экран и,
+как правило, используется при модальных событиях, для продолжения которых требуется действие пользователя.</p>
+
+<div class="note design">
+<p><strong>Дизайн диалогового окна</strong></p>
+  <p>Подробную информацию о дизайне диалоговых окон, включая рекомендации
+  для вашего языка см. в <a href="{@docRoot}design/building-blocks/dialogs.html">Руководстве</a> по дизайну диалоговых окон.</p>
+</div>
+
+<img src="{@docRoot}images/ui/dialogs.png" />
+
+<p>Класс {@link android.app.Dialog} — это базовый класс для создания диалоговых окон, но
+реализовывать напрямую класс {@link android.app.Dialog} не рекомендуется.
+Вместо этого следует использовать один из следующих подклассов:</p>
+<dl>
+  <dt>{@link android.app.AlertDialog}</dt>
+  <dd>Диалоговое окно, в котором могут отображаться заголовок, кнопки вплоть до трех штук, список
+    из выбираемых элементов либо пользовательский макет.</dd>
+  <dt>{@link android.app.DatePickerDialog} или {@link android.app.TimePickerDialog}</dt>
+  <dd>Диалоговое окно с предопределенным пользовательским интерфейсом, с помощью которого пользователь указывает значения даты или времени.</dd>
+</dl>
+
+<div class="sidebox">
+<h2>Следует избегать ProgressDialog</h2>
+<p>В Android имеется другой класс диалоговых окон под названием
+{@link android.app.ProgressDialog}, которые отображают диалоговое окно с индикатором выполнения процесса. Тем не менее, если
+необходимо отобразить прогресс загрузки или неопределенный процес, рекомендуется следовать
+инструкциям по дизайну <a href="{@docRoot}design/building-blocks/progress.html">Выполнение &amp;
+Операции</a>, чтобы использовать {@link android.widget.ProgressBar} в вашем макете.</p>
+</div>
+
+<p>Эти классы определяют стиль и структуру вашего диалогового окна, однако следует
+использовать{@link android.support.v4.app.DialogFragment} в качестве контейнера вашего диалогового окна.
+Класс {@link android.support.v4.app.DialogFragment} предоставляет все функции,
+необходимые для создания диалогового окна и управления его внешним видом, вместо вызова методов
+к объекту{@link android.app.Dialog}.</p>
+
+<p>Использование {@link android.support.v4.app.DialogFragment} для управления диалоговым окном
+обеспечивает корректную обработку событий жизненного цикла
+, таких как нажатие пользователем кнопки <em>Назад</em> или поворот экрана. С помощью класса {@link
+android.support.v4.app.DialogFragment} также происходит повторное использование пользовательского интерфейса диалогового окна в качестве
+встраиваемого компонента в пользовательский интерфейс более высокого уровня — подобно традиционному классу {@link
+android.support.v4.app.Fragment} (например, когда необходимо различное отображение пользовательского интерфеса диалогового окна
+на больших и маленьких экранах).</p>
+
+<p>В следующих разделах руководства описано использование {@link
+android.support.v4.app.DialogFragment} в сочетании с объектом {@link android.app.AlertDialog}
+. Если необходимо создать элемент выбора даты или времени, обратитесь к руководству
+<a href="{@docRoot}guide/topics/ui/controls/pickers.html">Элементы выбора</a>.</p>
+
+<p class="note"><strong>Примечание:</strong>
+Поскольку класс {@link android.app.DialogFragment} изначально включен в
+Android 3.0 (уровень API 11), в настоящем документе описывается использование класса {@link
+android.support.v4.app.DialogFragment}, предоставляемого в <a href="{@docRoot}tools/support-library/index.html">Библиотеке поддержки</a>. После добавления этой библиотеки
+в приложение появится возможность использовать{@link android.support.v4.app.DialogFragment} и множество других
+API на устройствах, работающих на Android 1.6 и выше. Если минимальная версия вашего приложения поддерживает
+уровень API 11 и выше, можно использовать фреймворк-версию {@link
+android.app.DialogFragment}, но следует иметь в виду, что данный документ ссылается на API
+ со вспомогательными библиотеками. При использовании вспомогательной библиотеки
+необходимо импортировать класс <code>android.support.v4.app.DialogFragment</code>
+, а <em>не</em> <code>android.app.DialogFragment</code>.</p>
+
+
+<h2 id="DialogFragment">Создание фрагмента диалогового окна</h2>
+
+<p>Вы можете реализовать широкие возможности дизайна диалоговых окон, включая создание
+пользовательских макетов, а также пути, описанные в руководстве по дизайну <a href="{@docRoot}design/building-blocks/dialogs.html">Диалоговых окон</a>
+&mdash;путем расширения
+{@link android.support.v4.app.DialogFragment} и создания{@link android.app.AlertDialog}
+в методе обратного вызова {@link android.support.v4.app.DialogFragment#onCreateDialog
+onCreateDialog()}.</p>
+
+<p>Например, имеется базовый класс {@link android.app.AlertDialog}, управляемый в рамках
+{@link android.support.v4.app.DialogFragment}:</p>
+
+<pre>
+public class FireMissilesDialogFragment extends DialogFragment {
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Use the Builder class for convenient dialog construction
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // FIRE ZE MISSILES!
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // User cancelled the dialog
+                   }
+               });
+        // Create the AlertDialog object and return it
+        return builder.create();
+    }
+}
+</pre>
+
+<div class="figure" style="width:290px;margin:0 0 0 20px">
+<img src="{@docRoot}images/ui/dialog_buttons.png" alt="" />
+<p class="img-caption"><strong>Рисунок 1.</strong>
+Диалоговое окно с сообщением и двумя кнопками действия.</p>
+</div>
+
+<p>Итак, после создания экземпляра этого класса и вызова {@link
+android.support.v4.app.DialogFragment#show show()} к этому объекту появляется диалоговое окно,
+показанное на рисунке 1.</p>
+
+<p>В следующем разделе предоставлена более подробная информация об использовании API {@link android.app.AlertDialog.Builder}
+для создания диалоговых окон.</p>
+
+<p>В зависимости от сложности создаваемого диалогового окна возможно реализовать множество других методов
+обратного вызова в {@link android.support.v4.app.DialogFragment}, включая все базовые
+<a href="{@docRoot}guide/components/fragments.html#Lifecycle">методы жизненных циклов фрагментов</a>.
+
+
+
+
+
+<h2 id="AlertDialog">Создание диалогового окна оповещения</h2>
+
+
+<p>С помощью класса {@link android.app.AlertDialog} создается многообразие решений касательно внешнего вида диалогового окна
+, и зачастую этого класса вполне достаточно.
+Как показано на рис. 2, диалоговое окно состоит из трех областей:</p>
+
+<div class="figure" style="width:311px;margin-top:0">
+<img src="{@docRoot}images/ui/dialogs_regions.png" alt="" style="margin-bottom:0" />
+<p class="img-caption"><strong>Рисунок 2.</strong> Макет диалогового окна.</p>
+</div>
+
+<ol>
+<li><b>Заголовок</b>
+  <p>Это дополнительная возможность, которая используется только в случае, если область содержимого
+  занята подробным сообщением, списком или пользовательским макетом. Если необходимо отобразить
+  простое сообщение или вопрос (как, например, в диалоге на рисунке 1), заголовок не нужен.</li>
+<li><b>Область содержимого</b>
+  <p>Здесь может отображаться сообщение, список или другой пользовательский макет.</p></li>
+<li><b>Кнопки действия</b>
+  <p>В диалоговом окне не должно содержаться более трех кнопок действия.</p></li>
+</ol>
+
+<p>Класс {@link android.app.AlertDialog.Builder}
+предоставляет API, с помощью которых можно создавать {@link android.app.AlertDialog}
+с этими видами содержимого, включая пользовательский макет.</p>
+
+<p>Создание {@link android.app.AlertDialog}:</p>
+
+<pre>
+<b>// 1. Instantiate an {@link android.app.AlertDialog.Builder} with its constructor</b>
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+
+<b>// 2. Chain together various setter methods to set the dialog characteristics</b>
+builder.setMessage(R.string.dialog_message)
+       .setTitle(R.string.dialog_title);
+
+<b>// 3. Get the {@link android.app.AlertDialog} from {@link android.app.AlertDialog.Builder#create()}</b>
+AlertDialog dialog = builder.create();
+</pre>
+
+<p>В следующих главах показано, как определять различные атрибуты диалоговых окон с помощью класса
+{@link android.app.AlertDialog.Builder}.</p>
+
+
+
+
+<h3 id="AddingButtons">Добавление кнопок</h3>
+
+<p>Для добавления кнопок, изображенных на рисунке 2,
+вызывайте методы {@link android.app.AlertDialog.Builder#setPositiveButton setPositiveButton()} и
+{@link android.app.AlertDialog.Builder#setNegativeButton setNegativeButton()}:</p>
+
+<pre style="clear:right">
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+// Add the buttons
+builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User clicked OK button
+           }
+       });
+builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User cancelled the dialog
+           }
+       });
+// Set other dialog properties
+...
+
+// Create the AlertDialog
+AlertDialog dialog = builder.create();
+</pre>
+
+<p>Методы <code>set...Button()</code> предполагают заголовок для кнопки (реализуемый
+через <a href="{@docRoot}guide/topics/resources/string-resource.html">строковый ресурс</a>) и 
+{@link android.content.DialogInterface.OnClickListener}, который определяет действие, 
+следующее за нажатием кнопки пользователем.</p>
+
+<p>Реализована возможность добавлять три различных вида кнопок действий:</p>
+<dl>
+  <dt>Положительные</dt>
+  <dd>Используются для подтверждения и продолжения дейстия (кнопка «ОК»).</dd>
+  <dt>Отрицательные</dt>
+  <dd>Используются для отмены действия.</dd>
+  <dt>Нейтральные</dt>
+  <dd>Используются в случаях, когда пользователь может не желать продолжить действие,
+  но при этом необязательно хочет его отменить. Появляется между положительными и отрицательнымиI
+  кнопками. Примером такого действия может быть «Напомнить позже».</dd> 
+</dl>
+
+<p>Можно добавлять только одну кнопку каждого вида в {@link
+android.app.AlertDialog}. Это означает, что нельзя использовать более одной «положительной» кнопки.</p>
+
+
+
+<div class="figure" style="width:290px;margin:0 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_list.png" alt="" />
+<p class="img-caption"><strong>Рисунок 3.</strong>
+Диалоговое окно с заголовком и списком.</p>
+</div>
+
+<h3 id="AddingAList">Добавление списка</h3>
+
+<p>В API {@link android.app.AlertDialog} реализована возможность использования трех видов списков:</p>
+<ul>
+<li>Традиционный список с выбором одного варианта</li>
+<li>Интерактивный список с выбором одного варианта (переключатели)</li>
+<li>Интерактивный список с выбором нескольких вариантов (флажки)</li>
+</ul>
+
+<p>Для создания списка с выбором одного варианта, как на рисунке 3, 
+используйте метод{@link android.app.AlertDialog.Builder#setItems setItems()}:</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    builder.setTitle(R.string.pick_color)
+           .setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int which) {
+               // The 'which' argument contains the index position
+               // of the selected item
+           }
+    });
+    return builder.create();
+}
+</pre>
+
+<p>Поскольку список отображается в области содержимого диалогового окна, 
+диалоговое окно не может показать одновременно сообщение и список, поэтому необходимо задать заголовок
+диалогового окна с помощью {@link android.app.AlertDialog.Builder#setTitle setTitle()}. 
+Для указания элементов списка необходимо вызвать {@link
+android.app.AlertDialog.Builder#setItems setItems()}, передающий указатель.
+В качестве другого варианта можно указать список с помощью {@link
+android.app.AlertDialog.Builder#setAdapter setAdapter()}. Наполнение списка
+динамическими данными (например, из базы данных) происходит с помощью {@link android.widget.ListAdapter}.</p>
+
+<p>Если вы предпочтете реализовать список с помощью {@link android.widget.ListAdapter},
+рекомендуется использовать {@link android.support.v4.content.Loader}, чтобы содержимое загружалось
+асинхронно. Подробно этот процесс описан далее в руководстве по
+<a href="{@docRoot}guide/topics/ui/declaring-layout.html#AdapterViews">Созданию макетов
+с помощью адаптера</a> и <a href="{@docRoot}guide/components/loaders.html">загрузчиков</a>
+.</p>
+
+<p class="note"><strong>Примечание:</strong> По умолчанию нажатие по элементу списка отменяет диалоговое окно,
+за исключением случаев, когда используется один из следующих интерактивных списков.</p>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_checkboxes.png" />
+<p class="img-caption"><strong>Рисунок 4.</strong>
+Список с несколькими вариантами ответов.</p>
+</div>
+
+
+<h4 id="Checkboxes">Добавление интерактивного списка с одним или несколькими вариантами ответов</h4>
+
+<p>Для добавления списка с несколькими вариантами ответов (флажки) или
+списка с одним вариантом ответа (переключатели) используйте методы
+{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} или 
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()} соответственно.</p>
+
+<p>Например, таким образом можно создать список с несколькими вариантами ответов, как на
+рисунке 4, который сохраняет выбранные
+элементы в {@link java.util.ArrayList}:</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    mSelectedItems = new ArrayList();  // Where we track the selected items
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Set the dialog title
+    builder.setTitle(R.string.pick_toppings)
+    // Specify the list array, the items to be selected by default (null for none),
+    // and the listener through which to receive callbacks when items are selected
+           .setMultiChoiceItems(R.array.toppings, null,
+                      new DialogInterface.OnMultiChoiceClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int which,
+                       boolean isChecked) {
+                   if (isChecked) {
+                       // If the user checked the item, add it to the selected items
+                       mSelectedItems.add(which);
+                   } else if (mSelectedItems.contains(which)) {
+                       // Else, if the item is already in the array, remove it 
+                       mSelectedItems.remove(Integer.valueOf(which));
+                   }
+               }
+           })
+    // Set the action buttons
+           .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // User clicked OK, so save the mSelectedItems results somewhere
+                   // or return them to the component that opened the dialog
+                   ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   ...
+               }
+           });
+
+    return builder.create();
+}
+</pre>
+
+<p>Несмотря на то, что и традиционный список, и список с переключателями 
+предполагают действие по выбору одного элемента, вам необходимо использовать {@link
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()}, чтобы сохранить выбор пользователя.
+Это значит, что при повторном открытии диалогового окна будет отображаться текущий выбор пользователя,
+а затем создается список с переключателями.</p>
+
+
+
+
+
+<h3 id="CustomLayout">Создание пользовательского макета</h3>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_custom.png" alt="" />
+<p class="img-caption"><strong>Рисунок 5</strong>. Пользовательский макет диалогового окна.</p>
+</div>
+
+<p>Если в диалоговом окне необходим пользовательский макет, нужно создать макет и добавить его в
+{@link android.app.AlertDialog} путем вызова {@link
+android.app.AlertDialog.Builder#setView setView()} в объекте {@link
+android.app.AlertDialog.Builder}.</p>
+
+<p>По умолчанию пользовательский мает заполняет окно диалога, при это все равно можно
+использовать методы {@link android.app.AlertDialog.Builder} для добавления кнопок и заголовка.</p>
+
+<p>В качестве примера на рисунке 5 приведен файл макета для диалогового окна.</p>
+
+<p style="clear:right" class="code-caption">res/layout/dialog_signin.xml</p>
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+    &lt;ImageView
+        android:src="@drawable/header_logo"
+        android:layout_width="match_parent"
+        android:layout_height="64dp"
+        android:scaleType="center"
+        android:background="#FFFFBB33"
+        android:contentDescription="@string/app_name" />
+    &lt;EditText
+        android:id="@+id/username"
+        android:inputType="textEmailAddress"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="16dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="4dp"
+        android:hint="@string/username" />
+    &lt;EditText
+        android:id="@+id/password"
+        android:inputType="textPassword"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="4dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="16dp"
+        android:fontFamily="sans-serif"
+        android:hint="@string/password"/>
+&lt;/LinearLayout>
+</pre>
+
+<p class="note"><strong>Совет.</strong> По умолчанию при настройке элемента {@link android.widget.EditText}
+ для типа ввода {@code "textPassword"} используется семейство шрифтов фиксированной ширины, поэтому
+необходимо изменить семейство шрифтов на{@code "sans-serif"}, чтобы в обоих текстовых полях использовались
+одинаковые стили шрифта.</p>
+
+<p>Для применения макета в вашем {@link android.support.v4.app.DialogFragment}
+вам понадобится {@link android.view.LayoutInflater} с 
+{@link android.app.Activity#getLayoutInflater()} и вызов
+{@link android.view.LayoutInflater#inflate inflate()}, где первым параметром будет являться
+ID ресурса макета, а вторым параметром — исходный вид макета.
+Затем можно вызвать{@link android.app.AlertDialog#setView setView()}
+для размещения макета в диалоговом окне.</p>
+
+<pre>
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Get the layout inflater
+    LayoutInflater inflater = getActivity().getLayoutInflater();
+
+    // Inflate and set the layout for the dialog
+    // Pass null as the parent view because its going in the dialog layout
+    builder.setView(inflater.inflate(R.layout.dialog_signin, null))
+    // Add action buttons
+           .setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // sign in the user ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int id) {
+                   LoginDialogFragment.this.getDialog().cancel();
+               }
+           });      
+    return builder.create();
+}
+</pre>
+
+<div class="note">
+<p><strong>Совет.</strong> Если необходимо пользовательское диалоговое окно,
+можно отображать {@link android.app.Activity} в качестве диалога
+вместо API {@link android.app.Dialog}. Нужно создать операцию и установить тему
+{@link android.R.style#Theme_Holo_Dialog Theme.Holo.Dialog}
+в элементе манифеста<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;операция&gt;}</a>:</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.Dialog" >
+</pre>
+<p>Готово. Операция теперь отображается в диалоговом окне, а не в полноэкранном режиме.</p>
+</div>
+
+
+
+<h2 id="PassingEvents">Передача событий обратно в основное диалоговое приложение</h2>
+
+<p>Когда пользователь нажимает одну из кнопок действий в диалоговом окне, либо выбирает элемент из списка,
+ {@link android.support.v4.app.DialogFragment} может самостоятельно произвести необходимое
+действие, однако зачастую вам может понадобиться доставить информацию о событии операции или фрагменту, которые
+открыли диалоговое окно. Для этого нобходимо определить интерфейс метода для каждого типа события нажатия.
+Затем этот интерфейс применяется в основном компоненте приложения, которое
+получает информацию о событиях из диалогового окна.</p>
+
+<p>Например, {@link android.support.v4.app.DialogFragment} определяет
+интерфейс, по который доставляет события обратно в основной компонент операции:</p>
+
+<pre>
+public class NoticeDialogFragment extends DialogFragment {
+    
+    /* The activity that creates an instance of this dialog fragment must
+     * implement this interface in order to receive event callbacks.
+     * Each method passes the DialogFragment in case the host needs to query it. */
+    public interface NoticeDialogListener {
+        public void onDialogPositiveClick(DialogFragment dialog);
+        public void onDialogNegativeClick(DialogFragment dialog);
+    }
+    
+    // Use this instance of the interface to deliver action events
+    NoticeDialogListener mListener;
+    
+    // Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
+    &#64;Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        // Verify that the host activity implements the callback interface
+        try {
+            // Instantiate the NoticeDialogListener so we can send events to the host
+            mListener = (NoticeDialogListener) activity;
+        } catch (ClassCastException e) {
+            // The activity doesn't implement the interface, throw exception
+            throw new ClassCastException(activity.toString()
+                    + " must implement NoticeDialogListener");
+        }
+    }
+    ...
+}
+</pre>
+
+<p>Операция, выполняемая диалоговым окном, создает экземпляр диалогового окна
+с помощью конструктора фрагментов диалогового окна и получает события
+диалога с помощью реализации интерфейса {@code NoticeDialogListener}:</p>
+
+<pre>
+public class MainActivity extends FragmentActivity
+                          implements NoticeDialogFragment.NoticeDialogListener{
+    ...
+    
+    public void showNoticeDialog() {
+        // Create an instance of the dialog fragment and show it
+        DialogFragment dialog = new NoticeDialogFragment();
+        dialog.show(getSupportFragmentManager(), "NoticeDialogFragment");
+    }
+
+    // The dialog fragment receives a reference to this Activity through the
+    // Fragment.onAttach() callback, which it uses to call the following methods
+    // defined by the NoticeDialogFragment.NoticeDialogListener interface
+    &#64;Override
+    public void onDialogPositiveClick(DialogFragment dialog) {
+        // User touched the dialog's positive button
+        ...
+    }
+
+    &#64;Override
+    public void onDialogNegativeClick(DialogFragment dialog) {
+        // User touched the dialog's negative button
+        ...
+    }
+}
+</pre>
+
+<p>Поскольку выполняемая операция реализуется через {@code NoticeDialogListener}
+с помощью метода обратного вызова
+ {@link android.support.v4.app.Fragment#onAttach onAttach()}, во фрагменте диалога могут использоваться
+методы обратного вызова интерфейса для доставки событий нажатий к операциям:</p>
+
+<pre>
+public class NoticeDialogFragment extends DialogFragment {
+    ...
+
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Build the dialog and set up the button click handlers
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the positive button event back to the host activity
+                       mListener.onDialogPositiveClick(NoticeDialogFragment.this);
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the negative button event back to the host activity
+                       mListener.onDialogNegativeClick(NoticeDialogFragment.this);
+                   }
+               });
+        return builder.create();
+    }
+}
+</pre>
+
+
+
+<h2 id="ShowingADialog">Отображение диалогового окна</h2>
+
+<p>Для отображения диалогового окна необходимо создать экземпляр {@link
+android.support.v4.app.DialogFragment} и вызвать {@link android.support.v4.app.DialogFragment#show
+show()}, передавая {@link android.support.v4.app.FragmentManager} и наименование тега
+для фрагмента диалога.</p>
+
+<p>Можно получить {@link android.support.v4.app.FragmentManager} путем вызова
+{@link android.support.v4.app.FragmentActivity#getSupportFragmentManager()} из
+ {@link android.support.v4.app.FragmentActivity} или {@link
+android.support.v4.app.Fragment#getFragmentManager()} из {@link
+android.support.v4.app.Fragment}. Пример:</p>
+
+<pre>
+public void confirmFireMissiles() {
+    DialogFragment newFragment = new FireMissilesDialogFragment();
+    newFragment.show(getSupportFragmentManager(), "missiles");
+}
+</pre>
+
+<p>Второй аргумент, {@code "missiles"}, — это уникальное наименование тега, которое система использует для сохранения
+и восстановления состояния фрагмента, когда это необходимо. С помощью этого тега также можно управлять
+фрагментом путем вызова {@link android.support.v4.app.FragmentManager#findFragmentByTag
+findFragmentByTag()}.</p>
+
+
+
+
+<h2 id="FullscreenDialog">Отображение диалогового окна в полноэкранном режиме или в виде встроенного фрагмента</h2>
+
+<p>Вам может понадобиться макет пользовательского интерфейса, в котором в некоторых ситуациях часть пользовательского интерфейса должна появляться как диалоговое окно
+, отображаемое в полноэкранном режиме либо в виде встроенного фрагмента (возможно, в зависимости от того,
+маленький или большой экран у устройства). С помощью класса {@link android.support.v4.app.DialogFragment}
+обеспечивается гибкость решения, поскольку он может вести себя как встраиваемый {@link
+android.support.v4.app.Fragment}.</p>
+
+<p>Тем не менее, в этом случае нельзя использовать{@link android.app.AlertDialog.Builder AlertDialog.Builder}
+или другие объекты {@link android.app.Dialog} для построения диалогового окна. Если
+необходимо сделать {@link android.support.v4.app.DialogFragment} 
+встраиваемым, нужно определить пользовательский интерфейс диалогового окна в макете методом обратного вызова
+{@link android.support.v4.app.DialogFragment#onCreateView
+onCreateView()}.</p>
+
+<p>В качестве примера приведен {@link android.support.v4.app.DialogFragment}, который появляется либо в виде
+диалогового окна, либо в виде встраиваемого фрагмента (используя макет с наименованием <code>purchase_items.xml</code>):</p>
+
+<pre>
+public class CustomDialogFragment extends DialogFragment {
+    /** The system calls this to get the DialogFragment's layout, regardless
+        of whether it's being displayed as a dialog or an embedded fragment. */
+    &#64;Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        // Inflate the layout to use as dialog or embedded fragment
+        return inflater.inflate(R.layout.purchase_items, container, false);
+    }
+  
+    /** The system calls this only when creating the layout in a dialog. */
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // The only reason you might override this method when using onCreateView() is
+        // to modify any dialog characteristics. For example, the dialog includes a
+        // title by default, but your custom layout might not need it. So here you can
+        // remove the dialog title, but you must call the superclass to get the Dialog.
+        Dialog dialog = super.onCreateDialog(savedInstanceState);
+        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+        return dialog;
+    }
+}
+</pre>
+
+<p>Приведен пример кода, реализующего принятие решения об отображении фргмента в качестве диалогового окна
+или полноэкранного пользовательского интерфейса на основе размера экрана:</p>
+
+<pre>
+public void showDialog() {
+    FragmentManager fragmentManager = getSupportFragmentManager();
+    CustomDialogFragment newFragment = new CustomDialogFragment();
+    
+    if (mIsLargeLayout) {
+        // The device is using a large layout, so show the fragment as a dialog
+        newFragment.show(fragmentManager, "dialog");
+    } else {
+        // The device is smaller, so show the fragment fullscreen
+        FragmentTransaction transaction = fragmentManager.beginTransaction();
+        // For a little polish, specify a transition animation
+        transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
+        // To make it fullscreen, use the 'content' root view as the container
+        // for the fragment, which is always the root view for the activity
+        transaction.add(android.R.id.content, newFragment)
+                   .addToBackStack(null).commit();
+    }
+}
+</pre>
+
+<p>Подробные сведения о выполнении операций с фрагментами приведены в руководстве 
+<a href="{@docRoot}guide/components/fragments.html">Фрагменты</a>.</p>
+
+<p>В приведенном примере <code>mIsLargeLayout</code> булеан указывает, должно ли текущее устройство использовать
+ большой макет приложения  (и отображать фрагмент как диалоговое окно, а не
+в полноэкранном режиме). Лучшим способом установить такой вид булеана является объявление 
+<a href="{@docRoot}guide/topics/resources/more-resources.html#Bool">значения булевой переменной</a>
+с <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">альтернативным</a> значением для других размеров экранов. В качестве примера приведены два
+варианта булевых ресурсов для различных размеров экранов:</p>
+
+<p class="code-caption">res/values/bools.xml</p>
+<pre>
+&lt;!-- Default boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">false&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p class="code-caption">res/values-large/bools.xml</p>
+<pre>
+&lt;!-- Large screen boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">true&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p>Затем можно инизиализировать значение {@code mIsLargeLayout} в течение выполнения метода операции
+{@link android.app.Activity#onCreate onCreate()}:</p>
+
+<pre>
+boolean mIsLargeLayout;
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_main);
+
+    mIsLargeLayout = getResources().getBoolean(R.bool.large_layout);
+}
+</pre>
+
+
+
+<h3 id="ActivityAsDialog">Отображение операции в качестве диалога на больших экранах</h3>
+
+<p>Вместо отображения диалогового окна в полноэкранном режиме на экранах малого размера можно
+отображать {@link android.app.Activity} в качестве диалогового окна на
+экранах большого размера. Выбор зависит от дизайна приложения, но
+отображение операции в качестве диалогового окна имеет смысл, когда приложение предназначено для использования на малых
+экранах, и необходимо улучшить взаимодейтсвие с ним на планшетах, показывая кратковременные операции
+в качестве диалогового окна.</p>
+
+<p>Для отображения операции в качестве диалогового окна только на больших экранах
+необходимо применить тему {@link android.R.style#Theme_Holo_DialogWhenLarge Theme.Holo.DialogWhenLarge}
+к элементу манифеста <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;операция&gt;}</a>:</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.DialogWhenLarge" >
+</pre>
+
+<p>Подробная информация о темах операций приведена в руководстве <a href="{@docRoot}guide/topics/ui/themes.html">Стили и темы</a>.</p>
+
+
+
+<h2 id="DismissingADialog">Закрытие диалогового окна</h2>
+
+<p>Когда пользователь нажимает кнопки, созданные с помощью
+{@link android.app.AlertDialog.Builder}, система закрывает диалоговое окно самостоятельно.</p>
+
+<p>Система также закрывает диалоговое окно, когда пользователь нажимает на элемент списка в диалоговом окне, за исключением
+списков с переключателями или флажками. В иных случаях можно вручную закрыть диалоговое окно
+путем вызова {@link android.support.v4.app.DialogFragment#dismiss()} в {@link
+android.support.v4.app.DialogFragment}.</p>
+
+<p>В случае, если необходимо произвести определенные
+действия после закрытия диалогового окна, можно реализовать метод {@link
+android.support.v4.app.DialogFragment#onDismiss onDismiss()} в {@link
+android.support.v4.app.DialogFragment}.</p>
+
+<p>Также можно <em>отменить</em> диалоговое окно. Это особое событие, возникающее, когда пользователь
+покинул диалоговое окно, не завершив задачу. Так происходит, когда пользователь нажимает кнопку 
+<em>Назад</em>, касается экрана за областью диалогового окна,
+либо когда задано {@link android.app.Dialog#cancel()} в {@link
+android.app.Dialog} (например, в качестве отклика на нажатие кнопки «Отмена» в диалоговом окне).</p>
+
+<p>Как показано в примере выше, можно ответить на событие отмены с помощью
+{@link android.support.v4.app.DialogFragment#onCancel onCancel()} в классе {@link
+android.support.v4.app.DialogFragment}.</p>
+
+<p class="note"><strong>Примечание:</strong> Система вызывает
+{@link android.support.v4.app.DialogFragment#onDismiss onDismiss()} при каждом событии,
+которое вызывается методом обратного вызова{@link android.support.v4.app.DialogFragment#onCancel onCancel()}. Тем не менее,
+при вызове{@link android.app.Dialog#dismiss Dialog.dismiss()} или {@link
+android.support.v4.app.DialogFragment#dismiss DialogFragment.dismiss()},
+система вызывает {@link android.support.v4.app.DialogFragment#onDismiss onDismiss()} <em>, а
+не</em> {@link android.support.v4.app.DialogFragment#onCancel onCancel()}. Поэтому в общих случаях
+вызов{@link android.support.v4.app.DialogFragment#dismiss dismiss()} производится при нажатии пользователем
+<em>положительной</em> кнопки в диалоговом окне, а после диалоговое окно закрывается.</p>
+
+
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/menus.jd b/docs/html-intl/intl/ru/guide/topics/ui/menus.jd
new file mode 100644
index 0000000..2f3ce1e
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/ui/menus.jd
@@ -0,0 +1,1031 @@
+page.title=Меню
+parent.title=Пользовательский интерфейс
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Содержание документа</h2>
+<ol>
+  <li><a href="#xml">Определение меню в файле XML</a></li>
+  <li><a href="#options-menu">Создание меню параметров</a>
+    <ol>
+      <li><a href="#RespondingOptionsMenu">Обработка нажатий</a></li>
+      <li><a href="#ChangingTheMenu">Изменение пунктов меню во время выполнения</a></li>
+    </ol>
+  </li>
+  <li><a href="#context-menu">Создание контекстного меню</a>
+    <ol>
+      <li><a href="#FloatingContextMenu">Создание плавающего контекстного меню</a></li>
+      <li><a href="#CAB">Использование режима контекстных действий</a></li>
+    </ol>
+  </li>
+  <li><a href="#PopupMenu">Создание всплывающего меню</a>
+    <ol>
+      <li><a href="#PopupEvents">Обработка нажатий</a></li>
+    </ol>
+  </li>
+  <li><a href="#groups">Создание групп меню</a>
+    <ol>
+      <li><a href="#checkable">Использование пунктов меню, которые можно пометить</a></li>
+    </ol>
+  </li>
+  <li><a href="#intents">Добавление пунктов меню на основе объектов Intent</a>
+    <ol>
+      <li><a href="#AllowingToAdd">Предоставление возможности добавить свою операцию в другие меню</a></li>
+    </ol>
+  </li>
+</ol>
+
+  <h2>Основные классы</h2>
+  <ol>
+    <li>{@link android.view.Menu}</li>
+    <li>{@link android.view.MenuItem}</li>
+    <li>{@link android.view.ContextMenu}</li>
+    <li>{@link android.view.ActionMode}</li>
+  </ol>
+
+  <h2>См. также</h2>
+  <ol>
+    <li><a href="{@docRoot}guide/topics/ui/actionbar.html">Строка действий</a></li>
+    <li><a href="{@docRoot}guide/topics/resources/menu-resource.html">Ресурс меню</a></li>
+    <li><a href="http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html">Попрощайтесь
+с кнопкой "Меню"</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Меню являются стандартным компонентом пользовательского интерфейса в приложениях многих типов. Для обеспечения привычной
+и единообразной технологии работы с приложением следует представлять действия пользователя и другие варианты выбора в своих операциях
+с помощью API-интерфейсов класса {@link android.view.Menu}.</p>
+
+<p>Начиная с версии Android 3.0 (уровень API 11) в устройствах, работающих под управлением Android,
+наличие отдельной кнопки <em>Меню</em> больше не требуется. С учетом этого изменения приложения для Android должны перестать
+зависеть от традиционной панели меню из 6 пунктов. Вместо нее в них должна быть строка действий с часто используемыми
+действиями пользователя.</p>
+
+<p>Несмотря на то что оформление и поведение некоторых пунктов меню изменились, семантика для определения
+набора действий и вариантов по-прежнему основана на API-интерфейсах класса {@link android.view.Menu}. В этом
+руководстве рассказывается, как создавать три основополагающих типа меню или представлений действий в системе 
+Android всех версий:</p>
+
+<dl>
+  <dt><strong>Меню параметров и строка действий</strong></dt>
+    <dd>Пункты <a href="#options-menu">меню параметров</a> представляют собой основные варианты выбора действий в пределах
+операции. Именно здесь следует размещать действия, которые затрагивают приложение в целом, например: 
+"Поиск", "Составить сообщение эл. почты" и "Настройки".
+  <p>При разработке приложений для версии Android 2.3 или более ранних версий пользователи могут
+открыть панель меню параметров нажатием кнопки <em>Меню</em>.</p>
+  <p>В версии Android 3.0 и последующих версиях пункты меню параметров размещаются в <a href="{@docRoot}guide/topics/ui/actionbar.html">строке действий</a> в виде сочетания отображаемых на экране вариантов
+действий и раскрывающегося списка дополнительных вариантов выбора. Начиная с Android 3.0 кнопка <em>Меню</em> больше не используется (на некоторых
+устройствах
+ее нет), поэтому для предоставления доступа к действиям и другим вариантам выбора вам следует перейти к использованию
+строки действий.</p>
+  <p>См. раздел <a href="#options-menu">Создание меню параметров</a></p>
+    </dd>
+    
+  <dt><strong>Контекстное меню и режим контекстных действий</strong></dt>
+  
+   <dd>Контекстное меню ― это <a href="#FloatingContextMenu">плавающее меню</a>, которое открывается, когда
+пользователь длительно нажимает на элемент. В нем содержатся действия, которые затрагивают выбранный контент или
+контекстный кадр.
+  <p>При разработке приложения для версии Android 3.0 или выше вместо этого для обеспечения действий с выбранным контентом следует использовать <a href="#CAB">режим контекстных действий</a>. В этом режиме
+в строке, расположенной вверху экрана, отображаются пункты действий, затрагивающие выбранный контент, причем пользователь может
+выбрать сразу несколько элементов.</p>
+  <p>См. раздел <a href="#context-menu">Создание контекстного меню</a></p>
+</dd>
+    
+  <dt><strong>Всплывающее меню</strong></dt>
+    <dd>Во всплывающем меню отображается вертикальный список пунктов, который привязан к представлению,
+вызвавшему меню. Он хорошо подходит для предоставления возможности дополнительных вариантов действий, относящихся к определенному контенту или
+для выдачи вариантов для второй части команды. Действия во всплывающем меню 
+<strong>не</strong> должны напрямую затрагивать соответствующий контент &mdash; для этого предназначены контекстные
+действия. Всплывающее меню предназначено для расширенных действий, относящихся к областям контента в вашей
+операции.
+  <p>См. раздел <a href="#PopupMenu">Создание всплывающего меню</a></p>
+</dd>
+</dl>
+
+
+
+<h2 id="xml">Определение меню в файле XML</h2>
+
+<p>Для определения пунктов меню всех типов в Android используется стандартный формат XML.
+Вместо того чтобы создавать меню в коде своей операции, определять меню и все его пункты следует в
+ <a href="{@docRoot}guide/topics/resources/menu-resource.html">ресурсе меню</a> формата XML. После этого
+ресурс меню можно будет загружать как объект {@link android.view.Menu} в свои операции или
+фрагменты.</p>
+
+<p>Использовать ресурсы меню рекомендуется по нескольким причинам:</p>
+<ul>
+  <li>в XML проще визуализировать структуру меню;</li>
+  <li>это позволяет отделить контент для меню от кода, определяющего работу приложения;</li>
+  <li>это позволяет создавать альтернативные варианты меню для разных версий платформы,
+размеров экрана и других конфигураций путем использования структуры <a href="{@docRoot}guide/topics/resources/index.html">ресурсов приложения</a>.</li>
+</ul>
+
+<p>Чтобы определить меню, создайте файл XML в папке <code>res/menu/</code>
+вашего проекта и постройте меню со следующими элементами:</p>
+<dl>
+  <dt><code>&lt;menu></code></dt>
+    <dd>Определяет класс {@link android.view.Menu}, который является контейнером для пунктов меню. Элемент
+<code>&lt;menu></code> должен быть корневым узлом файла, в котором может находиться один или несколько элементов
+<code>&lt;item></code> и <code>&lt;group></code>.</dd>
+
+  <dt><code>&lt;item></code></dt>
+    <dd>Создает класс {@link android.view.MenuItem}, который представляет один пункт меню. Этот
+элемент может содержать вложенный элемент <code>&lt;menu></code> для создания вложенных меню.</dd>
+    
+  <dt><code>&lt;group></code></dt>
+    <dd>Необязательный, невидимый контейнер для элементов {@code &lt;item&gt;}. Он позволяет
+разделять пункты меню на категории и назначать им одинаковые свойства, такие как активное состояние и видимость. Подробные
+сведения изложены в разделе <a href="#groups">Создание групп меню</a>.</dd>
+</dl>
+
+
+<p>Вот пример меню с именем <code>game_menu.xml</code>:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/new_game"
+          android:icon="@drawable/ic_new_game"
+          android:title="@string/new_game"
+          android:showAsAction="ifRoom"/&gt;
+    &lt;item android:id="@+id/help"
+          android:icon="@drawable/ic_help"
+          android:title="@string/help" /&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>Элемент <code>&lt;item></code> поддерживает несколько атрибутов, с помощью которых можно определить внешний вид и
+поведение пункта меню. Пункты приведенного выше меню имеют следующие атрибуты:</p>
+
+<dl>
+  <dt>{@code android:id}</dt>
+    <dd>Идентификатор ресурса, который является уникальным для этого пункта, что позволяет приложению распознавать пункт,
+когда его выбирает пользователь.</dd>
+  <dt>{@code android:icon}</dt>
+    <dd>Ссылка на графический элемент, который будет использоваться в качестве значка пункта меню.</dd>
+  <dt>{@code android:title}</dt>
+    <dd>Ссылка на строку, которая будет использоваться в качестве названия пункта меню.</dd>
+  <dt>{@code android:showAsAction}</dt>
+    <dd>Указывает, когда и как этот пункт должен отображаться в <a href="{@docRoot}guide/topics/ui/actionbar.html">строке действий</a>.</dd>
+</dl>
+
+<p>Это самые важные атрибуты, которые следует использовать, но есть также множество других атрибутов.
+Сведения обо всех поддерживаемых атрибутах см. в документе <a href="{@docRoot}guide/topics/resources/menu-resource.html">Ресурс меню</a>.</p>
+
+<p>К пункту любого меню (кроме вложенного меню) можно прикрепить вложенное меню, добавив элемент {@code &lt;menu&gt;}
+в качестве дочернего элемента {@code &lt;item&gt;}. Вложенные меню полезны, когда в приложении имеется множество
+функций, которые можно разделить на категории подобно строке меню приложения для ПК ("Файл",
+"Правка", "Вид" и т. д.). Например:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/file"
+          android:title="@string/file" &gt;
+        &lt;!-- "file" submenu --&gt;
+        &lt;menu&gt;
+            &lt;item android:id="@+id/create_new"
+                  android:title="@string/create_new" /&gt;
+            &lt;item android:id="@+id/open"
+                  android:title="@string/open" /&gt;
+        &lt;/menu&gt;
+    &lt;/item&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>Для использования меню в операции необходимо загрузить ресурс меню (преобразовать ресурс XML
+в программируемый объект) с помощью метода {@link android.view.MenuInflater#inflate(int,Menu)
+MenuInflater.inflate()}. В приведенных далее разделах рассказывается, как загружать меню
+каждого типа.</p>
+
+
+
+<h2 id="options-menu">Создание меню параметров</h2>
+
+<div class="figure" style="width:200px;margin:0">
+  <img src="{@docRoot}images/options_menu.png" height="333" alt="" />
+  <p class="img-caption"><strong>Рисунок 1.</strong> Меню параметров в
+браузере на Android 2.3.</p>
+</div>
+
+<p>В меню параметров следует размещать действия и другие варианты выбора, которые имеют отношение к
+контексту текущей операции, например: "Поиск", "Составить сообщение эл. почты" и "Настройки".</p>
+
+<p>Место, где отображаются на экране пункты вашего меню параметров, определяется версией платформы, для которой
+разработано приложение.</p>
+
+<ul>
+  <li>Если приложение написано для версии <strong>Android 2.3.x (уровень API 10) или
+более ранней</strong>, содержимое вашего меню параметров отображается внизу экрана, когда пользователь
+нажимает кнопку <em>Меню</em>, как показано на рисунке 1. Когда меню открывается, первой видимой частью является меню
+значков,
+в котором имеется шесть пунктов. Если в вашем меню больше шести пунктов, система Android разместит
+шестой и остальные пункты в дополнительном меню, которое пользователь может открыть, выбрав вариант
+ <em>Еще</em>.</li>
+
+  <li>Если приложение предназначено для версии <strong>Android 3.0 (уровень API 11) и
+более поздних</strong>, пункты меню параметров будут отображаться в <a href="{@docRoot}guide/topics/ui/actionbar.html">строке действий</a>. По умолчанию система
+размещает все действия на панели дополнительных вариантов, которые пользователь может открыть с помощью значка дополнительных действий, расположенного
+с правой стороны строки действий (либо нажатием кнопки <em>Меню</em>, если на устройстве есть такая кнопка). Чтобы
+обеспечить
+быстрый доступ к важным действиям, можно принудительно разместить несколько пунктов меню в строке действий, добавив
+{@code android:showAsAction="ifRoom"} к соответствующим элементам {@code &lt;item&gt;} (см. рисунок
+2). <p>Подробные сведения о пунктах действий и других особенностях строки действий см. в руководстве <a href="{@docRoot}guide/topics/ui/actionbar.html">Строка действий</a>. </p>
+<p class="note"><strong>Примечание.</strong> Даже если ваше приложение <em>не</em> предназначено для работы в версии Android 3.0 или
+более поздней, можно создать собственный макет со строкой действий, чтобы реализовать похожий эффект. Пример того, как можно
+поддерживать работу строки действий в старых версиях Android см. в образце кода, иллюстрирующем
+ <a href="{@docRoot}resources/samples/ActionBarCompat/index.html">Совместимость строки действий</a>.</p>
+</li>
+</ul>
+
+<img src="{@docRoot}images/ui/actionbar.png" alt="" />
+<p class="img-caption"><strong>Рисунок 2.</strong> Строка действий из приложения <a href="{@docRoot}resources/samples/HoneycombGallery/index.html">Honeycomb Gallery</a>, содержащая
+вкладки навигации и пункт включения камеры (а также кнопку открытия дополнительной панели действий).</p>
+
+<p>Объявлять пункты меню параметров можно либо из подкласса {@link android.app.Activity},
+либо из подкласса {@link android.app.Fragment}. Если и ваша операция, и фрагменты
+объявляют пункты меню параметров, в пользовательском интерфейсе они объединяются. Сначала отображаются пункты
+операции, а за ними следуют пункты фрагментов в том порядке, в котором каждый фрагмент добавляется в
+операцию. При необходимости можно изменить порядок следования пунктов меню с помощью атрибута {@code android:orderInCategory},
+указываемого в каждом {@code &lt;item&gt;}, который требуется переместить.</p>
+
+<p>Чтобы указать меню параметров для операции, переопределите {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} (фрагменты предоставляют собственный обратный
+вызов {@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()}). В этом
+методе можно загрузить собственный ресурс меню (<a href="#xml">определенный в XML</a>) в класс {@link
+android.view.Menu}, имеющийся в обратном вызове. Например:</p>
+
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu) {
+    MenuInflater inflater = {@link android.app.Activity#getMenuInflater()};
+    inflater.inflate(R.menu.game_menu, menu);
+    return true;
+}
+</pre>
+
+<p>Пункты меню также можно добавлять с помощью {@link android.view.Menu#add(int,int,int,int)
+add()}, а получать их с помощью {@link android.view.Menu#findItem findItem()} для пересмотра их
+свойств с помощью API-интерфейсов {@link android.view.MenuItem}.</p>
+
+<p>Если ваше приложение предназначено для версии Android 2.3.x или более ранней, система вызывает метод {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} для создания меню параметров,
+когда пользователь открывает это меню впервые. Если приложение предназначено для версии Android 3.0 и или более поздней, система
+вызывает метод{@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} при
+запуске операции, чтобы отобразить пункты в строке действий.</p>
+
+
+
+<h3 id="RespondingOptionsMenu">Обработка нажатий</h3>
+
+<p>Когда пользователь выбирает пункт меню параметров (в том числе пункты действий из строки действий),
+система вызывает метод {@link android.app.Activity#onOptionsItemSelected(MenuItem)
+onOptionsItemSelected()} вашей операции. Этот метод передает выбранный класс {@link android.view.MenuItem}. Идентифицировать
+пункт меню можно, вызвав метод {@link android.view.MenuItem#getItemId()}, который возвращает уникальный
+идентификатор пункта меню (определенный атрибутом {@code android:id} из ресурса меню или
+целым числом, переданным методу {@link android.view.Menu#add(int,int,int,int) add()}). Этот идентификатор
+можно сопоставить с известными пунктами меню, чтобы выполнить соответствующее действие. Например:</p>
+
+<pre>
+&#64;Override
+public boolean onOptionsItemSelected(MenuItem item) {
+    // Handle item selection
+    switch (item.getItemId()) {
+        case R.id.new_game:
+            newGame();
+            return true;
+        case R.id.help:
+            showHelp();
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+    }
+}
+</pre>
+
+<p>Когда пункт меню успешно обработан, возвращается {@code true}. Если пункт меню не
+обрабатывается, следует вызвать реализацию суперкласса {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} (реализация
+по умолчанию возвращает значение false).</p>
+
+<p>Если в вашей операции имеются фрагменты, система сначала вызовет метод {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} для операции, а затем
+будет вызывать этот метод для каждого фрагмента (в том порядке, в котором они были добавлены), пока он не возвратит
+значение{@code true} или не закончатся фрагменты.</p>
+
+<p class="note"><strong>Совет.</strong> В Android 3.0 появилась возможность определять в XML поведение
+при нажатии для пунктов меню с помощью атрибута {@code android:onClick}. Значением этого
+атрибута должно быть имя метода, определенное операцией с помощью меню. Этот метод
+должен быть общедоступным и принимать один параметр {@link android.view.MenuItem}, &mdash; когда система
+вызывает этот метод, она передает ему выбранный пункт меню. Подробные сведения и пример см. в документе <a href="{@docRoot}guide/topics/resources/menu-resource.html">Ресурс меню</a>.</p>
+
+<p class="note"><strong>Совет.</strong> Если в приложении предусмотрено несколько операций и 
+в некоторых из них имеются одинаковые меню параметров, рассмотрите возможность создания
+операции, которая будет использовать исключительно методы {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()} и {@link android.app.Activity#onOptionsItemSelected(MenuItem)
+onOptionsItemSelected()}. Затем распространите этот класс на все операции, у которых должно быть
+одинаковое меню параметров. Таким образом можно управлять одним набором кода для обработки действий
+меню, а каждый класс-потомок при этом будет наследовать режимы работы меню.
+Если требуется добавить пункты меню в одну из операций-потомков,
+переопределите метод {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()} в этой операции. Вызовите метод {@code super.onCreateOptionsMenu(menu)}, с тем чтобы
+создать первоначальные пункты меню, а затем добавьте новые пункты меню с помощью метода {@link
+android.view.Menu#add(int,int,int,int) menu.add()}. Также можно переопределять режимы работы
+суперкласса для отдельных пунктов меню.</p>
+
+
+<h3 id="ChangingTheMenu">Изменение пунктов меню во время выполнения</h3>
+
+<p>После того как система вызовет метод {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()}, она сохранит заполненный вами экземпляр {@link android.view.Menu} и
+будет вызывать метод {@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}
+,только если меню по каким-то причинам станет некорректным. Однако метод {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} следует использовать только для создания начального
+состояния меню, а не для внесения в него изменений в течение жизненного цикла операции.</p>
+
+<p>Если вам требуется изменять меню параметров в зависимости от 
+событий, которые возникают в течение жизненного цикла операции, сделать это можно в
+методе{@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}. Этот
+метод передает объект {@link android.view.Menu} в том виде, в котором он в данный момент существует. Его-то и можно изменить
+путем, например, добавления, удаления или отключения пунктов меню. (Фрагменты также предоставляют обратный вызов {@link
+android.app.Fragment#onPrepareOptionsMenu onPrepareOptionsMenu()}.)</p>
+
+<p>В версии Android 2.3.x или более ранней система вызывает метод {@link
+android.app.Activity#onPrepareOptionsMenu(Menu)
+onPrepareOptionsMenu()} каждый раз, когда пользователь открывает меню параметров (нажимает кнопку <em>Меню</em>
+).</p>
+
+<p>В версии Android 3.0 и последующих версиях считается, что меню параметров всегда открыто, когда пункты меню
+приведены в строке действий. Когда возникает событие и требуется обновить меню, следует
+вызвать метод {@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()}, чтобы запросить у
+системы вызов метода {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}.</p>
+
+<p class="note"><strong>Примечание.</strong> 
+Никогда не следует изменять пункты меню параметров с учетом класса {@link android.view.View}, действующего
+в данный момент. В сенсорном режиме (когда пользователь не использует трекбол или кнопки направления движения) фокус
+не может переводиться на представления, поэтому никогда не следует использовать фокус в качестве основы для изменения
+пунктов меню параметров. Если вы желаете предоставить пункты меню, которые зависят от контекста {@link
+android.view.View}, используйте <a href="#context-menu">контекстное меню</a>.</p>
+
+
+
+
+<h2 id="context-menu">Создание контекстного меню</h2>
+
+<div class="figure" style="width:420px;margin-top:-1em">
+  <img src="{@docRoot}images/ui/menu-context.png" alt="" />
+  <p class="img-caption"><strong>Рисунок 3</strong>. Снимки экрана с плавающим контекстным меню (слева)
+и строкой контекстных действий (справа).</p>
+</div>
+
+<p>В контекстном меню содержатся действия, которые затрагивают определенный элемент или контекстный кадр в пользовательском интерфейсе. Контекстное
+меню можно создать для любого представления, но чаще всего они используются для элементов из {@link
+android.widget.ListView}, {@link android.widget.GridView} или других групп представлений, в которых
+пользователь может выполнять действия непосредственно с каждым элементом.</p>
+
+<p>Существует два способа предоставления возможности контекстных действий:</p>
+<ul>
+  <li>В <a href="#FloatingContextMenu">плавающем контекстном меню</a>. Меню отображается в виде
+плавающего списка пунктов меню (наподобие диалогового окна), когда пользователь длительно нажимает на экран (нажимает и
+удерживает нажатым) в представлении, которое объявляет поддержку контекстного меню. Пользователи могут каждый раз выполнять контекстное
+действие только с одним элементом.</li>
+
+  <li>В <a href="#CAB">режиме контекстных действий</a>. Этот режим является системной реализацией
+{@link android.view.ActionMode}, которая отображает <em>строку контекстных действий</em> вверху
+экрана с пунктами действий, которые затрагивают выбранные элементы. Когда этот режим активен, пользователи
+могут одновременно выполнять действие с несколькими элементами (если это допускается приложением).</li>
+</ul>
+
+<p class="note"><strong>Примечание.</strong> Режим контекстных действий поддерживается в версии Android 3.0 (уровень API
+11) и последующих версиях. Если этот режим предусмотрен, именно его рекомендуется использовать для отображения контекстных
+действий. Если ваше приложение поддерживает версии ниже 3.0, то для этих устройств следует вернуться к плавающему
+контекстному меню.</p>
+
+
+<h3 id="FloatingContextMenu">Создание плавающего контекстного меню</h3>
+
+<p>Программирование плавающего контекстного меню</p>
+<ol>
+  <li>Зарегистрируйте класс {@link android.view.View}, с которым следует связать контекстное меню,
+вызвав метод {@link android.app.Activity#registerForContextMenu(View) registerForContextMenu()} и передав
+ему {@link android.view.View}.
+  <p>Если операция использует {@link android.widget.ListView} или {@link android.widget.GridView} и
+требуется, чтобы каждый элемент предоставлял одинаковое контекстное меню, зарегистрируйте все элементы для контекстного меню,
+передав {@link android.widget.ListView} или {@link android.widget.GridView} методу {@link
+android.app.Activity#registerForContextMenu(View) registerForContextMenu()}.</p>
+</li>
+
+  <li>Реализуйте метод {@link
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()} в
+ {@link android.app.Activity} или {@link android.app.Fragment}.
+  <p>Когда зарегистрированное представление примет событие длительного нажатия, система вызовет ваш метод {@link
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()}
+. Именно здесь определяются пункты меню. Делается это обычно путем загрузки ресурса меню. Например:
+</p>
+<pre>
+&#64;Override
+public void onCreateContextMenu(ContextMenu menu, View v,
+                                ContextMenuInfo menuInfo) {
+    super.onCreateContextMenu(menu, v, menuInfo);
+    MenuInflater inflater = getMenuInflater();
+    inflater.inflate(R.menu.context_menu, menu);
+}
+</pre>
+
+<p>{@link android.view.MenuInflater} позволяет загружать контекстное меню из <a href="{@docRoot}guide/topics/resources/menu-resource.html">ресурса меню</a>. В число параметров метода
+обратного вызова входят {@link android.view.View},
+выбранный пользователем, и объект{@link android.view.ContextMenu.ContextMenuInfo}, который предоставляет
+дополнительную информацию о выбранном элементе. Если в вашей операции есть несколько представлений и все они предоставляют
+разные контекстные меню, то с помощью этих параметров можно определять, какое контекстное меню
+загружать.</p>
+</li>
+
+<li>Реализуйте метод {@link android.app.Activity#onContextItemSelected(MenuItem)
+onContextItemSelected()}.
+  <p>Когда пользователь выбирает пункт меню, система вызывает этот метод, с тем чтобы вы могли выполнить
+соответствующее действие. Например:</p>
+
+<pre>
+&#64;Override
+public boolean onContextItemSelected(MenuItem item) {
+    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
+    switch (item.getItemId()) {
+        case R.id.edit:
+            editNote(info.id);
+            return true;
+        case R.id.delete:
+            deleteNote(info.id);
+            return true;
+        default:
+            return super.onContextItemSelected(item);
+    }
+}
+</pre>
+
+<p>Метод {@link android.view.MenuItem#getItemId()} запрашивает идентификатор для
+выбранного пункта меню. Идентификаторы должны быть назначены каждому пункту меню в файле XML с помощью атрибута {@code
+android:id}, как описано в разделе <a href="#xml">Определение меню в файле
+XML</a>.</p>
+
+<p>Когда пункт меню успешно обработан, возвращается {@code true}. Если пункт меню не
+обрабатывается, следует передать его реализации суперкласса. Если в вашей операции есть фрагменты,
+то она получит этот обратный вызов первой. Вызывая суперкласс, когда пункт меню не обрабатывается, система
+передает событие соответствующему методу обратного вызова в каждом фрагменте по одному (в порядке
+добавления каждого фрагмента), пока не будет возвращено значение {@code true} или {@code false}. (Реализация
+{@link android.app.Activity} и {@code android.app.Fragment} по умолчанию возвращает {@code
+false}, поэтому, когда событие не обрабатывается, следует всегда вызывать суперкласс.)</p>
+</li>
+</ol>
+
+
+<h3 id="CAB">Использование режима контекстных действий</h3>
+
+<p>Режим контекстных действий представляет собой системную реализацию класса {@link android.view.ActionMode}, которая
+направляет пользователя на выполнение контекстных действий при взаимодействии с приложением. Когда
+пользователь использует этот режим, выбирая элемент, вверху экрана открывается <em>строка контекстных действий</em>,
+содержащая действия, которые пользователь может выполнить с выбранными в данный момент элементами. В этом режиме
+пользователь может выбирать несколько элементов (если это допускается приложением), снимать выделения с элементов и продолжать
+навигацию в операции (в тех пределах, в которых это поддерживается приложением). Режим контекстных действий отключается,
+а строка контекстных действий исчезает, когда пользователь снимет выделение со всех элементов, нажмет кнопку НАЗАД
+или выберет действие <em>Готово</em>, расположенное с левой стороны строки.</p>
+
+<p class="note"><strong>Примечание.</strong> Строка контекстных действий не обязательно бывает
+связана со <a href="{@docRoot}guide/topics/ui/actionbar.html">строкой действий</a>. Они работают
+независимо друг от друга, даже несмотря на то, что визуально строка контекстных действий занимает положение
+строки действий.</p>
+
+<p>Если вы разрабатываете приложение для версии Android 3.0 (уровень API 11) или последующих версий, то
+обычно вместо <a href="#FloatingContextMenu">плавающего контекстного меню</a> вам следует использовать контекстные действия.</p>
+
+<p>Для представлений, которые предоставляют возможность контекстные действия, обычно следует вызывать режим контекстных действий
+при возникновении одного из двух (или сразу обоих) событий:</p>
+<ul>
+  <li>пользователь длительно нажимает в представлении;</li>
+  <li>пользователь устанавливает флажок или выбирает другой подобный компонент пользовательского интерфейса в представлении.</li>
+</ul>
+
+<p>То, каким образом ваше представление вызывает режим контекстных действий и определяет поведение каждого
+действия, зависит от вас. Есть два базовых варианта:</p>
+<ul>
+  <li>для контекстных действий в отдельных, произвольных представлениях;</li>
+  <li>для пакетных контекстных действий с группами элементов в {@link
+android.widget.ListView} или {@link android.widget.GridView} (что позволяет пользователю выбирать по несколько
+элементов и выполнять действие с ними всеми).</li>
+</ul>
+
+<p>В следующих разделах описывается конфигурация, необходимая для каждого из этих вариантов.</p>
+
+
+<h4 id="CABforViews">Включение режима контекстных действий для отдельных представлений</h4>
+
+<p>Если вам требуется вызывать режим контекстных действий, только когда пользователь выбирает определенные
+представления, то вам следует:</p>
+<ol>
+  <li>Реализовать интерфейс {@link android.view.ActionMode.Callback}. В его методах обратного вызова вы
+можете указать действия для строки контекстных действий, реагировать на нажатия пунктов действий и 
+обрабатывать другие события жизненного цикла для режима действий.</li>
+  <li>Вызывайте {@link android.app.Activity#startActionMode startActionMode()}, когда требуется показать
+строку (например, когда пользователь выполняет длительное нажатие представления).</li>
+</ol>
+
+<p>Например:</p>
+
+<ol>
+  <li>Реализуйте интерфейс {@link android.view.ActionMode.Callback ActionMode.Callback}:
+<pre>
+private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
+
+    // Called when the action mode is created; startActionMode() was called
+    &#64;Override
+    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+        // Inflate a menu resource providing context menu items
+        MenuInflater inflater = mode.getMenuInflater();
+        inflater.inflate(R.menu.context_menu, menu);
+        return true;
+    }
+
+    // Called each time the action mode is shown. Always called after onCreateActionMode, but
+    // may be called multiple times if the mode is invalidated.
+    &#64;Override
+    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+        return false; // Return false if nothing is done
+    }
+
+    // Called when the user selects a contextual menu item
+    &#64;Override
+    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.menu_share:
+                shareCurrentItem();
+                mode.finish(); // Action picked, so close the CAB
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    // Called when the user exits the action mode
+    &#64;Override
+    public void onDestroyActionMode(ActionMode mode) {
+        mActionMode = null;
+    }
+};
+</pre>
+
+<p>Обратите внимание, что эти обратные вызовы событий почти точно такие же, как и обратные вызовы для <a href="#options-menu">меню параметров</a>. Отличаются они только тем, что каждый из них также передает объект {@link
+android.view.ActionMode}, связанный с событием. С помощью API-интерфейсов {@link
+android.view.ActionMode} можно вносить различные изменения в CAB, например, указывать другой заголовок и
+подзаголовок с помощью {@link android.view.ActionMode#setTitle setTitle()} и {@link
+android.view.ActionMode#setSubtitle setSubtitle()} (удобно для указания количества выбранных
+элементов).</p>
+
+<p>Также обратите внимание, что приведенный выше образец кода задает для переменной {@code mActionMode} значение null, когда 
+режим действия прекращает свое существование. Далее вы узнаете, каким образом он инициализируется и чем может быть
+полезно сохранение составной переменной в операции или фрагменте.</p>
+</li>
+
+  <li>Для включения режима контекстных действий, когда это необходимо, 
+например, в ответ на длительное нажатие {@link
+android.view.View}, вызывайте {@link android.app.Activity#startActionMode startActionMode()}:</p>
+
+<pre>
+someView.setOnLongClickListener(new View.OnLongClickListener() {
+    // Called when the user long-clicks on someView
+    public boolean onLongClick(View view) {
+        if (mActionMode != null) {
+            return false;
+        }
+
+        // Start the CAB using the ActionMode.Callback defined above
+        mActionMode = getActivity().startActionMode(mActionModeCallback);
+        view.setSelected(true);
+        return true;
+    }
+});
+</pre>
+
+<p>При вызове метода {@link android.app.Activity#startActionMode startActionMode()} система возвращает
+созданный класс {@link android.view.ActionMode}. Сохранив его в составной переменной, вы сможете
+вносить изменения в строку контекстных действий в ответ на другие события. В приведенном выше образце кода
+{@link android.view.ActionMode} используется для того, чтобы экземпляр {@link android.view.ActionMode}
+не создавался повторно, если он уже активен. Достигается это путем проверки, имеет ли элемент значение null перед запуском
+режима действий.</p>
+</li>
+</ol>
+
+
+
+<h4 id="CABforListView">Включение пакетных контекстных действий в ListView или GridView</h4>
+
+<p>Если при наличии набора элементов в {@link android.widget.ListView} или {@link
+android.widget.GridView} (либо другом расширении {@link android.widget.AbsListView}) требуется
+разрешить пользователям выполнять пакетные действия, следует:</p>
+
+<ul>
+  <li>реализовать интерфейс {@link android.widget.AbsListView.MultiChoiceModeListener} и задать его
+для группы представлений с помощью метода {@link android.widget.AbsListView#setMultiChoiceModeListener
+setMultiChoiceModeListener()}; в методах обратного вызова приемника событий вы можете указывать действия
+для строки контекстных действий, реагировать на нажатия пунктов действий и обрабатывать другие обратные вызовы,
+унаследованные от интерфейса {@link android.view.ActionMode.Callback};</li>
+
+  <li>вызвать метод {@link android.widget.AbsListView#setChoiceMode setChoiceMode()} с аргументом {@link
+android.widget.AbsListView#CHOICE_MODE_MULTIPLE_MODAL}.</li>
+</ul>
+
+<p>Например:</p>
+
+<pre>
+ListView listView = getListView();
+listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
+listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
+
+    &#64;Override
+    public void onItemCheckedStateChanged(ActionMode mode, int position,
+                                          long id, boolean checked) {
+        // Here you can do something when items are selected/de-selected,
+        // such as update the title in the CAB
+    }
+
+    &#64;Override
+    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+        // Respond to clicks on the actions in the CAB
+        switch (item.getItemId()) {
+            case R.id.menu_delete:
+                deleteSelectedItems();
+                mode.finish(); // Action picked, so close the CAB
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    &#64;Override
+    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+        // Inflate the menu for the CAB
+        MenuInflater inflater = mode.getMenuInflater();
+        inflater.inflate(R.menu.context, menu);
+        return true;
+    }
+
+    &#64;Override
+    public void onDestroyActionMode(ActionMode mode) {
+        // Here you can make any necessary updates to the activity when
+        // the CAB is removed. By default, selected items are deselected/unchecked.
+    }
+
+    &#64;Override
+    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+        // Here you can perform updates to the CAB due to
+        // an {@link android.view.ActionMode#invalidate} request
+        return false;
+    }
+});
+</pre>
+
+<p>Готово. Теперь, когда пользователь выберет элемент с помощью длительного нажатия, система вызовет метод {@link
+android.widget.AbsListView.MultiChoiceModeListener#onCreateActionMode onCreateActionMode()}
+и отобразит строку контекстных действий с указанными действиями. Пока строка
+контекстных действий отображается, пользователи могут выбирать дополнительные элементы.</p>
+
+<p>В некоторых случаях, когда контекстные действия содержат общие пункты, можно
+добавить флажок или другой подобный элемент пользовательского интерфейса, с помощью которого пользователи могут выбирать пункты, поскольку они
+могут не обнаружить варианта с длительным нажатием. Когда пользователь устанавливает флажок, можно
+вызывать режим контекстных действий, переводя соответствующий элемент списка в выбранное
+состояние с помощью {@link android.widget.AbsListView#setItemChecked setItemChecked()}.</p>
+
+
+
+
+<h2 id="PopupMenu">Создание всплывающего меню</h2>
+
+<div class="figure" style="width:220px">
+<img src="{@docRoot}images/ui/popupmenu.png" alt="" />
+<p><strong>Рисунок 4</strong>. Всплывающее меню в приложении Gmail, привязанное к расположенной вверху справа кнопке открытия панели
+дополнительных пунктов.</p>
+</div>
+
+<p>{@link android.widget.PopupMenu} является модальным меню, привязанным к {@link android.view.View}.
+Оно отображается ниже представления, к которому привязано, если там есть место, либо поверх него. Варианты использования:</p>
+<ul>
+  <li>Предоставление меню с дополнительными пунктами для действий, которые <em>относятся к</em> определенному контенту (например,
+к заголовкам сообщений Gmail, показанным на рисунке 4).
+    <p class="note"><strong>Примечание.</strong> Оно отличается от контекстного меню, которое
+обычно используется для действий, <em>затрагивающих</em> выбранный контент. Для действий, которые затрагивают выбранный
+контент, используйте <a href="#CAB">режим контекстных действий</a> или <a href="#FloatingContextMenu">плавающее контекстное меню</a>.</p></li>
+  <li>Предоставление второй части командной последовательности (например, кнопки, обозначенной как "Добавить",
+которая открывает всплывающее меню с различными вариантами добавления);</li>
+  <li>Предоставление раскрывающегося меню наподобие {@link android.widget.Spinner}, которое не сохраняет
+постоянное выделение.</li>
+</ul>
+
+
+<p class="note"><strong>Примечание.</strong> Использование класса {@link android.widget.PopupMenu} поддерживается на уровне API
+ 11 и выше.</p>
+
+<p>Если для <a href="#xml">определения меню используется XML</a>, вот каким образом можно показать всплывающее меню:</p>
+<ol>
+  <li>Создайте экземпляр класса {@link android.widget.PopupMenu} с помощью его конструктора, принимающий 
+текущие {@link android.content.Context} и {@link android.view.View} приложения, к которым
+должно быть привязано меню.</li>
+  <li>С помощью {@link android.view.MenuInflater} загрузите свой ресурс меню в объект {@link
+android.view.Menu}, возвращенный методом {@link
+android.widget.PopupMenu#getMenu() PopupMenu.getMenu()}. На API уровня 14 и выше вместо этого можно использовать
+{@link android.widget.PopupMenu#inflate PopupMenu.inflate()}.</li>
+  <li>Вызовите метод {@link android.widget.PopupMenu#show() PopupMenu.show()}.</li>
+</ol>
+
+<p>Например, вот кнопка с атрибутом {@link android.R.attr#onClick android:onClick},
+которая показывает всплывающее меню:</p>
+
+<pre>
+&lt;ImageButton
+    android:layout_width="wrap_content" 
+    android:layout_height="wrap_content" 
+    android:src="@drawable/ic_overflow_holo_dark"
+    android:contentDescription="@string/descr_overflow_button"
+    android:onClick="showPopup" />
+</pre>
+
+<p>После этого операция сможет показать вот такое всплывающее меню:</p>
+
+<pre>
+public void showPopup(View v) {
+    PopupMenu popup = new PopupMenu(this, v);
+    MenuInflater inflater = popup.getMenuInflater();
+    inflater.inflate(R.menu.actions, popup.getMenu());
+    popup.show();
+}
+</pre>
+
+<p>На API уровня 14 и выше можно объединить две строки, которые загружают меню, с помощью {@link
+android.widget.PopupMenu#inflate PopupMenu.inflate()}.</p>
+
+<p>Меню закрывается, когда пользователь выбирает один из пунктов или касается экрана за пределами области
+меню. Прослушивать событие закрытия меню можно с помощью {@link
+android.widget.PopupMenu.OnDismissListener}.</p>
+
+<h3 id="PopupEvents">Обработка нажатий</h3>
+
+<p>Для выполнения
+действия, когда пользователь выбирает пункт меню, необходимо реализовать интерфейс {@link
+android.widget.PopupMenu.OnMenuItemClickListener} и зарегистрировать его в своем {@link
+android.widget.PopupMenu}, вызвав метод {@link android.widget.PopupMenu#setOnMenuItemClickListener
+setOnMenuItemclickListener()}. Когда пользователь выбирает пункт меню, система выполняет обратный вызов {@link
+android.widget.PopupMenu.OnMenuItemClickListener#onMenuItemClick onMenuItemClick()} в
+вашем интерфейсе.</p>
+
+<p>Например:</p>
+
+<pre>
+public void showMenu(View v) {
+    PopupMenu popup = new PopupMenu(this, v);
+
+    // This activity implements OnMenuItemClickListener
+    popup.setOnMenuItemClickListener(this);
+    popup.inflate(R.menu.actions);
+    popup.show();
+}
+
+&#64;Override
+public boolean onMenuItemClick(MenuItem item) {
+    switch (item.getItemId()) {
+        case R.id.archive:
+            archive(item);
+            return true;
+        case R.id.delete:
+            delete(item);
+            return true;
+        default:
+            return false;
+    }
+}
+</pre>
+
+
+<h2 id="groups">Создание групп меню</h2>
+
+<p>Группа меню ― это набор пунктов меню с рядом общих характеристик. С помощью группы
+можно:</p>
+<ul>
+  <li>показывать или скрывать все пункты с помощью {@link android.view.Menu#setGroupVisible(int,boolean)
+setGroupVisible()};</li>
+  <li>включать или отключать все пункты с помощью {@link android.view.Menu#setGroupEnabled(int,boolean)
+setGroupEnabled()};</li>
+  <li>Указывать, можно ли помечать все пункты, с помощью {@link
+android.view.Menu#setGroupCheckable(int,boolean,boolean) setGroupCheckable()}.</li>
+</ul>
+
+<p>Для создания группы необходимо вложить элементы {@code &lt;item&gt;} в элемент {@code &lt;group&gt;}
+в своем ресурсе меню либо указать идентификатор группы с помощью метода {@link
+android.view.Menu#add(int,int,int,int) add()}.</p>
+
+<p>Вот пример ресурса меню, в котором имеется группа:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/menu_save"
+          android:icon="@drawable/menu_save"
+          android:title="@string/menu_save" /&gt;
+    &lt;!-- menu group --&gt;
+    &lt;group android:id="@+id/group_delete"&gt;
+        &lt;item android:id="@+id/menu_archive"
+              android:title="@string/menu_archive" /&gt;
+        &lt;item android:id="@+id/menu_delete"
+              android:title="@string/menu_delete" /&gt;
+    &lt;/group&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>Элементы, находящиеся в группе, отображаются на одном уровне с первым элементом &mdash; все три пункта
+меню являются элементами одного уровня. Однако можно изменить характеристики двух
+пунктов из группы, указав ссылку на идентификатор группы и воспользовавшись приведенными выше методами. Кроме того,
+система никогда не будет разделять сгруппированные пункты. Например, если объявить {@code
+android:showAsAction="ifRoom"} для каждого пункта, то они оба будут отображены либо в строке
+действий, либо в дополнительных действиях.</p>
+
+
+<h3 id="checkable">Использование пунктов меню, которые можно пометить</h3>
+
+<div class="figure" style="width:200px">
+  <img src="{@docRoot}images/radio_buttons.png" height="333" alt="" />
+  <p class="img-caption"><strong>Рисунок 5</strong>. Снимок экрана с вложенным меню, пункты которого можно
+пометить.</p>
+</div>
+
+<p>Такое меню можно использовать в качестве интерфейса для включения и отключения тех или иных параметров. При этом для автономных
+параметров используется флажок, а для групп
+взаимоисключающих вариантов ― переключатель. На рисунке 5 показано вложенное меню с пунктами, которые можно выбирать с помощью
+переключателей.</p>
+
+<p class="note"><strong>Примечание.</strong> Пункты в меню значков (из меню параметров) не могут
+отображать флажки или переключатели. Если вы решите сделать так, чтобы пункты меню значков можно было помечать,
+вам необходимо будет вручную указать помеченное состояние путем замены значка и/или теста
+при каждом изменении состояния.</p>
+
+<p>Определять возможность помечать отдельные пункты меню можно с помощью атрибута {@code
+android:checkable} в элементе {@code &lt;item&gt;}, а для всей группы это делается с помощью
+атрибута {@code android:checkableBehavior} в элементе {@code &lt;group&gt;}. Например
+, все пункты этой группы меню можно помечать с помощью переключателей:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;group android:checkableBehavior="single"&gt;
+        &lt;item android:id="@+id/red"
+              android:title="@string/red" /&gt;
+        &lt;item android:id="@+id/blue"
+              android:title="@string/blue" /&gt;
+    &lt;/group&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>Атрибут {@code android:checkableBehavior} принимает один из трех параметров:
+<dl>
+  <dt>{@code single}</dt>
+    <dd>Только один пункт из группы можно пометить (переключатель)</dd>
+  <dt>{@code all}</dt>
+    <dd>Все пункты можно пометить (флажки)</dd>
+  <dt>{@code none}</dt>
+    <dd>Пометить нельзя ни один пункт</dd>
+</dl>
+
+<p>Для того чтобы применить к пункту помеченное состояние по умолчанию, служит атрибут {@code android:checked} в
+элементе {@code &lt;item&gt;}, а изменить его в коде можно с помощью метода {@link
+android.view.MenuItem#setChecked(boolean) setChecked()}.</p>
+
+<p>Когда выбирается пункт, который может быть помечен, система вызывает соответствующий ему метод обратного вызова
+(например {@link android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}). Именно
+здесь необходимо задать состояние флажка, поскольку флажок или переключатель не
+изменяет свое состояние автоматически. Запросить текущее состояние пункта (в котором он находился до того, как был
+выбран пользователем) можно с помощью{@link android.view.MenuItem#isChecked()}, а затем задать помеченное состояние с помощью 
+{@link android.view.MenuItem#setChecked(boolean) setChecked()}. Например:</p>
+
+<pre>
+&#64;Override
+public boolean onOptionsItemSelected(MenuItem item) {
+    switch (item.getItemId()) {
+        case R.id.vibrate:
+        case R.id.dont_vibrate:
+            if (item.isChecked()) item.setChecked(false);
+            else item.setChecked(true);
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+    }
+}
+</pre>
+
+<p>Если помеченное состояние не установить этим способом, то, когда пользователь выберет пункт, его отображаемое состояние (флажок или
+переключатель) не
+изменится. Если же помеченное состояние установить, операция сохранит его
+для пункта, с тем чтобы, когда пользователь откроет это меню, он увидел,
+что галочка поставлена.</p>
+
+<p class="note"><strong>Примечание.</strong>
+Пункты меню, которые можно пометить галочкой, предназначены для использования только в рамках одного сеанса. Они не сохраняются после
+прекращения существования приложения. Если имеются настройки приложения, которые требуется сохранить для пользователя,
+делать это следует с помощью <a href="{@docRoot}guide/topics/data/data-storage.html#pref">общих настроек</a>.</p>
+
+
+
+<h2 id="intents">Добавление пунктов меню на основе объектов Intent</h2>
+
+<p>Иногда требуется, чтобы пункт меню запускал операцию с помощью объекта {@link android.content.Intent}
+(это может быть операция как из вашего, так и из другого приложения). Когда вам известен объект Intent, который
+требуется использовать, и у вас есть определенный пункт меню, который должен инициировать этот объект Intent, можно выполнить объект
+Intent с помощью {@link android.app.Activity#startActivity(Intent) startActivity()} во время
+выполнения соответствующего метода обратного вызова, запускаемого при выборе пункта меню (например, обратного вызова {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}).</p>
+
+<p>Однако если вы не уверены, что на устройстве пользователя
+есть приложение, которое может обработать этот объект Intent, добавление пункта меню, который его вызывает, может привести
+к тому, что он не будет работать, поскольку объект Intent может не быть передан в
+операцию. Чтобы решить эту проблему, Android позволяет динамически добавлять в меню пункты,
+когда система Android обнаруживает на устройстве операции, которые могут обработать ваш объект Intent.</p>
+
+<p>Добавление пунктов меню на основе имеющихся операций, которые принимают объект Intent:</p>
+<ol>
+  <li>Определите объект
+с категорией {@link android.content.Intent#CATEGORY_ALTERNATIVE} и/или
+{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE}, а также с любыми другими условиями.</li>
+  <li>Вызовите метод {@link
+android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+Menu.addIntentOptions()}. Затем Android выполнит поиск приложений, которые могут выполнить этот объект Intent,
+и добавит их в ваше меню.</li>
+</ol>
+
+<p>При отсутствии установленных приложений,
+которые удовлетворяют требованиям объекта Intent, ни одного пункта меню добавлено не будет.</p>
+
+<p class="note"><strong>Примечание.</strong>
+{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} используется для обработки элемента, выбранного
+в данный момент на экране. Поэтому его следует использовать только при создании меню в {@link
+android.app.Activity#onCreateContextMenu(ContextMenu,View,ContextMenuInfo)
+onCreateContextMenu()}.</p>
+
+<p>Например:</p>
+
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu){
+    super.onCreateOptionsMenu(menu);
+
+    // Create an Intent that describes the requirements to fulfill, to be included
+    // in our menu. The offering app must include a category value of Intent.CATEGORY_ALTERNATIVE.
+    Intent intent = new Intent(null, dataUri);
+    intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
+
+    // Search and populate the menu with acceptable offering applications.
+    menu.addIntentOptions(
+         R.id.intent_group,  // Menu group to which new items will be added
+         0,      // Unique item ID (none)
+         0,      // Order for the items (none)
+         this.getComponentName(),   // The current activity name
+         null,   // Specific items to place first (none)
+         intent, // Intent created above that describes our requirements
+         0,      // Additional flags to control items (none)
+         null);  // Array of MenuItems that correlate to specific items (none)
+
+    return true;
+}</pre>
+
+<p>Каждая обнаруженная операция, в которой имеется фильтр Intent, соответствующий данному объекту Intent, добавляется в виде
+пункта меню. Для этого значение из элемента <code>android:label</code> фильтра Intent используется в качестве
+заголовка пункта меню, а значок приложения ― в качестве значка этого пункта меню. Метод
+{@link android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+addIntentOptions()} возвращает количество добавленных пунктов меню.</p>
+
+<p class="note"><strong>Примечание.</strong> При вызове метода {@link
+android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+addIntentOptions()} он переопределяет все пункты меню по группе меню, указанной в первом
+аргументе.</p>
+
+
+<h3 id="AllowingToAdd">Предоставление возможности добавить свою операцию в другие меню</h3>
+
+<p>Вы также можете предоставить другим приложениям возможность воспользоваться своей операцией, с тем чтобы ваше
+приложение могло быть включено в меню других приложений (процедура, обратная описанной выше).</p>
+
+<p>Чтобы операция могла быть включена в меню других приложений, необходимо определить фильтр
+Intent обычным образом, но непременно включить в него значения {@link android.content.Intent#CATEGORY_ALTERNATIVE}
+и/или {@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} для категории фильтра
+Intent. Например:</p>
+<pre>
+&lt;intent-filter label="&#64;string/resize_image">
+    ...
+    &lt;category android:name="android.intent.category.ALTERNATIVE" />
+    &lt;category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
+    ...
+&lt;/intent-filter>
+</pre>
+
+<p>Подробные сведения о написании фильтров Intent см. в документе 
+<a href="/guide/components/intents-filters.html">Объекты Intent и фильтры объектов Intent</a>.</p>
+
+<p>Образец приложения, в котором используется эта методика, см. в образце кода 
+<a href="{@docRoot}resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html">Note
+Pad</a>.</p>
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/notifiers/notifications.jd b/docs/html-intl/intl/ru/guide/topics/ui/notifiers/notifications.jd
new file mode 100644
index 0000000..d072b77
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/ui/notifiers/notifications.jd
@@ -0,0 +1,979 @@
+page.title=Уведомления
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Содержание документа</h2>
+<ol>
+  <li><a href="#Design">Рекомендации по разработке</a></li>
+  <li><a href="#CreateNotification">Создание уведомления</a>
+    <ol>
+      <li><a href="#Required">Обязательное содержимое уведомления</a></li>
+      <li><a href="#Optional">Необязательные содержимое и настройки уведомления</a></li>
+      <li><a href="#Actions">Действия уведомлений</a></li>
+      <li><a href="#Priority">Приоритет уведомлений</a></li>
+      <li><a href="#SimpleNotification">Создание простого уведомления</a></li>
+      <li><a href="#ApplyStyle">Применение расширенного макета к уведомлению</a></li>
+      <li><a href="#Compatibility">Вопросы совместимости</a></li>
+    </ol>
+  </li>
+  <li><a href="#Managing">Управление уведомлениями</a>
+    <ol>
+      <li><a href="#Updating">Обновление уведомлений</a></li>
+      <li><a href="#Removing">Удаление уведомлений</a></li>
+    </ol>
+  </li>
+  <li><a href="#NotificationResponse">Сохранение навигации при запуске операции</a>
+    <ol>
+      <li><a href="#DirectEntry">Настройка PendingIntent обычной операции</a></li>
+      <li><a href="#ExtendedNotification">Настройка PendingIntent особой операции</a></li>
+    </ol>
+  </li>
+  <li><a href="#Progress">Отображение хода выполнения в уведомлении</a>
+    <ol>
+      <li><a href="#FixedProgress">Отображение индикатора хода выполнения фиксированной продолжительности</a></li>
+      <li><a href="#ActivityIndicator">Отображение непрерывного индикатора операции</a></li>
+    </ol>
+  </li>
+  <li><a href="#metadata">Метаданные уведомления</a></li>
+  <li><a href="#Heads-up">Уведомления heads-up</a></li>
+  <li><a href="#lockscreenNotification">Уведомления на экране блокировки</a></li>
+    <ol>
+      <li><a href="#visibility">Настройка видимости</a></li>
+      <li><a href="#controllingMedia">Управление воспроизведением мультимедиа на экране блокировки</a></li>
+    </ol>
+  <li><a href="#CustomNotification">Нестандартные макеты уведомлений</a></li>
+</ol>
+
+    <h2>Основные классы</h2>
+    <ol>
+        <li>{@link android.app.NotificationManager}</li>
+        <li>{@link android.support.v4.app.NotificationCompat}</li>
+    </ol>
+    <h2>Видеоролики</h2>
+    <ol>
+        <li>
+            <a href="http://www.youtube.com/watch?v=Yc8YrVc47TI&amp;feature=player_detailpage#t=1672s">
+            Уведомления в 4.1</a>
+        </li>
+    </ol>
+<h2>См. также</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}design/patterns/notifications.html">Дизайн Android: уведомления</a>
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    Уведомление ― это сообщение, которое может быть выведено на экран за пределами обычного пользовательского
+    интерфейса приложения. Когда вы сообщаете системе о необходимости выдать уведомление, оно сначала отображается в виде значка в
+    <strong>области уведомлений</strong>. Чтобы просмотреть подробные сведения об уведомлении, пользователь открывает
+    <strong>панель уведомлений</strong>. И областью уведомлений, и панелью уведомлений
+    управляет система, а пользователь может их просматривать в любое время.
+</p>
+<img id="figure1" src="{@docRoot}images/ui/notifications/notification_area.png" height="" alt="" />
+<p class="img-caption">
+    <strong>Рисунок 1.</strong> Уведомления в области уведомлений.
+</p>
+<img id="figure2" src="{@docRoot}images/ui/notifications/notification_drawer.png" width="280px" alt="" />
+<p class="img-caption">
+    <strong>Рисунок 2.</strong> Уведомления в панели уведомлений.
+</p>
+
+<p class="note"><strong>Примечание.</strong> Если не указано иное, в этом руководстве речь идет о классе
+{@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder}
+в версии 4 <a href="{@docRoot}tools/support-library/index.html">вспомогательной библиотеки</a>.
+Класс{@link android.app.Notification.Builder Notification.Builder} был добавлен в Android
+3.0 (уровень API 11).</p>
+
+<h2 id="Design">Рекомендации по разработке</h2>
+
+<p>Поскольку уведомления являются как важной составной частью пользовательского интерфейса Android, для них имеются собственные инструкции по проектированию.
+Появившиеся в Android 5.0 (уровень API 21) значительные изменения дизайна имеют особо важное
+значение, поэтому для получения более подробной информации вам следует ознакомиться с учебником по интерфейсу <a href="{@docRoot}training/material/index.html">Material Design</a>
+. Чтобы узнать, как проектировать уведомления и взаимодействие с ними, прочитайте руководство по проектированию 
+<a href="{@docRoot}design/patterns/notifications.html">Уведомления</a>.</p>
+
+<h2 id="CreateNotification">Создание уведомления</h2>
+
+<p>Информация о пользовательском интерфейсе и действия для уведомления указываются в объекте
+{@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder}.
+Чтобы создать само уведомление, вызывается метод
+{@link android.support.v4.app.NotificationCompat.Builder#build NotificationCompat.Builder.build()},
+который возвращает объект {@link android.app.Notification}, содержащий заданные вами спецификации. Чтобы выдать
+уведомление, объект {@link android.app.Notification} передается в систему путем вызова метода
+{@link android.app.NotificationManager#notify NotificationManager.notify()}.</p>
+
+<h3 id="Required">Обязательное содержимое уведомления</h3>
+<p>
+    Объект {@link android.app.Notification} <em>должен</em> содержать следующие элементы:
+</p>
+<ul>
+    <li>
+        небольшой значок, заданный с помощью
+        {@link android.support.v4.app.NotificationCompat.Builder#setSmallIcon setSmallIcon()};
+    </li>
+    <li>
+        заголовок, заданный с помощью
+        {@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()};
+    </li>
+    <li>
+        подробный текст, заданный с помощью
+        {@link android.support.v4.app.NotificationCompat.Builder#setContentText setContentText()}.
+    </li>
+</ul>
+<h3 id="Optional">Необязательные содержимое и настройки уведомления</h3>
+<p>
+    Все прочие настройки и содержимое уведомления являются необязательными. Подробные сведения о них
+    см. в справочной документации по {@link android.support.v4.app.NotificationCompat.Builder}.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Actions">Действия уведомлений</h3>
+<p>
+    Несмотря на то что действия не являются обязательными, в уведомление необходимо добавить хотя бы одно из них.
+    Действие позволяет пользователю перейти из уведомления прямо к
+    операции {@link android.app.Activity} из вашего приложения, где они могут просмотреть одно или несколько событий
+    либо выполнить какую-либо другую работу.
+</p>
+<p>
+    Уведомление может предоставлять возможность выполгить несколько действий. Следует всегда определять действие, которое
+    вызывается, когда пользователь нажимает уведомление; обычно это действие открывает
+    операцию {@link android.app.Activity} из вашего приложения. В уведомление также можно добавлять кнопки,
+    которые выполняют дополнительные действия, например отключение сигнала будильника или немедленный ответ на текстовое
+    сообщение; эта функция поддерживается начиная с версии Android 4.1. Если используются дополнительные кнопки действий, то также
+    необходимо сделать их функции доступными в операции {@link android.app.Activity} из вашего приложения (подробные
+    сведения см. в разделе <a href="#Compatibility">Вопросы совместимости</a>).
+</p>
+<p>
+    Внутри класса {@link android.app.Notification} само действие определяется
+    объектом {@link android.app.PendingIntent}, содержащим объект
+    {@link android.content.Intent}, который запускает
+    операцию {@link android.app.Activity} из вашего приложения. Чтобы связать объект
+    {@link android.app.PendingIntent} с жестом, вызовите соответствующий метод
+    {@link android.support.v4.app.NotificationCompat.Builder}. Например, если вам требуется запустить
+    операцию {@link android.app.Activity}, когда пользователь нажимает текст уведомления в
+    панели уведомлений, вы добавляете объект {@link android.app.PendingIntent} путем вызова метода
+    {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent setContentIntent()}.
+</p>
+<p>
+    Запуск операции {@link android.app.Activity}, когда пользователь нажимает уведомление, является
+    наиболее распространенным вариантом действия. Операцию {@link android.app.Activity} также можно запускать, когда пользователь
+    закрывает уведомление. В версии Android 4.1 или более поздних версиях запускать
+    операцию {@link android.app.Activity} можно с помощью кнопки действия. Подробные сведения см. в справочном руководстве по классу
+    {@link android.support.v4.app.NotificationCompat.Builder}.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Priority">Приоритет уведомлений</h3>
+<p>
+    При желании уведомлению можно задать приоритет. Приоритет действует
+    как подсказка пользовательскому интерфейсу устройства о том, каким образом следует выводить уведомление.
+    Чтобы задать приоритет уведомления, вызовите метод {@link
+    android.support.v4.app.NotificationCompat.Builder#setPriority(int)
+    NotificationCompat.Builder.setPriority()} и передайте ему одну из констант приоритетов {@link
+    android.support.v4.app.NotificationCompat}. Имеется
+    пять уровней приоритета, начиная от {@link
+    android.support.v4.app.NotificationCompat#PRIORITY_MIN} (-2) и до {@link
+    android.support.v4.app.NotificationCompat#PRIORITY_MAX} (2). Если приоритет не задан,
+    то по умолчанию он будет иметь значение {@link
+    android.support.v4.app.NotificationCompat#PRIORITY_DEFAULT} (0).
+</p>
+<p> Сведения о присвоении подходящего уровня приоритета см. в разделе "Правильная настройка
+    приоритета уведомления и управление им" в руководстве "Разработка <a href="{@docRoot}design/patterns/notifications.html">уведомлений</a>"
+.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="SimpleNotification">Создание простого уведомления</h3>
+<p>
+    Следующий фрагмент кода иллюстрирует простое уведомление, указывающее операцию, которую нужно будет открыть, когда
+    пользователь нажмет уведомление. Обратите внимание, что этот код создает объект
+    {@link android.support.v4.app.TaskStackBuilder} и использует его для создания объекта
+    {@link android.app.PendingIntent} для действия. Более подробно этот шаблон описан
+    в разделе <a href="#NotificationResponse">
+    "Сохранение навигации при запуске операции"</a>:
+</p>
+<pre>
+NotificationCompat.Builder mBuilder =
+        new NotificationCompat.Builder(this)
+        .setSmallIcon(R.drawable.notification_icon)
+        .setContentTitle("My notification")
+        .setContentText("Hello World!");
+// Creates an explicit intent for an Activity in your app
+Intent resultIntent = new Intent(this, ResultActivity.class);
+
+// The stack builder object will contain an artificial back stack for the
+// started Activity.
+// This ensures that navigating backward from the Activity leads out of
+// your application to the Home screen.
+TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
+// Adds the back stack for the Intent (but not the Intent itself)
+stackBuilder.addParentStack(ResultActivity.class);
+// Adds the Intent that starts the Activity to the top of the stack
+stackBuilder.addNextIntent(resultIntent);
+PendingIntent resultPendingIntent =
+        stackBuilder.getPendingIntent(
+            0,
+            PendingIntent.FLAG_UPDATE_CURRENT
+        );
+mBuilder.setContentIntent(resultPendingIntent);
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// mId allows you to update the notification later on.
+mNotificationManager.notify(mId, mBuilder.build());
+</pre>
+<p>Готово. Теперь пользователь получит уведомление.</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ApplyStyle">Применение расширенного макета к уведомлению</h3>
+<p>
+    Чтобы уведомление отображалось в расширенном виде, сначала создайте объект
+    {@link android.support.v4.app.NotificationCompat.Builder} с требуемыми параметрами
+    обычного представления. Затем вызовите метод {@link android.support.v4.app.NotificationCompat.Builder#setStyle
+    Builder.setStyle()}, первым аргументом которого должен быть объект расширенного макета.
+</p>
+<p>
+    Помните, что расширенные уведомления не поддерживаются на платформах версии более ранней, чем Android 4.1. Сведения
+    о том, как обрабатывать уведомления для версий платформы Android 4.1 и более ранних, см. в
+    разделе <a href="#Compatibility">Вопросы совместимости</a>.
+</p>
+<p>
+    Например, следующий фрагмент кода демонстрирует, каким образом следует изменить уведомление, созданное
+    в предыдущем фрагменте, чтобы использовать расширенный макет:
+</p>
+<pre>
+NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
+    .setSmallIcon(R.drawable.notification_icon)
+    .setContentTitle("Event tracker")
+    .setContentText("Events received")
+NotificationCompat.InboxStyle inboxStyle =
+        new NotificationCompat.InboxStyle();
+String[] events = new String[6];
+// Sets a title for the Inbox in expanded layout
+inboxStyle.setBigContentTitle("Event tracker details:");
+...
+// Moves events into the expanded layout
+for (int i=0; i &lt; events.length; i++) {
+
+    inboxStyle.addLine(events[i]);
+}
+// Moves the expanded layout object into the notification object.
+mBuilder.setStyle(inBoxStyle);
+...
+// Issue the notification here.
+</pre>
+
+<h3 id="Compatibility">Вопросы совместимости</h3>
+
+<p>
+    Не все функции уведомлений поддерживаются в той или иной версии платформы, даже несмотря на то, что
+    методы для их задания имеются в классе вспомогательной библиотеки
+    {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder}.
+    Например, кнопки действий, которые зависят от расширенных уведомлений, отображаются только в версии Android
+    4.1 и последующих версиях, поскольку сами расширенные уведомления поддерживаются только начиная с версии
+    Android 4.1.
+</p>
+<p>
+    Для обеспечения наилучшей совместимости создавать уведомления следует с помощью класса
+    {@link android.support.v4.app.NotificationCompat NotificationCompat} и его подклассов,
+    в частности {@link android.support.v4.app.NotificationCompat.Builder
+    NotificationCompat.Builder}. Кроме того, при реализации уведомления придерживайтесь вот такого процесса:
+</p>
+<ol>
+    <li>
+        Предоставляйте все функции уведомления всем пользователям независимо от используемой ими
+        версии. Для этого убедитесь, что все функции вызываются из
+        операции {@link android.app.Activity} в вашем приложении. Возможно, для этого вам потребуется добавить новый объект
+        {@link android.app.Activity}.
+        <p>
+            Например, если требуется использовать
+            {@link android.support.v4.app.NotificationCompat.Builder#addAction addAction()} для
+            создания элемента управления, который останавливает и запускает воспроизведение мультимедиа, сначала реализуйте этот
+            элемент управления в операции {@link android.app.Activity} из вашего приложения.
+        </p>
+    </li>
+    <li>
+        Обеспечьте доступ к этой функции операции {@link android.app.Activity} всех пользователей,
+        сделав так, чтобы эта операция запускалась, когда пользователь нажимает уведомление. Для этого
+        создайте объект {@link android.app.PendingIntent}
+        для операции {@link android.app.Activity}. Вызовите 
+        {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+        setContentIntent()}, чтобы добавить объект {@link android.app.PendingIntent} в уведомление.
+    </li>
+    <li>
+        Затем добавьте в свое уведомление требуемые функции расширенного уведомления. Помните,
+        что любая добавляемая функция должна быть предусмотрена в операции {@link android.app.Activity},
+        которая запускается, когда пользователь нажимает уведомление.
+    </li>
+</ol>
+
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="Managing">Управление уведомлениями</h2>
+<p>
+    Когда уведомление требуется выдать несколько раз для однотипных событий, не следует
+    создавать совершенно новое уведомление. Вместо этого рассмотрите возможность обновить
+    предыдущее уведомление либо путем изменения некоторых его значений, либо путем добавления в него значений, либо обоими этими способами.
+</p>
+<p>
+    Например, Gmail уведомляет пользователя о поступлении новых сообщений электронной почты путем увеличения счетчика
+    непрочитанных сообщений и добавления в уведомления кратких сведений о каждом из них. Это называется
+    "укладкой уведомлений в стопку" (stacking) и подробно описано в  руководстве
+    "Разработка <a href="{@docRoot}design/patterns/notifications.html">уведомлений</a>".
+</p>
+<p class="note">
+    <strong>Примечание.</strong> Для этой функции Gmail требуется расширенный макет папки входящих сообщений, который
+    входит в состав функции расширенных уведомлений, поддержка которой предусмотрена начиная с версии Android 4.1.
+</p>
+<p>
+    В разделах ниже описано, как обновлять уведомления, а также как удалять их.
+</p>
+<h3 id="Updating">Обновление уведомлений</h3>
+<p>
+    Чтобы настроить уведомление таким образом, что его впоследствии можно было обновлять, его следует выдавать с идентификатором уведомления путем
+    вызова метода {@link android.app.NotificationManager#notify(int, android.app.Notification) NotificationManager.notify()}.
+    Чтобы изменить это уведомление, после того как оно выдано,
+    обновите или создайте объект {@link android.support.v4.app.NotificationCompat.Builder},
+    постройте на его основе объект {@link android.app.Notification} и выдайте 
+    объект {@link android.app.Notification} с тем же идентификатором, который использовался ранее. Если
+    предыдущее уведомление все еще отображается на экране, система обновит его с использованием содержимого
+    объекта{@link android.app.Notification}. Если предыдущее уведомление было закрыто, то
+    вместо него будет создано новое уведомление.
+</p>
+<p>
+    Следующий фрагмент кода демонстрирует уведомление, которое обновляется с учетом
+    количества произошедших событий. Он накладывает уведомления друг на друга (укладывает в стопку), отображая сводную информацию:
+</p>
+<pre>
+mNotificationManager =
+        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// Sets an ID for the notification, so it can be updated
+int notifyID = 1;
+mNotifyBuilder = new NotificationCompat.Builder(this)
+    .setContentTitle("New Message")
+    .setContentText("You've received new messages.")
+    .setSmallIcon(R.drawable.ic_notify_status)
+numMessages = 0;
+// Start of a loop that processes data and then notifies the user
+...
+    mNotifyBuilder.setContentText(currentText)
+        .setNumber(++numMessages);
+    // Because the ID remains unchanged, the existing notification is
+    // updated.
+    mNotificationManager.notify(
+            notifyID,
+            mNotifyBuilder.build());
+...
+</pre>
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Removing">Удаление уведомлений</h3>
+<p>
+    Уведомления отображаются на экране, пока не произойдет одно из следующих событий:
+</p>
+<ul>
+    <li>
+        пользователь закроет уведомления по одному или командой "Очистить все" (если
+        уведомление можно очистить);
+    </li>
+    <li>
+        пользователь нажмет уведомление, а вы вызвали метод
+        {@link android.support.v4.app.NotificationCompat.Builder#setAutoCancel setAutoCancel()}, когда
+        создавали уведомление;
+    </li>
+    <li>
+        вы вызовете метод {@link android.app.NotificationManager#cancel(int) cancel()} для уведомления с определенным
+        идентификатором. Кроме того, этот метод удаляет текущие уведомления;
+    </li>
+    <li>
+        вы вызовете метод {@link android.app.NotificationManager#cancelAll() cancelAll()}, который удаляет
+        все ранее выданные вами уведомления.
+    </li>
+</ul>
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="NotificationResponse">Сохранение навигации при запуске операции</h2>
+<p>
+    Когда вы запускаете операцию {@link android.app.Activity} из уведомления, вам необходимо сохранить
+    привычные пользователю приемы навигации. При нажатии <i>"Назад"</i> пользователь должен возвращаться назад в
+    обычном потоке операций приложения вплоть до главного экрана, а при нажатии <i>"Последние"</i> операция
+    {@link android.app.Activity} должна быть отображена как отдельная задача. Чтобы сохранить приемы навигации, операцию
+    {@link android.app.Activity} следует запускать в новой задаче. Как настроить объект
+    {@link android.app.PendingIntent} таким образом, чтобы получить новую задачу, зависит от типа операции
+    {@link android.app.Activity}, которую вы запускаете. В целом есть две ситуации:
+</p>
+<dl>
+    <dt>
+        Обычная операция
+    </dt>
+    <dd>
+        Вы запускаете операцию {@link android.app.Activity}, которая является частью обычного потока
+        работы приложения. В этом случае настройте объект {@link android.app.PendingIntent} на
+        запуск новой задачи и предоставьте объекту {@link android.app.PendingIntent} стек переходов назад,
+        который воспроизводит обычную работу приложения в ситуации, когда пользователь нажимает <i>"Назад"</i> .
+        <p>
+            Это можно увидеть на примере уведомлений приложения Gmail. При нажатии уведомления для
+            одного сообщения электронной почты отображается само сообщение. При нажатии <b>Назад</b> вы переходите
+            назад по представлениям Gmail вплоть до главного экрана точно так же, как если бы вы вошли в Gmail с
+            главного экрана, а не из уведомления.
+        </p>
+        <p>
+            Происходит это независимо от того, в каком приложении вы находились в тот момент, когда нажали
+            уведомление. Например, если при составлении сообщения в Gmail вы нажмете
+            уведомление об одном сообщении электронной почты, вы сразу же перейдете в это сообщение. При нажатии <i>"Назад"</i>
+            вы перейдете в папку входящих сообщений, а затем на главный экран, а не в
+            сообщение, которое составляли.
+        </p>
+    </dd>
+    <dt>
+        Особая операция
+    </dt>
+    <dd>
+        Пользователь может увидеть эту операцию {@link android.app.Activity}, только если она запущена из уведомления.
+        В некотором смысле операция {@link android.app.Activity} расширяет уведомление путем предоставления
+        информации, которую было бы сложно отобразить в самом уведомлении. В этом случае
+        настройте объект {@link android.app.PendingIntent} на запуск в новой задаче. При этом создавать
+        стек переходов назад не требуется, поскольку запущенная операция {@link android.app.Activity} не является частью
+        потока операций приложения. При нажатии <i>"Назад"</i> пользователь все же перейдет на
+        главный экран.
+    </dd>
+</dl>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="DirectEntry">Настройка PendingIntent обычной операции</h3>
+<p>
+    Чтобы настроить объект {@link android.app.PendingIntent}, который непосредственно запускает операцию
+    {@link android.app.Activity}, выполните следующие шаги:
+</p>
+<ol>
+    <li>
+        Определите иерархию операций {@link android.app.Activity} своего приложения в файле манифеста.
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                Добавьте поддержку для версии Android 4.0.3 и более ранних версий. Для этого укажите родительский объект операции
+                {@link android.app.Activity}, которую запускаете, добавив элемент
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
+                в качестве дочернего для элемента 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>.
+                <p>
+                    Для этого элемента задайте
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a>="android.support.PARENT_ACTIVITY"</code>.
+                    Задайте
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#val">android:value</a>="&lt;parent_activity_name&gt;"</code>,
+                    где <code>&lt;parent_activity_name&gt;</code> ― это значение 
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a></code>
+                    для родительского элемента
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+. В качестве примера см. следующий код XML.
+                </p>
+            </li>
+            <li>
+                Также добавьте поддержку для версии Android 4.1 и более поздних версий. Для этого добавьте атрибут 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#parent">android:parentActivityName</a></code>
+                в элемент
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+                запускаемой операции{@link android.app.Activity}.
+            </li>
+        </ol>
+        <p>
+            Итоговый код XML должен выглядеть следующим образом:
+        </p>
+<pre>
+&lt;activity
+    android:name=".MainActivity"
+    android:label="&#64;string/app_name" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+&lt;activity
+    android:name=".ResultActivity"
+    android:parentActivityName=".MainActivity"&gt;
+    &lt;meta-data
+        android:name="android.support.PARENT_ACTIVITY"
+        android:value=".MainActivity"/&gt;
+&lt;/activity&gt;
+</pre>
+    </li>
+    <li>
+        Создайте стек переходов назад, основанный на объекте {@link android.content.Intent}, который запускает операцию
+        {@link android.app.Activity}:
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                Создайте объект {@link android.content.Intent}, который запускает операцию {@link android.app.Activity}.
+            </li>
+            <li>
+                Создайте построитель стека, вызвав метод {@link android.app.TaskStackBuilder#create
+                TaskStackBuilder.create()}.
+            </li>
+            <li>
+                Добавьте стек переходов назад в построитель стеков путем вызова метода
+                {@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}.
+                Для каждой операции {@link android.app.Activity} из иерархии, определенной в
+                файле манифеста, в стеке переходов назад имеется объект {@link android.content.Intent}, который
+                запускает {@link android.app.Activity}. Этот метод также добавляет флаги, которые запускают
+                стек в новой задаче.
+                <p class="note">
+                    <strong>Примечание.</strong> Несмотря на то что аргумент 
+                    {@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}
+                    является ссылкой на запускаемую операцию {@link android.app.Activity}, при вызове этого метода
+                    не добавляется объект {@link android.content.Intent}, который запускает операцию
+                    {@link android.app.Activity}. Это делается на следующем шаге.
+                </p>
+            </li>
+            <li>
+                Добавьте объект {@link android.content.Intent}, который запускает операцию {@link android.app.Activity}
+                из уведомления, путем вызова метода
+                {@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()}.
+                Передайте объект {@link android.content.Intent}, созданный вами на первом шаге, в качестве
+                аргумента методу
+                {@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()}.
+            </li>
+            <li>
+                При необходимости добавьте аргументы в объекты {@link android.content.Intent} из
+                стека путем вызова метода {@link android.support.v4.app.TaskStackBuilder#editIntentAt
+                TaskStackBuilder.editIntentAt()}. Иногда это требуется для того, чтобы
+                целевая операция {@link android.app.Activity} отображала значимые данные, когда пользователь переходит
+                в нее с помощью действия <i>"Назад"</i>.
+            </li>
+            <li>
+                Получите объект {@link android.app.PendingIntent} для этого стека переходов назад путем вызова метода 
+                {@link android.support.v4.app.TaskStackBuilder#getPendingIntent getPendingIntent()}.
+                Затем этот объект {@link android.app.PendingIntent} можно будет использовать в качестве аргумента для метода
+                {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+                setContentIntent()}.
+            </li>
+        </ol>
+     </li>
+</ol>
+<p>
+    Следующий фрагмент кода демонстрирует этот процесс:
+</p>
+<pre>
+...
+Intent resultIntent = new Intent(this, ResultActivity.class);
+TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
+// Adds the back stack
+stackBuilder.addParentStack(ResultActivity.class);
+// Adds the Intent to the top of the stack
+stackBuilder.addNextIntent(resultIntent);
+// Gets a PendingIntent containing the entire back stack
+PendingIntent resultPendingIntent =
+        stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
+...
+NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+builder.setContentIntent(resultPendingIntent);
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+mNotificationManager.notify(id, builder.build());
+</pre>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ExtendedNotification">Настройка PendingIntent особой операции</h3>
+<p>
+    В приведенном далее разделе описывается настройка объекта
+    {@link android.app.PendingIntent} для особой операции.
+</p>
+<p>
+    Особой операции {@link android.app.Activity} не требуется стек перехода назад, поэтому не нужно
+    определять иерархию объектов {@link android.app.Activity} в файле манифеста и
+    вызывать
+    метод {@link android.support.v4.app.TaskStackBuilder#addParentStack  addParentStack()} для построения 
+    стека перехода назад. Вместо этого в файле манифеста задайте параметры задачи {@link android.app.Activity}
+    и создайте объект {@link android.app.PendingIntent} путем вызова метода
+    {@link android.app.PendingIntent#getActivity getActivity()}:
+</p>
+<ol>
+    <li>
+        Добавьте следующие атрибуты в элемент
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+        в файле манифеста для операции {@link android.app.Activity}
+        <dl>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#nm">android:name</a>="<i>activityclass</i>"</code>
+            </dt>
+            <dd>
+                Полное имя класса операции.
+            </dd>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">android:taskAffinity</a>=""</code>
+            </dt>
+            <dd>
+                В сочетании с 
+                флагом {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK},
+                который вы задали в коде, это гарантирует, что данная операция {@link android.app.Activity} не
+                перейдет в задачу приложения, используемую по умолчанию. Любые существующие задачи, имеющие
+                отношение к используемой по умолчанию задаче приложения, затронуты не будут.
+            </dd>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">android:excludeFromRecents</a>="true"</code>
+            </dt>
+            <dd>
+                Исключает новую задачу из списка <i>"Последние",</i>с тем чтобы пользователь не мог случайно
+                вернуться в нее.
+            </dd>
+        </dl>
+        <p>
+            Данный элемент показан в этом фрагменте кода:
+        </p>
+<pre>
+&lt;activity
+    android:name=".ResultActivity"
+...
+    android:launchMode="singleTask"
+    android:taskAffinity=""
+    android:excludeFromRecents="true"&gt;
+&lt;/activity&gt;
+...
+</pre>
+    </li>
+    <li>
+        Построение и выдача уведомления:
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                Создайте объект {@link android.content.Intent}, который запускает операцию 
+                {@link android.app.Activity}.
+            </li>
+            <li>
+                Настройте операцию {@link android.app.Activity}, запускаемую в новой пустой задаче, путем вызова метода 
+                {@link android.content.Intent#setFlags setFlags()} с флагами
+                {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK}
+                и
+                {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TASK FLAG_ACTIVITY_CLEAR_TASK}.
+            </li>
+            <li>
+                Задайте для объекта {@link android.content.Intent} любые другие требуемые параметры.
+            </li>
+            <li>
+                Создайте объект {@link android.app.PendingIntent} из объекта {@link android.content.Intent}
+                путем вызова метода  {@link android.app.PendingIntent#getActivity getActivity()}.
+                Затем этот объект {@link android.app.PendingIntent} можно будет использовать в качестве аргумента для метода
+                {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+                setContentIntent()}.
+            </li>
+        </ol>
+    <p>
+        Следующий фрагмент кода демонстрирует этот процесс:
+    </p>
+<pre>
+// Instantiate a Builder object.
+NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+// Creates an Intent for the Activity
+Intent notifyIntent =
+        new Intent(this, ResultActivity.class);
+// Sets the Activity to start in a new, empty task
+notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+                        | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+// Creates the PendingIntent
+PendingIntent notifyPendingIntent =
+        PendingIntent.getActivity(
+        this,
+        0,
+        notifyIntent,
+        PendingIntent.FLAG_UPDATE_CURRENT
+);
+
+// Puts the PendingIntent into the notification builder
+builder.setContentIntent(notifyPendingIntent);
+// Notifications are issued by sending them to the
+// NotificationManager system service.
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// Builds an anonymous Notification object from the builder, and
+// passes it to the NotificationManager
+mNotificationManager.notify(id, builder.build());
+</pre>
+    </li>
+</ol>
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="Progress">Отображение хода выполнения в уведомлении</h2>
+<p>
+    Уведомления могут содержать индикатор хода выполнения с эффектом анимации, который показывает пользователям состояние
+    текущей операции. Если имеется возможность оценить, сколько времени занимает операция и какой процент ее объема
+    уже завершен, используйте "определенную" форму индикатора
+    (индикатор хода выполнения). Если продолжительность операции оценить невозможно, используйте
+    "неопределенную" форму индикатора (индикатор операции).
+</p>
+<p>
+    Индикаторы хода выполнения отображаются с помощью реализации класса
+    {@link android.widget.ProgressBar} платформы.
+</p>
+<p>
+    Для использования индикатора хода выполнения на платформах начиная с Android 4.0 вызовите метод
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}. Для
+    предыдущих версий необходимо будет создать собственный нестандартный макет уведомлений, который
+    содержит представление {@link android.widget.ProgressBar}.
+</p>
+<p>
+    В приведенных далее разделах описывается отображение хода выполнения в уведомлении с помощью
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="FixedProgress">Отображение индикатора хода выполнения фиксированной продолжительности</h3>
+<p>
+    Чтобы вывести на экран определенный индикатор хода выполнения, добавьте его в свое уведомление, вызвав метод
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress
+    setProgress(max, progress, false)}, а затем выдайте уведомление. По мере выполнения
+    увеличивайте значение <code>progress</code> и обновляйте уведомление. По окончании операции
+    <code>progress</code> должен быть равен <code>max</code>. Стандартный способ вызова метода 
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}
+    заключается в следующем: задать значение <code>max</code> равным 100 с последующим увеличением <code>progress</code> в виде
+    величины "процента выполнения" операции.
+</p>
+<p>
+    По окончании операции можно оставить этот индикатор хода выполнения на экране или удалить его. В
+    любом случае не забывайте обновить текст уведомления, чтобы указать, что операция выполнена.
+    Чтобы удалить индикатор выполнения, вызовите метод
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress
+    setProgress(0, 0, false)}. Например:
+</p>
+<pre>
+...
+mNotifyManager =
+        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+mBuilder = new NotificationCompat.Builder(this);
+mBuilder.setContentTitle("Picture Download")
+    .setContentText("Download in progress")
+    .setSmallIcon(R.drawable.ic_notification);
+// Start a lengthy operation in a background thread
+new Thread(
+    new Runnable() {
+        &#64;Override
+        public void run() {
+            int incr;
+            // Do the "lengthy" operation 20 times
+            for (incr = 0; incr &lt;= 100; incr+=5) {
+                    // Sets the progress indicator to a max value, the
+                    // current completion percentage, and "determinate"
+                    // state
+                    mBuilder.setProgress(100, incr, false);
+                    // Displays the progress bar for the first time.
+                    mNotifyManager.notify(0, mBuilder.build());
+                        // Sleeps the thread, simulating an operation
+                        // that takes time
+                        try {
+                            // Sleep for 5 seconds
+                            Thread.sleep(5*1000);
+                        } catch (InterruptedException e) {
+                            Log.d(TAG, "sleep failure");
+                        }
+            }
+            // When the loop is finished, updates the notification
+            mBuilder.setContentText("Download complete")
+            // Removes the progress bar
+                    .setProgress(0,0,false);
+            mNotifyManager.notify(ID, mBuilder.build());
+        }
+    }
+// Starts the thread by calling the run() method in its Runnable
+).start();
+</pre>
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ActivityIndicator">Отображение непрерывного индикатора операции</h3>
+<p>
+    Для отображения неопределенного индикатора операции добавьте его в свое уведомление с помощью метода
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, true)}
+    (два первых аргумента игнорируются) и выдайте уведомление. В результате будет показан индикатор,
+    который будет иметь такой же стиль, что и индикатор хода выполнения, за исключением того, что его анимация будет непрерывной.
+</p>
+<p>
+    Выдайте уведомление в начале операции. Анимация будет воспроизводиться до тех пор, пока вы не
+    измените уведомление. Когда операция будет выполнена, вызовите метод
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, false)},
+    после чего обновите уведомление, удалив индикатор операции.
+    Всегда поступайте таким образом. В противном случае анимация будет воспроизводиться и после завершения операции. Также
+    не забывайте изменить текст уведомления, чтобы указать, что операция выполнена.
+</p>
+<p>
+    Чтобы посмотреть, как работают индикаторы операций, перейдите к  предыдущему фрагменту кода. Найдите следующие строки:
+</p>
+<pre>
+// Sets the progress indicator to a max value, the current completion
+// percentage, and "determinate" state
+mBuilder.setProgress(100, incr, false);
+// Issues the notification
+mNotifyManager.notify(0, mBuilder.build());
+</pre>
+<p>
+    Замените их вот этими строками:
+</p>
+<pre>
+ // Sets an activity indicator for an operation of indeterminate length
+mBuilder.setProgress(0, 0, true);
+// Issues the notification
+mNotifyManager.notify(0, mBuilder.build());
+</pre>
+
+<h2 id="metadata">Метаданные уведомления</h2>
+
+<p>Уведомления можно сортировать в соответствии с метаданными, которые назначаются с помощью
+следующих методов {@link android.support.v4.app.NotificationCompat.Builder}:</p>
+
+<ul>
+    <li>метод {@link android.support.v4.app.NotificationCompat.Builder#setCategory(java.lang.String) setCategory()}
+    информирует систему о том, как обрабатывать уведомления вашего приложения, когда устройство находится в режиме приоритета
+    (например, если ваше уведомление сообщает о входящем вызове, мгновенном сообщении или сигнале будильника);</li>
+    <li>метод{@link android.support.v4.app.NotificationCompat.Builder#setPriority(int) setPriority()} вызывает
+    отображение уведомлений, в поле приоритета которых задано значение {@code PRIORITY_MAX} или {@code PRIORITY_HIGH}
+, в небольшом плавающем окне, если уведомление также сопровождается звуковым сигналом или вибрацией;</li>
+    <li>метод {@link android.support.v4.app.NotificationCompat.Builder#addPerson(java.lang.String) addPerson()}
+    позволяет добавить к уведомлению список людей. С его помощью ваше уведомление может сигнализировать
+    системе о том, что она должна сгруппировать уведомления от указанных людей или считать уведомления
+    от этих людей более важными.</li>
+</ul>
+
+<div class="figure" style="width:230px">
+  <img src="{@docRoot}images/ui/notifications/heads-up.png" alt="" width="" height="" id="figure3" />
+  <p class="img-caption">
+    <strong>Рисунок 3</strong>. Полноэкранная операция, отображающая уведомление heads-up
+  </p>
+</div>
+
+<h2 id="Heads-up">Уведомления heads-up</h2>
+
+<p>В Android 5.0 (уровень API 21) уведомления могут отображаться в небольшом плавающем окне
+(оно также называется <em>уведомлением heads-up</em>), когда устройство активно
+(то есть устройство разблокировано и его экран включен). Эти уведомления
+выглядят так же, как компактная форма вашего уведомления, за исключением того, что в
+уведомлениях heads-up также отображаются кнопки действий. Пользователи могут выполнять действия или закрывать
+уведомление heads-up, не покидая текущее приложение.</p>
+
+<p>Примеры ситуаций, в которых могут быть вызваны уведомления heads-up:</p>
+
+<ul>
+  <li>операция пользователя выполняется в полноэкранном режиме (приложение использует 
+{@link android.app.Notification#fullScreenIntent}) или;</li>
+  <li>уведомление имеет высокий приоритет и использует рингтоны или
+    вибрацию.</li>
+</ul>
+
+<h2 id="lockscreenNotification">Уведомления на экране блокировки</h2>
+
+<p>С выходом версии Android 5.0 (уровень API 21) уведомления теперь могут отображаться на экране
+блокировки. С помощью этой функции можно выводит на экран элементы управления мультимедиа и другие стандартные
+действия. В настройках пользователи могут выбрать, следует ли отображать уведомления на экране блокировки, а
+вы можете указать, будет ли уведомление из вашего приложения видно на нем.</p>
+
+<h3 id="visibility">Настройка видимости</h3>
+
+<p>Ваше приложение может определять объем информации, отображаемой в уведомлениях, которые выводятся на экране
+блокировки. Метод {@link android.support.v4.app.NotificationCompat.Builder#setVisibility(int) setVisibility()}
+вызывается для того, чтобы указать одно из следующих значений:</p>
+
+<ul>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC} показывает полное содержимое
+    уведомления;</li>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_SECRET} не отображает какую-либо часть
+    этого уведомления на экране блокировки;</li>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE} показывает базовую информацию,
+    такую как значок уведомления и заголовок его содержимого, но скрывает полное содержимое уведомления.</li>
+</ul>
+
+<p>Когда задается значение {@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE}, вы также можете
+предоставить альтернативную версию содержимого уведомления, в который скрыты некоторые сведения. Например,
+приложение по работе с СМС может выводить уведомление, в котором говорится <em>У вас 3 новых текстовых сообщения</em>, а содержимое
+ и отправители сообщений скрыты. Чтобы предоставить возможность такого альтернативного уведомления, сначала создайте его
+с помощью {@link android.support.v4.app.NotificationCompat.Builder}. При создании
+частного объекта уведомления прикрепите к нему альтернативное уведомление, воспользовавшись методом
+{@link android.support.v4.app.NotificationCompat.Builder#setPublicVersion(android.app.Notification) setPublicVersion()}
+.</p>
+
+<h3 id="controllingMedia">Управление воспроизведением мультимедиа на экране блокировки</h3>
+
+<p>В версии Android 5.0 (API уровня 21) на экране блокировки больше не отображаются элементы управления воспроизведением мультимедиа,
+основанные на классе {@link android.media.RemoteControlClient}, использование которого прекращено. Вместо этого используйте
+шаблон {@link android.app.Notification.MediaStyle} с методом
+{@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
+, который преобразует действия в доступные для нажатия значки.</p>
+
+<p class="note"><strong>Примечание.</strong> Шаблон и метод {@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
+не входят в состав вспомогательной библиотеки, поэтому эти функции работают только в версии Android 5.0 и
+последующих версиях.</p>
+
+<p>Чтобы отобразить элементы управления мультимедиа на экране блокировки в Android 5.0, задайте для видимости
+значение {@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}, выполнив описанную выше процедуру. Затем добавьте
+действия и задайте шаблон {@link android.app.Notification.MediaStyle}, как описано в
+следующем образце кода:</p>
+
+<pre>
+Notification notification = new Notification.Builder(context)
+    // Show controls on lock screen even when user hides sensitive content.
+    .setVisibility(Notification.VISIBILITY_PUBLIC)
+    .setSmallIcon(R.drawable.ic_stat_player)
+    // Add media control buttons that invoke intents in your media service
+    .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0
+    .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent)  // #1
+    .addAction(R.drawable.ic_next, "Next", nextPendingIntent)     // #2
+    // Apply the media style template
+    .setStyle(new Notification.MediaStyle()
+    .setShowActionsInCompactView(1 /* #1: pause button */)
+    .setMediaSession(mMediaSession.getSessionToken())
+    .setContentTitle("Wonderful music")
+    .setContentText("My Awesome Band")
+    .setLargeIcon(albumArtBitmap)
+    .build();
+</pre>
+
+<p class="note"><strong>Примечание.</strong> Прекращение использования класса {@link android.media.RemoteControlClient}
+имеет и другие последствия для управления мультимедиа. Подробные сведения о новых API-интерфейсах для управления сеансами воспроизведения мультимедиа см. в разделе 
+<a href="{@docRoot}about/versions/android-5.0.html#MediaPlaybackControl">Управление воспроизведением мультимедиа</a>
+.</p>
+
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="CustomNotification">Нестандартные макеты уведомлений</h2>
+<p>
+    Платформа уведомлений позволяет задавать нестандартные макеты уведомлений, которые
+    определяют внешний вид уведомлений в объекте {@link android.widget.RemoteViews}.
+    Уведомления с нестандартным макетом — такие же, как обычные уведомления, но в их основе лежит класс
+    {@link android.widget.RemoteViews}, определенный в файле XML макета.
+</p>
+<p>
+    Высота изображения, которую можно получить с использованием нестандартного макета уведомления, зависит от представления уведомления. Обычные
+    макеты представления ограничены по высоте 64 пикселами, а расширенные — 256 пикселами.
+</p>
+<p>
+    Чтобы определить нестандартный макет уведомления, начните с инициализации объекта
+    {@link android.widget.RemoteViews}, который загружает файл XML макета. Затем,
+    вместо вызова методов, например
+    {@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()},
+    вызовите {@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()}. Чтобы задать
+    сведения о содержимом в нестандартном уведомлении, используйте методы из
+    {@link android.widget.RemoteViews}, чтобы определить значения для дочерних представлений:
+</p>
+<ol>
+    <li>
+        Создайте макет XML для уведомления в отдельном файле. Можно использовать любое имя файла
+        по своему усмотрению, однако расширение должно быть <code>.xml</code>
+    </li>
+    <li>
+        В своем приложении с помощью методов {@link android.widget.RemoteViews} определите значки и текст
+        уведомления. Поместите этот объект {@link android.widget.RemoteViews} в свой
+        {@link android.support.v4.app.NotificationCompat.Builder}, вызвав метод
+        {@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()}. Не следует
+        задавать фон {@link android.graphics.drawable.Drawable} для объекта
+        {@link android.widget.RemoteViews}, поскольку цвет текста может стать нечитаемым.
+    </li>
+</ol>
+<p>
+    В классе {@link android.widget.RemoteViews} также имеются методы, с помощью которых можно легко
+    добавить {@link android.widget.Chronometer} или {@link android.widget.ProgressBar}
+    в свой макет уведомления. Подробные сведения о создании нестандартных макетов для
+    уведомлений см. в справочной документации по {@link android.widget.RemoteViews}.
+</p>
+<p class="caution">
+    <strong>Внимание!</strong> При использовании нестандартного макета уведомлений следует особое внимание уделять
+    обеспечению совместимости  такого макета с разными вариантами ориентации устройства и разрешения экрана. Этот
+    совет относится ко всем макетам View, но особенно важен он для уведомлений, поскольку
+    размер панели уведомлений весьма ограничен. Не следует делать свои нестандартные макеты слишком
+    сложными и обязательно нужно тестировать их на различных конфигурациях устройств.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h4>Использование ресурсов стиля для текста нестандартного уведомления</h4>
+<p>
+    Для форматирования текста нестандартного уведомления всегда используйте ресурсы стиля. Цвет фона
+    уведомления может меняться на разных устройствах и в разных версиях системы, а использование ресурсов стиля
+    позволяет это учесть. Начиная с версии Android 2.3 система определяет стиль для
+    текста уведомления со стандартным макетом. Если вы используете тот же стиль в приложениях, предназначенных для версии Android
+    2.3 и последующих версий, то вы гарантируете видимость своего текста на фоне экрана.
+</p>
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/overview.jd b/docs/html-intl/intl/ru/guide/topics/ui/overview.jd
new file mode 100644
index 0000000..0e9628b
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/ui/overview.jd
@@ -0,0 +1,71 @@
+page.title=Обзор пользовательского интерфейса
+@jd:body
+
+
+<p>Все элементы интерфейса пользователя в приложении Android создаются с помощью объектов {@link android.view.View} и
+{@link android.view.ViewGroup}. Объект {@link android.view.View} формирует
+на экране элемент, с которым пользователь может взаимодействовать. Объект {@link android.view.ViewGroup} содержит
+другие объекты {@link android.view.View} (и {@link android.view.ViewGroup}) для
+определения макета интерфейса.</p>
+
+<p>Android предоставляет коллекцию подклассов {@link android.view.View} и {@link
+android.view.ViewGroup}, которая включает в себя обычные элементы ввода (такие как кнопки и текстовые
+поля) и различные модели макет (такие как линейный или относительный макет).</p>
+
+
+<h2 id="Layout">Макеты пользовательского интерфейса</h2>
+
+<p>Пользовательский интерфейс для каждого компонента вашего приложения определяется с помощью иерархии объектов {@link
+android.view.View} и {@link android.view.ViewGroup}, как показано на рисунке 1. Каждая группа просмотра
+представляет собой невидимый контейнер, в котором объединены дочерние виды, причем дочерние виды могут представлять собой элементы
+ввода или другие виджеты, которые
+составляют часть пользовательского интерфейса. Эта древовидная иерархия может быть настолько простой или сложной, насколько
+требуется (чем проще, тем лучше для производительности).</p>
+
+<img src="{@docRoot}images/viewgroup.png" alt="" />
+<p class="img-caption"><strong>Рисунок 1</strong>. Иллюстрация иерархии, которая определяет
+макет интерфейса.</p>
+
+<p>Чтобы объявить свой макет, можно создать экземпляры объектов {@link android.view.View} в коде и запустить построение
+дерева, но самый простой и наиболее эффективный способ — определение макета с помощью файла XML.
+XML позволяет создавать удобочитаемую структуру макета, подобно HTML.</p>
+
+<p>Имя элемента XML для вида соответствует классу Android, к которому от относится. Так, элемент
+<code>&lt;TextView&gt;</code> создает виджет {@link android.widget.TextView} в пользовательском интерфейсе,
+а элемент <code>&lt;LinearLayout&gt;</code> создает группу просмотра {@link android.widget.LinearLayout}
+. </p>
+
+<p>Например, простой вертикальный макет с текстом и кнопкой выглядит следующим образом:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="fill_parent" 
+              android:layout_height="fill_parent"
+              android:orientation="vertical" >
+    &lt;TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="I am a TextView" />
+    &lt;Button android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="I am a Button" />
+&lt;/LinearLayout>
+</pre>
+
+<p>При загрузке ресурсов макетов в приложение Android инициализирует каждый узел макета в
+объект режима выполнения, который можно использовать для определения дополнительного поведения, запроса состояния объекта или изменения
+макета.</p>
+
+<p>Полное руководство по созданию макета пользовательского интерфейса см. в документе <a href="declaring-layout.html">Макеты
+XML</a>.
+
+  
+<h2 id="UIComponents">Компоненты пользовательского интерфейса</h2>
+
+<p>Не обязательно создавать все элементы пользовательского интерфейса с помощью объектов {@link android.view.View} и {@link
+android.view.ViewGroup}. Android предоставляет несколько компонентов приложений, которые содержат
+стандартный макет пользовательского интерфейса, где остается лишь определить содержимое. Каждый из этих компонентов пользовательского интерфейса
+содержит уникальный набор API, который описан в соответствующих документах, таких как <a href="{@docRoot}guide/topics/ui/actionbar.html">Строка действий</a>, <a href="{@docRoot}guide/topics/ui/dialogs.html">Диалоги</a> и <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Уведомления о состоянии</a>.</p>
+
+
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/settings.jd b/docs/html-intl/intl/ru/guide/topics/ui/settings.jd
new file mode 100644
index 0000000..4325439
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/ui/settings.jd
@@ -0,0 +1,1202 @@
+page.title=Настройки
+page.tags=preference,preferenceactivity,preferencefragment
+
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Содержание документа</h2>
+<ol>
+  <li><a href="#Overview">Обзор</a>
+    <ol>
+      <li><a href="#SettingTypes">Предпочтения</a></li>
+    </ol>
+  </li>
+  <li><a href="#DefiningPrefs">Определение предпочтений в XML</a>
+    <ol>
+      <li><a href="#Groups">Создание групп настроек</a></li>
+      <li><a href="#Intents">Использование намерений</a></li>
+    </ol>
+  </li>
+  <li><a href="#Activity">Создание операции предпочтений</a></li>
+  <li><a href="#Fragment">Использование фрагментов предпочтений</a></li>
+  <li><a href="#Defaults">Значения настроек по умолчанию</a></li>
+  <li><a href="#PreferenceHeaders">Использование заголовков предпочтений</a>
+    <ol>
+      <li><a href="#CreateHeaders">Создание файла заголовков</a></li>
+      <li><a href="#DisplayHeaders">Отображение заголовков</a></li>
+      <li><a href="#BackCompatHeaders">Поддержка старых версий посредством заголовков предпочтений</a></li>
+    </ol>
+  </li>
+  <li><a href="#ReadingPrefs">Чтение предпочтений</a>
+    <ol>
+      <li><a href="#Listening">Отслеживание изменений предпочтений</a></li>
+    </ol>
+  </li>
+  <li><a href="#NetworkUsage">Контроль использования сети</a></li>
+  <li><a href="#Custom">Построение пользовательского предпочтения</a>
+    <ol>
+      <li><a href="#CustomSelected">Указание пользовательского интерфейса</a></li>
+      <li><a href="#CustomSave">Сохранение значения настройки</a></li>
+      <li><a href="#CustomInitialize">Инициализация текущего значения</a></li>
+      <li><a href="#CustomDefault">Предоставление значения по умолчанию</a></li>
+      <li><a href="#CustomSaveState">Сохранение и восстановление состояния предпочтений</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>Основные классы</h2>
+<ol>
+  <li>{@link android.preference.Preference}</li>
+  <li>{@link android.preference.PreferenceActivity}</li>
+  <li>{@link android.preference.PreferenceFragment}</li>
+</ol>
+
+
+<h2>См. также:</h2>
+<ol>
+  <li><a href="{@docRoot}design/patterns/settings.html">Руководство по дизайну настроек</a></li>
+</ol>
+</div>
+</div>
+
+
+
+
+<p>В приложениях часто содержатся настройки, которые позволяют пользователю изменять возможности и поведение приложения. Например,
+некоторые приложения позволяют пользователям включать и выключать уведомления или указывать частоту синхронизации
+данных приложения с облаком.</p>
+
+<p>Если вы хотите предоставить настройки для вашего приложения, вы должны использовать
+API-интерфейсы {@link android.preference.Preference} системы Android для построения интерфейса, согласованного с
+привычным для пользователей других приложений Android (включая системные настройки). В этом документе показано,
+как построить настройки вашего приложения посредством API-интерфейсов {@link android.preference.Preference}.</p>
+
+<div class="note design">
+<p><strong>Дизайн настроек</strong></p>
+  <p>Подробную информацию о дизайне настроек см. в руководстве по дизайну <a href="{@docRoot}design/patterns/settings.html">настроек</a>.</p>
+</div>
+
+
+<img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
+<p class="img-caption"><strong>Рисунок 1.</strong> Снимки экранов настроек приложения Android
+для обмена сообщениями. Выбор элемента, заданного посредством {@link android.preference.Preference}, 
+открывает интерфейс для изменения значения.</p>
+
+
+
+
+<h2 id="Overview">Обзор</h2>
+
+<p>Вместо использования отображаемых объектов {@link android.view.View} для построения пользовательского интерфейса, настройки создаются
+с помощью различных подклассов класса {@link android.preference.Preference}, который вы
+объявляете в XML-файле.</p>
+
+<p>Объект {@link android.preference.Preference} является строительным блоком для отдельной
+настройки. Каждый объект {@link android.preference.Preference} отображается в виде элемента в списке и предоставляет
+соответствующий пользовательский интерфейс для изменения настройки пользователями. Например, {@link
+android.preference.CheckBoxPreference} создает элемент списка, который показывает флажок, а {@link
+android.preference.ListPreference} создает элемент, который открывает диалоговое окно со списком вариантов для выбора.</p>
+
+<p>Каждый добавляемый вами объект {@link android.preference.Preference} имеет соответствующую пару «ключ-значение»,
+которую система использует для сохранения настройки в файле {@link android.content.SharedPreferences}
+значений настроек вашего приложения по умолчанию. Когда пользователь изменяет настройку, система обновляет соответствующее
+значение в файле {@link android.content.SharedPreferences}. Вам потребуется
+напрямую взаимодействовать с файлом, связанным с {@link android.content.SharedPreferences}, только в случае,
+когда нужно прочитать значение для определения поведения вашего приложения на основе пользовательских настроек.</p>
+
+<p>Значение, сохраненное в {@link android.content.SharedPreferences} для каждой настройки, может относиться к одному из
+следующих типов данных:</p>
+
+<ul>
+  <li>Логическое значение</li>
+  <li>Число с плавающей точкой</li>
+  <li>Целое число</li>
+  <li>Длинное целое число</li>
+  <li>Строка</li>
+  <li>Строка {@link java.util.Set}</li>
+</ul>
+
+<p>Поскольку пользовательский интерфейс настроек вашего приложения создается посредством объектов {@link android.preference.Preference},
+а не
+объектов {@link android.view.View}, вам потребуется использовать специализированные подклассы {@link android.app.Activity} или
+{@link android.app.Fragment} для отображения настроек из списка:</p>
+
+<ul>
+  <li>Если ваше приложение поддерживает версии Android старше 3.0 (API уровня 10 и ниже), для построения операции
+необходимо наследовать класс {@link android.preference.PreferenceActivity}.</li>
+  <li>В операционных системах Android 3.0 и более поздних версиях вы должны вместо этого использовать традиционный класс {@link android.app.Activity},
+который содержит объект {@link android.preference.PreferenceFragment} для отображения настроек вашего приложения.
+Однако, когда у вас есть несколько групп настроек, вы можете также
+использовать {@link android.preference.PreferenceActivity} для создания макета с двумя панелями для больших экранов.</li>
+</ul>
+
+<p>Настройка объекта {@link android.preference.PreferenceActivity} и экземпляров {@link
+android.preference.PreferenceFragment} описана в разделах <a href="#Activity">Создание операции предпочтения</a> и <a href="#Fragment">Использование
+фрагментов предпочтений</a>.</p>
+
+
+<h3 id="SettingTypes">Предпочтения</h3>
+
+<p>Каждая настройка для вашего приложения представлена конкретным подклассом класса {@link
+android.preference.Preference}. Каждый подкласс содержит набор основных свойств, которые позволяют вам
+указывать, например, заголовок для настройки и ее значение по умолчанию. Каждый подкласс также содержит
+собственные специализированные свойства и пользовательский интерфейс. В качестве примера на рисунке 1 показан снимок экрана настроек 
+приложения Android для обмена сообщениями. Каждый элемент списка на экране настроек возвращается отдельным объектом {@link
+android.preference.Preference}.</p>
+
+<p>Ниже приведены самые распространенные предпочтения:</p>
+
+<dl>
+  <dt>{@link android.preference.CheckBoxPreference}</dt>
+  <dd>Отображает элемент с флажком для настройки, которая может быть включена или выключена. Сохраненное
+значение является логическим (<code>true</code>, если флажок установлен).</dd>
+
+  <dt>{@link android.preference.ListPreference}</dt>
+  <dd>Открывает диалоговое окно со списком переключателей. Сохраненное значение
+может относиться к одному из поддерживаемых типов значений (перечисленных выше).</dd>
+
+  <dt>{@link android.preference.EditTextPreference}</dt>
+  <dd>Открывает диалоговое окно с виджетом {@link android.widget.EditText}. Сохраненное значение — {@link
+java.lang.String}.</dd>
+</dl>
+
+<p>См. класс {@link android.preference.Preference}, который содержит список всех остальных подклассов и их
+соответствующих свойств.</p>
+
+<p>Конечно, встроенные классы не обеспечивают всех потребностей, и вашему приложению может понадобиться
+что-либо более специализированное. Например, в настоящее время система не предоставляет класс {@link
+android.preference.Preference} для выбора числа или даты. Поэтому вам может потребоваться определить
+свой собственный подкласс {@link android.preference.Preference}. См. раздел <a href="#Custom">Построение пользовательского предпочтения</a>.</p>
+
+
+
+<h2 id="DefiningPrefs">Определение предпочтений в XML</h2>
+
+<p>Хотя вы можете создавать новые экземпляры объектов {@link android.preference.Preference} в режиме выполнения, вы должны
+определить список настроек в файле XML с иерархией
+объектов {@link android.preference.Preference}. Использование файла XML для определения вашей коллекции настроек предпочтительней, поскольку файл
+обладает удобочитаемой структурой, которую легко обновлять. Кроме того, настройки вашего приложения
+обычно определены заранее, хотя у вас сохраняется возможность изменять коллекцию в режиме выполнения.</p>
+
+<p>Каждый подкласс класса {@link android.preference.Preference} может быть объявлен посредством элемента XML,
+который соответствует имени класса, например, {@code &lt;CheckBoxPreference&gt;}.</p>
+
+<p>Вы должны сохранить файл XML в каталоге {@code res/xml/}. Хотя вы можете назвать файл любым
+именем, традиционно его называют {@code preferences.xml}. Обычно вам требуется лишь один файл,
+поскольку ветви иерархии (которые открывают собственный список настроек) объявлены с помощью вложенных
+экземпляров {@link android.preference.PreferenceScreen}.</p>
+
+<p class="note"><strong>Примечание.</strong> Если вы хотите создать макет с несколькими панелями для ваших
+настроек, вам потребуются отдельные файлы XML для каждого фрагмента.</p>
+
+<p>Корневой узел XML-файла должен быть элементом {@link android.preference.PreferenceScreen
+&lt;PreferenceScreen&gt;}. Внутри этого элемента вы добавляете каждый элемент {@link
+android.preference.Preference}. Каждый дочерний элемент, который вы добавляете внутри элемента
+{@link android.preference.PreferenceScreen &lt;PreferenceScreen&gt;}, отображается в виде одного
+пункта в списке настроек.</p>
+
+<p>Например:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;CheckBoxPreference
+        android:key="pref_sync"
+        android:title="@string/pref_sync"
+        android:summary="@string/pref_sync_summ"
+        android:defaultValue="true" />
+    &lt;ListPreference
+        android:dependency="pref_sync"
+        android:key="pref_syncConnectionType"
+        android:title="@string/pref_syncConnectionType"
+        android:dialogTitle="@string/pref_syncConnectionType"
+        android:entries="@array/pref_syncConnectionTypes_entries"
+        android:entryValues="@array/pref_syncConnectionTypes_values"
+        android:defaultValue="@string/pref_syncConnectionTypes_default" />
+&lt;/PreferenceScreen>
+</pre>
+
+<p>В этом примере есть {@link android.preference.CheckBoxPreference} и {@link
+android.preference.ListPreference}. Оба содержат следующие три атрибута:</p>
+
+<dl>
+  <dt>{@code android:key}</dt>
+  <dd>Этот атрибут необходим для предпочтений, которые сохраняют значение данных. Он задает уникальный
+ключ (строку), который использует система при сохранении значения этой настройки в {@link
+android.content.SharedPreferences}. 
+  <p>Этот атрибут <em>не является обязательным</em> только когда предпочтение представляет собой
+{@link android.preference.PreferenceCategory} или {@link android.preference.PreferenceScreen}, либо
+предпочтение указывает намерение {@link android.content.Intent} для вызова (посредством элемента <a href="#Intents">{@code &lt;intent&gt;}</a>) или фрагмент {@link android.app.Fragment} для отображения (с помощью атрибута <a href="{@docRoot}reference/android/preference/Preference.html#attr_android:fragment">{@code
+android:fragment}</a>).</p>
+  </dd>
+  <dt>{@code android:title}</dt>
+  <dd>Этот атрибут предоставляет имя настройки, отображаемое для пользователя.</dd>
+  <dt>{@code android:defaultValue}</dt>
+  <dd>Этот атрибут указывает исходное значение, которое система должна установить в файле {@link
+android.content.SharedPreferences}. Вы должны указать значения по умолчанию для всех
+настроек.</dd>
+</dl>
+
+<p>Для получения информации обо всех других поддерживаемых атрибутов см. документацию {@link
+android.preference.Preference} (и соответствующий подкласс).</p>
+
+
+<div class="figure" style="width:300px">
+  <img src="{@docRoot}images/ui/settings/settings-titles.png" alt="" />
+  <p class="img-caption"><strong>Рисунок 2.</strong> Создание категорий
+ с заголовками. <br/><b>1.</b> Категория задана элементом {@link
+android.preference.PreferenceCategory &lt;PreferenceCategory&gt;}. <br/><b>2.</b> Заголовок
+задан посредством атрибута {@code android:title}.</p>
+</div>
+
+
+<p>Когда список ваших настроек содержит более 10 элементов, вы, вероятно, захотите добавить заголовки для
+определения групп настроек или отобразить эти группы
+на отдельном экране. Эти возможности описаны в следующих разделах.</p>
+
+
+<h3 id="Groups">Создание групп настроек</h3>
+
+<p>Если вы представляете список из 10 или более настроек, пользователям
+может быть трудно их просматривать, воспринимать и обрабатывать. Это можно исправить,
+разделив некоторые или все настройки на группы, что эффективно преобразует один длинный список в несколько
+более коротких списков. Группа связанных настроек может быть представлена одним из двух способов:</p>
+
+<ul>
+  <li><a href="#Titles">Использование заголовков</a></li>
+  <li><a href="#Subscreens">Использование подэкранов</a></li>
+</ul>
+
+<p>Вы можете пользоваться одним или обоими из этих методов группировки для организации настроек в вашем приложении. Принимая
+решение об используемом варианте и о разделении настроек на группы, вы должны следовать инструкциям в разделе 
+<a href="{@docRoot}design/patterns/settings.html">Настройки</a> руководства «Дизайн для Android».</p>
+
+
+<h4 id="Titles">Использование заголовков</h4>
+
+<p>Если вы хотите создать разделители с заголовками между группами настроек (как показано на рисунке 2),
+поместите каждую группу объектов {@link android.preference.Preference} внутри {@link
+android.preference.PreferenceCategory}.</p>
+
+<p>Например:</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;PreferenceCategory 
+        android:title="&#64;string/pref_sms_storage_title"
+        android:key="pref_key_storage_settings">
+        &lt;CheckBoxPreference
+            android:key="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_auto_delete"
+            android:title="&#64;string/pref_title_auto_delete"
+            android:defaultValue="false"... />
+        &lt;Preference 
+            android:key="pref_key_sms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_sms_delete"... />
+        &lt;Preference 
+            android:key="pref_key_mms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_mms_delete" ... />
+    &lt;/PreferenceCategory>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h4 id="Subscreens">Использование подэкранов</h4>
+
+<p>Если вы хотите поместить группу настроек на подэкран (как показано на рисунке 3), поместите каждую группу
+объектов {@link android.preference.Preference} внутри {@link
+android.preference.PreferenceScreen}.</p>
+
+<img src="{@docRoot}images/ui/settings/settings-subscreen.png" alt="" />
+<p class="img-caption"><strong>Рисунок 3.</strong> Создание подэкранов. Элемент {@code
+&lt;PreferenceScreen&gt;}
+создает пункт, при выборе которого открывается отдельный список вложенных настроек.</p>
+
+<p>Например:</p>
+
+<pre>
+&lt;PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;!-- opens a subscreen of settings -->
+    &lt;PreferenceScreen
+        android:key="button_voicemail_category_key"
+        android:title="&#64;string/voicemail"
+        android:persistent="false">
+        &lt;ListPreference
+            android:key="button_voicemail_provider_key"
+            android:title="&#64;string/voicemail_provider" ... />
+        &lt;!-- opens another nested subscreen -->
+        &lt;PreferenceScreen
+            android:key="button_voicemail_setting_key"
+            android:title="&#64;string/voicemail_settings"
+            android:persistent="false">
+            ...
+        &lt;/PreferenceScreen>
+        &lt;RingtonePreference
+            android:key="button_voicemail_ringtone_key"
+            android:title="&#64;string/voicemail_ringtone_title"
+            android:ringtoneType="notification" ... />
+        ...
+    &lt;/PreferenceScreen>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h3 id="Intents">Использование намерений</h3>
+
+<p>В некоторых случаях может потребоваться, чтобы элемент предпочтений открывал другую операцию, а не
+экран настроек, например, веб-браузер для просмотра веб-страницы. Чтобы вызвать {@link
+android.content.Intent}, когда пользователь выбирает элемент предпочтений, добавьте элемент {@code &lt;intent&gt;}
+в качестве дочернего элемента соответствующего элемента {@code &lt;Preference&gt;}.</p>
+
+<p>Например, здесь показано использование элемента предпочтений для открытия веб-страницы:</p>
+
+<pre>
+&lt;Preference android:title="@string/prefs_web_page" >
+    &lt;intent android:action="android.intent.action.VIEW"
+            android:data="http://www.example.com" />
+&lt;/Preference>
+</pre>
+
+<p>Вы можете создавать неявные и явные намерения с помощью следующих атрибутов:</p>
+
+<dl>
+  <dt>{@code android:action}</dt>
+    <dd>Назначаемое действие, как
+в методе {@link android.content.Intent#setAction setAction()}.</dd>
+  <dt>{@code android:data}</dt>
+    <dd>Назначаемые данные, как в методе {@link android.content.Intent#setData setData()}.</dd>
+  <dt>{@code android:mimeType}</dt>
+    <dd>Назначаемый тип MIME, как
+в методе {@link android.content.Intent#setType setType()}.</dd>
+  <dt>{@code android:targetClass}</dt>
+    <dd>Часть имени компонента, означающая класс, как в методе {@link android.content.Intent#setComponent
+setComponent()}.</dd>
+  <dt>{@code android:targetPackage}</dt>
+    <dd>Пакетная часть имени компонента, как в методе {@link
+android.content.Intent#setComponent setComponent()}.</dd>
+</dl>
+
+
+
+<h2 id="Activity">Создание операции предпочтений</h2>
+
+<p>Для отображения ваших настроек в операции наследуйте класс {@link
+android.preference.PreferenceActivity}. Это наследование традиционного класса {@link
+android.app.Activity}, который отображает список настроек на основе иерархии объектов {@link
+android.preference.Preference}. {@link android.preference.PreferenceActivity}
+автоматически сохраняет настройки, связанные с каждым объектом {@link
+android.preference.Preference}, когда пользователь вносит изменения.</p>
+
+<p class="note"><strong>Примечание.</strong> При разработке приложения для версии Android 3.0
+или выше вместо этого следует использовать {@link android.preference.PreferenceFragment}. Прочитайте следующий раздел
+<a href="#Fragment">Использование фрагментов предпочтений</a>.</p>
+
+<p>Запомните самое важное: не загружайте макет отображаемых объектов во время обратного вызова {@link
+android.preference.PreferenceActivity#onCreate onCreate()}. Вместо этого вызовите {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} для
+добавления предпочтений, объявленных в XML-файле для операции. Например, здесь приведен
+ минимальный код, необходимый для работы {@link android.preference.PreferenceActivity}:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.preferences);
+    }
+}
+</pre>
+
+<p>Этого кода действительно достаточно для некоторых приложений, поскольку как только пользователь изменяет предпочтение,
+система сохраняет изменения в файле {@link android.content.SharedPreferences} по умолчанию, который
+другие компоненты вашего приложения могут читать, когда требуется проверить пользовательские настройки. Однако многим приложениям
+требуется немного больше кода, чтобы отслеживать изменения, происходящие с предпочтениями.
+Информацию об отслеживании изменений в файле {@link android.content.SharedPreferences}
+см. в разделе <a href="#ReadingPrefs">Чтение предпочтений</a>.</p>
+
+
+
+
+<h2 id="Fragment">Использование фрагментов предпочтений</h2>
+
+<p>При разработке приложений для Android 3.0 (API уровня 11) и более поздних версий необходимо использовать {@link
+android.preference.PreferenceFragment} для отображения списка
+объектов {@link android.preference.Preference}. Вы можете добавить {@link android.preference.PreferenceFragment} в любую операцию, при этом 
+необязательно использовать {@link android.preference.PreferenceActivity}.</p>
+
+<p><a href="{@docRoot}guide/components/fragments.html">Фрагменты</a> обеспечивают более
+универсальную архитектуру для вашего приложения по сравнению с использованием отдельных операций, вне зависимости от типа
+создаваемой операции. Фактически, для управления отображением ваших настроек мы предлагаем вам использовать {@link
+android.preference.PreferenceFragment} вместо {@link
+android.preference.PreferenceActivity} при каждой возможности.</p>
+
+<p>Ваша реализация {@link android.preference.PreferenceFragment} может содержать просто
+определение метода {@link android.preference.PreferenceFragment#onCreate onCreate()} для загрузки
+файла предпочтений посредством {@link android.preference.PreferenceFragment#addPreferencesFromResource
+addPreferencesFromResource()}. Например:</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Load the preferences from an XML resource
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+}
+</pre>
+
+<p>Затем вы можете добавить этот фрагмент в операцию {@link android.app.Activity}, как вы сделали бы это для любого другого фрагмента
+{@link android.app.Fragment}. Например:</p>
+
+<pre>
+public class SettingsActivity extends Activity {
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Display the fragment as the main content.
+        getFragmentManager().beginTransaction()
+                .replace(android.R.id.content, new SettingsFragment())
+                .commit();
+    }
+}
+</pre>
+
+<p class="note"><strong>Примечание.</strong> Фрагмент {@link android.preference.PreferenceFragment} не содержит
+собственного объекта {@link android.content.Context}. Если вам требуется объект {@link android.content.Context},
+вы можете вызвать{@link android.app.Fragment#getActivity()}. Однако разработчик должен быть внимательным и вызывать метод
+{@link android.app.Fragment#getActivity()} только в том случае, когда фрагмент прикреплен к операции. Если
+фрагмент еще не прикреплен или был откреплен в конце его жизненного цикла, метод {@link
+android.app.Fragment#getActivity()} вернет null.</p>
+
+
+<h2 id="Defaults">Установка значений по умолчанию</h2>
+
+<p>Вероятно, создаваемые вами предпочтения определяют важное поведение вашего приложения, поэтому
+необходимо инициализировать соответствующий файл {@link android.content.SharedPreferences},
+записав в него значения по умолчанию для каждого предпочтения {@link android.preference.Preference} при первом запуске вашего
+приложения пользователем.</p>
+
+<p>В первую очередь необходимо указать значение по умолчанию для каждого объекта {@link
+android.preference.Preference}
+в вашем XML-файле посредством атрибута {@code android:defaultValue}. Значение может относиться к любому
+типу данных, подходящему для соответствующего объекта {@link android.preference.Preference}. Например:
+</p>
+
+<pre>
+&lt;!-- default value is a boolean -->
+&lt;CheckBoxPreference
+    android:defaultValue="true"
+    ... />
+
+&lt;!-- default value is a string -->
+&lt;ListPreference
+    android:defaultValue="@string/pref_syncConnectionTypes_default"
+    ... />
+</pre>
+
+<p>Затем из метода {@link android.app.Activity#onCreate onCreate()} основной операции вашего приложения
+(и из любой другой операции, через которую пользователь может войти в ваше приложение
+в первый раз) вызовите {@link android.preference.PreferenceManager#setDefaultValues
+setDefaultValues()}:</p>
+
+<pre>
+PreferenceManager.setDefaultValues(this, R.xml.advanced_preferences, false);
+</pre>
+
+<p>Вызов этого метода при выполнении {@link android.app.Activity#onCreate onCreate()} гарантирует, что ваше
+приложение правильно инициализируется и получит настройки по умолчанию, которые могут потребоваться вашему приложению
+для определенного поведения (например, следует ли загружать данные при работе
+в сотовой сети).</p>
+
+<p>Этот метод имеет три аргумента:</p>
+<ul>
+  <li>{@link android.content.Context} вашего приложения.</li>
+  <li>Идентификатор ресурса для XML-файла предпочтений, для которого вы хотите установить значения по умолчанию.</li>
+  <li>Логическое значение, которое указывает, требуется ли значения по умолчанию устанавливать более одного раза.
+<p>При значении <code>false</code> система устанавливает значения по умолчанию только в том случае, если этот метод никогда не вызывался ранее
+(или атрибут {@link android.preference.PreferenceManager#KEY_HAS_SET_DEFAULT_VALUES}
+в файле общих предпочтений по умолчанию имеет значение false).</p></li>
+</ul>
+
+<p>Когда для третьего аргумента установлено значение <code>false</code>, вы можете вызывать этот метод
+при каждом запуске операции, не опасаясь перезаписи сохраненных пользовательских предпочтений из-за их сброса в состояние
+по умолчанию. Однако, если установить для этого аргумента значение <code>true</code>, вы будете перезаписывать все предыдущие
+значения значениями по умолчанию.</p>
+
+
+
+<h2 id="PreferenceHeaders">Использование заголовков предпочтений</h2>
+
+<p>В редких случаях может потребоваться такая структура настроек, при которой на первом экране отображается только
+список <a href="#Subscreens">подэкранов</a> (например, как в приложении системных настроек,
+показанных на рисунках 4 и 5). При разработке такого дизайна для Android 3.0 и более поздних версий вы должны
+использовать новую возможность Android 3.0 — «заголовки», вместо создания подэкранов посредством вложенных
+элементов {@link android.preference.PreferenceScreen}.</p>
+
+<p>Чтобы создать настройки с заголовками, выполните следующие действия:</p>
+<ol>
+  <li>Выделите каждую группу настроек в отдельный экземпляр {@link
+android.preference.PreferenceFragment}. Таким образом, каждая группа настроек должна иметь отдельный
+XML-файл.</li>
+  <li>Создайте XML-файл заголовков, в котором перечислены все группы настроек и объявления, какой фрагмент
+содержит соответствующий список настроек.</li>
+  <li>Наследуйте класс {@link android.preference.PreferenceActivity}, который будет содержать ваши настройки.</li>
+  <li>Реализуйте обратный вызов {@link
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()}, чтобы указать
+файл заголовков.</li>
+</ol>
+
+<p>Огромное преимущество использования этого дизайна состоит в том, что при запуске на больших экранах {@link android.preference.PreferenceActivity}
+автоматически создает макет с двумя панелями, показанный на рисунке 4.</p>
+
+<p>Даже если ваше приложение поддерживает версии Android старше 3.0, вы можете создать
+приложение, использующее {@link android.preference.PreferenceFragment} для двухпанельного представления на
+новых устройствах и поддерживающее традиционную многоэкранную иерархию на более старых
+устройствах (см. раздел <a href="#BackCompatHeaders">Поддержка старых версий посредством
+заголовков предпочтений</a>).</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-tablet.png" alt="" />
+<p class="img-caption"><strong>Рисунок 4.</strong> Двухпанельный макет с заголовками. <br/><b>1.</b> Заголовки
+определяются посредством XML-файла заголовков. <br/><b>2.</b> Каждая группа настроек определяется с помощью фрагмента
+{@link android.preference.PreferenceFragment}, который указывается элементом {@code &lt;header&gt;}
+в файле заголовков.</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-handset.png" alt="" />
+<p class="img-caption"><strong>Рисунок 5.</strong> Смартфон с заголовками настроек. При выборе
+пункта вместо заголовков отображается соответствующий
+фрагмент {@link android.preference.PreferenceFragment}.</p>
+
+
+<h3 id="CreateHeaders" style="clear:left">Создание файла заголовков</h3>
+
+<p>Каждая группа настроек в вашем списке заголовков указывается отдельным элементом {@code &lt;header&gt;}
+внутри корневого элемента {@code &lt;preference-headers&gt;}. Например:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;!-- key/value pairs can be included as arguments for the fragment. -->
+        &lt;extra android:name="someKey" android:value="someHeaderValue" />
+    &lt;/header>
+&lt;/preference-headers>
+</pre>
+
+<p>Посредством атрибута {@code android:fragment} каждый заголовок объявляет экземпляр фрагмента {@link
+android.preference.PreferenceFragment}, который должен открываться при выборе этого заголовка пользователем.</p>
+
+<p>Элемент {@code &lt;extras&gt;} позволяет передавать пары «ключ-значение» фрагменту в объекте {@link
+android.os.Bundle}. Фрагмент может извлекать аргументы путем вызова метода {@link
+android.app.Fragment#getArguments()}. Вы можете передавать аргументы фрагменту по различным причинам,
+но хорошим поводом является повторное использование одного и того же подкласса {@link
+android.preference.PreferenceFragment} для каждой группы и использование аргументов для указания
+XML-файла предпочтений, который должен быть загружен фрагментом.</p>
+
+<p>Например, здесь приведен фрагмент, который можно использовать повторно для нескольких групп настроек, когда каждый
+заголовок определяет аргумент {@code &lt;extra&gt;} с ключом {@code "settings"}:</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        String settings = getArguments().getString("settings");
+        if ("notifications".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_wifi);
+        } else if ("sync".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_sync);
+        }
+    }
+}
+</pre>
+
+
+
+<h3 id="DisplayHeaders">Отображение заголовков</h3>
+
+<p>Чтобы отобразить заголовки предпочтений, вы должны реализовать метод обратного вызова {@link
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} и вызвать 
+{@link android.preference.PreferenceActivity#loadHeadersFromResource
+loadHeadersFromResource()}. Например:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onBuildHeaders(List&lt;Header> target) {
+        loadHeadersFromResource(R.xml.preference_headers, target);
+    }
+}
+</pre>
+
+<p>Когда пользователь выбирает пункт в списке заголовков, система открывает связанный {@link
+android.preference.PreferenceFragment}.</p>
+
+<p class="note"><strong>Примечание.</strong> При использовании заголовков предпочтений ваш подкласс {@link
+android.preference.PreferenceActivity} не должен реализовывать метод {@link
+android.preference.PreferenceActivity#onCreate onCreate()}, поскольку единственной обязательной задачей
+операции является загрузка заголовков.</p>
+
+
+<h3 id="BackCompatHeaders">Поддержка старых версий с заголовками предпочтений</h3>
+
+<p>Если ваше приложение поддерживает версии Android старше 3.0, вы можете использовать заголовки для
+предоставления двухпанельного макета при работе на Android 3.0 или более поздней версии. Достаточно создать
+дополнительный XML-файл настроек, использующий базовые элементы {@link android.preference.Preference
+&lt;Preference&gt;}, которые ведут себя аналогично пунктам заголовка (для использования в более старых версиях
+Android).</p>
+
+<p>Вместо открытия новых экранов {@link android.preference.PreferenceScreen} каждый из элементов {@link
+android.preference.Preference &lt;Preference&gt;} отправляет намерение {@link android.content.Intent} в
+{@link android.preference.PreferenceActivity} с указанием XML-файла предпочтений
+для загрузки.</p>
+
+<p>В качестве примера приведен XML-файл для заголовков предпочтений, который используется в Android версии 3.0
+и более поздних версий ({@code res/xml/preference_headers.xml}):</p> 
+
+<pre>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" />
+&lt;/preference-headers>
+</pre>
+
+<p>А здесь представлен файл предпочтений, который содержит те же самые заголовки для версий старше 
+Android 3.0 ({@code res/xml/preference_headers_legacy.xml}):</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;Preference 
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one"  >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_ONE" />
+    &lt;/Preference>
+    &lt;Preference 
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_TWO" />
+    &lt;/Preference>
+&lt;/PreferenceScreen>
+</pre>
+
+<p>Так как поддержка {@code &lt;preference-headers&gt;} была добавлена в версии Android 3.0, система вызывает
+{@link android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} в методе {@link
+android.preference.PreferenceActivity} только при работе в Android версии 3.0 или более поздней версии. Чтобы загрузить
+«старый» файл заголовков ({@code preference_headers_legacy.xml}), вы должны проверить версию Android
+и, если версия старше Android 3.0 ({@link
+android.os.Build.VERSION_CODES#HONEYCOMB}), вызвать {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} для
+загрузки старого файла заголовков. Например:</p>
+
+<pre>
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    ...
+
+    if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+
+// Called only on Honeycomb and later
+&#64;Override
+public void onBuildHeaders(List&lt;Header> target) {
+   loadHeadersFromResource(R.xml.preference_headers, target);
+}
+</pre>
+
+<p>Остается обработать намерение {@link android.content.Intent}, переданное
+в операцию, чтобы идентифицировать файл предпочтений для загрузки. Поэтому извлеките операцию намерения и сравните ее
+с известными строками действия, которые вы использовали в тегах {@code &lt;intent&gt;} XML-файла предпочтений:</p>
+
+<pre>
+final static String ACTION_PREFS_ONE = "com.example.prefs.PREFS_ONE";
+...
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+
+    String action = getIntent().getAction();
+    if (action != null &amp;&amp; action.equals(ACTION_PREFS_ONE)) {
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+
+    else if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+</pre>
+
+<p>При этом помните, что последующие вызовы {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} будут помещать
+все предпочтения в один список, поэтому обязательно используйте операторы else-if, чтобы обеспечить только
+однократный вызов метода при изменении условий.</p>
+
+
+
+
+
+<h2 id="ReadingPrefs">Чтение предпочтений</h2>
+
+<p>По умолчанию все предпочтения вашего приложения сохраняются в файле, который доступен из любого места
+вашего приложения посредством вызова статического метода {@link
+android.preference.PreferenceManager#getDefaultSharedPreferences
+PreferenceManager.getDefaultSharedPreferences()}. Он возвращает объект {@link
+android.content.SharedPreferences}, содержащий все пары «ключ-значение», связанные
+с объектами {@link android.preference.Preference}, использованными в вашей операции {@link
+android.preference.PreferenceActivity}.</p>
+
+<p>В качестве примера показано чтение одного из значений предпочтений из любой другой операции в вашем
+приложении:</p>
+
+<pre>
+SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
+String syncConnPref = sharedPref.getString(SettingsActivity.KEY_PREF_SYNC_CONN, "");
+</pre>
+
+
+
+<h3 id="Listening">Отслеживание изменений предпочтений</h3>
+
+<p>Существует несколько причин, по которым вы можете захотеть получать уведомления, как только пользователь изменяет одно из
+предпочтений. Чтобы получать обратный вызов при изменении любого из предпочтений,
+реализуйте интерфейс {@link android.content.SharedPreferences.OnSharedPreferenceChangeListener
+SharedPreference.OnSharedPreferenceChangeListener} и зарегистрируйте приемник для объекта
+{@link android.content.SharedPreferences} посредством вызова {@link
+android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
+registerOnSharedPreferenceChangeListener()}.</p>
+
+<p>Этот интерфейс содержит только один метод обратного вызова, {@link
+android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged
+onSharedPreferenceChanged()}, и вы, вероятно, сочтете его самым простым способом реализации интерфейса в составе своей
+операции. Например:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity
+                              implements OnSharedPreferenceChangeListener {
+    public static final String KEY_PREF_SYNC_CONN = "pref_syncConnectionType";
+    ...
+
+    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
+        String key) {
+        if (key.equals(KEY_PREF_SYNC_CONN)) {
+            Preference connectionPref = findPreference(key);
+            // Set summary to be the user-description for the selected value
+            connectionPref.setSummary(sharedPreferences.getString(key, ""));
+        }
+    }
+}
+</pre>
+
+<p>В этом примере метод проверяет, выполнено ли изменение настройки для известного ключа предпочтений. Он
+вызывает {@link android.preference.PreferenceActivity#findPreference findPreference()} для получения объекта
+{@link android.preference.Preference}, который был изменен, поэтому он может изменить сводку пункта
+, описывающего выбор пользователя. То есть, когда настройка представляет собой {@link
+android.preference.ListPreference} или другую настройку с несколькими вариантами выбора, при изменении этой настройки вы должны вызвать {@link
+android.preference.Preference#setSummary setSummary()} для отображения
+текущего состояния (например, настройка спящего режима, показанная на рисунке 5).</p>
+
+<p class="note"><strong>Примечание.</strong> В соответствии с рекомендациями раздела <a href="{@docRoot}design/patterns/settings.html">Настройки</a> руководства «Дизайн для Android», мы рекомендуем вам обновлять
+сводку для {@link android.preference.ListPreference} при каждом изменении предпочтения пользователем,
+чтобы описать текущую настройку.</p>
+
+<p>Для правильного управления жизненным циклом в операции мы рекомендуем вам регистрировать или отменять регистрацию
+вашего приемника {@link android.content.SharedPreferences.OnSharedPreferenceChangeListener} во время выполнения обратных вызовов {@link
+android.app.Activity#onResume} и {@link android.app.Activity#onPause} соответственно:</p>
+
+<pre>
+&#64;Override
+protected void onResume() {
+    super.onResume();
+    getPreferenceScreen().getSharedPreferences()
+            .registerOnSharedPreferenceChangeListener(this);
+}
+
+&#64;Override
+protected void onPause() {
+    super.onPause();
+    getPreferenceScreen().getSharedPreferences()
+            .unregisterOnSharedPreferenceChangeListener(this);
+}
+</pre>
+
+<p class="caution"><strong>Внимание!</strong> Когда вы вызываете приемник {@link
+android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
+registerOnSharedPreferenceChangeListener()}, диспетчер предпочтений не
+сохраняет строгую ссылку на приемник. Вы должны сохранить строгую
+ссылку на приемник, в противном случае она будет чувствительной к очистке памяти. Мы
+рекомендуем хранить ссылку на приемник в данных экземпляра объекта
+, который будет существовать, пока вам нужен приемник.</p>
+
+<p>Например, в следующем коде вызывающий объект не сохраняет
+ссылку на приемник. В результате этого приемник будет удален при очистке памяти
+и через некоторое время приведет к сбою:</p>
+
+<pre>
+prefs.registerOnSharedPreferenceChangeListener(
+  // Bad! The listener is subject to garbage collection!
+  new SharedPreferences.OnSharedPreferenceChangeListener() {
+  public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+    // listener implementation
+  }
+});
+</pre>
+
+<p>Вместо этого сохраните ссылку на приемник в поле данных экземпляра объекта
+, который будет существовать, пока нужен приемник:</p>
+
+<pre>
+SharedPreferences.OnSharedPreferenceChangeListener listener =
+    new SharedPreferences.OnSharedPreferenceChangeListener() {
+  public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+    // listener implementation
+  }
+};
+prefs.registerOnSharedPreferenceChangeListener(listener);
+</pre>
+
+<h2 id="NetworkUsage">Контроль использования сети</h2>
+
+
+<p>Начиная с версии Android 4.0, системное приложение «Настройки» позволяет пользователям просматривать использование
+сетевых данных приложениями, работающими на переднем плане и в фоновом режиме. После этого пользователи могут
+отключить использование данных в фоновом режиме для отдельных приложений. Для того, чтобы пользователи не отключали доступ вашего приложения к данным
+в фоновом режиме, вы должны эффективно использовать подключение в режиме передачи данных и предоставить
+пользователям возможность настройки использования данных вашим приложением посредством настроек приложения.<p>
+
+<p>Например, вы можете позволить пользователям управлять частотой синхронизации данных приложения, выполнением загрузки
+только в режиме подключения по Wi-Fi, использованием данных в роуминге и т. д. Когда
+эти возможности управления доступны, пользователи с меньшей вероятностью отключат доступ вашего приложения к данным,
+когда оно достигает установленных в системных настройках лимитов, поскольку вместо отключения они могут
+точно контролировать объем данных, который использует ваше приложение.</p>
+
+<p>После добавления необходимых предпочтений в вашу операцию {@link android.preference.PreferenceActivity}
+для управления поведением вашего приложения в отношении данных вы должны добавить фильтр намерений для {@link
+android.content.Intent#ACTION_MANAGE_NETWORK_USAGE} в вашем файле манифеста. Например:</p>
+
+<pre>
+&lt;activity android:name="SettingsActivity" ... >
+    &lt;intent-filter>
+       &lt;action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />
+       &lt;category android:name="android.intent.category.DEFAULT" />
+    &lt;/intent-filter>
+&lt;/activity>
+</pre>
+
+<p>Этот фильтр манифеста указывает системе, что эта операция управляет использованием
+данных вашим приложением. Так, когда пользователь проверяет объем использованных приложением данных в системном приложении
+«Настройки», отображается кнопка <em>Просмотреть настройки приложения</em>, которая запускает вашу операцию
+{@link android.preference.PreferenceActivity}, чтобы пользователь мог уточнить, сколько данных использует
+ваше приложение.</p>
+
+
+
+
+
+
+
+<h2 id="Custom">Построение пользовательского предпочтения</h2>
+
+<p>Система Android содержит множество подклассов {@link android.preference.Preference}, которые
+позволяют вам строить пользовательский интерфейс для нескольких различных типов настроек.
+Тем не менее, вы можете обнаружить, что для нужной вам настройки нет встроенного решения, например, для выбора
+числа или даты. В таком случае вам потребуется создать нестандартное предпочтение путем наследования
+класса {@link android.preference.Preference} или одного из других подклассов.</p>
+
+<p>При наследовании класса {@link android.preference.Preference} нужно выполнить несколько
+важных пунктов:</p>
+
+<ul>
+  <li>Укажите пользовательский интерфейс, который должен отображаться при выборе этой настройки пользователем.</li>
+  <li>При необходимости сохраните значение настройки.</li>
+  <li>Инициализируйте {@link android.preference.Preference} текущим значением (или значением по умолчанию),
+когда предпочтение отображается.</li>
+  <li>Укажите значение по умолчанию в ответ на запрос системы.</li>
+  <li>Если {@link android.preference.Preference} содержит свой собственный пользовательский интерфейс (например, диалоговое окно), сохраните
+и восстановите состояние для обработки изменений жизненного цикла (например, когда пользователь поворачивает экран).</li>
+</ul>
+
+<p>В следующих разделах описано выполнение каждой из этих задач.</p>
+
+
+
+<h3 id="CustomSelected">Указание пользовательского интерфейса</h3>
+
+  <p>Если вы наследуете класс {@link android.preference.Preference} непосредственно, вы должны реализовать метод
+{@link android.preference.Preference#onClick()}, чтобы задать действие, происходящее при выборе
+пункта пользователем. Однако большая часть нестандартных настроек наследует {@link android.preference.DialogPreference}, чтобы
+отобразить диалоговое окно, что упрощает процедуру. Когда вы наследуете {@link
+android.preference.DialogPreference}, вы должны вызвать {@link
+android.preference.DialogPreference#setDialogLayoutResource setDialogLayoutResourcs()}, находясь в конструкторе
+класса, чтобы указать макет диалогового окна.</p>
+
+  <p>В качестве примера показан конструктор нестандартного диалогового окна {@link
+android.preference.DialogPreference}, в котором объявляется макет и указывается текст для
+положительной и отрицательной кнопок диалога по умолчанию:</p>
+
+<pre>
+public class NumberPickerPreference extends DialogPreference {
+    public NumberPickerPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        
+        setDialogLayoutResource(R.layout.numberpicker_dialog);
+        setPositiveButtonText(android.R.string.ok);
+        setNegativeButtonText(android.R.string.cancel);
+        
+        setDialogIcon(null);
+    }
+    ...
+}
+</pre>
+
+
+
+<h3 id="CustomSave">Сохранение значения настройки</h3>
+
+<p>Вы можете сохранить значение настройки в любой момент, вызвав один из методов {@code persist*()} класса {@link
+android.preference.Preference}, например, {@link
+android.preference.Preference#persistInt persistInt()}, если настройка имеет целое значение, или 
+{@link android.preference.Preference#persistBoolean persistBoolean()} для сохранения логического значения.</p>
+
+<p class="note"><strong>Примечание.</strong> Каждое предпочтение {@link android.preference.Preference} может сохранять только один
+тип данных, поэтому вы должны использовать метод {@code persist*()}, соответствующий типу данных, используемых вашим
+пользовательским предпочтением {@link android.preference.Preference}.</p>
+
+<p>Выбор метода сохранения настройки может зависеть от наследованного класса {@link
+android.preference.Preference}. Если вы наследуете {@link
+android.preference.DialogPreference}, вы должны сохранять значение только при закрытии диалога
+с положительным результатом (пользователь нажал кнопку «OK»).</p>
+
+<p>Когда {@link android.preference.DialogPreference} закрывается, система вызывает метод {@link
+android.preference.DialogPreference#onDialogClosed onDialogClosed()}. Этот метод содержит
+логический аргумент, который указывает, является ли результат пользователя «положительным» — если аргумент имеет значение
+<code>true</code>, значит пользователь выбрал положительную кнопку и вы должны сохранить новое значение. Например:
+</p>
+
+<pre>
+&#64;Override
+protected void onDialogClosed(boolean positiveResult) {
+    // When the user selects "OK", persist the new value
+    if (positiveResult) {
+        persistInt(mNewValue);
+    }
+}
+</pre>
+
+<p>В этом примере <code>mNewValue</code> — это член класса, который содержит текущее значение
+настройки. При вызове {@link android.preference.Preference#persistInt persistInt()} значение сохраняется
+в файл {@link android.content.SharedPreferences} (с автоматическим использованием ключа,
+указанного в XML-файле для этого предпочтения {@link android.preference.Preference}).</p>
+
+
+<h3 id="CustomInitialize">Инициализация текущего значения</h3>
+
+<p>Когда система добавляет ваше предпочтение {@link android.preference.Preference} на экран, она
+вызывает метод {@link android.preference.Preference#onSetInitialValue onSetInitialValue()}, чтобы уведомить вас,
+имеет ли настройка сохраненное значение. Если сохраненного значения нет, этот вызов предоставляет вам
+значение по умолчанию.</p>
+
+<p>Метод {@link android.preference.Preference#onSetInitialValue onSetInitialValue()} передает
+логическое значение, <code>restorePersistedValue</code>, чтобы показать, было ли уже сохранено значение
+для настройки. Если значение равно <code>true</code>, вы должны извлечь сохраненное значение, вызвав
+один из методов {@code getPersisted*()} класса {@link
+android.preference.Preference}, например, {@link
+android.preference.Preference#getPersistedInt getPersistedInt()} для целого значения. Обычно
+требуется извлечь сохраненное значение, чтобы можно было правильно обновить пользовательский интерфейс для отражения
+ранее сохраненного значения.</p>
+
+<p>Если <code>restorePersistedValue</code> имеет значение <code>false</code>, вы
+должны использовать значение по умолчанию, которое передается во втором аргументе.</p>
+
+<pre>
+&#64;Override
+protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
+    if (restorePersistedValue) {
+        // Restore existing state
+        mCurrentValue = this.getPersistedInt(DEFAULT_VALUE);
+    } else {
+        // Set default state from the XML attribute
+        mCurrentValue = (Integer) defaultValue;
+        persistInt(mCurrentValue);
+    }
+}
+</pre>
+
+<p>Каждый метод {@code getPersisted*()} содержит аргумент, который указывает
+значение по умолчанию на случай, когда действительно нет сохраненного значения, или не существует ключ. В
+приведенном выше примере локальная константа служит для указания значения по умолчанию на случай, если {@link
+android.preference.Preference#getPersistedInt getPersistedInt()} не может вернуть сохраненное значение.</p>
+
+<p class="caution"><strong>Внимание!</strong> Вы <strong>не можете</strong> использовать
+<code>defaultValue</code> в качестве значения по умолчанию в методе {@code getPersisted*()}, так как
+его значение всегда равно null, когда <code>restorePersistedValue</code> имеет значение <code>true</code>.</p>
+
+
+<h3 id="CustomDefault">Предоставление значения по умолчанию</h3>
+
+<p>Если экземпляр вашего класса {@link android.preference.Preference} указывает значение по умолчанию 
+(с помощью атрибута {@code android:defaultValue}),
+система вызывает {@link android.preference.Preference#onGetDefaultValue
+onGetDefaultValue()}, когда она создает экземпляр объекта для извлечения значения. Вы должны реализовать
+этот метод, чтобы сохранить значение по умолчанию для системы в {@link
+android.content.SharedPreferences}. Например:</p>
+
+<pre>
+&#64;Override
+protected Object onGetDefaultValue(TypedArray a, int index) {
+    return a.getInteger(index, DEFAULT_VALUE);
+}
+</pre>
+
+<p>Аргументы метода предоставляют все необходимое: массив атрибутов и указатель
+положения {@code android:defaultValue}, который вы должны извлечь. Причина, по которой вы должны
+реализовать этот метод, чтобы извлечь значение по умолчанию из атрибута, состоит в том, что вы должны указать
+локальное значение по умолчанию для атрибута в случае, когда значение не определено.</p>
+
+
+
+<h3 id="CustomSaveState">Сохранение и восстановление состояния предпочтений</h3>
+
+<p>Как и {@link android.view.View} в макете, ваш подкласс {@link android.preference.Preference}
+отвечает за сохранение и восстановление своего состояния в случае перезапуска операции или фрагмента
+(например, когда пользователь поворачивает экран). Чтобы правильно сохранять и восстанавливать
+состояние вашего класса {@link android.preference.Preference}, вы должны реализовать
+методы обратного вызова жизненного цикла {@link android.preference.Preference#onSaveInstanceState
+onSaveInstanceState()} и {@link
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()}.</p>
+
+<p>Состояние вашего {@link android.preference.Preference} определяется объектом, который реализует
+интерфейс {@link android.os.Parcelable}. Система Android предоставляет вам такой объект
+в качестве начальной точки для определения вашего объекта состояния: класс {@link
+android.preference.Preference.BaseSavedState}.</p>
+
+<p>Чтобы определить, как ваш класс {@link android.preference.Preference} сохраняет свое состояние, вы должны
+наследовать класс {@link android.preference.Preference.BaseSavedState}. Вы должны переопределить лишь
+ несколько методов и определить объект
+{@link android.preference.Preference.BaseSavedState#CREATOR}.</p>
+
+<p>Для большинства приложений вы можете скопировать следующую реализацию и просто изменить строки, которые
+обрабатывают {@code value}, если ваш подкласс {@link android.preference.Preference} сохраняет типы
+данных, отличные от целых.</p>
+
+<pre>
+private static class SavedState extends BaseSavedState {
+    // Member that holds the setting's value
+    // Change this data type to match the type saved by your Preference
+    int value;
+
+    public SavedState(Parcelable superState) {
+        super(superState);
+    }
+
+    public SavedState(Parcel source) {
+        super(source);
+        // Get the current preference's value
+        value = source.readInt();  // Change this to read the appropriate data type
+    }
+
+    &#64;Override
+    public void writeToParcel(Parcel dest, int flags) {
+        super.writeToParcel(dest, flags);
+        // Write the preference's value
+        dest.writeInt(value);  // Change this to write the appropriate data type
+    }
+
+    // Standard creator object using an instance of this class
+    public static final Parcelable.Creator&lt;SavedState> CREATOR =
+            new Parcelable.Creator&lt;SavedState>() {
+
+        public SavedState createFromParcel(Parcel in) {
+            return new SavedState(in);
+        }
+
+        public SavedState[] newArray(int size) {
+            return new SavedState[size];
+        }
+    };
+}
+</pre>
+
+<p>После добавления показанной выше реализации {@link android.preference.Preference.BaseSavedState}
+в ваше приложение (обычно в качестве подкласса вашего подкласса {@link android.preference.Preference}), вам
+потребуется реализовать методы {@link android.preference.Preference#onSaveInstanceState
+onSaveInstanceState()} и {@link
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()} для вашего
+подкласса {@link android.preference.Preference}.</p>
+
+<p>Например:</p>
+
+<pre>
+&#64;Override
+protected Parcelable onSaveInstanceState() {
+    final Parcelable superState = super.onSaveInstanceState();
+    // Check whether this Preference is persistent (continually saved)
+    if (isPersistent()) {
+        // No need to save instance state since it's persistent,
+        // use superclass state
+        return superState;
+    }
+
+    // Create instance of custom BaseSavedState
+    final SavedState myState = new SavedState(superState);
+    // Set the state's value with the class member that holds current
+    // setting value
+    myState.value = mNewValue;
+    return myState;
+}
+
+&#64;Override
+protected void onRestoreInstanceState(Parcelable state) {
+    // Check whether we saved the state in onSaveInstanceState
+    if (state == null || !state.getClass().equals(SavedState.class)) {
+        // Didn't save the state, so call superclass
+        super.onRestoreInstanceState(state);
+        return;
+    }
+
+    // Cast state to custom BaseSavedState and pass to superclass
+    SavedState myState = (SavedState) state;
+    super.onRestoreInstanceState(myState.getSuperState());
+    
+    // Set this Preference's widget to reflect the restored state
+    mNumberPicker.setValue(myState.value);
+}
+</pre>
+
diff --git a/docs/html-intl/intl/ru/guide/topics/ui/ui-events.jd b/docs/html-intl/intl/ru/guide/topics/ui/ui-events.jd
new file mode 100644
index 0000000..cd2b481
--- /dev/null
+++ b/docs/html-intl/intl/ru/guide/topics/ui/ui-events.jd
@@ -0,0 +1,291 @@
+page.title=События ввода
+parent.title=Пользовательский интерфейс
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Содержание документа</h2>
+  <ol>
+    <li><a href="#EventListeners">Приемники событий</a></li>
+    <li><a href="#EventHandlers">Обработчики событий</a></li>
+    <li><a href="#TouchMode">Режим касания</a></li>
+    <li><a href="#HandlingFocus">Фокус обработки</a></li>
+  </ol>
+
+</div>
+</div>
+
+<p>В системе Android предусмотрено несколько способов перехвата событий взаимодействия пользователя с вашим приложением.
+Что касается событий в пользовательском интерфейсе, подход состоит в том, чтобы захватывать события из
+определенного представления объекта, с которым взаимодействует пользователь. Класс отображаемых объектов (View) содержит средства, позволяющие делать это.</p>
+
+<p>В различных классах View, которые вы будете использовать для создания макета, вы заметите несколько общедоступных методов обратного вызова,
+полезных для работы с событиями пользовательского интерфейса. Эти методы вызываются платформой Android, когда
+с этим объектом выполняется соответствующее действие. Например, когда пользователь касается отображаемого объекта (кнопки),
+вызывается метод <code>onTouchEvent()</code> этого объекта. Однако для перехвата этого события вы должны
+наследовать класс и переопределить метод. Однако наследование каждого отображаемого объекта
+для обработки такого события было бы неудобно. Именно поэтому класс View также содержит
+набор вложенных интерфейсов с обратными вызовами, которые можно задать значительно проще. Эти интерфейсы,
+которые называются <a href="#EventListeners">приемниками событий</a>, и служат перехватчиками действий пользователя с вашим пользовательским интерфейсом.</p>
+
+<p>Несмотря на то, что вы будете чаще использовать приемники событий для перехвата действий пользователя, может
+наступить момент, когда вам не захочется наследовать класс View, чтобы создать нестандартный компонент. 
+Возможно, вы захотите наследовать класс {@link android.widget.Button},
+чтобы сделать нечто более необычное. В этом случае вы сможете определить поведение события по умолчанию для своего
+класса с помощью <a href="#EventHandlers">обработчиков событий</a> класса.</p>
+
+
+<h2 id="EventListeners">Приемники событий</h2>
+
+<p>Приемник событий — это интерфейс в классе {@link android.view.View}, который содержит один
+метод обратного вызова. Эти методы будут вызываться платформой Android, когда в результате взаимодействия пользователя с объектом
+пользовательского интерфейса срабатывает отображаемый объект View, в котором зарегистрирован приемник.</p>
+
+<p>Интерфейсы, включенные в приемник события, представляют собой следующие методы обратного вызова:</p>
+
+<dl>
+  <dt><code>onClick()</code></dt>
+    <dd>Из объекта {@link android.view.View.OnClickListener}. 
+ Этот метод вызывается, когда пользователь касается элемента
+ (в режиме касания), или переводит фокус на элемент с помощью клавиш перемещения или трекбола и
+нажимает соответствующую клавишу «ввода» или нажимает на трекбол.</dd>
+  <dt><code>onLongClick()</code></dt>
+    <dd>Из объекта {@link android.view.View.OnLongClickListener}. 
+ Этот метод вызывается, когда пользователь касается элемента и удерживает его (в режиме касания),
+или переводит фокус на элемент с помощью клавиш перемещения или трекбола и
+нажимает и удерживает соответствующую клавишу «ввода» или трекбол (в течение одной секунды).</dd>
+  <dt><code>onFocusChange()</code></dt>
+    <dd>Из объекта {@link android.view.View.OnFocusChangeListener}. 
+ Этот метод вызывается, когда пользователь перемещается в элемент или из него с помощью клавиш перемещения или трекбола.</dd>
+  <dt><code>onKey()</code></dt>
+    <dd>Из объекта {@link android.view.View.OnKeyListener}. 
+ Этот метод вызывается, когда пользователь переносит фокус на элемент и нажимает или отпускает аппаратную клавишу на устройстве.</dd>
+  <dt><code>onTouch()</code></dt>
+    <dd>Из объекта {@link android.view.View.OnTouchListener}. 
+ Этот метод вызывается, когда пользователь выполняет действие, считающееся событием касания, например, нажимает, отпускает
+или выполняет любой жест на экране (в пределах границ элемента).</dd>
+  <dt><code>onCreateContextMenu()</code></dt>
+    <dd>Из объекта {@link android.view.View.OnCreateContextMenuListener}. 
+Этот метод вызывается, когда создается контекстное меню (в результате длительного «длительного нажатия»). См. обсуждение
+контекстных меню в руководстве
+для разработчиков <a href="{@docRoot}guide/topics/ui/menus.html#context-menu">Меню</a>.</dd>
+</dl>
+
+<p>Эти методы являются единственными составными частями соответствующих интерфейсов. Чтобы определить один из этих методов
+и обрабатывать события, реализуйте вложенный интерфейс в вашем процесс или определите его, как анонимный класс.
+Затем передайте экземпляр реализации
+в соответствующий метод <code>View.set...Listener()</code>. (Например, вызовите 
+<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code> 
+и передайте ему свою реализацию {@link android.view.View.OnClickListener OnClickListener}.)</p>
+
+<p>В следующем примере показано, как зарегистрировать приемник события «по клику» (on-click) для кнопки. </p>
+
+<pre>
+// Create an anonymous implementation of OnClickListener
+private OnClickListener mCorkyListener = new OnClickListener() {
+    public void onClick(View v) {
+      // do something when the button is clicked
+    }
+};
+
+protected void onCreate(Bundle savedValues) {
+    ...
+    // Capture our button from layout
+    Button button = (Button)findViewById(R.id.corky);
+    // Register the onClick listener with the implementation above
+    button.setOnClickListener(mCorkyListener);
+    ...
+}
+</pre>
+
+<p>Возможно, еще удобнее реализовать OnClickListener как часть вашей операции.
+При этом исключается дополнительная нагрузка класса и выделение объекта. Например:</p>
+<pre>
+public class ExampleActivity extends Activity implements OnClickListener {
+    protected void onCreate(Bundle savedValues) {
+        ...
+        Button button = (Button)findViewById(R.id.corky);
+        button.setOnClickListener(this);
+    }
+
+    // Implement the OnClickListener callback
+    public void onClick(View v) {
+      // do something when the button is clicked
+    }
+    ...
+}
+</pre>
+
+<p>Обратите внимание, что обратный вызов <code>onClick()</code> в примере выше не
+содержит возвращаемого значения, но некоторые другие методы приемника события должны возвращать логическое значение. Причина
+зависит от события. Для некоторых методов, которые возвращают значения, причина описана ниже:</p>
+<ul>
+  <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> —
+этот метод возвращает логическое значение, указывающее, что вы обработали это событие и его более не следует хранить. 
+А именно, верните значение <em>true</em>, чтобы указать, что вы обработали событие и его следует остановить;
+верните значение <em>false</em>, если вы не обработали его и/или событие должно продолжаться для любых других
+приемников события on-click.</li>
+  <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> —
+этот метод возвращает логическое значение, указывающее, что вы обработали это событие и его более не следует хранить.
+    А именно, верните значение <em>true</em>, чтобы указать, что вы обработали событие и его следует остановить;
+верните значение <em>false</em>, если вы не обработали его и/или событие должно продолжаться для любых других
+приемников события on-click.</li>
+  <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> —
+этот метод возвращает логическое значение, указывающее, обработал ли ваш приемник это событие. Важно, что
+это событие может повлечь несколько действий, следующих друг за другом. Поэтому, если вы возвращаете <em>ложь</em> при приеме
+ события нажатия, вы указываете, что вы не обработали событие и не
+интересуетесь последующими действиями в результате этого события. Соответственно, этот метод не будет вызываться для любых других действий
+в рамках этого события, таких как жесты или возможное действие отпускания.</li>
+</ul>
+
+<p>Помните, что события аппаратных клавиш всегда попадают в отображаемый объект View, который находится в фокусе. Они отправляются, начиная с верха
+в иерархии отображаемых объектов, затем ниже, пока не достигнут соответствующего назначения. Если ваш отображаемый объект (или дочерний объект вашего отображаемого объекта)
+находится в фокусе, вы можете видеть, как событие перемещается сквозь метод <code>{@link android.view.View#dispatchKeyEvent(KeyEvent)
+dispatchKeyEvent()}</code>. В качестве альтернативы к перехвату событий клавиш через отображаемый объект View можно также получать
+все события внутри вашей операции с помощью методов <code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>
+и <code>{@link android.app.Activity#onKeyUp(int,KeyEvent) onKeyUp()}</code>.</p>
+
+<p>Кроме того, размышляя о вводе текста для приложения, помните, что многие устройства поддерживают только программные методы
+ввода. Такие методы не обязательно основаны на нажатиях клавиш. Некоторые могут использовать голосовой ввод, рукописный ввод и т. д. Даже если
+метод ввода представлен интерфейсом, подобным клавиатуре, он обычно <strong>не</strong> приводит к запуску семейства
+событий<code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>. Не следует создавать
+пользовательский интерфейс, для управления которым требуется нажимать определенные клавиши, кроме случаев, когда вы хотите ограничить использование приложения только устройствами
+с аппаратной клавиатурой. В частности, не полагайтесь на эти методы для подтверждения ввода, когда пользователь нажимает
+клавишу «Ввод». Вместо этого используйте такие действия, как {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE}, чтобы подать методу ввода сигнал
+о том, какой реакции ожидает приложение, чтобы он мог соответственно изменить свой пользовательский интерфейс. Избегайте предположений
+о работе программного метода ввода и доверьте ему ввод уже отформатированного текста в ваше приложение.</p>
+
+<p class="note"><strong>Примечание.</strong> Система Android сначала будет вызывать обработчики событий, а затем соответствующие обработчики по умолчанию
+из определения класса. Поэтому возврат значения <em>истина</em> из этих приемников событий будет останавливать
+передачу события остальным приемникам событий, а также будет блокировать обратный вызов
+обработчика событий по умолчанию в отображаемом объекте. Поэтому проверьте, что вы хотите прервать событие, когда вы возвращаете значение <em>true</em>.</p>
+
+
+<h2 id="EventHandlers">Обработчики событий</h2>
+
+<p>Если вы создаете нестандартный компонент из отображаемого объекта, вы сможете определить несколько методов обратного вызова,
+используемых как обработчики события по умолчанию.
+В документе <a href="{@docRoot}guide/topics/ui/custom-components.html">Нестандартные
+компоненты</a> можно узнать о некоторых общих обратных вызовах, используемых для обработки событий,
+включая следующие:</p>
+<ul>
+  <li><code>{@link  android.view.View#onKeyDown}</code> — вызывается при возникновении нового события клавиши.</li>
+  <li><code>{@link  android.view.View#onKeyUp}</code> — вызывается при возникновении события отпускания клавиши.</li>
+  <li><code>{@link  android.view.View#onTrackballEvent}</code> — вызывается при возникновении события перемещения трекбола.</li>
+  <li><code>{@link  android.view.View#onTouchEvent}</code> — вызывается при возникновении события жеста на сенсорном экране.</li>
+  <li><code>{@link  android.view.View#onFocusChanged}</code> — вызывается, когда отображаемый объект получает или теряет фокус.</li>
+</ul>
+<p>Существует несколько других методов, о которых следует знать и которые не являются частью класса View,
+но могут напрямую влиять на доступные вам способы обработки событий. Поэтому, управляя более сложными событиями внутри
+макета, учитывайте и другие методы:</p>
+<ul>
+  <li><code>{@link  android.app.Activity#dispatchTouchEvent(MotionEvent)
+    Activity.dispatchTouchEvent(MotionEvent)}</code> — этот метод позволяет вашей операции {@link 
+    android.app.Activity} перехватывать все события касаний перед их отправкой в окно.</li>
+  <li><code>{@link  android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)
+    ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> — этот метод позволяет объекту {@link
+    android.view.ViewGroup} просматривать события перед их отправкой в дочерние отображаемые объекты.</li>
+  <li><code>{@link  android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
+    ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> — вызовите этот метод
+в родительском отображаемом объекте, чтобы указать ему, что он не должен перехватывать события касания с помощью <code>{@link 
+    android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code>.</li>
+</ul>
+
+<h2 id="TouchMode">Режим касания</h2>
+<p>
+Когда пользователь перемещается по пользовательскому интерфейсу с помощью клавиш перемещения или трекбола, необходимо
+передавать фокус действующим элементам (таким как кнопки), чтобы пользователь мог видеть,
+какой элемент будет принимать ввод.  Однако, если устройство поддерживает сенсорный ввод, и пользователь
+начинает взаимодействовать с интерфейсом, прикасаясь к его элементам, исчезает необходимость
+выделять элементы или передавать фокус определенному отображаемому объекту.  Следовательно, существует режим
+взаимодействия, который называется «режимом касания». 
+</p>
+<p>
+Как только пользователь касается экрана, устройство, поддерживающее сенсорный ввод,
+переходит в режим касания.  Начиная с этого момента, фокус передается только тем отображаемым объектам, для которых
+{@link android.view.View#isFocusableInTouchMode} имеет значение true, таким как виджеты редактирования текста.
+Другие отображаемые объекты, которых можно коснуться, например, кнопки, не будут получать фокус при касании. Нажатие будет
+просто запускать их приемники событий on-click.
+</p>
+<p>
+В любой момент, когда пользователь нажимает клавишу перемещения или выполняет прокрутку трекболом, устройство
+выходит из режима касания и находит отображаемый объект, которому передается фокус. Теперь пользователь может возобновить взаимодействие
+с пользовательским интерфейсом без касания экрана.
+</p>
+<p>
+Состояние режима касания поддерживается во всей системе (для всех окон и операций). 
+Чтобы узнать текущее состояние, можно вызвать
+{@link android.view.View#isInTouchMode} и посмотреть, находится ли устройство в режиме касания.
+</p>
+
+
+<h2 id="HandlingFocus">Фокус обработки</h2>
+
+<p>В ответ на пользовательский ввод система обрабатывает обычное перемещение фокуса.
+Сюда относится изменение фокуса, когда отображаемые объекты удаляются или скрываются, а также когда становятся доступными
+новые отображаемые объекты. Отображаемые объекты сообщают о своей готовности получить фокус
+с помощью метода <code>{@link android.view.View#isFocusable()}</code>. Чтобы изменить способность объекта View получать
+фокус, вызовите <code>{@link android.view.View#setFocusable(boolean) setFocusable()}</code>.  В режиме касания
+можно узнать способность отображаемого объекта View получать фокус с помощью метода <code>{@link android.view.View#isFocusableInTouchMode()}</code>.
+Для изменения вызовите <code>{@link android.view.View#setFocusableInTouchMode(boolean) setFocusableInTouchMode()}</code>.
+</p>
+
+<p>Перемещение фокуса основано на алгоритме, который находит ближайший элемент
+в заданном направлении. В редких случаях алгоритм по умолчанию может не совпадать
+с поведением, которое предполагает разработчик. В этих ситуациях можно задать
+явное переопределение с помощью следующих атрибутов XML в файле макета:
+<var>nextFocusDown</var>, <var>nextFocusLeft</var>, <var>nextFocusRight</var>и
+<var>nextFocusUp</var>. Добавьте один из этих атрибутов в отображаемый объект View, <em>из</em> которого
+выходит фокус. Задайте значение атрибута для идентификатора объекта View,
+<em>в</em> который следует передать фокус. Например:</p>
+<pre>
+&lt;LinearLayout
+    android:orientation="vertical"
+    ... >
+  &lt;Button android:id="@+id/top"
+          android:nextFocusUp="@+id/bottom"
+          ... />
+  &lt;Button android:id="@+id/bottom"
+          android:nextFocusDown="@+id/top"
+          ... />
+&lt;/LinearLayout>
+</pre>
+
+<p>Обычно в этом вертикальном макете перемещение вверх из первой кнопки не должно приводить к перемещению,
+как и перемещение вниз из второй кнопки. Теперь, когда верхняя кнопка
+задает для нижней кнопки атрибут <var>nextFocusUp</var> (и наоборот), фокус будет перемещаться
+циклически сверху вниз и снизу вверх.</p>
+
+<p>Если вы хотите объявить, что отображаемый объект в вашем пользовательском интерфейсе способен получать фокус (тогда как обычно он не может получать фокус),
+добавьте XML-атрибут <code>android:focusable</code> в объект View в объявлении макета.
+Установите для него значение <var>true</var>. Можно также объявить объект View,
+способным получать фокус в режиме касания с помощью <code>android:focusableInTouchMode</code>.</p>
+<p>Чтобы запросить передачу фокуса определенному отображаемому объекту, вызовите <code>{@link android.view.View#requestFocus()}</code>.</p>
+<p>Чтобы перехватывать события фокуса (получать уведомления, когда отображаемый объект получает или теряет фокус), используйте метод
+<code>{@link android.view.View.OnFocusChangeListener#onFocusChange(View,boolean) onFocusChange()}</code>,
+который обсуждается в разделе <a href="#EventListeners">Приемники событий</a> выше.</p>
+
+
+
+<!--
+<h2 is="EventCycle">Event Cycle</h2>
+   <p>The basic cycle of a View is as follows:</p>
+   <ol>
+    <li>An event comes in and is dispatched to the appropriate View. The View
+    handles the event and notifies any listeners.</li>
+    <li>If, in the course of processing the event, the View's bounds may need
+    to be changed, the View will call {@link android.view.View#requestLayout()}.</li>
+    <li>Similarly, if in the course of processing the event the View's appearance
+    may need to be changed, the View will call {@link android.view.View#invalidate()}.</li>
+    <li>If either {@link android.view.View#requestLayout()} or {@link android.view.View#invalidate()} were called,
+    the framework will take care of measuring, laying out, and drawing the tree
+    as appropriate.</li>
+   </ol>
+   
+   <p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on
+   the UI thread when calling any method on any View.
+   If you are doing work on other threads and want to update the state of a View
+   from that thread, you should use a {@link android.os.Handler}.
+   </p>
+-->
diff --git a/docs/html-intl/intl/ru/index.jd b/docs/html-intl/intl/ru/index.jd
index 3da0b9e..e917a8d 100644
--- a/docs/html-intl/intl/ru/index.jd
+++ b/docs/html-intl/intl/ru/index.jd
@@ -5,43 +5,81 @@
 
 @jd:body
 
-<!-- <div class="dac-hero-carousel" data-carousel-query="collection:index/carousel">
-</div> -->
-<section class="dac-hero-carousel">
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
 
-<!-- <article class="dac-expand dac-hero dac-invert active" style="background-color: rgb(38, 50, 56);"> -->
-<article class="dac-expand dac-hero dac-invert dac-darken mprev active" style="background-color: #75d1ff;">
-<a href="/preview/index.html">
+<section class="dac-expand dac-hero dac-invert" style="background-color:#455A64">
   <div class="wrap" style="max-width:1100px;margin-top:0">
-    <div class="cols dac-hero-content">
-      <div class="col-8of16 col-push-6of16 dac-hero-figure mprev">
-      </div>
-      <div class="col-8of16 col-pull-7of16">
-        <div class="dac-hero-tag"></div>
-
-        <h1 class="dac-hero-title" style="white-space:nowrap;">Android 6.0 Marshmallow</h1>
-        <p class="dac-hero-description">Подготовьтесь к выходу следующей версии
-        платформы Android. Протестируйте ваши приложения на устройствах Nexus
-        5, 6, 9 и Player. </p>
-
-        <a class="dac-hero-cta" href="{@docRoot}preview/index.html">
+    <div class="col-7of16 col-push-9of16" style="padding-left:2em;">
+      <a href="{@docRoot}preview/index.html">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
+        <p class="dac-hero-description">
+          Get ready for the next version of Android!
+          <strong>Test your apps</strong> on Nexus and other devices. Support new system
+          behaviors to <strong>save power and memory</strong>.
+          Extend your apps with <strong>multi-window UI</strong>,
+          <strong>direct reply notifications</strong> and more.
+        </p>
+        <a class="dac-hero-cta" href="/preview/index.html">
           <span class="dac-sprite dac-auto-chevron"></span>
-          Итак, приступим!
-        </a><br>
-        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
+          Learn more
+        </a><!--<br>
+        <a class="dac-hero-cta" href="/preview/support.html">
           <span class="dac-sprite dac-auto-chevron"></span>
-          Developer Preview 3 (final SDK)</a>
-      </div>
+          Update to Developer Preview (final SDK)
+        </a><br>-->
+      </a>
+    </div>
+    <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:0em;padding-right:1.5em;">
+      <a href="{@docRoot}preview/index.html">
+        <img style="" class="dac-hero-image" src="/images/home/n-preview-hero.png"
+             srcset="/images/home/n-preview-hero.png 1x,
+             /images/home/n-preview-hero_2x.png 2x">
+        </a>
     </div>
   </div>
-</a>
-</article></section>
+</section>
 
-<div class="actions-bar dac-expand dac-invert">
+<div id="useUpdatedTemplates" style="display:none" class="dac-section dac-slim dac-gray dac-expand">
   <div class="wrap dac-offset-parent">
     <a class="dac-fab dac-scroll-button" data-scroll-button href="#build-apps">
       <i class="dac-sprite dac-arrow-down-gray"></i>
     </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}sdk/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Get the SDK
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}samples/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Browse sample code
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}distribute/stories/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Watch stories
+        </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+    <a class="dac-fab dac-scroll-button" data-scroll-button="" href="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
     <div class="actions">
       <div><a href="{@docRoot}sdk/index.html">
         <span class="dac-sprite dac-auto-chevron-large"></span>
@@ -51,17 +89,15 @@
         <span class="dac-sprite dac-auto-chevron-large"></span>
         Browse Samples
       </a></div>
-      <div><a href="//www.youtube.com/user/androiddevelopers">
+      <div><a href="{@docRoot}distribute/stories/index.html">
         <span class="dac-sprite dac-auto-chevron-large"></span>
-        Watch Videos
+        Watch Stories
       </a></div>
     </div><!-- end .actions -->
   </div><!-- end .wrap -->
-</div><!-- end .actions-bar -->
+</div>
 
-
-
-<section class="dac-section dac-section-light" id="build-apps"><div class="wrap">
+<section class="dac-section dac-light" id="build-apps"><div class="wrap">
   <h1 class="dac-section-title">Build Beautiful Apps</h1>
   <div class="dac-section-subtitle">
     Resources to get you started with designing and developing for Android.
diff --git a/docs/html-intl/intl/ru/preview/api-overview.jd b/docs/html-intl/intl/ru/preview/api-overview.jd
deleted file mode 100644
index aa4a057..0000000
--- a/docs/html-intl/intl/ru/preview/api-overview.jd
+++ /dev/null
@@ -1,521 +0,0 @@
-page.title=Обзор API-интерфейсов
-page.keywords=предварительная версия,пакет sdk,совместимость
-page.tags=previewresources, androidm
-sdk.platform.apiLevel=22-mnc
-page.image=images/cards/card-api-overview_16-9_2x.png
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Содержание
-<a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
-        <span class="more">развернуть</span>
-        <span class="less" style="display:none">свернуть</span></a></h2>
-
-<ol id="toc44" class="hide-nested">
-  <li><a href="#app-linking">Связывание приложений</a></li>
-  <li><a href="#backup">Автоматическое резервное копирование для приложений</a></li>
-  <li><a href="#authentication">Авторизация</a>
-    <ol>
-      <li><a href="#fingerprint-authentication">Авторизация по отпечатку пальца</a></li>
-      <li><a href="#confirm-credential">Подтверждение учетных данных</a></li>
-    </ol>
-  </li>
-  <li><a href="#direct-share">Прямой обмен контентом</a></li>
-  <li><a href="#voice-interactions">Голосовой интерфейс</a></li>
-  <li><a href="#assist">API-интерфейс помощника</a></li>
-  <li><a href="#notifications">Уведомления</a></li>
-  <li><a href="#bluetooth-stylus">Поддержка пера Bluetooth</a></li>
-  <li><a href="#ble-scanning">Улучшенное сканирование Bluetooth с низким потреблением энергии</a></li>
-  <li><a href="#hotspot">Поддержка Hotspot 2.0, выпуск 1</a></li>
-  <li><a href="#4K-display">Режим отображения в формате 4K</a></li>
-  <li><a href="#behavior-themeable-colorstatelists">Метод ColorStateLists для работы с темами</a></li>
-  <li><a href="#audio">Работа с аудио</a></li>
-  <li><a href="#video">Работа с видео</a></li>
-  <li><a href="#camera">Возможности камеры</a>
-    <ol>
-      <li><a href="#flashlight">API-интерфейс вспышки</a></li>
-      <li><a href="#reprocessing">Повторная обработка изображения с камеры</a></li>
-    </ol>
-  </li>
-  <li><a href="#afw">Возможности Android for Work</a></li>
-</ol>
-
-<h2>Различия между API-интерфейсами</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">API уровня 22 в M Preview &raquo;</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M Developer Preview — ознакомительная версия предстоящего выпуска платформы Android,
-в котором реализованы новые возможности как для пользователей, так и для
-разработчиков приложений. В этой статье мы расскажем о наиболее интересных API-интерфейсах.</p>
-
-<p>Версия M Developer Preview предназначена для тех, <strong>кто хочет первым ознакомиться с новой платформой</strong>,
-а также для <strong>тестировщиков</strong>. <a href="{@docRoot}preview/setup-sdk.html">M Developer Preview — прекрасная возможность
-</a>повлиять на вектор развития
-платформы Android. 
-Мы с нетерпением ждем ваших отзывов!</p>
-
-<p class="caution"><strong>Внимание!</strong> Не публикуйте в магазине Google Play приложения,
-предназначенные для M Developer Preview.</p>
-
-<p class="note"><strong>Примечание.</strong> В этой статье часто упоминаются классы и методы,
-для которых на сайте <a href="{@docRoot}">developer.android.com</a> пока еще нет справочных материалов. Такие элементы API-интерфейса обозначаются здесь следующим образом:
-{@code code style} (без гиперссылок). Чтобы ознакомиться с предварительной документацией по этим элементам,
-загрузите <a href="{@docRoot}preview/download.html#docs">справочное руководство по предварительной версии</a>.</p>
-
-<h3>Важные изменения в работе приложений</h3>
-
-<p>Если вы ранее публиковали приложения для Android, то примите во внимание, что изменения в платформе могут повлиять
-на работу опубликованных приложений.</p>
-
-<p>Подробные сведения представлены в статье <a href="behavior-changes.html">Изменения в работе</a>.</p>
-
-<h2 id="app-linking">Связывание приложений</h2>
-<p>В M Preview улучшена система намерений Android за счет более эффективного связывания приложений.
-Теперь у вас есть возможность связывать приложения с вашими собственными веб-доменами. Благодаря этому
-платформа может сама, без вмешательства пользователя, определить приложение, которое будет использоваться по умолчанию
-для обработки определенной веб-ссылки. О том, как реализовать такую возможность, можно почитать в статье
-<a href="{@docRoot}preview/features/app-linking.html">Связывание приложений</a>.
-
-<h2 id="backup">Автоматическое резервное копирование для приложений</h2>
-<p>Теперь система автоматически выполняет полное резервное копирование и восстановление данных ваших приложений. Для приложений,
-написанных под M Preview, эта функция включена по умолчанию — вам даже не нужно добавлять отдельный код. Если пользователь решит удалить свою учетную запись Google, все резервные копии его данных также будут удалены. 
- О том, как работает эта функция и как настроить параметры резервного копирования элементов файловой системы, 
- рассказано в статье
-<a href="{@docRoot}preview/backup/index.html">Автоматическое резервное копирование для приложений</a>.</p>
-
-<h2 id="authentication">Авторизация</h2>
-<p>В M Preview представлены новые API-интерфейсы, которые позволяют авторизовать пользователей по отпечатку пальца
-(на устройствах, поддерживающих такую возможность), а также подтвердить учетные данные, если пользователь недавно авторизовался через механизмы разблокировки устройства
-(например, вводил пароль для разблокировки экрана). Эти API-интерфейсы рекомендуется использовать совместно с
-<a href="{@docRoot}training/articles/keystore.html">системой хранилища ключей Android</a>.</p>
-
-<h3 id="fingerprint-authentication">Авторизация по отпечатку пальца</h3>
-
-<p>Чтобы авторизовать пользователя по отпечатку пальца, получите экземпляр нового класса
-{@code android.hardware.fingerprint.FingerprintManager} и вызовите метод
-{@code FingerprintManager.authenticate()}. Эта функция доступна для совместимых
-устройств, оснащенных сканером отпечатков пальцев. Прежде всего, вам необходимо реализовать в своем приложении пользовательский интерфейс проверки
-подлинности по отпечатку пальца, а также использовать для него стандартный значок отпечатка пальца Android.
-Этот значок ({@code c_fp_40px.png}) вы можете найти в
-<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">примере приложения</a>. При разработке нескольких приложений, использующих функцию авторизации по отпечатку пальца,
-помните, что каждое из них должно самостоятельно выполнять проверку подлинности.
-</p>
-
-<p>Чтобы реализовать эту функцию, сначала добавьте в файл манифеста разрешение {@code USE_FINGERPRINT}.
-</p>
-
-<pre>
-&lt;uses-permission
-        android:name="android.permission.USE_FINGERPRINT" /&gt;
-</pre>
-
-<img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-
-<p>Пример такой проверки подлинности вы найдете в
-<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">примере
-диалогового окна авторизации по отпечатку пальца</a>.</p>
-
-<p>Если вы тестируете эту функцию, выполните следующие действия:</p>
-<ol>
-<li>Установите инструменты SDK Android (версию 24.3), если у вас их еще нет.</li>
-<li>Зарегистрируйте в эмуляторе новый отпечаток пальца (в разделе
-<strong>Настройки &gt; Безопасность &gt; Отпечаток пальца</strong>) и следуйте дальнейшим инструкциям.</li>
-<li>Воспользовавшись указанной ниже командой, сымитируйте в эмуляторе события касания для проверки отпечатка пальца.
- С помощью этой же команды сымитируйте события касания для проверки отпечатка пальца на экране блокировки или в
-своем приложении.
-<pre class="no-prettyprint">
-adb -e emu finger touch &lt;finger_id&gt;
-</pre>
-<p>В Windows, возможно, потребуется выполнить команду {@code telnet 127.0.0.1 <emulator-id>}, а затем
-{@code finger touch <finger_id>}.
-</p>
-</li>
-</ol>
-
-<h3 id="confirm-credential">Подтверждение учетных данных</h3>
-<p>Для авторизации пользователей ваше приложение может обратиться к сведениям о том, как давно они разблокировали свое устройство в последний раз. Эта функция
-избавляет пользователя от необходимости запоминать отдельные пароли для каждого приложения, а вас — от необходимости
-реализовывать собственный пользовательский интерфейс авторизации. В приложении эту функцию следует
-использовать совместно с реализацией открытого или секретного ключа для авторизации пользователей.</p>
-
-<p>Чтобы задать временя ожидания, в течение которого после успешной
-авторизации можно использовать ключ повторно, вызовите новый метод
-{@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()}
-при настройке {@link javax.crypto.KeyGenerator} или
-{@link java.security.KeyPairGenerator}. На сегодняшний день эта функция совместима с симметричными криптографическими
-операциями.</p>
-
-<p>Не стоит слишком часто отображать диалоговое окно повторной авторизации — ваше
-приложение должно сначала попробовать использовать криптографический объект и только потом, если окажется, что время ожидания истекло, обратиться к методу
-{@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()}
-для повторной авторизации пользователя.
-</p>
-
-<p>Как можно реализовать эту функцию, показано в
-<a href="https://github.com/googlesamples/android-ConfirmCredential" class="external-link">примерепроверки учетных данных</a>.
-</p>
-
-<h2 id="direct-share">Прямой обмен контентом</h2>
-
-<img src="{@docRoot}preview/images/direct-share-screen.png" srcset="{@docRoot}preview/images/direct-share-screen.png 1x, {@docRoot}preview/images/direct-share-screen_2x.png 2x" style="float:right; margin:0 0 20px 30px" width="312" height="329" />
-
-<p>M Preview содержит API-интерфейсы для интуитивно понятного и быстрого обмена контентом между пользователями. Теперь вы можете
-определить <em>целевые объекты прямого обмена</em>, которые будут запускать определенную операцию в приложении 
-и открываться в меню <em>Поделиться</em>. С помощью данной функции пользователи могут обмениваться контентом
-с целевыми объектами, такими как контакты, в других приложениях. Например, целевой объект прямого обмена может запустить операцию
-в другом приложении социальной сети, что позволит пользователю напрямую делиться контентом с другом
-или членами сообщества через это приложение.</p>
-
-<p>Чтобы включить использование целевых объектов прямого обмена, необходимо определить класс, который наследует класс
-{@code android.service.} <br>
-{@code chooser.ChooserTargetService}. Объявите
-{@code ChooserTargetService} в манифесте. В этом объявлении укажите разрешение
-{@code BIND_CHOOSER_TARGET_SERVICE} и фильтр намерений с помощью действия
-{@code SERVICE_INTERFACE}.</p>
-<p>В примере ниже показано, как объявить {@code ChooserTargetService}
- в вашем манифесте.</p>
-<pre>
-&lt;service android:name=".ChooserTargetService"
-        android:label="&#64;string/service_name"
-        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"&gt;
-    &lt;intent-filter&gt;
-        &lt;action android:name="android.service.chooser.ChooserTargetService" /&gt;
-    &lt;/intent-filter&gt;
-&lt;/service&gt;
-</pre>
-
-<p>Для каждого действия, которое необходимо сделать доступным для {@code ChooserTargetService}, добавьте в манифест вашего приложения элемент
-{@code <meta-data>} с именем
-{@code "android.service.chooser.chooser_target_service"}.
-</p>
-
-<pre>
-&lt;activity android:name=".MyShareActivity”
-        android:label="&#64;string/share_activity_label"&gt;
-    &lt;intent-filter>
-        &lt;action android:name="android.intent.action.SEND" /&gt;
-    &lt;/intent-filter>
-&lt;meta-data
-        android:name="android.service.chooser.chooser_target_service"
-        android:value=".ChooserTargetService" /&gt;
-&lt;/activity>
-</pre>
-
-<h2 id="voice-interactions">Голосовой интерфейс</h2>
-<p>
-В M Preview представлен новый голосовой API-интерфейс, который, наряду с
-<a href="https://developers.google.com/voice-actions/" class="external-link">голосовыми командами</a>,
-позволяет встраивать в приложение диалоговое голосовое взаимодействие. Вызовите метод
-{@code android.app.Activity.isVoiceInteraction()}, чтобы определить, была ли операция запущена
-в ответ на голосовую команду. Если это так, ваше приложение может использовать класс
-{@code android.app.VoiceInteractor}, чтобы получить голосовое подтверждение от пользователя, предложить ему список вариантов
-на выбор и многое другое. Подробнее о реализации голосовых команд можно почитать в
-<a href="https://developers.google.com/voice-actions/interaction/" class="external-link">руководстве к голосовому интерфейсу</a>.
-</p>
-
-<h2 id="assist">API-интерфейс помощника</h2>
-<p>
-M Preview предлагает новый способ взаимодействия пользователей с приложением — взаимодействие посредством помощника. Для этого
-пользователю необходимо разришить помощнику использовать текущий контекст, после чего он сможет вызывать помощника
-в любом приложении, удерживая кнопку <strong>Домой</strong>.</p>
-<p>Разработчик может также запретить приложению сообщать помощнику текущий контекст. Для этого установите флаг
-{@link android.view.WindowManager.LayoutParams#FLAG_SECURE}. Кроме стандартного набора
-информации, который платформа передает помощнику, ваше приложение может сообщать ему дополнительные
-сведения посредством нового класса {@code android.app.Activity.AssistContent}.</p>
-
-<p>Чтобы предоставить помощнику дополнительный контекст из вашего приложения, выполните следующие действия:</p>
-
-<ol>
-<li>Реализуйте интерфейс {@link android.app.Application.OnProvideAssistDataListener}.</li>
-<li>Зарегистрируйте этот приемник с помощью
-{@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()}.</li>
-<li>Для предоставления контекста, относящего к конкретной операции, переопределите метод обратного вызова
-{@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()},
-а также, при желании, новый метод обратного вызова{@code Activity.onProvideAssistContent()}.
-</ol>
-
-<h2 id="notifications">Уведомления</h2>
-<p>В API-интерфейс уведомлений внесены следующие изменения:</p>
-<ul>
-  <li>{@code NotificationListenerService.INTERRUPTION_FILTER_ALARMS} — новый уровень фильтрации,
-соответствующий новому режиму «Не беспокоить» <em>Только будильник</em>.</li>
-  <li>{@code Notification.CATEGORY_REMINDER} — новое значение категории, позволяющее отличить
-установленные пользователем напоминания от других событий
-({@link android.app.Notification#CATEGORY_EVENT}) и будильников
-({@link android.app.Notification#CATEGORY_ALARM}).</li>
-  <li>{@code android.graphics.drawable.Icon} — новый класс, который можно добавить к уведомлениям
-с помощью методов {@code Notification.Builder.setSmallIcon(Icon)} и
-{@code Notification.Builder.setLargeIcon(Icon)}.</li>
-  <li>{@code NotificationManager.getActiveNotifications()} — новый метод, с помощью которого ваше приложение
-может определить, какие из уведомлений в настоящее время активны. Если хотите взглянуть, как может быть реализовано приложение
-с этой функцией, пройдите по ссылке: <a href="https://github.com/googlesamples/android-ActiveNotifications" class="external-link">Пример активных уведомлений</a>.</li>
-</ul>
-
-<h2 id="bluetooth-stylus">Поддержка пера Bluetooth</h2>
-<p>В M Preview улучшена поддержка ввода с помощью пера Bluetooth. Пользователи могут подключить
-совместимое перо Bluetooth к своему смартфону или планшету.  Когда перо подключено, данные о его
-положении объединяются со сведениями о степени нажима и нажатия кнопки на пере,
-и таким образом при сенсорном вводе используются не только возможности сенсорного экрана. Ваше приложение может отслеживать
-нажатия кнопки пера и выполнять дополнительные действия, регистрируя в операции новые методы обратного вызова
-{@code View.onStylusButtonPressListener} и
-{@code GestureDetector.OnStylusButtonPressListener}.</p>
-
-<p>Для определения нажатий кнопок пера используйте методы и константы {@link android.view.MotionEvent}:
-</p>
-<ul>
-<li>Если пользователь касается пером кнопки на экране приложения, метод
-{@link android.view.MotionEvent#getToolType(int) getTooltype()} возвращает
-{@link android.view.MotionEvent#TOOL_TYPE_STYLUS}.</li>
-<li>В приложениях, разработанных для M Preview, при нажатии пользователем на основную кнопку на пере, метод
-{@link android.view.MotionEvent#getButtonState() getButtonState()}
-возвращает{@code MotionEvent.STYLUS_BUTTON_PRIMARY}.
- Если перо оснащено дополнительной кнопкой, то при нажатии на нее этот метод возвращает
-{@code MotionEvent.STYLUS_BUTTON_SECONDARY}. При нажатии пользователем
-на обе кнопки одновременно, метод возвращает оба значения через оператор «OR»
-({@code STYLUS_BUTTON_PRIMARY|STYLUS_BUTTON_SECONDARY}).</li>
-<li>
-В приложениях, разработанных для более ранних версий платформы, метод
-{@link android.view.MotionEvent#getButtonState() getButtonState()} возвращает
-{@link android.view.MotionEvent#BUTTON_SECONDARY} (при нажатии на основную кнопку на пере),
-{@link android.view.MotionEvent#BUTTON_TERTIARY} (при нажатии дополнительной кнопки на пере) или оба этих значения.
-</li>
-</ul>
-
-<h2 id="ble-scanning">Улучшенное сканирование Bluetooth с низким потреблением энергии</h2>
-<p>
-Если ваше приложение выполняет сканирование Bluetooth с низким потреблением энергии, вы можете при помощи нового метода
-{@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} указать, что обратные вызовы следует уведомлять только в случае, если прежде обнаружен пакет объявления,
- совпадающий с заданным фильтром
-{@link android.bluetooth.le.ScanFilter}, или если он не обнаруживается в течение заданного периода времени.
- Такой подход к сканированию обеспечивает еще большую экономию энергии, чем это было возможно в предыдущей
-версии платформы.
-</p>
-
-<h2 id="hotspot">Поддержка Hotspot 2.0, выпуск 1</h2>
-<p>
-В M Preview включена поддержка Hotspot 2.0 (выпуск 1) для устройств Nexus 6 и Nexus 9. Для
-предоставления учетных данных Hotspot 2.0 в вашем приложении используйте новые методы класса
-{@link android.net.wifi.WifiEnterpriseConfig}, такие как {@code setPlmn()} и
-{@code setRealm()}. В объекте {@link android.net.wifi.WifiConfiguration} можно задать поля
-{@link android.net.wifi.WifiConfiguration#FQDN} и {@code providerFriendlyName}.
-Новое свойство{@code ScanResult.PasspointNetwork} показывает, является ли обнаруженная
-сеть точкой доступа Hotspot 2.0.
-</p>
-
-<h2 id="4K-display">Режим отображения в формате 4K</h2>
-<p>Теперь платформа позволяет приложениям запрашивать увеличение разрешения экрана до 4K при обработке изображения
-на совместимом устройстве. Чтобы запросить текущее физическое разрешение, используйте новые API-интерфейсы
-{@code android.view.Display.Mode}. Если элементы пользовательского интерфейса, отрисованные в более низком логическом разрешении, масштабируются до
-более высокого физического разрешения, обратите внимание, что метод физического разрешения
-{@code Display.Mode.getPhysicalWidth()} возвращает результат, который может отличаться от результата выполнения метода логического разрешения
-{@link android.view.Display#getSize(android.graphics.Point) getSize()} .</p>
-
-<p>Можно отправить запрос системе на изменение физического разрешения в активном приложении, задав для окна вашего приложения свойство
-{@code WindowManager.LayoutParams.preferredDisplayModeId}.  Эта
-функция особенно полезна в случаях, когда требуется переключиться на разрешение экрана 4K. В режиме отображения в формате 4K элементы
-пользовательского интерфейса отрисовываются в исходном разрешении (например, 1080p) и масштабируются до 4K, однако содержимое
-{@link android.view.SurfaceView} объектов может отображаться с использованием основного разрешения.</p>
-
-<h2 id="behavior-themeable-colorstatelists">Метод ColorStateLists для работы с темами</h2>
-<p>Теперь метод
-{@link android.content.res.ColorStateList} для устройств под управлением M Preview поддерживает атрибуты темы. Методы
-{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} и
-{@link android.content.res.Resources#getColor(int) getColor()} уже неактуальны. Если вы
-вызываете эти API-интерфейсы, вызовите вместо них новые методы {@code Context.getColorStateList()} или
-{@code Context.getColor()}, Доступные также в библиотеке v4 appcompat
-посредством {@link android.support.v4.content.ContextCompat}.</p>
-
-<h2 id="audio">Работа с аудио</h2>
-
-<p>В M Preview реализован ряд улучшений в области обработки аудиофайлов системой Android, включая следующие: </p>
-<ul>
-  <li>Новые API-интерфейсы {@code android.media.midi}, поддерживающие протокол <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a>
- для отправки и получения событий
-MIDI.</li>
-  <li>Новые классы: {@code android.media.AudioRecord.Builder} позволяет создавать объекты захвата цифрового аудио, а {@code android.media.AudioTrack.Builder} — объекты воспроизведения,
-а также осуществлять настройку источника
-аудио и свойств приемника, переопределяя исходные системные настройки.</li>
-  <li>Обработчики API-интерфейсов предназначены для связывания аудиофайлов и устройств ввода. Это особенно полезно в случае, если ваше приложение
-предоставляет возможность выполнять голосовой поиск с помощью игрового контроллера или пульта дистанционного управления, подключенного к Android
-TV. Когда пользователь запустит поиск, система вызовет новый метод обратного вызова {@code android.app.Activity.onSearchRequested()}.
- Чтобы определить, оснащено ли устройство ввода встроенным микрофоном, получите из этого метода обратного вызова объект
-{@link android.view.InputDevice} и вызовите новый метод
-{@code InputDevice.hasMic()}.</li>
-  <li>Новый класс {@code android.media.AudioDevicesManager}, позволяющий пользователю получить список всех
-подключенных источников аудио и приемников. Также можно указать объект
-{@code android.media.OnAudioDeviceConnectionListener}, если требуется, чтобы приложение
-получало уведомления о подключении или отключении аудиоустройств.</li>
-</ul>
-
-<h2 id="video">Работа с видео</h2>
-<p>В M Preview вы обнаружите новые возможности API-интерфейсов для обработки видео, в том числе:</p>
-<ul>
-<li>Новый класс {@code android.media.MediaSync} обеспечивает синхронную обработку потоков
-аудио и видео. Буферы аудио отправляются неблокируемым способом и возвращаются посредством 
-обратного вызова. Также имеется поддержка динамической скорости воспроизведения.
-</li>
-<li>Новое событие {@code MediaDrm.EVENT_SESSION_RECLAIMED} указывает на то, что сеанс, запущенный
-приложением, освобожден диспетчером ресурсов. Если в вашем приложении используются сеансы DRM, то это событие
-необходимо обработать и убедиться в том, что освобожденный сеанс не используется.
-</li>
-<li>Новый код ошибки {@code MediaCodec.CodecException.ERROR_RECLAIMED} указывает на то, что
-диспетчер ресурсов освободил ресурс мультимедиа, используемый кодеком. Во всех остальных случаях кодек должен
-быть освобожден, поскольку его необходимо перевести в конечное состояние.
-</li>
-<li>Новый интерфейс {@code MediaCodecInfo.CodecCapabilities.getMaxSupportedInstances()} позволяет узнать максимальное количество
- экземпляров кодека, которые могут выполняться одновременно.
-</li>
-<li>Новый {@code MediaPlayer.setPlaybackParams()} метод задает скорость при ускоренном или 
-замедленном воспроизведении мультимедиа. Он также позволяет автоматически замедлять или ускорять воспроизведение аудио синхронно с
-видео.</li>
-</ul>
-
-<h2 id="camera">Возможности камеры</h2>
-<p>В M Preview представлены следующие API-интерфейсы для вспышки камеры и повторной обработки
-изображений камерой.</p>
-
-<h3 id="flashlight">API-интерфейс вспышки</h3>
-<p>Если камера оснащена вспышкой, вы можете вызвать метод{@code CameraManager.setTorchMode()},
-чтобы включить или отключить режим фонарика, не запуская камеру. Приложение
-не может заполучить вспышку или камеру в единоличное пользование. Режим фонарика отключается
-и становится недоступен, когда камера недоступна или ресурсов камеры недостаточно для использования вспышки в качестве
-фонарика. Кроме того, другие приложения могут вызывать метод {@code setTorchMode()}
-для отключения режима фонарика. При закрытии приложения, которое включило режим фонарика, этот режим
-отключается.</p>
-
-<p>Чтобы зарегистрировать обратный вызов для уведомления о режиме фонарика, вызовите метод
-{@code CameraManager.registerTorchCallback()}. При первой регистрации обратного вызова
-он сразу же вызывается со сведениями о состоянии режима фонарика для всех известных к настоящему моменту устройств,
-оснащенных вспышкой. При успешном включении или отключении фонарика вызывается метод
-{@code CameraManager.TorchCallback.onTorchModeChanged()}.</p>
-
-<h3 id="reprocessing">API-интерфейс повторной обработки</h3>
-<p>API-интерфейс {@link android.hardware.camera2 Camera2} теперь поддерживает повторную обработку цветовых моделей YUV и изображений в собственном
-формате непрозрачности. Чтобы определить, возможна ли повторная обработка, приложение использует метод
-{@code CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES}. Если устройство поддерживает повторную обработку,
-вы можете создать сеанс захвата изображения с камеры с возможностью повторной обработки, вызвав метод
-{@code CameraDevice.createReprocessableCaptureSession()}, а затем создать запросы на повторную обработку буфера
-входных данных.</p>
-
-<p>Чтобы подключить поток буфера входных данных к модулю повторной обработки изображения с камеры, используйте класс
-{@code ImageWriter}. Чтобы получить пустой буфер, выполните следующие действия:</p>
-
-<ol>
-<li>Вызовите метод {@code ImageWriter.dequeueInputImage()}.</li>
-<li>Заполните буфер входными данными.</li>
-<li>Отправьте буфер в камеру, вызвав метод {@code ImageWriter.queueInputImage()}.</li>
-</ol>
-
-<p>Если вы используете объект {@code ImageWriter} вместе с изображением
-{@code android.graphics.ImageFormat.PRIVATE}, вашему приложению не удастся получить доступ к изображению
-напрямую. Вместо этого передайте изображение {@code ImageFormat.PRIVATE} прямо в
-{@code ImageWriter}, вызвав метод {@code ImageWriter.queueInputImage()} без копии
-буфера.</p>
-
-<p>Класс {@code ImageReader} теперь поддерживает потоки изображений в формате {@code android.graphics.ImageFormat.PRIVATE}.
- Благодаря этому ваше приложение может организовать циклическую очередь выходных изображений
-{@code ImageReader}, выбрать одно или несколько изображений и отправить их в
-{@code ImageWriter} для повторной обработки камерой.</p>
-
-<h2 id="afw">Возможности Android for Work</h2>
-<p>В M Preview представлены новые API-интерфейсы для Android for Work:</p>
-<ul>
-  <li><strong>Улучшенные элементы управления для корпоративных специализированных устройств.</strong> Владельцу устройства
-теперь доступны новые возможности управления
-корпоративными специализированными устройствами при помощие следующих настроек:
-  <ul>
-    <li>Отключение или повторное включение блокировки клавиатуры с помощью метода
-{@code DevicePolicyManager.setKeyguardEnabledState()}.</li>
-    <li>Отключение или повторное включение строки состояния (включая быстрые настройки, уведомления и 
-запуск Google Now путем проведения пальцем по экрану) с помощью метода 
-{@code DevicePolicyManager.setStatusBarEnabledState()}.</li>
-    <li>Отключение и повторное включение безопасной загрузки с помощью константы
-{@code DISALLOW_SAFE_BOOT} {@link android.os.UserManager}.</li>
-    <li>Предотвращение отключения экрана, если устройство питается от сети, с помощью константы
-{@code STAY_ON_WHILE_PLUGGED_IN} {@link android.provider.Settings.Global}.</li>
-  </ul>
-  </li>
-  <li><strong>Автоматические установка и удаление приложений владельцами устройств.</strong> Владелец устройства теперь может автоматически
-устанавливать и удалять приложения с помощью API-интерфейсов {@link android.content.pm.PackageInstaller},
-независимо от Google Play for Work. Теперь вы можете подготавливать устройства с помощью компонента «Владелец устройства», который
-получает и устанавливает приложения без участия пользователя. Такая возможность особенно полезна тем, что позволяет подготавливать
-киоски или иные подобные устройства одним касанием, не активируя аккаунт Google.</li>
-<li><strong>Автоматический доступ к корпоративному сертификату.</strong> Теперь, когда приложение вызывает метод
-{@link android.security.KeyChain#choosePrivateKeyAlias(android.app.Activity,android.security.KeyChainAliasCallback,java.lang.String[],java.security.Principal[],java.lang.String,int,java.lang.String) choosePrivateKeyAlias()},
-владелец профиля или устройства, прежде чем ему будет предложено выбрать сертификат, может вызывать метод
-{@code DeviceAdminReceiver.onChoosePrivateKeyAlias()}, который автоматически предоставит предложению псевдоним.
- С помощью этой возможности вы можете предоставлять управляемым приложениям доступ к сертификатам без
-вмешательства пользователя.</li>
-<li><strong>Автоматическое принятие обновлений системы.</strong> Настройка параметров обновления системы с помощью
-{@code DevicePolicyManager.setSystemUpdatePolicy()} теперь позволяет компоненту «Владелец устройства» автоматически принять обновление системы
-(например, в киоске) или отложить его на период до 30 дней, причем пользователь
-тоже не сможет установить обновление до истечения этого срока. Более того, администратор может задать ежедневный временной интервал, когда устройство будет принимать
-обновления (например, во те часы, когда киоск не используется). При наличии доступного
-обновления система проверяет, заданы ли параметры обновления системы приложением «Параметры работы»
-, и выполняет соответствующие действия.
-</li>
-<li>
-<strong>Делегированная установка сертификата.</strong> Владелец профиля или устройства теперь может предоставлять
-стороннему приложению возможность вызывать следующие API-интерфейсы управления сертификатом
-{@link android.app.admin.DevicePolicyManager}:
-<ul>
-  <li>{@link android.app.admin.DevicePolicyManager#getInstalledCaCerts(android.content.ComponentName)
-getInstalledCaCerts()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#hasCaCertInstalled(android.content.ComponentName,byte[])
-hasCaCertInstalled()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#installCaCert(android.content.ComponentName,byte[])
-installCaCert()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#uninstallCaCert(android.content.ComponentName,byte[])
-uninstallCaCert()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#uninstallAllUserCaCerts(android.content.ComponentName)
-uninstallAllUserCaCerts()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#installKeyPair(android.content.ComponentName,java.security.PrivateKey,java.security.cert.Certificate,java.lang.String)
-installKeyPair()}</li>
-</ul>
-</li>
-<li><strong>Корпоративная настройка защиты от сброса параметров до заводских настроек.</strong> При подготовке компонента «Владелец устройства» теперь
-имеется возможность настроить параметры разблокировки защиты от сброса параметров до заводских настроек (FRP) путем задания пакета
-{@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS}. Приложение NFC Programmer
-может после перезагрузки устройства предоставить эти параметрыс целью разблокировки FRP и его подготовки
-(без необходимости запрашивать ранее настроенную учетную запись Google). Если не изменить эти параметры,
-заводские настройки сохранятся не позволят активировать устройство без ввода активированных ранее
-учетных данных Google.
-<p>Кроме того, задав ограничения на использование служб Google Play, компонент «Владелец устройства» может указать альтернативные учетные записи
-Google для разблокировки FRP и замены учетных записей, активированных на устройстве.</p>
-</li>
-<img src="{@docRoot}preview/images/work-profile-screen.png" srcset="{@docRoot}preview/images/work-profile-screen.png 1x, {@docRoot}preview/images/work-profile-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-<li><strong>Отслеживание использования данных.</strong> Владелец профиля или устройства теперь может запрашивать статистику использования
-данных, которая отображается в разделе <strong>Настройки &gt; Использование данных</strong>, с помощью новых методов
-{@code android.app.usage.NetworkStatsManager}. Владельцам профилей автоматически предоставляется
-разрешение запрашивать данные профиля, которым они управляют, тогда как владельцам устройств предоставляется доступ к сведениям об использовании данных
-основного управляемого пользователя.</li>
-<li><strong>Управление разрешениями на выполнение.</strong>
-<p>Владелец профиля или устройства может задавать политику разрешений
-для всех запросов на использование среды выполнения любых приложений с помощью
-{@code DevicePolicyManager.setPermissionPolicy()}. Это позволяет выбрать, будет ли система предлагать пользователю предоставить разрешение
-как обычно, или она будет автоматически предоставлять разрешения или отказывать в них. В последнем случае
-пользователю не удастся изменить выбор, сделанный владельцем профиля или устройства на экране
-разрешений приложения в разделе <strong>Настройки</strong>.</p></li>
-<li><strong>VPN в разделе «Настройки».</strong> Приложения VPN теперь отображаются в разделе
-<strong>Настройки &gt; Другие сети &gt; VPN</strong>.
-Кроме того, сведения в уведомлениях об использовании VPN теперь зависят от настроек самой VPN.
- Для владельца профиля уведомления зависят от того, настроена ли VPN для
-управляемого профиля, личного профиля или же того и другого. Для владельца устройства уведомления зависят от того, настроена ли VPN для
-всего устройства.</li>
-<li><strong>Уведомление о состоянии «В работе».</strong> Теперь, когда приложения
-из управляемого профиля выполняет операцию в фоновом режиме, в строке состояния появляется значок портфеля. Кроме того, если после разблокировки устройства
-открывается операция приложения из управляемого профиля, отображается всплывающее уведомление о том,
-что операция выполняется в рабочем профиле.
-</li>
-</ul>
-
-<p class="note">
-  Подробные сведения обо всех изменениях в API-интерфейсах в версии M Developer Preview представлены в <a href="{@docRoot}preview/download.html">отчете о различиях между API-интерфейсами</a>.
-</p>
diff --git a/docs/html-intl/intl/ru/preview/backup/index.jd b/docs/html-intl/intl/ru/preview/backup/index.jd
deleted file mode 100644
index 1f9dacc..0000000
--- a/docs/html-intl/intl/ru/preview/backup/index.jd
+++ /dev/null
@@ -1,327 +0,0 @@
-page.title=Автоматическое резервное копирование для приложений
-page.tags=backup, previewresources, androidm
-page.keywords=резервное копирование, автоматическое резервное копирование, предварительная версия
-page.image=images/cards/card-auto-backup_2x.png
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Содержание документа</h2>
-      <ol>
-        <li><a href="#overview">Обзор</a></li>
-        <li><a href="#configuring">Настройка резервного копирования данных</a></li>
-        <li><a href="#testing">Тестирование конфигурации резервного копирования</a></li>
-        <li><a href="#issues">Известные проблемы</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  Пользователи зачастую тратят очень много времени и усилий на создание данных и настройку параметров в приложениях.
- Поэтому одна из важнейших задач при разработке платформы — сделать так, чтобы пользователь не терял свои данные, если его устройство вышло из строя или он решил перейти на новое.
- Устройства под управлением Android M Preview
-отлично справляются с этой задачей, автоматически выполняя резервное копирование данных
-приложения в Google Drive. Если пользователь перейдет на новое устройство, данные приложений будут автоматически перенесены
-на него.
-</p>
-
-<p>
-  Автоматическое резервное копирование предусмотрено для всех приложений, установленных на устройствах под управлением Android M Preview. При этом
-вам не нужно добавлять в приложение дополнительный код. Система сама предложит пользователю возможность включить или отключить
-автоматическое резервное копирование данных. Вы также можете указать, для каких данных приложения следует создавать резервные копии, а для каких — нет.
-</p>
-
-<p>
-  В этой статье описывается новое поведение системы и порядок указания данных приложения,
-подлежащих резервному копированию.
-</p>
-
-<h2 id="overview">Обзор</h2>
-
-<p>
-  При автоматическом резервном копировании данные, создаваемые в вашем приложении на устройстве пользователя, отпраляются в
-Google Drive пользователя и происходит их шифрование, что позволяет предотварить потерю данных. Хранилище для ваших данных предоставляется совершенно
-бесплатно. Более того, данные резервного копирования засчитываются вне личной квоты пользователя на использование ресурсов Google Drive. В период использования M Developer Preview
-пользователи могут хранить в облаке до 25 МБ данных для каждого приложения Android.
-</p>
-
-<p>
-  Автоматическое резервное копирование выполняется каждые 24 часа, когда устройство не используется, находится в режиме зарядки и подключено к сети
-Wi-Fi. При соблюдении необходимых условий служба диспетчера резервного копирования отправляет все доступные резервные копии данных
-в облако. Когда пользователь переходит на использование нового устройства или удаляет и заново устанавливает
-приложение, для которого имеется резервная копия, выполняется операция восстановления и резервные копии данных переносятся в каталог
-переустановленного приложения.
-</p>
-
-<p class="note">
-  <strong>Примечание.</strong> Если ваше приложение использует устаревшую
-<a href="{@docRoot}google/backup/index.html">службу резервного копирования Android</a>, то
-вместо нового поведения системы будет применяться существующий механизм резервного копирования.
-</p>
-
-
-<h3 id="auto-exclude">Автоматически исключаемые файлы данных</h3>
-
-<p>
-  Не все данные приложения подлежат резервному копированию. В частности, временные файлы и кэш сохранять не нужно. Поэтому служба
-автоматического резервного копирования по умолчанию исключает из этого процесса определенные файлы данных:
-</p>
-
-<ul>
-  <li>файлы в каталогах, на которые ссылаются методы {@link android.content.Context#getCacheDir
-getCacheDir()} и {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()};
-
-  </li>
-
-  <li>файлы во внешнем хранилище, кроме файлов, находящихся в каталогах, на которые ссылается метод
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()};
-
-  </li>
-
-  <li>файлы в каталоге, на который ссылается метод
-{@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()}.
-  </li>
-</ul>
-
-<h2 id="configuring">Настройка резервного копирования данных</h2>
-
-<p>
-  Резервные копии создаются для данных, создаваемых любым приложением, которое установлено на устройстве под управлением M Preview, исключение составляют только 
-файлы, обозначенные в предыдущем разделе. Если вы хотите самостоятельно определить,
-какие данные вашего приложения подлежат резервному копированию, а какие нет, это можно сделать с помощью соответствующих настроек в манифесте приложения.
-</p>
-
-<h3 id="include-exclude">Включение или исключение данных</h3>
-
-<p>
-  В зависимости о того, какие данные требуются вашему приложению и как вы их сохраняете, вам может потребоваться задать определенные правила
-для включения или исключения определенных файлов или каталогов. Служба автоматического резервного копирования
-поддерживает настройку таких правил посредством XML-файла конфигурации и
-манифеста приложения. В манифесте приложения можно указать файл конфигурации схемы резервного копирования, как показано в примере
-ниже.
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:tools="http://schemas.android.com/tools"
-        package="com.my.appexample"&gt;
-    &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
-    &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
-    &lt;app ...
-<strong>        android:fullBackupContent="&#64;xml/mybackupscheme"&gt;</strong>
-    &lt;/app&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
-
-<p>
-  В этом примере кода атрибут <code>android:fullBackupContent</code> задает XML-файл,
-расположенный в каталоге <code>res/xml/</code> проекта приложения, который называется
-<code>mybackupscheme.xml</code>. В этом файле конфигурации содержатся правила резервного
-копирования файлов. В следующем примере кода демонстрируется файл конфигурации, в котором из процесса резервного копирования исключается определенный
-файл:
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;full-backup-content&gt;
-    &lt;exclude domain="database" path="device_info.db"/&gt;
-&lt;/full-backup-content&gt;
-</pre>
-
-<p>
-  В этом примере конфигурации резервного копирования из операции исключается только определенный файл базы данных.
-  Для всех остальных файлов будут создаваться резервные копии.
-</p>
-
-<h4>Синтаксис конфигурации резервного копирования</h4>
-
-<p>
-  Служба резервного копирования предоставляет вам возможность указать, какие файлы следует включить в процесс резервного копирования или
-исключить из него. Синтаксис XML-файла конфигурации резервного копирования данных следующий:
-</p>
-
-<pre>
-&lt;full-backup-content&gt;
-    &lt;include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
-    &lt;exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
-&lt;/full-backup-content&gt;
-</pre>
-
-<p>
-  С помощью перечисленных ниже элементов и атрибутов можно указать файлы, которые вы хотите включить в процесс резервного копирования или исключить из
-него:
-</p>
-
-<ul>
-  <li>
-  <code>&lt;include&gt;</code>: используйте этот элемент, если хотите, чтобы система не создавала резервные копии всех данных в вашем приложении, как это происходит по умолчанию, а копировала только определенный набор данных.
- Если указан тег
-<code>&lt;include&gt;</code>, система создает резервные копии <em>только для ресурсов</em>
-с этим элементом.
-  </li>
-
-  <li>
-  <code>&lt;exclude&gt;</code>: используйте этот элемент, чтобы указать набор ресурсов, которые
-следует исключить из процесса резервного копирования. В таком случае система будет создавать резервные копии всех данных в приложении, кроме ресурсов с этим
-элементом;
-  </li>
-
-  <li>
-  <code>domain.</code>: тип ресурса, который необходимо включить в резервное копирование или исключить из него. Допустимые
-значения для этого атрибута могут быть следующие:
-  </li>
-
-  <li style="list-style: none">
-  <ul>
-    <li>
-    <code>root</code>: указывает на то, что ресурс находится в корневом каталоге приложения;
-    </li>
-
-    <li>
-    <code>file</code>: соответствует ресурсу в каталоге, возвращаемом методом
-{@link android.content.Context#getFilesDir getFilesDir()};
-    </li>
-
-    <li>
-    <code>database</code>: соответствует базе данных, возвращаемой методом
-{@link android.content.Context#getDatabasePath getDatabasePath()} или классом
-{@link android.database.sqlite.SQLiteOpenHelper};
-    </li>
-
-    <li>
-    <code>sharedpref</code>: соответствует объекту {@link android.content.SharedPreferences},
-возвращаемому методом
-{@link android.content.Context#getSharedPreferences getSharedPreferences()};
-    </li>
-
-    <li>
-    <code>external</code>: указывает на то, что ресурс находится во внешнем хранилище, и соответствует
-файлу в каталоге, возвращаемом методом
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()};
-    </li>
-
-    <li>
-    <code>path</code>: путь к ресурсу, который необходимо включить в резервное копирование или исключить
-из него.
-    </li>
-  </ul>
-  </li>
-</ul>
-
-
-<h3 id="prohibit">Запрет резервного копирования данных</h3>
-
-<p>
-  Можно запретить автоматическое резервное копирование любых данных приложения. Для этого в манифесте в элементе приложения задайте для атрибута
-<code>android:allowBackup</code> значение<code>false</code>.
- Как это делается, видно в примере кода ниже:
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:tools="http://schemas.android.com/tools"
-        package="com.my.appexample"&gt;
-    &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
-    &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
-    &lt;app ...
-<strong>        android:allowBackup="false"&gt;</strong>
-    &lt;/app&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
-
-
-<h2 id="testing">Тестирование конфигурации резервного копирования</h2>
-
-<p>
-  После создания конфигурации резервного копирования необходимо ее протестировать и убедиться, что ваше приложение сохраняет данные и впоследствии
-они могут быть должным образом восстановлены.
-</p>
-
-
-<h4>Включение журнала резервного копирования</h4>
-
-<p>
-  Чтобы упростить для себя анализ обработки вашего XML-файла функцией резервного копирования, прежде чем приступать к тестированию,
-включите ведение журнала:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
-</pre>
-
-<h4>Тестирование резервного копирования</h4>
-
-<p>Чтобы вручную запустить процесс резервного копирования, сначала активируйте диспетчер резервного копирования, выполнив следующую
-команду:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr run
-</pre>
-
-<p>
-  Затем вручную выполните резервное копирование вашего приложения с помощью следующей команды, указав название
-пакета в виде параметра <code>&lt;PACKAGE&gt;</code>:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr fullbackup &lt;PACKAGE&gt;</pre>
-
-
-<h4>Тестирование восстановления</h4>
-
-<p>
-  Чтобы вручную запустить процесс восстановления после резервного копирования данных приложения, выполните следующую команду, указав название
-пакета в виде параметра <code>&lt;PACKAGE&gt;</code>:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr restore &lt;PACKAGE&gt;
-</pre>
-
-<p class="warning">
-  <b>Предупреждение.</b> При выполнении этого действия перед операцией
-восстановления работа приложения будет остановлена и все его данные удалены.
-</p>
-
-<p>
-  Чтобы запустить процесс восстановления, удалите ваше приложение и снова установите его. Данные
-приложения будут автоматически восстановлены из облака сразу по завершении установки.
-</p>
-
-
-<h4>Устранение неполадок резервного копирования</h4>
-
-<p>
-  При возникновении проблем можно стереть резервные копии данных и все связанные с ними метаданные. Для этого 
-отключите и повторного включите резервное копирование в разделе <strong>Настройки &gt; Резервное копирование</strong>, восстановите заводские настройки устройства или выполните
-следующую команду:
-</p>
-
-<pre>$ adb shell bmgr wipe &lt;TRANSPORT&gt; &lt;PACKAGE&gt;</pre>
-
-<p>
-  Перед значением <code>&lt;TRANSPORT&gt;</code> должен быть префикс <code>com.google.android.gms</code>.
-  Чтобы получить список транспорта, выполните следующую команду:
-</p>
-
-<pre>$ adb shell bmgr list transports</pre>
-
-<h2 id="issues">Известные проблемы</h2>
-
-<p>Ниже перечислены известные проблемы в работе службы автоматического резервного копирования.</p>
-
-<ul>
-  <li><strong>Google Cloud Messaging</strong>
-– существует проблема с приложениями, использующими Google Cloud Messaging для отправки push-уведомлений. Она связана с тем,
-что при резервном копировании кода регистрации, возвращаемого Google Cloud Messaging, может нарушиться отправка
-push-уведомлений для восстановленного приложения. Важно запросить у API-интерфейса новый код
-регистрации после установки приложения на новое устройство, что не выполняется в случае резервного копирования
-старого кода регистрации. Чтобы избежать этого, исключите код регистрации из списка файлов
-для резервного копирования.
-  </li>
-</ul>
diff --git a/docs/html-intl/intl/ru/preview/behavior-changes.jd b/docs/html-intl/intl/ru/preview/behavior-changes.jd
deleted file mode 100644
index 0623ea7..0000000
--- a/docs/html-intl/intl/ru/preview/behavior-changes.jd
+++ /dev/null
@@ -1,402 +0,0 @@
-page.title=Изменения в работе
-page.keywords=предварительная версия,пакет sdk,совместимость
-sdk.platform.apiLevel=MNC
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Содержание документа</h2>
-
-<ol id="toc44" class="hide-nested">
-    <li><a href="#behavior-runtime-permissions">Разрешения на выполнение</a></li>
-    <li><a href="#behavior-power">Оптимизация экономии энергии</a>
-        <ol>
-            <li><a href="#behavior-doze">Режим «Doze»</a></li>
-            <li><a href="#behavior-app-standby">Ждущий режим для приложений</a></li>
-        </ol>
-    </li>
-    <li><a href="#behavior-adoptable-storage">Подключаемые устройства хранения</a></li>
-    <li><a href="#behavior-apache-http-client">Отказ от HTTP-клиента Apache</a></li>
-    <li><a href="#behavior-audiomanager-Changes">Изменения в классе AudioManager</a></li>
-    <li><a href="#behavior-test-selection">Выделение текста</a></li>
-    <li><a href="#behavior-keystore">Изменения в хранилище ключей Android</a></li>
-    <li><a href="#behavior-network">Изменения в работе с Wi-Fi и сетями</a></li>
-    <li><a href="#behavior-camera">Изменения в службе камеры</a></li>
-    <li><a href="#behavior-art-runtime">Среда выполнения ART</a></li>
-    <li><a href="#behavior-apk-validation">Проверка пакетов APK</a></li>
-    <li><a href="#behavior-afw">Изменения в Android for Work</a></li>
-</ol>
-
-<h2>Различия между API-интерфейсами</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">API уровня 22 в M Preview &raquo;</a> </li>
-</ol>
-
-
-<h2>См. также:</h2>
-<ol>
-<li><a href="{@docRoot}preview/api-overview.html">Обзор API-интерфейсов M Developer Preview</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>Наряду с новыми функциями и возможностями, версия M Developer Preview также включает в себя ряд 
-системных изменений и изменений в работе API-интерфейсов. В этом документе рассматриваются
-определенные ключевые изменения, о которых следует знать, чтобы учитывать их при разработке приложений.</p>
-
-<p>Если вы ранее публиковали приложения для Android, то примите во внимание,
-что эти изменения в платформе могут повлиять на работу ваших уже опубликованных приложений.</p>
-
-<h2 id="behavior-runtime-permissions">Разрешения на выполнение</h1>
-<p>В M Preview представлена новая модель разрешений: теперь пользователи могут управлять разрешениями приложений
-напрямую во время работы с ними. Такая модель обеспечивает улучшенное управление
-разрешениями и одновременно позволяет оптимизировать установку и автоматическое обновление для разработчиков.
-Пользователи могут предоставлять разрешения или отзывать их отдельно для каждого установленного приложения. </p>
-
-<p>В ваших приложениях, предназначенных для M Preview, следует в обязательном порядке проверить такие разрешения и при необходимости
-запросить их. Чтобы определить, было ли вашему приложению предоставлено разрешение, вызовите новый метод
-{@code Context.checkSelfPermission()}. Чтобы запросить разрешение, вызовите новый метод
-{@code Activity.requestPermission()}. Даже если ваше приложение не предназначено для использования в версии M, вам все равно следует
-протестировать его с использованием новой модели разрешений.</p>
-
-<p>Подробные сведения о поддержке новой модели
-разрешений вашим приложением представлены в статье
-<a href="{@docRoot}preview/features/runtime-permissions.html">Разрешения</a>. Как можно проверить влияние новой модели на ваше приложение, читайте в
-<a href="{@docRoot}preview/testing/guide.html#runtime-permissions">руководстве по тестированию</a></p>
-
-<h2 id="behavior-power">Оптимизация экономии энергии</h2>
-<p>В M Preview реализован ряд новых функций оптимизации экономии энергии для неактивных устройств и приложений.</p>
-
-<h3 id="behavior-doze">Режим «Doze»</h3>
-<p>Если устройство отключено от сети и остается неактивным (и с выключенным экраном) в течение определенного времени, 
-оно переходит в режим <em>Doze</em> и старается, чтобы система не выходила из спящего состояния. В этому режиме
-устройство периодически возобновляет свою обычную работу на краткие промежутки времени, чтобы произвести
-синхронизацию и позволить системе выполнить какие-либо отложенные операции.</p>
-
-<p>Когда устройство находится в режиме «Doze», к приложениям применяются следующие ограничения:</p>
-<ul>
-<li>Доступ к сети отключен до тех пор, пока от службы Google Cloud Messaging
-не будет получен высокоприоритетный сигнал побуждения приложения к действию.</li>
-<li>Механизмы <a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">WakeLock</a> игнорируются.</li>
-<li>Будильники, установленные с помощью класса {@link android.app.AlarmManager}, отключаются, кроме
-тех, которые установлены с помощью методов {@link android.app.AlarmManager#setAlarmClock setAlarmClock()}
-и {@code AlarmManager.setAndAllowWhileIdle()}.</li>
-<li>Поиск сетей Wi-Fi не производится.</li>
-<li>Операции синхронизации и заданий для адаптеров синхронизации и {@link android.app.job.JobScheduler} блокируются.
-</li>
-</ul>
-</p>
-<p>После выхода из режима «Doze», устройство приступает к выполнению любых отложенных заданий и операций синхронизации.</p>
-<p>Чтобы протестировать эту функцию, подключите устройство под управлением M Preview к своему компьютеру
-для разработки и выполните следующие команды:
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-<p class="note"><strong>Примечание.</strong> В предстоящем выпуске службы
-<a href="https://developers.google.com/cloud-messaging/" class="external-link">Google Cloud Messaging</a>
-реализована возможность назначения сообщений
-с высоким приоритетом. При получении вашим приложением сообщений GCM с высоким приоритетом ему на короткое время предоставляется
-доступ к сети, даже если устройство находится в режиме «Doze».
-</p>
-
-<p>Советы по тестированию работы приложений в режиме «Doze» представлены
-в <a href="{@docRoot}preview/testing/guide.html#doze-standby">руководстве
-по тестированию</a>. </p>
-
-<h3 id="behavior-app-standby">Ждущий режим для приложений</h3>
-<p>В M Preview система может определять, что приложения неактивны, когда они
-не используются. Приложение считается неактивным по прошествии определенного периода времени до тех пор, пока система
-не обнаружит один из следующих сигналов:</p>
-
-<ul>
-<li>приложение явным образом запущено пользователем;</li>
-<li>у приложения имеется процесс, который в настоящее время выполняется на переднем плане (это может быть как сама операция или служба переднего плана,
-так и процесс, используемый другой операцией или службой переднего плана).</li>
-<li>приложение создает уведомление, которое пользователи видят на экране блокировки или в
-области уведомлений.</li>
-<li>пользователь явным образом исключает приложение из списка для оптимизации
-в разделе <strong>Настройки</strong>.</li>
-</ul>
-
-<p>Если устройство отключено от электросети, для приложений, которые считаются неактивными, закрывается доступ к Интернету,
-а их операции синхронизации и задания приостанавливаются. После подключения устройства к электросети доступ к Интернету для приложений возобновится
-и они смогут приступить к выполнению любых ожидающих заданий и операций синхронизации. Если устройство
-неактивно в течение длительного времени, неактивным приложениям раз в день предоставляется доступ к сети.</p>
-
-<p>Чтобы протестировать эту функцию, подключите устройство под управлением M Preview к своему компьютеру
-для разработки и выполните следующие команды:
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell am set-idle &lt;packageName&gt; true
-$ adb shell am set-idle &lt;packageName&gt; false
-$ adb shell am get-idle &lt;packageName&gt;
-</pre>
-
-<p class="note"><strong>Примечание.</strong> В предстоящем выпуске службы
-<a href="https://developers.google.com/cloud-messaging/" class="external-link">Google Cloud Messaging</a> (GCM)
-реализована возможность назначения сообщений
-с высоким приоритетом. При получении вашим приложением сообщений GCM с высоким приоритетом ему на короткий промежуток времени предоставляется
-доступ к сети, даже если приложение находится в неактивном состоянии.
-</p>
-
-<p>Советы по тестированию работы приложений в ждущем режиме представлены
-в <a href="{@docRoot}preview/testing/guide.html#doze-standby">руководстве
-по тестированию</a>. </p>
-
-<h2 id="behavior-adoptable-storage">Подключаемые устройства хранения</h2>
-<p>
-В M Preview пользователи могут <em>подключать</em> внешние устройства хранения, такие как SD-карты, и использовать их как внутреннее хранилище,
-зашифровав и отформатировав требуемым образом. Благодаря этому
- пользователи могут переносить как сами приложения, так свои файлы для этих приложений с одного устройства хранения на другое. При переносе
-приложений система руководствуется настройкой
-<a href="{@docRoot}guide/topics/manifest/manifest-element.html#install">{@code android:installLocation}</a>
-в манифесте.</p>
-
-<p>Если ваше приложение работает с указанными ниже API-интерфейсами или полями, следует помнить, что возвращаемые ими пути к файлам
-будут динамически изменяться при перемещении приложения с внутреннего хранилища на внешнее устройство или наоборот.
-При создании путей к файлам настоятельно рекомендуется всегда вызывать эти API-интерфейсы динамическим образом.
-Не используйте жестко запрограммированные пути к файлам и не указывайте созданные ранее полные пути к файлам.</p>
-
-<ul>
-<li>Методы {@link android.content.Context}:
-    <ul>
-        <li>{@link android.content.Context#getFilesDir() getFilesDir()}</li>
-        <li>{@link android.content.Context#getCacheDir() getCacheDir()}</li>
-        <li>{@link android.content.Context#getCodeCacheDir() getCodeCacheDir()}</li>
-        <li>{@link android.content.Context#getDatabasePath(java.lang.String) getDatabasePath()}</li>
-        <li>{@link android.content.Context#getDir(java.lang.String,int) getDir()}</li>
-        <li>{@link android.content.Context#getNoBackupFilesDir() getNoBackupFilesDir()}</li>
-        <li>{@link android.content.Context#getFileStreamPath(java.lang.String) getFileStreamPath()}</li>
-        <li>{@link android.content.Context#getPackageCodePath() getPackageCodePath()}</li>
-        <li>{@link android.content.Context#getPackageResourcePath() getPackageResourcePath()}</li>
-    </ul>
-</li>
-<li>Поля {@link android.content.pm.ApplicationInfo}:
-    <ul>
-        <li>{@link android.content.pm.ApplicationInfo#dataDir dataDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#sourceDir sourceDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#nativeLibraryDir nativeLibraryDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#publicSourceDir publicSourceDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#splitSourceDirs splitSourceDirs}</li>
-        <li>{@link android.content.pm.ApplicationInfo#splitPublicSourceDirs splitPublicSourceDirs}</li>
-    </ul>
-</li>
-</ul>
-
-<p>Для отладки этой функции в Developer Preview подключите USB-устройство,
- к устройству Android посредством USB-кабеля On-The-Go (OTG) и выполните следующую команду:</p>
-
-<pre class="no-prettyprint">
-$ adb shell sm set-force-adoptable true
-</pre>
-
-<h2 id="behavior-apache-http-client">Отказ от HTTP-клиента Apache</h2>
-<p>В M Preview удалена поддержка HTTP-клиента Apache. Если ваше приложение, разработанное для
-Android 2.3 (уровень API 9) или более поздней версии, использует этот клиент, вам необходимо воспользоваться вместо него классом {@link java.net.HttpURLConnection}.
- Этот API-интерфейс более эффективный, поскольку он сокращает использование сетевого трафика за счет прозрачного сжатия
-и кэширования ответов, а также сводит к минимуму потребление энергии. Чтобы продолжить использовать API-интерфейсы HTTP Apache,
-сначала объявите в своем файле {@code build.gradle} следующую зависимость compile-time:
-</p>
-<pre>
-android {
-    useLibrary 'org.apache.http.legacy'
-}
-</pre>
-<p>Вместо OpenSSL в Android теперь будет использоваться библиотека 
-<a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a>
-. Если вы используете в ваших приложениях Android NDK, не связывайте его с криптографическими библиотеками,
-которые не входят в состав API-интерфейса NDK, такими как {@code libcrypto.so} и {@code libssl.so}. Эти библиотеки
-не являются общедоступными API-интерфейсами, и в разных выпусках или на разных устройствах они могут быть изменены или разбиты без предварительного уведомления.
-Кроме того, этим вы можете создать уязвимости в системе безопасности вашего продукта. Вместо этого внесите изменения в
-собственный код для вызова криптографических API-интерфейсов Java посредством JNI или статической ссылки на
-библиотеку криптографии по своему выбору.</p>
-
-<h2 id="behavior-audiomanager-Changes">Изменения в классе AudioManager</h2>
-<p>Теперь в платформе не поддерживается настройка уровня громкости напрямую или отключение звука определенных потоков с помощью класса {@link android.media.AudioManager}.
- Метод {@link android.media.AudioManager#setStreamSolo(int,boolean)
-setStreamSolo()} больше не используется. Вместо него следует вызывать метод
-{@code AudioManager.requestAudioFocus()}. Также больше не используется метод
-{@link android.media.AudioManager#setStreamMute(int,boolean) setStreamMute()};
-вместо него следует вызывать метод {@code AudioManager.adjustStreamVolume()}
-и передавать в него значение направления {@code ADJUST_MUTE} или {@code ADJUST_UNMUTE}.</p>
-
-<h2 id="behavior-test-selection">Выделение текста</h2>
-
-<img src="{@docRoot}preview/images/text-selection.gif" style="float:right; margin:0 0 20px 30px" width="360" height="640" />
-
-<p>Теперь, когда пользователь выделяет текст в приложении, такие дополнительные действия как
-<em>Вырезать</em>, <em>Копировать</em> и <em>Вставить</em>, можно отображать на
-<a href="http://www.google.com/design/spec/patterns/selection.html#selection-text-selection" class="external-link">перемещаемой панели инструментов</a>. Реализация взаимодействия пользователя с текстом аналогична той, которая используется для
-контекстного меню,
-как описано в статье
-<a href="{@docRoot}guide/topics/ui/menus.html#CABforViews">Запуск контекстного меню для отдельных представлений</a>.</p>
-
-<p>Чтобы реализовать перемещаемую панель инструментов для выделения текста, внесите в ваши существующие приложения
-следующие изменения.</p>
-<ol>
-<li>В объекте {@link android.view.View} или {@link android.app.Activity} измените вызовы
-{@link android.view.ActionMode} с
-{@code startActionMode(Callback)} на {@code startActionMode(Callback, ActionMode.TYPE_FLOATING)}.</li>
-<li>Возьмите свою реализацию класса {@code ActionMode.Callback} и сделайте его наследуемой от класса
-{@code ActionMode.Callback2}.</li>
-<li>Переопределите метод {@code Callback2.onGetContentRect()} для указания координат объекта
-{@link android.graphics.Rect} контента (например, прямоугольника выделения текста) в представлении.</li>
-<li>Если расположение прямоугольника больше недействительно и это единственный элемент, который не подлежит пересчитыванию,
-вызовите метод {@code ActionMode.invalidateContentRect()}.</li>
-</ol>
-
-<p>Если вы используете
-<a href="{@docRoot}tools/support-library/index.html">вспомогательную библиотеку Android</a> версии 22.2, то помните, что перемещаемым панелям инструментов
-не свойственна обратная совместимость и по умолчанию для управления объектами {@link android.view.ActionMode}
-используется библиотека appcompat. Это означает, что перемещаемые панели инструментов не будут отображаться. Чтобы включить поддержку
-{@link android.view.ActionMode} в
-{@link android.support.v7.app.AppCompatActivity}, вызовите метод
-{@code android.support.v7.app.AppCompatActivity.getDelegate()}, затем вызовите 
-{@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()} для возвращенного объекта
-{@link android.support.v7.app.AppCompatDelegate} и задайте для параметра input
-значение {@code false}. Этот вызов возвращает управление объектами {@link android.view.ActionMode}
-платформе. На устройствах под управлением M Preview платформа поддерживает как режимы
-{@link android.support.v7.app.ActionBar}, так и режимы перемещаемых панелей инструментов, тогда как на устройствах под управлением более ранних версий
-поддерживаются только режимы {@link android.support.v7.app.ActionBar}.</p>
-
-<h2 id="behavior-keystore">Изменения в хранилище ключей Android</h2>
-<p>В M Preview
-<a href="{@docRoot}training/articles/keystore.html">поставщик хранилища ключей Android</a> больше не поддерживает
-DSA. ECDSA по-прежнему поддерживается.</p>
-
-<p>Ключи, для которых не требуется шифрование в хранилище, больше не будут удаляться при отключении или сбросе защищенного экрана блокировки
-(например, пользователем или администратором устройства). Ключи, для которых требуется шифрование
-в хранилище, во время таких событий будут удалены.</p>
-
-<h2 id="behavior-network">Изменения в работе с Wi-Fi и сетями</h2>
-
-<p>Ниже перечислены изменения в API-интерфейсах для работы с Wi-Fi и сетями, реализованные в M Preview.</p>
-<ul>
-<li>Теперь ваши приложения могут изменять состояние объектов {@link android.net.wifi.WifiConfiguration}
-только в том случае, если эти объекты вы создали сами. Вам запрещено изменять или удалять объекты
-{@link android.net.wifi.WifiConfiguration}, созданные пользователем или другими приложениями.
-</li>
-<li>
-Ранее, если приложение принудительно подключало устройство к определенной сети Wi-Fi с помощью метода
-{@link android.net.wifi.WifiManager#enableNetwork(int,boolean) enableNetwork()} и настройки
-{@code disableAllOthers=true}, то устройство отключалось от других сетей, например, от
-сотовой сети. В M Preview устройство больше не отключается от других сетей. Если
-в вашем приложении для параметра {@code targetSdkVersion} выбрано значение {@code “20”} или меньше, оно закрепляется за выбранной сетью
-Wi-Fi. Если же параметр {@code targetSdkVersion} имеет значение {@code “21”} или больше, следует использовать
-API-интерфейсы для работы с несколькими сетями (такие как
-{@link android.net.Network#openConnection(java.net.URL) openConnection()},
-{@link android.net.Network#bindSocket(java.net.Socket) bindSocket()} и новый метод
-{@code ConnectivityManager.bindProcessToNetwork()}), чтобы обеспечить отправку
-сетевого трафика приложения в выбранную сеть.</li>
-</ul>
-
-<h2 id="behavior-camera">Изменения в службе камеры</h2>
-<p>В M Preview изменена модель получения доступа к ресурсам в службе камеры.
- Если раньше запросы доступа обрабатывались в порядке поступления, то теперь процессы с высоким приоритетом имеют преимущество.
-  В работе службы камеры произошли следующие изменения:</p>
-<ul>
-<li>Доступ к ресурсам подсистемы камеры, включая открытие и настройку устройства камеры,
-предоставляется в зависимости от того, какой приоритет имеет процесс клиентского приложения. Процессы приложений с операциями, которые
-видны пользователю или выполняются на переднем плане, обычно имеют более высокий приоритет, что повышает возможность доступа к ресурсам камеры и их
-использования.</li>
-<li>Когда приложение с более высоким приоритетом пытается использовать камеру, активные клиенты камеры для приложений с более низким приоритетом могут быть исключены из очереди доступа.
-  В устаревшем API-интерфейсе {@link android.hardware.Camera}
-это приводит к вызову
-{@link android.hardware.Camera.ErrorCallback#onError(int,android.hardware.Camera) onError()}
-для исключенного клиента. В API-интерфейсе {@link android.hardware.camera2 Camera2} в таких случаях для исключенного клиента вызывается
-{@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected(android.hardware.camera2.CameraDevice) onDisconnected()}.
-</li>
-<li>На устройствах, где камера позволяет такое, отдельным процессам
-приложения предоставляется возможность одновременно и независимо друг от друга открывать и использовать ресурсы камеры. При этом служба камеры теперь отслеживает и исключает ситуации с использованием ресурсов несколькими процессами,
-когда одновременный доступ вызывает значительное снижение производительности или негативно влияет на возможности
-всех открытых камер. Это изменение
-может привести к отключению доступа для клиентов с более низким приоритетом, даже если к этой же камере не пытаются получить доступ другие приложения.
-
-</li>
-<li>
-Смена пользователя приводит к исключению активных клиентов камеры в приложениях, относящихся к предыдущей учетной записи,
-из очереди доступа.  Доступ к камере предоставлен только профилям, которыми владеет активный пользователь устройства.
-Фактически это означает, что если, например, пользователь переключился с гостевой учетной записи на другую, гостевой аккаунт не сможет покинуть запущенные процессы
-, использующие ресурсы подсистемы камеры.
-</li>
-</ul>
-
-<h2 id="behavior-art-runtime">Среда выполнения ART</h2>
-<p>Среда выполнения ART теперь должным образом реализует правила доступа для метода
-{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()}. Это
-изменение позволило устранить проблему, связанную с тем, что в предыдущих версиях система Dalvik неправильно проверяла правила доступа.
-Если ваше приложение использует метод
-{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} и вы
-хотите переопределить проверки доступа, вызовите метод
-{@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()}, присвоив параметру input
-значение {@code true}. Если ваше приложение использует
-<a href="{@docRoot}tools/support-library/features.html#v7-appcompat">библиотеку appcompat v7</a> или
-<a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">библиотеку recyclerview v7</a>,
-вам необходимо установить актуальные версии этих библиотек. В противном случае убедитесь в том,
-что любые настраиваемые классы, на которые имеются ссылки из XML, обновлены и их конструкторы классов доступны.</p>
-
-<p>В M Preview обновлено поведение динамического компоновщика. Теперь он распознает разницу между
-{@code soname} библиотеки и путем к ней
-(<a href="https://code.google.com/p/android/issues/detail?id=6670" class="external-link">ошибка 6670, о которой сообщалось в открытых источниках</a>),
-и позволяет выполнять поиск по {@code soname}.
- Приложения, которые ранее работали, но содержали неправильные записи {@code DT_NEEDED}
-(обычно абсолютные пути в файловой системе компьютера для сборки), теперь при загрузке могут выдавать ошибки.</p>
-
-<p>В M Preview правильно реализован флаг {@code dlopen(3) RTLD_LOCAL}. Обратите внимание, что
-{@code RTLD_LOCAL} используется по умолчанию, поэтому будут затронуты вызовы {@code dlopen(3)}, которые явно не используют
-{@code RTLD_LOCAL} (за исключением случаев, когда ваше приложение явным образом использует{@code RTLD_GLOBAL}). Поскольку используется
-{@code RTLD_LOCAL}, символы не будут доступны для библиотек, загруженных с использованием последующих вызовов
-{@code dlopen(3)} (в противоположность ссылкам из записей {@code DT_NEEDED}).</p>
-</p>
-
-<h2 id="behavior-apk-validation">Проверка пакетов APK</h2>
-<p>Теперь платформа более строго подходит к проверке пакетов APK. Пакет APK считается поврежденным, если файл объявлен
-в манифесте, но отсутствует в самом пакете APK. Пакет APK подлежит повторной подписи в случае удаления любого его
-содержимого.</p>
-
-<h2 id="behavior-afw">Изменения в Android for Work</h2>
-<p>В M Preview представлены следующие изменения работы Android for Work:</p>
-<ul>
-<li><strong>Рабочие контакты в контексте личных сведений.</strong> Теперь при просмотре пользователем прошлых звонков в журнале вызовов Google Dialer
-в нем отображаются и рабочие контакты.
-Чтобы скрыть эти сведения в журнале вызовов, установите для параметра {@code DevicePolicyManager.setCrossProfileCallerIdDisabled()} значение {@code true}.
- Рабочие контакты могут отображаться на устройствах через Bluetooth вместе с
-личными контактами только в том случае, если
-для параметра {@code DevicePolicyManager.setBluetoothContactSharingDisabled()} задано значение {@code false}. По
-умолчанию для этого параметра установлено значение {@code true}.
-</li>
-<li><strong>Удаление конфигурации Wi-Fi.</strong> Конфигурации Wi-Fi, добавленные владельцем профиля
-(например, посредством вызова метода
-{@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration)
-addNetwork()}), теперь удаляются при удалении соответствующего рабочего профиля.</li>
-<li><strong>Блокировка конфигурации Wi-Fi.</strong> Пользователю больше не удастся изменить или удалить любые конфигурации Wi-Fi, созданные активным 
-владельцем устройства. Пользователь по-прежнему может создавать
-и изменять свои собственные конфигурации Wi-Fi, если для этого пользователя не задана константа
-{@link android.os.UserManager#DISALLOW_CONFIG_WIFI} {@link android.os.UserManager}.</li>
-<li><strong>Загрузка приложения «Контроллер политики работы» путем добавления учетной записи Google.</strong> Теперь при добавлении на устройство учетной записи Google,
-для управления которой требуется приложение «Контроллер политики работы»,
-вне управляемого контекста пользователю предлагается установить соответствующее приложение.
-Это также применимо к учетным записям, добавляемым посредством мастера первоначальной настройки устройства в разделе
-<strong>Настройки &gt; Учетные записи</strong>.</li>
-<li><strong>Изменения, касающиеся работы API-интерфейса DevicePolicyManager.</strong>
-Вызов метода {@link android.app.admin.DevicePolicyManager#setCameraDisabled(android.content.ComponentName,boolean) setCameraDisabled()}
-затрагивает только использование камеры пользователем, который его вызвал; вызов этого метода из управляемого профиля
-не влияет на работу приложений камеры, выполняющихся для основного пользователя. Кроме того, метод
-{@link android.app.admin.DevicePolicyManager#setKeyguardDisabledFeatures(android.content.ComponentName,int) setKeyguardDisabledFeatures()}
-теперь доступен как для владельцев устройства, так и для владельцев профиля. Владелец профиля может задать
-следующие ограничения для блокировки клавиатуры:
-<ul>
-<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_TRUST_AGENTS} и
-{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_FINGERPRINT}, которые влияют на настройки
-блокировки клавиатуры для родительского пользователя профиля;</li>
-<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS}, которое
-влияет только на уведомления, создаваемые приложениями в управляемом профиле.</li>
-</ul>
-</li>
-</ul>
diff --git a/docs/html-intl/intl/ru/preview/download.jd b/docs/html-intl/intl/ru/preview/download.jd
deleted file mode 100644
index 9afc62b..0000000
--- a/docs/html-intl/intl/ru/preview/download.jd
+++ /dev/null
@@ -1,360 +0,0 @@
-page.title=Загрузки
-page.image=images/cards/card-download_16-9_2x.png
-
-@jd:body
-
-<div style="position:relative; min-height:600px">
-
-  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
-    <p class="sdk-terms-intro">Прежде чем приступить к загрузке и установке компонентов пакета SDK Android Preview,
-примите следующие положения и условия.</p>
-
-    <h2 class="norule">Положения и условия</h2>
-
-    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-Это лицензионное соглашение для пакета SDK Android Preview (далее «Лицензионное соглашение»).
-
-1. Введение
-
-1.1. Лицензия на пакет SDK Android Preview (далее по тексту настоящего Лицензионного соглашения – «Preview», который включает системные файлы Android, пакеты API-интерфейсов и файлы библиотеки Preview, если такие доступны) передается в соответствии с положениями настоящего Лицензионного соглашения. Настоящее Лицензионное соглашение является юридически обязывающим договором между компанией Google и любым лицом, использующим Preview.
-
-1.2. В настоящем Лицензионном соглашении термин «Android» означает набор программного обеспечения Android для устройств, предлагаемый к использованию в рамках проекта Android Open Source Project, который доступен на веб-сайте http://source.android.com/ (сведения, размещенные на этом сайте, могут периодически обновляться).
-
-1.3. Под термином «Google» понимается корпорация Google Inc., главный офис которой находится по адресу 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States (США).
-
-2. Принятие лицензионного соглашения
-
-2.1. Использование Preview возможно только после принятия условий настоящего Лицензионного соглашения. Запрещается использовать Preview, если вы не согласны с указанными в настоящем документе условиями и положениями.
-
-2.2. Нажатие кнопки принятия условий и/или использование Preview означает, что вы согласны с положениями настоящего Лицензионного соглашения.
-
-2.3. Вы не вправе использовать Preview и принимать условия данного Лицензионного соглашения, если по законам США или иных стран, включая страну вашего проживания или использования Preview, запрещается передавать Preview в ваш адрес.
-
-2.4. Если вы используете Preview в рамках своей компании или организации, вы соглашаетесь взять на себя обязательства по соблюдению настоящего Лицензионного соглашения от имени своего работодателя или другого юридического лица, и вы тем самым подтверждаете и гарантируете, что обладаете полными юридическими полномочиями связать вашего работодателя или иное подобное юридическое лицо обязательствами по настоящему Лицензионному соглашению. Если вы не обладаете необходимыми полномочиями, вы не вправе принимать указанные в настоящем документе условия и положения или использовать Preview от имени вашего работодателя или другого юридического лица.
-
-3. Лицензия на Preview от Google
-
-3.1. В соответствии с условиями настоящего Лицензионного соглашения Google предоставляет вам ограниченную, бесплатную и неэксклюзивную лицензию без права передачи и подлежащую отмене, на использование Preview, лично или в рамках своей компании или организации, исключительно в целях разработки приложений для платформы Android.
-
-3.2. Вы соглашаетесь с тем, что Google или третьим сторонам принадлежат все юридические и имущественные права, а также правовой интерес в отношении Preview, в том числе любые права на объекты интеллектуальной собственности, которые имеются в Preview. Термин «Права на интеллектуальную собственность» означает все возможные права в рамках патентного права, авторского права, закона о коммерческой тайне, закона о товарных знаках, а также иные возможные имущественные права. Google оставляет за собой все права, не предоставленные вам в явном виде.
-
-3.3. Вам запрещается использовать Preview в любых целях, которые однозначно не определены в настоящем Лицензионном соглашении. За исключением случаев, предусмотренных применимыми сторонними лицензиями, вам запрещается: (a) копировать (кроме случаев резервного копирования), изменять, адаптировать, повторно распространять, декомпилировать, осуществлять инженерный анализ, деассемблировать или создавать производные элементы Preview или иной его части; а также (b) загружать любую часть Preview в мобильные телефоны или иные устройства, помимо персонального компьютера, объединять любые части Preview с другим программным обеспечением, распространять любое программное обеспечение или устройства, содержащие части Preview.
-
-3.4. Вы соглашаетесь с тем, что не будете предпринимать никаких действий, которые прямо или косвенно могут привести к фрагментированию платформы Android, включая помимо прочего распространение набора средств разработки программного обеспечения, полученного из Preview, участие в создании таких средств и содействие их продвижению в любой форме.
-
-3.5. Использование, воспроизведение и распространение компонентов Preview, на которые распространяется лицензия на программное обеспечение с открытым исходным кодом, регулируются исключительно положениями и условиями такой лицензии на программное обеспечение с открытым исходным кодом, а не настоящим Лицензионным соглашением. Вы соглашаетесь обеспечивать хорошую репутацию получателя лицензии в отношении таких лицензии на программное обеспечение с открытым исходным кодом в рамках всех предоставленных ему прав, а также не допускать каких-либо действий, которые могут привести к аннулированию, приостановлению или нарушению таких прав
-
-3.6. Вы соглашаетесь с тем, что форма и содержание Preview , предоставляемого Google, могут быть изменены без предварительного уведомления, а также с тем, что будущие версии Preview могут оказаться несовместимыми с приложениями, разработанными в предыдущих версиях Preview. Вы соглашаетесь с тем, что Google вправе по собственному усмотрению и без предварительного уведомления прекратить (временно или навсегда) предоставление Preview (или любых функций в составе Preview) вам или пользователям.
-
-3.7. Ни одна из частей настоящего Лицензионного соглашения не предусматривает предоставления вам права использовать любые торговые наименования, товарные знаки, знаки обслуживания, логотипы, имена доменов или иные отличительные фирменные знаки, принадлежащие Google.
-
-3.8. Вы соглашаетесь с тем, что обязуетесь не удалять, не скрывать или не изменять любые уведомления об имущественных правах (включая уведомления об авторских правах и товарных знаках), которые могут сопровождать Preview или содержаться в нем.
-
-4. Использование Preview
-
-4.1. Компания Google выражает согласие с тем, что ни по какому положению настоящего Лицензионного соглашения не получает от вас (или ваших лицензиаров) каких-либо юридических и имущественных прав, а также правового интереса в отношении любых программных приложений, разработанных вами с помощью Preview, включая любые права на объекты интеллектуальной собственности, которые имеются в таких приложениях.
-
-4.2. Вы соглашаетесь использовать Preview и создавать приложения исключительно в целях, предусмотренных (a) настоящим Лицензионным соглашением и (b) любым применимым законом, нормативным актом или общепринятыми правилами или рекомендациями в соответствующей юрисдикции (включая любые законы, касающиеся экспорта данных или программного обеспечения из США или иных соответствующих стран, а также импорта в них).
-
-4.3. Вы соглашаетесь с тем, что при использовании Preview для разработки приложений вы обязуетесь обеспечивать конфиденциальность и защищать юридические права пользователей. В случае, если пользователи предоставляют вам свои имена, пароли или иные данные для входа либо свои персональные данные, вы обязуетесь уведомить пользователей о том, что такая информация будет присутствовать в вашем приложении, и вы также обязуетесь предоставить пользователям юридически соответствующие уведомление о конфиденциальности и средства правовой защиты. Если в вашем приложении хранится личная или конфиденциальная информация, предоставленная пользователями, вы обязуетесь обеспечить ее надлежащую защиту. Если пользователь предоставляет вам сведения о своей учетной записи Google, то ваше приложение может использовать такую информацию для доступа к учетной записи Google пользователя только при условии, что пользователь предоставил вам разрешение на это, и только в тех целях, которые обозначил пользователь.
-
-4.4. Вы соглашаетесь с тем, что обязуетесь не использовать Preview для любого рода деятельности, в том числе для разработки или распространения приложений, в целях нарушения работы и повреждения серверов, сетей или иной собственности или служб Google или любой третьей стороны.
-
-4.5. Вы соглашаетесь с тем, что несете единоличную ответственность (и признаете, что компания Google не несет ответственности ни перед вами, ни перед любой третьей стороной) за любые данные, содержимое или ресурсы, которые вы создаете, передаете или демонстрируете посредством Android и/или приложений для Android, а также за любые последствия ваших действий, связанных с этим (в том числе за любые убытки и любой ущерб, которые могут быть причинены Google).
-
-4.6. Вы соглашаетесь с тем, что несете единоличную ответственность (и признаете, что компания Google не несет ответственности ни перед вами, ни перед любой третьей стороной) за любое несоблюдение обязательств по настоящему Лицензионному соглашению, обязательств по любому применимому договору с третьей стороной или предусмотренных Условиями и положениями, за нарушение любых применимых законов или нормативных актов, а также за любые последствия ваших действий, связанных с таким нарушением (в том числе за любые убытки и любой ущерб, которые могут быть причинены Google).
-
-4.7 Preview находится на стадии разработки, поэтому ваши отзывы и результаты тестирования являются важной частью процесса разработки. Используя Preview, вы признаете, что реализация некоторых функций по-прежнему находится на этапе разработки и вам не следует рассчитывать на полную функциональность стабильной версии. Вы соглашаетесь не распространять или предоставлять любые приложения, использующие Preview, поскольку поддержка Preview будет прекращена после выпуска официальной версии пакета SDK Android.
-
-5. Ваши учетные данные разработчика
-
-5.1. Вы соглашаетесь с тем, что несете ответственность за обеспечение конфиденциальности любых учетных данных разработчика, которые компания Google может вам предоставить или которые вы можете самостоятельно выбрать, а также с тем, что вы несете единоличную ответственность за все приложения, разработанные с использованием ваших учетных данных разработчика.
-
-6. Конфиденциальность и личная информация
-
-6.1. В целях постоянного совершенствования и улучшения Preview компания Google вправе собирать определенные статистические данные об использовании программного обеспечения, включая уникальный идентификатор, связанный IP-адрес, номер версии программного обеспечения, а также сведения об используемых в Preview инструментах и/или службах и способах их применения. Перед тем как любые из таких данных будут отправлены в Google, в Preview отобразится соответствующее уведомление с просьбой дать свое согласие. В случае вашего отказа предоставить такие сведения соответствующие данные собираться не будут.
-
-6.2. Собранные данные изучаются в обобщенном виде с целью улучшения Preview и хранятся в соответствии с Политикой конфиденциальности Google, которая опубликована на веб-сайте по адресу http://www.google.com/policies/privacy/.
-
-7. Сторонние приложения
-
-7.1. Если вы используете Preview для запуска приложений, разработанных третьими сторонами или получающих доступ к данным, содержимому или ресурсам, предоставляемым третьей стороной, вы соглашаетесь с тем, что Google не несет ответственности за такие приложения, данные, содержимое или ресурсы. Вы осознаете, что единоличную ответственность за все данные, содержимое или ресурсы, доступ к которым вы можете получить посредством таких приложений третьих сторон, несет лицо, предоставившее их, а также то, что Google не несет ответственности за любые убытки или любой ущерб, которые могут возникнуть в результате использования вами любых таких сторонних приложений, данных, содержимого или ресурсов и в результате обращения к ним.
-
-7.2. Вы должны быть осведомлены о том, что данные, содержимое и ресурсы, предоставляемые вам посредством таких сторонних приложений, могут быть защищены правами на объекты интеллектуальной собственности, принадлежащие предоставляющим их лицам (или иным лицам либо компаниям от их имени). Вам запрещается изменять, сдавать в аренду, передавать, продавать, распространять такие данные, содержимое или ресурсы (полностью или частично), а также создавать на их основе производные элементы, если у вас нет на это разрешения от соответствующих владельцев.
-
-7.3. Вы осознаете, что использование вами таких сторонних приложений, данных или ресурсов может регулироваться отдельными условиями, заключенными между вами и соответствующей третьей стороной.
-
-8. Использование API-интерфейсов Google
-
-8.1. API-интерфейсы для получения данных Google.
-
-8.1.1. В случае использования вами любых API для получения данных из Google вы осознаете, что такие данные могут быть защищены правами на объекты интеллектуальной собственности, принадлежащие Google или предоставляющим их сторонам (или иным лицам либо компаниям от их имени). Использование вами подобных API может регулироваться дополнительными Условиями использования. Вам запрещается изменять, сдавать в аренду, передавать, продавать, распространять такие данные (полностью или частично), а также создавать на их основе производные элементы, если это не разрешено соответствующими Условиями использования.
-
-8.1.2. Если вы используете какие-либо API-интерфейсы для получения данных пользователя из Google, вы осознаете и соглашаетесь с тем, что вы обязуетесь получать такие данные исключительно с прямого согласия пользователя и только в тех целях, которые обозначил пользователь.
-
-9. Прекращение действия Лицензионного соглашения
-
-9.1 Настоящее Лицензионное соглашение остается в силе до тех пор, пока его действие не будет прекращено вами или Google, как указано ниже.
-
-9.2. Если вы желаете прекратить действие настоящего Лицензионного соглашения, вы вправе сделать это, прекратив использование Preview и любых соответствующих учетных данных разработчика.
-
-9.3. Google вправе в любое время прекратить действие настоящего Лицензионного соглашения, отправив предварительное уведомление или без него.
-
-9.4 Действие настоящего Лицензионного соглашения автоматически прекращается без предварительного уведомления или выполнения иных действий сразу после любого из следующих событий:
-(A) компания Google прекращает предоставление Preview или определенных частей Preview пользователям на территории страны, в которой вы проживаете или используете услуги компании;
-(B) компания Google выпускает окончательную версию SDK Android.
-
-9.5 В случае прекращения действия настоящего Лицензионного соглашения прекращается действие лицензии, предоставленной в рамках Лицензионного соглашения, и вам следует незамедлительно прекратить любое использование Preview, тогда как положения, изложенные в разделах 10, 11, 12 и 14 продолжают действовать бессрочно.
-
-10. ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ
-
-10.1. ВЫ ЧЕТКО ОСОЗНАЕТЕ И БЕЗОГОВОРОЧНО СОГЛАШАЕТЕСЬ С ТЕМ, ЧТО ВЫ ИСПОЛЬЗУЕТЕ PREVIEW ИСКЛЮЧИТЕЛЬНО НА СВОЙ СТРАХ И РИСК И ЧТО PREVIEW ПРЕДОСТАВЛЯЕТСЯ ВАМ НА УСЛОВИЯХ «КАК ЕСТЬ» И «КАК ДОСТУПНО» БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ СО СТОРОНЫ КОМПАНИИ GOOGLE.
-
-10.2 ИСПОЛЬЗОВАНИЕ ВАМИ PREVIEW И ЗАГРУЗКА ЛЮБЫХ МАТЕРИАЛОВ И ИХ ПОЛУЧЕНИЕ ИНЫМ СПОСОБОМ С ПОМОЩЬЮ PREVIEW ВЫПОЛНЯЕТСЯ ПО ВАШЕМУ СОБСТВЕННОМУ УСМОТРЕНИЮ НА СВОЙ СТРАХ И РИСК. ВСЯ ОТВЕТСТВЕННОСТЬ ЗА ЛЮБОЙ УЩЕРБ, ПРИЧИНЕННЫЙ ВАШЕЙ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЕ ИЛИ ДРУГОМУ ОБОРУДОВАНИЮ, А ТАКЖЕ ЗА ПОТЕРЮ ДАННЫХ, ВЫЗВАННУЮ ПОДОБНЫМ ИСПОЛЬЗОВАНИЕМ, ВОЗЛАГАЕТСЯ НА ВАС. НЕ ОГРАНИЧИВАЯ ВЫШЕСКАЗАННОЕ, ВЫ ПОНИМАЕТЕ, ЧТО PREVIEW НЕ ЯВЛЯЕТСЯ СТАБИЛЬНЫМ ВЫПУСКОМ И МОЖЕТ СОДЕРЖАТЬ ОШИБКИ, ДЕФЕКТЫ И УЯЗВИМОСТИ В СИСТЕМЕ БЕЗОПАСНОСТИ, КОТОРЫЕ МОГУТ ПРИВЕСТИ К СЕРЬЕЗНЫМ ПОВРЕЖДЕНИЯМ, ВКЛЮЧАЯ ПОЛНУЮ И БЕЗВОЗВРАТНУЮ ПОТЕРЮ РАБОТОСПОСОБНОСТИ ВАШЕГО КОМПЬЮТЕРА ИЛИ ИНОГО УСТРОЙСТВА.
-
-10.3. КОМПАНИЯ GOOGLE БЕЗОГОВОРОЧНО ОТКАЗЫВАЕТСЯ ОТ ЯВНЫХ И НЕЯВНЫХ ГАРАНТИЙ И УСЛОВИЙ ЛЮБОГО РОДА, ВКЛЮЧАЯ ПОМИМО ПРОЧЕГО НЕЯВНЫЕ ГАРАНТИИ И УСЛОВИЯ ТОВАРНОГО СОСТОЯНИЯ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ СОБСТВЕННОСТИ.
-
-11. ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ
-
-11.1. ВЫ ЧЕТКО ОСОЗНАЕТЕ И БЕЗОГОВОРОЧНО СОГЛАШАЕТЕСЬ С ТЕМ, ЧТО КОМПАНИЯ GOOGLE, ЕЕ ДОЧЕРНИЕ И АФФИЛИРОВАННЫЕ КОМПАНИИ И ЛИЦЕНЗИАРЫ НЕ НЕСУТ ПЕРЕД ВАМИ ОТВЕТСТВЕННОСТИ, НЕЗАВИСИМО ОТ ЕЕ ПРИЧИНЫ И ВИДА, ЗА КАКИЕ-ЛИБО ПРЯМЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ, ОПОСРЕДОВАННЫЕ И ШТРАФНЫЕ УБЫТКИ, ПОНЕСЕННЫЕ ВАМИ, ВКЛЮЧАЯ ПОТЕРЮ ДАННЫХ, ВНЕ ЗАВИСИМОСТИ ОТ ТОГО, БЫЛА ЛИ КОМПАНИЯ GOOGLE ИЛИ ЕЕ ПРЕДСТАВИТЕЛИ ИЗВЕЩЕНЫ О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.
-
-12 Освобождение от ответственности
-
-12.1. В максимально допустимой законом степени вы соглашаетесь защищать, освобождать от ответственности и возможных претензий компанию Google, ее аффилированные компании и их соответствующих руководителей, служащих, сотрудников и агентов от всех возможных правовых требований, действий, судебных исков или разбирательств, а также от всех возможных убытков, обязательств, ущерба, издержек и расходов (включая обоснованные вознаграждения для адвокатов), возникающих в связи (a) с использованием вами Preview, (b) любыми приложениями, разрабатываемыми вами с помощью Preview и нарушающими любые права на объекты интеллектуальной собственности любого лица, а также порочащие любое лицо либо нарушающие права таких лиц на публичность и конфиденциальность, а также (c) в связи с любым несоблюдением вами положений настоящего Лицензионного соглашения.
-
-13. Изменения в Лицензионном соглашении
-
-13.1. Компания Google вправе вносить изменения в настоящее Лицензионное соглашение по мере выхода новых версий Preview. При внесении изменений Google создает новую версию Лицензионного соглашения и размещает ее на веб-сайте, на котором размещен Preview.
-
-14. Общие правовые условия
-
-14.1. Настоящее Лицензионное соглашение составляет полный текст юридического соглашения между вами и компанией Google, регулирует использование вами Preview (за исключением услуг, которые Google предоставляет на основании отдельного письменного соглашения) и полностью заменяет собой все предыдущие соглашения между вами и компанией Google в отношении Preview.
-
-14.2. Вы соглашаетесь с тем, что отсутствие каких-либо действий или судебных исков со стороны Google, направленных на соблюдение каких-либо правовых норм или исполнение средств правовой защиты, установленных настоящим Лицензионным соглашением (или которыми Google обладает в соответствии с каким-либо действующим законом), не означает отказ компании Google от своих прав и не препятствует компании Google использовать эти права или средства защиты.
-
-14.3. Если какой-либо судебный орган, уполномоченный рассматривать этот вопрос, признает недействительность какого-либо положения данного Лицензионного соглашения, то соответствующее положение будет исключено из Лицензионного соглашения с сохранением действия всех остальных его положений. Остальные положения Лицензионного соглашения по-прежнему будут действовать, и их соблюдение может обеспечиваться в судебном порядке.
-
-14.4. Вы признаете и соглашаетесь с тем, что все участники группы компаний, среди которых Google является материнской компанией, являются сторонними бенефициарами Лицензионного соглашения и что эти компании имеют право пользоваться привилегиями (или правами), предоставляемыми по настоящему Лицензионному соглашению, и напрямую требовать их соблюдения в судебном порядке. Все остальные физические и юридические лица не являются сторонними бенефициарами Лицензионного соглашения.
-
-14.5. ОГРАНИЧЕНИЯ НА ЭКСПОРТ. ИСПОЛЬЗОВАНИЕ PREVIEW РЕГУЛИРУЕТСЯ ЗАКОНАМИ И НОРМАТИВНЫМИ АКТАМИ США, КАСАЮЩИМИСЯ ЭКСПОРТА. ВЫ ОБЯЗУЕТЕСЬ СОБЛЮДАТЬ ВСЕ НАЦИОНАЛЬНЫЕ И МЕЖДУНАРОДНЫЕ ЗАКОНЫ ОБ ЭКСПОРТЕ, ПРИМЕНИМЫЕ К PREVIEW. ДАННЫЕ ЗАКОНЫ НАЛАГАЮТ ОГРАНИЧЕНИЯ НА РЕГИОНЫ, КРУГ ЛИЦ И СПОСОБ КОНЕЧНОГО ИСПОЛЬЗОВАНИЯ.
-
-14.6. Вы не вправе переуступать либо передавать права, предоставляемые по настоящему Лицензионному соглашению, без предварительного письменного согласия Google; любые попытки переуступки без такого согласия считаются недействительными. Вы обязуетесь не делегировать свои полномочия или обязательства по настоящему Лицензионному соглашению без предварительного письменного согласия Google.
-
-14.7. Лицензионное соглашение, а также взаимоотношения между вами и компанией Google в рамках настоящего Лицензионного соглашения регулируются законодательством штата Калифорния за исключением его норм коллизионного права. Вы и компания Google признаете, что урегулирование любых правовых вопросов, связанных с данным Лицензионным соглашением, относится исключительно к юрисдикции судов округа Санта-Клара, штат Калифорния. Несмотря на это, вы соглашаетесь с тем, что компания Google по-прежнему имеет право обращаться за наложением судебного запрета (или за получением аналогичного вида неотложной судебной защиты) в суды любой юрисдикции.
-  </div><!-- sdk terms -->
-
-
-
-    <div id="sdk-terms-form">
-      <p>
-        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-        <label id="agreeLabel" for="agree">Я прочитал(а) и принимаю изложенные выше положения и условия</label>
-      </p>
-      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-    </div>
-
-
-  </div><!-- end TOS -->
-
-
-  <div id="landing">
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Содержание документа</h2>
-      <ol>
-        <li><a href="#sdk">Android 6.0 SDK</a></li>
-        <li><a href="#docs">Документация для разработчиков</a></li>
-        <li><a href="#images">Системные образы оборудования</a></li>
-      </ol>
-     <h2>Legacy downloads</h2>
-        <ol>
-           <li><a href="{@docRoot}preview/download_mp1.html">Developer Preview 1</a></li>
-		   <li><a href="{@docRoot}preview/download_mp2.html">Developer Preview 2</a></li>
-        </ol>
-  </div>
-</div>
-
-
-<p>
-  В состав SDK Android M Preview входят инструменты для разработки, системные файлы Android и файлы библиотеки, призванные
-помочь вам в тестировании ваших приложений и новых API-интерфейсов, которые будут реализованы в предстоящем выпуске платформы. В этом документе
-рассказывается, как загрузить необходимые компоненты Preview для тестирования ваших приложений.
-</p>
-
-
-<h2 id="sdk">Android 6.0 SDK</h2>
-
-<p>
-  Загрузить SDK Preview можно с помощью <a href="{@docRoot}tools/help/sdk-manager.html">менеджера SDK Android</a>. Дополнительные сведения
-о загрузке и настройке SDK Preview представлены в статье <a href="{@docRoot}preview/setup-sdk.html#downloadSdk">Настройка SDK Preview</a>.
-</p>
-
-
-<h2 id="docs">Документация для разработчиков</h2>
-
-<p>
-  В пакете документации для разработчиков, который доступен для загрузки, представлены подробные сведения об API-интерфейсах, а также о различиях между API-интерфейсами для Preview.
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Description</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="docs-dl">
-    <td>Android M Preview 3<br>Developer Docs</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >m-preview-3-developer-docs.zip</a><br>
-      MD5: d99b14b0c06d31c8dfecb25072654ca3<br>
-      SHA-1: 9cefeeda07676130da606a1796e1c00fffc667c1
-    </td>
-  </tr>
-</table>
-
-
-<h2 id="images">Системные образы оборудования</h2>
-
-<p>
-  С помощью этих системных образов можно установить предварительную версию платформы на физическое устройство для
-тестирования. Используя один из этих образов для настройки устройства, вы можете установить и протестировать ваше приложение, чтобы узнать, как оно будет работать в будущей версии
-платформы. В процессе установки системного образа
-<em>на устройстве удаляются все данные</em>, поэтому перед установкой образа обязательно сделайте резервное копирование данных.
-
-</p>
-
-<p class="warning">
-  <b>Предупреждение.</b> Перечисленные ниже системные образы Android являются предварительными и могут быть изменены. Использование вами
-этих образов регулируется Лицензионным соглашением на использование пакета SDK Android Preview. Системные образы предварительной версии Android
-не являются стабильными и могут содержать ошибки и дефекты,
-способные повредить ваши компьютеры, устройства и данные. Системные образы предварительной версии Android не проходят такое же тестирование,
-как заводская ОС. Поэтому в результате использования этих образов ваш телефон и установленные на нем приложения
-и службы могут перестать работать.
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Device</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="hammerhead">
-    <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >hammerhead-MPA44I-preview-2ebbc049.tgz</a><br>
-      MD5: 91a924fb0c9f8e716e3b4c9954fd0dbb<br>
-      SHA-1: 2ebbc049b68c4da8baeee3e42bb94d7a965ba4a3
-    </td>
-  </tr>
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-MPA44I-preview-62b9c486.tgz</a><br>
-      MD5: ac6e58da86125073d9c395257fd42664<br>
-      SHA-1: 62b9c486fd7a5020e228d53ca5acd5c1857e48ff
-    </td>
-  </tr>
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-MPA44I-preview-5c30a6e2.tgz</a><br>
-      MD5: 7f83768757913d3fea945a661020d185<br>
-      SHA-1: 5c30a6e2acd11a81f4105b12d23ff654f534f699
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-MPA44I-preview-2860040a.tgz</a><br>
-      MD5: 438da8d37da9e341a69cfb16a4001ac5<br>
-      SHA-1: 2860040a326582f1ff5f702bf9a1ef002717fc98
-      </td>
-  </tr>
-
-</table>
-
-<h3 id="install-image">Установка образа на устройство</h3>
-
-<p>
-  Чтобы воспользоваться образом устройства для тестирования, установите его на совместимое устройство. Следуйте
-инструкциям по установке системного образа.
-</p>
-
-<ol>
-  <li>Загрузите и распакуйте один из указанных выше пакетов с системным образом.</li>
-  <li>Создайте резервные копии данных, которые хотите сохранить.</li>
-  <li>Следуйте инструкциям, приведенным на сайте
-<a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>,
-чтобы прошить ваше устройство с использованием выбранного образа.</li>
-</ol>
-
-<p class="note">
-  <strong>Примечание.</strong> После прошивки устройства для разработки с использованием системного образа с предварительной версией платформы
-она будет автоматически обновлена до следующего выпуска Preview по беспроводной сети.
-</p>
-
-<h3 id="revertDevice">Сброс параметров устройства до заводских настроек</h3>
-
-<p>
-  Чтобы удалить Preview и восстановить заводские настройки устройства, перейдите на сайт
-<a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a>
-и загрузите образ, который требуется использовать для прошивки. Следуйте инструкциям, приведенным на странице,
-чтобы прошить ваше устройство с использованием выбранного образа.
-</p>
-
-  </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
-  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
-  function onDownload(link) {
-
-    $("#downloadForRealz").html("Download " + $(link).text());
-    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
-    $("#tos").fadeIn('fast');
-    $("#landing").fadeOut('fast');
-
-    return true;
-  }
-
-
-  function onAgreeChecked() {
-    /* verify that the TOS is agreed */
-    if ($("input#agree").is(":checked")) {
-      /* reveal the download button */
-      $("a#downloadForRealz").removeClass('disabled');
-    } else {
-      $("a#downloadForRealz").addClass('disabled');
-    }
-  }
-
-  function onDownloadForRealz(link) {
-    if ($("input#agree").is(':checked')) {
-    /*
-      $("#tos").fadeOut('fast');
-      $("#landing").fadeIn('fast');
-    */
-
-      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
-
-    /*
-      location.hash = "";
-    */
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  $(window).hashchange( function(){
-    if (location.hash == "") {
-      location.reload();
-    }
-  });
-
-</script>
diff --git a/docs/html-intl/intl/ru/preview/features/app-linking.jd b/docs/html-intl/intl/ru/preview/features/app-linking.jd
deleted file mode 100644
index f991717..0000000
--- a/docs/html-intl/intl/ru/preview/features/app-linking.jd
+++ /dev/null
@@ -1,123 +0,0 @@
-page.title=Связи приложений
-page.image=images/cards/card-app-linking_2x.png
-page.keywords=связывание приложений, прямые ссылки, намерения
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Содержание документа</h2>
-      <ol>
-        <li><a href="#web-assoc">Объявление связи с веб-сайтом</a></li>
-        <li><a href="#verfy-links">Запрос проверки связи приложений</a></li>
-        <li><a href="#user-manage">Настройки связи приложений</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  Система намерений Android представляет собой гибкий механизм, позволяющий приложениям обрабатывать контент и запросы.
-  Многие приложения могут объявлять в своих фильтрах намерений соответствующие шаблоны URI. При нажатии пользователем на веб-ссылку
-, у которой нет обработчика запуска по умолчанию, платформа может выдать ему диалоговое окно со списком доступных
- приложений, объявивших соответствующие фильтры намерений.
-</p>
-
-<p>
-  В Android M Developer Preview представлена поддержка связей приложений. Она выгодно отличается от существующих методов обработки ссылок,
- предоставляя разработчикам возможность связывать приложение с принадлежащим им веб-доменом. Благодаря этой связи
-платформа автоматически, не спрашивая у пользователя, определит приложение, которое следует использовать по умолчанию для обработки определенной
-веб-ссылки.
-</p>
-
-
-<h2 id="web-assoc">Объявление связи с веб-сайтом</h2>
-
-<p>
-  Чтобы установить связь, владельцу сайта следует объявить связь с приложением. Для этого владелец 
-размещает в домене файл JSON с именем {@code statements.json}. Местопложение файла должно быть хорошо известно.
-
-</p>
-
-<pre>http://&lt;domain&gt;:&lt;optional port&gt;/.well-known/statements.json</pre>
-
-<p class="note">
-  <strong>Примечание.</strong>
-  В период использования M Developer Preview проверка файла JSON выполняется по протоколу HTTP. В официальном
-выпуске платформы она будет осуществляться по зашифрованному протоколу HTTPS.
-</p>
-
-<p>
-  В этом файле JSON содержатся сведения о приложении Android, которое следует использовать в качестве обработчика по умолчанию для URL
-в этом домене. Для определения приложения используются следующие поля:
-</p>
-
-<ul>
-  <li>{@code package_name}: имя пакета, объявленное в манифесте приложения;</li>
-
-  <li>{@code sha256_cert_fingerprints}: контрольная сумма SHA256 сертификата, который использовался для подписи вашего приложения.
-    Чтобы сгенерировать контрольную сумму, можно выполнить следующую команду в программе Java keytool:
-    <pre>keytool -list -v -keystore my-release-key.keystore</pre>
-  </li>
-</ul>
-
-<p>
-  Ниже представлен пример содержимого и формата файла
-{@code statements.json}.
-</p>
-
-<pre>
-[{
-  "relation": ["delegate_permission/common.handle_all_urls"],
-  "target": {
-    "namespace": "android_app",
-    "package_name": "<strong>&lt;package name&gt;</strong>",
-    "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
-  }
-}]
-</pre>
-
-
-<h2 id="verfy-links">Запрос проверки связи приложений</h2>
-
-<p>
-  Приложение может отправить платформе запрос об автоматической проверке любых связей приложений, определенных в именах узлов в элементах данных
-его фильтров намерений, с использованием файлов {@code statements.json}, размещенных в
-соответствующих веб-доменах. Чтобы запросить проверку связи приложений, добавьте к каждому необходимому фильтру намерений в манифесте атрибут {@code android:autoVerify},
-как показано в следующем фрагменте кода
-манифеста:
-</p>
-
-<pre>
-&lt;activity ...&gt;
-    &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
-        &lt;action android:name="android.intent.action.VIEW" /&gt;
-        &lt;category android:name="android.intent.category.DEFAULT" /&gt;
-        &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
-        &lt;data android:scheme="http" android:host="www.android.com" /&gt;
-        &lt;data android:scheme="https" android:host="www.android.com" /&gt;
-    &lt;/intent-filter&gt;
-&lt;/activity&gt;
-</pre>
-
-<p>
-  Если в манифесте приложения присутствует атрибут {@code android:autoVerify}, платформа пытается
-проверить связи приложений при установке приложения. Если платформе не
-удается сделать это, приложение не выбирается в качестве предпочтительного для обработки веб-ссылок. В следующий раз, когда пользователь
-нажмет на одну из ссылок, платформа снова отобразит для него
-соответствующее диалоговое окно.
-</p>
-
-<p class="note">
-  <strong>Примечание.</strong> При тестировании существует вероятность ложных срабатываний, когда проверка завершается
-сбоем, но при этом пользователь установил в системном приложении «Настройки» ваше приложение как используемое по умолчанию при вызове поддерживаемых ссылок
-. В таком случае диалоговое окно не отображается, а ссылка ведет напрямую в ваше приложение,
-однако это происходит из-за настроек пользователя и не означает, что проверка пройдена успешно.
-</p>
-
-
-<h2 id="user-manage">Настройки связи приложений</h2>
-
-<p>
-  Пользователи могут изменить настройки связи приложений и выбрать предпочтительный для них способ обработки URL. Для просмотра связей приложений и управления ими
-можно воспользоваться системным приложением «Настройки» (в разделе <strong>Настройки &gt; Приложения &gt; Информация о приложении &gt;
-Открывать по умолчанию</strong>.
-</p>
diff --git a/docs/html-intl/intl/ru/preview/features/runtime-permissions.jd b/docs/html-intl/intl/ru/preview/features/runtime-permissions.jd
deleted file mode 100644
index 7d12b2d..0000000
--- a/docs/html-intl/intl/ru/preview/features/runtime-permissions.jd
+++ /dev/null
@@ -1,794 +0,0 @@
-page.title=Разрешения
-page.tags=previewresources, androidm
-page.keywords=разрешения, среда выполнения, предварительная версия
-page.image={@docRoot}preview/features/images/permissions_check.png
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Краткое описание</h2>
-    <ul>
-      <li>Если ваше приложение предназначено для пакета SDK M Preview, пользователю будет предложено предоставить для него разрешения
- не в процессе установки, а при работе с приложением.</li>
-      <li>Пользователь также может в любой момент отозвать разрешения, воспользовавшись экраном приложения «Настройки»
-.</li>
-      <li>Ваше приложение должно проверять наличие соответствующих разрешений при каждом запуске.
-</li>
-    </ul>
-
-    <h2>Содержание документа</h2>
-    <ol>
-      <li><a href="#overview">Обзор</a></li>
-      <li><a href="#coding">Добавление в код разрешений на выполнение</a></li>
-      <li><a href="#testing">Тестирование разрешений на выполнение</a></li>
-      <li><a href="#best-practices">Советы и рекомендации</a></li>
-    </ol>
-
-<!--
-  <h2>Related Samples</h2>
-  <ol>
-    <li></li>
-  </ol>
--->
-
-<!--
-  <h2>See also</h2>
-  <ol>
-    <li></li>
-  </ol>
--->
-  </div> <!-- qv -->
-</div> <!-- qv-wrapper -->
-
-
-<p>
-  В версии M Developer Preview представлена новая модель разрешений для приложений, которая
-оптимизирует для пользователей процесс установки и обновления приложений. Если приложение,
-работающее в M Preview, поддерживает новую модель разрешений, пользователю не нужно предоставлять какие-либо
-разрешения при установке приложения или его обновлении. Вместо этого приложение
-запрашивает разрешения, когда в них возникает необходимость, — в таких случаях система отображает для пользователя диалоговое окно с просьбой предоставить
-соответствующее разрешение.
-</p>
-
-<p>
-  Если приложение поддерживает новую модель разрешений, его, тем не менее, можно установить и
-запустить на устройстве под управлением одной из более ранних версий Android, и оно будет использовать старую модель
-разрешений.
-</p>
-
-<h2 id="overview">
-  Обзор
-</h2>
-
-<p>
-  В версии M Developer Preview представлена новая
-модель разрешений. Ниже приводится краткий обзор ее ключевых компонентов:
-</p>
-
-<ul>
-  <li>
-    <strong>Объявление разрешений.</strong> Все разрешения, которые требуются
-приложению, объявляются в его манифесте, как и в более ранних версиях платформы Android.
-  </li>
-
-  <li>
-    <strong>Группы разрешений.</strong> Разрешения
-<em>группируются</em> по типу их функциональных возможностей. Например, в группе разрешений
-<code>CONTACTS</code> находятся разрешения на чтение и запись
-контактов пользователя и информации из его профиля.
-  </li>
-
-  <li>
-    <p><strong>Ограниченные разрешения, предоставляемые во время установки.</strong> Когда
-пользователь устанавливает или обновляет приложение, система предоставляет такому приложению все запрашиваемые им
-разрешения, соответствующие константе {@link
-android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}.
-    Например, разрешения для будильника и подключения к Интернету соответствуют константе {@link
-android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL},
-поэтому они предоставляются автоматически во время установки.
-    </p>
-
-    <p>Система также может предоставить приложению подпись и системные разрешения, как описано в разделе
-<a href="#system-apps">Предоставление приложениям системных разрешений и
-подписи</a>. Пользователю <em>не предлагается</em> предоставить какие-либо разрешения
-во время установки.</p>
-  </li>
-
-  <li>
-    <strong>Предоставление пользователем разрешений во время выполнения.</strong> Когда приложение запрашивает разрешение,
-система отображает для пользователя соответствующее диалоговое окно, а затем вызывает функцию обратного вызова приложения
-с целью уведомить его о том, предоставлены ли необходимые разрешения. Если
-пользователь предоставляет разрешение, приложение получает весь набор разрешений в рамках данной функциональной области
-разрешения, который был объявлен в манифесте приложения.
-  </li>
-
-</ul>
-
-<p>
-  Новая модель разрешений влияет на поведение приложений при работе с функциями, для
-которых требуются разрешения. При использовании этой модели в разработке
- обратите внимание на следующие рекомендации:
-</p>
-
-<ul>
-
-  <li>
-    <strong>Всегда проверяйте наличие разрешений.</strong> Когда приложению необходимо выполнить
-какое-либо действие, для которого требуется разрешение, оно должно сначала проверить,
-имеется ли у него такое разрешение. Если разрешение отсутствует, приложение
-должно запросить его.
-  </li>
-
-  <li>
-    <strong>Если вам не дают разрешения, выходите из положения красиво.</strong> Если у приложения
-нет нужного разрешения, оно должно обработать эту ошибку разумно.
-    Например, если разрешение требуется лишь для необязательной функции, приложение может
-просто отключить ее. Если же приложение не может работать без данного разрешения,
- оно может отключить все свои функциональные возможности и проинформировать пользователя,
-что для работы ему требуется разрешение.
-  </li>
-
-  <div class="figure" style="width:220px" id="fig-perms-screen">
-    <img src="{@docRoot}preview/features/images/app-permissions-screen_2x.png" srcset="{@docRoot}preview/features/images/app-permissions-screen.png 1x, {@docRoot}preview/features/images/app-permissions-screen_2x.png 2x" alt="" width="220">
-    <p class="img-caption">
-      <strong>Рисунок 1.</strong> Экран разрешений в настройках приложения.
-    </p>
-  </div>
-
-  <li>
-    <strong>Разрешения можно отзывать.</strong> Пользователи могут в любое время отозвать разрешения
-приложения. Когда пользователь отзывает разрешения,
-приложение <em>не</em> уведомляется об этом. Снова повторим, что приложение должно всегда проверять наличие
-разрешений, прежде чем выполнять любые действия, для которых они необходимы.
-  </li>
-</ul>
-
-<p class="note">
-  <strong>Примечание.</strong> Если приложение предназначено для M Developer Preview, оно
-<em>должно в обязательном порядке</em> использовать новую модель разрешений.
-</p>
-
-<p>
-  На момент выпуска M Developer Preview не все приложения Google в полной мере реализуют
- новую модель разрешений. Google обновляет эти приложения
-по мере разработки M Developer Preview, чтобы они должным образом поддерживали настройки
-разрешений.
-</p>
-
-<p class="note">
-  <strong>Примечание.</strong> Если у вашего приложения имеется собственная поверхность API-интерфейса, прежде чем проксировать
-разрешения, убедитесь сначала в том, что у вызывающей операции имеются надлежащие
-разрешения на доступ к данным.
-</p>
-
-<h3 id="system-apps">
-  Предоставление приложениям системных разрешений и подписи
-</h3>
-
-<p>
-  Как правило, когда пользователь устанавливает приложение, система предоставляет такому приложению только те
-разрешения, которые соответствуют константе {@link android.content.pm.PermissionInfo#PROTECTION_NORMAL
-PROTECTION_NORMAL}. Однако в определенных ситуациях система предоставляет
-приложению больше разрешений:
-</p>
-
-<ul>
-  <li>если приложение является частью системного образа, ему автоматически предоставляются все
-разрешения, обозначенные в его манифесте;
-  </li>
-
-  <li>если в манифесте приложения запрашиваются разрешения, соответствующие константе {@link
-android.content.pm.PermissionInfo#PROTECTION_SIGNATURE PROTECTION_SIGNATURE},
-а для подписи приложения использовался то же сертификат, что и для приложения,
-объявившего эти разрешения, система предоставляет запрашивающему приложению необходимые разрешения при
-установке.
-  </li>
-</ul>
-
-<p>
-  В обоих случаях пользователь по-прежнему может в любое время отозвать разрешения, обратившись к
-экрану <strong>Настройки</strong> и выбрав <strong>Приложения
-&gt;</strong> <i>название_приложения</i> <strong>&gt; Разрешения</strong>. Поэтому приложение все равноу
-должно проверять наличие разрешений во время выполнения и при необходимости запрашивать их.
-
-</p>
-
-<h3 id="compatibility">
-  Совместимость с предыдущими и последующими версиями
-</h3>
-
-<p>
-  Если приложение не предназначено для M Developer Preview, оно
-продолжает использовать старую модель разрешений даже на устройствах под управлением M Preview. В таком случае при установке приложения
- система предлагает пользователю предоставить все разрешения,
-указанные в манифесте приложения.
-</p>
-
-<p class="note">
-  <strong>Примечание.</strong> На устройствах под управлением M Developer Preview пользователь может отключить
-разрешения для любого приложения (включая устаревшие приложения) на экране «Настройки».
- Если пользователь решит отключить разрешения для устаревших приложений, система
-автоматически отключит соответствующие функциональные возможности. Когда приложение пытается
-выполнить операцию, для которой требуется такое разрешение, это
-не обязательно приведет к возникновению исключения. Вместо этого оно может выдать пустой набор данных,
-сигнал об ошибке или иным образом обозначить непредвиденное поведение. Например, если запросить
-календарь, не имея соответствующего разрешения, метод возвратит пустой набор данных.
-</p>
-
-<p>
-  При установке приложения с использованием новой модели разрешений на устройство
-под управлением другой версии ОС, отличной от M Preview,
-система рассматривает такое приложение как любое другое и предлагает
-пользователю предоставить все объявленные разрешения уже во время установки.
-</p>
-
-<p class="note">
-  <strong>Примечание.</strong> В случае с предварительной версией в качестве минимальной версии пакета SDK
-следует задать версию SDK M Preview, чтобы получить возможность компилировать код с помощью пакета SDK предварительной версии. Это означает,
-что вы не сможете протестировать такие приложения на старых платформах
-во время использования предварительной версии для разработчиков.
-</p>
-
-<h3 id="perms-vs-intents">Разрешения и намерения</h3>
-
-<p>
-  Во многих случаях при разработке приложения у вас есть выбор между двумя способами выполнения задачи:
- вы можете настроить приложение таким образом, чтобы оно самостоятельно запрашивало соответствующие разрешения на выполнение
-операции, или же можно указать ему использовать намерение, чтобы задачу выполнило
-другое приложение.
-</p>
-
-<p>
-  Например, предположим, что вашему приложению требуется возможность делать снимки с помощью камеры устройства.
- Ваше приложение может запросить разрешение
-<code>android.permission.CAMERA</code>, которое позволит ему напрямую получить доступ
-к камере. Затем ваше приложение использует API-интерфейсы камеры
-для управления камерой и получения снимков. Благодаря такому подходу ваше приложение получает
-полный контроль над процессом фотографирования. Кроме того, это позволяет вам вставить пользовательский интерфейс камеры
-в свое приложение.
-</p>
-
-<p>
-  Если же вам не требуется такой контроль, просто воспользуйтесь намерением {@link
-android.provider.MediaStore#ACTION_IMAGE_CAPTURE ACTION_IMAGE_CAPTURE}
-для запроса изображения. Когда вы запускаете намерение, пользователю предлагается выбрать
-приложение камеры (если оно отличается от приложения камеры по умолчанию), после чего
-это приложение делает снимок. Приложение камеры возвращает полученное изображение в метод {@link
-android.app.Activity#onActivityResult onActivityResult()} вашего приложения.
-</p>
-
-<p>
-  Аналогичным образом, если вам необходимо позвонить, получить доступ к контактам пользователя и так далее,
-можно создать соответствующее намерение или запросить
-разрешение и напрямую получить доступ к нужным объектам. У каждого подхода есть
-как преимущества, так и недостатки.
-</p>
-
-<p>
-  При использовании разрешений:
-</p>
-
-<ul>
-  <li>Ваше приложение получает полный контроль над взаимодействием пользователя с интерфейсом во время выполнения
-операции. Однако такой широкий контроль усложняет вашу задачу,
-требуя разработать подходящий пользовательский интерфейс.
-  </li>
-
-  <li>Пользователю предлагается предоставить разрешения только один раз, при первом
-выполнении операции. После этого ваше приложение может выполнять операцию без вмешательства
-со стороны пользователя. Однако если пользователь не
-предоставит разрешение (или отзовет его позже), ваше приложение не сможет выполнить
-операцию.
-  </li>
-</ul>
-
-<p>
-  При использовании намерений:
-</p>
-
-<ul>
-  <li>Вам не нужно разрабатывать пользовательский интерфейс для выполнения операции, его предоставляет приложение, которое обрабатывает
-намерение. Однако это также означает, что у вас отсутствует контроль над
-взаимодействием пользователя с интерфейсом. Возможно, пользователю придется взаимодействовать с
-приложением, которое вы даже не видели.
-  </li>
-
-  <li>Если у пользователя нет приложения по умолчанию для выполнения операции, система
-предлагает ему выбрать приложение. Если пользователь не назначит обработчик
-по умолчанию, то при каждом выполнении операции для него может
-отображаться дополнительное диалоговое окно.
-  </li>
-</ul>
-
-<h2 id="coding">Добавление в код разрешений на выполнение</h2>
-
-<p>
-  Если ваше приложение предназначено для новой версии M Developer Preview, вы должны в обязательном порядке использовать
-новую модель разрешений. Это означает, что кроме объявления требуемых разрешений
-в манифесте, вам следует проверять наличие этих разрешений
-во время выполнения, а также запрашивать их, если у вас
-еще нет необходимых разрешений.
-</p>
-
-<h3 id="enabling">
-  Активация новой модели разрешений
-</h3>
-
-<p>
-  Чтобы активировать новую модель разрешений M Developer Preview, задайте для атрибута
-<code>targetSdkVersion</code> приложения значение <code>"MNC"</code>, а для атрибута
-<code>compileSdkVersion</code> – значение <code>"android-MNC"</code>. Это позволит
-включить все функции новой модели разрешений.
-</p>
-
-<p>
-  В случае с предварительной версией необходимо задать для параметра <code>minSdkVersion</code> значение
-<code>"MNC"</code>, чтобы получить возможность компилировать код с помощью пакета SDK предварительной версии.
-</p>
-
-<h3 id="m-only-perm">
-  Назначение разрешений только для M Preview
-</h3>
-
-<p>
-  В манифесте приложения можно использовать новый элемент <code>&lt;uses-permission-sdk-m&gt;</code>,
-чтобы указать, что разрешение требуется только для M Developer Preview. Если объявить
-разрешение таким способом, то при установке приложения на устройство с более старой версией платформы
-система не будет отправлять запрос пользователю или предоставлять разрешение приложению.
-С помощью элемента <code>&lt;uses-permission-sdk-m&gt;</code>
-вы можете добавлять новые разрешения
-в обновленные версии вашего приложения без принудительного запроса у пользователей разрешений при
-установке обновления.
-</p>
-
-<p>
-  Если приложение запущено на устройстве под управлением M Developer Preview,
-поведение элемента <code>&lt;uses-permission-sdk-m&gt;</code> аналогично поведению
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
-  Система не запрашивает у пользователей предоставление каких-либо разрешений, когда они устанавливают
-приложение. Вместо этого приложение само запрашивает разрешения, когда они требуются.
-</p>
-
-<h3 id="prompting">
-  Запрос разрешений
-</h3>
-
-<p>
-  Если ваше приложение использует новую модель разрешений M Developer Preview, то при первом запуске приложения
-на устройстве под управлением
-M Preview пользователю не предлагается предоставить все разрешения. Вместо этого приложение само запрашивает разрешения, когда они
-требуются. Когда приложение запрашивает разрешение, система отображает для пользователя соответствующее диалоговое
-окно.
-</p>
-
-<p>
-  Если ваше приложение запущено на устройстве с пакетом SDK уровня 22 или более низкого, то приложение использует старую
-модель разрешений. То есть при каждой устновке приложения пользователю будет предложено предоставить приложению все разрешения,
-запрашиваемые в манифесте приложения, кроме
-отмеченных элементом <code>&lt;uses-permission-sdk-m&gt;</code>.
-</p>
-
-<h4 id="check-platform">Проверка платформы, на которой выполняется приложение</h4>
-
-<p>
-  Новая модель разрешений поддерживается только на устройствах под управлением M Developer
-Preview. Прежде чем вызывать любые из этих методов, приложению следует проверить,
-на какой платформе оно выполняется,
-обратившись к значению параметра {@link android.os.Build.VERSION#CODENAME
-Build.VERSION.CODENAME}. Если устройство работает под управлением M Developer Preview,
-то значение параметра{@link android.os.Build.VERSION#CODENAME CODENAME} будет <code>"MNC"</code>.
-</p>
-
-<h4 id="check-for-permission">Проверка наличия у приложения необходимого разрешения</h4>
-
-<p>Когда пользователи пытаются выполнить какое-либо действие, для которого требуется разрешение, приложение
-проверяет, имеется ли у него в настоящее время разрешение на выполнение этой операции. Для этого
-приложение вызывает метод
-<code>Context.checkSelfPermission(<i>permission_name</i>)</code>. Приложению
-следует выполнять такую проверку даже в том случае, если ему известно, что пользователь уже предоставил
-необходимое разрешение,
-поскольку пользователь может в любое время отозвать разрешения приложения. Например, если пользователь
-хочет получить снимок с помощью приложения, то приложение вызывает метод
-<code>Context.checkSelfPermission(Manifest.permission.CAMERA)</code>.</p>
-
-<p class="table-caption" id="permission-groups">
-  <strong>Таблица 1.</strong> Разрешения и группы разрешений.</p>
-<table>
-  <tr>
-    <th scope="col">Группа разрешений</th>
-    <th scope="col">Разрешения</th>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CALENDAR</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_CALENDAR</code>
-        </li>
-      </ul>
-      <ul>
-        <li>
-          <code>android.permission.WRITE_CALENDAR</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CAMERA</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.CAMERA</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CONTACTS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_CONTACTS</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_CONTACTS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_PROFILE</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_PROFILE</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.LOCATION</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.ACCESS_FINE_LOCATION</code>
-        </li>
-        <li>
-          <code>android.permission.ACCESS_COARSE_LOCATION</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.MICROPHONE</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.RECORD_AUDIO</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.PHONE</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_PHONE_STATE</code>
-        </li>
-        <li>
-          <code>android.permission.CALL_PHONE</code>
-        </li>
-        <li>
-          <code>android.permission.READ_CALL_LOG</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_CALL_LOG</code>
-        </li>
-        <li>
-          <code>com.android.voicemail.permission.ADD_VOICEMAIL</code>
-        </li>
-        <li>
-          <code>android.permission.USE_SIP</code>
-        </li>
-        <li>
-          <code>android.permission.PROCESS_OUTGOING_CALLS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.SENSORS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.BODY_SENSORS</code>
-        </li>
-      </ul>
-      <ul>
-        <li>
-          <code>android.permission.USE_FINGERPRINT</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.SMS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.SEND_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_WAP_PUSH</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_MMS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_CELL_BROADCASTS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-</table>
-
-<h4 id="request-permissions">Запрос разрешений при необходимости</h4>
-
-<p>Если у приложения нет требуемого разрешения, оно вызывает метод
-<code>Activity.requestPermissions(String[], int)</code>, чтобы запросить его.
- Приложение передает в него
-требуемые разрешения, а также целочисленный код запроса.
-  Этот метод выполняется асинхронно: он возвращает результат сразу же, а после того как пользователь
-предоставляет ответ в диалоговом окне, система вызывает метод обратного вызова
-приложения с результатами и передает в него тот же код запроса, который приложение передало в метод
-<code>requestPermissions()</code>.</p>
-
-  <p>Ниже представлен пример кода для проверки наличия у приложения разрешения на чтение контактов
-пользователя и запроса соответствующего разрешения при необходимости.</p>
-
-<pre>
-if (checkSelfPermission(Manifest.permission.READ_CONTACTS)
-        != PackageManager.PERMISSION_GRANTED) {
-    requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
-            MY_PERMISSIONS_REQUEST_READ_CONTACTS);
-
-    // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
-    // app-defined int constant
-
-    return;
-}
-</pre>
-
-<h4 id="handle-response">Обработка ответа на запрос разрешений</h4>
-
-<p>
-  Когда приложение запрашивает разрешения, система отображает для пользователя соответствующее диалоговое
-окно. После получения ответа от пользователя система вызывает метод
-<code>Activity.onRequestPermissionsResult(int, String[], int[])</code>
-вашего приложения и передает в него ответ пользователя. Вашему приложению необходимо переопределить этот метод. В обратном
-вызове передается тот же код запроса, который вы передали в метод
-<code>requestPermissions()</code>. Например, если приложение запрашивает доступ на
-<code>READ_CONTACTS</code>, то метод обратного вызова
-может быть следующим:
-</p>
-
-<pre>
-&#64;Override
-public void onRequestPermissionsResult(int requestCode,
-        String permissions[], int[] grantResults) {
-    switch (requestCode) {
-        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
-            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-
-                // permission was granted, yay! do the
-                // calendar task you need to do.
-
-            } else {
-
-                // permission denied, boo! Disable the
-                // functionality that depends on this permission.
-            }
-            return;
-        }
-
-        // other 'switch' lines to check for other
-        // permissions this app might request
-    }
-}
-</pre>
-
-  <p>Если пользователь предоставляет разрешение, система, в свою очередь, представляет все разрешения,
-запрашиваемые в манифесте приложения для обозначенной функциональной области. Если пользователь
-отказывает в предоставлении разрешения, вам необходимо принять меры. Например, вы можете отключить любые пункты меню
-, для использования которых требуется это разрешение.
-  </li>
-</p>
-
-<p>
-  Когда система предлагает пользователю предоставить разрешение, он может указать системе,
-чтобы она больше не запрашивала это разрешение. В этом случае,
-когда приложение использует метод <code>requestPermissions()</code> для запроса такого разрешения,
-система сразу же отклоняет запрос. При этом система вызывает ваш метод
-<code>onRequestPermissionsResult()</code> так же, как если бы пользователь повторно
-отклонил ваш запрос. Поэтому ваше приложение
-не считает, что имело место прямое взаимодействие с пользователем.
-</p>
-
-<h2 id="testing">Тестирование разрешений на выполнение</h2>
-
-
-<p>
-  Если ваше приложение предназначено для новой версии M Developer Preview, то вы должны протестировать
-его и убедиться в том, что оно должным образом обрабатывает разрешения. Не надо исходить из того, что к началу работы ваше приложение уже имеет
-любые определенные разрешения. При первом запуске приложения оно,
-скорее всего, не будет обладать разрешениями, а в дальнейшем пользователь может в любой момент отозвать или восстановить
-разрешения.
-</p>
-
-<p>
-  Вам следует протестировать ваше приложение и убедиться в том, что оно ведет себя должным образом в
-любых ситуациях, касающихся разрешений. Мы включили в состав пакета SDK M Preview SDK новые команды
-<a href="{@docRoot}tools/help/adb.html">Android
-Debug Bridge (ADB)</a>, чтобы вы могли протестировать ваше приложение с любыми настройками разрешений,
-которые вы хотите попробовать в действии.
-</p>
-
-<h3>
-  Новые команды и параметры ADB
-</h3>
-
-<p>
-  В состав пакета инструментов SDK M Preview входит ряд новых команд, позволяющих протестировать обработку разрешений
-вашим приложением.
-</p>
-
-<h4>
-  Установка с разрешениями
-</h4>
-
-<p>
-  Можно воспользоваться новым параметром <code>-g</code> команды <a href="{@docRoot}tools/help/adb.html#move"><code>adb
-  install</code></a>, который служит для установки
-приложения и предоставления всех разрешений, указанных в его манифесте:
-</p>
-
-<pre class="no-pretty-print">
-$ adb install -g &lt;path_to_apk&gt;
-</pre>
-
-<h4>
-  Предоставление разрешений и их отзыв
-</h4>
-
-<p>
-  Для предоставления разрешений установленному приложению и их отзыва можно использовать новые команды <a href="{@docRoot}tools/help/adb.html#pm">диспетчера пакетов</a>
-ADB.
-Такая функциональная возможность может быть полезна для автоматизированного тестирования.
-</p>
-
-<p>
-  Для представления разрешения используйте команду <code>grant</code> диспетчера пакетов:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant &lt;package_name&gt; &lt;permission_name&gt;
-</pre>
-
-<p>
-  Например, чтобы представить пакету com.example.myapp разрешение на запись
-аудио, воспользуйтесь следующей командой:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant com.example.myapp android.permission.RECORD_AUDIO
-</pre>
-
-<p>
-  Чтобы отозвать разрешение, используйте команду <code>revoke</code> диспетчера пакетов:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm revoke &lt;package_name&gt; &lt;permission_name&gt;
-</pre>
-
-<h2 id="best-practices">Советы и рекомендации</h2>
-
-<p>
-  Новая модель разрешений делает работу пользователей удобнее,
-упрощает для них процесс установки приложений и позволяет лучше понимать,
-что делает то или иное приложение. Чтобы использовать все преимущества
-этой модели, примите во внимание следующие рекомендации:
-</p>
-
-
-<h3 id="bp-what-you-need">Запрашивайте только те разрешения, которые необходимы</h3>
-
-<p>
-  Каждый раз, когда вы запрашиваете разрешение, вы заставляете пользователя делать выбор.
-  Если пользователь отклоняет запрос, соответствующая функциональная возможность приложения отключается.
-  Вам следует сократить количество таких запросов.
-</p>
-
-<p>
-  Например, во многих случаях можно предоставить приложению доступ к нужной функции посредством
-<a href="{@docRoot}guide/components/intents-filters.html">намерения</a> вместо
-запроса разрешений. Если вашему приложению необходимо получить снимки с камеры
-телефона, можно использовать намерение {@link
-android.provider.MediaStore#ACTION_IMAGE_CAPTURE
-MediaStore.ACTION_IMAGE_CAPTURE}. Когда ваше приложение выполняет намерение, система
-предлагает пользователю выбрать уже установленное приложение камеры для
-получения снимков.
-</p>
-
-<h3 id="bp-dont-overwhelm">
-  Не перегружайте пользователя запросами
-</h3>
-
-<p>
-  Если на пользователя обрушивается сразу много запросов разрешений, он может
-решить, что все это слишком сложно, и просто закрыть приложение. Поэтому разрешения следует
-запрашивать только тогда, когда это необходимо.
-</p>
-
-<p>
-  Иногда приложению жизненно необходимы одно или несколько разрешений.
-В таких случаях имеет смысл запросить все разрешения
-сразу при запуске приложения. Например, если вы разрабатываете приложение для фотографирования, то ему
-однозначно потребуется доступ к камере устройства. Когда пользователь в первый раз запускает приложение,
-он не удивится, если приложение запросит у него разрешение на
-использование камеры. Однако если в этом же приложении имеется функция обмена фотографиями с
-контактами пользователя, возможно, <em>не следует</em> запрашивать соответствующее разрешение при
-первом запуске приложения. Лучше дождаться, когда пользователю потребуется функция обмена контентом,
-и уже тогда запросить разрешение.
-</p>
-
-<p>
-  Если в вашем приложении имеются обучающие материалы, может оказаться целесообразным запросить необходимые разрешения
-после того, как пользователь изучит материалы.
-</p>
-
-<h3 id="bp-explain">
-  Всегда поясняйте, для чего требуются те или иные разрешения
-</h3>
-
-<p>
-  В диалоговом окне запроса разрешений, которое система отображает при вызове вами метода
-<code>requestPermissions()</code>, обозначается требуемое для приложения разрешение,
-однако не указывается, для чего оно необходимо. В некоторых случаях это может озадачить пользователя.
-  Поэтому, прежде чем вызывать метод
-<code>requestPermissions()</code>, стоит пояснить пользователю, для чего вашему приложению требуются разрешения.
-</p>
-
-<p>
-  Например, приложению для фотографирования может потребоваться доступ к службам геолокации, чтобы фотографии можно было снабдить
-геотегами. Не все пользователи знают, что
-фотография может содержать данные о месте съемки, и им может показаться странным, что приложение для фотографирования запрашивает данные
-о местоположении. В этом случае полезно
-рассказать пользователю о такой возможности, <em>прежде</em> чем вызывать метод
-<code>requestPermissions()</code>.
-</p>
-
-<p>
-  Это можно сделать, в частности, внедрив такие запросы в обучающие материалы приложения. В обучающих
-материалах могут содержаться описания каждой из функций приложения с пояснением,
-какие разрешения необходимы для их использования. Например, в обучающий материал по работе с приложением для фотографирования
-можно включить описание функции обмена контентом с контактами, после чего
-пояснить, что для этого пользователю следует предоставить приложению доступ к его контактам.
- После этого приложение может вызвать метод <code>requestPermissions()</code> для запроса
-доступа. Конечно, не все пользователи обращаются к обучающим материалам,
-поэтому вам по-прежнему следует проверять наличие разрешений и при необходимости запрашивать
-их во время обычной работы приложения.
-</p>
diff --git a/docs/html-intl/intl/ru/preview/index.jd b/docs/html-intl/intl/ru/preview/index.jd
deleted file mode 100644
index 18174a9..0000000
--- a/docs/html-intl/intl/ru/preview/index.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Android M Developer Preview
-page.tags="preview",
-meta.tags="preview, M preview", androidm
-fullpage=true
-section.landing=true
-header.hide=1
-footer.hide=1
-@jd:body
-
-<section class="dac-expand dac-hero dac-light" >
-  <div class="wrap">
-    <div class="cols dac-hero-content">
-      <div class="col-9of16 col-push-7of16 dac-hero-figure">
-        <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png" srcset="{@docRoot}images/home/devices-hero_620px.png 1x,
-             {@docRoot}images/home/devices-hero_620px_2x.png 2x">
-      </div>
-      <div class="col-7of16 col-pull-9of16">
-        <h1 class="dac-hero-title">Android M Developer Preview</h1>
-        <p class="dac-hero-description">
-          Подготовьтесь к выходу следующей версии платформы Android. Протестируйте ваши приложения на устройствах Nexus 5, 6, 9 и
-Player. Узнайте о новых возможностях:&mdash; <strong>разрешениях на выполнение</strong>,
-новых функциях энергосбережения — <strong>режим «Doze»</strong> и <strong>ждущий режим для приложений</strong>, о новом
-<strong>помощнике</strong> и о многом другом.
-        </p>
-
-        <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          Итак, приступим!
-</a><br>
-        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          Developer Preview 3 (final SDK)</a>
-      </div>
-    </div>
-    <div class="dac-section dac-small">
-      <div class="resource-widget resource-flow-layout col-16"
-           data-query="collection:preview/landing/resources"
-           data-cardSizes="6x2"
-           data-maxResults="6"></div>
-    </div>
-  </div>
-</section>
-
-<section class="dac-section dac-gray"><div class="wrap">
-  <h1 class="dac-section-title">Ресурсы</h1>
-  <div class="dac-section-subtitle">
-    Важная информация, которая поможет вам подготовить ваши приложения для работы в Android M.
-  </div>
-
-  <div class="resource-widget resource-flow-layout col-16"
-       data-query="collection:preview/landing/more"
-       data-cardSizes="6x6"
-       data-maxResults="16"></div>
-
-    <ul class="dac-section-links">
-      <li class="dac-section-link">
-        <a href="https://code.google.com/p/android-developer-preview/">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          Сообщить о проблеме
-</a>
-      </li>
-      <li class="dac-section-link"><a href="http://g.co/dev/AndroidMDevPreview">
-        <span class="dac-sprite dac-auto-chevron"></span>
-        Присоединиться к сообществу в G+
-</a>
-      </li>
-    </ul>
-  </div>
-</section>
-
diff --git a/docs/html-intl/intl/ru/preview/license.jd b/docs/html-intl/intl/ru/preview/license.jd
deleted file mode 100644
index fe9901b..0000000
--- a/docs/html-intl/intl/ru/preview/license.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=Лицензионное соглашение
-
-@jd:body
-
-<p>
-Чтобы приступить к работе с пакетом SDK Android Preview, примите указанные ниже положения и условия. 
-Как описано ниже, обратите внимание, что это предварительная версия пакета SDK Android, которая может быть изменена и которую вы используете на свой страх и риск.  Пакет SDK Android Preview не является стабильным и может содержать ошибки и дефекты, которые могут повредить ваши компьютеры, устройства и данные.
-</p>
-
-<p>
-Это лицензионное соглашение для пакета SDK Android Preview (далее «Лицензионное соглашение»).
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1. Введение
-
-1.1. Лицензия на пакет SDK Android Preview (далее по тексту настоящего Лицензионного соглашения – «Preview», который включает системные файлы Android, пакеты API-интерфейсов и файлы библиотеки Preview, если такие доступны) передается в соответствии с положениями настоящего Лицензионного соглашения. Настоящее Лицензионное соглашение является юридически обязывающим договором между компанией Google и любым лицом, использующим Preview.
-
-1.2. В настоящем Лицензионном соглашении термин «Android» означает набор программного обеспечения Android для устройств, предлагаемый к использованию в рамках проекта Android Open Source Project, который доступен на веб-сайте http://source.android.com/ (сведения, размещенные на этом сайте, могут периодически обновляться).
-
-1.3. Под термином «Google» понимается корпорация Google Inc., главный офис которой находится по адресу 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States (США).
-
-2. Принятие лицензионного соглашения
-
-2.1. Использование Preview возможно только после принятия условий настоящего Лицензионного соглашения. Запрещается использовать Preview, если вы не согласны с указанными в настоящем документе условиями и положениями.
-
-2.2. Нажатие кнопки принятия условий и/или использование Preview означает, что вы согласны с положениями настоящего Лицензионного соглашения.
-
-2.3. Вы не вправе использовать Preview и принимать условия данного Лицензионного соглашения, если по законам США или иных стран, включая страну вашего проживания или использования Preview, запрещается передавать Preview в ваш адрес.
-
-2.4. Если вы используете Preview в рамках своей компании или организации, вы соглашаетесь взять на себя обязательства по соблюдению настоящего Лицензионного соглашения от имени своего работодателя или другого юридического лица, и вы тем самым подтверждаете и гарантируете, что обладаете полными юридическими полномочиями связать вашего работодателя или иное подобное юридическое лицо обязательствами по настоящему Лицензионному соглашению. Если вы не обладаете требуемыми полномочиями, вы не вправе принимать указанные в настоящем документе условия и положения или использовать Preview от имени вашего работодателя или другого юридического лица.
-
-3. Лицензия на Preview от Google
-
-3.1. В соответствии с условиями настоящего Лицензионного соглашения Google предоставляет вам ограниченную, бесплатную и неэксклюзивную лицензию без права передачи и подлежащую отмене, на использование Preview, лично или в рамках своей компании или организации, исключительно в целях разработки приложений для платформы Android.
-
-3.2. Вы соглашаетесь с тем, что Google или третьим сторонам принадлежат все юридические и имущественные права, а также правовой интерес в отношении Preview, в том числе любые права на объекты интеллектуальной собственности, которые имеются в Preview. Термин «Права на интеллектуальную собственность» означает все возможные права в рамках патентного права, авторского права, закона о коммерческой тайне, закона о товарных знаках, а также иные возможные имущественные права. Google оставляет за собой все права, не предоставленные вам в явном виде.
-
-3.3. Вам запрещается использовать Preview в любых целях, которые однозначно не определены в настоящем Лицензионном соглашении. За исключением случаев, предусмотренных применимыми сторонними лицензиями, вам запрещается: (a) копировать (за исключением резервного копирования), изменять, адаптировать, повторно распространять, декомпилировать, осуществлять инженерный анализ, деассемблировать или создавать производные элементы Preview или иной его части; а также (b) загружать любую часть Preview в мобильные телефоны или иные устройства, помимо персонального компьютера, объединять любые части Preview с другим программным обеспечением, распространять любое программное обеспечение или устройства, содержащие части Preview.
-
-3.4. Вы соглашаетесь с тем, что не будете предпринимать никаких действий, которые прямо или косвенно могут привести к фрагментированию платформы Android, включая помимо прочего распространение набора средств разработки программного обеспечения, полученных из Preview, участие в создании таких средств и содействие их продвижению в любой форме.
-
-3.5. Использование, воспроизведение и распространение компонентов Preview, на которые распространяется лицензия на программное обеспечение с открытым исходным кодом, регулируются исключительно положениями и условиями такой лицензии на программное обеспечение с открытым исходным кодом, а не настоящим Лицензионным соглашением. Вы соглашаетесь обеспечивать хорошую репутацию получателя лицензии в отношении таких лицензии на программное обеспечение с открытым исходным кодом в рамках всех предоставленных ему прав, а также не допускать каких-либо действий, которые могут привести к аннулированию, приостановлению или нарушению таких прав
-
-3.6. Вы соглашаетесь с тем, что форма и содержание Preview , предоставляемого Google, могут быть изменены без предварительного уведомления, а также с тем, что будущие версии Preview могут оказаться несовместимыми с приложениями, разработанными в предыдущих версиях Preview. Вы соглашаетесь с тем, что Google вправе на свое собственное усмотрение и без предварительного уведомления прекратить (временно или навсегда) предоставление Preview (или любых функций в составе Preview) вам или пользователям.
-
-3.7. Ни одна из частей настоящего Лицензионного соглашения не предусматривает предоставления вам права использовать любые торговые наименования, товарные знаки, знаки обслуживания, логотипы, имена доменов или иные отличительные фирменные знаки, принадлежащие Google.
-
-3.8. Вы соглашаетесь с тем, что обязуетесь не удалять, не скрывать или не изменять любые уведомления об имущественных правах (включая уведомления об авторских правах и товарных знаках), которые могут сопровождать Preview или содержаться в нем.
-
-4. Использование Preview
-
-4.1. Компания Google выражает согласие с тем, что ни по какому положению настоящего Лицензионного соглашения не получает от вас (или ваших лицензиаров) каких-либо юридических и имущественных прав, а также правового интереса в отношении любых программных приложений, разработанных вами с помощью Preview, включая любые права на объекты интеллектуальной собственности, которые имеются в таких приложениях.
-
-4.2. Вы соглашаетесь использовать Preview и создавать приложения исключительно в целях, предусмотренных (a) настоящим Лицензионным соглашением и (b) любым применимым законом, нормативным актом или общепринятыми правилами или рекомендациями в соответствующей юрисдикции (включая любые законы, касающиеся экспорта данных или программного обеспечения из США или иных соответствующих стран, а также импорта в них).4.3. Вы соглашаетесь с тем, что при использовании Preview для разработки приложений вы обязуетесь обеспечивать конфиденциальность данных и защищать юридические права пользователей. 
-
-4.3. Вы соглашаетесь с тем, что при использовании SDK для разработки приложений для неопределенного круга пользователей вы обязуетесь обеспечивать конфиденциальность данных и защищать юридические права таких пользователей. В случае если пользователи предоставляют вам свои имена, пароли или иные данные для входа либо свои персональные сведения, вы обязуетесь уведомить пользователей о том, что такая информация будет присутствовать в вашем приложении, и вы также обязуетесь предоставить таким пользователям юридически соответствующее уведомление о конфиденциальности и средства правовой защиты. Если в вашем приложении хранится персональная или конфиденциальная информация, предоставленная пользователями, вы обязуетесь обеспечить ее надлежащую защиту. Если пользователь предоставляет вам сведения о своей учетной записи Google, то ваше приложение может использовать такую информацию для доступа к учетной записи Google пользователя только тогда, когда пользователь предоставил вам разрешение на это, и только в тех целях, которые обозначил пользователь.
-
-4.4. Вы соглашаетесь с тем, что обязуетесь не использовать Preview для любого рода деятельности, в том числе для разработки или распространения приложений, в целях нарушения работы и повреждения серверов, сетей или иной собственности или служб Google или любой третьей стороны.
-
-4.5. Вы соглашаетесь с тем, что несете единоличную ответственность (и признаете, что компания Google не несет ответственности ни перед вами, ни перед любой третьей стороной) за любые данные, содержимое или ресурсы, которые вы создаете, передаете или демонстрируете посредством Android и/или приложений для Android, а также за любые последствия ваших действий, связанных с этим (в том числе за любые убытки и любой ущерб, которые могут быть причинены Google).
-
-4.6. Вы соглашаетесь с тем, что несете единоличную ответственность (и признаете, что компания Google не несет ответственности ни перед вами, ни перед любой третьей стороной) за любое несоблюдение обязательств по настоящему Лицензионному соглашению, обязательств по любому применимому договору с третьей стороной или предусмотренных Условиями и положениями, за нарушение любых применимых законов или нормативных актов, а также за любые последствия ваших действий, связанных с таким нарушением (в том числе за любые убытки и любой ущерб, которые могут быть причинены Google).
-
-4.7 Preview находится на стадии разработки, поэтому ваши отзывы и результаты тестирования являются важной частью процесса разработки. Используя Preview, вы признаете, что реализация некоторых функций по-прежнему находится на этапе разработки и вам не следует рассчитывать на полную функциональность стабильной версии. Вы соглашаетесь не распространять или предоставлять любые приложения, использующие Preview, поскольку поддержка Preview будет прекращена после выпуска официальной версии пакета SDK Android.
-
-5. Ваши учетные данные разработчика
-
-5.1. Вы соглашаетесь с тем, что несете ответственность за обеспечение конфиденциальности любых учетных данных разработчика, которые компания Google может вам предоставить или которые вы можете самостоятельно выбрать, а также с тем, что вы несете единоличную ответственность за все приложения, разработанные с использованием ваших учетных данных разработчика.
-
-6. Конфиденциальность и личная информация
-
-6.1. В целях постоянного совершенствования и улучшения Preview компания Google вправе собирать определенные статистические данные об использовании программного обеспечения, включая уникальный идентификатор, связанный IP-адрес, номер версии программного обеспечения, а также сведения об используемых в Preview инструментах и/или службах и способах их применения. Перед тем как любые из таких данных будут отправлены в Google, в Preview отобразится соответствующее уведомление с просьбой дать свое согласие. В случае вашего отказа предоставить такие сведения соответствующие данные собираться не будут.
-
-6.2. Собранные данные изучаются в обобщенном виде с целью улучшения Preview и хранятся в соответствии с Политикой конфиденциальности Google, которая опубликована на веб-сайте по адресу http://www.google.com/policies/privacy/.
-
-7. Сторонние приложения
-
-7.1. Если вы используете Preview для запуска приложений, разработанных третьими сторонами или получающих доступ к данным, содержимому или ресурсам, предоставляемым третьей стороной, вы соглашаетесь с тем, что Google не несет ответственности за такие приложения, данные, содержимое или ресурсы. Вы осознаете, что единоличную ответственность за все данные, содержимое или ресурсы, доступ к которым вы можете получить посредством таких приложений третьих сторон, несет лицо, предоставившее их, а также то, что Google не несет ответственности за любые убытки или любой ущерб, которые могут возникнуть в результате использования вами любых таких сторонних приложений, данных, содержимого или ресурсов и в результате обращения к ним.
-
-7.2. Вы должны быть осведомлены о том, что данные, содержимое и ресурсы, предоставляемые вам посредством таких сторонних приложений, могут быть защищены правами на объекты интеллектуальной собственности, принадлежащие предоставляющим их лицам (или иным лицам либо компаниям от их имени). Вам запрещается изменять, сдавать в аренду, передавать, продавать, распространять такие данные, содержимое или ресурсы (полностью или частично), а также создавать на их основе производные элементы, если у вас нет на это разрешения от соответствующих владельцев.
-
-7.3. Вы осознаете, что использование вами таких сторонних приложений, данных или ресурсов может регулироваться отдельными условиями, заключенными между вами и соответствующей третьей стороной.
-
-8. Использование API-интерфейсов Google
-
-8.1. API-интерфейсы для получения данных Google.
-
-8.1.1. В случае использования вами любых API для получения данных из Google вы осознаете, что такие данные могут быть защищены правами на объекты интеллектуальной собственности, принадлежащие Google или предоставляющим их сторонам (или иным лицам либо компаниям от их имени). Использование вами подобных API может регулироваться дополнительными Условиями использования. Вам запрещается изменять, сдавать в аренду, передавать, продавать, распространять такие данные (полностью или частично), а также создавать на их основе производные элементы, если это не разрешено соответствующими Условиями использования.
-
-8.1.2. Если вы используете какие-либо API-интерфейсы для получения данных пользователя из Google, вы осознаете и соглашаетесь с тем, что вы обязуетесь получать такие данные исключительно с прямого согласия пользователя и только в тех целях, которые обозначил пользователь.
-
-9. Прекращение действия Лицензионного соглашения
-
-9.1 Настоящее Лицензионное соглашение остается в силе до тех пор, пока его действие не будет прекращено вами или Google, как указано ниже.
-
-9.2. Если вы желаете прекратить действие настоящего Лицензионного соглашения, вы вправе сделать это, прекратив использование Preview и любых соответствующих учетных данных разработчика.
-
-9.3. Google вправе в любое время прекратить действие настоящего Лицензионного соглашения, отправив предварительное уведомление или без него.
-
-9.4 Действие настоящего Лицензионного соглашения автоматически прекращается без предварительного уведомления или выполнения иных действий сразу после следующего:
-(A) компания Google прекращает предоставление Preview или определенных частей Preview пользователям в той стране, в которой вы проживаете или используете услуги компании; 
-(B) компания Google выпускает окончательную версию SDK Android.
-
-9.5 В случае прекращения действия настоящего Лицензионного соглашения прекращается действие лицензии, предоставленной в рамках Лицензионного соглашения, и вам следует незамедлительно прекратить любое использование Preview, тогда как положения, изложенные в разделах 10, 11, 12 и 14 продолжают действовать бессрочно.
-
-10. ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ
-
-10.1. ВЫ ЧЕТКО ОСОЗНАЕТЕ И БЕЗОГОВОРОЧНО СОГЛАШАЕТЕСЬ С ТЕМ, ЧТО ВЫ ИСПОЛЬЗУЕТЕ PREVIEW ИСКЛЮЧИТЕЛЬНО НА СВОЙ СТРАХ И РИСК И ЧТО PREVIEW ПРЕДОСТАВЛЯЕТСЯ ВАМ НА УСЛОВИЯХ «КАК ЕСТЬ» И «КАК ДОСТУПНО» БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ СО СТОРОНЫ КОМПАНИИ GOOGLE.
-
-10.2 ИСПОЛЬЗОВАНИЕ ВАМИ PREVIEW И ЗАГРУЗКА ЛЮБЫХ МАТЕРИАЛОВ И ИХ ПОЛУЧЕНИЕ ИНЫМ СПОСОБОМ С ПОМОЩЬЮ PREVIEW ВЫПОЛНЯЕТСЯ ПО ВАШЕМУ СОБСТВЕННОМУ УСМОТРЕНИЮ НА СВОЙ СТРАХ И РИСК. ВСЯ ОТВЕТСТВЕННОСТЬ ЗА ЛЮБОЙ УЩЕРБ, ПРИЧИНЕННЫЙ ВАШЕЙ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЕ ИЛИ ДРУГОМУ ОБОРУДОВАНИЮ, А ТАКЖЕ ЗА ПОТЕРЮ ДАННЫХ, ВЫЗВАННУЮ ПОДОБНЫМ ИСПОЛЬЗОВАНИЕМ, ВОЗЛАГАЕТСЯ НА ВАС. НЕ ОГРАНИЧИВАЯ ВЫШЕСКАЗАННОЕ, ВЫ ПОНИМАЕТЕ, ЧТО PREVIEW НЕ ЯВЛЯЕТСЯ СТАБИЛЬНЫМ ВЫПУСКОМ И МОЖЕТ СОДЕРЖАТЬ ОШИБКИ, ДЕФЕКТЫ И УЯЗВИМОСТИ В СИСТЕМЕ БЕЗОПАСНОСТИ, КОТОРЫЕ МОГУТ ПРИВЕСТИ К СЕРЬЕЗНЫМ ПОВРЕЖДЕНИЯМ, ВКЛЮЧАЯ ПОЛНУЮ И БЕЗВОЗВРАТНУЮ ПОТЕРЮ РАБОТОСПОСОБНОСТИ ВАШЕГО КОМПЬЮТЕРА ИЛИ ИНОГО УСТРОЙСТВА.
-
-10.3. КОМПАНИЯ GOOGLE БЕЗОГОВОРОЧНО ОТКАЗЫВАЕТСЯ ОТ ЯВНЫХ И НЕЯВНЫХ ГАРАНТИЙ И УСЛОВИЙ ЛЮБОГО РОДА, ВКЛЮЧАЯ ПОМИМО ПРОЧЕГО НЕЯВНЫЕ ГАРАНТИИ И УСЛОВИЯ ТОВАРНОГО СОСТОЯНИЯ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ СОБСТВЕННОСТИ.
-
-11. ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ
-
-11.1. ВЫ ЧЕТКО ОСОЗНАЕТЕ И БЕЗОГОВОРОЧНО СОГЛАШАЕТЕСЬ С ТЕМ, ЧТО КОМПАНИЯ GOOGLE, ЕЕ ДОЧЕРНИЕ И АФФИЛИРОВАННЫЕ КОМПАНИИ И ЛИЦЕНЗИАРЫ НЕ НЕСУТ ПЕРЕД ВАМИ ОТВЕТСТВЕННОСТИ, НЕЗАВИСИМО ОТ ЕЕ ПРИЧИНЫ И ВИДА, ЗА КАКИЕ-ЛИБО ПРЯМЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ, ОПОСРЕДОВАННЫЕ И ШТРАФНЫЕ УБЫТКИ, ПОНЕСЕННЫЕ ВАМИ, ВКЛЮЧАЯ ПОМИМО ПРОЧЕГО ПОТЕРЮ ДАННЫХ, ВНЕ ЗАВИСИМОСТИ ОТ ТОГО, БЫЛА ЛИ КОМПАНИЯ GOOGLE ИЛИ ЕЕ ПРЕДСТАВИТЕЛИ ИЗВЕЩЕНЫ О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.
-
-12 Освобождение от ответственности
-
-12.1. В максимально допустимой законом степени вы соглашаетесь защищать, освобождать от ответственности и возможных претензий компанию Google, ее аффилированные компании и их соответствующих руководителей, служащих, сотрудников и агентов от всех возможных правовых требований, действий, судебных исков или разбирательств, а также от всех возможных убытков, обязательств, ущерба, издержек и расходов (включая обоснованные вознаграждения для адвокатов), возникающих (a) в связи с использованием вами Preview, (b) в связи с любыми приложениями, разрабатываемыми вами с помощью Preview и нарушающими любые права на объекты интеллектуальной собственности любого лица, а также порочащие любое лицо либо нарушающие права таких лиц на публичность и конфиденциальность, а также (c) в связи с любым несоблюдением вами положений настоящего Лицензионного соглашения.
-
-13. Изменения в Лицензионном соглашении
-
-13.1. Компания Google вправе вносить изменения в настоящее Лицензионное соглашение по мере выхода новых версий Preview. При внесении изменений Google создает новую версию Лицензионного соглашения и размещает ее на веб-сайте, на котором размещена Preview.
-
-14. Общие правовые условия
-
-14.1. Настоящее Лицензионное соглашение составляет полный текст юридического соглашения между вами и компанией Google, регулирует использование вами Preview (за исключением услуг, которые Google предоставляет на основании отдельного письменного соглашения) и полностью заменяет собой все предыдущие соглашения между вами и компанией Google в отношении Preview.
-
-14.2. Вы соглашаетесь с тем, что отсутствие каких-либо действий или судебных исков со стороны Google, направленных на соблюдение каких-либо правовых норм или исполнение средств правовой защиты, установленных настоящим Лицензионным соглашением (или которыми Google обладает в соответствии с каким-либо действующим законом), не означает отказ компании Google от своих прав и не препятствует компании Google использовать эти права или средства защиты.
-
-14.3. Если какой-либо судебный орган, уполномоченный рассматривать этот вопрос, признает недействительность какого-либо положения данного Лицензионного соглашения, то соответствующее положение будет исключено из Лицензионного соглашения с сохранением действия всех остальных его положений. Остальные положения Лицензионного соглашения по-прежнему будут действовать, и их соблюдение может обеспечиваться в судебном порядке.
-
-14.4. Вы признаете и соглашаетесь с тем, что все участники группы компаний, среди которых Google является материнской компанией, являются сторонними бенефициарами Лицензионного соглашения и что эти компании имеют право пользоваться привилегиями (или правами), предоставляемыми по настоящему Лицензионному соглашению, и напрямую требовать их соблюдения в судебном порядке. Все остальные физические и юридические лица не являются сторонними бенефициарами Лицензионного соглашения.
-
-14.5. ОГРАНИЧЕНИЯ НА ЭКСПОРТ. ИСПОЛЬЗОВАНИЕ PREVIEW РЕГУЛИРУЕТСЯ ЗАКОНАМИ И НОРМАТИВНЫМИ АКТАМИ США, КАСАЮЩИМИСЯ ЭКСПОРТА. ВЫ ОБЯЗУЕТЕСЬ СОБЛЮДАТЬ ВСЕ НАЦИОНАЛЬНЫЕ И МЕЖДУНАРОДНЫЕ ЗАКОНЫ ОБ ЭКСПОРТЕ, ПРИМЕНИМЫЕ К PREVIEW. ДАННЫЕ ЗАКОНЫ НАЛАГАЮТ ОГРАНИЧЕНИЯ НА РЕГИОНЫ, КРУГ ЛИЦ И СПОСОБ КОНЕЧНОГО ИСПОЛЬЗОВАНИЯ.
-
-14.6. Вы не вправе переуступать либо передавать права, предоставляемые по настоящему Лицензионному соглашению, без предварительного письменного согласия Google; любые попытки переуступки без такого согласия считаются недействительными. Вы обязуетесь не делегировать свои полномочия или обязательства по настоящему Лицензионному соглашению без предварительного письменного согласия Google.
-
-14.7. Лицензионное соглашение, а также взаимоотношения между вами и компанией Google в рамках настоящего Лицензионного соглашения регулируются законодательством штата Калифорния за исключением его норм коллизионного права. Вы и компания Google признаете, что урегулирование любых правовых вопросов, связанных с данным Лицензионным соглашением, относится исключительно к юрисдикции судов округа Санта-Клара, штат Калифорния. Несмотря на это, вы соглашаетесь с тем, что компания Google по-прежнему имеет право обращаться за наложением судебного запрета (или за получением аналогичного вида неотложной судебной защиты) в суды любой юрисдикции.
-
-
-</div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ru/preview/overview.jd b/docs/html-intl/intl/ru/preview/overview.jd
deleted file mode 100644
index d1345a2..0000000
--- a/docs/html-intl/intl/ru/preview/overview.jd
+++ /dev/null
@@ -1,389 +0,0 @@
-page.title=Обзор программы
-page.metaDescription=Добро пожаловать в программу Android M Developer Preview, участники которой получают всё необходимое для тестирования и оптимизации своих приложений для следующей версии платформы Android.
-page.image=images/cards/card-preview_16-9_2x.png
-page.tags="preview", "developer", "android"
-
-@jd:body
-
-<div class="cols" style=
-"background-color:#ffebc3; padding: 5px 0;margin-bottom:1em; text-align:center;">
-<h3>
-    Developer Preview 2 is now available
-  </h3>
-
- <ul class="dac-section-links">
-    <li class="dac-section-link">
-      <a href="{@docRoot}preview/support.html#preview2-notes">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Read the Notes</a>
-    </li>
-
-    <li class="dac-section-link">
-      <a href="{@docRoot}preview/support.html#preview2-get">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Get the Update</a>
-    </li>
-
-    <li class="dac-section-link">
-      <a href="https://code.google.com/p/android-developer-preview/">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Report Issues</a>
-    </li>
-  </ul>
-</div>
-
-<p>
-  Добро пожаловать в программу <strong>Android M Developer Preview</strong>, участники которой получают всё необходимоедля тестирования и оптимизации своих приложений для следующей версии платформы Android.
-
- Это бесплатная программа, и приступить к ее использованию можно прямо сейчас, загрузив
-инструменты M Developer Preview.
-</p>
-
-<div style="background-color:#eceff1;padding:1em;">
-<div class="wrap">
-  <div class="cols">
-    <div class="col-4of12">
-      <h5>
-        Системные образы эмулятора и оборудования
-      </h5>
-
-      <p>
-        Запускайте и тестируйте ваши приложения на устройствах Nexus 5, 6, 9 и Player (для Android TV), а также в эмуляторе.
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        Самый актуальный код платформы
-      </h5>
-
-      <p>
-        Во время знакомства с предварительной версией платформы мы будем предоставлять различные обновления, поэтому вы сможете протестировать самые актуальные изменения в платформе.
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        Получение обновлений по беспроводной связи
-      </h5>
-
-      <p>
-        После прошивки своего устройства для работы с предварительной версией платформы вы сможете получать обновления по беспроводной связи.
-
-      </p>
-    </div>
-  </div>
-
-  <div class="cols">
-
-
-    <div class="col-4of12">
-      <h5>
-        Новые возможности и новые функции
-      </h5>
-
-      <p>
-        Начните уже заранее реализовывать в своих приложениях поддержку расширенной функциональности платформы, например, новую модель разрешений на выполнение и функции сбережения энергии.
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        Приоритетная обработка отчетов об ошибках от разработчиков
-      </h5>
-
-      <p>
-        В течение первых нескольких недель мы будем рассматривать отчеты об ошибках, поступающие от разработчиков, в приоритетном порядке, поэтому не теряйте времени и приступайте к тестированию и составлению отзывов как можно раньше.
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        Отзывы и поддержка
-      </h5>
-
-      <p>
-        Отправляйте нам отчеты об ошибках и предоставляйте свои отзывы с помощью нашей <a href="https://code.google.com/p/android-developer-preview/">системы отслеживания проблем</a>.
-        Обменивайтесь идеями и предложениями с другими разработчиками в <a href="http://g.co/dev/AndroidMDevPreview">сообществе разработчиков Android&nbsp;M</a>.
-
-      </p>
-    </div>
-  </div>
-</div>
-</div>
-
-<!--
-<p>
-  With the M Developer Preview, you'll get an early start on testing your apps,
-  with enough time to make adjustments before the public platform release later
-  in the year. We'll provide several updates to the Preview tools in the weeks
-  ahead, so you can keep in sync with the latest changes as the platform moves
-  toward launch.
-</p>
-<img src="{@docRoot}preview/images/m-preview-timeline.png" alt=
-"Preview program timeline" id="timeline">
-<p>
-  You can help us improve the platform by <a href=
-  "https://code.google.com/p/android-developer-preview/">reporting issues</a>
-  through our feedback channels. This is especially
-  critical in the first month of the preview, when we’ll be giving priority to
-  developer-reported issues and feedback.
-</p> -->
-
-
-<h2 id="timeline">
-  График и обновления
-</h2>
-<img src="{@docRoot}preview/images/m-preview-timeline-crop.png" alt="Preview program timeline" id="timeline">
-<p>
-  Тестирование версии M Developer Preview запланировано на период с 28 мая до выпуска окончательной версии пакета SDK Android M, который
-состоится незадолго до публикации новой платформы в открытом доступе в
-третьем квартале 2015 г.
-</p>
-
-<p>
-  На ключевых этапах разработки платформы мы предоставим обновления для тестовых устройств.
-  Ниже перечислены предварительные даты этих ключевых этапов.
-</p>
-
-<ul>
-  <li>
-    <strong>Preview&nbsp;1</strong> (первоначальный выпуск версии Preview, конец мая)
-  </li>
-
-  <li>
-    <strong>Preview&nbsp;2</strong> (конец июня/начало июля)
-  </li>
-
-  <li>
-    <strong>Preview&nbsp;3</strong> (почти окончательный выпуск, конец июля)
-  </li>
-</ul>
-
-<p>
-  Завершающим этапом обновлений станет выход <strong>окончательной версии пакета SDK</strong> (в третьем квартале),
-где будут представлены официальные API-интерфейсы для новой версии Android, а также
-окончательные версии функций и поведений системы.
-</p>
-
-<p>
-  Мы настоятельно рекомендуем вам в ходе тестирования и разработки приложений для Android M <strong>постоянно
-обновлять вашу среду разработки</strong> по мере выхода обновлений для версии Preview.
-  Чтобы упростить этот процесс, мы будем отправлять на устройства, которые уже прошиты для работы с предварительной версией платформы, <strong>обновления по беспроводной сети</strong>.
-Мы также будем предоставлять вам системные образы, которые можно
-загрузить и использовать для прошивки устройства вручную.
-</p>
-<p class="note">
-  <strong>Примечание.</strong> Окончательные версии пакета SDK и системных образов не будут отправляться по беспроводной сети,
-их придется <strong>вручную установить</strong> на
-тестовые устройства.</strong>
-</p>
-
-<p>
-  Мы будем сообщать о появлении обновлений для версии Preview в <a href="http://android-developers.blogspot.com/">блоге разработчиков Android</a>, а
-также на этом сайте и в
-<a href="http://g.co/dev/AndroidMDevPreview">сообществе разработчиков Android M</a>.
-</p>
-
-<h2 id="preview_tools">
-  Что входит в состав Preview?
-</h2>
-
-<p>
-  M Developer Preview содержит всё, что вам необходимо для тестирования ваших существующих приложений на экранах различных размеров,
-тестирования с использованием различных сетевых технологий, чипсетов ЦП и графических процессоров,
- а также на различных архитектурах оборудования.
-</p>
-
-<h4>
-  Инструменты SDK
-</h4>
-
-<p>
-  С помощью менеджера SDK в <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a> вы можете загрузить следующие компоненты:
-</p>
-
-<ul>
-  <li><strong>Инструменты SDK</strong> для M Developer Preview.
-  </li>
-
-  <li><strong>Системный образ эмулятора</strong> (32- и
-64-разрядная версии) для M Developer Preview.
-  </li>
-
-  <li><strong>Системный образ эмулятора для Android TV</strong> (32- и
-32-разрядная версии)
-  </li>
-</ul>
-
-<h4>
-  Системные образы оборудования
-</h4>
-
-<p>
-  На странице
-<a href="download.html">Загрузки</a> можно скачать следующие системные образы оборудования:
-</p>
-
-<ul>
-  <li>
-    Системный образ устройства <strong>Nexus 5</strong> (GSM/LTE) («hammerhead»)
-  </li>
-
-  <li>
-    Системный образ устройства <strong>Nexus 6</strong> («shamu»)
-  </li>
-
-  <li>
-    Системный образ устройства <strong>Nexus 9</strong> (Wi-Fi) («volantis»)
-  </li>
-
-  <li>
-    Системный образ устройства <strong>Nexus Player</strong> (Android TV) («fugu»)
-  </li>
-</ul>
-
-<h4>
-  Документация и примеры кода
-</h4>
-
-<p>
-  Здесь вы можете найти документацию, где представлены подробные сведения о версии Preview:
-</p>
-
-<ul>
-  <li>
-    Документ, посвященный <a href="setup-sdk.html">настройке пакета SDK</a>, с пошаговыми инструкциями
-по началу работы.
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/testing/guide.html">Руководство по тестированию</a> и <a href="behavior-changes.html">обзор изменений в работе</a> с указанием ключевых областей для тестирования.
-  </li>
-
-  <li>Документация по новым API-интерфейсам, включая <a href="api-overview.html">обзор API-интерфейсов</a>,
-<a href="{@docRoot}preview/download.html#docs">справочник по API-интерфейсам</a> для загрузки и подробные руководства для разработчиков,
-в которых освещаются такие ключевые функции платформы,
-как <a href="{@docRoot}preview/features/runtime-permissions.html">разрешения</a>,
-<a href="{@docRoot}preview/backup/index.html">резервное копирование приложений</a> и многое другое.
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/samples.html">Примеры кода</a>, где можно посмотреть реализацию поддержки
-разрешений и других новых функций.
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/support.html#release-notes">Примечания к выпуску</a> для текущей версии
-M Developer Preview, включая информацию об изменениях и различные отчеты.
-  </li>
-</ul>
-
-<h4>
-  Ресурсы поддержки
-</h4>
-
-<p>
-  При тестировании и разработке приложений для M
-Developer Preview рекомендуем пользоваться следующими ресурсами поддержки:
-</p>
-
-<ul>
-  <li><a href="https://code.google.com/p/android-developer-preview/">Система отслеживания проблем M
-Developer Preview</a> — это ваш <strong>основной канал для предоставления своих
-отзывов.</strong> С ее помощью вы можете сообщать нам об обнаруженных ошибках, проблемах производительности, а также предоставлять общие отзывы.
- Также можно ознакомиться с <a href="https://code.google.com/p/android-developer-preview/wiki/KnownIssues">известными проблемами</a>
-и действиями по их устранению.
-  </li>
-
-  <li><a href="http://g.co/dev/AndroidMDevPreview">Сообщество разработчиков Android
-M</a> — это сообщество Google+, где можно <strong>общаться с другими
-разработчиками</strong>, работающими с Android M. Делитесь в сообществе своими наблюдениями
-и идеями, а также находите ответы на вопросы об Android M.
-  </li>
-</ul>
-
-
-<h2 id="preview_apis_and_publishing">
-  Выбор целевого уровня, предварительные версии API-интерфейсов и публикация приложений
-</h2>
-
-<p>
-  Выпуск Android M Developer Preview предназначен исключительно для разработки и
-<strong>не имеет стандартного уровня API</strong>. Если вы не хотите
-проверять свое приложение на совместимость (хотя мы настоятельно рекомендуем делать это),
-выберите целевой уровень M Developer Preview, задав для параметра <code><a href=
-  "/guide/topics/manifest/uses-sdk-element.html">targetSdkVersion</a></code>
-своего приложения значение <code>“MNC”</code>.
-</p>
-
-<p>
-  В Android M Developer Preview представлены <strong>предварительные версии API-интерфейсов</strong>
-&mdash;. Такие API-интерфейсы не будут официально опубликованы до выпуска окончательной версии пакета SDK,
- намеченого на третий квартал 2015 г. Это означает, что в будущем можно
-<strong>ожидать незначительных изменений в API-интерфейсах</strong>, особенно в
-первые недели действия программы. Каждое обновление
-Android M Developer Preview будет включать обзор изменений.
-</p>
-
-<p class="note">
-  Обратите внимание, что несмотря на возможные изменения в предварительных версиях API-интерфейсов, соответствующие расширения функциональности системы,
-такие как разрешения на выполнение и функции сбережения энергии, работают стабильно и уже готовы для
-тестирования.
-</p>
-
-<p>
-  Что касается публикации приложений, то политика Google Play <strong>однозначно запрещает публикацию приложений,
-разработанных для M Developer Preview</strong>. После выхода окончательной версии пакета SDK Android M
-вы сможете выбрать официальный целевой уровень API Android M и приступить
-к публикации ваших приложений в магазине Google Play. Тем временем, если вы хотите распространить приложение, предназначенное для
-тестировщиков Android M, то используйте для этого электронную почту или разместите такие приложения на своем сайте
-для прямой загрузки.
-</p>
-
-<h2 id="get_started">
-  Начало работы
-</h2>
-
-<p>
-  Чтобы приступить к тестированию своего приложения, выполните указанные ниже действия.
-</p>
-
-<ol>
-  <li>Ознакомьтесь с <a href="{@docRoot}preview/api-overview.html">обзором API-интерфейсов</a>
-и сведениями об <a href="{@docRoot}preview/behavior-changes.html">изменениях в работе</a>, чтобы получить
-представление о новых возможностях платформы и о том, как это может повлиять на ваши приложения. В частности, узнайте подробнее о новой модели
-<a href="{@docRoot}preview/features/runtime-permissions.html">разрешений на
-выполнение</a>, функциях сбережения энергии и автоматическом резервном копировании.
-  </li>
-
-  <li>Настройте свою среду, руководствуясь инструкциями по
-<a href="{@docRoot}preview/setup-sdk.html">настройке пакета SDK Preview</a>
-и конфигурированию тестовых устройств.
-  </li>
-
-  <li>Выполните
-<a href="https://developers.google.com/android/nexus/images">инструкции по прошивке</a>, чтобы прошить устройства
-Nexus 5, 6, 9 и Player с использованием последнего системного образа M Developer Preview. После прошивки вашего устройства для разработки
-обновления Preview на него будут приходить по беспроводной сети.</a>
-  </li>
-
-  <li>Загрузите <a href="{@docRoot}preview/download.html#docs">справочник по API-интерфейсам M Preview</a>
-и <a href="{@docRoot}preview/samples.html">примеры кода M Preview</a>
-, чтобы узнать больше о новых возможностях API-интерфейсов и о том, как использовать их в ваших
-приложениях.
-  </li>
-
-  <li>Присоединяйтесь к <a href="http://g.co/dev/AndroidMDevPreview">сообществу разработчиков Android
-M</a>, чтобы всегда быть в курсе последних новостей и общаться с другими
-разработчиками, работающими с новой платформой.
-  </li>
-</ol>
-
-<p>
-  Благодарим за участие в программе Android M Developer!
-</p>
diff --git a/docs/html-intl/intl/ru/preview/samples.jd b/docs/html-intl/intl/ru/preview/samples.jd
deleted file mode 100644
index f8115e7..0000000
--- a/docs/html-intl/intl/ru/preview/samples.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Примеры
-page.image=images/cards/samples-new_2x.png
-@jd:body
-
-<p>
-  Ниже представлены примеры кода для M Developer Preview. Чтобы загрузить примеры в
-Android Studio, выберите <b>File &gt; Import Samples</b>.
-</p>
-
-<p class="note">
-  <strong>Примечание.</strong> Эти проекты предназначены для использования
-в Gradle и Android Studio.
-</p>
-
-
-<h3 id="RuntimePermissions">Разрешения на выполнение</h3>
-
-<p>
- В Android M изменился подход к использованию системных разрешений. Пользователям теперь предлагается предоставить разрешения
-во время выполнения, а не во время установки приложения. В примере ниже показано, как запрашивать такие разрешения.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-RuntimePermissions">Загрузить с сайта GitHub</a></p>
-
-<h3 id="ConfirmCredentials">Подтверждение учетных данных</h3>
-
-<p>
- В этом примере проиллюстрировано, как использовать учетные данные устройства для авторизации в приложении.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ConfirmCredential">Загрузить с сайта 
-GitHub</a></p>
-
-<h3 id="FingerprintDialog">Диалоговое окно авторизации по отпечатку пальца</h3>
-
-<p>
- В этом примере показано, как распознавать зарегистрированные отпечатки пальцев для авторизации пользователя в
-приложении.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-FingerprintDialog">Загрузить с сайта GitHub</a></p>
-
-<h3 id="AutomaticBackup">Автоматическое резервное копирование для приложений</h3>
-
-<p>
- В Android M представлена функция автоматического резервного копирования настроек приложений. В примере кода ниже показано,
-как добавить в приложение правила фильтрации для управления резервным копированием настроек.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-AutoBackupForApps">Загрузить с сайта GitHub</a></p>
-
-<h3 id="CameraRaw">Camera 2 RAW</h3>
-
-<p>
-  В этом примере кода можно увидеть порядок использования API-интерфейса <code>Camera2</code> для получения буферов камеры RAW и сохранения их
-в виде файлов <code>DNG</code>.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-Camera2Raw">Загрузить с сайта GitHub</a></p>
-
-<h3 id="ActiveNotification">Активные уведомления</h3>
-
-<p>
-  В примере кода ниже показано, как
-<a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a>
-может сообщить о количестве уведомлений, которое в настоящее время отображает ваше приложение.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ActiveNotifications">Загрузить с сайта GitHub</a></p>
diff --git a/docs/html-intl/intl/ru/preview/setup-sdk.jd b/docs/html-intl/intl/ru/preview/setup-sdk.jd
deleted file mode 100644
index 1ffc2cd..0000000
--- a/docs/html-intl/intl/ru/preview/setup-sdk.jd
+++ /dev/null
@@ -1,207 +0,0 @@
-page.title=Настройка пакета SDK Preview
-page.image=images/cards/card-set-up_16-9_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Содержание документа</h2>
-      <ol>
-        <li><a href="#get-as13">Загрузка Android Studio 1.3</a></li>
-        <li><a href="#get-sdk">Загрузка пакета SDK Preview</a></li>
-        <li><a href="#create-update">Создание или обновление проекта</a></li>
-        <li><a href="#setup-test">Настройка для тестирования</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>Пакет SDK M Developer Preview можно загрузить с помощью менеджера SDK Android.
-В этой статье мы исходим из того, что вы уже знакомы с разработкой приложений Android и умеете работать с
-менеджером SDK Android и создавать проекты. Тем, кто только начинает работу с
-Android, рекомендуется сначала обратиться к разделу <a href="{@docRoot}training/basics/firstapp/index.html">Создание
-первого приложения</a>.</a></p>
-
-<h2 id="get-as13">Загрузка Android Studio 1.3</h2>
-
-<p>Для работы Developer Preview лучше всего подходит Android Studio 1.3, которая, кстати,
-также является предварительной версией. Для работы с пакетом SDK Preview настоятельно рекомендуется установить предварительную версию
-Android Studio 1.3.</p>
-
-<p class="caution"><strong>Внимание!</strong> Предварительная версия Android
-Studio 1.3 (сборка Canary) по-прежнему находится на стадии разработки. Если для тестирования
- M Developer Preview вы используете свой основной компьютер для разработки, вы можете дополнительно установить
-Android Studio для целей тестирования.</p>
-
-<p>Порядок установки предварительной версии Android Studio 1.3</p>
-
-<ol>
-  <li>Загрузите и запустите <a href="{@docRoot}tools/studio/index.html">Android
-Studio</a>.
-  </li>
-
-  <li>Откройте окно <strong>Settings</strong> (в ОС Windows для этого выберите
-<strong>File &gt; Settings</strong>). Перейдите к панели
-<strong>Appearance &amp; Behavior &gt; System
-Settings &gt; Updates</strong>.
-
-    <p class="aside">В операционной системе OSX панель <strong>Appearance &amp;
-Behavior</strong>
-находится в Android Studio в окне <strong>Preferences</strong>.</p>
-  </li>
-
-  <li> На панели <strong>Updates</strong> выберите
-<strong>Automatically check updates for: Canary Channel</strong>.
-  </li>
-
-  <li>На панели <strong>Updates</strong> выберите <strong>Check Now</strong>,
-чтобы проверить наличие актуальных обновлений для сборки Canary. При появлении соответствующего запроса загрузите
-и установите сборку.
-  </li>
-</ol>
-
-<h2 id="get-sdk">Загрузка пакета SDK Preview</h2>
-
-<p>Порядок добавления компонентов SDK Preview в среду разработки</p>
-
-<ol>
-  <li>Запустите предварительную версию Android Studio 1.3.
-  </li>
-
-  <li>Откройте окно <strong>Settings</strong> (в ОС Windows для этого выберите
-<strong>File &gt; Settings</strong>). Перейдите к панели
-<strong>Appearance &amp; Behavior &gt; System
-Settings &gt; Updates</strong>.
-
-    <p class="aside">В операционной системе OSX панель <strong>Appearance &amp;
-Behavior</strong>
-находится в Android Studio в окне <strong>Preferences</strong>.</p>
-  </li>
-
-  <li>На панели <strong>Updates</strong> выберите параметры
-<strong>Automatically check updates for: Canary Channel</strong> и
-<strong>Automatically check updates for Android SDK: Preview Channel</strong>.
-  </li>
-
-  <li>Запустите <strong>менеджер SDK Android</strong>. (Менеджер SDK входит в состав Android Studio 1.3;
-теперь это не отдельное
-приложение.)
-  </li>
-
-  <li>В разделе <strong>Platforms</strong> выберите <strong>Android MNC
-Preview</strong>.
-  </li>
-
-  <li>В разделе <strong>Tools</strong> выберите последние инструменты
-<strong>SDK Tools</strong>, <strong>Platform-tools</strong> и
-<strong>Build-tools</strong> для Android.
-  </li>
-
-  <li>Нажмите на кнопку <strong>Install packages</strong> и примите условия лицензионного соглашения
-для всех пакетов.
-  </li>
-
-  <li>Убедитесь, что платформа M Developer Preview установлена. Для этого откройте окно
-<strong>Settings</strong> и перейдите к панели<strong>Appearance &amp; Behavior
-&gt; System Settings &gt; Android SDK</strong>.</li>
-
-  <li>На панели <strong>Android SDK</strong> выберите вкладку
-<strong>SDK Platforms</strong>. Для элемента <strong>Android MNC
-Preview</strong> должно быть указано <em>Installed</em>. Кроме того, перейдите на вкладку
-<strong>SDK Tools</strong> и убедитесь в том, что установлены актуальные
-версии инструментов.
-  </li>
-</ol>
-<p>После выполнения этих действий компоненты предварительной версии
-доступны для использования в вашей среде разработки. </p>
-
-
-<h2 id="create-update">Создание или обновление проекта</h2>
-
-<p>
-  Если вы хотите воспользоваться API-интерфейсами предварительной версии, создайте или обновите проект разработки так, чтобы в нем использовались
-компоненты предварительной версии.
-</p>
-
-
-<h3 id="create">Создание нового проекта</h3>
-
-<p>
-  Для создания проекта в предварительной версии рекомендуется использовать Android Studio. Выполните действия,
-приведенные в разделе <a href="{@docRoot}sdk/installing/create-project.html">Создание проекта</a>,
-пока в мастере проекта не появится экран <em>Form Factors</em>. Затем выполните
-действия по созданию проекта, настроенного для предварительной версии.
-</p>
-
-<ul>
-  <li>Установите флажок <strong>Phone and Tablet</strong>.</li>
-  <li>Выберите <strong>MNC: Android M (Preview)</strong> в разделе <strong>Minimum
-SDK</strong>.</li>
-</ul>
-
-
-<h3 id="update">Обновление существующего проекта</h3>
-
-<p>
-  В существующем проекте следует изменить его конфигурацию и настроить его на использование API-интерфейсов предварительной версии. В
-среде разработки откройте файл <code>build.gradle</code> для вашего модуля и задайте
-значения следующим образом:
-</p>
-
-<ul>
-  <li>для параметра <code>compileSdkVersion</code> задайте значение <code>'android-MNC'</code>;</li>
-  <li>для параметра <code>minSdkVersion</code> задайте значение <code>'MNC'</code>;</li>
-  <li>для параметра <code>targetSdkVersion</code> задайте значение <code>'MNC'</code>.</li>
-</ul>
-
-
-<h2 id="setup-test">Настройка для тестирования</h2>
-
-<p>
-  Для тестирования приложения в предварительной версии необходимо физическое или виртуальное устройство, настроенное с помощью
-предварительной версии платформы. Если имеется совместимое устройство, можно установить предварительную версию
-платформы для тестирования. Для тестирования также можно настроить виртуальное устройство.
-</p>
-
-<h3 id="setup-device">Настройка физического устройства</h3>
-
-<p>
-  Если у вас имеется устройство Nexus 5, Nexus 6, Nexus 9 или Android TV, для тестирования приложений вы можете установить на эти устройства
-системный образ предварительной версии.
-Также в Android Studio можно настроить виртуальное устройство с предварительной версией платформы,
-используя для этого диспетчер виртуальных устройств Android.
-</p>
-
-<p class="caution">
-  <strong>Внимание!</strong> Установка на устройство образа с предварительной версией платформы <em>приведет к удалению всех данных с
-устройства</em>, поэтому перед установкой обязательно создайте резервные копии необходимых данных.
-</p>
-
-<h3 id="setupAVD">Настройка виртуального устройства</h3>
-
-<p>
-  В Android Studio можно настроить виртуальное устройство с предварительной версией платформы,
-используя для этого диспетчер виртуальных устройств Android.
-</p>
-
-<p>Порядок настройки AVD в диспетчере AVD</p>
-
-<ol>
-  <li>Установите SDK Preview в свою среду разработки, как описано в разделе
-<a href="{@docRoot}preview/setup-sdk.html">Настройка пакета
-SDK Preview</a>.</li>
-  <li>Выполните действия, указанные в статье
-<a href="{@docRoot}tools/devices/managing-avds.html">Управление виртуальными устройствами с помощью диспетчера
-AVD</a>. Используйте следующие настройки:
-    <ul>
-      <li><strong>Device:</strong> Nexus 5, Nexus 6, Nexus 9 или Android TV</li>
-      <li><strong>Target:</strong>
-       Android M (Preview) – API Level M</li>
-      <li><strong>ABI:</strong> x86</li>
-    </ul>
-  </li>
-</ol>
-
-<p>
-  Дополнительные сведения о создании виртуальных устройств для тестирования представлены в статье <a href="{@docRoot}tools/devices/index.html">Управление виртуальными устройствами</a>.
-</p>
diff --git a/docs/html-intl/intl/ru/preview/testing/guide.jd b/docs/html-intl/intl/ru/preview/testing/guide.jd
deleted file mode 100644
index 8beb0ed..0000000
--- a/docs/html-intl/intl/ru/preview/testing/guide.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=Руководство по тестированию
-page.image=images/cards/card-build_16x9_2x.png
-page.keywords=ресурсы для предварительной версии,androidm,тестирование,разрешения
-
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Содержание документа</h2>
-      <ol>
-        <li><a href="#runtime-permissions">Тестирование разрешений</a></li>
-        <li><a href="#doze-standby">Тестирование режима «Doze» и ждущего режима для приложений</a></li>
-        <li><a href="#ids">Автоматическое резервное копирование и идентификаторы устройств</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  Android M Developer Preview предлагает вам проверить, как будут работать ваши приложения в следующей версии
-платформы. В ней реализован ряд изменений в API-интерфейсах и поведении системы,
-которые могут повлиять на работу вашего приложения, как описано в статьях <a href="{@docRoot}preview/api-overview.html">Обзор
-API-интерфейсов</a> и <a href="{@docRoot}preview/behavior-changes.html">Изменения в работе</a>. Если вы хотите обеспечить удобство работы пользователей, при тестировании
-вашего приложения в предварительной версии платформы 
- обратите особое внимание на изменения в системе.
-</p>
-
-<p>
-  В настоящем руководстве приводится порядок тестирования функций предварительной версии с помощью вашего приложения. Советуем при этом обратить особое внимание
-на работу следующих функций новой версии платформы, поскольку они в значительной мере повлияют на поведение
-вашего приложения:
-</p>
-
-<ul>
-  <li><a href="#runtime-permissions">разрешения</a>;
-  </li>
-  <li><a href="#doze-standby">режим «Doze» и ждущий режим для приложений</a>;
-  </li>
-  <li><a href="#ids">автоматическое резервное копирование и идентификаторы устройств</a>.</li>
-</ul>
-
-<p>
-  Дополнительные сведения о том, как настроить физические или виртуальные устройства с помощью системного образа предварительной версии платформы
-к тестированию, представлены в статье <a href="{@docRoot}preview/setup-sdk.html">Настройка SDK Preview</a>.
-</p>
-
-
-<h2 id="runtime-permissions">Тестирование разрешений</h2>
-
-<p>
-  В новой модели <a href="{@docRoot}preview/features/runtime-permissions.html">разрешений</a>
-изменился подход к тому, каким образом пользователи смогут предоставлять разрешения для вашего приложения. Если раньше пользователь мог предоставить сразу все
-разрешения в процессе установки, теперь ваше приложение должно запрашивать у него отдельные разрешения
-во время работы. Это позволяет пользователю контролировать каждую операцию приложения, а также
-лучше понимать, для чего приложение запрашивает то или иное разрешение. Пользователи могут в любой момент
-предоставить разрешения для отдельного приложения или отозвать их. Эта новая
-возможность в предварительной версии платформы, вероятнее всего, повлияет на поведение вашего приложения. Некоторые из его функций могут
-пострадать или перестать работать.
-</p>
-
-<p class="caution">
-  Это касается работы всех приложений на новой платформе, даже тех, которые были разработаны для более ранних ее версий.
- Платформа обеспечивает ограниченную поддержку устаревших приложений, однако вам следует приступить к
-планированию перехода на новую модель разрешений уже сегодня, чтобы
-опубликовать обновленную версию вашего приложения к моменту официального выпуска новой платформы.
-</p>
-
-
-<h3 id="permission-test-tips">Советы по тестированию</h3>
-
-<p>
-  Ниже представлены советы по тестированию, которые призваны помочь вам спланировать и провести тестирование вашего приложения с использованием новой
-модели разрешений.
-</p>
-
-<ul>
-  <li>Определите текущие разрешения приложения и связанные с этим фрагменты кода.</li>
-  <li>Протестируйте различные варианты работы пользователя со службами и данными, защищенными с помощью разрешений.</li>
-  <li>Протестируйте различные сочетания предоставленных и отозванных разрешений.</li>
-  <li>Воспользуйтесь инструментом {@code adb} для управления разрешениями из командной строки:
-    <ul>
-      <li>Получите список разрешений и их состояний по группам:
-        <pre>adb shell pm list permissions -d -g</pre>
-      </li>
-      <li>Предоставьте или отзовите одно или несколько разрешений с помощью следующего синтаксиса:<br>
-        <pre>adb shell pm [grant|revoke] &lt;permission.name&gt; ...</pre>
-      </li>
-    </ul>
-  </li>
-  <li>Проанализируйте работу вашего приложения со службами, использующими разрешения.</li>
-</ul>
-
-<h3 id="permission-test-strategy">Стратегия тестирования</h3>
-
-<p>
-  Новая модель разрешений влияет на структуру и дизайн вашего приложения, а также на
-работу пользователей с приложением и предлагаемые им варианты взаимодействия с вашим продуктом. Проанализируйте, как ваше приложение использует разрешения в настоящее время,
-и продумайте новые варианты взаимодействия, которые хотите реализовать. В официальном выпуске
-платформы будет представлена поддержка совместимости, однако мы рекомендует запланировать обновление приложения, не полагаясь
-на эту поддержку.
-</p>
-
-<p>
-  Определите круг разрешений, которые действительно необходимы для работы вашего приложения, и найдите фрагменты
-кода, где используются службы, защищенные разрешениями. Для этого протестируйте работу приложения на новой
-платформе и проанализируйте код. При тестировании следует сосредоточиться на использовании
-разрешений на выполнение путем изменения параметра {@code targetSdkVersion} приложения для использования предварительной версии. Дополнительные
-сведения представлены в статье <a href="{@docRoot}preview/setup-sdk.html#">Настройка SDK Preview</a>.
-</p>
-
-<p>
-  Протестируйте работу приложения при различных сочетаниях предоставленных и отозванных разрешений, чтобы определить варианты работы пользователя,
-которые зависят от разрешений. В случаях, когда зависимость не явная или не логичная, подумайте, можно ли
-перестроить или структурировать такой вариант работы, чтобы устранить зависимость или четко обозначить,
-для чего требуется каждое разрешение.
-</p>
-
-<p>
-  Дополнительные сведения о поведении разрешений на выполнение и тестировании, а также советы и рекомендации по данному вопросу представлены на странице
-<a href="{@docRoot}preview/features/runtime-permissions.html">Разрешения</a>.
-
-</p>
-
-
-<h2 id="doze-standby">Тестирование режима «Doze» и ждущего режима для приложений</h2>
-
-<p>
-  Режим «Doze» и ждущий режим приложений, предназначенные для экономии энергии, ограничивают объем данных, обрабатываемых вашим приложением в фоновом режиме,
-когда устройство не используется или приложение неактивно. Ограничения,
-которые система может налагать на приложения, включают ограничение или отключение доступа к сети,
-приостановку выполнения фоновых задач, приостановку отправки уведомлений, игнорирование запросов на пробуждение и будильников. Чтобы гарантировать
-правильную работу приложения в условиях оптимизации энергопотребления, вам следует протестировать ваше приложение,
-смоделировав эти режимы.
-</p>
-
-<h4 id="doze">Тестирование работы приложения в режиме «Doze»</h4>
-
-<p>Ниже представлен порядок тестирования режима «Doze».</p>
-
-<ol>
-<li>Установите на физическое или виртуальное устройство системный образ M Preview.</li>
-<li>Подключите устройство к компьютеру для разработки и установите ваше приложение.</li>
-<li>Запустите ваше приложение и не закрывайте его.</li>
-<li>Смоделируйте переход устройства в режим «Doze», выполнив следующие команды:
-
-<pre>
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-
-  </li>
-  <li>Понаблюдайте за поведением приложения после возвращения устройства в обычный режим. Убедитесь, что при выходе устройства из режима «Doze» приложение
-должным образом возобновляет свою работу .</li>
-</ol>
-
-
-<h4 id="standby">Тестирование работы приложения в ждущем режиме</h4>
-
-<p>Ниже представлен порядок тестирования ждущего режима для приложений.</p>
-
-<ol>
-  <li>Установите на физическое или виртуальное устройство системный образ M Preview.</li>
-  <li>Подключите устройство к компьютеру для разработки и установите ваше приложение.</li>
-  <li>Запустите ваше приложение и не закрывайте его.</li>
-  <li>Смоделируйте переход приложения в ждущий режим, выполнив следующие команды:
-
-<pre>
-$ adb shell am broadcast -a android.os.action.DISCHARGING
-$ adb shell am set-idle &lt;packageName&gt; true
-</pre>
-
-  </li>
-  <li>Смоделируйте выход приложения из ждущего режима, выполнив следующую команду:
-    <pre>$ adb shell am set-idle &lt;packageName&gt; false</pre>
-  </li>
-  <li>Понаблюдайте за поведением приложения, когда оно возобновляет свою работу. Убедитесь, что оно
-выходит из ждущего режима без сбоев. Обратите особое внимание на работу уведомлений и выполнение фоновых задач приложения
-.</li>
-</ol>
-
-<h2 id="ids">Автоматическое резервное копирование для приложений и идентификаторы устройств</h2>
-
-<p>Если во внутреннем хранилище вашего приложения имеются какие-либо идентификаторы устройства, такие как идентификатор Google
-Cloud Messaging,
-обязательно воспользуйтесь советами и рекомендациями, приведенными в статье
-<a href="{@docRoot}preview/backup/index.html">Автоматическое резервное копирование для приложений</a>,чтобы исключить расположение
-хранилища из списка объектов для автоматического резервного копирования. </p>
diff --git a/docs/html-intl/intl/ru/preview/testing/performance.jd b/docs/html-intl/intl/ru/preview/testing/performance.jd
deleted file mode 100644
index fc88cbd..0000000
--- a/docs/html-intl/intl/ru/preview/testing/performance.jd
+++ /dev/null
@@ -1,656 +0,0 @@
-page.title=Тестирование скорости отображения
-page.image=images/cards/card-test-performance_2x.png
-page.keywords=скорость отображения, кадр/с, инструменты
-
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Содержание документа</h2>
-      <ol>
-        <li><a href="#measure">Измерение производительности интерфейса</a>
-          <ul>
-            <li><a href="#aggregate">Агрегированные статические данные о кадрах</a></li>
-            <li><a href="#timing-info">Точная информация о кадровой синхронизации</a></li>
-            <li><a href="#timing-dump">Дамп простой кадровой синхронизации</a></li>
-            <li><a href="#collection-window">Управление промежутком времени для сбора статистических данных</a></li>
-            <li><a href="#diagnose">Диагностика снижения производительности</a></li>
-            <li><a href="#resources">Дополнительные ресурсы</a></li>
-          </ul>
-        </li>
-        <li><a href="#automate">Автоматизация тестирования производительности интерфейса</a>
-          <ul>
-            <li><a href="#ui-tests">Настройка тестов интерфейса</a></li>
-            <li><a href="#automated-tests">Настройка автоматизированного тестирования интерфейса</a></li>
-            <li><a href="#triage">Определение и устранение обнаруженных проблем</a></li>
-          </ul>
-        </li>
-      </ol>
-  </div>
-</div>
-
-
-<p>
-  Тестирование производительности интерфейса позволяет убедиться в том, что ваше приложение не только соответствует функциональным требованиям,
-но и гарантирует пользователю безупречное взаимодействие с интерфейсом с постоянной частотой отображения
-60 кадров в секунду (<a href="https://www.youtube.com/watch?v=CaMTIgxCSqU&amp;index=25&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">почему именно
-60 кадров/с?</a>), без каких-либо задержек и пропущенных кадров или, как их называют, <em>глюков</em>. В этой
-статье рассматриваются инструменты для измерения производительности интерфейса, а также предлагается подход к
-интеграции этих процедур измерения производительности в ваши методы тестирования приложений.
-</p>
-
-
-<h2 id="measure">Измерение производительности интерфейса</h2>
-
-<p>
-  Чтобы улучшить производительность, прежде всего у вас должна иметься возможность измерить производительность
-вашей системы. Когда это сделано, необходимо диагностировать и определить проблемы, которые могут возникнуть на разных этапах
-процесса разработки.
-</p>
-
-<p>
-  <em><a href="https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></em>
-– это инструмент Android, который запускается на устройстве и создает дамп интересной информации о состоянии системных
-служб. После передачи в dumpsys команды <em>gfxinfo</em> в журнал устройства (logcat)
-записываются сведения о производительности, касающиеся скорости анимации на этапе
-записи.
-</p>
-
-<pre>
-&gt; adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt;
-</pre>
-
-<p>
-  Эта команда может создавать множество различных вариантов данных кадровой синхронизации.
-</p>
-
-<h3 id="aggregate">Агрегированные статические данные о кадрах</h3>
-
-<p>
-  В M Preview эта команда фиксирует в logcat агрегированный анализ данных о кадрах, полученных
-за весь жизненный цикл процесса. Например:
-</p>
-
-<pre class="noprettyprint">
-Stats since: 752958278148ns
-Total frames rendered: 82189
-Janky frames: 35335 (42.99%)
-90th percentile: 34ms
-95th percentile: 42ms
-99th percentile: 69ms
-Number Missed Vsync: 4706
-Number High input latency: 142
-Number Slow UI thread: 17270
-Number Slow bitmap uploads: 1542
-Number Slow draw: 23342
-</pre>
-
-<p>
-  Приведенные выше статистические данные высокого уровня демонстрируют производительность отрисовки, которой обладает приложение,
-а также ее стабильность при обработке множества кадров.
-</p>
-
-
-<h3 id="timing-info">Точная информация о кадровой синхронизации</h3>
-
-<p>
-  В M Preview представлена новая команда для gfxinfo – <em>framestats</em>. Она позволяет получить
-чрезвычайно точную информацию о кадровой синхронизации из последних кадров, что поможет вам отслеживать проблемы
-и устранять их.
-</p>
-
-<pre>
-&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; framestats
-</pre>
-
-<p>
-  Данная команда предоставляет информацию о кадровой синхронизации буквально по наносекундам на основании последних 120
-кадров, созданных приложением. Ниже приводится пример необработанного результата из журнала adb после выполнения команды dumpsys gfxinfo
-&lt;PACKAGE_NAME&gt; framestats:
-</p>
-
-<pre class="noprettyprint">
-0,49762224585003,49762241251670,9223372036854775807,0,49762257627204,49762257646058,49762257969704,49762258002100,49762265541631,49762273951162,49762300914808,49762303675954,
-0,49762445152142,49762445152142,9223372036854775807,0,49762446678818,49762446705589,49762447268818,49762447388037,49762453551527,49762457134131,49762474889027,49762476150120,
-0,49762462118845,49762462118845,9223372036854775807,0,49762462595381,49762462619287,49762462919964,49762462968454,49762476194547,49762476483454,49762480214964,49762480911527,
-0,49762479085548,49762479085548,9223372036854775807,0,49762480066370,49762480099339,49762481013089,49762481085850,49762482232152,49762482478350,49762485657620,49762486116683,
-</pre>
-
-<p>
-  Каждая строка здесь представляет собой кадр, созданный приложением. В каждой строке имеется фиксированное количество
-столбцов, где указано время, затраченное на каждом этапе процесса создания кадра. Более подробно этот формат рассматривается в следующем разделе,
-включая сведения о том, что означает каждый столбец.
-</p>
-
-
-<h4 id="fs-data-format">Формат данных, возвращаемых командой framestats</h4>
-
-<p>
-  Поскольку блок данных выводится в формате CSV, вы можете с легкостью вставить его в любую программу
-для работы с электронными таблицами, а также собрать и обработать данные с помощью сценария. Ниже рассматривается формат
-столбцов выходных данных. Все временные метки указаны в наносекундах.
-</p>
-
-<ul>
-  <li>FLAGS
-    <ul>
-      <li>В строках, в которых в столбце FLAGS указано «0», общее время смены кадра вычислялось путем
-вычитания значения в столбце INTENDED_VSYNC из значения в столбце FRAME_COMPLETED.
-      </li>
-
-      <li>Если это значение не равно нулю, то строку следует пропустить, поскольку кадр был определен как отличающийся от
-обычной производительности, при которой ожидается, что размещение и прорисовка кадра займут
-больше 16 мс. Причина этого может заключаться в следующем:
-        <ul>
-          <li>макет окна был изменен (например, первый кадр приложения или после
-вращения);
-          </li>
-
-          <li>также, возможно, кадр был пропущен, в результате чего временные метки некоторых значений
-содержат бессмысленную информацию; кадр можно пропустить, если, например, скорость отображения превышает 60 кадров/с или если
-на экране от этого не появяются шумы; это не обязательно указывает на проблему
-в приложении.
-          </li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-
-  <li>INTENDED_VSYNC
-    <ul>
-      <li>Предполагаемая начальная точка кадра. Если данное значение отличается от значения в столбце VSYNC, это указывает на то,
-что поток был занят и не смог своевременно среагировать на сигнал
-vsync.
-      </li>
-    </ul>
-  </li>
-
-  <li>VSYNC
-    <ul>
-      <li>Значение времени, которое использовалось во всех приемниках vsync, а также которое было затрачено на прорисовку кадра
-(обратные вызовы кадров Choreographer и анимации, View.getDrawingTime() и т. д.)
-      </li>
-
-      <li>Чтобы узнать подробнее о VSYNC и о том, какое значение это имеет для вашего приложения, просмотрите
-видеоролик,
-<a href="https://www.youtube.com/watch?v=1iaHxmfZGGc&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=23">посвященный общим сведениям о VSYNC</a>.
-      </li>
-    </ul>
-  </li>
-
-  <li>OLDEST_INPUT_EVENT
-    <ul>
-      <li>Временная метка для самого старого события ввода в очереди ввода или Long.MAX_VALUE, если
-для кадра отсутствуют события ввода.
-      </li>
-
-      <li>Это значение в первую очередь предназначено для платформы и имеет ограниченную практическую ценность для разработчиков
-приложений.
-      </li>
-    </ul>
-  </li>
-
-  <li>NEWEST_INPUT_EVENT
-    <ul>
-      <li>Временная метка для самого нового события ввода в очереди ввода или 0, если
-для кадра отсутствуют события ввода.
-      </li>
-
-      <li>Это значение в первую очередь предназначено для платформы и имеет ограниченную практическую ценность для разработчиков
-приложений.
-      </li>
-
-      <li>Однако оно позволяет получить приблизительное представление о том, какая задержка возникает у приложения,
-обратившись к значению разницы (FRAME_COMPLETED - NEWEST_INPUT_EVENT).
-      </li>
-    </ul>
-  </li>
-
-  <li>HANDLE_INPUT_START
-    <ul>
-      <li>Временная метка отправки событий ввода в приложение.
-      </li>
-
-      <li>Разность между этим значением и значением ANIMATION_START позволяет определить,
-сколько времени было затрачено приложением на обработку событий ввода.
-      </li>
-
-      <li>Если разность достаточно велика (&gt;2 мс), это означает, что приложение затрачивает очень
-много времени на обработку событий ввода, таких как View.onTouchEvent(). В свою очередь, это может указывать на
-необходимость оптимизации этого процесса обработки или переноса этой нагрузки в другой поток. Следует помнить, что существуют
-сценарии, когда такое
-поведение ожидается и является приемлемым. Имеются в виду нажатия или аналогичные сценарии, в которых запускаются новые операции.
-      </li>
-    </ul>
-  </li>
-
-  <li>ANIMATION_START
-    <ul>
-      <li>Временная метка запуска анимаций, зарегистрированных с помощью Choreographer.
-      </li>
-
-      <li>Разность между этим значением и PERFORM_TRANVERSALS_START позволяет
-определить, сколько времени потребовалось на оценку всех запущенных аниматоров (ObjectAnimator,
-ViewPropertyAnimator и общих переходов).
-      </li>
-
-      <li>Если разность достаточно велика (&gt;2 мс), проверьте наличие в приложении настраиваемых
-аниматоров, а также то, какие поля анимируют классы ObjectAnimator. Убедитесь, что
-эти поля подходят для анимации.
-      </li>
-
-      <li>Чтобы узнать подробнее о Choreographer, просмотрите видео <a href="https://developers.google.com/events/io/sessions/325418001">For Butter or Worse</a>.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>PERFORM_TRAVERSALS_START
-    <ul>
-      <li>Если вычесть значение DRAW_START из этого значения, вы можете узнать, сколько времени было затрачено на разметку и
-измерение. (Обратите внимание, что во время прокрутки или анимации это значение должно быть близко
-к нулю.)
-      </li>
-
-      <li>Чтобы узнать подробнее об этапах разметки и измерения во время рендеринга интерфейса приложения, просмотрите
-видео, посвященное
-<a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">аннулированию, макетам и производительности</a>.
-      </li>
-    </ul>
-  </li>
-
-  <li>DRAW_START
-    <ul>
-      <li>Время начала этапа отрисовки с помощью метода performTraversals. Это точка начала
-записи списков отображения любых представлений, которые были аннулированы.
-      </li>
-
-      <li>Разность между этим значением и значением SYNC_START означает, сколько времени потребовалось на вызов метода View.draw() для всех
-аннулированных представлений в дереве.
-      </li>
-
-      <li>Дополнительные сведения о модели отрисовки представлены в видео, посвященном <a href="{@docRoot}guide/topics/graphics/hardware-accel.html#hardware-model">аппаратному ускорению</a>
-или
-<a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">аннулированию, макетам и производительности</a>.
-      </li>
-    </ul>
-  </li>
-
-  <li>SYNC_START
-    <ul>
-      <li>Время начала этапа синхронизации отрисовки.
-      </li>
-
-      <li>Если разность между этим значением и значением ISSUE_DRAW_COMMANDS_START достаточно велика (&gt;0,4 мс или около этого),
-обычно это указывает на наличие большого количество новых растровых изображений, которые следует передать
-ЦП.
-      </li>
-
-      <li>Чтобы узнать подробнее об этапе синхронизации, просмотрите видео, посвященное
-<a href="https://www.youtube.com/watch?v=VzYkVL1n4M8&amp;index=24&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">рендерингу профиля с помощью ЦП</a>.
-      </li>
-    </ul>
-  </li>
-
-  <li>ISSUE_DRAW_COMMANDS_START
-    <ul>
-      <li>Время начала отправки аппаратным обработчиком команд на отрисовку для ЦП.
-      </li>
-
-      <li>Разность между этим значением и значением FRAME_COMPLETED позволяет получить приблизительное представление об объеме ресурсов ЦП, используемых
-приложением. Здесь отображаются такие проблемы, как превышение или недостаток эффектов рендеринга.
-
-      </li>
-    </ul>
-  </li>
-
-  <li>SWAP_BUFFERS
-    <ul>
-      <li>Время вызова eglSwapBuffers;
-относится к работе платформы и имеет ограниченную практическую ценность для разработчиков приложений.
-      </li>
-    </ul>
-  </li>
-
-  <li>FRAME_COMPLETED
-    <ul>
-      <li>Все готово! Общее время, затраченное на обработку этого кадра, вычисленное по следующей формуле:
-FRAME_COMPLETED - INTENDED_VSYNC.
-      </li>
-    </ul>
-  </li>
-
-</ul>
-
-<p>
-  Эти данные можно использовать несколькими способами. Простым, но полезным примером может служить
-график, иллюстрирующий распределение времени кадров (FRAME_COMPLETED - INTENDED_VSYNC) в
-различных диапазонах задержки (см. рисунок ниже). На графике ясно видно, что с большинством кадров
-никаких проблем не возникло (ниже отметки в 16 мс; обозначено красным), однако для некоторых кадров
-это значение значительно превышено. Можно обратиться к этому графику и пронаблюдать изменения по времени,
-чтобы увидеть общую картину смещения или новые отличающиеся значения. Также можно создать график задержи ввода,
-времени, затраченного на разметку или других интересующих вас показателей, руководствуясь множеством временных меток,
-имеющихся в данных.
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-framestats.png">
-
-
-<h3 id="timing-dump">Дамп простой кадровой синхронизации</h3>
-
-<p>
-  Если в разделе настроек для разработчиков для параметра <strong>Profile GPU rendering</strong> задано значение <strong>In adb shell dumpsys gfxinfo</strong>,
-команда <code>adb shell dumpsys gfxinfo</code> выдает сведения о синхронизации
-по времени для последних 120 кадров. При этом вы увидите несколько категорий значений,
-разделенные знаком табуляции. Эти данные могут оказаться полезными для определения частей конвейера отрисовки, которые могут работать с задержкой
-при высоком уровне обработки.
-</p>
-
-<p>
-  Как и в случае с командой
-<a href="#fs-data-format">framestats</a>, описанной выше, вы можете с легкостью вставить полученные данные в любую программу
-для работы с электронными таблицами, а также собрать и обработать их с помощью сценария. На графике ниже иллюстрируется разбивка со сведениями о количестве созданных кадров и времени, которое приложение затратило на
-это.
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-frame-latency.png">
-
-<p>
-  Результаты выполнения команды gfxinfo, копирования полученного результата, передачи его в приложение для работы
-с электронными таблицами и построения графика представлены в виде столбцов.
-</p>
-
-<p>
-  Каждый столбец представляет собой один кадр анимации; его высота обозначает количество миллисекунд,
-затраченных на вычисление этого кадра. Каждый цветной сегмент столбца
-обозначает различный этап процесса рендеринга, что позволяет определить проблемные компоненты
-приложения в плане производительности. Дополнительные сведения о
-процессе рендеринга, а также о том, как оптимизировать его, представлены в видео, посвященном
-<a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;index=27&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">аннулированию, макетам и производительности</a>.
-</p>
-
-
-<h3 id="collection-window">Управление промежутком времени для сбора статистических данных</h3>
-
-<p>
-  При выполнении команды framestats, равно как и при вычислении простой кадровой синхронизации, данные собираются за достаточно короткий промежуток времени – порядка
-двух секунд рендеринга. Чтобы точно указать этот промежуток времени (например,
-чтобы ограничить данные определенной анимацией), можно сбросить все счетчики
-и объединить собранные статистические данные.
-</p>
-
-<pre>
-&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; reset
-</pre>
-
-<p>
-  Это также можно сделать совместно с выполнением самих команд создания дампа, чтобы выполнять сбор
-и сброс регулярно, непрерывно получая данные за промежутки времени продолжительностью менее двух секунд.
-
-</p>
-
-
-<h3 id="diagnose">Диагностика снижения производительности</h3>
-
-<p>
-  Определение снижений производительности послужит отличным началом для отслеживания проблем, а также позволит всегда поддерживать
-хорошую работоспособность приложения. Однако инструмент dumpsys позволяет лишь определить наличие проблем и приблизительный уровень их
-серьезности. Вам же требуется диагностировать каждую конкретную проблему с
-производительностью и найти подходящие способы ее устранения. Для этих целей прекрасно
-подходит инструмент <a href="{@docRoot}tools/help/systrace.html">systrace</a>.
-</p>
-
-
-<h3 id="resources">Дополнительные ресурсы</h3>
-
-<p>
-  Дополнительные сведения о принципе работы конвейера рендеринга платформы Android, информация об общих проблемах, с которыми можно столкнуться при его использовании,
-а также способы их устранения представлены на указанных ниже
-полезных ресурсах.
-</p>
-
-<ul>
-  <li>Производительность визуализации 101
-  </li>
-  <li>Частота 60 кадров в секунду
-  </li>
-  <li>Пользовательский интерфейс Android и графический процессор
-  </li>
-  <li>Аннулирование макетов и производительность
-  </li>
-  <li>Анализ производительности интерфейса с помощью systrace
-  </li>
-</ul>
-
-
-<h2 id="automate">Автоматизация тестирования производительности интерфейса</h2>
-
-<p>
-  Один из подходов к тестированию производительности интерфейса заключается в простом привлечении тестировщиков, чтобы они выполнили ряд
-операций с целевым приложением, а также либо просто визуально убедились в отсутствии глюков, либо уделили достаточно много времени
-тестированию приложения с помощью соответствующего инструмента. Однако такой подход имеет один важный недостаток
-– человек физически не способен обрабатывать информацию при очень быстрой смене кадров.
-Кроме того, такая работа занимает много времени, утомляет и не гарантирует полное отсутствие ошибок.
-</p>
-
-<p>
-  Гораздо эффективнее записать ключевые показатели производительности, полученные в ходе автоматического
-тестирования интерфейса, и проанализировать их. В состав Android M Developer Preview входят новые функции ведения журналов, которые позволяют с легкостью
-определить объем и серьезность глюков анимации в приложении.
-Их также можно использовать для того, чтобы создать строгий процесс определения текущей производительности и отслеживать соответствие требованиям будущих задач
-производительности.
-</p>
-
-<p>
-  В этой статье мы расскажем вам, как мы рекомендуем использовать такие данные, чтобы автоматизировать
-тестирование производительности.
-</p>
-
-<p>
-  Этот подход большей частью сводится к двум ключевым шагам. Шаг первый: определите, что вы
-тестируете и как вы это делаете. Шаг второй: произведите настройку
-среды автоматизированного тестирования и ее обслуживание.
-</p>
-
-
-<h3 id="ui-tests">Настройка тестов интерфейса</h3>
-
-<p>
-  Прежде чем приступить к автоматизированному тестированию, необходимо принять ряд важных решений,
-чтобы правильно определить область тестирования и ваши требования.
-</p>
-
-<h4>
-  Определение ключевых анимаций или потоков для тестирования
-</h4>
-
-<p>
-  Помните, что плохая производительность чаще всего выражается для пользователей в отсутствии плавной
-анимации. Поэтому при определении того, какие типы действий в пользовательском интерфейсе следует протестировать, полезно
-сосредоточить внимание на ключевых анимациях, наиболее важных для
-взаимодействия пользователя с приложением. Ниже представлены примеры наиболее распространенных сценариев, которые может оказаться полезным определить.
-</p>
-
-<ul>
-  <li>Прокрутка основного представления ListView или RecyclerView
-  </li>
-
-  <li>Анимации во время циклов асинхронного ожидания
-  </li>
-
-  <li>Любые анимации, включающие загрузку растровых изображений или манипуляции с ними
-  </li>
-
-  <li>Анимации, включающие смешивание альфа-канала
-  </li>
-
-  <li>Отрисовка настраиваемого представления на экране
-  </li>
-</ul>
-
-<p>
-  Определите, какие из этих
-ключевых анимаций следует протестироваит в первую очередь. При принятии решения подключите инженеров, дизайнеров и менеджеров по продукту.
-</p>
-
-<h4>
-  Определите свои будущие задачи и отслеживайте их выполнение
-</h4>
-
-<p>
-  С профессиональной точки зрения, может оказаться крайне важным решить, каких именно показателей производительности вы хотите добиться, и
-сосредоточить усилия на создании необходимых тестов и сборе соответствующих данных. Например:
-</p>
-
-<ul>
-  <li>Вы только хотите начать отслеживание производительности интерфейса, чтобы получить дополнительные сведения?
-  </li>
-
-  <li>Вы хотите предотвратить возможно снижение производительности в будущем?
-  </li>
-
-  <li>На сегодняшний день 90% кадров анимируются плавно. Вы хотите увеличить этот показатель до 98% в этом квартале?
-  </li>
-
-  <li>На сегодняшний день 98% кадров анимируются плавно. Вы не хотите, чтобы производительность снизилась?
-  </li>
-
-  <li>Вы хотите улучшить производительность на бюджетных устройствах?
-  </li>
-</ul>
-
-<p>
-  Во всех перечисленных случаях вам потребуется хронологическое отслеживание показателей, демонстрирующих производительность
-разных версий вашего приложения.
-</p>
-
-<h4>
-  Определение устройств для тестирования
-</h4>
-
-<p>
-  Производительность приложения может меняться в зависимости от того, на каком устройстве оно установлено. Некоторые устройства могут обладать недостаточным
-объемом памяти, менее производительными графическими процессорами или слабыми ЦП. Это означает, что анимации,
-которые прекрасно работают на устройстве с одним оборудованием, могут вообще не работать на устройстве с другим оборудованием, и, что хуже всего, препятствовать
-нормальной работе другой части конвейера. Поэтому, учитывая такую разницу
-в отображении интерфейса для пользователей, выберите диапазон устройств для выполнения тестов, включив в него
-как современные высокотехнологичные, так и бюджетные устройства, планшеты и т. д. При выборе диапазона устройств учитывайте разницу в производительности ЦП
-, ОЗУ, разрешение экрана, его размер и т. д. Тесты, которые успешно прошли на устройстве верхнего ценового сегмента,
-могут завершиться сбоем на бюджетных моделях.
-</p>
-
-<h4>
-  Базовые средства для тестирования пользовательского интерфейса
-</h4>
-
-<p>
-  Такие наборы инструментов, как <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a> и
-<a href="{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a>,
-призваны помочь автоматизировать действия пользователей при взаимодействии с вашим приложением. Это простые инструменты,
-имитирующие работу пользователя на устройстве. Для использования этих инструментов
-вам необходимо создать уникальные сценарии, которые будут включать выполнение ряда действий, и воспроизвести
-их на устройстве.
-</p>
-
-<p>
-  Используя эти автоматизированные тесты в сочетании с командой <code>dumpsys gfxinfo</code>, вы можете быстро создать
-воспроизводимую систему, позволяющую выполнять тестирование и анализировать
-полученную информацию о производительности для каждого определенного условия.
-</p>
-
-
-<h3 id="automated-tests">Настройка автоматизированного тестирования интерфейса</h3>
-
-<p>
-  Получив возможность протестировать интерфейс, а также настроив конвейер на сбор результатов
-отдельного теста, важно выбрать инструмент, который позволит многократно выполнить
-тест на нескольких устройствах, а также объединить данные о результатах
-тестирования производительности для их дальнейшего анализа вашими специалистами по разработке.
-</p>
-
-<h4>
-  Инструмент для автоматизации тестирования
-</h4>
-
-<p>
-  Следует отметить, что инструменты для тестирования интерфейса (такие как <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>)
-можно запускать прямо на целевом устройстве или в эмуляторе. Тогда как сбор командой
-<em>dumpsys gfxinfo</em> информации о производительности выполняется на хост-компьютере, который отправляет команды из ADB. Чтобы объединить
-усилия этих двух инструментов, был разработан <a href="{@docRoot}tools/help/monkeyrunner_concepts.html">MonkeyRunner</a>. 
-Эта система написания сценариев, работающая на хост-компьютере, отправляет команды на
-подключенные устройства, а также получает данные от них.
-</p>
-
-<p>
-  Набор сценариев для надлежащей автоматизации тестирования производительности интерфейса должен включать использование
-системы MonkeyRunner хотя бы для выполнения следующих задач:
-</p>
-
-<ul>
-  <li>загрузка и запуск на целевые устройства или в эмулятор необходимого пакета APK;
-  </li>
-
-  <li>запуск теста UI Automator и его выполнение;
-  </li>
-
-  <li>сбор информации о производительности с помощью <em>dumpsys gfxinfo</em><em>;</em>
-  </li>
-
-  <li>объединение полученной информации и ее отображение для разработчика в удобочитаемой форме.
-  </li>
-</ul>
-
-
-<h3 id="triage">Определение и устранение обнаруженных проблем</h3>
-
-<p>
-  После обнаружения проблемных мест или причин снижения производительности необходимо понять, что должно быть исправлено
-и внести соответствующие изменения. Если используемый инструмент для автоматизированного тестирования обеспечивает соблюдение точной разбивки
-кадровой синхронизации по времени, то с его помощью можно тщательно изучить недавние подозрительные изменения в коде или макете (в случае
-со снижением производительности), а также ограничить область системы, которая подлежит анализу, когда вы переключаетесь на изучение проблемы
-вручную. В последнем случае прекрасно подойдет <a href="{@docRoot}tools/help/systrace.html">systrace</a>. С помощью этого инструмента вы можете получить подробнейшую информацию
-о синхронизации относительно каждого этапа конвейера рендеринга, относительно каждого потока и каждого ядра
-системы, а также относительно любых настраиваемых маркеров событий, которые вы задаете.
-</p>
-
-<h4>
-  Надлежащее профилирование синхронизации по времени
-</h4>
-
-<p>
-  Важно отметить трудности, с которыми можно столкнуться при получении и анализе данных синхронизации, связанных
-с производительностью визуализации. Результаты по своей природе недетерминированные и зачастую
-изменяются в зависимости от состояния системы, объема доступной памяти, температурного
-дросселирования и времени суток. Смысл в том, что
-вы можете выполнить один и тот же тест дважды и получить результаты,
-которые будут похожи, но не совпадут в точности.
-</p>
-
-<p>
-  Правильный сбор и профилирование данных означает выполнение одного и того же теста
-несколько раз и накопление результатов для вычисления среднего значения (для простоты назовем это
-пакетом результатов). Это позволяет получить приблизительное представление о производительности
-теста, когда нет необходимости в точных данных.
-</p>
-
-<p>
-  Пакеты можно использовать при изучении изменений кода, чтобы увидеть их относительное влияние на
-производительность. Если средняя частота кадров для пакета результатов, полученных до изменения, больше значения для пакета, полученного
-после изменения, обычно вы получаете общее повышение производительности в результате этого конкретного
-изменения.
-</p>
-
-<p>
-  При выполнении любого автоматизированного тестирования интерфейса следует учитывать этот момент,
-равно как и любые аномалии, которые могут возникнуть во время теста. Например,
-если производительность вашего приложения неожиданно резко падает из-за проблем с оборудованием устройства (которые
-не вызваны вашим приложением), возможно, вы захотите выполнить пакет повторно, чтобы получить
-менее беспорядочные данные о синхронизации.
-</p>
-
-<p>
-  Итак, сколько раз следует выполнять тест, прежде чем его результаты станут значимыми? Не менее 10!
- Чем больше раз вы выполняете тест (например, можно сделать 50–100 прогонов), тем выше точность результатов
-(хотя, конечно, ради точности приходится поступаться временем).
-</p>
diff --git a/docs/html-intl/intl/ru/sdk/index.jd b/docs/html-intl/intl/ru/sdk/index.jd
new file mode 100644
index 0000000..765c89c
--- /dev/null
+++ b/docs/html-intl/intl/ru/sdk/index.jd
@@ -0,0 +1,432 @@
+page.title=Загрузка Android Studio и инструментов SDK
+page.tags=sdk, android studio
+page.template=sdk
+page.image=images/cards/android-studio_2x.png
+header.hide=1
+page.metaDescription=Загрузите официальные средства разработки Android для создания приложений для смартфонов, планшетов, носимых устройств, телевизоров и многих других устройств под управлением ОС Android.
+
+@jd:body
+
+<style type="text/css">
+  .offline {display:none;}
+  h2.feature {
+    padding-top:30px;
+    margin-top:0;
+    clear:both;
+  }
+  .feature-blurb {
+  margin:0px; font-size:16px; font-weight:300;
+  padding-top:40px;
+  }
+
+  .landing-button .small {
+    font-size: 12px;
+    font-weight: normal;
+    line-height: 12px;
+    display: block;
+  }
+
+  h1.studio-logo {
+    width:226px;
+    height:78px;
+    display:block;
+    padding:0;
+    white-space: nowrap;
+    text-indent: -10000px;
+    font-size:0px;
+    background: url({@docRoot}images/tools/studio-logo.png);
+    background-image: -webkit-image-set(url({@docRoot}images/tools/studio-logo.png) 1x, url({@docRoot}images/tools/studio-logo_2x.png) 2x);
+    background-size: 226px 78px;
+  }
+
+</style>
+
+
+
+
+
+<div style="position:relative;">
+
+
+<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
+<div class="col-13" style="margin:0;">&nbsp;</div><!-- provides top margin for content -->
+
+<h1 id="tos-header" style="margin-top:0">Загрузка</h1>
+
+<p class="sdk-terms-intro">Прежде чем устанавливать Android Studio или отдельный пакет инструментов SDK,
+примите указанные ниже положения и условия.</p>
+
+<div class="sdk-terms" onfocus="this.blur()">
+<h2 class="norule">Положения и условия</h2>
+Данный документ представляет собой Лицензионное соглашение на использование набора средств разработки программного обеспечения Android
+
+
+<h3>1. Introduction</h3>
+1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
+
+1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
+
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+
+
+<h3>2. Accepting this License Agreement</h3>
+2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
+
+2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
+
+2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
+
+2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
+
+
+<h3>3. SDK License from Google</h3>
+3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
+
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
+
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+
+3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+
+3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
+
+3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
+
+3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+
+3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
+
+
+<h3>4. Use of the SDK by You</h3>
+4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
+
+4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
+
+4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
+
+4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
+
+4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
+
+4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
+
+
+<h3>5. Your Developer Credentials</h3>
+5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
+
+
+<h3>6. Privacy and Information</h3>
+6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
+
+6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
+
+
+<h3>7. Third Party Applications</h3>
+7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
+
+7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
+
+7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
+
+
+<h3>8. Using Android APIs</h3>
+8.1 Google Data APIs
+
+8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
+
+8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
+
+
+<h3>9. Terminating this License Agreement</h3>
+9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
+
+9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
+
+9.3 Google may at any time, terminate the License Agreement with you if:
+(A) you have breached any provision of the License Agreement; or
+(B) Google is required to do so by law; or
+(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
+(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
+
+9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
+
+
+<h3>10. DISCLAIMER OF WARRANTIES</h3>
+10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+
+10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
+
+10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+
+
+<h3>11. LIMITATION OF LIABILITY</h3>
+11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
+
+<h3>12. Indemnification</h3>
+12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
+
+
+<h3>13. Changes to the License Agreement</h3>
+13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
+
+
+<h3>14. General Legal Terms</h3>
+14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
+
+14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
+
+14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
+
+14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
+
+14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
+
+14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
+
+14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+
+<em>November 20, 2015</em>
+</div>
+
+
+
+
+
+<div id="next-steps" style="display:none;position:absolute;width:inherit">
+  <p>Еще буквально несколько шагов, — и вы сможете приступить к разработке приложений для Android!</p>
+  <p>Через некоторое время вы будете перенаправлены на страницу
+<a id="next-link" href="{@docRoot}sdk/installing/index.html">установки Android SDK</a>.</p>
+
+</div><!-- end next-steps -->
+
+
+
+<div id="sdk-terms-form">
+<p>
+<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+<label id="agreeLabel" for="agree">Я прочитал(а) и принимаю изложенные выше положения и условия</label>
+</p>
+<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+</div>
+
+
+</div><!-- end TOS -->
+
+
+
+
+
+
+<div id="landing">
+
+<div class="col-13">&nbsp;</div><!-- provides top margin for content -->
+
+<img src="{@docRoot}images/tools/studio-hero.png" srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x" width="760" height="400"/>
+
+<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
+
+<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>
+
+<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
+width: 400px;text-align: center;">Официальная среда разработки Android</p>
+
+<ul style="font-size:12px;line-height:19px;">
+<li>Среда разработки Android Studio</li>
+<li>Инструменты Android SDK</li>
+<li>Платформа Android 6.0 (Marshmallow)</li>
+<li>Системный образ Android 6.0 с API Google для эмулятора</li>
+</ul>
+
+<a class="online landing-button green download-bundle-button"
+href="#Other" >Download Android Studio<br/><span class='small'></span></a>
+
+<!-- this appears when viewing the offline docs -->
+<p class="offline">
+Чтобы загрузить Android Studio или отдельные инструменты SDK, посетите веб-сайт <a href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
+</p>
+</div>
+
+<ul>
+  <li><a href="#Requirements">Требования к системе</a></li>
+  <li><a href="#Other">Другие варианты загрузки</a></li>
+  <li><a href="{@docRoot}sdk/installing/migrate.html">Переход на Android Studio</a></li>
+  <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform" target="_blank">Опрос</a></li>
+</ul>
+
+</div>
+
+
+
+
+<h2 class="feature norule" >Интеллектуальный редактор программного кода</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-code.png" srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>В основе Android Studio лежит интеллектуальный редактор исходного кода, предлагающий такие возможности, как расширенное
+ автозавершение кода, его реструктуризация и анализ.</p>
+  <p>Этот редактор поможет вам повысить эффективность разработки приложений для Android.</p>
+</div>
+
+
+
+
+
+<h2 class="feature norule">Шаблоны программного кода и интеграция с GitHub</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-import.png" srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Новые мастеры создания проектов в еще большей степени упрощают работу с новыми проектами.</p>
+
+  <p>Создавая новый проект, используйте шаблоны программного кода для таких общих фрагментов, как элементы для навигации по приложению и представления,
+а также импортируйте примеры кода Google прямо из GitHub.</p>
+</div>
+
+
+
+
+<h2 class="feature norule">Разработка приложений с поддержкой экранов разного размера</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-screens.png" srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Создавайте приложения для смартфонов и планшетов под управлением Android, для Android Wear
+, Android TV, Android Auto и даже Google Glass.</p>
+  <p>Благодаря новому представлению Android Project и поддержке модулей в Android Studio вы можете с легкостью
+управлять своими проектами и ресурсами.
+</div>
+
+
+
+
+<h2 class="feature norule">Виртуальные устройства на любой вкус и цвет</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-avds.png" srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>В состав Android Studio входит оптимизированный эмулятор.</p>
+  <p>Обновленный и оптимизированный диспетчер виртуальных устройств порадует вас широким набором
+предварительно настроенных профилей устройств Android.</p>
+</div>
+
+
+
+
+<h2 class="feature norule">
+Эволюция сборок Android благодаря Gradle</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-gradle.png" srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Создавайте несколько APK для ваших приложений с различными функциональными возможностями — в рамках одного и того же проекта.</p>
+  <p>Управляйте зависимостями между приложениями с помощью Maven.</p>
+  <p>Создавайте APK в Android Studio или прямо в командной строке.</p>
+</div>
+
+
+
+
+<h2 class="feature norule">Подробнее об Android Studio</h2>
+<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
+
+<a class="online landing-button green download-bundle-button" style="margin:0 0 40px 60px;float:right" href="">Download</a>
+
+  <ul>
+  <li>Создано на основе IntelliJ IDEA Community Edition, популярной среды разработки Java от JetBrains.</li>
+  <li>Гибкая система сборки на основе Gradle.</li>
+  <li>Различные варианты сборки и методы создания файлов APK.</li>
+  <li>Расширенная поддержка шаблонов для служб Google и устройств различных типов.</li>
+  <li>Функциональный редактор макетов с поддержкой редактирования тем оформления.</li>
+  <li>Инструментарий lint для решения проблем с производительностью, удобством использования, совместимостью версий и т. д.</li>
+  <li>ProGuard и возможности подписи приложений.</li>
+  <li>Встроенная поддержка Google Cloud Platform, обеспечивающая удобство интеграции со службами Google Cloud
+ Messaging и App Engine.</li>
+  </ul>
+
+<p style="margin:0">
+Подробные сведения о возможностях Android Studio
+изложены в руководстве <a href="{@docRoot}tools/studio/index.html">Android Studio Basics</a>.</p>
+</div>
+
+
+<p>Если вы используете Eclipse с ADT, вам следует знать, что Android Studio теперь является официальной средой разработки для
+Android, поэтому переходите на Android Studio, чтобы всегда иметь под рукой новейшие
+инструменты разработки приложений. Сведения о том, как перенести свои проекты,
+приведены в документе <a href="{@docRoot}sdk/installing/migrate.html">Переход на Android
+Studio</a>.</p>
+
+
+
+
+
+
+
+<h2 id="Requirements">Требования к системе</h2>
+
+<h3>Windows</h3>
+
+<ul>
+<li>Microsoft&reg; Windows&reg; 8/7/Vista/2003 (32- или 64-разрядная версия)</li>
+<li>ОЗУ не менее 2 ГБ (рекомендуется 4 ГБ)</li>
+<li>400 МБ свободного места на жестком диске</li>
+<li>Не менее 1 ГБ для Android SDK, системных образов эмулятора и кэшированных файлов</li>
+<li>Экран с разрешением не менее 1280 x 800 точек</li>
+<li>Java Development Kit (JDK) 7 </li>
+<li>Дополнительно для эмулятора с ускорителем: Процессор Intel® с поддержкой Intel® VT-x, Intel® EM64T
+(Intel® 64) и функцией XD-Bit</li>
+</ul>
+
+
+<h3>Mac OS X</h3>
+
+<ul>
+<li>Mac&reg; OS X&reg; 10.8.5 или более поздней версии вплоть до 10.9 (Mavericks)</li>
+<li>ОЗУ не менее 2 ГБ (рекомендуется 4 ГБ)</li>
+<li>400 МБ свободного места на жестком диске</li>
+<li>Не менее 1 ГБ для Android SDK, системных образов эмулятора и кэшированных файлов</li>
+<li>Экран с разрешением не менее 1280 x 800 точек</li>
+<li>Java Runtime Environment (JRE) 6</li>
+<li>Java Development Kit (JDK) 7</li>
+<li>Дополнительно для эмулятора с ускорителем: Процессор Intel® с поддержкой Intel® VT-x, Intel® EM64T
+(Intel® 64) и функцией XD-Bit</li>
+</ul>
+
+<p>В Mac OS для оптимизации отображения шрифтов Android Studio рекомендуется запускать с
+Java Runtime Environment (JRE) 6. Впоследствии проекты можно настроить на использование Java Development Kit (JDK) 6 или JDK 7.</p>
+
+
+
+<h3>Linux</h3>
+
+<ul>
+<li>Рабочий стол GNOME или KDE</li>
+<li>Библиотека GNU C (glibc) 2.15 или более поздней версии</li>
+<li>ОЗУ не менее 2 ГБ (рекомендуется 4 ГБ)</li>
+<li>400 МБ свободного места на жестком диске</li>
+<li>Не менее 1 ГБ для Android SDK, системных образов эмулятора и кэшированных файлов</li>
+<li>Экран с разрешением не менее 1280 x 800 точек</li>
+<li>Oracle&reg; Java Development Kit (JDK) 7 </li>
+</ul>
+<p>Работа Android Studio протестирована в ОС Ubuntu&reg;  14.04, Trusty Tahr (64-разрядная версия с поддержкой запуска
+32-разрядных приложений).</p>
+
+
+
+
+<h2 id="Other" style="clear:left">Другие варианты загрузки</h2>
+
+<!-- alternative SDK options follows -->
diff --git a/docs/html-intl/intl/ru/sdk/installing/adding-packages.jd b/docs/html-intl/intl/ru/sdk/installing/adding-packages.jd
new file mode 100644
index 0000000..19d1edd2
--- /dev/null
+++ b/docs/html-intl/intl/ru/sdk/installing/adding-packages.jd
@@ -0,0 +1,226 @@
+page.title=Добавление пакетов SDK
+
+page.tags=менеджер sdk
+
+@jd:body
+
+<style>
+ol.large {
+  margin-left:0;
+}
+ol.large > li {
+  list-style-position: inside;
+  list-style-type:none;
+  margin:30px 0 0 0;
+  padding:30px 20px;
+  background:#eee;
+}
+ol.large > li:nth-child(odd) {
+}
+ol.large > li:before {
+  display:inline;
+  left:-40px;
+  float:left;
+  width:20px;
+  font-size:20px;
+  line-height:20px;
+}
+ol.large > li > h2 {
+  font-size:20px;
+  line-height:20px;
+  padding:0 0 0 20px;
+  margin:0 0 20px 0;
+  display:inline;
+  font-weight:normal;
+}
+ol.large > li:nth-child(1):before {
+  content:"1. ";
+}
+ol.large > li:nth-child(2):before {
+  content:"2. ";
+}
+ol.large > li:nth-child(3):before {
+  content:"3. ";
+}
+ol.large > li:nth-child(4):before {
+  content:"4. ";
+}
+ol.large > li:nth-child(5):before {
+  content:"5. ";
+}
+ol.large > li:nth-child(6):before {
+  content:"6. ";
+}
+</style>
+
+
+<p>
+По умолчанию SDK Android включает в себя не все инструменты, которые необходимы для того, чтобы приступить к разработке приложений.
+Инструменты, платформы и другие компоненты представлены в Android SDK в виде отдельных пакетов, которые при
+необходимости можно загрузить с помощью
+<a href="{@docRoot}tools/help/sdk-manager.html">менеджера SDK Android</a>.
+Поэтому, прежде чем приступить к работе, в пакет SDK Android необходимо добавить некоторые дополнительные пакеты.</p>
+
+<p>Для добавления пакетов необходимо запустить менеджер SDK. Существует несколько способов запуска менеджера.</p>
+<ul>
+  <li>В Android Studio щелкните элемент <strong>SDK Manager</strong>
+<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:17px" /> на панели инструментов.</li>
+  <li>Для тех, кто не пользуется Android Studio:
+    <ul>
+      <li>Windows: Дважды щелкните файл <code>SDK Manager.exe</code>, который находится в корневом каталоге пакета Android
+SDK.</li>
+      <li>Mac/Linux: Откройте окно терминала и перейдите в каталог <code>tools/</code> пакета Android
+SDK, после чего выполните команду <code>android sdk</code>.</li>
+    </ul>
+  </li>
+</ul>
+
+<p>При первом запуске менеджера SDK по умолчанию
+выбраны всего несколько пакетов. Оставьте выбор по умолчанию, однако убедитесь в том, что в них имеется все необходимое
+для начала работы. Для этого выполните указанные ниже действия.</p>
+
+
+<ol class="large">
+<li>
+  <h2 id="GetTools" class="norule">Загрузите актуальные инструменты SDK</h2>
+
+<img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
+
+  <p>Во время установки SDK Android
+необходимо как минимум загрузить актуальные инструменты и платформу Android.</p>
+  <ol>
+   <li>Откройте каталог Tools и выберите следующее:
+     <ul>
+       <li><strong>Инструменты Android SDK</strong>;</li>
+       <li><strong>Инструменты платформы Android SDK</strong>;</li>
+       <li><strong>Инструменты сборки Android SDK</strong> (последнюю версию).</li>
+     </ul>
+   </li>
+   <li>Откройте первую папку Android X.X (последней версии) и выберите следующее:
+     <ul>
+      <li><strong>Платформа SDK</strong></li>
+      <li>системный образ для эмулятора, например <br>
+      <strong>ARM EABI v7a System Image</strong>.</li>
+     </ul>
+   </li>
+  </ol>
+</li>
+
+<li>
+  <h2 id="GetSupportLib" class="norule">Загрузите вспомогательную библиотеку для дополнительных API-интерфейсов</h2>
+
+  <div class="sidebox">
+    <p>Вспомогательная библиотека требуется для следующих ОС:</p>
+    <ul>
+      <li><a href="{@docRoot}wear/index.html">Android Wear</a>;</li>
+      <li><a href="{@docRoot}tv/index.html">Android TV</a>;</li>
+      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a>.</li>
+    </ul>
+
+    <p>В ней также представлены следующие популярные API-интерфейсы:</p>
+    <ul>
+      <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">панель
+навигации</a>;</li>
+      <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">пролистывание представлений</a>;</li>
+      <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">строка действий с обратной
+совместимостью</a>.</li>
+    </ul>
+  </div>
+
+  <p>Во <a href="{@docRoot}tools/support-library/features.html">вспомогательной библиотеке Android</a>
+представлен широкий набор API-интерфейсов, которые совместимы с большинством версий ОС Android.</p>
+
+  <p>Откройте каталог <strong>Extras (Дополнения)</strong> и выберите следующее:</p>
+     <ul>
+       <li><strong>Android Support Repository (Репозиторий вспомогательных библиотек Android)</strong>;</li>
+       <li><strong>Вспомогательная библиотека Android</strong></li>
+     </ul>
+
+  <p>&nbsp;</p>
+  <p>&nbsp;</p>
+
+</li>
+
+
+<li>
+  <h2 id="GetGoogle" class="norule">Загрузите службы Google Play, чтобы получить доступ к еще большему количеству API-интерфейсов</h2>
+
+  <div class="sidebox">
+
+    <p>API-интерфейсы служб Google Play предлагают различные возможности и службы для ваших приложений Android,
+включая следующие:</p>
+    <ul>
+      <li><a href="{@docRoot}google/play-services/plus.html">аутентификация пользователей</a>;</li>
+      <li><a href="{@docRoot}google/play-services/maps.html">Google Карты</a>;</li>
+      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a>.</li>
+      <li><a href="{@docRoot}google/play-services/games.html">достижения и списки
+лидеров в играх</a>;</li>
+      <li><a href="{@docRoot}google/play-services/index.html">а также множество других возможностей</a>.</li>
+    </ul>
+  </div>
+
+  <p>Для разработки приложений с помощью API-интерфейсов Google вам потребуется пакет служб Google Play.</p>
+  <p>Откройте каталог <strong>Extras (Дополнения)</strong> и выберите следующее:</p>
+     <ul>
+       <li><strong>Google Repository (Репозиторий Google)</strong>;</li>
+       <li><strong>Google Play services (службы Google Play)</strong>.</li>
+     </ul>
+
+  <p class="note"><strong>Примечание.</strong> API-интерфейсы служб Google Play доступны не на всех устройствах
+Android, однако предлагаются на всех устройствах с доступом к магазину Google Play. Для использования
+этих API-интерфейсов в эмуляторе Android необходимо также установить системный образ <strong>API-интерфейсов Google</strong>,
+который находится в менеджере SDK в папке актуальной версии Android X.X.</p>
+</li>
+
+
+<li>
+  <h2 id="Install" class="norule">Установите пакеты</h2>
+  <p>После выбора всех необходимых пакетов можно продолжить установку.</p>
+  <ol>
+   <li>Нажмите кнопку <strong>Install X packages</strong>.</li>
+   <li>В появившемся окне дважды щелкните имя каждого пакета, находящегося в области слева,
+чтобы принять условия лицензии для каждого из них.</li>
+   <li>Нажмите кнопку <strong>Install</strong>.</li>
+  </ol>
+  <p>В нижней части окна менеджера SDK находится индикатор загрузки.
+  <strong>Не закрывайте менеджер SDK</strong>, поскольку это приведет к отмене процесса загрузки.</p>
+</li>
+
+<li>
+  <h2 id="Build" class="norule">Приступайте к созданию приложений</h2>
+
+<p>После загрузки необходимых пакетов в SDK Android вы можете приступать к созданию приложений для
+Android. По мере выхода новых инструментов и других API-интерфейсов просто запустите менеджер SDK
+и загрузите новые пакеты.</p>
+
+<p>Вот некоторые варианты того, как можно приступить к работе:</p>
+
+<div class="cols" style="padding:10px 0">
+<div class="col-4">
+<h3>Для новичков</h3>
+<p>Если вы делаете только первые шаги в разработке приложений Android, рекомендуем ознакомиться с основами приложений Android и обратиться к
+руководству <strong><a href="{@docRoot}training/basics/firstapp/index.html">по созданию своего первого приложения</a></strong>.</p>
+
+</div>
+<div class="col-4 box">
+<h3>Создание приложений для носимых устройств</h3>
+<p>Если вы готовы приступить к созданию приложений для носимых устройств Android, ознакомьтесь с руководством по
+<strong><a href="{@docRoot}wear/preview/start.html">созданию приложений для ОС Android Wear</a></strong>.</p>
+
+</div>
+<div class="col-4 box">
+<h3>Использование API-интерфейсов Google</h3>
+<p>Чтобы начать работу с API-интерфейсами Google, такими как Карты или
+службы Google Play, рекомендуем обратиться к руководству по
+<strong><a href="{@docRoot}google/play-services/setup.html">настройке служб Google
+Play</a></strong>.</p>
+
+</div>
+</div><!-- end cols -->
+
+
+</li>
+
+</ol>
+
+
diff --git a/docs/html-intl/intl/ru/training/material/animations.jd b/docs/html-intl/intl/ru/training/material/animations.jd
new file mode 100644
index 0000000..9808a9f
--- /dev/null
+++ b/docs/html-intl/intl/ru/training/material/animations.jd
@@ -0,0 +1,550 @@
+page.title=Определение настраиваемой анимации
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Содержание этого урока</h2>
+<ol>
+  <li><a href="#Touch">Настройка реакции на касание</a></li>
+  <li><a href="#Reveal">Применение эффекта появления</a></li>
+  <li><a href="#Transitions">Настройка переходов</a></li>
+  <li><a href="#ViewState">Анимация изменений состояния представления</a></li>
+  <li><a href="#AnimVector">Анимация векторных элементов</a></li>
+</ol>
+<h2>См. также</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Спецификация Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design в Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Благодаря анимациям в Material Design пользователи получают отклик на выполняемые
+действия. Кроме того, анимации обеспечивают зрительную связь при взаимодействии с приложением. Тема Material Design содержит ряд анимаций
+по умолчанию для кнопок и переходов, а в Android 5.0 (уровень API 21) и более поздних версиях можно настраивать эти анимации
+и создавать новые:</p>
+
+<ul>
+<li>реакция на касание;</li>
+<li>круговое появление;</li>
+<li>переходы;</li>
+<li>перемещение по кривой;</li>
+<li>изменение состояний представления.</li>
+</ul>
+
+
+<h2 id="Touch">Настройка реакции на касание</h2>
+
+<p>Реакция на касание в Material Design обеспечивает моментальное визуальное подтверждение взаимодействия пользователя с элементами интерфейса в точке касания.
+ В стандартной анимации
+для реакции на нажатие кнопок используется новый класс {@link android.graphics.drawable.RippleDrawable}, обеспечивающий переход между разными состояниями с созданием эффекта ряби.
+</p>
+
+<p>В большинстве случаев эту возможность следует применять в XML-файле представления, указав фон представления следующим образом:
+</p>
+
+<ul>
+<li><code>?android:attr/selectableItemBackground</code> для ограниченной области ряби;</li>
+<li><code>?android:attr/selectableItemBackgroundBorderless</code> для ряби, распространяемой за границы представления.
+ При отрисовке она будет ограничиваться ближайшим родительским элементом представления со значением фона, отличным от null.
+</li>
+</ul>
+
+<p class="note"><strong>Примечание.</strong> <code>selectableItemBackgroundBorderless</code> — это новый атрибут, представленный в уровне API 21.
+</p>
+
+
+<p>Также можно определить {@link android.graphics.drawable.RippleDrawable}
+ в качестве XML-ресурса с помощью элемента <code>ripple</code>.</p>
+
+<p>Можно назначить цвет для объектов {@link android.graphics.drawable.RippleDrawable}. Чтобы
+изменить стандартный цвет отклика на касание, воспользуйтесь атрибутом темы <code>android:colorControlHighlight</code>
+.</p>
+
+<p>Дополнительные сведения представлены в справке по API для класса {@link
+android.graphics.drawable.RippleDrawable}.</p>
+
+
+<h2 id="Reveal">Применение эффекта появления</h2>
+
+<p>Анимация эффекта появления обеспечивает зрительную связь с действиями пользователя, когда отображается или скрывается группа элементов интерфейса.
+ С помощью метода {@link android.view.ViewAnimationUtils#createCircularReveal
+ViewAnimationUtils.createCircularReveal()} можно анимировать ограничивающий круг, чтобы отобразить или скрыть с экрана представление.
+</p>
+
+<p>Как отобразить ранее скрытое представление с помощью этого эффекта:</p>
+
+<pre>
+// previously invisible view
+View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the final radius for the clipping circle
+int finalRadius = Math.max(myView.getWidth(), myView.getHeight());
+
+// create the animator for this view (the start radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);
+
+// make the view visible and start the animation
+myView.setVisibility(View.VISIBLE);
+anim.start();
+</pre>
+
+<p>Как скрыть ранее отображавшееся представление с помощью этого эффекта:</p>
+
+<pre>
+// previously visible view
+final View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the initial radius for the clipping circle
+int initialRadius = myView.getWidth();
+
+// create the animation (the final radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0);
+
+// make the view invisible when the animation is done
+anim.addListener(new AnimatorListenerAdapter() {
+    &#64;Override
+    public void onAnimationEnd(Animator animation) {
+        super.onAnimationEnd(animation);
+        myView.setVisibility(View.INVISIBLE);
+    }
+});
+
+// start the animation
+anim.start();
+</pre>
+
+
+<h2 id="Transitions">Настройка переходов</h2>
+
+<!-- shared transition video -->
+<div style="width:290px;margin-left:35px;float:right">
+  <div class="framed-nexus5-port-span-5">
+  <video class="play-on-hover" autoplay="">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.mp4">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.webm">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.ogv">
+  </video>
+  </div>
+  <div style="font-size:10pt;margin-left:20px;margin-bottom:30px">
+    <p class="img-caption" style="margin-top:3px;margin-bottom:10px"><strong>Рисунок 1.</strong> Переход с общими элементами.
+</p>
+    <em>Для воспроизведения фильма нажмите экран устройства</em>
+  </div>
+</div>
+
+<p>Переходы в приложениях Material Design обеспечивают зрительные связи между различными состояниями путем движения элементов и преобразований между общими элементами.
+ Можно выбрать настраиваемые анимации для начальных и конечных переходов, а также для переходов общих элементов между операциями.
+</p>
+
+<ul>
+<li><strong>Начальный</strong> переход определяет порядок появления на экране представлений в операции.
+ Например, в начальном переходе <em>explode</em> представления появляются на экране извне и перемещаются к центру экрана.
+</li>
+
+<li><strong>Конечный</strong> переход определяет порядок исчезновения с экрана представлений в операции. Например, в конечном переходе <em>explode</em> представления исчезают
+с экрана в направлении из центра к краям.
+</li>
+
+<li>Переход <strong>общих элементов</strong> определяет порядок перехода между операциями представлений, используемых в обеих операциях.
+ Например, если в двух
+операциях используется одно и то же изображение, но в разных позициях и с разными размерами, в случае применения перехода общего элемента <em>changeImageTransform</em> выполняется плавное перемещение и масштабирование изображения между этими операциями.
+</li>
+</ul>
+
+<p>В Android 5.0 (уровень API 21) поддерживаются следующие начальные и конечные переходы:</p>
+
+<ul>
+<li><em>explode</em> — перемещение представлений в центр экрана или из центра;</li>
+<li><em>slide</em> — перемещение представлений к одному из краев экрана или от него;</li>
+<li><em>fade</em> — отображение или скрытие представления на экране путем изменения его прозрачности.</li>
+</ul>
+
+<p>Любой переход, являющийся наследованием класса {@link android.transition.Visibility}, поддерживается как начальный или конечный переход.
+ Дополнительные сведения представлены в справке по API для класса 
+{@link android.transition.Transition}.</p>
+
+<p>В Android 5.0 (уровень API 21) также поддерживаются следующие переходы общих элементов:</p>
+
+<ul>
+<li><em>changeBounds</em> — анимация изменений границ макетов целевых представлений;</li>
+<li><em>changeClipBounds</em> — анимация изменений границ обрезки целевых представлений;</li>
+<li><em>changeTransform</em> — анимация изменений параметров масштабирования и поворота целевых представлений;</li>
+<li><em>changeImageTransform</em> — анимация изменений размеров и параметров масштабирования целевых изображений.</li>
+</ul>
+
+<p>Если активировать переходы в приложении, то между начальной и конечной операциями активируется стандартный переход методом плавной замены.
+</p>
+
+<img src="{@docRoot}training/material/images/SceneTransition.png" alt="" width="600" height="405" style="margin-top:20px" />
+<p class="img-caption">
+  <strong>Рисунок 2.</strong> Переход с одним общим элементом.
+</p>
+
+<h3>Определение настраиваемых переходов</h3>
+
+<p>Сначала необходимо активировать переходы содержимого окна с помощью атрибута <code>android:windowContentTransitions</code>
+при определении стиля, наследуемого из темы Material Design. В определении стиля можно указать начальный и конечный переходы, а также переходы общих элементов:
+</p>
+
+<pre>
+&lt;style name="BaseAppTheme" parent="android:Theme.Material">
+  &lt;!-- enable window content transitions -->
+  &lt;item name="android:windowContentTransitions">true&lt;/item>
+
+  &lt;!-- specify enter and exit transitions -->
+  &lt;item name="android:windowEnterTransition">@transition/explode&lt;/item>
+  &lt;item name="android:windowExitTransition">@transition/explode&lt;/item>
+
+  &lt;!-- specify shared element transitions -->
+  &lt;item name="android:windowSharedElementEnterTransition">
+    &#64;transition/change_image_transform&lt;/item>
+  &lt;item name="android:windowSharedElementExitTransition">
+    &#64;transition/change_image_transform&lt;/item>
+&lt;/style>
+</pre>
+
+<p>Переход <code>change_image_transform</code> в этом примере задается следующим образом:</p>
+
+<pre>
+&lt;!-- res/transition/change_image_transform.xml -->
+&lt;!-- (see also Shared Transitions below) -->
+&lt;transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;changeImageTransform/>
+&lt;/transitionSet>
+</pre>
+
+<p>Элемент <code>changeImageTransform</code> соответствует классу
+{@link android.transition.ChangeImageTransform}. Дополнительные сведения представлены в справке по API для {@link android.transition.Transition}.
+</p>
+
+<p>Чтобы активировать в своем коде переходы содержимого окна, вызовите метод 
+{@link android.view.Window#requestFeature Window.requestFeature()}:</p>
+
+<pre>
+// inside your activity (if you did not enable transitions in your theme)
+getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+
+// set an exit transition
+getWindow().setExitTransition(new Explode());
+</pre>
+
+<p>Чтобы задать переходы в своем коде, вызовите следующие методы с использованием объекта {@link
+android.transition.Transition}:</p>
+
+<ul>
+  <li>{@link android.view.Window#setEnterTransition Window.setEnterTransition()};</li>
+  <li>{@link android.view.Window#setExitTransition Window.setExitTransition()};</li>
+  <li>{@link android.view.Window#setSharedElementEnterTransition
+      Window.setSharedElementEnterTransition()};</li>
+  <li>{@link android.view.Window#setSharedElementExitTransition
+      Window.setSharedElementExitTransition()}.</li>
+</ul>
+
+<p>Методы {@link android.view.Window#setExitTransition setExitTransition()} и {@link
+android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} задают конечный переход для вызывающей операции.
+ Методы {@link android.view.Window#setEnterTransition
+setEnterTransition()} и {@link android.view.Window#setSharedElementEnterTransition
+setSharedElementEnterTransition()} задают начальный переход для вызываемой операции.</p>
+
+<p>Чтобы в полной мере реализовать возможности перехода, необходимо активировать переходы содержимого окна как в вызывающей, так и в вызываемой операции.
+ В противном случае вызывающая операция запустит конечный переход, однако будет выполнен переход окна (например, масштабирование или затемнение).
+</p>
+
+<p>Чтобы запустить начальный переход как можно раньше, используйте в вызываемой операции метод 
+{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}
+. Это позволит сделать начальные переходы более эффектными.</p>
+
+<h3>Запуск операции с помощью переходов</h3>
+
+<p>Если в приложении разрешены переходы и для операции задан конечный переход, переход активируется при запуске другой операции следующим образом:
+</p>
+
+<pre>
+startActivity(intent,
+              ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
+</pre>
+
+<p>Если для второй операции задан начальный переход, он также активируется при запуске операции.
+ Чтобы отключить переходы при запуске другой операции, укажите
+значение <code>null</code> для набора параметров.</p>
+
+<h3>Запуск операции с помощью общего элемента</h3>
+
+<p>Порядок анимации перехода на экране между двумя операциями с общим элементом</p>
+
+<ol>
+<li>Активируйте в своей теме переходы содержимого окна.</li>
+<li>В определении стиля укажите переходы общих элементов.</li>
+<li>Определите свой переход как XML-ресурс.</li>
+<li>Присвойте одинаковое имя общим элементам в обоих макетах, используя для этого атрибут 
+<code>android:transitionName</code>.</li>
+<li>Воспользуйтесь методом {@link android.app.ActivityOptions#makeSceneTransitionAnimation
+ActivityOptions.makeSceneTransitionAnimation()}.</li>
+</ol>
+
+<pre>
+// get the element that receives the click event
+final View imgContainerView = findViewById(R.id.img_container);
+
+// get the common element for the transition in this activity
+final View androidRobotView = findViewById(R.id.image_small);
+
+// define a click listener
+imgContainerView.setOnClickListener(new View.OnClickListener() {
+    &#64;Override
+    public void onClick(View view) {
+        Intent intent = new Intent(this, Activity2.class);
+        // create the transition animation - the images in the layouts
+        // of both activities are defined with android:transitionName="robot"
+        ActivityOptions options = ActivityOptions
+            .makeSceneTransitionAnimation(this, androidRobotView, "robot");
+        // start the new activity
+        startActivity(intent, options.toBundle());
+    }
+});
+</pre>
+
+<p>Для общих динамических представлений, создаваемых в коде, используйте метод
+{@link android.view.View#setTransitionName View.setTransitionName()} для определения одинакового имени элемента в обеих операциях.
+</p>
+
+<p>Чтобы выполнить анимацию обратного перехода по завершении второй операции, вызовите метод 
+{@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()}
+ вместо{@link android.app.Activity#finish Activity.finish()}.</p>
+
+<h3>Запуск операции с несколькими общими элементами</h3>
+
+<p>Чтобы создать анимацию перехода на экране между двумя операциями с несколькими общими
+элементами, определите общие элементы в обоих макетах с помощью атрибута <code>android:transitionName</code>
+ (или воспользуйтесь методом {@link android.view.View#setTransitionName View.setTransitionName()} в обеих
+операциях), а затем создайте объект {@link android.app.ActivityOptions}, как указано ниже.</p>
+
+<pre>
+ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
+        Pair.create(view1, "agreedName1"),
+        Pair.create(view2, "agreedName2"));
+</pre>
+
+
+<h2 id="CurvedMotion">Использование перемещения по кривой</h2>
+
+<p>При анимации в Material Design используются кривые для интерполяции по времени и создания схем перемещения в пространстве.
+ В Android 5.0 (уровень API 21) и более поздних версиях имеется возможность определить для анимаций настраиваемые кривые синхронизации и схемы перемещения по кривой.
+</p>
+
+<p>Класс {@link android.view.animation.PathInterpolator} — это новый интерполятор на
+основе кривой Безье или объекта {@link android.graphics.Path}. Данный интерполятор определяет перемещение по кривой в квадрате 1 x 1 с привязкой в точках (0,0) и (1,1), а также с контрольными точками, задаваемыми с помощью аргументов конструктора.
+
+ Также можно определить интерполятор траектории в качестве XML-ресурса:</p>
+
+<pre>
+&lt;pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:controlX1="0.4"
+    android:controlY1="0"
+    android:controlX2="1"
+    android:controlY2="1"/>
+</pre>
+
+<p>В системе имеются XML-ресурсы для трех основных кривых в спецификации Material Design:
+</p>
+
+<ul>
+  <li><code>&#64;interpolator/fast_out_linear_in.xml</code>;</li>
+  <li><code>&#64;interpolator/fast_out_slow_in.xml</code>;</li>
+  <li><code>&#64;interpolator/linear_out_slow_in.xml</code>.</li>
+</ul>
+
+<p>Можно передать объект {@link android.view.animation.PathInterpolator} в метод {@link
+android.animation.Animator#setInterpolator Animator.setInterpolator()}.</p>
+
+<p>Класс {@link android.animation.ObjectAnimator} имеет новые конструкторы, с помощью которых можно анимировать координаты вдоль траектории перемещения, используя для этого не менее двух свойств.
+ Например, следующий аниматор
+использует объект {@link android.graphics.Path} для анимации свойств представления по осям X и Y:</p>
+
+<pre>
+ObjectAnimator mAnimator;
+mAnimator = ObjectAnimator.ofFloat(view, View.X, View.Y, path);
+...
+mAnimator.start();
+</pre>
+
+
+<h2 id="ViewState">Анимация изменений состояния представления</h2>
+
+<p>С помощью класса {@link android.animation.StateListAnimator} можно определить аниматоры, которые запускаются при изменении состояния представления.
+ В следующем примере показан порядок определения {@link
+android.animation.StateListAnimator} в качестве XML-ресурса:</p>
+
+<pre>
+&lt;!-- animate the translationZ property of a view when pressed -->
+&lt;selector xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;item android:state_pressed="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="@android:integer/config_shortAnimTime"
+        android:valueTo="2dp"
+        android:valueType="floatType"/>
+        &lt;!-- you could have other objectAnimator elements
+             here for "x" and "y", or other properties -->
+    &lt;/set>
+  &lt;/item>
+  &lt;item android:state_enabled="true"
+    android:state_pressed="false"
+    android:state_focused="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="100"
+        android:valueTo="0"
+        android:valueType="floatType"/>
+    &lt;/set>
+  &lt;/item>
+&lt;/selector>
+</pre>
+
+<p>Чтобы присоединить к представлению настраиваемые анимации состояния представления, определите аниматор, используя элемент 
+<code>selector</code> в файле XML-ресурса (как в этом примере), а затем назначьте его своему представлению
+с помощью атрибута <code>android:stateListAnimator</code>. Чтобы в своем коде назначить представлению аниматор
+ списка состояний, используйте метод {@link android.animation.AnimatorInflater#loadStateListAnimator
+AnimationInflater.loadStateListAnimator()}, а затем назначьте аниматор своему представлению с помощью метода 
+{@link android.view.View#setStateListAnimator View.setStateListAnimator()}.</p>
+
+<p>Если ваша тема является расширением темы Material Design, по умолчанию у кнопок имеется возможность анимации по оси Z. Чтобы отключить
+такое поведение кнопок, задайте для атрибута <code>android:stateListAnimator</code> значение 
+<code>@null</code>.</p>
+
+<p>С помощью класса {@link android.graphics.drawable.AnimatedStateListDrawable} можно создавать элементы, которые служат для отображения анимации между изменениями состояния связанного представления.
+ В Android 5.0 в некоторых системных виджетах такая анимация используется по умолчанию.
+ В следующем примере показан порядок
+определения {@link android.graphics.drawable.AnimatedStateListDrawable} в качестве XML-ресурса:</p>
+
+<pre>
+&lt;!-- res/drawable/myanimstatedrawable.xml -->
+&lt;animated-selector
+    xmlns:android="http://schemas.android.com/apk/res/android">
+
+    &lt;!-- provide a different drawable for each state-->
+    &lt;item android:id="@+id/pressed" android:drawable="@drawable/drawableP"
+        android:state_pressed="true"/>
+    &lt;item android:id="@+id/focused" android:drawable="@drawable/drawableF"
+        android:state_focused="true"/>
+    &lt;item android:id="@id/default"
+        android:drawable="@drawable/drawableD"/>
+
+    &lt;!-- specify a transition -->
+    &lt;transition android:fromId="@+id/default" android:toId="@+id/pressed">
+        &lt;animation-list>
+            &lt;item android:duration="15" android:drawable="@drawable/dt1"/>
+            &lt;item android:duration="15" android:drawable="@drawable/dt2"/>
+            ...
+        &lt;/animation-list>
+    &lt;/transition>
+    ...
+&lt;/animated-selector>
+</pre>
+
+
+<h2 id="AnimVector">Анимация векторных элементов</h2>
+
+<p><a href="{@docRoot}training/material/drawables.html#VectorDrawables">Векторные элементы</a> можно масштабировать без ущерба четкости.
+ Класс {@link android.graphics.drawable.AnimatedVectorDrawable}
+позволяет анимировать свойства векторного элемента.</p>
+
+<p>Анимированные векторные элементы обычно определяются в трех XML-файлах:</p>
+
+<ul>
+<li>векторный элемент с элементом <code>&lt;vector&gt;</code> в
+<code>res/drawable/</code>;</li>
+<li>анимированный векторный элемент с элементом <code>&lt;animated-vector&gt;</code> в
+<code>res/drawable/</code>;</li>
+<li>один или несколько аниматоров для объектов с элементом <code>&lt;objectAnimator&gt;</code> в
+<code>res/anim/</code>.</li>
+</ul>
+
+<p>С помощью анимированных векторных элементов можно анимировать атрибуты элементов <code>&lt;group&gt;</code> и
+<code>&lt;path&gt;</code>. Элемент<code>&lt;group&gt;</code> определяет набор траекторий
+или подгрупп, а элемент <code>&lt;path&gt;</code> — траектории для прорисовки.</p>
+
+<p>При определении векторного элемента, который требуется анимировать, используйте атрибут <code>android:name</code>
+для назначения уникальных имен группам или траекториям, чтобы на них можно было сослаться в определениях аниматора.
+ Например:</p>
+
+<pre>
+&lt;!-- res/drawable/vectordrawable.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="64dp"
+    android:width="64dp"
+    android:viewportHeight="600"
+    android:viewportWidth="600">
+    &lt;group
+        <strong>android:name="rotationGroup"</strong>
+        android:pivotX="300.0"
+        android:pivotY="300.0"
+        android:rotation="45.0" >
+        &lt;path
+            <strong>android:name="v"</strong>
+            android:fillColor="#000000"
+            android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
+    &lt;/group>
+&lt;/vector>
+</pre>
+
+<p>Определение анимированного векторного элемента ссылается на группы и траектории в векторном элементе, используя их имена:
+</p>
+
+<pre>
+&lt;!-- res/drawable/animvectordrawable.xml -->
+&lt;animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+  android:drawable="@drawable/vectordrawable" >
+    &lt;target
+        android:name="rotationGroup"
+        android:animation="@anim/rotation" />
+    &lt;target
+        android:name="v"
+        android:animation="@anim/path_morph" />
+&lt;/animated-vector>
+</pre>
+
+<p>Определения анимации представляются объектами {@link android.animation.ObjectAnimator} или {@link
+android.animation.AnimatorSet}. Первый аниматор в этом примере поворачивает целевую группу на 360 градусов:
+</p>
+
+<pre>
+&lt;!-- res/anim/rotation.xml -->
+&lt;objectAnimator
+    android:duration="6000"
+    android:propertyName="rotation"
+    android:valueFrom="0"
+    android:valueTo="360" />
+</pre>
+
+<p>Второй аниматор в этом примере преобразует траекторию векторного элемента из одной формы в другую.
+ Для преобразования обе траектории должны быть совместимы: они должны содержать одинаковое количество команд, а также одинаковое количество параметров для каждой команды.
+</p>
+
+<pre>
+&lt;!-- res/anim/path_morph.xml -->
+&lt;set xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;objectAnimator
+        android:duration="3000"
+        android:propertyName="pathData"
+        android:valueFrom="M300,70 l 0,-70 70,70 0,0   -70,70z"
+        android:valueTo="M300,70 l 0,-70 70,0  0,140 -70,0 z"
+        android:valueType="pathType" />
+&lt;/set>
+</pre>
+
+<p>Дополнительные сведения представлены в справке по API для {@link
+android.graphics.drawable.AnimatedVectorDrawable}.</p>
diff --git a/docs/html-intl/intl/ru/training/material/compatibility.jd b/docs/html-intl/intl/ru/training/material/compatibility.jd
new file mode 100644
index 0000000..b7ca338
--- /dev/null
+++ b/docs/html-intl/intl/ru/training/material/compatibility.jd
@@ -0,0 +1,168 @@
+page.title=Обеспечение совместимости
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Содержание этого урока</h2>
+<ol>
+  <li><a href="#Theme">Определение альтернативных стилей</a></li>
+  <li><a href="#Layouts">Предоставление альтернативных макетов</a></li>
+  <li><a href="#SupportLib">Использование вспомогательной библиотеки</a></li>
+  <li><a href="#CheckVersion">Проверка версии системы</a></li>
+</ol>
+<h2>См. также</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Спецификация Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design в Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Некоторые возможности Material Design, такие как "материальные" темы и настраиваемые переходы между операциями,
+ доступны только в Android 5.0 (уровень API 21) и более поздних версиях. Однако приложения можно разработать таким образом,
+чтобы эти функции были доступны при запуске на устройствах, поддерживающих Material Design, сохранив при этом
+совместимость приложений с устройствами под управлением более ранних выпусков Android.</p>
+
+
+<h2 id="Theme">Определение альтернативных стилей</h2>
+
+<p>Приложение можно настроить так, чтобы тема Material Design использовалась при работе на поддерживающих эту технологию устройствах,
+а при запуске приложения на устройствах с более ранними версиями Android происходило переключение на старые варианты тем. Ниже описан порядок такой настройки.</p>
+
+<ol>
+<li>В файле
+<code>res/values/styles.xml</code> определите тему, наследующую более старой теме (например, Holo).</li>
+<li>В файле
+<code>res/values-v21/styles.xml</code> определите тему с таким же именем, наследующую теме Material Design.</li>
+<li>В файле манифеста укажите эту тему как тему приложения.</li>
+</ol>
+
+<p class="note"><strong>Примечание.</strong>
+Если в приложении используется тема Material Design, но отсутствует определенная описанным способом альтернативная тема,
+это приложение не будет запускаться на устройствах под управлением версий Android, предшествующих 5.0.
+</p>
+
+
+<h2 id="Layouts">Предоставление альтернативных макетов</h2>
+
+<p>Если в создаваемых согласно рекомендациям Material Design макетах отсутствуют новые
+атрибуты XML, представленные в Android 5.0 (уровень API 21),
+такие макеты поддерживаются в предыдущих версиях ОС Android. В противном случае необходимо предоставить альтернативные макеты. Можно также предоставить
+альтернативные макеты для настройки внешнего вида приложения в более ранних версиях Android.</p>
+
+<p>Создайте файлы макета для Android 5.0 (уровень API 21) в <code>res/layout-v21/</code>,
+а также файлы альтернативного макета для более ранних версий Android (в <code>res/layout/</code>).
+Например, <code>res/layout/my_activity.xml</code> — это альтернативный макет для
+<code>res/layout-v21/my_activity.xml</code>.</p>
+
+<p>Чтобы сделать код более компактным, определите стили в <code>res/values/</code>, измените
+ стили в <code>res/values-v21/</code> для новых API, а также используйте наследование стилей,
+ определив основные стили в <code>res/values/</code> и задав наследование из них в <code>res/values-v21/</code>.</p>
+
+
+<h2 id="SupportLib">Использование вспомогательной библиотеки</h2>
+
+<p><a href="{@docRoot}tools/support-library/features.html#v7">Вспомогательные библиотеки v7</a>
+r21 и более поздних версий включают следующие функции Material Design:</p>
+
+<ul>
+<li><a href="{@docRoot}training/material/theme.html">стили Material Design</a> для некоторых
+системных виджетов в случае применения одной из тем <code>Theme.AppCompat</code>;</li>
+<li><a href="{@docRoot}training/material/theme.html#ColorPalette">атрибуты цветовой палитры темы</a>
+в темах <code>Theme.AppCompat</code>;</li>
+<li>виджет {@link android.support.v7.widget.RecyclerView} для <a href="{@docRoot}training/material/lists-cards.html#RecyclerView">отображения коллекций
+данных</a>;</li>
+<li>виджет {@link android.support.v7.widget.CardView} для <a href="{@docRoot}training/material/lists-cards.html#CardView">создания карточек</a>;</li>
+<li>класс {@link android.support.v7.graphics.Palette} для <a href="{@docRoot}training/material/drawables.html#ColorExtract">извлечения главных цветов
+на изображениях</a>.</li>
+</ul>
+
+<h3>Системные виджеты</h3>
+
+<p>В темах <code>Theme.AppCompat</code> имеются стили Material Design для следующих виджетов:</p>
+
+<ul>
+  <li>{@link android.widget.EditText};</li>
+  <li>{@link android.widget.Spinner};</li>
+  <li>{@link android.widget.CheckBox};</li>
+  <li>{@link android.widget.RadioButton};</li>
+  <li>{@link android.support.v7.widget.SwitchCompat};</li>
+  <li>{@link android.widget.CheckedTextView}.</li>
+</ul>
+
+<h3>Цветовая палитра</h3>
+
+<p>Чтобы получить стили Material Design и настроить цветовую палитру с помощью вспомогательной библиотеки
+Android v7, примените одну из следующих тем <code>Theme.AppCompat</code>:</p>
+
+<pre>
+&lt;!-- extend one of the Theme.AppCompat themes -->
+&lt;style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
+    &lt;!-- customize the color palette -->
+    &lt;item name="colorPrimary">@color/material_blue_500&lt;/item>
+    &lt;item name="colorPrimaryDark">@color/material_blue_700&lt;/item>
+    &lt;item name="colorAccent">@color/material_green_A200&lt;/item>
+&lt;/style>
+</pre>
+
+<h3>Списки и карточки</h3>
+
+<p>Виджеты {@link android.support.v7.widget.RecyclerView} и {@link
+android.support.v7.widget.CardView} имеются в более ранних версиях Android. Они находятся во
+вспомогательной библиотеке Android v7, и для них существуют следующие ограничения.</p>
+<ul>
+<li>В виджете {@link android.support.v7.widget.CardView} применяется программная реализация тени
+с помощью дополнительного отступа.</li>
+<li>Виджет {@link android.support.v7.widget.CardView} не выполняет обрезку своих дочерних представлений,
+пересекающихся со скругленными углами.</li>
+</ul>
+
+
+<h3>Зависимости</h3>
+
+<p>Чтобы воспользоваться этими возможностями в версиях Android, предшествующих 5.0 (уровень API 21), включите в свой проект вспомогательную библиотеку
+Android v7 как <a href="{@docRoot}/sdk/installing/studio-build.html#dependencies">зависимость Gradle</a>:</p>
+
+<pre>
+dependencies {
+    compile 'com.android.support:appcompat-v7:21.0.+'
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
+
+
+<h2 id="CheckVersion">Проверка версии системы</h2>
+
+<p>Следующие функции доступны только в Android 5.0 (уровень API 21) и более поздних версиях:</p>
+
+<ul>
+<li>переходы;</li>
+<li>реакция на касание;</li>
+<li>анимации появления;</li>
+<li>анимации по траектории;</li>
+<li>векторные элементы;</li>
+<li>тонирование элементов дизайна.</li>
+</ul>
+
+<p>Чтобы обеспечить совместимость приложения с более ранними версиями Android, проверьте системный параметр {@link
+android.os.Build.VERSION#SDK_INT version} во время запуска, прежде чем вызвать API любой из этих
+функций:</p>
+
+<pre>
+// Check if we're running on Android 5.0 or higher
+if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+    // Call some material design APIs here
+} else {
+    // Implement this feature without material design
+}
+</pre>
+
+<p class="note"><strong>Примечание.</strong> Чтобы указать версии Android, поддерживаемые вашим приложением,
+установите атрибуты <code>android:minSdkVersion</code> и <code>android:targetSdkVersion</code>
+в файле манифеста. Чтобы использовать функции Material Design, которые имеются в Android 5.0, задайте
+для атрибута <code>android:targetSdkVersion</code> значение <code>21</code>. Дополнительные сведения см.
+ в <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">руководстве по API
+&lt;uses-sdk&gt;</a>.</p>
diff --git a/docs/html-intl/intl/ru/training/material/drawables.jd b/docs/html-intl/intl/ru/training/material/drawables.jd
new file mode 100644
index 0000000..2554f07
--- /dev/null
+++ b/docs/html-intl/intl/ru/training/material/drawables.jd
@@ -0,0 +1,126 @@
+page.title=Работа с элементами дизайна
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Содержание этого урока</h2>
+<ol>
+  <li><a href="#DrawableTint">Тонирование элементов дизайна</a></li>
+  <li><a href="#ColorExtract">Извлечение главных цветов на изображении</a></li>
+  <li><a href="#VectorDrawables">Создание векторных элементов</a></li>
+</ol>
+<h2>См. также</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Спецификация Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design в Android</a></li>
+</ul>
+</div>
+</div>
+
+<p>Указанные ниже возможности по работе с элементами дизайна позволяют реализовать в приложении элементы Material Design:</p>
+
+<ul>
+<li>тонирование элементов дизайна;</li>
+<li>извлечение главного цвета;</li>
+<li>создание векторных элементов.</li>
+</ul>
+
+<p>В этом уроке рассматривается порядок использования этих функций в приложении.</p>
+
+
+<h2 id="DrawableTint">Тонирование элементов дизайна</h2>
+
+<p>В Android 5.0 (уровень API 21) и более поздних версий можно тонировать растровые изображения и изображения в формате NinePatch, определенные как
+альфа-маски. Для тонирования можно применять как цветовые ресурсы, так и атрибуты темы, которые
+разрешаются в цветовые ресурсы (например, <code>?android:attr/colorPrimary</code>). Обычно такие ресурсы создаются
+только один раз, после чего они автоматически окрашиваются для соответствия цветам темы.</p>
+
+<p>Тонирование можно применить к объектам {@link android.graphics.drawable.BitmapDrawable} и {@link
+android.graphics.drawable.NinePatchDrawable} с помощью метода {@code setTint()}. Также можно
+задать цвет и способ тонирования в макетах, используя для этого атрибуты <code>android:tint</code> и 
+<code>android:tintMode</code>.</p>
+
+
+<h2 id="ColorExtract">Извлечение главных цветов на изображении</h2>
+
+<p>Во вспомогательной библиотеке Android r21 и более поздних версий содержится класс {@link
+android.support.v7.graphics.Palette},
+с помощью которого можно извлекать следующие главные цвета на изображении:</p>
+
+<ul>
+<li>насыщенные цвета;</li>
+<li>насыщенные темные цвета;</li>
+<li>насыщенные светлые цвета;</li>
+<li>приглушенные цвета;</li>
+<li>приглушенные темные цвета;</li>
+<li>приглушенные светлые цвета.</li>
+</ul>
+
+<p>Для извлечения этих цветов передайте объект {@link android.graphics.Bitmap} в статический метод
+{@link android.support.v7.graphics.Palette#generate Palette.generate()} в фоновом
+потоке, где загружаются изображения. Если невозможно использовать этот поток, вместо этого вызовите метод
+{@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} и укажите
+модуль прослушивания.</p>
+
+<p>Извлечь главные цвета на изображении можно также с помощью методов getter из класса
+<code>Palette</code>, таких как <code>Palette.getVibrantColor</code>.</p>
+
+<p>Чтобы использовать класс {@link android.support.v7.graphics.Palette} в своем проекте, добавьте в модуль своего приложения следующую
+<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">зависимость Gradle</a>:
+</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:palette-v7:21.0.0'
+}
+</pre>
+
+<p>Дополнительные сведения представлены в справке по API для класса {@link android.support.v7.graphics.Palette}
+.</p>
+
+
+<h2 id="VectorDrawables">Создание векторных элементов</h2>
+
+<!-- video box -->
+<a class="notice-developers-video" href="https://www.youtube.com/watch?v=wlFVIIstKmA" style="margin-top:18px">
+<div>
+    <h3>Видео</h3>
+    <p>Векторная графика в Android</p>
+</div>
+</a>
+
+<p>В Android 5.0 (уровень API 21) и более поздних версий имеется возможность определить векторные элементы, которые можно масштабировать без ущерба для четкости.
+ Для векторного изображения требуется лишь один файл ресурсов, тогда как для растровых изображений необходим отдельный файл ресурсов для каждой плотности экрана.
+ Чтобы создать векторное изображение, укажите детали формы в XML-элементе <code>&lt;vector&gt;</code>.
+</p>
+
+<p>В следующем примере создается векторное изображение в форме сердца.</p>
+
+<pre>
+&lt;!-- res/drawable/heart.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    &lt;!-- intrinsic size of the drawable -->
+    android:height="256dp"
+    android:width="256dp"
+    &lt;!-- size of the virtual canvas -->
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+
+  &lt;!-- draw a path -->
+  &lt;path android:fillColor="#8fff"
+      android:pathData="M20.5,9.5
+                        c-1.955,0,-3.83,1.268,-4.5,3
+                        c-0.67,-1.732,-2.547,-3,-4.5,-3
+                        C8.957,9.5,7,11.432,7,14
+                        c0,3.53,3.793,6.257,9,11.5
+                        c5.207,-5.242,9,-7.97,9,-11.5
+                        C25,11.432,23.043,9.5,20.5,9.5z" />
+&lt;/vector>
+</pre>
+
+<p>Векторные изображения представлены в Android как объекты {@link android.graphics.drawable.VectorDrawable}.
+ Дополнительные сведения о синтаксисе <code>pathData</code> см. в <a href="http://www.w3.org/TR/SVG11/paths.html#PathData">справке по траекториям SVG</a>. Дополнительные сведения
+об анимации свойств векторных элементов см. в разделе
+<a href="{@docRoot}training/material/animations.html#AnimVector">Анимация векторных элементов</a>.</p>
diff --git a/docs/html-intl/intl/ru/training/material/get-started.jd b/docs/html-intl/intl/ru/training/material/get-started.jd
new file mode 100644
index 0000000..476de7f
--- /dev/null
+++ b/docs/html-intl/intl/ru/training/material/get-started.jd
@@ -0,0 +1,171 @@
+page.title=Начало работы
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Содержание этого урока</h2>
+<ol>
+  <li><a href="#ApplyTheme">Применение темы Material Design</a></li>
+  <li><a href="#Layouts">Разработка макетов</a></li>
+  <li><a href="#Depth">Установка высоты представлений</a></li>
+  <li><a href="#ListsCards">Создание списков и карточек</a></li>
+  <li><a href="#Animations">Настройка анимации</a></li>
+</ol>
+<h2>См. также</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Спецификация Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design в Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Порядок создания приложения с элементами Material Design</p>
+
+<ol>
+  <li style="margin-bottom:10px">
+    Ознакомьтесь со <a href="http://www.google.com/design/spec">спецификацией Material Design</a>.</li>
+  <li style="margin-bottom:10px">
+    Примените <strong>тему Material Design</strong> к своему приложению.</li>
+  <li style="margin-bottom:10px">
+    Создайте <strong>макеты</strong> в соответствии с рекомендациями Material Design.</li>
+  <li style="margin-bottom:10px">
+    Установите <strong>высоту</strong> своих представлений для отбрасывания теней.</li>
+  <li style="margin-bottom:10px">
+    Используйте системные <strong>виджеты</strong> для списков и карточек.</li>
+  <li style="margin-bottom:10px">
+    Настройте <strong>анимацию</strong> в своем приложении.</li>
+</ol>
+
+<h3>Обеспечение обратной совместимости</h3>
+
+<p>В приложении можно реализовать множество функций Material Design и одновременно сохранить его совместимость с версиями Android, предшествующими версии 5.0.
+ Дополнительные сведения представлены на странице
+<a href="{@docRoot}training/material/compatibility.html">Обеспечение совместимости</a>.</p>
+
+<h3>Обновление приложения с добавлением элементов Material Design</h3>
+
+<p>Чтобы дополнить существующее приложение функциями и элементами Material Design, обновите макеты в соответствии с рекомендациями Material Design.
+ Также не забудьте добавить в приложение функции глубины, реакции на касание и анимации.
+</p>
+
+<h3>Создание новых приложений с элементами Material Design</h3>
+
+<p>При создании приложений с "материальными" функциями следуйте <a href="http://www.google.com/design/spec">рекомендациям Material Design</a>, которые позволят вам получить целостное представление о новых принципах дизайна.
+ При проектировании и разработке своего приложения следуйте инструкциям и используйте новые функциональные возможности платформы Android.
+</p>
+
+
+<h2 id="ApplyTheme">Применение темы Material Design</h2>
+
+<p>Чтобы применить тему Material Design в своем приложении, укажите стиль, который наследует от 
+<code>android:Theme.Material</code>:</p>
+
+<pre>
+&lt;!-- res/values/styles.xml -->
+&lt;resources>
+  &lt;!-- your theme inherits from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- theme customizations -->
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<p>В теме Material Design содержатся обновленные системные виджеты, для которых можно настраивать цветовую палитру, а также стандартные анимации для реакции на касания и переходы.
+ Дополнительные сведения представлены в разделе
+<a href="{@docRoot}training/material/theme.html">Использование темы Material Design</a>.</p>
+
+
+<h2 id="Layouts">Разработка макетов</h2>
+
+<p>Помимо применения и настройки темы Material Design, необходимо соответствие
+<a href="http://www.google.com/design/spec">рекомендациям Material Design</a> используемых макетов. При разработке макетов необходимо контролировать следующие элементы:
+</p>
+
+<ul>
+<li>сетки базовых линий;</li>
+<li>контуры;</li>
+<li>интервалы;</li>
+<li>размер целевой области касания;</li>
+<li>структура макета.</li>
+</ul>
+
+
+<h2 id="Depth">Определение высоты представлений</h2>
+
+<p>Представления могут отбрасывать тени, и значение высоты определяет размер тени и порядок ее прорисовки.
+ Чтобы установить высоту представления, используйте в макетах атрибут
+<code>android:elevation</code>:</p>
+
+<pre>
+&lt;TextView
+    android:id="&#64;+id/my_textview"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:text="&#64;string/next"
+    android:background="&#64;color/white"
+    android:elevation="5dp" />
+</pre>
+
+<p>С помощью нового свойства <code>translationZ</code> можно создавать анимации, которые отражают временные изменения в высоте представления.
+ Изменения высоты могут быть полезны при
+<a href="{@docRoot}training/material/animations.html#ViewState">реагировании на сенсорные
+жесты</a>.</p>
+
+<p>Дополнительные сведения представлены в разделе <a href="{@docRoot}training/material/shadows-clipping.html">Определение теней и обрезка представлений</a>.
+</p>
+
+
+<h2 id="ListsCards">Создание списков и карточек</h2>
+
+<p>{@link android.support.v7.widget.RecyclerView} представляет собой более гибкую версию {@link
+android.widget.ListView}. Она поддерживает различные типы макетов и способствует повышению производительности.
+{@link android.support.v7.widget.CardView} обеспечивает единообразное отображение фрагментов информации внутри карточек в разных приложениях.
+ В следующем примере показано, как включить
+{@link android.support.v7.widget.CardView} в макет:</p>
+
+<pre>
+&lt;android.support.v7.widget.CardView
+    android:id="&#64;+id/card_view"
+    android:layout_width="200dp"
+    android:layout_height="200dp"
+    card_view:cardCornerRadius="3dp">
+    ...
+&lt;/android.support.v7.widget.CardView>
+</pre>
+
+<p>Дополнительные сведения представлены в разделе <a href="{@docRoot}training/material/lists-cards.html">Создание списков и карточек</a>.
+</p>
+
+
+<h2 id="Animations">Настройка анимации</h2>
+
+<p>В состав Android 5.0 (уровень API 21) входят новые API для создания в приложении настраиваемой анимации.
+Например, можно разрешать переходы между операциями и задавать для операций конечный переход:
+</p>
+
+<pre>
+public class MyActivity extends Activity {
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // enable transitions
+        getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+        setContentView(R.layout.activity_my);
+    }
+
+    public void onSomeButtonClicked(View view) {
+        getWindow().setExitTransition(new Explode());
+        Intent intent = new Intent(this, MyOtherActivity.class);
+        startActivity(intent,
+                      ActivityOptions
+                          .makeSceneTransitionAnimation(this).toBundle());
+    }
+}
+</pre>
+
+<p>При запуске одной операции из другой активируется конечный переход.</p>
+
+<p>Подробные сведения о новых API для анимации см. в разделе <a href="{@docRoot}training/material/animations.html">Определение настраиваемой анимации</a>.</p>
diff --git a/docs/html-intl/intl/ru/training/material/index.jd b/docs/html-intl/intl/ru/training/material/index.jd
new file mode 100644
index 0000000..0b3f1c4
--- /dev/null
+++ b/docs/html-intl/intl/ru/training/material/index.jd
@@ -0,0 +1,61 @@
+page.title=Создание приложений с помощью Material Design 
+page.type=проектирование 
+page.image=images/cards/material_2x.png
+page.metaDescription=Научитесь применять Material Design к своим приложениям. 
+
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+  <h2>Необходимые знания и компоненты</h2>
+  <ul>
+    <li>Android 5.0 (уровень API 21)</li>
+  </ul>
+</div>
+</div>
+
+<p>Material Design представляет собой комплексную концепцию создания визуальных, движущихся и интерактивных элементов для различных платформ и устройств.
+ Чтобы применить элементы Material Design в своих приложениях Android,
+руководствуйтесь инструкциями в
+<a href="http://www.google.com/design/spec/material-design/introduction.html">спецификации Material
+Design</a>, а также воспользуйтесь новыми компонентами и функциями, которые доступны в Android 5.0 (уровень API 21).
+</p>
+
+<p>Данный курс обучения посвящен созданию приложений Material Design, в ходе которого используются следующие элементы:</p>
+
+<ul>
+<li>тема Material Design;</li>
+<li>виджеты для карточек и списков;</li>
+<li>настраиваемые тени и обрезка представлений;</li>
+<li>векторные элементы;</li>
+<li>настраиваемая анимация.</li>
+</ul>
+
+<p>В этом курсе также рассматривается обеспечение обратной совместимости нового приложения, в котором используются функции Material Design, с версиями Android, предшествующими версии 5.0 (уровень API 21).
+</p>
+
+<h2>Уроки</h2>
+
+<dl>
+  <dt><a href="{@docRoot}training/material/get-started.html">Начало работы</a></dt>
+  <dd>Узнайте, как обновлять приложения с помощью элементов Material Design.</dd>
+
+  <dt><a href="{@docRoot}training/material/theme.html">Использование темы Material Design</a></dt>
+  <dd>Узнайте, как применять стили Material Design в приложениях.</dd>
+
+  <dt><a href="{@docRoot}training/material/lists-cards.html">Создание списков и карточек</a></dt>
+  <dd>Узнайте, как с помощью системных виджетов создавать единообразные списки и карточки.</dd>
+
+  <dt><a href="{@docRoot}training/material/shadows-clipping.html">Определение теней и обрезка представлений</a></dt>
+  <dd>Узнайте, как устанавливать высоту представлений для создания настраиваемых теней, а также обрезать представления.</dd>
+
+  <dt><a href="{@docRoot}training/material/drawables.html">Работа с элементами дизайна</a></dt>
+  <dd>Узнайте, как создавать векторные элементы и тонировать элементы дизайна.</dd>
+
+  <dt><a href="{@docRoot}training/material/animations.html">Определение настраиваемой анимации</a></dt>
+  <dd>Узнайте, как создавать настраиваемую анимацию для представлений и переходов между операциями, в которых используются общие элементы.</dd>
+
+  <dt><a href="{@docRoot}training/material/compatibility.html">Обеспечение совместимости</a></dt>
+  <dd>Узнайте, как обеспечить совместимость приложений с версиями платформы, предшествующими Android 5.0.</dd>
+</dl>
diff --git a/docs/html-intl/intl/ru/training/material/lists-cards.jd b/docs/html-intl/intl/ru/training/material/lists-cards.jd
new file mode 100644
index 0000000..44ff160
--- /dev/null
+++ b/docs/html-intl/intl/ru/training/material/lists-cards.jd
@@ -0,0 +1,266 @@
+page.title=Создание списков и карточек
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Содержание этого урока</h2>
+<ol>
+  <li><a href="#RecyclerView">Создание списков</a></li>
+  <li><a href="#CardView">Создание карточек</a></li>
+  <li><a href="#Dependencies">Добавление зависимостей</a></li>
+</ol>
+<h2>См. также</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Спецификация Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design в Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Для создания в приложениях составных списков и карточек с помощью стилей Material Design можно использовать виджеты
+{@link android.support.v7.widget.RecyclerView} и {@link android.support.v7.widget.CardView}.
+</p>
+
+
+<h2 id="RecyclerView">Создание списков</h2>
+
+<p>Виджет {@link android.support.v7.widget.RecyclerView} представляет собой расширенную и более гибкую версию {@link android.widget.ListView}.
+ Он является контейнером для отображения больших наборов данных, которые можно эффективно прокручивать, сохраняя при этом ограниченное количество представлений.
+ Виджет
+{@link android.support.v7.widget.RecyclerView} рекомендуется использовать в случаях, когда имеются коллекции данных, элементы которых изменяются во время выполнения в зависимости от действий пользователя или сетевых событий.
+</p>
+
+<p>Класс {@link android.support.v7.widget.RecyclerView} упрощает отображение и обработку больших наборов данных с помощью следующих возможностей:
+</p>
+
+<ul>
+  <li>менеджеров макетов для размещения элементов;</li>
+  <li>стандартных анимаций для операций с общими элементами, таких как удаление или добавление элементов.</li>
+</ul>
+
+<p>Также предоставляются гибкие возможности определения настраиваемых менеджеров макетов и анимации для виджетов {@link
+android.support.v7.widget.RecyclerView}.</p>
+
+<img src="{@docRoot}training/material/images/RecyclerView.png" alt="" width="550" height="106" />
+<p class="img-caption">
+<strong>Рисунок 1</strong>. Виджет <code>RecyclerView</code>.
+</p>
+
+<p>Чтобы воспользоваться виджетом {@link android.support.v7.widget.RecyclerView}, необходимо определить адаптер и менеджер макетов.
+ Для создания адаптера необходимо наследовать класс {@link
+android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter}. Характеристики реализации зависят от особенностей используемого набора данных и типа представлений.
+ Дополнительные сведения представлены в <a href="#RVExamples">примерах</a> ниже.
+</p>
+
+<div style="float:right">
+<img src="{@docRoot}design/material/images/list_mail.png" alt="" width="250" height="426" />
+<p class="img-caption" style="margin-left:8px">
+<strong>Рисунок 2</strong>. Список с использованием <code>RecyclerView</code>.
+</p>
+</div>
+
+<p><strong>Менеджер макетов</strong> размещает представления элемента внутри {@link
+android.support.v7.widget.RecyclerView} и определяет порядок повторного использования представлений элемента, которые перестают быть видимыми пользователю.
+ Чтобы повторно использовать (или <em>перезапустить</em>) представление, менеджер макетов может запросить адаптер заменить содержимое представления другим элементом из набора данных.
+ Такой перезапуск представлений позволяет повысить производительность за счет того, что исключается создание ненужных представлений и выполнение ресурсоемких операций поиска {@link android.app.Activity#findViewById findViewById()}.
+
+</p>
+
+<p>Виджет {@link android.support.v7.widget.RecyclerView} включает следующие встроенные менеджеры макетов:</p>
+
+<ul>
+<li>{@link android.support.v7.widget.LinearLayoutManager} для отображения элементов в виде списка с вертикальной или горизонтальной прокруткой;
+</li>
+<li>{@link android.support.v7.widget.GridLayoutManager} для отображения элементов в виде сетки;</li>
+<li>{@link android.support.v7.widget.StaggeredGridLayoutManager} для отображения элементов в виде шахматной сетки.</li>
+</ul>
+
+<p>Для создания менеджера макетов необходимо наследовать класс {@link
+android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager}.</p>
+
+<h3>Анимация</h3>
+
+<p>По умолчанию анимация для добавления и удаления элементов включается в виджете {@link
+android.support.v7.widget.RecyclerView}. Для настройки такой анимации следует наследовать класс
+{@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} и воспользоваться методом
+ {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()}
+.</p>
+
+<h3 id="RVExamples">Примеры</h3>
+
+<p>В следующем примере демонстрируется, как включить в макет виджет 
+{@link android.support.v7.widget.RecyclerView}:</p>
+
+<pre>
+&lt;!-- A RecyclerView with some commonly used attributes -->
+&lt;android.support.v7.widget.RecyclerView
+    android:id="@+id/my_recycler_view"
+    android:scrollbars="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"/>
+</pre>
+
+<p>После добавления виджета {@link android.support.v7.widget.RecyclerView} подключите дескриптор объекта, подключите его к менеджеру макетов, а затем подключите адаптер к данным, которые будут отображаться:
+
+</p>
+
+<pre>
+public class MyActivity extends Activity {
+    private RecyclerView mRecyclerView;
+    private RecyclerView.Adapter mAdapter;
+    private RecyclerView.LayoutManager mLayoutManager;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.my_activity);
+        mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
+
+        // use this setting to improve performance if you know that changes
+        // in content do not change the layout size of the RecyclerView
+        mRecyclerView.setHasFixedSize(true);
+
+        // use a linear layout manager
+        mLayoutManager = new LinearLayoutManager(this);
+        mRecyclerView.setLayoutManager(mLayoutManager);
+
+        // specify an adapter (see also next example)
+        mAdapter = new MyAdapter(myDataset);
+        mRecyclerView.setAdapter(mAdapter);
+    }
+    ...
+}
+</pre>
+
+<p>Адаптер обеспечивает доступ к элементам в наборе данных, создает представления для элементов и заменяет содержимое некоторых представлений новыми элементами данных, когда исходный элемент уже не отображается.
+
+ Пример кода ниже является простой реализацией набора данных, который состоит из массива строк, выведенного на экран с помощью виджетов {@link android.widget.TextView}:
+</p>
+
+<pre>
+public class MyAdapter extends RecyclerView.Adapter&lt;MyAdapter.ViewHolder> {
+    private String[] mDataset;
+
+    // Provide a reference to the views for each data item
+    // Complex data items may need more than one view per item, and
+    // you provide access to all the views for a data item in a view holder
+    public static class ViewHolder extends RecyclerView.ViewHolder {
+        // each data item is just a string in this case
+        public TextView mTextView;
+        public ViewHolder(TextView v) {
+            super(v);
+            mTextView = v;
+        }
+    }
+
+    // Provide a suitable constructor (depends on the kind of dataset)
+    public MyAdapter(String[] myDataset) {
+        mDataset = myDataset;
+    }
+
+    // Create new views (invoked by the layout manager)
+    &#64;Override
+    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
+                                                   int viewType) {
+        // create a new view
+        View v = LayoutInflater.from(parent.getContext())
+                               .inflate(R.layout.my_text_view, parent, false);
+        // set the view's size, margins, paddings and layout parameters
+        ...
+        ViewHolder vh = new ViewHolder(v);
+        return vh;
+    }
+
+    // Replace the contents of a view (invoked by the layout manager)
+    &#64;Override
+    public void onBindViewHolder(ViewHolder holder, int position) {
+        // - get element from your dataset at this position
+        // - replace the contents of the view with that element
+        holder.mTextView.setText(mDataset[position]);
+
+    }
+
+    // Return the size of your dataset (invoked by the layout manager)
+    &#64;Override
+    public int getItemCount() {
+        return mDataset.length;
+    }
+}
+</pre>
+
+
+<div style="float:right;margin-top:15px;margin-left:30px">
+<img src="{@docRoot}design/material/images/card_travel.png" alt="" width="225" height="383">
+<p class="img-caption" style="margin-left:12px">
+<strong>Рисунок 3</strong>. Примеры карточек.
+</p>
+</div>
+
+<h2 id="CardView">Создание карточек</h2>
+
+<p>Виджет {@link android.support.v7.widget.CardView} является расширением класса {@link android.widget.FrameLayout}
+и позволяет отображать информацию внутри карточек, которые будут выглядеть одинаково в рамках платформы. Виджеты {@link
+android.support.v7.widget.CardView} могут отбрасывать тени и иметь закругленные углы.</p>
+
+<p>Чтобы создать карточку, отбрасывающую тень, воспользуйтесь атрибутом <code>card_view:cardElevation</code>. В Android 5.0 (уровень API 21) и более поздних версий виджет
+{@link android.support.v7.widget.CardView} использует реальную
+высоту и динамические тени, а в более ранних версиях в виджете реализованы программные тени.
+Дополнительные сведения представлены на странице <a href="{@docRoot}training/material/compatibility.html">Обеспечение
+совместимости</a>.</p>
+
+<p>Для настройки внешнего вида виджета
+{@link android.support.v7.widget.CardView} используйте следующие свойства:</p>
+
+<ul>
+  <li>чтобы задать радиус скругления углов в макете, используйте атрибут <code>card_view:cardCornerRadius</code>;
+</li>
+  <li>чтобы задать радиус скругления углов в программном коде, используйте метод <code>CardView.setRadius</code>;</li>
+  <li>чтобы задать цвет фона карточки, используйте атрибут <code>card_view:cardBackgroundColor</code>.
+</li>
+</ul>
+
+<p>В следующем примере показано, как включить виджет {@link android.support.v7.widget.CardView}
+ в макет:</p>
+
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    ... >
+    &lt;!-- A CardView that contains a TextView -->
+    &lt;android.support.v7.widget.CardView
+        xmlns:card_view="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/card_view"
+        android:layout_gravity="center"
+        android:layout_width="200dp"
+        android:layout_height="200dp"
+        card_view:cardCornerRadius="4dp">
+
+        &lt;TextView
+            android:id="@+id/info_text"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
+    &lt;/android.support.v7.widget.CardView>
+&lt;/LinearLayout>
+</pre>
+
+<p>Дополнительные сведения представлены в справке по API для {@link android.support.v7.widget.CardView}.</p>
+
+
+<h2 id="Dependencies">Добавление зависимостей</h2>
+
+<p> Виджеты {@link android.support.v7.widget.RecyclerView} и {@link android.support.v7.widget.CardView}
+входят во <a href="{@docRoot}tools/support-library/features.html#v7">вспомогательные
+библиотеки v7</a>. Чтобы использовать эти виджеты в своем проекте, добавьте в модуль приложения следующие 
+<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">зависимости Gradle</a>:
+</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
diff --git a/docs/html-intl/intl/ru/training/material/shadows-clipping.jd b/docs/html-intl/intl/ru/training/material/shadows-clipping.jd
new file mode 100644
index 0000000..a1c41fc
--- /dev/null
+++ b/docs/html-intl/intl/ru/training/material/shadows-clipping.jd
@@ -0,0 +1,133 @@
+page.title=Определение теней и обрезка представлений
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Содержание этого урока</h2>
+<ol>
+  <li><a href="#Elevation">Установка высоты представления</a></li>
+  <li><a href="#Shadows">Настройка теней и контуров представления</a></li>
+  <li><a href="#Clip">Обрезка представления</a></li>
+</ol>
+<h2>См. также</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Спецификация Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design в Android</a></li>
+</ul>
+</div>
+</div>
+
+<p>В Material Design появилась возможность настройки высоты элементов интерфейса. Высота позволяет пользователю понять относительную важность каждого элемента и сосредоточиться на выполнении поставленной задачи.
+</p>
+
+<p>Высота представления, выраженная с помощью свойства Z, определяет внешний вид его тени: представления с более высоким значением Z отбрасывают более мягкие тени большего размера.
+ Представления с более высокими значениями Z перекрывают представления с более низкими значениями Z, однако значение Z не влияет на размер самого представления.
+</p>
+
+<p>Прорисовка теней выполняется родительским представлением, поэтому к приподнятому представлению можно применять стандартную операцию обрезки представления (по умолчанию представление обрезается своим родительским представлением).
+</p>
+
+<p>Установка высоты также полезна для создания анимации, когда виджеты временно поднимаются выше плоскости представления при выполнении какого-либо действия.
+</p>
+
+<p>Дополнительные сведения об установке высоты в Material Design представлены на странице 
+<a href="http://www.google.com/design/spec/what-is-material/objects-in-3d-space.html">Объекты в трехмерном пространстве</a>.
+</p>
+
+
+<h2 id="Elevation">Установка высоты представления</h2>
+
+<p>Значение Z для представления включает два компонента:
+
+<ul>
+<li>высота: статический компонент;</li>
+<li>смещение: динамический компонент, используемый для анимации.</li>
+</ul>
+
+<p><code>Z = elevation + translationZ</code></p>
+
+<img src="{@docRoot}training/material/images/shadows-depth.png" width="580" height="261" alt="" />
+<p class="img-caption"><strong>Рисунок 1</strong>. Тени для различной высоты представления.</p>
+
+<p>Чтобы установить высоту представления в определении макета, используйте атрибут <code>android:elevation</code>
+. Чтобы установить высоту представления в программном коде операции, используйте метод
+{@link android.view.View#setElevation View.setElevation()}.</p>
+
+<p>Чтобы установить смещение представления, используйте метод {@link android.view.View#setTranslationZ
+View.setTranslationZ()}.</p>
+
+<p>Новые методы {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} и {@link
+android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} позволяют с легкостью анимировать изменение высоты представлений.
+ Дополнительные сведения см. в справке по API для 
+{@link android.view.ViewPropertyAnimator}, а также в руководстве по <a href="{@docRoot}guide/topics/graphics/prop-animation.html">анимации свойств</a> для разработчиков.
+</p>
+
+<p>Также можно использовать класс {@link android.animation.StateListAnimator} для декларирования этих анимаций.
+ Это особенно полезно в тех случаях, когда анимация запускается при изменении состояния, например, когда пользователь нажимает на кнопку.
+ Дополнительные сведения см. в разделе 
+<a href="{@docRoot}training/material/animations.html#ViewState">Анимация изменений состояния представления</a>.</p>
+
+<p>Значения Z измеряются в dp (пиксели, не зависящие от плотности).</p>
+
+
+<h2 id="Shadows">Настройка теней и контуров представления</h2>
+
+<p>Границы фонового элемента представления определяют форму его тени по умолчанию.
+<strong>Контуры</strong> — это внешние границы графического объекта, они также определяют область ряби для отклика на касание.
+</p>
+
+<p>В примере ниже рассматривается это представление, определенное с помощью фонового элемента дизайна:</p>
+
+<pre>
+&lt;TextView
+    android:id="@+id/myview"
+    ...
+    android:elevation="2dp"
+    android:background="@drawable/myrect" />
+</pre>
+
+<p>Фоновый элемент дизайна определен как прямоугольник со скругленными углами:</p>
+
+<pre>
+&lt;!-- res/drawable/myrect.xml -->
+&lt;shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+    &lt;solid android:color="#42000000" />
+    &lt;corners android:radius="5dp" />
+&lt;/shape>
+</pre>
+
+<p>Представление отбрасывает тень с закругленными углами, поскольку контур представления определяется фоновым элементом дизайна.
+ Если указать настраиваемый контур, он будет переопределять стандартную форму тени для представления.</p>
+
+<p>Порядок определения настраиваемого контура представления в программном коде<p>
+
+<ol>
+<li>Сначала наследуйте класс {@link android.view.ViewOutlineProvider}.</li>
+<li>Затем переопределите метод {@link android.view.ViewOutlineProvider#getOutline getOutline()}.</li>
+<li>Наконец, назначьте источник контуров для своего представления с помощью метода {@link
+android.view.View#setOutlineProvider View.setOutlineProvider()}.</li>
+</ol>
+
+<p>Можно создавать овальные и прямоугольные контуры со скругленными углами, используя для этого методы класса 
+{@link android.graphics.Outline}. Стандартный источник контуров получает контуры из фона представления.
+ Чтобы представление не отбрасывало тень, задайте для источника контуров значение <code>null</code>.
+</p>
+
+
+<h2 id="Clip">Обрезка представления</h2>
+
+<p>С помощью обрезки представлений можно с легкостью изменять их форму. Представление можно обрезать для обеспечения единообразия элементов дизайна.
+Также можно изменить форму представления в ответ на действия пользователя.
+С помощью метода {@link android.view.View#setClipToOutline
+View.setClipToOutline()} или атрибута <code>android:clipToOutline</code> представление можно обрезать по его контуру. Обрезать
+можно только прямоугольники, круги и скругленные прямоугольники, как определено в методе
+{@link android.graphics.Outline#canClip Outline.canClip()}.</p>
+
+<p>Чтобы обрезать представление по форме элемента дизайна, установите этот элемент в качестве фона представления
+(как показано выше) и вызовите метод {@link android.view.View#setClipToOutline View.setClipToOutline()}
+.</p>
+
+<p>Обрезка представления — довольно ресурсоемкая операция, поэтому не анимируйте форму, которую вы используете для обрезки представления.
+ Для достижения требуемого эффекта используйте анимацию <a href="{@docRoot}training/material/animations.html#Reveal">эффекта появления</a>.</p>
diff --git a/docs/html-intl/intl/ru/training/material/theme.jd b/docs/html-intl/intl/ru/training/material/theme.jd
new file mode 100644
index 0000000..320f308
--- /dev/null
+++ b/docs/html-intl/intl/ru/training/material/theme.jd
@@ -0,0 +1,131 @@
+page.title=Использование темы Material Design
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Содержание этого урока</h2>
+<ol>
+  <li><a href="#ColorPalette">Настройка цветовой палитры</a></li>
+  <li><a href="#StatusBar">Настройка строки состояния</a></li>
+  <li><a href="#Inheritance">Отдельные представления темы</a></li>
+</ol>
+<h2>См. также</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Спецификация Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design в Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Новая тема Material Design предоставляет следующие возможности:</p>
+
+<ul>
+  <li>системные виджеты, для которых можно настраивать цветовую палитру;</li>
+  <li>анимация для реакции на касание для системных виджетов;</li>
+  <li>анимация переходов между операциями.</li>
+</ul>
+
+<p>Внешний вид темы Material Design можно настроить с учетом фирменного стиля, воспользовавшись для этого цветовой палитрой.
+ Можно изменить оттенок строки действий и строки состояния, используя атрибуты темы, как показано на <a href="#fig3">рисунке 3</a>.
+</p>
+
+<p>Системные виджеты отличаются новым дизайном и анимацией отклика на касание. В своем приложении вы можете настроить цветовую палитру, анимацию отклика на касание и переходы между операциями.
+</p>
+
+<p>Тема Material Design задается следующими параметрами:</p>
+
+<ul>
+  <li><code>@android:style/Theme.Material</code> (темные цвета);</li>
+  <li><code>@android:style/Theme.Material.Light</code> (светлые цвета);</li>
+  <li><code>@android:style/Theme.Material.Light.DarkActionBar</code>.</li>
+</ul>
+
+<p>Список доступных стилей Material Design см. в справке по API для 
+{@link android.R.style R.style}.</p>
+
+<!-- two columns, dark/light material theme example -->
+<div style="width:700px;margin-top:25px;margin-bottom:10px">
+<div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
+  <img src="{@docRoot}design/material/images/MaterialDark.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>Рисунок 1</strong>. Тема Material Design в темных тонах.</p>
+  </div>
+</div>
+<div style="float:left;width:250px;margin-right:0px;">
+  <img src="{@docRoot}design/material/images/MaterialLight.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>Рисунок 2</strong>. Тема Material Design в светлых тонах.</p>
+  </div>
+</div>
+<br style="clear:left">
+</div>
+
+<p class="note">
+<strong>Примечание.</strong> Темы Material Design доступны только в ОС Android 5.0 (уровень API 21) и более поздних версий.
+ Во <a href="{@docRoot}tools/support-library/features.html#v7">вспомогательных библиотеках v7</a>
+ представлены темы со стилями Material Design для некоторых виджетов. Эти библиотеки также обеспечивают поддержку настройки цветовой палитры.
+ Дополнительные сведения см. на странице 
+<a href="{@docRoot}training/material/compatibility.html">Обеспечение совместимости</a>.
+</p>
+
+
+<h2 id="ColorPalette">Настройка цветовой палитры</h2>
+
+<p style="margin-bottom:30px">Для настройки основных цветов в соответствии с фирменным стилем определите настраиваемые цвета с помощью атрибутов темы при наследовании от темы Material Design:
+</p>
+
+<pre>
+&lt;resources>
+  &lt;!-- inherit from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- Main theme colors -->
+    &lt;!--   your app branding color for the app bar -->
+    &lt;item name="android:colorPrimary">@color/primary&lt;/item>
+    &lt;!--   darker variant for the status bar and contextual app bars -->
+    &lt;item name="android:colorPrimaryDark">@color/primary_dark&lt;/item>
+    &lt;!--   theme UI controls like checkboxes and text fields -->
+    &lt;item name="android:colorAccent">@color/accent&lt;/item>
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<div style="float:right;margin-left:25px;margin-top:20px;margin-bottom:10px" id="fig3">
+<img src="{@docRoot}training/material/images/ThemeColors.png" width="250" height="445" />
+<p class="img-caption" style="margin-bottom:0px">
+<strong>Рисунок 3</strong>. Настройка темы Material Design.</p>
+</div>
+
+
+<h2 id="StatusBar">Настройка строки состояния</h2>
+
+<p>В теме Material Design можно с легкостью настроить строку состояния, указав нужный цвет в соответствии с фирменным стилем и задав достаточную контрастность для отображения белых значков состояния.
+ Чтобы установить настраиваемый цвет для строки состояния, воспользуйтесь атрибутом <code>android:statusBarColor</code> при наследовании темы Material Design.
+
+ По умолчанию параметр <code>android:statusBarColor</code> наследует значение <code>android:colorPrimaryDark</code>.
+</p>
+
+<p>Кроме того, можно самостоятельно разместить элемент за строкой состояния. Например, если требуется наложить прозрачную строку состояния поверх фотографии, применив еле уловимый темный градиент, чтобы были видны белые значки состояния.
+
+ Для этого задайте для атрибута <code>android:statusBarColor</code> значение 
+<code>&#64;android:color/transparent</code> и настройте флаги окна требуемым образом. Также можно воспользоваться
+методом {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} для применения анимации или эффекта постепенного исчезания.
+</p>
+
+<p class="note">
+<strong>Примечание.</strong> Строка состояния почти всегда должна иметь четкую границу, отделяющую ее от основной панели инструментов, за исключением случаев, когда за этими панелями от края и до края экрана отображается большое количество изображений или мультимедийный контент, а также в случае, когда вы используете градиент, чтобы обеспечить видимость значков.
+
+
+</p>
+
+<p>При настройке панели навигации и строки состояния сделайте их прозрачными либо измените только строку состояния.
+ Во всех остальных случаях панель навигации должна оставаться черной.</p>
+
+
+<h2 id="Inheritance">Отдельные представления темы</h3>
+
+<p>Элементы в определениях макета XML могут задавать атрибут <code>android:theme</code>, который ссылается на ресурс темы.
+ Этот атрибут изменяет тему для элемента и любых дочерних элементов,
+что можно использовать для изменения цветовых палитр темы в определенной области интерфейса.
+</p>
diff --git a/docs/html-intl/intl/vi/design/get-started/principles.jd b/docs/html-intl/intl/vi/design/get-started/principles.jd
new file mode 100644
index 0000000..61b2c77
--- /dev/null
+++ b/docs/html-intl/intl/vi/design/get-started/principles.jd
@@ -0,0 +1,307 @@
+page.title=Nguyên tắc Thiết kế Android
+@jd:body
+
+<p>Những nguyên tắc thiết kế này được xây dựng bởi và dành cho
+Nhóm Trải nghiệm Người dùng Android để đảm bảo lợi ích tốt nhất cho người dùng.
+Đối với nhà phát triển và nhà thiết kế Android, chúng tiếp tục
+nhấn mạnh những nguyên tắc chỉ đạo thiết kế chi tiết hơn dành cho các loại
+thiết bị khác nhau.</p>
+
+<p>
+Hãy cân nhắc những nguyên tắc này khi áp dụng sự sáng tạo
+và tư duy thiết kế của mình. Thay đổi có mục đích.
+</p>
+
+<h2 id="enchant-me">Thu hút tôi</h2>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="delight-me">Khiến tôi xao xuyến vì ngạc nhiên</h4>
+<p>Cảnh vật đẹp, hoạt hình được bố trí cẩn thận hay hiệu ứng âm thanh đúng lúc khiến
+trải nghiệm càng thêm phần thích thú. Hiệu ứng tinh tế góp phần đem lại cảm giác nhẹ nhàng nhưng
+mạnh mẽ trong tầm tay.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_delight.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="real-objects-more-fun">Các đối tượng đời thật trông thú vị hơn các nút bấm và menu</h4>
+<p>Để người dùng trực tiếp chạm và thao tác các đối tượng trong ứng dụng của bạn. Làm như vậy vừa giảm nỗ lực nhận thức
+cần thiết để thực hiện một tác vụ, vừa đem lại sự thỏa mãn về cảm xúc.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_real_objects.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="make-it-mine">Hãy để tôi biến nó thành của mình</h4>
+<p>Người dùng thích cảm giác tiếp xúc cá nhân bởi nó giúp họ cảm thấy rất tự nhiên và nắm quyền kiểm soát. Cung cấp
+thiết lập mặc định tuyệt đẹp, dễ cảm nhận, nhưng cũng phải xét đến những tùy chỉnh thú vị, có thể lựa chọn để không cản trở
+nhiệm vụ chính yếu.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_make_it_mine.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="get-to-know-me">Hiểu rõ về tôi</h4>
+<p>Tìm hiểu sở thích của người dùng qua thời gian. Thay vì bảo họ chọn
+đi chọn lại cùng một thứ, hãy bố trí để những lựa chọn trước đó dễ dàng trong tầm với.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_get_to_know_me.png">
+
+  </div>
+</div>
+
+<h2 id="simplify-my-life">Đơn giản hóa cuộc sống của tôi</h2>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="keep-it-brief">Hãy ngắn gọn</h4>
+<p>Sử dụng những cụm từ ngắn với từ ngữ đơn giản. Người dùng thường hay bỏ qua những câu dài dòng.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_keep_it_brief.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="pictures-faster-than-words">Hình ảnh đến nhanh hơn câu chữ</h4>
+<p>Hãy nghĩ đến việc dùng hình ảnh để giải thích ý tưởng. Chúng dễ thu hút sự chú ý của người dùng và có thể hiệu quả hơn nhiều
+so với từ ngữ.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_pictures.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="decide-for-me">Quyết định hộ tôi nhưng phải để tôi “chốt hạ”</h4>
+<p>Hãy đưa ra phán đoán tốt nhất và hành động thay vì hỏi trước. Quá nhiều lựa chọn và quyết định khiến người dùng
+không vui. Phòng trường hợp bạn sai, hãy cho 'hoàn tác'.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_decide_for_me.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="only-show-when-i-need-it">Chỉ hiện những thứ tôi cần khi tôi cần đến</h4>
+<p>Người dùng sẽ bị quá tải khi họ thấy quá nhiều thứ cùng lúc. Hãy chia các tác vụ và thông tin thành những đoạn nhỏ,
+dễ nắm bắt. Ẩn những tùy chọn không thiết yếu vào thời điểm đó và nhắc người dùng khi đi qua chúng.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_information_when_need_it.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="always-know-where-i-am">Tôi cần luôn biết mình đang ở đâu</h4>
+<p>Khiến người khác tự tin rằng họ biết mình đang ở đâu. Khiến những địa điểm trong ứng dụng của bạn trông khác biệt
+và sử dụng chuyển tiếp để thể hiện mối quan hệ giữa các màn hình. Cung cấp phản hồi về các tác vụ đang diễn ra.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_navigation.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="never-lose-my-stuff">Không bao giờ đánh mất những thứ của tôi</h4>
+<p>Lưu những thứ người dùng mất thời gian để tạo và cho phép họ truy cập chúng từ mọi nơi. Nhớ các cài đặt,
+thao tác chạm cá nhân và nội dung khởi tạo giữa các điện thoại, máy tính bảng và máy tính. Điều đó sẽ khiến việc nâng cấp
+trở nên dễ dàng nhất trên đời.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_never_lose_stuff.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="looks-same-should-act-same">Nếu bề ngoài giống nhau thì hành động cũng phải như nhau</h4>
+<p>Giúp người dùng phân biệt sự khác nhau về chức năng bằng cách khiến bề ngoài trông khác biệt thay vì chỉ khác một chút.
+Tránh những chế độ trông giống nhau nhưng lại phản hồi khác nhau với cùng nội dung đầu vào.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_looks_same.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="interrupt-only-if-important">Chỉ làm tôi gián đoạn nếu thật sự quan trọng</h4>
+<p>Như một trợ lý cá nhân đúng nghĩa, hãy tránh làm người dùng mất thời gian vào thứ không quan trọng. Người dùng thường muốn
+tập trung và trừ trường hợp rất quan trọng và nhạy cảm về thời gian, nếu không việc gián đoạn có thể khiến họ khó chịu.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_important_interruption.png">
+
+  </div>
+</div>
+
+<h2 id="make-me-amazing">Làm tôi ấn tượng</h2>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="give-me-tricks">Cho tôi xem những trò có thể áp dụng ở mọi nơi</h4>
+<p>Người dùng thấy thích thú khi họ tự khám phá mọi thứ. Thiết kế ứng dụng của bạn dễ học hỏi hơn nhờ
+tận dụng các kiểu mẫu trực quan và trí nhớ có điều kiện từ các ứng dụng Android khác. Ví dụ, cử chỉ trượt nhanh
+có thể là một lối tắt điều hướng hay.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_tricks.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="its-not-my-fault">Không phải lỗi của tôi</h4>
+<p>Nhẹ nhàng trong cách nhắc người dùng sửa lỗi. Họ luôn muốn cảm thấy thông minh khi dùng ứng dụng
+của bạn. Nếu có gì đó không đúng, hãy đưa ra chỉ dẫn khắc phục rõ ràng nhưng bỏ qua những chi tiết kỹ thuật.
+Nếu bạn có thể khắc phục mà không làm phiền họ thì càng tuyệt.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_error.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="sprinkle-encouragement">Khơi gợi sự khuyến khích</h4>
+<p>Chia các nhiệm vụ phức tạp thành nhiều bước nhỏ hơn và dễ hoàn thành. Phản hồi hành động,
+kể cả khi đó chỉ là một vầng sáng nhỏ.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_sprinkle_encouragement.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="do-heavy-lifting-for-me">Làm giúp tôi những chuyện nặng nhọc</h4>
+<p>Khiến người mới cảm thấy mình như chuyên gia bằng cách cho phép họ làm những việc mà họ chưa từng nghĩ mình có thể làm được. Ví
+dụ, các lối tắt kết hợp nhiều hiệu ứng ảnh chụp có thể khiến một bức ảnh nghiệp dư trở nên đáng kinh ngạc
+chỉ sau vài bước.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_heavy_lifting.png">
+
+  </div>
+</div>
+
+<div class="vspace size-2">&nbsp;</div>
+
+<div class="cols">
+  <div class="col-7">
+
+<h4 id="make-important-things-fast">Nhanh chóng đến phần quan trọng</h4>
+<p>Không phải hành động nào cũng như nhau. Quyết định xem điều gì là quan trọng nhất trong ứng dụng của bạn và khiến nó dễ tìm thấy và
+nhanh chóng được sử dụng, ví dụ như nút chụp trong camera hoặc nút tạm dừng trong một trình phát nhạc.</p>
+
+  </div>
+  <div class="col-6">
+
+    <img src="{@docRoot}design/media/principles_make_important_fast.png">
+
+  </div>
+</div>
diff --git a/docs/html-intl/intl/vi/design/material/index.jd b/docs/html-intl/intl/vi/design/material/index.jd
new file mode 100644
index 0000000..d72636f
--- /dev/null
+++ b/docs/html-intl/intl/vi/design/material/index.jd
@@ -0,0 +1,186 @@
+page.title=Material Design cho Android
+page.tags=Material,design
+page.type=thiết kế
+page.image=images/cards/design-material-for-android_2x.jpg
+
+@jd:body
+
+<!-- developer docs box -->
+<a class="notice-developers right" href="{@docRoot}training/material/index.html">
+  <div>
+    <h3>Tài liệu cho Nhà phát triển</h3>
+    <p>Tạo ứng dụng với Material Design</p>
+  </div>
+</a>
+
+<!-- video box -->
+<a class="notice-developers-video" href="https://www.youtube.com/watch?v=p4gmvHyuZzw">
+<div>
+    <h3>Video</h3>
+    <p>Giới thiệu Material Design</p>
+</div>
+</a>
+
+<!-- video box -->
+<a class="notice-developers-video" href="https://www.youtube.com/watch?v=YaG_ljfzeUw">
+<div>
+    <h3>Video</h3>
+    <p>Giấy và Mực: Những vật liệu quan trọng</p>
+</div>
+</a>
+
+<!-- video box -->
+<a class="notice-developers-video" href="https://www.youtube.com/watch?v=XOcCOBe8PTc">
+<div>
+    <h3>Video</h3>
+    <p>Material Design trong Google I/O App</p>
+</div>
+</a>
+
+
+
+<p itemprop="description">Material design là một hướng dẫn toàn diện về thiết kế
+trực quan, chuyển động và tương tác giữa nhiều nền tảng và thiết bị. Hiện nay Android có hỗ trợ
+những ứng dụng theo phong cách material design. Để sử dụng material design trong ứng dụng Androi của mình, hãy làm theo hướng dẫn nêu
+trong <a href="http://www.google.com/design/spec">đặc tả material design</a> và sử dụng
+những thành phần và tính năng mới sẵn có trong Android 5.0 (API mức 21) trở lên.</p>
+
+<p>Android cung cấp những phần tử sau để bạn dựng ứng dụng theo phong cách material design:</p>
+
+<ul>
+  <li>Một giao diện mới</li>
+  <li>Widget mới cho các dạng xem phức tạp</li>
+  <li>API mới cho đổ bóng và hoạt hình tùy chỉnh</li>
+</ul>
+
+<p>Để biết thêm thông tin về triển khai material design trên Android, hãy xem
+<a href="{@docRoot}training/material/index.html">Tạo ứng dụng với Material Design</a>.</p>
+
+
+<h3>Giao diện Material</h3>
+
+<p>Giao diện material mang đến một phong cách mới cho ứng dụng của bạn và các widget hệ thống, cho phép bạn đặt
+bảng màu của chúng và hoạt hình mặc định cho phản hồi chạm và chuyển tiếp hoạt động.</p>
+
+<!-- two columns -->
+<div style="width:700px;margin-top:25px;margin-bottom:20px">
+<div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
+  <img src="{@docRoot}design/material/images/MaterialDark.png" width="500" height="238" />
+  <div style="width:140px;margin:0 auto">
+  <p style="margin-top:8px">Giao diện material tối</p>
+  </div>
+</div>
+<div style="float:left;width:250px;margin-right:0px;">
+  <img src="{@docRoot}design/material/images/MaterialLight.png" width="500" height="238" />
+  <div style="width:140px;margin:0 auto">
+  <p style="margin-top:8px">Giao diện material sáng</p>
+  </div>
+</div>
+<br style="clear:left"/>
+</div>
+
+<p>Để biết thêm thông tin, hãy xem phần <a href="{@docRoot}training/material/theme.html">Sử dụng Giao diện Material
+</a>.</p>
+
+
+<h3>Danh sách và Thẻ</h3>
+
+<p>Android cung cấp hai loại widget mới để hiển thị thẻ và danh sách bằng phong cách
+và hoạt hình material design:</p>
+
+<!-- two columns -->
+<div style="width:700px;margin-top:25px;margin-bottom:20px">
+<div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
+  <img src="{@docRoot}design/material/images/list_mail.png" width="500" height="426" />
+  <p>Widget <code>RecyclerView</code> mới là một phiên bản có thể ghép nối hơn của <code>ListView</code>
+  có hỗ trợ nhiều kiểu bố trí khác nhau và cải thiện hiệu năng.</p>
+</div>
+<div style="float:left;width:250px;margin-right:0px;">
+  <img src="{@docRoot}design/material/images/card_travel.png" width="500" height="426" />
+  <p>Widget <code>CardView</code> mới cho phép bạn hiển thị những mẩu thông tin quan trọng bên trong
+  thẻ với diện mạo và cảm nhận nhất quán.</p>
+</div>
+<br style="clear:left"/>
+</div>
+
+<p>Để biết thêm thông tin, hãy xem phần <a href="{@docRoot}training/material/lists-cards.html">Tạo Danh sách
+và Thẻ</a>.</p>
+
+
+<h3>Đổ bóng Dạng xem</h3>
+
+<p>Bên cạnh các thuộc tính X và Y, dạng xem trong Android nay có
+thêm thuộc tính Z. Thuộc tính mới này biểu diễn độ cao của một dạng xem và sẽ quyết định:</p>
+
+<ul>
+<li>Kích cỡ của đổ bóng: dạng xem có giá trị Z cao hơn sẽ đặt đổ bóng lớn hơn.</li>
+<li>Thứ tự vẽ: dạng xem có giá trị Z cao hơn sẽ xuất hiện phía trên những dạng xem khác.</li>
+</ul>
+
+<div style="width:290px;margin-left:35px;float:right">
+  <div class="framed-nexus5-port-span-5">
+  <video class="play-on-hover" autoplay>
+    <source src="{@docRoot}design/material/videos/ContactsAnim.mp4"/>
+    <source src="{@docRoot}design/videos/ContactsAnim.webm"/>
+    <source src="{@docRoot}design/videos/ContactsAnim.ogv"/>
+  </video>
+  </div>
+  <div style="font-size:10pt;margin-left:20px;margin-bottom:30px">
+    <em>Để phát lại phim, nhấp vào màn hình thiết bị</em>
+  </div>
+</div>
+
+<p>Để biết thêm thông tin, hãy xem phần <a href="{@docRoot}training/material/shadows-clipping.html">Định nghĩa
+Đổ bóng và Dạng xem Cắt hình</a>.</p>
+
+
+<h3>Hoạt hình</h3>
+
+<p>API hoạt hình mới cho phép bạn tạo hoạt hình tùy chỉnh cho phản hồi chạm trong điều khiển UI,
+thay đổi trạng thái xem và chuyển tiếp hoạt động.</p>
+
+<p>Những API này cho phép bạn:</p>
+
+<ul>
+<li style="margin-bottom:15px">
+Phản hồi lại sự kiện chạm trong dạng xem của mình bằng hoạt hình <strong>phản hồi chạm</strong>.
+</li>
+<li style="margin-bottom:15px">
+Ẩn và hiện dạng xem bằng hoạt hình <strong>hiện hình tròn</strong>.
+</li>
+<li style="margin-bottom:15px">
+Chuyển giữa các hoạt động bằng hoạt hình <strong>chuyển tiếp hoạt động</strong> tùy chỉnh.
+</li>
+<li style="margin-bottom:15px">
+Tạo hoạt hình tự nhiên hơn bằng <strong>chuyển động cong</strong>.
+</li>
+<li style="margin-bottom:15px">
+Tạo hoạt hình cho các thay đổi trong một hoặc nhiều thuộc tính dạng xem bằng hoạt hình <strong>thay đổi trạng thái dạng xem</strong>.
+</li>
+<li style="margin-bottom:15px">
+Thể hiện hoạt hình trong các <strong>nội dung vẽ được theo danh sách trạng thái</strong> giữa những thay đổi về trạng thái dạng xem.
+</li>
+</ul>
+
+<p>Hoạt hình phản hồi chạm được tích hợp vào một vài dạng xem tiêu chuẩn, ví dụ như các nút. Các API mới này
+cho phép bạn tùy biến những hoạt hình này và thêm chúng vào dạng xem tùy chỉnh của mình.</p>
+
+<p>Để biết thêm thông tin, hãy xem phần <a href="{@docRoot}training/material/animations.html">Định nghĩa Hoạt hình
+Tùy chỉnh</a>.</p>
+
+
+<h3>Nội dung vẽ được</h3>
+
+<p>Những khả năng mới này của nội dung vẽ được sẽ giúp bạn triển khai các ứng dụng theo phong cách material design:</p>
+
+<ul>
+<li><strong>Nội dung vẽ được véc-tơ</strong> có thể thay đổi kích cỡ mà không làm mất độ sắc nét và hoàn hảo
+cho các biểu tượng trong ứng dụng đơn sắc.</li>
+<li><strong>Nhuộm nội dung vẽ được</strong> cho phép bạn định nghĩa ảnh bitmap thành mặt nạ alpha và nhuộm
+màu cho chúng theo thời gian chạy.</li>
+<li><strong>Trích xuất màu</strong> cho phép bạn tự động trích xuất màu nổi bật từ
+hình ảnh bitmap.</li>
+</ul>
+
+<p>Để biết thêm thông tin, hãy xem phần <a href="{@docRoot}training/material/drawables.html">Làm việc với
+Nội dung Vẽ được</a>.</p>
diff --git a/docs/html-intl/intl/vi/design/patterns/compatibility.jd b/docs/html-intl/intl/vi/design/patterns/compatibility.jd
new file mode 100644
index 0000000..f1a610b
--- /dev/null
+++ b/docs/html-intl/intl/vi/design/patterns/compatibility.jd
@@ -0,0 +1,70 @@
+page.title=Tương thích Ngược
+page.tags="support"
+page.metaDescription=Lưu ý về cách Android 4.x thích ứng với UI được thiết kế cho các phần cứng và phiên bản HĐH cũ hơn.
+@jd:body
+
+<a class="notice-developers" href="{@docRoot}training/basics/supporting-devices/index.html">
+  <div>
+    <h3>Tài liệu cho Nhà phát triển</h3>
+    <p>Hỗ trợ nhiều Thiết bị khác nhau</p>
+  </div>
+</a>
+
+<p>Những thay đổi đáng kể trong Android 3.0 gồm có:</p>
+<ul>
+<li>Bỏ phím cứng điều hướng (Quay lại, Menu, Tìm kiếm, Trang chủ̉), đổi thành xử lý điều hướng
+  thông qua các nút điều khiển ảo (Quay lại, Trang chủ, Gần đây).</li>
+<li>Mẫu hình thiết thực để sử dụng menu trong thanh hành động.</li>
+</ul>
+<p>Android 4.0 mang những thay đổi cho máy tính bảng sang nền tảng điện thoại.</p>
+
+<h2 id="older-hardware">Thích nghi Android 4.0 với Phần cứng và Ứng dụng cũ hơn</h2>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>Điện thoại có các điều khiển điều hướng ảo</h4>
+<p>Ứng dụng Android được viết cho Android 3.0 trở lên sẽ hiển thị các hành động trong thanh hành động. Những hành động không vừa
+với thanh hành động hoặc không đủ quan trọng để được hiển thị ở mức trên cùng sẽ xuất hiện trong
+vùng tràn hành động.</p>
+<p>Người dùng truy cập vùng tràn hành động bằng cách chạm vào nó trong thanh hành động.</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_virtual_nav.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>Điện thoại có phím điều hướng vật lý</h4>
+<p>Điện thoại Android có phím cứng điều hướng truyền thống không hiển thị thanh điều hướng ảo ở
+phía dưới màn hình. Thay vào đó, có thể sử dụng vùng tràn hành động từ phím cứng menu. Kết quả là
+cửa sổ hành động bật lên có cùng kiểu như trong ví dụ trước, nhưng được hiển thị ở phía dưới màn hình.</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_physical_buttons.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>Ứng dụng kế thừa trên điện thoại có điều khiển điều hướng ảo</h4>
+<p>Khi bạn chạy một ứng dụng được dựng cho Android 2.3 hoặc cũ hơn trên một điện thoại có điều khiển điều hướng
+ảo, điều khiển vùng tràn hành động sẽ xuất hiện phía bên phải của thanh điều hướng ảo. Bạn có thể
+chạm vào điều khiển này để hiển thị hành động của ứng dụng theo kiểu dáng menu Android truyền thống.</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_legacy_apps.png">
+
+  </div>
+</div>
diff --git a/docs/html-intl/intl/vi/design/patterns/confirming-acknowledging.jd b/docs/html-intl/intl/vi/design/patterns/confirming-acknowledging.jd
new file mode 100644
index 0000000..e0253c3
--- /dev/null
+++ b/docs/html-intl/intl/vi/design/patterns/confirming-acknowledging.jd
@@ -0,0 +1,70 @@
+page.title=Xác nhận &amp; Báo nhận
+page.tags=dialog,toast,notification
+@jd:body
+
+<p>Trong một số tình huống, khi người dùng gọi ra một hành động trong ứng dụng của bạn, bạn nên <em>xác nhận</em> hoặc <em>báo nhận</em> hành động đó thông qua văn bản.</p>
+
+<div class="cols">
+  <div class="col-6">
+    <img src="{@docRoot}design/media/confirm_ack_confirming.png">
+    <p><strong>Xác nhận</strong> là việc yêu cầu người dùng xác minh rằng họ thực sự muốn tiếp tục hành động mà họ vừa gọi ra. Trong một số trường hợp, xác nhận được đưa ra cùng với một cảnh báo hoặc thông tin trọng yếu liên quan tới hành động mà họ cần cân nhắc.</p>
+  </div>
+  <div class="col-6">
+    <img src="{@docRoot}design/media/confirm_ack_acknowledge.png">
+    <p><strong>Báo nhận</strong> là việc hiển thị văn bản để người dùng biết rằng hành động họ vừa gọi ra đã được hoàn tất. Điều này loại bỏ sự không chắc chắn về các thao tác không biểu thị mà hệ thống đang thực hiện. Trong một số trường hợp, báo nhận được đưa ra cùng với một tùy chọn hoàn tác hành động đó.</p>
+  </div>
+</div>
+
+<p>Giao tiếp với người dùng theo những cách này có thể giúp gỡ bỏ sự không chắc chắn về những thứ đã hoặc sẽ xảy ra. Xác nhận hoặc báo nhận cũng có thể ngăn người dùng mắc sai lầm mà họ có thể hối tiếc.</p>
+
+<h2>Khi nào thì xác nhận hoặc báo nhận hành động của người dùng</h2>
+<p>Không phải hành động nào cũng chắc chắn có xác nhận hay báo nhận. Hãy sử dụng lưu đồ sau làm hướng dẫn đưa ra quyết định thiết kế của bạn.</p>
+<img src="{@docRoot}design/media/confirm_ack_flowchart.png">
+
+<h2>Xác nhận</h2>
+<div class="cols">
+  <div class="col-6">
+    <h4>Ví dụ: Google Play Books</h4>
+    <img src="{@docRoot}design/media/confirm_ack_ex_books.png">
+    <p>Trong ví dụ này, người dùng đã yêu cầu xóa một cuốn sách khỏi thư viện Google Play của mình. Một <a href="{@docRoot}design/building-blocks/dialogs.html#alerts">cảnh báo</a> hiện ra để xác nhận hành động này bởi quan trọng là phải hiểu rằng cuốn sách sẽ không còn khả dụng trên bất cứ thiết bị nào nữa.</p>
+    <p>Khi tạo một hộp thoại xác nhận, hãy đặt tiêu đề có ý nghĩa bằng cách thể hiện hành động được yêu cầu đó.</p>
+  </div>
+  <div class="col-7">
+    <h4>Ví dụ: Android Beam</h4>
+    <img src="{@docRoot}design/media/confirm_ack_ex_beam.png">
+    <p>Không nhất thiết phải đưa ra xác nhận trong cảnh báo có hai nút. Sau khi khởi chạy Android Beam, người dùng được nhắc chạm vào nội dung muốn chia sẻ (trong ví dụ này là một ảnh chụp). Nếu quyết định không tiếp tục, họ chỉ cần đưa điện thoại của mình ra xa.</p>
+  </div>
+</div>
+
+<h2>Báo nhận</h2>
+<div class="cols">
+  <div class="col-6">
+    <h4>Ví dụ: Bỏ đi bản thảo Gmail đã lưu</h4>
+    <img src="{@docRoot}design/media/confirm_ack_ex_draftsave.png">
+    <p>Trong ví dụ này, nếu người dùng điều hướng quay lại hoặc lên trên từ màn hình soạn thảo Gmail thì có thể sẽ xảy ra việc ngoài ý muốn: bản thảo hiện tại được tự động lưu. Báo nhận dưới hình thức cửa sổ sẽ khiến bản thảo đó biểu hiện ra ngoài. Cửa sổ này sẽ mờ dần sau vài giây.</p>
+    <p>Ở đây việc hoàn tác sẽ không thích hợp bởi việc lưu là do ứng dụng khởi chạy chứ không phải người dùng. Sẽ dễ dàng và nhanh chóng tiếp tục soạn thư bằng cách điều hướng tới danh sách bản thảo.</p>
+
+  </div>
+  <div class="col-6">
+    <h4>Ví dụ: Đã xóa hội thoại Gmail</h4>
+    <img src="{@docRoot}design/media/confirm_ack_draft_deleted.png">
+    <p>Sau khi người dùng xóa một hội thoại khỏi danh sách trong Gmail, báo nhận sẽ xuất hiện cùng tùy chọn hoàn tác. Báo nhận vẫn còn đó tới khi người dùng thực hiện một hành động không liên quan, ví dụ như cuộn danh sách.</p>
+  </div>
+</div>
+
+<h2>Không xác nhận hoặc báo nhận</h2>
+<div class="cols">
+  <div class="col-6">
+    <h4>Ví dụ: hành động +1</h4>
+    <img style="padding: 33px 0 30px;" src="{@docRoot}design/media/confirm_ack_ex_plus1.png">
+    <p><strong>Xác nhận là không cần thiết</strong>. Nếu người dùng vô tình +1 thì cũng không sao. Họ chỉ cần chạm lại vào nút này để hoàn tác hành động đó.</p>
+    <p><strong>Báo nhận là không cần thiết</strong>. Người dùng sẽ thấy nút +1 bật lại và chuyển màu đỏ. Đó là một dấu hiệu rất rõ ràng.</p>
+  </div>
+  <div class="col-7">
+    <h4>Ví dụ: Xóa một ứng dụng khỏi Màn hình Trang chủ</h4>
+    <img src="{@docRoot}design/media/confirm_ack_ex_removeapp.png">
+    <p><strong>Xác nhận là không cần thiết</strong>. Đây là một hành động có chủ ý: người dùng phải kéo và thả một mục lên một mụ̣c tiêu tương đối lớn và tách biệt. Vì thế, rất khó có khả năng xảy ra trường hợp vô ý. Nhưng nếu người dùng hối hận về quyết định, họ chỉ mất vài giây để đưa trở lại như cũ.</p>
+    <p><strong>Báo nhận là không cần thiết</strong>. Người dùng sẽ biết ứng dụng đã biến mất khỏi Màn hình Trang chủ bởi họ khiến nó biến mất bằng cách kéo nó đi.</p>
+
+  </div>
+</div>
diff --git a/docs/html-intl/intl/vi/design/patterns/navigation.jd b/docs/html-intl/intl/vi/design/patterns/navigation.jd
new file mode 100644
index 0000000..98490db
--- /dev/null
+++ b/docs/html-intl/intl/vi/design/patterns/navigation.jd
@@ -0,0 +1,213 @@
+page.title=Điều hướng bằng Quay lại và Lên trên
+page.tags="navigation","activity","task","up navigation","back navigation"
+page.image=/design/media/navigation_between_siblings_gmail.png
+@jd:body
+
+<a class="notice-developers" href="{@docRoot}training/implementing-navigation/index.html">
+  <div>
+    <h3>Tài liệu cho Nhà phát triển</h3>
+    <p>Triển khai Điều hướng Hiệu quả</p>
+  </div>
+</a>
+
+<p itemprop="description">Điều hướng nhất quán là một thành phần thiết yếu trong trải nghiệm người dùng nói chung. Một vài điều nhỏ bé lại khiến
+người dùng khó chịu hơn so với điều hướng cơ bản chính là hành xử không nhất quán và không như kỳ vọng. Android 3.0
+đã giới thiệu những thay đổi đáng kể về hành vi điều hướng toàn cục. Tuân thủ kỹ lưỡng các hướng dẫn
+về Quay lại và Lên trên sẽ giúp việc điều hướng trên ứng dụng của bạn trở nên dễ đoán và đáng tin cậy cho người dùng của bạn.</p>
+<p>Phiên bản Android 2.3 và mới hơn dựa vào nút <em>Quay lại</em> của hệ thống để hỗ trợ điều hướng trong một
+ứng dụng. Với việc giới thiệu thanh hành động trong Android 3.0, một cơ chế điều hướng thứ hai đã xuất hiện:
+nút <em>Lên trên</em>, bao gồm biểu tượng ứng dụng và dấu nháy lùi trái.</p>
+
+<img src="{@docRoot}design/media/navigation_with_back_and_up.png">
+
+<h2 id="up-vs-back">Lên trên so với Quay lại</h2>
+
+<p>Nút Lên trên được sử dụng để điều hướng bên trong một ứng dụng dựa trên mối quan hệ thứ bậc
+giữa các màn hình. Ví dụ, nếu màn hình A hiển thị một danh sách các mục và việc chọn một mục sẽ dẫn đến
+màn hình B (trình bày chi tiết hơn về mục đó), khi đó B sẽ đưa ra nút Lên trên để
+quay lại màn hình A.</p>
+<p>Nếu một màn hình đang ở trên cùng trong một ứng dụng (cụ thể là trang chủ của ứng dụng), thì nó sẽ xuất hiện nút
+Lên trên.</p>
+
+<p>Nút Quay lại của hệ thống được sử dụng để điều hướng ngược theo thứ tự thời gian, qua lịch sử các màn hình
+mà người dùng mới thao tác qua. Nó thường được dựa trên mối quan hệ thời gian
+giữa các màn hình thay vì thứ bậc của ứng dụng.</p>
+
+<p>Khi màn hình xem trước đó cũng đồng thời là màn hình mẹ theo thứ bậc của màn hình hiện tại, nhấn nút
+Quay lại sẽ có cùng kết quả như khi nhấn nút Lên trên&mdash;điều này thường hay
+xảy ra. Tuy nhiên, không như nút Lên trên đảm bảo người dùng vẫn còn trong ứng dụng của bạn,
+nút Quay lại có thể trả người dùng về màn hình Trang chủ hoặc thậm chí sang một ứng dụng khác.</p>
+
+<img src="{@docRoot}design/media/navigation_up_vs_back_gmail.png">
+
+<p>Nút Quay lại cũng hỗ trợ một vài hành vi không trực tiếp gắn với điều hướng giữa các màn hình:
+</p>
+<ul>
+<li>Bỏ qua cửa sổ nổi (hộp thoại, cửa sổ bật lên)</li>
+<li>Bỏ qua thanh hành động ngữ cảnh và bỏ tô sáng khỏi mục đã chọn</li>
+<li>Ẩn bàn phím trên màn hình (IME)</li>
+</ul>
+<h2 id="within-app">Điều hướng trong Ứng dụng của Bạn</h2>
+
+<h4>Điều hướng tới màn hình với nhiều điểm bắt đầu</h4>
+<p>Đôi khi một màn hình không chỉ có một vị trí cố định trong thứ bậc của ứng dụng và bạn có thể truy cập nó
+từ nhiều điểm bắt đầu&mdash;ví dụ như màn hình cài đặt có thể được truy cập từ bất cứ màn hình
+nào khác trong ứng dụng của bạn. Trong trường hợp này, nút Lên trên sẽ chọn quay lại màn hình đã chuyển đến, có tác dụng
+giống như Quay lại.</p>
+<h4>Thay đổi dạng xem bên trong một màn hình</h4>
+<p>Thay đổi tùy chọn dạng xem cho một màn hình không làm thay đổi hành vi Lên trên hay Quay lại: màn hình vẫn
+ở cùng một chỗ trong thứ bậc của ứng dụng và không tạo thêm lịch sử điều hướng mới nào.</p>
+<p>Ví dụ về thay đổi dạng xem gồm:</p>
+<ul>
+<li>Chuyển dạng xem bằng tab và/hoặc trượt nhanh trái phải</li>
+<li>Chuyển dạng xem bằng danh sách thả xuống (còn gọi là tab thu gọn)</li>
+<li>Lọc một danh sách</li>
+<li>Sắp xếp một danh sách</li>
+<li>Thay đổi đặc tính hiển thị (như thu phóng)</li>
+</ul>
+<h4>Điều hướng giữa các màn hình anh em</h4>
+<p>Khi ứng dụng của bạn hỗ trợ điều hướng từ một danh mục tới một dạng xem chi tiết của một trong những mục đó, thường
+nó ưu tiên hỗ trợ điều hướng theo hướng từ mục đó tới một mục khác ở phía trước hoặc
+phía sau nó trong danh sách. Ví dụ, trong Gmail, bạn có thể dễ dàng trượt nhanh sang trái hoặc phải từ một hội thoại
+để xem hội thoại mới hơn hoặc cũ hơn trong cùng Hộp thư đến. Như khi thay đổi dạng xem trong một màn hình,
+điều hướng đó không làm thay đổi hành vi Lên trên hoặc Quay lại.</p>
+
+<img src="{@docRoot}design/media/navigation_between_siblings_gmail.png">
+
+<p>Tuy nhiên, có một trường hợp ngoại lệ đáng chú ý đó là khi duyệt giữa các dạng xem chi tiết có liên quan, không
+ràng buộc với nhau bởi danh sách chuyển đến&mdash;ví dụ như khi duyệt trong Play Store giữa các ứng dụng từ
+cùng một nhà phát triển hoặc giữa các album bởi cùng một nghệ sĩ. Trong các trường hợp này, truy cập vào từng liên kết không tạo ra
+lịch sử, khiến nút Quay lại đi qua từng màn hình được xem trước đó. Thao tác Lên trên sẽ tiếp tục
+bỏ qua những màn hình liên quan này và điều hướng tới màn hình bộ chứa được xem gần đây nhất.</p>
+
+<img src="{@docRoot}design/media/navigation_between_siblings_market1.png">
+
+<p>Bạn có khả năng thiết kế để hành vi Lên trên thông minh hơn dựa trên hiểu biết của mình về dạng xem
+chi tiết. Suy rộng từ ví dụ về Play Store bên trên, tưởng tượng người dùng đã điều hướng từ
+Cuốn sách xem gần nhất tới chi tiết chuyển thể Phim. Trong trường hợp đó, thao tác Lên trên có thể trả về một bộ chứa
+(Phim) mà trước đó người dùng chưa điều hướng qua.</p>
+
+<img src="{@docRoot}design/media/navigation_between_siblings_market2.png">
+
+<h2 id="into-your-app">Điều hướng tới Ứng dụng của Bạn thông qua Widget và Thông báo trên Màn hình Trang chủ</h2>
+
+<p>Bạn có thể sử dụng widget hoặc thông báo trên màn hình Trang chủ để giúp người dùng của mình điều hướng trực tiếp tới màn hình
+nằm sâu trong thứ bậc ứng dụng của bạn. Ví dụ, widget Hộp thư đến của Gmail và thông báo thư mới có thể
+vừa bỏ qua màn hình Hộp thư đến, vừa đưa người dùng trực tiếp tới dạng xem hội thoại.</p>
+
+<p>Trong cả hai trường hợp này, hãy điều khiển nút Lên trên như sau:</p>
+
+<ul>
+<li><em>Nếu màn hình đích thường được truy cập từ một màn hình cụ thể trong ứng dụng
+của bạn</em>, thao tác Lên trên sẽ điều hướng tới màn hình đó.</li>
+<li><em>Nếu không</em>, thao tác Lên trên sẽ điều hướng tới màn hình trên cùng ("Trang chủ") của ứng dụng của bạn.</li>
+</ul>
+
+<p>Trong trường hợp nút Quay lại, bạn nên thiết kế để việc điều hướng dễ đoán hơn bằng cách chèn vào ngăn xếp
+của tác vụ toàn bộ đường dẫn điều hướng lên trên tới màn hình trên cùng của ứng dụng. Làm vậy sẽ cho phép những người dùng nào
+quên cách họ vào ứng dụng của bạn sẽ điều hướng tới màn hình trên cùng của ứng dụng trước khi
+thoát.</p>
+
+<p>Ví dụ, widget màn hình Trang chủ của Gmail có một nút để đi trực tiếp vào màn hình
+soạn email của nó. Lên hoặc Quay lại từ màn hình soạn thư sẽ đưa người dùng tới Hộp thư đến, và từ đó
+nút Quay lại tiếp tục đưa về Trang chủ.</p>
+
+<img src="{@docRoot}design/media/navigation_from_outside_back.png">
+
+<h4>Thông báo gián tiếp</h4>
+
+<p>Khi ứng dụng của bạn cần trình bày thông tin về nhiều sự kiện đồng thời, nó có thể sử dụng
+thông báo duy nhất để chuyển hướng người dùng tới một màn hình xen kẽ. Màn hình này tổng hợp những sự kiện
+này và cung cấp đường dẫn cho người dùng đi sâu vào ứng dụng. Thông báo kiểu này được gọi
+là <em>thông báo gián tiếp</em>.</p>
+
+<p>Không như thông báo tiêu chuẩn (trực tiếp), nhấn Quay lại từ màn hình xen kẽ của một thông báo gián tiếp
+sẽ trả người dùng về điểm mà từ đó thông báo đó được kích hoạt&mdash;không có
+màn hình bổ sung nào được chèn vào ngăn xếp. Sau khi người dùng tiến vào ứng dụng từ màn hình xen kẽ
+, thao tác Lên trên và Quay lại có tác dụng như với thông báo tiêu chuẩn, như được mô tả ở trên:
+điều hướng bên trong ứng dụng thay vì quay lại màn hình xen kẽ.</p>
+
+<p>Ví dụ, giả sử một người dùng trong Gmail nhận được một thông báo gián tiếp từ Lịch. Chạm
+vào thông báo này để mở ra màn hình xen kẽ, trong đó hiển thị nhắc nhở cho một vài sự kiện
+khác nhau. Chạm vào Quay lại từ màn hình xen kẽ sẽ trả người dùng về Gmail. Chạm vào một sự kiện
+cụ thể sẽ đưa người dùng ra khỏi màn hình xen kẽ và vào ứng dụng Lịch để hiển thị chi tiết về
+sự kiện. Từ chi tiết sự kiện, Lên trên và Quay lại sẽ điều hướng tới dạng xem trên cùng của Lịch.</p>
+
+<img src="{@docRoot}design/media/navigation_indirect_notification.png">
+
+<h4>Thông báo bật lên</h4>
+
+<p><em>Thông báo bật lên</em> sẽ bỏ qua ngăn thông báo thay vì xuất hiện trực tiếp phía
+trước người dùng. Chúng hiếm khi được sử dụng và <strong>nên được để dành cho những dịp khi cần
+phản ứng kịp thời và việc gián đoạn ngữ cảnh của người dùng là cần thiết</strong>. Ví dụ,
+Talk sử dụng kiểu này để cảnh báo người dùng về lời mời từ một người bạn để tham gia trò chuyện video, bởi
+lời mời này sẽ tự động hết hạn sau một vài giây.</p>
+
+<p>Xét về hành vi điều hướng, thông báo bật lên bám sát chặt chẽ hành vi của màn hình xen kẽ
+trong thông báo gián tiếp. Quay lại sẽ bỏ qua thông báo bật lên. Nếu người dùng điều hướng
+từ màn hình bật lên vào ứng dụng thông báo, hành vi Lên trên và Quay lại sẽ bám sát quy tắc áp dụng với thông báo tiêu chuẩn,
+điều hướng bên trong ứng dụng.</p>
+
+<img src="{@docRoot}design/media/navigation_popup_notification.png">
+
+<h2 id="between-apps">Điều hướng giữa các Ứng dụng</h2>
+
+<p>Một trong những thế mạnh cơ bản của hệ thống Android đó là khả năng các ứng dụng kích hoạt
+lẫn nhau, giúp người dùng có thể điều hướng trực tiếp từ ứng dụng này sang ứng dụng khác. Ví dụ, một ứng dụng
+cần chụp ảnh có thể kích hoạt ứng dụng Camera, ứng dụng này sẽ trả
+ảnh về ứng dụng chuyển đến. Điều này đặc biệt có ích đối với cả nhà phát triển, những người có thể dễ dàng tận dụng
+đoạn mã từ các ứng dụng khác, lẫn người dùng, những người thích có một trải nghiệm nhất quán đối với những hành động
+được thực hiện thường xuyên.</p>
+
+<p>Để hiểu rõ điều hướng giữa các ứng dụng, quan trọng là phải hiểu được hành vi bộ khung Android
+được đề cập dưới đây.</p>
+
+<h4>Hoạt động, tác vụ và ý định</h4>
+
+<p>Trong Android, <strong>hoạt động</strong> là một thành phần ứng dụng định nghĩa một màn hình
+thông tin và tất cả hành động liên kết mà người dùng có thể thực hiện. Ứng dụng của bạn là tập hợp
+của nhiều hoạt động, bao gồm cả hoạt động do bạn tạo và hoạt động mà bạn sử dụng lại từ các ứng dụng khác.</p>
+
+<p><strong>Tác vụ</strong> là trình tự các hoạt động mà một người dùng tuân theo để hoàn thành một mục tiêu. 
+Tác vụ đơn có thể sử dụng các hoạt động từ chỉ một ứng dụng, hoặc có thể dựa trên hoạt động từ nhiều
+ứng dụng khác nhau.</p>
+
+<p><strong>Ý định</strong> là một cơ chế để một ứng dụng báo hiệu rằng nó muốn sự trợ giúp
+của một ứng dụng khác khi thực hiện một hành động. Các hoạt động của một ứng dụng có thể biểu thị những ý định
+mà chúng có thể phản hồi. Đối với những ý định thường gặp như "Chia sẻ", người dùng có thể cài đặt nhiều ứng dụng
+có khả năng thực hiện yêu cầu đó.</p>
+
+<h4>Ví dụ: điều hướng giữa các ứng dụng để hỗ trợ chia sẻ</h4>
+
+<p>Để hiểu những hoạt động, tác vụ và ý định này vận hành với nhau như thế nào, hãy xem cách một ứng dụng cho phép người dùng
+chia sẻ nội dung bằng cách dùng một ứng dụng khác. Ví dụ, khởi chạy ứng dụng Play Store từ Trang chủ sẽ bắt đầu
+Tác vụ A mới (xem hình bên dưới). Sau khi điều hướng qua Play Store và chạm vào một cuốn sách được quảng cáo
+để xem chi tiết của sách, người dùng vẫn ở trong cùng một tác vụ, mở rộng nó bằng cách thêm vào các hoạt động. Kích hoạt
+hành động Chia sẻ sẽ nhắc người dùng bằng một hộp thoại liệt kê từng hoạt động một (từ các ứng dụng khác nhau)
+mà đã đăng ký xử lý ý định Chia sẻ đó.</p>
+
+<img src="{@docRoot}design/media/navigation_between_apps_inward.png">
+
+<p>Khi người dùng chọn chia sẻ qua Gmail, hoạt động soạn email của Gmail sẽ được thêm làm hoạt động tiếp tục
+Tác vụ A&mdash;không có tác vụ mới nào được tạo thêm. Nếu Gmail có tác vụ riêng đang chạy nền, nó sẽ
+không bị ảnh hưởng.</p>
+
+<p>Từ hoạt động soạn email, gửi thư hoặc chạm vào nút Quay lại sẽ trả người dùng về
+hoạ̣t động chi tiết về cuốn sách. Những lần chạm sau đó vào Quay lại sẽ tiếp tục điều hướng quay lại qua
+Store và cuối cùng về lại Trang chủ.</p>
+
+<img src="{@docRoot}design/media/navigation_between_apps_back.png">
+
+<p>Tuy nhiên, nếu chạm vào Lên trên từ hoạt động soạn email, người dùng biểu thị mong muốn vẫn ở nguyên trong
+Gmail. Hoạt động danh sách hội thoại của Gmail xuất hiện và Tác vụ B mới sẽ được tạo cho nó. Các tác vụ mới
+sẽ luôn được liên kết gốc với Trang chủ, vì thế chạm vào Quay lại từ danh sách hội thoại sẽ quay lại đó.</p>
+
+<img src="{@docRoot}design/media/navigation_between_apps_up.png">
+
+<p>Tác vụ A duy trì chạy nền và người dùng có thể quay lại nó sau (ví dụ, thông qua
+màn hình Gần đây). Nếu Gmail đã có tác vụ riêng đang chạy nền, nó sẽ được thay thế
+bằng Tác vụ B&mdash;ngữ cảnh trước đó sẽ bị bỏ đi phục vụ cho mục đích mới của người dùng.</p>
+
+<p>Khi ứng dụng của bạn đăng ký điều khiển ý định bằng một hoạt động nằm sâu trong thứ bậc của ứng dụng,
+hãy tham khảo phần <a href="#into-your-app">Điều hướng tới Ứng dụng của Bạn thông qua Widget và Thông báo trên
+Màn hình Trang chủ</a> để xem hướng dẫn về cách quy định điều hướng Lên trên.</p>
diff --git a/docs/html-intl/intl/vi/guide/components/activities.jd b/docs/html-intl/intl/vi/guide/components/activities.jd
new file mode 100644
index 0000000..83e7669
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/components/activities.jd
@@ -0,0 +1,756 @@
+page.title=Các hoạt động
+page.tags=hoạt động,ý định
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Trong tài liệu này</h2>
+<ol>
+  <li><a href="#Creating">Tạo một Hoạt động</a>
+    <ol>
+      <li><a href="#UI">Triển khai một giao diện người dùng</a></li>
+      <li><a href="#Declaring">Khai báo hoạt động trong bản kê khai</a></li>
+    </ol>
+  </li>
+  <li><a href="#StartingAnActivity">Bắt đầu một Hoạt động</a>
+    <ol>
+      <li><a href="#StartingAnActivityForResult">Bắt đầu một hoạt động cho một kết quả</a></li>
+    </ol>
+  </li>
+  <li><a href="#ShuttingDown">Tắt một Hoạt động</a></li>
+  <li><a href="#Lifecycle">Quản lý Vòng đời của Hoạt động</a>
+    <ol>
+      <li><a href="#ImplementingLifecycleCallbacks">Triển khai gọi lại vòng đời</a></li>
+      <li><a href="#SavingActivityState">Lưu trạng thái của hoạt động</a></li>
+      <li><a href="#ConfigurationChanges">Xử lý thay đổi về cấu hình</a></li>
+      <li><a href="#CoordinatingActivities">Điều phối hoạt động</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>Lớp khóa</h2>
+<ol>
+  <li>{@link android.app.Activity}</li>
+</ol>
+
+<h2>Xem thêm</h2>
+<ol>
+  <li><a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tác vụ và Ngăn
+Xếp</a></li>
+</ol>
+
+</div>
+</div>
+
+
+
+<p>{@link android.app.Activity} là một thành phần ứng dụng cung cấp một màn hình mà với nó
+người dùng có thể tương tác để thực hiện một điều gì đó, chẳng hạn như quay số điện thoại, chụp ảnh, gửi e-mail hoặc
+xem bản đồ. Mỗi hoạt động được cho trong một cửa sổ là nơi để vẽ giao diện người dùng của nó. Cửa sổ này
+thường lấp đầy màn hình, nhưng có thể nhỏ hơn màn hình và nổi bên trên các cửa sổ
+khác.</p>
+
+<p> Ứng dụng thường bao gồm nhiều hoạt động được liên kết lỏng lẻo
+với nhau. Thường thì một hoạt động trong một ứng dụng sẽ được quy định là hoạt động "chính", nó được
+trình bày trước người dùng khi khởi chạy ứng dụng lần đầu. Sau đó, mỗi
+hoạt động có thể bắt đầu một hoạt động khác để thực hiện các hành động khác nhau. Mỗi khi một hoạt động
+mới bắt đầu, hoạt động trước đó sẽ bị dừng lại, nhưng hệ thống vẫn giữ nguyên hoạt động
+trong một ngăn xếp ("back stack"). Khi một hoạt động mới bắt đầu, nó được đẩy lên ngăn xếp và
+chiếm lấy tiêu điểm của người dùng. Ngăn xếp sẽ tuân theo cơ chế xếp chồng cơ bản "vào cuối, ra đầu",
+vì thế, khi người dùng kết thúc hoạt động hiện tại và nhấn nút <em>Quay lại</em>, nó 
+sẽ được đẩy ra khỏi ngăn xếp (và bị hủy) và hoạt động trước đó sẽ tiếp tục. (Ngăn xếp được
+đề cập kỹ hơn trong tài liệu <a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tác vụ
+và Ngăn Xếp</a>.)</p>
+
+<p>Khi một hoạt động bị dừng vì một hoạt động mới bắt đầu, nó được thông báo về sự thay đổi trạng thái này
+qua các phương pháp gọi lại vòng đời của hoạt động.
+Có một vài phương pháp gọi lại vòng đời mà một hoạt động có thể nhận, do một thay đổi về
+trạng thái của nó&mdash;dù hệ thống đang tạo, dừng hay tiếp tục nó, hay hủy nó&mdash;và
+mỗi lần gọi lại cho bạn cơ hội thực hiện công việc cụ thể
+phù hợp với sự thay đổi trạng thái đó. Ví dụ, khi bị dừng, hoạt động của bạn sẽ giải phóng mọi
+đối tượng lớn, chẳng hạn như các kết nối mạng hoặc cơ sở dữ liệu. Khi hoạt động tiếp tục, bạn có thể
+thu lại những tài nguyên cần thiết và tiếp tục những hành động bị gián đoạn. Những chuyển tiếp trạng thái này
+đều là một phần của vòng đời hoạt động.</p>
+
+<p>Phần còn lại của tài liệu này bàn đến những nội dung cơ bản về cách xây dựng và sử dụng một hoạt động,
+bao gồm một nội dung đề cập đầy đủ về cách vận hành của vòng đời hoạt động, để bạn có thể quản lý tốt
+sự chuyển tiếp giữa các trạng thái hoạt động khác nhau.</p>
+
+
+
+<h2 id="Creating">Tạo một Hoạt động</h2>
+
+<p>Để tạo một hoạt động, bạn phải tạo một lớp con của {@link android.app.Activity} (hoặc
+một lớp con hiện tại của nó). Trong lớp con của mình, bạn cần triển khai các phương pháp gọi lại mà hệ thống
+gọi khi hoạt động chuyển tiếp giữa các trạng thái khác nhau trong vòng đời, chẳng hạn như khi
+hoạt động đang được tạo, dừng, tiếp tục, hoặc hủy. Hai phương pháp gọi lại quan trọng nhất
+là:</p>
+
+<dl>
+  <dt>{@link android.app.Activity#onCreate onCreate()}</dt>
+  <dd>Bạn phải triển khai phương pháp này. Hệ thống gọi phương pháp này khi tạo hoạt động
+của bạn. Trong quá trình thực hiện của mình, bạn nên khởi chạy những thành phần thiết yếu cho hoạt động
+của mình.
+    Quan trọng nhất, đây là lúc bạn phải gọi {@link android.app.Activity#setContentView
+    setContentView()} để định nghĩa bố trí cho giao diện người dùng của hoạt động.</dd>
+  <dt>{@link android.app.Activity#onPause onPause()}</dt>
+  <dd>Hệ thống gọi phương pháp này là dấu hiệu đầu tiên về việc người dùng đang rời khỏi hoạt động
+của bạn (mặc dù không phải lúc nào cũng có nghĩa rằng hoạt động đang bị hủy). Trường hợp này thường là khi bạn
+định thực hiện bất kỳ thay đổi nào vẫn cần có hiệu lực ngoài phiên của người dùng hiện thời (vì
+người dùng có thể không quay lại).</dd>
+</dl>
+
+<p>Có một vài phương pháp gọi lại vòng đời khác mà bạn nên sử dụng để đem đến
+một trải nghiệm người dùng mượt mà giữa các hoạt động và xử lý những gián đoạn bất ngờ khiến hoạt động của bạn
+bị dừng và thậm chí bị hủy. Tất cả phương pháp gọi lại vòng đời được bàn sau trong phần
+nói về <a href="#Lifecycle">Quản lý Vòng đời của Hoạt động</a>.</p>
+
+
+
+<h3 id="UI">Triển khai một giao diện người dùng</h3>
+
+<p> Giao diện người dùng cho một hoạt động sẽ được cung cấp theo phân cấp dạng xem&mdash;đối tượng được suy ra
+từ lớp {@link android.view.View}.  Mỗi chế độ xem kiểm soát một không gian chữ nhật riêng
+trong cửa sổ của hoạt động và có thể phản hồi trước tương tác của người dùng. Ví dụ, chế độ xem có thể là
+một nút khởi xướng một hành động khi người dùng chạm vào nó.</p>
+
+<p>Android cung cấp nhiều chế độ xem sẵn có mà bạn có thể sử dụng để thiết kế và tổ chức cho bố trí
+của mình. "Widget" là những chế độ xem cung cấp những phần tử trực quan (và tương tác) cho màn hình, chẳng hạn như
+nút, trường văn bản, hộp kiểm, hay chỉ là một hình ảnh. "Bố trí" là những chế độ xem được suy ra từ {@link
+android.view.ViewGroup} cung cấp một mô hình bố trí duy nhất cho các chế độ xem con của nó, chẳng hạn như bố trí
+tuyến tính, bố trí lưới, hoặc bố trí tương đối. Bạn cũng có thể chia thành lớp con {@link android.view.View} và các lớp
+{@link android.view.ViewGroup} (hoặc các lớp con hiện tại) để tạo widget và
+bố trí của chính mình và áp dụng chúng vào bố trí hoạt động của bạn.</p>
+
+<p>Cách phổ biến nhất để định nghĩa một bố trí bằng cách sử dụng các chế độ xem là dùng một tệp bố trí XML được lưu trong tài nguyên ứng dụng
+của bạn. Bằng cách này, bạn có thể duy trì thiết kế giao diện người dùng của mình độc lập với
+mã nguồn định nghĩa hành vi của hoạt động. Bạn có thể đặt bố trí làm UI cho hoạt động
+của mình bằng {@link android.app.Activity#setContentView(int) setContentView()}, chuyển
+ID tài nguyên cho bố trí. Tuy nhiên, bạn cũng có thể tạo {@link android.view.View} mới trong mã hoạt động
+của mình và xây dựng một cấp bậc chế độ xem bằng cách chèn các {@link
+android.view.View} mới vào một {@link android.view.ViewGroup}, sau đó sử dụng bố trí đó bằng cách chuyển root
+{@link android.view.ViewGroup} sang {@link android.app.Activity#setContentView(View)
+setContentView()}.</p>
+
+<p>Để biết thông tin về việc tạo một giao diện người dùng, hãy xem tài liệu <a href="{@docRoot}guide/topics/ui/index.html">Giao diện Người dùng</a>.</p>
+
+
+
+<h3 id="Declaring">Khai báo hoạt động trong bản kê khai</h3>
+
+<p>Bạn phải khai báo hoạt động của mình trong tệp bản kê khai để hoạt động
+có thể truy cập được vào hệ thống. Để khai báo hoạt động của mình, hãy mở tệp bản kê khai của bạn và thêm một phần tử  <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 
+làm con của phần tử <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>
+. Ví dụ:</p>
+
+<pre>
+&lt;manifest ... &gt;
+  &lt;application ... &gt;
+      &lt;activity android:name=".ExampleActivity" /&gt;
+      ...
+  &lt;/application ... &gt;
+  ...
+&lt;/manifest &gt;
+</pre>
+
+<p>Có vài thuộc tính khác mà bạn có thể nêu trong phần tử này, để định nghĩa các thuộc tính
+như nhãn cho hoạt động, biểu tượng cho hoạt động, hoặc chủ đề mô tả kiểu UI của
+hoạt động. Thuộc tính <a href="{@docRoot}guide/topics/manifest/activity-element.html#nm">{@code android:name}</a>
+là thuộc tính bắt buộc duy nhất&mdash;nó quy định tên lớp của hoạt động. Một khi
+bạn phát hành ứng dụng của mình, bạn không nên thay đổi tên này, vì nếu bạn làm vậy, bạn có thể làm hỏng
+một số tính năng, chẳng hạn như các lối tắt của ứng dụng (hãy đọc bài đăng trên blog, <a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">Những Điều
+Không Thay Đổi Được</a>).</p>
+
+<p>Xem tài liệu tham khảo phần tử <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 
+để biết thêm thông tin về việc khai báo hoạt động của bạn trong bản kê khai.</p>
+
+
+<h4>Sử dụng các bộ lọc ý định</h4>
+
+<p>Một phần tử <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> cũng có thể quy định các bộ lọc ý định khác nhau&mdash;bằng cách sử dụng phần tử <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> &mdash;để khai báo cách thức mà các thành phần khác của ứng dụng có thể
+kích hoạt nó.</p>
+
+<p>Khi bạn tạo một ứng dụng mới bằng cách sử dụng các công cụ SDK của Android, hoạt động chương trình nhỏ
+được tạo cho bạn sẽ tự động bao gồm một bộ lọc ý định khai báo hoạt động
+phản hồi lại hành động "chính" và nên được đặt trong thể loại "trình khởi chạy". Bộ lọc ý định
+trông như thế này:</p>
+
+<pre>
+&lt;activity android:name=".ExampleActivity" android:icon="@drawable/app_icon"&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p>Phần tử <a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> quy định rằng đây là điểm mục nhập "chính" đối với ứng dụng. Phần tử <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> quy định rằng hoạt động này nên được liệt kê trong trình khởi chạy ứng dụng của hệ thống
+(để cho phép người dùng khởi chạy hoạt động này).</p>
+
+<p>Nếu bạn có ý định cho ứng dụng của mình được độc lập và không cho phép các ứng dụng khác
+kích hoạt các hoạt động của nó, vậy bạn không cần bất kỳ bộ lọc ý định nào khác. Chỉ một hoạt động nên có
+hành động "chính" và thể loại "trình khởi chạy" như trong ví dụ trước. Những hoạt động mà
+bạn không muốn cung cấp sẵn cho các ứng dụng khác không nên có bộ lọc ý định và bạn có thể
+tự mình bắt đầu chúng bằng cách sử dụng các ý định rõ ràng (như được đề cập trong phần sau).</p>
+
+<p>Tuy nhiên, nếu bạn muốn hoạt động của mình phản hồi lại những ý định ngầm mà được chuyển giao từ
+các ứng dụng khác (và chính bạn), thì bạn phải định nghĩa các bộ lọc ý định bổ sung cho hoạt động
+của mình. Với mỗi loại ý định mà bạn muốn phản hồi, bạn phải nêu một <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> bao gồm một phần tử 
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> và, không bắt buộc, một phần tử <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> và/hoặc một phần tử <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
+&lt;data&gt;}</a>. Những phần tử này quy định loại ý định mà hoạt động của bạn có thể
+phản hồi.</p>
+
+<p>Để biết thêm thông tin về cách thức các hoạt động của bạn có thể phản hồi lại ý định, hãy xem tài liệu <a href="{@docRoot}guide/components/intents-filters.html">Ý định và Bộ lọc Ý định</a>
+.</p>
+
+
+
+<h2 id="StartingAnActivity">Bắt đầu một Hoạt động</h2>
+
+<p>Bạn có thể bắt đầu một hoạt động khác bằng cách gọi {@link android.app.Activity#startActivity
+  startActivity()}, chuyển cho nó một {@link android.content.Intent} mà mô tả hoạt động bạn
+muốn bắt đầu. Ý định này sẽ quy định hoặc hoạt động chính xác mà bạn muốn bắt đầu hoặc mô tả
+ loại hành động mà bạn muốn thực hiện (và hệ thống lựa chọn hoạt động phù hợp cho bạn,
+thậm chí
+có thể từ một ứng dụng khác). Một ý định cũng có thể mang theo lượng nhỏ dữ liệu sẽ được
+ sử dụng bởi hoạt động được bắt đầu.</p>
+
+<p>Khi đang làm việc trong ứng dụng của chính mình, bạn thường sẽ cần khởi chạy một hoạt động đã biết.
+ Bạn có thể làm vậy bằng cách tạo một ý định trong đó quy định rõ hoạt động bạn muốn bắt đầu,
+sử dụng tên lớp đó. Ví dụ, sau đây là cách một hoạt động bắt đầu một hoạt động khác có tên {@code
+SignInActivity}:</p>
+
+<pre>
+Intent intent = new Intent(this, SignInActivity.class);
+startActivity(intent);
+</pre>
+
+<p>Tuy nhiên, ứng dụng của bạn cũng có thể muốn thực hiện một số hành động, chẳng hạn như gửi một e-mail, tin nhắn
+ văn bản, hoặc cập nhật trạng thái, bằng cách sử dụng dữ liệu từ hoạt động của bạn. Trong trường hợp này, ứng dụng của bạn có thể
+ không có các hoạt động của chính nó để thực hiện những hành động đó, vì vậy, thay vào đó, bạn có thể tận dụng những hoạt động
+ được cung cấp bởi các ứng dụng khác trên thiết bị mà có thể thực hiện hành động cho bạn. Đây là lúc
+ý định thực sự có giá trị&mdash;bạn có thể tạo một ý định mô tả một hành động bạn muốn
+thực hiện và hệ thống
+ sẽ khởi chạy hoạt động phù hợp đó từ một ứng dụng khác. Nếu có
+ nhiều hoạt động mà có thể xử lý ý định, vậy người dùng có thể chọn hoạt động nào sẽ sử dụng. Ví
+ dụ, nếu bạn muốn cho phép người dùng gửi e-mail, bạn có thể tạo
+ ý định sau:</p>
+
+<pre>
+Intent intent = new Intent(Intent.ACTION_SEND);
+intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
+startActivity(intent);
+</pre>
+
+<p>{@link android.content.Intent#EXTRA_EMAIL} phụ được thêm vào ý định là một mảng xâu của
+ các địa chỉ e-mail mà e-mail sẽ được gửi tới. Khi một ứng dụng e-mail phản hồi
+ ý định này, nó đọc mảng xâu được cung cấp trong phần phụ và đặt nó vào trường "đến" của mẫu soạn thảo
+ e-mail. Trong trường hợp này, hoạt động của ứng dụng e-mail bắt đầu và khi người dùng
+ làm xong, hoạt động của bạn sẽ tiếp tục.</p>
+
+
+
+
+<h3 id="StartingAnActivityForResult">Bắt đầu một hoạt động cho một kết quả</h3>
+
+<p>Đôi khi bạn có thể muốn nhận được một kết quả từ hoạt động mà bạn bắt đầu. Trong trường hợp đó,
+hãy bắt đầu hoạt động bằng cách gọi {@link android.app.Activity#startActivityForResult
+  startActivityForResult()} (thay vì {@link android.app.Activity#startActivity
+  startActivity()}). Rồi để nhận được kết quả từ hoạt động
+sau đó, hãy triển khai phương pháp gọi lại {@link android.app.Activity#onActivityResult onActivityResult()}
+. Khi hoạt động sau đó diễn ra xong, nó trả về một kết quả trong một {@link
+android.content.Intent} cho phương pháp {@link android.app.Activity#onActivityResult onActivityResult()}
+của bạn.</p>
+
+<p>Ví dụ, bạn có thể muốn người dùng chọn một trong các liên lạc của họ, vì vậy hoạt động của bạn có thể
+làm gì đó với thông tin trong liên lạc đó. Đây là cách bạn có thể tạo một ý định như vậy và
+xử lý kết quả:</p>
+
+<pre>
+private void pickContact() {
+    // Create an intent to "pick" a contact, as defined by the content provider URI
+    Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
+    startActivityForResult(intent, PICK_CONTACT_REQUEST);
+}
+
+&#64;Override
+protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+    // If the request went well (OK) and the request was PICK_CONTACT_REQUEST
+    if (resultCode == Activity.RESULT_OK &amp;&amp; requestCode == PICK_CONTACT_REQUEST) {
+        // Perform a query to the contact's content provider for the contact's name
+        Cursor cursor = getContentResolver().query(data.getData(),
+        new String[] {Contacts.DISPLAY_NAME}, null, null, null);
+        if (cursor.moveToFirst()) { // True if the cursor is not empty
+            int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
+            String name = cursor.getString(columnIndex);
+            // Do something with the selected contact's name...
+        }
+    }
+}
+</pre>
+
+<p>Ví dụ này thể hiện lô-gic cơ bản mà bạn sẽ sử dụng trong phương pháp {@link
+android.app.Activity#onActivityResult onActivityResult()} của mình để xử lý một
+kết quả hoạt động. Điều kiện đầu tiên kiểm tra xem yêu cầu có thành công không&mdash;nếu có thì
+{@code resultCode} sẽ là {@link android.app.Activity#RESULT_OK}&mdash;và liệu yêu cầu
+mà kiểm tra này đang phản hồi có được biết hay không&mdash;trong trường hợp này, {@code requestCode} phù hợp với
+tham số thứ hai được gửi bằng {@link android.app.Activity#startActivityForResult
+startActivityForResult()}. Từ đó, mã xử lý kết quả hoạt động bằng cách truy vấn
+dữ liệu được trả về trong {@link android.content.Intent} (tham số {@code data}).</p>
+
+<p>Điều xảy ra đó là, {@link
+android.content.ContentResolver} sẽ thực hiện một truy vấn đối với nhà cung cấp nội dung, truy vấn này trả về một
+{@link android.database.Cursor} cho phép đọc dữ liệu được truy vấn. Để biết thêm thông tin, hãy xem tài liệu
+<a href="{@docRoot}guide/topics/providers/content-providers.html">Trình cung cấp Nội dung</a>.</p>
+
+<p>Để biết thêm thông tin về việc sử dụng ý định, hãy xem tài liệu <a href="{@docRoot}guide/components/intents-filters.html">Ý định và Bộ lọc
+Ý định</a>.</p>
+
+
+<h2 id="ShuttingDown">Tắt một Hoạt động</h2>
+
+<p>Bạn có thể tắt một hoạt động bằng cách gọi phương pháp {@link android.app.Activity#finish
+finish()} của nó. Bạn cũng có thể tắt một hoạt động riêng mà trước đó bạn đã bắt đầu bằng cách gọi
+{@link android.app.Activity#finishActivity finishActivity()}.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Trong hầu hết trường hợp, bạn không nên kết thúc một hoạt động một cách rõ ràng
+bằng cách sử dụng những phương pháp này. Như đề cập trong phần sau về vòng đời của hoạt động, hệ thống
+Android quản lý tuổi thọ của một hoạt động cho bạn, vì vậy bạn không cần kết thúc các hoạt động
+của chính mình. Việc gọi những phương pháp này có thể ảnh hưởng tiêu cực tới trải nghiệm người dùng
+kỳ vọng và chỉ nên được sử dụng khi bạn tuyệt đối không muốn người dùng quay lại thực thể này của 
+hoạt động.</p>
+
+
+<h2 id="Lifecycle">Quản lý Vòng đời của Hoạt động</h2>
+
+<p>Việc quản lý vòng đời các hoạt động của bạn bằng cách triển khai các phương pháp gọi lại
+rất quan trọng đối với việc xây dựng một ứng dụng mạnh
+và linh hoạt. Vòng đời của một hoạt động trực tiếp bị ảnh hưởng bởi sự liên kết giữa nó với
+các hoạt động khác, tác vụ của nó và ngăn xếp (back stack).</p>
+
+<p>Về cơ bản, một hoạt động có thể tồn tại ở ba trạng thái:</p>
+
+<dl>
+  <dt><i>Tiếp tục</i></dt>
+    <dd>Hoạt động ở tiền cảnh của màn hình và có tiêu điểm của người dùng. (Trạng thái này
+đôi khi cũng được gọi là "đang chạy".)</dd>
+
+  <dt><i>Tạm dừng</i></dt>
+    <dd>Một hoạt động khác ở tiền cảnh và có tiêu điểm, nhưng hoạt động này vẫn hiển thị. Cụ thể,
+một hoạt động khác hiển thị ở trên hoạt động này và hoạt động đó trong suốt một phần hoặc không
+che toàn bộ màn hình. Trạng thái tạm dừng hoàn toàn đang hoạt động (đối tượng {@link android.app.Activity}
+được giữ lại trong bộ nhớ, nó duy trì tất cả thông tin về trạng thái và thành viên, và vẫn gắn với
+trình quản lý cửa sổ), nhưng có thể bị hệ thống tắt bỏ trong trường hợp bộ nhớ cực kỳ thấp.</dd>
+
+  <dt><i>Dừng</i></dt>
+    <dd>Hoạt động bị che khuất hoàn toàn bởi một hoạt động khác (hoạt động hiện đang 
+“dưới nền"). Hoạt động dừng cũng vẫn đang hoạt động ({@link android.app.Activity}
+đối tượng được giữ lại trong bộ nhớ, nó duy trì tất cả thông tin về trạng thái và thành viên, nhưng <em>không</em>
+gắn với trình quản lý cửa sổ). Tuy nhiên, hoạt động không còn hiển thị với người dùng nữa và hệ thống
+có thể tắt bỏ hoạt động này khi cần bộ nhớ ở nơi khác.</dd>
+</dl>
+
+<p>Nếu một hoạt động bị tạm dừng hoặc dừng, hệ thống có thể bỏ nó khỏi bộ nhớ hoặc bằng cách yêu cầu nó
+kết thúc (gọi phương pháp {@link android.app.Activity#finish finish()} của nó), hoặc đơn giản là tắt bỏ tiến trình
+của hoạt động.  Khi hoạt động được mở lại (sau khi bị kết thúc hoặc tắt bỏ), nó phải được tạo
+lại hoàn toàn.</p>
+
+
+
+<h3 id="ImplementingLifecycleCallbacks">Triển khai gọi lại vòng đời</h3>
+
+<p>Khi một hoạt động chuyển tiếp vào ra các trạng thái khác nhau nêu trên, nó được thông báo
+thông qua các phương pháp gọi lại. Tất cả phương pháp gọi lại đều là những móc (hook) mà bạn
+có thể khống chế để làm công việc phù hợp khi trạng thái hoạt động của bạn thay đổi. Hoạt động khung sau
+bao gồm từng phương pháp trong các phương pháp vòng đời cơ bản:</p>
+
+
+<pre>
+public class ExampleActivity extends Activity {
+    &#64;Override
+    public void {@link android.app.Activity#onCreate onCreate}(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // The activity is being created.
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onStart onStart()} {
+        super.onStart();
+        // The activity is about to become visible.
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onResume onResume()} {
+        super.onResume();
+        // The activity has become visible (it is now "resumed").
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onPause onPause()} {
+        super.onPause();
+        // Another activity is taking focus (this activity is about to be "paused").
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onStop onStop()} {
+        super.onStop();
+        // The activity is no longer visible (it is now "stopped")
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onDestroy onDestroy()} {
+        super.onDestroy();
+        // The activity is about to be destroyed.
+    }
+}
+</pre>
+
+<p class="note"><strong>Lưu ý:</strong> Việc bạn triển khai những phương pháp vòng đời này phải luôn
+gọi triển khai siêu lớp trước khi làm bất kỳ công việc nào, như minh họa trong các ví dụ bên trên.</p>
+
+<p>Cùng nhau, những phương pháp này định nghĩa toàn bộ vòng đời của một hoạt động. Bằng việc triển khai những phương pháp
+này, bạn có thể theo dõi ba vòng lặp lồng nhau trong vòng đời của hoạt động: </p>
+
+<ul>
+<li><b>Toàn bộ vòng đời</b> của một hoạt động sẽ xảy ra từ thời điểm lệnh gọi đến {@link
+android.app.Activity#onCreate onCreate()} cho tới thời điểm lệnh gọi đến {@link
+android.app.Activity#onDestroy}. Hoạt động của bạn nên thực hiện thiết lập
+trạng thái "chung" (chẳng hạn như định nghĩa bố trí) trong {@link android.app.Activity#onCreate onCreate()}, và
+giải phóng tất cả tài nguyên còn lại trong {@link android.app.Activity#onDestroy}. Ví dụ, nếu hoạt động của bạn
+có một luồng đang chạy ngầm để tải xuống dữ liệu từ mạng, nó có thể tạo
+luồng đó trong {@link android.app.Activity#onCreate onCreate()} rồi dừng luồng trong {@link
+android.app.Activity#onDestroy}.</li>
+
+<li><p><b>Vòng đời hiển thị</b> của một hoạt động xảy ra từ thời điểm lệnh gọi đến {@link
+android.app.Activity#onStart onStart()} cho tới lệnh gọi đến {@link
+android.app.Activity#onStop onStop()}. Trong thời gian này, người dùng có thể thấy hoạt động
+trên màn hình và tương tác với nó. Ví dụ, {@link android.app.Activity#onStop onStop()} được gọi
+khi một hoạt động mới bắt đầu và không còn hiển thị nữa. Giữa hai phương pháp này, bạn có thể
+duy trì các tài nguyên cần để cho người dùng thấy hoạt động. Ví dụ, bạn có thể đăng ký một
+{@link android.content.BroadcastReceiver} trong {@link
+android.app.Activity#onStart onStart()} để theo dõi các thay đổi tác động tới UI của mình, và bỏ đăng ký
+nó trong {@link android.app.Activity#onStop onStop()} khi người dùng không còn thấy thứ bạn đang
+hiển thị nữa. Hệ thống có thể gọi {@link android.app.Activity#onStart onStart()} và {@link
+android.app.Activity#onStop onStop()} nhiều lần trong suốt vòng đời của hoạt động, khi đó
+hoạt động luân chuyển giữa trạng thái hiển thị và ẩn với người dùng.</p></li>
+
+<li><p><b>Vòng đời ở tiền cảnh</b> của một hoạt động xảy ra từ thời điểm lệnh gọi đến {@link
+android.app.Activity#onResume onResume()} cho tới thời điểm lệnh gọi đến {@link android.app.Activity#onPause
+onPause()}. Trong thời gian này, hoạt động sẽ ở phía trước tất cả hoạt động khác trên màn hình và có
+tiêu điểm đầu vào của người dùng.  Hoạt động có thể thường xuyên chuyển tiếp vào và ra tiền cảnh&mdash;ví
+dụ, {@link android.app.Activity#onPause onPause()} được gọi khi thiết bị vào trạng thái ngủ hoặc
+khi một hộp thoại xuất hiện. Vì trạng thái này có thể chuyển tiếp thường xuyên, mã trong hai phương pháp này nên
+tương đối nhẹ để tránh chuyển tiếp chậm khiến người dùng phải đợi.</p></li>
+</ul>
+
+<p>Hình 1 minh họa những vòng lặp này và các đường dẫn mà một hoạt động có thể diễn ra giữa các trạng thái.
+Hình chữ nhật đại diện cho các phương pháp gọi lại bạn có thể triển khai để thực hiện thao tác khi
+hoạt động chuyển tiếp giữa những trạng thái này. <p>
+
+<img src="{@docRoot}images/activity_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Hình 1.</strong> Vòng đời của hoạt động.</p>
+
+<p>Những phương pháp gọi lại vòng đời này cũng được liệt kê trong bảng 1, trong đó mô tả từng phương pháp
+gọi lại một cách chi tiết hơn và xác định từng phương pháp
+trong vòng đời tổng thể của hoạt động, bao gồm việc hệ thống có thể tắt bỏ hoạt động hay không sau khi
+phương pháp gọi lại hoàn tất.</p>
+
+<p class="table-caption"><strong>Bảng 1.</strong> Tóm tắt các phương pháp gọi lại
+trong vòng đời của hoạt động.</p>
+
+<table border="2" width="85%" frame="hsides" rules="rows">
+<colgroup align="left" span="3"></colgroup>
+<colgroup align="left"></colgroup>
+<colgroup align="center"></colgroup>
+<colgroup align="center"></colgroup>
+
+<thead>
+<tr><th colspan="3">Phương pháp</th> <th>Mô tả</th> <th>Có thể tắt bỏ sau?</th> <th>Tiếp theo</th></tr>
+</thead>
+
+<tbody>
+<tr>
+  <td colspan="3" align="left"><code>{@link android.app.Activity#onCreate onCreate()}</code></td>
+  <td>Được gọi khi hoạt động mới được tạo.
+      Đây là lúc bạn nên thực hiện tất cả thiết lập cố định thông thường của mình &mdash;
+      tạo chế độ xem, kết ghép dữ liệu với danh sách, v.v.  Phương pháp này được chuyển cho
+      một đối tượng Gói chứa trạng thái trước đây của hoạt động, nếu trạng thái
+      đó được thu lại (xem phần <a href="#actstate">Lưu Trạng thái Hoạt động</a>,
+      ở đoạn sau).
+      <p>Luôn được theo sau bởi {@code onStart()}.</p></td>
+  <td align="center">Không</td>
+      <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td rowspan="5" style="border-left: none; border-right: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onRestart
+onRestart()}</code></td>
+   <td>Được gọi sau khi hoạt động đã được dừng, ngay trước khi hoạt động được
+       bắt đầu lại.
+       <p>Luôn được theo sau bởi {@code onStart()}</p></td>
+   <td align="center">Không</td>
+   <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStart onStart()}</code></td>
+   <td>Được gọi ngay trước khi hoạt động hiển thị trước người dùng.
+       <p>Được theo sau bởi {@code onResume()} nếu hoạt động vào
+       tiền cảnh, hoặc {@code onStop()} nếu hoạt động bị ẩn.</p></td>
+    <td align="center">Không</td>
+    <td align="center">{@code onResume()} <br/>hoặc<br/> {@code onStop()}</td>
+</tr>
+
+<tr>
+   <td rowspan="2" style="border-left: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td align="left"><code>{@link android.app.Activity#onResume onResume()}</code></td>
+   <td>Được gọi ngay trước khi hoạt động bắt đầu
+       tương tác với người dùng.  Tại điểm này, hoạt động nằm ở
+       trên cùng của chồng hoạt động, trong đó mục nhập của người dùng sẽ đến hoạt động này.
+       <p>Luôn được theo sau bởi {@code onPause()}.</p></td>
+   <td align="center">Không</td>
+   <td align="center">{@code onPause()}</td>
+</tr>
+
+<tr>
+   <td align="left"><code>{@link android.app.Activity#onPause onPause()}</code></td>
+   <td>Được gọi khi hệ thống sắp bắt đầu tiếp tục một hoạt động
+       khác.  Phương pháp này thường được sử dụng để thực hiện các thay đổi chưa lưu cho
+       dữ liệu liên tục, dừng các hoạt ảnh và những việc khác mà có thể tiêu tốn công suất
+       CPU, v.v.  Nó sẽ thực hiện rất nhanh, vì
+       hoạt động tiếp theo sẽ không được tiếp tục tới khi nó trở lại.
+       <p>Được theo sau hoặc bởi {@code onResume()} nếu hoạt động
+       trở lại phía trước, hoặc bởi {@code onStop()} nếu nó
+       không hiển thị với người dùng.</td>
+   <td align="center"><strong style="color:#800000">Có</strong></td>
+   <td align="center">{@code onResume()} <br/>hoặc<br/> {@code onStop()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStop onStop()}</code></td>
+   <td>Được gọi khi hoạt động không còn hiển thị với người dùng.  Điều này
+       có thể xảy ra vì nó đang bị hủy, hoặc vì một hoạt động khác
+       (đang tồn tại hoặc mới) đã được tiếp tục và đang che khuất nó.
+       <p>Được theo sau hoặc bởi {@code onRestart()} nếu
+       hoạt động đang quay lại để tương tác với người dùng, hoặc bởi
+       {@code onDestroy()} nếu hoạt động này sẽ đi mất.</p></td>
+   <td align="center"><strong style="color:#800000">Có</strong></td>
+   <td align="center">{@code onRestart()} <br/>hoặc<br/> {@code onDestroy()}</td>
+</tr>
+
+<tr>
+   <td colspan="3" align="left"><code>{@link android.app.Activity#onDestroy
+onDestroy()}</code></td>
+   <td>Được gọi trước khi hoạt động bị hủy.  Đây là lần gọi cuối cùng
+       mà hoạt động sẽ nhận được.  Nên gọi nó hoặc vì
+       hoạt động đang kết thúc (ai đó đã gọi <code>{@link android.app.Activity#finish
+       finish()}</code> trên nó), hoặc vì hệ thống đang tạm thời hủy thực thể này của
+       hoạt động để tiết kiệm bộ nhớ trống.  Bạn có thể phân biệt
+       những những kịch bản này bằng phương pháp <code>{@link
+       android.app.Activity#isFinishing isFinishing()}</code>.</td>
+   <td align="center"><strong style="color:#800000">Có</strong></td>
+   <td align="center"><em>không có gì</em></td>
+</tr>
+</tbody>
+</table>
+
+<p>Cột ghi "Có thể tắt bỏ sau?" cho biết liệu hệ thống có thể
+tắt bỏ tiến trình đang lưu trữ hoạt động vào bất cứ lúc nào <em>sau khi phương pháp trả về</em>, mà không
+thực hiện một dòng mã khác của hoạt động hay không.  Ba phương pháp được ghi là "có": ({@link
+android.app.Activity#onPause
+onPause()}, {@link android.app.Activity#onStop onStop()}, và {@link android.app.Activity#onDestroy
+onDestroy()}). Vì {@link android.app.Activity#onPause onPause()} là phương pháp đầu tiên
+trong ba phương pháp, sau khi hoạt động được tạo, {@link android.app.Activity#onPause onPause()} là
+phương pháp cuối cùng được bảo đảm sẽ được gọi trước khi tiến trình <em>có thể</em> bị tắt bỏ&mdash;nếu
+hệ thống phải khôi phục bộ nhớ trong một tình huống khẩn cấp, khi đó {@link
+android.app.Activity#onStop onStop()} và {@link android.app.Activity#onDestroy onDestroy()} có thể
+không được gọi. Vì thế, bạn nên sử dụng {@link android.app.Activity#onPause onPause()} để ghi
+dữ liệu cố định quan trọng (chẳng hạn như những chỉnh sửa của người dùng) vào thiết bị lưu trữ. Tuy nhiên, bạn nên chọn lọc
+thông tin nào phải được giữ lại trong {@link android.app.Activity#onPause onPause()}, vì bất kỳ
+thủ tục chặn nào trong phương pháp này cũng chặn chuyển tiếp sang hoạt động kế tiếp và làm chậm trải nghiệm
+của người dùng.</p>
+
+<p> Những phương pháp được ghi "Không" trong cột <b>Có thể tắt bỏ</b> sẽ bảo vệ tiến trình đang lưu trữ
+hoạt động khỏi bị tắt bỏ từ thời điểm chúng được gọi.  Vì thế, một hoạt động có thể tắt bỏ được
+từ thời điểm {@link android.app.Activity#onPause onPause()} trở về tới thời điểm
+{@link android.app.Activity#onResume onResume()} sẽ được gọi. Nó sẽ không thể lại tắt bỏ được tới khi
+{@link android.app.Activity#onPause onPause()} lại được gọi và trả về. </p>
+
+<p class="note"><strong>Lưu ý:</strong> Một hoạt động mà không thể "tắt bỏ được" về mặt kỹ thuật bởi
+định nghĩa này trong bảng 1 vẫn có thể bị hệ thống tắt bỏ&mdash;nhưng điều đó chỉ xảy ra trong
+những hoàn cảnh cực đoan khi không còn giải pháp nào khác. Thời điểm một hoạt động có thể bị tắt bỏ được
+đề cập kỹ hơn trong tài liệu <a href="{@docRoot}guide/components/processes-and-threads.html">Tiến trình và
+Luồng</a>.</p>
+
+
+<h3 id="SavingActivityState">Lưu trạng thái của hoạt động</h3>
+
+<p>Phần giới thiệu về <a href="#Lifecycle">Quản lý Vòng đời của Hoạt động</a> có đề cập sơ qua
+rằng
+khi một hoạt động bị tạm dừng hoặc dừng, trạng thái của hoạt động đó sẽ được giữ lại. Điều này đúng vì
+đối tượng {@link android.app.Activity} vẫn được giữ trong bộ nhớ khi nó bị tạm dừng hoặc
+dừng&mdash;tất cả thông tin về các thành viên và trạng thái hiện tại của nó vẫn hoạt động. Vì thế, bất kỳ thay đổi nào
+mà người dùng đã thực hiện trong hoạt động đều được giữ lại sao cho khi hoạt động trở về
+tiền cảnh (khi nó "tiếp tục"), thì những thay đổi này vẫn còn đó.</p>
+
+<p>Tuy nhiên, khi hệ thống hủy một hoạt động để khôi phục bộ nhớ, đối tượng {@link
+android.app.Activity} bị hủy, vì vậy hệ thống không thể đơn thuần tiếp tục hoạt động với trạng thái
+không bị ảnh hưởng. Thay vào đó, hệ thống phải tạo lại đối tượng {@link android.app.Activity} nếu người dùng
+điều hướng trở lại nó. Tuy vậy, người dùng không biết
+rằng hệ thống đã hủy hoạt động và tạo lại nó và, vì thế, có thể
+cho rằng hoạt động sẽ vẫn nguyên như cũ. Trong tình huống này, bạn có thể đảm bảo rằng
+thông tin quan trọng về trạng thái của hoạt động được giữ nguyên bằng cách triển khai một phương pháp gọi lại
+bổ sung cho phép bạn lưu thông tin về trạng thái của hoạt động của mình: {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}.</p>
+
+<p>Hệ thống gọi {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
+trước khi khiến hoạt động dễ bị hủy. Hệ thống chuyển cho phương pháp này
+một {@link android.os.Bundle} trong đó bạn có thể lưu 
+thông tin trạng thái về hoạt động như cặp tên giá trị, bằng cách sử dụng các phương pháp như {@link
+android.os.Bundle#putString putString()} và {@link
+android.os.Bundle#putInt putInt()}. Sau đó, nếu hệ thống tắt bỏ tiến trình ứng dụng của bạn
+và người dùng điều hướng trở lại hoạt động của bạn, hệ thống sẽ tạo lại hoạt động đó và
+chuyển {@link android.os.Bundle} cho cả {@link android.app.Activity#onCreate onCreate()} và {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}. Sử dụng một trong
+hai phương pháp này, bạn có thể trích xuất trạng thái đã lưu của mình từ {@link android.os.Bundle} và khôi phục
+trạng thái của hoạt động. Nếu không có thông tin trạng thái để khôi phục, khi đó {@link
+android.os.Bundle} được chuyển cho bạn sẽ rỗng (là trường hợp khi hoạt động được tạo
+lần đầu).</p>
+
+<img src="{@docRoot}images/fundamentals/restore_instance.png" alt="" />
+<p class="img-caption"><strong>Hình 2.</strong> Hai cách mà theo đó một hoạt động trở về tiêu điểm
+của người dùng với trạng thái không thay đổi: hoặc hoạt động bị hủy, rồi tạo lại và hoạt động phải khôi phục
+trạng thái đã lưu trước đó, hoặc hoạt động bị dừng, rồi tiếp tục và trạng thái của hoạt động
+giữ nguyên không đổi.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Không có gì bảo đảm rằng {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} sẽ được gọi trước khi hoạt động
+của bạn bị hủy, vì có những trường hợp mà sẽ không cần lưu trạng thái
+(chẳng hạn như khi người dùng rời bỏ hoạt động của bạn bằng cách sử dụng nút <em>Quay lại</em>, vì người dùng
+rõ ràng
+đang đóng hoạt động). Nếu hệ thống gọi {@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()}, nó làm vậy trước {@link
+android.app.Activity#onStop onStop()} và có thể trước cả {@link android.app.Activity#onPause
+onPause()}.</p>
+
+<p>Tuy nhiên, ngay cả khi bạn không làm gì và không triển khai {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}, một phần trạng thái của hoạt động được khôi phục
+bởi việc lớp {@link android.app.Activity} triển khai mặc định {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}. Cụ thể, triển khai
+mặc định sẽ gọi phương pháp {@link
+android.view.View#onSaveInstanceState onSaveInstanceState()} tương ứng cho mọi {@link
+android.view.View} trong bố trí, nó cho phép mỗi chế độ xem cung cấp thông tin về chính nó
+mà sẽ được lưu. Gần như mọi widget trong khuôn khổ Android đều triển khai phương pháp này nếu
+phù hợp, sao cho mọi thay đổi hiển thị đối với UI đều tự động được lưu và khôi phục khi hoạt động
+của bạn được tạo lại. Ví dụ, widget {@link android.widget.EditText} lưu mọi văn bản
+do người dùng điền vào và widget {@link android.widget.CheckBox} lưu sẽ thông tin cho dù đã được kiểm tra
+hay chưa. Việc duy nhất bạn cần làm đó là cung cấp một ID duy nhất (với thuộc tính <a href="{@docRoot}guide/topics/resources/layout-resource.html#idvalue">{@code android:id}</a>
+) cho mỗi widget bạn muốn lưu trạng thái của nó. Nếu một widget không có ID thì hệ thống
+không thể lưu trạng thái của nó.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<p>Bạn cũng có thể rõ ràng dừng một chế độ xem trong bố trí của mình khỏi việc lưu trạng thái của nó bằng cách đặt thuộc tính
+{@link android.R.attr#saveEnabled android:saveEnabled} thành {@code "false"} hoặc bằng cách gọi
+phương pháp {@link android.view.View#setSaveEnabled setSaveEnabled()}. Thường thì bạn không nên
+vô hiệu hóa điều này, nhưng có thể làm nếu bạn muốn khôi phục trạng thái của UI hoạt động khác đi.</p>
+</div>
+</div>
+
+<p>Mặc dù việc triển khai mặc định {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} lưu thông tin hữu ích về
+UI hoạt động của bạn, bạn có thể vẫn cần khống chế nó để lưu thêm thông tin.
+Ví dụ, bạn có thể cần lưu các giá trị thành viên đã thay đổi trong vòng đời của hoạt động (mà
+có thể tương quan với các giá trị được khôi phục trong UI, nhưng các thành viên nắm giữ giá trị UI đó không được
+khôi phục theo mặc định).</p>
+
+<p>Vì việc triển khai mặc định {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} giúp lưu trạng thái của UI, nếu
+bạn khống chế phương pháp để lưu thêm thông tin trạng thái, bạn nên luôn luôn gọi
+triển khai siêu lớp của {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
+trước khi thực hiện bất kỳ công việc nào. Tương tự, bạn cũng nên gọi triển khai siêu lớp {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} nếu bạn khống chế nó, để
+triển khai mặc định có thể khôi phục các trạng thái xem.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Vì {@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()} không đảm bảo
+sẽ được gọi, bạn chỉ nên sử dụng nó để ghi trạng thái giao thời của hoạt động (trạng thái của
+UI)&mdash;bạn không nên sử dụng nó để lưu giữ dữ liệu liên tục.  Thay vào đó, bạn nên sử dụng  {@link
+android.app.Activity#onPause onPause()} để lưu giữ dữ liệu liên tục (chẳng hạn như dữ liệu mà nên được lưu
+vào một cơ sở dữ liệu) khi người dùng rời bỏ hoạt động.</p>
+
+<p>Một cách hay để kiểm tra khả năng khôi phục trạng thái của ứng dụng của bạn đó là chỉ cần xoay
+thiết bị sao cho hướng màn hình thay đổi. Khi hướng màn hình thay đổi, hệ thống
+hủy và tạo lại hoạt động để áp dụng các tài nguyên thay thế mà có thể có sẵn
+cho cấu hình màn hình mới. Chỉ với lý do này mà một điều rất quan trọng đó là hoạt động của bạn
+hoàn toàn khôi phục trạng thái của mình khi nó được tạo lại, vì người dùng thường xoay màn hình trong khi
+sử dụng ứng dụng.</p>
+
+
+<h3 id="ConfigurationChanges">Xử lý thay đổi về cấu hình</h3>
+
+<p>Một số cấu hình thiết bị có thể thay đổi trong thời gian chạy (chẳng hạn như hướng màn hình, sự sẵn có
+của bàn phím, và ngôn ngữ). Khi sự thay đổi đó diễn ra, Android tạo lại hoạt động đang chạy
+(hệ thống gọi {@link android.app.Activity#onDestroy}, rồi ngay lập tức gọi {@link
+android.app.Activity#onCreate onCreate()}). Hành vi này
+được thiết kế để giúp ứng dụng của bạn điều chỉnh theo những cấu hình mới bằng cách tự động tải lại ứng dụng
+của bạn bằng các tài nguyên thay thế mà bạn đã cung cấp (chẳng hạn như bố trí khác cho
+các hướng và kích cỡ màn hình khác).</p>
+
+<p>Nếu bạn thiết kế hoạt động của mình một cách phù hợp để xử lý khởi động lại do thay đổi hướng màn hình và
+khôi phục trạng thái hoạt động như nêu trên, ứng dụng của bạn sẽ linh hoạt hơn trước
+những sự kiện bất ngờ khác trong vòng đời của hoạt động.</p>
+
+<p>Cách tốt nhất để xử lý khởi động lại đó là
+ lưu và khôi phục trạng thái hoạt động của bạn bằng cách sử dụng {@link
+  android.app.Activity#onSaveInstanceState onSaveInstanceState()} và {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} (hoặc {@link
+android.app.Activity#onCreate onCreate()}), như đã đề cập trong phần trước.</p>
+
+<p>Để biết thêm thông tin về những thay đổi cấu hình xảy ra tại thời điểm chạy và cách bạn có thể xử lý
+chúng, hãy đọc hướng dẫn <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Xử lý
+Thay đổi trong Thời gian chạy</a>.</p>
+
+
+
+<h3 id="CoordinatingActivities">Điều phối hoạt động</h3>
+
+ <p>Khi một hoạt động bắt đầu một hoạt động khác, cả hai đều trải qua những chuyển tiếp vòng đời. Hoạt động thứ nhất
+tạm dừng và dừng (tuy nhiên, nó sẽ không dừng nếu vẫn hiển thị được dưới nền), trong khi hoạt động kia
+được tạo. Trong trường hợp những hoạt động này chia sẻ dữ liệu được lưu vào đĩa hoặc nơi khác, điều quan trọng là
+phải hiểu rằng hoạt động thứ nhất không bị dừng hoàn toàn trước khi hoạt động thứ hai được tạo.
+Thay vào đó, tiến trình bắt đầu hoạt động thứ hai chồng lấp với tiến trình dừng hoạt động
+thứ nhất.</p>
+
+<p>Thứ tự gọi lại vòng đời được định nghĩa rõ, cụ thể là khi hai hoạt động trong cùng tiến trình
+và hoạt động này bắt đầu hoạt động kia. Sau đây là thứ tự thao tác diễn ra khi Hoạt động
+A bắt đầu Hoạt động B: </p>
+
+<ol>
+<li>Phương pháp {@link android.app.Activity#onPause onPause()} của Hoạt động A thực thi.</li>
+
+<li>{@link android.app.Activity#onCreate onCreate()} của Hoạt động B, {@link
+android.app.Activity#onStart onStart()}, và các phương pháp {@link android.app.Activity#onResume onResume()}
+thực thi theo trình tự. (Hoạt động B lúc này có tiêu điểm của người dùng.)</li>
+
+<li>Sau đó, nếu Hoạt động A không còn hiển thị trên màn hình, phương pháp {@link
+android.app.Activity#onStop onStop()} của nó sẽ thực thi.</li>
+</ol>
+
+ <p>Trình tự gọi lại vòng đời có thể dự đoán này cho phép bạn quản lý chuyển tiếp
+thông tin từ hoạt động này sang hoạt động khác. Ví dụ, nếu bạn phải ghi vào một cơ sở dữ liệu khi
+hoạt động thứ nhất dừng sao cho hoạt động theo sau có thể đọc nó, khi đó bạn nên ghi vào
+cơ sở dữ liệu trong khi {@link android.app.Activity#onPause onPause()} thay vì trong khi {@link
+android.app.Activity#onStop onStop()}.</p>
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For more information about how Android maintains a history of activities and
+enables user multitasking, continue with the <b><a
+href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back
+Stack</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/vi/guide/components/bound-services.jd b/docs/html-intl/intl/vi/guide/components/bound-services.jd
new file mode 100644
index 0000000..7a2ddba
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/components/bound-services.jd
@@ -0,0 +1,658 @@
+page.title=Dịch vụ Gắn kết
+parent.title=Dịch vụ
+parent.link=services.html
+@jd:body
+
+
+<div id="qv-wrapper">
+<ol id="qv">
+<h2>Trong tài liệu này</h2>
+<ol>
+  <li><a href="#Basics">Nội dung Cơ bản</a></li>
+  <li><a href="#Creating">Tạo một Dịch vụ Gắn kết</a>
+    <ol>
+      <li><a href="#Binder">Mở rộng lớp Trình gắn kết</a></li>
+      <li><a href="#Messenger">Sử dụng một Hàm nhắn tin</a></li>
+    </ol>
+  </li>
+  <li><a href="#Binding">Gắn kết với một Dịch vụ</a></li>
+  <li><a href="#Lifecycle">Quản lý Vòng đời của một Dịch vụ Gắn kết</a></li>
+</ol>
+
+<h2>Lớp khóa</h2>
+<ol>
+  <li>{@link android.app.Service}</li>
+  <li>{@link android.content.ServiceConnection}</li>
+  <li>{@link android.os.IBinder}</li>
+</ol>
+
+<h2>Mẫu</h2>
+<ol>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html">{@code
+      RemoteService}</a></li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+      LocalService}</a></li>
+</ol>
+
+<h2>Xem thêm</h2>
+<ol>
+  <li><a href="{@docRoot}guide/components/services.html">Dịch vụ</a></li>
+</ol>
+</div>
+
+
+<p>Dịch vụ gắn kết là máy chủ trong một giao diện máy khách-máy chủ. Dịch vụ gắn kết cho phép các thành phần
+(chẳng hạn như các hoạt động) gắn kết với dịch vụ, gửi yêu cầu, nhận phản hồi, và thậm chí thực hiện
+truyền thông liên tiến trình (IPC). Dịch vụ gắn kết thường chỉ hoạt động khi nó phục vụ một thành phần
+ứng dụng khác và không chạy ngầm mãi liên tục.</p>
+
+<p>Tài liệu này cho bạn biết cách tạo một dịch vụ gắn kết, bao gồm cách gắn kết
+với dịch vụ từ các thành phần ứng dụng khác. Tuy nhiên, bạn cũng nên tham khảo tài liệu <a href="{@docRoot}guide/components/services.html">Dịch vụ</a> để biết thêm thông tin
+về các dịch vụ nói chung, chẳng hạn như cách gửi thông báo từ một dịch vụ, đặt
+dịch vụ để chạy trong tiền cảnh, và nhiều nội dung khác.</p>
+
+
+<h2 id="Basics">Nội dung Cơ bản</h2>
+
+<p>Dịch vụ gắn kết là một sự triển khai lớp {@link android.app.Service} cho phép
+các ứng dụng khác gắn kết và tương tác với nó. Để thực hiện gắn kết cho một
+dịch vụ, bạn phải triển khai phương pháp gọi lại {@link android.app.Service#onBind onBind()}. Phương pháp này
+trả về một đối tượng {@link android.os.IBinder} định nghĩa giao diện lập trình mà
+các máy khách có thể sử dụng để tương tác với dịch vụ.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>Gắn kết với một Dịch vụ được Bắt đầu</h3>
+
+<p>Như đã đề cập trong tài liệu <a href="{@docRoot}guide/components/services.html">Dịch vụ</a>
+, bạn có thể tạo một dịch vụ được bắt đầu và gắn kết. Cụ thể, dịch vụ có thể được
+bắt đầu bằng cách gọi {@link android.content.Context#startService startService()}, nó cho phép dịch vụ
+chạy mãi, và cũng cho phép một máy khách gắn kết với dịch vụ bằng cách gọi {@link
+android.content.Context#bindService bindService()}.
+  <p>Nếu bạn có cho phép dịch vụ của mình được bắt đầu và gắn kết, thì khi dịch vụ đã được
+bắt đầu, hệ thống sẽ <em>không</em> hủy dịch vụ đó khi tất cả máy khách bỏ gắn kết. Thay vào đó, bạn phải
+dừng dịch vụ một cách rõ ràng bằng cách gọi {@link android.app.Service#stopSelf stopSelf()} hoặc {@link
+android.content.Context#stopService stopService()}.</p>
+
+<p>Mặc dù bạn nên thường xuyên triển khai hoặc {@link android.app.Service#onBind onBind()}
+<em>hoặc</em> {@link android.app.Service#onStartCommand onStartCommand()}, đôi khi cần phải
+triển khai cả hai. Ví dụ, một trình chơi nhạc có thể cho rằng nên cho phép dịch vụ của nó chạy
+mãi và cũng thực hiện gắn kết. Bằng cách này, một hoạt động có thể bắt đầu dịch vụ để chơi vài
+bản nhạc và nhạc tiếp tục chơi ngay cả khi người dùng rời khỏi ứng dụng. Lúc đó, khi người dùng
+trở lại ứng dụng, hoạt động có thể gắn kết với dịch vụ để giành lại quyền kiểm soát phát lại.</p>
+
+<p>Đảm bảo đọc phần về <a href="#Lifecycle">Quản lý Vòng đời của một Dịch vụ
+Gắn kết</a> để biết thêm thông tin về vòng đời của dịch vụ khi thêm gắn kết vào một
+dịch vụ được bắt đầu.</p>
+</div>
+</div>
+
+<p>Một máy khách có thể gắn kết với dịch vụ bằng cách gọi {@link android.content.Context#bindService
+bindService()}. Khi làm vậy, nó phải cung cấp việc triển khai {@link
+android.content.ServiceConnection}, có chức năng theo dõi kết nối với dịch vụ. Phương pháp {@link
+android.content.Context#bindService bindService()} trả về ngay lập tức mà không có giá trị, nhưng
+khi hệ thống Android tạo kết nối giữa
+máy khách và dịch vụ, nó gọi {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} trên {@link
+android.content.ServiceConnection}, để giao {@link android.os.IBinder} mà
+máy khách có thể sử dụng để giao tiếp với dịch vụ.</p>
+
+<p>Nhiều máy khách có thể kết nối với dịch vụ đồng thời. Tuy nhiên, hệ thống sẽ gọi phương pháp
+{@link android.app.Service#onBind onBind()} của dịch vụ của bạn để truy xuất {@link android.os.IBinder} chỉ
+khi máy khách đầu tiên gắn kết. Sau đó, hệ thống sẽ giao cùng một {@link android.os.IBinder} đó cho bất kỳ
+máy khách bổ sung nào có gắn kết mà không gọi lại {@link android.app.Service#onBind onBind()}.</p>
+
+<p>Khi máy khách cuối cùng bỏ gắn kết với dịch vụ, hệ thống sẽ hủy dịch vụ (trừ khi dịch vụ
+cũng được bắt đầu bởi {@link android.content.Context#startService startService()}).</p>
+
+<p>Khi bạn triển khai dịch vụ gắn kết của mình, phần quan trọng nhất là định nghĩa giao diện
+mà phương pháp gọi lại {@link android.app.Service#onBind onBind()} của bạn sẽ trả về. Có một vài
+cách khác nhau mà bạn có thể định nghĩa giao diện {@link android.os.IBinder} của dịch vụ của mình và phần
+sau đây sẽ bàn về từng kỹ thuật.</p>
+
+
+
+<h2 id="Creating">Tạo một Dịch vụ Gắn kết</h2>
+
+<p>Khi tạo một dịch vụ thực hiện gắn kết, bạn phải nêu một {@link android.os.IBinder}
+cung cấp giao diện lập trình mà các máy khách có thể sử dụng để tương tác với dịch vụ. Có
+ba cách bạn có thể định nghĩa giao diện:</p>
+
+<dl>
+  <dt><a href="#Binder">Mở rộng lớp Trình gắn kết</a></dt>
+  <dd>Nếu dịch vụ của bạn chỉ riêng cho ứng dụng của chính bạn và chạy trong cùng tiến trình như máy khách
+(điều này thường hay gặp), bạn nên tạo giao diện của mình bằng cách mở rộng lớp {@link android.os.Binder}
+và trả về một thực thể của nó từ
+{@link android.app.Service#onBind onBind()}. Máy khách nhận được {@link android.os.Binder} và
+có thể sử dụng nó để trực tiếp truy cập các phương pháp công khai có sẵn trong triển khai {@link android.os.Binder}
+hoặc thậm chí trong {@link android.app.Service}.
+  <p>Nên áp dụng kỹ thuật này khi dịch vụ của bạn chỉ là một trình thực hiện chạy ngầm cho ứng dụng
+của chính bạn. Lý do duy nhất bạn không nên tạo giao diện của mình bằng cách này đó là
+dịch vụ của bạn được sử dụng bởi các ứng dụng khác hoặc giữa những tiến trình khác nhau.</dd>
+
+  <dt><a href="#Messenger">Sử dụng một Hàm nhắn tin</a></dt>
+  <dd>Nếu bạn cần giao diện của mình thực hiện các tiến trình khác nhau, bạn có thể tạo
+một giao diện cho dịch vụ bằng {@link android.os.Messenger}. Bằng cách này, dịch vụ
+định nghĩa một {@link android.os.Handler} phản hồi các loại đối tượng {@link
+android.os.Message} khác nhau. {@link android.os.Handler}
+này là cơ sở cho một {@link android.os.Messenger} mà sau đó có thể chia sẻ một {@link android.os.IBinder}
+với máy khách, cho phép máy khách gửi lệnh tới dịch vụ bằng cách sử dụng các đối tượng {@link
+android.os.Message}. Ngoài ra, máy khách có thể định nghĩa {@link android.os.Messenger} của
+chính nó để dịch vụ có thể gửi lại thông báo.
+  <p>Đây là cách đơn giản nhất để thực hiện truyền thông liên tiến trình (IPC), vì {@link
+android.os.Messenger} xếp hàng tất cả yêu cầu thành một luồng duy nhất sao cho bạn không phải thiết kế
+dịch vụ của mình an toàn với luồng.</p>
+  </dd>
+
+  <dt>Sử dụng AIDL</dt>
+  <dd>AIDL (Ngôn ngữ Định nghĩa Giao diện Android) thực hiện tất cả công việc để phân tách đối tượng thành
+các phần tử mà hệ điều hành có thể hiểu được và ghép nối chúng qua các tiến trình để thực hiện
+IPC. Bằng cách sử dụng {@link android.os.Messenger}, kỹ thuật trước đó thực tế được dựa trên AIDL như là
+cấu trúc cơ bản của nó. Như đã đề cập bên trên, {@link android.os.Messenger} tạo một hàng chờ
+gồm tất cả yêu cầu của máy khách trong một luồng duy nhất, vì thế dịch vụ nhận được từng yêu cầu một. Tuy nhiên, nếu
+bạn muốn dịch vụ xử lý nhiều yêu cầu đồng thời, bạn có thể sử dụng AIDL
+trực tiếp. Trong trường hợp này, dịch vụ của bạn phải có khả năng tạo đa luồng và được xây dựng an toàn với luồng.
+  <p>Để sử dụng AIDL trực tiếp, bạn phải
+tạo một tệp {@code .aidl} định nghĩa giao diện lập trình. Các công cụ SDK Android sử dụng tệp
+này để khởi tạo một lớp tóm tắt (abstract class) nhằm triển khai giao diện và xử lý IPC, mà sau đó
+bạn có thể mở rộng trong dịch vụ của mình.</p>
+  </dd>
+</dl>
+
+  <p class="note"><strong>Lưu ý:</strong> Hầu hết ứng dụng <strong>không nên</strong> sử dụng AIDL để
+tạo một dịch vụ gắn kết, vì nó có thể yêu cầu khả năng tạo đa luồng và
+có thể dẫn đến việc triển khai phức tạp hơn. Như vậy, AIDL không phù hợp với hầu hết ứng dụng
+và tài liệu này không bàn về cách sử dụng nó cho dịch vụ của bạn. Nếu bạn chắc chắn rằng mình cần
+sử dụng AIDL trực tiếp, hãy xem tài liệu <a href="{@docRoot}guide/components/aidl.html">AIDL</a>
+.</p>
+
+
+
+
+<h3 id="Binder">Mở rộng lớp Trình gắn kết</h3>
+
+<p>Nếu dịch vụ của bạn chỉ được sử dụng bởi ứng dụng cục bộ và không cần làm việc qua nhiều tiến trình,
+khi đó bạn có thể triển khai lớp {@link android.os.Binder} của chính mình để cung cấp quyền truy cập
+trực tiếp cho máy khách của bạn để truy nhập các phương pháp công khai trong dịch vụ.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Cách này chỉ có tác dụng nếu máy khách và dịch vụ nằm trong cùng
+ứng dụng và tiến trình, là trường hợp phổ biến nhất. Ví dụ, cách này sẽ hoạt động tốt đối với một ứng dụng
+nhạc cần gắn kết một hoạt động với dịch vụ của chính nó đang phát nhạc
+chạy ngầm.</p>
+
+<p>Sau đây là cách thiết lập:</p>
+<ol>
+  <li>Trong dịch vụ của bạn, hãy tạo một thực thể {@link android.os.Binder} mà hoặc:
+    <ul>
+      <li>chứa các phương pháp công khai mà máy khách có thể gọi</li>
+      <li>trả về thực thể {@link android.app.Service} hiện tại, trong đó có các phương pháp công khai mà
+máy khách có thể gọi</li>
+      <li>hoặc, trả về một thực thể của một lớp khác được lưu trữ bởi dịch vụ bằng các phương pháp công khai mà
+máy khách có thể gọi</li>
+    </ul>
+  <li>Trả về thực thể {@link android.os.Binder} này từ phương pháp gọi lại {@link
+android.app.Service#onBind onBind()}.</li>
+  <li>Trong máy khách, nhận {@link android.os.Binder} từ phương pháp gọi lại {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} và
+thực hiện gọi tới dịch vụ gắn kết bằng cách sử dụng các phương pháp đã nêu.</li>
+</ol>
+
+<p class="note"><strong>Lưu ý:</strong> Lý do dịch vụ và máy khách phải ở trong cùng
+ứng dụng đó là máy khách có thể đổi kiểu đối tượng được trả về và gọi các API của nó một cách phù hợp. Dịch vụ
+và máy khách cũng phải ở trong cùng tiến trình, vì kỹ thuật này không thực hiện bất kỳ thao tác
+ghép nối qua các tiến trình nào.</p>
+
+<p>Ví dụ, sau đây là một dịch vụ cung cấp cho máy khách quyền truy cập các phương pháp trong dịch vụ thông qua
+việc triển khai {@link android.os.Binder}:</p>
+
+<pre>
+public class LocalService extends Service {
+    // Binder given to clients
+    private final IBinder mBinder = new LocalBinder();
+    // Random number generator
+    private final Random mGenerator = new Random();
+
+    /**
+     * Class used for the client Binder.  Because we know this service always
+     * runs in the same process as its clients, we don't need to deal with IPC.
+     */
+    public class LocalBinder extends Binder {
+        LocalService getService() {
+            // Return this instance of LocalService so clients can call public methods
+            return LocalService.this;
+        }
+    }
+
+    &#64;Override
+    public IBinder onBind(Intent intent) {
+        return mBinder;
+    }
+
+    /** method for clients */
+    public int getRandomNumber() {
+      return mGenerator.nextInt(100);
+    }
+}
+</pre>
+
+<p>{@code LocalBinder} cung cấp phương pháp {@code getService()} cho máy khách để truy xuất
+thực thể hiện tại của {@code LocalService}. Điều này cho phép máy khách gọi các phương pháp công khai trong
+dịch vụ. Ví dụ, máy khách có thể gọi {@code getRandomNumber()} từ dịch vụ.</p>
+
+<p>Sau đây là một hoạt động gắn kết với {@code LocalService} và sẽ gọi {@code getRandomNumber()}
+khi nhấp vào nút:</p>
+
+<pre>
+public class BindingActivity extends Activity {
+    LocalService mService;
+    boolean mBound = false;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+
+    &#64;Override
+    protected void onStart() {
+        super.onStart();
+        // Bind to LocalService
+        Intent intent = new Intent(this, LocalService.class);
+        bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+    }
+
+    &#64;Override
+    protected void onStop() {
+        super.onStop();
+        // Unbind from the service
+        if (mBound) {
+            unbindService(mConnection);
+            mBound = false;
+        }
+    }
+
+    /** Called when a button is clicked (the button in the layout file attaches to
+      * this method with the android:onClick attribute) */
+    public void onButtonClick(View v) {
+        if (mBound) {
+            // Call a method from the LocalService.
+            // However, if this call were something that might hang, then this request should
+            // occur in a separate thread to avoid slowing down the activity performance.
+            int num = mService.getRandomNumber();
+            Toast.makeText(this, "number: " + num, Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    /** Defines callbacks for service binding, passed to bindService() */
+    private ServiceConnection mConnection = new ServiceConnection() {
+
+        &#64;Override
+        public void onServiceConnected(ComponentName className,
+                IBinder service) {
+            // We've bound to LocalService, cast the IBinder and get LocalService instance
+            LocalBinder binder = (LocalBinder) service;
+            mService = binder.getService();
+            mBound = true;
+        }
+
+        &#64;Override
+        public void onServiceDisconnected(ComponentName arg0) {
+            mBound = false;
+        }
+    };
+}
+</pre>
+
+<p>Mẫu trên cho thấy cách mà máy khách gắn kết với dịch vụ bằng cách sử dụng triển khai
+{@link android.content.ServiceConnection} và gọi lại {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()}. Phần tiếp theo
+cung cấp thêm thông tin về tiến trình gắn kết này với dịch vụ.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Ví dụ trên không công khai bỏ gắn kết khỏi dịch vụ,
+nhưng tất cả máy khách cần bỏ gắn kết tại một thời điểm phù hợp (chẳng hạn như khi hoạt động tạm dừng).</p>
+
+<p>Để biết thêm mã ví dụ, hãy xem lớp <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+LocalService.java}</a> và lớp <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceActivities.html">{@code
+LocalServiceActivities.java}</a> trong <a href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a>.</p>
+
+
+
+
+
+<h3 id="Messenger">Sử dụng một Hàm nhắn tin</h3>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h4>So sánh với AIDL</h4>
+  <p>Khi bạn cần thực hiện IPC, việc sử dụng một {@link android.os.Messenger} cho giao diện của bạn
+sẽ đơn giản hơn so với việc triển khai nó bằng AIDL, vì {@link android.os.Messenger} xếp hàng
+tất cả lệnh gọi đối với dịch vụ, trong khi đó, giao diện AIDL thuần túy sẽ gửi các yêu cầu đồng thời tới
+dịch vụ, sau đó dịch vụ phải xử lý tạo đa luồng.</p>
+  <p>Đối với hầu hết ứng dụng, dịch vụ không cần thực hiện tạo đa luồng, vì vậy sử dụng một {@link
+android.os.Messenger} sẽ cho phép dịch vụ xử lý từng lệnh gọi tại một thời điểm. Nếu quan trọng là
+dịch vụ của bạn phải được tạo đa luồng, khi đó bạn nên sử dụng <a href="{@docRoot}guide/components/aidl.html">AIDL</a> để định nghĩa giao diện của mình.</p>
+</div>
+</div>
+
+<p>Nếu bạn cần dịch vụ của mình giao tiếp với các tiến trình từ xa, khi đó bạn có thể sử dụng một
+{@link android.os.Messenger} để cung cấp giao diện cho dịch vụ của mình. Kỹ thuật này cho phép
+bạn thực hiện truyền thông liên tiến trình (IPC) mà không cần sử dụng AIDL.</p>
+
+<p>Sau đây là tóm tắt cách sử dụng {@link android.os.Messenger}:</p>
+
+<ul>
+  <li>Dịch vụ triển khai {@link android.os.Handler} để nhận lệnh gọi lại cho mỗi
+lệnh gọi từ một máy khách.</li>
+  <li>{@link android.os.Handler} được sử dụng để tạo một đối tượng {@link android.os.Messenger}
+(là một tham chiếu tới {@link android.os.Handler}).</li>
+  <li>{@link android.os.Messenger} tạo một {@link android.os.IBinder} mà dịch vụ
+trả về máy khách từ {@link android.app.Service#onBind onBind()}.</li>
+  <li>Máy khách sử dụng {@link android.os.IBinder} để khởi tạo {@link android.os.Messenger}
+(tham chiếu tới {@link android.os.Handler} của dịch vụ), mà máy khách sử dụng để gửi các đối tượng
+{@link android.os.Message} tới dịch vụ.</li>
+  <li>Dịch vụ nhận được từng {@link android.os.Message} trong {@link
+android.os.Handler} của mình&mdash;cụ thể là theo phương pháp {@link android.os.Handler#handleMessage
+handleMessage()}.</li>
+</ul>
+
+
+<p>Theo cách này, không có "phương pháp" nào để máy khách gọi đối với dịch vụ. Thay vào đó, máy khách
+gửi “thông báo” (đối tượng {@link android.os.Message}) mà dịch vụ nhận được trong 
+{@link android.os.Handler} của mình.</p>
+
+<p>Sau đây là một dịch vụ ví dụ đơn giản sử dụng một giao diện {@link android.os.Messenger}:</p>
+
+<pre>
+public class MessengerService extends Service {
+    /** Command to the service to display a message */
+    static final int MSG_SAY_HELLO = 1;
+
+    /**
+     * Handler of incoming messages from clients.
+     */
+    class IncomingHandler extends Handler {
+        &#64;Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_SAY_HELLO:
+                    Toast.makeText(getApplicationContext(), "hello!", Toast.LENGTH_SHORT).show();
+                    break;
+                default:
+                    super.handleMessage(msg);
+            }
+        }
+    }
+
+    /**
+     * Target we publish for clients to send messages to IncomingHandler.
+     */
+    final Messenger mMessenger = new Messenger(new IncomingHandler());
+
+    /**
+     * When binding to the service, we return an interface to our messenger
+     * for sending messages to the service.
+     */
+    &#64;Override
+    public IBinder onBind(Intent intent) {
+        Toast.makeText(getApplicationContext(), "binding", Toast.LENGTH_SHORT).show();
+        return mMessenger.getBinder();
+    }
+}
+</pre>
+
+<p>Để ý rằng phương pháp {@link android.os.Handler#handleMessage handleMessage()} trong
+{@link android.os.Handler} là nơi dịch vụ nhận được {@link android.os.Message}
+đến và quyết định việc cần làm dựa trên thành viên {@link android.os.Message#what}.</p>
+
+<p>Tất cả việc mà một máy khách cần làm đó là tạo một {@link android.os.Messenger} dựa trên {@link
+android.os.IBinder} được dịch vụ trả về và gửi một thông báo bằng cách sử dụng {@link
+android.os.Messenger#send send()}. Ví dụ, sau đây là một hoạt động đơn giản gắn kết với dịch vụ
+và gửi tin nhắn {@code MSG_SAY_HELLO} cho dịch vụ:</p>
+
+<pre>
+public class ActivityMessenger extends Activity {
+    /** Messenger for communicating with the service. */
+    Messenger mService = null;
+
+    /** Flag indicating whether we have called bind on the service. */
+    boolean mBound;
+
+    /**
+     * Class for interacting with the main interface of the service.
+     */
+    private ServiceConnection mConnection = new ServiceConnection() {
+        public void onServiceConnected(ComponentName className, IBinder service) {
+            // This is called when the connection with the service has been
+            // established, giving us the object we can use to
+            // interact with the service.  We are communicating with the
+            // service using a Messenger, so here we get a client-side
+            // representation of that from the raw IBinder object.
+            mService = new Messenger(service);
+            mBound = true;
+        }
+
+        public void onServiceDisconnected(ComponentName className) {
+            // This is called when the connection with the service has been
+            // unexpectedly disconnected -- that is, its process crashed.
+            mService = null;
+            mBound = false;
+        }
+    };
+
+    public void sayHello(View v) {
+        if (!mBound) return;
+        // Create and send a message to the service, using a supported 'what' value
+        Message msg = Message.obtain(null, MessengerService.MSG_SAY_HELLO, 0, 0);
+        try {
+            mService.send(msg);
+        } catch (RemoteException e) {
+            e.printStackTrace();
+        }
+    }
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+
+    &#64;Override
+    protected void onStart() {
+        super.onStart();
+        // Bind to the service
+        bindService(new Intent(this, MessengerService.class), mConnection,
+            Context.BIND_AUTO_CREATE);
+    }
+
+    &#64;Override
+    protected void onStop() {
+        super.onStop();
+        // Unbind from the service
+        if (mBound) {
+            unbindService(mConnection);
+            mBound = false;
+        }
+    }
+}
+</pre>
+
+<p>Để ý rằng ví dụ này không cho biết cách mà dịch vụ có thể phản hồi máy khách. Nếu bạn muốn dịch vụ
+phản hồi, khi đó bạn cũng cần tạo một {@link android.os.Messenger} trong máy khách. Sau đó
+khi máy khách nhận được lệnh gọi lại {@link android.content.ServiceConnection#onServiceConnected
+onServiceConnected()}, nó sẽ gửi một {@link android.os.Message} tới dịch vụ, trong đó bao gồm
+{@link android.os.Messenger} của máy khách trong tham số {@link android.os.Message#replyTo}
+của phương pháp {@link android.os.Messenger#send send()}.</p>
+
+<p>Bạn có thể xem một ví dụ về cách cung cấp tính năng nhắn tin hai chiều trong <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerService.html">{@code
+MessengerService.java}</a> (dịch vụ) và các mẫu <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerServiceActivities.html">{@code
+MessengerServiceActivities.java}</a> (máy khách).</p>
+
+
+
+
+
+<h2 id="Binding">Gắn kết với một Dịch vụ</h2>
+
+<p>Các thành phần ứng dụng (máy khách) có thể gắn kết với một dịch vụ bằng cách gọi
+{@link android.content.Context#bindService bindService()}. Hệ thống Android
+khi đó sẽ gọi phương pháp {@link android.app.Service#onBind
+onBind()} của dịch vụ, nó trả về một {@link android.os.IBinder} để tương tác với dịch vụ.</p>
+
+<p>Việc gắn kết diễn ra không đồng bộ. {@link android.content.Context#bindService
+bindService()} trả về ngay lập tức và <em>không</em> trả {@link android.os.IBinder} về
+máy khách. Để nhận một {@link android.os.IBinder}, máy khách phải tạo một thực thể của {@link
+android.content.ServiceConnection} và chuyển nó cho {@link android.content.Context#bindService
+bindService()}. {@link android.content.ServiceConnection} bao gồm một phương pháp gọi lại mà hệ thống
+gọi để gửi {@link android.os.IBinder}.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Chỉ các hoạt động, dịch vụ, và trình cung cấp nội dung mới có thể gắn kết
+với một dịch vụ&mdash;bạn <strong>không thể</strong> gắn kết với một dịch vụ từ một hàm nhận quảng bá (broadcast receiver).</p>
+
+<p>Vì vậy, để gắn kết với một dịch vụ từ máy khách của mình, bạn phải: </p>
+<ol>
+  <li>Triển khai {@link android.content.ServiceConnection}.
+    <p>Việc triển khai của bạn phải khống chế hai phương pháp gọi lại:</p>
+    <dl>
+      <dt>{@link android.content.ServiceConnection#onServiceConnected onServiceConnected()}</dt>
+        <dd>Hệ thống gọi phương pháp này để gửi {@link android.os.IBinder} được trả về bởi
+phương pháp {@link android.app.Service#onBind onBind()} của dịch vụ.</dd>
+      <dt>{@link android.content.ServiceConnection#onServiceDisconnected
+onServiceDisconnected()}</dt>
+        <dd>Hệ thống Android gọi phương pháp này khi kết nối với dịch vụ bị mất
+đột ngột, chẳng hạn như khi dịch vụ bị lỗi hoặc bị tắt bỏ. Phương pháp này <em>không</em> được gọi khi
+máy khách bỏ gắn kết.</dd>
+    </dl>
+  </li>
+  <li>Gọi {@link
+android.content.Context#bindService bindService()}, chuyển việc triển khai {@link
+android.content.ServiceConnection}. </li>
+  <li>Khi hệ thống gọi phương pháp gọi lại {@link android.content.ServiceConnection#onServiceConnected
+onServiceConnected()} của bạn, bạn có thể bắt đầu thực hiện các lệnh gọi tới dịch vụ bằng các phương pháp
+được định nghĩa bởi giao diện.</li>
+  <li>Để ngắt kết nối khỏi dịch vụ, hãy gọi {@link
+android.content.Context#unbindService unbindService()}.
+    <p>Khi máy khách của bạn bị hủy, nó sẽ bỏ gắn kết khỏi dịch vụ, nhưng bạn nên luôn bỏ gắn kết
+khi bạn đã tương tác xong với dịch vụ hoặc khi hoạt động của bạn tạm dừng sao cho dịch vụ có thể
+tắt khi không dùng đến. (Thời điểm phù hợp để gắn kết và bỏ gắn kết được đề cập
+kỹ hơn ở bên dưới.)</p>
+  </li>
+</ol>
+
+<p>Ví dụ, đoạn mã HTML sau sẽ kết nối máy khách với dịch vụ được tạo bên trên bằng cách
+<a href="#Binder">mở rộng lớp Trình gắn kết</a>, vì vậy tất cả những việc mà nó phải làm là đổi kiểu 
+{@link android.os.IBinder} được trả về thành lớp {@code LocalService} và yêu cầu thực thể {@code
+LocalService}:</p>
+
+<pre>
+LocalService mService;
+private ServiceConnection mConnection = new ServiceConnection() {
+    // Called when the connection with the service is established
+    public void onServiceConnected(ComponentName className, IBinder service) {
+        // Because we have bound to an explicit
+        // service that is running in our own process, we can
+        // cast its IBinder to a concrete class and directly access it.
+        LocalBinder binder = (LocalBinder) service;
+        mService = binder.getService();
+        mBound = true;
+    }
+
+    // Called when the connection with the service disconnects unexpectedly
+    public void onServiceDisconnected(ComponentName className) {
+        Log.e(TAG, "onServiceDisconnected");
+        mBound = false;
+    }
+};
+</pre>
+
+<p>Với {@link android.content.ServiceConnection} này, máy khách có thể gắn kết với một dịch vụ bằng cách chuyển
+nó cho {@link android.content.Context#bindService bindService()}. Ví dụ:</p>
+
+<pre>
+Intent intent = new Intent(this, LocalService.class);
+bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+</pre>
+
+<ul>
+  <li>Tham số đầu tiên của {@link android.content.Context#bindService bindService()} là một
+{@link android.content.Intent} trong đó nêu rõ tên của các dịch vụ sẽ gắn kết (mặc dù ý định
+có thể ngầm hiểu).</li>
+<li>Tham số thứ hai là đối tượng {@link android.content.ServiceConnection}.</li>
+<li>Tham số thứ ba là một cờ cho biết các tùy chọn cho gắn kết. Nên luôn luôn là {@link
+android.content.Context#BIND_AUTO_CREATE} để tạo dịch vụ nếu nó chưa hoạt động.
+Các giá trị có thể khác là {@link android.content.Context#BIND_DEBUG_UNBIND}
+và {@link android.content.Context#BIND_NOT_FOREGROUND}, hoặc {@code 0} trong trường hợp không có.</li>
+</ul>
+
+
+<h3>Lưu ý bổ sung</h3>
+
+<p>Sau đây là một số lưu ý quan trọng về việc gắn kết với một dịch vụ:</p>
+<ul>
+  <li>Bạn nên luôn bẫy các lỗi ngoại lệ {@link android.os.DeadObjectException} phát sinh khi
+kết nối bị đứt. Đây là lỗi ngoại lệ duy nhất phát sinh bởi các phương pháp từ xa.</li>
+  <li>Các đối tượng được xem là tham chiếu khắp các tiến trình. </li>
+  <li>Bạn nên luôn ghép đôi gắn kết và bỏ gắn kết trong khi
+khớp những khoảnh khắc kết nối và đứt kết nối trong vòng đời của máy khách. Ví dụ:
+    <ul>
+      <li>Nếu bạn chỉ cần tương tác với dịch vụ trong khi hoạt động của bạn hiển thị, bạn
+nên gắn kết trong khi {@link android.app.Activity#onStart onStart()} và bỏ gắn kết trong khi {@link
+android.app.Activity#onStop onStop()}.</li>
+      <li>Nếu bạn muốn hoạt động của mình nhận được phản hồi ngay cả trong khi bị dừng khi đang
+dưới nền, khi đó bạn có thể gắn kết trong khi {@link android.app.Activity#onCreate onCreate()} và bỏ gắn kết
+trong khi {@link android.app.Activity#onDestroy onDestroy()}. Chú ý rằng điều này hàm ý rằng hoạt động
+của bạn cần sử dụng dịch vụ trong toàn bộ thời gian khi nó đang chạy (ngay cả khi chạy ngầm), do đó nếu
+dịch vụ ở trong một tiến trình khác thì bạn hãy tăng trọng số của tiến trình và khả năng hệ thống
+tắt bỏ tiến trình đó sẽ cao hơn.</li>
+    </ul>
+    <p class="note"><strong>Lưu ý:</strong> Thông thường bạn <strong>không</strong> nên gắn kết và bỏ gắn kết
+trong khi {@link android.app.Activity#onResume onResume()} và {@link
+android.app.Activity#onPause onPause()} cho hoạt động của mình, vì những lệnh gọi lại này diễn ra tại mọi thời điểm chuyển tiếp vòng đời
+và bạn nên duy trì xử lý tại những thời điểm chuyển tiếp này ở mức tối thiểu. Đồng thời, nếu
+nhiều hoạt động trong ứng dụng của bạn gắn kết với cùng dịch vụ và có sự chuyển tiếp giữa
+hai trong số những hoạt động đó, dịch vụ có thể bị hủy và tạo lại khi hoạt động hiện tại bỏ gắn kết
+(trong khi tạm dừng) trước khi hoạt động tiếp theo gắn kết (trong khi tiếp tục). (Sự chuyển tiếp hoạt động này đối với cách mà các hoạt động
+phối hợp vòng đời của chúng được mô tả trong tài liệu <a href="{@docRoot}guide/components/activities.html#CoordinatingActivities">Hoạt động</a>
+.)</p>
+</ul>
+
+<p>Để biết thêm mã ví dụ, thể hiện cách gắn kết với một dịch vụ, hãy xem lớp <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html">{@code
+RemoteService.java}</a> trong <a href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a>.</p>
+
+
+
+
+
+<h2 id="Lifecycle">Quản lý Vòng đời của một Dịch vụ Gắn kết</h2>
+
+<p>Khi một dịch vụ bị bỏ gắn kết khỏi tất cả máy khách, hệ thống Android sẽ hủy nó (trừ khi nó cũng
+được bắt đầu bằng {@link android.app.Service#onStartCommand onStartCommand()}). Như vậy, bạn không phải
+ quản lý vòng đời dịch vụ của mình nếu nó thuần túy là một
+dịch vụ gắn kết&mdash;hệ thống Android sẽ quản lý nó cho bạn dựa trên việc nó có gắn kết với bất kỳ máy khách nào không.</p>
+
+<p>Tuy nhiên, nếu bạn chọn triển khai phương pháp gọi lại {@link android.app.Service#onStartCommand
+onStartCommand()}, vậy thì bạn phải dừng dịch vụ một cách tường minh, vì dịch vụ
+lúc này đang được coi là <em>được bắt đầu</em>. Trong trường hợp này, dịch vụ sẽ chạy cho tới khi dịch vụ
+tự dừng bằng {@link android.app.Service#stopSelf()} hoặc một thành phần khác sẽ gọi {@link
+android.content.Context#stopService stopService()}, bất kể nó có gắn kết với bất kỳ máy khách
+nào không.</p>
+
+<p>Ngoài ra, nếu dịch vụ của bạn được bắt đầu và chấp nhận gắn kết, lúc đó khi hệ thống gọi
+phương pháp {@link android.app.Service#onUnbind onUnbind()} của bạn, bạn có thể tùy chọn trả về
+{@code true} nếu bạn muốn nhận một lệnh gọi tới {@link android.app.Service#onRebind
+onRebind()} vào lần tới khi một máy khách gắn kết với dịch vụ (thay vì nhận một lệnh gọi tới {@link
+android.app.Service#onBind onBind()}). {@link android.app.Service#onRebind
+onRebind()} sẽ trả về rỗng, nhưng máy khách vẫn nhận được {@link android.os.IBinder} trong gọi lại
+{@link android.content.ServiceConnection#onServiceConnected onServiceConnected()} của mình.
+Hình 1 bên dưới minh họa lô-gic cho loại vòng đời này.</p>
+
+
+<img src="{@docRoot}images/fundamentals/service_binding_tree_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Hình 1.</strong> Vòng đời của một dịch vụ được bắt đầu
+và cũng cho phép gắn kết.</p>
+
+
+<p>Để biết thêm thông tin về vòng đời của một dịch vụ được bắt đầu, hãy xem tài liệu <a href="{@docRoot}guide/components/services.html#Lifecycle">Dịch vụ</a>.</p>
+
+
+
+
diff --git a/docs/html-intl/intl/vi/guide/components/fragments.jd b/docs/html-intl/intl/vi/guide/components/fragments.jd
new file mode 100644
index 0000000..95d9c76
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/components/fragments.jd
@@ -0,0 +1,812 @@
+page.title=Phân đoạn
+parent.title=Hoạt động
+parent.link=activities.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Trong tài liệu này</h2>
+  <ol>
+    <li><a href="#Design">Triết lý Thiết kế</a></li>
+    <li><a href="#Creating">Tạo một Phân đoạn</a>
+      <ol>
+        <li><a href="#UI">Thêm một giao diện người dùng</a></li>
+        <li><a href="#Adding">Thêm một phân đoạn vào một hoạt động</a></li>
+      </ol>
+    </li>
+    <li><a href="#Managing">Quản lý Phân đoạn</a></li>
+    <li><a href="#Transactions">Thực hiện Giao tác Phân đoạn</a></li>
+    <li><a href="#CommunicatingWithActivity">Giao tiếp với Hoạt động</a>
+      <ol>
+        <li><a href="#EventCallbacks">Tạo gọi lại sự kiện cho hoạt động</a></li>
+        <li><a href="#ActionBar">Thêm mục vào Thanh Hành động</a></li>
+      </ol>
+    </li>
+    <li><a href="#Lifecycle">Xử lý Vòng đời của Phân đoạn</a>
+      <ol>
+        <li><a href="#CoordinatingWithActivity">Phối hợp với vòng đời của hoạt động</a></li>
+      </ol>
+    </li>
+    <li><a href="#Example">Ví dụ</a></li>
+  </ol>
+
+  <h2>Lớp khóa</h2>
+  <ol>
+    <li>{@link android.app.Fragment}</li>
+    <li>{@link android.app.FragmentManager}</li>
+    <li>{@link android.app.FragmentTransaction}</li>
+  </ol>
+  
+  <h2>Xem thêm</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/fragments/index.html">Xây dựng một UI Động bằng các Phân đoạn</a></li>
+    <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">Hỗ trợ Máy tính bảng
+và Thiết bị cầm tay</a></li>
+  </ol>
+</div>
+</div>
+
+<p>{@link android.app.Fragment} biểu diễn một hành vi hay một phần giao diện người dùng trong một
+{@link android.app.Activity}. Bạn có thể kết hợp nhiều phân đoạn trong một hoạt động duy nhất để xây dựng một
+UI nhiều bảng và sử dụng lại phân đoạn trong nhiều hoạt động. Bạn có thể coi phân đoạn như là một
+phần mô-đun của một hoạt động, có vòng đời của chính nó, nhận các sự kiện đầu vào của chính nó, và
+bạn có thể thêm hoặc gỡ bỏ trong khi hoạt động đang chạy (kiểu như một "hoạt động con" mà
+bạn có thể sử dụng lại trong các hoạt động khác nhau).</p>
+
+<p>Phân đoạn phải luôn được nhúng trong một hoạt động và vòng đời của phân đoạn bị ảnh hưởng trực tiếp bởi
+vòng đời của hoạt động chủ. Ví dụ, khi hoạt động bị tạm dừng, tất cả
+phân đoạn trong nó cũng vậy, và khi hoạt động bị hủy, tất cả phân đoạn cũng vậy. Tuy nhiên, trong khi một
+hoạt động đang chạy (nó ở trong trạng thái vòng đời <em>được tiếp tục</em><a href="{@docRoot}guide/components/activities.html#Lifecycle"></a>), bạn có thể
+thao tác từng phân đoạn độc lập, chẳng hạn như thêm hay xóa chúng. Khi bạn thực hiện một
+giao tác phân đoạn, bạn cũng có thể thêm nó vào một ngăn xếp được quản lý bởi
+hoạt động đó&mdash;từng mục nhập vào ngăn xếp trong hoạt động là một bản ghi giao tác phân đoạn
+đã xảy ra. Ngăn xếp cho phép người dùng đảo ngược một giao tác phân đoạn (điều hướng ngược lại),
+bằng cách nhấn nút <em>Quay lại</em>.</p>
+
+<p>Khi bạn thêm một phân đoạn như một phần trong bố trí hoạt động của mình, nó sẽ ở trong một {@link
+android.view.ViewGroup} bên trong phân cấp dạng xem của hoạt động đó và phân đoạn này sẽ định nghĩa bố trí
+dạng xem của chính nó.
+Bạn có thể chèn một phân đoạn vào bố trí hoạt động của mình bằng cách khai báo phân đoạn trong tệp
+bố trí của hoạt động, dưới dạng một phần tử {@code &lt;fragment&gt;}, hoặc từ mã ứng dụng của bạn bằng cách thêm nó vào một
+{@link android.view.ViewGroup} hiện hữu. Tuy nhiên, không bắt buộc phải có một phân đoạn là một bộ phận của bố trí hoạt động
+; bạn cũng có thể sử dụng một phân đoạn mà không cần UI của chính nó như một trình thực hiện vô hình cho hoạt động
+.</p>
+
+<p>Tài liệu này mô tả cách xây dựng ứng dụng của bạn để sử dụng phân đoạn, bao gồm
+cách các phân đoạn có thể duy trì trạng thái của chúng khi được thêm vào ngăn xếp của hoạt động, chia sẻ
+các sự kiện với hoạt động và các phân đoạn khác trong hoạt động, đóng góp vào thanh hành động của hoạt động
+và nhiều thông tin khác.</p>
+
+
+<h2 id="Design">Triết lý Thiết kế</h2>
+
+<p>Android giới thiệu phân đoạn trong phiên bản Android 3.0 (API mức 11), chủ yếu nhằm hỗ trợ
+các thiết kế UI động và linh hoạt hơn trên màn hình lớn, chẳng hạn như máy tính bảng. Vì
+màn hình của máy tính bảng lớn hơn nhiều màn hình của thiết bị cầm tay, có nhiều khoảng trống hơn để kết hợp và
+trao đổi các thành phần UI. Phân đoạn cho phép những thiết kế như vậy mà không cần bạn phải quản lý những thay đổi
+phức tạp về phân cấp dạng xem. Bằng cách chia bố trí của một hoạt động thành các phân đoạn, bạn có thể
+sửa đổi diện mạo của hoạt động vào thời gian chạy và giữ những thay đổi đó trong một ngăn xếp
+được quản lý bởi hoạt động.</p>
+
+<p>Ví dụ, một ứng dụng tin tức có thể sử dụng một phân đoạn để hiển thị một danh sách bài viết ở
+bên trái và một phân đoạn khác để hiển thị một bài viết ở bên phải&mdash;cả hai phân đoạn đều xuất hiện trong một
+hoạt động, bên cạnh nhau, và từng phân đoạn có tập phương pháp gọi lại vòng đời riêng và xử lý
+các sự kiện nhập liệu người dùng riêng của mình. Vì thế, thay vì sử dụng một hoạt động để chọn một bài viết và một
+hoạt động khác để đọc bài viết, người dùng có thể chọn một bài viết và đọc nó trong cùng
+hoạt động, như được minh họa trong bố trí máy tính bảng trong hình 1.</p>
+
+<p>Bạn nên thiết kế từng phân đoạn như một thành phần hoạt động dạng mô-đun và có thể sử dụng lại. Đó là bởi
+mỗi phân đoạn sẽ định nghĩa bố trí và hành vi của chính nó với các phương pháp gọi lại vòng đời của chính nó, bạn có thể
+bao gồm một phân đoạn trong nhiều hoạt động, vì thế bạn nên thiết kế để tái sử dụng và tránh trực tiếp
+thao tác một phân đoạn từ một phân đoạn khác. Điều này đặc biệt quan trọng vì một phân đoạn
+mô-đun cho phép bạn thay đổi kết hợp phân đoạn của mình cho các kích cỡ màn hình khác nhau. Khi thiết kế
+ứng dụng của bạn để hỗ trợ cả máy tính bảng và thiết bị cầm tay, bạn có thể sử dụng lại phân đoạn của mình trong các cấu hình
+bố trí khác nhau nhằm tối ưu hóa trải nghiệm người dùng dựa trên không gian màn hình có sẵn. Ví
+dụ, trên một thiết bị cầm tay, có thể cần phải tách riêng các phân đoạn để cung cấp một UI đơn bảng khi mà
+không thể làm vừa khít nhiều hơn một phân đoạn trong cùng hoạt động.</p>
+
+<img src="{@docRoot}images/fundamentals/fragments.png" alt="" />
+<p class="img-caption"><strong>Hình 1.</strong> Ví dụ về cách hai mô-đun UI được định nghĩa
+bởi các phân đoạn có thể được kết hợp thành một hoạt động đối với thiết kế máy tính bảng, nhưng được tách riêng đối với
+thiết kế thiết bị cầm tay.</p>
+
+<p>Ví dụ&mdash;để tiếp tục với ví dụ về ứng dụng tin tức&mdash;ứng dụng có thể nhúng
+hai phân đoạn trong <em>Hoạt động A</em>, khi đang chạy trên một thiết bị có kích cỡ máy tính bảng. Tuy nhiên, trên một
+màn hình kích cỡ thiết bị cầm tay, không có đủ khoảng trống cho cả hai phân đoạn, vì thế <em>Hoạt động A</em> chỉ
+bao gồm phân đoạn cho danh sách bài viết, và khi người dùng chọn một bài viết, nó sẽ khởi động
+<em>Hoạt động B</em>, hoạt động này chứa phân đoạn thứ hai là đọc bài viết. Vì thế, ứng dụng
+hỗ trợ cả máy tính bảng và thiết bị cầm tay bằng cách sử dụng lại các phân đoạn theo các cách kết hợp khác nhau như được minh họa trong
+hình 1.</p>
+
+<p>Để biết thêm thông tin về việc thiết kế ứng dụng của bạn bằng các cách kết hợp phân đoạn khác nhau cho
+cấu hình màn hình khác nhau, hãy xem hướng dẫn <a href="{@docRoot}guide/practices/tablets-and-handsets.html">Hỗ trợ Máy tính bảng và Thiết bị cầm tay</a>.</p>
+
+
+
+<h2 id="Creating">Tạo một Phân đoạn</h2>
+
+<div class="figure" style="width:327px">
+<img src="{@docRoot}images/fragment_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Hình 2.</strong> Vòng đời của một phân đoạn (trong khi hoạt động
+của nó đang chạy).</p>
+</div>
+
+<p>Để tạo một phân đoạn, bạn phải tạo một lớp con của {@link android.app.Fragment} (hoặc
+một lớp con hiện tại của nó). Lớp {@link android.app.Fragment} có mã trông rất giống
+một {@link android.app.Activity}. Nó chứa các phương pháp gọi lại tương tự như hoạt động, chẳng
+hạn như {@link android.app.Fragment#onCreate onCreate()}, {@link android.app.Fragment#onStart onStart()},
+{@link android.app.Fragment#onPause onPause()}, và {@link android.app.Fragment#onStop onStop()}. Trên
+thực tế, nếu bạn đang chuyển đổi một ứng dụng Android hiện tại để sử dụng các phân đoạn, bạn có thể chỉ cần di chuyển
+mã khỏi các phương pháp gọi lại của hoạt động của bạn vào các phương pháp gọi lại tương ứng của phân đoạn
+của bạn.</p>
+
+<p>Thường thì ít nhất bạn nên triển khai các phương pháp vòng đời sau:</p>
+
+<dl>
+  <dt>{@link android.app.Fragment#onCreate onCreate()}</dt>
+  <dd>Hệ thống sẽ gọi phương pháp này khi tạo phân đoạn. Trong triển khai của mình, bạn nên
+khởi tạo các thành phần thiết yếu của phân đoạn mà bạn muốn giữ lại khi phân đoạn
+bị tạm dừng hoặc dừng hẳn, sau đó tiếp tục.</dd>
+  <dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
+  <dd>Hệ thống sẽ gọi phương pháp này khi đến lúc phân đoạn vẽ giao diện người dùng của nó 
+lần đầu tiên. Để vẽ một UI cho phân đoạn của mình, bạn phải trả về một {@link android.view.View} từ phương pháp
+này, đây là gốc của bố trí phân đoạn của bạn. Bạn có thể trả về giá trị rỗng nếu phân đoạn không
+cung cấp UI.</dd>
+  <dt>{@link android.app.Activity#onPause onPause()}</dt>
+  <dd>Hệ thống gọi phương pháp này là dấu hiệu đầu tiên về việc người dùng đang rời khỏi
+phân đoạn (mặc dù không phải lúc nào cũng có nghĩa rằng phân đoạn đang bị hủy). Trường hợp này thường là khi bạn
+định thực hiện bất kỳ thay đổi nào vẫn cần có hiệu lực ngoài phiên của người dùng hiện thời (vì
+người dùng có thể không quay lại).</dd>
+</dl>
+
+<p>Phần lớn ứng dụng nên triển khai ít nhất ba phương pháp sau đối với mọi phân đoạn, nhưng có một vài
+phương pháp gọi lại khác mà bạn cũng nên sử dụng để xử lý các giai đoạn khác nhau trong
+vòng đời của phân đoạn. Tất cả phương pháp gọi lại vòng đời được đề cập chi tiết hơn trong phần
+về <a href="#Lifecycle">Xử lý Vòng đời của Phân đoạn</a>.</p>
+
+
+<p>Cũng có một vài lớp con mà bạn có thể muốn mở rộng thay vì lớp cơ bản {@link
+android.app.Fragment}:</p>
+
+<dl>
+  <dt>{@link android.app.DialogFragment}</dt>
+  <dd>Hiển thị một hộp thoại trôi nổi. Sử dụng lớp này để tạo một hộp thoại là một phương án hay cho việc sử dụng các phương pháp trình trợ giúp
+hộp thoại trong lớp {@link android.app.Activity}, vì bạn có thể
+kết hợp một hộp thoại phân đoạn vào ngăn xếp của các phân đoạn được quản lý bởi hoạt động,
+cho phép người dùng trả về một phân đoạn bị bỏ.</dd>
+
+  <dt>{@link android.app.ListFragment}</dt>
+  <dd>Hiển thị một danh sách các mục được quản lý bởi một trình điều hợp (chẳng hạn như một {@link
+android.widget.SimpleCursorAdapter}), tương tự như {@link android.app.ListActivity}. Nó cung cấp
+một vài phương pháp để quản lý một dạng xem danh sách, chẳng hạn như phương pháp gọi lại {@link
+android.app.ListFragment#onListItemClick(ListView,View,int,long) onListItemClick()} để
+xử lý các sự kiện nhấp.</dd>
+
+  <dt>{@link android.preference.PreferenceFragment}</dt>
+  <dd>Hiển thị một phân cấp các đối tượng {@link android.preference.Preference} dưới dạng một danh sách, tương tự như
+{@link android.preference.PreferenceActivity}. Điều này hữu ích khi tạo một hoạt động "thiết đặt"
+cho ứng dụng của bạn.</dd>
+</dl>
+
+
+<h3 id="UI">Thêm một giao diện người dùng</h3>
+
+<p>Phân đoạn thường được sử dụng như một phần giao diện người dùng của hoạt động và đóng góp bố trí của
+chính nó cho hoạt động.</p>
+
+<p>Để cung cấp một bố trí cho một phân đoạn, bạn phải triển khai phương pháp gọi lại {@link
+android.app.Fragment#onCreateView onCreateView()}, phương pháp này được hệ thống Android gọi
+khi đến lúc phân đoạn vẽ bố trí của nó. Việc bạn triển khai phương pháp này phải trả về một
+{@link android.view.View} là phần gốc cho bố trí phân đoạn của bạn.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Nếu phân đoạn của bạn là một lớp con của {@link
+android.app.ListFragment}, triển khai mặc định sẽ trả về một {@link android.widget.ListView} từ
+{@link android.app.Fragment#onCreateView onCreateView()}, vì thế bạn không cần triển khai nó.</p>
+
+<p>Để trả về một bố trí từ {@link
+android.app.Fragment#onCreateView onCreateView()}, bạn có thể bung nó từ một <a href="{@docRoot}guide/topics/resources/layout-resource.html">tài nguyên bố trí</a> được định nghĩa trong XML. Để
+giúp bạn làm vậy, {@link android.app.Fragment#onCreateView onCreateView()} cung cấp một đối tượng
+{@link android.view.LayoutInflater}.</p>
+
+<p>Ví dụ, sau đây là một lớp con của {@link android.app.Fragment} với chức năng nạp một bố trí từ tệp
+{@code example_fragment.xml}:</p>
+
+<pre>
+public static class ExampleFragment extends Fragment {
+    &#64;Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.example_fragment, container, false);
+    }
+}
+</pre>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>Tạo một bố trí</h3>
+  <p>Trong ví dụ trên, {@code R.layout.example_fragment} là một tham chiếu tới tài nguyên bố trí
+có tên {@code example_fragment.xml} được lưu trong tài nguyên ứng dụng. Để biết thông tin về cách
+tạo một bố trí trong XML, hãy xem tài liệu <a href="{@docRoot}guide/topics/ui/index.html">Giao diện Người dùng</a>
+.</p>
+</div>
+</div>
+
+<p>Tham số {@code container} được chuyển tới {@link android.app.Fragment#onCreateView
+onCreateView()} là {@link android.view.ViewGroup} mẹ (tức bố trí của hoạt động), trong đó
+bố trí phân đoạn của bạn
+sẽ được chèn vào. Tham số {@code savedInstanceState} là một {@link android.os.Bundle} có chức năng
+cung cấp dữ liệu về thực thể trước đó của phân đoạn, nếu phân đoạn đang được tiếp tục
+(việc khôi phục trạng thái được bàn kỹ hơn trong phần về <a href="#Lifecycle">Xử lý
+Vòng đời của Phân đoạn</a>).</p>
+
+<p>Phương pháp {@link android.view.LayoutInflater#inflate(int,ViewGroup,boolean) inflate()} có
+ba tham đối:</p>
+<ul>
+  <li>ID tài nguyên của bố trí mà bạn muốn bung.</li>
+  <li>{@link android.view.ViewGroup} là mẹ của bố trí được bung. Việc chuyển {@code
+container} có vai trò quan trọng để hệ thống áp dụng các tham số bố trí cho dạng xem gốc của bố trí
+được bung, được quy định bởi dạng xem mẹ là nơi mà nó diễn ra trong đó.</li>
+  <li>Một boolean cho biết bố trí được bung có nên được gắn với {@link
+android.view.ViewGroup} (tham số thứ hai) trong khi bung hay không. (Trong trường hợp này, điều này là
+sai vì hệ thống đã đang chèn bố trí được bung vào {@code
+container}&mdash;việc chuyển đúng sẽ tạo ra một nhóm dạng xem thừa trong bố trí cuối cùng.)</li>
+</ul>
+
+<p>Giờ bạn đã thấy cách tạo một phân đoạn nhằm cung cấp một bố trí. Tiếp theo, bạn cần thêm
+phân đoạn vào hoạt động của mình.</p>
+
+
+
+<h3 id="Adding">Thêm một phân đoạn vào một hoạt động</h3>
+
+<p>Thường thì một phân đoạn đóng góp một phần UI vào hoạt động chủ, nó được nhúng như một phần
+trong phân cấp dạng xem tổng thể của hoạt động. Có hai cách mà bạn có thể thêm một phân đoạn vào bố trí
+của hoạt động:</p>
+
+<ul>
+  <li><b>Khai báo phân đoạn bên trong tệp bố trí của hoạt động.</b>
+<p>Trong trường hợp này, bạn có thể
+chỉ định các tính chất bố trí cho phân đoạn như thể nó là một dạng xem. Ví dụ, sau đây là tệp bố trí
+cho một hoạt động có hai phân đoạn:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"&gt;
+    &lt;fragment android:name="com.example.news.ArticleListFragment"
+            android:id="@+id/list"
+            android:layout_weight="1"
+            android:layout_width="0dp"
+            android:layout_height="match_parent" /&gt;
+    &lt;fragment android:name="com.example.news.ArticleReaderFragment"
+            android:id="@+id/viewer"
+            android:layout_weight="2"
+            android:layout_width="0dp"
+            android:layout_height="match_parent" /&gt;
+&lt;/LinearLayout&gt;
+</pre>
+  <p>Thuộc tính {@code android:name} trong {@code &lt;fragment&gt;} sẽ chỉ định lớp {@link
+android.app.Fragment} để khởi tạo trong bố trí.</p>
+
+<p>Khi hệ thống tạo bố trí hoạt động này, nó sẽ khởi tạo từng phân đoạn được chỉ định trong bố trí
+và gọi ra phương pháp {@link android.app.Fragment#onCreateView onCreateView()} cho từng phân đoạn,
+để truy xuất bố trí của từng phân đoạn. Hệ thống sẽ chèn {@link android.view.View} được trả về bởi phân đoạn
+trực tiếp thế chỗ phần tử {@code &lt;fragment&gt;}.</p>
+
+<div class="note">
+  <p><strong>Lưu ý:</strong> Mỗi phân đoạn yêu cầu một mã định danh duy nhất
+mà hệ thống có thể sử dụng để khôi phục phân đoạn nếu hoạt động bị khởi động lại (và bạn có thể sử dụng để
+nắm bắt phân đoạn sẽ thực hiện giao tác, chẳng hạn như gỡ bỏ nó). Có ba cách để cung cấp ID cho một
+phân đoạn:</p>
+  <ul>
+    <li>Cung cấp thuộc tính {@code android:id} với một ID duy nhất.</li>
+    <li>Cung cấp thuộc tính {@code android:tag} với một xâu duy nhất.</li>
+    <li>Nếu bạn không cung cấp được thuộc tính nào, hệ thống sẽ sử dụng ID của dạng xem 
+của bộ chứa.</li>
+  </ul>
+</div>
+  </li>
+
+  <li><b>Hoặc, bằng cách lập trình, thêm phân đoạn vào một {@link android.view.ViewGroup} hiện hữu.</b>
+<p>Vào bất cứ lúc nào trong khi hoạt động của bạn đang chạy, bạn có thể thêm phân đoạn vào bố trí hoạt động của mình. Bạn
+chỉ cần chỉ định một {@link
+android.view.ViewGroup} là nơi mà bạn sẽ đặt phân đoạn vào.</p>
+  <p>Để thực hiện giao tác phân đoạn trong hoạt động của mình (chẳng hạn như thêm, gỡ bỏ, hay thay thế một
+phân đoạn), bạn phải sử dụng các API từ {@link android.app.FragmentTransaction}. Bạn có thể nhận một thực thể
+của {@link android.app.FragmentTransaction} từ {@link android.app.Activity} của mình như sau:</p>
+
+<pre>
+FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()}
+FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
+</pre>
+
+<p>Sau đó, bạn có thể thêm một phân đoạn bằng cách sử dụng phương pháp {@link
+android.app.FragmentTransaction#add(int,Fragment) add()}, chỉ định phân đoạn sẽ thêm và
+dạng xem mà bạn sẽ chèn nó vào. Ví dụ:</p>
+
+<pre>
+ExampleFragment fragment = new ExampleFragment();
+fragmentTransaction.add(R.id.fragment_container, fragment);
+fragmentTransaction.commit();
+</pre>
+
+  <p>Tham đối đầu tiên được chuyển cho {@link android.app.FragmentTransaction#add(int,Fragment) add()}
+là {@link android.view.ViewGroup}, là nơi mà phân đoạn sẽ được đặt vào, được chỉ định bởi
+ID tài nguyên, và tham đối thứ hai là phân đoạn cần thêm.</p>
+  <p>Sau khi bạn đã thực hiện các thay đổi của mình bằng
+{@link android.app.FragmentTransaction}, bạn phải
+gọi {@link android.app.FragmentTransaction#commit} để các thay đổi có hiệu lực.</p>
+  </li>
+</ul>
+
+
+<h4 id="AddingWithoutUI">Thêm một phân đoạn không có UI</h4>
+
+<p>Các ví dụ nêu trên cho biết cách thêm một phân đoạn vào hoạt động của bạn để cung cấp một UI. Tuy nhiên,
+bạn cũng có thể sử dụng một phân đoạn để cung cấp một hành vi chạy ngầm cho hoạt động mà không cần đưa
+UI bổ sung.</p>
+
+<p>Để thêm một phân đoạn không có UI, hãy thêm phân đoạn từ hoạt động đang bằng cách sử dụng {@link
+android.app.FragmentTransaction#add(Fragment,String)} (cung cấp một "tag" xâu duy nhất cho phân đoạn
+, thay vì một ID dạng xem). Làm vậy sẽ thêm phân đoạn, nhưng vì không liên kết với một dạng xem
+trong bố trí hoạt động, nó sẽ không nhận được lệnh gọi tới {@link
+android.app.Fragment#onCreateView onCreateView()}. Vì thế, bạn không cần triển khai phương pháp đó.</p>
+
+<p>Việc cung cấp tag xâu cho phân đoạn không chỉ áp dụng cho các phân đoạn không có UI&mdash;bạn cũng có thể
+cung cấp tag xâu cho phân đoạn có UI&mdash;nhưng nếu phân đoạn không có
+UI, khi đó, tag xâu là cách duy nhất để nhận biết nó. Nếu sau này bạn muốn nhận phân đoạn từ
+hoạt động, bạn cần sử dụng {@link android.app.FragmentManager#findFragmentByTag
+findFragmentByTag()}.</p>
+
+<p>Để biết ví dụ về hoạt động sử dụng phân đoạn như một trình thực hiện nền, không có UI, hãy xem mẫu {@code
+FragmentRetainInstance.java}, mẫu này có trong các mẫu SDK (có sẵn thông qua
+Trình quản lý SDK Android) và nằm trên hệ thống của bạn như là 
+<code>&lt;sdk_root&gt;/APIDemos/app/src/main/java/com/example/android/apis/app/FragmentRetainInstance.java</code>.</p>
+
+
+
+<h2 id="Managing">Quản lý Phân đoạn</h2>
+
+<p>Để quản lý các phân đoạn trong hoạt động của mình, bạn cần sử dụng {@link android.app.FragmentManager}. Để
+có nó, hãy gọi {@link android.app.Activity#getFragmentManager()} từ hoạt động của bạn.</p>
+
+<p>Một số việc bạn có thể làm với {@link android.app.FragmentManager} bao gồm:</p>
+
+<ul>
+  <li>Nhận các phân đoạn tồn tại trong hoạt động, bằng {@link
+android.app.FragmentManager#findFragmentById findFragmentById()} (đối với các phân đoạn cung cấp UI trong
+bố trí hoạt động) hoặc {@link android.app.FragmentManager#findFragmentByTag
+findFragmentByTag()} (đối với các phân đoạn có hoặc không cung cấp UI).</li> 
+  <li>Lấy phân đoạn ra khỏi ngăn xếp, bằng {@link
+android.app.FragmentManager#popBackStack()} (mô phỏng một câu lệnh <em>Quay lại</em> của người dùng).</li>
+  <li>Đăng ký một đối tượng theo dõi cho những thay đổi đối với ngăn xếp, bằng {@link
+android.app.FragmentManager#addOnBackStackChangedListener addOnBackStackChangedListener()}.</li>
+</ul>
+
+<p>Để biết thêm thông tin về những phương pháp này và phương pháp khác, hãy tham khảo tài liệu lớp {@link
+android.app.FragmentManager}.</p>
+
+<p>Như minh họa trong phần trước, bạn cũng có thể sử dụng {@link android.app.FragmentManager}
+để mở một {@link android.app.FragmentTransaction}, nó cho phép bạn thực hiện các giao tác, ví dụ như
+thêm hoặc gỡ bỏ phân đoạn.</p>
+
+
+<h2 id="Transactions">Thực hiện Giao tác Phân đoạn</h2>
+
+<p>Một tính năng tuyệt vời khi sử dụng phân đoạn trong hoạt động của bạn đó là khả năng thêm, gỡ bỏ, thay thế,
+và thực hiện các hành động khác với chúng, để hồi đáp lại tương tác của người dùng. Mỗi tập hợp thay đổi mà bạn
+thực thi cho hoạt động được gọi là một giao tác và bạn có thể thực hiện một giao tác bằng cách sử dụng các API trong {@link
+android.app.FragmentTransaction}. Bạn cũng có thể lưu từng giao tác vào một ngăn xếp được quản lý bởi
+hoạt động, cho phép người dùng điều hướng ngược lại thông qua những thay đổi phân đoạn (tương tự như điều hướng
+ngược lại thông qua hoạt động).</p>
+
+<p>Bạn có thể thu được một thực thể của {@link android.app.FragmentTransaction} từ {@link
+android.app.FragmentManager} như sau:</p>
+
+<pre>
+FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()};
+FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
+</pre>
+
+<p>Mỗi giao tác là một tập hợp những thay đổi mà bạn muốn thực hiện tại cùng thời điểm. Bạn có thể thiết lập
+tất cả thay đổi mà mình muốn thực hiện đối với một giao tác cho trước bằng cách sử dụng các phương pháp như {@link
+android.app.FragmentTransaction#add add()}, {@link android.app.FragmentTransaction#remove remove()},
+và {@link android.app.FragmentTransaction#replace replace()}. Sau đó, để áp dụng giao tác
+cho hoạt động, bạn phải gọi {@link android.app.FragmentTransaction#commit()}.</p>
+</dl>
+
+<p>Trước khi bạn gọi {@link
+android.app.FragmentTransaction#commit()}, tuy nhiên, bạn có thể muốn gọi {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()}, để thêm giao tác
+vào một ngăn xếp của các giao tác phân đoạn. Ngăn xếp này được quản lý bởi hoạt động và cho phép
+người dùng trở về trạng thái phân đoạn trước đó, bằng cách nhấp nút <em>Quay lại</em>.</p>
+
+<p>Ví dụ, sau đây là cách bạn có thể thay thế phân đoạn này bằng phân đoạn khác, và giữ nguyên
+trạng thái trước đó của ngăn xếp:</p>
+
+<pre>
+// Create new fragment and transaction
+Fragment newFragment = new ExampleFragment();
+FragmentTransaction transaction = getFragmentManager().beginTransaction();
+
+// Replace whatever is in the fragment_container view with this fragment,
+// and add the transaction to the back stack
+transaction.replace(R.id.fragment_container, newFragment);
+transaction.addToBackStack(null);
+
+// Commit the transaction
+transaction.commit();
+</pre>
+
+<p>Trong ví dụ này, {@code newFragment} thay thế mọi phân đoạn (nếu có) hiện đang ở trong
+bộ chứa bố trí được nhận biết bởi ID {@code R.id.fragment_container}. Bằng cách gọi {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()}, giao tác thay thế
+được lưu vào ngăn xếp, vì thế người dùng có thể đảo ngược giao tác và mang
+giao tác trước đó trở lại bằng cách nhấn nút <em>Quay lại</em>.</p>
+
+<p>Nếu bạn thêm nhiều thay đổi vào giao tác (chẳng hạn như một {@link
+android.app.FragmentTransaction#add add()} khác hoặc {@link android.app.FragmentTransaction#remove
+remove()}) và gọi {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()}, khi đó, tất cả thay đổi được áp dụng
+trước khi bạn gọi {@link android.app.FragmentTransaction#commit commit()} đều được thêm vào
+ngăn xếp như một giao tác riêng lẻ và nút <em>Quay lại</em> sẽ đảo ngược tất cả cùng nhau.</p>
+
+<p>Thứ tự mà bạn thêm thay đổi vào một {@link android.app.FragmentTransaction} không quan trọng,
+ngoại trừ:</p>
+<ul>
+  <li>Bạn phải gọi {@link android.app.FragmentTransaction#commit()} cuối cùng</li>
+  <li>Nếu bạn thêm nhiều phân đoạn vào cùng bộ chứa, khi đó thứ tự mà
+bạn thêm chúng sẽ xác định thứ tự chúng xuất hiện trong phân cấp dạng xem</li>
+</ul>
+
+<p>Nếu bạn không gọi {@link android.app.FragmentTransaction#addToBackStack(String)
+addToBackStack()} khi thực hiện một giao tác để xóa một phân đoạn, khi đó, phân đoạn đó sẽ bị
+hủy khi giao tác được thực hiện và người dùng không thể điều hướng trở lại nó. Trong khi đó, nếu bạn
+gọi {@link android.app.FragmentTransaction#addToBackStack(String) addToBackStack()} khi
+gỡ bỏ một phân đoạn, khi đó phân đoạn bị <em>dừng</em> và sẽ được khôi phục nếu người dùng điều hướng
+trở lại.</p>
+
+<p class="note"><strong>Mẹo:</strong> Với mỗi giao tác phân đoạn, bạn có thể áp dụng một hoạt ảnh
+chuyển tiếp bằng cách gọi {@link android.app.FragmentTransaction#setTransition setTransition()} trước khi
+thực thi.</p>
+
+<p>Việc gọi {@link android.app.FragmentTransaction#commit()} không thực hiện giao tác
+ngay lập tức. Thay vào đó, nó lập lịch biểu để chạy trên luồng UI của hoạt động (luồng "chính") ngay khi
+luồng có thể làm vậy. Tuy nhiên, nếu cần, bạn có thể gọi {@link
+android.app.FragmentManager#executePendingTransactions()} từ luồng UI của mình để ngay lập tức thực hiện
+các giao tác được gửi bởi {@link android.app.FragmentTransaction#commit()}. Làm vậy
+thường không cần thiết trừ khi giao tác đó là phụ thuộc cho các tác vụ ở những luồng khác.</p>
+
+<p class="caution"><strong>Chú ý:</strong> Bạn có thể thực thi một giao tác bằng cách sử dụng {@link
+android.app.FragmentTransaction#commit commit()} chỉ trước khi hoạt động <a href="{@docRoot}guide/components/activities.html#SavingActivityState">lưu
+trạng thái</a> của nó (khi người dùng rời khỏi hoạt động). Nếu bạn định thực thi sau thời điểm đó sẽ phát sinh một lỗi
+ngoại lệ. Nguyên nhân là vì trạng thái sau khi thực thi có thể bị mất nếu hoạt động
+cần được khôi phục. Đối với những trường hợp mà bạn có thể mất thực thi, hãy sử dụng {@link
+android.app.FragmentTransaction#commitAllowingStateLoss()}.</p>
+
+
+
+
+<h2 id="CommunicatingWithActivity">Giao tiếp với Hoạt động</h2>
+
+<p>Mặc dù {@link android.app.Fragment} được triển khai như một đối tượng độc lập với
+{@link android.app.Activity} và có thể được sử dụng bên trong nhiều hoạt động, một thực thể đã cho của
+phân đoạn sẽ được gắn kết trực tiếp với hoạt động chứa nó.</p>
+
+<p>Cụ thể, phân đoạn có thể truy cập thực thể {@link android.app.Activity} bằng {@link
+android.app.Fragment#getActivity()} và dễ dàng thực hiện các tác vụ như tìm một dạng xem trong bố trí
+hoạt động:</p>
+
+<pre>
+View listView = {@link android.app.Fragment#getActivity()}.{@link android.app.Activity#findViewById findViewById}(R.id.list);
+</pre>
+
+<p>Tương tự, hoạt động của bạn có thể gọi ra các phương pháp trong phân đoạn bằng cách thu được một tham chiếu tới
+{@link android.app.Fragment} từ {@link android.app.FragmentManager}, bằng cách sử dụng {@link
+android.app.FragmentManager#findFragmentById findFragmentById()} hoặc {@link
+android.app.FragmentManager#findFragmentByTag findFragmentByTag()}. Ví dụ:</p>
+
+<pre>
+ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
+</pre>
+
+
+<h3 id="EventCallbacks">Tạo gọi lại sự kiện cho hoạt động</h3>
+
+<p>Trong một số trường hợp, bạn có thể cần một phân đoạn để chia sẻ sự kiện với hoạt động. Một cách hay để làm điều này
+đó là định nghĩa một giao diện gọi lại bên trong phân đoạn và yêu cầu hoạt động chủ triển khai
+nó. Khi hoạt động nhận được một lệnh gọi lại thông qua giao diện, nó có thể chia sẻ thông tin với
+các phân đoạn khác trong bố trí nếu cần.</p>
+
+<p>Ví dụ, nếu một ứng dụng tin tức có hai phân đoạn trong một hoạt động&mdash;một để hiển thị danh sách
+bài viết (phân đoạn A) và một để hiển thị một bài viết (phân đoạn B)&mdash;khi đó, phân đoạn A phải thông báo với
+hoạt động khi nào thì một mục danh sách được chọn để nó có thể yêu cầu phân đoạn B hiển thị bài viết đó. Trong
+trường hợp này, giao diện {@code OnArticleSelectedListener} sẽ được khai báo bên trong phân đoạn A:</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    ...
+    // Container Activity must implement this interface
+    public interface OnArticleSelectedListener {
+        public void onArticleSelected(Uri articleUri);
+    }
+    ...
+}
+</pre>
+
+<p>Khi đó, hoạt động lưu trữ phân đoạn sẽ triển khai giao diện {@code OnArticleSelectedListener}
+và
+khống chế {@code onArticleSelected()} để thông báo với phân đoạn B về sự kiện từ phân đoạn A. Để đảm bảo
+rằng hoạt động chủ triển khai giao diện này, phương pháp gọi lại {@link
+android.app.Fragment#onAttach onAttach()} của phân đoạn A (mà hệ thống gọi khi thêm
+phân đoạn vào hoạt động) sẽ khởi tạo một thực thể của {@code OnArticleSelectedListener} bằng cách
+đổi kiểu {@link android.app.Activity} mà được chuyển vào {@link android.app.Fragment#onAttach
+onAttach()}:</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    OnArticleSelectedListener mListener;
+    ...
+    &#64;Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        try {
+            mListener = (OnArticleSelectedListener) activity;
+        } catch (ClassCastException e) {
+            throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener");
+        }
+    }
+    ...
+}
+</pre>
+
+<p>Nếu hoạt động chưa triển khai giao diện, khi đó phân đoạn sẽ đưa ra lỗi 
+{@link java.lang.ClassCastException}.
+Nếu thành công, thành viên {@code mListener} giữ một tham chiếu tới triển khai 
+{@code OnArticleSelectedListener}của hoạt động, sao cho phân đoạn A có thể chia sẻ sự kiện với hoạt động bằng cách gọi các phương pháp
+được định nghĩa bởi giao diện {@code OnArticleSelectedListener}. Ví dụ, nếu phân đoạn A là một
+phần mở rộng của {@link android.app.ListFragment}, mỗi lần
+người dùng nhấp vào một mục danh sách, hệ thống sẽ gọi ra {@link android.app.ListFragment#onListItemClick
+onListItemClick()} trong phân đoạn, và nó lại gọi {@code onArticleSelected()} để chia sẻ
+sự kiện với hoạt động:</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    OnArticleSelectedListener mListener;
+    ...
+    &#64;Override
+    public void onListItemClick(ListView l, View v, int position, long id) {
+        // Append the clicked item's row ID with the content provider Uri
+        Uri noteUri = ContentUris.{@link android.content.ContentUris#withAppendedId withAppendedId}(ArticleColumns.CONTENT_URI, id);
+        // Send the event and Uri to the host activity
+        mListener.onArticleSelected(noteUri);
+    }
+    ...
+}
+</pre>
+
+<p>Tham số {@code id} được chuyển vào {@link
+android.app.ListFragment#onListItemClick onListItemClick()} là ID hàng của mục được nhấp,
+nó được sử dụng bởi hoạt động (hoặc phân đoạn kia) để tải bài viết từ {@link
+android.content.ContentProvider} của ứng dụng.</p>
+
+<p><!--To see a complete implementation of this kind of callback interface, see the <a
+href="{@docRoot}resources/samples/NotePad/index.html">NotePad sample</a>. -->Bạn có thể xem thêm thông tin về
+cách sử dụng một trình cung cấp nội dung trong tài liệu <a href="{@docRoot}guide/topics/providers/content-providers.html">Trình cung cấp Nội dung</a>.</p>
+
+
+
+<h3 id="ActionBar">Thêm mục vào Thanh Hành động</h3>
+
+<p>Phân đoạn của bạn có thể đóng góp các mục menu vào <a href="{@docRoot}guide/topics/ui/menus.html#options-menu">Menu Tùy chọn</a> của hoạt động (và tiếp đó là cả <a href="{@docRoot}guide/topics/ui/actionbar.html">Thanh Hành động</a>) bằng cách triển khai
+{@link android.app.Fragment#onCreateOptionsMenu(Menu,MenuInflater) onCreateOptionsMenu()}. Tuy nhiên, để
+phương pháp này nhận lệnh gọi, bạn phải gọi {@link
+android.app.Fragment#setHasOptionsMenu(boolean) setHasOptionsMenu()} trong khi {@link
+android.app.Fragment#onCreate(Bundle) onCreate()}, để cho biết rằng phân đoạn
+sẽ muốn thêm mục vào Menu Tùy chọn (nếu không, phân đoạn sẽ không nhận được lệnh gọi tới
+{@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()}).</p>
+
+<p>Bất kỳ mục nào mà bạn thêm vào Menu Tùy chọn sau đó từ phân đoạn đều được nối với các mục menu
+hiện tại. Phân đoạn cũng nhận các lệnh gọi lại tới {@link
+android.app.Fragment#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} khi một mục menu
+được chọn.</p>
+
+<p>Bạn cũng có thể đăng ký một dạng xem trong bố trí phân đoạn của mình để cung cấp một menu ngữ cảnh bằng cách gọi {@link
+android.app.Fragment#registerForContextMenu(View) registerForContextMenu()}. Khi người dùng mở
+menu ngữ cảnh, phân đoạn nhận một lệnh gọi tới {@link
+android.app.Fragment#onCreateContextMenu(ContextMenu,View,ContextMenu.ContextMenuInfo)
+onCreateContextMenu()}. Khi người dùng chọn một mục, phân đoạn nhận được một lệnh gọi tới {@link
+android.app.Fragment#onContextItemSelected(MenuItem) onContextItemSelected()}.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Mặc dù phân đoạn của bạn nhận được một lệnh gọi khi chọn mục
+đối với từng mục menu mà nó thêm, trước tiên hoạt động sẽ nhận phương pháp gọi lại tương ứng khi người dùng
+chọn một mục menu. Nếu việc triển khai gọi lại khi chọn mục của hoạt động không
+xử lý mục được chọn, khi đó sự kiện được chuyển sang phương pháp gọi lại của phân đoạn. Điều này đúng đối với
+Menu Tùy chọn và các menu ngữ cảnh.</p>
+
+<p>Để biết thêm thông tin về các menu, xem các hướng dẫn cho nhà phát triển <a href="{@docRoot}guide/topics/ui/menus.html">Menu</a> và <a href="{@docRoot}guide/topics/ui/actionbar.html">Thanh Hành động</a>.</p>
+
+
+
+
+<h2 id="Lifecycle">Xử lý Vòng đời của Phân đoạn</h2>
+
+<div class="figure" style="width:350px">
+<img src="{@docRoot}images/activity_fragment_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Hình 3.</strong> Ảnh hưởng của vòng đời hoạt động tới vòng đời
+của phân đoạn.</p>
+</div>
+
+<p>Việc quản lý vòng đời của một phân đoạn rất giống với quản lý vòng đời của một hoạt động. Giống như
+hoạt động, phân đoạn có thể tồn tại ở ba trạng thái:</p>
+
+<dl>
+  <dt><i>Tiếp tục</i></dt>
+    <dd>Phân đoạn hiển thị trong hoạt động đang chạy.</dd>
+
+  <dt><i>Tạm dừng</i></dt>
+    <dd>Một hoạt động khác ở trong tiền cảnh và có tiêu điểm, nhưng hoạt động mà phân đoạn
+này nằm trong vẫn hiển thị (hoạt động tiền cảnh mờ một phần hoặc không
+che phủ toàn bộ màn hình).</dd>
+
+  <dt><i>Dừng</i></dt>
+    <dd>Phân đoạn không hiển thị. Hoặc là hoạt động chủ đã bị dừng hoặc
+phân đoạn đã được gỡ bỏ khỏi hoạt động, nhưng được thêm vào ngăn xếp. Phân đoạn dừng
+vẫn còn hoạt động (tất cả thông tin về trạng thái và thành viên đều được hệ thống giữ lại). Tuy nhiên, nó không còn
+hiển thị với người dùng nữa và sẽ bị tắt bỏ nếu hoạt động bị tắt bỏ.</dd>
+</dl>
+
+<p>Cũng như một hoạt động, bạn có thể giữ lại trạng thái của một phân đoạn bằng cách sử dụng {@link
+android.os.Bundle}, trong trường hợp tiến trình của hoạt động bị tắt bỏ và bạn cần khôi phục
+trạng thái của phân đoạn khi hoạt động được tạo lại. Bạn có thể lưu trạng thái trong phương pháp gọi lại {@link
+android.app.Fragment#onSaveInstanceState onSaveInstanceState()} của phân đoạn và khôi phục nó trong
+hoặc {@link android.app.Fragment#onCreate onCreate()}, {@link
+android.app.Fragment#onCreateView onCreateView()}, hoặc {@link
+android.app.Fragment#onActivityCreated onActivityCreated()}. Để biết thêm thông tin về việc lưu
+trạng thái, xem tài liệu <a href="{@docRoot}guide/components/activities.html#SavingActivityState">Hoạt động</a>
+.</p>
+
+<p>Sự khác nhau quan trọng nhất trong vòng đời giữa một hoạt động và một phân đoạn đó là cách chúng
+được lưu trữ trong ngăn xếp tương ứng. Hoạt động được đặt vào một ngăn xếp gồm nhiều hoạt động
+, được quản lý bởi hệ thống theo mặc định khi bị dừng (sao cho người dùng có thể điều hướng lại
+nó bằng nút <em>Quay lại</em> như được đề cập trong <a href="{@docRoot}guide/components/tasks-and-back-stack.html">Tác vụ và Ngăn xếp</a>).
+Tuy nhiên, phân đoạn chỉ được đặt vào một ngăn xếp do hoạt động chủ quản lý khi bạn
+yêu cầu rõ ràng rằng trường hợp đó phải được lưu bằng cách gọi {@link
+android.app.FragmentTransaction#addToBackStack(String) addToBackStack()} trong một giao tác
+gỡ bỏ phân đoạn.</p>
+
+<p>Nếu không thì việc quản lý vòng đời của phân đoạn rất giống với việc quản lý vòng đời
+của hoạt động. Vì thế, những nội dung áp dụng cho <a href="{@docRoot}guide/components/activities.html#Lifecycle">quản lý vòng đời của
+hoạt động</a> cũng áp dụng cho phân đoạn. Tuy nhiên, việc mà bạn cũng cần phải hiểu đó là cách
+vòng đời của hoạt động ảnh hưởng tới vòng đời của phân đoạn.</p>
+
+<p class="caution"><strong>Chú ý:</strong> Nếu bạn cần một đối tượng {@link android.content.Context} trong
+{@link android.app.Fragment}của mình, bạn có thể gọi {@link android.app.Fragment#getActivity()}.
+Tuy nhiên, nhớ chỉ được gọi {@link android.app.Fragment#getActivity()} khi phân đoạn được gắn với
+một hoạt động. Khi phân đoạn chưa được gắn, hoặc bị gỡ trong khi kết thúc
+vòng đời của nó, {@link android.app.Fragment#getActivity()} sẽ trả về rỗng.</p>
+
+
+<h3 id="CoordinatingWithActivity">Phối hợp với vòng đời của hoạt động</h3>
+
+<p>Vòng đời của hoạt động mà phân đoạn có ở trong đó sẽ trực tiếp ảnh hưởng tới vòng đời của phân đoạn
+, sao cho mỗi lệnh gọi lại vòng đời cho hoạt động đó sẽ dẫn tới một lệnh gọi lại tương tự cho từng
+phân đoạn. Ví dụ, khi hoạt động nhận được {@link android.app.Activity#onPause}, mỗi
+phân đoạn trong hoạt động sẽ nhận được {@link android.app.Fragment#onPause}.</p>
+
+<p>Tuy nhiên, các phân đoạn có thêm một vài lệnh gọi lại vòng đời nhằm xử lý tương tác duy nhất với
+hoạt động để thực hiện các hành động như xây dựng và hủy UI của phân đoạn. Những phương pháp gọi lại
+bổ sung này là:</p>
+
+<dl>
+  <dt>{@link android.app.Fragment#onAttach onAttach()}</dt>
+    <dd>Được gọi khi phân đoạn đã được liên kết với hoạt động {@link
+android.app.Activity} được chuyển ở đây).</dd>
+  <dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
+    <dd>Được gọi khi tạo phân cấp dạng xem được liên kết với phân đoạn.</dd>
+  <dt>{@link android.app.Fragment#onActivityCreated onActivityCreated()}</dt>
+    <dd>Được gọi khi phương pháp {@link android.app.Activity#onCreate
+onCreate()} của hoạt động đã trả về.</dd>
+  <dt>{@link android.app.Fragment#onDestroyView onDestroyView()}</dt>
+    <dd>Được gọi khi phân cấp dạng xem được liên kết với phân đoạn đang được gỡ bỏ.</dd>
+  <dt>{@link android.app.Fragment#onDetach onDetach()}</dt>
+    <dd>Được gọi khi phân đoạn đang được bỏ liên kết khỏi hoạt động.</dd>
+</dl>
+
+<p>Tiến trình vòng đời của một phân đoạn, do bị ảnh hưởng bởi hoạt động chủ của nó, được minh họa
+bởi hình 3. Trong hình này, bạn có thể thấy cách thức mỗi trạng thái nối tiếp nhau của hoạt động sẽ xác định
+các phương pháp gọi lại nào mà một phân đoạn có thể nhận được. Ví dụ, khi hoạt động đã nhận được lệnh gọi lại {@link
+android.app.Activity#onCreate onCreate()} của nó, phân đoạn trong hoạt động sẽ nhận được không quá
+lệnh gọi lại {@link android.app.Fragment#onActivityCreated onActivityCreated()}.</p>
+
+<p>Sau khi hoạt động đạt trạng thái tiếp tục, bạn có thể tự do thêm và gỡ bỏ phân đoạn vào
+hoạt động. Vì thế, chỉ trong khi hoạt động ở trạng thái tiếp tục thì vòng đời của một phân đoạn
+mới có thể thay đổi độc lập.</p>
+
+<p>Tuy nhiên, khi hoạt động rời khỏi trạng thái tiếp tục, phân đoạn lại bị hoạt động đẩy qua vòng đời
+của mình.</p>
+
+
+
+
+<h2 id="Example">Ví dụ</h2>
+
+<p>Để kết hợp mọi nội dung được đề cập trong tài liệu này, sau đây là một ví dụ về hoạt động
+sử dụng hai phân đoạn để tạo một bố trí hai bảng. Hoạt động bên dưới bao gồm một phân đoạn để
+hiển thị danh sách các vở kịch của Shakespeare và một phân đoạn khác để hiển thị tóm tắt về vở kịch khi được chọn
+từ danh sách. Nó cũng minh họa cách cung cấp các cấu hình phân đoạn khác nhau,
+dựa trên cấu hình màn hình.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Mã nguồn hoàn chỉnh cho hoạt động này có sẵn trong
+<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.html">{@code
+FragmentLayout.java}</a>.</p>
+
+<p>Hoạt động chính áp dụng một bố trí theo cách thông thường, trong {@link
+android.app.Activity#onCreate onCreate()}:</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java main}
+
+<p>Bố trí được áp dụng là {@code fragment_layout.xml}:</p>
+
+{@sample development/samples/ApiDemos/res/layout-land/fragment_layout.xml layout}
+
+<p>Khi sử dụng bố trí này, hệ thống sẽ khởi tạo {@code TitlesFragment} (liệt kê tên
+các vở kịch) ngay khi hoạt động nạp bố trí, trong khi {@link android.widget.FrameLayout}
+(nơi sẽ xuất hiện phân đoạn hiển thị tóm tắt về vở kịch) chiếm khoảng trống phía bên phải của
+màn hình, nhưng ban đầu vẫn trống. Như bạn sẽ thấy bên dưới, mãi tới khi người dùng chọn một mục
+từ danh sách thì một phân đoạn mới được đặt vào {@link android.widget.FrameLayout}.</p>
+
+<p>Tuy nhiên, không phải tất cả cấu hình màn hình đều đủ rộng để hiển thị cả danh sách
+các vở kịch và tóm tắt bên cạnh nhau. Vì thế, bố trí trên chỉ được sử dụng cho cấu hình
+màn hình khổ ngang bằng cách lưu nó dưới dạng {@code res/layout-land/fragment_layout.xml}.</p>
+
+<p>Vì thế, khi màn hình hướng đứng, hệ thống sẽ áp dụng bố trí sau, nó
+được lưu tại {@code res/layout/fragment_layout.xml}:</p>
+
+{@sample development/samples/ApiDemos/res/layout/fragment_layout.xml layout}
+
+<p>Bố trí này chỉ bao gồm {@code TitlesFragment}. Điều này có nghĩa là, khi thiết bị ở
+hướng đứng, chỉ danh sách tên vở kịch được hiển thị. Vì thế, khi người dùng nhấp vào một
+mục danh sách trong cấu hình này, ứng dụng sẽ bắt đầu một hoạt động mới để hiển thị tóm tắt,
+thay vì tải một phân đoạn thứ hai.</p>
+
+<p>Tiếp theo, bạn có thể thấy cách hoàn thành điều này trong các lớp phân đoạn. Đầu tiên là {@code
+TitlesFragment}, hiển thị danh sách tên các vở kịch của Shakespeare. Phân đoạn này sẽ mở rộng {@link
+android.app.ListFragment} và dựa vào nó để xử lý hầu hết công việc về dạng xem danh sách.</p>
+
+<p>Khi bạn kiểm tra đoạn mã này, hãy để ý rằng có hai hành vi có thể khi người dùng nhấp vào một
+mục danh sách: phụ thuộc vào bố trí nào trong hai bố trí đang hiện hoạt, nó có thể hoặc tạo và hiển thị một phân đoạn
+mới để hiển thị chi tiết trong cùng hoạt động (thêm phân đoạn vào {@link
+android.widget.FrameLayout}), hoặc bắt đầu một hoạt động mới (tại đó phân đoạn có thể được hiển thị).</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java titles}
+
+<p>Phân đoạn thứ hai, {@code DetailsFragment} sẽ hiển thị tóm tắt vở kịch cho mục được chọn từ
+danh sách trong {@code TitlesFragment}:</p>
+ 
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
+
+<p>Nhớ lại ở lớp {@code TitlesFragment} rằng, nếu người dùng nhấp vào một mục danh sách và bố trí
+hiện tại <em>không</em> có dạng xem {@code R.id.details} (là nơi mà
+{@code DetailsFragment} thuộc về), khi đó, ứng dụng sẽ bắt đầu hoạt động {@code DetailsActivity}
+để hiển thị nội dung của mục đó.</p>
+
+<p>Sau đây là {@code DetailsActivity}, nó chỉ đơn thuần nhúng {@code DetailsFragment} để hiển thị
+tóm tắt vở kịch được chọn khi màn hình ở hướng đứng:</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
+details_activity}
+ 
+<p>Lưu ý rằng hoạt động này tự kết thúc nếu cấu hình là khổ ngang, sao cho hoạt động
+chính có thể chiếm lấy và hiển thị {@code DetailsFragment} bên cạnh {@code TitlesFragment}.
+Điều này có thể xảy ra nếu người dùng bắt đầu {@code DetailsActivity} ở dạng hướng đứng, nhưng
+sau đó xoay thành khổ ngang (làm vậy sẽ bắt đầu lại hoạt động hiện tại).</p>
+
+
+<p>Để biết thêm mẫu sử dụng phân đoạn (và toàn bộ tệp nguồn cho ví dụ này),
+hãy xem ứng dụng mẫu API Demos có sẵn trong <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/index.html#Fragment">
+ApiDemos</a> (có thể tải xuống từ <a href="{@docRoot}resources/samples/get.html">Thành phần SDK Mẫu</a>).</p>
+
+
diff --git a/docs/html-intl/intl/vi/guide/components/fundamentals.jd b/docs/html-intl/intl/vi/guide/components/fundamentals.jd
new file mode 100644
index 0000000..4b70140
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/components/fundamentals.jd
@@ -0,0 +1,480 @@
+page.title=Đại cương về Ứng dụng
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Trong tài liệu này</h2>
+<ol>
+<li><a href="#Components">Thành phần của Ứng dụng</a>
+  <ol>
+    <li><a href="#ActivatingComponents">Kích hoạt các thành phần</a></li>
+  </ol>
+</li>
+<li><a href="#Manifest">Tệp Bản kê khai</a>
+  <ol>
+    <li><a href="#DeclaringComponents">Khai báo các thành phần</a></li>
+    <li><a href="#DeclaringRequirements">Khai báo các yêu cầu của ứng dụng</a></li>
+  </ol>
+</li>
+<li><a href="#Resources">Tài nguyên Ứng dụng</a></li>
+</ol>
+</div>
+</div>
+
+<p>Ứng dụng Android được viết bằng ngôn ngữ lập trình Java. Bộ công cụ SDK Android sẽ biên dịch
+mã của bạn&mdash;cùng với bất kỳ tệp dữ liệu và tài nguyên nào&mdash;vào một APK: một <i>gói Android</i>,
+đó là một tệp lưu trữ có hậu tố {@code .apk}. Một tệp APK chứa tất cả nội dung
+của một ứng dụng Android và là tệp mà các thiết bị dựa trên nền tảng Android sử dụng để cài đặt ứng dụng.</p>
+
+<p>Sau khi được cài đặt lên một thiết bị, từng ứng dụng Android sẽ ở bên trong hộp cát bảo mật của chính nó: </p>
+
+<ul>
+ <li>Hệ điều hành Android là một hệ thống Linux đa người dùng trong đó mỗi ứng dụng là một
+người dùng khác nhau.</li>
+
+<li>Theo mặc định, hệ thống gán cho từng ứng dụng một ID người dùng Linux duy nhất (ID chỉ được sử dụng bởi
+hệ thống và không xác định đối với ứng dụng). Hệ thống sẽ đặt quyền cho tất cả tệp trong một ứng dụng
+sao cho chỉ ID người dùng được gán cho ứng dụng đó mới có thể truy cập chúng. </li>
+
+<li>Mỗi tiến trình có máy ảo (VM) riêng của mình, vì thế mã của một ứng dụng sẽ chạy độc lập với
+các ứng dụng khác.</li>
+
+<li>Theo mặc định, mọi ứng dụng chạy trong tiến trình Linux của chính nó. Android khởi động tiến trình khi bất kỳ
+thành phần nào của ứng dụng cần được thực thi, sau đó tắt tiến trình khi không còn
+cần nữa hoặc khi hệ thống phải khôi phục bộ nhớ cho các ứng dụng khác.</li>
+</ul>
+
+<p>Bằng cách này, hệ thống Android triển khai <em>nguyên tắc đặc quyền ít nhất</em>. Cụ thể,
+theo mặc định, mỗi ứng dụng chỉ có thể truy cập vào các thành phần mà nó cần để thực hiện công việc của mình và
+không hơn. Điều này tạo ra một môi trường rất bảo mật mà trong đó một ứng dụng không thể truy cập các bộ phận của
+hệ thống mà nó không được cấp quyền.</p>
+
+<p>Tuy nhiên, có nhiều cách để một ứng dụng chia sẻ dữ liệu với các ứng dụng khác và để một
+ứng dụng truy cập vào các dịch vụ của hệ thống:</p>
+
+<ul>
+  <li>Có thể sắp xếp để hai ứng dụng chia sẻ cùng ID người dùng Linux, trong trường hợp đó
+chúng có thể truy cập các tệp của nhau.  Để tiết kiệm tài nguyên của hệ thống, các ứng dụng có
+cùng ID người dùng cũng có thể sắp xếp để chạy trong cùng tiến trình Linux và chia sẻ cùng VM (các
+ứng dụng cũng phải được ký bằng cùng chứng chỉ).</li>
+  <li>Một ứng dụng có thể yêu cầu quyền truy cập dữ liệu của thiết bị chẳng hạn như
+danh bạ của người dùng, tin nhắn SMS, thiết bị lưu trữ gắn được (thẻ SD), máy ảnh, Bluetooth và nhiều nữa. Tất cả
+quyền ứng dụng đều phải được cấp bởi người dùng tại thời điểm cài đặt.</li>
+</ul>
+
+<p>Đó là nội dung cơ bản về cách mà một ứng dụng Android tồn tại trong hệ thống. Phần còn lại của
+tài liệu này giới thiệu với bạn về:</p>
+<ul>
+  <li>Các thành phần khuôn khổ cốt lõi định nghĩa ứng dụng của bạn.</li>
+  <li>Tệp bản kê khai mà trong đó bạn khai báo các thành phần và tính năng yêu cầu của thiết bị cho ứng dụng
+của bạn.</li>
+  <li>Các tài nguyên tách riêng với mã ứng dụng và cho phép ứng dụng của bạn
+tối ưu hóa hành vi của nó cho nhiều loại cấu hình thiết bị đa dạng.</li>
+</ul>
+
+
+
+<h2 id="Components">Thành phần của Ứng dụng</h2>
+
+<p>Thành phần của ứng dụng là những khối dựng thiết yếu của một ứng dụng Android. Mỗi
+thành phần là một điểm khác nhau mà qua đó hệ thống có thể vào ứng dụng của bạn. Không phải tất cả
+thành phần đều là các điểm nhập thực tế cho người dùng và một số phụ thuộc vào nhau, nhưng mỗi thành phần tồn tại
+như một thực thể riêng và đóng một vai trò riêng&mdash;mỗi thành phần là một khối dựng duy nhất
+giúp định nghĩa hành vi chung của ứng dụng của bạn.</p>
+
+<p>Có bốn loại thành phần ứng dụng khác nhau. Mỗi loại có một mục đích riêng
+và có một vòng đời riêng, xác định cách thành phần được tạo lập và hủy.</p>
+
+<p>Sau đây là bốn loại thành phần ứng dụng:</p>
+
+<dl>
+
+<dt><b>Hoạt động</b></dt>
+
+<dd>Một <i>hoạt động</i> biểu diễn một màn hình đơn với một giao diện người dùng. Ví dụ,
+một ứng dụng e-mail có thể có một hoạt động với chức năng hiển thị một danh sách
+e-mail mới, một hoạt động khác để soạn e-mail, và một hoạt động khác để đọc e-mail. Mặc dù
+các hoạt động cùng nhau tạo thành một trải nghiệm người dùng gắn kết trong ứng dụng e-mail, mỗi hoạt động
+lại độc lập với nhau. Như vậy, một ứng dụng khác có thể khởi động bất kỳ hoạt động nào
+trong số này (nếu ứng dụng e-mail cho phép nó). Ví dụ, một ứng dụng máy ảnh có thể khởi động
+hoạt động trong ứng dụng e-mail có chức năng soạn thư mới, để người dùng chia sẻ một bức ảnh.
+
+<p>Hoạt động được triển khai như một lớp con của {@link android.app.Activity} và bạn có thể tìm hiểu thêm
+về nó trong hướng dẫn dành cho nhà phát triển <a href="{@docRoot}guide/components/activities.html">Hoạt động</a>
+.</p>
+</dd>
+
+
+<dt><b>Dịch vụ</b></dt>
+
+<dd>Một <i>dịch vụ</i> là một thành phần chạy ngầm để thực hiện các thao tác
+chạy lâu hoặc để thực hiện công việc cho các tiến trình từ xa. Dịch vụ
+không cung cấp giao diện người dùng. Ví dụ, một dịch vụ có thể phát nhạc dưới nền trong khi
+người dùng đang ở một ứng dụng khác, hoặc nó có thể tải dữ liệu qua mạng mà không
+chặn người dùng tương tác với hoạt động. Một thành phần khác, chẳng hạn như một hoạt động, có thể khởi động
+dịch vụ và để nó chạy hoặc gắn kết với nó để tương tác với nó.
+
+<p>Dịch vụ được triển khai như một lớp con của {@link android.app.Service} và bạn có thể tìm hiểu
+thêm về nó trong hướng dẫn cho nhà phát triển <a href="{@docRoot}guide/components/services.html">Dịch vụ</a>
+.</p>
+</dd>
+
+
+<dt><b>Trình cung cấp Nội dung</b></dt>
+
+<dd>Một <i>trình cung cấp nội dung</i> sẽ quản lý một tập dữ liệu ứng dụng được chia sẻ. Bạn có thể lưu trữ dữ liệu trong
+hệ thống tệp, một cơ sở dữ liệu SQLite, trên web, hay bất kỳ vị trí lưu trữ liên tục nào khác mà
+ứng dụng của bạn có thể truy cập. Thông qua trình cung cấp nội dung, các ứng dụng khác có thể truy vấn hay thậm chí sửa đổi
+dữ liệu (nếu trình cung cấp nội dung cho phép). Ví dụ, hệ thống Android cung cấp một trình cung cấp
+nội dung có chức năng quản lý thông tin danh bạ của người dùng. Như vậy, bất kỳ ứng dụng nào có các quyền
+phù hợp đều có thể truy vấn bất kỳ phần nào của trình cung cấp nội dung (chẳng hạn như {@link
+android.provider.ContactsContract.Data}) để đọc và ghi thông tin về một người cụ thể.
+
+<p>Trình cung cấp nội dung cũng hữu ích với việc đọc và ghi dữ liệu riêng tư đối với
+ứng dụng của bạn và không được chia sẻ. Ví dụ, ứng dụng mẫu <a href="{@docRoot}resources/samples/NotePad/index.html">Note Pad</a> sử dụng một
+trình cung cấp nội dung để lưu các ghi chú.</p>
+
+<p>Trình cung cấp nội dung được triển khai như một lớp con của {@link android.content.ContentProvider}
+và phải triển khai một tập các API tiêu chuẩn cho phép các ứng dụng khác thực hiện
+giao tác. Để biết thêm thông tin, xem hướng dẫn cho nhà phát triển <a href="{@docRoot}guide/topics/providers/content-providers.html">Trình cung cấp Nội dung</a>
+.</p>
+</dd>
+
+
+<dt><b>Hàm nhận quảng bá</b></dt>
+
+<dd>Một <i>hàm nhận quảng bá</i> (broadcast receiver) là một thành phần có chức năng hồi đáp lại các thông báo
+quảng bá trên toàn hệ thống.  Nhiều quảng bá khởi nguồn từ hệ thống&mdash;ví dụ, một quảng bá thông báo
+rằng màn hình đã tắt, pin yếu, hoặc một bức ảnh được chụp.
+Các ứng dụng cũng có thể khởi tạo quảng bá&mdash;ví dụ như để các ứng dụng khác biết rằng
+một phần dữ liệu đã được tải xuống thiết bị và có sẵn để họ sử dụng. Mặc dù các hàm nhận quảng bá
+không hiển thị giao diện người dùng, chúng có thể <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">tạo một thông báo thanh trạng thái</a>
+để cảnh báo người tiếp nhận khi xảy ra một sự kiện quảng bá. Tuy nhiên trường hợp phổ biến hơn đó là hàm nhận quảng bá chỉ
+là một "cổng kết nối" tới các thành phần khác và nhằm mục đích thực hiện lượng công việc rất ít. Ví
+dụ, nó có thể khởi tạo một dịch vụ để thực hiện một số công việc dựa trên sự kiện.
+
+<p>Hàm nhận quảng bá được triển khai như một lớp con của {@link android.content.BroadcastReceiver}
+và mỗi quảng bá được chuyển giao như một đối tượng {@link android.content.Intent}. Để biết thêm thông tin,
+hãy xem lớp {@link android.content.BroadcastReceiver}.</p>
+</dd>
+
+</dl>
+
+
+
+<p>Một khía cạnh độc đáo trong thiết kế hệ thống Android đó là bất kỳ ứng dụng nào cũng có thể khởi động một thành phần của
+ứng dụng khác. Ví dụ, nếu bạn muốn người dùng chụp
+ảnh bằng máy ảnh của thiết bị, có thể có một ứng dụng khác có chức năng đó và
+ứng dụng của bạn có thể sử dụng nó thay vì phát triển một hoạt động để tự chụp ảnh. Bạn không
+cần tích hợp hay thậm chí là liên kết với mã từ ứng dụng của máy ảnh.
+Thay vào đó, bạn đơn giản có thể khởi động hoạt động đó trong ứng dụng máy ảnh có chức năng
+chụp ảnh. Khi hoàn thành, ảnh thậm chí được trả về ứng dụng của bạn để bạn có thể sử dụng nó. Đối với người dùng,
+có vẻ như máy ảnh là một bộ phận thực sự trong ứng dụng của bạn.</p>
+
+<p>Khi hệ thống khởi động một thành phần, nó sẽ khởi động tiến trình cho ứng dụng đó (nếu tiến trình không
+đang chạy) và khởi tạo các lớp cần thiết cho thành phần. Ví dụ, nếu ứng dụng
+của bạn khởi động hoạt động trong ứng dụng máy ảnh có chức năng chụp ảnh, hoạt động đó
+sẽ chạy trong tiến trình thuộc về ứng dụng máy ảnh chứ không chạy trong tiến trình của ứng dụng của bạn.
+Vì thế, không như ứng dụng trên hầu hết các hệ thống khác, ứng dụng Android không có một điểm nhập
+duy nhất (ví dụ, không có chức năng {@code main()}).</p>
+
+<p>Vì hệ thống chạy từng ứng dụng trong một tiến trình riêng với các quyền của tệp mà
+hạn chế truy cập vào các ứng dụng khác, ứng dụng của bạn không thể trực tiếp kích hoạt một thành phần từ
+một ứng dụng khác. Tuy nhiên, hệ thống Android có thể. Vì thế, để kích hoạt một thành phần trong
+một ứng dụng khác, bạn phải chuyển giao một thông báo tới hệ thống trong đó nêu rõ <em>ý định</em> của bạn để
+khởi động một thành phần cụ thể. Sau đó, hệ thống sẽ kích hoạt thành phần cho bạn.</p>
+
+
+<h3 id="ActivatingComponents">Kích hoạt Thành phần</h3>
+
+<p>Ba trong bốn loại thành phần&mdash;hoạt động, dịch vụ và
+hàm nhận quảng bá&mdash;sẽ được kích hoạt bằng một thông báo không đồng bộ gọi là <em>ý định</em>.
+Ý định sẽ gắn kết từng thành phần với nhau vào thời gian chạy (bạn có thể nghĩ chúng như là
+các hàm nhắn tin có chức năng yêu cầu một hành động từ các thành phần khác), dù thành phần đó thuộc
+về ứng dụng của bạn hay ứng dụng khác.</p>
+
+<p>Một ý định được tạo thành bằng một đối tượng {@link android.content.Intent}, nó định nghĩa một thông báo để
+kích hoạt một thành phần cụ thể hoặc một <em>loại</em> thành phần cụ thể&mdash;tương ứng, một ý định
+có thể biểu thị hoặc không biểu thị.</p>
+
+<p>Đối với các hoạt động và dịch vụ, ý định có chức năng định nghĩa một hành động sẽ thực hiện (ví dụ, "xem" hoặc
+"gửi" gì đó) và có thể chỉ định URI của dữ liệu để hành động dựa trên đó (ngoài những điều khác mà
+thành phần được khởi động có thể cần biết). Ví dụ, một ý định có thể truyền tải một yêu cầu
+để một hoạt động hiển thị một hình ảnh hay mở một trang web. Trong một số trường hợp, bạn có thể khởi động một
+hoạt động để nhận kết quả, trong trường hợp đó, hoạt động cũng trả về
+kết quả trong một {@link android.content.Intent} (ví dụ, bạn có thể phát hành một ý định để cho phép
+người dùng chọn một liên lạc cá nhân và yêu cầu trả nó về cho bạn&mdash;ý định trả về bao gồm một
+URI chỉ đến liên lạc được chọn).</p>
+
+<p>Đối với hàm nhận quảng bá, ý định chỉ định nghĩa
+thông báo đang được quảng bá (ví dụ, một quảng bá để báo rằng pin của thiết bị yếu
+sẽ chỉ bao gồm một xâu hành động chỉ báo rằng "pin yếu").</p>
+
+<p>Loại thành phần còn lại, trình cung cấp nội dung, không được kích hoạt bởi ý định. Thay vào đó, nó được
+kích hoạt khi được nhằm tới bởi một yêu cầu từ một {@link android.content.ContentResolver}. Bộ giải quyết
+nội dung xử lý tất cả giao tác trực tiếp với trình cung cấp nội dung sao cho thành phần mà
+đang thực hiện giao tác với trình cung cấp sẽ không cần mà thay vào đó gọi các phương pháp trên đối tượng {@link
+android.content.ContentResolver}. Điều này để lại một lớp tóm tắt giữa trình cung cấp
+nội dung và thành phần yêu cầu thông tin (để bảo mật).</p>
+
+<p>Có các phương pháp riêng để kích hoạt từng loại thành phần:</p>
+<ul>
+  <li>Bạn có thể khởi động một hoạt động (hoặc giao cho nó việc gì mới để làm) bằng cách
+chuyển một {@link android.content.Intent} đến {@link android.content.Context#startActivity
+startActivity()} hoặc {@link android.app.Activity#startActivityForResult startActivityForResult()}
+(khi bạn muốn hoạt động trả về một kết quả).</li>
+  <li>Bạn có thể khởi động một dịch vụ (hoặc gửi chỉ dẫn mới tới một dịch vụ đang diễn ra) bằng cách
+chuyển một {@link android.content.Intent} đến {@link android.content.Context#startService
+startService()}. Hoặc bạn có thể gắn kết với dịch vụ bằng cách chuyển một {@link android.content.Intent} đến
+{@link android.content.Context#bindService bindService()}.</li>
+  <li>Bạn có thể khởi tạo một quảng bá bằng cách chuyển {@link android.content.Intent} tới các phương pháp như
+{@link android.content.Context#sendBroadcast(Intent) sendBroadcast()}, {@link
+android.content.Context#sendOrderedBroadcast(Intent, String) sendOrderedBroadcast()}, hoặc {@link
+android.content.Context#sendStickyBroadcast sendStickyBroadcast()}.</li>
+  <li>Bạn có thể thực hiện một truy vấn tới một trình cung cấp nội dung bằng cách gọi {@link
+android.content.ContentProvider#query query()} trên một {@link android.content.ContentResolver}.</li>
+</ul>
+
+<p>Để biết thêm thông tin về việc sử dụng ý định, hãy xem tài liệu <a href="{@docRoot}guide/components/intents-filters.html">Ý định và Bộ lọc
+Ý định</a>. Bạn cũng có thể xem thêm thông tin về việc kích hoạt các thành phần cụ thể
+trong những tài liệu sau: <a href="{@docRoot}guide/components/activities.html">Hoạt động</a>, <a href="{@docRoot}guide/components/services.html">Dịch vụ</a>, {@link
+android.content.BroadcastReceiver} và <a href="{@docRoot}guide/topics/providers/content-providers.html">Trình cung cấp Nội dung</a>.</p>
+
+
+<h2 id="Manifest">Tệp Bản kê khai</h2>
+
+<p>Trước khi hệ thống Android có thể khởi động một thành phần ứng dụng, hệ thống phải biết rằng
+thành phần đó tồn tại bằng cách đọc tệp {@code AndroidManifest.xml} của ứng dụng (tệp
+"bản kê khai"). Ứng dụng của bạn phải khai báo tất cả thành phần của nó trong tệp này, nó phải nằm ở gốc của
+thư mục dự án của ứng dụng.</p>
+
+<p>Bản kê khai làm nhiều việc bên cạnh việc khai báo các thành phần của ứng dụng,
+chẳng hạn như:</p>
+<ul>
+  <li>Xác định bất kỳ quyền của người dùng nào mà ứng dụng yêu cầu, chẳng hạn như truy cập Internet hay
+truy cập đọc vào danh bạ của người dùng.</li>
+  <li>Khai báo <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Mức API</a>
+tối thiểu mà ứng dụng yêu cầu dựa trên những API mà ứng dụng sử dụng.</li>
+  <li>Khai báo các tính năng phần cứng và phần mềm được sử dụng hoặc yêu cầu bởi ứng dụng, chẳng hạn như máy ảnh,
+dịch vụ Bluetooth, hoặc màn hình cảm ứng đa điểm.</li>
+  <li>Các thư viện API mà ứng dụng cần được liên kết với (ngoài các API khuôn khổ
+Android), chẳng hạn như <a href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">thư viện Google Maps
+</a>.</li>
+  <li>Và hơn thế nữa</li>
+</ul>
+
+
+<h3 id="DeclaringComponents">Khai báo các thành phần</h3>
+
+<p>Nhiệm vụ chính của bản kê khai là thông báo cho hệ thống về các thành phần của ứng dụng. Ví
+dụ, một tệp bản kê khai có thể khai báo một hoạt động như sau: </p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;manifest ... &gt;
+    &lt;application android:icon="@drawable/app_icon.png" ... &gt;
+        &lt;activity android:name="com.example.project.ExampleActivity"
+                  android:label="@string/example_label" ... &gt;
+        &lt;/activity&gt;
+        ...
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>Trong phần tử <code><a
+href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+, thuộc tính {@code android:icon} sẽ trỏ đến các tài nguyên cho một biểu tượng có chức năng nhận biết
+ứng dụng.</p>
+
+<p>Trong phần tử <code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
+thuộc tính {@code android:name} quy định tên lớp hoàn toàn đủ tiêu chuẩn của lớp con {@link
+android.app.Activity} và các thuộc tính {@code android:label} quy định một xâu
+để sử dụng làm nhãn hiển thị với người dùng đối với hoạt động.</p>
+
+<p>Bạn phải khai báo tất cả thành phần của ứng dụng như sau:</p>
+<ul>
+  <li>Các phần tử <code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 
+cho hoạt động</li>
+  <li>Các phần tử <code><a
+href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code> cho
+dịch vụ</li>
+  <li>Các phần tử <code><a
+href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code> 
+cho hàm nhận quảng bá</li>
+  <li>Các phần tử <code><a
+href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> 
+cho trình cung cấp nội dung</li>
+</ul>
+
+<p>Các hoạt động, dịch vụ và trình cung cấp nội dung mà bạn bao gồm trong nguồn của mình nhưng không khai báo
+trong bản kê khai sẽ không hiển thị với hệ thống và hệ quả là không bao giờ chạy được.  Tuy nhiên,
+hàm nhận
+quảng bá có thể hoặc được khai báo trong bản kê khai hoặc được tạo linh hoạt trong mã (dạng đối tượng
+{@link android.content.BroadcastReceiver}) và được đăng ký với hệ thống bằng cách gọi
+{@link android.content.Context#registerReceiver registerReceiver()}.</p>
+
+<p>Để tìm hiểu thêm về cách cấu trúc tệp bản kê khai cho ứng dụng của mình, hãy xem tài liệu <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">Tệp AndroidManifest.xml</a>
+. </p>
+
+
+
+<h3 id="DeclaringComponentCapabilities">Khai báo các khả năng của thành phần</h3>
+
+<p>Như đã nêu bên trên trong phần <a href="#ActivatingComponents">Kích hoạt các Thành phần</a>, bạn có thể sử dụng một
+{@link android.content.Intent} để khởi động các hoạt động, dịch vụ và hàm nhận quảng bá. Bạn có thể làm vậy bằng cách
+công khai chỉ định thành phần đích (sử dụng tên lớp thành phần) trong ý định. Tuy nhiên,
+sức mạnh thực sự của ý định nằm trong khái niệm <em>ý định không biểu thị</em>. Ý định không biểu thị
+đơn thuần mô tả kiểu hành động cần thực hiện (và có thể có cả dữ liệu mà bạn muốn
+thực hiện hành động) và cho phép hệ thống tìm một thành phần trên thiết bị có khả năng thực hiện
+hành động và khởi động nó. Nếu có nhiều thành phần có thể thực hiện hành động được mô tả bởi
+ý định, khi đó người dùng chọn ý định sẽ sử dụng.</p>
+
+<p>Cách hệ thống nhận biết các thành phần có khả năng hồi đáp lại một ý định là bằng cách so sánh
+ý định nhận được với <i>các bộ lọc ý định</i> được cung cấp trong tệp bản kê khai của các ứng dụng khác trên
+thiết bị.</p>
+
+<p>Khi bạn khai báo một hoạt động trong bản kê khai ứng dụng của mình, bạn có thể tùy chọn bao gồm
+các bộ lọc ý định có chức năng khai báo các khả năng của hoạt động sao cho nó có thể hồi đáp lại ý định
+từ các ứng dụng khác. Bạn có thể khai báo một bộ lọc ý định cho thành phần của mình bằng cách
+thêm một phần tử <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> làm con của phần tử công khai của thành phần đó.</p>
+
+<p>Ví dụ, nếu bạn đã xây dựng một ứng dụng e-mail có một hoạt động soạn e-mail mới, bạn có thể
+khai báo bộ lọc ý định đó để trả lời các ý định "gửi" (để gửi một e-mail mới) như sau:</p>
+<pre>
+&lt;manifest ... >
+    ...
+    &lt;application ... &gt;
+        &lt;activity android:name="com.example.project.ComposeEmailActivity">
+            &lt;intent-filter>
+                &lt;action android:name="android.intent.action.SEND" />
+                &lt;data android:type="*/*" />
+                &lt;category android:name="android.intent.category.DEFAULT" />
+            &lt;/intent-filter>
+        &lt;/activity>
+    &lt;/application&gt;
+&lt;/manifest>
+</pre>
+
+<p>Sau đó, nếu một ứng dụng khác tạo một ý định với hành động {@link
+android.content.Intent#ACTION_SEND} và chuyển nó cho {@link android.app.Activity#startActivity
+startActivity()}, hệ thống có thể khởi động hoạt động của bạn để người dùng có thể soạn thảo và gửi một
+e-mail.</p>
+
+<p>Để tìm hiểu thêm về việc tạo các bộ lọc ý định, hãy xem tài liệu <a href="{@docRoot}guide/components/intents-filters.html">Ý định và Bộ lọc Ý định</a>.
+</p>
+
+
+
+<h3 id="DeclaringRequirements">Khai báo các yêu cầu của ứng dụng</h3>
+
+<p>Có nhiều loại thiết bị dựa trên nền tảng Android và không phải tất cả chúng đều cung cấp
+các tính năng và khả năng như nhau. Để tránh việc ứng dụng của bạn bị cài đặt trên các thiết bị
+thiếu những tính năng mà ứng dụng của bạn cần, điều quan trọng là bạn phải định nghĩa rõ ràng một hồ sơ cho
+các kiểu thiết bị mà ứng dụng của bạn hỗ trợ bằng cách khai báo các yêu cầu về thiết bị và phần mềm trong tệp
+bản kê khai của mình. Hầu hết những khai báo này đều chỉ mang tính chất thông báo và hệ thống không đọc
+chúng, nhưng các dịch vụ bên ngoài như Google Play thì có đọc để cung cấp tính năng lọc
+cho người dùng khi họ tìm kiếm ứng dụng từ thiết bị của mình.</p>
+
+<p>Ví dụ, nếu ứng dụng của bạn yêu cầu máy ảnh và sử dụng các API được giới thiệu trong Android 2.1 (<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Mức</a> 7),
+bạn cần khai báo những điều này như yêu cầu trong tệp bản kê khai của mình như sau:</p> 
+
+<pre>
+&lt;manifest ... >
+    &lt;uses-feature android:name="android.hardware.camera.any"
+                  android:required="true" />
+    &lt;uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" />
+    ...
+&lt;/manifest>
+</pre>
+
+<p>Lúc này, những thiết bị mà <em>không</em> có máy ảnh và có một phiên bản
+Android <em>thấp</em> hơn 2.1 sẽ không thể cài đặt ứng dụng của bạn từ Google Play.</p>
+
+<p>Tuy nhiên, bạn cũng có thể khai báo rằng ứng dụng của bạn sử dụng máy ảnh, nhưng không
+<em>yêu cầu</em> nó. Trong trường hợp đó, ứng dụng của bạn phải đặt thuộc tính <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#required">{@code required}</a>
+thành {@code "false"} và kiểm tra tại thời gian chạy xem
+thiết bị có máy ảnh không và vô hiệu hóa bất kỳ tính năng máy ảnh nào cho phù hợp.</p>
+
+<p>Bạn có thể tìm hiểu thêm thông tin về cách bạn có thể quản lý tính tương thích của ứng dụng của bạn với các thiết bị khác nhau
+trong tài liệu <a href="{@docRoot}guide/practices/compatibility.html">Tính tương thích với Thiết bị</a>
+.</p>
+
+
+
+<h2 id="Resources">Tài nguyên Ứng dụng</h2>
+
+<p>Một ứng dụng Android được soạn không chỉ có mã&mdash;nó còn yêu cầu các tài nguyên
+tách riêng với mã nguồn, chẳng hạn như hình ảnh, tệp âm thanh và bất kỳ thứ gì liên quan tới trình chiếu
+trực quan của ứng dụng. Ví dụ, bạn nên định nghĩa các hoạt cảnh, menu, kiểu, màu sắc,
+và bố trí của giao diện người dùng của hoạt động bằng các tệp XML. Việc sử dụng các tài nguyên ứng dụng giúp dễ dàng
+cập nhật các đặc điểm khác nhau trong ứng dụng của bạn mà không sửa đổi mã và&mdash;bằng cách cung cấp
+các tập hợp tài nguyên thay thế&mdash;cho phép bạn tối ưu hóa ứng dụng của mình cho nhiều loại
+cấu hình thiết bị (chẳng hạn như ngôn ngữ và kích cỡ màn hình khác nhau).</p>
+
+<p>Đối với mọi tài nguyên mà bạn bao gồm trong dự án Android của mình, bộ công cụ xây dựng SDK định nghĩa một ID số nguyên
+duy nhất mà bạn có thể sử dụng để tham chiếu tài nguyên từ mã ứng dụng của mình hoặc từ
+các tài nguyên khác được định nghĩa trong XML. Ví dụ, nếu ứng dụng của bạn chứa một tệp hình ảnh có tên {@code
+logo.png} (được lưu trong thư mục {@code res/drawable/}), bộ công cụ SDK sẽ khởi tạo một ID tài nguyên
+đặt tên là {@code R.drawable.logo} mà bạn có thể sử dụng để tham chiếu hình ảnh và chèn nó vào trong giao diện người dùng
+của mình.</p>
+
+<p>Một trong những khía cạnh quan trọng nhất của việc cung cấp tài nguyên tách riêng với mã nguồn của bạn
+là khả năng cho phép bạn cung cấp các tài nguyên thay thế cho các
+cấu hình thiết bị khác nhau. Ví dụ, bằng cách định nghĩa các xâu UI trong XML, bạn có thể biên dịch xâu sang
+các ngôn ngữ khác và lưu các xâu đó vào tệp riêng. Sau đó, dựa vào một <em>hạn định</em> ngôn ngữ
+mà bạn nối với tên của thư mục tài nguyên (chẳng hạn như {@code res/values-fr/} đối với các giá trị xâu
+tiếng Pháp) và thiết đặt ngôn ngữ của người dùng, hệ thống Android sẽ áp dụng các xâu ngôn ngữ phù hợp
+cho UI của bạn.</p>
+
+<p>Android hỗ trợ nhiều <em>hạn định</em> khác nhau cho các tài nguyên thay thế của bạn. Hạn định
+là một xâu ngắn mà bạn bao gồm trong tên của các thư mục tài nguyên của mình nhằm
+định nghĩa cấu hình thiết bị cho những tài nguyên đó nên được sử dụng. Lấy một
+ví dụ khác, bạn nên thường xuyên tạo các bố trí khác nhau cho hoạt động của mình, tùy vào hướng và kích cỡ
+màn hình của thiết bị. Ví dụ, khi màn hình thiết bị ở hướng
+đứng (cao), bạn có thể muốn một bố trí có các nút thẳng đứng, nhưng khi màn hình ở hướng
+khổ ngang (rộng), các nút nên được căn ngang. Để thay đổi bố trí
+tùy vào hướng, bạn có thể định nghĩa hai bố trí khác nhau và áp dụng hạn định
+phù hợp cho tên thư mục của từng bố trí. Sau đó, hệ thống sẽ tự động áp dụng bố trí
+phù hợp tùy thuộc vào hướng hiện tại của thiết bị.</p>
+
+<p>Để biết thêm thông tin về các loại tài nguyên khác nhau mà bạn có thể bao gồm trong ứng dụng của mình và cách
+tạo các tài nguyên thay thế cho những cấu hình thiết bị khác nhau, hãy đọc <a href="{@docRoot}guide/topics/resources/providing-resources.html">Cung cấp Tài nguyên</a>.</p>
+
+
+
+<div class="next-docs">
+<div class="col-6">
+  <h2 class="norule">Tiếp tục đọc về:</h2>
+  <dl>
+    <dt><a href="{@docRoot}guide/components/intents-filters.html">Ý định và Bộ lọc Ý định</a>
+    </dt>
+    <dd>Thông tin về cách sử dụng các API {@link android.content.Intent} để
+    kích hoạt các thành phần của ứng dụng, chẳng hạn như hoạt động và dịch vụ, và cách tạo các thành phần cho ứng dụng của bạn
+    có sẵn để cho các ứng dụng khác sử dụng.</dd>
+    <dt><a href="{@docRoot}guide/components/activities.html">Hoạt động</a></dt>
+    <dd>Thông tin về cách tạo một thực thể của lớp {@link android.app.Activity},
+    có chức năng cung cấp một màn hình riêng trong ứng dụng của bạn với một giao diện người dùng.</dd>
+    <dt><a href="{@docRoot}guide/topics/resources/providing-resources.html">Cung cấp Tài nguyên</a></dt>
+    <dd>Thông tin về cách các ứng dụng Android được cấu trúc để tách riêng các tài nguyên ứng dụng khỏi
+   mã ứng dụng, bao gồm cách bạn có thể cung cấp các tài nguyên thay thế cho những
+   cấu hình thiết bị cụ thể.
+    </dd>
+  </dl>
+</div>
+<div class="col-6">
+  <h2 class="norule">Bạn cũng có thể quan tâm tới:</h2>
+  <dl>
+    <dt><a href="{@docRoot}guide/practices/compatibility.html">Tính tương thích của Thiết bị</a></dt>
+    <dd>Thông tin về Android hoạt động trên các loại thiết bị khác nhau và giới thiệu
+    về cách bạn có thể tối ưu hóa ứng dụng của mình cho từng thiết bị hoặc hạn chế tính sẵn có của ứng dụng của bạn
+    đối với các thiết bị khác nhau.</dd>
+    <dt><a href="{@docRoot}guide/topics/security/permissions.html">Quyền của Hệ thống</a></dt>
+    <dd>Thông tin về cách Android hạn chế truy cập của ứng dụng vào một số API nhất định bằng một hệ thống
+    quyền cần có sự đồng ý của người dùng cho phép ứng dụng của bạn có thể sử dụng các API đó.</dd>
+  </dl>
+</div>
+</div>
+
diff --git a/docs/html-intl/intl/vi/guide/components/index.jd b/docs/html-intl/intl/vi/guide/components/index.jd
new file mode 100644
index 0000000..966597d
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/components/index.jd
@@ -0,0 +1,57 @@
+page.title=Thành phần Ứng dụng
+page.landing=true
+page.landing.intro=Khuôn khổ ứng dụng của Android cho phép bạn tạo lập nhiều ứng dụng đa dạng và sáng tạo bằng cách sử dụng một tập hợp các thành phần có thể tái sử dụng. Phần này giải thích cách bạn có thể xây dựng các thành phần định nghĩa các khối dựng cho ứng dụng của mình và cách kết nối chúng với nhau bằng cách sử dụng ý định. 
+page.metaDescription=Khuôn khổ ứng dụng của Android cho phép bạn tạo lập nhiều ứng dụng đa dạng và sáng tạo bằng cách sử dụng một tập hợp các thành phần có thể tái sử dụng. Phần này giải thích cách bạn có thể xây dựng các thành phần định nghĩa các khối dựng cho ứng dụng của mình và cách kết nối chúng với nhau bằng cách sử dụng ý định. 
+page.landing.image=images/develop/app_components.png
+page.image=images/develop/app_components.png
+
+@jd:body
+
+<div class="landing-docs">
+
+  <div class="col-6">
+    <h3>Bài viết Blog</h3>
+    
+    <a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
+      <h4>Sử dụng DialogFragments</h4>
+      <p>Trong bài viết này, tôi sẽ trình bày cách sử dụng DialogFragments bằng thư viện hỗ trợ v4 (cho khả năng tương thích ngược trên các thiết bị chạy phiên bản trước Honeycomb) để hiển thị một hộp thoại chỉnh sửa đơn giản và trả về một kết quả cho lệnh gọi Hoạt động bằng cách sử dụng một giao diện.</p>
+    </a>
+
+    <a href="http://android-developers.blogspot.com/2011/03/fragments-for-all.html">
+      <h4>Phân đoạn cho Tất cả</h4>
+      <p>Hôm nay, chúng tôi đã phát hành một thư viện tĩnh giới thiệu API Phân đoạn (cũng như LoaderManager mới và một vài lớp khác) tương tự sao cho các ứng dụng tương thích với phiên bản Android 1.6 hoặc mới hơn có thể sử dụng phân đoạn để tạo các giao diện người dùng tương thích với máy tính bảng. </p>
+    </a>
+    
+    <a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
+      <h4>Tạo đa luồng cho Hiệu năng</h4>
+      <p>Một cách làm hay trong khi tạo các ứng dụng hồi đáp đó là đảm bảo luồng UI chính của bạn
+thực hiện lượng công việc tối thiểu. Bất kỳ tác vụ dài tiềm ẩn nào mà có thể làm treo ứng dụng của bạn đều cần được
+xử lý trong một luồng khác.</p>
+    </a>
+  </div>
+
+  <div class="col-6">
+    <h3>Đào tạo</h3>
+    
+    <a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
+      <h4>Quản lý Vòng đời của Hoạt động</h4>
+      <p>Lớp này giải thích các phương pháp gọi lại vòng đời quan trọng mà mỗi thực thể
+      Hoạt động nhận được và cách bạn có thể sử dụng chúng sao cho hoạt động của bạn thực hiện như người dùng kỳ vọng và không tiêu tốn tài nguyên
+      của hệ thống khi hoạt động của bạn không cần chúng.</p>
+    </a>
+
+    <a href="http://developer.android.com/training/basics/fragments/index.html">
+      <h4>Xây dựng một UI Động bằng các Phân đoạn</h4>
+      <p>Lớp này trình bày với bạn cách tạo một trải nghiệm người dùng động bằng các phân đoạn và tối ưu hóa
+trải nghiệm người dùng của ứng dụng của bạn đối với các thiết bị có kích cỡ màn hình khác nhau trong khi vẫn tiếp tục hỗ trợ
+các thiết bị chạy phiên bản cũ như Android 1.6.</p>
+    </a>
+
+    <a href="http://developer.android.com/training/sharing/index.html">
+      <h4>Chia sẻ Nội dung</h4>
+      <p>Lớp này trình bày một số cách thông dụng mà bạn có thể gửi và nhận nội dung giữa
+      các ứng dụng bằng cách sử dụng các API Ý định và đối tượng ActionProvider.</p>
+    </a>
+  </div>
+
+</div>
diff --git a/docs/html-intl/intl/vi/guide/components/intents-filters.jd b/docs/html-intl/intl/vi/guide/components/intents-filters.jd
new file mode 100644
index 0000000..cdc623f8e
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/components/intents-filters.jd
@@ -0,0 +1,899 @@
+page.title=Ý định và Bộ lọc Ý định
+page.tags="IntentFilter"
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Trong tài liệu này</h2>
+<ol>
+  <li><a href="#Types">Các Loại Ý định</a></li>
+  <li><a href="#Building">Xây dựng một Ý định</a>
+    <ol>
+      <li><a href="#ExampleExplicit">Ví dụ về ý định biểu thị</a></li>
+      <li><a href="#ExampleSend">Ví dụ về ý định không biểu thị</a></li>
+      <li><a href="#ForceChooser">Bắt buộc một bộ chọn ứng dụng</a></li>
+    </ol>
+  </li>
+  <li><a href="#Receiving">Nhận một Ý định Không biểu thị</a>
+    <ol>
+      <li><a href="#ExampleFilters">Ví dụ về bộ lọc</a></li>
+    </ol>
+  </li>
+  <li><a href="#PendingIntent">Sử dụng một Ý định Chờ</a></li>
+  <li><a href="#Resolution">Giải quyết Ý định</a>
+    <ol>
+      <li><a href="#ActionTest">Kiểm tra hành động</a></li>
+      <li><a href="#CategoryTest">Kiểm tra thể loại</a></li>
+      <li><a href="#DataTest">Kiểm tra dữ liệu</a></li>
+      <li><a href="#imatch">So khớp ý định</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>Xem thêm</h2>
+<ol>
+<li><a href="{@docRoot}training/basics/intents/index.html">Tương tác với các Ứng dụng khác</a></li>
+<li><a href="{@docRoot}training/sharing/index.html">Chia sẻ Nội dung</a></li>
+</ol>
+
+</div>
+</div>
+
+
+
+
+<p>{@link android.content.Intent} là một đối tượng nhắn tin mà bạn có thể sử dụng để yêu cầu một hành động
+từ một <a href="{@docRoot}guide/components/fundamentals.html#Components">thành phần ứng dụng</a> khác.
+Mặc dù các ý định sẽ tạo điều kiện cho giao tiếp giữa các thành phần bằng một vài cách, có ba
+trường hợp sử dụng cơ bản:</p>
+
+<ul>
+<li><b>Để bắt đầu một hoạt động:</b>
+<p>{@link android.app.Activity} biểu diễn một màn hình đơn trong một ứng dụng. Bạn có thể bắt đầu một thực thể
+mới của một {@link android.app.Activity} bằng cách chuyển {@link android.content.Intent}
+sang {@link android.content.Context#startActivity startActivity()}. {@link android.content.Intent}
+mô tả hoạt động cần bắt đầu và mang theo mọi dữ liệu cần thiết.</p>
+
+<p>Nếu bạn muốn nhận một kết quả từ hoạt động khi nó hoàn thành,
+hãy gọi {@link android.app.Activity#startActivityForResult
+startActivityForResult()}. Hoạt động của bạn nhận được kết quả
+dưới dạng một đối tượng {@link android.content.Intent} riêng biệt trong lệnh gọi lại {@link
+android.app.Activity#onActivityResult onActivityResult()} của hoạt động của bạn.
+Để biết thêm thông tin, hãy xem hướng dẫn <a href="{@docRoot}guide/components/activities.html">Hoạt động</a>.</p></li>
+
+<li><b>Để bắt đầu một dịch vụ:</b>
+<p>{@link android.app.Service} là một thành phần có chức năng thực hiện các thao tác dưới nền
+mà không cần giao diện người dùng. Bạn có thể bắt đầu một dịch vụ để thực hiện một thao tác một lần
+(chẳng hạn như tải xuống một tệp) bằng cách chuyển {@link android.content.Intent}
+tới {@link android.content.Context#startService startService()}. {@link android.content.Intent}
+mô tả dịch vụ cần bắt đầu và mang theo mọi dữ liệu cần thiết.</p>
+
+<p>Nếu dịch vụ được thiết kế với một giao diện máy khách-máy chủ, bạn có thể gắn kết với dịch vụ
+từ một thành phần khác bằng cách chuyển {@link android.content.Intent} sang {@link
+android.content.Context#bindService bindService()}</code>. Để biết thêm thông tin, hãy xem hướng dẫn <a href="{@docRoot}guide/components/services.html">Dịch vụ</a>.</p></li>
+
+<li><b>Để chuyển một quảng bá:</b>
+<p>Quảng bá là một tin nhắn mà bất kỳ ứng dụng nào cũng có thể nhận được. Hệ thống sẽ chuyển các quảng bá
+khác nhau tới các sự kiện hệ thống, chẳng hạn như khi hệ thống khởi động hoặc thiết bị bắt đầu sạc.
+Bạn có thể chuyển một quảng bá tới các ứng dụng khác bằng cách chuyển một {@link android.content.Intent}
+tới {@link android.content.Context#sendBroadcast(Intent) sendBroadcast()},
+{@link android.content.Context#sendOrderedBroadcast(Intent, String)
+sendOrderedBroadcast()}, hoặc {@link
+android.content.Context#sendStickyBroadcast sendStickyBroadcast()}.</p>
+</li>
+</ul>
+
+
+
+
+<h2 id="Types">Các Loại Ý định</h2>
+
+<p>Có hai loại ý định:</p>
+
+<ul>
+<li><b>Ý định biểu thị</b> quy định thành phần cần bắt đầu theo tên (tên lớp hoàn toàn đạt tiêu chuẩn
+). Thường bạn sẽ sử dụng một ý định biểu thị để bắt đầu một thành phần trong
+ứng dụng của chính mình, vì bạn biết tên lớp của hoạt động hay dịch vụ mà mình muốn bắt đầu. Ví dụ
+, bắt đầu một hoạt động mới để hồi đáp một hành động của người dùng hay bắt đầu một dịch vụ để tải xuống
+tệp dưới nền.</li>
+
+<li><b>Ý định không biểu thị</b> không chỉ định một thành phần cụ thể mà thay vào đó, sẽ khai báo một hành động thông thường
+cần thực hiện, cho phép một thành phần từ một ứng dụng khác xử lý nó. Ví dụ, nếu bạn muốn
+hiển thị cho người dùng một vị trí trên bản đồ, bạn có thể sử dụng một ý định không biểu thị để yêu cầu một ứng dụng
+có khả năng khác hiển thị một vị trí được chỉ định trên bản đồ.</li>
+</ul>
+
+<p>Khi bạn tạo một ý định biểu thị để bắt đầu một hoạt động hoặc dịch vụ, hệ thống ngay lập tức
+sẽ bắt đầu thành phần ứng dụng được quy định trong đối tượng {@link android.content.Intent}.</p>
+
+<div class="figure" style="width:446px">
+<img src="{@docRoot}images/components/intent-filters@2x.png" width="446" alt="" />
+<p class="img-caption"><strong>Hình 1.</strong> Minh họa về cách một ý định không biểu thị được
+chuyển thông qua hệ thống để bắt đầu một hoạt động khác: <b>[1]</b> <em>Hoạt động A</em> tạo một
+{@link android.content.Intent} bằng một mô tả hành động và chuyển nó cho {@link
+android.content.Context#startActivity startActivity()}. <b>[2]</b> Hệ thống Android tìm kiếm tất cả
+ứng dụng xem có một bộ lọc ý định khớp với ý định đó không. Khi tìm thấy kết quả khớp, <b>[3]</b> hệ thống
+sẽ bắt đầu hoạt động so khớp đó (<em>Hoạt động B</em>) bằng cách gọi ra phương pháp {@link
+android.app.Activity#onCreate onCreate()} và chuyển nó cho {@link android.content.Intent}.
+</p>
+</div>
+
+<p>Khi bạn tạo một ý định không biểu thị, hệ thống Android sẽ tìm kiếm thành phần phù hợp để bắt đầu
+bằng cách so sánh nội dung của ý định với các <em>bộ lọc ý định</em> được khai báo trong <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">tệp bản kê khai</a> của các ứng dụng khác trên
+thiết bị. Nếu ý định khớp với một bộ lọc ý định, hệ thống sẽ bắt đầu thành phần đó và chuyển cho nó
+đối tượng {@link android.content.Intent}. Nếu có nhiều bộ lọc ý định tương thích, hệ thống
+sẽ hiển thị một hộp thoại để người dùng có thể chọn ứng dụng sẽ sử dụng.</p>
+
+<p>Bộ lọc ý định là một biểu thức trong tệp bản kê khai của một ứng dụng, có chức năng
+chỉ định loại ý định mà thành phần
+muốn nhận. Ví dụ, bằng cách khai báo một bộ lọc ý định cho một hoạt động,
+bạn giúp các ứng dụng khác có thể trực tiếp bắt đầu hoạt động của mình với một loại ý định nhất định.
+Tương tự, nếu bạn <em>không</em> khai báo bất kỳ bộ lọc ý định nào cho một hoạt động, khi đó nó chỉ có thể
+được bắt đầu bằng một ý định biểu thị.</p>
+
+<p class="caution"><strong>Chú ý:</strong> Để đảm bảo ứng dụng của bạn được bảo mật, luôn sử dụng một ý định
+biểu thị khi bắt đầu một {@link android.app.Service} và không được
+khai báo bộ lọc ý định cho các dịch vụ của bạn. Việc sử dụng một ý định không biểu thị để bắt đầu một dịch vụ sẽ là một nguy cơ
+về bảo mật vì bạn không thể chắc chắn dịch vụ nào sẽ hồi đáp ý định đó,
+và người dùng không thể thấy dịch vụ nào bắt đầu. Bắt đầu với Android 5.0 (API mức 21), hệ thống
+sẽ đưa ra lỗi ngoại lệ nếu bạn gọi {@link android.content.Context#bindService bindService()}
+bằng một ý định không biểu thị.</p>
+
+
+
+
+
+<h2 id="Building">Xây dựng một Ý định</h2>
+
+<p>Đối tượng {@link android.content.Intent} mang thông tin mà hệ thống Android sử dụng
+để xác định thành phần nào sẽ bắt đầu (chẳng hạn như tên thành phần chính xác hoặc thể loại
+thành phần mà sẽ nhận ý định), cộng với thông tin mà thành phần nhận sử dụng để
+thực hiện hành động cho phù hợp (chẳng hạn như hành động sẽ thực hiện và dữ liệu để dựa vào đó mà thực hiện).</p>
+
+
+<p>Thông tin chính chứa trong một {@link android.content.Intent} như sau:</p>
+
+<dl>
+
+<dt><b>Tên thành phần</b></dt>
+<dd>Tên của thành phần sẽ bắt đầu.
+
+<p>Nội dung này không bắt buộc, nhưng đó là một thông tin trọng yếu để khiến một ý định trở nên
+<b>biểu thị</b>, có nghĩa là ý định nên chỉ được chuyển tới thành phần ứng dụng
+được xác định bởi tên thành phần đó. Nếu thiếu một tên thành phần, ý định trở thành <b>không biểu thị</b> và hệ thống
+sẽ quyết định thành phần nào nhận ý định đó dựa trên các thông tin còn lại của ý định
+(chẳng hạn như hành động, dữ liệu và thể loại&mdash;được mô tả bên dưới). Vì vậy, nếu bạn bắt đầu một thành phần
+cụ thể trong ứng dụng của mình, bạn nên chỉ định tên thành phần.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Khi bắt đầu một {@link android.app.Service}, bạn nên
+<strong>luôn chỉ định tên thành phần</strong>. Nếu không, bạn không thể chắc chắn dịch vụ nào
+sẽ hồi đáp ý định và người dùng không thể thấy dịch vụ nào bắt đầu.</p>
+
+<p>Trường này của {@link android.content.Intent} là một đối tượng
+{@link android.content.ComponentName} mà bạn có thể chỉ định bằng cách sử dụng một tên lớp
+hoàn toàn đủ tiêu chuẩn của thành phần đích, bao gồm tên gói của ứng dụng. Ví dụ,
+{@code com.example.ExampleActivity}. Bạn có thể đặt tên thành phần bằng {@link
+android.content.Intent#setComponent setComponent()}, {@link android.content.Intent#setClass
+setClass()}, {@link android.content.Intent#setClassName(String, String) setClassName()}, hoặc bằng
+ hàm dựng {@link android.content.Intent}.</p>
+
+</dd>
+
+<p><dt><b>Hành động</b></dt>
+<dd>Một xâu quy định hành động thông thường sẽ thực hiện (chẳng hạn như <em>xem</em> hoặc <em>chọn</em>).
+
+<p>Trong trường hợp một ý định quảng bá, đây là hành động đã diễn ra và đang được báo cáo.
+Hành động này quyết định phần lớn cách thức xác định cấu trúc phần còn lại của ý định&mdash;đặc biệt là
+những gì chứa trong dữ liệu và phụ thêm.
+
+<p>Bạn có thể quy định các hành động của chính mình để các ý định bên trong ứng dụng của bạn sử dụng (hoặc để
+các ứng dụng khác sử dụng nhằm gọi ra các thành phần trong ứng dụng của mình), nhưng bạn nên thường xuyên sử dụng hằng số hành động
+được định nghĩa bởi lớp {@link android.content.Intent} hoặc các lớp khuôn khổ khác. Sau đây là một số
+hành động thường dùng để bắt đầu một hoạt động:</p>
+
+<dl>
+<dt>{@link android.content.Intent#ACTION_VIEW}</dt>
+   <dd>Sử dụng hành động này trong một ý định với {@link
+   android.content.Context#startActivity startActivity()} khi bạn có một số thông tin mà
+   một hoạt động có thể hiển thị cho người dùng, chẳng hạn như ảnh để xem trong một ứng dụng bộ sưu tập ảnh, hay địa chỉ để
+   xem trong ứng dụng bản đồ.</dd>
+
+<dt>{@link android.content.Intent#ACTION_SEND}</dt>
+   <dd>Còn được biết đến như là ý định "chia sẻ", bạn nên sử dụng kiểu này trong một ý định với {@link
+   android.content.Context#startActivity startActivity()} khi bạn có một số dữ liệu mà người dùng có thể
+   chia sẻ thông qua một ứng dụng khác, chẳng hạn như một ứng dụng e-mail hay ứng dụng chia sẻ mạng xã hội.</dd>
+</dl>
+
+<p>Xem tham chiếu lớp {@link android.content.Intent} để biết thêm
+hằng số có chức năng định nghĩa các hành động thông thường.  Những hành động khác được định nghĩa
+ở phần khác trong khuôn khổ Android, chẳng hạn như trong {@link android.provider.Settings} đối với những hành động
+có chức năng mở màn hình cụ thể trong ứng dụng Cài đặt của hệ thống.</p>
+
+<p>Bạn có thể quy định hành động cho một ý định với {@link android.content.Intent#setAction
+setAction()} hoặc với một hàm dựng {@link android.content.Intent}.</p>
+
+<p>Nếu bạn định nghĩa các hành động của chính mình, nhớ nêu tên gói ứng dụng của bạn
+làm tiền tố. Ví dụ:</p>
+<pre>static final String ACTION_TIMETRAVEL = "com.example.action.TIMETRAVEL";</pre>
+</dd>
+
+<dt><b>Dữ liệu</b></dt>
+<dd>URI (một đối tượng {@link android.net.Uri}) tham chiếu dữ liệu sẽ được hành động dựa trên nó và/hoặc kiểu MIME
+của dữ liệu đó. Kiểu dữ liệu được cung cấp thường sẽ bị chi phối bởi hành động của ý định. Ví
+dụ, nếu hành động là {@link android.content.Intent#ACTION_EDIT}, dữ liệu cần chứa
+URI của tài liệu cần chỉnh sửa.
+
+<p>Khi tạo một ý định,
+một điều thường quan trọng đó là quy định kiểu dữ liệu (kiểu MIME của nó) ngoài URI của nó.
+Ví dụ, một hoạt động có thể hiển thị hình ảnh có thể sẽ không
+phát được tệp âm thanh, ngay cả khi định dạng URI có thể tương tự.
+Vì thế, việc quy định kiểu MIME cho dữ liệu của bạn sẽ giúp hệ thống
+Android tìm được thành phần tốt nhất để nhận ý định của bạn.
+Tuy nhiên, kiểu MIME đôi khi có thể được suy ra từ URI&mdash;cụ thể, khi dữ liệu là một URI
+{@code content:}, có chức năng cho biết dữ liệu nằm trên thiết bị và được kiểm soát bởi một
+{@link android.content.ContentProvider}, điều này khiến kiểu MIME của dữ liệu hiển thị đối với hệ thống.</p>
+
+<p>Để chỉ đặt URI dữ liệu, hãy gọi {@link android.content.Intent#setData setData()}.
+Để chỉ đặt kiểu MIME, hãy gọi {@link android.content.Intent#setType setType()}. Nếu cần, bạn
+bạn có thể công khai đặt cả hai với {@link
+android.content.Intent#setDataAndType setDataAndType()}.</p>
+
+<p class="caution"><strong>Chú ý:</strong> Nếu bạn muốn đặt cả URI và kiểu MIME,
+<strong>không</strong> gọi {@link android.content.Intent#setData setData()} và
+{@link android.content.Intent#setType setType()} vì chúng sẽ vô hiệu hóa giá trị của nhau.
+Luôn sử dụng {@link android.content.Intent#setDataAndType setDataAndType()} để đặt cả
+URI và kiểu MIME.</p>
+</dd>
+
+<p><dt><b>Thể loại</b></dt>
+<dd>Một xâu chứa thông tin bổ sung về kiểu thành phần
+sẽ xử lý ý định.  Trong một ý định có thể chứa
+nhiều mô tả thể loại, nhưng hầu hết các ý định lại không yêu cầu thể loại.
+Sau đây là một số thể loại thường gặp:
+
+<dl>
+<dt>{@link android.content.Intent#CATEGORY_BROWSABLE}</dt>
+  <dd>Hoạt động mục tiêu cho phép chính nó được bắt đầu bởi một trình duyệt web để hiển thị dữ liệu
+       được một liên kết tham chiếu&mdash;chẳng hạn như một hình ảnh hay thư e-mail.
+  </dd>
+<dt>{@link android.content.Intent#CATEGORY_LAUNCHER}</dt>
+  <dd>Hoạt động là hoạt động ban đầu của một tác vụ và được liệt kê trong
+       trình khởi chạy ứng dụng của hệ thống.
+  </dd>
+</dl>
+
+<p>Xem mô tả lớp {@link android.content.Intent} để biết danh sách đầy đủ về các
+thể loại.</p>
+
+<p>Bạn có thể quy định một thể loại bằng {@link android.content.Intent#addCategory addCategory()}.</p>
+</dd>
+</dl>
+
+
+<p>Những tính chất này được liệt kê ở trên (tên thành phần, hành động, dữ liệu và thể loại) biểu hiện các
+đặc điểm xác định của một ý định. Bằng cách đọc những tính chất này, hệ thống Android
+có thể quyết định nó sẽ bắt đầu thành phần ứng dụng nào.</p>
+
+<p>Tuy nhiên, một ý định có thể mang thông tin bổ sung không ảnh hưởng tới
+cách nó được giải quyết đối với một thành phần ứng dụng. Một ý định cũng có thể cung cấp:</p>
+
+<dl>
+<dt><b>Phụ thêm</b></dt>
+<dd>Các cặp khóa-giá trị mang thông tin bổ sung cần thiết để hoàn thành hành động được yêu cầu.
+Giống như việc một số hành động sử dụng các kiểu URI dữ liệu riêng, một số hành động cũng sử dụng các phần phụ thêm riêng.
+
+<p>Bạn có thể thêm dữ liệu phụ thêm bằng các phương pháp {@link android.content.Intent#putExtra putExtra()} khác nhau,
+mỗi phương pháp chấp nhận hai tham số: tên khóa và giá trị.
+Bạn cũng có thể tạo một đối tượng {@link android.os.Bundle} bằng tất cả dữ liệu phụ thêm, sau đó chèn
+ {@link android.os.Bundle} vào {@link android.content.Intent} bằng {@link
+android.content.Intent#putExtras putExtras()}.</p>
+
+<p>Ví dụ, khi tạo một ý định để gửi một e-mail bằng
+{@link android.content.Intent#ACTION_SEND}, bạn có thể chỉ định người nhận "tới" bằng khóa
+{@link android.content.Intent#EXTRA_EMAIL}, và chỉ định "chủ đề" bằng khóa
+{@link android.content.Intent#EXTRA_SUBJECT}.</p>
+
+<p>Lớp {@link android.content.Intent} quy định nhiều hằng số {@code EXTRA_*} cho
+các kiểu dữ liệu chuẩn hóa. Nếu bạn cần khai báo các khóa phụ thêm của riêng mình (cho những ý định
+mà ứng dụng của bạn nhận), hãy chắc chắn nêu tên gói ứng dụng của bạn
+làm tiền tố. Ví dụ:</p>
+<pre>static final String EXTRA_GIGAWATTS = "com.example.EXTRA_GIGAWATTS";</pre>
+</dd>
+
+<dt><b>Cờ</b></dt>
+<dd>Cờ được định nghĩa trong lớp {@link android.content.Intent} có chức năng như siêu dữ liệu cho
+ý định. Cờ có thể chỉ lệnh hệ thống Android về cách khởi chạy một hoạt động (ví dụ, hoạt động sẽ thuộc về
+<a href="{@docRoot}guide/components/tasks-and-back-stack.html">tác vụ</a> nào
+) và cách xử lý sau khi nó được khởi chạy (ví dụ, nó có thuộc về danh sách hoạt động
+gần đây hay không).
+
+<p>Để biết thêm thông tin, hãy xem phương pháp {@link android.content.Intent#setFlags setFlags()}.</p>
+</dd>
+
+</dl>
+
+
+
+
+<h3 id="ExampleExplicit">Ví dụ về ý định biểu thị</h3>
+
+<p>Ý định biểu thị là ý định mà bạn sử dụng để khởi chạy một thành phần ứng dụng cụ thể
+chẳng hạn như một hoạt động hay dịch vụ cụ thể trong ứng dụng của bạn. Để tạo một ý định biểu thị, hãy định nghĩa
+tên thành phần cho đối tượng {@link android.content.Intent} &mdash;tất cả các
+tính chất ý định khác đều không bắt buộc.</p>
+
+<p>Ví dụ, nếu bạn đã xây dựng một dịch vụ trong ứng dụng của mình, đặt tên là {@code DownloadService},
+được thiết kế để tải xuống một tệp từ web, bạn có thể bắt đầu nó bằng mã sau:</p>
+
+<pre>
+// Executed in an Activity, so 'this' is the {@link android.content.Context}
+// The fileUrl is a string URL, such as "http://www.example.com/image.png"
+Intent downloadIntent = new Intent(this, DownloadService.class);
+downloadIntent.setData({@link android.net.Uri#parse Uri.parse}(fileUrl));
+startService(downloadIntent);
+</pre>
+
+<p>Hàm dựng {@link android.content.Intent#Intent(Context,Class)}
+cung cấp cho ứng dụng {@link android.content.Context} và thành phần
+một đối tượng {@link java.lang.Class}. Như vậy,
+ý định này rõ ràng sẽ bắt đầu lớp {@code DownloadService} trong ứng dụng.</p>
+
+<p>Để biết thêm thông tin về việc xây dựng và bắt đầu một dịch vụ, hãy xem hướng dẫn
+<a href="{@docRoot}guide/components/services.html">Dịch vụ</a>.</p>
+
+
+
+
+<h3 id="ExampleSend">Ví dụ về ý định không biểu thị</h3>
+
+<p>Ý định không biểu thị quy định một hành động mà có thể gọi ra bất kỳ ứng dụng nào trên thiết bị mà có
+khả năng thực hiện hành động đó. Việc sử dụng ý định không biểu thị có ích khi ứng dụng của bạn không thể thực hiện
+hành động, nhưng các ứng dụng khác có thể và bạn muốn người dùng chọn ứng dụng sẽ sử dụng.</p>
+
+<p>Ví dụ, nếu bạn có nội dung mà mình muốn người dùng chia sẻ với người khác, hãy tạo một ý định
+với hành động {@link android.content.Intent#ACTION_SEND} và
+bổ sung phần phụ thêm quy định nội dung sẽ chia sẻ. Khi bạn gọi
+{@link android.content.Context#startActivity startActivity()} bằng ý định đó, người dùng có thể
+chọn một ứng dụng để chia sẻ nội dung thông qua đó.</p>
+
+<p class="caution"><strong>Chú ý:</strong> Có thể là người dùng sẽ không có <em>bất kỳ</em>
+ứng dụng nào xử lý được ý định không biểu thị mà bạn gửi tới {@link android.content.Context#startActivity
+startActivity()}. Nếu chuyện đó xảy ra, phương pháp gọi sẽ thất bại và ứng dụng của bạn sẽ gặp lỗi. Để xác minh rằng
+một hoạt động sẽ nhận được ý định, hãy gọi {@link android.content.Intent#resolveActivity
+resolveActivity()} trên đối tượng {@link android.content.Intent} của bạn. Nếu kết quả không rỗng
+thì có ít nhất một ứng dụng có thể xử lý ý định và sẽ an toàn nếu gọi
+{@link android.content.Context#startActivity startActivity()}. Nếu kết quả rỗng,
+bạn không nên sử dụng ý định và, nếu có thể, bạn nên vô hiệu hóa tính năng phát hành
+ý định.</p>
+
+
+<pre>
+// Create the text message with a string
+Intent sendIntent = new Intent();
+sendIntent.setAction(Intent.ACTION_SEND);
+sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
+sendIntent.setType("text/plain");
+
+// Verify that the intent will resolve to an activity
+if (sendIntent.resolveActivity(getPackageManager()) != null) {
+    startActivity(sendIntent);
+}
+</pre>
+
+<p class="note"><strong>Lưu ý:</strong> Trong trường hợp này, URI không được sử dụng, nhưng kiểu dữ liệu của ý định
+sẽ được khai báo để quy định nội dung được thực hiện bởi phần phụ thêm.</p>
+
+
+<p>Khi {@link android.content.Context#startActivity startActivity()} được gọi, hệ thống
+sẽ kiểm tra tất cả ứng dụng đã cài đặt để xác định những ứng dụng có thể xử lý kiểu ý định này (một
+ý định với hành động {@link android.content.Intent#ACTION_SEND} và có mang dữ liệu
+"văn bản/thuần"). Nếu chỉ có một ứng dụng có thể xử lý nó, ứng dụng đó sẽ mở ngay lập tức và được cấp cho
+ý định. Nếu có nhiều hoạt động chấp nhận ý định, hệ thống
+sẽ hiển thị một hộp thoại để người dùng có thể chọn ứng dụng sẽ sử dụng.</p>
+
+
+<div class="figure" style="width:200px">
+  <img src="{@docRoot}images/training/basics/intent-chooser.png" alt="">
+  <p class="img-caption"><strong>Hình 2.</strong> Hộp thoại bộ chọn.</p>
+</div>
+
+<h3 id="ForceChooser">Bắt buộc một bộ chọn ứng dụng</h3>
+
+<p>Khi có nhiều hơn một ứng dụng hồi đáp ý định không biểu thị của bạn,
+người dùng có thể chọn ứng dụng nào sẽ sử dụng và đặt ứng dụng đó làm lựa chọn mặc định cho
+hành động. Điều này tốt khi thực hiện một hành động mà người dùng
+có thể muốn sử dụng ứng dụng tương tự từ lúc này trở đi, chẳng hạn như khi mở một trang web (người dùng
+thường thích ưu tiên sử dụng chỉ một trình duyệt web).</p>
+
+<p>Tuy nhiên, nếu nhiều ứng dụng có thể hồi đáp ý định và người dùng có thể muốn sử dụng mỗi
+lần một ứng dụng khác, bạn nên công khai hiển thị một hộp thoại bộ chọn. Hộp thoại bộ chọn yêu cầu
+người dùng phải chọn ứng dụng sẽ sử dụng mỗi lần cho hành động (người dùng không thể chọn một ứng dụng mặc định cho
+hành động). Ví dụ, khi ứng dụng của bạn thực hiện "chia sẻ" với hành động {@link
+android.content.Intent#ACTION_SEND}, người dùng có thể muốn chia sẻ bằng cách sử dụng một ứng dụng khác tùy vào
+tình hình thực tế của họ, vì thế bạn nên luôn sử dụng hộp thoại bộ chọn như minh họa trong hình 2.</p>
+
+
+
+
+<p>Để hiển thị bộ chọn, hãy tạo một {@link android.content.Intent} bằng cách sử dụng {@link
+android.content.Intent#createChooser createChooser()} và chuyển nó sang {@link
+android.app.Activity#startActivity startActivity()}. Ví dụ:</p>
+
+<pre>
+Intent sendIntent = new Intent(Intent.ACTION_SEND);
+...
+
+// Always use string resources for UI text.
+// This says something like "Share this photo with"
+String title = getResources().getString(R.string.chooser_title);
+// Create intent to show the chooser dialog
+Intent chooser = Intent.createChooser(sendIntent, title);
+
+// Verify the original intent will resolve to at least one activity
+if (sendIntent.resolveActivity(getPackageManager()) != null) {
+    startActivity(chooser);
+}
+</pre>
+
+<p>Một hộp thoại hiển thị với một danh sách ứng dụng hồi đáp lại ý định được chuyển sang phương pháp {@link
+android.content.Intent#createChooser createChooser()} và sử dụng văn bản được cung cấp làm
+tiêu đề của hộp thoại.</p>
+
+
+
+
+
+
+
+
+
+<h2 id="Receiving">Nhận một Ý định Không biểu thị</h2>
+
+<p>Để quảng cáo những ý định không biểu thị mà ứng dụng của bạn có thể nhận, hãy khai báo một hoặc nhiều bộ lọc ý định cho
+từng thành phần ứng dụng của bạn với một phần tử <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a>
+trong <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">tệp bản kê khai của mình</a>.
+Mỗi bộ lọc ý định sẽ quy định loại ý định mà nó chấp nhận dựa trên hành động,
+dữ liệu và thể loại của ý định. Hệ thống sẽ chỉ chuyển một ý định không biểu thị tới thành phần ứng dụng của bạn nếu
+ý định đó có thể chuyển qua một trong các bộ lọc ý định của bạn.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Ý định biểu thị luôn được chuyển tới mục tiêu của mình,
+không phụ thuộc vào bất kỳ bộ lọc ý định nào mà thành phần khai báo.</p>
+
+<p>Một thành phần ứng dụng nên khai báo các bộ lọc riêng cho từng công việc duy nhất mà nó có thể thực hiện.
+Ví dụ, một hoạt động trong một ứng dụng bộ sưu tập ảnh có thể có hai bộ lọc: một bộ lọc
+để xem một hình ảnh và một bộ lọc để chỉnh sửa một hình ảnh. Khi hoạt động bắt đầu,
+nó sẽ kiểm tra {@link android.content.Intent} và quyết định cách xử lý dựa trên thông tin
+trong {@link android.content.Intent} (chẳng hạn như có hiển thị các điều khiển của trình chỉnh sửa hoặc không).</p>
+
+<p>Mỗi bộ lọc ý định sẽ được định nghĩa bởi một phần tử <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a>
+trong tệp bản kê khai của ứng dụng, được lồng trong thành phần ứng dụng tương ứng (chẳng hạn như
+một phần tử <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+). Bên trong <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a>,
+bạn có thể quy định loại ý định sẽ chấp nhận bằng cách sử dụng một hoặc nhiều
+phần tử trong ba phần tử sau:</p>
+
+<dl>
+<dt><a href="{@docRoot}guide/topics/manifest/action-element.html">{@code &lt;action&gt;}</a></dt>
+  <dd>Khai báo hành động ý định được chấp nhận, trong thuộc tính {@code name}. Giá trị
+  phải là giá trị xâu ký tự của một hành động chứ không phải hằng số lớp.</dd>
+<dt><a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a></dt>
+  <dd>Khai báo kiểu dữ liệu được chấp nhận, bằng cách sử dụng một hoặc nhiều thuộc tính quy định
+  các khía cạnh của URI dữ liệu (<code>scheme</code>, <code>host</code>, <code>port</code>,
+  <code>path</code>, v.v.) và kiểu MIME.</dd>
+<dt><a href="{@docRoot}guide/topics/manifest/category-element.html">{@code &lt;category&gt;}</a></dt>
+  <dd>Khai báo thể loại ý định được chấp nhận, trong thuộc tính {@code name}. Giá trị
+  phải là giá trị xâu ký tự của một hành động chứ không phải hằng số lớp.
+
+  <p class="note"><strong>Lưu ý:</strong> Để nhận các ý định không biểu thị, bạn
+  <strong>phải nêu</strong> thể loại
+  {@link android.content.Intent#CATEGORY_DEFAULT} trong bộ lọc ý định. Các phương pháp
+  {@link android.app.Activity#startActivity startActivity()} và
+  {@link android.app.Activity#startActivityForResult startActivityForResult()} xử lý tất cả ý định
+  như thể chúng khai báo thể loại {@link android.content.Intent#CATEGORY_DEFAULT}.
+  Nếu bạn không khai báo thể loại này trong bộ lọc ý định của mình, không có ý định không biểu thị nào sẽ phân giải thành
+  hoạt động của bạn.</p>
+  </dd>
+</dl>
+
+<p>Ví dụ, sau đây là một khai báo hoạt động với một bộ lọc ý định để nhận một ý định
+{@link android.content.Intent#ACTION_SEND} khi kiểu dữ liệu là văn bản:</p>
+
+<pre>
+&lt;activity android:name="ShareActivity">
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="text/plain"/>
+    &lt;/intent-filter>
+&lt;/activity>
+</pre>
+
+<p>Không sao nếu tạo một bộ lọc chứa nhiều hơn một thực thể của
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code &lt;action&gt;}</a>,
+<a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>, hoặc
+<a href="{@docRoot}guide/topics/manifest/category-element.html">{@code &lt;category&gt;}</a>.
+Nếu làm vậy, bạn chỉ cần chắc chắn rằng thành phần có thể xử lý bất kỳ và tất cả các cách kết hợp
+những phần tử bộ lọc đó.</p>
+
+<p>Khi bạn muốn xử lý nhiều kiểu ý định, nhưng chỉ theo các cách kết hợp cụ thể giữa
+hành động, dữ liệu và kiểu thể loại, khi đó bạn cần tạo nhiều bộ lọc ý định.</p>
+
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>Hạn chế truy cập vào các thành phần</h2>
+<p>Sử dụng một bộ lọc ý định không phải là một cách bảo mật để ngăn các ứng dụng khác bắt đầu
+các thành phần của bạn. Mặc dù bộ lọc ý định hạn chế một thành phần chỉ hồi đáp
+một số kiểu ý định không biểu thị nhất định, một ứng dụng khác có thể có khả năng bắt đầu thành phần ứng dụng của bạn
+bằng cách sử dụng ý định biểu thị nếu nhà phát triển xác định tên thành phần của bạn.
+Nếu điều quan trọng là <em>chỉ ứng dụng của chính bạn</em> mới có thể bắt đầu một trong các thành phần của bạn,
+hãy đặt thuộc tính <a href="{@docRoot}guide/topics/manifest/activity-element.html#exported">{@code
+exported}</a> thành {@code "false"} cho thành phần đó.
+</p>
+</div>
+</div>
+
+<p>Ý định không biểu thị sẽ được kiểm tra dựa trên một bộ lọc bằng cách so sánh ý định với từng phần tử trong số
+ba phần tử. Để được chuyển tới thành phần, ý định phải vượt qua tất cả ba lần kiểm tra.
+Nếu không khớp với thậm chí chỉ một lần thì hệ thống Android sẽ không chuyển ý định tới
+thành phần.  Tuy nhiên, vì một thành phần có thể có nhiều bộ lọc ý định, ý định mà không chuyển qua
+một trong các bộ lọc của thành phần có thể chuyển qua trên một bộ lọc khác.
+Bạn có thể tìm hiểu thêm thông tin về cách hệ thống giải quyết ý định trong phần bên dưới
+về <a href="#Resolution">Giải quyết Ý định</a>.</p>
+
+<p class="caution"><strong>Chú ý:</strong> Để tránh vô ý chạy
+{@link android.app.Service} của một ứng dụng khác, hãy luôn sử dụng một ý định biểu thị để bắt đầu dịch vụ của chính bạn và không được
+khai báo các bộ lọc ý định cho dịch vụ của bạn.</p>
+
+<p class="note"><strong>Lưu ý:</strong>
+Đối với tất cả hoạt động, bạn phải khai báo các bộ lọc ý định của mình trong một tệp bản kê khai.
+Tuy nhiên, các bộ lọc cho hàm nhận quảng bá có thể được đăng ký linh hoạt bằng cách gọi
+{@link android.content.Context#registerReceiver(BroadcastReceiver, IntentFilter, String,
+Handler) registerReceiver()}. Sau đó, bạn có thể bỏ đăng ký hàm nhận đó bằng {@link
+android.content.Context#unregisterReceiver unregisterReceiver()}. Làm vậy sẽ cho phép ứng dụng của bạn
+lắng nghe các quảng bá cụ thể chỉ trong một khoảng thời gian xác định trong khi ứng dụng của bạn
+đang chạy.</p>
+
+
+
+
+
+
+
+<h3 id="ExampleFilters">Ví dụ về bộ lọc</h3>
+
+<p>Để hiểu hơn về một số hành vi của bộ lọc ý định, hãy xem đoạn mã HTML sau
+từ tệp bản kê khai của một ứng dụng chia sẻ mạng xã hội.</p>
+
+<pre>
+&lt;activity android:name="MainActivity">
+    &lt;!-- This activity is the main entry, should appear in app launcher -->
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.MAIN" />
+        &lt;category android:name="android.intent.category.LAUNCHER" />
+    &lt;/intent-filter>
+&lt;/activity>
+
+&lt;activity android:name="ShareActivity">
+    &lt;!-- This activity handles "SEND" actions with text data -->
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="text/plain"/>
+    &lt;/intent-filter&gt;
+    &lt;!-- This activity also handles "SEND" and "SEND_MULTIPLE" with media data -->
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;action android:name="android.intent.action.SEND_MULTIPLE"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="application/vnd.google.panorama360+jpg"/>
+        &lt;data android:mimeType="image/*"/>
+        &lt;data android:mimeType="video/*"/>
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p>Hoạt động thứ nhất, {@code MainActivity}, là điểm mục nhập chính của ứng dụng&mdash;hoạt động này
+sẽ mở khi người dùng khởi tạo ban đầu ứng dụng bằng biểu tượng trình khởi chạy:</p>
+<ul>
+  <li>Hành động {@link android.content.Intent#ACTION_MAIN} thể hiện
+  đây là điểm mục nhập chính và không yêu cầu bất kỳ dữ liệu ý định nào.</li>
+  <li>Thể loại {@link android.content.Intent#CATEGORY_LAUNCHER} cho biết rằng biểu tượng
+  của hoạt động này nên được đặt trong trình khởi chạy ứng dụng của hệ thống. Nếu phần tử <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+  không quy định một biểu tượng bằng {@code icon}, khi đó hệ thống sẽ sử dụng biểu tượng từ phần tử <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>
+.</li>
+</ul>
+<p>Hai nội dung này phải được ghép đôi cùng nhau để hoạt động xuất hiện trong trình khởi chạy ứng dụng.</p>
+
+<p>Hoạt động thứ hai, {@code ShareActivity}, có mục đích để tạo điều kiện chia sẻ nội dung văn bản và
+phương tiện. Mặc dù người dùng có thể nhập hoạt động này bằng cách điều hướng tới nó từ {@code MainActivity},
+họ cũng có thể nhập {@code ShareActivity} trực tiếp từ một ứng dụng khác mà phát hành
+ý định không biểu thị khớp với một trong hai bộ lọc ý định.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Kiểu MIME,
+<a href="https://developers.google.com/panorama/android/">{@code
+application/vnd.google.panorama360+jpg}</a>, là một kiểu dữ liệu đặc biệt quy định
+ảnh chụp toàn cảnh mà bạn có thể xử lý bằng các API <a href="{@docRoot}reference/com/google/android/gms/panorama/package-summary.html">Google
+panorama</a>.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h2 id="PendingIntent">Sử dụng một Ý định Chờ</h2>
+
+<p>Đối tượng {@link android.app.PendingIntent} là một trình bao bọc xung quanh một đối tượng {@link
+android.content.Intent}. Mục đích chính của một {@link android.app.PendingIntent}
+ là cấp quyền cho một ứng dụng ngoài
+để sử dụng {@link android.content.Intent} chứa trong nó như thể nó được thực thi từ tiến trình
+của chính ứng dụng của bạn.</p>
+
+<p>Các trường hợp sử dụng chính đối với một ý định chờ bao gồm:</p>
+<ul>
+  <li>Khai báo một ý định cần được thực thi khi người dùng thực hiện một hành động bằng <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Thông báo</a> của bạn
+  ({@link android.app.NotificationManager}
+  của hệ thống Android thực thi {@link android.content.Intent}).
+  <li>Khai báo một ý định cần được thực thi khi người dùng thực hiện một hành động bằng
+  <a href="{@docRoot}guide/topics/appwidgets/index.html">App Widget</a> của bạn
+  (ứng dụng màn hình Trang chủ thực thi {@link android.content.Intent}).
+  <li>Khai báo một ý định cần được thực thi tại một thời điểm xác định trong tương lai (
+{@link android.app.AlarmManager} của hệ thống Android thực thi {@link android.content.Intent}).
+</ul>
+
+<p>Vì mỗi đối tượng {@link android.content.Intent} được thiết kế để được xử lý bởi một
+loại thành phần ứng dụng cụ thể (hoặc là {@link android.app.Activity}, {@link android.app.Service}, hay
+ {@link android.content.BroadcastReceiver}), vì thế {@link android.app.PendingIntent} cũng
+phải được tạo lập với cân nhắc tương tự. Khi sử dụng một ý định chờ, ứng dụng của bạn sẽ không
+thực thi ý định bằng một lệnh gọi chẳng hạn như {@link android.content.Context#startActivity
+startActivity()}. Thay vào đó, bạn phải khai báo loại thành phần theo ý định khi bạn tạo lập
+{@link android.app.PendingIntent} bằng cách gọi phương pháp trình tạo lập tương ứng:</p>
+
+<ul>
+  <li>{@link android.app.PendingIntent#getActivity PendingIntent.getActivity()} đối với một
+  {@link android.content.Intent} mà bắt đầu {@link android.app.Activity}.</li>
+  <li>{@link android.app.PendingIntent#getService PendingIntent.getService()} đối với một
+  {@link android.content.Intent} mà bắt đầu {@link android.app.Service}.</li>
+  <li>{@link android.app.PendingIntent#getBroadcast PendingIntent.getBroadcast()} đối với một
+  {@link android.content.Intent} mà bắt đầu {@link android.content.BroadcastReceiver}.</li>
+</ul>
+
+<p>Trừ khi ứng dụng của bạn đang <em>nhận</em> ý định chờ từ các ứng dụng khác,
+các phương pháp để tạo lập {@link android.app.PendingIntent} trên là những phương pháp
+{@link android.app.PendingIntent} duy nhất mà bạn sẽ cần.</p>
+
+<p>Mỗi phương pháp sẽ lấy ứng dụng {@link android.content.Context} hiện tại,
+{@link android.content.Intent} mà bạn muốn bao bọc, và một hoặc nhiều cờ quy định
+cách thức sử dụng ý định (chẳng hạn như ý định có thể được sử dụng nhiều hơn một lần hay không).</p>
+
+<p>Bạn có thể tham khảo thêm thông tin về việc sử dụng ý định chờ trong tài liệu cho từng
+trường hợp sử dụng tương ứng chẳng hạn như trong hướng dẫn về API <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Thông báo</a>
+và <a href="{@docRoot}guide/topics/appwidgets/index.html">App Widgets</a>.</p>
+
+
+
+
+
+
+
+<h2 id="Resolution">Giải quyết Ý định</h2>
+
+
+<p>Khi hệ thống nhận được một ý định không biểu thị nhằm bắt đầu một hoạt động, nó sẽ tìm
+hoạt động tốt nhất cho ý định đó bằng cách so sánh ý định với các bộ lọc ý định dựa trên ba phương diện:</p>
+
+<ul>
+  <li>Hành động của ý định
+  <li>Dữ liệu của ý định (cả URI và kiểu dữ liệu)
+  <li>Thể loại của ý định
+</ul>
+
+<p>Các phần sau mô tả cách một ý định được so khớp với (các) thành phần phù hợp
+về phương diện bộ lọc ý định được khai báo như thế nào trong tệp bản kê khai của một ứng dụng.</p>
+
+
+<h3 id="ActionTest">Kiểm tra hành động</h3>
+
+<p>Để quy định các hành động của ý định được chấp nhận, một bộ lọc ý định có thể khai báo 0 phần tử
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> hoặc nhiều hơn.  Ví dụ:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.EDIT" /&gt;
+    &lt;action android:name="android.intent.action.VIEW" /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>Để vượt qua bộ lọc này, hành động được quy định trong {@link android.content.Intent}
+  phải khớp với một trong các hành động được liệt kê trong bộ lọc.</p>
+
+<p>Nếu bộ lọc không liệt kê bất kỳ hành động nào thì sẽ không có gì để
+ý định so khớp, vì thế tất cả ý định sẽ không vượt qua kiểm tra. Tuy nhiên, nếu một {@link android.content.Intent}
+không quy định một hành động, nó sẽ vượt qua kiểm tra (miễn là bộ lọc
+chứa ít nhất một hành động).</p>
+
+
+
+<h3 id="CategoryTest">Kiểm tra thể loại</h3>
+
+<p>Để quy định các thể loại của ý định được chấp nhận, một bộ lọc ý định có thể khai báo 0 phần tử
+<a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> hoặc nhiều hơn.  Ví dụ:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+    &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>Để một ý định vượt qua kiểm tra thể loại, mỗi thể loại trong {@link android.content.Intent}
+phải khớp với một thể loại trong bộ lọc. Trường hợp ngược lại là không cần thiết&mdash;bộ lọc ý định có thể
+khai báo nhiều thể loại hơn được quy định trong {@link android.content.Intent} và
+{@link android.content.Intent} sẽ vẫn vượt qua. Vì thế, ý định không có thể loại
+luôn vượt qua kiểm tra này, không phụ thuộc vào những thể loại nào được khai báo trong bộ lọc.</p>
+
+<p class="note"><strong>Lưu ý:</strong>
+Android sẽ tự động áp dụng thể loại {@link android.content.Intent#CATEGORY_DEFAULT}
+cho tất cả ý định không biểu thị được chuyển tới {@link
+android.content.Context#startActivity startActivity()} và {@link
+android.app.Activity#startActivityForResult startActivityForResult()}.
+Vì thế, nếu bạn muốn hoạt động của mình nhận ý định không biểu thị, nó phải
+nêu một thể loại cho {@code "android.intent.category.DEFAULT"} trong các bộ lọc ý định của mình (như
+được minh họa trong ví dụ {@code &lt;intent-filter&gt;} trước đó.</p>
+
+
+
+<h3 id="DataTest">Kiểm tra dữ liệu</h3>
+
+<p>Để quy định dữ liệu của ý định được chấp nhận, một bộ lọc ý định có thể khai báo 0 phần tử
+<a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
+&lt;data&gt;}</a> hoặc nhiều hơn.  Ví dụ:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:mimeType="video/mpeg" android:scheme="http" ... /&gt;
+    &lt;data android:mimeType="audio/mpeg" android:scheme="http" ... /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>Mỗi phần tử <code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code>
+có thể quy định một cấu trúc URI và kiểu dữ liệu (kiểu phương tiện MIME).  Có các thuộc tính
+riêng &mdash; {@code scheme}, {@code host}, {@code port},
+và {@code path} &mdash; cho từng phần của URI:
+</p>
+
+<p style="margin-left: 2em">{@code &lt;scheme&gt;://&lt;host&gt;:&lt;port&gt;/&lt;path&gt;}</p>
+
+<p>
+Ví dụ:
+</p>
+
+<p style="margin-left: 2em">{@code content://com.example.project:200/folder/subfolder/etc}</p>
+
+<p>Trong URI này, lược đồ là {@code content}, máy chủ là {@code com.example.project},
+cổng là {@code 200}, và đường dẫn là {@code folder/subfolder/etc}.
+</p>
+
+<p>Mỗi thuộc tính sau đều không bắt buộc trong một phần tử <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>,
+nhưng có sự phụ thuộc mang tính chất tuyến tính:</p>
+<ul>
+  <li>Nếu không quy định một lược đồ thì máy chủ bị bỏ qua.</li>
+  <li>Nếu không quy định một máy chủ thì cổng bị bỏ qua.</li>
+  <li>Nếu không quy định cả lược đồ và máy chủ thì đường dẫn bị bỏ qua.</li>
+</ul>
+
+<p>Khi URI trong một ý định được so sánh với đặc tả URI trong một bộ lọc,
+nó chỉ được so sánh với các bộ phận của URI được nêu trong bộ lọc. Ví dụ:</p>
+<ul>
+  <li>Nếu một bộ lọc chỉ quy định một lược đồ, tất cả URI có lược đồ đó sẽ khớp
+với bộ lọc.</li>
+  <li>Nếu một bộ lọc quy định một lược đồ và thẩm quyền nhưng không có đường dẫn, tất cả URI
+với cùng lược đồ và thẩm quyền sẽ thông qua bộ lọc, không phụ thuộc vào đường dẫn của nó.</li>
+  <li>Nếu bộ lọc quy định một lược đồ, thẩm quyền và đường dẫn, chỉ những URI có cùng lược đồ,
+thẩm quyền và đường dẫn mới thông qua bộ lọc.</li>
+</ul>
+
+<p class="note"><strong>Lưu ý:</strong> Đặc tả đường dẫn có thể
+chứa một ký tự đại diện dấu sao (*) để yêu cầu chỉ khớp một phần với tên đường dẫn.</p>
+
+<p>Kiểm tra dữ liệu so sánh cả URI và kiểu MIME trong ý định với một URI
+và kiểu MIME được quy định trong bộ lọc.  Các quy tắc như sau:
+</p>
+
+<ol type="a">
+<li>Một ý định mà không chứa URI cũng như kiểu MIME sẽ chỉ vượt qua
+kiểm tra nếu bộ lọc không quy định bất kỳ URI hay kiểu MIME nào.</li>
+
+<li>Một ý định chứa URI nhưng không có kiểu MIME (không biểu thị cũng như suy luận được từ
+URI) sẽ chỉ vượt qua kiểm tra nếu URI của nó khớp với định dạng URI của bộ lọc
+và bộ lọc tương tự không quy định một kiểu MIME.</li>
+
+<li>Một ý định chứa kiểu MIME nhưng không chứa URI sẽ chỉ vượt qua kiểm tra
+nếu bộ lọc liệt kê cùng kiểu MIME và không quy định một định dạng URI.</li>
+
+<li>Ý định mà chứa cả URI và kiểu MIME (hoặc biểu thị hoặc suy ra được từ
+URI) sẽ chỉ vượt qua phần kiểu MIME của kiểm tra nếu kiểu đó
+khớp với kiểu được liệt kê trong bộ lọc.  Nó vượt qua phần URI của kiểm tra
+nếu URI của nó khớp với một URI trong bộ lọc hoặc nếu nó có một {@code content:}
+hoặc {@code file:} URI và bộ lọc không quy định một URI. Nói cách khác,
+một thành phần được giả định là hỗ trợ dữ liệu {@code content:} và {@code file:} nếu
+bộ lọc của nó liệt kê <em>chỉ</em> một kiểu MIME.</p></li>
+</ol>
+
+<p>
+Quy tắc cuối cùng này, quy tắc (d), phản ánh kỳ vọng
+rằng các thành phần có thể nhận được dữ liệu cục bộ từ một tệp hoặc trình cung cấp nội dung.
+Vì thế, các bộ lọc của chúng có thể chỉ liệt kê một kiểu dữ liệu và không cần công khai
+nêu tên {@code content:} và các lược đồ {@code file:}.
+Đây là một trường hợp điển hình.  Phần tử <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a> như
+ sau, ví dụ, sẽ thông báo cho Android biết rằng thành phần có thể nhận được dữ liệu ảnh từ một trình cung cấp
+nội dung và sẽ hiển thị nó:
+</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:mimeType="image/*" /&gt;
+    ...
+&lt;/intent-filter&gt;</pre>
+
+<p>
+Vì hầu hết dữ liệu có sẵn đều được cấp phát bởi các trình cung cấp nội dung, những bộ lọc mà
+quy định một kiểu dữ liệu chứ không phải URI có lẽ là phổ biến nhất.
+</p>
+
+<p>
+Một cấu hình phổ biến khác đó là các bộ lọc có một lược đồ và một kiểu dữ liệu.  Ví
+dụ, một phần tử <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>
+như sau thông báo cho Android rằng
+thành phần có thể truy xuất dữ liệu video từ mạng để thực hiện hành động:
+</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:scheme="http" android:type="video/*" /&gt;
+    ...
+&lt;/intent-filter&gt;</pre>
+
+
+
+<h3 id="imatch">So khớp ý định</h3>
+
+<p>Các ý định được so khớp với các bộ lọc ý định không chỉ để khám phá một thành phần
+mục tiêu cần kích hoạt, mà còn để khám phá điều gì đó về tập hợp
+các thành phần trên thiết bị.  Ví dụ, ứng dụng Trang chủ đưa trình khởi chạy ứng dụng
+vào bằng cách tìm tất cả hoạt động có bộ lọc ý định mà quy định hành động
+{@link android.content.Intent#ACTION_MAIN} và thể loại
+{@link android.content.Intent#CATEGORY_LAUNCHER}.</p>
+
+<p>Ứng dụng của bạn có thể sử dụng so khớp ý định theo cách tương tự.
+{@link android.content.pm.PackageManager} có một tập hợp các phương pháp{@code query...()}
+trả về tất cả thành phần có thể chấp nhận một ý định cụ thể, và
+một chuỗi các phương pháp {@code resolve...()} tương tự để xác định thành phần
+tốt nhất nhằm hồi đáp lại một ý định.  Ví dụ,
+{@link android.content.pm.PackageManager#queryIntentActivities
+queryIntentActivities()} sẽ trả về một danh sách tất cả hoạt động có thể thực hiện
+ý định được chuyển qua như một tham đối, và {@link
+android.content.pm.PackageManager#queryIntentServices
+queryIntentServices()} trả về một danh sách dịch vụ tương tự.
+Cả hai phương pháp đều không kích hoạt các thành phần; chúng chỉ liệt kê những thành phần
+có thể hồi đáp.  Có một phương pháp tương tự,
+{@link android.content.pm.PackageManager#queryBroadcastReceivers
+queryBroadcastReceivers()}, dành cho hàm nhận quảng bá.
+</p>
+
+
+
+
diff --git a/docs/html-intl/intl/vi/guide/components/loaders.jd b/docs/html-intl/intl/vi/guide/components/loaders.jd
new file mode 100644
index 0000000..b6d277f
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/components/loaders.jd
@@ -0,0 +1,494 @@
+page.title=Trình tải
+parent.title=Hoạt động
+parent.link=activities.html
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+    <h2>Trong tài liệu này</h2>
+    <ol>
+    <li><a href="#summary">Tổng quan về API Trình tải</a></li>
+    <li><a href="#app">Sử dụng các Trình tải trong một Ứng dụng</a>
+      <ol>
+        <li><a href="#requirements"></a></li>
+        <li><a href="#starting">Khởi động một Trình tải</a></li>
+        <li><a href="#restarting">Khởi động lại một Trình tải</a></li>
+        <li><a href="#callback">Sử dụng các Phương pháp Gọi lại LoaderManager</a></li>
+      </ol>
+    </li>
+    <li><a href="#example">Ví dụ</a>
+       <ol>
+         <li><a href="#more_examples">Thêm Ví dụ</a></li>
+        </ol>
+    </li>
+  </ol>
+    
+  <h2>Lớp khóa</h2>
+    <ol>
+      <li>{@link android.app.LoaderManager}</li>
+      <li>{@link android.content.Loader}</li>
+
+    </ol>   
+    
+    <h2>Các mẫu liên quan</h2>
+   <ol>
+     <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
+LoaderCursor</a></li>
+     <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html">
+LoaderThrottle</a></li>
+   </ol>
+  </div>
+</div>
+
+<p>Được giới thiệu trong Android 3.0, trình tải giúp việc tải dữ liệu không đồng bộ
+trong một hoạt động hoặc phân đoạn trở nên dễ dàng. Trình tải có những đặc điểm sau:</p>
+  <ul>
+    <li>Chúng sẵn có cho mọi {@link android.app.Activity} và {@link
+android.app.Fragment}.</li>
+    <li>Chúng cung cấp khả năng tải dữ liệu không đồng bộ.</li>
+    <li>Chúng theo dõi nguồn dữ liệu của mình và chuyển giao kết quả mới khi nội dung
+thay đổi.</li>
+    <li>Chúng tự động kết nối lại với con chạy của trình tải cuối cùng khi được
+tạo lại sau khi cấu hình thay đổi. Vì thế, chúng không cần truy vấn lại dữ liệu
+của mình.</li>
+  </ul>
+ 
+<h2 id="summary">Tổng quan về API Trình tải</h2>
+
+<p>Có nhiều lớp và giao diện có thể có liên quan trong khi sử dụng
+các trình tải trong một ứng dụng. Chúng được tóm tắt trong bảng này.</p>
+
+<table>
+  <tr>
+    <th>Lớp/Giao diện</th>
+    <th>Mô tả</th>
+  </tr>
+  <tr>
+    <td>{@link android.app.LoaderManager}</td>
+    <td>Một lớp tóm tắt được liên kết với {@link android.app.Activity} hoặc
+{@link android.app.Fragment} để quản lý một hoặc nhiều thực thể {@link
+android.content.Loader}. Nó giúp ứng dụng quản lý
+các thao tác chạy lâu hơn cùng với vòng đời {@link android.app.Activity}
+hoặc {@link android.app.Fragment}; công dụng phổ biến nhất của lớp này là khi dùng với
+{@link android.content.CursorLoader}, tuy nhiên, các ứng dụng được tự do ghi
+trình tải của chính mình để tải các kiểu dữ liệu khác.
+    <br />
+    <br />
+    Chỉ có một {@link android.app.LoaderManager} trên mỗi hoạt động hoặc phân đoạn. Nhưng một {@link android.app.LoaderManager} có thể có
+nhiều trình tải.</td>
+  </tr>
+  <tr>
+    <td>{@link android.app.LoaderManager.LoaderCallbacks}</td>
+    <td>Một giao diện gọi lại để một máy khách tương tác với {@link
+android.app.LoaderManager}. Ví dụ, bạn sử dụng phương pháp gọi lại {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}
+để tạo một trình tải mới.</td>
+  </tr>
+  <tr>
+    <td>{@link android.content.Loader}</td>
+    <td>Một lớp tóm tắt có vai trò thực hiện việc tải dữ liệu không đồng bộ. Đây là
+lớp cơ bản cho một trình tải. Thông thường, bạn sẽ sử dụng {@link
+android.content.CursorLoader}, nhưng bạn có thể triển khai lớp con của chính mình. Trong khi
+các trình tải đang hoạt động, chúng sẽ theo dõi nguồn dữ liệu của mình và chuyển giao
+kết quả mới khi nội dung thay đổi. </td>
+  </tr>
+  <tr>
+    <td>{@link android.content.AsyncTaskLoader}</td>
+    <td>Trình tải tóm tắt có chức năng cung cấp {@link android.os.AsyncTask} để thực hiện công việc.</td>
+  </tr>
+  <tr>
+    <td>{@link android.content.CursorLoader}</td>
+    <td>Một lớp con của {@link android.content.AsyncTaskLoader} có chức năng truy vấn
+{@link android.content.ContentResolver} và trả về một {@link
+android.database.Cursor}. Lớp này triển khai giao thức {@link
+android.content.Loader} theo một cách chuẩn hóa để truy vấn các con chạy,
+xây dựng trên {@link android.content.AsyncTaskLoader} để thực hiện truy vấn con chạy
+trên một luồng nền sao cho nó không chặn UI của ứng dụng. Sử dụng
+trình tải này là cách tốt nhất để tải dữ liệu không đồng bộ từ một {@link
+android.content.ContentProvider}, thay vì phải thực hiện một truy vấn được quản lý thông qua
+phân đoạn hoặc các API của hoạt động.</td>
+  </tr>
+</table>
+
+<p>Các lớp và giao diện trong bảng trên là những thành phần thiết yếu
+mà bạn sẽ sử dụng để triển khai một trình tải trong ứng dụng của mình. Bạn sẽ không cần tất cả chúng
+cho từng trình tải mà bạn tạo lập, nhưng bạn sẽ luôn cần một tham chiếu tới {@link
+android.app.LoaderManager} để khởi tạo một trình tải và triển khai
+một lớp {@link android.content.Loader} chẳng hạn như {@link
+android.content.CursorLoader}. Các phần sau đây trình bày với bạn cách sử dụng những
+lớp và giao diện này trong một ứng dụng.</p>
+
+<h2 id ="app">Sử dụng các Trình tải trong một Ứng dụng</h2>
+<p>Phần này mô tả cách sử dụng các trình tải trong một ứng dụng Android. Một
+ứng dụng sử dụng trình tải thường bao gồm:</p>
+<ul>
+  <li>Một {@link android.app.Activity} hoặc {@link android.app.Fragment}.</li>
+  <li>Một thực thể của {@link android.app.LoaderManager}.</li>
+  <li>Một {@link android.content.CursorLoader} để tải dữ liệu được dự phòng bởi một {@link
+android.content.ContentProvider}. Hoặc cách khác, bạn có thể triển khai lớp con
+của {@link android.content.Loader} hoặc {@link android.content.AsyncTaskLoader} của chính mình để tải
+dữ liệu từ một số nguồn khác.</li>
+  <li>Một triển khai cho {@link android.app.LoaderManager.LoaderCallbacks}.
+Đây là nơi bạn tạo trình tải mới và quản lý các tham chiếu của mình tới các
+trình tải hiện có.</li> 
+<li>Một cách để hiển thị dữ liệu của trình tải, chẳng hạn như {@link
+android.widget.SimpleCursorAdapter}.</li>
+  <li>Một nguồn dữ liệu, chẳng hạn như một {@link android.content.ContentProvider}, khi sử dụng một 
+{@link android.content.CursorLoader}.</li>
+</ul>
+<h3 id="starting">Khởi động một Trình tải</h3>
+
+<p>{@link android.app.LoaderManager} quản lý một hoặc nhiều thực thể {@link
+android.content.Loader} trong một {@link android.app.Activity} hoặc
+{@link android.app.Fragment}. Chỉ có một {@link
+android.app.LoaderManager} trên mỗi hoạt động hoặc phân đoạn.</p> 
+
+<p>Thông thường, bạn
+sẽ khởi tạo một {@link android.content.Loader} bên trong phương pháp {@link
+android.app.Activity#onCreate onCreate()} của hoạt động, hoặc trong phương pháp
+{@link android.app.Fragment#onActivityCreated onActivityCreated()} của phân đoạn. Bạn
+làm điều này như sau:</p>
+
+<pre>// Prepare the loader.  Either re-connect with an existing one,
+// or start a new one.
+getLoaderManager().initLoader(0, null, this);</pre>
+
+<p>Phương pháp {@link android.app.LoaderManager#initLoader initLoader()} sẽ lấy những
+tham số sau:</p>
+<ul>
+  <li>Một ID duy nhất xác định trình tải. Trong ví dụ này, ID là 0.</li>
+<li>Các tham đối tùy chọn để cung cấp cho trình tải khi
+xây dựng (<code>null</code> trong ví dụ này).</li> 
+
+<li>Triển khai {@link android.app.LoaderManager.LoaderCallbacks}, phương pháp mà 
+{@link android.app.LoaderManager} gọi để báo cáo các sự kiện trình tải. Trong ví dụ này
+, lớp cục bộ triển khai giao diện {@link
+android.app.LoaderManager.LoaderCallbacks}, vì thế nó chuyển một tham chiếu
+tới chính nó, {@code this}.</li> 
+</ul>
+<p>Lệnh gọi {@link android.app.LoaderManager#initLoader initLoader()} đảm bảo rằng một trình tải
+được khởi tạo và hiện hoạt. Nó có hai kết quả có thể xảy ra:</p>
+<ul>
+  <li>Nếu trình tải được quy định bởi ID đã tồn tại, trình tải được tạo lập cuối cùng
+sẽ được sử dụng lại.</li>
+  <li>Nếu trình tải được quy định bởi ID <em>không</em> tồn tại,
+{@link android.app.LoaderManager#initLoader initLoader()} sẽ kích khởi phương pháp
+{@link android.app.LoaderManager.LoaderCallbacks}{@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}.
+Đây là nơi bạn triển khai mã để khởi tạo và trả về một trình tải mới.
+Để bàn thêm, hãy xem phần <a href="#onCreateLoader">onCreateLoader</a>.</li>
+</ul>
+<p>Dù trong trường hợp nào, triển khai {@link android.app.LoaderManager.LoaderCallbacks}
+đã cho được liên kết với trình tải, và sẽ được gọi khi
+trạng thái của trình tải thay đổi.  Nếu tại điểm thực hiện lệnh gọi này, hàm gọi đang trong trạng thái
+được khởi động của nó, và trình tải được yêu cầu đã tồn tại và đã khởi tạo
+dữ liệu của nó, khi đó hệ thống sẽ gọi {@link
+android.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()}
+ngay lập tức (trong khi {@link android.app.LoaderManager#initLoader initLoader()}),
+vì thế bạn phải sẵn sàng khi điều này xảy ra. Xem <a href="#onLoadFinished">
+onLoadFinished</a> để thảo luận thêm về lệnh gọi lại này</p>
+
+<p>Lưu ý rằng phương pháp {@link android.app.LoaderManager#initLoader initLoader()}
+sẽ trả về {@link android.content.Loader} đã được tạo lập, nhưng bạn không
+cần bắt lại một tham chiếu tới nó. {@link android.app.LoaderManager} tự động quản lý
+vòng đời của trình tải. {@link android.app.LoaderManager}
+khởi động và dừng tải khi cần và duy trì trạng thái của trình tải
+và nội dung đi kèm của nó. Như hàm ý, bạn hiếm khi tương tác trực tiếp với các trình tải
+(thông qua một ví dụ về việc sử dụng các phương pháp trình tải để tinh chỉnh hành vi
+của một trình tải, hãy xem ví dụ <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a>). 
+Bạn thường sử dụng nhất là các phương pháp {@link
+android.app.LoaderManager.LoaderCallbacks} để can thiệp vào tiến trình tải
+khi diễn ra một sự kiện đặc biệt. Để thảo luận thêm về chủ đề này, hãy xem phần <a href="#callback">Sử dụng Phương pháp Gọi lại LoaderManager</a>.</p>
+
+<h3 id="restarting">Khởi động lại một Trình tải</h3>
+
+<p>Khi bạn sử dụng {@link android.app.LoaderManager#initLoader initLoader()}, như
+trình bày bên trên, nó sử dụng một trình tải hiện hữu với ID được quy định nếu có.
+Nếu không có, nó sẽ tạo một trình tải. Nhưng đôi khi bạn muốn bỏ dữ liệu cũ của mình
+và bắt đầu lại.</p>
+
+<p>Để bỏ dữ liệu cũ của mình, hãy sử dụng {@link
+android.app.LoaderManager#restartLoader restartLoader()}. Ví dụ, việc
+triển khai {@link android.widget.SearchView.OnQueryTextListener} này sẽ khởi động lại
+trình tải khi truy vấn của người dùng thay đổi. Trình tải cần được khởi động lại sao cho
+nó có thể sử dụng bộ lọc tìm kiếm được điều chỉnh để thực hiện một truy vấn mới:</p>
+
+<pre>
+public boolean onQueryTextChanged(String newText) {
+    // Called when the action bar search text has changed.  Update
+    // the search filter, and restart the loader to do a new query
+    // with this filter.
+    mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+    getLoaderManager().restartLoader(0, null, this);
+    return true;
+}</pre>
+
+<h3 id="callback">Sử dụng các Phương pháp Gọi lại LoaderManager</h3>
+
+<p>{@link android.app.LoaderManager.LoaderCallbacks} là một giao diện gọi lại
+cho phép một máy khách tương tác với {@link android.app.LoaderManager}. </p>
+<p>Các trình tải, đặc biệt là {@link android.content.CursorLoader}, được kỳ vọng sẽ
+giữ lại dữ liệu của chúng sau khi bị dừng. Điều này cho phép ứng dụng giữ lại
+dữ liệu của chúng qua hoạt động hoặc các phương pháp {@link android.app.Activity#onStop
+onStop()} và {@link android.app.Activity#onStart onStart()} của phân đoạn, sao cho khi
+người dùng quay lại một ứng dụng, họ không phải chờ dữ liệu
+tải lại. Bạn sử dụng các phương pháp {@link android.app.LoaderManager.LoaderCallbacks}
+khi cần biết khi nào thì nên tạo một trình tải mới, và để thông báo với ứng dụng khi nào
+ thì đến lúc để dừng sử dụng dữ liệu của một trình tải.</p>
+
+<p>{@link android.app.LoaderManager.LoaderCallbacks} bao gồm những phương pháp
+sau:</p>
+<ul>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}  —
+Khởi tạo và trả về một {@link android.content.Loader} mới cho ID đã cho.
+</li></ul>
+<ul>
+  <li> {@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()}
+— Được gọi khi một trình tải được tạo trước đó đã hoàn tất việc tải.
+</li></ul>
+<ul>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}  
+    — Được gọi khi một trình tải được tạo trước đó đang được đặt lại, vì thế mà khiến dữ liệu
+của nó không sẵn có.
+</li>
+</ul>
+<p>Những phương pháp này được mô tả chi tiết hơn trong các phần sau.</p>
+
+<h4 id ="onCreateLoader">onCreateLoader</h4>
+
+<p>Khi bạn định truy cập một trình tải (ví dụ, thông qua {@link
+android.app.LoaderManager#initLoader initLoader()}), nó kiểm tra xem
+trình tải được quy định bởi ID có tồn tại không. Nếu không, nó sẽ kích khởi phương pháp {@link
+android.app.LoaderManager.LoaderCallbacks} {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}. Đây
+là lúc bạn tạo một trình tải mới. Thông thường sẽ có một {@link
+android.content.CursorLoader}, nhưng bạn có thể triển khai lớp con {@link
+android.content.Loader} của chính mình. </p>
+
+<p>Trong ví dụ này, phương pháp gọi lại {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}
+sẽ tạo một {@link android.content.CursorLoader}. Bạn phải xây dựng
+{@link android.content.CursorLoader} bằng cách sử dụng phương pháp hàm dựng của nó mà yêu cầu
+trọn bộ thông tin cần thiết để thực hiện một truy vấn tới {@link
+android.content.ContentProvider}. Cụ thể, nó cần:</p>
+<ul>
+  <li><em>uri</em> — URI của nội dung cần truy xuất. </li>
+  <li><em>dự thảo</em> — Một danh sách các cột sẽ trả về. Việc chuyển
+<code>null</code> sẽ trả về tất cả cột, điều này không hiệu quả. </li>
+  <li><em>lựa chọn</em> — Một bộ lọc khai báo các hàng nào sẽ trả về,
+có định dạng như một mệnh đề SQL WHERE (không gồm chính mệnh đề WHERE). Việc chuyển
+<code>null</code> sẽ trả về tất cả hàng cho URI đã cho. </li>
+  <li><em>selectionArgs</em> — Bạn có thể thêm ?s vào lựa chọn,
+chúng sẽ được thay thế bằng các giá trị từ <em>selectionArgs</em>, theo thứ tự xuất hiện trong
+lựa chọn. Giá trị sẽ được gắn kết thành các Xâu. </li>
+  <li><em>sortOrder</em> — Cách sắp xếp thứ tự các hàng, được định dạng như một mệnh đề SQL
+ORDER BY (không bao gồm chính mệnh đề ORDER BY). Việc chuyển <code>null</code> sẽ
+sử dụng thứ tự sắp xếp mặc định, điều này có thể dẫn đến kết quả không theo thứ tự.</li>
+</ul>
+<p>Ví dụ:</p>
+<pre>
+ // If non-null, this is the current filter the user has provided.
+String mCurFilter;
+...
+public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+    // This is called when a new Loader needs to be created.  This
+    // sample only has one Loader, so we don't care about the ID.
+    // First, pick the base URI to use depending on whether we are
+    // currently filtering.
+    Uri baseUri;
+    if (mCurFilter != null) {
+        baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+                  Uri.encode(mCurFilter));
+    } else {
+        baseUri = Contacts.CONTENT_URI;
+    }
+
+    // Now create and return a CursorLoader that will take care of
+    // creating a Cursor for the data being displayed.
+    String select = &quot;((&quot; + Contacts.DISPLAY_NAME + &quot; NOTNULL) AND (&quot;
+            + Contacts.HAS_PHONE_NUMBER + &quot;=1) AND (&quot;
+            + Contacts.DISPLAY_NAME + &quot; != '' ))&quot;;
+    return new CursorLoader(getActivity(), baseUri,
+            CONTACTS_SUMMARY_PROJECTION, select, null,
+            Contacts.DISPLAY_NAME + &quot; COLLATE LOCALIZED ASC&quot;);
+}</pre>
+<h4 id="onLoadFinished">onLoadFinished</h4>
+
+<p>Phương pháp này được gọi khi một trình tải được tạo trước đó đã hoàn thành việc tải của mình.
+Phương pháp này được bảo đảm sẽ được gọi trước khi giải phóng dữ liệu cuối cùng
+được cung cấp cho trình tải này.  Tại điểm này, bạn nên loại bỏ mọi trường hợp sử dụng
+dữ liệu cũ (do nó sẽ được giải phóng sớm), nhưng không nên 
+tự mình giải phóng dữ liệu do trình tải sở hữu dữ liệu và sẽ đảm nhận việc này.</p>
+
+
+<p>Trình tải sẽ giải phóng dữ liệu sau khi nó biết ứng dụng đang không còn
+sử dụng nó nữa.  Ví dụ, nếu dữ liệu là một con chạy từ một {@link
+android.content.CursorLoader}, bạn không nên tự mình gọi {@link
+android.database.Cursor#close close()} trên dữ liệu đó. Nếu con chạy đang được đặt
+trong một {@link android.widget.CursorAdapter}, bạn nên sử dụng phương pháp {@link
+android.widget.SimpleCursorAdapter#swapCursor swapCursor()} sao cho
+ {@link android.database.Cursor} cũ không bị đóng. Ví dụ:</p>
+
+<pre>
+// This is the Adapter being used to display the list's data.<br
+/>SimpleCursorAdapter mAdapter;
+...
+
+public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
+    // Swap the new cursor in.  (The framework will take care of closing the
+    // old cursor once we return.)
+    mAdapter.swapCursor(data);
+}</pre>
+
+<h4 id="onLoaderReset">onLoaderReset</h4>
+
+<p>Phương pháp này được gọi khi một trình tải được tạo trước đó đang được đặt lại, vì thế mà khiến 
+dữ liệu của nó không sẵn có. Lệnh gọi lại này cho phép bạn tìm hiểu xem khi nào thì dữ liệu
+sẽ được giải phóng để bạn có thể loại bỏ tham chiếu của mình tới nó.  </p>
+<p>Sự triển khai này gọi ra 
+{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}  
+với một giá trị <code>null</code>:</p>
+
+<pre>
+// This is the Adapter being used to display the list's data.
+SimpleCursorAdapter mAdapter;
+...
+
+public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
+    // This is called when the last Cursor provided to onLoadFinished()
+    // above is about to be closed.  We need to make sure we are no
+    // longer using it.
+    mAdapter.swapCursor(null);
+}</pre>
+
+
+<h2 id="example">Ví dụ</h2>
+
+<p>Lấy một ví dụ, sau đây là triển khai đầy đủ của {@link
+android.app.Fragment} có chức năng hiển thị một {@link android.widget.ListView} chứa
+kết quả của một truy vấn đối với trình cung cấp nội dung danh bạ. Nó sử dụng một {@link
+android.content.CursorLoader} để quản lý truy vấn trên trình cung cấp.</p>
+ 
+<p>Để một ứng dụng truy cập danh bạ của một người dùng, như minh họa trong ví dụ này, bản kê khai
+của nó phải bao gồm quyền
+{@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS}.</p>
+
+<pre>
+public static class CursorLoaderListFragment extends ListFragment
+        implements OnQueryTextListener, LoaderManager.LoaderCallbacks&lt;Cursor&gt; {
+
+    // This is the Adapter being used to display the list's data.
+    SimpleCursorAdapter mAdapter;
+
+    // If non-null, this is the current filter the user has provided.
+    String mCurFilter;
+
+    @Override public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        // Give some text to display if there is no data.  In a real
+        // application this would come from a resource.
+        setEmptyText(&quot;No phone numbers&quot;);
+
+        // We have a menu item to show in action bar.
+        setHasOptionsMenu(true);
+
+        // Create an empty adapter we will use to display the loaded data.
+        mAdapter = new SimpleCursorAdapter(getActivity(),
+                android.R.layout.simple_list_item_2, null,
+                new String[] { Contacts.DISPLAY_NAME, Contacts.CONTACT_STATUS },
+                new int[] { android.R.id.text1, android.R.id.text2 }, 0);
+        setListAdapter(mAdapter);
+
+        // Prepare the loader.  Either re-connect with an existing one,
+        // or start a new one.
+        getLoaderManager().initLoader(0, null, this);
+    }
+
+    @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        // Place an action bar item for searching.
+        MenuItem item = menu.add(&quot;Search&quot;);
+        item.setIcon(android.R.drawable.ic_menu_search);
+        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+        SearchView sv = new SearchView(getActivity());
+        sv.setOnQueryTextListener(this);
+        item.setActionView(sv);
+    }
+
+    public boolean onQueryTextChange(String newText) {
+        // Called when the action bar search text has changed.  Update
+        // the search filter, and restart the loader to do a new query
+        // with this filter.
+        mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+        getLoaderManager().restartLoader(0, null, this);
+        return true;
+    }
+
+    @Override public boolean onQueryTextSubmit(String query) {
+        // Don't care about this.
+        return true;
+    }
+
+    @Override public void onListItemClick(ListView l, View v, int position, long id) {
+        // Insert desired behavior here.
+        Log.i(&quot;FragmentComplexList&quot;, &quot;Item clicked: &quot; + id);
+    }
+
+    // These are the Contacts rows that we will retrieve.
+    static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
+        Contacts._ID,
+        Contacts.DISPLAY_NAME,
+        Contacts.CONTACT_STATUS,
+        Contacts.CONTACT_PRESENCE,
+        Contacts.PHOTO_ID,
+        Contacts.LOOKUP_KEY,
+    };
+    public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+        // This is called when a new Loader needs to be created.  This
+        // sample only has one Loader, so we don't care about the ID.
+        // First, pick the base URI to use depending on whether we are
+        // currently filtering.
+        Uri baseUri;
+        if (mCurFilter != null) {
+            baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+                    Uri.encode(mCurFilter));
+        } else {
+            baseUri = Contacts.CONTENT_URI;
+        }
+
+        // Now create and return a CursorLoader that will take care of
+        // creating a Cursor for the data being displayed.
+        String select = &quot;((&quot; + Contacts.DISPLAY_NAME + &quot; NOTNULL) AND (&quot;
+                + Contacts.HAS_PHONE_NUMBER + &quot;=1) AND (&quot;
+                + Contacts.DISPLAY_NAME + &quot; != '' ))&quot;;
+        return new CursorLoader(getActivity(), baseUri,
+                CONTACTS_SUMMARY_PROJECTION, select, null,
+                Contacts.DISPLAY_NAME + &quot; COLLATE LOCALIZED ASC&quot;);
+    }
+
+    public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
+        // Swap the new cursor in.  (The framework will take care of closing the
+        // old cursor once we return.)
+        mAdapter.swapCursor(data);
+    }
+
+    public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
+        // This is called when the last Cursor provided to onLoadFinished()
+        // above is about to be closed.  We need to make sure we are no
+        // longer using it.
+        mAdapter.swapCursor(null);
+    }
+}</pre>
+<h3 id="more_examples">Thêm Ví dụ</h3>
+
+<p>Có một vài mẫu khác trong <strong>ApiDemos</strong> để
+minh họa cách sử dụng các trình tải:</p>
+<ul>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
+LoaderCursor</a> — Một phiên bản hoàn chỉnh của
+đoạn mã HTML trình bày ở trên.</li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> — Một ví dụ về cách sử dụng điều chỉnh để giảm
+số truy vấn mà một trình cung cấp nội dung thực hiện khi dữ liệu của nó thay đổi.</li>
+</ul>
+
+<p>Để biết thông tin về việc tải xuống và cài đặt các mẫu SDK, hãy xem phần <a href="http://developer.android.com/resources/samples/get.html"> Tải
+Mẫu</a>. </p>
+
diff --git a/docs/html-intl/intl/vi/guide/components/processes-and-threads.jd b/docs/html-intl/intl/vi/guide/components/processes-and-threads.jd
new file mode 100644
index 0000000..390ca15
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/components/processes-and-threads.jd
@@ -0,0 +1,411 @@
+page.title=Tiến trình và Luồng
+page.tags=vòng đời, nền
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Trong tài liệu này</h2>
+<ol>
+<li><a href="#Processes">Tiến trình</a>
+  <ol>
+    <li><a href="#Lifecycle">Vòng đời tiến trình</a></li>
+  </ol>
+</li>
+<li><a href="#Threads">Luồng</a>
+  <ol>
+    <li><a href="#WorkerThreads">Luồng trình thực hiện</a></li>
+    <li><a href="#ThreadSafe">Phương pháp an toàn với luồng</a></li>
+  </ol>
+</li>
+<li><a href="#IPC">Truyền thông Liên Tiến trình</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Khi một thành phần ứng dụng bắt đầu và ứng dụng không có bất kỳ thành phần nào khác
+đang chạy, hệ thống Android sẽ khởi động một tiến trình Linux mới cho ứng dụng bằng một luồng
+thực thi đơn lẻ. Theo mặc định, tất cả thành phần của cùng ứng dụng sẽ chạy trong cùng tiến trình và luồng
+(được gọi là luồng "chính"). Nếu một thành phần ứng dụng bắt đầu và đã tồn tại một tiến trình
+cho ứng dụng đó (bởi một thành phần khác từ ứng dụng đã tồn tại), khi đó thành phần được
+bắt đầu bên trong tiến trình đó và sử dụng cùng luồng thực thi. Tuy nhiên, bạn có thể sắp xếp cho
+các thành phần khác nhau trong ứng dụng của mình để chạy trong các tiến trình riêng biệt, và bạn có thể tạo thêm
+luồng cho bất kỳ tiến trình nào.</p>
+
+<p>Tài liệu này trình bày về cách các tiến trình và luồng vận hành trong một ứng dụng Android.</p>
+
+
+<h2 id="Processes">Tiến trình</h2>
+
+<p>Theo mặc định, tất cả thành phần của cùng ứng dụng sẽ chạy trong cùng tiến trình và hầu hết các ứng dụng
+sẽ không thay đổi điều này. Tuy nhiên, nếu bạn thấy rằng mình cần kiểm soát một thành phần
+cụ thể thuộc về một tiến trình nào đó, bạn có thể làm vậy trong tệp bản kê khai.</p>
+
+<p>Mục nhập bản kê khai đối với mỗi loại phần tử thành phần&mdash;<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a>, <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code
+&lt;service&gt;}</a>, <a href="{@docRoot}guide/topics/manifest/receiver-element.html">{@code
+&lt;receiver&gt;}</a>, và <a href="{@docRoot}guide/topics/manifest/provider-element.html">{@code
+&lt;provider&gt;}</a>&mdash;sẽ hỗ trợ một thuộc tính {@code android:process} mà có thể quy định một
+tiến trình mà thành phần đó sẽ chạy trong đó. Bạn có thể đặt thuộc tính này sao cho từng thành phần chạy
+trong chính tiến trình của nó hoặc sao cho một số thành phần chia sẻ một tiến trình trong khi các thành phần khác thì không.  Bạn cũng có thể đặt
+{@code android:process} sao cho các thành phần của những ứng dụng khác nhau chạy trong cùng
+tiến trình&mdash;với điều kiện rằng ứng dụng chia sẻ cùng ID người dùng Linux và được ký bằng cùng các
+chứng chỉ.</p>
+
+<p>Phần tử <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code
+&lt;application&gt;}</a> cũng hỗ trợ một thuộc tính {@code android:process}, để đặt một
+giá trị mặc định áp dụng cho tất cả thành phần.</p>
+
+<p>Android có thể quyết định tắt một tiến trình tại một thời điểm nào đó, khi bộ nhớ thấp và theo yêu cầu của các
+tiến trình khác đang phục vụ người dùng tức thì hơn. Các thành phần
+ứng dụng đang chạy trong tiến trình bị tắt bỏ thì sau đó sẽ bị hủy.  Tiến trình được
+khởi động lại cho những thành phần đó khi lại có việc cho chúng thực hiện.</p>
+
+<p>Khi quyết định bỏ những tiến trình nào, hệ thống Android sẽ cân nhắc tầm quan trọng tương đối so với
+người dùng.  Ví dụ, hệ thống sẵn sàng hơn khi tắt một tiến trình lưu trữ các hoạt động không còn
+hiển thị trên màn hình, so với một tiến trình lưu trữ các hoạt động đang hiển thị. Vì thế, quyết định về việc có
+chấm dứt một tiến trình hay không phụ thuộc vào trạng thái của các thành phần đang chạy trong tiến trình đó. Các quy tắc
+được sử dụng để quyết định sẽ chấm dứt tiến trình nào được trình bày ở bên dưới. </p>
+
+
+<h3 id="Lifecycle">Vòng đời tiến trình</h3>
+
+<p>Hệ thống Android cố gắng duy trì một tiến trình ứng dụng lâu nhất có thể, nhưng
+cuối cùng thì nó cũng cần loại bỏ các tiến trình cũ để lấy lại bộ nhớ cho các tiến trình mới hoặc quan trọng hơn.  Để
+xác định giữ lại những tiến trình nào
+và loại bỏ những tiến trình nào, hệ thống sẽ đặt từng tiến trình vào một "phân cấp tầm quan trọng" dựa trên
+những thành phần đang chạy trong tiến trình và trạng thái của những thành phần đó.  Những tiến trình có tầm quan trọng
+thấp nhất bị loại bỏ trước, rồi đến những tiến trình có tầm quan trọng thấp thứ hai, và cứ thế tiếp tục, miễn là còn cần thiết
+để khôi phục tài nguyên của hệ thống.</p>
+
+<p>Có năm cấp trong phân cấp tầm quan trọng. Danh sách sau trình bày các loại
+tiến trình khác nhau theo thứ tự tầm quan trọng (tiến trình thứ nhất là <em>quan trọng nhất</em> và được
+<em>tắt bỏ sau cùng</em>):</p>
+
+<ol>
+  <li><b>Tiến trình tiền cảnh</b>
+    <p>Một tiến trình được yêu cầu cho việc mà người dùng đang thực hiện.  Một
+      tiến trình được coi là đang trong tiền cảnh nếu bất kỳ điều nào sau đây là đúng:</p>
+
+      <ul>
+        <li>Nó lưu trữ một {@link android.app.Activity} mà người dùng đang tương tác với (phương pháp của {@link
+android.app.Activity}, {@link android.app.Activity#onResume onResume()}, đã được
+gọi).</li>
+
+        <li>Nó lưu trữ một {@link android.app.Service} gắn kết với hoạt động mà người dùng đang
+tương tác với.</li>
+
+        <li>Nó lưu trữ một {@link android.app.Service} đang chạy "trong tiền cảnh"&mdash;mà
+dịch vụ đã gọi {@link android.app.Service#startForeground startForeground()}.
+
+        <li>Nó lưu trữ một {@link android.app.Service} mà đang thực thi một trong các lệnh
+gọi lại của vòng đời của nó ({@link android.app.Service#onCreate onCreate()}, {@link android.app.Service#onStart
+onStart()}, hoặc {@link android.app.Service#onDestroy onDestroy()}).</li>
+
+        <li>Nó lưu trữ một {@link android.content.BroadcastReceiver} mà đang thực thi phương pháp {@link
+        android.content.BroadcastReceiver#onReceive onReceive()} của nó.</li>
+    </ul>
+
+    <p>Nhìn chung, tại bất kỳ thời điểm xác định nào cũng chỉ tồn tại một vài tiến trình tiền cảnh.  Chúng chỉ bị tắt bỏ
+như một giải pháp cuối cùng&mdash;nếu bộ nhớ quá thấp tới mức chúng đều không thể tiếp tục chạy được.  Nhìn chung, tại thời điểm
+đó, thiết bị đã đạt tới trạng thái phân trang bộ nhớ, vì thế việc tắt bỏ một số tiến trình tiền cảnh là
+bắt buộc để đảm bảo giao diện người dùng có phản hồi.</p></li>
+
+  <li><b>Tiến trình hiển thị</b>
+    <p>Một tiến trình mà không có bất kỳ thành phần tiền cảnh nào, nhưng vẫn có thể
+      ảnh hưởng tới nội dung mà người dùng nhìn thấy trên màn hình. Một tiến trình được coi là hiển thị nếu một trong hai
+      điều kiện sau là đúng:</p>
+
+      <ul>
+        <li>Nó lưu trữ một {@link android.app.Activity} mà không nằm trong tiền cảnh, nhưng vẫn
+hiển thị với người dùng (phương pháp {@link android.app.Activity#onPause onPause()} của nó đã được gọi). 
+Điều này có thể xảy ra, ví dụ, nếu hoạt động tiền cảnh đã bắt đầu một hộp thoại, nó cho phép
+hoạt động trước được nhìn thấy phía sau nó.</li>
+
+        <li>Nó lưu trữ một {@link android.app.Service} được gắn kết với một hoạt động
+hiển thị (hoặc tiền cảnh).</li>
+      </ul>
+
+      <p>Một tiến trình tiền cảnh được coi là cực kỳ quan trọng và sẽ không bị tắt bỏ trừ khi làm vậy
+là bắt buộc để giữ cho tất cả tiến trình tiền cảnh chạy. </p>
+    </li>
+
+  <li><b>Tiến trình dịch vụ</b>
+    <p>Một tiến trình mà đang chạy một dịch vụ đã được bắt đầu bằng phương pháp {@link
+android.content.Context#startService startService()} và không rơi vào một trong hai
+thể loại cao hơn. Mặc dù tiến trình dịch vụ không trực tiếp gắn với bất kỳ thứ gì mà người dùng thấy, chúng
+thường đang làm những việc mà người dùng quan tâm đến (chẳng hạn như phát nhạc chạy ngầm hoặc
+tải xuống dữ liệu trên mạng), vì thế hệ thống vẫn giữ chúng chạy trừ khi không có đủ bộ nhớ để
+duy trì chúng cùng với tất cả tiến trình tiền cảnh và hiển thị. </p>
+  </li>
+
+  <li><b>Tiến trình nền</b>
+    <p>Một tiến trình lưu trữ một hoạt động mà hiện tại không hiển thị với người dùng (phương pháp
+{@link android.app.Activity#onStop onStop()} của hoạt động đã được gọi). Những tiến trình này không có tác động
+trực tiếp tới trải nghiệm người dùng, và hệ thống có thể bỏ chúng đi vào bất cứ lúc nào để lấy lại bộ nhớ cho một
+tiến trình tiền cảnh,
+hiển thị hoặc dịch vụ. Thường thì có nhiều tiến trình ngầm đang chạy, vì thế chúng được giữ
+trong một danh sách LRU (ít sử dụng gần đây nhất) để đảm bảo rằng tiến trình với hoạt động
+mà người dùng nhìn thấy gần đây nhất là tiến trình cuối cùng sẽ bị tắt bỏ. Nếu một hoạt động triển khai các phương pháp vòng đời của nó
+đúng cách, và lưu trạng thái hiện tại của nó, việc tắt bỏ tiến trình của hoạt động đó sẽ không có ảnh hưởng có thể thấy được tới
+trải nghiệm người dùng, vì khi người dùng điều hướng lại hoạt động đó, hoạt động sẽ khôi phục
+tất cả trạng thái hiển thị của nó. Xem tài liệu <a href="{@docRoot}guide/components/activities.html#SavingActivityState">Hoạt động</a>
+để biết thông tin về việc lưu và khôi phục trạng thái.</p>
+  </li>
+
+  <li><b>Tiến trình trống</b>
+    <p>Một tiến trình mà không giữ bất kỳ thành phần ứng dụng hiện hoạt nào.  Lý do duy nhất để giữ cho
+kiểu tiến trình này hoạt động đó là nhằm mục đích lưu bộ nhớ ẩn, để cải thiện thời gian khởi động vào lần tới khi thành phần
+cần chạy trong nó.  Hệ thống thường tắt bỏ những tiến trình này để cân bằng tài nguyên tổng thể
+của hệ thống giữa các bộ đệm ẩn tiến trình và bộ đệm ẩn nhân liên quan.</p>
+  </li>
+</ol>
+
+
+  <p>Android xếp hạng một tiến trình ở mức cao nhất mà nó có thể, dựa vào tầm quan trọng của
+các thành phần đang hoạt động trong tiến trình đó.  Ví dụ, nếu một tiến trình lưu giữ một dịch vụ và hoạt động
+hiển thị, tiến trình đó sẽ được xếp hạng là tiến trình hiển thị chứ không phải tiến trình dịch vụ.</p>
+
+  <p>Ngoài ra, xếp hạng của một tiến trình có thể tăng bởi các tiến trình khác phụ thuộc vào
+nó&mdash;một tiến trình mà đang phục vụ một tiến trình khác không thể bị xếp thấp hơn tiến trình mà nó
+đang phục vụ. Ví dụ, nếu một trình cung cấp nội dung trong tiến trình A đang phục vụ một máy khách trong tiến trình B, hoặc nếu một
+dịch vụ trong tiến trình A được gắn kết với một thành phần trong tiến trình B, ít nhất tiến trình A sẽ luôn được coi
+là quan trọng như tiến trình B.</p>
+
+  <p>Do một tiến trình đang chạy một dịch vụ được xếp hạng cao hơn một tiến trình có các hoạt động nền,
+một hoạt động mà khởi động một thao tác nhấp giữ có thể làm tốt việc khởi động một <a href="{@docRoot}guide/components/services.html">dịch vụ</a> cho thao tác đó, thay vì
+chỉ tạo một luồng trình thực hiện&mdash;nhất là khi thao tác đó sẽ có thể diễn ra lâu hơn hoạt động.
+Ví dụ, một hoạt động mà đang tải một ảnh lên một trang web nên bắt đầu một dịch vụ để thực hiện
+việc tải lên sao cho việc tải lên có thể tiếp tục chạy ngầm ngay cả khi người dùng rời khỏi hoạt động.
+Việc sử dụng một dịch vụ sẽ bảo đảm rằng thao tác ít nhất sẽ có mức ưu tiên như "tiến trình dịch vụ",
+không phụ thuộc vào điều xảy ra với hoạt động. Đây cũng chính là lý do hàm nhận quảng bá nên
+sử dụng dịch vụ thay vì chỉ đưa các thao tác tốn thời gian vào một luồng.</p>
+
+
+
+
+<h2 id="Threads">Luồng</h2>
+
+<p>Khi một ứng dụng được khởi chạy, hệ thống sẽ tạo một luồng thực thi cho ứng dụng,
+gọi là luồng "chính." Luồng này rất quan trọng bởi nó phụ trách phân phối các sự kiện tới
+những widget giao diện người dùng phù hợp, bao gồm các sự kiện vẽ. Nó cũng là luồng mà
+trong đó ứng dụng của bạn tương tác với các thành phần từ bộ công cụ UI của Android (các thành phần từ các gói {@link
+android.widget} và {@link android.view}). Như vậy, luồng chính đôi khi cũng được gọi là
+luồng UI.</p>
+
+<p>Hệ thống <em>không</em> tạo một luồng riêng cho từng thực thể của thành phần. Tất cả
+thành phần chạy trong cùng tiến trình đều được khởi tạo trong luồng UI, và các lệnh gọi của hệ thống tới
+từng thành phần được phân phối từ luồng đó. Hệ quả là các phương pháp hồi đáp lại lệnh
+gọi lại của hệ thống (chẳng hạn như {@link android.view.View#onKeyDown onKeyDown()} để báo cáo hành động của người dùng
+hoặc một phương pháp gọi lại vòng đời) sẽ luôn chạy trong luồng UI của tiến trình.</p>
+
+<p>Ví dụ, khi người dùng chạm vào một nút trên màn hình, luồng UI của ứng dụng của bạn sẽ phân phối
+sự kiện chạm tới widget, đến lượt mình, widget sẽ đặt trạng thái được nhấn và đăng một yêu cầu vô hiệu hóa tới 
+hàng đợi sự kiện. Luồng UI loại yêu cầu khỏi hàng đợi và thông báo với widget rằng nó nên tự vẽ lại
+.</p>
+
+<p>Khi ứng dụng của bạn thực hiện công việc nặng để hồi đáp tương tác của người dùng, mô hình luồng đơn nhất
+này có thể dẫn đến hiệu năng kém trừ khi bạn triển khai ứng dụng của mình một cách phù hợp. Cụ thể, nếu
+mọi thứ đang xảy ra trong luồng UI, việc thực hiện những thao tác kéo dài như truy cập mạng hay
+truy vấn cơ sở dữ liệu sẽ chặn toàn bộ UI. Khi luồng bị chặn, không sự kiện nào có thể được phân phối,
+bao gồm cả sự kiện vẽ. Từ phương diện của người dùng, ứng dụng
+có vẻ như đang bị treo. Thậm chí tệ hơn, nếu luồng UI bị chặn trong lâu hơn vài giây
+(hiện tại là khoảng 5 giây), người dùng sẽ được hiển thị hộp thoại không phổ biến "<a href="http://developer.android.com/guide/practices/responsiveness.html">ứng dụng
+không phản hồi</a>" (ANR). Khi đó, người dùng có thể quyết định thoát ứng dụng của mình và gỡ cài đặt nó
+nếu họ không thoải mái.</p>
+
+<p>Ngoài ra, bộ công cụ UI của Android <em>không</em> an toàn với luồng. Vì vậy, bạn không được thao tác
+UI của mình từ một luồng trình thực hiện&mdash;bạn phải thực hiện tất cả thao tác đối với giao diện người dùng của mình từ luồng
+UI. Vì vậy, có hai quy tắc đơn giản đối với mô hình luồng đơn lẻ của Android:</p>
+
+<ol>
+<li>Không được chặn luồng UI
+<li>Không được truy cập bộ công cụ UI của Android từ bên ngoài luồng UI
+</ol>
+
+<h3 id="WorkerThreads">Luồng trình thực hiện</h3>
+
+<p>Vì mô hình luồng đơn lẻ nêu trên, điều thiết yếu đối với tính phản hồi của UI
+ứng dụng của bạn đó là bạn không được chặn luồng UI. Nếu bạn có thao tác cần thực hiện
+không mang tính chất tức thời, bạn nên đảm bảo thực hiện chúng trong các luồng riêng (luồng “chạy ngầm" hoặc
+"trình thực hiện").</p>
+
+<p>Ví dụ, bên dưới là một số mã cho một đối tượng theo dõi nhấp có chức năng tải xuống một hình ảnh từ một luồng
+riêng và hiển thị nó trong một {@link android.widget.ImageView}:</p>
+
+<pre>
+public void onClick(View v) {
+    new Thread(new Runnable() {
+        public void run() {
+            Bitmap b = loadImageFromNetwork("http://example.com/image.png");
+            mImageView.setImageBitmap(b);
+        }
+    }).start();
+}
+</pre>
+
+<p>Thoạt đầu, điều này có vẻ như diễn ra ổn thỏa, vì nó tạo một luồng mới để xử lý thao tác
+mạng. Tuy nhiên, nó vi phạm quy tắc thứ hai của mô hình luồng đơn nhất: <em>không được truy cập
+bộ công cụ UI của Android từ bên ngoài luồng UI</em>&mdash;mẫu này sửa đổi {@link
+android.widget.ImageView} từ luồng trình thực hiện thay vì từ luồng UI. Điều này có thể dẫn đến
+hành vi bất ngờ, không được định nghĩa mà có thể gây khó khăn và tốn thời gian theo dõi.</p>
+
+<p>Để sửa vấn đề này, Android giới thiệu một vài cách để truy cập luồng UI từ các luồng
+khác. Sau đây là một danh sách các phương pháp có thể trợ giúp:</p>
+
+<ul>
+<li>{@link android.app.Activity#runOnUiThread(java.lang.Runnable)
+Activity.runOnUiThread(Runnable)}</li>
+<li>{@link android.view.View#post(java.lang.Runnable) View.post(Runnable)}</li>
+<li>{@link android.view.View#postDelayed(java.lang.Runnable, long) View.postDelayed(Runnable,
+long)}</li>
+</ul>
+
+<p>Ví dụ, bạn có thể sửa mã trên bằng cách sử dụng phương pháp {@link
+android.view.View#post(java.lang.Runnable) View.post(Runnable)}:</p>
+
+<pre>
+public void onClick(View v) {
+    new Thread(new Runnable() {
+        public void run() {
+            final Bitmap bitmap = loadImageFromNetwork("http://example.com/image.png");
+            mImageView.post(new Runnable() {
+                public void run() {
+                    mImageView.setImageBitmap(bitmap);
+                }
+            });
+        }
+    }).start();
+}
+</pre>
+
+<p>Giờ thì triển khai này đã an toàn với luồng: thao tác mạng được thực hiện từ một luồng riêng
+trong khi {@link android.widget.ImageView} được thao tác từ luồng UI.</p>
+
+<p>Tuy nhiên, khi mà sự phức tạp của thao tác tăng lên, kiểu mã này có thể bị phức tạp hóa và
+khó duy trì. Để xử lý những tương tác phức tạp hơn bằng một luồng trình thực hiện, bạn có thể cân nhắc
+sử dụng một {@link android.os.Handler} trong luồng trình thực hiện của mình, để xử lý các thư được chuyển từ luồng
+UI. Mặc dù vậy, giải pháp tốt nhất là mở rộng lớp {@link android.os.AsyncTask},
+điều này sẽ đơn giản hóa việc thực thi các tác vụ của luồng trình thực hiện cần tương tác với UI.</p>
+
+
+<h4 id="AsyncTask">Sử dụng AsyncTask</h4>
+
+<p>{@link android.os.AsyncTask} cho phép bạn thực hiện công việc không đồng bộ trên giao diện
+người dùng của mình. Nó thực hiện các thao tác chặn trong một luồng trình thực hiện rồi phát hành kết quả trên
+luồng UI mà không yêu cầu bạn tự xử lý các luồng và/hoặc trình xử lý.</p>
+
+<p>Để sử dụng nó, bạn phải tạo lớp con {@link android.os.AsyncTask} và triển khai phương pháp gọi lại {@link
+android.os.AsyncTask#doInBackground doInBackground()}, phương pháp này chạy trong một tập hợp
+các luồng chạy ngầm. Để cập nhật UI của mình, bạn nên triển khai {@link
+android.os.AsyncTask#onPostExecute onPostExecute()}, nó sẽ mang lại kết quả từ {@link
+android.os.AsyncTask#doInBackground doInBackground()} và chạy trong luồng UI, vì thế bạn có thể nâng cấp
+UI của mình một cách an toàn. Sau đó, bạn có thể chạy tác vụ bằng cách gọi {@link android.os.AsyncTask#execute execute()}
+từ luồng UI.</p>
+
+<p>Ví dụ, bạn có thể triển khai ví dụ trước bằng cách sử dụng {@link android.os.AsyncTask} theo
+cách này:</p>
+
+<pre>
+public void onClick(View v) {
+    new DownloadImageTask().execute("http://example.com/image.png");
+}
+
+private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
+    /** The system calls this to perform work in a worker thread and
+      * delivers it the parameters given to AsyncTask.execute() */
+    protected Bitmap doInBackground(String... urls) {
+        return loadImageFromNetwork(urls[0]);
+    }
+    
+    /** The system calls this to perform work in the UI thread and delivers
+      * the result from doInBackground() */
+    protected void onPostExecute(Bitmap result) {
+        mImageView.setImageBitmap(result);
+    }
+}
+</pre>
+
+<p>Lúc này, UI an toàn và mã đơn giản hơn, vì nó tách riêng công việc thành
+phần sẽ được thực hiện trên một luồng trình thực hiện và phần sẽ được thực hiện trên luồng UI.</p>
+
+<p>Bạn nên đọc tài liệu tham khảo {@link android.os.AsyncTask}để hiểu đầy đủ về
+cách sử dụng lớp này, nhưng sau đây là phần trình bày tổng quan nhanh về hoạt động của nó:</p>
+
+<ul>
+<li>Bạn có thể quy định loại tham số, các giá trị tiến độ, và giá trị
+cuối cùng của tác vụ, bằng cách sử dụng các kiểu chung</li>
+<li>Phương pháp {@link android.os.AsyncTask#doInBackground doInBackground()} sẽ tự động thực thi
+trên một luồng trình thực hiện</li>
+<li>{@link android.os.AsyncTask#onPreExecute onPreExecute()}, {@link
+android.os.AsyncTask#onPostExecute onPostExecute()}, và {@link
+android.os.AsyncTask#onProgressUpdate onProgressUpdate()} đều được gọi ra trên luồng UI</li>
+<li>Giá trị được trả về bởi {@link android.os.AsyncTask#doInBackground doInBackground()} được gửi tới
+{@link android.os.AsyncTask#onPostExecute onPostExecute()}</li>
+<li>Bạn có thể gọi {@link android.os.AsyncTask#publishProgress publishProgress()} vào bất cứ lúc nào trong {@link
+android.os.AsyncTask#doInBackground doInBackground()} để thực thi {@link
+android.os.AsyncTask#onProgressUpdate onProgressUpdate()} trên luồng UI</li>
+<li>Bạn có thể hủy bỏ tác vụ vào bất cứ lúc nào từ bất kỳ luồng nào</li>
+</ul>
+
+<p class="caution"><strong>Chú ý:</strong> Một vấn đề khác mà bạn có thể gặp phải khi sử dụng một luồng
+trình thực hiện đó là những lần khởi động lại bất ngờ trong hoạt động của bạn do một <a href="{@docRoot}guide/topics/resources/runtime-changes.html">thay đổi trong cấu hình thời gian chạy</a>
+(chẳng hạn như khi người dùng thay đổi hướng màn hình), điều này có thể làm hỏng luồng trình thực hiện của bạn. Để
+xem cách bạn có thể duy trì tác vụ của mình khi diễn ra một trong những lần khởi động lại này và cách hủy bỏ tác vụ cho phù hợp
+khi hoạt động bị hủy, hãy xem mã nguồn cho ứng dụng mẫu <a href="http://code.google.com/p/shelves/">Shelves</a>.</p>
+
+
+<h3 id="ThreadSafe">Phương pháp an toàn với luồng</h3>
+
+<p> Trong một số tình huống, các phương pháp bạn triển khai có thể được gọi ra từ nhiều hơn một luồng, và vì thế
+phải được ghi sao cho an toàn với luồng. </p>
+
+<p>Điều này chủ yếu đúng với các phương pháp mà có thể được gọi từ xa&mdash;chẳng hạn như các phương pháp trong một <a href="{@docRoot}guide/components/bound-services.html">dịch vụ gắn kết</a>. Khi một lệnh gọi trên một
+phương pháp được triển khai trong một {@link android.os.IBinder} khởi đầu trong cùng tiến trình mà
+{@link android.os.IBinder IBinder} đang chạy, phương pháp đó sẽ được thực thi trong luồng của hàm gọi.
+Tuy nhiên, khi lệnh gọi khởi đầu trong một tiến trình khác, phương pháp sẽ được thực thi trong một luồng được chọn từ
+một tập hợp các luồng mà hệ thống duy trì trong cùng tiến trình như {@link android.os.IBinder
+IBinder} (nó không được thực thi trong luồng UI của tiến trình).  Ví dụ, trong khi phương pháp
+{@link android.app.Service#onBind onBind()} của dịch vụ sẽ được gọi từ luồng UI của tiến trình
+của dịch vụ, các phương pháp được triển khai trong đối tượng mà {@link android.app.Service#onBind
+onBind()} trả về (ví dụ, một lớp con triển khai các phương pháp RPC) sẽ được gọi từ các luồng
+trong tập hợp. Vì một dịch vụ có thể có nhiều hơn một máy khách, nhiều hơn một luồng tập hợp có thể sử dụng
+cùng một phương pháp {@link android.os.IBinder IBinder} tại cùng một thời điểm.  Vì thế, các phương pháp {@link android.os.IBinder
+IBinder} phải được triển khai sao cho an toàn với luồng.</p>
+
+<p> Tương tự, một trình cung cấp nội dung có thể nhận các yêu cầu dữ liệu khởi nguồn trong các tiến trình khác.
+Mặc dù các lớp {@link android.content.ContentResolver} và {@link android.content.ContentProvider}
+ẩn đi chi tiết về cách truyền thông liên tiến trình được quản lý, các phương pháp {@link
+android.content.ContentProvider} hồi đáp những yêu cầu đó&mdash;các phương pháp {@link
+android.content.ContentProvider#query query()}, {@link android.content.ContentProvider#insert
+insert()}, {@link android.content.ContentProvider#delete delete()}, {@link
+android.content.ContentProvider#update update()}, và {@link android.content.ContentProvider#getType
+getType()}&mdash;được gọi từ một tập hợp luồng trong tiến trình của trình cung cấp nội dung, chứ không phải luồng
+UI cho tiến trình đó.  Vì những phương pháp này có thể được gọi từ bất kỳ số lượng luồng nào tại
+cùng thời điểm, chúng cũng phải được triển khai sao cho an toàn với luồng. </p>
+
+
+<h2 id="IPC">Truyền thông Liên Tiến trình</h2>
+
+<p>Android cung cấp một cơ chế cho truyền thông liên tiến trình (IPC) bằng cách sử dụng các lệnh gọi thủ tục từ xa
+(RPC), trong đó một phương pháp được gọi bởi một hoạt động hoặc thành phần ứng dụng khác, nhưng được thực thi
+từ xa (trong một tiến trình khác), với bất kỳ kết quả nào được trả về
+hàm gọi. Điều này đòi hỏi việc phân tích một lệnh gọi phương pháp và dữ liệu của nó về cấp độ mà hệ điều hành
+có thể hiểu được, truyền phát nó từ tiến trình và khoảng trống địa chỉ cục bộ đến tiến trình và
+khoảng trống địa chỉ từ xa, sau đó tổ hợp lại và phát hành lại lệnh gọi ở đó.  Sau đó, các giá trị trả về được
+phát theo hướng ngược lại.  Android cung cấp tất cả mã để thực hiện những giao tác
+IPC này, vì thế bạn có thể tập trung vào việc định nghĩa và triển khai giao diện lập trình RPC. </p>
+
+<p>Để thực hiện IPC, ứng dụng của bạn phải liên kết với một dịch vụ, bằng cách sử dụng {@link
+android.content.Context#bindService bindService()}. Để biết thêm thông tin, hãy xem hướng dẫn cho nhà phát triển <a href="{@docRoot}guide/components/services.html">Dịch vụ</a>.</p>
+
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For information about how to perform work in the background for an indefinite period of time
+(without a user interface), continue with the <b><a
+href="{@docRoot}guide/components/services.html">Services</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/vi/guide/components/recents.jd b/docs/html-intl/intl/vi/guide/components/recents.jd
new file mode 100644
index 0000000..0a17614
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/components/recents.jd
@@ -0,0 +1,256 @@
+page.title=Màn hình Tổng quan
+page.tags="recents","overview"
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>Trong tài liệu này</h2>
+  <ol>
+    <li><a href="#adding">Thêm Tác vụ vào Màn hình Tổng quan</a>
+      <ol>
+        <li><a href="#flag-new-doc">Sử dụng cờ Ý định để thêm một tác vụ</a></li>
+        <li><a href="#attr-doclaunch">Sử dụng thuộc tính Hoạt động để thêm một tác vụ</a></li>
+      </ol>
+    </li>
+    <li><a href="#removing">Loại bỏ Tác vụ</a>
+      <ol>
+        <li><a href="#apptask-remove">Sử dụng lớp AppTask để loại bỏ tác vụ</a></li>
+        <li><a href="#retain-finished">Giữ lại tác vụ đã hoàn thành</a></li>
+      </ol>
+    </li>
+  </ol>
+
+  <h2>Lớp khóa</h2>
+  <ol>
+    <li>{@link android.app.ActivityManager.AppTask}</li>
+    <li>{@link android.content.Intent}</li>
+  </ol>
+
+  <h2>Mã mẫu</h2>
+  <ol>
+    <li><a href="{@docRoot}samples/DocumentCentricApps/index.html">Ứng dụng tập trung vào tài liệu</a></li>
+  </ol>
+
+</div>
+</div>
+
+<p>Màn hình tổng quan (còn được gọi là màn hình gần đây, danh sách tác vụ gần đây, hay ứng dụng gần đây)
+là một UI cấp hệ thống liệt kê các <a href="{@docRoot}guide/components/activities.html">
+hoạt động</a> và <a href="{@docRoot}guide/components/tasks-and-back-stack.html">tác vụ</a> mới được truy cập gần đây. Người dùng
+có thể điều hướng qua danh sách này và chọn một tác vụ để tiếp tục, hoặc người dùng có thể loại bỏ một tác vụ khỏi
+danh sách bằng cách trượt nhanh nó đi. Với việc phát hành Android 5.0 (API mức 21), nhiều thực thể của
+hoạt động tương tự chứa các tài liệu khác nhau có thể xuất hiện dưới dạng các tác vụ trong màn hình tổng quan. Ví dụ,
+Google Drive có thể có một tác vụ cho từng tài liệu trong một vài tài liệu Google. Mỗi tài liệu xuất hiện thành một
+tác vụ trong màn hình tổng quan.</p>
+
+<img src="{@docRoot}images/components/recents.png" alt="" width="284" />
+<p class="img-caption"><strong>Hình 1.</strong> Màn hình tổng quan hiển thị ba tài liệu Google Drive
+, mỗi tài liệu được biểu diễn như một tác vụ riêng.</p>
+
+<p>Thường thì bạn sẽ cho phép hệ thống định nghĩa cách tác vụ và
+hoạt động của mình được biểu diễn như thế nào trong màn hình tổng quan, và bạn không cần sửa đổi hành vi này.
+Tuy nhiên, ứng dụng của bạn có thể xác định cách thức và thời gian các hoạt động xuất hiện trong màn hình tổng quan. Lớp
+{@link android.app.ActivityManager.AppTask} cho phép bạn quản lý tác vụ, và cờ hoạt động của
+lớp {@link android.content.Intent} cho phép bạn quy định khi nào thì một hoạt động được thêm hoặc loại bỏ khỏi
+màn hình tổng quan. Đồng thời, thuộc tính <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
+&lt;activity&gt;</a></code> cho phép bạn đặt hành vi trong bản kê khai.</p>
+
+<h2 id="adding">Thêm Tác vụ vào Màn hình Tổng quan</h2>
+
+<p>Sử dụng cờ của lớp {@link android.content.Intent} để thêm một tác vụ cho phép kiểm soát nhiều hơn
+đối với thời điểm và cách thức một tài liệu được mở hoặc mở lại trong màn hình tổng quan. Khi sử dụng các thuộc tính
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+, bạn có thể chọn giữa luôn mở tài liệu trong một tác vụ mới hoặc sử dụng lại một
+tác vụ hiện có cho tài liệu.</p>
+
+<h3 id="flag-new-doc">Sử dụng cờ Ý định để thêm một tác vụ</h3>
+
+<p>Khi tạo một tài liệu mới cho hoạt động của bạn, bạn gọi phương pháp
+{@link android.app.ActivityManager.AppTask#startActivity(android.content.Context, android.content.Intent, android.os.Bundle) startActivity()}
+của lớp {@link android.app.ActivityManager.AppTask}, chuyển cho nó ý định có
+chức năng khởi chạy hoạt động. Để chèn một ngắt lô-gic sao cho hệ thống coi hoạt động của bạn như một tác vụ
+mới trong màn hình tổng quan, hãy chuyển cờ {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+trong phương pháp {@link android.content.Intent#addFlags(int) addFlags()} của {@link android.content.Intent}
+có chức năng khởi chạy hoạt động.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Cờ {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+thay thế cờ {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET},
+được rút bớt kể từ phiên bản Android 5.0 (API mức 21).</p>
+
+<p>Nếu bạn đặt cờ {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} khi tạo
+tài liệu mới, hệ thống sẽ luôn tạo một tác vụ mới lấy hoạt động mục tiêu đó làm gốc.
+Thiết đặt này cho phép mở cùng tài liệu trong nhiều hơn một tác vụ. Đoạn mã sau thể hiện
+cách mà hoạt động chính thực hiện điều này:</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+DocumentCentricActivity.java</a></p>
+<pre>
+public void createNewDocument(View view) {
+      final Intent newDocumentIntent = newDocumentIntent();
+      if (useMultipleTasks) {
+          newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
+      }
+      startActivity(newDocumentIntent);
+  }
+
+  private Intent newDocumentIntent() {
+      boolean useMultipleTasks = mCheckbox.isChecked();
+      final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
+      newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
+      newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());
+      return newDocumentIntent;
+  }
+
+  private static int incrementAndGet() {
+      Log.d(TAG, "incrementAndGet(): " + mDocumentCounter);
+      return mDocumentCounter++;
+  }
+}
+</pre>
+
+<p class="note"><strong>Lưu ý:</strong> Các hoạt động được khởi chạy bằng cờ {@code FLAG_ACTIVITY_NEW_DOCUMENT}
+phải có giá trị thuộc tính {@code android:launchMode="standard"} (mặc định) được đặt trong
+bản kê khai.</p>
+
+<p>Khi hoạt động chính khởi chạy một hoạt động mới, hệ thống sẽ tìm kiếm thông qua các tác vụ hiện tại để
+xem tác vụ nào có ý định khớp với tên thành phần ý định và dữ liệu Ý định cho hoạt động đó. Nếu tác vụ
+không được tìm thấy, hoặc ý định chứa cờ {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}
+thì một tác vụ mới sẽ được tạo lấy hoạt động làm gốc. Nếu tìm thấy, nó sẽ mang tác vụ đó
+tới phía trước và chuyển ý định mới tới {@link android.app.Activity#onNewIntent onNewIntent()}.
+Hoạt động mới sẽ nhận ý định và tạo một tài liệu mới trong màn hình tổng quan, như trong ví dụ
+sau:</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+NewDocumentActivity.java</a></p>
+<pre>
+&#64;Override
+protected void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_new_document);
+    mDocumentCount = getIntent()
+            .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0);
+    mDocumentCounterTextView = (TextView) findViewById(
+            R.id.hello_new_document_text_view);
+    setDocumentCounterText(R.string.hello_new_document_counter);
+}
+
+&#64;Override
+protected void onNewIntent(Intent intent) {
+    super.onNewIntent(intent);
+    /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this activity
+    is reused to create a new document.
+     */
+    setDocumentCounterText(R.string.reusing_document_counter);
+}
+</pre>
+
+
+<h3 id="#attr-doclaunch">Sử dụng thuộc tính hoạt động để thêm một tác vụ</h3>
+
+<p>Một hoạt động cũng có thể quy định trong bản kê khai của nó rằng nó luôn khởi chạy vào một tác vụ mới bằng cách sử dụng
+thuộc tính <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+, <a href="{@docRoot}guide/topics/manifest/activity-element.html#dlmode">
+{@code android:documentLaunchMode}</a>. Thuộc tính này có bốn giá trị tạo ra hiệu ứng
+sau khi người dùng mở một tài liệu bằng ứng dụng:</p>
+
+<dl>
+  <dt>"{@code intoExisting}"</dt>
+  <dd>Hoạt động sử dụng lại một tác vụ hiện có cho tài liệu. Điều này giống như khi thiết đặt cờ
+  {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} mà <em>không</em> thiết đặt cờ
+  {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}, như được mô tả trong phần
+  <a href="#flag-new-doc">Sử dụng cờ Ý định để thêm một tác vụ</a> bên trên.</dd>
+
+  <dt>"{@code always}"</dt>
+  <dd>Hoạt động tạo một tác vụ mới cho tài liệu, ngay cả khi tài liệu đã được mở. Sử dụng
+  giá trị này giống như thiết đặt cả cờ {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+  và {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}.</dd>
+
+  <dt>"{@code none”}"</dt>
+  <dd>Hoạt động không tạo một tác vụ mới cho tài liệu. Màn hình tổng quan xử lý hoạt động
+  như theo mặc định: nó hiển thị một tác vụ đơn lẻ cho ứng dụng, tác vụ này
+  tiếp tục từ bất kỳ hoạt động nào mà người dùng đã gọi ra cuối cùng.</dd>
+
+  <dt>"{@code never}"</dt>
+  <dd>Hoạt động không tạo một tác vụ mới cho tài liệu. Việc thiết đặt giá trị này sẽ khống chế
+  hành vi của {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+  và cờ {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}, nếu một trong hai được đặt
+  trong ý định, và màn hình tổng quan sẽ hiển thị một tác vụ đơn lẻ cho ứng dụng, tác vụ này tiếp tục từ
+  bất kỳ hoạt động nào mà người dùng đã gọi ra cuối cùng.</dd>
+</dl>
+
+<p class="note"><strong>Lưu ý:</strong> Đối với những giá trị ngoài {@code none} và {@code never} 
+hoạt động phải được định nghĩa bằng {@code launchMode="standard"}. Nếu thuộc tính này không được quy định thì
+{@code documentLaunchMode="none"} sẽ được sử dụng.</p>
+
+<h2 id="removing">Loại bỏ Tác vụ</h2>
+
+<p>Theo mặc định, một tác vụ tài liệu sẽ tự động được loại bỏ khỏi màn hình tổng quan khi hoạt động của nó
+hoàn thành. Bạn có thể khống chế hành vi này bằng lớp {@link android.app.ActivityManager.AppTask},
+bằng một cờ {@link android.content.Intent}, hoặc bằng một thuộc tính<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
+&lt;activity&gt;</a></code>.</p>
+
+<p>Bạn có thể luôn loại trừ hoàn toàn một tác vụ khỏi màn hình tổng quan bằng cách thiết đặt thuộc tính 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+, <a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">
+{@code android:excludeFromRecents}</a> thành {@code true}.</p>
+
+<p>Bạn có thể thiết đặt số lượng tác vụ tối đa mà ứng dụng của bạn có thể bao gồm trong màn hình tổng quan bằng cách đặt thuộc tính
+ <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+ <a href="{@docRoot}guide/topics/manifest/activity-element.html#maxrecents">{@code android:maxRecents}
+</a> thành một giá trị số nguyên. Mặc định là 16. Khi đạt được số tác vụ tối đa,
+tác vụ ít sử dụng gần đây nhất sẽ bị loại bỏ khỏi màn hình tổng quan. Giá trị tối đa {@code android:maxRecents}
+bằng 50 (25 trên các thiết bị có bộ nhớ thấp); giá trị thấp hơn 1 không hợp lệ.</p>
+
+<h3 id="#apptask-remove">Sử dụng lớp AppTask để loại bỏ tác vụ</h3>
+
+<p>Trong hoạt động mà tạo một tác vụ mới trong màn hình tổng quan, bạn có thể
+quy định khi nào thì loại bỏ tác vụ và hoàn thành tất cả các hoạt động gắn liền với nó bằng cách gọi
+phương pháp {@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()}.</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+NewDocumentActivity.java</a></p>
+<pre>
+public void onRemoveFromRecents(View view) {
+    // The document is no longer needed; remove its task.
+    finishAndRemoveTask();
+}
+</pre>
+
+<p class="note"><strong>Lưu ý:</strong> Sử dụng phương pháp
+{@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()}
+sẽ khống chế việc sử dụng tag {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS},
+như được trình bày ở bên dưới.</p>
+
+<h3 id="#retain-finished">Giữ lại tác vụ đã hoàn thành</h3>
+
+<p>Nếu bạn muốn giữ lại một tác vụ trong màn hình tổng quan, ngay cả khi hoạt động của nó đã hoàn thành, hãy chuyển
+cờ {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} trong phương pháp
+{@link android.content.Intent#addFlags(int) addFlags()} của Ý định mà khởi chạy hoạt động.</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+DocumentCentricActivity.java</a></p>
+<pre>
+private Intent newDocumentIntent() {
+    final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
+    newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
+      android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS);
+    newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());
+    return newDocumentIntent;
+}
+</pre>
+
+<p>Để đạt được cùng kết quả như vậy, hãy đặt thuộc tính
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#autoremrecents">
+{@code android:autoRemoveFromRecents}</a> thành {@code false}. Giá trị mặc định bằng {@code true}
+đối với các hoạt động tài liệu, và {@code false} đối với các hoạt động thông thường. Việc sử dụng thuộc tính này sẽ khống chế
+cờ {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS}, như đã trình bày trước đó.</p>
+
+
+
+
+
+
+
diff --git a/docs/html-intl/intl/vi/guide/components/services.jd b/docs/html-intl/intl/vi/guide/components/services.jd
new file mode 100644
index 0000000..9e3e6c7
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/components/services.jd
@@ -0,0 +1,813 @@
+page.title=Dịch vụ
+@jd:body
+
+<div id="qv-wrapper">
+<ol id="qv">
+<h2>Trong tài liệu này</h2>
+<ol>
+<li><a href="#Basics">Nội dung Cơ bản</a></li>
+<ol>
+  <li><a href="#Declaring">Khai báo một dịch vụ trong bản kê khai</a></li>
+</ol>
+<li><a href="#CreatingAService">Tạo một Dịch vụ được Bắt đầu</a>
+  <ol>
+    <li><a href="#ExtendingIntentService">Mở rộng lớp IntentService</a></li>
+    <li><a href="#ExtendingService">Mở rộng lớp Dịch vụ</a></li>
+    <li><a href="#StartingAService">Bắt đầu một dịch vụ</a></li>
+    <li><a href="#Stopping">Dừng một dịch vụ</a></li>
+  </ol>
+</li>
+<li><a href="#CreatingBoundService">Tạo một Dịch vụ Gắn kết</a></li>
+<li><a href="#Notifications">Gửi Thông báo tới Người dùng</a></li>
+<li><a href="#Foreground">Chạy một Dịch vụ trong Tiền cảnh</a></li>
+<li><a href="#Lifecycle">Quản lý Vòng đời của một Dịch vụ</a>
+<ol>
+  <li><a href="#LifecycleCallbacks">Triển khai gọi lại vòng đời</a></li>
+</ol>
+</li>
+</ol>
+
+<h2>Lớp khóa</h2>
+<ol>
+  <li>{@link android.app.Service}</li>
+  <li>{@link android.app.IntentService}</li>
+</ol>
+
+<h2>Mẫu</h2>
+<ol>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.html">{@code
+      ServiceStartArguments}</a></li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+      LocalService}</a></li>
+</ol>
+
+<h2>Xem thêm</h2>
+<ol>
+<li><a href="{@docRoot}guide/components/bound-services.html">Dịch vụ Gắn kết</a></li>
+</ol>
+
+</div>
+
+
+<p>{@link android.app.Service} là một thành phần ứng dụng có khả năng thực hiện
+các thao tác chạy kéo dài trong nền và không cung cấp giao diện người dùng. Một
+thành phần ứng dụng khác có thể bắt đầu một dịch vụ và nó sẽ tiếp tục chạy ngầm ngay cả khi người dùng
+chuyển sang một ứng dụng khác. Ngoài ra, một thành phần có thể gắn kết với một dịch vụ để
+tương tác với nó và thậm chí thực hiện truyền thông liên tiến trình (IPC). Ví dụ, một dịch vụ có thể
+xử lý các giao dịch mạng, phát nhạc, thực hiện I/O tệp, hoặc tương tác với một trình cung cấp nội dung, tất cả
+đều xuất phát từ nền.</p>
+
+<p>Về cơ bản, một dịch vụ có thể có hai dạng:</p>
+
+<dl>
+  <dt>Được bắt đầu</dt>
+  <dd>Dịch vụ có dạng "được bắt đầu" khi một thành phần ứng dụng (chẳng hạn như một hoạt động) bắt đầu nó bằng cách
+gọi {@link android.content.Context#startService startService()}. Sau khi được bắt đầu, dịch vụ
+có thể chạy ngầm vô thời hạn, ngay cả khi thành phần bắt đầu nó bị hủy. Thông thường,
+dịch vụ được bắt đầu sẽ thực hiện một thao tác đơn lẻ và không trả về kết quả cho hàm gọi.
+Ví dụ, nó có thể tải xuống hoặc tải lên một tệp thông qua mạng. Khi thao tác được hoàn thành, dịch vụ
+tự nó sẽ dừng lại.</dd>
+  <dt>Gắn kết</dt>
+  <dd>Dịch vụ có dạng "gắn kết" khi một thành phần ứng dụng gắn kết với nó bằng cách gọi {@link
+android.content.Context#bindService bindService()}. Dịch vụ gắn kết sẽ đưa ra
+một giao diện máy khách-máy chủ cho phép các thành phần tương tác với dịch vụ, gửi yêu cầu, nhận kết quả, và thậm chí
+làm vậy thông qua truyền thông liên tiến trình (IPC). Dịch vụ gắn kết chỉ chạy trong khi
+một thành phần ứng dụng khác được gắn kết với nó. Nhiều thành phần có thể gắn kết cùng lúc với dịch vụ,
+nhưng khi tất cả bị bỏ gắn kết thì dịch vụ sẽ bị hủy.</dd>
+</dl>
+
+<p>Mặc dù tài liệu này thường đề cập tới hai loại dịch vụ riêng rẽ, dịch vụ
+của bạn có thể hoạt động theo cả hai cách&mdash;nó có thể được bắt đầu (để chạy vô thời hạn) và cũng cho phép gắn kết.
+Đó đơn giản là vấn đề bạn có triển khai một cặp phương pháp gọi lại hay không: {@link
+android.app.Service#onStartCommand onStartCommand()} để cho phép thành phần bắt đầu nó và {@link
+android.app.Service#onBind onBind()} để cho phép nó gắn kết.</p>
+
+<p>Không phụ thuộc vào việc ứng dụng của bạn được bắt đầu, gắn kết, hay cả hai, bất kỳ thành phần ứng dụng nào
+cũng có thể sử dụng dịch vụ (thậm chí từ một ứng dụng riêng biệt), giống như cách mà bất kỳ thành phần nào cũng có thể sử dụng
+một hoạt động&mdash;bằng cách bắt đầu nó bằng một {@link android.content.Intent}. Tuy nhiên, bạn có thể khai báo
+dịch vụ là riêng tư trong tệp bản kê khai, và chặn truy cập từ các ứng dụng khác. Điều này
+được trình bày kỹ hơn trong phần về <a href="#Declaring">Khai báo dịch vụ trong
+bản kê khai</a>.</p>
+
+<p class="caution"><strong>Chú ý:</strong> Một dịch vụ chạy trong
+luồng chính của tiến trình lưu trữ của nó&mdash;dịch vụ <strong>không</strong> tạo luồng của chính nó
+và <strong>không</strong> chạy trong một tiến trình riêng biệt (trừ khi bạn quy định khác). Điều này có nghĩa
+là, nếu dịch vụ của bạn định thực hiện bất kỳ công việc nặng nào đối với CPU hay chặn các thao tác (chẳng hạn như phát lại MP3
+hay kết nối mạng), bạn nên tạo một luồng mới bên trong dịch vụ để thực hiện công việc đó. Bằng cách sử dụng
+một luồng riêng biệt, bạn sẽ giảm rủi ro gặp lỗi Ứng dụng Không Hồi đáp (ANR) và luồng chính của ứng dụng có thể
+vẫn dành riêng cho tương tác giữa người dùng với các hoạt động của bạn.</p>
+
+
+<h2 id="Basics">Nội dung Cơ bản</h2>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>Bạn nên sử dụng dịch vụ hay luồng?</h3>
+  <p>Dịch vụ đơn thuần là một thành phần có thể chạy ngầm ngay cả khi người dùng không
+đang tương tác với ứng dụng của bạn. Vì thế, bạn chỉ nên tạo một dịch vụ nếu đó là điều bạn
+cần.</p>
+  <p>Nếu bạn cần thực hiện công việc bên ngoài luồng chính của mình, nhưng chỉ trong khi người dùng đang tương tác với
+ứng dụng của bạn, thì thay vào đó, bạn nên tạo một luồng mới chứ không phải một dịch vụ. Ví
+dụ, nếu bạn muốn phát một bản nhạc, nhưng chỉ trong khi hoạt động của bạn đang chạy, bạn có thể tạo
+một luồng trong {@link android.app.Activity#onCreate onCreate()}, bắt đầu chạy nó trong {@link
+android.app.Activity#onStart onStart()}, rồi dừng nó trong {@link android.app.Activity#onStop
+onStop()}. Cũng xem xét việc sử dụng {@link android.os.AsyncTask} hoặc {@link android.os.HandlerThread},
+thay vì sử dụng lớp {@link java.lang.Thread} truyền thống. Xem tài liệu <a href="{@docRoot}guide/components/processes-and-threads.html#Threads">Tiến trình và
+Luồng</a> để biết thêm thông tin về luồng.</p>
+  <p>Hãy nhớ rằng nếu bạn sử dụng một dịch vụ, nó vẫn chạy trong luồng chính của ứng dụng của bạn theo
+mặc định, vì thế bạn vẫn nên tạo một luồng mới trong dịch vụ nếu nó thực hiện các thao tác tăng cường hoặc
+chặn.</p>
+</div>
+</div>
+
+<p>Để tạo một dịch vụ, bạn phải tạo một lớp con của {@link android.app.Service} (hoặc một
+trong các lớp con hiện tại của nó). Trong triển khai của mình, bạn cần khống chế một số phương pháp gọi lại có chức năng
+xử lý những khía cạnh chính trong vòng đời của dịch vụ và cung cấp một cơ chế để các thành phần gắn kết với
+dịch vụ đó, nếu phù hợp. Những phương pháp gọi lại quan trọng nhất mà bạn nên khống chế là:</p>
+
+<dl>
+  <dt>{@link android.app.Service#onStartCommand onStartCommand()}</dt>
+    <dd>Hệ thống sẽ gọi phương pháp này khi một thành phần khác, chẳng hạn như một hoạt động,
+yêu cầu dịch vụ phải được bắt đầu, bằng cách gọi {@link android.content.Context#startService
+startService()}. Sau khi phương pháp này thực thi, dịch vụ sẽ được bắt đầu và có thể chạy vô thời hạn trong
+nền. Nếu bạn triển khai điều này, bạn có trách nhiệm dừng dịch vụ khi
+công việc của nó được hoàn thành, bằng cách gọi {@link android.app.Service#stopSelf stopSelf()} hoặc {@link
+android.content.Context#stopService stopService()}. (Nếu chỉ muốn cung cấp khả năng gắn kết, bạn không
+cần triển khai phương pháp này.)</dd>
+  <dt>{@link android.app.Service#onBind onBind()}</dt>
+    <dd>Hệ thống sẽ gọi phương pháp này khi một thành phần khác muốn gắn kết với
+dịch vụ (chẳng hạn như để thực hiện RPC), bằng cách gọi {@link android.content.Context#bindService
+bindService()}. Trong triển khai phương pháp này của mình, bạn phải cung cấp một giao diện mà các máy khách
+sử dụng để giao tiếp với dịch vụ, bằng cách trả về {@link android.os.IBinder}. Bạn phải luôn
+triển khai phương pháp này, nhưng nếu bạn không muốn cho phép gắn kết thì bạn nên trả về rỗng.</dd>
+  <dt>{@link android.app.Service#onCreate()}</dt>
+    <dd>Hệ thống sẽ gọi phương pháp này khi dịch vụ được tạo lập lần đầu, để thực hiện quy trình thiết lập một lần
+(trước khi nó có thể gọi hoặc {@link android.app.Service#onStartCommand onStartCommand()} hoặc
+{@link android.app.Service#onBind onBind()}). Nếu dịch vụ đã đang chạy, phương pháp này sẽ không được
+gọi.</dd>
+  <dt>{@link android.app.Service#onDestroy()}</dt>
+    <dd>Hệ thống sẽ gọi phương pháp này khi dịch vụ không còn được sử dụng và đang bị hủy.
+Dịch vụ của bạn sẽ triển khai phương pháp này để dọn dẹp mọi tài nguyên như luồng, đối tượng theo dõi
+được đăng ký, hàm nhận, v.v... Đây là lệnh gọi cuối cùng mà dịch vụ nhận được.</dd>
+</dl>
+
+<p>Nếu một thành phần bắt đầu dịch vụ bằng cách gọi {@link
+android.content.Context#startService startService()} (kết quả là một lệnh gọi tới {@link
+android.app.Service#onStartCommand onStartCommand()}), khi đó dịch vụ
+sẽ vẫn chạy tới khi tự nó dừng bằng {@link android.app.Service#stopSelf()} hoặc một
+thành phần khác dừng nó bằng cách gọi {@link android.content.Context#stopService stopService()}.</p>
+
+<p>Nếu một thành phần gọi
+{@link android.content.Context#bindService bindService()} để tạo dịch vụ (và {@link
+android.app.Service#onStartCommand onStartCommand()} <em>không</em> được gọi), khi đó dịch vụ sẽ chỉ chạy
+khi nào mà thành phần đó còn gắn kết với nó. Sau khi dịch vụ được bỏ gắn kết khỏi tất cả máy khách, hệ thống
+sẽ hủy nó.</p>
+
+<p>Hệ thống Android sẽ buộc dừng một dịch vụ chỉ khi bộ nhớ thấp và nó phải khôi phục tài nguyên
+của hệ thống cho hoạt động có tiêu điểm của người dùng. Nếu dịch vụ gắn kết với một hoạt động mà có tiêu điểm
+của người dùng, khi đó sẽ có ít khả năng nó sẽ bị tắt bỏ hơn, và nếu dịch vụ được khai báo là <a href="#Foreground">chạy trong tiền cảnh</a> (đề cập sau), khi đó nó sẽ hầu như không bao giờ bị tắt bỏ.
+Mặt khác, nếu dịch vụ được bắt đầu và chạy trong thời gian dài, hệ thống sẽ hạ thấp vị trí của nó
+trong danh sách tác vụ chạy ngầm qua thời gian và dịch vụ sẽ rất có thể bị
+tắt bỏ&mdash;nếu dịch vụ của bạn được bắt đầu, khi đó bạn phải thiết kế nó để
+xử lý việc khởi động lại do hệ thống một cách uyển chuyển. Nếu hệ thống tắt bỏ dịch vụ của bạn, nó sẽ khởi động lại dịch vụ ngay khi tài nguyên
+có sẵn trở lại (mặc dù điều này cũng phụ thuộc vào giá trị mà bạn trả về từ {@link
+android.app.Service#onStartCommand onStartCommand()}, vấn đề này sẽ được bàn sau). Để biết thêm thông tin
+về thời điểm mà hệ thống có thể hủy một dịch vụ, hãy xem tài liệu <a href="{@docRoot}guide/components/processes-and-threads.html">Tiến trình và Luồng</a>
+.</p>
+
+<p>Trong những phần sau, bạn sẽ thấy cách bạn có thể tạo từng loại dịch vụ và cách sử dụng
+nó từ các thành phần ứng dụng khác.</p>
+
+
+
+<h3 id="Declaring">Khai báo một dịch vụ trong bản kê khai</h3>
+
+<p>Giống như hoạt động (và các thành phần khác), bạn phải khai báo tất cả dịch vụ trong tệp bản kê khai
+của ứng dụng của mình.</p>
+
+<p>Để khai báo dịch vụ của bạn, hãy thêm một phần tử <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> làm
+con của phần tử <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>
+. Ví dụ:</p>
+
+<pre>
+&lt;manifest ... &gt;
+  ...
+  &lt;application ... &gt;
+      &lt;service android:name=".ExampleService" /&gt;
+      ...
+  &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+
+<p>Xem tham chiếu phần tử <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> 
+để biết thêm thông tin về việc khai báo dịch vụ của bạn trong bản kê khai.</p>
+
+<p>Có các thuộc tính khác mà bạn có thể bao gồm trong phần tử <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> để
+định nghĩa các tính chất chẳng hạn như những quyền cần để bắt đầu dịch vụ và tiến trình mà
+dịch vụ sẽ chạy trong đó. Thuộc tính <a href="{@docRoot}guide/topics/manifest/service-element.html#nm">{@code android:name}</a>
+là thuộc tính bắt buộc duy nhất&mdash;nó quy định tên lớp của dịch vụ. Một khi
+bạn phát hành ứng dụng của mình, bạn không nên thay đổi tên này, vì nếu bạn làm vậy, bạn sẽ gặp rủi ro làm gãy
+mã do sự phụ thuộc vào các ý định biểu thị để bắt đầu hoặc gắn kết dịch vụ (đọc bài đăng blog, <a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">Những Điều
+Không Thay Đổi Được</a>).
+
+<p>Để đảm bảo ứng dụng của bạn được bảo mật, <strong>luôn sử dụng một ý định biểu thị khi bắt đầu hoặc gắn kết
+{@link android.app.Service}</strong> của bạn và không được khai báo bộ lọc ý định cho dịch vụ. Nếu
+điều trọng yếu là bạn phải cho phép một chút không rõ ràng về dịch vụ nào sẽ bắt đầu, bạn có thể
+cung cấp bộ lọc ý định cho dịch vụ của mình và loại bỏ tên thành phần khỏi {@link
+android.content.Intent}, nhưng sau đó bạn có thể đặt gói cho ý định bằng {@link
+android.content.Intent#setPackage setPackage()}, điều này cung cấp sự không rõ ràng vừa đủ cho
+dịch vụ mục tiêu đó.</p>
+
+<p>Ngoài ra, bạn có thể đảm bảo rằng dịch vụ của mình chỉ sẵn có cho ứng dụng của bạn bằng cách
+đưa vào thuộc tính <a href="{@docRoot}guide/topics/manifest/service-element.html#exported">{@code android:exported}</a>
+và đặt nó thành {@code "false"}. Điều này sẽ dừng việc các ứng dụng khác bắt đầu
+dịch vụ của bạn, ngay cả khi sử dụng một ý định biểu thị.</p>
+
+
+
+
+<h2 id="CreatingStartedService">Tạo một Dịch vụ được Bắt đầu</h2>
+
+<p>Dịch vụ được bắt đầu là dịch vụ mà một thành phần khác bắt đầu bằng cách gọi {@link
+android.content.Context#startService startService()}, kết quả là một lệnh gọi tới phương pháp
+{@link android.app.Service#onStartCommand onStartCommand()} của dịch vụ.</p>
+
+<p>Khi một dịch vụ được bắt đầu, nó có một vòng đời độc lập với
+thành phần đã bắt đầu nó và dịch vụ có thể chạy ngầm vô thời hạn, ngay cả khi
+thành phần bắt đầu nó bị hủy. Như vậy, dịch vụ sẽ tự dừng khi làm xong công việc của nó
+bằng cách gọi {@link android.app.Service#stopSelf stopSelf()}, hoặc một thành phần khác có thể dừng nó
+bằng cách gọi {@link android.content.Context#stopService stopService()}.</p>
+
+<p>Một thành phần ứng dụng chẳng hạn như một hoạt động có thể bắt đầu dịch vụ bằng cách gọi {@link
+android.content.Context#startService startService()} và chuyển một {@link android.content.Intent}
+trong đó quy định dịch vụ và bao gồm bất kỳ dữ liệu nào để cho dịch vụ sử dụng. Dịch vụ sẽ nhận
+{@link android.content.Intent} này trong phương pháp {@link android.app.Service#onStartCommand
+onStartCommand()}.</p>
+
+<p>Ví dụ, giả sử một hoạt động cần lưu một số dữ liệu vào cơ sở dữ liệu trực tuyến. Hoạt động có thể
+bắt đầu một dịch vụ đồng hành và truyền cho nó dữ liệu để lưu bằng cách chuyển một ý định tới {@link
+android.content.Context#startService startService()}. Dịch vụ sẽ nhận ý định trong {@link
+android.app.Service#onStartCommand onStartCommand()}, kết nối với Internet và thực hiện
+giao tác cơ sở dữ liệu. Khi giao tác được thực hiện, dịch vụ sẽ tự dừng lại và nó bị
+hủy.</p>
+
+<p class="caution"><strong>Chú ý:</strong> Một dịch vụ sẽ chạy trong cùng tiến trình như ứng dụng
+mà nó được khai báo trong đó và trong luồng chính của ứng dụng đó theo mặc định. Vì vậy, nếu dịch vụ của bạn
+thực hiện các thao tác tăng cường hoặc chặn trong khi người dùng tương tác với một hoạt động từ cùng
+ứng dụng, dịch vụ sẽ làm chậm hiệu năng của hoạt động. Để tránh tác động tới hiệu năng của
+ứng dụng, bạn nên bắt đầu một luồng mới bên trong dịch vụ.</p>
+
+<p>Thông thường, có hai lớp mà bạn có thể mở rộng để tạo một dịch vụ được bắt đầu:</p>
+<dl>
+  <dt>{@link android.app.Service}</dt>
+  <dd>Đây là lớp cơ bản cho tất cả dịch vụ. Khi bạn mở rộng lớp này, điều quan trọng là
+bạn tạo một luồng mới để thực hiện tất cả công việc của dịch vụ trong đó, do dịch vụ sử dụng luồng chính
+của ứng dụng của bạn, theo mặc định, điều này có thể làm chậm hiệu năng của bất kỳ hoạt động nào mà ứng dụng
+của bạn đang chạy.</dd>
+  <dt>{@link android.app.IntentService}</dt>
+  <dd>Đây là một lớp con của {@link android.app.Service} có chức năng sử dụng một luồng trình thực hiện để xử lý tất cả
+yêu cầu bắt đầu một cách lần lượt. Đây là lựa chọn tốt nhất nếu bạn không yêu cầu dịch vụ của mình
+xử lý đồng thời nhiều yêu cầu. Tất cả những gì bạn cần làm đó là triển khai {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}, nó sẽ nhận ý định cho mỗi
+yêu cầu bắt đầu để bạn có thể thực hiện công việc chạy ngầm.</dd>
+</dl>
+
+<p>Các phần sau mô tả cách bạn có thể triển khai dịch vụ của mình bằng cách sử dụng một trong các cách cho những lớp
+này.</p>
+
+
+<h3 id="ExtendingIntentService">Mở rộng lớp IntentService</h3>
+
+<p>Vì phần lớn các dịch vụ được bắt đầu không cần xử lý nhiều yêu cầu một cách đồng thời
+(điều này thực sự có thể là một kịch bản tạo đa luồng nguy hiểm), có lẽ tốt nhất là nếu bạn
+triển khai dịch vụ của mình bằng cách sử dụng lớp {@link android.app.IntentService}.</p>
+
+<p>{@link android.app.IntentService} làm điều sau đây:</p>
+
+<ul>
+  <li>Tạo một luồng trình thực hiện mặc định để thực thi tất cả ý định được chuyển tới {@link
+android.app.Service#onStartCommand onStartCommand()} tách riêng với luồng
+chính của ứng dụng của bạn.</li>
+  <li>Tạo một hàng đợi công việc để chuyển lần lượt từng ý định tới triển khai {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} của bạn, vì thế bạn không bao giờ phải
+lo lắng về vấn đề tạo đa luồng.</li>
+  <li>Dừng dịch vụ sau khi tất cả yêu cầu bắt đầu đều đã được xử lý, vì thế bạn không bao giờ phải gọi
+{@link android.app.Service#stopSelf}.</li>
+  <li>Cung cấp triển khai mặc định của {@link android.app.IntentService#onBind onBind()} mà
+trả về rỗng.</li>
+  <li>Cung cấp triển khai mặc định của {@link android.app.IntentService#onStartCommand
+onStartCommand()} mà gửi ý định tới hàng đợi công việc rồi tới triển khai {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} của bạn.</li>
+</ul>
+
+<p>Tất cả đều nói lên một thực tế rằng tất cả những việc bạn cần làm đó là triển khai {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} để thực hiện công việc mà
+máy khách cung cấp. (Mặc dù bạn cũng cần cung cấp một hàm dựng nhỏ cho dịch vụ.)</p>
+
+<p>Sau đây là ví dụ về triển khai {@link android.app.IntentService}:</p>
+
+<pre>
+public class HelloIntentService extends IntentService {
+
+  /**
+   * A constructor is required, and must call the super {@link android.app.IntentService#IntentService}
+   * constructor with a name for the worker thread.
+   */
+  public HelloIntentService() {
+      super("HelloIntentService");
+  }
+
+  /**
+   * The IntentService calls this method from the default worker thread with
+   * the intent that started the service. When this method returns, IntentService
+   * stops the service, as appropriate.
+   */
+  &#64;Override
+  protected void onHandleIntent(Intent intent) {
+      // Normally we would do some work here, like download a file.
+      // For our sample, we just sleep for 5 seconds.
+      long endTime = System.currentTimeMillis() + 5*1000;
+      while (System.currentTimeMillis() &lt; endTime) {
+          synchronized (this) {
+              try {
+                  wait(endTime - System.currentTimeMillis());
+              } catch (Exception e) {
+              }
+          }
+      }
+  }
+}
+</pre>
+
+<p>Đó là tất cả những gì bạn cần: một hàm dựng và triển khai {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}.</p>
+
+<p>Nếu bạn quyết định cũng khống chế các phương pháp gọi lại khác, chẳng hạn như {@link
+android.app.IntentService#onCreate onCreate()}, {@link
+android.app.IntentService#onStartCommand onStartCommand()}, hoặc {@link
+android.app.IntentService#onDestroy onDestroy()}, hãy nhớ gọi ra siêu triển khai, sao
+cho {@link android.app.IntentService} có thể xử lý hợp lý vòng đời của luồng trình thực hiện.</p>
+
+<p>Ví dụ, {@link android.app.IntentService#onStartCommand onStartCommand()} phải trả về
+triển khai mặc định (đó là cách mà ý định được chuyển tới {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}):</p>
+
+<pre>
+&#64;Override
+public int onStartCommand(Intent intent, int flags, int startId) {
+    Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
+    return super.onStartCommand(intent,flags,startId);
+}
+</pre>
+
+<p>Bên cạnh {@link android.app.IntentService#onHandleIntent onHandleIntent()}, phương pháp duy nhất mà
+từ đó bạn không cần gọi siêu lớp là {@link android.app.IntentService#onBind
+onBind()} (nhưng bạn chỉ cần triển khai điều đó nếu dịch vụ của bạn cho phép gắn kết).</p>
+
+<p>Trong phần tiếp theo, bạn sẽ thấy cách mà cùng loại dịch vụ được triển khai khi mở rộng
+lớp {@link android.app.Service} cơ sở, nó có nhiều mã hơn nhưng có thể
+phù hợp nếu bạn cần xử lý các yêu cầu bắt đầu đồng thời.</p>
+
+
+<h3 id="ExtendingService">Mở rộng lớp Dịch vụ</h3>
+
+<p>Như bạn thấy trong phần trước, sử dụng {@link android.app.IntentService} giúp việc
+triển khai một dịch vụ được bắt đầu của bạn trở nên rất đơn giản. Tuy nhiên, nếu bạn cần dịch vụ của mình
+thực hiện tạo đa luồng (thay vì xử lý các yêu cầu bắt đầu thông qua một hàng đợi công việc), khi đó bạn
+có thể mở rộng lớp {@link android.app.Service} để xử lý từng ý định.</p>
+
+<p>Để so sánh, đoạn mã mẫu sau là triển khai lớp {@link
+android.app.Service} mà thực hiện chính xác cùng công việc như ví dụ bên trên bằng cách sử dụng {@link
+android.app.IntentService}. Cụ thể, đối với mỗi yêu cầu bắt đầu, nó sẽ sử dụng một luồng trình thực hiện để thực hiện
+công việc và chỉ xử lý lần lượt từng yêu cầu một.</p>
+
+<pre>
+public class HelloService extends Service {
+  private Looper mServiceLooper;
+  private ServiceHandler mServiceHandler;
+
+  // Handler that receives messages from the thread
+  private final class ServiceHandler extends Handler {
+      public ServiceHandler(Looper looper) {
+          super(looper);
+      }
+      &#64;Override
+      public void handleMessage(Message msg) {
+          // Normally we would do some work here, like download a file.
+          // For our sample, we just sleep for 5 seconds.
+          long endTime = System.currentTimeMillis() + 5*1000;
+          while (System.currentTimeMillis() &lt; endTime) {
+              synchronized (this) {
+                  try {
+                      wait(endTime - System.currentTimeMillis());
+                  } catch (Exception e) {
+                  }
+              }
+          }
+          // Stop the service using the startId, so that we don't stop
+          // the service in the middle of handling another job
+          stopSelf(msg.arg1);
+      }
+  }
+
+  &#64;Override
+  public void onCreate() {
+    // Start up the thread running the service.  Note that we create a
+    // separate thread because the service normally runs in the process's
+    // main thread, which we don't want to block.  We also make it
+    // background priority so CPU-intensive work will not disrupt our UI.
+    HandlerThread thread = new HandlerThread("ServiceStartArguments",
+            Process.THREAD_PRIORITY_BACKGROUND);
+    thread.start();
+
+    // Get the HandlerThread's Looper and use it for our Handler
+    mServiceLooper = thread.getLooper();
+    mServiceHandler = new ServiceHandler(mServiceLooper);
+  }
+
+  &#64;Override
+  public int onStartCommand(Intent intent, int flags, int startId) {
+      Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
+
+      // For each start request, send a message to start a job and deliver the
+      // start ID so we know which request we're stopping when we finish the job
+      Message msg = mServiceHandler.obtainMessage();
+      msg.arg1 = startId;
+      mServiceHandler.sendMessage(msg);
+
+      // If we get killed, after returning from here, restart
+      return START_STICKY;
+  }
+
+  &#64;Override
+  public IBinder onBind(Intent intent) {
+      // We don't provide binding, so return null
+      return null;
+  }
+
+  &#64;Override
+  public void onDestroy() {
+    Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();
+  }
+}
+</pre>
+
+<p>Như bạn có thể thấy, có nhiều việc hơn nhiều so với việc sử dụng {@link android.app.IntentService}.</p>
+
+<p>Tuy nhiên, do bạn tự mình xử lý từng lệnh gọi đến {@link android.app.Service#onStartCommand
+onStartCommand()}, bạn có thể thực hiện nhiều yêu cầu một cách đồng thời. Đó không phải là việc
+mà ví dụ này làm, nhưng nếu đó là việc bạn muốn, vậy bạn có thể tạo một luồng mới cho từng
+yêu cầu và ngay lập tức trả chúng về (thay vì đợi tới khi yêu cầu trước hoàn thành).</p>
+
+<p>Để ý rằng phương pháp {@link android.app.Service#onStartCommand onStartCommand()} phải trả về một
+số nguyên. Số nguyên là một giá trị mô tả cách hệ thống nên tiếp tục dịch vụ trong
+trường hợp hệ thống tắt bỏ nó (như được đề cập ở trên, triển khai mặc định cho {@link
+android.app.IntentService} sẽ xử lý điều này cho bạn dù bạn có thể sửa đổi nó). Giá trị trả về
+từ {@link android.app.Service#onStartCommand onStartCommand()} phải là một trong các
+hằng số sau:</p>
+
+<dl>
+  <dt>{@link android.app.Service#START_NOT_STICKY}</dt>
+    <dd>Nếu hệ thống tắt bỏ dịch vụ sau khi {@link android.app.Service#onStartCommand
+onStartCommand()} trả về, <em>không</em> được tạo lại dịch vụ đó, trừ khi có các ý định
+đang chờ để được chuyển. Đây là lựa chọn an toàn nhất để tránh chạy dịch vụ của bạn khi không cần thiết
+và khi ứng dụng của bạn có thể đơn thuần khởi động lại bất kỳ công việc chưa hoàn thành nào.</dd>
+  <dt>{@link android.app.Service#START_STICKY}</dt>
+    <dd>Nếu hệ thống tắt bỏ dịch vụ sau khi {@link android.app.Service#onStartCommand
+onStartCommand()} trả về, hãy tạo lại dịch vụ và gọi {@link
+android.app.Service#onStartCommand onStartCommand()}, nhưng <em>không</em> chuyển lại ý định cuối cùng.
+Thay vào đó, hệ thống sẽ gọi {@link android.app.Service#onStartCommand onStartCommand()} bằng một
+ý định rỗng, trừ khi có các ý định đang chờ để bắt đầu dịch vụ, trong trường hợp đó,
+những ý định này sẽ được chuyển. Điều này phù hợp với các trình phát phương tiện (hoặc dịch vụ tương tự) mà không
+đang thực thi lệnh, nhưng đang chạy vô thời hạn và chờ một tác vụ.</dd>
+  <dt>{@link android.app.Service#START_REDELIVER_INTENT}</dt>
+    <dd>Nếu hệ thống tắt bỏ dịch vụ sau khi {@link android.app.Service#onStartCommand
+onStartCommand()} trả về, hãy tạo lại dịch vụ và gọi {@link
+android.app.Service#onStartCommand onStartCommand()} bằng ý định cuối cùng được chuyển tới
+dịch vụ. Mọi ý định chờ đều được chuyển lần lượt. Điều này phù hợp với các dịch vụ đang
+chủ động thực hiện một công việc mà nên được tiếp tục ngay lập tức, chẳng hạn như tải xuống một tệp.</dd>
+</dl>
+<p>Để biết thêm chi tiết về những giá trị trả về này, hãy xem tài liệu tham khảo được liên kết cho từng
+hằng số.</p>
+
+
+
+<h3 id="StartingAService">Bắt đầu một Dịch vụ</h3>
+
+<p>Bạn có thể bắt đầu một dịch vụ từ một hoạt động hoặc thành phần ứng dụng khác bằng cách chuyển một
+{@link android.content.Intent} (quy định dịch vụ sẽ bắt đầu) đến {@link
+android.content.Context#startService startService()}. Hệ thống Android sẽ gọi phương pháp {@link
+android.app.Service#onStartCommand onStartCommand()} của dịch vụ và chuyển cho nó {@link
+android.content.Intent}. (Bạn tuyệt đối không nên trực tiếp gọi {@link android.app.Service#onStartCommand
+onStartCommand()}.)</p>
+
+<p>Ví dụ, một hoạt động có thể bắt đầu dịch vụ ví dụ trong phần trước ({@code
+HelloSevice}) bằng cách sử dụng một ý định biểu thị với {@link android.content.Context#startService
+startService()}:</p>
+
+<pre>
+Intent intent = new Intent(this, HelloService.class);
+startService(intent);
+</pre>
+
+<p>Phương pháp {@link android.content.Context#startService startService()} ngay lập tức trả về và
+hệ thống Android sẽ gọi phương pháp {@link android.app.Service#onStartCommand
+onStartCommand()} của dịch vụ. Nếu dịch vụ không đang chạy, trước tiên hệ thống sẽ gọi {@link
+android.app.Service#onCreate onCreate()}, rồi gọi {@link android.app.Service#onStartCommand
+onStartCommand()}.</p>
+
+<p>Nếu dịch vụ cũng không cung cấp khả năng gắn kết, ý định được chuyển bằng {@link
+android.content.Context#startService startService()} sẽ là phương thức giao tiếp duy nhất giữa
+thành phần ứng dụng và dịch vụ. Tuy nhiên, nếu bạn muốn dịch vụ gửi một kết quả trở lại, khi đó
+máy khách mà bắt đầu dịch vụ có thể tạo một {@link android.app.PendingIntent} cho một quảng bá
+(bằng {@link android.app.PendingIntent#getBroadcast getBroadcast()}) và chuyển nó tới dịch vụ
+trong {@link android.content.Intent} mà bắt đầu dịch vụ. Khi đó, dịch vụ có thể sử dụng
+quảng bá để chuyển kết quả.</p>
+
+<p>Nhiều yêu cầu bắt đầu dịch vụ sẽ dẫn đến nhiều lệnh gọi tương ứng tới
+{@link android.app.Service#onStartCommand onStartCommand()} của dịch vụ. Tuy nhiên, chỉ có một yêu cầu dừng
+dịch vụ (bằng {@link android.app.Service#stopSelf stopSelf()} hoặc {@link
+android.content.Context#stopService stopService()}) là bắt buộc để dừng nó.</p>
+
+
+<h3 id="Stopping">Dừng một dịch vụ</h3>
+
+<p>Dịch vụ được bắt đầu phải quản lý vòng đời của chính nó. Cụ thể, hệ thống không dừng
+hay hủy dịch vụ trừ khi nó phải khôi phục bộ nhớ của hệ thống và dịch vụ
+sẽ tiếp tục chạy sau khi {@link android.app.Service#onStartCommand onStartCommand()} trả về. Vì vậy,
+dịch vụ phải tự dừng bằng cách gọi {@link android.app.Service#stopSelf stopSelf()} hoặc một thành phần
+khác có thể dừng nó bằng cách gọi {@link android.content.Context#stopService stopService()}.</p>
+
+<p>Sau khi được yêu cầu dừng bằng {@link android.app.Service#stopSelf stopSelf()} hoặc {@link
+android.content.Context#stopService stopService()}, hệ thống sẽ hủy dịch vụ ngay khi
+có thể.</p>
+
+<p>Tuy nhiên, nếu dịch vụ của bạn xử lý nhiều yêu cầu {@link
+android.app.Service#onStartCommand onStartCommand()} đồng thời, khi đó bạn không nên dừng
+dịch vụ khi bạn đã hoàn thành xử lý yêu cầu bắt đầu, vì bạn có thể đã nhận được một
+yêu cầu bắt đầu mới kể từ thời điểm đó (dừng khi kết thúc yêu cầu thứ nhất sẽ chấm dứt yêu cầu thứ hai). Để tránh
+vấn đề này, bạn có thể sử dụng {@link android.app.Service#stopSelf(int)} để đảm bảo rằng yêu cầu
+dừng dịch vụ của bạn luôn được dựa trên yêu cầu bắt đầu gần đây nhất. Cụ thể, khi bạn gọi {@link
+android.app.Service#stopSelf(int)}, bạn sẽ chuyển ID của yêu cầu bắt đầu (<code>startId</code>
+được chuyển tới {@link android.app.Service#onStartCommand onStartCommand()}) mà yêu cầu dừng của bạn
+tương ứng với. Khi đó, nếu dịch vụ đã nhận được một yêu cầu bắt đầu mới trước khi bạn có thể gọi {@link
+android.app.Service#stopSelf(int)}, vậy ID sẽ không khớp và dịch vụ sẽ không dừng.</p>
+
+<p class="caution"><strong>Chú ý:</strong> Điều quan trọng là ứng dụng của bạn dừng dịch vụ của nó
+khi nó hoàn thành xong công việc để tránh lãng phí tài nguyên của hệ thống và tốn pin. Nếu cần,
+các thành phần khác có thể dừng dịch vụ bằng cách gọi {@link
+android.content.Context#stopService stopService()}. Ngay cả khi bạn kích hoạt gắn kết cho dịch vụ,
+bạn phải luôn tự mình dừng dịch vụ nếu dịch vụ đã nhận được lệnh gọi tới {@link
+android.app.Service#onStartCommand onStartCommand()}.</p>
+
+<p>Để biết thêm thông tin về vòng đời của một dịch vụ, hãy xem phần bên dưới về <a href="#Lifecycle">Quản lý Vòng đời của một Dịch vụ</a>.</p>
+
+
+
+<h2 id="CreatingBoundService">Tạo một Dịch vụ Gắn kết</h2>
+
+<p>Dịch vụ gắn kết là một dịch vụ cho phép các thành phần ứng dụng gắn kết với nó bằng cách gọi {@link
+android.content.Context#bindService bindService()} để tạo một kết nối lâu dài
+(và thường không cho phép các thành phần <em>bắt đầu</em> nó bằng cách gọi {@link
+android.content.Context#startService startService()}).</p>
+
+<p>Bạn nên tạo một dịch vụ gắn kết khi muốn tương tác với dịch vụ từ hoạt động
+và các thành phần khác trong ứng dụng của mình hoặc để hiển thị một số tính năng trong ứng dụng của bạn cho
+các ứng dụng khác thông qua truyền thông liên tiến trình (IPC).</p>
+
+<p>Để tạo một dịch vụ gắn kết, bạn phải triển khai phương pháp gọi lại {@link
+android.app.Service#onBind onBind()} để trả về một {@link android.os.IBinder} mà
+định nghĩa giao diện cho giao tiếp với dịch vụ đó. Khi đó, các thành phần ứng dụng khác có thể gọi
+{@link android.content.Context#bindService bindService()} để truy xuất giao diện và
+bắt đầu các phương pháp gọi trên dịch vụ. Dịch vụ tồn tại chỉ nhằm phục vụ thành phần ứng dụng mà
+được gắn kết với nó, vì thế khi không có thành phần được gắn kết với dịch vụ, hệ thống sẽ hủy nó
+(bạn <em>không</em> cần dừng một dịch vụ gắn kết theo cách phải làm khi dịch vụ được bắt đầu
+thông qua {@link android.app.Service#onStartCommand onStartCommand()}).</p>
+
+<p>Để tạo một dịch vụ gắn kết, điều đầu tiên bạn phải làm là định nghĩa giao diện quy định
+cách thức mà một máy khách có thể giao tiếp với dịch vụ. Giao diện giữa dịch vụ và
+máy khách này phải là một triển khai {@link android.os.IBinder} và được dịch vụ của bạn phải
+trả về từ phương pháp gọi lại {@link android.app.Service#onBind
+onBind()}. Sau khi máy khách nhận được {@link android.os.IBinder}, nó có thể bắt đầu
+tương tác với dịch vụ thông qua giao diện đó.</p>
+
+<p>Nhiều máy khách có thể gắn kết với dịch vụ đồng thời. Khi một máy khách hoàn thành tương tác với
+dịch vụ, nó sẽ gọi {@link android.content.Context#unbindService unbindService()} để bỏ gắn kết. Sau khi
+không còn máy khách nào được gắn kết với dịch vụ, hệ thống sẽ hủy dịch vụ.</p>
+
+<p>Có nhiều cách để triển khai một dịch vụ gắn kết và triển khai sẽ phức tạp
+hơn so với dịch vụ được bắt đầu, vì thế nội dung bàn về dịch vụ gắn kết được trình bày trong một
+tài liệu riêng về <a href="{@docRoot}guide/components/bound-services.html">Dịch vụ Gắn kết</a>.</p>
+
+
+
+<h2 id="Notifications">Gửi Thông báo tới Người dùng</h2>
+
+<p>Sau khi chạy, một dịch vụ có thể thông báo cho người dùng về sự kiện bằng cách sử dụng <a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">Thông báo Cửa sổ</a> hoặc <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Thông báo Thanh Trạng thái</a>.</p>
+
+<p>Thông báo cửa sổ là một thông báo xuất hiện một lúc trên bề mặt của cửa sổ hiện tại 
+rồi biến mất, trong khi thông báo thanh trạng thái cung cấp một biểu tượng trong thanh trạng thái cùng một
+thông báo, người dùng có thể chọn nó để thực hiện một hành động (chẳng hạn như bắt đầu một hoạt động).</p>
+
+<p>Thông thường thông báo thanh trạng thái là kỹ thuật tốt nhất khi một công việc nền nào đó đã hoàn thành
+(chẳng hạn như một tệp đã hoàn thành
+việc tải xuống) và lúc này người dùng có thể hành động dựa trên nó. Khi người dùng chọn thông báo từ dạng xem mở rộng
+, thông báo có thể bắt đầu một hoạt động (chẳng hạn như xem tệp được tải xuống).</p>
+
+<p>Xem hướng dẫn dành cho nhà phát triển <a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">Thông báo Cửa sổ</a> hoặc <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Thông báo Thanh Trạng thái</a>
+để biết thêm thông tin.</p>
+
+
+
+<h2 id="Foreground">Chạy một Dịch vụ trong Tiền cảnh</h2>
+
+<p>Dịch vụ tiền cảnh là một dịch vụ được coi là điều mà
+người dùng đang chủ động quan tâm, vì thế nó không được đề nghị để hệ thống tắt bỏ khi bộ nhớ thấp. Dịch vụ
+tiền cảnh phải cung cấp một thông báo cho thanh trạng thái, nó được đặt dưới tiêu đề
+"Đang diễn ra", điều này có nghĩa là thông báo không thể loại bỏ được trừ khi dịch vụ
+bị dừng hoặc loại bỏ khỏi tiền cảnh.</p>
+
+<p>Ví dụ, một trình chơi nhạc đang phát nhạc từ một dịch vụ nên được đặt để chạy trong
+tiền cảnh, vì người dùng rõ ràng ý thức được
+hoạt động của nó. Thông báo trong thanh trạng thái có thể cho biết bài hát đang chơi và cho phép
+người dùng khởi chạy một hoạt động để tương tác với trình chơi nhạc.</p>
+
+<p>Để yêu cầu dịch vụ của bạn chạy trong tiền cảnh, hãy gọi {@link
+android.app.Service#startForeground startForeground()}. Phương pháp này dùng hai tham số: một số nguyên
+để xác định duy nhất thông báo và {@link
+android.app.Notification} cho thanh trạng thái. Ví dụ:</p>
+
+<pre>
+Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text),
+        System.currentTimeMillis());
+Intent notificationIntent = new Intent(this, ExampleActivity.class);
+PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
+notification.setLatestEventInfo(this, getText(R.string.notification_title),
+        getText(R.string.notification_message), pendingIntent);
+startForeground(ONGOING_NOTIFICATION_ID, notification);
+</pre>
+
+<p class="caution"><strong>Chú ý:</strong> ID số nguyên mà bạn cấp cho {@link
+android.app.Service#startForeground startForeground()} không được bằng 0.</p>
+
+
+<p>Để xóa bỏ dịch vụ khỏi tiền cảnh, hãy gọi {@link
+android.app.Service#stopForeground stopForeground()}. Phương pháp này dùng một boolean, cho biết
+có loại bỏ cả thông báo thanh trạng thái hay không. Phương pháp này <em>không</em> dừng
+dịch vụ. Tuy nhiên, nếu bạn dừng dịch vụ trong khi nó vẫn đang chạy trong tiền cảnh, khi đó thông báo
+cũng bị loại bỏ.</p>
+
+<p>Để biết thêm thông tin về thông báo, hãy xem phần <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Tạo Thông báo
+Thanh Trạng thái</a>.</p>
+
+
+
+<h2 id="Lifecycle">Quản lý Vòng đời của một Dịch vụ</h2>
+
+<p>Vòng đời của một dịch vụ đơn giản hơn nhiều so với vòng đời của một hoạt động. Tuy nhiên, một điều thậm chí còn quan trọng hơn
+đó là bạn phải thật chú ý tới cách dịch vụ của bạn được tạo và hủy, bởi một dịch vụ
+có thể chạy ngầm mà người dùng không biết.</p>
+
+<p>Vòng đời của dịch vụ&mdash;từ khi nó được tạo tới khi nó bị hủy&mdash;có thể đi theo hai
+con đường khác nhau:</p>
+
+<ul>
+<li>Dịch vụ được bắt đầu
+  <p>Dịch vụ được tạo khi một thành phần khác gọi {@link
+android.content.Context#startService startService()}. Sau đó, dịch vụ sẽ chạy vô thời hạn và phải
+tự dừng bằng cách gọi {@link
+android.app.Service#stopSelf() stopSelf()}. Một thành phần khác cũng có thể dừng
+dịch vụ bằng cách gọi {@link android.content.Context#stopService
+stopService()}. Khi dịch vụ bị dừng, hệ thống sẽ hủy nó.</p></li>
+
+<li>Dịch vụ gắn kết
+  <p>Dịch vụ được tạo khi một thành phần khác (máy khách) gọi {@link
+android.content.Context#bindService bindService()}. Khi đó, máy khách giao tiếp với dịch vụ
+thông qua một giao diện {@link android.os.IBinder}. Máy khách có thể đóng kết nối bằng cách gọi
+{@link android.content.Context#unbindService unbindService()}. Nhiều máy khách có thể gắn kết với
+cùng dịch vụ và khi tất cả chúng bỏ gắn kết, hệ thống sẽ hủy dịch vụ. (Dịch vụ
+<em>không</em> cần tự mình dừng.)</p></li>
+</ul>
+
+<p>Hai con đường này hoàn toàn riêng biệt. Cụ thể, bạn có thể gắn kết với một dịch vụ đã
+được bắt đầu bằng {@link android.content.Context#startService startService()}. Ví dụ, một dịch vụ
+nhạc nền có thể được bắt đầu bằng cách gọi {@link android.content.Context#startService
+startService()} bằng một {@link android.content.Intent} mà sẽ nhận biết nhạc để phát. Sau đó,
+có thể là khi người dùng muốn thực thi một quyền điều khiển đối với trình phát đó hoặc lấy thông tin về
+bài hát đang phát, hoạt động có thể gắn kết với dịch vụ bằng cách gọi {@link
+android.content.Context#bindService bindService()}. Trong những trường hợp như vậy, {@link
+android.content.Context#stopService stopService()} hoặc {@link android.app.Service#stopSelf
+stopSelf()} không thực sự dừng dịch vụ tới khi tất cả máy khách bỏ gắn kết. </p>
+
+
+<h3 id="LifecycleCallbacks">Triển khai gọi lại vòng đời</h3>
+
+<p>Giống như một hoạt động, dịch vụ có các phương pháp gọi lại vòng đời mà bạn có thể triển khai để theo dõi
+những thay đổi về trạng thái của dịch vụ và thực hiện công việc tại những thời điểm phù hợp. Dịch vụ khung sau
+minh họa từng phương pháp vòng đời:</p>
+
+<pre>
+public class ExampleService extends Service {
+    int mStartMode;       // indicates how to behave if the service is killed
+    IBinder mBinder;      // interface for clients that bind
+    boolean mAllowRebind; // indicates whether onRebind should be used
+
+    &#64;Override
+    public void {@link android.app.Service#onCreate onCreate}() {
+        // The service is being created
+    }
+    &#64;Override
+    public int {@link android.app.Service#onStartCommand onStartCommand}(Intent intent, int flags, int startId) {
+        // The service is starting, due to a call to {@link android.content.Context#startService startService()}
+        return <em>mStartMode</em>;
+    }
+    &#64;Override
+    public IBinder {@link android.app.Service#onBind onBind}(Intent intent) {
+        // A client is binding to the service with {@link android.content.Context#bindService bindService()}
+        return <em>mBinder</em>;
+    }
+    &#64;Override
+    public boolean {@link android.app.Service#onUnbind onUnbind}(Intent intent) {
+        // All clients have unbound with {@link android.content.Context#unbindService unbindService()}
+        return <em>mAllowRebind</em>;
+    }
+    &#64;Override
+    public void {@link android.app.Service#onRebind onRebind}(Intent intent) {
+        // A client is binding to the service with {@link android.content.Context#bindService bindService()},
+        // after onUnbind() has already been called
+    }
+    &#64;Override
+    public void {@link android.app.Service#onDestroy onDestroy}() {
+        // The service is no longer used and is being destroyed
+    }
+}
+</pre>
+
+<p class="note"><strong>Lưu ý:</strong> Không như các phương pháp gọi lại vòng đời của hoạt động, bạn
+<em>không</em> phải gọi triển khai siêu lớp với những phương pháp gọi lại này.</p>
+
+<img src="{@docRoot}images/service_lifecycle.png" alt="" />
+<p class="img-caption"><strong>Hình 2.</strong> Vòng đời dịch vụ. Sơ đồ phía bên trái
+minh họa vòng đời khi dịch vụ được tạo bằng {@link android.content.Context#startService
+startService()} và sơ đồ phía bên phải minh họa vòng đời khi dịch vụ được tạo
+bằng {@link android.content.Context#bindService bindService()}.</p>
+
+<p>Bằng việc triển khai những phương pháp này, bạn có thể theo dõi hai vòng lặp lồng nhau trong vòng đời của dịch vụ: </p>
+
+<ul>
+<li><strong>Toàn bộ vòng đời</strong> của một dịch vụ xảy ra giữa thời điểm gọi {@link
+android.app.Service#onCreate onCreate()} và thời điểm {@link
+android.app.Service#onDestroy} trả về. Giống như hoạt động, dịch vụ thực hiện thiết lập ban đầu của nó trong
+{@link android.app.Service#onCreate onCreate()} và giải phóng tất cả tài nguyên còn lại trong {@link
+android.app.Service#onDestroy onDestroy()}.  Ví dụ, một
+dịch vụ phát lại nhạc có thể tạo luồng mà tại đó nhạc sẽ được phát trong {@link
+android.app.Service#onCreate onCreate()}, sau đó dừng luồng trong {@link
+android.app.Service#onDestroy onDestroy()}.
+
+<p>Các phương pháp {@link android.app.Service#onCreate onCreate()} và {@link android.app.Service#onDestroy
+onDestroy()} được gọi cho tất cả dịch vụ, dù
+chúng được tạo bởi {@link android.content.Context#startService startService()} hay {@link
+android.content.Context#bindService bindService()}.</p></li>
+
+<li><strong>Vòng đời hiện hoạt</strong> của một dịch vụ sẽ bắt đầu bằng một lệnh gọi đến hoặc {@link
+android.app.Service#onStartCommand onStartCommand()} hoặc {@link android.app.Service#onBind onBind()}.
+Mỗi phương pháp sẽ được giao {@link
+android.content.Intent} mà được chuyển tương ứng cho hoặc {@link android.content.Context#startService
+startService()} hoặc {@link android.content.Context#bindService bindService()}.
+<p>Nếu dịch vụ được bắt đầu, vòng đời hiện hoạt sẽ chấm dứt tại cùng thời điểm khi toàn bộ vòng đời
+chấm dứt (dịch vụ sẽ vẫn hiện hoạt ngay cả sau khi {@link android.app.Service#onStartCommand
+onStartCommand()} trả về). Nếu dịch vụ bị gắn kết, vòng đời hiện hoạt sẽ chấm dứt khi {@link
+android.app.Service#onUnbind onUnbind()} trả về.</p>
+</li>
+</ul>
+
+<p class="note"><strong>Lưu ý:</strong> Mặc dù dịch vụ được bắt đầu bị dừng bởi một lệnh gọi đến
+hoặc {@link android.app.Service#stopSelf stopSelf()} hoặc {@link
+android.content.Context#stopService stopService()}, sẽ không có một lệnh gọi lại tương ứng cho
+dịch vụ (không có lệnh gọi lại {@code onStop()}). Vì thế, trừ khi dịch vụ được gắn kết với một máy khách,
+hệ thống sẽ hủy nó khi dịch vụ bị dừng&mdash;{@link
+android.app.Service#onDestroy onDestroy()} là lệnh gọi lại duy nhất nhận được.</p>
+
+<p>Hình 2 minh họa các phương pháp gọi lại điển hình cho một dịch vụ. Mặc dù hình tách riêng
+các dịch vụ được tạo bởi {@link android.content.Context#startService startService()} với các dịch vụ
+được tạo bởi {@link android.content.Context#bindService bindService()}, hãy
+ghi nhớ rằng bất kỳ dịch vụ nào, dù được bắt đầu như thế nào, đều có thể cho phép máy khách gắn kết với nó.
+Vì thế, một dịch vụ được bắt đầu từ đầu bằng {@link android.app.Service#onStartCommand
+onStartCommand()} (bởi một máy khách gọi {@link android.content.Context#startService startService()})
+vẫn có thể nhận một lệnh gọi đến {@link android.app.Service#onBind onBind()} (khi máy khách gọi
+{@link android.content.Context#bindService bindService()}).</p>
+
+<p>Để biết thêm thông tin về việc tao một dịch vụ có tính năng gắn kết, hãy xem tài liệu <a href="{@docRoot}guide/components/bound-services.html">Dịch vụ Gắn kết</a>,
+trong đó có thêm thông tin về phương pháp gọi lại {@link android.app.Service#onRebind onRebind()}
+trong phần về <a href="{@docRoot}guide/components/bound-services.html#Lifecycle">Quản lý Vòng đời của
+một Dịch vụ Gắn kết</a>.</p>
+
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>To learn how to query data from the system or other applications (such as contacts or media
+stored on the device), continue with the <b><a
+href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a></b>
+document.</p>
+-->
diff --git a/docs/html-intl/intl/vi/guide/components/tasks-and-back-stack.jd b/docs/html-intl/intl/vi/guide/components/tasks-and-back-stack.jd
new file mode 100644
index 0000000..85affff
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/components/tasks-and-back-stack.jd
@@ -0,0 +1,578 @@
+page.title=Tác vụ và Ngăn xếp
+parent.title=Hoạt động
+parent.link=activities.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Trong tài liệu này</h2>
+<ol>
+<li><a href="#ActivityState">Lưu Trạng thái của Hoạt động</a></li></li>
+<li><a href="#ManagingTasks">Quản lý Tác vụ</a>
+  <ol>
+    <li><a href="#TaskLaunchModes">Định nghĩa các chế độ khởi chạy</a></li>
+    <li><a href="#Affinities">Xử lý quan hệ</a></li>
+    <li><a href="#Clearing">Xóa ngăn xếp</a></li>
+    <li><a href="#Starting">Bắt đầu một tác vụ</a></li>
+  </ol>
+</li>
+</ol>
+
+<h2>Bài viết</h2>
+<ol>
+  <li><a href="http://android-developers.blogspot.com/2010/04/multitasking-android-way.html">
+  Đa nhiệm theo cách của Android</a></li>
+</ol>
+
+<h2>Xem thêm</h2>
+<ol>
+  <li><a href="{@docRoot}design/patterns/navigation.html">Thiết kế Android:
+Điều hướng</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html">Phần tử bản kê khai {@code &lt;activity&gt;}
+</a></li>
+  <li><a href="{@docRoot}guide/components/recents.html">Màn hình Tổng quan</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>Một ứng dụng thường chứa nhiều <a href="{@docRoot}guide/components/activities.html">hoạt động</a>. Mỗi hoạt động
+nên được thiết kế xung quanh một kiểu hành động cụ thể mà người dùng có thể thực hiện và bắt đầu các hoạt động
+khác. Ví dụ, một ứng dụng e-mail có thể có một hoạt động để hiển thị một danh sách các thư mới.
+Khi người dùng chọn một thư, một hoạt động mới sẽ mở ra để xem thư đó.</p>
+
+<p>Hoạt động thậm chí có thể bắt đầu các hoạt động tồn tại trong các ứng dụng khác trên thiết bị. Ví
+dụ, nếu ứng dụng của bạn muốn gửi một thư e-mail, bạn có thể định nghĩa một ý định để thực hiện một hành động
+"gửi" và bao gồm một số dữ liệu, chẳng hạn như địa chỉ e-mail và nội dung. Một hoạt động từ một ứng dụng
+khác tự khai báo là có khả năng xử lý kiểu ý định này sẽ mở ra. Trong trường hợp này,
+ý định sẽ gửi một e-mail, sao cho hoạt động "soạn" của một ứng dụng e-mail sẽ bắt đầu (nếu nhiều hoạt động
+hỗ trợ cùng ý định, khi đó hệ thống cho phép người dùng chọn hoạt động sẽ sử dụng). Khi e-mail được
+gửi, hoạt động của bạn tiếp tục và dường như hoạt động e-mail là một phần ứng dụng của bạn. Mặc dù
+các hoạt động có thể đến từ những ứng dụng khác nhau, Android duy trì trải nghiệm người dùng
+mượt mà này bằng cách giữ cả hai hoạt động trong cùng <em>tác vụ</em>.</p>
+
+<p>Tác vụ là một tập hợp gồm nhiều hoạt động mà người dùng tương tác với
+khi thực hiện một công việc nhất định. Các hoạt động được sắp xếp trong một chồng (<em>ngăn xếp</em>), theo
+thứ tự mở mỗi hoạt động.</p>
+
+<!-- SAVE FOR WHEN THE FRAGMENT DOC IS ADDED
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h3>Adding fragments to a task's back stack</h3>
+
+<p>Your activity can also include {@link android.app.Fragment}s to the back stack. For example,
+suppose you have a two-pane layout using fragments, one of which is a list view (fragment A) and the
+other being a layout to display an item from the list (fragment B). When the user selects an item
+from the list, fragment B is replaced by a new fragment (fragment C). In this case, it might be
+desireable for the user to navigate back to reveal fragment B, using the <em>Back</em> button.</p>
+<p>In order to add fragment B to the back stack so that this is possible, you must call {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()} before you {@link
+android.app.FragmentTransaction#commit()} the transaction that replaces fragment B with fragment
+C.</p>
+<p>For more information about using fragments and adding them to the back stack, see the {@link
+android.app.Fragment} class documentation.</p>
+
+</div>
+</div>
+-->
+
+<p>Màn hình Trang chủ của thiết bị là nơi bắt đầu đối với hầu hết tác vụ. Khi người dùng chạm vào một biểu tượng trong trình khởi chạy
+ứng dụng
+ (hoặc lối tắt trên màn hình Trang chủ), tác vụ của ứng dụng đó sẽ tiến ra tiền cảnh. Nếu không
+có tác vụ nào cho ứng dụng (ứng dụng chưa được sử dụng gần đây), khi đó một tác vụ mới
+sẽ được tạo và hoạt động "chính" cho ứng dụng đó sẽ mở ra thành hoạt động gốc trong chồng.</p>
+
+<p>Khi hoạt động hiện tại bắt đầu một hoạt động khác, hoạt động mới sẽ bị đẩy lên trên cùng của chồng và
+có tiêu điểm. Hoạt động trước vẫn nằm trong chồng, nhưng bị dừng lại. Khi một hoạt động
+dừng, hệ thống giữ lại trạng thái hiện tại của giao diện người dùng của hoạt động đó. Khi người dùng nhấn nút
+<em>Quay lại</em>
+, hoạt động hiện tại được bật khỏi trên cùng của chồng (hoạt động bị hủy) và
+hoạt động trước tiếp tục (trạng thái trước đó của UI của nó được khôi phục). Các hoạt động trong chồng
+không bao giờ được sắp xếp lại, mà chỉ bị đẩy và bật khỏi chồng&mdash;bị đẩy lên trên chồng khi được bắt đầu bởi
+hoạt động hiện tại và bị bật khỏi chồng khi người dùng rời nó bằng cách sử dụng nút <em>Quay lại</em>. Như vậy,
+ngăn xếp
+vận hành như một cấu trúc đối tượng "vào cuối, ra đầu". Hình 1 minh họa
+hành vi này cùng một dòng thời gian thể hiện tiến độ giữa các hoạt động dọc theo ngăn xếp
+hiện tại ở từng thời điểm.</p>
+
+<img src="{@docRoot}images/fundamentals/diagram_backstack.png" alt="" />
+<p class="img-caption"><strong>Hình 1.</strong> Biểu diễn cách mỗi hoạt động mới trong một
+tác vụ thêm một mục vào ngăn xếp. Khi người dùng nhấn nút <em>Quay lại</em>, hoạt động
+hiện tại
+bị hủy và hoạt động trước đó tiếp tục.</p>
+
+
+<p>Nếu người dùng tiếp tục nhấn <em>Quay lại</em>, khi đó mỗi hoạt động trong chồng bị bật khỏi để
+hiện ra
+hoạt động trước, tới khi người dùng quay lại màn hình Trang chủ (hoặc trở về hoạt động đang chạy khi
+tác vụ bắt đầu). Khi tất cả hoạt động bị loại bỏ khỏi chồng, tác vụ sẽ không còn tồn tại.</p>
+
+<div class="figure" style="width:287px">
+<img src="{@docRoot}images/fundamentals/diagram_multitasking.png" alt="" /> <p
+class="img-caption"><strong>Hình 2.</strong> Hai tác vụ: Tác vụ B nhận tương tác người dùng
+trong tiền cảnh, trong khi Tác vụ A nằm dưới nền, chờ được tiếp tục.</p>
+</div>
+<div class="figure" style="width:215px">
+  <img src="{@docRoot}images/fundamentals/diagram_multiple_instances.png" alt="" /> <p
+class="img-caption"><strong>Hình 3.</strong> Một hoạt động đơn lẻ được khởi tạo nhiều lần.</p>
+</div>
+
+<p>Tác vụ là một đơn vị dính kết, có thể di chuyển tới "nền" khi người dùng bắt đầu một tác vụ mới hoặc đi đến
+màn hình Trang chủ, thông qua nút <em>Home</em>. Khi ở trong nền, tất cả hoạt động trong
+tác vụ bị
+dừng, nhưng ngăn xếp cho tác vụ vẫn không bị ảnh hưởng&mdash;tác vụ chỉ đơn thuần mất tiêu điểm trong khi
+một tác vụ khác thay thế, như minh họa trong hình 2. Khi đó, một tác vụ có thể quay lại "tiền cảnh" để người dùng
+có thể chọn ở nơi họ đã rời đi. Ví dụ, giả sử rằng tác vụ hiện tại (Tác vụ A) có ba
+hoạt động trong chồng của mình&mdash;hai trong số đó nằm dưới hoạt động hiện tại. Người dùng nhấn nút <em>Trang chủ</em>
+, sau đó
+bắt đầu một ứng dụng mới từ trình khởi chạy ứng dụng. Khi màn hình Trang chủ xuất hiện, Tác vụ A đi vào
+nền. Khi ứng dụng mới bắt đầu, hệ thống sẽ bắt đầu một tác vụ cho ứng dụng đó
+(Tác vụ B) bằng chồng các hoạt động của chính mình. Sau khi tương tác với
+ứng dụng đó, người dùng quay lại Trang chủ lần nữa và chọn ứng dụng
+đã bắt đầu Tác vụ A lúc đầu. Lúc này, Tác vụ A đi đến
+tiền cảnh&mdash;cả ba hoạt động trong chồng của nó đều giữ nguyên và hoạt động trên cùng
+của chồng được tiếp tục. Tại
+điểm này, người dùng cũng có thể chuyển trở lại Tác vụ B bằng cách đến Trang chủ và chọn biểu tượng ứng dụng
+đã bắt đầu tác vụ đó (hoặc bằng cách chọn tác vụ của ứng dụng từ
+<a href="{@docRoot}guide/components/recents.html">màn hình tổng quan</a>).
+Đây là một ví dụ về đa nhiệm trên Android.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Nhiều tác vụ có thể được lưu giữ cùng lúc trong nền.
+Tuy nhiên, nếu người dùng đang chạy nhiều tác vụ nền tại cùng thời điểm, hệ thống có thể bắt đầu
+hủy các hoạt động nền để khôi phục bộ nhớ, khiến trạng thái của hoạt động bị mất.
+Xem phần sau đây về <a href="#ActivityState">Trạng thái của hoạt động</a>.</p>
+
+<p>Vì các hoạt động trong ngăn xếp không bao giờ được sắp xếp lại, nếu ứng dụng của bạn cho phép
+người dùng bắt đầu một hoạt động cụ thể từ nhiều hơn một hoạt động, một thực thể mới của
+hoạt động đó sẽ được tạo và đẩy lên chồng (thay vì mang bất kỳ thực thể nào trước đó của
+hoạt động lên trên cùng). Như vậy, một hoạt động trong ứng dụng của bạn có thể được tạo phiên bản nhiều
+lần (thậm chí từ các tác vụ khác nhau), như minh họa trong hình 3. Như vậy, nếu người dùng điều hướng ngược lại
+bằng cách sử dụng nút <em>Quay lại</em>, mỗi thực thể của hoạt động được hiển thị theo thứ tự được
+mở (mỗi hoạt động
+có trạng thái UI của chính chúng). Tuy nhiên, bạn có thể sửa đổi hành vi này nếu không muốn một hoạt động được
+khởi tạo nhiều hơn một lần. Cách làm như vậy được bàn trong phần sau về <a href="#ManagingTasks">Quản lý Tác vụ</a>.</p>
+
+
+<p>Để tóm tắt hành vi mặc định đối với các hoạt động và tác vụ:</p>
+
+<ul>
+  <li>Khi Hoạt động A bắt đầu Hoạt động B, Hoạt động A bị dừng, nhưng hệ thống giữ lại trạng thái của nó
+(chẳng hạn như vị trí cuộn và văn bản được nhập vào các mẫu).
+Nếu người dùng nhấn nút <em>Quay lại</em> khi đang trong Hoạt động B, Hoạt động A sẽ tiếp tục với trạng thái
+được khôi phục.</li>
+  <li>Khi người dùng rời khỏi một tác vụ bằng cách nhấn nút <em>Trang chủ</em>, hoạt động hiện tại bị
+dừng và
+tác vụ của nó sẽ đưa xuống dưới nền. Hệ thống sẽ giữ lại trạng thái của mọi hoạt động trong tác vụ. Nếu
+sau đó người dùng tiếp tục tác vụ bằng cách chọn biểu tượng trình khởi chạy đã bắt đầu tác vụ, tác vụ sẽ vào
+tiền cảnh và tiếp tục hoạt động ở trên cùng của chồng.</li>
+  <li>Nếu người dùng nhấn nút <em>Quay lại</em>, hoạt động hiện tại bị bật khỏi chồng
+và
+bị hủy. Hoạt động trước đó ở trong chồng sẽ được tiếp tục. Khi một hoạt động bị hủy, hệ thống
+<em>không</em> giữ lại trạng thái của hoạt động đó.</li>
+  <li>Hoạt động có thể được khởi tạo nhiều lần, thậm chí từ các tác vụ khác.</li>
+</ul>
+
+
+<div class="note design">
+<p><strong>Thiết kế Điều hướng</strong></p>
+  <p>Để biết thêm về cách điều hướng ứng dụng hoạt động trên Android, hãy đọc hướng dẫn <a href="{@docRoot}design/patterns/navigation.html">Điều hướng</a> của Thiết kế Android.</p>
+</div>
+
+
+<h2 id="ActivityState">Lưu Trạng thái của Hoạt động</h2>
+
+<p>Như được đề cập ở trên, hành vi mặc định của hệ thống giữ nguyên trạng thái của một hoạt động khi nó bị
+dừng. Bằng cách này, khi người dùng điều hướng trở lại một hoạt động trước đó, giao diện người dùng của nó sẽ xuất hiện
+ như lúc bị rời đi. Tuy nhiên, bạn có thể&mdash;và <strong>nên</strong>&mdash;chủ động giữ lại
+trạng thái của các hoạt động của mình bằng cách sử dụng các phương pháp gọi lại, trong trường hợp hoạt động bị hủy và phải
+được tạo lại.</p>
+
+<p>Khi hệ thống dừng một trong các hoạt động của bạn (chẳng hạn như khi một hoạt động mới bắt đầu hoặc tác vụ
+di chuyển về nền), hệ thống có thể hoàn toàn hủy hoạt động đó nếu nó cần khôi phục
+bộ nhớ hệ thống. Khi điều này xảy ra, thông tin về trạng thái của hoạt động sẽ bị mất. Nếu điều này xảy ra, 
+hệ thống vẫn
+biết rằng hoạt động có một vị trí trong ngăn xếp, nhưng khi hoạt động được đưa tới vị trí trên cùng
+của chồng, hệ thống phải tạo lại nó (thay vì tiếp tục). Để tránh
+làm mất công việc của người dùng, bạn nên chủ động giữ lại nó bằng cách triển khai phương pháp gọi lại
+{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()} trong
+hoạt động của mình.</p>
+
+<p>Để biết thêm thông tin về cách lưu trạng thái hoạt động của mình, hãy xem tài liệu <a href="{@docRoot}guide/components/activities.html#SavingActivityState">Hoạt động</a>
+.</p>
+
+
+
+<h2 id="ManagingTasks">Quản lý Tác vụ</h2>
+
+<p>Cách Android quản lý tác vụ và ngăn xếp, như được mô tả bên trên&mdash;bằng cách đặt tất cả
+hoạt động được bắt đầu nối tiếp nhau vào cùng tác vụ và trong một chồng "vào cuối, ra đầu"&mdash;rất
+hiệu quả đối với hầu hết ứng dụng và bạn không phải lo lắng về cách thức các hoạt động của mình được liên kết với
+các tác vụ hay cách chúng tồn tại trong ngăn xếp. Tuy nhiên, bạn có thể quyết định rằng mình muốn gián đoạn
+hành vi thông thường. Có thể bạn muốn một hoạt động trong ứng dụng của mình bắt đầu một tác vụ mới khi nó được
+bắt đầu (thay vì được đặt trong tác vụ hiện tại); hoặc, khi bạn bắt đầu một hoạt động, bạn muốn
+mang lên trước một thực thể hiện tại của nó (thay vì tạo một
+thực thể mới trên cùng của ngăn xếp); hoặc, bạn muốn ngăn xếp của mình được xóa sạch tất cả các
+hoạt động, ngoại trừ hoạt động gốc khi người dùng rời khỏi tác vụ.</p>
+
+<p>Bạn có thể làm những điều này và nhiều điều khác với các thuộc tính trong phần tử bản kê khai
+<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+và cờ trong ý định mà bạn chuyển cho
+{@link android.app.Activity#startActivity startActivity()}.</p>
+
+<p>Về mặt này, các thuộc tính <a href="{@docRoot}guide/topics/manifest/activity-element.html">
+{@code &lt;activity&gt;}</a> chính mà bạn có thể sử dụng là:</p>
+
+<ul class="nolist">
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">
+  {@code taskAffinity}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">
+  {@code launchMode}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">
+  {@code allowTaskReparenting}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">
+  {@code clearTaskOnLaunch}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
+  {@code alwaysRetainTaskState}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">
+  {@code finishOnTaskLaunch}</a></li>
+</ul>
+
+<p>Và các cờ ý định chính mà bạn có thể sử dụng là:</p>
+
+<ul class="nolist">
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</li>
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</li>
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</li>
+</ul>
+
+<p>Trong những phần sau, bạn sẽ thấy cách bạn có thể sử dụng những thuộc tính của bản kê khai
+và cờ ý định này để định nghĩa cách các hoạt động được liên kết với tác vụ và hành vi của chúng như thế nào trong ngăn xếp.</p>
+
+<p>Bên cạnh đó, có phần bàn riêng về việc cân nhắc cách các tác vụ và hoạt động có thể
+được biểu diễn và quản lý trong màn hình tổng quan. Xem phần <a href="{@docRoot}guide/components/recents.html">Màn hình Tổng quan</a>
+để biết thêm thông tin. Thông thường, bạn nên cho phép hệ thống định nghĩa tác vụ và các hoạt động
+của bạn được biểu diễn như thế nào trong màn hình tổng quan, và bạn không cần sửa đổi hành vi này.</p>
+
+<p class="caution"><strong>Chú ý:</strong> Hầu hết các ứng dụng không nên gián đoạn hành vi
+mặc định cho các hoạt động và tác vụ. Nếu bạn xác định rằng hoạt động của bạn cần phải sửa đổi
+hành vi mặc định, hãy thận trọng và đảm bảo kiểm tra khả năng sử dụng được của hoạt động đó trong khi
+khởi chạy và khi điều hướng trở lại nó từ các hoạt động và tác vụ khác bằng nút <em>Quay lại</em>.
+Đảm bảo kiểm tra hành vi điều hướng mà có thể xung đột với hành vi được kỳ vọng của người dùng.</p>
+
+
+<h3 id="TaskLaunchModes">Định nghĩa các chế độ khởi chạy</h3>
+
+<p>Các chế độ khởi chạy cho phép bạn định nghĩa một thực thể mới của một hoạt động được liên kết với tác vụ hiện tại
+như thế nào. Bạn có thể định nghĩa các chế độ khởi chạy khác nhau theo hai cách:</p>
+<ul class="nolist">
+  <li><a href="#ManifestForTasks">Sử dụng tệp bản kê khai</a>
+    <p>Khi bạn khai báo một hoạt động trong tệp bản kê khai của mình, bạn có thể quy định hoạt động
+sẽ liên kết với các tác vụ như thế nào khi nó bắt đầu.</li>
+  <li><a href="#IntentFlagsForTasks">Sử dụng cờ Ý định</a>
+    <p>Khi bạn gọi {@link android.app.Activity#startActivity startActivity()},
+bạn có thể thêm một cờ vào {@link android.content.Intent} mà khai báo cách (hoặc
+liệu có hay không) hoạt động mới sẽ liên kết với tác vụ hiện tại.</p></li>
+</ul>
+
+<p>Như vậy, nếu Hoạt động A bắt đầu Hoạt động B, Hoạt động B có thể định nghĩa trong bản kê khai của mình cách nó
+sẽ liên kết với tác vụ hiện tại (nếu có) và Hoạt động A cũng có thể yêu cầu cách mà Hoạt động
+B sẽ liên kết với tác vụ hiện tại. Nếu cả hai hoạt động đều định nghĩa cách Hoạt động B
+nên liên kết với một tác vụ thì yêu cầu của Hoạt động A (như định nghĩa trong ý định) được ưu tiên
+so với yêu cầu của Hoạt động B (như được định nghĩa trong bản kê khai của nó).</p>
+
+<p class="note"><strong>Lưu ý:</strong> Một số chế độ khởi chạy sẵn có cho tệp bản kê khai
+không sẵn có dưới dạng cờ cho một ý định và, tương tự, một số chế độ khởi chạy sẵn có dưới dạng cờ
+cho một ý định không thể được định nghĩa trong bản kê khai.</p>
+
+
+<h4 id="ManifestForTasks">Sử dụng tệp bản kê khai</h4>
+
+<p>Khi khai báo một hoạt động trong tệp bản kê khai của bạn, bạn có thể quy định cách mà hoạt động
+sẽ liên kết với một tác vụ bằng cách sử dụng thuộc tính của phần tử <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+, <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
+launchMode}</a>.</p>
+
+<p>Thuộc tính <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
+launchMode}</a> quy định một chỉ lệnh về cách hoạt động sẽ được khởi chạy vào một
+tác vụ. Có bốn chế độ khởi chạy khác nhau mà bạn có thể gán cho thuộc tính
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">launchMode</a></code>
+:</p>
+
+<dl>
+<dt>{@code "standard"} (chế độ mặc định)</dt>
+  <dd>Mặc định. Hệ thống tạo một thực thể mới của hoạt động trong tác vụ là nơi
+mà nó được bắt đầu và định tuyến ý định tới đó. Hoạt động có thể được khởi tạo nhiều lần,
+mỗi thực thể có thể thuộc về các tác vụ khác nhau, và một tác vụ có thể có nhiều thực thể.</dd>
+<dt>{@code "singleTop"}</dt>
+  <dd>Nếu một thực thể của hoạt động đã tồn tại ở trên cùng của tác vụ hiện tại, hệ thống
+sẽ định tuyến ý định tới thực thể đó thông qua một lệnh gọi tới phương pháp {@link
+android.app.Activity#onNewIntent onNewIntent()} của nó, thay vì tạo một thực thể mới của
+hoạt động. Hoạt động có thể được tạo phiên bản nhiều lần, mỗi thực thể có thể
+thuộc về các tác vụ khác nhau, và một tác vụ có thể có nhiều thực thể (nhưng chỉ nếu
+hoạt động nằm trên cùng của ngăn xếp <em>không</em> phải là một thực thể của hoạt động hiện có).
+  <p>Ví dụ, giả sử ngăn xếp của một tác vụ bao gồm hoạt động gốc A với các hoạt động B, C,
+và D ở trên cùng (chồng là A-B-C-D; D ở trên cùng). Một ý định đến cho loại hoạt động D.
+Nếu D có chế độ khởi chạy {@code "standard"} mặc định, một thực thể mới của lớp sẽ được khởi chạy và
+chồng trở thành A-B-C-D-D. Tuy nhiên, nếu chế độ khởi chạy của D là {@code "singleTop"}, thực thể hiện tại 
+của D sẽ nhận ý định thông qua {@link
+android.app.Activity#onNewIntent onNewIntent()}, bởi nó nằm ở vị trí trên cùng của chồng&mdash;chồng
+vẫn là A-B-C-D. Tuy nhiên, nếu một ý định đến cho hoạt động loại B, khi đó một thực thể
+mới của B sẽ được thêm vào chồng ngay cả khi chế độ khởi chạy của nó là {@code "singleTop"}.</p>
+  <p class="note"><strong>Lưu ý:</strong> Khi một thực thể mới của hoạt động được tạo,
+người dùng có thể nhấn nút <em>Quay lại</em> để quay về hoạt động trước đó. Nhưng khi một thực thể
+hiện tại của
+hoạt động xử lý một ý định mới, người dùng không thể nhấn nút <em>Quay lại</em> để quay về trạng thái
+của
+hoạt động trước khi ý định mới đến trong {@link android.app.Activity#onNewIntent
+onNewIntent()}.</p>
+</dd>
+
+<dt>{@code "singleTask"}</dt>
+  <dd>Hệ thống sẽ tạo ra một tác vụ mới và khởi tạo hoạt động ở gốc của tác vụ mới.
+Tuy nhiên, nếu một thực thể của hoạt động đã tồn tại trong một tác vụ riêng, hệ thống sẽ định tuyến
+ý định tới thực thể hiện tại thông qua một lệnh gọi tới phương pháp {@link
+android.app.Activity#onNewIntent onNewIntent()} của nó thay vì tạo một thực thể mới. Chỉ
+một thực thể của hoạt động có thể tồn tại ở một thời điểm.
+  <p class="note"><strong>Lưu ý:</strong> Mặc dù hoạt động bắt đầu một tác vụ mới, nút
+<em>Quay lại</em> sẽ vẫn đưa người dùng quay về hoạt động trước đó.</p></dd>
+<dt>{@code "singleInstance"}.</dt>
+  <dd>Giống như {@code "singleTask"}, trừ khi hệ thống không khởi chạy bất kỳ hoạt động nào khác vào
+tác vụ đang nắm giữ thực thể. Hoạt động luôn là thành viên đơn lẻ và duy nhất của tác vụ;
+bất kỳ hoạt động nào được bắt đầu bởi hoạt động này sẽ mở ra trong một tác vụ riêng.</dd>
+</dl>
+
+
+<p>Lấy một ví dụ khác, ứng dụng Trình duyệt của Android khai báo rằng hoạt động trình duyệt web sẽ
+luôn mở tác vụ của chính mình&mdash;bằng cách quy định chế độ khởi chạy {@code singleTask} trong phần tử <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>.
+Điều này có nghĩa rằng nếu ứng dụng của bạn phát hành một
+ý định để mở Trình duyệt Android, hoạt động của nó <em>không</em> được đặt trong cùng
+tác vụ như ứng dụng của bạn. Thay vào đó, hoặc là một tác vụ mới bắt đầu cho Trình duyệt hoặc, nếu Trình duyệt
+đã có một tác vụ đang chạy trong nền thì tác vụ đó sẽ được đưa lên trước để xử lý
+ý định mới.</p>
+
+<p>Không phụ thuộc vào việc một hoạt động bắt đầu trong một tác vụ mới hay trong cùng tác vụ mà hoạt động
+đã bắt đầu, nút <em>Quay lại</em> sẽ luôn đưa người dùng về hoạt động trước đó. Tuy nhiên, nếu bạn
+bắt đầu một hoạt động mà quy định chế độ khởi chạy {@code singleTask}, khi đó nếu một thực thể của
+hoạt động đó tồn tại trong một tác vụ nền, toàn bộ tác vụ đó sẽ được đưa ra tiền cảnh. Tại thời điểm này
+, lúc này ngăn xếp bao gồm tất cả hoạt động từ tác vụ được mang ra, ở vị trí trên cùng của
+chồng. Hình 4 minh họa loại kịch bản này.</p>
+
+<img src="{@docRoot}images/fundamentals/diagram_backstack_singletask_multiactivity.png" alt="" />
+<p class="img-caption"><strong>Hình 4.</strong> Biểu diễn cách thức một hoạt động với
+chế độ khởi chạy "singleTask" được thêm vào ngăn xếp. Nếu hoạt động đã là một phần của một
+tác vụ nền với ngăn xếp của chính nó, khi đó toàn bộ ngăn xếp cũng tiến
+về phía trước, ở trên cùng tác vụ hiện tại.</p>
+
+<p>Để biết thêm thông tin về việc sử dụng các chế độ khởi chạy trong tệp bản kê khai, hãy xem tài liệu phần tử
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+, trong đó có trình bày thêm về thuộc tính {@code launchMode} và các giá trị
+được chấp nhận.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Hành vi mà bạn quy định cho hoạt động của mình bằng thuộc tính <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> có thể
+bị khống chế bởi cờ có ý định bắt đầu hoạt động của bạn, như được trình bày trong
+phần tiếp theo.</p>
+
+
+
+<h4 id="#IntentFlagsForTasks">Sử dụng cờ Ý định</h4>
+
+<p>Khi bắt đầu một hoạt động, bạn có thể sửa đổi liên kết mặc định giữa một hoạt động với tác vụ của nó
+bằng cách thêm cờ vào trong ý định mà bạn chuyển tới {@link
+android.app.Activity#startActivity startActivity()}. Những cờ mà bạn có thể sử dụng để sửa đổi
+hành vi mặc định là:</p>
+
+<p>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</dt>
+    <dd>Bắt đầu một hoạt động trong một tác vụ mới. Nếu đã có một tác vụ đang chạy cho hoạt động mà bạn đang
+bắt đầu, tác vụ đó sẽ được đưa ra tiền cảnh với trạng thái cuối cùng được khôi phục và hoạt động
+nhận ý định mới trong {@link android.app.Activity#onNewIntent onNewIntent()}.
+    <p>Điều này sẽ tạo ra cùng hành vi như giá trị {@code "singleTask"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>,
+đã được trình bày ở phần trước.</p></dd>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</dt>
+    <dd>Nếu hoạt động đang được bắt đầu là hoạt động hiện tại (ở trên cùng của ngăn xếp), khi đó
+thực thể hiện có sẽ nhận một lệnh gọi đến {@link android.app.Activity#onNewIntent onNewIntent()},
+thay vì tạo một thực thể của hoạt động mới.
+    <p>Điều này sẽ tạo ra cùng hành vi như giá trị {@code "singleTop"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>,
+đã được trình bày ở phần trước.</p></dd>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</dt>
+    <dd>Nếu hoạt động đang được bắt đầu đang chạy trong tác vụ hiện tại, khi đó
+thay vì khởi chạy một thực thể mới của hoạt động đó, tất cả các hoạt động khác bên trên nó đều
+bị hủy và ý định này được chuyển tới thực thể được tiếp tục của hoạt động (lúc này đang ở trên cùng),
+thông qua {@link android.app.Activity#onNewIntent onNewIntent()}).
+    <p>Không có giá trị cho thuộc tính <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
+mà sinh ra hành vi này.</p>
+    <p>{@code FLAG_ACTIVITY_CLEAR_TOP} được sử dụng thường xuyên nhất cùng với
+    {@code FLAG_ACTIVITY_NEW_TASK}.
+Khi được sử dụng cùng nhau, những cờ này là một cách để định vị hoạt động hiện tại
+trong một tác vụ khác và đặt nó vào vị trí nơi nó có thể hồi đáp ý định. </p>
+    <p class="note"><strong>Lưu ý:</strong> Nếu chế độ khởi chạy của hoạt động được chỉ định là
+    {@code "standard"},
+nó cũng bị loại bỏ khỏi chồng và một thực thể mới sẽ được khởi chạy thay chỗ nó để xử lý
+ý định đến.  Đó là bởi một thực thể mới luôn được tạo cho ý định mới khi chế độ khởi chạy
+là {@code "standard"}. </p>
+</dd>
+</dl>
+
+
+
+
+
+<h3 id="Affinities">Xử lý quan hệ</h3>
+
+<p><em>Quan hệ</em> sẽ cho biết một hoạt động ưu tiên thuộc về tác vụ nào hơn. Theo mặc định, tất cả
+các hoạt động từ cùng ứng dụng có quan hệ với nhau. Vì thế, theo mặc định, tất cả
+hoạt động trong cùng ứng dụng ưu tiên ở trong cùng tác vụ hơn. Tuy nhiên, bạn có thể sửa đổi
+quan hệ mặc định cho một hoạt động. Các hoạt động được định nghĩa trong
+các ứng dụng khác nhau có thể chia sẻ một quan hệ, hoặc các hoạt động được định nghĩa trong cùng ứng dụng có thể
+được gán các quan hệ tác vụ khác nhau.</p>
+
+<p>Bạn có thể sửa đổi quan hệ cho bất kỳ hoạt động đã cho nào bằng thuộc tính <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a> của
+phần tử <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+.</p>
+
+<p>Thuộc tính <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
+lấy một giá trị xâu, đó phải là giá trị duy nhất từ tên gói mặc định
+được khai báo trong phần tử <a href="{@docRoot}guide/topics/manifest/manifest-element.html">
+{@code &lt;manifest&gt;}
+</a>, do hệ thống sử dụng tên đó để nhận biết quan hệ
+tác vụ mặc định cho ứng dụng.</p>
+
+<p>Vấn đề quan hệ được xét trong hai trường hợp:</p>
+<ul>
+  <li>Khi ý định khởi chạy hoạt động chứa cờ
+  {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}
+.
+
+<p>Theo mặc định, một hoạt động mới được khởi chạy vào tác vụ của hoạt động
+đã gọi {@link android.app.Activity#startActivity startActivity()}. Nó được đẩy lên cùng
+ngăn xếp như trình gọi.  Tuy nhiên, nếu ý định được chuyển tới
+{@link android.app.Activity#startActivity startActivity()}
+chứa cờ {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}
+, hệ thống sẽ tìm một tác vụ khác để chứa hoạt động mới. Thường thì đó là một tác vụ mới.
+Tuy nhiên, không nhất thiết phải như vậy.  Nếu đã có một tác vụ hiện tại với cùng quan hệ như
+hoạt động mới, hoạt động sẽ được khởi chạy vào tác vụ đó.  Nếu không, nó sẽ bắt đầu một tác vụ mới.</p>
+
+<p>Nếu cờ này khiến một hoạt động bắt đầu một tác vụ mới và người dùng nhấn nút <em>Home</em>
+để rời
+nó thì phải có một cách nào đó để người dùng điều hướng quay lại tác vụ. Một số đối tượng (chẳng hạn như
+trình quản lý thông báo) luôn bắt đầu các hoạt động trong một tác vụ bên ngoài, không bao giờ bắt đầu trong chính tác vụ của mình, vì thế
+chúng luôn đặt {@code FLAG_ACTIVITY_NEW_TASK} vào ý định mà chúng chuyển tới
+{@link android.app.Activity#startActivity startActivity()}.
+Nếu bạn có một hoạt động có thể được gọi ra bởi
+một đối tượng bên ngoài mà có thể sử dụng cờ này, hãy lưu ý là người dùng có một cách độc lập để quay lại
+tác vụ đã được bắt đầu, chẳng hạn như bằng một biểu tượng trình khởi chạy (hoạt động gốc của tác vụ
+có một bộ lọc ý định {@link android.content.Intent#CATEGORY_LAUNCHER}; xem phần <a href="#Starting">Bắt đầu một tác vụ</a> ở bên dưới).</p>
+</li>
+
+  <li>Khi một hoạt động có thuộc tính <a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">
+{@code allowTaskReparenting}</a> của nó được đặt thành {@code "true"}.
+  <p>Trong trường hợp này, hoạt động có thể di chuyển từ tác vụ mà nó bắt đầu tới tác vụ mà nó có quan hệ
+ khi tác vụ đó đi ra tiền cảnh.</p>
+  <p>Ví dụ, giả sử rằng một hoạt động với chức năng báo cáo tình hình thời tiết ở các thành phố được chọn
+được định nghĩa là một phần trong một ứng dụng du lịch.  Nó có cùng quan hệ như các hoạt động khác trong cùng
+ứng dụng (quan hệ ứng dụng mặc định) và nó cho phép tạo lại tập mẹ với thuộc tính này.
+Khi một trong các hoạt động của bạn bắt đầu hoạt động trình báo cáo thời tiết, ban đầu nó thuộc về cùng
+tác vụ như hoạt động của bạn. Tuy nhiên, khi tác vụ của ứng dụng du lịch đi ra tiền cảnh, hoạt động
+của trình báo cáo thời tiết được gán lại cho tác vụ đó và được hiển thị bên trong nó.</p>
+</li>
+</ul>
+
+<p class="note"><strong>Mẹo:</strong> Nếu một tệp {@code .apk} chứa nhiều hơn một "ứng dụng"
+từ quan điểm của người dùng, bạn có thể muốn sử dụng thuộc tính <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
+để gán các quan hệ khác nhau cho hoạt động được liên kết với từng "ứng dụng".</p>
+
+
+
+<h3 id="Clearing">Xóa ngăn xếp</h3>
+
+<p>Nếu người dùng rời một tác vụ trong khoảng thời gian dài, hệ thống sẽ xóa tác vụ của tất cả hoạt động ngoại trừ
+hoạt động gốc.  Khi người dùng quay trở lại tác vụ, chỉ hoạt động gốc được khôi phục.
+Hệ thống sẽ hoạt động theo cách này, vì, sau một khoảng thời gian dài, người dùng có thể đã từ bỏ
+việc mà họ đang làm trước đó và quay lại tác vụ để bắt đầu một việc mới. </p>
+
+<p>Có một số thuộc tính hoạt động mà bạn có thể sử dụng để sửa đổi hành vi này: </p>
+
+<dl>
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#always">alwaysRetainTaskState</a></code>
+</dt>
+<dd>Nếu thuộc tính này được đặt thành {@code "true"} trong hoạt động gốc của một tác vụ,
+hành vi mặc định được mô tả sẽ không xảy ra.
+Tác vụ giữ lại tất cả hoạt động trong chồng của mình kể cả sau một khoảng thời gian dài.</dd>
+
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#clear">clearTaskOnLaunch</a></code></dt>
+<dd>Nếu thuộc tính này được đặt thành {@code "true"} trong hoạt động gốc của một tác vụ,
+chồng sẽ bị xóa tới hoạt động gốc bất cứ khi nào người dùng rời khỏi tác vụ
+và quay lại.  Nói cách khác, nó ngược với
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
+{@code alwaysRetainTaskState}</a>. Người dùng luôn quay lại tác vụ ở
+trạng thái ban đầu của nó, ngay cả sau khi rời khỏi tác vụ trong chỉ một lúc.</dd>
+
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTaskLaunch</a></code>
+</dt>
+<dd>Thuộc tính này giống như <a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">{@code clearTaskOnLaunch}</a>,
+nhưng nó hoạt động trên một tác vụ
+đơn lẻ chứ không phải một tác vụ toàn bộ.  Nó cũng có thể khiến bất kỳ hoạt động nào
+thoát mất, bao gồm cả hoạt động gốc.  Khi nó được đặt thành {@code "true"}, hoạt động
+vẫn là một bộ phận của tác vụ chỉ cho phiên làm việc hiện tại.  Nếu người dùng rời đi
+rồi quay lại tác vụ, nó không còn xuất hiện nữa.</dd>
+</dl>
+
+
+
+
+<h3 id="Starting">Bắt đầu một tác vụ</h3>
+
+<p>Bạn có thể thiết lập một hoạt động làm điểm bắt đầu cho một tác vụ bằng cách đưa cho nó một bộ lọc ý định với
+{@code "android.intent.action.MAIN"} là hành động được quy định và
+{@code "android.intent.category.LAUNCHER"}
+là thể loại được quy định. Ví dụ:</p>
+
+<pre>
+&lt;activity ... &gt;
+    &lt;intent-filter ... &gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+    ...
+&lt;/activity&gt;
+</pre>
+
+<p>Một bộ lọc ý định loại này khiến một biểu tượng và nhãn cho
+hoạt động được hiển thị trong trình khởi chạy ứng dụng, cho phép người dùng khởi chạy hoạt động và
+quay lại tác vụ mà nó tạo ra vào bất cứ lúc nào sau khi nó được khởi chạy.
+</p>
+
+<p>Khả năng thứ hai này là quan trọng: Người dùng chắc chắn có thể rời một tác vụ rồi quay lại
+sau bằng cách sử dụng trình khởi chạy hoạt động này. Vì lý do này, hai <a href="#LaunchModes">chế độ
+khởi chạy</a> mà đánh dấu các hoạt động là luôn khởi tạo một tác vụ, {@code "singleTask"} và
+{@code "singleInstance"}, sẽ chỉ được sử dụng khi hoạt động có một
+{@link android.content.Intent#ACTION_MAIN}
+và một bộ lọc {@link android.content.Intent#CATEGORY_LAUNCHER}. Ví dụ, hãy tưởng tượng chuyện gì
+sẽ xảy ra nếu thiếu bộ lọc: Một ý định khởi chạy một hoạt động {@code "singleTask"}, khởi đầu một
+tác vụ mới và người dùng dành một khoảng thời gian làm việc trong tác vụ đó. Khi đó, người dùng nhấn nút <em>Home</em>
+. Lúc này, tác vụ được gửi tới nền và không hiển thị. Bây giờ, người dùng không có cách nào để quay lại
+tác vụ bởi nó không được biểu diễn trong trình khởi chạy ứng dụng.</p>
+
+<p>Đối với những trường hợp mà bạn không muốn người dùng có thể quay lại một hoạt động, hãy đặt giá trị của phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+, 
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">{@code finishOnTaskLaunch}</a>
+thành {@code "true"} (xem <a href="#Clearing">Xóa chồng</a>).</p>
+
+<p>Bạn có thể tham khảo thêm thông tin về cách các tác vụ và hoạt động được trình bày và quản lý trong
+màn hình tổng quan sẵn có tại phần <a href="{@docRoot}guide/components/recents.html">
+Màn hình Tổng quan</a>.</p>
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For more information about how to use intents to
+activate other application components and publish the intents to which your components
+respond, continue with the <b><a
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent
+Filters</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/vi/guide/index.jd b/docs/html-intl/intl/vi/guide/index.jd
new file mode 100644
index 0000000..7be2d89
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/index.jd
@@ -0,0 +1,74 @@
+page.title=Giới thiệu về Android
+
+@jd:body
+
+
+<div class="sidebox" style="width:220px"><!-- width to match col-4 below -->
+<p>Để tìm hiểu về cách các ứng dụng hoạt động, hãy bắt đầu với phần
+<a href="{@docRoot}guide/components/fundamentals.html">Đại cương về Ứng dụng</a>.</p>
+<p>Để bắt đầu ngay với việc viết mã, hãy đọc phần <a href="{@docRoot}training/basics/firstapp/index.html">Xây dựng Ứng dụng Đầu tiên của Bạn</a>.</p>
+</div>
+
+<p>Android cung cấp một khuôn khổ ứng dụng phong phú cho phép bạn xây dựng các ứng dụng và trò chơi mới
+cho các thiết bị di động trong môi trường ngôn ngữ Java. Tài liệu được liệt kê trong vùng điều hướng
+bên trái sẽ cung cấp chi tiết về cách xây dựng ứng dụng bằng cách sử dụng các API khác nhau của Android.</p>
+
+<p>Nếu bạn mới làm quen với việc phát triển Android, quan trọng là bạn phải hiểu
+những khái niệm cơ bản sau về khuôn khổ ứng dụng Android:</p>
+
+
+<div class="landing-banner">
+
+<div class="col-6">
+
+<h4>Các ứng dụng cung cấp nhiều điểm nhập</h4>
+
+<p>Các ứng dụng Android được tích hợp như một sự kết hợp giữa các thành phần khác nhau có thể được gọi ra
+riêng. Ví dụ, một <em>hoạt động</em> riêng lẻ cung cấp một màn hình
+duy nhất cho một giao diện người dùng, và một <em>dịch vụ</em> chạy ngầm thực hiện độc lập
+công việc.</p>
+
+<p>Từ một thành phần, bạn có thể khởi động một thành phần khác bằng cách sử dụng một <em>ý định</em>. Thậm chí bạn có thể bắt đầu
+một thành phần trong một ứng dụng khác, chẳng hạn như một hoạt động trong một ứng dụng bản đồ để hiển thị một địa chỉ. Mô hình này
+cung cấp nhiều điểm nhập cho một ứng dụng duy nhất và cho phép bất kỳ ứng dụng nào xử lý như "mặc định"
+của một người dùng đối với một hành động mà các ứng dụng khác có thể gọi ra.</p>
+
+
+<p><b>Tìm hiểu thêm:</b></p>
+<ul class="nolist">
+<li><a href="{@docRoot}guide/components/fundamentals.html">Đại cương về Ứng dụng</a>
+<li><a href="{@docRoot}guide/components/intents-filters.html">Ý định và Bộ lọc Ý định</a>
+<li><a href="{@docRoot}guide/components/activities.html">Hoạt động</a>
+</ul>
+
+</div>
+
+
+<div class="col-6">
+
+<h4>Các ứng dụng sẽ thích ứng theo các thiết bị khác nhau</h4>
+
+<p>Android cung cấp một khuôn khổ ứng dụng thích ứng cho phép bạn cung cấp các tài nguyên duy nhất
+cho các cấu hình thiết bị khác nhau. Ví dụ, bạn có thể tạo các tệp bố trí
+XML khác nhau cho các kích cỡ màn hình khác nhau và hệ thống
+sẽ xác định bố trí nào sẽ áp dụng dựa trên kích cỡ màn hình hiện tại của thiết bị.</p>
+
+<p>Bạn có thể truy vấn về sự sẵn có của các tính năng trên thiết bị vào thời gian chạy nếu bất kỳ tính năng nào của ứng dụng
+yêu cầu phần cứng cụ thể, chẳng hạn như máy ảnh. Nếu cần, bạn cũng có thể khai báo các tính năng mà ứng dụng của mình yêu cầu
+vì vậy, những chợ ứng dụng như Google Play Store không cho phép cài đặt trên những thiết bị không hỗ trợ
+tính năng đó.</p>
+
+
+<p><b>Tìm hiểu thêm:</b></p>
+<ul class="nolist">
+<li><a href="{@docRoot}guide/practices/compatibility.html">Tính tương thích của Thiết bị</a>
+<li><a href="{@docRoot}guide/topics/resources/overview.html">Tổng quan về Tài nguyên</a>
+<li><a href="{@docRoot}guide/topics/ui/overview.html">Tổng quan về Giao diện Người dùng</a>
+</ul>
+
+</div>
+
+</div><!-- end landing-banner -->
+
+
+
diff --git a/docs/html-intl/intl/vi/guide/topics/manifest/manifest-intro.jd b/docs/html-intl/intl/vi/guide/topics/manifest/manifest-intro.jd
new file mode 100644
index 0000000..ca2ed26
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/manifest/manifest-intro.jd
@@ -0,0 +1,517 @@
+page.title=Bản kê khai Ứng dụng
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Trong tài liệu này</h2>
+<ol>
+<li><a href="#filestruct">Cấu trúc của Tệp Bản kê khai</a></li>
+<li><a href="#filec">Các Quy ước Tệp</a>
+<li><a href="#filef">Các Tính năng Tệp</a>
+	<ol>
+	<li><a href="#ifs">Bộ lọc Ý định</a></li>
+	<li><a href="#iconlabel">Biểu tượng và Nhãn</a></li>
+	<li><a href="#perms">Quyền</a></li>
+	<li><a href="#libs">Thư viện</a></li>
+	</ol></li>
+</ol>
+</div>
+</div>
+
+<p>
+  Mọi ứng dụng đều phải có một tệp AndroidManifest.xml (chính xác là
+  tên gọi này) trong thư mục gốc của mình. <span itemprop="description">Tệp bản kê khai
+  trình bày những thông tin thiết yếu về ứng dụng của bạn với hệ thống Android,
+  thông tin mà hệ thống phải có trước khi có thể chạy bất kỳ mã nào
+  của ứng dụng.</span> Ngoài một số mục đích khác, bản kê khai thực hiện những điều sau:
+</p>
+
+<ul>
+<li>Nó đặt tên gói Java cho ứng dụng.
+Tên gói đóng vai trò như một mã nhận diện duy nhất cho ứng dụng.</li>
+
+<li>Nó mô tả các thành phần của ứng dụng &mdash; hoạt động, 
+dịch vụ, hàm nhận quảng bá, và trình cung cấp nội dung mà ứng dụng 
+được soạn bởi.  Nó đặt tên các lớp triển khai từng thành phần và 
+công bố các khả năng của chúng (ví dụ, những tin nhắn {@link android.content.Intent 
+Intent} mà chúng có thể xử lý).  Những khai báo này cho phép hệ thống Android 
+biết các thành phần là gì và chúng có thể được khởi chạy trong những điều kiện nào.</li>
+
+<li>Nó xác định những tiến trình nào sẽ lưu trữ các thành phần ứng dụng.</li>  
+
+<li>Nó khai báo các quyền mà ứng dụng phải có để 
+truy cập các phần được bảo vệ của API và tương tác với các ứng dụng khác.</li>  
+
+<li>Nó cũng khai báo các quyền mà ứng dụng khác phải có để 
+tương tác với các thành phần của ứng dụng.</li>
+
+<li>Nó liệt kê các lớp {@link android.app.Instrumentation} cung cấp 
+tính năng tạo hồ sơ và các thông tin khác khi ứng dụng đang chạy.  Những khai báo này 
+chỉ xuất hiện trong bản kê khai khi ứng dụng đang được phát triển và 
+thử nghiệm; chúng bị loại bỏ trước khi ứng dụng được công bố.</li>
+
+<li>Nó khai báo mức tối thiểu của API Android mà ứng dụng 
+yêu cầu.</li>
+
+<li>Nó liệt kê các thư viện mà ứng dụng phải được liên kết với.</li>
+</ul>
+
+
+<h2 id="filestruct">Cấu trúc của Tệp Bản kê khai</h2>
+
+<p>
+Sơ đồ bên dưới minh họa cấu trúc chung của tệp bản kê khai và mọi 
+phần tử mà nó có thể chứa.  Từng phần tử, cùng với tất cả thuộc tính 
+của mình, sẽ được lập tài liệu theo dõi đầy đủ vào một tệp riêng.  Để xem thông tin 
+chi tiết về mọi phần tử, hãy nhấp vào tên phần tử trong sơ đồ, 
+trong danh sách các phần tử theo thứ tự chữ cái mà tuân theo sơ đồ, hoặc trên bất kỳ
+nội dung nào khác đề cập tới tên phần tử. 
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
+
+    <a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration /&gt;</a>  <!-- ##api level 3## -->
+    <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature /&gt;</a>  <!-- ##api level 4## -->
+    <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens /&gt;</a>  <!-- ##api level 4## -->
+    <a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html">&lt;compatible-screens /&gt;</a>  <!-- ##api level 9## -->
+    <a href="{@docRoot}guide/topics/manifest/supports-gl-texture-element.html">&lt;supports-gl-texture /&gt;</a>  <!-- ##api level 11## -->
+
+    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action /&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category /&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;/activity&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;/activity-alias&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data/&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;/service&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;/receiver&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/path-permission-element.html">&lt;path-permission /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;/provider&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library /&gt;</a>
+
+    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;/application&gt;</a>
+
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;/manifest&gt;</a>
+</pre>
+
+<p>
+Tất cả phần tử có thể xuất hiện trong tệp bản kê khai được liệt kê ở bên dưới 
+theo thứ tự chữ cái.  Đây là những phần tử hợp pháp duy nhất; bạn không thể 
+thêm các phần tử hay thuộc tính của chính mình.  
+</p>
+
+<p style="margin-left: 2em">
+<code><a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens&gt;</a></code>  <!-- ##api level 4## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration&gt;</a></code>  <!-- ##api level 3## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature&gt;</a></code>  <!-- ##api level 4## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</a></code>
+</p>
+
+
+    
+
+<h2 id="filec">Các Quy ước Tệp</h2>
+
+<p>
+Một số quy ước và quy tắc áp dụng chung cho tất cả các phần tử và thuộc tính 
+trong bản kê khai:
+</p>
+
+<dl>
+<dt><b>Phần tử</b></dt>
+<dd>Chỉ các phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> và
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+là bắt buộc phải có, chúng đều phải có mặt và chỉ có thể xảy ra một lần.  
+Hầu hết các phần tử khác có thể xảy ra nhiều lần hoặc không xảy ra &mdash; mặc dù ít 
+nhất một vài trong số chúng phải có mặt để bản kê khai thực sự có 
+ý nghĩa nào đó.
+
+<p>
+Nếu một phần tử chứa bất kỳ nội dung nào, nó có thể chứa các phần tử khác.  
+Tất cả giá trị sẽ được đặt thông qua thuộc tính, chứ không phải là dữ liệu ký tự trong một phần tử.
+</p>
+
+<p>
+Các phần tử cùng cấp thường không theo thứ tự.  Ví dụ, các phần tử
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>, 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>, và 
+<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code> 
+có thể được trộn lẫn với nhau theo bất kỳ trình tự nào.  (Phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
+là trường hợp ngoại lệ đối với quy tắc này:  Nó phải tuân theo 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 
+, đối tượng mà nó là bí danh cho.)
+</p></dd>
+
+<dt><b>Thuộc tính</b></dt>
+<dd>Theo cách hiểu thông thường, tất cả thuộc tính đều mang tính tùy chọn.  Tuy nhiên, có một số thuộc tính 
+phải được quy định cho một phần tử để hoàn thành mục đích của nó.  Sử dụng 
+tài liệu làm hướng dẫn.  Đối với những thuộc tính thực sự tùy chọn, nó đề cập tới một giá trị
+mặc định hoặc thông báo điều gì sẽ xảy ra nếu không có một đặc tả.
+
+<p>Ngoài một số thuộc tính của phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> 
+gốc, tất cả tên thuộc tính đều bắt đầu bằng một tiền tố {@code android:}&mdash; 
+ví dụ, {@code android:alwaysRetainTaskState}.  Do tiền tố này 
+phổ dụng, tài liệu thường bỏ sót nó khi tham chiếu tới các thuộc tính 
+theo tên.</p></dd>
+
+<dt><b>Khai báo tên lớp</b></dt>
+<dd>Nhiều thuộc tính tương ứng với các đối tượng Java, bao gồm các phần tử cho 
+chính ứng dụng (phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+) và các thành phần chính của nó &mdash; hoạt động 
+(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>), 
+dịch vụ 
+(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>), 
+hàm nhận quảng bá 
+(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>), 
+và trình cung cấp nội dung 
+(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>).  
+
+<p>
+Nếu bạn định nghĩa một lớp con như vẫn luôn làm đối với lớp thành phần 
+({@link android.app.Activity}, {@link android.app.Service}, 
+{@link android.content.BroadcastReceiver}, và {@link android.content.ContentProvider}), 
+lớp con sẽ được khai báo thông qua một thuộc tính {@code name}.  Tên phải bao gồm 
+chỉ định gói đầy đủ.  
+Ví dụ, một lớp con {@link android.app.Service} có thể được khai báo như sau:
+</p>
+
+<pre>&lt;manifest . . . &gt;
+    &lt;application . . . &gt;
+        &lt;service android:name="com.example.project.SecretService" . . . &gt;
+            . . .
+        &lt;/service&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+Tuy nhiên, do cách viết tốc ký, nếu ký tự đầu tiên của xâu là một dấu chấm, 
+xâu sẽ được nối với tên gói của ứng dụng (như được quy định bởi 
+thuộc tính của phần tử <code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> 
+
+<code>, <a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code> 
+).  Cách gán sau cũng giống như trên: 
+</p>
+
+<pre>&lt;manifest package="com.example.project" . . . &gt;
+    &lt;application . . . &gt;
+        &lt;service android:name=".SecretService" . . . &gt;
+            . . .
+        &lt;/service&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+Khi khởi động một thành phần, Android sẽ tạo một thực thể của lớp con được nêu tên.  
+Nếu lớp con không được quy định, nó sẽ tạo một thực thể của lớp cơ sở.
+</p></dd>
+
+<dt><b>Nhiều giá trị</b></dt>
+<dd>Nếu có thể quy định nhiều hơn một giá trị, phần tử gần như luôn 
+được lặp lại, thay vì liệt kê nhiều giá trị trong một phần tử duy nhất.  
+Ví dụ, một bộ lọc ý định có thể liệt kê vài hành động:
+
+<pre>&lt;intent-filter . . . &gt;
+    &lt;action android:name="android.intent.action.EDIT" /&gt;
+    &lt;action android:name="android.intent.action.INSERT" /&gt;
+    &lt;action android:name="android.intent.action.DELETE" /&gt;
+    . . .
+&lt;/intent-filter&gt;</pre></dd>
+
+<dt><b>Giá trị tài nguyên</b></dt>
+<dd>Một số thuộc tính có các giá trị có thể được hiển thị với người dùng &mdash; ví 
+dụ, một nhãn và một biểu tượng cho một hoạt động.  Giá trị của những thuộc tính này 
+cần được cục bộ hóa và vì thế phải được thiết đặt từ một tài nguyên hoặc chủ đề.  Giá trị 
+tài nguyên được biểu diễn theo định dạng sau,</p>
+
+<p style="margin-left: 2em">{@code @[<i>gói</i>:]<i>kiểu</i>:<i>tên</i>}</p>
+
+<p>
+trong đó <i>gói</i> có thể được bỏ qua nếu tài nguyên nằm trong cùng gói 
+với ứng dụng, <i>kiểu</i> là kiểu của tài nguyên &mdash; chẳng hạn như "xâu" hoặc 
+&mdash; "vẽ được" và <i>tên</i> là tên nhận biết tài nguyên cụ thể.  
+Ví dụ:
+</p>
+
+<pre>&lt;activity android:icon="@drawable/smallPic" . . . &gt</pre>
+
+<p>
+Các giá trị từ một chủ đề được biểu diễn theo cách tương tự, nhưng với một '{@code ?}' 
+thay vì '{@code @}' ở đầu:
+</p>
+
+<p style="margin-left: 2em">{@code ?[<i>gói</i>:]<i>kiểu</i>:<i>tên</i>}
+</p></dd>
+
+<dt><b>Giá trị xâu</b></dt>
+<dd>Trường hợp giá trị của một thuộc tính là một xâu, phải sử dụng hai dấu xuyệc ngược ('{@code \\}') 
+để thoát các ký tự &mdash; ví dụ, '{@code \\n}' đối với 
+một dòng tin tức hoặc '{@code \\uxxxx}' đối với một ký tự Unicode.</dd>
+</dl>
+
+
+<h2 id="filef">Các Tính năng Tệp</h2>
+
+<p>
+Phần sau đây mô tả cách phản ánh một số tính năng của Android 
+trong tệp bản kê khai.
+</p>
+
+
+<h3 id="ifs">Bộ lọc Ý định</h3>
+
+<p>
+Các thành phần cốt lõi của một ứng dụng (hoạt động, dịch vụ và hàm nhận 
+quảng bá) được kích hoạt bởi <i>ý định</i>.  Ý định là một 
+gói thông tin (một đối tượng {@link android.content.Intent}) mô tả một 
+hành động mong muốn &mdash; bao gồm dữ liệu sẽ được dựa trên, thể loại của 
+thành phần mà sẽ thực hiện hành động, và các chỉ dẫn thích hợp khác.  
+Android định vị một thành phần phù hợp để hồi đáp ý định, khởi chạy 
+một thực thể mới của thành phần nếu cần, và chuyển cho nó đối tượng đó 
+Ý định.
+</p>
+
+<p>
+Các thành phần sẽ quảng cáo khả năng của mình &mdash; các kiểu ý định mà chúng có thể 
+hồi đáp &mdash; thông qua <i>các bộ lọc ý định</i>.  Do hệ thống Android phải 
+tìm hiểu một thành phần có thể xử lý những ý định nào trước khi khởi chạy thành phần đó, 
+bộ lọc ý định được quy định trong bản kê khai như là các phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+.  Một thành phần có thể có nhiều bộ lọc, mỗi bộ lọc lại mô tả 
+một khả năng khác nhau.
+</p>
+
+<p>
+Một ý định mà công khai nêu tên một thành phần mục tiêu sẽ kích hoạt thành phần đó;
+bộ lọc không có vai trò gì ở đây.  Nhưng một ý định mà không quy định một mục tiêu
+theo tên sẽ chỉ có thể kích hoạt thành phần nếu nó có thể chuyển qua một trong các bộ lọc của
+thành phần.
+</p>
+
+<p>
+Để biết thông tin về cách các đối tượng Ý định được kiểm tra thông qua bộ lọc ý định, 
+hãy xem tài liệu riêng có tiêu đề 
+<a href="{@docRoot}guide/components/intents-filters.html">Ý định 
+và Bộ lọc Ý định</a>.
+</p>
+
+
+<h3 id="iconlabel">Biểu tượng và Nhãn</h3>
+
+<p>
+Nhiều phần tử có thuộc tính {@code icon} và {@code label} cho một 
+biểu tượng nhỏ và nhãn văn bản mà có thể được hiển thị với người dùng.  Một số cũng có thuộc tính 
+{@code description} cho văn bản giải trình dài hơn mà cũng có thể 
+được hiển thị trên màn hình.  Ví dụ, phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+có cả ba thuộc tính này, vì thế khi người dùng được hỏi xem có 
+cấp quyền cho một ứng dụng yêu cầu hay không, biểu tượng thể hiện 
+quyền, tên của quyền, và mô tả nội dung
+của quyền đó đều có thể được trình bày cho người dùng xem.
+</p>
+
+<p>
+Trong mọi trường hợp, biểu tượng và nhãn được đặt trong một phần tử chứa sẽ trở thành các thiết đặt 
+{@code icon} và {@code label} mặc định cho tất cả phần tử con của bộ chứa đó.  
+Vì thế, biểu tượng và nhãn được đặt trong phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+là biểu tượng và nhãn mặc định cho từng thành phần của ứng dụng.  
+Tương tự, biểu tượng và nhãn được đặt cho một thành phần &mdash; ví dụ, một phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 
+&mdash; sẽ là các cài đặt mặc định cho từng phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> 
+của thành phần đó.  Nếu một phần tử
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
+thiết đặt một nhãn, nhưng hoạt động và bộ lọc ý định của nó thì không, 
+nhãn ứng dụng sẽ được coi là nhãn của cả hoạt động và 
+bộ lọc ý định.
+</p>
+
+<p>
+Biểu tượng và nhãn được đặt cho một bộ lọc ý định sẽ được sử dụng để biểu diễn một thành phần 
+bất cứ khi nào thành phần đó được trình bày với người dùng để thực hiện chức năng
+mà bộ lọc đã quảng cáo.  Ví dụ, một bộ lọc với các thiết đặt 
+"{@code android.intent.action.MAIN}" và 
+"{@code android.intent.category.LAUNCHER}" quảng cáo một hoạt động 
+là hoạt động khởi đầu một ứng dụng &mdash; cụ thể, là
+hoạt động sẽ được hiển thị trong trình khởi chạy ứng dụng.  Vì thế, biểu tượng và nhãn 
+được đặt trong bộ lọc là những nội dung được hiển thị trong trình khởi chạy.
+</p>
+
+
+<h3 id="perms">Quyền</h3>
+
+<p>
+Một <i>quyền</i> là sự hạn chế giới hạn truy cập vào một phần của mã 
+hoặc vào dữ liệu trên thiết bị.   Giới hạn này được áp đặt nhằm bảo vệ dữ liệu 
+và mã trọng yếu, có thể bị lạm dụng để bóp méo hoặc làm hỏng trải nghiệm người dùng.  
+</p>
+
+<p>
+Mỗi quyền được nhận biết bằng một nhãn duy nhất.  Thông thường, nhãn cho biết 
+hành động bị hạn chế.  Ví dụ, sau đây là một số quyền được định nghĩa 
+bởi Android:
+</p>
+
+<p style="margin-left: 2em">{@code android.permission.CALL_EMERGENCY_NUMBERS}
+<br/>{@code android.permission.READ_OWNER_DATA}
+<br/>{@code android.permission.SET_WALLPAPER}
+<br/>{@code android.permission.DEVICE_POWER}</p>
+
+<p>
+Một tính năng có thể được bảo vệ bởi nhiều nhất một quyền.
+</p>
+
+<p>
+Nếu một ứng dụng cần truy cập vào một tính năng được bảo vệ bởi một quyền, 
+nó phải khai báo rằng nó yêu cầu quyền đó cùng với một phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 
+trong bản kê khai.  Lúc đó, khi ứng dụng được cài đặt trên 
+thiết bị, trình cài đặt sẽ xác định xem có cấp quyền 
+được yêu cầu hay không bằng cách kiểm tra các thẩm quyền đã ký chứng chỉ 
+của ứng dụng và trong một số trường hợp, bằng cách hỏi người dùng.  
+Nếu quyền được cấp, ứng dụng có thể sử dụng các tính năng 
+được bảo vệ.  Nếu không, việc thử truy cập những tính năng đó sẽ thất bại
+mà không có bất kỳ thông báo nào cho người dùng. 
+</p>
+
+<p>
+Một ứng dụng cũng có thể bảo vệ các thành phần của chính nó (hoạt động, dịch vụ, 
+hàm nhận quảng bá và trình cung cấp nội dung) bằng các quyền.  Nó có thể sử dụng 
+bất kỳ quyền nào được định nghĩa bởi Android (được liệt kê trong 
+{@link android.Manifest.permission android.Manifest.permission}) hoặc được khai báo 
+bởi các ứng dụng khác.  Hoặc nó có thể tự định nghĩa quyền của mình.  Một quyền mới được khai báo 
+bằng phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+.  Ví dụ, một hoạt động có thể được bảo vệ như sau:
+</p>
+
+<pre>
+&lt;manifest . . . &gt;
+    &lt;permission android:name="com.example.project.DEBIT_ACCT" . . . /&gt;
+    &lt;uses-permission android:name="com.example.project.DEBIT_ACCT" /&gt;
+    . . .
+    &lt;application . . .&gt;
+        &lt;activity android:name="com.example.project.FreneticActivity"
+                  android:permission="com.example.project.DEBIT_ACCT"
+                  . . . &gt;
+            . . .
+        &lt;/activity&gt;
+    &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+
+<p>
+Lưu ý rằng trong ví dụ này, quyền {@code DEBIT_ACCT} không chỉ 
+được khai báo bằng phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+, việc sử dụng quyền cũng được yêu cầu bằng phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 
+.  Phải yêu cầu sử dụng quyền để các thành phần khác của 
+ứng dụng nhằm khởi chạy hoạt động được bảo vệ, mặc dù việc bảo vệ 
+do chính ứng dụng áp đặt.  
+</p>
+
+<p>
+Trong cùng ví dụ này, nếu thuộc tính {@code permission} được đặt thành một quyền 
+được khai báo ở nơi khác 
+(chẳng hạn như {@code android.permission.CALL_EMERGENCY_NUMBERS}, sẽ không 
+cần phải khai báo lại nó bằng một phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+.  Tuy nhiên, sẽ vẫn cần phải yêu cầu sử dụng nó bằng 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>. 
+</p>
+
+<p>
+Phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code> 
+sẽ khai báo một vùng tên cho nhóm quyền mà sẽ được định nghĩa trong 
+mã.  Và 
+<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+sẽ định nghĩa một nhãn cho một tập hợp quyền (cả được khai báo trong bản kê khai bằng phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 
+và được khai báo ở chỗ khác).  Nó chỉ ảnh hưởng tới cách các quyền được 
+nhóm lại khi được trình bày với người dùng.  Phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+không quy định những quyền nào thuộc về nhóm; 
+nó chỉ đặt cho nhóm một cái tên.  Một quyền được đặt vào nhóm
+bằng cách gán tên nhóm với thuộc tính của phần tử
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 
+, 
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code> 
+.
+</p>
+
+
+<h3 id="libs">Thư viện</h3>
+
+<p>
+Mọi ứng dụng đều được liên kết với thư viện Android mặc định, nó 
+bao gồm các gói cơ bản để xây dựng ứng dụng (bằng các lớp thông dụng 
+chẳng hạn như Hoạt động, Dịch vụ, Ý định, Dạng xem, Nút, Ứng dụng, Trình cung cấp Nội dung, 
+v.v.).
+</p>
+
+<p>
+Tuy nhiên, một số gói nằm trong thư viện của chính mình.  Nếu ứng dụng của bạn 
+sử dụng mã từ bất kỳ gói nào trong những gói này, nó phải công khai yêu cầu được liên kết 
+với chúng.  Bản kê khai phải chứa một phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code> 
+riêng để đặt tên cho từng thư viện.  (Tên thư viện có thể được tìm thấy trong tài liệu 
+của gói.)
+</p>
diff --git a/docs/html-intl/intl/vi/guide/topics/providers/calendar-provider.jd b/docs/html-intl/intl/vi/guide/topics/providers/calendar-provider.jd
new file mode 100644
index 0000000..e2ecdb3
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/providers/calendar-provider.jd
@@ -0,0 +1,1184 @@
+page.title=Trình cung cấp Lịch
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+    <h2>Trong tài liệu này</h2>
+    <ol>
+  <li><a href="#overview">Nội dung Cơ bản</a></li>
+  <li><a href="#manifest">Quyền của Người dùng</a></li>
+  <li><a href="#calendar">Bảng Lịch</a>
+<ol>
+      <li><a href="#query">Truy vấn một lịch</a></li>
+      <li><a href="#modify-calendar">Sửa đổi một lịch</a></li>
+      <li><a href="#insert-calendar">Chèn một lịch</a></li>
+    </ol>
+  </li>
+  <li><a href="#events">Bảng Sự kiện</a>
+<ol>
+      <li><a href="#add-event">Thêm Sự kiện</a></li>
+      <li><a href="#update-event">Cập nhật Sự kiện</a></li>
+      <li><a href="#delete-event">Xóa Sự kiện</a></li>
+    </ol>
+  </li>
+  <li><a href="#attendees">Bảng Người dự</a>
+<ol>
+      <li><a href="#add-attendees">Thêm Người dự</a></li>
+    </ol>
+  </li>
+  <li><a href="#reminders">Bảng Nhắc nhở</a>
+<ol>
+      <li><a href="#add-reminders">Thêm Nhắc nhở</a></li>
+    </ol>
+  </li>
+  <li><a href="#instances">Bảng Thực thể</a>
+  <ol>
+      <li><a href="#query-instances">Truy vấn bảng Thực thể</a></li>
+  </ol></li>
+  <li><a href="#intents">Ý định Lịch</a>
+  <ol>
+      <li><a href="#intent-insert">Sử dụng ý định để chèn một sự kiện</a></li>
+      <li><a href="#intent-edit">Sử dụng ý định để chỉnh sửa một sự kiện</a></li>
+      <li><a href="#intent-view">Sử dụng ý định để xem dữ liệu lịch</a></li>
+    </ol>
+  </li>
+  
+  <li><a href="#sync-adapter">Trình điều hợp Đồng bộ</a></li>
+</ol>
+
+    <h2>Lớp khóa</h2>
+    <ol>
+      <li>{@link android.provider.CalendarContract.Calendars}</li>
+      <li>{@link android.provider.CalendarContract.Events}</li>
+      <li>{@link android.provider.CalendarContract.Attendees}</li>
+      <li>{@link android.provider.CalendarContract.Reminders}</li>
+    </ol>
+</div>
+</div>
+
+<p>Trình cung cấp Lịch là một kho lưu trữ các sự kiện lịch của người dùng. API
+Trình cung cấp Lịch cho phép bạn thực hiện truy vấn, chèn, cập nhật và xóa
+các thao tác trên lịch, sự kiện, người dự, nhắc nhở, v.v.</p>
+
+
+<p>API Trình cung cấp Lịch có thể được sử dụng bởi các ứng dụng và trình điều hợp đồng bộ. Các quy tắc
+thay đổi tùy vào loại chương trình đang thực hiện lệnh gọi. Tài liệu này
+tập trung chủ yếu vào việc sử dụng API Trình cung cấp Lịch như một ứng dụng. Để bàn 
+về việc các trình điều hợp đồng bộ khác nhau như thế nào, hãy xem phần 
+<a href="#sync-adapter">Trình điều hợp Đồng bộ</a>.</p>
+
+
+<p>Thông thường, để đọc hoặc ghi dữ liệu lịch, bản kê khai của ứng dụng phải
+bao gồm các quyền thích hợp của người dùng, được nêu trong phần <a href="#manifest">Quyền
+của Người dùng</a>. Để thực hiện các thao tác chung dễ hơn, Trình cung cấp
+Lịch đưa ra một tập hợp ý định, như được mô tả trong phần <a href="#intents">Ý định
+Lịch</a>. Những ý định này đưa người dùng tới ứng dụng Lịch để chèn, xem,
+và chỉnh sửa sự kiện. Người dùng tương tác với ứng dụng Lịch rồi
+quay lại ứng dụng ban đầu. Vì thế, ứng dụng của bạn không cần yêu cầu quyền,
+và cũng không cần cung cấp một giao diện người dùng để xem hoặc tạo sự kiện.</p>
+
+<h2 id="overview">Nội dung Cơ bản</h2>
+
+<p><a href="{@docRoot}guide/topics/providers/content-providers.html">Các trình cung cấp nội dung</a> sẽ lưu trữ dữ liệu và cho phép truy cập 
+ứng dụng. Trình cung cấp nội dung được nền tảng Android giới thiệu (bao gồm Trình cung cấp Lịch) thường trình bày dữ liệu như một tập hợp gồm nhiều bảng dựa trên một
+mô hình cơ sở dữ liệu quan hệ, trong đó mỗi hàng là một bản ghi và mỗi cột là dữ liệu thuộc
+một loại và có ý nghĩa cụ thể. Thông qua API Trình cung cấp Lịch, các ứng dụng
+và trình điều hợp đồng bộ có thể nhận được quyền truy cập đọc/ghi vào các bảng trong cơ sở dữ liệu là nơi chứa
+dữ liệu lịch của người dùng.</p>
+
+<p>Mọi trình cung cấp nội dung đều đưa ra một URI công khai (được bẻ dòng như một đối tượng 
+{@link android.net.Uri}
+) để xác định tập dữ liệu của nó một cách duy nhất.  Trình cung cấp nội dung mà kiểm soát nhiều
+ tập dữ liệu (nhiều bảng) sẽ đưa ra một URI riêng cho từng bảng.  Tất cả 
+URI cho trình cung cấp đều bắt đầu bằng xâu "content://".  Điều này
+sẽ xác định dữ liệu là đang được kiểm soát bởi một trình cung cấp nội dung. Trình cung cấp
+Lịch định nghĩa các hằng số cho URI đối với từng lớp (bảng) của nó. Những URI
+này có định dạng <code><em>&lt;class&gt;</em>.CONTENT_URI</code>. Ví
+dụ, {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}.</p>
+
+<p>Hình 1 cho biết biểu diễn đồ họa của mô hình dữ liệu Trình cung cấp Lịch. Nó cho biết
+các bảng chính và các trường liên kết chúng với nhau.</p>
+
+<img src="{@docRoot}images/providers/datamodel.png" alt="Calendar Provider Data Model" />
+<p class="img-caption"><strong>Hình 1.</strong> Mô hình dữ liệu Trình cung cấp Lịch.</p>
+
+<p>Một người dùng có thể có nhiều lịch, và các lịch khác nhau có thể được liên kết với các loại tài khoản khác nhau (Google Calendar, Exchange, v.v.).</p>
+
+<p>{@link android.provider.CalendarContract} sẽ định nghĩa mô hình dữ liệu của thông tin liên quan tới lịch và sự kiện. Dữ liệu này được lưu trữ trong nhiều bảng như liệt kê bên dưới.</p>
+
+<table>
+  <tr>
+    <th>Bảng (Lớp)</th>
+    <th>Mô tả</th>
+  </tr>
+  <tr>
+    <td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
+    
+    <td>Bảng này chứa 
+thông tin riêng của lịch. Mỗi hàng trong bảng này chứa chi tiết của
+một lịch duy nhất, chẳng hạn như tên, màu, thông tin đồng bộ, v.v.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Events}</td>
+    
+    <td>Bảng này chứa
+thông tin riêng theo sự kiện. Mỗi hàng trong bảng có thông tin cho một
+sự kiện duy nhất&mdash;ví dụ: tiêu đề sự kiện, địa điểm, thời gian bắt đầu
+, thời gian kết thúc, v.v. Sự kiện có thể xảy ra một lần hoặc lặp lại nhiều lần. Người dự,
+nhắc nhở, và các tính chất mở rộng được lưu trữ trong các bảng riêng. 
+Mỗi mục đều có một {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 
+tham chiếu tới {@link android.provider.BaseColumns#_ID} trong bảng Sự kiện.</td>
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances}</td>
+    
+    <td>Bảng này chứa
+thời gian bắt đầu và thời gian kết thúc của mỗi lần xảy ra một sự kiện. Mỗi hàng trong bảng này
+đại diện cho một lần xảy ra sự kiện. Với các sự kiện xảy ra một lần thì có một ánh xạ 1:1
+của thực thể tới sự kiện. Đối với các sự kiện định kỳ, nhiều hàng sẽ tự động
+ được khởi tạo tương ứng với nhiều lần xảy ra sự kiện đó.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Attendees}</td>
+    
+    <td>Bảng này chứa
+thông tin về người dự (khách) của sự kiện. Mỗi hàng đại diện một khách duy nhất của
+một sự kiện. Nó quy định loại khách và phản hồi tham dự của khách
+cho một sự kiện.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Reminders}</td>
+    
+    <td>Bảng này chứa
+dữ liệu về cảnh báo/thông báo. Mỗi hàng đại diện một cảnh báo duy nhất cho một sự kiện. Một
+sự kiện có thể có nhiều nhắc nhở. Số nhắc nhở tối đa của một sự kiện
+được quy định trong 
+{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS}, 
+được đặt bởi trình điều hợp đồng bộ đang
+sở hữu lịch đã cho. Nhắc nhở được quy định bằng số phút trước khi diễn ra sự kiện
+và có một phương pháp để xác định cách người dùng sẽ được cảnh báo.</td>
+  </tr>
+  
+</table>
+
+<p>API Trình cung cấp Lịch được thiết kế để linh hoạt và mạnh mẽ. Đồng
+thời, điều quan trọng là phải cung cấp một trải nghiệm người dùng cuối tốt và
+bảo vệ sự toàn vẹn của lịch và dữ liệu lịch. Để làm điều này, sau đây là một số
+điều cần ghi nhớ khi sử dụng API này:</p>
+
+<ul>
+
+<li><strong>Chèn, cập nhật, và xem sự kiện lịch.</strong> Để trực tiếp chèn, sửa đổi, và đọc sự kiện từ Trình cung cấp Lịch, bạn cần <a href="#manifest">các quyền</a> phù hợp. Tuy nhiên, nếu bạn không đang xây dựng một ứng dụng lịch hoặc trình điều hợp đồng bộ chính thức, việc yêu cầu những quyền này là không cần thiết. Thay vào đó, bạn có thể sử dụng những ý định được cung cấp bởi ứng dụng Lịch của Android để chuyển giao các thao tác đọc và ghi cho ứng dụng đó. Khi bạn sử dụng ý định, ứng dụng của bạn sẽ gửi người dùng tới ứng dụng Lịch để thực hiện thao tác mong muốn
+trong một mẫu được điền trước. Sau khi xong, họ sẽ được trả về ứng dụng của bạn.
+Bằng việc thiết kế ứng dụng của bạn để thực hiện các thao tác thường gặp thông qua Lịch,
+bạn cung cấp cho người dùng một giao diện người dùng nhất quán, thiết thực. Đây là phương pháp
+được khuyến cáo nên dùng. Để biết thêm thông tin, hãy xem phần <a href="#intents">Ý định
+Lịch</a>.</p>
+
+
+<li><strong>Trình điều hợp đồng bộ.</strong> Trình điều hợp đồng bộ có chức năng đồng bộ dữ liệu lịch
+lên thiết bị của một người dùng bằng một máy chủ hoặc nguồn dữ liệu khác. Trong bảng 
+{@link android.provider.CalendarContract.Calendars} và
+{@link android.provider.CalendarContract.Events}, 
+có các cột để cho trình điều hợp đồng bộ sử dụng.
+Trình cung cấp và ứng dụng không nên sửa đổi chúng. Trên thực tế, chúng không
+hiển thị trừ khi được truy cập như một trình điều hợp đồng bộ. Để biết thêm thông tin về
+trình điều hợp đồng bộ, hãy xem phần <a href="#sync-adapter">Trình điều hợp Đồng bộ</a>.</li>
+
+</ul>
+
+
+<h2 id="manifest">Quyền của Người dùng</h2>
+
+<p>Để đọc dữ liệu lịch, một ứng dụng phải bao gồm quyền {@link
+android.Manifest.permission#READ_CALENDAR} trong tệp bản kê khai của mình. Nó
+phải bao gồm quyền {@link android.Manifest.permission#WRITE_CALENDAR}
+để xóa, chèn hoặc cập nhật dữ liệu lịch:</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;...&gt;
+    &lt;uses-sdk android:minSdkVersion=&quot;14&quot; /&gt;
+    &lt;uses-permission android:name=&quot;android.permission.READ_CALENDAR&quot; /&gt;
+    &lt;uses-permission android:name=&quot;android.permission.WRITE_CALENDAR&quot; /&gt;
+    ...
+&lt;/manifest&gt;
+</pre>
+
+
+<h2 id="calendar">Bảng Lịch</h2>
+
+<p>Bảng {@link android.provider.CalendarContract.Calendars} chứa thông tin chi tiết 
+cho từng lịch. Các cột
+Lịch sau có thể ghi được bởi cả ứng dụng và <a href="#sync-adapter">trình điều hợp đồng bộ</a>. 
+Để xem danh sách đầy đủ về các trường được hỗ trợ, hãy xem tài liệu tham khảo
+{@link android.provider.CalendarContract.Calendars}.</p>
+<table>
+  <tr>
+    <th>Hằng số</th>
+    <th>Mô tả</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#NAME}</td>
+    <td>Tên của lịch.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#CALENDAR_DISPLAY_NAME}</td>
+    <td>Tên của lịch này mà được hiển thị cho người dùng.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
+    
+    <td>Một boolean cho biết lịch có được chọn để hiển thị hay không. Giá trị
+bằng 0 cho biết các sự kiện liên kết với lịch này sẽ không được
+hiển thị.  Giá trị bằng 1 cho biết các sự kiện liên kết với lịch này sẽ được
+hiển thị. Giá trị này ảnh hưởng tới việc khởi tạo hàng trong bảng {@link
+android.provider.CalendarContract.Instances}.</td>
+
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
+    
+    <td>Một boolean cho biết lịch sẽ được đồng bộ và có các sự kiện
+của mình được lưu trữ trên thiết bị hay không. Giá trị bằng 0 tức là không đồng bộ lịch này hay
+lưu giữ các sự kiện của nó lên thiết bị.  Giá trị bằng 1 tức là đồng bộ các sự kiện cho lịch này 
+và lưu trữ các sự kiện của nó lên thiết bị.</td>
+  </tr>
+</table>
+
+<h3 id="query">Truy vấn một lịch</h3>
+
+<p>Sau đây là một ví dụ về cách nhận được lịch do một người dùng
+cụ thể sở hữu. Để đơn giản, trong ví dụ này, thao tác truy vấn được thể hiện trong
+ luồng giao diện người dùng ("luồng chính"). Trong thực hành, nên làm điều này trong một luồng
+không đồng bộ thay vì trên luồng chính. Để bàn thêm, hãy xem phần 
+<a href="{@docRoot}guide/components/loaders.html">Trình tải</a>. Nếu bạn đang không chỉ 
+đọc dữ liệu mà còn sửa đổi nó, hãy xem {@link android.content.AsyncQueryHandler}.
+</p>
+
+
+<pre>
+// Projection array. Creating indices for this array instead of doing
+// dynamic lookups improves performance.
+public static final String[] EVENT_PROJECTION = new String[] {
+    Calendars._ID,                           // 0
+    Calendars.ACCOUNT_NAME,                  // 1
+    Calendars.CALENDAR_DISPLAY_NAME,         // 2
+    Calendars.OWNER_ACCOUNT                  // 3
+};
+  
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
+private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
+private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
+  
+
+<div class="sidebox-wrapper"> <div class="sidebox"> <h3>Tại sao bạn phải nêu
+ACCOUNT_TYPE?</h3> <p>Nếu bạn truy vấn trên một {@link
+android.provider.CalendarContract.Calendars#ACCOUNT_NAME
+Calendars.ACCOUNT_NAME}, bạn cũng phải nêu 
+{@link android.provider.CalendarContract.Calendars#ACCOUNT_TYPE Calendars.ACCOUNT_TYPE}
+trong lựa chọn. Đó là vì một tài khoản đã cho chỉ
+được coi là duy nhất nếu có cả <code>ACCOUNT_NAME</code> và
+<code>ACCOUNT_TYPE</code> của nó. <code>ACCOUNT_TYPE</code> là xâu tương ứng với
+trình xác thực tài khoản mà đã được sử dụng khi tài khoản đó được đăng ký với
+{@link android.accounts.AccountManager}. Cũng có một loại tài khoản đặc biệt gọi là {@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} dành cho các lịch
+không liên kết với một tài khoản thiết bị. Tài khoản {@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} không được
+đồng bộ.</p> </div> </div> 
+
+
+<p> Trong phần tiếp theo của ví dụ, bạn sẽ xây dựng truy vấn của mình. Lựa chọn
+này sẽ quy định các tiêu chí cho truy vấn. Trong ví dụ này, truy vấn đang tìm
+các lịch có <code>ACCOUNT_NAME</code>
+"sampleuser@google.com", <code>ACCOUNT_TYPE</code>
+"com.google", và <code>OWNER_ACCOUNT</code>
+"sampleuser@google.com". Nếu bạn muốn xem tất cả lịch mà một người dùng
+đã xem, không chỉ các lịch mà người dùng sở hữu, hãy bỏ qua <code>OWNER_ACCOUNT</code>.
+Truy vấn sẽ trả về đối tượng {@link android.database.Cursor}
+mà bạn có thể sử dụng để xem xét tập kết quả được trả về bởi truy vấn
+cơ sở dữ liệu. Để bàn thêm về việc sử dụng các truy vấn trong trình cung cấp nội dung, 
+hãy xem phần <a href="{@docRoot}guide/topics/providers/content-providers.html">Trình cung cấp Nội dung</a>.</p>
+
+
+<pre>// Run query
+Cursor cur = null;
+ContentResolver cr = getContentResolver();
+Uri uri = Calendars.CONTENT_URI;   
+String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND (" 
+                        + Calendars.ACCOUNT_TYPE + " = ?) AND ("
+                        + Calendars.OWNER_ACCOUNT + " = ?))";
+String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
+        "sampleuser@gmail.com"}; 
+// Submit the query and get a Cursor object back. 
+cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
+
+<p>Phần tiếp theo sử dụng con chạy để duyệt qua tập kết quả. Nó sử dụng
+các hằng số được thiết lập ngay từ đầu ví dụ để trả về các giá trị
+cho mỗi trường.</p>
+    
+<pre>// Use the cursor to step through the returned records
+while (cur.moveToNext()) {
+    long calID = 0;
+    String displayName = null;
+    String accountName = null;
+    String ownerName = null;
+      
+    // Get the field values
+    calID = cur.getLong(PROJECTION_ID_INDEX);
+    displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
+    accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
+    ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
+              
+    // Do something with the values...
+
+   ...
+}
+</pre>
+  
+<h3 id="modify-calendar">Sửa đổi một lịch</h3>
+
+<p>Để thực hiện cập nhật một lịch, bạn có thể cung cấp {@link
+android.provider.BaseColumns#_ID} của lịch hoặc dưới dạng ID được nối vào cho
+Uri 
+
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 
+hoặc dưới dạng mục chọn đầu tiên. Lựa chọn
+nên bắt đầu bằng <code>&quot;_id=?&quot;</code>, và
+<code>selectionArg</code> đầu tiên sẽ là {@link
+android.provider.BaseColumns#_ID} của lịch. 
+Bạn cũng có thể thực hiện cập nhật bằng cách mã hóa ID trong URI. Ví dụ này thay đổi tên hiển thị
+của một lịch bằng cách sử dụng phương pháp 
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
+:</p>
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long calID = 2;
+ContentValues values = new ContentValues();
+// The new display name for the calendar
+values.put(Calendars.CALENDAR_DISPLAY_NAME, &quot;Trevor's Calendar&quot;);
+Uri updateUri = ContentUris.withAppendedId(Calendars.CONTENT_URI, calID);
+int rows = getContentResolver().update(updateUri, values, null, null);
+Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);</pre>
+
+<h3 id="insert-calendar">Chèn một lịch</h2>
+
+<p>Lịch được thiết kế để được quản lý chủ yếu bởi một trình điều hợp đồng bộ, vì vậy bạn chỉ nên
+chèn các lịch mới như một trình điều hợp đồng bộ. Phần lớn thì các ứng dụng
+chỉ có thể thực hiện những thay đổi bề mặt về lịch chẳng hạn như thay đổi tên hiển thị. Nếu
+một ứng dụng cần tạo một lịch cục bộ, nó có thể làm điều này bằng cách thực hiện
+chèn lịch dưới dạng một trình điều hợp đồng bộ, sử dụng {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} của {@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}.
+{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} 
+là một loại tài khoản đặc biệt dành cho các lịch không
+liên kết với một tài khoản thiết bị. Các lịch loại này không được đồng bộ với một máy chủ. Để
+bàn về trình điều hợp đồng bộ, hãy xem phần <a href="#sync-adapter">Trình điều hợp Đồng bộ</a>.</p>
+
+<h2 id="events">Bảng Sự kiện</h2>
+
+<p>Bảng {@link android.provider.CalendarContract.Events} chứa thông tin chi tiết
+cho các sự kiện riêng lẻ. Để thêm, cập nhật hoặc xóa sự kiện, ứng dụng phải
+bao gồm quyền {@link android.Manifest.permission#WRITE_CALENDAR} trong
+<a href="#manifest">tệp bản kê khai</a> của mình.</p>
+
+<p>Các cột Sự kiện sau có thể ghi được bởi cả ứng dụng và trình điều hợp
+đồng bộ. Để xem danh sách đầy đủ về các trường được hỗ trợ, hãy xem tài liệu tham khảo {@link
+android.provider.CalendarContract.Events}.</p>
+
+<table>
+  <tr>
+    <th>Hằng số</th>
+    <th>Mô tả</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#CALENDAR_ID}</td>
+    <td>{@link android.provider.BaseColumns#_ID} của lịch mà chứa sự kiện.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#ORGANIZER}</td>
+    <td>E-mail của người tổ chức (người chủ) của sự kiện.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#TITLE}</td>
+    <td>Tiêu đề của sự kiện.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION}</td>
+    <td>Nơi sự kiện diễn ra. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION}</td>
+    <td>Mô tả sự kiện.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DTSTART}</td>
+    <td>Thời gian sự kiện bắt đầu tính bằng mili giây UTC trôi qua kể từ giờ epoch. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DTEND}</td>
+    <td>Thời gian sự kiện kết thúc tính bằng mili giây UTC trôi qua kể từ giờ epoch. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}</td>
+    <td>Múi giờ của sự kiện.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_END_TIMEZONE}</td>
+    <td>Múi giờ của thời điểm kết thúc sự kiện.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
+    
+    <td>Thời lượng của sự kiện theo định dạng <a href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RFC5545</a>.
+Ví dụ, giá trị bằng <code>&quot;PT1H&quot;</code> cho biết sự kiện sẽ kéo dài
+một giờ và giá trị bằng <code>&quot;P2W&quot;</code> cho biết
+thời lượng là 2 tuần. </td>
+
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
+    
+    <td>Giá trị bằng 1 cho biết sự kiện này chiếm cả ngày, được xác định bởi
+múi giờ tại địa phương. Giá trị bằng 0 cho biết đó là một sự kiện thường xuyên mà có thể bắt đầu
+và kết thúc vào bất cứ lúc nào trong một ngày.</td>
+
+    
+  </tr>
+  
+  
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
+    
+    <td>Quy tắc lặp lại đối với định dạng sự kiện. Ví
+dụ, <code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code>. Bạn có thể tìm thêm
+nhiều ví dụ hơn <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">ở đây</a>.</td>
+    
+  </tr>
+  
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
+    <td>Ngày lặp lại đối với sự kiện. 
+    Bạn thường sử dụng {@link android.provider.CalendarContract.EventsColumns#RDATE} 
+    cùng với {@link android.provider.CalendarContract.EventsColumns#RRULE} 
+    để định nghĩa một tập tổng hợp
+các trường hợp xảy ra lặp lại. Để bàn thêm, hãy xem phần <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.2">RFC5545 spec</a>.</td>
+</tr>
+ 
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY}</td>
+    
+    <td>Xem sự kiện này được tính là thời gian bận hay là thời gian rảnh có thể được 
+xếp lại lịch. </td>
+    
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
+    <td>Khách có thể sửa đổi sự kiện được hay không. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_INVITE_OTHERS}</td>
+    <td>Khách có thể mời khách khác được hay không. </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_SEE_GUESTS}</td>
+    <td>Khách có thể xem danh sách người dự được hay không.</td>
+  </tr>
+</table>
+
+<h3 id="add-event">Thêm Sự kiện</h3>
+
+<p>Khi ứng dụng của bạn chèn một sự kiện mới, chúng tôi khuyến cáo bạn nên sử dụng một Ý định
+{@link android.content.Intent#ACTION_INSERT INSERT}, như được mô tả trong <a href="#intent-insert">Sử dụng ý định để chèn một sự kiện</a>. Tuy nhiên, nếu
+cần, bạn có thể chèn sự kiện trực tiếp. Phần này mô tả cách làm điều
+này.</p>
+
+
+<p>Sau đây là các quy tắc để chèn một sự kiện mới: </p>
+<ul>
+
+  <li>Bạn phải đưa vào {@link
+android.provider.CalendarContract.EventsColumns#CALENDAR_ID} và {@link
+android.provider.CalendarContract.EventsColumns#DTSTART}.</li>
+
+<li>Bạn phải đưa vào một {@link
+android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}. Để nhận một danh sách
+các ID múi giờ được cài đặt của hệ thống, hãy sử dụng {@link
+java.util.TimeZone#getAvailableIDs()}. Lưu ý rằng quy tắc này không áp dụng nếu
+bạn đang chèn một sự kiện thông qua Ý định {@link
+android.content.Intent#ACTION_INSERT INSERT} như được mô tả trong <a href="#intent-insert">Sử dụng ý định để chèn một sự kiện</a>&mdash;trong kịch bản
+đó, một múi giờ mặc định sẽ được cung cấp.</li>
+  
+  <li>Đối với các sự kiện không định kỳ, bạn phải đưa vào {@link
+android.provider.CalendarContract.EventsColumns#DTEND}. </li>
+  
+  
+  <li>Đối với các sự kiện định kỳ, bạn phải đưa vào một {@link
+android.provider.CalendarContract.EventsColumns#DURATION} bên cạnh {@link
+android.provider.CalendarContract.EventsColumns#RRULE} hay {@link
+android.provider.CalendarContract.EventsColumns#RDATE}. Lưu ý rằng quy tắc này không áp dụng nếu
+bạn đang chèn một sự kiện thông qua Ý định {@link
+android.content.Intent#ACTION_INSERT INSERT} như được mô tả trong <a href="#intent-insert">Sử dụng ý định để chèn một sự kiện</a>&mdash;trong kịch bản
+đó, bạn có thể sử dụng một {@link
+android.provider.CalendarContract.EventsColumns#RRULE} cùng với {@link android.provider.CalendarContract.EventsColumns#DTSTART} và {@link android.provider.CalendarContract.EventsColumns#DTEND}, và ứng dụng Lịch 
+sẽ tự động chuyển nó thành một thời lượng.</li>
+  
+</ul>
+
+<p>Sau đây là một ví dụ về cách chèn một sự kiện. Ví dụ này đang được thực hiện trong luồng
+UI để cho đơn giản. Trong thực hành, chèn và cập nhật nên được thực hiện trong một
+luồng không đồng bộ để di chuyển hành động vào một luồng chạy ngầm. Để biết thêm
+thông tin, hãy xem phần {@link android.content.AsyncQueryHandler}.</p>
+
+
+<pre>
+long calID = 3;
+long startMillis = 0; 
+long endMillis = 0;     
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2012, 9, 14, 7, 30);
+startMillis = beginTime.getTimeInMillis();
+Calendar endTime = Calendar.getInstance();
+endTime.set(2012, 9, 14, 8, 45);
+endMillis = endTime.getTimeInMillis();
+...
+
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Events.DTSTART, startMillis);
+values.put(Events.DTEND, endMillis);
+values.put(Events.TITLE, &quot;Jazzercise&quot;);
+values.put(Events.DESCRIPTION, &quot;Group workout&quot;);
+values.put(Events.CALENDAR_ID, calID);
+values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");
+Uri uri = cr.insert(Events.CONTENT_URI, values);
+
+// get the event ID that is the last element in the Uri
+long eventID = Long.parseLong(uri.getLastPathSegment());
+// 
+// ... do something with event ID
+//
+//</pre>
+
+<p class="note"><strong>Lưu ý:</strong> Xem cách mà ví dụ này bắt được ID
+sự kiện sau khi sự kiện được tạo. Đây là cách dễ nhất để nhận được một ID sự kiện. Bạn thường
+cần ID sự kiện để thực hiện các thao tác lịch khác&mdash;ví dụ: để thêm
+người dự hoặc nhắc nhở vào một sự kiện.</p>
+
+
+<h3 id="update-event">Cập nhật Sự kiện</h3>
+
+<p>Khi ứng dụng của bạn muốn cho phép người dùng chỉnh sửa một sự kiện, chúng tôi khuyến cáo
+bạn nên sử dụng một Ý định {@link android.content.Intent#ACTION_EDIT EDIT} như được mô tả
+trong <a href="#intent-edit">Sử dụng ý định để chỉnh sửa một sự kiện</a>.
+Tuy nhiên, nếu cần, bạn có thể chỉnh sửa sự kiện trực tiếp. Để thực hiện cập nhật
+một Sự kiện, bạn có thể cung cấp <code>_ID</code> của sự kiện 
+hoặc dưới dạng ID được nối vào cho Uri ({@link
+android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 
+hoặc dưới dạng mục chọn đầu tiên. 
+Lựa chọn nên bắt đầu bằng <code>&quot;_id=?&quot;</code>, và
+<code>selectionArg</code> đầu tiên nên là <code>_ID</code> của sự kiện. Bạn cũng có thể
+thực hiện cập nhật bằng cách sử dụng một lựa chọn không có ID. Sau đây là một ví dụ về cách cập nhật một
+sự kiện. Nó thay đổi tiêu đề của sự kiện bằng cách sử dụng phương pháp 
+{@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}
+:</p>
+
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long eventID = 188;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+Uri updateUri = null;
+// The new title for the event
+values.put(Events.TITLE, &quot;Kickboxing&quot;); 
+updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+int rows = getContentResolver().update(updateUri, values, null, null);
+Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);  </pre>
+
+<h3 id="delete-event">Xóa Sự kiện</h3>
+
+<p>Bạn có thể xóa một sự kiện hoặc theo {@link
+android.provider.BaseColumns#_ID} của nó như một ID được nối trên URI, hoặc bằng cách sử dụng
+lựa chọn tiêu chuẩn. Nếu sử dụng một ID được nối, bạn không thể lựa chọn đồng thời.
+Có hai kiểu xóa: như một ứng dụng và như một trình điều hợp đồng bộ. Xóa
+như một ứng dụng sẽ đặt cột <em>đã xóa</em> thành 1. Cờ này sẽ báo cho
+trình điều hợp đồng bộ rằng hàng đó đã được xóa và rằng việc xóa này nên
+được truyền tới máy chủ. Xóa trình điều hợp đồng bộ sẽ gỡ bỏ sự kiện khỏi
+cơ sở dữ liệu cùng với tất cả dữ liệu được liên kết của nó. Sau đây là một ví dụ về ứng dụng
+xóa một sự kiện thông qua {@link android.provider.BaseColumns#_ID} của nó:</p>
+
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long eventID = 201;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+Uri deleteUri = null;
+deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+int rows = getContentResolver().delete(deleteUri, null, null);
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);  
+</pre>
+
+<h2 id="attendees">Bảng Người dự</h2>
+
+<p>Mỗi hàng của bảng {@link android.provider.CalendarContract.Attendees} đại diện
+cho một người dự hoặc khách duy nhất của một sự kiện. Gọi 
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} 
+sẽ trả về một danh sách người dự cho sự kiện
+với {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} đã cho. 
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} này
+phải khớp với {@link
+android.provider.BaseColumns#_ID} của một sự kiện cụ thể.</p> 
+
+<p>Bảng sau liệt kê các trường
+có thể ghi được. Khi chèn một người dự mới, bạn phải điền tất cả 
+ngoại trừ <code>ATTENDEE_NAME</code>.
+</p>
+
+
+<table>
+  <tr>
+    <th>Hằng số</th>
+    <th>Mô tả</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}</td>
+    <td>ID của sự kiện.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_NAME}</td>
+    <td>Tên của người dự.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_EMAIL}</td>
+    <td>Địa chỉ e-mail của người dự.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_RELATIONSHIP}</td>
+    <td><p>Mối quan hệ của người dự với sự kiện. Một trong:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_ATTENDEE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_NONE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_ORGANIZER}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_PERFORMER}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_SPEAKER}</li>
+    </ul>
+    </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_TYPE}</td>
+    <td><p>Loại người dự. Một trong: </p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#TYPE_REQUIRED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#TYPE_OPTIONAL}</li>
+    </ul></td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS}</td>
+    <td><p>Trạng thái tham dự của người dự. Một trong:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_ACCEPTED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_DECLINED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_INVITED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_NONE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_TENTATIVE}</li>
+    </ul></td>
+  </tr>
+</table>
+
+<h3 id="add-attendees">Thêm Người dự</h3>
+
+<p>Sau đây là một ví dụ về cách thêm một người dự vào một sự kiện. Lưu ý rằng
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 
+là bắt buộc:</p>
+
+<pre>
+long eventID = 202;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Attendees.ATTENDEE_NAME, &quot;Trevor&quot;);
+values.put(Attendees.ATTENDEE_EMAIL, &quot;trevor@example.com&quot;);
+values.put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ATTENDEE);
+values.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_OPTIONAL);
+values.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_INVITED);
+values.put(Attendees.EVENT_ID, eventID);
+Uri uri = cr.insert(Attendees.CONTENT_URI, values);
+</pre>
+
+<h2 id="reminders">Bảng Nhắc nhở</h2>
+
+<p>Mỗi hàng của bảng {@link android.provider.CalendarContract.Reminders} đại diện
+cho một nhắc nhở của một sự kiện. Gọi 
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}  sẽ trả về một danh sách nhắc nhở cho
+sự kiện với 
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} đã cho.</p>
+
+
+<p>Bảng sau liệt kê các trường ghi được đối với nhắc nhở. Tất cả đều phải được
+đưa vào khi chèn một nhắc nhở mới. Lưu ý rằng các trình điều hợp đồng bộ quy định
+các loại nhắc nhở chúng hỗ trợ trong bảng {@link
+android.provider.CalendarContract.Calendars}. Xem 
+{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS} 
+để biết chi tiết.</p>
+
+
+<table>
+  <tr>
+    <th>Hằng số</th>
+    <th>Mô tả</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#EVENT_ID}</td>
+    <td>ID của sự kiện.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#MINUTES}</td>
+    <td>Số phút trước khi diễn ra sự kiện mà nhắc nhở cần báo.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#METHOD}</td>
+    <td><p>Phương pháp báo thức, như được đặt trên máy chủ. Một trong:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_ALERT}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_DEFAULT}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_EMAIL}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_SMS}</li>
+    </ul></td>
+  </tr>
+</table>
+
+<h3 id="add-reminders">Thêm Nhắc nhở</h3>
+
+<p>Ví dụ này thêm nhắc nhở vào một sự kiện. Nhắc nhở sẽ báo 15
+phút trước khi xảy ra sự kiện.</p>
+<pre>
+long eventID = 221;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Reminders.MINUTES, 15);
+values.put(Reminders.EVENT_ID, eventID);
+values.put(Reminders.METHOD, Reminders.METHOD_ALERT);
+Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
+
+<h2 id="instances">Bảng Thực thể</h2>
+
+<p>Bảng 
+{@link android.provider.CalendarContract.Instances} chứa
+thời gian bắt đầu và thời gian kết thúc của các lần xảy ra một sự kiện. Mỗi hàng trong bảng này
+đại diện cho một lần xảy ra sự kiện. Bảng thực thể không ghi được và chỉ
+đưa ra một cách để truy vấn các lần xảy ra sự kiện. </p>
+
+<p>Bảng sau liệt kê một số trường mà bạn có thể truy vấn đối với một thực thể. Lưu ý 
+rằng múi giờ được định nghĩa bởi 
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE} 
+và 
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES}.</p>
+
+
+<table>
+  <tr>
+    <th>Hằng số</th>
+    <th>Mô tả</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#BEGIN}</td>
+    <td>Thời gian bắt đầu của thực thể, tính bằng mili giây UTC.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END}</td>
+    <td>Thời gian kết thúc của thực thể, tính bằng mili giây UTC.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
+    
+    <td>Ngày kết thúc theo lịch Julian của thực thể theo múi giờ
+của Lịch. 
+    
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
+    
+    <td>Phút kết thúc của thực thể được xác định từ nửa đêm theo múi giờ
+của Lịch.</td>
+    
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
+    <td><code>_ID</code> của sự kiện đối với thực thể này.</td>
+  </tr>
+    <tr>
+    <td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
+    <td>Ngày bắt đầu theo lịch Julian của thực thể theo múi giờ của Lịch. 
+ </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
+    
+    <td>Phút bắt đầu của thực thể được xác định từ nửa đêm theo múi giờ
+của Lịch. 
+</td>
+    
+  </tr>
+
+</table>
+
+<h3 id="query-instances">Truy vấn bảng Thực thể</h3>
+
+<p>Để truy vấn bảng Thực thể, bạn cần chỉ định một khoảng thời gian cho truy vấn
+trong URI. Trong ví dụ này, {@link android.provider.CalendarContract.Instances}
+có quyền truy cập trường {@link
+android.provider.CalendarContract.EventsColumns#TITLE} thông qua việc
+triển khai giao diện {@link android.provider.CalendarContract.EventsColumns} của nó. 
+Nói cách khác, {@link
+android.provider.CalendarContract.EventsColumns#TITLE} được trả về qua một
+chế độ xem cơ sở dữ liệu, chứ không qua việc truy vấn bảng {@link
+android.provider.CalendarContract.Instances} thô.</p>
+
+<pre>
+private static final String DEBUG_TAG = "MyActivity";
+public static final String[] INSTANCE_PROJECTION = new String[] {
+    Instances.EVENT_ID,      // 0
+    Instances.BEGIN,         // 1
+    Instances.TITLE          // 2
+  };
+  
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_BEGIN_INDEX = 1;
+private static final int PROJECTION_TITLE_INDEX = 2;
+...
+
+// Specify the date range you want to search for recurring
+// event instances
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2011, 9, 23, 8, 0);
+long startMillis = beginTime.getTimeInMillis();
+Calendar endTime = Calendar.getInstance();
+endTime.set(2011, 10, 24, 8, 0);
+long endMillis = endTime.getTimeInMillis();
+  
+Cursor cur = null;
+ContentResolver cr = getContentResolver();
+
+// The ID of the recurring event whose instances you are searching
+// for in the Instances table
+String selection = Instances.EVENT_ID + " = ?";
+String[] selectionArgs = new String[] {"207"};
+
+// Construct the query with the desired date range.
+Uri.Builder builder = Instances.CONTENT_URI.buildUpon();
+ContentUris.appendId(builder, startMillis);
+ContentUris.appendId(builder, endMillis);
+
+// Submit the query
+cur =  cr.query(builder.build(), 
+    INSTANCE_PROJECTION, 
+    selection, 
+    selectionArgs, 
+    null);
+   
+while (cur.moveToNext()) {
+    String title = null;
+    long eventID = 0;
+    long beginVal = 0;    
+    
+    // Get the field values
+    eventID = cur.getLong(PROJECTION_ID_INDEX);
+    beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
+    title = cur.getString(PROJECTION_TITLE_INDEX);
+              
+    // Do something with the values. 
+    Log.i(DEBUG_TAG, "Event:  " + title); 
+    Calendar calendar = Calendar.getInstance();
+    calendar.setTimeInMillis(beginVal);  
+    DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
+    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));    
+    }
+ }</pre>
+
+<h2 id="intents">Ý định Lịch</h2>
+<p>Ứng dụng của bạn không cần <a href="#manifest">quyền</a> để ghi và đọc dữ liệu lịch. Thay vào đó, nó có thể sử dụng những ý định được cung cấp bởi ứng dụng Lịch của Android để chuyển giao các thao tác đọc và ghi cho ứng dụng đó. Bảng sau đây liệt kê các ý định được Trình cung cấp Lịch hỗ trợ:</p>
+<table>
+  <tr>
+    <th>Hành động</th>
+    <th>URI</th>
+
+    <th>Mô tả</th>
+    <th>Phụ thêm</th>
+  </tr>
+  <tr>
+    <td><br>
+    {@link android.content.Intent#ACTION_VIEW VIEW} <br></td>
+    <td><p><code>content://com.android.calendar/time/&lt;ms_since_epoch&gt;</code></p>
+    Bạn cũng có thể tham khảo tới URI bằng 
+{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI}. 
+Để xem một ví dụ về cách sử dụng ý định này, hãy xem <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Sử dụng ý định để xem dữ liệu lịch</a>. 
+
+    </td>
+    <td>Mở lịch đến thời gian được chỉ định bởi <code>&lt;ms_since_epoch&gt;</code>.</td>
+    <td>Không có.</td>
+  </tr>
+  <tr>
+    <td><p>{@link android.content.Intent#ACTION_VIEW VIEW} </p>
+
+     </td>
+    <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
+    
+    Bạn cũng có thể tham khảo tới URI bằng 
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}. 
+Để xem một ví dụ về cách sử dụng ý định này, hãy xem <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">Sử dụng ý định để xem dữ liệu lịch</a>.
+    
+    </td>
+    <td>Xem sự kiện được chỉ định bởi <code>&lt;event_id&gt;</code>.</td>
+
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}<br>
+      <br>
+      <br>
+    {@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}</td>
+  </tr>
+
+  <tr>
+    <td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
+    <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
+    
+  Bạn cũng có thể tham khảo tới URI bằng 
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}. 
+Để xem một ví dụ về cách sử dụng ý định này, hãy xem <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">Sử dụng ý định để chỉnh sửa một sự kiện</a>.
+    
+    
+    </td>
+    <td>Chỉnh sửa sự kiện được chỉ định bởi <code>&lt;event_id&gt;</code>.</td>
+
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}<br>
+      <br>
+      <br>
+    {@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}</td>
+  </tr>
+
+  <tr>
+    <td>{@link android.content.Intent#ACTION_EDIT EDIT} <br>
+    <br>
+    {@link android.content.Intent#ACTION_INSERT INSERT} </td>
+    <td><p><code>content://com.android.calendar/events</code></p>
+    
+   Bạn cũng có thể tham khảo tới URI bằng 
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}. 
+Để xem một ví dụ về cách sử dụng ý định này, hãy xem <a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">Sử dụng ý định để chèn một sự kiện</a>.
+    
+    </td>
+
+    <td>Tạo một sự kiện.</td>
+    <td>Bất kỳ phụ thêm nào được liệt kê trong bảng bên dưới.</td>
+  </tr>
+</table>
+
+<p>Bảng sau đây liệt kê các phụ thêm ý định được Trình cung cấp Lịch hỗ trợ:
+</p>
+<table>
+  <tr>
+    <th>Phụ thêm Ý định</th>
+    <th>Mô tả</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#TITLE Events.TITLE}</td>
+    <td>Tên cho sự kiện.</td>
+  </tr>
+  <tr>
+  
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
+CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
+    <td>Thời gian bắt đầu sự kiện tính bằng mili giây trôi qua kể từ giờ epoch.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME
+CalendarContract.EXTRA_EVENT_END_TIME}</td>
+    
+    <td>Thời gian kết thúc sự kiện tính bằng mili giây trôi qua kể từ giờ epoch.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY
+CalendarContract.EXTRA_EVENT_ALL_DAY}</td>
+    
+    <td>Một boolean cho biết đó là một sự kiện cả ngày. Giá trị có thể bằng
+<code>true</code> hoặc <code>false</code>.</td> </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION
+Events.EVENT_LOCATION}</td>
+    
+    <td>Địa điểm của sự kiện.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION
+Events.DESCRIPTION}</td>
+    
+    <td>Mô tả sự kiện.</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}</td>
+    <td>Địa chỉ e-mail của những người cần mời dưới dạng một danh sách phân cách bởi dấu phẩy.</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.provider.CalendarContract.EventsColumns#RRULE Events.RRULE}</td>
+    <td>Quy tắc lặp lại đối với sự kiện.</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL
+Events.ACCESS_LEVEL}</td>
+    
+    <td>Sự kiện là riêng tư hay công khai.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY
+Events.AVAILABILITY}</td>
+    
+    <td>Xem sự kiện này tính là thời gian bận hay là thời gian rảnh có thể được xếp lại lịch.</td>
+    
+</table> 
+<p>Các phần sau mô tả cách sử dụng những ý định này.</p>
+
+
+<h3 id="intent-insert">Sử dụng ý định để chèn một sự kiện</h3>
+
+<p>Sử dụng Ý định {@link android.content.Intent#ACTION_INSERT INSERT} cho phép
+ứng dụng của bạn chuyển giao tác vụ chèn sự kiện cho bản thân Lịch.
+Bằng cách này, ứng dụng của bạn thậm chí không cần phải có quyền {@link
+android.Manifest.permission#WRITE_CALENDAR} được bao gồm trong <a href="#manifest">tệp bản kê khai</a> của mình.</p>
+
+  
+<p>Khi người dùng chạy một ứng dụng mà sử dụng cách này, ứng dụng sẽ gửi
+chúng tới Lịch để hoàn thành việc thêm một sự kiện. Ý định {@link
+android.content.Intent#ACTION_INSERT INSERT} sử dụng các trường phụ thêm để
+điền trước vào một mẫu bằng các chi tiết của sự kiện trong Lịch. Khi đó, người dùng có thể
+hủy bỏ sự kiện, chỉnh sửa mẫu nếu cần, hoặc lưu sự kiện vào lịch
+của mình.</p>
+  
+
+
+<p>Sau đây là một đoạn mã HTML lập biểu một sự kiện vào ngày 19/1/2012, diễn ra
+từ 7:30 sáng đến 8:30 sáng. Lưu ý điều sau đây về đoạn mã HTML này:</p>
+
+<ul>
+  <li>Nó quy định {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} 
+ là Uri.</li>
+  
+  <li>Nó sử dụng các trường phụ {@link
+android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
+CalendarContract.EXTRA_EVENT_BEGIN_TIME} và {@link
+android.provider.CalendarContract#EXTRA_EVENT_END_TIME
+CalendarContract.EXTRA_EVENT_END_TIME} để điền trước thời gian của sự kiện
+vào mẫu. Các giá trị đối với những thời gian này phải tính bằng mili giây UTC
+trôi qua kể từ giờ epoch.</li>
+  
+  <li>Nó sử dụng trường phụ {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}
+để cung cấp một danh sách người được mời phân cách bằng dấu phẩy, được chỉ định theo địa chỉ e-mail.</li>
+  
+</ul>
+<pre>
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2012, 0, 19, 7, 30);
+Calendar endTime = Calendar.getInstance();
+endTime.set(2012, 0, 19, 8, 30);
+Intent intent = new Intent(Intent.ACTION_INSERT)
+        .setData(Events.CONTENT_URI)
+        .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())
+        .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis())
+        .putExtra(Events.TITLE, &quot;Yoga&quot;)
+        .putExtra(Events.DESCRIPTION, &quot;Group class&quot;)
+        .putExtra(Events.EVENT_LOCATION, &quot;The gym&quot;)
+        .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY)
+        .putExtra(Intent.EXTRA_EMAIL, &quot;rowan@example.com,trevor@example.com&quot;);
+startActivity(intent);
+</pre>
+
+<h3 id="intent-edit">Sử dụng ý định để chỉnh sửa một sự kiện</h3>
+
+<p>Bạn có thể cập nhật một sự kiện trực tiếp như được mô tả trong phần <a href="#update-event">Cập nhật sự kiện</a>. Nhưng việc sử dụng Ý định {@link
+android.content.Intent#ACTION_EDIT EDIT} cho phép một ứng dụng
+không có quyền được chuyển giao chỉnh sửa sự kiện cho ứng dụng Lịch.
+Khi người dùng hoàn thành chỉnh sửa sự kiện của mình trong Lịch, họ được trả về ứng dụng
+ban đầu.</p> <p>Sau đây là một ví dụ về ý định đặt một tiêu đề mới
+cho một sự kiện được quy định và cho phép người dùng chỉnh sửa sự kiện trong Lịch.</p>
+
+
+<pre>long eventID = 208;
+Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+Intent intent = new Intent(Intent.ACTION_EDIT)
+    .setData(uri)
+    .putExtra(Events.TITLE, &quot;My New Title&quot;);
+startActivity(intent);</pre>
+
+<h3 id="intent-view">Sử dụng ý định để xem dữ liệu lịch</h3>
+<p>Trình cung cấp Lịch giới thiệu hai cách khác nhau để sử dụng Ý định {@link android.content.Intent#ACTION_VIEW VIEW}:</p>
+<ul>
+  <li>Để mở Lịch tới một ngày cụ thể.</li>
+  <li>Để xem một sự kiện.</li>
+
+</ul>
+<p>Sau đây là một ví dụ cho biết cách mở Lịch tới một ngày cụ thể:</p>
+<pre>// A date-time specified in milliseconds since the epoch.
+long startMillis;
+...
+Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
+builder.appendPath(&quot;time&quot;);
+ContentUris.appendId(builder, startMillis);
+Intent intent = new Intent(Intent.ACTION_VIEW)
+    .setData(builder.build());
+startActivity(intent);</pre>
+
+<p>Sau đây là một ví dụ cho biết cách mở một sự kiện để xem:</p>
+<pre>long eventID = 208;
+...
+Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+Intent intent = new Intent(Intent.ACTION_VIEW)
+   .setData(uri);
+startActivity(intent);
+</pre>
+
+
+<h2 id="sync-adapter">Trình điều hợp Đồng bộ</h2>
+
+
+<p>Chỉ có vài điểm khác nhau nhỏ giữa cách một ứng dụng và cách một trình điều hợp đồng bộ
+truy cập Trình cung cấp Lịch:</p>
+
+<ul>
+  <li>Trình điều hợp đồng bộ cần chỉ định rằng nó là một trình điều hợp đồng bộ bằng cách đặt {@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER} thành <code>true</code>.</li>
+  
+  
+  <li>Trình điều hợp đồng bộ cần cung cấp một {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME} và một {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} làm tham số truy vấn trong URI. </li>
+  
+  <li>Trình điều hợp đồng bộ có quyền truy nhập ghi vào nhiều cột hơn ứng dụng hay widget.
+  Ví dụ, một ứng dụng chỉ có thể sửa đổi một vài đặc điểm của một lịch, 
+  chẳng hạn như tên lịch, tên hiển thị, thiết đặt hiển thị, và lịch có được
+  đồng bộ hay không. Nếu so sánh, một trình điều hợp đồng bộ có thể truy cập không chỉ những cột đó, mà còn nhiều cột khác,
+  chẳng hạn như màu lịch, múi giờ, mức truy nhập, địa điểm, v.v.
+Tuy nhiên, trình điều hợp đồng bộ bị hạn chế đối với <code>ACCOUNT_NAME</code> và 
+<code>ACCOUNT_TYPE</code> mà nó quy định.</li> </ul>
+
+<p>Sau đây là một phương pháp hữu ích hơn mà bạn có thể sử dụng để trả về một URI để dùng với một trình điều hợp đồng bộ:</p>
+<pre> static Uri asSyncAdapter(Uri uri, String account, String accountType) {
+    return uri.buildUpon()
+        .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,&quot;true&quot;)
+        .appendQueryParameter(Calendars.ACCOUNT_NAME, account)
+        .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
+ }
+</pre>
+<p>Để biết việc triển khai mẫu trình điều hợp đồng bộ (không liên quan cụ thể tới Lịch), hãy xem phần 
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>.
diff --git a/docs/html-intl/intl/vi/guide/topics/providers/contacts-provider.jd b/docs/html-intl/intl/vi/guide/topics/providers/contacts-provider.jd
new file mode 100644
index 0000000..2fa2ed3
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/providers/contacts-provider.jd
@@ -0,0 +1,2356 @@
+page.title=Trình cung cấp Danh bạ
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Xem nhanh</h2>
+<ul>
+    <li>Kho lưu giữ thông tin về con người của Android.</li>
+    <li>
+        Đồng bộ với web.
+    </li>
+    <li>
+        Tích hợp dữ liệu theo luồng xã hội.
+    </li>
+</ul>
+<h2>Trong tài liệu này</h2>
+<ol>
+    <li>
+        <a href="#InformationTypes">Tổ chức Trình cung cấp Danh bạ</a>
+    </li>
+    <li>
+        <a href="#RawContactBasics">Liên lạc thô</a>
+    </li>
+    <li>
+        <a href="#DataBasics">Dữ liệu</a>
+    </li>
+    <li>
+        <a href="#ContactBasics">Danh bạ</a>
+    </li>
+    <li>
+        <a href="#Sources">Dữ liệu từ Trình điều hợp Đồng bộ</a>
+    </li>
+    <li>
+        <a href="#Permissions">Quyền được Yêu cầu</a>
+    </li>
+    <li>
+        <a href="#UserProfile">Hồ sơ Người dùng</a>
+    </li>
+    <li>
+        <a href="#ContactsProviderMetadata">Siêu dữ liệu Trình cung cấp Danh bạ</a>
+    </li>
+    <li>
+        <a href="#Access">Truy cập Trình cung cấp Danh bạ</a>
+    <li>
+    </li>
+    <li>
+        <a href="#SyncAdapters">Trình điều hợp Đồng bộ Trình cung cấp Danh bạ</a>
+    </li>
+    <li>
+        <a href="#SocialStream">Dữ liệu từ Luồng Xã hội</a>
+    </li>
+    <li>
+        <a href="#AdditionalFeatures">Các Tính năng Bổ sung của Trình cung cấp Danh bạ</a>
+    </li>
+</ol>
+<h2>Lớp khóa</h2>
+<ol>
+    <li>{@link android.provider.ContactsContract.Contacts}</li>
+    <li>{@link android.provider.ContactsContract.RawContacts}</li>
+    <li>{@link android.provider.ContactsContract.Data}</li>
+    <li>{@code android.provider.ContactsContract.StreamItems}</li>
+</ol>
+<h2>Các Mẫu Liên quan</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}resources/samples/ContactManager/index.html">
+        Trình quản lý Danh bạ
+        </a>
+    </li>
+    <li>
+        <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+        Trình điều hợp Đồng bộ Mẫu</a>
+    </li>
+</ol>
+<h2>Xem thêm</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        Nội dung Cơ bản về Trình cung cấp Nội dung
+        </a>
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    Trình cung cấp Danh bạ là một thành phần Android mạnh mẽ và linh hoạt có chức năng quản lý
+    kho dữ liệu trung tâm về con người của thiết bị. Trình cung cấp Danh bạ là nguồn của những dữ liệu
+    mà bạn thấy trong ứng dụng danh bạ của thiết bị, và bạn cũng có thể truy cập dữ liệu của nó trong
+    ứng dụng của chính mình và chuyển dữ liệu giữa thiết bị và các dịch vụ trực tuyến. Trình cung cấp chứa
+    đủ loại nguồn dữ liệu và cố gắng quản lý nhiều dữ liệu nhất có thể cho mỗi người, kết quả
+    là tổ chức của nó trở nên phức tạp. Vì điều này, API của trình cung cấp bao gồm một
+    tập mở rộng gồm các lớp hợp đồng và giao diện tạo điều kiện cho việc truy xuất và sửa đổi
+    dữ liệu.
+</p>
+<p>
+    Hướng dẫn này trình bày những nội dung sau:
+</p>
+    <ul>
+        <li>
+            Cấu trúc cơ bản của trình cung cấp.
+        </li>
+        <li>
+            Cách truy xuất dữ liệu từ trình cung cấp.
+        </li>
+        <li>
+            Cách sửa đổi dữ liệu trong trình cung cấp.
+        </li>
+        <li>
+            Cách ghi một trình điều hợp đồng bộ để đồng bộ hóa dữ liệu từ máy chủ của bạn với
+            Trình cung cấp Danh bạ.
+        </li>
+    </ul>
+<p>
+    Hướng dẫn này giả sử rằng bạn biết những nội dung cơ bản về trình cung cấp nội dung Android. Để tìm hiểu thêm
+    về trình cung cấp nội dung Android, hãy đọc hướng dẫn
+    <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+    Nội dung Cơ bản về Trình cung cấp Nội dung</a>. Ứng dụng mẫu
+    <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">Trình điều hợp Đồng bộ Mẫu</a>
+    là một ví dụ về cách sử dụng một trình điều hợp đồng bộ để chuyển dữ liệu giữa Trình cung cấp
+    Danh bạ và ứng dụng mẫu được lưu trữ bởi Dịch vụ Web Google.
+</p>
+<h2 id="InformationTypes">Tổ chức Trình cung cấp Danh bạ</h2>
+<p>
+    Trình cung cấp Danh bạ là một thành phần của trình cung cấp nội dung Android. Nó chứa ba loại
+    dữ liệu về một người, từng loại tương ứng với một bảng do trình cung cấp đưa ra, như
+    được minh họa trong hình 1:
+</p>
+<img src="{@docRoot}images/providers/contacts_structure.png" alt="" height="364" id="figure1" />
+<p class="img-caption">
+  <strong>Hình 1.</strong> Cấu trúc bảng của Trình cung cấp Danh bạ.
+</p>
+<p>
+    Ba bảng này thường được đề cập theo tên các lớp hợp đồng của chúng. Các lớp này
+    sẽ định nghĩa các hằng số cho URI nội dung, tên cột và giá trị cột được sử dụng bởi các bảng:
+</p>
+<dl>
+    <dt>
+        Bảng {@link android.provider.ContactsContract.Contacts}
+    </dt>
+    <dd>
+        Hàng thể hiện những người khác nhau dựa trên tổng hợp của các hàng liên lạc thô.
+    </dd>
+    <dt>
+        Bảng {@link android.provider.ContactsContract.RawContacts}
+    </dt>
+    <dd>
+        Hàng chứa một bản tổng hợp dữ liệu về một người, liên quan tới tài khoản và loại người dùng.
+    </dd>
+    <dt>
+        Bảng {@link android.provider.ContactsContract.Data}
+    </dt>
+    <dd>
+        Hàng chứa các thông tin chi tiết về liên lạc thô, chẳng hạn như địa chỉ e-mail hoặc số điện thoại.
+    </dd>
+</dl>
+<p>
+    Các bảng khác được đại diện bởi các lớp hợp đồng trong {@link android.provider.ContactsContract}
+    là bảng phụ mà Trình cung cấp Danh bạ sử dụng để quản lý thao tác của nó hoặc hỗ trợ
+    các chức năng cụ thể trong ứng dụng danh bạ hoặc điện thoại của thiết bị.
+</p>
+<h2 id="RawContactBasics">Liên lạc thô</h2>
+<p>
+    Một liên lạc thô thể hiện dữ liệu của một người xuất phát từ một loại tài khoản và tên tài khoản
+ riêng. Vì Trình cung cấp Danh bạ cho phép nhiều hơn một dịch vụ trực tuyến làm nguồn
+ dữ liệu cho một người, Trình cung cấp Danh bạ cho phép nhiều liên lạc thô cho cùng một người.
+    Nhiều liên lạc thô cũng cho phép người dùng kết hợp dữ liệu của một người từ nhiều hơn một tài khoản
+ từ cùng loại tài khoản.
+</p>
+<p>
+    Hầu hết dữ liệu của một liên lạc thô không được lưu giữ trong bảng
+    {@link android.provider.ContactsContract.RawContacts}. Thay vào đó, nó được lưu giữ trong một hoặc nhiều
+    hàng trong bảng {@link android.provider.ContactsContract.Data}. Mỗi hàng dữ liệu có một cột
+    {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID Data.RAW_CONTACT_ID} chứa
+    giá trị {@code android.provider.BaseColumns#_ID RawContacts._ID} của
+    hàng {@link android.provider.ContactsContract.RawContacts} mẹ của nó.
+</p>
+<h3 id="RawContactsColumns">Các cột liên lạc thô quan trọng</h3>
+<p>
+    Các cột quan trọng trong bảng {@link android.provider.ContactsContract.RawContacts} được
+    liệt kê trong bảng 1. Hãy đọc các lưu ý theo sau bảng dưới đây:
+</p>
+<p class="table-caption" id="table1">
+    <strong>Bảng 1.</strong> Các cột liên lạc thô quan trọng.
+</p>
+<table>
+    <tr>
+        <th scope="col">Tên cột</th>
+        <th scope="col">Sử dụng</th>
+        <th scope="col">Lưu ý</th>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_NAME}
+        </td>
+        <td>
+            Tên tài khoản cho loại tài khoản là nguồn của liên lạc thô này.
+            Ví dụ, tên tài khoản của một tài khoản Google là một trong các địa chỉ Gmail
+            của chủ sở hữu thiết bị. Xem mục nhập tiếp theo cho
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE} để biết thêm
+            thông tin.
+        </td>
+        <td>
+            Định dạng của tên này áp dụng theo loại tài khoản của nó. Đó không nhất thiết
+            là một địa chỉ e-mail.
+        </td>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}
+        </td>
+        <td>
+            Loại tài khoản là nguồn của liên lạc thô này. Ví dụ, loại tài khoản
+            của một tài khoản Google là <code>com.google</code>. Luôn xác định loại tài khoản của bạn
+            bằng một mã định danh miền cho một miền mà bạn sở hữu hoặc kiểm soát. Điều này đảm bảo rằng loại tài khoản
+            của bạn là duy nhất.
+        </td>
+        <td>
+            Một loại tài khoản cung cấp dữ liệu danh bạ thường có một trình điều hợp đồng bộ liên kết để
+            đồng bộ hoá với Trình điều hợp Đồng bộ.
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.RawContactsColumns#DELETED}
+        </td>
+        <td>
+            Cờ "đã xóa" cho một liên lạc thô.
+        </td>
+        <td>
+            Cờ này cho phép Trình cung cấp Danh bạ duy trì hàng bên trong tới khi trình điều hợp đồng bộ
+            có thể xóa hàng đó khỏi máy chủ của chúng rồi cuối cùng là xóa hàng
+            khỏi kho lưu giữ.
+        </td>
+    </tr>
+</table>
+<h4>Lưu ý</h4>
+<p>
+    Sau đây là các ghi chú quan trọng về bảng
+    {@link android.provider.ContactsContract.RawContacts}:
+</p>
+<ul>
+    <li>
+        Tên của liên lạc thô không được lưu giữ trong hàng của nó trong
+        {@link android.provider.ContactsContract.RawContacts}. Thay vào đó, nó được lưu giữ trong
+        bảng {@link android.provider.ContactsContract.Data}, trong một hàng
+        {@link android.provider.ContactsContract.CommonDataKinds.StructuredName}. Liên lạc thô
+        chỉ có một hàng thuộc loại này trong bảng {@link android.provider.ContactsContract.Data}.
+    </li>
+    <li>
+        <strong>Chú ý:</strong> Để sử dụng dữ liệu tài khoản của chính bạn trong một hàng liên lạc thô, trước tiên dữ liệu
+        phải được đăng ký với {@link android.accounts.AccountManager}. Để làm điều này, hãy nhắc
+        người dùng thêm loại tài khoản và tên tài khoản của chúng vào danh sách tài khoản. Nếu bạn không
+        làm vậy, Trình cung cấp Danh bạ sẽ tự động xóa hàng liên lạc thô của bạn.
+        <p>
+            Ví dụ, nếu bạn muốn ứng dụng của mình duy trì dữ liệu danh bạ cho dịch vụ dựa trên nền web của mình
+            với miền {@code com.example.dataservice}, và tài khoản của người dùng cho dịch vụ của bạn
+            là {@code becky.sharp@dataservice.example.com}, trước tiên, người dùng phải thêm
+            "loại" tài khoản ({@code com.example.dataservice}) và "tên" tài khoản 
+            ({@code becky.smart@dataservice.example.com}) trước khi ứng dụng của bạn có thể thêm hàng liên lạc thô.
+            Bạn có thể giải thích yêu cầu này với người dùng bằng tài liệu, hoặc bạn có thể nhắc
+            người dùng thêm loại và tên này, hoặc cả hai. Loại tài khoản và tên tài khoản
+            được trình bày chi tiết hơn trong phần sau.
+    </li>
+</ul>
+<h3 id="RawContactsExample">Các nguồn dữ liệu liên lạc thô</h3>
+<p>
+    Để hiểu cách hoạt động của liên lạc thô, hãy xét người dùng "Emily Dickinson", cô ta có ba tài khoản
+    người dùng sau được xác định trên thiết bị của mình:
+</p>
+<ul>
+    <li><code>emily.dickinson@gmail.com</code></li>
+    <li><code>emilyd@gmail.com</code></li>
+    <li>Tài khoản Twitter "belle_of_amherst"</li>
+</ul>
+<p>
+    Người dùng này đã kích hoạt <em>Đồng bộ Danh bạ</em> cho cả ba tài khoản này trong cài đặt
+    <em>Tài khoản</em>.
+</p>
+<p>
+    Giả sử Emily Dickinson mở một cửa sổ trình duyệt, đăng nhập vào Gmail bằng tài khoản
+    <code>emily.dickinson@gmail.com</code>, mở
+    Danh bạ, và thêm "Thomas Higginson". Sau đó, cô đăng nhập vào Gmail bằng tài khoản
+    <code>emilyd@gmail.com</code> và gửi một e-mail tới "Thomas Higginson", làm vậy sẽ tự động
+    thêm người này làm một liên lạc. Cô ấy cũng theo dõi "colonel_tom" (ID Twitter của Thomas Higginson) trên
+    Twitter.
+</p>
+<p>
+    Trình cung cấp Danh bạ sẽ tạo ba liên lạc thô do kết quả của việc làm này:
+</p>
+<ol>
+    <li>
+        Một liên lạc thô cho "Thomas Higginson" liên kết với <code>emily.dickinson@gmail.com</code>.
+        Loại tài khoản người dùng là Google.
+    </li>
+    <li>
+        Một liên lạc thô thứ hai cho "Thomas Higginson" liên kết với <code>emilyd@gmail.com</code>.
+        Loại tài khoản người dùng cũng là Google. Có một liên lạc thô thứ hai ngay cả khi
+        tên giống với một tên trước đó, vì người này đã được thêm cho một
+        tài khoản người dùng khác.
+    </li>
+    <li>
+        Một liên lạc thô thứ ba cho "Thomas Higginson" liên kết với "belle_of_amherst". Loại tài khoản người dùng
+        là Twitter.
+    </li>
+</ol>
+<h2 id="DataBasics">Dữ liệu</h2>
+<p>
+    Như đề cập trước đó, dữ liệu của một liên lạc thô được lưu giữ trong một hàng
+    {@link android.provider.ContactsContract.Data} được liên kết với giá trị
+    <code>_ID</code> của liên lạc thô. Điều này cho phép một liên lạc thô có nhiều thực thể cùng loại
+    dữ liệu chẳng hạn như địa chỉ e-mail hay số điện thoại. Ví dụ, nếu
+    "Thomas Higginson" của {@code emilyd@gmail.com}  (hàng liên lạc thô cho Thomas Higginson
+    liên kết với tài khoản Google <code>emilyd@gmail.com</code>) có một địa chỉ e-mail nhà là
+    <code>thigg@gmail.com</code> và một địa chỉ e-mail cơ quan là
+    <code>thomas.higginson@gmail.com</code>, Trình cung cấp Danh bạ sẽ lưu trữ hai hàng địa chỉ e-mail đó
+    và liên kết cả hai với liên lạc thô.
+</p>
+<p>
+    Để ý rằng các loại dữ liệu khác nhau được lưu giữ trong một bảng này. Các hàng tên hiển thị,
+    số điện thoại, e-mail, địa chỉ gửi thư, ảnh và chi tiết trang web đều được tìm thấy trong bảng
+    {@link android.provider.ContactsContract.Data}. Để giúp quản lý điều này, bảng
+    {@link android.provider.ContactsContract.Data} có một số cột có tên mô tả,
+    và các cột còn lại có tên chung. Các nội dung của cột tên mô tả có cùng ý nghĩa
+    không phụ thuộc vào loại dữ liệu trong hàng, trong khi nội dung của cột tên chung có
+    ý nghĩa khác nhau tùy vào loại dữ liệu.
+</p>
+<h3 id="DescriptiveColumns">Tên cột mô tả</h3>
+<p>
+    Một số ví dụ về tên cột mô tả là:
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.Data#RAW_CONTACT_ID}
+    </dt>
+    <dd>
+        Giá trị của cột <code>_ID</code> của liên lạc thô đối với dữ liệu này.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.Data#MIMETYPE}
+    </dt>
+    <dd>
+        Loại dữ liệu được lưu giữ trong hàng này, được thể hiện dưới dạng một kiểu MIME tùy chỉnh. Trình cung cấp Danh bạ
+        sử dụng các kiểu MIME được định nghĩa trong lớp con của
+        {@link android.provider.ContactsContract.CommonDataKinds}. Các kiểu MIME là nguồn mở,
+        và có thể được sử dụng bởi bất kỳ ứng dụng hay trình điều hợp đồng bộ nào hoạt động với Trình cung cấp Danh bạ.
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY}
+    </dt>
+    <dd>
+        Nếu kiểu hàng dữ liệu này có thể xảy ra nhiều hơn một lần đối với một liên lạc thô, cột
+        {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} sẽ gắn cờ
+        hàng dữ liệu chứa dữ liệu sơ cấp cho kiểu đó. Ví dụ, nếu
+        người dùng nhấn giữ một số điện thoại cho một liên lạc và chọn <strong>Đặt mặc định</strong>,
+        khi đó hàng {@link android.provider.ContactsContract.Data} chứa số đó
+        có cột tương ứng {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} được đặt thành một
+        giá trị khác 0.
+    </dd>
+</dl>
+<h3 id="GenericColumns">Tên cột chung</h3>
+<p>
+    Có 15 cột chung được đặt tên <code>DATA1</code> thông qua
+    <code>DATA15</code> thường có sẵn và thêm bốn cột
+    chung <code>SYNC1</code> thông qua <code>SYNC4</code> mà chỉ được sử dụng bởi trình điều hợp
+    đồng bộ. Các hằng số tên cột chung luôn có tác dụng, không phụ thuộc vào loại
+    dữ liệu mà hàng đó chứa.
+</p>
+<p>
+    Cột <code>DATA1</code> được đánh chỉ mục.  Trình cung cấp Danh bạ luôn sử dụng cột này cho
+    dữ liệu mà trình cung cấp kỳ vọng sẽ là đối tượng truy vấn thường xuyên nhất. Ví dụ,
+    trong một hàng e-mail, cột này chứa địa chỉ e-mail thực sự.
+</p>
+<p>
+    Theo quy ước, cột <code>DATA15</code> được dành để lưu giữ dữ liệu Binary Large Object
+    (BLOB) chẳng hạn như hình thu nhỏ của ảnh.
+</p>
+<h3 id="TypeSpecificNames">Tên cột theo kiểu</h3>
+<p>
+    Để tạo điều kiện làm việc với các cột đối với một kiểu hàng cụ thể, Trình cung cấp Danh bạ
+    cũng cung cấp các hằng số tên cột theo kiểu, được định nghĩa trong các lớp con của
+    {@link android.provider.ContactsContract.CommonDataKinds}. Các hằng số chỉ cấp một
+    tên hằng số khác cho cùng tên cột, điều này giúp bạn truy cập dữ liệu trong một hàng thuộc
+    một kiểu cụ thể.
+</p>
+<p>
+    Ví dụ, lớp {@link android.provider.ContactsContract.CommonDataKinds.Email} định nghĩa
+    các hằng số tên cột theo kiểu cho một hàng {@link android.provider.ContactsContract.Data} mà
+    có kiểu MIME
+    {@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
+    Email.CONTENT_ITEM_TYPE}. Lớp chứa hằng số
+    {@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS} cho cột
+    địa chỉ e-mail. Giá trị thực sự của
+    {@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS} là "data1", giá trị này
+    giống hệt như tên chung của cột.
+</p>
+<p class="caution">
+    <strong>Chú ý:</strong> Không được thêm dữ liệu tùy chỉnh của chính bạn vào bảng
+    {@link android.provider.ContactsContract.Data} bằng cách sử dụng một hàng có một trong các kiểu MIME được xác định trước
+    của trình cung cấp. Nếu làm vậy, bạn có thể làm mất dữ liệu hoặc khiến trình cung cấp
+    gặp trục trặc. Ví dụ, bạn không nên thêm một hàng có kiểu MIME
+    {@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
+    Email.CONTENT_ITEM_TYPE} mà chứa tên người dùng thay vì địa chỉ e-mail trong cột
+    <code>DATA1</code>. Nếu sử dụng kiểu MIME tùy chỉnh của mình cho hàng, khi đó bạn được tự do
+    định nghĩa tên cột theo kiểu của chính mình và sử dụng các cột theo cách bạn muốn.
+</p>
+<p>
+    Hình 2 minh họa cách các cột mô tả và cột dữ liệu xuất hiện trong hàng
+    {@link android.provider.ContactsContract.Data}, và cách mà tên cột theo kiểu "phủ lên"
+   tên cột chung
+</p>
+<img src="{@docRoot}images/providers/data_columns.png" alt="How type-specific column names map to generic column names" height="311" id="figure2" />
+<p class="img-caption">
+  <strong>Hình 2.</strong> Tên cột theo kiểu và tên cột chung.
+</p>
+<h3 id="ColumnMaps">Lớp tên cột theo kiểu</h3>
+<p>
+    Bảng 2 liệt kê các lớp tên cột theo kiểu thường được sử dụng nhất:
+</p>
+<p class="table-caption" id="table2">
+  <strong>Bảng 2.</strong> Lớp tên cột theo kiểu</p>
+<table>
+  <tr>
+    <th scope="col">Lớp ánh xạ</th>
+    <th scope="col">Kiểu dữ liệu</th>
+    <th scope="col">Lưu ý</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredName}</td>
+    <td>Dữ liệu tên của liên lạc thô liên kết với hàng dữ liệu này.</td>
+    <td>Một liên lạc thô chỉ có một trong những hàng này.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Photo}</td>
+    <td>Ảnh chính của liên lạc thô được liên kết với hàng dữ liệu này.</td>
+    <td>Một liên lạc thô chỉ có một trong những hàng này.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Email}</td>
+    <td>Địa chỉ e-mail của liên lạc thô được liên kết với hàng dữ liệu này.</td>
+    <td>Một liên lạc thô có thể có nhiều địa chỉ e-mail.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal}</td>
+    <td>Địa chỉ cổng của liên lạc thô được liên kết với hàng dữ liệu này.</td>
+    <td>Một liên lạc thô có thể có nhiều địa chỉ cổng.</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.GroupMembership}</td>
+    <td>Mã định danh liên kết liên lạc thô với một trong các nhóm trong Trình cung cấp Danh bạ.</td>
+    <td>
+        Nhóm là một tính năng tùy chọn của loại tài khoản và tên tài khoản. Chúng được mô tả
+        chi tiết hơn trong phần <a href="#Groups">Nhóm liên lạc</a>.
+    </td>
+  </tr>
+</table>
+<h3 id="ContactBasics">Danh bạ</h3>
+<p>
+    Trình cung cấp Danh bạ kết hợp các hàng liên lạc thô giữa tất cả các loại tài khoản và tên tài khoản
+    để tạo thành một <strong>liên lạc</strong>. Điều này tạo điều kiện để hiển thị và sửa đổi tất cả dữ liệu mà một
+    người dùng đã thu thập cho một người. Trình cung cấp Danh bạ quản lý việc tạo các hàng liên lạc mới
+    và tổng hợp các liên lạc thô với hàng liên lạc hiện có. Ứng dụng lẫn
+    trình điều hợp đồng bộ đều không được cho phép thêm liên lạc và một số cột trong một hàng liên lạc là cột chỉ đọc.
+</p>
+<p class="note">
+    <strong>Lưu ý:</strong> Nếu bạn cố gắng thêm một liên lạc vào Trình cung cấp Danh bạ có một
+    {@link android.content.ContentResolver#insert(Uri,ContentValues) insert()}, bạn sẽ gặp
+    lỗi ngoại lệ {@link java.lang.UnsupportedOperationException}. Nếu bạn cố gắng cập nhật một cột
+    mà được liệt kê là "chỉ đọc," cập nhật sẽ bị bỏ qua.
+</p>
+<p>
+    Trình cung cấp Danh bạ tạo một liên lạc mới để hồi đáp lại việc thêm một liên lạc thô mới
+    không khớp với bất kỳ liên lạc nào hiện có. Trình cung cấp cũng làm vậy nếu dữ liệu
+    của một liên lạc thô hiện có thay đổi sao cho nó không còn khớp với liên lạc mà trước đó
+    nó được gắn với. Nếu một ứng dụng hoặc trình điều hợp đồng bộ tạo một liên lạc thô mới mà
+    <em>khớp</em> với một liên lạc hiện tại, liên lạc thô mới sẽ được tổng hợp vào liên lạc
+    hiện có.
+</p>
+<p>
+    Trình cung cấp Danh bạ sẽ liên kết một hàng liên lạc với các hàng liên lạc thô của nó bằng cột
+    <code>_ID</code> của hàng liên lạc đó trong bảng {@link android.provider.ContactsContract.Contacts Contacts}
+. Cột <code>CONTACT_ID</code> của bảng liên lạc thô
+    {@link android.provider.ContactsContract.RawContacts} chứa các giá trị <code>_ID</code> cho
+    các hàng liên lạc liên kết với từng hàng liên lạc thô.
+</p>
+<p>
+    Bảng {@link android.provider.ContactsContract.Contacts} cũng có cột
+    {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} mà là một liên kết
+    "cố định" với hàng liên lạc đó. Vì Trình cung cấp Danh bạ tự động duy trì
+    các liên lạc, nó có thể thay đổi giá trị {@code android.provider.BaseColumns#_ID} của một hàng liên lạc
+    hồi đáp lại một sự tổng hợp hoặc đồng bộ. Ngay cả khi điều này xảy ra, URI nội dung
+    {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI} kết hợp với
+    {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} của liên lạc sẽ vẫn
+    chỉ về hàng liên lạc đó, vì thế bạn có thể sử dụng
+    {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}
+    để duy trì các liên kết đến liên lạc "yêu thích", v.v. Cột này có định dạng riêng không
+    liên quan tới định dạng của cột {@code android.provider.BaseColumns#_ID}.
+</p>
+<p>
+    Hình 3 minh họa mối liên quan giữa ba bảng chính này với nhau.
+</p>
+<img src="{@docRoot}images/providers/contacts_tables.png" alt="Contacts provider main tables" height="514" id="figure4" />
+<p class="img-caption">
+  <strong>Hình 3.</strong> Mối quan hệ giữa các bảng Danh bạ, Liên lạc Thô, và Chi tiết.
+</p>
+<h2 id="Sources">Dữ liệu từ Trình điều hợp Đồng bộ</h2>
+<p>
+    Người dùng nhập dữ liệu danh bạ trực tiếp vào thiết bị, nhưng dữ liệu cũng đi đến Trình cung cấp
+    Danh bạ từ các dịch vụ web thông qua <strong>trình điều hợp đồng bộ</strong>, giúp tự động
+    chuyển dữ liệu giữa thiết bị và các dịch vụ. Trình điều hợp đồng bộ chạy ngầm
+    dưới sự kiểm soát của hệ thống, và chúng gọi các phương pháp {@link android.content.ContentResolver} để
+    quản lý dữ liệu.
+</p>
+<p>
+    Trong Android, dịch vụ web mà một trình điều hợp đồng bộ làm việc cùng sẽ được xác định bằng một loại tài khoản.
+    Mỗi trình điều hợp đồng bộ làm việc với một loại tài khoản, nhưng nó có thể hỗ trợ nhiều tên tài khoản cho
+    loại đó. Các loại tài khoản và tên tài khoản được mô tả sơ qua trong phần
+    <a href="#RawContactsExample">Các nguồn dữ liệu liên lạc thô</a>. Các định nghĩa sau trình bày
+    chi tiết hơn và mô tả mối liên quan giữa loại và tên tài khoản với các trình điều hợp đồng bộ và dịch vụ.
+</p>
+<dl>
+    <dt>
+        Loại tài khoản
+    </dt>
+    <dd>
+        Xác định một dịch vụ mà người dùng đã lưu giữ dữ liệu trong đó. Trong phần lớn thời gian, người dùng phải
+        xác thực dịch vụ. Ví dụ, Google Contacts là một loại tài khoản được xác định
+        bởi mã <code>google.com</code>. Giá trị này tương ứng với loại tài khoản được sử dụng bởi
+        {@link android.accounts.AccountManager}.
+    </dd>
+    <dt>
+        Tên tài khoản
+    </dt>
+    <dd>
+        Xác định một tài khoản hoặc đăng nhập cụ thể cho một loại tài khoản. Tài khoản Google Contacts
+        giống như tài khoản Google, chúng có một địa chỉ e-mail làm tên tài khoản.
+        Các dịch vụ khác có thể sử dụng tên người dùng là một từ hoặc id chữ số.
+    </dd>
+</dl>
+<p>
+    Loại tài khoản không nhất thiết phải duy nhất. Một người dùng có thể cấu hình nhiều tài khoản Google Contacts
+    và tải xuống dữ liệu của chúng vào Trình cung cấp Danh bạ; điều này có thể xảy ra nếu người dùng có một tập hợp
+    các liên lạc cá nhân cho một tên tài khoản cá nhân, và một tập hợp khác cho cơ quan. Tên tài khoản thường
+    là duy nhất. Cùng nhau, chúng xác định một dòng dữ liệu cụ thể giữa Trình cung cấp Danh bạ và
+    một dịch vụ bên ngoài.
+</p>
+<p>
+    Nếu muốn chuyển dữ liệu từ dịch vụ của bạn sang Trình cung cấp Danh bạ, bạn cần ghi
+    vào trình điều hợp đồng bộ của chính mình. Điều này được mô tả chi tiết hơn trong phần
+    <a href="#SyncAdapters">Trình điều hợp Đồng bộ Trình cung cấp Danh bạ</a>.
+</p>
+<p>
+    Hình 4 minh họa cách mà Trình cung cấp Danh bạ phù hợp với dòng dữ liệu
+    về con người. Trong hộp được đánh dấu "trình điều hợp đồng bộ," mỗi trình điều hợp được ghi nhãn theo loại tài khoản của nó.
+</p>
+<img src="{@docRoot}images/providers/ContactsDataFlow.png" alt="Flow of data about people" height="252" id="figure5" />
+<p class="img-caption">
+  <strong>Hình 4.</strong> Luồng dữ liệu của Trình cung cấp Danh bạ.
+</p>
+<h2 id="Permissions">Quyền được Yêu cầu</h2>
+<p>
+    Những ứng dụng muốn truy cập Trình cung cấp Danh bạ phải yêu cầu các quyền
+    sau:
+</p>
+<dl>
+    <dt>Quyền truy cập đọc vào một hoặc nhiều bảng</dt>
+    <dd>
+        {@link android.Manifest.permission#READ_CONTACTS}, được quy định trong
+        <code>AndroidManifest.xml</code> với phần tử
+        <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code> là
+        <code>&lt;uses-permission android:name="android.permission.READ_CONTACTS"&gt;</code>.
+    </dd>
+    <dt>Quyền truy cập ghi vào một hoặc nhiều bảng</dt>
+    <dd>
+        {@link android.Manifest.permission#WRITE_CONTACTS}, được quy định trong
+        <code>AndroidManifest.xml</code> với phần tử
+        <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code> là
+        <code>&lt;uses-permission android:name="android.permission.WRITE_CONTACTS"&gt;</code>.
+    </dd>
+</dl>
+<p>
+    Những quyền này không mở rộng sang dữ liệu hồ sơ người dùng. Hồ sơ người dùng và các quyền
+    được yêu cầu được đề cập trong phần sau,
+    <a href="#UserProfile">Hồ sơ Người dùng</a>.
+</p>
+<p>
+    Nhớ rằng dữ liệu danh bạ của người dùng là dữ liệu cá nhân và nhạy cảm. Người dùng quan tâm về
+    quyền riêng tư của họ, vì thế họ không muốn các ứng dụng thu thập dữ liệu về mình hoặc danh bạ của mình.
+    Nếu không rõ ràng về lý do bạn cần quyền truy cập dữ liệu danh bạ của họ, họ có thể cho
+    ứng dụng của bạn đánh giá thấp hoặc từ chối cài đặt ứng dụng.
+</p>
+<h2 id="UserProfile">Hồ sơ Người dùng</h2>
+<p>
+    Bảng {@link android.provider.ContactsContract.Contacts} có một hàng đơn chứa
+    dữ liệu hồ sơ cho người dùng của thiết bị. Dữ liệu này mô tả <code>user</code> của thiết bị chứ không phải
+    của một trong các liên lạc của người dùng. Hàng liên lạc hồ sơ được liên kết với hàng
+    liên lạc thô đối với từng hệ thống sử dụng hồ sơ.
+    Mỗi hàng liên lạc thô của hồ sơ có thể có nhiều hàng dữ liệu. Các hằng số để truy cập hồ sơ
+    người dùng có sẵn trong lớp {@link android.provider.ContactsContract.Profile}.
+</p>
+<p>
+    Truy cập hồ sơ người dùng đòi hỏi phải có các quyền đặc biệt. Ngoài các quyền
+    {@link android.Manifest.permission#READ_CONTACTS} và
+    {@link android.Manifest.permission#WRITE_CONTACTS} cần để đọc và ghi, truy cập
+    hồ sơ người dùng còn yêu cầu quyền {@code android.Manifest.permission#READ_PROFILE} và
+    {@code android.Manifest.permission#WRITE_PROFILE} tương ứng cho quyền truy cập đọc và
+    ghi.
+</p>
+<p>
+    Nhớ rằng bạn nên coi hồ sơ của một người dùng là nội dung nhạy cảm. Quyền
+    {@code android.Manifest.permission#READ_PROFILE} cho phép bạn truy cập dữ liệu xác định cá nhân
+    của người dùng thiết bị. Chắc chắn phải nói cho người dùng biết lý do tại sao
+    bạn cần các quyền truy cập hồ sơ người dùng trong phần mô tả ứng dụng của mình.
+</p>
+<p>
+    Để truy xuất hàng liên lạc chứa hồ sơ của người dùng,
+    hãy gọi {@link android.content.ContentResolver#query(Uri,String[], String, String[], String)
+    ContentResolver.query()}. Đặt URI nội dung thành
+    {@link android.provider.ContactsContract.Profile#CONTENT_URI} và không cung cấp bất kỳ
+    tiêu chí lựa chọn nào. Bạn cũng có thể sử dụng URI nội dung này làm URI cơ sở để truy xuất các liên lạc thô
+    hoặc dữ liệu cho hồ sơ. Ví dụ, đoạn mã HTML này truy xuất dữ liệu cho hồ sơ:
+</p>
+<pre>
+// Sets the columns to retrieve for the user profile
+mProjection = new String[]
+    {
+        Profile._ID,
+        Profile.DISPLAY_NAME_PRIMARY,
+        Profile.LOOKUP_KEY,
+        Profile.PHOTO_THUMBNAIL_URI
+    };
+
+// Retrieves the profile from the Contacts Provider
+mProfileCursor =
+        getContentResolver().query(
+                Profile.CONTENT_URI,
+                mProjection ,
+                null,
+                null,
+                null);
+</pre>
+<p class="note">
+    <strong>Lưu ý:</strong> Nếu bạn truy xuất nhiều hàng liên lạc và muốn xác định xem một trong số chúng có phải
+    là hồ sơ người dùng không, hãy kiểm tra cột
+    {@link android.provider.ContactsContract.ContactsColumns#IS_USER_PROFILE} của hàng. Cột này
+    được đặt thành "1" nếu liên lạc là hồ sơ người dùng.
+</p>
+<h2 id="ContactsProviderMetadata">Siêu dữ liệu Trình cung cấp Danh bạ</h2>
+<p>
+    Trình cung cấp Danh bạ quản lý dữ liệu theo dõi trạng thái của dữ liệu danh bạ trong
+    kho lưu giữ. Siêu dữ liệu về kho lưu giữ này được lưu giữ ở nhiều nơi khác nhau, bao gồm
+    các hàng bảng Liên lạc Thô, Dữ liệu, và Danh bạ, bảng
+    {@link android.provider.ContactsContract.Settings}, và bảng
+    {@link android.provider.ContactsContract.SyncState}. Bảng sau đây cho biết
+    ảnh hưởng của từng mục trong siêu dữ liệu này:
+</p>
+<p class="table-caption" id="table3">
+  <strong>Bảng 3.</strong> Siêu dữ liệu trong Trình cung cấp Danh bạ</p>
+<table>
+    <tr>
+        <th scope="col">Bảng</th>
+        <th scope="col">Cột</th>
+        <th scope="col">Giá trị</th>
+        <th scope="col">Ý nghĩa</th>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.RawContacts}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.SyncColumns#DIRTY}</td>
+        <td>"0" - không thay đổi kể từ lần đồng bộ cuối cùng.</td>
+        <td rowspan="2">
+            Đánh dấu các liên lạc thô đã được thay đổi trên thiết bị và phải được đồng bộ trở lại
+            máy chủ. Giá trị được đặt tự động bởi Trình cung cấp Danh bạ khi các ứng dụng
+            Android cập nhật một hàng.
+            <p>
+                Các trình điều hợp đồng bộ sửa đổi bảng liên lạc thô hoặc dữ liệu nên luôn nối
+                xâu {@link android.provider.ContactsContract#CALLER_IS_SYNCADAPTER} với
+                URI nội dung mà chúng sử dụng. Làm vậy sẽ ngăn không cho trình cung cấp đánh dấu hàng là không tốt.
+                Nếu không, các sửa đổi trình điều hợp đồng bộ xem như sửa đổi cục bộ và được
+                gửi tới máy chủ, ngay cả khi máy chủ là nguồn sửa đổi.
+            </p>
+        </td>
+    </tr>
+    <tr>
+            <td>"1" - đã thay đổi kể từ lần đồng bộ cuối cùng, cần được đồng bộ lại máy chủ.</td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#VERSION}</td>
+        <td>Số phiên bản của hàng này.</td>
+        <td>
+            Trình cung cấp Danh bạ tự động tăng dần giá trị này bất cứ khi nào hàng hoặc
+            dữ liệu có liên quan của hàng thay đổi.
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.Data}</td>
+        <td>{@link android.provider.ContactsContract.DataColumns#DATA_VERSION}</td>
+        <td>Số phiên bản của hàng này.</td>
+        <td>
+            Trình cung cấp Danh bạ tự động tăng dần giá trị này bất cứ khi nào hàng dữ liệu
+            bị thay đổi.
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}</td>
+        <td>
+            Một xâu giá trị xác định duy nhất liên lạc thô này cho tài khoản mà
+            nó được tạo trong đó.
+        </td>
+        <td>
+            Khi một trình điều hợp đồng bộ tạo một liên lạc thô mới, cột này nên được đặt thành
+            ID duy nhất của máy chủ dành cho liên lạc thô đó. Khi một ứng dụng Android tạo một liên lạc thô
+            mới, ứng dụng đó sẽ để trống cột này. Điều này báo hiệu với trình điều hợp
+            đồng bộ rằng nó nên tạo một liên lạc thô mới trên máy chủ, và lấy một
+            giá trị cho {@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}.
+            <p>
+                Cụ thể, id nguồn phải là <strong>duy nhất</strong> đối với từng loại tài khoản
+                và nên ổn định giữa các lần đồng bộ:
+            </p>
+                <ul>
+                    <li>
+                        Duy nhất: Mỗi liên lạc thô đối với một tài khoản phải có id nguồn riêng của mình. Nếu không
+                        thi hành điều này, bạn sẽ gây ra sự cố trong ứng dụng danh bạ.
+                        Để ý rằng hai liên lạc thô đối với cùng <em>loại</em> tài khoản có thể có
+                        cùng id nguồn. Ví dụ, liên lạc thô "Thomas Higginson" đối với
+                        tài khoản {@code emily.dickinson@gmail.com} được cho phép có cùng id nguồn
+                        như liên lạc thô "Thomas Higginson" đối với tài khoản
+                        {@code emilyd@gmail.com}.
+                    </li>
+                    <li>
+                        Ổn định: Id nguồn là một bộ phận cố định của dữ liệu từ dịch vụ trực tuyến đối với
+                        liên lạc thô. Ví dụ, nếu người dùng xóa Lưu trữ Danh bạ khỏi
+                        cài đặt Ứng dụng và đồng bộ lại, các liên lạc thô được khôi phục sẽ có cùng
+                        id nguồn như trước. Nếu bạn không thi hành điều này, các lối tắt sẽ dừng
+                        hoạt động.
+                    </li>
+                </ul>
+        </td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Groups}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.GroupsColumns#GROUP_VISIBLE}</td>
+        <td>"0" - Các liên lạc trong nhóm này không nên được hiển thị trong UI ứng dụng Android.</td>
+        <td>
+            Cột này dành cho tính tương thích với các máy chủ mà cho phép người dùng ẩn các liên lạc trong
+            một số nhóm.
+        </td>
+    </tr>
+    <tr>
+        <td>"1" - Các liên lạc trong nhóm này được cho phép hiển thị trong UI ứng dụng.</td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Settings}</td>
+        <td rowspan="2">
+            {@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE}</td>
+        <td>
+            "0" - Đối với tài khoản và loại tài khoản này, những liên lạc không thuộc về nhóm
+            được ẩn đối với UI ứng dụng Android.
+        </td>
+        <td rowspan="2">
+            Theo mặc định, các liên lạc được hiển thị nếu không có liên lạc thô nào của chúng thuộc về một nhóm
+            (Tư cách thành viên nhóm đối với một liên lạc thô được thể hiện bằng một hoặc nhiều hàng
+            {@link android.provider.ContactsContract.CommonDataKinds.GroupMembership} trong
+            bảng {@link android.provider.ContactsContract.Data}).
+            Bằng cách đặt cờ này trong hàng bảng {@link android.provider.ContactsContract.Settings} đối với
+            một loại tài khoản và tài khoản, bạn có thể buộc những liên lạc không có nhóm phải hiển thị.
+            Một công dụng của cờ này đó là để hiển thị liên lạc từ các máy chủ không sử dụng nhóm.
+        </td>
+    </tr>
+    <tr>
+        <td>
+            "1" - Đối với tài khoản và loại tài khoản này, những liên lạc không thuộc về nhóm
+            sẽ được hiển thị đối với UI ứng dụng.
+        </td>
+
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.SyncState}</td>
+        <td>(tất cả)</td>
+        <td>
+            Sử dụng bảng này để lưu giữ siêu dữ liệu cho trình điều hợp đồng bộ của bạn.
+        </td>
+        <td>
+            Với bảng này, bạn có thể lưu giữ trạng thái đồng bộ và các dữ liệu khác liên quan tới đồng bộ một cách lâu dài
+            trên thiết bị.
+        </td>
+    </tr>
+</table>
+<h2 id="Access">Truy cập Trình cung cấp Danh bạ</h2>
+<p>
+    Phần này mô tả các hướng dẫn về truy cập dữ liệu từ Trình cung cấp Danh bạ, tập trung vào những
+    nội dung sau:
+</p>
+<ul>
+    <li>
+        Truy vấn thực thể.
+    </li>
+    <li>
+        Sửa đổi hàng loạt.
+    </li>
+    <li>
+        Truy xuất và sửa đổi bằng ý định.
+    </li>
+    <li>
+        Toàn vẹn dữ liệu.
+    </li>
+</ul>
+<p>
+    Thực hiện sửa đổi từ một trình điều hợp đồng bộ cũng được đề cập chi tiết hơn trong phần
+    <a href="#SyncAdapters">Trình điều hợp Đồng bộ Trình cung cấp Danh bạ</a>.
+</p>
+<h3 id="Entities">Truy vấn thực thể</h3>
+<p>
+    Vì các bảng của Trình cung cấp Danh bạ được tổ chức theo một phân cấp, thường sẽ hữu ích nếu
+    truy xuất một hàng và tất cả hàng "con" được liên kết với nó. Ví dụ, để hiển thị
+    tất cả thông tin cho một người, bạn có thể muốn truy xuất tất cả hàng
+    {@link android.provider.ContactsContract.RawContacts} đối với một hàng
+    {@link android.provider.ContactsContract.Contacts} đơn, hoặc tất cả hàng
+    {@link android.provider.ContactsContract.CommonDataKinds.Email} đối với một hàng
+    {@link android.provider.ContactsContract.RawContacts} đơn. Để tạo điều kiện cho điều này, Trình cung cấp
+    Danh bạ sẽ cung cấp các cấu trúc <strong>thực thể</strong> đóng vai trò như liên kết cơ sở dữ liệu
+    giữa các bảng.
+</p>
+<p>
+    Thực thể giống như một bảng bao gồm các cột được chọn từ một bảng mẹ và bảng con của nó.
+    Khi bạn truy vấn một thực thể, bạn cung cấp một dự thảo và các tiêu chí dựa trên các cột
+    có sẵn từ thực thể. Kết quả là một {@link android.database.Cursor} trong đó chứa
+    một hàng cho từng hàng bảng con được truy xuất. Ví dụ, nếu bạn truy vấn
+    {@link android.provider.ContactsContract.Contacts.Entity} cho một tên liên lạc
+    và tất cả hàng {@link android.provider.ContactsContract.CommonDataKinds.Email} đối với tất cả
+    liên lạc thô cho tên đó, bạn sẽ nhận lại một {@link android.database.Cursor} chứa một hàng
+    cho mỗi hàng {@link android.provider.ContactsContract.CommonDataKinds.Email}.
+</p>
+<p>
+    Các thực thể sẽ đơn giản hóa việc truy vấn. Bằng cách sử dụng một thực thể, bạn có thể truy xuất ngay lập tức tất cả dữ liệu danh bạ cho một
+    liên lạc hoặc liên lạc thô, thay vì phải truy vấn bảng mẹ trước để nhận một
+    ID, và rồi phải truy xuất bảng con bằng ID đó. Đồng thời, Trình cung cấp Danh bạ xử lý
+    một truy vấn đối với một thực thể trong một giao tác đơn, điều này đảm bảo rằng dữ liệu được truy xuất sẽ được
+    nhất quán trong nội bộ.
+</p>
+<p class="note">
+    <strong>Lưu ý:</strong> Một thực thể thường không chứa tất cả cột của bảng mẹ và
+    bảng con. Nếu bạn cố gắng làm việc với một tên cột không có trong danh sách các hằng số tên cột
+    đối với thực thể đó, bạn sẽ nhận được một {@link java.lang.Exception}.
+</p>
+<p>
+    Đoạn mã HTML sau cho biết cách truy xuất tất cả hàng liên lạc thô cho một liên lạc. Đoạn mã HTML
+    là bộ phận của một ứng dụng lớn hơn có hai hoạt động, "chính" và "chi tiết". Hoạt động chính
+    hiển thị một danh sách các hàng liên lạc; khi người dùng chọn một hàng, hoạt động sẽ gửi ID của hàng tới hoạt động
+    chi tiết. Hoạt động chi tiết sử dụng {@link android.provider.ContactsContract.Contacts.Entity}
+    để hiển thị tất cả hàng dữ liệu từ tất cả liên lạc thô được liên kết với liên lạc
+    đã chọn.
+</p>
+<p>
+    Đoạn mã HTML này được lấy từ hoạt động "chi tiết":
+</p>
+<pre>
+...
+    /*
+     * Appends the entity path to the URI. In the case of the Contacts Provider, the
+     * expected URI is content://com.google.contacts/#/entity (# is the ID value).
+     */
+    mContactUri = Uri.withAppendedPath(
+            mContactUri,
+            ContactsContract.Contacts.Entity.CONTENT_DIRECTORY);
+
+    // Initializes the loader identified by LOADER_ID.
+    getLoaderManager().initLoader(
+            LOADER_ID,  // The identifier of the loader to initialize
+            null,       // Arguments for the loader (in this case, none)
+            this);      // The context of the activity
+
+    // Creates a new cursor adapter to attach to the list view
+    mCursorAdapter = new SimpleCursorAdapter(
+            this,                        // the context of the activity
+            R.layout.detail_list_item,   // the view item containing the detail widgets
+            mCursor,                     // the backing cursor
+            mFromColumns,                // the columns in the cursor that provide the data
+            mToViews,                    // the views in the view item that display the data
+            0);                          // flags
+
+    // Sets the ListView's backing adapter.
+    mRawContactList.setAdapter(mCursorAdapter);
+...
+&#64;Override
+public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+
+    /*
+     * Sets the columns to retrieve.
+     * RAW_CONTACT_ID is included to identify the raw contact associated with the data row.
+     * DATA1 contains the first column in the data row (usually the most important one).
+     * MIMETYPE indicates the type of data in the data row.
+     */
+    String[] projection =
+        {
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID,
+            ContactsContract.Contacts.Entity.DATA1,
+            ContactsContract.Contacts.Entity.MIMETYPE
+        };
+
+    /*
+     * Sorts the retrieved cursor by raw contact id, to keep all data rows for a single raw
+     * contact collated together.
+     */
+    String sortOrder =
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID +
+            " ASC";
+
+    /*
+     * Returns a new CursorLoader. The arguments are similar to
+     * ContentResolver.query(), except for the Context argument, which supplies the location of
+     * the ContentResolver to use.
+     */
+    return new CursorLoader(
+            getApplicationContext(),  // The activity's context
+            mContactUri,              // The entity content URI for a single contact
+            projection,               // The columns to retrieve
+            null,                     // Retrieve all the raw contacts and their data rows.
+            null,                     //
+            sortOrder);               // Sort by the raw contact ID.
+}
+</pre>
+<p>
+    Khi hoàn thành việc tải, {@link android.app.LoaderManager} gọi ra một lệnh gọi lại đến
+    {@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished(Loader, D)
+    onLoadFinished()}. Một trong các tham đối đến với phương pháp này là một
+    {@link android.database.Cursor} với các kết quả của truy vấn. Trong ứng dụng của chính mình, bạn có thể nhận dữ liệu
+    từ {@link android.database.Cursor} này để hiển thị nó hoặc thao tác thêm với nó.
+</p>
+<h3 id="Transactions">Sửa đổi hàng loạt</h3>
+<p>
+    Bất cứ khi nào có thể, bạn nên chèn, cập nhật và xóa dữ liệu trong Trình cung cấp Danh bạ trong
+    "chế độ hàng loạt", bằng cách tạo một {@link java.util.ArrayList} của các đối tượng
+    {@link android.content.ContentProviderOperation} và gọi
+    {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}. Vì
+    Trình cung cấp Danh bạ thực hiện tất cả thao tác trong một
+    {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} trong một giao tác
+    đơn, các sửa đổi của bạn sẽ không bao giờ ra khỏi kho lưu giữ danh bạ một cách
+    không nhất quán. Sửa đổi hàng loạt cũng tạo điều kiện cho việc chèn một liên lạc thô và dữ liệu chi tiết của liên lạc
+    tại cùng thời điểm.
+</p>
+<p class="note">
+    <strong>Lưu ý:</strong> Để sửa đổi một liên lạc thô <em>đơn</em>, hãy xét gửi một ý định tới
+    ứng dụng danh bạ của thiết bị thay vì xử lý sửa đổi trong ứng dụng của bạn.
+    Việc làm này được mô tả chi tiết hơn trong phần
+    <a href="#Intents">Truy xuất và sửa đổi bằng ý định</a>.
+</p>
+<h4>Điểm kết quả</h4>
+<p>
+    Sửa đổi hàng loạt chứa nhiều thao tác có thể chặn các tiến trình khác,
+    dẫn đến trải nghiệm người dùng tổng thể không tốt. Để sắp xếp tổ chức tất cả sửa đổi mà bạn muốn
+    thực hiện trong ít danh sách riêng nhất có thể, và đồng thời ngăn chúng
+    chặn hệ thống, bạn nên đặt các <strong>điểm kết quả</strong> cho một hoặc nhiều thao tác.
+    Điểm kết quả là một đối tượng {@link android.content.ContentProviderOperation} có giá trị
+    {@link android.content.ContentProviderOperation#isYieldAllowed()} được đặt thành
+    <code>true</code>. Khi các Trình cung cấp Danh bạ gặp phải một điểm kết quả, nó tạm dừng công việc để
+    cho phép các tiến trình khác chạy và đóng giao tác hiện tại. Khi trình cung cấp bắt đầu lại, nó
+    tiếp tục với thao tác tiếp theo trong {@link java.util.ArrayList} và bắt đầu một giao tác
+    mới.
+</p>
+<p>
+    Điểm kết quả dẫn đến có nhiều hơn một giao tác trên mỗi lệnh gọi tới
+    {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}. Vì
+    điều này, bạn nên đặt một điểm kết quả cho thao tác cuối cùng đối với một tập hợp các hàng có liên quan.
+    Ví dụ, bạn nên đặt một điểm kết quả cho thao tác cuối cùng trong một tập hợp mà thêm
+    các hàng liên lạc thô và hàng dữ liệu liên kết của chúng, hoặc thao tác cuối cùng đối với một tập hợp các hàng liên quan tới
+    một liên lạc riêng lẻ.
+</p>
+<p>
+    Điểm kết quả cũng là một đơn vị thao tác nguyên tử. Tất cả truy cập giữa hai điểm kết quả sẽ
+    hoặc thành công hoặc thất bại như một đơn vị riêng lẻ. Nếu bạn không đặt bất kỳ điểm kết quả nào, thao tác
+    nguyên tử nhỏ nhất chính là toàn bộ loạt thao tác. Nếu sử dụng điểm kết quả, bạn ngăn cản
+    các thao tác làm giảm hiệu suất của hệ thống, đồng thời đảm bảo rằng một tập con của
+    thao tác là tập nguyên tử.
+</p>
+<h4>Tham chiếu lại sửa đổi</h4>
+<p>
+    Khi bạn đang chèn một hàng liên lạc thô mới và các hàng dữ liệu liên kết của nó như một tập hợp các đối tượng
+    {@link android.content.ContentProviderOperation}, bạn phải liên kết các hàng dữ liệu với
+    hàng liên lạc thô bằng cách chèn giá trị
+    {@code android.provider.BaseColumns#_ID} của liên lạc thô làm giá trị
+    {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}. Tuy nhiên, giá trị
+    này không có sẵn khi bạn đang tạo {@link android.content.ContentProviderOperation}
+    cho hàng dữ liệu, vì bạn chưa áp dụng
+    {@link android.content.ContentProviderOperation} cho hàng liên lạc thô. Để khắc phục điều này,
+    lớp {@link android.content.ContentProviderOperation.Builder} có phương pháp
+    {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}.
+    Phương pháp này cho phép bạn chèn hoặc sửa đổi một cột bằng
+    kết quả của một thao tác trước đó.
+</p>
+<p>
+    Phương pháp {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+    có hai tham đối:
+</p>
+    <dl>
+        <dt>
+            <code>key</code>
+        </dt>
+        <dd>
+            Khóa của một cặp khóa-giá trị. Giá trị của tham đối này nên là tên của một cột
+            trong bảng mà bạn đang sửa đổi.
+        </dd>
+        <dt>
+            <code>previousResult</code>
+        </dt>
+        <dd>
+            Chỉ mục dựa trên 0 của một giá trị trong mảng đối tượng
+            {@link android.content.ContentProviderResult} từ
+            {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}. Khi
+            thao tác hàng loạt được áp dụng, kết quả của mỗi thao tác được lưu giữ trong một mảng kết quả
+            trung gian. Giá trị <code>previousResult</code> là chỉ mục
+            của một trong những kết quả này, nó được truy xuất và lưu giữ với giá trị <code>key</code>
+. Điều này cho phép bạn chèn một bản ghi liên lạc thô mới và nhận lại giá trị
+            {@code android.provider.BaseColumns#_ID} của nó, rồi thực hiện một "tham chiếu ngược" về
+            giá trị đó khi bạn thêm một hàng {@link android.provider.ContactsContract.Data}.
+            <p>
+                Toàn bộ mảng kết quả được tạo khi bạn lần đầu gọi
+                {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()},
+                với kích cỡ bằng với kích cỡ của {@link java.util.ArrayList} của các đối tượng
+                {@link android.content.ContentProviderOperation} mà bạn cung cấp. Tuy nhiên, tất cả
+                các phần tử trong mảng kết quả được đặt thành <code>null</code>, và nếu bạn cố gắng
+                thực hiện tham chiếu ngược tới một kết quả cho một thao tác chưa được áp dụng,
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+                sẽ đưa ra một lỗi {@link java.lang.Exception}.
+
+            </p>
+        </dd>
+    </dl>
+<p>
+    Các đoạn mã HTML sau minh họa cách chèn một liên lạc thô mới và dữ liệu hàng loạt. Chúng
+    bao gồm mã thiết lập một điểm kết quả và sử dụng một tham chiếu lại. Đoạn mã HTML là một
+    phiên bản mở rộng của phương pháp <code>createContacEntry()</code>, nó là một phần của lớp
+    <code>ContactAdder</code> trong ứng dụng mẫu
+    <code><a href="{@docRoot}resources/samples/ContactManager/index.html">
+    Contact Manager</a></code>.
+</p>
+<p>
+    Đoạn mã HTML đầu tiên truy xuất dữ liệu liên lạc từ UI. Tại điểm này, người dùng đã
+    chọn tài khoản mà liên lạc thô mới nên được thêm cho tài khoản đó.
+</p>
+<pre>
+// Creates a contact entry from the current UI values, using the currently-selected account.
+protected void createContactEntry() {
+    /*
+     * Gets values from the UI
+     */
+    String name = mContactNameEditText.getText().toString();
+    String phone = mContactPhoneEditText.getText().toString();
+    String email = mContactEmailEditText.getText().toString();
+
+    int phoneType = mContactPhoneTypes.get(
+            mContactPhoneTypeSpinner.getSelectedItemPosition());
+
+    int emailType = mContactEmailTypes.get(
+            mContactEmailTypeSpinner.getSelectedItemPosition());
+</pre>
+<p>
+    Đoạn mã HTML tiếp theo tạo một thao tác để chèn hàng liên lạc thô vào bảng
+    {@link android.provider.ContactsContract.RawContacts}:
+</p>
+<pre>
+    /*
+     * Prepares the batch operation for inserting a new raw contact and its data. Even if
+     * the Contacts Provider does not have any data for this person, you can't add a Contact,
+     * only a raw contact. The Contacts Provider will then add a Contact automatically.
+     */
+
+     // Creates a new array of ContentProviderOperation objects.
+    ArrayList&lt;ContentProviderOperation&gt; ops =
+            new ArrayList&lt;ContentProviderOperation&gt;();
+
+    /*
+     * Creates a new raw contact with its account type (server type) and account name
+     * (user's account). Remember that the display name is not stored in this row, but in a
+     * StructuredName data row. No other data is required.
+     */
+    ContentProviderOperation.Builder op =
+            ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
+            .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType())
+            .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    Tiếp theo, mã tạo các hàng dữ liệu cho hàng tên hiển thị, điện thoại và e-mail.
+</p>
+<p>
+    Từng đối tượng bộ dựng thao tác sẽ sử dụng
+    {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+    để nhận
+    {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}. Tham chiếu đó sẽ trỏ
+    ngược về đối tượng {@link android.content.ContentProviderResult} từ thao tác đầu tiên,
+    là thao tác thêm hàng liên lạc thô và trả về giá trị {@code android.provider.BaseColumns#_ID}
+    mới của nó. Kết quả là, mỗi hàng dữ liệu được tự động liên kết bởi
+    {@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}
+    của nó với hàng {@link android.provider.ContactsContract.RawContacts} mới mà nó thuộc về.
+</p>
+<p>
+    Đối tượng {@link android.content.ContentProviderOperation.Builder} thêm hàng e-mail sẽ được
+    gắn cờ bằng {@link android.content.ContentProviderOperation.Builder#withYieldAllowed(boolean)
+    withYieldAllowed()}, mà điều này đặt một điểm kết quả:
+</p>
+<pre>
+    // Creates the display name for the new raw contact, as a StructuredName data row.
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * withValueBackReference sets the value of the first argument to the value of
+             * the ContentProviderResult indexed by the second argument. In this particular
+             * call, the raw contact ID column of the StructuredName data row is set to the
+             * value of the result returned by the first operation, which is the one that
+             * actually adds the raw contact row.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to StructuredName
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
+
+            // Sets the data row's display name to the name in the UI.
+            .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified phone number and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Phone
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
+
+            // Sets the phone number and type
+            .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone)
+            .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified email and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Email
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
+
+            // Sets the email address and type
+            .withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email)
+            .withValue(ContactsContract.CommonDataKinds.Email.TYPE, emailType);
+
+    /*
+     * Demonstrates a yield point. At the end of this insert, the batch operation's thread
+     * will yield priority to other threads. Use after every set of operations that affect a
+     * single contact, to avoid degrading performance.
+     */
+    op.withYieldAllowed(true);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    Đoạn mã HTML cuối cùng hiển thị lệnh gọi tới
+    {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} mà
+    chèn liên lạc thô mới và các hàng dữ liệu.
+</p>
+<pre>
+    // Ask the Contacts Provider to create a new contact
+    Log.d(TAG,"Selected account: " + mSelectedAccount.getName() + " (" +
+            mSelectedAccount.getType() + ")");
+    Log.d(TAG,"Creating contact: " + name);
+
+    /*
+     * Applies the array of ContentProviderOperation objects in batch. The results are
+     * discarded.
+     */
+    try {
+
+            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
+    } catch (Exception e) {
+
+            // Display a warning
+            Context ctx = getApplicationContext();
+
+            CharSequence txt = getString(R.string.contactCreationFailure);
+            int duration = Toast.LENGTH_SHORT;
+            Toast toast = Toast.makeText(ctx, txt, duration);
+            toast.show();
+
+            // Log exception
+            Log.e(TAG, "Exception encountered while inserting contact: " + e);
+    }
+}
+</pre>
+<p>
+    Thao tác hàng loạt cũng cho phép bạn triển khai <strong>kiểm soát đồng thời lạc quan</strong>,
+    một phương pháp áp dụng các giao tác sửa đổi mà không phải khóa kho lưu giữ liên quan.
+    Để sử dụng phương pháp này, bạn áp dụng giao tác đó rồi kiểm tra các sửa đổi khác mà
+    có thể đã được thực hiện tại cùng thời điểm. Nếu bạn thấy đã diễn ra một sửa đổi không nhất quán,
+    hãy quay lui giao tác của bạn và thử lại.
+</p>
+<p>
+    Kiểm soát đồng thời lạc quan rất hữu ích đối với thiết bị di động, khi đó mỗi lúc chỉ có một người dùng
+    và việc truy cập đồng thời vào một kho lưu giữ dữ liệu hiếm khi xảy ra. Vì không sử dụng khóa nên
+    không bị lãng phí thời gian cho việc thiết đặt khóa hay chờ các giao tác khác nhả khóa của mình.
+</p>
+<p>
+    Để sử dụng kiểm soát đồng thời lạc quan trong khi đang cập nhật một hàng
+    {@link android.provider.ContactsContract.RawContacts} đơn, hãy làm theo các bước sau:
+</p>
+<ol>
+    <li>
+        Truy xuất cột {@link android.provider.ContactsContract.SyncColumns#VERSION}
+        của liên lạc thô cùng với dữ liệu khác mà bạn truy xuất.
+    </li>
+    <li>
+        Tạo một đối tượng {@link android.content.ContentProviderOperation.Builder} phù hợp để
+        thi hành một ràng buộc, bằng cách sử dụng phương pháp
+        {@link android.content.ContentProviderOperation#newAssertQuery(Uri)}. Đối với URI nội dung,
+        sử dụng {@link android.provider.ContactsContract.RawContacts#CONTENT_URI
+        RawContacts.CONTENT_URI}
+        với {@code android.provider.BaseColumns#_ID} của liên lạc thô được nối với nó.
+    </li>
+    <li>
+        Đối với đối tượng {@link android.content.ContentProviderOperation.Builder}, hãy gọi
+        {@link android.content.ContentProviderOperation.Builder#withValue(String, Object)
+        withValue()} để so sánh cột {@link android.provider.ContactsContract.SyncColumns#VERSION}
+        với số phiên bản bạn vừa truy xuất.
+    </li>
+    <li>
+        Đối với cùng {@link android.content.ContentProviderOperation.Builder}, hãy gọi
+        {@link android.content.ContentProviderOperation.Builder#withExpectedCount(int)
+        withExpectedCount()} để đảm bảo rằng chỉ một hàng được kiểm tra bằng xác nhận này.
+    </li>
+    <li>
+        Gọi {@link android.content.ContentProviderOperation.Builder#build()} để tạo đối tượng
+        {@link android.content.ContentProviderOperation}, rồi thêm đối tượng này làm
+        đối tượng đầu tiên trong {@link java.util.ArrayList} mà bạn chuyển cho
+        {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()}.
+    </li>
+    <li>
+        Áp dụng giao tác hàng loạt.
+    </li>
+</ol>
+<p>
+    Nếu hàng liên lạc thô được cập nhật bởi một thao tác khác giữa thời điểm bạn đọc hàng và
+    thời điểm bạn cố gắng sửa đổi nó, "xác nhận" {@link android.content.ContentProviderOperation}
+    sẽ thất bại, và toàn bộ loạt thao tác sẽ được rút khỏi. Sau đó, bạn có thể chọn thử lại
+    loạt hoặc thực hiện một hành động khác.
+</p>
+<p>
+    Đoạn mã HTML sau minh họa cách tạo một "xác nhận"
+    {@link android.content.ContentProviderOperation} sau khi truy vấn một liên lạc thô đơn bằng cách sử dụng
+    một {@link android.content.CursorLoader}:
+</p>
+<pre>
+/*
+ * The application uses CursorLoader to query the raw contacts table. The system calls this method
+ * when the load is finished.
+ */
+public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor cursor) {
+
+    // Gets the raw contact's _ID and VERSION values
+    mRawContactID = cursor.getLong(cursor.getColumnIndex(BaseColumns._ID));
+    mVersion = cursor.getInt(cursor.getColumnIndex(SyncColumns.VERSION));
+}
+
+...
+
+// Sets up a Uri for the assert operation
+Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, mRawContactID);
+
+// Creates a builder for the assert operation
+ContentProviderOperation.Builder assertOp = ContentProviderOperation.netAssertQuery(rawContactUri);
+
+// Adds the assertions to the assert operation: checks the version and count of rows tested
+assertOp.withValue(SyncColumns.VERSION, mVersion);
+assertOp.withExpectedCount(1);
+
+// Creates an ArrayList to hold the ContentProviderOperation objects
+ArrayList ops = new ArrayList&lt;ContentProviderOperationg&gt;;
+
+ops.add(assertOp.build());
+
+// You would add the rest of your batch operations to "ops" here
+
+...
+
+// Applies the batch. If the assert fails, an Exception is thrown
+try
+    {
+        ContentProviderResult[] results =
+                getContentResolver().applyBatch(AUTHORITY, ops);
+
+    } catch (OperationApplicationException e) {
+
+        // Actions you want to take if the assert operation fails go here
+    }
+</pre>
+<h3 id="Intents">Truy xuất và sửa đổi bằng ý định</h3>
+<p>
+    Việc gửi một ý định tới ứng dụng danh bạ của thiết bị cho phép bạn truy cập Trình cung cấp Danh bạ
+    một cách gián tiếp. Ý định sẽ khởi động UI ứng dụng danh bạ của thiết bị, trong đó người dùng có thể
+    thực hiện công việc liên quan tới danh bạ. Với kiểu truy cập này, người dùng có thể:
+    <ul>
+        <li>Chọn một liên lạc từ danh sách và trả nó về ứng dụng của bạn để làm việc tiếp.</li>
+        <li>Chỉnh sửa dữ liệu của một liên lạc hiện có.</li>
+        <li>Chèn một liên lạc thô mới cho bất kỳ tài khoản nào của họ.</li>
+        <li>Xóa một liên lạc hoặc dữ liệu danh bạ.</li>
+    </ul>
+<p>
+    Nếu người dùng đang chèn hoặc cập nhật dữ liệu, bạn có thể thu thập dữ liệu trước và gửi nó như
+    một phần của ý định.
+</p>
+<p>
+    Khi bạn sử dụng ý định để truy cập Trình cung cấp Danh bạ thông qua ứng dụng danh bạ của thiết bị, bạn
+    không phải ghi UI hay mã của chính mình để truy nhập trình cung cấp. Bạn cũng không phải
+    yêu cầu quyền đọc hoặc ghi đến trình cung cấp. Ứng dụng danh bạ của thiết bị có thể
+    cấp quyền đọc đối với một liên lạc cho bạn, và vì bạn đang thực hiện sửa đổi đối với
+    trình cung cấp thông qua một ứng dụng khác, bạn không cần phải có quyền ghi.
+</p>
+<p>
+    Tiến trình chung để gửi một ý định nhằm truy cập một trình cung cấp được mô tả chi tiết trong hướng dẫn
+    <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+    Nội dung Cơ bản về Trình cung cấp Nội dung</a> trong phần "Truy cập dữ liệu thông qua ý định." Hành động,
+    kiểu MIME, và các giá trị dữ liệu bạn sử dụng cho các tác vụ có sẵn được tóm tắt trong Bảng 4, trong khi các giá trị
+    phụ thêm mà bạn có thể sử dụng với
+    {@link android.content.Intent#putExtra(String, String) putExtra()} được liệt kê trong
+    tài liệu tham khảo cho {@link android.provider.ContactsContract.Intents.Insert}:
+</p>
+<p class="table-caption" id="table4">
+  <strong>Bảng 4.</strong> Ý định của Trình cung cấp Danh bạ.
+</p>
+<table style="width:75%">
+    <tr>
+        <th scope="col" style="width:10%">Tác vụ</th>
+        <th scope="col" style="width:5%">Hành động</th>
+        <th scope="col" style="width:10%">Dữ liệu</th>
+        <th scope="col" style="width:10%">Kiểu MIME</th>
+        <th scope="col" style="width:25%">Lưu ý</th>
+    </tr>
+    <tr>
+        <td><strong>Chọn một liên lạc từ danh sách</strong></td>
+        <td>{@link android.content.Intent#ACTION_PICK}</td>
+        <td>
+            Một trong:
+            <ul>
+                <li>
+{@link android.provider.ContactsContract.Contacts#CONTENT_URI Contacts.CONTENT_URI},
+                    mà hiển thị một danh sách các liên lạc.
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Phone#CONTENT_URI Phone.CONTENT_URI},
+                    mà hiển thị một danh sách các số điện thoại cho một liên lạc thô.
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal#CONTENT_URI
+StructuredPostal.CONTENT_URI},
+                    mà hiển thị một danh sách các địa chỉ bưu điện cho một liên lạc thô.
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_URI Email.CONTENT_URI},
+                    mà hiển thị một danh sách các địa chỉ e-mail cho một liên lạc thô.
+                </li>
+            </ul>
+        </td>
+        <td>
+            Không sử dụng
+        </td>
+        <td>
+            Hiển thị một danh sách các liên lạc thô hoặc danh sách dữ liệu từ một liên lạc thô, tùy vào kiểu
+            URI nội dung mà bạn cung cấp.
+            <p>
+                Gọi
+         {@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()},
+                nó trả về URI nội dung của hàng được chọn. Hình thức của URI là URI nội dung
+                của bảng với <code>LOOKUP_ID</code> của hàng được nối với nó.
+                Ứng dụng danh bạ của thiết bị cấp quyền đọc và ghi cho URI nội dung này
+                trong suốt thời gian hoạt động của bạn. Xem hướng dẫn
+                <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+                Nội dung Cơ bản về Trình cung cấp Nội dung</a> để biết thêm chi tiết.
+            </p>
+        </td>
+    </tr>
+    <tr>
+        <td><strong>Chèn một liên lạc thô mới</strong></td>
+        <td>{@link android.provider.ContactsContract.Intents.Insert#ACTION Insert.ACTION}</td>
+        <td>Không áp dụng</td>
+        <td>
+            {@link android.provider.ContactsContract.RawContacts#CONTENT_TYPE
+            RawContacts.CONTENT_TYPE}, kiểu MIME cho một tập hợp liên các lạc thô.
+        </td>
+        <td>
+            Hiển thị màn hình <strong>Thêm Liên lạc</strong> của ứng dụng danh bạ của thiết bị. Các
+            giá trị phụ thêm mà bạn thêm vào ý định sẽ được hiển thị. Nếu được gửi bằng
+        {@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()},
+            URI nội dung của liên lạc thô mới thêm sẽ được chuyển lại cho phương pháp gọi lại
+            {@link android.app.Activity#onActivityResult(int, int, Intent) onActivityResult()}
+            của hoạt động của bạn trong tham đối {@link android.content.Intent}, trong
+            trường "dữ liệu". Để nhận giá trị, hãy gọi {@link android.content.Intent#getData()}.
+        </td>
+    </tr>
+    <tr>
+        <td><strong>Chỉnh sửa một liên lạc</strong></td>
+        <td>{@link android.content.Intent#ACTION_EDIT}</td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI} đối với
+            liên lạc. Hoạt động của trình chỉnh sửa sẽ cho phép người dùng chỉnh sửa bất kỳ dữ liệu nào được liên kết
+            với liên lạc này.
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE
+            Contacts.CONTENT_ITEM_TYPE}, một liên lạc đơn.</td>
+        <td>
+            Hiển thị màn hình Chỉnh sửa Liên lạc trong ứng dụng danh bạ. Các giá trị phụ thêm mà bạn thêm
+            vào ý định sẽ được hiển thị. Khi người dùng nhấp vào <strong>Xong</strong> để lưu các
+            chỉnh sửa, hoạt động của bạn quay lại tiền cảnh.
+        </td>
+    </tr>
+    <tr>
+        <td><strong>Hiển thị một trình chọn mà cũng có thể thêm dữ liệu.</strong></td>
+        <td>{@link android.content.Intent#ACTION_INSERT_OR_EDIT}</td>
+        <td>
+            Không áp dụng
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE}
+        </td>
+         <td>
+            Ý định này luôn hiển thị màn hình bộ chọn của ứng dụng danh bạ. Người dùng có thể hoặc
+            chọn một liên lạc để chỉnh sửa, hoặc thêm một liên lạc mới. Hoặc màn hình chỉnh sửa hoặc màn hình thêm
+            sẽ xuất hiện, tùy vào lựa chọn của người dùng, và dữ liệu phụ thêm mà bạn chuyển trong ý định
+           sẽ được hiển thị. Nếu ứng dụng của bạn hiển thị dữ liệu chẳng hạn như e-mail hoặc số điện thoại, hãy sử dụng
+            ý định này để cho phép người dùng thêm dữ liệu vào một liên lạc hiện tại.
+            liên lạc,
+            <p class="note">
+                <strong>Lưu ý:</strong> Không cần gửi một giá trị tên trong phần phụ thêm của ý định,
+                vì người dùng luôn chọn một tên hiện có hoặc thêm một tên mới. Thêm nữa,
+                nếu bạn gửi một tên, và người dùng chọn thực hiện chỉnh sửa, ứng dụng danh bạ sẽ
+                hiển thị tên mà bạn gửi, ghi đè giá trị trước. Nếu người dùng không
+                để ý thấy điều này và lưu chỉnh sửa, giá trị cũ sẽ bị mất.
+            </p>
+         </td>
+    </tr>
+</table>
+<p>
+    Ứng dụng danh bạ của thiết bị không cho phép bạn xóa một liên lạc thô hay bất kỳ dữ liệu nào bằng một
+    ý định. Thay vào đó, để xóa một liên lạc thô, hãy sử dụng
+    {@link android.content.ContentResolver#delete(Uri, String, String[]) ContentResolver.delete()}
+    hoặc {@link android.content.ContentProviderOperation#newDelete(Uri)
+    ContentProviderOperation.newDelete()}.
+</p>
+<p>
+    Đoạn mã HTML sau minh họa cách xây dựng và gửi một ý định để chèn một liên lạc thô mới và
+    dữ liệu:
+</p>
+<pre>
+// Gets values from the UI
+String name = mContactNameEditText.getText().toString();
+String phone = mContactPhoneEditText.getText().toString();
+String email = mContactEmailEditText.getText().toString();
+
+String company = mCompanyName.getText().toString();
+String jobtitle = mJobTitle.getText().toString();
+
+// Creates a new intent for sending to the device's contacts application
+Intent insertIntent = new Intent(ContactsContract.Intents.Insert.ACTION);
+
+// Sets the MIME type to the one expected by the insertion activity
+insertIntent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
+
+// Sets the new contact name
+insertIntent.putExtra(ContactsContract.Intents.Insert.NAME, name);
+
+// Sets the new company and job title
+insertIntent.putExtra(ContactsContract.Intents.Insert.COMPANY, company);
+insertIntent.putExtra(ContactsContract.Intents.Insert.JOB_TITLE, jobtitle);
+
+/*
+ * Demonstrates adding data rows as an array list associated with the DATA key
+ */
+
+// Defines an array list to contain the ContentValues objects for each row
+ArrayList&lt;ContentValues&gt; contactData = new ArrayList&lt;ContentValues&gt;();
+
+
+/*
+ * Defines the raw contact row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues rawContactRow = new ContentValues();
+
+// Adds the account type and name to the row
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType());
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+// Adds the row to the array
+contactData.add(rawContactRow);
+
+/*
+ * Sets up the phone number data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues phoneRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+phoneRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
+);
+
+// Adds the phone number and its type to the row
+phoneRow.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone);
+
+// Adds the row to the array
+contactData.add(phoneRow);
+
+/*
+ * Sets up the email data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues emailRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+emailRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE
+);
+
+// Adds the email address and its type to the row
+emailRow.put(ContactsContract.CommonDataKinds.Email.ADDRESS, email);
+
+// Adds the row to the array
+contactData.add(emailRow);
+
+/*
+ * Adds the array to the intent's extras. It must be a parcelable object in order to
+ * travel between processes. The device's contacts app expects its key to be
+ * Intents.Insert.DATA
+ */
+insertIntent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, contactData);
+
+// Send out the intent to start the device's contacts app in its add contact activity.
+startActivity(insertIntent);
+</pre>
+<h3 id="DataIntegrity">Toàn vẹn dữ liệu</h3>
+<p>
+    Vì kho lưu giữ danh bạ chứa dữ liệu quan trọng và nhạy cảm mà người dùng cho là
+    đúng và cập nhật, Trình cung cấp Danh bạ có các quy tắc về toàn vẹn dữ liệu được định nghĩa rõ ràng. Bạn có
+    trách nhiệm tuân theo những quy tắc này khi sửa đổi dữ liệu danh bạ. Các quy tắc
+    quan trọng được liệt kê ở đây:
+</p>
+<dl>
+    <dt>
+        Luôn thêm một hàng {@link android.provider.ContactsContract.CommonDataKinds.StructuredName} cho
+        mỗi hàng {@link android.provider.ContactsContract.RawContacts} mà bạn thêm.
+    </dt>
+    <dd>
+        Hàng {@link android.provider.ContactsContract.RawContacts} không có một hàng
+        {@link android.provider.ContactsContract.CommonDataKinds.StructuredName} trong bảng
+        {@link android.provider.ContactsContract.Data} có thể gây ra sự cố trong khi
+        tổng hợp.
+    </dd>
+    <dt>
+        Luôn liên kết các hàng {@link android.provider.ContactsContract.Data} mới với hàng
+        {@link android.provider.ContactsContract.RawContacts} mẹ của chúng.
+    </dt>
+    <dd>
+        Mỗi hàng {@link android.provider.ContactsContract.Data} mà không được liên kết với một
+        {@link android.provider.ContactsContract.RawContacts} sẽ không hiển thị trong ứng dụng danh bạ
+         của thiết bị, và nó có thể gây ra sự cố với trình điều hợp đồng bộ.
+    </dd>
+    <dt>
+        Chỉ thay đổi dữ liệu đối với những liên lạc thô mà bạn sở hữu.
+    </dt>
+    <dd>
+        Nhớ rằng Trình cung cấp Danh bạ luôn quản lý dữ liệu từ vài
+        loại tài khoản/dịch vụ trực tuyến khác nhau. Bạn cần đảm bảo rằng ứng dụng của bạn chỉ sửa đổi
+        hoặc xóa dữ liệu đối với các hàng thuộc về bạn, và rằng nó chỉ chèn dữ liệu có
+        loại và tên tài khoản mà bạn kiểm soát.
+    </dd>
+    <dt>
+        Luôn sử dụng các hằng số được định nghĩa trong {@link android.provider.ContactsContract} và các lớp con của nó
+        đối với thẩm quyền, URI nội dung, đường dẫn URI, tên cột, kiểu MIME, và các giá trị
+        {@link android.provider.ContactsContract.CommonDataKinds.CommonColumns#TYPE}.
+    </dt>
+    <dd>
+        Sử dụng những hằng số này sẽ giúp bạn tránh gặp lỗi. Bạn cũng sẽ được thông báo bằng cảnh báo
+        từ trình biên dịch nếu bất kỳ hằng số nào không được chấp nhận.
+    </dd>
+</dl>
+<h3 id="CustomData">Hàng dữ liệu tùy chỉnh</h3>
+<p>
+    Bằng cách tạo và sử dụng các kiểu MIME tùy chỉnh của chính mình, bạn có thể chèn, chỉnh sửa, xóa và truy xuất
+    các hàng dữ liệu của chính mình trong bảng {@link android.provider.ContactsContract.Data}. Các hàng của bạn
+    bị giới hạn bằng cách sử dụng cột được định nghĩa trong
+    {@link android.provider.ContactsContract.DataColumns}, mặc dù bạn có thể ánh xạ
+    tên cột theo kiểu của chính mình với tên cột mặc định. Trong ứng dụng danh bạ của thiết bị,
+    dữ liệu cho các hàng của bạn được hiển thị nhưng không thể chỉnh sửa hay xóa được, và người dùng không thể thêm
+    dữ liệu bổ sung. Để cho phép người dùng sửa đổi các hàng dữ liệu tùy chỉnh của mình, bạn phải cung cấp một hoạt động
+    trình chỉnh sửa trong ứng dụng của chính mình.
+</p>
+<p>
+    Để hiển thị dữ liệu tùy chỉnh của mình, hãy cung cấp một tệp <code>contacts.xml</code> chứa một phần tử
+    <code>&lt;ContactsAccountType&gt;</code> và một hoặc nhiều phần tử con
+    <code>&lt;ContactsDataKind&gt;</code> của nó. Điều này được mô tả chi tiết hơn trong
+    phần <a href="#SocialStreamDataKind"><code>&lt;ContactsDataKind&gt; element</code></a>.
+</p>
+<p>
+    Để tìm hiểu thêm về các kiểu MIME tùy chỉnh, hãy đọc hướng dẫn
+    <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+    Tạo một Trình cung cấp Nội dung</a>.
+</p>
+<h2 id="SyncAdapters">Trình điều hợp Đồng bộ Trình cung cấp Danh bạ</h2>
+<p>
+    Trình cung cấp Danh bạ được thiết kế riêng để xử lý <strong>đồng bộ hoá</strong>
+    dữ liệu danh bạ giữa một thiết bị và một dịch vụ trực tuyến. Điều này cho phép người dùng tải
+    dữ liệu hiện có xuống một thiết bị mới và tải dữ liệu hiện có lên một tài khoản mới.
+    Đồng bộ hoá cũng đảm bảo rằng người dùng có sẵn dữ liệu mới nhất, không phụ thuộc vào
+    nguồn của các bổ sung và thay đổi. Một ưu điểm khác của đồng bộ hoá đó là nó khiến
+    dữ liệu danh bạ có sẵn ngay cả khi thiết bị không được kết nối với mạng.
+</p>
+<p>
+    Mặc dù bạn có thể triển khai đồng bộ hoá theo nhiều cách, hệ thống Android cung cấp
+    một khuôn khổ đồng bộ hóa bổ trợ có khả năng tự động hóa những tác vụ sau:
+    <ul>
+
+    <li>
+        Kiểm tra sự sẵn sàng của mạng.
+    </li>
+    <li>
+        Lập lịch biểu và thực hiện đồng bộ hoá dựa trên tùy chọn của người dùng.
+    </li>
+    <li>
+        Khởi động lại những đồng bộ hoá đã dừng.
+    </li>
+    </ul>
+<p>
+    Để sử dụng khuôn khổ này, bạn phải cung cấp một phần bổ trợ trình điều hợp đồng bộ. Mỗi trình điều hợp đồng bộ là duy nhất đối với
+    một dịch vụ và trình cung cấp nội dung, nhưng có thể xử lý nhiều tên tài khoản cho cùng dịch vụ. Khuôn khổ
+    cũng cho phép nhiều trình điều hợp đồng bộ cho cùng dịch vụ và trình cung cấp.
+</p>
+<h3 id="SyncClassesFiles">Các lớp và tệp trình điều hợp đồng bộ</h3>
+<p>
+    Bạn triển khai một trình điều hợp đồng bộ làm lớp con của
+    {@link android.content.AbstractThreadedSyncAdapter} và cài đặt nó như một phần của một ứng dụng
+    Android. Hệ thống biết về trình điều hợp đồng bộ từ các phần tử trong bản kê khai ứng dụng
+    của nó, và từ một tệp XML đặc biệt được chỉ đến trong bản kê khai. Tệp XML sẽ định nghĩa
+    loại tài khoản cho dịch vụ trực tuyến và thẩm quyền cho trình cung cấp nội dung, cùng nhau chúng
+   xác định duy nhất một trình điều hợp. Trình điều hợp đồng bộ không được kích hoạt cho tới khi người dùng thêm một
+    tài khoản cho loại tài khoản của trình điều hợp đồng bộ và kích hoạt đồng bộ hoá cho trình cung cấp
+    nội dung mà trình điều hợp đồng bộ sẽ đồng bộ cùng.  Tại thời điểm đó, hệ thống bắt đầu quản lý trình điều hợp,
+    gọi nó nếu cần thiết để đồng bộ hoá giữa trình cung cấp nội dung và máy chủ.
+</p>
+<p class="note">
+    <strong>Lưu ý:</strong> Việc sử dụng một loại tài khoản để tham gia nhận biết trình điều hợp đồng bộ sẽ cho phép
+    hệ thống phát hiện và nhóm cùng nhau những trình điều hợp đồng bộ truy cập các dịch vụ khác nhau từ
+    cùng tổ chức. Ví dụ, các trình điều hợp đồng bộ cho dịch vụ trực tuyến của Google đều có cùng
+    loại tài khoản <code>com.google</code>. Khi người dùng thêm một tài khoản Google vào thiết bị của mình, tất cả
+    trình điều hợp đồng bộ được cài đặt cho dịch vụ Google được liệt kê cùng nhau; mỗi trình điều hợp đồng bộ
+    được liệt kê sẽ đồng bộ với một trình cung cấp nội dung khác nhau trên thiết bị.
+</p>
+<p>
+    Vì hầu hết dịch vụ đều yêu cầu người dùng xác minh danh tính của họ trước khi truy cập
+    dữ liệu, hệ thống Android cung cấp một khuôn khổ xác thực tương tự như và thường
+    được sử dụng cùng với khuôn khổ của trình điều hợp đồng bộ. Khuôn khổ xác thực sử dụng
+    các trình xác thực bổ trợ là lớp con của
+    {@link android.accounts.AbstractAccountAuthenticator}. Một trình xác thực sẽ xác minh
+    danh tính của người dùng theo các bước sau:
+    <ol>
+        <li>
+            Thu thập tên, mật khẩu hoặc thông tin tương tự của người dùng (
+<strong>thông tin xác thực</strong> của người dùng).
+        </li>
+        <li>
+            Gửi thông tin xác thực tới dịch vụ
+        </li>
+        <li>
+            Kiểm tra trả lời của dịch vụ.
+        </li>
+    </ol>
+<p>
+    Nếu dịch vụ chấp nhận thông tin xác thực, trình xác thực có thể
+    lưu giữ thông tin xác thực đó để sử dụng sau. Vì khuôn khổ trình xác thực bổ trợ,
+    {@link android.accounts.AccountManager} có thể cung cấp quyền truy cập bất kỳ token xác thực nào mà một trình xác thực 
+    hỗ trợ và chọn hiện ra, chẳng hạn như token xác thực OAuth2.
+</p>
+<p>
+    Mặc dù không yêu cầu xác thực, phần lớn dịch vụ danh bạ đều sử dụng nó.
+    Tuy nhiên, bạn không phải sử dụng khuôn khổ xác thực của Android để thực hiện xác thực.
+</p>
+<h3 id="SyncAdapterImplementing">Triển khai trình điều hợp đồng bộ</h3>
+<p>
+    Để triển khai một trình điều hợp đồng bộ cho Trình cung cấp Danh bạ, bạn bắt đầu bằng cách tạo một
+    ứng dụng Android chứa:
+</p>
+    <dl>
+        <dt>
+            Một thành phần {@link android.app.Service} để hồi đáp lại các yêu cầu từ hệ thống nhằm
+            gắn kết với trình điều hợp đồng bộ.
+        </dt>
+        <dd>
+            Khi hệ thống muốn chạy đồng bộ hoá, nó gọi phương pháp
+            {@link android.app.Service#onBind(Intent) onBind()} của dịch vụ và nhận một
+            {@link android.os.IBinder} cho trình điều hợp đồng bộ. Điều này cho phép hệ thống thực hiện
+            lệnh gọi liên tiến trình tới các phương pháp của trình điều hợp.
+            <p>
+                Trong ứng dụng mẫu<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+                Trình điều hợp Đồng bộ Mẫu</a>, tên lớp của dịch vụ này là
+                <code>com.example.android.samplesync.syncadapter.SyncService</code>.
+            </p>
+        </dd>
+        <dt>
+            Trình điều hợp đồng bộ thực tế, được triển khai như một lớp con cụ thể của
+            {@link android.content.AbstractThreadedSyncAdapter}.
+        </dt>
+        <dd>
+            Lớp này thực hiện công việc tải xuống dữ liệu từ máy chủ, tải lên dữ liệu từ
+            thiết bị, và xử lý xung đột. Công việc chính của trình điều hợp được
+            thực hiện trong phương pháp {@link android.content.AbstractThreadedSyncAdapter#onPerformSync(
+            Account, Bundle, String, ContentProviderClient, SyncResult)
+            onPerformSync()}. Lớp này phải được khởi tạo như một đối tượng duy nhất (singleton).
+            <p>
+                Trong ứng dụng mẫu <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+                Trình điều hợp Đồng bộ Mẫu</a>, trình điều hợp đồng bộ được định nghĩa trong lớp
+                <code>com.example.android.samplesync.syncadapter.SyncAdapter</code>.
+            </p>
+        </dd>
+        <dt>
+            Một lớp con của {@link android.app.Application}.
+        </dt>
+        <dd>
+            Lớp này đóng vai trò như một nhà máy cho đối tượng duy nhất của trình điều hợp đồng bộ. Sử dụng phương pháp
+            {@link android.app.Application#onCreate()} để khởi tạo trình điều hợp đồng bộ, và
+            cung cấp một phương pháp "bộ nhận" tĩnh để trả đối tượng duy nhất về phương pháp
+            {@link android.app.Service#onBind(Intent) onBind()} của dịch vụ
+            của trình điều hợp đồng bộ.
+        </dd>
+        <dt>
+            <strong>Tùy chọn:</strong> Một thành phần {@link android.app.Service} để hồi đáp lại
+            các yêu cầu từ hệ thống về xác thực người dùng.
+        </dt>
+        <dd>
+            {@link android.accounts.AccountManager} khởi động dịch vụ này để bắt đầu tiến trình
+            xác thực. Phương pháp {@link android.app.Service#onCreate()} của dịch vụ này sẽ khởi tạo một
+            đối tượng trình xác thực. Khi hệ thống muốn xác thực một tài khoản người dùng cho trình điều hợp đồng bộ
+            của ứng dụng, nó sẽ gọi phương pháp
+            {@link android.app.Service#onBind(Intent) onBind()} của dịch vụ để nhận một
+            {@link android.os.IBinder} cho trình xác thực. Điều này cho phép hệ thống thực hiện
+            lệnh gọi liên tiến trình tới các phương pháp của trình xác thực.
+            <p>
+                Trong ứng dụng mẫu<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+                Trình điều hợp Đồng bộ Mẫu</a>, tên lớp của dịch vụ này là
+                <code>com.example.android.samplesync.authenticator.AuthenticationService</code>.
+            </p>
+        </dd>
+        <dt>
+            <strong>Tùy chọn:</strong> Một lớp con cụ thể của
+            {@link android.accounts.AbstractAccountAuthenticator} để xử lý các yêu cầu về
+            xác thực.
+        </dt>
+        <dd>
+            Lớp này cung cấp các phương pháp mà {@link android.accounts.AccountManager} gọi ra
+            để xác thực các thông tin xác thực của người dùng với máy chủ. Các chi tiết của
+            tiến trình xác thực rất khác nhau dựa trên công nghệ máy chủ đang sử dụng. Bạn nên
+            tham khảo tài liệu cho phần mềm máy chủ của mình để tìm hiểu thêm về xác thực.
+            <p>
+                Trong ứng dụng mẫu <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+                Trình điều hợp Đồng bộ Mẫu</a>, trình xác thực được định nghĩa trong lớp
+                <code>com.example.android.samplesync.authenticator.Authenticator</code>.
+            </p>
+        </dd>
+        <dt>
+            Các tệp XML để định nghĩa trình điều hợp đồng bộ và trình xác thực cho hệ thống.
+        </dt>
+        <dd>
+            Các thành phần dịch vụ trình điều hợp đồng bộ và trình xác thực đã nêu được
+            định nghĩa trong các phần tử
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/service-element.html">service</a>&gt;</code>
+            ở bản kê khai của ứng dụng. Những phần tử này
+            chứa các phần tử con
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+mà cung cấp dữ liệu cụ thể cho
+            hệ thống:
+            <ul>
+                <li>
+                    Phần tử
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+                    cho dịch vụ trình điều hợp đồng bộ sẽ trỏ về
+                    tệp XML <code>res/xml/syncadapter.xml</code>. Đến lượt mình, tệp này quy định
+                    một URI cho dịch vụ web mà sẽ được đồng bộ hóa với Trình cung cấp Danh bạ,
+                    và một loại tài khoản cho dịch vụ web.
+                </li>
+                <li>
+                    <strong>Tùy chọn:</strong> Phần tử
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+                    cho trình xác thực sẽ trỏ về tệp XML
+                    <code>res/xml/authenticator.xml</code>. Đến lượt mình, tệp này quy định
+                    loại tài khoản mà trình xác thực này hỗ trợ, cũng như các tài nguyên UI mà
+                    xuất hiện trong tiến trình xác thực. Loại tài khoản được quy định trong phần tử
+                    này phải giống như loại tài khoản được quy định cho trình điều hợp
+                    đồng bộ.
+                </li>
+            </ul>
+        </dd>
+    </dl>
+<h2 id="SocialStream">Dữ liệu từ Luồng Xã hội</h2>
+<p>
+    Các bảng {@code android.provider.ContactsContract.StreamItems} và 
+    {@code android.provider.ContactsContract.StreamItemPhotos} quản lý
+    dữ liệu đến từ các mạng xã hội. Bạn có thể ghi một trình điều hợp đồng bộ mà thêm dữ liệu luồng từ
+    mạng của chính mình vào những bảng này, hoặc bạn có thể đọc dữ liệu luồng từ những bảng này và
+    hiển thị nó trong ứng dụng của chính mình, hoặc cả hai. Với những tính năng này, các dịch vụ và ứng dụng
+    mạng xã hội của bạn có thể được tích hợp vào trải nghiệm mạng xã hội của Android.
+</p>
+<h3 id="StreamText">Văn bản từ luồng xã hội</h3>
+<p>
+    Các mục dòng dữ liệu luôn được liên kết với một liên lạc thô. 
+    {@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID} liên kết với giá trị
+    <code>_ID</code> của liên lạc thô mới. Loại tài khoản và tên tài khoản của liên lạc thô
+    cũng được lưu giữ trong hàng mục dòng.
+</p>
+<p>
+    Lưu giữ dữ liệu từ luồng của bạn vào những cột sau:
+</p>
+<dl>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_TYPE}
+    </dt>
+    <dd>
+        <strong>Bắt buộc.</strong> Loại tài khoản của người dùng đối với liên lạc thô được liên kết với mục dòng
+        này. Nhớ đặt giá trị này khi bạn chèn một mục dòng.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_NAME}
+    </dt>
+    <dd>
+        <strong>Bắt buộc.</strong> Tên tài khoản của người dùng đối với liên lạc thô được liên kết với mục dòng
+        này. Nhớ đặt giá trị này khi bạn chèn một mục dòng.
+    </dd>
+    <dt>
+        Cột mã định danh
+    </dt>
+    <dd>
+        <strong>Bắt buộc.</strong> Bạn phải chèn các cột mã định danh sau khi chèn
+        một mục dòng:
+        <ul>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_ID}: Giá trị
+                {@code android.provider.BaseColumns#_ID} của liên lạc mà mục dòng
+                này được liên kết với.
+            </li>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_LOOKUP_KEY}: Giá trị
+                {@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} của liên lạc
+                mà mục dòng này được liên kết với.
+            </li>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}: Giá trị
+                {@code android.provider.BaseColumns#_ID} của liên lạc thô mà mục dòng này
+                được liên kết với.
+            </li>
+        </ul>
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#COMMENTS}
+    </dt>
+    <dd>
+        Tùy chọn. Lưu giữ thông tin tóm tắt mà bạn có thể hiển thị ở phần đầu của một mục dòng.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#TEXT}
+    </dt>
+    <dd>
+        Văn bản của mục dòng, hoặc là nội dung đã được đăng bởi nguồn của mục đó,
+        hoặc là mô tả về một số hành động đã khởi tạo mục dòng. Cột này có thể chứa
+        bất kỳ hình ảnh tài nguyên định dạng và được nhúng nào mà có thể được kết xuất bởi
+        {@link android.text.Html#fromHtml(String) fromHtml()}. Trình cung cấp có thể cắt bớt hoặc
+        cắt ngắn bằng dấu ba chấm các nội dung dài, nhưng sẽ cố gắng tránh làm hỏng các tag.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP}
+    </dt>
+    <dd>
+        Xâu văn bản chứa thời gian mà mục dòng được chèn hoặc cập nhật, có
+        dạng <em>mili giây</em> trôi qua kể từ giờ epoch. Những ứng dụng chèn hoặc cập nhật mục dòng sẽ chịu
+        trách nhiệm  duy trì cột này; nó không được tự động duy trì bởi
+        Trình cung cấp Danh bạ.
+    </dd>
+</dl>
+<p>
+    Để hiển thị thông tin nhận dạng cho các mục dòng của bạn, hãy sử dụng
+    {@code android.provider.ContactsContract.StreamItemsColumns#RES_ICON},
+    {@code android.provider.ContactsContract.StreamItemsColumns#RES_LABEL}, và
+    {@code android.provider.ContactsContract.StreamItemsColumns#RES_PACKAGE} để liên kết với các tài nguyên
+    trong ứng dụng của mình.
+</p>
+<p>
+    Bảng {@code android.provider.ContactsContract.StreamItems} chứa các cột
+    {@code android.provider.ContactsContract.StreamItemsColumns#SYNC1} thông qua
+    {@code android.provider.ContactsContract.StreamItemsColumns#SYNC4} dành riêng để sử dụng
+    trình điều hợp đồng bộ.
+</p>
+<h3 id="StreamPhotos">Ảnh từ luồng xã hội</h3>
+<p>
+   Bảng {@code android.provider.ContactsContract.StreamItemPhotos} lưu giữ ảnh được liên kết
+   với một mục dòng. Cột
+   {@code android.provider.ContactsContract.StreamItemPhotosColumns#STREAM_ITEM_ID} của bảng
+   liên kết với các giá trị trong {@code android.provider.BaseColumns#_ID} của bảng
+   {@code android.provider.ContactsContract.StreamItems}. Các tham chiếu ảnh được lưu giữ trong
+   bảng ở những cột này:
+</p>
+<dl>
+    <dt>
+        Cột {@code android.provider.ContactsContract.StreamItemPhotos#PHOTO} (một BLOB).
+    </dt>
+    <dd>
+        Biểu diễn dạng nhị phân của ảnh, được trình cung cấp đổi kích cỡ để lưu giữ và hiển thị.
+        Cột này có sẵn để tương thích ngược với các phiên bản trước của Trình cung cấp
+        Danh bạ mà đã sử dụng nó để lưu giữ ảnh. Tuy nhiên, trong phiên bản hiện tại
+        bạn không nên sử dụng cột này để lưu giữ ảnh. Thay vào đó, hãy sử dụng
+        hoặc {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID} hoặc 
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI} (cả hai
+        đều được mô tả trong các điểm sau) để lưu giữ ảnh trong một tệp. Lúc này, cột này
+        chứa một hình thu nhỏ của ảnh sẵn sàng để đọc.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID}
+    </dt>
+    <dd>
+        Một mã định danh dạng số của ảnh cho một liên lạc thô. Nối giá trị này với hằng số
+        {@link android.provider.ContactsContract.DisplayPhoto#CONTENT_URI DisplayPhoto.CONTENT_URI}
+        để nhận một URI nội dung trỏ về một tệp ảnh đơn, rồi gọi
+        {@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
+        openAssetFileDescriptor()} để nhận một điều khiển (handle) cho tệp ảnh.
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI}
+    </dt>
+    <dd>
+        Một URI nội dung trỏ trực tiếp tới tệp ảnh cho ảnh được đại diện bởi hàng này.
+        Gọi {@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
+        openAssetFileDescriptor()} bằng URI này để nhận một điều khiển (handle) cho tệp ảnh.
+    </dd>
+</dl>
+<h3 id="SocialStreamTables">Sử dụng các bảng luồng xã hội</h3>
+<p>
+    Những bảng này hoạt động giống như các bảng chính khác trong Trình cung cấp Danh bạ, ngoại trừ:
+</p>
+    <ul>
+        <li>
+            Những bảng này yêu cầu quyền truy cập bổ sung. Để đọc từ chúng, ứng dụng của bạn
+            phải có quyền {@code android.Manifest.permission#READ_SOCIAL_STREAM}. Để
+            sửa đổi chúng, ứng dụng của bạn phải có quyền
+            {@code android.Manifest.permission#WRITE_SOCIAL_STREAM}.
+        </li>
+        <li>
+            Đối với bảng {@code android.provider.ContactsContract.StreamItems}, số hàng
+            được lưu giữ cho mỗi liên lạc thô sẽ bị giới hạn. Sau khi đạt đến giới hạn này,
+            Trình cung cấp Danh bạ sẽ tạo khoảng trống cho các hàng mục dòng mới bằng cách tự động xóa
+            những hàng có
+            {@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP} lâu nhất. Để nhận
+            giới hạn, hãy phát hành một truy vấn tới URI nội dung
+            {@code android.provider.ContactsContract.StreamItems#CONTENT_LIMIT_URI}. Bạn có thể để
+            tất cả các tham đối khác ngoài URI nội dung được đặt về <code>null</code>. Truy vấn
+            trả về một Con chạy chứa một hàng đơn, với cột đơn
+            {@code android.provider.ContactsContract.StreamItems#MAX_ITEMS}.
+        </li>
+    </ul>
+
+<p>
+    Lớp {@code android.provider.ContactsContract.StreamItems.StreamItemPhotos} định nghĩa một
+    bảng con {@code android.provider.ContactsContract.StreamItemPhotos} chứa các hàng ảnh
+    cho một mục dòng đơn.
+</p>
+<h3 id="SocialStreamInteraction">Tương tác từ luồng xã hội</h3>
+<p>
+    Dữ liệu từ luồng xã hội được quản lý bởi Trình cung cấp Danh bạ, kết hợp với
+    ứng dụng danh bạ của thiết bị, cung cấp một cách hiệu quả để kết nối hệ thống mạng xã hội của bạn
+    với các liên lạc hiện tại. Có sẵn những tính năng sau:
+</p>
+    <ul>
+        <li>
+            Bằng cách đồng bộ dịch vụ mạng xã hội của bạn với Trình cung cấp Danh bạ bằng một trình điều hợp
+            đồng bộ, bạn có thể truy xuất hoạt động gần đây đối với danh bạ của một người dùng và lưu giữ nó trong
+            các bảng {@code android.provider.ContactsContract.StreamItems} và
+            {@code android.provider.ContactsContract.StreamItemPhotos} để sử dụng sau.
+        </li>
+        <li>
+            Bên cạnh việc đồng bộ hoá thường xuyên, bạn có thể kích khởi trình điều hợp đồng bộ của mình để truy xuất
+            dữ liệu bổ sung khi người dùng chọn một liên lạc để xem. Điều này cho phép trình điều hợp đồng bộ của bạn
+            truy xuất ảnh độ phân giải cao và các mục dòng gần đây nhất cho liên lạc đó.
+        </li>
+        <li>
+            Bằng cách đăng ký một thông báo với ứng dụng danh bạ của thiết bị và Trình cung cấp
+            Danh bạ, bạn có thể <em>nhận</em> một ý định khi một liên lạc được xem, và tại thời điểm đó,
+            cập nhật trạng thái của liên lạc đó từ dịch vụ của bạn. Phương pháp này có thể nhanh hơn và sử dụng ít
+            băng thông hơn việc thực hiện đồng bộ đầy đủ với một trình điều hợp đồng bộ.
+        </li>
+        <li>
+            Người dùng có thể thêm một liên lạc vào dịch vụ mạng xã hội của mình trong khi đang xem liên lạc đó
+            trong ứng dụng danh bạ của thiết bị. Bạn kích hoạt điều này bằng tính năng "mời liên lạc",
+           theo đó cho phép kết hợp một hoạt động để thêm một liên lạc hiện có vào mạng
+            của bạn, và một tệp XML để cung cấp cho ứng dụng danh bạ của thiết bị và
+            Trình cung cấp Danh bạ thông tin chi tiết về ứng dụng của bạn.
+        </li>
+    </ul>
+<p>
+    Đồng bộ hóa thường xuyên các mục dòng với Trình cung cấp Danh bạ giống như
+    các trường hợp đồng bộ hoá khác. Để tìm hiểu thêm về đồng bộ hoá, hãy xem phần
+    <a href="#SyncAdapters">Trình điều hợp Đồng bộ Trình cung cấp Danh bạ</a>. Việc đăng ký thông tin và
+    mời liên lạc được đề cập trong hai phần tiếp theo.
+</p>
+<h4>Đăng ký để xử lý các lượt xem mạng xã hội</h4>
+<p>
+    Để đăng ký để trình điều hợp đồng bộ của bạn nhận thông báo khi người dùng xem một liên lạc do
+    trình điều hợp đồng bộ của bạn quản lý:
+</p>
+<ol>
+    <li>
+        Tạo một tệp có tên <code>contacts.xml</code> trong thư mục <code>res/xml/</code>
+        của dự án của bạn. Nếu đã có tệp này, bạn có thể bỏ qua bước này.
+    </li>
+    <li>
+        Trong tệp này, hãy thêm phần tử
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>.
+        Nếu phần tử này đã tồn tại, bạn có thể bỏ qua bước này.
+    </li>
+    <li>
+        Để đăng ký một dịch vụ được thông báo khi người dùng mở trang chi tiết của một liên lạc trong
+        ứng dụng danh bạ của thiết bị, hãy thêm thuộc tính
+        <code>viewContactNotifyService="<em>serviceclass</em>"</code> vào phần tử, trong đó
+        <code><em>serviceclass</em></code> là tên lớp được đáp ứng đầy đủ của dịch vụ
+        mà sẽ nhận ý định từ ứng dụng danh bạ của thiết bị. Đối với dịch vụ
+        trình thông báo, hãy sử dụng một lớp mở rộng {@link android.app.IntentService}, để cho phép dịch vụ
+        nhận các ý định. Dữ liệu trong ý định đến chứa URI nội dung của liên lạc
+        thô mà người dùng đã nhấp vào. Từ dịch vụ trình thông báo, bạn có thể gắn kết với rồi gọi trình điều hợp đồng bộ
+        của bạn để cập nhật dữ liệu cho liên lạc thô.
+    </li>
+</ol>
+<p>
+    Để đăng ký một hoạt động sẽ được gọi khi người dùng nhấp vào một mục dòng hay ảnh hoặc cả hai:
+</p>
+<ol>
+    <li>
+        Tạo một tệp có tên <code>contacts.xml</code> trong thư mục <code>res/xml/</code>
+        của dự án của bạn. Nếu đã có tệp này, bạn có thể bỏ qua bước này.
+    </li>
+    <li>
+        Trong tệp này, hãy thêm phần tử
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>.
+        Nếu phần tử này đã tồn tại, bạn có thể bỏ qua bước này.
+    </li>
+    <li>
+        Để đăng ký một trong các hoạt động của bạn sẽ xử lý khi người dùng nhấp vào một mục dòng trong
+        ứng dụng danh bạ của thiết bị, hãy thêm thuộc tính
+        <code>viewStreamItemActivity="<em>activityclass</em>"</code> vào phần tử đó, trong đó
+        <code><em>activityclass</em></code> là tên lớp được xác định đầy đủ của hoạt động
+        mà sẽ nhận ý định từ ứng dụng danh bạ của thiết bị.
+    </li>
+    <li>
+        Để đăng ký một trong các hoạt động của bạn sẽ xử lý khi người dùng nhấp vào một ảnh luồng trong
+        ứng dụng danh bạ của thiết bị, hãy thêm thuộc tính
+        <code>viewStreamItemPhotoActivity="<em>activityclass</em>"</code> vào phần tử đó, trong đó
+        <code><em>activityclass</em></code> là tên lớp được xác định đầy đủ của hoạt động
+        mà sẽ nhận ý định từ ứng dụng danh bạ của thiết bị.
+    </li>
+</ol>
+<p>
+    Phần tử <code>&lt;ContactsAccountType&gt;</code> được mô tả chi tiết hơn trong mục
+    phần tử <a href="#SocialStreamAcctType">&lt;ContactsAccountType&gt;</a>.
+</p>
+<p>
+    Ý định đến chứa URI nội dung của mục hoặc ảnh mà người dùng đã nhấp vào.
+    Để có các hoạt động riêng cho các mục văn bản và ảnh, hãy sử dụng cả hai thuộc tính trong cùng tệp.
+</p>
+<h4>Tương tác với dịch vụ mạng xã hội của bạn</h4>
+<p>
+    Người dùng không phải rời ứng dụng danh bạ của thiết bị để mời một liên lạc tới trang mạng xã hội
+    của bạn. Thay vào đó, bạn có thể thiết đặt để ứng dụng danh bạ của thiết bị gửi một ý định để mời
+    liên lạc đó tới một trong các hoạt động của mình. Để thiết đặt điều này:
+</p>
+<ol>
+    <li>
+        Tạo một tệp có tên <code>contacts.xml</code> trong thư mục <code>res/xml/</code>
+        của dự án của bạn. Nếu đã có tệp này, bạn có thể bỏ qua bước này.
+    </li>
+    <li>
+        Trong tệp này, hãy thêm phần tử
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>.
+        Nếu phần tử này đã tồn tại, bạn có thể bỏ qua bước này.
+    </li>
+    <li>
+        Thêm các thuộc tính sau:
+        <ul>
+            <li><code>inviteContactActivity="<em>activityclass</em>"</code></li>
+            <li>
+                <code>inviteContactActionLabel="&#64;string/<em>invite_action_label</em>"</code>
+            </li>
+        </ul>
+        Giá trị <code><em>activityclass</em></code> là tên lớp được xác định đầy đủ của hoạt động
+        mà sẽ nhận được ý định. Giá trị <code><em>invite_action_label</em></code>
+        là một xâu văn bản được hiển thị trong menu <strong>Thêm Kết nối</strong> trong ứng dụng danh bạ
+        của thiết bị.
+    </li>
+</ol>
+<p class="note">
+    <strong>Lưu ý:</strong> <code>ContactsSource</code> là một tên tag không được chấp nhận đối với
+    <code>ContactsAccountType</code>.
+</p>
+<h3 id="ContactsFile">Tham chiếu contacts.xml</h3>
+<p>
+    Tệp <code>contacts.xml</code> chứa các phần tử XML có chức năng kiểm soát tương tác giữa
+    trình điều hợp đồng bộ và ứng dụng của bạn với ứng dụng danh bạ và Trình cung cấp Danh bạ. Những
+    phần tử này được mô tả trong các mục sau.
+</p>
+<h4 id="SocialStreamAcctType">Thành phần &lt;ContactsAccountType&gt;</h4>
+<p>
+    Phần tử <code>&lt;ContactsAccountType&gt;</code> kiểm soát tương tác giữa
+    ứng dụng của bạn với ứng dụng danh bạ. Nó có những cú pháp sau:
+</p>
+<pre>
+&lt;ContactsAccountType
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        inviteContactActivity="<em>activity_name</em>"
+        inviteContactActionLabel="<em>invite_command_text</em>"
+        viewContactNotifyService="<em>view_notify_service</em>"
+        viewGroupActivity="<em>group_view_activity</em>"
+        viewGroupActionLabel="<em>group_action_text</em>"
+        viewStreamItemActivity="<em>viewstream_activity_name</em>"
+        viewStreamItemPhotoActivity="<em>viewphotostream_activity_name</em>"&gt;
+</pre>
+<p>
+    <strong>chứa trong:</strong>
+</p>
+<p>
+    <code>res/xml/contacts.xml</code>
+</p>
+<p>
+    <strong>có thể chứa:</strong>
+</p>
+<p>
+    <strong><code>&lt;ContactsDataKind&gt;</code></strong>
+</p>
+<p>
+    <strong>Mô tả:</strong>
+</p>
+<p>
+    Khai báo các thành phần Android và nhãn UI mà cho phép người dùng mời một trong các liên lạc của mình đến
+    một mạng xã hội, thông báo người dùng khi một trong các luồng mạng xã hội của họ được cập nhật,
+    v.v.
+</p>
+<p>
+    Để ý rằng tiền tố thuộc tính <code>android:</code> không nhất thiết áp dụng cho các thuộc tính
+    của <code>&lt;ContactsAccountType&gt;</code>.
+</p>
+<p>
+    <strong>Thuộc tính:</strong>
+</p>
+<dl>
+    <dt>{@code inviteContactActivity}</dt>
+    <dd>
+        Tên lớp được xác định đầy đủ của hoạt động trong ứng dụng của bạn mà bạn muốn
+        kích hoạt khi người dùng chọn <strong>Thêm kết nối</strong> từ ứng dụng danh bạ
+        của thiết bị.
+    </dd>
+    <dt>{@code inviteContactActionLabel}</dt>
+    <dd>
+        Một xâu văn bản được hiển thị cho hoạt động được quy định trong
+        {@code inviteContactActivity}, trong menu <strong>Thêm kết nối</strong>.
+        Ví dụ, bạn có thể sử dụng xâu "Follow in my network". Bạn có thể sử dụng mã định danh
+        tài nguyên xâu cho nhãn này.
+    </dd>
+    <dt>{@code viewContactNotifyService}</dt>
+    <dd>
+        Tên lớp được xác định đầy đủ của một dịch vụ trong ứng dụng của bạn mà sẽ nhận được
+        thông báo khi người dùng xem một liên lạc. Thông báo này được gửi từ ứng dụng danh bạ
+        của thiết bị; nó cho phép ứng dụng của bạn tạm hoãn các thao tác dùng nhiều dữ liệu tới
+        khi cần. Ví dụ, ứng dụng của bạn có thể hồi đáp lại thông báo này
+        bằng cách đọc và hiển thị ảnh độ phân giải cao của danh bạ và các mục dòng mạng xã hội
+        gần đây nhất. Tính năng này được mô tả chi tiết hơn trong phần
+        <a href="#SocialStreamInteraction">Tương tác với luồng xã hội</a>. Bạn có thể thấy một
+        ví dụ về dịch vụ thông báo trong tệp <code>NotifierService.java</code> trong ứng dụng mẫu
+        <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>
+.
+    </dd>
+    <dt>{@code viewGroupActivity}</dt>
+    <dd>
+        Tên lớp được xác định đầy đủ của một hoạt động trong ứng dụng của bạn mà có thể
+        hiển thị thông tin nhóm. Khi người dùng nhấp vào nhãn nhóm trong ứng dụng danh bạ
+        của thiết bị, UI cho hoạt động này sẽ được hiển thị.
+    </dd>
+    <dt>{@code viewGroupActionLabel}</dt>
+    <dd>
+        Nhãn mà ứng dụng danh bạ hiển thị cho một điều khiển UI có cho phép
+        người dùng xem các nhóm trong ứng dụng của bạn.
+        <p>
+            Ví dụ, nếu bạn cài đặt ứng dụng Google+ trên thiết bị của mình và bạn đồng bộ
+            Google+ với ứng dụng danh bạ, bạn sẽ thấy các vòng tròn Google+ được liệt kê thành các nhóm
+            trong tab <strong>Nhóm</strong> của ứng dụng danh bạ của bạn. Nếu bạn nhấp vào một vòng tròn
+            Google+, bạn sẽ thấy những người trong vòng tròn đó được liệt kê thành một "nhóm". Phía bên trên của
+            hiển thị, bạn sẽ thấy một biểu tượng Google+; nếu bạn nhấp vào đó, điều khiển sẽ chuyển sang ứng dụng
+            Google+. Ứng dụng danh bạ làm điều này bằng
+            {@code viewGroupActivity}, bằng cách sử dụng biểu tượng Google+ làm giá trị của
+            {@code viewGroupActionLabel}.
+        </p>
+        <p>
+            Một mã định danh tài nguyên xâu được cho phép cho thuộc tính này.
+        </p>
+    </dd>
+    <dt>{@code viewStreamItemActivity}</dt>
+    <dd>
+        Tên lớp được xác định đầy đủ của một hoạt động trong ứng dụng của bạn mà
+        ứng dụng danh bạ của thiết bị khởi chạy khi người dùng nhấp vào một mục dòng đối với một liên lạc thô.
+    </dd>
+    <dt>{@code viewStreamItemPhotoActivity}</dt>
+    <dd>
+        Tên lớp được xác định đầy đủ của một hoạt động trong ứng dụng của bạn mà
+       ứng dụng danh bạ của thiết bị khởi chạy khi người dùng nhấp vào một ảnh trong mục dòng
+        đối với một liên lạc thô.
+    </dd>
+</dl>
+<h4 id="SocialStreamDataKind">Phần tử &lt;ContactsDataKind&gt;</h4>
+<p>
+    Phần tử <code>&lt;ContactsDataKind&gt;</code> kiểm soát việc hiển thị các hàng
+    dữ liệu tùy chỉnh của ứng dụng của bạn trong UI của ứng dụng danh bạ. Nó có những cú pháp sau:
+</p>
+<pre>
+&lt;ContactsDataKind
+        android:mimeType="<em>MIMEtype</em>"
+        android:icon="<em>icon_resources</em>"
+        android:summaryColumn="<em>column_name</em>"
+        android:detailColumn="<em>column_name</em>"&gt;
+</pre>
+<p>
+    <strong>chứa trong:</strong>
+</p>
+<code>&lt;ContactsAccountType&gt;</code>
+<p>
+    <strong>Mô tả:</strong>
+</p>
+<p>
+    Sử dụng phần tử này để ứng dụng danh bạ hiển thị các nội dung trong một hàng dữ liệu tùy chỉnh như
+    một phần chi tiết của một liên lạc thô. Mỗi phần tử con <code>&lt;ContactsDataKind&gt;</code>
+    của <code>&lt;ContactsAccountType&gt;</code> đại diện cho một kiểu hàng dữ liệu tùy chỉnh mà trình điều hợp
+    đồng bộ của bạn thêm vào bảng {@link android.provider.ContactsContract.Data}. Thêm một phần tử
+    <code>&lt;ContactsDataKind&gt;</code> cho mỗi kiểu MIME tùy chỉnh mà bạn sử dụng. Bạn không phải
+    thêm phần tử nếu có một hàng dữ liệu tùy chỉnh mà bạn không muốn hiển thị dữ liệu.
+</p>
+<p>
+    <strong>Thuộc tính:</strong>
+</p>
+<dl>
+    <dt>{@code android:mimeType}</dt>
+    <dd>
+        Kiểu MIME tùy chỉnh mà bạn đã định nghĩa cho một trong các kiểu hàng dữ liệu tùy chỉnh của bạn trong bảng
+        {@link android.provider.ContactsContract.Data}. Ví dụ, giá trị
+        <code>vnd.android.cursor.item/vnd.example.locationstatus</code> có thể là một kiểu
+        MIME tùy chỉnh cho một hàng dữ liệu có chức năng ghi lại vị trí được biết đến cuối cùng của một liên lạc.
+    </dd>
+    <dt>{@code android:icon}</dt>
+    <dd>
+        Một tài nguyên
+        <a href="{@docRoot}guide/topics/resources/drawable-resource.html">có thể vẽ của Android</a>
+        mà ứng dụng danh bạ hiển thị bên cạnh dữ liệu của bạn. Sử dụng nó để thể hiện với
+        người dùng rằng dữ liệu xuất phát từ dịch vụ của bạn.
+    </dd>
+    <dt>{@code android:summaryColumn}</dt>
+    <dd>
+        Tên cột của giá trị thứ nhất trong hai giá trị được truy xuất từ hàng dữ liệu. Giá trị
+        được hiển thị là dòng thứ nhất của mục nhập cho hàng dữ liệu này. Dòng thứ nhất có
+        mục đích sử dụng làm bản tóm tắt dữ liệu, nhưng điều đó là tùy chọn. Xem thêm
+        <a href="#detailColumn">android:detailColumn</a>.
+    </dd>
+    <dt>{@code android:detailColumn}</dt>
+    <dd>
+        Tên cột của giá trị thứ hai trong hai giá trị được truy xuất từ hàng dữ liệu. Giá trị
+        được hiển thị là dòng thứ hai của mục nhập cho hàng dữ liệu này. Xem thêm
+        {@code android:summaryColumn}.
+    </dd>
+</dl>
+<h2 id="AdditionalFeatures">Các Tính năng Bổ sung của Trình cung cấp Danh bạ</h2>
+<p>
+    Bên cạnh các tính năng chính được mô tả trong các phần trước, Trình cung cấp Danh bạ còn cung cấp
+    những tính năng hữu ích sau khi làm việc với dữ liệu danh bạ:
+</p>
+    <ul>
+       <li>Nhóm liên lạc</li>
+       <li>Tính năng ảnh</li>
+    </ul>
+<h3 id="Groups">Nhóm liên lạc</h3>
+<p>
+    Trình cung cấp Danh bạ có thể tùy chọn đánh nhãn các bộ sưu tập liên lạc có liên quan bằng dữ liệu
+    <strong>nhóm</strong>. Nếu máy chủ liên kết với một tài khoản người dùng
+    muốn duy trì nhóm, trình điều hợp đồng bộ cho loại tài khoản của tài khoản đó sẽ chuyển
+    dữ liệu nhóm giữa Trình cung cấp Danh bạ và máy chủ. Khi người dùng thêm một liên lạc mới vào
+    máy chủ, trình điều hợp đồng bộ phải thêm nhóm mới
+    vào bảng {@link android.provider.ContactsContract.Groups}. Nhóm hoặc các nhóm mà một liên lạc
+    thô thuộc về được lưu giữ trong bảng {@link android.provider.ContactsContract.Data}, bằng cách sử dụng
+    kiểu MIME {@link android.provider.ContactsContract.CommonDataKinds.GroupMembership}.
+</p>
+<p>
+    Nếu bạn đang thiết kế một trình điều hợp đồng bộ mà sẽ thêm dữ liệu liên lạc thô từ
+    máy chủ tới Trình cung cấp Danh bạ, và bạn không sử dụng các nhóm, khi đó bạn cần báo cho
+    Trình cung cấp làm các dữ liệu của bạn thấy được. Trong đoạn mã được thực hiện khi một người dùng thêm một tài khoản
+    vào thiết bị, hãy cập nhật hàng {@link android.provider.ContactsContract.Settings}
+    mà Trình cung cấp Danh bạ thêm cho tài khoản. Trong hàng này, đặt giá trị của cột
+    {@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE
+    Settings.UNGROUPED_VISIBLE} thành 1. Khi bạn làm vậy, Trình cung cấp Danh bạ sẽ luôn
+    làm cho dữ liệu danh bạ của bạn thấy được, ngay cả khi bạn không sử dụng nhóm.
+</p>
+<h3 id="Photos">Ảnh liên lạc</h3>
+<p>
+    Bảng {@link android.provider.ContactsContract.Data} lưu giữ ảnh thành hàng với kiểu MIME
+    {@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
+    Photo.CONTENT_ITEM_TYPE}. Cột
+    {@link android.provider.ContactsContract.RawContactsColumns#CONTACT_ID} của hàng được liên kết với cột
+    {@code android.provider.BaseColumns#_ID} của liên lạc thô mà nó thuộc về.
+    Lớp {@link android.provider.ContactsContract.Contacts.Photo} định nghĩa một bảng con của
+    {@link android.provider.ContactsContract.Contacts} chứa thông tin ảnh về ảnh chính
+    của một liên lạc, đây là ảnh chính của liên lạc thô chính của liên lạc. Tương tự,
+    lớp {@link android.provider.ContactsContract.RawContacts.DisplayPhoto} định nghĩa một bảng con
+    của {@link android.provider.ContactsContract.RawContacts} chứa thông tin ảnh đối với ảnh chính
+    của một liên lạc thô.
+</p>
+<p>
+    Tài liệu tham khảo cho {@link android.provider.ContactsContract.Contacts.Photo} và
+    {@link android.provider.ContactsContract.RawContacts.DisplayPhoto} có các ví dụ về
+    việc truy xuất thông tin ảnh. Không có lớp thuận tiện cho việc truy xuất hình thu nhỏ
+    chính đối với một liên lạc thô, nhưng bạn có thể gửi một truy vấn tới bảng
+    {@link android.provider.ContactsContract.Data}, chọn
+    {@code android.provider.BaseColumns#_ID} của liên lạc thô, 
+    {@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
+    Photo.CONTENT_ITEM_TYPE}, và cột {@link android.provider.ContactsContract.Data#IS_PRIMARY}
+    để tìm hàng ảnh chính của liên lạc thô.
+</p>
+<p>
+    Dữ liệu từ luồng xã hội đối với một người cũng có thể bao gồm ảnh. Những ảnh này được lưu giữ trong bảng
+    {@code android.provider.ContactsContract.StreamItemPhotos}, được mô tả chi tiết hơn
+    trong phần <a href="#StreamPhotos">Ảnh từ luồng xã hội</a>.
+</p>
diff --git a/docs/html-intl/intl/vi/guide/topics/providers/content-provider-basics.jd b/docs/html-intl/intl/vi/guide/topics/providers/content-provider-basics.jd
new file mode 100644
index 0000000..5f868ca
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/providers/content-provider-basics.jd
@@ -0,0 +1,1196 @@
+page.title=Nội dung Cơ bản về Trình cung cấp Nội dung
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<!-- In this document -->
+<h2>Trong tài liệu này</h2>
+<ol>
+    <li>
+        <a href="#Basics">Tổng quan</a>
+        <ol>
+            <li>
+                <a href="#ClientProvider">Truy cập một trình cung cấp</a>
+            </li>
+            <li>
+                <a href="#ContentURIs">URI Nội dung</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#SimpleQuery">Truy xuất Dữ liệu từ Trình cung cấp</a>
+        <ol>
+            <li>
+                <a href="#RequestPermissions">Yêu cầu quyền truy cập đọc</a>
+            </li>
+            <li>
+                <a href="#Query">Xây dựng truy vấn</a>
+            </li>
+            <li>
+                <a href="#DisplayResults">Hiển thị các kết quả truy vấn</a>
+            </li>
+            <li>
+                <a href="#GettingResults">Lấy dữ liệu từ các kết quả truy vấn</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#Permissions">Quyền của Trình cung cấp Nội dung</a>
+    </li>
+    <li>
+        <a href="#Modifications">Chèn, Cập nhật, và Xóa Dữ liệu</a>
+        <ol>
+            <li>
+                <a href="#Inserting">Chèn dữ liệu</a>
+            </li>
+            <li>
+                <a href="#Updating">Cập nhật dữ liệu</a>
+            </li>
+            <li>
+                <a href="#Deleting">Xóa dữ liệu</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#DataTypes">Các Kiểu Dữ liệu của Trình cung cấp</a>
+    </li>
+    <li>
+        <a href="#AltForms">Các Hình thức Truy cập Trình cung cấp Thay thế</a>
+        <ol>
+            <li>
+                <a href="#Batch">Truy cập hàng loạt</a>
+            </li>
+            <li>
+                <a href="#Intents">Truy cập dữ liệu thông qua ý định</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#ContractClasses">Các Lớp Hợp đồng</a>
+    </li>
+    <li>
+        <a href="#MIMETypeReference">Tham khảo Kiểu MIME</a>
+    </li>
+</ol>
+
+    <!-- Key Classes -->
+<h2>Lớp khóa</h2>
+    <ol>
+        <li>
+            {@link android.content.ContentProvider}
+        </li>
+        <li>
+            {@link android.content.ContentResolver}
+        </li>
+        <li>
+            {@link android.database.Cursor}
+        </li>
+        <li>
+            {@link android.net.Uri}
+        </li>
+    </ol>
+
+    <!-- Related Samples -->
+<h2>Các Mẫu Liên quan</h2>
+    <ol>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html">
+        Con chạy (Danh bạ)</a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html">
+        Con chạy (Điện thoại)</a>
+        </li>
+    </ol>
+
+    <!-- See also -->
+<h2>Xem thêm</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+            Tạo một Trình cung cấp Nội dung</a>
+        </li>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+            Trình cung cấp Lịch</a>
+        </li>
+    </ol>
+</div>
+</div>
+
+    <!-- Intro paragraphs -->
+<p>
+    Trình cung cấp nội dung quản lý truy cập vào một kho dữ liệu tập trung. Trình cung cấp
+    là bộ phận của một ứng dụng Android, nó thường cung cấp UI của chính mình để làm việc cùng
+    dữ liệu. Tuy nhiên, trình cung cấp nội dung được thiết kế chủ yếu cho các ứng dụng khác
+    sử dụng, giúp truy cập trình cung cấp bằng cách sử dụng một đối tượng máy khách cung cấp. Cùng nhau, trình cung cấp
+    và máy khách cung cấp sẽ mang đến một giao diện nhất quán, tiêu chuẩn cho dữ liệu, giao diện này
+    cũng đồng thời xử lý truyền thông liên tiến trình và bảo mật truy cập dữ liệu.
+</p>
+<p>
+    Chủ đề này đề cập đến những nội dung cơ bản sau đây:
+</p>
+    <ul>
+        <li>Cách trình cung cấp nội dung hoạt động.</li>
+        <li>API bạn sử dụng để truy xuất dữ liệu từ một trình cung cấp nội dung.</li>
+        <li>API bạn sử dụng để chèn, cập nhật, hoặc xóa dữ liệu trong một trình cung cấp nội dung.</li>
+        <li>Các tính năng API khác tạo điều kiện làm việc cùng các trình cung cấp.</li>
+    </ul>
+
+    <!-- Basics -->
+<h2 id="Basics">Tổng quan</h2>
+<p>
+    Trình cung cấp nội dung trình bày dữ liệu cho các ứng dụng bên ngoài dưới dạng một hoặc nhiều bảng tương tự
+    như các bảng được tìm thấy trong một cơ sở dữ liệu quan hệ. Mỗi hàng thể hiện một thực thể của một số kiểu dữ liệu
+    mà trình cung cấp thu thập, và mỗi cột trong hàng thể hiện một phần riêng biệt của dữ liệu được thu thập
+    đối với một thực thể.
+</p>
+<p>
+    Ví dụ, một trong các trình cung cấp tích hợp trong nền tảng Android đó là từ điển người dùng, nó
+    lưu giữ chính tả của những từ phi tiêu chuẩn mà người dùng muốn giữ lại. Bảng 1 minh họa
+    cách mà dữ liệu có thể được trình bày trong bảng của trình cung cấp này:
+</p>
+<p class="table-caption">
+    <strong>Bảng 1:</strong> Bảng từ điển người dùng mẫu.
+</p>
+<table id="table1" style="width: 50%;">
+    <tr>
+        <th style="width:20%" align="center" scope="col">từ</th>
+        <th style="width:20%" align="center" scope="col">id ứng dụng</th>
+        <th style="width:20%" align="center" scope="col">tần suất</th>
+        <th style="width:20%" align="center" scope="col">bản địa</th>
+        <th style="width:20%" align="center" scope="col">_ID</th>
+    </tr>
+    <tr>
+        <td align="center" scope="row">mapreduce</td>
+        <td align="center">user1</td>
+        <td align="center">100</td>
+        <td align="center">en_US</td>
+        <td align="center">1</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">precompiler</td>
+        <td align="center">user14</td>
+        <td align="center">200</td>
+        <td align="center">fr_FR</td>
+        <td align="center">2</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">applet</td>
+        <td align="center">user2</td>
+        <td align="center">225</td>
+        <td align="center">fr_CA</td>
+        <td align="center">3</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">const</td>
+        <td align="center">user1</td>
+        <td align="center">255</td>
+        <td align="center">pt_BR</td>
+        <td align="center">4</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">int</td>
+        <td align="center">user5</td>
+        <td align="center">100</td>
+        <td align="center">en_UK</td>
+        <td align="center">5</td>
+    </tr>
+</table>
+<p>
+    Trong bảng 1, mỗi hàng thể hiện một thực thể của một từ mà có thể không thấy có
+    trong từ điển chuẩn. Mỗi cột thể hiện một số dữ liệu cho từ đó, chẳng hạn như
+    từ bản địa được dùng lần đầu cho từ đó. Tiêu đề cột là các tên cột được lưu giữ trong
+    trình cung cấp. Để tham khảo tới bản địa của một hàng, bạn tham khảo tới cột <code>locale</code> của hàng đó. Đối với
+    trình cung cấp này, cột <code>_ID</code> đóng vai trò là cột "khóa chính" mà
+    trình cung cấp tự động duy trì.
+</p>
+<p class="note">
+    <strong>Lưu ý:</strong> Trình cung cấp không bắt buộc phải có một khóa chính, và không bắt buộc phải
+    sử dụng <code>_ID</code> làm tên cột của một khóa chính nếu có khóa. Tuy nhiên,
+    nếu bạn muốn gắn kết dữ liệu từ một trình cung cấp với một {@link android.widget.ListView}, một trong các
+    tên cột sẽ phải là <code>_ID</code>. Yêu cầu này được giải thích chi tiết hơn trong
+    phần <a href="#DisplayResults">Hiển thị các kết quả truy vấn</a>.
+</p>
+<h3 id="ClientProvider">Truy cập một trình cung cấp</h3>
+<p>
+    Một ứng dụng truy cập dữ liệu từ một trình cung cấp nội dung bằng
+    một đối tượng máy khách {@link android.content.ContentResolver}. Đối tượng này có các phương pháp để gọi
+    những phương pháp có tên giống nhau trong đối tượng trình cung cấp, một thực thể của một trong những lớp con
+    cụ thể của {@link android.content.ContentProvider}. Các phương pháp
+    {@link android.content.ContentResolver} cung cấp các chức năng
+    "CRUD" (tạo, truy xuất, cập nhật, và xóa) cơ bản của thiết bị lưu trữ liên tục.
+</p>
+<p>
+    Đối tượng {@link android.content.ContentResolver} trong tiến trình
+    của ứng dụng máy khách và đối tượng {@link android.content.ContentProvider} trong ứng dụng mà sở hữu
+    trình cung cấp sẽ tự động xử lý truyền thông liên tiến trình.
+    {@link android.content.ContentProvider} cũng đóng vai trò như một lớp rút gọn giữa kho dữ liệu
+    của nó và biểu diễn bên ngoài của dữ liệu dưới dạng bảng.
+</p>
+<p class="note">
+    <strong>Lưu ý:</strong> Để truy cập một trình cung cấp, ứng dụng của bạn thường phải yêu cầu các quyền
+    cụ thể trong tệp bản kê khai của mình. Điều này được mô tả chi tiết hơn trong phần
+    <a href="#Permissions">Quyền của Trình cung cấp Nội dung</a>
+</p>
+<p>
+    Ví dụ, để có một danh sách các từ và nội dung bản địa của chúng từ Trình cung cấp Từ điển Người dùng,
+    bạn hãy gọi {@link android.content.ContentResolver#query ContentResolver.query()}.
+    Phương pháp {@link android.content.ContentResolver#query query()} sẽ gọi phương pháp
+    {@link android.content.ContentProvider#query ContentProvider.query()} được định nghĩa bởi 
+    Trình cung cấp Từ điển Người dùng. Các dòng mã sau thể hiện một lệnh gọi
+    {@link android.content.ContentResolver#query ContentResolver.query()}:
+<p>
+<pre>
+// Queries the user dictionary and returns results
+mCursor = getContentResolver().query(
+    UserDictionary.Words.CONTENT_URI,   // The content URI of the words table
+    mProjection,                        // The columns to return for each row
+    mSelectionClause                    // Selection criteria
+    mSelectionArgs,                     // Selection criteria
+    mSortOrder);                        // The sort order for the returned rows
+</pre>
+<p>
+    Bảng 2 cho biết các tham đối tới
+    {@link android.content.ContentResolver#query 
+    query(Uri,projection,selection,selectionArgs,sortOrder)} khớp với một câu lệnh SQL SELECT như thế nào:
+</p>
+<p class="table-caption">
+    <strong>Bảng 2:</strong> Query() so với truy vấn SQL.
+</p>
+<table id="table2" style="width: 75%;">
+    <tr>
+        <th style="width:25%" align="center" scope="col">tham đối query()</th>
+        <th style="width:25%" align="center" scope="col">Từ khóa/tham số SELECT</th>
+        <th style="width:50%" align="center" scope="col">Lưu ý</th>
+    </tr>
+    <tr>
+        <td align="center"><code>Uri</code></td>
+        <td align="center"><code>FROM <em>table_name</em></code></td>
+        <td><code>Uri</code> ánh xạ tới bảng trong trình cung cấp có tên <em>table_name</em>.</td>
+    </tr>
+    <tr>
+        <td align="center"><code>projection</code></td>
+        <td align="center"><code><em>col,col,col,...</em></code></td>
+        <td>
+            <code>projection</code> là một mảng gồm các cột nên được đưa vào đối với mỗi hàng
+            được truy xuất.
+        </td>
+    </tr>
+    <tr>
+        <td align="center"><code>selection</code></td>
+        <td align="center"><code>WHERE <em>col</em> = <em>value</em></code></td>
+        <td><code>selection</code> quy định các tiêu chí để lựa chọn hàng.</td>
+    </tr>
+    <tr>
+        <td align="center"><code>selectionArgs</code></td>
+        <td align="center">
+            (Không có sự tương đương chính xác. Các tham đối lựa chọn sẽ thay thế các chỗ dành sẵn <code>?</code> trong
+            mệnh đề lựa chọn.)
+        </td>
+    </tr>
+    <tr>
+        <td align="center"><code>sortOrder</code></td>
+        <td align="center"><code>ORDER BY <em>col,col,...</em></code></td>
+        <td>
+            <code>sortOrder</code> quy định thứ tự các hàng xuất hiện trong 
+            {@link android.database.Cursor} được trả về.
+        </td>
+    </tr>
+</table>
+<h3 id="ContentURIs">URI Nội dung</h3>
+<p>
+    <strong>URI nội dung</strong> là một URI xác định dữ liệu trong một trình cung cấp. URI nội dung
+    bao gồm tên biểu tượng của toàn bộ trình cung cấp (<strong>quyền</strong> của nó) và một
+    tên trỏ đến một bảng (<strong>đường dẫn</strong>). Khi bạn gọi
+    một phương pháp máy khách để truy cập một bảng trong một trình cung cấp, URI nội dung cho bảng là một trong các
+    tham đối.
+</p>
+<p>
+    Trong các dòng mã trước, hằng số
+    {@link android.provider.UserDictionary.Words#CONTENT_URI} chứa URI nội dung của
+    bảng "từ" của từ điển người dùng. Đối tượng {@link android.content.ContentResolver}
+    sẽ phân tích quyền của URI, và sử dụng nó để "giải quyết" trình cung cấp bằng cách
+    so sánh quyền với một bảng hệ thống của các trình cung cấp đã biết. Khi đó,
+    {@link android.content.ContentResolver} có thể phân phối các tham đối truy vấn tới đúng
+    trình cung cấp.
+</p>
+<p>
+    {@link android.content.ContentProvider} sử dụng phần đường dẫn của URI nội dung nhằm chọn
+    bảng để truy cập. Trình cung cấp thường có một <strong>đường dẫn</strong> cho mỗi bảng mà nó hiện ra.
+</p>
+<p>
+    Trong các dòng mã trước, URI đầy đủ cho bảng "từ" là:
+</p>
+<pre>
+content://user_dictionary/words
+</pre>
+<p>
+    trong đó xâu <code>user_dictionary</code> là quyền của trình cung cấp, và
+xâu    <code>words</code> là đường dẫn của bảng. Xâu
+    <code>content://</code> (<strong>lược đồ</strong>) sẽ luôn có mặt,
+   và xác định đây là một URI nội dung.
+</p>
+<p>
+    Nhiều trình cung cấp cho phép bạn truy cập một hàng đơn lẻ trong một bảng bằng cách nối một giá trị ID
+    với đuôi của URI. Ví dụ, để truy xuất một hàng có <code>_ID</code> là
+    <code>4</code> từ một từ điển người dùng, bạn có thể sử dụng URI nội dung này:
+</p>
+<pre>
+Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);
+</pre>
+<p>
+    Bạn thường sử dụng các giá trị id khi bạn đã truy xuất một tập hợp các hàng, sau đó muốn cập nhật hoặc xóa
+    một trong số chúng.
+</p>
+<p class="note">
+    <strong>Lưu ý:</strong> Các lớp {@link android.net.Uri} và {@link android.net.Uri.Builder}
+    chứa các phương pháp thuận tiện để xây dựng đối tượng URI định dạng tốt từ các xâu. 
+    {@link android.content.ContentUris} chứa các phương pháp thuận tiện để nối các giá trị id với
+    một URI. Đoạn mã HTML trước sử dụng {@link android.content.ContentUris#withAppendedId
+withAppendedId()} để nối một id với URI nội dung Từ điển Người dùng.
+</p>
+
+
+    <!-- Retrieving Data from the Provider -->
+<h2 id="SimpleQuery">Truy xuất Dữ liệu từ Trình cung cấp</h2>
+<p>
+    Phần này mô tả cách truy xuất dữ liệu từ một trình cung cấp bằng cách sử dụng Trình cung cấp Từ điển Người dùng
+    làm ví dụ.
+</p>
+<p class="note">
+    Để giải thích rõ, đoạn mã HTML trong phần này gọi
+    {@link android.content.ContentResolver#query ContentResolver.query()} trên "luồng UI"". Tuy nhiên, trong 
+    mã thực sự, bạn nên thực hiện các truy vấn không đồng bộ trên một luồng riêng. Một cách để làm 
+    điều này đó là sử dụng lớp {@link android.content.CursorLoader}, nó được mô tả chi tiết hơn
+    trong hướng dẫn <a href="{@docRoot}guide/components/loaders.html">
+    Trình tải</a>. Bênh cạnh đó, các dòng mã chỉ là đoạn mã HTML; chúng không thể hiện một ứng dụng
+    hoàn chỉnh.
+</p>
+<p>
+    Để truy xuất dữ liệu từ một trình cung cấp, hãy làm theo các bước cơ bản sau:
+</p>
+<ol>
+   <li>
+        Yêu cầu quyền truy cập đọc cho trình cung cấp.
+   </li>
+   <li>
+        Định nghĩa mã để gửi một truy vấn tới trình cung cấp.
+   </li>
+</ol>
+<h3 id="RequestPermissions">Yêu cầu quyền truy cập đọc</h3>
+<p>
+    Để truy xuất dữ liệu từ một trình cung cấp, ứng dụng của bạn cần "quyền truy cập đọc" cho
+    trình cung cấp. Bạn không thể yêu cầu quyền này trong thời gian chạy; thay vào đó, bạn phải chỉ định rằng
+    bạn cần quyền này trong bản kê khai của mình bằng cách sử dụng phần tử
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+    và tên quyền chính xác được định nghĩa bởi
+    trình cung cấp. Khi bạn chỉ định phần tử này trong bản kê khai của mình, bạn đang thực tế hóa "yêu cầu" quyền
+    này cho ứng dụng của mình. Khi người dùng cài đặt ứng dụng của bạn, họ ngầm hiểu cấp
+    yêu cầu này.
+</p>
+<p>
+    Để tìm tên chính xác của quyền truy cập đọc cho trình cung cấp bạn đang sử dụng, cũng như
+    tên cho các quyền truy cập khác được sử dụng bởi trình truy cập, hãy xem trong tài liệu
+    của trình cung cấp.
+</p>
+<p>
+    Vai trò của quyền trong việc truy cập các trình cung cấp được mô tả chi tiết hơn trong phần
+    <a href="#Permissions">Quyền của Trình cung cấp Nội dung</a>.
+</p>
+<p>
+    Trình cung cấp Từ điển Người dùng sẽ định nghĩa quyền
+    <code>android.permission.READ_USER_DICTIONARY</code> trong tệp bản kê khai của nó, vì vậy một
+    ứng dụng muốn đọc từ trình cung cấp sẽ phải yêu cầu quyền này.
+</p>
+<!-- Constructing the query -->
+<h3 id="Query">Xây dựng truy vấn</h3>
+<p>
+    Bước tiếp theo trong việc truy xuất dữ liệu từ một trình cung cấp đó là xây dựng một truy vấn. Đoạn mã HTML đầu tiên
+    này định nghĩa một số biến cho việc truy cập Trình cung cấp Từ điển Người dùng:
+</p>
+<pre class="prettyprint">
+
+// A "projection" defines the columns that will be returned for each row
+String[] mProjection =
+{
+    UserDictionary.Words._ID,    // Contract class constant for the _ID column name
+    UserDictionary.Words.WORD,   // Contract class constant for the word column name
+    UserDictionary.Words.LOCALE  // Contract class constant for the locale column name
+};
+
+// Defines a string to contain the selection clause
+String mSelectionClause = null;
+
+// Initializes an array to contain selection arguments
+String[] mSelectionArgs = {""};
+
+</pre>
+<p>
+    Đoạn mã HTML tiếp theo cho biết cách sử dụng
+    {@link android.content.ContentResolver#query ContentResolver.query()}, bằng cách sử dụng Trình cung cấp Từ điển
+    Người dùng như một ví dụ. Truy vấn máy khách trình cung cấp tương tự như một truy vấn SQL, và nó chứa một 
+    tập hợp các cột để trả về, một tập hợp các tiêu chí lựa chọn, và một thứ tự sắp xếp.
+</p>
+<p>
+    Tập hợp các cột mà truy vấn cần trả về được gọi là <strong>dự thảo</strong>
+    (biến <code>mProjection</code>).
+</p>
+<p>
+    Biểu thức để chỉ định các hàng cần truy xuất sẽ được chia thành một mệnh đề lựa chọn và
+    tham đối lựa chọn. Mệnh đề lựa chọn là sự kết hợp giữa các biểu thức lô-gic và biểu thức Boolean,
+    tên cột, và giá trị (biến <code>mSelectionClause</code>). Nếu bạn chỉ định 
+    tham số thay thế được <code>?</code> thay vì một giá trị, phương pháp truy vấn sẽ truy xuất giá trị 
+    từ mảng tham đối lựa chọn (biến <code>mSelectionArgs</code>).
+</p>
+<p>
+    Trong đoạn mã HTML tiếp theo, nếu người dùng không điền từ thì mệnh đề lựa chọn được đặt thành
+    <code>null</code>, và truy vấn trả về tất cả các từ trong trình cung cấp. Nếu người dùng nhập
+    một từ, mệnh đề lựa chọn được đặt thành <code>UserDictionary.Words.WORD + " = ?"</code> và
+    phần tử đầu tiên của mảng tham đối lựa chọn được đặt thành từ mà người dùng đã nhập.
+</p>
+<pre class="prettyprint">
+/*
+ * This defines a one-element String array to contain the selection argument.
+ */
+String[] mSelectionArgs = {""};
+
+// Gets a word from the UI
+mSearchString = mSearchWord.getText().toString();
+
+// Remember to insert code here to check for invalid or malicious input.
+
+// If the word is the empty string, gets everything
+if (TextUtils.isEmpty(mSearchString)) {
+    // Setting the selection clause to null will return all words
+    mSelectionClause = null;
+    mSelectionArgs[0] = "";
+
+} else {
+    // Constructs a selection clause that matches the word that the user entered.
+    mSelectionClause = UserDictionary.Words.WORD + " = ?";
+
+    // Moves the user's input string to the selection arguments.
+    mSelectionArgs[0] = mSearchString;
+
+}
+
+// Does a query against the table and returns a Cursor object
+mCursor = getContentResolver().query(
+    UserDictionary.Words.CONTENT_URI,  // The content URI of the words table
+    mProjection,                       // The columns to return for each row
+    mSelectionClause                   // Either null, or the word the user entered
+    mSelectionArgs,                    // Either empty, or the string the user entered
+    mSortOrder);                       // The sort order for the returned rows
+
+// Some providers return null if an error occurs, others throw an exception
+if (null == mCursor) {
+    /*
+     * Insert code here to handle the error. Be sure not to use the cursor! You may want to
+     * call android.util.Log.e() to log this error.
+     *
+     */
+// If the Cursor is empty, the provider found no matches
+} else if (mCursor.getCount() &lt; 1) {
+
+    /*
+     * Insert code here to notify the user that the search was unsuccessful. This isn't necessarily
+     * an error. You may want to offer the user the option to insert a new row, or re-type the
+     * search term.
+     */
+
+} else {
+    // Insert code here to do something with the results
+
+}
+</pre>
+<p>
+    Truy vấn này tương tự như câu lệnh SQL:
+</p>
+<pre>
+SELECT _ID, word, locale FROM words WHERE word = &lt;userinput&gt; ORDER BY word ASC;
+</pre>
+<p>
+    Trong câu lệnh SQL này, tên cột thực tế được sử dụng thay vì các hằng số lớp hợp đồng.
+</p>
+<h4 id="Injection">Bảo vệ trước mục nhập độc hại</h4>
+<p>
+    Nếu dữ liệu được quản lý bởi trình cung cấp nội dung nằm trong một cơ sở dữ liệu SQL, việc điền dữ liệu không được tin cậy từ bên ngoài
+    vào các câu lệnh SQL thô có thể dẫn đến tiêm lỗi SQL.
+</p>
+<p>
+    Hãy xét mệnh đề lựa chọn sau:
+</p>
+<pre>
+// Constructs a selection clause by concatenating the user's input to the column name
+String mSelectionClause =  "var = " + mUserInput;
+</pre>
+<p>
+    Nếu bạn làm vậy, bạn đang cho phép người dùng ghép nối SQL độc hại lên câu lệnh SQL của mình.
+    Ví dụ, người dùng có thể điền "nothing; DROP TABLE *;" cho <code>mUserInput</code>, làm vậy
+    sẽ dẫn đến mệnh đề lựa chọn <code>var = nothing; DROP TABLE *;</code>. Do
+    mệnh đề lựa chọn được coi như một câu lệnh SQL, điều này có thể khiến trình cung cấp xóa tất cả
+    bảng trong cơ sở dữ liệu SQLite cơ bản (trừ khi trình cung cấp được thiết lập để bắt những lần thử
+    <a href="http://en.wikipedia.org/wiki/SQL_injection">tiêm lỗi SQL</a>).
+</p>
+<p>
+    Để tránh vấn đề này, hãy sử dụng một mệnh đề lựa chọn mà sử dụng <code>?</code> làm tham số
+    thay thế được và một mảng các tham đối lựa chọn riêng. Khi bạn làm như vậy, mục nhập của người dùng
+    được gắn kết trực tiếp với truy vấn thay vì được giải nghĩa như một phần của câu lệnh SQL.
+    Vì nó không được coi như SQL, mục nhập của người dùng không thể tiêm lỗi SQL độc hại. Thay vì sử dụng
+    ghép nối để điền mục nhập của người dùng, hãy sử dụng mệnh đề lựa chọn này:
+</p>
+<pre>
+// Constructs a selection clause with a replaceable parameter
+String mSelectionClause =  "var = ?";
+</pre>
+<p>
+    Thiết lập mảng các tham đối lựa chọn như sau:
+</p>
+<pre>
+// Defines an array to contain the selection arguments
+String[] selectionArgs = {""};
+</pre>
+<p>
+    Đặt một giá trị trong mảng các tham đối lựa chọn như sau:
+</p>
+<pre>
+// Sets the selection argument to the user's input
+selectionArgs[0] = mUserInput;
+</pre>
+<p>
+    Mệnh đề lựa chọn mà sử dụng <code>?</code> như một tham số thay thế được và một mảng
+    các tham đối lựa chọn là cách được ưu tiên để chỉ định một lựa chọn, ngay cả khi trình cung cấp không
+    được dựa trên cơ sở dữ liệu SQL.
+</p>
+<!-- Displaying the results -->
+<h3 id="DisplayResults">Hiển thị các kết quả truy vấn</h3>
+<p>
+    Phương pháp máy khách {@link android.content.ContentResolver#query ContentResolver.query()} luôn trả về 
+    một {@link android.database.Cursor} chứa các cột được chỉ định bởi dự thảo của 
+    truy vấn cho các hàng khớp với các tiêu chí lựa chọn của truy vấn. Một đối tượng 
+    {@link android.database.Cursor} cung cấp truy cập đọc ngẫu nhiên vào các hàng và cột mà nó 
+    chứa. Bằng cách sử dụng phương pháp {@link android.database.Cursor}, bạn có thể lặp lại các hàng trong 
+    kết quả, xác định kiểu dữ liệu của từng cột, lấy dữ liệu ra khỏi cột, và kiểm tra các tính chất khác
+    của kết quả. Một số triển khai {@link android.database.Cursor} sẽ tự động 
+    cập nhật đối tượng khi dữ liệu của trình cung cấp thay đổi, hoặc kích khởi các phương pháp trong một đối tượng quan sát 
+    khi {@link android.database.Cursor} thay đổi, hoặc cả hai.
+</p>
+<p class="note">
+    <strong>Lưu ý:</strong> Một trình cung cấp có thể hạn chế truy cập vào các cột dựa trên tính chất của
+    đối tượng thực hiện truy vấn. Ví dụ, Trình cung cấp Danh bạ hạn chế truy cập đối với một số cột cho
+    các trình điều hợp đồng bộ, vì thế nó sẽ không trả chúng về một hoạt động hay dịch vụ.
+</p>
+<p>
+    Nếu không hàng nào khớp với các tiêu chí lựa chọn, trình cung cấp
+    sẽ trả về một đối tượng {@link android.database.Cursor} mà trong đó
+    {@link android.database.Cursor#getCount Cursor.getCount()} bằng 0 (con chạy trống).
+</p>
+<p>
+    Nếu xảy ra một lỗi nội bộ, các kết quả của truy vấn sẽ phụ thuộc vào trình cung cấp cụ thể. Nó có thể
+    chọn trả về <code>null</code>, hoặc nó có thể đưa ra một lỗi {@link java.lang.Exception}.
+</p>
+<p>
+    Do {@link android.database.Cursor} là một "danh sách" hàng, một cách hay để hiển thị
+    nội dung của một {@link android.database.Cursor} đó là liên kết nó với một {@link android.widget.ListView}
+    thông qua một {@link android.widget.SimpleCursorAdapter}.
+</p>
+<p>
+    Đoạn mã HTML sau tiếp tục từ đoạn mã HTML trước. Nó tạo một đối tượng
+    {@link android.widget.SimpleCursorAdapter} chứa {@link android.database.Cursor}
+    được truy xuất bởi truy vấn, và đặt đối tượng này thành trình điều hợp cho một
+    {@link android.widget.ListView}:
+</p>
+<pre class="prettyprint">
+// Defines a list of columns to retrieve from the Cursor and load into an output row
+String[] mWordListColumns =
+{
+    UserDictionary.Words.WORD,   // Contract class constant containing the word column name
+    UserDictionary.Words.LOCALE  // Contract class constant containing the locale column name
+};
+
+// Defines a list of View IDs that will receive the Cursor columns for each row
+int[] mWordListItems = { R.id.dictWord, R.id.locale};
+
+// Creates a new SimpleCursorAdapter
+mCursorAdapter = new SimpleCursorAdapter(
+    getApplicationContext(),               // The application's Context object
+    R.layout.wordlistrow,                  // A layout in XML for one row in the ListView
+    mCursor,                               // The result from the query
+    mWordListColumns,                      // A string array of column names in the cursor
+    mWordListItems,                        // An integer array of view IDs in the row layout
+    0);                                    // Flags (usually none are needed)
+
+// Sets the adapter for the ListView
+mWordList.setAdapter(mCursorAdapter);
+</pre>
+<p class="note">
+    <strong>Lưu ý:</strong> Để lùi {@link android.widget.ListView} bằng một
+    {@link android.database.Cursor}, con chạy phải chứa một cột có tên <code>_ID</code>.
+    Vì điều này, truy vấn được hiện lúc trước truy xuất cột <code>_ID</code> cho
+    bảng "từ" mặc dù {@link android.widget.ListView} không hiển thị nó.
+    Hạn chế này cũng giải thích lý do tại sao phần lớn trình cung cấp đều có một cột <code>_ID</code> cho mỗi
+    bảng của nó.
+</p>
+
+        <!-- Getting data from query results -->
+<h3 id="GettingResults">Lấy dữ liệu từ các kết quả truy vấn</h3>
+<p>
+    Thay vì chỉ hiển thị các kết quả truy vấn, bạn có thể sử dụng chúng cho các tác vụ khác. Ví
+    dụ, bạn có thể truy xuất chính tả từ một từ điển người dùng, rồi sau đó tìm kiếm từ đó trong
+    các trình cung cấp khác. Để làm điều này, bạn lặp lại các hàng trong {@link android.database.Cursor}:
+</p>
+<pre class="prettyprint">
+
+// Determine the column index of the column named "word"
+int index = mCursor.getColumnIndex(UserDictionary.Words.WORD);
+
+/*
+ * Only executes if the cursor is valid. The User Dictionary Provider returns null if
+ * an internal error occurs. Other providers may throw an Exception instead of returning null.
+ */
+
+if (mCursor != null) {
+    /*
+     * Moves to the next row in the cursor. Before the first movement in the cursor, the
+     * "row pointer" is -1, and if you try to retrieve data at that position you will get an
+     * exception.
+     */
+    while (mCursor.moveToNext()) {
+
+        // Gets the value from the column.
+        newWord = mCursor.getString(index);
+
+        // Insert code here to process the retrieved word.
+
+        ...
+
+        // end of while loop
+    }
+} else {
+
+    // Insert code here to report an error if the cursor is null or the provider threw an exception.
+}
+</pre>
+<p>
+    Triển khai {@link android.database.Cursor} sẽ chứa một vài phương pháp “get" để
+    truy xuất các kiểu dữ liệu khác nhau từ đối tượng. Ví dụ, đoạn mã HTML trước
+    sử dụng {@link android.database.Cursor#getString getString()}. Chúng cũng có một phương pháp
+    {@link android.database.Cursor#getType getType()} để trả về một giá trị cho biết
+    kiểu dữ liệu của cột.
+</p>
+
+
+    <!-- Requesting permissions -->
+<h2 id="Permissions">Quyền của Trình cung cấp Nội dung</h2>
+<p>
+    Ứng dụng của một trình cung cấp có thể chỉ định các quyền mà ứng dụng khác có thể có để
+    truy cập dữ liệu của trình cung cấp đó. Những quyền này đảm bảo rằng người dùng biết một ứng dụng
+    sẽ cố gắng truy cập dữ liệu nào. Dựa trên các yêu cầu của trình cung cấp, các ứng dụng khác
+    yêu cầu quyền mà chúng cần để truy cập trình dữ liệu. Người dùng cuối thấy các quyền
+    được yêu cầu khi họ cài đặt ứng dụng.
+</p>
+<p>
+    Nếu ứng dụng của một trình cung cấp không chỉ định bất kỳ quyền nào, khi đó các ứng dụng khác không có
+    quyền truy cập dữ liệu của trình cung cấp. Tuy nhiên, các thành phần trong ứng dụng của trình cung cấp luôn có
+    đầy đủ quyền truy nhập đọc và ghi, không phụ thuộc vào các quyền được chỉ định.
+</p>
+<p>
+    Như đã lưu ý, Trình cung cấp Từ điển Người dùng sẽ yêu cầu
+    quyền <code>android.permission.READ_USER_DICTIONARY</code> để truy xuất dữ liệu từ nó.
+    Trình cung cấp có quyền <code>android.permission.WRITE_USER_DICTIONARY</code>
+    riêng để chèn, cập nhật, hoặc xóa dữ liệu.
+</p>
+<p>
+    Để nhận các quyền cần để truy cập một trình cung cấp, ứng dụng yêu cầu chúng bằng một phần tử
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+    trong tệp bản kê khai của nó. Khi Trình quản lý Gói Android cài đặt các ứng dụng, người dùng 
+    phải phê chuẩn tất cả quyền mà ứng dụng yêu cầu. Nếu người dùng phê chuẩn tất cả quyền, khi đó
+    Trình quản lý Gói sẽ tiếp tục cài đặt; nếu người dùng không phê chuẩn chúng, Trình quản lý Gói sẽ
+    hủy bỏ việc cài đặt.
+</p>
+<p>
+    Phần tử
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 
+    sau yêu cầu quyền truy cập đọc vào Trình cung cấp Từ điển Người dùng:
+</p>
+<pre>
+    &lt;uses-permission android:name="android.permission.READ_USER_DICTIONARY"&gt;
+</pre>
+<p>
+    Tác động của các quyền tới việc truy cập trình cung cấp được giải thích chi tiết hơn trong
+    hướng dẫn <a href="{@docRoot}guide/topics/security/security.html">Bảo mật và Quyền</a>.
+</p>
+
+
+<!-- Inserting, Updating, and Deleting Data -->
+<h2 id="Modifications">Chèn, Cập nhật, và Xóa Dữ liệu</h2>
+<p>
+    Giống như cách bạn truy xuất dữ liệu từ một trình cung cấp, bạn cũng có thể sử dụng tương tác giữa
+    một máy khách cung cấp và {@link android.content.ContentProvider} của trình cung cấp để sửa đổi dữ liệu.
+    Bạn gọi một phương pháp {@link android.content.ContentResolver} với các tham đối được chuyển sang
+    phương pháp {@link android.content.ContentProvider} tương ứng. Trình cung cấp và
+    máy khách cung cấp sẽ tự động xử lý bảo mật và truyền thông liên tiến trình.
+</p>
+<h3 id="Inserting">Chèn dữ liệu</h3>
+<p>
+    Để chèn dữ liệu vào một trình cung cấp, bạn gọi phương pháp
+    {@link android.content.ContentResolver#insert ContentResolver.insert()}
+. Phương pháp này chèn một hàng mới vào trình cung cấp và trả về một URI nội dung cho hàng đó.
+    Đoạn mã HTML này cho biết cách chèn một từ mới vào Trình cung cấp Từ điển Người dùng:
+</p>
+<pre class="prettyprint">
+// Defines a new Uri object that receives the result of the insertion
+Uri mNewUri;
+
+...
+
+// Defines an object to contain the new values to insert
+ContentValues mNewValues = new ContentValues();
+
+/*
+ * Sets the values of each column and inserts the word. The arguments to the "put"
+ * method are "column name" and "value"
+ */
+mNewValues.put(UserDictionary.Words.APP_ID, "example.user");
+mNewValues.put(UserDictionary.Words.LOCALE, "en_US");
+mNewValues.put(UserDictionary.Words.WORD, "insert");
+mNewValues.put(UserDictionary.Words.FREQUENCY, "100");
+
+mNewUri = getContentResolver().insert(
+    UserDictionary.Word.CONTENT_URI,   // the user dictionary content URI
+    mNewValues                          // the values to insert
+);
+</pre>
+<p>
+    Dữ liệu cho hàng mới đi vào trong một đối tượng {@link android.content.ContentValues} đơn lẻ, đối tượng này
+    có dạng tương tự như con chạy một hàng. Các cột trong đối tượng này không cần có
+    cùng kiểu dữ liệu, và nếu hoàn toàn không muốn chỉ định một giá trị, bạn có thể đặt một cột
+    thành <code>null</code> bằng cách sử dụng {@link android.content.ContentValues#putNull ContentValues.putNull()}.
+</p>
+<p>
+    Đoạn mã HTML không thêm cột <code>_ID</code> vì cột này được tự động
+    duy trì. Trình cung cấp sẽ gán một giá trị duy nhất <code>_ID</code> cho mỗi hàng được
+    thêm. Các trình cung cấp thường sử dụng giá trị này làm khóa chính của bảng.
+</p>
+<p>
+    URI nội dung được trả về trong <code>newUri</code> sẽ xác định hàng mới thêm, có
+    định dạng như sau:
+</p>
+<pre>
+content://user_dictionary/words/&lt;id_value&gt;
+</pre>
+<p>
+    <code>&lt;id_value&gt;</code> là nội dung của <code>_ID</code> cho hàng mới.
+    Hầu hết các trình cung cấp đều có thể tự động phát hiện dạng URI nội dung này rồi thực hiện thao tác được yêu cầu
+    trên hàng cụ thể đó.
+</p>
+<p>
+    Để nhận giá trị <code>_ID</code> từ {@link android.net.Uri} được trả về, hãy gọi
+    {@link android.content.ContentUris#parseId ContentUris.parseId()}.
+</p>
+<h3 id="Updating">Cập nhật dữ liệu</h3>
+<p>
+    Để cập nhật một hàng, bạn sử dụng một đối tượng {@link android.content.ContentValues} với các giá trị
+    được cập nhật giống như cách bạn làm với việc chèn, và các tiêu chí lựa chọn giống như cách bạn làm với truy vấn.
+    Phương pháp máy khách mà bạn sử dụng là
+    {@link android.content.ContentResolver#update ContentResolver.update()}. Bạn chỉ cần thêm 
+    các giá trị vào đối tượng {@link android.content.ContentValues} cho các cột mà bạn đang cập nhật. Nếu bạn 
+    muốn xóa các nội dung của một cột, hãy đặt giá trị thành <code>null</code>.
+</p>
+<p>
+    Đoạn mã HTML sau thay đổi tất cả hàng với cột bản địa có ngôn ngữ "en" thành cột
+    có bản địa là <code>null</code>. Giá trị trả về là số hàng đã được cập nhật:
+</p>
+<pre>
+// Defines an object to contain the updated values
+ContentValues mUpdateValues = new ContentValues();
+
+// Defines selection criteria for the rows you want to update
+String mSelectionClause = UserDictionary.Words.LOCALE +  "LIKE ?";
+String[] mSelectionArgs = {"en_%"};
+
+// Defines a variable to contain the number of updated rows
+int mRowsUpdated = 0;
+
+...
+
+/*
+ * Sets the updated value and updates the selected words.
+ */
+mUpdateValues.putNull(UserDictionary.Words.LOCALE);
+
+mRowsUpdated = getContentResolver().update(
+    UserDictionary.Words.CONTENT_URI,   // the user dictionary content URI
+    mUpdateValues                       // the columns to update
+    mSelectionClause                    // the column to select on
+    mSelectionArgs                      // the value to compare to
+);
+</pre>
+<p>
+    Bạn cũng nên thanh lọc thông tin đầu vào của người dùng khi gọi
+    {@link android.content.ContentResolver#update ContentResolver.update()}. Để tìm hiểu thêm về 
+    điều này, hãy đọc phần <a href="#Injection">Bảo vệ trước mục nhập độc hại</a>.
+</p>
+<h3 id="Deleting">Xóa dữ liệu</h3>
+<p>
+    Xóa hàng tương tự như truy xuất dữ liệu hàng: bạn chỉ định các tiêu chí lựa chọn cho hàng
+    mà bạn muốn xóa và phương pháp máy khách trả về số hàng được xóa.
+    Đoạn mã HTML sau xóa các hàng có appid khớp với "user". Phương pháp sẽ trả về
+    số hàng được xóa.
+</p>
+<pre>
+
+// Defines selection criteria for the rows you want to delete
+String mSelectionClause = UserDictionary.Words.APP_ID + " LIKE ?";
+String[] mSelectionArgs = {"user"};
+
+// Defines a variable to contain the number of rows deleted
+int mRowsDeleted = 0;
+
+...
+
+// Deletes the words that match the selection criteria
+mRowsDeleted = getContentResolver().delete(
+    UserDictionary.Words.CONTENT_URI,   // the user dictionary content URI
+    mSelectionClause                    // the column to select on
+    mSelectionArgs                      // the value to compare to
+);
+</pre>
+<p>
+    Bạn cũng nên thanh lọc thông tin đầu vào của người dùng khi gọi
+    {@link android.content.ContentResolver#delete ContentResolver.delete()}. Để tìm hiểu thêm về 
+    điều này, hãy đọc phần <a href="#Injection">Bảo vệ trước mục nhập độc hại</a>.
+</p>
+<!-- Provider Data Types -->
+<h2 id="DataTypes">Các Kiểu Dữ liệu của Trình cung cấp</h2>
+<p>
+    Trình cung cấp nội dung có thể cung cấp nhiều kiểu dữ liệu khác nhau. Trình cung cấp Từ điển Người dùng chỉ cung cấp
+    văn bản, nhưng trình cung cấp cũng có thể cung cấp các định dạng sau:
+</p>
+    <ul>
+        <li>
+            integer
+        </li>
+        <li>
+            long integer (long)
+        </li>
+        <li>
+            floating point
+        </li>
+        <li>
+            long floating point (double)
+        </li>
+    </ul>
+<p>
+    Một kiểu dữ liệu khác mà các trình cung cấp thường sử dụng đó là Binary Large OBject (BLOB) được triển khai như một
+    mảng 64KB byte. Bạn có thể xem các kiểu dữ liệu có sẵn bằng cách xem các phương pháp "get" lớp
+    {@link android.database.Cursor}.
+</p>
+<p>
+    Kiểu dữ liệu đối với mỗi cột trong một trình cung cấp thường được liệt kê trong tài liệu của trình cung cấp đó.
+    Các kiểu dữ liệu dành cho Trình cung cấp Từ điển Người dùng được liệt kê trong tài liệu tham khảo
+    cho lớp hợp đồng {@link android.provider.UserDictionary.Words} của nó (lớp hợp đồng được
+    mô tả trong phần <a href="#ContractClasses">Các Lớp Hợp đồng</a>).
+    Bạn cũng có thể xác định kiểu dữ liệu bằng cách gọi {@link android.database.Cursor#getType
+    Cursor.getType()}.
+</p>
+<p>
+    Trình cung cấp cũng duy trì thông tin về kiểu dữ liệu MIME cho mỗi URI nội dung mà chúng định nghĩa. Bạn có thể
+    sử dụng thông tin về kiểu MIME để tìm hiểu xem ứng dụng của mình có thể xử lý dữ liệu mà
+    trình cung cấp đưa ra hay không, hoặc để chọn một kiểu xử lý dựa trên kiểu MIME. Bạn thường cần kiểu
+    MIME khi đang làm việc với một trình cung cấp chứa các cấu trúc hoặc tệp
+    dữ liệu phức tạp. Ví dụ, bảng {@link android.provider.ContactsContract.Data}
+    trong Trình cung cấp Danh bạ sử dụng các kiểu MIME để dán nhãn kiểu dữ liệu liên lạc được lưu trữ trong từng
+    hàng. Để nhận được kiểu MIME tương ứng với một URI nội dung, hãy gọi
+    {@link android.content.ContentResolver#getType ContentResolver.getType()}.
+</p>
+<p>
+    Phần <a href="#MIMETypeReference">Tham khảo Kiểu MIME</a> mô tả
+    cú pháp của cả kiểu MIME tiêu chuẩn lẫn tùy chỉnh.
+</p>
+
+
+<!-- Alternative Forms of Provider Access -->
+<h2 id="AltForms">Các Hình thức Truy cập Trình cung cấp Thay thế</h2>
+<p>
+    Có ba hình thức truy cập trình cung cấp thay thế quan trọng trong phát triển ứng dụng:
+</p>
+<ul>
+    <li>
+        <a href="#Batch">Truy cập hàng loạt</a>: Bạn có thể tạo một loạt lệnh gọi truy cập bằng các phương pháp trong
+        lớp {@link android.content.ContentProviderOperation}, rồi sau đó áp dụng chúng với
+        {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}.
+    </li>
+    <li>
+        Truy vấn không đồng bộ: Bạn nên thực hiện các truy vấn trong một luồng riêng. Một cách để làm điều này đó là
+        sử dụng một đối tượng {@link android.content.CursorLoader}. Các ví dụ trong
+        hướng dẫn <a href="{@docRoot}guide/components/loaders.html">Trình tải</a> sẽ minh họa
+        cách làm điều này.
+    </li>
+    <li>
+        <a href="#Intents">Truy cập dữ liệu thông qua ý định</a>: Mặc dù không thể gửi một ý định
+        trực tiếp tới một trình cung cấp, bạn có thể gửi một ý định tới ứng dụng của trình cung cấp đó, 
+        đây thường là cách tốt nhất để sửa đổi dữ liệu của trình cung cấp.
+    </li>
+</ul>
+<p>
+    Truy cập hàng loạt và sửa đổi thông qua ý định được mô tả trong các phần sau.
+</p>
+<h3 id="Batch">Truy cập hàng loạt</h3>
+<p>
+    Truy cập hàng loạt vào một trình cung cấp là cách hữu ích để chèn nhiều hàng, hoặc để chèn
+    các hàng vào nhiều bảng trong cùng lệnh gọi phương pháp, hoặc nhìn chung để thực hiện một tập hợp
+    thao tác qua các ranh giới tiến trình như một giao tác (thao tác nguyên tử).
+</p>
+<p>
+    Để truy cập một trình cung cấp trong "chế độ hàng loạt",
+    bạn tạo một mảng đối tượng {@link android.content.ContentProviderOperation} rồi
+    phân phối chúng tới một trình cung cấp nội dung bằng
+    {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()}. Bạn chuyển
+    <em>quyền</em> của trình cung cấp nội dung cho phương pháp này thay vì một URI nội dung cụ thể. 
+Điều này cho phép đối tượng {@link android.content.ContentProviderOperation} trong mảng có tác dụng
+    đối với một bảng khác. Một lệnh gọi tới {@link android.content.ContentResolver#applyBatch
+    ContentResolver.applyBatch()} trả về một mảng kết quả.
+</p>
+<p>
+    Mô tả lớp hợp đồng {@link android.provider.ContactsContract.RawContacts}
+    bao gồm một đoạn mã HTML thể hiện việc chèn hàng loạt. Ứng dụng mẫu 
+    <a href="{@docRoot}resources/samples/ContactManager/index.html">Trình quản lý Danh bạ</a>
+    có một ví dụ về truy cập hàng loạt trong tệp nguồn <code>ContactAdder.java</code>
+    của nó.
+</p>
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>Hiển thị dữ liệu bằng cách sử dụng một ứng dụng trình trợ giúp.</h2>
+<p>
+    Nếu ứng dụng của bạn <em>có</em> quyền truy cập, bạn vẫn có thể cần sử dụng một
+    ý định để hiển thị dữ liệu trong một ứng dụng khác. Ví dụ, ứng dụng Lịch chấp nhận một
+    ý định {@link android.content.Intent#ACTION_VIEW}, nhằm hiển thị một ngày hoặc sự kiện cụ thể.
+    Điều này cho phép bạn hiển thị thông tin lịch mà không phải tạo UI của chính mình.
+    Để tìm hiểu thêm về tính năng này, hãy xem
+    hướng dẫn <a href="{@docRoot}guide/topics/providers/calendar-provider.html">Trình cung cấp Lịch</a>.
+</p>
+<p>
+    Ứng dụng mà bạn gửi ý định đến không nhất thiết phải là ứng dụng
+    được liên kết với trình cung cấp. Ví dụ, bạn có thể truy xuất một liên lạc từ
+    Trình cung cấp Danh bạ, rồi gửi một ý định {@link android.content.Intent#ACTION_VIEW}
+    chứa URI nội dung cho hình ảnh liên lạc tới một trình xem ảnh.
+</p>
+</div>
+</div>
+<h3 id="Intents">Truy cập dữ liệu thông qua ý định</h3>
+<p>
+    Ý định có thể cho phép truy cập gián tiếp vào một trình cung cấp nội dung. Bạn cho phép người dùng truy cập
+    dữ liệu trong một trình cung cấp ngay cả khi ứng dụng của bạn không có quyền truy cập, hoặc bằng cách
+    nhận lại một ý định kết quả từ một ứng dụng có quyền, hoặc bằng cách kích hoạt một
+    ứng dụng có phép và cho phép người dùng được làm việc trong nó.
+</p>
+<h4>Được truy cập với các quyền tạm thời</h4>
+<p>
+    Bạn có thể truy cập dữ liệu trong một trình cung cấp nội dung, ngay cả khi bạn không có quyền
+    truy nhập phù hợp, bằng cách gửi một ý định tới một ứng dụng có quyền và
+    nhận lại một ý định kết quả chứa quyền "URI".
+    Đây là những quyền cho một URI nội dung cụ thể kéo dài tới khi hoạt động nhận chúng
+    được hoàn thành. Ứng dụng có quyền lâu dài sẽ cấp quyền tạm thời
+    bằng cách đặt một cờ trong ý định kết quả:
+</p>
+<ul>
+    <li>
+        <strong>Quyền đọc:</strong>
+        {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}
+    </li>
+    <li>
+        <strong>Quyền ghi:</strong>
+        {@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}
+    </li>
+</ul>
+<p class="note">
+    <strong>Lưu ý:</strong> Những cờ này không cấp quyền truy cập đọc và ghi nói chung cho trình cung cấp
+    mà có quyền được chứa trong URI nội dung. Quyền truy cập này chỉ áp dụng cho chính URI đó.
+</p>
+<p>
+    Trình cung cấp sẽ định nghĩa quyền URI cho các URI nội dung trong bản kê khai của nó, bằng cách sử dụng thuộc tính
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">android:grantUriPermission</a></code>
+    của phần tử
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+    cũng như phần tử con
+<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
+    của phần tử
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+    . Cơ chế cấp quyền URI này được giải thích chi tiết hơn trong
+    hướng dẫn <a href="{@docRoot}guide/topics/security/security.html">Bảo mật và Quyền</a>,
+    trong phần "Quyền URI".
+</p>
+<p>
+    Ví dụ, bạn có thể truy xuất dữ liệu cho một liên lạc trong Trình cung cấp Danh bạ, ngay cả khi bạn không
+    có quyền {@link android.Manifest.permission#READ_CONTACTS}. Bạn có thể muốn thực hiện điều này
+    trong một ứng dụng gửi thiệp mừng điện tử tới một liên lạc vào ngày sinh nhật của người đó. Thay vì
+    yêu cầu {@link android.Manifest.permission#READ_CONTACTS}, là nơi cấp cho bạn quyền truy cập tất cả liên lạc
+    của người dùng và tất cả thông tin của họ, bạn nên cho phép người dùng kiểm soát những liên lạc
+    nào được sử dụng bởi ứng dụng của bạn. Để làm điều này, bạn sử dụng tiến trình sau:
+</p>
+<ol>
+    <li>
+        Ứng dụng của bạn gửi một ý định chứa hành động
+        {@link android.content.Intent#ACTION_PICK} và kiểu MIME "danh bạ"
+{@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE}, bằng cách sử dụng
+        phương pháp {@link android.app.Activity#startActivityForResult
+        startActivityForResult()}.
+    </li>
+    <li>
+        Vì ý định này khớp với bộ lọc ý định cho hoạt động
+        "lựa chọn" của ứng dụng Danh bạ, hoạt động sẽ đi đến tiền cảnh.
+    </li>
+    <li>
+        Trong hoạt động lựa chọn, người dùng chọn một
+        liên lạc để cập nhật. Khi điều này xảy ra, hoạt động lựa chọn sẽ gọi
+        {@link android.app.Activity#setResult setResult(resultcode, intent)}
+        để thiết lập một ý định nhằm gửi lại ứng dụng của bạn. Ý định chứa URI nội dung
+        của liên lạc mà người dùng đã chọn, và các cờ "phụ thêm"
+        {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}. Những cờ này cấp quyền URI
+        cho ứng dụng của bạn để đọc dữ liệu cho liên lạc được trỏ đến bởi
+        URI nội dung. Sau đó, hoạt động lựa chọn gọi {@link android.app.Activity#finish()} để
+        trả kiểm soát về ứng dụng của bạn.
+    </li>
+    <li>
+        Hoạt động của bạn trả về tiền cảnh, và hệ thống sẽ gọi phương pháp 
+        {@link android.app.Activity#onActivityResult onActivityResult()}
+        của hoạt động của bạn. Phương pháp này nhận được ý định kết quả do hoạt động lựa chọn tạo trong
+        ứng dụng Danh bạ.
+    </li>
+    <li>
+        Với URI nội dung từ ý định kết quả, bạn có thể đọc dữ liệu của liên lạc
+        từ Trình cung cấp Danh bạ, ngay cả khi bạn không yêu cầu quyền truy cập đọc lâu dài
+        vào trình cung cấp trong bản kê khai của mình. Sau đó, bạn có thể nhận thông tin ngày sinh của liên lạc
+        hoặc địa chỉ e-mail của người đó rồi gửi thiệp mừng điện tử.
+    </li>
+</ol>
+<h4>Sử dụng một ứng dụng khác</h4>
+<p>
+    Một cách đơn giản để cho phép người dùng sửa đổi dữ liệu mà bạn không có quyền truy cập đó là
+    kích hoạt một ứng dụng có quyền và cho phép người dùng làm việc ở đó.
+</p>
+<p>
+    Ví dụ, ứng dụng Lịch chấp nhận một
+    ý định {@link android.content.Intent#ACTION_INSERT}, nó cho phép bạn kích hoạt UI chèn
+    của ứng dụng. Bạn có thể chuyển dữ liệu "phụ thêm" trong ý định này mà được ứng dụng sử dụng
+    để điền trước vào UI. Vì các sự kiện định kỳ có cú pháp phức tạp, cách
+    ưu tiên để chèn sự kiện vào Trình cung cấp Lịch đó là kích hoạt ứng dụng Lịch với một
+    {@link android.content.Intent#ACTION_INSERT} rồi để người dùng chèn sự kiện tại đó.
+</p>
+<!-- Contract Classes -->
+<h2 id="ContractClasses">Các Lớp Hợp đồng</h2>
+<p>
+    Lớp hợp đồng định nghĩa các hằng số sẽ giúp ứng dụng hoạt động với các URI nội dung, tên
+    cột, hành động ý định, và các tính năng khác của một trình cung cấp nội dung. Các lớp hợp đồng không
+    được tự động đưa vào cùng một trình cung cấp; nhà phát triển của trình cung cấp phải định nghĩa chúng rồi
+    cung cấp chúng cho các nhà phát triển khác. Nhiều trình cung cấp được bao gồm cùng với nền tảng
+    Android có các lớp hợp đồng tương ứng trong gói {@link android.provider}.
+</p>
+<p>
+    Ví dụ, Trình cung cấp Từ điển Người dùng có một lớp hợp đồng
+    {@link android.provider.UserDictionary} chứa các hằng số URI nội dung và tên cột. URI nội dung
+    đối với bảng "từ" được định nghĩa trong hằng số
+    {@link android.provider.UserDictionary.Words#CONTENT_URI UserDictionary.Words.CONTENT_URI}.
+    Lớp {@link android.provider.UserDictionary.Words} cũng chứa các hằng số tên cột,
+    chúng được sử dụng trong đoạn mã HTML mẫu trong hướng dẫn này. Ví dụ, một dự thảo truy vấn có thể được
+    định nghĩa là:
+</p>
+<pre>
+String[] mProjection =
+{
+    UserDictionary.Words._ID,
+    UserDictionary.Words.WORD,
+    UserDictionary.Words.LOCALE
+};
+</pre>
+<p>
+    Một lớp hợp đồng khác là {@link android.provider.ContactsContract} dành cho Trình cung cấp Danh bạ.
+    Tài liệu tham khảo cho lớp này bao gồm các đoạn mã HTML mẫu. Một trong số các
+    lớp con của nó, {@link android.provider.ContactsContract.Intents.Insert}, là một lớp hợp đồng
+    chứa các hằng số cho ý định và dữ liệu ý định.
+</p>
+
+
+<!-- MIME Type Reference -->
+<h2 id="MIMETypeReference">Tham khảo Kiểu MIME</h2>
+<p>
+    Trình cung cấp nội dung có thể trả về các kiểu phương tiện MIME tiêu chuẩn, hoặc xâu kiểu MIME tùy chỉnh, hoặc cả hai.
+</p>
+<p>
+    Các kiểu MIME có định dạng
+</p>
+<pre>
+<em>type</em>/<em>subtype</em>
+</pre>
+<p>
+    Ví dụ, kiểu MIME thông dụng <code>text/html</code> có kiểu <code>text</code> và
+    kiểu con <code>html</code>. Nếu trình cung cấp trả về loại này cho một URI, điều đó có nghĩa rằng một
+    truy vấn đang sử dụng URI đó sẽ trả về văn bản chứa thẻ HTML.
+</p>
+<p>
+    Các xâu kiểu MIME tùy chỉnh, còn gọi là kiểu MIME "theo nhà cung cấp", có các giá trị
+    <em>kiểu</em> và <em>kiểu con</em> phức tạp hơn. Giá trị <em>kiểu</em> luôn luôn
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>
+</pre>
+<p>
+    áp dụng cho nhiều hàng, hoặc
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>
+</pre>
+<p>
+    áp dụng cho một hàng.
+</p>
+<p>
+    Giá trị <em>kiểu con</em> áp dụng theo trình cung cấp. Các trình cung cấp được tích hợp trong Android thường có một kiểu con
+    đơn giản. Ví dụ, khi ứng dụng Danh bạ tạo một hàng cho một số điện thoại,
+    nó đặt kiểu MIME sau trong hàng:
+</p>
+<pre>
+vnd.android.cursor.item/phone_v2
+</pre>
+<p>
+    Để ý rằng giá trị kiểu con đơn giản là <code>phone_v2</code>.
+</p>
+<p>
+    Các nhà phát triển trình cung cấp khác có thể tạo mẫu hình kiểu con của riêng mình dựa trên quyền
+    và tên bảng của trình cung cấp. Ví dụ, xét một trình cung cấp chứa các biểu thời gian lịch tàu.
+    Quyền của trình cung cấp là <code>com.example.trains</code>, và nó chứa các bảng
+    Line1, Line2, và Line3. Để phản hồi lại URI nội dung
+</p>
+<p>
+<pre>
+content://com.example.trains/Line1
+</pre>
+<p>
+    đối với bảng Line1, trình cung cấp trả về kiểu MIME
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>/vnd.example.line1
+</pre>
+<p>
+     Để phản hồi lại URI nội dung
+</p>
+<pre>
+content://com.example.trains/Line2/5
+</pre>
+<p>
+    đối với hàng 5 trong bảng Line2, trình cung cấp trả về kiểu MIME
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>/vnd.example.line2
+</pre>
+<p>
+    Hầu hết các trình cung cấp nội dung đều định nghĩa hằng số lớp hợp đồng cho các kiểu MIME mà chúng sử dụng. Ví dụ như lớp hợp đồng
+    của Trình cung cấp Danh bạ {@link android.provider.ContactsContract.RawContacts},
+    sẽ định nghĩa hằng số
+    {@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE} cho kiểu MIME của
+    một hàng liên lạc thô duy nhất.
+</p>
+<p>
+    Các URI nội dung đối với hàng duy nhất được mô tả trong phần
+    <a href="#ContentURIs">URI nội dung</a>.
+</p>
diff --git a/docs/html-intl/intl/vi/guide/topics/providers/content-provider-creating.jd b/docs/html-intl/intl/vi/guide/topics/providers/content-provider-creating.jd
new file mode 100644
index 0000000..2e8579a
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/providers/content-provider-creating.jd
@@ -0,0 +1,1214 @@
+page.title=Tạo một Trình cung cấp Nội dung
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+
+<h2>Trong tài liệu này</h2>
+<ol>
+    <li>
+        <a href="#DataStorage">Thiết kế Kho lưu trữ Dữ liệu</a>
+    </li>
+    <li>
+        <a href="#ContentURI">Thiết kế URI Nội dung</a>
+    </li>
+    <li>
+        <a href="#ContentProvider">Triển khai Lớp Trình cung cấp Nội dung</a>
+        <ol>
+            <li>
+                <a href="#RequiredAccess">Phương pháp được Yêu cầu</a>
+            </li>
+            <li>
+                <a href="#Query">Triển khai phương pháp query()</a>
+            </li>
+            <li>
+                <a href="#Insert">Triển khai phương pháp insert()</a>
+            </li>
+            <li>
+                <a href="#Delete">Triển khai phương pháp delete()</a>
+            </li>
+            <li>
+                <a href="#Update">Triển khai phương pháp update()</a>
+            </li>
+            <li>
+                <a href="#OnCreate">Triển khai phương pháp onCreate()</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#MIMETypes">Triển khai Kiểu MIME của Trình cung cấp Nội dung</a>
+        <ol>
+            <li>
+                <a href="#TableMIMETypes">Kiểu MIME cho bảng</a>
+            </li>
+            <li>
+                <a href="#FileMIMETypes">Kiểu MIME cho tệp</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#ContractClass">Triển khai một Lớp Hợp đồng</a>
+    </li>
+    <li>
+        <a href="#Permissions">Triển khai Quyền của Trình cung cấp Nội dung</a>
+    </li>
+    <li>
+        <a href="#ProviderElement">Phần tử &lt;provider&gt;</a>
+    </li>
+    <li>
+        <a href="#Intents">Ý định và Truy cập Dữ liệu</a>
+    </li>
+</ol>
+<h2>Lớp khóa</h2>
+    <ol>
+        <li>
+            {@link android.content.ContentProvider}
+        </li>
+        <li>
+            {@link android.database.Cursor}
+        </li>
+        <li>
+            {@link android.net.Uri}
+        </li>
+    </ol>
+<h2>Các Mẫu Liên quan</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}resources/samples/NotePad/index.html">
+                Ứng dụng mẫu Note Pad
+            </a>
+        </li>
+    </ol>
+<h2>Xem thêm</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+            Nội dung Cơ bản về Trình cung cấp Nội dung</a>
+        </li>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+            Trình cung cấp Lịch</a>
+        </li>
+    </ol>
+</div>
+</div>
+
+
+<p>
+    Trình cung cấp nội dung quản lý truy cập vào một kho dữ liệu tập trung. Bạn triển khai một
+    trình cung cấp thành một hoặc nhiều lớp trong một ứng dụng Android, bên cạnh các phần tử trong
+    tệp bản kê khai. Một trong các lớp của bạn triển khai một lớp con
+    {@link android.content.ContentProvider}, đây là giao diện giữa trình cung cấp của bạn và
+    các ứng dụng khác. Mặc dù mục đích của các trình cung cấp nội dung khác là cung cấp dữ liệu có sẵn cho các
+    ứng dụng khác, dĩ nhiên bạn có thể ra lệnh cho các hoạt động trong ứng dụng của mình
+    truy vấn và sửa đổi dữ liệu được quản lý bởi trình cung cấp của bạn.
+</p>
+<p>
+    Phần còn lại của chủ đề này là một danh sách cơ bản về các bước để xây dựng một trình cung cấp nội dung và một danh sách
+    các API để sử dụng.
+</p>
+
+
+<!-- Before You Start Building -->
+<h2 id="BeforeYouStart">Trước khi Bạn Bắt đầu Xây dựng</h2>
+<p>
+    Trước khi bạn bắt đầu xây dựng một trình cung cấp, hãy làm việc sau:
+</p>
+<ol>
+    <li>
+        <strong>Quyết định xem bạn có cần một trình cung cấp nội dung không</strong>. Bạn cần xây dựng một trình cung cấp
+        nội dung nếu muốn cung cấp một hoặc nhiều tính năng sau đây:
+        <ul>
+            <li>Bạn muốn cung cấp dữ liệu hoặc tệp phức tạp cho các ứng dụng khác.</li>
+            <li>Bạn muốn cho phép người dùng sao chép dữ liệu phức tạp từ ứng dụng của bạn vào các ứng dụng khác.</li>
+            <li>Bạn muốn cung cấp các gợi ý tìm kiếm tùy chỉnh bằng cách sử dụng khuôn khổ tìm kiếm.</li>
+        </ul>
+    <p>
+        Bạn <em>không</em> cần trình cung cấp phải sử dụng một cơ sở dữ liệu SQLite nếu việc sử dụng hoàn toàn
+        diễn ra trong ứng dụng của bạn.
+    </p>
+    </li>
+    <li>
+        Nếu bạn chưa làm như vậy, hãy đọc chủ đề
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        Nội dung Cơ bản về Trình cung cấp Nội dung</a> để tìm hiểu thêm về trình cung cấp.
+    </li>
+</ol>
+<p>
+    Tiếp theo, hãy làm theo những bước sau để xây dựng trình cung cấp của bạn:
+</p>
+<ol>
+    <li>
+        Thiết kế kho lưu trữ thô cho dữ liệu của bạn. Một trình cung cấp nội dung sẽ cung cấp dữ liệu theo hai cách:
+        <dl>
+            <dt>
+                Dữ liệu tệp
+            </dt>
+            <dd>
+                Dữ liệu mà thường đến các tệp chẳng hạn như
+                ảnh, âm thanh, hoặc video. Lưu trữ các tệp ở không gian
+                riêng tư trong ứng dụng của bạn. Để hồi đáp lại một yêu cầu tệp từ một ứng dụng khác, trình cung cấp
+                của bạn có thể cung cấp một núm điều tác cho tệp.
+            </dd>
+            <dt>
+                Dữ liệu "cấu trúc"
+            </dt>
+            <dd>
+                Dữ liệu mà thường đến một cơ sở dữ liệu, mảng, hoặc cấu trúc tương tự.
+                Lưu trữ dữ liệu dưới dạng tương thích với các bảng hàng cột. Hàng
+                biểu diễn một đối tượng, chẳng hạn như một người hoặc khoản mục trong kiểm kê. Cột biểu diễn
+                một số dữ liệu cho đối tượng, chẳng hạn như tên của một người hoặc giá của một khoản mục. Một cách thường dùng để
+                lưu trữ loại dữ liệu này đó là trong cơ sở dữ liệu SQLite, nhưng bạn có thể sử dụng bất kỳ loại
+                kho lưu trữ lâu dài nào. Để tìm hiểu thêm về các loại kho lưu trữ có sẵn trong
+                hệ thống Android, hãy xem phần <a href="#DataStorage">
+                Thiết kế Kho lưu trữ Dữ liệu</a>.
+            </dd>
+        </dl>
+    </li>
+    <li>
+        Định nghĩa một triển khai cụ thể của lớp {@link android.content.ContentProvider} và
+        các phương pháp được yêu cầu của nó. Lớp này là giao diện giữa dữ liệu của bạn và phần còn lại của
+        hệ thống Android. Để biết thêm thông tin về lớp này, hãy xem phần
+        <a href="#ContentProvider">Triển khai Lớp ContentProvider</a>.
+    </li>
+    <li>
+        Định nghĩa xâu thẩm quyền của trình cung cấp, URI nội dung của nó, và các tên cột. Nếu bạn muốn
+        ứng dụng của trình cung cấp xử lý các ý định, hãy định nghĩa các hành động ý định, dữ liệu phụ thêm,
+        và cờ. Đồng thời, hãy định nghĩa các quyền mà bạn sẽ yêu cầu cho những ứng dụng muốn
+        truy cập dữ liệu của bạn. Bạn nên cân nhắc định nghĩa tất cả những giá trị này là hằng số trong một
+        lớp riêng; sau đó, bạn có thể cho hiện lớp này ra với các nhà phát triển khác. Để biết thêm
+        thông tin về URI nội dung, hãy xem
+        phần <a href="#ContentURI">Thiết kế URI Nội dung</a>.
+        Để biết thêm thông tin về ý định, hãy xem
+        phần <a href="#Intents">Ý định và Truy cập Dữ liệu</a>.
+    </li>
+    <li>
+        Thêm các nội dung tùy chọn khác, chẳng hạn như dữ liệu mẫu hoặc triển
+        khai {@link android.content.AbstractThreadedSyncAdapter} mà có thể đồng bộ hoá dữ liệu giữa
+        trình cung cấp và dữ liệu nền đám mây.
+    </li>
+</ol>
+
+
+<!-- Designing Data Storage -->
+<h2 id="DataStorage">Thiết kế Kho lưu trữ Dữ liệu</h2>
+<p>
+    Trình cung cấp nội dung là giao diện đối với dữ liệu được lưu theo một định dạng cấu trúc. Trước khi tạo
+    giao diện, bạn phải quyết định cách lưu trữ dữ liệu. Bạn có thể lưu trữ dữ liệu theo bất kỳ dạng nào
+    mà bạn muốn rồi thiết kế giao diện để đọc và ghi dữ liệu nếu cần thiết.
+</p>
+<p>
+    Có một số công nghệ lưu trữ dữ liệu có sẵn trong Android:
+</p>
+<ul>
+    <li>
+        Hệ thống Android bao gồm một API cơ sở dữ liệu SQLite mà các trình cung cấp của chính Androi sử dụng
+        để lưu trữ dữ liệu theo định hướng bảng. Lớp
+        {@link android.database.sqlite.SQLiteOpenHelper} giúp bạn tạo cơ sở dữ liệu, và lớp
+        {@link android.database.sqlite.SQLiteDatabase} là lớp cơ bản để đánh giá
+        các cơ sở dữ liệu.
+        <p>
+            Nhớ rằng bạn không phải sử dụng một cơ sở dữ liệu để triển khai kho lưu giữ của mình. Bề ngoài, một trình cung cấp
+            có dạng như là một tập hợp bảng, tương tự như một cơ sở dữ liệu quan hệ, nhưng đây
+            không phải là một yêu cầu đối với việc triển khai nội bộ của trình cung cấp.
+        </p>
+    </li>
+    <li>
+        Để lưu trữ dữ liệu tệp, Android có nhiều API định hướng tệp khác nhau.
+        Để tìm hiểu thêm về lưu trữ tệp, hãy đọc chủ đề
+        <a href="{@docRoot}guide/topics/data/data-storage.html">Kho lưu trữ Dữ liệu</a>. Nếu bạn
+        đang thiết kế một trình cung cấp dữ liệu liên quan tới phương tiện chẳng hạn như nhạc hay video, bạn có thể
+        có một trình cung cấp cho phép kết hợp dữ liệu bảng và các tệp.
+    </li>
+    <li>
+        Để làm việc với dữ liệu trên nền mạng, hãy sử dụng các lớp trong {@link java.net} và 
+        {@link android.net}. Bạn cũng có thể đồng bộ hoá dữ liệu trên nền mạng với một kho lưu trữ dữ liệu cục bộ
+        chẳng hạn như một cơ sở dữ liệu, rồi cung cấp dữ liệu dưới dạng bảng hoặc tệp.
+        Ứng dụng mẫu <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+        Trình điều hợp Đồng bộ Mẫu</a> minh họa loại đồng bộ hoá này.
+    </li>
+</ul>
+<h3 id="DataDesign">
+    Những nội dung cần xem xét khi thiết kế dữ liệu
+</h3>
+<p>
+    Sau đây là một số mẹo để thiết kế cấu trúc dữ liệu cho trình cung cấp của bạn:
+</p>
+<ul>
+    <li>
+        Dữ liệu bảng nên luôn có một cột "khóa chính" mà trình cung cấp duy trì
+        như một giá trị số duy nhất cho mỗi hàng. Bạn có thể sử dụng giá trị này để liên kết hàng với các hàng
+        có liên quan trong các bảng khác (sử dụng nó làm "khóa ngoại"). Mặc dù bạn có thể sử dụng bất kỳ tên gọi nào
+       cho cột này, sử dụng {@link android.provider.BaseColumns#_ID BaseColumns._ID} là lựa chọn tốt nhất
+        vì việc liên kết các kết quả của một truy vấn trình cung cấp với
+        {@link android.widget.ListView} đòi hỏi một trong các cột được truy xuất phải có tên
+        <code>_ID</code>.
+    </li>
+    <li>
+        Nếu bạn muốn cung cấp các hình ảnh bitmap hoặc nội dung dữ liệu định hướng tệp rất lớn khác, hãy lưu trữ
+        dữ liệu vào một tệp rồi cung cấp nó gián tiếp thay vì lưu trữ nó trực tiếp trong một
+        bảng. Nếu làm vậy, bạn cần báo cho người dùng trình cung cấp của bạn rằng họ cần sử dụng một phương pháp tệp
+        {@link android.content.ContentResolver} để truy cập dữ liệu.
+    </li>
+    <li>
+        Sử dụng kiểu dữ liệu Binary Large OBject (BLOB) để lưu trữ dữ liệu có kích cỡ khác nhau hoặc có một
+        cấu trúc thay đổi. Ví dụ, bạn có thể sử dụng cột BLOB để lưu trữ một
+        <a href="http://code.google.com/p/protobuf">bộ đệm giao thức</a> hay
+        <a href="http://www.json.org">cấu trúc JSON</a>.
+        <p>
+            Bạn cũng có thể sử dụng một BLOB để triển khai một bảng <em>độc lập với sơ đồ</em>. Trong
+            kiểu bảng này, bạn định nghĩa một cột khóa chính, một cột kiểu MIME, và một hoặc
+            nhiều cột chung là BLOB. Ý nghĩa của dữ liệu trong cột BLOB được thể hiện
+            bởi giá trị trong cột kiểu MIME. Điều này cho phép bạn lưu trữ các kiểu hàng khác nhau trong
+            cùng bảng. Bảng "dữ liệu"
+            {@link android.provider.ContactsContract.Data} của Trình cung cấp Danh bạ là một ví dụ về bảng
+            độc lập với sơ đồ.
+        </p>
+    </li>
+</ul>
+<!-- Designing Content URIs -->
+<h2 id="ContentURI">Thiết kế URI Nội dung</h2>
+<p>
+    <strong>URI nội dung</strong> là một URI xác định dữ liệu trong một trình cung cấp. URI nội dung bao gồm
+    tên mang tính biểu tượng của toàn bộ trình cung cấp (<strong>quyền</strong> của nó) và một
+    tên trỏ đến một bảng hoặc tệp (<strong>đường dẫn</strong>). Phần id tùy chọn chỉ đến một
+    hàng riêng lẻ trong một bảng. Mọi phương thức truy cập dữ liệu
+    {@link android.content.ContentProvider} đều có một URI nội dung là một tham đối; điều này cho phép bạn
+    xác định bảng, hàng, hoặc tệp để truy cập.
+</p>
+<p>
+    Nội dung cơ bản của URI nội dung được mô tả trong chủ đề
+    <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+    Nội dung Cơ bản về Trình cung cấp Nội dung</a>.
+</p>
+<h3>Thiết kế một thẩm quyền</h3>
+<p>
+    Một trình cung cấp thường có một thẩm quyền duy nhất, đóng vai trò là tên nội bộ Android của nó. Để
+    tránh xung đột với các trình cung cấp khác, bạn nên sử dụng quyền sở hữu miền Internet (đảo ngược)
+    làm cơ sở cho thẩm quyền của trình cung cấp của mình. Vì đề xuất này cũng đúng đối với tên gói
+    Android, bạn có thể định nghĩa thẩm quyền trình cung cấp của mình là phần mở rộng của tên
+    gói chứa trình cung cấp. Ví dụ, nếu tên gói Android là
+    <code>com.example.&lt;appname&gt;</code>, bạn nên cấp cho trình cung cấp của mình
+    thẩm quyền <code>com.example.&lt;appname&gt;.provider</code>.
+</p>
+<h3>Thiết kế một cấu trúc đường dẫn</h3>
+<p>
+    Nhà phát triển thường tạo URI nội dung từ thẩm quyền bằng cách nối các đường dẫn trỏ đến
+    các bảng riêng lẻ. Ví dụ, nếu bạn có hai bảng <em>table1</em> và
+    <em>table2</em>, bạn kết hợp thẩm quyền từ ví dụ trước để tạo ra
+    các URI nội dung
+    <code>com.example.&lt;appname&gt;.provider/table1</code> và
+    <code>com.example.&lt;appname&gt;.provider/table2</code>. Các đường dẫn
+    không bị giới hạn ở một phân đoạn duy nhất, và không cần phải có một bảng cho từng cấp của đường dẫn.
+</p>
+<h3>Xử lý ID URI nội dung</h3>
+<p>
+    Theo quy ước, các trình cung cấp cho phép truy cập một hàng đơn trong một bảng bằng cách chấp nhận một URI nội dung
+    có một giá trị ID cho hàng đó ở cuối URI. Cũng theo quy ước, các trình cung cấp sẽ so khớp
+    giá trị ID với cột <code>_ID</code> của bảng, và thực hiện truy cập yêu cầu đối với
+    hàng trùng khớp.
+</p>
+<p>
+    Quy ước này tạo điều kiện cho một kiểu mẫu thiết kế chung cho các ứng dụng truy cập một trình cung cấp. Ứng dụng
+    tiến hành truy vấn đối với trình cung cấp và hiển thị kết quả {@link android.database.Cursor}
+    trong một {@link android.widget.ListView} bằng cách sử dụng {@link android.widget.CursorAdapter}.
+    Định nghĩa {@link android.widget.CursorAdapter} yêu cầu một trong các cột trong
+    {@link android.database.Cursor} phải là <code>_ID</code>
+</p>
+<p>
+    Sau đó, người dùng chọn một trong các hàng được hiển thị từ UI để xem hoặc sửa đổi
+    dữ liệu. Ứng dụng sẽ nhận được hàng tương ứng từ {@link android.database.Cursor} làm nền cho
+    {@link android.widget.ListView}, nhận giá trị <code>_ID</code> cho hàng này, nối nó với
+    URI nội dung, và gửi yêu cầu truy cập tới trình cung cấp. Sau đó, trình cung cấp có thể thực hiện
+    truy vấn hoặc sửa đổi đối với chính xác hàng mà người dùng đã chọn.
+</p>
+<h3>Kiểu mẫu URI nội dung</h3>
+<p>
+    Để giúp bạn chọn hành động nào sẽ thực hiện cho URI nội dung đến, API của trình cung cấp sẽ bao gồm
+    lớp thuận tiện {@link android.content.UriMatcher}, nó ánh xạ "kiểu mẫu" URI nội dung với
+    các giá trị số nguyên. Bạn có thể sử dụng các giá trị số nguyên trong một câu lệnh <code>switch</code> mà chọn
+    hành động mong muốn cho URI nội dung hoặc URI mà khớp với một kiểu mẫu cụ thể.
+</p>
+<p>
+    Kiểu mẫu URI nội dung sẽ so khớp các URI nội dung bằng cách sử dụng ký tự đại diện:
+</p>
+    <ul>
+        <li>
+            <strong><code>*</code>:</strong> Khớp một xâu ký tự hợp lệ bất kỳ với chiều dài bất kỳ.
+        </li>
+        <li>
+            <strong><code>#</code>:</strong> Khớp một xâu ký tự số có chiều dài bất kỳ.
+        </li>
+    </ul>
+<p>
+    Lấy một ví dụ về thiết kế và tạo mã xử lý URI nội dung, hãy xét một trình cung cấp có
+    thẩm quyền <code>com.example.app.provider</code> mà nhận ra các URI nội dung
+    trỏ đến các bảng sau:
+</p>
+<ul>
+    <li>
+        <code>content://com.example.app.provider/table1</code>: Một bảng gọi là <code>table1</code>.
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table2/dataset1</code>: Một bảng gọi là
+        <code>dataset1</code>.
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table2/dataset2</code>: Một bảng gọi là
+        <code>dataset2</code>.
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table3</code>: Một bảng gọi là <code>table3</code>.
+    </li>
+</ul>
+<p>
+    Trình cung cấp cũng nhận ra những URI nội dung này nếu chúng có một ID hàng được nối kèm, như
+    ví dụ <code>content://com.example.app.provider/table3/1</code> đối với hàng được nhận biết bởi
+    <code>1</code> trong <code>table3</code>.
+</p>
+<p>
+    Sẽ có thể có các kiểu mẫu URI nội dung sau:
+</p>
+<dl>
+    <dt>
+        <code>content://com.example.app.provider/*</code>
+    </dt>
+    <dd>
+        Khớp với bất kỳ URI nội dung nào trong trình cung cấp.
+    </dd>
+    <dt>
+        <code>content://com.example.app.provider/table2/*</code>:
+    </dt>
+    <dd>
+        Khớp với một URI nội dung cho các bảng <code>dataset1</code>
+        và <code>dataset2</code>, nhưng không khớp với URI nội dung cho <code>table1</code> hoặc 
+        <code>table3</code>.
+    </dd>
+    <dt>
+        <code>content://com.example.app.provider/table3/#</code>: Khớp với một URI nội dung
+        cho các hàng đơn trong <code>table3</code>, chẳng hạn như
+        <code>content://com.example.app.provider/table3/6</code> đối với hàng được xác định bởi
+        <code>6</code>.
+    </dt>
+</dl>
+<p>
+    Đoạn mã HTML sau cho biết cách hoạt động của các phương pháp trong {@link android.content.UriMatcher}.
+    Đoạn mã này xử lý các URI cho toàn bộ một bảng khác với URI cho một
+    hàng đơn, bằng cách sử dụng mẫu hình URI nội dung
+    <code>content://&lt;authority&gt;/&lt;path&gt;</code> cho các bảng, và
+    <code>content://&lt;authority&gt;/&lt;path&gt;/&lt;id&gt;</code> cho các hàng đơn.
+</p>
+<p>
+    Phương pháp {@link android.content.UriMatcher#addURI(String, String, int) addURI()} ánh xạ một
+    thẩm quyền và đường dẫn tới một giá trị số nguyên. Phương pháp {@link android.content.UriMatcher#match(Uri)
+    match()} trả về giá trị số nguyên cho một URI. Câu lệnh <code>switch</code> sẽ chọn
+    giữa truy vấn toàn bộ bảng và truy vấn cho một bản ghi đơn:
+</p>
+<pre class="prettyprint">
+public class ExampleProvider extends ContentProvider {
+...
+    // Creates a UriMatcher object.
+    private static final UriMatcher sUriMatcher;
+...
+    /*
+     * The calls to addURI() go here, for all of the content URI patterns that the provider
+     * should recognize. For this snippet, only the calls for table 3 are shown.
+     */
+...
+    /*
+     * Sets the integer value for multiple rows in table 3 to 1. Notice that no wildcard is used
+     * in the path
+     */
+    sUriMatcher.addURI("com.example.app.provider", "table3", 1);
+
+    /*
+     * Sets the code for a single row to 2. In this case, the "#" wildcard is
+     * used. "content://com.example.app.provider/table3/3" matches, but
+     * "content://com.example.app.provider/table3 doesn't.
+     */
+    sUriMatcher.addURI("com.example.app.provider", "table3/#", 2);
+...
+    // Implements ContentProvider.query()
+    public Cursor query(
+        Uri uri,
+        String[] projection,
+        String selection,
+        String[] selectionArgs,
+        String sortOrder) {
+...
+        /*
+         * Choose the table to query and a sort order based on the code returned for the incoming
+         * URI. Here, too, only the statements for table 3 are shown.
+         */
+        switch (sUriMatcher.match(uri)) {
+
+
+            // If the incoming URI was for all of table3
+            case 1:
+
+                if (TextUtils.isEmpty(sortOrder)) sortOrder = "_ID ASC";
+                break;
+
+            // If the incoming URI was for a single row
+            case 2:
+
+                /*
+                 * Because this URI was for a single row, the _ID value part is
+                 * present. Get the last path segment from the URI; this is the _ID value.
+                 * Then, append the value to the WHERE clause for the query
+                 */
+                selection = selection + "_ID = " uri.getLastPathSegment();
+                break;
+
+            default:
+            ...
+                // If the URI is not recognized, you should do some error handling here.
+        }
+        // call the code to actually do the query
+    }
+</pre>
+<p>
+    Một lớp khác, {@link android.content.ContentUris}, sẽ cung cấp các phương pháp thuận tiện để làm việc
+    với phần <code>id</code> của URI nội dung. Các lớp {@link android.net.Uri} và
+    {@link android.net.Uri.Builder} bao gồm các phương pháp thuận tiện cho việc phân tích các đối tượng
+    {@link android.net.Uri} hiện có và xây dựng các đối tượng mới.
+</p>
+
+<!-- Implementing the ContentProvider class -->
+<h2 id="ContentProvider">Triển khai Lớp Trình cung cấp Nội dung</h2>
+<p>
+    Thực thể  {@link android.content.ContentProvider} quản lý truy cập vào
+    một tập dữ liệu cấu trúc bằng cách xử lý yêu cầu từ các ứng dụng khác. Tất cả các dạng
+    truy cập cuối cùng đều gọi {@link android.content.ContentResolver}, sau đó nó gọi ra một phương pháp
+    cụ thể của {@link android.content.ContentProvider} để lấy quyền truy cập.
+</p>
+<h3 id="RequiredAccess">Phương pháp được yêu cầu</h3>
+<p>
+    Lớp tóm tắt {@link android.content.ContentProvider} sẽ định nghĩa sáu phương pháp tóm tắt
+    mà bạn phải triển khai như một phần lớp con cụ thể của mình. Tất cả những phương pháp này ngoại trừ
+    {@link android.content.ContentProvider#onCreate() onCreate()} đều được gọi ra bởi một ứng dụng máy khách
+    đang cố truy cập trình cung cấp nội dung của bạn:
+</p>
+<dl>
+    <dt>
+        {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+        query()}
+    </dt>
+    <dd>
+        Truy xuất dữ liệu từ trình cung cấp của bạn. Sử dụng các tham đối để chọn bảng để
+        truy vấn, các hàng và cột để trả về, và thứ tự sắp xếp của kết quả.
+        Trả về dữ liệu như một đối tượng {@link android.database.Cursor}.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}
+    </dt>
+    <dd>
+        Chèn một hàng mới vào trình cung cấp của bạn. Sử dụng các tham đối để lựa chọn
+        bảng đích và nhận các giá trị cột để sử dụng. Trả về một URI nội dung cho
+        hàng mới chèn.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#update(Uri, ContentValues, String, String[])
+        update()}
+    </dt>
+    <dd>
+        Cập nhật các hàng hiện tại trong trình cung cấp của bạn. Sử dụng các tham đối để lựa chọn bảng và hàng
+        để cập nhật và nhận các giá trị cột được cập nhật. Trả về số hàng được cập nhật.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()}
+    </dt>
+    <dd>
+        Xóa hàng khỏi trình cung cấp của bạn. Sử dụng các tham đối để lựa chọn bảng và các hàng
+        cần xóa. Trả về số hàng được xóa.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#getType(Uri) getType()}
+    </dt>
+    <dd>
+        Trả về kiểu MIME tương ứng với một URI nội dung. Phương pháp này được mô tả chi tiết hơn
+        trong phần <a href="#MIMETypes">Triển khai Kiểu MIME của Trình cung cấp Nội dung</a>.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#onCreate() onCreate()}
+    </dt>
+    <dd>
+        Khởi tạo trình cung cấp của bạn. Hệ thống Android sẽ gọi ra phương pháp này ngay lập tức sau khi nó
+        tạo trình cung cấp của bạn. Để ý rằng trình cung cấp của bạn không được tạo cho đến khi đối tượng
+        {@link android.content.ContentResolver} cố truy cập nó.
+    </dd>
+</dl>
+<p>
+    Để ý rằng những phương pháp này có cùng chữ ký như các phương pháp
+    {@link android.content.ContentResolver} được đặt tên như nhau.
+</p>
+<p>
+    Việc bạn triển khai những phương pháp này nên xét tới các nội dung sau:
+</p>
+<ul>
+    <li>
+        Tất cả phương pháp này ngoại trừ {@link android.content.ContentProvider#onCreate() onCreate()}
+        đều có thể được gọi đồng thời bằng nhiều luồng, vì thế chúng phải an toàn đối với luồng. Để tìm hiểu
+        thêm về nhiều luồng, hãy xem chủ đề
+        <a href="{@docRoot}guide/components/processes-and-threads.html">
+        Tiến trình và Luồng</a>.
+    </li>
+    <li>
+        Tránh thực hiện những thao tác dài trong {@link android.content.ContentProvider#onCreate()
+        onCreate()}. Hoãn các tác vụ khởi tạo tới khi chúng thực sự cần thiết.
+        Phần <a href="#OnCreate">Triển khai phương pháp onCreate()</a>
+        sẽ bàn kỹ hơn về vấn đề này.
+    </li>
+    <li>
+        Mặc dù bạn phải triển khai những phương pháp này, mã của bạn không nhất thiết phải làm gì ngoại trừ việc
+        trả về kiểu dữ liệu kỳ vọng. Ví dụ, bạn có thể muốn ngăn những ứng dụng khác
+        chèn dữ liệu vào một số bảng. Để làm điều này, bạn có thể bỏ qua lệnh gọi tới
+        {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} và trả về
+        0.
+    </li>
+</ul>
+<h3 id="Query">Triển khai phương pháp query()</h3>
+<p>
+    Phương pháp
+    {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+    ContentProvider.query()} phải trả về một đối tượng {@link android.database.Cursor}, nếu không nó sẽ thất bại
+, đưa ra một lỗi {@link java.lang.Exception}. Nếu bạn đang sử dụng một cơ sở dữ liệu SQLite làm kho lưu trữ dữ liệu của mình
+, bạn có thể chỉ cần trả về {@link android.database.Cursor} được trả về bởi một trong các phương pháp
+    <code>query()</code> của lớp {@link android.database.sqlite.SQLiteDatabase}.
+    Nếu truy vấn không khớp với bất kỳ hàng nào, bạn nên trả về một thực thể  {@link android.database.Cursor}
+    có phương pháp {@link android.database.Cursor#getCount()} trả về 0.
+    Bạn chỉ nên trả về <code>null</code> nếu đã xảy ra một lỗi nội bộ trong tiến trình truy vấn.
+</p>
+<p>
+    Nếu bạn không đang sử dụng một cơ sở dữ liệu SQLite làm kho lưu trữ dữ liệu của mình, hãy sử dụng một trong các lớp con cụ thể
+    của {@link android.database.Cursor}. Ví dụ, lớp {@link android.database.MatrixCursor} sẽ triển khai
+    một con chạy trong đó mỗi hàng là một mảng của {@link java.lang.Object}. Với lớp này,
+    hãy sử dụng {@link android.database.MatrixCursor#addRow(Object[]) addRow()} để thêm một hàng mới.
+</p>
+<p>
+    Nhớ rằng hệ thống Android phải có thể giao tiếp với {@link java.lang.Exception}
+    qua các ranh giới tiến trình. Android có thể làm vậy cho những trường hợp ngoại lệ sau, điều này có thể hữu ích
+    trong xử lý lỗi truy vấn:
+</p>
+<ul>
+    <li>
+        {@link java.lang.IllegalArgumentException} (Bạn có thể chọn đưa ra lỗi này nếu trình cung cấp của bạn
+        nhận một URI nội dung không hợp lệ)
+    </li>
+    <li>
+        {@link java.lang.NullPointerException}
+    </li>
+</ul>
+<h3 id="Insert">Triển khai phương pháp insert()</h3>
+<p>
+    Phương pháp {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} sẽ thêm một
+    hàng mới vào bảng phù hợp bằng cách sử dụng các giá trị trong tham đối {@link android.content.ContentValues}
+. Nếu tên cột không nằm trong tham đối {@link android.content.ContentValues}, bạn có thể
+    muốn cung cấp một giá trị mặc định cho nó hoặc trong mã trình cung cấp của bạn hoặc trong sơ đồ
+    cơ sở dữ liệu của bạn.
+</p>
+<p>
+    Phương pháp này sẽ trả về URI nội dung cho hàng mới. Để xây dựng điều này, hãy nối
+    giá trị <code>_ID</code> của hàng mới (hay khóa chính khác) với URI nội dung của bảng bằng cách sử dụng
+    {@link android.content.ContentUris#withAppendedId(Uri, long) withAppendedId()}.
+</p>
+<h3 id="Delete">Triển khai phương pháp delete()</h3>
+<p>
+    Phương pháp {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()} 
+    không cần phải xóa hàng thực chất khỏi kho lưu trữ dữ liệu của bạn. Nếu bạn đang sử dụng một trình điều hợp đồng bộ
+    với trình cung cấp của mình, bạn nên cân nhắc đánh dấu một hàng đã xóa
+    bằng cờ "xóa" thay vì gỡ bỏ hàng một cách hoàn toàn. Trình điều hợp đồng bộ có thể
+    kiểm tra các hàng đã xóa và gỡ bỏ chúng khỏi máy chủ trước khi xóa chúng khỏi trình cung cấp.
+</p>
+<h3 id="Update">Triển khai phương pháp update()</h3>
+<p>
+    Phương pháp {@link android.content.ContentProvider#update(Uri, ContentValues, String, String[])
+    update()} lấy cùng tham đối {@link android.content.ContentValues} được sử dụng bởi
+    {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}, và
+    cùng tham đối <code>selection</code> và <code>selectionArgs</code> được sử dụng bởi
+    {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()} và 
+    {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+    ContentProvider.query()}. Điều này có thể cho phép bạn sử dụng lại mã giữa những phương pháp này.
+</p>
+<h3 id="OnCreate">Triển khai phương pháp onCreate()</h3>
+<p>
+    Hệ thống Android sẽ gọi {@link android.content.ContentProvider#onCreate()
+    onCreate()} khi nó khởi động trình cung cấp. Bạn chỉ nên thực hiện các tác vụ khởi tạo chạy nhanh
+    trong phương pháp này, và hoãn việc tạo cơ sở dữ liệu và nạp dữ liệu tới khi trình cung cấp thực sự
+    nhận được yêu cầu cho dữ liệu. Nếu bạn thực hiện các tác vụ dài trong
+    {@link android.content.ContentProvider#onCreate() onCreate()}, bạn sẽ làm chậm lại
+    quá trình khởi động của trình cung cấp. Đến lượt mình, điều này sẽ làm chậm hồi đáp từ trình cung cấp đối với các
+    ứng dụng khác.
+</p>
+<p>
+    Ví dụ, nếu bạn đang sử dụng một cơ sở dữ liệu SQLite, bạn có thể tạo
+    một đối tượng {@link android.database.sqlite.SQLiteOpenHelper} mới trong
+    {@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()},
+    rồi tạo các bảng SQL lần đầu tiên khi bạn mở cơ sở dữ liệu. Để tạo điều kiện cho điều này,
+    lần đầu tiên bạn gọi {@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase
+    getWritableDatabase()}, nó sẽ tự động gọi ra phương pháp
+    {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+    SQLiteOpenHelper.onCreate()}.
+</p>
+<p>
+    Hai đoạn mã HTML sau minh họa tương tác giữa
+    {@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()} và
+    {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+    SQLiteOpenHelper.onCreate()}. Đoạn mã HTML đầu tiên là triển khai
+    {@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()}:
+</p>
+<pre class="prettyprint">
+public class ExampleProvider extends ContentProvider
+
+    /*
+     * Defines a handle to the database helper object. The MainDatabaseHelper class is defined
+     * in a following snippet.
+     */
+    private MainDatabaseHelper mOpenHelper;
+
+    // Defines the database name
+    private static final String DBNAME = "mydb";
+
+    // Holds the database object
+    private SQLiteDatabase db;
+
+    public boolean onCreate() {
+
+        /*
+         * Creates a new helper object. This method always returns quickly.
+         * Notice that the database itself isn't created or opened
+         * until SQLiteOpenHelper.getWritableDatabase is called
+         */
+        mOpenHelper = new MainDatabaseHelper(
+            getContext(),        // the application context
+            DBNAME,              // the name of the database)
+            null,                // uses the default SQLite cursor
+            1                    // the version number
+        );
+
+        return true;
+    }
+
+    ...
+
+    // Implements the provider's insert method
+    public Cursor insert(Uri uri, ContentValues values) {
+        // Insert code here to determine which table to open, handle error-checking, and so forth
+
+        ...
+
+        /*
+         * Gets a writeable database. This will trigger its creation if it doesn't already exist.
+         *
+         */
+        db = mOpenHelper.getWritableDatabase();
+    }
+}
+</pre>
+<p>
+    Đoạn mã HTML tiếp theo là triển khai
+    {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+    SQLiteOpenHelper.onCreate()}, bao gồm một lớp trình trợ giúp:
+</p>
+<pre class="prettyprint">
+...
+// A string that defines the SQL statement for creating a table
+private static final String SQL_CREATE_MAIN = "CREATE TABLE " +
+    "main " +                       // Table's name
+    "(" +                           // The columns in the table
+    " _ID INTEGER PRIMARY KEY, " +
+    " WORD TEXT"
+    " FREQUENCY INTEGER " +
+    " LOCALE TEXT )";
+...
+/**
+ * Helper class that actually creates and manages the provider's underlying data repository.
+ */
+protected static final class MainDatabaseHelper extends SQLiteOpenHelper {
+
+    /*
+     * Instantiates an open helper for the provider's SQLite data repository
+     * Do not do database creation and upgrade here.
+     */
+    MainDatabaseHelper(Context context) {
+        super(context, DBNAME, null, 1);
+    }
+
+    /*
+     * Creates the data repository. This is called when the provider attempts to open the
+     * repository and SQLite reports that it doesn't exist.
+     */
+    public void onCreate(SQLiteDatabase db) {
+
+        // Creates the main table
+        db.execSQL(SQL_CREATE_MAIN);
+    }
+}
+</pre>
+
+
+<!-- Implementing ContentProvider MIME Types -->
+<h2 id="MIMETypes">Triển khai Kiểu MIME của Trình cung cấp Nội dung</h2>
+<p>
+    Lớp {@link android.content.ContentProvider} có hai phương pháp để trả về các kiểu MIME:
+</p>
+<dl>
+    <dt>
+        {@link android.content.ContentProvider#getType(Uri) getType()}
+    </dt>
+    <dd>
+        Một trong các phương pháp được yêu cầu mà bạn phải triển khai cho bất kỳ trình cung cấp nào.
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}
+    </dt>
+    <dd>
+        Một phương pháp mà bạn được dự tính sẽ triển khai nếu trình cung cấp của bạn cung cấp tệp.
+    </dd>
+</dl>
+<h3 id="TableMIMETypes">Kiểu MIME cho bảng</h3>
+<p>
+    Phương pháp {@link android.content.ContentProvider#getType(Uri) getType()} trả về một
+    {@link java.lang.String} theo định dạng MIME mà mô tả kiểu dữ liệu được trả về bởi tham đối
+    URI nội dung. Tham đối {@link android.net.Uri} có thể là một mẫu hình thay vì một URI cụ thể;
+    trong trường hợp này, bạn nên trả về kiểu dữ liệu được liên kết với các URI nội dung mà khớp với
+    mẫu hình đó.
+</p>
+<p>
+    Đối với các kiểu dữ liệu phổ biến như văn bản, HTML, hay JPEG,
+    {@link android.content.ContentProvider#getType(Uri) getType()} sẽ trả về
+    kiểu MIME tiêu chuẩn cho dữ liệu đó. Một danh sách đầy đủ về những kiểu tiêu chuẩn này có sẵn trên trang web
+    <a href="http://www.iana.org/assignments/media-types/index.htm">IANA MIME Media Types</a>
+.
+</p>
+<p>
+    Đối với các URI nội dung mà trỏ tới một hàng hoặc các hàng của bảng dữ liệu,
+    {@link android.content.ContentProvider#getType(Uri) getType()} sẽ trả về
+    một kiểu MIME theo định dạng MIME riêng cho nhà cung cấp của Android:
+</p>
+<ul>
+    <li>
+        Bộ phận kiểu: <code>vnd</code>
+    </li>
+    <li>
+        Bộ phận kiểu con:
+        <ul>
+            <li>
+    Nếu mẫu hình URI áp dụng cho một hàng đơn: <code>android.cursor.<strong>item</strong>/</code>
+            </li>
+            <li>
+    Nếu mẫu hình URI áp dụng cho nhiều hơn một hàng: <code>android.cursor.<strong>dir</strong>/</code>
+            </li>
+        </ul>
+    </li>
+    <li>
+        Bộ phận riêng theo trình cung cấp: <code>vnd.&lt;name&gt;</code>.<code>&lt;type&gt;</code>
+        <p>
+            Bạn cung cấp <code>&lt;name&gt;</code> và <code>&lt;type&gt;</code>.
+            Giá trị <code>&lt;name&gt;</code> nên là giá trị duy nhất toàn cục,
+            và giá trị <code>&lt;type&gt;</code> nên là giá trị duy nhất đối với mẫu hình
+            URI tương ứng. Một lựa chọn hay cho <code>&lt;name&gt;</code> đó là tên công ty của bạn hoặc
+            một thành phần nào đó trong tên gói Android cho ứng dụng của bạn. Một lựa chọn hay cho
+            <code>&lt;type&gt;</code> đó là một xâu xác định bảng được liên kết với
+            URI.
+        </p>
+
+    </li>
+</ul>
+<p>
+    Ví dụ, nếu thẩm quyền của một trình cung cấp là
+    <code>com.example.app.provider</code>, và nó làm hiện ra một bảng có tên
+    <code>table1</code> thì kiểu MIME cho nhiều hàng trong <code>table1</code> là:
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>/vnd.com.example.provider.table1
+</pre>
+<p>
+    Đối với một hàng đơn của <code>table1</code>, kiểu MIME là:
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>/vnd.com.example.provider.table1
+</pre>
+<h3 id="FileMIMETypes">Kiểu MIME cho tệp</h3>
+<p>
+    Nếu trình cung cấp của bạn cung cấp tệp, hãy triển khai
+    {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}.
+    Phương pháp này sẽ trả về một mảng {@link java.lang.String} của kiểu MIME đối với các tệp mà trình cung cấp của bạn
+    có thể trả về cho một URI nội dung cho trước. Bạn nên lọc các kiểu MIME mà mình cung cấp bằng tham đối bộ lọc
+    kiểu MIME, sao cho bạn chỉ trả về những kiểu MIME mà máy khách muốn xử lý.
+</p>
+<p>
+    Ví dụ, xét một trình cung cấp hình ảnh dưới dạng tệp có định dạng <code>.jpg</code>,
+    <code>.png</code> và <code>.gif</code>.
+    Nếu một ứng dụng gọi {@link android.content.ContentResolver#getStreamTypes(Uri, String)
+    ContentResolver.getStreamTypes()} bằng xâu bộ lọc <code>image/*</code> (
+    mà là một "hình ảnh"),
+    khi đó phương pháp {@link android.content.ContentProvider#getStreamTypes(Uri, String)
+    ContentProvider.getStreamTypes()} sẽ trả về mảng:
+</p>
+<pre>
+{ &quot;image/jpeg&quot;, &quot;image/png&quot;, &quot;image/gif&quot;}
+</pre>
+<p>
+    Nếu ứng dụng chỉ quan tâm đến các tệp <code>.jpg</code>, vậy nó có thể gọi
+    {@link android.content.ContentResolver#getStreamTypes(Uri, String)
+    ContentResolver.getStreamTypes()} bằng xâu bộ lọc <code>*\/jpeg</code>, và
+    {@link android.content.ContentProvider#getStreamTypes(Uri, String)
+    ContentProvider.getStreamTypes()} sẽ trả về:
+<pre>
+{&quot;image/jpeg&quot;}
+</pre>
+<p>
+    Nếu trình cung cấp của bạn không cung cấp bất kỳ kiểu MIME nào được yêu cầu trong xâu bộ lọc,
+    {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}
+    sẽ trả về <code>null</code>.
+</p>
+
+
+<!--  Implementing a Contract Class -->
+<h2 id="ContractClass">Triển khai một Lớp Hợp đồng</h2>
+<p>
+    Lớp hợp đồng là một lớp <code>public final</code> chứa các định nghĩa hằng số cho
+    URI, tên cột, kiểu MIME, và siêu dữ liệu khác liên quan tới trình cung cấp. Lớp này
+    sẽ thiết lập một hợp đồng giữa trình cung cấp và các ứng dụng khác bằng cách đảm bảo rằng trình cung cấp
+    có thể được truy cập đúng ngay cả khi có thay đổi về giá trị thực sự của URI, tên cột,
+    v.v.
+</p>
+<p>
+    Lớp hợp đồng cũng giúp các nhà phát triển vì chúng thường có tên dễ nhớ cho các hằng số của mình,
+    vì vậy các nhà phát triển ít có khả năng sử dụng các giá trị không đúng cho tên cột hay URI hơn. Do đó là một
+    lớp, nó có thể chứa tài liệu Javadoc. Các môi trường phát triển tích hợp như
+    Eclipse có thể tự động điền các tên hằng số từ lớp hợp đồng và hiển thị Javadoc cho các
+    hằng số đó.
+</p>
+<p>
+    Các nhà phát triển không thể truy cập tệp lớp của lớp hợp đồng từ ứng dụng của mình, nhưng họ có thể
+    lặng lẽ biên dịch nó vào ứng dụng của họ từ một tệp <code>.jar</code> mà bạn cung cấp.
+</p>
+<p>
+    Lớp {@link android.provider.ContactsContract} và các lớp lồng nhau của nó là các ví dụ về
+    lớp hợp đồng.
+</p>
+<h2 id="Permissions">Triển khai Quyền của Trình cung cấp Nội dung</h2>
+<p>
+    Quyền và truy cập đối với tất cả khía cạnh trong hệ thống Android được mô tả chi tiết trong
+    chủ đề <a href="{@docRoot}guide/topics/security/security.html">Bảo mật và Quyền</a>.
+    Chủ đề <a href="{@docRoot}guide/topics/data/data-storage.html">Kho lưu trữ Dữ liệu</a> cũng
+    mô tả bảo mật và các quyền có hiệu lực cho nhiều loại kho lưu trữ khác nhau.
+    Nói tóm lại, các điểm quan trọng là:
+</p>
+<ul>
+    <li>
+        Theo mặc định, các tệp dữ liệu được lưu trữ trên bộ nhớ trong của thiết bị là dữ liệu riêng tư
+        đối với ứng dụng và trình cung cấp của bạn.
+    </li>
+    <li>
+        Các cơ sở dữ liệu {@link android.database.sqlite.SQLiteDatabase} mà bạn tạo là dữ liệu riêng tư
+        đối với ứng dụng và trình cung cấp của bạn.
+    </li>
+    <li>
+        Theo mặc định, các tệp dữ liệu mà bạn lưu vào bộ nhớ ngoài là dữ liệu <em>công khai</em> và
+        <em>đọc được công khai</em>. Bạn không thể sử dụng một trình cung cấp nội dung để hạn chế truy cập vào các tệp trong
+        bộ nhớ ngoài vì các ứng dụng khác có thể sử dụng lệnh gọi API khác để đọc và ghi chúng.
+    </li>
+    <li>
+        Các lệnh gọi phương pháp để mở hoặc tạo tệp hoặc cơ sở dữ liệu SQLite trên bộ nhớ trong
+        của thiết bị của bạn có thể cấp quyền truy cập đọc và ghi cho tất cả ứng dụng khác. Nếu bạn
+        sử dụng một tệp hoặc cơ sở dữ liệu nội bộ làm kho lưu giữ của trình cung cấp của mình, và bạn cấp quyền truy cập
+        "đọc được công khai" hoặc "ghi được công khai", quyền mà bạn đặt cho trình cung cấp của mình trong
+        bản kê khai của nó sẽ không bảo vệ dữ liệu của bạn. Quyền truy cập mặc định cho các tệp và cơ sở dữ liệu trong
+        bộ nhớ trong là "riêng tư", và đối với kho lưu giữ của trình cung cấp của mình, bạn không nên thay đổi điều này.
+    </li>
+</ul>
+<p>
+    Nếu bạn muốn sử dụng các quyền của trình cung cấp nội dung để kiểm soát truy cập vào dữ liệu của mình, khi đó bạn nên
+    lưu trữ dữ liệu của mình trong các tệp nội bộ, cơ sở dữ liệu SQLite, hoặc "đám mây" (ví dụ,
+    trên một máy chủ từ xa), và bạn nên giữ các tệp và cơ sở dữ liệu riêng tư cho ứng dụng của mình.
+</p>
+<h3>Triển khai quyền</h3>
+<p>
+    Tất cả ứng dụng đều có thể đọc từ hoặc ghi vào trình cung cấp của bạn, ngay cả khi dữ liệu liên quan
+    là dữ liệu riêng tư, vì theo mặc định, trình cung cấp của bạn không được đặt quyền. Để thay đổi điều này,
+    hãy đặt quyền cho trình cung cấp của bạn trong tệp bản kê khai của bạn bằng cách sử dụng các thuộc tính hoặc phần tử
+    con của phần tử <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+    &lt;provider&gt;</a></code>. Bạn có thể đặt quyền áp dụng cho toàn bộ trình cung cấp,
+    hoặc cho một số bảng, hoặc thậm chí cho một số bản ghi, hoặc cả ba.
+</p>
+<p>
+    Bạn định nghĩa các quyền cho trình cung cấp của bạn bằng một hoặc nhiều phần tử
+    <code><a href="{@docRoot}guide/topics/manifest/permission-element.html">
+    &lt;permission&gt;</a></code> trong tệp bản kê khai của bạn. Để
+    quyền là duy nhất cho trình cung cấp của bạn, hãy sử dụng phạm vi kiểu Java cho thuộc tính
+    <code><a href="{@docRoot}guide/topics/manifest/permission-element.html#nm">
+    android:name</a></code>. Ví dụ, đặt tên quyền đọc
+    <code>com.example.app.provider.permission.READ_PROVIDER</code>.
+
+</p>
+<p>
+    Danh sách sau liệt kê phạm vi các quyền của trình cung cấp, bắt đầu với các quyền
+    áp dụng cho toàn bộ trình cung cấp rồi mới đến các quyền chi tiết hơn.
+    Các quyền chi tiết hơn được ưu tiên so với các quyền có phạm vi rộng hơn:
+</p>
+<dl>
+    <dt>
+        Quyền đọc-ghi đơn lẻ ở cấp trình cung cấp
+    </dt>
+    <dd>
+        Một quyền kiểm soát cả quyền truy cập đọc và ghi cho toàn bộ trình cung cấp, được quy định
+        bằng thuộc tính <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+        android:permission</a></code> của phần tử
+        <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code>.
+    </dd>
+    <dt>
+        Quyền đọc ghi tách riêng ở cấp độ trình cung cấp
+    </dt>
+    <dd>
+        Một quyền đọc và một quyền ghi cho toàn bộ trình cung cấp. Bạn chỉ định chúng
+        bằng các thuộc tính <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">
+        android:readPermission</a></code> và
+        <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">
+        android:writePermission</a></code> của phần tử
+        <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code>. Chúng được ưu tiên so với quyền được yêu cầu bởi
+        <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+        android:permission</a></code>.
+    </dd>
+    <dt>
+        Quyền ở cấp đường dẫn
+    </dt>
+    <dd>
+        Quyền đọc, ghi, hoặc đọc/ghi cho một URI nội dung trong trình cung cấp của bạn. Bạn chỉ định
+        từng URI mà bạn muốn kiểm soát bằng một phần tử con
+        <code><a href="{@docRoot}guide/topics/manifest/path-permission-element.html">
+        &lt;path-permission&gt;</a></code> của phần tử
+        <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code>. Với mỗi một URI nội dung mà bạn chỉ định, bạn có thể chỉ định một
+        quyền đọc/ghi, quyền đọc, hoặc quyền ghi, hoặc cả ba. Quyền đọc và
+        quyền ghi được ưu tiên so với quyền đọc/ghi. Đồng thời, quyền ở cấp độ đường dẫn
+        sẽ được ưu tiên so với quyền ở cấp độ trình cung cấp.
+    </dd>
+    <dt>
+        Quyền tạm thời
+    </dt>
+    <dd>
+        Là cấp độ quyền cho phép truy cập tạm thời vào một ứng dụng, ngay cả khi ứng dụng
+        không có các quyền thường được yêu cầu. Tính năng truy cập
+        tạm thời làm giảm số quyền mà một ứng dụng phải yêu cầu trong
+        bản kê khai của mình. Khi bạn dùng đến các quyền tạm thời, những ứng dụng duy nhất mà cần
+        quyền "lâu dài" cho trình cung cấp của bạn là những ứng dụng liên tục truy cập tất cả
+        dữ liệu của bạn.
+        <p>
+            Xét các quyền bạn cần để triển khai một trình cung cấp và ứng dụng e-mail khi bạn
+            muốn cho phép một ứng dụng trình xem ảnh bên ngoài hiển thị các tài liệu đính kèm dạng ảnh từ trình cung cấp
+            của bạn. Để cấp cho trình xem ảnh quyền truy cập cần thiết mà không cần yêu cầu quyền,
+            hãy thiết lập các quyền tạm thời cho URI nội dung đối với ảnh. Thiết kế ứng dụng e-mail của bạn sao cho
+            khi người dùng muốn hiển thị một ảnh, ứng dụng sẽ gửi một ý định chứa URI nội dung
+            của ảnh và cờ cho phép tới trình xem ảnh. Trình xem ảnh khi đó có thể
+            truy vấn trình cung cấp e-mail của bạn để truy xuất ảnh, ngay cả khi trình xem không
+            có quyền đọc bình thường cho trình cung cấp của bạn.
+        </p>
+        <p>
+            Để sử dụng các quyền tạm thời, hoặc đặt thuộc tính
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+            android:grantUriPermissions</a></code> của phần tử
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> hoặc thêm một hoặc nhiều phần tử con
+            <code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
+            &lt;grant-uri-permission&gt;</a></code> vào phần tử
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> của bạn. Nếu bạn sử dụng các quyền tạm thời, bạn phải gọi
+            {@link android.content.Context#revokeUriPermission(Uri, int)
+            Context.revokeUriPermission()} bất cứ khi nào bạn gỡ bỏ hỗ trợ cho một URI nội dung khỏi
+            trình cung cấp của mình, và URI nội dung đó sẽ được liên kết với một quyền tạm thời.
+        </p>
+        <p>
+            Giá trị của thuộc tính sẽ xác định trình cung cấp của bạn được cho phép truy cập bao nhiêu.
+            Nếu thuộc tính được đặt thành <code>true</code>, khi đó hệ thống sẽ cấp quyền tạm thời
+            cho toàn bộ trình cung cấp của bạn, khống chế mọi quyền khác mà được yêu cầu bởi
+            quyền ở cấp độ trình cung cấp hoặc cấp độ đường dẫn của bạn.
+        </p>
+        <p>
+            Nếu cờ này được đặt thành <code>false</code>, khi đó bạn phải thêm các phần tử con
+            <code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
+            &lt;grant-uri-permission&gt;</a></code> vào phần tử
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> của mình. Mỗi phần tử con lại quy định URI nội dung hoặc
+            các URI mà truy cập tạm thời được cấp cho.
+        </p>
+        <p>
+            Để ủy quyền truy cập tạm thời cho một ứng dụng, ý định phải chứa
+            cờ {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION} hoặc cờ
+            {@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}, hoặc cả hai. Những quyền
+            này được đặt bằng phương pháp {@link android.content.Intent#setFlags(int) setFlags()}.
+        </p>
+        <p>
+            Nếu thuộc tính <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+            android:grantUriPermissions</a></code> không có mặt, giả sử rằng nó là
+            <code>false</code>.
+        </p>
+    </dd>
+</dl>
+
+
+
+<!-- The Provider Element -->
+<h2 id="ProviderElement">Phần tử &lt;provider&gt;</h2>
+<p>
+    Như các thành phần {@link android.app.Activity} và {@link android.app.Service},
+    một lớp con của {@link android.content.ContentProvider}
+    phải được định nghĩa trong tệp bản kê khai cho ứng dụng của nó bằng cách sử dụng phần tử
+    <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+    &lt;provider&gt;</a></code>. Hệ thống Android nhận thông tin sau từ
+    phần tử:
+<dl>
+    <dt>
+        Thẩm quyền
+        (<a href="{@docRoot}guide/topics/manifest/provider-element.html#auth">{@code
+        android:authorities}</a>)
+    </dt>
+    <dd>
+        Các tên biểu tượng nhận biết toàn bộ trình cung cấp trong hệ thống. Thuộc tính
+        này được mô tả chi tiết hơn trong phần
+        <a href="#ContentURI">Thiết kế URI Nội dung</a>.
+    </dd>
+    <dt>
+        Tên lớp của trình cung cấp
+        (<code>
+<a href="{@docRoot}guide/topics/manifest/provider-element.html#nm">android:name</a>
+        </code>)
+    </dt>
+    <dd>
+        Lớp triển khai {@link android.content.ContentProvider}. Lớp này
+        được mô tả chi tiết hơn trong phần
+        <a href="#ContentProvider">Triển khai Lớp Trình cung cấp Nội dung</a>.
+    </dd>
+    <dt>
+        Quyền
+    </dt>
+    <dd>
+        Những thuộc tính quy định quyền mà các ứng dụng khác phải có để truy cập
+        dữ liệu của trình cung cấp:
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+                android:grantUriPermssions</a></code>: Cờ quyền tạm thời.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+                android:permission</a></code>: Quyền đọc/ghi đơn lẻ đối với toàn bộ trình cung cấp.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">
+                android:readPermission</a></code>: Quyền đọc đối với toàn bộ trình cung cấp.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">
+                android:writePermission</a></code>: Quyền ghi đối với toàn bộ trình cung cấp.
+            </li>
+        </ul>
+        <p>
+            Các quyền và thuộc tính tương ứng của chúng được mô tả chi tiết hơn trong
+            phần
+            <a href="#Permissions">Triển khai Quyền của Trình cung cấp Nội dung</a>.
+        </p>
+    </dd>
+    <dt>
+        Thuộc tính khởi động và kiểm soát
+    </dt>
+    <dd>
+        Những thuộc tính này xác định cách và thời điểm hệ thống Android khởi động trình cung cấp, các
+        đặc tính tiến trình của trình cung cấp, và các thiết đặt về thời gian chạy:
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#enabled">
+                android:enabled</a></code>: Cờ cho phép hệ thống khởi động trình cung cấp.
+            </li>
+              <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#exported">
+                android:exported</a></code>: Cờ cho phép các ứng dụng sử dụng trình cung cấp này.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#init">
+                android:initOrder</a></code>: Thứ tự mà trình cung cấp nên được khởi động,
+                so với các trình cung cấp khác trong cùng tiến trình.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#multi">
+                android:multiProcess</a></code>: Cờ cho phép hệ thống khởi động trình cung cấp
+                trong cùng tiến trình như máy khách gọi.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#proc">
+                android:process</a></code>: Tên của tiến trình mà trình cung cấp
+                nên chạy trong đó.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#sync">
+                android:syncable</a></code>: Cờ cho biết rằng dữ liệu của trình cung cấp sẽ được
+                đồng bộ với dữ liệu trên một máy chủ.
+            </li>
+        </ul>
+        <p>
+            Các thuộc tính được lập tài liệu theo dõi đầy đủ trong chủ đề hướng dẫn nhà phát triển đối với phần tử
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code>
+.
+        </p>
+    </dd>
+    <dt>
+        Các thuộc tính thông tin
+    </dt>
+    <dd>
+        Một biểu tượng tùy chọn và nhãn cho trình cung cấp:
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#icon">
+                android:icon</a></code>: Một tài nguyên có thể vẽ chứa một biểu tượng cho trình cung cấp.
+                Biểu tượng xuất hiện bên cạnh nhãn của trình cung cấp trong danh sách ứng dụng trong
+                <em>Settings</em> &gt; <em>Apps</em> &gt; <em>All</em>.
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#label">
+                android:label</a></code>: Một nhãn thông tin mô tả trình cung cấp hoặc dữ liệu
+                của nó, hoặc cả hai. Nhãn xuất hiện trong danh sách ứng dụng trong
+                <em>Settings</em> &gt; <em>Apps</em> &gt; <em>All</em>.
+            </li>
+        </ul>
+        <p>
+            Các thuộc tính được lập tài liệu theo dõi đầy đủ trong chủ đề hướng dẫn nhà phát triển đối với phần tử
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code>.
+        </p>
+    </dd>
+</dl>
+
+<!-- Intent Access -->
+<h2 id="Intents">Ý định và Truy cập Dữ liệu</h2>
+<p>
+    Các ứng dụng có thể gián tiếp truy cập một trình cung cấp nội dung bằng một {@link android.content.Intent}.
+    Ứng dụng không gọi bất kỳ phương pháp nào của {@link android.content.ContentResolver} hoặc
+    {@link android.content.ContentProvider}. Thay vào đó, nó sẽ gửi một ý định để bắt đầu một hoạt động,
+    đây thường là một bộ phận trong ứng dụng của chính trình cung cấp. Hoạt động đích phụ trách
+    truy xuất và hiển thị dữ liệu trong UI của nó. Tùy vào hành động trong ý định, hoạt động
+    đích cũng có thể nhắc người dùng thực hiện sửa đổi dữ liệu của trình cung cấp.
+    Một ý định cũng có thể chứa dữ liệu "phụ thêm" mà hoạt động đích hiển thị
+    trong UI; khi đó người dùng có tùy chọn thay đổi dữ liệu này trước khi sử dụng nó để sửa đổi
+    dữ liệu trong trình cung cấp.
+</p>
+<p>
+
+</p>
+<p>
+    Bạn có thể muốn sử dụng truy cập ý định để giúp đảm bảo toàn vẹn dữ liệu. Trình cung cấp của bạn có thể phụ thuộc vào
+    việc chèn, cập nhật và xóa dữ liệu theo lô-gic nghiệp vụ được quy định chặt chẽ. Trong
+    trường hợp như vậy, việc cho phép các ứng dụng khác trực tiếp sửa đổi dữ liệu của bạn có thể dẫn đến dữ liệu
+    không hợp lệ. Nếu bạn muốn các nhà phát triển sử dụng truy cập ý định, hãy đảm bảo lập tài liệu theo dõi nó thật kỹ.
+    Giải thích với họ tại sao truy cập ý định sử dụng UI ứng dụng của chính bạn lại tốt hơn là cố gắng sửa đổi
+    dữ liệu bằng mã của họ.
+</p>
+<p>
+    Việc xử lý một ý định đến nhằm sửa đổi dữ liệu của trình cung cấp của bạn không khác với
+    việc xử lý các ý định khác. Bạn có thể tìm hiểu về việc sử dụng ý định bằng cách đọc chủ đề
+    <a href="{@docRoot}guide/components/intents-filters.html">Ý định và Bộ lọc Ý định</a>.
+</p>
diff --git a/docs/html-intl/intl/vi/guide/topics/providers/content-providers.jd b/docs/html-intl/intl/vi/guide/topics/providers/content-providers.jd
new file mode 100644
index 0000000..0b02337
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/providers/content-providers.jd
@@ -0,0 +1,108 @@
+page.title=Trình cung cấp Nội dung
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+
+<!-- In this document -->
+<h2>Chủ đề</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        Nội dung Cơ bản về Trình cung cấp Nội dung</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+        Tạo một Trình cung cấp Nội dung</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/calendar-provider.html">Trình cung cấp Lịch</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/contacts-provider.html">Trình cung cấp Danh bạ</a>
+    </li>
+</ol>
+
+    <!-- Related Samples -->
+<h2>Các Mẫu Liên quan</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}resources/samples/ContactManager/index.html">
+            Ứng dụng Trình quản lý Danh bạ</a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html">
+        "Con chạy (Danh bạ)"
+        </a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html">
+        "Con chạy (Điện thoại)"</a>
+        </li>
+        <li>
+            <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+            Trình điều hợp Đồng bộ Mẫu</a>
+        </li>
+    </ol>
+</div>
+</div>
+<p>
+    Trình cung cấp nội dung quản lý truy cập vào một tập dữ liệu cấu trúc. Chúng gói gọn
+    dữ liệu và cung cấp các cơ chế để định nghĩa bảo mật dữ liệu. Trình cung cấp nội dung là
+    giao diện tiêu chuẩn kết nối dữ liệu trong một tiến trình với mã đang chạy trong một tiến trình khác.
+</p>
+<p>
+    Khi bạn truy cập dữ liệu trong một trình cung cấp nội dung, bạn sử dụng đối tượng
+    {@link android.content.ContentResolver} trong
+    {@link android.content.Context} của ứng dụng của bạn để giao tiếp với trình cung cấp như một máy khách.
+    Đối tượng {@link android.content.ContentResolver} giao tiếp với đối tượng trình cung cấp, một
+    thực thể của lớp triển khai {@link android.content.ContentProvider}. Đối tượng
+    trình cung cấp nhận các yêu cầu dữ liệu từ máy khách, thực hiện hành động được yêu cầu, và
+    trả về kết quả.
+</p>
+<p>
+    Bạn không cần phát triển trình cung cấp của chính mình nếu không có ý định chia sẻ dữ liệu của bạn với
+    các ứng dụng khác. Tuy nhiên, bạn cần phải có trình cung cấp của chính mình để cung cấp các gợi ý tìm kiếm tùy chỉnh
+    trong ứng dụng của chính bạn. Bạn cũng cần phải có trình cung cấp của chính mình nếu muốn sao chép và
+    dán dữ liệu hoặc tệp phức tạp từ ứng dụng của bạn sang các ứng dụng khác.
+</p>
+<p>
+    Bản thân Android bao gồm các trình cung cấp nội dung chuyên quản lý dữ liệu như âm thanh, video, hình ảnh và
+    thông tin liên lạc cá nhân. Bạn có thể thấy một số được liệt kê trong tài liệu
+    tham khảo cho gói
+    <code><a href="{@docRoot}reference/android/provider/package-summary.html">android.provider</a>
+    </code>. Với một số hạn chế, những trình cung cấp này có thể truy cập vào bất kỳ ứng dụng
+    Android nào.
+</p><p>
+    Các chủ đề sau mô tả chi tiết hơn về các trình cung cấp nội dung:
+</p>
+<dl>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        Nội dung Cơ bản về Trình cung cấp Nội dung</a></strong>
+    </dt>
+    <dd>
+        Cách truy cập dữ liệu trong một trình cung cấp nội dung khi dữ liệu được tổ chức dưới dạng bảng.
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+        Tạo một Trình cung cấp Nội dung</a></strong>
+    </dt>
+    <dd>
+        Cách tạo trình cung cấp nội dung của chính bạn.
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+        Trình cung cấp Lịch</a></strong>
+    </dt>
+    <dd>
+        Cách truy cập Trình cung cấp Lịch mà là một bộ phận của nền tảng Android.
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/contacts-provider.html">
+        Trình cung cấp Danh bạ</a></strong>
+    </dt>
+    <dd>
+        Cách truy cập Trình cung cấp Danh bạ mà là một bộ phận của nền tảng Android.
+    </dd>
+</dl>
diff --git a/docs/html-intl/intl/vi/guide/topics/providers/document-provider.jd b/docs/html-intl/intl/vi/guide/topics/providers/document-provider.jd
new file mode 100644
index 0000000..30844d7
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/providers/document-provider.jd
@@ -0,0 +1,916 @@
+page.title=Khuôn khổ Truy cập Kho lưu trữ
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Trong tài liệu này
+ <a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
+        <span class="more">hiện nhiều hơn</span>
+        <span class="less" style="display:none">hiện ít hơn</span></a></h2>
+<ol id="toc44" class="hide-nested">
+    <li>
+        <a href="#overview">Tổng quan</a>
+    </li>
+    <li>
+        <a href="#flow">Dòng Điều khiển</a>
+    </li>
+    <li>
+        <a href="#client">Ghi một Ứng dụng Máy khách</a>
+        <ol>
+        <li><a href="#search">Tìm kiếm tài liệu</a></li>
+        <li><a href="#process">Kết quả tiến trình</a></li>
+        <li><a href="#metadata">Kiểm tra siêu dữ liệu tài liệu</a></li>
+        <li><a href="#open">Mở một tài liệu</a></li>
+        <li><a href="#create">Tạo một tài liệu mới</a></li>
+        <li><a href="#delete">Xóa một tài liệu</a></li>
+        <li><a href="#edit">Chỉnh sửa một tài liệu</a></li>
+        <li><a href="#permissions">Cố định các quyền</a></li>
+        </ol>
+    </li>
+    <li><a href="#custom">Ghi một Trình cung cấp Tài liệu Tùy chỉnh</a>
+        <ol>
+        <li><a href="#manifest">Bản kê khai</a></li>
+        <li><a href="#contract">Hợp đồng</a></li>
+        <li><a href="#subclass">Phân lớp con DocumentsProvider</a></li>
+        <li><a href="#security">Bảo mật</a></li>
+        </ol>
+    </li>
+
+</ol>
+<h2>Lớp khóa</h2>
+<ol>
+    <li>{@link android.provider.DocumentsProvider}</li>
+    <li>{@link android.provider.DocumentsContract}</li>
+</ol>
+
+<h2>Video</h2>
+
+<ol>
+    <li><a href="http://www.youtube.com/watch?v=zxHVeXbK1P4">
+DevBytes: Khuôn khổ Truy cập Kho lưu trữ Android 4.4: Trình cung cấp</a></li>
+     <li><a href="http://www.youtube.com/watch?v=UFj9AEz0DHQ">
+DevBytes: Khuôn khổ Truy cập Kho lưu trữ Android 4.4: Máy khách</a></li>
+</ol>
+
+
+<h2>Mã Ví dụ</h2>
+
+<ol>
+    <li><a href="{@docRoot}samples/StorageProvider/index.html">
+Trình cung cấp Lưu trữ</a></li>
+     <li><a href="{@docRoot}samples/StorageClient/index.html">
+StorageClient</a></li>
+</ol>
+
+<h2>Xem thêm</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        Nội dung Cơ bản về Trình cung cấp Nội dung
+        </a>
+    </li>
+</ol>
+
+</div>
+</div>
+
+
+<p>Android 4.4 (API mức 19) giới thiệu Khuôn khổ Truy cập Kho lưu trữ (SAF). SAF
+ giúp người dùng đơn giản hóa việc duyệt và mở tài liệu, hình ảnh và các tệp khác
+giữa tất cả trình cung cấp lưu trữ tài liệu mà họ thích. UI tiêu chuẩn, dễ sử dụng
+cho phép người dùng duyệt tệp và truy cập hoạt động gần đây một cách nhất quán giữa các ứng dụng và trình cung cấp.</p>
+
+<p>Dịch vụ lưu trữ đám mây hoặc cục bộ có thể tham gia vào hệ sinh thái này bằng cách triển khai một
+{@link android.provider.DocumentsProvider} để gói gọn các dịch vụ của mình. Những ứng dụng
+máy khách cần truy cập vào tài liệu của một trình cung cấp có thể tích hợp với SAF chỉ bằng một vài
+dòng mã.</p>
+
+<p>SAF bao gồm:</p>
+
+<ul>
+<li><strong>Trình cung cấp tài liệu</strong>&mdash;Một trình cung cấp nội dung cho phép một
+dịch vụ lưu trữ (chẳng hạn như Google Drive) phát hiện các tệp mà nó quản lý. Trình cung cấp tài liệu được
+triển khai thành một lớp con của lớp {@link android.provider.DocumentsProvider}.
+Sơ đồ tài liệu-trình cung cấp sẽ được dựa trên một phân cấp tệp truyền thống,
+cho dù cách thức trình cung cấp tài liệu của bạn trực tiếp lưu trữ dữ liệu là hoàn toàn do bạn.
+Nền tảng Android bao gồm một vài trình cung cấp tài liệu tích hợp, chẳng hạn như
+Downloads, Images, và Videos.</li>
+
+<li><strong>Ứng dụng máy khách</strong>&mdash;Một ứng dụng tùy chỉnh có chức năng gọi ra ý định
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} và/hoặc
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT} và nhận các tệp
+được trả về bởi trình cung cấp tài liệu.</li>
+
+<li><strong>Bộ chọn</strong>&mdash;Một UI hệ thống cho phép người dùng truy cập tài liệu từ tất cả
+trình cung cấp tài liệu mà thỏa mãn các tiêu chí tìm kiếm của ứng dụng máy khách.</li>
+</ul>
+
+<p>Một số tính năng được SAF cung cấp bao gồm:</p>
+<ul>
+<li>Cho phép người dùng duyệt nội dung từ tất cả trình cung cấp tài liệu, không chỉ một ứng dụng duy nhất.</li>
+<li>Giúp ứng dụng của bạn có thể có quyền truy cập lâu dài, cố định vào
+ các tài liệu được sở hữu bởi một trình cung cấp tài liệu. Thông qua truy cập này, người dùng có thể thêm, chỉnh sửa,
+ lưu và xóa tệp trên trình cung cấp.</li>
+<li>Hỗ trợ nhiều tài khoản người dùng và các phần gốc tạm thời chẳng hạn như trình cung cấp
+bộ nhớ USB, nó chỉ xuất hiện nếu ổ đĩa được cắm vào. </li>
+</ul>
+
+<h2 id ="overview">Tổng quan</h2>
+
+<p>SAF tập trung xoay quanh một trình cung cấp nội dung là một lớp con
+của lớp {@link android.provider.DocumentsProvider}. Trong một <em>trình cung cấp tài liệu</em>, dữ liệu được
+cấu trúc thành một phân cấp tệp truyền thống:</p>
+<p><img src="{@docRoot}images/providers/storage_datamodel.png" alt="data model" /></p>
+<p class="img-caption"><strong>Hình 1.</strong> Mô hình dữ liệu của trình cung cấp tài liệu. Một Phần gốc chỉ đến một Tài liệu duy nhất,
+sau đó nó bắt đầu xòe ra toàn bộ cây.</p>
+
+<p>Lưu ý điều sau đây:</p>
+<ul>
+
+<li>Mỗi một trình cung cấp tài liệu sẽ báo cáo một hoặc nhiều
+"phần gốc" là điểm bắt đầu khám phá cây tài liệu.
+Mỗi phần gốc có một {@link android.provider.DocumentsContract.Root#COLUMN_ROOT_ID} duy nhất,
+và nó trỏ đến một tài liệu (thư mục)
+biểu diễn nội dung bên dưới phần gốc đó.
+Phần gốc có thể linh hoạt theo thiết kế để hỗ trợ các trường hợp sử dụng như nhiều tài khoản,
+thiết bị lưu trữ USB tạm thời, hoặc đăng nhập/đăng xuất người dùng.</li>
+
+<li>Dưới mỗi phần gốc là một tài liệu đơn lẻ. Tài liệu đó sẽ trỏ tới 1 đến <em>N</em> tài liệu,
+mỗi tài liệu lại có thể trỏ tới 1 đến <em>N</em> tài liệu khác. </li>
+
+<li>Mỗi bộ nhớ phụ trợ phủ bề mặt
+các tệp và thư mục riêng lẻ bằng cách tham chiếu chúng bằng một
+{@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID} duy nhất.
+ID của tài liệu phải là duy nhất và không thay đổi sau khi được phát hành, do chúng được sử dụng để cấp URI
+không thay đổi giữa các lần khởi động lại thiết bị.</li>
+
+
+<li>Tài liệu có thể là một tệp mở được (có một kiểu MIME cụ thể), hoặc một
+thư mục chứa các tài liệu bổ sung (có kiểu MIME 
+{@link android.provider.DocumentsContract.Document#MIME_TYPE_DIR}).</li>
+
+<li>Mỗi tài liệu có thể có các khả năng khác nhau như được mô tả bởi
+{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS COLUMN_FLAGS}.
+Ví dụ, {@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_WRITE},
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE}, và
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_THUMBNAIL}.
+{@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID} cũng có thể
+có trong nhiều thư mục.</li>
+</ul>
+
+<h2 id="flow">Dòng Điều khiển</h2>
+<p>Như nêu trên, mô hình dữ liệu của trình cung cấp tài liệu được dựa trên một phân cấp
+tệp truyền thống. Tuy nhiên, bạn có thể thực tế lưu trữ dữ liệu của mình bằng bất kỳ cách nào mà mình thích, miễn
+là nó có thể được truy cập thông qua API {@link android.provider.DocumentsProvider}. Ví dụ, bạn
+có thể sử dụng kho lưu trữ đám mây dựa trên tag cho dữ liệu của mình.</p>
+
+<p>Hình 2 minh họa một ví dụ về cách mà một ứng dụng ảnh có thể sử dụng SAF
+để truy cập dữ liệu được lưu trữ:</p>
+<p><img src="{@docRoot}images/providers/storage_dataflow.png" alt="app" /></p>
+
+<p class="img-caption"><strong>Hình 2.</strong> Dòng Khuôn khổ Truy cập Kho lưu trữ</p>
+
+<p>Lưu ý điều sau đây:</p>
+<ul>
+
+<li>Trong SAF, trình cung cấp và máy khách không tương tác
+trực tiếp với nhau. Một máy khách yêu cầu quyền để tương tác
+với tệp (cụ thể là quyền đọc, chỉnh sửa, tạo hoặc xóa tệp).</li>
+
+<li>Tương tác bắt đầu khi một ứng dụng (trong ví dụ này này một ứng dụng ảnh) thể hiện ý định 
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} hoặc {@link android.content.Intent#ACTION_CREATE_DOCUMENT}. Ý định có thể bao gồm các bộ lọc
+để cụ thể hơn các tiêu chí&mdash;ví dụ, "cấp cho tôi tất cả tệp mở được
+có kiểu MIME là 'image'."</li>
+
+<li>Sau khi ý định thể hiện, bộ chọn của hệ thống sẽ đi đến từng trình cung cấp được đăng ký
+và hiển thị cho người dùng xem các phần gốc nội dung khớp với tiêu chí.</li>
+
+<li>Bộ chọn cấp cho người dùng một giao diện tiêu chuẩn để truy cập tài liệu, mặc
+dù các trình cung cấp tài liệu liên quan có thể rất khác nhau. Ví dụ, hình 2
+minh họa một trình cung cấp Google Drive, một trình cung cấp USB, và một trình cung cấp đám mây.</li>
+</ul>
+
+<p>Hình 3 minh họa một bộ chọn mà trong đó một người dùng đang tìm kiếm hình ảnh đã chọn một
+tài khoản Google Drive:</p>
+
+<p><img src="{@docRoot}images/providers/storage_picker.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
+
+<p class="img-caption"><strong>Hình 3.</strong> Bộ chọn</p>
+
+<p>Khi người dùng chọn Google Drive, hình ảnh được hiển thị như minh họa trong
+hình 4. Từ điểm đó trở đi, người dùng có thể tương tác với chúng theo bất kỳ cách nào
+được hỗ trợ bởi trình cung cấp và ứng dụng máy khách.
+
+<p><img src="{@docRoot}images/providers/storage_photos.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
+
+<p class="img-caption"><strong>Hình 4.</strong> Hình ảnh</p>
+
+<h2 id="client">Ghi một Ứng dụng Máy khách</h2>
+
+<p>Trên phiên bản Android 4.3 và thấp hơn, nếu bạn muốn ứng dụng của mình truy xuất một tệp từ một ứng dụng
+khác, nó phải gọi ra một ý định chẳng hạn như {@link android.content.Intent#ACTION_PICK}
+hay {@link android.content.Intent#ACTION_GET_CONTENT}. Khi đó, người dùng phải chọn
+một ứng dụng duy nhất mà từ đó họ chọn một tệp và ứng dụng được chọn phải cung cấp một
+giao diện người dùng để người dùng duyệt và chọn từ các tệp có sẵn. </p>
+
+<p>Trên phiên bản Android 4.4 trở lên, bạn có thêm một tùy chọn là sử dụng ý định
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT},
+nó hiển thị một UI bộ chọn được điều khiển bởi hệ thống, cho phép người dùng
+duyệt tất cả tệp mà các ứng dụng khác đã cung cấp. Từ UI duy nhất này, người dùng
+có thể chọn một tệp từ bất kỳ ứng dụng nào được hỗ trợ.</p>
+
+<p>{@link android.content.Intent#ACTION_OPEN_DOCUMENT} không
+nhằm mục đích thay thế cho {@link android.content.Intent#ACTION_GET_CONTENT}.
+Bạn nên sử dụng cái nào sẽ phụ thuộc vào nhu cầu của ứng dụng của bạn:</p>
+
+<ul>
+<li>Sử dụng {@link android.content.Intent#ACTION_GET_CONTENT} nếu bạn muốn ứng dụng của mình
+chỉ đơn thuần đọc/nhập dữ liệu. Bằng cách này, ứng dụng nhập một bản sao dữ liệu,
+chẳng hạn như một tệp hình ảnh.</li>
+
+<li>Sử dụng {@link android.content.Intent#ACTION_OPEN_DOCUMENT} nếu bạn muốn ứng dụng
+của mình có quyền truy cập lâu dài, cố định vào các tài liệu được sở hữu bởi một
+trình cung cấp tài liệu. Ví dụ như trường hợp một ứng dụng chỉnh sửa ảnh cho phép người dùng chỉnh sửa
+các hình ảnh được lưu trữ trong một trình cung cấp tài liệu. </li>
+
+</ul>
+
+
+<p>Phần này mô tả cách ghi các ứng dụng máy khách dựa trên
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} và
+các ý định {@link android.content.Intent#ACTION_CREATE_DOCUMENT}.</p>
+
+
+<h3 id="search">Tìm kiếm tài liệu</h3>
+
+<p>
+Đoạn mã HTML sau sử dụng {@link android.content.Intent#ACTION_OPEN_DOCUMENT}
+để tìm kiếm các trình cung cấp tài liệu mà
+chứa tệp hình ảnh:</p>
+
+<pre>private static final int READ_REQUEST_CODE = 42;
+...
+/**
+ * Fires an intent to spin up the &quot;file chooser&quot; UI and select an image.
+ */
+public void performFileSearch() {
+
+    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's file
+    // browser.
+    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as a
+    // file (as opposed to a list of contacts or timezones)
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Filter to show only images, using the image MIME data type.
+    // If one wanted to search for ogg vorbis files, the type would be &quot;audio/ogg&quot;.
+    // To search for all documents available via installed storage providers,
+    // it would be &quot;*/*&quot;.
+    intent.setType(&quot;image/*&quot;);
+
+    startActivityForResult(intent, READ_REQUEST_CODE);
+}</pre>
+
+<p>Lưu ý điều sau đây:</p>
+<ul>
+<li>Khi ứng dụng thể hiện ý định {@link android.content.Intent#ACTION_OPEN_DOCUMENT}
+, nó sẽ khởi chạy một bộ chọn để hiển thị tất cả trình cung cấp tài liệu khớp với tiêu chí.</li>
+
+<li>Thêm thể loại {@link android.content.Intent#CATEGORY_OPENABLE} vào
+ý định sẽ lọc kết quả để chỉ hiển thị những tài liệu có thể mở được, chẳng hạn như tệp hình ảnh.</li>
+
+<li>Câu lệnh {@code intent.setType("image/*")} sẽ lọc thêm để
+chỉ hiển thị những tài liệu có kiểu dữ liệu MIME hình ảnh.</li>
+</ul>
+
+<h3 id="results">Kết quả Tiến trình</h3>
+
+<p>Sau khi người dùng chọn một tài liệu trong bộ chọn,
+{@link android.app.Activity#onActivityResult onActivityResult()} sẽ được gọi.
+URI tro tới tài liệu được chọn sẽ nằm trong tham số {@code resultData}
+. Trích xuất UI bằng cách sử dụng {@link android.content.Intent#getData getData()}.
+Sau khi có nó, bạn có thể sử dụng nó để truy xuất tài liệu mà người dùng muốn. Ví
+dụ:</p>
+
+<pre>&#64;Override
+public void onActivityResult(int requestCode, int resultCode,
+        Intent resultData) {
+
+    // The ACTION_OPEN_DOCUMENT intent was sent with the request code
+    // READ_REQUEST_CODE. If the request code seen here doesn't match, it's the
+    // response to some other intent, and the code below shouldn't run at all.
+
+    if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
+        // The document selected by the user won't be returned in the intent.
+        // Instead, a URI to that document will be contained in the return intent
+        // provided to this method as a parameter.
+        // Pull that URI using resultData.getData().
+        Uri uri = null;
+        if (resultData != null) {
+            uri = resultData.getData();
+            Log.i(TAG, "Uri: " + uri.toString());
+            showImage(uri);
+        }
+    }
+}
+</pre>
+
+<h3 id="metadata">Kiểm tra siêu dữ liệu tài liệu</h3>
+
+<p>Sau khi có URI cho một tài liệu, bạn có quyền truy cập siêu dữ liệu của nó. Đoạn mã HTML
+này bắt siêu dữ liệu cho một tài liệu được quy định bởi URI, và ghi lại nó:</p>
+
+<pre>public void dumpImageMetaData(Uri uri) {
+
+    // The query, since it only applies to a single document, will only return
+    // one row. There's no need to filter, sort, or select fields, since we want
+    // all fields for one document.
+    Cursor cursor = getActivity().getContentResolver()
+            .query(uri, null, null, null, null, null);
+
+    try {
+    // moveToFirst() returns false if the cursor has 0 rows.  Very handy for
+    // &quot;if there's anything to look at, look at it&quot; conditionals.
+        if (cursor != null &amp;&amp; cursor.moveToFirst()) {
+
+            // Note it's called &quot;Display Name&quot;.  This is
+            // provider-specific, and might not necessarily be the file name.
+            String displayName = cursor.getString(
+                    cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
+            Log.i(TAG, &quot;Display Name: &quot; + displayName);
+
+            int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE);
+            // If the size is unknown, the value stored is null.  But since an
+            // int can't be null in Java, the behavior is implementation-specific,
+            // which is just a fancy term for &quot;unpredictable&quot;.  So as
+            // a rule, check if it's null before assigning to an int.  This will
+            // happen often:  The storage API allows for remote files, whose
+            // size might not be locally known.
+            String size = null;
+            if (!cursor.isNull(sizeIndex)) {
+                // Technically the column stores an int, but cursor.getString()
+                // will do the conversion automatically.
+                size = cursor.getString(sizeIndex);
+            } else {
+                size = &quot;Unknown&quot;;
+            }
+            Log.i(TAG, &quot;Size: &quot; + size);
+        }
+    } finally {
+        cursor.close();
+    }
+}
+</pre>
+
+<h3 id="open-client">Mở một tài liệu</h3>
+
+<p>Sau khi có URI cho một tài liệu, bạn có thể mở nó hoặc làm bất kỳ điều gì
+mà bạn muốn.</p>
+
+<h4>Bitmap</h4>
+
+<p>Sau đây là một ví dụ về cách bạn có thể mở một {@link android.graphics.Bitmap}:</p>
+
+<pre>private Bitmap getBitmapFromUri(Uri uri) throws IOException {
+    ParcelFileDescriptor parcelFileDescriptor =
+            getContentResolver().openFileDescriptor(uri, "r");
+    FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
+    Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
+    parcelFileDescriptor.close();
+    return image;
+}
+</pre>
+
+<p>Lưu ý rằng bạn không nên thực hiện thao tác này trên luồng UI. Thực hiện điều này dưới
+nền bằng cách sử dụng {@link android.os.AsyncTask}. Sau khi mở bitmap, bạn có thể
+hiển thị nó trong một {@link android.widget.ImageView}.
+</p>
+
+<h4>Nhận một InputStream</h4>
+
+<p>Sau đây là một ví dụ về cách mà bạn có thể nhận một {@link java.io.InputStream} từ URI. Trong đoạn mã HTML
+này, các dòng tệp đang được đọc thành một xâu:</p>
+
+<pre>private String readTextFromUri(Uri uri) throws IOException {
+    InputStream inputStream = getContentResolver().openInputStream(uri);
+    BufferedReader reader = new BufferedReader(new InputStreamReader(
+            inputStream));
+    StringBuilder stringBuilder = new StringBuilder();
+    String line;
+    while ((line = reader.readLine()) != null) {
+        stringBuilder.append(line);
+    }
+    fileInputStream.close();
+    parcelFileDescriptor.close();
+    return stringBuilder.toString();
+}
+</pre>
+
+<h3 id="create">Tạo một tài liệu mới</h3>
+
+<p>Ứng dụng của bạn có thể tạo một tài liệu mới trong một trình cung cấp tài liệu bằng cách sử dụng ý định
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT}
+. Để tạo một tệp, bạn cấp cho ý định của mình một kiểu MIME và tên tệp, và
+khởi chạy nó bằng một mã yêu cầu duy nhất. Phần còn lại sẽ được làm hộ bạn:</p>
+
+
+<pre>
+// Here are some examples of how you might call this method.
+// The first parameter is the MIME type, and the second parameter is the name
+// of the file you are creating:
+//
+// createFile("text/plain", "foobar.txt");
+// createFile("image/png", "mypicture.png");
+
+// Unique request code.
+private static final int WRITE_REQUEST_CODE = 43;
+...
+private void createFile(String mimeType, String fileName) {
+    Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as
+    // a file (as opposed to a list of contacts or timezones).
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Create a file with the requested MIME type.
+    intent.setType(mimeType);
+    intent.putExtra(Intent.EXTRA_TITLE, fileName);
+    startActivityForResult(intent, WRITE_REQUEST_CODE);
+}
+</pre>
+
+<p>Sau khi tạo một tài liệu mới, bạn có thể nhận URI của tài liệu trong
+{@link android.app.Activity#onActivityResult onActivityResult()}, sao cho bạn
+có thể tiếp tục ghi nó.</p>
+
+<h3 id="delete">Xóa một tài liệu</h3>
+
+<p>Nếu bạn có URI cho một tài liệu và
+{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS Document.COLUMN_FLAGS}
+của tài liệu chứa
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE SUPPORTS_DELETE},
+bạn có thể xóa tài liệu đó. Ví dụ:</p>
+
+<pre>
+DocumentsContract.deleteDocument(getContentResolver(), uri);
+</pre>
+
+<h3 id="edit">Chỉnh sửa một tài liệu</h3>
+
+<p>Bạn có thể sử dụng SAF để chỉnh sửa một tài liệu văn bản ngay tại chỗ.
+Đoạn mã HTML này thể hiện
+ý định {@link android.content.Intent#ACTION_OPEN_DOCUMENT} và sử dụng
+thể loại {@link android.content.Intent#CATEGORY_OPENABLE} để chỉ hiển thị
+những tài liệu có thể mở được. Nó lọc thêm để chỉ hiển thị những tệp văn bản:</p>
+
+<pre>
+private static final int EDIT_REQUEST_CODE = 44;
+/**
+ * Open a file for writing and append some text to it.
+ */
+ private void editDocument() {
+    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's
+    // file browser.
+    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as a
+    // file (as opposed to a list of contacts or timezones).
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Filter to show only text files.
+    intent.setType(&quot;text/plain&quot;);
+
+    startActivityForResult(intent, EDIT_REQUEST_CODE);
+}
+</pre>
+
+<p>Tiếp theo, từ {@link android.app.Activity#onActivityResult onActivityResult()}
+(xem <a href="#results">Kết quả tiến trình</a>) bạn có thể gọi mã để thực hiện chỉnh sửa.
+Đoạn mã HTML sau nhận được một {@link java.io.FileOutputStream}
+từ {@link android.content.ContentResolver}. Theo mặc định, nó sử dụng chế độ “ghi”.
+Cách tốt nhất là yêu cầu lượng quyền truy cập bạn cần ở mức ít nhất, vì thế đừng yêu cầu
+quyền đọc/ghi nếu bạn chỉ cần quyền ghi:</p>
+
+<pre>private void alterDocument(Uri uri) {
+    try {
+        ParcelFileDescriptor pfd = getActivity().getContentResolver().
+                openFileDescriptor(uri, "w");
+        FileOutputStream fileOutputStream =
+                new FileOutputStream(pfd.getFileDescriptor());
+        fileOutputStream.write(("Overwritten by MyCloud at " +
+                System.currentTimeMillis() + "\n").getBytes());
+        // Let the document provider know you're done by closing the stream.
+        fileOutputStream.close();
+        pfd.close();
+    } catch (FileNotFoundException e) {
+        e.printStackTrace();
+    } catch (IOException e) {
+        e.printStackTrace();
+    }
+}</pre>
+
+<h3 id="permissions">Cố định các quyền</h3>
+
+<p>Khi ứng dụng của bạn mở một tệp để đọc hoặc ghi, hệ thống sẽ cấp cho
+ứng dụng của bạn một quyền URI được cấp cho tệp đó. Quyền này sẽ kéo dài tới khi thiết bị của bạn khởi động lại.
+Nhưng giả sử ứng dụng của bạn là một ứng dụng chỉnh sửa hình ảnh, và bạn muốn người dùng có thể
+truy cập 5 hình ảnh cuối cùng mà họ đã chỉnh sửa, trực tiếp từ ứng dụng của bạn. Nếu thiết bị của người dùng
+đã khởi động lại, bạn sẽ phải gửi người dùng trở lại bộ chọn hệ thống để tìm
+các tệp đó, đây rõ ràng không phải là cách lý tưởng.</p>
+
+<p>Để tránh điều này xảy ra, bạn có thể cố định các quyền mà hệ thống
+cấp cho ứng dụng của bạn. Ứng dụng của bạn sẽ "nhận" cấp quyền URI có thể cố định
+mà hệ thống cung cấp một cách hiệu quả. Điều này cho phép người dùng có quyền liên tục truy cập các tệp đó
+thông qua ứng dụng của bạn, ngay cả khi thiết bị đã bị khởi động lại:</p>
+
+
+<pre>final int takeFlags = intent.getFlags()
+            &amp; (Intent.FLAG_GRANT_READ_URI_PERMISSION
+            | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+// Check for the freshest data.
+getContentResolver().takePersistableUriPermission(uri, takeFlags);</pre>
+
+<p>Còn một bước cuối cùng. Bạn có thể đã lưu các
+URI gần đây nhất mà ứng dụng của bạn đã truy cập, nhưng chúng còn thể không còn hợp lệ&mdash;một ứng dụng khác
+có thể đã xóa hoặc sửa đổi tài liệu. Vì thế, bạn luôn nên gọi
+{@code getContentResolver().takePersistableUriPermission()} để kiểm tra
+dữ liệu mới nhất.</p>
+
+<h2 id="custom">Ghi một Trình cung cấp Tài liệu Tùy chỉnh</h2>
+
+<p>
+Nếu bạn đang phát triển một ứng dụng cung cấp dịch vụ lưu trữ cho tệp (chẳng hạn như
+một dịch vụ lưu trữ đám mây), bạn có thể cung cấp các tệp của mình thông qua
+SAF bằng cách ghi một trình cung cấp tài liệu tùy chỉnh.  Phần này mô tả cách làm điều
+này.</p>
+
+
+<h3 id="manifest">Bản kê khai</h3>
+
+<p>Để triển khai một trình cung cấp tài liệu tùy chỉnh, hãy thêm nội dung sau vào bản kê khai
+của ứng dụng của bạn:</p>
+<ul>
+
+<li>Một mục tiêu API mức 19 hoặc cao hơn.</li>
+
+<li>Một phần tử <code>&lt;provider&gt;</code> khai báo trình cung cấp lưu trữ
+tùy chỉnh của bạn. </li>
+
+<li>Tên của trình cung cấp của bạn, là tên lớp của nó, bao gồm tên gói.
+Ví dụ: <code>com.example.android.storageprovider.MyCloudProvider</code>.</li>
+
+<li>Tên thẩm quyền của bạn, tức là tên gói của bạn (trong ví dụ này là
+<code>com.example.android.storageprovider</code>) cộng với kiểu của trình cung cấp nội dung
+(<code>documents</code>). Ví dụ, {@code com.example.android.storageprovider.documents}.</li>
+
+<li>Thuộc tính <code>android:exported</code> được đặt thành <code>&quot;true&quot;</code>.
+Bạn phải xuất trình cung cấp của mình để các ứng dụng khác có thể thấy nó.</li>
+
+<li>Thuộc tính <code>android:grantUriPermissions</code> được đặt thành
+<code>&quot;true&quot;</code>. Thiết đặt này cho phép hệ thống cấp cho các ứng dụng khác quyền truy cập
+vào nội dung trong trình cung cấp của bạn. Để thảo luận về cách cố định quyền được cấp cho
+một tài liệu cụ thể, hãy xem phần<a href="#permissions">Cố định các quyền</a>.</li>
+
+<li>Quyền {@code MANAGE_DOCUMENTS}. Theo mặc định, một trình cung cấp sẽ có sẵn
+đối với mọi người. Việc thêm quyền này sẽ hạn chế trình cung cấp của bạn vào hệ thống.
+Hạn chế này có ý nghĩa quan trọng đối với vấn đề bảo mật.</li>
+
+<li>Thuộc tính {@code android:enabled} được đặt thành một giá trị boolean được định nghĩa trong một tệp
+tài nguyên. Mục đích của thuộc tính này là để vô hiệu hóa trình cung cấp trên các thiết bị chạy phiên bản Android 4.3 hoặc thấp hơn.
+Ví dụ, {@code android:enabled="@bool/atLeastKitKat"}. Bên
+cạnh việc nêu thuộc tính này trong bản kê khai, bạn cần làm như sau:
+<ul>
+<li>Trong tệp tài nguyên {@code bool.xml} của bạn bên dưới {@code res/values/}, hãy thêm
+dòng sau: <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;false&lt;/bool&gt;</pre></li>
+
+<li>Trong tệp tài nguyên {@code bool.xml} của bạn bên dưới {@code res/values-v19/}, hãy thêm
+dòng sau: <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;true&lt;/bool&gt;</pre></li>
+</ul></li>
+
+<li>Một bộ lọc ý định chứa hành động
+{@code android.content.action.DOCUMENTS_PROVIDER}, sao cho trình cung cấp của bạn
+xuất hiện trong bộ chọn khi hệ thống tìm kiếm trình cung cấp.</li>
+
+</ul>
+<p>Sau đây là các đoạn trích từ một bản kê khai mẫu chứa một trình cung cấp:</p>
+
+<pre>&lt;manifest... &gt;
+    ...
+    &lt;uses-sdk
+        android:minSdkVersion=&quot;19&quot;
+        android:targetSdkVersion=&quot;19&quot; /&gt;
+        ....
+        &lt;provider
+            android:name=&quot;com.example.android.storageprovider.MyCloudProvider&quot;
+            android:authorities=&quot;com.example.android.storageprovider.documents&quot;
+            android:grantUriPermissions=&quot;true&quot;
+            android:exported=&quot;true&quot;
+            android:permission=&quot;android.permission.MANAGE_DOCUMENTS&quot;
+            android:enabled=&quot;&#64;bool/atLeastKitKat&quot;&gt;
+            &lt;intent-filter&gt;
+                &lt;action android:name=&quot;android.content.action.DOCUMENTS_PROVIDER&quot; /&gt;
+            &lt;/intent-filter&gt;
+        &lt;/provider&gt;
+    &lt;/application&gt;
+
+&lt;/manifest&gt;</pre>
+
+<h4 id="43">Hỗ trợ các thiết bị chạy phiên bản Android 4.3 và thấp hơn</h4>
+
+<p>Ý định
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} chỉ có sẵn
+trên các thiết bị chạy phiên bản Android 4.4 trở lên.
+Nếu bạn muốn ứng dụng của mình hỗ trợ {@link android.content.Intent#ACTION_GET_CONTENT}
+để tạo điều kiện cho các thiết bị đang chạy phiên bản Android 4.3 và thấp hơn, bạn nên
+vô hiệu hóa bộ lọc ý định {@link android.content.Intent#ACTION_GET_CONTENT} trong
+bản kê khai của bạn cho các thiết bị chạy phiên bản Android 4.4 trở lên. Một
+trình cung cấp tài liệu và {@link android.content.Intent#ACTION_GET_CONTENT} nên được xem xét
+ loại trừ lẫn nhau. Nếu bạn hỗ trợ cả hai đồng thời, ứng dụng của bạn sẽ
+xuất hiện hai lần trong UI của bộ chọn hệ thống, đưa ra hai cách khác nhau để truy cập
+dữ liệu đã lưu của bạn. Điều này có thể khiến người dùng bị nhầm lẫn.</p>
+
+<p>Sau đây là cách được khuyến cáo để vô hiệu hóa bộ lọc ý định
+{@link android.content.Intent#ACTION_GET_CONTENT} đối với các thiết bị
+chạy phiên bản Android 4.4 hoặc cao hơn:</p>
+
+<ol>
+<li>Trong tệp tài nguyên {@code bool.xml} của bạn bên dưới {@code res/values/}, hãy thêm
+dòng sau: <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;true&lt;/bool&gt;</pre></li>
+
+<li>Trong tệp tài nguyên {@code bool.xml} của bạn bên dưới {@code res/values-v19/}, hãy thêm
+dòng sau: <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;false&lt;/bool&gt;</pre></li>
+
+<li>Thêm một
+<a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">bí danh
+hoạt động</a> để vô hiệu hóa bộ lọc ý định {@link android.content.Intent#ACTION_GET_CONTENT}
+đối với các phiên bản 4.4 (API mức 19) trở lên. Ví dụ:
+
+<pre>
+&lt;!-- This activity alias is added so that GET_CONTENT intent-filter
+     can be disabled for builds on API level 19 and higher. --&gt;
+&lt;activity-alias android:name=&quot;com.android.example.app.MyPicker&quot;
+        android:targetActivity=&quot;com.android.example.app.MyActivity&quot;
+        ...
+        android:enabled=&quot;@bool/atMostJellyBeanMR2&quot;&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name=&quot;android.intent.action.GET_CONTENT&quot; /&gt;
+        &lt;category android:name=&quot;android.intent.category.OPENABLE&quot; /&gt;
+        &lt;category android:name=&quot;android.intent.category.DEFAULT&quot; /&gt;
+        &lt;data android:mimeType=&quot;image/*&quot; /&gt;
+        &lt;data android:mimeType=&quot;video/*&quot; /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity-alias&gt;
+</pre>
+</li>
+</ol>
+<h3 id="contract">Hợp đồng</h3>
+
+<p>Thường khi bạn ghi một trình cung cấp nội dung tùy chỉnh, một trong những tác vụ đó là
+triển khai các lớp hợp đồng như được mô tả trong hướng dẫn cho nhà phát triển
+<a href="{@docRoot}guide/topics/providers/content-provider-creating.html#ContractClass">
+Trình cung cấp Nội dung</a>. Lớp hợp đồng là một lớp {@code public final} mà
+chứa các định nghĩa hằng số cho URI, tên cột, kiểu MIME và
+siêu dữ liệu khác liên quan tới trình cung cấp. SAF
+cung cấp những lớp hợp đồng này cho bạn, vì thế bạn không cần tự
+ghi:</p>
+
+<ul>
+   <li>{@link android.provider.DocumentsContract.Document}</li>
+   <li>{@link android.provider.DocumentsContract.Root}</li>
+</ul>
+
+<p>Ví dụ, sau đây là các cột bạn có thể trả về trong một con chạy khi
+trình cung cấp tài liệu của bạn được truy vấn về tài liệu hoặc phần gốc:</p>
+
+<pre>private static final String[] DEFAULT_ROOT_PROJECTION =
+        new String[]{Root.COLUMN_ROOT_ID, Root.COLUMN_MIME_TYPES,
+        Root.COLUMN_FLAGS, Root.COLUMN_ICON, Root.COLUMN_TITLE,
+        Root.COLUMN_SUMMARY, Root.COLUMN_DOCUMENT_ID,
+        Root.COLUMN_AVAILABLE_BYTES,};
+private static final String[] DEFAULT_DOCUMENT_PROJECTION = new
+        String[]{Document.COLUMN_DOCUMENT_ID, Document.COLUMN_MIME_TYPE,
+        Document.COLUMN_DISPLAY_NAME, Document.COLUMN_LAST_MODIFIED,
+        Document.COLUMN_FLAGS, Document.COLUMN_SIZE,};
+</pre>
+
+<h3 id="subclass">Phân lớp con DocumentsProvider</h3>
+
+<p>Bước tiếp theo trong khi ghi một trình cung cấp tài liệu tùy chỉnh đó là phân lớp con
+cho lớp tóm tắt {@link android.provider.DocumentsProvider}. Tối thiểu, bạn cần triển khai
+các phương pháp sau:</p>
+
+<ul>
+<li>{@link android.provider.DocumentsProvider#queryRoots queryRoots()}</li>
+
+<li>{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}</li>
+
+<li>{@link android.provider.DocumentsProvider#queryDocument queryDocument()}</li>
+
+<li>{@link android.provider.DocumentsProvider#openDocument openDocument()}</li>
+</ul>
+
+<p>Đây là những phương pháp duy nhất mà bạn được yêu cầu phải triển khai, nhưng còn
+nhiều phương pháp nữa mà bạn có thể muốn triển khai. Xem {@link android.provider.DocumentsProvider}
+để biết chi tiết.</p>
+
+<h4 id="queryRoots">Triển khai queryRoots</h4>
+
+<p>Việc bạn triển khai {@link android.provider.DocumentsProvider#queryRoots
+queryRoots()} phải trả về một {@link android.database.Cursor} trỏ về tất cả
+thư mục gốc trong trình cung cấp tài liệu của bạn, bằng cách sử dụng các cột được định nghĩa trong
+{@link android.provider.DocumentsContract.Root}.</p>
+
+<p>Trong đoạn mã HTML sau, tham số {@code projection} biểu diễn các trường cụ thể
+mà hàm gọi muốn nhận về. Đoạn mã HTML tạo một con chạy mới
+và thêm một hàng vào nó&mdash;một thư mục gốc, mức cao nhất, như
+Downloads hoặc Images.  Hầu hết các trình cung cấp chỉ có một phần gốc. Bạn có thể có nhiều hơn một,
+ví dụ, trong trường hợp nhiều tài khoản người dùng. Trong trường hợp đó, chỉ cần thêm một
+hàng thứ hai vào con chạy.</p>
+
+<pre>
+&#64;Override
+public Cursor queryRoots(String[] projection) throws FileNotFoundException {
+
+    // Create a cursor with either the requested fields, or the default
+    // projection if "projection" is null.
+    final MatrixCursor result =
+            new MatrixCursor(resolveRootProjection(projection));
+
+    // If user is not logged in, return an empty root cursor.  This removes our
+    // provider from the list entirely.
+    if (!isUserLoggedIn()) {
+        return result;
+    }
+
+    // It's possible to have multiple roots (e.g. for multiple accounts in the
+    // same app) -- just add multiple cursor rows.
+    // Construct one row for a root called &quot;MyCloud&quot;.
+    final MatrixCursor.RowBuilder row = result.newRow();
+    row.add(Root.COLUMN_ROOT_ID, ROOT);
+    row.add(Root.COLUMN_SUMMARY, getContext().getString(R.string.root_summary));
+
+    // FLAG_SUPPORTS_CREATE means at least one directory under the root supports
+    // creating documents. FLAG_SUPPORTS_RECENTS means your application's most
+    // recently used documents will show up in the &quot;Recents&quot; category.
+    // FLAG_SUPPORTS_SEARCH allows users to search all documents the application
+    // shares.
+    row.add(Root.COLUMN_FLAGS, Root.FLAG_SUPPORTS_CREATE |
+            Root.FLAG_SUPPORTS_RECENTS |
+            Root.FLAG_SUPPORTS_SEARCH);
+
+    // COLUMN_TITLE is the root title (e.g. Gallery, Drive).
+    row.add(Root.COLUMN_TITLE, getContext().getString(R.string.title));
+
+    // This document id cannot change once it's shared.
+    row.add(Root.COLUMN_DOCUMENT_ID, getDocIdForFile(mBaseDir));
+
+    // The child MIME types are used to filter the roots and only present to the
+    //  user roots that contain the desired type somewhere in their file hierarchy.
+    row.add(Root.COLUMN_MIME_TYPES, getChildMimeTypes(mBaseDir));
+    row.add(Root.COLUMN_AVAILABLE_BYTES, mBaseDir.getFreeSpace());
+    row.add(Root.COLUMN_ICON, R.drawable.ic_launcher);
+
+    return result;
+}</pre>
+
+<h4 id="queryChildDocuments">Triển khai queryChildDocuments</h4>
+
+<p>Việc bạn triển khai
+{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}
+phải trả về một {@link android.database.Cursor} mà chỉ đến tất cả tệp trong
+thư mục được chỉ định, bằng cách sử dụng các cột được định nghĩa trong
+{@link android.provider.DocumentsContract.Document}.</p>
+
+<p>Phương pháp này được gọi khi bạn chọn một thư mục gốc ứng dụng trong UI bộ chọn.
+Nó nhận được tài liệu con của một thư mục nằm dưới phần gốc.  Nó có thể được gọi ở bất kỳ mức nào trong phân cấp tệp
+, không chỉ phần gốc. Đoạn mã HTML
+này tạo một con chạy mới bằng các cột được yêu cầu, sau đó thêm thông tin về
+mọi tệp con trực tiếp trong thư mục mẹ vào con chạy.
+Tệp con có thể là một hình ảnh, một thư mục khác&mdash;bất kỳ tệp nào:</p>
+
+<pre>&#64;Override
+public Cursor queryChildDocuments(String parentDocumentId, String[] projection,
+                              String sortOrder) throws FileNotFoundException {
+
+    final MatrixCursor result = new
+            MatrixCursor(resolveDocumentProjection(projection));
+    final File parent = getFileForDocId(parentDocumentId);
+    for (File file : parent.listFiles()) {
+        // Adds the file's display name, MIME type, size, and so on.
+        includeFile(result, null, file);
+    }
+    return result;
+}
+</pre>
+
+<h4 id="queryDocument">Triển khai queryDocument</h4>
+
+<p>Việc bạn triển khai
+{@link android.provider.DocumentsProvider#queryDocument queryDocument()}
+phải trả về một {@link android.database.Cursor} mà chỉ đến tệp được chỉ định,
+bằng cách sử dụng các cột được định nghĩa trong {@link android.provider.DocumentsContract.Document}.
+</p>
+
+<p>Phương pháp {@link android.provider.DocumentsProvider#queryDocument queryDocument()}
+trả về cùng thông tin đã được chuyển trong
+{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()},
+nhưng là đối với một tệp cụ thể:</p>
+
+
+<pre>&#64;Override
+public Cursor queryDocument(String documentId, String[] projection) throws
+        FileNotFoundException {
+
+    // Create a cursor with the requested projection, or the default projection.
+    final MatrixCursor result = new
+            MatrixCursor(resolveDocumentProjection(projection));
+    includeFile(result, documentId, null);
+    return result;
+}
+</pre>
+
+<h4 id="openDocument">Triển khai openDocument</h4>
+
+<p>Bạn phải triển khai {@link android.provider.DocumentsProvider#openDocument
+openDocument()} để trả về một {@link android.os.ParcelFileDescriptor} biểu diễn
+tệp được chỉ định. Các ứng dụng khác có thể sử dụng {@link android.os.ParcelFileDescriptor}
+được trả về để truyền phát dữ liệu. Hệ thống gọi phương pháp này sau khi người dùng chọn một tệp
+và ứng dụng máy khách yêu cầu truy cập nó bằng cách gọi
+{@link android.content.ContentResolver#openFileDescriptor openFileDescriptor()}.
+Ví dụ:</p>
+
+<pre>&#64;Override
+public ParcelFileDescriptor openDocument(final String documentId,
+                                         final String mode,
+                                         CancellationSignal signal) throws
+        FileNotFoundException {
+    Log.v(TAG, &quot;openDocument, mode: &quot; + mode);
+    // It's OK to do network operations in this method to download the document,
+    // as long as you periodically check the CancellationSignal. If you have an
+    // extremely large file to transfer from the network, a better solution may
+    // be pipes or sockets (see ParcelFileDescriptor for helper methods).
+
+    final File file = getFileForDocId(documentId);
+
+    final boolean isWrite = (mode.indexOf('w') != -1);
+    if(isWrite) {
+        // Attach a close listener if the document is opened in write mode.
+        try {
+            Handler handler = new Handler(getContext().getMainLooper());
+            return ParcelFileDescriptor.open(file, accessMode, handler,
+                        new ParcelFileDescriptor.OnCloseListener() {
+                &#64;Override
+                public void onClose(IOException e) {
+
+                    // Update the file with the cloud server. The client is done
+                    // writing.
+                    Log.i(TAG, &quot;A file with id &quot; +
+                    documentId + &quot; has been closed!
+                    Time to &quot; +
+                    &quot;update the server.&quot;);
+                }
+
+            });
+        } catch (IOException e) {
+            throw new FileNotFoundException(&quot;Failed to open document with id &quot;
+            + documentId + &quot; and mode &quot; + mode);
+        }
+    } else {
+        return ParcelFileDescriptor.open(file, accessMode);
+    }
+}
+</pre>
+
+<h3 id="security">Bảo mật</h3>
+
+<p>Giả sử trình cung cấp tài liệu của bạn là một dịch vụ lưu trữ đám mây được bảo vệ bằng mật khẩu
+và bạn muốn đảm bảo rằng người dùng được đăng nhập trước khi bạn bắt đầu chia sẻ tệp của họ.
+Ứng dụng của bạn nên làm gì nếu người dùng không đăng nhập?  Giải pháp là trả về
+phần gốc 0 trong triển khai {@link android.provider.DocumentsProvider#queryRoots
+queryRoots()} của bạn. Cụ thể là một con chạy gốc trống:</p>
+
+<pre>
+public Cursor queryRoots(String[] projection) throws FileNotFoundException {
+...
+    // If user is not logged in, return an empty root cursor.  This removes our
+    // provider from the list entirely.
+    if (!isUserLoggedIn()) {
+        return result;
+}
+</pre>
+
+<p>Bước còn lại là gọi {@code getContentResolver().notifyChange()}.
+Bạn còn nhớ {@link android.provider.DocumentsContract} chứ?  Chúng ta đang sử dụng nó để tạo
+URI này. Đoạn mã HTML sau báo cho hệ thống truy vấn các phần gốc trong
+trình cung cấp tài liệu của bạn bất cứ khi nào trạng thái đăng nhập của người dùng thay đổi. Nếu người dùng không được
+đăng nhập, lệnh gọi tới {@link android.provider.DocumentsProvider#queryRoots queryRoots()} sẽ trả về một
+con chạy trống như minh họa bên trên. Điều này đảm bảo rằng tài liệu của một trình cung cấp chỉ
+có sẵn nếu người dùng đăng nhập vào trình cung cấp đó.</p>
+
+<pre>private void onLoginButtonClick() {
+    loginOrLogout();
+    getContentResolver().notifyChange(DocumentsContract
+            .buildRootsUri(AUTHORITY), null);
+}
+</pre>
\ No newline at end of file
diff --git a/docs/html-intl/intl/vi/guide/topics/resources/accessing-resources.jd b/docs/html-intl/intl/vi/guide/topics/resources/accessing-resources.jd
new file mode 100644
index 0000000..b5491dc
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/resources/accessing-resources.jd
@@ -0,0 +1,337 @@
+page.title=Truy cập Tài nguyên
+parent.title=Tài nguyên Ứng dụng
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Xem nhanh</h2>
+  <ul>
+    <li>Tài nguyên có thể được tham chiếu từ mã bằng các số nguyên từ {@code R.java}, chẳng hạn như
+{@code R.drawable.myimage}</li>
+    <li>Tài nguyên có thể được tham chiếu từ các tài nguyên bằng cách sử dụng một cú pháp XML đặc biệt, ví dụ như {@code
+&#64;drawable/myimage}</li>
+    <li>Bạn cũng có thể truy cập tài nguyên ứng dụng của mình bằng các phương pháp trong
+{@link android.content.res.Resources}</li>
+  </ul>
+
+  <h2>Lớp khóa</h2>
+  <ol>
+    <li>{@link android.content.res.Resources}</li>
+  </ol>
+
+  <h2>Trong tài liệu này</h2>
+  <ol>
+    <li><a href="#ResourcesFromCode">Truy cập Tài nguyên từ Mã</a></li>
+    <li><a href="#ResourcesFromXml">Truy cập Tài nguyên từ XML</a>
+      <ol>
+        <li><a href="#ReferencesToThemeAttributes">Tham chiếu các thuộc tính kiểu</a></li>
+      </ol>
+    </li>
+    <li><a href="#PlatformResources">Truy cập Tài nguyên Nền tảng</a></li>
+  </ol>
+
+  <h2>Xem thêm</h2>
+  <ol>
+    <li><a href="providing-resources.html">Cung cấp Tài nguyên</a></li>
+    <li><a href="available-resources.html">Loại Tài nguyên</a></li>
+  </ol>
+</div>
+</div>
+
+
+
+
+<p>Sau khi cung cấp một tài nguyên trong ứng dụng của mình (đề cập trong <a href="providing-resources.html">Cung cấp Tài nguyên</a>), bạn có thể áp dụng nó bằng cách
+tham chiếu ID tài nguyên đó. Tất cả ID tài nguyên được định nghĩa trong lớp {@code R} dự án của bạn, do
+công cụ {@code aapt} tự động khởi tạo.</p>
+
+<p>Khi ứng dụng của bạn được biên dịch, {@code aapt} khởi tạo lớp {@code R}, trong đó chứa
+ID tài nguyên cho tất cả tài nguyên trong thư mục {@code
+res/} của bạn. Với mỗi loại tài nguyên, có một lớp con {@code R} (ví dụ,
+{@code R.drawable} cho tất cả tài nguyên có thể vẽ), và với mỗi tài nguyên loại đó, có một số nguyên
+tĩnh (ví dụ, {@code R.drawable.icon}). Số nguyên này là ID tài nguyên mà bạn có thể sử dụng
+để truy xuất tài nguyên của mình.</p>
+
+<p>Mặc dù lớp {@code R} là nơi các ID tài nguyên được quy định, bạn sẽ không cần
+tìm ở đó để khám phá một ID tài nguyên. Một ID tài nguyên luôn bao gồm:</p>
+<ul>
+  <li><em>Loại tài nguyên</em>: Mỗi tài nguyên được nhóm vào một "loại," chẳng hạn như {@code
+string}, {@code drawable}, và {@code layout}. Để biết thêm về các loại khác nhau, hãy xem phần <a href="available-resources.html">Loại Tài nguyên</a>.
+  </li>
+  <li><em>Tên tài nguyên</em>, là, hoặc: tên tệp,
+không bao gồm phần mở rộng; hoặc giá trị trong thuộc tính XML {@code android:name}, nếu tài nguyên
+đó là một giá trị đơn giản (chẳng hạn như một xâu).</li>
+</ul>
+
+<p>Có hai cách để bạn có thể truy cập một tài nguyên:</p>
+<ul>
+  <li><strong>Trong mã:</strong> Sử dụng một số nguyên tĩnh từ một lớp con của lớp {@code R}
+của bạn, chẳng hạn như:
+    <pre class="classic no-pretty-print">R.string.hello</pre>
+    <p>{@code string} là loại tài nguyên và {@code hello} là tên tài nguyên. Có nhiều
+API Android mà có thể truy cập các tài nguyên của bạn khi bạn cung cấp một ID tài nguyên theo định dạng này. Xem
+<a href="#ResourcesFromCode">Truy cập Tài nguyên trong Mã</a>.</p>
+  </li>
+  <li><strong>Trong XML:</strong> Sử dụng một cú pháp XML đặc biệt mà cũng tương ứng với
+ID tài nguyên được định nghĩa trong lớp {@code R} của bạn, chẳng hạn như:
+    <pre class="classic no-pretty-print">&#64;string/hello</pre>
+    <p>{@code string} là loại tài nguyên và {@code hello} là tên tài nguyên. Bạn có thể sử dụng cú pháp
+này trong một tài nguyên XML ở bất kỳ nơi nào có kỳ vọng một giá trị mà bạn cung cấp trong một tài nguyên. Xem phần <a href="#ResourcesFromXml">Truy cập Tài nguyên từ XML</a>.</p>
+  </li>
+</ul>
+
+
+
+<h2 id="ResourcesFromCode">Truy cập Tài nguyên trong Mã </h2>
+
+<p>Bạn có thể sử dụng một tài nguyên trong mã bằng cách chuyển ID tài nguyên như một tham số phương pháp. Ví
+dụ, bạn có thể đặt một {@link android.widget.ImageView} để sử dụng tài nguyên {@code res/drawable/myimage.png}
+bằng cách sử dụng {@link android.widget.ImageView#setImageResource(int) setImageResource()}:</p>
+<pre>
+ImageView imageView = (ImageView) findViewById(R.id.myimageview);
+imageView.setImageResource(<strong>R.drawable.myimage</strong>);
+</pre>
+
+<p>Bạn cũng có thể truy xuất các tài nguyên riêng lẻ bằng các phương pháp trong {@link
+android.content.res.Resources}, theo đó bạn có thể nhận được một thực thể
+bằng {@link android.content.Context#getResources()}.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>Truy cập các Tệp Gốc</h2>
+
+<p>Tuy không thường gặp, song bạn có thể cần truy cập các tệp và thư mục gốc của mình. Nếu bạn làm vậy thì việc
+lưu các tệp của bạn trong {@code res/} sẽ không có tác dụng với bạn, vì cách duy nhất để đọc một tài nguyên từ
+{@code res/} đó là bằng ID tài nguyên. Thay vào đó, bạn có thể lưu các tài nguyên của mình trong thư mục
+{@code assets/}.</p>
+<p>Các tệp lưu trong thư mục {@code assets/} <em>không</em> được cấp ID tài nguyên
+, vì thế bạn không thể tham chiếu chúng thông qua lớp {@code R} hoặc từ các tài nguyên XML. Thay vào đó, bạn có thể
+truy vấn các tệp trong thư mục {@code assets/} như một hệ thống tệp bình thường và đọc dữ liệu thô bằng cách sử dụng
+{@link android.content.res.AssetManager}.</p>
+<p>Tuy nhiên, nếu tất cả những gì bạn yêu cầu là khả năng đọc dữ liệu thô (chẳng hạn như một tệp video hoặc âm thanh),
+vậy bạn hãy lưu tệp trong thư mục {@code res/raw/} và đọc một luồng byte bằng cách sử dụng {@link
+android.content.res.Resources#openRawResource(int) openRawResource()}.</p>
+
+</div>
+</div>
+
+
+<h3>Cú pháp</h3>
+
+<p>Sau đây là cú pháp để tham chiếu một tài nguyên trong mã:</p>
+
+<pre class="classic no-pretty-print">
+[<em>&lt;package_name&gt;</em>.]R.<em>&lt;resource_type&gt;</em>.<em>&lt;resource_name&gt;</em>
+</pre>
+
+<ul>
+  <li><em>{@code &lt;package_name&gt;}</em> là tên của gói mà tài nguyên nằm trong đó (không
+bắt buộc khi tham chiếu các tài nguyên từ gói của chính bạn).</li>
+  <li><em>{@code &lt;resource_type&gt;}</em> là lớp con {@code R} cho loại tài nguyên.</li>
+  <li><em>{@code &lt;resource_name&gt;}</em> hoặc là tên tệp tài nguyên
+không có phần mở rộng hoặc là giá trị thuộc tính {@code android:name} trong phần tử XML (đối với các giá trị
+đơn giản).</li>
+</ul>
+<p>Xem phần <a href="available-resources.html">Loại Tài nguyên</a> để
+biết thêm thông tin về mỗi loại tài nguyên và cách tham chiếu chúng.</p>
+
+
+<h3>Trường hợp sử dụng</h3>
+
+<p>Có nhiều phương pháp chấp nhận một tham số ID tài nguyên và bạn có thể truy xuất tài nguyên bằng cách sử dụng
+các phương pháp trong {@link android.content.res.Resources}. Bạn có thể lấy một thực thể {@link
+android.content.res.Resources} bằng {@link android.content.Context#getResources
+Context.getResources()}.</p>
+
+
+<p>Sau đây là một số ví dụ về truy cập tài nguyên trong mã:</p>
+
+<pre>
+// Load a background for the current screen from a drawable resource
+{@link android.app.Activity#getWindow()}.{@link
+android.view.Window#setBackgroundDrawableResource(int)
+setBackgroundDrawableResource}(<strong>R.drawable.my_background_image</strong>) ;
+
+// Set the Activity title by getting a string from the Resources object, because
+//  this method requires a CharSequence rather than a resource ID
+{@link android.app.Activity#getWindow()}.{@link android.view.Window#setTitle(CharSequence)
+setTitle}(getResources().{@link android.content.res.Resources#getText(int)
+getText}(<strong>R.string.main_title</strong>));
+
+// Load a custom layout for the current screen
+{@link android.app.Activity#setContentView(int)
+setContentView}(<strong>R.layout.main_screen</strong>);
+
+// Set a slide in animation by getting an Animation from the Resources object
+mFlipper.{@link android.widget.ViewAnimator#setInAnimation(Animation)
+setInAnimation}(AnimationUtils.loadAnimation(this,
+        <strong>R.anim.hyperspace_in</strong>));
+
+// Set the text on a TextView object using a resource ID
+TextView msgTextView = (TextView) findViewById(<strong>R.id.msg</strong>);
+msgTextView.{@link android.widget.TextView#setText(int)
+setText}(<strong>R.string.hello_message</strong>);
+</pre>
+
+
+<p class="caution"><strong>Chú ý:</strong> Bạn không nên sửa đổi tệp {@code
+R.java} bằng cách thủ công&mdash;nó được khởi tạo bởi công cụ {@code aapt} khi dự án của bạn được
+biên dịch. Mọi thay đổi đều bị ghi đè vào lần biên dịch tới của bạn.</p>
+
+
+
+<h2 id="ResourcesFromXml">Truy cập Tài nguyên từ XML</h2>
+
+<p>Bạn có thể định nghĩa các giá trị cho một số thuộc tính và phần tử XML bằng cách sử dụng một
+tham chiếu tới một tài nguyên hiện có. Bạn sẽ thường làm điều này khi tạo các tệp bố trí, để
+cung cấp các xâu và hình ảnh cho widget của mình.</p>
+
+<p>Ví dụ, nếu thêm một {@link android.widget.Button} vào bố trí của mình, bạn nên sử dụng
+một <a href="string-resource.html">tài nguyên xâu</a> cho văn bản nút:</p>
+
+<pre>
+&lt;Button
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:text="<strong>@string/submit</strong>" /&gt;
+</pre>
+
+
+<h3>Cú pháp</h3>
+
+<p>Sau đây là cú pháp để tham chiếu một tài nguyên trong một tài nguyên XML:</p>
+
+<pre class="classic no-pretty-print">
+&#64;[<em>&lt;package_name&gt;</em>:]<em>&lt;resource_type&gt;</em>/<em>&lt;resource_name&gt;</em>
+</pre>
+
+<ul>
+  <li>{@code &lt;package_name&gt;} là tên của gói mà tài nguyên nằm trong đó (không
+bắt buộc khi tham chiếu các tài nguyên từ cùng gói đó)</li>
+  <li>{@code &lt;resource_type&gt;} là lớp con
+{@code R} cho loại tài nguyên.</li>
+  <li>{@code &lt;resource_name&gt;} hoặc là tên tệp tài nguyên
+không có phần mở rộng hoặc là giá trị thuộc tính {@code android:name} trong phần tử XML (đối với các giá trị
+đơn giản).</li>
+</ul>
+
+<p>Xem phần <a href="available-resources.html">Loại Tài nguyên</a> để
+biết thêm thông tin về mỗi loại tài nguyên và cách tham chiếu chúng.</p>
+
+
+<h3>Trường hợp sử dụng</h3>
+
+<p>Trong một số trường hợp bạn phải sử dụng một tài nguyên cho một giá trị trong XML (ví dụ, để áp dụng một hình ảnh có thể vẽ
+cho một widget), nhưng bạn cũng có thể sử dụng một tài nguyên trong XML ở bất kỳ nơi nào chấp nhận một giá trị đơn giản. Ví
+dụ, nếu bạn có tệp tài nguyên sau bao gồm một <a href="more-resources.html#Color">tài nguyên màu</a> và một <a href="string-resource.html">tài nguyên xâu</a>:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+   &lt;color name="opaque_red">#f00&lt;/color>
+   &lt;string name="hello">Hello!&lt;/string>
+&lt;/resources>
+</pre>
+
+<p>Bạn có thể sử dụng những tài nguyên này trong tệp bố trí sau để đặt màu văn bản và
+xâu văn bản:</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;fill_parent&quot;
+    android:textColor=&quot;<strong>&#64;color/opaque_red</strong>&quot;
+    android:text=&quot;<strong>&#64;string/hello</strong>&quot; /&gt;
+</pre>
+
+<p>Trong trường hợp này, bạn không cần quy định tên gói trong tham chiếu tài nguyên đó vì tài nguyên
+xuất phát từ gói của chính bạn. Để
+tham chiếu một tài nguyên hệ thống, bạn sẽ cần đưa vào tên gói. Ví dụ:</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;fill_parent&quot;
+    android:textColor=&quot;<strong>&#64;android:color/secondary_text_dark</strong>&quot;
+    android:text=&quot;&#64;string/hello&quot; /&gt;
+</pre>
+
+<p class="note"><strong>Lưu ý:</strong> Bạn nên sử dụng các tài nguyên xâu 
+vào mọi lúc, để ứng dụng của bạn có thể được bản địa hóa cho các ngôn ngữ khác. 
+Để biết thông tin về việc tạo các tài nguyên
+thay thế (chẳng hạn như xâu được bản địa hóa), hãy xem phần <a href="providing-resources.html#AlternativeResources">Cung cấp Tài nguyên
+Thay thế</a>. Để được hướng dẫn đầy đủ về việc bản địa hóa ứng dụng của bạn cho các ngôn ngữ khác,
+hãy xem phần <a href="localization.html">Bản địa hóa</a>.</p>
+
+<p>Bạn thậm chí có thể sử dụng tài nguyên trong XML để tạo các bí danh. Ví dụ, bạn có thể tạo một tài nguyên có thể vẽ
+là một bí danh cho một tài nguyên có thể vẽ khác:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/other_drawable" />
+</pre>
+
+<p>Nghe có vẻ thừa, nhưng có thể rất hữu ích khi sử dụng tài nguyên thay thế. Đọc thêm về
+<a href="providing-resources.html#AliasResources">Tạo tài nguyên bí danh</a>.</p>
+
+
+
+<h3 id="ReferencesToThemeAttributes">Tham chiếu các thuộc tính kiểu</h3>
+
+<p>Một tài nguyên thuộc tính kiểu sẽ cho phép bạn tham chiếu giá trị
+của một thuộc tính trong chủ đề đang áp dụng. Tham chiếu một thuộc tính kiểu sẽ cho phép bạn
+tùy chỉnh diện mạo của các phần tử UI bằng cách tạo kiểu cho chúng để phù hợp với các biến đổi tiêu chuẩn được cung cấp bởi
+chủ đề hiện tại, thay vì cung cấp một giá trị được mã hóa cố định. Tham chiếu một thuộc tính kiểu
+về cơ bản mà nói, là "sử dụng kiểu được định nghĩa bởi thuộc tính này, trong chủ đề hiện tại."</p>
+
+<p>Để tham chiếu một thuộc tính kiểu, cú pháp tên gần như tương tự với định dạng tài nguyên thường
+, nhưng thay vì biểu tượng @ ({@code @}), hãy sử dụng một dấu hỏi ({@code ?}), và
+phần loại tài nguyên là tùy chọn. Ví dụ:</p>
+
+<pre class="classic">
+?[<em>&lt;package_name&gt;</em>:][<em>&lt;resource_type&gt;</em>/]<em>&lt;resource_name&gt;</em>
+</pre>
+
+<p>Ví dụ, sau đây là cách bạn có thể tham chiếu một thuộc tính để đặt màu văn bản cho phù hợp với màu văn bản
+"chính" của chủ đề hệ thống:</p>
+
+<pre>
+&lt;EditText id=&quot;text&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;wrap_content&quot;
+    android:textColor=&quot;<strong>?android:textColorSecondary</strong>&quot;
+    android:text=&quot;&#64;string/hello_world&quot; /&gt;
+</pre>
+
+<p>Ở đây, thuộc tính {@code android:textColor} quy định tên của một thuộc tính kiểu
+trong chủ đề hiện tại. Hiện nay, Android sử dụng giá trị được áp dụng cho thuộc tính kiểu {@code android:textColorSecondary}
+làm giá trị cho {@code android:textColor} trong widget này. Vì công cụ tài nguyên
+hệ thống biết rằng một tài nguyên thuộc tính sẽ được yêu cầu trong ngữ cảnh này,
+bạn không cần nêu rõ loại (mà sẽ là
+<code>?android:attr/textColorSecondary</code>)&mdash;bạn có thể không nêu loại {@code attr}.</p>
+
+
+
+
+<h2 id="PlatformResources">Truy cập Tài nguyên Nền tảng</h2>
+
+<p>Android bao gồm nhiều tài nguyên tiêu chuẩn, chẳng hạn như kiểu, chủ đề và bố trí. Để
+truy cập các tài nguyên này, hãy xác định tham chiếu tài nguyên của bạn bằng tên gói
+<code>android</code>. Ví dụ, Android cung cấp một tài nguyên bố trí bạn có thể sử dụng cho
+các mục danh sách trong một {@link android.widget.ListAdapter}:</p>
+
+<pre>
+{@link android.app.ListActivity#setListAdapter(ListAdapter)
+setListAdapter}(new {@link
+android.widget.ArrayAdapter}&lt;String&gt;(this, <strong>android.R.layout.simple_list_item_1</strong>, myarray));
+</pre>
+
+<p>Trong ví dụ này, {@link android.R.layout#simple_list_item_1} là một tài nguyên bố trí được định nghĩa bởi
+nền tảng cho các mục trong một {@link android.widget.ListView}. Bạn có thể sử dụng điều này thay vì tạo
+bố trí riêng của mình cho các mục danh sách. Để biết thêm thông tin, hãy xem phần
+<a href="{@docRoot}guide/topics/ui/layout/listview.html">Dạng xem Danh sách</a> trong hướng dẫn cho nhà phát triển.</p>
+
diff --git a/docs/html-intl/intl/vi/guide/topics/resources/overview.jd b/docs/html-intl/intl/vi/guide/topics/resources/overview.jd
new file mode 100644
index 0000000..7bbd72a
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/resources/overview.jd
@@ -0,0 +1,103 @@
+page.title=Tổng quan về Tài nguyên
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Chủ đề</h2>
+  <ol>
+    <li><a href="providing-resources.html">Cung cấp Tài nguyên</a></li>
+    <li><a href="accessing-resources.html">Truy cập Tài nguyên</a></li>
+    <li><a href="runtime-changes.html">Xử lý Thay đổi Thời gian chạy</a></li>
+    <li><a href="localization.html">Bản địa hóa</a></li>
+  </ol>
+
+  <h2>Tham khảo</h2>
+  <ol>
+    <li><a href="available-resources.html">Loại Tài nguyên</a></li>
+  </ol>
+</div>
+</div>
+
+
+<p>Bạn nên luôn ngoại hiện hóa các tài nguyên chẳng hạn như hình ảnh và xâu từ mã
+ứng dụng của mình, sao cho bạn có thể duy trì chúng một cách độc lập. Việc ngoại hiện hóa
+tài nguyên cũng cho phép bạn cung cấp các tài nguyên thay thế hỗ trợ những cấu hình
+thiết bị cụ thể chẳng hạn như ngôn ngữ hoặc kích cỡ màn hình khác nhau, điều này đang ngày càng trở nên
+quan trọng bởi các thiết bị dựa trên nền tảng Android ngày càng sẵn có với các cấu hình khác nhau. Để
+đảm bảo tính tương thích với các cấu hình khác nhau, bạn phải tổ chức tài nguyên trong
+thư mục {@code res/} dự án của bạn bằng cách sử dụng các thư mục con khác nhau có chức năng nhóm tài nguyên lại theo loại và
+cấu hình.</p>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram1.png" height="167" alt="" />
+<p class="img-caption">
+<strong>Hình 1.</strong> Hai thiết bị khác nhau, mỗi thiết bị sử dụng bố trí mặc định
+(ứng dụng không cung cấp bố trí thay thế).</p>
+</div>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
+<p class="img-caption">
+<strong>Hình 2.</strong> Hai thiết bị khác nhau, mỗi thiết bị sử dụng một bố trí khác nhau được cung cấp
+cho các kích cỡ màn hình khác nhau.</p>
+</div>
+
+<p>Đối với mọi loại tài nguyên, bạn có thể quy định tài nguyên <em>mặc định</em> và nhiều tài nguyên
+<em>thay thế</em> cho ứng dụng của mình:</p>
+<ul>
+  <li>Tài nguyên mặc định là những tài nguyên nên được sử dụng không phụ thuộc vào
+cấu hình thiết bị hoặc khi không có tài nguyên thay thế khớp với cấu hình
+hiện tại.</li>
+  <li>Tài nguyên thay thế là những tài nguyên mà bạn đã thiết kế để sử dụng với một cấu hình
+cụ thể. Để quy định rằng một nhóm tài nguyên áp dụng cho một cấu hình cụ thể,
+hãy nối hình dạng cấu hình phù hợp với tên thư mục.</li>
+</ul>
+
+<p>Ví dụ, trong khi bố trí UI mặc định của bạn
+được lưu trong thư mục {@code res/layout/}, bạn có thể quy định một bố trí khác sẽ
+được sử dụng khi màn hình ở hướng khổ ngang, bằng cách lưu nó trong thư mục {@code res/layout-land/}
+. Android tự động áp dụng các tài nguyên phù hợp bằng cách khớp cấu hình hiện tại
+của thiết bị với tên thư mục tài nguyên của bạn.</p>
+
+<p>Hình 1 minh họa cách hệ thống áp dụng cùng bố trí cho
+hai thiết bị khác nhau khi không có sẵn tài nguyên thay thế. Hình 2 minh họa
+cùng ứng dụng khi nó thêm một tài nguyên bố trí thay thế cho các màn hình lớn hơn.</p>
+
+<p>Các tài liệu sau trình bày hướng dẫn hoàn chỉnh về cách bạn có thể tổ chức các tài nguyên ứng dụng của mình,
+quy định tài nguyên thay thế, truy cập chúng trong ứng dụng của bạn, và nhiều điều khác:</p>
+
+<dl>
+  <dt><strong><a href="providing-resources.html">Cung cấp Tài nguyên</a></strong></dt>
+  <dd>Những kiểu tài nguyên mà bạn có thể cung cấp trong ứng dụng của mình, nơi lưu chúng, và cách tạo
+tài nguyên thay thế cho những cấu hình thiết bị cụ thể.</dd>
+  <dt><strong><a href="accessing-resources.html">Truy cập Tài nguyên</a></strong></dt>
+  <dd>Cách sử dụng tài nguyên mà bạn đã cung cấp hoặc bằng cách tham chiếu chúng từ mã ứng dụng của mình
+hoặc từ các tài nguyên XML khác.</dd>
+  <dt><strong><a href="runtime-changes.html">Xử lý Thay đổi Thời gian chạy</a></strong></dt>
+  <dd>Cách quản lý những thay đổi cấu hình mà diễn ra trong khi Hoạt động của bạn đang chạy.</dd>
+  <dt><strong><a href="localization.html">Bản địa hóa</a></strong></dt>
+  <dd>Một hướng dẫn từ dưới lên về việc bản địa hóa ứng dụng của bạn bằng cách sử dụng các tài nguyên thay thế. Trong khi đây
+chỉ là một công dụng cụ thể của tài nguyên thay thế, nó rất quan trọng để tiếp cận với nhiều
+người dùng hơn.</dd>
+  <dt><strong><a href="available-resources.html">Loại Tài nguyên</a></strong></dt>
+  <dd>Một tham chiếu về các loại tài nguyên khác nhau mà bạn có thể cung cấp, mô tả các phần tử XML,
+thuộc tính và cú pháp của chúng. Ví dụ, tham chiếu này cho bạn thấy cách tạo một tài nguyên cho
+menu ứng dụng, đối tượng vẽ được, hoạt ảnh, và hơn thế nữa.</dd>
+</dl>
+
+<!--
+<h2>Raw Assets</h2>
+
+<p>An alternative to saving files in {@code res/} is to save files in the {@code
+assets/} directory. This should only be necessary if you need direct access to original files and
+directories by name. Files saved in the {@code assets/} directory will not be given a resource
+ID, so you can't reference them through the {@code R} class or from XML resources. Instead, you can
+query data in the {@code assets/} directory like an ordinary file system, search through the
+directory and
+read raw data using {@link android.content.res.AssetManager}. For example, this can be more useful
+when dealing with textures for a game. However, if you only need to read raw data from a file
+(such as a video or audio file), then you should save files into the {@code res/raw/} directory and
+then read a stream of bytes using {@link android.content.res.Resources#openRawResource(int)}. This
+is uncommon, but if you need direct access to original files in {@code assets/}, refer to the {@link
+android.content.res.AssetManager} documentation.</p>
+-->
diff --git a/docs/html-intl/intl/vi/guide/topics/resources/providing-resources.jd b/docs/html-intl/intl/vi/guide/topics/resources/providing-resources.jd
new file mode 100644
index 0000000..b733643
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/resources/providing-resources.jd
@@ -0,0 +1,1094 @@
+page.title=Cung cấp Tài nguyên
+parent.title=Tài nguyên Ứng dụng
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Xem nhanh</h2>
+  <ul>
+    <li>Các loại tài nguyên khác nhau thuộc về các thư mục con khác nhau của {@code res/}</li>
+    <li>Tài nguyên thay thế cung cấp các tệp tài nguyên theo cấu hình cụ thể</li>
+    <li>Luôn bao gồm tài nguyên mặc định để ứng dụng của bạn không phụ thuộc vào các
+cấu hình thiết bị cụ thể</li>
+  </ul>
+  <h2>Trong tài liệu này</h2>
+  <ol>
+    <li><a href="#ResourceTypes">Nhóm các Loại Tài nguyên lại</a></li>
+    <li><a href="#AlternativeResources">Cung cấp Tài nguyên Thay thế</a>
+      <ol>
+        <li><a href="#QualifierRules">Quy tắc về tên hạn định</a></li>
+        <li><a href="#AliasResources">Tạo tài nguyên bí danh</a></li>
+      </ol>
+    </li>
+    <li><a href="#Compatibility">Cung cấp Tính tương thích giữa Thiết bị với Tài nguyên Tốt nhất</a></li>
+    <li><a href="#BestMatch">Cách Android tìm Tài nguyên Khớp Tốt nhất</a></li>
+  </ol>
+
+  <h2>Xem thêm</h2>
+  <ol>
+    <li><a href="accessing-resources.html">Truy cập Tài nguyên</a></li>
+    <li><a href="available-resources.html">Loại Tài nguyên</a></li>
+    <li><a href="{@docRoot}guide/practices/screens_support.html">Hỗ trợ Nhiều
+Màn hình</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Bạn nên luôn ngoại hiện hóa các tài nguyên ứng dụng chẳng hạn như hình ảnh và xâu từ mã
+của mình, sao cho bạn có thể duy trì chúng một cách độc lập. Bạn cũng nên cung cấp tài nguyên thay thế cho
+cấu hình thiết bị cụ thể bằng cách nhóm chúng lại trong những thư mục tài nguyên đích danh. Trong
+thời gian chạy, Android sẽ sử dụng tài nguyên phù hợp dựa trên cấu hình hiện tại. Ví
+dụ, bạn có thể muốn cung cấp một bố trí UI khác phụ thuộc vào kích cỡ màn hình hoặc các xâu
+khác nhau phụ thuộc vào thiết đặt ngôn ngữ.</p>
+
+<p>Sau khi ngoại hiện hóa các tài nguyên ứng dụng của mình, bạn có thể truy cập chúng
+bằng cách sử dụng các ID tài nguyên được khởi tạo trong lớp {@code R} của dự án của bạn. Cách sử dụng
+tài nguyên trong ứng dụng của bạn được trình bày trong phần <a href="accessing-resources.html">Truy cập
+Tài nguyên</a>. Tài liệu này trình bày với bạn cách nhóm các tài nguyên lại trong dự án Android của bạn và
+cung cấp tài nguyên thay thế cho những cấu hình thiết bị cụ thể.</p>
+
+
+<h2 id="ResourceTypes">Nhóm các Loại Tài nguyên lại</h2>
+
+<p>Bạn nên đặt từng loại tài nguyên vào một thư mục con cụ thể trong thư mục
+{@code res/} dự án của mình. Ví dụ, sau đây là phân cấp tệp của một dự án đơn giản:</p>
+
+<pre class="classic no-pretty-print">
+MyProject/
+    src/  <span style="color:black">
+        MyActivity.java  </span>
+    res/
+        drawable/  <span style="color:black">
+            graphic.png  </span>
+        layout/  <span style="color:black">
+            main.xml
+            info.xml</span>
+        mipmap/  <span style="color:black">
+            icon.png </span>
+        values/  <span style="color:black">
+            strings.xml  </span>
+</pre>
+
+<p>Như bạn có thể thấy trong ví dụ này, thư mục {@code res/} chứa tất cả tài nguyên (trong
+các thư mục con): một tài nguyên hình ảnh, hai tài nguyên bố trí, các thư mục{@code mipmap/} cho biểu tượng của trình khởi chạy
+, và một tệp tài nguyên xâu. Tên thư mục
+tài nguyên có vai trò quan trọng và được mô tả trong bảng 1.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Để biết thêm thông tin về cách sử dụng thư mục mipmap, hãy xem phần
+<a href="{@docRoot}tools/projects/index.html#mipmap">Tổng quan về Quản lý Dự án</a>.</p>
+
+<p class="table-caption" id="table1"><strong>Bảng 1.</strong> Các thư mục tài nguyên
+được hỗ trợ bên trong thư mục {@code res/} của dự án.</p>
+
+<table>
+  <tr>
+    <th scope="col">Thư mục</th>
+    <th scope="col">Loại Tài nguyên</th>
+  </tr>
+
+  <tr>
+    <td><code>animator/</code></td>
+    <td>Tệp XML định nghĩa <a href="{@docRoot}guide/topics/graphics/prop-animation.html">các hoạt hình
+tính chất</a>.</td>
+  </tr>
+
+  <tr>
+    <td><code>anim/</code></td>
+    <td>Tệp XML định nghĩa <a href="{@docRoot}guide/topics/graphics/view-animation.html#tween-animation">các hoạt hình
+tween</a>. (Các hoạt hình tính chất cũng có thể được lưu trong thư mục này, nhưng
+thư mục {@code animator/} được ưu tiên cho hoạt hình tính chất để phân biệt giữa hai
+loại này.)</td>
+  </tr>
+
+  <tr>
+    <td><code>color/</code></td>
+    <td>Tệp XML định nghĩa một danh sách trạng thái các màu. Xem phần <a href="color-list-resource.html">Tài nguyên
+Danh sách Trạng thái Màu</a></td>
+  </tr>
+
+  <tr>
+    <td><code>drawable/</code></td>
+
+    <td><p>Tệp bitmap ({@code .png}, {@code .9.png}, {@code .jpg}, {@code .gif}) hoặc tệp XML
+được biên dịch thành các loại tài nguyên con vẽ được sau:</p>
+      <ul>
+        <li>Tệp bitmap</li>
+        <li>Nine-Patche (tệp bitmap có thể thay đổi kích cỡ)</li>
+        <li>Danh sách trạng thái</li>
+        <li>Hình</li>
+        <li>Nội dung vẽ được hoạt hình</li>
+        <li>Nội dung vẽ được khác</li>
+      </ul>
+      <p>Xem phần <a href="drawable-resource.html">Tài nguyên Vẽ được</a>.</p>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>mipmap/</code></td>
+    <td>Tệp vẽ được cho các mật độ biểu tượng trình khởi chạy khác nhau. Để biết thêm thông tin về việc quản lý
+    các biểu tượng trình khởi chạy bằng thư mục {@code mipmap/}, xem phần
+    <a href="{@docRoot}tools/project/index.html#mipmap">Tổng quan về Quản lý Dự án</a>.</td>
+  </tr>
+
+  <tr>
+    <td><code>layout/</code></td>
+    <td>Tệp XML định nghĩa một bố trí giao diện người dùng.
+        Xem phần <a href="layout-resource.html">Tài nguyên Bố trí</a>.</td>
+  </tr>
+
+  <tr>
+    <td><code>menu/</code></td>
+    <td>Tệp XML định nghĩa các menu ứng dụng, chẳng hạn như Menu Tùy chọn, Menu Ngữ cảnh, hoặc Menu
+Con. Xem phần <a href="menu-resource.html">Tài nguyên Menu</a>.</td>
+  </tr>
+
+  <tr>
+    <td><code>raw/</code></td>
+    <td><p>Tệp tùy ý để lưu trong dạng thô của chúng. Để mở những tài nguyên có một
+{@link java.io.InputStream} thô này, hãy gọi {@link android.content.res.Resources#openRawResource(int)
+Resources.openRawResource()} bằng ID tài nguyên, chính là {@code R.raw.<em>filename</em>}.</p>
+      <p>Tuy nhiên, nếu cần truy cập tên tệp gốc và phân cấp tệp, bạn có thể xem xét
+lưu một số tài nguyên trong thư mục {@code
+assets/} (thay vì {@code res/raw/}). Các tệp trong {@code assets/} không được cấp
+ID tài nguyên, vì thế bạn chỉ có thể đọc chúng bằng cách sử dụng {@link android.content.res.AssetManager}.</p></td>
+  </tr>
+
+  <tr>
+    <td><code>values/</code></td>
+    <td><p>Tệp XML chứa các giá trị đơn giản, chẳng hạn như xâu, số nguyên, và màu sắc.</p>
+      <p>Trong đó, tệp tài nguyên XML trong các thư mục con {@code res/} khác định nghĩa một tài nguyên đơn lẻ
+dựa trên tên tệp XML, tệp trong thư mục {@code values/} sẽ mô tả nhiều nguồn.
+Đối với tệp trong thư mục này, mỗi phần tử con của phần tử {@code &lt;resources&gt;} lại định nghĩa một tài nguyên
+duy nhất. Ví dụ, phần tử {@code &lt;string&gt;} tạo tài nguyên
+{@code R.string} và phần tử {@code &lt;color&gt;} tạo tài nguyên {@code R.color}
+.</p>
+      <p>Vì mỗi tài nguyên được định nghĩa bằng phần tử XML của chính nó, bạn có thể đặt tên tệp
+theo cách mình muốn và đặt các loại tài nguyên khác nhau vào một tệp. Tuy nhiên, để giải thích rõ, bạn có thể
+muốn đặt các loại tài nguyên duy nhất vào những tệp khác nhau. Ví dụ, sau đây là một số quy ước
+tên tệp cho các tài nguyên mà bạn có thể tạo trong thư mục này:</p>
+      <ul>
+        <li>arrays.xml cho mảng tài nguyên (<a href="more-resources.html#TypedArray">mảng có phân loại</a>).</li>
+        <li>colors.xml cho <a href="more-resources.html#Color">giá trị màu</a></li>
+        <li>dimens.xml cho <a href="more-resources.html#Dimension">giá trị kích thước</a>.</li>
+        <li>strings.xml cho <a href="string-resource.html">giá trị
+xâu</a>.</li>
+        <li>styles.xml cho <a href="style-resource.html">kiểu</a>.</li>
+      </ul>
+      <p>Xem các phần <a href="string-resource.html">Tài nguyên Xâu</a>,
+        <a href="style-resource.html">Tài nguyên Kiểu</a>, và
+        <a href="more-resources.html">các Loại Tài nguyên khác</a>.</p>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>xml/</code></td>
+    <td>Tệp XML tùy ý mà có thể được đọc vào thời gian chạy bằng cách gọi {@link
+android.content.res.Resources#getXml(int) Resources.getXML()}. Các tệp cấu hình XML khác nhau
+phải được lưu ở đây, chẳng hạn như một <a href="{@docRoot}guide/topics/search/searchable-config.html">cấu hình có thể tìm kiếm</a>.
+<!-- or preferences configuration. --></td>
+  </tr>
+</table>
+
+<p class="caution"><strong>Chú ý:</strong> Không được lưu tệp tài nguyên trực tiếp vào trong thư mục 
+{@code res/}&mdash;nó sẽ gây ra lỗi với trình biên dịch.</p>
+
+<p>Để biết thêm thông tin về các loại tài nguyên, hãy xem tài liệu <a href="available-resources.html">Các Loại Tài nguyên</a>.</p>
+
+<p>Tài nguyên mà bạn lưu trong thư mục con được định nghĩa trong bảng 1 là những tài nguyên "mặc định"
+của bạn. Cụ thể, những tài nguyên này định nghĩa thiết kế và nội dung mặc định cho ứng dụng của bạn.
+Tuy nhiên, các loại thiết bị dựa trên nền tảng Android khác nhau có thể gọi các loại tài nguyên khác nhau.
+Ví dụ, nếu một thiết bị có một màn hình lớn hơn bình thường, khi đó bạn nên cung cấp
+các tài nguyên bố trí khác nhau để tận dụng diện tích màn hình tăng thêm. Hoặc, nếu một thiết bị có
+thiết đặt ngôn ngữ khác, khi đó bạn nên cung cấp các tài nguyên xâu khác để biên dịch
+văn bản trong giao diện người dùng của mình. Để cung cấp những tài nguyên khác nhau này cho các cấu hình
+thiết bị khác nhau, bạn cần cung cấp tài nguyên thay thế bên cạnh những tài nguyên
+mặc định của mình.</p>
+
+
+<h2 id="AlternativeResources">Cung cấp Tài nguyên Thay thế</h2>
+
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
+<p class="img-caption">
+<strong>Hình 1.</strong> Hai thiết bị khác nhau, mỗi thiết bị sử dụng các tài nguyên bố trí khác nhau.</p>
+</div>
+
+<p>Hầu như mọi ứng dụng đều nên cung cấp các tài nguyên thay thế để hỗ trợ những cấu hình
+thiết bị cụ thể. Ví dụ, bạn nên bao gồm các tài nguyên vẽ được thay thế cho các mật độ
+màn hình khác nhau và tài nguyên xâu thay thế cho các ngôn ngữ khác nhau. Vào thời gian chạy, Android
+sẽ phát hiện cấu hình thiết bị hiện tại và tải các tài nguyên
+tương ứng cho ứng dụng của bạn.</p>
+
+<p>Để quy định các phương án thay thế theo cấu hình cụ thể cho một tập hợp tài nguyên:</p>
+<ol>
+  <li>Tạo một thư mục mới trong {@code res/} có tên theo dạng {@code
+<em>&lt;resources_name&gt;</em>-<em>&lt;config_qualifier&gt;</em>}.
+    <ul>
+      <li><em>{@code &lt;resources_name&gt;}</em> là tên thư mục của các tài nguyên mặc định tương ứng
+(được định nghĩa trong bảng 1).</li>
+      <li><em>{@code &lt;qualifier&gt;}</em> là tên quy định một cấu hình riêng
+mà những tài nguyên này sẽ được sử dụng cho nó (được định nghĩa trong bảng 2).</li>
+    </ul>
+    <p>Bạn có thể nối nhiều hơn một <em>{@code &lt;qualifier&gt;}</em>. Tách riêng từng cái
+bằng một nét gạch.</p>
+    <p class="caution"><strong>Chú ý:</strong> Khi nối nhiều hạn định, bạn phải
+đặt chúng theo cùng thứ tự liệt kê trong bảng 2. Nếu các hạn định được xếp thứ tự
+sai, tài nguyên sẽ bị bỏ qua.</p>
+  </li>
+  <li>Lưu các tài nguyên thay thế tương ứng vào thư mục mới này. Tệp tài nguyên phải được
+đặt tên đúng như các tệp tài nguyên mặc định.</li>
+</ol>
+
+<p>Ví dụ, sau đây là một số tài nguyên mặc định và thay thế:</p>
+
+<pre class="classic no-pretty-print">
+res/
+    drawable/   <span style="color:black">
+        icon.png
+        background.png    </span>
+    drawable-hdpi/  <span style="color:black">
+        icon.png
+        background.png  </span>
+</pre>
+
+<p>Hạn định {@code hdpi} cho biết rằng các tài nguyên trong thư mục đó áp dụng cho những thiết bị có
+màn hình mật độ cao. Hình ảnh trong từng thư mục vẽ được này được định cỡ cho một mật độ
+màn hình cụ thể, nhưng tên tệp thì
+giống hệt. Bằng cách này, ID tài nguyên mà bạn sử dụng để tham chiếu {@code icon.png} hoặc hình ảnh {@code
+background.png} luôn như nhau, nhưng Android sẽ chọn
+phiên bản của từng tài nguyên cho khớp tốt nhất với thiết bị hiện tại, bằng cách so sánh thông tin cấu hình thiết bị
+với các hạn định về tên thư mục tài nguyên.</p>
+
+<p>Android hỗ trợ một vài hạn định cấu hình và bạn có thể
+thêm nhiều hạn định vào một tên thư mục, bằng cách tách riêng từng hạn định bằng một nét gạch. Bảng 2
+liệt kê các hạn định cấu hình hợp lệ, theo thứ tự ưu tiên&mdash;nếu bạn sử dụng nhiều
+hạn định cho một thư mục tài nguyên, bạn phải thêm chúng vào tên thư mục theo thứ tự được liệt kê trong
+bảng.</p>
+
+
+<p class="table-caption" id="table2"><strong>Bảng 2.</strong> Tên của hạn định
+cấu hình.</p>
+<table>
+    <tr>
+        <th>Cấu hình</th>
+        <th>Giá trị Hạn định</th>
+        <th>Mô tả</th>
+    </tr>
+    <tr id="MccQualifier">
+      <td>MCC và MNC</td>
+      <td>Ví dụ:<br/>
+        <code>mcc310</code><br/>
+        <code><nobr>mcc310-mnc004</nobr></code><br/>
+        <code>mcc208-mnc00</code><br/>
+        v.v.
+      </td>
+      <td>
+        <p>Mã quốc gia di động (MCC), đằng sau có thể là mã mạng di động (MNC)
+        từ thẻ SIM trong thiết bị. Ví dụ, <code>mcc310</code> ở Hoa Kỳ đối với mọi nhà mạng,
+        <code>mcc310-mnc004</code> ở Hoa Kỳ đối với Verizon, và <code>mcc208-mnc00</code> ở Pháp đối với
+        Orange.</p>
+        <p>Nếu thiết bị sử dụng một kết nối vô tuyến (điện thoại GSM), các giá trị MCC và MNC sẽ lấy
+       từ thẻ SIM.</p>
+        <p>Bạn cũng có thể sử dụng chỉ MCC (ví dụ, để đưa các tài nguyên
+pháp lý theo quốc gia cụ thể vào ứng dụng của bạn). Nếu bạn cần quy định chỉ dựa trên ngôn ngữ, hãy sử dụng hạn định
+<em>ngôn ngữ và khu vực</em> để thay thế (được trình bày ở phần tiếp theo). Nếu bạn quyết định sử dụng hạn định MCC và
+MNC, bạn nên cẩn thận và kiểm tra xem nó có hoạt động như kỳ vọng không.</p>
+        <p>Ngoài ra, cũng xem các trường cấu hình {@link
+android.content.res.Configuration#mcc}, và {@link
+android.content.res.Configuration#mnc}, tương ứng cho biết mã quốc gia di động và
+mã mạng di động hiện tại.</p>
+      </td>
+    </tr>
+    <tr id="LocaleQualifier">
+      <td>Ngôn ngữ và khu vực</td>
+      <td>Ví dụ:<br/>
+        <code>en</code><br/>
+        <code>fr</code><br/>
+        <code>en-rUS</code><br/>
+        <code>fr-rFR</code><br/>
+        <code>fr-rCA</code><br/>
+        v.v.
+      </td>
+      <td><p>Ngôn ngữ được định nghĩa bằng một mã ngôn ngữ <a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">ISO
+              639-1</a> gồm hai chữ cái, có thể theo sau là một mã khu vực 
+              <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO
+              3166-1-alpha-2</a> dài hai chữ cái (đằng trước là "{@code r}" chữ thường).
+        </p><p>
+        Các mã <em>không</em> phân biệt chữ hoa/thường; tiền tố {@code r} được sử dụng để
+        phân biệt phần khu vực.
+        Bạn không thể chỉ quy định một khu vực.</p>
+        <p>Điều này có thể thay đổi trong suốt vòng đời
+ứng dụng của bạn nếu người dùng thay đổi ngôn ngữ của mình trong cài đặt hệ thống. Xem phần <a href="runtime-changes.html">Xử lý Thay đổi Thời gian chạy</a> để biết thông tin về
+ảnh hưởng có thể có của thay đổi này tới ứng dụng của bạn trong thời gian chạy.</p>
+        <p>Xem phần <a href="localization.html">Bản địa hóa</a> để biết hướng dẫn đầy đủ về việc bản địa hóa
+ứng dụng của bạn cho các ngôn ngữ khác.</p>
+        <p>Xem thêm trường cấu hình {@link android.content.res.Configuration#locale}, trong đó
+cho biết địa phương hiện tại.</p>
+      </td>
+    </tr>
+    <tr id="LayoutDirectionQualifier">
+      <td>Chỉ hướng Bố trí</td>
+      <td><code>ldrtl</code><br/>
+        <code>ldltr</code><br/>
+      </td>
+      <td><p>Chỉ hướng bố trí của ứng dụng của bạn. {@code ldrtl} có nghĩa là "chỉ-hướng-bố-trí-phải-qua-trái".
+      {@code ldltr} có nghĩa là "chỉ-hướng-bố-trí-trái-qua-phải" và là giá trị không biểu thị mặc định.
+      </p>
+      <p>Điều này có thể áp dụng cho bất kỳ tài nguyên nào, chẳng hạn như bố trí, nội dung vẽ được hoặc giá trị.
+      </p>
+      <p>Ví dụ, nếu bạn muốn cung cấp một bố trí cụ thể cho ngôn ngữ Ả-rập và một
+      bố trí chung nào đó cho bất kỳ ngôn ngữ “phải-qua-trái" nào khác (như chữ Ba Tư hoặc Do Thái), vậy bạn sẽ phải:
+      </p>
+<pre class="classic no-pretty-print">
+res/
+    layout/   <span style="color:black">
+        main.xml  </span>(Default layout)
+    layout-ar/  <span style="color:black">
+        main.xml  </span>(Specific layout for Arabic)
+    layout-ldrtl/  <span style="color:black">
+        main.xml  </span>(Any "right-to-left" language, except
+                  for Arabic, because the "ar" language qualifier
+                  has a higher precedence.)
+</pre>
+        <p class="note"><strong>Lưu ý:</strong> Để kích hoạt các tính năng bố trí phải-qua-trái
+        cho ứng dụng của mình, bạn phải đặt <a href="{@docRoot}guide/topics/manifest/application-element.html#supportsrtl">{@code
+        supportsRtl}</a> thành {@code "true"} và đặt <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> thành 17 trở lên.</p>
+        <p><em>Được thêm trong API mức 17.</em></p>
+      </td>
+    </tr>
+    <tr id="SmallestScreenWidthQualifier">
+      <td>smallestWidth</td>
+      <td><code>sw&lt;N&gt;dp</code><br/><br/>
+        Ví dụ:<br/>
+        <code>sw320dp</code><br/>
+        <code>sw600dp</code><br/>
+        <code>sw720dp</code><br/>
+        v.v.
+      </td>
+      <td>
+        <p>Kích cỡ cơ bản của một màn hình, thể hiện bằng kích thước ngắn nhất của khu vực màn hình
+khả dụng. Cụ thể, smallestWidth của thiết bị bằng khoảng ngắn nhất giữa chiều cao và chiều rộng
+khả dụng của màn hình (bạn cũng có thể gọi là "chiều rộng nhỏ nhất có thể" cho màn hình). Bạn có thể
+sử dụng hạn định này để đảm bảo rằng, không phụ thuộc vào hướng hiện tại của màn hình, ứng dụng
+của bạn có ít nhất {@code &lt;N&gt;} dp chiều rộng khả dụng cho UI của mình.</p>
+        <p>Ví dụ, nếu bố trí của bạn yêu cầu rằng kích thước nhỏ nhất của khu vực màn hình tối thiểu
+phải luôn bằng 600 dp, vậy bạn có thể sử dụng hạn định này để tạo các tài nguyên bố trí, {@code
+res/layout-sw600dp/}. Hệ thống sẽ chỉ sử dụng những tài nguyên này khi kích thước nhỏ nhất của
+màn hình khả dụng tối thiểu bằng 600dp, không phụ thuộc vào cạnh 600dp là chiều cao hay chiều rộng
+theo nhận thức của người dùng. SmallestWidth là đặc trưng kích cỡ màn hình cố định của thiết bị; <strong>smallestWidth của
+thiết bị không thay đổi khi hướng của màn hình thay đổi</strong>.</p>
+        <p>SmallestWidth của một thiết bị sẽ xem xét cả trang trí màn hình và UI hệ thống. Ví
+dụ, nếu thiết bị có một số phần tử UI cố định trên màn hình mà chiếm mất khoảng trống dọc
+theo trục smallestWidth, hệ thống sẽ khai báo smallestWidth nhỏ hơn kích cỡ màn hình
+thực tế, bởi chúng là những điểm ảnh màn hình không khả dụng cho UI của bạn. Vì thế, giá trị mà bạn sử dụng
+nên là kích thước nhỏ nhất thực tế <em>mà bố trí của bạn yêu cầu</em> (thông thường, giá trị này bằng
+"chiều rộng nhỏ nhất" mà bố trí của bạn hỗ trợ, không phụ thuộc vào hướng hiện tại của màn hình).</p>
+        <p>Một số giá trị mà bạn có thể sử dụng ở đây đối với các kích cỡ màn hình phổ biến:</p>
+        <ul>
+          <li>320, cho các thiết bị có cấu hình màn hình như:
+            <ul>
+              <li>240x320 ldpi (thiết bị cầm tay QVGA)</li>
+              <li>320x480 mdpi (thiết bị cầm tay)</li>
+              <li>480x800 hdpi (thiết bị cầm tay mật độ cao)</li>
+            </ul>
+          </li>
+          <li>480, đối với những màn hình như 480x800 mdpi (máy tính bảng/thiết bị cầm tay).</li>
+          <li>600, đối với những màn hình như 600x1024 mdpi (máy tính bảng 7").</li>
+          <li>720, đối với những màn hình như 720x1280 mdpi (máy tính bảng 10").</li>
+        </ul>
+        <p>Khi ứng dụng của bạn cung cấp nhiều thư mục tài nguyên với những giá trị khác nhau cho
+        hạn định smallestWidth, hệ thống sẽ sử dụng hạn định gần nhất với (không vượt quá)
+smallestWidth của thiết bị. </p>
+        <p><em>Được thêm trong API mức 13.</em></p>
+        <p>Xem thêm thuộc tính <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html#requiresSmallest">{@code
+android:requiresSmallestWidthDp}</a>, trong đó khai báo smallestWidth tối thiểu mà ứng dụng của bạn
+tương thích với, và trường cấu hình {@link
+android.content.res.Configuration#smallestScreenWidthDp}, trong đó lưu trữ giá trị
+smallestWidth của thiết bị.</p>
+        <p>Để biết thêm thông tin về việc thiết kế cho các màn hình khác nhau và sử dụng hạn định
+này, hãy xem hướng dẫn dành cho nhà phát triển <a href="{@docRoot}guide/practices/screens_support.html">Hỗ trợ
+Nhiều Màn hình</a>.</p>
+      </td>
+    </tr>
+    <tr id="ScreenWidthQualifier">
+      <td>Chiều rộng khả dụng</td>
+      <td><code>w&lt;N&gt;dp</code><br/><br/>
+        Ví dụ:<br/>
+        <code>w720dp</code><br/>
+        <code>w1024dp</code><br/>
+        v.v.
+      </td>
+      <td>
+        <p>Quy định một chiều rộng màn hình khả dụng tối thiểu theo đơn vị {@code dp} mà tại đó, tài nguyên
+          nên được sử dụng&mdash;được định nghĩa bởi giá trị <code>&lt;N&gt;</code>.  Giá trị
+          cấu hình này sẽ thay đổi khi hướng
+          thay đổi giữa khổ ngang và dọc để khớp với chiều rộng thực tế hiện tại.</p>
+        <p>Khi ứng dụng của bạn cung cấp nhiều thư mục tài nguyên với những giá trị khác nhau
+          cho cấu hình này, hệ thống sẽ sử dụng giá trị gần nhất với (không vượt quá)
+          chiều rộng hiện tại của màn hình.  Giá trị
+          ở đây xét cả trang trí trên màn hình, vì thế nếu thiết bị có một số
+          phần tử UI cố định ở cạnh trái hoặc phải của màn hình, nó
+          sẽ sử dụng một giá trị cho chiều rộng nhỏ hơn kích cỡ màn hình thực sự, dùng
+          cho những phần tử UI này và làm giảm khoảng trống khả dụng của ứng dụng.</p>
+        <p><em>Được thêm trong API mức 13.</em></p>
+        <p>Xem thêm trường cấu hình {@link android.content.res.Configuration#screenWidthDp}
+ mà chứa chiều rộng màn hình hiện tại.</p>
+        <p>Để biết thêm thông tin về việc thiết kế cho các màn hình khác nhau và sử dụng hạn định
+này, hãy xem hướng dẫn dành cho nhà phát triển <a href="{@docRoot}guide/practices/screens_support.html">Hỗ trợ
+Nhiều Màn hình</a>.</p>
+      </td>
+    </tr>
+    <tr id="ScreenHeightQualifier">
+      <td>Chiều cao khả dụng</td>
+      <td><code>h&lt;N&gt;dp</code><br/><br/>
+        Ví dụ:<br/>
+        <code>h720dp</code><br/>
+        <code>h1024dp</code><br/>
+        v.v.
+      </td>
+      <td>
+        <p>Quy định chiều cao màn hình khả dụng tối thiểu theo đơn vị "dp" mà tại đó tài nguyên
+          nên được sử dụng&mdash;được định nghĩa bởi giá trị <code>&lt;N&gt;</code>.  Giá trị
+          cấu hình này sẽ thay đổi khi hướng
+          thay đổi giữa khổ ngang và dọc để khớp với chiều cao thực tế hiện tại.</p>
+        <p>Khi ứng dụng của bạn cung cấp nhiều thư mục tài nguyên với những giá trị khác nhau
+          cho cấu hình này, hệ thống sẽ sử dụng giá trị gần nhất với (không vượt quá)
+          chiều cao hiện tại của màn hình.  Giá trị
+          ở đây xét cả trang trí trên màn hình, vì thế nếu thiết bị có một số
+          phần tử UI cố định trên cạnh trên hoặc dưới của màn hình, nó sẽ sử dụng
+          một giá trị cho chiều cao nhỏ hơn kích cỡ màn hình thực sự, dùng
+          cho những phần tử UI này và làm giảm khoảng trống khả dụng của ứng dụng.  Trang trí
+          trên màn hình mà không cố định (chẳng hạn như thanh trạng thái của điện thoại mà có thể được
+          ẩn khi ở toàn màn hình) <em>không</em> được xét ở đây, cả
+          những trang trí trên cửa sổ như thanh tiêu đề hay thanh hành động cũng vậy, vì thế ứng dụng phải được chuẩn bị để
+          xử lý một khoảng trống nhỏ hơn mức mà chúng quy định.
+        <p><em>Được thêm trong API mức 13.</em></p>
+        <p>Xem thêm trường cấu hình {@link android.content.res.Configuration#screenHeightDp}
+ mà chứa chiều rộng màn hình hiện tại.</p>
+        <p>Để biết thêm thông tin về việc thiết kế cho các màn hình khác nhau và sử dụng hạn định
+này, hãy xem hướng dẫn dành cho nhà phát triển <a href="{@docRoot}guide/practices/screens_support.html">Hỗ trợ
+Nhiều Màn hình</a>.</p>
+      </td>
+    </tr>
+    <tr id="ScreenSizeQualifier">
+      <td>Kích cỡ màn hình</td>
+      <td>
+        <code>small</code><br/>
+        <code>normal</code><br/>
+        <code>large</code><br/>
+        <code>xlarge</code>
+      </td>
+      <td>
+        <ul class="nolist">
+        <li>{@code small}: Các màn hình có kích cỡ tương tự như màn hình
+       QVGA mật độ thấp. Kích cỡ bố trí tối thiểu đối với một màn hình nhỏ
+        bằng xấp xỉ 320x426 đơn vị dp.  Các ví dụ như QVGA mật độ thấp và VGA mật độ
+        cao.</li>
+        <li>{@code normal}: Các màn hình có kích cỡ tương tự như màn hình
+       HVGA mật độ trung bình. Kích cỡ bố trí tối thiểu
+        đối với một màn hình bình thường bằng xấp xỉ 320x470 đơn vị dp.  Ví dụ
+        về những màn hình như vậy là WQVGA mật độ thấp, HVGA mật độ trung bình, WVGA
+        mật độ cao.</li>
+        <li>{@code large}: Các màn hình có kích cỡ tương tự như màn hình
+       VGA mật độ trung bình.
+        Kích cỡ bố trí tối thiểu đối với một màn hình lớn bằng xấp xỉ 480x640 đơn vị dp.
+        Ví dụ như các màn hình mật độ trung bình VGA và WVGA.</li>
+        <li>{@code xlarge}: Các màn hình lớn hơn đáng kể so với màn hình
+        HVGA mật độ trung bình truyền thống. Kích cỡ bố trí tối thiểu đối với một màn hình siêu lớn
+        bằng xấp xỉ 720x960 đơn vị dp.  Trong hầu hết trường hợp, những thiết bị có màn hình
+        siêu lớn sẽ quá lớn để mang trong túi và gần như là 
+        thiết bị kiểu máy tính bảng. <em>Được thêm trong API mức 9.</em></li>
+        </ul>
+        <p class="note"><strong>Lưu ý:</strong> Việc sử dụng một hạn định kích cỡ không hàm ý rằng các
+tài nguyên <em>chỉ</em> áp dụng cho màn hình có kích cỡ đó. Nếu bạn không cung cấp cho các tài nguyên
+thay thế với các hạn định khớp tốt hơn với cấu hình thiết bị hiện tại, hệ thống có thể sử dụng
+bất kỳ tài nguyên nào <a href="#BestMatch">phù hợp nhất</a>.</p>
+        <p class="caution"><strong>Chú ý:</strong> Nếu tất cả tài nguyên của bạn sử dụng một hạn định kích cỡ
+<em>lớn hơn</em> màn hình hiện tại, hệ thống sẽ <strong>không</strong> sử dụng chúng và
+ứng dụng của bạn sẽ bị lỗi vào thời gian chạy (ví dụ, nếu tất cả tài nguyên bố trí được gắn thẻ hạn định {@code
+xlarge} nhưng thiết bị lại có màn hình kích cỡ bình thường).</p>
+        <p><em>Được thêm trong API mức 4.</em></p>
+        
+        <p>Xem <a href="{@docRoot}guide/practices/screens_support.html">Hỗ trợ Nhiều
+Màn hình</a> để biết thêm thông tin.</p>
+        <p>Xem thêm trường cấu hình {@link android.content.res.Configuration#screenLayout},
+ở đó cho biết màn hình là màn hình nhỏ, bình thường,
+hay lớn.</p>
+      </td>
+    </tr>
+    <tr id="ScreenAspectQualifier">
+      <td>Tỷ lệ màn hình</td>
+      <td>
+        <code>long</code><br/>
+        <code>notlong</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code long}: Màn hình dài, chẳng hạn như WQVGA, WVGA, FWVGA</li>
+          <li>{@code notlong}: Màn hình không dài, chẳng hạn như QVGA, HVGA và VGA</li>
+        </ul>
+        <p><em>Được thêm trong API mức 4.</em></p>
+        <p>Giá trị này thuần túy được dựa trên tỷ lệ khung ảnh của màn hình (màn hình "dài" sẽ rộng hơn). Nó 
+không liên quan tới hướng của màn hình.</p>
+        <p>Xem thêm trường cấu hình {@link android.content.res.Configuration#screenLayout},
+ở đó cho biết màn hình có dài không.</p>
+      </td>
+    </tr>
+    <tr id="OrientationQualifier">
+      <td>Hướng của màn hình</td>
+      <td>
+        <code>port</code><br/>
+        <code>land</code>  <!-- <br/>
+        <code>square</code>  -->
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code port}: Thiết bị ở hướng đứng (thẳng đứng)</li>
+          <li>{@code land}: Thiết bị ở khổ ngang (nằm ngang)</li>
+          <!-- Square mode is currently not used. -->
+        </ul>
+        <p>Giá trị này có thể thay đổi trong suốt vòng đời ứng dụng của bạn nếu người dùng xoay
+màn hình. Xem phần <a href="runtime-changes.html">Xử lý Thay đổi Thời gian chạy</a> để biết thông tin về
+ảnh hưởng của điều này tới ứng dụng của bạn trong thời gian chạy.</p>
+        <p>Xem thêm trường cấu hình {@link android.content.res.Configuration#orientation}, trong đó
+cho biết hướng thiết bị hiện tại.</p>
+      </td>
+    </tr>
+    <tr id="UiModeQualifier">
+      <td>Chế độ UI</td>
+      <td>
+        <code>car</code><br/>
+        <code>desk</code><br/>
+        <code>television</code><br/>
+        <code>appliance</code>
+        <code>watch</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code car}: Thiết bị đang hiển thị trong đế gắn trên ô-tô</li>
+          <li>{@code desk}: Thiết bị đang hiển thị trong đế gắn trên bàn</li>
+          <li>{@code television}: Thiết bị đang hiển thị trên một TV, mang đến một
+          trải nghiệm "10 foot" (3 mét) trong đó UI của nó nằm trên một màn hình lớn
+          cách xa người dùng, được định hướng chủ yếu quanh DPAD hoặc cách
+          tương tác không sử dụng con trỏ khác</li>
+          <li>{@code appliance}: Thiết bị đang đóng vai trò như một dụng cụ không
+          có màn hình hiển thị</li>
+          <li>{@code watch}: Thiết bị có một màn hình hiển thị và được đeo trên cổ tay</li>
+        </ul>
+        <p><em>Được thêm trong API mức 8, TV được thêm trong API 13, đồng hồ được thêm trong API 20.</em></p>
+        <p>Để biết thông tin về cách ứng dụng của bạn hồi đáp khi thiết bị được cắm vào hoặc
+        rút khỏi đế, hãy đọc <a href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">Xác định
+và Theo dõi Trạng thái và Loại Đế</a>.</p>
+        <p>Giá trị này có thể thay đổi trong suốt vòng đời ứng dụng của bạn nếu người dùng đặt
+thiết bị vào đế. Bạn có thể kích hoạt hoặc vô hiệu hóa một số chế độ này bằng cách sử dụng {@link
+android.app.UiModeManager}. Xem phần <a href="runtime-changes.html">Xử lý Thay đổi Thời gian chạy</a> để
+biết thông tin về ảnh hưởng của điều này tới ứng dụng của bạn trong thời gian chạy.</p>
+      </td>
+    </tr>
+    <tr id="NightQualifier">
+      <td>Chế độ ban đêm</td>
+      <td>
+        <code>night</code><br/>
+        <code>notnight</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code night}: Thời gian ban đêm</li>
+          <li>{@code notnight}: Thời gian ban ngày</li>
+        </ul>
+        <p><em>Được thêm trong API mức 8.</em></p>
+        <p>Giá trị này có thể thay đổi trong suốt vòng đời ứng dụng của bạn nếu chế độ ban đêm được để ở
+chế độ tự động (mặc định), trong trường hợp đó chế độ sẽ thay đổi dựa vào thời gian trong ngày.  Bạn có thể kích hoạt
+hoặc vô hiệu hóa chế độ này bằng cách sử dụng {@link android.app.UiModeManager}. Xem phần <a href="runtime-changes.html">Xử lý Thay đổi Thời gian chạy</a> để biết thông tin về ảnh hưởng của điều này tới
+ứng dụng của bạn trong thời gian chạy.</p>
+      </td>
+    </tr>
+    <tr id="DensityQualifier">
+      <td>Mật độ điểm ảnh màn hình (dpi)</td>
+      <td>
+        <code>ldpi</code><br/>
+        <code>mdpi</code><br/>
+        <code>hdpi</code><br/>
+        <code>xhdpi</code><br/>
+        <code>xxhdpi</code><br/>
+        <code>xxxhdpi</code><br/>
+        <code>nodpi</code><br/>
+        <code>tvdpi</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code ldpi}: Màn hình mật độ thấp; xấp xỉ 120dpi.</li>
+          <li>{@code mdpi}: Màn hình mật độ trung bình (trên HVGA truyền thống); xấp xỉ
+160dpi.</li>
+          <li>{@code hdpi}: Màn hình mật độ cao; xấp xỉ 240dpi.</li>
+          <li>{@code xhdpi}: Màn hình mật độ siêu cao; xấp xỉ 320dpi. <em>Được thêm trong API
+Mức 8</em></li>
+          <li>{@code xxhdpi}: Màn hình mật độ siêu siêu cao; xấp xỉ 480dpi. <em>Được thêm trong API
+Mức 16</em></li>
+          <li>{@code xxxhdpi}: Mật độ siêu siêu siêu cao sử dụng (chỉ biểu tượng trình khởi chạy, xem
+            <a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">ghi chú</a> 
+            trong <em>Hỗ trợ Nhiều Màn hình</em>); xấp xỉ 640dpi. <em>Được thêm trong API
+Mức 18</em></li>
+          <li>{@code nodpi}: Loại này có thể được sử dụng cho tài nguyên bitmap mà bạn không muốn được định cỡ
+cho khớp với mật độ của thiết bị.</li>
+          <li>{@code tvdpi}: Màn hình trong khoảng giữa mdpi và hdpi; xấp xỉ 213dpi. Đây
+không được coi là nhóm mật độ "cơ bản". Nó được dành chủ yếu cho TV và hầu hết
+các ứng dụng không cần nó&mdash;với điều kiện các tài nguyên mdpi và hpdi đủ cho hầu hết ứng dụng
+và hệ thống sẽ định cỡ chúng cho phù hợp. Hạn định này đã được giới thiệu với API mức 13.</li>
+        </ul>
+        <p>Có tỷ lệ định cỡ 3:4:6:8:12:16 giữa sáu mật độ cơ bản (bỏ qua mật độ
+tvdpi). Vì thế, một tệp bimap 9x9 trong ldpi sẽ bằng 12x12 trong mdpi, 18x18 trong hdpi, 24x24 trong xhdpi, v.v.
+</p>
+        <p>Nếu bạn quyết định rằng tài nguyên hình ảnh của mình không đủ đẹp trên TV hoặc
+một số thiết bị khác và muốn thử tài nguyên tvdpi, hệ số định cỡ sẽ bằng 1,33*mdpi. Ví
+dụ, một hình ảnh 100px x 100px đối với màn hình mdpi sẽ bằng 133px x 133px đối với tvdpi.</p>
+        <p class="note"><strong>Lưu ý:</strong> Việc sử dụng một hạn định mật độ không hàm ý rằng các
+tài nguyên <em>chỉ</em> áp dụng cho màn hình có mật độ đó. Nếu bạn không cung cấp cho các tài nguyên
+thay thế với các hạn định khớp tốt hơn với cấu hình thiết bị hiện tại, hệ thống có thể sử dụng
+bất kỳ tài nguyên nào <a href="#BestMatch">phù hợp nhất</a>.</p>
+        <p>Xem <a href="{@docRoot}guide/practices/screens_support.html">Hỗ trợ Nhiều
+Màn hình</a> để biết thêm thông tin về cách xử lý các mật độ màn hình khác nhau và cách Android
+có thể định cỡ bitmap của mình cho vừa với mật độ hiện tại.</p>
+       </td>
+    </tr>
+    <tr id="TouchscreenQualifier">
+      <td>Loại màn hình cảm ứng</td>
+      <td>
+        <code>notouch</code><br/>
+        <code>finger</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code notouch}: Thiết bị không có màn hình cảm ứng.</li>
+          <li>{@code finger}: Thiết bị có màn hình cảm ứng để
+          được sử dụng thông qua tương tác hướng của ngón tay của người dùng.</li>
+        </ul>
+        <p>Xem thêm trường cấu hình {@link android.content.res.Configuration#touchscreen},
+nó cho biết loại màn hình cảm ứng trên thiết bị.</p>
+      </td>
+    </tr>
+    <tr id="KeyboardAvailQualifier">
+      <td>Sự sẵn có của bàn phím</td>
+      <td>
+        <code>keysexposed</code><br/>
+        <code>keyshidden</code><br/>
+        <code>keyssoft</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code keysexposed}: Thiết bị có sẵn một bàn phím. Nếu thiết bị có một
+bàn phím mềm được kích hoạt (có khả năng), giá trị này có thể được sử dụng khi bàn phím cứng
+<em>không</em> hiển thị trước người dùng, ngay cả khi thiết bị không có bàn phím cứng. Nếu không có
+bàn phím mềm hoặc bàn phím mềm bị vô hiệu hóa, khi đó giá trị này chỉ được sử dụng khi một bàn phím cứng được
+hiển thị.</li>
+          <li>{@code keyshidden}: Thiết bị có sẵn một bàn phím cứng nhưng nó bị
+ẩn đi <em>và </em> thiết bị <em>không</em> có bàn phím mềm được kích hoạt.</li>
+          <li>{@code keyssoft}: Thiết bị có một bàn phím mềm được kích hoạt dù nó có
+hiển thị hay không.</li>
+        </ul>
+        <p>Nếu bạn cung cấp các tài nguyên <code>keysexposed</code>, nhưng không cung cấp tài nguyên <code>keyssoft</code>
+, hệ thống sẽ sử dụng tài nguyên <code>keysexposed</code> mà không phụ thuộc vào việc có hiển thị
+bàn phím hay không, miễn là hệ thống có kích hoạt một bàn phím mềm.</p>
+        <p>Giá trị này có thể thay đổi trong vòng đời ứng dụng của bạn nếu người dùng mở một bàn phím
+cứng. Xem phần <a href="runtime-changes.html">Xử lý Thay đổi Thời gian chạy</a> để biết thông tin về
+ảnh hưởng của điều này tới ứng dụng của bạn trong thời gian chạy.</p>
+        <p>Xem thêm các trường cấu hình {@link
+android.content.res.Configuration#hardKeyboardHidden} và {@link
+android.content.res.Configuration#keyboardHidden}, theo đó tương ứng cho biết mức độ hiển thị của bàn phím
+cứng và mức độ hiển thị của bất kỳ loại bàn phím nào (bao gồm bàn phím mềm).</p>
+      </td>
+    </tr>
+    <tr id="ImeQualifier">
+      <td>Phương pháp nhập liệu văn bản chính</td>
+      <td>
+        <code>nokeys</code><br/>
+        <code>qwerty</code><br/>
+        <code>12key</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code nokeys}: Thiết bị không có phím cứng cho việc nhập liệu văn bản.</li>
+          <li>{@code qwerty}: Thiết bị có một bàn phím qwerty cứng, dù nó có hiển thị với
+người dùng
+hay không.</li>
+          <li>{@code 12key}: Thiết bị có một bàn phím 12-phím cứng, dù nó có hiển thị với
+người dùng hay không.</li>
+        </ul>
+        <p>Xem thêm trường cấu hình {@link android.content.res.Configuration#keyboard}, trong đó
+cho biết phương pháp nhập liệu văn bản chính sẵn có.</p>
+      </td>
+    </tr>
+    <tr id="NavAvailQualifier">
+      <td>Sự sẵn có của phím điều hướng</td>
+      <td>
+        <code>navexposed</code><br/>
+        <code>navhidden</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code navexposed}: Có sẵn phím điều hướng cho người dùng.</li>
+          <li>{@code navhidden}: Không có sẵn phím điều hướng (chẳng hạn như phía sau một nắp
+đóng).</li>
+        </ul>
+        <p>Giá trị này có thể thay đổi trong suốt vòng đời ứng dụng của bạn nếu người dùng làm hiện
+phím điều hướng. Xem phần <a href="runtime-changes.html">Xử lý Thay đổi Thời gian chạy</a> để
+biết thông tin về ảnh hưởng của điều này tới ứng dụng của bạn trong thời gian chạy.</p>
+        <p>Xem thêm trường cấu hình {@link android.content.res.Configuration#navigationHidden},
+ở đó có cho biết các phím điều hướng có bị ẩn không.</p>
+      </td>
+    </tr>
+    <tr id="NavigationQualifier">
+      <td>Phương pháp điều hướng không cảm ứng chính</td>
+      <td>
+        <code>nonav</code><br/>
+        <code>dpad</code><br/>
+        <code>trackball</code><br/>
+        <code>wheel</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code nonav}: Thiết bị không có phương tiện điều hướng ngoài cách sử dụng
+màn hình cảm ứng.</li>
+          <li>{@code dpad}: Thiết bị có bàn điều hướng (d-pad) để điều hướng.</li>
+          <li>{@code trackball}: Thiết bị có bi xoay để điều hướng.</li>
+          <li>{@code wheel}: Thiết bị có bánh xe điều hướng để điều hướng (không phổ biến).</li>
+        </ul>
+        <p>Xem thêm trường cấu hình {@link android.content.res.Configuration#navigation}, trong đó
+cho biết loại phương pháp điều hướng sẵn có.</p>
+      </td>
+    </tr>
+<!-- DEPRECATED
+    <tr>
+      <td>Screen dimensions</td>
+      <td>Examples:<br/>
+        <code>320x240</code><br/>
+        <code>640x480</code><br/>
+        etc.
+      </td>
+      <td>
+        <p>The larger dimension must be specified first. <strong>This configuration is deprecated
+and should not be used</strong>. Instead use "screen size," "wider/taller screens," and "screen
+orientation" described above.</p>
+      </td>
+    </tr>
+-->
+    <tr id="VersionQualifier">
+      <td>Phiên bản Nền tảng (Mức API)</td>
+      <td>Ví dụ:<br/>
+        <code>v3</code><br/>
+        <code>v4</code><br/>
+        <code>v7</code><br/>
+        v.v.</td>
+      <td>
+        <p>Mức API được hỗ trợ bởi thiết bị. Ví dụ, <code>v1</code> đối với API mức
+1 (thiết bị ở phiên bản Android 1.0 hoặc cao hơn) và <code>v4</code> đối với API mức 4 (thiết bị ở phiên bản Android
+1.6 hoặc cao hơn). Xem tài liệu <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Mức API của Android</a> để biết thêm thông tin
+về những giá trị này.</p>
+      </td>
+    </tr>
+</table>
+
+
+<p class="note"><strong>Lưu ý:</strong> Một số hạn định cấu hình đã được thêm kể từ phiên bản Android
+1.0, vì thế không phải tất cả phiên bản Android đều hỗ trợ tất cả hạn định. Việc sử dụng một hạn định mới sẽ hàm ý
+thêm hạn định phiên bản nền tảng sao cho các thiết bị cũ hơn chắc chắn sẽ bỏ qua nó. Ví dụ, sử dụng
+một hạn định <code>w600dp</code> sẽ tự động bao gồm hạn định <code>v13</code>, vì
+hạn định chiều rộng khả dụng mới có trong API mức 13. Để tránh bất kỳ sự cố nào, hãy luôn đưa vào một tập hợp
+các tài nguyên mặc định (tập hợp các tài nguyên <em>không có hạn định</em>). Để biết thêm thông tin, hãy xem phần
+nói về <a href="#Compatibility">Cung cấp Tính tương thích giữa Thiết bị với Tài nguyên
+Tốt nhất</a>.</p>
+
+
+
+<h3 id="QualifierRules">Quy tắc về tên hạn định</h3>
+
+<p>Sau đây là một số quy tắc về việc sử dụng tên của hạn định cấu hình:</p>
+
+<ul>
+    <li>Bạn có thể quy định nhiều hạn định cho một tập hợp đơn lẻ các tài nguyên, được tách riêng bởi dấu gạch ngang. Ví
+dụ, <code>drawable-en-rUS-land</code> sẽ áp dụng cho các thiết bị US-English ở hướng
+khổ ngang.</li>
+    <li>Các hạn định phải theo thứ tự liệt kê trong <a href="#table2">bảng 2</a>. Ví
+dụ:
+      <ul>
+        <li>Sai: <code>drawable-hdpi-port/</code></li>
+        <li>Đúng: <code>drawable-port-hdpi/</code></li>
+      </ul>
+    </li>
+    <li>Các thư mục tài nguyên thay thế không được lồng nhau. Ví dụ, bạn không được có
+<code>res/drawable/drawable-en/</code>.</li>
+    <li>Các giá trị không phân biệt chữ hoa/thường.  Trình biên dịch tài nguyên sẽ chuyển tên thư mục
+    thành chữ thường trước khi xử lý để tránh các vấn đề xảy ra trên hệ thống tệp
+    không phân biệt chữ hoa/thường. Bất kỳ việc đổi sang chữ hoa nào trong tên chỉ nhằm mục đích dễ đọc hơn.</li>
+    <li>Chỉ hỗ trợ một giá trị cho mỗi loại hạn định. Ví dụ, nếu bạn muốn sử dụng
+cùng các tệp vẽ được cho tiếng Tây Ban Nha và tiếng Pháp, bạn <em>không thể</em> đặt tên thư mục là
+<code>drawable-rES-rFR/</code>. Thay vào đó, bạn cần hai thư mục tài nguyên chẳng hạn như
+<code>drawable-rES/</code> và <code>drawable-rFR/</code>, trong đó chứa các tệp phù hợp.
+Tuy nhiên, bạn không bắt buộc thực sự phải tạo bản sao các tệp như nhau ở cả hai vị trí. Thay vào đó, bạn có thể
+tạo một bí danh tới một tài nguyên. Xem phần <a href="#AliasResources">Tạo
+tài nguyên bí danh</a> ở bên dưới.</li>
+</ul>
+
+<p>Sau khi bạn lưu tài nguyên thay thế vào các thư mục được đặt tên bằng
+những hạn định này, Android sẽ tự động áp dụng các tài nguyên trong ứng dụng của bạn dựa trên
+cấu hình thiết bị hiện tại. Cứ mỗi lần yêu cầu một tài nguyên, Android lại kiểm tra các thư mục tài nguyên
+thay thế chứa tệp tài nguyên được yêu cầu, rồi <a href="#BestMatch">tìm tài nguyên
+so khớp phù hợp nhất</a> (được trình bày ở bên dưới). Nếu không có tài nguyên thay thế khớp
+với một cấu hình thiết bị cụ thể, khi đó Android sẽ sử dụng các tài nguyên mặc định tương ứng (
+tập hợp các tài nguyên cho một loại tài nguyên cụ thể không bao gồm hạn định
+cấu hình).</p>
+
+
+
+<h3 id="AliasResources">Tạo tài nguyên bí danh</h3>
+
+<p>Khi bạn có một tài nguyên muốn sử dụng cho nhiều hơn một cấu hình
+thiết bị (nhưng không muốn cung cấp làm tài nguyên mặc định), bạn không cần đặt
+cùng tài nguyên đó vào nhiều hơn một thư mục tài nguyên thay thế. Thay vào đó, bạn có thể (trong một số trường hợp) tạo một tài nguyên
+thay thế
+đóng vai trò như một bí danh cho tài nguyên được lưu trong thư mục tài nguyên mặc định của bạn.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Không phải tất cả tài nguyên đều đưa ra cơ chế mà theo đó bạn có thể
+tạo một bí danh tới một tài nguyên khác. Cụ thể, hoạt hình, menu, tài nguyên thô và các tài nguyên
+không được quy định khác trong thư mục {@code xml/} không cung cấp tính năng này.</p>
+
+<p>Ví dụ, hãy tưởng tượng bạn có một biểu tượng ứng dụng, {@code icon.png}, và cần phiên bản duy nhất của
+nó cho các bản địa khác nhau. Tuy nhiên, hai bản địa English-Canadian và French-Canadian, cần
+sử dụng cùng phiên bản. Bạn có thể giả sử rằng mình cần sao chép cùng hình ảnh
+vào thư mục tài nguyên cho cả English-Canadian và French-Canadian, nhưng điều đó
+không đúng. Thay vào đó, bạn có thể lưu hình ảnh được sử dụng cho cả hai thành {@code icon_ca.png} (bất kỳ
+tên nào khác ngoài {@code icon.png}) và đặt
+nó vào thư mục {@code res/drawable/} mặc định. Sau đó, tạo một tệp {@code icon.xml} trong {@code
+res/drawable-en-rCA/} và {@code res/drawable-fr-rCA/} tham chiếu tới tài nguyên {@code icon_ca.png}
+bằng cách sử dụng phần tử {@code &lt;bitmap&gt;}. Điều này cho phép bạn lưu trữ chỉ một phiên bản của tệp
+PNG và hai tệp XML nhỏ trỏ tới nó. (Ví dụ về tệp XML được trình bày ở bên dưới.)</p>
+
+
+<h4>Nội dung vẽ được</h4>
+
+<p>Để tạo một bí danh cho một nội dung vẽ được đang tồn tại, hãy sử dụng phần tử {@code &lt;bitmap&gt;}.
+Ví dụ:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/icon_ca" />
+</pre>
+
+<p>Nếu bạn lưu tệp này thành {@code icon.xml} (trong một thư mục tài nguyên thay thế chẳng hạn như
+{@code res/drawable-en-rCA/}), nó sẽ được biên dịch vào một tài nguyên mà bạn
+có thể tham chiếu như là {@code R.drawable.icon}, nhưng thực tế lại là bí danh cho tài nguyên {@code
+R.drawable.icon_ca} (được lưu trong {@code res/drawable/}).</p>
+
+
+<h4>Bố trí</h4>
+
+<p>Để tạo một bí danh cho một bố trí hiện tại, hãy sử dụng phần tử {@code &lt;include&gt;}
+, được bọc trong một {@code &lt;merge&gt;}. Ví dụ:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;merge>
+    &lt;include layout="@layout/main_ltr"/>
+&lt;/merge>
+</pre>
+
+<p>Nếu bạn lưu tệp này thành {@code main.xml}, nó sẽ được biên dịch thành một tài nguyên mà bạn có thể tham chiếu
+như là {@code R.layout.main}, nhưng thực tế lại là một bí danh cho tài nguyên {@code R.layout.main_ltr}
+.</p>
+
+
+<h4>Xâu và các giá trị đơn giản khác</h4>
+
+<p>Để tạo một bí danh cho một xâu hiện có, chỉ cần sử dụng ID tài nguyên của xâu
+mong muốn làm giá trị cho xâu mới. Ví dụ:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;string name="hello">Hello&lt;/string>
+    &lt;string name="hi">@string/hello&lt;/string>
+&lt;/resources>
+</pre>
+
+<p>Tài nguyên {@code R.string.hi} lúc này là một bí danh cho {@code R.string.hello}.</p>
+
+<p> <a href="{@docRoot}guide/topics/resources/more-resources.html">Các giá trị đơn giản khác</a> cũng
+hoạt động tương tự. Ví dụ, màu sắc:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;color name="yellow">#f00&lt;/color>
+    &lt;color name="highlight">@color/red&lt;/color>
+&lt;/resources>
+</pre>
+
+
+
+
+<h2 id="Compatibility">Cung cấp Tính tương thích giữa Thiết bị với Tài nguyên Tốt nhất</h2>
+
+<p>Để ứng dụng của bạn hỗ trợ nhiều cấu hình thiết bị, một điều rất quan trọng đó là
+bạn luôn cung cấp các tài nguyên mặc định cho từng loại tài nguyên mà ứng dụng của bạn sử dụng.</p>
+
+<p>Ví dụ, nếu ứng dụng của bạn hỗ trợ vài ngôn ngữ, hãy luôn bao gồm một thư mục {@code
+values/} (trong đó, xâu của bạn được lưu) <em>mà không cần</em> một <a href="#LocaleQualifier">hạn định ngôn ngữ và khu vực</a>. Nếu thay vào đó bạn đặt tất cả tệp xâu của mình
+vào các thư mục có một hạn định ngôn ngữ và khu vực, khi đó ứng dụng của bạn sẽ bị lỗi khi chạy
+trên một thiết bị được đặt ở một ngôn ngữ mà các xâu của bạn không hỗ trợ. Nhưng miễn là bạn cung cấp các tài nguyên
+{@code values/} mặc định, khi đó ứng dụng của bạn sẽ chạy bình thường (ngay cả khi người dùng không
+hiểu ngôn ngữ đó&mdash;vậy còn tốt hơn là bị lỗi).</p>
+
+<p>Tương tự, nếu bạn cung cấp các tài nguyên bố trí khác nhau dựa trên hướng của màn hình, bạn nên
+chọn một hướng làm mặc định của mình. Ví dụ, thay vì cung cấp tài nguyên bố trí trong {@code
+layout-land/} cho khổ ngang và {@code layout-port/} cho khổ dọc, hãy để một cái làm mặc định, chẳng hạn như
+{@code layout/} đối với khổ ngang và {@code layout-port/} đối với khổ dọc.</p>
+
+<p>Việc cung cấp tài nguyên mặc định quan trọng không chỉ bởi ứng dụng của bạn có thể chạy trên một
+cấu hình mà bạn chưa nghĩ đến, mà còn bởi các phiên bản Android mới đôi khi thêm
+hạn định cấu hình mà những phiên bản cũ hơn không hỗ trợ. Nếu bạn sử dụng một hạn định tài nguyên mới,
+nhưng vẫn duy trì tính tương thích về mã với các phiên bản cũ hơn của Android thì khi một phiên bản cũ hơn của
+Android chạy trên ứng dụng của bạn, nó sẽ bị lỗi nếu bạn không cung cấp tài nguyên mặc định, do nó 
+không thể sử dụng tài nguyên được đặt tên bằng hạn định mới. Ví dụ, nếu <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code
+minSdkVersion}</a> của bạn được đặt bằng 4, và bạn xác định tất cả tài nguyên vẽ được của mình bằng cách sử dụng <a href="#NightQualifier">chế độ ban đêm</a> ({@code night} hoặc {@code notnight}, đã được thêm trong API
+Mức 8), khi đó một thiết bị API mức 4 sẽ không thể truy cập tài nguyên vẽ được của bạn và sẽ bị lỗi. Trong trường hợp
+này, bạn có thể muốn {@code notnight} làm tài nguyên mặc định của mình, vì thế bạn nên loại trừ hạn định
+đó sao cho tài nguyên vẽ được của bạn ở trong {@code drawable/} hoặc {@code drawable-night/}.</p>
+
+<p>Vì vậy, để mang lại khả năng tương thích với thiết bị tốt nhất, hãy luôn cung cấp tài nguyên
+mặc định cho những tài nguyên mà ứng dụng của bạn cần thực hiện đúng cách. Sau đó, hãy tạo tài nguyên
+thay thế cho các cấu hình thiết bị cụ thể bằng cách sử dụng hạn định cấu hình.</p>
+
+<p>Có một ngoại lệ đối với quy tắc này: Nếu <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> của ứng dụng của bạn bằng 4 hoặc
+lớn hơn, bạn <em>không</em> cần đến tài nguyên vẽ được mặc định khi cung cấp tài nguyên
+vẽ được thay thế bằng hạn định <a href="#DensityQualifier">mật độ màn hình</a>. Kể cả khi không có
+tài nguyên vẽ được mặc định, Android cũng có thể tìm thấy kết quả khớp tốt nhất trong số các mật độ màn hình thay thế và sẽ định cỡ
+bitmap nếu cần. Tuy nhiên, để có trải nghiệm tốt nhất trên tất cả thiết bị, bạn nên
+cung cấp nội dung vẽ được thay thế cho cả ba loại mật độ.</p>
+
+
+
+<h2 id="BestMatch">Cách Android tìm Tài nguyên Khớp Tốt nhất</h2>
+
+<p>Khi bạn yêu cầu một tài nguyên mà bạn cung cấp nội dung thay thế cho nó, Android sẽ lựa chọn
+tài nguyên thay thế để sử dụng vào thời gian chạy, tùy vào cấu hình thiết bị hiện tại. Để
+diễn tả cách Android lựa chọn một tài nguyên thay thế, giả sử có các thư mục vẽ được sau,
+mỗi thư mục lại chứa các phiên bản khác nhau của cùng hình ảnh:</p>
+
+<pre class="classic no-pretty-print">
+drawable/
+drawable-en/
+drawable-fr-rCA/
+drawable-en-port/
+drawable-en-notouch-12key/
+drawable-port-ldpi/
+drawable-port-notouch-12key/
+</pre>
+
+<p>Và giả sử cấu hình thiết bị như sau:</p>
+
+<p style="margin-left:1em;">
+Bản địa = <code>en-GB</code> <br/>
+Hướng màn hình = <code>port</code> <br/>
+Mật độ điểm ảnh màn hình = <code>hdpi</code> <br/>
+Loại màn hình cảm ứng = <code>notouch</code> <br/>
+Phương pháp nhập liệu văn bản chính = <code>12key</code>
+</p>
+
+<p>Bằng cách so sánh cấu hình thiết bị với các tài nguyên thay thế sẵn có, Android sẽ lựa chọn
+nội dung vẽ được từ {@code drawable-en-port}.</p>
+
+<p>Hệ thống ra quyết định của mình về các tài nguyên nào sẽ sử dụng bằng lô-gic
+sau:</p>
+
+
+<div class="figure" style="width:371px">
+<img src="{@docRoot}images/resources/res-selection-flowchart.png" alt="" height="471" />
+<p class="img-caption"><strong>Hình 2.</strong> Lưu đồ về cách Android tìm tài nguyên
+khớp tốt nhất.</p>
+</div>
+
+
+<ol>
+  <li>Loại bỏ các tệp tài nguyên mà trái với cấu hình thiết bị.
+    <p>Thư mục <code>drawable-fr-rCA/</code> bị loại bỏ vì nó
+trái với bản địa <code>en-GB</code>.</p>
+<pre class="classic no-pretty-print">
+drawable/
+drawable-en/
+<strike>drawable-fr-rCA/</strike>
+drawable-en-port/
+drawable-en-notouch-12key/
+drawable-port-ldpi/
+drawable-port-notouch-12key/
+</pre>
+<p class="note"><strong>Ngoại lệ:</strong> Mật độ điểm ảnh màn hình là một hạn định không
+bị loại bỏ do trái ngược. Mặc dù mật độ màn hình của thiết bị là hdpi,
+<code>drawable-port-ldpi/</code> không bị loại bỏ vì mọi mật độ màn hình đều
+được coi là một kết quả khớp tại thời điểm này. Bạn có thể tham khảo thêm thông tin trong tài liệu <a href="{@docRoot}guide/practices/screens_support.html">Hỗ trợ Nhiều
+Màn hình</a>.</p></li>
+
+  <li>Chọn hạn định có mức ưu tiên cao nhất (tiếp theo) trong danh sách (<a href="#table2">bảng 2</a>).
+(Bắt đầu bằng MCC, sau đó di chuyển xuống.) </li>
+  <li>Có thư mục tài nguyên nào bao gồm hạn định này không?  </li>
+    <ul>
+      <li>Nếu Không, hãy quay lại bước 2 và tìm với hạn định tiếp theo. (Trong ví dụ,
+  câu trả lời là "không" tới khi đi đến hạn định ngôn ngữ.)</li>
+      <li>Nếu Có, tiếp tục sang bước 4.</li>
+    </ul>
+  </li>
+
+  <li>Loại bỏ các thư mục tài nguyên không bao gồm hạn định này. Trong ví dụ, hệ thống
+sẽ loại bỏ tất cả thư mục không bao gồm hạn định ngôn ngữ:</li>
+<pre class="classic no-pretty-print">
+<strike>drawable/</strike>
+drawable-en/
+drawable-en-port/
+drawable-en-notouch-12key/
+<strike>drawable-port-ldpi/</strike>
+<strike>drawable-port-notouch-12key/</strike>
+</pre>
+<p class="note"><strong>Ngoại lệ:</strong> Nếu hạn định đang xét là mật độ điểm ảnh màn hình,
+Android sẽ chọn tùy chọn khớp gần nhất với mật độ màn hình của thiết bị.
+Nhìn chung, Android ưu tiên giảm kích cỡ một hình ảnh ban đầu lớn hơn thay vì tăng kích cỡ một hình ảnh ban đầu
+nhỏ hơn. Xem phần <a href="{@docRoot}guide/practices/screens_support.html">Hỗ trợ Nhiều
+Màn hình</a>.</p>
+  </li>
+
+  <li>Quay lại và lặp lại các bước 2, 3 và 4 tới khi chỉ còn lại một thư mục. Trong ví dụ, hướng
+màn hình là hạn định tiếp theo nếu có kết quả khớp.
+Vì thế, các tài nguyên không quy định hướng màn hình sẽ bị loại bỏ:
+<pre class="classic no-pretty-print">
+<strike>drawable-en/</strike>
+drawable-en-port/
+<strike>drawable-en-notouch-12key/</strike>
+</pre>
+<p>Thư mục còn lại là {@code drawable-en-port}.</p>
+  </li>
+</ol>
+
+<p>Mặc dù quy trình này được thực thi cho từng tài nguyên được yêu cầu, hệ thống sẽ tối ưu hóa hơn nữa
+một số khía cạnh. Một cách tối ưu hóa như vậy đó là sau khi biết cấu hình thiết bị, nó có thể
+loại bỏ các tài nguyên thay thế mà không thể khớp được. Ví dụ, nếu ngôn ngữ cấu hình
+là English ("en"), khi đó bất kỳ thư mục tài nguyên nào có hạn định ngôn ngữ được đặt thành
+ngôn ngữ khác English đều sẽ không được bao gồm trong tập hợp các tài nguyên được kiểm tra (mặc dù
+thư mục tài nguyên <em>không có</em> hạn định ngôn ngữ vẫn được bao gồm).</p>
+
+<p>Khi lựa chọn tài nguyên dựa trên hạn định kích cỡ màn hình, hệ thống sẽ sử dụng các tài nguyên
+được thiết kế cho màn hình nhỏ hơn màn hình hiện tại nếu không có tài nguyên nào khớp tốt hơn
+(ví dụ, một màn hình kích cỡ lớn sẽ sử dụng các tài nguyên màn hình kích cỡ bình thường nếu cần). Tuy nhiên, nếu
+những tài nguyên duy nhất sẵn có lại <em>lớn hơn</em> màn hình hiện tại, hệ thống sẽ
+<strong>không</strong> sử dụng chúng và ứng dụng của bạn sẽ bị lỗi nếu không có tài nguyên nào khác khớp với cấu hình
+thiết bị (ví dụ, nếu tất cả tài nguyên bố trí đều được gắn thẻ bằng hạn định {@code xlarge},
+nhưng thiết bị lại có một màn hình kích cỡ bình thường).</p>
+
+<p class="note"><strong>Lưu ý:</strong> <em>Mức ưu tiên</em> của hạn định (trong <a href="#table2">bảng 2</a>) quan trọng
+hơn số lượng hạn định khớp chính xác với thiết bị. Ví dụ, trong bước 4 bên trên
+lựa chọn trên danh sách bao gồm ba hạn định khớp chính xác với thiết bị (hướng, loại
+màn hình cảm ứng, và phương pháp nhập liệu), trong khi <code>drawable-en</code> chỉ có một tham số khớp
+(ngôn ngữ). Tuy nhiên, ngôn ngữ có mức ưu tiên cao hơn cả ba hạn định khác này, vì thế
+<code>drawable-port-notouch-12key</code> bị loại.</p>
+
+<p>Để tìm hiểu thêm về cách sử dụng tài nguyên trong ứng dụng của bạn, hãy tiếp tục sang phần <a href="accessing-resources.html">Truy cập Tài nguyên</a>.</p>
diff --git a/docs/html-intl/intl/vi/guide/topics/resources/runtime-changes.jd b/docs/html-intl/intl/vi/guide/topics/resources/runtime-changes.jd
new file mode 100644
index 0000000..4a9c38c
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/resources/runtime-changes.jd
@@ -0,0 +1,281 @@
+page.title=Xử lý Thay đổi Thời gian chạy
+page.tags=hoạt động,vòng đời
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>Trong tài liệu này</h2>
+  <ol>
+    <li><a href="#RetainingAnObject">Giữ lại một Đối tượng trong khi Thay đổi Cấu hình</a></li>
+    <li><a href="#HandlingTheChange">Tự mình Xử lý Thay đổi Cấu hình</a>
+  </ol>
+
+  <h2>Xem thêm</h2>
+  <ol>
+    <li><a href="providing-resources.html">Cung cấp Tài nguyên</a></li>
+    <li><a href="accessing-resources.html">Truy cập Tài nguyên</a></li>
+    <li><a href="http://android-developers.blogspot.com/2009/02/faster-screen-orientation-change.html">Thay đổi
+        Hướng Màn hình Nhanh hơn</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Một số cấu hình thiết bị có thể thay đổi trong thời gian chạy
+(chẳng hạn như hướng màn hình, sự sẵn có của bàn phím, và ngôn ngữ). Khi sự thay đổi như vậy diễn ra,
+Android sẽ khởi động lại việc chạy
+{@link android.app.Activity} ({@link android.app.Activity#onDestroy()} sẽ được gọi, sau đó là {@link
+android.app.Activity#onCreate(Bundle) onCreate()}). Hành vi khởi động lại được thiết kế để giúp
+ứng dụng điều chỉnh phù hợp với cấu hình mới bằng cách tự động tải lại ứng dụng của bạn bằng
+các tài nguyên thay thế khớp với cấu hình thiết bị mới.</p>
+
+<p>Để xử lý khởi động lại cho đúng, điều quan trọng là hoạt động của bạn khôi phục lại trạng thái trước đó
+của nó thông qua vòng đời <a href="{@docRoot}guide/components/activities.html#Lifecycle">Hoạt động
+thông thường</a>, trong đó Android sẽ gọi
+{@link android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()} trước khi nó hủy
+hoạt động của bạn sao cho bạn có thể lưu dữ liệu về trạng thái của ứng dụng. Khi đó, bạn có thể khôi phục trạng thái
+trong khi {@link android.app.Activity#onCreate(Bundle) onCreate()} hoặc {@link
+android.app.Activity#onRestoreInstanceState(Bundle) onRestoreInstanceState()}.</p>
+
+<p>Để kiểm tra xem ứng dụng của bạn có tự khởi động lại mà giữ nguyên trạng thái ứng dụng hay không,
+bạn cần gọi ra các thay đổi cấu hình (chẳng hạn như thay đổi hướng màn hình) trong khi thực hiện các
+tác vụ khác nhau trong ứng dụng của bạn. Ứng dụng của bạn sẽ có thể khởi động lại vào bất cứ lúc nào mà không bị mất
+dữ liệu của người dùng hay trạng thái để xử lý các sự kiện như thay đổi cấu hình hoặc khi người dùng nhận được
+một cuộc gọi đến rồi quay lại ứng dụng của bạn muộn hơn nhiều sau khi tiến trình
+ứng dụng của bạn có thể đã bị hủy. Để tìm hiểu về cách bạn có thể khôi phục trạng thái hoạt động của mình, hãy đọc về <a href="{@docRoot}guide/components/activities.html#Lifecycle">Vòng đời của hoạt động</a>.</p>
+
+<p>Tuy nhiên, bạn có thể gặp phải một tình huống trong đó việc khởi động lại ứng dụng của bạn và
+khôi phục phần lớn dữ liệu có thể tốn kém và tạo nên trải nghiệm người dùng kém. Trong
+tình huống như vậy, bạn có hai tùy chọn:</p>
+
+<ol type="a">
+  <li><a href="#RetainingAnObject">Giữ lại một đối tượng trong khi thay đổi cấu hình</a>
+  <p>Cho phép hoạt động của bạn khởi động lại khi cấu hình thay đổi, nhưng mang theo một
+đối tượng có trạng thái tới thực thể mới của hoạt động của bạn.</p>
+
+  </li>
+  <li><a href="#HandlingTheChange">Tự mình xử lý thay đổi cấu hình</a>
+  <p>Ngăn không cho hệ thống khởi động lại hoạt động của bạn trong những thay đổi
+cấu hình nhất định, nhưng nhận một lệnh gọi lại khi cấu hình thay đổi, sao cho bạn có thể cập nhật thủ công
+hoạt động của mình nếu cần.</p>
+  </li>
+</ol>
+
+
+<h2 id="RetainingAnObject">Giữ lại một Đối tượng trong khi Thay đổi Cấu hình</h2>
+
+<p>Nếu việc khởi động lại hoạt động của bạn yêu cầu bạn phải khôi phục nhiều tập hợp dữ liệu lớn, hãy thiết lập lại kết nối
+mạng, hoặc thực hiện các thao tác tăng cường khác, khi đó khởi động lại hoàn toàn do thay đổi cấu hình
+có thể gây ra trải nghiệm người dùng chậm chạp. Đồng thời, có thể bạn sẽ không thể hoàn toàn khôi phục được
+trạng thái hoạt động của mình với {@link android.os.Bundle} mà hệ thống lưu cho bạn bằng phương pháp gọi lại {@link
+android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()}&mdash;nó không
+được thiết kế để mang các đối tượng lớn (chẳng hạn như bitmap) và dữ liệu trong nó phải được nối tiếp hóa rồi
+bỏ nối tiếp hóa, điều này có thể tiêu tốn nhiều bộ nhớ và khiến việc thay đổi cấu hình diễn ra chậm. Trong một
+tình huống như vậy, bạn có thể gỡ bỏ gánh nặng khởi tạo lại hoạt động của mình bằng cách giữ lại {@link
+android.app.Fragment} khi hoạt động của bạn được khởi động lại do thay đổi cấu hình. Phân đoạn này
+có thể chứa các tham chiếu tới đối tượng có trạng thái mà bạn muốn giữ lại.</p>
+
+<p>Khi hệ thống Android tắt hoạt động của bạn do một thay đổi cấu hình, các phân đoạn
+của hoạt động mà bạn đã đánh dấu để giữ lại sẽ không bị hủy. Bạn có thể thêm các phân đoạn này vào
+hoạt động của mình để giữ lại các đối tượng có trạng thái.</p>
+
+<p>Để giữ lại các đối tượng có trạng thái trong một phân đoạn trong khi thay đổi cấu hình thời gian chạy:</p>
+
+<ol>
+  <li>Mở rộng lớp {@link android.app.Fragment} và khai báo các tham chiếu tới đối tượng 
+      có trạng thái của bạn.</li>
+  <li>Gọi {@link android.app.Fragment#setRetainInstance(boolean)} khi phân đoạn được tạo.
+      </li>
+  <li>Thêm phân đoạn vào hoạt động của bạn.</li>
+  <li>Sử dụng {@link android.app.FragmentManager} để truy xuất phân đoạn khi hoạt động 
+      được khởi động lại.</li>
+</ol>
+
+<p>Ví dụ, định nghĩa phân đoạn của bạn như sau:</p>
+
+<pre>
+public class RetainedFragment extends Fragment {
+
+    // data object we want to retain
+    private MyDataObject data;
+
+    // this method is only called once for this fragment
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // retain this fragment
+        setRetainInstance(true);
+    }
+
+    public void setData(MyDataObject data) {
+        this.data = data;
+    }
+
+    public MyDataObject getData() {
+        return data;
+    }
+}
+</pre>
+
+<p class="caution"><strong>Chú ý:</strong> Trong khi bạn có thể lưu trữ bất kỳ đối tượng nào, bạn
+không nên chuyển một đối tượng được gắn với {@link android.app.Activity}, chẳng hạn như {@link
+android.graphics.drawable.Drawable}, {@link android.widget.Adapter}, {@link android.view.View}
+hay bất kỳ đối tượng nào khác đi kèm với một {@link android.content.Context}. Nếu bạn làm vậy, nó sẽ
+rò rỉ tất cả dạng xem và tài nguyên của thực thể hoạt động gốc. (Rò rỉ tài nguyên
+có nghĩa là ứng dụng của bạn duy trì việc lưu giữ tài nguyên và chúng không thể được thu dọn bộ nhớ rác, vì thế
+rất nhiều bộ nhớ có thể bị mất.)</p>
+
+<p>Khi đó, hãy sử dụng {@link android.app.FragmentManager} để thêm phân đoạn vào hoạt động. 
+Bạn có thể thu được đối tượng dữ liệu từ phân đoạn khi hoạt động bắt đầu lại trong khi 
+thay đổi cấu hình thời gian chạy. Ví dụ, định nghĩa hoạt động của bạn như sau:</p>
+
+<pre>
+public class MyActivity extends Activity {
+
+    private RetainedFragment dataFragment;
+
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+
+        // find the retained fragment on activity restarts
+        FragmentManager fm = getFragmentManager();
+        dataFragment = (DataFragment) fm.findFragmentByTag(“data”);
+
+        // create the fragment and data the first time
+        if (dataFragment == null) {
+            // add the fragment
+            dataFragment = new DataFragment();
+            fm.beginTransaction().add(dataFragment, “data”).commit();
+            // load the data from the web
+            dataFragment.setData(loadMyData());
+        }
+
+        // the data is available in dataFragment.getData()
+        ...
+    }
+
+    &#64;Override
+    public void onDestroy() {
+        super.onDestroy();
+        // store the data in the fragment
+        dataFragment.setData(collectMyLoadedData());
+    }
+}
+</pre>
+
+<p>Trong ví dụ này, {@link android.app.Activity#onCreate(Bundle) onCreate()} thêm một phân đoạn
+hoặc khôi phục một tham chiếu đến nó. {@link android.app.Activity#onCreate(Bundle) onCreate()} cũng
+lưu trữ đối tượng có trạng thái bên trong thực thể phân đoạn đó.
+{@link android.app.Activity#onDestroy() onDestroy()} cập nhật đối tượng có trạng thái bên trong 
+thực thể phân đoạn được giữ lại.</p>
+
+
+
+
+
+<h2 id="HandlingTheChange">Tự mình Xử lý Thay đổi Cấu hình</h2>
+
+<p>Nếu ứng dụng của bạn không cần cập nhật các tài nguyên trong một thay đổi
+cấu hình cụ thể <em>và</em> bạn có giới hạn về hiệu năng yêu cầu bạn phải
+tránh khởi động lại hoạt động, khi đó bạn có thể khai báo rằng hoạt động của bạn tự mình xử lý thay đổi cấu hình
+, làm vậy sẽ tránh cho hệ thống khởi động lại hoạt động của bạn.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Việc tự mình xử lý thay đổi cấu hình có thể khiến việc
+sử dụng các tài nguyên thay thế khó khăn hơn nhiều, vì hệ thống không tự động áp dụng chúng
+cho bạn. Kỹ thuật này nên được coi là giải pháp cuối cùng khi bạn phải tránh khởi động lại do một
+thay đổi cấu hình và không được khuyến cáo đối với hầu hết ứng dụng.</p>
+
+<p>Để khai báo rằng hoạt động của bạn xử lý một thay đổi cấu hình, hãy chỉnh sửa phần tử <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> phù hợp trong
+tệp bản kê khai của bạn để bao gồm thuộc tính <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> với một giá trị có chức năng biểu diễn cấu hình mà bạn muốn
+xử lý. Các giá trị có thể được liệt kê trong tài liệu dành cho thuộc tính <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> (các giá trị thường được sử dụng nhất là {@code "orientation"} để
+ngăn khởi động lại khi hướng màn hình thay đổi và {@code "keyboardHidden"} để ngăn
+khởi động lại khi tính sẵn có của bàn phím thay đổi).  Bạn có thể khai báo nhiều giá trị cấu hình trong
+thuộc tính bằng cách tách chúng bằng một ký tự {@code |} đường dẫn nối.</p>
+
+<p>Ví dụ, đoạn mã bản kê khai sau khai báo một hoạt động có chức năng xử lý cả
+thay đổi về hướng màn hình và thay đổi về tính sẵn có của bàn phím:</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"
+          android:configChanges="orientation|keyboardHidden"
+          android:label="@string/app_name">
+</pre>
+
+<p>Lúc này, khi một trong những cấu hình này thay đổi, {@code MyActivity} không khởi động lại.
+Thay vào đó, {@code MyActivity} nhận được một lệnh gọi tới {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}. Phương pháp này
+được chuyển bởi một đối tượng {@link android.content.res.Configuration} mà quy định
+cấu hình thiết bị mới. Bằng cách đọc các trường trong {@link android.content.res.Configuration},
+bạn có thể xác định cấu hình mới và thực hiện những thay đổi phù hợp bằng cách cập nhật
+tài nguyên được sử dụng trong giao diện của bạn. Tại
+thời điểm phương pháp này được gọi, đối tượng {@link android.content.res.Resources} của hoạt động của bạn được cập nhật
+để trả về các tài nguyên dựa trên cấu hình mới, sao cho bạn có thể dễ dàng
+đặt lại các phần tử trong UI của mình mà không để hệ thống khởi động lại hoạt động của bạn.</p>
+
+<p class="caution"><strong>Chú ý:</strong> Bắt đầu với Android 3.2 (API mức 13), <strong>
+"kích cỡ màn hình" cũng thay đổi</strong> khi thiết bị chuyển giữa hướng dọc và khổ ngang
+. Vì thế, nếu bạn muốn ngăn cản việc khởi động lại vào thời gian chạy do thay đổi hướng khi phát triển
+cho API mức 13 hoặc cao hơn (như được khai báo bởi các thuộc tính <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> và <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a>
+), bạn phải bao gồm giá trị {@code "screenSize"} bên cạnh giá trị {@code
+"orientation"}. Cụ thể, bạn phải khai báo {@code
+android:configChanges="orientation|screenSize"}. Tuy nhiên, nếu ứng dụng của bạn nhắm tới API mức
+12 hoặc thấp hơn, khi đó hoạt động của bạn luôn tự mình xử lý thay đổi cấu hình này (thay đổi
+cấu hình này không khởi động lại hoạt động của bạn, ngay cả khi đang chạy trên một thiết bị phiên bản Android 3.2 hoặc cao hơn).</p>
+
+<p>Ví dụ, việc triển khai {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} sau
+sẽ kiểm tra hướng thiết bị hiện tại:</p>
+
+<pre>
+&#64;Override
+public void onConfigurationChanged(Configuration newConfig) {
+    super.onConfigurationChanged(newConfig);
+
+    // Checks the orientation of the screen
+    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
+        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
+    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
+        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
+    }
+}
+</pre>
+
+<p>Đối tượng {@link android.content.res.Configuration} biểu diễn tất cả cấu hình
+hiện tại, không chỉ những cấu hình đã thay đổi. Trong phần lớn thời gian, bạn sẽ không quan tâm chính xác xem
+cấu hình đã thay đổi như thế nào và có thể đơn giản gán lại tất cả tài nguyên của mình với chức năng cung cấp nội dung thay thế
+cho cấu hình mà bạn đang xử lý. Ví dụ, do đối tượng {@link
+android.content.res.Resources} nay đã được cập nhật, bạn có thể đặt lại
+bất kỳ{@link android.widget.ImageView} nào với {@link android.widget.ImageView#setImageResource(int)
+setImageResource()}
+và tài nguyên phù hợp cho cấu hình mới được sử dụng (như được mô tả trong phần <a href="providing-resources.html#AlternateResources">Cung cấp Tài nguyên</a>).</p>
+
+<p>Lưu ý rằng giá trị từ các trường {@link
+android.content.res.Configuration} là những số nguyên khớp với hằng số cụ thể
+từ lớp {@link android.content.res.Configuration}. Đối với tài liệu về những hằng số
+cần sử dụng với mỗi trường, hãy tham khảo trường phù hợp trong tham chiếu {@link
+android.content.res.Configuration}.</p>
+
+<p class="note"><strong>Hãy ghi nhớ:</strong> Khi bạn khai báo hoạt động của mình để xử lý một
+thay đổi cấu hình, bạn có trách nhiệm đặt lại bất kỳ phần tử nào mà bạn cung cấp nội dung thay thế cho. Nếu bạn
+khai báo hoạt động của mình để xử lý thay đổi hướng và có những hình ảnh nên thay đổi
+giữa khổ ngang và hướng dọc, bạn phải gán lại từng tài nguyên cho từng phần tử trong khi {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}.</p>
+
+<p>Nếu bạn không cần cập nhật ứng dụng của mình dựa trên những thay đổi
+cấu hình này, thay vào đó bạn có thể <em>không</em> triển khai {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}. Trong
+trường hợp đó, tất cả tài nguyên được sử dụng trước khi thay đổi cấu hình sẽ vẫn được sử dụng
+và bạn chỉ mới tránh được việc khởi động lại hoạt động của mình. Tuy nhiên, ứng dụng của bạn cần luôn có khả năng
+tắt và khởi động lại với trạng thái trước đó của nó được giữ nguyên, vì thế bạn không nên coi
+kỹ thuật này như một cách để thoát khỏi việc giữ lại trạng thái của mình trong vòng đời của hoạt động bình thường. Không chỉ bởi
+có những thay đổi cấu hình khác mà bạn không thể ngăn không cho khởi động lại ứng dụng của mình, mà
+cả bởi vì bạn nên xử lý những sự kiện như là khi người dùng rời khỏi ứng dụng của bạn và nó bị
+hủy trước khi người dùng quay lại.</p>
+
+<p>Để biết thêm về những thay đổi cấu hình nào mà bạn có thể xử lý trong hoạt động của mình, hãy xem tài liệu <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> và lớp {@link android.content.res.Configuration}
+.</p>
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/controls.jd b/docs/html-intl/intl/vi/guide/topics/ui/controls.jd
new file mode 100644
index 0000000..37fe81c
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/ui/controls.jd
@@ -0,0 +1,90 @@
+page.title=Điều khiển Nhập liệu
+parent.title=Giao diện Người dùng
+parent.link=index.html
+@jd:body
+
+<div class="figure" style="margin:0">
+  <img src="{@docRoot}images/ui/ui-controls.png" alt="" style="margin:0" />
+</div>
+
+<p>Điều khiển nhập liệu là những thành phần tương tác trong giao diện người dùng của ứng dụng của bạn. Android cung cấp
+nhiều kiểu điều khiển bạn có thể sử dụng trong UI của mình, chẳng hạn như nút, trường văn bản, thanh tìm kiếm,
+hộp kiểm, nút thu phóng, nút bật tắt, và nhiều kiểu khác.</p>
+
+<p>Thêm một điều khiển nhập liệu vào UI của bạn cũng đơn giản như thêm một phần tử XML vào <a href="{@docRoot}guide/topics/ui/declaring-layout.html">bố trí XML</a> của bạn. Ví dụ, đây là một bố trí
+với một trường văn bản và nút:</p>
+
+<pre style="clear:right">
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="horizontal">
+    &lt;EditText android:id="@+id/edit_message"
+        android:layout_weight="1"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:hint="@string/edit_message" />
+    &lt;Button android:id="@+id/button_send"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/button_send"
+        android:onClick="sendMessage" />
+&lt;/LinearLayout>
+</pre>
+
+<p>Mỗi điều khiển nhập liệu hỗ trợ một tập hợp sự kiện nhập liệu cụ thể để bạn có thể xử lý các sự kiện chẳng hạn như khi
+người dùng nhập văn bản hoặc chạm vào một nút.</p>
+
+
+<h2 id="CommonControls">Điều khiển Thông dụng</h2>
+<p>Sau đây là danh sách những điều khiển thông dụng mà bạn có thể sử dụng trong ứng dụng của mình. Theo dõi các liên kết để tìm
+hiểu thêm về việc sử dụng từng điều khiển.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Android cung cấp nhiều điều khiển hơn một chút so với liệt kê ở
+đây. Duyệt gói {@link android.widget} để khám phá thêm. Nếu ứng dụng của bạn yêu cầu một
+kiểu điều khiển nhập liệu cụ thể, bạn có thể xây dựng <a href="{@docRoot}guide/topics/ui/custom-components.html">các thành phần tùy chỉnh</a> của chính mình.</p>
+
+<table>
+    <tr>
+        <th scope="col">Kiểu Điều khiển</th>
+        <th scope="col">Mô tả</th>
+	<th scope="col">Lớp Liên quan</th>
+    </tr>
+    <tr>
+        <td><a href="controls/button.html">Nút</a></td>
+        <td>Nút nhấn có thể được nhấn, hoặc nhấp vào, bởi người dùng để thực hiện một hành động.</td>
+	<td>{@link android.widget.Button Button} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/text.html">Trường văn bản</a></td>
+        <td>Trường văn bản có thể chỉnh sửa. Bạn có thể sử dụng widget <code>AutoCompleteTextView</code> để tạo một widget mục nhập văn bản nhằm cung cấp các gợi ý tự động hoàn thành</td>
+	<td>{@link android.widget.EditText EditText}, {@link android.widget.AutoCompleteTextView}</td>
+    </tr>
+    <tr>
+        <td><a href="controls/checkbox.html">Hộp kiểm</a></td>
+        <td>Một công tắc bật/tắt mà có thể được chuyển đổi bởi người dùng. Bạn nên sử dụng các hộp kiểm khi trình bày cho người dùng một nhóm các tùy chọn có thể chọn mà không loại trừ lẫn nhau.</td>
+	<td>{@link android.widget.CheckBox CheckBox} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/radiobutton.html">Nút chọn một</a></td>
+        <td>Tương tự như hộp kiểm, chỉ khác ở chỗ chỉ có thể chọn một tùy chọn trong nhóm.</td>
+	<td>{@link android.widget.RadioGroup RadioGroup} 
+	<br>{@link android.widget.RadioButton RadioButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/togglebutton.html" style="white-space:nowrap">Nút bật tắt</a></td>
+        <td>Một nút bật/tắt có đèn chỉ báo.</td>
+	<td>{@link android.widget.ToggleButton ToggleButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/spinner.html">Quay tròn</a></td>
+        <td>Một danh sách thả xuống cho phép người dùng chọn một giá trị từ một tập hợp.</td>
+	<td>{@link android.widget.Spinner Spinner} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/pickers.html">Bộ chọn</a></td>
+        <td>Một hộp thoại cho người dùng chọn một giá trị đơn lẻ cho một tập hợp bằng cách sử dụng các nút lên/xuống hoặc thông qua cử chỉ trượt nhanh. Sử dụng một widget <code>DatePicker</code> để nhập giá trị cho ngày (tháng, ngày, năm) hoặc một widget <code>TimePicker</code> để nhập giá trị cho thời gian (giờ, phút, Sáng/Chiều tối) mà sẽ được định dạng tự động theo bản địa của người dùng.</td>
+	<td>{@link android.widget.DatePicker}, {@link android.widget.TimePicker}</td>
+    </tr>
+</table>
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/declaring-layout.jd b/docs/html-intl/intl/vi/guide/topics/ui/declaring-layout.jd
new file mode 100644
index 0000000..6add812
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/ui/declaring-layout.jd
@@ -0,0 +1,492 @@
+page.title=Bố trí
+page.tags=dạng xem, nhóm dạng xem
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Trong tài liệu này</h2>
+<ol>
+  <li><a href="#write">Ghi XML</a></li>
+  <li><a href="#load">Nạp Tài nguyên XML</a></li>
+  <li><a href="#attributes">Thuộc tính</a>
+    <ol>
+      <li><a href="#id">ID</a></li>
+      <li><a href="#layout-params">Tham số Bố trí</a></li>
+    </ol>
+  </li>
+  <li><a href="#Position">Vị trí Bố trí</a></li>
+  <li><a href="#SizePaddingMargins">Kích cỡ, Phần đệm và Lề</a></li>
+  <li><a href="#CommonLayouts">Các Bố trí Thường gặp</a></li>
+  <li><a href="#AdapterViews">Xây dựng Bố trí bằng một Trình điều hợp</a>
+    <ol>
+      <li><a href="#FillingTheLayout">Điền dữ liệu vào một dạng xem trình điều hợp</a></li>
+      <li><a href="#HandlingUserSelections">Xử lý sự kiện nhấp</a></li>
+    </ol>
+  </li>
+</ol>
+
+  <h2>Lớp khóa</h2>
+  <ol>
+    <li>{@link android.view.View}</li>
+    <li>{@link android.view.ViewGroup}</li>
+    <li>{@link android.view.ViewGroup.LayoutParams}</li>
+  </ol>
+
+  <h2>Xem thêm</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/firstapp/building-ui.html">Xây dựng một Giao diện Người dùng
+Đơn giản</a></li> </div>
+</div>
+
+<p>Bố trí định nghĩa cấu trúc hiển thị cho một giao diện người dùng, chẳng hạn như UI cho một <a href="{@docRoot}guide/components/activities.html">hoạt động</a> hoặc <a href="{@docRoot}guide/topics/appwidgets/index.html">widget ứng dụng</a>.
+Bạn có thể khai báo một bố trí bằng hai cách:</p>
+<ul>
+<li><strong>Khai báo phần tử UI trong XML</strong>. Android cung cấp một kho từ vựng XML
+đơn giản, tương ứng với các lớp và lớp con Dạng xem, chẳng hạn như dành cho các widget và bố trí.</li>
+<li><strong>Khởi tạo các phần tử bố trí vào thời gian chạy</strong>. Ứng dụng
+của bạn có thể tạo các đối tượng Dạng xem và Nhóm Dạng xem (và thao tác trên các tính chất của nó) theo lập trình. </li>
+</ul>
+
+<p>Khuôn khổ Android cho bạn sự linh hoạt trong khi sử dụng một hoặc cả hai phương pháp này để khai báo và quản lý UI ứng dụng của mình. Ví dụ, bạn có thể khai báo các bố trí mặc định cho ứng dụng của mình trong XML, bao gồm các phần tử màn hình mà sẽ xuất hiện trong chúng hoặc tính chất của chúng. Sau đó, bạn có thể thêm mã trong ứng dụng của mình để sửa đổi trạng thái của các đối tượng trên màn hình, bao gồm những đối tượng được khai báo trong XML, vào thời gian chạy. </p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <ul>
+  <li>Phần bổ trợ <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT
+ cho Eclipse</a> sẽ đưa ra một bản xem trước bố trí XML của bạn &mdash;
+  có tệp XML được mở, hãy chọn tab <strong>Bố trí</strong>.</li>
+  <li>Bạn cũng nên thử công cụ
+  <a href="{@docRoot}tools/debugging/debugging-ui.html#hierarchyViewer">Trình xem Phân cấp</a>,
+  để gỡ rối các bố trí &mdash; nó hé lộ các giá trị tính chất của bố trí,
+  vẽ đường viền bằng các chỉ báo phần đệm/lề, và các dạng xem được dựng đầy đủ trong khi
+  bạn gỡ rối trên trình mô phỏng hoặc thiết bị.</li>
+  <li>Công cụ <a href="{@docRoot}tools/debugging/debugging-ui.html#layoutopt">layoutopt</a> cho phép
+  bạn nhanh chóng phân tích các bố trí và phân cấp của mình xem có không hiệu quả hoặc có các vấn đề khác không.</li>
+</div>
+</div>
+
+<p>Ưu điểm của việc khai báo UI của bạn trong XML là cho phép bạn tách việc trình bày ứng dụng của mình với mã điều khiển hành vi của nó hiệu quả hơn. Mô tả UI của bạn nằm ngoài mã ứng dụng của bạn, điều này có nghĩa rằng bạn có thể sửa đổi hoặc điều hợp nó mà không phải sửa đổi mã nguồn của bạn và biên dịch lại. Ví dụ, bạn có thể tạo bố trí XML cho các hướng màn hình khác nhau, kích cỡ màn hình khác nhau, và ngôn ngữ khác nhau. Ngoài ra, việc khai báo bố trí trong XML giúp dễ dàng hơn trong việc hiển thị cấu trúc UI của bạn, vì vậy sẽ dễ gỡ lỗi sự cố hơn. Như vậy, tài liệu này tập trung vào việc hướng dẫn bạn cách khai báo bố trí của mình trong XML. Nếu bạn
+quan tâm tới việc khởi tạo các đối tượng Dạng xem vào thời gian chạy, hãy tham khảo {@link android.view.ViewGroup} và
+tài liệu tham khảo lớp {@link android.view.View}.</p>
+
+<p>Nhìn chung, kho từ vựng của XML đối với việc khai báo các phần tử UI tuân thủ chặt chẽ cấu trúc và cách đặt tên các lớp và phương pháp, trong đó các tên phần tử tương ứng với tên lớp và tên thuộc tính tương ứng với phương pháp. Trên thực tế, sự tương ứng thường trực tiếp đến mức bạn có thể đoán thuộc tính XML nào tương ứng với một phương pháp lớp, hoặc đoán xem lớp nào tương ứng với một phần tử XML cho trước. Tuy nhiên, lưu ý rằng không phải tất cả từ vựng đều giống nhau. Trong một số trường hợp, có sự khác biệt nhỏ trong việc đặt tên. Ví
+dụ, phần tử EditText có thuộc tính <code>text</code> tương ứng với
+<code>EditText.setText()</code>. </p>
+
+<p class="note"><strong>Mẹo:</strong> Tìm hiểu thêm về các kiểu bố trí trong <a href="{@docRoot}guide/topics/ui/layout-objects.html">Đối tượng Bố trí
+Thường gặp</a>. Có một tuyển tập các bài hướng dẫn về việc xây dựng các bố trí khác nhau trong hướng dẫn bài học
+<a href="{@docRoot}resources/tutorials/views/index.html">Dạng xem Hello</a>.</p>
+
+<h2 id="write">Ghi XML</h2>
+
+<p>Khi sử dụng từ vựng XML của Android, bạn có thể nhanh chóng thiết kế các bố trí UI và phần tử màn hình mà chúng chứa, giống như cách bạn tạo trang web trong HTML &mdash; bằng một loạt các phần tử lồng nhau. </p>
+
+<p>Mỗi tệp bố trí phải chứa chính xác một phần tử gốc, đó phải là một đối tượng Dạng xem hoặc Nhóm Dạng xem. Sau khi đã định nghĩa phần tử gốc, bạn có thể thêm các đối tượng hoặc widget bố trí bổ sung làm phần tử con để dần dần xây dựng một phân cấp Dạng xem định nghĩa bố trí của bạn. Ví dụ, sau đây là một bố trí XML sử dụng một {@link android.widget.LinearLayout}
+thẳng đứng để giữ một {@link android.widget.TextView} và một {@link android.widget.Button}:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:orientation="vertical" >
+    &lt;TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="Hello, I am a TextView" />
+    &lt;Button android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Hello, I am a Button" />
+&lt;/LinearLayout>
+</pre>
+
+<p>Sau khi bạn đã khai báo bố trí của mình trong XML, hãy lưu tệp với phần mở rộng <code>.xml</code>,
+trong thư mục dự án <code>res/layout/</code> Android của bạn để biên dịch cho phù hợp. </p>
+
+<p>Thông tin về cú pháp đối với tệp XML bố trí có sẵn trong tài liệu <a href="{@docRoot}guide/topics/resources/layout-resource.html">Tài nguyên Bố trí</a>.</p>
+
+<h2 id="load">Nạp Tài nguyên XML</h2>
+
+<p>Khi bạn biên dịch ứng dụng của mình, từng tệp bố trí XML được biên dịch thành một tài nguyên 
+{@link android.view.View}. Bạn nên nạp tài nguyên bố trí từ mã ứng dụng của mình, trong triển khai gọi lại
+{@link android.app.Activity#onCreate(android.os.Bundle) Activity.onCreate()} của bạn.
+Làm vậy bằng cách gọi <code>{@link android.app.Activity#setContentView(int) setContentView()}</code>,
+chuyển cho nó tham chiếu tới tài nguyên bố trí của bạn dưới hình thức:
+<code>R.layout.<em>layout_file_name</em></code>.
+Ví dụ, nếu bố trí XML của bạn được lưu thành <code>main_layout.xml</code>, bạn sẽ nạp nó
+cho Hoạt động của mình như sau:</p>
+<pre>
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.main_layout);
+}
+</pre>
+
+<p>Phương pháp gọi lại <code>onCreate()</code> trong Hoạt động của bạn được gọi bởi khuôn khổ Android khi
+Hoạt động của bạn được khởi chạy (xem phần thảo luận về vòng đời, trong tài liệu
+<a href="{@docRoot}guide/components/activities.html#Lifecycle">Hoạt động</a>
+).</p>
+
+
+<h2 id="attributes">Thuộc tính</h2>
+
+<p>Mọi đối tượng Dạng xem và Nhóm Dạng xem đều hỗ trợ các phiên bản thuộc tính XML của chính mình.
+Một số thuộc tính áp dụng riêng cho đối tượng Dạng xem (ví dụ, TextView hỗ trợ thuộc tính <code>textSize</code>
+), nhưng những thuộc tính này cũng được kế thừa bởi bất kỳ đối tượng Dạng xem nào mà có thể mở rộng lớp này.
+Một số được áp dụng chung cho tất cả đối tượng Dạng xem vì chúng được kế thừa từ lớp Dạng xem gốc (như
+thuộc tính <code>id</code>). Và những thuộc tính còn lại được coi là "tham số bố trí," đó là những thuộc tính
+mô tả một số hướng bố trí nhất định của đối tượng Dạng xem, như được định nghĩa bởi đối tượng Nhóm Dạng xem
+mẹ của đối tượng đó.</p>
+
+<h3 id="id">ID</h3>
+
+<p>Bất kỳ đối tượng Dạng xem nào cũng có một ID số nguyên được liên kết với nó để nhận biết duy nhất Dạng xem trong cây.
+Khi ứng dụng được biên dịch, ID này được tham chiếu như một số nguyên, nhưng ID thường
+được gán trong tệp XML bố trí như một xâu, trong thuộc tính <code>id</code>.
+Đây là thuộc tính XML chung cho tất cả đối tượng Dạng xem
+(được định nghĩa theo lớp {@link android.view.View}) và bạn sẽ rất hay sử dụng nó.
+Cú pháp đối với một ID bên trong một tag XML là:</p>
+<pre>android:id="&#64;+id/my_button"</pre>
+
+<p>Biểu tượng "a móc" (@) ở đầu xâu thể hiện rằng trình phân tích XML nên phân tích và mở rộng phần còn lại
+của xâu ID và nhận biết nó như một tài nguyên ID. Biểu tượng dấu cộng (+) có nghĩa rằng đây là một tên tài nguyên mới mà phải
+được tạo và thêm vào tài nguyên của chúng ta (trong tệp <code>R.java</code>). Có nhiều tài nguyên ID khác
+được cung cấp bởi khuôn khổ Android. Khi tham chiếu một ID tài nguyên Android, bạn không cần biểu tượng dấu cộng,
+nhưng phải thêm vùng tên gói <code>android</code>, như sau:</p>
+<pre>android:id="&#64;android:id/empty"</pre>
+<p>Khi đã có vùng tên gói <code>android</code>, giờ chúng ta đang tham chiếu một ID từ lớp tài nguyên <code>android.R</code>
+, thay vì lớp tài nguyên cục bộ.</p>
+
+<p>Để tạo các dạng xem và tham chiếu chúng từ ứng dụng, một mô thức thường thấy đó là:</p>
+<ol>
+  <li>Định nghĩa một dạng xem/widget trong tệp bố trí và gán cho nó một ID duy nhất:
+<pre>
+&lt;Button android:id="&#64;+id/my_button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="&#64;string/my_button_text"/>
+</pre>
+  </li>
+  <li>Sau đó, tạo một thực thể của đối tượng dạng xem và chụp nó từ bố trí
+(thường trong phương pháp <code>{@link android.app.Activity#onCreate(Bundle) onCreate()}</code>):
+<pre>
+Button myButton = (Button) findViewById(R.id.my_button);
+</pre>
+  </li>
+</ol>
+<p>Định nghĩa các ID cho đối tượng dạng xem là việc quan trọng khi tạo một {@link android.widget.RelativeLayout}.
+Trong một bố trí tương đối, các dạng xem đồng hạng có thể định nghĩa bố trí của nó so với dạng xem đồng hạng kia,
+dạng xem mà được tham chiếu bởi ID duy nhất.</p>
+<p>Một ID không cần phải là duy nhất trong toàn bộ cây, nhưng nên là
+duy nhất trong bộ phận của cây mà bạn đang tìm kiếm (thường là toàn bộ cây, vì thế tốt nhất là
+ID nên hoàn toàn duy nhất khi có thể).</p>
+
+
+<h3 id="layout-params">Tham số Bố trí</h3>
+
+<p>Các thuộc tính bố trí XML <code>layout_<em>something</em></code> sẽ định nghĩa
+các tham số bố trí cho Dạng xem phù hợp với Nhóm Dạng xem mà nó nằm trong đó.</p>
+
+<p>Mọi lớp Nhóm Dạng xem đều triển khai một lớp lồng nhau có chức năng mở rộng {@link
+android.view.ViewGroup.LayoutParams}. Lớp con này
+chứa các kiểu tính chất mà định nghĩa kích cỡ và vị trí của từng dạng xem con cho
+phù hợp với nhóm dạng xem. Như bạn có thể thấy trong hình 1, nhóm dạng xem
+mẹ sẽ định nghĩa các tham số bố trí cho từng dạng xem con (bao gồm nhóm dạng xem con).</p>
+
+<img src="{@docRoot}images/layoutparams.png" alt="" />
+<p class="img-caption"><strong>Hình 1.</strong> Trực quan hóa một phân cấp dạng xem với các tham số
+bố trí được liên kết với từng dạng xem.</p>
+
+<p>Để ý rằng mọi lớp con LayoutParams đều có cú pháp riêng của mình cho các giá trị
+thiết đặt. Mỗi phần tử con phải định nghĩa LayoutParams cho phù hợp với phần tử mẹ của nó,
+mặc dù cũng có thể định nghĩa LayoutParams khác cho phần tử con của chính nó. </p>
+
+<p>Tất cả nhóm dạng xem đều có chiều rộng và chiều cao (<code>layout_width</code> và
+<code>layout_height</code>), và mỗi dạng xem đều phải định nghĩa chúng. Nhiều
+LayoutParams cũng có lề và viền tùy chọn. <p>
+
+<p>Bạn có thể chỉ định chiều rộng và chiều cao bằng các số đo chính xác, mặc dù có thể
+bạn sẽ không muốn làm điều này thường xuyên. Bạn sẽ thường sử dụng một trong những hằng số này để
+đặt chiều rộng hoặc chiều cao: </p>
+
+<ul>
+  <li><var>wrap_content</var> cho biết dạng xem của bạn tự định cỡ theo kích thước
+mà nội dung của nó yêu cầu.</li>
+  <li><var>match_parent</var> (được đặt tên <var>fill_parent</var> trước API Mức 8)
+cho biết dạng xem của bạn có thể phóng lớn khi nhóm dạng xem mẹ của nó cho phép.</li>
+</ul>
+
+<p>Nhìn chung, việc chỉ định một chiều rộng và chiều cao bố trí bằng cách sử dụng các đơn vị tuyệt đối như
+điểm ảnh là điều không được khuyến cáo. Thay vào đó, sử dụng các số đo tương đối như
+số đơn vị điểm ảnh độc lập với mật độ (<var>dp</var>), <var>wrap_content</var>, hoặc
+<var>match_parent</var>, là một phương pháp tốt hơn, vì nó giúp đảm bảo rằng
+ứng dụng của bạn sẽ hiển thị phù hợp giữa nhiều loại kích cỡ màn hình thiết bị khác nhau.
+Các kiểu số đo được chấp nhận được định nghĩa trong tài liệu
+<a href="{@docRoot}guide/topics/resources/available-resources.html#dimension">
+Tài nguyên Có sẵn</a>.</p>
+
+
+<h2 id="Position">Vị trí Bố trí</h2>
+   <p>
+   Hình học của một dạng xem là hình chữ nhật. Dạng xem có một vị trí,
+   được biểu diễn thành một cặp tọa độ <em>trái</em> và <em>trên</em> và
+   hai kích thước, được biểu diễn thành chiều rộng và chiều cao. Đơn vị của vị trí
+   và kích thước là điểm ảnh.
+   </p>
+
+   <p>
+   Có thể truy xuất vị trí của một dạng xem bằng cách gọi ra các phương pháp
+   {@link android.view.View#getLeft()} và {@link android.view.View#getTop()}. Phương pháp đầu trả về tọa độ trái, hay X,
+   của hình chữ nhật biểu diễn dạng xem. Phương pháp sau trả về tọa độ trên, hay Y,
+   của hình chữ nhật biểu diễn dạng xem. Những phương pháp này
+   đều trả về vị trí của dạng xem so với dạng xem mẹ của nó. Ví dụ,
+   khi <code>getLeft()</code> trả về 20, điều đó có nghĩa là dạng xem nằm ở 20 điểm ảnh về
+   bên phải của cạnh trái của dạng xem mẹ trực tiếp của nó.
+   </p>
+
+   <p>
+   Ngoài ra, một vài phương pháp thuận tiện được đưa ra để tránh những tính toán
+   không cần thiết, cụ thể là {@link android.view.View#getRight()} và {@link android.view.View#getBottom()}.
+   Những phương pháp này trả về tọa độ của cạnh phải và cạnh đáy của hình chữ nhật
+   biểu diễn dạng xem. Ví dụ, việc gọi {@link android.view.View#getRight()}
+   tương tự như tính toán sau: <code>getLeft() + getWidth()</code>.
+   </p>
+
+
+<h2 id="SizePaddingMargins">Kích cỡ, Phần đệm và Lề</h2>
+   <p>
+   Kích cỡ của một dạng xem được biểu diễn bằng chiều rộng và chiều cao. Thực ra một dạng xem
+   sẽ có hai cặp giá trị chiều rộng và chiều cao.
+   </p>
+
+   <p>
+   Cặp thứ nhất được gọi là <em>chiều rộng đo được</em> và 
+   <em>chiều cao đo được</em>. Những kích thước này xác định một dạng xem muốn phóng lớn bao nhiêu
+   trong dạng xem mẹ của nó. Các
+   kích thước đo được có thể thu được bằng cách gọi {@link android.view.View#getMeasuredWidth()}
+   và {@link android.view.View#getMeasuredHeight()}.
+   </p>
+
+   <p>
+   Cặp thứ hai đơn thuần là <em>chiều rộng</em> và <em>chiều cao</em>, hoặc
+   đôi khi gọi là <em>chiều rộng vẽ</em> và <em>chiều cao vẽ</em>. Những
+   kích thước này xác định kích cỡ thực sự của dạng xem trên màn hình, tại thời điểm vẽ và
+   sau khi bố trí. Những giá trị này có thể nhưng không nhất thiết phải khác với
+   chiều rộng và chiều cao đo được. Chiều rộng và chiều cao này có thể lấy được bằng cách gọi
+   {@link android.view.View#getWidth()} và {@link android.view.View#getHeight()}.
+   </p>
+
+   <p>
+   Để đo các kích thước của nó, dạng xem cần xét tới phần đệm của nó. Phần đệm
+   được biểu diễn bằng số điểm ảnh của phần bên trái, bên trên, bên phải và bên dưới của dạng xem.
+   Phần đệm có thể được sử dụng để bù trừ nội dung của dạng xem bằng một số điểm ảnh
+   cụ thể. Ví dụ, phần đệm bên trái bằng 2 sẽ đẩy nội dung của dạng xem đi
+   2 điểm ảnh về bên phải của cạnh bên trái. Phần đệm có thể được đặt bằng cách sử dụng phương pháp
+   {@link android.view.View#setPadding(int, int, int, int)} và được truy vấn bằng cách gọi
+   {@link android.view.View#getPaddingLeft()}, {@link android.view.View#getPaddingTop()},
+   {@link android.view.View#getPaddingRight()} và {@link android.view.View#getPaddingBottom()}.
+   </p>
+
+   <p>
+   Mặc dù dạng xem có thể xác định phần đệm, nó không có bất kỳ sự hỗ trợ nào cho
+   lề. Tuy nhiên, các nhóm dạng xem lại cung cấp sự hỗ trợ như vậy. Tham khảo
+   {@link android.view.ViewGroup} và
+   {@link android.view.ViewGroup.MarginLayoutParams} để biết thêm thông tin.
+   </p>
+
+   <p>Để biết thêm thông tin về kích thước, xem
+   <a href="{@docRoot}guide/topics/resources/more-resources.html#Dimension">Giá trị Kích thước</a>.
+   </p>
+
+
+
+
+
+
+<style type="text/css">
+div.layout {
+  float:left;
+  width:200px;
+  margin:0 0 20px 20px;
+}
+div.layout.first {
+  margin-left:0;
+  clear:left;
+}
+</style>
+
+
+
+
+<h2 id="CommonLayouts">Các Bố trí Thường gặp</h2>
+
+<p>Mỗi lớp con của lớp {@link android.view.ViewGroup} cung cấp một cách duy nhất để hiển thị
+các dạng xem mà bạn lồng trong nó. Dưới đây là một số kiểu bố trí phổ biến hơn mà được tích hợp
+trong nền tảng Android.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Mặc dù bạn có thể lồng một hoặc nhiều bố trí với một
+bố trí khác để đạt được thiết kế UI của mình, bạn nên cố gắng duy trì phân cấp bố trí của mình ở mức nông nhất
+có thể. Bố trí của bạn sẽ vẽ nhanh hơn nếu nó có ít bố trí lồng nhau hơn (phân cấp dạng xem rộng
+sẽ tốt hơn phân cấp dạng xem sâu).</p>
+
+<!--
+<h2 id="framelayout">FrameLayout</h2>
+<p>{@link android.widget.FrameLayout FrameLayout} is the simplest type of layout
+object. It's basically a blank space on your screen that you can
+later fill with a single object &mdash; for example, a picture that you'll swap in and out.
+All child elements of the FrameLayout are pinned to the top left corner of the screen; you cannot
+specify a different location for a child view. Subsequent child views will simply be drawn over
+previous ones,
+partially or totally obscuring them (unless the newer object is transparent).
+</p>
+-->
+
+
+<div class="layout first">
+  <h4><a href="layout/linear.html">Bố trí Tuyến tính</a></h4>
+  <a href="layout/linear.html"><img src="{@docRoot}images/ui/linearlayout-small.png" alt="" /></a>
+  <p>Một bố trí có chức năng sắp xếp tổ chức các bố trí con của nó thành một hàng ngang hoặc thẳng đứng. Nó
+  sẽ tạo một thanh cuộn nếu chiều dài của cửa sổ vượt quá chiều dài của màn hình.</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/relative.html">Bố trí Tương đối</a></h4>
+  <a href="layout/relative.html"><img src="{@docRoot}images/ui/relativelayout-small.png" alt="" /></a>
+  <p>Cho phép bạn chỉ định vị trí của các đối tượng con so với nhau (đối tượng con A về phía
+bên trái của đối tượng con B) hoặc so với đối tượng mẹ (được căn theo bên trên đối tượng mẹ).</p>
+</div>
+
+<div class="layout">
+  <h4><a href="{@docRoot}guide/webapps/webview.html">Dạng xem Web</a></h4>
+  <a href="{@docRoot}guide/webapps/webview.html"><img src="{@docRoot}images/ui/webview-small.png" alt="" /></a>
+  <p>Hiển thị trang web.</p>
+</div>
+
+
+
+
+<h2 id="AdapterViews" style="clear:left">Xây dựng Bố trí bằng một Trình điều hợp</h2>
+
+<p>Khi nội dung cho bố trí của bạn động hoặc chưa được xác định trước, bạn có thể sử dụng một bố trí có chức năng
+tạo lớp con {@link android.widget.AdapterView} để đưa vào bố trí có dạng xem vào thời gian chạy. Một
+lớp con của lớp {@link android.widget.AdapterView} sẽ sử dụng một {@link android.widget.Adapter} để
+gắn kết dữ liệu với bố trí của nó. {@link android.widget.Adapter} đóng vai trò trung gian giữa nguồn
+dữ liệu và bố trí {@link android.widget.AdapterView} &mdash;{@link android.widget.Adapter}
+sẽ truy xuất dữ liệu (từ một nguồn chẳng hạn như một mảng hoặc truy vấn cơ sở dữ liệu) và chuyển từng mục nhập
+thành một dạng xem có thể thêm vào bố trí {@link android.widget.AdapterView}.</p>
+
+<p>Các bố trí phổ biến được hỗ trợ bởi trình điều hợp bao gồm:</p>
+
+<div class="layout first">
+  <h4><a href="layout/listview.html">Dạng xem Danh sách</a></h4>
+  <a href="layout/listview.html"><img src="{@docRoot}images/ui/listview-small.png" alt="" /></a>
+  <p>Hiển thị một danh sách cột cuộn đơn.</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/gridview.html">Dạng xem Lưới</a></h4>
+  <a href="layout/gridview.html"><img src="{@docRoot}images/ui/gridview-small.png" alt="" /></a>
+  <p>Hiển thị một lưới cuộn gồm nhiều hàng và cột.</p>
+</div>
+
+
+
+<h3 id="FillingTheLayout" style="clear:left">Điền dữ liệu vào một dạng xem trình điều hợp</h3>
+
+<p>Bạn có thể đưa vào một {@link android.widget.AdapterView} chẳng hạn như {@link android.widget.ListView} hoặc
+{@link android.widget.GridView} bằng cách gắn kết thực thể {@link android.widget.AdapterView} với một
+{@link android.widget.Adapter}, nó truy xuất dữ liệu từ một nguồn bên ngoài và tạo một {@link
+android.view.View} để biểu diễn từng mục nhập dữ liệu.</p>
+
+<p>Android cung cấp một vài lớp con của {@link android.widget.Adapter} rất hữu ích cho việc
+truy xuất các kiểu dữ liệu khác nhau và xây dựng dạng xem cho một {@link android.widget.AdapterView}. Hai
+trình điều hợp phổ biến nhất là:</p>
+
+<dl>
+  <dt>{@link android.widget.ArrayAdapter}</dt>
+    <dd>Sử dụng trình điều hợp này khi nguồn dữ liệu của bạn là một mảng. Theo mặc định, {@link
+android.widget.ArrayAdapter} tạo một dạng xem cho mỗi mục mảng bằng cách gọi {@link
+java.lang.Object#toString()} trên từng mục và đặt nội dung trong một {@link
+android.widget.TextView}.
+      <p>Ví dụ, nếu bạn có một mảng xâu mà bạn muốn hiển thị trong một {@link
+android.widget.ListView}, hãy khởi tạo một {@link android.widget.ArrayAdapter} mới bằng cách sử dụng
+hàm dựng để chỉ định bố trí cho từng xâu và mảng xâu:</p>
+<pre>
+ArrayAdapter&lt;String> adapter = new ArrayAdapter&lt;String>(this,
+        android.R.layout.simple_list_item_1, myStringArray);
+</pre>
+<p>Các tham đối cho hàm dựng này là:</p>
+<ul>
+  <li>Ứng dụng của bạn {@link android.content.Context}</li>
+  <li>Bố trí chứa một {@link android.widget.TextView} cho mỗi xâu trong mảng</li>
+  <li>Mảng xâu</li>
+</ul>
+<p>Sau đó chỉ cần gọi
+{@link android.widget.ListView#setAdapter setAdapter()} trên {@link android.widget.ListView} của bạn:</p>
+<pre>
+ListView listView = (ListView) findViewById(R.id.listview);
+listView.setAdapter(adapter);
+</pre>
+
+      <p>Để tùy chỉnh diện mạo của từng mục, bạn có thể khống chế phương pháp {@link
+java.lang.Object#toString()} cho các đối tượng trong mảng của mình. Hoặc, để tạo một dạng xem cho từng
+mục không phải là một {@link android.widget.TextView} (ví dụ, nếu bạn muốn một
+{@link android.widget.ImageView} cho từng mục mảng), hãy mở rộng lớp {@link
+android.widget.ArrayAdapter} và khống chế {@link android.widget.ArrayAdapter#getView
+getView()} để trả về kiểu dạng xem mà bạn muốn cho từng mục.</p>
+
+</dd>
+
+  <dt>{@link android.widget.SimpleCursorAdapter}</dt>
+    <dd>Sử dụng trình điều hợp này khi dữ liệu của bạn đến từ một {@link android.database.Cursor}. Khi
+sử dụng {@link android.widget.SimpleCursorAdapter}, bạn phải chỉ định một bố trí để sử dụng cho từng
+hàng trong {@link android.database.Cursor} và những cột nào trong {@link android.database.Cursor}
+nên được chèn vào dạng xem nào của bố trí. Ví dụ, nếu bạn muốn tạo một danh sách
+tên người và số điện thoại, bạn có thể thực hiện một truy vấn mà trả về một {@link
+android.database.Cursor} chứa một hàng cho từng người và nhiều cột cho các tên và
+số điện thoại. Sau đó, bạn tạo một mảng xâu chỉ định những cột nào từ {@link
+android.database.Cursor} mà bạn muốn trong bố trí cho từng kết quả và một mảng số nguyên chỉ định các
+dạng xem tương ứng mà từng cột sẽ được đặt vào:</p>
+<pre>
+String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME,
+                        ContactsContract.CommonDataKinds.Phone.NUMBER};
+int[] toViews = {R.id.display_name, R.id.phone_number};
+</pre>
+<p>Khi bạn khởi tạo {@link android.widget.SimpleCursorAdapter}, hãy chuyển bố trí cần sử dụng cho
+từng kết quả, {@link android.database.Cursor} chứa các kết quả, và hai mảng sau:</p>
+<pre>
+SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
+        R.layout.person_name_and_number, cursor, fromColumns, toViews, 0);
+ListView listView = getListView();
+listView.setAdapter(adapter);
+</pre>
+<p>Sau đó, {@link android.widget.SimpleCursorAdapter} tạo một dạng xem cho từng hàng trong
+{@link android.database.Cursor} sử dụng bố trí được cung cấp bằng cách chèn từng mục {@code
+fromColumns} vào dạng xem {@code toViews} tương ứng.</p>.</dd>
+</dl>
+
+
+<p>Trong vòng đời ứng dụng của bạn, nếu bạn thay đổi dữ liệu liên quan được đọc bởi
+trình điều hợp của mình, bạn nên gọi {@link android.widget.ArrayAdapter#notifyDataSetChanged()}. Nó sẽ
+thông báo với dạng xem đính kèm rằng dữ liệu đã được thay đổi và dạng xem nên tự làm mới.</p>
+
+
+
+<h3 id="HandlingUserSelections">Xử lý sự kiện nhấp</h3>
+
+<p>Bạn có thể phản hồi các sự kiện nhấp trên từng mục trong một {@link android.widget.AdapterView} bằng cách
+triển khai giao diện {@link android.widget.AdapterView.OnItemClickListener}. Ví dụ:</p>
+
+<pre>
+// Create a message handling object as an anonymous class.
+private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
+    public void onItemClick(AdapterView parent, View v, int position, long id) {
+        // Do something in response to the click
+    }
+};
+
+listView.setOnItemClickListener(mMessageClickedHandler);
+</pre>
+
+
+
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/vi/guide/topics/ui/dialogs.jd
new file mode 100644
index 0000000..1fa4550
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/ui/dialogs.jd
@@ -0,0 +1,798 @@
+page.title=Hộp thoại
+page.tags=alertdialog,dialogfragment
+
+@jd:body
+
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>Trong tài liệu này</h2>
+<ol>
+  <li><a href="#DialogFragment">Tạo một Phân đoạn Hộp thoại</a></li>
+  <li><a href="#AlertDialog">Xây dựng một Hộp thoại Cảnh báo</a>
+    <ol>
+      <li><a href="#AddingButtons">Thêm nút</a></li>
+      <li><a href="#AddingAList">Thêm một danh sách</a></li>
+      <li><a href="#CustomLayout">Tạo một Bố trí Tùy chỉnh</a></li>
+    </ol>
+  </li>
+  <li><a href="#PassingEvents">Chuyển Sự kiện lại Máy chủ của Hộp thoại</a></li>
+  <li><a href="#ShowingADialog">Hiển thị một Hộp thoại</a></li>
+  <li><a href="#FullscreenDialog">Hiển thị một Hộp thoại Toàn màn hình hoặc dạng một Phân đoạn Nhúng</a>
+    <ol>
+      <li><a href="#ActivityAsDialog">Hiển thị một hoạt động dưới dạng một hộp thoại trên màn hình lớn</a></li>
+    </ol>
+  </li>
+  <li><a href="#DismissingADialog">Bỏ một Hộp thoại</a></li>
+</ol>
+
+    <h2>Lớp khóa</h2>
+    <ol>
+      <li>{@link android.app.DialogFragment}</li>
+      <li>{@link android.app.AlertDialog}</li>
+    </ol>
+    
+    <h2>Xem thêm</h2>
+    <ol>
+      <li><a href="{@docRoot}design/building-blocks/dialogs.html">Hướng dẫn thiết kế hộp thoại</a></li>
+      <li><a href="{@docRoot}guide/topics/ui/controls/pickers.html">Bộ chọn</a> (Hộp thoại Ngày/Giờ)</li>
+    </ol>
+  </div>
+</div>
+
+<p>Hộp thoại là một cửa sổ nhỏ có chức năng nhắc người dùng
+đưa ra một quyết định hoặc nhập thông tin bổ sung. Hộp thoại không lấp kín màn hình và
+thường được sử dụng cho các sự kiện mô thái yêu cầu người dùng phải thực hiện một hành động trước khi có thể đi tiếp.</p>
+
+<div class="note design">
+<p><strong>Thiết kế Hộp thoại</strong></p>
+  <p>Để biết thông tin về cách thiết kế hộp thoại của bạn, bao gồm các đề xuất
+  về ngôn ngữ, hãy đọc hướng dẫn thiết kế <a href="{@docRoot}design/building-blocks/dialogs.html">Hộp thoại</a>.</p>
+</div>
+
+<img src="{@docRoot}images/ui/dialogs.png" />
+
+<p>Lớp {@link android.app.Dialog} là lớp cơ sở cho hộp thoại, nhưng bạn
+nên tránh khởi tạo {@link android.app.Dialog} một cách trực tiếp.
+Thay vào đó, hãy sử dụng một trong các lớp con sau:</p>
+<dl>
+  <dt>{@link android.app.AlertDialog}</dt>
+  <dd>Hộp thoại có thể hiển thị một tiêu đề, tối đa ba nút, một danh sách
+    các mục có thể chọn, hoặc một bố trí tùy chỉnh.</dd>
+  <dt>{@link android.app.DatePickerDialog} hoặc {@link android.app.TimePickerDialog}</dt>
+  <dd>Hộp thoại với một UI được xác định trước, cho phép người dùng chọn ngày hoặc giờ.</dd>
+</dl>
+
+<div class="sidebox">
+<h2>Tránh ProgressDialog</h2>
+<p>Android có một lớp hộp thoại khác gọi là
+{@link android.app.ProgressDialog}, nó hiển thị một hộp thoại với một thanh tiến độ. Tuy nhiên, nếu bạn
+cần chỉ báo tiến độ tải hoặc chưa xác định, thay vào đó, bạn nên tuân theo hướng dẫn
+thiết kế dành cho <a href="{@docRoot}design/building-blocks/progress.html">Tiến độ &amp;
+Hoạt động</a> và sử dụng một {@link android.widget.ProgressBar} trong bố trí của mình.</p>
+</div>
+
+<p>Những lớp này định nghĩa kiểu và cấu trúc cho hộp thoại của bạn, nhưng bạn nên
+sử dụng một {@link android.support.v4.app.DialogFragment} làm bộ chứa cho hộp thoại của mình.
+Lớp {@link android.support.v4.app.DialogFragment} sẽ cung cấp tất cả điều khiển mà
+bạn cần để tạo hộp thoại của mình và quản lý diện mạo của hộp thoại, thay vì gọi ra các phương pháp
+trên đối tượng {@link android.app.Dialog}.</p>
+
+<p>Việc sử dụng {@link android.support.v4.app.DialogFragment} để quản lý hộp thoại
+sẽ đảm bảo rằng nó xử lý đúng các sự kiện vòng đời
+chẳng hạn như khi người dùng nhấn nút <em>Quay lại</em> hoặc xoay màn hình. Lớp {@link
+android.support.v4.app.DialogFragment} cũng cho phép bạn sử dụng lại UI của hộp thoại như một
+thành phần có thể nhúng trong một UI rộng hơn, giống như một {@link
+android.support.v4.app.Fragment} truyền thống (chẳng hạn như khi bạn muốn UI hộp thoại xuất hiện khác đi
+trên các màn hình lớn và nhỏ).</p>
+
+<p>Các phần sau trong hướng dẫn này mô tả cách sử dụng {@link
+android.support.v4.app.DialogFragment} kết hợp với một đối tượng {@link android.app.AlertDialog}
+. Nếu muốn tạo một bộ chọn ngày hoặc giờ, thay vào đó, bạn nên đọc hướng dẫn
+<a href="{@docRoot}guide/topics/ui/controls/pickers.html">Bộ chọn</a>.</p>
+
+<p class="note"><strong>Lưu ý:</strong>
+Vì lớp {@link android.app.DialogFragment} ban đầu được bổ sung cùng với
+Android 3.0 (API mức 11), tài liệu này mô tả cách sử dụng lớp {@link
+android.support.v4.app.DialogFragment} được cung cấp kèm <a href="{@docRoot}tools/support-library/index.html">Thư viện Hỗ trợ</a>. Bằng cách thêm thư viện này
+vào ứng dụng của mình, bạn có thể sử dụng {@link android.support.v4.app.DialogFragment} và nhiều loại
+API khác trên các thiết bị chạy Android 1.6 hoặc cao hơn. Nếu phiên bản tối thiểu mà ứng dụng của bạn hỗ trợ
+là API mức 11 hoặc cao hơn, khi đó bạn có thể sử dụng phiên bản khuôn khổ của {@link
+android.app.DialogFragment}, nhưng hãy chú ý rằng các liên kết trong tài liệu này dành cho các API
+thư viện hỗ  trợ. Khi sử dụng thư viện hỗ trợ,
+hãy nhớ rằng bạn nhập lớp <code>android.support.v4.app.DialogFragment</code>
+chứ <em>không phải</em> <code>android.app.DialogFragment</code>.</p>
+
+
+<h2 id="DialogFragment">Tạo một Phân đoạn Hộp thoại</h2>
+
+<p>Bạn có thể hoàn thành nhiều loại thiết kế hộp thoại&mdash;bao gồm
+bố trí tùy chỉnh và những bố trí được mô tả trong hướng dẫn thiết kế <a href="{@docRoot}design/building-blocks/dialogs.html">Hộp thoại</a>
+&mdash;bằng cách mở rộng
+{@link android.support.v4.app.DialogFragment} và tạo một {@link android.app.AlertDialog}
+trong phương pháp gọi lại {@link android.support.v4.app.DialogFragment#onCreateDialog
+onCreateDialog()}.</p>
+
+<p>Ví dụ, sau đây là một {@link android.app.AlertDialog} cơ bản được quản lý bên trong
+một {@link android.support.v4.app.DialogFragment}:</p>
+
+<pre>
+public class FireMissilesDialogFragment extends DialogFragment {
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Use the Builder class for convenient dialog construction
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // FIRE ZE MISSILES!
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // User cancelled the dialog
+                   }
+               });
+        // Create the AlertDialog object and return it
+        return builder.create();
+    }
+}
+</pre>
+
+<div class="figure" style="width:290px;margin:0 0 0 20px">
+<img src="{@docRoot}images/ui/dialog_buttons.png" alt="" />
+<p class="img-caption"><strong>Hình 1.</strong>
+Hộp thoại với một thông báo và hai nút hành động.</p>
+</div>
+
+<p>Lúc này, khi bạn tạo một thực thể thuộc lớp này và gọi {@link
+android.support.v4.app.DialogFragment#show show()} trên đối tượng đó, hộp thoại sẽ xuất hiện
+như minh họa trong hình 1.</p>
+
+<p>Phần tiếp theo mô tả thêm về việc sử dụng các API {@link android.app.AlertDialog.Builder}
+để tạo hộp thoại.</p>
+
+<p>Tùy vào độ phức tạp của hộp thoại của bạn, bạn có thể triển khai nhiều loại phương pháp gọi lại khác
+trong {@link android.support.v4.app.DialogFragment}, bao gồm tất cả
+<a href="{@docRoot}guide/components/fragments.html#Lifecycle">phương pháp vòng đời phân đoạn</a> cơ bản.
+
+
+
+
+
+<h2 id="AlertDialog">Xây dựng một Hộp thoại Cảnh báo</h2>
+
+
+<p>Lớp {@link android.app.AlertDialog} cho phép bạn xây dựng nhiều loại thiết kế hộp thoại và
+thường là lớp hộp thoại duy nhất mà bạn sẽ cần.
+Như được minh họa trong hình 2, có ba vùng trên một hộp thoại cảnh báo:</p>
+
+<div class="figure" style="width:311px;margin-top:0">
+<img src="{@docRoot}images/ui/dialogs_regions.png" alt="" style="margin-bottom:0" />
+<p class="img-caption"><strong>Hình 2.</strong> Bố trí của một hộp thoại.</p>
+</div>
+
+<ol>
+<li><b>Tiêu đề</b>
+  <p>Tiêu đề không bắt buộc và chỉ nên được sử dụng khi vùng nội dung
+  bị chiếm bởi một thông báo chi tiết, một danh sách, hay một bố trí tùy chỉnh. Nếu bạn cần nêu
+  một thông báo hoặc câu hỏi đơn giản (chẳng hạn như hộp thoại trong hình 1), bạn không cần tiêu đề.</li>
+<li><b>Vùng nội dung</b>
+  <p>Vùng này có thể hiển thị một thông báo, danh sách, hay bố trí tùy chỉnh khác.</p></li>
+<li><b>Nút hành động</b>
+  <p>Sẽ không có quá ba nút hành động trong một hộp thoại.</p></li>
+</ol>
+
+<p>Lớp {@link android.app.AlertDialog.Builder}
+cung cấp các API cho phép bạn tạo một {@link android.app.AlertDialog}
+với những kiểu nội dung này, bao gồm một bố trí tùy chỉnh.</p>
+
+<p>Để xây dựng một {@link android.app.AlertDialog}:</p>
+
+<pre>
+<b>// 1. Instantiate an {@link android.app.AlertDialog.Builder} with its constructor</b>
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+
+<b>// 2. Chain together various setter methods to set the dialog characteristics</b>
+builder.setMessage(R.string.dialog_message)
+       .setTitle(R.string.dialog_title);
+
+<b>// 3. Get the {@link android.app.AlertDialog} from {@link android.app.AlertDialog.Builder#create()}</b>
+AlertDialog dialog = builder.create();
+</pre>
+
+<p>Các chủ đề sau cho biết cách định nghĩa các thuộc tính hộp thoại khác nhau bằng cách
+sử dụng lớp {@link android.app.AlertDialog.Builder}.</p>
+
+
+
+
+<h3 id="AddingButtons">Thêm nút</h3>
+
+<p>Để thêm các nút hành động như trong hình 2,
+hãy gọi các phương pháp {@link android.app.AlertDialog.Builder#setPositiveButton setPositiveButton()} và
+{@link android.app.AlertDialog.Builder#setNegativeButton setNegativeButton()}:</p>
+
+<pre style="clear:right">
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+// Add the buttons
+builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User clicked OK button
+           }
+       });
+builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User cancelled the dialog
+           }
+       });
+// Set other dialog properties
+...
+
+// Create the AlertDialog
+AlertDialog dialog = builder.create();
+</pre>
+
+<p>Các phương pháp <code>set...Button()</code> yêu cầu một tiêu đề cho nút (được cung cấp
+bởi một <a href="{@docRoot}guide/topics/resources/string-resource.html">tài nguyên xâu</a>) và một 
+{@link android.content.DialogInterface.OnClickListener} có chức năng định nghĩa hành động sẽ tiến hành 
+khi người dùng nhấn nút.</p>
+
+<p>Có ba nút hành động khác nhau mà bạn có thể thêm:</p>
+<dl>
+  <dt>Tích cực</dt>
+  <dd>Bạn nên sử dụng nút này để chấp nhận và tiếp tục với hành động (hành động "OK").</dd>
+  <dt>Tiêu cực</dt>
+  <dd>Bạn nên sử dụng nút này để hủy bỏ hành động.</dd>
+  <dt>Trung lập</dt>
+  <dd>Bạn nên sử dụng nút này khi người dùng có thể không muốn tiếp tục với hành động,
+  nhưng không hẳn muốn hủy bỏ. Nó nằm ở giữa nút
+  tích cực và tiêu cực. Ví dụ, hành động có thể là "Nhắc tôi sau."</dd> 
+</dl>
+
+<p>Bạn chỉ có thể thêm một nút mỗi loại vào một {@link
+android.app.AlertDialog}. Nghĩa là, bạn không thể có nhiều hơn một nút "tích cực".</p>
+
+
+
+<div class="figure" style="width:290px;margin:0 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_list.png" alt="" />
+<p class="img-caption"><strong>Hình 3.</strong>
+Hộp thoại có tiêu đề và danh sách.</p>
+</div>
+
+<h3 id="AddingAList">Thêm một danh sách</h3>
+
+<p>Có ba loại danh sách có sẵn với các API {@link android.app.AlertDialog}:</p>
+<ul>
+<li>Danh sách một lựa chọn truyền thống</li>
+<li>Danh sách một lựa chọn cố định (nút chọn một)</li>
+<li>Danh sách nhiều lựa chọn cố định (hộp kiểm)</li>
+</ul>
+
+<p>Để tạo danh sách một lựa chọn như danh sách trong hình 3, 
+hãy sử dụng phương pháp {@link android.app.AlertDialog.Builder#setItems setItems()}:</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    builder.setTitle(R.string.pick_color)
+           .setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int which) {
+               // The 'which' argument contains the index position
+               // of the selected item
+           }
+    });
+    return builder.create();
+}
+</pre>
+
+<p>Vì danh sách xuất hiện trong vùng nội dung của hộp thoại,
+hộp thoại không thể hiển thị cả thông báo và danh sách và bạn nên đặt một tiêu đề cho hộp thoại
+bằng {@link android.app.AlertDialog.Builder#setTitle setTitle()}. 
+Để chỉ định các mục cho danh sách, hãy gọi {@link
+android.app.AlertDialog.Builder#setItems setItems()}, chuyển một mảng.
+Hoặc, bạn có thể chỉ định một danh sách bằng cách sử dụng {@link
+android.app.AlertDialog.Builder#setAdapter setAdapter()}. Điều này cho phép bạn hỗ trợ danh sách
+bằng dữ liệu động (chẳng hạn như từ một cơ sở dữ liệu) bằng cách sử dụng {@link android.widget.ListAdapter}.</p>
+
+<p>Nếu bạn chọn hỗ trợ danh sách của mình bằng một {@link android.widget.ListAdapter},
+hãy luôn sử dụng {@link android.support.v4.content.Loader} sao cho nội dung tải
+không đồng bộ. Điều này được mô tả thêm trong hướng dẫn
+<a href="{@docRoot}guide/topics/ui/declaring-layout.html#AdapterViews">Xây dựng Bố trí
+bằng một Trình điều hợp</a> và <a href="{@docRoot}guide/components/loaders.html">Trình tải</a>
+.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Theo mặc định, chạm vào một mục danh sách sẽ bỏ hộp thoại,
+trừ khi bạn đang sử dụng một trong các danh sách lựa chọn cố định sau.</p>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_checkboxes.png" />
+<p class="img-caption"><strong>Hình 4.</strong>
+Danh sách nhiều mục lựa chọn.</p>
+</div>
+
+
+<h4 id="Checkboxes">Thêm một danh sách nhiều lựa chọn hoặc một lựa chọn cố định</h4>
+
+<p>Để thêm một danh sách nhiều lựa chọn (hộp kiểm) hoặc 
+một lựa chọn (nút chọn một), hãy sử dụng các phương pháp
+{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} hoặc 
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()} tương ứng.</p>
+
+<p>Ví dụ, sau đây là cách bạn có thể tạo một danh sách nhiều lựa chọn như
+danh sách được minh họa trong hình 4 giúp lưu các mục
+được chọn trong một {@link java.util.ArrayList}:</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    mSelectedItems = new ArrayList();  // Where we track the selected items
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Set the dialog title
+    builder.setTitle(R.string.pick_toppings)
+    // Specify the list array, the items to be selected by default (null for none),
+    // and the listener through which to receive callbacks when items are selected
+           .setMultiChoiceItems(R.array.toppings, null,
+                      new DialogInterface.OnMultiChoiceClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int which,
+                       boolean isChecked) {
+                   if (isChecked) {
+                       // If the user checked the item, add it to the selected items
+                       mSelectedItems.add(which);
+                   } else if (mSelectedItems.contains(which)) {
+                       // Else, if the item is already in the array, remove it 
+                       mSelectedItems.remove(Integer.valueOf(which));
+                   }
+               }
+           })
+    // Set the action buttons
+           .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // User clicked OK, so save the mSelectedItems results somewhere
+                   // or return them to the component that opened the dialog
+                   ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   ...
+               }
+           });
+
+    return builder.create();
+}
+</pre>
+
+<p>Mặc dù cả danh sách truyền thống và danh sách có nút chọn một
+đều cung cấp hành động "một lựa chọn", bạn nên sử dụng {@link
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()} nếu bạn muốn cố định lựa chọn của người dùng.
+Cụ thể, nếu việc mở hộp thoại lại sau này báo hiệu lựa chọn hiện tại của người dùng, khi đó
+bạn hãy tạo một danh sách với các nút chọn một.</p>
+
+
+
+
+
+<h3 id="CustomLayout">Tạo một Bố trí Tùy chỉnh</h3>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_custom.png" alt="" />
+<p class="img-caption"><strong>Hình 5.</strong> Một bố trí hộp thoại tùy chỉnh.</p>
+</div>
+
+<p>Nếu bạn muốn một bố trí tùy chỉnh trong một hộp thoại, hãy tạo một bố trí và thêm nó vào một
+{@link android.app.AlertDialog} bằng cách gọi {@link
+android.app.AlertDialog.Builder#setView setView()} trên đối tượng {@link
+android.app.AlertDialog.Builder} của bạn.</p>
+
+<p>Theo mặc định, bố trí tùy chỉnh sẽ lấp đầy cửa sổ hộp thoại, nhưng bạn vẫn có thể
+sử dụng các phương pháp {@link android.app.AlertDialog.Builder} để thêm nút và tiêu đề.</p>
+
+<p>Ví dụ, sau đây là tệp bố trí cho hộp thoại trong Hình 5:</p>
+
+<p style="clear:right" class="code-caption">res/layout/dialog_signin.xml</p>
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+    &lt;ImageView
+        android:src="@drawable/header_logo"
+        android:layout_width="match_parent"
+        android:layout_height="64dp"
+        android:scaleType="center"
+        android:background="#FFFFBB33"
+        android:contentDescription="@string/app_name" />
+    &lt;EditText
+        android:id="@+id/username"
+        android:inputType="textEmailAddress"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="16dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="4dp"
+        android:hint="@string/username" />
+    &lt;EditText
+        android:id="@+id/password"
+        android:inputType="textPassword"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="4dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="16dp"
+        android:fontFamily="sans-serif"
+        android:hint="@string/password"/>
+&lt;/LinearLayout>
+</pre>
+
+<p class="note"><strong>Mẹo:</strong> Theo mặc định, khi bạn đặt một phần tử {@link android.widget.EditText}
+để sử dụng kiểu đầu vào {@code "textPassword"}, họ phông được đặt thành đơn cách, vì thế
+bạn nên đổi họ phông thành {@code "sans-serif"} sao cho cả hai trường văn bản đều sử dụng
+một kiểu phông thống nhất.</p>
+
+<p>Để bung bố trí ra trong {@link android.support.v4.app.DialogFragment} của bạn,
+hãy lấy một {@link android.view.LayoutInflater} với 
+{@link android.app.Activity#getLayoutInflater()} và gọi
+{@link android.view.LayoutInflater#inflate inflate()}, trong đó tham số đầu tiên
+là ID tài nguyên bố trí và tham số thứ hai là một dạng xem mẹ cho bố trí.
+Khi đó, bạn có thể gọi {@link android.app.AlertDialog#setView setView()}
+để đặt bố trí vào một hộp thoại.</p>
+
+<pre>
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Get the layout inflater
+    LayoutInflater inflater = getActivity().getLayoutInflater();
+
+    // Inflate and set the layout for the dialog
+    // Pass null as the parent view because its going in the dialog layout
+    builder.setView(inflater.inflate(R.layout.dialog_signin, null))
+    // Add action buttons
+           .setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // sign in the user ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int id) {
+                   LoginDialogFragment.this.getDialog().cancel();
+               }
+           });      
+    return builder.create();
+}
+</pre>
+
+<div class="note">
+<p><strong>Mẹo:</strong> Nếu bạn muốn một hộp thoại tùy chỉnh,
+thay vào đó, bạn có thể hiển thị {@link android.app.Activity} như là một hộp thoại
+thay vì sử dụng các API {@link android.app.Dialog}. Chỉ cần tạo một hoạt động và đặt chủ đề của nó thành
+{@link android.R.style#Theme_Holo_Dialog Theme.Holo.Dialog}
+trong phần tử bản kê khai <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a>:</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.Dialog" >
+</pre>
+<p>Vậy là xong. Lúc này, hoạt động sẽ hiển thị một cửa sổ hộp thoại thay vì toàn màn hình.</p>
+</div>
+
+
+
+<h2 id="PassingEvents">Chuyển Sự kiện lại Máy chủ của Hộp thoại</h2>
+
+<p>Khi người dùng chạm vào một trong các nút hành động của hộp thoại hoặc chọn một mục từ danh sách của hộp thoại,
+{@link android.support.v4.app.DialogFragment} của bạn có thể tự thực hiện hành động
+cần thiết, nhưng thường thì bạn sẽ muốn chuyển sự kiện tới hoạt động hoặc phân đoạn
+đã mở hộp thoại. Để làm điều này, hãy định nghĩa một giao diện bằng một phương pháp cho mỗi loại sự kiện nhấp.
+Sau đó, triển khai giao diện đó trong thành phần chủ mà sẽ
+nhận sự kiện hành động từ hộp thoại.</p>
+
+<p>Ví dụ, sau đây là một {@link android.support.v4.app.DialogFragment} có chức năng định nghĩa một
+giao diện mà thông qua đó, nó sẽ chuyển các sự kiện lại cho hoạt động chủ:</p>
+
+<pre>
+public class NoticeDialogFragment extends DialogFragment {
+    
+    /* The activity that creates an instance of this dialog fragment must
+     * implement this interface in order to receive event callbacks.
+     * Each method passes the DialogFragment in case the host needs to query it. */
+    public interface NoticeDialogListener {
+        public void onDialogPositiveClick(DialogFragment dialog);
+        public void onDialogNegativeClick(DialogFragment dialog);
+    }
+    
+    // Use this instance of the interface to deliver action events
+    NoticeDialogListener mListener;
+    
+    // Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
+    &#64;Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        // Verify that the host activity implements the callback interface
+        try {
+            // Instantiate the NoticeDialogListener so we can send events to the host
+            mListener = (NoticeDialogListener) activity;
+        } catch (ClassCastException e) {
+            // The activity doesn't implement the interface, throw exception
+            throw new ClassCastException(activity.toString()
+                    + " must implement NoticeDialogListener");
+        }
+    }
+    ...
+}
+</pre>
+
+<p>Hoạt động lưu giữ hộp thoại sẽ tạo một thực thể của hộp thoại
+bằng hàm dựng của phân đoạn hộp thoại và nhận sự kiện
+của hộp thoại thông qua triển khai giao diện {@code NoticeDialogListener}:</p>
+
+<pre>
+public class MainActivity extends FragmentActivity
+                          implements NoticeDialogFragment.NoticeDialogListener{
+    ...
+    
+    public void showNoticeDialog() {
+        // Create an instance of the dialog fragment and show it
+        DialogFragment dialog = new NoticeDialogFragment();
+        dialog.show(getSupportFragmentManager(), "NoticeDialogFragment");
+    }
+
+    // The dialog fragment receives a reference to this Activity through the
+    // Fragment.onAttach() callback, which it uses to call the following methods
+    // defined by the NoticeDialogFragment.NoticeDialogListener interface
+    &#64;Override
+    public void onDialogPositiveClick(DialogFragment dialog) {
+        // User touched the dialog's positive button
+        ...
+    }
+
+    &#64;Override
+    public void onDialogNegativeClick(DialogFragment dialog) {
+        // User touched the dialog's negative button
+        ...
+    }
+}
+</pre>
+
+<p>Vì hoạt động chủ sẽ triển khai {@code NoticeDialogListener}&mdash;, được
+thực thi bởi phương pháp gọi lại {@link android.support.v4.app.Fragment#onAttach onAttach()}
+minh họa bên trên,&mdash;phân đoạn hộp thoại có thể sử dụng các phương pháp gọi lại
+giao diện để chuyển các sự kiện nhấp cho hoạt động:</p>
+
+<pre>
+public class NoticeDialogFragment extends DialogFragment {
+    ...
+
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Build the dialog and set up the button click handlers
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the positive button event back to the host activity
+                       mListener.onDialogPositiveClick(NoticeDialogFragment.this);
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the negative button event back to the host activity
+                       mListener.onDialogNegativeClick(NoticeDialogFragment.this);
+                   }
+               });
+        return builder.create();
+    }
+}
+</pre>
+
+
+
+<h2 id="ShowingADialog">Hiển thị một Hộp thoại</h2>
+
+<p>Khi bạn muốn hiển thị hộp thoại của mình, hãy tạo một thực thể {@link
+android.support.v4.app.DialogFragment} của bạn và gọi {@link android.support.v4.app.DialogFragment#show
+show()}, chuyển {@link android.support.v4.app.FragmentManager} và một tên tag
+cho phân đoạn hộp thoại.</p>
+
+<p>Bạn có thể nhận được {@link android.support.v4.app.FragmentManager} bằng cách gọi
+{@link android.support.v4.app.FragmentActivity#getSupportFragmentManager()} từ
+{@link android.support.v4.app.FragmentActivity} hoặc {@link
+android.support.v4.app.Fragment#getFragmentManager()} từ một {@link
+android.support.v4.app.Fragment}. Ví dụ:</p>
+
+<pre>
+public void confirmFireMissiles() {
+    DialogFragment newFragment = new FireMissilesDialogFragment();
+    newFragment.show(getSupportFragmentManager(), "missiles");
+}
+</pre>
+
+<p>Tham đối thứ hai, {@code "missiles"}, là một tên tag duy nhất mà hệ thống sử dụng để lưu
+và khôi phục trạng thái của phân đoạn khi cần thiết. Tag cũng cho phép bạn nhận một điều khiển (handle) cho
+phân đoạn bằng cách gọi {@link android.support.v4.app.FragmentManager#findFragmentByTag
+findFragmentByTag()}.</p>
+
+
+
+
+<h2 id="FullscreenDialog">Hiển thị một Hộp thoại Toàn màn hình hoặc dạng một Phân đoạn Nhúng</h2>
+
+<p>Bạn có thể có một thiết kế UI mà trong đó bạn muốn một phần UI xuất hiện như một hộp thoại trong một số
+tình huống, nhưng ở dưới dạng toàn màn hình hoặc phân đoạn nhúng trong trường hợp khác (có thể phụ thuộc
+vào thiết bị là màn hình lớn hay nhỏ). Lớp {@link android.support.v4.app.DialogFragment}
+cung cấp cho bạn sự linh hoạt này vì nó vẫn có thể đóng vai trò như một {@link
+android.support.v4.app.Fragment} nhúng được.</p>
+
+<p>Tuy nhiên, bạn không thể sử dụng {@link android.app.AlertDialog.Builder AlertDialog.Builder}
+hay các đối tượng {@link android.app.Dialog} khác để xây dựng hộp thoại trong trường hợp này. Nếu
+bạn muốn {@link android.support.v4.app.DialogFragment} có thể
+nhúng được, bạn phải định nghĩa UI của hộp thoại trong một bố trí, rồi tải bố trí đó trong lệnh gọi lại
+{@link android.support.v4.app.DialogFragment#onCreateView
+onCreateView()}.</p>
+
+<p>Sau đây là một ví dụ {@link android.support.v4.app.DialogFragment} có thể xuất hiện như một
+hộp thoại hoặc phân đoạn nhúng được (sử dụng một bố trí có tên gọi <code>purchase_items.xml</code>):</p>
+
+<pre>
+public class CustomDialogFragment extends DialogFragment {
+    /** The system calls this to get the DialogFragment's layout, regardless
+        of whether it's being displayed as a dialog or an embedded fragment. */
+    &#64;Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        // Inflate the layout to use as dialog or embedded fragment
+        return inflater.inflate(R.layout.purchase_items, container, false);
+    }
+  
+    /** The system calls this only when creating the layout in a dialog. */
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // The only reason you might override this method when using onCreateView() is
+        // to modify any dialog characteristics. For example, the dialog includes a
+        // title by default, but your custom layout might not need it. So here you can
+        // remove the dialog title, but you must call the superclass to get the Dialog.
+        Dialog dialog = super.onCreateDialog(savedInstanceState);
+        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+        return dialog;
+    }
+}
+</pre>
+
+<p>Và sau đây là một số mã quyết định xem hiển thị phân đoạn như một hộp thoại
+hay UI toàn màn hình, dựa vào kích cỡ màn hình:</p>
+
+<pre>
+public void showDialog() {
+    FragmentManager fragmentManager = getSupportFragmentManager();
+    CustomDialogFragment newFragment = new CustomDialogFragment();
+    
+    if (mIsLargeLayout) {
+        // The device is using a large layout, so show the fragment as a dialog
+        newFragment.show(fragmentManager, "dialog");
+    } else {
+        // The device is smaller, so show the fragment fullscreen
+        FragmentTransaction transaction = fragmentManager.beginTransaction();
+        // For a little polish, specify a transition animation
+        transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
+        // To make it fullscreen, use the 'content' root view as the container
+        // for the fragment, which is always the root view for the activity
+        transaction.add(android.R.id.content, newFragment)
+                   .addToBackStack(null).commit();
+    }
+}
+</pre>
+
+<p>Để biết thêm thông tin về việc thực hiện các giao tác phân đoạn, hãy xem hướng dẫn
+<a href="{@docRoot}guide/components/fragments.html">Phân đoạn</a>.</p>
+
+<p>Trong ví dụ này, boolean <code>mIsLargeLayout</code> chỉ định liệu thiết bị hiện tại
+có nên sử dụng thiết kế bố trí lớn của ứng dụng (và vì thế, nó hiển thị phân đoạn này như một hộp thoại thay vì
+toàn màn hình) hay không. Cách tốt nhất để đặt loại boolean này đó là khai báo một
+<a href="{@docRoot}guide/topics/resources/more-resources.html#Bool">giá trị tài nguyên bool</a>
+bằng một giá trị <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">tài nguyên thay thế</a> cho các kích cỡ màn hình khác nhau. Ví dụ, sau đây là hai
+phiên bản của tài nguyên bool cho các kích cỡ màn hình khác nhau:</p>
+
+<p class="code-caption">res/values/bools.xml</p>
+<pre>
+&lt;!-- Default boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">false&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p class="code-caption">res/values-large/bools.xml</p>
+<pre>
+&lt;!-- Large screen boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">true&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p>Khi đó, bạn có thể khởi tạo giá trị {@code mIsLargeLayout} trong phương pháp
+{@link android.app.Activity#onCreate onCreate()} của hoạt động:</p>
+
+<pre>
+boolean mIsLargeLayout;
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_main);
+
+    mIsLargeLayout = getResources().getBoolean(R.bool.large_layout);
+}
+</pre>
+
+
+
+<h3 id="ActivityAsDialog">Hiển thị một hoạt động dưới dạng một hộp thoại trên màn hình lớn</h3>
+
+<p>Thay vì hiển thị một hộp thoại thành UI toàn màn hình trên các màn hình nhỏ, bạn có thể đạt được
+kết quả tương tự bằng cách hiển thị một {@link android.app.Activity} thành một hộp thoại trên
+màn hình lớn. Phương pháp mà bạn chọn phụ thuộc vào thiết kế ứng dụng của bạn, nhưng
+việc hiển thị một hoạt động thành một hộp thoại thường có ích khi ứng dụng của bạn đã được thiết kế cho màn hình
+nhỏ và bạn muốn cải thiện trải nghiệm trên máy tính bảng bằng cách hiển thị một hoạt động có vòng đời ngắn
+thành một hộp thoại.</p>
+
+<p>Để hiển thị một hoạt động thành một hộp thoại chỉ khi trên màn hình lớn,
+hãy áp dụng chủ đề {@link android.R.style#Theme_Holo_DialogWhenLarge Theme.Holo.DialogWhenLarge}
+cho phần tử bản kê khai <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a>:</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.DialogWhenLarge" >
+</pre>
+
+<p>Để biết thêm thông tin về việc tạo kiểu cho các hoạt động của bạn bằng chủ đề, hãy xem hướng dẫn <a href="{@docRoot}guide/topics/ui/themes.html">Kiểu và Chủ đề</a>.</p>
+
+
+
+<h2 id="DismissingADialog">Bỏ một Hộp thoại</h2>
+
+<p>Khi người dùng chạm vào bất kỳ nút hành động nào được tạo bằng
+{@link android.app.AlertDialog.Builder}, hệ thống sẽ bỏ hộp thoại cho bạn.</p>
+
+<p>Hệ thống cũng bỏ hộp thoại khi người dùng chạm vào một mục trong một danh sách hộp thoại, trừ
+khi danh sách sử dụng nút chọn một hoặc hộp kiểm. Nếu không, bạn có thể bỏ thủ công hộp thoại của mình
+bằng cách gọi {@link android.support.v4.app.DialogFragment#dismiss()} trên {@link
+android.support.v4.app.DialogFragment} của bạn.</p>
+
+<p>Trong trường hợp bạn cần thực hiện các
+hành động nhất định khi hộp thoại biến mất, bạn có thể triển khai phương pháp {@link
+android.support.v4.app.DialogFragment#onDismiss onDismiss()} trong {@link
+android.support.v4.app.DialogFragment} của mình.</p>
+
+<p>Bạn cũng có thể <em>hủy bỏ</em> một hộp thoại. Đây là một sự kiện đặc biệt chỉ báo người dùng
+chủ ý rời khỏi hộp thoại mà không hoàn thành tác vụ. Điều này xảy ra nếu người dùng nhấn nút 
+<em>Quay lại</em>, chạm vào màn hình ngoài vùng hộp thoại,
+hoặc nếu bạn công khai gọi {@link android.app.Dialog#cancel()} trên {@link
+android.app.Dialog} (chẳng hạn như khi hồi đáp lại một nút "Hủy bỏ" trong hộp thoại).</p>
+
+<p>Như nêu trong ví dụ bên trên, bạn có thể hồi đáp lại sự kiện hủy bỏ này bằng cách triển khai
+{@link android.support.v4.app.DialogFragment#onCancel onCancel()} trong lớp {@link
+android.support.v4.app.DialogFragment} của mình.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Hệ thống sẽ gọi
+{@link android.support.v4.app.DialogFragment#onDismiss onDismiss()} trên mỗi sự kiện mà
+gọi ra lệnh gọi lại {@link android.support.v4.app.DialogFragment#onCancel onCancel()}. Tuy nhiên,
+nếu bạn gọi {@link android.app.Dialog#dismiss Dialog.dismiss()} hoặc {@link
+android.support.v4.app.DialogFragment#dismiss DialogFragment.dismiss()},
+hệ thống sẽ gọi {@link android.support.v4.app.DialogFragment#onDismiss onDismiss()} <em>chứ
+không phải</em> {@link android.support.v4.app.DialogFragment#onCancel onCancel()}. Vì thế, nhìn chung bạn nên
+gọi {@link android.support.v4.app.DialogFragment#dismiss dismiss()} khi người dùng nhấn nút
+<em>tích cực</em> trong hộp thoại của bạn để xóa hộp thoại khỏi dạng xem.</p>
+
+
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/menus.jd b/docs/html-intl/intl/vi/guide/topics/ui/menus.jd
new file mode 100644
index 0000000..8e9e1c4
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/ui/menus.jd
@@ -0,0 +1,1031 @@
+page.title=Menu
+parent.title=Giao diện Người dùng
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Trong tài liệu này</h2>
+<ol>
+  <li><a href="#xml">Định nghĩa một Menu trong XML</a></li>
+  <li><a href="#options-menu">Tạo một Menu Tùy chọn</a>
+    <ol>
+      <li><a href="#RespondingOptionsMenu">Xử lý sự kiện nhấp</a></li>
+      <li><a href="#ChangingTheMenu">Thay đổi các mục menu vào thời gian chạy</a></li>
+    </ol>
+  </li>
+  <li><a href="#context-menu">Tạo một Menu Ngữ cảnh</a>
+    <ol>
+      <li><a href="#FloatingContextMenu">Tạo một menu ngữ cảnh nổi</a></li>
+      <li><a href="#CAB">Sử dụng chế độ hành động theo ngữ cảnh</a></li>
+    </ol>
+  </li>
+  <li><a href="#PopupMenu">Tạo một Menu Bật lên</a>
+    <ol>
+      <li><a href="#PopupEvents">Xử lý sự kiện nhấp</a></li>
+    </ol>
+  </li>
+  <li><a href="#groups">Tạo Nhóm Menu</a>
+    <ol>
+      <li><a href="#checkable">Sử dụng mục menu có thể chọn</a></li>
+    </ol>
+  </li>
+  <li><a href="#intents">Thêm Mục Menu dựa trên Ý định</a>
+    <ol>
+      <li><a href="#AllowingToAdd">Cho phép hoạt động của bạn được thêm vào các menu khác</a></li>
+    </ol>
+  </li>
+</ol>
+
+  <h2>Lớp khóa</h2>
+  <ol>
+    <li>{@link android.view.Menu}</li>
+    <li>{@link android.view.MenuItem}</li>
+    <li>{@link android.view.ContextMenu}</li>
+    <li>{@link android.view.ActionMode}</li>
+  </ol>
+
+  <h2>Xem thêm</h2>
+  <ol>
+    <li><a href="{@docRoot}guide/topics/ui/actionbar.html">Thanh Hành động</a></li>
+    <li><a href="{@docRoot}guide/topics/resources/menu-resource.html">Tài nguyên Menu</a></li>
+    <li><a href="http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html">Nói
+Tạm biệt với Nút Menu</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Menu là một thành phần giao diện người dùng phổ biến trong nhiều loại ứng dụng. Để cung cấp một
+trải nghiệm người dùng quen thuộc và nhất quán, bạn nên sử dụng các API {@link android.view.Menu} để trình bày
+hành động người dùng và các tùy chọn khác trong hoạt động của mình.</p>
+
+<p>Bắt đầu với Android 3.0 (API mức 11), các thiết bị dựa trên nền tảng Android không còn phải
+cung cấp một nút <em>Menu</em> chuyên dụng nữa. Với sự thay đổi này, các ứng dụng Android cần tránh khỏi
+sự phụ thuộc vào bảng điều khiển menu 6 mục truyền thống này mà thay vào đó cung cấp một thanh hành động để trình bày
+các hành động người dùng thông dụng.</p>
+
+<p>Mặc dù thiết kế và trải nghiệm người dùng đối với một số mục menu đã thay đổi, ngữ nghĩa để định nghĩa
+tập hợp hành động và tùy chọn thì vẫn dựa trên các API {@link android.view.Menu}. Hướng dẫn
+này trình bày cách tạo ba loại menu hay trình bày hành động cơ bản trên tất cả
+phiên bản Android:</p>
+
+<dl>
+  <dt><strong>Menu tùy chọn và thanh hành động</strong></dt>
+    <dd><a href="#options-menu">Menu tùy chọn</a> là tập hợp các mục menu cơ bản cho một
+hoạt động. Đó là nơi bạn nên đặt các hành động có tác động chung tới ứng dụng, chẳng hạn như
+"Tìm kiếm," "Soạn e-mail" và "Cài đặt."
+  <p>Nếu bạn đang phát triển cho phiên bản Android 2.3 hoặc thấp hơn, người dùng có thể
+hiện bảng điều khiển menu tùy chọn bằng cách nhấn nút <em>Menu</em>.</p>
+  <p>Trên phiên bản Android 3.0 trở lên, các mục từ menu tùy chọn được trình bày bởi <a href="{@docRoot}guide/topics/ui/actionbar.html">thanh hành động</a>, là sự kết hợp giữa các mục hành động
+trên màn hình và các tùy chọn tràn. Bắt đầu với phiên bản Android 3.0, nút <em>Menu</em> bị bỏ đi (một số
+thiết bị
+không có), vì thế bạn nên chuyển sang sử dụng thanh hành động để cho phép truy cập vào hành động và
+các tùy chọn khác.</p>
+  <p>Xem phần về <a href="#options-menu">Tạo một Menu Tùy chọn</a>.</p>
+    </dd>
+    
+  <dt><strong>Menu ngữ cảnh và chế độ hành động theo ngữ cảnh</strong></dt>
+  
+   <dd>Menu ngữ cảnh là một <a href="#FloatingContextMenu">menu nổi</a> xuất hiện khi
+người dùng thực hiện nhấp giữ trên một phần tử. Nó cung cấp các hành động ảnh hưởng tới nội dung hoặc
+khung ngữ cảnh được chọn.
+  <p>Khi phát triển cho phiên bản Android 3.0 trở lên, thay vào đó, bạn nên sử dụng <a href="#CAB">chế độ hành động theo ngữ cảnh</a> để kích hoạt các hành động trên nội dung được chọn. Chế độ này hiển thị
+các mục hành động ảnh hưởng tới nội dung được chọn trong một thanh ở trên cùng của màn hình và cho phép người dùng
+chọn nhiều mục.</p>
+  <p>Xem phần nói về <a href="#context-menu">Tạo Menu Ngữ cảnh</a>.</p>
+</dd>
+    
+  <dt><strong>Menu bật lên</strong></dt>
+    <dd>Menu bật lên sẽ hiển thị danh sách các mục trong một danh sách thẳng đứng được neo vào dạng xem
+đã gọi ra menu. Nên cung cấp một phần tràn gồm các hành động liên quan tới nội dung cụ thể hoặc
+nhằm cung cấp các tùy chọn cho phần thứ hai của một lệnh. Các hành động trong một menu bật lên
+<strong>không</strong> nên trực tiếp ảnh hưởng tới nội dung tương ứng&mdash;đó là việc của hành động ngữ cảnh
+. Thay vào đó, menu bật lên áp dụng cho các hành động mở rộng liên quan tới các vùng nội dung trong hoạt động
+của bạn.
+  <p>Xem phần về <a href="#PopupMenu">Tạo một Menu Bật lên</a>.</p>
+</dd>
+</dl>
+
+
+
+<h2 id="xml">Định nghĩa một Menu trong XML</h2>
+
+<p>Đối với tất cả các loại menu, Android cung cấp một định dạng XML chuẩn để định nghĩa các mục menu.
+Thay vì xây dựng một menu trong mã của hoạt động của bạn, bạn nên định nghĩa một menu và tất cả các mục của nó trong một
+<a href="{@docRoot}guide/topics/resources/menu-resource.html">tài nguyên menu</a> XML. Khi đó, bạn có thể
+bung tài nguyên menu (tải nó như một đối tượng {@link android.view.Menu}) trong hoạt động hoặc
+phân đoạn của mình.</p>
+
+<p>Sử dụng một tài nguyên menu là một cách làm hay vì một vài lý do:</p>
+<ul>
+  <li>Nó dễ trực quan hóa cấu trúc menu trong XML hơn.</li>
+  <li>Nó tách riêng nội dung cho menu với mã hành vi của ứng dụng của bạn.</li>
+  <li>Nó cho phép bạn tạo các cấu hình menu phái sinh cho các phiên bản nền tảng,
+kích cỡ màn hình khác nhau và các cấu hình khác bằng cách tận dụng khuôn khổ <a href="{@docRoot}guide/topics/resources/index.html">tài nguyên ứng dụng</a>.</li>
+</ul>
+
+<p>Để định nghĩa menu, hãy tạo một tệp XML bên trong thư mục <code>res/menu/</code>
+dự án của bạn và xây dựng menu với các phần tử sau:</p>
+<dl>
+  <dt><code>&lt;menu></code></dt>
+    <dd>Định nghĩa một {@link android.view.Menu}, đó là một bộ chứa các mục menu. Phần tử 
+<code>&lt;menu></code> phải là một nút gốc cho tệp và có thể giữ một hoặc nhiều phần tử
+<code>&lt;item></code> và <code>&lt;group></code>.</dd>
+
+  <dt><code>&lt;item></code></dt>
+    <dd>Tạo một {@link android.view.MenuItem}, nó biểu diễn một mục đơn trong một menu. Phần tử
+này có thể chứa một phần tử <code>&lt;menu></code> được lồng nhau để tạo một menu con.</dd>
+    
+  <dt><code>&lt;group></code></dt>
+    <dd>Một bộ chứa tùy chọn, vô hình cho các phần tử {@code &lt;item&gt;}. Nó cho phép bạn
+phân loại các mục menu sao cho chúng chia sẻ các tính chất như trạng thái hiện hoạt và khả năng hiển thị. Để biết thêm
+thông tin, hãy xem phần nói về <a href="#groups">Tạo Nhóm Menu</a>.</dd>
+</dl>
+
+
+<p>Sau đây là một menu ví dụ có tên là <code>game_menu.xml</code>:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/new_game"
+          android:icon="@drawable/ic_new_game"
+          android:title="@string/new_game"
+          android:showAsAction="ifRoom"/&gt;
+    &lt;item android:id="@+id/help"
+          android:icon="@drawable/ic_help"
+          android:title="@string/help" /&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>Phần tử <code>&lt;item></code> hỗ trợ một vài thuộc tính bạn có thể sử dụng để định nghĩa biểu hiện bên ngoài
+và hành vi của một mục. Các mục trong menu trên bao gồm những thuộc tính sau:</p>
+
+<dl>
+  <dt>{@code android:id}</dt>
+    <dd>Một ID tài nguyên duy nhất đối với mục, nó cho phép ứng dụng có thể nhận ra mục đó
+khi người dùng chọn nó.</dd>
+  <dt>{@code android:icon}</dt>
+    <dd>Một tham chiếu tới một nội dung vẽ được để dùng làm biểu tượng của mục.</dd>
+  <dt>{@code android:title}</dt>
+    <dd>Một tham chiếu tới một xâu để dùng làm tiêu đề của mục.</dd>
+  <dt>{@code android:showAsAction}</dt>
+    <dd>Quy định thời điểm và cách thức mục này nên xuất hiện như một mục hành động trong <a href="{@docRoot}guide/topics/ui/actionbar.html">thanh hành động</a>.</dd>
+</dl>
+
+<p>Đây là những thuộc tính quan trọng nhất bạn nên sử dụng, nhưng còn nhiều thuộc tính sẵn có khác.
+Để biết thông tin về tất cả thuộc tính được hỗ trợ, hãy xem tài liệu <a href="{@docRoot}guide/topics/resources/menu-resource.html">Tài nguyên Menu</a>.</p>
+
+<p>Bạn có thể thêm một menu con vào một mục trong bất kỳ menu nào (ngoại trừ menu con) bằng cách thêm một phần tử {@code &lt;menu&gt;}
+làm con của {@code &lt;item&gt;}. Các menu con thường hữu ích khi ứng dụng của bạn có nhiều
+chức năng mà có thể được tổ chức thành các chủ đề, như các mục trong thanh menu của một ứng dụng PC (Tệp,
+Chỉnh sửa, Dạng xem, v.v.). Ví dụ:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/file"
+          android:title="@string/file" &gt;
+        &lt;!-- "file" submenu --&gt;
+        &lt;menu&gt;
+            &lt;item android:id="@+id/create_new"
+                  android:title="@string/create_new" /&gt;
+            &lt;item android:id="@+id/open"
+                  android:title="@string/open" /&gt;
+        &lt;/menu&gt;
+    &lt;/item&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>Để sử dụng menu trong hoạt động của mình, bạn cần bung tài nguyên menu (chuyển tài nguyên XML
+thành một đối tượng có thể lập trình) bằng cách sử dụng {@link android.view.MenuInflater#inflate(int,Menu)
+MenuInflater.inflate()}. Trong những phần sau, bạn sẽ biết cách bung một menu đối với mỗi
+loại menu.</p>
+
+
+
+<h2 id="options-menu">Tạo một Menu Tùy chọn</h2>
+
+<div class="figure" style="width:200px;margin:0">
+  <img src="{@docRoot}images/options_menu.png" height="333" alt="" />
+  <p class="img-caption"><strong>Hình 1.</strong> Các menu tùy chọn trong
+Trình duyệt, trên Android 2.3.</p>
+</div>
+
+<p>Menu tùy chọn là nơi bạn nên đưa vào hành động và các tùy chọn khác liên quan tới
+ngữ cảnh hoạt động hiện tại, chẳng hạn như "Tìm kiếm," "Soạn e-mail," và "Cài đặt."</p>
+
+<p>Nơi mà các mục trong menu tùy chọn của bạn xuất hiện trên màn hình sẽ phụ thuộc vào phiên bản mà bạn
+phát triển ứng dụng của mình cho:</p>
+
+<ul>
+  <li>Nếu bạn phát triển ứng dụng của mình cho phiên bản <strong>Android 2.3.x (API mức 10) hoặc
+thấp hơn</strong>, nội dung của menu tùy chọn sẽ xuất hiện ở dưới cùng màn hình khi người dùng
+nhấn nút <em>Menu</em> như minh họa trong hình 1. Khi được mở, phần hiển thị đầu tiên là
+menu biểu tượng
+với tối đa sáu mục menu. Nếu menu của bạn bao gồm nhiều hơn sáu mục, Android sẽ đặt
+mục thứ sáu và phần còn lại vào một menu tràn mà người dùng có thể mở bằng cách chọn
+<em>Thêm nữa</em>.</li>
+
+  <li>Nếu bạn phát triển ứng dụng của mình cho phiên bản <strong>Android 3.0 (API mức 11) và
+cao hơn</strong>, các mục từ menu tùy chọn sẵn ở trong <a href="{@docRoot}guide/topics/ui/actionbar.html">thanh hành động</a>. Theo mặc định, hệ thống
+đặt tất cả các mục trong phần tràn hành động mà người dùng có thể hiện bằng biểu tượng tràn hành động phía
+bên phải của thanh hành động (hoặc bằng cách nhấn nút <em>Menu</em> của thiết bị nếu có). Để
+kích hoạt
+truy cập nhanh vào các hành động quan trọng, bạn có thể đưa lên một vài mục xuất hiện trong thanh hành động bằng cách thêm
+{@code android:showAsAction="ifRoom"} vào phần tử {@code &lt;item&gt;} tương ứng (xem hình
+2). <p>Để biết thêm thông tin về các mục hành động và hành vi khác của thanh hành động, hãy xem hướng dẫn <a href="{@docRoot}guide/topics/ui/actionbar.html">Thanh Hành động</a>. </p>
+<p class="note"><strong>Lưu ý:</strong> Ngay cả khi bạn <em>không</em> đang phát triển cho phiên bản Android 3.0 hoặc
+cao hơn, bạn có thể xây dựng bố trí thanh hành động của chính mình cho hiệu ứng tương tự. Để xem ví dụ về cách bạn có thể hỗ trợ các phiên bản cao hơn
+của Android bằng một thanh hành động, hãy xem mẫu <a href="{@docRoot}resources/samples/ActionBarCompat/index.html">Tương thích với Thanh Hành động</a>
+.</p>
+</li>
+</ul>
+
+<img src="{@docRoot}images/ui/actionbar.png" alt="" />
+<p class="img-caption"><strong>Hình 2.</strong> Thanh hành động từ ứng dụng <a href="{@docRoot}resources/samples/HoneycombGallery/index.html">Honeycomb Gallery</a>, hiển thị
+các tab điều hướng và một mục hành động máy ảnh (cộng với nút tràn hành động).</p>
+
+<p>Bạn có thể khai báo các mục cho menu tùy chọn từ lớp con {@link android.app.Activity}
+của bạn hoặc một lớp con {@link android.app.Fragment}. Nếu cả hoạt động của bạn và (các) phân đoạn
+đều khai báo các mục cho menu tùy chọn, chúng sẽ được kết hợp lại trong UI. Các mục của hoạt động xuất hiện
+trước, sau đó là các mục của từng phân đoạn theo thứ tự phân đoạn được thêm vào
+hoạt động. Nếu cần, bạn có thể sắp xếp lại các mục menu bằng thuộc tính {@code android:orderInCategory}
+trong mỗi {@code &lt;item&gt;} mà bạn cần di chuyển.</p>
+
+<p>Để quy định menu tùy chọn cho một hoạt động, hãy khống chế {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} (các phân đoạn cung cấp
+phương pháp gọi lại {@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()} của chính mình). Trong
+phương pháp này, bạn có thể bung tài nguyên menu của mình (<a href="#xml">được định nghĩa trong XML</a>) vào {@link
+android.view.Menu} được cung cấp trong phương pháp gọi lại. Ví dụ:</p>
+
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu) {
+    MenuInflater inflater = {@link android.app.Activity#getMenuInflater()};
+    inflater.inflate(R.menu.game_menu, menu);
+    return true;
+}
+</pre>
+
+<p>Bạn cũng có thể thêm các mục menu bằng cách sử dụng {@link android.view.Menu#add(int,int,int,int)
+add()} và truy xuất các mục bằng {@link android.view.Menu#findItem findItem()} để xem lại
+tính chất của chúng bằng các API {@link android.view.MenuItem}.</p>
+
+<p>Nếu bạn phát triển ứng dụng của mình cho phiên bản Android 2.3.x và thấp hơn, hệ thống gọi {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} để tạo menu tùy chọn
+khi người dùng mở menu lần đầu tiên. Nếu bạn phát triển cho phiên bản Android 3.0 vào cao hơn, 
+hệ thống sẽ gọi {@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} khi
+bắt đầu hoạt động để hiển thị các mục cho thanh hành động.</p>
+
+
+
+<h3 id="RespondingOptionsMenu">Xử lý sự kiện nhấp</h3>
+
+<p>Khi người dùng chọn một mục từ menu tùy chọn (bao gồm các mục hành động trong thanh hành động),
+hệ thống sẽ gọi phương pháp {@link android.app.Activity#onOptionsItemSelected(MenuItem)
+onOptionsItemSelected()} của hoạt động của bạn. Phương pháp này thông qua {@link android.view.MenuItem} được chọn. Bạn
+có thể nhận biết mục bằng cách gọi {@link android.view.MenuItem#getItemId()}, nó trả về ID duy nhất
+cho mục menu (được định nghĩa bởi thuộc tính {@code android:id} trong tài nguyên menu hoặc bằng một
+số nguyên được cấp cho phương pháp {@link android.view.Menu#add(int,int,int,int) add()}). Bạn có thể khớp
+ID này với các mục menu đã biết để thực hiện hành động phù hợp. Ví dụ:</p>
+
+<pre>
+&#64;Override
+public boolean onOptionsItemSelected(MenuItem item) {
+    // Handle item selection
+    switch (item.getItemId()) {
+        case R.id.new_game:
+            newGame();
+            return true;
+        case R.id.help:
+            showHelp();
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+    }
+}
+</pre>
+
+<p>Khi bạn xử lý thành công một mục menu, trả về {@code true}. Nếu không xử lý được
+mục menu, bạn nên gọi triển khai siêu lớp của {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} (triển khai
+mặc định trả về sai).</p>
+
+<p>Nếu hoạt động của bạn bao gồm các phân đoạn, trước tiên hệ thống sẽ gọi {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} cho hoạt động, rồi mới
+cho từng phân đoạn (theo thứ tự thêm phân đoạn) tới khi trả về
+{@code true} hoặc tất cả phân đoạn đều được gọi.</p>
+
+<p class="note"><strong>Mẹo:</strong> Android 3.0 thêm khả năng cho phép bạn định nghĩa hành vi
+khi nhấp đối với một mục menu trong XML, bằng cách sử dụng thuộc tính {@code android:onClick}. Giá trị cho
+thuộc tính phải là tên của một phương pháp được định nghĩa bởi hoạt động sử dụng menu. Phương pháp
+phải công khai và chấp nhận một tham số {@link android.view.MenuItem} đơn&mdash;khi hệ thống
+gọi phương pháp này, nó thông qua mục menu được chọn. Để biết thêm thông tin và ví dụ, hãy xem tài liệu <a href="{@docRoot}guide/topics/resources/menu-resource.html">Tài nguyên Menu</a>.</p>
+
+<p class="note"><strong>Mẹo:</strong> Nếu ứng dụng của bạn chứa nhiều hoạt động và
+một số chúng cung cấp menu tùy chọn tương tự, hãy xem xét tạo
+ một hoạt động chỉ triển khai các phương pháp {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()} và {@link android.app.Activity#onOptionsItemSelected(MenuItem)
+onOptionsItemSelected()}. Sau đó, mở rộng lớp này đối với mỗi hoạt động cần chia sẻ
+menu tùy chọn tương tự. Bằng cách này, bạn có thể quản lý một bộ mã để xử lý các hành động
+menu và từng lớp hậu duệ kế thừa các hành vi menu.
+Nếu bạn muốn thêm các mục menu vào một trong các hoạt động hậu duệ,
+hãy khống chế {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()} trong hoạt động đó. Gọi {@code super.onCreateOptionsMenu(menu)} sao cho
+các mục menu gốc được tạo, sau đó thêm các mục menu mới bằng {@link
+android.view.Menu#add(int,int,int,int) menu.add()}. Bạn cũng có thể khống chế hành vi
+của siêu lớp đối với các mục menu riêng lẻ.</p>
+
+
+<h3 id="ChangingTheMenu">Thay đổi các mục menu vào thời gian chạy</h3>
+
+<p>Sau khi hệ thống gọi {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()}, nó sẽ giữ lại một thực thể của {@link android.view.Menu} mà bạn đưa vào và
+sẽ không gọi lại {@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}
+trừ khi menu bị vô hiệu hóa vì lý do nào đó. Tuy nhiên, bạn chỉ nên sử dụng {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} để tạo trạng thái menu
+ban đầu chứ không phải để thực hiện thay đổi trong vòng đời của hoạt động.</p>
+
+<p>Nếu bạn muốn sửa đổi menu tùy chọn dựa trên 
+các sự kiện xảy ra trong vòng đời của hoạt động, bạn có thể làm vậy trong phương pháp
+ {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}. Phương pháp
+này chuyển cho bạn đối tượng {@link android.view.Menu} như hiện đang có để bạn có thể sửa đổi nó,
+chẳng hạn như thêm, xóa bỏ, hoặc vô hiệu hóa các mục. (Phân đoạn cũng cung cấp lệnh gọi lại {@link
+android.app.Fragment#onPrepareOptionsMenu onPrepareOptionsMenu()}.)</p>
+
+<p>Trên phiên bản Android 2.3.x và thấp hơn, hệ thống gọi {@link
+android.app.Activity#onPrepareOptionsMenu(Menu)
+onPrepareOptionsMenu()} mỗi lần người dùng mở menu tùy chọn (nhấn nút <em>Menu</em>
+).</p>
+
+<p>Trên phiên bản Android 3.0 trở lên, menu tùy chọn được coi như luôn mở khi các mục menu được
+trình bày trong thanh hành động. Khi một sự kiện xảy ra và bạn muốn thực hiện một cập nhật menu, bạn phải
+gọi {@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()} để yêu cầu
+hệ thống gọi {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}.</p>
+
+<p class="note"><strong>Lưu ý:</strong> 
+Bạn không nên thay đổi các mục trong menu tùy chọn dựa trên {@link android.view.View} đang
+trong tiêu điểm. Khi ở chế độ cảm ứng (khi người dùng không sử dụng bi xoay hay d-pad), các dạng xem
+không thể lấy tiêu điểm, vì thế bạn không nên sử dụng tiêu điểm làm cơ sở để sửa đổi
+các mục trong menu tùy chọn. Nếu bạn muốn cung cấp các mục menu nhạy cảm với ngữ cảnh cho một {@link
+android.view.View}, hãy sử dụng một <a href="#context-menu">Menu Ngữ cảnh</a>.</p>
+
+
+
+
+<h2 id="context-menu">Tạo một Menu Ngữ cảnh</h2>
+
+<div class="figure" style="width:420px;margin-top:-1em">
+  <img src="{@docRoot}images/ui/menu-context.png" alt="" />
+  <p class="img-caption"><strong>Hình 3.</strong> Ảnh chụp màn hình một menu ngữ cảnh nổi (trái)
+và thanh hành động ngữ cảnh (phải).</p>
+</div>
+
+<p>Menu ngữ cảnh sẽ đưa ra các hành động ảnh hưởng tới một mục hoặc khung ngữ cảnh cụ thể trong UI. Bạn
+có thể cung cấp một menu ngữ cảnh cho bất kỳ dạng xem nào, nhưng chúng thường được sử dụng nhiều nhất cho các mục trong một {@link
+android.widget.ListView}, {@link android.widget.GridView}, hoặc các bộ sưu tập dạng xem khác mà
+người dùng có thể thực hiện hành động trực tiếp trên mỗi mục.</p>
+
+<p>Có hai cách để cung cấp các hành động ngữ cảnh:</p>
+<ul>
+  <li>Trong một <a href="#FloatingContextMenu">menu ngữ cảnh nổi</a>. Menu xuất hiện như một
+danh sách nổi gồm nhiều mục menu (tương tự như một hộp thoại) khi người dùng thực hiện nhấp giữ (nhấn và
+giữ) trên một dạng xem có khai báo hỗ trợ menu ngữ cảnh. Người dùng có thể thực hiện hành động
+ngữ cảnh trên một mục vào một thời điểm.</li>
+
+  <li>Trong <a href="#CAB">chế độ hành động theo ngữ cảnh</a>. Chế độ này là một hệ thống triển khai
+{@link android.view.ActionMode} có chức năng hiển thị một <em>thanh hành động ngữ cảnh</em> ở bên trên
+màn hình với các mục hành động ảnh hưởng tới (các) mục được chọn. Khi chế độ này hiện hoạt, người dùng
+có thể thực hiện một hành động trên nhiều mục ngay lập tức (nếu ứng dụng của bạn cho phép).</li>
+</ul>
+
+<p class="note"><strong>Lưu ý:</strong> Chế độ hành động theo ngữ cảnh sẵn có trên phiên bản Android 3.0 (API
+mức 11) và cao hơn và là kỹ thuật được ưu tiên cho việc hiển thị các hành động theo ngữ cảnh khi
+sẵn có. Nếu ứng dụng của bạn hỗ trợ các phiên bản thấp hơn 3.0, vậy bạn nên quay lại menu ngữ cảnh
+nổi trên những thiết bị đó.</p>
+
+
+<h3 id="FloatingContextMenu">Tạo một menu ngữ cảnh nổi</h3>
+
+<p>Để cung cấp một menu ngữ cảnh nổi:</p>
+<ol>
+  <li>Đăng ký {@link android.view.View} mà menu ngữ cảnh nên được liên kết với bằng cách
+gọi {@link android.app.Activity#registerForContextMenu(View) registerForContextMenu()} và chuyển
+cho nó {@link android.view.View}.
+  <p>Nếu hoạt động của bạn sử dụng một {@link android.widget.ListView} hoặc {@link android.widget.GridView} và
+bạn muốn từng mục cung cấp cùng menu ngữ cảnh, hãy đăng ký tất cả mục cho một menu ngữ cảnh bằng cách
+chuyển {@link android.widget.ListView} hoặc {@link android.widget.GridView} cho {@link
+android.app.Activity#registerForContextMenu(View) registerForContextMenu()}.</p>
+</li>
+
+  <li>Triển khai phương pháp {@link
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()}
+trong {@link android.app.Activity} hoặc {@link android.app.Fragment} của bạn.
+  <p>Khi dạng xem được đăng ký nhận được một sự kiện nhấp giữ, hệ thống sẽ gọi phương pháp {@link
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()}
+của bạn. Đây là nơi bạn định nghĩa các mục menu, thường bằng cách bung một tài nguyên menu. Ví
+dụ:</p>
+<pre>
+&#64;Override
+public void onCreateContextMenu(ContextMenu menu, View v,
+                                ContextMenuInfo menuInfo) {
+    super.onCreateContextMenu(menu, v, menuInfo);
+    MenuInflater inflater = getMenuInflater();
+    inflater.inflate(R.menu.context_menu, menu);
+}
+</pre>
+
+<p>{@link android.view.MenuInflater} cho phép bạn bung menu ngữ cảnh từ một <a href="{@docRoot}guide/topics/resources/menu-resource.html">tài nguyên menu</a>. Các tham số của phương pháp gọi lại
+bao gồm {@link android.view.View}
+mà người dùng đã chọn và một đối tượng {@link android.view.ContextMenu.ContextMenuInfo} cung cấp
+thông tin bổ sung về mục được chọn. Nếu hoạt động của bạn có một vài dạng xem mà mỗi dạng cung cấp
+một menu ngữ cảnh khác nhau, bạn có thể sử dụng những tham số này để xác định menu ngữ cảnh nào cần
+bung.</p>
+</li>
+
+<li>Triển khai {@link android.app.Activity#onContextItemSelected(MenuItem)
+onContextItemSelected()}.
+  <p>Khi người dùng chọn một mục menu, hệ thống sẽ gọi phương pháp này để bạn có thể thực hiện
+hành động phù hợp. Ví dụ:</p>
+
+<pre>
+&#64;Override
+public boolean onContextItemSelected(MenuItem item) {
+    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
+    switch (item.getItemId()) {
+        case R.id.edit:
+            editNote(info.id);
+            return true;
+        case R.id.delete:
+            deleteNote(info.id);
+            return true;
+        default:
+            return super.onContextItemSelected(item);
+    }
+}
+</pre>
+
+<p>Phương pháp {@link android.view.MenuItem#getItemId()} sẽ truy vấn ID cho
+mục menu được chọn, bạn nên gán mục này cho từng mục menu trong XML bằng cách sử dụng thuộc tính {@code
+android:id} như trình bày trong phần về <a href="#xml">Định nghĩa một Menu trong
+XML</a>.</p>
+
+<p>Khi bạn xử lý thành công một mục menu, trả về {@code true}. Nếu bạn không xử lý mục menu,
+bạn nên chuyển mục menu đó tới triển khai siêu lớp. Nếu hoạt động của bạn bao gồm nhiều phân đoạn,
+hoạt động sẽ nhận được lệnh gọi lại này trước. Bằng cách gọi siêu lớp khi chưa được xử lý, hệ thống
+sẽ chuyển sự kiện tới phương pháp gọi lại tương ứng trong từng phân đoạn, lần lượt (theo thứ tự
+thêm phân đoạn) tới khi {@code true} hoặc {@code false} được trả về. (Triển khai
+mặc định cho {@link android.app.Activity} và {@code android.app.Fragment} sẽ trả về {@code
+false}, vì thế bạn nên luôn gọi siêu lớp khi chưa được xử lý.)</p>
+</li>
+</ol>
+
+
+<h3 id="CAB">Sử dụng chế độ hành động theo ngữ cảnh</h3>
+
+<p>Chế độ hành động theo ngữ cảnh là một triển khai hệ thống {@link android.view.ActionMode}
+tập trung vào tương tác người dùng hướng tới việc thực hiện các hành động theo ngữ cảnh. Khi một
+người dùng kích hoạt chế độ này bằng cách chọn một mục, một <em>thanh hành động ngữ cảnh</em> sẽ xuất hiện bên trên
+màn hình để trình bày các hành động mà người dùng có thể thực hiện trên (các) mục đang được chọn. Trong khi
+chế độ này được kích hoạt, người dùng có thể chọn nhiều mục (nếu bạn cho phép), bỏ chọn mục, và tiếp tục
+điều hướng trong hoạt động (miễn là bạn sẵn lòng cho phép). Chế độ hành động bị vô hiệu hóa
+và thanh hành động ngữ cảnh biến mất khi người dùng bỏ chọn tất cả các mục, nhấn nút QUAY LẠI,
+hoặc chọn hành động <em>Xong</em> ở phía bên trái của thanh.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Thanh hành động ngữ cảnh không nhất thiết
+phải được liên kết với <a href="{@docRoot}guide/topics/ui/actionbar.html">thanh hành động</a>. Chúng vận hành
+độc lập, mặc dù thanh hành động ngữ cảnh đè lên vị trí của thanh hành động
+về mặt hiển thị.</p>
+
+<p>Nếu bạn đang phát triển cho phiên bản Android 3.0 (API mức 11) hoặc cao hơn, bạn
+nên sử dụng chế độ hành động theo ngữ cảnh để trình bày các hành động ngữ cảnh, thay vì sử dụng <a href="#FloatingContextMenu">menu ngữ cảnh nổi</a>.</p>
+
+<p>Đối với các dạng xem cung cấp hành động ngữ cảnh, bạn nên thường xuyên gọi ra chế độ hành động theo ngữ cảnh
+khi xảy ra một trong hai sự kiện sau (hoặc cả hai):</p>
+<ul>
+  <li>Người dùng thực hiện nhấp giữ trên dạng xem.</li>
+  <li>Người dùng chọn một hộp kiểm hoặc một thành phần UI tương tự trong dạng xem.</li>
+</ul>
+
+<p>Cách ứng dụng của bạn gọi ra chế độ hành động theo ngữ cảnh và định nghĩa hành vi cho từng
+hành động phụ thuộc vào thiết kế của bạn. Cơ bản có hai thiết kế:</p>
+<ul>
+  <li>Đối với các hành động ngữ cảnh trên các dạng xem riêng lẻ, tùy ý.</li>
+  <li>Đối với các hành động ngữ cảnh hàng loạt trên các nhóm mục trong một {@link
+android.widget.ListView} hoặc {@link android.widget.GridView} (cho phép người dùng chọn nhiều
+mục và thực hiện một hành động trên tất cả).</li>
+</ul>
+
+<p>Các phần sau mô tả phần thiết lập cần thiết đối với từng kịch bản.</p>
+
+
+<h4 id="CABforViews">Kích hoạt chế độ hành động theo ngữ cảnh cho các dạng xem riêng lẻ</h4>
+
+<p>Nếu muốn gọi ra chế độ hành động theo ngữ cảnh chỉ khi người dùng chọn các dạng xem
+cụ thể, bạn nên:</p>
+<ol>
+  <li>Triển khai giao diện {@link android.view.ActionMode.Callback}. Trong các phương pháp gọi lại của giao diện, bạn
+có thể quy định các hành động cho thanh hành động ngữ cảnh, hồi đáp các sự kiện nhấp trên mục hành động, và
+xử lý các sự kiện vòng đời khác đối với chế độ hành động.</li>
+  <li>Gọi {@link android.app.Activity#startActionMode startActionMode()} khi bạn muốn hiển thị
+thanh (chẳng hạn như khi người dùng nhấp giữ dạng xem).</li>
+</ol>
+
+<p>Ví dụ:</p>
+
+<ol>
+  <li>Triển khai giao diện {@link android.view.ActionMode.Callback ActionMode.Callback}:
+<pre>
+private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
+
+    // Called when the action mode is created; startActionMode() was called
+    &#64;Override
+    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+        // Inflate a menu resource providing context menu items
+        MenuInflater inflater = mode.getMenuInflater();
+        inflater.inflate(R.menu.context_menu, menu);
+        return true;
+    }
+
+    // Called each time the action mode is shown. Always called after onCreateActionMode, but
+    // may be called multiple times if the mode is invalidated.
+    &#64;Override
+    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+        return false; // Return false if nothing is done
+    }
+
+    // Called when the user selects a contextual menu item
+    &#64;Override
+    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.menu_share:
+                shareCurrentItem();
+                mode.finish(); // Action picked, so close the CAB
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    // Called when the user exits the action mode
+    &#64;Override
+    public void onDestroyActionMode(ActionMode mode) {
+        mActionMode = null;
+    }
+};
+</pre>
+
+<p>Lưu ý rằng những phương pháp gọi lại sự kiện này hầu như giống với các phương pháp gọi lại đối với <a href="#options-menu">menu tùy chọn</a>, khác ở chỗ từng phương pháp cũng chuyển đối tượng {@link
+android.view.ActionMode} được liên kết với sự kiện đó. Bạn có thể sử dụng các API {@link
+android.view.ActionMode} để thực hiện những thay đổi khác nhau với CAB, chẳng hạn như sửa đổi tiêu đề và
+phụ đề bằng {@link android.view.ActionMode#setTitle setTitle()} và {@link
+android.view.ActionMode#setSubtitle setSubtitle()} (hữu ích khi muốn cho biết có bao nhiêu mục
+được chọn).</p>
+
+<p>Cũng lưu ý rằng các bộ mẫu trên sẽ đặt biến {@code mActionMode} là rỗng khi
+chế độ hành động bị hủy. Ở bước tiếp theo, bạn sẽ thấy cách nó được khởi tạo và việc lưu
+biến thành viên trong hoạt động hoặc phân đoạn của bạn có thể hữu ích như thế nào.</p>
+</li>
+
+  <li>Gọi {@link android.app.Activity#startActionMode startActionMode()} để kích hoạt chế độ hành động theo ngữ cảnh
+khi phù hợp, chẳng hạn như để hồi đáp lại một sự kiện nhấp giữ trên một {@link
+android.view.View}:</p>
+
+<pre>
+someView.setOnLongClickListener(new View.OnLongClickListener() {
+    // Called when the user long-clicks on someView
+    public boolean onLongClick(View view) {
+        if (mActionMode != null) {
+            return false;
+        }
+
+        // Start the CAB using the ActionMode.Callback defined above
+        mActionMode = getActivity().startActionMode(mActionModeCallback);
+        view.setSelected(true);
+        return true;
+    }
+});
+</pre>
+
+<p>Khi bạn gọi {@link android.app.Activity#startActionMode startActionMode()}, hệ thống sẽ trả về
+{@link android.view.ActionMode} được tạo. Bằng cách lưu điều này trong một biến thành viên, bạn có thể
+thực hiện thay đổi thanh hành động theo ngữ cảnh để hồi đáp những sự kiện khác. Trong mẫu trên, 
+{@link android.view.ActionMode} được sử dụng để đảm bảo rằng thực thể {@link android.view.ActionMode} không
+được tạo lại nếu nó đã hiện hoạt, bằng cách kiểm tra xem thành viên có rỗng không trước khi khởi động
+chế độ hành động.</p>
+</li>
+</ol>
+
+
+
+<h4 id="CABforListView">Kích hoạt hành động theo ngữ cảnh hàng loạt trong ListView hoặc GridView</h4>
+
+<p>Nếu bạn có một bộ sưu tập các mục trong một {@link android.widget.ListView} hoặc {@link
+android.widget.GridView} (hoặc một phần mở rộng khác của {@link android.widget.AbsListView}) và muốn
+cho phép người dùng thực hiện các hành động hàng loạt, bạn nên:</p>
+
+<ul>
+  <li>Triển khai giao diện {@link android.widget.AbsListView.MultiChoiceModeListener} và đặt nó
+cho nhóm dạng xem bằng {@link android.widget.AbsListView#setMultiChoiceModeListener
+setMultiChoiceModeListener()}. Trong các phương pháp gọi lại của trình nghe, bạn có thể quy định các hành động
+cho thanh hành động theo ngữ cảnh, hồi đáp các sự kiện nhấp trên các mục hành động, và xử lý các phương pháp gọi lại khác
+được kế thừa từ giao diện {@link android.view.ActionMode.Callback}.</li>
+
+  <li>Gọi {@link android.widget.AbsListView#setChoiceMode setChoiceMode()} bằng tham đối {@link
+android.widget.AbsListView#CHOICE_MODE_MULTIPLE_MODAL}.</li>
+</ul>
+
+<p>Ví dụ:</p>
+
+<pre>
+ListView listView = getListView();
+listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
+listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
+
+    &#64;Override
+    public void onItemCheckedStateChanged(ActionMode mode, int position,
+                                          long id, boolean checked) {
+        // Here you can do something when items are selected/de-selected,
+        // such as update the title in the CAB
+    }
+
+    &#64;Override
+    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+        // Respond to clicks on the actions in the CAB
+        switch (item.getItemId()) {
+            case R.id.menu_delete:
+                deleteSelectedItems();
+                mode.finish(); // Action picked, so close the CAB
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    &#64;Override
+    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+        // Inflate the menu for the CAB
+        MenuInflater inflater = mode.getMenuInflater();
+        inflater.inflate(R.menu.context, menu);
+        return true;
+    }
+
+    &#64;Override
+    public void onDestroyActionMode(ActionMode mode) {
+        // Here you can make any necessary updates to the activity when
+        // the CAB is removed. By default, selected items are deselected/unchecked.
+    }
+
+    &#64;Override
+    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+        // Here you can perform updates to the CAB due to
+        // an {@link android.view.ActionMode#invalidate} request
+        return false;
+    }
+});
+</pre>
+
+<p>Vậy là xong. Lúc này, khi người dùng chọn một mục bằng nhấp giữ, hệ thống sẽ gọi phương pháp {@link
+android.widget.AbsListView.MultiChoiceModeListener#onCreateActionMode onCreateActionMode()}
+và hiển thị thanh hành động theo ngữ cảnh với các hành động được quy định. Trong khi thanh hành động theo ngữ cảnh
+hiển thị, người dùng có thể chọn thêm mục.</p>
+
+<p>Trong một số trường hợp mà các hành động ngữ cảnh cung cấp các mục hành động chung, bạn có thể muốn
+thêm một hộp kiểm hoặc một phần tử UI tương tự để cho phép người dùng chọn các mục, vì
+họ có thể không phát hiện được hành vi nhấp giữ. Khi một người dùng chọn hộp kiểm, bạn
+có thể gọi ra chế độ hành động theo ngữ cảnh bằng cách thiết đặt mục danh sách tương ứng về trạng thái
+đã chọn bằng {@link android.widget.AbsListView#setItemChecked setItemChecked()}.</p>
+
+
+
+
+<h2 id="PopupMenu">Tạo một Menu Bật lên</h2>
+
+<div class="figure" style="width:220px">
+<img src="{@docRoot}images/ui/popupmenu.png" alt="" />
+<p><strong>Hình 4.</strong> Menu bật lên trong ứng dụng Gmail, được neo vào nút tràn
+ở trên cùng bên phải.</p>
+</div>
+
+<p>{@link android.widget.PopupMenu} là một menu mô thái được neo vào một {@link android.view.View}.
+Nó xuất hiện bên dưới dạng xem dấu neo nếu có khoảng trống, hoặc bên trên dạng xem nếu không. Nó có ích cho việc:</p>
+<ul>
+  <li>Cung cấp một menu kiểu tràn cho các hành động mà <em>liên quan tới</em> nội dung cụ thể (chẳng hạn như tiêu đề e-mail
+của Gmail như minh họa trong hình 4).
+    <p class="note"><strong>Lưu ý:</strong> Nó không giống như một menu ngữ cảnh, vốn thường
+áp dụng cho các hành động mà <em>ảnh hưởng</em> tới nội dung được chọn. Đối với những hành động ảnh hưởng tới nội dung
+được chọn, hãy sử dụng <a href="#CAB">chế độ hành động theo ngữ cảnh</a> hoặc <a href="#FloatingContextMenu">menu ngữ cảnh nổi</a>.</p></li>
+  <li>Cung cấp một phần thứ hai của câu lệnh (chẳng hạn như một nút được đánh dấu "Thêm"
+có chức năng tạo ra một menu bật lên với các tùy chọn "Thêm" khác nhau).</li>
+  <li>Cung cấp một danh sách thả xuống tương tự như {@link android.widget.Spinner}, nó không giữ lại một
+lựa chọn liên tục.</li>
+</ul>
+
+
+<p class="note"><strong>Lưu ý:</strong> {@link android.widget.PopupMenu} sẵn có với API
+mức 11 trở lên.</p>
+
+<p>Nếu bạn định nghĩa <a href="#xml">menu của mình trong XML</a>, sau đây là cách bạn có thể hiển thị menu bật lên:</p>
+<ol>
+  <li>Khởi tạo một {@link android.widget.PopupMenu} bằng hàm dựng của nó, có chức năng đưa
+ứng dụng hiện tại {@link android.content.Context} và {@link android.view.View} tới menu
+mà sẽ được neo.</li>
+  <li>Sử dụng {@link android.view.MenuInflater} để bung tài nguyên menu của bạn vào đối tượng {@link
+android.view.Menu} được trả về bởi {@link
+android.widget.PopupMenu#getMenu() PopupMenu.getMenu()}. Trên API mức 14 trở lên, bạn có thể sử dụng
+{@link android.widget.PopupMenu#inflate PopupMenu.inflate()} thay thế.</li>
+  <li>Gọi {@link android.widget.PopupMenu#show() PopupMenu.show()}.</li>
+</ol>
+
+<p>Ví dụ, sau đây là một nút với thuộc tính {@link android.R.attr#onClick android:onClick} có chức năng
+hiển thị một menu bật lên:</p>
+
+<pre>
+&lt;ImageButton
+    android:layout_width="wrap_content" 
+    android:layout_height="wrap_content" 
+    android:src="@drawable/ic_overflow_holo_dark"
+    android:contentDescription="@string/descr_overflow_button"
+    android:onClick="showPopup" />
+</pre>
+
+<p>Khi đó, hoạt động có thể hiển thị menu bật lên như sau:</p>
+
+<pre>
+public void showPopup(View v) {
+    PopupMenu popup = new PopupMenu(this, v);
+    MenuInflater inflater = popup.getMenuInflater();
+    inflater.inflate(R.menu.actions, popup.getMenu());
+    popup.show();
+}
+</pre>
+
+<p>Trong API mức 14 trở lên, bạn có thể kết hợp hai dòng có chức năng bung menu bằng {@link
+android.widget.PopupMenu#inflate PopupMenu.inflate()}.</p>
+
+<p>Menu bị bỏ qua khi người dùng chọn một mục hoặc chạm vào bên ngoài vùng
+menu. Bạn có thể lắng nghe báo hiệu sự kiện bỏ bằng cách sử dụng {@link
+android.widget.PopupMenu.OnDismissListener}.</p>
+
+<h3 id="PopupEvents">Xử lý sự kiện nhấp</h3>
+
+<p>Để thực hiện một
+hành động khi người dùng chọn một mục menu, bạn phải triển khai giao diện {@link
+android.widget.PopupMenu.OnMenuItemClickListener} và đăng ký nó với {@link
+android.widget.PopupMenu} của mình bằng cách gọi {@link android.widget.PopupMenu#setOnMenuItemClickListener
+setOnMenuItemclickListener()}. Khi người dùng chọn một mục, hệ thống sẽ gọi lệnh gọi lại {@link
+android.widget.PopupMenu.OnMenuItemClickListener#onMenuItemClick onMenuItemClick()} trong
+giao diện của bạn.</p>
+
+<p>Ví dụ:</p>
+
+<pre>
+public void showMenu(View v) {
+    PopupMenu popup = new PopupMenu(this, v);
+
+    // This activity implements OnMenuItemClickListener
+    popup.setOnMenuItemClickListener(this);
+    popup.inflate(R.menu.actions);
+    popup.show();
+}
+
+&#64;Override
+public boolean onMenuItemClick(MenuItem item) {
+    switch (item.getItemId()) {
+        case R.id.archive:
+            archive(item);
+            return true;
+        case R.id.delete:
+            delete(item);
+            return true;
+        default:
+            return false;
+    }
+}
+</pre>
+
+
+<h2 id="groups">Tạo Nhóm Menu</h2>
+
+<p>Nhóm menu là một tập hợp các mục menu chia sẻ những đặc điểm nhất định. Với một nhóm, bạn có thể
+:</p>
+<ul>
+  <li>Hiển thị hoặc ẩn tất cả các mục bằng {@link android.view.Menu#setGroupVisible(int,boolean)
+setGroupVisible()}</li>
+  <li>Kích hoạt hoặc vô hiệu hóa tất cả các mục bằng {@link android.view.Menu#setGroupEnabled(int,boolean)
+setGroupEnabled()}</li>
+  <li>Quy định xem tất cả các mục có thể chọn hay không bằng {@link
+android.view.Menu#setGroupCheckable(int,boolean,boolean) setGroupCheckable()}</li>
+</ul>
+
+<p>Bạn có thể tạo một nhóm bằng cách lồng các phần tử {@code &lt;item&gt;} bên trong một phần tử {@code &lt;group&gt;}
+vào tài nguyên menu của bạn hoặc bằng cách quy định một ID nhóm bằng phương pháp {@link
+android.view.Menu#add(int,int,int,int) add()}.</p>
+
+<p>Sau đây là một ví dụ về tài nguyên menu bao gồm một nhóm:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/menu_save"
+          android:icon="@drawable/menu_save"
+          android:title="@string/menu_save" /&gt;
+    &lt;!-- menu group --&gt;
+    &lt;group android:id="@+id/group_delete"&gt;
+        &lt;item android:id="@+id/menu_archive"
+              android:title="@string/menu_archive" /&gt;
+        &lt;item android:id="@+id/menu_delete"
+              android:title="@string/menu_delete" /&gt;
+    &lt;/group&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>Các mục nằm trong nhóm xuất hiện ở cùng cấp như mục đầu tiên&mdash;tất cả ba mục
+trong menu đều là các mục đồng cấp. Tuy nhiên, bạn có thể sửa đổi các đặc điểm của hai
+mục trong nhóm bằng cách tham chiếu ID nhóm và sử dụng các phương pháp được liệt kê bên trên. Hệ thống cũng sẽ
+không bao giờ tách riêng các mục đã ghép nhóm. Ví dụ, nếu bạn khai báo {@code
+android:showAsAction="ifRoom"} cho từng mục, chúng sẽ hoặc đều xuất hiện trong thanh hành động
+hoặc đều xuất hiện trong phần tràn hành động.</p>
+
+
+<h3 id="checkable">Sử dụng mục menu có thể chọn</h3>
+
+<div class="figure" style="width:200px">
+  <img src="{@docRoot}images/radio_buttons.png" height="333" alt="" />
+  <p class="img-caption"><strong>Hình 5.</strong> Ảnh chụp màn hình một menu con với các mục
+có thể chọn.</p>
+</div>
+
+<p>Một mục có thể có ích như một giao diện để bật và tắt các tùy chọn, bằng cách sử dụng một hộp kiểm cho
+các tùy chọn độc lập, hoặc nút chọn một cho các nhóm
+tùy chọn loại trừ lẫn nhau. Hình 5 minh họa một menu con với các mục có thể chọn bằng các nút
+ chọn một.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Các mục menu trong Menu Biểu tượng (từ menu tùy chọn) không thể
+hiển thị một hộp kiểm hay nút chọn một. Nếu bạn chọn đặt các mục trong Menu Biểu tượng là có thể chọn,
+bạn phải chỉ định trạng thái được chọn bằng cách tráo đổi biểu tượng và/hoặc văn bản
+mỗi lần trạng thái thay đổi một cách thủ công.</p>
+
+<p>Bạn có thể định nghĩa hành vi có thể chọn cho các mục menu riêng lẻ bằng cách sử dụng thuộc tính {@code
+android:checkable} trong phần tử {@code &lt;item&gt;}, hoặc cho toàn bộ nhóm với
+thuộc tính {@code android:checkableBehavior} trong phần tử {@code &lt;group&gt;}. Ví
+dụ, tất cả các mục trong nhóm menu này có thể chọn bằng một nút chọn một:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;group android:checkableBehavior="single"&gt;
+        &lt;item android:id="@+id/red"
+              android:title="@string/red" /&gt;
+        &lt;item android:id="@+id/blue"
+              android:title="@string/blue" /&gt;
+    &lt;/group&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>Thuộc tính {@code android:checkableBehavior} chấp nhận hoặc:
+<dl>
+  <dt>{@code single}</dt>
+    <dd>Chỉ chọn được một mục từ nhóm (nút chọn một)</dd>
+  <dt>{@code all}</dt>
+    <dd>Có thể chọn được tất cả các mục (hộp kiểm)</dd>
+  <dt>{@code none}</dt>
+    <dd>Không chọn được mục nào</dd>
+</dl>
+
+<p>Bạn có thể áp dụng một trạng thái được chọn mặc định cho một mục bằng cách sử dụng thuộc tính {@code android:checked} trong
+phần tử {@code &lt;item&gt;} và thay đổi nó trong mã bằng phương pháp {@link
+android.view.MenuItem#setChecked(boolean) setChecked()}.</p>
+
+<p>Khi chọn một mục có thể chọn, hệ thống sẽ gọi phương pháp gọi lại mục được chọn tương ứng
+(chẳng hạn như {@link android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}). Chính
+ở đây bạn phải đặt trạng thái của hộp kiểm, vì hộp kiểm hay nút chọn một đều không
+tự động thay đổi trạng thái của nó. Bạn có thể truy vấn trạng thái hiện tại của mục (như trước khi
+người dùng chọn) bằng {@link android.view.MenuItem#isChecked()} và sau đó đặt trạng thái được chọn bằng
+{@link android.view.MenuItem#setChecked(boolean) setChecked()}. Ví dụ:</p>
+
+<pre>
+&#64;Override
+public boolean onOptionsItemSelected(MenuItem item) {
+    switch (item.getItemId()) {
+        case R.id.vibrate:
+        case R.id.dont_vibrate:
+            if (item.isChecked()) item.setChecked(false);
+            else item.setChecked(true);
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+    }
+}
+</pre>
+
+<p>Nếu bạn không đặt trạng thái được chọn bằng cách này, khi đó trạng thái hiển thị của mục (hộp kiểm hoặc
+nút chọn một) sẽ không
+thay đổi khi người dùng chọn nó. Khi bạn đặt trạng thái, hoạt động sẽ giữ nguyên trạng thái được chọn
+của mục đó để khi người dùng mở menu sau, trạng thái được chọn mà bạn đặt
+sẽ được hiển thị.</p>
+
+<p class="note"><strong>Lưu ý:</strong>
+Các mục menu có thể chọn được chỉ định sử dụng trên mỗi phiên và không được lưu sau khi
+ứng dụng bị hủy. Nếu bạn có các cài đặt ứng dụng mà bạn muốn lưu cho người dùng,
+bạn nên lưu trữ dữ liệu bằng cách sử dụng <a href="{@docRoot}guide/topics/data/data-storage.html#pref">Tùy chọn dùng chung</a>.</p>
+
+
+
+<h2 id="intents">Thêm Mục Menu dựa trên Ý định</h2>
+
+<p>Đôi khi bạn sẽ muốn một mục menu khởi chạy một hoạt động bằng cách sử dụng một {@link android.content.Intent}
+(dù đó là một hoạt động trong ứng dụng của bạn hay một ứng dụng khác). Khi bạn biết ý định mà mình
+muốn sử dụng và có một mục menu cụ thể sẽ khởi tạo ý định, bạn có thể thực thi ý định
+bằng {@link android.app.Activity#startActivity(Intent) startActivity()} trong phương pháp gọi lại
+phù hợp theo mục được chọn (chẳng hạn như lệnh gọi lại {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}).</p>
+
+<p>Tuy nhiên, nếu bạn không chắc chắn rằng thiết bị của người dùng
+chứa một ứng dụng xử lý ý định đó thì việc thêm một mục menu gọi nó ra có thể dẫn đến
+mục menu không hoạt động, do ý định có thể không phân giải thành một
+hoạt động. Để giải quyết điều này, Android cho phép bạn linh hoạt thêm các mục menu vào menu của mình
+khi Android tìm các hoạt động trên thiết bị để xử lý ý định của bạn.</p>
+
+<p>Để thêm các mục menu dựa trên các hoạt động sẵn có mà chấp nhận ý định:</p>
+<ol>
+  <li>Định nghĩa một
+ý định bằng thể loại {@link android.content.Intent#CATEGORY_ALTERNATIVE} và/hoặc
+{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE}, cộng với bất kỳ yêu cầu nào khác.</li>
+  <li>Gọi {@link
+android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+Menu.addIntentOptions()}. Sau đó, Android tìm kiếm bất kỳ ứng dụng nào có thể thực hiện ý định
+và thêm chúng vào menu của bạn.</li>
+</ol>
+
+<p>Nếu không có ứng dụng được cài đặt
+mà thỏa mãn ý định thì không có mục menu nào được thêm vào.</p>
+
+<p class="note"><strong>Lưu ý:</strong>
+{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} được sử dụng để xử lý
+phần tử đang được chọn trên màn hình. Vì vậy, nó chỉ nên được sử dụng khi tạo một Menu trong {@link
+android.app.Activity#onCreateContextMenu(ContextMenu,View,ContextMenuInfo)
+onCreateContextMenu()}.</p>
+
+<p>Ví dụ:</p>
+
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu){
+    super.onCreateOptionsMenu(menu);
+
+    // Create an Intent that describes the requirements to fulfill, to be included
+    // in our menu. The offering app must include a category value of Intent.CATEGORY_ALTERNATIVE.
+    Intent intent = new Intent(null, dataUri);
+    intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
+
+    // Search and populate the menu with acceptable offering applications.
+    menu.addIntentOptions(
+         R.id.intent_group,  // Menu group to which new items will be added
+         0,      // Unique item ID (none)
+         0,      // Order for the items (none)
+         this.getComponentName(),   // The current activity name
+         null,   // Specific items to place first (none)
+         intent, // Intent created above that describes our requirements
+         0,      // Additional flags to control items (none)
+         null);  // Array of MenuItems that correlate to specific items (none)
+
+    return true;
+}</pre>
+
+<p>Đối với mỗi hoạt động được tìm thấy mà cung cấp một bộ lọc ý định khớp với ý định được định nghĩa, một mục menu
+được thêm, bằng cách sử dụng giá trị trong <code>android:label</code> của bộ lọc ý định làm
+tiêu đề của mục menu và biểu tượng của ứng dụng làm biểu tượng của mục menu. Phương pháp
+{@link android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+addIntentOptions()} trả về số mục menu được thêm.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Khi bạn gọi {@link
+android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+addIntentOptions()}, nó sẽ khống chế bất kỳ và tất cả các mục menu theo nhóm menu được quy định trong tham đối
+đầu tiên.</p>
+
+
+<h3 id="AllowingToAdd">Cho phép hoạt động của bạn được thêm vào các menu khác</h3>
+
+<p>Bạn cũng có thể cung cấp các dịch vụ của hoạt động của mình cho các ứng dụng khác, vì vậy ứng dụng của bạn
+có thể nằm trong menu của các ứng dụng khác (đảo ngược vai trò nêu trên).</p>
+
+<p>Để được nằm trong menu của ứng dụng khác, bạn cần định nghĩa một bộ lọc
+ý định như bình thường, nhưng đảm bảo thêm các giá trị {@link android.content.Intent#CATEGORY_ALTERNATIVE}
+và/hoặc {@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} cho thể loại
+bộ lọc ý định. Ví dụ:</p>
+<pre>
+&lt;intent-filter label="&#64;string/resize_image">
+    ...
+    &lt;category android:name="android.intent.category.ALTERNATIVE" />
+    &lt;category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
+    ...
+&lt;/intent-filter>
+</pre>
+
+<p>Tìm hiểu thêm về việc ghi các bộ lọc ý định trong tài liệu
+<a href="/guide/components/intents-filters.html">Ý định và Bộ lọc Ý định</a>.</p>
+
+<p>Để tham khảo một ứng dụng mẫu sử dụng kỹ thuật này, hãy xem mã mẫu 
+<a href="{@docRoot}resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html">Note
+Pad</a>.</p>
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/notifiers/notifications.jd b/docs/html-intl/intl/vi/guide/topics/ui/notifiers/notifications.jd
new file mode 100644
index 0000000..5890cb3
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/ui/notifiers/notifications.jd
@@ -0,0 +1,979 @@
+page.title=Thông báo
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>Trong tài liệu này</h2>
+<ol>
+  <li><a href="#Design">Cân nhắc Thiết kế</a></li>
+  <li><a href="#CreateNotification">Tạo một Thông báo</a>
+    <ol>
+      <li><a href="#Required">Nội dung thông báo được yêu cầu</a></li>
+      <li><a href="#Optional">Nội dung và cài đặt thông báo tùy chọn</a></li>
+      <li><a href="#Actions">Hành động thông báo</a></li>
+      <li><a href="#Priority">Mức ưu tiên của thông báo</a></li>
+      <li><a href="#SimpleNotification">Tạo một thông báo đơn giản</a></li>
+      <li><a href="#ApplyStyle">Áp dụng bố trí mở rộng cho một thông báo</a></li>
+      <li><a href="#Compatibility">Xử lý tính tương thích</a></li>
+    </ol>
+  </li>
+  <li><a href="#Managing">Quản lý Thông báo</a>
+    <ol>
+      <li><a href="#Updating">Cập nhật thông báo</a></li>
+      <li><a href="#Removing">Loại bỏ thông báo</a></li>
+    </ol>
+  </li>
+  <li><a href="#NotificationResponse">Giữ lại Điều hướng khi Bắt đầu một Hoạt động</a>
+    <ol>
+      <li><a href="#DirectEntry">Thiết đặt một PendingIntent cho hoạt động thường xuyên</a></li>
+      <li><a href="#ExtendedNotification">Thiết đặt một PendingIntent cho hoạt động đặc biệt</a></li>
+    </ol>
+  </li>
+  <li><a href="#Progress">Hiển thị Tiến độ trong một Thông báo</a>
+    <ol>
+      <li><a href="#FixedProgress">Hiển thị một chỉ báo tiến độ thời lượng cố định</a></li>
+      <li><a href="#ActivityIndicator">Hiển thị một chỉ báo hoạt động liên tục</a></li>
+    </ol>
+  </li>
+  <li><a href="#metadata">Siêu dữ liệu Thông báo</a></li>
+  <li><a href="#Heads-up">Thông báo Cảnh báo</a></li>
+  <li><a href="#lockscreenNotification">Thông báo Màn hình Khóa</a></li>
+    <ol>
+      <li><a href="#visibility">Thiết đặt Khả năng Hiển thị</a></li>
+      <li><a href="#controllingMedia">Điều khiển Phát lại Phương tiện trên Màn hình Khóa</a></li>
+    </ol>
+  <li><a href="#CustomNotification">Bố trí Thông báo Tùy chỉnh</a></li>
+</ol>
+
+    <h2>Lớp khóa</h2>
+    <ol>
+        <li>{@link android.app.NotificationManager}</li>
+        <li>{@link android.support.v4.app.NotificationCompat}</li>
+    </ol>
+    <h2>Video</h2>
+    <ol>
+        <li>
+            <a href="http://www.youtube.com/watch?v=Yc8YrVc47TI&amp;feature=player_detailpage#t=1672s">
+            Thông báo trong 4.1</a>
+        </li>
+    </ol>
+<h2>Xem thêm</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}design/patterns/notifications.html">Thiết kế Android: Thông báo</a>
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    Thông báo là một thông điệp bạn có thể hiển thị với người dùng bên ngoài
+    UI bình thường của ứng dụng của bạn. Khi bạn yêu cầu hệ thống phát hành một thông báo, trước tiên nó xuất hiện như một biểu tượng trong
+    <strong>khu vực thông báo</strong>. Để xem chi tiết thông báo, người dùng mở
+    <strong>ngăn kéo thông báo</strong>. Cả khu vực thông báo và ngăn kéo thông báo đều
+    là các khu vực do hệ thống kiểm soát mà người dùng có thể xem vào bất cứ lúc nào.
+</p>
+<img id="figure1" src="{@docRoot}images/ui/notifications/notification_area.png" height="" alt="" />
+<p class="img-caption">
+    <strong>Hình 1.</strong> Thông báo trong khu vực thông báo.
+</p>
+<img id="figure2" src="{@docRoot}images/ui/notifications/notification_drawer.png" width="280px" alt="" />
+<p class="img-caption">
+    <strong>Hình 2.</strong> Thông báo trong ngăn kéo thông báo.
+</p>
+
+<p class="note"><strong>Lưu ý:</strong> Ngoại trừ phần được lưu ý, hướng dẫn này nhắc đến
+lớp {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder}
+trong phiên bản 4 của <a href="{@docRoot}tools/support-library/index.html">Thư viện Hỗ trợ</a>.
+Lớp {@link android.app.Notification.Builder Notification.Builder} đã được thêm vào trong Android
+3.0 (API mức 11).</p>
+
+<h2 id="Design">Cân nhắc Thiết kế</h2>
+
+<p>Là một phần quan trọng của giao diện người dùng Android, thông báo có các hướng dẫn thiết kế của riêng mình.
+Những thay đổi thiết kế cơ bản được giới thiệu trong Android 5.0 (API mức 21) đặc biệt
+quan trọng và bạn nên xem phần đào tạo về <a href="{@docRoot}training/material/index.html">Thiết kế Material</a>
+để biết thêm thông tin. Để tìm hiểu cách thiết kế thông báo và tương tác của chúng, hãy đọc hướng dẫn thiết kế
+<a href="{@docRoot}design/patterns/notifications.html">Thông báo</a>.</p>
+
+<h2 id="CreateNotification">Tạo một Thông báo</h2>
+
+<p>Bạn quy định thông tin UI và các hành động cho một thông báo trong một đối tượng
+{@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder}.
+Để tạo chính thông báo, bạn gọi
+{@link android.support.v4.app.NotificationCompat.Builder#build NotificationCompat.Builder.build()},
+nó sẽ trả về một đối tượng {@link android.app.Notification} chứa những đặc tả của bạn. Để phát hành
+thông báo, bạn chuyển đối tượng {@link android.app.Notification} tới hệ thống bằng cách gọi
+{@link android.app.NotificationManager#notify NotificationManager.notify()}.</p>
+
+<h3 id="Required">Nội dung thông báo được yêu cầu</h3>
+<p>
+    Một đối tượng {@link android.app.Notification} <em>phải</em> chứa những điều sau:
+</p>
+<ul>
+    <li>
+        Một biểu tượng nhỏ được đặt bởi
+        {@link android.support.v4.app.NotificationCompat.Builder#setSmallIcon setSmallIcon()}
+    </li>
+    <li>
+        Một tiêu đề được đặt bởi
+        {@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()}
+    </li>
+    <li>
+        Văn bản chi tiết được đặt bởi
+        {@link android.support.v4.app.NotificationCompat.Builder#setContentText setContentText()}
+    </li>
+</ul>
+<h3 id="Optional">Nội dung và cài đặt thông báo tùy chọn</h3>
+<p>
+    Tất cả cài đặt và nội dung thông báo khác đều mang tính tùy chọn. Để tìm hiểu thêm về chúng,
+    hãy xem tài liệu tham khảo cho {@link android.support.v4.app.NotificationCompat.Builder}.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Actions">Hành động thông báo</h3>
+<p>
+    Mặc dù chúng mang tính tùy chọn, bạn nên thêm ít nhất một hành động vào thông báo của mình.
+    Một hành động cho phép người dùng đi trực tiếp từ thông báo tới một
+    {@link android.app.Activity} trong ứng dụng của bạn, nơi mà họ có thể xem thêm một hoặc nhiều sự kiện
+    hoặc làm việc thêm.
+</p>
+<p>
+    Một thông báo có thể cung cấp nhiều hành động. Bạn nên luôn định nghĩa hành động mà được
+    kích khởi khi người dùng nhấp vào thông báo; thường thì hành động này mở ra một
+    {@link android.app.Activity} trong ứng dụng của bạn. Bạn cũng có thể thêm các nút vào thông báo
+    để thực hiện những hành động bổ sung chẳng hạn như báo lại báo thức hay hồi đáp ngay lập tức một tin nhắn
+    văn bản; tính năng này sẵn có từ phiên bản Android 4.1. Nếu sử dụng các nút hành động bổ sung, bạn
+    cũng phải cung cấp tính năng của chúng trong một {@link android.app.Activity} trong ứng dụng của bạn; xem
+    phần <a href="#Compatibility">Xử lý tính tương thích</a> để biết thêm chi tiết.
+</p>
+<p>
+    Bên trong một {@link android.app.Notification}, bản thân hành động được định nghĩa bởi một
+    {@link android.app.PendingIntent} chứa một
+    {@link android.content.Intent} có chức năng bắt đầu
+    một {@link android.app.Activity} trong ứng dụng của bạn. Để liên kết
+    {@link android.app.PendingIntent} với một cử chỉ, hãy gọi phương pháp 
+    {@link android.support.v4.app.NotificationCompat.Builder} phù hợp. Ví dụ, nếu bạn muốn bắt đầu
+    {@link android.app.Activity} khi người dùng nhấp vào văn bản thông báo trong
+    ngăn kéo thông báo, bạn hãy thêm {@link android.app.PendingIntent} bằng cách gọi
+    {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent setContentIntent()}.
+</p>
+<p>
+    Bắt đầu một {@link android.app.Activity} khi người dùng nhấp vào thông báo là kịch bản
+    hành động phổ biến nhất. Bạn cũng có thể bắt đầu một {@link android.app.Activity} khi người dùng
+    bỏ một thông báo. Trong phiên bản Android 4.1 và sau đó, bạn có thể bắt đầu một
+    {@link android.app.Activity} từ một nút hành động. Để tìm hiểu thêm, hãy đọc hướng dẫn tham khảo cho
+    {@link android.support.v4.app.NotificationCompat.Builder}.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Priority">Mức ưu tiên của thông báo</h3>
+<p>
+    Nếu muốn, bạn có thể đặt mức ưu tiên của một thông báo. Mức ưu tiên đóng vai trò
+    như một gợi ý cho UI của thiết bị về cách thông báo sẽ được hiển thị.
+    Để đặt mức ưu tiên của một thông báo, hãy gọi {@link
+    android.support.v4.app.NotificationCompat.Builder#setPriority(int)
+    NotificationCompat.Builder.setPriority()} và chuyển trong một trong các hằng số mức ưu tiên {@link
+    android.support.v4.app.NotificationCompat}. Có năm mức ưu tiên,
+    dao động từ {@link
+    android.support.v4.app.NotificationCompat#PRIORITY_MIN} (-2) đến {@link
+    android.support.v4.app.NotificationCompat#PRIORITY_MAX} (2); nếu không được đặt,
+    mức ưu tiên mặc định thành {@link
+    android.support.v4.app.NotificationCompat#PRIORITY_DEFAULT} (0).
+</p>
+<p> Để biết thông tin về việc đặt một mức ưu tiên phù hợp, hãy xem phần "Đặt
+    và quản lý mức ưu tiên của thông báo cho đúng" trong hướng dẫn Thiết kế <a href="{@docRoot}design/patterns/notifications.html">Thông báo</a>
+.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="SimpleNotification">Tạo một thông báo đơn giản</h3>
+<p>
+    Đoạn mã HTML sau minh họa một thông báo đơn giản, trong đó quy định một hoạt động sẽ mở khi
+    người dùng nhấp vào thông báo. Để ý rằng đoạn mã này sẽ tạo một đối tượng
+    {@link android.support.v4.app.TaskStackBuilder} và sử dụng nó để tạo
+    {@link android.app.PendingIntent} cho hành động. Kiểu mẫu này được giải thích chi tiết hơn
+   trong phần <a href="#NotificationResponse">
+    Giữ lại Điều hướng khi Bắt đầu một Hoạt động</a>:
+</p>
+<pre>
+NotificationCompat.Builder mBuilder =
+        new NotificationCompat.Builder(this)
+        .setSmallIcon(R.drawable.notification_icon)
+        .setContentTitle("My notification")
+        .setContentText("Hello World!");
+// Creates an explicit intent for an Activity in your app
+Intent resultIntent = new Intent(this, ResultActivity.class);
+
+// The stack builder object will contain an artificial back stack for the
+// started Activity.
+// This ensures that navigating backward from the Activity leads out of
+// your application to the Home screen.
+TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
+// Adds the back stack for the Intent (but not the Intent itself)
+stackBuilder.addParentStack(ResultActivity.class);
+// Adds the Intent that starts the Activity to the top of the stack
+stackBuilder.addNextIntent(resultIntent);
+PendingIntent resultPendingIntent =
+        stackBuilder.getPendingIntent(
+            0,
+            PendingIntent.FLAG_UPDATE_CURRENT
+        );
+mBuilder.setContentIntent(resultPendingIntent);
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// mId allows you to update the notification later on.
+mNotificationManager.notify(mId, mBuilder.build());
+</pre>
+<p>Vậy là xong. Người dùng của bạn hiện đã được thông báo.</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ApplyStyle">Áp dụng bố trí mở rộng cho một thông báo</h3>
+<p>
+    Để có một thông báo xuất hiện trong một dạng xem mở rộng, trước tiên hãy tạo một đối tượng
+    {@link android.support.v4.app.NotificationCompat.Builder} với các tùy chọn dạng xem thông thường
+    mà bạn muốn. Tiếp theo, hãy gọi {@link android.support.v4.app.NotificationCompat.Builder#setStyle
+    Builder.setStyle()} với một đối tượng bố trí mở rộng làm tham đối.
+</p>
+<p>
+    Ghi nhớ rằng các thông báo mở rộng không sẵn có trên các nền tảng trước Android 4.1. Để
+    tìm hiểu về cách xử lý thông báo đối với nền tảng phiên bản Android 4.1 và trước đó, hãy đọc
+    phần <a href="#Compatibility">Xử lý tính tương thích</a>.
+</p>
+<p>
+    Ví dụ, đoạn mã HTML sau minh họa cách thay đổi thông báo được tạo
+    trong đoạn mã HTML trước để sử dụng bố trí mở rộng:
+</p>
+<pre>
+NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
+    .setSmallIcon(R.drawable.notification_icon)
+    .setContentTitle("Event tracker")
+    .setContentText("Events received")
+NotificationCompat.InboxStyle inboxStyle =
+        new NotificationCompat.InboxStyle();
+String[] events = new String[6];
+// Sets a title for the Inbox in expanded layout
+inboxStyle.setBigContentTitle("Event tracker details:");
+...
+// Moves events into the expanded layout
+for (int i=0; i &lt; events.length; i++) {
+
+    inboxStyle.addLine(events[i]);
+}
+// Moves the expanded layout object into the notification object.
+mBuilder.setStyle(inBoxStyle);
+...
+// Issue the notification here.
+</pre>
+
+<h3 id="Compatibility">Xử lý tính tương thích</h3>
+
+<p>
+    Không phải tất cả tính năng thông báo đều sẵn có đối với một phiên bản cụ thể, mặc dù
+    các phương pháp đặt chúng đều nằm trong lớp thư viện hỗ trợ
+    {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder}.
+    Ví dụ, nút hành động phụ thuộc vào thông báo mở rộng chỉ xuất hiện trên phiên bản Android
+    4.1 trở lên, bởi bản thân thông báo mở rộng chỉ sẵn có trên phiên bản
+    Android 4.1 trở lên.
+</p>
+<p>
+    Để đảm bảo tính tương thích tốt nhất, hãy tạo thông báo bằng
+    {@link android.support.v4.app.NotificationCompat NotificationCompat} và các lớp con của nó,
+    đặc biệt là {@link android.support.v4.app.NotificationCompat.Builder
+    NotificationCompat.Builder}. Bên cạnh đó, hãy tuân theo tiến trình sau khi bạn triển khai một thông báo:
+</p>
+<ol>
+    <li>
+        Cung cấp tất cả tính năng thông báo cho tất cả người dùng, không phụ thuộc vào phiên bản
+        mà họ đang sử dụng. Để làm vậy, hãy xác minh rằng tất cả tính năng đều sẵn có từ một
+        {@link android.app.Activity} trong ứng dụng của bạn. Bạn có thể muốn thêm một
+        {@link android.app.Activity} mới để làm điều này.
+        <p>
+            Ví dụ, nếu bạn muốn sử dụng
+            {@link android.support.v4.app.NotificationCompat.Builder#addAction addAction()} để
+            cung cấp khả năng điều khiển dừng và bắt đầu phát lại phương tiện, trước tiên hãy triển khai khả năng
+            điều khiển này trong một {@link android.app.Activity} trong ứng dụng của bạn.
+        </p>
+    </li>
+    <li>
+        Đảm bảo rằng tất cả người dùng đều có thể tiếp cận với tính năng trong {@link android.app.Activity},
+        bằng cách cho nó khởi động khi người dùng nhấp vào thông báo. Để làm điều này,
+        hãy tạo một {@link android.app.PendingIntent}
+        cho {@link android.app.Activity}. Gọi
+        {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+        setContentIntent()} để thêm {@link android.app.PendingIntent} vào thông báo.
+    </li>
+    <li>
+        Bây giờ, hãy thêm các tính năng thông báo mở rộng mà bạn muốn sử dụng vào thông báo. Ghi nhớ
+        rằng bất kỳ tính năng nào mà bạn thêm cũng phải sẵn có trong {@link android.app.Activity}
+        mà bắt đầu khi người dùng nhấp vào thông báo.
+    </li>
+</ol>
+
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="Managing">Quản lý Thông báo</h2>
+<p>
+    Khi cần phát hành một thông báo nhiều lần cho cùng loại sự kiện, bạn
+    nên tránh tạo một thông báo hoàn toàn mới. Thay vào đó, bạn nên cân nhắc cập nhật
+    một thông báo trước đó, hoặc bằng cách thay đổi một vài giá trị hoặc bằng cách thêm vào nó, hoặc cả hai.
+</p>
+<p>
+    Ví dụ, Gmail thông báo với người dùng rằng e-mail mới đã đến bằng cách tăng số đếm
+    tin nhắn chưa đọc và bằng cách thêm một phần tóm tắt từng e-mail vào thông báo. Đây được gọi là
+    "xếp chồng" thông báo; nó được mô tả chi tiết hơn trong phần hướng dẫn Thiết kế
+    <a href="{@docRoot}design/patterns/notifications.html">Thông báo</a>.
+</p>
+<p class="note">
+    <strong>Lưu ý:</strong> Tính năng Gmail này yêu cầu bố trí mở rộng "hộp thư đến", đó là
+    một phần của tính năng thông báo mở rộng sẵn có bắt đầu từ Android 4.1.
+</p>
+<p>
+    Phần sau mô tả cách cập nhật thông báo và cả cách loại bỏ chúng.
+</p>
+<h3 id="Updating">Cập nhật thông báo</h3>
+<p>
+    Để thiết lập một thông báo để nó có thể được cập nhật, hãy phát hành nó cùng một ID thông báo bằng cách gọi
+    {@link android.app.NotificationManager#notify(int, android.app.Notification) NotificationManager.notify()}.
+    Để cập nhật thông báo sau khi bạn đã phát hành
+    nó, hãy cập nhật hoặc tạo một đối tượng {@link android.support.v4.app.NotificationCompat.Builder},
+    xây dựng một đối tượng {@link android.app.Notification} từ nó, và phát hành
+    {@link android.app.Notification} với cùng ID mà bạn đã sử dụng trước đó. Nếu
+    thông báo trước đó vẫn hiển thị, hệ thống sẽ cập nhật nó từ nội dung của
+    đối tượng {@link android.app.Notification}. Nếu thông báo trước đó đã bị bỏ đi, một
+    thông báo mới sẽ được tạo thay thế.
+</p>
+<p>
+    Đoạn mã HTML sau minh họa một thông báo được cập nhật để phản ánh
+    số sự kiện đã xảy ra. Nó xếp chồng thông báo, hiển thị một tóm tắt:
+</p>
+<pre>
+mNotificationManager =
+        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// Sets an ID for the notification, so it can be updated
+int notifyID = 1;
+mNotifyBuilder = new NotificationCompat.Builder(this)
+    .setContentTitle("New Message")
+    .setContentText("You've received new messages.")
+    .setSmallIcon(R.drawable.ic_notify_status)
+numMessages = 0;
+// Start of a loop that processes data and then notifies the user
+...
+    mNotifyBuilder.setContentText(currentText)
+        .setNumber(++numMessages);
+    // Because the ID remains unchanged, the existing notification is
+    // updated.
+    mNotificationManager.notify(
+            notifyID,
+            mNotifyBuilder.build());
+...
+</pre>
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Removing">Loại bỏ thông báo</h3>
+<p>
+    Thông báo vẫn hiển thị cho tới khi xảy ra một trong những điều sau:
+</p>
+<ul>
+    <li>
+        Người dùng bỏ từng thông báo một hoặc bỏ tất cả bằng cách sử dụng "Xóa Tất cả" (nếu
+        thông báo có thể xóa được).
+    </li>
+    <li>
+        Người dùng nhấp vào thông báo và bạn đã gọi
+        {@link android.support.v4.app.NotificationCompat.Builder#setAutoCancel setAutoCancel()} khi
+        tạo thông báo.
+    </li>
+    <li>
+        Bạn gọi {@link android.app.NotificationManager#cancel(int) cancel()} cho một ID thông báo
+        cụ thể. Phương pháp này cũng xóa các thông báo đang diễn ra.
+    </li>
+    <li>
+        Bạn gọi {@link android.app.NotificationManager#cancelAll() cancelAll()}, nó sẽ xóa
+        tất cả thông báo mà bạn đã phát hành trước đó.
+    </li>
+</ul>
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="NotificationResponse">Giữ lại Điều hướng khi Bắt đầu một Hoạt động</h2>
+<p>
+    Khi bạn bắt đầu một {@link android.app.Activity} từ một thông báo, bạn phải giữ lại trải nghiệm điều hướng kỳ vọng
+    của người dùng. Nhấp vào <i>Quay lại</i> sẽ đưa người dùng quay lại thông qua
+    tiến trình làm việc bình thường của ứng dụng về màn hình Trang chủ, và nhấp vào <i>Gần đây</i> sẽ hiển thị
+    {@link android.app.Activity} như một tác vụ riêng. Để giữ lại trải nghiệm điều hướng, bạn
+    nên bắt đầu {@link android.app.Activity} trong một tác vụ mới. Cách bạn thiết lập
+    {@link android.app.PendingIntent} để cấp cho bạn một tác vụ mới sẽ phụ thuộc vào tính chất của
+    {@link android.app.Activity} mà bạn đang bắt đầu. Có hai tình huống thông thường:
+</p>
+<dl>
+    <dt>
+        Hoạt động thường xuyên
+    </dt>
+    <dd>
+        Bạn đang bắt đầu một {@link android.app.Activity} là một phần của tiến trình công việc
+        bình thường của ứng dụng. Trong tình huống này, hãy thiết lập {@link android.app.PendingIntent} để
+        bắt đầu một tác vụ mới, và cung cấp {@link android.app.PendingIntent} với một ngăn xếp
+        có chức năng tái tạo lại hành vi thông thường <i>Quay lại</i> của ứng dụng.
+        <p>
+            Thông báo từ ứng dụng Gmail thể hiện điều này. Khi bạn nhấp vào một thông báo
+            cho một thư e-mail đơn lẻ, bạn sẽ thấy chính thư đó. Chạm vào <b>Quay lại</b> sẽ đưa bạn
+           ngược lại qua Gmail về màn hình Trang chủ, giống như thể bạn đã vào Gmail từ
+            màn hình Trang chủ chứ không phải vào từ một thông báo.
+        </p>
+        <p>
+            Điều này xảy ra mà không phụ thuộc vào ứng dụng bạn đang ở trong khi chạm vào
+            thông báo. Ví dụ, nếu bạn đang vào Gmail để soạn thư, và bạn nhấp vào một
+            thông báo cho một e-mail đơn lẻ, bạn sẽ đến e-mail đó ngay lập tức. Chạm vào <i>Quay lại</i>
+            sẽ đưa bạn về hộp thư đến rồi tới màn hình Trang chủ, thay vì đưa bạn tới
+            thư mà bạn đang soạn.
+        </p>
+    </dd>
+    <dt>
+        Hoạt động đặc biệt
+    </dt>
+    <dd>
+        Người dùng chỉ thấy {@link android.app.Activity} này nếu nó được bắt đầu từ một thông báo.
+        Nghĩa là, {@link android.app.Activity} mở rộng thông báo bằng cách cung cấp
+        thông tin mà sẽ khó hiển thị trong chính thông báo đó. Đối với tình huống này,
+        hãy thiết lập {@link android.app.PendingIntent} để bắt đầu một tác vụ mới. Tuy nhiên, không cần tạo
+        một ngăn xếp vì {@link android.app.Activity} được bắt đầu không phải là một phần trong
+        tiến trình hoạt động của ứng dụng. Nhấp vào <i>Quay lại</i> sẽ vẫn đưa người dùng đến
+        màn hình Trang chủ.
+    </dd>
+</dl>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="DirectEntry">Thiết đặt một PendingIntent cho hoạt động thường xuyên</h3>
+<p>
+    Để thiết lập {@link android.app.PendingIntent} để bắt đầu một mục nhập trực tiếp
+    {@link android.app.Activity}, hãy làm theo những bước sau:
+</p>
+<ol>
+    <li>
+        Định nghĩa phân cấp {@link android.app.Activity} của ứng dụng của bạn trong bản kê khai.
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                Thêm hỗ trợ cho phiên bản Android 4.0.3 và trước đó. Để làm điều này, hãy quy định mẹ của
+                {@link android.app.Activity} mà bạn đang bắt đầu bằng cách thêm phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
+                làm con của
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>.
+                <p>
+                    Đối với phần tử này, hãy đặt
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a>="android.support.PARENT_ACTIVITY"</code>.
+                    Đặt
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#val">android:value</a>="&lt;parent_activity_name&gt;"</code>
+                    trong đó <code>&lt;parent_activity_name&gt;</code> là giá trị của
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a></code>
+                    đối với phần tử
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+                    mẹ. Xem ví dụ trong XML sau.
+                </p>
+            </li>
+            <li>
+                Cũng thêm hỗ trợ cho phiên bản Android 4.1 và sau đó. Để làm điều này, hãy thêm thuộc tính 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#parent">android:parentActivityName</a></code>
+                vào phần tử 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+                của {@link android.app.Activity} mà bạn đang bắt đầu.
+            </li>
+        </ol>
+        <p>
+            XML cuối cùng sẽ trông như sau:
+        </p>
+<pre>
+&lt;activity
+    android:name=".MainActivity"
+    android:label="&#64;string/app_name" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+&lt;activity
+    android:name=".ResultActivity"
+    android:parentActivityName=".MainActivity"&gt;
+    &lt;meta-data
+        android:name="android.support.PARENT_ACTIVITY"
+        android:value=".MainActivity"/&gt;
+&lt;/activity&gt;
+</pre>
+    </li>
+    <li>
+        Tạo một ngăn xếp dựa trên {@link android.content.Intent} mà bắt đầu
+        {@link android.app.Activity}:
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                Tạo {@link android.content.Intent} để bắt đầu {@link android.app.Activity}.
+            </li>
+            <li>
+                Tạo một bộ dựng chồng bằng cách gọi {@link android.app.TaskStackBuilder#create
+                TaskStackBuilder.create()}.
+            </li>
+            <li>
+                Thêm ngăn xếp vào bộ dựng ngăn xếp bằng cách gọi
+                {@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}.
+                Đối với mỗi {@link android.app.Activity} trong phân cấp mà bạn đã định nghĩa trong
+                bản kê khai, ngăn xếp chứa một đối tượng {@link android.content.Intent} mà
+                sẽ khởi động {@link android.app.Activity}. Phương pháp này cũng thêm cờ có chức năng bắt đầu
+                chồng trong một tác vụ mới.
+                <p class="note">
+                    <strong>Lưu ý:</strong> Mặc dù tham đối đến
+                    {@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}
+                    là một tham chiếu tới {@link android.app.Activity} được bắt đầu, phương pháp gọi
+                    không thêm {@link android.content.Intent} có chức năng bắt đầu
+                    {@link android.app.Activity}. Thay vào đó, nó được xử lý ở bước tiếp theo.
+                </p>
+            </li>
+            <li>
+                Thêm {@link android.content.Intent} có chức năng bắt đầu {@link android.app.Activity}
+                từ thông báo bằng cách gọi
+                {@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()}.
+                Chuyển {@link android.content.Intent} mà bạn đã tạo ở bước đầu tiên làm
+                tham đối tới
+                {@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()}.
+            </li>
+            <li>
+                Nếu bạn cần, hãy thêm các tham đối tới các đối tượng {@link android.content.Intent} trên chồng
+                bằng cách gọi {@link android.support.v4.app.TaskStackBuilder#editIntentAt
+                TaskStackBuilder.editIntentAt()}. Đôi khi cần phải đảm bảo rằng
+                {@link android.app.Activity} mục tiêu sẽ hiển thị dữ liệu có ý nghĩa khi người dùng điều hướng
+               tới nó bằng cách sử dụng <i>Quay lại</i>.
+            </li>
+            <li>
+                Nhận một {@link android.app.PendingIntent} cho ngăn xếp này bằng cách gọi
+                {@link android.support.v4.app.TaskStackBuilder#getPendingIntent getPendingIntent()}.
+                Sau đó, bạn có thể sử dụng {@link android.app.PendingIntent} này làm tham đối tới
+                {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+                setContentIntent()}.
+            </li>
+        </ol>
+     </li>
+</ol>
+<p>
+    Đoạn mã HTML sau minh họa tiến trình:
+</p>
+<pre>
+...
+Intent resultIntent = new Intent(this, ResultActivity.class);
+TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
+// Adds the back stack
+stackBuilder.addParentStack(ResultActivity.class);
+// Adds the Intent to the top of the stack
+stackBuilder.addNextIntent(resultIntent);
+// Gets a PendingIntent containing the entire back stack
+PendingIntent resultPendingIntent =
+        stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
+...
+NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+builder.setContentIntent(resultPendingIntent);
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+mNotificationManager.notify(id, builder.build());
+</pre>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ExtendedNotification">Thiết đặt một PendingIntent cho hoạt động đặc biệt</h3>
+<p>
+    Phần sau mô tả cách thiết lập một
+    {@link android.app.PendingIntent} cho hoạt động đặc biệt.
+</p>
+<p>
+    Một {@link android.app.Activity} đặc biệt không cần ngăn xếp, vì thế bạn không phải
+    định nghĩa phân cấp {@link android.app.Activity} của nó trong bản kê khai, và bạn không phải
+    gọi
+    {@link android.support.v4.app.TaskStackBuilder#addParentStack  addParentStack()} để xây dựng một
+    ngăn xếp. Thay vào đó, hãy sử dụng bản kê khai để thiết lập các tùy chọn tác vụ {@link android.app.Activity},
+    và tạo {@link android.app.PendingIntent} bằng cách gọi
+    {@link android.app.PendingIntent#getActivity getActivity()}:
+</p>
+<ol>
+    <li>
+        Trong bản kê khai của mình, hãy thêm các thuộc tính sau vào phần tử
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+        cho {@link android.app.Activity}
+        <dl>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#nm">android:name</a>="<i>activityclass</i>"</code>
+            </dt>
+            <dd>
+                Tên lớp được xác định đầy đủ của hoạt động.
+            </dd>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">android:taskAffinity</a>=""</code>
+            </dt>
+            <dd>
+                Kết hợp với cờ
+                {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK}
+                mà bạn đặt trong mã, điều này đảm bảo rằng {@link android.app.Activity} này không
+                đi đến tác vụ mặc định của ứng dụng. Bất kỳ tác vụ hiện tại nào mà có
+                bố trí mặc định của ứng dụng đều không bị ảnh hưởng.
+            </dd>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">android:excludeFromRecents</a>="true"</code>
+            </dt>
+            <dd>
+                Loại bỏ tác vụ mới khỏi <i>Gần đây</i>, sao cho người dùng không thể vô tình
+                điều hướng quay lại nó.
+            </dd>
+        </dl>
+        <p>
+            Đoạn mã HTML này thể hiện phần tử:
+        </p>
+<pre>
+&lt;activity
+    android:name=".ResultActivity"
+...
+    android:launchMode="singleTask"
+    android:taskAffinity=""
+    android:excludeFromRecents="true"&gt;
+&lt;/activity&gt;
+...
+</pre>
+    </li>
+    <li>
+        Xây dựng và phát hành thông báo:
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                Tạo một {@link android.content.Intent} có chức năng bắt đầu
+                {@link android.app.Activity}.
+            </li>
+            <li>
+                Đặt {@link android.app.Activity} để bắt đầu trong một tác vụ mới, trống bằng cách gọi
+                {@link android.content.Intent#setFlags setFlags()} với các cờ
+                {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK}
+                và
+                {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TASK FLAG_ACTIVITY_CLEAR_TASK}.
+            </li>
+            <li>
+                Đặt bất kỳ tùy chọn nào khác mà bạn cần cho {@link android.content.Intent}.
+            </li>
+            <li>
+                Tạo một {@link android.app.PendingIntent} từ {@link android.content.Intent}
+                bằng cách gọi {@link android.app.PendingIntent#getActivity getActivity()}.
+                Sau đó, bạn có thể sử dụng {@link android.app.PendingIntent} này làm tham đối tới
+                {@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+                setContentIntent()}.
+            </li>
+        </ol>
+    <p>
+        Đoạn mã HTML sau minh họa tiến trình:
+    </p>
+<pre>
+// Instantiate a Builder object.
+NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+// Creates an Intent for the Activity
+Intent notifyIntent =
+        new Intent(this, ResultActivity.class);
+// Sets the Activity to start in a new, empty task
+notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+                        | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+// Creates the PendingIntent
+PendingIntent notifyPendingIntent =
+        PendingIntent.getActivity(
+        this,
+        0,
+        notifyIntent,
+        PendingIntent.FLAG_UPDATE_CURRENT
+);
+
+// Puts the PendingIntent into the notification builder
+builder.setContentIntent(notifyPendingIntent);
+// Notifications are issued by sending them to the
+// NotificationManager system service.
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// Builds an anonymous Notification object from the builder, and
+// passes it to the NotificationManager
+mNotificationManager.notify(id, builder.build());
+</pre>
+    </li>
+</ol>
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="Progress">Hiển thị Tiến độ trong một Thông báo</h2>
+<p>
+    Thông báo có thể bao gồm một chỉ báo tiến độ dạng hoạt ảnh để cho người dùng thấy trạng thái
+    của một thao tác đang diễn ra. Nếu bạn có thể ước lượng thao tác mất bao lâu và nó được
+    được hoàn thành bao nhiêu vào bất cứ lúc nào, hãy sử dụng hình thức "xác định" của chỉ báo
+    (thanh tiến độ). Nếu bạn không thể ước lượng thời lượng của thao tác, hãy sử dụng hình thức
+    "không xác định" của chỉ báo (chỉ báo hoạt động).
+</p>
+<p>
+    Chỉ báo tiến độ được hiển thị bằng triển khai lớp
+    {@link android.widget.ProgressBar} của nền tảng.
+</p>
+<p>
+    Để sử dụng chỉ báo tiến độ trên các nền tảng bắt đầu từ Android 4.0, hãy gọi
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}. Đối
+    với các phiên bản trước đây, bạn phải tạo bố trí thông báo tùy chỉnh của chính mình
+    trong đó chứa một dạng xem {@link android.widget.ProgressBar}.
+</p>
+<p>
+    Phần sau đây mô tả cách hiển thị tiến độ trong một thông báo bằng cách sử dụng
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="FixedProgress">Hiển thị một chỉ báo tiến độ thời lượng cố định</h3>
+<p>
+    Để hiển thị một thanh tiến độ xác định, hãy thêm thanh vào thông báo của bạn bằng cách gọi
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress
+    setProgress(max, progress, false)} rồi phát hành thông báo. Khi thông báo của bạn tiến hành,
+    tăng dần<code>progress</code>, và cập nhật thông báo. Khi kết thúc thao tác,
+    <code>progress</code> sẽ bằng <code>max</code>. Một cách thông thường để gọi
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}
+    đó là đặt <code>max</code> thành 100 rồi tăng dần <code>progress</code> dưới dạng giá trị
+    "phần trăm hoàn thành" cho thao tác.
+</p>
+<p>
+    Bạn có thể hoặc để thanh tiến độ hiển thị khi nào thì thao tác hoàn thành, hoặc loại bỏ nó. Dù
+    trong trường hợp nào hãy nhớ cập nhật văn bản thông báo để hiển thị thao tác hoàn tất.
+    Để loại bỏ thanh tiến độ, hãy gọi
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress
+    setProgress(0, 0, false)}. Ví dụ:
+</p>
+<pre>
+...
+mNotifyManager =
+        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+mBuilder = new NotificationCompat.Builder(this);
+mBuilder.setContentTitle("Picture Download")
+    .setContentText("Download in progress")
+    .setSmallIcon(R.drawable.ic_notification);
+// Start a lengthy operation in a background thread
+new Thread(
+    new Runnable() {
+        &#64;Override
+        public void run() {
+            int incr;
+            // Do the "lengthy" operation 20 times
+            for (incr = 0; incr &lt;= 100; incr+=5) {
+                    // Sets the progress indicator to a max value, the
+                    // current completion percentage, and "determinate"
+                    // state
+                    mBuilder.setProgress(100, incr, false);
+                    // Displays the progress bar for the first time.
+                    mNotifyManager.notify(0, mBuilder.build());
+                        // Sleeps the thread, simulating an operation
+                        // that takes time
+                        try {
+                            // Sleep for 5 seconds
+                            Thread.sleep(5*1000);
+                        } catch (InterruptedException e) {
+                            Log.d(TAG, "sleep failure");
+                        }
+            }
+            // When the loop is finished, updates the notification
+            mBuilder.setContentText("Download complete")
+            // Removes the progress bar
+                    .setProgress(0,0,false);
+            mNotifyManager.notify(ID, mBuilder.build());
+        }
+    }
+// Starts the thread by calling the run() method in its Runnable
+).start();
+</pre>
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ActivityIndicator">Hiển thị một chỉ báo hoạt động liên tục</h3>
+<p>
+    Để hiển thị một chỉ báo hoạt động không xác định, hãy thêm nó vào thông báo của bạn bằng
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, true)}
+    (hai tham đối đầu tiên bị bỏ qua), và phát hành thông báo. Kết quả là một chỉ báo
+    mà có cùng kiểu như một thanh tiến độ, khác ở chỗ hoạt ảnh của nó đang diễn ra.
+</p>
+<p>
+    Phát hành thông báo khi bắt đầu thao tác. Hoạt ảnh sẽ chạy tới khi bạn
+    sửa đổi thông báo của mình. Khi thao tác hoàn thành, hãy gọi
+    {@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, false)}
+    và rồi cập nhật thông báo để loại bỏ chỉ báo hoạt động.
+    Luôn làm điều này; nếu không, hoạt ảnh sẽ chạy ngay cả khi thao tác đã hoàn thành. Đồng thời
+   hãy nhớ thay đổi văn bản thông báo để biểu thị thao tác hoàn tất.
+</p>
+<p>
+    Để xem chỉ báo hoạt động vận hành như thế nào, hãy tham khảo đoạn mã HTML trước. Định vị các dòng sau:
+</p>
+<pre>
+// Sets the progress indicator to a max value, the current completion
+// percentage, and "determinate" state
+mBuilder.setProgress(100, incr, false);
+// Issues the notification
+mNotifyManager.notify(0, mBuilder.build());
+</pre>
+<p>
+    Thay thế các dòng bạn đã tìm thấy bằng các dòng sau:
+</p>
+<pre>
+ // Sets an activity indicator for an operation of indeterminate length
+mBuilder.setProgress(0, 0, true);
+// Issues the notification
+mNotifyManager.notify(0, mBuilder.build());
+</pre>
+
+<h2 id="metadata">Siêu dữ liệu Thông báo</h2>
+
+<p>Thông báo có thể được sắp xếp theo siêu dữ liệu mà bạn gán cho bằng các
+phương pháp {@link android.support.v4.app.NotificationCompat.Builder} sau:</p>
+
+<ul>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#setCategory(java.lang.String) setCategory()}
+    thông báo hệ thống cách xử lý thông báo ứng dụng của bạn khi thiết bị đang trong chế độ Ưu tiên
+    (ví dụ, nếu thông báo của bạn biểu diễn một cuộc gọi đến, tin nhắn tức thời hoặc báo thức).</li>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#setPriority(int) setPriority()} khiến
+    thông báo với trường mức ưu tiên được đặt thành {@code PRIORITY_MAX} hoặc {@code PRIORITY_HIGH} xuất hiện
+    trong một cửa sổ nổi nhỏ nếu thông báo cũng có âm thanh hoặc rung.</li>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#addPerson(java.lang.String) addPerson()}
+    cho phép bạn thêm một danh sách người vào thông báo. Ứng dụng của bạn có thể sử dụng tín hiệu này cho
+    hệ thống mà nó sẽ nhóm cùng với thông báo từ những người được quy định, hoặc xếp hạng thông báo
+    từ những người này là quan trọng hơn.</li>
+</ul>
+
+<div class="figure" style="width:230px">
+  <img src="{@docRoot}images/ui/notifications/heads-up.png" alt="" width="" height="" id="figure3" />
+  <p class="img-caption">
+    <strong>Hình 3.</strong> Hoạt động toàn màn hình thể hiện một thông báo cảnh báo
+  </p>
+</div>
+
+<h2 id="Heads-up">Thông báo Cảnh báo</h2>
+
+<p>Với Android 5.0 (API mức 21), thông báo có thể xuất hiện trong một cửa sổ nổi nhỏ
+(còn gọi là <em>thông báo cảnh báo</em>) khi thiết bị hiện hoạt
+(tức là thiết bị được mở khóa và màn hình của nó đang bật). Những thông báo
+này có vẻ tương tự như dạng rút gọn thông báo của bạn, chỉ khác là
+thông báo cảnh báo cũng hiển thị các nút hành động. Người dùng có thể hành động trên đó, hoặc bỏ,
+một thông báo cảnh báo mà không phải rời khỏi ứng dụng hiện tại.</p>
+
+<p>Các ví dụ về điều kiện có thể kích khởi thông báo cảnh báo bao gồm:</p>
+
+<ul>
+  <li>Hoạt động của người dùng đang trong chế độ toàn màn hình (ứng dụng sử dụng
+{@link android.app.Notification#fullScreenIntent}), hoặc</li>
+  <li>Thông báo có mức ưu tiên cao và sử dụng nhạc chuông hoặc
+    rung</li>
+</ul>
+
+<h2 id="lockscreenNotification">Thông báo Màn hình Khóa</h2>
+
+<p>Với việc phát hành Android 5.0 (API mức 21), giờ đây thông báo có thể xuất hiện trên màn hình
+khóa. Ứng dụng của bạn có thể sử dụng tính năng này để cung cấp các chức năng điều khiển phát lại phương tiện và các hành động
+thông dụng khác. Người dùng có thể chọn thông qua Cài đặt để xem có hiển thị thông báo trên màn hình khóa không, và
+bạn có thể chỉ định xem thông báo từ ứng dụng của mình có hiển thị trên màn hình khóa không.</p>
+
+<h3 id="visibility">Thiết đặt Khả năng Hiển thị</h3>
+
+<p>Ứng dụng của bạn có thể điều khiển mức chi tiết có thể nhìn thấy được trong thông báo được hiển thị trên một
+màn hình khóa bảo mật. Bạn gọi {@link android.support.v4.app.NotificationCompat.Builder#setVisibility(int) setVisibility()}
+và quy định một trong những giá trị sau:</p>
+
+<ul>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC} hiển thị đầy đủ nội dung của
+    thông báo.</li>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_SECRET} không hiển thị bất kỳ phần nào của
+    thông báo này trên màn hình khóa.</li>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE} hiển thị thông tin cơ bản,
+    chẳng hạn như biểu tượng và tiêu đề nội dung của thông báo, nhưng ẩn nội dung đầy đủ của thông báo.</li>
+</ul>
+
+<p>Khi {@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE} được đặt, bạn cũng có thể
+cung cấp một phiên bản thay thế cho nội dung thông báo, trong đó ẩn một số chi tiết nhất định. Ví dụ,
+một ứng dụng SMS có thể hiển thị một thông báo hiển thị <em>Bạn có 3 tin nhắn văn bản mới</em>, nhưng ẩn
+nội dung của tin nhắn và người gửi. Để cung cấp thông báo thay thế này, trước tiên hãy tạo thông báo
+thay thế bằng cách sử dụng {@link android.support.v4.app.NotificationCompat.Builder}. Khi bạn tạo
+đối tượng thông báo riêng tư, hãy đính kèm thông báo thay thế cho nó thông qua phương pháp
+{@link android.support.v4.app.NotificationCompat.Builder#setPublicVersion(android.app.Notification) setPublicVersion()}
+.</p>
+
+<h3 id="controllingMedia">Điều khiển Phát lại Phương tiện trên Màn hình Khóa</h3>
+
+<p>Trong Android 5.0 (API mức 21) màn hình khóa không còn hiển thị điều khiển phương tiện
+dựa trên {@link android.media.RemoteControlClient}, điều mà nay đã bị bỏ đi. Thay vào đó, hãy sử dụng mẫu
+{@link android.app.Notification.MediaStyle} với phương pháp
+{@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
+, có chức năng chuyển hành động thành các biểu tượng có thể nhấp.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Mẫu và phương pháp {@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
+không nằm trong thư viện hỗ trợ, vì thế những tính năng này chỉ chạy trong phiên bản Android 5.0 trở lên
+.</p>
+
+<p>Để hiển thị điều khiển phát lại phương tiện trên màn hình khóa trong Android 5.0, hãy đặt mức độ nhìn thấy
+thành {@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}, như mô tả bên trên. Sau đó thêm
+các hành động và đặt mẫu {@link android.app.Notification.MediaStyle}, như được mô tả trong
+đoạn mã mẫu sau:</p>
+
+<pre>
+Notification notification = new Notification.Builder(context)
+    // Show controls on lock screen even when user hides sensitive content.
+    .setVisibility(Notification.VISIBILITY_PUBLIC)
+    .setSmallIcon(R.drawable.ic_stat_player)
+    // Add media control buttons that invoke intents in your media service
+    .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0
+    .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent)  // #1
+    .addAction(R.drawable.ic_next, "Next", nextPendingIntent)     // #2
+    // Apply the media style template
+    .setStyle(new Notification.MediaStyle()
+    .setShowActionsInCompactView(1 /* #1: pause button */)
+    .setMediaSession(mMediaSession.getSessionToken())
+    .setContentTitle("Wonderful music")
+    .setContentText("My Awesome Band")
+    .setLargeIcon(albumArtBitmap)
+    .build();
+</pre>
+
+<p class="note"><strong>Lưu ý:</strong> Việc rút bỏ {@link android.media.RemoteControlClient}
+còn có nhiều ý nghĩa khác đối với việc điều khiển phương tiện. Xem phần
+<a href="{@docRoot}about/versions/android-5.0.html#MediaPlaybackControl">Điều khiển Phát lại Phương tiện</a>
+để biết thêm thông tin về các API mới đối với quản lý phiên phương tiện và điều khiển phát lại này.</p>
+
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="CustomNotification">Bố trí Thông báo Tùy chỉnh</h2>
+<p>
+    Khuôn khổ thông báo cho phép bạn định nghĩa một bố trí thông báo tùy chỉnh, nó
+    định nghĩa hình thức của thông báo trong một đối tượng {@link android.widget.RemoteViews}.
+    Thông báo có bố trí tùy chỉnh tương tự như thông báo thường, nhưng chúng được dựa trên
+    {@link android.widget.RemoteViews} được định nghĩa trong một tệp bố trí XML.
+</p>
+<p>
+    Chiều cao sẵn có cho bố trí thông báo tùy chỉnh phụ thuộc vào dạng xem thông báo. Bố trí dạng xem bình thường
+    được giới hạn ở 64 dp, và bố trí dạng xem mở rộng được giới hạn ở 256 dp.
+</p>
+<p>
+    Để định nghĩa một bố trí thông báo tùy chỉnh, hãy bắt đầu bằng việc khởi tạo đối tượng
+    {@link android.widget.RemoteViews} để bung một tệp bố trí XML. Sau đó,
+    thay vì gọi các phương pháp như
+    {@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()},
+    hãy gọi {@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()}. Để đặt
+    chi tiết nội dung trong thông báo tùy chỉnh, hãy sử dụng các phương pháp
+    {@link android.widget.RemoteViews} để đặt giá trị của các tập con của dạng xem:
+</p>
+<ol>
+    <li>
+        Tạo một bố trí XML cho thông báo trong một tệp riêng. Bạn có thể sử dụng bất kỳ tên tệp nào
+        mà bạn muốn, nhưng phải sử dụng phần mở rộng <code>.xml</code>
+    </li>
+    <li>
+        Trong ứng dụng của bạn, hãy sử dụng các phương pháp {@link android.widget.RemoteViews} để định nghĩa các biểu tượng và văn bản
+        của thông báo của bạn. Đặt đối tượng {@link android.widget.RemoteViews} này vào
+        {@link android.support.v4.app.NotificationCompat.Builder} của bạn bằng cách gọi
+        {@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()}. Tránh
+        đặt một {@link android.graphics.drawable.Drawable} nền trên đối tượng
+        {@link android.widget.RemoteViews} của bạn, vì màu văn bản của bạn có thể không đọc được.
+    </li>
+</ol>
+<p>
+    Lớp {@link android.widget.RemoteViews} cũng bao gồm các phương pháp mà bạn có thể sử dụng để dễ dạng
+    thêm một {@link android.widget.Chronometer} hoặc {@link android.widget.ProgressBar}
+    vào bố trí thông báo của bạn. Để biết thêm thông tin về việc tạo bố trí tùy chỉnh cho thông báo
+    của mình, hãy tham khảo tài liệu tham khảo {@link android.widget.RemoteViews}.
+</p>
+<p class="caution">
+    <strong>Chú ý:</strong> Khi bạn sử dụng một bố trí thông báo tùy chỉnh, hãy đặc biệt cẩn thận
+    để đảm bảo rằng bố trí tùy chỉnh của bạn có tác dụng với các hướng và độ phân giải thiết bị khác nhau. Trong khi
+    lời khuyên này áp dụng cho tất cả bố trí Dạng xem, nó đặc biệt quan trọng đối với thông báo
+    vì khoảng trống trong ngăn kéo thông báo rất hạn chế. Không được tạo bố trí tùy chỉnh của bạn quá
+    phức tạp và đảm bảo kiểm tra nó trong các cấu hình khác nhau.
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h4>Sử dụng các tài nguyên kiểu cho văn bản thông báo tùy chỉnh</h4>
+<p>
+    Luôn sử dụng tài nguyên kiểu cho văn bản của một thông báo tùy chỉnh. Màu nền của thông báo
+    có thể thay đổi giữa các thiết bị và phiên bản khác nhau, và việc sử dụng tài nguyên kiểu
+    sẽ giúp bạn khắc phục điều này. Bắt đầu từ Android 2.3, hệ thống đã định nghĩa kiểu cho
+    văn bản bố trí thông báo chuẩn. Nếu bạn sử dụng cùng kiểu trong các ứng dụng nhắm đến phiên bản Android
+    2.3 hoặc cao hơn, bạn sẽ phải đảm bảo rằng văn bản của bạn nhìn thấy được trên nền hiển thị.
+</p>
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/overview.jd b/docs/html-intl/intl/vi/guide/topics/ui/overview.jd
new file mode 100644
index 0000000..7bd4552
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/ui/overview.jd
@@ -0,0 +1,71 @@
+page.title=Tổng quan về UI
+@jd:body
+
+
+<p>Tất cả phần tử giao diện người dùng trong một ứng dụng Android đều được xây dựng bằng cách sử dụng các đối tượng {@link android.view.View} và
+{@link android.view.ViewGroup}. {@link android.view.View} là một đối tượng có chức năng vẽ
+thứ gì đó trên màn hình mà người dùng có thể tương tác với. {@link android.view.ViewGroup} là một đối tượng
+có chức năng giữ các đối tượng {@link android.view.View} (và {@link android.view.ViewGroup}) khác
+để định nghĩa bố trí của giao diện.</p>
+
+<p>Android cung cấp một bộ sưu tập cả lớp con {@link android.view.View} và {@link
+android.view.ViewGroup} cung cấp cho bạn các cách điều khiển nhập liệu thông dụng (chẳng hạn như nút và
+trường văn bản) và các mô hình bố trí khác nhau (chẳng hạn như bố trí tuyến tính hoặc tương đối).</p>
+
+
+<h2 id="Layout">Bố trí Giao diện Người dùng</h2>
+
+<p>Giao diện người dùng của từng thành phần trong ứng dụng của bạn được định nghĩa bằng cách sử dụng một phân cấp của các đối tượng {@link
+android.view.View} và {@link android.view.ViewGroup} như minh họa trong hình 1. Mỗi nhóm dạng xem
+là một bộ chứa vô hình có chức năng tổ chức các dạng xem con, trong khi dạng xem con có thể là
+điều khiển nhập liệu hoặc các widget khác để
+vẽ một phần nào đó của UI. Cây phân cấp này có thể đơn giản hoặc phức tạp như nhu cầu
+của bạn (nhưng đơn giản sẽ tốt cho hiệu năng).</p>
+
+<img src="{@docRoot}images/viewgroup.png" alt="" />
+<p class="img-caption"><strong>Hình 1.</strong> Minh họa một phân cấp dạng xem có chức năng định nghĩa một
+bố trí UI.</p>
+
+<p>Để khai báo bố trí của mình, bạn có thể khởi tạo các đối tượng {@link android.view.View} trong mã và bắt đầu
+xây dựng một cây, nhưng cách dễ nhất và hiệu quả nhất để định nghĩa bố trí của bạn đó là bằng một tệp XML.
+XML cung cấp một cấu trúc mà người dùng có thể đọc được cho bố trí, tương tự như HTML.</p>
+
+<p>Tên của phần tử XML đối với một dạng xem tương ứng với lớp Android mà nó biểu diễn. Vì thế một phần tử
+<code>&lt;TextView&gt;</code> tạo ra một widget {@link android.widget.TextView} trong UI của bạn,
+và một phần tử <code>&lt;LinearLayout&gt;</code> tạo ra một nhóm dạng xem {@link android.widget.LinearLayout}
+. </p>
+
+<p>Ví dụ, một bố trí thẳng đứng đơn giản với dạng xem văn bản và nút trông như sau:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="fill_parent" 
+              android:layout_height="fill_parent"
+              android:orientation="vertical" >
+    &lt;TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="I am a TextView" />
+    &lt;Button android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="I am a Button" />
+&lt;/LinearLayout>
+</pre>
+
+<p>Khi bạn tải một tài nguyên bố trí trong ứng dụng của mình, Android khởi tạo từng nút của bố trí vào một
+đối tượng thời gian chạy mà bạn có thể sử dụng để định nghĩa các hành vi bổ sung, truy vấn trạng thái của đối tượng hoặc sửa đổi
+bố trí.</p>
+
+<p>Để xem hướng dẫn đầy đủ về tạo bố trí UI, hãy xem phần <a href="declaring-layout.html">Bố trí
+XML</a>.
+
+  
+<h2 id="UIComponents">Thành phần Giao diện Người dùng</h2>
+
+<p>Bạn không phải xây dựng tất cả UI của mình bằng cách sử dụng các đối tượng {@link android.view.View} và {@link
+android.view.ViewGroup}. Android cung cấp một vài thành phần ứng dụng đưa ra một
+bố trí UI chuẩn mà bạn chỉ cần định nghĩa nội dung cho nó. Mỗi thành phần UI như vậy
+đều có một bộ API duy nhất được mô tả trong các tài liệu tương ứng, chẳng hạn như <a href="{@docRoot}guide/topics/ui/actionbar.html">Thanh Hành động</a>, <a href="{@docRoot}guide/topics/ui/dialogs.html">Hộp thoại</a> và <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Thông báo Trạng thái</a>.</p>
+
+
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/settings.jd b/docs/html-intl/intl/vi/guide/topics/ui/settings.jd
new file mode 100644
index 0000000..8e19b97
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/ui/settings.jd
@@ -0,0 +1,1202 @@
+page.title=Thiết đặt
+page.tags=preference,preferenceactivity,preferencefragment
+
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Trong tài liệu này</h2>
+<ol>
+  <li><a href="#Overview">Tổng quan</a>
+    <ol>
+      <li><a href="#SettingTypes">Tùy chọn</a></li>
+    </ol>
+  </li>
+  <li><a href="#DefiningPrefs">Định nghĩa Tùy chọn trong XML</a>
+    <ol>
+      <li><a href="#Groups">Tạo nhóm thiết đặt</a></li>
+      <li><a href="#Intents">Sử dụng ý định</a></li>
+    </ol>
+  </li>
+  <li><a href="#Activity">Tạo một Hoạt động Tùy chọn</a></li>
+  <li><a href="#Fragment">Sử dụng Phân đoạn Tùy chọn</a></li>
+  <li><a href="#Defaults">Thiết đặt Giá trị Mặc định</a></li>
+  <li><a href="#PreferenceHeaders">Sử dụng Tiêu đề Tùy chọn</a>
+    <ol>
+      <li><a href="#CreateHeaders">Tạo tệp tiêu đề</a></li>
+      <li><a href="#DisplayHeaders">Hiển thị tiêu đề</a></li>
+      <li><a href="#BackCompatHeaders">Hỗ trợ các phiên bản cũ hơn với tiêu đề tùy chọn</a></li>
+    </ol>
+  </li>
+  <li><a href="#ReadingPrefs">Đọc Tùy chọn</a>
+    <ol>
+      <li><a href="#Listening">Theo dõi thay đổi tùy chọn</a></li>
+    </ol>
+  </li>
+  <li><a href="#NetworkUsage">Quản lý Sử dụng Mạng</a></li>
+  <li><a href="#Custom">Xây dựng một Thiết đặt Tùy chỉnh</a>
+    <ol>
+      <li><a href="#CustomSelected">Quy định một giao diện người dùng</a></li>
+      <li><a href="#CustomSave">Lưu giá trị của thiết đặt</a></li>
+      <li><a href="#CustomInitialize">Khởi tạo giá trị hiện tại</a></li>
+      <li><a href="#CustomDefault">Cung cấp một giá trị mặc định</a></li>
+      <li><a href="#CustomSaveState">Lưu và khôi phục trạng thái của Tùy chọn</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>Lớp khóa</h2>
+<ol>
+  <li>{@link android.preference.Preference}</li>
+  <li>{@link android.preference.PreferenceActivity}</li>
+  <li>{@link android.preference.PreferenceFragment}</li>
+</ol>
+
+
+<h2>Xem thêm</h2>
+<ol>
+  <li><a href="{@docRoot}design/patterns/settings.html">Hướng dẫn thiết kế Thiết đặt</a></li>
+</ol>
+</div>
+</div>
+
+
+
+
+<p>Ứng dụng thường bao gồm những thiết đặt cho phép người dùng sửa đổi các tính năng và hành vi của ứng dụng. Ví
+dụ, một số ứng dụng cho phép người dùng quy định xem thông báo có được kích hoạt hay không hoặc quy định tần suất
+ứng dụng sẽ đồng bộ dữ liệu với đám mây.</p>
+
+<p>Nếu muốn cung cấp thiết đặt cho ứng dụng của mình, bạn nên sử dụng
+các API {@link android.preference.Preference} của Android để xây dựng một giao diện phù hợp với
+trải nghiệm người dùng trong các ứng dụng Android khác (bao gồm thiết đặt hệ thống). Tài liệu này mô tả
+cách xây dựng thiết đặt ứng dụng của bạn bằng cách sử dụng các API {@link android.preference.Preference}.</p>
+
+<div class="note design">
+<p><strong>Thiết kế Thiết đặt</strong></p>
+  <p>Để biết thông tin về cách thiết kế thiết đặt của bạn, hãy đọc hướng dẫn thiết kế <a href="{@docRoot}design/patterns/settings.html">Thiết đặt</a>.</p>
+</div>
+
+
+<img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
+<p class="img-caption"><strong>Hình 1.</strong> Ảnh chụp màn hình từ thiết đặt của ứng dụng
+Messaging trên Android. Chọn một mục được định nghĩa bởi một {@link android.preference.Preference} 
+sẽ mở ra một giao diện để thay đổi thiết đặt.</p>
+
+
+
+
+<h2 id="Overview">Tổng quan</h2>
+
+<p>Thay vì sử dụng các đối tượng {@link android.view.View} để xây dựng giao diện người dùng, thiết đặt được
+xây dựng bằng cách sử dụng các lớp con khác nhau của lớp {@link android.preference.Preference} mà bạn
+khai báo trong một tệp XML.</p>
+
+<p>Đối tượng {@link android.preference.Preference} là một khối dựng cho một thiết đặt
+đơn lẻ. Mỗi {@link android.preference.Preference} xuất hiện như một mục trong một danh sách và cung cấp
+UI phù hợp để người dùng sửa đổi thiết đặt. Ví dụ, một {@link
+android.preference.CheckBoxPreference} tạo một mục danh sách hiển thị một hộp kiểm, và một {@link
+android.preference.ListPreference} tạo một mục mở ra một hộp thoại với danh sách lựa chọn.</p>
+
+<p>Mỗi {@link android.preference.Preference} mà bạn thêm có một cặp khóa-giá trị tương ứng mà
+hệ thống sử dụng để lưu thiết đặt trong một tệp {@link android.content.SharedPreferences}
+mặc định cho thiết đặt của ứng dụng của bạn. Khi người dùng thay đổi một thiết đặt, hệ thống sẽ cập nhật giá trị
+tương ứng trong tệp {@link android.content.SharedPreferences} cho bạn. Lần duy nhất mà bạn nên
+trực tiếp tương tác với tệp {@link android.content.SharedPreferences} được liên kết đó là khi bạn
+cần đọc giá trị để xác định xem hành vi ứng dụng của mình có được dựa trên thiết đặt của người dùng không.</p>
+
+<p>Giá trị được lưu trong {@link android.content.SharedPreferences} cho từng thiết đặt có thể là một trong các kiểu dữ liệu
+sau:</p>
+
+<ul>
+  <li>Boolean</li>
+  <li>Float</li>
+  <li>Int</li>
+  <li>Long</li>
+  <li>String</li>
+  <li>String {@link java.util.Set}</li>
+</ul>
+
+<p>Vì thiết đặt của ứng dụng của bạn được xây dựng bằng cách sử dụng các đối tượng {@link android.preference.Preference}
+thay vì đối tượng
+{@link android.view.View}, bạn nên sử dụng một lớp con {@link android.app.Activity} hoặc 
+{@link android.app.Fragment} chuyên dụng để hiển thị thiết đặt danh sách:</p>
+
+<ul>
+  <li>Nếu ứng dụng của bạn hỗ trợ các phiên bản Android cũ hơn 3.0 (API mức 10 và thấp hơn), bạn phải
+xây dựng hoạt động như một phần mở rộng của lớp {@link android.preference.PreferenceActivity}.</li>
+  <li>Trên phiên bản Android 3.0 trở lên, thay vào đó, bạn nên sử dụng một {@link android.app.Activity}
+truyền thống nơi lưu giữ {@link android.preference.PreferenceFragment} để hiển thị thiết đặt ứng dụng của bạn.
+Tuy nhiên, bạn cũng có thể sử dụng {@link android.preference.PreferenceActivity} để tạo một bố trí hai bảng
+cho màn hình lớn khi bạn có nhiều nhóm thiết đặt.</li>
+</ul>
+
+<p>Cách thiết đặt {@link android.preference.PreferenceActivity} của bạn và các thực thể của {@link
+android.preference.PreferenceFragment} được trình bày trong các phần về <a href="#Activity">Tạo một Hoạt động Tùy chọn</a> và <a href="#Fragment">Sử dụng
+Phân đoạn Tùy chọn</a>.</p>
+
+
+<h3 id="SettingTypes">Tùy chọn</h3>
+
+<p>Mọi thiết đặt cho ứng dụng của bạn đều được biểu diễn bởi một lớp con cụ thể của lớp {@link
+android.preference.Preference}. Mỗi lớp con lại bao gồm một tập hợp các tính chất cốt lõi cho phép bạn
+quy định những thứ như tiêu đề cho thiết đặt và giá trị mặc định. Mỗi lớp con cũng cung cấp
+các tính chất và giao diện người dùng chuyên dụng của chính nó. Ví dụ, hình 1 mình họa một ảnh chụp màn hình từ thiết đặt của ứng dụng
+Messaging. Mỗi mục danh sách trong màn hình thiết đặt được hỗ trợ bởi một đối tượng {@link
+android.preference.Preference} khác nhau.</p>
+
+<p>Sau đây là một số tùy chọn phổ biến nhất:</p>
+
+<dl>
+  <dt>{@link android.preference.CheckBoxPreference}</dt>
+  <dd>Hiển thị một mục kèm một hộp kiểm cho thiết đặt hoặc được kích hoạt hoặc bị vô hiệu hóa. Giá trị
+được lưu là một boolean (<code>true</code> nếu nó được chọn).</dd>
+
+  <dt>{@link android.preference.ListPreference}</dt>
+  <dd>Mở một hộp thoại kèm danh sách nút chọn một. Giá trị được lưu
+có thể là bất kỳ loại giá trị được hỗ trợ nào (liệt kê bên trên).</dd>
+
+  <dt>{@link android.preference.EditTextPreference}</dt>
+  <dd>Mở một hộp thoại kèm một widget {@link android.widget.EditText}. Giá trị được lưu là một {@link
+java.lang.String}.</dd>
+</dl>
+
+<p>Xem lớp {@link android.preference.Preference} để biết danh sách tất cả các lớp con khác và tính chất
+tương ứng của chúng.</p>
+
+<p>Dĩ nhiên, các lớp tích hợp không đáp ứng mọi nhu cầu và ứng dụng của bạn có thể yêu cầu
+lớp con chuyên dụng hơn. Ví dụ, nền tảng này hiện chưa cung cấp một lớp {@link
+android.preference.Preference} cho việc chọn một số hay ngày. Vì thế, bạn có thể cần phải định nghĩa
+lớp con {@link android.preference.Preference} của chính mình. Để được trợ giúp khi làm vậy, hãy xem phần về <a href="#Custom">Xây dựng Thiết đặt Tùy chỉnh</a>.</p>
+
+
+
+<h2 id="DefiningPrefs">Định nghĩa Tùy chọn trong XML</h2>
+
+<p>Mặc dù bạn có thể khởi tạo các đối tượng {@link android.preference.Preference} mới vào thời gian chạy, bạn
+nên định nghĩa danh sách các thiết đặt của mình trong XML kèm một phân cấp của các đối tượng {@link android.preference.Preference}
+. Việc sử dụng một tệp XML để định nghĩa bộ sưu tập thiết đặt của bạn sẽ được ưu tiên vì tệp
+cung cấp một cấu trúc dễ đọc, cập nhật đơn giản. Bên cạnh đó, các thiết đặt ứng dụng của bạn thường được
+xác định trước, mặc dù bạn vẫn có thể sửa đổi bộ sưu tập vào thời gian chạy.</p>
+
+<p>Mỗi lớp con {@link android.preference.Preference} có thể được khai báo bằng một phần tử XML mà
+khớp với tên lớp đó, chẳng hạn như {@code &lt;CheckBoxPreference&gt;}.</p>
+
+<p>Bạn phải lưu tệp XML trong thư mục {@code res/xml/}. Mặc dù bạn có thể đặt tên tệp là
+bất cứ thứ gì mình muốn, nó thường được đặt tên là{@code preferences.xml}. Bạn thường chỉ cần một tệp,
+bởi các nhánh trong phân cấp (mà mở danh sách thiết đặt của riêng chúng) sẽ được khai báo bằng cách sử dụng các thực thể
+lồng nhau của {@link android.preference.PreferenceScreen}.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Nếu bạn muốn tạo một bố trí đa bảng cho thiết đặt
+của mình, vậy bạn nên tách riêng các tệp XML cho từng phân đoạn.</p>
+
+<p>Node gốc cho tệp XML phải là một phần tử {@link android.preference.PreferenceScreen
+&lt;PreferenceScreen&gt;}. Trong phần tử này là nơi bạn thêm từng {@link
+android.preference.Preference}. Từng phần tử con mà bạn thêm vào trong phần tử
+{@link android.preference.PreferenceScreen &lt;PreferenceScreen&gt;} sẽ xuất hiện như một mục
+đơn lẻ trong danh sách thiết đặt.</p>
+
+<p>Ví dụ:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;CheckBoxPreference
+        android:key="pref_sync"
+        android:title="@string/pref_sync"
+        android:summary="@string/pref_sync_summ"
+        android:defaultValue="true" />
+    &lt;ListPreference
+        android:dependency="pref_sync"
+        android:key="pref_syncConnectionType"
+        android:title="@string/pref_syncConnectionType"
+        android:dialogTitle="@string/pref_syncConnectionType"
+        android:entries="@array/pref_syncConnectionTypes_entries"
+        android:entryValues="@array/pref_syncConnectionTypes_values"
+        android:defaultValue="@string/pref_syncConnectionTypes_default" />
+&lt;/PreferenceScreen>
+</pre>
+
+<p>Trong ví dụ này, có một {@link android.preference.CheckBoxPreference} và một {@link
+android.preference.ListPreference}. Cả hai mục đều bao gồm ba thuộc tính sau:</p>
+
+<dl>
+  <dt>{@code android:key}</dt>
+  <dd>Thuộc tính này được yêu cầu cho các tùy chọn duy trì một giá trị dữ liệu. Nó quy định khóa
+(xâu) duy nhất mà hệ thống sử dụng khi lưu giá trị của thiết đặt này trong {@link
+android.content.SharedPreferences}. 
+  <p>Các thực thể duy nhất mà thuộc tính này không <em>được yêu cầu</em> là khi tùy chọn là một
+{@link android.preference.PreferenceCategory} hoặc {@link android.preference.PreferenceScreen}, hoặc
+tùy chọn quy định một {@link android.content.Intent} để gọi ra (bằng phần tử <a href="#Intents">{@code &lt;intent&gt;}</a>) hoặc {@link android.app.Fragment} để hiển thị (bằng thuộc tính <a href="{@docRoot}reference/android/preference/Preference.html#attr_android:fragment">{@code
+android:fragment}</a>).</p>
+  </dd>
+  <dt>{@code android:title}</dt>
+  <dd>Thuộc tính này cung cấp một tên hiển thị với người dùng cho thiết đặt.</dd>
+  <dt>{@code android:defaultValue}</dt>
+  <dd>Nó quy định giá trị ban đầu mà hệ thống nên đặt trong tệp {@link
+android.content.SharedPreferences}. Bạn nên cung cấp một giá trị mặc định cho tất cả
+thiết đặt.</dd>
+</dl>
+
+<p>Để biết thông tin về tất cả thuộc tính được hỗ trợ khác, hãy xem tài liệu {@link
+android.preference.Preference} (và lớp con tương ứng).</p>
+
+
+<div class="figure" style="width:300px">
+  <img src="{@docRoot}images/ui/settings/settings-titles.png" alt="" />
+  <p class="img-caption"><strong>Hình 2.</strong> Thiết đặt thể loại
+    có tiêu đề. <br/><b>1.</b> Thể loại được quy định bởi phần tử {@link
+android.preference.PreferenceCategory &lt;PreferenceCategory&gt;}. <br/><b>2.</b> Tiêu đề
+được quy định bằng thuộc tính {@code android:title}.</p>
+</div>
+
+
+<p>Khi danh sách thiết đặt của bạn vượt quá khoảng 10 mục, bạn có thể muốn thêm tiêu đề để
+định nghĩa các nhóm thiết đặt hoặc hiển thị các nhóm đó trong một
+màn hình riêng. Những tùy chọn này được mô tả trong các phần sau.</p>
+
+
+<h3 id="Groups">Tạo nhóm thiết đặt</h3>
+
+<p>Nếu bạn trình bày một danh sách từ 10 thiết đặt trở lên, người dùng
+có thể gặp khó khăn trong việc dò tìm, hiểu và xử lý chúng. Bạn có thể khắc phục điều này bằng cách
+chia một số hoặc tất cả thiết đặt thành các nhóm, qua đó biến một danh sách dài thành nhiều
+danh sách ngắn hơn. Một nhóm các thiết đặt có liên quan có thể được trình bày bằng một trong hai cách:</p>
+
+<ul>
+  <li><a href="#Titles">Sử dụng tiêu đề</a></li>
+  <li><a href="#Subscreens">Sử dụng màn hình con</a></li>
+</ul>
+
+<p>Bạn có thể sử dụng một hoặc cả hai kỹ thuật tạo nhóm này để sắp xếp các thiết đặt cho ứng dụng của mình. Khi
+quyết định sử dụng cái nào và làm thế nào để chia các thiết đặt của mình, bạn nên tuân theo các hướng dẫn trong tài liệu hướng dẫn
+<a href="{@docRoot}design/patterns/settings.html">Thiết đặt</a> của Thiết kế Android.</p>
+
+
+<h4 id="Titles">Sử dụng tiêu đề</h4>
+
+<p>Nếu bạn muốn cung cấp các thanh chia có tiêu đề giữa các nhóm thiết đặt (như minh họa trong hình 2),
+hãy đặt từng nhóm đối tượng {@link android.preference.Preference} vào bên trong một {@link
+android.preference.PreferenceCategory}.</p>
+
+<p>Ví dụ:</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;PreferenceCategory 
+        android:title="&#64;string/pref_sms_storage_title"
+        android:key="pref_key_storage_settings">
+        &lt;CheckBoxPreference
+            android:key="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_auto_delete"
+            android:title="&#64;string/pref_title_auto_delete"
+            android:defaultValue="false"... />
+        &lt;Preference 
+            android:key="pref_key_sms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_sms_delete"... />
+        &lt;Preference 
+            android:key="pref_key_mms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_mms_delete" ... />
+    &lt;/PreferenceCategory>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h4 id="Subscreens">Sử dụng màn hình con</h4>
+
+<p>Nếu bạn muốn đặt các nhóm thiết đặt vào một màn hình con (như minh họa trong hình 3), hãy đặt nhóm
+các đối tượng {@link android.preference.Preference} vào bên trong một {@link
+android.preference.PreferenceScreen}.</p>
+
+<img src="{@docRoot}images/ui/settings/settings-subscreen.png" alt="" />
+<p class="img-caption"><strong>Hình 3.</strong> Màn hình con thiết đặt. Phần tử {@code
+&lt;PreferenceScreen&gt;} sẽ tạo
+một mục mà, khi được chọn, nó sẽ mở ra một danh sách riêng để hiển thị các thiết đặt lồng nhau.</p>
+
+<p>Ví dụ:</p>
+
+<pre>
+&lt;PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;!-- opens a subscreen of settings -->
+    &lt;PreferenceScreen
+        android:key="button_voicemail_category_key"
+        android:title="&#64;string/voicemail"
+        android:persistent="false">
+        &lt;ListPreference
+            android:key="button_voicemail_provider_key"
+            android:title="&#64;string/voicemail_provider" ... />
+        &lt;!-- opens another nested subscreen -->
+        &lt;PreferenceScreen
+            android:key="button_voicemail_setting_key"
+            android:title="&#64;string/voicemail_settings"
+            android:persistent="false">
+            ...
+        &lt;/PreferenceScreen>
+        &lt;RingtonePreference
+            android:key="button_voicemail_ringtone_key"
+            android:title="&#64;string/voicemail_ringtone_title"
+            android:ringtoneType="notification" ... />
+        ...
+    &lt;/PreferenceScreen>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h3 id="Intents">Sử dụng ý định</h3>
+
+<p>Trong một số trường hợp, bạn có thể muốn một mục tùy chọn mở một hoạt động khác thay vì một
+màn hình thiết đặt, chẳng hạn như một trình duyệt web để xem một trang web. Để gọi ra một {@link
+android.content.Intent} khi người dùng chọn một mục tùy chọn, hãy thêm một phần tử {@code &lt;intent&gt;}
+làm con của phần tử {@code &lt;Preference&gt;} tương ứng.</p>
+
+<p>Ví dụ, sau đây là cách bạn có thể sử dụng một mục tùy chọn để mở một trang web:</p>
+
+<pre>
+&lt;Preference android:title="@string/prefs_web_page" >
+    &lt;intent android:action="android.intent.action.VIEW"
+            android:data="http://www.example.com" />
+&lt;/Preference>
+</pre>
+
+<p>Bạn có thể tạo cả ý định biểu thị và không biểu thị bằng cách sử dụng các thuộc tính sau:</p>
+
+<dl>
+  <dt>{@code android:action}</dt>
+    <dd>Hành động cần gán, theo mỗi phương pháp {@link android.content.Intent#setAction setAction()}
+.</dd>
+  <dt>{@code android:data}</dt>
+    <dd>Dữ liệu cần gán, theo mỗi phương pháp {@link android.content.Intent#setData setData()}.</dd>
+  <dt>{@code android:mimeType}</dt>
+    <dd>Kiểu MIME cần gán, theo mỗi phương pháp {@link android.content.Intent#setType setType()}
+.</dd>
+  <dt>{@code android:targetClass}</dt>
+    <dd>Phần lớp của tên thành phần, theo mỗi phương pháp {@link android.content.Intent#setComponent
+setComponent()}.</dd>
+  <dt>{@code android:targetPackage}</dt>
+    <dd>Phần gói của tên thành phần, theo mỗi phương pháp {@link
+android.content.Intent#setComponent setComponent()}.</dd>
+</dl>
+
+
+
+<h2 id="Activity">Tạo một Hoạt động Tùy chọn</h2>
+
+<p>Để hiển thị thiết đặt của bạn trong một hoạt động, hãy mở rộng lớp {@link
+android.preference.PreferenceActivity}. Đây là phần mở rộng của lớp {@link
+android.app.Activity} truyền thống mà hiển thị một danh sách các thiết đặt dựa trên một phân cấp của các đối tượng {@link
+android.preference.Preference}. {@link android.preference.PreferenceActivity}
+sẽ tự động duy trì các thiết đặt liên kết với từng {@link
+android.preference.Preference} khi người dùng thực hiện một thay đổi.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Nếu bạn đang phát triển ứng dụng của mình cho phiên bản Android 3.0 và
+cao hơn, thay vào đó bạn nên sử dụng {@link android.preference.PreferenceFragment}. Đi đến phần
+tiếp theo về <a href="#Fragment">Sử dụng Phân đoạn Tùy chọn</a>.</p>
+
+<p>Điều quan trọng nhất cần nhớ đó là bạn không được tải một bố trí dạng xem trong khi gọi lại {@link
+android.preference.PreferenceActivity#onCreate onCreate()}. Thay vào đó, bạn hãy gọi {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} để
+thêm tùy chọn mà bạn đã khai báo trong một tệp XML vào hoạt động. Ví dụ, sau đây là đoạn mã tối thiểu
+cần thiết cho một {@link android.preference.PreferenceActivity} chức năng:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.preferences);
+    }
+}
+</pre>
+
+<p>Đây là đoạn mã vừa đủ cho một số ứng dụng bởi ngay khi người dùng sửa đổi một tùy chọn,
+hệ thống sẽ lưu thay đổi đối với tệp {@link android.content.SharedPreferences} mặc định mà các
+thành phần ứng dụng khác của bạn có thể đọc khi bạn cần kiểm tra thiết đặt của người dùng. Tuy nhiên,
+nhiều ứng dụng lại yêu cầu thêm mã để theo dõi những thay đổi xảy ra với các tùy chọn đó.
+Để biết thông tin về việc theo dõi thay đổi trong tệp {@link android.content.SharedPreferences},
+hãy xem phần về <a href="#ReadingPrefs">Đọc Tùy chọn</a>.</p>
+
+
+
+
+<h2 id="Fragment">Sử dụng Phân đoạn Tùy chọn</h2>
+
+<p>Nếu bạn đang phát triển cho phiên bản Android 3.0 (API mức 11) trở lên, bạn nên sử dụng một {@link
+android.preference.PreferenceFragment} để hiển thị danh sách các đối tượng {@link android.preference.Preference}
+của bạn. Bạn có thể thêm một {@link android.preference.PreferenceFragment} vào bất kỳ hoạt động nào&mdash;bạn không cần
+sử dụng {@link android.preference.PreferenceActivity}.</p>
+
+<p><a href="{@docRoot}guide/components/fragments.html">Phân đoạn</a> cung cấp một kiến trúc
+linh hoạt hơn cho ứng dụng của bạn, so với việc sử dụng chỉ các hoạt động, dù loại hoạt động
+mà bạn đang xây dựng là gì. Như vậy, chúng tôi gợi ý bạn sử dụng {@link
+android.preference.PreferenceFragment} để kiểm soát hiển thị các thiết đặt của mình thay cho {@link
+android.preference.PreferenceActivity} khi có thể.</p>
+
+<p>Việc triển khai {@link android.preference.PreferenceFragment} có thể chỉ đơn giản như
+định nghĩa phương pháp {@link android.preference.PreferenceFragment#onCreate onCreate()} để tải một
+tệp tùy chọn bằng {@link android.preference.PreferenceFragment#addPreferencesFromResource
+addPreferencesFromResource()}. Ví dụ:</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Load the preferences from an XML resource
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+}
+</pre>
+
+<p>Khi đó, bạn có thể thêm phân đoạn này vào một {@link android.app.Activity} giống như cách mà bạn sẽ làm với bất kỳ
+{@link android.app.Fragment} nào khác. Ví dụ:</p>
+
+<pre>
+public class SettingsActivity extends Activity {
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Display the fragment as the main content.
+        getFragmentManager().beginTransaction()
+                .replace(android.R.id.content, new SettingsFragment())
+                .commit();
+    }
+}
+</pre>
+
+<p class="note"><strong>Lưu ý:</strong> {@link android.preference.PreferenceFragment} không có một
+đối tượng {@link android.content.Context} của chính nó. Nếu bạn cần một đối tượng {@link android.content.Context}
+, bạn có thể gọi {@link android.app.Fragment#getActivity()}. Tuy nhiên, hãy chắc chắn là chỉ gọi
+{@link android.app.Fragment#getActivity()} khi phân đoạn đó được gắn kèm với một hoạt động. Khi
+phân đoạn chưa được gắn kèm, hoặc bị bỏ gắn kèm trong khi kết thúc vòng đời của nó, {@link
+android.app.Fragment#getActivity()} sẽ trả về rỗng.</p>
+
+
+<h2 id="Defaults">Thiết đặt Giá trị Mặc định</h2>
+
+<p>Tùy chọn mà bạn tạo có thể định nghĩa một số hành vi quan trọng cho ứng dụng của bạn, vì thế
+bạn cần phải khởi tạo tệp {@link android.content.SharedPreferences} kèm theo với các
+giá trị mặc định cho từng {@link android.preference.Preference} khi người dùng lần đầu mở
+ứng dụng của bạn.</p>
+
+<p>Điều đầu tiên bạn phải làm đó là quy định một giá trị mặc định cho từng đối tượng {@link
+android.preference.Preference}
+trong tệp XML của bạn bằng cách sử dụng thuộc tính {@code android:defaultValue}. Giá trị đó có thể là bất kỳ kiểu
+dữ liệu nào mà phù hợp với đối tượng {@link android.preference.Preference} tương ứng. Ví
+dụ:</p>
+
+<pre>
+&lt;!-- default value is a boolean -->
+&lt;CheckBoxPreference
+    android:defaultValue="true"
+    ... />
+
+&lt;!-- default value is a string -->
+&lt;ListPreference
+    android:defaultValue="@string/pref_syncConnectionTypes_default"
+    ... />
+</pre>
+
+<p>Khi đó, từ phương pháp {@link android.app.Activity#onCreate onCreate()} trong hoạt động chính
+&mdash;của ứng dụng của bạn và trong bất kỳ hoạt động nào khác mà thông qua đó người dùng có thể vào ứng dụng của bạn lần
+đầu tiên&mdash;hãy gọi {@link android.preference.PreferenceManager#setDefaultValues
+setDefaultValues()}:</p>
+
+<pre>
+PreferenceManager.setDefaultValues(this, R.xml.advanced_preferences, false);
+</pre>
+
+<p>Việc gọi này trong khi {@link android.app.Activity#onCreate onCreate()} sẽ đảm bảo rằng
+ứng dụng của bạn được khởi tạo phù hợp với các thiết đặt mặc định mà ứng dụng của bạn có thể cần
+đọc để xác định một số hành vi (chẳng hạn như có tải xuống dữ liệu trong khi đang trên
+mạng di động hay không).</p>
+
+<p>Phương pháp này dùng ba tham đối:</p>
+<ul>
+  <li>{@link android.content.Context} ứng dụng của bạn.</li>
+  <li>ID tài nguyên cho tệp XML tùy chọn mà bạn muốn đặt các giá trị mặc định cho.</li>
+  <li>Một boolean cho biết các giá trị mặc định có nên được đặt nhiều hơn một lần hay không.
+<p>Khi tham đối này là <code>false</code>, hệ thống sẽ đặt các giá trị mặc định chỉ khi phương pháp này chưa từng được
+gọi trước đây (hoặc {@link android.preference.PreferenceManager#KEY_HAS_SET_DEFAULT_VALUES}
+trong tệp tùy chọn được chia sẻ giá trị mặc định là sai).</p></li>
+</ul>
+
+<p>Miễn là bạn đặt tham đối thứ ba này thành <code>false</code>, bạn có thể gọi phương pháp này một cách an toàn
+mỗi khi hoạt động của bạn bắt đầu mà không khống chế các tùy chọn đã lưu của người dùng bằng cách đặt lại chúng thành
+mặc định. Tuy nhiên, nếu bạn đặt nó thành <code>true</code>, bạn sẽ khống chế mọi giá trị
+trước đó bằng các giá trị mặc định.</p>
+
+
+
+<h2 id="PreferenceHeaders">Sử dụng Tiêu đề Tùy chọn</h2>
+
+<p>Trong vài trường hợp hiếm gặp, bạn có thể muốn thiết kế các thiết đặt của mình sao cho màn hình thứ nhất
+chỉ hiển thị một danh sách <a href="#Subscreens">các màn hình con</a> (chẳng hạn như trong ứng dụng Thiết đặt của hệ thống,
+như minh họa trong các hình 4 và 5). Khi phát triển thiết kế như vậy cho phiên bản Android 3.0 trở lên, bạn
+nên sử dụng tính năng "tiêu đề" mới trong Android 3.0, thay vì xây dựng màn hình con với các phần tử
+{@link android.preference.PreferenceScreen} lồng nhau.</p>
+
+<p>Để xây dựng thiết đặt có tiêu đề của mình, bạn cần:</p>
+<ol>
+  <li>Tách riêng từng nhóm thiết đặt thành các thực thể riêng của {@link
+android.preference.PreferenceFragment}. Cụ thể, mỗi nhóm thiết đặt cần một tệp XML
+riêng.</li>
+  <li>Tạo một tệp tiêu đề XML liệt kê từng nhóm thiết đặt và khai báo phân đoạn nào
+chứa danh sách thiết đặt tương ứng.</li>
+  <li>Mở rộng lớp {@link android.preference.PreferenceActivity} để lưu trữ các thiết đặt của bạn.</li>
+  <li>Triển khai lệnh gọi lại {@link
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} để quy định
+tệp tiêu đề.</li>
+</ol>
+
+<p>Một lợi ích tuyệt vời đối với việc sử dụng thiết kế này đó là {@link android.preference.PreferenceActivity}
+tự động trình bày bố trí hai bảng như minh họa trong hình 4 khi chạy trên màn hình lớn.</p>
+
+<p>Ngay cả khi ứng dụng của bạn hỗ trợ các phiên bản Android cũ hơn 3.0, bạn có thể xây dựng ứng dụng
+của mình để sử dụng {@link android.preference.PreferenceFragment} cho một trình chiếu hai bảng trên
+các thiết bị mới hơn, trong khi vẫn hỗ trợ phân cấp đa màn hình truyền thống trên các thiết bị
+cũ hơn (xem phần nói về <a href="#BackCompatHeaders">Hỗ trợ các phiên bản cũ hơn
+với tiêu đề tùy chọn</a>).</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-tablet.png" alt="" />
+<p class="img-caption"><strong>Hình 4.</strong> Bố trí có hai bảng với tiêu đề. <br/><b>1.</b> 
+Tiêu đề được định nghĩa trong một tệp tiêu đề XML. <br/><b>2.</b> Mỗi nhóm thiết đặt được định nghĩa bởi một
+{@link android.preference.PreferenceFragment}, được quy định bởi một phần tử {@code &lt;header&gt;} trong tệp tiêu đề
+.</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-handset.png" alt="" />
+<p class="img-caption"><strong>Hình 5.</strong> Thiết bị cầm tay với các tiêu đề thiết đặt. Khi một
+mục được chọn, {@link android.preference.PreferenceFragment} được liên kết sẽ thay thế
+tiêu đề.</p>
+
+
+<h3 id="CreateHeaders" style="clear:left">Tạo tệp tiêu đề</h3>
+
+<p>Mỗi nhóm thiết đặt trong danh sách tiêu đề của bạn được quy định bởi một phần tử {@code &lt;header&gt;}
+đơn lẻ bên trong một phần tử {@code &lt;preference-headers&gt;} gốc. Ví dụ:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;!-- key/value pairs can be included as arguments for the fragment. -->
+        &lt;extra android:name="someKey" android:value="someHeaderValue" />
+    &lt;/header>
+&lt;/preference-headers>
+</pre>
+
+<p>Với thuộc tính {@code android:fragment}, mỗi tiêu đề sẽ khai báo một thực thể của {@link
+android.preference.PreferenceFragment} mà sẽ mở khi người dùng chọn tiêu đề đó.</p>
+
+<p>Phần tử {@code &lt;extras&gt;} cho phép bạn chuyển các cặp khóa-giá trị sang phân đoạn trong một {@link
+android.os.Bundle}. Phân đoạn có thể truy xuất các tham đối bằng cách gọi {@link
+android.app.Fragment#getArguments()}. Bạn có thể chuyển các tham đối tới phân đoạn vì nhiều
+lý do khác nhau, nhưng một lý do chính đáng đó là để sử dụng lại cùng lớp con của {@link
+android.preference.PreferenceFragment} cho mỗi nhóm và sử dụng tham đối để quy định
+tệp XML tùy chọn nào mà phân đoạn cần tải.</p>
+
+<p>Ví dụ, sau đây là một phân đoạn mà có thể được tái sử dụng cho nhiều nhóm thiết đặt, khi từng
+tiêu đề định nghĩa một tham đối {@code &lt;extra&gt;} với khóa {@code "settings"}:</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        String settings = getArguments().getString("settings");
+        if ("notifications".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_wifi);
+        } else if ("sync".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_sync);
+        }
+    }
+}
+</pre>
+
+
+
+<h3 id="DisplayHeaders">Hiển thị tiêu đề</h3>
+
+<p>Để hiển thị tiêu đề tùy chọn, bạn phải triển khai phương pháp gọi lại {@link
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} và gọi
+{@link android.preference.PreferenceActivity#loadHeadersFromResource
+loadHeadersFromResource()}. Ví dụ:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onBuildHeaders(List&lt;Header> target) {
+        loadHeadersFromResource(R.xml.preference_headers, target);
+    }
+}
+</pre>
+
+<p>Khi người dùng chọn một mục từ danh sách tiêu đề, hệ thống sẽ mở {@link
+android.preference.PreferenceFragment} kèm theo.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Khi sử dụng tiêu đề tùy chọn, lớp con {@link
+android.preference.PreferenceActivity} của bạn không cần triển khai phương pháp {@link
+android.preference.PreferenceActivity#onCreate onCreate()}, vì tác vụ cần thiết duy nhất
+cho hoạt động đó là tải tiêu đề.</p>
+
+
+<h3 id="BackCompatHeaders">Hỗ trợ các phiên bản cũ hơn với tiêu đề tùy chọn</h3>
+
+<p>Nếu ứng dụng của bạn hỗ trợ các phiên bản Android cũ hơn 3.0, bạn vẫn có thể sử dụng tiêu đề để
+cung cấp một bố trí hai bảng khi chạy trên Android 3.0 trở lên. Tất cả những việc bạn cần làm đó là tạo một
+tệp XML tùy chọn bổ sung có sử dụng phần tử cơ bản {@link android.preference.Preference
+&lt;Preference&gt;} đóng vai trò như mục tiêu đề (để dùng cho các phiên bản Android
+cũ hơn).</p>
+
+<p>Tuy nhiên, thay vì mở một {@link android.preference.PreferenceScreen} mới, từng phần tử {@link
+android.preference.Preference &lt;Preference&gt;} sẽ gửi một {@link android.content.Intent} tới
+{@link android.preference.PreferenceActivity} mà quy định tệp XML tùy chọn cần
+tải.</p>
+
+<p>Ví dụ, sau đây là một tệp XML cho các tiêu đề tùy chọn được sử dụng trên Android 3.0
+trở lên ({@code res/xml/preference_headers.xml}):</p> 
+
+<pre>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" />
+&lt;/preference-headers>
+</pre>
+
+<p>Và sau đây là một tệp tùy chọn cung cấp cùng các tiêu đề cho các phiên bản cũ hơn
+Android 3.0 ({@code res/xml/preference_headers_legacy.xml}):</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;Preference 
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one"  >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_ONE" />
+    &lt;/Preference>
+    &lt;Preference 
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_TWO" />
+    &lt;/Preference>
+&lt;/PreferenceScreen>
+</pre>
+
+<p>Vì hỗ trợ dành cho {@code &lt;preference-headers&gt;} đã được thêm trong Android 3.0, hệ thống sẽ gọi
+{@link android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} trong {@link
+android.preference.PreferenceActivity} của bạn chỉ khi đang chạy trên phiên bản Androd 3.0 hoặc cao hơn. Để tải
+tệp tiêu đề "kế thừa" ({@code preference_headers_legacy.xml}), bạn phải kiểm tra phiên bản Android
+và, nếu phiên bản cũ hơn Android 3.0 ({@link
+android.os.Build.VERSION_CODES#HONEYCOMB}), hãy gọi {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} để
+tải tệp tiêu đề kế thừa. Ví dụ:</p>
+
+<pre>
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    ...
+
+    if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+
+// Called only on Honeycomb and later
+&#64;Override
+public void onBuildHeaders(List&lt;Header> target) {
+   loadHeadersFromResource(R.xml.preference_headers, target);
+}
+</pre>
+
+<p>Việc duy nhất còn lại cần làm đó là xử lý {@link android.content.Intent} mà được chuyển vào
+hoạt động để nhận biết tệp tùy chọn nào cần tải. Vì vậy, hãy truy xuất hành động của ý định và so sánh nó với
+các xâu hành động đã biết mà bạn đã sử dụng trong tag {@code &lt;intent&gt;} của XML tùy chọn:</p>
+
+<pre>
+final static String ACTION_PREFS_ONE = "com.example.prefs.PREFS_ONE";
+...
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+
+    String action = getIntent().getAction();
+    if (action != null &amp;&amp; action.equals(ACTION_PREFS_ONE)) {
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+
+    else if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+</pre>
+
+<p>Lưu ý rằng các lệnh gọi liên tiếp đến {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} sẽ
+xếp chồng tất cả tùy chọn trong một danh sách duy nhất, vì thế hãy chắc chắn rằng nó chỉ được gọi một lần bằng cách liên kết các
+điều kiện với mệnh đề else-if.</p>
+
+
+
+
+
+<h2 id="ReadingPrefs">Đọc Tùy chọn</h2>
+
+<p>Theo mặc định, tất cả tùy chọn của ứng dụng của bạn đều được lưu vào một tệp có thể truy cập từ bất kỳ nơi nào
+trong ứng dụng của bạn bằng cách gọi phương pháp tĩnh {@link
+android.preference.PreferenceManager#getDefaultSharedPreferences
+PreferenceManager.getDefaultSharedPreferences()}. Điều này sẽ trả về đối tượng {@link
+android.content.SharedPreferences} chứa tất cả cặp khóa-giá trị liên kết
+với các đối tượng {@link android.preference.Preference} được sử dụng trong {@link
+android.preference.PreferenceActivity}.</p>
+
+<p>Ví dụ, sau đây là cách bạn có thể đọc một trong các giá trị tùy chọn từ bất kỳ hoạt động nào khác trong ứng dụng
+của mình:</p>
+
+<pre>
+SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
+String syncConnPref = sharedPref.getString(SettingsActivity.KEY_PREF_SYNC_CONN, "");
+</pre>
+
+
+
+<h3 id="Listening">Theo dõi thay đổi tùy chọn</h3>
+
+<p>Có một vài lý do khiến bạn có thể muốn được thông báo càng sớm càng tốt nếu người dùng thay đổi một trong các
+tùy chọn. Để nhận một phương pháp gọi lại khi thay đổi xảy ra với bất kỳ tùy chọn nào,
+hãy triển khai giao diện {@link android.content.SharedPreferences.OnSharedPreferenceChangeListener
+SharedPreference.OnSharedPreferenceChangeListener} và đăng ký đối tượng theo dõi cho đối tượng
+{@link android.content.SharedPreferences} bằng cách gọi {@link
+android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
+registerOnSharedPreferenceChangeListener()}.</p>
+
+<p>Giao diện này chỉ có một phương pháp gọi lại, {@link
+android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged
+onSharedPreferenceChanged()}, và bạn có thể thấy đây là cách dễ nhất để triển khai giao diện như một phần
+hoạt động của mình. Ví dụ:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity
+                              implements OnSharedPreferenceChangeListener {
+    public static final String KEY_PREF_SYNC_CONN = "pref_syncConnectionType";
+    ...
+
+    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
+        String key) {
+        if (key.equals(KEY_PREF_SYNC_CONN)) {
+            Preference connectionPref = findPreference(key);
+            // Set summary to be the user-description for the selected value
+            connectionPref.setSummary(sharedPreferences.getString(key, ""));
+        }
+    }
+}
+</pre>
+
+<p>Trong ví dụ này, phương pháp sẽ kiểm tra xem thiết đặt bị thay đổi có áp dụng cho một khóa tùy chọn đã biết không. Nó
+sẽ gọi {@link android.preference.PreferenceActivity#findPreference findPreference()} để nhận đối tượng
+{@link android.preference.Preference} đã bị thay đổi để nó có thể sửa đổi tóm tắt
+của mục đó thành mô tả lựa chọn của người dùng. Cụ thể, khi thiết đặt là một {@link
+android.preference.ListPreference} hoặc thiết đặt nhiều lựa chọn khác, bạn nên gọi {@link
+android.preference.Preference#setSummary setSummary()} khi thiết đặt thay đổi để hiển thị
+trạng thái hiện tại (chẳng hạn như thiết đặt Ngủ như minh họa trong hình 5).</p>
+
+<p class="note"><strong>Lưu ý:</strong> Như đã mô tả trong tài liệu Thiết kế Android về <a href="{@docRoot}design/patterns/settings.html">Thiết đặt</a>, chúng tôi khuyên bạn nên cập nhật
+tóm tắt cho {@link android.preference.ListPreference} mỗi khi người dùng thay đổi tùy chọn để 
+mô tả thiết đặt hiện tại.</p>
+
+<p>Để quản lý vòng đời trong hoạt động cho phù hợp, chúng tôi khuyên rằng bạn nên đăng ký và bỏ đăng ký
+{@link android.content.SharedPreferences.OnSharedPreferenceChangeListener} của mình tương ứng trong {@link
+android.app.Activity#onResume} và các lệnh gọi lại {@link android.app.Activity#onPause}:</p>
+
+<pre>
+&#64;Override
+protected void onResume() {
+    super.onResume();
+    getPreferenceScreen().getSharedPreferences()
+            .registerOnSharedPreferenceChangeListener(this);
+}
+
+&#64;Override
+protected void onPause() {
+    super.onPause();
+    getPreferenceScreen().getSharedPreferences()
+            .unregisterOnSharedPreferenceChangeListener(this);
+}
+</pre>
+
+<p class="caution"><strong>Chú ý:</strong> Khi bạn gọi {@link
+android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
+registerOnSharedPreferenceChangeListener()}, trình quản lý tùy chọn hiện
+không lưu trữ một tham chiếu mạnh tới đối tượng theo dõi. Bạn phải lưu trữ một tham chiếu
+mạnh tới đối tượng theo dõi, nếu không nó sẽ dễ bị thu thập thông tin rác. Chúng tôi
+khuyên bạn nên giữ một tham chiếu tới đối tượng theo dõi trong dữ liệu thực thể của một đối tượng
+mà sẽ tồn tại miễn là bạn còn cần đối tượng theo dõi đó.</p>
+
+<p>Ví dụ, trong đoạn mã sau, hàm gọi không giữ tham chiếu tới
+đối tượng theo dõi. Kết quả là đối tượng theo dõi sẽ bị thu thập thông tin rác,
+và nó sẽ bị lỗi tại một thời điểm không xác định trong tương lai:</p>
+
+<pre>
+prefs.registerOnSharedPreferenceChangeListener(
+  // Bad! The listener is subject to garbage collection!
+  new SharedPreferences.OnSharedPreferenceChangeListener() {
+  public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+    // listener implementation
+  }
+});
+</pre>
+
+<p>Thay vào đó, hãy lưu một tham chiếu tới đối tượng theo dõi trong một trường dữ liệu thực thể của một
+đối tượng mà sẽ tồn tại miễn là còn cần đối tượng theo dõi đó:</p>
+
+<pre>
+SharedPreferences.OnSharedPreferenceChangeListener listener =
+    new SharedPreferences.OnSharedPreferenceChangeListener() {
+  public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+    // listener implementation
+  }
+};
+prefs.registerOnSharedPreferenceChangeListener(listener);
+</pre>
+
+<h2 id="NetworkUsage">Quản lý Sử dụng Mạng</h2>
+
+
+<p>Bắt đầu với Android 4.0, ứng dụng Thiết đặt của hệ thống sẽ cho phép người dùng xem
+ứng dụng của họ đang sử dụng bao nhiêu dữ liệu mạng khi đang ở tiền cảnh và dưới nền. Khi đó, người dùng có thể
+vô hiệu hóa việc sử dụng dữ liệu chạy ngầm cho từng ứng dụng. Để tránh việc người dùng vô hiệu hóa truy cập dữ liệu
+của ứng dụng của bạn từ dưới nền, bạn nên sử dụng kết nối dữ liệu một cách hiệu quả và cho phép
+người dùng tinh chỉnh mức sử dụng dữ liệu cho ứng dụng của bạn thông qua thiết đặt ứng dụng.<p>
+
+<p>Ví dụ, bạn có thể cho phép người dùng kiểm soát tần suất ứng dụng của bạn đồng bộ dữ liệu, ứng dụng của bạn
+chỉ được thực hiện tải lên/tải xuống khi trên Wi-Fi, ứng dụng của bạn sử dụng dữ liệu trong khi đang chuyển vùng dữ liệu, v.v... hay không. Với 
+những kiểm soát này, người dùng sẽ ít có khả năng vô hiệu hóa truy cập dữ liệu của ứng dụng của bạn
+hơn nhiều khi họ đạt gần mức giới hạn đặt ra trong Thiết đặt hệ thống, vì thay vào đó, họ có thể kiểm soát chính xác
+lượng dữ liệu mà ứng dụng của bạn sử dụng.</p>
+
+<p>Sau khi bạn đã thêm các tùy chọn cần thiết trong {@link android.preference.PreferenceActivity}
+của mình để kiểm soát các thói quen dữ liệu của ứng dụng của bạn, bạn nên thêm một bộ lọc ý định cho {@link
+android.content.Intent#ACTION_MANAGE_NETWORK_USAGE} trong tệp bản kê khai của mình. Ví dụ:</p>
+
+<pre>
+&lt;activity android:name="SettingsActivity" ... >
+    &lt;intent-filter>
+       &lt;action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />
+       &lt;category android:name="android.intent.category.DEFAULT" />
+    &lt;/intent-filter>
+&lt;/activity>
+</pre>
+
+<p>Bộ lọc ý định này cho hệ thống biết rằng đây là hoạt động kiểm soát mức sử dụng dữ liệu
+của ứng dụng của bạn. Vì thế, khi người dùng kiểm tra lượng dữ liệu mà ứng dụng của bạn đang dùng từ ứng dụng
+Thiết đặt của hệ thống, sẽ có một nút <em>Xem thiết đặt ứng dụng</em> khởi chạy
+{@link android.preference.PreferenceActivity} của bạn, vì thế người dùng có thể tinh chỉnh lượng dữ liệu mà ứng dụng của bạn
+dùng.</p>
+
+
+
+
+
+
+
+<h2 id="Custom">Xây dựng một Thiết đặt Tùy chỉnh</h2>
+
+<p>Khuôn khổ Android bao gồm nhiều lớp con {@link android.preference.Preference} mà
+cho phép bạn xây dựng một UI cho một vài loại thiết đặt khác nhau.
+Tuy nhiên, bạn có thể khám phá thiết đặt mình cần mà chưa có giải pháp tích hợp sẵn, chẳng hạn như một
+bộ chọn số hay bộ chọn ngày. Trong trường hợp như vậy, bạn sẽ cần tạo một tùy chọn tùy chỉnh bằng cách mở rộng
+lớp {@link android.preference.Preference} hoặc một trong các lớp con khác.</p>
+
+<p>Khi bạn mở rộng lớp {@link android.preference.Preference}, có một vài điều quan trọng
+mà bạn cần làm:</p>
+
+<ul>
+  <li>Quy định giao diện người dùng sẽ xuất hiện khi người dùng chọn thiết đặt.</li>
+  <li>Lưu giá trị của thiết đặt khi phù hợp.</li>
+  <li>Khởi tạo {@link android.preference.Preference} bằng giá trị hiện tại (hoặc mặc định) 
+khi xét tới dạng xem.</li>
+  <li>Cung cấp giá trị mặc định khi hệ thống yêu cầu.</li>
+  <li>Nếu {@link android.preference.Preference} cung cấp UI của chính mình (chẳng hạn như một hộp thoại), hãy lưu
+và khôi phục trạng thái để xử lý các thay đổi trong vòng đời (chẳng hạn như khi người dùng xoay màn hình).</li>
+</ul>
+
+<p>Các phần sau mô tả cách hoàn thành từng tác vụ này.</p>
+
+
+
+<h3 id="CustomSelected">Quy định một giao diện người dùng</h3>
+
+  <p>Nếu bạn trực tiếp mở rộng lớp {@link android.preference.Preference}, bạn cần triển khai
+{@link android.preference.Preference#onClick()} để định nghĩa hành động xảy ra khi người dùng
+chọn mục. Tuy nhiên, hầu hết các thiết đặt tùy chỉnh sẽ mở rộng {@link android.preference.DialogPreference} để
+hiển thị một hộp thoại, điều này làm đơn giản hóa quy trình. Khi bạn mở rộng {@link
+android.preference.DialogPreference}, bạn phải gọi {@link
+android.preference.DialogPreference#setDialogLayoutResource setDialogLayoutResourcs()} trong khi đang ở trong
+hàm dựng lớp để quy định bố trí cho hộp thoại.</p>
+
+  <p>Ví dụ, sau đây là hàm dựng cho một {@link
+android.preference.DialogPreference} tùy chỉnh mà khai báo bố trí và quy định văn bản cho
+các nút hộp thoại tích cực và tiêu cực mặc định:</p>
+
+<pre>
+public class NumberPickerPreference extends DialogPreference {
+    public NumberPickerPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        
+        setDialogLayoutResource(R.layout.numberpicker_dialog);
+        setPositiveButtonText(android.R.string.ok);
+        setNegativeButtonText(android.R.string.cancel);
+        
+        setDialogIcon(null);
+    }
+    ...
+}
+</pre>
+
+
+
+<h3 id="CustomSave">Lưu giá trị của thiết đặt</h3>
+
+<p>Bạn có thể lưu một giá trị cho thiết đặt vào bất cứ lúc nào bằng cách gọi một trong các phương pháp của lớp {@link
+android.preference.Preference}, {@code persist*()}, chẳng hạn như {@link
+android.preference.Preference#persistInt persistInt()} nếu giá trị của thiết đặt là một số nguyên hoặc
+{@link android.preference.Preference#persistBoolean persistBoolean()} để lưu một boolean.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Mỗi {@link android.preference.Preference} chỉ có thể lưu một
+kiểu dữ liệu, vì thế bạn phải sử dụng phương pháp {@code persist*()} phù hợp cho kiểu dữ liệu được sử dụng bởi
+{@link android.preference.Preference} tùy chỉnh của mình.</p>
+
+<p>Thời điểm bạn chọn duy trì thiết đặt có thể phụ thuộc vào lớp {@link
+android.preference.Preference} nào mà bạn mở rộng. Nếu mở rộng {@link
+android.preference.DialogPreference}, khi đó bạn nên duy trì giá trị đó chỉ khi hộp thoại
+đóng lại do kết quả tích cực (người dùng chọn nút "OK").</p>
+
+<p>Khi {@link android.preference.DialogPreference} đóng lại, hệ thống sẽ gọi phương pháp {@link
+android.preference.DialogPreference#onDialogClosed onDialogClosed()}. Phương pháp bao gồm một
+tham đối boolean quy định xem người dùng có trả về kết quả "tích cực" hay không&mdash;nếu kết quả là
+<code>true</code>, khi đó, người dùng đã chọn nút tích cực và bạn nên lưu giá trị mới này. Ví
+dụ:</p>
+
+<pre>
+&#64;Override
+protected void onDialogClosed(boolean positiveResult) {
+    // When the user selects "OK", persist the new value
+    if (positiveResult) {
+        persistInt(mNewValue);
+    }
+}
+</pre>
+
+<p>Trong ví dụ này, <code>mNewValue</code> là một thành viên lớp lưu giữ giá trị
+hiện tại của thiết đặt. Việc gọi {@link android.preference.Preference#persistInt persistInt()} sẽ lưu giá trị vào
+tệp {@link android.content.SharedPreferences} (tự động sử dụng khóa mà
+được quy định trong tệp XML cho {@link android.preference.Preference} này).</p>
+
+
+<h3 id="CustomInitialize">Khởi tạo giá trị hiện tại</h3>
+
+<p>Khi hệ thống thêm {@link android.preference.Preference} của bạn vào màn hình, nó
+gọi {@link android.preference.Preference#onSetInitialValue onSetInitialValue()} để thông báo
+với bạn xem thiết đặt có giá trị được duy trì hay không. Nếu không có giá trị được duy trì, lệnh gọi này sẽ cung cấp
+cho bạn giá trị mặc định.</p>
+
+<p>Phương pháp {@link android.preference.Preference#onSetInitialValue onSetInitialValue()} chuyển một
+boolean, <code>restorePersistedValue</code>, để cho biết liệu giá trị đã được duy trì 
+cho thiết đặt hay không. Nếu nó là <code>true</code>, khi đó bạn nên truy xuất giá trị được duy trì bằng cách gọi
+một trong các phương pháp của lớp {@link
+android.preference.Preference}, {@code getPersisted*()}, chẳng hạn như {@link
+android.preference.Preference#getPersistedInt getPersistedInt()} đối với một giá trị số nguyên. Bạn sẽ
+thường muốn truy xuất giá trị được duy trì sao cho bạn có thể cập nhật UI cho phù hợp để phản ánh
+giá trị đã lưu trước đó.</p>
+
+<p>Nếu <code>restorePersistedValue</code> là <code>false</code>, vậy bạn
+nên sử dụng giá trị mặc định được chuyển trong tham đối thứ hai.</p>
+
+<pre>
+&#64;Override
+protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
+    if (restorePersistedValue) {
+        // Restore existing state
+        mCurrentValue = this.getPersistedInt(DEFAULT_VALUE);
+    } else {
+        // Set default state from the XML attribute
+        mCurrentValue = (Integer) defaultValue;
+        persistInt(mCurrentValue);
+    }
+}
+</pre>
+
+<p>Mỗi phương pháp {@code getPersisted*()} sẽ lấy một tham đối quy định
+giá trị mặc định sẽ sử dụng trong trường hợp thực sự không có giá trị được duy trì hoặc khóa không tồn tại. Trong 
+ví dụ trên, một hằng số cục bộ được sử dụng để quy định giá trị mặc định trong trường hợp {@link
+android.preference.Preference#getPersistedInt getPersistedInt()} không thể trả về một giá trị được duy trì.</p>
+
+<p class="caution"><strong>Chú ý:</strong> Bạn <strong>không thể</strong> sử dụng
+<code>defaultValue</code> làm giá trị mặc định trong phương pháp {@code getPersisted*()}, bởi
+giá trị của nó luôn rỗng khi <code>restorePersistedValue</code> là <code>true</code>.</p>
+
+
+<h3 id="CustomDefault">Cung cấp một giá trị mặc định</h3>
+
+<p>Nếu trường hợp lớp {@link android.preference.Preference} của bạn quy định một giá trị mặc định
+(với thuộc tính {@code android:defaultValue}), khi đó hệ thống
+sẽ gọi {@link android.preference.Preference#onGetDefaultValue
+onGetDefaultValue()} khi nó khởi tạo đối tượng để truy xuất giá trị. Bạn phải
+triển khai phương pháp này để hệ thống lưu giá trị mặc định trong {@link
+android.content.SharedPreferences}. Ví dụ:</p>
+
+<pre>
+&#64;Override
+protected Object onGetDefaultValue(TypedArray a, int index) {
+    return a.getInteger(index, DEFAULT_VALUE);
+}
+</pre>
+
+<p>Các tham đối của phương pháp cung cấp mọi thứ bạn cần: mảng thuộc tính và vị trí chỉ mục
+của {@code android:defaultValue} mà bạn phải truy xuất. Lý do bạn phải triển khai
+phương pháp này nhằm trích xuất giá trị mặc định từ thuộc tính đó là bởi bạn phải quy định
+một giá trị mặc định cục bộ cho thuộc tính trong trường hợp giá trị không được định nghĩa.</p>
+
+
+
+<h3 id="CustomSaveState">Lưu và khôi phục trạng thái của Tùy chọn</h3>
+
+<p>Giống như {@link android.view.View} trong một bố trí, lớp con {@link android.preference.Preference}
+của bạn chịu trách nhiệm lưu và khôi phục trạng thái của nó trong trường hợp hoạt động hoặc phân đoạn
+được khởi động lại (chẳng hạn như khi người dùng xoay màn hình). Để lưu và khôi phục
+trạng thái của lớp {@link android.preference.Preference} của bạn cho đúng, bạn phải triển khai các
+phương pháp gọi lại vòng đời {@link android.preference.Preference#onSaveInstanceState
+onSaveInstanceState()} và {@link
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()}.</p>
+
+<p>Trạng thái của {@link android.preference.Preference} của bạn được định nghĩa bởi một đối tượng mà triển khai
+giao diện {@link android.os.Parcelable}. Khuôn khổ Android sẽ cung cấp một đối tượng như vậy cho bạn
+như một điểm bắt đầu để định nghĩa đối tượng trạng thái của bạn: lớp {@link
+android.preference.Preference.BaseSavedState}.</p>
+
+<p>Để định nghĩa cách thức lớp {@link android.preference.Preference} của bạn lưu trạng thái của nó
+hãy mở rộng lớp {@link android.preference.Preference.BaseSavedState}. Bạn cần khống chế chỉ
+ một vài phương pháp và định nghĩa đối tượng {@link android.preference.Preference.BaseSavedState#CREATOR}
+.</p>
+
+<p>Đối với hầu hết ứng dụng, bạn có thể sao chép triển khai sau và chỉ cần thay đổi các dòng
+xử lý {@code value} nếu lớp con {@link android.preference.Preference} của bạn lưu một kiểu
+dữ liệu khác số nguyên.</p>
+
+<pre>
+private static class SavedState extends BaseSavedState {
+    // Member that holds the setting's value
+    // Change this data type to match the type saved by your Preference
+    int value;
+
+    public SavedState(Parcelable superState) {
+        super(superState);
+    }
+
+    public SavedState(Parcel source) {
+        super(source);
+        // Get the current preference's value
+        value = source.readInt();  // Change this to read the appropriate data type
+    }
+
+    &#64;Override
+    public void writeToParcel(Parcel dest, int flags) {
+        super.writeToParcel(dest, flags);
+        // Write the preference's value
+        dest.writeInt(value);  // Change this to write the appropriate data type
+    }
+
+    // Standard creator object using an instance of this class
+    public static final Parcelable.Creator&lt;SavedState> CREATOR =
+            new Parcelable.Creator&lt;SavedState>() {
+
+        public SavedState createFromParcel(Parcel in) {
+            return new SavedState(in);
+        }
+
+        public SavedState[] newArray(int size) {
+            return new SavedState[size];
+        }
+    };
+}
+</pre>
+
+<p>Với triển khai {@link android.preference.Preference.BaseSavedState} bên trên được thêm
+vào ứng dụng của bạn (thường dưới dạng một lớp con của lớp con {@link android.preference.Preference} của bạn), khi đó
+bạn cần triển khai các phương pháp {@link android.preference.Preference#onSaveInstanceState
+onSaveInstanceState()} và {@link
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()} cho lớp con
+{@link android.preference.Preference} của mình.</p>
+
+<p>Ví dụ:</p>
+
+<pre>
+&#64;Override
+protected Parcelable onSaveInstanceState() {
+    final Parcelable superState = super.onSaveInstanceState();
+    // Check whether this Preference is persistent (continually saved)
+    if (isPersistent()) {
+        // No need to save instance state since it's persistent,
+        // use superclass state
+        return superState;
+    }
+
+    // Create instance of custom BaseSavedState
+    final SavedState myState = new SavedState(superState);
+    // Set the state's value with the class member that holds current
+    // setting value
+    myState.value = mNewValue;
+    return myState;
+}
+
+&#64;Override
+protected void onRestoreInstanceState(Parcelable state) {
+    // Check whether we saved the state in onSaveInstanceState
+    if (state == null || !state.getClass().equals(SavedState.class)) {
+        // Didn't save the state, so call superclass
+        super.onRestoreInstanceState(state);
+        return;
+    }
+
+    // Cast state to custom BaseSavedState and pass to superclass
+    SavedState myState = (SavedState) state;
+    super.onRestoreInstanceState(myState.getSuperState());
+    
+    // Set this Preference's widget to reflect the restored state
+    mNumberPicker.setValue(myState.value);
+}
+</pre>
+
diff --git a/docs/html-intl/intl/vi/guide/topics/ui/ui-events.jd b/docs/html-intl/intl/vi/guide/topics/ui/ui-events.jd
new file mode 100644
index 0000000..b4d1635
--- /dev/null
+++ b/docs/html-intl/intl/vi/guide/topics/ui/ui-events.jd
@@ -0,0 +1,291 @@
+page.title=Sự kiện Nhập liệu
+parent.title=Giao diện Người dùng
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Trong tài liệu này</h2>
+  <ol>
+    <li><a href="#EventListeners">Đối tượng theo dõi Sự kiện</a></li>
+    <li><a href="#EventHandlers">Bộ xử lý Sự kiện</a></li>
+    <li><a href="#TouchMode">Chế độ Cảm ứng</a></li>
+    <li><a href="#HandlingFocus">Xử lý Tiêu điểm</a></li>
+  </ol>
+
+</div>
+</div>
+
+<p>Trên Android, có nhiều cách để can thiệp vào các sự kiện từ tương tác của một người dùng với ứng dụng của bạn.
+Khi xem xét các sự kiện trong giao diện người dùng của bạn, cách tiếp cận là chụp lại sự kiện từ
+đối tượng Dạng xem cụ thể mà người dùng tương tác với. Lớp Dạng xem sẽ cung cấp phương thức để làm việc này.</p>
+
+<p>Trong các lớp Dạng xem khác nhau mà bạn sẽ sử dụng để soạn bố trí của mình, bạn có thể thấy một vài phương pháp gọi lại 
+công khai dường như hữu ích đối với sự kiện UI. Những phương pháp này được khuôn khổ Android gọi khi 
+xảy ra hành động tương ứng trên đối tượng đó. Ví dụ, khi một Dạng xem (chẳng hạn như một Nút) được chạm vào,
+phương pháp <code>onTouchEvent()</code> được gọi trên đối tượng đó. Tuy nhiên, để can thiệp vào điều này, bạn phải mở rộng
+lớp và khống chế phương pháp đó. Tuy nhiên, việc mở rộng mọi đối tượng Dạng xem
+để xử lý một sự kiện như vậy sẽ là không thực tế. Đây là lý do tại sao lớp Dạng xem cũng chứa
+một tập hợp giao diện lồng nhau cùng các phương pháp gọi lại mà bạn có thể định nghĩa dễ dàng hơn nhiều. Những giao diện này,
+được gọi là <a href="#EventListeners">đối tượng theo dõi sự kiện</a>, là tấm vé để bạn chụp lại tương tác giữa người dùng với UI của bạn.</p>
+
+<p>Trong khi các đối tượng theo dõi sự kiện sẽ thường được sử dụng để theo dõi tương tác của người dùng, có thể
+có lúc bạn muốn mở rộng một lớp Dạng xem để xây dựng một thành phần tùy chỉnh. 
+Có thể là bạn muốn mở rộng lớp {@link android.widget.Button}
+để khiến cái gì đó trông ấn tượng hơn. Trong trường hợp này, bạn sẽ có thể định nghĩa các hành vi sự kiện mặc định cho lớp
+của mình bằng cách sử dụng <a href="#EventHandlers">bộ xử lý sự kiện</a> của lớp.</p>
+
+
+<h2 id="EventListeners">Đối tượng theo dõi Sự kiện</h2>
+
+<p>Đối tượng theo dõi sự kiện là một giao diện trong lớp {@link android.view.View} chứa một phương pháp gọi lại 
+đơn lẻ. Những phương pháp này sẽ được khuôn khổ Android gọi khi Dạng xem mà đối tượng theo dõi đã
+được đăng ký với bị kích khởi bởi tương tác giữa người dùng với mục trong UI.</p>
+
+<p>Trong giao diện của đối tượng theo dõi sự kiện là những phương pháp gọi lại sau:</p>
+
+<dl>
+  <dt><code>onClick()</code></dt>
+    <dd>Từ {@link android.view.View.OnClickListener}. 
+    Phương pháp này được gọi khi người dùng chạm vào mục 
+    (khi ở chế độ cảm ứng), hoặc lấy tiêu điểm vào một mục bằng phím điều hướng hoặc bi xoay và
+    nhấn phím "enter" phù hợp hoặc nhấn bi xoay.</dd>
+  <dt><code>onLongClick()</code></dt>
+    <dd>Từ {@link android.view.View.OnLongClickListener}. 
+    Phương pháp này được gọi khi người gọi chạm và giữ mục (khi ở chế độ cảm ứng), hoặc 
+    lấy tiêu điểm vào một mục bằng phím điều hướng hoặc bi xoay và
+    nhấn và giữ phím "enter" phù hợp hoặc nhấn và giữ bi xoay (trong một giây).</dd>
+  <dt><code>onFocusChange()</code></dt>
+    <dd>Từ {@link android.view.View.OnFocusChangeListener}. 
+    Phương pháp này được gọi khi người dùng điều hướng lên hoặc ra khỏi một mục bằng cách sử dụng các phím điều hướng hoặc bi xoay.</dd>
+  <dt><code>onKey()</code></dt>
+    <dd>Từ {@link android.view.View.OnKeyListener}. 
+    Phương pháp này được gọi khi người dùng được lấy tiêu điểm vào một mục và nhấn hoặc nhả phím cứng trên thiết bị.</dd>
+  <dt><code>onTouch()</code></dt>
+    <dd>Từ {@link android.view.View.OnTouchListener}. 
+    Phương pháp này được gọi khi người dùng thực hiện một hành động được coi như một sự kiện chạm, bao gồm nhấn, nhả,
+    hoặc bất kỳ động tác chuyển động nào trên màn hình (trong đường biên của mục đó).</dd>
+  <dt><code>onCreateContextMenu()</code></dt>
+    <dd>Từ {@link android.view.View.OnCreateContextMenuListener}. 
+    Phương pháp này được gọi khi một Menu Ngữ cảnh đang được xây dựng (kết quả của một sự kiện "nhấp giữ" kéo dài). Xem phần thảo luận về
+    menu ngữ cảnh trong hướng dẫn dành cho nhà phát triển <a href="{@docRoot}guide/topics/ui/menus.html#context-menu">Menu</a>
+.</dd>
+</dl>
+
+<p>Những phương pháp này là phương pháp duy nhất nằm trong giao diện tương ứng của chúng. Để định nghĩa một trong những phương pháp này
+và xử lý sự kiện của bạn, hãy triển khai giao diện lồng nhau trong Hoạt động của bạn hoặc định nghĩa nó thành một lớp vô danh.
+Sau đó, chuyển một thực thể triển khai của bạn
+tới phương pháp <code>View.set...Listener()</code> tương ứng. (Ví dụ, gọi 
+<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code> 
+và chuyển cho nó triển khai {@link android.view.View.OnClickListener OnClickListener} của bạn.)</p>
+
+<p>Ví dụ bên dưới cho biết cách đăng ký một đối tượng theo dõi khi nhấp cho một Nút. </p>
+
+<pre>
+// Create an anonymous implementation of OnClickListener
+private OnClickListener mCorkyListener = new OnClickListener() {
+    public void onClick(View v) {
+      // do something when the button is clicked
+    }
+};
+
+protected void onCreate(Bundle savedValues) {
+    ...
+    // Capture our button from layout
+    Button button = (Button)findViewById(R.id.corky);
+    // Register the onClick listener with the implementation above
+    button.setOnClickListener(mCorkyListener);
+    ...
+}
+</pre>
+
+<p>Bạn cũng có thể thấy tiện hơn khi triển khai OnClickListener như một phần trong Hoạt động của mình.
+Làm vậy sẽ tránh phải tải lớp bổ sung và phân bổ đối tượng. Ví dụ:</p>
+<pre>
+public class ExampleActivity extends Activity implements OnClickListener {
+    protected void onCreate(Bundle savedValues) {
+        ...
+        Button button = (Button)findViewById(R.id.corky);
+        button.setOnClickListener(this);
+    }
+
+    // Implement the OnClickListener callback
+    public void onClick(View v) {
+      // do something when the button is clicked
+    }
+    ...
+}
+</pre>
+
+<p>Lưu ý rằng phương pháp gọi lại <code>onClick()</code> trong ví dụ trên không có giá trị
+trả về, nhưng một số phương pháp đối tượng theo dõi sự kiện khác phải trả về một boolean. Lý do
+này phụ thuộc vào sự kiện. Với số ít sự kiện thực hiện như vậy, sau đây là lý do:</p>
+<ul>
+  <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> - 
+    Trả về một boolean cho biết bạn đã xử lý sự kiện và sự kiện không nên được tiếp tục hay không. 
+    Cụ thể, trả về <em>true</em> để cho biết rằng bạn đã xử lý sự kiện và nó nên dừng ở đây; 
+    trả về <em>false</em> nếu bạn chưa xử lý nó và/hoặc sự kiện sẽ tiếp tục đối với bất kỳ
+    đối tượng theo dõi khi nhấp nào khác.</li>
+  <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> - 
+    Trả về một boolean cho biết bạn đã xử lý sự kiện và sự kiện không nên được tiếp tục hay không.
+    Cụ thể, trả về <em>true</em> sẽ cho biết rằng bạn đã xử lý sự kiện và nó nên dừng ở đây; 
+    trả về <em>false</em> nếu bạn chưa xử lý nó và/hoặc sự kiện sẽ tiếp tục đối với bất kỳ
+    đối tượng theo dõi trên phím nào khác.</li>
+  <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> - 
+    Trả về một boolean cho biết đối tượng theo dõi của bạn có xử lý sự kiện này hay không. Điều quan trọng đó là
+    sự kiện này có thể có nhiều hành động nối tiếp nhau. Vì vậy, nếu bạn trả về <em>false</em> khi
+    nhận được sự kiện hành động hướng xuống, bạn sẽ cho biết rằng mình chưa xử lý sự kiện và cũng
+    không quan tâm tới các hành động sau đó từ sự kiện này. Vì thế, bạn sẽ không bị gọi vì bất kỳ hành động nào khác
+    trong sự kiện, chẳng hạn như một cử chỉ ngón tay, hay sự kiện hành động cho sự kiện hướng lên.</li>
+</ul>
+
+<p>Ghi nhớ rằng các sự kiện phím cứng luôn được chuyển tới Dạng xem đang được lấy tiêu điểm. Chúng được chuyển bắt đầu từ trên cùng
+của phân cấp Dạng xem, rồi xuống dưới, tới khi chúng đến đích phù hợp. Nếu Dạng xem của bạn (hoặc con của Dạng xem)
+hiện có tiêu điểm, khi đó bạn có thể thấy hành trình của sự kiện qua phương pháp <code>{@link android.view.View#dispatchKeyEvent(KeyEvent)
+dispatchKeyEvent()}</code>. Một cách khác để chụp lại các sự kiện phím bấm thông qua Dạng xem của mình, bạn cũng có thể nhận
+tất cả sự kiện bên trong Hoạt động của mình bằng <code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>
+và <code>{@link android.app.Activity#onKeyUp(int,KeyEvent) onKeyUp()}</code>.</p>
+
+<p>Đồng thời, khi nghĩ tới nhập liệu văn bản cho ứng dụng của bạn, hãy nhớ rằng nhiều thiết bị chỉ có các phương pháp
+nhập liệu mềm. Những phương pháp như vậy không bắt buộc phải dựa trên phím bấm; một số có thể sử dụng nhập liệu bằng giọng nói, viết tay, v.v. Ngay cả khi
+một phương pháp nhập liệu trình bày một giao diện như bàn phím, nó sẽ thường <strong>không</strong> kích khởi họ sự kiện
+<code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>. Bạn không nên
+xây dựng UI yêu cầu kiểm soát các thao tác nhấn phím cụ thể trừ khi muốn giới hạn ứng dụng của bạn ở một số thiết bị
+có bàn phím cứng. Cụ thể, không được dựa vào những phương pháp này để xác thực nhập liệu khi người dùng nhấn phím
+quay lại; thay vào đó, hãy sử dụng các hành động như {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE} để báo hiệu với
+phương pháp nhập liệu bạn kỳ vọng ứng dụng của mình sẽ phản ứng như thế nào để nó có thể thay đổi UI của mình cho có nghĩa. Tránh các giả định
+về cách thức hoạt động của một phương pháp nhập liệu mềm và chỉ tin tưởng để nó cung cấp văn bản đã có định dạng cho ứng dụng của mình.</p>
+
+<p class="note"><strong>Lưu ý:</strong> Android sẽ gọi bộ xử lý sự kiện trước rồi mới tới bộ xử lý
+mặc định phù hợp từ định nghĩa lớp. Như thế, việc trả về <em>true</em> từ những đối tượng theo dõi sự kiện này sẽ dừng
+việc lan truyền sự kiện tới đối tượng theo dõi sự kiện khác và cũng sẽ chặn phương pháp gọi lại tới
+bộ xử lý sự kiện mặc định trong Dạng xem. Vì thế, hãy chắc chắn rằng bạn muốn chấm dứt sự kiện khi trả về <em>true</em>.</p>
+
+
+<h2 id="EventHandlers">Bộ xử lý Sự kiện</h2>
+
+<p>Nếu bạn đang xây dựng một thành phần tùy chỉnh từ Dạng xem, khi đó bạn sẽ có thể định nghĩa một vài phương pháp gọi lại
+được sử dụng như bộ xử lý sự kiện mặc định.
+Trong tài liệu về <a href="{@docRoot}guide/topics/ui/custom-components.html">Thành phần
+Tùy chỉnh</a>, bạn sẽ tìm hiểu về một số phương pháp gọi lại phổ biến được sử dụng để xử lý sự kiện,
+bao gồm:</p>
+<ul>
+  <li><code>{@link  android.view.View#onKeyDown}</code> - Được gọi khi xảy ra một sự kiện phím bấm mới.</li>
+  <li><code>{@link  android.view.View#onKeyUp}</code> - Được gọi khi xảy ra một sự kiện phím bấm hướng lên.</li>
+  <li><code>{@link  android.view.View#onTrackballEvent}</code> - Được gọi khi xảy ra một sự kiện chuyển động bi xoay.</li>
+  <li><code>{@link  android.view.View#onTouchEvent}</code> - Được gọi khi xảy ra một sự kiện chuyển động màn hình cảm ứng.</li>
+  <li><code>{@link  android.view.View#onFocusChanged}</code> - Được gọi khi dạng xem có hoặc mất tiêu điểm.</li>
+</ul>
+<p>Có một số phương pháp khác mà bạn cần lưu ý, chúng không thuộc lớp Dạng xem, 
+nhưng có thể tác động trực tiếp tới cách bạn có thể xử lý sự kiện. Vì thế, khi quản lý các sự kiện phức tạp hơn bên trong 
+một bố trí, hãy xét những phương pháp khác sau:</p>
+<ul>
+  <li><code>{@link  android.app.Activity#dispatchTouchEvent(MotionEvent)
+    Activity.dispatchTouchEvent(MotionEvent)}</code> - Phương pháp này cho phép {@link 
+    android.app.Activity} của bạn can thiệp vào tất cả sự kiện chạm trước khi chúng được phân phối tới cửa sổ.</li>
+  <li><code>{@link  android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)
+    ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> - Phương pháp này cho phép một {@link
+    android.view.ViewGroup} xem sự kiện khi chúng được phân phối tới Dạng xem con.</li>
+  <li><code>{@link  android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
+    ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - Gọi phương pháp
+    này trên Dạng xem mẹ để cho biết rằng nó sẽ không can thiệp vào các sự kiện chạm bằng <code>{@link 
+    android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code>.</li>
+</ul>
+
+<h2 id="TouchMode">Chế độ Cảm ứng</h2>
+<p>
+Khi một người dùng đang điều hướng trong một giao diện người dùng bằng phím hướng hoặc bi xoay, cần
+lấy tiêu điểm tới các mục có thể hành động (như nút) sao cho người dùng có thể thấy
+mục nào sẽ chấp nhận nhập liệu.  Tuy nhiên, nếu thiết bị có khả năng cảm ứng, và người dùng
+bắt đầu tương tác với giao diện bằng cách chạm vào nó, khi đó không còn cần
+tô sáng mục hay lấy tiêu điểm tới một Dạng xem cụ thể nữa.  Do đó, có một chế độ cho
+tương tác có tên là "chế độ cảm ứng." 
+</p>
+<p>
+Đối với thiết bị có khả năng cảm ứng, sau khi người dùng chạm vào màn hình, thiết bị
+sẽ vào chế độ cảm ứng.  Từ điểm này trở đi, chỉ những Dạng xem mà
+{@link android.view.View#isFocusableInTouchMode} là đúng mới có thể lấy tiêu điểm, chẳng hạn như chế độ xem các widget chỉnh sửa văn bản.
+Các Dạng xem chạm được, chẳng hạn như nút, sẽ không lấy được tiêu điểm khi chạm; chúng sẽ chỉ đơn giản
+khởi chạy đối tượng theo dõi khi nhấp của mình khi được nhấn.
+</p>
+<p>
+Bất cứ khi nào một người dùng nhấn phím hướng hoặc cuộn bằng bi xoay, thiết bị sẽ
+thoát chế độ cảm ứng, và tìm một dạng xem để lấy tiêu điểm. Lúc này, người dùng có thể tiếp tục tương tác
+với giao diện người dùng mà không chạm vào màn hình.
+</p>
+<p>
+Trạng thái chế độ cảm ứng sẽ được duy trì trên toàn bộ hệ thống (tất cả cửa sổ và hoạt động). 
+Để truy vấn trạng thái hiện tại, bạn có thể gọi
+{@link android.view.View#isInTouchMode} để xem liệu thiết bị có đang ở trong chế độ cảm ứng hay không.
+</p>
+
+
+<h2 id="HandlingFocus">Xử lý Tiêu điểm</h2>
+
+<p>Khuôn khổ sẽ xử lý chuyển động của tiêu điểm thường xuyên hồi đáp lại nhập liệu của người dùng.
+Việc này bao gồm thay đổi tiêu điểm khi Dạng xem bị loại bỏ hoặc ẩn đi, hoặc khi Dạng xem
+mới có sẵn. Dạng xem thể hiện sự sẵn sàng lấy tiêu điểm của chúng
+thông qua phương pháp <code>{@link android.view.View#isFocusable()}</code>. Để thay đổi việc liệu một Dạng xem có thể lấy
+tiêu điểm hay không, hãy gọi <code>{@link android.view.View#setFocusable(boolean) setFocusable()}</code>.  Khi ở trong chế độ cảm ứng,
+bạn có thể truy vấn xem Dạng xem có cho phép lấy tiêu điểm bằng <code>{@link android.view.View#isFocusableInTouchMode()}</code> hay không.
+Bạn có thể thay đổi điều này bằng <code>{@link android.view.View#setFocusableInTouchMode(boolean) setFocusableInTouchMode()}</code>.
+</p>
+
+<p>Chuyển động tiêu điểm được dựa trên một giải thuật tìm kiếm đối tượng gần nhất theo
+một hướng cho trước. Trong các trường hợp hiếm gặp, giải thuật mặc định có thể không khớp với
+hành vi theo ý định của nhà phát triển. Trong những tình huống này, bạn có thể cung cấp
+các khống chế rõ ràng với các thuộc tính XML sau trong tệp bố trí:
+<var>nextFocusDown</var>, <var>nextFocusLeft</var>, <var>nextFocusRight</var>, và
+<var>nextFocusUp</var>. Thêm một trong những thuộc tính này vào Dạng xem mà <em>từ</em> đó
+tiêu điểm đang rời khỏi. Định nghĩa giá trị của thuộc tính là id của Dạng xem
+<em>mà</em> cần được lấy tiêu điểm. Ví dụ:</p>
+<pre>
+&lt;LinearLayout
+    android:orientation="vertical"
+    ... >
+  &lt;Button android:id="@+id/top"
+          android:nextFocusUp="@+id/bottom"
+          ... />
+  &lt;Button android:id="@+id/bottom"
+          android:nextFocusDown="@+id/top"
+          ... />
+&lt;/LinearLayout>
+</pre>
+
+<p>Thông thưởng, trong bố trí thẳng đứng này, việc điều hướng lên từ Nút đầu tiên sẽ không
+đi tới đâu hết và việc điều hướng xuống từ Nút thứ hai cũng vậy. Giờ thì khi Nút trên cùng
+đã định nghĩa Nút dưới cùng là <var>nextFocusUp</var> (và ngược lại), tiêu điểm điều hướng sẽ 
+luân chuyển từ trên-xuống-dưới và dưới-lên-trên.</p>
+
+<p>Nếu bạn muốn khai báo một Dạng xem là có thể lấy tiêu điểm trong UI của mình (thông thường thì không), 
+hãy thêm thuộc tính XML <code>android:focusable</code> vào Dạng xem, trong khai báo bố trí của bạn.
+Đặt giá trị <var>true</var>. Bạn cũng có thể khai báo một Dạng xem
+là có thể lấy tiêu điểm trong khi ở Chế độ Cảm ứng bằng <code>android:focusableInTouchMode</code>.</p>
+<p>Để yêu cầu một Dạng xem cụ thể để lấy tiêu điểm, hãy gọi <code>{@link android.view.View#requestFocus()}</code>.</p>
+<p>Để theo dõi các sự kiện tiêu điểm (được thông báo khi một Dạng xem nhận được hoặc mất tiêu điểm), hãy sử dụng
+<code>{@link android.view.View.OnFocusChangeListener#onFocusChange(View,boolean) onFocusChange()}</code>,
+như được đề cập trong phần <a href="#EventListeners">Đối tượng theo dõi Sự kiện</a> bên trên.</p>
+
+
+
+<!--
+<h2 is="EventCycle">Event Cycle</h2>
+   <p>The basic cycle of a View is as follows:</p>
+   <ol>
+    <li>An event comes in and is dispatched to the appropriate View. The View
+    handles the event and notifies any listeners.</li>
+    <li>If, in the course of processing the event, the View's bounds may need
+    to be changed, the View will call {@link android.view.View#requestLayout()}.</li>
+    <li>Similarly, if in the course of processing the event the View's appearance
+    may need to be changed, the View will call {@link android.view.View#invalidate()}.</li>
+    <li>If either {@link android.view.View#requestLayout()} or {@link android.view.View#invalidate()} were called,
+    the framework will take care of measuring, laying out, and drawing the tree
+    as appropriate.</li>
+   </ol>
+   
+   <p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on
+   the UI thread when calling any method on any View.
+   If you are doing work on other threads and want to update the state of a View
+   from that thread, you should use a {@link android.os.Handler}.
+   </p>
+-->
diff --git a/docs/html-intl/intl/vi/sdk/index.jd b/docs/html-intl/intl/vi/sdk/index.jd
new file mode 100644
index 0000000..c4009f4
--- /dev/null
+++ b/docs/html-intl/intl/vi/sdk/index.jd
@@ -0,0 +1,430 @@
+page.title=Tải xuống Android Studio và SDK Tools
+page.tags=sdk, android studio
+page.template=sdk
+page.image=images/cards/android-studio_2x.png
+header.hide=1
+page.metaDescription=Tải xuống Android IDE chính thức và bộ công cụ cho nhà phát triển để xây dựng ứng dụng cho điện thoại, máy tính bảng, thiết bị đeo được, TV chạy Android và nhiều thiết bị khác.
+
+@jd:body
+
+<style type="text/css">
+  .offline {display:none;}
+  h2.feature {
+    padding-top:30px;
+    margin-top:0;
+    clear:both;
+  }
+  .feature-blurb {
+  margin:0px; font-size:16px; font-weight:300;
+  padding-top:40px;
+  }
+
+  .landing-button .small {
+    font-size: 12px;
+    font-weight: normal;
+    line-height: 12px;
+    display: block;
+  }
+
+  h1.studio-logo {
+    width:226px;
+    height:78px;
+    display:block;
+    padding:0;
+    white-space: nowrap;
+    text-indent: -10000px;
+    font-size:0px;
+    background: url({@docRoot}images/tools/studio-logo.png);
+    background-image: -webkit-image-set(url({@docRoot}images/tools/studio-logo.png) 1x, url({@docRoot}images/tools/studio-logo_2x.png) 2x);
+    background-size: 226px 78px;
+  }
+
+</style>
+
+
+
+
+
+<div style="position:relative;">
+
+
+<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
+<div class="col-13" style="margin:0;">&nbsp;</div><!-- provides top margin for content -->
+
+<h1 id="tos-header" style="margin-top:0">Tải xuống</h1>
+
+<p class="sdk-terms-intro">Trước khi cài đặt Android Studio hoặc bộ công cụ SDK độc lập,
+bạn phải đồng ý với các điều khoản và điều kiện sau.</p>
+
+<div class="sdk-terms" onfocus="this.blur()">
+<h2 class="norule">Điều khoản và Điều kiện</h2>
+Đây là Thỏa thuận Cấp phép cho Bộ công cụ Phát triển Phần mềm Android
+
+<h3>1. Introduction</h3>
+1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
+
+1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
+
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+
+
+<h3>2. Accepting this License Agreement</h3>
+2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
+
+2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
+
+2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
+
+2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
+
+
+<h3>3. SDK License from Google</h3>
+3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
+
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
+
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+
+3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+
+3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
+
+3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
+
+3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+
+3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
+
+
+<h3>4. Use of the SDK by You</h3>
+4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
+
+4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
+
+4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
+
+4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
+
+4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
+
+4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
+
+
+<h3>5. Your Developer Credentials</h3>
+5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
+
+
+<h3>6. Privacy and Information</h3>
+6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
+
+6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
+
+
+<h3>7. Third Party Applications</h3>
+7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
+
+7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
+
+7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
+
+
+<h3>8. Using Android APIs</h3>
+8.1 Google Data APIs
+
+8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
+
+8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
+
+
+<h3>9. Terminating this License Agreement</h3>
+9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
+
+9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
+
+9.3 Google may at any time, terminate the License Agreement with you if:
+(A) you have breached any provision of the License Agreement; or
+(B) Google is required to do so by law; or
+(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
+(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
+
+9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
+
+
+<h3>10. DISCLAIMER OF WARRANTIES</h3>
+10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+
+10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
+
+10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+
+
+<h3>11. LIMITATION OF LIABILITY</h3>
+11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
+
+<h3>12. Indemnification</h3>
+12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
+
+
+<h3>13. Changes to the License Agreement</h3>
+13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
+
+
+<h3>14. General Legal Terms</h3>
+14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
+
+14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
+
+14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
+
+14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
+
+14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
+
+14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
+
+14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+
+<em>November 20, 2015</em>
+</div>
+
+
+
+
+
+<div id="next-steps" style="display:none;position:absolute;width:inherit">
+  <p>Bạn chỉ còn vài bước nữa là được bắt đầu xây dựng ứng dụng cho Android!</p>
+  <p>Trong chốc lát, bạn sẽ được chuyển hướng đến
+  <a id="next-link" href="{@docRoot}sdk/installing/index.html">Cài đặt SDK Android</a>.</p>
+
+</div><!-- end next-steps -->
+
+
+
+<div id="sdk-terms-form">
+<p>
+<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+<label id="agreeLabel" for="agree">Tôi đã đọc và đồng ý với các điều khoản và điều kiện trên</label>
+</p>
+<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+</div>
+
+
+</div><!-- end TOS -->
+
+
+
+
+
+
+<div id="landing">
+
+<div class="col-13">&nbsp;</div><!-- provides top margin for content -->
+
+<img src="{@docRoot}images/tools/studio-hero.png" srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x" width="760" height="400" />
+
+<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
+
+<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>
+
+<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
+width: 400px;text-align: center;">IDE Android chính thức</p>
+
+<ul style="font-size:12px;line-height:19px;">
+<li>IDE Android Studio</li>
+<li>Bộ công cụ SDK Android</li>
+<li>Nền tảng Android 6.0 (Marshmallow)</li>
+<li>Ảnh hệ thống trình mô phỏng Android 6.0 cùng các API của Google</li>
+</ul>
+
+<a class="online landing-button green download-bundle-button"
+href="#Other" >Download Android Studio<br/><span class='small'></span></a>
+
+<!-- this appears when viewing the offline docs -->
+<p class="offline">
+Để tải Android Studio hoặc bộ công cụ SDK độc lập, hãy truy cập <a href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
+</p>
+</div>
+
+<ul>
+  <li><a href="#Requirements">Yêu cầu Hệ thống</a></li>
+  <li><a href="#Other">Tùy chọn Tải xuống Khác</a></li>
+  <li><a href="{@docRoot}sdk/installing/migrate.html">Di chuyển tới Android Studio</a></li>
+  <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform" target="_blank">Tham gia Khảo sát</a></li>
+</ul>
+
+
+
+
+
+<h2 class="feature norule" >Trình chỉnh sửa mã thông minh</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-code.png" srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Nằm ở cốt lõi của Android Studio là một trình biên tập mã thông minh có khả năng hoàn thành
+  mã, dựng lại và phân tích mã nâng cao.</p>
+  <p>Trình chỉnh sửa mã mạnh mẽ này sẽ giúp bạn trở thành một nhà phát triển ứng dụng Android năng suất hơn.</p>
+</div>
+
+
+
+
+
+<h2 class="feature norule">Các ví dụ mã và tích hợp GitHub</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-import.png" srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Các trình hướng dẫn dự án mới sẽ giúp bắt đầu một dự án mới dễ hơn bao giờ hết.</p>
+
+  <p>Bắt đầu các dự án bằng cách sử dụng mã mẫu cho các kiểu mẫu như ngăn kéo điều hướng và các trình tạo trang dạng xem,
+  và thậm chí còn nhập được các ví dụ mã của Google từ GitHub.</p>
+</div>
+
+
+
+
+<h2 class="feature norule">Phát triển ứng dụng đa màn hình</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-screens.png" srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Xây dựng ứng dụng cho điện thoại, máy tính bảng Android, Android Wear,
+  Android TV, Android Auto và Google Glass.</p>
+  <p>Với Dạng xem Dự án Android mới và hỗ trợ mô-đun trong Android Studio, việc
+  quản lý các dự án và tài nguyên ứng dụng trở nên dễ dàng hơn.
+</div>
+
+
+
+
+<h2 class="feature norule">Các thiết bị ảo cho tất cả hình dạng và kích cỡ</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-avds.png" srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Android Studio được cấu hình sẵn cùng một ảnh trình mô phỏng được tối ưu hóa.</p>
+  <p>Trình quản lý Thiết bị Ảo được cập nhật và hợp lý hoá sẽ cung cấp
+  các cấu hình thiết bị định nghĩa sẵn cho các thiết bị Android thông thường.</p>
+</div>
+
+
+
+
+<h2 class="feature norule">
+Phát triển xây dựng Android bằng Gradle</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-gradle.png" srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Tạo nhiều tệp APK cho ứng dụng Android của bạn với các tính năng khác nhau bằng cách sử dụng cùng dự án.</p>
+  <p>Quản lý phụ thuộc của ứng dụng bằng Maven.</p>
+  <p>Xây dựng APK từ Android Studio hoặc dòng lệnh.</p>
+</div>
+
+
+
+
+<h2 class="feature norule">Tìm hiểu thêm về Android Studio</h2>
+<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
+
+<a class="online landing-button green download-bundle-button" style="margin:0 0 40px 60px;float:right" href="">Download</a>
+
+  <ul>
+  <li>Xây dựng Phiên bản Cộng đồng IntelliJ IDEA, IDE Java phổ biến của JetBrains.</li>
+  <li>Hệ thống xây dựng linh hoạt dựa trên Gradle.</li>
+  <li>Xây dựng các biến thể và khởi tạo nhiều APK.</li>
+  <li>Hỗ trợ mẫu mở rộng cho các Dịch vụ của Google và các loại thiết bị khác nhau.</li>
+  <li>Trình chỉnh sửa bố trí phong phú hỗ trợ chỉnh sửa chủ đề.</li>
+  <li>Bộ công cụ Lint để giải quyết các vấn đề về hiệu năng, khả năng sử dụng, tính tương thích với phiên bản và các vấn đề khác.</li>
+  <li>ProGuard và các khả năng ký ứng dụng.</li>
+  <li>Hỗ trợ tích hợp cho Nền tảng Đám mây của Google, giúp dễ dàng tích hợp Google Cloud
+  Nhắn tin và Công cụ Ứng dụng.</li>
+  </ul>
+
+<p style="margin:0">
+Để biết thêm chi tiết về các tính năng có sẵn trong Android Studio,
+hãy đọc hướng dẫn <a href="{@docRoot}tools/studio/index.html">Nội dung Cơ bản về Android Studio</a>.</p>
+</div>
+
+
+<p>Nếu bạn đang sử dụng Eclipse với ADT, hãy lưu ý rằng hiện Android Studio là IDE chính thức
+cho Android, vì thế bạn nên di chuyển sang Android Studio để nhận tất cả cập nhật
+IDE mới nhất. Để được trợ giúp về di chuyển các dự án,
+hãy xem phần <a href="{@docRoot}sdk/installing/migrate.html">Di chuyển sang Android
+Studio</a>.</p>
+
+
+
+
+
+
+
+<h2 id="Requirements">Yêu cầu Hệ thống</h2>
+
+<h3>Windows</h3>
+
+<ul>
+<li>Microsoft&reg;  Windows&reg;  8/7/Vista/2003 (32 hoặc 64-bit)</li>
+<li>Tối thiểu 2 GB RAM, khuyến nghị 4 GB RAM</li>
+<li>Dung lượng trống đĩa cứng 400 MB</li>
+<li>Ít nhất 1 GB cho SDK Android, các ảnh hệ thống trình mô phỏng và bộ đệm ẩn</li>
+<li>Độ phân giải màn hình tối thiểu 1280 x 800</li>
+<li>Java Development Kit (JDK) 7 </li>
+<li>Tùy chọn dành cho trình mô phỏng tăng tốc: Bộ xử lý Intel® có hỗ trợ Intel® VT-x, Intel® EM64T
+(Intel® 64), và tính năng Execute Disable (XD) Bit</li>
+</ul>
+
+
+<h3>Mac OS X</h3>
+
+<ul>
+<li>Mac&reg;  OS X&reg;  10.8.5 hoặc cao hơn, lên tới 10.9 (Mavericks)</li>
+<li>Tối thiểu 2 GB RAM, khuyến nghị 4 GB RAM</li>
+<li>Dung lượng trống đĩa cứng 400 MB</li>
+<li>Ít nhất 1 GB cho SDK Android, các ảnh hệ thống trình mô phỏng và bộ đệm ẩn</li>
+<li>Độ phân giải màn hình tối thiểu 1280 x 800</li>
+<li>Java Runtime Environment (JRE) 6</li>
+<li>Java Development Kit (JDK) 7</li>
+<li>Tùy chọn dành cho trình mô phỏng tăng tốc: Bộ xử lý Intel® có hỗ trợ Intel® VT-x, Intel® EM64T
+(Intel® 64), và tính năng Execute Disable (XD) Bit</li>
+</ul>
+
+<p>Trên Mac OS, hãy chạy Android Studio bằng Java Runtime Environment (JRE) 6 để dựng
+phông chữ tối ưu. Khi đó, bạn có thể cấu hình dự án của mình để sử dụng Java Development Kit (JDK) 6 hoặc JDK 7.</p>
+
+
+
+<h3>Linux</h3>
+
+<ul>
+<li>Máy tính bàn GNOME hoặc KDE</li>
+<li>GNU C Library (glibc) 2.15 hoặc mới hơn</li>
+<li>Tối thiểu 2 GB RAM, khuyến nghị 4 GB RAM</li>
+<li>Dung lượng trống đĩa cứng 400 MB</li>
+<li>Ít nhất 1 GB cho SDK Android, các ảnh hệ thống trình mô phỏng và bộ đệm ẩn</li>
+<li>Độ phân giải màn hình tối thiểu 1280 x 800</li>
+<li>Oracle&reg;  Java Development Kit (JDK) 7 </li>
+</ul>
+<p>Được thử nghiệm trên Ubuntu&reg;  14.04, Trusty Tahr (có khả năng phân phối 64-bit khi chạy các ứng dụng
+32-bit).</p>
+
+
+
+
+<h2 id="Other" style="clear:left">Tùy chọn Tải xuống Khác</h2>
+
+<!-- alternative SDK options follows -->
diff --git a/docs/html-intl/intl/vi/sdk/installing/adding-packages.jd b/docs/html-intl/intl/vi/sdk/installing/adding-packages.jd
new file mode 100644
index 0000000..1c9072c
--- /dev/null
+++ b/docs/html-intl/intl/vi/sdk/installing/adding-packages.jd
@@ -0,0 +1,226 @@
+page.title=Thêm Gói SDK
+
+page.tags=trình quản lý sdk
+
+@jd:body
+
+<style>
+ol.large {
+  margin-left:0;
+}
+ol.large > li {
+  list-style-position: inside;
+  list-style-type:none;
+  margin:30px 0 0 0;
+  padding:30px 20px;
+  background:#eee;
+}
+ol.large > li:nth-child(odd) {
+}
+ol.large > li:before {
+  display:inline;
+  left:-40px;
+  float:left;
+  width:20px;
+  font-size:20px;
+  line-height:20px;
+}
+ol.large > li > h2 {
+  font-size:20px;
+  line-height:20px;
+  padding:0 0 0 20px;
+  margin:0 0 20px 0;
+  display:inline;
+  font-weight:normal;
+}
+ol.large > li:nth-child(1):before {
+  content:"1. ";
+}
+ol.large > li:nth-child(2):before {
+  content:"2. ";
+}
+ol.large > li:nth-child(3):before {
+  content:"3. ";
+}
+ol.large > li:nth-child(4):before {
+  content:"4. ";
+}
+ol.large > li:nth-child(5):before {
+  content:"5. ";
+}
+ol.large > li:nth-child(6):before {
+  content:"6. ";
+}
+</style>
+
+
+<p>
+Theo mặc định, SDK Android không bao gồm mọi thứ bạn cần để bắt đầu phát triển.
+SDK chia những công cụ, nền tảng và các thành phần khác vào các gói mà bạn có thể
+tải xuống nếu cần bằng cách sử dụng
+<a href="{@docRoot}tools/help/sdk-manager.html">Trình quản lý SDK Android</a>.
+Vì vậy, trước khi có thể bắt đầu, có một vài gói bạn nên thêm vào SDK Android của mình.</p>
+
+<p>Để bắt đầu thêm gói, hãy khởi chạy Trình quản lý SDK Android bằng một trong những cách sau:</p>
+<ul>
+  <li>Trong Android Studio, nhấp vào <strong>Trình quản lý SDK</strong>
+<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:17px" /> ở thanh công cụ.</li>
+  <li>Nếu bạn không đang sử dụng Android Studio:
+    <ul>
+      <li>Windows: Bấm đúp tệp <code>SDK Manager.exe</code> ở gốc của thư mục SDK
+  Android.</li>
+      <li>Mac/Linux: Mở một terminal và điều hướng đến thư mục <code>tools/</code> ở vị trí
+      nơi cài đặt SDK Android, rồi chạy <code>android sdk</code>.</li>
+    </ul>
+  </li>
+</ul>
+
+<p>Khi bạn mở Trình quản lý SDK lần đầu, một vài gói sẽ được chọn
+theo mặc định. Để nguyên những gói được chọn này, nhưng hãy chắc chắn bạn có mọi thứ mình cần
+để bắt đầu bằng cách làm theo những bước sau:</p>
+
+
+<ol class="large">
+<li>
+  <h2 id="GetTools" class="norule">Tải công cụ SDK mới nhất</h2>
+
+<img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
+
+  <p>Tối thiểu khi thiết đặt SDK Android,
+  bạn nên tải xuống những công cụ và nền tảng Android mới nhất:</p>
+  <ol>
+   <li>Mở thư mục Tools và chọn:
+     <ul>
+       <li><strong>Công cụ SDK Android</strong></li>
+       <li><strong>Công cụ Nền tảng SDK Android</strong></li>
+       <li><strong>Công cụ Xây dựng SDK Android</strong> (phiên bản mới nhất)</li>
+     </ul>
+   </li>
+   <li>Mở thư mục Android X.X đầu tiên (phiên bản mới nhất) và chọn:
+     <ul>
+      <li><strong>Nền tảng SDK</strong></li>
+      <li>Một ảnh hệ thống cho trình mô phỏng, chẳng hạn như <br>
+      <strong>Ảnh Hệ thống ARM EABI v7a</strong></li>
+     </ul>
+   </li>
+  </ol>
+</li>
+
+<li>
+  <h2 id="GetSupportLib" class="norule">Tải thư viện hỗ trợ cho các API bổ sung</h2>
+
+  <div class="sidebox">
+    <p>Phải có thư viện hỗ trợ đối với:</p>
+    <ul>
+      <li><a href="{@docRoot}wear/index.html">Android Wear</a></li>
+      <li><a href="{@docRoot}tv/index.html">Android TV</a></li>
+      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
+    </ul>
+
+    <p>Nó cũng cung cấp những API phổ biến sau:</p>
+    <ul>
+      <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">Ngăn kéo
+      điều hướng</a></li>
+      <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">Chế độ xem trượt nhanh</a></li>
+      <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">Thanh hành động
+      tương thích ngược</a></li>
+    </ul>
+  </div>
+
+  <p><a href="{@docRoot}tools/support-library/features.html">Thư viện Hỗ trợ Android</a>
+  cung cấp một tập API mở rộng tương thích với hầu hết các phiên bản của Android.</p>
+
+  <p>Mở thư mục <strong>Extras</strong> và chọn:</p>
+     <ul>
+       <li><strong>Kho Hỗ trợ Android</strong></li>
+       <li><strong>Thư viện Hỗ trợ Android</strong></li>
+     </ul>
+
+  <p>&nbsp;</p>
+  <p>&nbsp;</p>
+
+</li>
+
+
+<li>
+  <h2 id="GetGoogle" class="norule">Tải dịch vụ Google Play để có nhiều API hơn nữa</h2>
+
+  <div class="sidebox">
+
+    <p>Các API dịch vụ Google Play sẽ cung cấp nhiều tính năng và dịch vụ cho các ứng dụng Android
+    của bạn, chẳng hạn như:</p>
+    <ul>
+      <li><a href="{@docRoot}google/play-services/plus.html">Xác thực người dùng</a></li>
+      <li><a href="{@docRoot}google/play-services/maps.html">Google Maps</a></li>
+      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
+      <li><a href="{@docRoot}google/play-services/games.html">Thành tích và bảng xếp hạng
+      trò chơi</a></li>
+      <li><a href="{@docRoot}google/play-services/index.html">Và nhiều hơn nữa</a></li>
+    </ul>
+  </div>
+
+  <p>Để phát triển bằng các API của Google, bạn cần gói dịch vụ Google Play.</p>
+  <p>Mở thư mục <strong>Extras</strong> và chọn:</p>
+     <ul>
+       <li><strong>Kho Google</strong></li>
+       <li><strong>Dịch vụ Google Play</strong></li>
+     </ul>
+
+  <p class="note"><strong>Lưu ý:</strong> Các API dịch vụ Google Play không có sẵn trên tất cả
+  thiết bị dựa trên nền tảng Android, nhưng có sẵn trên tất cả thiết bị có Google Play Store. Để sử dụng những
+  API này trong trình mô phỏng Android, bạn cũng phải cài đặt ảnh hệ thống <strong>Google API</strong>
+  từ thư mục Android X.X mới nhất trong Trình quản lý SDK.</p>
+</li>
+
+
+<li>
+  <h2 id="Install" class="norule">Cài đặt gói</h2>
+  <p>Sau khi bạn đã chọn tất cả gói mong muốn, hãy tiếp tục cài đặt:</p>
+  <ol>
+   <li>Bấm <strong>Cài đặt X gói</strong>.</li>
+   <li>Trong cửa sổ tiếp theo, bấm đúp vào tên của từng gói ở bên trái
+   để chấp nhận thỏa thuận cấp phép cho từng gói.</li>
+   <li>Bấm <strong>Cài đặt</strong>.</li>
+  </ol>
+  <p>Tiến trình tải xuống được hiện ở dưới cùng của cửa sổ Trình quản lý SDK.
+  <strong>Không được thoát Trình quản lý SDK</strong> nếu không nó sẽ hủy bỏ việc tải xuống.</p>
+</li>
+
+<li>
+  <h2 id="Build" class="norule">Xây dựng một thứ gì đó!</h2>
+
+<p>Với những gói trên có trong SDK Android của bạn, giờ bạn đã sẵn sàng để xây dựng ứng dụng
+cho Android. Khi có sẵn các công cụ mới và API khác, chỉ cần khởi chạy Trình quản lý SDK
+  để tải xuống các gói mới cho SDK của bạn.</p>
+
+<p>Sau đây là một vài tùy chọn về cách bạn nên tiến hành:</p>
+
+<div class="cols" style="padding:10px 0">
+<div class="col-4">
+<h3>Bắt đầu</h3>
+<p>Nếu bạn mới làm quen với phát triển Android, hãy tìm hiểu những nội dung cơ bản của ứng dụng Androi bằng cách làm theo
+hướng dẫn <strong><a href="{@docRoot}training/basics/firstapp/index.html">Xây dựng Ứng dụng Đầu tiên của bạn</a></strong>.</p>
+
+</div>
+<div class="col-4 box">
+<h3>Xây dựng cho thiết bị đeo được</h3>
+<p>Nếu bạn sẵn sàng bắt đầu xây dựng ứng dụng cho thiết bị đeo được Android, hãy xem hướng dẫn
+<strong><a href="{@docRoot}wear/preview/start.html">Xây dựng Ứng dụng cho Android Wear</a></strong>.</p>
+
+</div>
+<div class="col-4 box">
+<h3>Sử dụng API của Google</h3>
+<p>Để bắt đầu sử dụng các API của Google, chẳng hạn như các dịch vụ Bản đồ hoặc
+Chơi Trò chơi, hãy xem hướng dẫn
+<strong><a href="{@docRoot}google/play-services/setup.html">Thiết đặt Dịch vụ Google Play
+</a></strong>.</p>
+
+</div>
+</div><!-- end cols -->
+
+
+</li>
+
+</ol>
+
+
diff --git a/docs/html-intl/intl/vi/training/material/animations.jd b/docs/html-intl/intl/vi/training/material/animations.jd
new file mode 100644
index 0000000..e93c99d
--- /dev/null
+++ b/docs/html-intl/intl/vi/training/material/animations.jd
@@ -0,0 +1,550 @@
+page.title=Định nghĩa Hoạt hình Tùy chỉnh
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Bài học này hướng dẫn bạn cách</h2>
+<ol>
+  <li><a href="#Touch">Tùy chỉnh Phản hồi Chạm</a></li>
+  <li><a href="#Reveal">Sử dụng Hiệu ứng Lộ ra</a></li>
+  <li><a href="#Transitions">Tùy chỉnh Chuyển tiếp Hoạt động</a></li>
+  <li><a href="#ViewState">Tạo Hiệu ứng Hoạt hình Thay đổi Trạng thái Xem</a></li>
+  <li><a href="#AnimVector">Tạo Hiệu ứng Hoạt hình Nội dung vẽ được Véc-tơ</a></li>
+</ol>
+<h2>Bạn cũng nên đọc</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Đặc tả phong cách Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design trên Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Hoạt hình theo phong cách material design phản hồi hành động của người dùng và cung cấp 
+tính liên tục trực quan khi người dùng tương tác với ứng dụng của bạn. Giao diện material cung cấp một số hoạt hình
+mặc định cho các nút và chuyển tiếp hoạt động, và Android 5.0 (API mức 21) và cao hơn cho phép bạn tùy chỉnh
+những hoạt hình này và tạo các hoạt hình mới:</p>
+
+<ul>
+<li>Phản hồi chạm</li>
+<li>Lộ ra Vòng tròn</li>
+<li>Chuyển tiếp hoạt động</li>
+<li>Chuyển động cong</li>
+<li>Thay đổi trạng thái xem</li>
+</ul>
+
+
+<h2 id="Touch">Tùy chỉnh Phản hồi Chạm</h2>
+
+<p>Phản hồi chạm trong Material Design đưa ra một xác nhận trực quan tức thời tại
+điểm tiếp xúc khi người dùng tương tác với các phần tử UI. Hoạt hình phản hồi chạm mặc định
+cho nút sẽ sử dụng lớp {@link android.graphics.drawable.RippleDrawable} mới để chuyển tiếp
+giữa các trạng thái khác nhau bằng hiệu ứng gợn sóng.</p>
+
+<p>Trong hầu hết trường hợp, bạn nên áp dụng tính năng này trong tệp XML dạng xem của mình bằng cách chỉ định nền
+dạng xem là:</p>
+
+<ul>
+<li><code>?android:attr/selectableItemBackground</code> cho gợn sóng có giới hạn.</li>
+<li><code>?android:attr/selectableItemBackgroundBorderless</code> cho gợn sóng lan ra ngoài
+dạng xem. Hiệu ứng sẽ được vẽ lên và được giới hạn bởi dạng xem mẹ gần nhất có nền
+không rỗng.</li>
+</ul>
+
+<p class="note"><strong>Lưu ý:</strong> <code>selectableItemBackgroundBorderless</code> là một thuộc tính
+mới được giới thiệu trong API mức 21.</p>
+
+
+<p>Hoặc, bạn có thể định nghĩa {@link android.graphics.drawable.RippleDrawable}
+làm tài nguyên XML bằng cách sử dụng phần tử <code>ripple</code>.</p>
+
+<p>Bạn có thể gán một màu cho các đối tượng {@link android.graphics.drawable.RippleDrawable}. Để thay đổi
+màu phản hồi chạm mặc định, hãy sử dụng thuộc tính <code>android:colorControlHighlight</code>
+của chủ đề.</p>
+
+<p>Để biết thêm thông tin, hãy xem tài liệu tham khảo API cho lớp {@link
+android.graphics.drawable.RippleDrawable}.</p>
+
+
+<h2 id="Reveal">Sử dụng Hiệu ứng Lộ ra</h2>
+
+<p>Hoạt hình lộ ra đảm bảo tính liên tục trực quan cho người dùng khi bạn hiện hoặc ẩn một nhóm phần tử
+UI. Phương thức {@link android.view.ViewAnimationUtils#createCircularReveal
+ViewAnimationUtils.createCircularReveal()} cho phép bạn tạo hiệu ứng hoạt hình một vòng tròn cắt hình
+để lộ ra hoặc ẩn một dạng xem.</p>
+
+<p>Để lộ ra một dạng xem ẩn trước đó bằng hiệu ứng này:</p>
+
+<pre>
+// previously invisible view
+View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the final radius for the clipping circle
+int finalRadius = Math.max(myView.getWidth(), myView.getHeight());
+
+// create the animator for this view (the start radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);
+
+// make the view visible and start the animation
+myView.setVisibility(View.VISIBLE);
+anim.start();
+</pre>
+
+<p>Để ẩn một dạng xem hiển thị trước đó bằng hiệu ứng này:</p>
+
+<pre>
+// previously visible view
+final View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the initial radius for the clipping circle
+int initialRadius = myView.getWidth();
+
+// create the animation (the final radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0);
+
+// make the view invisible when the animation is done
+anim.addListener(new AnimatorListenerAdapter() {
+    &#64;Override
+    public void onAnimationEnd(Animator animation) {
+        super.onAnimationEnd(animation);
+        myView.setVisibility(View.INVISIBLE);
+    }
+});
+
+// start the animation
+anim.start();
+</pre>
+
+
+<h2 id="Transitions">Tùy chỉnh Chuyển tiếp Hoạt động</h2>
+
+<!-- shared transition video -->
+<div style="width:290px;margin-left:35px;float:right">
+  <div class="framed-nexus5-port-span-5">
+  <video class="play-on-hover" autoplay="">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.mp4">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.webm">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.ogv">
+  </video>
+  </div>
+  <div style="font-size:10pt;margin-left:20px;margin-bottom:30px">
+    <p class="img-caption" style="margin-top:3px;margin-bottom:10px"><strong>Hình 1</strong> - Chuyển tiếp
+    với những phần tử chung.</p>
+    <em>Để phát lại phim, nhấp vào màn hình thiết bị</em>
+  </div>
+</div>
+
+<p>Chuyển tiếp hoạt động trong các ứng dụng theo phong cách material design cung cấp kết nối trực quan giữa các trạng thái khác nhau
+thông qua chuyển động và chuyển đổi giữa những phần tử hay dùng. Bạn có thể quy định hoạt hình tùy chỉnh cho
+các chuyển tiếp ra vào và chuyển tiếp phần tử chung giữa các hoạt động.</p>
+
+<ul>
+<li>Chuyển tiếp <strong>vào</strong> xác định các dạng xem trong một hoạt động sẽ vào cảnh đó như thế nào.
+Ví dụ, trong chuyển tiếp vào dạng <em>nổ tung</em>, dạng xem sẽ vào cảnh từ bên ngoài
+và bay về phía chính giữa màn hình.</li>
+
+<li>Chuyển tiếp <strong>ra</strong> xác định các dạng xem trong một hoạt động sẽ ra khỏi cảnh như thế nào. Ví
+ dụ, trong chuyển tiếp ra kiểu <em>nổ tung</em>, dạng xem sẽ ra khỏi cảnh từ
+trung tâm.</li>
+
+<li>Chuyển tiếp <strong>phần tử chung</strong> xác định các dạng xem chung giữa hai hoạt động
+sẽ chuyển tiếp như thế nào giữa những hoạt động này. Ví dụ, nếu hai hoạt động có cùng
+hình ảnh ở các vị trí và kích cỡ khác nhau, chuyển tiếp phần tử chung <em>changeImageTransform</em> 
+sẽ thể hiện và co giãn hình ảnh một cách mượt mà giữa những hoạt động này.</li>
+</ul>
+
+<p>Android 5.0 (API mức 21) hỗ trợ những chuyển tiếp ra vào sau:</p>
+
+<ul>
+<li><em>nổ tung</em> - Di chuyển các dạng xem vào hoặc ra khỏi chính giữa cảnh.</li>
+<li><em>trượt</em> - Di chuyển các dạng xem vào hoặc ra từ một trong các mép của cảnh.</li>
+<li><em>mờ dần</em> - Thêm hoặc gỡ bỏ dạng xem khỏi cảnh bằng cách thay đổi độ mờ đục của nó.</li>
+</ul>
+
+<p>Bất cứ chuyển tiếp nào mở rộng lớp {@link android.transition.Visibility} đều được hỗ trợ
+như một chuyển tiếp vào hoặc ra. Để biết thêm thông tin, hãy xem tài liệu tham khảo API cho lớp
+{@link android.transition.Transition}.</p>
+
+<p>Android 5.0 (API mức 21) cũng hỗ trợ những chuyển tiếp phần tử chung này:</p>
+
+<ul>
+<li><em>changeBounds</em> - Tạo hiệu ứng hoạt hình các thay đổi trong giới hạn bố trí của dạng xem mục tiêu.</li>
+<li><em>changeClipBounds</em> - Tạo hiệu ứng hoạt hình các thay đổi trong giới hạn cắt hình của dạng xem mục tiêu.</li>
+<li><em>changeTransform</em> - Tạo hiệu ứng hoạt hình các thay đổi về co giãn và xoay dạng xem mục tiêu.</li>
+<li><em>changeImageTransform</em> - Tạo hiệu ứng hoạt hình các thay đổi về kích cỡ và co giãn của ảnh mục tiêu.</li>
+</ul>
+
+<p>Khi bạn cho phép chuyển tiếp hoạt động trong ứng dụng của mình, chuyển tiếp mờ dần chéo cross-fading
+mặc định sẽ được kích hoạt giữa các hoạt động ra vào.</p>
+
+<img src="{@docRoot}training/material/images/SceneTransition.png" alt="" width="600" height="405" style="margin-top:20px" />
+<p class="img-caption">
+  <strong>Hình 2</strong> - Chuyển tiếp cảnh với một phần tử chung.
+</p>
+
+<h3>Quy định chuyển tiếp tùy chỉnh</h3>
+
+<p>Trước tiên, cho phép chuyển tiếp nội dung cửa sổ bằng thuộc tính <code>android:windowContentTransitions</code>
+khi bạn định nghĩa một kiểu kế thừa từ chủ đề material. Bạn cũng có thể quy định chuyển tiếp
+ra, vào và phần tử chung trong định nghĩa kiểu của mình:</p>
+
+<pre>
+&lt;style name="BaseAppTheme" parent="android:Theme.Material">
+  &lt;!-- enable window content transitions -->
+  &lt;item name="android:windowContentTransitions">true&lt;/item>
+
+  &lt;!-- specify enter and exit transitions -->
+  &lt;item name="android:windowEnterTransition">@transition/explode&lt;/item>
+  &lt;item name="android:windowExitTransition">@transition/explode&lt;/item>
+
+  &lt;!-- specify shared element transitions -->
+  &lt;item name="android:windowSharedElementEnterTransition">
+    &#64;transition/change_image_transform&lt;/item>
+  &lt;item name="android:windowSharedElementExitTransition">
+    &#64;transition/change_image_transform&lt;/item>
+&lt;/style>
+</pre>
+
+<p>Chuyển tiếp <code>change_image_transform</code> trong ví dụ này được định nghĩa như sau:</p>
+
+<pre>
+&lt;!-- res/transition/change_image_transform.xml -->
+&lt;!-- (see also Shared Transitions below) -->
+&lt;transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;changeImageTransform/>
+&lt;/transitionSet>
+</pre>
+
+<p>Phần tử <code>changeImageTransform</code> tương ứng với lớp
+{@link android.transition.ChangeImageTransform}. Để biết thêm thông tin, hãy xem tài liệu tham khảo API
+cho {@link android.transition.Transition}.</p>
+
+<p>Thay vào đó, để cho phép chuyển tiếp nội dung cửa sổ trong mã của bạn, hãy gọi phương thức
+{@link android.view.Window#requestFeature Window.requestFeature()}:</p>
+
+<pre>
+// inside your activity (if you did not enable transitions in your theme)
+getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+
+// set an exit transition
+getWindow().setExitTransition(new Explode());
+</pre>
+
+<p>Để quy định chuyển tiếp trong mã của bạn, hãy gọi những phương thức này bằng đối tượng {@link
+android.transition.Transition}:</p>
+
+<ul>
+  <li>{@link android.view.Window#setEnterTransition Window.setEnterTransition()}</li>
+  <li>{@link android.view.Window#setExitTransition Window.setExitTransition()}</li>
+  <li>{@link android.view.Window#setSharedElementEnterTransition
+      Window.setSharedElementEnterTransition()}</li>
+  <li>{@link android.view.Window#setSharedElementExitTransition
+      Window.setSharedElementExitTransition()}</li>
+</ul>
+
+<p>Phương thức {@link android.view.Window#setExitTransition setExitTransition()} và {@link
+android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} định nghĩa
+chuyển tiếp ra cho hoạt động gọi. Phương thức {@link android.view.Window#setEnterTransition
+setEnterTransition()} và {@link android.view.Window#setSharedElementEnterTransition
+setSharedElementEnterTransition()} định nghĩa chuyển tiếp vào cho hoạt động được gọi.</p>
+
+<p>Để có đầy đủ hiệu ứng của một chuyển tiếp, bạn phải cho phép chuyển tiếp nội dung cửa sổ trên cả hoạt động
+gọi và được gọi. Nếu không, hoạt động gọi sẽ bắt đầu chuyển tiếp ra,
+nhưng khi đó bạn sẽ thấy chuyển tiếp cửa sổ (như co giãn và mờ dần).</p>
+
+<p>Để bắt đầu một chuyển tiếp vào ngay khi có thể, hãy sử dụng phương thức
+{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}
+trên hoạt động được gọi. Nó cho phép bạn có chuyển tiếp vào ấn tượng hơn.</p>
+
+<h3>Bắt đầu một hoạt động bằng chuyển tiếp</h3>
+
+<p>Nếu bạn cho phép chuyển tiếp và đặt chuyển tiếp ra cho một hoạt động, chuyển tiếp sẽ được
+kích hoạt khi bạn khởi chạy một hoạt động khác như sau:</p>
+
+<pre>
+startActivity(intent,
+              ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
+</pre>
+
+<p>Nếu bạn đặt một chuyển tiếp vào cho hoạt động thứ hai, chuyển tiếp này cũng được kích hoạt khi hoạt động
+bắt đầu. Để vô hiệu hoá chuyển tiếp khi bạn bắt đầu một hoạt động khác, hãy cung cấp
+một nhóm tùy chọn <code>null</code>.</p>
+
+<h3>Bắt đầu một hoạt động bằng một phần tử chung</h3>
+
+<p>Để tạo một hoạt hình chuyển tiếp màn hình giữa hai hoạt động có một phần tử chung:</p>
+
+<ol>
+<li>Cho phép chuyển tiếp nội dung cửa sổ trong chủ đề của bạn.</li>
+<li>Quy định một chuyển tiếp phần tử chung trong kiểu của bạn.</li>
+<li>Định nghĩa chuyển tiếp của bạn dưới dạng một tài nguyên XML.</li>
+<li>Gán một tên chung cho các phần tử chung ở cả hai bố trí bằng thuộc tính
+    <code>android:transitionName</code>.</li>
+<li>Sử dụng phương thức {@link android.app.ActivityOptions#makeSceneTransitionAnimation
+ActivityOptions.makeSceneTransitionAnimation()}.</li>
+</ol>
+
+<pre>
+// get the element that receives the click event
+final View imgContainerView = findViewById(R.id.img_container);
+
+// get the common element for the transition in this activity
+final View androidRobotView = findViewById(R.id.image_small);
+
+// define a click listener
+imgContainerView.setOnClickListener(new View.OnClickListener() {
+    &#64;Override
+    public void onClick(View view) {
+        Intent intent = new Intent(this, Activity2.class);
+        // create the transition animation - the images in the layouts
+        // of both activities are defined with android:transitionName="robot"
+        ActivityOptions options = ActivityOptions
+            .makeSceneTransitionAnimation(this, androidRobotView, "robot");
+        // start the new activity
+        startActivity(intent, options.toBundle());
+    }
+});
+</pre>
+
+<p>Đối với các dạng xem động dùng chung mà bạn khởi tạo trong mã của mình, hãy sử dụng phương thức
+{@link android.view.View#setTransitionName View.setTransitionName()} để quy định một
+tên phần tử chung trong cả hai hoạt động.</p>
+
+<p>Để đảo ngược hoạt hình chuyển tiếp cảnh khi bạn kết thúc hoạt động thứ hai, hãy gọi phương thức
+{@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()}
+thay vì {@link android.app.Activity#finish Activity.finish()}.</p>
+
+<h3>Bắt đầu một hoạt động bằng nhiều phần tử chung</h3>
+
+<p>Để tạo một hoạt hình chuyển tiếp cảnh giữa hai hoạt động có nhiều hơn một phần tử
+chung, hãy định nghĩa các phần tử chung trong cả hai bố trí bằng thuộc tính <code>android:transitionName</code>
+ (hoặc sử dụng phương thức {@link android.view.View#setTransitionName View.setTransitionName()} 
+trong cả hai hoạt động), và tạo một đối tượng {@link android.app.ActivityOptions} như sau:</p>
+
+<pre>
+ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
+        Pair.create(view1, "agreedName1"),
+        Pair.create(view2, "agreedName2"));
+</pre>
+
+
+<h2 id="CurvedMotion">Sử dụng Chuyển động Cong</h2>
+
+<p>Hoạt hình theo phong cách material design phụ thuộc vào đường cong làm mẫu hình nội suy thời gian
+và chuyển động không gian. Với Android 5.0 (API mức 21) trở lên, bạn có thể định nghĩa đường cong định thời tùy chỉnh và
+mẫu hình chuyển động cong cho hoạt hình.</p>
+
+<p>Lớp {@link android.view.animation.PathInterpolator} là một hàm nội suy mới dựa trên đường cong
+Bézier hoặc đối tượng {@link android.graphics.Path}. Hàm nội suy này quy định một đường cong chuyển động
+trong một hình vuông 1x1, với các điểm neo tại (0,0) và (1,1) cùng các điểm kiểm soát được quy định bằng cách sử dụng
+các tham đối của hàm dựng. Bạn cũng có thể định nghĩa một hàm nội suy đường dẫn dưới dạng tài nguyên XML:</p>
+
+<pre>
+&lt;pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:controlX1="0.4"
+    android:controlY1="0"
+    android:controlX2="1"
+    android:controlY2="1"/>
+</pre>
+
+<p>Hệ thống cung cấp tài nguyên XML cho ba đường cong cơ bản trong đặc tả
+material design:</p>
+
+<ul>
+  <li><code>&#64;interpolator/fast_out_linear_in.xml</code></li>
+  <li><code>&#64;interpolator/fast_out_slow_in.xml</code></li>
+  <li><code>&#64;interpolator/linear_out_slow_in.xml</code></li>
+</ul>
+
+<p>Bạn có thể chuyển một đối tượng {@link android.view.animation.PathInterpolator} tới phương thức {@link
+android.animation.Animator#setInterpolator Animator.setInterpolator()}.</p>
+
+<p>Lớp {@link android.animation.ObjectAnimator} có các hàm dựng mới cho phép bạn tạo hiệu ứng hoạt hình
+cho các tọa độ dọc theo một đường dẫn bằng hai hoặc nhiều thuộc tính đồng thời. Ví dụ, trình tạo hoạt hình sau
+sử dụng một đối tượng {@link android.graphics.Path} để tạo hiệu ứng hoạt hình cho thuộc tính X và Y của một dạng xem:</p>
+
+<pre>
+ObjectAnimator mAnimator;
+mAnimator = ObjectAnimator.ofFloat(view, View.X, View.Y, path);
+...
+mAnimator.start();
+</pre>
+
+
+<h2 id="ViewState">Tạo Hiệu ứng Hoạt hình Thay đổi Trạng thái Xem</h2>
+
+<p>Lớp {@link android.animation.StateListAnimator} cho phép bạn định nghĩa trình tạo hoạt hình để chạy khi
+trạng thái của dạng xem thay đổi. Ví dụ sau cho biết cách định nghĩa một {@link
+android.animation.StateListAnimator}  dưới dạng tài nguyên XML:</p>
+
+<pre>
+&lt;!-- animate the translationZ property of a view when pressed -->
+&lt;selector xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;item android:state_pressed="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="@android:integer/config_shortAnimTime"
+        android:valueTo="2dp"
+        android:valueType="floatType"/>
+        &lt;!-- you could have other objectAnimator elements
+             here for "x" and "y", or other properties -->
+    &lt;/set>
+  &lt;/item>
+  &lt;item android:state_enabled="true"
+    android:state_pressed="false"
+    android:state_focused="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="100"
+        android:valueTo="0"
+        android:valueType="floatType"/>
+    &lt;/set>
+  &lt;/item>
+&lt;/selector>
+</pre>
+
+<p>Để gắn kèm hoạt hình trạng thái dạng xem tùy chỉnh vào một dạng xem, hãy định nghĩa một trình tạo hoạt hình bằng cách sử dụng phần tử
+<code>selector</code> trong một tệp tài nguyên XML như trong ví dụ này, và gán nó cho dạng xem
+của bạn bằng thuộc tính <code>android:stateListAnimator</code>. Để gán một trình tạo hoạt hình danh sách trạng thái
+cho một dạng xem trong mã của bạn, hãy sử dụng phương thức {@link android.animation.AnimatorInflater#loadStateListAnimator
+AnimationInflater.loadStateListAnimator()} và gán trình tạo hoạt hình cho dạng xem của bạn bằng phương thức
+{@link android.view.View#setStateListAnimator View.setStateListAnimator()}.</p>
+
+<p>Khi chủ đề của bạn mở rộng ra chủ đề material, các nút sẽ có hoạt hình Z theo mặc định. Để tránh hành vi
+này trong nút của bạn, hãy đặt thuộc tính <code>android:stateListAnimator</code> thành
+<code>@null</code>.</p>
+
+<p>Lớp {@link android.graphics.drawable.AnimatedStateListDrawable} cho phép bạn tạo các nội dung vẽ được
+để hiển thị hoạt hình giữa các thay đổi trạng thái của dạng xem được liên kết. Một số widget hệ thống trong
+Android 5.0 sử dụng những hoạt hình này theo mặc định. Ví dụ sau cho biết cách
+cách định nghĩa {@link android.graphics.drawable.AnimatedStateListDrawable} dưới dạng tài nguyên XML:</p>
+
+<pre>
+&lt;!-- res/drawable/myanimstatedrawable.xml -->
+&lt;animated-selector
+    xmlns:android="http://schemas.android.com/apk/res/android">
+
+    &lt;!-- provide a different drawable for each state-->
+    &lt;item android:id="@+id/pressed" android:drawable="@drawable/drawableP"
+        android:state_pressed="true"/>
+    &lt;item android:id="@+id/focused" android:drawable="@drawable/drawableF"
+        android:state_focused="true"/>
+    &lt;item android:id="@id/default"
+        android:drawable="@drawable/drawableD"/>
+
+    &lt;!-- specify a transition -->
+    &lt;transition android:fromId="@+id/default" android:toId="@+id/pressed">
+        &lt;animation-list>
+            &lt;item android:duration="15" android:drawable="@drawable/dt1"/>
+            &lt;item android:duration="15" android:drawable="@drawable/dt2"/>
+            ...
+        &lt;/animation-list>
+    &lt;/transition>
+    ...
+&lt;/animated-selector>
+</pre>
+
+
+<h2 id="AnimVector">Tạo Hiệu ứng Hoạt hình Nội dung vẽ được Véc-tơ</h2>
+
+<p><a href="{@docRoot}training/material/drawables.html#VectorDrawables">Nội dung vẽ được Véc-tơ</a> sẽ co giãn được
+mà không làm mất độ sắc nét. Lớp {@link android.graphics.drawable.AnimatedVectorDrawable}
+cho phép bạn tạo hiệu ứng hoạt hình các thuộc tính của nội dung vẽ được véc-tơ.</p>
+
+<p>Thường thì bạn định nghĩa nội dung vẽ được véc-tơ hoạt hình theo ba tệp XML:</p>
+
+<ul>
+<li>Nội dung vẽ được véc-tơ với phần tử <code>&lt;vector&gt;</code> trong
+<code>res/drawable/</code></li>
+<li>Nội dung vẽ được véc-tơ hoạt hình với phần tử <code>&lt;animated-vector&gt;</code> trong
+<code>res/drawable/</code></li>
+<li>Một hoặc nhiều trình tạo hoạt hình đối tượng với phần tử <code>&lt;objectAnimator&gt;</code> trong
+<code>res/anim/</code></li>
+</ul>
+
+<p>Nội dung vẽ được véc-tơ hoạt hình có thể tạo hiệu ứng hoạt hình các thuộc tính của phần tử <code>&lt;group&gt;</code> và
+<code>&lt;path&gt;</code>. Phần tử <code>&lt;group&gt;</code> định nghĩa một bộ
+đường dẫn hoặc nhóm phụ và phần tử <code>&lt;path&gt;</code> định nghĩa các đường dẫn sẽ được vẽ.</p>
+
+<p>Khi định nghĩa một nội dung vẽ được véc-tơ mà bạn muốn tạo hiệu ứng hoạt hình, hãy sử dụng thuộc tính <code>android:name</code>
+để gán một tên duy nhất cho các nhóm và đường dẫn, sao cho bạn có thể tham chiếu tới chúng từ các định nghĩa
+trình tạo hoạt hình của mình. Ví dụ:</p>
+
+<pre>
+&lt;!-- res/drawable/vectordrawable.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="64dp"
+    android:width="64dp"
+    android:viewportHeight="600"
+    android:viewportWidth="600">
+    &lt;group
+        <strong>android:name="rotationGroup"</strong>
+        android:pivotX="300.0"
+        android:pivotY="300.0"
+        android:rotation="45.0" >
+        &lt;path
+            <strong>android:name="v"</strong>
+            android:fillColor="#000000"
+            android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
+    &lt;/group>
+&lt;/vector>
+</pre>
+
+<p>Định nghĩa nội dung vẽ được véc-tơ hoạt hình sẽ tham chiếu tới các nhóm và đường dẫn trong nội dung vẽ được véc-tơ theo
+tên của chúng:</p>
+
+<pre>
+&lt;!-- res/drawable/animvectordrawable.xml -->
+&lt;animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+  android:drawable="@drawable/vectordrawable" >
+    &lt;target
+        android:name="rotationGroup"
+        android:animation="@anim/rotation" />
+    &lt;target
+        android:name="v"
+        android:animation="@anim/path_morph" />
+&lt;/animated-vector>
+</pre>
+
+<p>Định nghĩa hoạt hình biểu diễn các đối tượng {@link android.animation.ObjectAnimator} hoặc {@link
+android.animation.AnimatorSet}. Trình tạo hoạt hình đầu tiên trong ví dụ này sẽ xoay nhóm
+đối tượng 360 độ:</p>
+
+<pre>
+&lt;!-- res/anim/rotation.xml -->
+&lt;objectAnimator
+    android:duration="6000"
+    android:propertyName="rotation"
+    android:valueFrom="0"
+    android:valueTo="360" />
+</pre>
+
+<p>Trình tạo hoạt hình thứ hai trong ví dụ này sẽ đổi dạng đường dẫn của nội dung vẽ được véc-tơ từ hình này sang
+hình khác. Cả hai đường dẫn đều phải tương thích với việc đổi dạng: chúng phải có cùng số lệnh
+và cùng số lượng tham số cho từng lệnh.</p>
+
+<pre>
+&lt;!-- res/anim/path_morph.xml -->
+&lt;set xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;objectAnimator
+        android:duration="3000"
+        android:propertyName="pathData"
+        android:valueFrom="M300,70 l 0,-70 70,70 0,0   -70,70z"
+        android:valueTo="M300,70 l 0,-70 70,0  0,140 -70,0 z"
+        android:valueType="pathType" />
+&lt;/set>
+</pre>
+
+<p>Để biết thêm thông tin, hãy xem tài liệu tham khảo API cho {@link
+android.graphics.drawable.AnimatedVectorDrawable}.</p>
diff --git a/docs/html-intl/intl/vi/training/material/compatibility.jd b/docs/html-intl/intl/vi/training/material/compatibility.jd
new file mode 100644
index 0000000..65e8131
--- /dev/null
+++ b/docs/html-intl/intl/vi/training/material/compatibility.jd
@@ -0,0 +1,168 @@
+page.title=Duy trì Tính tương thích
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Bài học này hướng dẫn bạn cách</h2>
+<ol>
+  <li><a href="#Theme">Định nghĩa Kiểu Thay thế</a></li>
+  <li><a href="#Layouts">Cung cấp Bố trí Thay thế</a></li>
+  <li><a href="#SupportLib">Sử dụng Thư viện Hỗ trợ</a></li>
+  <li><a href="#CheckVersion">Kiểm tra Phiên bản Hệ thống</a></li>
+</ol>
+<h2>Bạn cũng nên đọc</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Đặc tả phong cách Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design trên Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Một số tính năng của Material Design như chủ đề Material và chuyển tiếp hoạt động tùy chỉnh
+chỉ sẵn có trên Android 5.0 (API mức 21) trở lên. Tuy nhiên, bạn có thể thiết kế ứng dụng của mình để tận dụng
+những tính năng này khi chạy trên thiết bị hỗ trợ material design mà vẫn tương thích
+với thiết bị đang chạy các bản phát hành Android trước đây.</p>
+
+
+<h2 id="Theme">Định nghĩa Kiểu Thay thế</h2>
+
+<p>Bạn có thể cấu hình ứng dụng của mình để sử dụng chủ đề material trên những thiết bị hỗ trợ và chuyển về
+chủ đề cũ hơn trên những thiết bị đang chạy phiên bản Android cũ hơn:</p>
+
+<ol>
+<li>Định nghĩa một chủ đề kế thừa từ một chủ đề cũ hơn (như Holo) trong
+    <code>res/values/styles.xml</code>.</li>
+<li>Định nghĩa một chủ đề với cùng tên và kế thừa chủ đề material trong
+    <code>res/values-v21/styles.xml</code>.</li>
+<li>Đặt chủ đề này làm chủ đề cho ứng dụng của bạn trong tệp bản kê khai.</li>
+</ol>
+
+<p class="note"><strong>Lưu ý:</strong>
+Nếu ứng dụng của bạn sử dụng chủ đề material nhưng không cung cấp chủ đề thay thế bằng cách này,
+ứng dụng của bạn sẽ không chạy trên phiên bản Android trước 5.0.
+</p>
+
+
+<h2 id="Layouts">Cung cấp Bố trí Thay thế</h2>
+
+<p>Nếu những bố trí mà bạn thiết kế theo hướng dẫn về material design không sử dụng bất cứ
+thuộc tính XML mới nào được giới thiệu trong Android 5.0 (API mức 21), chúng sẽ hoạt động trên các phiên bản
+Android trước đó. Nếu không, bạn có thể cung cấp bố trí thay thế. Bạn cũng có thể cung cấp
+bố trí thay thế để tùy chỉnh diện mạo ứng dụng của mình trên các phiên bản Android cũ hơn.</p>
+
+<p>Tạo tệp bố trí của bạn cho Android 5.0 (API mức 21) bên trong <code>res/layout-v21/</code> và
+tệp bố trí thay thế của bạn cho các phiên bản Android cũ hơn trong <code>res/layout/</code>.
+Ví dụ, <code>res/layout/my_activity.xml</code> là một bố trí thay thế cho
+<code>res/layout-v21/my_activity.xml</code>.</p>
+
+<p>Để tránh lặp mã, hãy định nghĩa kiểu của bạn bên trong <code>res/values/</code>, sửa đổi
+các kiểu trong <code>res/values-v21/</code> cho các API mới và sử dụng kế thừa kiểu, định nghĩa
+kiểu cơ bản trong <code>res/values/</code> và kế thừa từ những kiểu trong <code>res/values-v21/</code>.</p>
+
+
+<h2 id="SupportLib">Sử dụng Thư viện Hỗ trợ</h2>
+
+<p><a href="{@docRoot}tools/support-library/features.html#v7">Thư viện Hỗ trợ v7</a>
+r21 và cao hơn gồm những tính năng material design sau:</p>
+
+<ul>
+<li><a href="{@docRoot}training/material/theme.html">Các kiểu mang phong cách material design</a> cho một số widget
+    hệ thống khi bạn áp dụng một trong các chủ đề <code>Theme.AppCompat</code>.</li>
+<li><a href="{@docRoot}training/material/theme.html#ColorPalette">Thuộc tính chủ đề bảng màu</a>
+   trong các chủ đề <code>Theme.AppCompat</code>.</li>
+<li>Widget {@link android.support.v7.widget.RecyclerView} để <a href="{@docRoot}training/material/lists-cards.html#RecyclerView">hiển thị các bộ sưu tập
+    dữ liệu</a>.</li>
+<li>Widget {@link android.support.v7.widget.CardView} để <a href="{@docRoot}training/material/lists-cards.html#CardView">tạo thẻ</a>.</li>
+<li>Lớp {@link android.support.v7.graphics.Palette} để <a href="{@docRoot}training/material/drawables.html#ColorExtract">trích xuất màu nổi bật từ
+    hình ảnh</a>.</li>
+</ul>
+
+<h3>Widget hệ thống</h3>
+
+<p>Chủ đề <code>Theme.AppCompat</code> cung cấp các kiểu phong cách material design cho những widget này:</p>
+
+<ul>
+  <li>{@link android.widget.EditText}</li>
+  <li>{@link android.widget.Spinner}</li>
+  <li>{@link android.widget.CheckBox}</li>
+  <li>{@link android.widget.RadioButton}</li>
+  <li>{@link android.support.v7.widget.SwitchCompat}</li>
+  <li>{@link android.widget.CheckedTextView}</li>
+</ul>
+
+<h3>Bảng màu</h3>
+
+<p>Để có được các kiểu phong cách material design và tùy chỉnh bảng màu bằng Thư viện Hỗ trợ v7 
+của Android, hãy áp dụng một trong các chủ đề <code>Theme.AppCompat</code>:</p>
+
+<pre>
+&lt;!-- extend one of the Theme.AppCompat themes -->
+&lt;style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
+    &lt;!-- customize the color palette -->
+    &lt;item name="colorPrimary">@color/material_blue_500&lt;/item>
+    &lt;item name="colorPrimaryDark">@color/material_blue_700&lt;/item>
+    &lt;item name="colorAccent">@color/material_green_A200&lt;/item>
+&lt;/style>
+</pre>
+
+<h3>Danh sách và Thẻ</h3>
+
+<p>Widget {@link android.support.v7.widget.RecyclerView} và {@link
+android.support.v7.widget.CardView} sẵn có trong các phiên bản Android cũ hơn thông qua
+Thư viện Hỗ trợ v7 của Android với những hạn chế sau:</p>
+<ul>
+<li>{@link android.support.v7.widget.CardView} quay lại triển khai đổ bóng theo lập trình
+    bằng cách sử dụng phần đệm bổ sung.</li>
+<li>{@link android.support.v7.widget.CardView} không cắt hình những dạng xem con của nó có giao cắt với
+    các góc bo tròn.</li>
+</ul>
+
+
+<h3>Phụ thuộc</h3>
+
+<p>Để sử dụng những tính năng này trong các phiên bản Android trước 5.0 (API mức 21), hãy thêm
+Thư viện Hỗ trợ v7 của Android vào dự án của bạn như một <a href="{@docRoot}/sdk/installing/studio-build.html#dependencies">Phần phụ thuộc Gradle</a>:</p>
+
+<pre>
+dependencies {
+    compile 'com.android.support:appcompat-v7:21.0.+'
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
+
+
+<h2 id="CheckVersion">Kiểm tra Phiên bản Hệ thống</h2>
+
+<p>Những tính năng sau chỉ sẵn có trong Android 5.0 (API mức 21) trở lên:</p>
+
+<ul>
+<li>Chuyển tiếp hoạt động</li>
+<li>Phản hồi chạm</li>
+<li>Lộ ra hoạt hình</li>
+<li>Hoạt hình dựa trên đường dẫn</li>
+<li>Nội dung vẽ được véc-tơ</li>
+<li>Nhuộm màu nội dung vẽ được</li>
+</ul>
+
+<p>Để duy trì tính tương thích với các phiên bản Android cũ hơn, hãy kiểm tra {@link
+android.os.Build.VERSION#SDK_INT version} vào thời gian chạy trước khi bạn gọi ra API cho bất cứ tính năng nào
+sau đây:</p>
+
+<pre>
+// Check if we're running on Android 5.0 or higher
+if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+    // Call some material design APIs here
+} else {
+    // Implement this feature without material design
+}
+</pre>
+
+<p class="note"><strong>Lưu ý:</strong> Để quy định ứng dụng của bạn hỗ trợ những phiên bản Android nào,
+hãy sử dụng thuộc tính <code>android:minSdkVersion</code> và <code>android:targetSdkVersion</code>
+trong tệp bản kê khai của bạn. Để sử dụng các tính năng của material design trong Android 5.0, hãy đặt
+thuộc tính <code>android:targetSdkVersion</code> thành <code>21</code>. Để biết thêm thông tin, hãy xem hướng dẫn
+ <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt; API
+</a>.</p>
diff --git a/docs/html-intl/intl/vi/training/material/drawables.jd b/docs/html-intl/intl/vi/training/material/drawables.jd
new file mode 100644
index 0000000..175e77d
--- /dev/null
+++ b/docs/html-intl/intl/vi/training/material/drawables.jd
@@ -0,0 +1,126 @@
+page.title=Làm việc với Nội dung vẽ được
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Bài học này hướng dẫn bạn cách</h2>
+<ol>
+  <li><a href="#DrawableTint">Nhuộm màu Tài nguyên Vẽ được</a></li>
+  <li><a href="#ColorExtract">Trích xuất Màu Nổi bật từ một Hình ảnh</a></li>
+  <li><a href="#VectorDrawables">Tạo Nội dung vẽ được Véc-tơ</a></li>
+</ol>
+<h2>Bạn cũng nên đọc</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Đặc tả phong cách Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design trên Android</a></li>
+</ul>
+</div>
+</div>
+
+<p>Những khả năng sau của nội dung vẽ được giúp bạn triển khai phong cách material design trong các ứng dụng của mình:</p>
+
+<ul>
+<li>Nhuộm màu nội dung vẽ được</li>
+<li>Trích xuất màu nổi bật</li>
+<li>Nội dung vẽ được véc-tơ</li>
+</ul>
+
+<p>Bài học này cho bạn biết cách sử dụng những tính năng này trong ứng dụng của mình.</p>
+
+
+<h2 id="DrawableTint">Nhuộm màu Tài nguyên Vẽ được</h2>
+
+<p>Với Android 5.0 (API mức 21) và cao hơn, bạn có thể nhuộm màu ảnh bitmap và ảnh chín miếng được định nghĩa làm
+mặt nạ alpha. Bạn có thể nhuộm chúng bằng tài nguyên màu hoặc những thuộc tính chủ đề nhằm phân giải thành các tài nguyên
+màu (ví dụ, <code>?android:attr/colorPrimary</code>). Thông thường, bạn chỉ tạo những tài sản này
+một lần và tô màu tự động cho chúng để khớp với chủ đề của mình.</p>
+
+<p>Bạn có thể áp dụng một màu nhuộm cho đối tượng {@link android.graphics.drawable.BitmapDrawable} hoặc {@link
+android.graphics.drawable.NinePatchDrawable} bằng phương thức {@code setTint()}. Bạn cũng có thể
+đặt màu nhuộm và chế độ trong bố trí của mình bằng các thuộc tính <code>android:tint</code> và
+<code>android:tintMode</code>.</p>
+
+
+<h2 id="ColorExtract">Trích xuất Màu Nổi bật từ một Hình ảnh</h2>
+
+<p>Thư viện Hỗ trợ Android r21 và cao hơn bao gồm lớp {@link
+android.support.v7.graphics.Palette}, cho phép bạn trích xuất màu nổi bật từ một hình ảnh.
+Lớp này trích xuất những màu nổi bật sau:</p>
+
+<ul>
+<li>Rực rỡ</li>
+<li>Tối rực rỡ</li>
+<li>Sáng rực rỡ</li>
+<li>Lặng</li>
+<li>Tối lặng</li>
+<li>Sáng lặng</li>
+</ul>
+
+<p>Để trích xuất những màu này, hãy chuyển một đối tượng {@link android.graphics.Bitmap} cho phương thức tĩnh 
+{@link android.support.v7.graphics.Palette#generate Palette.generate()} trong
+luồng chạy ngầm nơi bạn tải hình ảnh của mình. Nếu bạn không thể sử dụng luồng đó, hãy gọi phương thức
+{@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} và
+cung cấp một trình nghe.</p>
+
+<p>Bạn có thể truy xuất màu nổi bật từ hình ảnh bằng cách sử dụng các phương thức getter trong lớp
+<code>Palette</code> chẳng hạn như <code>Palette.getVibrantColor</code>.</p>
+
+<p>Để sử dụng lớp {@link android.support.v7.graphics.Palette} trong dự án của mình, hãy thêm
+<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">Phần phụ thuộc Gradle</a> sau vào
+mô-đun ứng dụng của bạn:</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:palette-v7:21.0.0'
+}
+</pre>
+
+<p>Để biết thêm thông tin, hãy xem tài liệu tham khảo API cho lớp
+{@link android.support.v7.graphics.Palette}.</p>
+
+
+<h2 id="VectorDrawables">Tạo Nội dung vẽ được Véc-tơ</h2>
+
+<!-- video box -->
+<a class="notice-developers-video" href="https://www.youtube.com/watch?v=wlFVIIstKmA" style="margin-top:18px">
+<div>
+    <h3>Video</h3>
+    <p>Đồ họa Véc-tơ Android</p>
+</div>
+</a>
+
+<p>Trong Android 5.0 (API mức 21) và cao hơn, bạn có thể định nghĩa nội dung vẽ được véc-tơ co giãn mà không làm mất
+độ sắc nét. Bạn chỉ cần một tệp tài sản cho một hình ảnh véc-tơ, đối lập với tệp tài sản cho
+từng mật độ màn hình trong trường hợp hình ảnh bitmap. Để tạo một hình ảnh véc-tơ, bạn định nghĩa chi tiết
+của hình ảnh trong phần tử XML <code>&lt;vector&gt;</code>.</p>
+
+<p>Ví dụ sau định nghĩa hình ảnh véc-tơ có hình một trái tim:</p>
+
+<pre>
+&lt;!-- res/drawable/heart.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    &lt;!-- intrinsic size of the drawable -->
+    android:height="256dp"
+    android:width="256dp"
+    &lt;!-- size of the virtual canvas -->
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+
+  &lt;!-- draw a path -->
+  &lt;path android:fillColor="#8fff"
+      android:pathData="M20.5,9.5
+                        c-1.955,0,-3.83,1.268,-4.5,3
+                        c-0.67,-1.732,-2.547,-3,-4.5,-3
+                        C8.957,9.5,7,11.432,7,14
+                        c0,3.53,3.793,6.257,9,11.5
+                        c5.207,-5.242,9,-7.97,9,-11.5
+                        C25,11.432,23.043,9.5,20.5,9.5z" />
+&lt;/vector>
+</pre>
+
+<p>Hình ảnh véc-tơ được biểu diễn trong Android dưới dạng đối tượng {@link android.graphics.drawable.VectorDrawable}
+. Để biết thêm thông tin về cú pháp <code>pathData</code>, hãy xem tham chiếu <a href="http://www.w3.org/TR/SVG11/paths.html#PathData">Đường dẫn SVG</a>. Để biết thêm thông tin
+về việc tạo hiệu ứng hoạt hình các thuộc tính của nội dung vẽ được véc-tơ, hãy xem
+<a href="{@docRoot}training/material/animations.html#AnimVector">Tạo Hiệu ứng Hoạt hình Nội dung vẽ được Véc-tơ</a>.</p>
diff --git a/docs/html-intl/intl/vi/training/material/get-started.jd b/docs/html-intl/intl/vi/training/material/get-started.jd
new file mode 100644
index 0000000..9e612ad
--- /dev/null
+++ b/docs/html-intl/intl/vi/training/material/get-started.jd
@@ -0,0 +1,171 @@
+page.title=Bắt đầu
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Bài học này hướng dẫn bạn cách</h2>
+<ol>
+  <li><a href="#ApplyTheme">Áp dụng Chủ đề Material</a></li>
+  <li><a href="#Layouts">Thiết kế Bố trí của Bạn</a></li>
+  <li><a href="#Depth">Quy định Độ cao trong Dạng xem của Bạn</a></li>
+  <li><a href="#ListsCards">Tạo Danh sách và Thẻ</a></li>
+  <li><a href="#Animations">Tùy chỉnh Hoạt hình của Bạn</a></li>
+</ol>
+<h2>Bạn cũng nên đọc</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Đặc tả phong cách Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design trên Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Để tạo ứng dụng với material design:</p>
+
+<ol>
+  <li style="margin-bottom:10px">
+    Xem phần <a href="http://www.google.com/design/spec">đặc tả phong cách material design</a>.</li>
+  <li style="margin-bottom:10px">
+    Áp dụng chủ đề <strong>material</strong> cho ứng dụng của bạn.</li>
+  <li style="margin-bottom:10px">
+    Tạo <strong>bố trí</strong> của bạn theo hướng dẫn về material design.</li>
+  <li style="margin-bottom:10px">
+    Quy định <strong>độ cao</strong> cho dạng xem của bạn để đổ bóng.</li>
+  <li style="margin-bottom:10px">
+    Sử dụng <strong>widget</strong> hệ thống cho danh sách và thẻ.</li>
+  <li style="margin-bottom:10px">
+    Tùy chỉnh <strong>hoạt hình</strong> trong ứng dụng của bạn.</li>
+</ol>
+
+<h3>Duy trì tính tương thích ngược</h3>
+
+<p>Bạn có thể thêm nhiều tính năng material design vào ứng dụng của mình trong khi vẫn duy trì tính tương thích với
+các phiên bản Android trước 5.0. Để biết thêm thông tin, hãy xem phần
+<a href="{@docRoot}training/material/compatibility.html">Duy trì Tính tương thích</a>.</p>
+
+<h3>Cập nhật ứng dụng của bạn với material design</h3>
+
+<p>Để cập nhật một ứng dụng hiện tại bằng material design, hãy cập nhật các bố trí của bạn theo
+hướng dẫn về material design. Cũng nhớ kết hợp chiều sâu, phản hồi chạm và
+hoạt hình.</p>
+
+<h3>Tạo ứng dụng mới với material design</h3>
+
+<p>Nếu bạn tạo một ứng dụng mới với các tính năng của material design, <a href="http://www.google.com/design/spec">hướng dẫn về material design</a> cung cấp cho bạn một
+khuôn khổ thiết kế súc tích. Làm theo hướng dẫn đó và sử dụng chức năng mới trong khuôn khổ Android
+để thiết kế và phát triển ứng dụng của bạn.</p>
+
+
+<h2 id="ApplyTheme">Áp dụng Chủ đề Material</h2>
+
+<p>Để áp dụng chủ đề material trong ứng dụng của mình, hãy quy định một kiểu kế thừa từ
+<code>android:Theme.Material</code>:</p>
+
+<pre>
+&lt;!-- res/values/styles.xml -->
+&lt;resources>
+  &lt;!-- your theme inherits from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- theme customizations -->
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<p>Chủ đề material cung cấp các widget hệ thống được cập nhật để bạn có thể đặt bảng màu và
+hoạt hình mặc định cho phản hồi chạm và chuyển tiếp hoạt động. Để biết thêm chi tiết, hãy xem phần
+<a href="{@docRoot}training/material/theme.html">Sử dụng Chủ đề Material</a>.</p>
+
+
+<h2 id="Layouts">Thiết kế Bố trí của Bạn</h2>
+
+<p>Bên cạnh việc áp dụng và tùy chỉnh chủ đề material, bố trí của bạn cần tuân thủ
+<a href="http://www.google.com/design/spec">hướng dẫn về material design</a>. Khi thiết kế
+bố trí của bạn, hãy đặc biệt chú ý tới điều sau đây:</p>
+
+<ul>
+<li>Lưới đường cơ sở</li>
+<li>Dòng chính</li>
+<li>Giãn cách</li>
+<li>Kích cỡ mục tiêu chạm</li>
+<li>Cấu trúc bố trí</li>
+</ul>
+
+
+<h2 id="Depth">Quy định Độ cao trong Dạng xem của Bạn</h2>
+
+<p>Dạng xem có thể đổ bóng và giá trị độ cao của một dạng xem 
+xác định kích cỡ bóng và thứ tự vẽ của nó. Để đặt độ cao của một dạng xem, hãy sử dụng thuộc tính
+<code>android:elevation</code> trong bố trí của bạn:</p>
+
+<pre>
+&lt;TextView
+    android:id="&#64;+id/my_textview"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:text="&#64;string/next"
+    android:background="&#64;color/white"
+    android:elevation="5dp" />
+</pre>
+
+<p>Thuộc tính <code>translationZ</code> mới cho phép bạn tạo những hoạt hình phản ánh các thay đổi
+tạm thời về độ cao của một dạng xem. Thay đổi về độ cao có thể hữu ích khi
+<a href="{@docRoot}training/material/animations.html#ViewState">phản hồi lại các cử chỉ
+chạm</a>.</p>
+
+<p>Để biết thêm chi tiết, hãy xem phần <a href="{@docRoot}training/material/shadows-clipping.html">Định nghĩa
+Đổ bóng và Dạng xem Cắt hình</a>.</p>
+
+
+<h2 id="ListsCards">Tạo Danh sách và Thẻ</h2>
+
+<p>{@link android.support.v7.widget.RecyclerView} là một phiên bản dễ ghép nối hơn của {@link
+android.widget.ListView} có hỗ trợ các kiểu bố trí khác nhau và cung cấp những cải tiến về hiệu năng.
+{@link android.support.v7.widget.CardView} cho phép bạn hiện các mẩu thông tin bên trong thẻ với
+một diện mạo nhất quán giữa các ứng dụng. Ví dụ về mã sau đây minh họa cách thêm 
+{@link android.support.v7.widget.CardView} vào bố trí của bạn:</p>
+
+<pre>
+&lt;android.support.v7.widget.CardView
+    android:id="&#64;+id/card_view"
+    android:layout_width="200dp"
+    android:layout_height="200dp"
+    card_view:cardCornerRadius="3dp">
+    ...
+&lt;/android.support.v7.widget.CardView>
+</pre>
+
+<p>Để biết thêm thông tin, hãy xem phần <a href="{@docRoot}training/material/lists-cards.html">Tạo Danh sách
+và Thẻ</a>.</p>
+
+
+<h2 id="Animations">Tùy chỉnh Hoạt hình của Bạn</h2>
+
+<p>Android 5.0 (API mức 21) bao gồm các API mới để tạo hoạt hình tùy chỉnh trong ứng dụng của bạn.
+Ví dụ, bạn có thể cho phép chuyển tiếp hoạt động và định nghĩa một chuyển tiếp ra bên trong một
+hoạt động:</p>
+
+<pre>
+public class MyActivity extends Activity {
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // enable transitions
+        getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+        setContentView(R.layout.activity_my);
+    }
+
+    public void onSomeButtonClicked(View view) {
+        getWindow().setExitTransition(new Explode());
+        Intent intent = new Intent(this, MyOtherActivity.class);
+        startActivity(intent,
+                      ActivityOptions
+                          .makeSceneTransitionAnimation(this).toBundle());
+    }
+}
+</pre>
+
+<p>Khi bạn bắt đầu một hoạt động khác từ hoạt động này, chuyển tiếp ra được kích hoạt.</p>
+
+<p>Để tìm hiểu thêm về các API hoạt hình mới, hãy xem <a href="{@docRoot}training/material/animations.html">Định nghĩa Hoạt hình Tùy chỉnh</a>.</p>
diff --git a/docs/html-intl/intl/vi/training/material/index.jd b/docs/html-intl/intl/vi/training/material/index.jd
new file mode 100644
index 0000000..44b74e1
--- /dev/null
+++ b/docs/html-intl/intl/vi/training/material/index.jd
@@ -0,0 +1,61 @@
+page.title=Material Design cho Nhà phát triển
+page.type=design
+page.image=images/cards/material_2x.png
+page.metaDescription=Tìm hiểu cách áp dụng material design cho ứng dụng của bạn.
+
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+  <h2>Phụ thuộc và Điều kiện Tiên quyết</h2>
+  <ul>
+    <li>Android 5.0 (API mức 21)</li>
+  </ul>
+</div>
+</div>
+
+<p>Material design là một hướng dẫn toàn diện về thiết kế trực quan, chuyển động
+và tương tác giữa nhiều nền tảng và thiết bị. Để sử dụng material design trong ứng dụng Androi của mình, hãy làm theo hướng dẫn
+mô tả trong 
+<a href="http://www.google.com/design/spec/material-design/introduction.html">đặc tả
+material design</a> và sử dụng những thành phần và tính năng mới sẵn có trong Android 5.0
+(API mức 21).</p>
+
+<p>Bài học này sẽ cho bạn thấy cách tạo ứng dụng material design bằng những phần tử sau:</p>
+
+<ul>
+<li>Chủ đề material</li>
+<li>Widget cho thẻ và danh sách</li>
+<li>Đổ bóng và cắt xén dạng xem tùy chỉnh</li>
+<li>Nội dung vẽ được véc-tơ</li>
+<li>Hoạt hình tùy chỉnh</li>
+</ul>
+
+<p>Bài học này cũng hướng dẫn cho bạn cách duy trì tính tương thích với các phiên bản Android trước
+5.0 (API mức 21) khi bạn sử dụng các tính năng về material design trong ứng dụng của mình.</p>
+
+<h2>Bài học</h2>
+
+<dl>
+  <dt><a href="{@docRoot}training/material/get-started.html">Bắt đầu</a></dt>
+  <dd>Tìm hiểu cách cập nhật ứng dụng của bạn với các tính năng của material design.</dd>
+
+  <dt><a href="{@docRoot}training/material/theme.html">Sử dụng Chủ đề Material</a></dt>
+  <dd>Tìm hiểu cách áp dụng các kiểu phong cách material design cho ứng dụng của bạn.</dd>
+
+  <dt><a href="{@docRoot}training/material/lists-cards.html">Tạo Danh sách và Thẻ</a></dt>
+  <dd>Tìm hiểu cách tạo danh sách và thẻ với một diện mạo và cảm giác nhất quán bằng cách sử dụng widget hệ thống.</dd>
+
+  <dt><a href="{@docRoot}training/material/shadows-clipping.html">Định nghĩa Đổ bóng và Dạng xem Cắt hình</a></dt>
+  <dd>Tìm hiểu cách đặt độ cao cho dạng xem của bạn để tạo đổ bóng tùy chỉnh và cách cắt hình dạng xem.</dd>
+
+  <dt><a href="{@docRoot}training/material/drawables.html">Làm việc với Nội dung vẽ được</a></dt>
+  <dd>Tìm hiểu cách tạo nội dung vẽ được véc-tơ và cách nhuộm màu tài nguyên vẽ được.</dd>
+
+  <dt><a href="{@docRoot}training/material/animations.html">Định nghĩa Hoạt hình Tùy chỉnh</a></dt>
+  <dd>Tìm hiểu cách tạo hoạt hình tùy chỉnh cho các dạng xem và chuyển tiếp hoạt động bằng các phần tử chung.</dd>
+
+  <dt><a href="{@docRoot}training/material/compatibility.html">Duy trì Tính tương thích</a></dt>
+  <dd>Tìm hiểu cách duy trì tính tương thích với các phiên bản nền tảng trước Android 5.0.</dd>
+</dl>
diff --git a/docs/html-intl/intl/vi/training/material/lists-cards.jd b/docs/html-intl/intl/vi/training/material/lists-cards.jd
new file mode 100644
index 0000000..7127649
--- /dev/null
+++ b/docs/html-intl/intl/vi/training/material/lists-cards.jd
@@ -0,0 +1,266 @@
+page.title=Tạo Danh sách và Thẻ
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Bài học này hướng dẫn bạn cách</h2>
+<ol>
+  <li><a href="#RecyclerView">Tạo Danh sách</a></li>
+  <li><a href="#CardView">Tạo Thẻ</a></li>
+  <li><a href="#Dependencies">Thêm Phụ thuộc</a></li>
+</ol>
+<h2>Bạn cũng nên đọc</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Đặc tả phong cách Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design trên Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Để tạo danh sách và thẻ phức tạp bằng phong cách material design trong ứng dụng của mình, bạn có thể sử dụng widget
+{@link android.support.v7.widget.RecyclerView} và {@link android.support.v7.widget.CardView}
+.</p>
+
+
+<h2 id="RecyclerView">Tạo Danh sách</h2>
+
+<p>Widget {@link android.support.v7.widget.RecyclerView} là một phiên bản nâng cao và linh hoạt hơn
+của {@link android.widget.ListView}. Widget này là một bộ chứa để hiển thị các tập dữ liệu
+lớn có thể được cuộn rất hiệu quả bằng cách duy trì một số dạng xem hữu hạn. Sử dụng widget
+{@link android.support.v7.widget.RecyclerView} khi bạn có các bộ sưu tập dữ liệu với phần tử
+thay đổi vào thời gian chạy dựa vào hành động của người dùng hoặc sự kiện mạng.</p>
+
+<p>Lớp {@link android.support.v7.widget.RecyclerView} đơn giản hóa việc hiển thị và xử lý
+các tập dữ liệu lớn bằng cách cung cấp:</p>
+
+<ul>
+  <li>Trình quản lý bố trí để định vị mục</li>
+  <li>Hoạt hình mặc định cho các thao tác chung đối với mục như loại bỏ hoặc thêm mục</li>
+</ul>
+
+<p>Bạn cũng có sự linh hoạt để định nghĩa các trình quản lý bố trí tùy chỉnh và hoạt hình cho widget {@link
+android.support.v7.widget.RecyclerView}.</p>
+
+<img src="{@docRoot}training/material/images/RecyclerView.png" alt="" width="550" height="106" />
+<p class="img-caption">
+<strong>Hình 1</strong>. Widget <code>RecyclerView</code>.
+</p>
+
+<p>Để sử dụng widget {@link android.support.v7.widget.RecyclerView}, bạn phải quy định một
+trình điều hợp và trình quản lý bố trí. Để tạo một trình điều hợp, hãy mở rộng lớp {@link
+android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter}. Chi tiết
+của triển khai phụ thuộc vào các chỉ định của tập dữ liệu của bạn và kiểu dạng xem. Để biết thêm
+thông tin, hãy xem <a href="#RVExamples">ví dụ</a> bên dưới.</p>
+
+<div style="float:right">
+<img src="{@docRoot}design/material/images/list_mail.png" alt="" width="250" height="426" />
+<p class="img-caption" style="margin-left:8px">
+<strong>Hình 2</strong> - Danh sách với <code>RecyclerView</code>.
+</p>
+</div>
+
+<p><strong>Trình quản lý bố trí</strong> sẽ định vị các dạng xem mục bên trong {@link
+android.support.v7.widget.RecyclerView} và xác định thời điểm sử dụng lại các dạng xem mục
+không còn hiển thị trước người dùng nữa. Để sử dụng lại (hoặc <em>tái chế</em>) một dạng xem, trình quản lý bố
+trí có thể yêu cầu trình điều hợp thay thế nội dung của dạng xem bằng một phần tử khác từ tập dữ liệu. Tái chế
+dạng xem bằng cách này sẽ cải thiện hiệu năng nhờ tránh tạo những dạng xem không cần thiết hoặc thực hiện
+tra cứu {@link android.app.Activity#findViewById findViewById()} tốn kém.</p>
+
+<p>{@link android.support.v7.widget.RecyclerView} cung cấp những trình quản lý bố trí dựng sẵn sau:</p>
+
+<ul>
+<li>{@link android.support.v7.widget.LinearLayoutManager} hiện các mục trong một danh sách cuộn
+thẳng đứng hoặc nằm ngang.</li>
+<li>{@link android.support.v7.widget.GridLayoutManager} hiện các mục trong lưới.</li>
+<li>{@link android.support.v7.widget.StaggeredGridLayoutManager} hiện các mục trong một lưới so le.</li>
+</ul>
+
+<p>Để tạo một trình quản lý bố trí tùy chỉnh, hãy mở rộng lớp {@link
+android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager}.</p>
+
+<h3>Hoạt hình</h3>
+
+<p>Hoạt hình để thêm và loại bỏ mục được kích hoạt theo mặc định trong {@link
+android.support.v7.widget.RecyclerView}. Để tùy chỉnh những hoạt hình này, hãy mở rộng lớp
+{@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} và sử dụng
+phương thức {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()}
+.</p>
+
+<h3 id="RVExamples">Ví dụ</h3>
+
+<p>Ví dụ đoạn mã sau minh họa cách thêm
+{@link android.support.v7.widget.RecyclerView} vào bố trí:</p>
+
+<pre>
+&lt;!-- A RecyclerView with some commonly used attributes -->
+&lt;android.support.v7.widget.RecyclerView
+    android:id="@+id/my_recycler_view"
+    android:scrollbars="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"/>
+</pre>
+
+<p>Sau khi thêm widget {@link android.support.v7.widget.RecyclerView} vào bố trí của bạn,
+hãy lấy một núm điều tác tới đối tượng, kết nối nó với một trình quản lý bố trí và gắn kèm một trình điều hợp cho dữ liệu
+cần được hiển thị:</p>
+
+<pre>
+public class MyActivity extends Activity {
+    private RecyclerView mRecyclerView;
+    private RecyclerView.Adapter mAdapter;
+    private RecyclerView.LayoutManager mLayoutManager;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.my_activity);
+        mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
+
+        // use this setting to improve performance if you know that changes
+        // in content do not change the layout size of the RecyclerView
+        mRecyclerView.setHasFixedSize(true);
+
+        // use a linear layout manager
+        mLayoutManager = new LinearLayoutManager(this);
+        mRecyclerView.setLayoutManager(mLayoutManager);
+
+        // specify an adapter (see also next example)
+        mAdapter = new MyAdapter(myDataset);
+        mRecyclerView.setAdapter(mAdapter);
+    }
+    ...
+}
+</pre>
+
+<p>Trình điều hợp cung cấp truy cập vào các mục trong tập dữ liệu của bạn, tạo dạng xem cho mục và
+thay thế nội dung của một số dạng xem bằng mục dữ liệu mới khi mục ban đầu không còn
+hiển thị. Ví dụ đoạn mã sau đây thể hiện việc triển khai đơn giản của tập dữ liệu bao gồm
+một mảng xâu được hiển thị bằng widget {@link android.widget.TextView}:</p>
+
+<pre>
+public class MyAdapter extends RecyclerView.Adapter&lt;MyAdapter.ViewHolder> {
+    private String[] mDataset;
+
+    // Provide a reference to the views for each data item
+    // Complex data items may need more than one view per item, and
+    // you provide access to all the views for a data item in a view holder
+    public static class ViewHolder extends RecyclerView.ViewHolder {
+        // each data item is just a string in this case
+        public TextView mTextView;
+        public ViewHolder(TextView v) {
+            super(v);
+            mTextView = v;
+        }
+    }
+
+    // Provide a suitable constructor (depends on the kind of dataset)
+    public MyAdapter(String[] myDataset) {
+        mDataset = myDataset;
+    }
+
+    // Create new views (invoked by the layout manager)
+    &#64;Override
+    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
+                                                   int viewType) {
+        // create a new view
+        View v = LayoutInflater.from(parent.getContext())
+                               .inflate(R.layout.my_text_view, parent, false);
+        // set the view's size, margins, paddings and layout parameters
+        ...
+        ViewHolder vh = new ViewHolder(v);
+        return vh;
+    }
+
+    // Replace the contents of a view (invoked by the layout manager)
+    &#64;Override
+    public void onBindViewHolder(ViewHolder holder, int position) {
+        // - get element from your dataset at this position
+        // - replace the contents of the view with that element
+        holder.mTextView.setText(mDataset[position]);
+
+    }
+
+    // Return the size of your dataset (invoked by the layout manager)
+    &#64;Override
+    public int getItemCount() {
+        return mDataset.length;
+    }
+}
+</pre>
+
+
+<div style="float:right;margin-top:15px;margin-left:30px">
+<img src="{@docRoot}design/material/images/card_travel.png" alt="" width="225" height="383">
+<p class="img-caption" style="margin-left:12px">
+<strong>Hình 3</strong>. Ví dụ thẻ.
+</p>
+</div>
+
+<h2 id="CardView">Tạo Thẻ</h2>
+
+<p>{@link android.support.v7.widget.CardView} mở rộng lớp {@link android.widget.FrameLayout} và
+cho phép bạn hiển thị thông tin bên trong các thẻ có diện mạo nhất quán trên khắp nền tảng. Widget {@link
+android.support.v7.widget.CardView} có thể có đổ bóng và góc bo tròn.</p>
+
+<p>Để tạo một thẻ có bóng, hãy sử dụng thuộc tính <code>card_view:cardElevation</code>.
+{@link android.support.v7.widget.CardView} sử dụng độ cao thực và đổ bóng động trên Android 5.0
+(API mức 21) và cao hơn, và quay lại triển khai đổ bóng theo lập trình trên các phiên bản cũ hơn.
+Để biết thêm thông tin, hãy xem phần <a href="{@docRoot}training/material/compatibility.html">Duy trì
+Tính tương thích</a>.</p>
+
+<p>Sử dụng những thuộc tính sau để tùy chỉnh diện mạo của widget 
+{@link android.support.v7.widget.CardView}:</p>
+
+<ul>
+  <li>Để đặt bán kính góc trong bố trí của bạn, hãy sử dụng thuộc tính <code>card_view:cardCornerRadius</code>
+.</li>
+  <li>Để đặt bán kính góc trong mã của bạn, hãy sử dụng phương thức <code>CardView.setRadius</code>.</li>
+  <li>Để đặt màu nền của thẻ, hãy sử dụng thuộc tính <code>card_view:cardBackgroundColor</code>
+.</li>
+</ul>
+
+<p>Ví dụ về mã sau đây cho bạn thấy cách thêm widget {@link android.support.v7.widget.CardView}
+trong bố trí của mình:</p>
+
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    ... >
+    &lt;!-- A CardView that contains a TextView -->
+    &lt;android.support.v7.widget.CardView
+        xmlns:card_view="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/card_view"
+        android:layout_gravity="center"
+        android:layout_width="200dp"
+        android:layout_height="200dp"
+        card_view:cardCornerRadius="4dp">
+
+        &lt;TextView
+            android:id="@+id/info_text"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
+    &lt;/android.support.v7.widget.CardView>
+&lt;/LinearLayout>
+</pre>
+
+<p>Để biết thêm thông tin, hãy xem tài liệu tham khảo API cho {@link android.support.v7.widget.CardView}.</p>
+
+
+<h2 id="Dependencies">Thêm Phụ thuộc</h2>
+
+<p>Widget {@link android.support.v7.widget.RecyclerView} và {@link android.support.v7.widget.CardView}
+là bộ phận của <a href="{@docRoot}tools/support-library/features.html#v7">Thư viện Hỗ trợ
+v7</a>. Để sử dụng những widget này trong dự án của mình, hãy thêm những
+<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">Phụ thuộc Gradle</a> này vào mô-đun
+ứng dụng của bạn:</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
diff --git a/docs/html-intl/intl/vi/training/material/shadows-clipping.jd b/docs/html-intl/intl/vi/training/material/shadows-clipping.jd
new file mode 100644
index 0000000..e9091f2
--- /dev/null
+++ b/docs/html-intl/intl/vi/training/material/shadows-clipping.jd
@@ -0,0 +1,133 @@
+page.title=Định nghĩa Đổ bóng và Dạng xem Cắt hình
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Bài học này hướng dẫn bạn cách</h2>
+<ol>
+  <li><a href="#Elevation">Gán Độ cao cho Dạng xem của Bạn</a></li>
+  <li><a href="#Shadows">Tùy chỉnh Đổ bóng và Viền của Dạng xem</a></li>
+  <li><a href="#Clip">Dạng xem Cắt hình</a></li>
+</ol>
+<h2>Bạn cũng nên đọc</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Đặc tả phong cách Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design trên Android</a></li>
+</ul>
+</div>
+</div>
+
+<p>Material design giới thiệu độ cao cho phần tử UI. Độ cao giúp người dùng hiểu được
+tầm quan trọng tương đối của từng phần tử và tập chung sự chú ý của họ vào tác vụ hiện có.</p>
+
+<p>Độ cao của một dạng xem, được biểu diễn bằng thuộc tính Z, sẽ xác định diện mạo trực quan của
+bóng đổ: dạng xem có giá trị Z cao hơn sẽ đổ bóng lớn hơn, mềm hơn. Dạng xem có giá trị Z cao hơn sẽ che khuất dạng xem 
+có giá trị Z thấp hơn; tuy nhiên, giá trị Z của một dạng xem không ảnh hưởng tới kích cỡ của dạng xem.</p>
+
+<p>Đổ bóng được vẽ bởi dạng xem mẹ của dạng xem cao hơn, do vậy nó phụ thuộc vào tiêu chuẩn cắt dạng xem,
+được cắt bởi dạng xem mẹ theo mặc định.</p>
+
+<p>Độ cao cũng hữu ích trong việc tạo hoạt hình ở nơi widget tạm thời dâng cao hơn
+mặt phẳng dạng xem khi thực hiện một hành động nào đó.</p>
+
+<p>Để biết thêm thông tin về độ cao trong material design, hãy xem
+<a href="http://www.google.com/design/spec/what-is-material/objects-in-3d-space.html">Đối tượng
+trong không gian 3D</a>.</p>
+
+
+<h2 id="Elevation">Gán Độ cao cho Dạng xem của Bạn</h2>
+
+<p>Giá trị Z của một dạng xem có hai thành phần:
+
+<ul>
+<li>Độ cao: Thành phần tĩnh.</li>
+<li>Độ dịch: Thành phần động được sử dụng cho hoạt hình.</li>
+</ul>
+
+<p><code>Z = elevation + translationZ</code></p>
+
+<img src="{@docRoot}training/material/images/shadows-depth.png" width="580" height="261" alt="" />
+<p class="img-caption"><strong>Hình 1</strong> - Đổ bóng cho các độ cao dạng xem khác nhau.</p>
+
+<p>Để đặt độ cao của dạng xem trong một định nghĩa bố trí, hãy sử dụng thuộc tính <code>android:elevation</code>
+. Để đặt độ cao của dạng xem trong mã của một hoạt động, hãy sử dụng phương thức 
+{@link android.view.View#setElevation View.setElevation()}.</p>
+
+<p>Để đặt độ dịch của dạng xem, hãy sử dụng phương thức {@link android.view.View#setTranslationZ
+View.setTranslationZ()}.</p>
+
+<p>Các phương thức {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} và {@link
+android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} mới cho phép
+bạn dễ dàng tạo hiệu ứng hoạt hình cho độ cao của dạng xem. Để biết thêm thông tin, hãy xem tài liệu tham khảo API cho 
+{@link android.view.ViewPropertyAnimator} và hướng dẫn cho nhà phát triển về <a href="{@docRoot}guide/topics/graphics/prop-animation.html">Hoạt hình Thuộc tính</a>
+.</p>
+
+<p>Bạn cũng có thể sử dụng {@link android.animation.StateListAnimator} để
+quy định những hoạt hình này bằng cách khai báo. Điều này đặc biệt hữu ích đối với trường hợp các thay đổi
+trạng thái sẽ kích hoạt hoạt hình như khi người dùng nhấn một nút. Để biết thêm thông tin, hãy xem phần
+<a href="{@docRoot}training/material/animations.html#ViewState">Tạo Hiệu ứng Hoạt hình Thay đổi Trạng thái Xem</a>.</p>
+
+<p>Giá trị Z được đo bằng dp (điểm ảnh độc lập với mật độ).</p>
+
+
+<h2 id="Shadows">Tùy chỉnh Đổ bóng và Viền của Dạng xem</h2>
+
+<p>Các giới hạn nội dung vẽ được của nền dạng xem sẽ xác định hình dạng mặc định của bóng.
+<strong>Viền</strong> biểu thị hình dạng ngoài của một đối tượng đồ họa và định nghĩa vùng
+gợn sóng cho phản hồi chạm.</p>
+
+<p>Hãy cân nhắc dạng xem sau được định nghĩa với nội dung vẽ được làm nền:</p>
+
+<pre>
+&lt;TextView
+    android:id="@+id/myview"
+    ...
+    android:elevation="2dp"
+    android:background="@drawable/myrect" />
+</pre>
+
+<p>Nội dung vẽ được làm nền được định nghĩa là một hình chữ nhật với góc bo tròn:</p>
+
+<pre>
+&lt;!-- res/drawable/myrect.xml -->
+&lt;shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+    &lt;solid android:color="#42000000" />
+    &lt;corners android:radius="5dp" />
+&lt;/shape>
+</pre>
+
+<p>Dạng xem sẽ tạo đổ bóng có góc bo tròn do nội dung vẽ được làm nền sẽ định nghĩa
+viền của dạng xem. Khi cung cấp viền tùy chỉnh, nó ghi đè hình dạng mặc định của bóng đổ dạng xem.</p>
+
+<p>Để định nghĩa viền tùy chỉnh cho một dạng xem trong mã của bạn:<p>
+
+<ol>
+<li>Mở rộng lớp {@link android.view.ViewOutlineProvider}.</li>
+<li>Ghi đè phương thức {@link android.view.ViewOutlineProvider#getOutline getOutline()}.</li>
+<li>Gán trình cung cấp viền mới cho dạng xem của bạn bằng phương thức {@link
+android.view.View#setOutlineProvider View.setOutlineProvider()}.</li>
+</ol>
+
+<p>Bạn có thể tạo viền hình bầu dục và hình chữ nhật có góc bo tròn bằng cách sử dụng các phương thức trong lớp
+{@link android.graphics.Outline}. Trình cung cấp viền mặc định cho dạng xem sẽ lấy viền
+từ nền của dạng xem. Để ngăn dạng xem đổ bóng, hãy đặt trình cung cấp viền của nó
+thành <code>null</code>.</p>
+
+
+<h2 id="Clip">Dạng xem Cắt hình</h2>
+
+<p>Dạng xem cắt hình cho phép bạn dễ dàng thay đổi hình dạng của một dạng xem. Bạn có thể cắt hình dạng xem để
+nhất quán với các phần tử thiết kế khác hoặc để thay đổi hình dạng của một dạng xem để đáp ứng lại thông tin đầu vào của người dùng.
+Bạn có thể cắt một dạng xem thành vùng viền của nó bằng cách sử dụng phương thức {@link android.view.View#setClipToOutline
+View.setClipToOutline()} hoặc thuộc tính <code>android:clipToOutline</code>. Chỉ
+viền là hình chữ nhật, hình tròn và hình chữ nhật bo tròn mới hỗ trợ cắt hình như được xác định bởi phương thức
+{@link android.graphics.Outline#canClip Outline.canClip()}.</p>
+
+<p>Để cắt dạng xem thành hình dạng của một nội dung vẽ được, hãy đặt nội dung vẽ được làm nền của dạng xem
+(như minh họa bên trên) và gọi phương thức {@link android.view.View#setClipToOutline View.setClipToOutline()}
+.</p>
+
+<p>Cắt dạng xem là một thao tác tốn kém, vì vậy đừng tạo hiệu ứng hoạt hình cho hình dạng bạn sử dụng để
+cắt dạng xem. Để đạt được hiệu ứng này, hãy sử dụng hoạt hình <a href="{@docRoot}training/material/animations.html#Reveal">Hiệu ứng Lộ ra</a>.</p>
diff --git a/docs/html-intl/intl/vi/training/material/theme.jd b/docs/html-intl/intl/vi/training/material/theme.jd
new file mode 100644
index 0000000..9c46b5d
--- /dev/null
+++ b/docs/html-intl/intl/vi/training/material/theme.jd
@@ -0,0 +1,131 @@
+page.title=Sử dụng Chủ đề Material
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>Bài học này hướng dẫn bạn cách</h2>
+<ol>
+  <li><a href="#ColorPalette">Tùy chỉnh Bảng màu</a></li>
+  <li><a href="#StatusBar">Tùy chỉnh Thanh Trạng thái</a></li>
+  <li><a href="#Inheritance">Tạo Chủ đề Dạng xem Riêng</a></li>
+</ol>
+<h2>Bạn cũng nên đọc</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">Đặc tả phong cách Material Design</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Material Design trên Android</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>Chủ đề material mới cung cấp:</p>
+
+<ul>
+  <li>Widget hệ thống cho phép bạn đặt bảng màu của chúng</li>
+  <li>Hoạt hình phản hồi chạm cho widget hệ thống</li>
+  <li>Hoạt hình chuyển tiếp hoạt động</li>
+</ul>
+
+<p>Bạn có thể tùy chỉnh diện mạo của chủ đề material
+theo nhận diện thương hiệu của mình bằng một bảng màu mà bạn kiểm soát. Bạn có thể nhuộm màu thanh hành động và
+thanh trạng thái bằng cách sử dụng các thuộc tính chủ đề như minh họa trong <a href="#fig3">Hình 3</a>.</p>
+
+<p>Widget hệ thống có một thiết kế mới và hoạt hình phản hồi chạm. Bạn có thể tùy chỉnh
+bảng màu, hoạt hình phản hồi chạm và chuyển tiếp hoạt động cho ứng dụng của mình.</p>
+
+<p>Chủ đề material được định nghĩa là:</p>
+
+<ul>
+  <li><code>@android:style/Theme.Material</code> (phiên bản tối)</li>
+  <li><code>@android:style/Theme.Material.Light</code> (phiên bản sáng)</li>
+  <li><code>@android:style/Theme.Material.Light.DarkActionBar</code></li>
+</ul>
+
+<p>Để biết danh sách các kiểu material mà bạn có thể sử dụng, hãy xem tài liệu tham chiếu API cho
+{@link android.R.style R.style}.</p>
+
+<!-- two columns, dark/light material theme example -->
+<div style="width:700px;margin-top:25px;margin-bottom:10px">
+<div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
+  <img src="{@docRoot}design/material/images/MaterialDark.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>Hình 1</strong>. Giao diện material tối</p>
+  </div>
+</div>
+<div style="float:left;width:250px;margin-right:0px;">
+  <img src="{@docRoot}design/material/images/MaterialLight.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>Hình 2</strong>. Giao diện material sáng</p>
+  </div>
+</div>
+<br style="clear:left">
+</div>
+
+<p class="note">
+<strong>Lưu ý:</strong> Chủ đề material chỉ sẵn có trong Android 5.0 (API mức 21) trở
+lên. <a href="{@docRoot}tools/support-library/features.html#v7">Thư viện Hỗ trợ v7</a>
+cung cấp chủ đề mang phong cách material design cho một số widget và hỗ trợ tùy chỉnh
+bảng màu. Để biết thêm thông tin, hãy xem phần
+<a href="{@docRoot}training/material/compatibility.html">Duy trì Tính tương thích</a>.
+</p>
+
+
+<h2 id="ColorPalette">Tùy chỉnh Bảng màu</h2>
+
+<p style="margin-bottom:30px">Để tùy chỉnh các màu cơ bản của chủ đề cho phù hợp với nhãn hiệu của bạn, hãy định nghĩa
+màu tùy chỉnh của bạn bằng thuộc tính chủ đề khi bạn kế thừa từ chủ đề material:</p>
+
+<pre>
+&lt;resources>
+  &lt;!-- inherit from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- Main theme colors -->
+    &lt;!--   your app branding color for the app bar -->
+    &lt;item name="android:colorPrimary">@color/primary&lt;/item>
+    &lt;!--   darker variant for the status bar and contextual app bars -->
+    &lt;item name="android:colorPrimaryDark">@color/primary_dark&lt;/item>
+    &lt;!--   theme UI controls like checkboxes and text fields -->
+    &lt;item name="android:colorAccent">@color/accent&lt;/item>
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<div style="float:right;margin-left:25px;margin-top:20px;margin-bottom:10px" id="fig3">
+<img src="{@docRoot}training/material/images/ThemeColors.png" width="250" height="445" />
+<p class="img-caption" style="margin-bottom:0px">
+<strong>Hình 3.</strong> Tùy chỉnh chủ đề material.</p>
+</div>
+
+
+<h2 id="StatusBar">Tùy chỉnh Thanh Trạng thái</h2>
+
+<p>Chủ đề material cho phép bạn dễ dàng tùy chỉnh thanh trạng thái để bạn có thể quy định
+màu cho phù hợp với nhãn hiệu của mình và đảm bảo đủ độ tương phản để hiển thị biểu tượng trạng thái màu trắng. Để
+đặt màu tùy chỉnh cho thanh trạng thái, hãy sử dụng thuộc tính <code>android:statusBarColor</code> khi
+bạn mở rộng chủ đề material. Theo mặc định, <code>android:statusBarColor</code> kế thừa
+giá trị của <code>android:colorPrimaryDark</code>.</p>
+
+<p>Bạn cũng có thể tự vẽ phía sau thanh trạng thái. Ví dụ, nếu bạn muốn hiển thị
+thanh trạng thái trong suốt trên một ảnh chụp, với graddien hơi tối để đảm bảo biểu tượng
+trạng thái màu trắng nhìn thấy được. Để làm vậy, hãy đặt thuộc tính <code>android:statusBarColor</code> thành
+<code>&#64;android:color/transparent</code> và điều chỉnh cờ cửa sổ nếu cần. Bạn cũng có thể
+sử dụng phương thức {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} cho hoạt hình
+hoặc hiệu ứng mờ dần.</p>
+
+<p class="note">
+<strong>Lưu ý:</strong> Thanh trạng thái cần luôn có một bản vẽ rõ ràng từ
+thanh công cụ chính, trừ trường hợp bạn hiển thị nội dung hình ảnh hoặc phương tiện phong phú từ cạnh tới cạnh phía sau
+những thanh này và khi bạn sử dụng gradient để đảm bảo rằng các biểu tượng vẫn nhìn thấy được.
+</p>
+
+<p>Khi bạn tùy chỉnh thanh điều hướng và trạng thái, hãy khiến cả hai đều trong suốt hoặc chỉ sửa đổi
+thanh trạng thái. Thanh điều hướng nên giữ lại màu đen trong mọi trường hợp khác.</p>
+
+
+<h2 id="Inheritance">Tạo Chủ đề Dạng xem Riêng</h3>
+
+<p>Những phần tử trong định nghĩa bố trí XML có thể quy định thuộc tính <code>android:theme</code> để
+tham chiếu tới một tài nguyên chủ đề. Thuộc tính này sửa đổi chủ đề cho phần tử và bất cứ
+phần tử con nào, điều này có ích đối với việc thay đổi bảng màu của chủ đề trong một phần cụ thể
+của giao diện.</p>
diff --git a/docs/html-intl/intl/zh-cn/design/get-started/principles.jd b/docs/html-intl/intl/zh-cn/design/get-started/principles.jd
index fbb46c9..1738c84 100644
--- a/docs/html-intl/intl/zh-cn/design/get-started/principles.jd
+++ b/docs/html-intl/intl/zh-cn/design/get-started/principles.jd
@@ -14,8 +14,8 @@
 
 <h2 id="enchant-me">让我着迷</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="delight-me">以意想不到的方式让我眼前一亮</h4>
 <p>漂亮的界面、精心布置的动画,或恰到好处的声效,都会带来快乐的体验。
@@ -23,7 +23,7 @@
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_delight.png">
 
@@ -32,15 +32,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="real-objects-more-fun">实际对象要比按钮和菜单更有趣</h4>
-<p>让用户可以直接触摸和操作您应用中的对象,让执行任务更轻松,让用户更满意。
+<p>让用户可以直接触摸和操作您应用中的对象,这样,可以让执行任务更轻松,让用户更满意。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_real_objects.png">
 
@@ -49,8 +49,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="make-it-mine">我的应用我做主</h4>
 <p>用户喜欢添加个性化手势,因为这样会让他们觉得更顺手并且一切尽在他们的掌控之中。提供感性、美观的默认手势,但也要考虑到趣味性,不要让可选的定制手势妨碍主要任务的操作。
@@ -58,7 +58,7 @@
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_make_it_mine.png">
 
@@ -67,15 +67,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="get-to-know-me">让应用了解我</h4>
 <p>逐渐了解用户的偏好。不要让用户反复做出相同的选择,将之前的选择列作快捷选择。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_get_to_know_me.png">
 
@@ -84,14 +84,14 @@
 
 <h2 id="simplify-my-life">让我的生活更轻松</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="keep-it-brief">语言简洁</h4>
 <p>使用简单的字词组成简短的句子。用户往往会跳过冗长的句子。</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_keep_it_brief.png">
 
@@ -100,15 +100,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="pictures-faster-than-words">图片比文字更直观</h4>
 <p>考虑以图示意。它们会吸引用户的注意力,并且比文字更高效。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_pictures.png">
 
@@ -117,15 +117,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="decide-for-me">为我决定,但最终由我做主</h4>
 <p>先提供您心目中的最佳选择,而不是先进行询问。太多的选择和决策会让人不悦。
 只是在您的选择可能不当时,才赋予用户“撤消”的权利。</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_decide_for_me.png">
 
@@ -134,15 +134,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="only-show-when-i-need-it">仅在我需要时显示我所需要的</h4>
 <p>如果一次性看到过多内容,用户会感到无所适从。将任务和信息细分为更小、更容易接受的片段。
 隐藏当前不必要的选项,并在用户操作期间提供指导。</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_information_when_need_it.png">
 
@@ -151,15 +151,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="always-know-where-i-am">我应该始终清楚自己在哪里</h4>
 <p>让用户感到轻车熟路。为应用中的不同场景赋予不同的外观,使用过渡效果来展现屏幕之间的关系。
 提供任务进度反馈。</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_navigation.png">
 
@@ -168,8 +168,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="never-lose-my-stuff">决不能让我的成果付诸东流</h4>
 <p>务必保存好用户耗费花时间创造的内容,让他们能随处访问这些内容。跨手机、平板电脑和计算机等平台,记住设置、个人手势和创作内容,
@@ -177,7 +177,7 @@
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_never_lose_stuff.png">
 
@@ -186,15 +186,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="looks-same-should-act-same">如果看上去一样,其行为也应当相同</h4>
 <p>通过视觉上的显著差异(而不是微妙差异)帮助用户区分不同的功能。避免使用固定模式,那样会导致外观相似的场景中,用户执行同样的输入,应用却给出不同的响应。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_looks_same.png">
 
@@ -203,15 +203,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="interrupt-only-if-important">只在确实对我很重要时才打断我</h4>
 <p>就像优秀的个人助理一样,不要让上司被一些无关紧要的琐事打扰。用户希望专注于核心任务,除非确实非常重要并且情况紧急,否则,打断用户会让人烦不胜烦。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_important_interruption.png">
 
@@ -220,8 +220,8 @@
 
 <h2 id="make-me-amazing">给我惊喜</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="give-me-tricks">到处为我提供有用的诀窍</h4>
 <p>如果能自己摸索出花样来,用户总是很开心的。利用直观的图案以及其他 Android 应用中常见的习惯手势,让您的应用更容易学习。
@@ -229,7 +229,7 @@
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_tricks.png">
 
@@ -238,16 +238,16 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="its-not-my-fault">不是我的错</h4>
-<p>在提醒用户改正错误时要礼貌。他们希望在使用您的应用时感觉自己很聪明。如果用户操作出错,请提供清晰的恢复说明,而不要让他们咀嚼详细的技术信息。如果您能在后台修复错误,那当然更好。
-
+<p>在提醒用户改正错误时要礼貌。他们希望在使用您的应用时感觉自己很聪明。
+如果用户操作出错,请提供清晰的恢复说明,而不要让他们咀嚼详细的技术信息。如果您能在后台修复错误,那当然更好。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_error.png">
 
@@ -256,15 +256,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="sprinkle-encouragement">多多鼓励</h4>
 <p>将复杂的任务分解为可轻松完成的小步骤。对操作提供反馈,哪怕只是微弱的灯光,也聊胜于无。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_sprinkle_encouragement.png">
 
@@ -273,8 +273,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="do-heavy-lifting-for-me">为我处理繁重事务</h4>
 <p>通过让新手完成他们认为自己不可能做到的事情,让他们感觉自己就像一名行家。例如,通过提供融合多种照片特效的快捷操作,只需几步,就可以让业余照片达到惊艳的效果。
@@ -282,7 +282,7 @@
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_heavy_lifting.png">
 
@@ -291,15 +291,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="make-important-things-fast">让重要事项能更快地完成</h4>
 <p>不是所有操作都同样重要。确定应用中哪些功能是最重要的,将这些功能放在便于找到和使用的地方,例如相机的快门按钮,或者音乐播放器中的暂停按钮。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_make_important_fast.png">
 
diff --git a/docs/html-intl/intl/zh-cn/design/material/index.jd b/docs/html-intl/intl/zh-cn/design/material/index.jd
index 78e6d38..b667bb8 100644
--- a/docs/html-intl/intl/zh-cn/design/material/index.jd
+++ b/docs/html-intl/intl/zh-cn/design/material/index.jd
@@ -1,7 +1,6 @@
-page.title=材料设计
-page.tags=Material, design
-page.type=设计
-page.image=design/material/images/MaterialLight.png
+page.title=Android 材料设计
+page.tags=Material,design,设计
+page.image=images/cards/design-material-for-android_2x.jpg
 
 @jd:body
 
@@ -53,13 +52,13 @@
   <li>用于自定义阴影和动画的全新 API</li>
 </ul>
 
-<p>有关在 Android 上实现材料设计的详细信息,请参阅<a href="{@docRoot}training/material/index.html">创建材料设计应用</a>。
+<p>有关在 Android 上实现材料设计的详细信息,请参阅<a href="{@docRoot}training/material/index.html">使用材料设计创建应用</a>。
 </p>
 
 
 <h3>材料主题</h3>
 
-<p>材料主题提供了新的应用样式和系统小工具,让您能够为触摸反馈以及活动转换设置配色工具以及默认动画。
+<p>材料主题提供了新的应用样式和系统小工具,让您能够为触摸反馈以及 Activity 转换设置配色工具以及默认动画。
 </p>
 
 <!-- two columns -->
@@ -136,7 +135,7 @@
 
 <h3>动画</h3>
 
-<p>动画 API 让您可为 UI 控件中的触摸反馈、视图状态更改以及活动转换创建自定义动画。
+<p>动画 API 让您可为 UI 控件中的触摸反馈、视图状态更改以及 Activity 转换创建自定义动画。
 </p>
 
 <p>这些 API 的作用是:</p>
@@ -149,7 +148,7 @@
 使用<strong>循环显示</strong>动画隐藏和显示视图。
 </li>
 <li style="margin-bottom:15px">
-使用自定义<strong>活动转换</strong>动画切换活动。
+使用自定义 <strong>Activity 转换</strong>动画切换 Activity。
 </li>
 <li style="margin-bottom:15px">
 使用<strong>曲线运动</strong>创建更自然的动画。
diff --git a/docs/html-intl/intl/zh-cn/design/patterns/compatibility.jd b/docs/html-intl/intl/zh-cn/design/patterns/compatibility.jd
new file mode 100644
index 0000000..7ec1bf3
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/design/patterns/compatibility.jd
@@ -0,0 +1,70 @@
+page.title=向后兼容性
+page.tags="support"
+page.metaDescription=关于 Android 4.x 如何让其 UI 设计适应早期硬件和操作系统版本的说明。
+@jd:body
+
+<a class="notice-developers" href="{@docRoot}training/basics/supporting-devices/index.html">
+  <div>
+    <h3>开发者文档</h3>
+    <p>支持不同设备</p>
+  </div>
+</a>
+
+<p>Android 3.0 中的重大更改包括:</p>
+<ul>
+<li>弃用导航硬按键(返回、菜单、搜索、主屏幕),改为通过虚拟控件(返回、主屏幕、最近使用记录)处理导航。
+</li>
+<li>使用操作栏中的菜单的可靠模式。</li>
+</ul>
+<p>Android 4.0 将这些针对平板电脑的更改引入手机平台。</p>
+
+<h2 id="older-hardware">让 Android 4.0 适应早期硬件和应用</h2>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>带有虚拟导航控件的手机</h4>
+<p>针对 Android 3.0 和后续版本编写的 Android 应用在操作栏中显示操作。操作栏中放不下或者不够重要因而不值得显示在操作栏顶级菜单中的操作将显示在操作溢出菜单中。
+
+</p>
+<p>用户可通过在操作栏中触摸操作溢出菜单来访问该菜单。</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_virtual_nav.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>带有实体导航按键的手机</h4>
+<p>带有传统导航硬按键的 Android 手机在屏幕底部不会显示虚拟导航栏。
+其操作溢出菜单可从硬按键菜单中进行访问。其形成的操作弹出菜单与上例风格相同,但显示在屏幕底部。
+</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_physical_buttons.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>带有虚拟导航控件的手机上的传统应用</h4>
+<p>当您在带有虚拟导航控件的手机上运行为 Android 2.3 或更早版本编写的应用时,在虚拟导航栏的右侧将会显示操作溢出菜单控件。
+您可以触摸这些控件,以传统 Android 菜单风格显示应用的操作。
+</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_legacy_apps.png">
+
+  </div>
+</div>
diff --git a/docs/html-intl/intl/zh-cn/design/patterns/confirming-acknowledging.jd b/docs/html-intl/intl/zh-cn/design/patterns/confirming-acknowledging.jd
index aa4ae1f..d4eaaff 100644
--- a/docs/html-intl/intl/zh-cn/design/patterns/confirming-acknowledging.jd
+++ b/docs/html-intl/intl/zh-cn/design/patterns/confirming-acknowledging.jd
@@ -4,12 +4,12 @@
 
 <p>在某些情况下,当用户在您的应用中调用某个操作时,最好使用文字内容来<em>确认</em>或<em>确知</em>该操作。</p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <img src="{@docRoot}design/media/confirm_ack_confirming.png">
     <p><strong>确认</strong>是要求用户确认自己确实希望执行刚才所调用的操作。在某些情况下,确认随需要用户考虑的操作所相关的警告或关键信息一起显示。</p>
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/confirm_ack_acknowledge.png">
     <p><strong>确知</strong>就是显示一段文字信息,让用户知道自己刚才调用的操作已经完成。这将消除系统正在执行的隐式操作的不确定性。在某些情况下,确知随撤消操作的选项一起显示。</p>
   </div>
@@ -22,14 +22,14 @@
 <img src="{@docRoot}design/media/confirm_ack_flowchart.png">
 
 <h2>确认</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>示例:Google Play 书籍</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_books.png">
     <p>在该示例中,用户要求从其 Google Play 书架中删除一本书。系统显示了一条<a href="{@docRoot}design/building-blocks/dialogs.html#alerts">警告</a>来要求确认该操作,因为用户必须知道,一旦删除,该书籍将无法继续在任何设备上使用。</p>
     <p>在设计确认对话框时,请使用反映所请求操作的文字作为标题,使标题更有意义。</p>
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <h4>示例:Android Beam</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_beam.png">
     <p>确认不一定要显示在有两个按钮的警告中。在启动 Android Beam 后,系统提示用户触摸要分享的内容(本例中是一张照片)。如果他们决定不继续操作,只需移开手机即可。</p>
@@ -37,15 +37,15 @@
 </div>
 
 <h2>确知</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>示例:已保存中断的 Gmail 草稿</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_draftsave.png">
     <p>在本例中,如果用户在 Gmail 撰写邮件屏幕中向后或向上导航,可能会发生一些意外情况,此时会自动保存当前草稿。Toast 形式的确知会明确告知这一点。它会在几秒钟后消失。</p>
     <p>在这种情况下不能执行撤消操作,因为保存是由应用发起的,而不是由用户执行的。通过导航至草稿列表,可迅速方便地恢复邮件。</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <h4>示例:已删除 Gmail 会话</h4>
     <img src="{@docRoot}design/media/confirm_ack_draft_deleted.png">
     <p>在用户从 Gmail 中的列表删除某个会话后,会出现带撤消选项的确知。确知消息会一直等到用户采取无关操作才会消失,例如滚动列表。</p>
@@ -53,14 +53,14 @@
 </div>
 
 <h2>无需确认或确知</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>示例:+1 操作</h4>
     <img style="padding: 33px 0 30px;" src="{@docRoot}design/media/confirm_ack_ex_plus1.png">
     <p><strong>无需确认</strong>。如果用户意外触摸 +1 按钮,不会有什么大问题。他们只需再次触摸该按钮,撤消该操作即可。</p>
     <p><strong>无需确知</strong>。用户将看到 +1 按钮弹起并变红。这是非常明确的信号。</p>
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <h4>示例:从主屏幕删除应用</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_removeapp.png">
     <p><strong>无需确认</strong>。这属于有意操作:用户必须将项目拖放到相对较大并且独立的目标上。因此,很难发生意外。但是如果用户反悔决定,只需数秒钟时间即可复原。</p>
diff --git a/docs/html-intl/intl/zh-cn/design/patterns/navigation.jd b/docs/html-intl/intl/zh-cn/design/patterns/navigation.jd
index 339a2c5..5d8eae9 100644
--- a/docs/html-intl/intl/zh-cn/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/zh-cn/design/patterns/navigation.jd
@@ -14,15 +14,15 @@
 Android 3.0对全局导航行为做出了重大改变。
 对用户来说,认真遵照“返回”和“向上”的指导准则可让应用的导航更可靠、更符合预期。
 </p>
-<p>Android 2.3 及更早的版本使用<em>返回</em>按钮来支持应用内的导航。在 Android 3.0 中引入操作栏后,出现了第二种导航机制:即<em>向上</em>按钮,由应用图标和左向箭头构成。
-
+<p>Android 2.3 及更早的版本使用系统<em>返回</em>按钮来支持应用内的导航。
+在 Android 3.0 中引入操作栏后,出现了第二种导航机制:即<em>向上</em>按钮,由应用图标和左向箭头构成。
 </p>
 
 <img src="{@docRoot}design/media/navigation_with_back_and_up.png">
 
-<h2 id="up-vs-back">向上和返回</h2>
+<h2 id="up-vs-back">向上与返回的比较</h2>
 
-<p>“向上”按钮用于根据屏幕之间的层级关系在应用中导航。
+<p>“向上”按钮用于根据屏幕之间的层级关系在某个应用内部导航。
 例如,如果屏幕 A 显示项目列表,并且选择某个项目会调出屏幕 B(该屏幕显示项目的更多详情),则屏幕 B 应提供可返回屏幕 A 的“向上”按钮。
 
 </p>
@@ -50,9 +50,9 @@
 <h2 id="within-app">应用内导航</h2>
 
 <h4>通过多个入口点导航屏幕</h4>
-<p>有时,某个屏幕在应用层级中的位置并不固定,可以从多个入口点抵达 &mdash; 例如可从应用中的其他任何屏幕抵达设置屏幕。在这种情况下,选择“向上”按钮会返回到引用屏幕,其行为跟“返回”按钮相同。
+<p>有时,某个屏幕在应用层级中的位置并不固定,可以从多个入口点抵达 &mdash; 例如可从应用中的其他任何屏幕抵达设置屏幕。
 
-
+在这种情况下,应选择“向上”按钮来返回到引用屏幕,其行为跟“返回”按钮相同。
 </p>
 <h4>更改屏幕中的视图</h4>
 <p>更改屏幕的视图选项不会更改“向上”或“返回”的行为:屏幕仍然位于应用层级中的同一位置,并且不会创建新的导航历史记录。
@@ -117,8 +117,8 @@
 <h4>间接通知</h4>
 
 <p>如果您的应用需要同时提供关于多个事件的信息,可使用一条通知将用户引导至某个间隙屏幕。
-该屏幕将这些事件汇总,并为用户提供深度导航应用的路径。这种样式的通知称为<em>间接通知</em>。
-
+该屏幕将这些事件汇总,并为用户提供深度导航应用的路径。
+这种样式的通知称为<em>间接通知</em>。
 </p>
 
 <p>与标准(直接)通知不同,在间接通知的间隙屏幕上按下“返回”会让用户回到触发通知的点 &mdash; 不会在返回栈中插入额外的屏幕。
@@ -153,53 +153,53 @@
 <h2 id="between-apps">在应用之间导航</h2>
 
 <p>Android 系统的一个基本优势在于能够让应用相互激活,这样用户就可以直接从一个应用导航到另一个应用。
-例如,需要获取照片的应用可激活相机应用,后者可将照片返回给前者。这对于开发者和用户来说都极为有利,开发者可以方便地利用来自其他应用的代码,而用户则在执行常用操作时可以获得一致的体验。
+例如,需要获取照片的应用可激活相机应用,后者可将照片返回给前者。
 
-
+这对于开发者和用户来说都极为有利,开发者可以方便地利用来自其他应用的代码,而用户则在执行常用操作时可以获得一致的体验。
 
 </p>
 
-<p>为了理解应用到应用的导航,必须理解下面探讨的 Android 框架行为
-。</p>
-
-<h4>活动、任务和意向</h4>
-
-<p>在 Android 中,<strong>活动</strong>是一个应用组件,用于定义信息屏幕以及用户可执行的所有相关操作。
-您的应用是活动的集合,由您创建的活动以及从其他应用重用的活动构成。
+<p>为了理解应用到应用的导航,必须理解下面探讨的 Android 框架行为。
 </p>
 
-<p><strong>任务</strong>是用户为达成某个目标而执行的活动序列。一个
-任务可以只利用一个应用的活动,也可以利用来自多个不同应用的活动。
+<h4>Activity、任务和 Intent</h4>
+
+<p>在 Android 中,<strong>Activity</strong> 是一个应用组件,用于定义信息屏幕以及用户可执行的所有相关操作。
+您的应用是 Activity 的集合,由您创建的 Activity 以及从其他应用重用的 Activity 构成。
 </p>
 
-<p><strong>意向</strong>是应用的一种机制,用于发出信号以表明需要另一个应用的辅助才能执行某个操作。
-应用的活动可指示其可响应哪些意向。
-对于诸如“分享”这样的常用意向,用户可能安装有许多可执行该请求的应用。
+<p><strong>任务</strong>是用户为达成某个目标而执行的 Activity 序列。一个
+任务可以只利用一个应用的 Activity,也可以利用来自多个不同应用的 Activity。
+</p>
+
+<p><strong>Intent</strong>是应用的一种机制,用于发出信号以表明需要另一个应用的辅助才能执行某个操作。
+应用的 Activity 可指示其可响应哪些 Intent。
+对于诸如“分享”这样的常用Intent,用户可能安装有许多可执行该请求的应用。
 </p>
 
 <h4>示例:在应用之间导航以支持分享</h4>
 
-<p>要了解如何结合使用活动、任务和意向,可以考虑一个应用如何让用户通过使用另一应用来分享内容的例子。例如,从主屏幕启动 Play 商店应用可启动新任务 A(参见下图)。
-
-在 Play 商店中导航并触摸某本促销图书来查看其详情之后,用户会停留在该任务中并通过添加活动来扩展该任务。
-触发“分享”操作会通过一个对话框来提示用户选择活动,该对话框中会列出来自不同应用、之前已注册用于处理“分享”意向的每一种活动。
+<p>要了解如何结合使用 Activity、任务和 Intent,可以考虑如何让一个应用允许用户通过使用另一应用来分享内容的例子。
+例如,从主屏幕启动 Play 商店应用可启动新任务 A(参见下图)。
+在 Play 商店中导航并触摸某本促销图书来查看其详情之后,用户会停留在该任务中并通过添加 Activity 来扩展该任务。
+触发“分享”操作会通过一个对话框来提示用户选择 Activity,该对话框中会列出来自不同应用、之前已注册用于处理“分享” Intent 的每一种 Activity。
 
 </p>
 
 <img src="{@docRoot}design/media/navigation_between_apps_inward.png">
 
-<p>如果用户选择通过 Gmail 分享,则会以延续任务 A 的形式添加 Gmail 的写邮件活动 &mdash; 而不会创建新任务。
+<p>如果用户选择通过 Gmail 分享,则会以延续任务 A 的形式添加 Gmail 的写邮件 Activity &mdash; 而不会创建新任务。
 如果 Gmail 在后台还运行有自己的任务,该任务不会受影响。
 </p>
 
-<p>在写邮件活动中,发送邮件或触摸“返回”按钮会让用户回到图书详情活动。
+<p>在写邮件 Activity 中,发送邮件或触摸“返回”按钮会让用户回到图书详情 Activity。
 之后继续触摸“返回”会在 Play 商店中继续回退,直至抵达主屏幕。
 </p>
 
 <img src="{@docRoot}design/media/navigation_between_apps_back.png">
 
-<p>尽管如此,用户可通过在写邮件活动中触摸“向上”按钮表明其希望留在 Gmail 中。
-此时会显示 Gmail 的会话列表活动,并为其创建新任务 B。新任务都始于主屏幕,因此从会话列表触摸“返回”按钮,始终会回到主屏幕。
+<p>尽管如此,用户可通过在写邮件 Activity 中触摸“向上”按钮表明其希望留在 Gmail 中。
+此时会显示 Gmail 的会话列表 Activity,并为其创建新任务 B。新任务都始于主屏幕,因此从会话列表触摸“返回”按钮,始终会回到主屏幕。
 </p>
 
 <img src="{@docRoot}design/media/navigation_between_apps_up.png">
@@ -208,6 +208,6 @@
 如果 Gmail 在后台还运行有自己的任务,该任务会被任务 B 取代 &mdash; 之前的上下文会被丢弃,以使用户达成新目标。
 </p>
 
-<p>如果您的应用经过注册,以使用应用中的深层活动来处理意向,可参阅<a href="#into-your-app">通过主屏幕小工具和通知进入您的应用</a>,获得有关如何指定“向上”导航行为的指导。
+<p>如果您的应用经过注册,以使用应用中的深层 Activity 来处理 Intent,可参阅<a href="#into-your-app">通过主屏幕小工具和通知进入您的应用</a>,获得有关如何指定“向上”导航行为的指导。
 
 </p>
diff --git a/docs/html-intl/intl/zh-cn/distribute/tools/promote/brand.jd b/docs/html-intl/intl/zh-cn/distribute/tools/promote/brand.jd
index 065673e..8984fc5 100644
--- a/docs/html-intl/intl/zh-cn/distribute/tools/promote/brand.jd
+++ b/docs/html-intl/intl/zh-cn/distribute/tools/promote/brand.jd
@@ -69,77 +69,6 @@
 
   <p>不得使用 Android 徽标专用的字体。</p>
 
-  <h2 id="brand-google_play">Google Play</h2>
-
-
-   <p>以下是关于 Google Play 品牌和相关资源的指南。</p>
-
-  <h4>在文本中使用 Google Play</h4>
-
-  <p>在文本中,请务必为首次出现或位于显著位置的 Google Play™ 加上 TM 符号。</p>
-
-  <p>在提及移动设备体验时,除非相应文本中是很明显的说明性内容,否则请使用“Google Play”。例如,营销资料的标题可以是“从 Google Play™ 下载我们的游戏”,但是说明性内容可以是“使用 Google Play™ 商店应用下载我们的游戏”。
-
-   <p>每次使用 Google Play 名称或图标时,你的资料中都应注明以下归属信息:</p>
-
-  <blockquote><em>Google Play 是 Google Inc. 的商标。</em></blockquote>
-
-
-    <div style="float:right;width:96px;margin-left:30px">
-       <img src="{@docRoot}images/brand/Google_Play_Store_96.png" alt="" />
-      <p style="text-align:center">
-         <a href="{@docRoot}images/brand/Google_Play_Store_48.png">48x48</a> |
-         <a href="{@docRoot}images/brand/Google_Play_Store_96.png">96x96</a><br />
-         <a href="{@docRoot}images/brand/Google_Play_Store_600.png">600x576</a>
-         </p>
-    </div>
-
-  <h4>Google Play 商店图标</h4>
-
-  <p>你可以使用 Google Play 商店图标,但不得修改它。</p>
-
-  <p>如上文所述,在文案中提及 Google Play 商店应用时,请使用全称:“Google Play 商店”。但直接标注 Google Play 商店图标时,可以只使用“Play 商店”,以便与设备上显示的图标标签一致。</p>
-
-
-  <h4>Google Play 徽章</h4>
-
-    <div style="float:right;clear:right;width:172px;margin-left:30px">
-      <img src="{@docRoot}images/brand/en_app_rgb_wo_60.png" alt="" />
-      <p style="text-align:center">
-         <a href="{@docRoot}images/brand/en_app_rgb_wo_45.png">129x45</a> |
-         <a href="{@docRoot}images/brand/en_app_rgb_wo_60.png">172x60</a></p>
-    </div>
-
-    <div style="float:right;clear:right;width:172px;margin-left:30px">
-      <img src="{@docRoot}images/brand/en_generic_rgb_wo_60.png" alt="" />
-      <p style="text-align:center">
-         <a href="{@docRoot}images/brand/en_generic_rgb_wo_45.png">129x45</a> |
-         <a href="{@docRoot}images/brand/en_generic_rgb_wo_60.png">172x60</a></p>
-    </div>
-
-    <p>你可以在网站和宣传资料中使用“即刻获取 Google Play”和“即刻获取 Android 应用 Google Play”徽标作为徽章,以指向你在 Google Play 上的商品。你也可以使用其他 Google Play 徽章格式,以及用于音乐、图书、杂志、电影和电视节目的徽章。要申请这些徽章,请使用 <a href="https://docs.google.com/forms/d/1YE5gZpAAcFKjYcUddCsK1Bv9a9Y-luaLVnkazVlaJ2w/viewform">Android 和 Google Play 品牌权限咨询表单</a>。</p>
-
-    <ul>
-      <li>请不要修改徽章图片的颜色、比例、间距或其他任何方面。
-      </li>
-      <li>当与其他应用市场的徽标一起使用时,Google Play 徽标尺寸不应小于这些徽标的尺寸。</li>
-      <li>在线使用时,徽章应链接至以下内容之一:
-        <ul>
-          <li>由你发布的商品的列表,例如:<br />
-          <span style="margin-left:1em">http://play.google.com/store/search?q=publisherName<em></em></span>
-          </li>
-          <li>Google Play 中相应应用的商品详情页,例如:<br />
-          <span style="margin-left:1em">http://play.google.com/store/apps/details?id=packageName<em></em></span>
-          </li>
-        </ul>
-      </li>
-    </ul>
-
-    <p>要快速创建链接至你在 Google Play 上的应用的徽章,请使用 <a href="{@docRoot}distribute/tools/promote/badges.html">Google Play 徽章生成器</a>(支持 40 多种语言)。</p>
-
-    <p>要创建自定义尺寸的徽章,请下载<a href="{@docRoot}distribute/tools/promote/badge-files.html">支持 40 多种语言的 Google Play 徽章</a>的 Adobe® Illustrator® (.ai) 文件。</p>
-
-    <p>要详细了解如何链接至 Google Play 中的商品详情页,请参阅<a href="{@docRoot}distribute/tools/promote/linking.html">链接至你的商品</a>。</p>
 
   <h2 id="Marketing_Review">营销审核和品牌咨询</h2>
 
diff --git a/docs/html-intl/intl/zh-cn/guide/components/activities.jd b/docs/html-intl/intl/zh-cn/guide/components/activities.jd
new file mode 100644
index 0000000..efc1fb1
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/components/activities.jd
@@ -0,0 +1,756 @@
+page.title=Activity
+page.tags=Activity, Intent 
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>本文内容</h2>
+<ol>
+  <li><a href="#Creating">创建 Activity</a>
+    <ol>
+      <li><a href="#UI">实现用户界面</a></li>
+      <li><a href="#Declaring">在清单文件中声明  Activity</a></li>
+    </ol>
+  </li>
+  <li><a href="#StartingAnActivity">启动 Activity</a>
+    <ol>
+      <li><a href="#StartingAnActivityForResult">启动 Activity 以获得结果</a></li>
+    </ol>
+  </li>
+  <li><a href="#ShuttingDown">结束 Activity</a></li>
+  <li><a href="#Lifecycle">管理 Activity 生命周期</a>
+    <ol>
+      <li><a href="#ImplementingLifecycleCallbacks">实现生命周期回调</a></li>
+      <li><a href="#SavingActivityState">保存 Activity 状态</a></li>
+      <li><a href="#ConfigurationChanges">处理配置变更</a></li>
+      <li><a href="#CoordinatingActivities">协调 Activity</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>关键类</h2>
+<ol>
+  <li>{@link android.app.Activity}</li>
+</ol>
+
+<h2>另请参阅</h2>
+<ol>
+  <li><a href="{@docRoot}guide/components/tasks-and-back-stack.html">任务和返回栈</a>
+</li>
+</ol>
+
+</div>
+</div>
+
+
+
+<p>{@link android.app.Activity}
+是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。
+每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上。
+
+</p>
+
+<p> 一个应用通常由多个彼此松散联系的 Activity 组成。
+一般会指定应用中的某个 Activity 为“主” Activity,即首次启动应用时呈现给用户的那个 Activity。
+而且每个 Activity 均可启动另一个 Activity,以便执行不同的操作。
+每次新 Activity 启动时,前一 Activity 便会停止,但系统会在堆栈(“返回栈”)中保留该 Activity。
+
+当新 Activity 启动时,系统会将其推送到返回栈上,并取得用户焦点。
+返回栈遵循“后进先出”堆栈机制,因此,当用户完成当前 Activity 并按“返回”
+<em></em>
+按钮时,系统会从堆栈中将其弹出(并销毁),然后恢复前一 Activity。(<a href="{@docRoot}guide/components/tasks-and-back-stack.html">任务和返回栈</a>文档中对返回栈有更详细的阐述。)
+
+</p>
+
+<p>当一个 Activity 因某个新 Activity 启动而停止时,系统会通过该 Activity 的生命周期回调方法通知其这一状态变化。Activity 因状态变化&mdash;系统是创建 Activity、停止 Activity、恢复 Activity 还是销毁 Activity&mdash; 而收到的回调方法可能有若干种,每一种回调方法都会为您提供执行与该状态变化相应的特定操作的机会。
+
+
+
+
+例如,停止时,您的 Activity 应释放任何大型对象,例如网络或数据库连接。
+当 Activity 恢复时,您可以重新获取所需资源,并恢复执行中断的操作。
+这些状态转变都是 Activity 生命周期的一部分。
+</p>
+
+<p>本文的其余部分阐述有关如何创建和使用 Activity 的基础知识(包括对 Activity 生命周期工作方式的全面阐述),以便您正确管理各种 Activity 状态之间的转变。
+
+</p>
+
+
+
+<h2 id="Creating">创建 Activity</h2>
+
+<p>要创建 Activity,您必须创建 {@link android.app.Activity}
+的子类(或使用其现有子类)。您需要在子类中实现 Activity 在其生命周期的各种状态之间转变时(例如创建 Activity、停止 Activity、恢复 Activity 或销毁 Activity 时)系统调用的回调方法。
+
+两个最重要的回调方法是:
+</p>
+
+<dl>
+  <dt>{@link android.app.Activity#onCreate onCreate()}</dt>
+  <dd>您必须实现此方法。系统会在创建您的
+Activity 时调用此方法。您应该在实现内初始化 Activity 的必需组件。
+
+    最重要的是,您必须在此方法内调用 {@link android.app.Activity#setContentView
+    setContentView()},以定义 Activity 用户界面的布局。</dd>
+  <dt>{@link android.app.Activity#onPause onPause()}</dt>
+  <dd>系统将此方法作为用户离开 Activity 的第一个信号(但并不总是意味着 Activity 会被销毁)进行调用。
+您通常应该在此方法内确认在当前用户会话结束后仍然有效的任何更改(因为用户可能不会返回)。
+
+</dd>
+</dl>
+
+<p>您还应使用几种其他生命周期回调方法,以便提供流畅的 Activity 间用户体验,以及处理导致您的 Activity 停止甚至被销毁的意外中断。
+
+后文的<a href="#Lifecycle">管理 Activity 生命周期</a>部分对所有生命周期回调方法进行了阐述。
+</p>
+
+
+
+<h3 id="UI">实现用户界面</h3>
+
+<p> Activity 的用户界面是由层级式视图&mdash;衍生自 {@link android.view.View}
+类的对象—提供的。每个视图都控制 Activity 窗口内的特定矩形空间,可对用户交互作出响应。
+例如,视图可以是在用户触摸时启动某项操作的按钮。
+</p>
+
+<p>您可以利用 Android
+提供的许多现成视图设计和组织您的布局。“小工具”是提供按钮、文本字段、复选框或仅仅是一幅图像等屏幕视觉(交互式)元素的视图。
+“布局”是衍生自 {@link
+android.view.ViewGroup}
+的视图,为其子视图提供唯一布局模型,例如线性布局、网格布局或相对布局。您还可以为 {@link android.view.View} 类和
+{@link android.view.ViewGroup}
+类创建子类(或使用其现有子类)来自行创建小工具和布局,然后将它们应用于您的 Activity 布局。</p>
+
+<p>利用视图定义布局的最常见方法是借助保存在您的应用资源内的 XML
+布局文件。这样一来,您就可以将用户界面的设计与定义 Activity 行为的源代码分开维护。
+您可以通过 {@link android.app.Activity#setContentView(int) setContentView()}
+将布局设置为 Activity 的 UI,从而传递布局的资源
+ID。不过,您也可以在 Activity 代码中创建新
+{@link android.view.View},并通过将新 {@link
+android.view.View} 插入 {@link android.view.ViewGroup} 来创建视图层次,然后通过将根
+{@link android.view.ViewGroup} 传递到 {@link android.app.Activity#setContentView(View)
+setContentView()} 来使用该布局。</p>
+
+<p>如需了解有关创建用户界面的信息,请参阅<a href="{@docRoot}guide/topics/ui/index.html">用户界面</a>文档。</p>
+
+
+
+<h3 id="Declaring">在清单文件中声明 Activity</h3>
+
+<p>您必须在清单文件中声明您的 Activity,这样系统才能访问它。
+要声明您的 Activity,请打开您的清单文件,并将 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 元素添加为
+<a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>
+元素的子项。例如:</p>
+
+<pre>
+&lt;manifest ... &gt;
+  &lt;application ... &gt;
+      &lt;activity android:name=".ExampleActivity" /&gt;
+      ...
+  &lt;/application ... &gt;
+  ...
+&lt;/manifest &gt;
+</pre>
+
+<p>您还可以在此元素中加入几个其他特性,以定义 Activity 标签、Activity 图标或风格主题等用于设置 Activity
+UI
+风格的属性。<a href="{@docRoot}guide/topics/manifest/activity-element.html#nm">{@code android:name}</a>
+特性是唯一的必需特性&mdash;它指定 Activity 的类名。应用一旦发布,即不应更改此类名,否则,可能会破坏诸如应用快捷方式等一些功能(请阅读博客文章
+<a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">Things
+That Cannot Change</a>
+[不能更改的内容])。</p>
+
+<p>请参阅 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+元素参考文档,了解有关在清单文件中声明 Activity 的详细信息。</p>
+
+
+<h4>使用 Intent 过滤器</h4>
+
+<p><a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> 元素还可指定各种 Intent 过滤器&mdash;使用 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;Intent-filter&gt;}</a>
+元素&mdash;以声明其他应用组件激活它的方法。</p>
+
+<p>当您使用 Android SDK 工具创建新应用时,系统自动为您创建的存根 Activity 包含一个 Intent 过滤器,其中声明了该 Activity 响应“主”操作且应置于“launcher”类别内。
+
+ Intent 过滤器的内容与以下所示类似:
+</p>
+
+<pre>
+&lt;activity android:name=".ExampleActivity" android:icon="@drawable/app_icon"&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p><a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> 元素指定这是应用的“主”入口点。<a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a>
+元素指定此 Activity 应列入系统的应用启动器内(以便用户启动该 Activity)。</p>
+
+<p>如果您打算让应用成为独立应用,不允许其他应用激活其 Activity,则您不需要任何其他 Intent 过滤器。
+正如前例所示,只应有一个 Activity 具有“主”操作和“launcher”类别。
+您不想提供给其他应用的 Activity 不应有任何 Intent 过滤器,您可以利用显式 Intent 自行启动它们(下文对此做了阐述)。
+
+</p>
+
+<p>不过,如果您想让 Activity 对衍生自其他应用(以及您的自有应用)的隐式 Intent 作出响应,则必须为 Activity 定义其他 Intent 过滤器。
+
+对于您想要作出响应的每一个 Intent 类型,您都必须加入相应的 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;Intent-filter&gt;}</a>,其中包括一个
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> 元素,还可选择性地包括一个 <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> 元素和/或一个 <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
+&lt;data&gt;}</a> 元素。这些元素指定您的 Activity 可以响应的 Intent 类型。
+</p>
+
+<p>如需了解有关您的 Activity 如何响应 Intent 的详细信息,请参阅<a href="{@docRoot}guide/components/intents-filters.html"> Intent 和 Intent 过滤器</a>文档。
+</p>
+
+
+
+<h2 id="StartingAnActivity">启动 Activity</h2>
+
+<p>您可以通过调用 {@link android.app.Activity#startActivity
+  startActivity()},并将其传递给描述您想启动的 Activity 的 {@link android.content.Intent} 
+来启动另一个 Activity。Intent 对象会指定您想启动的具体 Activity 或描述您想执行的操作类型(系统会为您选择合适的 Activity,甚至是来自其他应用的 Activity)。
+
+
+Intent 对象还可能携带少量供所启动 Activity 使用的数据。
+</p>
+
+<p>在您的自有应用内工作时,您经常只需要启动某个已知 Activity。
+ 您可以通过使用类名创建一个显式定义您想启动的 Activity 的 Intent 对象来实现此目的。
+例如,可以通过以下代码让一个 Activity 启动另一个名为 {@code
+SignInActivity} 的 Activity:</p>
+
+<pre>
+Intent intent = new Intent(this, SignInActivity.class);
+startActivity(intent);
+</pre>
+
+<p>不过,您的应用可能还需要利用您的 Activity 数据执行某项操作,例如发送电子邮件、短信或状态更新。
+在这种情况下,您的应用自身可能不具有执行此类操作所需的 Activity,因此您可以改为利用设备上其他应用提供的 Activity 为您执行这些操作。
+
+这便是 Intent 对象的真正价值所在&mdash;您可以创建一个 Intent 对象,对您想执行的操作进行描述,系统会从其他应用启动相应的 Activity。
+
+
+如果有多个 Activity 可以处理 Intent,则用户可以选择要使用哪一个。
+例如,如果您想允许用户发送电子邮件,可以创建以下 Intent 对象:
+
+</p>
+
+<pre>
+Intent intent = new Intent(Intent.ACTION_SEND);
+intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
+startActivity(intent);
+</pre>
+
+<p>添加到 Intent 中的 {@link android.content.Intent#EXTRA_EMAIL} extra 是一个字符串数组,其中包含应将电子邮件发送到的电子邮件地址。
+当电子邮件应用响应此 Intent 时,它会读取 extra 中提供的字符串数组,并将它们放入电子邮件撰写窗体的“收件人”字段。
+
+在这种情况下,电子邮件应用的 Activity 启动,并且当用户完成操作时,您的 Activity 会恢复执行。
+</p>
+
+
+
+
+<h3 id="StartingAnActivityForResult">启动 Activity 以获得结果</h3>
+
+<p>有时,您可能需要从启动的 Activity 获得结果。在这种情况下,请通过调用 {@link android.app.Activity#startActivityForResult
+  startActivityForResult()}(而非 {@link android.app.Activity#startActivity
+  startActivity()})来启动 Activity。
+要想在随后收到后续 Activity 的结果,请实现
+{@link android.app.Activity#onActivityResult onActivityResult()} 回调方法。
+当后续 Activity 完成时,它会使用 {@link
+android.content.Intent} 向您的 {@link android.app.Activity#onActivityResult onActivityResult()}
+方法返回结果。</p>
+
+<p>例如,您可能希望用户选取其中一位联系人,以便您的 Activity 对该联系人中的信息执行某项操作。
+您可以通过以下代码创建此类 Intent 并处理结果:
+</p>
+
+<pre>
+private void pickContact() {
+    // Create an intent to "pick" a contact, as defined by the content provider URI
+    Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
+    startActivityForResult(intent, PICK_CONTACT_REQUEST);
+}
+
+&#64;Override
+protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+    // If the request went well (OK) and the request was PICK_CONTACT_REQUEST
+    if (resultCode == Activity.RESULT_OK &amp;&amp; requestCode == PICK_CONTACT_REQUEST) {
+        // Perform a query to the contact's content provider for the contact's name
+        Cursor cursor = getContentResolver().query(data.getData(),
+        new String[] {Contacts.DISPLAY_NAME}, null, null, null);
+        if (cursor.moveToFirst()) { // True if the cursor is not empty
+            int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
+            String name = cursor.getString(columnIndex);
+            // Do something with the selected contact's name...
+        }
+    }
+}
+</pre>
+
+<p>上例显示的是,您在处理 Activity 结果时应该在 {@link
+android.app.Activity#onActivityResult onActivityResult()}
+方法中使用的基本逻辑。第一个条件检查请求是否成功(如果成功,则{@code resultCode} 将为 {@link android.app.Activity#RESULT_OK})以及此结果响应的请求是否已知 &mdash; 在此情况下,{@code requestCode}与随 {@link android.app.Activity#startActivityForResult
+startActivityForResult()} 发送的第二个参数匹配。
+
+
+代码通过查询 {@link android.content.Intent} 中返回的数据({@code data} 参数)从该处开始处理 Activity 结果。
+</p>
+
+<p>实际情况是,{@link
+android.content.ContentResolver} 对一个内容提供程序执行查询,后者返回一个
+{@link android.database.Cursor},让查询的数据能够被读取。如需了解详细信息,请参阅<a href="{@docRoot}guide/topics/providers/content-providers.html">内容提供程序</a>文档。
+</p>
+
+<p>如需了解有关 Intent 用法的详细信息,请参阅<a href="{@docRoot}guide/components/intents-filters.html"> Intent 和 Intent 过滤器</a>文档。
+</p>
+
+
+<h2 id="ShuttingDown">结束 Activity</h2>
+
+<p>您可以通过调用 Activity 的 {@link android.app.Activity#finish
+finish()} 方法来结束该 Activity。您还可以通过调用
+{@link android.app.Activity#finishActivity finishActivity()} 结束您之前启动的另一个 Activity。</p>
+
+<p class="note"><strong>注:</strong>在大多数情况下,您不应使用这些方法显式结束 Activity。
+正如下文有关 Activity 生命周期的部分所述,Android 系统会为您管理 Activity 的生命周期,因此您无需完成自己的 Activity。
+
+调用这些方法可能对预期的用户体验产生不良影响,因此只应在您确实不想让用户返回此 Activity 实例时使用。
+
+</p>
+
+
+<h2 id="Lifecycle">管理 Activity 生命周期</h2>
+
+<p>通过实现回调方法管理 Activity 的生命周期对开发强大而又灵活的应用至关重要。
+
+Activity 的生命周期会直接受到 Activity 与其他 Activity、其任务及返回栈的关联性的影响。
+</p>
+
+<p>Activity 基本上以三种状态存在:</p>
+
+<dl>
+  <dt><i>已继续</i></dt>
+    <dd>此 Activity 位于屏幕前台并具有用户焦点。(有时也将此状态称作“运行中”。)
+</dd>
+
+  <dt><i>已暂停</i></dt>
+    <dd>另一个 Activity 位于屏幕前台并具有用户焦点,但此 Activity 仍可见。也就是说,另一个 Activity 显示在此 Activity 上方,并且该 Activity 部分透明或未覆盖整个屏幕。
+
+已暂停的 Activity 处于完全 Activity 状态({@link android.app.Activity}
+对象保留在内存中,它保留了所有状态和成员信息,并与窗口管理器保持连接),但在内存极度不足的情况下,可能会被系统终止。
+</dd>
+
+  <dt><i>已停止</i></dt>
+    <dd>该 Activity 被另一个 Activity 完全遮盖(该 Activity 目前位于“后台”)。
+已停止的 Activity 同样仍处于 Activity 状态({@link android.app.Activity}
+对象保留在内存中,它保留了所有状态和成员信息,但<em>未</em>与窗口管理器连接)。
+不过,它对用户不再可见,在他处需要内存时可能会被系统终止。
+</dd>
+</dl>
+
+<p>如果 Activity 处于暂停或停止状态,系统可通过要求其结束(调用其
+{@link android.app.Activity#finish finish()}
+方法)或直接终止其进程,将其从内存中删除。(将其结束或终止后)再次打开 Activity 时,必须重建。
+</p>
+
+
+
+<h3 id="ImplementingLifecycleCallbacks">实现生命周期回调</h3>
+
+<p>当一个 Activity 转入和转出上述不同状态时,系统会通过各种回调方法向其发出通知。
+所有回调方法都是挂钩,您可以在 Activity 状态发生变化时替代这些挂钩来执行相应操作。
+以下框架 Activity 包括每一个基本生命周期方法:
+</p>
+
+
+<pre>
+public class ExampleActivity extends Activity {
+    &#64;Override
+    public void {@link android.app.Activity#onCreate onCreate}(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // The activity is being created.
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onStart onStart()} {
+        super.onStart();
+        // The activity is about to become visible.
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onResume onResume()} {
+        super.onResume();
+        // The activity has become visible (it is now "resumed").
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onPause onPause()} {
+        super.onPause();
+        // Another activity is taking focus (this activity is about to be "paused").
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onStop onStop()} {
+        super.onStop();
+        // The activity is no longer visible (it is now "stopped")
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onDestroy onDestroy()} {
+        super.onDestroy();
+        // The activity is about to be destroyed.
+    }
+}
+</pre>
+
+<p class="note"><strong>注:</strong>正如以上示例所示,您在实现这些生命周期方法时必须始终先调用超类实现,然后再执行任何操作。
+</p>
+
+<p>这些方法共同定义 Activity 的整个生命周期。您可以通过实现这些方法监控 Activity 生命周期中的三个嵌套循环:
+ </p>
+
+<ul>
+<li>Activity 的<b>整个生命周期</b>发生在 {@link
+android.app.Activity#onCreate onCreate()} 调用与 {@link
+android.app.Activity#onDestroy} 调用之间。您的 Activity 应在 {@link android.app.Activity#onCreate onCreate()}
+中执行“全局”状态设置(例如定义布局),并释放 {@link android.app.Activity#onDestroy}
+中的所有其余资源。例如,如果您的 Activity 有一个在后台运行的线程,用于从网络上下载数据,它可能会在
+{@link android.app.Activity#onCreate onCreate()} 中创建该线程,然后在
+{@link
+android.app.Activity#onDestroy} 中停止该线程。</li>
+
+<li><p>Activity 的<b>可见生命周期</b>发生在 {@link
+android.app.Activity#onStart onStart()} 调用与 {@link
+android.app.Activity#onStop onStop()} 调用之间。在这段时间,用户可以在屏幕上看到 Activity 并与其交互。
+例如,当一个新 Activity 启动,并且此 Activity 不再可见时,系统会调用
+{@link android.app.Activity#onStop onStop()}。您可以在调用这两个方法之间保留向用户显示 Activity 所需的资源。
+例如,您可以在
+{@link
+android.app.Activity#onStart onStart()} 中注册一个 {@link android.content.BroadcastReceiver} 以监控影响 UI
+的变化,并在用户无法再看到您显示的内容时在 {@link android.app.Activity#onStop onStop()}
+中将其取消注册。在 Activity 的整个生命周期,当 Activity 在对用户可见和隐藏两种状态中交替变化时,系统可能会多次调用 {@link android.app.Activity#onStart onStart()} 和 {@link
+android.app.Activity#onStop onStop()}。
+</p></li>
+
+<li><p>Activity 的<b>前台生命周期</b>发生在 {@link
+android.app.Activity#onResume onResume()} 调用与 {@link android.app.Activity#onPause
+onPause()} 调用之间。在这段时间,Activity 位于屏幕上的所有其他 Activity 之前,并具有用户输入焦点。
+Activity 可频繁转入和转出前台&mdash;例如,当设备转入休眠状态或出现对话框时,系统会调用 {@link android.app.Activity#onPause onPause()}。
+
+由于此状态可能经常发生转变,因此这两个方法中应采用适度轻量级的代码,以避免因转变速度慢而让用户等待。
+</p></li>
+</ul>
+
+<p>图 1 说明了这些循环以及 Activity 在状态转变期间可能经过的路径。矩形表示回调方法,当 Activity 在不同状态之间转变时,您可以实现这些方法来执行操作。
+
+ <p>
+
+<img src="{@docRoot}images/activity_lifecycle.png" alt="" />
+<p class="img-caption"><strong>图 1. </strong>Activity 生命周期。</p>
+
+<p>表 1 列出了相同的生命周期回调方法,其中对每一种回调方法做了更详细的描述,并说明了每一种方法在 Activity 整个生命周期内的位置,包括在回调方法完成后系统能否终止 Activity。
+
+
+</p>
+
+<p class="table-caption"><strong>表 1. </strong>Activity 生命周期回调方法汇总表。
+</p>
+
+<table border="2" width="85%" frame="hsides" rules="rows">
+<colgroup align="left" span="3"></colgroup>
+<colgroup align="left"></colgroup>
+<colgroup align="center"></colgroup>
+<colgroup align="center"></colgroup>
+
+<thead>
+<tr><th colspan="3">方法</th> <th>描述</th> <th>是否能事后终止?</th> <th>后接</th></tr>
+</thead>
+
+<tbody>
+<tr>
+  <td colspan="3" align="left"><code>{@link android.app.Activity#onCreate onCreate()}</code></td>
+  <td>首次创建 Activity 时调用。
+      您应该在此方法中执行所有正常的静态设置&mdash;
+创建视图、将数据绑定到列表等等。系统向此方法传递一个 Bundle 对象,其中包含 Activity 的上一状态,不过前提是捕获了该状态(请参阅后文的<a href="#actstate">保存 Activity 状态</a>)。
+
+
+
+      <p>始终后接 {@code onStart()}。</p></td>
+  <td align="center">否</td>
+      <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td rowspan="5" style="border-left: none; border-right: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onRestart
+onRestart()}</code></td>
+   <td>在 Activity 已停止并即将再次启动前调用。
+
+       <p>始终后接 {@code onStart()}</p></td>
+   <td align="center">否</td>
+   <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStart onStart()}</code></td>
+   <td>在 Activity 即将对用户可见之前调用。
+       <p>如果 Activity 转入前台,则后接 {@code onResume()},如果 Activity 转入隐藏状态,则后接 {@code onStop()}。
+</p></td>
+    <td align="center">否</td>
+    <td align="center">{@code onResume()} <br/>或<br/> {@code onStop()}</td>
+</tr>
+
+<tr>
+   <td rowspan="2" style="border-left: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td align="left"><code>{@link android.app.Activity#onResume onResume()}</code></td>
+   <td>在 Activity 即将开始与用户进行交互之前调用。
+此时,Activity 处于 Activity 堆栈的顶层,并具有用户输入焦点。
+
+       <p>始终后接 {@code onPause()}。</p></td>
+   <td align="center">否</td>
+   <td align="center">{@code onPause()}</td>
+</tr>
+
+<tr>
+   <td align="left"><code>{@link android.app.Activity#onPause onPause()}</code></td>
+   <td>当系统即将开始继续另一个 Activity 时调用。
+此方法通常用于确认对持久性数据的未保存更改、停止动画以及其他可能消耗 CPU 的内容,诸如此类。
+
+它应该非常迅速地执行所需操作,因为它返回后,下一个 Activity 才能继续执行。
+
+       <p>如果 Activity 返回前台,则后接 {@code onResume()},如果 Activity 转入对用户不可见状态,则后接 {@code onStop()}。
+
+</td>
+   <td align="center"><strong style="color:#800000">是</strong></td>
+   <td align="center">{@code onResume()} <br/>或<br/> {@code onStop()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStop onStop()}</code></td>
+   <td>Activity 对用户不再可见时调用。如果 Activity 被销毁,或另一个 Activity(一个现有 Activity 或新 Activity)继续执行并将其覆盖,就可能发生这种情况。
+
+
+       <p>如果 Activity 恢复与用户的交互,则后接 {@code onRestart()},如果 Activity 被销毁,则后接
+{@code onDestroy()}。
+</p></td>
+   <td align="center"><strong style="color:#800000">是</strong></td>
+   <td align="center">{@code onRestart()} <br/>或<br/> {@code onDestroy()}</td>
+</tr>
+
+<tr>
+   <td colspan="3" align="left"><code>{@link android.app.Activity#onDestroy
+onDestroy()}</code></td>
+   <td>在 Activity 被销毁前调用。这是 Activity 将收到的最后调用。
+当 Activity 结束(有人调用 Activity 上的 <code>{@link android.app.Activity#finish
+       finish()}</code>),或系统为节省空间而暂时销毁该 Activity 实例时,可能会调用它。
+
+您可以通过
+ <code>{@link
+       android.app.Activity#isFinishing isFinishing()}</code> 方法区分这两种情形。</td>
+   <td align="center"><strong style="color:#800000">是</strong></td>
+   <td align="center"><em>无</em></td>
+</tr>
+</tbody>
+</table>
+
+<p>名为“是否能事后终止?”的列表示系统是否能在不执行另一行 Activity 代码的情况下,在<em>方法返回后</em>随时终止承载 Activity 的进程。
+
+有三个方法带有“是”标记:({@link
+android.app.Activity#onPause
+onPause()}、{@link android.app.Activity#onStop onStop()} 和 {@link android.app.Activity#onDestroy
+onDestroy()})。由于 {@link android.app.Activity#onPause onPause()}
+是这三个方法中的第一个,因此 Activity 创建后,{@link android.app.Activity#onPause onPause()}
+必定成为最后调用的方法,然后<em>才能</em>终止进程&mdash;如果系统在紧急情况下必须恢复内存,则可能不会调用
+{@link
+android.app.Activity#onStop onStop()} 和
+{@link android.app.Activity#onDestroy onDestroy()}。因此,您应该使用 {@link android.app.Activity#onPause onPause()}
+向存储设备写入至关重要的持久性数据(例如用户编辑)。不过,您应该对
+{@link android.app.Activity#onPause onPause()}
+调用期间必须保留的信息有所选择,因为该方法中的任何阻止过程都会妨碍向下一个 Activity 的转变并拖慢用户体验。
+</p>
+
+<p> 在<b>是否能在事后终止?</b>列中标记为“否”的方法可从系统调用它们的一刻起防止承载 Activity 的进程被终止。
+因此,在从 {@link android.app.Activity#onPause onPause()}
+返回的时间到 {@link android.app.Activity#onResume onResume()}
+被调用的时间,系统可以终止 Activity。在 {@link android.app.Activity#onPause onPause()}
+被再次调用并返回前,将无法再次终止 Activity。 </p>
+
+<p class="note"><strong>注:</strong>根据表
+1
+中的定义属于技术上无法“终止”的 Activity 仍可能被系统终止&mdash;但这种情况只有在无任何其他资源的极端情况下才会发生。<a href="{@docRoot}guide/components/processes-and-threads.html">进程和线程处理</a>文档对可能会终止 Activity 的情况做了更详尽的阐述。
+
+</p>
+
+
+<h3 id="SavingActivityState">保存 Activity 状态</h3>
+
+<p><a href="#Lifecycle">管理 Activity 生命周期</a>的引言部分简要提及,当 Activity 暂停或停止时,Activity 的状态会得到保留。
+
+确实如此,因为当 Activity 暂停或停止时,{@link android.app.Activity}
+对象仍保留在内存中 &mdash; 有关其成员和当前状态的所有信息仍处于 Activity 状态。
+因此,用户在 Activity 内所做的任何更改都会得到保留,这样一来,当 Activity 返回前台(当它“继续”)时,这些更改仍然存在。
+
+</p>
+
+<p>不过,当系统为了恢复内存而销毁某项 Activity 时,{@link
+android.app.Activity}
+对象也会被销毁,因此系统在继续 Activity 时根本无法让其状态保持完好,而是必须在用户返回Activity时重建 {@link android.app.Activity}
+对象。但用户并不知道系统销毁 Activity 后又对其进行了重建,因此他们很可能认为 Activity 状态毫无变化。
+
+在这种情况下,您可以实现另一个回调方法对有关 Activity 状态的信息进行保存,以确保有关 Activity 状态的重要信息得到保留:{@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}。
+
+</p>
+
+<p>系统会先调用
+{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()},然后再使 Activity 变得易于销毁。系统会向该方法传递一个
+{@link android.os.Bundle},您可以在其中使用 
+{@link
+android.os.Bundle#putString putString()} 和 {@link
+android.os.Bundle#putInt putInt()} 等方法以名称-值对形式保存有关 Activity 状态的信息。然后,如果系统终止您的应用进程,并且用户返回您的 Activity,则系统会重建该 Activity,并将
+{@link android.os.Bundle} 同时传递给
+{@link android.app.Activity#onCreate onCreate()} 和 {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}。您可以使用上述任一方法从
+{@link android.os.Bundle}
+提取您保存的状态并恢复该 Activity 状态。如果没有状态信息需要恢复,则传递给您的 {@link
+android.os.Bundle}
+是空值(如果是首次创建该 Activity,就会出现这种情况)。</p>
+
+<img src="{@docRoot}images/fundamentals/restore_instance.png" alt="" />
+<p class="img-caption"><strong>图 2. </strong>在两种情况下,Activity 重获用户焦点时可保持状态完好:系统在销毁 Activity 后重建 Activity,Activity 必须恢复之前保存的状态;系统停止 Activity 后继续执行 Activity,并且 Activity 状态保持完好。
+
+
+</p>
+
+<p class="note"><strong>注:</strong>无法保证系统会在销毁您的 Activity 前调用 {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()},因为存在不需要保存状态的情况(例如用户使用“返回”
+<em></em>
+按钮离开您的 Activity 时,因为用户的行为是在显式关闭 Activity)。
+
+如果系统调用 {@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()},它会在调用 {@link
+android.app.Activity#onStop onStop()} 之前,并且可能会在调用 {@link android.app.Activity#onPause
+onPause()} 之前进行调用。</p>
+
+<p>不过,即使您什么都不做,也不实现 {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()},{@link android.app.Activity}
+类的 {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} 默认实现也会恢复部分 Activity 状态。具体地讲,默认实现会为布局中的每个
+{@link
+android.view.View} 调用相应的 {@link
+android.view.View#onSaveInstanceState onSaveInstanceState()}
+方法,让每个视图都能提供有关自身的应保存信息。Android
+框架中几乎每个小工具都会根据需要实现此方法,以便在重建 Activity 时自动保存和恢复对 UI
+所做的任何可见更改。例如,{@link android.widget.EditText}
+小工具保存用户输入的任何文本,{@link android.widget.CheckBox}
+小工具保存复选框的选中或未选中状态。您只需为想要保存其状态的每个小工具提供一个唯一的 ID(通过 <a href="{@docRoot}guide/topics/resources/layout-resource.html#idvalue">{@code android:id}</a>
+属性)。如果小工具没有 ID,则系统无法保存其状态。
+</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<p>您还可以通过将
+{@link android.R.attr#saveEnabled android:saveEnabled} 属性设置为 {@code "false"} 或通过调用 {@link android.view.View#setSaveEnabled setSaveEnabled()}
+方法显式阻止布局内的视图保存其状态。您通常不应将该属性禁用,但如果您想以不同方式恢复 Activity UI
+的状态,就可能需要这样做。</p>
+</div>
+</div>
+
+<p>尽管 {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}
+的默认实现会保存有关您的Activity UI
+的有用信息,您可能仍需替代它以保存更多信息。例如,您可能需要保存在 Activity 生命周期内发生了变化的成员值(它们可能与
+UI 中恢复的值有关联,但默认情况下系统不会恢复储存这些 UI
+值的成员)。</p>
+
+<p>由于 {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} 的默认实现有助于保存 UI 的状态,
+因此如果您为了保存更多状态信息而重写该方法,应始终先调用
+{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
+的超类实现,然后再执行任何操作。同样,如果您替代 {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}
+方法,也应调用它的超类实现,以便默认实现能够恢复视图状态。</p>
+
+<p class="note"><strong>注:</strong>由于无法保证系统会调用
+{@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()},因此您只应利用它来记录 Activity 的瞬态(UI
+的状态)&mdash;切勿使用它来存储持久性数据,而应使用 {@link
+android.app.Activity#onPause onPause()}
+在用户离开 Activity 后存储持久性数据(例如应保存到数据库的数据)。</p>
+
+<p>您只需旋转设备,让屏幕方向发生变化,就能有效地测试您的应用的状态恢复能力。
+当屏幕方向变化时,系统会销毁并重建 Activity,以便应用可供新屏幕配置使用的备用资源。
+
+单凭这一理由,您的 Activity 在重建时能否完全恢复其状态就显得非常重要,因为用户在使用应用时经常需要旋转屏幕。
+
+</p>
+
+
+<h3 id="ConfigurationChanges">处理配置变更</h3>
+
+<p>有些设备配置可能会在运行时发生变化(例如屏幕方向、键盘可用性及语言)。
+发生此类变化时,Android 会重建运行中的 Activity(系统调用
+{@link android.app.Activity#onDestroy},然后立即调用 {@link
+android.app.Activity#onCreate onCreate()})。此行为旨在通过利用您提供的备用资源(例如适用于不同屏幕方向和屏幕尺寸的不同布局)自动重新加载您的应用来帮助它适应新配置。
+
+
+</p>
+
+<p>如果您对 Activity 进行了适当设计,让它能够按以上所述处理屏幕方向变化带来的重启并恢复 Activity 状态,那么在遭遇 Activity 生命周期中的其他意外事件时,您的应用将具有更强的适应性。
+
+</p>
+
+<p>正如上文所述,处理此类重启的最佳方法
+是利用 {@link
+  android.app.Activity#onSaveInstanceState onSaveInstanceState()} 和 {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}(或 {@link
+android.app.Activity#onCreate onCreate()})保存并恢复 Activity 的状态。</p>
+
+<p>如需了解有关运行时发生的配置变更以及应对方法的详细信息,请阅读<a href="{@docRoot}guide/topics/resources/runtime-changes.html">处理运行时变更</a>指南。
+
+</p>
+
+
+
+<h3 id="CoordinatingActivities">协调 Activity</h3>
+
+ <p>当一个 Activity 启动另一个 Activity 时,它们都会体验到生命周期转变。第一个 Activity 暂停并停止(但如果它在后台仍然可见,则不会停止)时,系统会创建另一个 Activity。
+
+如果这些 Activity 共用保存到磁盘或其他地方的数据,必须了解的是,在创建第二个 Activity 前,第一个 Activity 不会完全停止。更确切地说,启动第二个 Activity 的过程与停止第一个 Activity 的过程存在重叠。
+
+
+</p>
+
+<p>生命周期回调的顺序经过明确定义,当两个 Activity 位于同一进程,并且由一个 Activity 启动另一个 Activity 时,其定义尤其明确。
+以下是当 Activity A
+启动 Activity B 时一系列操作的发生顺序: </p>
+
+<ol>
+<li>Activity A 的 {@link android.app.Activity#onPause onPause()} 方法执行。</li>
+
+<li>Activity B 的 {@link android.app.Activity#onCreate onCreate()}、{@link
+android.app.Activity#onStart onStart()} 和 {@link android.app.Activity#onResume onResume()}
+方法依次执行。(Activity B 现在具有用户焦点。)</li>
+
+<li>然后,如果 Activity A 在屏幕上不再可见,则其 {@link
+android.app.Activity#onStop onStop()} 方法执行。</li>
+</ol>
+
+ <p>您可以利用这种可预测的生命周期回调顺序管理从一个 Activity 到另一个 Activity 的信息转变。
+例如,如果您必须在第一个 Activity 停止时向数据库写入数据,以便下一个 Activity 能够读取该数据,则应在
+{@link android.app.Activity#onPause onPause()}
+而不是 {@link
+android.app.Activity#onStop onStop()} 执行期间向数据库写入数据。</p>
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For more information about how Android maintains a history of activities and
+enables user multitasking, continue with the <b><a
+href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back
+Stack</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/zh-cn/guide/components/bound-services.jd b/docs/html-intl/intl/zh-cn/guide/components/bound-services.jd
new file mode 100644
index 0000000..ed6aaf6
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/components/bound-services.jd
@@ -0,0 +1,658 @@
+page.title=绑定服务
+parent.title=服务
+parent.link=services.html
+@jd:body
+
+
+<div id="qv-wrapper">
+<ol id="qv">
+<h2>本文内容</h2>
+<ol>
+  <li><a href="#Basics">基础知识</a></li>
+  <li><a href="#Creating">创建绑定服务</a>
+    <ol>
+      <li><a href="#Binder">扩展 Binder 类</a></li>
+      <li><a href="#Messenger">使用 Messenger</a></li>
+    </ol>
+  </li>
+  <li><a href="#Binding">绑定到服务</a></li>
+  <li><a href="#Lifecycle">管理绑定服务的生命周期</a></li>
+</ol>
+
+<h2>关键类</h2>
+<ol>
+  <li>{@link android.app.Service}</li>
+  <li>{@link android.content.ServiceConnection}</li>
+  <li>{@link android.os.IBinder}</li>
+</ol>
+
+<h2>示例</h2>
+<ol>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html">{@code
+      RemoteService}</a></li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+      LocalService}</a></li>
+</ol>
+
+<h2>另请参阅</h2>
+<ol>
+  <li><a href="{@docRoot}guide/components/services.html">服务</a></li>
+</ol>
+</div>
+
+
+<p>绑定服务是客户端-服务器接口中的服务器。绑定服务可让组件(例如 Activity)绑定到服务、发送请求、接收响应,甚至执行进程间通信 (IPC)。
+
+绑定服务通常只在为其他应用组件服务时处于活动状态,不会无限期在后台运行。
+</p>
+
+<p>本文向您介绍如何创建绑定服务,包括如何绑定到来自其他应用组件的服务。
+不过,您还应参阅<a href="{@docRoot}guide/components/services.html">服务</a>文档,了解有关一般服务的更多信息,例如:如何利用服务传送通知、如何将服务设置为在前台运行等等。
+
+</p>
+
+
+<h2 id="Basics">基础知识</h2>
+
+<p>绑定服务是 {@link android.app.Service}
+类的实现,可让其他应用与其绑定和交互。要提供服务绑定,您必须实现 {@link android.app.Service#onBind onBind()}
+回调方法。该方法返回的
+{@link android.os.IBinder}
+对象定义了客户端用来与服务进行交互的编程接口。</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>绑定到已启动服务</h3>
+
+<p>正如<a href="{@docRoot}guide/components/services.html">服务</a>文档中所述,您可以创建同时具有已启动和绑定两种状态的服务。
+也就是说,可通过调用
+{@link android.content.Context#startService startService()}
+启动该服务,让服务无限期运行;此外,还可通过调用 {@link
+android.content.Context#bindService bindService()} 使客户端绑定到服务。
+  <p>如果您确实允许服务同时具有已启动和绑定状态,则服务启动后,系统“绝对不会”<em></em>在所有客户端都取消绑定时销毁服务。
+为此,您必须通过调用
+{@link android.app.Service#stopSelf stopSelf()} 或 {@link
+android.content.Context#stopService stopService()} 显式停止服务。</p>
+
+<p>尽管您通常应该实现
+{@link android.app.Service#onBind onBind()}
+<em>或</em> {@link android.app.Service#onStartCommand onStartCommand()},但有时需要同时实现这两者。例如,音乐播放器可能发现让其服务无限期运行并同时提供绑定很有用处。
+这样一来,Activity 便可启动服务进行音乐播放,即使用户离开应用,音乐播放也不会停止。
+然后,当用户返回应用时,Activity 可绑定到服务,重新获得回放控制权。
+</p>
+
+<p>请务必阅读<a href="#Lifecycle">管理绑定服务的生命周期</a>部分,详细了解有关添加绑定已启动服务时该服务的生命周期信息。
+
+</p>
+</div>
+</div>
+
+<p>客户端可通过调用 {@link android.content.Context#bindService
+bindService()} 绑定到服务。调用时,它必须提供 {@link
+android.content.ServiceConnection} 的实现,后者会监控与服务的连接。{@link
+android.content.Context#bindService bindService()} 方法会立即无值返回,但当
+Android
+系统创建客户端与服务之间的连接时,会调用 {@link
+android.content.ServiceConnection} 上的 {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()},向客户端传递用来与服务通信的
+{@link android.os.IBinder}。</p>
+
+<p>多个客户端可同时连接到一个服务。不过,只有在第一个客户端绑定时,系统才会调用服务的
+{@link android.app.Service#onBind onBind()}
+方法来检索 {@link android.os.IBinder}。系统随后无需再次调用
+{@link android.app.Service#onBind onBind()},便可将同一 {@link android.os.IBinder} 传递至任何其他绑定的客户端。</p>
+
+<p>当最后一个客户端取消与服务的绑定时,系统会将服务销毁(除非
+{@link android.content.Context#startService startService()} 也启动了该服务)。</p>
+
+<p>当您实现绑定服务时,最重要的环节是定义您的
+{@link android.app.Service#onBind onBind()} 回调方法返回的接口。您可以通过几种不同的方法定义服务的
+{@link android.os.IBinder}
+接口,下文对这些方法逐一做了阐述。</p>
+
+
+
+<h2 id="Creating">创建绑定服务</h2>
+
+<p>创建提供绑定的服务时,您必须提供 {@link android.os.IBinder},用以提供客户端用来与服务进行交互的编程接口。
+您可以通过三种方法定义接口:
+</p>
+
+<dl>
+  <dt><a href="#Binder">扩展 Binder 类</a></dt>
+  <dd>如果服务是供您的自有应用专用,并且在与客户端相同的进程中运行(常见情况),则应通过扩展
+{@link android.os.Binder}
+类并从 {@link android.app.Service#onBind onBind()}
+返回它的一个实例来创建接口。客户端收到 {@link android.os.Binder}
+后,可利用它直接访问 {@link android.os.Binder} 实现中乃至 {@link android.app.Service}
+中可用的公共方法。
+  <p>如果服务只是您的自有应用的后台工作线程,则优先采用这种方法。
+不以这种方式创建接口的唯一原因是,您的服务被其他应用或不同的进程占用。
+</dd>
+
+  <dt><a href="#Messenger">使用 Messenger</a></dt>
+  <dd>如需让接口跨不同的进程工作,则可使用
+{@link android.os.Messenger} 为服务创建接口。服务可以这种方式定义对应于不同类型
+{@link
+android.os.Message} 对象的 {@link android.os.Handler}。此 {@link android.os.Handler}
+是 {@link android.os.Messenger} 的基础,后者随后可与客户端分享一个 {@link android.os.IBinder},从而让客户端能利用 {@link
+android.os.Message}
+对象向服务发送命令。此外,客户端还可定义自有
+{@link android.os.Messenger},以便服务回传消息。
+  <p>这是执行进程间通信 (IPC) 的最简单方法,因为 {@link
+android.os.Messenger}
+会在单一线程中创建包含所有请求的队列,这样您就不必对服务进行线程安全设计。</p>
+  </dd>
+
+  <dt>使用 AIDL</dt>
+  <dd>AIDL(Android
+接口定义语言)执行所有将对象分解成原语的工作,操作系统可以识别这些原语并将它们编组到各进程中,以执行
+IPC。之前采用 {@link android.os.Messenger} 的方法实际上是以 AIDL
+作为其底层结构。如上所述,{@link android.os.Messenger}
+会在单一线程中创建包含所有客户端请求的队列,以便服务一次接收一个请求。不过,如果您想让服务同时处理多个请求,则可直接使用
+AIDL。
+在此情况下,您的服务必须具备多线程处理能力,并采用线程安全式设计。
+  <p>如需直接使用
+AIDL,您必须创建一个定义编程接口的 {@code .aidl} 文件。Android SDK
+工具利用该文件生成一个实现接口并处理 IPC
+的抽象类,您随后可在服务内对其进行扩展。</p>
+  </dd>
+</dl>
+
+  <p class="note"><strong>注:</strong>大多数应用“都不会”<strong></strong>使用
+AIDL
+来创建绑定服务,因为它可能要求具备多线程处理能力,并可能导致实现的复杂性增加。因此,AIDL
+并不适合大多数应用,本文也不会阐述如何将其用于您的服务。如果您确定自己需要直接使用
+AIDL,请参阅 <a href="{@docRoot}guide/components/aidl.html">AIDL</a>
+文档。</p>
+
+
+
+
+<h3 id="Binder">扩展 Binder 类</h3>
+
+<p>如果您的服务仅供本地应用使用,不需要跨进程工作,则可以实现自有
+{@link android.os.Binder}
+类,让您的客户端通过该类直接访问服务中的公共方法。</p>
+
+<p class="note"><strong>注:</strong>此方法只有在客户端和服务位于同一应用和进程内这一最常见的情况下方才有效。
+例如,对于需要将 Activity 绑定到在后台播放音乐的自有服务的音乐应用,此方法非常有效。
+
+</p>
+
+<p>以下是具体的设置方法:</p>
+<ol>
+  <li>在您的服务中,创建一个可满足下列任一要求的 {@link android.os.Binder} 实例:
+    <ul>
+      <li>包含客户端可调用的公共方法</li>
+      <li>返回当前 {@link android.app.Service}
+实例,其中包含客户端可调用的公共方法</li>
+      <li>或返回由服务承载的其他类的实例,其中包含客户端可调用的公共方法
+</li>
+    </ul>
+  <li>从 {@link
+android.app.Service#onBind onBind()} 回调方法返回此 {@link android.os.Binder} 实例。</li>
+  <li>在客户端中,从 {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} 回调方法接收
+{@link android.os.Binder},并使用提供的方法调用绑定服务。</li>
+</ol>
+
+<p class="note"><strong>注:</strong>之所以要求服务和客户端必须在同一应用内,是为了便于客户端转换返回的对象和正确调用其
+API。服务和客户端还必须在同一进程内,因为此方法不执行任何跨进程编组。
+
+</p>
+
+<p>例如,以下这个服务可让客户端通过
+{@link android.os.Binder} 实现访问服务中的方法:</p>
+
+<pre>
+public class LocalService extends Service {
+    // Binder given to clients
+    private final IBinder mBinder = new LocalBinder();
+    // Random number generator
+    private final Random mGenerator = new Random();
+
+    /**
+     * Class used for the client Binder.  Because we know this service always
+     * runs in the same process as its clients, we don't need to deal with IPC.
+     */
+    public class LocalBinder extends Binder {
+        LocalService getService() {
+            // Return this instance of LocalService so clients can call public methods
+            return LocalService.this;
+        }
+    }
+
+    &#64;Override
+    public IBinder onBind(Intent intent) {
+        return mBinder;
+    }
+
+    /** method for clients */
+    public int getRandomNumber() {
+      return mGenerator.nextInt(100);
+    }
+}
+</pre>
+
+<p>{@code LocalBinder} 为客户端提供 {@code getService()} 方法,以检索 {@code LocalService}
+的当前实例。这样,客户端便可调用服务中的公共方法。
+例如,客户端可调用服务中的 {@code getRandomNumber()}。</p>
+
+<p>点击按钮时,以下这个 Activity 会绑定到 {@code LocalService} 并调用
+{@code getRandomNumber()}:</p>
+
+<pre>
+public class BindingActivity extends Activity {
+    LocalService mService;
+    boolean mBound = false;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+
+    &#64;Override
+    protected void onStart() {
+        super.onStart();
+        // Bind to LocalService
+        Intent intent = new Intent(this, LocalService.class);
+        bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+    }
+
+    &#64;Override
+    protected void onStop() {
+        super.onStop();
+        // Unbind from the service
+        if (mBound) {
+            unbindService(mConnection);
+            mBound = false;
+        }
+    }
+
+    /** Called when a button is clicked (the button in the layout file attaches to
+      * this method with the android:onClick attribute) */
+    public void onButtonClick(View v) {
+        if (mBound) {
+            // Call a method from the LocalService.
+            // However, if this call were something that might hang, then this request should
+            // occur in a separate thread to avoid slowing down the activity performance.
+            int num = mService.getRandomNumber();
+            Toast.makeText(this, "number: " + num, Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    /** Defines callbacks for service binding, passed to bindService() */
+    private ServiceConnection mConnection = new ServiceConnection() {
+
+        &#64;Override
+        public void onServiceConnected(ComponentName className,
+                IBinder service) {
+            // We've bound to LocalService, cast the IBinder and get LocalService instance
+            LocalBinder binder = (LocalBinder) service;
+            mService = binder.getService();
+            mBound = true;
+        }
+
+        &#64;Override
+        public void onServiceDisconnected(ComponentName arg0) {
+            mBound = false;
+        }
+    };
+}
+</pre>
+
+<p>上例说明了客户端如何使用 {@link android.content.ServiceConnection} 的实现和 {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()}
+回调绑定到服务。下文更详细介绍了绑定到服务的过程。
+</p>
+
+<p class="note"><strong>注:</strong>上例并未显式取消与服务的绑定,但所有客户端都应在适当的时间(例如当 Activity 暂停时)取消绑定。
+</p>
+
+<p>如需查看更多示例代码,请参阅 <a href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a> 中的 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+LocalService.java}</a> 类和 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceActivities.html">{@code
+LocalServiceActivities.java}</a> 类。</p>
+
+
+
+
+
+<h3 id="Messenger">使用 Messenger</h3>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h4>与 AIDL 比较</h4>
+  <p>当您需要执行 IPC 时,为您的接口使用 {@link android.os.Messenger}
+要比使用 AIDL 实现它更加简单,因为 {@link android.os.Messenger}
+会将所有服务调用排入队列,而纯粹的 AIDL
+接口会同时向服务发送多个请求,服务随后必须应对多线程处理。</p>
+  <p>对于大多数应用,服务不需要执行多线程处理,因此使用 {@link
+android.os.Messenger} 可让服务一次处理一个调用。如果您的服务必须执行多线程处理,则应使用 <a href="{@docRoot}guide/components/aidl.html">AIDL</a>
+来定义接口。</p>
+</div>
+</div>
+
+<p>如需让服务与远程进程通信,则可使用 {@link android.os.Messenger}
+为您的服务提供接口。利用此方法,您无需使用
+AIDL 便可执行进程间通信 (IPC)。</p>
+
+<p>以下是 {@link android.os.Messenger} 的使用方法摘要:</p>
+
+<ul>
+  <li>服务实现一个
+{@link android.os.Handler},由其接收来自客户端的每个调用的回调</li>
+  <li>{@link android.os.Handler} 用于创建 {@link android.os.Messenger}
+对象(对 {@link android.os.Handler} 的引用)</li>
+  <li>{@link android.os.Messenger} 创建一个 {@link android.os.IBinder},服务通过 {@link android.app.Service#onBind onBind()}
+使其返回客户端</li>
+  <li>客户端使用 {@link android.os.IBinder}
+将 {@link android.os.Messenger}(引用服务的 {@link android.os.Handler})实例化,然后使用后者将 {@link android.os.Message}
+对象发送给服务</li>
+  <li>服务在其 {@link
+android.os.Handler} 中(具体地讲,是在 {@link android.os.Handler#handleMessage
+handleMessage()} 方法中)接收每个 {@link android.os.Message}</li>
+</ul>
+
+
+<p>这样,客户端并没有调用服务的“方法”。而客户端传递的“消息”({@link android.os.Message}
+对象)是服务在其 {@link android.os.Handler}
+中接收的。</p>
+
+<p>以下是一个使用 {@link android.os.Messenger} 接口的简单服务示例:</p>
+
+<pre>
+public class MessengerService extends Service {
+    /** Command to the service to display a message */
+    static final int MSG_SAY_HELLO = 1;
+
+    /**
+     * Handler of incoming messages from clients.
+     */
+    class IncomingHandler extends Handler {
+        &#64;Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_SAY_HELLO:
+                    Toast.makeText(getApplicationContext(), "hello!", Toast.LENGTH_SHORT).show();
+                    break;
+                default:
+                    super.handleMessage(msg);
+            }
+        }
+    }
+
+    /**
+     * Target we publish for clients to send messages to IncomingHandler.
+     */
+    final Messenger mMessenger = new Messenger(new IncomingHandler());
+
+    /**
+     * When binding to the service, we return an interface to our messenger
+     * for sending messages to the service.
+     */
+    &#64;Override
+    public IBinder onBind(Intent intent) {
+        Toast.makeText(getApplicationContext(), "binding", Toast.LENGTH_SHORT).show();
+        return mMessenger.getBinder();
+    }
+}
+</pre>
+
+<p>请注意,服务就是在 {@link android.os.Handler}
+的 {@link android.os.Handler#handleMessage handleMessage()} 方法中接收传入的
+{@link android.os.Message},并根据 {@link android.os.Message#what} 成员决定下一步操作。</p>
+
+<p>客户端只需根据服务返回的 {@link
+android.os.IBinder} 创建一个 {@link android.os.Messenger},然后利用 {@link
+android.os.Messenger#send send()} 发送一条消息。例如,以下就是一个绑定到服务并向服务传递
+{@code MSG_SAY_HELLO} 消息的简单 Activity:</p>
+
+<pre>
+public class ActivityMessenger extends Activity {
+    /** Messenger for communicating with the service. */
+    Messenger mService = null;
+
+    /** Flag indicating whether we have called bind on the service. */
+    boolean mBound;
+
+    /**
+     * Class for interacting with the main interface of the service.
+     */
+    private ServiceConnection mConnection = new ServiceConnection() {
+        public void onServiceConnected(ComponentName className, IBinder service) {
+            // This is called when the connection with the service has been
+            // established, giving us the object we can use to
+            // interact with the service.  We are communicating with the
+            // service using a Messenger, so here we get a client-side
+            // representation of that from the raw IBinder object.
+            mService = new Messenger(service);
+            mBound = true;
+        }
+
+        public void onServiceDisconnected(ComponentName className) {
+            // This is called when the connection with the service has been
+            // unexpectedly disconnected -- that is, its process crashed.
+            mService = null;
+            mBound = false;
+        }
+    };
+
+    public void sayHello(View v) {
+        if (!mBound) return;
+        // Create and send a message to the service, using a supported 'what' value
+        Message msg = Message.obtain(null, MessengerService.MSG_SAY_HELLO, 0, 0);
+        try {
+            mService.send(msg);
+        } catch (RemoteException e) {
+            e.printStackTrace();
+        }
+    }
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+
+    &#64;Override
+    protected void onStart() {
+        super.onStart();
+        // Bind to the service
+        bindService(new Intent(this, MessengerService.class), mConnection,
+            Context.BIND_AUTO_CREATE);
+    }
+
+    &#64;Override
+    protected void onStop() {
+        super.onStop();
+        // Unbind from the service
+        if (mBound) {
+            unbindService(mConnection);
+            mBound = false;
+        }
+    }
+}
+</pre>
+
+<p>请注意,此示例并未说明服务如何对客户端作出响应。如果您想让服务作出响应,则还需要在客户端中创建一个
+{@link android.os.Messenger}。然后,当客户端收到 {@link android.content.ServiceConnection#onServiceConnected
+onServiceConnected()} 回调时,会向服务发送一条
+{@link android.os.Message},并在其
+{@link android.os.Messenger#send send()} 方法的 {@link android.os.Message#replyTo}
+参数中包含客户端的 {@link android.os.Messenger}。</p>
+
+<p>如需查看如何提供双向消息传递的示例,请参阅 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerService.html">{@code
+MessengerService.java}</a>(服务)和 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerServiceActivities.html">{@code
+MessengerServiceActivities.java}</a>(客户端)示例。</p>
+
+
+
+
+
+<h2 id="Binding">绑定到服务</h2>
+
+<p>应用组件(客户端)可通过调用 {@link android.content.Context#bindService bindService()}
+绑定到服务。Android
+系统随后调用服务的 {@link android.app.Service#onBind
+onBind()} 方法,该方法返回用于与服务交互的 {@link android.os.IBinder}。</p>
+
+<p>绑定是异步的。{@link android.content.Context#bindService
+bindService()} 会立即返回,“绝对不会”<em></em>使 {@link android.os.IBinder}
+返回客户端。要接收 {@link android.os.IBinder},客户端必须创建一个 {@link
+android.content.ServiceConnection} 实例,并将其传递给 {@link android.content.Context#bindService
+bindService()}。{@link android.content.ServiceConnection} 包括一个回调方法,系统通过调用它来传递
+{@link android.os.IBinder}。</p>
+
+<p class="note"><strong>注:</strong>只有 Activity、服务和内容提供程序可以绑定到服务&mdash;您<strong>无法</strong>从广播接收器绑定到服务。
+</p>
+
+<p>因此,要想从您的客户端绑定到服务,您必须: </p>
+<ol>
+  <li>实现 {@link android.content.ServiceConnection}。
+    <p>您的实现必须重写两个回调方法:</p>
+    <dl>
+      <dt>{@link android.content.ServiceConnection#onServiceConnected onServiceConnected()}</dt>
+        <dd>系统会调用该方法以传递服务的 {@link android.app.Service#onBind onBind()}
+方法返回的 {@link android.os.IBinder}。</dd>
+      <dt>{@link android.content.ServiceConnection#onServiceDisconnected
+onServiceDisconnected()}</dt>
+        <dd>Android
+系统会在与服务的连接意外中断时(例如当服务崩溃或被终止时)调用该方法。当客户端取消绑定时,系统“绝对不会”<em></em>调用该方法。
+</dd>
+    </dl>
+  </li>
+  <li>调用 {@link
+android.content.Context#bindService bindService()} 以传递 {@link
+android.content.ServiceConnection} 实现。 </li>
+  <li>当系统调用您的 {@link android.content.ServiceConnection#onServiceConnected
+onServiceConnected()}
+回调方法时,您可以使用接口定义的方法开始调用服务。</li>
+  <li>要断开与服务的连接,请调用 {@link
+android.content.Context#unbindService unbindService()}。
+    <p>当您的客户端被销毁时,它将取消与服务的绑定,但您应该始终在完成与服务的交互时或您的 Activity 暂停时取消绑定,以便服务能够在未被占用时关闭。
+
+(下文更详细地阐述了绑定和取消绑定的适当时机。)
+</p>
+  </li>
+</ol>
+
+<p>例如,以下代码段通过<a href="#Binder">扩展
+Binder 类</a>将客户端与上面创建的服务相连,因此它只需将返回的 {@link android.os.IBinder}
+转换为 {@code LocalService} 类并请求 {@code
+LocalService} 实例:</p>
+
+<pre>
+LocalService mService;
+private ServiceConnection mConnection = new ServiceConnection() {
+    // Called when the connection with the service is established
+    public void onServiceConnected(ComponentName className, IBinder service) {
+        // Because we have bound to an explicit
+        // service that is running in our own process, we can
+        // cast its IBinder to a concrete class and directly access it.
+        LocalBinder binder = (LocalBinder) service;
+        mService = binder.getService();
+        mBound = true;
+    }
+
+    // Called when the connection with the service disconnects unexpectedly
+    public void onServiceDisconnected(ComponentName className) {
+        Log.e(TAG, "onServiceDisconnected");
+        mBound = false;
+    }
+};
+</pre>
+
+<p>客户端可通过将此 {@link android.content.ServiceConnection} 传递至 {@link android.content.Context#bindService bindService()}
+绑定到服务。例如:</p>
+
+<pre>
+Intent intent = new Intent(this, LocalService.class);
+bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+</pre>
+
+<ul>
+  <li>{@link android.content.Context#bindService bindService()}
+的第一个参数是一个
+{@link android.content.Intent},用于显式命名要绑定的服务(但 Intent 可能是隐式的)</li>
+<li>第二个参数是 {@link android.content.ServiceConnection} 对象</li>
+<li>第三个参数是一个指示绑定选项的标志。它通常应该是 {@link
+android.content.Context#BIND_AUTO_CREATE},以便创建尚未激活的服务。
+其他可能的值为 {@link android.content.Context#BIND_DEBUG_UNBIND}
+和 {@link android.content.Context#BIND_NOT_FOREGROUND},或 {@code 0}(表示无)。</li>
+</ul>
+
+
+<h3>附加说明</h3>
+
+<p>以下是一些有关绑定到服务的重要说明:</p>
+<ul>
+  <li>您应该始终捕获
+{@link android.os.DeadObjectException} 异常,它们是在连接中断时引发的。这是远程方法引发的唯一异常</li>
+  <li>对象是跨进程计数的引用 </li>
+  <li>您通常应该在客户端生命周期的匹配引入 (bring-up) 和退出 (tear-down) 时刻期间配对绑定和取消绑定。
+例如:
+    <ul>
+      <li>如果您只需要在 Activity 可见时与服务交互,则应在 {@link android.app.Activity#onStart onStart()}
+期间绑定,在 {@link
+android.app.Activity#onStop onStop()} 期间取消绑定。</li>
+      <li>如果您希望 Activity 在后台停止运行状态下仍可接收响应,则可在
+{@link android.app.Activity#onCreate onCreate()} 期间绑定,在 {@link android.app.Activity#onDestroy onDestroy()}
+期间取消绑定。请注意,这意味着您的 Activity 在其整个运行过程中(甚至包括后台运行期间)都需要使用服务,因此如果服务位于其他进程内,那么当您提高该进程的权重时,系统终止该进程的可能性会增加
+
+
+</li>
+    </ul>
+    <p class="note"><strong>注:</strong>通常情况下,<strong>切勿</strong>在 Activity 的 {@link android.app.Activity#onResume onResume()}
+和 {@link
+android.app.Activity#onPause onPause()}
+期间绑定和取消绑定,因为每一次生命周期转换都会发生这些回调,您应该使发生在这些转换期间的处理保持在最低水平。此外,如果您的应用内的多个 Activity 绑定到同一服务,并且其中两个 Activity 之间发生了转换,则如果当前 Activity 在下一次绑定(恢复期间)之前取消绑定(暂停期间),系统可能会销毁服务并重建服务。
+
+
+(<a href="{@docRoot}guide/components/activities.html#CoordinatingActivities">Activity</a>文档中介绍了这种有关 Activity 如何协调其生命周期的 Activity 转换。)
+
+</p>
+</ul>
+
+<p>如需查看更多显示如何绑定到服务的示例代码,请参阅 <a href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a> 中的 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html">{@code
+RemoteService.java}</a> 类。</p>
+
+
+
+
+
+<h2 id="Lifecycle">管理绑定服务的生命周期</h2>
+
+<p>当服务与所有客户端之间的绑定全部取消时,Android
+系统便会销毁服务(除非还使用 {@link android.app.Service#onStartCommand onStartCommand()} 启动了该服务)。因此,如果您的服务是纯粹的绑定服务,则无需对其生命周期进行管理&mdash;Android
+系统会根据它是否绑定到任何客户端代您管理。
+</p>
+
+<p>不过,如果您选择实现 {@link android.app.Service#onStartCommand
+onStartCommand()}
+回调方法,则您必须显式停止服务,因为系统现在已将服务视为<em>已启动</em>。在此情况下,服务将一直运行到其通过 {@link android.app.Service#stopSelf()}
+自行停止,或其他组件调用 {@link
+android.content.Context#stopService stopService()}
+为止,无论其是否绑定到任何客户端。</p>
+
+<p>此外,如果您的服务已启动并接受绑定,则当系统调用您的 {@link android.app.Service#onUnbind onUnbind()} 方法时,如果您想在客户端下一次绑定到服务时接收 
+{@link android.app.Service#onRebind
+onRebind()} 调用(而不是接收 {@link
+android.app.Service#onBind onBind()} 调用),则可选择返回
+{@code true}。{@link android.app.Service#onRebind
+onRebind()} 返回空值,但客户端仍在其 {@link android.content.ServiceConnection#onServiceConnected onServiceConnected()} 回调中接收
+{@link android.os.IBinder}。下文图 1
+说明了这种生命周期的逻辑。</p>
+
+
+<img src="{@docRoot}images/fundamentals/service_binding_tree_lifecycle.png" alt="" />
+<p class="img-caption"><strong>图 1.  </strong>允许绑定的已启动服务的生命周期。
+</p>
+
+
+<p>如需了解有关已启动服务生命周期的详细信息,请参阅<a href="{@docRoot}guide/components/services.html#Lifecycle">服务</a>文档。</p>
+
+
+
+
diff --git a/docs/html-intl/intl/zh-cn/guide/components/fragments.jd b/docs/html-intl/intl/zh-cn/guide/components/fragments.jd
new file mode 100644
index 0000000..a4c2cbb
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/components/fragments.jd
@@ -0,0 +1,812 @@
+page.title=片段
+parent.title=Activity
+parent.link=activities.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>本文内容</h2>
+  <ol>
+    <li><a href="#Design">设计原理</a></li>
+    <li><a href="#Creating">创建片段
+      <ol>
+        <li><a href="#UI">添加用户界面</a></li>
+        <li><a href="#Adding">向 Activity 添加片段</a></li>
+      </ol>
+    </li>
+    <li><a href="#Managing">管理片段</a></li>
+    <li><a href="#Transactions">执行片段事务</a></li>
+    <li><a href="#CommunicatingWithActivity">与 Activity 通信</a>
+      <ol>
+        <li><a href="#EventCallbacks">创建对 Activity 的事件回调</a></li>
+        <li><a href="#ActionBar">向操作栏添加项目</a></li>
+      </ol>
+    </li>
+    <li><a href="#Lifecycle">处理片段生命周期</a>
+      <ol>
+        <li><a href="#CoordinatingWithActivity">与 Activity 生命周期协调一致</a></li>
+      </ol>
+    </li>
+    <li><a href="#Example">示例</a></li>
+  </ol>
+
+  <h2>关键类</h2>
+  <ol>
+    <li>{@link android.app.Fragment}</li>
+    <li>{@link android.app.FragmentManager}</li>
+    <li>{@link android.app.FragmentTransaction}</li>
+  </ol>
+  
+  <h2>另请参阅</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/fragments/index.html">利用片段构建动态 UI</a></li>
+    <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">支持平板电脑和手机</a>
+</li>
+  </ol>
+</div>
+</div>
+
+<p>{@link android.app.Fragment} 表示
+{@link android.app.Activity} 中的行为或用户界面部分。您可以将多个片段组合在一个 Activity 中来构建多窗格
+UI,以及在多个 Activity 中重复使用某个片段。您可以将片段视为 Activity 的模块化组成部分,它具有自己的生命周期,能接收自己的输入事件,并且您可以在 Activity 运行时添加或删除片段(有点像您可以在不同 Activity 中重复使用的“子 Activity”)。
+
+
+</p>
+
+<p>片段必须始终嵌入在 Activity 中,其生命周期直接受宿主 Activity 生命周期的影响。
+例如,当 Activity 暂停时,其中的所有片段也会暂停;当 Activity 被销毁时,所有片段也会被销毁。
+不过,当 Activity 正在运行(处于<em>已恢复</em><a href="{@docRoot}guide/components/activities.html#Lifecycle">生命周期状态</a>)时,您可以独立操纵每个片段,如添加或移除它们。
+
+当您执行此类片段事务时,您也可以将其添加到由 Activity 管理的返回栈&mdash;Activity 中的每个返回栈条目都是一条已发生片段事务的记录。
+
+
+返回栈让用户可以通过按“返回”<em></em>按钮撤消片段事务(后退)。
+</p>
+
+<p>当您将片段作为 Activity 布局的一部分添加时,它存在于 Activity 视图层次结构的某个 {@link
+android.view.ViewGroup}
+内部,并且片段会定义其自己的视图布局。您可以通过在 Activity 的布局文件中声明片段,将其作为
+{@code &lt;fragment&gt;}
+元素插入您的 Activity 布局中,或者通过将其添加到某个现有
+{@link android.view.ViewGroup},利用应用代码进行插入。不过,片段并非必须成为 Activity 布局的一部分;您还可以将没有自己
+UI
+的片段用作 Activity 的不可见工作线程。</p>
+
+<p>本文描述如何在开发您的应用时使用片段,包括将片段添加到 Activity 返回栈时如何保持其状态、如何与 Activity 及 Activity 中的其他片段共享事件、如何为 Activity 的操作栏发挥作用等等。
+
+
+</p>
+
+
+<h2 id="Design">设计原理</h2>
+
+<p>Android 在 Android 3.0(API 11 级)中引入了片段,主要是为了给大屏幕(如平板电脑)上更加动态和灵活的 UI
+设计提供支持。由于平板电脑的屏幕比手机屏幕大得多,因此可用于组合和交换
+UI
+组件的空间更大。利用片段实现此类设计时,您无需管理对视图层次结构的复杂更改。
+通过将 Activity 布局分成片段,您可以在运行时修改 Activity 的外观,并在由 Activity 管理的返回栈中保留这些更改。
+
+</p>
+
+<p>例如,新闻应用可以使用一个片段在左侧显示文章列表,使用另一个片段在右侧显示文章&mdash;两个片段并排显示在一个 Activity 中,每个片段都具有自己的一套生命周期回调方法,并各自处理自己的用户输入事件。
+
+
+因此,用户不需要使用一个 Activity 来选择文章,然后使用另一个 Activity 来阅读文章,而是可以在同一个 Activity 内选择文章并进行阅读,如图
+1
+中的平板电脑布局所示。</p>
+
+<p>您应该将每个片段都设计为可重复使用的模块化 Activity 组件。也就是说,由于每个片段都会通过各自的生命周期回调来定义其自己的布局和行为,您可以将一个片段加入多个 Activity,因此,您应该采用可复用式设计,避免直接从某个片段直接操纵另一个片段。
+
+
+这特别重要,因为模块化片段让您可以通过更改片段的组合方式来适应不同的屏幕尺寸。
+在设计可同时支持平板电脑和手机的应用时,您可以在不同的布局配置中重复使用您的片段,以根据可用的屏幕空间优化用户体验。
+
+例如,在手机上,如果不能在同一 Activity 内储存多个片段,可能必须利用单独片段来实现单窗格
+UI。
+</p>
+
+<img src="{@docRoot}images/fundamentals/fragments.png" alt="" />
+<p class="img-caption"><strong>图 1. </strong>有关由片段定义的两个
+UI
+模块如何适应不同设计的示例:通过组合成一个 Activity 来适应平板电脑设计,通过单独片段来适应手机设计。</p>
+
+<p>例如&mdash;仍然以新闻应用为例&mdash;在平板电脑尺寸的设备上运行时,该应用可以在<em>Activity
+A</em> 中嵌入两个片段。不过,在手机尺寸的屏幕上,没有足以储存两个片段的空间,因此<em>Activity
+A</em>
+只包括用于显示文章列表的片段,当用户选择文章时,它会启动<em>Activity
+B</em>,其中包括用于阅读文章的第二个片段。因此,应用可通过重复使用不同组合的片段来同时支持平板电脑和手机,如图
+1
+所示。</p>
+
+<p>如需了解有关通过利用不同片段组合来适应不同屏幕配置这种方法设计应用的详细信息,请参阅<a href="{@docRoot}guide/practices/tablets-and-handsets.html">支持平板电脑和手机</a>指南。
+</p>
+
+
+
+<h2 id="Creating">创建片段</h2>
+
+<div class="figure" style="width:327px">
+<img src="{@docRoot}images/fragment_lifecycle.png" alt="" />
+<p class="img-caption"><strong>图 2. </strong>片段的生命周期(其 Activity 运行时)。
+</p>
+</div>
+
+<p>要想创建片段,您必须创建 {@link android.app.Fragment}
+的子类(或已有其子类)。{@link android.app.Fragment} 类的代码与
+{@link android.app.Activity} 非常相似。它包含与 Activity 类似的回调方法,如
+{@link android.app.Fragment#onCreate onCreate()}、{@link android.app.Fragment#onStart onStart()}、{@link android.app.Fragment#onPause onPause()}
+和 {@link android.app.Fragment#onStop onStop()}。实际上,如果您要将现有
+Android
+应用转换为使用片段,可能只需将代码从 Activity 的回调方法移入片段相应的回调方法中。
+</p>
+
+<p>通常,您至少应实现以下生命周期方法:</p>
+
+<dl>
+  <dt>{@link android.app.Fragment#onCreate onCreate()}</dt>
+  <dd>系统会在创建片段时调用此方法。您应该在实现内初始化您想在片段暂停或停止后恢复时保留的必需片段组件。
+
+</dd>
+  <dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
+  <dd>系统会在片段首次绘制其用户界面时调用此方法。
+要想为您的片段绘制
+UI,您从此方法中返回的 {@link android.view.View} 必须是片段布局的根视图。如果片段未提供
+UI,您可以返回 null。</dd>
+  <dt>{@link android.app.Activity#onPause onPause()}</dt>
+  <dd>系统将此方法作为用户离开片段的第一个信号(但并不总是意味着此片段会被销毁)进行调用。
+您通常应该在此方法内确认在当前用户会话结束后仍然有效的任何更改(因为用户可能不会返回)。
+
+</dd>
+</dl>
+
+<p>大多数应用都应该至少为每个片段实现这三个方法,但您还应该使用几种其他回调方法来处理片段生命周期的各个阶段。
+
+<a href="#Lifecycle">处理片段生命周期</a>部分对所有生命周期回调方法做了更详尽的阐述。
+</p>
+
+
+<p>您可能还想扩展几个子类,而不是 {@link
+android.app.Fragment} 基类:</p>
+
+<dl>
+  <dt>{@link android.app.DialogFragment}</dt>
+  <dd>显示浮动对话框。使用此类创建对话框可有效地替代使用
+{@link android.app.Activity}
+类中的对话框帮助程序方法,因为您可以将片段对话框纳入由 Activity 管理的片段返回栈,从而使用户能够返回清除的片段。
+</dd>
+
+  <dt>{@link android.app.ListFragment}</dt>
+  <dd>显示由适配器(如 {@link
+android.widget.SimpleCursorAdapter})管理的一系列项目,类似于 {@link android.app.ListActivity}。它提供了几种管理列表视图的方法,如用于处理点击事件的
+{@link
+android.app.ListFragment#onListItemClick(ListView,View,int,long) onListItemClick()}
+回调。</dd>
+
+  <dt>{@link android.preference.PreferenceFragment}</dt>
+  <dd>以列表形式显示 {@link android.preference.Preference} 对象的层次结构,类似于
+{@link android.preference.PreferenceActivity}。这在为您的应用创建“设置” Activity 时很有用处。
+</dd>
+</dl>
+
+
+<h3 id="UI">添加用户界面</h3>
+
+<p>片段通常用作 Activity 用户界面的一部分,将其自己的布局融入 Activity。
+</p>
+
+<p>要想为片段提供布局,您必须实现 {@link
+android.app.Fragment#onCreateView onCreateView()} 回调方法,Android
+系统会在片段需要绘制其布局时调用该方法。您对此方法的实现返回的
+{@link android.view.View} 必须是片段布局的根视图。</p>
+
+<p class="note"><strong>注:</strong>如果您的片段是 {@link
+android.app.ListFragment} 的子类,则默认实现会从
+{@link android.app.Fragment#onCreateView onCreateView()} 返回一个 {@link android.widget.ListView},因此您无需实现它。</p>
+
+<p>要想从 {@link
+android.app.Fragment#onCreateView onCreateView()} 返回布局,您可以通过 XML 中定义的<a href="{@docRoot}guide/topics/resources/layout-resource.html">布局资源</a>来扩展布局。为帮助您执行此操作,{@link android.app.Fragment#onCreateView onCreateView()}
+提供了一个
+{@link android.view.LayoutInflater} 对象。</p>
+
+<p>例如,以下这个 {@link android.app.Fragment} 子类从 {@code example_fragment.xml}
+文件加载布局:</p>
+
+<pre>
+public static class ExampleFragment extends Fragment {
+    &#64;Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.example_fragment, container, false);
+    }
+}
+</pre>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>创建布局</h3>
+  <p>在上例中,{@code R.layout.example_fragment} 是对应用资源中保存的名为
+{@code example_fragment.xml} 的布局资源的引用。如需了解有关如何在
+XML
+中创建布局的信息,请参阅<a href="{@docRoot}guide/topics/ui/index.html">用户界面</a>文档。</p>
+</div>
+</div>
+
+<p>传递至 {@link android.app.Fragment#onCreateView
+onCreateView()} 的 {@code container}
+参数是您的片段布局将插入到的父
+{@link android.view.ViewGroup}(来自 Activity 的布局)。{@code savedInstanceState}
+参数是在恢复片段时,提供上一片段实例相关数据的
+{@link android.os.Bundle}(<a href="#Lifecycle">处理片段生命周期</a>部分对恢复状态做了详细阐述)。
+</p>
+
+<p>{@link android.view.LayoutInflater#inflate(int,ViewGroup,boolean) inflate()}
+方法带有三个参数:</p>
+<ul>
+  <li>您想要扩展的布局的资源 ID;</li>
+  <li>将作为扩展布局父项的 {@link android.view.ViewGroup}。传递 {@code
+container}
+对系统向扩展布局的根视图(由其所属的父视图指定)应用布局参数具有重要意义;</li>
+  <li>指示是否应该在扩展期间将扩展布局附加至 {@link
+android.view.ViewGroup}(第二个参数)的布尔值。(在本例中,其值为
+false,因为系统已经将扩展布局插入 {@code
+container}&mdash;传递 true 值会在最终布局中创建一个多余的视图组。)</li>
+</ul>
+
+<p>现在,您已经了解了如何创建提供布局的片段。接下来,您需要将该片段添加到您的 Activity 中。
+</p>
+
+
+
+<h3 id="Adding">向 Activity 添加片段</h3>
+
+<p>通常,片段向宿主 Activity 贡献一部分
+UI,作为 Activity 总体视图层次结构的一部分嵌入到 Activity 中。可以通过两种方式向 Activity 布局添加片段:
+</p>
+
+<ul>
+  <li><b>在 Activity 的布局文件内声明片段</b>
+<p>在本例中,您可以将片段当作视图来为其指定布局属性。
+例如,以下是一个具有两个片段的 Activity 的布局文件:
+</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"&gt;
+    &lt;fragment android:name="com.example.news.ArticleListFragment"
+            android:id="@+id/list"
+            android:layout_weight="1"
+            android:layout_width="0dp"
+            android:layout_height="match_parent" /&gt;
+    &lt;fragment android:name="com.example.news.ArticleReaderFragment"
+            android:id="@+id/viewer"
+            android:layout_weight="2"
+            android:layout_width="0dp"
+            android:layout_height="match_parent" /&gt;
+&lt;/LinearLayout&gt;
+</pre>
+  <p>{@code &lt;fragment&gt;} 中的 {@code android:name} 属性指定要在布局中实例化的 {@link
+android.app.Fragment} 类。</p>
+
+<p>当系统创建此 Activity 布局时,会实例化在布局中指定的每个片段,并为每个片段调用
+{@link android.app.Fragment#onCreateView onCreateView()}
+方法,以检索每个片段的布局。系统会直接插入片段返回的 {@link android.view.View} 来替代
+{@code &lt;fragment&gt;} 元素。</p>
+
+<div class="note">
+  <p><strong>注:</strong>每个片段都需要一个唯一的标识符,重启 Activity 时,系统可以使用该标识符来恢复片段(您也可以使用该标识符来捕获片段以执行某些事务,如将其删除)。
+
+可以通过三种方式为片段提供
+ID:</p>
+  <ul>
+    <li>为 {@code android:id} 属性提供唯一 ID</li>
+    <li>为 {@code android:tag} 属性提供唯一字符串</li>
+    <li>如果您未给以上两个属性提供值,系统会使用容器视图的 ID
+</li>
+  </ul>
+</div>
+  </li>
+
+  <li><b>或者通过编程方式将片段添加到某个现有 {@link android.view.ViewGroup}</b>
+<p>您可以在 Activity 运行期间随时将片段添加到 Activity 布局中。您只需指定要将片段放入哪个
+{@link
+android.view.ViewGroup}。</p>
+  <p>要想在您的 Activity 中执行片段事务(如添加、删除或替换片段),您必须使用
+{@link android.app.FragmentTransaction} 中的 API。您可以像下面这样从
+{@link android.app.Activity} 获取一个 {@link android.app.FragmentTransaction} 实例:</p>
+
+<pre>
+FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()}
+FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
+</pre>
+
+<p>然后,您可以使用 {@link
+android.app.FragmentTransaction#add(int,Fragment) add()}
+方法添加一个片段,指定要添加的片段以及将其插入哪个视图。例如:</p>
+
+<pre>
+ExampleFragment fragment = new ExampleFragment();
+fragmentTransaction.add(R.id.fragment_container, fragment);
+fragmentTransaction.commit();
+</pre>
+
+  <p>传递到 {@link android.app.FragmentTransaction#add(int,Fragment) add()}
+的第一个参数是 {@link android.view.ViewGroup},即应该放置片段的位置,由资源
+ID 指定,第二个参数是要添加的片段。</p>
+  <p>一旦您通过
+{@link android.app.FragmentTransaction} 做出了更改,就必须调用
+{@link android.app.FragmentTransaction#commit} 以使更改生效。</p>
+  </li>
+</ul>
+
+
+<h4 id="AddingWithoutUI">添加没有 UI 的片段</h4>
+
+<p>上例展示了如何向您的 Activity 添加片段以提供
+UI。不过,您还可以使用片段为 Activity 提供后台行为,而不显示额外
+UI。</p>
+
+<p>要想添加没有 UI 的片段,请使用 {@link
+android.app.FragmentTransaction#add(Fragment,String)} 从 Activity 添加片段(为片段提供一个唯一的字符串“标记”,而不是视图
+ID)。这会添加片段,但由于它并不与 Activity 布局中的视图关联,因此不会收到对
+{@link
+android.app.Fragment#onCreateView onCreateView()} 的调用。因此,您不需要实现该方法。</p>
+
+<p>并非只能为非 UI 片段提供字符串标记&mdash;您也可以为具有 UI
+的片段提供字符串标记&mdash;但如果片段没有
+UI,则字符串标记将是标识它的唯一方式。如果您想稍后从 Activity 中获取片段,则需要使用
+{@link android.app.FragmentManager#findFragmentByTag
+findFragmentByTag()}。</p>
+
+<p>如需查看将没有 UI 的片段用作后台工作线程的示例 Activity,请参阅 {@code
+FragmentRetainInstance.java} 示例,该示例包括在 SDK 示例(通过
+Android SDK 管理器提供)中,以 
+<code>&lt;sdk_root&gt;/APIDemos/app/src/main/java/com/example/android/apis/app/FragmentRetainInstance.java</code> 形式位于您的系统中。</p>
+
+
+
+<h2 id="Managing">管理片段</h2>
+
+<p>要想管理您的 Activity 中的片段,您需要使用 {@link android.app.FragmentManager}。要想获取它,请从您的 Activity 调用
+{@link android.app.Activity#getFragmentManager()}。</p>
+
+<p>您可以使用 {@link android.app.FragmentManager} 执行的操作包括:</p>
+
+<ul>
+  <li>通过 {@link
+android.app.FragmentManager#findFragmentById findFragmentById()}(对于在 Activity 布局中提供 UI
+的片段)或 {@link android.app.FragmentManager#findFragmentByTag
+findFragmentByTag()}(对于提供或不提供 UI 的片段)获取 Activity 中存在的片段</li> 
+  <li>通过 {@link
+android.app.FragmentManager#popBackStack()}(模拟用户发出的 <em>Back</em> 命令)将片段从返回栈中弹出</li>
+  <li>通过 {@link
+android.app.FragmentManager#addOnBackStackChangedListener addOnBackStackChangedListener()} 注册一个侦听返回栈变化的侦听器</li>
+</ul>
+
+<p>如需了解有关这些方法以及其他方法的详细信息,请参阅 {@link
+android.app.FragmentManager} 类文档。</p>
+
+<p>如上文所示,您也可以使用 {@link android.app.FragmentManager}
+打开一个
+{@link android.app.FragmentTransaction},通过它来执行某些事务,如添加和删除片段。</p>
+
+
+<h2 id="Transactions">执行片段事务</h2>
+
+<p>在 Activity 中使用片段的一大优点是,可以根据用户行为通过它们执行添加、删除、替换以及其他操作。
+您提交给 Activity 的每组更改都称为事务,您可以使用
+{@link
+android.app.FragmentTransaction} 中的 API 来执行一项事务。您也可以将每个事务保存到由 Activity 管理的返回栈内,从而让用户能够回退片段更改(类似于回退 Activity)。
+
+</p>
+
+<p>您可以像下面这样从 {@link
+android.app.FragmentManager} 获取一个 {@link android.app.FragmentTransaction} 实例:</p>
+
+<pre>
+FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()};
+FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
+</pre>
+
+<p>每个事务都是您想要同时执行的一组更改。您可以使用
+{@link
+android.app.FragmentTransaction#add add()}、{@link android.app.FragmentTransaction#remove remove()} 和 {@link android.app.FragmentTransaction#replace replace()}
+等方法为给定事务设置您想要执行的所有更改。然后,要想将事务应用到 Activity,您必须调用
+{@link android.app.FragmentTransaction#commit()}。</p>
+</dl>
+
+<p>不过,在您调用 {@link
+android.app.FragmentTransaction#commit()} 之前,您可能想调用 {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()},以将事务添加到片段事务返回栈。
+该返回栈由 Activity 管理,允许用户通过按“返回”
+<em></em> 按钮返回上一片段状态。</p>
+
+<p>例如,以下示例说明了如何将一个片段替换成另一个片段,以及如何在返回栈中保留先前状态:
+</p>
+
+<pre>
+// Create new fragment and transaction
+Fragment newFragment = new ExampleFragment();
+FragmentTransaction transaction = getFragmentManager().beginTransaction();
+
+// Replace whatever is in the fragment_container view with this fragment,
+// and add the transaction to the back stack
+transaction.replace(R.id.fragment_container, newFragment);
+transaction.addToBackStack(null);
+
+// Commit the transaction
+transaction.commit();
+</pre>
+
+<p>在上例中,{@code newFragment}
+会替换目前在 {@code R.id.fragment_container} ID 所标识的布局容器中的任何片段(如有)。通过调用 {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()}
+可将替换事务保存到返回栈,以便用户能够通过按“返回”
+<em></em>按钮撤消事务并回退到上一片段。</p>
+
+<p>如果您向事务添加了多个更改(如又一个 {@link
+android.app.FragmentTransaction#add add()} 或 {@link android.app.FragmentTransaction#remove
+remove()}),并且调用了 {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()},则在调用
+{@link android.app.FragmentTransaction#commit commit()} 前应用的所有更改都将作为单一事务添加到返回栈,并且“返回”
+<em></em>按钮会将它们一并撤消。</p>
+
+<p>向 {@link android.app.FragmentTransaction}
+添加更改的顺序无关紧要,不过:</p>
+<ul>
+  <li>您必须最后调用 {@link android.app.FragmentTransaction#commit()}</li>
+  <li>如果您要向同一容器添加多个片段,则您添加片段的顺序将决定它们在视图层次结构中的出现顺序
+</li>
+</ul>
+
+<p>如果您没有在执行删除片段的事务时调用 {@link android.app.FragmentTransaction#addToBackStack(String)
+addToBackStack()},则事务提交时该片段会被销毁,用户将无法回退到该片段。
+不过,如果您在删除片段时调用了
+{@link android.app.FragmentTransaction#addToBackStack(String) addToBackStack()},则系统会<em>停止</em>该片段,并在用户回退时将其恢复。
+
+</p>
+
+<p class="note"><strong>提示</strong>:对于每个片段事务,您都可以通过在提交前调用
+{@link android.app.FragmentTransaction#setTransition setTransition()}
+来应用过渡动画。</p>
+
+<p>调用 {@link android.app.FragmentTransaction#commit()}
+不会立即执行事务,而是在 Activity 的 UI
+线程(“主”线程)可以执行该操作时再安排其在线程上运行。不过,如有必要,您也可以从 UI 线程调用 {@link
+android.app.FragmentManager#executePendingTransactions()} 以立即执行
+{@link android.app.FragmentTransaction#commit()} 提交的事务。通常不必这样做,除非其他线程中的作业依赖该事务。
+</p>
+
+<p class="caution"><strong>注意:</strong>您只能在 Activity<a href="{@docRoot}guide/components/activities.html#SavingActivityState">保存其状态</a>(用户离开 Activity)之前使用 {@link
+android.app.FragmentTransaction#commit commit()}
+提交事务。如果您试图在该时间点后提交,则会引发异常。
+这是因为如需恢复 Activity,则提交后的状态可能会丢失。
+对于丢失提交无关紧要的情况,请使用 {@link
+android.app.FragmentTransaction#commitAllowingStateLoss()}。</p>
+
+
+
+
+<h2 id="CommunicatingWithActivity">与 Activity 通信</h2>
+
+<p>尽管 {@link android.app.Fragment} 是作为独立于
+{@link android.app.Activity}
+的对象实现,并且可在多个 Activity 内使用,但片段的给定实例会直接绑定到包含它的 Activity。</p>
+
+<p>具体地说,片段可以通过 {@link
+android.app.Fragment#getActivity()}
+访问 {@link android.app.Activity} 实例,并轻松地执行在 Activity 布局中查找视图等任务。</p>
+
+<pre>
+View listView = {@link android.app.Fragment#getActivity()}.{@link android.app.Activity#findViewById findViewById}(R.id.list);
+</pre>
+
+<p>同样地,您的 Activity 也可以使用
+{@link
+android.app.FragmentManager#findFragmentById findFragmentById()} 或 {@link
+android.app.FragmentManager#findFragmentByTag findFragmentByTag()},通过从 {@link android.app.FragmentManager} 获取对 {@link android.app.Fragment} 的引用来调用片段中的方法。例如:</p>
+
+<pre>
+ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
+</pre>
+
+
+<h3 id="EventCallbacks">创建对 Activity 的事件回调</h3>
+
+<p>在某些情况下,您可能需要通过片段与 Activity 共享事件。执行此操作的一个好方法是,在片段内定义一个回调接口,并要求宿主 Activity 实现它。
+
+当 Activity 通过该接口收到回调时,可以根据需要与布局中的其他片段共享这些信息。
+</p>
+
+<p>例如,如果一个新闻应用的 Activity 有两个片段 &mdash;一个用于显示文章列表(片段 A),另一个用于显示文章(片段 B)&mdash;,那么片段 A必须在列表项被选定后告知 Activity,以便它告知片段 B 显示该文章。
+
+在本例中,{@code OnArticleSelectedListener}
+接口在片段 A 内声明:</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    ...
+    // Container Activity must implement this interface
+    public interface OnArticleSelectedListener {
+        public void onArticleSelected(Uri articleUri);
+    }
+    ...
+}
+</pre>
+
+<p>然后,该片段的宿主 Activity 会实现
+{@code OnArticleSelectedListener}
+接口并替代 {@code onArticleSelected()},将来自片段 A
+的事件通知片段 B。为确保宿主 Activity 实现此界面,片段 A 的 {@link
+android.app.Fragment#onAttach onAttach()}
+回调方法(系统在向 Activity 添加片段时调用的方法)会通过转换传递到
+{@link android.app.Fragment#onAttach
+onAttach()} 中的 {@link android.app.Activity} 来实例化 {@code OnArticleSelectedListener} 的实例:</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    OnArticleSelectedListener mListener;
+    ...
+    &#64;Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        try {
+            mListener = (OnArticleSelectedListener) activity;
+        } catch (ClassCastException e) {
+            throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener");
+        }
+    }
+    ...
+}
+</pre>
+
+<p>如果 Activity 未实现界面,则片段会引发
+{@link java.lang.ClassCastException}。实现时,{@code mListener}
+成员会保留对 Activity 的 {@code OnArticleSelectedListener} 实现的引用,以便片段 A 可以通过调用
+{@code OnArticleSelectedListener}
+界面定义的方法与 Activity 共享事件。例如,如果片段 A 是
+{@link android.app.ListFragment}
+的一个扩展,则用户每次点击列表项时,系统都会调用片段中的 {@link android.app.ListFragment#onListItemClick
+onListItemClick()},然后该方法会调用 {@code onArticleSelected()}
+以与 Activity 共享事件:</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    OnArticleSelectedListener mListener;
+    ...
+    &#64;Override
+    public void onListItemClick(ListView l, View v, int position, long id) {
+        // Append the clicked item's row ID with the content provider Uri
+        Uri noteUri = ContentUris.{@link android.content.ContentUris#withAppendedId withAppendedId}(ArticleColumns.CONTENT_URI, id);
+        // Send the event and Uri to the host activity
+        mListener.onArticleSelected(noteUri);
+    }
+    ...
+}
+</pre>
+
+<p>传递到 {@link
+android.app.ListFragment#onListItemClick onListItemClick()} 的 {@code id} 参数是被点击项的行
+ID,即 Activity(或其他片段)用来从应用的 {@link
+android.content.ContentProvider} 获取文章的 ID。</p>
+
+<p><!--To see a complete implementation of this kind of callback interface, see the <a
+href="{@docRoot}resources/samples/NotePad/index.html">NotePad sample</a>. --><a href="{@docRoot}guide/topics/providers/content-providers.html">内容提供程序</a>文档中提供了有关内容提供程序用法的更多详情。
+</p>
+
+
+
+<h3 id="ActionBar">向操作栏添加项目</h3>
+
+<p>您的片段可以通过实现
+{@link android.app.Fragment#onCreateOptionsMenu(Menu,MenuInflater) onCreateOptionsMenu()} 向 Activity 的<a href="{@docRoot}guide/topics/ui/menus.html#options-menu">选项菜单</a>(并因此向<a href="{@docRoot}guide/topics/ui/actionbar.html">操作栏</a>)贡献菜单项。不过,为了使此方法能够收到调用,您必须在
+{@link
+android.app.Fragment#onCreate(Bundle) onCreate()} 期间调用 {@link
+android.app.Fragment#setHasOptionsMenu(boolean) setHasOptionsMenu()},以指示片段想要向选项菜单添加菜单项(否则,片段将不会收到对
+{@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()}
+的调用)。</p>
+
+<p>您之后从片段添加到选项菜单的任何菜单项都将追加到现有菜单项之后。
+选定菜单项时,片段还会收到对 {@link
+android.app.Fragment#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}
+的回调。</p>
+
+<p>您还可以通过调用 {@link
+android.app.Fragment#registerForContextMenu(View) registerForContextMenu()},在片段布局中注册一个视图来提供上下文菜单。用户打开上下文菜单时,片段会收到对
+{@link
+android.app.Fragment#onCreateContextMenu(ContextMenu,View,ContextMenu.ContextMenuInfo)
+onCreateContextMenu()} 的调用。当用户选择某个菜单项时,片段会收到对 {@link
+android.app.Fragment#onContextItemSelected(MenuItem) onContextItemSelected()} 的调用。</p>
+
+<p class="note"><strong>注:</strong>尽管您的片段会收到与其添加的每个菜单项对应的菜单项选定回调,但当用户选择菜单项时,Activity 会首先收到相应的回调。
+
+如果 Activity 对菜单项选定回调的实现不会处理选定的菜单项,则系统会将事件传递到片段的回调。
+这适用于选项菜单和上下文菜单。
+</p>
+
+<p>如需了解有关菜单的详细信息,请参阅<a href="{@docRoot}guide/topics/ui/menus.html">菜单</a>和<a href="{@docRoot}guide/topics/ui/actionbar.html">操作栏</a>开发者指南。</p>
+
+
+
+
+<h2 id="Lifecycle">处理片段生命周期</h2>
+
+<div class="figure" style="width:350px">
+<img src="{@docRoot}images/activity_fragment_lifecycle.png" alt="" />
+<p class="img-caption"><strong>图 3. </strong>Activity 生命周期对片段生命周期的影响。
+</p>
+</div>
+
+<p>管理片段生命周期与管理 Activity 生命周期很相似。和 Activity 一样,片段也以三种状态存在:
+</p>
+
+<dl>
+  <dt><i>恢复</i></dt>
+    <dd>片段在运行中的 Activity 中可见。</dd>
+
+  <dt><i>暂停</i></dt>
+    <dd>另一个 Activity 位于前台并具有焦点,但此片段所在的 Activity 仍然可见(前台 Activity 部分透明,或未覆盖整个屏幕)。
+
+</dd>
+
+  <dt><i>停止</i></dt>
+    <dd>片段不可见。宿主 Activity 已停止,或片段已从 Activity 中删除,但已添加到返回栈。
+停止片段仍然处于活动状态(系统会保留所有状态和成员信息)。
+不过,它对用户不再可见,如果 Activity 被终止,它也会被终止。
+</dd>
+</dl>
+
+<p>同样与 Activity 一样,假使 Activity 的进程被终止,而您需要在重建 Activity 时恢复片段状态,您也可以使用 {@link
+android.os.Bundle}
+保留片段的状态。您可以在片段的 {@link
+android.app.Fragment#onSaveInstanceState onSaveInstanceState()} 回调期间保存状态,并可在
+{@link android.app.Fragment#onCreate onCreate()}、{@link
+android.app.Fragment#onCreateView onCreateView()} 或 {@link
+android.app.Fragment#onActivityCreated onActivityCreated()} 期间恢复状态。如需了解有关保存状态的详细信息,请参阅<a href="{@docRoot}guide/components/activities.html#SavingActivityState">Activity</a>文档。
+
+</p>
+
+<p>Activity 生命周期与片段生命周期之间的最显著差异在于它们在其各自返回栈中的存储方式。
+默认情况下,Activity 停止时会被放入由系统管理的 Activity 返回栈(以便用户通过“返回”
+<em></em>
+按钮回退到Activity,<a href="{@docRoot}guide/components/tasks-and-back-stack.html">任务和返回栈</a>对此做了阐述)。不过,仅当您在删除片段的事务执行期间通过调用
+{@link
+android.app.FragmentTransaction#addToBackStack(String) addToBackStack()}
+显式请求保存实例时,系统才会将片段放入由宿主 Activity 管理的返回栈。
+</p>
+
+<p>在其他方面,管理片段生命周期与管理 Activity 生命周期非常相似。
+因此,<a href="{@docRoot}guide/components/activities.html#Lifecycle">管理 Activity 生命周期</a>的做法同样适用于片段。
+但您还需要了解 Activity 的生命周期对片段生命周期的影响。
+</p>
+
+<p class="caution"><strong>注意:</strong>如需 {@link android.app.Fragment}
+内的某个 {@link android.content.Context}
+对象,可以调用 {@link android.app.Fragment#getActivity()}。但要注意,请仅在片段附加到 Activity 时调用
+{@link android.app.Fragment#getActivity()}。如果片段尚未附加,或在其生命周期结束期间分离,则
+{@link android.app.Fragment#getActivity()} 将返回 null。</p>
+
+
+<h3 id="CoordinatingWithActivity">与 Activity 生命周期协调一致</h3>
+
+<p>片段所在的 Activity 的生命周期会影响片段的生命周期,其表现为,Activity 的每次生命周期回调都会引发每个片段的类似回调。
+
+例如,当 Activity 收到 {@link android.app.Activity#onPause} 时,Activity 中的每个片段也会收到
+{@link android.app.Fragment#onPause}。</p>
+
+<p>不过,片段还有几个额外的生命周期回调,用于处理与 Activity 的唯一交互,以执行构建和销毁片段 UI 等操作。这些额外的回调方法是:
+
+</p>
+
+<dl>
+  <dt>{@link android.app.Fragment#onAttach onAttach()}</dt>
+    <dd>在片段已与 Activity 关联时调用({@link
+android.app.Activity} 传递到此方法内)。</dd>
+  <dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
+    <dd>调用它可创建与片段关联的视图层次结构。</dd>
+  <dt>{@link android.app.Fragment#onActivityCreated onActivityCreated()}</dt>
+    <dd>在 Activity 的 {@link android.app.Activity#onCreate
+onCreate()} 方法已返回时调用。</dd>
+  <dt>{@link android.app.Fragment#onDestroyView onDestroyView()}</dt>
+    <dd>在删除与片段关联的视图层次结构时调用。</dd>
+  <dt>{@link android.app.Fragment#onDetach onDetach()}</dt>
+    <dd>在取消片段与 Activity 的关联时调用。</dd>
+</dl>
+
+<p>图 3
+图示说明了受其宿主 Activity 影响的片段生命周期流。在该图中,您可以看到 Activity 的每个连续状态如何决定片段可以收到的回调方法。
+例如,当 Activity 收到其 {@link
+android.app.Activity#onCreate onCreate()} 回调时,Activity 中的片段只会收到
+{@link android.app.Fragment#onActivityCreated onActivityCreated()} 回调。</p>
+
+<p>一旦 Activity 达到恢复状态,您就可以意向 Activity 添加片段和删除其中的片段。
+因此,只有当 Activity 处于恢复状态时,片段的生命周期才能独立变化。
+</p>
+
+<p>不过,当 Activity 离开恢复状态时,片段会在 Activity 的推动下再次经历其生命周期。
+</p>
+
+
+
+
+<h2 id="Example">示例</h2>
+
+<p>为了将本文阐述的所有内容融会贯通,以下提供了一个示例,其中的 Activity 使用两个片段来创建一个双窗格布局。
+下面的 Activity 包括两个片段:一个用于显示莎士比亚戏剧标题列表,另一个用于从列表中选定戏剧时显示其摘要。
+
+此外,它还展示了如何根据屏幕配置提供不同的片段配置。
+</p>
+
+<p class="note"><strong>注:</strong><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.html">{@code
+FragmentLayout.java}</a>
+中提供了此 Activity 的完整源代码。</p>
+
+<p>主 Activity 会在 {@link
+android.app.Activity#onCreate onCreate()} 期间以常规方式应用布局:</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java main}
+
+<p>应用的布局为 {@code fragment_layout.xml}:</p>
+
+{@sample development/samples/ApiDemos/res/layout-land/fragment_layout.xml layout}
+
+<p>通过使用此布局,系统可在 Activity 加载布局时立即实例化
+{@code TitlesFragment}(列出戏剧标题),而
+{@link android.widget.FrameLayout}(用于显示戏剧摘要的片段所在位置)则会占用屏幕右侧的空间,但最初处于空白状态。
+正如您将在下文所见的那样,用户从列表中选择某个项目后,系统才会将片段放入
+{@link android.widget.FrameLayout}。</p>
+
+<p>不过,并非所有屏幕配置都具有足够的宽度,可以并排显示戏剧列表和摘要。
+因此,以上布局仅用于横向屏幕配置(布局保存在
+{@code res/layout-land/fragment_layout.xml})。</p>
+
+<p>因此,当屏幕纵向显示时,系统会应用以下布局(保存在
+{@code res/layout/fragment_layout.xml}):</p>
+
+{@sample development/samples/ApiDemos/res/layout/fragment_layout.xml layout}
+
+<p>此布局仅包括 {@code TitlesFragment}。这意味着,当设备纵向显示时,只有戏剧标题列表可见。
+因此,当用户在此配置中点击某个列表项时,应用会启动一个新 Activity 来显示摘要,而不是加载另一个片段。
+
+</p>
+
+<p>接下来,您可以看到如何在片段类中实现此目的。第一个片段是 {@code
+TitlesFragment},它显示莎士比亚戏剧标题列表。该片段扩展了 {@link
+android.app.ListFragment},并依靠它来处理大多数列表视图工作。</p>
+
+<p>当您检查此代码时,请注意,用户点击列表项时可能会出现两种行为:系统可能会创建并显示一个新片段,从而在同一活动中显示详细信息(将片段添加到
+{@link
+android.widget.FrameLayout}),也可能会启动一个新活动(在该活动中可显示片段),具体取决于这两个布局中哪一个处于活动状态。
+</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java titles}
+
+<p>第二个片段 {@code DetailsFragment} 显示从
+{@code TitlesFragment} 的列表中选择的项目的戏剧摘要:</p>
+ 
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
+
+<p>从 {@code TitlesFragment} 类中重新调用,如果用户点击某个列表项,且当前布局“根本不”<em></em>包括 {@code R.id.details}
+视图(即
+{@code DetailsFragment} 所属视图),则应用会启动 {@code DetailsActivity}
+Activity 以显示该项目的内容。</p>
+
+<p>以下是 {@code DetailsActivity},它简单地嵌入了
+{@code DetailsFragment},以在屏幕为纵向时显示所选的戏剧摘要:</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
+details_activity}
+ 
+<p>请注意,如果配置为横向,则此 Activity 会自行完成,以便主 Activity 可以接管并沿 {@code TitlesFragment}
+显示
+{@code DetailsFragment}。如果用户在纵向显示时启动
+{@code DetailsActivity},但随后旋转为横向(这会重启当前 Activity),就可能出现这种情况。</p>
+
+
+<p>如需查看使用片段的更多示例(以及本示例的完整源文件),请参阅
+<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/index.html#Fragment">
+ApiDemos</a>(可从<a href="{@docRoot}resources/samples/get.html">示例 SDK 组件</a>下载)中提供的 API Demos 示例应用。</p>
+
+
diff --git a/docs/html-intl/intl/zh-cn/guide/components/fundamentals.jd b/docs/html-intl/intl/zh-cn/guide/components/fundamentals.jd
new file mode 100644
index 0000000..4ff22b6
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/components/fundamentals.jd
@@ -0,0 +1,480 @@
+page.title=应用基础知识
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本文内容</h2>
+<ol>
+<li><a href="#Components">应用组件</a>
+  <ol>
+    <li><a href="#ActivatingComponents">启动组件</a></li>
+  </ol>
+</li>
+<li><a href="#Manifest">清单文件</a>
+  <ol>
+    <li><a href="#DeclaringComponents">声明组件</a></li>
+    <li><a href="#DeclaringRequirements">声明应用要求</a></li>
+  </ol>
+</li>
+<li><a href="#Resources">应用资源</a></li>
+</ol>
+</div>
+</div>
+
+<p>Android 应用采用 Java 编程语言编写。Android SDK
+工具将您的代码&mdash;连同任何数据和资源文件&mdash;编译到一个 APK: <i>Android 软件包</i>,即带有
+{@code .apk} 后缀的存档文件中。一个 APK 文件包含
+Android 应用的所有内容,它是基于 Android 系统的设备用来安装应用的文件。</p>
+
+<p>安装到设备后,每个 Android 应用都运行在自己的安全沙箱内: </p>
+
+<ul>
+ <li>Android 操作系统是一种多用户 Linux
+系统,其中的每个应用都是一位不同的用户;</li>
+
+<li>默认情况下,系统会为每个应用分配一个唯一的 Linux 用户 ID(该 ID
+仅由系统使用,应用并不知晓)。系统为应用中的所有文件设置权限,使得只有分配给该应用的用户 ID
+才能访问这些文件; </li>
+
+<li>每个进程都具有自己的虚拟机
+(VM),因此应用代码是在与其他应用隔离的环境中运行;</li>
+
+<li>默认情况下,每个应用都在其自己的 Linux 进程内运行。Android
+会在需要执行任何应用组件时启动该进程,然后在不再需要该进程或系统必须为其他应用恢复内存时关闭该进程。
+</li>
+</ul>
+
+<p>Android 系统可以通过这种方式实现<em>最小权限原则</em>。也就是说,默认情况下,每个应用都只能访问执行其工作所需的组件,而不能访问其他组件。
+
+这样便营造出一个非常安全的环境,在这个环境中,应用无法访问系统中其未获得权限的部分。
+</p>
+
+<p>不过,应用仍然可以通过一些途径与其他应用共享数据以及访问系统服务:
+</p>
+
+<ul>
+  <li>可以安排两个应用共享同一 Linux 用户
+ID,在这种情况下,它们能够相互访问彼此的文件。为了节省系统资源,可以安排具有相同用户 ID
+的应用在同一 Linux 进程中运行,并共享同一
+VM(应用还必须使用相同的证书签署);</li>
+  <li>应用可以请求访问设备数据(如用户的联系人、短信、可装入存储装置
+[SD 卡]、相机、蓝牙等)的权限。所有应用权限都必须由用户在安装时授予。
+</li>
+</ul>
+
+<p>以上内容阐述了有关 Android 应用在系统内存在方式的基础知识。本文的其余部分将向您介绍以下内容:
+</p>
+<ul>
+  <li>定义应用的核心框架组件</li>
+  <li>您用来声明组件和应用必需设备功能的清单文件
+</li>
+  <li>与应用代码分离并允许您的应用针对各种设备配置适当优化其行为的资源
+</li>
+</ul>
+
+
+
+<h2 id="Components">应用组件</h2>
+
+<p>应用组件是
+Android
+应用的基本构建基块。每个组件都是一个不同的点,系统可以通过它进入您的应用。并非所有组件都是用户的实际入口点,有些组件相互依赖,但每个组件都以独立实体形式存在,并发挥特定作用&mdash;每个组件都是唯一的构建基块,有助于定义应用的总体行为。
+
+</p>
+
+<p>共有四种不同的应用组件类型。每种类型都服务于不同的目的,并且具有定义组件的创建和销毁方式的不同生命周期。
+</p>
+
+<p>以下便是这四种应用组件类型:</p>
+
+<dl>
+
+<dt><b>Activity</b></dt>
+
+<dd><i>Activity</i>表示具有用户界面的单一屏幕。例如,电子邮件应用可能具有一个显示新电子邮件列表的 Activity、一个用于撰写电子邮件的 Activity 以及一个用于阅读电子邮件的 Activity。
+
+尽管这些 Activity 通过协作在电子邮件应用中形成了一种具有凝聚力的用户体验,但每一个 Activity 都独立于其他 Activity 而存在。
+
+因此,其他应用可以启动其中任何一个 Activity(如果电子邮件应用允许)。
+例如,相机应用可以启动电子邮件应用内用于撰写新电子邮件的 Activity,以便用户共享图片。
+
+
+<p>Activity 作为
+{@link android.app.Activity}
+的子类实现,您可以在<a href="{@docRoot}guide/components/activities.html">Activity</a>开发者指南中了解有关它的更多详情。</p>
+</dd>
+
+
+<dt><b>服务</b></dt>
+
+<dd><i>服务</i> 是一种在后台运行的组件,用于执行长时间运行的操作或为远程进程执行作业。
+服务不提供用户界面。
+例如,当用户位于其他应用中时,服务可能在后台播放音乐或者通过网络获取数据,但不会阻断用户与 Activity 的交互。
+
+诸如 Activity 等其他组件可以启动服务,让其运行或与其绑定以便与其进行交互。
+
+
+<p>服务作为
+{@link android.app.Service}
+的子类实现,您可以在<a href="{@docRoot}guide/components/services.html">服务</a>开发者指南中了解有关它的更多详情。</p>
+</dd>
+
+
+<dt><b>内容提供程序</b></dt>
+
+<dd>内容<i>提供程序</i> 管理一组共享的应用数据。您可以将数据存储在文件系统、SQLite
+数据库、Web
+上或您的应用可以访问的任何其他永久性存储位置。其他应用可以通过内容提供程序查询数据,甚至修改数据(如果内容提供程序允许)。
+例如,Android
+系统可提供管理用户联系人信息的内容提供程序。因此,任何具有适当权限的应用都可以查询内容提供程序的某一部分(如
+{@link
+android.provider.ContactsContract.Data}),以读取和写入有关特定人员的信息。
+
+<p>内容提供程序也适用于读取和写入您的应用不共享的私有数据。
+例如,<a href="{@docRoot}resources/samples/NotePad/index.html">记事本</a>示例应用使用内容提供程序来保存笔记。
+</p>
+
+<p>内容提供程序作为 {@link android.content.ContentProvider}
+的子类实现,并且必须实现让其他应用能够执行事务的一组标准
+API。如需了解详细信息,请参阅<a href="{@docRoot}guide/topics/providers/content-providers.html">内容提供程序</a>开发者指南。
+</p>
+</dd>
+
+
+<dt><b>广播接收器</b></dt>
+
+<dd>广播接收器<i></i> 是一种用于响应系统范围广播通知的组件。
+许多广播都是由系统发起的&mdash;例如,通知屏幕已关闭、电池电量不足或已拍摄照片的广播。应用也可以发起广播&mdash;例如,通知其他应用某些数据已下载至设备,并且可供其使用。
+
+
+尽管广播接收器不会显示用户界面,但它们可以<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">创建状态栏通知</a>,在发生广播事件时提醒用户。
+
+但广播接收器更常见的用途只是作为通向其他组件的“通道”,设计用于执行极少量的工作。
+例如,它可能会基于事件发起一项服务来执行某项工作。
+
+
+<p>广播接收器作为 {@link android.content.BroadcastReceiver}
+的子类实现,并且每条广播都作为 {@link android.content.Intent} 对象进行传递。如需了解详细信息,请参阅
+{@link android.content.BroadcastReceiver} 类。</p>
+</dd>
+
+</dl>
+
+
+
+<p>Android
+系统设计的独特之处在于,任何应用都可以启动其他应用的组件。例如,如果您想让用户使用设备的相机拍摄照片,很可能有另一个应用可以执行该操作,那么您的应用就可以利用该应用,而不是开发一个 Activity 来自行拍摄照片。
+
+您不需要集成甚至链接到该相机应用的代码,而是只需在拍摄照片的相机应用中启动该 Activity。
+
+
+完成拍摄时,系统甚至会将照片返回您的应用,以便您使用。对用户而言,就好像相机真正是您应用的组成部分。
+</p>
+
+<p>当系统启动某个组件时,会启动该应用的进程(如果尚未运行),并实例化该组件所需的类。
+例如,如果您的应用启动相机应用中拍摄照片的 Activity,则该 Activity 会在属于相机应用的进程,而不是您的应用的进程中运行。因此,与大多数其他系统上的应用不同,Android
+应用并没有单一入口点(例如,没有
+{@code main()}
+功能)。
+</p>
+
+<p>由于系统在单独的进程中运行每个应用,且其文件权限会限制对其他应用的访问,因此您的应用无法直接启动其他应用中的组件,但
+Android
+系统却可以。因此,要想启动其他应用中的组件,您必须向系统传递一则消息,说明您想启动特定组件的
+<em> Intent</em>。
+系统随后便会为您启动该组件。</p>
+
+
+<h3 id="ActivatingComponents">启动组件</h3>
+
+<p>四种组件类型中的三种&mdash;Activity、服务和广播接收器&mdash;通过名为
+<em> Intent </em>
+的异步消息进行启动。 Intent 会在运行时将各个组件相互绑定(您可以将 Intent 视为从其他组件请求操作的信使),无论组件属于您的应用还是其他应用。
+
+</p>
+
+<p>Intent 使用 {@link android.content.Intent}
+对象创建,它定义的消息用于启动特定组件或特定<em>类型</em>的组件&mdash; Intent 可以是显式的,也可以是隐式的。
+</p>
+
+<p>对于 Activity 和服务, Intent 定义要执行的操作(例如,“查看”或“发送”某个内容),并且可以指定要执行操作的数据的
+URI(以及正在启动的组件可能需要了解的信息)。
+例如, Intent 传达的请求可以是启动一个显示图像或打开网页的 Activity。
+在某些情况下,您可以启动 Activity 来接收结果,在这种情况下,Activity 也会在 {@link android.content.Intent}
+中返回结果(例如,您可以发出一个 Intent,让用户选取某位联系人并将其返回给您 &mdash; 返回 Intent 包括指向所选联系人的
+URI)。
+
+</p>
+
+<p>对于广播接收器, Intent 只会定义要广播的通知(例如,指示设备电池电量不足的广播只包括指示“电池电量不足”的已知操作字符串)。
+
+</p>
+
+<p> Intent 不会启动另一个组件类型 - 内容提供程序,后者会在成为
+{@link android.content.ContentResolver} 的请求目标时启动。内容解析程序通过内容提供程序处理所有直接事务,使得通过提供程序执行事务的组件可以无需执行事务,而是改为在
+{@link
+android.content.ContentResolver}
+对象上调用方法。这会在内容提供程序与请求信息的组件之间留出一个抽象层(以确保安全)。
+</p>
+
+<p>每种类型的组件有不同的启动方法:</p>
+<ul>
+  <li>您可以通过将 {@link android.content.Intent}
+传递到 {@link android.content.Context#startActivity
+startActivity()} 或
+{@link android.app.Activity#startActivityForResult startActivityForResult()}(当您想让 Activity 返回结果时)来启动 Activity(或为其安排新任务);</li>
+  <li>您可以通过将
+{@link android.content.Intent} 传递到 {@link android.content.Context#startService
+startService()} 来启动服务(或对执行中的服务下达新指令)。或者,您也可以通过将 {@link android.content.Intent} 传递到
+{@link android.content.Context#bindService bindService()} 来绑定到该服务;</li>
+  <li>您可以通过将 {@link android.content.Intent} 传递到
+{@link android.content.Context#sendBroadcast(Intent) sendBroadcast()}、{@link
+android.content.Context#sendOrderedBroadcast(Intent, String) sendOrderedBroadcast()} 或 {@link
+android.content.Context#sendStickyBroadcast sendStickyBroadcast()} 等方法来发起广播;</li>
+  <li>您可以通过在 {@link android.content.ContentResolver} 上调用 {@link
+android.content.ContentProvider#query query()} 来对内容提供程序执行查询。</li>
+</ul>
+
+<p>如需了解有关 Intent 用法的详细信息,请参阅 <a href="{@docRoot}guide/components/intents-filters.html"> Intent 和 Intent 过滤器</a>文档。
+以下文档中还提供了有关启动特定组件的详细信息:
+<a href="{@docRoot}guide/components/activities.html">Activity</a>、<a href="{@docRoot}guide/components/services.html">服务</a>、{@link
+android.content.BroadcastReceiver} 和<a href="{@docRoot}guide/topics/providers/content-providers.html">内容提供程序</a>。</p>
+
+
+<h2 id="Manifest">清单文件</h2>
+
+<p>在 Android
+系统启动应用组件之前,系统必须通过读取应用的 {@code AndroidManifest.xml}
+文件(“清单”文件)确认组件存在。您的应用必须在此文件中声明其所有组件,该文件必须位于应用项目目录的根目录中。
+</p>
+
+<p>除了声明应用的组件外,清单文件还有许多其他作用,如:
+</p>
+<ul>
+  <li>确定应用需要的任何用户权限,如互联网访问权限或对用户联系人的读取权限
+</li>
+  <li>根据应用使用的
+API,声明应用所需的最低<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API 级别</a></li>
+  <li>声明应用使用或需要的硬件和软件功能,如相机、蓝牙服务或多点触摸屏幕
+</li>
+  <li>应用需要链接的 API 库(Android 框架
+API 除外),如 <a href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google Maps API
+库</a></li>
+  <li>其他功能</li>
+</ul>
+
+
+<h3 id="DeclaringComponents">声明组件</h3>
+
+<p>清单文件的主要任务是告知系统有关应用组件的信息。例如,清单文件可以想下面这样声明 Activity:
+ </p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;manifest ... &gt;
+    &lt;application android:icon="@drawable/app_icon.png" ... &gt;
+        &lt;activity android:name="com.example.project.ExampleActivity"
+                  android:label="@string/example_label" ... &gt;
+        &lt;/activity&gt;
+        ...
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>在 <code><a
+href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+元素中,{@code android:icon}
+属性指向标识应用的图标所对应的资源。</p>
+
+<p>在 <code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+元素中,{@code android:name} 属性指定 {@link
+android.app.Activity} 子类的完全限定类名,{@code android:label}
+属性指定用作 Activity 的用户可见标签的字符串。</p>
+
+<p>您必须通过以下方式声明所有应用组件:</p>
+<ul>
+  <li>Activity 的 <code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+元素</li>
+  <li>服务的 <code><a
+href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+元素</li>
+  <li>广播接收器的 <code><a
+href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
+元素</li>
+  <li>内容提供程序的 <code><a
+href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+元素</li>
+</ul>
+
+<p>您包括在源代码中,但未在清单文件中声明的 Activity、服务和内容提供程序对系统不可见,因此也永远不会运行。
+不过,广播接收器可以在清单文件中声明或在代码中动态创建(如
+{@link android.content.BroadcastReceiver}
+对象)并通过调用
+{@link android.content.Context#registerReceiver registerReceiver()}
+在系统中注册。</p>
+
+<p>如需了解有关如何为您的应用构建清单文件的详细信息,请参阅
+<a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml 文件</a>文档。 </p>
+
+
+
+<h3 id="DeclaringComponentCapabilities">声明组件功能</h3>
+
+<p>如上文<a href="#ActivatingComponents">启动组件</a>中所述,您可以使用
+{@link android.content.Intent} 来启动 Activity、服务和广播接收器。您可以通过在 Intent 中显式命名目标组件(使用组件类名)来执行此操作。
+不过,Intent 的真正强大之处在于<em>隐式 Intent </em> 概念。
+隐式 Intent 的作用无非是描述要执行的操作类型(还可选择描述您想执行的操作所针对的数据),让系统能够在设备上找到可执行该操作的组件,并启动该组件。
+
+
+如果有多个组件可以执行 Intent 所描述的操作,则由用户选择使用哪一个组件。
+</p>
+
+<p>系统通过将接收到的 Intent 与设备上的其他应用的清单文件中提供的 Intent 过滤器进行比较来确定可以响应 Intent 的组件。
+<i></i>
+</p>
+
+<p>当您在应用的清单文件中声明 Activity 时,可以选择性地加入声明 Activity 功能的 Intent 过滤器,以便响应来自其他应用的 Intent。
+
+您可以通过将
+<a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> 元素作为组件声明元素的子项进行添加来为您的组件声明 Intent 过滤器。</p>
+
+<p>例如,如果您开发的一个电子邮件应用包含一个用于撰写新电子邮件的 Activity,则可以像下面这样声明一个 Intent 过滤器来响应“send” Intent(以发送新电子邮件):
+</p>
+<pre>
+&lt;manifest ... >
+    ...
+    &lt;application ... &gt;
+        &lt;activity android:name="com.example.project.ComposeEmailActivity">
+            &lt;intent-filter>
+                &lt;action android:name="android.intent.action.SEND" />
+                &lt;data android:type="*/*" />
+                &lt;category android:name="android.intent.category.DEFAULT" />
+            &lt;/intent-filter>
+        &lt;/activity>
+    &lt;/application&gt;
+&lt;/manifest>
+</pre>
+
+<p>然后,如果另一个应用创建了一个包含
+{@link
+android.content.Intent#ACTION_SEND} 操作的 Intent,并将其传递到 {@link android.app.Activity#startActivity
+startActivity()},则系统可能会启动您的 Activity,以便用户能够草拟并发送电子邮件。</p>
+
+<p>如需了解有关创建 Intent 过滤器的详细信息,请参阅 <a href="{@docRoot}guide/components/intents-filters.html"> Intent 和 Intent 过滤器</a>文档。
+</p>
+
+
+
+<h3 id="DeclaringRequirements">声明应用要求</h3>
+
+<p>基于 Android
+系统的设备多种多样,并非所有设备都提供相同的特性和功能。为防止将您的应用安装在缺少应用所需特性的设备上,您必须通过在清单文件中声明设备和软件要求,为您的应用支持的设备类型明确定义一个配置文件。
+
+
+其中的大多数声明只是为了提供信息,系统不会读取它们,但
+Google Play
+等外部服务会读取它们,以便当用户在其设备中搜索应用时为用户提供过滤功能。</p>
+
+<p>例如,如果您的应用需要相机,并使用 Android 2.1(<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API</a> 7 级)中引入的
+API,您应该像下面这样在清单文件中以要求形式声明这些信息:</p> 
+
+<pre>
+&lt;manifest ... >
+    &lt;uses-feature android:name="android.hardware.camera.any"
+                  android:required="true" />
+    &lt;uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" />
+    ...
+&lt;/manifest>
+</pre>
+
+<p>现在,<em>没有</em>相机且 
+Android 版本<em>低于</em> 2.1 的设备将无法从 Google Play 安装您的应用。</p>
+
+<p>不过,您也可以声明您的应用使用相机,但并不<em>要求</em>必须使用。
+在这种情况下,您的应用必须将 <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#required">{@code required}</a>
+属性设置为
+{@code "false"},并在运行时检查设备是否具有相机,然后根据需要禁用任何相机功能。</p>
+
+<p><a href="{@docRoot}guide/practices/compatibility.html">设备兼容性</a>文档中提供了有关如何管理应用与不同设备兼容性的详细信息。
+
+</p>
+
+
+
+<h2 id="Resources">应用资源</h2>
+
+<p>Android
+应用并非只包含代码&mdash;它还需要与源代码分离的资源,如图像、音频文件以及任何与应用的视觉呈现有关的内容。例如,您应该通过
+XML
+文件定义 Activity 用户界面的动画、菜单、样式、颜色和布局。使用应用资源能够在不修改代码的情况下轻松地更新应用的各种特性,并可通过提供备用资源集让您能够针对各种设备配置(如不同的语言和屏幕尺寸)优化您的应用。
+
+
+</p>
+
+<p>对于您的 Android 项目中包括的每一项资源,SDK
+构建工具都会定义一个唯一的整型 ID,您可以利用它来引用应用代码或 XML
+中定义的其他资源中的资源。例如,如果您的应用包含一个名为 {@code
+logo.png} 的图像文件(保存在 {@code res/drawable/} 目录中),则 SDK 工具会生成一个名为
+{@code R.drawable.logo} 的资源
+ID,您可以利用它来引用该图像并将其插入您的用户界面。</p>
+
+<p>提供与源代码分离的资源的其中一个最重要优点在于,您可以提供针对不同设备配置的备用资源。
+
+例如,通过在 XML 中定义 UI
+字符串,您可以将字符串翻译为其他语言,并将这些字符串保存在单独的文件中。然后,Android
+系统会根据向资源目录名称追加的语言<em>限定符</em>(如为法语字符串值追加 {@code res/values-fr/})和用户的语言设置,对您的
+UI
+应用相应的语言字符串。</p>
+
+<p>Android 支持许多不同的备用资源<em>限定符</em>。限定符是一种加入到资源目录名称中,用来定义这些资源适用的设备配置的简短字符串。
+
+再举一例,您应该经常会根据设备的屏幕方向和尺寸为 Activity 创建不同的布局。
+
+例如,当设备屏幕为纵向(长型)时,您可能想要一种垂直排列按钮的布局;但当屏幕为横向(宽型)时,应按水平方向排列按钮。
+
+要想根据方向更改布局,您可以定义两种不同的布局,然后对每个布局的目录名称应用相应的限定符。
+
+然后,系统会根据当前设备方向自动应用相应的布局。
+</p>
+
+<p>如需了解有关可以在应用中包括的不同资源类型以及如何针对不同设备配置创建备用资源的详细信息,请阅读<a href="{@docRoot}guide/topics/resources/providing-resources.html">提供资源</a>。
+</p>
+
+
+
+<div class="next-docs">
+<div class="col-6">
+  <h2 class="norule">继续阅读以下方面的内容:</h2>
+  <dl>
+    <dt><a href="{@docRoot}guide/components/intents-filters.html"> Intent 和 Intent 过滤器</a>
+    </dt>
+    <dd>有关如何使用 {@link android.content.Intent} API 来启动应用组件(如 Activity 和服务)以及如何使您的应用组件可供其他应用使用的信息。
+
+</dd>
+    <dt><a href="{@docRoot}guide/components/activities.html">Activity</a></dt>
+    <dd>有关如何创建 {@link android.app.Activity} 类实例的信息,该类可在您的应用内提供一个具有用户界面的独立屏幕。
+</dd>
+    <dt><a href="{@docRoot}guide/topics/resources/providing-resources.html">提供资源</a></dt>
+    <dd>有关如何通过适当构建 Android 应用来使应用资源与应用代码分离的信息,包括如何针对特定设备配置提供备用资源。
+
+
+    </dd>
+  </dl>
+</div>
+<div class="col-6">
+  <h2 class="norule">您可能还对以下内容感兴趣:</h2>
+  <dl>
+    <dt><a href="{@docRoot}guide/practices/compatibility.html">设备兼容性</a></dt>
+    <dd>有关 Android 在不同设备类型上工作方式的信息,并介绍了如何针对不同设备优化您的应用,或如何限制您的应用在不同设备上的可用性。
+
+</dd>
+    <dt><a href="{@docRoot}guide/topics/security/permissions.html">系统权限</a></dt>
+    <dd>有关 Android 如何通过一种权限系统来限制应用对特定 API 访问权限的信息,该系统要求征得用户同意,才允许您的应用使用这些 API。
+</dd>
+  </dl>
+</div>
+</div>
+
diff --git a/docs/html-intl/intl/zh-cn/guide/components/index.jd b/docs/html-intl/intl/zh-cn/guide/components/index.jd
new file mode 100644
index 0000000..53e8184
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/components/index.jd
@@ -0,0 +1,57 @@
+page.title=应用组件
+page.landing=true
+page.landing.intro=利用 Android应用框架,您可以使用一组可重复使用的组件创建丰富的创新应用。此部分阐述您可以如何构建用于定义应用构建基块的组件,以及如何使用 Intent 将这些组件连接在一起。
+page.metaDescription=利用 Android应用框架,您可以使用一组可重复使用的组件创建丰富的创新应用。此部分阐述您可以如何构建用于定义应用构建基块的组件,以及如何使用 Intent 将这些组件连接在一起。
+page.landing.image=images/develop/app_components.png
+page.image=images/develop/app_components.png
+
+@jd:body
+
+<div class="landing-docs">
+
+  <div class="col-6">
+    <h3>博客文章</h3>
+    
+    <a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
+      <h4>使用 DialogFragments</h4>
+      <p>在这篇帖子中,我将介绍如何使用带有 v4 支持库(旨在支持 Honeycomb 之前的设备实现向后兼容)的 DialogFragments 显示一个简单的编辑对话框,并使用一个接口向调用 Activity 返回一个结果。</p>
+    </a>
+
+    <a href="http://android-developers.blogspot.com/2011/03/fragments-for-all.html">
+      <h4>通用片段</h4>
+      <p>今天,我们已发布一个展示相同 Fragments API 的静态库(以及新的 LoaderManager 和其他几个类)。因此,与 Android 1.6 或更高版本兼容的应用可以使用 Fragment 创建与平板电脑兼容的用户界面。 </p>
+    </a>
+    
+    <a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
+      <h4>多线程处理,性能卓越</h4>
+      <p>创建快速响应的应用的有效方法是:确保最大程度地减少主 UI
+线程的工作负载。任何可能会导致应用挂起的、耗时较长的任务均应在其他线程中进行处理。
+</p>
+    </a>
+  </div>
+
+  <div class="col-6">
+    <h3>培训</h3>
+    
+    <a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
+      <h4>管理 Activity 生命周期</h4>
+      <p>本课程介绍每个 Activity 实例将收到的重要生命周期回调方法,阐述可以如何利用这些方法使 Activity 达到用户预期,且避免它们在 Activity 不需要使用时消耗系统资源。
+
+</p>
+    </a>
+
+    <a href="http://developer.android.com/training/basics/fragments/index.html">
+      <h4>利用片段构建动态 UI</h4>
+      <p>本课程向您介绍如何利用片段创造动态的用户体验、针对不同屏幕尺寸的设备优化应用的用户体验,以及在实现以上目的的同时继续为运行低至
+Android 1.6 版本
+系统的设备提供支持。</p>
+    </a>
+
+    <a href="http://developer.android.com/training/sharing/index.html">
+      <h4>共享内容</h4>
+      <p>本课程阐述您可以通过使用 Intent API
+和 ActionProvider 对象在应用之间收发内容的一些常见方法。</p>
+    </a>
+  </div>
+
+</div>
diff --git a/docs/html-intl/intl/zh-cn/guide/components/intents-filters.jd b/docs/html-intl/intl/zh-cn/guide/components/intents-filters.jd
new file mode 100644
index 0000000..1c11a5b
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/components/intents-filters.jd
@@ -0,0 +1,899 @@
+page.title=Intent 和 Intent 过滤器
+page.tags="IntentFilter"
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本文内容</h2>
+<ol>
+  <li><a href="#Types">Intent 类型</a></li>
+  <li><a href="#Building">构建 Intent </a>
+    <ol>
+      <li><a href="#ExampleExplicit">显式 Intent 示例</a></li>
+      <li><a href="#ExampleSend">隐式 Intent 示例</a></li>
+      <li><a href="#ForceChooser">强制使用应用选择器</a></li>
+    </ol>
+  </li>
+  <li><a href="#Receiving">接收隐式 Intent </a>
+    <ol>
+      <li><a href="#ExampleFilters">过滤器示例</a></li>
+    </ol>
+  </li>
+  <li><a href="#PendingIntent">使用待定 Intent </a></li>
+  <li><a href="#Resolution">Intent 解析</a>
+    <ol>
+      <li><a href="#ActionTest">操作测试</a></li>
+      <li><a href="#CategoryTest">类别测试</a></li>
+      <li><a href="#DataTest">数据测试</a></li>
+      <li><a href="#imatch">Intent 匹配</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>另请参阅</h2>
+<ol>
+<li><a href="{@docRoot}training/basics/intents/index.html">与其他应用交互</a></li>
+<li><a href="{@docRoot}training/sharing/index.html">共享内容</a></li>
+</ol>
+
+</div>
+</div>
+
+
+
+
+<p>{@link android.content.Intent}
+是一个消息传递对象,您可以使用它从其他<a href="{@docRoot}guide/components/fundamentals.html#Components">应用组件</a>请求操作。尽管
+ Intent
+可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:</p>
+
+<ul>
+<li><b>启动 Activity</b>:
+<p>{@link android.app.Activity} 表示应用中的一个屏幕。通过将
+{@link android.content.Intent} 传递给 {@link android.content.Context#startActivity startActivity()},您可以启动新的
+{@link android.app.Activity} 实例。{@link android.content.Intent}
+描述了要启动的 Activity,并携带了任何必要的数据。</p>
+
+<p>如果您希望在 Activity 完成后收到结果,请调用
+{@link android.app.Activity#startActivityForResult
+startActivityForResult()}。在 Activity 的 {@link
+android.app.Activity#onActivityResult onActivityResult()} 回调中,您的 Activity 将结果作为单独的
+{@link android.content.Intent}
+对象接收。如需了解详细信息,请参阅<a href="{@docRoot}guide/components/activities.html">Activity</a>指南。</p></li>
+
+<li><b>启动服务</b>:
+<p>{@link android.app.Service}
+是一个不使用用户界面而在后台执行操作的组件。通过将
+{@link android.content.Intent}
+传递给 {@link android.content.Context#startService startService()},您可以启动服务执行一次性操作(例如,下载文件)。{@link android.content.Intent}
+描述了要启动的服务,并携带了任何必要的数据。</p>
+
+<p>如果服务旨在使用客户端-服务器接口,则通过将 {@link android.content.Intent} 传递给
+{@link
+android.content.Context#bindService bindService()}</code>,您可以从其他组件绑定到此服务。如需了解详细信息,请参阅<a href="{@docRoot}guide/components/services.html">服务</a>指南。</p></li>
+
+<li><b>传递广播</b>:
+<p>广播是任何应用均可接收的消息。系统将针对系统事件(例如:系统启动或设备开始充电时)传递各种广播。通过将
+{@link android.content.Intent}
+传递给
+{@link android.content.Context#sendBroadcast(Intent) sendBroadcast()}、{@link
+android.content.Context#sendOrderedBroadcast(Intent, String)
+sendOrderedBroadcast()} 或 {@link
+android.content.Context#sendStickyBroadcast sendStickyBroadcast()},您可以将广播传递给其他应用。</p>
+</li>
+</ul>
+
+
+
+
+<h2 id="Types">Intent 类型</h2>
+
+<p>Intent 分为两种类型:</p>
+
+<ul>
+<li><b>显式
+ Intent </b>:按名称(完全限定类名)指定要启动的组件。通常,您会在自己的应用中使用显式 Intent
+来启动组件,这是因为您知道要启动的 Activity 或服务的类名。例如,启动新 Activity 以响应用户操作,或者启动服务以在后台下载文件。
+
+</li>
+
+<li><b>隐式
+ Intent </b>:不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理它。例如,如需在地图上向用户显示位置,则可以使用隐式
+ Intent,请求另一具有此功能的应用在地图上显示指定的位置。
+</li>
+</ul>
+
+<p>创建显式 Intent 启动 Activity 或服务时,系统将立即启动
+{@link android.content.Intent} 对象中指定的应用组件。</p>
+
+<div class="figure" style="width:446px">
+<img src="{@docRoot}images/components/intent-filters@2x.png" width="446" alt="" />
+<p class="img-caption"><strong>图 1. </strong>隐式
+ Intent 如何通过系统传递以启动其他 Activity 的图解:<b>[1]</b> Activity A 创建包含操作描述的
+{@link android.content.Intent},并将其传递给 {@link
+android.content.Context#startActivity startActivity()}。<b>[2]</b>
+Android 系统搜索所有应用中与 Intent 匹配的 Intent 过滤器。<em></em>找到匹配项之后,<b>[3]</b> 该系统通过调用匹配 Activity(Activity
+B)的 {@link
+android.app.Activity#onCreate onCreate()} 方法并将其传递给 {@link android.content.Intent},以此启动匹配 Activity。<em></em>
+</p>
+</div>
+
+<p>创建隐式 Intent
+时,Android 系统通过将 Intent 的内容与在设备上其他应用的<a href="{@docRoot}guide/topics/manifest/manifest-intro.html">清单文件</a>中声明的
+ Intent 过滤器进行比较,从而找到要启动的相应组件。<em></em>{@link android.content.Intent}如果 Intent 与 Intent
+过滤器匹配,则系统将启动该组件,并将其传递给对象。如果多个
+ Intent 过滤器兼容,则系统会显示一个对话框,支持用户选取要使用的应用。</p>
+
+<p>Intent
+过滤器是应用清单文件中的一个表达式,它指定该组件要接收的 Intent
+类型。例如,通过为 Activity 声明 Intent 过滤器,您可以使其他应用能够直接使用某一特定类型的
+ Intent 启动 Activity。同样,如果您没有为 Activity 声明任何
+ Intent 过滤器,则 Activity 只能通过显式
+ Intent 启动。<em></em></p>
+
+<p class="caution"><strong>警告:</strong>为了确保应用的安全性,启动
+{@link android.app.Service} 时,请始终使用显式
+ Intent,且不要为服务声明 Intent 过滤器。使用隐式
+ Intent 启动服务存在安全隐患,因为您无法确定哪些服务将响应
+ Intent,且用户无法看到哪些服务已启动。从 Android 5.0(API 级别 21)开始,如果使用隐式
+ Intent
+调用 {@link android.content.Context#bindService bindService()},系统会抛出异常。</p>
+
+
+
+
+
+<h2 id="Building">构建 Intent </h2>
+
+<p>{@link android.content.Intent}
+对象携带了 Android
+系统用来确定要启动哪个组件的信息(例如,准确的组件名称或应当接收该
+ Intent 的组件类别),以及收件人组件为了正确执行操作而使用的信息(例如,要采取的操作以及要处理的数据)。</p>
+
+
+<p>{@link android.content.Intent} 中包含的主要信息如下:</p>
+
+<dl>
+
+<dt><b>组件名称</b></dt>
+<dd>要启动的组件名称。
+
+<p>这是可选项,但也是构建<b>显式</b>
+ Intent 的一项重要信息,这意味着
+ Intent 应当仅传递给由组件名称定义的应用组件。如果没有组件名称,则
+ Intent 是<b>隐式</b>的,且系统将根据其他
+ Intent  信息(例如,以下所述的操作、数据和类别)决定哪个组件应当接收 Intent。因此,如需在应用中启动特定的组件,则应指定该组件的名称。
+</p>
+
+<p class="note"><strong>注意:</strong>启动 {@link android.app.Service} 时,您应
+<strong>始终指定组件名称</strong>。否则,您无法确定哪项服务会响应
+ Intent,且用户无法看到哪项服务已启动。</p>
+
+<p>{@link android.content.Intent}
+的这一字段是
+{@link android.content.ComponentName}
+对象,您可以使用目标组件的完全限定类名指定此对象,其中包括应用的软件包名称。例如,{@code com.example.ExampleActivity}。您可以使用 {@link
+android.content.Intent#setComponent setComponent()}、{@link android.content.Intent#setClass
+setClass()}、{@link android.content.Intent#setClassName(String, String) setClassName()} 或
+{@link android.content.Intent} 构造函数设置组件名称。</p>
+
+</dd>
+
+<p><dt><b>操作</b></dt>
+<dd>指定要执行的通用操作(例如,“查看”或“选取”)的字符串。<em></em><em></em>
+
+<p>对于广播
+ Intent,这是指已发生且正在报告的操作。操作在很大程度上决定了其余 Intent 的构成,特别是数据和
+extra 中包含的内容。
+
+<p>您可以指定自己的操作,供
+ Intent 在您的应用内使用(或者供其他应用在您的应用中调用组件)。但是,您通常应该使用由
+{@link android.content.Intent} 类或其他框架类定义的操作常量。以下是一些用于启动 Activity 的常见操作:
+</p>
+
+<dl>
+<dt>{@link android.content.Intent#ACTION_VIEW}</dt>
+   <dd>如果您拥有一些某项 Activity 可向用户显示的信息(例如,要使用图库应用查看的照片;或者要使用地图应用查找的地址),请使用
+ Intent
+将此操作与 {@link
+android.content.Context#startActivity startActivity()} 结合使用。</dd>
+
+<dt>{@link android.content.Intent#ACTION_SEND}</dt>
+   <dd>这也称为“共享” Intent。如果您拥有一些用户可通过其他应用(例如,电子邮件应用或社交共享应用)共享的数据,则应使用 Intent 中将此操作与
+{@link
+android.content.Context#startActivity startActivity()} 结合使用。</dd>
+</dl>
+
+<p>有关更多定义通用操作的常量,请参阅{@link android.content.Intent}类引用。
+其他操作在
+Android 框架中的其他位置定义。例如,对于在系统的设置应用中打开特定屏幕的操作,将在 {@link android.provider.Settings}
+中定义。</p>
+
+<p>您可以使用 {@link android.content.Intent#setAction
+setAction()} 或 {@link android.content.Intent} 构造函数为 Intent 指定操作。</p>
+
+<p>如果定义自己的操作,请确保将应用的软件包名称作为前缀。
+例如:</p>
+<pre>static final String ACTION_TIMETRAVEL = "com.example.action.TIMETRAVEL";</pre>
+</dd>
+
+<dt><b>数据</b></dt>
+<dd>引用待操作数据和/或该数据
+MIME 类型的 URI({@link android.net.Uri} 对象)。提供的数据类型通常由 Intent 的操作决定。例如,如果操作是
+{@link android.content.Intent#ACTION_EDIT},则数据应包含待编辑文档的
+URI。
+
+<p>创建
+ Intent 时,除了指定
+URI
+以外,指定数据类型(其
+MIME 类型)往往也很重要。例如,能够显示图像的Activity可能无法播放音频文件,即便 URI 格式十分类似时也是如此。因此,指定数据的
+MIME 类型有助于 Android
+系统找到接收 Intent 的最佳组件。但有时,MIME 类型可以从 URI 中推断得出,特别当数据是
+{@code content:} URI 时尤其如此。这表明数据位于设备中,且由
+{@link android.content.ContentProvider} 控制,这使得数据 MIME 类型对系统可见。</p>
+
+<p>要仅设置数据 URI,请调用
+{@link android.content.Intent#setData setData()}。要仅设置 MIME 类型,请调用 {@link android.content.Intent#setType setType()}。如有必要,您可以使用
+{@link
+android.content.Intent#setDataAndType setDataAndType()} 同时显式设置二者。</p>
+
+<p class="caution"><strong>警告:</strong>若要同时设置 URI 和 MIME 类型,<strong>请勿</strong>调用
+{@link android.content.Intent#setData setData()} 和
+{@link android.content.Intent#setType setType()},因为它们会互相抵消彼此的值。请始终使用
+{@link android.content.Intent#setDataAndType setDataAndType()} 同时设置
+URI 和 MIME 类型。</p>
+</dd>
+
+<p><dt><b>类别</b></dt>
+<dd>一个包含应处理 Intent
+组件类型的附加信息的字符串。您可以将任意数量的类别描述放入一个
+ Intent 中,但大多数
+ Intent 均不需要类别。以下是一些常见类别:
+
+<dl>
+<dt>{@link android.content.Intent#CATEGORY_BROWSABLE}</dt>
+  <dd>目标 Activity 允许本身通过 Web
+浏览器启动,以显示链接引用的数据,如图像或电子邮件。
+  </dd>
+<dt>{@link android.content.Intent#CATEGORY_LAUNCHER}</dt>
+  <dd>该 Activity 是任务的初始 Activity,在系统的应用启动器中列出。
+
+  </dd>
+</dl>
+
+<p>有关类别的完整列表,请参阅
+{@link android.content.Intent} 类描述。</p>
+
+<p>您可以使用 {@link android.content.Intent#addCategory addCategory()} 指定类别。</p>
+</dd>
+</dl>
+
+
+<p>以上列出的这些属性(组件名称、操作、数据和类别)表示
+ Intent 的既定特征。通过读取这些属性,Android
+系统能够解析应当启动哪个应用组件。</p>
+
+<p>但是,Intent
+也有可能会一些携带不影响其如何解析为应用组件的信息。Intent 还可以提供:</p>
+
+<dl>
+<dt><b>Extra</b></dt>
+<dd>携带完成请求操作所需的附加信息的键值对。正如某些操作使用特定类型的数据
+URI 一样,有些操作也使用特定的附加数据。
+
+<p>您可以使用各种
+{@link android.content.Intent#putExtra putExtra()} 方法添加附加数据,每种方法均接受两个参数:键名和值。您还可以创建一个包含所有附加数据的 {@link android.os.Bundle}
+对象,然后使用 {@link
+android.content.Intent#putExtras putExtras()} 将
+{@link android.os.Bundle} 插入 {@link android.content.Intent} 中。</p>
+
+<p>例如,使用
+{@link android.content.Intent#ACTION_SEND} 创建用于发送电子邮件的 Intent 时,可以使用
+{@link android.content.Intent#EXTRA_EMAIL} 键指定“目标”收件人,并使用
+{@link android.content.Intent#EXTRA_SUBJECT} 键指定“主题”。</p>
+
+<p>{@link android.content.Intent} 类将为标准化的数据类型指定多个 {@code EXTRA_*}
+常量。如需声明自己的附加数据
+键(对于应用接收的
+ Intent ),请确保将应用的软件包名称作为前缀。例如:</p>
+<pre>static final String EXTRA_GIGAWATTS = "com.example.EXTRA_GIGAWATTS";</pre>
+</dd>
+
+<dt><b>标志</b></dt>
+<dd>在 {@link android.content.Intent} 类中定义的、充当
+ Intent 元数据的标志。标志可以指示 Android
+系统如何启动 Activity(例如,Activity 应属于哪个
+<a href="{@docRoot}guide/components/tasks-and-back-stack.html">任务</a>
+),以及启动之后如何处理(例如,它是否属于最近的 Activity 列表)。
+
+<p>如需了解详细信息,请参阅 {@link android.content.Intent#setFlags setFlags()} 方法。</p>
+</dd>
+
+</dl>
+
+
+
+
+<h3 id="ExampleExplicit">显式 Intent 示例</h3>
+
+<p>显式
+ Intent 是指用于启动某个特定应用组件(例如,应用中的某个特定 Activity 或服务)的 Intent。要创建显式 Intent,请为
+{@link android.content.Intent} 对象定义组件名称。Intent
+的所有其他属性均为可选属性。</p>
+
+<p>例如,如果在应用中构建了一个名为
+{@code DownloadService}、旨在从 Web 中下载文件的服务,则可使用以下代码启动该服务:</p>
+
+<pre>
+// Executed in an Activity, so 'this' is the {@link android.content.Context}
+// The fileUrl is a string URL, such as "http://www.example.com/image.png"
+Intent downloadIntent = new Intent(this, DownloadService.class);
+downloadIntent.setData({@link android.net.Uri#parse Uri.parse}(fileUrl));
+startService(downloadIntent);
+</pre>
+
+<p>{@link android.content.Intent#Intent(Context,Class)}
+构造函数分别为应用和组件提供 {@link android.content.Context} 和
+{@link java.lang.Class} 对象。因此,此
+ Intent 将显式启动该应用中的 {@code DownloadService} 类。</p>
+
+<p>如需了解有关构建和启动服务的详细信息,请参阅<a href="{@docRoot}guide/components/services.html">服务</a>指南。
+</p>
+
+
+
+
+<h3 id="ExampleSend">隐式 Intent 示例</h3>
+
+<p>隐式
+ Intent 指定能够在可以执行相应操作的设备上调用任何应用的操作。如果您的应用无法执行该操作而其他应用可以,且您希望用户选取要使用的应用,则使用隐式
+ Intent 非常有用。</p>
+
+<p>例如,如果您希望用户与他人共享您的内容,请使用
+{@link android.content.Intent#ACTION_SEND}
+操作创建 Intent,并添加指定共享内容的 Extra。使用该
+ Intent 调用
+{@link android.content.Context#startActivity startActivity()} 时,用户可以选取共享内容所使用的应用。</p>
+
+<p class="caution"><strong>警告:</strong>用户可能没有任何应用处理您发送到
+{@link android.content.Context#startActivity
+startActivity()} 的隐式 Intent。<em></em>如果出现这种情况,则调用将会失败,且应用会崩溃。要验证 Activity 是否会接收
+ Intent,请对 {@link android.content.Intent} 对象调用 {@link android.content.Intent#resolveActivity
+resolveActivity()}。如果结果为非空,则至少有一个应用能够处理该
+ Intent,且可以安全调用
+{@link android.content.Context#startActivity startActivity()}。如果结果为空,则不应使用该
+ Intent。如有可能,您应禁用发出该
+ Intent 的功能。</p>
+
+
+<pre>
+// Create the text message with a string
+Intent sendIntent = new Intent();
+sendIntent.setAction(Intent.ACTION_SEND);
+sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
+sendIntent.setType("text/plain");
+
+// Verify that the intent will resolve to an activity
+if (sendIntent.resolveActivity(getPackageManager()) != null) {
+    startActivity(sendIntent);
+}
+</pre>
+
+<p class="note"><strong>注意:</strong>在这种情况下,系统并没有使用 URI,但已声明
+ Intent 的数据类型,用于指定 Extra 携带的内容。</p>
+
+
+<p>调用 {@link android.content.Context#startActivity startActivity()}
+时,系统将检查已安装的所有应用,确定哪些应用能够处理这种 Intent(即:含 {@link android.content.Intent#ACTION_SEND}
+操作并携带“文本/纯”数据的
+ Intent )。如果只有一个应用能够处理,则该应用将立即打开并提供给
+ Intent。如果多个 Activity 接受
+ Intent,则系统将显示一个对话框,使用户能够选取要使用的应用。</p>
+
+
+<div class="figure" style="width:200px">
+  <img src="{@docRoot}images/training/basics/intent-chooser.png" alt="">
+  <p class="img-caption"><strong>图 2. </strong>选择器对话框。</p>
+</div>
+
+<h3 id="ForceChooser">强制使用应用选择器</h3>
+
+<p>如果有多个应用响应隐式
+ Intent,则用户可以选择要使用的应用,并将其设置为该操作的默认选项。
+如果用户可能希望今后一直使用相同的应用执行某项操作(例如,打开网页时,用户往往倾向于仅使用一种
+Web
+浏览器),则这一点十分有用。</p>
+
+<p>但是,如果多个应用可以响应
+ Intent,且用户可能希望每次使用不同的应用,则应采用显式方式显示选择器对话框。选择器对话框要求用户选择每次操作要使用的应用(用户无法为该操作选择默认应用)。
+
+例如,当应用使用 {@link
+android.content.Intent#ACTION_SEND}
+操作执行“共享”时,用户根据目前的状况可能需要使用另一不同的应用,因此应当始终使用选择器对话框,如图 2 中所示。</p>
+
+
+
+
+<p>要显示选择器,请使用 {@link
+android.content.Intent#createChooser createChooser()} 创建 {@link android.content.Intent},并将其传递给 {@link
+android.app.Activity#startActivity startActivity()}。例如:</p>
+
+<pre>
+Intent sendIntent = new Intent(Intent.ACTION_SEND);
+...
+
+// Always use string resources for UI text.
+// This says something like "Share this photo with"
+String title = getResources().getString(R.string.chooser_title);
+// Create intent to show the chooser dialog
+Intent chooser = Intent.createChooser(sendIntent, title);
+
+// Verify the original intent will resolve to at least one activity
+if (sendIntent.resolveActivity(getPackageManager()) != null) {
+    startActivity(chooser);
+}
+</pre>
+
+<p>这将显示一个对话框,其中包含响应传递给 {@link
+android.content.Intent#createChooser createChooser()}
+方法的 Intent 的应用列表,并使用提供的文本作为对话框标题。</p>
+
+
+
+
+
+
+
+
+
+<h2 id="Receiving">接收隐式 Intent </h2>
+
+<p>要公布应用可以接收哪些隐式
+ Intent,请在<a href="{@docRoot}guide/topics/manifest/manifest-intro.html">清单文件</a>中使用 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a>
+元素为每个应用组件声明一个或多个 Intent 过滤器。每个
+ Intent 过滤器均根据 Intent 的操作、数据和类别指定自身接受的
+ Intent 类型。仅当隐式
+ Intent 可以通过 Intent 过滤器之一传递时,系统才会将该 Intent 传递给应用组件。</p>
+
+<p class="note"><strong>注意:</strong>显式
+ Intent 始终会传递给其目标,无论组件声明的 Intent 过滤器如何均是如此。</p>
+
+<p>应用组件应当为自身可执行的每个独特作业声明单独的过滤器。例如,图像库应用中的一个 Activity 可能会有两个过滤器,分别用于查看图像和编辑图像。
+
+当 Activity 启动时,它将检查
+{@link android.content.Intent} 并根据
+{@link android.content.Intent} 中的信息决定具体的行为(例如,是否显示编辑器控件)。</p>
+
+<p>每个
+ Intent 过滤器均由应用清单文件中的 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a>
+元素定义,并嵌套在相应的应用组件(例如,<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+元素)中。在 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a>
+内部,您可以使用以下三个元素中的一个或多个指定要接受的
+ Intent 类型:</p>
+
+<dl>
+<dt><a href="{@docRoot}guide/topics/manifest/action-element.html">{@code &lt;action&gt;}</a></dt>
+  <dd>在 {@code name} 属性中,声明接受的 Intent 操作。该值必须是操作的文本字符串值,而不是类常量。
+</dd>
+<dt><a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a></dt>
+  <dd>使用一个或多个指定
+数据
+URI(<code>scheme</code>、<code>host</code>、<code>port</code>、<code>path</code> 等)各个方面和 MIME 类型的属性,声明接受的数据类型。</dd>
+<dt><a href="{@docRoot}guide/topics/manifest/category-element.html">{@code &lt;category&gt;}</a></dt>
+  <dd>在 {@code name} 属性中,声明接受的 Intent 类别。该值必须是操作的文本字符串值,而不是类常量。
+
+
+  <p class="note"><strong>注意:</strong>为了接收隐式
+ Intent,<strong>必须</strong>将
+{@link android.content.Intent#CATEGORY_DEFAULT} 类别包括在 Intent 过滤器中。方法
+{@link android.app.Activity#startActivity startActivity()} 和
+{@link android.app.Activity#startActivityForResult startActivityForResult()} 将按照已申明 {@link android.content.Intent#CATEGORY_DEFAULT} 类别的方式处理所有
+ Intent。
+  如果未在 Intent 过滤器中声明此类别,则隐式
+ Intent 不会解析为您的 Activity。</p>
+  </dd>
+</dl>
+
+<p>例如,以下是一个使用 Intent 过滤器进行的 Activity 声明,当数据类型为文本时,系统将接收
+{@link android.content.Intent#ACTION_SEND}  Intent :</p>
+
+<pre>
+&lt;activity android:name="ShareActivity">
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="text/plain"/>
+    &lt;/intent-filter>
+&lt;/activity>
+</pre>
+
+<p>您可以创建一个包括多个
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code &lt;action&gt;}</a>、<a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>
+或
+<a href="{@docRoot}guide/topics/manifest/category-element.html">{@code &lt;category&gt;}</a>
+实例的过滤器。创建时,仅需确定组件能够处理这些过滤器元素的任何及所有组合即可。
+</p>
+
+<p>如需仅以操作、数据和类别类型的特定组合来处理多种 Intent,则需创建多个
+ Intent 过滤器。</p>
+
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>限制对组件的访问</h2>
+<p>使用
+ Intent 过滤器时,无法安全地防止其他应用启动组件。尽管
+ Intent
+过滤器将组件限制为仅响应特定类型的隐式
+ Intent,但如果开发者确定您的组件名称,则其他应用有可能通过使用显式 Intent 启动您的应用组件。如果必须确保只有您自己的应用才能启动您的某一组件,请针对该组件将 <a href="{@docRoot}guide/topics/manifest/activity-element.html#exported">{@code
+exported}</a>
+属性设置为 {@code "false"}。<em></em>
+</p>
+</div>
+</div>
+
+<p>系统通过将
+ Intent 与所有这三个元素进行比较,根据过滤器测试隐式 Intent。隐式 Intent 若要传递给组件,必须通过所有这三项测试。如果
+ Intent 甚至无法匹配其中任何一项测试,则 Android
+系统不会将其传递给组件。但是,由于一个组件可能有多个
+ Intent
+过滤器,因此未能通过某一组件过滤器的 Intent 可能会通过另一过滤器。如需了解有关系统如何解析 Intent 的详细信息,请参阅下文的
+<a href="#Resolution"> Intent 解析</a>部分。</p>
+
+<p class="caution"><strong>警告:</strong>为了避免无意中运行不同应用的
+{@link android.app.Service},请始终使用显式 Intent 启动您自己的服务,且不必为该服务声明
+ Intent 过滤器。</p>
+
+<p class="note"><strong>注意:</strong>
+对于所有 Activity,您必须在清单文件中声明
+ Intent 过滤器。但是,广播接收器的过滤器可以通过调用
+{@link android.content.Context#registerReceiver(BroadcastReceiver, IntentFilter, String,
+Handler) registerReceiver()} 动态注册。稍后,您可以使用 {@link
+android.content.Context#unregisterReceiver unregisterReceiver()} 注销该接收器。这样一来,应用便可仅在应用运行时的某一指定时间段内侦听特定的广播。
+
+</p>
+
+
+
+
+
+
+
+<h3 id="ExampleFilters">过滤器示例</h3>
+
+<p>为了更好地了解一些
+ Intent 过滤器的行为,我们一起来看看从社交共享应用的清单文件中截取的以下片段。</p>
+
+<pre>
+&lt;activity android:name="MainActivity">
+    &lt;!-- This activity is the main entry, should appear in app launcher -->
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.MAIN" />
+        &lt;category android:name="android.intent.category.LAUNCHER" />
+    &lt;/intent-filter>
+&lt;/activity>
+
+&lt;activity android:name="ShareActivity">
+    &lt;!-- This activity handles "SEND" actions with text data -->
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="text/plain"/>
+    &lt;/intent-filter&gt;
+    &lt;!-- This activity also handles "SEND" and "SEND_MULTIPLE" with media data -->
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;action android:name="android.intent.action.SEND_MULTIPLE"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="application/vnd.google.panorama360+jpg"/>
+        &lt;data android:mimeType="image/*"/>
+        &lt;data android:mimeType="video/*"/>
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p>第一个 Activity {@code MainActivity}
+是应用的主要入口点。当用户最初使用启动器图标启动应用时,该 Activity 将打开:</p>
+<ul>
+  <li>{@link android.content.Intent#ACTION_MAIN} 操作指示这是主要入口点,且不要求输入任何
+ Intent 数据。</li>
+  <li>{@link android.content.Intent#CATEGORY_LAUNCHER}
+类别指示此 Activity 的图标应放入系统的应用启动器。如果
+<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+元素未使用 {@code icon} 指定图标,则系统将使用 <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a> 元素中的图标。</li>
+</ul>
+<p>这两个元素必须配对使用,Activity 才会显示在应用启动器中。</p>
+
+<p>第二个 Activity {@code ShareActivity}
+旨在便于共享文本和媒体内容。尽管用户可以通过从 {@code MainActivity} 导航进入此 Activity,但也可以从发出隐式
+ Intent(与两个
+ Intent 过滤器之一匹配)的另一应用中直接进入 {@code ShareActivity}。</p>
+
+<p class="note"><strong>注意:</strong>MIME 类型
+<a href="https://developers.google.com/panorama/android/">{@code
+application/vnd.google.panorama360+jpg}</a> 是一个指定全景照片的特殊
+数据类型,您可以使用 <a href="{@docRoot}reference/com/google/android/gms/panorama/package-summary.html">Google
+全景</a> API 对其进行处理。</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h2 id="PendingIntent">使用待定 Intent </h2>
+
+<p>{@link android.app.PendingIntent} 对象是 {@link
+android.content.Intent} 对象的包装器。{@link android.app.PendingIntent}
+的主要目的是授权外部应用使用包含的
+{@link android.content.Intent},就像是它从您应用本身的进程中执行的一样。
+</p>
+
+<p>待定 Intent 的主要用例包括:</p>
+<ul>
+  <li>声明用户使用您的<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">通知</a>执行操作时所要执行的
+ Intent(Android 系统的 {@link android.app.NotificationManager}
+执行 {@link android.content.Intent})。
+  <li>声明用户使用您的
+<a href="{@docRoot}guide/topics/appwidgets/index.html">应用小工具</a>执行操作时要执行的
+ Intent(主屏幕应用执行 {@link android.content.Intent})。
+  <li>声明未来某一特定时间要执行的 Intent(Android
+系统的 {@link android.app.AlarmManager} 执行 {@link android.content.Intent})。
+</ul>
+
+<p>由于每个 {@link android.content.Intent}
+对象均设计为由特定类型的应用组件进行处理({@link android.app.Activity}、{@link android.app.Service} 或
+{@link android.content.BroadcastReceiver}),因此还必须基于相同的考虑因素创建
+{@link android.app.PendingIntent}。使用待定
+ Intent 时,应用不会使用调用(如 {@link android.content.Context#startActivity
+startActivity()})执行该 Intent。相反,通过调用相应的创建器方法创建
+{@link android.app.PendingIntent} 时,您必须声明所需的组件类型:</p>
+
+<ul>
+  <li>{@link android.app.PendingIntent#getActivity PendingIntent.getActivity()},适用于启动
+{@link android.app.Activity} 的 {@link android.content.Intent}。</li>
+  <li>{@link android.app.PendingIntent#getService PendingIntent.getService()},适用于启动
+{@link android.app.Service} 的 {@link android.content.Intent}。</li>
+  <li>{@link android.app.PendingIntent#getBroadcast PendingIntent.getBroadcast()},适用于启动
+{@link android.content.BroadcastReceiver} 的 {@link android.content.Intent}。</li>
+</ul>
+
+<p>除非您的应用正在从其他应用中接收待定
+ Intent,否则上述用于创建 {@link android.app.PendingIntent}
+的方法可能是您所需的唯一 {@link android.app.PendingIntent} 方法。<em></em></p>
+
+<p>每种方法均会提取当前的应用 {@link android.content.Context}、您要包装的
+{@link android.content.Intent} 以及一个或多个指定应如何使用该 Intent 的标志(例如,是否可以多次使用该
+ Intent)。</p>
+
+<p>如需了解有关使用待定
+ Intent 的详细信息,请参阅<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">通知</a>
+和<a href="{@docRoot}guide/topics/appwidgets/index.html">应用小工具</a> API 指南等手册中每个相应用例的相关文档。</p>
+
+
+
+
+
+
+
+<h2 id="Resolution"> Intent 解析</h2>
+
+
+<p>当系统收到隐式
+ Intent 以启动 Activity 时,它根据以下三个方面将该 Intent 与 Intent 过滤器进行比较,搜索该 Intent 的最佳 Activity:</p>
+
+<ul>
+  <li> Intent 操作
+  <li> Intent 数据(URI 和数据类型)
+  <li> Intent 类别
+</ul>
+
+<p>下文根据如何在应用的清单文件中声明
+ Intent 过滤器,描述 Intent 如何与相应的组件匹配。</p>
+
+
+<h3 id="ActionTest">操作测试</h3>
+
+<p>要指定接受的 Intent 操作, Intent 过滤器既可以不声明任何
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> 元素,也可以声明多个此类元素。例如:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.EDIT" /&gt;
+    &lt;action android:name="android.intent.action.VIEW" /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>要通过此过滤器,您在 {@link android.content.Intent}
+中指定的操作必须与过滤器中列出的某一操作匹配。</p>
+
+<p>如果该过滤器未列出任何操作,则
+ Intent 没有任何匹配项,因此所有 Intent 均无法通过测试。但是,如果
+{@link android.content.Intent}
+未指定操作,则会通过测试(只要过滤器至少包含一个操作)。</p>
+
+
+
+<h3 id="CategoryTest">类别测试</h3>
+
+<p>要指定接受的 Intent 类别, Intent 过滤器既可以不声明任何
+<a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> 元素,也可以声明多个此类元素。例如:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+    &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>若要 Intent 通过类别测试,则 {@link android.content.Intent}
+中的每个类别均必须与过滤器中的类别匹配。反之则未必然,Intent
+过滤器声明的类别可以超出 {@link android.content.Intent}
+中指定的数量,且 {@link android.content.Intent} 仍会通过测试。因此,不含类别的
+ Intent 应当始终会通过此测试,无论过滤器中声明何种类别均是如此。</p>
+
+<p class="note"><strong>注意:</strong>
+Android
+会自动将 {@link android.content.Intent#CATEGORY_DEFAULT}
+类别应用于传递给 {@link
+android.content.Context#startActivity startActivity()} 和 {@link
+android.app.Activity#startActivityForResult startActivityForResult()} 的所有隐式
+ Intent。因此,如需 Activity 接收隐式 Intent,则必须将 {@code "android.intent.category.DEFAULT"} 的类别包括在其 Intent 过滤器中(如上文的
+{@code &lt;intent-filter&gt;} 示例所示)。</p>
+
+
+
+<h3 id="DataTest">数据测试</h3>
+
+<p>要指定接受的 Intent 数据, Intent 过滤器既可以不声明任何
+<a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
+&lt;data&gt;}</a> 元素,也可以声明多个此类元素。例如:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:mimeType="video/mpeg" android:scheme="http" ... /&gt;
+    &lt;data android:mimeType="audio/mpeg" android:scheme="http" ... /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>每个 <code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code>
+元素均可指定 URI 结构和数据类型(MIME 介质类型)。URI 的每个部分均包含单独的
+{@code scheme}、{@code host}、{@code port}
+和 {@code path} 属性:
+</p>
+
+<p style="margin-left: 2em">{@code &lt;scheme&gt;://&lt;host&gt;:&lt;port&gt;/&lt;path&gt;}</p>
+
+<p>
+例如:
+</p>
+
+<p style="margin-left: 2em">{@code content://com.example.project:200/folder/subfolder/etc}</p>
+
+<p>在此 URI 中,架构是 {@code content},主机是
+{@code com.example.project},端口是 {@code 200},路径是 {@code folder/subfolder/etc}。
+</p>
+
+<p>在 <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>
+元素中,上述每个属性均为可选,但存在线性依赖关系:</p>
+<ul>
+  <li>如果未指定架构,则会忽略主机。</li>
+  <li>如果未指定主机,则会忽略端口。</li>
+  <li>如果未指定架构和主机,则会忽略路径。</li>
+</ul>
+
+<p>将
+ Intent 中的 URI 与过滤器中的 URI 规范进行比较时,它仅与过滤器中包含的部分 URI 进行比较。例如:</p>
+<ul>
+  <li>如果过滤器仅指定架构,则具有该架构的所有
+URI 均与该过滤器匹配。</li>
+  <li>如果过滤器指定架构和权限、但未指定路径,则具有相同架构和权限的所有 URI
+都会通过过滤器,无论其路径如何均是如此。</li>
+  <li>如果过滤器指定架构、权限和路径,则仅具有相同架构、权限和路径
+的 URI 才会通过过滤器。</li>
+</ul>
+
+<p class="note"><strong>注意:</strong>路径规范可以包含星号通配符
+(*),因此仅需部分匹配路径名即可。</p>
+
+<p>数据测试会将 Intent 中的 URI 和 MIME
+类型与过滤器中指定的 URI 和 MIME 类型进行比较。规则如下:
+</p>
+
+<ol type="a">
+<li>仅当过滤器未指定任何 URI 或 MIME 类型时,不含 URI 和 MIME 类型的
+ Intent 才会通过测试。</li>
+
+<li>对于包含 URI、但不含 MIME 类型(既未显式声明,也无法通过
+URI 推断得出)的 Intent,仅当其 URI
+与过滤器的 URI 格式匹配、且过滤器同样未指定 MIME 类型时,才会通过测试。</li>
+
+<li>仅当过滤器列出相同的 MIME 类型且未指定 URI 格式时,包含 MIME
+类型、但不含 URI 的 Intent 才会通过测试。</li>
+
+<li>仅当 MIME 类型与过滤器中列出的类型匹配时,包含
+URI 和 MIME 类型(通过显式声明,或可以通过
+URI 推断得出)的 Intent 才会通过测试的 MIME 类型部分。如果 Intent 的 URI 与过滤器中的
+URI 匹配,或者如果 Intent 具有 {@code content:}
+或 {@code file:} URI
+且过滤器未指定 URI,则 Intent 会通过测试的 URI 部分。换而言之,如果过滤器仅列出 MIME 类型,则假定组件支持
+{@code content:} 和 {@code file:} 数据。<em></em></p></li>
+</ol>
+
+<p>
+最后一条规则,即规则
+(d),反映了期望组件能够从文件中或内容提供商处获得本地数据。因此,其过滤器可以仅列出数据类型,而不必显式命名
+{@code content:} 和
+{@code file:}
+架构。这是一个典型的案例。例如,下文中的 <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>
+元素向
+Android 指出,组件可从内容提供商处获得并显示图像数据:
+</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:mimeType="image/*" /&gt;
+    ...
+&lt;/intent-filter&gt;</pre>
+
+<p>
+由于大部分可用数据均由内容提供商分发,因此指定数据类型(而非
+URI)的过滤器也许最为常见。
+</p>
+
+<p>
+另一常见的配置是具有架构和数据类型的过滤器。例如,下文中的 <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>
+元素向
+Android
+指出,组件可从网络中检索视频数据以执行操作:
+</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:scheme="http" android:type="video/*" /&gt;
+    ...
+&lt;/intent-filter&gt;</pre>
+
+
+
+<h3 id="imatch"> Intent 匹配</h3>
+
+<p>通过
+ Intent
+过滤器匹配 Intent,这不仅有助于发现要激活的目标组件,还有助于发现设备上组件集的相关信息。例如,主页应用通过使用指定
+{@link android.content.Intent#ACTION_MAIN} 操作和
+{@link android.content.Intent#CATEGORY_LAUNCHER} 类别的
+ Intent 过滤器查找所有 Activity,以此填充应用启动器。</p>
+
+<p>您的应用可以采用类似的方式使用
+ Intent 匹配。{@link android.content.pm.PackageManager} 提供了一整套 {@code query...()}
+方法来返回所有能够接受特定 Intent
+的组件。此外,它还提供了一系列类似的 {@code resolve...()} 方法来确定响应 Intent
+的最佳组件。例如,{@link android.content.pm.PackageManager#queryIntentActivities
+queryIntentActivities()}
+将返回能够执行那些作为参数传递的
+ Intent 的所有 Activity 列表,而
+{@link
+android.content.pm.PackageManager#queryIntentServices
+queryIntentServices()}
+则可返回类似的服务列表。这两种方法均不会激活组件,而只是列出能够响应的组件。对于广播接收器,有一种类似的方法:
+{@link android.content.pm.PackageManager#queryBroadcastReceivers
+queryBroadcastReceivers()}。
+</p>
+
+
+
+
diff --git a/docs/html-intl/intl/zh-cn/guide/components/loaders.jd b/docs/html-intl/intl/zh-cn/guide/components/loaders.jd
new file mode 100644
index 0000000..d8427b0
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/components/loaders.jd
@@ -0,0 +1,494 @@
+page.title=加载器
+parent.title=Activity
+parent.link=activities.html
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+    <h2>本文内容</h2>
+    <ol>
+    <li><a href="#summary">Loader API 摘要</a></li>
+    <li><a href="#app">在应用中使用加载器</a>
+      <ol>
+        <li><a href="#requirements"></a></li>
+        <li><a href="#starting">启动加载器</a></li>
+        <li><a href="#restarting">重启加载器</a></li>
+        <li><a href="#callback">使用 LoaderManager 回调</a></li>
+      </ol>
+    </li>
+    <li><a href="#example">示例</a>
+       <ol>
+         <li><a href="#more_examples">更多示例</a></li>
+        </ol>
+    </li>
+  </ol>
+    
+  <h2>关键类</h2>
+    <ol>
+      <li>{@link android.app.LoaderManager}</li>
+      <li>{@link android.content.Loader}</li>
+
+    </ol>   
+    
+    <h2>相关示例</h2>
+   <ol>
+     <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">
+LoaderCursor</a></li>
+     <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html">
+LoaderThrottle</a></li>
+   </ol>
+  </div>
+</div>
+
+<p>Android 3.0 中引入了加载器,支持轻松在 Activity 或片段中异步加载数据。
+加载器具有以下特征:</p>
+  <ul>
+    <li>可用于每个 {@link android.app.Activity} 和 {@link
+android.app.Fragment}。</li>
+    <li>支持异步加载数据。</li>
+    <li>监控其数据源并在内容变化时传递新结果。
+</li>
+    <li>在某一配置更改后重建加载器时,会自动重新连接上一个加载器的 Cursor。
+因此,它们无需重新查询其数据。
+</li>
+  </ul>
+ 
+<h2 id="summary">Loader API 摘要</h2>
+
+<p>在应用中使用加载器时,可能会涉及到多个类和接口。
+下表汇总了这些类和接口:</p>
+
+<table>
+  <tr>
+    <th>类/接口</th>
+    <th>描述</th>
+  </tr>
+  <tr>
+    <td>{@link android.app.LoaderManager}</td>
+    <td>一种与 {@link android.app.Activity} 或 {@link android.app.Fragment} 相关联的的抽象类,用于管理一个或多个 {@link
+android.content.Loader} 实例。
+这有助于应用管理与
+{@link android.app.Activity}
+或 {@link android.app.Fragment} 生命周期相关联的、运行时间较长的操作。它最常见的用法是与
+{@link android.content.CursorLoader}
+一起使用,但应用可自由写入其自己的加载器,用于加载其他类型的数据。
+    <br />
+    <br />
+    每个 Activity 或片段中只有一个 {@link android.app.LoaderManager}。但一个 {@link android.app.LoaderManager}
+可以有多个加载器。</td>
+  </tr>
+  <tr>
+    <td>{@link android.app.LoaderManager.LoaderCallbacks}</td>
+    <td>一种回调接口,用于客户端与 {@link
+android.app.LoaderManager} 进行交互。例如,您可使用 {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}
+回调方法创建新的加载器。</td>
+  </tr>
+  <tr>
+    <td>{@link android.content.Loader}</td>
+    <td>一种执行异步数据加载的抽象类。这是加载器的基类。
+您通常会使用 {@link
+android.content.CursorLoader},但您也可以实现自己的子类。加载器处于Activity状态时,应监控其数据源并在内容变化时传递新结果。
+
+ </td>
+  </tr>
+  <tr>
+    <td>{@link android.content.AsyncTaskLoader}</td>
+    <td>提供 {@link android.os.AsyncTask} 来执行工作的抽象加载器。</td>
+  </tr>
+  <tr>
+    <td>{@link android.content.CursorLoader}</td>
+    <td>{@link android.content.AsyncTaskLoader}
+的子类,它将查询 {@link android.content.ContentResolver} 并返回一个 {@link
+android.database.Cursor}。此类采用标准方式为查询 Cursor 实现 {@link
+android.content.Loader}
+协议。它是以 {@link android.content.AsyncTaskLoader}
+为基础而构建,在后台线程中执行 Cursor 查询,因此不会阻塞应用的 UI。使用此加载器是从
+{@link
+android.content.ContentProvider}
+异步加载数据的最佳方式,而不用通过片段或 Activity 的 API 来执行托管查询。</td>
+  </tr>
+</table>
+
+<p>上表中的类和接口是您在应用中用于实现加载器的基本组件。
+并非您创建的每个加载器都要用到上述所有类和接口。但是,为了初始化加载器以及实现一个 {@link android.content.Loader}
+类(如 {@link
+android.content.CursorLoader}),您始终需要要引用
+{@link
+android.app.LoaderManager}。下文将为您展示如何在应用中使用这些类和接口。
+</p>
+
+<h2 id ="app">在应用中使用加载器</h2>
+<p>此部分描述如何在 Android 应用中使用加载器。使用加载器的应用通常包括:
+</p>
+<ul>
+  <li>{@link android.app.Activity} 或 {@link android.app.Fragment}。</li>
+  <li>{@link android.app.LoaderManager} 的实例。</li>
+  <li>一个 {@link android.content.CursorLoader},用于加载由 {@link
+android.content.ContentProvider} 支持的数据。您也可以实现自己的
+{@link android.content.Loader}
+或 {@link android.content.AsyncTaskLoader} 子类,从其他源中加载数据。</li>
+  <li>一个
+{@link android.app.LoaderManager.LoaderCallbacks}
+实现。您可以使用它来创建新加载器,并管理对现有加载器的引用。</li> 
+<li>一种显示加载器数据的方法,如 {@link
+android.widget.SimpleCursorAdapter}。</li>
+  <li>使用
+{@link android.content.CursorLoader} 时的数据源,如 {@link android.content.ContentProvider}。</li>
+</ul>
+<h3 id="starting">启动加载器</h3>
+
+<p>{@link android.app.LoaderManager} 可在 {@link android.app.Activity} 或
+{@link android.app.Fragment} 内管理一个或多个 {@link
+android.content.Loader} 实例。每个 Activity 或片段只有一个 {@link
+android.app.LoaderManager}。</p> 
+
+<p>通常,您会使用 Activity 的 {@link
+android.app.Activity#onCreate onCreate()} 方法或片段的
+{@link android.app.Fragment#onActivityCreated onActivityCreated()} 
+方法初始化 {@link android.content.Loader}。您执行操作如下:
+</p>
+
+<pre>// Prepare the loader.  Either re-connect with an existing one,
+// or start a new one.
+getLoaderManager().initLoader(0, null, this);</pre>
+
+<p>{@link android.app.LoaderManager#initLoader initLoader()}
+方法采用以下参数:</p>
+<ul>
+  <li>用于标识加载器的唯一 ID。在此示例中,ID 为 0。</li>
+<li>在构建时提供给加载器的可选参数(在此示例中为 <code>null</code>
+)。</li> 
+
+<li>{@link android.app.LoaderManager.LoaderCallbacks} 实现,
+{@link android.app.LoaderManager} 将调用此实现来报告加载器事件。在此示例中,本地类实现
+{@link
+android.app.LoaderManager.LoaderCallbacks}
+接口,因此它会将引用 {@code this} 传递给自己。</li> 
+</ul>
+<p>{@link android.app.LoaderManager#initLoader initLoader()}
+调用确保加载器已初始化且处于Activity状态。这可能会出现两种结果:</p>
+<ul>
+  <li>如果 ID
+指定的加载器已存在,则将重复使用上次创建的加载器。</li>
+  <li>如果
+ID 指定的加载器不存在,则 {@link android.app.LoaderManager#initLoader initLoader()} 将触发
+{@link android.app.LoaderManager.LoaderCallbacks}
+方法 {@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}。在此方法中,您可以实现代码以实例化并返回新加载器。有关详细介绍,请参阅 <a href="#onCreateLoader">onCreateLoader</a> 部分。<em></em>
+</li>
+</ul>
+<p>无论何种情况,给定的
+{@link android.app.LoaderManager.LoaderCallbacks}
+实现均与加载器相关联,且将在加载器状态变化时调用。如果在调用时,调用程序处于启动状态,且请求的加载器已存在并生成了数据,则系统将立即调用
+{@link
+android.app
+LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()}
+(在 {@link android.app.LoaderManager#initLoader initLoader()}
+期间),因此您必须为此做好准备。有关此回调的详细介绍,请参阅
+<a href="#onLoadFinished">onLoadFinished</a>。</p>
+
+<p>请注意,{@link android.app.LoaderManager#initLoader initLoader()}
+方法将返回已创建的
+{@link android.content.Loader},但您不必捕获其引用。{@link android.app.LoaderManager}
+将自动管理加载器的生命周期。{@link android.app.LoaderManager}
+将根据需要启动和停止加载,并维护加载器的状态及其相关内容。
+这意味着您很少直接与加载器进行交互(有关使用加载器方法调整加载器行为的示例,请参阅
+<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html">LoaderThrottle</a>
+示例)。当特殊事件发生时,您通常会使用
+{@link
+android.app.LoaderManager.LoaderCallbacks}
+方法干预加载进程。有关此主题的详细介绍,请参阅<a href="#callback">使用 LoaderManager 回调</a>。</p>
+
+<h3 id="restarting">重启加载器</h3>
+
+<p>当您使用
+{@link android.app.LoaderManager#initLoader initLoader()}
+时(如上所述),它将使用含有指定 ID 的现有加载器(如有)。如果没有,则它会创建一个。但有时,您想放弃这些旧数据并重新开始。
+</p>
+
+<p>要放弃旧数据,请使用 {@link
+android.app.LoaderManager#restartLoader restartLoader()}。例如,当用户的查询更改时,此 {@link android.widget.SearchView.OnQueryTextListener}
+实现将重启加载器。
+加载器需要重启,以便它能够使用修订后的搜索筛选器执行新查询:
+</p>
+
+<pre>
+public boolean onQueryTextChanged(String newText) {
+    // Called when the action bar search text has changed.  Update
+    // the search filter, and restart the loader to do a new query
+    // with this filter.
+    mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+    getLoaderManager().restartLoader(0, null, this);
+    return true;
+}</pre>
+
+<h3 id="callback">使用 LoaderManager 回调</h3>
+
+<p>{@link android.app.LoaderManager.LoaderCallbacks} 是一个支持客户端与
+{@link android.app.LoaderManager} 交互的回调接口。 </p>
+<p>加载器(特别是
+{@link android.content.CursorLoader})在停止运行后,仍需保留其数据。这样,应用即可保留 Activity 或片段的
+{@link android.app.Activity#onStop
+onStop()} 和
+{@link android.app.Activity#onStart onStart()}
+方法中的数据。当用户返回应用时,无需等待它重新加载这些数据。您可使用
+{@link android.app.LoaderManager.LoaderCallbacks}
+方法了解何时创建新加载器,并告知应用何时停止使用加载器的数据。</p>
+
+<p>{@link android.app.LoaderManager.LoaderCallbacks}
+包括以下方法:</p>
+<ul>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}:针对指定的
+ID 进行实例化并返回新的 {@link android.content.Loader}
+</li></ul>
+<ul>
+  <li> {@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()}
+:将在先前创建的加载器完成加载时调用
+</li></ul>
+<ul>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()}:
+将在先前创建的加载器重置且其数据因此不可用时调用
+
+</li>
+</ul>
+<p>下文更详细地描述了这些方法。</p>
+
+<h4 id ="onCreateLoader">onCreateLoader</h4>
+
+<p>当您尝试访问加载器时(例如,通过
+{@link
+android.app.LoaderManager#initLoader initLoader()}),该方法将检查是否已存在由该 ID 指定的加载器。如果没有,它将触发 {@link
+android.app.LoaderManager.LoaderCallbacks} 方法 {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}。在此方法中,您可以创建新加载器。
+通常,这将是 {@link
+android.content.CursorLoader},但您也可以实现自己的 {@link
+android.content.Loader} 子类。 </p>
+
+<p>在此示例中,{@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}
+回调方法创建了 {@link android.content.CursorLoader}。您必须使用其构造函数方法来构建
+{@link android.content.CursorLoader}。该方法需要对
+{@link
+android.content.ContentProvider} 执行查询时所需的一系列完整信息。具体地说,它需要:</p>
+<ul>
+  <li><em>uri</em>:用于检索内容的 URI </li>
+  <li><em>projection</em>:要返回的列的列表。传递
+<code>null</code> 时,将返回所有列,这样会导致效率低下 </li>
+  <li><em>selection</em>:一种用于声明要返回哪些行的过滤器,其格式为
+SQL WHERE 子句(WHERE 本身除外)。传递
+<code>null</code> 时,将为指定的 URI 返回所有行 </li>
+  <li><em>selectionArgs</em>:您可以在 selection 中包含 ?s,它将按照在 selection 中显示的顺序替换为
+<em>selectionArgs</em>
+中的值。该值将绑定为字串符 </li>
+  <li><em>sortOrder</em>:行的排序依据,其格式为 SQL
+ORDER BY 子句(ORDER BY 自身除外)。传递 <code>null</code>
+ 时,将使用默认排序顺序(可能并未排序)</li>
+</ul>
+<p>例如:</p>
+<pre>
+ // If non-null, this is the current filter the user has provided.
+String mCurFilter;
+...
+public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+    // This is called when a new Loader needs to be created.  This
+    // sample only has one Loader, so we don't care about the ID.
+    // First, pick the base URI to use depending on whether we are
+    // currently filtering.
+    Uri baseUri;
+    if (mCurFilter != null) {
+        baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+                  Uri.encode(mCurFilter));
+    } else {
+        baseUri = Contacts.CONTENT_URI;
+    }
+
+    // Now create and return a CursorLoader that will take care of
+    // creating a Cursor for the data being displayed.
+    String select = &quot;((&quot; + Contacts.DISPLAY_NAME + &quot; NOTNULL) AND (&quot;
+            + Contacts.HAS_PHONE_NUMBER + &quot;=1) AND (&quot;
+            + Contacts.DISPLAY_NAME + &quot; != '' ))&quot;;
+    return new CursorLoader(getActivity(), baseUri,
+            CONTACTS_SUMMARY_PROJECTION, select, null,
+            Contacts.DISPLAY_NAME + &quot; COLLATE LOCALIZED ASC&quot;);
+}</pre>
+<h4 id="onLoadFinished">onLoadFinished</h4>
+
+<p>当先前创建的加载器完成加载时,将调用此方法。该方法必须在为此加载器提供的最后一个数据释放之前调用。
+
+此时,您应移除所有使用的旧数据(因为它们很快会被释放),但不要自行释放这些数据,因为这些数据归其加载器所有,其加载器会处理它们。
+
+</p>
+
+
+<p>当加载器发现应用不再使用这些数据时,即会释放它们。
+例如,如果数据是来自 {@link
+android.content.CursorLoader} 的一个 Cursor,则您不应手动对其调用 {@link
+android.database.Cursor#close close()}。如果 Cursor 放置在
+{@link android.widget.CursorAdapter} 中,则应使用 {@link
+android.widget.SimpleCursorAdapter#swapCursor swapCursor()} 方法,使旧
+{@link android.database.Cursor} 不会关闭。例如:</p>
+
+<pre>
+// This is the Adapter being used to display the list's data.<br
+/>SimpleCursorAdapter mAdapter;
+...
+
+public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
+    // Swap the new cursor in.  (The framework will take care of closing the
+    // old cursor once we return.)
+    mAdapter.swapCursor(data);
+}</pre>
+
+<h4 id="onLoaderReset">onLoaderReset</h4>
+
+<p>此方法将在先前创建的加载器重置且其数据因此不可用时调用。
+通过此回调,您可以了解何时将释放数据,因而能够及时移除其引用。
+  </p>
+<p>此实现调用值为 <code>null</code>
+的{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}:
+</p>
+
+<pre>
+// This is the Adapter being used to display the list's data.
+SimpleCursorAdapter mAdapter;
+...
+
+public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
+    // This is called when the last Cursor provided to onLoadFinished()
+    // above is about to be closed.  We need to make sure we are no
+    // longer using it.
+    mAdapter.swapCursor(null);
+}</pre>
+
+
+<h2 id="example">示例</h2>
+
+<p>以下是一个 
+{@link
+android.app.Fragment} 完整实现示例。它展示了一个 {@link android.widget.ListView},其中包含针对联系人内容提供程序的查询结果。它使用 {@link
+android.content.CursorLoader} 管理提供程序的查询。</p>
+ 
+<p>应用如需访问用户联系人(正如此示例中所示),其清单文件必须包括权限
+{@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS}。
+</p>
+
+<pre>
+public static class CursorLoaderListFragment extends ListFragment
+        implements OnQueryTextListener, LoaderManager.LoaderCallbacks&lt;Cursor&gt; {
+
+    // This is the Adapter being used to display the list's data.
+    SimpleCursorAdapter mAdapter;
+
+    // If non-null, this is the current filter the user has provided.
+    String mCurFilter;
+
+    @Override public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        // Give some text to display if there is no data.  In a real
+        // application this would come from a resource.
+        setEmptyText(&quot;No phone numbers&quot;);
+
+        // We have a menu item to show in action bar.
+        setHasOptionsMenu(true);
+
+        // Create an empty adapter we will use to display the loaded data.
+        mAdapter = new SimpleCursorAdapter(getActivity(),
+                android.R.layout.simple_list_item_2, null,
+                new String[] { Contacts.DISPLAY_NAME, Contacts.CONTACT_STATUS },
+                new int[] { android.R.id.text1, android.R.id.text2 }, 0);
+        setListAdapter(mAdapter);
+
+        // Prepare the loader.  Either re-connect with an existing one,
+        // or start a new one.
+        getLoaderManager().initLoader(0, null, this);
+    }
+
+    @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        // Place an action bar item for searching.
+        MenuItem item = menu.add(&quot;Search&quot;);
+        item.setIcon(android.R.drawable.ic_menu_search);
+        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+        SearchView sv = new SearchView(getActivity());
+        sv.setOnQueryTextListener(this);
+        item.setActionView(sv);
+    }
+
+    public boolean onQueryTextChange(String newText) {
+        // Called when the action bar search text has changed.  Update
+        // the search filter, and restart the loader to do a new query
+        // with this filter.
+        mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+        getLoaderManager().restartLoader(0, null, this);
+        return true;
+    }
+
+    @Override public boolean onQueryTextSubmit(String query) {
+        // Don't care about this.
+        return true;
+    }
+
+    @Override public void onListItemClick(ListView l, View v, int position, long id) {
+        // Insert desired behavior here.
+        Log.i(&quot;FragmentComplexList&quot;, &quot;Item clicked: &quot; + id);
+    }
+
+    // These are the Contacts rows that we will retrieve.
+    static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
+        Contacts._ID,
+        Contacts.DISPLAY_NAME,
+        Contacts.CONTACT_STATUS,
+        Contacts.CONTACT_PRESENCE,
+        Contacts.PHOTO_ID,
+        Contacts.LOOKUP_KEY,
+    };
+    public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+        // This is called when a new Loader needs to be created.  This
+        // sample only has one Loader, so we don't care about the ID.
+        // First, pick the base URI to use depending on whether we are
+        // currently filtering.
+        Uri baseUri;
+        if (mCurFilter != null) {
+            baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+                    Uri.encode(mCurFilter));
+        } else {
+            baseUri = Contacts.CONTENT_URI;
+        }
+
+        // Now create and return a CursorLoader that will take care of
+        // creating a Cursor for the data being displayed.
+        String select = &quot;((&quot; + Contacts.DISPLAY_NAME + &quot; NOTNULL) AND (&quot;
+                + Contacts.HAS_PHONE_NUMBER + &quot;=1) AND (&quot;
+                + Contacts.DISPLAY_NAME + &quot; != '' ))&quot;;
+        return new CursorLoader(getActivity(), baseUri,
+                CONTACTS_SUMMARY_PROJECTION, select, null,
+                Contacts.DISPLAY_NAME + &quot; COLLATE LOCALIZED ASC&quot;);
+    }
+
+    public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
+        // Swap the new cursor in.  (The framework will take care of closing the
+        // old cursor once we return.)
+        mAdapter.swapCursor(data);
+    }
+
+    public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
+        // This is called when the last Cursor provided to onLoadFinished()
+        // above is about to be closed.  We need to make sure we are no
+        // longer using it.
+        mAdapter.swapCursor(null);
+    }
+}</pre>
+<h3 id="more_examples">更多示例</h3>
+
+<p><strong>ApiDemos</strong>
+中还提供了一些不同的示例,阐述如何使用加载器:</p>
+<ul>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">LoaderCursor</a>:上述代码段的完整版本
+
+</li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html">LoaderThrottle</a>:此示例显示当数据变化时,如何使用限制来减少内容提供程序的查询次数
+</li>
+</ul>
+
+<p>有关下载和安装 SDK
+示例的信息,请参阅<a href="http://developer.android.com/resources/samples/get.html">获取示例</a>。 </p>
+
diff --git a/docs/html-intl/intl/zh-cn/guide/components/processes-and-threads.jd b/docs/html-intl/intl/zh-cn/guide/components/processes-and-threads.jd
new file mode 100644
index 0000000..c88ecf4
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/components/processes-and-threads.jd
@@ -0,0 +1,411 @@
+page.title=进程和线程
+page.tags=生命周期,后台
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本文内容</h2>
+<ol>
+<li><a href="#Processes">进程</a>
+  <ol>
+    <li><a href="#Lifecycle">进程生命周期</a></li>
+  </ol>
+</li>
+<li><a href="#Threads">线程</a>
+  <ol>
+    <li><a href="#WorkerThreads">工作线程</a></li>
+    <li><a href="#ThreadSafe">线程安全方法</a></li>
+  </ol>
+</li>
+<li><a href="#IPC">进程间通信</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>当某个应用组件启动且该应用没有运行其他任何组件时,Android
+系统会使用单个执行线程为应用启动新的
+Linux 进程。默认情况下,同一应用的所有组件在相同的进程和线程(称为“主”线程)中运行。
+如果某个应用组件启动且该应用已存在进程(因为存在该应用的其他组件),则该组件会在此进程内启动并使用相同的执行线程。
+
+但是,您可以安排应用中的其他组件在单独的进程中运行,并为任何进程创建额外的线程。
+
+</p>
+
+<p>本文档介绍进程和线程在 Android 应用中的工作方式。</p>
+
+
+<h2 id="Processes">进程</h2>
+
+<p>默认情况下,同一应用的所有组件均在相同的进程中运行,且大多数应用都不会改变这一点。
+但是,如果您发现需要控制某个组件所属的进程,则可在清单文件中执行此操作。
+</p>
+
+<p>各类组件元素的清单文件条目&mdash;<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a>、<a href="{@docRoot}guide/topics/manifest/service-element.html">{@code
+&lt;service&gt;}</a>、<a href="{@docRoot}guide/topics/manifest/receiver-element.html">{@code
+&lt;receiver&gt;}</a> 和 <a href="{@docRoot}guide/topics/manifest/provider-element.html">{@code
+&lt;provider&gt;}</a>&mdash;均支持 
+{@code android:process} 属性,此属性可以指定该组件应在哪个进程运行。您可以设置此属性,使每个组件均在各自的进程中运行,或者使一些组件共享一个进程,而其他组件则不共享。
+此外,您还可以设置 {@code android:process},使不同应用的组件在相同的进程中运行,但前提是这些应用共享相同的 Linux 用户 ID 并使用相同的证书进行签署。
+
+
+</p>
+
+<p>此外,<a href="{@docRoot}guide/topics/manifest/application-element.html">{@code
+&lt;application&gt;}</a> 元素还支持 {@code android:process}
+属性,以设置适用于所有组件的默认值。</p>
+
+<p>如果内存不足,而其他为用户提供更紧急服务的进程又需要内存时,Android
+可能会决定在某一时刻关闭某一进程。在被终止进程中运行的应用组件也会随之销毁。
+当这些组件需要再次运行时,系统将为它们重启进程。
+</p>
+
+<p>决定终止哪个进程时,Android
+系统将权衡它们对用户的相对重要程度。例如,相对于托管可见 Activity 的进程而言,它更有可能关闭托管屏幕上不再可见的 Activity 进程。
+因此,是否终止某个进程的决定取决于该进程中所运行组件的状态。
+下面,我们介绍决定终止进程所用的规则。
+ </p>
+
+
+<h3 id="Lifecycle">进程生命周期</h3>
+
+<p>Android 系统将尽量长时间地保持应用进程,但为了新建进程或运行更重要的进程,最终需要清除旧进程来回收内存。
+为了确定保留或终止哪些进程,系统会根据进程中正在运行的组件以及这些组件的状态,将每个进程放入“重要性层次结构”中。
+
+
+必要时,系统会首先消除重要性最低的进程,然后是重要性略逊的进程,依此类推,以回收系统资源。
+
+</p>
+
+<p>重要性层次结构一共有 5 级。以下列表按照重要程度列出了各类进程(第一个进程最重要,将是最后一个被终止的进程):
+<em></em><em></em>
+</p>
+
+<ol>
+  <li><b>前台进程</b>
+    <p>用户当前操作所必需的进程。如果一个进程满足以下任一条件,即视为前台进程:
+</p>
+
+      <ul>
+        <li>托管用户正在交互的 {@link android.app.Activity}(已调用 {@link
+android.app.Activity} 的 {@link android.app.Activity#onResume onResume()}
+方法)</li>
+
+        <li>托管某个 {@link android.app.Service},后者绑定到用户正在交互的 Activity
+</li>
+
+        <li>托管正在“前台”运行的
+{@link android.app.Service}(服务已调用 {@link android.app.Service#startForeground startForeground()})
+
+        <li>托管正执行一个生命周期回调的
+{@link android.app.Service}({@link android.app.Service#onCreate onCreate()}、{@link android.app.Service#onStart
+onStart()} 或 {@link android.app.Service#onDestroy onDestroy()})</li>
+
+        <li>托管正执行其 {@link
+        android.content.BroadcastReceiver#onReceive onReceive()} 方法的 {@link android.content.BroadcastReceiver}</li>
+    </ul>
+
+    <p>通常,在任意给定时间前台进程都为数不多。只有在内在不足以支持它们同时继续运行这一万不得已的情况下,系统才会终止它们。
+此时,设备往往已达到内存分页状态,因此需要终止一些前台进程来确保用户界面正常响应。
+
+</p></li>
+
+  <li><b>可见进程</b>
+    <p>没有任何前台组件、但仍会影响用户在屏幕上所见内容的进程。
+如果一个进程满足以下任一条件,即视为可见进程:
+</p>
+
+      <ul>
+        <li>托管不在前台、但仍对用户可见的
+{@link android.app.Activity}(已调用其 {@link android.app.Activity#onPause onPause()} 方法)。例如,如果前台 Activity 启动了一个对话框,允许在其后显示上一 Activity,则有可能会发生这种情况
+
+</li>
+
+        <li>托管绑定到可见(或前台)Activity 的
+{@link android.app.Service}</li>
+      </ul>
+
+      <p>可见进程被视为是极其重要的进程,除非为了维持所有前台进程同时运行而必须终止,否则系统不会终止这些进程。
+ </p>
+    </li>
+
+  <li><b>服务进程</b>
+    <p>正在运行已使用 {@link
+android.content.Context#startService startService()}
+方法启动的服务且不属于上述两个更高类别进程的进程。尽管服务进程与用户所见内容没有直接关联,但是它们通常在执行一些用户关心的操作(例如,在后台播放音乐或从网络下载数据)。因此,除非内存不足以维持所有前台进程和可见进程同时运行,否则系统会让服务进程保持运行状态。
+
+
+ </p>
+  </li>
+
+  <li><b>后台进程</b>
+    <p>包含目前对用户不可见的 Activity 的进程(已调用 Activity 的
+{@link android.app.Activity#onStop onStop()} 方法)。这些进程对用户体验没有直接影响,系统可能随时终止它们,以回收内存供前台进程、可见进程或服务进程使用。
+
+
+通常会有很多后台进程在运行,因此它们会保存在
+LRU
+(最近最少使用)列表中,以确保包含用户最近查看的 Activity 的进程最后一个被终止。如果某个 Activity 正确实现了生命周期方法,并保存了其当前状态,则终止其进程不会对用户体验产生明显影响,因为当用户导航回该 Activity 时,Activity 会恢复其所有可见状态。
+
+
+有关保存和恢复状态的信息,请参阅<a href="{@docRoot}guide/components/activities.html#SavingActivityState">Activity</a>文档。
+</p>
+  </li>
+
+  <li><b>空进程</b>
+    <p>不含任何活动应用组件的进程。保留这种进程的的唯一目的是用作缓存,以缩短下次在其中运行组件所需的启动时间。
+
+为使总体系统资源在进程缓存和底层内核缓存之间保持平衡,系统往往会终止这些进程。
+</p>
+  </li>
+</ol>
+
+
+  <p>根据进程中当前活动组件的重要程度,Android
+会将进程评定为它可能达到的最高级别。例如,如果某进程托管着服务和可见 Activity,则会将此进程评定为可见进程,而不是服务进程。
+</p>
+
+  <p>此外,一个进程的级别可能会因其他进程对它的依赖而有所提高,即服务于另一进程的进程其级别永远不会低于其所服务的进程。
+
+例如,如果进程 A
+中的内容提供程序为进程 B 中的客户端提供服务,或者如果进程 A 中的服务绑定到进程 B 中的组件,则进程 A 始终被视为至少与进程
+B 同样重要。</p>
+
+  <p>由于运行服务的进程其级别高于托管后台 Activity 的进程,因此启动长时间运行操作的 Activity 最好为该操作启动<a href="{@docRoot}guide/components/services.html">服务</a>,而不是简单地创建工作线程,当操作有可能比 Activity 更加持久时尤要如此。例如,正在将图片上传到网站的 Activity 应该启动服务来执行上传,这样一来,即使用户退出 Activity,仍可在后台继续执行上传操作。使用服务可以保证,无论 Activity 发生什么情况,该操作至少具备“服务进程”优先级。
+
+
+
+
+
+同理,广播接收器也应使用服务,而不是简单地将耗时冗长的操作放入线程中。
+</p>
+
+
+
+
+<h2 id="Threads">线程</h2>
+
+<p>应用启动时,系统会为应用创建一个名为“主线程”的执行线程。
+此线程非常重要,因为它负责将事件分派给相应的用户界面小工具,其中包括绘图事件。
+此外,它也是应用与
+Android UI 工具包组件(来自 {@link
+android.widget} 和 {@link android.view} 软件包的组件)进行交互的线程。因此,主线程有时也称为
+UI 线程。</p>
+
+<p>系统绝对不会为每个组件实例创建单独的线程。<em></em>运行于同一进程的所有组件均在
+UI
+线程中实例化,并且对每个组件的系统调用均由该线程进行分派。因此,响应系统回调的方法(例如,报告用户操作的
+{@link android.view.View#onKeyDown onKeyDown()}
+或生命周期回调方法)始终在进程的 UI 线程中运行。</p>
+
+<p>例如,当用户触摸屏幕上的按钮时,应用的
+UI
+线程会将触摸事件分派给小工具,而小工具反过来又设置其按下状态,并将无效请求发布到事件队列中。UI
+线程从队列中取消该请求并通知小工具应该重绘自身。</p>
+
+<p>在应用执行繁重的任务以响应用户交互时,除非正确实施应用,否则这种单线程模式可能会导致性能低下。
+特别地,如果
+UI
+线程需要处理所有任务,则执行耗时很长的操作(例如,网络访问或数据库查询)将会阻塞整个
+UI。一旦线程被阻塞,将无法分派任何事件,包括绘图事件。从用户的角度来看,应用显示为挂起。
+更糟糕的是,如果 UI
+线程被阻塞超过几秒钟时间(目前大约是 5 秒钟),用户就会看到一个让人厌烦的“<a href="http://developer.android.com/guide/practices/responsiveness.html">应用无响应</a>”(ANR)
+对话框。如果引起用户不满,他们可能就会决定退出并卸载此应用。
+</p>
+
+<p>此外,Android UI 工具包并非线程安全工具包。<em></em>因此,您不得通过工作线程操纵
+UI,而只能通过
+UI 线程操纵用户界面。因此,Android 的单线程模式必须遵守两条规则:</p>
+
+<ol>
+<li>不要阻塞 UI 线程
+<li>不要在 UI 线程之外访问 Android UI 工具包
+</ol>
+
+<h3 id="WorkerThreads">工作线程</h3>
+
+<p>根据上述单线程模式,要保证应用 UI
+的响应能力,关键是不能阻塞 UI 线程。如果执行的操作不能很快完成,则应确保它们在单独的线程(“后台”或“工作”线程)中运行。
+
+</p>
+
+<p>例如,以下代码演示了一个点击侦听器从单独的线程下载图像并将其显示在
+{@link android.widget.ImageView} 中:</p>
+
+<pre>
+public void onClick(View v) {
+    new Thread(new Runnable() {
+        public void run() {
+            Bitmap b = loadImageFromNetwork("http://example.com/image.png");
+            mImageView.setImageBitmap(b);
+        }
+    }).start();
+}
+</pre>
+
+<p>乍看起来,这段代码似乎运行良好,因为它创建了一个新线程来处理网络操作。
+但是,它违反了单线程模式的第二条规则:不要在
+UI 线程之外访问 Android UI 工具包<em></em>&mdash;此示例从工作线程(而不是 UI 线程)修改了 {@link
+android.widget.ImageView}。这可能导致出现不明确、不可预见的行为,但要跟踪此行为困难而又费时。
+</p>
+
+<p>为解决此问题,Android 提供了几种途径来从其他线程访问 UI
+线程。以下列出了几种有用的方法:</p>
+
+<ul>
+<li>{@link android.app.Activity#runOnUiThread(java.lang.Runnable)
+Activity.runOnUiThread(Runnable)}</li>
+<li>{@link android.view.View#post(java.lang.Runnable) View.post(Runnable)}</li>
+<li>{@link android.view.View#postDelayed(java.lang.Runnable, long) View.postDelayed(Runnable,
+long)}</li>
+</ul>
+
+<p>例如,您可以通过使用 {@link
+android.view.View#post(java.lang.Runnable) View.post(Runnable)} 方法修复上述代码:</p>
+
+<pre>
+public void onClick(View v) {
+    new Thread(new Runnable() {
+        public void run() {
+            final Bitmap bitmap = loadImageFromNetwork("http://example.com/image.png");
+            mImageView.post(new Runnable() {
+                public void run() {
+                    mImageView.setImageBitmap(bitmap);
+                }
+            });
+        }
+    }).start();
+}
+</pre>
+
+<p>现在,上述实现属于线程安全型:在单独的线程中完成网络操作,而在 UI 线程中操纵
+{@link android.widget.ImageView}。</p>
+
+<p>但是,随着操作日趋复杂,这类代码也会变得复杂且难以维护。
+要通过工作线程处理更复杂的交互,可以考虑在工作线程中使用
+{@link android.os.Handler}
+处理来自 UI 线程的消息。当然,最好的解决方案或许是扩展 {@link android.os.AsyncTask} 类,此类简化了与
+UI 进行交互所需执行的工作线程任务。</p>
+
+
+<h4 id="AsyncTask">使用 AsyncTask</h4>
+
+<p>{@link android.os.AsyncTask}
+允许对用户界面执行异步操作。它会先阻塞工作线程中的操作,然后在 UI
+线程中发布结果,而无需您亲自处理线程和/或处理程序。</p>
+
+<p>要使用它,必须创建 {@link android.os.AsyncTask} 子类并实现 {@link
+android.os.AsyncTask#doInBackground doInBackground()}
+回调方法,该方法将在后台线程池中运行。要更新 UI,必须实现 {@link
+android.os.AsyncTask#onPostExecute onPostExecute()} 以传递 {@link
+android.os.AsyncTask#doInBackground doInBackground()} 返回的结果并在 UI 线程中运行,这样,您即可安全更新 UI。稍后,您可以通过从 UI 线程调用
+{@link android.os.AsyncTask#execute execute()}
+来运行任务。</p>
+
+<p>例如,您可以通过以下方式使用
+{@link android.os.AsyncTask} 来实现上述示例:</p>
+
+<pre>
+public void onClick(View v) {
+    new DownloadImageTask().execute("http://example.com/image.png");
+}
+
+private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
+    /** The system calls this to perform work in a worker thread and
+      * delivers it the parameters given to AsyncTask.execute() */
+    protected Bitmap doInBackground(String... urls) {
+        return loadImageFromNetwork(urls[0]);
+    }
+    
+    /** The system calls this to perform work in the UI thread and delivers
+      * the result from doInBackground() */
+    protected void onPostExecute(Bitmap result) {
+        mImageView.setImageBitmap(result);
+    }
+}
+</pre>
+
+<p>现在 UI 是安全的,代码也得到简化,因为任务分解成了两部分:一部分应在工作线程内完成,另一部分应在
+UI 线程内完成。</p>
+
+<p>下面简要概述了 AsyncTask 的工作方法,但要全面了解如何使用此类,您应阅读 {@link android.os.AsyncTask}
+参考文档:</p>
+
+<ul>
+<li>可以使用泛型指定参数类型、进度值和任务最终值
+</li>
+<li>方法
+{@link android.os.AsyncTask#doInBackground doInBackground()} 会在工作线程上自动执行</li>
+<li>{@link android.os.AsyncTask#onPreExecute onPreExecute()}、{@link
+android.os.AsyncTask#onPostExecute onPostExecute()} 和 {@link
+android.os.AsyncTask#onProgressUpdate onProgressUpdate()} 均在 UI 线程中调用</li>
+<li>{@link android.os.AsyncTask#doInBackground doInBackground()} 返回的值将发送到
+{@link android.os.AsyncTask#onPostExecute onPostExecute()}</li>
+<li>您可以随时在 {@link
+android.os.AsyncTask#doInBackground doInBackground()} 中调用{@link android.os.AsyncTask#publishProgress publishProgress()},以在 UI 线程中执行 {@link
+android.os.AsyncTask#onProgressUpdate onProgressUpdate()}</li>
+<li>您可以随时取消任何线程中的任务</li>
+</ul>
+
+<p class="caution"><strong>注意:</strong>使用工作线程时可能会遇到另一个问题,即:<a href="{@docRoot}guide/topics/resources/runtime-changes.html">运行时配置变更</a>(例如,用户更改了屏幕方向)导致 Activity 意外重启,这可能会销毁工作线程。
+
+要了解如何在这种重启情况下坚持执行任务,以及如何在 Activity 被销毁时正确地取消任务,请参阅<a href="http://code.google.com/p/shelves/">书架</a>示例应用的源代码。
+
+</p>
+
+
+<h3 id="ThreadSafe">线程安全方法</h3>
+
+<p> 在某些情况下,您实现的方法可能会从多个线程调用,因此编写这些方法时必须确保其满足线程安全的要求。
+ </p>
+
+<p>这一点主要适用于可以远程调用的方法,如<a href="{@docRoot}guide/components/bound-services.html">绑定服务</a>中的方法。如果对
+{@link android.os.IBinder}
+中所实现方法的调用源自运行
+{@link android.os.IBinder IBinder}
+的同一进程,则该方法在调用方的线程中执行。但是,如果调用源自其他进程,则该方法将在从线程池选择的某个线程中执行(而不是在进程的 UI 线程中执行),线程池由系统在与 {@link android.os.IBinder
+IBinder} 相同的进程中维护。例如,即使服务的
+{@link android.app.Service#onBind onBind()} 方法将从服务进程的 UI
+线程调用,在
+{@link android.app.Service#onBind
+onBind()} 返回的对象中实现的方法(例如,实现 RPC 方法的子类)仍会从线程池中的线程调用。由于一个服务可以有多个客户端,因此可能会有多个池线程在同一时间使用同一
+{@link android.os.IBinder IBinder} 方法。因此,{@link android.os.IBinder
+IBinder} 方法必须实现为线程安全方法。</p>
+
+<p> 同样,内容提供程序也可接收来自其他进程的数据请求。尽管
+{@link android.content.ContentResolver} 和 {@link android.content.ContentProvider}
+类隐藏了如何管理进程间通信的细节,但响应这些请求的 {@link
+android.content.ContentProvider} 方法({@link
+android.content.ContentProvider#query query()}、{@link android.content.ContentProvider#insert
+insert()}、{@link android.content.ContentProvider#delete delete()}、{@link
+android.content.ContentProvider#update update()} 和 {@link android.content.ContentProvider#getType
+getType()} 方法)将从内容提供程序所在进程的线程池中调用,而不是从进程的
+UI 线程调用。由于这些方法可能会同时从任意数量的线程调用,因此它们也必须实现为线程安全方法。
+ </p>
+
+
+<h2 id="IPC">进程间通信</h2>
+
+<p>Android 利用远程过程调用
+(RPC) 提供了一种进程间通信
+(IPC)
+机制,通过这种机制,由 Activity 或其他应用组件调用的方法将(在其他进程中)远程执行,而所有结果将返回给调用方。这就要求把方法调用及其数据分解至操作系统可以识别的程度,并将其从本地进程和地址空间传输至远程进程和地址空间,然后在远程进程中重新组装并执行该调用。
+
+然后,返回值将沿相反方向传输回来。
+Android 提供了执行这些 IPC
+事务所需的全部代码,因此您只需集中精力定义和实现 RPC 编程接口即可。 </p>
+
+<p>要执行 IPC,必须使用 {@link
+android.content.Context#bindService bindService()} 将应用绑定到服务上。如需了解详细信息,请参阅<a href="{@docRoot}guide/components/services.html">服务</a>开发者指南。</p>
+
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For information about how to perform work in the background for an indefinite period of time
+(without a user interface), continue with the <b><a
+href="{@docRoot}guide/components/services.html">Services</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/zh-cn/guide/components/recents.jd b/docs/html-intl/intl/zh-cn/guide/components/recents.jd
new file mode 100644
index 0000000..2bf1a5b
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/components/recents.jd
@@ -0,0 +1,256 @@
+page.title=概览屏幕
+page.tags="recents","overview"
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>本文内容</h2>
+  <ol>
+    <li><a href="#adding">将任务添加到概览屏幕</a>
+      <ol>
+        <li><a href="#flag-new-doc">使用 Intent 标志添加任务</a></li>
+        <li><a href="#attr-doclaunch">使用 Activity 属性添加任务</a></li>
+      </ol>
+    </li>
+    <li><a href="#removing">删除任务</a>
+      <ol>
+        <li><a href="#apptask-remove">使用 AppTask 类删除任务</a></li>
+        <li><a href="#retain-finished">保留已完成的任务</a></li>
+      </ol>
+    </li>
+  </ol>
+
+  <h2>关键类</h2>
+  <ol>
+    <li>{@link android.app.ActivityManager.AppTask}</li>
+    <li>{@link android.content.Intent}</li>
+  </ol>
+
+  <h2>示例代码</h2>
+  <ol>
+    <li><a href="{@docRoot}samples/DocumentCentricApps/index.html">以文档为中心的应用</a></li>
+  </ol>
+
+</div>
+</div>
+
+<p>概览屏幕(也称为最新动态屏幕、最近任务列表或最近使用的应用)是一个系统级别
+UI,其中列出了最近访问过的<a href="{@docRoot}guide/components/activities.html">Activity</a>和<a href="{@docRoot}guide/components/tasks-and-back-stack.html">任务</a>。
+用户可以浏览该列表并选择要恢复的任务,也可以通过滑动清除任务将其从列表中删除。
+
+对于
+Android 5.0 版本(API 级别 21),包含多个文档的同一 Activity 的多个实例可能会以任务的形式显示在概览屏幕中。例如,Google Drive 可能对多个
+Google 文档中的每个文档均执行一个任务。每个文档均以任务的形式显示在概览屏幕中。
+</p>
+
+<img src="{@docRoot}images/components/recents.png" alt="" width="284" />
+<p class="img-caption"><strong>图 1. </strong>显示了三个
+Google Drive 文档的概览屏幕,每个文档分别以一个单独的任务表示。</p>
+
+<p>通常,您应该允许系统定义任务和 Activity 在概览屏幕中的显示方法,并且无需修改此行为。不过,应用可以确定 Activity 在概览屏幕中的显示方式和时间。
+
+您可以使用 {@link android.app.ActivityManager.AppTask}
+类来管理任务,使用
+{@link android.content.Intent}
+类的 Activity 标志来指定某 Activity 添加到概览屏幕或从中删除的时间。此外,您也可以使用 <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
+&lt;activity&gt;</a></code> 属性在清单文件中设置该行为。</p>
+
+<h2 id="adding">将任务添加到概览屏幕</h2>
+
+<p>通过使用 {@link android.content.Intent}
+类的标志添加任务,您可以更好地控制某文档在概览屏幕中打开或重新打开的时间和方式。使用
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+属性时,您可以选择始终在新任务中打开文档,或选择对文档重复使用现有任务。
+</p>
+
+<h3 id="flag-new-doc">使用 Intent 标志添加任务</h3>
+
+<p>为 Activity 创建新文档时,可调用
+{@link android.app.ActivityManager.AppTask}
+类的 {@link android.app.ActivityManager.AppTask#startActivity(android.content.Context, android.content.Intent, android.os.Bundle) startActivity()}
+方法,以向其传递启动 Activity 的 Intent。要插入逻辑换行符以便系统将 Activity 视为新任务显示在概览屏幕中,可在启动 Activity 的
+{@link android.content.Intent}
+的 {@link android.content.Intent#addFlags(int) addFlags()} 方法中传递 {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+标志。</p>
+
+<p class="note"><strong>注:</strong>{@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+标志取代了 {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET}
+标志,后者自 Android 5.0(API 级别 21)起已弃用。</p>
+
+<p>如果在创建新文档时设置
+{@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}
+标志,则系统始终会以目标 Activity 作为根创建新任务。此设置允许同一文档在多个任务中打开。以下代码演示了主 Activity 如何执行此操作:
+</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">DocumentCentricActivity.java</a>
+</p>
+<pre>
+public void createNewDocument(View view) {
+      final Intent newDocumentIntent = newDocumentIntent();
+      if (useMultipleTasks) {
+          newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
+      }
+      startActivity(newDocumentIntent);
+  }
+
+  private Intent newDocumentIntent() {
+      boolean useMultipleTasks = mCheckbox.isChecked();
+      final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
+      newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
+      newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());
+      return newDocumentIntent;
+  }
+
+  private static int incrementAndGet() {
+      Log.d(TAG, "incrementAndGet(): " + mDocumentCounter);
+      return mDocumentCounter++;
+  }
+}
+</pre>
+
+<p class="note"><strong>注:</strong>使用 {@code FLAG_ACTIVITY_NEW_DOCUMENT}
+标志启动的 Activity 必须具有在清单文件中设置的 {@code android:launchMode="standard"}
+属性值(默认)。</p>
+
+<p>当主 Activity 启动新 Activity 时,系统会搜遍现有任务,看看是否有任务的 Intent 与 Activity 的 Intent 组件名称和 Intent 数据相匹配。
+如果未找到任务或者 Intent 包含
+{@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}
+标志,则会以该 Activity 作为其根创建新任务。如果找到的话,则会将该任务转到前台并将新
+ Intent 
+传递给
+{@link android.app.Activity#onNewIntent onNewIntent()}。新 Activity 将获得 Intent 并在概览屏幕中创建新文档,如下例所示:</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">NewDocumentActivity.java</a>
+</p>
+<pre>
+&#64;Override
+protected void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_new_document);
+    mDocumentCount = getIntent()
+            .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0);
+    mDocumentCounterTextView = (TextView) findViewById(
+            R.id.hello_new_document_text_view);
+    setDocumentCounterText(R.string.hello_new_document_counter);
+}
+
+&#64;Override
+protected void onNewIntent(Intent intent) {
+    super.onNewIntent(intent);
+    /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this activity
+    is reused to create a new document.
+     */
+    setDocumentCounterText(R.string.reusing_document_counter);
+}
+</pre>
+
+
+<h3 id="#attr-doclaunch">使用 Activity 属性添加任务</h3>
+
+<p>此外,Activity 还可以在其清单文件中指定始终通过使用
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+属性 <a href="{@docRoot}guide/topics/manifest/activity-element.html#dlmode">{@code android:documentLaunchMode}</a> 进入新任务。
+此属性有四个值,会在用户使用该应用打开文档时产生以下效果:
+</p>
+
+<dl>
+  <dt>“{@code intoExisting}”</dt>
+  <dd>该 Activity 会对文档重复使用现有任务。这与不设置
+{@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}
+标志、但设置
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} 标志所产生的效果相同,如上文的<a href="#flag-new-doc">使用 Intent 标志添加任务</a>中所述。<em></em></dd>
+
+  <dt>“{@code always}”</dt>
+  <dd>该 Activity 为文档创建新任务,即便文档已打开也是如此。使用此值与同时设置
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+和 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 标志所产生的效果相同。</dd>
+
+  <dt>“{@code none”}</dt>
+  <dd>该 Activity 不会为文档创建新任务。概览屏幕将按其默认方式对待此 Activity:为应用显示单个任务,该任务将从用户上次调用的任意 Activity 开始继续执行。
+
+</dd>
+
+  <dt>“{@code never}”</dt>
+  <dd>该 Activity 不会为文档创建新任务。设置此值会替代
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT}
+和 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 标志的行为(如果在
+ Intent 
+中设置了其中一个标志),并且概览屏幕将为应用显示单个任务,该任务将从用户上次调用的任意 Activity 开始继续执行。</dd>
+</dl>
+
+<p class="note"><strong>注:</strong>对于除 {@code none} 和 {@code never}
+以外的值,必须使用 {@code launchMode="standard"} 定义 Activity。如果未指定此属性,则使用
+{@code documentLaunchMode="none"}。</p>
+
+<h2 id="removing">删除任务</h2>
+
+<p>默认情况下,在 Activity 结束后,文档任务会从概览屏幕中自动删除。
+您可以使用 {@link android.app.ActivityManager.AppTask}
+类、{@link android.content.Intent} 标志或 <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
+&lt;activity&gt;</a></code> 属性替代此行为。</p>
+
+<p>通过将
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+属性<a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">
+{@code android:excludeFromRecents}</a> 设置为 {@code true},您可以始终将任务从概览屏幕中完全排除。</p>
+
+<p>您可以通过将
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+属性 <a href="{@docRoot}guide/topics/manifest/activity-element.html#maxrecents">{@code android:maxRecents}
+</a>设置为整型值,设置应用能够包括在概览屏幕中的最大任务数。默认值为 16。达到最大任务数后,最近最少使用的任务将从概览屏幕中删除。
+{@code android:maxRecents}
+的最大值为 50(内存不足的设备上为 25);小于 1 的值无效。</p>
+
+<h3 id="#apptask-remove">使用 AppTask 类删除任务</h3>
+
+<p>在于概览屏幕创建新任务的 Activity 中,您可以通过调用
+{@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()}
+方法指定何时删除该任务以及结束所有与之相关的 Activity。</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">NewDocumentActivity.java</a>
+</p>
+<pre>
+public void onRemoveFromRecents(View view) {
+    // The document is no longer needed; remove its task.
+    finishAndRemoveTask();
+}
+</pre>
+
+<p class="note"><strong>注:</strong>如下所述,使用
+{@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()}
+方法代替使用 {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS}
+标记。</p>
+
+<h3 id="#retain-finished">保留已完成的任务</h3>
+
+<p>若要将任务保留在概览屏幕中(即使其 Activity 已完成),可在启动 Activity 的
+ Intent 的 {@link android.content.Intent#addFlags(int) addFlags()} 方法中传递
+{@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} 标志。</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">DocumentCentricActivity.java</a>
+</p>
+<pre>
+private Intent newDocumentIntent() {
+    final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
+    newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
+      android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS);
+    newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());
+    return newDocumentIntent;
+}
+</pre>
+
+<p>要达到同样的效果,请将
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+属性<a href="{@docRoot}guide/topics/manifest/activity-element.html#autoremrecents">
+{@code android:autoRemoveFromRecents}</a> 设置为 {@code false}。文档 Activity 的默认值为
+{@code true},常规 Activity 的默认值为 {@code false}。如前所述,使用此属性替代
+{@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} 标志。</p>
+
+
+
+
+
+
+
diff --git a/docs/html-intl/intl/zh-cn/guide/components/services.jd b/docs/html-intl/intl/zh-cn/guide/components/services.jd
new file mode 100644
index 0000000..9a00e70
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/components/services.jd
@@ -0,0 +1,813 @@
+page.title=服务
+@jd:body
+
+<div id="qv-wrapper">
+<ol id="qv">
+<h2>本文内容</h2>
+<ol>
+<li><a href="#Basics">基础知识</a></li>
+<ol>
+  <li><a href="#Declaring">使用清单文件声明服务</a></li>
+</ol>
+<li><a href="#CreatingAService">创建启动服务</a>
+  <ol>
+    <li><a href="#ExtendingIntentService">扩展 IntentService 类</a></li>
+    <li><a href="#ExtendingService">扩展服务类</a></li>
+    <li><a href="#StartingAService">启动服务</a></li>
+    <li><a href="#Stopping">停止服务</a></li>
+  </ol>
+</li>
+<li><a href="#CreatingBoundService">创建绑定服务</a></li>
+<li><a href="#Notifications">向用户发送通知</a></li>
+<li><a href="#Foreground">在前台运行服务</a></li>
+<li><a href="#Lifecycle">管理服务生命周期</a>
+<ol>
+  <li><a href="#LifecycleCallbacks">实现生命周期回调</a></li>
+</ol>
+</li>
+</ol>
+
+<h2>关键类</h2>
+<ol>
+  <li>{@link android.app.Service}</li>
+  <li>{@link android.app.IntentService}</li>
+</ol>
+
+<h2>示例</h2>
+<ol>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.html">{@code
+      ServiceStartArguments}</a></li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+      LocalService}</a></li>
+</ol>
+
+<h2>另请参阅</h2>
+<ol>
+<li><a href="{@docRoot}guide/components/bound-services.html">绑定服务</a></li>
+</ol>
+
+</div>
+
+
+<p>{@link android.app.Service}
+是一个可以在后台执行长时间运行操作而不使用用户界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。
+
+此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。
+例如,服务可以处理网络事务、播放音乐,执行文件 I/O
+或与内容提供程序交互,而所有这一切均可在后台进行。
+</p>
+
+<p>服务基本上分为两种形式:</p>
+
+<dl>
+  <dt>启动</dt>
+  <dd>当应用组件(如 Activity)通过调用
+{@link android.content.Context#startService startService()} 启动服务时,服务即处于“启动”状态。一旦启动,服务即可在后台无限期运行,即使启动服务的组件已被销毁也不受影响。
+已启动的服务通常是执行单一操作,而且不会将结果返回给调用方。例如,它可能通过网络下载或上传文件。
+
+操作完成后,服务会自行停止运行。
+</dd>
+  <dt>绑定</dt>
+  <dd>当应用组件通过调用 {@link
+android.content.Context#bindService bindService()} 绑定到服务时,服务即处于“绑定”状态。绑定服务提供了一个客户端-服务器接口,允许组件与服务进行交互、发送请求、获取结果,甚至是利用进程间通信 (IPC)
+跨进程执行这些操作。
+仅当与另一个应用组件绑定时,绑定服务才会运行。
+多个组件可以同时绑定到该服务,但全部取消绑定后,该服务即会被销毁。
+</dd>
+</dl>
+
+<p>虽然本文档是分开概括讨论这两种服务,但是您的服务可以同时以这两种方式运行,也就是说,它既可以是启动服务(以无限期运行),也允许绑定。问题只是在于您是否实现了一组回调方法:{@link
+android.app.Service#onStartCommand onStartCommand()}(允许组件启动服务)和 {@link
+android.app.Service#onBind onBind()}(允许绑定服务)。
+
+</p>
+
+<p>无论应用是处于启动状态还是绑定状态,抑或处于启动并且绑定状态,任何应用组件均可像使用活动那样通过调用 {@link android.content.Intent} 来使用服务(即使此服务来自另一应用)。
+
+不过,您可以通过清单文件将服务声明为私有服务,并阻止其他应用访问。
+<a href="#Declaring">使用清单文件声明服务</a>部分将对此做更详尽的阐述。
+
+</p>
+
+<p class="caution"><strong>注意:</strong>服务在其托管进程的主线程中运行,它既<strong>不</strong>创建自己的线程,也<strong>不</strong>在单独的进程中运行(除非另行指定)。
+
+这意味着,如果服务将执行任何
+CPU 密集型工作或阻止性操作(例如 MP3
+播放或联网),则应在服务内创建新线程来完成这项工作。通过使用单独的线程,可以降低发生“应用无响应”(ANR)
+错误的风险,而应用的主线程仍可继续专注于运行用户与 Activity 之间的交互。
+</p>
+
+
+<h2 id="Basics">基础知识</h2>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>您应使用服务还是线程?</h3>
+  <p>简单地说,服务是一种即使用户未与应用交互,但它仍可以在后台运行的组件。
+因此,您应仅在必要时才创建服务。
+</p>
+  <p>如需在主线程外部执行工作,不过只是在用户正在与应用交互时才有此需要,则应创建新线程而非服务。
+例如,如果您只是想在 Activity 运行的同时播放一些音乐,则可在
+{@link android.app.Activity#onCreate onCreate()}
+中创建线程,在 {@link
+android.app.Activity#onStart onStart()} 中启动线程,然后在 {@link android.app.Activity#onStop
+onStop()} 中停止线程。您还可以考虑使用
+{@link android.os.AsyncTask} 或 {@link android.os.HandlerThread},而非传统的 {@link java.lang.Thread} 类。如需了解有关线程的详细信息,请参阅<a href="{@docRoot}guide/components/processes-and-threads.html#Threads">进程和线程</a>文档。
+</p>
+  <p>请记住,如果您确实要使用服务,则默认情况下,它仍会在应用的主线程中运行,因此,如果服务执行的是密集型或阻止性操作,则您仍应在服务内创建新线程。
+
+</p>
+</div>
+</div>
+
+<p>要创建服务,您必须创建
+{@link android.app.Service} 的子类(或使用它的一个现有子类)。在实现中,您需要重写一些回调方法,以处理服务生命周期的某些关键方面并提供一种机制将组件绑定到服务(如适用)。
+
+应重写的最重要的回调方法包括:</p>
+
+<dl>
+  <dt>{@link android.app.Service#onStartCommand onStartCommand()}</dt>
+    <dd>当另一个组件(如 Activity)通过调用
+{@link android.content.Context#startService
+startService()} 请求启动服务时,系统将调用此方法。一旦执行此方法,服务即会启动并可在后台无限期运行。
+如果您实现此方法,则在服务工作完成后,需要由您通过调用
+{@link android.app.Service#stopSelf stopSelf()} 或 {@link
+android.content.Context#stopService stopService()} 来停止服务。(如果您只想提供绑定,则无需实现此方法。)
+</dd>
+  <dt>{@link android.app.Service#onBind onBind()}</dt>
+    <dd>当另一个组件想通过调用 {@link android.content.Context#bindService
+bindService()}
+与服务绑定(例如执行 RPC)时,系统将调用此方法。在此方法的实现中,您必须通过返回
+{@link android.os.IBinder} 提供一个接口,供客户端用来与服务进行通信。请务必实现此方法,但如果您并不希望允许绑定,则应返回 null。
+</dd>
+  <dt>{@link android.app.Service#onCreate()}</dt>
+    <dd>首次创建服务时,系统将调用此方法来执行一次性设置程序(在调用
+{@link android.app.Service#onStartCommand onStartCommand()} 或
+{@link android.app.Service#onBind onBind()} 之前)。如果服务已在运行,则不会调用此方法。
+</dd>
+  <dt>{@link android.app.Service#onDestroy()}</dt>
+    <dd>当服务不再使用且将被销毁时,系统将调用此方法。服务应该实现此方法来清理所有资源,如线程、注册的侦听器、接收器等。
+
+这是服务接收的最后一个调用。</dd>
+</dl>
+
+<p>如果组件通过调用 {@link
+android.content.Context#startService startService()} 启动服务(这会导致对 {@link
+android.app.Service#onStartCommand onStartCommand()} 的调用),则服务将一直运行,直到服务使用
+{@link android.app.Service#stopSelf()}
+自行停止运行,或由其他组件通过调用 {@link android.content.Context#stopService stopService()} 停止它为止。</p>
+
+<p>如果组件是通过调用
+{@link android.content.Context#bindService bindService()} 来创建服务(且<em>未</em>调用
+{@link
+android.app.Service#onStartCommand onStartCommand()}),则服务只会在该组件与其绑定时运行。一旦该服务与所有客户端之间的绑定全部取消,系统便会销毁它。
+</p>
+
+<p>仅当内存过低且必须回收系统资源以供具有用户焦点的 Activity 使用时,Android
+系统才会强制停止服务。如果将服务绑定到具有用户焦点的 Activity,则它不太可能会终止;如果将服务声明为<a href="#Foreground">在前台运行</a>(稍后讨论),则它几乎永远不会终止。或者,如果服务已启动并要长时间运行,则系统会随着时间的推移降低服务在后台任务列表中的位置,而服务也将随之变得非常容易被终止;如果服务是启动服务,则您必须将其设计为能够妥善处理系统对它的重启。
+
+
+
+
+如果系统终止服务,那么一旦资源变得再次可用,系统便会重启服务(不过这还取决于从
+{@link
+android.app.Service#onStartCommand onStartCommand()} 返回的值,本文稍后会对此加以讨论)。如需了解有关系统会在何时销毁服务的详细信息,请参阅<a href="{@docRoot}guide/components/processes-and-threads.html">进程和线程</a>文档。
+
+</p>
+
+<p>在下文中,您将了解如何创建各类服务以及如何从其他应用组件使用服务。
+</p>
+
+
+
+<h3 id="Declaring">使用清单文件声明服务</h3>
+
+<p>如同 Activity(以及其他组件)一样,您必须在应用的清单文件中声明所有服务。
+</p>
+
+<p>要声明服务,请添加 <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a>
+元素作为 <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>
+元素的子元素。例如:</p>
+
+<pre>
+&lt;manifest ... &gt;
+  ...
+  &lt;application ... &gt;
+      &lt;service android:name=".ExampleService" /&gt;
+      ...
+  &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+
+<p>如需了解有关使用清单文件声明服务的详细信息,请参阅
+<a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> 元素参考文档。</p>
+
+<p>您还可将其他属性包括在
+<a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a>
+元素中,以定义一些特性,如启动服务及其运行所在进程所需的权限。<a href="{@docRoot}guide/topics/manifest/service-element.html#nm">{@code android:name}</a>
+属性是唯一必需的属性,用于指定服务的类名。应用一旦发布,即不应更改此类名,如若不然,可能会存在因依赖显式 Intent 启动或绑定服务而破坏代码的风险(请阅读博客文章<a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">Things That Cannot Change</a>[不能更改的内容])。
+
+
+
+
+<p>为了确保应用的安全性,<strong>请始终使用显式 Intent 启动或绑定 {@link android.app.Service}</strong>,且不要为服务声明 Intent 过滤器。
+启动哪个服务存在一定的不确定性,而如果对这种不确定性的考量非常有必要,则可为服务提供 Intent 过滤器并从
+{@link
+android.content.Intent}
+中排除相应的组件名称,但随后必须使用 {@link
+android.content.Intent#setPackage setPackage()}
+ 方法设置 Intent 的软件包,这样可以充分消除目标服务的不确定性。</p>
+
+<p>此外,还可以通过添加
+<a href="{@docRoot}guide/topics/manifest/service-element.html#exported">{@code android:exported}</a>
+属性并将其设置为 {@code "false"},确保服务仅适用于您的应用。这可以有效阻止其他应用启动您的服务,即便在使用显式 Intent 时也如此。
+</p>
+
+
+
+
+<h2 id="CreatingStartedService">创建启动服务</h2>
+
+<p>启动服务由另一个组件通过调用 {@link
+android.content.Context#startService startService()} 启动,这会导致调用服务的
+{@link android.app.Service#onStartCommand onStartCommand()} 方法。</p>
+
+<p>服务启动之后,其生命周期即独立于启动它的组件,并且可以在后台无限期地运行,即使启动服务的组件已被销毁也不受影响。
+
+因此,服务应通过调用
+{@link android.app.Service#stopSelf stopSelf()} 结束工作来自行停止运行,或者由另一个组件通过调用
+{@link android.content.Context#stopService stopService()} 来停止它。</p>
+
+<p>应用组件(如 Activity)可以通过调用 {@link
+android.content.Context#startService startService()} 方法并传递 {@link android.content.Intent} 对象
+(指定服务并包含待使用服务的所有数据)来启动服务。服务通过
+{@link android.app.Service#onStartCommand
+onStartCommand()} 方法接收此 {@link android.content.Intent}。</p>
+
+<p>例如,假设某 Activity 需要将一些数据保存到在线数据库中。该 Activity 可以启动一个协同服务,并通过向 
+{@link
+android.content.Context#startService startService()} 传递一个 Intent,为该服务提供要保存的数据。服务通过
+{@link
+android.app.Service#onStartCommand onStartCommand()} 接收 Intent,连接到 Internet 并执行数据库事务。事务完成之后,服务会自行停止运行并随即被销毁。
+</p>
+
+<p class="caution"><strong>注意:</strong>默认情况下,服务与服务声明所在的应用运行于同一进程,而且运行于该应用的主线程中。
+因此,如果服务在用户与来自同一应用的 Activity 进行交互时执行密集型或阻止性操作,则会降低 Activity 性能。
+
+为了避免影响应用性能,您应在服务内启动新线程。
+</p>
+
+<p>从传统上讲,您可以扩展两个类来创建启动服务:</p>
+<dl>
+  <dt>{@link android.app.Service}</dt>
+  <dd>这是适用于所有服务的基类。扩展此类时,必须创建一个用于执行所有服务工作的新线程,因为默认情况下,服务将使用应用的主线程,这会降低应用正在运行的所有 Activity 的性能。
+
+
+</dd>
+  <dt>{@link android.app.IntentService}</dt>
+  <dd>这是
+{@link android.app.Service} 的子类,它使用工作线程逐一处理所有启动请求。如果您不要求服务同时处理多个请求,这是最好的选择。
+您只需实现 {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}
+方法即可,该方法会接收每个启动请求的 Intent,使您能够执行后台工作。</dd>
+</dl>
+
+<p>下文介绍如何使用其中任一类实现服务。
+</p>
+
+
+<h3 id="ExtendingIntentService">扩展 IntentService 类</h3>
+
+<p>由于大多数启动服务都不必同时处理多个请求(实际上,这种多线程情况可能很危险),因此使用
+{@link android.app.IntentService}
+类实现服务也许是最好的选择。</p>
+
+<p>{@link android.app.IntentService} 执行以下操作:</p>
+
+<ul>
+  <li>创建默认的工作线程,用于在应用的主线程外执行传递给 {@link
+android.app.Service#onStartCommand onStartCommand()}
+的所有 Intent。</li>
+  <li>创建工作队列,用于将一个 Intent 逐一传递给 {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}
+实现,这样您就永远不必担心多线程问题。</li>
+  <li>在处理完所有启动请求后停止服务,因此您永远不必调用
+{@link android.app.Service#stopSelf}。</li>
+  <li>提供
+{@link android.app.IntentService#onBind onBind()} 的默认实现(返回 null)。</li>
+  <li>提供 {@link android.app.IntentService#onStartCommand
+onStartCommand()} 的默认实现,可将 Intent 依次发送到工作队列和 {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} 实现。</li>
+</ul>
+
+<p>综上所述,您只需实现
+{@link
+android.app.IntentService#onHandleIntent onHandleIntent()} 来完成客户端提供的工作即可。(不过,您还需要为服务提供小型构造函数。)</p>
+
+<p>以下是 {@link android.app.IntentService} 的实现示例:</p>
+
+<pre>
+public class HelloIntentService extends IntentService {
+
+  /**
+   * A constructor is required, and must call the super {@link android.app.IntentService#IntentService}
+   * constructor with a name for the worker thread.
+   */
+  public HelloIntentService() {
+      super("HelloIntentService");
+  }
+
+  /**
+   * The IntentService calls this method from the default worker thread with
+   * the intent that started the service. When this method returns, IntentService
+   * stops the service, as appropriate.
+   */
+  &#64;Override
+  protected void onHandleIntent(Intent intent) {
+      // Normally we would do some work here, like download a file.
+      // For our sample, we just sleep for 5 seconds.
+      long endTime = System.currentTimeMillis() + 5*1000;
+      while (System.currentTimeMillis() &lt; endTime) {
+          synchronized (this) {
+              try {
+                  wait(endTime - System.currentTimeMillis());
+              } catch (Exception e) {
+              }
+          }
+      }
+  }
+}
+</pre>
+
+<p>您只需要一个构造函数和一个 {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} 实现即可。</p>
+
+<p>如果您决定还重写其他回调方法(如 {@link
+android.app.IntentService#onCreate onCreate()}、{@link
+android.app.IntentService#onStartCommand onStartCommand()} 或 {@link
+android.app.IntentService#onDestroy onDestroy()}),请确保调用超类实现,以便
+{@link android.app.IntentService} 能够妥善处理工作线程的生命周期。</p>
+
+<p>例如,{@link android.app.IntentService#onStartCommand onStartCommand()}
+必须返回默认实现(即,如何将 Intent 传递给 {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}):</p>
+
+<pre>
+&#64;Override
+public int onStartCommand(Intent intent, int flags, int startId) {
+    Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
+    return super.onStartCommand(intent,flags,startId);
+}
+</pre>
+
+<p>除
+{@link android.app.IntentService#onHandleIntent onHandleIntent()} 之外,您无需从中调用超类的唯一方法就是 {@link android.app.IntentService#onBind
+onBind()}(仅当服务允许绑定时,才需要实现该方法)。</p>
+
+<p>在下一部分中,您将了解如何在扩展
+{@link android.app.Service}
+基类时实现同类服务。该基类包含更多代码,但如需同时处理多个启动请求,则更适合使用该基类。</p>
+
+
+<h3 id="ExtendingService">扩展服务类</h3>
+
+<p>正如上一部分中所述,使用
+{@link android.app.IntentService} 显著简化了启动服务的实现。但是,若要求服务执行多线程(而不是通过工作队列处理启动请求),则可扩展
+{@link android.app.Service}
+类来处理每个 Intent。</p>
+
+<p>为了便于比较,以下提供了 {@link
+android.app.Service} 类实现的代码示例,该类执行的工作与上述使用 {@link
+android.app.IntentService} 的示例完全相同。也就是说,对于每个启动请求,它均使用工作线程执行作业,且每次仅处理一个请求。
+</p>
+
+<pre>
+public class HelloService extends Service {
+  private Looper mServiceLooper;
+  private ServiceHandler mServiceHandler;
+
+  // Handler that receives messages from the thread
+  private final class ServiceHandler extends Handler {
+      public ServiceHandler(Looper looper) {
+          super(looper);
+      }
+      &#64;Override
+      public void handleMessage(Message msg) {
+          // Normally we would do some work here, like download a file.
+          // For our sample, we just sleep for 5 seconds.
+          long endTime = System.currentTimeMillis() + 5*1000;
+          while (System.currentTimeMillis() &lt; endTime) {
+              synchronized (this) {
+                  try {
+                      wait(endTime - System.currentTimeMillis());
+                  } catch (Exception e) {
+                  }
+              }
+          }
+          // Stop the service using the startId, so that we don't stop
+          // the service in the middle of handling another job
+          stopSelf(msg.arg1);
+      }
+  }
+
+  &#64;Override
+  public void onCreate() {
+    // Start up the thread running the service.  Note that we create a
+    // separate thread because the service normally runs in the process's
+    // main thread, which we don't want to block.  We also make it
+    // background priority so CPU-intensive work will not disrupt our UI.
+    HandlerThread thread = new HandlerThread("ServiceStartArguments",
+            Process.THREAD_PRIORITY_BACKGROUND);
+    thread.start();
+
+    // Get the HandlerThread's Looper and use it for our Handler
+    mServiceLooper = thread.getLooper();
+    mServiceHandler = new ServiceHandler(mServiceLooper);
+  }
+
+  &#64;Override
+  public int onStartCommand(Intent intent, int flags, int startId) {
+      Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
+
+      // For each start request, send a message to start a job and deliver the
+      // start ID so we know which request we're stopping when we finish the job
+      Message msg = mServiceHandler.obtainMessage();
+      msg.arg1 = startId;
+      mServiceHandler.sendMessage(msg);
+
+      // If we get killed, after returning from here, restart
+      return START_STICKY;
+  }
+
+  &#64;Override
+  public IBinder onBind(Intent intent) {
+      // We don't provide binding, so return null
+      return null;
+  }
+
+  &#64;Override
+  public void onDestroy() {
+    Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();
+  }
+}
+</pre>
+
+<p>正如您所见,与使用 {@link android.app.IntentService} 相比,这需要执行更多工作。</p>
+
+<p>但是,因为是由您自己处理对 {@link android.app.Service#onStartCommand
+onStartCommand()} 的每个调用,因此可以同时执行多个请求。此示例并未这样做,但如果您希望如此,则可为每个请求创建一个新线程,然后立即运行这些线程(而不是等待上一个请求完成)。
+
+</p>
+
+<p>请注意,{@link android.app.Service#onStartCommand onStartCommand()}
+方法必须返回整型数。整型数是一个值,用于描述系统应该如何在服务终止的情况下继续运行服务(如上所述,{@link
+android.app.IntentService}
+的默认实现将为您处理这种情况,不过您可以对其进行修改)。从
+{@link android.app.Service#onStartCommand onStartCommand()}
+返回的值必须是以下常量之一:</p>
+
+<dl>
+  <dt>{@link android.app.Service#START_NOT_STICKY}</dt>
+    <dd>如果系统在
+{@link android.app.Service#onStartCommand
+onStartCommand()} 返回后终止服务,则除非有挂起 Intent 要传递,否则系统不会重建服务。<em></em>这是最安全的选项,可以避免在不必要时以及应用能够轻松重启所有未完成的作业时运行服务。
+</dd>
+  <dt>{@link android.app.Service#START_STICKY}</dt>
+    <dd>如果系统在
+{@link android.app.Service#onStartCommand
+onStartCommand()} 返回后终止服务,则会重建服务并调用
+{@link
+android.app.Service#onStartCommand onStartCommand()},但绝对不会重新传递最后一个 Intent。相反,除非有挂起 Intent 要启动服务(在这种情况下,将传递这些 Intent ),否则系统会通过空 Intent 调用
+{@link android.app.Service#onStartCommand onStartCommand()}。<em></em>这适用于不执行命令、但无限期运行并等待作业的媒体播放器(或类似服务)。
+</dd>
+  <dt>{@link android.app.Service#START_REDELIVER_INTENT}</dt>
+    <dd>如果系统在 {@link android.app.Service#onStartCommand
+onStartCommand()} 返回后终止服务,则会重建服务,并通过传递给服务的最后一个 Intent 调用
+{@link
+android.app.Service#onStartCommand onStartCommand()}。任何挂起 Intent 均依次传递。这适用于主动执行应该立即恢复的作业(例如下载文件)的服务。
+</dd>
+</dl>
+<p>有关这些返回值的更多详细信息,请查阅每个常量链接的参考文档。
+</p>
+
+
+
+<h3 id="StartingAService">启动服务</h3>
+
+<p>您可以通过将
+{@link android.content.Intent}(指定要启动的服务)传递给 {@link
+android.content.Context#startService startService()},从 Activity 或其他应用组件启动服务。Android 系统调用服务的 {@link
+android.app.Service#onStartCommand onStartCommand()} 方法,并向其传递 {@link
+android.content.Intent}。(切勿直接调用 {@link android.app.Service#onStartCommand
+onStartCommand()}。)</p>
+
+<p>例如,Activity 可以结合使用显式 Intent 与 {@link android.content.Context#startService
+startService()},启动上文中的示例服务 ({@code
+HelloSevice}):</p>
+
+<pre>
+Intent intent = new Intent(this, HelloService.class);
+startService(intent);
+</pre>
+
+<p>{@link android.content.Context#startService startService()} 方法将立即返回,且
+Android 系统调用服务的 {@link android.app.Service#onStartCommand
+onStartCommand()} 方法。如果服务尚未运行,则系统会先调用 {@link
+android.app.Service#onCreate onCreate()},然后再调用 {@link android.app.Service#onStartCommand
+onStartCommand()}。</p>
+
+<p>如果服务亦未提供绑定,则使用
+{@link
+android.content.Context#startService startService()} 传递的 Intent 是应用组件与服务之间唯一的通信模式。但是,如果您希望服务返回结果,则启动服务的客户端可以为广播创建一个
+{@link android.app.PendingIntent}
+(使用 {@link android.app.PendingIntent#getBroadcast getBroadcast()}),并通过启动服务的
+{@link android.content.Intent} 传递给服务。然后,服务就可以使用广播传递结果。
+</p>
+
+<p>多个服务启动请求会导致多次对服务的
+{@link android.app.Service#onStartCommand onStartCommand()} 进行相应的调用。但是,要停止服务,只需一个服务停止请求(使用
+{@link android.app.Service#stopSelf stopSelf()} 或 {@link
+android.content.Context#stopService stopService()})即可。</p>
+
+
+<h3 id="Stopping">停止服务</h3>
+
+<p>启动服务必须管理自己的生命周期。也就是说,除非系统必须回收内存资源,否则系统不会停止或销毁服务,而且服务在
+{@link android.app.Service#onStartCommand onStartCommand()}
+返回后会继续运行。因此,服务必须通过调用
+{@link android.app.Service#stopSelf stopSelf()} 自行停止运行,或者由另一个组件通过调用
+{@link android.content.Context#stopService stopService()} 来停止它。</p>
+
+<p>一旦请求使用 {@link android.app.Service#stopSelf stopSelf()}
+或 {@link
+android.content.Context#stopService stopService()} 停止服务,系统就会尽快销毁服务。</p>
+
+<p>但是,如果服务同时处理多个
+{@link
+android.app.Service#onStartCommand onStartCommand()}
+请求,则您不应在处理完一个启动请求之后停止服务,因为您可能已经收到了新的启动请求(在第一个请求结束时停止服务会终止第二个请求)。为了避免这一问题,您可以使用
+{@link android.app.Service#stopSelf(int)}
+确保服务停止请求始终基于最近的启动请求。也就说,在调用 {@link
+android.app.Service#stopSelf(int)} 时,传递与停止请求的 ID 对应的启动请求的 ID(传递给 {@link android.app.Service#onStartCommand onStartCommand()}
+的 <code>startId</code>)
+。然后,如果在您能够调用 {@link
+android.app.Service#stopSelf(int)} 之前服务收到了新的启动请求, ID 就不匹配,服务也就不会停止。</p>
+
+<p class="caution"><strong>注意:</strong>为了避免浪费系统资源和消耗电池电量,应用必须在工作完成之后停止其服务。
+如有必要,其他组件可以通过调用
+{@link
+android.content.Context#stopService stopService()} 来停止服务。即使为服务启用了绑定,一旦服务收到对
+{@link
+android.app.Service#onStartCommand onStartCommand()} 的调用,您始终仍须亲自停止服务。</p>
+
+<p>如需了解有关服务生命周期的详细信息,请参阅下面有关<a href="#Lifecycle">管理服务生命周期</a>的部分。</p>
+
+
+
+<h2 id="CreatingBoundService">创建绑定服务</h2>
+
+<p>绑定服务允许应用组件通过调用 {@link
+android.content.Context#bindService bindService()} 与其绑定,以便创建长期连接(通常不允许组件通过调用
+{@link
+android.content.Context#startService startService()} 来启动它)。<em></em></p>
+
+<p>如需与 Activity 和其他应用组件中的服务进行交互,或者需要通过进程间通信 (IPC) 向其他应用公开某些应用功能,则应创建绑定服务。
+
+</p>
+
+<p>要创建绑定服务,必须实现
+{@link
+android.app.Service#onBind onBind()} 回调方法以返回 {@link android.os.IBinder},用于定义与服务通信的接口。然后,其他应用组件可以调用
+{@link android.content.Context#bindService bindService()}
+来检索该接口,并开始对服务调用方法。服务只用于与其绑定的应用组件,因此如果没有组件绑定到服务,则系统会销毁服务(您不必按通过
+{@link android.app.Service#onStartCommand onStartCommand()}
+启动的服务那样来停止绑定服务)。
+<em></em></p>
+
+<p>要创建绑定服务,首先必须定义指定客户端如何与服务通信的接口。
+服务与客户端之间的这个接口必须是
+{@link android.os.IBinder} 的实现,并且服务必须从
+{@link android.app.Service#onBind
+onBind()} 回调方法返回它。一旦客户端收到
+{@link android.os.IBinder},即可开始通过该接口与服务进行交互。</p>
+
+<p>多个客户端可以同时绑定到服务。客户端完成与服务的交互后,会调用
+{@link android.content.Context#unbindService unbindService()} 取消绑定。一旦没有客户端绑定到该服务,系统就会销毁它。
+</p>
+
+<p>有多种方法实现绑定服务,其实现比启动服务更为复杂,因此绑定服务将在有关<a href="{@docRoot}guide/components/bound-services.html">绑定服务</a>的单独文档中专门讨论。
+
+</p>
+
+
+
+<h2 id="Notifications">向用户发送通知</h2>
+
+<p>一旦运行起来,服务即可使用 <a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">Toast 通知</a>或<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">状态栏通知</a>来通知用户所发生的事件。</p>
+
+<p>Toast 通知是指出现在当前窗口的表面、片刻随即消失不见的消息,而状态栏通知则在状态栏提供内含消息的图标,用户可以选择该图标来采取操作(例如启动 Activity)。
+
+</p>
+
+<p>通常,当某些后台工作已经完成(例如文件下载完成)且用户现在可以对其进行操作时,状态栏通知是最佳方法。
+
+当用户从展开视图中选定通知时,通知即可启动 Activity(例如查看已下载的文件)。
+</p>
+
+<p>如需了解详细信息,请参阅
+<a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">Toast 通知</a>或<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">状态栏通知</a>开发者指南。</p>
+
+
+
+<h2 id="Foreground">在前台运行服务</h2>
+
+<p>前台服务被认为是用户主动意识到的一种服务,因此在内存不足时,系统也不会考虑将其终止。
+前台服务必须为状态栏提供通知,状态栏位于“正在进行”标题下方,这意味着除非服务停止或从前台删除,否则不能清除通知。
+
+
+</p>
+
+<p>例如,应该将从服务播放音乐的音乐播放器设置为在前台运行,这是因为用户明确意识到其操作。
+
+状态栏中的通知可能表示正在播放的歌曲,并允许用户启动 Activity 来与音乐播放器进行交互。
+</p>
+
+<p>要请求让服务运行于前台,请调用 {@link
+android.app.Service#startForeground startForeground()}。此方法取两个参数:唯一标识通知的整型数和状态栏的
+{@link
+android.app.Notification}。例如:</p>
+
+<pre>
+Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text),
+        System.currentTimeMillis());
+Intent notificationIntent = new Intent(this, ExampleActivity.class);
+PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
+notification.setLatestEventInfo(this, getText(R.string.notification_title),
+        getText(R.string.notification_message), pendingIntent);
+startForeground(ONGOING_NOTIFICATION_ID, notification);
+</pre>
+
+<p class="caution"><strong>注意:</strong>提供给 {@link
+android.app.Service#startForeground startForeground()} 的整型 ID 不得为 0。</p>
+
+
+<p>要从前台删除服务,请调用
+{@link android.app.Service#stopForeground stopForeground()}。此方法取一个布尔值,指示是否也删除状态栏通知。
+此方法绝对不会停止服务。
+<em></em>但是,如果您在服务正在前台运行时将其停止,则通知也会被删除。
+</p>
+
+<p>如需了解有关通知的详细信息,请参阅<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">创建状态栏通知</a>。
+</p>
+
+
+
+<h2 id="Lifecycle">管理服务生命周期</h2>
+
+<p>服务的生命周期比 Activity 的生命周期要简单得多。但是,密切关注如何创建和销毁服务反而更加重要,因为服务可以在用户没有意识到的情况下运行于后台。
+
+</p>
+
+<p>服务生命周期(从创建到销毁)可以遵循两条不同的路径:
+</p>
+
+<ul>
+<li>启动服务
+  <p>该服务在其他组件调用 {@link
+android.content.Context#startService startService()} 时创建,然后无限期运行,且必须通过调用
+{@link
+android.app.Service#stopSelf() stopSelf()} 来自行停止运行。此外,其他组件也可以通过调用
+{@link android.content.Context#stopService
+stopService()} 来停止服务。服务停止后,系统会将其销毁。</p></li>
+
+<li>绑定服务
+  <p>该服务在另一个组件(客户端)调用 {@link
+android.content.Context#bindService bindService()} 时创建。然后,客户端通过
+{@link android.os.IBinder} 接口与服务进行通信。客户端可以通过调用
+{@link android.content.Context#unbindService unbindService()} 关闭连接。多个客户端可以绑定到相同服务,而且当所有绑定全部取消后,系统即会销毁该服务。
+(服务不必自行停止运行。)
+<em></em></p></li>
+</ul>
+
+<p>这两条路径并非完全独立。也就是说,您可以绑定到已经使用
+{@link android.content.Context#startService startService()} 启动的服务。例如,可以通过使用
+{@link android.content.Intent}(标识要播放的音乐)调用 {@link android.content.Context#startService
+startService()} 来启动后台音乐服务。随后,可能在用户需要稍加控制播放器或获取有关当前播放歌曲的信息时,Activity 可以通过调用
+{@link
+android.content.Context#bindService bindService()}
+绑定到服务。在这种情况下,除非所有客户端均取消绑定,否则 {@link
+android.content.Context#stopService stopService()} 或 {@link android.app.Service#stopSelf
+stopSelf()} 不会真正停止服务。 </p>
+
+
+<h3 id="LifecycleCallbacks">实现生命周期回调</h3>
+
+<p>与 Activity 类似,服务也拥有生命周期回调方法,您可以实现这些方法来监控服务状态的变化并适时执行工作。
+以下框架服务展示了每种生命周期方法:
+</p>
+
+<pre>
+public class ExampleService extends Service {
+    int mStartMode;       // indicates how to behave if the service is killed
+    IBinder mBinder;      // interface for clients that bind
+    boolean mAllowRebind; // indicates whether onRebind should be used
+
+    &#64;Override
+    public void {@link android.app.Service#onCreate onCreate}() {
+        // The service is being created
+    }
+    &#64;Override
+    public int {@link android.app.Service#onStartCommand onStartCommand}(Intent intent, int flags, int startId) {
+        // The service is starting, due to a call to {@link android.content.Context#startService startService()}
+        return <em>mStartMode</em>;
+    }
+    &#64;Override
+    public IBinder {@link android.app.Service#onBind onBind}(Intent intent) {
+        // A client is binding to the service with {@link android.content.Context#bindService bindService()}
+        return <em>mBinder</em>;
+    }
+    &#64;Override
+    public boolean {@link android.app.Service#onUnbind onUnbind}(Intent intent) {
+        // All clients have unbound with {@link android.content.Context#unbindService unbindService()}
+        return <em>mAllowRebind</em>;
+    }
+    &#64;Override
+    public void {@link android.app.Service#onRebind onRebind}(Intent intent) {
+        // A client is binding to the service with {@link android.content.Context#bindService bindService()},
+        // after onUnbind() has already been called
+    }
+    &#64;Override
+    public void {@link android.app.Service#onDestroy onDestroy}() {
+        // The service is no longer used and is being destroyed
+    }
+}
+</pre>
+
+<p class="note"><strong>注:</strong>与 Activity 生命周期回调方法不同,您不需要调用这些回调方法的超类实现。
+<em></em></p>
+
+<img src="{@docRoot}images/service_lifecycle.png" alt="" />
+<p class="img-caption"><strong>图 2. </strong>服务生命周期左图显示了使用
+{@link android.content.Context#startService
+startService()} 所创建的服务的生命周期,右图显示了使用
+{@link android.content.Context#bindService bindService()} 所创建的服务的生命周期。</p>
+
+<p>通过实现这些方法,您可以监控服务生命周期的两个嵌套循环: </p>
+
+<ul>
+<li>服务的<strong>整个生命周期</strong>从调用 {@link
+android.app.Service#onCreate onCreate()} 开始起,到 {@link
+android.app.Service#onDestroy} 返回时结束。与 Activity 类似,服务也在
+{@link android.app.Service#onCreate onCreate()} 中完成初始设置,并在 {@link
+android.app.Service#onDestroy onDestroy()} 中释放所有剩余资源。例如,音乐播放服务可以在 {@link
+android.app.Service#onCreate onCreate()} 中创建用于播放音乐的线程,然后在 {@link
+android.app.Service#onDestroy onDestroy()} 中停止该线程。
+
+
+<p>无论服务是通过 {@link android.content.Context#startService startService()}
+还是 {@link
+android.content.Context#bindService bindService()} 创建,都会为所有服务调用 {@link android.app.Service#onCreate onCreate()} 和 {@link android.app.Service#onDestroy
+onDestroy()} 方法。</p></li>
+
+<li>服务的<strong>有效生命周期</strong>从调用 {@link
+android.app.Service#onStartCommand onStartCommand()} 或 {@link android.app.Service#onBind onBind()}
+方法开始。每种方法均有 {@link
+android.content.Intent} 对象,该对象分别传递到 {@link android.content.Context#startService
+startService()} 或 {@link android.content.Context#bindService bindService()}。
+<p>对于启动服务,有效生命周期与整个生命周期同时结束(即便是在
+{@link android.app.Service#onStartCommand
+onStartCommand()} 返回之后,服务仍然处于活动状态)。对于绑定服务,有效生命周期在 {@link
+android.app.Service#onUnbind onUnbind()} 返回时结束。</p>
+</li>
+</ul>
+
+<p class="note"><strong>注:</strong>尽管启动服务是通过调用
+{@link android.app.Service#stopSelf stopSelf()} 或 {@link
+android.content.Context#stopService stopService()} 来停止,但是该服务并无相应的回调(没有 {@code onStop()}
+回调)。因此,除非服务绑定到客户端,否则在服务停止时,系统会将其销毁&mdash;{@link
+android.app.Service#onDestroy onDestroy()} 是接收到的唯一回调。
+</p>
+
+<p>图 2 说明了服务的典型回调方法。尽管该图分开介绍通过
+{@link android.content.Context#startService startService()} 创建的服务和通过
+{@link android.content.Context#bindService bindService()}
+创建的服务,但是请记住,不管启动方式如何,任何服务均有可能允许客户端与其绑定。因此,最初使用
+{@link android.app.Service#onStartCommand
+onStartCommand()}(通过客户端调用 {@link android.content.Context#startService startService()})启动的服务仍可接收对
+{@link android.app.Service#onBind onBind()} 的调用(当客户端调用
+{@link android.content.Context#bindService bindService()} 时)。</p>
+
+<p>如需了解有关创建提供绑定的服务的详细信息,请参阅<a href="{@docRoot}guide/components/bound-services.html">绑定服务</a>文档,该文档的<a href="{@docRoot}guide/components/bound-services.html#Lifecycle">管理绑定服务的生命周期</a>部分提供了有关
+{@link android.app.Service#onRebind onRebind()}
+回调方法的更多信息。
+</p>
+
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>To learn how to query data from the system or other applications (such as contacts or media
+stored on the device), continue with the <b><a
+href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a></b>
+document.</p>
+-->
diff --git a/docs/html-intl/intl/zh-cn/guide/components/tasks-and-back-stack.jd b/docs/html-intl/intl/zh-cn/guide/components/tasks-and-back-stack.jd
new file mode 100644
index 0000000..07fdf6e
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/components/tasks-and-back-stack.jd
@@ -0,0 +1,578 @@
+page.title=任务和返回栈
+parent.title=Activity
+parent.link=activities.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本文内容</h2>
+<ol>
+<li><a href="#ActivityState">保存 Activity 状态</a></li></li>
+<li><a href="#ManagingTasks">管理任务</a>
+  <ol>
+    <li><a href="#TaskLaunchModes">定义启动模式</a></li>
+    <li><a href="#Affinities">处理关联</a></li>
+    <li><a href="#Clearing">清理返回栈</a></li>
+    <li><a href="#Starting">启动任务</a></li>
+  </ol>
+</li>
+</ol>
+
+<h2>文章</h2>
+<ol>
+  <li><a href="http://android-developers.blogspot.com/2010/04/multitasking-android-way.html">
+Android 多任务运行机制</a></li>
+</ol>
+
+<h2>另请参阅</h2>
+<ol>
+  <li><a href="{@docRoot}design/patterns/navigation.html">Android
+设计:导航</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}
+清单文件元素</a></li>
+  <li><a href="{@docRoot}guide/components/recents.html">概览屏幕</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>应用通常包含多个<a href="{@docRoot}guide/components/activities.html">Activity</a>。每个 Activity 均应围绕用户可以执行的特定操作设计,并且能够启动其他 Activity。
+
+例如,电子邮件应用可能有一个 Activity 显示新邮件的列表。用户选择某邮件时,会打开一个新 Activity 以查看该邮件。
+</p>
+
+<p>一个 Activity 甚至可以启动设备上其他应用中存在的 Activity。例如,如果应用想要发送电子邮件,则可将 Intent 定义为执行“发送”操作并加入一些数据,如电子邮件地址和电子邮件。
+
+然后,系统将打开其他应用中声明自己处理此类
+ Intent 的 Activity。在这种情况下, Intent 
+是要发送电子邮件,因此将启动电子邮件应用的“撰写”Activity(如果多个 Activity 支持相同
+ Intent,则系统会让用户选择要使用的 Activity)。发送电子邮件时,Activity 将恢复,看起来好像电子邮件 Activity 是您的应用的一部分。
+即使这两个 Activity 可能来自不同的应用,但是
+Android 仍会将 Activity 保留在相同的任务中,以维护这种无缝的用户体验。<em></em>
+</p>
+
+<p>任务是指在执行特定作业时与用户交互的一系列 Activity。
+这些 Activity 按照各自的打开顺序排列在堆栈(即“返回栈”)中。<em></em>
+</p>
+
+<!-- SAVE FOR WHEN THE FRAGMENT DOC IS ADDED
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h3>Adding fragments to a task's back stack</h3>
+
+<p>Your activity can also include {@link android.app.Fragment}s to the back stack. For example,
+suppose you have a two-pane layout using fragments, one of which is a list view (fragment A) and the
+other being a layout to display an item from the list (fragment B). When the user selects an item
+from the list, fragment B is replaced by a new fragment (fragment C). In this case, it might be
+desireable for the user to navigate back to reveal fragment B, using the <em>Back</em> button.</p>
+<p>In order to add fragment B to the back stack so that this is possible, you must call {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()} before you {@link
+android.app.FragmentTransaction#commit()} the transaction that replaces fragment B with fragment
+C.</p>
+<p>For more information about using fragments and adding them to the back stack, see the {@link
+android.app.Fragment} class documentation.</p>
+
+</div>
+</div>
+-->
+
+<p>设备主屏幕是大多数任务的起点。当用户触摸应用启动器中的图标(或主屏幕上的快捷键)时,该应用的任务将出现在前台。
+
+如果应用不存在任务(应用最近未曾使用),则会创建一个新任务,并且该应用的“主”Activity 将作为堆栈中的根 Activity 打开。
+
+ </p>
+
+<p>当前 Activity 启动另一个 Activity 时,该新 Activity 会被推送到堆栈顶部,成为焦点所在。
+前一个 Activity 仍保留在堆栈中,但是处于停止状态。Activity 停止时,系统会保持其用户界面的当前状态。
+用户按“返回”按钮时,当前 Activity 会从堆栈顶部弹出(Activity 被销毁),而前一个 Activity 恢复执行(恢复其 UI 的前一状态)。<em></em>
+
+
+堆栈中的 Activity 永远不会重新排列,仅推入和弹出堆栈:由当前 Activity 启动时推入堆栈;用户使用“返回”按钮退出时弹出堆栈。<em></em>
+
+因此,返回栈以“后进先出”对象结构运行。
+
+图 1 通过时间线显示 Activity 之间的进度以及每个时间点的当前返回栈,直观呈现了这种行为。
+
+</p>
+
+<img src="{@docRoot}images/fundamentals/diagram_backstack.png" alt="" />
+<p class="img-caption"><strong>图 1. </strong>显示任务中的每个新 Activity 如何向返回栈添加项目。
+用户按“返回”按钮时,当前 Activity 随即被销毁,而前一个 Activity 恢复执行。<em></em>
+
+</p>
+
+
+<p>如果用户继续按“返回”,堆栈中的相应 Activity 就会弹出,以显示前一个 Activity,直到用户返回主屏幕为止(或者,返回任务开始时正在运行的任意 Activity)。<em></em>
+
+
+当所有 Activity 均从堆栈中删除后,任务即不复存在。</p>
+
+<div class="figure" style="width:287px">
+<img src="{@docRoot}images/fundamentals/diagram_multitasking.png" alt="" /> <p
+class="img-caption"><strong>图 2. </strong>两个任务:任务 B
+在前台接收用户交互,而任务 A 则在后台等待恢复。</p>
+</div>
+<div class="figure" style="width:215px">
+  <img src="{@docRoot}images/fundamentals/diagram_multiple_instances.png" alt="" /> <p
+class="img-caption"><strong>图 3. </strong>一个 Activity 将多次实例化。</p>
+</div>
+
+<p>任务是一个有机整体,当用户开始新任务或通过“主页”按钮转到主屏幕时,可以移动到“后台”。<em></em>
+尽管在后台时,该任务中的所有 Activity 全部停止,但是任务的返回栈仍旧不变,也就是说,当另一个任务发生时,该任务仅仅失去焦点而已,如图 2 中所示。
+
+
+然后,任务可以返回到“前台”,用户就能够回到离开时的状态。
+例如,假设当前任务(任务 A)的堆栈中有三个 Activity,即当前 Activity 下方还有两个 Activity。
+用户先按“主页”按钮,然后从应用启动器启动新应用。<em></em>
+
+显示主屏幕时,任务 A
+进入后台。新应用启动时,系统会使用自己的 Activity 堆栈为该应用启动一个任务(任务
+B)。与该应用交互之后,用户再次返回主屏幕并选择最初启动任务 A 的应用。现在,任务 A 出现在前台,其堆栈中的所有三个 Activity 保持不变,而位于堆栈顶部的 Activity 则会恢复执行。
+
+
+
+此时,用户还可以通过转到主屏幕并选择启动该任务的应用(或者,通过从<a href="{@docRoot}guide/components/recents.html">概览屏幕</a>选择该应用的任务)切换回任务 B。这是 Android 系统中的一个多任务示例。
+
+
+
+</p>
+
+<p class="note"><strong>注:</strong>后台可以同时运行多个任务。但是,如果用户同时运行多个后台任务,则系统可能会开始销毁后台 Activity,以回收内存资源,从而导致 Activity 状态丢失。请参阅下面有关<a href="#ActivityState"> Activity 状态</a>的部分。
+
+
+</p>
+
+<p>由于返回栈中的 Activity 永远不会重新排列,因此如果应用允许用户从多个 Activity 中启动特定 Activity,则会创建该 Activity 的新实例并推入堆栈中(而不是将 Activity 的任一先前实例置于顶部)。
+
+
+因此,应用中的一个 Activity 可能会多次实例化(即使 Activity 来自不同的任务),如图 3 所示。
+因此,如果用户使用“返回”按钮向后导航,则会按 Activity 每个实例的打开顺序显示这些实例(每个实例的 UI 状态各不相同)。<em></em>
+
+
+但是,如果您不希望 Activity 多次实例化,则可修改此行为。
+具体操作方法将在后面的<a href="#ManagingTasks">管理任务</a>部分中讨论。</p>
+
+
+<p>Activity 和任务的默认行为总结如下:</p>
+
+<ul>
+  <li>当 Activity A 启动 Activity B 时,Activity A 将会停止,但系统会保留其状态(例如,滚动位置和已输入表单中的文本)。如果用户在处于 Activity B 时按“返回”按钮,则 Activity A 将恢复其状态,继续执行。<em></em>
+
+
+</li>
+  <li>用户通过按“主页”按钮离开任务时,当前 Activity 将停止且其任务会进入后台。<em></em>
+
+系统将保留任务中每个 Activity 的状态。如果用户稍后通过选择开始任务的启动器图标来恢复任务,则任务将出现在前台并恢复执行堆栈顶部的 Activity。
+
+</li>
+  <li>如果用户按“返回”按钮,则当前 Activity 会从堆栈弹出并被销毁。<em></em>
+
+堆栈中的前一个 Activity 恢复执行。销毁 Activity 时,系统绝对不会保留该 Activity 的状态。<em></em>
+</li>
+  <li>即使来自其他任务,Activity 也可以多次实例化。</li>
+</ul>
+
+
+<div class="note design">
+<p><strong>导航设计</strong></p>
+  <p>如需了解有关 Android 应用导航工作方式的详细信息,请阅读 Android 设计的<a href="{@docRoot}design/patterns/navigation.html">导航</a>指南。</p>
+</div>
+
+
+<h2 id="ActivityState">保存 Activity 状态</h2>
+
+<p>正如上文所述,当 Activity 停止时,系统的默认行为会保留其状态。
+这样一来,当用户导航回到上一个 Activity 时,其用户界面与用户离开时一样。
+但是,在 Activity 被销毁且必须重建时,您可以而且<strong>应当</strong>主动使用回调方法保留 Activity 的状态。
+
+</p>
+
+<p>系统停止您的一个 Activity 时(例如,新 Activity 启动或任务转到前台),如果系统需要回收系统内存资源,则可能会完全销毁该 Activity。
+
+发生这种情况时,有关该 Activity 状态的信息将会丢失。如果发生这种情况,系统仍会知道该 Activity 存在于返回栈中,但是当该 Activity 被置于堆栈顶部时,系统一定会重建 Activity(而不是恢复 Activity)。
+
+
+为了避免用户的工作丢失,您应主动通过在 Activity 中实现
+{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}
+回调方法来保留工作。
+</p>
+
+<p>如需了解有关如何保存 Activity 状态的详细信息,请参阅<a href="{@docRoot}guide/components/activities.html#SavingActivityState">Activity</a>文档。
+</p>
+
+
+
+<h2 id="ManagingTasks">管理任务</h2>
+
+<p>Android 管理任务和返回栈的方式(如上所述,即:将所有连续启动的 Activity 放入同一任务和“后进先出”堆栈中)非常适用于大多数应用,而您不必担心 Activity 如何与任务关联或者如何存在于返回栈中。
+
+
+但是,您可能会决定要中断正常行为。
+也许您希望应用中的 Activity 在启动时开始新任务(而不是放置在当前任务中);或者,当启动 Activity 时,您希望将其现有实例上移一层(而不是在返回栈的顶部创建新实例);或者,您希望在用户离开任务时,清除返回栈中除根 Activity 以外的所有其他 Activity。
+
+
+
+</p>
+
+<p>通过使用 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 清单文件元素中的属性和传递给 {@link android.app.Activity#startActivity startActivity()}
+的 Intent 中的标志,您可以执行所有这些操作以及其他操作。
+
+</p>
+
+<p>在这一方面,您可以使用的主要 <a href="{@docRoot}guide/topics/manifest/activity-element.html">
+{@code &lt;activity&gt;}</a> 属性包括:</p>
+
+<ul class="nolist">
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">
+  {@code taskAffinity}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">
+  {@code launchMode}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">
+  {@code allowTaskReparenting}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">
+  {@code clearTaskOnLaunch}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
+  {@code alwaysRetainTaskState}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">
+  {@code finishOnTaskLaunch}</a></li>
+</ul>
+
+<p>您可以使用的主要 Intent 标志包括:</p>
+
+<ul class="nolist">
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</li>
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</li>
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</li>
+</ul>
+
+<p>在下文中,您将了解如何使用这些清单文件属性和 Intent 
+标志定义 Activity 与任务的关联方式,以及 Activity 在返回栈中的行为方式。</p>
+
+<p>此外,我们还单独介绍了有关如何在概览屏幕中显示和管理任务与 Activity 的注意事项。
+如需了解详细信息,请参阅<a href="{@docRoot}guide/components/recents.html">概览屏幕</a>。
+通常,您应该允许系统定义任务和 Activity 在概览屏幕中的显示方法,并且无需修改此行为。
+</p>
+
+<p class="caution"><strong>注意:</strong>大多数应用都不得中断 Activity 和任务的默认行为:
+如果确定您的 Activity 必须修改默认行为,当使用“返回”按钮从其他 Activity 和任务导航回到该 Activity 时,请务必要谨慎并确保在启动期间测试该 Activity 的可用性。请确保测试导航行为是否有可能与用户的预期行为冲突。<em></em>
+
+
+</p>
+
+
+<h3 id="TaskLaunchModes">定义启动模式</h3>
+
+<p>启动模式允许您定义 Activity 的新实例如何与当前任务关联。
+您可以通过两种方法定义不同的启动模式:</p>
+<ul class="nolist">
+  <li><a href="#ManifestForTasks">使用清单文件</a>
+    <p>在清单文件中声明 Activity 时,您可以指定 Activity 在启动时应该如何与任务关联。
+</li>
+  <li><a href="#IntentFlagsForTasks">使用 Intent 标志</a>
+    <p>调用 {@link android.app.Activity#startActivity startActivity()}
+时,可以在 {@link android.content.Intent}
+中加入一个标志,用于声明新 Activity 如何(或是否)与当前任务关联。</p></li>
+</ul>
+
+<p>因此,如果 Activity
+A 启动 Activity B,则 Activity B 可以在其清单文件中定义它应该如何与当前任务关联(如果可能),并且 Activity A 还可以请求 Activity B
+应该如何与当前任务关联。如果这两个 Activity 均定义 Activity B
+应该如何与任务关联,则 Activity A 的请求(如 Intent 中所定义)优先级要高于 Activity
+B 的请求(如其清单文件中所定义)。</p>
+
+<p class="note"><strong>注:</strong>某些适用于清单文件的启动
+模式不可用作 Intent 标志,同样,某些可用作 Intent 
+标志的启动模式无法在清单文件中定义。</p>
+
+
+<h4 id="ManifestForTasks">使用清单文件</h4>
+
+<p>在清单文件中声明 Activity 时,您可以使用 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+元素的 <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
+launchMode}</a>
+属性指定 Activity 应该如何与任务关联。</p>
+
+<p><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
+launchMode}</a>
+属性指定有关应如何将 Activity 启动到任务中的指令。您可以分配给
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">launchMode</a></code>
+属性的启动模式共有四种:</p>
+
+<dl>
+<dt>{@code "standard"}(默认模式)</dt>
+  <dd>默认。系统在启动 Activity 的任务中创建 Activity 的新实例并向其传送
+ Intent。Activity 可以多次实例化,而每个实例均可属于不同的任务,并且一个任务可以拥有多个实例。
+</dd>
+<dt>{@code "singleTop"}</dt>
+  <dd>如果当前任务的顶部已存在 Activity 的一个实例,则系统会通过调用该实例的
+{@link
+android.app.Activity#onNewIntent onNewIntent()}
+方法向其传送 Intent,而不是创建 Activity 的新实例。Activity 可以多次实例化,而每个实例均可属于不同的任务,并且一个任务可以拥有多个实例(但前提是位于返回栈顶部的 Activity 并不是 Activity 的现有实例)。<em></em>
+
+
+  <p>例如,假设任务的返回栈包含根 Activity A 以及 Activity B、C
+和位于顶部的 D(堆栈是 A-B-C-D;D 位于顶部)。收到针对 D 类 Activity 的 Intent。如果 D
+具有默认的 {@code "standard"} 启动模式,则会启动该类的新实例,且堆栈会变成 A-B-C-D-D。但是,如果 D 的启动模式是 {@code "singleTop"},则 D
+的现有实例会通过 {@link
+android.app.Activity#onNewIntent onNewIntent()} 接收 Intent,因为它位于堆栈的顶部;而堆栈仍为
+A-B-C-D。但是,如果收到针对 A 类 Activity 的 Intent,则会向堆栈添加 B 的新实例,即便其启动模式为 {@code "singleTop"} 也是如此。
+
+</p>
+  <p class="note"><strong>注:</strong>为某个 Activity 创建新实例时,用户可以按“返回”按钮返回到前一个 Activity。<em></em>
+但是,当 Activity 的现有实例处理新
+ Intent 时,则在新 Intent 到达
+{@link android.app.Activity#onNewIntent
+onNewIntent()}
+之前,用户无法按“返回”<em></em>按钮返回到 Activity 的状态。
+</p>
+</dd>
+
+<dt>{@code "singleTask"}</dt>
+  <dd>系统创建新任务并实例化位于新任务底部的 Activity。但是,如果该 Activity 的一个实例已存在于一个单独的任务中,则系统会通过调用现有实例的 {@link
+android.app.Activity#onNewIntent
+onNewIntent()} 方法向其传送
+ Intent,而不是创建新实例。一次只能存在 Activity 的一个实例。
+
+  <p class="note"><strong>注:</strong>尽管 Activity 在新任务中启动,但是用户按“返回”<em></em>按钮仍会返回到前一个 Activity。
+</p></dd>
+<dt>{@code "singleInstance"}。</dt>
+  <dd>与
+{@code "singleTask"} 相同,只是系统不会将任何其他 Activity 启动到包含实例的任务中。该 Activity 始终是其任务唯一仅有的成员;由此 Activity 启动的任何 Activity 均在单独的任务中打开。
+</dd>
+</dl>
+
+
+<p>我们再来看另一示例,Android 浏览器
+应用声明 Web 浏览器 Activity 应始终在其自己的任务中打开(通过在 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 元素中指定 {@code singleTask}
+启动模式)。这意味着,如果您的应用发出打开
+Android 浏览器的
+ Intent,则其 Activity 与您的应用位于不同的任务中。<em></em>相反,系统会为浏览器启动新任务,或者如果浏览器
+已有任务正在后台运行,则会将该任务上移一层以处理新
+ Intent。</p>
+
+<p>无论 Activity 是在新任务中启动,还是在与启动 Activity 相同的任务中启动,用户按“返回”<em></em>按钮始终会转到前一个 Activity。
+但是,如果启动指定
+{@code singleTask}
+启动模式的 Activity,则当某后台任务中存在该 Activity 的实例时,整个任务都会转移到前台。此时,返回栈包括上移到堆栈顶部的任务中的所有 Activity。
+
+图 4 显示了这种情况。</p>
+
+<img src="{@docRoot}images/fundamentals/diagram_backstack_singletask_multiactivity.png" alt="" />
+<p class="img-caption"><strong>图 4. </strong>显示如何将启动模式为“singleTask”的 Activity 添加到返回栈。
+如果 Activity 已经是某个拥有自己的返回栈的后台任务的一部分,则整个返回栈也会上移到当前任务的顶部。
+
+</p>
+
+<p>如需了解有关在清单文件中使用启动模式的详细信息,请参阅
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+元素文档,其中更详细地讨论了 {@code launchMode}
+属性和可接受的值。</p>
+
+<p class="note"><strong>注:</strong>使用 <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
+属性为 Activity 指定的行为可由 Intent 
+附带的 Activity 启动标志替代,下文将对此进行讨论。</p>
+
+
+
+<h4 id="#IntentFlagsForTasks">使用 Intent 标志</h4>
+
+<p>启动 Activity 时,您可以通过在传递给 {@link
+android.app.Activity#startActivity startActivity()} 的 Intent 
+中加入相应的标志,修改 Activity 与其任务的默认关联方式。可用于修改默认行为的标志包括:
+</p>
+
+<p>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</dt>
+    <dd>在新任务中启动 Activity。如果已为正在启动的 Activity 运行任务,则该任务会转到前台并恢复其最后状态,同时 Activity 会在
+{@link android.app.Activity#onNewIntent onNewIntent()} 中收到新
+ Intent。
+    <p>正如前文所述,这会产生与 {@code "singleTask"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
+值相同的行为。</p></dd>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</dt>
+    <dd>如果正在启动的 Activity 是当前 Activity(位于返回栈的顶部),则
+现有实例会接收对 {@link android.app.Activity#onNewIntent onNewIntent()}
+的调用,而不是创建 Activity 的新实例。
+    <p>正如前文所述,这会产生与 {@code "singleTop"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
+值相同的行为。</p></dd>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</dt>
+    <dd>如果正在启动的 Activity 已在当前任务中运行,则会销毁当前任务顶部的所有 Activity,并通过 {@link android.app.Activity#onNewIntent onNewIntent()}
+将此 Intent 传递给 Activity 已恢复的实例(现在位于顶部),而不是启动该 Activity 的新实例。
+
+
+    <p>产生这种行为的 <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a>
+属性没有值。</p>
+    <p>{@code FLAG_ACTIVITY_CLEAR_TOP} 通常与
+{@code FLAG_ACTIVITY_NEW_TASK}
+结合使用。一起使用时,通过这些标志,可以找到其他任务中的现有 Activity,并将其放入可从中响应 Intent 
+的位置。 </p>
+    <p class="note"><strong>注:</strong>如果指定 Activity 的启动模式为
+{@code "standard"},则该 Activity 也会从堆栈中删除,并在其位置启动一个新实例,以便处理传入的 Intent。
+
+这是因为当启动模式为 {@code "standard"}
+时,将始终为新 Intent 创建新实例。 </p>
+</dd>
+</dl>
+
+
+
+
+
+<h3 id="Affinities">处理关联</h3>
+
+<p>“关联”指示 Activity 优先属于哪个任务。<em></em>默认情况下,同一应用中的所有 Activity 彼此关联。
+因此,默认情况下,同一应用中的所有 Activity 优先位于相同任务中。
+不过,您可以修改 Activity 的默认关联。
+在不同应用中定义的 Activity 可以共享关联,或者可为在同一应用中定义的 Activity 分配不同的任务关联。
+
+</p>
+
+<p>可以使用 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+元素的
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a> 属性修改任何给定 Activity 的关联。</p>
+
+<p><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
+属性取字符串值,该值必须不同于
+在<a href="{@docRoot}guide/topics/manifest/manifest-element.html">
+{@code &lt;manifest&gt;}
+</a>元素中声明的默认软件包名称,因为系统使用该名称标识应用的默认任务关联。
+</p>
+
+<p>在两种情况下,关联会起作用:</p>
+<ul>
+  <li>启动 Activity 的 Intent 包含
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}
+标志。
+
+<p>默认情况下,新 Activity 会启动到调用
+{@link android.app.Activity#startActivity startActivity()} 的 Activity 任务中。它将推入与调用方相同的返回栈。
+但是,如果传递给
+{@link android.app.Activity#startActivity startActivity()}
+的 Intent 包含 {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}
+标志,则系统会寻找其他任务来储存新 Activity。这通常是新任务,但未做强制要求。
+如果现有任务与新 Activity 具有相同关联,则会将 Activity 启动到该任务中。
+否则,将开始新任务。</p>
+
+<p>如果此标志导致 Activity 开始新任务,且用户按“主页”按钮离开,则必须为用户提供导航回任务的方式。<em></em>
+
+有些实体(如通知管理器)始终在外部任务中启动 Activity,而从不作为其自身的一部分启动 Activity,因此它们始终将
+{@code FLAG_ACTIVITY_NEW_TASK} 放入传递给
+{@link android.app.Activity#startActivity startActivity()}
+的 Intent 中。请注意,如果 Activity 能够由可以使用此标志的外部实体调用,则用户可以通过独立方式返回到启动的任务,例如,使用启动器图标(任务的根 Activity 具有
+{@link android.content.Intent#CATEGORY_LAUNCHER}
+ Intent 过滤器;请参阅下面的<a href="#Starting">启动任务</a>部分)。
+
+</p>
+</li>
+
+  <li>Activity 将其<a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">
+{@code allowTaskReparenting}</a> 属性设置为 {@code "true"}。
+  <p>在这种情况下,Activity 可以从其启动的任务移动到与其具有关联的任务(如果该任务出现在前台)。
+</p>
+  <p>例如,假设将报告所选城市天气状况的 Activity 定义为旅行应用的一部分。
+它与同一应用中的其他 Activity 具有相同的关联(默认应用关联),并允许利用此属性重定父级。当您的一个 Activity 启动天气预报 Activity 时,它最初所属的任务与您的 Activity 相同。
+
+
+但是,当旅行应用的任务出现在前台时,系统会将天气预报 Activity 重新分配给该任务并显示在其中。
+</p>
+</li>
+</ul>
+
+<p class="note"><strong>提示</strong>:如果从用户的角度来看,一个 {@code .apk}
+文件包含多个“应用”,则您可能需要使用 <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a>
+属性将不同关联分配给与每个“应用”相关的 Activity。</p>
+
+
+
+<h3 id="Clearing">清理返回栈</h3>
+
+<p>如果用户长时间离开任务,则系统会清除所有 Activity 的任务,根任务除外。
+当用户再次返回到任务时,仅恢复根 Activity。系统这样做的原因是,经过很长一段时间后,用户可能已经放弃之前执行的操作,返回到任务是要开始执行新的操作。
+
+ </p>
+
+<p>您可以使用下列几个 Activity 属性修改此行为: </p>
+
+<dl>
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#always">alwaysRetainTaskState</a></code>
+</dt>
+<dd>如果在任务的根 Activity 中将此属性设置为 {@code "true"},则不会发生刚才所述的默认行为。即使在很长一段时间后,任务仍将所有 Activity 保留在其堆栈中。
+
+</dd>
+
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#clear">clearTaskOnLaunch</a></code></dt>
+<dd>如果在任务的根 Activity 中将此属性设置为 {@code "true"},则每当用户离开任务然后返回时,系统都会将堆栈清除到只剩下根 Activity。
+
+换而言之,它与<a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
+{@code alwaysRetainTaskState}</a> 正好相反。
+即使只离开任务片刻时间,用户也始终会返回到任务的初始状态。
+</dd>
+
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTaskLaunch</a></code>
+</dt>
+<dd>此属性类似于
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">{@code clearTaskOnLaunch}</a>,但它对单个 Activity 起作用,而非整个任务。
+此外,它还有可能会导致任何 Activity 停止,包括根 Activity。
+设置为 {@code "true"}
+时,Activity 仍是任务的一部分,但是仅限于当前会话。如果用户离开然后返回任务,则任务将不复存在。
+</dd>
+</dl>
+
+
+
+
+<h3 id="Starting">启动任务</h3>
+
+<p>通过为 Activity 提供一个以 {@code "android.intent.action.MAIN"}
+为指定操作、以{@code "android.intent.category.LAUNCHER"}
+为指定类别的 Intent 过滤器,您可以将活动设置为任务的入口点。
+例如:</p>
+
+<pre>
+&lt;activity ... &gt;
+    &lt;intent-filter ... &gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+    ...
+&lt;/activity&gt;
+</pre>
+
+<p>此类 Intent 过滤器会使 Activity 的图标和标签显示在应用启动器中,让用户能够启动 Activity 并在启动之后随时返回到创建的任务中。
+
+
+</p>
+
+<p>第二个功能非常重要:用户必须能够在离开任务后,再使用此 Activity 启动器返回该任务。
+因此,只有在 Activity 具有
+{@link android.content.Intent#ACTION_MAIN}
+和 {@link android.content.Intent#CATEGORY_LAUNCHER}
+过滤器时,才应该使用将 Activity 标记为“始终启动任务”的两种<a href="#LaunchModes">启动模式</a>,即 {@code "singleTask"} 和
+{@code "singleInstance"}。例如,我们可以想像一下如果缺少过滤器会发生什么情况:
+ Intent 启动一个 {@code "singleTask"}
+Activity,从而启动一个新任务,并且用户花了些时间处理该任务。然后,用户按<em>主页</em>按钮。
+任务现已发送到后台,而且不可见。现在,用户无法返回到任务,因为该任务未显示在应用启动器中。
+</p>
+
+<p>如果您并不想用户能够返回到 Activity,对于这些情况,请将
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+元素的
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">{@code finishOnTaskLaunch}</a>
+设置为 {@code "true"}(请参阅<a href="#Clearing">清理堆栈</a>)。</p>
+
+<p>有关如何在概览屏幕中显示和管理任务与 Activity 的更多信息,请参阅<a href="{@docRoot}guide/components/recents.html">概览屏幕</a>。
+
+</p>
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For more information about how to use intents to
+activate other application components and publish the intents to which your components
+respond, continue with the <b><a
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent
+Filters</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/zh-cn/guide/index.jd b/docs/html-intl/intl/zh-cn/guide/index.jd
new file mode 100644
index 0000000..01ab347
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/index.jd
@@ -0,0 +1,74 @@
+page.title=Android 简介
+
+@jd:body
+
+
+<div class="sidebox" style="width:220px"><!-- width to match col-4 below -->
+<p>要了解应用的工作原理,请从<a href="{@docRoot}guide/components/fundamentals.html">应用基础知识</a>开始入手。
+</p>
+<p>要立即开始编码,请仔细阅读<a href="{@docRoot}training/basics/firstapp/index.html">开发您的第一款应用</a>。</p>
+</div>
+
+<p>Android
+提供了一个内容丰富的应用框架,支持您在 Java 语言环境中为移动设备开发创新应用和游戏。在左侧导航窗格列出的文档中,提供了有关如何使用各种
+Android API 开发应用的详细信息。</p>
+
+<p>如果您是 Android 应用开发新手,则需了解以下有关
+Android 应用框架的基本概念,这一点至关重要:</p>
+
+
+<div class="landing-banner">
+
+<div class="col-6">
+
+<h4>应用提供多个入口点</h4>
+
+<p>Android
+应用都是将各种可单独调用的不同组件加以组合构建而成。例如,组件可以是为用户界面提供一个屏幕的单个“Activity”,也可以是在后台独立执行工作的“服务”。
+
+<em></em><em></em></p>
+
+<p>您可以使用<em> Intent </em>从一个组件启动另一个组件。甚至,您还可以启动不同应用中的组件,例如,启动地图应用中的 Activity 以显示地址。
+此模式可为单个应用提供多个入口点,并使任何应用均能够像用户“默认设置”一样处理其他应用可能调用的操作。
+
+</p>
+
+
+<p><b>了解详情</b>:</p>
+<ul class="nolist">
+<li><a href="{@docRoot}guide/components/fundamentals.html">应用基础知识</a>
+<li><a href="{@docRoot}guide/components/intents-filters.html">Intent 和 Intent 过滤器</a>
+<li><a href="{@docRoot}guide/components/activities.html">Activity</a>
+</ul>
+
+</div>
+
+
+<div class="col-6">
+
+<h4>应用可适应不同的设备</h4>
+
+<p>Android
+提供了一个自适应应用框架,您可以利用它为不同的设备配置提供独特的资源。例如,您可以针对不同的屏幕尺寸创建不同的
+XML
+布局文件,系统将根据当前设备的屏幕尺寸确定要应用的布局。</p>
+
+<p>如有任何应用功能需要相机等特定的硬件,则可在运行时查询设备功能的可用性。
+如有必要,您还可以声明您的应用所必需的功能,使
+Google Play
+商店等应用市场不得在不支持这些功能的设备上安装您的应用。</p>
+
+
+<p><b>了解详情</b>:</p>
+<ul class="nolist">
+<li><a href="{@docRoot}guide/practices/compatibility.html">设备兼容性</a>
+<li><a href="{@docRoot}guide/topics/resources/overview.html">资源概览</a>
+<li><a href="{@docRoot}guide/topics/ui/overview.html">用户界面概览</a>
+</ul>
+
+</div>
+
+</div><!-- end landing-banner -->
+
+
+
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/manifest/manifest-intro.jd b/docs/html-intl/intl/zh-cn/guide/topics/manifest/manifest-intro.jd
new file mode 100644
index 0000000..c7ade4f
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/manifest/manifest-intro.jd
@@ -0,0 +1,517 @@
+page.title=应用清单文件
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本文内容</h2>
+<ol>
+<li><a href="#filestruct">清单文件结构</a></li>
+<li><a href="#filec">文件约定</a>
+<li><a href="#filef">文件功能</a>
+	<ol>
+	<li><a href="#ifs"> Intent 过滤器</a></li>
+	<li><a href="#iconlabel">图标和标签</a></li>
+	<li><a href="#perms">权限</a></li>
+	<li><a href="#libs">库</a></li>
+	</ol></li>
+</ol>
+</div>
+</div>
+
+<p>
+  每个应用的根目录中都必须包含一个
+AndroidManifest.xml 文件(且文件名精确无误)。 <span itemprop="description">清单文件为
+Android 系统提供有关您的应用的基本信息,系统必须获得这些信息才能运行任意应用代码。
+
+</span> 此外,清单文件还可执行以下操作:
+</p>
+
+<ul>
+<li>为应用的 Java
+软件包命名。软件包名称充当应用的唯一标识符</li>
+
+<li>描述应用的各个组件,即:构成应用的 Activity、服务、广播接收器和内容提供程序。
+
+为实现每个组件的类命名并发布其功能(例如,它们可以处理的
+{@link android.content.Intent 
+Intent} 消息)。根据这些声明,Android
+系统可以了解这组件具体是什么,以及在什么条件下可以启动它们</li>
+
+<li>确定将托管应用组件的进程</li>  
+
+<li>声明应用必须具备哪些权限才能访问
+API 中受保护的部分并与其他应用交互</li>  
+
+<li>还声明其他应用与该应用组件交互所需具备的权限
+</li>
+
+<li>列出 {@link android.app.Instrumentation}
+类,这些类可在应用运行期间提供分析和其他信息。这些声明只会在应用处在开发和测试阶段时出现在清单文件中;它们会在应用发布之前被删除
+
+</li>
+
+<li>声明应用所需的最低 Android API
+级别</li>
+
+<li>列出应用必须链接到的库</li>
+</ul>
+
+
+<h2 id="filestruct">清单文件结构</h2>
+
+<p>
+下图显示了清单文件的通用结构及其可包含的每个元素。
+每个元素及其所有属性全部记录在一个单独的文件中。
+要查看有关任何元素的详细信息,请点击该图中或其后按字母顺序排列的元素列表中相应的元素名称,或者点击任何其他地方提到的相应元素名称。
+
+
+ 
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
+
+    <a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration /&gt;</a>  <!-- ##api level 3## -->
+    <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature /&gt;</a>  <!-- ##api level 4## -->
+    <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens /&gt;</a>  <!-- ##api level 4## -->
+    <a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html">&lt;compatible-screens /&gt;</a>  <!-- ##api level 9## -->
+    <a href="{@docRoot}guide/topics/manifest/supports-gl-texture-element.html">&lt;supports-gl-texture /&gt;</a>  <!-- ##api level 11## -->
+
+    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action /&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category /&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;/activity&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;/activity-alias&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data/&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;/service&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;/receiver&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/path-permission-element.html">&lt;path-permission /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;/provider&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library /&gt;</a>
+
+    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;/application&gt;</a>
+
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;/manifest&gt;</a>
+</pre>
+
+<p>
+可出现在清单文件中的所有元素按字母顺序罗列如下。
+这些是仅有的合法元素;您无法添加自己的元素或属性。
+  
+</p>
+
+<p style="margin-left: 2em">
+<code><a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens&gt;</a></code>  <!-- ##api level 4## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration&gt;</a></code>  <!-- ##api level 3## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature&gt;</a></code>  <!-- ##api level 4## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</a></code>
+</p>
+
+
+    
+
+<h2 id="filec">文件约定</h2>
+
+<p>
+有些约定和规则普遍适用于清单文件中的所有元素和属性:
+
+</p>
+
+<dl>
+<dt><b>元素</b></dt>
+<dd>只有
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> 和
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+元素是必需的,它们都必须存在并且只能出现一次。其他大部分元素可以出现多次或者根本不出现,即便清单文件中必须至少存在其中某些元素才能完成任何有意义的操作也是如此。
+
+
+
+
+<p>
+如果一个元素包含某些内容,也就包含其他元素。所有值均通过属性进行设置,而不是通过元素内的字符数据设置。
+
+</p>
+
+<p>
+同一级别的元素通常不分先后顺序。例如,<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>、<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+和
+<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+元素可以按任何顺序混合在一起。
+(<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
+元素不适用此规则:
+它必须跟在别名所指的
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+之后。)
+</p></dd>
+
+<dt><b>属性</b></dt>
+<dd>从某种意义上说,所有属性都是可选的。但是,有些属性必须指定给元素以实现其目的。
+请使用本文档作为参考。
+对于真正可选的属性,它将指定默认值或声明缺乏规范时将执行何种操作。
+
+
+<p>除了根
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+元素的一些属性外,所有属性名称均以 {@code android:}
+前缀开头,例如,{@code android:alwaysRetainTaskState}。由于该前缀是通用的,因此在按名称引用属性时,本文档通常会将其忽略。
+
+</p></dd>
+
+<dt><b>声明类名</b></dt>
+<dd>许多元素对应于
+Java
+对象,其中包括应用本身的元素(<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+元素)及其主要组件
+&mdash;
+Activity
+(<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>)、服务
+(<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>)、广播接收器
+(<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>)
+以及内容提供程序
+(<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>)。  
+
+<p>
+如果按照您针对组件类({@link android.app.Activity}、{@link android.app.Service}、{@link android.content.BroadcastReceiver}
+和
+{@link android.content.ContentProvider})几乎一直采用的方式来定义子类,则该子类需通过 {@code name} 属性来声明。
+该名称必须包含完整的软件包名称。
+例如,{@link android.app.Service}
+子类可能会声明如下:
+</p>
+
+<pre>&lt;manifest . . . &gt;
+    &lt;application . . . &gt;
+        &lt;service android:name="com.example.project.SecretService" . . . &gt;
+            . . .
+        &lt;/service&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+但是,为了简便起见,如果字符串的第一个字符是句点,则字符串将追加到应用的软件包名称(正如
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+元素的
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code>
+属性中所指定)。
+以下赋值与上述方法相同: 
+</p>
+
+<pre>&lt;manifest package="com.example.project" . . . &gt;
+    &lt;application . . . &gt;
+        &lt;service android:name=".SecretService" . . . &gt;
+            . . .
+        &lt;/service&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+当启动组件时,Android 会创建已命名子类的实例。如果未指定子类,则会创建基类的实例。
+
+</p></dd>
+
+<dt><b>多个值</b></dt>
+<dd>如果可以指定多个值,则几乎总是在重复此元素,而不是列出单个元素内的多个值。
+例如,Intent 过滤器可以列出多个操作:
+
+
+<pre>&lt;intent-filter . . . &gt;
+    &lt;action android:name="android.intent.action.EDIT" /&gt;
+    &lt;action android:name="android.intent.action.INSERT" /&gt;
+    &lt;action android:name="android.intent.action.DELETE" /&gt;
+    . . .
+&lt;/intent-filter&gt;</pre></dd>
+
+<dt><b>资源值</b></dt>
+<dd>某些属性的值可以显示给用户,例如,Activity 的标签和图标。
+这些属性的值应该本地化,因此需要通过资源或主题进行设置。
+资源值用以下格式表示:
+</p>
+
+<p style="margin-left: 2em">{@code @[<i>package</i>:]<i>type</i>:<i>name</i>}</p>
+
+<p>
+其中,如果资源与应用位于同一软件包中,则可忽略 <i>package</i> 名称;
+ <i>type</i> 是资源类型,如“字串符”或“图片”;
+ <i>name</i> 是标识特定资源的名称。例如:
+
+</p>
+
+<pre>&lt;activity android:icon="@drawable/smallPic" . . . &gt</pre>
+
+<p>
+主题中的值用类似的方法表示,但是以“{@code ?}”开头而不是“{@code @}”:
+
+</p>
+
+<p style="margin-left: 2em">{@code ?[<i>package</i>:]<i>type</i>:<i>name</i>}
+</p></dd>
+
+<dt><b>字串符值</b></dt>
+<dd>如果属性值为字串符,则必须使用双反斜杠(“{@code \\}”)
+转义字符。例如,使用“{@code \\n}”表示换行符或使用“{@code \\uxxxx}”表示
+Unicode 字符)。</dd>
+</dl>
+
+
+<h2 id="filef">文件功能</h2>
+
+<p>
+下文介绍如何在清单文件中利用某些
+Android 特性。
+</p>
+
+
+<h3 id="ifs"> Intent 过滤器</h3>
+
+<p>
+应用的核心组件(其 Activity、服务和广播接收器)由
+ <i>Intent </i>激活。Intent 是一系列用于描述所需操作的信息({@link android.content.Intent}
+对象),其中包括要执行操作的数据、应执行操作的组件类别以及其他相关说明。
+
+Android
+会找到合适的组件来响应
+ Intent,根据需要启动组件的新实例,并将其传递到
+ Intent 对象。
+</p>
+
+<p>
+组件将通过“Intent 过滤器”公布其功能,即它们可响应的 Intent 类型。
+ <i></i> 由于
+Android 系统在启动某组件之前必须了解该组件可以处理哪些 Intent,因此 Intent 过滤器在清单文件中被指定为
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+元素。
+一个组件可能有任意数量的过滤器,其中每个过滤器描述一种不同的功能。
+
+</p>
+
+<p>
+显式命名目标组件的
+ Intent 将激活该组件;过滤器不起作用。但是,不按名称指定目标的
+ Intent 
+只有在能够通过组件的一个过滤器时才可激活该组件。
+</p>
+
+<p>
+有关如何根据
+ Intent 过滤器测试
+ Intent 对象的信息,请参阅单独的文档
+<a href="{@docRoot}guide/components/intents-filters.html"> Intent 和 Intent 过滤器</a>。
+</p>
+
+
+<h3 id="iconlabel">图标和标签</h3>
+
+<p>
+对于可以显示给用户的小图标和文本标签,大量元素具有 {@code icon} 和 {@code label}
+属性。此外,对于同样可以显示在屏幕上的较长说明文本,某些元素还具有
+{@code description}
+属性。例如,<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+元素具有所有这三个属性。因此,当系统询问用户是否授权给请求获得权限的应用时,权限图标、权限名称以及所需信息的说明均可呈现给用户。
+
+
+
+
+</p>
+
+<p>
+无论何种情况下,在包含元素中设置的图标和标签都将成为所有容器子元素的默认
+{@code icon} 和 {@code label} 设置。因此,在
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+元素中设置的图标和标签是每个应用组件的默认图标和标签。
+同样,为组件(例如,<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+元素)设置的图标和标签是组件每个
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+元素的默认设置。
+
+如果 <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 元素设置标签,但是 Activity 及其
+ Intent 过滤器不执行此操作,则应用标签将被视为 Activity 和
+ Intent 过滤器的标签。
+
+
+</p>
+
+<p>
+在实现 Intent 过滤器公布的功能时,只要向用户呈现组件,系统便会使用为过滤器设置的图标和标签表示该组件。
+
+例如,具有“{@code android.intent.action.MAIN}”和“{@code android.intent.category.LAUNCHER}”设置的过滤器将 Activity 公布为可启动应用的功能,即,公布为应显示在应用启动器中的功能。
+
+
+
+因此,在过滤器中设置的图标和标签就是显示在启动器中的图标和标签。
+
+</p>
+
+
+<h3 id="perms">权限</h3>
+
+<p>
+  <i>权限</i> 是一种限制,用于限制对部分代码或设备上数据的访问。
+   施加限制是为了保护可能被误用以致破坏或损害用户体验的关键数据和代码。
+  
+</p>
+
+<p>
+每种权限均由一个唯一的标签标识。标签通常指示受限制的操作。
+例如,以下是由
+Android 定义的一些权限:
+</p>
+
+<p style="margin-left: 2em">{@code android.permission.CALL_EMERGENCY_NUMBERS}
+<br/>{@code android.permission.READ_OWNER_DATA}
+<br/>{@code android.permission.SET_WALLPAPER}
+<br/>{@code android.permission.DEVICE_POWER}</p>
+
+<p>
+一个功能最多只能由一种权限保护。
+</p>
+
+<p>
+如果应用需要访问受权限保护的功能,则必须在清单文件中使用
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+元素声明应用需要该权限。
+但是,将应用安装到设备上之后,安装程序会通过检查签署应用证书的颁发机构并(在某些情况下)询问用户,确定是否授予请求的权限。
+
+
+如果授予权限,则应用能够使用受保护的功能。
+
+否则,其访问这些功能的尝试将会失败,并且不会向用户发送任何通知。
+ 
+</p>
+
+<p>
+此外,应用也可以使用权限保护自己的组件(Activity、服务、广播接收器和内容提供程序)。
+它可以采用由
+Android
+定义(如
+{@link android.Manifest.permission android.Manifest.permission} 中所列)或由其他应用声明的任何权限。或者,它也可以定义自己的权限。新权限用
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+元素来声明。
+例如,Activity 可受到如下保护:
+</p>
+
+<pre>
+&lt;manifest . . . &gt;
+    &lt;permission android:name="com.example.project.DEBIT_ACCT" . . . /&gt;
+    &lt;uses-permission android:name="com.example.project.DEBIT_ACCT" /&gt;
+    . . .
+    &lt;application . . .&gt;
+        &lt;activity android:name="com.example.project.FreneticActivity"
+                  android:permission="com.example.project.DEBIT_ACCT"
+                  . . . &gt;
+            . . .
+        &lt;/activity&gt;
+    &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+
+<p>
+请注意,在此示例中,{@code DEBIT_ACCT}
+权限不仅是通过
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+元素来声明,而且其使用也是通过
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+元素来请求。要让应用的其他组件也能够启动受保护的 Activity,就必须请求其使用权限,即便保护是由应用本身施加的亦如此。
+
+  
+</p>
+
+<p>
+同样还是在此示例中,如果将
+{@code permission}
+属性设置为在其他位置(例如,{@code android.permission.CALL_EMERGENCY_NUMBERS})声明的权限,则无需使用
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+元素再次声明。
+但是,仍有必要通过
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 请求使用它。 
+</p>
+
+<p>
+<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
+元素为一组将在代码中定义的权限声明命名空间。
+
+同时,
+<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+为一组权限(包括在清单文件中使用
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+元素声明的权限以及在其他位置声明的权限)定义标签。它只影响如何对提供给用户的权限进行分组。
+<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+元素并不指定哪些权限属于该组,而只是为组提供名称。
+
+通过向
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+元素的
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code>
+属性分配组名,将权限放入组中。
+
+</p>
+
+
+<h3 id="libs">库</h3>
+
+<p>
+每个应用均链接到默认的 Android 库,该库中包括构建应用(以及通用类,如 Activity、服务、 Intent 、视图、按钮、应用、ContentProvider 等)的基本软件包。
+
+
+
+</p>
+
+<p>
+但是,某些软件包驻留在自己的库中。如果应用使用来自其中任一软件包的代码,则必须明确要求其链接到这些软件包。
+
+清单文件必须包含单独的
+<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
+元素来命名其中每个库。(库名称可在软件包的文档中找到。)
+
+</p>
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/providers/calendar-provider.jd b/docs/html-intl/intl/zh-cn/guide/topics/providers/calendar-provider.jd
new file mode 100644
index 0000000..5968284
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/providers/calendar-provider.jd
@@ -0,0 +1,1184 @@
+page.title=日历提供程序
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+    <h2>本文内容</h2>
+    <ol>
+  <li><a href="#overview">基础知识</a></li>
+  <li><a href="#manifest">用户权限</a></li>
+  <li><a href="#calendar">日历表</a>
+<ol>
+      <li><a href="#query">查询日历</a></li>
+      <li><a href="#modify-calendar">修改日历</a></li>
+      <li><a href="#insert-calendar">插入日历</a></li>
+    </ol>
+  </li>
+  <li><a href="#events">事件表</a>
+<ol>
+      <li><a href="#add-event">添加事件</a></li>
+      <li><a href="#update-event">更新事件</a></li>
+      <li><a href="#delete-event">删除事件</a></li>
+    </ol>
+  </li>
+  <li><a href="#attendees">参加者表</a>
+<ol>
+      <li><a href="#add-attendees">添加参加者</a></li>
+    </ol>
+  </li>
+  <li><a href="#reminders">提醒表</a>
+<ol>
+      <li><a href="#add-reminders">添加提醒</a></li>
+    </ol>
+  </li>
+  <li><a href="#instances">实例表</a>
+  <ol>
+      <li><a href="#query-instances">查询实例表</a></li>
+  </ol></li>
+  <li><a href="#intents">日历 Intent 对象</a>
+  <ol>
+      <li><a href="#intent-insert">使用 Intent 对象插入事件</a></li>
+      <li><a href="#intent-edit">使用 Intent 对象编辑事件</a></li>
+      <li><a href="#intent-view">使用 Intent 对象查看日历数据</a></li>
+    </ol>
+  </li>
+  
+  <li><a href="#sync-adapter">同步适配器</a></li>
+</ol>
+
+    <h2>关键类</h2>
+    <ol>
+      <li>{@link android.provider.CalendarContract.Calendars}</li>
+      <li>{@link android.provider.CalendarContract.Events}</li>
+      <li>{@link android.provider.CalendarContract.Attendees}</li>
+      <li>{@link android.provider.CalendarContract.Reminders}</li>
+    </ol>
+</div>
+</div>
+
+<p>日历提供程序是用户日历事件的存储库。您可以利用
+Calendar Provider API
+对日历、事件、参加者、提醒等执行查询、插入、更新和删除操作。</p>
+
+
+<p>Calender Provider API 可供应用和同步适配器使用。规则因进行调用的程序类型而异。
+本文主要侧重于介绍使用
+Calendar Provider API 作为应用的情况。如需了解对各类同步适配器差异的阐述,请参阅<a href="#sync-adapter">同步适配器</a>。
+
+</p>
+
+
+<p>正常情况下,要想读取或写入日历数据,应用的清单文件必须包括<a href="#manifest">用户权限</a>中所述的适当权限。
+
+为简化常见操作的执行,日历提供程序提供了一组 Intent 对象,<a href="#intents">日历 Intent 对象</a>中对这些 Intent 做了说明。
+
+这些 Intent 对象会将用户转到日历应用,执行插入事件、查看事件和编辑事件操作。
+用户与日历应用交互,然后返回原来的应用。
+因此,您的应用不需要请求权限,也不需要提供用于查看事件或创建事件的用户界面。
+</p>
+
+<h2 id="overview">基础知识</h2>
+
+<p><a href="{@docRoot}guide/topics/providers/content-providers.html">内容提供程序</a>存储数据并使其可供应用访问。
+Android
+平台提供的内容提供程序(包括日历提供程序)通常以一组基于关系数据库模型的表格形式公开数据,在这个表格中,每一行都是一条记录,每一列都是特定类型和含义的数据。
+应用和同步适配器可以通过
+Calendar Provider API
+获得对储存用户日历数据的数据库表的读取/写入权限。</p>
+
+<p>每一个内容提供程序都会公开一个对其数据集进行唯一标识的公共
+URI(包装成一个 {@link android.net.Uri} 对象)。
+控制多个数据集(多个表)的内容提供程序会为每个数据集公开单独的 URI。
+所有提供程序 URI 都以字符串“content://”开头。
+这表示数据受内容提供程序的控制。
+日历提供程序会为其每个类(表)定义
+URI 常量。这些
+URI 的格式为 <code><em>&lt;class&gt;</em>.CONTENT_URI</code>。例如,{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}。
+</p>
+
+<p>图 1 是对日历提供程序数据模型的图形化表示。它显示了将彼此链接在一起的主要表和字段。
+</p>
+
+<img src="{@docRoot}images/providers/datamodel.png" alt="Calendar Provider Data Model" />
+<p class="img-caption"><strong>图 1. </strong>日历提供程序数据模型。</p>
+
+<p>用户可以有多个日历,可将不同类型的日历与不同类型的帐户(Google 日历、Exchange 等)关联。</p>
+
+<p>{@link android.provider.CalendarContract} 定义了日历和事件相关信息的数据模型。这些数据存储在以下所列的若干表中。</p>
+
+<table>
+  <tr>
+    <th>表(类)</th>
+    <th>描述</th>
+  </tr>
+  <tr>
+    <td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
+    
+    <td>此表储存日历特定信息。
+此表中的每一行都包含一个日历的详细信息,例如名称、颜色、同步信息等。
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Events}</td>
+    
+    <td>此表储存事件特定信息。
+此表中的每一行都包含一个事件的信息&mdash;例如事件名称、地点、开始时间、结束时间等。
+
+事件可一次性发生,也可多次重复发生。参加者、提醒和扩展属性存储在单独的表内。
+它们各自具有一个 {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID},用于引用 Events 表中的 {@link android.provider.BaseColumns#_ID}。
+
+</td>
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances}</td>
+    
+    <td>此表储存每个事件实例的开始时间和结束时间。
+此表中的每一行都表示一个事件实例。
+对于一次性事件,实例与事件为 1:1
+映射。对于重复事件,会自动生成多个行,分别对应多个事件实例。
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Attendees}</td>
+    
+    <td>此表储存事件参加者(来宾)信息。
+每一行都表示事件的一位来宾。
+它指定来宾的类型以及事件的来宾出席响应。
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Reminders}</td>
+    
+    <td>此表储存提醒/通知数据。
+每一行都表示事件的一个提醒。一个事件可以有多个提醒。
+每个事件的最大提醒数量在
+
+
+{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS}
+中指定,后者由拥有给定日历的同步适配器设置。提醒以事件发生前的分钟数形式指定,其具有一个可决定用户提醒方式的方法。
+</td>
+  </tr>
+  
+</table>
+
+<p>Calendar Provider API 以灵活、强大为设计宗旨。提供良好的最终用户体验以及保护日历及其数据的完整性也同样重要。
+
+因此,请在使用该 API
+时牢记以下要点:</p>
+
+<ul>
+
+<li><strong>插入、更新和查看日历事件。</strong>要想直接从日历提供程序插入事件、修改事件以及读取事件,您需要具备相应<a href="#manifest">权限</a>。不过,如果您开发的并不是完备的日历应用或同步适配器,则无需请求这些权限。您可以改用 Android 的日历应用支持的 Intent 对象将读取操作和写入操作转到该应用执行。当您使用 Intent 对象时,您的应用会将用户转到日历应用,在一个预填充表单中执行所需操作。
+完成操作后,用户将返回您的应用。通过将您的应用设计为通过日历执行常见操作,可以为用户提供一致、可靠的用户界面。
+
+这是推荐您采用的方法。
+如需了解详细信息,请参阅<a href="#intents">日历 Intent 对象</a>。
+</p>
+
+
+<li><strong>同步适配器。</strong>同步适配器用于将用户设备上的日历数据与其他服务器或数据源同步。
+在
+{@link android.provider.CalendarContract.Calendars} 和
+
+{@link android.provider.CalendarContract.Events}
+表中,预留了一些供同步适配器使用的列。提供程序和应用不应修改它们。实际上,除非以同步适配器形式进行访问,否则它们处于不可见状态。
+如需了解有关同步适配器的详细信息,请参阅<a href="#sync-adapter">同步适配器</a>。
+</li>
+
+</ul>
+
+
+<h2 id="manifest">用户权限</h2>
+
+<p>如需读取日历数据,应用必须在其清单文件中加入 {@link
+android.Manifest.permission#READ_CALENDAR} 权限。文件中必须包括用于删除、插入或更新日历数据的
+{@link android.Manifest.permission#WRITE_CALENDAR}
+权限:</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;...&gt;
+    &lt;uses-sdk android:minSdkVersion=&quot;14&quot; /&gt;
+    &lt;uses-permission android:name=&quot;android.permission.READ_CALENDAR&quot; /&gt;
+    &lt;uses-permission android:name=&quot;android.permission.WRITE_CALENDAR&quot; /&gt;
+    ...
+&lt;/manifest&gt;
+</pre>
+
+
+<h2 id="calendar">日历表</h2>
+
+<p>{@link android.provider.CalendarContract.Calendars} 表包含各日历的详细信息。
+应用和<a href="#sync-adapter">同步适配器</a>均可写入下列日历列。
+如需查看所支持字段的完整列表,请参阅
+
+{@link android.provider.CalendarContract.Calendars} 参考资料。</p>
+<table>
+  <tr>
+    <th>常量</th>
+    <th>描述</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#NAME}</td>
+    <td>日历的名称。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#CALENDAR_DISPLAY_NAME}</td>
+    <td>该日历显示给用户时使用的名称。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
+    
+    <td>表示是否选择显示该日历的布尔值。值为 0 表示不应显示与该日历关联的事件。
+
+值为 1
+表示应该显示与该日历关联的事件。此值影响 {@link
+android.provider.CalendarContract.Instances} 表中行的生成。</td>
+
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
+    
+    <td>一个布尔值,表示是否应同步日历并将其事件存储在设备上。
+值为 0
+表示不同步该日历,也不将其事件存储在设备上。值为 1
+表示同步该日历的事件,并将其事件存储在设备上。</td>
+  </tr>
+</table>
+
+<h3 id="query">查询日历</h3>
+
+<p>以下示例说明了如何获取特定用户拥有的日历。
+为了简便起见,在此示例中,查询操作显示在用户界面线程(“主线程”)中。
+实际上,此操作应该在一个异步线程而非主线程中完成。
+如需查看更详细的介绍,请参阅<a href="{@docRoot}guide/components/loaders.html">加载器</a>。
+如果您的目的不只是读取数据,还要修改数据,请参阅 {@link android.content.AsyncQueryHandler}。
+
+</p>
+
+
+<pre>
+// Projection array. Creating indices for this array instead of doing
+// dynamic lookups improves performance.
+public static final String[] EVENT_PROJECTION = new String[] {
+    Calendars._ID,                           // 0
+    Calendars.ACCOUNT_NAME,                  // 1
+    Calendars.CALENDAR_DISPLAY_NAME,         // 2
+    Calendars.OWNER_ACCOUNT                  // 3
+};
+  
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
+private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
+private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
+  
+
+<div class="sidebox-wrapper"> <div class="sidebox"> <h3>为何必须加入
+ACCOUNT_TYPE?</h3> <p>如果您查询 {@link
+android.provider.CalendarContract.Calendars#ACCOUNT_NAME
+Calendars.ACCOUNT_NAME},还必须将
+{@link android.provider.CalendarContract.Calendars#ACCOUNT_TYPE Calendars.ACCOUNT_TYPE}
+加入选定范围。这是因为,对于给定帐户,只有在同时指定其
+<code>ACCOUNT_NAME</code> 及其 <code>ACCOUNT_TYPE</code>
+的情况下,才能将其视为唯一帐户。<code>ACCOUNT_TYPE</code>
+字符串对应于在 {@link android.accounts.AccountManager}
+处注册帐户时使用的帐户验证器。还有一种名为 {@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
+的特殊帐户类型,用于未关联设备帐户的日历。{@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
+帐户不会进行同步。</p> </div> </div> 
+
+
+<p> 在示例的下一部分,您需要构建查询。选定范围指定查询的条件。
+在此示例中,查询寻找的是
+<code>ACCOUNT_NAME</code>
+为“sampleuser@google.com”、<code>ACCOUNT_TYPE</code>
+为“com.google”、<code>OWNER_ACCOUNT</code>
+为“sampleuser@google.com”的日历。如果您想查看用户查看过的所有日历,而不只是用户拥有的日历,请省略
+<code>OWNER_ACCOUNT</code>。您可以利用查询返回的
+{@link android.database.Cursor}
+对象遍历数据库查询返回的结果集。
+如需查看有关在内容提供程序中使用查询的详细介绍,请参阅<a href="{@docRoot}guide/topics/providers/content-providers.html">内容提供程序</a>。
+</p>
+
+
+<pre>// Run query
+Cursor cur = null;
+ContentResolver cr = getContentResolver();
+Uri uri = Calendars.CONTENT_URI;   
+String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND (" 
+                        + Calendars.ACCOUNT_TYPE + " = ?) AND ("
+                        + Calendars.OWNER_ACCOUNT + " = ?))";
+String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
+        "sampleuser@gmail.com"}; 
+// Submit the query and get a Cursor object back. 
+cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
+
+<p>以下后续部分使用游标单步调试结果集。它使用在示例开头设置的常量来返回每个字段的值。
+
+</p>
+    
+<pre>// Use the cursor to step through the returned records
+while (cur.moveToNext()) {
+    long calID = 0;
+    String displayName = null;
+    String accountName = null;
+    String ownerName = null;
+      
+    // Get the field values
+    calID = cur.getLong(PROJECTION_ID_INDEX);
+    displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
+    accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
+    ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
+              
+    // Do something with the values...
+
+   ...
+}
+</pre>
+  
+<h3 id="modify-calendar">修改日历</h3>
+
+<p>如需执行日历更新,您可以通过
+URI 追加
+ID ({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 或第一个选定项形式提供日历的
+
+{@link
+android.provider.BaseColumns#_ID}。选定范围应以
+<code>&quot;_id=?&quot;</code> 开头,并且第一个
+<code>selectionArg</code> 应为日历的 {@link
+android.provider.BaseColumns#_ID}。
+您还可以通过在 URI
+中编码 ID 来执行更新。下例使用 ({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 方法更改日历的显示名称:
+
+</p>
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long calID = 2;
+ContentValues values = new ContentValues();
+// The new display name for the calendar
+values.put(Calendars.CALENDAR_DISPLAY_NAME, &quot;Trevor's Calendar&quot;);
+Uri updateUri = ContentUris.withAppendedId(Calendars.CONTENT_URI, calID);
+int rows = getContentResolver().update(updateUri, values, null, null);
+Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);</pre>
+
+<h3 id="insert-calendar">插入日历</h2>
+
+<p>日历设计为主要由同步适配器进行管理,因此您只应以同步适配器形式插入新日历。
+在大多数情况下,应用只能对日历进行一些表面更改,如更改显示名称。
+如果应用需要创建本地日历,可以利用
+{@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
+的
+{@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE},通过以同步适配器形式执行日历插入来实现目的。{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}
+是一种特殊的帐户类型,用于未关联设备帐户的日历。
+这种类型的日历不与服务器同步。如需了解对同步适配器的阐述,请参阅<a href="#sync-adapter">同步适配器</a>。
+</p>
+
+<h2 id="events">事件表</h2>
+
+<p>{@link android.provider.CalendarContract.Events}
+表包含各事件的详细信息。要想添加、更新或删除事件,应用必须在其<a href="#manifest">清单文件</a>中加入
+{@link android.Manifest.permission#WRITE_CALENDAR}
+权限。</p>
+
+<p>应用和同步适配器均可写入下列事件列。
+如需查看所支持字段的完整列表,请参阅 {@link
+android.provider.CalendarContract.Events} 参考资料。</p>
+
+<table>
+  <tr>
+    <th>常量</th>
+    <th>描述</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#CALENDAR_ID}</td>
+    <td>事件所属日历的 {@link android.provider.BaseColumns#_ID}。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#ORGANIZER}</td>
+    <td>事件组织者(所有者)的电子邮件。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#TITLE}</td>
+    <td>事件的名称。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION}</td>
+    <td>事件的发生地点。 </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION}</td>
+    <td>事件的描述。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DTSTART}</td>
+    <td>事件开始时间,以从公元纪年开始计算的协调世界时毫秒数表示。 </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DTEND}</td>
+    <td>事件结束时间,以从公元纪年开始计算的协调世界时毫秒数表示。 </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}</td>
+    <td>事件的时区。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_END_TIMEZONE}</td>
+    <td>事件结束时间的时区。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
+    
+    <td><a href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RFC5545</a>
+格式的事件持续时间。例如,值为
+<code>&quot;PT1H&quot;</code> 表示事件应持续一小时,值为
+<code>&quot;P2W&quot;</code> 表示持续 2 周。 </td>
+
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
+    
+    <td>值为 1
+表示此事件占用一整天(按照本地时区的定义)。值为 0
+表示它是常规事件,可在一天内的任何时间开始和结束。</td>
+
+    
+  </tr>
+  
+  
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
+    
+    <td>事件的重复发生规则格式。例如,<code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code>。
+您可以在<a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">此处</a>找到更多示例。
+</td>
+    
+  </tr>
+  
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
+    <td>事件的重复发生日期。
+{@link android.provider.CalendarContract.EventsColumns#RDATE} 
+与 {@link android.provider.CalendarContract.EventsColumns#RRULE} 
+通常联合用于定义一组聚合重复实例。
+如需查看更详细的介绍,请参阅 <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.2">RFC5545 规范</a>。</td>
+</tr>
+ 
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY}</td>
+    
+    <td>将此事件视为忙碌时间还是可调度的空闲时间。
+ </td>
+    
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
+    <td>来宾是否可修改事件。 </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_INVITE_OTHERS}</td>
+    <td>来宾是否可邀请其他来宾。 </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_SEE_GUESTS}</td>
+    <td>来宾是否可查看参加者列表。</td>
+  </tr>
+</table>
+
+<h3 id="add-event">添加事件</h3>
+
+<p>当您的应用插入新事件时,我们建议您按照<a href="#intent-insert">使用 Intent 对象插入事件</a>中所述使用
+{@link android.content.Intent#ACTION_INSERT INSERT} Intent 对象。不过,如需,也可直接插入事件。
+本节描述如何执行此操作。
+</p>
+
+
+<p>以下是插入新事件的规则: </p>
+<ul>
+
+  <li>您必须加入 {@link
+android.provider.CalendarContract.EventsColumns#CALENDAR_ID} 和 {@link
+android.provider.CalendarContract.EventsColumns#DTSTART}。</li>
+
+<li>您必须加入 {@link
+android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}。如需获取系统中已安装时区 ID
+的列表,请使用 {@link
+java.util.TimeZone#getAvailableIDs()}。请注意,如果您按<a href="#intent-insert">使用 Intent 对象插入事件</a>中所述通过
+{@link
+android.content.Intent#ACTION_INSERT INSERT} Intent 对象插入事件,则此规则不适用&mdash;在该情形下,系统会提供默认时区。
+</li>
+  
+  <li>对于非重复事件,您必须加入 {@link
+android.provider.CalendarContract.EventsColumns#DTEND}。 </li>
+  
+  
+  <li>对于重复事件,您必须加入 {@link
+android.provider.CalendarContract.EventsColumns#DURATION} 以及 {@link
+android.provider.CalendarContract.EventsColumns#RRULE} 或 {@link
+android.provider.CalendarContract.EventsColumns#RDATE}。请注意,如果您按<a href="#intent-insert">使用 Intent 对象插入事件</a>中所述通过
+{@link
+android.content.Intent#ACTION_INSERT INSERT} Intent 对象插入事件,则此规则不适用&mdash;在该情形下,您可以将 {@link
+android.provider.CalendarContract.EventsColumns#RRULE} 与 {@link android.provider.CalendarContract.EventsColumns#DTSTART} 和 {@link android.provider.CalendarContract.EventsColumns#DTEND}
+联用,日历应用会自动将其转换为持续时间。
+</li>
+  
+</ul>
+
+<p>以下是一个插入事件的示例。为了简便起见,此操作是在 UI
+线程内执行的。实际上,应该在异步线程中完成插入和更新,以便将操作移入后台线程。
+如需了解详细信息,请参阅
+{@link android.content.AsyncQueryHandler}。</p>
+
+
+<pre>
+long calID = 3;
+long startMillis = 0; 
+long endMillis = 0;     
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2012, 9, 14, 7, 30);
+startMillis = beginTime.getTimeInMillis();
+Calendar endTime = Calendar.getInstance();
+endTime.set(2012, 9, 14, 8, 45);
+endMillis = endTime.getTimeInMillis();
+...
+
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Events.DTSTART, startMillis);
+values.put(Events.DTEND, endMillis);
+values.put(Events.TITLE, &quot;Jazzercise&quot;);
+values.put(Events.DESCRIPTION, &quot;Group workout&quot;);
+values.put(Events.CALENDAR_ID, calID);
+values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");
+Uri uri = cr.insert(Events.CONTENT_URI, values);
+
+// get the event ID that is the last element in the Uri
+long eventID = Long.parseLong(uri.getLastPathSegment());
+// 
+// ... do something with event ID
+//
+//</pre>
+
+<p class="note"><strong>注:</strong>请注意以上示例如何在事件创建后捕获事件
+ID。这是获取事件 ID
+的最简单方法。您经常需要使用事件 ID
+来执行其他日历操作&mdash;例如,向事件添加参加者或提醒。</p>
+
+
+<h3 id="update-event">更新事件</h3>
+
+<p>当您的应用想允许用户编辑事件时,我们建议您按照<a href="#intent-edit">使用 Intent 对象编辑事件</a>中所述使用
+{@link android.content.Intent#ACTION_EDIT EDIT}
+ Intent 对象。不过,如需,也可以直接编辑事件。
+如需执行事件更新,您可以通过 URI 追加 ID ({@link
+
+android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()})
+
+或第一个选定项形式提供事件的 <code>_ID</code>。
+选定范围应以 <code>&quot;_id=?&quot;</code> 开头,并且第一个<code>selectionArg</code> 应为事件的
+<code>_ID</code>。您还可以使用不含
+ID
+的选定范围执行更新。以下是一个更新事件的示例。它使用
+ {@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}
+方法更改事件的名称:</p>
+
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long eventID = 188;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+Uri updateUri = null;
+// The new title for the event
+values.put(Events.TITLE, &quot;Kickboxing&quot;); 
+updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+int rows = getContentResolver().update(updateUri, values, null, null);
+Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);  </pre>
+
+<h3 id="delete-event">删除事件</h3>
+
+<p>您可以通过将事件 {@link
+android.provider.BaseColumns#_ID} 作为 URI 追加 ID
+或通过使用标准选定范围来删除事件。如果您使用追加
+ID,则将无法同时使用选定范围。共有两个版本的删除:应用删除和同步适配器删除。应用删除将
+<em>deleted</em> 列设置为 1。此标志告知同步适配器该行已删除,并且应将此删除操作传播至服务器。
+
+同步适配器删除会将事件连同其所有关联数据从数据库中删除。
+以下是一个应用通过事件 {@link android.provider.BaseColumns#_ID}
+删除事件的示例:</p>
+
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long eventID = 201;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+Uri deleteUri = null;
+deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+int rows = getContentResolver().delete(deleteUri, null, null);
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);  
+</pre>
+
+<h2 id="attendees">参加者表</h2>
+
+<p>{@link android.provider.CalendarContract.Attendees}
+表的每一行都表示事件的一位参加者或来宾。调用 
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} 
+会返回一个参加者列表,其中包含具有给定 {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
+的事件的参加者。
+此 {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 
+必须匹配特定事件的 {@link
+android.provider.BaseColumns#_ID}。</p> 
+
+<p>下表列出了可写入的字段。
+插入新参加者时,您必须加入除 <code>ATTENDEE_NAME</code> 之外的所有字段。
+
+</p>
+
+
+<table>
+  <tr>
+    <th>常量</th>
+    <th>描述</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}</td>
+    <td>事件的 ID。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_NAME}</td>
+    <td>参加者的姓名。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_EMAIL}</td>
+    <td>参加者的电子邮件地址。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_RELATIONSHIP}</td>
+    <td><p>参加者与事件的关系。下列值之一:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_ATTENDEE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_NONE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_ORGANIZER}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_PERFORMER}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_SPEAKER}</li>
+    </ul>
+    </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_TYPE}</td>
+    <td><p>参加者的类型。下列值之一: </p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#TYPE_REQUIRED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#TYPE_OPTIONAL}</li>
+    </ul></td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS}</td>
+    <td><p>参加者的出席状态。下列值之一:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_ACCEPTED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_DECLINED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_INVITED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_NONE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_TENTATIVE}</li>
+    </ul></td>
+  </tr>
+</table>
+
+<h3 id="add-attendees">添加参加者</h3>
+
+<p>以下是一个为事件添加一位参加者的示例。请注意,{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}
+是必填项:
+</p>
+
+<pre>
+long eventID = 202;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Attendees.ATTENDEE_NAME, &quot;Trevor&quot;);
+values.put(Attendees.ATTENDEE_EMAIL, &quot;trevor@example.com&quot;);
+values.put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ATTENDEE);
+values.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_OPTIONAL);
+values.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_INVITED);
+values.put(Attendees.EVENT_ID, eventID);
+Uri uri = cr.insert(Attendees.CONTENT_URI, values);
+</pre>
+
+<h2 id="reminders">提醒表</h2>
+
+<p>{@link android.provider.CalendarContract.Reminders}
+表的每一行都表示事件的一个提醒。调用 
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()}
+会返回一个提醒列表,其中包含具有给定 {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 的事件的提醒。
+</p>
+
+
+<p>下表列出了提醒的可写入字段。插入新提醒时,必须加入所有字段。
+请注意,同步适配器指定它们在
+{@link
+android.provider.CalendarContract.Calendars} 表中支持的提醒类型。详情请参阅 
+{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}
+。</p>
+
+
+<table>
+  <tr>
+    <th>常量</th>
+    <th>描述</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#EVENT_ID}</td>
+    <td>事件的 ID。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#MINUTES}</td>
+    <td>事件发生前的分钟数,应在达到该时间时发出提醒。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#METHOD}</td>
+    <td><p>服务器上设置的提醒方法。下列值之一:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_ALERT}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_DEFAULT}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_EMAIL}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_SMS}</li>
+    </ul></td>
+  </tr>
+</table>
+
+<h3 id="add-reminders">添加提醒</h3>
+
+<p>下例显示如何为事件添加提醒。提醒在事件发生前 15
+分钟发出。</p>
+<pre>
+long eventID = 221;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Reminders.MINUTES, 15);
+values.put(Reminders.EVENT_ID, eventID);
+values.put(Reminders.METHOD, Reminders.METHOD_ALERT);
+Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
+
+<h2 id="instances">实例表</h2>
+
+<p>
+{@link android.provider.CalendarContract.Instances}
+表储存事件实例的开始时间和结束时间。此表中的每一行都表示一个事件实例。
+实例表无法写入,只提供查询事件实例的途径。
+ </p>
+
+<p>下表列出了一些您可以执行实例查询的字段。请注意,
+时区由 
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE} 
+和 
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES} 定义。</p>
+
+
+<table>
+  <tr>
+    <th>常量</th>
+    <th>描述</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#BEGIN}</td>
+    <td>实例的开始时间,以协调世界时毫秒数表示。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END}</td>
+    <td>实例的结束时间,以协调世界时毫秒数表示。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
+    
+    <td>与日历时区相应的实例儒略历结束日。
+ 
+    
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
+    
+    <td>从日历时区午夜开始计算的实例结束时间(分钟)。
+</td>
+    
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
+    <td>该实例对应事件的 <code>_ID</code>。</td>
+  </tr>
+    <tr>
+    <td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
+    <td>与日历时区相应的实例儒略历开始日。 
+ </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
+    
+    <td>从日历时区午夜开始计算的实例开始时间(分钟)。
+ 
+</td>
+    
+  </tr>
+
+</table>
+
+<h3 id="query-instances">查询实例表</h3>
+
+<p>如需查询实例表,您需要在 URI
+中指定查询的时间范围。在以下示例中,{@link android.provider.CalendarContract.Instances}
+通过其 {@link android.provider.CalendarContract.EventsColumns} 接口实现获得对 {@link
+android.provider.CalendarContract.EventsColumns#TITLE}
+字段的访问权限。
+换言之,{@link
+android.provider.CalendarContract.EventsColumns#TITLE} 是通过数据库视图,而不是通过查询原始
+{@link
+android.provider.CalendarContract.Instances} 表返回的。</p>
+
+<pre>
+private static final String DEBUG_TAG = "MyActivity";
+public static final String[] INSTANCE_PROJECTION = new String[] {
+    Instances.EVENT_ID,      // 0
+    Instances.BEGIN,         // 1
+    Instances.TITLE          // 2
+  };
+  
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_BEGIN_INDEX = 1;
+private static final int PROJECTION_TITLE_INDEX = 2;
+...
+
+// Specify the date range you want to search for recurring
+// event instances
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2011, 9, 23, 8, 0);
+long startMillis = beginTime.getTimeInMillis();
+Calendar endTime = Calendar.getInstance();
+endTime.set(2011, 10, 24, 8, 0);
+long endMillis = endTime.getTimeInMillis();
+  
+Cursor cur = null;
+ContentResolver cr = getContentResolver();
+
+// The ID of the recurring event whose instances you are searching
+// for in the Instances table
+String selection = Instances.EVENT_ID + " = ?";
+String[] selectionArgs = new String[] {"207"};
+
+// Construct the query with the desired date range.
+Uri.Builder builder = Instances.CONTENT_URI.buildUpon();
+ContentUris.appendId(builder, startMillis);
+ContentUris.appendId(builder, endMillis);
+
+// Submit the query
+cur =  cr.query(builder.build(), 
+    INSTANCE_PROJECTION, 
+    selection, 
+    selectionArgs, 
+    null);
+   
+while (cur.moveToNext()) {
+    String title = null;
+    long eventID = 0;
+    long beginVal = 0;    
+    
+    // Get the field values
+    eventID = cur.getLong(PROJECTION_ID_INDEX);
+    beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
+    title = cur.getString(PROJECTION_TITLE_INDEX);
+              
+    // Do something with the values. 
+    Log.i(DEBUG_TAG, "Event:  " + title); 
+    Calendar calendar = Calendar.getInstance();
+    calendar.setTimeInMillis(beginVal);  
+    DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
+    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));    
+    }
+ }</pre>
+
+<h2 id="intents">日历 Intent 对象</h2>
+<p>您的应用不需要读取和写入日历数据的<a href="#manifest">权限</a>。它可以改用 Android 的日历应用支持的 Intent 对象将读取和写入操作转到该应用执行。下表列出了日历提供程序支持的 Intent 对象:</p>
+<table>
+  <tr>
+    <th>操作</th>
+    <th>URI</th>
+
+    <th>描述</th>
+    <th>Extra</th>
+  </tr>
+  <tr>
+    <td><br>
+    {@link android.content.Intent#ACTION_VIEW VIEW} <br></td>
+    <td><p><code>content://com.android.calendar/time/&lt;ms_since_epoch&gt;</code></p>
+    您还可以通过 
+{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI} 引用 URI。
+如需查看使用该 Intent 对象的示例,请参阅<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">使用 Intent 对象查看日历数据</a>。 
+
+    </td>
+    <td>打开日历后定位到 <code>&lt;ms_since_epoch&gt;</code> 指定的时间。</td>
+    <td>无。</td>
+  </tr>
+  <tr>
+    <td><p>{@link android.content.Intent#ACTION_VIEW VIEW} </p>
+
+     </td>
+    <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
+    
+    您还可以通过 
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} 引用 URI。
+如需查看使用该 Intent 对象的示例,请参阅<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">使用 Intent 对象查看日历数据</a>。
+    
+    </td>
+    <td>查看 <code>&lt;event_id&gt;</code> 指定的事件。</td>
+
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}<br>
+      <br>
+      <br>
+    {@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}</td>
+  </tr>
+
+  <tr>
+    <td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
+    <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
+    
+  您还可以通过 
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} 引用 URI。
+如需查看使用该 Intent 对象的示例,请参阅<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">使用 Intent 对象编辑事件</a>。
+    
+    
+    </td>
+    <td>编辑 <code>&lt;event_id&gt;</code> 指定的事件。</td>
+
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}<br>
+      <br>
+      <br>
+    {@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}</td>
+  </tr>
+
+  <tr>
+    <td>{@link android.content.Intent#ACTION_EDIT EDIT} <br>
+    <br>
+    {@link android.content.Intent#ACTION_INSERT INSERT} </td>
+    <td><p><code>content://com.android.calendar/events</code></p>
+    
+   您还可以通过 
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} 引用 URI。
+如需查看使用该 Intent 对象的示例,请参阅<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">使用 Intent 对象插入事件</a>。
+    
+    </td>
+
+    <td>创建事件。</td>
+    <td>下表列出的任一 Extra。</td>
+  </tr>
+</table>
+
+<p>下表列出了日历提供程序支持的 Intent  Extra:
+</p>
+<table>
+  <tr>
+    <th> Intent  Extra</th>
+    <th>描述</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#TITLE Events.TITLE}</td>
+    <td>事件的名称。</td>
+  </tr>
+  <tr>
+  
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
+CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
+    <td>事件开始时间,以从公元纪年开始计算的毫秒数表示。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME
+CalendarContract.EXTRA_EVENT_END_TIME}</td>
+    
+    <td>事件结束时间,以从公元纪年开始计算的毫秒数表示。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY
+CalendarContract.EXTRA_EVENT_ALL_DAY}</td>
+    
+    <td>一个布尔值,表示事件属于全天事件。值可以是
+<code>true</code> 或 <code>false</code>。</td> </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION
+Events.EVENT_LOCATION}</td>
+    
+    <td>事件的地点。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION
+Events.DESCRIPTION}</td>
+    
+    <td>事件描述。</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}</td>
+    <td>逗号分隔值形式的受邀者电子邮件地址列表。</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.provider.CalendarContract.EventsColumns#RRULE Events.RRULE}</td>
+    <td>事件的重复发生规则。</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL
+Events.ACCESS_LEVEL}</td>
+    
+    <td>事件是私人性质还是公共性质。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY
+Events.AVAILABILITY}</td>
+    
+    <td>将此事件视为忙碌时间还是可调度的空闲时间。</td>
+    
+</table> 
+<p>下文描述如何使用这些 Intent 对象。</p>
+
+
+<h3 id="intent-insert">使用 Intent 对象插入事件</h3>
+
+<p>您的应用可以利用 {@link android.content.Intent#ACTION_INSERT INSERT}
+ Intent 对象将事件插入任务转到日历应用执行。使用此方法时,您的应用甚至不需要在其<a href="#manifest">清单文件</a>中加入
+{@link
+android.Manifest.permission#WRITE_CALENDAR} 权限。</p>
+
+  
+<p>当用户运行使用此方法的应用时,应用会将其转到日历来完成事件添加操作。
+{@link
+android.content.Intent#ACTION_INSERT INSERT}  Intent 利用 extra
+字段为表单预填充日历中事件的详细信息。用户随后可取消事件、根据需要编辑表单或将事件保存到日历中。
+
+</p>
+  
+
+
+<p>以下是一个代码段,用于安排一个在 2012 年 1 月 19 日上午
+7:30 开始、8:30 结束的事件。请注意该代码段中的以下内容:</p>
+
+<ul>
+  <li>它将 {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} 
+指定为 URI。</li>
+  
+  <li>它使用 {@link
+android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
+CalendarContract.EXTRA_EVENT_BEGIN_TIME} 和 {@link
+android.provider.CalendarContract#EXTRA_EVENT_END_TIME
+CalendarContract.EXTRA_EVENT_END_TIME} extra
+字段为表单预填充事件的时间。这些时间的值必须以从公元纪年开始计算的协调世界时毫秒数表示。
+</li>
+  
+  <li>它使用 {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}
+extra 字段提供以逗号分隔的受邀者电子邮件地址列表。</li>
+  
+</ul>
+<pre>
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2012, 0, 19, 7, 30);
+Calendar endTime = Calendar.getInstance();
+endTime.set(2012, 0, 19, 8, 30);
+Intent intent = new Intent(Intent.ACTION_INSERT)
+        .setData(Events.CONTENT_URI)
+        .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())
+        .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis())
+        .putExtra(Events.TITLE, &quot;Yoga&quot;)
+        .putExtra(Events.DESCRIPTION, &quot;Group class&quot;)
+        .putExtra(Events.EVENT_LOCATION, &quot;The gym&quot;)
+        .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY)
+        .putExtra(Intent.EXTRA_EMAIL, &quot;rowan@example.com,trevor@example.com&quot;);
+startActivity(intent);
+</pre>
+
+<h3 id="intent-edit">使用 Intent 对象编辑事件</h3>
+
+<p>您可以按<a href="#update-event">更新事件</a>中所述直接更新事件。但使用 {@link
+android.content.Intent#ACTION_EDIT EDIT}  Intent 可以让不具有事件编辑权限的应用将事件编辑操作转到日历应用执行。当用户在日历中完成事件编辑后,将会返回原来的应用。
+
+
+</p> <p>以下是一个 Intent 对象的示例,它为指定事件设置新名称,并允许用户在日历中编辑事件。
+</p>
+
+
+<pre>long eventID = 208;
+Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+Intent intent = new Intent(Intent.ACTION_EDIT)
+    .setData(uri)
+    .putExtra(Events.TITLE, &quot;My New Title&quot;);
+startActivity(intent);</pre>
+
+<h3 id="intent-view">使用 Intent 对象查看日历数据</h3>
+<p>日历提供程序提供了两种不同的 {@link android.content.Intent#ACTION_VIEW VIEW}  Intent 对象使用方法:</p>
+<ul>
+  <li>打开日历并定位到特定日期。</li>
+  <li>查看事件。</li>
+
+</ul>
+<p>下例显示如何打开日历并定位到特定日期:</p>
+<pre>// A date-time specified in milliseconds since the epoch.
+long startMillis;
+...
+Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
+builder.appendPath(&quot;time&quot;);
+ContentUris.appendId(builder, startMillis);
+Intent intent = new Intent(Intent.ACTION_VIEW)
+    .setData(builder.build());
+startActivity(intent);</pre>
+
+<p>下例显示如何打开事件进行查看:</p>
+<pre>long eventID = 208;
+...
+Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+Intent intent = new Intent(Intent.ACTION_VIEW)
+   .setData(uri);
+startActivity(intent);
+</pre>
+
+
+<h2 id="sync-adapter">同步适配器</h2>
+
+
+<p>应用和同步适配器在访问日历提供程序的方式上只存在微小差异:
+</p>
+
+<ul>
+  <li>同步适配器需要通过将 {@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER} 设置为 <code>true</code> 来表明它是同步适配器。</li>
+  
+  
+  <li>同步适配器需要提供 {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME} 和 {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} 作为 URI 中的查询参数。 </li>
+  
+  <li>与应用或小工具相比,同步适配器拥有写入权限的列更多。
+  例如,应用只能修改日历的少数几种特性,
+例如其名称、显示名称、能见度设置以及是否同步日历。
+相比之下,同步适配器不仅可以访问这些列,还能访问许多其他列,
+例如日历颜色、时区、访问级别、地点等等。不过,同步适配器受限于它指定的
+<code>ACCOUNT_NAME</code> 和 
+<code>ACCOUNT_TYPE</code>。</li> </ul>
+
+<p>您可以利用以下 helper 方法返回供与同步适配器一起使用的 URI:</p>
+<pre> static Uri asSyncAdapter(Uri uri, String account, String accountType) {
+    return uri.buildUpon()
+        .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,&quot;true&quot;)
+        .appendQueryParameter(Calendars.ACCOUNT_NAME, account)
+        .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
+ }
+</pre>
+<p>如需查看同步适配器的实现示例(并非仅限与日历有关的实现),请参阅 
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>。
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/providers/contacts-provider.jd b/docs/html-intl/intl/zh-cn/guide/topics/providers/contacts-provider.jd
new file mode 100644
index 0000000..7125fb9
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/providers/contacts-provider.jd
@@ -0,0 +1,2356 @@
+page.title=联系人提供程序
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<h2>内容快览</h2>
+<ul>
+    <li>Android 有关联系人的信息存储库。</li>
+    <li>
+        与 Web 同步。
+    </li>
+    <li>
+        集成社交流数据。
+    </li>
+</ul>
+<h2>本文内容</h2>
+<ol>
+    <li>
+        <a href="#InformationTypes">联系人提供程序组织</a>
+    </li>
+    <li>
+        <a href="#RawContactBasics">原始联系人</a>
+    </li>
+    <li>
+        <a href="#DataBasics">数据</a>
+    </li>
+    <li>
+        <a href="#ContactBasics">联系人</a>
+    </li>
+    <li>
+        <a href="#Sources">来自同步适配器的数据</a>
+    </li>
+    <li>
+        <a href="#Permissions">所需权限</a>
+    </li>
+    <li>
+        <a href="#UserProfile">用户个人资料</a>
+    </li>
+    <li>
+        <a href="#ContactsProviderMetadata">联系人提供程序元数据</a>
+    </li>
+    <li>
+        <a href="#Access">联系人提供程序访问</a>
+    <li>
+    </li>
+    <li>
+        <a href="#SyncAdapters">联系人提供程序同步适配器</a>
+    </li>
+    <li>
+        <a href="#SocialStream">社交流数据</a>
+    </li>
+    <li>
+        <a href="#AdditionalFeatures">其他联系人提供程序功能</a>
+    </li>
+</ol>
+<h2>关键类</h2>
+<ol>
+    <li>{@link android.provider.ContactsContract.Contacts}</li>
+    <li>{@link android.provider.ContactsContract.RawContacts}</li>
+    <li>{@link android.provider.ContactsContract.Data}</li>
+    <li>{@code android.provider.ContactsContract.StreamItems}</li>
+</ol>
+<h2>相关示例</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}resources/samples/ContactManager/index.html">
+联系人管理器
+</a>
+    </li>
+    <li>
+        <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+示例同步适配器</a>
+    </li>
+</ol>
+<h2>另请参阅</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+内容提供程序基础知识
+</a>
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    联系人提供程序是一个强大而又灵活的 Android 组件,用于管理设备上有关联系人数据的中央存储库。
+联系人提供程序是您在设备的联系人应用中看到的数据源,您也可以在自己的应用中访问其数据,并可在设备与在线服务之间传送数据。
+
+提供程序储存有多种数据源,由于它会试图为每个联系人管理尽可能多的数据,因此造成其组织结构非常复杂。
+
+为此,该提供程序的 API 包含丰富的协定类和接口,为数据检索和修改提供便利。
+
+
+</p>
+<p>
+    本指南介绍下列内容:
+</p>
+    <ul>
+        <li>
+            提供程序基本结构
+        </li>
+        <li>
+            如何从提供程序检索数据
+        </li>
+        <li>
+            如何修改提供程序中的数据
+        </li>
+        <li>
+            如何编写用于同步服务器数据与联系人提供程序数据的同步适配器。
+
+        </li>
+    </ul>
+<p>
+    本指南假定您了解 Android 内容提供程序的基础知识。如需了解有关 Android 内容提供程序的更多信息,请阅读
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">内容提供程序基础知识</a>指南。
+
+
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">示例同步适配器</a>示例应用是一个示例,展示如何使用同步适配器在联系人提供程序与 Google 网络服务托管的一个示例应用之间传送数据。
+
+
+</p>
+<h2 id="InformationTypes">联系人提供程序组织</h2>
+<p>
+    联系人提供程序是 Android 内容提供程序的一个组件。它保留了三种类型的联系人数据,每一种数据都对应提供程序提供的一个表,如图 1 所示:
+
+
+</p>
+<img src="{@docRoot}images/providers/contacts_structure.png" alt="" height="364" id="figure1" />
+<p class="img-caption">
+  <strong>图 1. </strong>联系人提供程序表结构。
+</p>
+<p>
+    这三个表通常以其协定类的名称命名。这些类定义表所使用的内容 URI、列名称及列值相应的常量:
+
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.Contacts} 表
+    </dt>
+    <dd>
+        表示不同联系人的行,基于聚合的原始联系人行。
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.RawContacts} 表
+    </dt>
+    <dd>
+        包含联系人数据摘要的行,针对特定用户帐户和类型。
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.Data} 表
+    </dt>
+    <dd>
+        包含原始联系人详细信息(例如电子邮件地址或电话号码)的行。
+    </dd>
+</dl>
+<p>
+    由 {@link android.provider.ContactsContract}
+中的协定类表示的其他表是辅助表,联系人提供程序利用它们来管理其操作,或为设备的联系人或电话应用中的特定功能提供支持。
+
+</p>
+<h2 id="RawContactBasics">原始联系人</h2>
+<p>
+    一个原始联系人表示来自某一帐户类型和帐户名称、有关某个联系人的数据。
+由于联系人提供程序允许将多个在线服务作为某一联系人的数据源,因此它允许同一联系人对应多个原始联系人。
+
+    借助支持多个原始联系人的特性,用户还可以将某一联系人在帐户类型相同的多个帐户中的数据进行合并。
+
+</p>
+<p>
+    原始联系人的大部分数据并不存储在
+{@link android.provider.ContactsContract.RawContacts} 表内,而是存储在
+{@link android.provider.ContactsContract.Data} 表中的一行或多行内。每个数据行都有一个
+{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID Data.RAW_CONTACT_ID} 列,其中包含其父级 {@link android.provider.ContactsContract.RawContacts} 行的 {@code android.provider.BaseColumns#_ID RawContacts._ID} 值。
+
+
+</p>
+<h3 id="RawContactsColumns">重要的原始联系人列</h3>
+<p>
+    表 1 列出了 {@link android.provider.ContactsContract.RawContacts} 表中的重要列。
+请阅读表后的说明:
+</p>
+<p class="table-caption" id="table1">
+    <strong>表 1. </strong>重要的原始联系人列。
+</p>
+<table>
+    <tr>
+        <th scope="col">列名称</th>
+        <th scope="col">用途</th>
+        <th scope="col">备注</th>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_NAME}
+        </td>
+        <td>
+            作为该原始联系人来源的帐户类型的帐户名称。
+            例如,Google 帐户的帐户名称是设备所有者的某个 Gmail
+地址。如需了解详细信息,请参阅有关
+ {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE} 的下一条目。
+
+        </td>
+        <td>
+            此名称的格式专用于其帐户类型。它不一定是电子邮件地址。
+
+        </td>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}
+        </td>
+        <td>
+            作为该原始联系人来源的帐户类型。例如,Google 帐户的帐户类型是 <code>com.google</code>。
+请务必使用您拥有或控制的域的域标识符限定您的帐户类型。
+这可以确保您的帐户类型具有唯一性。
+
+        </td>
+        <td>
+            提供联系人数据的帐户类型通常关联有同步适配器,用于与联系人提供程序进行同步。
+
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.RawContactsColumns#DELETED}
+        </td>
+        <td>
+            原始联系人的“已删除”标志。
+        </td>
+        <td>
+            此标志让联系人提供程序能够在内部保留该行,直至同步适配器能够从服务器删除该行,然后再从存储库中最终删除该行。
+
+
+        </td>
+    </tr>
+</table>
+<h4>说明</h4>
+<p>
+    以下是关于
+ {@link android.provider.ContactsContract.RawContacts} 表的重要说明:
+</p>
+<ul>
+    <li>
+        原始联系人的姓名并不存储其在
+{@link android.provider.ContactsContract.RawContacts} 中的行内,而是存储在
+{@link android.provider.ContactsContract.Data} 表的
+{@link android.provider.ContactsContract.CommonDataKinds.StructuredName} 行内。一个原始联系人在 {@link android.provider.ContactsContract.Data} 表中只有一个该类型的行。
+
+    </li>
+    <li>
+        <strong>注意:</strong>要想在原始联系人行中使用您自己的帐户数据,必须先在 {@link android.accounts.AccountManager} 中注册帐户。
+为此,请提示用户将帐户类型及其帐户名称添加到帐户列表。
+如果您不这样做,联系人提供程序将自动删除您的原始联系人行。
+
+        <p>
+            例如,如果您想让您的应用为您域名为 {@code com.example.dataservice}、基于 Web 的服务保留联系人数据,并且您的服务的用户帐户是 {@code becky.sharp@dataservice.example.com},则用户必须先添加帐户“类型”({@code com.example.dataservice}) 和帐户“名称”({@code becky.smart@dataservice.example.com}),然后您的应用才能添加原始联系人行。
+
+
+
+
+            您可以在文档中向用户解释这项要求,也可以提示用户添加类型和名称,或者同时采用这两种措施。
+下文对帐户类型和帐户名称做了更详尽的描述。
+
+    </li>
+</ul>
+<h3 id="RawContactsExample">原始联系人数据来源</h3>
+<p>
+    为理解原始联系人的工作方式,假设有一位用户“Emily Dickinson”,她的设备上定义了以下三个用户帐户:
+
+</p>
+<ul>
+    <li><code>emily.dickinson@gmail.com</code></li>
+    <li><code>emilyd@gmail.com</code></li>
+    <li>Twitter 帐户“belle_of_amherst”</li>
+</ul>
+<p>
+    该用户已在 <em>Accounts</em> 设置中为全部三个帐户启用了
+<em>Sync Contacts</em>。
+</p>
+<p>
+    假定 Emily Dickinson 打开一个浏览器窗口,以
+<code>emily.dickinson@gmail.com</code> 身份登录 Gmail,然后打开
+“联系人”,并添加“Thomas Higginson”。后来,她以
+<code>emilyd@gmail.com</code> 身份登录 Gmail,并向“Thomas Higginson”发送一封电子邮件,此操作会自动将他添加为联系人。
+她还在 Twitter 上关注了“colonel_tom”(Thomas Higginson 的 Twitter ID)。
+
+</p>
+<p>
+    以上操作的结果是,联系人提供程序会创建以下这三个原始联系人:
+</p>
+<ol>
+    <li>
+        第一个原始联系人对应“Thomas Higginson”,关联帐户 <code>emily.dickinson@gmail.com</code>。
+        用户帐户类型是 Google。
+    </li>
+    <li>
+        第二个原始联系人对应“Thomas Higginson”,关联帐户 <code>emilyd@gmail.com</code>。
+        用户帐户类型也是 Google。由于添加的联系人对应的用户帐户不同,因此尽管名称与前一名称完全相同,也只能作为第二个原始联系人。
+
+
+    </li>
+    <li>
+        第三个原始联系人对应“Thomas Higginson”,关联帐户“belle_of_amherst”。用户帐户类型是 Twitter。
+
+    </li>
+</ol>
+<h2 id="DataBasics">数据</h2>
+<p>
+    如前文所做的说明,原始联系人的数据存储在一个
+{@link android.provider.ContactsContract.Data} 行中,该行链接到原始联系人的
+<code>_ID</code> 值。这使一位原始联系人可以拥有多个具有相同数据类型的实例,例如电子邮件地址或电话号码。
+例如,如果对应
+{@code emilyd@gmail.com} 的“Thomas Higginson”(关联 Google 帐户 <code>emilyd@gmail.com</code> 的 Thomas Higginson
+的原始联系人行)的住宅电子邮件地址为
+<code>thigg@gmail.com</code>,办公电子邮件地址为
+<code>thomas.higginson@gmail.com</code>,则联系人提供程序会存储这两个电子邮件地址行,并将它们都链接到原始联系人。
+
+</p>
+<p>
+    请注意,这个表中存储了不同类型的数据。显示姓名、电话号码、电子邮件、邮政地址、照片以及网站明细行都可以在 {@link android.provider.ContactsContract.Data} 表中找到。
+
+为便于管理这些数据,
+{@link android.provider.ContactsContract.Data} 表为一些列使用了描述性名称,为其他列使用了通用名称。
+使用描述性名称的列的内容具有相同的含义,与行中数据的类型无关,而使用通用名称的列的内容则会随数据类型的不同而具有不同的含义。
+
+
+</p>
+<h3 id="DescriptiveColumns">描述性列名称</h3>
+<p>
+    以下是一些描述性列名称的示例:
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.Data#RAW_CONTACT_ID}
+    </dt>
+    <dd>
+        该数据对应的原始联系人 <code>_ID</code> 列的值。
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.Data#MIMETYPE}
+    </dt>
+    <dd>
+        该行中存储的数据类型,以自定义 MIME(多用途互联网邮件扩展)类型表示。联系人提供程序使用了
+{@link android.provider.ContactsContract.CommonDataKinds} 子类中定义的 MIME 类型。
+这些 MIME 类型为开源类型,可供与联系人提供程序协作的任何应用或同步适配器使用。
+
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY}
+    </dt>
+    <dd>
+        如果一个原始联系人可能具有多个这种类型的数据行,
+{@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} 列会标记
+包含该类型主要数据的数据行。例如,如果用户长按某个联系人的电话号码,并选择 <strong>Set default</strong>,则包含该号码的 {@link android.provider.ContactsContract.Data} 行会将其 {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} 列设置为一个非零值。
+
+
+
+
+    </dd>
+</dl>
+<h3 id="GenericColumns">通用列名称</h3>
+<p>
+    有 15 个通用列命名为 <code>DATA1</code> 至
+<code>DATA15</code>,可普遍适用;还有四个通用列命名为 <code>SYNC1</code> 至 <code>SYNC4</code>,只应由同步适配器使用。
+
+通用列名称常量始终有效,与行包含的数据类型无关。
+
+</p>
+<p>
+    <code>DATA1</code> 列为索引列。联系人提供程序总是在此列中存储其预期会成为最频繁查询目标的数据。
+例如,在一个电子邮件行中,此列包含实际电子邮件地址。
+
+</p>
+<p>
+    按照惯例,<code>DATA15</code> 为预留列,用于存储照片缩略图等二进制大型对象
+(BLOB) 数据。
+</p>
+<h3 id="TypeSpecificNames">类型专用列名称</h3>
+<p>
+    为便于处理特定类型行的列,联系人提供程序还提供了
+{@link android.provider.ContactsContract.CommonDataKinds} 子类中定义的类型专用列名称常量。
+这些常量只是为同一列名称提供不同的常量名称,这有助于您访问特定类型行中的数据。
+
+
+</p>
+<p>
+    例如,{@link android.provider.ContactsContract.CommonDataKinds.Email} 类为 {@link android.provider.ContactsContract.Data} 行定义类型专用列名称常量,该行的 MIME 类型为 {@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
+    Email.CONTENT_ITEM_TYPE}。
+
+
+该类包含电子邮件地址列的
+{@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS}
+常量。
+{@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS} 的实际值为“data1”,这与列的通用名称相同。
+
+</p>
+<p class="caution">
+    <strong>注意:</strong>请勿使用具有提供程序某个预定义 MIME 类型的行向
+{@link android.provider.ContactsContract.Data} 表中添加您自己的自定义数据。
+否则您可能会丢失数据,或导致提供程序发生故障。
+例如,如果某一行具有 MIME 类型
+{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
+    Email.CONTENT_ITEM_TYPE},并且
+<code>DATA1</code> 列包含的是用户名而不是电子邮件地址,您就不应添加该行。如果您为该行使用自定义的 MIME 类型,则可自由定义您的自定义类型专用的列名称,并随心所欲地使用这些列。
+
+</p>
+<p>
+    图 2 显示的是描述性列和数据列在
+{@link android.provider.ContactsContract.Data} 行中的显示情况,以及类型专用列名称“覆盖”通用列名称的情况
+
+</p>
+<img src="{@docRoot}images/providers/data_columns.png" alt="How type-specific column names map to generic column names" height="311" id="figure2" />
+<p class="img-caption">
+  <strong>图 2. </strong>类型专用列名称和通用列名称。
+</p>
+<h3 id="ColumnMaps">类型专用列名称类</h3>
+<p>
+    表 2 列出了最常用的类型专用列名称类:
+</p>
+<p class="table-caption" id="table2">
+  <strong>表 2. </strong>类型专用列名称类</p>
+<table>
+  <tr>
+    <th scope="col">映射类</th>
+    <th scope="col">数据类型</th>
+    <th scope="col">备注</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredName}</td>
+    <td>与该数据行关联的原始联系人的姓名数据。</td>
+    <td>一位原始联系人只有其中一行。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Photo}</td>
+    <td>与该数据行关联的原始联系人的主要照片。</td>
+    <td>一位原始联系人只有其中一行。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Email}</td>
+    <td>与该数据行关联的原始联系人的电子邮件地址。</td>
+    <td>一位原始联系人可有多个电子邮件地址。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal}</td>
+    <td>与该数据行关联的原始联系人的邮政地址。</td>
+    <td>一位原始联系人可有多个邮政地址。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.GroupMembership}</td>
+    <td>将原始联系人链接到联系人提供程序内其中一组的标识符。</td>
+    <td>
+        组是帐户类型和帐户名称的一项可选功能。<a href="#Groups">联系人组</a>部分对其做了更详尽的描述。
+
+    </td>
+  </tr>
+</table>
+<h3 id="ContactBasics">联系人</h3>
+<p>
+    联系人提供程序通过将所有帐户类型和帐户名称的原始联系人行合并来形成<strong>联系人</strong>。
+这可以为显示和修改用户针对某一联系人收集的所有数据提供便利。
+联系人提供程序管理新联系人行的创建,以及原始联系人与现有联系人行的合并。
+系统不允许应用或同步适配器添加联系人,并且联系人行中的某些列是只读列。
+
+</p>
+<p class="note">
+    <strong>注:</strong>如果您试图通过
+{@link android.content.ContentResolver#insert(Uri,ContentValues) insert()} 向联系人提供程序添加联系人,会引发一个 {@link java.lang.UnsupportedOperationException} 异常。
+如果您试图更新一个列为“只读”的列,更新会被忽略。
+
+</p>
+<p>
+    如果添加的新原始联系人不匹配任何现有联系人,联系人提供程序会相应地创建新联系人。
+如果某个现有原始联系人的数据发生了变化,不再匹配其之前关联的联系人,则提供程序也会执行此操作。
+
+如果应用或同步适配器创建的新原始联系人“的确”<em></em>匹配某位现有联系人,则新原始联系人将与现有联系人合并。
+
+
+</p>
+<p>
+    联系人提供程序通过 {@link android.provider.ContactsContract.Contacts Contacts} 表中联系人行的
+<code>_ID</code> 列将联系人行与其各原始联系人行链接起来。
+原始联系人表 {@link android.provider.ContactsContract.RawContacts} 的 <code>CONTACT_ID</code> 列包含对应于每个原始联系人行所关联联系人行的 <code>_ID</code> 值。
+
+
+</p>
+<p>
+    {@link android.provider.ContactsContract.Contacts} 表还有一个
+{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} 列,它是一个指向联系人行的“永久性”链接。
+由于联系人提供程序会自动维护联系人,因此可能会在合并或同步时相应地更改联系人行的 {@code android.provider.BaseColumns#_ID} 值。
+
+即使发生这种情况,合并了联系人
+{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} 的内容 URI
+{@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI} 仍将指向联系人行,这样,您就能使用
+{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}
+保持指向“最喜爱”联系人的链接,以及执行其他操作。
+该列具有其自己的格式,与 {@code android.provider.BaseColumns#_ID} 列的格式无关。
+
+</p>
+<p>
+    图 3 显示的是这三个主要表的相互关系。
+</p>
+<img src="{@docRoot}images/providers/contacts_tables.png" alt="Contacts provider main tables" height="514" id="figure4" />
+<p class="img-caption">
+  <strong>图 3. </strong>联系人表、原始联系人表与详细信息表之间的关系。
+</p>
+<h2 id="Sources">来自同步适配器的数据</h2>
+<p>
+    虽然用户是直接将联系人数据输入到设备中,但这些数据也会通过<strong>同步适配器</strong>从 Web 服务流入联系人提供程序中,这些同步适配器可自动化设备与服务之间的数据传送。
+
+同步适配器在系统控制下在后台运行,它们会调用 {@link android.content.ContentResolver} 方法来管理数据。
+
+
+</p>
+<p>
+    在 Android 中,与同步适配器协作的 Web 服务通过帐户类型加以标识。
+    每个同步适配器都与一个帐户类型协作,但它可以支持该类型的多个帐户名称。
+<a href="#RawContactsExample">原始联系人数据来源</a>部分对帐户类型和帐户名称做了简要描述。
+下列定义提供了更多详细信息,并描述了帐户类型及帐户名称与同步适配器及服务之间的关系。
+
+</p>
+<dl>
+    <dt>
+        帐户类型
+    </dt>
+    <dd>
+        表示用户在其中存储数据的服务。在大多数时候,用户需要向服务验证身份。
+例如,Google Contacts 是一个以代码 <code>google.com</code> 标识的帐户类型。
+该值对应于
+{@link android.accounts.AccountManager} 使用的帐户类型。
+    </dd>
+    <dt>
+        帐户名称
+    </dt>
+    <dd>
+        表示某个帐户类型的特定帐户或登录名。Google Contacts 帐户与 Google 帐户相同,都是以电子邮件地址作为帐户名称。
+
+        其他服务可能使用一个单词的用户名或数字 ID。
+    </dd>
+</dl>
+<p>
+    帐户类型不必具有唯一性。用户可以配置多个 Google Contacts 帐户并将它们的数据下载到联系人提供程序;如果用户为个人帐户名称和工作帐户名称分别设置了一组联系人,就可能发生这种情况。
+
+帐户名称通常具有唯一性。
+它们共同标识联系人提供程序与外部服务之间的特定数据流。
+
+</p>
+<p>
+    如果您想将服务的数据传送到联系人提供程序,则需编写您自己的同步适配器。
+<a href="#SyncAdapters">联系人提供程序同步适配器</a>部分对此做了更详尽的描述。
+
+</p>
+<p>
+    图 4 显示的是联系人提供程序如何融入联系人数据的流动。
+在名为“同步适配器”的方框中,每个适配器都以其帐户类型命名。
+</p>
+<img src="{@docRoot}images/providers/ContactsDataFlow.png" alt="Flow of data about people" height="252" id="figure5" />
+<p class="img-caption">
+  <strong>图 4. </strong>联系人提供程序数据流。
+</p>
+<h2 id="Permissions">所需权限</h2>
+<p>
+    想要访问联系人提供程序的应用必须请求以下权限:
+
+</p>
+<dl>
+    <dt>对一个或多个表的读取权限</dt>
+    <dd>
+        {@link android.Manifest.permission#READ_CONTACTS},在
+<code>AndroidManifest.xml</code> 中指定,使用
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code> 元素作为
+<code>&lt;uses-permission android:name="android.permission.READ_CONTACTS"&gt;</code>。
+    </dd>
+    <dt>对一个或多个表的写入权限</dt>
+    <dd>
+        {@link android.Manifest.permission#WRITE_CONTACTS},在
+<code>AndroidManifest.xml</code> 中指定,使用
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code> 元素作为
+<code>&lt;uses-permission android:name="android.permission.WRITE_CONTACTS"&gt;</code>。
+    </dd>
+</dl>
+<p>
+    这些权限不适用于用户个人资料数据。下面的<a href="#UserProfile">用户个人资料</a>部分对用户个人资料及其所需权限做了阐述。
+
+
+</p>
+<p>
+    请切记,用户的联系人数据属于个人敏感数据。用户关心其隐私权,因此不希望应用收集有关其自身的数据或其联系人的数据。
+
+    如需权限来访问其联系人数据的理由并不充分,用户可能给您的应用作出差评或干脆拒绝安装。
+
+</p>
+<h2 id="UserProfile">用户个人资料</h2>
+<p>
+    {@link android.provider.ContactsContract.Contacts} 表有一行包含设备用户的个人资料数据。
+这些数据描述设备的 <code>user</code> 而不是用户的其中一位联系人。
+对于每个使用个人资料的系统,该个人资料联系人行都链接到某个原始联系人行。
+
+    每个个人资料原始联系人行可具有多个数据行。{@link android.provider.ContactsContract.Profile} 类中提供了用于访问用户个人资料的常量。
+
+</p>
+<p>
+    访问用户个人资料需要特殊权限。除了进行读取和写入所需的
+{@link android.Manifest.permission#READ_CONTACTS} 和
+{@link android.Manifest.permission#WRITE_CONTACTS} 权限外,如果想访问用户个人资料,还分别需要 {@code android.Manifest.permission#READ_PROFILE} 和
+{@code android.Manifest.permission#WRITE_PROFILE} 权限进行读取和写入访问。
+
+
+</p>
+<p>
+    请切记,您应该将用户的个人资料视为敏感数据。{@code android.Manifest.permission#READ_PROFILE} 权限让您可以访问设备用户的个人身份识别数据。
+
+请务必在您的应用的描述中告知用户您需要用户个人资料访问权限的原因。
+
+</p>
+<p>
+    要检索包含用户个人资料的联系人行,请调用 {@link android.content.ContentResolver#query(Uri,String[], String, String[], String)
+ContentResolver.query()}。
+将内容 URI 设置为
+{@link android.provider.ContactsContract.Profile#CONTENT_URI} 并且不要提供任何选择条件。
+您还可以使用该内容 URI 作为检索原始联系人或个人资料数据的基本 URI。
+例如,以下代码段用于检索个人资料数据:
+</p>
+<pre>
+// Sets the columns to retrieve for the user profile
+mProjection = new String[]
+    {
+        Profile._ID,
+        Profile.DISPLAY_NAME_PRIMARY,
+        Profile.LOOKUP_KEY,
+        Profile.PHOTO_THUMBNAIL_URI
+    };
+
+// Retrieves the profile from the Contacts Provider
+mProfileCursor =
+        getContentResolver().query(
+                Profile.CONTENT_URI,
+                mProjection ,
+                null,
+                null,
+                null);
+</pre>
+<p class="note">
+    <strong>注:</strong>如果您要检索多个联系人行并想要确定其中一个是否为用户个人资料,请测试该行的
+{@link android.provider.ContactsContract.ContactsColumns#IS_USER_PROFILE} 列。
+如果该联系人是用户个人资料,则此列设置为“1”。
+
+</p>
+<h2 id="ContactsProviderMetadata">联系人提供程序元数据</h2>
+<p>
+    联系人提供程序管理用于追踪存储库中联系人数据状态的数据。
+这些有关存储库的元数据存储在各处,其中包括原始联系人表行、数据表行和联系人表行、
+{@link android.provider.ContactsContract.Settings} 表以及
+{@link android.provider.ContactsContract.SyncState} 表。
+下表显示的是每一部分元数据的作用:
+
+</p>
+<p class="table-caption" id="table3">
+  <strong>表 3. </strong>联系人提供程序中的元数据</p>
+<table>
+    <tr>
+        <th scope="col">表</th>
+        <th scope="col">列</th>
+        <th scope="col">值</th>
+        <th scope="col">含义</th>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.RawContacts}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.SyncColumns#DIRTY}</td>
+        <td>“0”:上次同步以来未发生变化。</td>
+        <td rowspan="2">
+            标记设备上因发生变化而需要同步回服务器的原始联系人。
+当 Android 应用更新行时,联系人提供程序会自动设置该值。
+
+            <p>
+                修改原始联系人表或数据表的同步适配器应始终向他们使用的内容 URI 追加字符串 {@link android.provider.ContactsContract#CALLER_IS_SYNCADAPTER}。
+
+这可以防止提供程序将行标记为已更新。
+                否则,即使服务器是修改的来源,同步适配器修改仍显示为本地修改,并会发送到服务器。
+
+            </p>
+        </td>
+    </tr>
+    <tr>
+            <td>“1”:上次同步以来发生了变化,需要同步回服务器。</td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#VERSION}</td>
+        <td>此行的版本号。</td>
+        <td>
+            每当行或其相关数据发生变化时,联系人提供程序都会自动增加此值。
+
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.Data}</td>
+        <td>{@link android.provider.ContactsContract.DataColumns#DATA_VERSION}</td>
+        <td>此行的版本号。</td>
+        <td>
+            每当数据行发生变化时,联系人提供程序都会自动增加此值。
+
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}</td>
+        <td>
+            一个字符串值,用于在创建此原始联系人的帐户中对该联系人进行唯一标识。
+
+        </td>
+        <td>
+            当同步适配器创建新原始联系人时,此列应设置为该原始联系人在服务器中的唯一 ID。
+当 Android 应用创建新原始联系人时,应将此列留空。
+这是为了向同步适配器表明,它应该在服务器上创建新原始联系人,并获取
+ {@link android.provider.ContactsContract.SyncColumns#SOURCE_ID} 的值。
+
+            <p>
+                具体地讲,对于每个帐户类型,该源 ID 都必须是<strong>唯一</strong>的,并且应在所有同步中保持稳定:
+
+            </p>
+                <ul>
+                    <li>
+                        唯一:帐户的每个原始联系人都必须有自己的源 ID。如果您不强制执行此要求,会在联系人应用中引发问题。
+
+                        请注意,帐户<em>类型</em>相同的两个原始联系人可以具有相同的源 ID。
+例如,允许帐户 {@code emily.dickinson@gmail.com} 的原始联系人“Thomas Higginson”与帐户
+{@code emilyd@gmail.com} 的原始联系人“Thomas Higginson”具有相同的源 ID。
+
+
+                    </li>
+                    <li>
+                        稳定:源 ID 是该原始联系人在在线服务中的数据的永久性组成部分。
+例如,如果用户从应用设置中清除存储的联系人数据并重新同步,则恢复的原始联系人的源 ID 应与以前相同。
+
+如果您不强制执行此要求,快捷方式将停止工作。
+
+                    </li>
+                </ul>
+        </td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Groups}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.GroupsColumns#GROUP_VISIBLE}</td>
+        <td>“0”:此组中的联系人在 Android 应用 UI 中不应处于可见状态。</td>
+        <td>
+            此列用于兼容那些允许用户隐藏特定组中联系人的服务器。
+
+        </td>
+    </tr>
+    <tr>
+        <td>“1”:系统允许此组中的联系人在应用 UI 中处于可见状态。</td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Settings}</td>
+        <td rowspan="2">
+            {@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE}</td>
+        <td>
+            “0”:对于此帐户和帐户类型,未归入组的联系人在 Android 应用 UI 中处于不可见状态。
+
+        </td>
+        <td rowspan="2">
+            默认情况下,如果联系人的所有原始联系人都未归入组,则它们将处于不可见状态(原始联系人的组成员身份通过 {@link android.provider.ContactsContract.Data} 表中的一个或多个
+{@link android.provider.ContactsContract.CommonDataKinds.GroupMembership} 行指示)。
+
+
+            通过在 {@link android.provider.ContactsContract.Settings} 表行中为帐户类型和帐户设置此标志,您可以强制未归入组的联系人处于可见状态。
+
+            此标志的一个用途是显示不使用组的服务器上的联系人。
+        </td>
+    </tr>
+    <tr>
+        <td>
+            “1”:对于此帐户和帐户类型,未归入组的联系人在应用 UI 中处于可见状态。
+
+        </td>
+
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.SyncState}</td>
+        <td>(所有列)</td>
+        <td>
+            此表用于存储同步适配器的元数据。
+        </td>
+        <td>
+            利用此表,您可以将同步状态及其他同步相关数据持久地存储在设备中。
+
+        </td>
+    </tr>
+</table>
+<h2 id="Access">联系人提供程序访问</h2>
+<p>
+    本节描述访问联系人提供程序中数据的准则,侧重于阐述以下内容:
+
+</p>
+<ul>
+    <li>
+        实体查询。
+    </li>
+    <li>
+        批量修改。
+    </li>
+    <li>
+        通过 Intent 执行检索和修改。
+    </li>
+    <li>
+        数据完整性。
+    </li>
+</ul>
+<p>
+    <a href="#SyncAdapters">联系人提供程序同步适配器</a>部分也对通过同步适配器进行修改做了更详尽的阐述。
+
+</p>
+<h3 id="Entities">查询实体</h3>
+<p>
+    由于联系人提供程序表是以层级形式组织,因此对于检索某一行以及与其链接的所有“子”行,往往很有帮助。
+例如,要想显示某位联系人的所有信息,您可能需要检索某个
+{@link android.provider.ContactsContract.Contacts} 行的所有{@link android.provider.ContactsContract.RawContacts} 行,或者检索某个
+{@link android.provider.ContactsContract.RawContacts} 行的所有
+{@link android.provider.ContactsContract.CommonDataKinds.Email} 行。
+
+为便于执行此操作,联系人提供程序提供了<strong>实体</strong>构造,其作用类似于表间的数据库连接。
+
+
+</p>
+<p>
+    实体类似于一个表,由父表及其子表中的选定列组成。
+    当您查询实体时,需要根据实体中的可用列提供投影和搜索条件。
+结果会得到一个 {@link android.database.Cursor},检索的每个子表行在其中都有一行与之对应。
+例如,如果您在
+{@link android.provider.ContactsContract.Contacts.Entity} 中查询某个联系人姓名以及该姓名所有原始联系人的所有 {@link android.provider.ContactsContract.CommonDataKinds.Email} 行,您会获得一个 {@link android.database.Cursor},每个 {@link android.provider.ContactsContract.CommonDataKinds.Email} 行在其中都有一行与之对应。
+
+
+
+</p>
+<p>
+    实体简化了查询。使用实体时,您可以一次性检索联系人或原始联系人的所有联系人数据,而不必先通过查询父表获得ID,然后通过该 ID 查询子表。此外,联系人提供程序可通过单一事务处理实体查询,这确保了所检索数据的内部一致性。
+
+
+
+
+</p>
+<p class="note">
+    <strong>注:</strong>实体通常不包含父表和子表的所有列。
+如果您试图使用的列名称并未出现在实体的列名称常量列表中,则会引发一个 {@link java.lang.Exception}。
+
+</p>
+<p>
+    以下代码段说明如何检索某位联系人的所有原始联系人行。该代码段是一个大型应用的组成部分,包含“主”和“详”两个 Activity。
+主 Activity 显示一个联系人行列表;当用户选择一行时,该 Activity 会将其 ID 发送至详 Activity。
+
+详 Activity 使用 {@link android.provider.ContactsContract.Contacts.Entity} 显示与所选联系人关联的所有原始联系人中的所有数据行。
+
+
+</p>
+<p>
+    以下代码段摘自“detail”Activity:
+</p>
+<pre>
+...
+    /*
+     * Appends the entity path to the URI. In the case of the Contacts Provider, the
+     * expected URI is content://com.google.contacts/#/entity (# is the ID value).
+     */
+    mContactUri = Uri.withAppendedPath(
+            mContactUri,
+            ContactsContract.Contacts.Entity.CONTENT_DIRECTORY);
+
+    // Initializes the loader identified by LOADER_ID.
+    getLoaderManager().initLoader(
+            LOADER_ID,  // The identifier of the loader to initialize
+            null,       // Arguments for the loader (in this case, none)
+            this);      // The context of the activity
+
+    // Creates a new cursor adapter to attach to the list view
+    mCursorAdapter = new SimpleCursorAdapter(
+            this,                        // the context of the activity
+            R.layout.detail_list_item,   // the view item containing the detail widgets
+            mCursor,                     // the backing cursor
+            mFromColumns,                // the columns in the cursor that provide the data
+            mToViews,                    // the views in the view item that display the data
+            0);                          // flags
+
+    // Sets the ListView's backing adapter.
+    mRawContactList.setAdapter(mCursorAdapter);
+...
+&#64;Override
+public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+
+    /*
+     * Sets the columns to retrieve.
+     * RAW_CONTACT_ID is included to identify the raw contact associated with the data row.
+     * DATA1 contains the first column in the data row (usually the most important one).
+     * MIMETYPE indicates the type of data in the data row.
+     */
+    String[] projection =
+        {
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID,
+            ContactsContract.Contacts.Entity.DATA1,
+            ContactsContract.Contacts.Entity.MIMETYPE
+        };
+
+    /*
+     * Sorts the retrieved cursor by raw contact id, to keep all data rows for a single raw
+     * contact collated together.
+     */
+    String sortOrder =
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID +
+            " ASC";
+
+    /*
+     * Returns a new CursorLoader. The arguments are similar to
+     * ContentResolver.query(), except for the Context argument, which supplies the location of
+     * the ContentResolver to use.
+     */
+    return new CursorLoader(
+            getApplicationContext(),  // The activity's context
+            mContactUri,              // The entity content URI for a single contact
+            projection,               // The columns to retrieve
+            null,                     // Retrieve all the raw contacts and their data rows.
+            null,                     //
+            sortOrder);               // Sort by the raw contact ID.
+}
+</pre>
+<p>
+    加载完成时,{@link android.app.LoaderManager} 会调用一个
+{@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished(Loader, D)
+onLoadFinished()} 回调。此方法的传入参数之一是一个
+{@link android.database.Cursor},其中包含查询的结果。在您自己的应用中,您可以从该 {@link android.database.Cursor} 获取数据,以进行显示或做进一步处理。
+
+</p>
+<h3 id="Transactions">批量修改</h3>
+<p>
+    您应尽可能地通过创建一个 {@link android.content.ContentProviderOperation} 对象 {@link java.util.ArrayList}
+并调用 {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()},以“批处理模式”在联系人提供程序中插入、更新和删除数据。
+
+由于联系人提供程序是在
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} 中通过单一事务执行所有操作,因此您的修改绝不会使联系人存储库出现不一致问题。
+
+
+此外,批量修改还有便于同时插入原始联系人及其明细数据。
+
+</p>
+<p class="note">
+    <strong>注:</strong>要修改<em>单个</em>原始联系人,可以考虑向设备的联系人应用发送一个 Intent,而不是在您的应用中处理修改。<a href="#Intents">通过 Intent 执行检索和修改</a>部分对此操作做了更详尽的描述。
+
+
+
+</p>
+<h4>屈服点</h4>
+<p>
+    一个包含大量操作的批量修改可能会阻断其他进程,导致糟糕的总体用户体验。
+要将您想执行的所有修改组织到尽可能少的单独列表中,同时防止它们阻断系统,则应为一项或多项操作设置<strong>屈服点</strong>。
+
+
+    屈服点是一个 {@link android.content.ContentProviderOperation} 对象,其
+{@link android.content.ContentProviderOperation#isYieldAllowed()} 值设置为
+<code>true</code>。当联系人提供程序遇到屈服点时,它会暂停其工作,让其他进程运行,并关闭当前事务。
+当提供程序再次启动时,它会继续执行 {@link java.util.ArrayList} 中的下一项操作,并启动一个新的事务。
+
+
+</p>
+<p>
+    屈服点会导致每次调用
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} 会产生多个事务。因此,您应该为针对一组相关行的最后一项操作设置屈服点。
+
+    例如,您应该为一组操作中添加原始联系人行及其关联数据行的最后一项操作,或者针对一组与一位联系人相关的行的最后一项操作设置屈服点。
+
+
+</p>
+<p>
+    屈服点也是一个原子操作单元。两个屈服点之间所有访问的成功或失败都将以一个单元的形式出现。
+如果您不设置任何屈服点,则最小的原子操作是整个批量操作。
+如果您使用了屈服点,则可以防止操作降低系统性能,还可确保一部分操作是原子操作。
+
+
+</p>
+<h4>修改向后引用</h4>
+<p>
+    当您将一个新原始联系人行及其关联的数据行作为一组
+{@link android.content.ContentProviderOperation} 对象插入时,需要通过将原始联系人的
+{@code android.provider.BaseColumns#_ID} 值作为
+{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID} 值插入,将数据行链接到原始联系人行。
+不过,当您为数据行创建
+{@link android.content.ContentProviderOperation} 时,该值不可用,因为您尚未对原始联系人行应用
+{@link android.content.ContentProviderOperation}。
+为解决此问题,
+{@link android.content.ContentProviderOperation.Builder} 类使用了
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()} 方法。
+    该方法让您可以插入或修改包含上一操作结果的列。
+
+</p>
+<p>
+    {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+方法具有两个参数:
+</p>
+    <dl>
+        <dt>
+            <code>key</code>
+        </dt>
+        <dd>
+            键-值对的键。此参数的值应为您要修改的表中某一列的名称。
+
+        </dd>
+        <dt>
+            <code>previousResult</code>
+        </dt>
+        <dd>
+            {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} 中
+{@link android.content.ContentProviderResult} 对象数组内某一值以 0 开始的索引。
+应用批处理操作时,每个操作的结果都存储在一个中间结果数组内。
+
+<code>previousResult</code> 值是其中一个结果的索引,它通过 <code>key</code>
+值进行检索和存储。
+这样,您就可以插入一条新的原始联系人记录,并取回其
+{@code android.provider.BaseColumns#_ID} 值,然后在添加 {@link android.provider.ContactsContract.Data} 行时“向后引用”该值。
+
+            <p>
+                系统会在您首次调用
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} 时创建整个结果数组,其大小与您提供的 {@link android.content.ContentProviderOperation} 对象的 {@link java.util.ArrayList} 大小相等。
+
+不过,结果数组中的所有元素都设置为 <code>null</code>,如果您试图向后引用某个尚未应用的操作的结果,
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+会引发一个 {@link java.lang.Exception}。
+
+
+
+            </p>
+        </dd>
+    </dl>
+<p>
+    以下代码段说明如何批量插入新原始联系人和数据。代码段中包括用于建立屈服点和使用向后引用的代码。
+这些代码段是扩展版本的 <code>createContacEntry()</code> 方法,该方法是 <code><a href="{@docRoot}resources/samples/ContactManager/index.html">
+    Contact Manager</a></code> 示例应用中 <code>ContactAdder</code> 类的组成部分。
+
+
+
+</p>
+<p>
+    第一个代码段用于检索 UI 中的联系人数据。此时,用户已经选择了应添加新原始联系人的帐户。
+
+</p>
+<pre>
+// Creates a contact entry from the current UI values, using the currently-selected account.
+protected void createContactEntry() {
+    /*
+     * Gets values from the UI
+     */
+    String name = mContactNameEditText.getText().toString();
+    String phone = mContactPhoneEditText.getText().toString();
+    String email = mContactEmailEditText.getText().toString();
+
+    int phoneType = mContactPhoneTypes.get(
+            mContactPhoneTypeSpinner.getSelectedItemPosition());
+
+    int emailType = mContactEmailTypes.get(
+            mContactEmailTypeSpinner.getSelectedItemPosition());
+</pre>
+<p>
+    下一个代码段用于创建将该原始联系人行插入
+{@link android.provider.ContactsContract.RawContacts} 表的操作:
+</p>
+<pre>
+    /*
+     * Prepares the batch operation for inserting a new raw contact and its data. Even if
+     * the Contacts Provider does not have any data for this person, you can't add a Contact,
+     * only a raw contact. The Contacts Provider will then add a Contact automatically.
+     */
+
+     // Creates a new array of ContentProviderOperation objects.
+    ArrayList&lt;ContentProviderOperation&gt; ops =
+            new ArrayList&lt;ContentProviderOperation&gt;();
+
+    /*
+     * Creates a new raw contact with its account type (server type) and account name
+     * (user's account). Remember that the display name is not stored in this row, but in a
+     * StructuredName data row. No other data is required.
+     */
+    ContentProviderOperation.Builder op =
+            ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
+            .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType())
+            .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    接着,代码会创建显示姓名行、电话行和电子邮件行的数据行。
+</p>
+<p>
+    每个操作生成器对象都使用
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+来获取
+{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}。引用指回来自第一次操作的 {@link android.content.ContentProviderResult} 对象,第一次操作就是添加原始联系人行并返回其新 {@code android.provider.BaseColumns#_ID}
+值。
+
+结果是,每个数据行都通过其
+{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}
+自动链接到其所属的 {@link android.provider.ContactsContract.RawContacts} 行。
+</p>
+<p>
+    添加电子邮件行的 {@link android.content.ContentProviderOperation.Builder} 对象带有
+{@link android.content.ContentProviderOperation.Builder#withYieldAllowed(boolean)
+withYieldAllowed()} 标志,用于设置屈服点:
+</p>
+<pre>
+    // Creates the display name for the new raw contact, as a StructuredName data row.
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * withValueBackReference sets the value of the first argument to the value of
+             * the ContentProviderResult indexed by the second argument. In this particular
+             * call, the raw contact ID column of the StructuredName data row is set to the
+             * value of the result returned by the first operation, which is the one that
+             * actually adds the raw contact row.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to StructuredName
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
+
+            // Sets the data row's display name to the name in the UI.
+            .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified phone number and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Phone
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
+
+            // Sets the phone number and type
+            .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone)
+            .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified email and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Email
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
+
+            // Sets the email address and type
+            .withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email)
+            .withValue(ContactsContract.CommonDataKinds.Email.TYPE, emailType);
+
+    /*
+     * Demonstrates a yield point. At the end of this insert, the batch operation's thread
+     * will yield priority to other threads. Use after every set of operations that affect a
+     * single contact, to avoid degrading performance.
+     */
+    op.withYieldAllowed(true);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    最后一个代码段显示的是
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} 调用,用于插入新原始联系人行和数据行。
+
+</p>
+<pre>
+    // Ask the Contacts Provider to create a new contact
+    Log.d(TAG,"Selected account: " + mSelectedAccount.getName() + " (" +
+            mSelectedAccount.getType() + ")");
+    Log.d(TAG,"Creating contact: " + name);
+
+    /*
+     * Applies the array of ContentProviderOperation objects in batch. The results are
+     * discarded.
+     */
+    try {
+
+            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
+    } catch (Exception e) {
+
+            // Display a warning
+            Context ctx = getApplicationContext();
+
+            CharSequence txt = getString(R.string.contactCreationFailure);
+            int duration = Toast.LENGTH_SHORT;
+            Toast toast = Toast.makeText(ctx, txt, duration);
+            toast.show();
+
+            // Log exception
+            Log.e(TAG, "Exception encountered while inserting contact: " + e);
+    }
+}
+</pre>
+<p>
+    此外,您还可以利用批处理操作实现<strong>乐观并发控制</strong>,这是一种无需锁定底层存储库便可应用修改事务的控制方法。
+
+    要使用此方法,您需要应用事务,然后检查是否存在可能已同时做出的其他修改。
+如果您发现了不一致的修改,请回滚事务并重试。
+
+</p>
+<p>
+    乐观并发控制对于移动设备很有用,因为在移动设备上,同一时间只有一位用户,并且同时访问数据存储库的情况很少见。
+由于未使用锁定功能,因此不用浪费时间设置锁定或等待其他事务解除锁定。
+
+</p>
+<p>
+    要在更新某个
+{@link android.provider.ContactsContract.RawContacts} 行时使用乐观并发控制,请按以下步骤操作:
+</p>
+<ol>
+    <li>
+        检索原始联系人的 {@link android.provider.ContactsContract.SyncColumns#VERSION}
+列以及要检索的其他数据。
+    </li>
+    <li>
+        创建一个适合使用
+{@link android.content.ContentProviderOperation#newAssertQuery(Uri)} 方法强制执行约束
+的 {@link android.content.ContentProviderOperation.Builder} 对象。对于内容 URI,请使用追加有原始联系人 {@code android.provider.BaseColumns#_ID} 的 {@link android.provider.ContactsContract.RawContacts#CONTENT_URI
+RawContacts.CONTENT_URI}
+。
+
+    </li>
+    <li>
+        对于 {@link android.content.ContentProviderOperation.Builder} 对象,请调用
+{@link android.content.ContentProviderOperation.Builder#withValue(String, Object)
+withValue()},对 {@link android.provider.ContactsContract.SyncColumns#VERSION}
+列与您刚检索的版本号进行比较。
+    </li>
+    <li>
+        对于同一 {@link android.content.ContentProviderOperation.Builder},请调用
+{@link android.content.ContentProviderOperation.Builder#withExpectedCount(int)
+withExpectedCount()},确保此断言只对一行进行测试。
+    </li>
+    <li>
+        调用 {@link android.content.ContentProviderOperation.Builder#build()} 创建
+{@link android.content.ContentProviderOperation} 对象,然后将此对象添加为要传递至
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} 的 {@link java.util.ArrayList} 中的第一个对象。
+
+    </li>
+    <li>
+        应用批处理事务。
+    </li>
+</ol>
+<p>
+    如果在您读取原始联系人行到您试图对其进行修改这段时间有另一项操作更新了该行,“断言”{@link android.content.ContentProviderOperation}
+将会失败,系统将终止整个批处理操作。
+此情况下,您可以选择重新执行批处理操作,或执行其他某操作。
+
+</p>
+<p>
+    以下代码段演示如何在使用 {@link android.content.CursorLoader} 查询一位原始联系人后创建一个“断言”
+{@link android.content.ContentProviderOperation}:
+
+</p>
+<pre>
+/*
+ * The application uses CursorLoader to query the raw contacts table. The system calls this method
+ * when the load is finished.
+ */
+public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor cursor) {
+
+    // Gets the raw contact's _ID and VERSION values
+    mRawContactID = cursor.getLong(cursor.getColumnIndex(BaseColumns._ID));
+    mVersion = cursor.getInt(cursor.getColumnIndex(SyncColumns.VERSION));
+}
+
+...
+
+// Sets up a Uri for the assert operation
+Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, mRawContactID);
+
+// Creates a builder for the assert operation
+ContentProviderOperation.Builder assertOp = ContentProviderOperation.netAssertQuery(rawContactUri);
+
+// Adds the assertions to the assert operation: checks the version and count of rows tested
+assertOp.withValue(SyncColumns.VERSION, mVersion);
+assertOp.withExpectedCount(1);
+
+// Creates an ArrayList to hold the ContentProviderOperation objects
+ArrayList ops = new ArrayList&lt;ContentProviderOperationg&gt;;
+
+ops.add(assertOp.build());
+
+// You would add the rest of your batch operations to "ops" here
+
+...
+
+// Applies the batch. If the assert fails, an Exception is thrown
+try
+    {
+        ContentProviderResult[] results =
+                getContentResolver().applyBatch(AUTHORITY, ops);
+
+    } catch (OperationApplicationException e) {
+
+        // Actions you want to take if the assert operation fails go here
+    }
+</pre>
+<h3 id="Intents">通过 Intent 执行检索和修改</h3>
+<p>
+    通过向设备的联系人应用发送 Intent,您可以间接访问联系人提供程序。
+ Intent 会启动设备的联系人应用 UI,用户可以在其中执行与联系人有关的操作。
+通过这种访问方式,用户可以:
+    <ul>
+        <li>从列表中选取一位联系人并将其返回给您的应用以执行进一步操作。</li>
+        <li>编辑现有联系人的数据。</li>
+        <li>为其任一帐户插入新原始联系人。</li>
+        <li>删除联系人或联系人数据。</li>
+    </ul>
+<p>
+    如果用户要插入或更新数据,您可以先收集数据,然后将其作为 Intent 的一部分发送。
+
+</p>
+<p>
+    当您使用 Intent 通过设备的联系人应用访问联系人提供程序时,您无需自行编写用于访问该提供程序的 UI 或代码。
+您也无需请求对提供程序的读取或写入权限。
+设备的联系人应用可以将联系人读取权限授予给您,而且您是通过另一个应用对该提供程序进行修改,不需要拥有写入权限。
+
+
+</p>
+<p>
+    <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">内容提供程序基础知识</a>指南“通过 Intent 访问数据”部分详细描述了通过发送 Intent 来访问某提供程序的一般过程。
+
+表 4 汇总了您为可用任务使用的操作、MIME 类型以及数据值,{@link android.provider.ContactsContract.Intents.Insert} 参考文档列出了您可用于{@link android.content.Intent#putExtra(String, String) putExtra()} 的 Extra 值:
+
+
+
+
+</p>
+<p class="table-caption" id="table4">
+  <strong>表 4. </strong>联系人提供程序 Intent。
+</p>
+<table style="width:75%">
+    <tr>
+        <th scope="col" style="width:10%">任务</th>
+        <th scope="col" style="width:5%">操作</th>
+        <th scope="col" style="width:10%">数据</th>
+        <th scope="col" style="width:10%">MIME 类型</th>
+        <th scope="col" style="width:25%">备注</th>
+    </tr>
+    <tr>
+        <td><strong>从列表中选取一位联系人</strong></td>
+        <td>{@link android.content.Intent#ACTION_PICK}</td>
+        <td>
+            下列值之一:
+            <ul>
+                <li>
+{@link android.provider.ContactsContract.Contacts#CONTENT_URI Contacts.CONTENT_URI},显示联系人列表。
+
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Phone#CONTENT_URI Phone.CONTENT_URI},显示原始联系人的电话号码列表。
+
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal#CONTENT_URI
+StructuredPostal.CONTENT_URI},显示原始联系人的邮政地址列表。
+
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_URI Email.CONTENT_URI},显示原始联系人的电子邮件地址列表。
+
+                </li>
+            </ul>
+        </td>
+        <td>
+            未使用
+        </td>
+        <td>
+            显示原始联系人列表或一位原始联系人的数据列表,具体取决于您提供的内容 URI 类型。
+
+            <p>
+                调用
+ {@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()} 方法,该方法返回所选行的内容 URI。
+该 URI 的形式为:追加有该行 <code>LOOKUP_ID</code> 的表的内容 URI。
+
+                设备的联系人应用会在 Activity 的生命周期内将读取和写入权限授予给此内容 URI。
+如需了解更多详细信息,请参阅<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">内容提供程序基础知识</a>指南。
+
+
+            </p>
+        </td>
+    </tr>
+    <tr>
+        <td><strong>插入新原始联系人</strong></td>
+        <td>{@link android.provider.ContactsContract.Intents.Insert#ACTION Insert.ACTION}</td>
+        <td>不适用</td>
+        <td>
+            {@link android.provider.ContactsContract.RawContacts#CONTENT_TYPE
+RawContacts.CONTENT_TYPE},用于一组原始联系人的 MIME 类型。
+        </td>
+        <td>
+            显示设备联系人应用的<strong>添加联系人</strong>屏幕。系统会显示您添加到 Intent 中的 Extra 值。
+如果是随
+{@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()}
+ 发送,系统会将新添加的原始联系人的内容 URI 传回给
+{@link android.app.Activity#onActivityResult(int, int, Intent) onActivityResult()}
+回调方法并作为后者 {@link android.content.Intent} 参数的“data”字段。
+要获取该值,请调用 {@link android.content.Intent#getData()}。
+        </td>
+    </tr>
+    <tr>
+        <td><strong>编辑联系人</strong></td>
+        <td>{@link android.content.Intent#ACTION_EDIT}</td>
+        <td>
+            该联系人的 {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI}。
+该编辑器 Activity 让用户能够对任何与该联系人关联的数据进行编辑。
+
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE
+Contacts.CONTENT_ITEM_TYPE},一位联系人。</td>
+        <td>
+            显示联系人应用中的“编辑联系人”屏幕。系统会显示您添加到 Intent 中的 Extra 值。
+当用户点击<strong>完成</strong>保存编辑时,您的 Activity 会返回前台。
+
+        </td>
+    </tr>
+    <tr>
+        <td><strong>显示一个同样可以添加数据的选取器。</strong></td>
+        <td>{@link android.content.Intent#ACTION_INSERT_OR_EDIT}</td>
+        <td>
+            不适用
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE}
+        </td>
+         <td>
+            此 Intent 始终显示联系人应用的选取器屏幕。用户可以选取要编辑的联系人,或添加新联系人。
+根据用户的选择,系统会显示编辑屏幕或添加屏幕,还会显示您使用 Intent 传递的 Extra 数据。
+
+如果您的应用显示电子邮件或电话号码等联系人数据,请使用此 Intent 来允许用户向现有联系人添加数据。
+
+
+            <p class="note">
+                <strong>注:</strong>不需要通过此 Intent 的 Extra 发送姓名值,因为用户总是会选取现有姓名或添加新姓名。
+此外,如果您发送姓名,并且用户选择执行编辑操作,则联系人应用将显示您发送的姓名,该姓名将覆盖以前的值。
+
+如果用户未注意这一情况便保存了编辑,原有值将会丢失。
+
+            </p>
+         </td>
+    </tr>
+</table>
+<p>
+    设备的联系人应用不允许您使用 Intent 删除原始联系人或其任何数据。
+因此,要删除原始联系人,请使用
+{@link android.content.ContentResolver#delete(Uri, String, String[]) ContentResolver.delete()}
+或 {@link android.content.ContentProviderOperation#newDelete(Uri)
+ContentProviderOperation.newDelete()}。
+</p>
+<p>
+    以下代码段说明如何构建和发送一个插入新原始联系人和数据的 Intent:
+
+</p>
+<pre>
+// Gets values from the UI
+String name = mContactNameEditText.getText().toString();
+String phone = mContactPhoneEditText.getText().toString();
+String email = mContactEmailEditText.getText().toString();
+
+String company = mCompanyName.getText().toString();
+String jobtitle = mJobTitle.getText().toString();
+
+// Creates a new intent for sending to the device's contacts application
+Intent insertIntent = new Intent(ContactsContract.Intents.Insert.ACTION);
+
+// Sets the MIME type to the one expected by the insertion activity
+insertIntent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
+
+// Sets the new contact name
+insertIntent.putExtra(ContactsContract.Intents.Insert.NAME, name);
+
+// Sets the new company and job title
+insertIntent.putExtra(ContactsContract.Intents.Insert.COMPANY, company);
+insertIntent.putExtra(ContactsContract.Intents.Insert.JOB_TITLE, jobtitle);
+
+/*
+ * Demonstrates adding data rows as an array list associated with the DATA key
+ */
+
+// Defines an array list to contain the ContentValues objects for each row
+ArrayList&lt;ContentValues&gt; contactData = new ArrayList&lt;ContentValues&gt;();
+
+
+/*
+ * Defines the raw contact row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues rawContactRow = new ContentValues();
+
+// Adds the account type and name to the row
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType());
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+// Adds the row to the array
+contactData.add(rawContactRow);
+
+/*
+ * Sets up the phone number data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues phoneRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+phoneRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
+);
+
+// Adds the phone number and its type to the row
+phoneRow.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone);
+
+// Adds the row to the array
+contactData.add(phoneRow);
+
+/*
+ * Sets up the email data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues emailRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+emailRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE
+);
+
+// Adds the email address and its type to the row
+emailRow.put(ContactsContract.CommonDataKinds.Email.ADDRESS, email);
+
+// Adds the row to the array
+contactData.add(emailRow);
+
+/*
+ * Adds the array to the intent's extras. It must be a parcelable object in order to
+ * travel between processes. The device's contacts app expects its key to be
+ * Intents.Insert.DATA
+ */
+insertIntent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, contactData);
+
+// Send out the intent to start the device's contacts app in its add contact activity.
+startActivity(insertIntent);
+</pre>
+<h3 id="DataIntegrity">数据完整性</h3>
+<p>
+    联系人存储库包含用户认为是正确且是最新的重要敏感数据,因此联系人提供程序具有规定清晰的数据完整性规则。
+您有责任在修改联系人数据时遵守这些规则。
+以下列出了其中的重要规则:
+
+</p>
+<dl>
+    <dt>
+        务必为您添加的每个 {@link android.provider.ContactsContract.RawContacts} 行添加一个 {@link android.provider.ContactsContract.CommonDataKinds.StructuredName} 行。
+
+    </dt>
+    <dd>
+        如果 {@link android.provider.ContactsContract.Data} 表中的
+{@link android.provider.ContactsContract.RawContacts} 行没有
+{@link android.provider.ContactsContract.CommonDataKinds.StructuredName} 行,可能会在聚合时引发问题。
+
+    </dd>
+    <dt>
+        务必将新 {@link android.provider.ContactsContract.Data} 行链接到其父
+{@link android.provider.ContactsContract.RawContacts} 行。
+    </dt>
+    <dd>
+        如果 {@link android.provider.ContactsContract.Data} 行未链接到
+{@link android.provider.ContactsContract.RawContacts},则其在设备的联系人应用中将处于不可见状态,而且这可能会导致同步适配器出现问题。
+
+    </dd>
+    <dt>
+        请仅更改您拥有的那些原始联系人的数据。
+    </dt>
+    <dd>
+        请切记,联系人提供程序所管理的数据通常来自多个不同帐户类型/在线服务。
+您需要确保您的应用仅修改或删除归您所有的行的数据,并且仅通过您控制的帐户类型和帐户名称插入数据。
+
+
+    </dd>
+    <dt>
+        务必使用在 {@link android.provider.ContactsContract} 及其子类中为权限、内容 URI、URI 路径、列名称、MIME 类型以及
+{@link android.provider.ContactsContract.CommonDataKinds.CommonColumns#TYPE} 值定义的常量。
+
+    </dt>
+    <dd>
+        使用这些常量有助于您避免错误。如有任何常量被弃用,您还会从编译器警告收到通知。
+
+    </dd>
+</dl>
+<h3 id="CustomData">自定义数据行</h3>
+<p>
+    通过创建和使用自己的自定义 MIME 类型,您可以在 {@link android.provider.ContactsContract.Data} 表中插入、编辑、删除和检索您的自有数据行。
+这些行仅限使用 {@link android.provider.ContactsContract.DataColumns} 中定义的列,但您可以将您自己的类型专用列名称映射到默认列名称。
+
+
+在设备的联系人应用中,会显示这些行的数据,但无法对其进行编辑或删除,用户也无法添加其他数据。
+
+要允许用户修改您的自定义数据行,您必须在自己的应用中提供编辑器 Activity。
+
+</p>
+<p>
+    要显示您的自定义数据,请提供一个 <code>contacts.xml</code> 文件,其中须包含一个
+<code>&lt;ContactsAccountType&gt;</code> 元素,及其一个或多个
+<code>&lt;ContactsDataKind&gt;</code> 子元素。<a href="#SocialStreamDataKind"><code>&lt;ContactsDataKind&gt; element</code></a> 部分对此做了更详尽的描述。
+
+</p>
+<p>
+    如需了解有关自定义 MIME 类型的更多信息,请阅读<a href="{@docRoot}guide/topics/providers/content-provider-creating.html">创建内容提供程序</a>指南。
+
+
+</p>
+<h2 id="SyncAdapters">联系人提供程序同步适配器</h2>
+<p>
+    联系人提供程序专门设计用于处理设备与在线服务之间的联系人数据<strong>同步</strong>。
+借助同步功能,用户可以将现有数据下载到新设备,以及将现有数据上传到新帐户。
+
+    此外,同步还能确保用户掌握最新数据,无需考虑数据增加和更改的来源。
+同步的另一个优点是,即使设备未连接网络,联系人数据同样可用。
+
+</p>
+<p>
+    虽然您可以通过各种方式实现同步,不过 Android 系统提供了一个插件同步框架,可自动化完成下列任务:
+
+    <ul>
+
+    <li>
+        检查网络可用性。
+    </li>
+    <li>
+        根据用户偏好安排和执行同步。
+    </li>
+    <li>
+        重启已停止的同步。
+    </li>
+    </ul>
+<p>
+    要使用此框架,您需要提供一个同步适配器插件。每个同步适配器都专用于某个服务和内容提供程序,但可以处理同一服务的多个帐户名称。
+该框架还允许同一服务和提供程序具有多个同步适配器。
+
+</p>
+<h3 id="SyncClassesFiles">同步适配器类和文件</h3>
+<p>
+    您需要将同步适配器作为
+{@link android.content.AbstractThreadedSyncAdapter} 的子类进行实现,并作为 Android
+应用的一部分进行安装。系统通过您的应用清单文件中的元素以及由清单文件指向的一个特殊 XML 文件了解有关同步适配器的信息。
+该 XML 文件定义在线服务的帐户类型和内容提供程序的权限,它们共同对适配器进行唯一标识。
+
+用户为同步适配器的帐户类型添加一个帐户,并为与同步适配器同步的内容提供程序启用同步后,同步适配器才会激活。
+
+激活后,系统将开始管理适配器,并在必要时调用它,以在内容提供程序与服务器之间同步数据。
+
+</p>
+<p class="note">
+    <strong>注:</strong>将帐户类型用作同步适配器标识的一部分让系统可以发现从同一组织访问不同服务的同步适配器,并将它们组合在一起。
+
+例如,Google 在线服务的同步适配器都具有相同的帐户类型 <code>com.google</code>。
+当用户向其设备添加 Google 帐户时,已安装的所有 Google 服务同步适配器将一起列出;列出的每个同步适配器都与设备上不同的内容提供程序同步。
+
+
+</p>
+<p>
+    大多数服务都要求用户验证身份后才能访问数据,为此,Android 系统提供了一个身份验证框架,该框架与同步适配器框架类似,并且经常与其联用。
+
+该身份验证框架使用的插件身份验证器是
+{@link android.accounts.AbstractAccountAuthenticator} 的子类。
+身份验证器通过下列步骤验证用户的身份:
+
+    <ol>
+        <li>
+            收集用户名、用户密码或类似信息(用户的<strong>凭据</strong>)。
+
+        </li>
+        <li>
+            将凭据发送给服务
+        </li>
+        <li>
+            检查服务的回复。
+        </li>
+    </ol>
+<p>
+    如果服务接受了凭据,身份验证器便可存储凭据以供日后使用。
+由于插件身份验证器框架的存在,{@link android.accounts.AccountManager} 可以提供对身份验证器支持并选择公开的任何身份验证令牌(例如 OAuth2 身份验证令牌)的访问。
+
+
+</p>
+<p>
+    尽管身份验证并非必需,但大多数联系人服务都会使用它。
+    不过,您不一定要使用 Android 身份验证框架进行身份验证。
+</p>
+<h3 id="SyncAdapterImplementing">同步适配器实现</h3>
+<p>
+    要为联系人提供程序实现同步适配器,您首先要创建一个包含以下内容的
+Android 应用:
+</p>
+    <dl>
+        <dt>
+            一个 {@link android.app.Service} 组件,用于响应系统发出的绑定到同步适配器的请求。
+
+        </dt>
+        <dd>
+            当系统想要运行同步时,它会调用服务的
+{@link android.app.Service#onBind(Intent) onBind()} 方法,为同步适配器获取一个
+{@link android.os.IBinder}。这样,系统便可跨进程调用适配器的方法。
+
+            <p>
+                在<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">示例同步适配器</a>示例应用中,该服务的类名是 <code>com.example.android.samplesync.syncadapter.SyncService</code>。
+
+
+            </p>
+        </dd>
+        <dt>
+            作为
+{@link android.content.AbstractThreadedSyncAdapter} 具体子类实现的实际同步适配器。
+        </dt>
+        <dd>
+            此类的作用是从服务器下载数据、从设备上传数据以及解决冲突。
+适配器的主要工作是在方法 {@link android.content.AbstractThreadedSyncAdapter#onPerformSync(
+Account, Bundle, String, ContentProviderClient, SyncResult)
+onPerformSync()} 中完成的。
+必须将此类实例化为单一实例。
+            <p>
+                在<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">示例同步适配器</a>示例应用中,同步适配器是在 <code>com.example.android.samplesync.syncadapter.SyncAdapter</code> 类中定义的。
+
+
+            </p>
+        </dd>
+        <dt>
+            {@link android.app.Application} 的子类。
+        </dt>
+        <dd>
+            此类充当同步适配器单一实例的工厂。使用
+{@link android.app.Application#onCreate()} 方法实例化同步适配器,并提供一个静态“getter”方法,使单一实例返回同步适配器服务的
+{@link android.app.Service#onBind(Intent) onBind()} 方法。
+
+
+        </dd>
+        <dt>
+            <strong>可选:</strong>一个 {@link android.app.Service} 组件,用于响应系统发出的用户身份验证请求。
+
+        </dt>
+        <dd>
+            {@link android.accounts.AccountManager} 会启动此服务以开始身份验证流程。
+该服务的 {@link android.app.Service#onCreate()} 方法会将一个身份验证器对象实例化。
+当系统想要对应用同步适配器的用户帐户进行身份验证时,它会调用该服务的
+{@link android.app.Service#onBind(Intent) onBind()} 方法,为该身份验证器获取一个
+{@link android.os.IBinder}。
+这样,系统便可跨进程调用身份验证器的方法。
+
+            <p>
+                在<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">示例同步适配器</a>示例应用中,该服务的类名是 <code>com.example.android.samplesync.authenticator.AuthenticationService</code>。
+
+
+            </p>
+        </dd>
+        <dt>
+            <strong>可选:</strong>一个用于处理身份验证请求的
+{@link android.accounts.AbstractAccountAuthenticator} 具体子类。
+
+        </dt>
+        <dd>
+            {@link android.accounts.AccountManager} 就是调用此类所提供的方法向服务器验证用户的凭据。
+详细的身份验证过程会因服务器所采用技术的不同而有很大差异。
+您应该参阅服务器软件的文档,了解有关身份验证的更多信息。
+
+            <p>
+                在<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">示例同步适配器</a>示例应用中,身份验证器是在 <code>com.example.android.samplesync.authenticator.Authenticator</code> 类中定义的。
+
+
+            </p>
+        </dd>
+        <dt>
+            用于定义系统同步适配器和身份验证器的 XML 文件。
+        </dt>
+        <dd>
+            之前描述的同步适配器和身份验证器服务组件都是在应用清单文件中的
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/service-element.html">service</a>&gt;</code>
+元素内定义的。
+这些元素包含以下用于向系统提供特定数据的
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+子元素:
+
+
+            <ul>
+                <li>
+                    同步适配器服务的
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+元素指向
+XML 文件 <code>res/xml/syncadapter.xml</code>。而该文件则指定将与联系人提供程序同步的 Web 服务的 URI,以及指定该 Web 服务的帐户类型。
+
+
+                </li>
+                <li>
+                    <strong>可选:</strong>身份验证器的
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code>
+元素指向 XML 文件
+<code>res/xml/authenticator.xml</code>。而该文件则指定此身份验证器所支持的帐户类型,以及指定身份验证过程中出现的 UI 资源。
+
+在此元素中指定的帐户类型必须与为同步适配器指定的帐户类型相同。
+
+
+                </li>
+            </ul>
+        </dd>
+    </dl>
+<h2 id="SocialStream">社交流数据</h2>
+<p>
+    {@code android.provider.ContactsContract.StreamItems} 表和
+{@code android.provider.ContactsContract.StreamItemPhotos} 表管理来自社交网络的传入数据。
+您可以编写一个同步适配器,用其将您自己社交网络中的流数据添加到这些表中,也可以从这些表读取流数据并将其显示在您的自有应用中,或者同时采用这两种方法。
+
+利用这些功能,可以将您的社交网络服务和应用集成到 Android 的社交网络体验之中。
+
+</p>
+<h3 id="StreamText">社交流文本</h3>
+<p>
+    流项目始终与原始联系人关联。
+{@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID} 链接到原始联系人的 <code>_ID</code> 值。
+原始联系人的帐户类型和帐户名称也存储在流项目行中。
+
+</p>
+<p>
+    将您的流数据存储在以下列:
+</p>
+<dl>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_TYPE}
+    </dt>
+    <dd>
+        <strong>必备。</strong>与该流项目关联的原始联系人对应的用户帐户类型。
+请记得在插入流项目时设置此值。
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_NAME}
+    </dt>
+    <dd>
+        <strong>必备。</strong>与该流项目关联的原始联系人对应的用户帐户名称。
+请记得在插入流项目时设置此值。
+    </dd>
+    <dt>
+        标识符列
+    </dt>
+    <dd>
+        <strong>必备。</strong>您必须在插入流项目时插入下列标识符列:
+
+        <ul>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_ID}:此流项目关联的联系人的
+{@code android.provider.BaseColumns#_ID} 值。
+
+            </li>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_LOOKUP_KEY}:此流项目关联的联系人的
+{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} 值。
+
+            </li>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}:此流项目关联的原始联系人的
+{@code android.provider.BaseColumns#_ID} 值。
+
+            </li>
+        </ul>
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#COMMENTS}
+    </dt>
+    <dd>
+        可选。存储可在流项目开头显示的摘要信息。
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#TEXT}
+    </dt>
+    <dd>
+        流项目的文本,或为项目来源发布的内容,或是对生成流项目的某项操作的描述。
+此列可包含可由
+{@link android.text.Html#fromHtml(String) fromHtml()} 渲染的任何格式设置和嵌入式资源图像。
+提供程序可能会截断或省略较长内容,但它会尽力避免破坏标记。
+
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP}
+    </dt>
+    <dd>
+        一个包含流项目插入时间或更新时间的文本字符串,以从公元纪年开始计算的<em>毫秒数</em>形式表示。
+此列由插入或更新流项目的应用负责维护;联系人提供程序不会自动对其进行维护。
+
+
+    </dd>
+</dl>
+<p>
+    要显示您的流项目的标识信息,请使用
+{@code android.provider.ContactsContract.StreamItemsColumns#RES_ICON}、
+{@code android.provider.ContactsContract.StreamItemsColumns#RES_LABEL} 和
+{@code android.provider.ContactsContract.StreamItemsColumns#RES_PACKAGE} 链接到您的应用中的资源。
+
+</p>
+<p>
+    {@code android.provider.ContactsContract.StreamItems} 表还包含供同步适配器专用的列
+{@code android.provider.ContactsContract.StreamItemsColumns#SYNC1} 至
+{@code android.provider.ContactsContract.StreamItemsColumns#SYNC4}。
+
+</p>
+<h3 id="StreamPhotos">社交流照片</h3>
+<p>
+   {@code android.provider.ContactsContract.StreamItemPhotos} 表存储与流项目关联的照片。
+该表的
+{@code android.provider.ContactsContract.StreamItemPhotosColumns#STREAM_ITEM_ID}列链接到 {@code android.provider.ContactsContract.StreamItems} 表 {@code android.provider.BaseColumns#_ID} 列中的值。
+
+照片引用存储在表中的以下列:
+
+</p>
+<dl>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotos#PHOTO} 列(一个二进制大型对象)。
+    </dt>
+    <dd>
+        照片的二进制表示,为便于存储和显示,由提供程序调整了尺寸。
+        此列可用于向后兼容使用它来存储照片的旧版本联系人提供程序。
+不过,在当前版本中,您不应使用此列来存储照片,
+而应使用
+{@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID} 或
+{@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI}(下文对两者都做了描述)将照片存储在一个文件内。
+此列现在包含可用于读取的照片缩略图。
+
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID}
+    </dt>
+    <dd>
+        原始联系人照片的数字标识符。将此值追加到常量
+{@link android.provider.ContactsContract.DisplayPhoto#CONTENT_URI DisplayPhoto.CONTENT_URI},获取指向单一照片文件的内容 URI,然后调用
+{@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
+openAssetFileDescriptor()} 来获取照片文件的句柄。
+
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI}
+    </dt>
+    <dd>
+        一个内容 URI,直接指向此行所表示的照片的照片文件。
+        通过此 URI 调用 {@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
+openAssetFileDescriptor()} 以获得照片文件的句柄。
+    </dd>
+</dl>
+<h3 id="SocialStreamTables">使用社交流表</h3>
+<p>
+    这些表的工作方式与联系人提供程序中的其他主表基本相同,不同的是:
+</p>
+    <ul>
+        <li>
+            这些表需要额外的访问权限。要读取它们的数据,您的应用必须具有 {@code android.Manifest.permission#READ_SOCIAL_STREAM} 权限。
+要修改它们,您的应用必须具有
+{@code android.Manifest.permission#WRITE_SOCIAL_STREAM} 权限。
+
+        </li>
+        <li>
+            对于 {@code android.provider.ContactsContract.StreamItems} 表,为每一位原始联系人存储的行数有限。
+一旦达到该限制,联系人提供程序即会自动删除
+{@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP} 最早的行,为新流项目行腾出空间。
+
+要获取该限制,请发出对内容 URI
+{@code android.provider.ContactsContract.StreamItems#CONTENT_LIMIT_URI} 的查询。
+您可以将内容 URI 以外的所有其他参数保持设置为 <code>null</code>。
+查询会返回一个 Cursor,其中包含一行,并且只有
+{@code android.provider.ContactsContract.StreamItems#MAX_ITEMS} 一列。
+
+        </li>
+    </ul>
+
+<p>
+    {@code android.provider.ContactsContract.StreamItems.StreamItemPhotos} 类定义了
+ {@code android.provider.ContactsContract.StreamItemPhotos} 的一个子表,其中包含某个流项目的照片行。
+
+</p>
+<h3 id="SocialStreamInteraction">社交流交互</h3>
+<p>
+    通过将联系人提供程序管理的社交流数据与设备的联系人应用相结合,可以在您的社交网络系统与现有联系人之间建立起有效的连接。
+
+这种结合实现了下列功能:
+</p>
+    <ul>
+        <li>
+            您可以通过同步适配器让您的社交网络服务与联系人提供程序同步,检索用户联系人的近期 Activity,并将其存储在
+ {@code android.provider.ContactsContract.StreamItems} 表和
+{@code android.provider.ContactsContract.StreamItemPhotos} 表中,以供日后使用。
+
+        </li>
+        <li>
+            除了定期同步外,您还可以在用户选择某位联系人进行查看时触发您的同步适配器以检索更多数据。
+这样,您的同步适配器便可检索该联系人的高分辨率照片和最近流项目。
+
+        </li>
+        <li>
+            通过在设备的联系人应用以及联系人提供程序中注册通知功能,您可以在用户查看联系人时<em>收到</em>一个 Intent,并在那时通过您的服务更新联系人的状态。
+
+与通过同步适配器执行完全同步相比,此方法可能更快速,占用的带宽也更少。
+
+        </li>
+        <li>
+            用户可以在查看设备联系人应用中的联系人时,将其添加到您的社交网络服务。
+您可以通过“邀请联系人”功能实现此目的,而该功能则是通过将 Activity 与 XML 文件结合使用来实现的,前者将现有联系人添加到您的社交网络,后者为设备的联系人应用以及联系人提供程序提供有关您的应用的详细信息。
+
+
+
+        </li>
+    </ul>
+<p>
+    流项目与联系人提供程序的定期同步与其他同步相同。
+如需了解有关同步的更多信息,请参阅
+<a href="#SyncAdapters">联系人提供程序同步适配器</a>部分。接下来的两节介绍如何注册通知和邀请联系人。
+
+</p>
+<h4>通过注册处理社交网络查看</h4>
+<p>
+    要注册您的同步适配器,以便在用户查看由您的同步适配器管理的联系人时收到通知,请执行以下步骤:
+
+</p>
+<ol>
+    <li>
+        在您项目的 <code>res/xml/</code> 目录中创建一个名为 <code>contacts.xml</code> 的文件。
+如果您已有该文件,可跳过此步骤。
+    </li>
+    <li>
+        在该文件中添加元素
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>。
+        如果该元素已存在,可跳过此步骤。
+    </li>
+    <li>
+        要注册一项服务,以便在用户于设备的联系人应用中打开某位联系人的详细信息页面时通知该服务,请为该元素添加
+<code>viewContactNotifyService="<em>serviceclass</em>"</code> 属性,其中
+<code><em>serviceclass</em></code> 是该服务的完全限定类名,应由该服务接收来自设备联系人应用的 Intent。
+
+对于这个通知程序服务,请使用一个扩展 {@link android.app.IntentService} 的类,以让该服务能够接收 Intent。
+
+传入 Intent 中的数据包含用户点击的原始联系人的内容 URI。
+您可以通过通知程序服务绑定到您的同步适配器,然后调用同步适配器来更新原始联系人的数据。
+
+    </li>
+</ol>
+<p>
+    要注册需要在用户点击流项目或照片(或同时点击这两者)时调用的 Activity,请执行以下步骤:
+</p>
+<ol>
+    <li>
+        在您项目的 <code>res/xml/</code> 目录中创建一个名为 <code>contacts.xml</code> 的文件。
+如果您已有该文件,可跳过此步骤。
+    </li>
+    <li>
+        在该文件中添加元素
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>。
+        如果该元素已存在,可跳过此步骤。
+    </li>
+    <li>
+        要注册某个 Activity,以处理用户在设备联系人应用中点击某个流项目的操作,请为该元素添加
+<code>viewStreamItemActivity="<em>activityclass</em>"</code> 属性,其中
+<code><em>activityclass</em></code> 是该 Activity 的完全限定类名,应由该 Activity 接收来自设备联系人应用的 Intent。
+
+
+    </li>
+    <li>
+        要注册某个 Activity,以处理用户在设备联系人应用中点击某个流照片的操作,请为该元素添加
+<code>viewStreamItemPhotoActivity="<em>activityclass</em>"</code> 属性,其中
+<code><em>activityclass</em></code> 是该 Activity 的完全限定类名,应由该 Activity 接收来自设备联系人应用的 Intent。
+
+
+    </li>
+</ol>
+<p>
+    <a href="#SocialStreamAcctType">&lt;ContactsAccountType&gt; 元素</a>部分对 <code>&lt;ContactsAccountType&gt;</code> 元素做了更详尽的描述。
+
+</p>
+<p>
+    传入 Intent 包含用户点击的项目或照片的内容 URI。
+    要让文本项目和照片具有独立的 Activity,请在同一文件中使用这两个属性。
+</p>
+<h4>与您的社交网络服务交互</h4>
+<p>
+    用户不必为了邀请联系人到您的社交网络网站而离开设备的联系人应用。
+取而代之是,您可以让设备的联系人应用发送一个 Intent,将联系人
+邀请到您的 Activity 之一。要设置此功能,请执行以下步骤:
+</p>
+<ol>
+    <li>
+        在您项目的 <code>res/xml/</code> 目录中创建一个名为 <code>contacts.xml</code> 的文件。
+如果您已有该文件,可跳过此步骤。
+    </li>
+    <li>
+        在该文件中添加元素
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code>。
+        如果该元素已存在,可跳过此步骤。
+    </li>
+    <li>
+        添加以下属性:
+        <ul>
+            <li><code>inviteContactActivity="<em>activityclass</em>"</code></li>
+            <li>
+                <code>inviteContactActionLabel="&#64;string/<em>invite_action_label</em>"</code>
+            </li>
+        </ul>
+        <code><em>activityclass</em></code> 值是应该接收该 Intent 的 Activity 的完全限定类名。
+<code><em>invite_action_label</em></code>
+值是一个文本字符串,将显示在设备联系人应用的 <strong>Add Connection</strong> 菜单中。
+
+    </li>
+</ol>
+<p class="note">
+    <strong>注:</strong><code>ContactsSource</code> 是
+<code>ContactsAccountType</code> 的一个已弃用的标记名称。
+</p>
+<h3 id="ContactsFile">contacts.xml 引用</h3>
+<p>
+    文件 <code>contacts.xml</code> 包含一些 XML 元素,这些元素控制您的同步适配器和应用与联系人应用及联系人提供程序的交互。
+下文对这些元素做了描述。
+
+</p>
+<h4 id="SocialStreamAcctType">&lt;ContactsAccountType&gt; 元素</h4>
+<p>
+    <code>&lt;ContactsAccountType&gt;</code> 元素控制您的应用与联系人应用的交互。
+它采用了以下语法:
+</p>
+<pre>
+&lt;ContactsAccountType
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        inviteContactActivity="<em>activity_name</em>"
+        inviteContactActionLabel="<em>invite_command_text</em>"
+        viewContactNotifyService="<em>view_notify_service</em>"
+        viewGroupActivity="<em>group_view_activity</em>"
+        viewGroupActionLabel="<em>group_action_text</em>"
+        viewStreamItemActivity="<em>viewstream_activity_name</em>"
+        viewStreamItemPhotoActivity="<em>viewphotostream_activity_name</em>"&gt;
+</pre>
+<p>
+    <strong>包含它的文件:</strong>
+</p>
+<p>
+    <code>res/xml/contacts.xml</code>
+</p>
+<p>
+    <strong>可能包含的内容:</strong>
+</p>
+<p>
+    <strong><code>&lt;ContactsDataKind&gt;</code></strong>
+</p>
+<p>
+    <strong>描述:</strong>
+</p>
+<p>
+    声明 Android 组件和 UI 标签,让用户能够邀请他们的一位联系人加入社交网络,在他们的某个社交网络流更新时通知用户,以及执行其他操作。
+
+
+</p>
+<p>
+    请注意,对 <code>&lt;ContactsAccountType&gt;</code> 的属性而言,属性前缀 <code>android:</code> 并非必需的。
+
+</p>
+<p>
+    <strong>属性:</strong>
+</p>
+<dl>
+    <dt>{@code inviteContactActivity}</dt>
+    <dd>
+        您的应用中某个 Activity 的完全限定类名,您想要在用户于设备的联系人应用中选择 <strong>Add connection</strong> 时激活该 Activity。
+
+
+    </dd>
+    <dt>{@code inviteContactActionLabel}</dt>
+    <dd>
+        <strong>Add connection</strong> 菜单中为
+{@code inviteContactActivity} 中指定的 Activity 显示的文本字符串。
+        例如,您可以使用字符串“Follow in my network”。您可以为此标签使用字符串资源标识符。
+
+    </dd>
+    <dt>{@code viewContactNotifyService}</dt>
+    <dd>
+        您的应用中某项服务的完全限定类名,当用户查看联系人时,应由该服务接收通知。
+此通知由设备的联系人应用发送;您的应用可以根据通知将数据密集型操作推迟到必要时再执行。
+
+例如,您的应用对此通知的响应可以是:读入并显示联系人的高分辨率照片和最近的社交流项目。
+
+<a href="#SocialStreamInteraction">社交流交互</a>部分对此功能做了更详尽的描述。
+您可以在
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a> 示例应用的 <code>NotifierService.java</code> 文件中查看通知服务的示例。
+
+
+    </dd>
+    <dt>{@code viewGroupActivity}</dt>
+    <dd>
+        您的应用中某个可显示组信息的 Activity 的完全限定类名。
+当用户点击设备联系人应用中的组标签时,将显示此 Activity 的 UI。
+
+    </dd>
+    <dt>{@code viewGroupActionLabel}</dt>
+    <dd>
+        联系人应用为某个 UI 控件显示的标签,用户可通过该控件查看您的应用中的组。
+
+        <p>
+            例如,如果您在设备上安装了 Google+ 应用,并将
+Google+ 与联系人应用同步,就会看到 Google+ 圈子以组的形式出现在您的联系人应用的 <strong>Groups</strong> 选项卡内。
+如果您点击某个
+Google+ 圈子,就会看到该圈子内的联系人以“组”的形式列出。在该显示页面的顶部,您会看到一个 Google+ 图标;如果您点击它,控制权将切换给
+Google+ 应用。联系人应用以 Google+ 图标作为 {@code viewGroupActionLabel} 的值,通过
+{@code viewGroupActivity} 来实现此目的。
+
+
+        </p>
+        <p>
+            允许使用字符串资源标识符作为该属性的值。
+        </p>
+    </dd>
+    <dt>{@code viewStreamItemActivity}</dt>
+    <dd>
+        您的应用中某个 Activity 的完全限定类名,设备的联系人应用会在用户点击原始联系人的流项目时启动该 Activity。
+
+    </dd>
+    <dt>{@code viewStreamItemPhotoActivity}</dt>
+    <dd>
+        您的应用中某个 Activity 的完全限定类名,设备的联系人应用会在用户点击原始联系人流项目中的照片时启动该 Activity。
+
+
+    </dd>
+</dl>
+<h4 id="SocialStreamDataKind">&lt;ContactsDataKind&gt; 元素</h4>
+<p>
+    <code>&lt;ContactsDataKind&gt;</code> 元素控制您的应用的自定义数据行在联系人应用 UI 中的显示。它采用了以下语法:
+
+</p>
+<pre>
+&lt;ContactsDataKind
+        android:mimeType="<em>MIMEtype</em>"
+        android:icon="<em>icon_resources</em>"
+        android:summaryColumn="<em>column_name</em>"
+        android:detailColumn="<em>column_name</em>"&gt;
+</pre>
+<p>
+    <strong>包含它的文件:</strong>
+</p>
+<code>&lt;ContactsAccountType&gt;</code>
+<p>
+    <strong>描述:</strong>
+</p>
+<p>
+    此元素用于让联系人应用将自定义数据行的内容显示为原始联系人详细信息的一部分。
+<code>&lt;ContactsAccountType&gt;</code> 的每个 <code>&lt;ContactsDataKind&gt;</code> 子元素都代表您的同步适配器向 {@link android.provider.ContactsContract.Data} 表添加的某个自定义数据行类型。
+
+请为您使用的每个自定义 MIME 类型添加一个 <code>&lt;ContactsDataKind&gt;</code> 元素。
+如果您不想显示任何自定义数据行的数据,则无需添加该元素。
+
+</p>
+<p>
+    <strong>属性:</strong>
+</p>
+<dl>
+    <dt>{@code android:mimeType}</dt>
+    <dd>
+        您为
+{@link android.provider.ContactsContract.Data} 表中某个自定义数据行类型定义的自定义 MIME 类型。例如,可将值
+<code>vnd.android.cursor.item/vnd.example.locationstatus</code> 作为记录联系人最后已知位置的数据行的自定义 MIME 类型。
+
+    </dd>
+    <dt>{@code android:icon}</dt>
+    <dd>
+        联系人应用在您的数据旁显示的 Android
+<a href="{@docRoot}guide/topics/resources/drawable-resource.html"> Drawable资源</a>。
+它用于向用户指示数据来自您的服务。
+
+    </dd>
+    <dt>{@code android:summaryColumn}</dt>
+    <dd>
+        从数据行检索的两个值中第一个值的列名。该值显示为该数据行的第一个输入行。
+第一行专用作数据摘要,不过它是可选项。
+另请参阅
+<a href="#detailColumn">android:detailColumn</a>。
+    </dd>
+    <dt>{@code android:detailColumn}</dt>
+    <dd>
+        从数据行检索的两个值中第二个值的列名。该值显示为该数据行的第二个输入行。
+另请参阅
+{@code android:summaryColumn}。
+    </dd>
+</dl>
+<h2 id="AdditionalFeatures">其他联系人提供程序功能</h2>
+<p>
+    除了上文描述的主要功能外,联系人提供程序还为处理联系人数据提供了下列有用的功能:
+
+</p>
+    <ul>
+       <li>联系人组</li>
+       <li>照片功能</li>
+    </ul>
+<h3 id="Groups">联系人组</h3>
+<p>
+    联系人提供程序可以选择性地为相关联系人集合添加<strong>组</strong>数据标签。
+如果与某个用户帐户关联的服务器想要维护组,则与该帐户的帐户类型对应的同步适配器应在联系人提供程序与服务器之间传送组数据。
+
+当用户向服务器添加一个新联系人,然后将该联系人放入一个新组时,同步适配器必须将这个新组添加到
+ {@link android.provider.ContactsContract.Groups} 表中。
+原始联系人所属的一个或多个组使用 {@link android.provider.ContactsContract.CommonDataKinds.GroupMembership} MIME 类型存储在 {@link android.provider.ContactsContract.Data} 表内。
+
+
+</p>
+<p>
+    如果您设计的同步适配器会将服务器中的原始联系人数据添加到联系人提供程序,并且您不使用组,则需要指示提供程序让您的数据可见。
+
+在用户向设备添加帐户时执行的代码中,更新联系人提供程序为该帐户添加的 {@link android.provider.ContactsContract.Settings}
+行。
+在该行中,将
+{@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE
+Settings.UNGROUPED_VISIBLE} 列的值设置为 1。执行此操作后,即使您不使用组,联系人提供程序也会让您的联系人数据始终可见。
+
+</p>
+<h3 id="Photos">联系人照片</h3>
+<p>
+    {@link android.provider.ContactsContract.Data} 表通过 MIME 类型
+{@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
+Photo.CONTENT_ITEM_TYPE} 以行的形式存储照片。该行的
+{@link android.provider.ContactsContract.RawContactsColumns#CONTACT_ID} 列链接到其所属原始联系人的
+{@code android.provider.BaseColumns#_ID} 列。
+    {@link android.provider.ContactsContract.Contacts.Photo} 类定义了一个
+{@link android.provider.ContactsContract.Contacts} 子表,其中包含联系人主要照片(联系人的主要原始联系人的主要照片)的照片信息。
+同样,
+{@link android.provider.ContactsContract.RawContacts.DisplayPhoto} 类定义了一个 {@link android.provider.ContactsContract.RawContacts} 子表,其中包含原始联系人主要照片的照片信息。
+
+
+</p>
+<p>
+    {@link android.provider.ContactsContract.Contacts.Photo} 和
+{@link android.provider.ContactsContract.RawContacts.DisplayPhoto} 参考文档包含检索照片信息的示例。
+并没有可用来检索原始联系人主要缩略图的实用类,但您可以向
+{@link android.provider.ContactsContract.Data} 表发送查询,从而通过选定原始联系人的
+{@code android.provider.BaseColumns#_ID}、
+{@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
+Photo.CONTENT_ITEM_TYPE} 以及 {@link android.provider.ContactsContract.Data#IS_PRIMARY}
+列,找到原始联系人的主要照片行。
+
+</p>
+<p>
+    联系人的社交流数据也可能包含照片。这些照片存储在
+{@code android.provider.ContactsContract.StreamItemPhotos} 表中,<a href="#StreamPhotos">社交流照片</a>部分对该表做了更详尽的描述。
+
+</p>
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/providers/content-provider-basics.jd b/docs/html-intl/intl/zh-cn/guide/topics/providers/content-provider-basics.jd
new file mode 100644
index 0000000..4c91d3a
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/providers/content-provider-basics.jd
@@ -0,0 +1,1196 @@
+page.title=内容提供程序基础知识
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<!-- In this document -->
+<h2>本文内容</h2>
+<ol>
+    <li>
+        <a href="#Basics">概览</a>
+        <ol>
+            <li>
+                <a href="#ClientProvider">访问提供程序</a>
+            </li>
+            <li>
+                <a href="#ContentURIs">内容 URI</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#SimpleQuery">从提供程序检索数据</a>
+        <ol>
+            <li>
+                <a href="#RequestPermissions">请求读取访问权限</a>
+            </li>
+            <li>
+                <a href="#Query">构建查询</a>
+            </li>
+            <li>
+                <a href="#DisplayResults">显示查询结果</a>
+            </li>
+            <li>
+                <a href="#GettingResults">从查询结果中获取数据</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#Permissions">内容提供程序权限</a>
+    </li>
+    <li>
+        <a href="#Modifications">插入、更新和删除数据</a>
+        <ol>
+            <li>
+                <a href="#Inserting">插入数据</a>
+            </li>
+            <li>
+                <a href="#Updating">更新数据</a>
+            </li>
+            <li>
+                <a href="#Deleting">删除数据</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#DataTypes">提供程序数据类型</a>
+    </li>
+    <li>
+        <a href="#AltForms">提供程序访问的替代形式</a>
+        <ol>
+            <li>
+                <a href="#Batch">批量访问</a>
+            </li>
+            <li>
+                <a href="#Intents">通过 Intent 访问数据</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#ContractClasses">协定类</a>
+    </li>
+    <li>
+        <a href="#MIMETypeReference">MIME 类型引用</a>
+    </li>
+</ol>
+
+    <!-- Key Classes -->
+<h2>关键类</h2>
+    <ol>
+        <li>
+            {@link android.content.ContentProvider}
+        </li>
+        <li>
+            {@link android.content.ContentResolver}
+        </li>
+        <li>
+            {@link android.database.Cursor}
+        </li>
+        <li>
+            {@link android.net.Uri}
+        </li>
+    </ol>
+
+    <!-- Related Samples -->
+<h2>相关示例</h2>
+    <ol>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html">
+游标(联系人)</a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html">
+游标(电话)</a>
+        </li>
+    </ol>
+
+    <!-- See also -->
+<h2>另请参阅</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+创建内容提供程序</a>
+        </li>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+日历提供程序</a>
+        </li>
+    </ol>
+</div>
+</div>
+
+    <!-- Intro paragraphs -->
+<p>
+    内容提供程序管理对中央数据存储库的访问。提供程序是 Android 应用的一部分,通常提供自己的 UI 来使用数据。
+
+但是,内容提供程序主要旨在供其他应用使用,这些应用使用提供程序客户端对象来访问提供程序。
+提供程序与提供程序客户端共同提供一致的标准数据界面,该界面还可处理跨进程通信并保护数据访问的安全性。
+
+
+</p>
+<p>
+    本主题介绍了以下基础知识:
+</p>
+    <ul>
+        <li>内容提供程序的工作方式。</li>
+        <li>用于从内容提供程序检索数据的 API。</li>
+        <li>用于在内容提供程序中插入、更新或删除数据的 API。</li>
+        <li>其他有助于使用提供程序的 API 功能。</li>
+    </ul>
+
+    <!-- Basics -->
+<h2 id="Basics">概览</h2>
+<p>
+    内容提供程序以一个或多个表(与在关系数据库中找到的表类似)的形式将数据呈现给外部应用。
+行表示提供程序收集的某种数据类型的实例,行中的每个列表示为实例收集的每条数据。
+
+
+</p>
+<p>
+    例如,Android 平台的内置提供程序之一是用户字典,它会存储用户想要保存的非标准字词的拼写。
+表 1 描述了数据在此提供程序表中的显示情况:
+
+</p>
+<p class="table-caption">
+    <strong>表 1:</strong>用户字典示例表格。
+</p>
+<table id="table1" style="width: 50%;">
+    <tr>
+        <th style="width:20%" align="center" scope="col">字词</th>
+        <th style="width:20%" align="center" scope="col">应用 id</th>
+        <th style="width:20%" align="center" scope="col">频率</th>
+        <th style="width:20%" align="center" scope="col">区域设置</th>
+        <th style="width:20%" align="center" scope="col">_ID</th>
+    </tr>
+    <tr>
+        <td align="center" scope="row">mapreduce</td>
+        <td align="center">user1</td>
+        <td align="center">100</td>
+        <td align="center">en_US</td>
+        <td align="center">1</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">precompiler</td>
+        <td align="center">user14</td>
+        <td align="center">200</td>
+        <td align="center">fr_FR</td>
+        <td align="center">2</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">applet</td>
+        <td align="center">user2</td>
+        <td align="center">225</td>
+        <td align="center">fr_CA</td>
+        <td align="center">3</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">const</td>
+        <td align="center">user1</td>
+        <td align="center">255</td>
+        <td align="center">pt_BR</td>
+        <td align="center">4</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">int</td>
+        <td align="center">user5</td>
+        <td align="center">100</td>
+        <td align="center">en_UK</td>
+        <td align="center">5</td>
+    </tr>
+</table>
+<p>
+    在表 1 中,每行表示可能无法在标准词典中找到的字词实例。
+每列表示该字词的某些数据,如该字词首次出现时的区域设置。
+列标题是存储在提供程序中的列名称。
+要引用行的区域设置,需要引用其 <code>locale</code> 列。对于此提供程序,<code>_ID</code> 列充当由提供程序自动维护的“主键”列。
+
+
+</p>
+<p class="note">
+    <strong>注</strong>:提供程序无需具有主键,也无需将 <code>_ID</code> 用作其主键的列名称(如果存在主键)。
+但是,如果您要将来自提供程序的数据与 {@link android.widget.ListView} 绑定,则其中一个列名称必须是 <code>_ID</code>。
+
+<a href="#DisplayResults">显示查询结果</a>部分详细说明了此要求。
+
+</p>
+<h3 id="ClientProvider">访问提供程序</h3>
+<p>
+    应用从具有 {@link android.content.ContentResolver} 客户端对象的内容提供程序访问数据。
+此对象具有调用提供程序对象({@link android.content.ContentProvider} 的某个具体子类的实例)中同名方法的方法。
+
+
+{@link android.content.ContentResolver} 方法可提供持续存储的基本“CRUD”(创建、检索、更新和删除)功能。
+
+</p>
+<p>
+    客户端应用进程中的 {@link android.content.ContentResolver} 对象和拥有提供程序的应用中的 {@link android.content.ContentProvider} 对象可自动处理跨进程通信。
+{@link android.content.ContentProvider} 还可充当其数据存储库和表格形式的数据外部显示之间的抽象层。
+
+
+
+</p>
+<p class="note">
+    <strong>注</strong>:要访问提供程序,您的应用通常需要在其清单文件中请求特定权限。
+<a href="#Permissions">内容提供程序权限</a>部分详细介绍了此内容。
+
+</p>
+<p>
+    例如,要从用户字典提供程序中获取字词及其区域设置的列表,则需调用 {@link android.content.ContentResolver#query ContentResolver.query()}。
+
+    {@link android.content.ContentResolver#query query()} 方法会调用用户字典提供程序所定义的
+{@link android.content.ContentProvider#query ContentProvider.query()} 方法。
+以下代码行显示了
+{@link android.content.ContentResolver#query ContentResolver.query()} 调用:
+<p>
+<pre>
+// Queries the user dictionary and returns results
+mCursor = getContentResolver().query(
+    UserDictionary.Words.CONTENT_URI,   // The content URI of the words table
+    mProjection,                        // The columns to return for each row
+    mSelectionClause                    // Selection criteria
+    mSelectionArgs,                     // Selection criteria
+    mSortOrder);                        // The sort order for the returned rows
+</pre>
+<p>
+    表 2 显示了
+    {@link android.content.ContentResolver#query 
+    query(Uri,projection,selection,selectionArgs,sortOrder)} 的参数如何匹配 SQL SELECT 语句:
+</p>
+<p class="table-caption">
+    <strong>表 2:</strong>Query() 与 SQL 查询对比。
+</p>
+<table id="table2" style="width: 75%;">
+    <tr>
+        <th style="width:25%" align="center" scope="col">query() 参数</th>
+        <th style="width:25%" align="center" scope="col">SELECT 关键字/参数</th>
+        <th style="width:50%" align="center" scope="col">备注</th>
+    </tr>
+    <tr>
+        <td align="center"><code>Uri</code></td>
+        <td align="center"><code>FROM <em>table_name</em></code></td>
+        <td><code>Uri</code> 映射至名为 <em>table_name</em> 的提供程序中的表。</td>
+    </tr>
+    <tr>
+        <td align="center"><code>projection</code></td>
+        <td align="center"><code><em>col,col,col,...</em></code></td>
+        <td>
+            <code>projection</code> 是应该为检索到的每个行包含的列的数组。
+
+        </td>
+    </tr>
+    <tr>
+        <td align="center"><code>selection</code></td>
+        <td align="center"><code>WHERE <em>col</em> = <em>value</em></code></td>
+        <td><code>selection</code> 会指定选择行的条件。</td>
+    </tr>
+    <tr>
+        <td align="center"><code>selectionArgs</code></td>
+        <td align="center">
+            (没有完全等效项。选择参数会替换选择子句中 <code>?</code> 的占位符。)
+
+        </td>
+    </tr>
+    <tr>
+        <td align="center"><code>sortOrder</code></td>
+        <td align="center"><code>ORDER BY <em>col,col,...</em></code></td>
+        <td>
+            <code>sortOrder</code> 指定行在返回的
+ {@link android.database.Cursor} 中的显示顺序。
+        </td>
+    </tr>
+</table>
+<h3 id="ContentURIs">内容 URI</h3>
+<p>
+    <strong>内容 URI</strong> 是用于在提供程序中标识数据的 URI。内容 URI    包括整个提供程序的符号名称(其<strong>权限</strong>)和一个指向表的名称(<strong>路径</strong>)。
+
+当您调用客户端方法来访问提供程序中的表时,该表的内容 URI 将是其参数之一。
+
+
+</p>
+<p>
+    在前面的代码行中,常量
+ {@link android.provider.UserDictionary.Words#CONTENT_URI} 包含用户字典的“字词”表的内容 URI。
+{@link android.content.ContentResolver}
+ 对象会分析出 URI 的授权,并通过将该授权与已知提供程序的系统表进行比较,来“解析”提供程序。
+然后,
+{@link android.content.ContentResolver} 可以将查询参数分派给正确的提供程序。
+
+</p>
+<p>
+    {@link android.content.ContentProvider} 使用内容 URI 的路径部分来选择要访问的表。
+提供程序通常会为其公开的每个表显示一条<strong>路径</strong>。
+</p>
+<p>
+    在前面的代码行中,“字词”表的完整 URI 是:
+</p>
+<pre>
+content://user_dictionary/words
+</pre>
+<p>
+    其中,<code>user_dictionary</code> 字符串是提供程序的授权,
+<code>words</code> 字符串是表的路径。字符串
+ <code>content://</code>(<strong>架构</strong>)始终显示,并将此标识为内容 URI。
+
+</p>
+<p>
+    许多提供程序都允许您通过将 ID 值追加到 URI 末尾来访问表中的单个行。例如,要从用户字典中检索 <code>_ID</code> 为
+ <code>4</code> 的行,则可使用此内容 URI:
+
+</p>
+<pre>
+Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);
+</pre>
+<p>
+    在检索到一组行后想要更新或删除其中某一行时通常会用到 ID 值。
+
+</p>
+<p class="note">
+    <strong>注</strong>:{@link android.net.Uri} 和 {@link android.net.Uri.Builder} 类
+包含根据字符串构建格式规范的 URI 对象的便利方法。
+{@link android.content.ContentUris} 包含一些可以将 ID 值轻松追加到
+ URI 后的方法。前面的代码段就是使用 {@link android.content.ContentUris#withAppendedId
+    withAppendedId()} 将 ID 追加到用户字典内容 URI 后。
+</p>
+
+
+    <!-- Retrieving Data from the Provider -->
+<h2 id="SimpleQuery">从提供程序检索数据</h2>
+<p>
+    本节将以用户字典提供程序为例,介绍如何从提供程序中检索数据。
+
+</p>
+<p class="note">
+    为了明确进行说明,本节中的代码段将在“UI 线程”上调用
+ {@link android.content.ContentResolver#query ContentResolver.query()}。但在实际代码中,您应该在单独线程上异步执行查询。
+执行此操作的方式之一是使用 {@link android.content.CursorLoader} 类,<a href="{@docRoot}guide/components/loaders.html">加载器</a>指南中对此有更为详细的介绍。
+
+
+此外,前述代码行只是代码段;它们不会显示整个应用。
+
+</p>
+<p>
+    要从提供程序中检索数据,请按照以下基本步骤执行操作:
+</p>
+<ol>
+   <li>
+        请求对提供程序的读取访问权限。
+   </li>
+   <li>
+        定义将查询发送至提供程序的代码。
+   </li>
+</ol>
+<h3 id="RequestPermissions">请求读取访问权限</h3>
+<p>
+    要从提供程序检索数据,您的应需要具备对提供程序的“读取访问”权限。
+您无法在运行时请求此权限;相反,您需要使用<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>元素和提供程序定义的准确权限名称,在清单文件中指明您需要此权限。
+
+
+
+在您的清单文件中指定此元素后,您将有效地为应用“请求”此权限。
+用户安装您的应用时,会隐式授予允许此请求。
+
+</p>
+<p>
+    要找出您正在使用的提供程序的读取访问权限的准确名称,以及提供程序使用的其他访问权限的名称,请查看提供程序的文档。
+
+
+</p>
+<p>
+    <a href="#Permissions">内容提供程序权限</a>部分详细介绍了权限在访问提供程序过程中的作用。
+
+</p>
+<p>
+    用户字典提供程序在其清单文件中定义了权限
+ <code>android.permission.READ_USER_DICTIONARY</code>,因此希望从提供程序中进行读取的应用必需请求此权限。
+
+</p>
+<!-- Constructing the query -->
+<h3 id="Query">构建查询</h3>
+<p>
+    从提供程序中检索数据的下一步是构建查询。第一个代码段定义某些用于访问用户字典提供程序的变量:
+
+</p>
+<pre class="prettyprint">
+
+// A "projection" defines the columns that will be returned for each row
+String[] mProjection =
+{
+    UserDictionary.Words._ID,    // Contract class constant for the _ID column name
+    UserDictionary.Words.WORD,   // Contract class constant for the word column name
+    UserDictionary.Words.LOCALE  // Contract class constant for the locale column name
+};
+
+// Defines a string to contain the selection clause
+String mSelectionClause = null;
+
+// Initializes an array to contain selection arguments
+String[] mSelectionArgs = {""};
+
+</pre>
+<p>
+    下一个代码段以用户字典提供程序为例,显示了如何使用
+ {@link android.content.ContentResolver#query ContentResolver.query()}。
+提供程序客户端查询与 SQL 查询类似,并且包含一组要返回的列、一组选择条件和排序顺序。
+
+</p>
+<p>
+    查询应该返回的列集被称为<strong>投影</strong>(变量 <code>mProjection</code>)。
+
+</p>
+<p>
+    用于指定要检索的行的表达式分割为选择子句和选择参数。
+选择子句是逻辑和布尔表达式、列名称和值(变量 <code>mSelectionClause</code>)的组合。
+如果您指定了可替换参数 <code>?</code> 而非值,则查询方法会从选择参数数组(变量 <code>mSelectionArgs</code>)中检索值。
+
+
+</p>
+<p>
+    在下一个代码段中,如果用户未输入字词,则选择子句将设置为 <code>null</code>,而且查询会返回提供程序中的所有字词。
+如果用户输入了字词,选择子句将设置为 <code>UserDictionary.Words.WORD + " = ?"</code> 且选择参数数组的第一个元素将设置为用户输入的字词。
+
+
+</p>
+<pre class="prettyprint">
+/*
+ * This defines a one-element String array to contain the selection argument.
+ */
+String[] mSelectionArgs = {""};
+
+// Gets a word from the UI
+mSearchString = mSearchWord.getText().toString();
+
+// Remember to insert code here to check for invalid or malicious input.
+
+// If the word is the empty string, gets everything
+if (TextUtils.isEmpty(mSearchString)) {
+    // Setting the selection clause to null will return all words
+    mSelectionClause = null;
+    mSelectionArgs[0] = "";
+
+} else {
+    // Constructs a selection clause that matches the word that the user entered.
+    mSelectionClause = UserDictionary.Words.WORD + " = ?";
+
+    // Moves the user's input string to the selection arguments.
+    mSelectionArgs[0] = mSearchString;
+
+}
+
+// Does a query against the table and returns a Cursor object
+mCursor = getContentResolver().query(
+    UserDictionary.Words.CONTENT_URI,  // The content URI of the words table
+    mProjection,                       // The columns to return for each row
+    mSelectionClause                   // Either null, or the word the user entered
+    mSelectionArgs,                    // Either empty, or the string the user entered
+    mSortOrder);                       // The sort order for the returned rows
+
+// Some providers return null if an error occurs, others throw an exception
+if (null == mCursor) {
+    /*
+     * Insert code here to handle the error. Be sure not to use the cursor! You may want to
+     * call android.util.Log.e() to log this error.
+     *
+     */
+// If the Cursor is empty, the provider found no matches
+} else if (mCursor.getCount() &lt; 1) {
+
+    /*
+     * Insert code here to notify the user that the search was unsuccessful. This isn't necessarily
+     * an error. You may want to offer the user the option to insert a new row, or re-type the
+     * search term.
+     */
+
+} else {
+    // Insert code here to do something with the results
+
+}
+</pre>
+<p>
+    此查询与 SQL 语句相似:
+</p>
+<pre>
+SELECT _ID, word, locale FROM words WHERE word = &lt;userinput&gt; ORDER BY word ASC;
+</pre>
+<p>
+    在此 SQL 语句中,会使用实际的列名称而非协定类常量。
+</p>
+<h4 id="Injection">防止恶意输入</h4>
+<p>
+    如果内容提供程序管理的数据位于 SQL 数据库中,将不受信任的外部数据包括在原始 SQL 语句中可能会导致 SQL 注入。
+
+</p>
+<p>
+    考虑此选择子句:
+</p>
+<pre>
+// Constructs a selection clause by concatenating the user's input to the column name
+String mSelectionClause =  "var = " + mUserInput;
+</pre>
+<p>
+    如果您执行此操作,则会允许用户将恶意 SQL 串连到 SQL 语句上。
+    例如,用户可以为 <code>mUserInput</code> 输入“nothing; DROP TABLE *;”,这会生成选择子句 <code>var = nothing; DROP TABLE *;</code>。
+由于选择子句是作为 SQL 语句处理,因此这可能会导致提供程序擦除基础 SQLite 数据库中的所有表(除非提供程序设置为可捕获 <a href="http://en.wikipedia.org/wiki/SQL_injection">SQL 注入</a>尝试)。
+
+
+
+</p>
+<p>
+    要避免此问题,可使用一个用于将 <code>?</code> 作为可替换参数的选择子句以及一个单独的选择参数数组。
+执行此操作时,用户输入直接受查询约束,而不解释为 SQL 语句的一部分。
+
+    由于用户输入未作为 SQL 处理,因此无法注入恶意 SQL。请使用此选择子句,而不要使用串连来包括用户输入:
+
+</p>
+<pre>
+// Constructs a selection clause with a replaceable parameter
+String mSelectionClause =  "var = ?";
+</pre>
+<p>
+    按如下所示设置选择参数数组:
+</p>
+<pre>
+// Defines an array to contain the selection arguments
+String[] selectionArgs = {""};
+</pre>
+<p>
+    按如下所示将值置于选择参数数组中:
+</p>
+<pre>
+// Sets the selection argument to the user's input
+selectionArgs[0] = mUserInput;
+</pre>
+<p>
+    一个用于将 <code>?</code> 用作可替换参数的选择子句和一个选择参数数组是指定选择的首选方式,即使提供程序并未基于 SQL 数据库。
+
+
+</p>
+<!-- Displaying the results -->
+<h3 id="DisplayResults">显示查询结果</h3>
+<p>
+    {@link android.content.ContentResolver#query ContentResolver.query()} 客户端方法始终会返回符合以下条件的 {@link android.database.Cursor}:包含查询的投影为匹配查询选择条件的行指定的列。
+
+
+{@link android.database.Cursor} 对象为其包含的行和列提供随机读取访问权限。
+通过使用 {@link android.database.Cursor} 方法,您可以循环访问结果中的行、确定每个列的数据类型、从列中获取数据,并检查结果的其他属性。
+
+某些 {@link android.database.Cursor} 实现会在提供程序的数据发生更改时自动更新对象和/或在 {@link android.database.Cursor} 更改时触发观察程序对象中的方法。
+
+
+</p>
+<p class="note">
+    <strong>注</strong>:提供程序可能会根据发出查询的对象的性质来限制对列的访问。
+例如,联系人提供程序会限定只有同步适配器才能访问某些列,因此不会将它们返回至 Activity 或服务。
+
+</p>
+<p>
+    如果没有与选择条件匹配的行,则提供程序会返回 {@link android.database.Cursor#getCount Cursor.getCount()} 为 0(空游标)的 {@link android.database.Cursor} 对象。
+
+
+</p>
+<p>
+    如果出现内部错误,查询结果将取决于具体的提供程序。它可能会选择返回 <code>null</code>,或抛出 {@link java.lang.Exception}。
+
+</p>
+<p>
+    由于 {@link android.database.Cursor} 是行“列表”,因此显示 {@link android.database.Cursor} 内容的良好方式是通过 {@link android.widget.SimpleCursorAdapter} 将其与 {@link android.widget.ListView} 关联。
+
+
+</p>
+<p>
+    以下代码段将延续上一代码段的代码。它会创建一个包含由查询检索到的 {@link android.database.Cursor} 的 {@link android.widget.SimpleCursorAdapter} 对象,并将此对象设置为 {@link android.widget.ListView} 的适配器:
+
+
+
+</p>
+<pre class="prettyprint">
+// Defines a list of columns to retrieve from the Cursor and load into an output row
+String[] mWordListColumns =
+{
+    UserDictionary.Words.WORD,   // Contract class constant containing the word column name
+    UserDictionary.Words.LOCALE  // Contract class constant containing the locale column name
+};
+
+// Defines a list of View IDs that will receive the Cursor columns for each row
+int[] mWordListItems = { R.id.dictWord, R.id.locale};
+
+// Creates a new SimpleCursorAdapter
+mCursorAdapter = new SimpleCursorAdapter(
+    getApplicationContext(),               // The application's Context object
+    R.layout.wordlistrow,                  // A layout in XML for one row in the ListView
+    mCursor,                               // The result from the query
+    mWordListColumns,                      // A string array of column names in the cursor
+    mWordListItems,                        // An integer array of view IDs in the row layout
+    0);                                    // Flags (usually none are needed)
+
+// Sets the adapter for the ListView
+mWordList.setAdapter(mCursorAdapter);
+</pre>
+<p class="note">
+    <strong>注</strong>:要通过 {@link android.database.Cursor} 支持 {@link android.widget.ListView},游标必需包含名为 <code>_ID</code> 的列。
+
+    正因如此,前文显示的查询会为“字词”表检索 <code>_ID</code> 列,即使 {@link android.widget.ListView} 未显示该列。
+
+    此限制也解释了为什么大多数提供程序的每个表都具有 <code>_ID</code> 列。
+
+</p>
+
+        <!-- Getting data from query results -->
+<h3 id="GettingResults">从查询结果中获取数据</h3>
+<p>
+    您可以将查询结果用于其他任务,而不是仅显示它们。例如,您可以从用户字典中检索拼写,然后在其他提供程序中查找它们。
+
+要执行此操作,您需要在 {@link android.database.Cursor} 中循环访问行:
+</p>
+<pre class="prettyprint">
+
+// Determine the column index of the column named "word"
+int index = mCursor.getColumnIndex(UserDictionary.Words.WORD);
+
+/*
+ * Only executes if the cursor is valid. The User Dictionary Provider returns null if
+ * an internal error occurs. Other providers may throw an Exception instead of returning null.
+ */
+
+if (mCursor != null) {
+    /*
+     * Moves to the next row in the cursor. Before the first movement in the cursor, the
+     * "row pointer" is -1, and if you try to retrieve data at that position you will get an
+     * exception.
+     */
+    while (mCursor.moveToNext()) {
+
+        // Gets the value from the column.
+        newWord = mCursor.getString(index);
+
+        // Insert code here to process the retrieved word.
+
+        ...
+
+        // end of while loop
+    }
+} else {
+
+    // Insert code here to report an error if the cursor is null or the provider threw an exception.
+}
+</pre>
+<p>
+    {@link android.database.Cursor} 实现包含多个用于从对象中检索不同类型的数据的“获取”方法。
+例如,上一个代码段使用 {@link android.database.Cursor#getString getString()}。
+它们还具有 {@link android.database.Cursor#getType getType()} 方法,该方法会返回指示列的数据类型的值。
+
+
+</p>
+
+
+    <!-- Requesting permissions -->
+<h2 id="Permissions">内容提供程序权限</h2>
+<p>
+    提供程序的应用可以指定其他应用访问提供程序的数据所必需的权限。
+这些权限可确保用户了解应用将尝试访问的数据。
+根据提供程序的要求,其他应用会请求它们访问提供程序所需的权限。
+最终用户会在安装应用时看到所请求的权限。
+
+</p>
+<p>
+    如果提供程序的应用未指定任何权限,则其他应用将无权访问提供程序的数据。
+但是,无论指定权限为何,提供程序的应用中的组件始终具有完整的读取和写入访问权限。
+
+</p>
+<p>
+    如前所述,用户字典提供程序需要
+ <code>android.permission.READ_USER_DICTIONARY</code> 权限才能从中检索数据。
+    提供程序具有用于插入、更新或删除数据的单独 <code>android.permission.WRITE_USER_DICTIONARY</code> 权限。
+
+</p>
+<p>
+    要获取访问提供程序所需的权限,应用将通过其清单文件中的
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+ 元素来请求这些权限。Android 软件包管理器安装应用时,用户必须批准该应用请求的所有权限。
+如果用户批准所有权限,软件包管理器将继续安装;如果用户未批准这些权限,软件包管理器将中止安装。
+
+
+</p>
+<p>
+    以下
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 元素会请求对用户字典提供程序的读取访问权限:
+
+</p>
+<pre>
+    &lt;uses-permission android:name="android.permission.READ_USER_DICTIONARY"&gt;
+</pre>
+<p>
+    
+<a href="{@docRoot}guide/topics/security/security.html">安全与权限</a>指南中详细介绍了权限对提供程序访问的影响。
+</p>
+
+
+<!-- Inserting, Updating, and Deleting Data -->
+<h2 id="Modifications">插入、更新和删除数据</h2>
+<p>
+    与从提供程序检索数据的方式相同,也可以通过提供程序客户端和提供程序 {@link android.content.ContentProvider} 之间的交互来修改数据。
+
+    您通过传递到 {@link android.content.ContentProvider} 的对应方法的参数来调用 {@link android.content.ContentResolver} 方法。
+提供程序和提供程序客户端会自动处理安全性和跨进程通信。
+
+</p>
+<h3 id="Inserting">插入数据</h3>
+<p>
+    要将数据插入提供程序,可调用
+ {@link android.content.ContentResolver#insert ContentResolver.insert()}
+ 方法。此方法会在提供程序中插入新行并为该行返回内容 URI。
+    此代码段显示如何将新字词插入用户字典提供程序:
+</p>
+<pre class="prettyprint">
+// Defines a new Uri object that receives the result of the insertion
+Uri mNewUri;
+
+...
+
+// Defines an object to contain the new values to insert
+ContentValues mNewValues = new ContentValues();
+
+/*
+ * Sets the values of each column and inserts the word. The arguments to the "put"
+ * method are "column name" and "value"
+ */
+mNewValues.put(UserDictionary.Words.APP_ID, "example.user");
+mNewValues.put(UserDictionary.Words.LOCALE, "en_US");
+mNewValues.put(UserDictionary.Words.WORD, "insert");
+mNewValues.put(UserDictionary.Words.FREQUENCY, "100");
+
+mNewUri = getContentResolver().insert(
+    UserDictionary.Word.CONTENT_URI,   // the user dictionary content URI
+    mNewValues                          // the values to insert
+);
+</pre>
+<p>
+    新行的数据会进入单个 {@link android.content.ContentValues} 对象中,该对象在形式上与单行游标类似。
+此对象中的列不需要具有相同的数据类型,如果您不想指定值,则可以使用 {@link android.content.ContentValues#putNull ContentValues.putNull()} 将列设置为 <code>null</code>。
+
+
+</p>
+<p>
+    代码段不会添加 <code>_ID</code> 列,因为系统会自动维护此列。
+提供程序会向添加的每个行分配唯一的 <code>_ID</code> 值。
+通常,提供程序会将此值用作表的主键。
+</p>
+<p>
+    <code>newUri</code> 中返回的内容 URI 会按照以下格式标识新添加的行:
+
+</p>
+<pre>
+content://user_dictionary/words/&lt;id_value&gt;
+</pre>
+<p>
+    <code>&lt;id_value&gt;</code> 是新行的 <code>_ID</code> 内容。
+    大多数提供程序都能自动检测这种格式的内容 URI,然后在该特定行上执行请求的操作。
+
+</p>
+<p>
+    要从返回的 {@link android.net.Uri} 中获取 <code>_ID</code> 的值,请调用
+ {@link android.content.ContentUris#parseId ContentUris.parseId()}。
+</p>
+<h3 id="Updating">更新数据</h3>
+<p>
+    要更新行,请按照执行插入的方式使用具有更新值的 {@link android.content.ContentValues} 对象,并按照执行查询的方式使用选择条件。
+
+    您使用的客户端方法是
+ {@link android.content.ContentResolver#update ContentResolver.update()}。您只需将值添加至您要更新的列的 {@link android.content.ContentValues} 对象。
+如果您要清除列的内容,请将值设置为 <code>null</code>。
+
+</p>
+<p>
+    以下代码段会将区域设置具有语言“en”的所有行的区域设置更改为 <code>null</code>。
+返回值是已更新的行数:
+</p>
+<pre>
+// Defines an object to contain the updated values
+ContentValues mUpdateValues = new ContentValues();
+
+// Defines selection criteria for the rows you want to update
+String mSelectionClause = UserDictionary.Words.LOCALE +  "LIKE ?";
+String[] mSelectionArgs = {"en_%"};
+
+// Defines a variable to contain the number of updated rows
+int mRowsUpdated = 0;
+
+...
+
+/*
+ * Sets the updated value and updates the selected words.
+ */
+mUpdateValues.putNull(UserDictionary.Words.LOCALE);
+
+mRowsUpdated = getContentResolver().update(
+    UserDictionary.Words.CONTENT_URI,   // the user dictionary content URI
+    mUpdateValues                       // the columns to update
+    mSelectionClause                    // the column to select on
+    mSelectionArgs                      // the value to compare to
+);
+</pre>
+<p>
+    您还应该在调用
+ {@link android.content.ContentResolver#update ContentResolver.update()} 时检查用户输入。如需了解有关此内容的更多详情,请阅读<a href="#Injection">防止恶意输入</a>部分。
+
+</p>
+<h3 id="Deleting">删除数据</h3>
+<p>
+    删除行与检索行数据类似:为要删除的行指定选择条件,客户端方法会返回已删除的行数。
+
+    以下代码段会删除应用 ID 与“用户”匹配的行。该方法会返回已删除的行数。
+
+</p>
+<pre>
+
+// Defines selection criteria for the rows you want to delete
+String mSelectionClause = UserDictionary.Words.APP_ID + " LIKE ?";
+String[] mSelectionArgs = {"user"};
+
+// Defines a variable to contain the number of rows deleted
+int mRowsDeleted = 0;
+
+...
+
+// Deletes the words that match the selection criteria
+mRowsDeleted = getContentResolver().delete(
+    UserDictionary.Words.CONTENT_URI,   // the user dictionary content URI
+    mSelectionClause                    // the column to select on
+    mSelectionArgs                      // the value to compare to
+);
+</pre>
+<p>
+    您还应该在调用
+ {@link android.content.ContentResolver#delete ContentResolver.delete()} 时检查用户输入。如需了解有关此内容的更多详情,请阅读<a href="#Injection">防止恶意输入</a>部分。
+
+</p>
+<!-- Provider Data Types -->
+<h2 id="DataTypes">提供程序数据类型</h2>
+<p>
+    内容提供程序可以提供多种不同的数据类型。用户字典提供程序仅提供文本,但提供程序也能提供以下格式:
+
+</p>
+    <ul>
+        <li>
+            整型
+        </li>
+        <li>
+            长整型(长)
+        </li>
+        <li>
+            浮点型
+        </li>
+        <li>
+            长浮点型(双倍)
+        </li>
+    </ul>
+<p>
+    提供程序经常使用的另一种数据类型是作为 64KB 字节的数组实施的二进制大型对象 (BLOB)。
+您可以通过查看
+ {@link android.database.Cursor} 类“获取”方法看到可用数据类型。
+</p>
+<p>
+    提供程序文档中通常都列出了其每个列的数据类型。
+    用户字典提供程序的数据类型列在其协定类 {@link android.provider.UserDictionary.Words} 参考文档中(<a href="#ContractClasses">协定类</a>部分对协定类进行了介绍)。
+
+
+    您也可以通过调用 {@link android.database.Cursor#getType
+ Cursor.getType()} 来确定数据类型。
+</p>
+<p>
+    提供程序还会维护其定义的每个内容 URI 的 MIME(多用途互联网邮件扩展)数据类型信息。您可以使用 MIME 类型信息查明应用是否可以处理提供程序提供的数据,或根据 MIME 类型选择处理类型。
+
+在使用包含复杂数据结构或文件的提供程序时,通常需要 MIME 类型。
+
+例如,联系人提供程序中的 {@link android.provider.ContactsContract.Data}
+ 表会使用 MIME 类型来标记每行中存储的联系人数据类型。
+要获取与内容 URI 对应的 MIME 类型,请调用
+ {@link android.content.ContentResolver#getType ContentResolver.getType()}。
+</p>
+<p>
+    <a href="#MIMETypeReference">MIME 类型引用</a>部分介绍了标准和自定义 MIME 类型的语法。
+
+</p>
+
+
+<!-- Alternative Forms of Provider Access -->
+<h2 id="AltForms">提供程序访问的替代形式</h2>
+<p>
+    提供程序访问的三种替代形式在应用开发过程中十分重要:
+</p>
+<ul>
+    <li>
+        <a href="#Batch">批量访问</a>:您可以通过
+ {@link android.content.ContentProviderOperation} 类中的方法创建一批访问调用,然后通过
+ {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()} 应用它们。
+    </li>
+    <li>
+        异步查询:您应该在单独线程中执行查询。执行此操作的方式之一是使用 {@link android.content.CursorLoader} 对象。
+<a href="{@docRoot}guide/components/loaders.html">加载器</a>指南中的示例展示了如何执行此操作。
+
+
+    </li>
+    <li>
+        <a href="#Intents">通过 Intent 访问数据</a>:尽管您无法直接向提供程序发送 Intent,但可以向提供程序的应用发送 Intent,后者通常具有修改提供程序数据的最佳配置。
+
+
+    </li>
+</ul>
+<p>
+    下文将介绍批量访问和修改。
+</p>
+<h3 id="Batch">批量访问</h3>
+<p>
+    批量访问提供程序适用于插入大量行,或通过同一方法调用在多个表中插入行,或者通常用于跨进程界限将一组操作作为事务处理(原子操作)执行。
+
+
+</p>
+<p>
+    要在“批量模式”下访问提供程序,
+您可以创建 {@link android.content.ContentProviderOperation} 对象数组,然后使用 {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()} 
+将其分派给内容提供程序。
+您需将内容提供程序的<em>授权</em>传递给此方法,而不是特定内容 URI。这样可使数组中的每个 {@link android.content.ContentProviderOperation} 对象都能适用于其他表。
+
+
+调用 {@link android.content.ContentResolver#applyBatch
+ ContentResolver.applyBatch()} 会返回结果数组。
+</p>
+<p>
+    {@link android.provider.ContactsContract.RawContacts} 协定类
+的说明包括展示批量注入的代码段。
+<a href="{@docRoot}resources/samples/ContactManager/index.html">联系人管理器</a>示例应用包含在其 <code>ContactAdder.java</code>
+ 源文件中进行批量访问的示例。
+
+</p>
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>使用帮助程序应用显示数据</h2>
+<p>
+    如果您的应用<em>具有</em>访问权限,您可能仍想使用 Intent 对象在其他应用中显示数据。
+例如,日历应用接受
+ {@link android.content.Intent#ACTION_VIEW} Intent 对象,用于显示特定的日期或事件。
+    这样,您可以在不创建自己的 UI 的情况下显示日历信息。如需了解有关此功能的详情,请参见<a href="{@docRoot}guide/topics/providers/calendar-provider.html">日历提供程序</a>指南。
+
+
+</p>
+<p>
+    您向其发送 Intent 对象的应用不一定要是与提供程序关联的应用。
+例如,您可以从联系人提供程序中检索联系人,然后将包含联系人图像的内容 URI 的 {@link android.content.Intent#ACTION_VIEW}  Intent 发送至图像查看器。
+
+
+</p>
+</div>
+</div>
+<h3 id="Intents">通过 Intent 访问数据</h3>
+<p>
+     Intent 可以提供对内容提供程序的间接访问。即使您的应用不具备访问权限,您也可以通过以下方式允许用户访问提供程序中的数据:从具有权限的应用中获取回结果 Intent,或者通过激活具有权限的应用,然后让用户在其中工作。
+
+
+
+</p>
+<h4>通过临时权限获取访问权限</h4>
+<p>
+    即使您没有适当的访问权限,也可以通过以下方式访问内容提供程序中的数据:将 Intent 发送至具有权限的应用,然后接收回包含“URI”权限的结果 Intent。
+
+
+    这些是特定内容 URI 的权限,将持续至接收该权限的 Activity 结束。
+具有永久权限的应用将通过在结果 Intent 中设置标志来授予临时权限:
+
+</p>
+<ul>
+    <li>
+        <strong>读取权限:</strong>
+{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}
+    </li>
+    <li>
+        <strong>写入权限:</strong>
+{@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}
+    </li>
+</ul>
+<p class="note">
+    <strong>注</strong>:这些标志不会为其授权包含在内容 URI 中的提供程序
+提供常规的读取或写入访问权限。访问权限仅适用于 URI 本身。
+</p>
+<p>
+    提供程序使用
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+元素的
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">android:grantUriPermission</a></code>
+属性以及
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+元素的
+<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
+子元素在其清单文件中定义内容 URI 的 URI 权限。<a href="{@docRoot}guide/topics/security/security.html">安全与权限</a>指南中“URI 权限”部分更加详细地说明了 URI 权限机制。
+
+
+</p>
+<p>
+    例如,即使您没有
+ {@link android.Manifest.permission#READ_CONTACTS} 权限,也可以在联系人提供程序中检索联系人的数据。您可能希望在向联系人发送电子生日祝福的应用中执行此操作。
+您更愿意让用户控制应用所使用的联系人,而不是请求 {@link android.Manifest.permission#READ_CONTACTS},让您能够访问用户的所有联系人及其信息。
+
+
+要执行此操作,您需要使用以下进程:
+</p>
+<ol>
+    <li>
+        您的应用会使用方法 {@link android.app.Activity#startActivityForResult
+  startActivityForResult()} 发送包含操作
+ {@link android.content.Intent#ACTION_PICK} 和“联系人”MIME 类型
+ {@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE} 的 Intent 对象。
+
+    </li>
+    <li>
+        由于此 Intent 与“联系人”应用的“选择” Activity 的 Intent 过滤器相匹配,因此 Activity 会显示在前台。
+
+    </li>
+    <li>
+        在选择 Activity 中,用户选择要更新的联系人。
+发生此情况时,选择 Activity 会调用
+ {@link android.app.Activity#setResult setResult(resultcode, intent)}
+ 以设置用于返回至应用的 Intent。 Intent 包含用户选择的联系人的内容 URI,以及“extras”标志
+ {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}。
+这些标志会为您的应用授予读取内容 URI 所指向的联系人的数据的 URI
+ 权限。然后,选择 Activity 会调用 {@link android.app.Activity#finish()} 以返回对应用的控制。
+
+
+    </li>
+    <li>
+        您的 Activity 会返回至前台,系统会调用您的 Activity 的
+ {@link android.app.Activity#onActivityResult onActivityResult()}
+ 方法。此方法会收到“联系人”应用中选择 Activity 所创建的结果 Intent。
+
+    </li>
+    <li>
+        通过来自结果 Intent 的内容 URI,您可以读取来自联系人提供程序的联系人数据,即使您未在清单文件中请求对该提供程序的永久读取访问权限。
+
+您可以获取联系人的生日信息或其电子邮件地址,然后发送电子祝福。
+
+    </li>
+</ol>
+<h4>使用其他应用</h4>
+<p>
+    允许用户修改您无权访问的数据的简单方法是激活具有权限的应用,让用户在其中执行工作。
+
+</p>
+<p>
+    例如,日历应用接受
+ {@link android.content.Intent#ACTION_INSERT} Intent,这让您可以激活应用的插入 UI。您可以在此 Intent(应用将使用该 Intent 来预先填充 UI)中传递“额外”数据,由于定期事件具有复杂的语法,因此将事件插入日历提供程序的首选方式是激活具有
+ {@link android.content.Intent#ACTION_INSERT} 的日历应用,然后让用户在其中插入事件。
+
+
+
+</p>
+<!-- Contract Classes -->
+<h2 id="ContractClasses">协定类</h2>
+<p>
+    协定类定义帮助应用使用内容 URI、列名称、 Intent 操作以及内容提供程序的其他功能的常量。
+协定类未自动包含在提供程序中;提供程序的开发者需要定义它们,然后使其可用于其他开发者。
+
+Android
+ 平台中包含的许多提供程序都在软件包 {@link android.provider} 中具有对应的协定类。
+</p>
+<p>
+    例如,用户字典提供程序具有包含内容 URI 和列名称常量的协定类 {@link android.provider.UserDictionary}。
+
+“字词”表的内容 URI 在常量
+ {@link android.provider.UserDictionary.Words#CONTENT_URI UserDictionary.Words.CONTENT_URI} 中定义。
+    {@link android.provider.UserDictionary.Words} 类也包含列名称常量,本指南的示例代码段中就使用了该常量。
+例如,查询投影可以定义为:
+
+</p>
+<pre>
+String[] mProjection =
+{
+    UserDictionary.Words._ID,
+    UserDictionary.Words.WORD,
+    UserDictionary.Words.LOCALE
+};
+</pre>
+<p>
+    联系人提供程序的 {@link android.provider.ContactsContract} 也是一个协定类。
+    此类的参考文档包括示例代码段。其子类之一 {@link android.provider.ContactsContract.Intents.Insert} 是包含 Intent 和 Intent 数据的协定类。
+
+
+</p>
+
+
+<!-- MIME Type Reference -->
+<h2 id="MIMETypeReference">MIME 类型引用</h2>
+<p>
+    内容提供程序可以返回标准 MIME 媒体类型和/或自定义 MIME 类型字符串。
+</p>
+<p>
+    MIME 类型具有格式
+</p>
+<pre>
+<em>type</em>/<em>subtype</em>
+</pre>
+<p>
+    例如,众所周知的 MIME 类型 <code>text/html</code> 具有 <code>text</code> 类型和
+ <code>html</code> 子类型。如果提供程序为 URI 返回此类型,则意味着使用该 URI 的查询会返回包含 HTML 标记的文本。
+
+</p>
+<p>
+    自定义 MIME 类型字符串(也称为“特定于供应商”的 MIME 类型)具有更加复杂的<em>类型</em>和<em>子类型</em>值。
+<em>类型</em>值始终为
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>
+</pre>
+<p>
+    (多行)或
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>
+</pre>
+<p>
+    (单行)。
+</p>
+<p>
+    <em>子类型</em>特定于提供程序。Android 内置提供程序通常具有简单的子类型。
+例如,当联系人应用为电话号码创建行时,它会在行中设置以下 MIME 类型:
+
+</p>
+<pre>
+vnd.android.cursor.item/phone_v2
+</pre>
+<p>
+    请注意,子类型值只是 <code>phone_v2</code>。
+</p>
+<p>
+    其他提供程序开发者可能会根据提供程序的授权和表名称创建自己的子类型模式。
+例如,假设提供程序包含列车时刻表。
+    提供程序的授权是 <code>com.example.trains</code>,并包含表
+ Line1、Line2 和 Line3。在响应表 Line1 的内容 URI
+</p>
+<p>
+<pre>
+content://com.example.trains/Line1
+</pre>
+<p>
+    时,提供程序会返回 MIME 类型
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>/vnd.example.line1
+</pre>
+<p>
+     在响应表 Line2 中第 5 行的内容 URI
+</p>
+<pre>
+content://com.example.trains/Line2/5
+</pre>
+<p>
+    时,提供程序会返回 MIME 类型
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>/vnd.example.line2
+</pre>
+<p>
+    大多数内容提供程序都会为其使用的 MIME 类型定义协定类常量。例如,联系人提供程序协定类 {@link android.provider.ContactsContract.RawContacts} 会为单个原始联系人行的 MIME 类型定义常量
+ {@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE}。
+
+
+
+</p>
+<p>
+    
+<a href="#ContentURIs">内容 URI</a> 部分介绍了单个行的内容 URI。
+</p>
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/providers/content-provider-creating.jd b/docs/html-intl/intl/zh-cn/guide/topics/providers/content-provider-creating.jd
new file mode 100644
index 0000000..6da5743
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/providers/content-provider-creating.jd
@@ -0,0 +1,1214 @@
+page.title=创建内容提供程序
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+
+<h2>本文内容</h2>
+<ol>
+    <li>
+        <a href="#DataStorage">设计数据存储</a>
+    </li>
+    <li>
+        <a href="#ContentURI">设计内容 URI</a>
+    </li>
+    <li>
+        <a href="#ContentProvider">实现 ContentProvider 类</a>
+        <ol>
+            <li>
+                <a href="#RequiredAccess">必需方法</a>
+            </li>
+            <li>
+                <a href="#Query">实现 query() 方法</a>
+            </li>
+            <li>
+                <a href="#Insert">实现 insert() 方法</a>
+            </li>
+            <li>
+                <a href="#Delete">实现 delete() 方法</a>
+            </li>
+            <li>
+                <a href="#Update">实现 update() 方法</a>
+            </li>
+            <li>
+                <a href="#OnCreate">实现 onCreate() 方法</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#MIMETypes">实现内容提供程序 MIME 类型</a>
+        <ol>
+            <li>
+                <a href="#TableMIMETypes">表的 MIME 类型</a>
+            </li>
+            <li>
+                <a href="#FileMIMETypes">文件的 MIME 类型</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#ContractClass">实现协定类</a>
+    </li>
+    <li>
+        <a href="#Permissions">实现内容提供程序权限</a>
+    </li>
+    <li>
+        <a href="#ProviderElement">&lt;Provider&gt; 元素</a>
+    </li>
+    <li>
+        <a href="#Intents"> Intent 和数据访问</a>
+    </li>
+</ol>
+<h2>关键类</h2>
+    <ol>
+        <li>
+            {@link android.content.ContentProvider}
+        </li>
+        <li>
+            {@link android.database.Cursor}
+        </li>
+        <li>
+            {@link android.net.Uri}
+        </li>
+    </ol>
+<h2>相关示例</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}resources/samples/NotePad/index.html">
+                记事本示例应用
+            </a>
+        </li>
+    </ol>
+<h2>另请参阅</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+            内容提供程序基础知识</a>
+        </li>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+            日历提供程序</a>
+        </li>
+    </ol>
+</div>
+</div>
+
+
+<p>
+    内容提供程序管理对中央数据存储库的访问。您将
+    提供程序作为 Android 应用中的一个或多个类(连同清单文件
+    中的元素)实现。其中一个类会实现子类
+    {@link android.content.ContentProvider},即您的提供程序与
+    其他应用之间的界面。尽管内容提供程序旨在向其他应用提供
+    数据,但您的应用中必定有这样一些 Activity,它们允许用户
+    查询和修改由提供程序管理的数据。
+</p>
+<p>
+    本主题的其余部分列出了开发内容提供程序的基本步骤和
+    需要使用的 API。
+</p>
+
+
+<!-- Before You Start Building -->
+<h2 id="BeforeYouStart">着手开发前的准备工作</h2>
+<p>
+    请在着手开发提供程序之前执行以下操作:
+</p>
+<ol>
+    <li>
+        <strong>决定您是否需要内容提供程序</strong>。如果您想提供下列一项或多项功能,则需要开发内容
+        提供程序:
+        <ul>
+            <li>您想为其他应用提供复杂的数据或文件</li>
+            <li>您想允许用户将复杂的数据从您的应用复制到其他应用中</li>
+            <li>您想使用搜索框架提供自定义搜索建议</li>
+        </ul>
+    <p>
+        如果完全是在
+        您自己的应用中使用,则“根本不”<em></em>需要提供程序即可使用 SQLite 数据库。
+    </p>
+    </li>
+    <li>
+        如果您尚未完成此项操作,请阅读
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        内容提供程序基础知识</a>主题,了解有关提供程序的详情。
+    </li>
+</ol>
+<p>
+    接下来,请按照以下步骤开发您的提供程序:
+</p>
+<ol>
+    <li>
+        为您的数据设计原始存储。内容提供程序以两种方式提供数据:
+        <dl>
+            <dt>
+                文件数据
+            </dt>
+            <dd>
+                通常存储在文件中的数据,如
+                照片、音频或视频。将文件存储在您的应用的私有
+                空间内。您的提供程序可以应其他应用发出的文件请求
+                提供文件句柄。
+            </dd>
+            <dt>
+                “结构化”数据
+            </dt>
+            <dd>
+                通常存储在数据库、数组或类似结构中的数据。
+                以兼容行列表的形式存储数据。行
+                表示实体,如人员或库存项目。列表示
+                实体的某项数据,如人员的姓名或商品的价格。此类数据通常
+                存储在 SQLite 数据库中,但您可以使用任何类型的
+                持久存储。如需了解有关
+                Android 系统中提供的存储类型的更多信息,请参阅<a href="#DataStorage">
+                设计数据存储</a>部分。
+            </dd>
+        </dl>
+    </li>
+    <li>
+        定义 {@link android.content.ContentProvider} 类及其
+        所需方法的具体实现。此类是您的数据与
+        Android 系统其余部分之间的界面。如需了解有关此类的详细信息,请参阅
+        <a href="#ContentProvider">实现 ContentProvider 类</a>部分。
+    </li>
+    <li>
+        定义提供程序的权限字符串、其内容 URI 以及列名称。如果您想让
+        提供程序的应用处理 Intent,则还要定义 Intent 操作、Extra 数据
+        以及标志。此外,还要定义想要访问您的数据的应用必须具备的权限。
+您应该考虑在一个单独的协定类中将所有这些值定义为常量;以后您可以将此类公开给其他开发者。
+如需了解有关内容 URI 的详细信息,请参阅<a href="#ContentURI">设计内容 URI</a> 部分。
+
+
+        如需了解有关 Intent 的详细信息,请参阅<a href="#Intents"> Intent 和数据访问</a>部分。
+
+    </li>
+    <li>
+        添加其他可选部分,如示例数据或可以在提供程序与云数据之间同步数据的 {@link android.content.AbstractThreadedSyncAdapter} 实现。
+
+
+    </li>
+</ol>
+
+
+<!-- Designing Data Storage -->
+<h2 id="DataStorage">设计数据存储</h2>
+<p>
+    内容提供程序是用于访问以结构化格式保存的数据的界面。在您创建该界面之前,必须决定如何存储数据。
+您可以按自己的喜好以任何形式存储数据,然后根据需要设计读写数据的界面。
+
+</p>
+<p>
+    以下是 Android 中提供的一些数据存储技术:
+</p>
+<ul>
+    <li>
+        Android 系统包括一个 SQLite 数据库 API,Android 自己的提供程序使用它来存储面向表的数据。
+{@link android.database.sqlite.SQLiteOpenHelper} 类可帮助您创建数据库,{@link android.database.sqlite.SQLiteDatabase} 类是用于访问数据库的基类。
+
+
+
+        <p>
+            请记住,您不必使用数据库来实现存储库。提供程序在外部表现为一组表,与关系数据库类似,但这并不是对提供程序内部实现的要求;
+
+
+        </p>
+    </li>
+    <li>
+        对于存储文件数据,Android 提供了各种面向文件的 API。
+        如需了解有关文件存储的更多信息,请阅读<a href="{@docRoot}guide/topics/data/data-storage.html">数据存储</a>主题。
+如果您要设计提供媒体相关数据(如音乐或视频)的提供程序,则可开发一个合并了表数据和文件的提供程序;
+
+
+    </li>
+    <li>
+        要想使用基于网络的数据,请使用 {@link java.net} 和 {@link android.net} 中的类。
+您也可以将基于网络的数据与本地数据存储(如数据库)同步,然后以表或文件的形式提供数据。
+
+        <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">示例同步适配器</a>示例应用展示了这类同步。
+
+    </li>
+</ul>
+<h3 id="DataDesign">
+    数据设计考虑事项
+</h3>
+<p>
+    以下是一些设计提供程序数据结构的技巧:
+</p>
+<ul>
+    <li>
+        表数据应始终具有一个“主键”列,提供程序将其作为与每行对应的唯一数字值加以维护。
+您可以使用此值将该行链接到其他表中的相关行(将其用作“外键”)。
+尽管您可以为此列使用任何名称,但使用 {@link android.provider.BaseColumns#_ID BaseColumns._ID} 是最佳选择,因为将提供程序查询的结果链接到 {@link android.widget.ListView} 的条件是,检索到的其中一个列的名称必须是 <code>_ID</code>;
+
+
+
+
+    </li>
+    <li>
+        如果您想提供位图图像或其他非常庞大的文件导向型数据,请将数据存储在一个文件中,然后间接提供这些数据,而不是直接将其存储在表中。
+
+如果您执行了此操作,则需要告知提供程序的用户,他们需要使用 {@link android.content.ContentResolver} 文件方法来访问数据;
+
+    </li>
+    <li>
+        使用二进制大型对象 (BLOB) 数据类型存储大小或结构会发生变化的数据。
+例如,您可以使用 BLOB 列来存储<a href="http://code.google.com/p/protobuf">协议缓冲区</a>或 <a href="http://www.json.org">JSON 结构</a>。
+
+
+        <p>
+            您也可以使用 BLOB 来实现<em>独立于架构</em>的表。在这类表中,您需要以 BLOB 形式定义一个主键列、一个 MIME 类型列以及一个或多个通用列。
+
+这些 BLOB 列中数据的含义通过 MIME 类型列中的值指示。
+这样一来,您就可以在同一表中存储不同类型的行。
+举例来说,联系人提供程序的“数据”表 {@link android.provider.ContactsContract.Data} 便是一个独立于架构的表。
+
+
+        </p>
+    </li>
+</ul>
+<!-- Designing Content URIs -->
+<h2 id="ContentURI">设计内容 URI</h2>
+<p>
+    <strong>内容 URI</strong> 是用于在提供程序中标识数据的 URI。内容 URI 包括整个提供程序的符号名称(其<strong>权限</strong>)和一个指向表或文件的名称(<strong>路径</strong>)。
+
+可选 ID 部分指向
+    表中的单个行。
+    {@link android.content.ContentProvider} 的每一个数据访问方法都将内容 URI 作为参数;您可以利用这一点确定要访问的表、行或文件。
+
+</p>
+<p>
+    
+    <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">内容提供程序基础知识</a>主题中描述了内容 URI 的基础知识。
+
+</p>
+<h3>设计权限</h3>
+<p>
+    提供程序通常具有单一权限,该权限充当其 Android 内部名称。为避免与其他提供程序发生冲突,您应该使用 Internet 域所有权(反向)作为提供程序权限的基础。
+
+由于此建议也适用于 Android 软件包名称,因此您可以将提供程序权限定义为包含该提供程序的软件包名称的扩展名。
+
+例如,如果您的 Android 软件包名称为
+    <code>com.example.&lt;appname&gt;</code>,则应为提供程序授予权限 <code>com.example.&lt;appname&gt;.provider</code>。
+
+</p>
+<h3>设计路径结构</h3>
+<p>
+    开发者通常通过追加指向单个表的路径来根据权限创建内容 URI。
+例如,如果您有两个表:<em>table1</em> 和
+    <em>table2</em>,则可以通过合并上一示例中的权限来生成
+    内容 URI
+    <code>com.example.&lt;appname&gt;.provider/table1</code> 和
+    <code>com.example.&lt;appname&gt;.provider/table2</code>。路径并不限定于单个段,也无需为每一级路径都创建一个表。
+
+</p>
+<h3>处理内容 URI ID</h3>
+<p>
+    按照惯例,提供程序通过接受末尾具有行所对应 ID 值的内容 URI 来提供对表中单个行的访问。同样按照惯例,提供程序会将该 ID 值与表的 <code>_ID</code> 列进行匹配,并对匹配的行执行请求的访问。
+
+
+
+</p>
+<p>
+    这一惯例为访问提供程序的应用的常见设计模式提供了便利。应用会对提供程序执行查询,并使用 {@link android.widget.CursorAdapter} 以 {@link android.widget.ListView} 显示生成的 {@link android.database.Cursor}。
+
+
+    定义 {@link android.widget.CursorAdapter} 的条件是,
+    {@link android.database.Cursor} 中的其中一个列必须是 <code>_ID</code>
+</p>
+<p>
+    用户随后从 UI 上显示的行中选取其中一行,以查看或修改数据。
+应用会从支持
+    {@link android.widget.ListView} 的 {@link android.database.Cursor} 中获取对应行,获取该行的 <code>_ID</code> 值,将其追加到内容 URI,然后向提供程序发送访问请求。
+然后,提供程序便可对用户选取的特定行执行查询或修改。
+
+</p>
+<h3>内容 URI 模式</h3>
+<p>
+    为帮助您选择对传入的内容 URI 执行的操作,提供程序 API 加入了实用类 {@link android.content.UriMatcher},它会将内容 URI“模式”映射到整型值。
+
+您可以在一个 <code>switch</code> 语句中使用这些整型值,为匹配特定模式的一个或多个内容 URI 选择所需操作。
+
+</p>
+<p>
+    内容 URI 模式使用通配符匹配内容 URI:
+</p>
+    <ul>
+        <li>
+            <strong><code>*</code></strong>:匹配由任意长度的任何有效字符组成的字符串
+        </li>
+        <li>
+            <strong><code>#</code></strong>:匹配由任意长度的数字字符组成的字符串
+        </li>
+    </ul>
+<p>
+    以设计和编码内容 URI 处理为例,假设一个具有权限 <code>com.example.app.provider</code> 的提供程序能识别以下指向表的内容 URI:
+
+
+</p>
+<ul>
+    <li>
+        <code>content://com.example.app.provider/table1</code>:一个名为 <code>table1</code> 的表
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table2/dataset1</code>:一个名为
+        <code>dataset1</code> 的表
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table2/dataset2</code>:一个名为
+        <code>dataset2</code> 的表
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table3</code>:一个名为 <code>table3</code> 的表
+    </li>
+</ul>
+<p>
+    提供程序也能识别追加了行 ID 的内容 URI,例如,<code>content://com.example.app.provider/table3/1</code> 对应由 <code>table3</code> 中 <code>1</code> 标识的行的内容 URI。
+
+
+</p>
+<p>
+    可以使用以下内容 URI 模式:
+</p>
+<dl>
+    <dt>
+        <code>content://com.example.app.provider/*</code>
+    </dt>
+    <dd>
+        匹配提供程序中的任何内容 URI。
+    </dd>
+    <dt>
+        <code>content://com.example.app.provider/table2/*</code>:
+    </dt>
+    <dd>
+        匹配表 <code>dataset1</code>
+        和表 <code>dataset2</code> 的内容 URI,但不匹配 <code>table1</code> 或
+        <code>table3</code> 的内容 URI。
+    </dd>
+    <dt>
+        <code>content://com.example.app.provider/table3/#</code>:匹配
+        <code>table3</code> 中单个行的内容 URI,如 <code>content://com.example.app.provider/table3/6</code> 对应由
+        <code>6</code> 标识的行的内容 URI。
+
+    </dt>
+</dl>
+<p>
+    以下代码段说明了 {@link android.content.UriMatcher} 中方法的工作方式。
+    此代码采用不同方式处理整个表的 URI 与单个行的 URI,它为表使用的内容 URI 模式是
+    <code>content://&lt;authority&gt;/&lt;path&gt;</code>,为单个行使用的内容 URI 模式则是
+    <code>content://&lt;authority&gt;/&lt;path&gt;/&lt;id&gt;</code>。
+
+</p>
+<p>
+    方法 {@link android.content.UriMatcher#addURI(String, String, int) addURI()} 会将权限和路径映射到一个整型值。
+方法 {@link android.content.UriMatcher#match(Uri)
+    match()} 会返回 URI 的整型值。<code>switch</code> 语句会在查询整个表与查询单个记录之间进行选择:
+
+</p>
+<pre class="prettyprint">
+public class ExampleProvider extends ContentProvider {
+...
+    // Creates a UriMatcher object.
+    private static final UriMatcher sUriMatcher;
+...
+    /*
+     * The calls to addURI() go here, for all of the content URI patterns that the provider
+     * should recognize. For this snippet, only the calls for table 3 are shown.
+     */
+...
+    /*
+     * Sets the integer value for multiple rows in table 3 to 1. Notice that no wildcard is used
+     * in the path
+     */
+    sUriMatcher.addURI("com.example.app.provider", "table3", 1);
+
+    /*
+     * Sets the code for a single row to 2. In this case, the "#" wildcard is
+     * used. "content://com.example.app.provider/table3/3" matches, but
+     * "content://com.example.app.provider/table3 doesn't.
+     */
+    sUriMatcher.addURI("com.example.app.provider", "table3/#", 2);
+...
+    // Implements ContentProvider.query()
+    public Cursor query(
+        Uri uri,
+        String[] projection,
+        String selection,
+        String[] selectionArgs,
+        String sortOrder) {
+...
+        /*
+         * Choose the table to query and a sort order based on the code returned for the incoming
+         * URI. Here, too, only the statements for table 3 are shown.
+         */
+        switch (sUriMatcher.match(uri)) {
+
+
+            // If the incoming URI was for all of table3
+            case 1:
+
+                if (TextUtils.isEmpty(sortOrder)) sortOrder = "_ID ASC";
+                break;
+
+            // If the incoming URI was for a single row
+            case 2:
+
+                /*
+                 * Because this URI was for a single row, the _ID value part is
+                 * present. Get the last path segment from the URI; this is the _ID value.
+                 * Then, append the value to the WHERE clause for the query
+                 */
+                selection = selection + "_ID = " uri.getLastPathSegment();
+                break;
+
+            default:
+            ...
+                // If the URI is not recognized, you should do some error handling here.
+        }
+        // call the code to actually do the query
+    }
+</pre>
+<p>
+    另一个类 {@link android.content.ContentUris} 会提供一些工具方法,用于处理内容 URI 的 <code>id</code> 部分。
+{@link android.net.Uri} 类和
+    {@link android.net.Uri.Builder} 类包括一些工具方法,用于解析现有
+    {@link android.net.Uri} 对象和构建新对象。
+</p>
+
+<!-- Implementing the ContentProvider class -->
+<h2 id="ContentProvider">实现 ContentProvider 类</h2>
+<p>
+    {@link android.content.ContentProvider} 实例通过处理来自其他应用的请求来管理对结构化数据集的访问。
+所有形式的访问最终都会调用 {@link android.content.ContentResolver},后者接着调用
+    {@link android.content.ContentProvider} 的具体方法来获取访问权限。
+
+</p>
+<h3 id="RequiredAccess">必需方法</h3>
+<p>
+    抽象类 {@link android.content.ContentProvider} 定义了六个抽象方法,您必须将这些方法作为自己具体子类的一部分加以实现。
+所有这些方法(
+    {@link android.content.ContentProvider#onCreate() onCreate()} 除外)都由一个尝试访问您的内容提供程序的客户端应用调用:
+
+</p>
+<dl>
+    <dt>
+        {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+        query()}
+    </dt>
+    <dd>
+        从您的提供程序检索数据。使用参数选择要查询的表、要返回的行和列以及结果的排序顺序。
+
+        将数据作为 {@link android.database.Cursor} 对象返回。
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}
+    </dt>
+    <dd>
+        在您的提供程序中插入一个新行。使用参数选择目标表并获取要使用的列值。
+返回新插入行的内容 URI。
+
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#update(Uri, ContentValues, String, String[])
+        update()}
+    </dt>
+    <dd>
+        更新您提供程序中的现有行。使用参数选择要更新的表和行,并获取更新后的列值。
+返回已更新的行数。
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()}
+    </dt>
+    <dd>
+        从您的提供程序中删除行。使用参数选择要删除的表和行。
+返回已删除的行数。
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#getType(Uri) getType()}
+    </dt>
+    <dd>
+        返回内容 URI 对应的 MIME 类型。<a href="#MIMETypes">实现内容提供程序 MIME 类型</a>部分对此方法做了更详尽的描述。
+
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#onCreate() onCreate()}
+    </dt>
+    <dd>
+        初始化您的提供程序。Android 系统会在创建您的提供程序后立即调用此方法。
+请注意,
+        {@link android.content.ContentResolver} 对象尝试访问您的提供程序时,系统才会创建它。
+    </dd>
+</dl>
+<p>
+    请注意,这些方法的签名与同名的
+    {@link android.content.ContentResolver} 方法相同。
+</p>
+<p>
+    您在实现这些方法时应考虑以下事项:
+</p>
+<ul>
+    <li>
+        所有这些方法({@link android.content.ContentProvider#onCreate() onCreate()}
+        除外)都可由多个线程同时调用,因此它们必须是线程安全方法。如需了解有关多个线程的更多信息,请参阅<a href="{@docRoot}guide/components/processes-and-threads.html">进程和线程</a>主题;
+
+
+
+    </li>
+    <li>
+        避免在 {@link android.content.ContentProvider#onCreate()
+        onCreate()} 中执行长时间操作。将初始化任务推迟到实际需要时进行。
+        <a href="#OnCreate">实现 onCreate() 方法</a>部分对此做了更详尽的描述;
+
+    </li>
+    <li>
+        尽管您必须实现这些方法,但您的代码只需返回要求的数据类型,无需执行任何其他操作。
+例如,您可能想防止其他应用向某些表插入数据。
+要实现此目的,您可以忽略
+        {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} 调用并返回 0。
+
+    </li>
+</ul>
+<h3 id="Query">实现 query() 方法</h3>
+<p>
+    
+    {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+    ContentProvider.query()} 方法必须返回 {@link android.database.Cursor} 对象。如果失败,则会引发 {@link java.lang.Exception}。
+如果您使用 SQLite 数据库作为数据存储,则只需返回由 {@link android.database.sqlite.SQLiteDatabase} 类的其中一个
+    <code>query()</code> 方法返回的 {@link android.database.Cursor}。
+
+    如果查询不匹配任何行,您应该返回一个 {@link android.database.Cursor}
+    实例(其 {@link android.database.Cursor#getCount()} 方法返回 0)。
+    只有当查询过程中出现内部错误时,您才应该返回 <code>null</code>。
+</p>
+<p>
+    如果您不使用 SQLite 数据库作为数据存储,请使用 {@link android.database.Cursor} 的其中一个具体子类。
+例如,在 {@link android.database.MatrixCursor} 类实现的游标中,每一行都是一个 {@link java.lang.Object} 数组。
+对于此类,请使用 {@link android.database.MatrixCursor#addRow(Object[]) addRow()} 来添加新行。
+
+</p>
+<p>
+    请记住,Android 系统必须能够跨进程边界传播 {@link java.lang.Exception}。
+Android 可以为以下异常执行此操作,这些异常可能有助于处理查询错误:
+
+</p>
+<ul>
+    <li>
+        {@link java.lang.IllegalArgumentException}(您可以选择在提供程序收到无效的内容 URI 时引发此异常)
+
+    </li>
+    <li>
+        {@link java.lang.NullPointerException}
+    </li>
+</ul>
+<h3 id="Insert">实现 insert() 方法</h3>
+<p>
+    {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} 方法会使用 {@link android.content.ContentValues}
+    参数中的值向相应表中添加新行。
+如果 {@link android.content.ContentValues} 参数中未包含列名称,您可能想在您的提供程序代码或数据库架构中提供其默认值。
+
+
+</p>
+<p>
+    此方法应该返回新行的内容 URI。要想构建此方法,请使用
+    {@link android.content.ContentUris#withAppendedId(Uri, long) withAppendedId()} 向表的内容 URI 追加新行的 <code>_ID</code>(或其他主键)值。
+
+</p>
+<h3 id="Delete">实现 delete() 方法</h3>
+<p>
+    {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()} 方法不需要从您的数据存储中实际删除行。
+如果您将同步适配器与提供程序一起使用,应该考虑为已删除的行添加“删除”标志,而不是将行整个移除。
+
+同步适配器可以检查是否存在已删除的行,并将它们从服务器中移除,然后再将它们从提供程序中删除。
+
+</p>
+<h3 id="Update">实现 update() 方法</h3>
+<p>
+    {@link android.content.ContentProvider#update(Uri, ContentValues, String, String[])
+    update()} 方法采用
+    {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} 所使用的相同 {@link android.content.ContentValues} 参数,以及
+{@link android.content.ContentProvider#delete(Uri, String, String[]) delete()} 和
+    {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+    ContentProvider.query()} 所使用的相同 <code>selection</code> 和 <code>selectionArgs</code> 参数。
+这样一来,您就可以在这些方法之间重复使用代码。
+</p>
+<h3 id="OnCreate">实现 onCreate() 方法</h3>
+<p>
+    Android 系统会在启动提供程序时调用 {@link android.content.ContentProvider#onCreate()
+    onCreate()}。您只应在此方法中执行运行快速的初始化任务,并将数据库创建和数据加载推迟到提供程序实际收到数据请求时进行。
+
+如果您在
+    {@link android.content.ContentProvider#onCreate() onCreate()} 中执行长时间的任务,则会减慢提供程序的启动速度,
+进而减慢提供程序对其他应用的响应速度。
+
+</p>
+<p>
+    例如,如果您使用 SQLite 数据库,可以在
+    {@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()} 中创建一个新的 {@link android.database.sqlite.SQLiteOpenHelper} 对象,然后在首次打开数据库时创建 SQL 表。
+
+为简化这一过程,在您首次调用 {@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase
+    getWritableDatabase()} 时,它会自动调用
+    {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+    SQLiteOpenHelper.onCreate()} 方法。
+
+</p>
+<p>
+    以下两个代码段展示了
+    {@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()} 与
+    {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+    SQLiteOpenHelper.onCreate()} 之间的交互。第一个代码段是
+    {@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()} 的实现:
+</p>
+<pre class="prettyprint">
+public class ExampleProvider extends ContentProvider
+
+    /*
+     * Defines a handle to the database helper object. The MainDatabaseHelper class is defined
+     * in a following snippet.
+     */
+    private MainDatabaseHelper mOpenHelper;
+
+    // Defines the database name
+    private static final String DBNAME = "mydb";
+
+    // Holds the database object
+    private SQLiteDatabase db;
+
+    public boolean onCreate() {
+
+        /*
+         * Creates a new helper object. This method always returns quickly.
+         * Notice that the database itself isn't created or opened
+         * until SQLiteOpenHelper.getWritableDatabase is called
+         */
+        mOpenHelper = new MainDatabaseHelper(
+            getContext(),        // the application context
+            DBNAME,              // the name of the database)
+            null,                // uses the default SQLite cursor
+            1                    // the version number
+        );
+
+        return true;
+    }
+
+    ...
+
+    // Implements the provider's insert method
+    public Cursor insert(Uri uri, ContentValues values) {
+        // Insert code here to determine which table to open, handle error-checking, and so forth
+
+        ...
+
+        /*
+         * Gets a writeable database. This will trigger its creation if it doesn't already exist.
+         *
+         */
+        db = mOpenHelper.getWritableDatabase();
+    }
+}
+</pre>
+<p>
+    下一个代码段是
+    {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+    SQLiteOpenHelper.onCreate()} 的实现,其中包括一个帮助程序类:
+</p>
+<pre class="prettyprint">
+...
+// A string that defines the SQL statement for creating a table
+private static final String SQL_CREATE_MAIN = "CREATE TABLE " +
+    "main " +                       // Table's name
+    "(" +                           // The columns in the table
+    " _ID INTEGER PRIMARY KEY, " +
+    " WORD TEXT"
+    " FREQUENCY INTEGER " +
+    " LOCALE TEXT )";
+...
+/**
+ * Helper class that actually creates and manages the provider's underlying data repository.
+ */
+protected static final class MainDatabaseHelper extends SQLiteOpenHelper {
+
+    /*
+     * Instantiates an open helper for the provider's SQLite data repository
+     * Do not do database creation and upgrade here.
+     */
+    MainDatabaseHelper(Context context) {
+        super(context, DBNAME, null, 1);
+    }
+
+    /*
+     * Creates the data repository. This is called when the provider attempts to open the
+     * repository and SQLite reports that it doesn't exist.
+     */
+    public void onCreate(SQLiteDatabase db) {
+
+        // Creates the main table
+        db.execSQL(SQL_CREATE_MAIN);
+    }
+}
+</pre>
+
+
+<!-- Implementing ContentProvider MIME Types -->
+<h2 id="MIMETypes">实现 ContentProvider MIME 类型</h2>
+<p>
+    {@link android.content.ContentProvider} 类具有两个返回 MIME 类型的方法:
+</p>
+<dl>
+    <dt>
+        {@link android.content.ContentProvider#getType(Uri) getType()}
+    </dt>
+    <dd>
+        您必须为任何提供程序实现的必需方法之一。
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}
+    </dt>
+    <dd>
+        系统在您的提供程序提供文件时要求实现的方法。
+    </dd>
+</dl>
+<h3 id="TableMIMETypes">表的 MIME 类型</h3>
+<p>
+    {@link android.content.ContentProvider#getType(Uri) getType()} 方法会返回一个 MIME 格式的
+    {@link java.lang.String},后者描述内容
+    URI 参数返回的数据类型。{@link android.net.Uri} 参数可以是模式,而不是特定 URI;在这种情况下,您应该返回与匹配该模式的内容 URI 关联的数据类型。
+
+
+</p>
+<p>
+    对于文本、HTML 或 JPEG 等常见数据类型,
+    {@link android.content.ContentProvider#getType(Uri) getType()} 应该为该数据返回标准
+    MIME 类型。
+    <a href="http://www.iana.org/assignments/media-types/index.htm">IANA MIME Media Types</a>
+    网站上提供了这些标准类型的完整列表。
+</p>
+<p>
+    对于指向一个或多个表数据行的内容 URI,
+    {@link android.content.ContentProvider#getType(Uri) getType()} 应该以 Android 供应商特有 MIME 格式返回
+     MIME 类型:
+</p>
+<ul>
+    <li>
+        类型部分:<code>vnd</code>
+    </li>
+    <li>
+        子类型部分:
+        <ul>
+            <li>
+    如果 URI 模式用于单个行:<code>android.cursor.<strong>item</strong>/</code>
+            </li>
+            <li>
+    如果 URI 模式用于多个行:<code>android.cursor.<strong>dir</strong>/</code>
+            </li>
+        </ul>
+    </li>
+    <li>
+        提供程序特有部分:<code>vnd.&lt;name&gt;</code>.<code>&lt;type&gt;</code>
+        <p>
+            您提供 <code>&lt;name&gt;</code> 和 <code>&lt;type&gt;</code>。
+            <code>&lt;name&gt;</code> 值应具有全局唯一性,
+            <code>&lt;type&gt;</code> 值应在对应的 URI
+            模式中具有唯一性。适合选择贵公司的名称或您的应用 Android 软件包名称的某个部分作为 <code>&lt;name&gt;</code>。
+适合选择 URI 关联表的标识字符串作为 <code>&lt;type&gt;</code>。
+
+
+        </p>
+
+    </li>
+</ul>
+<p>
+    例如,如果提供程序的权限是
+    <code>com.example.app.provider</code>,并且它公开了一个名为
+    <code>table1</code> 的表,则 <code>table1</code> 中多个行的 MIME 类型是:
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>/vnd.com.example.provider.table1
+</pre>
+<p>
+    对于 <code>table1</code> 的单个行,MIME 类型是:
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>/vnd.com.example.provider.table1
+</pre>
+<h3 id="FileMIMETypes">文件的 MIME 类型</h3>
+<p>
+    如果您的提供程序提供文件,请实现 
+    {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}。
+    该方法会为您的提供程序可以为给定内容 URI 返回的文件返回一个 MIME 类型 {@link java.lang.String} 数组。您应该通过 MIME 类型过滤器参数过滤您提供的 MIME 类型,以便只返回客户端想处理的那些 MIME 类型。
+
+
+</p>
+<p>
+    例如,假设提供程序以 <code>.jpg</code>、
+    <code>.png</code> 和 <code>.gif</code> 格式文件形式提供照片图像。
+    如果应用调用 {@link android.content.ContentResolver#getStreamTypes(Uri, String)
+    ContentResolver.getStreamTypes()} 时使用了过滤器字符串 <code>image/*</code>(任何是“图像”的内容),则 {@link android.content.ContentProvider#getStreamTypes(Uri, String)
+    ContentProvider.getStreamTypes()} 方法应返回数组:
+
+
+</p>
+<pre>
+{ &quot;image/jpeg&quot;, &quot;image/png&quot;, &quot;image/gif&quot;}
+</pre>
+<p>
+    如果应用只对 <code>.jpg</code> 文件感兴趣,则可以在调用
+    {@link android.content.ContentResolver#getStreamTypes(Uri, String)
+    ContentResolver.getStreamTypes()} 时使用过滤器字符串 <code>*\/jpeg</code>,{@link android.content.ContentProvider#getStreamTypes(Uri, String)
+    ContentProvider.getStreamTypes()} 应返回:
+
+<pre>
+{&quot;image/jpeg&quot;}
+</pre>
+<p>
+    如果您的提供程序未提供过滤器字符串中请求的任何 MIME 类型,则
+    {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}
+    应返回 <code>null</code>。
+</p>
+
+
+<!--  Implementing a Contract Class -->
+<h2 id="ContractClass">实现协定类</h2>
+<p>
+    协定类是一种 <code>public final</code> 类,其中包含对 URI、列名称、MIME 类型以及其他与提供程序有关的元数据的常量定义。
+该类可确保即使 URI、列名称等数据的实际值发生变化,也可以正确访问提供程序,从而在提供程序与其他应用之间建立合同。
+
+
+
+</p>
+<p>
+    协定类对开发者也有帮助,因为其常量通常采用助记名称,因此可以降低开发者为列名称或 URI 使用错误值的可能性。
+由于它是一种类,因此可以包含 Javadoc 文档。
+集成开发环境(如
+    Eclipse)可以根据协定类自动完成常量名称,并为常量显示 Javadoc。
+
+</p>
+<p>
+    开发者无法从您的应用访问协定类的类文件,但他们可以通过您提供的 <code>.jar</code> 文件将其静态编译到其应用内。
+
+</p>
+<p>
+    举例来说,{@link android.provider.ContactsContract} 类及其嵌套类便属于协定类。
+
+</p>
+<h2 id="Permissions">实现内容提供程序权限</h2>
+<p>
+    <a href="{@docRoot}guide/topics/security/security.html">安全与权限</a>主题中详细描述了 Android 系统各个方面的权限和访问。
+
+    <a href="{@docRoot}guide/topics/data/data-storage.html">数据存储</a>主题也描述了各类存储实行中的安全与权限。
+
+    其中的要点简述如下:
+</p>
+<ul>
+    <li>
+        默认情况下,存储在设备内部存储上的数据文件是您的应用和提供程序的私有数据文件;
+
+    </li>
+    <li>
+        您创建的 {@link android.database.sqlite.SQLiteDatabase} 数据库是您的应用和提供程序的私有数据库;
+
+    </li>
+    <li>
+        默认情况下,您保存到外部存储的数据文件是<em>公用</em>并<em>可全局读取</em>的数据文件。
+您无法使用内容提供程序来限制对外部存储内文件的访问,因为其他应用可以使用其他 API 调用来对它们执行读取和写入操作;
+
+    </li>
+    <li>
+        用于在您的设备的内部存储上打开或创建文件或 SQLite 数据库的方法调用可能会为所有其他应用同时授予读取和写入访问权限。
+如果您将内部文件或数据库用作提供程序的存储库,并向其授予“可全局读取”或“可全局写入”访问权限,则您在清单文件中为提供程序设置的权限不会保护您的数据。
+
+
+内部存储中文件和数据库的默认访问权限是“私有”,对于提供程序的存储库,您不应更改此权限。
+
+    </li>
+</ul>
+<p>
+    如果您想使用内容提供程序权限来控制对数据的访问,则应将数据存储在内部文件、SQLite 数据库或“云”中(例如,远程服务器上),而且您应该保持文件和数据库为您的应用所私有。
+
+
+</p>
+<h3>实现权限</h3>
+<p>
+    即使底层数据为私有数据,所有应用仍可从您的提供程序读取数据或向其写入数据,因为在默认情况下,您的提供程序未设置权限。
+要想改变这种情况,请使用属性或
+    <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+    &lt;provider&gt;</a></code> 元素的子元素在您的清单文件中为您的提供程序设置权限。
+您可以设置适用于整个提供程序、特定表、甚至特定记录的权限,或者设置同时适用于这三者的权限。
+
+</p>
+<p>
+    您可以通过清单文件中的一个或多个
+    <code><a href="{@docRoot}guide/topics/manifest/permission-element.html">
+    &lt;permission&gt;</a></code> 元素为您的提供程序定义权限。要使权限对您的提供程序具有唯一性,请为
+    <code><a href="{@docRoot}guide/topics/manifest/permission-element.html#nm">
+    android:name</a></code> 属性使用 Java 风格作用域。
+例如,将读取权限命名为
+    <code>com.example.app.provider.permission.READ_PROVIDER</code>。
+
+</p>
+<p>
+    以下列表描述了提供程序权限的作用域,从适用于整个提供程序的权限开始,然后逐渐细化。
+
+    更细化的权限优先于作用域较大的权限:
+</p>
+<dl>
+    <dt>
+        统一读写提供程序级别权限
+    </dt>
+    <dd>
+        一个同时控制对整个提供程序读取和写入访问的权限,通过
+        <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code> 元素的 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+        android:permission</a></code> 属性指定。
+
+    </dd>
+    <dt>
+        单独的读取和写入提供程序级别权限
+    </dt>
+    <dd>
+        针对整个提供程序的读取权限和写入权限。您可以通过
+        <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code> 元素的 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">
+        android:readPermission</a></code> 属性和
+        <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">
+        android:writePermission</a></code> 属性
+        指定它们。它们优先于
+        <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+        android:permission</a></code> 所需的权限。
+    </dd>
+    <dt>
+        路径级别权限
+    </dt>
+    <dd>
+        针对提供程序中内容 URI 的读取、写入或读取/写入权限。您可以通过
+        <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code> 元素的 <code><a href="{@docRoot}guide/topics/manifest/path-permission-element.html">
+        &lt;path-permission&gt;</a></code> 子元素指定您想控制的每个 URI。
+
+对于您指定的每个内容 URI,您都可以指定读取/写入权限、读取权限或写入权限,或同时指定所有三种权限。
+读取权限和写入权限优先于读取/写入权限。
+此外,路径级别权限优先于提供程序级别权限。
+
+    </dd>
+    <dt>
+        临时权限
+    </dt>
+    <dd>
+        一种权限级别,即使应用不具备通常需要的权限,该级别也能授予对应用的临时访问权限。
+临时访问功能可减少应用需要在其清单文件中请求的权限数量。
+
+当您启用临时权限时,只有持续访问您的所有数据的应用才需要“永久性”提供程序访问权限。
+
+
+        <p>
+            假设您需要实现电子邮件提供程序和应用的权限,如果您想允许外部图像查看器应用显示您的提供程序中的照片附件,
+
+为了在不请求权限的情况下为图像查看器提供必要的访问权限,可以为照片的内容 URI 设置临时权限。
+对您的电子邮件应用进行相应设计,使应用能够在用户想要显示照片时向图像查看器发送一个 Intent,其中包含照片的内容 URI 以及权限标志。
+
+图像查看器可随后查询您的电子邮件提供程序以检索照片,即使查看器不具备对您提供程序的正常读取权限,也不受影响。
+
+
+        </p>
+        <p>
+            要想启用临时权限,请设置
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> 元素的
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+            android:grantUriPermissions</a></code> 属性,或者向您的
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> 元素添加一个或多个
+            <code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
+            &lt;grant-uri-permission&gt;</a></code> 子元素。如果您使用了临时权限,则每当您从提供程序中移除对某个内容 URI 的支持,并且该内容 URI 关联了临时权限时,都需要调用
+            {@link android.content.Context#revokeUriPermission(Uri, int)
+            Context.revokeUriPermission()}。
+
+        </p>
+        <p>
+            该属性的值决定可访问的提供程序范围。
+            如果该属性设置为 <code>true</code>,则系统会向整个提供程序授予临时权限,该权限将替代您的提供程序级别或路径级别权限所需的任何其他权限。
+
+
+        </p>
+        <p>
+            如果此标志设置为 <code>false</code>,则您必须向
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> 元素添加
+            <code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
+            &lt;grant-uri-permission&gt;</a></code> 子元素。每个子元素都指定授予的临时权限所对应的一个或多个内容 URI。
+
+        </p>
+        <p>
+            要向应用授予临时访问权限, Intent 必须包含
+            {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION} 和/或
+            {@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION} 标志。它们通过 {@link android.content.Intent#setFlags(int) setFlags()} 方法进行设置。
+
+        </p>
+        <p>
+            如果 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+            android:grantUriPermissions</a></code> 属性不存在,则假设其为
+            <code>false</code>。
+        </p>
+    </dd>
+</dl>
+
+
+
+<!-- The Provider Element -->
+<h2 id="ProviderElement">&lt;Provider&gt; 元素</h2>
+<p>
+    与 {@link android.app.Activity} 和 {@link android.app.Service} 组件类似,必须使用
+    <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+    &lt;provider&gt;</a></code> 元素在清单文件中为其应用定义
+    {@link android.content.ContentProvider} 的子类。
+Android 系统会从该元素获取以下信息:
+
+<dl>
+    <dt>
+        权限
+        (<a href="{@docRoot}guide/topics/manifest/provider-element.html#auth">{@code
+        android:authorities}</a>)
+    </dt>
+    <dd>
+        用于在系统内标识整个提供程序的符号名称。<a href="#ContentURI">设计内容 URI</a> 部分对此属性做了更详尽的描述。
+
+
+    </dd>
+    <dt>
+        提供程序类名
+        (<code>
+<a href="{@docRoot}guide/topics/manifest/provider-element.html#nm">android:name</a>
+        </code>)
+    </dt>
+    <dd>
+        实现 {@link android.content.ContentProvider} 的类。<a href="#ContentProvider">实现 ContentProvider 类</a>中对此类做了更详尽的描述。
+
+
+    </dd>
+    <dt>
+        权限
+    </dt>
+    <dd>
+        指定其他应用访问提供程序的数据所必须具备权限的属性:
+
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+                android:grantUriPermssions</a></code>:临时权限标志
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+                android:permission</a></code>:统一提供程序范围读取/写入权限
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">
+                android:readPermission</a></code>:提供程序范围读取权限
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">
+                android:writePermission</a></code>:提供程序范围写入权限
+            </li>
+        </ul>
+        <p>
+            <a href="#Permissions">实现内容提供程序权限</a>部分对权限及其对应属性做了更详尽的描述。
+
+
+        </p>
+    </dd>
+    <dt>
+        启动和控制属性
+    </dt>
+    <dd>
+        这些属性决定 Android 系统如何以及何时启动提供程序、提供程序的进程特性以及其他运行时设置:
+
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#enabled">
+                android:enabled</a></code>:允许系统启动提供程序的标志。
+            </li>
+              <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#exported">
+                android:exported</a></code>:允许其他应用使用此提供程序的标志。
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#init">
+                android:initOrder</a></code>:此提供程序相对于同一进程中其他提供程序的启动顺序。
+
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#multi">
+                android:multiProcess</a></code>:允许系统在与调用客户端相同的进程中启动提供程序的标志。
+
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#proc">
+                android:process</a></code>:应在其中运行提供程序的进程的名称。
+
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#sync">
+                android:syncable</a></code>:指示提供程序的数据将与服务器上的数据同步的标志。
+
+            </li>
+        </ul>
+        <p>
+            开发指南中针对
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code>
+            元素的主题提供了这些属性的完整资料。
+        </p>
+    </dd>
+    <dt>
+        信息属性
+    </dt>
+    <dd>
+        提供程序的可选图标和标签:
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#icon">
+                android:icon</a></code>:包含提供程序图标的 Drawable 资源。
+                该图标出现在<em>设置</em> &gt; <em>应用</em> &gt; <em>全部</em> 中应用列表内的提供程序标签旁;
+
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#label">
+                android:label</a></code>:描述提供程序和/或其数据的信息标签。
+该标签出现在<em>设置</em> &gt; <em>应用</em> &gt; <em>全部</em>中的应用列表内。
+
+            </li>
+        </ul>
+        <p>
+            开发指南中针对
+            <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> 元素的主题提供了这些属性的完整资料。
+        </p>
+    </dd>
+</dl>
+
+<!-- Intent Access -->
+<h2 id="Intents">Intent 和数据访问</h2>
+<p>
+    应用可以通过 {@link android.content.Intent} 间接访问内容提供程序。
+    应用不会调用 {@link android.content.ContentResolver} 或
+    {@link android.content.ContentProvider} 的任何方法,而会发送一个启动 Activity 的 Intent,该 Activity 通常是提供程序自身应用的一部分。
+目标 Activity 负责检索和显示其 UI 中的数据。视 Intent 中的操作而定,目标 Activity 可能还会提示用户对提供程序的数据进行修改。
+
+
+    Intent 可能还包含目标 Activity 在 UI 中显示的“extra”数据;用户随后可以选择更改此数据,然后使用它来修改提供程序中的数据。
+
+
+</p>
+<p>
+
+</p>
+<p>
+    您可能想使用 Intent 访问权限来帮助确保数据完整性。您的提供程序可能依赖于根据严格定义的业务逻辑插入、更新和删除数据。
+如果是这种情况,则允许其他应用直接修改您的数据可能会导致无效的数据。
+
+如果您想让开发者使用 Intent 访问权限,请务必为其提供详尽的参考资料。
+    向他们解释为什么使用自身应用 UI 的 Intent 访问比尝试通过代码修改数据更好。
+
+</p>
+<p>
+    处理想要修改您的提供程序数据的传入 Intent 与处理其他 Intent 没有区别。
+您可以通过阅读<a href="{@docRoot}guide/components/intents-filters.html"> Intent 和 Intent 过滤器</a>主题了解有关 Intent 用法的更多信息。
+
+</p>
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/providers/content-providers.jd b/docs/html-intl/intl/zh-cn/guide/topics/providers/content-providers.jd
new file mode 100644
index 0000000..80c778a
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/providers/content-providers.jd
@@ -0,0 +1,108 @@
+page.title=内容提供程序
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+
+<!-- In this document -->
+<h2>主题</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+            内容提供程序基础知识</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+            创建内容提供程序</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/calendar-provider.html">日历提供程序</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/contacts-provider.html">联系人提供程序</a>
+    </li>
+</ol>
+
+    <!-- Related Samples -->
+<h2>相关示例</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}resources/samples/ContactManager/index.html">
+            联系人管理器</a>应用
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html">
+        “游标(联系人)”
+        </a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html">
+        “游标(电话)”</a>
+        </li>
+        <li>
+            <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+            示例同步适配器</a>
+        </li>
+    </ol>
+</div>
+</div>
+<p>
+    内容提供程序管理对结构化数据集的访问。它们封装数据,并提供用于定义数据安全性的机制。
+内容提供程序是连接一个进程中的数据与另一个进程中运行的代码的标准界面。
+
+</p>
+<p>
+    如果您想要访问内容提供程序中的数据,可以将应用的 {@link android.content.Context} 中的 {@link android.content.ContentResolver} 对象用作客户端来与提供程序通信。
+
+
+    {@link android.content.ContentResolver} 对象会与提供程序对象(即实现 {@link android.content.ContentProvider} 的类实例)通信。
+提供程序对象从客户端接收数据请求,执行请求的操作并返回结果。
+
+
+</p>
+<p>
+    如果您不打算与其他应用共享数据,则无需开发自己的提供程序。
+不过,您需要通过自己的提供程序在您自己的应用中提供自定义搜索建议。
+如果您想将复杂的数据或文件从您的应用复制并粘贴到其他应用中,也需要创建您自己的提供程序。
+
+</p>
+<p>
+    Android 本身包括的内容提供程序可管理音频、视频、图像和个人联系信息等数据。
+<code><a href="{@docRoot}reference/android/provider/package-summary.html">android.provider</a>
+    </code> 软件包参考文档中列出了部分提供程序。
+
+任何 Android 应用都可以访问这些提供程序,但会受到某些限制。
+
+</p><p>
+    以下主题对内容提供程序做了更详尽的描述:
+</p>
+<dl>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+            内容提供程序基础知识</a></strong>
+    </dt>
+    <dd>
+        如何访问内容提供程序中以表形式组织的数据。
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+            创建内容提供程序</a></strong>
+    </dt>
+    <dd>
+        如何创建您自己的内容提供程序。
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+        日历提供程序</a></strong>
+    </dt>
+    <dd>
+        如何访问作为 Android 平台一部分的日历提供程序。
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/contacts-provider.html">
+        联系人提供程序</a></strong>
+    </dt>
+    <dd>
+        如何访问作为 Android 平台一部分的联系人提供程序。
+    </dd>
+</dl>
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/providers/document-provider.jd b/docs/html-intl/intl/zh-cn/guide/topics/providers/document-provider.jd
new file mode 100644
index 0000000..fd36e29
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/providers/document-provider.jd
@@ -0,0 +1,916 @@
+page.title=存储访问框架
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本文内容
+<a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
+        <span class="more">显示详细信息</span>
+        <span class="less" style="display:none">显示精简信息</span></a></h2>
+<ol id="toc44" class="hide-nested">
+    <li>
+        <a href="#overview">概览</a>
+    </li>
+    <li>
+        <a href="#flow">控制流</a>
+    </li>
+    <li>
+        <a href="#client">编写客户端应用</a>
+        <ol>
+        <li><a href="#search">搜索文档</a></li>
+        <li><a href="#process">处理结果</a></li>
+        <li><a href="#metadata">检查文档元数据</a></li>
+        <li><a href="#open">打开文档</a></li>
+        <li><a href="#create">创建新文档</a></li>
+        <li><a href="#delete">删除文档</a></li>
+        <li><a href="#edit">编辑文档</a></li>
+        <li><a href="#permissions">保留权限</a></li>
+        </ol>
+    </li>
+    <li><a href="#custom">编写自定义文档提供程序</a>
+        <ol>
+        <li><a href="#manifest">清单文件</a></li>
+        <li><a href="#contract">协定类</a></li>
+        <li><a href="#subclass">为 DocumentsProvider 创建子类</a></li>
+        <li><a href="#security">安全性</a></li>
+        </ol>
+    </li>
+
+</ol>
+<h2>关键类</h2>
+<ol>
+    <li>{@link android.provider.DocumentsProvider}</li>
+    <li>{@link android.provider.DocumentsContract}</li>
+</ol>
+
+<h2>视频</h2>
+
+<ol>
+    <li><a href="http://www.youtube.com/watch?v=zxHVeXbK1P4">
+DevBytes:Android 4.4 存储访问框架:提供程序</a></li>
+     <li><a href="http://www.youtube.com/watch?v=UFj9AEz0DHQ">
+DevBytes:Android 4.4 存储访问框架:客户端</a></li>
+</ol>
+
+
+<h2>代码示例</h2>
+
+<ol>
+    <li><a href="{@docRoot}samples/StorageProvider/index.html">
+存储提供程序</a></li>
+     <li><a href="{@docRoot}samples/StorageClient/index.html">
+StorageClient</a></li>
+</ol>
+
+<h2>另请参阅</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+内容提供程序基础知识
+</a>
+    </li>
+</ol>
+
+</div>
+</div>
+
+
+<p>Android 4.4(API 19 级)引入了存储访问框架 (SAF)。SAF
+让用户能够在其所有首选文档存储提供程序中方便地浏览并打开文档、图像以及其他文件。
+用户可以通过易用的标准 UI,以统一方式在所有应用和提供程序中浏览文件和访问最近使用的文件。
+</p>
+
+<p>云存储服务或本地存储服务可以通过实现封装其服务的
+{@link android.provider.DocumentsProvider} 参与此生态系统。只需几行代码,便可将需要访问提供程序文档的客户端应用与
+SAF
+集成。</p>
+
+<p>SAF 包括以下内容:</p>
+
+<ul>
+<li><strong>文档提供程序</strong>&mdash;一种内容提供程序,允许存储服务(如 Google
+云端硬盘)显示其管理的文件。文档提供程序作为
+{@link android.provider.DocumentsProvider}
+类的子类实现。文档提供程序的架构基于传统文件层次结构,但其实际数据存储方式由您决定。Android
+平台包括若干内置文档提供程序,如 Downloads、Images 和 Videos;
+
+</li>
+
+<li><strong>客户端应用</strong>&mdash;一种自定义应用,它调用
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 和/或
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT}  Intent 并接收文档提供程序返回的文件;
+</li>
+
+<li><strong>选取器</strong>&mdash;一种系统
+UI,允许用户访问所有满足客户端应用搜索条件的文档提供程序内的文档。</li>
+</ul>
+
+<p>SAF 提供的部分功能如下:</p>
+<ul>
+<li>允许用户浏览所有文档提供程序而不仅仅是单个应用中的内容;</li>
+<li>让您的应用获得对文档提供程序所拥有文档的长期、持久性访问权限。
+用户可以通过此访问权限添加、编辑、保存和删除提供程序上的文件;
+</li>
+<li>支持多个用户帐户和临时根目录,如只有在插入驱动器后才会出现的 USB
+存储提供程序。 </li>
+</ul>
+
+<h2 id ="overview">概览</h2>
+
+<p>SAF 围绕的内容提供程序是
+{@link android.provider.DocumentsProvider} 类的一个子类。在<em>文档提供程序</em>内,数据结构采用传统的文件层次结构:
+</p>
+<p><img src="{@docRoot}images/providers/storage_datamodel.png" alt="data model" /></p>
+<p class="img-caption"><strong>图 1. </strong>文档提供程序数据模型。根目录指向单个文档,后者随即启动整个结构树的扇出。
+</p>
+
+<p>请注意以下事项:</p>
+<ul>
+
+<li>每个文档提供程序都会报告一个或多个作为探索文档结构树起点的“根目录”。每个根目录都有一个唯一的
+{@link android.provider.DocumentsContract.Root#COLUMN_ROOT_ID},并且指向表示该根目录下内容的文档(目录)。根目录采用动态设计,以支持多个帐户、临时
+USB
+存储设备或用户登录/注销等用例;
+
+
+</li>
+
+<li>每个根目录下都有一个文档。该文档指向 1 至 <em>N</em>
+个文档,而其中每个文档又可指向 1 至 <em>N</em> 个文档; </li>
+
+<li>每个存储后端都会通过使用唯一的
+{@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID} 引用各个文件和目录来显示它们。文档
+ID
+必须具有唯一性,一旦发放便不得更改,因为它们用于所有设备重启过程中的永久性
+URI 授权;</li>
+
+
+<li>文档可以是可打开的文件(具有特定 MIME
+类型)或包含附加文档的目录(具有
+{@link android.provider.DocumentsContract.Document#MIME_TYPE_DIR} MIME 类型);</li>
+
+<li>每个文档都可以具有不同的功能,如
+{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS COLUMN_FLAGS} 所述。例如,{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_WRITE}、{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE}
+和
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_THUMBNAIL}。多个目录中可以包含相同的
+{@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID}。
+
+</li>
+</ul>
+
+<h2 id="flow">控制流</h2>
+<p>如前文所述,文档提供程序数据模型基于传统文件层次结构。
+不过,只要可以通过
+{@link android.provider.DocumentsProvider} API
+访问数据,您实际上可以按照自己喜好的方式存储数据。例如,您可以使用基于标记的云存储来存储数据。</p>
+
+<p>图 2 中的示例展示的是照片应用如何利用 SAF
+访问存储的数据:</p>
+<p><img src="{@docRoot}images/providers/storage_dataflow.png" alt="app" /></p>
+
+<p class="img-caption"><strong>图 2. </strong>存储访问框架流</p>
+
+<p>请注意以下事项:</p>
+<ul>
+
+<li>在 SAF
+中,提供程序和客户端并不直接交互。客户端请求与文件交互(即读取、编辑、创建或删除文件)的权限;
+</li>
+
+<li>交互在应用(在本示例中为照片应用)触发 Intent 
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 或 {@link android.content.Intent#ACTION_CREATE_DOCUMENT} 后开始。Intent 可能包括进一步细化条件的过滤器&mdash;例如,“为我提供所有 MIME
+类型为‘图像’的可打开文件”;
+</li>
+
+<li>Intent 触发后,系统选取器将检索每个已注册的提供程序,并向用户显示匹配的内容根目录;
+</li>
+
+<li>选取器会为用户提供一个标准的文档访问界面,但底层文档提供程序可能与其差异很大。
+例如,图 2
+显示了一个 Google 云端硬盘提供程序、一个 USB 提供程序和一个云提供程序。</li>
+</ul>
+
+<p>图 3 显示了一个选取器,一位搜索图像的用户在其中选择了一个
+Google 云端硬盘帐户:</p>
+
+<p><img src="{@docRoot}images/providers/storage_picker.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
+
+<p class="img-caption"><strong>图 3. </strong>选取器</p>
+
+<p>当用户选择 Google
+云端硬盘时,系统会显示图像,如图 4 所示。从这时起,用户就可以通过提供程序和客户端应用支持的任何方式与它们进行交互。
+
+
+<p><img src="{@docRoot}images/providers/storage_photos.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
+
+<p class="img-caption"><strong>图 4. </strong>图像</p>
+
+<h2 id="client">编写客户端应用</h2>
+
+<p>对于 Android 4.3
+及更低版本,如果您想让应用从其他应用中检索文件,它必须调用 {@link android.content.Intent#ACTION_PICK}
+或 {@link android.content.Intent#ACTION_GET_CONTENT} 等 Intent。然后,用户必须选择一个要从中选取文件的应用,并且所选应用必须提供一个用户界面,以便用户浏览和选取可用文件。
+
+ </p>
+
+<p>对于 Android 4.4 及更高版本,您还可以选择使用
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT}
+ Intent,后者会显示一个由系统控制的选取器
+UI,用户可以通过它浏览其他应用提供的所有文件。用户只需通过这一个 UI
+便可从任何受支持的应用中选取文件。</p>
+
+<p>{@link android.content.Intent#ACTION_OPEN_DOCUMENT}
+并非设计用于替代 {@link android.content.Intent#ACTION_GET_CONTENT}。应使用的 Intent 取决于应用的需要:
+</p>
+
+<ul>
+<li>如果您只想让应用读取/导入数据,请使用
+{@link android.content.Intent#ACTION_GET_CONTENT}。使用此方法时,应用会导入数据(如图像文件)的副本;
+</li>
+
+<li>如果您想让应用获得对文档提供程序所拥有文档的长期、持久性访问权限,请使用
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT}。
+例如,允许用户编辑存储在文档提供程序中的图像的照片编辑应用。
+ </li>
+
+</ul>
+
+
+<p>本节描述如何编写基于
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 和
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT} Intent 的客户端应用。</p>
+
+
+<h3 id="search">搜索文档</h3>
+
+<p>
+以下代码段使用
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT}
+来搜索包含图像文件的文档提供程序:</p>
+
+<pre>private static final int READ_REQUEST_CODE = 42;
+...
+/**
+ * Fires an intent to spin up the &quot;file chooser&quot; UI and select an image.
+ */
+public void performFileSearch() {
+
+    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's file
+    // browser.
+    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as a
+    // file (as opposed to a list of contacts or timezones)
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Filter to show only images, using the image MIME data type.
+    // If one wanted to search for ogg vorbis files, the type would be &quot;audio/ogg&quot;.
+    // To search for all documents available via installed storage providers,
+    // it would be &quot;*/*&quot;.
+    intent.setType(&quot;image/*&quot;);
+
+    startActivityForResult(intent, READ_REQUEST_CODE);
+}</pre>
+
+<p>请注意以下事项:</p>
+<ul>
+<li>当应用触发 {@link android.content.Intent#ACTION_OPEN_DOCUMENT}
+ Intent 时,后者会启动一个选取器来显示所有匹配的文档提供程序</li>
+
+<li>在 Intent 中添加类别 {@link android.content.Intent#CATEGORY_OPENABLE}
+可对结果进行过滤,以仅显示可以打开的文档(如图像文件)</li>
+
+<li>语句 {@code intent.setType("image/*")} 可做进一步过滤,以仅显示
+MIME 数据类型为图像的文档</li>
+</ul>
+
+<h3 id="results">处理结果</h3>
+
+<p>用户在选取器中选择文档后,系统就会调用
+{@link android.app.Activity#onActivityResult onActivityResult()}。指向所选文档的 URI
+包含在 {@code resultData}
+参数中。使用 {@link android.content.Intent#getData getData()}
+提取 URI。获得 URI 后,即可使用它来检索用户想要的文档。例如:
+</p>
+
+<pre>&#64;Override
+public void onActivityResult(int requestCode, int resultCode,
+        Intent resultData) {
+
+    // The ACTION_OPEN_DOCUMENT intent was sent with the request code
+    // READ_REQUEST_CODE. If the request code seen here doesn't match, it's the
+    // response to some other intent, and the code below shouldn't run at all.
+
+    if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
+        // The document selected by the user won't be returned in the intent.
+        // Instead, a URI to that document will be contained in the return intent
+        // provided to this method as a parameter.
+        // Pull that URI using resultData.getData().
+        Uri uri = null;
+        if (resultData != null) {
+            uri = resultData.getData();
+            Log.i(TAG, "Uri: " + uri.toString());
+            showImage(uri);
+        }
+    }
+}
+</pre>
+
+<h3 id="metadata">检查文档元数据</h3>
+
+<p>获得文档的 URI 后,即可获得对其元数据的访问权限。以下代码段用于获取 URI
+所指定文档的元数据并将其记入日志:</p>
+
+<pre>public void dumpImageMetaData(Uri uri) {
+
+    // The query, since it only applies to a single document, will only return
+    // one row. There's no need to filter, sort, or select fields, since we want
+    // all fields for one document.
+    Cursor cursor = getActivity().getContentResolver()
+            .query(uri, null, null, null, null, null);
+
+    try {
+    // moveToFirst() returns false if the cursor has 0 rows.  Very handy for
+    // &quot;if there's anything to look at, look at it&quot; conditionals.
+        if (cursor != null &amp;&amp; cursor.moveToFirst()) {
+
+            // Note it's called &quot;Display Name&quot;.  This is
+            // provider-specific, and might not necessarily be the file name.
+            String displayName = cursor.getString(
+                    cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
+            Log.i(TAG, &quot;Display Name: &quot; + displayName);
+
+            int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE);
+            // If the size is unknown, the value stored is null.  But since an
+            // int can't be null in Java, the behavior is implementation-specific,
+            // which is just a fancy term for &quot;unpredictable&quot;.  So as
+            // a rule, check if it's null before assigning to an int.  This will
+            // happen often:  The storage API allows for remote files, whose
+            // size might not be locally known.
+            String size = null;
+            if (!cursor.isNull(sizeIndex)) {
+                // Technically the column stores an int, but cursor.getString()
+                // will do the conversion automatically.
+                size = cursor.getString(sizeIndex);
+            } else {
+                size = &quot;Unknown&quot;;
+            }
+            Log.i(TAG, &quot;Size: &quot; + size);
+        }
+    } finally {
+        cursor.close();
+    }
+}
+</pre>
+
+<h3 id="open-client">打开文档</h3>
+
+<p>获得文档的 URI
+后,即可打开文档或对其执行任何其他您想要执行的操作。</p>
+
+<h4>位图</h4>
+
+<p>以下示例展示了如何打开 {@link android.graphics.Bitmap}:</p>
+
+<pre>private Bitmap getBitmapFromUri(Uri uri) throws IOException {
+    ParcelFileDescriptor parcelFileDescriptor =
+            getContentResolver().openFileDescriptor(uri, "r");
+    FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
+    Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
+    parcelFileDescriptor.close();
+    return image;
+}
+</pre>
+
+<p>请注意,您不应在 UI 线程上执行此操作。请使用
+{@link android.os.AsyncTask} 在后台执行此操作。打开位图后,即可在
+{@link android.widget.ImageView} 中显示它。
+</p>
+
+<h4>获取 InputStream</h4>
+
+<p>以下示例展示了如何从 URI 中获取
+{@link java.io.InputStream}。在此代码段中,系统将文件行读取到一个字符串中:</p>
+
+<pre>private String readTextFromUri(Uri uri) throws IOException {
+    InputStream inputStream = getContentResolver().openInputStream(uri);
+    BufferedReader reader = new BufferedReader(new InputStreamReader(
+            inputStream));
+    StringBuilder stringBuilder = new StringBuilder();
+    String line;
+    while ((line = reader.readLine()) != null) {
+        stringBuilder.append(line);
+    }
+    fileInputStream.close();
+    parcelFileDescriptor.close();
+    return stringBuilder.toString();
+}
+</pre>
+
+<h3 id="create">创建新文档</h3>
+
+<p>您的应用可以使用
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT}
+ Intent 在文档提供程序中创建新文档。要想创建文件,请为您的 Intent 提供一个 MIME
+类型和文件名,然后通过唯一的请求代码启动它。系统会为您执行其余操作:</p>
+
+
+<pre>
+// Here are some examples of how you might call this method.
+// The first parameter is the MIME type, and the second parameter is the name
+// of the file you are creating:
+//
+// createFile("text/plain", "foobar.txt");
+// createFile("image/png", "mypicture.png");
+
+// Unique request code.
+private static final int WRITE_REQUEST_CODE = 43;
+...
+private void createFile(String mimeType, String fileName) {
+    Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as
+    // a file (as opposed to a list of contacts or timezones).
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Create a file with the requested MIME type.
+    intent.setType(mimeType);
+    intent.putExtra(Intent.EXTRA_TITLE, fileName);
+    startActivityForResult(intent, WRITE_REQUEST_CODE);
+}
+</pre>
+
+<p>创建新文档后,即可在
+{@link android.app.Activity#onActivityResult onActivityResult()} 中获取其
+URI,以便继续向其写入内容。</p>
+
+<h3 id="delete">删除文档</h3>
+
+<p>如果您获得了文档的
+URI,并且文档的
+{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS Document.COLUMN_FLAGS}
+包含
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE SUPPORTS_DELETE},便可以删除该文档。例如:</p>
+
+<pre>
+DocumentsContract.deleteDocument(getContentResolver(), uri);
+</pre>
+
+<h3 id="edit">编辑文档</h3>
+
+<p>您可以使用 SAF
+就地编辑文本文档。以下代码段会触发
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT}  Intent 
+并使用类别 {@link android.content.Intent#CATEGORY_OPENABLE}
+以仅显示可以打开的文档。它会进一步过滤以仅显示文本文件:</p>
+
+<pre>
+private static final int EDIT_REQUEST_CODE = 44;
+/**
+ * Open a file for writing and append some text to it.
+ */
+ private void editDocument() {
+    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's
+    // file browser.
+    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as a
+    // file (as opposed to a list of contacts or timezones).
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Filter to show only text files.
+    intent.setType(&quot;text/plain&quot;);
+
+    startActivityForResult(intent, EDIT_REQUEST_CODE);
+}
+</pre>
+
+<p>接下来,您可以从
+{@link android.app.Activity#onActivityResult onActivityResult()}(请参阅<a href="#results">处理结果</a>)调用代码以执行编辑。以下代码段可从
+{@link android.content.ContentResolver} 获取
+{@link java.io.FileOutputStream}。默认情况下,它使用“写入”模式。最佳做法是请求获得所需的最低限度访问权限,因此如果您只需要写入权限,就不要请求获得读取/写入权限。
+
+</p>
+
+<pre>private void alterDocument(Uri uri) {
+    try {
+        ParcelFileDescriptor pfd = getActivity().getContentResolver().
+                openFileDescriptor(uri, "w");
+        FileOutputStream fileOutputStream =
+                new FileOutputStream(pfd.getFileDescriptor());
+        fileOutputStream.write(("Overwritten by MyCloud at " +
+                System.currentTimeMillis() + "\n").getBytes());
+        // Let the document provider know you're done by closing the stream.
+        fileOutputStream.close();
+        pfd.close();
+    } catch (FileNotFoundException e) {
+        e.printStackTrace();
+    } catch (IOException e) {
+        e.printStackTrace();
+    }
+}</pre>
+
+<h3 id="permissions">保留权限</h3>
+
+<p>当您的应用打开文件进行读取或写入时,系统会为您的应用提供针对该文件的
+URI 授权。该授权将一直持续到用户设备重启时。但假定您的应用是图像编辑应用,而且您希望用户能够直接从应用中访问他们编辑的最后
+5
+张图像。如果用户的设备已经重启,您就需要将用户转回系统选取器以查找这些文件,这显然不是理想的做法。
+
+</p>
+
+<p>为防止出现这种情况,您可以保留系统为您的应用授予的权限。您的应用实际上是“获取”了系统提供的持久
+URI
+授权。这使用户能够通过您的应用持续访问文件,即使设备已重启也不受影响:
+</p>
+
+
+<pre>final int takeFlags = intent.getFlags()
+            &amp; (Intent.FLAG_GRANT_READ_URI_PERMISSION
+            | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+// Check for the freshest data.
+getContentResolver().takePersistableUriPermission(uri, takeFlags);</pre>
+
+<p>还有最后一个步骤。您可能已经保存了应用最近访问的
+URI,但它们可能不再有效&mdash;另一个应用可能已删除或修改了文档。
+因此,您应该始终调用
+{@code getContentResolver().takePersistableUriPermission()}
+以检查有无最新数据。</p>
+
+<h2 id="custom">编写自定义文档提供程序</h2>
+
+<p>
+如果您要开发为文件提供存储服务(如云保存服务)的应用,可以通过编写自定义文档提供程序,通过
+SAF
+提供您的文件。本节描述如何执行此操作。
+</p>
+
+
+<h3 id="manifest">清单文件</h3>
+
+<p>要想实现自定义文档提供程序,请将以下内容添加到您的应用的清单文件:
+</p>
+<ul>
+
+<li>一个 API 19 级或更高级别的目标;</li>
+
+<li>一个声明自定义存储提供程序的
+<code>&lt;provider&gt;</code> 元素; </li>
+
+<li>提供程序的名称(即其类名),包括软件包名称。例如:<code>com.example.android.storageprovider.MyCloudProvider</code>;
+</li>
+
+<li>权限的名称,即您的软件包名称(在本例中为
+<code>com.example.android.storageprovider</code>)加内容提供程序的类型
+(<code>documents</code>)。例如,{@code com.example.android.storageprovider.documents};</li>
+
+<li>属性 <code>android:exported</code> 设置为
+<code>&quot;true&quot;</code>。您必须导出提供程序,以便其他应用可以看到;</li>
+
+<li>属性 <code>android:grantUriPermissions</code> 设置为
+<code>&quot;true&quot;</code>。此设置允许系统向其他应用授予对提供程序中内容的访问权限。
+如需查看有关保留对特定文档授权的阐述,请参阅<a href="#permissions">保留权限</a>;
+</li>
+
+<li>{@code MANAGE_DOCUMENTS} 权限。默认情况下,提供程序对所有人可用。
+添加此权限将限定您的提供程序只能供系统使用。此限制具有重要的安全意义;
+</li>
+
+<li>{@code android:enabled}
+属性设置为在资源文件中定义的一个布尔值。此属性的用途是,在运行 Android 4.3
+或更低版本的设备上禁用提供程序。例如,{@code android:enabled="@bool/atLeastKitKat"}。除了在清单文件中加入此属性外,您还需要执行以下操作;
+
+<ul>
+<li>在 {@code res/values/} 下的 {@code bool.xml}
+资源文件中,添加以下行 <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;false&lt;/bool&gt;</pre></li>
+
+<li>在 {@code res/values-v19/} 下的 {@code bool.xml}
+资源文件中,添加以下行 <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;true&lt;/bool&gt;</pre></li>
+</ul></li>
+
+<li>一个包括
+{@code android.content.action.DOCUMENTS_PROVIDER} 操作的 Intent 
+过滤器,以便在系统搜索提供程序时让您的提供程序出现在选取器中。</li>
+
+</ul>
+<p>以下是从一个包括提供程序的示例清单文件中摘录的内容:</p>
+
+<pre>&lt;manifest... &gt;
+    ...
+    &lt;uses-sdk
+        android:minSdkVersion=&quot;19&quot;
+        android:targetSdkVersion=&quot;19&quot; /&gt;
+        ....
+        &lt;provider
+            android:name=&quot;com.example.android.storageprovider.MyCloudProvider&quot;
+            android:authorities=&quot;com.example.android.storageprovider.documents&quot;
+            android:grantUriPermissions=&quot;true&quot;
+            android:exported=&quot;true&quot;
+            android:permission=&quot;android.permission.MANAGE_DOCUMENTS&quot;
+            android:enabled=&quot;&#64;bool/atLeastKitKat&quot;&gt;
+            &lt;intent-filter&gt;
+                &lt;action android:name=&quot;android.content.action.DOCUMENTS_PROVIDER&quot; /&gt;
+            &lt;/intent-filter&gt;
+        &lt;/provider&gt;
+    &lt;/application&gt;
+
+&lt;/manifest&gt;</pre>
+
+<h4 id="43">支持运行 Android 4.3 及更低版本的设备</h4>
+
+<p>{@link android.content.Intent#ACTION_OPEN_DOCUMENT}
+ Intent 仅可用于运行
+Android 4.4 及更高版本的设备。如果您想让应用支持 {@link android.content.Intent#ACTION_GET_CONTENT}
+以适应运行 Android 4.3
+及更低版本的设备,则应在您的清单文件中为运行 Android 4.4
+或更高版本的设备禁用 {@link android.content.Intent#ACTION_GET_CONTENT}  Intent 
+过滤器。应将文档提供程序和
+{@link android.content.Intent#ACTION_GET_CONTENT}
+视为具有互斥性。如果您同时支持这两者,您的应用将在系统选取器
+UI
+中出现两次,提供两种不同的方式来访问您存储的数据。这会给用户造成困惑。</p>
+
+<p>建议按照以下步骤为运行 Android 4.4 版或更高版本的设备禁用
+{@link android.content.Intent#ACTION_GET_CONTENT}  Intent 
+过滤器:</p>
+
+<ol>
+<li>在 {@code res/values/} 下的 {@code bool.xml}
+资源文件中,添加以下行 <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;true&lt;/bool&gt;</pre></li>
+
+<li>在 {@code res/values-v19/} 下的 {@code bool.xml}
+资源文件中,添加以下行 <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;false&lt;/bool&gt;</pre></li>
+
+<li>添加一个<a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">Activity别名</a>,为
+4.4 版(API 19
+级)或更高版本禁用 {@link android.content.Intent#ACTION_GET_CONTENT}  Intent 
+过滤器。例如:
+
+<pre>
+&lt;!-- This activity alias is added so that GET_CONTENT intent-filter
+     can be disabled for builds on API level 19 and higher. --&gt;
+&lt;activity-alias android:name=&quot;com.android.example.app.MyPicker&quot;
+        android:targetActivity=&quot;com.android.example.app.MyActivity&quot;
+        ...
+        android:enabled=&quot;@bool/atMostJellyBeanMR2&quot;&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name=&quot;android.intent.action.GET_CONTENT&quot; /&gt;
+        &lt;category android:name=&quot;android.intent.category.OPENABLE&quot; /&gt;
+        &lt;category android:name=&quot;android.intent.category.DEFAULT&quot; /&gt;
+        &lt;data android:mimeType=&quot;image/*&quot; /&gt;
+        &lt;data android:mimeType=&quot;video/*&quot; /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity-alias&gt;
+</pre>
+</li>
+</ol>
+<h3 id="contract">协定类</h3>
+
+<p>通常,当您编写自定义内容提供程序时,其中一项任务是实现协定类,如<a href="{@docRoot}guide/topics/providers/content-provider-creating.html#ContractClass">内容提供程序</a>开发者指南中所述。
+
+
+协定类是一种 {@code public final} 类,它包含对
+URI、列名称、MIME
+类型以及其他与提供程序有关的元数据的常量定义。SAF
+会为您提供这些协定类,因此您无需自行编写:
+</p>
+
+<ul>
+   <li>{@link android.provider.DocumentsContract.Document}</li>
+   <li>{@link android.provider.DocumentsContract.Root}</li>
+</ul>
+
+<p>例如,当系统在您的文档提供程序中查询文档或根目录时,您可能会在游标中返回以下列:
+</p>
+
+<pre>private static final String[] DEFAULT_ROOT_PROJECTION =
+        new String[]{Root.COLUMN_ROOT_ID, Root.COLUMN_MIME_TYPES,
+        Root.COLUMN_FLAGS, Root.COLUMN_ICON, Root.COLUMN_TITLE,
+        Root.COLUMN_SUMMARY, Root.COLUMN_DOCUMENT_ID,
+        Root.COLUMN_AVAILABLE_BYTES,};
+private static final String[] DEFAULT_DOCUMENT_PROJECTION = new
+        String[]{Document.COLUMN_DOCUMENT_ID, Document.COLUMN_MIME_TYPE,
+        Document.COLUMN_DISPLAY_NAME, Document.COLUMN_LAST_MODIFIED,
+        Document.COLUMN_FLAGS, Document.COLUMN_SIZE,};
+</pre>
+
+<h3 id="subclass">为 DocumentsProvider 创建子类</h3>
+
+<p>编写自定义文档提供程序的下一步是为抽象类
+{@link android.provider.DocumentsProvider} 创建子类。您至少需要实现以下方法:
+</p>
+
+<ul>
+<li>{@link android.provider.DocumentsProvider#queryRoots queryRoots()}</li>
+
+<li>{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}</li>
+
+<li>{@link android.provider.DocumentsProvider#queryDocument queryDocument()}</li>
+
+<li>{@link android.provider.DocumentsProvider#openDocument openDocument()}</li>
+</ul>
+
+<p>这些只是您需要严格实现的方法,但您可能还想实现许多其他方法。
+详情请参阅
+{@link android.provider.DocumentsProvider}。</p>
+
+<h4 id="queryRoots">实现 queryRoots</h4>
+
+<p>您实现的
+{@link android.provider.DocumentsProvider#queryRoots
+queryRoots()} 必须使用在
+{@link android.provider.DocumentsContract.Root} 中定义的列返回一个指向文档提供程序所有根目录的 {@link android.database.Cursor}。</p>
+
+<p>在以下代码段中,{@code projection}
+参数表示调用方想要返回的特定字段。代码段会创建一个新游标,并为其添加一行&mdash;一个根目录,如
+Downloads 或 Images
+等顶层目录。大多数提供程序只有一个根目录。有时您可能有多个根目录,例如,当您具有多个用户帐户时。
+在这种情况下,只需再为游标添加一行。
+</p>
+
+<pre>
+&#64;Override
+public Cursor queryRoots(String[] projection) throws FileNotFoundException {
+
+    // Create a cursor with either the requested fields, or the default
+    // projection if "projection" is null.
+    final MatrixCursor result =
+            new MatrixCursor(resolveRootProjection(projection));
+
+    // If user is not logged in, return an empty root cursor.  This removes our
+    // provider from the list entirely.
+    if (!isUserLoggedIn()) {
+        return result;
+    }
+
+    // It's possible to have multiple roots (e.g. for multiple accounts in the
+    // same app) -- just add multiple cursor rows.
+    // Construct one row for a root called &quot;MyCloud&quot;.
+    final MatrixCursor.RowBuilder row = result.newRow();
+    row.add(Root.COLUMN_ROOT_ID, ROOT);
+    row.add(Root.COLUMN_SUMMARY, getContext().getString(R.string.root_summary));
+
+    // FLAG_SUPPORTS_CREATE means at least one directory under the root supports
+    // creating documents. FLAG_SUPPORTS_RECENTS means your application's most
+    // recently used documents will show up in the &quot;Recents&quot; category.
+    // FLAG_SUPPORTS_SEARCH allows users to search all documents the application
+    // shares.
+    row.add(Root.COLUMN_FLAGS, Root.FLAG_SUPPORTS_CREATE |
+            Root.FLAG_SUPPORTS_RECENTS |
+            Root.FLAG_SUPPORTS_SEARCH);
+
+    // COLUMN_TITLE is the root title (e.g. Gallery, Drive).
+    row.add(Root.COLUMN_TITLE, getContext().getString(R.string.title));
+
+    // This document id cannot change once it's shared.
+    row.add(Root.COLUMN_DOCUMENT_ID, getDocIdForFile(mBaseDir));
+
+    // The child MIME types are used to filter the roots and only present to the
+    //  user roots that contain the desired type somewhere in their file hierarchy.
+    row.add(Root.COLUMN_MIME_TYPES, getChildMimeTypes(mBaseDir));
+    row.add(Root.COLUMN_AVAILABLE_BYTES, mBaseDir.getFreeSpace());
+    row.add(Root.COLUMN_ICON, R.drawable.ic_launcher);
+
+    return result;
+}</pre>
+
+<h4 id="queryChildDocuments">实现 queryChildDocuments</h4>
+
+<p>您实现的
+{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()} 必须使用在
+{@link android.provider.DocumentsContract.Document}
+中定义的列返回一个指向指定目录中所有文件的
+{@link android.database.Cursor}。</p>
+
+<p>当您在选取器 UI
+中选择应用时,系统会调用此方法。它会获取根目录下某个目录内的子文档。可以在文件层次结构的任何级别调用此方法,并非只能从根目录调用。
+以下代码段可创建一个包含所请求列的新游标,然后向游标添加父目录中每个直接子目录的相关信息。子目录可以是图像、另一个目录乃至任何文件:
+
+
+</p>
+
+<pre>&#64;Override
+public Cursor queryChildDocuments(String parentDocumentId, String[] projection,
+                              String sortOrder) throws FileNotFoundException {
+
+    final MatrixCursor result = new
+            MatrixCursor(resolveDocumentProjection(projection));
+    final File parent = getFileForDocId(parentDocumentId);
+    for (File file : parent.listFiles()) {
+        // Adds the file's display name, MIME type, size, and so on.
+        includeFile(result, null, file);
+    }
+    return result;
+}
+</pre>
+
+<h4 id="queryDocument">实现 queryDocument</h4>
+
+<p>您实现的
+{@link android.provider.DocumentsProvider#queryDocument queryDocument()}
+必须使用在 {@link android.provider.DocumentsContract.Document} 中定义的列返回一个指向指定文件的
+{@link android.database.Cursor}。
+</p>
+
+<p>除了特定文件的信息外,{@link android.provider.DocumentsProvider#queryDocument queryDocument()}
+方法返回的信息与
+{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}
+中传递的信息相同:</p>
+
+
+<pre>&#64;Override
+public Cursor queryDocument(String documentId, String[] projection) throws
+        FileNotFoundException {
+
+    // Create a cursor with the requested projection, or the default projection.
+    final MatrixCursor result = new
+            MatrixCursor(resolveDocumentProjection(projection));
+    includeFile(result, documentId, null);
+    return result;
+}
+</pre>
+
+<h4 id="openDocument">实现 queryDocument</h4>
+
+<p>您必须实现 {@link android.provider.DocumentsProvider#openDocument
+openDocument()} 以返回表示指定文件的
+{@link android.os.ParcelFileDescriptor}。其他应用可以使用返回的 {@link android.os.ParcelFileDescriptor}
+来流式传输数据。用户选择了文件,并且客户端应用通过调用
+{@link android.content.ContentResolver#openFileDescriptor openFileDescriptor()}
+来请求对文件的访问权限,系统便会调用此方法。例如:
+</p>
+
+<pre>&#64;Override
+public ParcelFileDescriptor openDocument(final String documentId,
+                                         final String mode,
+                                         CancellationSignal signal) throws
+        FileNotFoundException {
+    Log.v(TAG, &quot;openDocument, mode: &quot; + mode);
+    // It's OK to do network operations in this method to download the document,
+    // as long as you periodically check the CancellationSignal. If you have an
+    // extremely large file to transfer from the network, a better solution may
+    // be pipes or sockets (see ParcelFileDescriptor for helper methods).
+
+    final File file = getFileForDocId(documentId);
+
+    final boolean isWrite = (mode.indexOf('w') != -1);
+    if(isWrite) {
+        // Attach a close listener if the document is opened in write mode.
+        try {
+            Handler handler = new Handler(getContext().getMainLooper());
+            return ParcelFileDescriptor.open(file, accessMode, handler,
+                        new ParcelFileDescriptor.OnCloseListener() {
+                &#64;Override
+                public void onClose(IOException e) {
+
+                    // Update the file with the cloud server. The client is done
+                    // writing.
+                    Log.i(TAG, &quot;A file with id &quot; +
+                    documentId + &quot; has been closed!
+                    Time to &quot; +
+                    &quot;update the server.&quot;);
+                }
+
+            });
+        } catch (IOException e) {
+            throw new FileNotFoundException(&quot;Failed to open document with id &quot;
+            + documentId + &quot; and mode &quot; + mode);
+        }
+    } else {
+        return ParcelFileDescriptor.open(file, accessMode);
+    }
+}
+</pre>
+
+<h3 id="security">安全性</h3>
+
+<p>假设您的文档提供程序是受密码保护的云存储服务,并且您想在开始共享用户的文件之前确保其已登录。如果用户未登录,您的应用应该执行哪些操作呢?
+
+解决方案是在您实现的
+{@link android.provider.DocumentsProvider#queryRoots
+queryRoots()} 中返回零个根目录。也就是空的根目录游标:</p>
+
+<pre>
+public Cursor queryRoots(String[] projection) throws FileNotFoundException {
+...
+    // If user is not logged in, return an empty root cursor.  This removes our
+    // provider from the list entirely.
+    if (!isUserLoggedIn()) {
+        return result;
+}
+</pre>
+
+<p>另一个步骤是调用
+{@code getContentResolver().notifyChange()}。还记得 {@link android.provider.DocumentsContract} 吗?我们将使用它来创建此
+URI。以下代码段会在每次用户的登录状态发生变化时指示系统查询文档提供程序的根目录。
+如果用户未登录,则调用
+{@link android.provider.DocumentsProvider#queryRoots queryRoots()}
+会返回一个空游标,如上文所示。这可以确保只有在用户登录提供程序后其中的文档才可用。
+</p>
+
+<pre>private void onLoginButtonClick() {
+    loginOrLogout();
+    getContentResolver().notifyChange(DocumentsContract
+            .buildRootsUri(AUTHORITY), null);
+}
+</pre>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/resources/accessing-resources.jd b/docs/html-intl/intl/zh-cn/guide/topics/resources/accessing-resources.jd
new file mode 100644
index 0000000..e8e583a
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/resources/accessing-resources.jd
@@ -0,0 +1,337 @@
+page.title=访问资源
+parent.title=应用资源
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>内容快览</h2>
+  <ul>
+    <li>可以使用
+{@code R.drawable.myimage} 等来自 {@code R.java} 的整型数在代码中引用资源</li>
+    <li>可以使用 {@code
+&#64;drawable/myimage} 等特殊 XML 语法在资源中引用资源</li>
+    <li>您还可以通过
+{@link android.content.res.Resources} 中的方法访问您的应用资源</li>
+  </ul>
+
+  <h2>关键类</h2>
+  <ol>
+    <li>{@link android.content.res.Resources}</li>
+  </ol>
+
+  <h2>本文内容</h2>
+  <ol>
+    <li><a href="#ResourcesFromCode">在代码中访问资源</a></li>
+    <li><a href="#ResourcesFromXml">在 XML 中访问资源</a>
+      <ol>
+        <li><a href="#ReferencesToThemeAttributes">引用样式属性</a></li>
+      </ol>
+    </li>
+    <li><a href="#PlatformResources">访问平台资源</a></li>
+  </ol>
+
+  <h2>另请参阅</h2>
+  <ol>
+    <li><a href="providing-resources.html">提供资源</a></li>
+    <li><a href="available-resources.html">资源类型</a></li>
+  </ol>
+</div>
+</div>
+
+
+
+
+<p>您在应用中提供资源后(<a href="providing-resources.html">提供资源</a>中对此做了阐述),可通过引用其资源 ID 来应用该资源。所有资源 ID 都在您项目的 {@code R} 类中定义,后者由 {@code aapt} 工具自动生成。
+
+</p>
+
+<p>编译应用时,{@code aapt} 会生成 {@code R} 类,其中包含您的 {@code
+res/} 目录中所有资源的资源 ID。
+每个资源类型都有对应的 {@code R}
+子类(例如,{@code R.drawable}
+对应于所有 Drawable 资源),而该类型的每个资源都有对应的静态整型数(例如,{@code R.drawable.icon})。这个整型数就是可用来检索资源的资源
+ID。</p>
+
+<p>尽管资源 ID 是在 {@code R} 类中指定的,但您应该永远都不需要在其中查找资源
+ID。资源 ID 始终由以下部分组成:</p>
+<ul>
+  <li><em>资源类型</em>:每个资源都被分到一个“类型”组中,例如 {@code
+string}、{@code drawable} 和 {@code layout}。如需了解有关不同类型的详细信息,请参阅<a href="available-resources.html">资源类型</a>。
+  </li>
+  <li><em>资源名称</em>,它是不包括扩展名的文件名;或是 XML
+{@code android:name}
+属性中的值,如果资源是简单值的话(例如字符串)。</li>
+</ul>
+
+<p>访问资源的方法有两种:</p>
+<ul>
+  <li><strong>在代码中</strong>:使用来自 {@code R}
+类的某个子类的静态整型数,例如:
+    <pre class="classic no-pretty-print">R.string.hello</pre>
+    <p>{@code string} 是资源类型,{@code hello} 是资源名称。当您提供此格式的资源 ID 时,有许多
+Android API 可以访问您的资源。请参阅<a href="#ResourcesFromCode">在代码中访问资源</a>。
+</p>
+  </li>
+  <li><strong>在 XML 中</strong>:使用同样与您
+{@code R} 类中定义的资源 ID 对应的特殊 XML 语法,例如:
+    <pre class="classic no-pretty-print">&#64;string/hello</pre>
+    <p>{@code string} 是资源类型,{@code hello} 是资源名称。您可以在 XML
+资源中任何应该存在您在资源中所提供值的地方使用此语法。请参阅<a href="#ResourcesFromXml">在 XML 中访问资源</a>。</p>
+  </li>
+</ul>
+
+
+
+<h2 id="ResourcesFromCode">在代码中访问资源 </h2>
+
+<p>您可以通过以方法参数的形式传递资源 ID,在代码中使用资源。例如,您可以设置一个
+{@link android.widget.ImageView},以利用 {@link android.widget.ImageView#setImageResource(int) setImageResource()} 使用 {@code res/drawable/myimage.png}
+资源:</p>
+<pre>
+ImageView imageView = (ImageView) findViewById(R.id.myimageview);
+imageView.setImageResource(<strong>R.drawable.myimage</strong>);
+</pre>
+
+<p>您还可以利用 {@link
+android.content.res.Resources} 中的方法检索个别资源,您可以通过 {@link android.content.Context#getResources()}
+获得资源实例。</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>访问原始文件</h2>
+
+<p>尽管并不常见,但您的确有可能需要访问原始文件和目录。如果确有需要,则将您的文件保存在
+{@code res/} 中不起作用,因为从 {@code res/}
+读取资源的唯一方法是使用资源 ID。您可以改为将资源保存在
+{@code assets/} 目录中。</p>
+<p>保存在 {@code assets/} 目录中的文件“绝对没有”<em></em>资源
+ID,因此您无法通过 {@code R} 类或在 XML 中引用它们。您可以改为采用类似普通文件系统的方式查询
+{@code assets/} 目录中的文件,并利用
+{@link android.content.res.AssetManager} 读取原始数据。</p>
+<p>不过,如需的只是读取原始数据(例如视频文件或音频文件)的能力,则可将文件保存在 {@code res/raw/}
+目录中,并利用 {@link
+android.content.res.Resources#openRawResource(int) openRawResource()} 读取字节流。</p>
+
+</div>
+</div>
+
+
+<h3>语法</h3>
+
+<p>以下是在代码中引用资源的语法:</p>
+
+<pre class="classic no-pretty-print">
+[<em>&lt;package_name&gt;</em>.]R.<em>&lt;resource_type&gt;</em>.<em>&lt;resource_name&gt;</em>
+</pre>
+
+<ul>
+  <li><em>{@code &lt;package_name&gt;}</em>
+是资源所在包的名称(如果引用的资源来自您自己的资源包,则不需要)。</li>
+  <li><em>{@code &lt;resource_type&gt;}</em> 是资源类型的 {@code R} 子类。</li>
+  <li><em>{@code &lt;resource_name&gt;}</em>
+是不带扩展名的资源文件名,或 XML 元素中的 {@code android:name}
+属性值(如果资源是简单值)。</li>
+</ul>
+<p>如需了解有关各资源类型及其引用方法的详细信息,请参阅<a href="available-resources.html">资源类型</a>。
+</p>
+
+
+<h3>用例</h3>
+
+<p>有许多方法接受资源 ID 参数,您可以利用 {@link android.content.res.Resources}
+中的方法检索资源。您可以通过 {@link android.content.Context#getResources
+Context.getResources()} 获得 {@link
+android.content.res.Resources} 的实例。</p>
+
+
+<p>以下是一些在代码中访问资源的示例:</p>
+
+<pre>
+// Load a background for the current screen from a drawable resource
+{@link android.app.Activity#getWindow()}.{@link
+android.view.Window#setBackgroundDrawableResource(int)
+setBackgroundDrawableResource}(<strong>R.drawable.my_background_image</strong>) ;
+
+// Set the Activity title by getting a string from the Resources object, because
+//  this method requires a CharSequence rather than a resource ID
+{@link android.app.Activity#getWindow()}.{@link android.view.Window#setTitle(CharSequence)
+setTitle}(getResources().{@link android.content.res.Resources#getText(int)
+getText}(<strong>R.string.main_title</strong>));
+
+// Load a custom layout for the current screen
+{@link android.app.Activity#setContentView(int)
+setContentView}(<strong>R.layout.main_screen</strong>);
+
+// Set a slide in animation by getting an Animation from the Resources object
+mFlipper.{@link android.widget.ViewAnimator#setInAnimation(Animation)
+setInAnimation}(AnimationUtils.loadAnimation(this,
+        <strong>R.anim.hyperspace_in</strong>));
+
+// Set the text on a TextView object using a resource ID
+TextView msgTextView = (TextView) findViewById(<strong>R.id.msg</strong>);
+msgTextView.{@link android.widget.TextView#setText(int)
+setText}(<strong>R.string.hello_message</strong>);
+</pre>
+
+
+<p class="caution"><strong>注意:</strong>切勿手动修改 {@code
+R.java} 文件 &mdash; 它是在编译您的项目时由 {@code aapt}
+工具生成的。您下次编译时所有更改都会被替代。</p>
+
+
+
+<h2 id="ResourcesFromXml">在 XML 中访问资源</h2>
+
+<p>您可以利用对现有资源的引用为某些 XML
+属性和元素定义值。创建布局文件时,为给您的小工具提供字符串和图像,您经常要这样做。
+</p>
+
+<p>例如,如果您为布局添加一个
+{@link android.widget.Button},应该为按钮文本使用<a href="string-resource.html">字符串资源</a>:</p>
+
+<pre>
+&lt;Button
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:text="<strong>@string/submit</strong>" /&gt;
+</pre>
+
+
+<h3>语法</h3>
+
+<p>以下是在 XML 资源中引用资源的语法:</p>
+
+<pre class="classic no-pretty-print">
+&#64;[<em>&lt;package_name&gt;</em>:]<em>&lt;resource_type&gt;</em>/<em>&lt;resource_name&gt;</em>
+</pre>
+
+<ul>
+  <li>{@code &lt;package_name&gt;}
+是资源所在包的名称(如果引用的资源来自同一包,则不需要)</li>
+  <li>{@code &lt;resource_type&gt;} 是资源类型的
+{@code R} 子类</li>
+  <li>{@code &lt;resource_name&gt;}
+是不带扩展名的资源文件名,或 XML 元素中的 {@code android:name}
+属性值(如果资源是简单值)。</li>
+</ul>
+
+<p>如需了解有关各资源类型及其引用方法的详细信息,请参阅<a href="available-resources.html">资源类型</a>。
+</p>
+
+
+<h3>用例</h3>
+
+<p>在某些情况下,您必须使用资源作为 XML
+中的值(例如,对小工具应用可绘制图像),但您也可以在 XML 中任何接受简单值的地方使用资源。例如,如果您具有以下资源文件,其中包括一个<a href="more-resources.html#Color">颜色资源</a>和一个<a href="string-resource.html">字符串资源</a>:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+   &lt;color name="opaque_red">#f00&lt;/color>
+   &lt;string name="hello">Hello!&lt;/string>
+&lt;/resources>
+</pre>
+
+<p>您可以在以下布局文件中使用这些资源来设置文本颜色和文本字符串:
+</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;fill_parent&quot;
+    android:textColor=&quot;<strong>&#64;color/opaque_red</strong>&quot;
+    android:text=&quot;<strong>&#64;string/hello</strong>&quot; /&gt;
+</pre>
+
+<p>在此情况下,您无需在资源引用中指定包名称,因为资源来自您自己的资源包。
+要引用系统资源,您需要加入包名称。
+例如:</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;fill_parent&quot;
+    android:textColor=&quot;<strong>&#64;android:color/secondary_text_dark</strong>&quot;
+    android:text=&quot;&#64;string/hello&quot; /&gt;
+</pre>
+
+<p class="note"><strong>注:</strong>您应该始终使用字符串
+资源,以便将您的应用本地化为其他语言。如需了解有关创建备用资源(例如本地化字符串)的信息,请参阅<a href="providing-resources.html#AlternativeResources">提供备用资源</a>。
+
+
+如需查看将您的应用本地化为其他语言的完整指南,请参阅<a href="localization.html">本地化</a>。
+</p>
+
+<p>您甚至可以在 XML 中使用资源创建别名。例如,您可以创建一个 Drawable 资源,将其作为另一个 Drawable 资源的别名:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/other_drawable" />
+</pre>
+
+<p>这听起来多余,但对使用备用资源可能很有帮助。阅读更多关于<a href="providing-resources.html#AliasResources">创建别名资源</a>的内容。
+</p>
+
+
+
+<h3 id="ReferencesToThemeAttributes">引用样式属性</h3>
+
+<p>您可以通过样式属性资源在当前应用的风格主题中引用某个属性的值。
+通过引用样式属性,您可以不采用为 UI
+元素提供硬编码值这种方式,而是通过为 UI
+元素设置样式,使其匹配当前风格主题提供的标准变型来定制这些元素的外观。引用样式属性的实质作用是,“在当前风格主题中使用此属性定义的样式”。
+</p>
+
+<p>要引用样式属性,名称语法几乎与普通资源格式完全相同,只不过将 at 符号 ({@code @}) 改为问号 ({@code ?}),资源类型部分为可选项。
+
+例如:</p>
+
+<pre class="classic">
+?[<em>&lt;package_name&gt;</em>:][<em>&lt;resource_type&gt;</em>/]<em>&lt;resource_name&gt;</em>
+</pre>
+
+<p>例如,您可以通过以下代码引用一个属性,将文本颜色设置为与系统风格主题的“主要”文本颜色匹配:
+</p>
+
+<pre>
+&lt;EditText id=&quot;text&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;wrap_content&quot;
+    android:textColor=&quot;<strong>?android:textColorSecondary</strong>&quot;
+    android:text=&quot;&#64;string/hello_world&quot; /&gt;
+</pre>
+
+<p>在以上代码中,{@code android:textColor}
+属性表示当前风格主题中某个样式属性的名称。Android 现在会使用应用于 {@code android:textColorSecondary}
+样式属性的值作为 {@code android:textColor} 在这个小工具中的值。由于系统资源工具知道此环境中肯定存在某个属性资源,因此您无需显式声明类型(类型应为
+<code>?android:attr/textColorSecondary</code>)&mdash; 您可以将
+{@code attr}
+类型排除在外。</p>
+
+
+
+
+<h2 id="PlatformResources">访问平台资源</h2>
+
+<p>Android 包含许多标准资源,例如样式、风格主题和布局。要访问这些资源,请通过
+<code>android</code>
+包名称限定您的资源引用。例如,您可以将 Android 提供的布局资源用于
+{@link android.widget.ListAdapter} 中的列表项:</p>
+
+<pre>
+{@link android.app.ListActivity#setListAdapter(ListAdapter)
+setListAdapter}(new {@link
+android.widget.ArrayAdapter}&lt;String&gt;(this, <strong>android.R.layout.simple_list_item_1</strong>, myarray));
+</pre>
+
+<p>在上例中,{@link android.R.layout#simple_list_item_1}
+是平台为 {@link android.widget.ListView} 中的项目定义的布局资源。您可以使用它,而不必自行创建列表项布局。
+如需了解详细信息,请参阅<a href="{@docRoot}guide/topics/ui/layout/listview.html">列表视图</a>开发指南。
+</p>
+
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/resources/overview.jd b/docs/html-intl/intl/zh-cn/guide/topics/resources/overview.jd
new file mode 100644
index 0000000..21dbe6f
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/resources/overview.jd
@@ -0,0 +1,103 @@
+page.title=资源概览
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>主题</h2>
+  <ol>
+    <li><a href="providing-resources.html">提供资源</a></li>
+    <li><a href="accessing-resources.html">访问资源</a></li>
+    <li><a href="runtime-changes.html">处理运行时变更</a></li>
+    <li><a href="localization.html">本地化</a></li>
+  </ol>
+
+  <h2>参考文档</h2>
+  <ol>
+    <li><a href="available-resources.html">资源类型</a></li>
+  </ol>
+</div>
+</div>
+
+
+<p>您应该始终外部化资源,例如图像和应用代码中的字符串,这样有利于您单独维护这些资源。
+此外,通过外部化资源,您还可以提供支持特定设备配置(例如,不同的语言或屏幕尺寸)的备用资源,随着采用
+Android
+ 技术且配置各异的设备越来越多,这些资源的重要性也日益增加。
+为了提供与不同配置的兼容性,您必须使用各种按类型和配置对资源进行分组的子目录,对项目
+{@code res/}
+目录中的资源加以组织。
+</p>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram1.png" height="167" alt="" />
+<p class="img-caption">
+<strong>图 1. </strong>两种不同的设备,均使用默认布局(应用不提供备用布局)。
+</p>
+</div>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
+<p class="img-caption">
+<strong>图 2. </strong>两种不同的设备,分别使用针对不同屏幕尺寸提供的不同布局。
+</p>
+</div>
+
+<p>对于任意类型的资源,您均可以为应用指定默认资源和多个备用资源:
+<em></em><em></em></p>
+<ul>
+  <li>默认资源系指无论设备配置如何,或者在没有备用资源与当前配置相匹配时,均应使用的资源。
+
+</li>
+  <li>备用资源系指设计用于特定配置的资源。
+要指明某组资源适用于特定配置,请将相应的配置限定符追加到目录名称。
+</li>
+</ul>
+
+<p>例如,尽管默认 UI
+布局保存在
+{@code res/layout/} 目录中,但是您可以指定在屏幕处于横向时要使用的不同布局,方法是将其保存在 {@code res/layout-land/}
+目录中。Android
+可以通过将设备的当前配置与资源目录名称进行匹配,自动应用合适的资源。</p>
+
+<p>图 1
+说明了在没有备用资源可用时,系统如何为两种不同的设备应用相同布局。图 2
+显示的是同一应用针对大屏幕添加了备用布局资源。</p>
+
+<p>以下文档提供了有关如何组织应用资源、如何指定备用资源以及如何在应用中访问这些资源等的完整指南:
+</p>
+
+<dl>
+  <dt><strong><a href="providing-resources.html">提供资源</a></strong></dt>
+  <dd>您可在应用中提供何种资源、可将这些资源保存在何处以及如何为特定设备配置创建备用资源。
+</dd>
+  <dt><strong><a href="accessing-resources.html">访问资源</a></strong></dt>
+  <dd>如何通过从应用代码或其他
+XML 资源中引用来使用所提供的资源</dd>
+  <dt><strong><a href="runtime-changes.html">处理运行时变更</a></strong></dt>
+  <dd>如何管理在 Activity 运行时发生的配置变更。</dd>
+  <dt><strong><a href="localization.html">本地化</a></strong></dt>
+  <dd>从点到面地指导您使用备用资源本地化应用。尽管这只是备用资源的一种具体运用,但是这对于赢得更多用户非常重要。
+
+</dd>
+  <dt><strong><a href="available-resources.html">资源类型</a></strong></dt>
+  <dd>有关您可提供的各种资源类型的参考文档,其中描述了这些资源的
+XML 元素、属性和语法。例如,此参考文档向您展示了如何为应用菜单、可绘制对象、动画等创建资源。
+</dd>
+</dl>
+
+<!--
+<h2>Raw Assets</h2>
+
+<p>An alternative to saving files in {@code res/} is to save files in the {@code
+assets/} directory. This should only be necessary if you need direct access to original files and
+directories by name. Files saved in the {@code assets/} directory will not be given a resource
+ID, so you can't reference them through the {@code R} class or from XML resources. Instead, you can
+query data in the {@code assets/} directory like an ordinary file system, search through the
+directory and
+read raw data using {@link android.content.res.AssetManager}. For example, this can be more useful
+when dealing with textures for a game. However, if you only need to read raw data from a file
+(such as a video or audio file), then you should save files into the {@code res/raw/} directory and
+then read a stream of bytes using {@link android.content.res.Resources#openRawResource(int)}. This
+is uncommon, but if you need direct access to original files in {@code assets/}, refer to the {@link
+android.content.res.AssetManager} documentation.</p>
+-->
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/resources/providing-resources.jd b/docs/html-intl/intl/zh-cn/guide/topics/resources/providing-resources.jd
new file mode 100644
index 0000000..ea46d86
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/resources/providing-resources.jd
@@ -0,0 +1,1094 @@
+page.title=提供资源
+parent.title=应用资源
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>内容快览</h2>
+  <ul>
+    <li>不同类型的资源属于 {@code res/} 的不同子目录</li>
+    <li>备用资源提供特定于配置的资源文件</li>
+    <li>始终包含默认资源,使您的应用不依赖于特定的设备配置
+</li>
+  </ul>
+  <h2>本文内容</h2>
+  <ol>
+    <li><a href="#ResourceTypes">分组资源类型</a></li>
+    <li><a href="#AlternativeResources">提供备用资源</a>
+      <ol>
+        <li><a href="#QualifierRules">限定符命名规则</a></li>
+        <li><a href="#AliasResources">创建别名资源</a></li>
+      </ol>
+    </li>
+    <li><a href="#Compatibility">利用资源提供最佳设备兼容性</a></li>
+    <li><a href="#BestMatch">Android 如何找到最匹配资源</a></li>
+  </ol>
+
+  <h2>另请参阅</h2>
+  <ol>
+    <li><a href="accessing-resources.html">访问资源</a></li>
+    <li><a href="available-resources.html">资源类型</a></li>
+    <li><a href="{@docRoot}guide/practices/screens_support.html">支持多个屏幕</a>
+</li>
+  </ol>
+</div>
+</div>
+
+<p>您应该始终外部化应用资源,例如图像和代码中的字符串,这样有利于您单独维护这些资源。
+此外,您还应该为特定设备配置提供备用资源,方法是将它们分组到专门命名的资源目录中。
+在运行时,Android
+会根据当前配置使用适当的资源。例如,您可能需要根据屏幕尺寸提供不同的
+UI
+布局,或者根据语言设置提供不同的字符串。</p>
+
+<p>外部化应用资源后,即可使用在项目 {@code R} 类中生成的资源
+ID 访问这些资源。有关如何在应用中使用资源,我们将在<a href="accessing-resources.html">访问资源</a>中讨论。
+
+本文档介绍如何对 Android
+项目中的资源进行分组,以及如何为特定的设备配置提供备用资源。</p>
+
+
+<h2 id="ResourceTypes">分组资源类型</h2>
+
+<p>您应将各种资源放入项目
+{@code res/} 目录的特定子目录下。例如,以下是一个简单项目的文件层次结构:</p>
+
+<pre class="classic no-pretty-print">
+MyProject/
+    src/  <span style="color:black">
+        MyActivity.java  </span>
+    res/
+        drawable/  <span style="color:black">
+            graphic.png  </span>
+        layout/  <span style="color:black">
+            main.xml
+            info.xml</span>
+        mipmap/  <span style="color:black">
+            icon.png </span>
+        values/  <span style="color:black">
+            strings.xml  </span>
+</pre>
+
+<p>正如您在此示例中所看到的那样,{@code res/} 目录包含所有资源(在子目录下):一个图像资源、两个布局资源、启动器图标的
+{@code mipmap/}
+目录以及一个字符串资源文件。资源目录名称非常重要,将在表 1
+中进行介绍。</p>
+
+<p class="note"><strong>注:</strong>如需了解有关使用 mipmap
+文件夹的详细信息,请参阅<a href="{@docRoot}tools/projects/index.html#mipmap">管理项目概览</a>。</p>
+
+<p class="table-caption" id="table1"><strong>表 1. </strong>项目 {@code res/}
+目录内支持的资源目录</p>
+
+<table>
+  <tr>
+    <th scope="col">目录</th>
+    <th scope="col">资源类型</th>
+  </tr>
+
+  <tr>
+    <td><code>animator/</code></td>
+    <td>用于定义<a href="{@docRoot}guide/topics/graphics/prop-animation.html">属性动画</a>的 XML
+文件。</td>
+  </tr>
+
+  <tr>
+    <td><code>anim/</code></td>
+    <td>定义<a href="{@docRoot}guide/topics/graphics/view-animation.html#tween-animation">渐变动画</a>的 XML
+文件。(属性动画也可以保存在此目录中,但是为了区分这两种类型,属性动画首选
+{@code animator/}
+目录。)</td>
+  </tr>
+
+  <tr>
+    <td><code>color/</code></td>
+    <td>用于定义颜色状态列表的 XML 文件。请参阅<a href="color-list-resource.html">颜色状态列表资源</a>
+</td>
+  </tr>
+
+  <tr>
+    <td><code>drawable/</code></td>
+
+    <td><p>位图文件({@code .png}、{@code .9.png}、{@code .jpg}、{@code .gif})或编译为以下 Drawable 资源子类型的
+XML 文件:</p>
+      <ul>
+        <li>位图文件</li>
+        <li>九宫格(可调整大小的位图)</li>
+        <li>状态列表</li>
+        <li>形状</li>
+        <li>动画 Drawable</li>
+        <li>其他 Drawable</li>
+      </ul>
+      <p>请参阅 <a href="drawable-resource.html">Drawable 资源</a>。</p>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>mipmap/</code></td>
+    <td>适用于不同启动器图标密度的 Drawable 文件。如需了解有关使用 {@code mipmap/} 文件夹管理启动器图标的详细信息,请参阅<a href="{@docRoot}tools/project/index.html#mipmap">管理项目概览</a>。
+
+</td>
+  </tr>
+
+  <tr>
+    <td><code>layout/</code></td>
+    <td>用于定义用户界面布局的 XML 文件。
+        请参阅<a href="layout-resource.html">布局资源</a>。</td>
+  </tr>
+
+  <tr>
+    <td><code>menu/</code></td>
+    <td>用于定义应用菜单(如选项菜单、上下文菜单或子菜单)的 XML
+文件。请参阅<a href="menu-resource.html">菜单资源</a>。</td>
+  </tr>
+
+  <tr>
+    <td><code>raw/</code></td>
+    <td><p>要以原始形式保存的任意文件。要使用原始
+{@link java.io.InputStream} 打开这些资源,请使用资源 ID(即 {@code R.raw.<em>filename</em>})调用 {@link android.content.res.Resources#openRawResource(int)
+Resources.openRawResource()}。</p>
+      <p>但是,如需访问原始文件名和文件层次结构,则可以考虑将某些资源保存在
+{@code
+assets/} 目录下(而不是 {@code res/raw/})。{@code assets/} 中的文件没有资源 ID,因此您只能使用 {@link android.content.res.AssetManager} 读取这些文件。
+</p></td>
+  </tr>
+
+  <tr>
+    <td><code>values/</code></td>
+    <td><p>包含字符串、整型数和颜色等简单值的 XML 文件。</p>
+      <p>其他 {@code res/} 子目录中的 XML
+资源文件是根据
+XML
+文件名定义单个资源,而目录中的 {@code values/} 文件可描述多个资源。对于此目录中的文件,{@code &lt;resources&gt;} 元素的每个子元素均定义一个资源。例如,{@code &lt;string&gt;} 元素创建
+{@code R.string} 资源,{@code &lt;color&gt;} 元素创建 {@code R.color}
+资源。</p>
+      <p>由于每个资源均用其自己的 XML
+元素定义,因此您可以根据自己的需要命名文件,并将不同的资源类型放在一个文件中。但是,为了清晰起见,您可能需要将独特的资源类型放在不同的文件中。
+例如,对于可在此目录中创建的资源,下面给出了相应的文件名约定:
+</p>
+      <ul>
+        <li>arrays.xml,用于资源数组(<a href="more-resources.html#TypedArray">类型化数组</a>)。</li>
+        <li>colors.xml:<a href="more-resources.html#Color">颜色值</a>。</li>
+        <li>dimens.xml:<a href="more-resources.html#Dimension">尺寸值</a>。</li>
+        <li>strings.xml:<a href="string-resource.html">字符串值</a>。
+</li>
+        <li>styles.xml:<a href="style-resource.html">样式</a>。</li>
+      </ul>
+      <p>请参阅<a href="string-resource.html">字符串资源</a>、<a href="style-resource.html">样式资源</a>和<a href="more-resources.html">更多资源类型</a>。
+
+</p>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>xml/</code></td>
+    <td>可以在运行时通过调用 {@link
+android.content.res.Resources#getXml(int) Resources.getXML()} 读取的任意 XML 文件。各种 XML
+配置文件(如<a href="{@docRoot}guide/topics/search/searchable-config.html">可搜索配置</a>)都必须保存在此处。
+<!-- or preferences configuration. --></td>
+  </tr>
+</table>
+
+<p class="caution"><strong>注意:</strong>切勿将资源文件直接保存在
+{@code res/} 目录内,这会导致出现编译错误。</p>
+
+<p>如需了解有关某些资源类型的详细信息,请参阅<a href="available-resources.html">资源类型</a>文档。</p>
+
+<p>保存在表 1
+中定义的子目录下的资源是“默认”资源。即,这些资源定义应用的默认设计和内容。但是,采用
+Android
+技术的不同设备类型可能需要不同类型的资源。例如,如果设备的屏幕尺寸大于标准屏幕,则应提供不同的布局资源,以充分利用额外的屏幕空间。
+或者,如果设备的语言设置不同,则应提供不同的字符串资源,以转换用户界面中的文本。
+
+要为不同的设备配置提供这些不同资源,除了默认资源以外,您还需要提供备用资源。
+
+</p>
+
+
+<h2 id="AlternativeResources">提供备用资源</h2>
+
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
+<p class="img-caption">
+<strong>图 1. </strong>两种不同的设备,均使用不同的布局资源。</p>
+</div>
+
+<p>几乎每个应用都应提供备用资源以支持特定的设备配置。
+例如,对于不同的屏幕密度和语言,您应分别包括备用 Drawable 资源和备用字符串资源。
+在运行时,Android
+会检测当前设备配置并为应用加载合适的资源。
+</p>
+
+<p>为一组资源指定特定于配置的备用资源:</p>
+<ol>
+  <li>在 {@code res/} 中创建一个以 {@code
+<em>&lt;resources_name&gt;</em>-<em>&lt;config_qualifier&gt;</em>} 形式命名的新目录。
+    <ul>
+      <li><em>{@code &lt;resources_name&gt;}</em> 是相应默认资源的目录名称(如表 1
+中所定义)。</li>
+      <li><em>{@code &lt;qualifier&gt;}</em> 是指定要使用这些资源的各个配置的名称(如表 2
+中所定义)。</li>
+    </ul>
+    <p>您可以追加多个 <em>{@code &lt;qualifier&gt;}</em>。以短划线将其分隔。
+</p>
+    <p class="caution"><strong>注意:</strong>追加多个限定符时,必须按照表
+2 中列出的相同顺序放置它们。如果限定符的顺序错误,则该资源将被忽略。
+</p>
+  </li>
+  <li>将相应的备用资源保存在此新目录下。这些资源文件的名称必须与默认资源文件完全一样。
+</li>
+</ol>
+
+<p>例如,以下是一些默认资源和备用资源:</p>
+
+<pre class="classic no-pretty-print">
+res/
+    drawable/   <span style="color:black">
+        icon.png
+        background.png    </span>
+    drawable-hdpi/  <span style="color:black">
+        icon.png
+        background.png  </span>
+</pre>
+
+<p>{@code hdpi}
+限定符表示该目录中的资源适用于屏幕密度较高的设备。其中每个 Drawable 目录中的图像已针对特定的屏幕密度调整大小,但是文件名完全相同。
+
+这样一来,用于引用 {@code icon.png} 或 {@code
+background.png}
+图像的资源 ID 始终相同,但是 Android
+会通过将设备配置信息与资源目录名称中的限定符进行比较,选择最符合当前设备的各个资源版本。</p>
+
+<p>Android
+支持若干配置限定符,您可以通过使用短划线分隔每个限定符,向一个目录名称添加多个限定符。表 2
+按优先顺序列出了有效的配置限定符;如果对资源目录使用多个限定符,则必须按照表中列出的顺序将它们添加到目录名称。
+
+</p>
+
+
+<p class="table-caption" id="table2"><strong>表 2. </strong>配置限定符名称。
+</p>
+<table>
+    <tr>
+        <th>配置</th>
+        <th>限定符值</th>
+        <th>描述</th>
+    </tr>
+    <tr id="MccQualifier">
+      <td>MCC 和 MNC</td>
+      <td>示例:<br/>
+        <code>mcc310</code><br/>
+        <code><nobr>mcc310-mnc004</nobr></code><br/>
+        <code>mcc208-mnc00</code><br/>
+        等等
+      </td>
+      <td>
+        <p>移动国家代码 (MCC),(可选)后跟设备 SIM
+卡中的移动网络代码 (MNC)。例如,<code>mcc310</code> 是指美国的任一运营商,<code>mcc310-mnc004</code> 是指美国的 Verizon
+公司,<code>mcc208-mnc00</code> 是指法国的 Orange
+公司。</p>
+        <p>如果设备使用无线电连接(GSM 手机),则 MCC 和 MNC 值来自 SIM
+卡。</p>
+        <p>也可以单独使用
+MCC(例如,将国家/地区特定的合法资源包括在应用中)。如果只需根据语言指定,则改用“语言和区域”<em></em>限定符(稍后进行介绍)。
+如果决定使用 MCC 和
+MNC 限定符,请谨慎执行此操作并测试限定符是否按预期工作。</p>
+        <p>另请参阅配置字段
+{@link
+android.content.res.Configuration#mcc} 和 {@link
+android.content.res.Configuration#mnc},这两个字段分别表示当前的移动国家代码和移动网络代码。</p>
+      </td>
+    </tr>
+    <tr id="LocaleQualifier">
+      <td>语言和区域</td>
+      <td>示例:<br/>
+        <code>en</code><br/>
+        <code>fr</code><br/>
+        <code>en-rUS</code><br/>
+        <code>fr-rFR</code><br/>
+        <code>fr-rCA</code><br/>
+        等等
+      </td>
+      <td><p>语言通过由两个字母组成的 <a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">ISO
+639-1</a> 语言代码定义,(可选)后跟两个字母组成的
+<a href="http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO
+3166-1-alpha-2</a> 区域码(前带小写字母“{@code r}”)。
+        </p><p>
+        这些代码不区分大小写;{@code r}
+前缀用于区分区域码。<em></em>
+        不能单独指定区域。</p>
+        <p>如果用户更改系统设置中的语言,它有可能在应用生命周期中发生改变。
+如需了解这会在运行期间给应用带来哪些影响,请参阅<a href="runtime-changes.html">处理运行时变更</a>。
+</p>
+        <p>有关针对其他语言本地化应用的完整指南,请参阅<a href="localization.html">本地化</a>。
+</p>
+        <p>另请参阅 {@link android.content.res.Configuration#locale} 配置字段,该字段表示当前的区域设置。
+</p>
+      </td>
+    </tr>
+    <tr id="LayoutDirectionQualifier">
+      <td>布局方向</td>
+      <td><code>ldrtl</code><br/>
+        <code>ldltr</code><br/>
+      </td>
+      <td><p>应用的布局方向。{@code ldrtl} 是指“布局方向从右到左”。{@code ldltr}
+是指“布局方向从左到右”,这是默认的隐式值。
+      </p>
+      <p>它适用于布局、图片或值等任何资源。
+      </p>
+      <p>例如,若要针对阿拉伯语提供某种特定布局,并针对任何其他“从右到左”语言(如波斯语或希伯来语)提供某种通用布局,则可编码如下:
+
+      </p>
+<pre class="classic no-pretty-print">
+res/
+    layout/   <span style="color:black">
+        main.xml  </span>(Default layout)
+    layout-ar/  <span style="color:black">
+        main.xml  </span>(Specific layout for Arabic)
+    layout-ldrtl/  <span style="color:black">
+        main.xml  </span>(Any "right-to-left" language, except
+                  for Arabic, because the "ar" language qualifier
+                  has a higher precedence.)
+</pre>
+        <p class="note"><strong>注:</strong>要为应用启用从右到左的布局功能,必须将 <a href="{@docRoot}guide/topics/manifest/application-element.html#supportsrtl">{@code
+supportsRtl}</a> 设置为
+{@code "true"},并将 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> 设置为 17 或更高。</p>
+        <p><em>此项为API 级别 17 中新增配置。</em></p>
+      </td>
+    </tr>
+    <tr id="SmallestScreenWidthQualifier">
+      <td>smallestWidth</td>
+      <td><code>sw&lt;N&gt;dp</code><br/><br/>
+        示例:<br/>
+        <code>sw320dp</code><br/>
+        <code>sw600dp</code><br/>
+        <code>sw720dp</code><br/>
+        等等
+      </td>
+      <td>
+        <p>屏幕的基本尺寸,由可用屏幕区域的最小尺寸指定。
+具体来说,设备的 smallestWidth
+是屏幕可用高度和宽度的最小尺寸(您也可以将其视为屏幕的“最小可能宽度”)。无论屏幕的当前方向如何,您均可使用此限定符确保应用
+UI 的可用宽度至少为
+{@code &lt;N&gt;}dp。</p>
+        <p>例如,如果布局要求屏幕区域的最小尺寸始终至少为
+600dp,则可使用此限定符创建布局资源 {@code
+res/layout-sw600dp/}。仅当可用屏幕的最小尺寸至少为
+600dp 时,系统才会使用这些资源,而不考虑
+600dp 所代表的边是用户所认为的高度还是宽度。smallestWidth 是设备的固定屏幕尺寸特性;<strong>设备的 smallestWidth
+不会随屏幕方向的变化而改变</strong>。</p>
+        <p>设备的 smallestWidth 将屏幕装饰元素和系统 UI
+考虑在内。例如,如果设备的屏幕上有一些永久性 UI 元素占据沿
+smallestWidth
+轴的空间,则系统会声明 smallestWidth
+小于实际屏幕尺寸,因为这些屏幕像素不适用于您的
+UI。因此,使用的值应该是布局所需要<em></em>的实际最小尺寸(通常,无论屏幕的当前方向如何,此值都是布局支持的“最小宽度”)。</p>
+        <p>以下是一些可用于普通屏幕尺寸的值:</p>
+        <ul>
+          <li>320,适用于屏幕配置如下的设备:
+            <ul>
+              <li>240x320 ldpi(QVGA 手机)</li>
+              <li>320x480 mdpi(手机)</li>
+              <li>480x800 hdpi(高密度手机)</li>
+            </ul>
+          </li>
+          <li>480,适用于 480x800 mdpi 之类的屏幕(平板电脑/手机)。</li>
+          <li>600,适用于 600x1024 mdpi 之类的屏幕(7 英寸平板电脑)。</li>
+          <li>720,适用于 720x1280 mdpi 之类的屏幕(10 英寸平板电脑)。</li>
+        </ul>
+        <p>应用为多个资源目录提供不同的 
+smallestWidth 限定符值时,系统会使用最接近(但未超出)设备
+smallestWidth 的值。 </p>
+        <p><em>此项为 API 级别 13 中新增配置。</em></p>
+        <p>另请参阅 <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html#requiresSmallest">{@code
+android:requiresSmallestWidthDp}</a> 属性和 {@link
+android.content.res.Configuration#smallestScreenWidthDp} 配置字段,前者声明与应用兼容的最小
+smallestWidth;后者存放设备的
+smallestWidth 值。</p>
+        <p>如需了解有关设计不同屏幕和使用此限定符的详细信息,请参阅<a href="{@docRoot}guide/practices/screens_support.html">支持多个屏幕</a>开发者指南。
+
+</p>
+      </td>
+    </tr>
+    <tr id="ScreenWidthQualifier">
+      <td>可用宽度</td>
+      <td><code>w&lt;N&gt;dp</code><br/><br/>
+        示例:<br/>
+        <code>w720dp</code><br/>
+        <code>w1024dp</code><br/>
+        等等
+      </td>
+      <td>
+        <p>指定资源应该使用的最小可用屏幕宽度,以 {@code dp}
+为单位,由 <code>&lt;N&gt;</code> 值定义。在横向和纵向之间切换时,为了匹配当前实际宽度,此配置值也会随之发生变化。
+
+</p>
+        <p>应用为多个资源目录提供不同的此配置值时,系统会使用最接近(但未超出)设备当前屏幕宽度的值。
+
+此处的值考虑到了屏幕装饰元素,因此如果设备显示屏的左边缘或右边缘上有一些永久性 UI
+元素,考虑到这些 UI 
+元素,它会使用小于实际屏幕尺寸的宽度值,这样会减少应用的可用空间。
+
+</p>
+        <p><em>此项为 API 级别 13 中新增配置。</em></p>
+        <p>另请参阅
+{@link android.content.res.Configuration#screenWidthDp} 配置字段,该字段存放当前屏幕宽度。</p>
+        <p>如需了解有关设计不同屏幕和使用此限定符的详细信息,请参阅<a href="{@docRoot}guide/practices/screens_support.html">支持多个屏幕</a>开发者指南。
+
+</p>
+      </td>
+    </tr>
+    <tr id="ScreenHeightQualifier">
+      <td>可用高度</td>
+      <td><code>h&lt;N&gt;dp</code><br/><br/>
+        示例:<br/>
+        <code>h720dp</code><br/>
+        <code>h1024dp</code><br/>
+        等等
+      </td>
+      <td>
+        <p>指定资源应该使用的最小可用屏幕高度,以“dp”为单位,由 <code>&lt;N&gt;</code> 值定义。
+在横向和纵向之间切换时,为了匹配当前实际高度,此配置值也会随之发生变化。
+
+</p>
+        <p>应用为多个资源目录提供不同的此配置值时,系统会使用最接近(但未超出)设备当前屏幕高度的值。
+
+此处的值考虑到了屏幕装饰元素,因此如果设备显示屏的上边缘或下边缘有一些永久性 UI
+元素,考虑到这些 UI 
+元素,同时为减少应用的可用空间,它会使用小于实际屏幕尺寸的高度值。
+
+非固定的屏幕装饰元素(例如,全屏时可隐藏的手机状态栏)并不<em></em>在考虑范围内,标题栏或操作栏等窗口装饰也不在考虑范围内,因此应用必须准备好处理稍小于其所指定值的空间。
+
+
+
+
+        <p><em>此项为 API 级别 13 中新增配置。</em></p>
+        <p>另请参阅
+{@link android.content.res.Configuration#screenHeightDp} 配置字段,该字段存放当前屏幕宽度。</p>
+        <p>如需了解有关设计不同屏幕和使用此限定符的详细信息,请参阅<a href="{@docRoot}guide/practices/screens_support.html">支持多个屏幕</a>开发者指南。
+
+</p>
+      </td>
+    </tr>
+    <tr id="ScreenSizeQualifier">
+      <td>屏幕尺寸</td>
+      <td>
+        <code>small</code><br/>
+        <code>normal</code><br/>
+        <code>large</code><br/>
+        <code>xlarge</code>
+      </td>
+      <td>
+        <ul class="nolist">
+        <li>{@code small}:尺寸类似于低密度
+QVGA 屏幕的屏幕。小屏幕的最小布局尺寸约为
+320x426 dp 单位。例如,QVGA 低密度屏幕和 VGA
+高密度屏幕。</li>
+        <li>{@code normal}:尺寸类似于中等密度
+HVGA 屏幕的屏幕。标准屏幕的最小布局尺寸约为
+320x470 dp 单位。例如,WQVGA
+低密度屏幕、HVGA 中等密度屏幕、WVGA
+高密度屏幕。</li>
+        <li>{@code large}:尺寸类似于中等密度
+VGA 屏幕的屏幕。
+        大屏幕的最小布局尺寸约为 480x640 dp 单位。
+        例如,VGA 和 WVGA 中等密度屏幕。</li>
+        <li>{@code xlarge}:明显大于传统中等密度
+HVGA 屏幕的屏幕。超大屏幕的最小布局尺寸约为
+720x960 dp 单位。在大多数情况下,屏幕超大的设备体积过大,不能放进口袋,最常见的是平板式设备。
+
+<em>此项为 API 级别 9 中新增配置。</em></li>
+        </ul>
+        <p class="note"><strong>注:</strong>使用尺寸限定符并不表示资源仅<em></em>适用于该尺寸的屏幕。
+如果没有为备用资源提供最符合当前设备配置的限定符,则系统可能使用其中<a href="#BestMatch">最匹配</a>的资源。
+
+</p>
+        <p class="caution"><strong>注意:</strong>如果所有资源均使用大于<em></em>当前屏幕的尺寸限定符,则系统<strong>不</strong>会使用这些资源,并且应用在运行时将会崩溃(例如,如果所有布局资源均用 {@code
+xlarge} 限定符标记,但设备是标准尺寸的屏幕)。
+
+</p>
+        <p><em>此项为 API 级别 4 中新增配置。</em></p>
+        
+        <p>如需了解详细信息,请参阅<a href="{@docRoot}guide/practices/screens_support.html">支持多个屏幕</a>。
+</p>
+        <p>另请参阅 {@link android.content.res.Configuration#screenLayout} 配置字段,该字段表示屏幕是小尺寸、标准尺寸还是大尺寸。
+
+</p>
+      </td>
+    </tr>
+    <tr id="ScreenAspectQualifier">
+      <td>屏幕纵横比</td>
+      <td>
+        <code>long</code><br/>
+        <code>notlong</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code long}:宽屏,如 WQVGA、WVGA、FWVGA</li>
+          <li>{@code notlong}:非宽屏,如 QVGA、HVGA 和 VGA</li>
+        </ul>
+        <p><em>此项为 API 级别 4 中新增配置。</em></p>
+        <p>它完全基于屏幕的纵横比(宽屏较宽),而与屏幕方向无关。
+</p>
+        <p>另请参阅 {@link android.content.res.Configuration#screenLayout} 配置字段,该字段指示屏幕是否为宽屏。
+</p>
+      </td>
+    </tr>
+    <tr id="OrientationQualifier">
+      <td>屏幕方向</td>
+      <td>
+        <code>port</code><br/>
+        <code>land</code>  <!-- <br/>
+        <code>square</code>  -->
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code port}:设备处于纵向(垂直)</li>
+          <li>{@code land}:设备处于横向(水平)</li>
+          <!-- Square mode is currently not used. -->
+        </ul>
+        <p>如果用户旋转屏幕,它有可能在应用生命周期中发生改变。
+如需了解这会在运行期间给应用带来哪些影响,请参阅<a href="runtime-changes.html">处理运行时变更</a>。
+</p>
+        <p>另请参阅 {@link android.content.res.Configuration#orientation} 配置字段,该字段指示当前的设备方向。
+</p>
+      </td>
+    </tr>
+    <tr id="UiModeQualifier">
+      <td>UI 模式</td>
+      <td>
+        <code>car</code><br/>
+        <code>desk</code><br/>
+        <code>television</code><br/>
+        <code>appliance</code>
+<code>watch</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code car}:设备正在车载手机座上显示</li>
+          <li>{@code desk}:设备正在桌面手机座上显示</li>
+          <li>{@code television}:设备正在电视上显示,为用户提供“十英尺”体验,其
+UI 位于远离用户的大屏幕上,主要面向方向键或其他非指针式交互
+
+</li>
+          <li>{@code appliance}:设备用作不带显示屏的装置
+</li>
+          <li>{@code watch}:设备配有显示屏,戴在手腕上</li>
+        </ul>
+        <p><em>此项为 API 级别 8 中新增配置,API 13 中新增电视配置,API 20 中新增手表配置。</em></p>
+        <p>如需了解应用在设备插入手机座或从中移除时的响应方式,请阅读<a href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">确定并监控插接状态和类型</a>。
+
+</p>
+        <p>如果用户将设备放入手机座中,它有可能在应用生命周期中发生改变。
+可以使用 {@link
+android.app.UiModeManager} 启用或禁用其中某些模式。如需了解这会在运行期间给应用带来哪些影响,请参阅<a href="runtime-changes.html">处理运行时变更</a>。
+</p>
+      </td>
+    </tr>
+    <tr id="NightQualifier">
+      <td>夜间模式</td>
+      <td>
+        <code>night</code><br/>
+        <code>notnight</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code night}:夜间</li>
+          <li>{@code notnight}:白天</li>
+        </ul>
+        <p><em>此项为 API 级别 8 中新增配置。</em></p>
+        <p>如果夜间模式停留在自动模式(默认),它有可能在应用生命周期中发生改变。在这种情况下,该模式会根据当天的时间进行调整。
+可以使用
+{@link android.app.UiModeManager} 启用或禁用此模式。如需了解这会在运行期间给应用带来哪些影响,请参阅<a href="runtime-changes.html">处理运行时变更</a>。
+</p>
+      </td>
+    </tr>
+    <tr id="DensityQualifier">
+      <td>屏幕像素密度 (dpi)</td>
+      <td>
+        <code>ldpi</code><br/>
+        <code>mdpi</code><br/>
+        <code>hdpi</code><br/>
+        <code>xhdpi</code><br/>
+        <code>xxhdpi</code><br/>
+        <code>xxxhdpi</code><br/>
+        <code>nodpi</code><br/>
+        <code>tvdpi</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code ldpi}:低密度屏幕;约为 120dpi。</li>
+          <li>{@code mdpi}:中等密度(传统 HVGA)屏幕;约为
+160dpi。</li>
+          <li>{@code hdpi}:高密度屏幕;约为 240dpi。</li>
+          <li>{@code xhdpi}:超高密度屏幕;约为 320dpi。<em>API
+级别 8 中新增配置</em></li>
+          <li>{@code xxhdpi}:超超高密度屏幕;约为 480dpi。<em>API
+级别 16 中新增配置</em></li>
+          <li>{@code xxxhdpi}:超超超高密度屏幕使用(仅限启动器图标,请参阅“支持多个屏幕”中的<a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">注释</a>);约为
+640dpi。<em></em>
+<em>API
+级别 18 中新增配置</em></li>
+          <li>{@code nodpi}:它可用于您不希望缩放以匹配设备密度的位图资源。
+</li>
+          <li>{@code tvdpi}:密度介于 mdpi 和 hdpi 之间的屏幕;约为 213dpi。它并不是“主要”密度组,
+主要用于电视,而大多数应用都不需要它。对于大多数应用而言,提供 mdpi 和
+hdpi
+资源便已足够,系统将根据需要对其进行缩放。API 级别 13 中引入了此限定符。</li>
+        </ul>
+        <p>六个主要密度之间的缩放比为 3:4:6:8:12:16(忽略
+tvdpi 密度)。因此,9x9 (ldpi) 位图相当于 12x12 (mdpi)、18x18 (hdpi)、24x24 (xhdpi) 位图,依此类推。
+</p>
+        <p>如果您认为图像资源在电视或其他某些设备上呈现的效果不够好,而想尝试使用 tvdpi 资源,则缩放比例为
+1.33*mdpi。例如,mdpi
+屏幕的 100px x 100px 图像应该相当于 tvdpi 的133px x 133px。</p>
+        <p class="note"><strong>注:</strong>使用密度限定符并不表示资源仅适用于该密度的屏幕。
+<em></em>如果没有为备用资源提供最符合当前设备配置的限定符,则系统可能使用其中<a href="#BestMatch">最匹配</a>的资源。
+
+</p>
+        <p>如需了解有关如何处理不同屏幕密度以及 Android 如何缩放位图以适应当前密度的详细信息,请参阅<a href="{@docRoot}guide/practices/screens_support.html">支持多个屏幕</a>。
+
+</p>
+       </td>
+    </tr>
+    <tr id="TouchscreenQualifier">
+      <td>触摸屏类型</td>
+      <td>
+        <code>notouch</code><br/>
+        <code>finger</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code notouch}:设备没有触摸屏。</li>
+          <li>{@code finger}:设备有一个专供用户通过手指直接与其交互的触摸屏。
+</li>
+        </ul>
+        <p>另请参阅 {@link android.content.res.Configuration#touchscreen} 配置字段,该字段指示设备上的触摸屏类型。
+</p>
+      </td>
+    </tr>
+    <tr id="KeyboardAvailQualifier">
+      <td>键盘可用性</td>
+      <td>
+        <code>keysexposed</code><br/>
+        <code>keyshidden</code><br/>
+        <code>keyssoft</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code keysexposed}:设备具有可用的键盘。如果设备启用了软键盘(不无可能),那么即使硬键盘没有展示给用户,哪怕设备没有硬键盘,也可以使用此限定符。<em></em>
+
+如果没有提供或已经禁用软键盘,则只有在显示硬键盘时才会使用此限定符。
+
+</li>
+          <li>{@code keyshidden}:设备具有可用的硬键盘,但它处于隐藏状态,且设备没有启用软键盘。<em></em><em></em>
+</li>
+          <li>{@code keyssoft}:设备已经启用软键盘(无论是否可见)。
+</li>
+        </ul>
+        <p>如果提供了 <code>keysexposed</code> 资源,但未提供 <code>keyssoft</code>
+资源,那么只要系统已经启用软键盘,就会使用
+<code>keysexposed</code> 资源,而不考虑键盘是否可见。</p>
+        <p>如果用户打开硬键盘,它有可能在应用生命周期中发生改变。
+如需了解这会在运行期间给应用带来哪些影响,请参阅<a href="runtime-changes.html">处理运行时变更</a>。
+</p>
+        <p>另请参阅配置字段
+{@link
+android.content.res.Configuration#hardKeyboardHidden} 和 {@link
+android.content.res.Configuration#keyboardHidden},这两个字段分别指示硬键盘的可见性和任何一种键盘(包括软键盘)的可见性。</p>
+      </td>
+    </tr>
+    <tr id="ImeQualifier">
+      <td>主要文本输入法</td>
+      <td>
+        <code>nokeys</code><br/>
+        <code>qwerty</code><br/>
+        <code>12key</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code nokeys}:设备没有用于文本输入的硬按键。</li>
+          <li>{@code qwerty}:设备具有标准硬键盘(无论是否对用户可见)。
+
+</li>
+          <li>{@code 12key}:设备具有 12 键硬键盘(无论是否对用户可见)。
+</li>
+        </ul>
+        <p>另请参阅 {@link android.content.res.Configuration#keyboard} 配置字段,该字段指示可用的主要文本输入法。
+</p>
+      </td>
+    </tr>
+    <tr id="NavAvailQualifier">
+      <td>导航键可用性</td>
+      <td>
+        <code>navexposed</code><br/>
+        <code>navhidden</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code navexposed}:导航键可供用户使用。</li>
+          <li>{@code navhidden}:导航键不可用(例如,位于密封盖子后面)。
+</li>
+        </ul>
+        <p>如果用户显示导航键,它有可能在应用生命周期中发生改变。
+如需了解这会在运行期间给应用带来哪些影响,请参阅<a href="runtime-changes.html">处理运行时变更</a>。
+</p>
+        <p>另请参阅
+{@link android.content.res.Configuration#navigationHidden} 配置字段,该字段指示导航键是否处于隐藏状态。</p>
+      </td>
+    </tr>
+    <tr id="NavigationQualifier">
+      <td>主要非触摸导航方法</td>
+      <td>
+        <code>nonav</code><br/>
+        <code>dpad</code><br/>
+        <code>trackball</code><br/>
+        <code>wheel</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code nonav}:除了使用触摸屏以外,设备没有其他导航设施。
+</li>
+          <li>{@code dpad}:设备具有用于导航的方向键。</li>
+          <li>{@code trackball}:设备具有用于导航的轨迹球。</li>
+          <li>{@code wheel}:设备具有用于导航的方向盘(不常见)。</li>
+        </ul>
+        <p>另请参阅 {@link android.content.res.Configuration#navigation}
+配置字段,该字段指示可用的导航方法类型。</p>
+      </td>
+    </tr>
+<!-- DEPRECATED
+    <tr>
+      <td>Screen dimensions</td>
+      <td>Examples:<br/>
+        <code>320x240</code><br/>
+        <code>640x480</code><br/>
+        etc.
+      </td>
+      <td>
+        <p>The larger dimension must be specified first. <strong>This configuration is deprecated
+and should not be used</strong>. Instead use "screen size," "wider/taller screens," and "screen
+orientation" described above.</p>
+      </td>
+    </tr>
+-->
+    <tr id="VersionQualifier">
+      <td>平台版本(API 级别)</td>
+      <td>示例:<br/>
+        <code>v3</code><br/>
+        <code>v4</code><br/>
+        <code>v7</code><br/>
+        等等</td>
+      <td>
+        <p>设备支持的 API 级别。例如,<code>v1</code> 对应于 API 级别
+1(带有 Android 1.0 或更高版本系统的设备),<code>v4</code> 对应于 API 级别 4(带有 Android
+1.6 或更高版本系统的设备)。如需了解有关这些值的详细信息,请参阅
+<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Android API 级别</a>文档。</p>
+      </td>
+    </tr>
+</table>
+
+
+<p class="note"><strong>注:</strong>有些配置限定符是从 Android 1.0
+才开始添加,因此并非所有版本的 Android 系统都支持所有限定符。使用新限定符会隐式添加平台版本限定符,因此较旧版本系统的设备必然会忽略它。
+例如,使用
+<code>w600dp</code> 限定符会自动包括 <code>v13</code> 限定符,因为可用宽度限定符是 API 级别 13
+中的新增配置。为了避免出现任何问题,请始终包含一组默认资源(一组“不带限定符”的资源)。<em></em>
+如需了解详细信息,请参阅<a href="#Compatibility">利用资源提供最佳设备兼容性</a>部分。
+
+</p>
+
+
+
+<h3 id="QualifierRules">限定符命名规则</h3>
+
+<p>以下是一些关于使用配置限定符名称的规则:</p>
+
+<ul>
+    <li>您可以为单组资源指定多个限定符,并使用短划线分隔。例如,<code>drawable-en-rUS-land</code>
+适用于横排美国英语设备。
+</li>
+    <li>这些限定符必须遵循<a href="#table2">表 2</a> 中列出的顺序。例如:
+
+      <ul>
+        <li>错误:<code>drawable-hdpi-port/</code></li>
+        <li>正确:<code>drawable-port-hdpi/</code></li>
+      </ul>
+    </li>
+    <li>不能嵌套备用资源目录。例如,您不能拥有
+<code>res/drawable/drawable-en/</code>。</li>
+    <li>值不区分大小写。在处理之前,资源编译器会将目录名称转换为小写,以避免不区分大小写的文件系统出现问题。
+
+名称中使用的任何大写字母只是为了便于认读。</li>
+    <li>对于每种限定符类型,仅支持一个值。例如,若要对西班牙语和法语使用相同的 Drawable 文件,则您肯定不能拥有名为
+<code>drawable-rES-rFR/</code>
+的目录,<em></em>而是需要两个包含相应文件的资源目录,如
+<code>drawable-rES/</code>
+和 <code>drawable-rFR/</code>。然而,实际上您无需将相同的文件都复制到这两个位置。相反,您可以创建指向资源的别名。
+请参阅下面的<a href="#AliasResources">创建别名资源</a>。
+</li>
+</ul>
+
+<p>将备用资源保存到以这些限定符命名的目录中之后,Android
+会根据当前设备配置在应用中自动应用这些资源。
+每次请求资源时,Android
+都会检查备用资源目录是否包含所请求的资源文件,然后<a href="#BestMatch">找到最匹配资源</a>(下文进行介绍)。
+如果没有与特定设备配置匹配的备用资源,则
+Android
+会使用相应的默认资源(一组用于不含配置限定符的特定资源类型的资源)。
+</p>
+
+
+
+<h3 id="AliasResources">创建别名资源</h3>
+
+<p>如果您想将某一资源用于多种设备配置(但是不想作为默认资源提供),则无需将同一资源放入多个备用资源目录中。
+
+相反,您可以(在某些情况下)创建备用资源,充当保存在默认资源目录下的资源的别名。
+
+</p>
+
+<p class="note"><strong>注:</strong>并非所有资源都会提供相应机制让您创建指向其他资源的别名。
+特别是,{@code xml/} 目录中的动画资源、菜单资源、原始资源以及其他未指定资源均不提供此功能。
+</p>
+
+<p>例如,假设您有一个应用图标 {@code icon.png},并且需要不同区域设置的独特版本。
+但是,加拿大英语和加拿大法语这两种区域设置需要使用同一版本。
+您可能会认为需要将相同的图像复制到加拿大英语和加拿大法语对应的资源目录中,但事实并非如此。
+
+相反,您可以将用于二者的图像另存为 {@code icon_ca.png}(除
+{@code icon.png}
+以外的任何名称),并将其放入默认 {@code res/drawable/} 目录中。然后,在 {@code
+res/drawable-en-rCA/}
+和 {@code res/drawable-fr-rCA/} 中创建 {@code icon.xml} 文件,使用 {@code &lt;bitmap&gt;} 元素引用 {@code icon_ca.png}资源。这样,您只需存储 PNG
+文件的一个版本和两个指向该版本的小型 XML 文件。(XML 文件示例如下。)</p>
+
+
+<h4>Drawable</h4>
+
+<p>要创建指向现有 Drawable 的别名,请使用
+{@code &lt;bitmap&gt;} 元素。例如:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/icon_ca" />
+</pre>
+
+<p>如果将此文件另存为
+{@code icon.xml}(例如,在备用资源目录中,另存为 {@code res/drawable-en-rCA/}),则会编译到可作为
+{@code R.drawable.icon} 引用的资源中,但实际上它是 {@code
+R.drawable.icon_ca} 资源(保存在 {@code res/drawable/} 中)的别名。</p>
+
+
+<h4>布局</h4>
+
+<p>要创建指向现有布局的别名,请使用包装在 {@code &lt;merge&gt;} 中的
+{@code &lt;include&gt;}元素。例如:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;merge>
+    &lt;include layout="@layout/main_ltr"/>
+&lt;/merge>
+</pre>
+
+<p>如果将此文件另存为 {@code main.xml},则会编译到可作为
+{@code R.layout.main} 引用的资源中,但实际上它是 {@code R.layout.main_ltr}
+资源的别名。</p>
+
+
+<h4>字符串和其他简单值</h4>
+
+<p>要创建指向现有字符串的别名,只需将所需字符串的资源
+ID 用作新字符串的值即可。例如:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;string name="hello">Hello&lt;/string>
+    &lt;string name="hi">@string/hello&lt;/string>
+&lt;/resources>
+</pre>
+
+<p>{@code R.string.hi} 资源现在是 {@code R.string.hello} 的别名。</p>
+
+<p> <a href="{@docRoot}guide/topics/resources/more-resources.html">其他简单值</a>的原理相同。
+例如,颜色:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;color name="yellow">#f00&lt;/color>
+    &lt;color name="highlight">@color/red&lt;/color>
+&lt;/resources>
+</pre>
+
+
+
+
+<h2 id="Compatibility">利用资源提供最佳设备兼容性</h2>
+
+<p>要使应用支持多种设备配置,则务必为应用使用的每种资源类型提供默认资源,这一点非常重要。
+</p>
+
+<p>例如,如果应用支持多种语言,请始终包含不带<em></em><a href="#LocaleQualifier">语言和区域限定符</a>的 {@code
+values/} 目录(用于保存字符串)。相反,如果您将所有字符串放入带有语言和区域限定符的目录中,则在语言设置不支持您的字符串的设备上运行应用时,应用将会崩溃。
+
+但是,只要提供默认 {@code values/} 资源,应用就会正常运行(即使用户不理解该语言,这也总比崩溃要好)。
+
+</p>
+
+<p>同样,如果您根据屏幕方向提供不同的布局资源,则应选择一个方向作为默认方向。
+例如,不要在 {@code
+layout-land/} 和 {@code layout-port/} 中分别提供横向和纵向的布局资源,而是保留其中之一作为默认设置,例如:{@code layout/}
+用于横向,{@code layout-port/} 用于纵向。</p>
+
+<p>提供默认资源至关重要,这不仅仅因为应用可能在超出预期的配置上运行,也因为新版
+Android
+有时会添加旧版本不支持的配置限定符。若要使用新的资源限定符,又希望维持对旧版
+Android 的代码兼容性,则当旧版
+Android
+运行应用时,如果不提供默认资源,应用将会崩溃,这是因为它无法使用以新限定符命名的资源。例如,如果将 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code
+minSdkVersion}</a> 设置为 4,并使用<a href="#NightQualifier">夜间模式</a>({@code night} 或 {@code notnight},API
+级别 8 中新增配置)限定所有 Drawable 资源,则 API 级别 4 设备无法访问 Drawable 资源,而且会崩溃。在这种情况下,您可能希望 {@code notnight} 成为默认资源,为此,您应排除该限定符,使 Drawable 资源位于 {@code drawable/} 或
+{@code drawable-night/}
+中。</p>
+
+<p>因此,为了提供最佳设备兼容性,请始终为应用正确运行所必需的资源提供默认资源。
+然后,使用配置限定符为特定的设备配置创建备用资源。
+</p>
+
+<p>这条规则有一个例外:如果应用的 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> 为 4 或更高,则在提供带<a href="#DensityQualifier">屏幕密度</a>限定符的备用 Drawable 资源时,不<em></em>需要默认 Drawable 资源。
+
+即使没有默认 Drawable 资源,Android
+也可以从备用屏幕密度中找到最佳匹配项并根据需要缩放位图。
+但是,为了在所有类型的设备上提供最佳体验,您应该为所有三种类型的密度提供备用 Drawable。
+</p>
+
+
+
+<h2 id="BestMatch">Android 如何找到最匹配资源</h2>
+
+<p>当您请求要为其提供备用资源的资源时,Android
+会根据当前的设备配置选择要在运行时使用的备用资源。为演示
+Android 如何选择备用资源,假设以下 Drawable 目录分别包含相同图像的不同版本:
+</p>
+
+<pre class="classic no-pretty-print">
+drawable/
+drawable-en/
+drawable-fr-rCA/
+drawable-en-port/
+drawable-en-notouch-12key/
+drawable-port-ldpi/
+drawable-port-notouch-12key/
+</pre>
+
+<p>同时,假设设备配置如下:</p>
+
+<p style="margin-left:1em;">
+区域设置 = <code>en-GB</code> <br/>
+屏幕方向 = <code>port</code> <br/>
+屏幕像素密度 = <code>hdpi</code> <br/>
+触摸屏类型 = <code>notouch</code> <br/>
+主要文本输入法 = <code>12key</code>
+</p>
+
+<p>通过将设备配置与可用的备用资源进行比较,Android 从
+{@code drawable-en-port} 中选择 Drawable。</p>
+
+<p>系统使用以下逻辑决定要使用的资源:
+</p>
+
+
+<div class="figure" style="width:371px">
+<img src="{@docRoot}images/resources/res-selection-flowchart.png" alt="" height="471" />
+<p class="img-caption"><strong>图 2. </strong>Android
+如何找到最匹配资源的流程图。</p>
+</div>
+
+
+<ol>
+  <li>淘汰与设备配置冲突的资源文件。
+    <p><code>drawable-fr-rCA/</code> 目录与
+<code>en-GB</code> 区域设置冲突,因而被淘汰。</p>
+<pre class="classic no-pretty-print">
+drawable/
+drawable-en/
+<strike>drawable-fr-rCA/</strike>
+drawable-en-port/
+drawable-en-notouch-12key/
+drawable-port-ldpi/
+drawable-port-notouch-12key/
+</pre>
+<p class="note"><strong>例外:</strong>屏幕像素密度是唯一一个未因冲突而被淘汰的限定符。
+尽管设备的屏幕密度为
+hdpi,但是
+<code>drawable-port-ldpi/</code> 未被淘汰,因为此时每个屏幕密度均视为匹配。如需了解详细信息,请参阅<a href="{@docRoot}guide/practices/screens_support.html">支持多个屏幕</a>文档。
+</p></li>
+
+  <li>选择列表(<a href="#table2">表 2</a>)中(下一个)优先级最高的限定符。(先从 MCC
+开始,然后下移。) </li>
+  <li>是否有资源目录包括此限定符?  </li>
+    <ul>
+      <li>若无,请返回到第 2 步,看看下一个限定符。(在该示例中,除非达到语言限定符,否则答案始终为“否”。)
+</li>
+      <li>若有,请继续执行第 4 步。</li>
+    </ul>
+  </li>
+
+  <li>淘汰不含此限定符的资源目录。在该示例中,系统会淘汰所有不含语言限定符的目录。
+</li>
+<pre class="classic no-pretty-print">
+<strike>drawable/</strike>
+drawable-en/
+drawable-en-port/
+drawable-en-notouch-12key/
+<strike>drawable-port-ldpi/</strike>
+<strike>drawable-port-notouch-12key/</strike>
+</pre>
+<p class="note"><strong>例外:</strong>如果涉及的限定符是屏幕像素密度,则
+Android
+会选择最接近设备屏幕密度的选项。通常,Android
+倾向于缩小大型原始图像,而不是放大小型原始图像。请参阅<a href="{@docRoot}guide/practices/screens_support.html">支持多个屏幕</a>。
+</p>
+  </li>
+
+  <li>返回并重复第 2 步、第 3 步和第 4 步,直到只剩下一个目录为止。在此示例中,屏幕方向是下一个判断是否匹配的限定符。因此,未指定屏幕方向的资源被淘汰:
+
+
+<pre class="classic no-pretty-print">
+<strike>drawable-en/</strike>
+drawable-en-port/
+<strike>drawable-en-notouch-12key/</strike>
+</pre>
+<p>剩下的目录是 {@code drawable-en-port}。</p>
+  </li>
+</ol>
+
+<p>尽管对所请求的每个资源均执行此程序,但是系统仍会对某些方面做进一步优化。
+例如,系统一旦知道设备配置,即会淘汰可能永远无法匹配的备用资源。
+比如说,如果配置语言是英语(“en”),则系统绝不会将语言限定符设置为非英语的任何资源目录包含在选中的资源池中(不过,仍会将不带语言限定符的资源目录包含在该池中)。<em></em>
+
+
+</p>
+
+<p>根据屏幕尺寸限定符选择资源时,如果没有更好的匹配资源,则系统将使用专为小于当前屏幕的屏幕而设计的资源(例如,如有必要,大尺寸屏幕将使用标准尺寸的屏幕资源)。
+
+但是,如果唯一可用的资源大于当前屏幕,则系统<strong>不会</strong>使用这些资源,并且如果没有其他资源与设备配置匹配,应用将会崩溃(例如,如果所有布局资源均用 {@code xlarge} 限定符标记,但设备是标准尺寸的屏幕)。<em></em>
+
+
+
+</p>
+
+<p class="note"><strong>注:</strong>限定符的优先顺序(<a href="#table2">表
+2</a> 中)比与设备完全匹配的限定符数量更加重要。<em></em>例如,在上面的第
+4 步中,列表剩下的最后选项包括三个与设备完全匹配的限定符(方向、触摸屏类型和输入法),而
+<code>drawable-en</code>
+只有一个匹配参数(语言)。但是,语言的优先顺序高于其他两个限定符,因此
+<code>drawable-port-notouch-12key</code> 被淘汰。</p>
+
+<p>如需了解有关如何在应用中使用资源的更多信息,请转至<a href="accessing-resources.html">访问资源</a>。</p>
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/resources/runtime-changes.jd b/docs/html-intl/intl/zh-cn/guide/topics/resources/runtime-changes.jd
new file mode 100644
index 0000000..0df9998
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/resources/runtime-changes.jd
@@ -0,0 +1,281 @@
+page.title=处理运行时变更
+page.tags=Activity,生命周期
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>本文内容</h2>
+  <ol>
+    <li><a href="#RetainingAnObject">在配置变更期间保留对象</a></li>
+    <li><a href="#HandlingTheChange">自行处理配置变更</a>
+  </ol>
+
+  <h2>另请参阅</h2>
+  <ol>
+    <li><a href="providing-resources.html">提供资源</a></li>
+    <li><a href="accessing-resources.html">访问资源</a></li>
+    <li><a href="http://android-developers.blogspot.com/2009/02/faster-screen-orientation-change.html">加快屏幕方向变更</a>
+</li>
+  </ol>
+</div>
+</div>
+
+<p>有些设备配置可能会在运行时发生变化(例如屏幕方向、键盘可用性及语言)。
+发生这种变化时,Android
+会重启正在运行的
+{@link android.app.Activity}(先后调用 {@link android.app.Activity#onDestroy()} 和 {@link
+android.app.Activity#onCreate(Bundle) onCreate()})。重启行为旨在通过利用与新设备配置匹配的备用资源自动重新加载您的应用,来帮助它适应新配置。
+
+</p>
+
+<p>要妥善处理重启行为,Activity 必须通过常规的<a href="{@docRoot}guide/components/activities.html#Lifecycle">Activity 生命周期</a>恢复其以前的状态,在 Activity 生命周期中,Android
+会在销毁 Activity 之前调用
+{@link android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()},以便您保存有关应用状态的数据。
+
+然后,您可以在
+{@link android.app.Activity#onCreate(Bundle) onCreate()} 或 {@link
+android.app.Activity#onRestoreInstanceState(Bundle) onRestoreInstanceState()} 期间恢复 Activity 状态。</p>
+
+<p>要测试应用能否在保持应用状态完好的情况下自行重启,您应该在应用中执行各种任务时调用配置变更(例如,更改屏幕方向)。
+
+您的应用应该能够在不丢失用户数据或状态的情况下随时重启,以便处理如下事件:配置发生变化,或者用户收到来电并在应用进程被销毁很久之后返回到应用。
+
+
+要了解如何恢复 Activity 状态,请阅读<a href="{@docRoot}guide/components/activities.html#Lifecycle">Activity 生命周期</a>。</p>
+
+<p>但是,您可能会遇到这种情况:重启应用并恢复大量数据不仅成本高昂,而且给用户留下糟糕的使用体验。
+在这种情况下,您有两个其他选择:
+</p>
+
+<ol type="a">
+  <li><a href="#RetainingAnObject">在配置变更期间保留对象</a>
+  <p>允许 Activity 在配置变更时重启,但是要将有状态对象传递给 Activity 的新实例。
+</p>
+
+  </li>
+  <li><a href="#HandlingTheChange">自行处理配置变更</a>
+  <p>阻止系统在某些配置变更期间重启 Activity,但要在配置确实发生变化时接收回调,这样,您就能够根据需要手动更新 Activity。
+
+</p>
+  </li>
+</ol>
+
+
+<h2 id="RetainingAnObject">在配置变更期间保留对象</h2>
+
+<p>如果重启 Activity 需要恢复大量数据、重新建立网络连接或执行其他密集操作,那么因配置变更而引起的完全重启可能会给用户留下应用运行缓慢的体验。
+
+此外,依靠系统通过 {@link
+android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()} 回调为您保存的
+{@link android.os.Bundle},可能无法完全恢复 Activity 状态,因为它
+并非设计用于携带大型对象(例如位图),而且其中的数据必须先序列化,再进行反序列化,
+这可能会消耗大量内存并使得配置变更速度缓慢。在这种情况下,如果 Activity 因配置变更而重启,则可通过保留
+{@link
+android.app.Fragment} 来减轻重新初始化 Activity 的负担。此片段可能包含对您要保留的有状态对象的引用。
+</p>
+
+<p>当
+Android 系统因配置变更而关闭 Activity 时,不会销毁您已标记为要保留的 Activity 的片段。您可以将此类片段添加到 Activity 以保留有状态的对象。
+</p>
+
+<p>要在运行时配置变更期间将有状态的对象保留在片段中,请执行以下操作:</p>
+
+<ol>
+  <li>扩展 {@link android.app.Fragment}
+类并声明对有状态对象的引用。</li>
+  <li>在创建片段后调用 {@link android.app.Fragment#setRetainInstance(boolean)}。
+      </li>
+  <li>将片段添加到 Activity。</li>
+  <li>重启 Activity 后,使用 {@link android.app.FragmentManager}
+检索片段。</li>
+</ol>
+
+<p>例如,按如下所示定义片段:</p>
+
+<pre>
+public class RetainedFragment extends Fragment {
+
+    // data object we want to retain
+    private MyDataObject data;
+
+    // this method is only called once for this fragment
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // retain this fragment
+        setRetainInstance(true);
+    }
+
+    public void setData(MyDataObject data) {
+        this.data = data;
+    }
+
+    public MyDataObject getData() {
+        return data;
+    }
+}
+</pre>
+
+<p class="caution"><strong>注意:</strong>尽管您可以存储任何对象,但是切勿传递与
+{@link android.app.Activity} 绑定的对象,例如,{@link
+android.graphics.drawable.Drawable}、{@link android.widget.Adapter}、{@link android.view.View}
+或其他任何与 {@link android.content.Context} 关联的对象。否则,它将泄漏原始 Activity 实例的所有视图和资源。
+(泄漏资源意味着应用将继续持有这些资源,但是无法对其进行垃圾回收,因此可能会丢失大量内存。)
+
+</p>
+
+<p>然后,使用 {@link android.app.FragmentManager} 将片段添加到 Activity。在运行时配置变更期间再次启动 Activity 时,您可以获得片段中的数据对象。
+
+例如,按如下所示定义 Activity:</p>
+
+<pre>
+public class MyActivity extends Activity {
+
+    private RetainedFragment dataFragment;
+
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+
+        // find the retained fragment on activity restarts
+        FragmentManager fm = getFragmentManager();
+        dataFragment = (DataFragment) fm.findFragmentByTag(“data”);
+
+        // create the fragment and data the first time
+        if (dataFragment == null) {
+            // add the fragment
+            dataFragment = new DataFragment();
+            fm.beginTransaction().add(dataFragment, “data”).commit();
+            // load the data from the web
+            dataFragment.setData(loadMyData());
+        }
+
+        // the data is available in dataFragment.getData()
+        ...
+    }
+
+    &#64;Override
+    public void onDestroy() {
+        super.onDestroy();
+        // store the data in the fragment
+        dataFragment.setData(collectMyLoadedData());
+    }
+}
+</pre>
+
+<p>在此示例中,{@link android.app.Activity#onCreate(Bundle) onCreate()}
+添加了一个片段或恢复了对它的引用。此外,{@link android.app.Activity#onCreate(Bundle) onCreate()}
+还将有状态的对象存储在片段实例内部。{@link android.app.Activity#onDestroy() onDestroy()}
+对所保留的片段实例内的有状态对象进行更新。
+</p>
+
+
+
+
+
+<h2 id="HandlingTheChange">自行处理配置变更</h2>
+
+<p>如果应用在特定配置变更期间无需更新资源,并且因性能限制您需要尽量避免重启,则可声明 Activity 将自行处理配置变更,这样可以阻止系统重启 Activity。<em></em>
+
+
+</p>
+
+<p class="note"><strong>注:</strong>自行处理配置变更可能导致备用资源的使用更为困难,因为系统不会为您自动应用这些资源。
+
+只能在您必须避免Activity因配置变更而重启这一万般无奈的情况下,才考虑采用自行处理配置变更这种方法,而且对于大多数应用并不建议使用此方法。
+</p>
+
+<p>要声明由 Activity 处理配置变更,请在清单文件中编辑相应的 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>
+元素,以包含 <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a>
+属性以及代表要处理的配置的值。<a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a>属性的文档中列出了该属性的可能值(最常用的值包括 {@code "orientation"}
+和
+{@code "keyboardHidden"},分别用于避免因屏幕方向和可用键盘改变而导致重启)。您可以在该属性中声明多个配置值,方法是用管道
+{@code |} 字符分隔这些配置值。</p>
+
+<p>例如,以下清单文件代码声明的 Activity 可同时处理屏幕方向变更和键盘可用性变更:
+</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"
+          android:configChanges="orientation|keyboardHidden"
+          android:label="@string/app_name">
+</pre>
+
+<p>现在,当其中一个配置发生变化时,{@code MyActivity} 不会重启。相反,{@code MyActivity}
+会收到对 {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} 的调用。向此方法传递
+{@link android.content.res.Configuration}
+对象指定新设备配置。您可以通过读取
+{@link android.content.res.Configuration}
+中的字段,确定新配置,然后通过更新界面中使用的资源进行适当的更改。调用此方法时,Activity 的
+{@link android.content.res.Resources}
+对象会相应地进行更新,以根据新配置返回资源,这样,您就能够在系统不重启 Activity 的情况下轻松重置
+UI 的元素。</p>
+
+<p class="caution"><strong>注意:</strong>从
+Android
+3.2(API 级别 13)开始,当设备在纵向和横向之间切换时,<strong>“屏幕尺寸”也会发生变化</strong>。因此,在开发针对
+API 级别 13 或更高版本系统的应用时,若要避免由于设备方向改变而导致运行时重启(正如 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> 和 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a>
+属性中所声明),则除了 {@code
+"orientation"} 值以外,您还必须添加 {@code "screenSize"} 值。即,您必须声明 {@code
+android:configChanges="orientation|screenSize"}。但是,如果您的应用是面向 API 级别
+12 或更低版本的系统,则 Activity 始终会自行处理此配置变更(即便是在
+Android 3.2 或更高版本的设备上运行,此配置变更也不会重启 Activity)。</p>
+
+<p>例如,以下 {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} 实现
+检查当前设备方向:</p>
+
+<pre>
+&#64;Override
+public void onConfigurationChanged(Configuration newConfig) {
+    super.onConfigurationChanged(newConfig);
+
+    // Checks the orientation of the screen
+    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
+        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
+    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
+        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
+    }
+}
+</pre>
+
+<p>{@link android.content.res.Configuration}
+对象代表所有当前配置,而不仅仅是已经变更的配置。大多数时候,您并不在意配置具体发生了哪些变更,而且您可以轻松地重新分配所有资源,为您正在处理的配置提供备用资源。
+
+例如,由于 {@link
+android.content.res.Resources} 对象现已更新,因此您可以通过
+{@link android.widget.ImageView#setImageResource(int)
+setImageResource()}
+重置任何 {@link android.widget.ImageView},并且使用适合于新配置的资源(如<a href="providing-resources.html#AlternateResources">提供资源</a>中所述)。</p>
+
+<p>请注意,{@link
+android.content.res.Configuration} 字段中的值是与
+{@link android.content.res.Configuration} 类中的特定常量匹配的整型数。有关要对每个字段使用哪些常量的文档,请参阅
+{@link
+android.content.res.Configuration} 参考文档中的相应字段。</p>
+
+<p class="note"><strong>请谨记:</strong>在声明由 Activity 处理配置变更时,您有责任重置要为其提供备用资源的所有元素。
+如果您声明由 Activity 处理方向变更,而且有些图像应该在横向和纵向之间切换,则必须在
+{@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}
+期间将每个资源重新分配给每个元素。</p>
+
+<p>如果无需基于这些配置变更更新应用,则可不用实现
+{@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}。<em></em>在这种情况下,仍将使用在配置变更之前用到的所有资源,只是您无需重启 Activity。
+
+但是,应用应该始终能够在保持之前状态完好的情况下关闭和重启,因此您不得试图通过此方法来逃避在正常 Activity 生命周期期间保持您的应用状态。
+
+这不仅仅是因为还存在其他一些无法禁止重启应用的配置变更,还因为有些事件必须由您处理,例如用户离开应用,而在用户返回应用之前该应用已被销毁。
+
+
+</p>
+
+<p>如需了解有关您可以在 Activity 中处理哪些配置变更的详细信息,请参阅 <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> 文档和 {@link android.content.res.Configuration}
+类。</p>
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/ui/controls.jd b/docs/html-intl/intl/zh-cn/guide/topics/ui/controls.jd
new file mode 100644
index 0000000..0f1a543
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/controls.jd
@@ -0,0 +1,90 @@
+page.title=输入控件
+parent.title=用户界面
+parent.link=index.html
+@jd:body
+
+<div class="figure" style="margin:0">
+  <img src="{@docRoot}images/ui/ui-controls.png" alt="" style="margin:0" />
+</div>
+
+<p>输入控件是您的应用用户界面中的交互式组件。Android 提供了多种可在 UI 中使用的控件,如按钮、文本字段、定位栏、复选框、缩放按钮、切换按钮等。
+
+</p>
+
+<p>向 UI 中添加输入控件与向 <a href="{@docRoot}guide/topics/ui/declaring-layout.html">XML 布局</a>中添加 XML 元素一样简单。例如,以下是一个包含文本字段和按钮的布局:
+</p>
+
+<pre style="clear:right">
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="horizontal">
+    &lt;EditText android:id="@+id/edit_message"
+        android:layout_weight="1"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:hint="@string/edit_message" />
+    &lt;Button android:id="@+id/button_send"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/button_send"
+        android:onClick="sendMessage" />
+&lt;/LinearLayout>
+</pre>
+
+<p>每个输入控件都支持一组特定的输入事件,以便您处理用户输入文本或触摸按钮等事件。
+</p>
+
+
+<h2 id="CommonControls">通用控件</h2>
+<p>以下列出了您可以在应用中使用的一些通用控件。点击链接可了解有关各控件用法的详情。
+</p>
+
+<p class="note"><strong>注:</strong>除了此处列出的控件外,Android 还提供了几种其他控件。
+浏览 {@link android.widget} 软件包可发现更多控件。如果您的应用需要特定类型的输入控件,则可以构建您自己的<a href="{@docRoot}guide/topics/ui/custom-components.html">自定义组件</a>。
+</p>
+
+<table>
+    <tr>
+        <th scope="col">控件类型</th>
+        <th scope="col">描述</th>
+	<th scope="col">相关类</th>
+    </tr>
+    <tr>
+        <td><a href="controls/button.html">按钮</a></td>
+        <td>可由用户按压或点击来执行操作的按钮。</td>
+	<td>{@link android.widget.Button Button} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/text.html">文本字段</a></td>
+        <td>一种可编辑的文本字段。您可以使用 <code>AutoCompleteTextView</code> 小工具创建提供自动完成建议的文本输入小工具</td>
+	<td>{@link android.widget.EditText EditText}、{@link android.widget.AutoCompleteTextView}</td>
+    </tr>
+    <tr>
+        <td><a href="controls/checkbox.html">复选框</a></td>
+        <td>可由用户切换的启用/禁用开关。您应该在向用户呈现一组不互斥的可选选项时使用复选框。</td>
+	<td>{@link android.widget.CheckBox CheckBox} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/radiobutton.html">单选按钮</a></td>
+        <td>与复选框类似,不同的是只能选择组中的一个选项。</td>
+	<td>{@link android.widget.RadioGroup RadioGroup} 
+	<br>{@link android.widget.RadioButton RadioButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/togglebutton.html" style="white-space:nowrap">切换按钮</a></td>
+        <td>一种具有指示灯的开/关按钮。</td>
+	<td>{@link android.widget.ToggleButton ToggleButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/spinner.html">微调框</a></td>
+        <td>一种允许用户从值集中选择一个值的下拉列表。</td>
+	<td>{@link android.widget.Spinner Spinner} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/pickers.html">选取器</a></td>
+        <td>一种供用户通过使用向上/向下按钮或轻扫手势选择值集中单个值的对话框。使用 <code>DatePicker</code> 小工具输入日期(月、日、年)值,或使用 <code>TimePicker</code> 小工具输入时间(小时、分钟、上午/下午)值,系统将根据用户的区域设置自动设置所输入内容的格式。</td>
+	<td>{@link android.widget.DatePicker}、{@link android.widget.TimePicker}</td>
+    </tr>
+</table>
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/ui/declaring-layout.jd b/docs/html-intl/intl/zh-cn/guide/topics/ui/declaring-layout.jd
new file mode 100644
index 0000000..38e534e
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/declaring-layout.jd
@@ -0,0 +1,492 @@
+page.title=布局
+page.tags=view,viewgroup
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>本文内容</h2>
+<ol>
+  <li><a href="#write">编写 XML</a></li>
+  <li><a href="#load">加载 XML 资源</a></li>
+  <li><a href="#attributes">属性</a>
+    <ol>
+      <li><a href="#id">ID</a></li>
+      <li><a href="#layout-params">布局参数</a></li>
+    </ol>
+  </li>
+  <li><a href="#Position">布局位置</a></li>
+  <li><a href="#SizePaddingMargins">尺寸、内边距和外边距</a></li>
+  <li><a href="#CommonLayouts">常见布局</a></li>
+  <li><a href="#AdapterViews">使用适配器构建布局</a>
+    <ol>
+      <li><a href="#FillingTheLayout">使用数据填充适配器视图</a></li>
+      <li><a href="#HandlingUserSelections">处理点击事件</a></li>
+    </ol>
+  </li>
+</ol>
+
+  <h2>关键类</h2>
+  <ol>
+    <li>{@link android.view.View}</li>
+    <li>{@link android.view.ViewGroup}</li>
+    <li>{@link android.view.ViewGroup.LayoutParams}</li>
+  </ol>
+
+  <h2>另请参阅</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/firstapp/building-ui.html">构建简单的用户界面</a>
+</li> </div>
+</div>
+
+<p>布局定义用户界面的视觉结构,如<a href="{@docRoot}guide/components/activities.html">Activity</a>或<a href="{@docRoot}guide/topics/appwidgets/index.html">应用小工具</a>的
+UI。您可以通过两种方式声明布局:</p>
+<ul>
+<li><strong>在 XML 中声明 UI 元素</strong>。Android 提供了对应于 View 类及其子类的简明 XML
+词汇,如用于小工具和布局的词汇;</li>
+<li><strong>运行时实例化布局元素</strong>。您的应用可以通过编程创建
+View 对象和 ViewGroup 对象(并操纵其属性)。 </li>
+</ul>
+
+<p>Android 框架让您可以灵活地使用以下一种或两种方法来声明和管理应用的 UI。例如,您可以在 XML 中声明应用的默认布局,包括将出现在布局中的屏幕元素及其属性。然后,您可以在应用中添加可在运行时修改屏幕对象(包括那些已在 XML 中声明的对象)状态的代码。 </p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <ul>
+  <li><a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT
+  Plugin for Eclipse</a> 提供了 XML 的布局预览&mdash;
+  在 XML 文件处于打开状态时选择 <strong>Layout</strong> 选项卡</li>
+  <li>您还应尝试使用<a href="{@docRoot}tools/debugging/debugging-ui.html#hierarchyViewer">层次结构查看器</a>工具来调试布局&mdash;当您在模拟器或设备上进行调试时,它会显示布局属性值、绘制具有内边距/外边距指示符的线框以及完整渲染视图。
+
+
+
+</li>
+  <li>您可以利用 <a href="{@docRoot}tools/debugging/debugging-ui.html#layoutopt">layoutopt</a> 工具快速分析布局和层次结构中是否存在低效环节或其他问题。
+</li>
+</div>
+</div>
+
+<p>在 XML 中声明 UI 的优点在于,您可以更好地将应用的外观与控制应用行为的代码隔离。您的 UI 描述位于应用代码外部,这意味着您在修改或调整描述时无需修改您的源代码并重新编译。例如,您可以创建适用于不同屏幕方向、不同设备屏幕尺寸和不同语言的 XML 布局。此外,在 XML 中声明布局还能更轻松地显示 UI 的结构,从而简化问题调试过程。因此,本文将侧重于示范如何在 XML 中声明布局。如果您对在运行时实例化 View
+对象感兴趣,请参阅 {@link android.view.ViewGroup} 类和
+{@link android.view.View} 类的参考资料。</p>
+
+<p>一般而言,用于声明 UI 元素的 XML 词汇严格遵循类和方法的结构和命名方式,其中元素名称对应于类名称,属性名称对应于方法。实际上,这种对应关系往往非常直接,让您可以猜到对应于类方法的 XML 属性,或对应于给定 XML 元素的类。但请注意,并非所有词汇都完全相同。在某些情况下,在命名上略有差异。例如,EditText 元素具有的
+<code>text</code> 属性对应的类方法是 <code>EditText.setText()</code>。
+ </p>
+
+<p class="note"><strong>提示</strong>:如需了解有关不同布局类型的更多信息,请参阅<a href="{@docRoot}guide/topics/ui/layout-objects.html">常见布局对象</a>。
+
+<a href="{@docRoot}resources/tutorials/views/index.html">Hello 视图</a>教程指南中也提供了一系列有关构建各种布局的教程。</p>
+
+<h2 id="write">编写 XML</h2>
+
+<p>您可以利用 Android 的 XML 词汇,按照在 HTML 中创建包含一系列嵌套元素的网页的相同方式快速设计 UI 布局及其包含的屏幕元素。 </p>
+
+<p>每个布局文件都必须只包含一个根元素,并且该元素必须是视图对象或 ViewGroup 对象。定义根元素之后,即可再以子元素的形式添加其他布局对象或小工具,从而逐步构建定义布局的视图层次结构。例如,以下这个 XML 布局使用垂直 {@link android.widget.LinearLayout}
+来储存一个 {@link android.widget.TextView} 和一个 {@link android.widget.Button}:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:orientation="vertical" >
+    &lt;TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="Hello, I am a TextView" />
+    &lt;Button android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Hello, I am a Button" />
+&lt;/LinearLayout>
+</pre>
+
+<p>在 XML 中声明布局后,请在您的 Android 项目 <code>res/layout/</code> 目录中以 <code>.xml</code> 扩展名保存文件,以便其能够正确编译。
+ </p>
+
+<p><a href="{@docRoot}guide/topics/resources/layout-resource.html">布局资源</a>文档中提供了有关布局 XML 文件语法的更多信息。</p>
+
+<h2 id="load">加载 XML 资源</h2>
+
+<p>当您编译应用时,每个 XML 布局文件都会编译到一个
+{@link android.view.View} 资源中。您应该在
+{@link android.app.Activity#onCreate(android.os.Bundle) Activity.onCreate()}
+回调实现中从您的应用代码加载布局资源。请通过调用 <code>{@link android.app.Activity#setContentView(int) setContentView()}</code>,以
+<code>R.layout.<em>layout_file_name</em></code>
+形式向其传递对布局资源的引用来执行此操作。例如,如果您的
+XML 布局保存为
+<code>main_layout.xml</code>,则需要像下面这样为您的 Activity 加载该布局:</p>
+<pre>
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.main_layout);
+}
+</pre>
+
+<p>启动您的 Activity 时,Android
+框架会调用 Activity 中的
+<code>onCreate()</code>
+回调方法(请参阅<a href="{@docRoot}guide/components/activities.html#Lifecycle">Activity</a>文档中有关生命周期的阐述)。</p>
+
+
+<h2 id="attributes">属性</h2>
+
+<p>每个视图对象和 ViewGroup 对象都支持各自的各类 XML
+属性。某些属性是视图对象的专用属性(例如,TextView 支持 <code>textSize</code>
+属性),但这些属性也会被任何可以扩展此类的视图对象继承。某些属性通用于所有 View
+对象,因为它们继承自根 View 类(如 <code>id</code>
+属性)。此外,其他属性被视为“布局参数”,即描述 View
+对象特定布局方向的属性,如该对象的父 ViewGroup
+对象所定义的属性。</p>
+
+<h3 id="id">ID</h3>
+
+<p>任何视图对象都可能具有关联的整型 ID,此 ID 用于在结构树中对 View
+对象进行唯一标识。编译应用后,此 ID 将作为整型数引用,但在布局 XML
+文件中,通常会在 <code>id</code> 属性中为该 ID 赋予字符串值。这是所有
+View 对象共用的 XML 属性(由 {@link android.view.View}
+类定义),您会经常用到它。XML 标记内部的 ID
+语法是:</p>
+<pre>android:id="&#64;+id/my_button"</pre>
+
+<p>字符串开头处的 @ 符号指示 XML 解析程序应该解析并展开
+ID 字符串的其余部分,并将其标识为 ID 资源。加号 (+)
+表示这是一个新的资源名称,必须创建该名称并将其添加到我们的资源(在 <code>R.java</code> 文件中)内。Android 框架还提供了许多其他 ID
+资源。引用 Android 资源 ID 时,不需要加号,但必须添加
+<code>android</code> 软件包命名空间,如下所示:</p>
+<pre>android:id="&#64;android:id/empty"</pre>
+<p>添加 <code>android</code> 软件包命名空间之后,现在,我们将从 <code>android.R</code>
+资源类而非本地资源类引用 ID。</p>
+
+<p>要想创建视图并从应用中引用它们,常见的模式是:</p>
+<ol>
+  <li>在布局文件中定义一个视图/小工具,并为其分配一个唯一的 ID:
+<pre>
+&lt;Button android:id="&#64;+id/my_button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="&#64;string/my_button_text"/>
+</pre>
+  </li>
+  <li>然后创建一个 view
+对象实例,并从布局中捕获它(通常使用 <code>{@link android.app.Activity#onCreate(Bundle) onCreate()}</code> 方法):
+<pre>
+Button myButton = (Button) findViewById(R.id.my_button);
+</pre>
+  </li>
+</ol>
+<p>创建 {@link android.widget.RelativeLayout}
+时,为 view 对象定义 ID 非常重要。在相对布局中,同级视图可以定义其相对于其他同级视图的布局,同级视图通过唯一的 ID
+进行引用。</p>
+<p>ID
+不需要在整个结构树中具有唯一性,但在您要搜索的结构树部分应具有唯一性(要搜索的部分往往是整个结构树,因此最好尽可能具有全局唯一性)。
+</p>
+
+
+<h3 id="layout-params">布局参数</h3>
+
+<p>名为 <code>layout_<em>something</em></code> 的 XML
+布局属性可为视图定义与其所在的 ViewGroup 相适的布局参数。</p>
+
+<p>每个 ViewGroup 类都会实现一个扩展 {@link
+android.view.ViewGroup.LayoutParams} 的嵌套类。此子类包含的属性类型会根据需要为视图组的每个子视图定义尺寸和位置。
+
+正如您在图 1
+中所见,父视图组为每个子视图(包括子视图组)定义布局参数。</p>
+
+<img src="{@docRoot}images/layoutparams.png" alt="" />
+<p class="img-caption"><strong>图 1. </strong>以可视化方式表示的视图层次结构,其中包含与每个视图关联的布局参数。
+</p>
+
+<p>请注意,每个 LayoutParams
+子类都有自己的值设置语法。每个子元素都必须定义适合其父元素的
+LayoutParams,但父元素也可为其子元素定义不同的 LayoutParams。 </p>
+
+<p>所有视图组都包括宽度和高度(<code>layout_width</code> 和
+<code>layout_height</code>),并且每个视图都必须定义它们。许多
+LayoutParams 还包括可选的外边距和边框。 <p>
+
+<p>您可以指定具有确切尺寸的宽度和高度,但您多半不想经常这样做。
+在更多的情况下,您会使用以下常量之一来设置宽度或高度:
+ </p>
+
+<ul>
+  <li><var>wrap_content</var> 指示您的视图将其大小调整为内容所需的尺寸
+</li>
+  <li><var>match_parent</var> (在 API 级别 8 之前名为 <var>fill_parent</var> )指示您的视图尽可能采用其父视图组所允许的最大尺寸
+</li>
+</ul>
+
+<p>一般而言,建议不要使用绝对单位(如像素)来指定布局宽度和高度,
+而是使用相对测量单位,如密度无关像素单位
+(<var>dp</var>)、 <var>wrap_content</var> 或
+<var>match_parent</var>,这种方法更好,因为它有助于确保您的应用在各类尺寸的设备屏幕上正确显示。<a href="{@docRoot}guide/topics/resources/available-resources.html#dimension">可用资源</a>文档中定义了可接受的测量单位类型。
+
+
+
+</p>
+
+
+<h2 id="Position">布局位置</h2>
+   <p>
+   视图的几何形状就是矩形的几何形状。视图具有一个位置(以一对<em>水平向左</em>和<em>垂直向上</em>坐标表示)和两个尺寸(以宽度和高度表示)。
+
+位置和尺寸的单位是像素。
+
+   </p>
+
+   <p>
+   可以通过调用方法
+   {@link android.view.View#getLeft()} 和方法 {@link android.view.View#getTop()} 来检索视图的位置。前者会返回表示视图的矩形的水平向左(或称 X 轴)
+ 坐标。后者会返回表示视图的矩形的垂直向上(或称 Y 轴)坐标。
+这些方法都会返回视图相对于其父项的位置。
+例如,如果 <code>getLeft()</code> 返回 20,则意味着视图位于其直接父项左边缘向右 20 个像素处。
+
+
+   </p>
+
+   <p>
+   此外,系统还提供了几种便捷方法来避免不必要的计算,即 {@link android.view.View#getRight()} 和 {@link android.view.View#getBottom()}。
+
+   这些方法会返回表示视图的矩形的右边缘和下边缘的坐标。
+例如,调用 {@link android.view.View#getRight()}
+   类似于进行以下计算:<code>getLeft() + getWidth()</code>。
+   </p>
+
+
+<h2 id="SizePaddingMargins">尺寸、内边距和外边距</h2>
+   <p>
+   视图的尺寸通过宽度和高度表示。视图实际上具有两对宽度和高度值。
+
+   </p>
+
+   <p>
+   第一对称为<em>测量宽度</em>和<em>测量高度</em>。
+这些尺寸定义视图想要在其父项内具有的大小。
+
+   这些测量尺寸可以通过调用 {@link android.view.View#getMeasuredWidth()}
+   和 {@link android.view.View#getMeasuredHeight()} 来获得。
+   </p>
+
+   <p>
+   第二对简称为<em>宽度</em>和<em>高度</em>,有时称为<em>绘制宽度</em>和<em>绘制高度</em>。
+这些尺寸定义视图在绘制时和布局后在屏幕上的实际尺寸。
+
+这些值可以(但不必)与测量宽度和测量高度不同。
+宽度和高度可以通过调用
+   {@link android.view.View#getWidth()} 和 {@link android.view.View#getHeight()} 来获得。
+   </p>
+
+   <p>
+   要想测量其尺寸,视图需要将其内边距考虑在内。内边距以视图左侧、顶部、右侧和底部各部分的像素数表示。
+
+   内边距可用于以特定数量的
+   像素弥补视图的内容。例如,左侧内边距为 2,会将视图的内容从左边缘向右推
+ 2 个像素。可以使用
+   {@link android.view.View#setPadding(int, int, int, int)} 方法设置内边距,并通过调用
+   {@link android.view.View#getPaddingLeft()}、{@link android.view.View#getPaddingTop()}、{@link android.view.View#getPaddingRight()} 和 {@link android.view.View#getPaddingBottom()} 进行查询。
+
+   </p>
+
+   <p>
+   尽管视图可以定义内边距,但它并不支持外边距。
+不过,视图组可以提供此类支持。如需了解更多信息,请参阅
+   {@link android.view.ViewGroup} 和
+   {@link android.view.ViewGroup.MarginLayoutParams}。
+   </p>
+
+   <p>如需了解有关尺寸的详细信息,请参阅
+   <a href="{@docRoot}guide/topics/resources/more-resources.html#Dimension">尺寸值</a>。
+   </p>
+
+
+
+
+
+
+<style type="text/css">
+div.layout {
+  float:left;
+  width:200px;
+  margin:0 0 20px 20px;
+}
+div.layout.first {
+  margin-left:0;
+  clear:left;
+}
+</style>
+
+
+
+
+<h2 id="CommonLayouts">常见布局</h2>
+
+<p>{@link android.view.ViewGroup}
+类的每个子类都提供了一种独特的方式来显示您在其中嵌套的视图。以下是
+Android 平台中内置的一些较为常见的布局类型。</p>
+
+<p class="note"><strong>注:</strong>尽管您可以通过将一个或多个布局嵌套在另一个布局内来实现您的
+UI
+设计,但应该使您的布局层次结构尽可能简略。布局的嵌套布局越少,绘制速度越快(扁平的视图层次结构优于深层的视图层次结构)。
+</p>
+
+<!--
+<h2 id="framelayout">FrameLayout</h2>
+<p>{@link android.widget.FrameLayout FrameLayout} is the simplest type of layout
+object. It's basically a blank space on your screen that you can
+later fill with a single object &mdash; for example, a picture that you'll swap in and out.
+All child elements of the FrameLayout are pinned to the top left corner of the screen; you cannot
+specify a different location for a child view. Subsequent child views will simply be drawn over
+previous ones,
+partially or totally obscuring them (unless the newer object is transparent).
+</p>
+-->
+
+
+<div class="layout first">
+  <h4><a href="layout/linear.html">线性布局</a></h4>
+  <a href="layout/linear.html"><img src="{@docRoot}images/ui/linearlayout-small.png" alt="" /></a>
+  <p>一种使用单个水平行或垂直行来组织子项的布局。它会在窗口长度超出屏幕长度时创建一个滚动条。
+</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/relative.html">相对布局</a></h4>
+  <a href="layout/relative.html"><img src="{@docRoot}images/ui/relativelayout-small.png" alt="" /></a>
+  <p>让您能够指定子对象彼此之间的相对位置(子对象 A
+在子对象 B 左侧)或子对象与父对象的相对位置(与父对象顶部对齐)。</p>
+</div>
+
+<div class="layout">
+  <h4><a href="{@docRoot}guide/webapps/webview.html">Web 视图</a></h4>
+  <a href="{@docRoot}guide/webapps/webview.html"><img src="{@docRoot}images/ui/webview-small.png" alt="" /></a>
+  <p>显示网页。</p>
+</div>
+
+
+
+
+<h2 id="AdapterViews" style="clear:left">使用适配器构建布局</h2>
+
+<p>如果布局的内容是属于动态或未预先确定的内容,您可以使用这样一种布局:在运行时通过子类
+{@link android.widget.AdapterView} 用视图填充布局。{@link android.widget.AdapterView}
+类的子类使用 {@link android.widget.Adapter}
+将数据与其布局绑定。{@link android.widget.Adapter}
+充当数据源与 {@link android.widget.AdapterView}
+布局之间的中间人&mdash;{@link android.widget.Adapter}(从数组或数据库查询等来源)检索数据,并将每个条目转换为可以添加到 {@link android.widget.AdapterView}
+布局中的视图。</p>
+
+<p>适配器支持的常见布局包括:</p>
+
+<div class="layout first">
+  <h4><a href="layout/listview.html">列表视图</a></h4>
+  <a href="layout/listview.html"><img src="{@docRoot}images/ui/listview-small.png" alt="" /></a>
+  <p>显示滚动的单列列表。</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/gridview.html">网格视图</a></h4>
+  <a href="layout/gridview.html"><img src="{@docRoot}images/ui/gridview-small.png" alt="" /></a>
+  <p>显示滚动的行列网格。</p>
+</div>
+
+
+
+<h3 id="FillingTheLayout" style="clear:left">使用数据填充适配器视图</h3>
+
+<p>您可以通过将 {@link android.widget.AdapterView} 实例与 {@link android.widget.Adapter} 绑定来填充 {@link android.widget.AdapterView}(如 {@link android.widget.ListView} 或
+{@link android.widget.GridView}),此操作会从外部来源检索数据,并创建表示每个数据条目的
+{@link
+android.view.View}。</p>
+
+<p>Android 提供了几个 {@link android.widget.Adapter} 子类,用于检索不同种类的数据和构建
+{@link android.widget.AdapterView} 的视图。两种最常见的适配器是:
+</p>
+
+<dl>
+  <dt>{@link android.widget.ArrayAdapter}</dt>
+    <dd>请在数据源为数组时使用此适配器。默认情况下,{@link
+android.widget.ArrayAdapter} 会通过在每个项目上调用 {@link
+java.lang.Object#toString()} 并将内容放入 {@link
+android.widget.TextView} 来为每个数组项创建视图。
+      <p>例如,如果您具有想要在 {@link
+android.widget.ListView} 中显示的字符串数组,请使用构造函数初始化一个新的
+{@link android.widget.ArrayAdapter},为每个字符串和字符串数组指定布局:</p>
+<pre>
+ArrayAdapter&lt;String> adapter = new ArrayAdapter&lt;String>(this,
+        android.R.layout.simple_list_item_1, myStringArray);
+</pre>
+<p>此构造函数的参数是:</p>
+<ul>
+  <li>您的应用 {@link android.content.Context}</li>
+  <li>包含数组中每个字符串的 {@link android.widget.TextView} 的布局</li>
+  <li>字符串数组</li>
+</ul>
+<p>然后,只需在您的 {@link android.widget.ListView} 上调用
+{@link android.widget.ListView#setAdapter setAdapter()}:</p>
+<pre>
+ListView listView = (ListView) findViewById(R.id.listview);
+listView.setAdapter(adapter);
+</pre>
+
+      <p>要想自定义每个项的外观,您可以重写数组中各个对象的 {@link
+java.lang.Object#toString()} 方法。或者,要想为
+{@link android.widget.TextView} 之外的每个项创建视图(例如,如果您想为每个数组项创建一个
+{@link android.widget.ImageView}),请扩展 {@link
+android.widget.ArrayAdapter} 类并重写 {@link android.widget.ArrayAdapter#getView
+getView()} 以返回您想要为每个项获取的视图类型。</p>
+
+</dd>
+
+  <dt>{@link android.widget.SimpleCursorAdapter}</dt>
+    <dd>请在数据来自 {@link android.database.Cursor} 时使用此适配器。使用
+{@link android.widget.SimpleCursorAdapter} 时,您必须指定要为 {@link android.database.Cursor}
+中的每个行使用的布局,以及应该在哪些布局视图中插入 {@link android.database.Cursor}
+中的哪些列。例如,如果您想创建人员姓名和电话号码列表,则可以执行一个返回
+{@link
+android.database.Cursor}(包含对应每个人的行,以及对应姓名和号码的列)的查询。
+然后,您可以创建一个字符串数组,指定您想要在每个结果的布局中包含 {@link
+android.database.Cursor}
+中的哪些列,并创建一个整型数组,指定应该将每个列放入的对应视图:</p>
+<pre>
+String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME,
+                        ContactsContract.CommonDataKinds.Phone.NUMBER};
+int[] toViews = {R.id.display_name, R.id.phone_number};
+</pre>
+<p>当您实例化 {@link android.widget.SimpleCursorAdapter}
+时,请传递要用于每个结果的布局、包含结果的 {@link android.database.Cursor} 以及以下两个数组:</p>
+<pre>
+SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
+        R.layout.person_name_and_number, cursor, fromColumns, toViews, 0);
+ListView listView = getListView();
+listView.setAdapter(adapter);
+</pre>
+<p>然后,{@link android.widget.SimpleCursorAdapter} 会使用提供的布局,将每个
+{@code
+fromColumns} 项插入对应的 {@code toViews} 视图,为 {@link android.database.Cursor} 中的每个行创建一个视图。</p>.</dd>
+</dl>
+
+
+<p>如果您在应用的生命周期中更改了适配器读取的底层数据,则应调用
+{@link android.widget.ArrayAdapter#notifyDataSetChanged()}。此操作会通知附加的视图,数据发生了变化,它应该自行刷新。
+</p>
+
+
+
+<h3 id="HandlingUserSelections">处理点击事件</h3>
+
+<p>您可以通过实现 {@link android.widget.AdapterView.OnItemClickListener}
+界面来响应 {@link android.widget.AdapterView} 中每一项上的点击事件。例如:</p>
+
+<pre>
+// Create a message handling object as an anonymous class.
+private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
+    public void onItemClick(AdapterView parent, View v, int position, long id) {
+        // Do something in response to the click
+    }
+};
+
+listView.setOnItemClickListener(mMessageClickedHandler);
+</pre>
+
+
+
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/zh-cn/guide/topics/ui/dialogs.jd
new file mode 100644
index 0000000..84922b4
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/dialogs.jd
@@ -0,0 +1,798 @@
+page.title=对话框
+page.tags=提醒对话框,对话框片段
+
+@jd:body
+
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>本文内容</h2>
+<ol>
+  <li><a href="#DialogFragment">创建对话框片段</a></li>
+  <li><a href="#AlertDialog">构建提醒对话框</a>
+    <ol>
+      <li><a href="#AddingButtons">添加按钮</a></li>
+      <li><a href="#AddingAList">添加列表</a></li>
+      <li><a href="#CustomLayout">创建自定义布局</a></li>
+    </ol>
+  </li>
+  <li><a href="#PassingEvents">将事件传递回对话框的宿主</a></li>
+  <li><a href="#ShowingADialog">显示对话框</a></li>
+  <li><a href="#FullscreenDialog">全屏显示对话框或将其显示为嵌入式片段</a>
+    <ol>
+      <li><a href="#ActivityAsDialog">将 Activity 显示为大屏幕上的对话框</a></li>
+    </ol>
+  </li>
+  <li><a href="#DismissingADialog">清除对话框</a></li>
+</ol>
+
+    <h2>关键类</h2>
+    <ol>
+      <li>{@link android.app.DialogFragment}</li>
+      <li>{@link android.app.AlertDialog}</li>
+    </ol>
+    
+    <h2>另请参阅</h2>
+    <ol>
+      <li><a href="{@docRoot}design/building-blocks/dialogs.html">对话框设计指南</a></li>
+      <li><a href="{@docRoot}guide/topics/ui/controls/pickers.html">选取器</a>(日期/时间对话框)</li>
+    </ol>
+  </div>
+</div>
+
+<p>对话框是提示用户作出决定或输入额外信息的小窗口。
+对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件。
+</p>
+
+<div class="note design">
+<p><strong>对话框设计</strong></p>
+  <p>如需了解有关如何设计对话框的信息(包括语言建议),请阅读<a href="{@docRoot}design/building-blocks/dialogs.html">对话框</a>设计指南。
+</p>
+</div>
+
+<img src="{@docRoot}images/ui/dialogs.png" />
+
+<p>{@link android.app.Dialog}
+类是对话框的基类,但您应该避免直接实例化
+{@link android.app.Dialog},而是使用下列子类之一:</p>
+<dl>
+  <dt>{@link android.app.AlertDialog}</dt>
+  <dd>此对话框可显示标题、最多三个按钮、可选择项列表或自定义布局。
+</dd>
+  <dt>{@link android.app.DatePickerDialog} 或 {@link android.app.TimePickerDialog}</dt>
+  <dd>此对话框带有允许用户选择日期或时间的预定义 UI。</dd>
+</dl>
+
+<div class="sidebox">
+<h2>避免使用 ProgressDialog</h2>
+<p>Android 包括另一种名为
+{@link android.app.ProgressDialog} 的对话框类,可显示具有进度条的对话框。不过,如需指示加载进度或不确定的进度,则应改为遵循<a href="{@docRoot}design/building-blocks/progress.html">进度和 Activity</a>的设计指南,并在您的布局中使用
+{@link android.widget.ProgressBar}。
+
+</p>
+</div>
+
+<p>这些类定义您的对话框的样式和结构,但您应该将
+{@link android.support.v4.app.DialogFragment}
+用作对话框的容器。{@link android.support.v4.app.DialogFragment}
+类提供您创建对话框和管理其外观所需的所有控件,而不是调用 {@link android.app.Dialog}
+对象上的方法。</p>
+
+<p>使用 {@link android.support.v4.app.DialogFragment}
+管理对话框可确保它能正确处理生命周期事件,如用户按“返回”<em></em>按钮或旋转屏幕时。
+此外,{@link
+android.support.v4.app.DialogFragment} 类还允许您将对话框的 UI 作为嵌入式组件在较大 UI 中重复使用,就像传统 {@link
+android.support.v4.app.Fragment}
+一样(例如,当您想让对话框 UI
+在大屏幕和小屏幕上具有不同外观时)。</p>
+
+<p>本指南的后文将描述如何将 {@link
+android.support.v4.app.DialogFragment} 与 {@link android.app.AlertDialog}
+对象结合使用。如果您想创建一个日期或时间选取器,应改为阅读<a href="{@docRoot}guide/topics/ui/controls/pickers.html">选取器</a>指南。
+</p>
+
+<p class="note"><strong>注:</strong>由于
+{@link android.app.DialogFragment} 类最初是通过
+Android 3.0(API 11 级)添加的,因此本文描述的是如何使用<a href="{@docRoot}tools/support-library/index.html">支持库</a>附带的 {@link
+android.support.v4.app.DialogFragment} 类。通过将该库添加到您的应用,您可以在运行
+Android 1.6 或更高版本的设备上使用 {@link android.support.v4.app.DialogFragment} 以及各种其他
+API。如果您的应用支持的最低版本是
+API 11 级或更高版本,则可使用 {@link
+android.app.DialogFragment} 的框架版本,但请注意,本文中的链接适用于支持库
+API。使用支持库时,请确保您导入的是
+<code>android.support.v4.app.DialogFragment</code>
+类,而“绝对不”<em></em>是 <code>android.app.DialogFragment</code>。</p>
+
+
+<h2 id="DialogFragment">创建对话框片段</h2>
+
+<p>您可以完成各种对话框设计&mdash;包括自定义布局以及<a href="{@docRoot}design/building-blocks/dialogs.html">对话框</a>设计指南中描述的布局&mdash;通过扩展
+{@link android.support.v4.app.DialogFragment}
+并在
+{@link android.support.v4.app.DialogFragment#onCreateDialog
+onCreateDialog()}
+回调方法中创建 {@link android.app.AlertDialog}。</p>
+
+<p>例如,以下是一个在
+{@link android.support.v4.app.DialogFragment} 内管理的基础 {@link android.app.AlertDialog}:</p>
+
+<pre>
+public class FireMissilesDialogFragment extends DialogFragment {
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Use the Builder class for convenient dialog construction
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // FIRE ZE MISSILES!
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // User cancelled the dialog
+                   }
+               });
+        // Create the AlertDialog object and return it
+        return builder.create();
+    }
+}
+</pre>
+
+<div class="figure" style="width:290px;margin:0 0 0 20px">
+<img src="{@docRoot}images/ui/dialog_buttons.png" alt="" />
+<p class="img-caption"><strong>图 1. </strong>一个包含消息和两个操作按钮的对话框。
+</p>
+</div>
+
+<p>现在,当您创建此类的实例并调用该对象上的 {@link
+android.support.v4.app.DialogFragment#show show()} 时,对话框将如图
+1 所示。</p>
+
+<p>下文将详细描述如何使用 {@link android.app.AlertDialog.Builder}
+API 创建对话框。</p>
+
+<p>根据对话框的复杂程度,您可以在
+{@link android.support.v4.app.DialogFragment}
+中实现各种其他回调方法,包括所有基础 <a href="{@docRoot}guide/components/fragments.html#Lifecycle">片段生命周期方法</a>。
+
+
+
+
+
+<h2 id="AlertDialog">构建提醒对话框</h2>
+
+
+<p>您可以通过 {@link android.app.AlertDialog}
+类构建各种对话框设计,并且该类通常是您需要的唯一对话框类。如图 2
+所示,提醒对话框有三个区域:</p>
+
+<div class="figure" style="width:311px;margin-top:0">
+<img src="{@docRoot}images/ui/dialogs_regions.png" alt="" style="margin-bottom:0" />
+<p class="img-caption"><strong>图 2. </strong>对话框的布局。</p>
+</div>
+
+<ol>
+<li><b>标题</b>
+  <p>这是可选项,只应在内容区域被详细消息、列表或自定义布局占据时使用。
+如需陈述的是一条简单消息或问题(如图 1 中的对话框),则不需要标题。
+</li>
+<li><b>内容区域</b>
+  <p>它可以显示消息、列表或其他自定义布局。</p></li>
+<li><b>操作按钮</b>
+  <p>对话框中的操作按钮不应超过三个。</p></li>
+</ol>
+
+<p>{@link android.app.AlertDialog.Builder}
+类提供的 API 允许您创建具有这几种内容(包括自定义布局)的
+{@link android.app.AlertDialog}。</p>
+
+<p>要想构建 {@link android.app.AlertDialog},请执行以下操作:</p>
+
+<pre>
+<b>// 1. Instantiate an {@link android.app.AlertDialog.Builder} with its constructor</b>
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+
+<b>// 2. Chain together various setter methods to set the dialog characteristics</b>
+builder.setMessage(R.string.dialog_message)
+       .setTitle(R.string.dialog_title);
+
+<b>// 3. Get the {@link android.app.AlertDialog} from {@link android.app.AlertDialog.Builder#create()}</b>
+AlertDialog dialog = builder.create();
+</pre>
+
+<p>以下主题介绍如何使用
+{@link android.app.AlertDialog.Builder} 类定义各种对话框属性。</p>
+
+
+
+
+<h3 id="AddingButtons">添加按钮</h3>
+
+<p>要想添加如图 2
+所示的操作按钮,请调用 {@link android.app.AlertDialog.Builder#setPositiveButton setPositiveButton()} 和
+{@link android.app.AlertDialog.Builder#setNegativeButton setNegativeButton()} 方法:</p>
+
+<pre style="clear:right">
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+// Add the buttons
+builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User clicked OK button
+           }
+       });
+builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User cancelled the dialog
+           }
+       });
+// Set other dialog properties
+...
+
+// Create the AlertDialog
+AlertDialog dialog = builder.create();
+</pre>
+
+<p><code>set...Button()</code>
+方法需要一个按钮标题(由<a href="{@docRoot}guide/topics/resources/string-resource.html">字符串资源</a>提供)和一个
+{@link android.content.DialogInterface.OnClickListener},后者用于定义用户按下该按钮时执行的操作。
+</p>
+
+<p>您可以添加三种不同的操作按钮:</p>
+<dl>
+  <dt>肯定</dt>
+  <dd>您应该使用此按钮来接受并继续执行操作(“确定”操作)。</dd>
+  <dt>否定</dt>
+  <dd>您应该使用此按钮来取消操作。</dd>
+  <dt>中性</dt>
+  <dd>您应该在用户可能不想继续执行操作,但也不一定想要取消操作时使用此按钮。
+它出现在肯定按钮和否定按钮之间。
+例如,实际操作可能是“稍后提醒我”。</dd> 
+</dl>
+
+<p>对于每种按钮类型,您只能为 {@link
+android.app.AlertDialog} 添加一个该类型的按钮。也就是说,您不能添加多个“肯定”按钮。</p>
+
+
+
+<div class="figure" style="width:290px;margin:0 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_list.png" alt="" />
+<p class="img-caption"><strong>图 3. </strong>一个包含标题和列表的对话框。
+</p>
+</div>
+
+<h3 id="AddingAList">添加列表</h3>
+
+<p>可通过 {@link android.app.AlertDialog} API 提供三种列表:</p>
+<ul>
+<li>传统单选列表</li>
+<li>永久性单选列表(单选按钮)</li>
+<li>永久性多选列表(复选框)</li>
+</ul>
+
+<p>要想创建如图 3 所示的单选列表,请使用
+{@link android.app.AlertDialog.Builder#setItems setItems()} 方法:</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    builder.setTitle(R.string.pick_color)
+           .setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int which) {
+               // The 'which' argument contains the index position
+               // of the selected item
+           }
+    });
+    return builder.create();
+}
+</pre>
+
+<p>由于列表出现在对话框的内容区域,因此对话框无法同时显示消息和列表,您应该通过
+{@link android.app.AlertDialog.Builder#setTitle setTitle()}
+为对话框设置标题。要想指定列表项,请调用
+{@link
+android.app.AlertDialog.Builder#setItems setItems()} 来传递一个数组。或者,您也可以使用
+{@link
+android.app.AlertDialog.Builder#setAdapter setAdapter()} 指定一个列表。这样一来,您就可以使用 {@link android.widget.ListAdapter}
+以动态数据(如来自数据库的数据)支持列表。</p>
+
+<p>如果您选择通过 {@link android.widget.ListAdapter}
+支持列表,请务必使用
+{@link android.support.v4.content.Loader},以便内容以异步方式加载。<a href="{@docRoot}guide/topics/ui/declaring-layout.html#AdapterViews">使用适配器构建布局</a>和<a href="{@docRoot}guide/components/loaders.html">加载程序</a>指南中对此做了进一步描述。
+
+
+</p>
+
+<p class="note"><strong>注:</strong>默认情况下,触摸列表项会清除对话框,除非您使用的是下列其中一种永久性选择列表。
+</p>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_checkboxes.png" />
+<p class="img-caption"><strong>图 4. </strong>
+多选项列表。</p>
+</div>
+
+
+<h4 id="Checkboxes">添加永久性多选列表或单选列表</h4>
+
+<p>要想添加多选项(复选框)或单选项(单选按钮)列表,请分别使用 
+{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} 或 
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()}
+方法。</p>
+
+<p>例如,以下示例展示了如何创建如图 4
+所示的多选列表,将选定项保存在一个
+{@link java.util.ArrayList} 中:</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    mSelectedItems = new ArrayList();  // Where we track the selected items
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Set the dialog title
+    builder.setTitle(R.string.pick_toppings)
+    // Specify the list array, the items to be selected by default (null for none),
+    // and the listener through which to receive callbacks when items are selected
+           .setMultiChoiceItems(R.array.toppings, null,
+                      new DialogInterface.OnMultiChoiceClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int which,
+                       boolean isChecked) {
+                   if (isChecked) {
+                       // If the user checked the item, add it to the selected items
+                       mSelectedItems.add(which);
+                   } else if (mSelectedItems.contains(which)) {
+                       // Else, if the item is already in the array, remove it 
+                       mSelectedItems.remove(Integer.valueOf(which));
+                   }
+               }
+           })
+    // Set the action buttons
+           .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // User clicked OK, so save the mSelectedItems results somewhere
+                   // or return them to the component that opened the dialog
+                   ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   ...
+               }
+           });
+
+    return builder.create();
+}
+</pre>
+
+<p>尽管传统列表和具有单选按钮的列表都能提供“单选”操作,但如果您想持久保存用户的选择,则应使用
+{@link
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()}。也就是说,如果稍后再次打开对话框时系统应指示用户的当前选择,那么您就需要创建一个具有单选按钮的列表。
+
+</p>
+
+
+
+
+
+<h3 id="CustomLayout">创建自定义布局</h3>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_custom.png" alt="" />
+<p class="img-caption"><strong>图 5. </strong>自定义对话框布局。</p>
+</div>
+
+<p>如果您想让对话框具有自定义布局,请创建一个布局,然后通过调用
+{@link
+android.app.AlertDialog.Builder} 对象上的 {@link
+android.app.AlertDialog.Builder#setView setView()} 将其添加到 {@link android.app.AlertDialog}。</p>
+
+<p>默认情况下,自定义布局会填充对话框窗口,但您仍然可以使用
+{@link android.app.AlertDialog.Builder} 方法来添加按钮和标题。</p>
+
+<p>例如,以下是图 5 中对话框的布局文件:</p>
+
+<p style="clear:right" class="code-caption">res/layout/dialog_signin.xml</p>
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+    &lt;ImageView
+        android:src="@drawable/header_logo"
+        android:layout_width="match_parent"
+        android:layout_height="64dp"
+        android:scaleType="center"
+        android:background="#FFFFBB33"
+        android:contentDescription="@string/app_name" />
+    &lt;EditText
+        android:id="@+id/username"
+        android:inputType="textEmailAddress"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="16dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="4dp"
+        android:hint="@string/username" />
+    &lt;EditText
+        android:id="@+id/password"
+        android:inputType="textPassword"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="4dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="16dp"
+        android:fontFamily="sans-serif"
+        android:hint="@string/password"/>
+&lt;/LinearLayout>
+</pre>
+
+<p class="note"><strong>提示</strong>:默认情况下,当您将 {@link android.widget.EditText}
+元素设置为使用 {@code "textPassword"}
+输入类型时,字体系列将设置为固定宽度。因此,您应该将其字体系列更改为
+{@code "sans-serif"},以便两个文本字段都使用匹配的字体样式。</p>
+
+<p>要扩展 {@link android.support.v4.app.DialogFragment}
+中的布局,请通过 {@link android.app.Activity#getLayoutInflater()} 
+获取一个 {@link android.view.LayoutInflater} 并调用
+{@link android.view.LayoutInflater#inflate inflate()},其中第一个参数是布局资源
+ID,第二个参数是布局的父视图。然后,您可以调用
+{@link android.app.AlertDialog#setView setView()}
+将布局放入对话框。</p>
+
+<pre>
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Get the layout inflater
+    LayoutInflater inflater = getActivity().getLayoutInflater();
+
+    // Inflate and set the layout for the dialog
+    // Pass null as the parent view because its going in the dialog layout
+    builder.setView(inflater.inflate(R.layout.dialog_signin, null))
+    // Add action buttons
+           .setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // sign in the user ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int id) {
+                   LoginDialogFragment.this.getDialog().cancel();
+               }
+           });      
+    return builder.create();
+}
+</pre>
+
+<div class="note">
+<p><strong>提示</strong>:如果您想要自定义对话框,可以改用对话框的形式显示 {@link android.app.Activity},而不是使用 {@link android.app.Dialog}
+API。
+只需创建一个 Activity,并在
+<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> 清单文件元素中将其主题设置为
+{@link android.R.style#Theme_Holo_Dialog Theme.Holo.Dialog}:</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.Dialog" >
+</pre>
+<p>就这么简单。Activity 现在会显示在一个对话框窗口中,而非全屏显示。</p>
+</div>
+
+
+
+<h2 id="PassingEvents">将事件传回给对话框的宿主</h2>
+
+<p>当用户触摸对话框的某个操作按钮或从列表中选择某一项时,您的
+{@link android.support.v4.app.DialogFragment}
+可能会自行执行必要的操作,但通常您想将事件传递给打开该对话框的 Activity 或片段。
+为此,请定义一个界面,为每种点击事件定义一种方法。然后在从该对话框接收操作事件的宿主组件中实现该界面。
+
+</p>
+
+<p>例如,以下 {@link android.support.v4.app.DialogFragment}
+定义了一个界面,通过该界面将事件传回给宿主 Activity:</p>
+
+<pre>
+public class NoticeDialogFragment extends DialogFragment {
+    
+    /* The activity that creates an instance of this dialog fragment must
+     * implement this interface in order to receive event callbacks.
+     * Each method passes the DialogFragment in case the host needs to query it. */
+    public interface NoticeDialogListener {
+        public void onDialogPositiveClick(DialogFragment dialog);
+        public void onDialogNegativeClick(DialogFragment dialog);
+    }
+    
+    // Use this instance of the interface to deliver action events
+    NoticeDialogListener mListener;
+    
+    // Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
+    &#64;Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        // Verify that the host activity implements the callback interface
+        try {
+            // Instantiate the NoticeDialogListener so we can send events to the host
+            mListener = (NoticeDialogListener) activity;
+        } catch (ClassCastException e) {
+            // The activity doesn't implement the interface, throw exception
+            throw new ClassCastException(activity.toString()
+                    + " must implement NoticeDialogListener");
+        }
+    }
+    ...
+}
+</pre>
+
+<p>对话框的宿主 Activity 会通过对话框片段的构造函数创建一个对话框实例,并通过实现的
+{@code NoticeDialogListener}
+界面接收对话框的事件:</p>
+
+<pre>
+public class MainActivity extends FragmentActivity
+                          implements NoticeDialogFragment.NoticeDialogListener{
+    ...
+    
+    public void showNoticeDialog() {
+        // Create an instance of the dialog fragment and show it
+        DialogFragment dialog = new NoticeDialogFragment();
+        dialog.show(getSupportFragmentManager(), "NoticeDialogFragment");
+    }
+
+    // The dialog fragment receives a reference to this Activity through the
+    // Fragment.onAttach() callback, which it uses to call the following methods
+    // defined by the NoticeDialogFragment.NoticeDialogListener interface
+    &#64;Override
+    public void onDialogPositiveClick(DialogFragment dialog) {
+        // User touched the dialog's positive button
+        ...
+    }
+
+    &#64;Override
+    public void onDialogNegativeClick(DialogFragment dialog) {
+        // User touched the dialog's negative button
+        ...
+    }
+}
+</pre>
+
+<p>由于宿主 Activity 会实现
+{@code NoticeDialogListener}&mdash;由以上显示的
+{@link android.support.v4.app.Fragment#onAttach onAttach()}
+回调方法强制执行 &mdash; 因此对话框片段可以使用界面回调方法向 Activity 传递点击事件:</p>
+
+<pre>
+public class NoticeDialogFragment extends DialogFragment {
+    ...
+
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Build the dialog and set up the button click handlers
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the positive button event back to the host activity
+                       mListener.onDialogPositiveClick(NoticeDialogFragment.this);
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the negative button event back to the host activity
+                       mListener.onDialogNegativeClick(NoticeDialogFragment.this);
+                   }
+               });
+        return builder.create();
+    }
+}
+</pre>
+
+
+
+<h2 id="ShowingADialog">显示对话框</h2>
+
+<p>如果您想显示对话框,请创建一个 {@link
+android.support.v4.app.DialogFragment} 实例并调用 {@link android.support.v4.app.DialogFragment#show
+show()},以传递对话框片段的 {@link android.support.v4.app.FragmentManager}
+和标记名称。</p>
+
+<p>您可以通过从 {@link android.support.v4.app.FragmentActivity}
+调用 {@link android.support.v4.app.FragmentActivity#getSupportFragmentManager()} 或从
+{@link
+android.support.v4.app.Fragment} 调用 {@link
+android.support.v4.app.Fragment#getFragmentManager()} 来获取 {@link android.support.v4.app.FragmentManager}。例如:</p>
+
+<pre>
+public void confirmFireMissiles() {
+    DialogFragment newFragment = new FireMissilesDialogFragment();
+    newFragment.show(getSupportFragmentManager(), "missiles");
+}
+</pre>
+
+<p>第二个参数 {@code "missiles"}
+是系统用于保存片段状态并在必要时进行恢复的唯一标记名称。该标记还允许您通过调用
+{@link android.support.v4.app.FragmentManager#findFragmentByTag
+findFragmentByTag()} 获取片段的句柄。</p>
+
+
+
+
+<h2 id="FullscreenDialog">全屏显示对话框或将其显示为嵌入式片段</h2>
+
+<p>您可能采用以下 UI
+设计:您想让一部分 UI
+在某些情况下显示为对话框,但在其他情况下全屏显示或显示为嵌入式片段(也许取决于设备使用大屏幕还是小屏幕)。{@link android.support.v4.app.DialogFragment}
+类便具有这种灵活性,因为它仍然可以充当嵌入式 {@link
+android.support.v4.app.Fragment}。</p>
+
+<p>但在这种情况下,您不能使用 {@link android.app.AlertDialog.Builder AlertDialog.Builder}
+或其他 {@link android.app.Dialog} 对象来构建对话框。如果您想让 {@link android.support.v4.app.DialogFragment}
+具有嵌入能力,则必须在布局中定义对话框的
+UI,然后在
+{@link android.support.v4.app.DialogFragment#onCreateView
+onCreateView()} 回调中加载布局。</p>
+
+<p>以下示例 {@link android.support.v4.app.DialogFragment} 可以显示为对话框或嵌入式片段(使用名为
+<code>purchase_items.xml</code> 的布局):</p>
+
+<pre>
+public class CustomDialogFragment extends DialogFragment {
+    /** The system calls this to get the DialogFragment's layout, regardless
+        of whether it's being displayed as a dialog or an embedded fragment. */
+    &#64;Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        // Inflate the layout to use as dialog or embedded fragment
+        return inflater.inflate(R.layout.purchase_items, container, false);
+    }
+  
+    /** The system calls this only when creating the layout in a dialog. */
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // The only reason you might override this method when using onCreateView() is
+        // to modify any dialog characteristics. For example, the dialog includes a
+        // title by default, but your custom layout might not need it. So here you can
+        // remove the dialog title, but you must call the superclass to get the Dialog.
+        Dialog dialog = super.onCreateDialog(savedInstanceState);
+        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+        return dialog;
+    }
+}
+</pre>
+
+<p>以下代码可根据屏幕尺寸决定将片段显示为对话框还是全屏
+UI:</p>
+
+<pre>
+public void showDialog() {
+    FragmentManager fragmentManager = getSupportFragmentManager();
+    CustomDialogFragment newFragment = new CustomDialogFragment();
+    
+    if (mIsLargeLayout) {
+        // The device is using a large layout, so show the fragment as a dialog
+        newFragment.show(fragmentManager, "dialog");
+    } else {
+        // The device is smaller, so show the fragment fullscreen
+        FragmentTransaction transaction = fragmentManager.beginTransaction();
+        // For a little polish, specify a transition animation
+        transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
+        // To make it fullscreen, use the 'content' root view as the container
+        // for the fragment, which is always the root view for the activity
+        transaction.add(android.R.id.content, newFragment)
+                   .addToBackStack(null).commit();
+    }
+}
+</pre>
+
+<p>如需了解有关执行片段事务的详细信息,请参阅<a href="{@docRoot}guide/components/fragments.html">片段</a>指南。
+</p>
+
+<p>在本示例中,<code>mIsLargeLayout</code>
+布尔值指定当前设备是否应该使用应用的大布局设计(进而将此片段显示为对话框,而不是全屏显示)。
+设置这种布尔值的最佳方法是声明一个<a href="{@docRoot}guide/topics/resources/more-resources.html#Bool">布尔资源值</a>,其中包含适用于不同屏幕尺寸的<a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">备用资源</a>值。
+
+例如,以下两个版本的布尔资源适用于不同的屏幕尺寸:
+</p>
+
+<p class="code-caption">res/values/bools.xml</p>
+<pre>
+&lt;!-- Default boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">false&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p class="code-caption">res/values-large/bools.xml</p>
+<pre>
+&lt;!-- Large screen boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">true&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p>然后,您可以在 Activity 的
+{@link android.app.Activity#onCreate onCreate()} 方法执行期间初始化 {@code mIsLargeLayout} 值:</p>
+
+<pre>
+boolean mIsLargeLayout;
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_main);
+
+    mIsLargeLayout = getResources().getBoolean(R.bool.large_layout);
+}
+</pre>
+
+
+
+<h3 id="ActivityAsDialog">在大屏幕上将 Activity 显示为对话框</h3>
+
+<p>相对于在小屏幕上将对话框显示为全屏
+UI,您可以通过在大屏幕上将 {@link android.app.Activity}
+显示为对话框来达到相同的效果。您选择的方法取决于应用设计,但当应用已经针对小屏幕进行设计,而您想要通过将短生存期 Activity 显示为对话框来改善平板电脑体验时,将 Activity 显示为对话框往往很有帮助。
+
+
+</p>
+
+<p>要想仅在大屏幕上将 Activity 显示为对话框,请将
+{@link android.R.style#Theme_Holo_DialogWhenLarge Theme.Holo.DialogWhenLarge}
+主题应用于 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> 清单文件元素:</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.DialogWhenLarge" >
+</pre>
+
+<p>如需了解有关通过主题设置 Activity 样式的详细信息,请参阅<a href="{@docRoot}guide/topics/ui/themes.html">样式和主题</a>指南。</p>
+
+
+
+<h2 id="DismissingADialog">清除对话框</h2>
+
+<p>当用户触摸使用
+{@link android.app.AlertDialog.Builder} 创建的任何操作按钮时,系统会为您清除对话框。</p>
+
+<p>系统还会在用户触摸某个对话框列表项时清除对话框,但列表使用单选按钮或复选框时除外。
+否则,您可以通过在 {@link
+android.support.v4.app.DialogFragment} 上调用
+{@link android.support.v4.app.DialogFragment#dismiss()} 来手动清除对话框。</p>
+
+<p>如需在对话框消失时执行特定操作,则可以在您的
+{@link
+android.support.v4.app.DialogFragment} 中实现 {@link
+android.support.v4.app.DialogFragment#onDismiss onDismiss()} 方法。</p>
+
+<p>您还可以<em>取消</em>对话框。这是一个特殊事件,它表示用户显式离开对话框,而不完成任务。
+如果用户按“返回”<em></em>按钮,触摸对话框区域外部的屏幕,或者您在 {@link
+android.app.Dialog} 上显式调用 {@link android.app.Dialog#cancel()}(例如,为了响应对话框中的“取消”按钮),就会发生这种情况。
+
+</p>
+
+<p>如上例所示,您可以通过在您的 {@link
+android.support.v4.app.DialogFragment} 中实现
+{@link android.support.v4.app.DialogFragment#onCancel onCancel()} 来响应取消事件。</p>
+
+<p class="note"><strong>注:</strong>系统会在每个调用 {@link android.support.v4.app.DialogFragment#onCancel onCancel()}
+回调的事件发生时立即调用
+{@link android.support.v4.app.DialogFragment#onDismiss onDismiss()}。不过,如果您调用 {@link android.app.Dialog#dismiss Dialog.dismiss()} 或
+{@link
+android.support.v4.app.DialogFragment#dismiss DialogFragment.dismiss()},系统会调用
+{@link android.support.v4.app.DialogFragment#onDismiss onDismiss()},“而绝不会”调用<em></em>
+{@link android.support.v4.app.DialogFragment#onCancel onCancel()}。因此,当用户在对话框中按“肯定”<em></em>按钮,从视图中移除对话框时,您通常应该调用
+{@link android.support.v4.app.DialogFragment#dismiss dismiss()}。
+</p>
+
+
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/ui/menus.jd b/docs/html-intl/intl/zh-cn/guide/topics/ui/menus.jd
new file mode 100644
index 0000000..b77f3bf
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/menus.jd
@@ -0,0 +1,1031 @@
+page.title=菜单
+parent.title=用户界面
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>本文内容</h2>
+<ol>
+  <li><a href="#xml">使用 XML 定义菜单</a></li>
+  <li><a href="#options-menu">创建选项菜单</a>
+    <ol>
+      <li><a href="#RespondingOptionsMenu">处理点击事件</a></li>
+      <li><a href="#ChangingTheMenu">在运行时更改菜单项</a></li>
+    </ol>
+  </li>
+  <li><a href="#context-menu">创建上下文菜单</a>
+    <ol>
+      <li><a href="#FloatingContextMenu">创建浮动上下文菜单</a></li>
+      <li><a href="#CAB">使用上下文操作模式</a></li>
+    </ol>
+  </li>
+  <li><a href="#PopupMenu">创建弹出菜单</a>
+    <ol>
+      <li><a href="#PopupEvents">处理点击事件</a></li>
+    </ol>
+  </li>
+  <li><a href="#groups">创建菜单组</a>
+    <ol>
+      <li><a href="#checkable">使用可选中的菜单项</a></li>
+    </ol>
+  </li>
+  <li><a href="#intents">添加基于 Intent 的菜单项</a>
+    <ol>
+      <li><a href="#AllowingToAdd">允许将 Activity 添加到其他菜单中</a></li>
+    </ol>
+  </li>
+</ol>
+
+  <h2>关键类</h2>
+  <ol>
+    <li>{@link android.view.Menu}</li>
+    <li>{@link android.view.MenuItem}</li>
+    <li>{@link android.view.ContextMenu}</li>
+    <li>{@link android.view.ActionMode}</li>
+  </ol>
+
+  <h2>另请参阅</h2>
+  <ol>
+    <li><a href="{@docRoot}guide/topics/ui/actionbar.html">操作栏</a></li>
+    <li><a href="{@docRoot}guide/topics/resources/menu-resource.html">菜单资源</a></li>
+    <li><a href="http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html">从此告别菜单按钮</a>
+</li>
+  </ol>
+</div>
+</div>
+
+<p>菜单是许多应用中常见的用户界面组件。要提供熟悉而一致的用户体验,您应使用 {@link android.view.Menu} API
+呈现 Activity 中的用户操作和其他选项。
+</p>
+
+<p>从
+Android 3.0(API 级别 11)开始,采用 Android 技术的设备不必再提供一个专用“菜单”按钮。<em></em>随着这种改变,Android
+应用需摆脱对包含
+6 个项目的传统菜单面板的依赖,取而代之的是要提供一个操作栏来呈现常见的用户操作。</p>
+
+<p>尽管某些菜单项的设计和用户体验已发生改变,但定义一系列操作和选项所使用的语义仍是以
+{@link android.view.Menu} API 为基础。本指南将介绍所有
+Android 版本系统中三种基本菜单或操作呈现效果的创建方法:
+</p>
+
+<dl>
+  <dt><strong>选项菜单和操作栏</strong></dt>
+    <dd><a href="#options-menu">选项菜单</a>是某个 Activity 的主菜单项,
+供您放置对应用产生全局影响的操作,如“搜索”、“撰写电子邮件”和“设置”。
+
+  <p>如果您的应用是针对
+Android 2.3 或更低版本的系统而开发,则用户可以通过按“菜单”按钮显示选项菜单面板。<em></em></p>
+  <p>在
+Android 3.0 及更高版本的系统中,<a href="{@docRoot}guide/topics/ui/actionbar.html">操作栏</a>以屏幕操作项和溢出选项的组合形式呈现选项菜单中的各项。从 Android 3.0 开始,“菜单”按钮已弃用(某些设备没有该按钮),因此您应改为使用操作栏,来提供对操作和其他选项的访问。<em></em>
+
+
+</p>
+  <p>请参阅<a href="#options-menu">创建选项菜单</a>部分。</p>
+    </dd>
+    
+  <dt><strong>上下文菜单和上下文操作模式</strong></dt>
+  
+   <dd>上下文菜单是用户长按某一元素时出现的<a href="#FloatingContextMenu">浮动菜单</a>。
+它提供的操作将影响所选内容或上下文框架。
+
+  <p>开发针对 Android 3.0 及更高版本系统的应用时,您应改为使用<a href="#CAB">上下文操作模式</a>,以便对所选内容启用操作。此模式在屏幕顶部栏显示影响所选内容的操作项目,并允许用户选择多项。
+
+</p>
+  <p>请参阅<a href="#context-menu">创建上下文菜单</a>部分。</p>
+</dd>
+    
+  <dt><strong>弹出菜单</strong></dt>
+    <dd>弹出菜单将以垂直列表形式显示一系列项目,这些项目将锚定到调用该菜单的视图中。
+它特别适用于提供与特定内容相关的大量操作,或者为命令的另一部分提供选项。
+弹出菜单中的操作<strong>不会</strong>直接影响对应的内容,而上下文操作则会影响。
+
+相反,弹出菜单适用于与您 Activity 中的内容区域相关的扩展操作。
+
+  <p>请参阅<a href="#PopupMenu">创建弹出菜单</a>部分。</p>
+</dd>
+</dl>
+
+
+
+<h2 id="xml">使用 XML 定义菜单</h2>
+
+<p>对于所有菜单类型,Android
+提供了标准的 XML 格式来定义菜单项。您应在
+XML <a href="{@docRoot}guide/topics/resources/menu-resource.html">菜单资源</a>中定义菜单及其所有项,而不是在 Activity 的代码中构建菜单。定义后,您可以在 Activity 或片段中扩充菜单资源(将其作为
+{@link android.view.Menu}
+对象加载)。</p>
+
+<p>使用菜单资源是一种很好的做法,原因如下:</p>
+<ul>
+  <li>更易于使用 XML 可视化菜单结构</li>
+  <li>将菜单内容与应用的行为代码分离</li>
+  <li>允许您利用<a href="{@docRoot}guide/topics/resources/index.html">应用资源</a>框架,为不同的平台版本、屏幕尺寸和其他配置创建备用菜单配置
+</li>
+</ul>
+
+<p>要定义菜单,请在项目 <code>res/menu/</code>
+目录内创建一个 XML 文件,并使用以下元素构建菜单:</p>
+<dl>
+  <dt><code>&lt;menu></code></dt>
+    <dd>定义 {@link android.view.Menu},即菜单项的容器。<code>&lt;menu></code>
+元素必须是该文件的根节点,并且能够包含一个或多个
+<code>&lt;item></code> 和 <code>&lt;group></code> 元素。</dd>
+
+  <dt><code>&lt;item></code></dt>
+    <dd>创建 {@link android.view.MenuItem},此元素表示菜单中的一项,可能包含嵌套的 <code>&lt;menu></code>
+元素,以便创建子菜单。</dd>
+    
+  <dt><code>&lt;group></code></dt>
+    <dd>{@code &lt;item&gt;} 元素的不可见容器(可选)。它支持您对菜单项进行分类,使其共享活动状态和可见性等属性。
+如需了解详细信息,请参阅<a href="#groups">创建菜单组</a>部分。
+</dd>
+</dl>
+
+
+<p>以下是名为 <code>game_menu.xml</code> 的菜单示例:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/new_game"
+          android:icon="@drawable/ic_new_game"
+          android:title="@string/new_game"
+          android:showAsAction="ifRoom"/&gt;
+    &lt;item android:id="@+id/help"
+          android:icon="@drawable/ic_help"
+          android:title="@string/help" /&gt;
+&lt;/menu&gt;
+</pre>
+
+<p><code>&lt;item></code>
+元素支持多个属性,您可使用这些属性定义项目的外观和行为。上述菜单中的项目包括以下属性:</p>
+
+<dl>
+  <dt>{@code android:id}</dt>
+    <dd>项目特有的资源
+ID,让应用能够在用户选择项目时识别该项目。</dd>
+  <dt>{@code android:icon}</dt>
+    <dd>引用一个要用作项目图标的 Drawable 类。</dd>
+  <dt>{@code android:title}</dt>
+    <dd>引用一个要用作项目标题的字符串。</dd>
+  <dt>{@code android:showAsAction}</dt>
+    <dd>指定此项应作为操作项目显示在<a href="{@docRoot}guide/topics/ui/actionbar.html">操作栏</a>中的时间和方式。</dd>
+</dl>
+
+<p>这些是您应使用的最重要属性,但还有许多其他属性。有关所有受支持属性的信息,请参阅<a href="{@docRoot}guide/topics/resources/menu-resource.html">菜单资源</a>文档。
+</p>
+
+<p>您可以通过以 {@code &lt;item&gt;}
+子元素的形式添加 {@code &lt;menu&gt;} 元素,向任何菜单(子菜单除外)中的某个菜单项添加子菜单。当应用具有大量可按主题进行组织的功能时,类似于 PC 应用程序菜单栏中的菜单项(“文件”、“编辑”、“视图”等),子菜单非常有用。
+
+例如:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/file"
+          android:title="@string/file" &gt;
+        &lt;!-- "file" submenu --&gt;
+        &lt;menu&gt;
+            &lt;item android:id="@+id/create_new"
+                  android:title="@string/create_new" /&gt;
+            &lt;item android:id="@+id/open"
+                  android:title="@string/open" /&gt;
+        &lt;/menu&gt;
+    &lt;/item&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>要在 Activity 中使用菜单,您需要使用 {@link android.view.MenuInflater#inflate(int,Menu)
+MenuInflater.inflate()} 扩充菜单资源(将 XML
+资源转换为可编程对象)。在下文中,您将了解如何扩充每种类型的菜单。
+</p>
+
+
+
+<h2 id="options-menu">创建选项菜单</h2>
+
+<div class="figure" style="width:200px;margin:0">
+  <img src="{@docRoot}images/options_menu.png" height="333" alt="" />
+  <p class="img-caption"><strong>图 1. </strong>Android 2.3 系统上浏览器
+中的选项菜单。</p>
+</div>
+
+<p>在选项菜单中,您应当包括与当前 Activity 上下文相关的操作和其他选项,如“搜索”、“撰写电子邮件”和“设置”。
+</p>
+
+<p>选项菜单中的项目在屏幕上的显示位置取决于您开发的应用所适用的 Android 版本:
+</p>
+
+<ul>
+  <li>如果您开发的应用是用于
+<strong>Android
+2.3.x(API 级别 10)或更低版本</strong>的系统,则当用户按“菜单”按钮时,选项菜单的内容会出现在屏幕底部,如图 1 所示。<em></em>打开时,第一个可见部分是图标菜单,其中包含多达 6 个菜单项。
+
+如果菜单包括 6 个以上项目,则
+Android
+会将第六项和其余项目放入溢出菜单。用户可以通过选择“更多”打开该菜单。<em></em></li>
+
+  <li>如果您开发的应用是用于 <strong>Android
+3.0(API 级别 11)及更高版本</strong>的系统,则选项菜单中的项目将出现在<a href="{@docRoot}guide/topics/ui/actionbar.html">操作栏</a>中。默认情况下,系统会将所有项目均放入操作溢出菜单中。用户可以使用操作栏右侧的操作溢出菜单图标(或者,通过按设备“菜单”按钮(如有))显示操作溢出菜单。
+
+<em></em>要支持快速访问重要操作,您可以将
+{@code android:showAsAction="ifRoom"}
+添加到对应的
+{@code &lt;item&gt;} 元素,从而将几个项目提升到操作栏中(请参阅图
+2)。 <p>如需了解有关操作项目和其他操作栏行为的详细信息,请参阅<a href="{@docRoot}guide/topics/ui/actionbar.html">操作栏</a>指南。 </p>
+<p class="note"><strong>注:</strong>即使您的应用不是针对
+Android 3.0 或更高版本的系统而开发,但仍可构建自己的操作栏布局,以获得类似的效果。<em></em>有关如何使用操作栏支持旧版
+Android
+的示例,请参阅<a href="{@docRoot}resources/samples/ActionBarCompat/index.html">操作栏兼容性</a>示例。</p>
+</li>
+</ul>
+
+<img src="{@docRoot}images/ui/actionbar.png" alt="" />
+<p class="img-caption"><strong>图 2. </strong>摘自
+<a href="{@docRoot}resources/samples/HoneycombGallery/index.html">Honeycomb Gallery</a> 应用的操作栏,其中显示了导航选项卡和相机操作项目(以及操作溢出菜单按钮)。</p>
+
+<p>您可以通过 {@link android.app.Activity}
+子类或 {@link android.app.Fragment} 子类为选项菜单声明项目。如果您的 Activity 和片段均为选项菜单声明项目,则这些项目将合并到
+UI 中。系统将首先显示 Activity 的项目,随后按每个片段添加到 Activity 中的顺序显示该片段的项目。
+
+如有必要,您可以使用 {@code android:orderInCategory}
+属性,对需要移动的每个 {@code &lt;item&gt;} 中的菜单项重新排序。</p>
+
+<p>要为 Activity 指定选项菜单,请重写 {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}(Fragment 会提供自己的
+{@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()} 回调)。通过此方法,您可以将菜单资源(<a href="#xml">使用
+XML</a> 定义)扩充到回调中提供的 {@link
+android.view.Menu} 中。例如:</p>
+
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu) {
+    MenuInflater inflater = {@link android.app.Activity#getMenuInflater()};
+    inflater.inflate(R.menu.game_menu, menu);
+    return true;
+}
+</pre>
+
+<p>此外,您还可以使用 {@link android.view.Menu#add(int,int,int,int)
+add()} 添加菜单项,并使用
+{@link android.view.Menu#findItem findItem()} 检索项目,以便使用 {@link android.view.MenuItem} API 修改其属性。</p>
+
+<p>如果您开发的应用是用于 Android 2.3.x 及更低版本的系统,则当用户首次打开选项菜单时,系统会调用 {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}
+来创建该菜单。如果您开发的应用是用于
+Android 3.0 及更高版本的系统,则系统将在启动 Activity 时调用
+{@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()},以便向操作栏显示项目。</p>
+
+
+
+<h3 id="RespondingOptionsMenu">处理点击事件</h3>
+
+<p>用户从选项菜单中选择项目(包括操作栏中的操作项目)时,系统将调用 Activity 的
+{@link android.app.Activity#onOptionsItemSelected(MenuItem)
+onOptionsItemSelected()} 方法。此方法将传递所选的 {@link android.view.MenuItem}。您可以通过调用
+{@link android.view.MenuItem#getItemId()} 方法来识别项目,该方法将返回菜单项的唯一 ID(由菜单资源中的 {@code android:id} 属性定义,或通过提供给 {@link android.view.Menu#add(int,int,int,int) add()}
+方法的整型数定义)。
+您可以将此
+ID 与已知的菜单项匹配,以执行适当的操作。例如:</p>
+
+<pre>
+&#64;Override
+public boolean onOptionsItemSelected(MenuItem item) {
+    // Handle item selection
+    switch (item.getItemId()) {
+        case R.id.new_game:
+            newGame();
+            return true;
+        case R.id.help:
+            showHelp();
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+    }
+}
+</pre>
+
+<p>成功处理菜单项后,系统将返回 {@code true}。如果未处理菜单项,则应调用 {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}
+的超类实现(默认实现将返回 false)。
+</p>
+
+<p>如果 Activity 包括片段,则系统将依次为 Activity 和每个片段(按照每个片段的添加顺序)调用 {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()}
+,直到有一返回结果为
+{@code true} 或所有片段均调用完毕为止。</p>
+
+<p class="note"><strong>提示:</strong>Android 3.0 新增了一项功能,支持您在 XML 中使用 {@code android:onClick}
+属性为菜单项定义点击行为。该属性的值必须是 Activity 使用菜单定义的方法的名称。
+该方法必须是公用的,且接受单个
+{@link android.view.MenuItem}
+参数;当系统调用此方法时,它会传递所选的菜单项。如需了解详细信息和示例,请参阅<a href="{@docRoot}guide/topics/resources/menu-resource.html">菜单资源</a>文档。</p>
+
+<p class="note"><strong>提示:</strong>如果应用包含多个 Activity,且其中某些 Activity 提供相同的选项菜单,则可考虑创建一个仅实现
+{@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()} 和 {@link android.app.Activity#onOptionsItemSelected(MenuItem)
+onOptionsItemSelected()}
+方法的 Activity。然后,为每个应共享相同选项菜单的 Activity 扩展此类。
+通过这种方式,您可以管理一个用于处理菜单操作的代码集,且每个子级类均会继承菜单行为。若要将菜单项添加到一个子级 Activity,请重写该 Activity 中的
+{@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()}。
+
+调用 {@code super.onCreateOptionsMenu(menu)},以便创建原始菜单项,然后使用
+{@link
+android.view.Menu#add(int,int,int,int) menu.add()} 添加新菜单项。此外,您还可以替代各个菜单项的超类行为。
+</p>
+
+
+<h3 id="ChangingTheMenu">在运行时更改菜单项</h3>
+
+<p>系统调用
+{@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()} 后,将保留您填充的 {@link android.view.Menu} 实例。除非菜单由于某些原因而失效,否则不会再次调用
+{@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}。但是,您仅应使用
+{@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} 来创建初始菜单状态,而不应使用它在 Activity 生命周期中执行任何更改。</p>
+
+<p>如需根据在 Activity 生命周期中发生的事件修改选项菜单,则可通过
+{@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}
+方法执行此操作。此方法向您传递
+{@link android.view.Menu}
+对象(因为该对象目前存在),以便您能够对其进行修改,如添加、删除或禁用项目。(此外,片段还提供 {@link
+android.app.Fragment#onPrepareOptionsMenu onPrepareOptionsMenu()} 回调。)</p>
+
+<p>在
+Android 2.3.x 及更低版本中,每当用户打开选项菜单时(按“菜单”按钮),系统均会调用 {@link
+android.app.Activity#onPrepareOptionsMenu(Menu)
+onPrepareOptionsMenu()}。<em></em></p>
+
+<p>在
+Android 3.0 及更高版本中,当菜单项显示在操作栏中时,选项菜单被视为始终处于打开状态。发生事件时,如果您要执行菜单更新,则必须调用
+{@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()} 来请求系统调用
+{@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}。</p>
+
+<p class="note"><strong>注:</strong>切勿根据目前处于焦点的
+{@link android.view.View}
+更改选项菜单中的项目。处于触摸模式(用户未使用轨迹球或方向键)时,视图无法形成焦点,因此切勿根据焦点修改选项菜单中的项目。
+
+若要为 {@link
+android.view.View} 提供上下文相关的菜单项,请使用<a href="#context-menu">上下文菜单</a>。</p>
+
+
+
+
+<h2 id="context-menu">创建上下文菜单</h2>
+
+<div class="figure" style="width:420px;margin-top:-1em">
+  <img src="{@docRoot}images/ui/menu-context.png" alt="" />
+  <p class="img-caption"><strong>图 3. </strong>浮动上下文菜单(左)和上下文操作栏(右)的屏幕截图。
+</p>
+</div>
+
+<p>上下文菜单提供了许多操作,这些操作影响 UI 中的特定项目或上下文框架。您可以为任何视图提供上下文菜单,但这些菜单通常用于
+{@link
+android.widget.ListView}、{@link android.widget.GridView}
+或用户可直接操作每个项目的其他视图集合中的项目。</p>
+
+<p>提供上下文操作的方法有两种:</p>
+<ul>
+  <li>使用<a href="#FloatingContextMenu">浮动上下文菜单</a>。用户长按(按住)一个声明支持上下文菜单的视图时,菜单显示为菜单项的浮动列表(类似于对话框)。
+
+用户一次可对一个项目执行上下文操作。
+</li>
+
+  <li>使用<a href="#CAB">上下文操作模式</a>。此模式是
+{@link android.view.ActionMode}
+的系统实现,它将在屏幕顶部显示上下文操作栏,其中包括影响所选项的操作项目。<em></em>当此模式处于活动状态时,用户可以同时对多项执行操作(如果应用允许)。
+</li>
+</ul>
+
+<p class="note"><strong>注:</strong>上下文操作模式可用于
+Android 3.0(API
+级别 11)及更高版本的系统,是显示上下文操作(如果可用)的首选方法。如果应用支持低于
+3.0 版本的系统,则应在这些设备上回退到浮动上下文菜单。</p>
+
+
+<h3 id="FloatingContextMenu">创建浮动上下文菜单</h3>
+
+<p>要提供浮动上下文菜单,请执行以下操作:</p>
+<ol>
+  <li>通过调用
+{@link android.app.Activity#registerForContextMenu(View) registerForContextMenu()},注册应与上下文菜单关联的
+{@link android.view.View} 并将其传递给 {@link android.view.View}。
+  <p>如果 Activity 使用 {@link android.widget.ListView} 或 {@link android.widget.GridView}
+且您希望每个项目均提供相同的上下文菜单,请通过将
+{@link android.widget.ListView} 或 {@link android.widget.GridView} 传递给 {@link
+android.app.Activity#registerForContextMenu(View) registerForContextMenu()},为上下文菜单注册所有项目。</p>
+</li>
+
+  <li>在 {@link android.app.Activity} 或 {@link android.app.Fragment} 中实现 {@link
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()}
+方法。
+  <p>当注册后的视图收到长按事件时,系统将调用您的 {@link
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()}
+方法。在此方法中,您通常可通过扩充菜单资源来定义菜单项。例如:
+</p>
+<pre>
+&#64;Override
+public void onCreateContextMenu(ContextMenu menu, View v,
+                                ContextMenuInfo menuInfo) {
+    super.onCreateContextMenu(menu, v, menuInfo);
+    MenuInflater inflater = getMenuInflater();
+    inflater.inflate(R.menu.context_menu, menu);
+}
+</pre>
+
+<p>{@link android.view.MenuInflater} 允许您通过<a href="{@docRoot}guide/topics/resources/menu-resource.html">菜单资源</a>扩充上下文菜单。回调方法参数包括用户所选的
+{@link android.view.View},以及一个提供有关所选项的附加信息的
+{@link android.view.ContextMenu.ContextMenuInfo}
+对象。如果 Activity 有多个视图,每个视图均提供不同的上下文菜单,则可使用这些参数确定要扩充的上下文菜单。
+
+</p>
+</li>
+
+<li>实现 {@link android.app.Activity#onContextItemSelected(MenuItem)
+onContextItemSelected()}。
+  <p>用户选择菜单项时,系统将调用此方法,以便您能够执行适当的操作。
+例如:</p>
+
+<pre>
+&#64;Override
+public boolean onContextItemSelected(MenuItem item) {
+    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
+    switch (item.getItemId()) {
+        case R.id.edit:
+            editNote(info.id);
+            return true;
+        case R.id.delete:
+            deleteNote(info.id);
+            return true;
+        default:
+            return super.onContextItemSelected(item);
+    }
+}
+</pre>
+
+<p>{@link android.view.MenuItem#getItemId()}
+方法将查询所选菜单项的 ID,您应使用 {@code
+android:id} 属性将此 ID 分配给 XML 中的每个菜单项,如<a href="#xml">使用
+XML 定义菜单</a>部分所示。</p>
+
+<p>成功处理菜单项后,系统将返回 {@code true}。如果未处理菜单项,则应将菜单项传递给超类实现。
+如果 Activity 包括片段,则 Activity 将先收到此回调。
+通过在未处理的情况下调用超类,系统将事件逐一传递给每个片段中相应的回调方法(按照每个片段的添加顺序),直到返回
+{@code true} 或 {@code false}
+为止。({@link android.app.Activity}
+和 {@code android.app.Fragment} 的默认实现返回 {@code
+false},因此您始终应在未处理的情况下调用超类。)</p>
+</li>
+</ol>
+
+
+<h3 id="CAB">使用上下文操作模式</h3>
+
+<p>上下文操作模式是
+{@link android.view.ActionMode} 的一种系统实现,它将用户交互的重点转到执行上下文操作上。用户通过选择项目启用此模式时,屏幕顶部将出现一个“上下文操作栏”,显示用户可对当前所选项执行的操作。
+
+<em></em>启用此模式后,用户可以选择多个项目(若您允许)、取消选择项目以及继续在 Activity 内导航(在您允许的最大范围内)。
+
+当用户取消选择所有项目、按“返回”按钮或选择操作栏左侧的“完成”操作时,该操作模式将会禁用,且上下文操作栏将会消失。
+
+<em></em></p>
+
+<p class="note"><strong>注:</strong>上下文操作栏不一定与<a href="{@docRoot}guide/topics/ui/actionbar.html">操作栏</a>相关联。
+尽管表面上看来上下文操作栏取代了操作栏的位置,但事实上二者独立运行。
+
+</p>
+
+<p>如果您的应用是针对
+Android 3.0(API 级别 11)或更高版本的系统而开发,则通常应使用上下文操作模式(而不是<a href="#FloatingContextMenu">浮动上下文菜单</a>)显示上下文操作。</p>
+
+<p>对于提供上下文操作的视图,当出现以下两个事件(或之一)时,您通常应调用上下文操作模式:
+</p>
+<ul>
+  <li>用户长按视图。</li>
+  <li>用户选中复选框或视图内的类似 UI 组件。</li>
+</ul>
+
+<p>应用如何调用上下文操作模式以及如何定义每个操作的行为,具体取决于您的设计。
+设计基本上分为两种:</p>
+<ul>
+  <li>针对单个任意视图的上下文操作。</li>
+  <li>针对 {@link
+android.widget.ListView} 或 {@link android.widget.GridView}
+中项目组的批处理上下文操作(允许用户选择多个项目并针对所有项目执行操作)。</li>
+</ul>
+
+<p>下文介绍每种场景所需的设置。</p>
+
+
+<h4 id="CABforViews">为单个视图启用上下文操作模式</h4>
+
+<p>如果希望仅当用户选择特定视图时才调用上下文操作模式,则应:
+</p>
+<ol>
+  <li>实现 {@link android.view.ActionMode.Callback} 接口。在其回调方法中,您既可以为上下文操作栏指定操作,又可以响应操作项目的点击事件,还可以处理操作模式的其他生命周期事件。
+
+</li>
+  <li>当需要显示操作栏时(例如,用户长按视图),请调用
+{@link android.app.Activity#startActionMode startActionMode()}。</li>
+</ol>
+
+<p>例如:</p>
+
+<ol>
+  <li>实现 {@link android.view.ActionMode.Callback ActionMode.Callback} 接口:
+<pre>
+private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
+
+    // Called when the action mode is created; startActionMode() was called
+    &#64;Override
+    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+        // Inflate a menu resource providing context menu items
+        MenuInflater inflater = mode.getMenuInflater();
+        inflater.inflate(R.menu.context_menu, menu);
+        return true;
+    }
+
+    // Called each time the action mode is shown. Always called after onCreateActionMode, but
+    // may be called multiple times if the mode is invalidated.
+    &#64;Override
+    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+        return false; // Return false if nothing is done
+    }
+
+    // Called when the user selects a contextual menu item
+    &#64;Override
+    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.menu_share:
+                shareCurrentItem();
+                mode.finish(); // Action picked, so close the CAB
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    // Called when the user exits the action mode
+    &#64;Override
+    public void onDestroyActionMode(ActionMode mode) {
+        mActionMode = null;
+    }
+};
+</pre>
+
+<p>请注意,这些事件回调与<a href="#options-menu">选项菜单</a>的回调几乎完全相同,只是其中每个回调还会传递与事件相关联的 {@link
+android.view.ActionMode} 对象。您可以使用
+{@link
+android.view.ActionMode} API 对 CAB 进行各种更改,例如:使用 {@link android.view.ActionMode#setTitle setTitle()}
+和 {@link
+android.view.ActionMode#setSubtitle setSubtitle()}(这对指示要选择多少个项目非常有用)修改标题和副标题。</p>
+
+<p>另请注意,操作模式被销毁时,上述示例会将 {@code mActionMode}
+变量设置为 null。在下一步中,您将了解如何初始化该变量,以及保存 Activity 或片段中的成员变量有何作用。
+</p>
+</li>
+
+  <li>调用 {@link android.app.Activity#startActionMode startActionMode()}
+以便适时启用上下文操作模式,例如:响应对 {@link
+android.view.View} 的长按操作:</p>
+
+<pre>
+someView.setOnLongClickListener(new View.OnLongClickListener() {
+    // Called when the user long-clicks on someView
+    public boolean onLongClick(View view) {
+        if (mActionMode != null) {
+            return false;
+        }
+
+        // Start the CAB using the ActionMode.Callback defined above
+        mActionMode = getActivity().startActionMode(mActionModeCallback);
+        view.setSelected(true);
+        return true;
+    }
+});
+</pre>
+
+<p>当您调用 {@link android.app.Activity#startActionMode startActionMode()} 时,系统将返回已创建的
+{@link android.view.ActionMode}。通过将其保存在成员变量中,您可以更改上下文操作栏来响应其他事件。
+在上述示例中,
+{@link android.view.ActionMode}
+用于在启动操作模式之前检查成员是否为空,以确保当 {@link android.view.ActionMode}
+实例已激活时不再重建该实例。</p>
+</li>
+</ol>
+
+
+
+<h4 id="CABforListView">在 ListView 或 GridView 中启用批处理上下文操作</h4>
+
+<p>如果您在 {@link android.widget.ListView} 或 {@link
+android.widget.GridView} 中有一组项目(或 {@link android.widget.AbsListView}
+的其他扩展),且需要允许用户执行批处理操作,则应:</p>
+
+<ul>
+  <li>实现
+{@link android.widget.AbsListView.MultiChoiceModeListener} 接口,并使用 {@link android.widget.AbsListView#setMultiChoiceModeListener
+setMultiChoiceModeListener()} 为视图组设置该接口。在侦听器的回调方法中,您既可以为上下文操作栏指定操作,也可以响应操作项目的点击事件,还可以处理从
+{@link android.view.ActionMode.Callback}
+接口继承的其他回调。</li>
+
+  <li>使用 {@link
+android.widget.AbsListView#CHOICE_MODE_MULTIPLE_MODAL} 参数调用 {@link android.widget.AbsListView#setChoiceMode setChoiceMode()}。</li>
+</ul>
+
+<p>例如:</p>
+
+<pre>
+ListView listView = getListView();
+listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
+listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
+
+    &#64;Override
+    public void onItemCheckedStateChanged(ActionMode mode, int position,
+                                          long id, boolean checked) {
+        // Here you can do something when items are selected/de-selected,
+        // such as update the title in the CAB
+    }
+
+    &#64;Override
+    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+        // Respond to clicks on the actions in the CAB
+        switch (item.getItemId()) {
+            case R.id.menu_delete:
+                deleteSelectedItems();
+                mode.finish(); // Action picked, so close the CAB
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    &#64;Override
+    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+        // Inflate the menu for the CAB
+        MenuInflater inflater = mode.getMenuInflater();
+        inflater.inflate(R.menu.context, menu);
+        return true;
+    }
+
+    &#64;Override
+    public void onDestroyActionMode(ActionMode mode) {
+        // Here you can make any necessary updates to the activity when
+        // the CAB is removed. By default, selected items are deselected/unchecked.
+    }
+
+    &#64;Override
+    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+        // Here you can perform updates to the CAB due to
+        // an {@link android.view.ActionMode#invalidate} request
+        return false;
+    }
+});
+</pre>
+
+<p>就这么简单。现在,当用户通过长按选择项目时,系统即会调用 {@link
+android.widget.AbsListView.MultiChoiceModeListener#onCreateActionMode onCreateActionMode()}
+方法,并显示包含指定操作的上下文操作栏。当上下文操作栏可见时,用户可以选择其他项目。
+</p>
+
+<p>在某些情况下,如果上下文操作提供常用的操作项目,则您可能需要添加一个复选框或类似的
+UI
+元素来支持用户选择项目,这是因为他们可能没有发现长按行为。用户选中该复选框时,您可以通过使用
+{@link android.widget.AbsListView#setItemChecked setItemChecked()}
+将相应的列表项设置为选中状态,以此调用上下文操作模式。</p>
+
+
+
+
+<h2 id="PopupMenu">创建弹出菜单</h2>
+
+<div class="figure" style="width:220px">
+<img src="{@docRoot}images/ui/popupmenu.png" alt="" />
+<p><strong>图 4. </strong>Gmail 应用中的弹出菜单,锚定到右上角的溢出按钮。
+</p>
+</div>
+
+<p>{@link android.widget.PopupMenu}
+是锚定到 {@link android.view.View} 的模态菜单。如果空间足够,它将显示在定位视图下方,否则显示在其上方。它适用于:</p>
+<ul>
+  <li>为与特定内容确切相关的操作提供溢出样式菜单(例如,Gmail
+的电子邮件标头,如图 4 所示)。<em></em>
+    <p class="note"><strong>注:</strong>这与上下文菜单不同,后者通常用于影响所选内容的操作。
+<em></em>对于影响所选内容的操作,请使用<a href="#CAB">上下文操作模式</a>或<a href="#FloatingContextMenu">浮动上下文菜单</a>。
+</p></li>
+  <li>提供命令语句的另一部分(例如,标记为“添加”且使用不同的“添加”选项生成弹出菜单的按钮)。
+</li>
+  <li>提供类似于
+{@link android.widget.Spinner} 且不保留永久选择的下拉菜单。</li>
+</ul>
+
+
+<p class="note"><strong>注:</strong>{@link android.widget.PopupMenu} 在 API
+级别 11 及更高版本中可用。</p>
+
+<p>如果<a href="#xml">使用 XML 定义菜单</a>,则显示弹出菜单的方法如下:</p>
+<ol>
+  <li>实例化
+{@link android.widget.PopupMenu} 及其构造函数,该函数将提取当前应用的 {@link android.content.Context} 以及菜单应锚定到的
+{@link android.view.View}。</li>
+  <li>使用 {@link android.view.MenuInflater} 将菜单资源扩充到 {@link
+android.widget.PopupMenu#getMenu() PopupMenu.getMenu()} 返回的 {@link
+android.view.Menu} 对象中。在 API 级别 14 及更高版本中,您可以改为使用
+{@link android.widget.PopupMenu#inflate PopupMenu.inflate()}。</li>
+  <li>调用 {@link android.widget.PopupMenu#show() PopupMenu.show()}。</li>
+</ol>
+
+<p>例如,以下是一个使用
+{@link android.R.attr#onClick android:onClick} 属性显示弹出菜单的按钮:</p>
+
+<pre>
+&lt;ImageButton
+    android:layout_width="wrap_content" 
+    android:layout_height="wrap_content" 
+    android:src="@drawable/ic_overflow_holo_dark"
+    android:contentDescription="@string/descr_overflow_button"
+    android:onClick="showPopup" />
+</pre>
+
+<p>稍后,Activity 可按照如下方式显示弹出菜单:</p>
+
+<pre>
+public void showPopup(View v) {
+    PopupMenu popup = new PopupMenu(this, v);
+    MenuInflater inflater = popup.getMenuInflater();
+    inflater.inflate(R.menu.actions, popup.getMenu());
+    popup.show();
+}
+</pre>
+
+<p>在 API 级别 14 及更高版本中,您可以将两行合在一起,使用 {@link
+android.widget.PopupMenu#inflate PopupMenu.inflate()} 扩充菜单。</p>
+
+<p>当用户选择项目或触摸菜单以外的区域时,系统即会清除此菜单。
+您可使用 {@link
+android.widget.PopupMenu.OnDismissListener} 侦听清除事件。</p>
+
+<h3 id="PopupEvents">处理点击事件</h3>
+
+<p>要在用户选择菜单项时执行操作,您必须实现
+{@link
+android.widget.PopupMenu.OnMenuItemClickListener} 接口,并通过调用 {@link android.widget.PopupMenu#setOnMenuItemClickListener
+setOnMenuItemclickListener()} 将其注册到 {@link
+android.widget.PopupMenu}。用户选择项目时,系统会在接口中调用 {@link
+android.widget.PopupMenu.OnMenuItemClickListener#onMenuItemClick onMenuItemClick()}
+回调。</p>
+
+<p>例如:</p>
+
+<pre>
+public void showMenu(View v) {
+    PopupMenu popup = new PopupMenu(this, v);
+
+    // This activity implements OnMenuItemClickListener
+    popup.setOnMenuItemClickListener(this);
+    popup.inflate(R.menu.actions);
+    popup.show();
+}
+
+&#64;Override
+public boolean onMenuItemClick(MenuItem item) {
+    switch (item.getItemId()) {
+        case R.id.archive:
+            archive(item);
+            return true;
+        case R.id.delete:
+            delete(item);
+            return true;
+        default:
+            return false;
+    }
+}
+</pre>
+
+
+<h2 id="groups">创建菜单组</h2>
+
+<p>菜单组是指一系列具有某些共同特征的菜单项。通过菜单组,您可以:
+</p>
+<ul>
+  <li>使用 {@link android.view.Menu#setGroupVisible(int,boolean)
+setGroupVisible()} 显示或隐藏所有项目</li>
+  <li>使用 {@link android.view.Menu#setGroupEnabled(int,boolean)
+setGroupEnabled()} 启用或禁用所有项目</li>
+  <li>使用 {@link
+android.view.Menu#setGroupCheckable(int,boolean,boolean) setGroupCheckable()} 指定所有项目是否可选中</li>
+</ul>
+
+<p>通过将 {@code &lt;item&gt;} 元素嵌套在菜单资源中的 {@code &lt;group&gt;}
+元素内,或者通过使用 {@link
+android.view.Menu#add(int,int,int,int) add()} 方法指定组 ID,您可以创建组。</p>
+
+<p>以下是包含组的菜单资源示例:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/menu_save"
+          android:icon="@drawable/menu_save"
+          android:title="@string/menu_save" /&gt;
+    &lt;!-- menu group --&gt;
+    &lt;group android:id="@+id/group_delete"&gt;
+        &lt;item android:id="@+id/menu_archive"
+              android:title="@string/menu_archive" /&gt;
+        &lt;item android:id="@+id/menu_delete"
+              android:title="@string/menu_delete" /&gt;
+    &lt;/group&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>组中的项目出现在与第一项相同的级别,即:菜单中的所有三项均为同级。
+但是,您可以通过引用组 ID
+并使用上面列出的方法,修改组中两项的特征。此外,系统也绝不会分离已分组的项目。
+例如,如果为每个项目声明
+{@code
+android:showAsAction="ifRoom"},则它们会同时显示在操作栏或操作溢出菜单中。</p>
+
+
+<h3 id="checkable">使用可选中的菜单项</h3>
+
+<div class="figure" style="width:200px">
+  <img src="{@docRoot}images/radio_buttons.png" height="333" alt="" />
+  <p class="img-caption"><strong>图 5. </strong>含可选中项目的子菜单的屏幕截图。
+</p>
+</div>
+
+<p>作为启用/禁用选项的接口,菜单非常实用,既可针对独立选项使用复选框,也可针对互斥选项组使用单选按钮。
+
+图 5 显示了一个子菜单,其中的项目可使用单选按钮选中。
+</p>
+
+<p class="note"><strong>注:</strong>“图标菜单”(在选项菜单中)的菜单项无法显示复选框或单选按钮。
+如果您选择使“图标菜单”中的项目可选中,则必须在选中状态每次发生变化时交换图标和/或文本,手动指出该状态。
+
+</p>
+
+<p>您可以使用 {@code &lt;item&gt;} 元素中的 {@code
+android:checkable} 属性为各个菜单项定义可选中的行为,或者使用 {@code &lt;group&gt;} 元素中的
+{@code android:checkableBehavior} 属性为整个组定义可选中的行为。例如,此菜单组中的所有项目均可使用单选按钮选中:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;group android:checkableBehavior="single"&gt;
+        &lt;item android:id="@+id/red"
+              android:title="@string/red" /&gt;
+        &lt;item android:id="@+id/blue"
+              android:title="@string/blue" /&gt;
+    &lt;/group&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>{@code android:checkableBehavior} 属性接受以下任一选项:
+<dl>
+  <dt>{@code single}</dt>
+    <dd>组中只有一个项目可以选中(单选按钮)</dd>
+  <dt>{@code all}</dt>
+    <dd>所有项目均可选中(复选框)</dd>
+  <dt>{@code none}</dt>
+    <dd>所有项目均无法选中</dd>
+</dl>
+
+<p>您可以使用 {@code &lt;item&gt;}
+元素中的 {@code android:checked} 属性将默认的选中状态应用于项目,并可使用 {@link
+android.view.MenuItem#setChecked(boolean) setChecked()} 方法在代码中更改此默认状态。</p>
+
+<p>选择可选中项目后,系统将调用所选项目的相应回调方法(例如,{@link android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()})。
+此时,您必须设置复选框的状态,因为复选框或单选按钮不会自动更改其状态。
+
+您可以使用 {@link android.view.MenuItem#isChecked()}
+查询项目的当前状态(正如用户选择该项目之前一样),然后使用
+{@link android.view.MenuItem#setChecked(boolean) setChecked()} 设置选中状态。例如:</p>
+
+<pre>
+&#64;Override
+public boolean onOptionsItemSelected(MenuItem item) {
+    switch (item.getItemId()) {
+        case R.id.vibrate:
+        case R.id.dont_vibrate:
+            if (item.isChecked()) item.setChecked(false);
+            else item.setChecked(true);
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+    }
+}
+</pre>
+
+<p>如果未通过这种方式设置选中状态,则项目的可见状态(复选框或单选按钮)不会因为用户选择它而发生变化。
+
+如果已设置该状态,则 Activity 会保留项目的选中状态。这样一来,当用户稍后打开菜单时,您设置的选中状态将会可见。
+
+</p>
+
+<p class="note"><strong>注:</strong>可选中菜单项的使用往往因会话而异,且在应用销毁后不予保存。
+
+如果您想为用户保存某些应用设置,则应使用<a href="{@docRoot}guide/topics/data/data-storage.html#pref">共享首选项</a>存储数据。
+</p>
+
+
+
+<h2 id="intents">添加基于 Intent 的菜单项</h2>
+
+<p>有时,您希望菜单项通过使用
+{@link android.content.Intent} 启动 Activity(无论该 Activity 是位于您的应用还是其他应用中)。如果您知道自己要使用的 Intent,且具有启动 Intent 的特定菜单项,则可在相应的
+on-item-selected 回调方法(例如,{@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} 回调)期间使用
+{@link android.app.Activity#startActivity(Intent) startActivity()}
+执行 Intent。</p>
+
+<p>但是,如果不确定用户的设备是否包含可处理 Intent 的应用,则添加调用 Intent 的菜单项可能会导致该菜单项无法正常工作,这是因为 Intent 可能无法解析为 Activity。
+
+
+为了解决这一问题,当
+Android 在设备上找到可处理 Intent 的 Activity 时,则允许您向菜单动态添加菜单项。</p>
+
+<p>要根据接受 Intent 的可用 Activity 添加菜单项,请执行以下操作:</p>
+<ol>
+  <li>使用类别
+{@link android.content.Intent#CATEGORY_ALTERNATIVE} 和/或
+{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} 以及任何其他要求定义 Intent。</li>
+  <li>调用 {@link
+android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+Menu.addIntentOptions()}。Android
+随后即会搜索能够执行 Intent 的所有应用,并将其添加到菜单中。</li>
+</ol>
+
+<p>如果未安装可处理 Intent 的应用,则不会添加任何菜单项。
+</p>
+
+<p class="note"><strong>注:</strong>
+{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE}
+用于处理屏幕上当前所选的元素。因此,只有在 {@link
+android.app.Activity#onCreateContextMenu(ContextMenu,View,ContextMenuInfo)
+onCreateContextMenu()} 中创建菜单时,才能使用它。</p>
+
+<p>例如:</p>
+
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu){
+    super.onCreateOptionsMenu(menu);
+
+    // Create an Intent that describes the requirements to fulfill, to be included
+    // in our menu. The offering app must include a category value of Intent.CATEGORY_ALTERNATIVE.
+    Intent intent = new Intent(null, dataUri);
+    intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
+
+    // Search and populate the menu with acceptable offering applications.
+    menu.addIntentOptions(
+         R.id.intent_group,  // Menu group to which new items will be added
+         0,      // Unique item ID (none)
+         0,      // Order for the items (none)
+         this.getComponentName(),   // The current activity name
+         null,   // Specific items to place first (none)
+         intent, // Intent created above that describes our requirements
+         0,      // Additional flags to control items (none)
+         null);  // Array of MenuItems that correlate to specific items (none)
+
+    return true;
+}</pre>
+
+<p>如果发现 Activity 提供的 Intent 过滤器与定义的 Intent 匹配,则会添加菜单项,并使用 Intent 过滤器
+<code>android:label</code>
+中的值作为菜单项标题,使用应用图标作为菜单项图标。{@link android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+addIntentOptions()}
+方法将返回已添加的菜单项数量。</p>
+
+<p class="note"><strong>注:</strong>调用
+{@link
+android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+addIntentOptions()} 方法时,它将使用第一个参数中指定的菜单组替代所有菜单项。</p>
+
+
+<h3 id="AllowingToAdd">允许将 Activity 添加到其他菜单中</h3>
+
+<p>此外,您还可以为其他应用提供您的 Activity 服务,以便您的应用能够包含在其他应用的菜单中(与上述角色相反)。
+</p>
+
+<p>要包含在其他应用菜单中,您需要按常规方式定义 Intent 过滤器,但请确保为 Intent 过滤器类别添加
+{@link android.content.Intent#CATEGORY_ALTERNATIVE}
+和/或 {@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE}
+值。例如:</p>
+<pre>
+&lt;intent-filter label="&#64;string/resize_image">
+    ...
+    &lt;category android:name="android.intent.category.ALTERNATIVE" />
+    &lt;category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
+    ...
+&lt;/intent-filter>
+</pre>
+
+<p>请仔细阅读<a href="/guide/components/intents-filters.html"> Intent 和 Intent 过滤器</a>文档中更多有关编写 Intent 过滤器的内容。
+</p>
+
+<p>有关使用此方法的应用示例,请参阅<a href="{@docRoot}resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html">记事本</a>示例代码。
+
+</p>
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/ui/notifiers/notifications.jd b/docs/html-intl/intl/zh-cn/guide/topics/ui/notifiers/notifications.jd
new file mode 100644
index 0000000..c0bd74c
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/notifiers/notifications.jd
@@ -0,0 +1,979 @@
+page.title=通知
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>本文内容</h2>
+<ol>
+  <li><a href="#Design">设计注意事项</a></li>
+  <li><a href="#CreateNotification">创建通知</a>
+    <ol>
+      <li><a href="#Required">必需的通知内容</a></li>
+      <li><a href="#Optional">可选通知内容和设置</a></li>
+      <li><a href="#Actions">通知操作</a></li>
+      <li><a href="#Priority">通知优先级</a></li>
+      <li><a href="#SimpleNotification">创建简单通知</a></li>
+      <li><a href="#ApplyStyle">将扩展布局应用于通知</a></li>
+      <li><a href="#Compatibility">处理兼容性</a></li>
+    </ol>
+  </li>
+  <li><a href="#Managing">管理通知</a>
+    <ol>
+      <li><a href="#Updating">更新通知</a></li>
+      <li><a href="#Removing">删除通知</a></li>
+    </ol>
+  </li>
+  <li><a href="#NotificationResponse">启动 Activity 时保留导航</a>
+    <ol>
+      <li><a href="#DirectEntry">设置常规 Activity PendingIntent</a></li>
+      <li><a href="#ExtendedNotification">设置特殊 Activity PendingIntent</a></li>
+    </ol>
+  </li>
+  <li><a href="#Progress">在通知中显示进度</a>
+    <ol>
+      <li><a href="#FixedProgress">显示持续时间固定的进度指示器</a></li>
+      <li><a href="#ActivityIndicator">显示持续 Activity 指示器</a></li>
+    </ol>
+  </li>
+  <li><a href="#metadata">通知元数据</a></li>
+  <li><a href="#Heads-up">浮动通知</a></li>
+  <li><a href="#lockscreenNotification">锁定屏幕通知</a></li>
+    <ol>
+      <li><a href="#visibility">设置可见性</a></li>
+      <li><a href="#controllingMedia">在锁定屏幕上控制媒体播放</a></li>
+    </ol>
+  <li><a href="#CustomNotification">自定义通知布局</a></li>
+</ol>
+
+    <h2>关键类</h2>
+    <ol>
+        <li>{@link android.app.NotificationManager}</li>
+        <li>{@link android.support.v4.app.NotificationCompat}</li>
+    </ol>
+    <h2>视频</h2>
+    <ol>
+        <li>
+            <a href="http://www.youtube.com/watch?v=Yc8YrVc47TI&amp;feature=player_detailpage#t=1672s">
+            4.1 中的通知</a>
+        </li>
+    </ol>
+<h2>另请参阅</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}design/patterns/notifications.html">Android 设计:通知</a>
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    通知是您可以在应用的常规
+UI
+外部向用户显示的消息。当您告知系统发出通知时,它将先以图标的形式显示在<strong>通知区域</strong>中。用户可以打开<strong>抽屉式通知栏</strong>查看通知的详细信息。
+通知区域和抽屉式通知栏均是由系统控制的区域,用户可以随时查看。
+
+</p>
+<img id="figure1" src="{@docRoot}images/ui/notifications/notification_area.png" height="" alt="" />
+<p class="img-caption">
+    <strong>图 1. </strong>通知区域中的通知。
+</p>
+<img id="figure2" src="{@docRoot}images/ui/notifications/notification_drawer.png" width="280px" alt="" />
+<p class="img-caption">
+    <strong>图 2. </strong>抽屉式通知栏中的通知。
+</p>
+
+<p class="note"><strong>注:</strong>除非特别注明,否则本指南均引用版本
+4 <a href="{@docRoot}tools/support-library/index.html">支持库</a>中的 {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder}
+类。Android
+3.0(API 级别 11)中已添加类
+{@link android.app.Notification.Builder Notification.Builder}。</p>
+
+<h2 id="Design">设计注意事项</h2>
+
+<p>作为 Android 用户界面的一个重要组成部分,通知具有自己的设计指导方针。Android
+5.0(API 级别 21)中引入的材料设计变更尤为重要,您应查阅<a href="{@docRoot}training/material/index.html">材料设计</a>培训资料了解详细信息。
+
+要了解如何设计通知及其交互,请阅读<a href="{@docRoot}design/patterns/notifications.html">通知</a>设计指南。
+</p>
+
+<h2 id="CreateNotification">创建通知</h2>
+
+<p>您可以在
+{@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder}
+对象中为通知指定 UI 信息和操作。要创建通知,请调用
+{@link android.support.v4.app.NotificationCompat.Builder#build NotificationCompat.Builder.build()},它将返回包含您的具体规范的
+{@link android.app.Notification} 对象。要发出通知,请通过调用
+{@link android.app.NotificationManager#notify NotificationManager.notify()} 将 {@link android.app.Notification}
+对象传递给系统。</p>
+
+<h3 id="Required">必需的通知内容</h3>
+<p>
+    {@link android.app.Notification} 对象必须包含以下内容:<em></em>
+</p>
+<ul>
+    <li>
+        小图标,由
+{@link android.support.v4.app.NotificationCompat.Builder#setSmallIcon setSmallIcon()} 设置
+    </li>
+    <li>
+        标题,由
+{@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()} 设置
+    </li>
+    <li>
+        详细文本,由
+{@link android.support.v4.app.NotificationCompat.Builder#setContentText setContentText()} 设置
+    </li>
+</ul>
+<h3 id="Optional">可选通知内容和设置</h3>
+<p>
+    所有其他通知设置和内容都是可选的。如需了解有关它们的更多详情,请参阅
+{@link android.support.v4.app.NotificationCompat.Builder} 参考文档。
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Actions">通知操作</h3>
+<p>
+    尽管通知操作都是可选的,但是您至少应向通知添加一个操作。
+    操作允许用户直接从通知转到应用中的
+{@link android.app.Activity},他们可在其中查看一个或多个事件或执行进一步的操作。
+
+</p>
+<p>
+    一个通知可以提供多个操作。您应该始终定义一个当用户点击通知时会触发的操作;通常,此操作会在应用中打开
+{@link android.app.Activity}。
+您也可以向通知添加按钮来执行其他操作,例如,暂停闹铃或立即答复短信;此功能自
+Android
+4.1 起可用。如果使用其他操作按钮,则您还必须使这些按钮的功能在应用的
+{@link android.app.Activity}
+中可用;请参阅<a href="#Compatibility">处理兼容性</a>部分,以了解更多详情。
+</p>
+<p>
+    在 {@link android.app.Notification} 内部,操作本身由
+{@link android.app.PendingIntent} 定义,后者包含在应用中启动
+{@link android.app.Activity}
+的 {@link android.content.Intent}。要将
+{@link android.app.PendingIntent} 与手势相关联,请调用
+{@link android.support.v4.app.NotificationCompat.Builder} 的适当方法。例如,如果您要在用户点击抽屉式通知栏中的通知文本时启动
+{@link android.app.Activity},则可通过调用
+{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent setContentIntent()}
+来添加 {@link android.app.PendingIntent}。
+</p>
+<p>
+    在用户点击通知时启动 {@link android.app.Activity}
+是最常见的操作场景。此外,您还可以在用户清除通知时启动
+{@link android.app.Activity}。在 Android 4.1 及更高版本中,您可以通过操作按钮启动
+{@link android.app.Activity}。如需了解更多信息,请阅读参考指南的
+{@link android.support.v4.app.NotificationCompat.Builder} 部分。
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Priority">通知优先级</h3>
+<p>
+    您可以根据需要设置通知的优先级。优先级充当一个提示,提醒设备
+UI 应该如何显示通知。
+    要设置通知的优先级,请调用 {@link
+    android.support.v4.app.NotificationCompat.Builder#setPriority(int)
+    NotificationCompat.Builder.setPriority()} 并传入一个 {@link
+    android.support.v4.app.NotificationCompat} 优先级常量。有五个优先级别,范围从 {@link
+    android.support.v4.app.NotificationCompat#PRIORITY_MIN} (-2) 到 {@link
+    android.support.v4.app.NotificationCompat#PRIORITY_MAX} (2);如果未设置,则优先级默认为 {@link
+    android.support.v4.app.NotificationCompat#PRIORITY_DEFAULT} (0)。
+
+
+</p>
+<p> 有关设置适当优先级别的信息,请参阅<a href="{@docRoot}design/patterns/notifications.html">通知</a>设计指南中的“正确设置和管理通知优先级”。
+
+
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="SimpleNotification">创建简单通知</h3>
+<p>
+    以下代码段说明了一个指定某项 Activity 在用户点击通知时打开的简单通知。
+请注意,该代码将创建
+{@link android.support.v4.app.TaskStackBuilder} 对象并使用它来为操作创建
+{@link android.app.PendingIntent}。<a href="#NotificationResponse">启动 Activity 时保留导航</a>部分对此模式做了更详尽的阐述:
+
+
+</p>
+<pre>
+NotificationCompat.Builder mBuilder =
+        new NotificationCompat.Builder(this)
+        .setSmallIcon(R.drawable.notification_icon)
+        .setContentTitle("My notification")
+        .setContentText("Hello World!");
+// Creates an explicit intent for an Activity in your app
+Intent resultIntent = new Intent(this, ResultActivity.class);
+
+// The stack builder object will contain an artificial back stack for the
+// started Activity.
+// This ensures that navigating backward from the Activity leads out of
+// your application to the Home screen.
+TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
+// Adds the back stack for the Intent (but not the Intent itself)
+stackBuilder.addParentStack(ResultActivity.class);
+// Adds the Intent that starts the Activity to the top of the stack
+stackBuilder.addNextIntent(resultIntent);
+PendingIntent resultPendingIntent =
+        stackBuilder.getPendingIntent(
+            0,
+            PendingIntent.FLAG_UPDATE_CURRENT
+        );
+mBuilder.setContentIntent(resultPendingIntent);
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// mId allows you to update the notification later on.
+mNotificationManager.notify(mId, mBuilder.build());
+</pre>
+<p>就这么简单。您的用户现已收到通知。</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ApplyStyle">将扩展布局应用于通知</h3>
+<p>
+    要使通知出现在展开视图中,请先创建一个带有所需普通视图选项的
+{@link android.support.v4.app.NotificationCompat.Builder}
+对象。接下来,调用以扩展布局对象作为其参数的 {@link android.support.v4.app.NotificationCompat.Builder#setStyle
+    Builder.setStyle()}。
+</p>
+<p>
+    请记住,扩展通知在 Android 4.1 之前的平台上不可用。要了解如何处理针对
+Android 4.1 及更早版本平台的通知,请阅读<a href="#Compatibility">处理兼容性</a>部分。
+
+</p>
+<p>
+    例如,以下代码段演示了如何更改在前面的代码段中创建的通知,以便使用扩展布局:
+
+</p>
+<pre>
+NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
+    .setSmallIcon(R.drawable.notification_icon)
+    .setContentTitle("Event tracker")
+    .setContentText("Events received")
+NotificationCompat.InboxStyle inboxStyle =
+        new NotificationCompat.InboxStyle();
+String[] events = new String[6];
+// Sets a title for the Inbox in expanded layout
+inboxStyle.setBigContentTitle("Event tracker details:");
+...
+// Moves events into the expanded layout
+for (int i=0; i &lt; events.length; i++) {
+
+    inboxStyle.addLine(events[i]);
+}
+// Moves the expanded layout object into the notification object.
+mBuilder.setStyle(inBoxStyle);
+...
+// Issue the notification here.
+</pre>
+
+<h3 id="Compatibility">处理兼容性</h3>
+
+<p>
+    并非所有通知功能都可用于某特定版本,即便用于设置这些功能的方法位于支持库类
+{@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder}
+中也是如此。
+    例如,依赖于扩展通知的操作按钮仅会显示在 Android
+4.1 及更高版本的系统中,这是因为扩展通知本身仅在
+Android 4.1 及更高版本的系统中可用。
+</p>
+<p>
+    为了确保最佳兼容性,请使用
+{@link android.support.v4.app.NotificationCompat NotificationCompat} 及其子类(特别是
+{@link android.support.v4.app.NotificationCompat.Builder
+    NotificationCompat.Builder})创建通知。此外,在实现通知时,请遵循以下流程:
+</p>
+<ol>
+    <li>
+        为所有用户提供通知的全部功能,无论他们使用何种版本的 Android 系统。
+为此,请验证是否可从应用的
+{@link android.app.Activity} 中获得所有功能。要执行此操作,您可能需要添加新的
+{@link android.app.Activity}。
+        <p>
+            例如,若要使用
+{@link android.support.v4.app.NotificationCompat.Builder#addAction addAction()} 提供停止和启动媒体播放的控件,请先在应用的
+{@link android.app.Activity}
+中实现此控件。
+        </p>
+    </li>
+    <li>
+        确保所有用户均可通过点击通知启动 {@link android.app.Activity} 来获得该Activity中的功能。
+为此,请为
+{@link android.app.Activity}
+创建 {@link android.app.PendingIntent}。调用
+{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+        setContentIntent()} 以将 {@link android.app.PendingIntent} 添加到通知。
+    </li>
+    <li>
+        现在,将要使用的扩展通知功能添加到通知。请记住,您添加的任何功能还必须在用户点击通知时启动的
+{@link android.app.Activity}
+中可用。
+    </li>
+</ol>
+
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="Managing">管理通知</h2>
+<p>
+    当您需要为同一类型的事件多次发出同一通知时,应避免创建全新的通知,
+而是应考虑通过更改之前通知的某些值和/或为其添加某些值来更新通知。
+
+</p>
+<p>
+    例如,Gmail 通过增加未读消息计数并将每封电子邮件的摘要添加到通知,通知用户收到了新的电子邮件。
+这称为“堆叠”通知;<a href="{@docRoot}design/patterns/notifications.html">通知</a>设计指南对此进行了更详尽的描述。
+
+
+</p>
+<p class="note">
+    <strong>注:</strong>此 
+Gmail 功能需要“收件箱”扩展布局,该布局是自 Android 4.1 版本起可用的扩展通知功能的一部分。
+</p>
+<p>
+    下文介绍如何更新和删除通知。
+</p>
+<h3 id="Updating">更新通知</h3>
+<p>
+    要将通知设置为能够更新,请通过调用
+{@link android.app.NotificationManager#notify(int, android.app.Notification) NotificationManager.notify()} 发出带有通知 ID 的通知。
+    要在发出之后更新此通知,请更新或创建
+{@link android.support.v4.app.NotificationCompat.Builder}
+对象,从该对象构建 {@link android.app.Notification} 对象,并发出与之前所用 ID 相同的
+{@link android.app.Notification}。如果之前的通知仍然可见,则系统会根据
+{@link android.app.Notification}
+对象的内容更新该通知。相反,如果之前的通知已被清除,系统则会创建一个新通知。
+
+</p>
+<p>
+    以下代码段演示了经过更新以反映所发生事件数量的通知。
+它将通知堆叠并显示摘要:
+</p>
+<pre>
+mNotificationManager =
+        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// Sets an ID for the notification, so it can be updated
+int notifyID = 1;
+mNotifyBuilder = new NotificationCompat.Builder(this)
+    .setContentTitle("New Message")
+    .setContentText("You've received new messages.")
+    .setSmallIcon(R.drawable.ic_notify_status)
+numMessages = 0;
+// Start of a loop that processes data and then notifies the user
+...
+    mNotifyBuilder.setContentText(currentText)
+        .setNumber(++numMessages);
+    // Because the ID remains unchanged, the existing notification is
+    // updated.
+    mNotificationManager.notify(
+            notifyID,
+            mNotifyBuilder.build());
+...
+</pre>
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Removing">删除通知</h3>
+<p>
+    除非发生以下情况之一,否则通知仍然可见:
+</p>
+<ul>
+    <li>
+        用户单独或通过使用“全部清除”清除了该通知(如果通知可以清除)。
+
+    </li>
+    <li>
+        用户点击通知,且您在创建通知时调用了
+{@link android.support.v4.app.NotificationCompat.Builder#setAutoCancel setAutoCancel()}。
+
+    </li>
+    <li>
+        您针对特定的通知 ID 调用了
+{@link android.app.NotificationManager#cancel(int) cancel()}。此方法还会删除当前通知。
+    </li>
+    <li>
+        您调用了
+{@link android.app.NotificationManager#cancelAll() cancelAll()} 方法,该方法将删除之前发出的所有通知。
+    </li>
+</ul>
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="NotificationResponse">启动 Activity 时保留导航</h2>
+<p>
+    从通知中启动
+{@link android.app.Activity} 时,您必须保留用户的预期导航体验。  <i> </i> 点击“返回”应该使用户将应用的正常工作流回退到主屏幕,而点击“最新动态”则应将
+ <i> </i> {@link android.app.Activity} 显示为单独的任务。
+要保留导航体验,您应该在全新任务中启动
+{@link android.app.Activity}。如何设置
+{@link android.app.PendingIntent} 以获得全新任务取决于正在启动的
+{@link android.app.Activity} 的性质。一般有两种情况:
+</p>
+<dl>
+    <dt>
+        常规 Activity
+    </dt>
+    <dd>
+        您要启动的
+{@link android.app.Activity} 是应用的正常工作流的一部分。在这种情况下,请设置 {@link android.app.PendingIntent}
+以启动全新任务并为
+{@link android.app.PendingIntent}提供返回栈,这将重现应用的正常“返回”行为。 <i> </i>  
+        <p>
+            Gmail 应用中的通知演示了这一点。点击一封电子邮件消息的通知时,您将看到消息具体内容。
+触摸<b>返回</b>将使您从
+Gmail 回退到主屏幕,就好像您是从主屏幕(而不是通知)进入
+Gmail 一样。
+        </p>
+        <p>
+            无论您触摸通知时处于哪个应用,都会发生这种情况。
+例如,如果您在
+Gmail 中撰写消息时点击了一封电子邮件的通知,则会立即转到该电子邮件。  <i> </i>
+            触摸“返回”会依次转到收件箱和主屏幕,而不是转到您在撰写的邮件。
+
+        </p>
+    </dd>
+    <dt>
+        特殊 Activity
+    </dt>
+    <dd>
+        仅当从通知中启动时,用户才会看到此 {@link android.app.Activity}。
+        从某种意义上说,{@link android.app.Activity}
+是通过提供很难显示在通知本身中的信息来扩展通知。对于这种情况,请将
+{@link android.app.PendingIntent} 设置为在全新任务中启动。但是,由于启动的
+{@link android.app.Activity}
+不是应用 Activity 流程的一部分,因此无需创建返回栈。点击“返回”仍会将用户带到主屏幕。<i></i>
+
+    </dd>
+</dl>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="DirectEntry">设置常规 Activity PendingIntent</h3>
+<p>
+    要设置可启动直接进入 {@link android.app.Activity} 的
+{@link android.app.PendingIntent},请执行以下步骤:
+</p>
+<ol>
+    <li>
+        在清单文件中定义应用的 {@link android.app.Activity} 层次结构。
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                添加对 Android 4.0.3 及更低版本的支持。为此,请通过添加
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
+元素作为
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>的子项来指定正在启动的
+{@link android.app.Activity} 的父项。
+                <p>
+                    对于此元素,请设置
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a>="android.support.PARENT_ACTIVITY"</code>。
+                    设置
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#val">android:value</a>="&lt;parent_activity_name&gt;"</code>,其中,<code>&lt;parent_activity_name&gt;</code>
+是父
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+元素的
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a></code>
+值。请参阅下面的 XML 示例。
+                </p>
+            </li>
+            <li>
+                同样添加对 Android 4.1 及更高版本的支持。为此,请将
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#parent">android:parentActivityName</a></code>
+属性添加到正在启动的
+{@link android.app.Activity} 的
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 元素中。
+            </li>
+        </ol>
+        <p>
+            最终的 XML 应如下所示:
+        </p>
+<pre>
+&lt;activity
+    android:name=".MainActivity"
+    android:label="&#64;string/app_name" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+&lt;activity
+    android:name=".ResultActivity"
+    android:parentActivityName=".MainActivity"&gt;
+    &lt;meta-data
+        android:name="android.support.PARENT_ACTIVITY"
+        android:value=".MainActivity"/&gt;
+&lt;/activity&gt;
+</pre>
+    </li>
+    <li>
+        根据可启动
+{@link android.app.Activity} 的 {@link android.content.Intent} 创建返回栈:
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                创建 {@link android.content.Intent} 以启动 {@link android.app.Activity}。
+            </li>
+            <li>
+                通过调用 {@link android.app.TaskStackBuilder#create
+                TaskStackBuilder.create()} 创建堆栈生成器。
+            </li>
+            <li>
+                通过调用
+{@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()} 将返回栈添加到堆栈生成器。
+                对于在清单文件中所定义层次结构内的每个
+{@link android.app.Activity},返回栈均包含可启动 {@link android.app.Activity} 的
+{@link android.content.Intent} 对象。此方法还会添加一些可在全新任务中启动堆栈的标志。
+
+                <p class="note">
+                    <strong>注:</strong>尽管
+{@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}
+的参数是对已启动
+{@link android.app.Activity} 的引用,但是方法调用不会添加可启动 {@link android.app.Activity} 的
+{@link android.content.Intent},而是留待下一步进行处理。
+                </p>
+            </li>
+            <li>
+                通过调用
+{@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()},添加可从通知中启动 {@link android.app.Activity}
+的 {@link android.content.Intent}。
+                将在第一步中创建的 {@link android.content.Intent}
+作为
+{@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()} 的参数传递。
+            </li>
+            <li>
+                如需,请通过调用 {@link android.support.v4.app.TaskStackBuilder#editIntentAt
+                TaskStackBuilder.editIntentAt()} 向堆栈中的 {@link android.content.Intent}
+对象添加参数。有时,需要确保目标 {@link android.app.Activity} 在用户使用“返回”导航回它时会显示有意义的数据。
+
+ <i> </i> 
+            </li>
+            <li>
+                通过调用
+{@link android.support.v4.app.TaskStackBuilder#getPendingIntent getPendingIntent()} 获得此返回栈的 {@link android.app.PendingIntent}。
+                然后,您可以使用此 {@link android.app.PendingIntent} 作为
+{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+                setContentIntent()} 的参数。
+            </li>
+        </ol>
+     </li>
+</ol>
+<p>
+    以下代码段演示了该流程:
+</p>
+<pre>
+...
+Intent resultIntent = new Intent(this, ResultActivity.class);
+TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
+// Adds the back stack
+stackBuilder.addParentStack(ResultActivity.class);
+// Adds the Intent to the top of the stack
+stackBuilder.addNextIntent(resultIntent);
+// Gets a PendingIntent containing the entire back stack
+PendingIntent resultPendingIntent =
+        stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
+...
+NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+builder.setContentIntent(resultPendingIntent);
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+mNotificationManager.notify(id, builder.build());
+</pre>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ExtendedNotification">设置特殊 Activity PendingIntent</h3>
+<p>
+    下文介绍如何设置特殊 Activity
+{@link android.app.PendingIntent}。
+</p>
+<p>
+    特殊
+{@link android.app.Activity} 无需返回栈,因此您不必在清单文件中定义其
+{@link android.app.Activity} 层次结构,也不必调用
+{@link android.support.v4.app.TaskStackBuilder#addParentStack  addParentStack()}
+来构建返回栈。取而代之的是,您可使用清单文件设置
+{@link android.app.Activity} 任务选项,并通过调用 {@link android.app.PendingIntent#getActivity getActivity()}
+创建 {@link android.app.PendingIntent}:
+</p>
+<ol>
+    <li>
+        在清单文件中,将以下属性添加到 {@link android.app.Activity} 的
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+元素
+        <dl>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#nm">android:name</a>="<i>activityclass</i>"</code>
+            </dt>
+            <dd>
+                Activity 的完全限定类名。
+            </dd>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">android:taskAffinity</a>=""</code>
+            </dt>
+            <dd>
+                与您在代码中设置的
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK}
+标志相结合,这可确保此 {@link android.app.Activity}
+不会进入应用的默认任务。任何具有应用默认关联的现有任务均不受影响。
+
+            </dd>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">android:excludeFromRecents</a>="true"</code>
+            </dt>
+            <dd>
+                  <i> </i>将新任务从“最新动态”中排除,这样用户就不会在无意中导航回它。
+
+            </dd>
+        </dl>
+        <p>
+            以下代码段显示了该元素:
+        </p>
+<pre>
+&lt;activity
+    android:name=".ResultActivity"
+...
+    android:launchMode="singleTask"
+    android:taskAffinity=""
+    android:excludeFromRecents="true"&gt;
+&lt;/activity&gt;
+...
+</pre>
+    </li>
+    <li>
+        构建并发出通知:
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                创建可启动 {@link android.app.Activity}的
+{@link android.content.Intent}。
+            </li>
+            <li>
+                通过使用
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK}
+和
+{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TASK FLAG_ACTIVITY_CLEAR_TASK} 标志调用
+{@link android.content.Intent#setFlags setFlags()},将 {@link android.app.Activity} 设置为在新的空任务中启动。
+            </li>
+            <li>
+                为 {@link android.content.Intent} 设置所需的任何其他选项。
+            </li>
+            <li>
+                通过调用
+{@link android.app.PendingIntent#getActivity getActivity()} 从 {@link android.content.Intent} 中创建 {@link android.app.PendingIntent}。
+                然后,您可以使用此 {@link android.app.PendingIntent} 作为
+{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+                setContentIntent()} 的参数。
+            </li>
+        </ol>
+    <p>
+        以下代码段演示了该流程:
+    </p>
+<pre>
+// Instantiate a Builder object.
+NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+// Creates an Intent for the Activity
+Intent notifyIntent =
+        new Intent(this, ResultActivity.class);
+// Sets the Activity to start in a new, empty task
+notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+                        | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+// Creates the PendingIntent
+PendingIntent notifyPendingIntent =
+        PendingIntent.getActivity(
+        this,
+        0,
+        notifyIntent,
+        PendingIntent.FLAG_UPDATE_CURRENT
+);
+
+// Puts the PendingIntent into the notification builder
+builder.setContentIntent(notifyPendingIntent);
+// Notifications are issued by sending them to the
+// NotificationManager system service.
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// Builds an anonymous Notification object from the builder, and
+// passes it to the NotificationManager
+mNotificationManager.notify(id, builder.build());
+</pre>
+    </li>
+</ol>
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="Progress">在通知中显示进度</h2>
+<p>
+    通知可能包括动画形式的进度指示器,向用户显示正在进行的操作状态。
+如果您可以估计操作所需的时间以及任意时刻的完成进度,则使用“限定”形式的指示器(进度栏)。
+
+如果无法估计操作的时长,则使用“非限定”形式的指示器(Activity 指示器)。
+
+</p>
+<p>
+    平台的
+{@link android.widget.ProgressBar} 类实现中显示有进度指示器。
+</p>
+<p>
+    要在 Android 4.0 及更高版本的平台上使用进度指示器,需调用
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}。对于早期版本,您必须创建包括 {@link android.widget.ProgressBar}
+视图的自定义通知布局。
+
+</p>
+<p>
+    下文介绍如何使用
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()} 在通知中显示进度。
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="FixedProgress">显示持续时间固定的进度指示器</h3>
+<p>
+    要显示限定形式的进度栏,请通过调用
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress
+    setProgress(max, progress, false)} 将进度栏添加到通知,然后发出通知。随着操作继续进行,递增
+<code>progress</code> 并更新通知。操作结束时,
+<code>progress</code> 应该等于 <code>max</code>。调用
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()}
+的常见方法是将 <code>max</code> 设置为 100,然后将 <code>progress</code>
+作为操作的“完成百分比”值递增。
+</p>
+<p>
+    您可以在操作完成后仍保留显示进度栏,也可以将其删除。无论哪种情况,都请记住更新通知文本以显示操作已完成。
+
+    要删除进度栏,请调用
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress
+    setProgress(0, 0, false)}。例如:
+</p>
+<pre>
+...
+mNotifyManager =
+        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+mBuilder = new NotificationCompat.Builder(this);
+mBuilder.setContentTitle("Picture Download")
+    .setContentText("Download in progress")
+    .setSmallIcon(R.drawable.ic_notification);
+// Start a lengthy operation in a background thread
+new Thread(
+    new Runnable() {
+        &#64;Override
+        public void run() {
+            int incr;
+            // Do the "lengthy" operation 20 times
+            for (incr = 0; incr &lt;= 100; incr+=5) {
+                    // Sets the progress indicator to a max value, the
+                    // current completion percentage, and "determinate"
+                    // state
+                    mBuilder.setProgress(100, incr, false);
+                    // Displays the progress bar for the first time.
+                    mNotifyManager.notify(0, mBuilder.build());
+                        // Sleeps the thread, simulating an operation
+                        // that takes time
+                        try {
+                            // Sleep for 5 seconds
+                            Thread.sleep(5*1000);
+                        } catch (InterruptedException e) {
+                            Log.d(TAG, "sleep failure");
+                        }
+            }
+            // When the loop is finished, updates the notification
+            mBuilder.setContentText("Download complete")
+            // Removes the progress bar
+                    .setProgress(0,0,false);
+            mNotifyManager.notify(ID, mBuilder.build());
+        }
+    }
+// Starts the thread by calling the run() method in its Runnable
+).start();
+</pre>
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ActivityIndicator">显示持续 Activity 指示器</h3>
+<p>
+    要显示非限定形式的 Activity 指示器,请使用
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, true)}
+将其添加到通知(忽略前两个参数),然后发出通知。这样一来,指示器的样式就与进度栏相同,只是其动画还在继续。
+
+</p>
+<p>
+    在操作开始之际发出通知。除非您修改通知,否则动画将一直运行。
+操作完成后,调用
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, false)},然后更新通知以删除 Activity 指示器。
+
+    请务必这样做;否则,即使操作完成,动画仍将运行。同时,请记得更改通知文本,以表明操作已完成。
+
+</p>
+<p>
+    要了解 Activity 指示器的工作方式,请参阅上述代码段。找到以下几行:
+</p>
+<pre>
+// Sets the progress indicator to a max value, the current completion
+// percentage, and "determinate" state
+mBuilder.setProgress(100, incr, false);
+// Issues the notification
+mNotifyManager.notify(0, mBuilder.build());
+</pre>
+<p>
+    将找到的这几行替换为以下几行:
+</p>
+<pre>
+ // Sets an activity indicator for an operation of indeterminate length
+mBuilder.setProgress(0, 0, true);
+// Issues the notification
+mNotifyManager.notify(0, mBuilder.build());
+</pre>
+
+<h2 id="metadata">通知元数据</h2>
+
+<p>通知可根据您使用以下
+{@link android.support.v4.app.NotificationCompat.Builder} 方法分配的元数据进行排序:</p>
+
+<ul>
+    <li>当设备处于“优先”模式时,{@link android.support.v4.app.NotificationCompat.Builder#setCategory(java.lang.String) setCategory()}
+会告知系统如何处理应用通知(例如,通知代表传入呼叫、即时消息还是闹铃)。
+</li>
+    <li>如果优先级字段设置为
+{@code PRIORITY_MAX} 或 {@code PRIORITY_HIGH} 的通知还有声音或振动,则 {@link android.support.v4.app.NotificationCompat.Builder#setPriority(int) setPriority()}
+会将其显示在小型浮动窗口中。</li>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#addPerson(java.lang.String) addPerson()}
+允许您向通知添加人员名单。您的应用可以使用此名单指示系统将指定人员发出的通知归成一组,或者将这些人员发出的通知视为更重要的通知。
+
+</li>
+</ul>
+
+<div class="figure" style="width:230px">
+  <img src="{@docRoot}images/ui/notifications/heads-up.png" alt="" width="" height="" id="figure3" />
+  <p class="img-caption">
+    <strong>图 3. </strong>显示浮动通知的全屏 Activity
+  </p>
+</div>
+
+<h2 id="Heads-up">浮动通知</h2>
+
+<p>对于 Android 5.0(API 级别 21),当设备处于活动状态时(即,设备未锁定且其屏幕已打开),通知可以显示在小型浮动窗口中(也称为“浮动通知”)。<em></em>
+
+这些通知看上去类似于精简版的通知​​,只是浮动通知还显示操作按钮。
+
+用户可以在不离开当前应用的情况下处理或清除浮动通知。
+</p>
+
+<p>可能触发浮动通知的条件示例包括:</p>
+
+<ul>
+  <li>用户的 Activity 处于全屏模式中(应用使用
+{@link android.app.Notification#fullScreenIntent}),或者</li>
+  <li>通知具有较高的优先级并使用铃声或振动
+</li>
+</ul>
+
+<h2 id="lockscreenNotification">锁定屏幕通知</h2>
+
+<p>随着
+Android 5.0(API 级别 21)的发布,通知现在还可显示在锁定屏幕上。您的应用可以使用此功能提供媒体播放控件以及其他常用操作。
+用户可以通过“设置”选择是否将通知显示在锁定屏幕上,并且您可以指定您应用中的通知在锁定屏幕上是否可见。
+</p>
+
+<h3 id="visibility">设置可见性</h3>
+
+<p>您的应用可以控制在安全锁定屏幕上显示的通知中可见的详细级别。
+调用 {@link android.support.v4.app.NotificationCompat.Builder#setVisibility(int) setVisibility()}
+并指定以下值之一:</p>
+
+<ul>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}
+显示通知的完整内容。</li>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_SECRET}
+不会在锁定屏幕上显示此通知的任何部分。</li>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE}
+显示通知图标和内容标题等基本信息,但是隐藏通知的完整内容。</li>
+</ul>
+
+<p>设置 {@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE}
+后,您还可以提供其中隐藏了某些详细信息的替换版本通知内容。例如,短信
+应用可能会显示一条通知,指出“您有
+3 条新短信”,但是隐藏了短信内容和发件人。<em></em>要提供此替换版本的通知,请先使用
+{@link android.support.v4.app.NotificationCompat.Builder} 创建替换通知。创建专用通知对象时,请通过
+{@link android.support.v4.app.NotificationCompat.Builder#setPublicVersion(android.app.Notification) setPublicVersion()}
+方法为其附加替换通知。
+</p>
+
+<h3 id="controllingMedia">在锁定屏幕上控制媒体播放</h3>
+
+<p>在 Android 5.0(API 级别 21)中,锁定屏幕不再基于
+{@link android.media.RemoteControlClient}(现已弃用)显示媒体控件。取而代之的是,将
+{@link android.app.Notification.MediaStyle} 模板与
+{@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
+方法结合使用,后者可将操作转换为可点击的图标。</p>
+
+<p class="note"><strong>注:</strong>该模板和
+{@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()}
+方法未包含在支持库中,因此这些功能只能在 Android 5.0 及更高版本的系统上运行。</p>
+
+<p>要在 Android 5.0 系统的锁定屏幕上显示媒体播放控件,请将可见性设置为
+{@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC},如上文所述。然后,添加操作并设置
+{@link android.app.Notification.MediaStyle}
+模板,如以下示例代码中所述:</p>
+
+<pre>
+Notification notification = new Notification.Builder(context)
+    // Show controls on lock screen even when user hides sensitive content.
+    .setVisibility(Notification.VISIBILITY_PUBLIC)
+    .setSmallIcon(R.drawable.ic_stat_player)
+    // Add media control buttons that invoke intents in your media service
+    .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0
+    .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent)  // #1
+    .addAction(R.drawable.ic_next, "Next", nextPendingIntent)     // #2
+    // Apply the media style template
+    .setStyle(new Notification.MediaStyle()
+    .setShowActionsInCompactView(1 /* #1: pause button */)
+    .setMediaSession(mMediaSession.getSessionToken())
+    .setContentTitle("Wonderful music")
+    .setContentText("My Awesome Band")
+    .setLargeIcon(albumArtBitmap)
+    .build();
+</pre>
+
+<p class="note"><strong>注:</strong>弃用 {@link android.media.RemoteControlClient}
+会对控制媒体产生进一步的影响。如需了解有关用于管理媒体会话和控制播放的新 API 的详细信息,请参阅<a href="{@docRoot}about/versions/android-5.0.html#MediaPlaybackControl">媒体播放控件</a>。
+
+</p>
+
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="CustomNotification">自定义通知布局</h2>
+<p>
+    您可以利用通知框架定义自定义通知布局,由该布局定义通知在
+{@link android.widget.RemoteViews} 对象中的外观。
+    自定义布局通知类似于常规通知,但是它们是基于 XML 布局文件中所定义的
+{@link android.widget.RemoteViews}。
+</p>
+<p>
+    自定义通知布局的可用高度取决于通知视图。普通视图布局限制为
+64 dp,扩展视图布局限制为 256 dp。
+</p>
+<p>
+    要定义自定义通知布局,请首先实例化
+{@link android.widget.RemoteViews} 对象来扩充 XML 布局文件。然后,调用
+{@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()},而不是调用
+{@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()}
+等方法。要在自定义通知中设置内容详细信息,请使用
+{@link android.widget.RemoteViews}
+中的方法设置视图子项的值:
+</p>
+<ol>
+    <li>
+        在单独的文件中为通知创建 XML 布局。您可以根据需要使用任何文件名,但必须使用扩展名
+<code>.xml</code>。
+    </li>
+    <li>
+        在您的应用中,使用 {@link android.widget.RemoteViews}
+方法定义通知的图标和文本。通过调用
+{@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()} 将此 {@link android.widget.RemoteViews} 对象放入
+{@link android.support.v4.app.NotificationCompat.Builder} 中。避免在
+{@link android.widget.RemoteViews} 对象上设置背景
+{@link android.graphics.drawable.Drawable},因为文本颜色可能使文本变得难以阅读。
+    </li>
+</ol>
+<p>
+    此外,{@link android.widget.RemoteViews} 类中还有一些方法可供您轻松将
+{@link android.widget.Chronometer} 或 {@link android.widget.ProgressBar}
+添加到通知布局。如需了解有关为通知创建自定义布局的详细信息,请参阅
+{@link android.widget.RemoteViews} 参考文档。
+</p>
+<p class="caution">
+    <strong>注意:</strong>使用自定义通知布局时,要特别注意确保自定义布局适用于不同的设备方向和分辨率。
+尽管这条建议适用于所有“视图”布局,但对通知尤为重要,因为抽屉式通知栏中的空间非常有限。
+
+不要让自定义布局过于复杂,同时确保在各种配置中对其进行测试。
+
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h4>对自定义通知文本使用样式资源</h4>
+<p>
+    始终对自定义通知的文本使用样式资源。通知的背景颜色可能因设备和系统版本的不同而异,使用样式资源有助于您充分考虑到这一点。
+
+从
+Android 2.3 开始,系统定义了标准通知布局文本的样式。若要在面向 Android
+2.3 或更高版本系统的多个应用中使用相同样式,则应确保文本在显示背景上可见。
+</p>
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/ui/overview.jd b/docs/html-intl/intl/zh-cn/guide/topics/ui/overview.jd
new file mode 100644
index 0000000..5097c76
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/overview.jd
@@ -0,0 +1,71 @@
+page.title=UI 概览
+@jd:body
+
+
+<p>Android 应用中的所有用户界面元素都是使用 {@link android.view.View} 和
+{@link android.view.ViewGroup} 对象构建而成。{@link android.view.View}
+对象用于在屏幕上绘制可供用户交互的内容。{@link android.view.ViewGroup}
+对象用于储存其他 {@link android.view.View}(和
+{@link android.view.ViewGroup})对象,以便定义界面的局部。</p>
+
+<p>Android 提供了一系列
+{@link android.view.View} 和 {@link
+android.view.ViewGroup} 子类,可为您提供常用输入控件(如按钮和文本字段)和各种布局模式(如线性布局或相对布局)。</p>
+
+
+<h2 id="Layout">用户界面布局</h2>
+
+<p>如图 1 所示,每个应用组件的用户界面都是使用 {@link
+android.view.View} 和 {@link android.view.ViewGroup} 对象的层次结构定义的。每个视图组都是一个用于组织子视图的不可见容器,而子视图可以是输入控件或其他可绘制某一
+UI
+部分的小工具。此层次结构树可繁可简,随需而定(但是简单的结构可提供最佳性能)。
+
+</p>
+
+<img src="{@docRoot}images/viewgroup.png" alt="" />
+<p class="img-caption"><strong>图 1. </strong>视图层次结构的图示,它定义了一个 UI
+布局。</p>
+
+<p>要声明布局,您可以实例化代码中的 {@link android.view.View} 对象并开始构建树,但是定义布局最简单且最有效的方法是使用 XML
+文件。如同 HTML 一样,XML
+也为布局提供了一种用户可读结构。</p>
+
+<p>视图的 XML 元素名称与其代表的 Android 类相对应。因此,
+<code>&lt;TextView&gt;</code> 元素用于在 UI 中创建一个 {@link android.widget.TextView} 小工具,而
+<code>&lt;LinearLayout&gt;</code> 元素用于创建一个 {@link android.widget.LinearLayout}
+视图组。 </p>
+
+<p>例如,包含文本视图和按钮的简单垂直布局如下所示:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="fill_parent" 
+              android:layout_height="fill_parent"
+              android:orientation="vertical" >
+    &lt;TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="I am a TextView" />
+    &lt;Button android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="I am a Button" />
+&lt;/LinearLayout>
+</pre>
+
+<p>在应用中加载布局资源时,Android
+会将布局的每个节点初始化为运行时对象,供您定义其他行为、查询对象状态或修改布局。
+</p>
+
+<p>有关创建 UI 布局的完整指南,请参阅 <a href="declaring-layout.html">XML
+布局</a>。
+
+  
+<h2 id="UIComponents">用户界面组件</h2>
+
+<p>您无需使用 {@link android.view.View} 和 {@link
+android.view.ViewGroup} 对象构建所有 UI。Android 提供了几个带有标准 UI 布局的应用组件,您只需定义内容。
+这些 UI
+组件均拥有一组唯一的 API,具体描述可参阅相应的文档,如<a href="{@docRoot}guide/topics/ui/actionbar.html">操作栏</a>、<a href="{@docRoot}guide/topics/ui/dialogs.html">对话框</a>和<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">状态通知</a>。</p>
+
+
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/ui/settings.jd b/docs/html-intl/intl/zh-cn/guide/topics/ui/settings.jd
new file mode 100644
index 0000000..f9be97b
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/settings.jd
@@ -0,0 +1,1202 @@
+page.title=设置
+page.tags=首选项,首选项 Activity,首选项片段
+
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本文内容</h2>
+<ol>
+  <li><a href="#Overview">概览</a>
+    <ol>
+      <li><a href="#SettingTypes">首选项</a></li>
+    </ol>
+  </li>
+  <li><a href="#DefiningPrefs">使用 XML 定义首选项</a>
+    <ol>
+      <li><a href="#Groups">创建设置组</a></li>
+      <li><a href="#Intents">使用 Intent </a></li>
+    </ol>
+  </li>
+  <li><a href="#Activity">创建首选项 Activity</a></li>
+  <li><a href="#Fragment">使用首选项片段</a></li>
+  <li><a href="#Defaults">设置默认值</a></li>
+  <li><a href="#PreferenceHeaders">使用首选项标头</a>
+    <ol>
+      <li><a href="#CreateHeaders">创建标头文件</a></li>
+      <li><a href="#DisplayHeaders">显示标头</a></li>
+      <li><a href="#BackCompatHeaders">使用首选项标头支持旧版本</a></li>
+    </ol>
+  </li>
+  <li><a href="#ReadingPrefs">读取首选项</a>
+    <ol>
+      <li><a href="#Listening">侦听首选项变更</a></li>
+    </ol>
+  </li>
+  <li><a href="#NetworkUsage">管理网络使用情况</a></li>
+  <li><a href="#Custom">构建自定义首选项</a>
+    <ol>
+      <li><a href="#CustomSelected">指定用户界面</a></li>
+      <li><a href="#CustomSave">保存设置的值</a></li>
+      <li><a href="#CustomInitialize">初始化当前值</a></li>
+      <li><a href="#CustomDefault">提供默认值</a></li>
+      <li><a href="#CustomSaveState">保存和恢复首选项的状态</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>关键类</h2>
+<ol>
+  <li>{@link android.preference.Preference}</li>
+  <li>{@link android.preference.PreferenceActivity}</li>
+  <li>{@link android.preference.PreferenceFragment}</li>
+</ol>
+
+
+<h2>另请参阅</h2>
+<ol>
+  <li><a href="{@docRoot}design/patterns/settings.html">设置设计指南</a></li>
+</ol>
+</div>
+</div>
+
+
+
+
+<p>应用通常包括允许用户修改应用特性和行为的设置。例如,有些应用允许用户指定是否启用通知,或指定应用与云端同步数据的频率。
+
+</p>
+
+<p>若要为应用提供设置,您应该使用
+Android 的 {@link android.preference.Preference} API
+构建一个与其他 Android 应用中的用户体验一致的界面(包括系统设置)。本文旨在介绍如何使用
+{@link android.preference.Preference} API 构建应用设置。</p>
+
+<div class="note design">
+<p><strong>设置设计</strong></p>
+  <p>有关如何设计设置的信息,请阅读<a href="{@docRoot}design/patterns/settings.html">设置</a>设计指南。</p>
+</div>
+
+
+<img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
+<p class="img-caption"><strong>图 1. </strong>来自 Android 信息应用的设置的屏幕截图。
+选择由 {@link android.preference.Preference}
+定义的项目将打开一个用于更改设置的界面。</p>
+
+
+
+
+<h2 id="Overview">概览</h2>
+
+<p>设置是使用您在 XML 文件中声明的
+{@link android.preference.Preference}
+类的各种子类构建而成,而不是使用 {@link android.view.View} 对象构建用户界面。</p>
+
+<p>{@link android.preference.Preference}
+对象是单个设置的构建基块。每个 {@link android.preference.Preference} 均作为项目显示在列表中,并提供适当的
+UI 供用户修改设置。例如,{@link
+android.preference.CheckBoxPreference} 可创建一个列表项用于显示复选框,{@link
+android.preference.ListPreference} 可创建一个项目用于打开包含选择列表的对话框。</p>
+
+<p>您添加的每个 {@link android.preference.Preference} 都有一个相应的键值对,可供系统用来将设置保存在应用设置的默认
+{@link android.content.SharedPreferences}
+文件中。当用户更改设置时,系统会为您更新
+{@link android.content.SharedPreferences} 文件中的相应值。您只应在需要读取值以根据用户设置确定应用的行为时,才与关联的
+{@link android.content.SharedPreferences}
+文件直接交互。</p>
+
+<p>为每个设置保存在 {@link android.content.SharedPreferences}
+中的值可能是以下数据类型之一:</p>
+
+<ul>
+  <li>布尔型</li>
+  <li>浮点型</li>
+  <li>整型</li>
+  <li>长整型</li>
+  <li>字符串</li>
+  <li>字符串 {@link java.util.Set}</li>
+</ul>
+
+<p>由于应用的设置 UI 是使用 {@link android.preference.Preference}
+对象(而非
+{@link android.view.View} 对象)构建而成,因此您需要使用专门的 {@link android.app.Activity} 或
+{@link android.app.Fragment} 子类显示列表设置:</p>
+
+<ul>
+  <li>如果应用支持早于 3.0(API 级别 10 及更低级别)的 Android 版本,则您必须将 Activity 构建为
+{@link android.preference.PreferenceActivity} 类的扩展。</li>
+  <li>对于 Android 3.0 及更高版本,您应改用传统
+{@link android.app.Activity},以托管可显示应用设置的 {@link android.preference.PreferenceFragment}。但是,如果您拥有多组设置,则还可以使用
+{@link android.preference.PreferenceActivity}
+为大屏幕创建双窗格布局。</li>
+</ul>
+
+<p><a href="#Activity">创建首选项 Activity</a>和<a href="#Fragment">使用首选项片段</a>
+部分将讨论如何设置 {@link android.preference.PreferenceActivity} 以及 {@link
+android.preference.PreferenceFragment} 实例。</p>
+
+
+<h3 id="SettingTypes">首选项</h3>
+
+<p>所有应用设置均由 {@link
+android.preference.Preference} 类的特定子类表示。每个子类均包括一组核心属性,允许您指定设置标题和默认值等内容。
+此外,每个子类还提供自己的专用属性和用户界面。
+例如,图 1 显示的是“信息”
+应用的设置屏幕截图。设置屏幕中的每个列表项均由不同的 {@link
+android.preference.Preference} 对象提供支持。</p>
+
+<p>一些最常用的首选项如下:</p>
+
+<dl>
+  <dt>{@link android.preference.CheckBoxPreference}</dt>
+  <dd>显示一个包含已启用或已禁用设置复选框的项目。保存的值是布尔型(如果选中则为
+<code>true</code>)。</dd>
+
+  <dt>{@link android.preference.ListPreference}</dt>
+  <dd>打开一个包含单选按钮列表的对话框。保存的值可以是任一受支持的值类型(如上所列)。
+</dd>
+
+  <dt>{@link android.preference.EditTextPreference}</dt>
+  <dd>打开一个包含 {@link android.widget.EditText} 小工具的对话框。保存的值是 {@link
+java.lang.String}。</dd>
+</dl>
+
+<p>有关所有其他子类及其对应属性的列表,请参阅 {@link android.preference.Preference}
+类。</p>
+
+<p>当然,内置类不能满足所有需求,您的应用可能需要更专业化的内容。
+例如,该平台目前不提供用于选取数字或日期的 {@link
+android.preference.Preference} 类。因此,您可能需要定义自己的
+{@link android.preference.Preference} 子类。如需有关执行此操作的帮助,请参阅<a href="#Custom">构建自定义首选项</a>部分。</p>
+
+
+
+<h2 id="DefiningPrefs">使用 XML 定义首选项</h2>
+
+<p>虽然您可以在运行时实例化新的 {@link android.preference.Preference}
+对象,不过您还是应该使用 {@link android.preference.Preference}
+对象的层次结构在 XML 中定义设置列表。使用 XML
+文件定义设置的集合是首选方法,因为该文件提供了一个便于更新的易读结构。此外,应用的设置通常是预先确定的,不过您仍可在运行时修改此集合。
+</p>
+
+<p>每个 {@link android.preference.Preference} 子类均可以使用与类名(如 {@code &lt;CheckBoxPreference&gt;})匹配的 XML 元素来声明。
+</p>
+
+<p>您必须将 XML 文件保存在 {@code res/xml/} 目录中。尽管您可以随意命名该文件,但它通常命名为
+{@code preferences.xml}。您通常只需一个文件,因为层次结构中的分支(可打开各自的设置列表)是使用
+{@link android.preference.PreferenceScreen}
+的嵌套实例声明的。</p>
+
+<p class="note"><strong>注:</strong>若要为设置创建多窗格布局,则需要为每个片段提供单独的
+XML 文件。</p>
+
+<p>XML 文件的根节点必须是一个 {@link android.preference.PreferenceScreen
+&lt;PreferenceScreen&gt;} 元素。您可以在此元素内添加每个 {@link
+android.preference.Preference}。在
+{@link android.preference.PreferenceScreen &lt;PreferenceScreen&gt;}
+元素内添加的每个子项均将作为单独的项目显示在设置列表中。</p>
+
+<p>例如:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;CheckBoxPreference
+        android:key="pref_sync"
+        android:title="@string/pref_sync"
+        android:summary="@string/pref_sync_summ"
+        android:defaultValue="true" />
+    &lt;ListPreference
+        android:dependency="pref_sync"
+        android:key="pref_syncConnectionType"
+        android:title="@string/pref_syncConnectionType"
+        android:dialogTitle="@string/pref_syncConnectionType"
+        android:entries="@array/pref_syncConnectionTypes_entries"
+        android:entryValues="@array/pref_syncConnectionTypes_values"
+        android:defaultValue="@string/pref_syncConnectionTypes_default" />
+&lt;/PreferenceScreen>
+</pre>
+
+<p>在此示例中,有一个 {@link android.preference.CheckBoxPreference} 和 {@link
+android.preference.ListPreference}。这两项均包括以下三个属性:</p>
+
+<dl>
+  <dt>{@code android:key}</dt>
+  <dd>对于要保留数据值的首选项,必须拥有此属性。它指定系统在将此设置的值保存在
+{@link
+android.content.SharedPreferences} 中时所用的唯一键(字符串)。 
+  <p>不需要此属性的仅有情形是:首选项是
+{@link android.preference.PreferenceCategory} 或{@link android.preference.PreferenceScreen},或者首选项指定要调用的
+{@link android.content.Intent}(使用 <a href="#Intents">{@code &lt;intent&gt;}</a> 元素)或要显示的 {@link android.app.Fragment}(使用 <a href="{@docRoot}reference/android/preference/Preference.html#attr_android:fragment">{@code
+android:fragment}</a> 属性)。<em></em></p>
+  </dd>
+  <dt>{@code android:title}</dt>
+  <dd>此属性为设置提供用户可见的名称。</dd>
+  <dt>{@code android:defaultValue}</dt>
+  <dd>此属性指定系统应该在 {@link
+android.content.SharedPreferences} 文件中设置的初始值。您应该为所有设置提供默认值。
+</dd>
+</dl>
+
+<p>有关所有其他受支持属性的信息,请参阅 {@link
+android.preference.Preference}(和相应子类)文档。</p>
+
+
+<div class="figure" style="width:300px">
+  <img src="{@docRoot}images/ui/settings/settings-titles.png" alt="" />
+  <p class="img-caption"><strong>图 2. </strong>带标题的设置类别。
+ <br/><b>1.</b>类别由 {@link
+android.preference.PreferenceCategory &lt;PreferenceCategory&gt;} 元素指定。 <br/><b>2.</b>标题由
+{@code android:title} 属性指定。</p>
+</div>
+
+
+<p>当设置列表超过 10 项时,您可能需要添加标题来定义设置组或在单独的屏幕中显示这些组。
+
+下文将介绍这些选项。</p>
+
+
+<h3 id="Groups">创建设置组</h3>
+
+<p>如果您提供的列表包含 10
+项或更多设置,则用户可能难以浏览、理解和处理这些设置。若要弥补这一点,您可以将部分或全部设置分成若干组,从而有效地将一个长列表转化为多个短列表。
+
+可以通过下列两种方法之一提供一组相关设置:</p>
+
+<ul>
+  <li><a href="#Titles">使用标题</a></li>
+  <li><a href="#Subscreens">使用子屏幕</a></li>
+</ul>
+
+<p>您可以使用其中一种或两种分组方法来组织应用的设置。决定要使用的技巧以及如何拆分设置时,应遵循 Android 设计的<a href="{@docRoot}design/patterns/settings.html">设置</a>指南中的准则。
+
+</p>
+
+
+<h4 id="Titles">使用标题</h4>
+
+<p>若要以分隔线分隔两组设置并为其提供标题(如图 2 所示),请将每组
+{@link android.preference.Preference} 对象放入 {@link
+android.preference.PreferenceCategory} 内。</p>
+
+<p>例如:</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;PreferenceCategory 
+        android:title="&#64;string/pref_sms_storage_title"
+        android:key="pref_key_storage_settings">
+        &lt;CheckBoxPreference
+            android:key="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_auto_delete"
+            android:title="&#64;string/pref_title_auto_delete"
+            android:defaultValue="false"... />
+        &lt;Preference 
+            android:key="pref_key_sms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_sms_delete"... />
+        &lt;Preference 
+            android:key="pref_key_mms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_mms_delete" ... />
+    &lt;/PreferenceCategory>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h4 id="Subscreens">使用子屏幕</h4>
+
+<p>若要将设置组放入子屏幕(如图 3 所示),请将
+{@link android.preference.Preference} 对象组放入 {@link
+android.preference.PreferenceScreen} 内。</p>
+
+<img src="{@docRoot}images/ui/settings/settings-subscreen.png" alt="" />
+<p class="img-caption"><strong>图 3. </strong>设置子屏幕。{@code
+&lt;PreferenceScreen&gt;} 元素创建的项目选中后,即会打开一个单独的列表来显示嵌套设置。
+</p>
+
+<p>例如:</p>
+
+<pre>
+&lt;PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;!-- opens a subscreen of settings -->
+    &lt;PreferenceScreen
+        android:key="button_voicemail_category_key"
+        android:title="&#64;string/voicemail"
+        android:persistent="false">
+        &lt;ListPreference
+            android:key="button_voicemail_provider_key"
+            android:title="&#64;string/voicemail_provider" ... />
+        &lt;!-- opens another nested subscreen -->
+        &lt;PreferenceScreen
+            android:key="button_voicemail_setting_key"
+            android:title="&#64;string/voicemail_settings"
+            android:persistent="false">
+            ...
+        &lt;/PreferenceScreen>
+        &lt;RingtonePreference
+            android:key="button_voicemail_ringtone_key"
+            android:title="&#64;string/voicemail_ringtone_title"
+            android:ringtoneType="notification" ... />
+        ...
+    &lt;/PreferenceScreen>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h3 id="Intents">使用 Intent </h3>
+
+<p>在某些情况下,您可能需要首选项来打开不同的 Activity(而不是 Web
+浏览器等设置屏幕)或查看网页。要在用户选择首选项时调用 {@link
+android.content.Intent},请将{@code &lt;intent&gt;}
+元素添加为相应 {@code &lt;Preference&gt;} 元素的子元素。</p>
+
+<p>例如,您可以按如下方法使用首选项打开网页:</p>
+
+<pre>
+&lt;Preference android:title="@string/prefs_web_page" >
+    &lt;intent android:action="android.intent.action.VIEW"
+            android:data="http://www.example.com" />
+&lt;/Preference>
+</pre>
+
+<p>您可以使用以下属性创建隐式和显式 Intent:</p>
+
+<dl>
+  <dt>{@code android:action}</dt>
+    <dd>要分配的操作(按照 {@link android.content.Intent#setAction setAction()}
+方法)。</dd>
+  <dt>{@code android:data}</dt>
+    <dd>要分配的数据(按照 {@link android.content.Intent#setData setData()} 方法)。</dd>
+  <dt>{@code android:mimeType}</dt>
+    <dd>要分配的 MIME 类型(按照 {@link android.content.Intent#setType setType()}
+方法)。</dd>
+  <dt>{@code android:targetClass}</dt>
+    <dd>组件名称的类部分(按照 {@link android.content.Intent#setComponent
+setComponent()} 方法)。</dd>
+  <dt>{@code android:targetPackage}</dt>
+    <dd>组件名称的软件包部分(按照 {@link
+android.content.Intent#setComponent setComponent()} 方法)。</dd>
+</dl>
+
+
+
+<h2 id="Activity">创建首选项 Activity</h2>
+
+<p>要在 Activity 中显示您的设置,请扩展 {@link
+android.preference.PreferenceActivity} 类。这是传统 {@link
+android.app.Activity} 类的扩展,该类根据 {@link
+android.preference.Preference} 对象的层次结构显示设置列表。当用户进行更改时,{@link android.preference.PreferenceActivity}
+会自动保留与每个 {@link
+android.preference.Preference} 相关的设置。</p>
+
+<p class="note"><strong>注:</strong>如果您是开发针对 Android 3.0 及
+更高版本系统的应用,则应改为使用 {@link android.preference.PreferenceFragment}。转到下文有关<a href="#Fragment">使用首选项片段</a>的部分。
+</p>
+
+<p>请记住最重要的一点,就是不要在 {@link
+android.preference.PreferenceActivity#onCreate onCreate()} 回调期间加载视图的布局。相反,请调用 {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} 以将在
+XML 文件中声明的首选项添加到 Activity。例如,一个能够正常工作的
+{@link android.preference.PreferenceActivity} 至少需要如下代码:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.preferences);
+    }
+}
+</pre>
+
+<p>实际上,对于某些应用而言此,代码就已足够,因为用户修改某首选项后,系统会立即将所做的更改保存到默认 {@link android.content.SharedPreferences} 文件中,如需检查用户的设置,可以使用您的其他应用组件读取该文件。
+
+不过,许多应用需要的代码要稍微多一点,以侦听首选项发生的变化。有关侦听
+{@link android.content.SharedPreferences}
+文件变化的信息,请参阅<a href="#ReadingPrefs">读取首选项</a>部分。
+</p>
+
+
+
+
+<h2 id="Fragment">使用首选项片段</h2>
+
+<p>如果您是开发针对 Android 3.0(API 级别 11)及更高版本系统的应用,则应使用 {@link
+android.preference.PreferenceFragment} 显示 {@link android.preference.Preference}
+对象的列表。您可以将 {@link android.preference.PreferenceFragment} 添加到任何 Activity,而不必使用
+{@link android.preference.PreferenceActivity}。</p>
+
+<p>与仅使用上述 Activity 相比,无论您在构建何种 Activity,<a href="{@docRoot}guide/components/fragments.html">片段</a>都可为应用提供一个更加灵活的体系结构。
+
+因此,我们建议您尽可能使用 {@link
+android.preference.PreferenceFragment} 控制设置的显示,而不是使用 {@link
+android.preference.PreferenceActivity}。</p>
+
+<p>{@link android.preference.PreferenceFragment} 的实现就像定义
+{@link android.preference.PreferenceFragment#onCreate onCreate()} 方法以使用
+{@link android.preference.PreferenceFragment#addPreferencesFromResource
+addPreferencesFromResource()} 加载首选项文件一样简单。例如:</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Load the preferences from an XML resource
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+}
+</pre>
+
+<p>然后,正如您对其他任何
+{@link android.app.Fragment} 的处理一样,您可以将此片段添加到 {@link android.app.Activity}。例如:</p>
+
+<pre>
+public class SettingsActivity extends Activity {
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Display the fragment as the main content.
+        getFragmentManager().beginTransaction()
+                .replace(android.R.id.content, new SettingsFragment())
+                .commit();
+    }
+}
+</pre>
+
+<p class="note"><strong>注:</strong>{@link android.preference.PreferenceFragment} 没有自己的
+{@link android.content.Context} 对象。如需 {@link android.content.Context}
+对象,您可以调用 {@link android.app.Fragment#getActivity()}。但请注意,只应在该片段附加到 Activity 时才调用
+{@link android.app.Fragment#getActivity()}。如果该片段尚未附加或在其生命周期结束期间已分离,则
+{@link
+android.app.Fragment#getActivity()} 将返回空 null。</p>
+
+
+<h2 id="Defaults">设置默认值</h2>
+
+<p>您创建的首选项可能会为应用定义一些重要行为,因此在用户首次打开应用时,您有必要使用每个 {@link android.preference.Preference}
+的默认值初始化相关的
+{@link android.content.SharedPreferences}
+文件。</p>
+
+<p>首先,您必须使用 {@code android:defaultValue} 属性为 XML 文件中的每个 {@link
+android.preference.Preference}
+对象指定默认值。该值可以是适合相应
+{@link android.preference.Preference} 对象的任意数据类型。例如:
+</p>
+
+<pre>
+&lt;!-- default value is a boolean -->
+&lt;CheckBoxPreference
+    android:defaultValue="true"
+    ... />
+
+&lt;!-- default value is a string -->
+&lt;ListPreference
+    android:defaultValue="@string/pref_syncConnectionTypes_default"
+    ... />
+</pre>
+
+<p>然后,通过应用的主 Activity(以及用户首次进入应用所藉由的任何其他 Activity)中的 {@link android.app.Activity#onCreate onCreate()}
+方法调用 {@link android.preference.PreferenceManager#setDefaultValues
+setDefaultValues()}:
+</p>
+
+<pre>
+PreferenceManager.setDefaultValues(this, R.xml.advanced_preferences, false);
+</pre>
+
+<p>在
+{@link android.app.Activity#onCreate onCreate()}
+期间调用此方法可确保使用默认设置正确初始化应用,而应用可能需要读取这些设置以确定某些行为(例如,是否在蜂窝网络中下载数据)。
+</p>
+
+<p>此方法采用三个参数:</p>
+<ul>
+  <li>应用 {@link android.content.Context}。</li>
+  <li>要为其设置默认值的首选项 XML 文件的资源 ID。</li>
+  <li>一个布尔值,用于指示是否应该多次设置默认值。
+<p>如果该值为 <code>false</code>,则仅当过去从未调用此方法时(或者默认值共享首选项文件中的
+{@link android.preference.PreferenceManager#KEY_HAS_SET_DEFAULT_VALUES}为
+false 时),系统才会设置默认值。</p></li>
+</ul>
+
+<p>只要将第三个参数设置为
+<code>false</code>,您便可在每次启动 Activity 时安全地调用此方法,而不必通过重置为默认值来替代用户已保存的首选项。
+但是,如果将它设置为
+<code>true</code>,则需要使用默认值替代之前的所有值。</p>
+
+
+
+<h2 id="PreferenceHeaders">使用首选项标头</h2>
+
+<p>在极少数情况下,您可能需要设计设置,使第一个屏幕仅显示<a href="#Subscreens">子屏幕</a>的列表(例如在系统“设置”应用中,如图 4 和图 5 所示)。
+
+在开发针对 Android 3.0 及更高版本系统的此类设计时,您应该使用
+Android 3.0 中的新“标头”功能,而非使用嵌套的
+{@link android.preference.PreferenceScreen} 元素构建子屏幕。</p>
+
+<p>要使用标头构建设置,您需要:</p>
+<ol>
+  <li>将每组设置分成单独的 {@link
+android.preference.PreferenceFragment} 实例。即,每组设置均需要一个单独的 XML
+文件。</li>
+  <li>创建 XML
+标头文件,其中列出每个设置组并声明哪个片段包含对应的设置列表。</li>
+  <li>扩展 {@link android.preference.PreferenceActivity} 类以托管设置。</li>
+  <li>实现 {@link
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()}
+回调以指定标头文件。</li>
+</ol>
+
+<p>使用此设计的一大好处是,在大屏幕上运行时,{@link android.preference.PreferenceActivity}
+会自动提供双窗格布局(如图 4 所示)。</p>
+
+<p>即使您的应用支持早于 3.0 的 Android 版本,您仍可将应用设计为使用
+{@link android.preference.PreferenceFragment}
+在较新版本的设备上呈现双窗格布局,同时仍支持较旧版本设备上传统的多屏幕层次结构(请参阅<a href="#BackCompatHeaders">使用首选项标头支持旧版本</a>部分)。
+
+</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-tablet.png" alt="" />
+<p class="img-caption"><strong>图 4. </strong>带标头的双窗格布局。 <br/><b>1.</b>标头用
+XML 标头文件定义。 <br/><b>2.</b>每组设置均由
+{@link android.preference.PreferenceFragment}(通过标头文件中的 {@code &lt;header&gt;}
+元素指定)定义。</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-handset.png" alt="" />
+<p class="img-caption"><strong>图 5. </strong>带设置标头的手机设备。选择项目后,相关的
+{@link android.preference.PreferenceFragment}
+将替换标头。</p>
+
+
+<h3 id="CreateHeaders" style="clear:left">创建标头文件</h3>
+
+<p>标头列表中的每组设置均由根 {@code &lt;preference-headers&gt;} 元素内的单个 {@code &lt;header&gt;}
+元素指定。例如:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;!-- key/value pairs can be included as arguments for the fragment. -->
+        &lt;extra android:name="someKey" android:value="someHeaderValue" />
+    &lt;/header>
+&lt;/preference-headers>
+</pre>
+
+<p>每个标头均可使用 {@code android:fragment} 属性声明在用户选择该标头时应打开的 {@link
+android.preference.PreferenceFragment} 实例。</p>
+
+<p>{@code &lt;extras&gt;} 元素允许您使用 {@link
+android.os.Bundle} 将键值对传递给片段。该片段可以通过调用 {@link
+android.app.Fragment#getArguments()} 检索参数。您向该片段传递参数的原因可能有很多,不过一个重要原因是,要对每个组重复使用
+{@link
+android.preference.PreferenceFragment}
+的相同子类,而且要使用参数来指定该片段应加载哪些首选项 XML 文件。</p>
+
+<p>例如,当每个标头均使用
+{@code "settings"} 键定义 {@code &lt;extra&gt;} 参数时,则可以对多个设置组重复使用以下片段:</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        String settings = getArguments().getString("settings");
+        if ("notifications".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_wifi);
+        } else if ("sync".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_sync);
+        }
+    }
+}
+</pre>
+
+
+
+<h3 id="DisplayHeaders">显示标头</h3>
+
+<p>要显示首选项标头,您必须实现 {@link
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} 回调方法并调用
+{@link android.preference.PreferenceActivity#loadHeadersFromResource
+loadHeadersFromResource()}。例如:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onBuildHeaders(List&lt;Header> target) {
+        loadHeadersFromResource(R.xml.preference_headers, target);
+    }
+}
+</pre>
+
+<p>当用户从标头列表中选择一个项目时,系统会打开相关的 {@link
+android.preference.PreferenceFragment}。</p>
+
+<p class="note"><strong>注:</strong>使用首选项标头时,{@link
+android.preference.PreferenceActivity} 的子类无需实现 {@link
+android.preference.PreferenceActivity#onCreate onCreate()}
+方法,因为 Activity 唯一所需执行的任务就是加载标头。</p>
+
+
+<h3 id="BackCompatHeaders">使用首选项标头支持旧版本</h3>
+
+<p>如果您的应用支持早于 3.0 的 Android
+版本,则在 Android 3.0 及更高版本系统上运行时,您仍可使用标头提供双窗格数据。为此,您只需另外创建
+一个使用基本 {@link android.preference.Preference
+&lt;Preference&gt;} 元素的首选项 XML 文件即可,这些基本元素的行为方式与标头项目类似(供较旧版本的 Android
+ 系统使用)。</p>
+
+<p>但是,每个 {@link
+android.preference.Preference &lt;Preference&gt;} 元素均会向 {@link android.preference.PreferenceActivity} 发送一个 {@link android.content.Intent},指定要加载哪个首选项 XML 文件,而不是打开新的
+{@link android.preference.PreferenceScreen}。
+</p>
+
+<p>例如,下面就是一个用于 Android 3.0
+及更高版本系统的首选项标头 XML 文件 ({@code res/xml/preference_headers.xml}):</p> 
+
+<pre>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" />
+&lt;/preference-headers>
+</pre>
+
+<p>下面是为早于
+Android 3.0 版本的系统提供相同标头的首选项文件 ({@code res/xml/preference_headers_legacy.xml}):</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;Preference 
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one"  >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_ONE" />
+    &lt;/Preference>
+    &lt;Preference 
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_TWO" />
+    &lt;/Preference>
+&lt;/PreferenceScreen>
+</pre>
+
+<p>由于是从 Android 3.0 开始方添加对 {@code &lt;preference-headers&gt;} 的支持,因此只有在 Androd 3.0 或更高版本中运行时,系统才会在您的 {@link
+android.preference.PreferenceActivity}
+中调用 {@link android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()}。要加载“旧版”标头文件
+({@code preference_headers_legacy.xml}),您必须检查 Android
+版本,如果版本低于 Android 3.0 ({@link
+android.os.Build.VERSION_CODES#HONEYCOMB}),请调用 {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}
+来加载旧版标头文件。例如:</p>
+
+<pre>
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    ...
+
+    if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+
+// Called only on Honeycomb and later
+&#64;Override
+public void onBuildHeaders(List&lt;Header> target) {
+   loadHeadersFromResource(R.xml.preference_headers, target);
+}
+</pre>
+
+<p>最后要做的就是处理传入 Activity 的
+{@link android.content.Intent},以确定要加载的首选项文件。因此,请检索 Intent 的操作,并将其与在首选项 XML 的 {@code &lt;intent&gt;}
+标记中使用的已知操作字符串进行比较。</p>
+
+<pre>
+final static String ACTION_PREFS_ONE = "com.example.prefs.PREFS_ONE";
+...
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+
+    String action = getIntent().getAction();
+    if (action != null &amp;&amp; action.equals(ACTION_PREFS_ONE)) {
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+
+    else if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+</pre>
+
+<p>值得注意的是,连续调用 {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()}
+会将所有首选项堆叠在一个列表中,因此请将条件与
+else-if 语句链接在一起,确保它只调用一次。</p>
+
+
+
+
+
+<h2 id="ReadingPrefs">读取首选项</h2>
+
+<p>默认情况下,应用的所有首选项均保存到一个可通过调用静态方法
+{@link
+android.preference.PreferenceManager#getDefaultSharedPreferences
+PreferenceManager.getDefaultSharedPreferences()} 从应用内的任何位置访问的文件中。这将返回 {@link
+android.content.SharedPreferences} 对象,其中包含与
+{@link
+android.preference.PreferenceActivity} 中所用 {@link android.preference.Preference} 对象相关的所有键值对。</p>
+
+<p>例如,从应用中的任何其他 Activity 读取某个首选项值的方法如下:
+</p>
+
+<pre>
+SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
+String syncConnPref = sharedPref.getString(SettingsActivity.KEY_PREF_SYNC_CONN, "");
+</pre>
+
+
+
+<h3 id="Listening">侦听首选项变更</h3>
+
+<p>出于某些原因,您可能希望在用户更改任一首选项时立即收到通知。
+要在任一首选项发生更改时收到回调,请实现
+{@link android.content.SharedPreferences.OnSharedPreferenceChangeListener
+SharedPreference.OnSharedPreferenceChangeListener} 接口,并通过调用 {@link
+android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
+registerOnSharedPreferenceChangeListener()} 为
+{@link android.content.SharedPreferences} 对象注册侦听器。</p>
+
+<p>该接口只有 {@link
+android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged
+onSharedPreferenceChanged()}
+一种回调方法,而且您可能会发现在 Activity 过程中实现该接口最为简单。例如:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity
+                              implements OnSharedPreferenceChangeListener {
+    public static final String KEY_PREF_SYNC_CONN = "pref_syncConnectionType";
+    ...
+
+    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
+        String key) {
+        if (key.equals(KEY_PREF_SYNC_CONN)) {
+            Preference connectionPref = findPreference(key);
+            // Set summary to be the user-description for the selected value
+            connectionPref.setSummary(sharedPreferences.getString(key, ""));
+        }
+    }
+}
+</pre>
+
+<p>在此示例中,该方法检查更改的设置是否是针对已知的首选项键。它调用
+{@link android.preference.PreferenceActivity#findPreference findPreference()} 来获取已更改的
+{@link android.preference.Preference}
+对象,以便能够将项目摘要修改为对用户选择的说明。即,如果设置为 {@link
+android.preference.ListPreference} 或其他多选设置时,则当设置更改为显示当前状态(例如,图
+5 所示的“Sleep”设置)时,您应调用 {@link
+android.preference.Preference#setSummary setSummary()}。</p>
+
+<p class="note"><strong>注:</strong>正如 Android 设计有关<a href="{@docRoot}design/patterns/settings.html">设置</a>的文档中所述,我们建议您在用户每次更改首选项时更新
+{@link android.preference.ListPreference}
+的摘要,以描述当前设置。</p>
+
+<p>若要妥善管理 Activity 生命周期,我们建议您在
+{@link
+android.app.Activity#onResume} 和 {@link android.app.Activity#onPause} 回调期间分别注册和注销 {@link android.content.SharedPreferences.OnSharedPreferenceChangeListener}。</p>
+
+<pre>
+&#64;Override
+protected void onResume() {
+    super.onResume();
+    getPreferenceScreen().getSharedPreferences()
+            .registerOnSharedPreferenceChangeListener(this);
+}
+
+&#64;Override
+protected void onPause() {
+    super.onPause();
+    getPreferenceScreen().getSharedPreferences()
+            .unregisterOnSharedPreferenceChangeListener(this);
+}
+</pre>
+
+<p class="caution"><strong>注意:</strong>目前,首选项管理器不会在您调用 {@link
+android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
+registerOnSharedPreferenceChangeListener()}
+时存储对侦听器的强引用。但是,您必须存储对侦听器的强引用,否则它将很容易被当作垃圾回收。
+我们建议您将对侦听器的引用保存在只要您需要侦听器就会存在的对象的实例数据中。
+
+</p>
+
+<p>例如,在以下代码中,调用方未保留对侦听器的引用。
+因此,侦听器将容易被当作垃圾回收,并在将来某个不确定的时间失败:
+</p>
+
+<pre>
+prefs.registerOnSharedPreferenceChangeListener(
+  // Bad! The listener is subject to garbage collection!
+  new SharedPreferences.OnSharedPreferenceChangeListener() {
+  public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+    // listener implementation
+  }
+});
+</pre>
+
+<p>有鉴于此,请将对侦听器的引用存储在只要需要侦听器就会存在的对象的实例数据字段中:
+</p>
+
+<pre>
+SharedPreferences.OnSharedPreferenceChangeListener listener =
+    new SharedPreferences.OnSharedPreferenceChangeListener() {
+  public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+    // listener implementation
+  }
+};
+prefs.registerOnSharedPreferenceChangeListener(listener);
+</pre>
+
+<h2 id="NetworkUsage">管理网络使用情况</h2>
+
+
+<p>从 Android 4.0
+开始,通过系统的“设置”应用,用户可以了解自己的应用在前台和后台使用的网络数据量。然后,用户可以据此禁止具体的应用使用后台数据。
+为了避免用户禁止您的应用从后台访问数据,您应该有效地使用数据连接,并允许用户通过应用设置优化应用的数据使用。
+
+<p>
+
+<p>例如,您可以允许用户控制应用同步数据的频率,控制应用是否仅在有
+Wi-Fi 时才执行上传/下载操作,以及控制应用能否在漫游时使用数据,等等。为用户提供这些控件后,即使数据使用量接近他们在系统“设置”中设置的限制,他们也不大可能禁止您的应用访问数据,因为他们可以精确地控制应用使用的数据量。
+
+
+</p>
+
+<p>在 {@link android.preference.PreferenceActivity}
+中添加必要的首选项来控制应用的数据使用习惯后,您应立即在清单文件中为 {@link
+android.content.Intent#ACTION_MANAGE_NETWORK_USAGE} 添加 Intent 过滤器。例如:</p>
+
+<pre>
+&lt;activity android:name="SettingsActivity" ... >
+    &lt;intent-filter>
+       &lt;action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />
+       &lt;category android:name="android.intent.category.DEFAULT" />
+    &lt;/intent-filter>
+&lt;/activity>
+</pre>
+
+<p>此 Intent 
+过滤器指示系统此 Activity 控制应用的数据使用情况。因此,当用户从系统的“设置”应用检查应用所使用的数据量时,可以使用“查看应用设置”按钮启动
+{@link android.preference.PreferenceActivity},这样,用户就能够优化应用使用的数据量。
+
+<em></em></p>
+
+
+
+
+
+
+
+<h2 id="Custom">构建自定义首选项</h2>
+
+<p>Android 框架包括各种
+{@link android.preference.Preference}
+子类,您可以使用它们为各种不同类型的设置构建 UI。不过,您可能会发现自己需要的设置没有内置解决方案,例如,数字选取器或日期选取器。
+在这种情况下,您将需要通过扩展
+{@link android.preference.Preference} 类或其他子类之一来创建自定义首选项。</p>
+
+<p>扩展 {@link android.preference.Preference}
+类时,您需要执行以下几项重要操作:</p>
+
+<ul>
+  <li>指定在用户选择设置时显示的用户界面。</li>
+  <li>适时保存设置的值。</li>
+  <li>使用显示的当前(默认)值初始化
+{@link android.preference.Preference}。</li>
+  <li>在系统请求时提供默认值。</li>
+  <li>如果 {@link android.preference.Preference}
+提供自己的 UI(例如对话框),请保存并恢复状态以处理生命周期变更(例如,用户旋转屏幕)。</li>
+</ul>
+
+<p>下文介绍如何完成所有这些任务。</p>
+
+
+
+<h3 id="CustomSelected">指定用户界面</h3>
+
+  <p>如果您要直接扩展 {@link android.preference.Preference} 类,则需要实现
+{@link android.preference.Preference#onClick()}
+来定义在用户选择该项时发生的操作。不过,大多数自定义设置都会扩展 {@link android.preference.DialogPreference}
+以显示对话框,从而简化这一过程。扩展 {@link
+android.preference.DialogPreference} 时,必须在类构造函数中调用 {@link
+android.preference.DialogPreference#setDialogLayoutResource setDialogLayoutResourcs()}
+来指定对话框的布局。</p>
+
+  <p>例如,自定义 {@link
+android.preference.DialogPreference}
+可以使用下面的构造函数来声明布局并为默认的肯定和否定对话框按钮指定文本:</p>
+
+<pre>
+public class NumberPickerPreference extends DialogPreference {
+    public NumberPickerPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        
+        setDialogLayoutResource(R.layout.numberpicker_dialog);
+        setPositiveButtonText(android.R.string.ok);
+        setNegativeButtonText(android.R.string.cancel);
+        
+        setDialogIcon(null);
+    }
+    ...
+}
+</pre>
+
+
+
+<h3 id="CustomSave">保存设置的值</h3>
+
+<p>如果设置的值为整型数或是用于保存布尔值的
+{@link android.preference.Preference#persistBoolean persistBoolean()},则可通过调用 {@link
+android.preference.Preference} 类的一个 {@code persist*()} 方法(如 {@link
+android.preference.Preference#persistInt persistInt()})随时保存该值。</p>
+
+<p class="note"><strong>注:</strong>每个 {@link android.preference.Preference}
+均只能保存一种数据类型,因此您必须使用适合自定义
+{@link android.preference.Preference} 所用数据类型的 {@code persist*()} 方法。</p>
+
+<p>至于何时选择保留设置,则可能取决于要扩展的 {@link
+android.preference.Preference} 类。如果扩展
+{@link
+android.preference.DialogPreference},则只能在对话框因肯定结果(用户选择“确定”按钮)而关闭时保留该值。</p>
+
+<p>当 {@link android.preference.DialogPreference} 关闭时,系统会调用 {@link
+android.preference.DialogPreference#onDialogClosed onDialogClosed()} 方法。该方法包括一个布尔参数,用于指定用户结果是否为“肯定”;如果值为
+<code>true</code>,则表示用户选择的是肯定按钮且您应该保存新值。
+例如:
+</p>
+
+<pre>
+&#64;Override
+protected void onDialogClosed(boolean positiveResult) {
+    // When the user selects "OK", persist the new value
+    if (positiveResult) {
+        persistInt(mNewValue);
+    }
+}
+</pre>
+
+<p>在此示例中,<code>mNewValue</code>
+是一个类成员,可存放设置的当前值。调用 {@link android.preference.Preference#persistInt persistInt()} 会将该值保存到
+{@link android.content.SharedPreferences} 文件(自动使用在此
+{@link android.preference.Preference} 的 XML 文件中指定的键)。</p>
+
+
+<h3 id="CustomInitialize">初始化当前值</h3>
+
+<p>系统将 {@link android.preference.Preference} 添加到屏幕时,会调用
+{@link android.preference.Preference#onSetInitialValue onSetInitialValue()}
+来通知您设置是否具有保留值。如果没有保留值,则此调用将为您提供默认值。
+</p>
+
+<p>{@link android.preference.Preference#onSetInitialValue onSetInitialValue()}
+方法传递一个布尔值 (<code>restorePersistedValue</code>),以指示是否已为该设置保留值。
+如果值为 <code>true</code>,则应通过调用
+{@link
+android.preference.Preference} 类的一个 {@code getPersisted*()} 方法(如整型值对应的 {@link
+android.preference.Preference#getPersistedInt getPersistedInt()})来检索保留值。通常,您会需要检索保留值,以便能够正确更新 UI 来反映之前保存的值。
+
+</p>
+
+<p>如果 <code>restorePersistedValue</code> 为
+<code>false</code>,则应使用在第二个参数中传递的默认值。</p>
+
+<pre>
+&#64;Override
+protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
+    if (restorePersistedValue) {
+        // Restore existing state
+        mCurrentValue = this.getPersistedInt(DEFAULT_VALUE);
+    } else {
+        // Set default state from the XML attribute
+        mCurrentValue = (Integer) defaultValue;
+        persistInt(mCurrentValue);
+    }
+}
+</pre>
+
+<p>每种 {@code getPersisted*()}
+方法均采用一个参数,用于指定在实际上没有保留值或该键不存在时所要使用的默认值。在上述示例中,当
+{@link
+android.preference.Preference#getPersistedInt getPersistedInt()} 不能返回保留值时,局部常量用于指定默认值。</p>
+
+<p class="caution"><strong>注意:</strong>您<strong>不能</strong>使用
+<code>defaultValue</code> 作为 {@code getPersisted*()} 方法中的默认值,因为当
+<code>restorePersistedValue</code> 为 <code>true</code> 时,其值始终为 null。</p>
+
+
+<h3 id="CustomDefault">提供默认值</h3>
+
+<p>如果 {@link android.preference.Preference}
+类的实例指定一个默认值(使用 {@code android:defaultValue}
+属性),则在实例化对象以检索该值时,系统会调用 {@link android.preference.Preference#onGetDefaultValue
+onGetDefaultValue()}。您必须实现此方法,系统才能将默认值保存在 {@link
+android.content.SharedPreferences} 中。
+例如:</p>
+
+<pre>
+&#64;Override
+protected Object onGetDefaultValue(TypedArray a, int index) {
+    return a.getInteger(index, DEFAULT_VALUE);
+}
+</pre>
+
+<p>方法参数可提供您所需的一切:属性的数组和
+{@code android:defaultValue}(必须检索的值)的索引位置。之所以必须实现此方法以从该属性中提取默认值,是因为您必须为此属性指定在未定义属性值时所要使用的局部默认值。
+
+</p>
+
+
+
+<h3 id="CustomSaveState">保存和恢复首选项的状态</h3>
+
+<p>正如布局中的 {@link android.view.View}
+一样,在重启 Activity 或片段时(例如,用户旋转屏幕),{@link android.preference.Preference}
+子类也负责保存并恢复其状态。要正确保存并恢复
+{@link android.preference.Preference} 类的状态,您必须实现生命周期回调方法
+{@link android.preference.Preference#onSaveInstanceState
+onSaveInstanceState()} 和 {@link
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()}。</p>
+
+<p>{@link android.preference.Preference} 的状态由实现
+{@link android.os.Parcelable} 接口的对象定义。Android 框架为您提供此类对象,作为定义状态对象({@link
+android.preference.Preference.BaseSavedState}
+类)的起点。</p>
+
+<p>要定义 {@link android.preference.Preference} 类保存其状态的方式,您应该扩展
+{@link android.preference.Preference.BaseSavedState} 类。您只需重写几种方法并定义
+{@link android.preference.Preference.BaseSavedState#CREATOR}
+对象。</p>
+
+<p>对于大多数应用,如果 {@link android.preference.Preference}
+子类保存除整型数以外的其他数据类型,则可复制下列实现并直接更改处理
+{@code value} 的行。</p>
+
+<pre>
+private static class SavedState extends BaseSavedState {
+    // Member that holds the setting's value
+    // Change this data type to match the type saved by your Preference
+    int value;
+
+    public SavedState(Parcelable superState) {
+        super(superState);
+    }
+
+    public SavedState(Parcel source) {
+        super(source);
+        // Get the current preference's value
+        value = source.readInt();  // Change this to read the appropriate data type
+    }
+
+    &#64;Override
+    public void writeToParcel(Parcel dest, int flags) {
+        super.writeToParcel(dest, flags);
+        // Write the preference's value
+        dest.writeInt(value);  // Change this to write the appropriate data type
+    }
+
+    // Standard creator object using an instance of this class
+    public static final Parcelable.Creator&lt;SavedState> CREATOR =
+            new Parcelable.Creator&lt;SavedState>() {
+
+        public SavedState createFromParcel(Parcel in) {
+            return new SavedState(in);
+        }
+
+        public SavedState[] newArray(int size) {
+            return new SavedState[size];
+        }
+    };
+}
+</pre>
+
+<p>如果将上述 {@link android.preference.Preference.BaseSavedState}
+实现添加到您的应用(通常,作为 {@link android.preference.Preference}
+子类的子类),则需要为
+{@link android.preference.Preference} 子类实现 {@link android.preference.Preference#onSaveInstanceState
+onSaveInstanceState()} 和 {@link
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()} 方法。</p>
+
+<p>例如:</p>
+
+<pre>
+&#64;Override
+protected Parcelable onSaveInstanceState() {
+    final Parcelable superState = super.onSaveInstanceState();
+    // Check whether this Preference is persistent (continually saved)
+    if (isPersistent()) {
+        // No need to save instance state since it's persistent,
+        // use superclass state
+        return superState;
+    }
+
+    // Create instance of custom BaseSavedState
+    final SavedState myState = new SavedState(superState);
+    // Set the state's value with the class member that holds current
+    // setting value
+    myState.value = mNewValue;
+    return myState;
+}
+
+&#64;Override
+protected void onRestoreInstanceState(Parcelable state) {
+    // Check whether we saved the state in onSaveInstanceState
+    if (state == null || !state.getClass().equals(SavedState.class)) {
+        // Didn't save the state, so call superclass
+        super.onRestoreInstanceState(state);
+        return;
+    }
+
+    // Cast state to custom BaseSavedState and pass to superclass
+    SavedState myState = (SavedState) state;
+    super.onRestoreInstanceState(myState.getSuperState());
+    
+    // Set this Preference's widget to reflect the restored state
+    mNumberPicker.setValue(myState.value);
+}
+</pre>
+
diff --git a/docs/html-intl/intl/zh-cn/guide/topics/ui/ui-events.jd b/docs/html-intl/intl/zh-cn/guide/topics/ui/ui-events.jd
new file mode 100644
index 0000000..f9e97630
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/guide/topics/ui/ui-events.jd
@@ -0,0 +1,291 @@
+page.title=输入事件
+parent.title=用户界面
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>本文内容</h2>
+  <ol>
+    <li><a href="#EventListeners">事件侦听器</a></li>
+    <li><a href="#EventHandlers">事件处理程序</a></li>
+    <li><a href="#TouchMode">触摸模式</a></li>
+    <li><a href="#HandlingFocus">处理焦点</a></li>
+  </ol>
+
+</div>
+</div>
+
+<p>在 Android 系统中,从用户与应用的交互中截获事件的方法不止一种。如考虑截获用户界面内的事件,则可从用户与之交互的特定视图对象中捕获事件。
+
+为此,View 类提供了多种方法。</p>
+
+<p>在您将用于构建布局的各种 View 类中,您可能会注意到几种看起来适用于
+UI 事件的公共回调方法。当该对象上发生相应的操作时,Android
+框架会调用这些方法。例如,在触摸一个视图对象(例如“按钮”)时,对该对象调用
+<code>onTouchEvent()</code> 方法。不过,为了截获此事件,您必须扩展 View 类并重写该方法。
+然而,为了处理此类事件而扩展每个视图对象并不现实。
+正因如此,View 类还包含一系列嵌套接口以及您可以更加轻松定义的回调。
+这些接口称为<a href="#EventListeners">事件侦听器</a>,是您捕获用户与
+UI 之间交互的票证。</p>
+
+<p>尽管您通常会使用事件侦听器来侦听用户交互,但有时您确实需要扩展 View 类以构建自定义组件。
+也许,您想扩展
+{@link android.widget.Button}
+类来丰富某些内容的样式。在这种情况下,您将能够使用该类的<a href="#EventHandlers">事件处理程序</a>为类定义默认事件行为。
+</p>
+
+
+<h2 id="EventListeners">事件侦听器</h2>
+
+<p>事件侦听器是 {@link android.view.View}
+类中包含一个回调方法的接口。当用户与 UI 项目之间的交互触发已注册此视图的侦听器时,Android
+框架将调用这些方法。</p>
+
+<p>各事件侦听器接口包含的回调方法如下:</p>
+
+<dl>
+  <dt><code>onClick()</code></dt>
+    <dd>在 {@link android.view.View.OnClickListener} 中。
+当用户触摸项目(处于触摸模式下)时,或者使用导航键或轨迹球聚焦于项目,然后按适用的“Enter”键或按下轨迹球时,将调用此方法。
+
+</dd>
+  <dt><code>onLongClick()</code></dt>
+    <dd>在 {@link android.view.View.OnLongClickListener} 中。
+当用户触摸并按住项目(处于触摸模式下)者,或者使用导航键或轨迹球聚焦于项目,然后按住适用的“Enter”键或按住轨迹球(持续一秒钟)时,将调用此方法。
+
+</dd>
+  <dt><code>onFocusChange()</code></dt>
+    <dd>在 {@link android.view.View.OnFocusChangeListener} 中。
+当用户使用导航键或轨迹球导航到或远离项目时,将调用此方法。</dd>
+  <dt><code>onKey()</code></dt>
+    <dd>在 {@link android.view.View.OnKeyListener} 中。
+当用户聚焦于项目并按下或释放设备上的硬按键时,将调用此方法。</dd>
+  <dt><code>onTouch()</code></dt>
+    <dd>在 {@link android.view.View.OnTouchListener} 中。
+当用户执行可视为触摸事件的操作时,其中包括按下、释放或屏幕上的任何移动手势(在项目边界内),将调用此方法。
+</dd>
+  <dt><code>onCreateContextMenu()</code></dt>
+    <dd>在 {@link android.view.View.OnCreateContextMenuListener} 中。
+当(因持续“长按”而)生成上下文菜单时,将调用此方法。请参阅<a href="{@docRoot}guide/topics/ui/menus.html#context-menu">菜单</a>开发者指南中有关上下文菜单的阐述。
+
+</dd>
+</dl>
+
+<p>这些方法是其相应接口的唯一成员。要定义其中一个方法并处理事件,请在 Activity 中实现嵌套接口或将其定义为匿名类。然后,将实现的实例传递给相应的
+<code>View.set...Listener()</code>
+方法。
+(例如,调用
+<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>
+并向其传递 {@link android.view.View.OnClickListener OnClickListener} 实现。)</p>
+
+<p>以下示例显示了如何为按钮注册点击侦听器。 </p>
+
+<pre>
+// Create an anonymous implementation of OnClickListener
+private OnClickListener mCorkyListener = new OnClickListener() {
+    public void onClick(View v) {
+      // do something when the button is clicked
+    }
+};
+
+protected void onCreate(Bundle savedValues) {
+    ...
+    // Capture our button from layout
+    Button button = (Button)findViewById(R.id.corky);
+    // Register the onClick listener with the implementation above
+    button.setOnClickListener(mCorkyListener);
+    ...
+}
+</pre>
+
+<p>您可能还会发现,将
+OnClickListener 作为 Activity 的一部分来实现更为方便。这样可以避免加载额外的类和分配对象。例如:</p>
+<pre>
+public class ExampleActivity extends Activity implements OnClickListener {
+    protected void onCreate(Bundle savedValues) {
+        ...
+        Button button = (Button)findViewById(R.id.corky);
+        button.setOnClickListener(this);
+    }
+
+    // Implement the OnClickListener callback
+    public void onClick(View v) {
+      // do something when the button is clicked
+    }
+    ...
+}
+</pre>
+
+<p>请注意,上述示例中的
+<code>onClick()</code> 回调没有返回值,但是其他某些事件侦听器方法必须返回布尔值。具体原因取决于事件。
+对于这几个事件侦听器,必须返回布尔值的原因如下:</p>
+<ul>
+  <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code>:
+此方法返回一个布尔值,表示您是否已处理完事件,以及是否应该将它继续传下去。
+也就是说,返回“true”表示您已经处理事件且事件应就此停止;如果您尚未处理事件和/或事件应该继续传递给其他任何点击侦听器,则返回“false”。
+
+<em></em><em></em></li>
+  <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code>:
+此方法返回一个布尔值,表示您是否已处理完事件,以及是否应该将它继续传下去。
+    也就是说,返回“true”表示您已经处理事件且事件应就此停止;如果您尚未处理事件和/或事件应该继续传递给其他任何按键侦听器,则返回“false”。
+
+<em></em><em></em></li>
+  <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code>:
+此方法返回一个布尔值,表示侦听器是否处理完此事件。重要的是,此事件可以拥有多个分先后顺序的操作。
+因此,如果在收到关闭操作事件时返回“false”,则表示您并未处理完此事件,而且对其后续操作也不感兴趣。
+
+<em></em>因此,您无需执行事件内的任何其他操作,如手势或最终操作事件。
+</li>
+</ul>
+
+<p>请记住,硬按键事件总是传递给目前处于焦点的视图对象。它们从视图
+层次结构的顶部开始分派,然后向下,直至到达合适的目的地。如果您的视图对象(或视图对象的子项)目前具有焦点,那么您可以看到事件经由
+<code>{@link android.view.View#dispatchKeyEvent(KeyEvent)
+dispatchKeyEvent()}</code> 方法的分派过程。除了通过视图捕获按键事件,您还可以使用
+<code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>
+和 <code>{@link android.app.Activity#onKeyUp(int,KeyEvent) onKeyUp()}</code> 接收 Activity 内部的所有事件。</p>
+
+<p>此外,考虑应用的文本输入时,请记住:许多设备只有软件输入法。
+此类方法无需基于按键;某些可能使用语音输入、手写等。尽管输入法提供了类似键盘的界面,但它通常<strong>不会</strong>触发
+<code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code>
+系列的事件。除非您要将应用限制为带有硬键盘的设备,否则,在设计 UI 时切勿要求必须通过特定按键进行控制。
+
+特别是,当用户按下返回键时,不要依赖这些方法验证输入;请改用
+{@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE}
+等操作让输入法知晓您的应用预计会作何反应,这样,可以通过一种有意义的方式更改其 UI。不要推断软件输入法应如何工作,只要相信它能够为应用提供已设置格式的文本即可。
+</p>
+
+<p class="note"><strong>注:</strong>Android 会先调用事件处理程序,然后从类定义调用合适的默认处理程序。
+因此,从这些事件侦听器返回“true”会停止将事件传播到其他事件侦听器,还会阻止回调视图对象中的默认事件处理程序。<em></em>
+
+因此,在返回“true”时请确保您要终止事件。<em></em></p>
+
+
+<h2 id="EventHandlers">事件处理程序</h2>
+
+<p>如果您从视图构建自定义组件,则将能够定义几种用作默认事件处理程序的回调方法。在有关<a href="{@docRoot}guide/topics/ui/custom-components.html">自定义组件</a>的文档中,您将了解某些用于事件处理的常见回调,其中包括:
+
+
+
+</p>
+<ul>
+  <li><code>{@link  android.view.View#onKeyDown}</code>:在发生新的按键事件时调用</li>
+  <li><code>{@link  android.view.View#onKeyUp}</code>:在发生按键弹起事件时调用</li>
+  <li><code>{@link  android.view.View#onTrackballEvent}</code>:在发生轨迹球运动事件时调用</li>
+  <li><code>{@link  android.view.View#onTouchEvent}</code>:在发生触摸屏运动事件时调用</li>
+  <li><code>{@link  android.view.View#onFocusChanged}</code>:在视图获得或失去焦点时调用</li>
+</ul>
+<p>还有一些其他方法值得您注意,尽管它们并非 View 类的一部分,但可能会直接影响所能采取的事件处理方式。
+因此,在管理布局内更复杂的事件时,请考虑使用以下其他方法:
+</p>
+<ul>
+  <li><code>{@link  android.app.Activity#dispatchTouchEvent(MotionEvent)
+    Activity.dispatchTouchEvent(MotionEvent)}</code>:此方法允许 {@link 
+    android.app.Activity} 在分派给窗口之前截获所有触摸事件。</li>
+  <li><code>{@link  android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)
+    ViewGroup.onInterceptTouchEvent(MotionEvent)}</code>:此方法允许 {@link
+    android.view.ViewGroup} 监视分派给子视图的事件。</li>
+  <li><code>{@link  android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
+    ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code>:
+对父视图调用此方法表明不应使用 <code>{@link 
+    android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code> 截获触摸事件。</li>
+</ul>
+
+<h2 id="TouchMode">触摸模式</h2>
+<p>
+当用户使用方向键或轨迹球导航用户界面时,必须聚焦到可操作项目上(如按钮),以便用户看到将接受输入的对象。
+
+但是,如果设备具有触摸功能且用户开始通过触摸界面与之交互,则不再需要突出显示项目或聚焦到特定视图对象上。
+
+因此,有一种交互模式称为“触摸模式”。
+ 
+</p>
+<p>
+对于支持触摸功能的设备,当用户触摸屏幕时,设备会立即进入触摸模式。
+自此以后,只有
+{@link android.view.View#isFocusableInTouchMode}
+为“true”的视图才可聚焦,如文本编辑小工具。其他可触摸的视图(如按钮)在用户触摸时不会获得焦点;按下时它们只是触发点击侦听器。
+
+</p>
+<p>
+无论何时,只要用户点击方向键或滚动轨迹球,设备就会退出触摸模式并找到一个视图使其获得焦点。
+现在,用户可在不触摸屏幕的情况下继续与用户界面交互。
+
+</p>
+<p>
+整个系统(所有窗口和 Activity)都将保持触摸模式状态。要查询当前状态,您可以调用
+{@link android.view.View#isInTouchMode}
+来检查设备目前是否处于触摸模式。
+</p>
+
+
+<h2 id="HandlingFocus">处理焦点</h2>
+
+<p>该框架将处理例行焦点移动来响应用户输入。其中包括在视图被删除或隐藏时或在新视图变得可用时更改焦点。
+
+视图对象表示愿意通过
+<code>{@link android.view.View#isFocusable()}</code> 方法获得焦点。要设置视图能否获得焦点,请调用
+<code>{@link android.view.View#setFocusable(boolean) setFocusable()}</code>。在触摸模式中,您可以使用
+<code>{@link android.view.View#isFocusableInTouchMode()}</code> 查询视图是否允许聚焦,而且可以使用
+<code>{@link android.view.View#setFocusableInTouchMode(boolean) setFocusableInTouchMode()}</code> 对此进行更改。
+</p>
+
+<p>焦点移动所使用的算法会查找指定方向上距离最近的元素。
+在极少数情况下,默认算法可能与开发者的期望行为不一致。
+在这些情况下,您可以在布局文件中显式重写以下
+XML 属性:
+<var>nextFocusDown</var>、 <var>nextFocusLeft</var>、 <var>nextFocusRight</var>和
+<var>nextFocusUp</var>。将其中一个属性添加到失去焦点的视图。
+<em></em>将属性的值定义为应该聚焦的视图的
+ID。<em></em>例如:</p>
+<pre>
+&lt;LinearLayout
+    android:orientation="vertical"
+    ... >
+  &lt;Button android:id="@+id/top"
+          android:nextFocusUp="@+id/bottom"
+          ... />
+  &lt;Button android:id="@+id/bottom"
+          android:nextFocusDown="@+id/top"
+          ... />
+&lt;/LinearLayout>
+</pre>
+
+<p>一般来说,在此垂直布局中,从第一个按钮向上导航或从第二个按钮向下导航,焦点都不会移到任何其他位置。
+现在,顶部按钮已将底部按钮定义为
+ <var>nextFocusUp</var> (反之亦然),因而导航焦点将自上而下和自下而上循环往复。
+</p>
+
+<p>若要将一个视图声明为在 UI 中可聚焦(传统上并非如此),请在布局声明中将 <code>android:focusable</code> XML 属性添加到该视图。将值设置为
+
+ <var>true</var>。此外,您还可以使用
+<code>android:focusableInTouchMode</code> 将 Vew 声明为在触摸模式下可聚焦。</p>
+<p>要请求要获得焦点的特定视图,请调用 <code>{@link android.view.View#requestFocus()}</code>。</p>
+<p>要侦听焦点事件(视图获得或失去焦点时会收到通知),请使用
+<code>{@link android.view.View.OnFocusChangeListener#onFocusChange(View,boolean) onFocusChange()}</code>,
+如上文的<a href="#EventListeners">事件侦听器</a>部分中所述。</p>
+
+
+
+<!--
+<h2 is="EventCycle">Event Cycle</h2>
+   <p>The basic cycle of a View is as follows:</p>
+   <ol>
+    <li>An event comes in and is dispatched to the appropriate View. The View
+    handles the event and notifies any listeners.</li>
+    <li>If, in the course of processing the event, the View's bounds may need
+    to be changed, the View will call {@link android.view.View#requestLayout()}.</li>
+    <li>Similarly, if in the course of processing the event the View's appearance
+    may need to be changed, the View will call {@link android.view.View#invalidate()}.</li>
+    <li>If either {@link android.view.View#requestLayout()} or {@link android.view.View#invalidate()} were called,
+    the framework will take care of measuring, laying out, and drawing the tree
+    as appropriate.</li>
+   </ol>
+   
+   <p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on
+   the UI thread when calling any method on any View.
+   If you are doing work on other threads and want to update the state of a View
+   from that thread, you should use a {@link android.os.Handler}.
+   </p>
+-->
diff --git a/docs/html-intl/intl/zh-cn/index.jd b/docs/html-intl/intl/zh-cn/index.jd
index cdd81cd..ca3a84b 100644
--- a/docs/html-intl/intl/zh-cn/index.jd
+++ b/docs/html-intl/intl/zh-cn/index.jd
@@ -5,42 +5,81 @@
 
 @jd:body
 
-<!-- <div class="dac-hero-carousel" data-carousel-query="collection:index/carousel">
-</div> -->
-<section class="dac-hero-carousel">
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
 
-<!-- <article class="dac-expand dac-hero dac-invert active" style="background-color: rgb(38, 50, 56);"> -->
-<article class="dac-expand dac-hero dac-invert dac-darken mprev active" style="background-color: #75d1ff;">
-<a href="/preview/index.html">
+<section class="dac-expand dac-hero dac-invert" style="background-color:#455A64">
   <div class="wrap" style="max-width:1100px;margin-top:0">
-    <div class="cols dac-hero-content">
-      <div class="col-8of16 col-push-6of16 dac-hero-figure mprev">
-      </div>
-      <div class="col-8of16 col-pull-7of16">
-        <div class="dac-hero-tag"></div>
-
-        <h1 class="dac-hero-title" style="white-space:nowrap;">Android 6.0 Marshmallow</h1>
-        <p class="dac-hero-description">准备迎接 Android 的下一版本。在 Nexus 5、
-        6、9 和 Player 中测试应用。 </p>
-
-        <a class="dac-hero-cta" href="{@docRoot}preview/index.html">
+    <div class="col-7of16 col-push-9of16" style="padding-left:2em;">
+      <a href="{@docRoot}preview/index.html">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
+        <p class="dac-hero-description">
+          Get ready for the next version of Android!
+          <strong>Test your apps</strong> on Nexus and other devices. Support new system
+          behaviors to <strong>save power and memory</strong>.
+          Extend your apps with <strong>multi-window UI</strong>,
+          <strong>direct reply notifications</strong> and more.
+        </p>
+        <a class="dac-hero-cta" href="/preview/index.html">
           <span class="dac-sprite dac-auto-chevron"></span>
-          开始!</a><br>
-        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
+          Learn more
+        </a><!--<br>
+        <a class="dac-hero-cta" href="/preview/support.html">
           <span class="dac-sprite dac-auto-chevron"></span>
-          Developer Preview 3 (final SDK)</a>
+          Update to Developer Preview (final SDK)
+        </a><br>-->
+      </a>
+    </div>
+    <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:0em;padding-right:1.5em;">
+      <a href="{@docRoot}preview/index.html">
+        <img style="" class="dac-hero-image" src="/images/home/n-preview-hero.png"
+             srcset="/images/home/n-preview-hero.png 1x,
+             /images/home/n-preview-hero_2x.png 2x">
         </a>
-      </div>
     </div>
   </div>
-</a>
-</article></section>
+</section>
 
-<div class="actions-bar dac-expand dac-invert">
+<div id="useUpdatedTemplates" style="display:none" class="dac-section dac-slim dac-gray dac-expand">
   <div class="wrap dac-offset-parent">
     <a class="dac-fab dac-scroll-button" data-scroll-button href="#build-apps">
       <i class="dac-sprite dac-arrow-down-gray"></i>
     </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}sdk/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Get the SDK
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}samples/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Browse sample code
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}distribute/stories/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Watch stories
+        </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+    <a class="dac-fab dac-scroll-button" data-scroll-button="" href="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
     <div class="actions">
       <div><a href="{@docRoot}sdk/index.html">
         <span class="dac-sprite dac-auto-chevron-large"></span>
@@ -50,17 +89,15 @@
         <span class="dac-sprite dac-auto-chevron-large"></span>
         Browse Samples
       </a></div>
-      <div><a href="//www.youtube.com/user/androiddevelopers">
+      <div><a href="{@docRoot}distribute/stories/index.html">
         <span class="dac-sprite dac-auto-chevron-large"></span>
-        Watch Videos
+        Watch Stories
       </a></div>
     </div><!-- end .actions -->
   </div><!-- end .wrap -->
-</div><!-- end .actions-bar -->
+</div>
 
-
-
-<section class="dac-section dac-section-light" id="build-apps"><div class="wrap">
+<section class="dac-section dac-light" id="build-apps"><div class="wrap">
   <h1 class="dac-section-title">Build Beautiful Apps</h1>
   <div class="dac-section-subtitle">
     Resources to get you started with designing and developing for Android.
diff --git a/docs/html-intl/intl/zh-cn/preview/api-overview.jd b/docs/html-intl/intl/zh-cn/preview/api-overview.jd
deleted file mode 100644
index f7764cd..0000000
--- a/docs/html-intl/intl/zh-cn/preview/api-overview.jd
+++ /dev/null
@@ -1,521 +0,0 @@
-page.title=API 概览
-page.keywords=预览版,sdk,兼容性
-page.tags=previewresources, androidm
-sdk.platform.apiLevel=22-mnc
-page.image=images/cards/card-api-overview_16-9_2x.png
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>本文内容
-<a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
-        <span class="more">显示详细信息</span>
-        <span class="less" style="display:none">显示精简信息</span></a></h2>
-
-<ol id="toc44" class="hide-nested">
-  <li><a href="#app-linking">应用链接</a></li>
-  <li><a href="#backup">自动备份应用</a></li>
-  <li><a href="#authentication">身份验证</a>
-    <ol>
-      <li><a href="#fingerprint-authentication">指纹身份验证</a></li>
-      <li><a href="#confirm-credential">确认凭据</a></li>
-    </ol>
-  </li>
-  <li><a href="#direct-share">直接共享</a></li>
-  <li><a href="#voice-interactions">语音交互</a></li>
-  <li><a href="#assist">助手 API</a></li>
-  <li><a href="#notifications">通知</a></li>
-  <li><a href="#bluetooth-stylus">蓝牙触控笔支持</a></li>
-  <li><a href="#ble-scanning">改进的蓝牙低功耗扫描</a></li>
-  <li><a href="#hotspot">Hotspot 2.0 第 1 版支持</a></li>
-  <li><a href="#4K-display">4K 显示模式</a></li>
-  <li><a href="#behavior-themeable-colorstatelists">主题化 ColorStateList</a></li>
-  <li><a href="#audio">音频功能</a></li>
-  <li><a href="#video">视频功能</a></li>
-  <li><a href="#camera">相机功能</a>
-    <ol>
-      <li><a href="#flashlight">闪光灯 API</a></li>
-      <li><a href="#reprocessing">相机再处理</a></li>
-    </ol>
-  </li>
-  <li><a href="#afw">Android for Work 功能</a></li>
-</ol>
-
-<h2>API 差异</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">API 级别 22 至 M 预览版&raquo;</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M 开发者预览版可让您预览即将推出的 Android 平台版本为用户和应用开发者提供的新功能。
-
-本文旨在介绍其中最值得关注的 API。</p>
-
-<p>M 开发者预览版的适用对象是<strong>喜欢尝鲜的开发者</strong>和<strong>测试人员</strong>。
-如果您有兴趣影响 Android 框架的发展方向,<a href="{@docRoot}preview/setup-sdk.html">欢迎试用 M 开发者预览版</a>并向我们提供反馈!
-
-
-</p>
-
-<p class="caution"><strong>注意</strong>:请不要在 Google Play 商店中发布基于 M 开发者预览版的应用。
-</p>
-
-<p class="note"><strong>注:</strong>本文经常提及的一些类和方法在 <a href="{@docRoot}">developer.android.com</a> 上尚未提供相关参考资料。
-这些 API 元素在本文中设置为 {@code code style} 格式(不带超链接)。
-如需查看这些元素的初步 API 文档,请下载<a href="{@docRoot}preview/download.html#docs">预览版参考资料</a>。
-</p>
-
-<h3>重要的行为变更</h3>
-
-<p>如果您之前发布过 Android 应用,请注意您的应用可能受到平台变化的影响。
-</p>
-
-<p>如需了解完整信息,请参阅<a href="behavior-changes.html">行为变更</a>。</p>
-
-<h2 id="app-linking">应用链接</h2>
-<p>此预览版通过提供功能更强大的应用链接,增强了 Android 的意向系统。您可以利用此功能将应用与您拥有的某个 Web 域关联。
-平台可以根据此关联确定在处理特定 Web 链接时默认使用的应用,跳过提示用户选择应用的步骤。如需了解如何实现此功能,请参阅<a href="{@docRoot}preview/features/app-linking.html">应用链接</a>。
-
-
-
-
-<h2 id="backup">自动备份应用</h2>
-<p>现在,系统可以自动为应用执行完整数据备份和恢复。对于以 M 预览版为目标平台的应用,系统会默认启用此行为,您无需额外添加任何代码。
-如果用户删除其 Google 帐户,其备份数据也会被删除。
-如需了解该功能的工作方式以及配置文件系统备份内容的方法,请参阅<a href="{@docRoot}preview/backup/index.html">自动备份应用</a>。
-
-</p>
-
-<h2 id="authentication">身份验证</h2>
-<p>本预览版提供一些新的 API,在受支持的设备上,用户只需扫描其指纹即可完成身份验证,还可检查系统最后一次使用设备解锁机制(如锁屏密码)对用户进行身份验证是发生在多久之前。
-
-这些 API 可与 <a href="{@docRoot}training/articles/keystore.html">Android 密钥库系统</a>结合使用。
-</p>
-
-<h3 id="fingerprint-authentication">指纹身份验证</h3>
-
-<p>如需通过指纹扫描验证用户身份,请获取新增 
-{@code android.hardware.fingerprint.FingerprintManager} 类的实例,并调用 
-{@code FingerprintManager.authenticate()} 方法。您的应用必须运行在带有指纹传感器的兼容设备上。
-您必须在应用中实现指纹身份验证流的用户界面,并在 UI 中使用标准 Android 指纹图标。<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">示例应用</a>中包含有 Android 指纹图标 ({@code c_fp_40px.png})。请注意,如果您要开发多个使用指纹身份验证的应用,每个应用必须独立验证用户的指纹。
-
-
-
-
-</p>
-
-<p>如需在您的应用中使用此功能,请先在清单文件中添加 {@code USE_FINGERPRINT} 权限。
-</p>
-
-<pre>
-&lt;uses-permission
-        android:name="android.permission.USE_FINGERPRINT" /&gt;
-</pre>
-
-<img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-
-<p>如需查看指纹身份验证的应用实现,请参阅<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">指纹对话框示例</a>。
-
-</p>
-
-<p>如果您要测试此功能,请执行以下步骤:</p>
-<ol>
-<li>如果您尚未安装 Android SDK 工具 24.3 修订版,请执行此操作。</li>
-<li>转到<strong>设置 &gt; 安全 &gt; 指纹</strong>,然后按照登记说明在模拟器中登记新指纹。
-</li>
-<li>使用模拟器通过以下命令模拟指纹触摸事件。
-使用同一命令模拟锁屏上或应用中的指纹触摸事件。
-
-<pre class="no-prettyprint">
-adb -e emu finger touch &lt;finger_id&gt;
-</pre>
-<p>在 Windows 上,您可能需要运行带有 
-{@code finger touch <finger_id>} 参数的 {@code telnet 127.0.0.1 <emulator-id>} 命令。
-</p>
-</li>
-</ol>
-
-<h3 id="confirm-credential">确认凭据</h3>
-<p>您的应用可以根据用户在多久之前最后一次解锁设备来验证其身份。此功能让用户不必费心记忆应用特定密码,您也无需实现自己的身份验证用户界面。
-
-您的应用应当利用此功能并结合实现公钥或私钥,以进行用户身份验证。
-</p>
-
-<p>如需设置成功验证用户身份后可再次使用同一密钥的超时持续时间,请在设置 {@link javax.crypto.KeyGenerator} 或 
-{@link java.security.KeyPairGenerator} 时调用新增的 
-{@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()}
- 方法。
-此功能目前适用于对称加密操作。
-</p>
-
-<p>避免过多显示重新验证对话框 -- 您的应用应尝试先使用加密对象,如果超时到期,请使用 
-{@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()} 方法在您的应用内重新验证用户身份。
-
-
-</p>
-
-<p>如需查看此功能的应用实现,请参阅<a href="https://github.com/googlesamples/android-ConfirmCredential" class="external-link">确认凭据示例</a>。
-
-</p>
-
-<h2 id="direct-share">直接共享</h2>
-
-<img src="{@docRoot}preview/images/direct-share-screen.png" srcset="{@docRoot}preview/images/direct-share-screen.png 1x, {@docRoot}preview/images/direct-share-screen_2x.png 2x" style="float:right; margin:0 0 20px 30px" width="312" height="329" />
-
-<p>本预览版为您提供的 API 可让用户直观、快捷地进行共享。现在,您可以定义可在您的应用内启动特定活动的<em>直接共享目标</em>。这些直接共享目标通过“共享”<em></em>菜单公开给用户。
-
-此功能让用户可以向其他应用内的目标(如联系人)共享内容。
-例如,直接共享目标可以启动另一社交网络应用中的某个活动,让用户可以直接向该应用中的某位朋友或某个社区共享内容。
-
-</p>
-
-<p>如需启用直接共享目标,您必须定义一个类,用于扩展 
-{@code android.service.} <br>
-{@code chooser.ChooserTargetService} 类。在清单文件中声明您的 
-{@code ChooserTargetService}。在该声明内,指定 
-{@code BIND_CHOOSER_TARGET_SERVICE} 权限和一个带有 
-{@code SERVICE_INTERFACE} 操作的意向过滤器。</p>
-<p>以下示例展示了如何在清单文件中声明 {@code ChooserTargetService}。
-</p>
-<pre>
-&lt;service android:name=".ChooserTargetService"
-        android:label="&#64;string/service_name"
-        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"&gt;
-    &lt;intent-filter&gt;
-        &lt;action android:name="android.service.chooser.ChooserTargetService" /&gt;
-    &lt;/intent-filter&gt;
-&lt;/service&gt;
-</pre>
-
-<p>对于您想要向 {@code ChooserTargetService} 公开的每个活动,请在您的应用清单文件中为其添加一个名为 
-{@code "android.service.chooser.chooser_target_service"} 的 
-{@code <meta-data>} 元素。
-</p>
-
-<pre>
-&lt;activity android:name=".MyShareActivity”
-        android:label="&#64;string/share_activity_label"&gt;
-    &lt;intent-filter>
-        &lt;action android:name="android.intent.action.SEND" /&gt;
-    &lt;/intent-filter>
-&lt;meta-data
-        android:name="android.service.chooser.chooser_target_service"
-        android:value=".ChooserTargetService" /&gt;
-&lt;/activity>
-</pre>
-
-<h2 id="voice-interactions">语音交互</h2>
-<p>
-本预览版提供了一个新的语音交互 API,与
-<a href="https://developers.google.com/voice-actions/" class="external-link">语音操作</a>一起使用时,可让您为应用内建对话式语音体验。
-调用 
-{@code android.app.Activity.isVoiceInteraction()} 方法可确定您的活动是否为响应语音操作而启动。
-如果是这样,则您的应用可以使用 
-{@code android.app.VoiceInteractor} 类请求用户进行语音确认、从选项列表中进行选择以及执行其他操作。
-如需了解有关实现语音操作的更多信息,请参阅 
-<a href="https://developers.google.com/voice-actions/interaction/" class="external-link">语音操作开发者网站</a>。
-</p>
-
-<h2 id="assist">助手 API</h2>
-<p>
-本预览版提供了一种让用户通过助手程序与应用进行互动的新方式。如需使用此功能,用户必须启用助手以使用当前上下文。
-启用后,用户可通过长按<strong>主页</strong>按钮在任何应用内召唤助手。
-</p>
-<p>您的应用可通过设置 
-{@link android.view.WindowManager.LayoutParams#FLAG_SECURE} 标志选择不与助手共享当前上下文。除了平台传递给助手的一组标准信息外,您的应用还可利用新增的 {@code android.app.Activity.AssistContent} 类共享其他信息。
-
-</p>
-
-<p>如需为助手提供您的应用内的其他上下文,请执行以下步骤:</p>
-
-<ol>
-<li>实现 {@link android.app.Application.OnProvideAssistDataListener} 接口。</li>
-<li>利用 
-{@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()} 注册此侦听器。</li>
-<li>如需提供特定于活动的上下文信息,请替代 
-{@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()}
- 回调和新增的 {@code Activity.onProvideAssistContent()} 回调(可选操作)。
-</ol>
-
-<h2 id="notifications">通知</h2>
-<p>本预览版针对通知功能引入了下列 API 变更:</p>
-<ul>
-  <li>新增了 {@code NotificationListenerService.INTERRUPTION_FILTER_ALARMS} 过滤级别,它对应于新增的“仅闹铃”<em></em>免打扰模式。
-</li>
-  <li>新增了 {@code Notification.CATEGORY_REMINDER} 类别值,用于区分用户安排的提醒与其他事件 ({@link android.app.Notification#CATEGORY_EVENT}) 和闹铃 ({@link android.app.Notification#CATEGORY_ALARM})。
-
-
-</li>
-  <li>新增了 {@code android.graphics.drawable.Icon} 类,可通过 {@code Notification.Builder.setSmallIcon(Icon)} 方法和 
-{@code Notification.Builder.setLargeIcon(Icon)} 方法附加到通知上。
-</li>
-  <li>新增了 {@code NotificationManager.getActiveNotifications()} 方法,让您的应用能够了解哪些通知目前处于活动状态。
-如需查看使用此功能的应用实现,请参阅<a href="https://github.com/googlesamples/android-ActiveNotifications" class="external-link">活动通知示例</a>。
-</li>
-</ul>
-
-<h2 id="bluetooth-stylus">蓝牙触控笔支持</h2>
-<p>本预览版改善了对用户使用蓝牙触控笔进行输入的支持。用户可将兼容的蓝牙触控笔与其手机或平板电脑配对并建立连接。
-连接后,来自触摸屏的位置信息将与来自触控笔的压力和按键信息融合,从而实现比单纯使用触摸屏更丰富的表达。
-
-您的应用可以通过在活动中注册新增的 
-{@code View.onStylusButtonPressListener} 回调和 {@code GestureDetector.OnStylusButtonPressListener}
- 回调侦听触控笔按键动作并执行辅助操作。
-</p>
-
-<p>可使用 {@link android.view.MotionEvent} 方法和常量来检测触控笔按键交互:
-</p>
-<ul>
-<li>如果用户使用带按键的触控笔触按应用屏幕,
-{@link android.view.MotionEvent#getToolType(int) getTooltype()} 方法会返回 
-{@link android.view.MotionEvent#TOOL_TYPE_STYLUS}。</li>
-<li>对于以 M 预览版为目标平台的应用,当用户按触控笔的主按键时,
-{@link android.view.MotionEvent#getButtonState() getButtonState()}
- 方法会返回 {@code MotionEvent.STYLUS_BUTTON_PRIMARY}。
-如果触控笔有辅助按键,当用户按下它时,同一方法会返回 
-{@code MotionEvent.STYLUS_BUTTON_SECONDARY}。如果用户同时按下两个按键,该方法会同时返回通过 OR 运算符连接起来的两个值 ({@code STYLUS_BUTTON_PRIMARY|STYLUS_BUTTON_SECONDARY})。
-
-</li>
-<li>
-对于以较低平台版本为目标的应用,
-{@link android.view.MotionEvent#getButtonState() getButtonState()} 方法返回 
-{@link android.view.MotionEvent#BUTTON_SECONDARY}(按下触控笔主按键时)、
-{@link android.view.MotionEvent#BUTTON_TERTIARY}(按下触控笔辅助按键时)之一或同时返回这两者。
-</li>
-</ul>
-
-<h2 id="ble-scanning">改进的蓝牙低功耗扫描</h2>
-<p>
-如果您的应用执行蓝牙低功耗扫描,可以使用新增的 
-{@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} 方法指定您只希望在下列条件下通知回调:首次找到与设置的 
-{@link android.bluetooth.le.ScanFilter} 匹配的播发数据包并且该数据包已有一段时间没有出现。
-
-这种扫描方法与旧平台版本中提供的方法相比更加节能。
-
-</p>
-
-<h2 id="hotspot">Hotspot 2.0 第 1 版支持</h2>
-<p>
-本预览版在 Nexus 6 和 Nexus 9 设备上添加了对 Hotspot 2.0 第 1 版规范的支持。如需在您的应用中设置 Hotspot 2.0 凭据,请使用新增的 
-{@link android.net.wifi.WifiEnterpriseConfig} 类方法,如 {@code setPlmn()} 方法和 
-{@code setRealm()} 方法。
-在 {@link android.net.wifi.WifiConfiguration} 对象中,您可以设置 
-{@link android.net.wifi.WifiConfiguration#FQDN} 字段和 {@code providerFriendlyName} 字段。
-新增的 {@code ScanResult.PasspointNetwork} 属性可指示检测到的网络是否为 Hotspot 2.0 接入点。
-
-</p>
-
-<h2 id="4K-display">4K 显示模式</h2>
-<p>现在,平台允许应用在兼容硬件上请求将显示分辨率升级到 4K 渲染。
-如需查询当前物理分辨率,请使用新增的 
-{@code android.view.Display.Mode} API。请注意,如果 UI 是以较低逻辑分辨率绘制并通过放大达到更高的物理分辨率,则 
-{@code Display.Mode.getPhysicalWidth()} 方法返回的物理分辨率可能不同于 {@link android.view.Display#getSize(android.graphics.Point) getSize()} 所报告的逻辑分辨率。
-
-</p>
-
-<p>您可以通过设置应用窗口的 {@code WindowManager.LayoutParams.preferredDisplayModeId} 属性请求系统更改应用运行时的物理分辨率。
-如果您想切换到 4K 显示分辨率,此功能会很有帮助。
-在 4K 显示模式下,UI 仍然以原始分辨率(如 1080p)渲染,通过放大达到 4K,但 
-{@link android.view.SurfaceView} 对象可能会以原生分辨率显示内容。
-</p>
-
-<h2 id="behavior-themeable-colorstatelists">主题化 ColorStateList</h2>
-<p>对于运行 M 预览版的设备,现在支持在 
-{@link android.content.res.ColorStateList} 中使用主题属性。
-{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} 方法和 
-{@link android.content.res.Resources#getColor(int) getColor()} 方法已弃用。如果您要调用这些 API,请改为调用新增的 {@code Context.getColorStateList()} 方法或 
-{@code Context.getColor()} 方法。
-还可在 v4 appcompat 库中通过 {@link android.support.v4.content.ContextCompat} 使用这些方法。
-</p>
-
-<h2 id="audio">音频功能</h2>
-
-<p>本预览版增强了 Android 上的音频处理功能,包括: </p>
-<ul>
-  <li>通过新增的 {@code android.media.midi} API 提供了对 <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a>
- 协议的支持。使用这些 API 可发送和接收 MIDI 事件。
-</li>
-  <li>新增了 {@code android.media.AudioRecord.Builder} 类和 {@code android.media.AudioTrack.Builder}
- 类,分别用于创建数字音频采集和回放对象,还可用于配置音频源和接收器属性来替代系统默认值。
-</li>
-  <li>用于关联音频和输入设备的 API 钩子。如果您的应用允许用户通过与 Android TV 相连的游戏控制器或遥控器启动语音搜索,此功能尤为有用。系统会在用户启动搜索时调用新增的 {@code android.app.Activity.onSearchRequested()} 回调。
-
-
-如需确定用户的输入设备是否内置麦克风,请从该回调检索 {@link android.view.InputDevice} 对象,然后调用新增的 
-{@code InputDevice.hasMic()} 方法。
-</li>
-  <li>新增了 {@code android.media.AudioDevicesManager} 类,让您可以检索连接的所有源设备和接收器音频设备列表。
-如果您想让应用在音频设备连接或断开时收到通知,还可以指定一个 
-{@code android.media.OnAudioDeviceConnectionListener} 对象。
-</li>
-</ul>
-
-<h2 id="video">视频功能</h2>
-<p>本预览版为视频处理 API 添加了新功能,包括:</p>
-<ul>
-<li>新增了 {@code android.media.MediaSync} 类,可帮助应用同步渲染音频流和视频流。
-音频缓冲区以非锁定方式提交,并通过回调返回。
-此外,它还支持动态回放速率。
-</li>
-<li>新增了 {@code MediaDrm.EVENT_SESSION_RECLAIMED} 事件,它表示应用打开的会话已被资源管理器收回。
-如果您的应用使用 DRM 会话,则应处理此事件,并确保不使用收回的会话。
-
-</li>
-<li>新增了 {@code MediaCodec.CodecException.ERROR_RECLAIMED} 错误代码,它表示资源管理器收回了编解码器使用的媒体资源。
-出现此异常时,必须释放编解码器,因为它已转入终止状态。
-
-</li>
-<li>新增了 {@code MediaCodecInfo.CodecCapabilities.getMaxSupportedInstances()} 接口,用于获取有关支持的编解码器实例最大并发数量的提示。
-
-</li>
-<li>新增了 {@code MediaPlayer.setPlaybackParams()} 方法,用于设置快动作回放或慢动作回放的媒体回放速率。
-此外,它还会随视频一起自动拉长或加速音频回放。
-</li>
-</ul>
-
-<h2 id="camera">相机功能</h2>
-<p>本预览版提供了下列用于访问相机闪光灯和相机图像再处理的新 API:
-</p>
-
-<h3 id="flashlight">闪光灯 API</h3>
-<p>如果相机设备带有闪光灯,您可以通过调用 {@code CameraManager.setTorchMode()}
- 方法,在不打开相机设备的情况下打开或关闭闪光灯的火炬模式。应用对闪光灯或相机设备不享有独占所有权。
-每当相机设备不可用,或者开启火炬的其他相机资源不可用时,火炬模式即会被关闭并变为不可用状态。
-
-其他应用也可调用 {@code setTorchMode()} 来关闭火炬模式。
-当最后一个开启火炬模式的应用关闭时,火炬模式就会被关闭。
-</p>
-
-<p>您可以注册一个回调,通过调用 
-{@code CameraManager.registerTorchCallback()} 方法接收有关火炬模式状态的通知。第一次注册回调时,系统会立即调用它,并返回所有当前已知配备闪光灯的相机设备的火炬模式状态。
-
-如果成功开启或关闭火炬模式,系统会调用 
-{@code CameraManager.TorchCallback.onTorchModeChanged()} 方法。</p>
-
-<h3 id="reprocessing">再处理 API</h3>
-<p>{@link android.hardware.camera2 Camera2} API 进行了扩展,以支持 YUV 和专用不透明格式图像再处理。
-您的应用通过 {@code CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES} 确定再处理功能是否可用。
-如果设备支持再处理,您可以通过调用 
-{@code CameraDevice.createReprocessableCaptureSession()} 创建一个可再处理的相机捕获会话并创建输入缓冲区再处理请求。
-
-</p>
-
-<p>使用 {@code ImageWriter} 类可将输入缓冲区流与相机再处理输入相连。
-如需获得空白缓冲区,请遵循以下编程模型:</p>
-
-<ol>
-<li>调用 {@code ImageWriter.dequeueInputImage()} 方法。</li>
-<li>在输入缓冲区中填充数据。</li>
-<li>通过调用 {@code ImageWriter.queueInputImage()} 方法将缓冲区发送至相机。</li>
-</ol>
-
-<p>如果您将 {@code ImageWriter} 对象与 
-{@code android.graphics.ImageFormat.PRIVATE} 图像一起使用,您的应用并不能直接访问图像数据。
-请改为调用 {@code ImageWriter.queueInputImage()} 方法,将 {@code ImageFormat.PRIVATE} 图像直接传递给 
-{@code ImageWriter},而无需进行任何缓冲区复制。
-</p>
-
-<p>{@code ImageReader} 类现在支持 {@code android.graphics.ImageFormat.PRIVATE} 格式图像流。
-凭借此支持特性,您的应用可使 
-{@code ImageReader} 输出图像保持为循环图像队列,还可选择一个或多个图像并将其发送给 
-{@code ImageWriter} 进行相机再处理。</p>
-
-<h2 id="afw">Android for Work 功能</h2>
-<p>本预览版提供了下列用于 Android for Work 的新 API:</p>
-<ul>
-  <li><strong>用于企业所有、单一用途设备的增强型控件</strong>:现在,设备所有者可以通过控制以下设置来改善企业所有、单一用途 (COSU) 设备的管理:
-
-
-  <ul>
-    <li>通过 
-{@code DevicePolicyManager.setKeyguardEnabledState()} 方法禁用或重新启用键盘锁。</li>
-    <li>通过 
-{@code DevicePolicyManager.setStatusBarEnabledState()} 方法禁用或重新启用状态栏(包括快速设置、通知以及启动 Google Now 的向上划动手势)。
-</li>
-    <li>通过 {@link android.os.UserManager} 常量 
-{@code DISALLOW_SAFE_BOOT} 禁用或重新启用安全启动</li>
-    <li>通过 
-{@link android.provider.Settings.Global} 常量 {@code STAY_ON_WHILE_PLUGGED_IN} 防止屏幕在插入电源的情况下关闭。</li>
-  </ul>
-  </li>
-  <li><strong>设备所有者静默式安装和卸载应用</strong>:现在,设备所有者可使用 {@link android.content.pm.PackageInstaller}
- API 在不依赖 Google Play for Work 的情况下静默式安装和卸载应用。
-现在,您可以通过设备所有者配置设备,从而无需用户干预即可获取并安装应用。
-此功能可用于在不激活 Google 帐户的情况下实现信息亭或其他此类设备的一键式配置。
-</li>
-<li><strong>静默式企业证书访问</strong>:现在,当应用调用 
-{@link android.security.KeyChain#choosePrivateKeyAlias(android.app.Activity,android.security.KeyChainAliasCallback,java.lang.String[],java.security.Principal[],java.lang.String,int,java.lang.String) choosePrivateKeyAlias()} 时,配置文件所有者或设备所有者可以在系统提示用户选择证书前调用 {@code DeviceAdminReceiver.onChoosePrivateKeyAlias()} 方法,静默式向发出请求的应用提供别名。
-
-
-此功能让您可以在无需用户干预的情况下授予托管应用访问证书的权限。
-</li>
-<li><strong>自动接受系统更新</strong>。现在,设备所有者可以通过 
-{@code DevicePolicyManager.setSystemUpdatePolicy()} 设置一个系统更新政策来自动接受系统更新(例如对于信息亭设备),或者推迟更新并在至多 30 天的时间内防止用户获取更新。
-
-此外,管理员还可设置每日必须获取更新的时间窗口,例如在信息亭设备无人使用的时段。
-有可用的系统更新时,系统会检查工作政策控制器应用是否设置了系统更新政策,并相应地执行操作。
-
-
-</li>
-<li>
-<strong>授权证书安装</strong>:配置文件所有者或设备所有者现在可以授权第三方应用调用以下 {@link android.app.admin.DevicePolicyManager} 证书管理 API:
-
-
-<ul>
-  <li>{@link android.app.admin.DevicePolicyManager#getInstalledCaCerts(android.content.ComponentName)
-getInstalledCaCerts()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#hasCaCertInstalled(android.content.ComponentName,byte[])
-hasCaCertInstalled()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#installCaCert(android.content.ComponentName,byte[])
-installCaCert()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#uninstallCaCert(android.content.ComponentName,byte[])
-uninstallCaCert()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#uninstallAllUserCaCerts(android.content.ComponentName)
-uninstallAllUserCaCerts()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#installKeyPair(android.content.ComponentName,java.security.PrivateKey,java.security.cert.Certificate,java.lang.String)
-installKeyPair()}</li>
-</ul>
-</li>
-<li><strong>企业恢复出厂设置保护</strong>:现在,配置设备所有者时,您可以通过设置 
-{@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS} 捆绑包配置参数来解锁恢复出厂设置保护 (FRP)。
-在重置设备以解锁 FRP 和配置设备之后,NFC 编程器应用可提供这些参数,而无需事先配置 Google 帐户。
-
-如果您不修改这些参数,FRP 仍然发挥作用,必须使用之前激活的 Google 凭据方可激活设备。
-
-
-<p>此外,通过对 Google Play 服务设置应用限制,设备所有者可以指定用于 FRP 解锁的备用 Google 帐户,以替代在设备上激活的 Google 帐户。
-</p>
-</li>
-<img src="{@docRoot}preview/images/work-profile-screen.png" srcset="{@docRoot}preview/images/work-profile-screen.png 1x, {@docRoot}preview/images/work-profile-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-<li><strong>数据使用情况跟踪</strong>。现在,配置文件所有者或设备所有者可以利用新增的 
-{@code android.app.usage.NetworkStatsManager} 方法查询<strong>设置 &gt; 数据使用情况</strong>中显示的数据使用情况统计信息。
-配置文件所有者会被自动授予查询其管理的配置文件相关数据的权限,而设备所有者则被授予对其管理的主要用户使用情况数据的访问权。
-
-</li>
-<li><strong>运行时权限管理</strong>:
-<p>配置文件所有者或设备所有者可以利用 
-{@code DevicePolicyManager.setPermissionPolicy()} 设置适用于所有应用全部运行时请求的权限政策,以提示用户照常授予权限,或自动以静默方式授予或拒绝权限。
-
-如果设置后一种政策,则用户将无法修改配置文件所有者或设备所有者在应用权限屏幕的<strong>设置</strong>内所做的选择。
-
-</p></li>
-<li><strong>“设置”中的 VPN</strong>:现在,<strong>设置 &gt; 更多 &gt; VPN</strong> 中会显示 VPN 应用。此外,现在,关于 VPN 使用情况的通知取决于该 VPN 的配置方式。
-
-
-对于配置文件所有者,通知取决于该 VPN 是针对托管配置文件、个人配置文件还是同时针对这两者进行配置。
-对于设备所有者,通知取决于 VPN 是否针对整个设备进行配置。
-</li>
-<li><strong>工作状态通知</strong>:现在,每当来自托管配置文件的应用具有前台活动时,状态栏就会出现一个公文包图标。
-此外,如果设备直接解锁到托管配置文件中某个应用的活动,则会显示一个 Toast,通知用户他们位于托管配置文件内。
-
-
-</li>
-</ul>
-
-<p class="note">
-  如需详细了解 M 开发者预览版中的所有 API 变更,请参阅 <a href="{@docRoot}preview/download.html">API 差异报告</a>。
-</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/backup/index.jd b/docs/html-intl/intl/zh-cn/preview/backup/index.jd
deleted file mode 100644
index 39786a3..0000000
--- a/docs/html-intl/intl/zh-cn/preview/backup/index.jd
+++ /dev/null
@@ -1,327 +0,0 @@
-page.title=自动备份应用
-page.tags=备份, 预览版资源, androidm
-page.keywords=备份, 自动备份, 预览版
-page.image=images/cards/card-auto-backup_2x.png
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本文内容</h2>
-      <ol>
-        <li><a href="#overview">概览</a></li>
-        <li><a href="#configuring">配置数据备份</a></li>
-        <li><a href="#testing">测试备份配置</a></li>
-        <li><a href="#issues">已知问题</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  通常,用户需要投入大量的时间和精力在应用内创建数据和设置首选项。
-如果用户更换破损设备或升级至新设备,则保留用户数据对于确保提供卓越的用户体验至关重要。
-在这些情况下,运行 Android M 预览版系统的设备可以通过将应用数据自动备份到 Google Drive,帮助确保提供卓越的用户体验。
-
-这样,即使用户更换或升级设备,应用数据也可自动恢复。
-
-</p>
-
-<p>
-  对于运行 Android M 预览版的设备中所有已安装的应用,均可启用自动备份。无需额外提供应用代码。
-该系统允许用户选择禁止自动数据备份。
-此外,您还可以选择限制要备份应用中的哪些数据。
-</p>
-
-<p>
-  本文介绍了新系统行为,阐述了如何指定要为应用备份哪些数据。
-
-</p>
-
-<h2 id="overview">概览</h2>
-
-<p>
-  自动备份功能可以通过将应用在用户设备中创建的数据上传到用户的 Google Drive 帐户并进行加密,来保留这些数据。
-您或用户无需为数据存储付费,且保存的数据不计入用户个人的 Drive 配额。
-在 M 预览版运行期间,用户可针对每个 Android 应用存储多达 25MB 的数据。
-
-</p>
-
-<p>
-  当设备处于空闲、充电以及连接至 Wi-Fi 网络时,会每 24 小时自动备份一次数据。
-满足上述这些条件后,备份管理器服务会将所有可用的备份数据上传至云端。
-当用户改用新设备或卸载并重新安装备份的应用时,恢复操作会将备份的数据复制到新安装的应用的数据目录中。
-
-
-</p>
-
-<p class="note">
-  <strong>注:</strong>如果应用使用旧版 <a href="{@docRoot}google/backup/index.html">Android 备份服务</a>,则此新行为不适用,不过现有的备份行为会照常运行。
-
-
-</p>
-
-
-<h3 id="auto-exclude">自动排除的数据文件</h3>
-
-<p>
-  并非所有应用数据均应备份,例如临时文件和缓存文件就无需备份,因此自动备份服务会默认排除如下一些特定的数据文件:
-
-</p>
-
-<ul>
-  <li>通过 {@link android.content.Context#getCacheDir
-    getCacheDir()} 和 {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()}
- 方法所引用的目录中的文件
-  </li>
-
-  <li>位于外部存储中的文件,除非这些文件是驻留在通过 
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
- 方法所引用的目录中
-  </li>
-
-  <li>位于通过 
-{@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()} 方法所引用的目录中的文件
-  </li>
-</ul>
-
-<h2 id="configuring">配置数据备份</h2>
-
-<p>
-  除了上一部分中列出的自动排除的文件外,凡 M 预览版设备中安装的任何应用所创建的数据均会备份。
-您可以使用应用清单文件中的设置,进一步限制和配置应用中的哪些数据需要备份。
-
-</p>
-
-<h3 id="include-exclude">包括或排除数据</h3>
-
-<p>
-  根据应用所需的数据及其保存方式,您可能需要针对包括或排除哪些特定的文件或目录设置具体的规则。
-自动备份服务支持使用 XML 配置文件和应用清单文件来设置这些备份规则。
-
-您可以在应用清单文件中指定备份架构配置文件,如下例所示:
-
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:tools="http://schemas.android.com/tools"
-        package="com.my.appexample"&gt;
-    &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
-    &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
-    &lt;app ...
-<strong>        android:fullBackupContent="&#64;xml/mybackupscheme"&gt;</strong>
-    &lt;/app&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
-
-<p>
-  在此示例代码中,<code>android:fullBackupContent</code> 属性指定了一个 XML 文件。该文件名为 
-<code>mybackupscheme.xml</code>,位于应用开发项目的 <code>res/xml/</code> 目录中。
-此配置文件包括关于要备份哪些文件的规则。
-下列示例代码显示了将某一特定文件排除在备份之外的配置文件:
-
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;full-backup-content&gt;
-    &lt;exclude domain="database" path="device_info.db"/&gt;
-&lt;/full-backup-content&gt;
-</pre>
-
-<p>
-  此示例备份配置仅将一个特定数据库文件排除在备份之外。
-  所有其他文件均予以备份。
-</p>
-
-<h4>备份配置语法</h4>
-
-<p>
-  您可以通过备份服务配置指定备份中要包括或排除哪些文件。
-数据备份配置 xml 文件的语法如下:
-</p>
-
-<pre>
-&lt;full-backup-content&gt;
-    &lt;include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
-    &lt;exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
-&lt;/full-backup-content&gt;
-</pre>
-
-<p>
-  您可以使用下列元素和属性指定备份中要包括或排除哪些文件:
-
-</p>
-
-<ul>
-  <li>
-  <code>&lt;include&gt;</code>。如果您想指定一组要备份的资源,而不是默认由系统备份应用中的所有数据,请使用此元素。
-如果您指定了 <code>&lt;include&gt;</code> 标记,系统将仅备份使用此元素指定的资源。<em></em>
-
-
-  </li>
-
-  <li>
-  <code>&lt;exclude&gt;</code>。使用此元素指定一组要排除在备份之外的资源。
-除了使用此元素指定的资源外,系统将备份应用中的所有数据。
-
-  </li>
-
-  <li>
-  <code>domain.</code> 您想要在备份中包括或排除的资源类型。您可为此属性指定的有效值包括:
-
-  </li>
-
-  <li style="list-style: none">
-  <ul>
-    <li>
-    <code>root</code>。指定资源处于应用的根目录中
-    </li>
-
-    <li>
-    <code>file</code>。与通过 
-{@link android.content.Context#getFilesDir getFilesDir()} 方法返回的目录中的某个资源相对应
-    </li>
-
-    <li>
-    <code>database</code>。与通过 
-{@link android.content.Context#getDatabasePath getDatabasePath()} 方法或使用 
-{@link android.database.sqlite.SQLiteOpenHelper} 类返回的某个数据库相对应
-    </li>
-
-    <li>
-    <code>sharedpref</code>。与通过 {@link android.content.Context#getSharedPreferences getSharedPreferences()}
- 方法返回的某个 {@link android.content.SharedPreferences} 对象相对应
-
-    </li>
-
-    <li>
-    <code>external</code>。指定资源位于外部存储中,且与通过 
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()} 方法返回的目录中的某个文件相对应
-
-    </li>
-
-    <li>
-    <code>path</code>。您想要在备份中包括或排除的资源的文件路径
-
-    </li>
-  </ul>
-  </li>
-</ul>
-
-
-<h3 id="prohibit">禁止数据备份</h3>
-
-<p>
-  通过在清单文件的应用元素中将 
-<code>android:allowBackup</code> 属性设置为 <code>false</code>,您可选择阻止自动备份任何应用数据。
-此设置如下列示例代码所示:
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:tools="http://schemas.android.com/tools"
-        package="com.my.appexample"&gt;
-    &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
-    &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
-    &lt;app ...
-<strong>        android:allowBackup="false"&gt;</strong>
-    &lt;/app&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
-
-
-<h2 id="testing">测试备份配置</h2>
-
-<p>
-  创建备份配置后,您应立即进行测试,确保应用能够保存数据,且数据能够正确恢复。
-
-</p>
-
-
-<h4>启用备份日志记录</h4>
-
-<p>
-  要帮助确定备份功能如何解析 XML 文件,请在执行测试备份之前启用日志记录功能:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
-</pre>
-
-<h4>测试备份</h4>
-
-<p>要手动运行备份,您首先必须通过调用下列命令初始化备份管理器:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr run
-</pre>
-
-<p>
-  然后,使用下列命令并以 <code>&lt;PACKAGE&gt;</code> 参数指定应用的软件包名称来手动备份应用:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr fullbackup &lt;PACKAGE&gt;</pre>
-
-
-<h4>测试恢复</h4>
-
-<p>
-  要在备份应用数据后手动启动数据恢复,请调用下列命令,并以 <code>&lt;PACKAGE&gt;</code> 参数指定应用的软件包名称:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr restore &lt;PACKAGE&gt;
-</pre>
-
-<p class="warning">
-  <b>警告:</b>执行恢复操作之前,此操作将阻止您的应用运行并擦除其数据。
-
-</p>
-
-<p>
-  您可以通过卸载并重新安装应用来启动数据恢复进程。应用安装完成后,系统会立即自动从云中恢复应用数据。
-
-</p>
-
-
-<h4>诊断备份问题</h4>
-
-<p>
-  如果遇到问题,可通过在<strong>设置 &gt; 备份</strong>中先关闭然后重新打开备份、将设备恢复出厂设置或者调用以下命令,来清除备份数据及关联的元数据:
-
-
-</p>
-
-<pre>$ adb shell bmgr wipe &lt;TRANSPORT&gt; &lt;PACKAGE&gt;</pre>
-
-<p>
-  <code>&lt;TRANSPORT&gt;</code> 值必须以 <code>com.google.android.gms</code> 为前缀。
-  要获取传输列表,请调用下列命令:
-</p>
-
-<pre>$ adb shell bmgr list transports</pre>
-
-<h2 id="issues">已知问题</h2>
-
-<p>以下是自动备份服务的已知问题:</p>
-
-<ul>
-  <li><strong>Google 云消息传递</strong>:对于使用 Google 云消息传递推送通知的应用,存在一个已知问题,即:备份通过 Google 云消息传递注册所返回的注册 ID 时,可能会中断已恢复应用的推送通知。为此,应用安装到新设备后,务必查询 API,看是否具有新注册 ID,这一点至关重要。如果已备份旧注册 ID,则不会出现这种情况。
-
-
-
-
-为避免这种现象,请从已备份文件集中排除注册 ID。
-
-  </li>
-</ul>
diff --git a/docs/html-intl/intl/zh-cn/preview/behavior-changes.jd b/docs/html-intl/intl/zh-cn/preview/behavior-changes.jd
deleted file mode 100644
index 39494b9..0000000
--- a/docs/html-intl/intl/zh-cn/preview/behavior-changes.jd
+++ /dev/null
@@ -1,402 +0,0 @@
-page.title=行为变更
-page.keywords=预览版,sdk,兼容性
-sdk.platform.apiLevel=MNC
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>本文内容</h2>
-
-<ol id="toc44" class="hide-nested">
-    <li><a href="#behavior-runtime-permissions">运行时权限</a></li>
-    <li><a href="#behavior-power">节能优化</a>
-        <ol>
-            <li><a href="#behavior-doze">打盹</a></li>
-            <li><a href="#behavior-app-standby">应用待机</a></li>
-        </ol>
-    </li>
-    <li><a href="#behavior-adoptable-storage">可采用的存储设备</a></li>
-    <li><a href="#behavior-apache-http-client">取消支持 Apache HTTP 客户端</a></li>
-    <li><a href="#behavior-audiomanager-Changes">音频管理器变更</a></li>
-    <li><a href="#behavior-test-selection">文本选择</a></li>
-    <li><a href="#behavior-keystore">Android 密钥库变更</a></li>
-    <li><a href="#behavior-network">Wi-Fi 和网络连接变更</a></li>
-    <li><a href="#behavior-camera">相机服务变更</a></li>
-    <li><a href="#behavior-art-runtime">ART 运行时</a></li>
-    <li><a href="#behavior-apk-validation">APK 验证</a></li>
-    <li><a href="#behavior-afw">Android for Work 变更</a></li>
-</ol>
-
-<h2>API 差异</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">API 级别 22 至 M 预览版&raquo;</a> </li>
-</ol>
-
-
-<h2>另请参阅</h2>
-<ol>
-<li><a href="{@docRoot}preview/api-overview.html">M 开发者预览版 API 概览</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M 开发者预览版除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更。
-本文重点介绍您应该了解并在开发应用时加以考虑的一些重要变更。
-</p>
-
-<p>如果您之前发布过 Android 应用,请注意您的应用可能受到这些平台变更的影响。
-</p>
-
-<h2 id="behavior-runtime-permissions">运行时权限</h1>
-<p>本预览版引入了一种新的权限模型,如今,用户可直接在运行时管理应用权限。
-这种模型让用户能够更好地了解和控制权限,同时为应用开发者精简了安装和自动更新过程。用户可为所安装的各个应用分别授予或撤销权限。
-
- </p>
-
-<p>对于面向 M 预览版开发的应用,请务必在运行时检查和请求权限。
-如需确定您的应用是否已被授予权限,请调用新增的 {@code Context.checkSelfPermission()} 方法。
-如需请求权限,请调用新增的 
-{@code Activity.requestPermission()} 方法。即使您的应用不是针对 M 开发的,您也应该在新权限模型下测试您的应用。
-</p>
-
-<p>如需了解有关在您的应用中支持新权限模型的详细信息,请参阅开发者预览版的<a href="{@docRoot}preview/features/runtime-permissions.html">权限</a>页面。
-
-如需了解如何评估新模型对应用的影响,请参阅<a href="{@docRoot}preview/testing/guide.html#runtime-permissions">测试指南</a>。
-</p>
-
-<h2 id="behavior-power">节能优化</h2>
-<p>本预览版引入了针对空闲设备和应用的最新节能优化技术。</p>
-
-<h3 id="behavior-doze">打盹</h3>
-<p>如果设备未插入电源,并在屏幕关闭后的一段时间内保持不活动状态,则会进入<em>打盹</em>模式,在该模式下设备会尝试让系统保持休眠状态。
-在该模式下,设备会定期短时间恢复正常工作,以便进行应用同步,还可让系统执行任何挂起的操作。
-
-</p>
-
-<p>在打盹模式下,您的应用会受到以下限制:</p>
-<ul>
-<li>网络访问被禁用,除非您的应用获得高优先级 Google Cloud Messaging 操作消息 (tickle)。
-</li>
-<li><a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">唤醒锁</a>会被忽略。</li>
-<li>通过 {@link android.app.AlarmManager} 类设置的闹铃会被禁用,但通过 {@link android.app.AlarmManager#setAlarmClock setAlarmClock()} 方法和 {@code AlarmManager.setAndAllowWhileIdle()} 方法设置的闹铃除外。
-
-</li>
-<li>不执行 WiFi 扫描</li>
-<li>不允许运行同步适配器和 {@link android.app.job.JobScheduler} 的同步和作业。
-</li>
-</ul>
-</p>
-<p>当设备退出打盹模式时,它会执行任何挂起的作业和同步。</p>
-<p>您可以通过将运行 M 预览版的设备与您的开发计算机相连,并调用以下命令来测试此功能:
-
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-<p class="note"><strong>注</strong>:即将推出的 
-<a href="https://developers.google.com/cloud-messaging/" class="external-link">
- Google Cloud Messaging</a> 版本允许您指定高优先级消息。
-如果您的应用收到高优先级 GCM 消息,即使设备处于打盹模式,系统也会向其授予短时间的网络访问权限。
-
-</p>
-
-<p>如需了解在您的应用中测试打盹模式的技巧,请参阅
-<a href="{@docRoot}preview/testing/guide.html#doze-standby">测试指南</a>。
- </p>
-
-<h3 id="behavior-app-standby">应用待机</h3>
-<p>使用本预览版时,系统会在应用未被主动使用时确定其处于空闲状态。
-除非系统检测到以下信号之一,否则将在一段时间后将您的应用视为处于空闲状态:
-</p>
-
-<ul>
-<li>用户显式启动应用。</li>
-<li>应用当前有一个进程位于前台(表现为活动或前台服务形式,或被另一活动或前台服务占用)。
-</li>
-<li>应用生成用户可在锁屏或通知托盘中看到的通知。
-</li>
-<li>用户通过<strong>设置</strong>显式请求不对应用进行优化。
-</li>
-</ul>
-
-<p>如果设备未插入电源,系统会将被视为处于空闲状态的应用的网络访问禁用,并暂停其同步和作业。
-当设备插入电源时,系统将允许这些应用访问网络并执行任何挂起的作业和同步。
-如果设备长时间处于空闲状态,系统将按每天大约一次的频率允许空闲状态的应用访问网络。
-</p>
-
-<p>您可以通过将运行 M 预览版的设备与您的开发计算机相连,并调用以下命令来测试此功能:
-
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell am set-idle &lt;packageName&gt; true
-$ adb shell am set-idle &lt;packageName&gt; false
-$ adb shell am get-idle &lt;packageName&gt;
-</pre>
-
-<p class="note"><strong>注</strong>:即将推出的 
-<a href="https://developers.google.com/cloud-messaging/" class="external-link">
- Google Cloud Messaging</a> (GCM) 版本允许您指定高优先级消息。
-如果您的应用收到高优先级 GCM 消息,即使其处于空闲状态,也会被授予短时间的网络访问权限。
-
-</p>
-
-<p>如需了解在您的应用中测试应用待机的技巧,请参阅
-<a href="{@docRoot}preview/testing/guide.html#doze-standby">测试指南</a>。
- </p>
-
-<h2 id="behavior-adoptable-storage">可采用的存储设备</h2>
-<p>
-使用本预览版时,用户可以<em>采用</em> SD 卡等外部存储设备。采用外部存储设备可加密和格式化设备,使其具有类似内部存储设备的行为。
-用户可以利用此特性在存储设备之间移动应用及其私有数据。
-移动应用时,系统会遵守清单文件中的 
-<a href="{@docRoot}guide/topics/manifest/manifest-element.html#install">{@code android:installLocation}</a>
- 首选项。
-</p>
-
-<p>请注意,在内部存储设备与外部存储设备之间移动应用时,如果您的应用访问以下 API 或字段,它们返回的文件路径将会动态变化。郑重建议:在生成文件路径时,请始终动态调用这些 API。请勿使用硬编码文件路径或之前生成的永久性完全限定文件路径。
-
-
-</p>
-
-<ul>
-<li>{@link android.content.Context} 方法:
-    <ul>
-        <li>{@link android.content.Context#getFilesDir() getFilesDir()}</li>
-        <li>{@link android.content.Context#getCacheDir() getCacheDir()}</li>
-        <li>{@link android.content.Context#getCodeCacheDir() getCodeCacheDir()}</li>
-        <li>{@link android.content.Context#getDatabasePath(java.lang.String) getDatabasePath()}</li>
-        <li>{@link android.content.Context#getDir(java.lang.String,int) getDir()}</li>
-        <li>{@link android.content.Context#getNoBackupFilesDir() getNoBackupFilesDir()}</li>
-        <li>{@link android.content.Context#getFileStreamPath(java.lang.String) getFileStreamPath()}</li>
-        <li>{@link android.content.Context#getPackageCodePath() getPackageCodePath()}</li>
-        <li>{@link android.content.Context#getPackageResourcePath() getPackageResourcePath()}</li>
-    </ul>
-</li>
-<li>{@link android.content.pm.ApplicationInfo} 字段:
-    <ul>
-        <li>{@link android.content.pm.ApplicationInfo#dataDir dataDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#sourceDir sourceDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#nativeLibraryDir nativeLibraryDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#publicSourceDir publicSourceDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#splitSourceDirs splitSourceDirs}</li>
-        <li>{@link android.content.pm.ApplicationInfo#splitPublicSourceDirs splitPublicSourceDirs}</li>
-    </ul>
-</li>
-</ul>
-
-<p>如需在开发者预览版中调试此功能,您可以将一个 USB 驱动器通过一根 USB On-The-Go (OTG) 电缆连接到 Android 设备并运行以下命令启用对该 USB 驱动器的采用:
-</p>
-
-<pre class="no-prettyprint">
-$ adb shell sm set-force-adoptable true
-</pre>
-
-<h2 id="behavior-apache-http-client">取消支持 Apache HTTP 客户端</h2>
-<p>本预览版取消了对 Apache HTTP 客户端的支持。如果您的应用使用该客户端,并以 Android 2.3(API 级别 9)或更高版本为目标平台,请改用 {@link java.net.HttpURLConnection} 类。
-
-此 API 效率更高,因为它可以通过透明压缩和响应缓存减少网络使用,并可最大限度降低耗电量。
-如需继续使用 Apache HTTP API,您必须先在 {@code build.gradle} 文件中声明以下编译时依赖项:
-
-</p>
-<pre>
-android {
-    useLibrary 'org.apache.http.legacy'
-}
-</pre>
-<p>Android 正在从使用 OpenSSL 库转向使用 
-<a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a>
- 库。如果您要在应用中使用 Android NDK,请勿链接到并非 NDK API 组成部分的加密库,如 {@code libcrypto.so} 和 {@code libssl.so}。
-这些库并非公共 API,可能会在不同版本和设备上毫无征兆地发生变化或出现故障。此外,您还可能让自己暴露在安全漏洞的风险之下。
-
-请改为修改原生代码,以通过 JNI 调用 Java 加密 API,或静态链接到您选择的加密库。
-
-</p>
-
-<h2 id="behavior-audiomanager-Changes">音频管理器变更</h2>
-<p>不再支持通过 {@link android.media.AudioManager}
- 类直接设置音量或将特定音频流静音。{@link android.media.AudioManager#setStreamSolo(int,boolean)
-setStreamSolo()} 方法已弃用,您应该改为调用
-{@code AudioManager.requestAudioFocus()} 方法。类似地,
-{@link android.media.AudioManager#setStreamMute(int,boolean) setStreamMute()} 方法也已弃用,请改为调用 {@code AudioManager.adjustStreamVolume()} 方法并传入方向值 {@code ADJUST_MUTE} 或 {@code ADJUST_UNMUTE}。
-
-</p>
-
-<h2 id="behavior-test-selection">文本选择</h2>
-
-<img src="{@docRoot}preview/images/text-selection.gif" style="float:right; margin:0 0 20px 30px" width="360" height="640" />
-
-<p>现在,当用户在您的应用中选择文本时,您可以在一个<a href="http://www.google.com/design/spec/patterns/selection.html#selection-text-selection" class="external-link">浮动工具栏</a>中显示“剪切”<em></em>、“复制”<em></em>和“粘贴”<em></em>等文本选择操作。
-
-其在用户交互实现上与<a href="{@docRoot}guide/topics/ui/menus.html#CABforViews">为单个视图启用上下文操作模式</a>中所述的上下文操作栏类似。
-
-
-</p>
-
-<p>如需实现可用于文本选择的浮动工具栏,请在您的现有应用中做出以下更改:
-</p>
-<ol>
-<li>在 {@link android.view.View} 对象或 {@link android.app.Activity} 对象中,将 
-{@link android.view.ActionMode} 调用从 
-{@code startActionMode(Callback)} 更改为 {@code startActionMode(Callback, ActionMode.TYPE_FLOATING)}。</li>
-<li>改为使用 {@code ActionMode.Callback} 的现有实现扩展 
-{@code ActionMode.Callback2}。</li>
-<li>替代 {@code Callback2.onGetContentRect()} 方法,用于提供 {@link android.graphics.Rect} 内容对象(如文本选择矩形)在视图中的坐标。
-</li>
-<li>如果矩形的定位不再有效,并且这是唯一需要声明为无效的元素,请调用 {@code ActionMode.invalidateContentRect()} 方法。
-</li>
-</ol>
-
-<p>请注意,如果您使用 <a href="{@docRoot}tools/support-library/index.html">
- Android Support Library</a> 22.2 修订版,浮动工具栏不向后兼容,默认情况下 appcompat 会获得对 {@link android.view.ActionMode} 对象的控制权。
-
-这会禁止显示浮动工具栏。如需在 
-{@link android.support.v7.app.AppCompatActivity} 中启用 
-{@link android.view.ActionMode} 支持,请调用 
-{@code android.support.v7.app.AppCompatActivity.getDelegate()},然后对返回的 
-{@link android.support.v7.app.AppCompatDelegate} 调用 
-{@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()},并将输入参数设置为 {@code false}。
-此调用会将 {@link android.view.ActionMode} 对象的控制权交还给框架。
-在运行 M 预览版的设备上,框架可以支持 
-{@link android.support.v7.app.ActionBar} 模式或浮动工具栏模式;而在运行 M 预览版之前版本的设备上,框架仅支持 {@link android.support.v7.app.ActionBar} 模式。
-</p>
-
-<h2 id="behavior-keystore">Android 密钥库变更</h2>
-<p>使用本预览版时,
-<a href="{@docRoot}training/articles/keystore.html">Android 密钥库提供程序</a>不再支持 DSA,
-但仍支持 ECDSA。</p>
-
-<p>禁用或重置安全锁屏时(例如,由用户或设备管理员执行此类操作时),系统将不再删除需要闲时加密的密钥,
-但在上述事件期间会删除需要闲时加密的密钥。
-</p>
-
-<h2 id="behavior-network">Wi-Fi 和网络连接变更</h2>
-
-<p>本预览版对 Wi-Fi 和网络连接 API 引入了以下行为变更。</p>
-<ul>
-<li>现在,您的应用只能更改由您创建的 {@link android.net.wifi.WifiConfiguration} 对象的状态。
-系统不允许您修改或删除由用户或其他应用创建的 
-{@link android.net.wifi.WifiConfiguration} 对象;
-</li>
-<li>
-在之前的版本中,如果应用利用带有 
-{@code disableAllOthers=true} 设置的 
-{@link android.net.wifi.WifiManager#enableNetwork(int,boolean) enableNetwork()} 强制设备连接特定 Wi-Fi 网络,设备将会断开与蜂窝数据网络等其他网络的连接。
-在本预览版中,设备不再断开与上述其他网络的连接。如果您的应用的 {@code targetSdkVersion} 为 {@code “20”} 或更低,则会固定连接所选 Wi-Fi 网络。
-
-如果您的应用的 {@code targetSdkVersion} 为 {@code “21”} 或更高,请使用多网络 API(如 
-{@link android.net.Network#openConnection(java.net.URL) openConnection()} 、
-{@link android.net.Network#bindSocket(java.net.Socket) bindSocket()} 和新增的 
-{@code ConnectivityManager.bindProcessToNetwork()} 方法)来确保通过所选网络传送网络流量。
-
-</li>
-</ul>
-
-<h2 id="behavior-camera">相机服务变更</h2>
-<p>在本预览版中,相机服务中共享资源的访问模式已从之前的“先到先得”访问模式更改为高优先级进程优先的访问模式。
-
-对服务行为的变更包括:</p>
-<ul>
-<li>根据客户端应用进程的“优先级”授予对相机子系统资源的访问权,包括打开和配置相机设备。
-带有对用户可见活动或前台活动的应用进程一般会被授予较高的优先级,从而使相机资源的获取和使用更加可靠;
-
-</li>
-<li>当高优先级的应用尝试使用相机时,系统可能会“驱逐”正在使用相机客户端的低优先级应用。
-在已弃用的 {@link android.hardware.Camera} API 中,这会导致系统为被驱逐的客户端调用 
-{@link android.hardware.Camera.ErrorCallback#onError(int,android.hardware.Camera) onError()}。
-
-在 {@link android.hardware.camera2 Camera2} API 中,这会导致系统为被驱逐的客户端调用 
-{@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected(android.hardware.camera2.CameraDevice) onDisconnected()};
-</li>
-<li>在配备相应相机硬件的设备上,不同的应用进程可同时独立打开和使用不同的相机设备。
-但现在,如果在多进程用例中同时访问相机会造成任何打开的相机设备的性能或能力严重下降,相机服务会检测到这种情况并禁止同时访问。
-
-即使并没有其他应用直接尝试访问同一相机设备,此变更也可能导致低优先级客户端被“驱逐”。
-
-
-</li>
-<li>
-更改当前用户会导致之前用户帐户拥有的应用内活动相机客户端被驱逐。
-对相机的访问仅限于访问当前设备用户拥有的用户个人资料。举例来说,这意味着,当用户切换到其他帐户后,“来宾”帐户实际上无法让使用相机子系统的进程保持运行状态。
-
-
-</li>
-</ul>
-
-<h2 id="behavior-art-runtime">ART 运行时</h2>
-<p>ART 运行时现在可正确实现 
-{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} 方法的访问规则。此变更修正了之前版本中 Dalvik 无法正确检查访问规则的问题。如果您的应用使用
-{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} 方法,并且您想替代访问检查,请调用 
-{@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()} 方法(将输入参数设置为 {@code true})。
-
-
-
-如果您的应用使用
-<a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7 appcompat 库</a>或
-<a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">v7 recyclerview 库</a>,则您必须更新应用以使用这些库的最新版本。
-否则,请务必更新从 XML 引用的任何自定义类,以便能够访问它们的类构造函数。
-</p>
-
-<p>本预览版更新了动态链接程序的行为。动态链接程序现在可以识别库的 {@code soname} 与其路径之间的差异(<a href="https://code.google.com/p/android/issues/detail?id=6670" class="external-link">
-公开 bug 6670</a>),并且现在已实现了按 {@code soname} 搜索。
-
-
-之前包含错误的 {@code DT_NEEDED} 条目(通常是开发计算机文件系统上的绝对路径)却仍工作正常的应用,如今可能会出现加载失败。
-</p>
-
-<p>现已正确实现 {@code dlopen(3) RTLD_LOCAL} 标志。请注意,
-{@code RTLD_LOCAL} 是默认值,因此不显式使用 
-{@code RTLD_LOCAL} 的 {@code dlopen(3)} 调用将受到影响(除非您的应用显式使用 {@code RTLD_GLOBAL})。使用 
-{@code RTLD_LOCAL} 时,在随后通过调用 
-{@code dlopen(3)} 加载的库中并不能使用这些符号(这与由 {@code DT_NEEDED} 条目引用的情况截然不同)。</p>
-</p>
-
-<h2 id="behavior-apk-validation">APK 验证</h2>
-<p>该平台现在执行的 APK 验证更为严格。如果在清单文件中声明的文件在 APK 中并不存在,该 APK 将被视为已损坏。
-移除任何内容后必须重新签署 APK。
-</p>
-
-<h2 id="behavior-afw">Android for Work 变更</h2>
-<p>本预览版包含下列针对 Android for Work 的行为变更:</p>
-<ul>
-<li><strong>个人上下文中的工作联系人。</strong>Google Dialer Call Log 现在会在用户查看通话记录时显示工作联系人。将 {@code DevicePolicyManager.setCrossProfileCallerIdDisabled()} 设置为 {@code true} 可在 Google Dialer Call Log 中隐藏托管配置文件联系人。
-
-
-仅当您将 {@code DevicePolicyManager.setBluetoothContactSharingDisabled()} 设置为 {@code false} 时,才可以通过蓝牙将工作联系人随个人联系人一起显示给设备。
-
-默认情况下,它设置为 {@code true}。
-
-</li>
-<li><strong>WiFi 配置移除</strong>:现在,当删除某个托管配置文件时,将会移除由配置文件所有者添加的 WiFi 配置(例如,通过调用
-{@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration)
-addNetwork()} 方法添加的配置);
-</li>
-<li><strong>WiFi 配置锁定</strong>:用户无法再修改或删除任何由活动设备所有者创建的 WiFi 配置。
-用户仍可创建和修改其自己的 WiFi 配置,前提是尚未针对该用户设置 {@link android.os.UserManager} 常量 
-{@link android.os.UserManager#DISALLOW_CONFIG_WIFI}。
-</li>
-<li><strong>通过添加 Google 帐户下载工作策略控制器</strong>向托管环境以外的设备添加需要通过工作策略控制器 (WPC) 管理的 Google 帐户时,帐户添加流程现在会提示用户安装相应的 WPC。在设备初始设置向导中通过<strong>设置 &gt; 帐户</strong>添加帐户时,也会出现此行为。
-
-
-
-</li>
-<li><strong>对特定 DevicePolicyManager API 行为的变更</strong>:调用 {@link android.app.admin.DevicePolicyManager#setCameraDisabled(android.content.ComponentName,boolean) setCameraDisabled()} 方法只会影响调用该方法的用户的相机;从托管配置文件调用它不会影响主用户运行的相机应用。
-
-
-此外,
-{@link android.app.admin.DevicePolicyManager#setKeyguardDisabledFeatures(android.content.ComponentName,int) setKeyguardDisabledFeatures()} 方法现在除了可供设备所有者使用外,还可供配置文件所有者使用。
-配置文件所有者可设置以下键盘锁限制:
-
-<ul>
-<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_TRUST_AGENTS} 和 
-{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_FINGERPRINT},它们影响配置文件上级用户的键盘锁设置。
-</li>
-<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS},它只影响应用在托管配置文件中生成的通知。
-</li>
-</ul>
-</li>
-</ul>
diff --git a/docs/html-intl/intl/zh-cn/preview/download.jd b/docs/html-intl/intl/zh-cn/preview/download.jd
deleted file mode 100644
index c7ba9df..0000000
--- a/docs/html-intl/intl/zh-cn/preview/download.jd
+++ /dev/null
@@ -1,360 +0,0 @@
-page.title=下载
-page.image=images/cards/card-download_16-9_2x.png
-
-@jd:body
-
-<div style="position:relative; min-height:600px">
-
-  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
-    <p class="sdk-terms-intro">在下载和安装预览版 Android SDK 的组件之前,您必须同意下列条款和条件。
-</p>
-
-    <h2 class="norule">条款和条件</h2>
-
-    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-本协议是 Android SDK 预览版许可协议(以下称为“许可协议”)。
-
-1. 简介
-
-1.1 Android SDK 预览版(在本许可协议中简称为“预览版”,具体包括 Android 系统文件、封装 API 以及预览版库文件(若可用))依据本许可协议的条款授权您使用。本许可协议在您与 Google 之间就您对“预览版”的使用构成具有法律约束力的合约。
-
-1.2 “Android”是指以 Android 开源项目(项目网址为 http://source.android.com/,其内容会不时更新)名义提供、面向设备的 Android 软件栈。
-
-1.3 “Google”是指 Google Inc.,是一家特拉华州公司,主要营业地位于:1600 Amphitheatre Parkway, Mountain View, CA 94043, United States。
-
-2. 接受许可协议
-
-2.1 要使用“预览版”,您必须先同意本许可协议。如果您不接受本许可协议,则不得使用“预览版”。
-
-2.2 点击接受并/或使用“预览版”,即表示您特此同意本许可协议的条款。
-
-2.3 如果依照美国或其他国家/地区(包括您居住或您使用“预览版”所在的国家/地区)的法律,您被禁止获取“预览版”,则您不得使用“预览版”,也不得接受本许可协议。
-
-2.4 如果您将在贵公司或组织内部使用“预览版”,则您同意代表您的雇主或其他实体接受本许可协议的约束,并且您表示并保证您拥有完全的合法授权令您的雇主或上述实体受本许可协议的约束。如果您不具备必要的授权,则不得代表您的雇主或其他实体接受本许可协议或使用“预览版”。
-
-3. Google 预览版许可
-
-3.1 Google 依据本许可协议的条款授予您个人或在贵公司或组织内部有限使用“预览版”的免版税、不可转让、非独占性、不可再授权且可撤销的许可,其用途仅限开发在 Android 平台上运行的应用。
-
-3.2 您同意 Google 或第三方拥有“预览版”中存在或相关的全部合法权利、所有权和利益,包括“预览版”中存在的任何知识产权。“知识产权”是指根据专利法、版权法、商业机密法、商标法享有的任何及全部权利,以及其他任何及全部专有权利。Google 保留所有未明确授予您的权利。
-
-3.3 您不得将“预览版”用于本许可协议未明确允许的任何用途。您不得:(a) 对“预览版”或“预览版”的任何部分进行复制(备份用途除外)、修改、改编、再分发、反编译、逆向工程、反汇编或创建其衍生品;或 (b) 将“预览版”的任何部分加载到移动手持终端或除个人计算机之外的任何其他硬件设备上,将“预览版”的任何部分与其他软件合并,或者发行任何融入“预览版”某一部分的软件或设备。
-
-3.4 您同意您将不会进行任何可能引起或导致 Android 碎片化的行动,包括但不限于分发、参与创建或以任何方式推广从“预览版”衍生的软件开发工具包。
-
-3.5 对于依据开源软件许可授权的“预览版”组件,其使用、复制和分发仅受该开源软件许可条款的制约,不受本许可协议的约束。您同意在依照被授予的所有权利作为被许可方期间,在遵守此类开源软件许可协议方面始终保持良好的信誉,并避免进行任何可能导致终止、暂停或违反此类权利的行动。
-
-3.6 您同意 Google 所提供“预览版”的形式和性质可随时发生变更,而无需事先通知您,并且未来的“预览版”版本可能会与在之前的“预览版”版本上开发的应用不兼容。您同意 Google 可单方面决定在未事先通知您的情况下全面停止(永久性或暂时性)向您或用户提供“预览版”(或“预览版”内的任何功能)。
-
-3.7 本许可协议内没有任何条款授予您使用 Google 的任何商品名、商标、服务标志、徽标、域名或其他独特品牌特征的权利。
-
-3.8 您同意您不会移除、遮盖或篡改“预览版”上可能贴有或“预览版”内可能包含的任何专有权利声明(包括版权声明和商标声明)。
-
-4. 您对“预览版”的使用
-
-4.1 Google 同意本许可协议中的任何条款均未授予 Google 从您(或您的许可方)处获取您依照本许可协议使用“预览版”开发的任何软件应用中存在或与其相关的权利、所有权或利益,包括这些应用中存在的任何知识产权。
-
-4.2 您同意只出于 (a) 本许可协议和 (b) 相关管辖区域内任何适用法律、法规或公认惯例或准则(包括有关向美国或其他相关国家/地区出口数据或软件或从美国或其他相关国家/地区进口数据或软件的任何法律)所允许的目的而使用“预览版”和编写应用。
-
-4.3 您同意,如果您使用“预览版”开发应用,您将会保护用户的隐私权和合法权利。如果用户向您提供用户名、密码或其他登录信息或个人信息,您必须确保用户知晓这些信息将供您的应用使用,并且您必须为这些用户提供足以满足法律要求的隐私声明和保护。如果您的应用存储由用户提供的个人信息或敏感信息,其存储方式必须安全。如果用户向您提供 Google 帐户信息,您的应用只能在用户允许时出于用户所许可的有限目的使用该信息访问用户的 Google 帐户。
-
-4.4 您同意您不会利用“预览版”从事任何干扰、中断、损坏或以未经授权方式访问 Google 或任何第三方的服务器、网络或其他财产或服务的Activity(包括应用的开发或分发)。
-
-4.5 您同意您对通过 Android 和/或 Android 应用创建、传输或显示的任何数据、内容或资源以及您的行为所导致的后果(包括 Google 可能遭受的任何损失或损害)负全责(Google 在上述方面对您或任何第三方不承担任何责任)。
-
-4.6 您同意您为违反本许可协议、任何适用的第三方合约或服务条款或任何适用法律或法规下的义务以及任何上述违规行为所导致的后果(包括 Google 或任何第三方可能遭受的任何损失或损害)负全责(Google 在上述方面对您或任何第三方不承担任何责任)。
-
-4.7 “预览版”正在开发中,您的测试和反馈是开发过程的重要环节。使用“预览版”,即表示您承认某些功能仍在开发实现之中,您不应期望“预览版”具备稳定版本的全部功能。您同意不使用此“预览版”公开发布或发运任何应用,因为此“预览版”在 Android SDK 正式发行之后将不再受支持。
-
-5. 您的开发者凭据
-
-5.1 您同意,对于 Google 可能向您发放或可能由您自行选择的任何开发者凭据,您有责任保持其机密性,并且您对以您的开发者凭据名义开发的所有应用负全责。
-
-6. 隐私权和信息
-
-6.1 为持续创新和改进“预览版”,Google 可能会从软件收集某些使用统计数据,包括但不限于唯一标识符、关联的 IP 地址、软件的版本号以及有关软件使用了“预览版”中哪些工具和/或服务及其使用方式的信息。在收集任何上述信息之前,“预览版”都会通知您并征求您的同意。如果您拒绝同意,我们将不会收集这些信息。
-
-6.2 我们会对收集的数据进行汇总调查,以便改进“预览版”,并会按照 Google 的隐私政策(网址为 http://www.google.com/policies/privacy/)维护数据。
-
-7. 第三方应用
-
-7.1 如果您使用“预览版”运行由第三方开发或访问由第三方提供的数据、内容或资源的应用,您同意 Google 对这些应用、数据、内容或资源不承担任何责任。您理解,您通过上述第三方应用可能访问到的所有数据、内容或资源由其提供者负全责,Google 对您因使用或访问其中任何第三方应用、数据、内容或资源而遭受的任何损失或损害不承担任何责任。
-
-7.2 您应知晓,通过此类第三方应用提供给您的数据、内容和资源可能受提供商(或代表他们的其他人员或公司)所拥有的知识产权的保护。除非相关所有者明确给予许可,否则您不得修改、出租、租赁、借出、出售、分发这些数据、内容或资源(的全部或部分),或以其为基础创建衍生品。
-
-7.3 您承认您对上述第三方应用、数据、内容或资源的使用可能受到您与相关第三方之间单独订立的条款的制约。
-
-8. 使用 Google API
-
-8.1 Google API
-
-8.1.1 如果您使用任何 API 从 Google 检索数据,即表示您承认这些数据可能受到 Google 或这些数据提供方(或代表他们的其他人员或公司)拥有的知识产权的保护。您对任何上述 API 的使用可能受到附加服务条款的制约。除非相关服务条款允许,否则您不得修改、出租、租赁、借出、出售、分发这些数据(的全部或部分),或以其为基础创建衍生品。
-
-8.1.2 如果您使用任何 API 从 Google 检索用户数据,即表示您承认并同意您只有在征得用户明确同意时才会检索数据,并且只能在用户允许时出于用户许可的有限目的检索数据。
-
-9. 终止许可协议
-
-9.1 本许可协议将持续有效,直至您或 Google 按以下规定终止本协议。
-
-9.2 如果您想终止本许可协议,可通过停止使用“预览版”以及任何相关开发者凭据予以终止。
-
-9.3 Google 有权在向您在作出通知后,有理由或无理由地随时终止与您订立的这份许可协议。
-
-9.4 本许可协议将在下列情况下自动终止,而无需另行通知或采取其他行动,以先符合条件者为准:
-(A) Google 在您居住或使用服务所在国家/地区停止向用户提供“预览版”或“预览版”的某些部分;
-(B) Google 发行 Android SDK 的最终版本。
-
-9.5 在本许可协议终止时,本许可协议中向您授予的许可将终止,您应立即完全停止使用“预览版”,并且第 10、11、12 和 14 节的条款将无限期继续存在。
-
-10. 免责声明
-
-10.1 您明确理解并同意,您使用“预览版”的风险将由您自行承担,并且“预览版”是按“原样”和“现状”提供,Google 不提供任何类型的担保。
-
-10.2 您对“预览版”的使用以及通过使用“预览版”下载或以其他方式获得的任何材料由您自行决定,风险自负,并且对于因此类使用而对您的计算机系统或其他设备造成的任何损害或数据损失由您单方面负责。在不对上文所述予以限制的条件下,您了解“预览版”并非稳定版本,可能存在将导致重大损害的错误、缺陷和安全漏洞,包括无法挽回地完全无法使用您的计算机系统或其他设备。
-
-10.3 Google 进一步明确拒绝任何类型的所有担保和条件,无论明示或暗示,包括但不限于有关适销性、特定用途适用性以及非侵权的暗示担保和条件。
-
-11. 有限责任
-
-11.1 您明确理解并同意,对于您可能遭遇的任何直接、间接、附带、特殊、继发或惩罚性损害(包括任何数据损失),Google 及其子公司和附属公司以及其许可方在任何责任理论下对您概不承担任何责任,无论 Google 或其代表是否已被告知或是否本应知晓发生任何上述损失的可能性。
-
-12. 赔偿
-
-12.1 您同意,在法律所允许的最大限度内,为 Google、其附属公司及其各自的董事、高管、员工和代理商提供辩护,使其免于因下列情况引起或产生的任何及所有索赔、诉讼、起诉或诉讼程序以及任何及所有损失、债务、损害、成本和费用(包括合理的律师费用)而承担责任或遭受损害:(a) 您对“预览版”的使用;(b) 您在“预览版”上开发的任何应用侵犯任何人的任何知识产权或诽谤任何人或侵犯其公开权或隐私权;以及 (c) 您的任何行为有悖于本许可协议
-
-13. 许可协议的更改
-
-13.1 Google 可能会在分发新版本“预览版”时对许可协议做出更改。做出这些更改后,Google 将在提供“预览版”的网站上公布新版本的许可协议。
-
-14. 一般法律条款
-
-14.1 本许可协议构成您与 Google 之间的完整法律协议,管辖您对“预览版”(不包括 Google 可能依据另外的书面协议向您提供的任何服务)的使用,并完全取代您之前与 Google 之间签订的、与“预览版”有关的任何协议。
-
-14.2 您同意,如果 Google 未行使或未强制执行本许可协议包含的任何法定权利或救济(或 Google 在任何适用法律下享有的相关利益),不得视为 Google 正式放弃这些权利,Google 仍可获得这些权利或救济。
-
-14.3 如果任何拥有管辖权的法院将本许可协议的任何条款裁定为无效,则该条款将从本许可协议中删除,而不会影响本许可协议的其余部分。本许可协议的其余条款将继续有效且可强制执行。
-
-14.4 您承认并同意,Google 集团旗下的每一家公司都将成为本许可协议的第三方受益人,并且此类其他公司将有权直接强制执行和依赖本许可协议中任何授予其利益(或支持其权利)的条款。除此之外,任何其他人员或公司均不得成为本许可协议的第三方受益人。
-
-14.5 出口限制。“预览版”受美国出口法律和法规的制约。您必须遵守适用于“预览版”的所有国内和国际出口法律和法规。这些法律包括目的地、最终用户和最终用途方面的限制。
-
-14.6 未经 Google 事先书面批准,您不得擅自转让或转移本许可协议,未经此类批准而试图进行的任何转让均为无效。未经 Google 事先书面批准,您不得委托您依据本许可协议所应承担的责任或义务。
-
-14.7 本许可协议以及您与 Google 依据本许可协议而建立的关系受加利福尼亚州法律管辖,而无论其是否与其他法律条款冲突。您与 Google 同意服从位于加利福尼亚州圣克拉拉县内法院的专属司法管辖权,以解决本许可协议引起的任何法律事务。尽管有上述规定,您同意仍允许 Google 在任何管辖区域申请禁令救济(或同等类型的紧急法律救济)。
-  </div><!-- sdk terms -->
-
-
-
-    <div id="sdk-terms-form">
-      <p>
-        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-        <label id="agreeLabel" for="agree">我已阅读并同意上述条款和条件</label>
-      </p>
-      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-    </div>
-
-
-  </div><!-- end TOS -->
-
-
-  <div id="landing">
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本文内容</h2>
-      <ol>
-        <li><a href="#sdk">Android 6.0 SDK</a></li>
-        <li><a href="#docs">开发者文档</a></li>
-        <li><a href="#images">硬件系统映像</a></li>
-      </ol>
-     <h2>Legacy downloads</h2>
-        <ol>
-           <li><a href="{@docRoot}preview/download_mp1.html">Developer Preview 1</a></li>
-           <li><a href="{@docRoot}preview/download_mp2.html">Developer Preview 2</a></li>
-        </ol>
-  </div>
-</div>
-
-
-<p>
-  Android M 预览版 SDK 包括开发工具、Android 系统文件和库文件,旨在帮助您在下一版本的平台中测试您的应用以及该平台提供的新 API。
-本文旨在介绍如何获得“预览版”的可下载组件,以便测试您的应用。
-
-</p>
-
-
-<h2 id="sdk">Android 6.0 SDK</h2>
-
-<p>
-  预览版 SDK 可通过 <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK 管理器</a>下载。如需了解有关下载和配置预览版 SDK 的详细信息,请参阅<a href="{@docRoot}preview/setup-sdk.html#downloadSdk">设置预览版 SDK</a>。
-
-</p>
-
-
-<h2 id="docs">开发者文档</h2>
-
-<p>
-  开发者文档下载软件包提供详细的 API 参考信息和“预览版”的 API 差异报告。
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Description</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="docs-dl">
-    <td>Android M Preview 3<br>Developer Docs</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >m-preview-3-developer-docs.zip</a><br>
-      MD5: d99b14b0c06d31c8dfecb25072654ca3<br>
-      SHA-1: 9cefeeda07676130da606a1796e1c00fffc667c1
-    </td>
-  </tr>
-</table>
-
-
-<h2 id="images">硬件系统映像</h2>
-
-<p>
-  这些系统映像允许您在实际设备上安装预览版平台,以便进行测试。
-通过使用这些映像之一配置设备,您可以安装并测试您的应用,以了解其在下一版本平台上的性能表现。
-在设备上安装系统映像的过程会<em>删除设备中的所有数据</em>,因此您应该在安装系统映像之前备份数据。
-
-
-</p>
-
-<p class="warning">
-  <b>警告:</b>以下 Android 系统映像是预览版,可能会随时发生变化。您对这些系统映像的使用受 Android SDK 预览版许可协议的制约。
-Android 预览版系统映像并非稳定版本,可能包含会对您的计算机系统、设备和数据造成损害的错误和缺陷。
-
-Android 预览版系统映像未经过与出厂操作系统相同的测试,可能会导致您的手机和安装的服务与应用停止工作。
-
-
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Device</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="hammerhead">
-    <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >hammerhead-MPA44I-preview-2ebbc049.tgz</a><br>
-      MD5: 91a924fb0c9f8e716e3b4c9954fd0dbb<br>
-      SHA-1: 2ebbc049b68c4da8baeee3e42bb94d7a965ba4a3
-    </td>
-  </tr>
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-MPA44I-preview-62b9c486.tgz</a><br>
-      MD5: ac6e58da86125073d9c395257fd42664<br>
-      SHA-1: 62b9c486fd7a5020e228d53ca5acd5c1857e48ff
-    </td>
-  </tr>
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-MPA44I-preview-5c30a6e2.tgz</a><br>
-      MD5: 7f83768757913d3fea945a661020d185<br>
-      SHA-1: 5c30a6e2acd11a81f4105b12d23ff654f534f699
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-MPA44I-preview-2860040a.tgz</a><br>
-      MD5: 438da8d37da9e341a69cfb16a4001ac5<br>
-      SHA-1: 2860040a326582f1ff5f702bf9a1ef002717fc98
-    </td>
-  </tr>
-
-</table>
-
-<h3 id="install-image">将映像安装到设备</h3>
-
-<p>
-  要使用设备映像进行测试,您必须将其安装到兼容设备上。请按照下面的说明安装系统映像:
-
-</p>
-
-<ol>
-  <li>下载并解压此处列出的系统映像包之一。</li>
-  <li>备份设备中您希望予以保留的任何数据。</li>
-  <li>按照
-<a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
- 中的说明将映像刷入设备中。</li>
-</ol>
-
-<p class="note">
-  <strong>注:</strong>为开发设备刷入预览版系统映像之后,它将通过无线 (OTA) 更新自动升级到下一个预览版本。
-
-</p>
-
-<h3 id="revertDevice">将设备还原至出厂规格</h3>
-
-<p>
-  如果您想要卸载预览版并将设备还原至出厂规格,请转到
-<a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a> 并下载要为设备刷入的映像。
-按照该页面上的说明将映像刷入设备中。
-
-</p>
-
-  </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
-  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
-  function onDownload(link) {
-
-    $("#downloadForRealz").html("Download " + $(link).text());
-    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
-    $("#tos").fadeIn('fast');
-    $("#landing").fadeOut('fast');
-
-    return true;
-  }
-
-
-  function onAgreeChecked() {
-    /* verify that the TOS is agreed */
-    if ($("input#agree").is(":checked")) {
-      /* reveal the download button */
-      $("a#downloadForRealz").removeClass('disabled');
-    } else {
-      $("a#downloadForRealz").addClass('disabled');
-    }
-  }
-
-  function onDownloadForRealz(link) {
-    if ($("input#agree").is(':checked')) {
-    /*
-      $("#tos").fadeOut('fast');
-      $("#landing").fadeIn('fast');
-    */
-
-      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
-
-    /*
-      location.hash = "";
-    */
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  $(window).hashchange( function(){
-    if (location.hash == "") {
-      location.reload();
-    }
-  });
-
-</script>
diff --git a/docs/html-intl/intl/zh-cn/preview/features/app-linking.jd b/docs/html-intl/intl/zh-cn/preview/features/app-linking.jd
deleted file mode 100644
index 77a532f..0000000
--- a/docs/html-intl/intl/zh-cn/preview/features/app-linking.jd
+++ /dev/null
@@ -1,123 +0,0 @@
-page.title=应用链接
-page.image=images/cards/card-app-linking_2x.png
-page.keywords=应用链接, 深层链接, 意向
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本文内容</h2>
-      <ol>
-        <li><a href="#web-assoc">声明网站关联</a></li>
-        <li><a href="#verfy-links">请求应用链接验证</a></li>
-        <li><a href="#user-manage">管理应用链接设置</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  Android 意向系统是一种让应用能够处理内容和请求的灵活机制。
-  可能会有多个应用在其意向过滤器中声明一致的 URI 模式。如果用户点击的 Web 链接没有默认的启动处理程序,平台可能会显示一个对话框,让用户从一系列已声明一致意向过滤器的应用中进行选择。
-
-
-</p>
-
-<p>
-  Android M 开发者预览版引入了对应用链接的支持,后者在现有链接处理方式基础上进行了改进,允许应用开发者将应用与他们拥有的 Web 域进行关联。
-当开发者创建此关联时,平台可以自动确定在处理特定 Web 链接时默认使用的应用,略过询问用户的步骤。
-
-
-</p>
-
-
-<h2 id="web-assoc">声明网站关联</h2>
-
-<p>
-  网站所有者必须声明与应用的关联才能建立应用链接。网站所有者可以通过在域上众所周知的位置承载一个名为 {@code statements.json} 的 JSON 文件声明与应用的关系:
-
-
-</p>
-
-<pre>http://&lt;domain&gt;:&lt;optional port&gt;/.well-known/statements.json</pre>
-
-<p class="note">
-  <strong>注:</strong>
-  在 M 开发者预览版运行期间,系统会通过 HTTP 协议对该 JSON 文件进行验证。当平台正式发布后,系统将通过 HTTPS 加密协议对该文件进行验证。
-
-</p>
-
-<p>
-  该 JSON 文件指定应作为该域下 URL 默认处理程序使用的 Android 应用。
-它根据以下字段标识该应用:
-</p>
-
-<ul>
-  <li>{@code package_name}:该应用的清单文件中声明的软件包名称;</li>
-
-  <li>{@code sha256_cert_fingerprints}:应用签名证书的 SHA256 指纹。
-    您可以利用 Java 密钥工具,通过以下命令生成该指纹:
-    <pre>keytool -list -v -keystore my-release-key.keystore</pre>
-  </li>
-</ul>
-
-<p>
-  以下文件清单显示的是一个 
-{@code statements.json} 文件的内容和格式示例:
-</p>
-
-<pre>
-[{
-  "relation": ["delegate_permission/common.handle_all_urls"],
-  "target": {
-    "namespace": "android_app",
-    "package_name": "<strong>&lt;package name&gt;</strong>",
-    "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
-  }
-}]
-</pre>
-
-
-<h2 id="verfy-links">请求应用链接验证</h2>
-
-<p>
-  应用可以请求平台自动根据相应 Web 域上承载的 {@code statements.json} 文件验证由其意向过滤器数据元素内的主机名称定义的任何应用链接。
-
-要请求应用链接验证,请按以下清单文件代码段中所示向清单文件中所需的每个意向过滤器添加一个 {@code android:autoVerify}
- 属性:
-
-</p>
-
-<pre>
-&lt;activity ...&gt;
-    &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
-        &lt;action android:name="android.intent.action.VIEW" /&gt;
-        &lt;category android:name="android.intent.category.DEFAULT" /&gt;
-        &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
-        &lt;data android:scheme="http" android:host="www.android.com" /&gt;
-        &lt;data android:scheme="https" android:host="www.android.com" /&gt;
-    &lt;/intent-filter&gt;
-&lt;/activity&gt;
-</pre>
-
-<p>
-  如果应用清单文件中存在 {@code android:autoVerify} 属性,平台会在安装应用时尝试验证应用链接。
-如果平台无法成功验证应用链接,则不会将应用设置为处理 Web 链接的首选应用。
-用户下一次打开其中一个链接时,平台将退回原有模式,向用户显示一个对话框。
-
-
-</p>
-
-<p class="note">
-  <strong>注:</strong>在测试时,如果验证失败,但用户已经使用系统的“设置”应用显式允许应用在不询问用户的情况下打开受支持的链接,则可能会出现误报。在这种情况下,不会显示对话框,链接会直接指向您的应用,不过这完全是由于用户设置的缘故,并不是因为验证成功。
-
-
-
-</p>
-
-
-<h2 id="user-manage">管理应用链接设置</h2>
-
-<p>
-  用户可以更改应用链接设置,让系统按首选方式处理 URL。您可以在系统“设置”应用的<strong>设置 &gt; 应用 &gt; 应用信息 &gt; 默认打开</strong>下查看和管理应用链接。
-
-
-</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/features/runtime-permissions.jd b/docs/html-intl/intl/zh-cn/preview/features/runtime-permissions.jd
deleted file mode 100644
index 8e361fb6..0000000
--- a/docs/html-intl/intl/zh-cn/preview/features/runtime-permissions.jd
+++ /dev/null
@@ -1,794 +0,0 @@
-page.title=权限
-page.tags=previewresources, androidm
-page.keywords=permissions, runtime, preview
-page.image={@docRoot}preview/features/images/permissions_check.png
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>内容快览</h2>
-    <ul>
-      <li>如果您的应用主要面向 M 预览版 SDK,则会在运行时(而非安装时)提示用户授予权限。
-</li>
-      <li>用户可以随时从应用“设置”屏幕撤销权限。
-</li>
-      <li>每次运行时,应用均需检查自身是否具备所需的权限。
-</li>
-    </ul>
-
-    <h2>本文内容</h2>
-    <ol>
-      <li><a href="#overview">概览</a></li>
-      <li><a href="#coding">为运行时权限编码</a></li>
-      <li><a href="#testing">测试运行时权限</a></li>
-      <li><a href="#best-practices">最佳做法</a></li>
-    </ol>
-
-<!--
-  <h2>Related Samples</h2>
-  <ol>
-    <li></li>
-  </ol>
--->
-
-<!--
-  <h2>See also</h2>
-  <ol>
-    <li></li>
-  </ol>
--->
-  </div> <!-- qv -->
-</div> <!-- qv-wrapper -->
-
-
-<p>
-  M 开发者预览版引入了一种新的应用权限模型,旨在简化用户安装和升级应用的过程。
-如果在 M 预览版上运行的应用支持新权限模型,则用户无需在安装或升级应用时授予任何权限。相反,应用会根据需要请求权限,且系统将向用户显示一个请求权限的对话框。
-
-
-
-
-</p>
-
-<p>
-  如果应用支持新权限模型,则仍可在运行旧版 Android 的设备上使用旧权限模型安装并运行此应用。
-
-
-</p>
-
-<h2 id="overview">
-  概览
-</h2>
-
-<p>
-  通过 M 开发者预览版,该平台引入了新的应用权限模型。
-以下概述了此新模型的主要组件:
-</p>
-
-<ul>
-  <li>
-    <strong>声明权限:</strong>应用使用清单文件声明其所需的所有权限,就像在早期的 Android 平台中一样。
-
-  </li>
-
-  <li>
-    <strong>权限组:</strong>权限根据相应的功能分为若干
-<em>权限组</em>。例如,
-<code>CONTACTS</code> 权限组包含读取和写入用户联系人和个人资料信息的权限。
-
-  </li>
-
-  <li>
-    <p><strong>安装时授予的有限权限:</strong>当用户安装或更新应用时,系统将授予应用所请求的属于 {@link
-    android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL} 的所有权限。
-
-
-    例如,闹铃和 Internet 权限属于 {@link
-    android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL},因此系统将在安装应用时自动授予这些权限。
-
-    </p>
-
-    <p>此外,系统还可以授予应用签名和系统权限,如<a href="#system-apps">系统应用和签名权限</a>中所述。
-
-系统不会在安装应用时提示用户授予任何权限。<em></em>
-</p>
-  </li>
-
-  <li>
-    <strong>用户在运行时授予权限:</strong>当应用请求权限时,系统将向用户显示一个对话框,然后调用应用的回调函数来通知它是否已授予权限。
-
-如果用户授予某项权限,则应用将获得应用清单文件中声明的、该权限功能区域中的所有权限。
-
-
-  </li>
-
-</ul>
-
-<p>
-  对于需要权限的功能,此权限模型将改变应用的行为方式。
-以下概述了您调整此模型时所应遵循的开发实践:
-
-</p>
-
-<ul>
-
-  <li>
-    <strong>始终检查权限:</strong>当应用必须执行任何需要权限的操作时,应先检查它是否已具备该权限。
-
-如果没有,则请求授予该权限。
-
-  </li>
-
-  <li>
-    <strong>妥善处理权限不足的情况:</strong>如果应用未被授予适当的权限,则应正常处理失败情况。
-
-    例如,如果只有新增的功能需要该权限,则应用可以禁用该功能。
-如果该权限对于应用正常运行至关重要,则应用可能会禁用其所有功能,并通知用户需要授予该权限。
-
-
-  </li>
-
-  <div class="figure" style="width:220px" id="fig-perms-screen">
-    <img src="{@docRoot}preview/features/images/app-permissions-screen_2x.png" srcset="{@docRoot}preview/features/images/app-permissions-screen.png 1x, {@docRoot}preview/features/images/app-permissions-screen_2x.png 2x" alt="" width="220">
-    <p class="img-caption">
-      <strong>图 1.</strong>应用“设置”中的“权限”屏幕。
-    </p>
-  </div>
-
-  <li>
-    <strong>权限可撤销:</strong>用户可以随时撤销应用的权限。
-即使用户禁用应用的权限,应用也不会收到通知。<em></em>
-再次强调:您的应用应在执行任何受限操作之前验证是否具备所需的权限。
-
-  </li>
-</ul>
-
-<p class="note">
-  <strong>注:</strong>如果应用主要面向 M 开发者预览版,则必须使用新权限模型。
-<em></em>
-</p>
-
-<p>
-  截至 M 开发者预览版发布,并非所有 Google 应用均已完全实现新权限模型。
-Google 会在 M 开发者预览版运行期间更新这些应用,以便严格遵守权限切换设置。
-
-
-</p>
-
-<p class="note">
-  <strong>注:</strong>如果您的应用拥有自己的 API 接口,请先确保调用方具备访问该数据所需的必要权限,然后再代理权限。
-
-
-</p>
-
-<h3 id="system-apps">
-  系统应用和签名权限
-</h3>
-
-<p>
-  通常,当用户安装应用时,系统仅授予应用
- {@link android.content.pm.PermissionInfo#PROTECTION_NORMAL
-  PROTECTION_NORMAL}。但在某些情况下,系统将授予应用更多权限:
-
-</p>
-
-<ul>
-  <li>如果应用是系统映像的一部分,则系统会自动授予该应用清单文件中列出的所有权限。
-
-  </li>
-
-  <li>如果应用请求提供清单文件中属于 {@link
-  android.content.pm.PermissionInfo#PROTECTION_SIGNATURE PROTECTION_SIGNATURE} 的权限,且该应用已使用与声明这些权限的应用相同的证书进行签名,则系统将在安装请求权限的应用时向其授予这些权限。
-
-
-
-  </li>
-</ul>
-
-<p>
-  在这两种情况下,用户仍可随时撤销权限,具体方法是:转到系统的<strong>设置</strong>屏幕,然后选择<strong>应用 &gt;</strong>
-
- <i>应用名称</i> <strong>&gt; 权限</strong>。应用应在运行时继续检查权限,并根据需要请求权限。
-
-
-</p>
-
-<h3 id="compatibility">
-  前后兼容性
-</h3>
-
-<p>
-  如果应用并非面向 M 开发者预览版,则即使是在 M 预览版设备上,该应用也会继续使用旧权限模型。
-当用户安装应用时,系统将要求用户授予应用清单文件中列出的所有权限。
-
-
-</p>
-
-<p class="note">
-  <strong>注:</strong>在运行 M 开发者预览版的设备上,用户可以从应用的“设置”屏幕禁用任何应用(包括旧版应用)的权限。
-
-如果用户禁用某旧版应用的权限,则系统将以静默方式禁用相应的功能。
-当应用尝试执行需要该权限的操作时,该操作不一定会导致出现异常。
-
-相反,它可能会返回空数据集、报告错误或以其他方式表现出异常行为。
-例如,如果您未经许可查询日历,则该方法会返回空数据集。
-
-</p>
-
-<p>
-  如果您在未运行 M 预览版的设备上使用新权限模型安装应用,则系统将采用与其他任何应用相同的方式处理:系统会在安装应用时要求用户授予声明的所有权限。
-
-
-
-</p>
-
-<p class="note">
-  <strong>注:</strong>对于预览版本,您必须将最低 SDK 版本设置为 M 预览版 SDK,才可使用预览版 SDK 进行编译。
-这意味着在开发者预览版运行期间,您无法在旧版平台上测试此类应用。
-
-
-</p>
-
-<h3 id="perms-vs-intents">权限与意向的比较</h3>
-
-<p>
-  许多情况下,您可以使用以下两种方式之一来让您的应用执行某项任务。
-您可以将应用设置为请求执行操作本身所需的权限。
-或者,您可以将应用设置为通过传送意向,让其他应用来执行任务。
-
-</p>
-
-<p>
-  例如,假设应用需要能够使用设备相机拍摄照片。
-应用可以请求
-<code>android.permission.CAMERA</code> 权限,以便允许其直接访问相机。
-然后,应用将使用 Camera API 控制相机并拍摄照片。
-利用此方法,您的应用能够完全控制摄影过程,并支持您将相机 UI 合并至应用中。
-
-
-</p>
-
-<p>
-  但是,如果您无需此类控制,则可仅使用 {@link
-  android.provider.MediaStore#ACTION_IMAGE_CAPTURE ACTION_IMAGE_CAPTURE} 意向来请求图像。
-启动该意向时,系统会提示用户选择相机应用(如果没有默认相机应用),然后该应用将拍摄照片。
-
-该相机应用会将照片返回给应用的 {@link
-  android.app.Activity#onActivityResult onActivityResult()} 方法。
-</p>
-
-<p>
-  同样,如果您需要打电话、访问用户的联系人或要执行其他操作,则可通过创建适当的意向来完成,或者您可以请求相应的权限并直接访问相应的对象。
-
-每种方法各有优缺点。
-
-</p>
-
-<p>
-  如果使用权限:
-</p>
-
-<ul>
-  <li>应用可在您执行操作时完全控制用户体验。
-但是,如此广泛的控制会增加任务的复杂性,因为您需要设计适当的 UI。
-
-  </li>
-
-  <li>当您首次执行操作时,系统会显示一次让用户授予权限的提示。
-之后,应用即可执行操作,不再需要用户进行其他交互。
-但是,如果用户不授予权限(或稍后撤销权限),则应用根本无法执行操作。
-
-
-  </li>
-</ul>
-
-<p>
-  如果使用意向:
-</p>
-
-<ul>
-  <li>您无需为操作设计 UI。处理意向的应用将提供 UI。不过这意味着您无法控制用户体验。
-
-用户可以与您从未见过的应用进行交互。
-
-  </li>
-
-  <li>如果用户没有适用于操作的默认应用,则系统会提示用户选择应用。如果用户未指定默认处理程序,则必须在每次执行此操作时额外处理一个对话框。
-
-
-
-  </li>
-</ul>
-
-<h2 id="coding">为运行时权限编码</h2>
-
-<p>
-  如果应用主要面向新的 M 开发者预览版,则您必须使用新权限模型。
-这意味着除了通过清单文件声明所需的权限以外,您还必须检查应用运行时是否已有相应的权限,如果没有,则需要请求权限。
-
-
-
-</p>
-
-<h3 id="enabling">
-  启用新权限模型
-</h3>
-
-<p>
-  要启用新的 M 开发者预览版权限模型,请将应用的
-<code>targetSdkVersion</code> 属性设置为 <code>"MNC"</code>,并将
-<code>compileSdkVersion</code> 设置为 <code>"android-MNC"</code>。这样可启用所有新的权限功能。
-
-</p>
-
-<p>
-  对于预览版本,您必须将 <code>minSdkVersion</code> 设置为
-<code>"MNC"</code>,才能使用预览版 SDK 进行编译。
-</p>
-
-<h3 id="m-only-perm">
-  指定仅用于 M 预览版的权限
-</h3>
-
-<p>
-  您可以使用应用清单文件中的新 <code>&lt;uses-permission-sdk-m&gt;</code> 元素指明仅在 M 开发者预览版中需要某权限。
-如果您以这种方式声明权限,则每当在旧版设备上安装应用时,系统都不会提示用户或向应用授予权限。通过使用 <code>&lt;uses-permission-sdk-m&gt;</code>
- 元素,您可以将新权限添加到更新后的应用版本,而不必强制用户在安装更新时授予权限。
-
-
-
-
-
-</p>
-
-<p>
-  如果应用在已安装 M 开发者预览版的设备上运行,则
-<code>&lt;uses-permission-sdk-m&gt;</code> 的行为与
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 相同。
-  系统不会在安装应用时提示用户授予任何权限,且应用将根据需要请求权限。
-
-</p>
-
-<h3 id="prompting">
-  提示授予权限
-</h3>
-
-<p>
-  如果应用使用新的 M 开发者预览版权限模型,则在运行 M 预览版的设备上首次启动应用时,系统不会要求用户授予所有权限。
-
-相反,应用将根据需要请求权限。
-当应用请求某权限时,系统会向用户显示一个对话框。
-
-</p>
-
-<p>
-  如果应用在已安装 SDK 22 或更低版本的设备上运行,则应用将使用旧权限模型。
-当用户安装应用时,系统将提示他们授予应用在清单文件中请求的所有权限,但那些带有 <code>&lt;uses-permission-sdk-m&gt;</code> 标记的权限除外。
-
-
-</p>
-
-<h4 id="check-platform">检查运行应用的平台</h4>
-
-<p>
-  只有运行 M 开发者预览版的设备支持此权限模型。
-在调用其中任何方法之前,应用均应通过检查 {@link android.os.Build.VERSION#CODENAME
-  Build.VERSION.CODENAME} 的值来验证运行应用的平台。
-
-如果设备正在运行 M 开发者预览版,则
-{@link android.os.Build.VERSION#CODENAME CODENAME} 为 <code>"MNC"</code>。
-</p>
-
-<h4 id="check-for-permission">检查应用是否具备所需的权限</h4>
-
-<p>当用户尝试执行需要权限的操作时,应用将检查目前是否具备执行此操作所需的权限。
-为此,应用将调用
-<code>Context.checkSelfPermission(
-<i>permission_name</i>)</code>。即便知道用户已授予该权限,应用也应执行此检查,因为用户可以随时撤销应用的权限。
-
-
-例如,如果用户需要使用应用拍摄照片,则应用将调用
-<code>Context.checkSelfPermission(Manifest.permission.CAMERA)</code>。
-</p>
-
-<p class="table-caption" id="permission-groups">
-  <strong>表 1.</strong>权限和权限组。</p>
-<table>
-  <tr>
-    <th scope="col">权限组</th>
-    <th scope="col">权限</th>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CALENDAR</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_CALENDAR</code>
-        </li>
-      </ul>
-      <ul>
-        <li>
-          <code>android.permission.WRITE_CALENDAR</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CAMERA</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.CAMERA</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CONTACTS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_CONTACTS</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_CONTACTS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_PROFILE</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_PROFILE</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.LOCATION</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.ACCESS_FINE_LOCATION</code>
-        </li>
-        <li>
-          <code>android.permission.ACCESS_COARSE_LOCATION</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.MICROPHONE</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.RECORD_AUDIO</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.PHONE</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_PHONE_STATE</code>
-        </li>
-        <li>
-          <code>android.permission.CALL_PHONE</code>
-        </li>
-        <li>
-          <code>android.permission.READ_CALL_LOG</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_CALL_LOG</code>
-        </li>
-        <li>
-          <code>com.android.voicemail.permission.ADD_VOICEMAIL</code>
-        </li>
-        <li>
-          <code>android.permission.USE_SIP</code>
-        </li>
-        <li>
-          <code>android.permission.PROCESS_OUTGOING_CALLS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.SENSORS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.BODY_SENSORS</code>
-        </li>
-      </ul>
-      <ul>
-        <li>
-          <code>android.permission.USE_FINGERPRINT</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.SMS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.SEND_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_WAP_PUSH</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_MMS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_CELL_BROADCASTS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-</table>
-
-<h4 id="request-permissions">根据需要请求权限</h4>
-
-<p>如果应用尚无所需的权限,则应用将调用
-<code>Activity.requestPermissions(String[], int)</code> 方法,请求提供一项或多项适当的权限。
-应用将传递所需的一项或多项权限,以及整数“请求代码”。
-
-  此方法异步运行:它会立即返回,并且在用户响应对话框之后,系统会使用结果调用应用的回调方法,将应用传递的相同“请求代码”传递到 <code>requestPermissions()</code>。
-
-
-</p>
-
-  <p>以下代码检查应用是否具备读取用户联系人所需的权限,并根据需要请求该权限:
-</p>
-
-<pre>
-if (checkSelfPermission(Manifest.permission.READ_CONTACTS)
-        != PackageManager.PERMISSION_GRANTED) {
-    requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
-            MY_PERMISSIONS_REQUEST_READ_CONTACTS);
-
-    // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
-    // app-defined int constant
-
-    return;
-}
-</pre>
-
-<h4 id="handle-response">处理权限请求响应</h4>
-
-<p>
-  当应用请求权限时,系统将向用户显示一个对话框。
-当用户响应时,系统将调用应用的
-<code>Activity.onRequestPermissionsResult(int, String[], int[])</code>
-,向其传递用户响应。应用需要替代该方法。回调会将您传递的相同请求代码传递给
-<code>requestPermissions()</code>。
-例如,如果应用请求
-<code>READ_CONTACTS</code> 访问权限,则可能采用以下回调方法:
-
-</p>
-
-<pre>
-&#64;Override
-public void onRequestPermissionsResult(int requestCode,
-        String permissions[], int[] grantResults) {
-    switch (requestCode) {
-        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
-            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-
-                // permission was granted, yay! do the
-                // calendar task you need to do.
-
-            } else {
-
-                // permission denied, boo! Disable the
-                // functionality that depends on this permission.
-            }
-            return;
-        }
-
-        // other 'switch' lines to check for other
-        // permissions this app might request
-    }
-}
-</pre>
-
-  <p>如果用户授予权限,则系统会为应用授予应用清单文件为该功能区域列出的所有权限。
-如果用户拒绝请求,则您应采取适当的操作。
-例如,您可以禁用任何取决于此权限的菜单操作。
-
-  </li>
-</p>
-
-<p>
-  当系统要求用户授予权限时,用户可以选择指示系统不再要求提供该权限。
-在这种情况下,当应用使用 <code>requestPermissions()</code> 请求该权限时,系统会立即拒绝此请求。
-
-在这种情况下,如果用户已再次明确拒绝您的请求,则系统会以同样的方式调用您的 <code>onRequestPermissionsResult()</code>。
-
-因此,您的应用不能假设用户采取了任何直接交互行为。
-
-</p>
-
-<h2 id="testing">测试运行时权限</h2>
-
-
-<p>
-  如果应用主要面向 M 开发者预览版,则您必须测试它是否正确处理权限。
-您不能假设应用在运行时具备任何特定的权限。
-应用首次启动时,它可能没有任何权限,且用户可以随时撤销或恢复权限。
-
-
-</p>
-
-<p>
-  您应测试应用,确保它在所有权限情况下均可正常运行。
-通过 M 预览版 SDK,我们提供了新的
-<a href="{@docRoot}tools/help/adb.html">Android
-  Debug Bridge (adb)</a> 命令,支持您使用需要尝试的任何权限设置测试应用。
-
-</p>
-
-<h3>
-  新 adb 命令和选项
-</h3>
-
-<p>
-  M 预览版 SDK 平台工具提供了多个新命令,支持您测试应用处理权限的方式。
-
-</p>
-
-<h4>
-  使用权限安装
-</h4>
-
-<p>
-  您可以使用 <a href="{@docRoot}tools/help/adb.html#move"><code>adb
-  install</code></a> 命令的新 <code>-g</code> 选项,该选项将安装应用并授予其清单文件中列出的所有权限:
-
-</p>
-
-<pre class="no-pretty-print">
-$ adb install -g &lt;path_to_apk&gt;
-</pre>
-
-<h4>
-  授予和撤销权限
-</h4>
-
-<p>
-  您可以使用新的 ADB <a href="{@docRoot}tools/help/adb.html#pm">软件包管理器 (pm)</a> 命令向已安装的应用授予权限和撤销其权限。此功能对于自动化测试非常有用。
-
-
-</p>
-
-<p>
-  要授予权限,请使用软件包管理器的 <code>grant</code> 命令:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant &lt;package_name&gt; &lt;permission_name&gt;
-</pre>
-
-<p>
-  例如,要向录音​​授予 com.example.myapp 软件包权限,请使用以下命令:
-
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant com.example.myapp android.permission.RECORD_AUDIO
-</pre>
-
-<p>
-  要撤销权限,请使用软件包管理器的 <code>revoke</code> 命令:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm revoke &lt;package_name&gt; &lt;permission_name&gt;
-</pre>
-
-<h2 id="best-practices">最佳做法</h2>
-
-<p>
-  新权限模型为用户带来更流畅的体验,让他们能够更轻松地安装应用,并得心应手地使用应用的各项功能。
-
-为了充分利用该新模型,我们建议采用下列最佳做法。
-
-</p>
-
-
-<h3 id="bp-what-you-need">仅请求自己所需的权限</h3>
-
-<p>
-  每次您请求权限时,实际上是在强迫用户作出决定。
-  如果用户拒绝请求,则会减少应用的功能。
-  您应尽量减少提出这些请求的次数。
-</p>
-
-<p>
-  例如,应用往往可以通过使用
-<a href="{@docRoot}guide/components/intents-filters.html">意向</a>(而不是请求权限)获得所需的功能。
-如果应用需要使用手机的相机拍摄照片,则可使用
- {@link
-  android.provider.MediaStore#ACTION_IMAGE_CAPTURE
-  MediaStore.ACTION_IMAGE_CAPTURE} 意向。当应用执行该意向时,系统会提示用户选择已安装的相机应用拍摄照片。
-
-
-</p>
-
-<h3 id="bp-dont-overwhelm">
-  不要让用户感到无所适从
-</h3>
-
-<p>
-  如果您让用户一次面对大量权限请求,用户可能会感到无所适从并因此退出应用。替代做法是,您应根据需要请求权限。
-
-
-</p>
-
-<p>
-  某些情况下,您的应用可能绝对需要一项或多项权限。在这种情况下,合理的做法是,在应用启动之后立即请求所有权限。
-
-例如,如果您运行摄影应用,则该应用需要访问设备的相机。
-当用户首次启动该应用时,不会对请求使用相机所需的权限感到惊讶。
-
-但是,如果同一应用还具备与用户联系人共享照片的功能,则您不应在首次启动时请求用户提供该权限,<em></em>
-
-而是等到用户尝试使用“共享”功能之后,再请求该权限。
-
-</p>
-
-<p>
-  如果应用提供了教程,则合理的做法是,在教程结束时请求提供应用的必要权限。
-
-</p>
-
-<h3 id="bp-explain">
-  解释需要权限的原因
-</h3>
-
-<p>
-  系统在您调用
-<code>requestPermissions()</code> 时显示的权限对话框将说明应用所需的权限,但不会解释为何需要这些权限。
-在某些情况下,用户可能会感到困惑。
-  最好在调用 <code>requestPermissions()</code> 之前向用户解释应用需要权限的原因。
-
-</p>
-
-<p>
-  例如,摄影应用可能需要使用位置服务,以便能够为照片添加地理标签。
-通常,用户可能不了解照片能够包含位置信息,并且对摄影应用想要了解具体位置感到不解。
-
-因此在这种情况下,应用最好在调用
-<code>requestPermissions()</code> 之前告知此功能的相关信息。<em></em>
-
-</p>
-
-<p>
-  其中一种办法是将这些请求纳入应用教程。这样,教程可以依次显示应用的每项功能,并在显示每项功能时解释需要哪些相应的权限。
-
-例如,摄影应用的教程可以演示其“与您的联系人共享照片”功能,然后告知用户需要为应用授予权限以便其查看用户的联系人。
-
-
-然后,应用可以调用 <code>requestPermissions()</code>,要求用户提供该访问权限。
-当然,并非所有用户都会按照教程操作,因此您仍需在应用的正常操作期间检查和请求权限。
-
-
-</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/index.jd b/docs/html-intl/intl/zh-cn/preview/index.jd
deleted file mode 100644
index caed4cb..0000000
--- a/docs/html-intl/intl/zh-cn/preview/index.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Android M 开发者预览版
-page.tags="preview",
-meta.tags="preview, M preview", androidm
-fullpage=true
-section.landing=true
-header.hide=1
-footer.hide=1
-@jd:body
-
-<section class="dac-expand dac-hero dac-light" >
-  <div class="wrap">
-    <div class="cols dac-hero-content">
-      <div class="col-9of16 col-push-7of16 dac-hero-figure">
-        <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png" srcset="{@docRoot}images/home/devices-hero_620px.png 1x,
-             {@docRoot}images/home/devices-hero_620px_2x.png 2x">
-      </div>
-      <div class="col-7of16 col-pull-9of16">
-        <h1 class="dac-hero-title">Android M 开发者预览版</h1>
-        <p class="dac-hero-description">
-          准备迎接 Android 的下一版本。在 Nexus 5、6、9 和 Player 中测试应用。
-了解新功能:<strong>运行权限</strong>、<strong>瞌睡</strong>和<strong>应用待机</strong>省电功能、新的<strong>协助技术</strong>等。
-
-
-        </p>
-
-        <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          开始!
-</a><br>
-        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          Developer Preview 3 (final SDK)</a>
-      </div>
-    </div>
-    <div class="dac-section dac-small">
-      <div class="resource-widget resource-flow-layout col-16"
-           data-query="collection:preview/landing/resources"
-           data-cardSizes="6x2"
-           data-maxResults="6"></div>
-    </div>
-  </div>
-</section>
-
-<section class="dac-section dac-gray"><div class="wrap">
-  <h1 class="dac-section-title">资源</h1>
-  <div class="dac-section-subtitle">
-    帮助您的应用准备使用 Android M 的必备信息。
-  </div>
-
-  <div class="resource-widget resource-flow-layout col-16"
-       data-query="collection:preview/landing/more"
-       data-cardSizes="6x6"
-       data-maxResults="16"></div>
-
-    <ul class="dac-section-links">
-      <li class="dac-section-link">
-        <a href="https://code.google.com/p/android-developer-preview/">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          报告问题
-</a>
-      </li>
-      <li class="dac-section-link"><a href="http://g.co/dev/AndroidMDevPreview">
-        <span class="dac-sprite dac-auto-chevron"></span>
-        加入 G+ 社区
-</a>
-      </li>
-    </ul>
-  </div>
-</section>
-
diff --git a/docs/html-intl/intl/zh-cn/preview/license.jd b/docs/html-intl/intl/zh-cn/preview/license.jd
deleted file mode 100644
index 31363be..0000000
--- a/docs/html-intl/intl/zh-cn/preview/license.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=许可协议
-
-@jd:body
-
-<p>
-在开始使用 Android SDK 预览版之前,您必须同意下列条款和条件。正如下文所述,请注意:这是 Android SDK 的预览版本,可能随时更改,恕不另行通知,您使用此版本的风险由您自行承担。
-Android SDK 预览版并非稳定版本,可能包含会对您的计算机系统、设备和数据造成损害的错误和缺陷。
-</p>
-
-<p>
-本协议是 Android SDK 预览版许可协议(以下称为“许可协议”)。
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1. 简介
-
-1.1 Android SDK 预览版(在本许可协议中简称为“预览版”,具体包括 Android 系统文件、封装 API 以及预览版库文件(若可用))依据本许可协议的条款授权您使用。本许可协议在您与 Google 之间就您对“预览版”的使用构成具有法律约束力的合约。
-
-1.2 “Android”是指以 Android 开源项目(项目网址为 http://source.android.com/,其内容会不时更新)名义提供、面向设备的 Android 软件栈。
-
-1.3 “Google”是指 Google Inc.,是一家特拉华州公司,主要营业地位于:1600 Amphitheatre Parkway, Mountain View, CA 94043, United States。
-
-2. 接受许可协议
-
-2.1 要使用“预览版”,您必须先同意本许可协议。如果您不接受本许可协议,则不得使用“预览版”。
-
-2.2 点击接受并/或使用“预览版”,即表示您特此同意本许可协议的条款。
-
-2.3 如果依照美国或其他国家/地区(包括您居住或您使用“预览版”所在的国家/地区)的法律,您被禁止获取“预览版”,则您不得使用“预览版”,也不得接受本许可协议。
-
-2.4 如果您将在贵公司或组织内部使用“预览版”,则您同意代表您的雇主或其他实体接受本许可协议的约束,并且您表示并保证您拥有完全的合法授权令您的雇主或上述实体受本许可协议的约束。如果您不具备必要的授权,则不得代表您的雇主或其他实体接受本许可协议或使用“预览版”。
-
-3. Google 预览版许可
-
-3.1 Google 依据本许可协议的条款授予您个人或在贵公司或组织内部有限使用“预览版”的免版税、不可转让、非独占性、不可再授权且可撤销的许可,其用途仅限开发在 Android 平台上运行的应用。
-
-3.2 您同意 Google 或第三方拥有“预览版”中存在或相关的全部合法权利、所有权和利益,包括“预览版”中存在的任何知识产权。“知识产权”是指根据专利法、版权法、商业机密法、商标法享有的任何及全部权利,以及其他任何及全部专有权利。Google 保留所有未明确授予您的权利。
-
-3.3 您不得将“预览版”用于本许可协议未明确允许的任何用途。您不得:(a) 对“预览版”或“预览版”的任何部分进行复制(备份用途除外)、修改、改编、再分发、反编译、逆向工程、反汇编或创建其衍生品;或 (b) 将“预览版”的任何部分加载到移动手持终端或除个人计算机之外的任何其他硬件设备上,将“预览版”的任何部分与其他软件合并,或者发行任何融入“预览版”某一部分的软件或设备。
-
-3.4 您同意您将不会进行任何可能引起或导致 Android 碎片化的行动,包括但不限于分发、参与创建或以任何方式推广从“预览版”衍生的软件开发工具包。
-
-3.5 对于依据开源软件许可授权的“预览版”组件,其使用、复制和分发仅受该开源软件许可条款的制约,不受本许可协议的约束。您同意在依照被授予的所有权利作为被许可方期间,在遵守此类开源软件许可协议方面始终保持良好的信誉,并避免进行任何可能导致终止、暂停或违反此类权利的行动。
-
-3.6 您同意 Google 所提供“预览版”的形式和性质可随时发生变更,而无需事先通知您,并且未来的“预览版”版本可能会与在之前的“预览版”版本上开发的应用不兼容。您同意 Google 可单方面决定在未事先通知您的情况下全面停止(永久性或暂时性)向您或用户提供“预览版”(或“预览版”内的任何功能)。
-
-3.7 本许可协议内没有任何条款授予您使用 Google 的任何商品名、商标、服务标志、徽标、域名或其他独特品牌特征的权利。
-
-3.8 您同意您不会移除、遮盖或篡改“预览版”上可能贴有或“预览版”内可能包含的任何专有权利声明(包括版权声明和商标声明)。
-
-4. 您对“预览版”的使用
-
-4.1 Google 同意本许可协议中的任何条款均未授予 Google 从您(或您的许可方)处获取您依照本许可协议使用“预览版”开发的任何软件应用中存在或与其相关的权利、所有权或利益,包括这些应用中存在的任何知识产权。
-
-4.2 您同意只出于 (a) 本许可协议和 (b) 相关管辖区域内任何适用法律、法规或公认惯例或准则(包括有关向美国或其他相关国家/地区出口数据或软件或从美国或其他相关国家/地区进口数据或软件的任何法律)所允许的目的而使用“预览版”和编写应用。
-
-4.3 您同意,如果您使用“预览版”开发应用,您将会保护用户的隐私权和合法权利。如果用户向您提供用户名、密码或其他登录信息或个人信息,您必须确保用户知晓这些信息将供您的应用使用,并且您必须为这些用户提供足以满足法律要求的隐私声明和保护。如果您的应用存储由用户提供的个人信息或敏感信息,其存储方式必须安全。如果用户向您提供 Google 帐户信息,您的应用只能在用户允许时出于用户所许可的有限目的使用该信息访问用户的 Google 帐户。
-
-4.4 您同意您不会利用“预览版”从事任何干扰、中断、损坏或以未经授权方式访问 Google 或任何第三方的服务器、网络或其他财产或服务的Activity(包括应用的开发或分发)。
-
-4.5 您同意您对通过 Android 和/或 Android 应用创建、传输或显示的任何数据、内容或资源以及您的行为所导致的后果(包括 Google 可能遭受的任何损失或损害)负全责(Google 在上述方面对您或任何第三方不承担任何责任)。
-
-4.6 您同意您为违反本许可协议、任何适用的第三方合约或服务条款或任何适用法律或法规下的义务以及任何上述违规行为所导致的后果(包括 Google 或任何第三方可能遭受的任何损失或损害)负全责(Google 在上述方面对您或任何第三方不承担任何责任)。
-
-4.7 “预览版”正在开发中,您的测试和反馈是开发过程的重要环节。使用“预览版”,即表示您承认某些功能仍在开发实现之中,您不应期望“预览版”具备稳定版本的全部功能。您同意不使用此“预览版”公开发布或发运任何应用,因为此“预览版”在 Android SDK 正式发行之后将不再受支持。
-
-5. 您的开发者凭据
-
-5.1 您同意,对于 Google 可能向您发放或可能由您自行选择的任何开发者凭据,您有责任保持其机密性,并且您对以您的开发者凭据名义开发的所有应用负全责。
-
-6. 隐私权和信息
-
-6.1 为持续创新和改进“预览版”,Google 可能会从软件收集某些使用统计数据,包括但不限于唯一标识符、关联的 IP 地址、软件的版本号以及有关软件使用了“预览版”中哪些工具和/或服务及其使用方式的信息。在收集任何上述信息之前,“预览版”都会通知您并征求您的同意。如果您拒绝同意,我们将不会收集这些信息。
-
-6.2 我们会对收集的数据进行汇总调查,以便改进“预览版”,并会按照 Google 的隐私政策(网址为 http://www.google.com/policies/privacy/)维护数据。
-
-7. 第三方应用
-
-7.1 如果您使用“预览版”运行由第三方开发或访问由第三方提供的数据、内容或资源的应用,您同意 Google 对这些应用、数据、内容或资源不承担任何责任。您理解,您通过上述第三方应用可能访问到的所有数据、内容或资源由其提供者负全责,Google 对您因使用或访问其中任何第三方应用、数据、内容或资源而遭受的任何损失或损害不承担任何责任。
-
-7.2 您应知晓,通过此类第三方应用提供给您的数据、内容和资源可能受提供商(或代表他们的其他人员或公司)所拥有的知识产权的保护。除非相关所有者明确给予许可,否则您不得修改、出租、租赁、借出、出售、分发这些数据、内容或资源(的全部或部分),或以其为基础创建衍生品。
-
-7.3 您承认您对上述第三方应用、数据、内容或资源的使用可能受到您与相关第三方之间单独订立的条款的制约。
-
-8. 使用 Google API
-
-8.1 Google API
-
-8.1.1 如果您使用任何 API 从 Google 检索数据,即表示您承认这些数据可能受到 Google 或这些数据提供方(或代表他们的其他人员或公司)拥有的知识产权的保护。您对任何上述 API 的使用可能受到附加服务条款的制约。除非相关服务条款允许,否则您不得修改、出租、租赁、借出、出售、分发这些数据(的全部或部分),或以其为基础创建衍生品。
-
-8.1.2 如果您使用任何 API 从 Google 检索用户数据,即表示您承认并同意您只有在征得用户明确同意时才会检索数据,并且只能在用户允许时出于用户许可的有限目的检索数据。
-
-9. 终止许可协议
-
-9.1 本许可协议将持续有效,直至您或 Google 按以下规定终止本协议。
-
-9.2 如果您想终止本许可协议,可通过停止使用“预览版”以及任何相关开发者凭据予以终止。
-
-9.3 Google 有权在向您作出通知后,有理由或无理由地随时终止与您订立的这份许可协议。
-
-9.4 本许可协议将在下列情况下自动终止,而无需另行通知或采取其他行动,以先符合条件者为准:
-(A) Google 在您居住或使用服务所在国家/地区停止向用户提供“预览版”或“预览版”的某些部分;
-(B) Google 发行 Android SDK 的最终版本。
-
-9.5 在本许可协议终止时,本许可协议中向您授予的许可将终止,您应立即完全停止使用“预览版”,并且第 10、11、12 和 14 节的条款将无限期继续存在。
-
-10. 免责声明
-
-10.1 您明确理解并同意,您使用“预览版”的风险将由您自行承担,并且“预览版”是按“原样”和“现状”提供,Google 不提供任何类型的担保。
-
-10.2 您对“预览版”的使用以及通过使用“预览版”下载或以其他方式获得的任何材料由您自行决定,风险自负,并且对于因此类使用而对您的计算机系统或其他设备造成的任何损害或数据损失由您单方面负责。在不对上文所述予以限制的条件下,您了解“预览版”并非稳定版本,可能存在将导致重大损害的错误、缺陷和安全漏洞,包括无法挽回地完全无法使用您的计算机系统或其他设备。
-
-10.3 Google 进一步明确拒绝任何类型的所有担保和条件,无论明示或暗示,包括但不限于有关适销性、特定用途适用性以及非侵权的暗示担保和条件。
-
-11. 有限责任
-
-11.1 您明确理解并同意,对于您可能遭遇的任何直接、间接、附带、特殊、继发或惩罚性损害(包括任何数据损失),Google 及其子公司和附属公司以及其许可方在任何责任理论下对您概不承担任何责任,无论 Google 或其代表是否已被告知或是否本应知晓发生任何上述损失的可能性。
-
-12. 赔偿
-
-12.1 您同意,在法律所允许的最大限度内,为 Google、其附属公司及其各自的董事、高管、员工和代理商提供辩护,使其免于因下列情况引起或产生的任何及所有索赔、诉讼、起诉或诉讼程序以及任何及所有损失、债务、损害、成本和费用(包括合理的律师费用)而承担责任或遭受损害:(a) 您对“预览版”的使用;(b) 您在“预览版”上开发的任何应用侵犯任何人的任何知识产权或诽谤任何人或侵犯其公开权或隐私权;以及 (c) 您的任何行为有悖于本许可协议
-
-13. 许可协议的更改
-
-13.1 Google 可能会在分发新版本“预览版”时对许可协议做出更改。做出这些更改后,Google 将在提供“预览版”的网站上公布新版本的许可协议。
-
-14. 一般法律条款
-
-14.1 本许可协议构成您与 Google 之间的完整法律协议,管辖您对“预览版”(不包括 Google 可能依据另外的书面协议向您提供的任何服务)的使用,并完全取代您之前与 Google 之间签订的、与“预览版”有关的任何协议。
-
-14.2 您同意,如果 Google 未行使或未强制执行本许可协议包含的任何法定权利或救济(或 Google 在任何适用法律下享有的相关利益),不得视为 Google 正式放弃这些权利,Google 仍可获得这些权利或救济。
-
-14.3 如果任何拥有管辖权的法院将本许可协议的任何条款裁定为无效,则该条款将从本许可协议中删除,而不会影响本许可协议的其余部分。本许可协议的其余条款将继续有效且可强制执行。
-
-14.4 您承认并同意,Google 集团旗下的每一家公司都将成为本许可协议的第三方受益人,并且此类其他公司将有权直接强制执行和依赖本许可协议中任何授予其利益(或支持其权利)的条款。除此之外,任何其他人员或公司均不得成为本许可协议的第三方受益人。
-
-14.5 出口限制。“预览版”受美国出口法律和法规的制约。您必须遵守适用于“预览版”的所有国内和国际出口法律和法规。这些法律包括目的地、最终用户和最终用途方面的限制。
-
-14.6 未经 Google 事先书面批准,您不得擅自转让或转移本许可协议,未经此类批准而试图进行的任何转让均为无效。未经 Google 事先书面批准,您不得委托您依据本许可协议所应承担的责任或义务。
-
-14.7 本许可协议以及您与 Google 依据本许可协议而建立的关系受加利福尼亚州法律管辖,而无论其是否与其他法律条款冲突。您与 Google 同意服从位于加利福尼亚州圣克拉拉县内法院的专属司法管辖权,以解决本许可协议引起的任何法律事务。尽管有上述规定,您同意仍允许 Google 在任何管辖区域申请禁令救济(或同等类型的紧急法律救济)。
-
-
-</div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-cn/preview/overview.jd b/docs/html-intl/intl/zh-cn/preview/overview.jd
deleted file mode 100644
index d931db0..0000000
--- a/docs/html-intl/intl/zh-cn/preview/overview.jd
+++ /dev/null
@@ -1,389 +0,0 @@
-page.title=计划概览
-page.metaDescription=欢迎参加 Android M 开发者预览版计划。此计划将为您提供针对 Android 的下一版本测试和优化应用所需的所有功能。
-page.image=images/cards/card-preview_16-9_2x.png
-page.tags="preview", "developer", "android"
-
-@jd:body
-
-<div class="cols" style=
-"background-color:#ffebc3; padding: 5px 0;margin-bottom:1em; text-align:center;">
-<h3>
-    Developer Preview 2 is now available
-  </h3>
-
- <ul class="dac-section-links">
-    <li class="dac-section-link">
-      <a href="{@docRoot}preview/support.html#preview2-notes">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Read the Notes</a>
-    </li>
-
-    <li class="dac-section-link">
-      <a href="{@docRoot}preview/support.html#preview2-get">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Get the Update</a>
-    </li>
-
-    <li class="dac-section-link">
-      <a href="https://code.google.com/p/android-developer-preview/">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Report Issues</a>
-    </li>
-  </ul>
-</div>
-
-<p>
-  欢迎使用 <strong>Android M 开发者预览版</strong>计划。此计划将为您提供针对 Android 的下一版本测试和优化应用所需的所有功能。
-
-它是一款免费软件。您仅需下载 M 开发者预览版工具即可立即使用。
-
-</p>
-
-<div style="background-color:#eceff1;padding:1em;">
-<div class="wrap">
-  <div class="cols">
-    <div class="col-4of12">
-      <h5>
-        硬件和模拟器系统映像
-      </h5>
-
-      <p>
-        在 Nexus 5、6、9 和 Player(适用于电视)以及模拟器中运行并测试应用。
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        最新的平台代码
-      </h5>
-
-      <p>
-        我们将在预览版期间提供多次更新,因此您将可以针对最新的平台变更测试您的应用。
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        通过 OTA(空中下载技术)更新
-      </h5>
-
-      <p>
-        在向设备刷入初始预览版后,即可通过 OTA 技术获取更新。
-
-      </p>
-    </div>
-  </div>
-
-  <div class="cols">
-
-
-    <div class="col-4of12">
-      <h5>
-        新行为和新功能
-      </h5>
-
-      <p>
-        尽早做好支持新平台行为(例如新运行时权限模型和省电功能)的准备工作。
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        为处理开发者反馈问题而设的优先窗口
-      </h5>
-
-      <p>
-        在最初的几周里,我们将优先处理开发者报告的问题,以便尽快测试并提供反馈。
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        反馈和支持
-      </h5>
-
-      <p>
-        使用<a href="https://code.google.com/p/android-developer-preview/">问题跟踪器</a>向我们报告问题并提供反馈。
-        与 <a href="http://g.co/dev/AndroidMDevPreview">M&nbsp;开发者社区</a>中的其他开发者建立联系。
-
-      </p>
-    </div>
-  </div>
-</div>
-</div>
-
-<!--
-<p>
-  With the M Developer Preview, you'll get an early start on testing your apps,
-  with enough time to make adjustments before the public platform release later
-  in the year. We'll provide several updates to the Preview tools in the weeks
-  ahead, so you can keep in sync with the latest changes as the platform moves
-  toward launch.
-</p>
-<img src="{@docRoot}preview/images/m-preview-timeline.png" alt=
-"Preview program timeline" id="timeline">
-<p>
-  You can help us improve the platform by <a href=
-  "https://code.google.com/p/android-developer-preview/">reporting issues</a>
-  through our feedback channels. This is especially
-  critical in the first month of the preview, when we’ll be giving priority to
-  developer-reported issues and feedback.
-</p> -->
-
-
-<h2 id="timeline">
-  时间表和更新
-</h2>
-<img src="{@docRoot}preview/images/m-preview-timeline-crop.png" alt="Preview program timeline" id="timeline">
-<p>
-  M 开发者预览版从 5 月 28 日开始一直运行到最终 Android M SDK 发布为止。最终的 Android M SDK 将于 2015 年第三季度公众版发布之前不久发布。
-
-
-</p>
-
-<p>
-  在开发阶段的各个里程碑,我们将为您的测试设备提供预览版更新。
-  暂定的里程碑包括
-</p>
-
-<ul>
-  <li>
-    <strong>预览版&nbsp;1</strong>(5 月底发布初始预览版);
-  </li>
-
-  <li>
-    <strong>预览版&nbsp;2</strong>(6 月底/7 月初);
-  </li>
-
-  <li>
-    <strong>预览版&nbsp;3</strong>(7 月底发布近乎最终版本)
-  </li>
-</ul>
-
-<p>
-  这些更新将促进形成<strong>最终版本的 SDK</strong>(第三季度末),为 Android 新版本以及最终的系统行为和功能交付官方 API。
-
-
-</p>
-
-<p>
-  如果您在 Android M 中进行测试和开发,我们郑重建议您随着预览版更新的发布,<strong>将开发环境保持为相应的最新版本</strong>。
-
-  为了简化这一过程,我们将为已刷入预览版内部版本的设备提供<strong>空中下载 (OTA) 更新</strong>功能,并提供可供您手动下载并刷入的系统映像。
-
-
-</p>
-<p class="note">
-  <strong>注:</strong>最终的 SDK 和系统映像无法通过 OTA 交付,而是需要<strong>手动刷入</strong>到测试设备中。</strong>
-
-
-</p>
-
-<p>
-  当有预览版更新可用时,我们将通过 <a href="http://android-developers.blogspot.com/">Android 开发者博客</a>、此站点以及 <a href="http://g.co/dev/AndroidMDevPreview">Android M 开发者社区</a>通知您。
-
-
-</p>
-
-<h2 id="preview_tools">
-  预览版具有哪些功能?
-</h2>
-
-<p>
-  M 开发者预览版包括您在各种使用不同屏幕尺寸、网络技术、CPU/GPU 芯片和硬件架构的设备中测试现有应用所需的所有功能。
-
-
-</p>
-
-<h4>
-  SDK 工具
-</h4>
-
-<p>
-  您可通过 <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a> 中的 SDK 管理器下载这些组件:
-</p>
-
-<ul>
-  <li>M 开发者预览版 <strong>SDK 工具</strong>
-  </li>
-
-  <li>M 开发者预览版<strong>模拟器系统映像</strong>(32 位和 64 位)
-
-  </li>
-
-  <li>适用于 Android TV 的 M 开发者预览版<strong>模拟器系统映像</strong>(32 位)
-
-  </li>
-</ul>
-
-<h4>
-  硬件系统映像
-</h4>
-
-<p>
-  您可从<a href="download.html">“下载”页面</a>中下载这些供 Nexus 设备使用的硬件系统映像:
-
-</p>
-
-<ul>
-  <li>
-    <strong>Nexus 5</strong> (GSM/LTE) “hammerhead” 设备系统映像
-  </li>
-
-  <li>
-    <strong>Nexus 6</strong> “shamu” 设备系统映像
-  </li>
-
-  <li>
-    <strong>Nexus 9</strong> (Wi-Fi) “volantis” 设备系统映像
-  </li>
-
-  <li>
-    <strong>Nexus Player</strong> (Android TV) “fugu” 设备系统映像
-  </li>
-</ul>
-
-<h4>
-  文档和示例代码
-</h4>
-
-<p>
-  以下文档资源有助于您了解预览版:
-</p>
-
-<ul>
-  <li>
-    <a href="setup-sdk.html">设置 SDK</a>,提供入门指南的分步说明。
-
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/testing/guide.html">测试指南</a>和<a href="behavior-changes.html">行为变更</a>,带您了解主要测试领域。
-  </li>
-
-  <li>新 API 文档,包括 <a href="api-overview.html">API 概览</a>、可下载的 <a href="{@docRoot}preview/download.html#docs">API 参考资料</a>以及有关<a href="{@docRoot}preview/features/runtime-permissions.html">权限</a>、<a href="{@docRoot}preview/backup/index.html">应用备份</a>等主要功能的详细开发者指南。
-
-
-
-
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/samples.html">示例代码</a>,演示如何支持权限和其他新功能。
-
-  </li>
-
-  <li>
-    M 开发者预览版当前版本的<a href="{@docRoot}preview/support.html#release-notes">版本说明</a>,包括变更说明和差异报告。
-
-  </li>
-</ul>
-
-<h4>
-  支持资源
-</h4>
-
-<p>
-  在 M 开发者预览版中测试和开发时,您可使用以下支持资源:
-
-</p>
-
-<ul>
-  <li><a href="https://code.google.com/p/android-developer-preview/">M 开发者预览版问题跟踪器</a>是您的<strong>主要反馈渠道。</strong>
-
-您可通过问题跟踪器报告错误、性能问题和一般反馈。
-您还可检查<a href="https://code.google.com/p/android-developer-preview/wiki/KnownIssues">已知问题</a>并找出解决方法步骤。
-
-  </li>
-
-  <li><a href="http://g.co/dev/AndroidMDevPreview">Android M 开发者社区</a>是一家 Google+ 社区。在此社区中,您可<strong>与其他使用 Android M 的开发者建立联系</strong>。您可以共享观察结果或想法,或查找 Android M 问题的解决方法。
-
-
-
-  </li>
-</ul>
-
-
-<h2 id="preview_apis_and_publishing">
-  锁定目标、预览版 API 和发布
-</h2>
-
-<p>
-  Android M 开发者预览版是仅面向开发的版本,
-<strong>并不具有标准的 API 级别</strong>。如果您想选择拒绝通过兼容性行为测试您的应用(强烈推荐),则可将应用的 <code><a href=
-  "/guide/topics/manifest/uses-sdk-element.html">targetSdkVersion</a></code>
- 设置为 <code>“MNC”</code>,从而锁定 M 开发者预览版。
-
-
-</p>
-
-<p>
-  Android M 开发者预览版提供<strong>预览 API</strong> 功能
-&mdash; 在最终的 SDK 发布之前,这些 API 都不是正式的 API。目前,最终的 SDK 计划于 2015 年第三季度发布。
-这意味着一段时期内,特别是该计划的最初几周内,
-<strong>API 可能会出现细微变化</strong>。
-我们会通过 Android M 开发者预览版的每次更新,为您提供一份变更摘要。
-
-</p>
-
-<p class="note">
-  请注意,尽管预览版 API 可能会更改,但运行时权限和省电功能等基本系统行为仍保持稳定,可以立即用于测试。
-
-
-</p>
-
-<p>
-  关于发布,Google Play 会<strong>禁止发布面向 M 开发者预览版的应用</strong>。
-当 Android M 最终版本 SDK 可用时,您可以锁定官方 Android M API 级别,并将应用发布至 Google Play。
-
-与此同时,如果您需要将针对 Android M 的应用分发给测试者,则可通过电子邮件或从您的站点直接下载实现这一点。
-
-
-</p>
-
-<h2 id="get_started">
-  如何开始
-</h2>
-
-<p>
-  要开始测试应用,请执行以下操作:
-</p>
-
-<ol>
-  <li>查看 <a href="{@docRoot}preview/api-overview.html">API 概览</a>和<a href="{@docRoot}preview/behavior-changes.html">行为变更</a>,大致了解新功能及其如何影响您的应用。
-
-特别地,您需要了解新的<a href="{@docRoot}preview/features/runtime-permissions.html">运行时权限</a>模型、省电功能和自动备份。
-
-
-  </li>
-
-  <li>遵循有关<a href="{@docRoot}preview/setup-sdk.html">设置预览版 SDK</a> 和配置测试设备的说明,来设置您的环境。
-
-
-  </li>
-
-  <li>遵循<a href="https://developers.google.com/android/nexus/images">刷入说明</a>,刷入 Nexus 5、6、9 和 Player 的最新 M 开发者预览版系统映像。
-
-为开发设备刷入系统映像后,预览版更新将通过无线 (OTA) 更新进行交付。</a>
-
-  </li>
-
-  <li>下载 <a href="{@docRoot}preview/download.html#docs">M 预览版 API 参考资料</a>和 <a href="{@docRoot}preview/samples.html">M 预览版示例</a>,更深入地了解新 API 功能以及如何在应用中使用这些功能。
-
-
-
-  </li>
-
-  <li>加入 <a href="http://g.co/dev/AndroidMDevPreview">Android M 开发者社区</a>,获取最新资讯并与使用新平台的其他开发者建立联系。
-
-
-  </li>
-</ol>
-
-<p>
-  感谢您参加 Android M 开发者预览版计划!
-</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/samples.jd b/docs/html-intl/intl/zh-cn/preview/samples.jd
deleted file mode 100644
index 9f16319..0000000
--- a/docs/html-intl/intl/zh-cn/preview/samples.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=示例
-page.image=images/cards/samples-new_2x.png
-@jd:body
-
-<p>
-  以下是 M 开发者预览版的代码示例。要在 Android Studio 中下载示例,请选择<b>文件 &gt; 导入示例</b>菜单选项。
-
-</p>
-
-<p class="note">
-  <strong>注:</strong>这些可下载的项目设计用于与 Gradle 和 Android Studio 结合使用。
-
-</p>
-
-
-<h3 id="RuntimePermissions">运行时权限</h3>
-
-<p>
- Android M 改变了系统权限运行的方式。系统会在运行时(而不是安装期间)要求用户批准权限请求。
-此示例显示了如何请求这些权限。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-RuntimePermissions">在 GitHub 中获取</a></p>
-
-<h3 id="ConfirmCredentials">确认凭据</h3>
-
-<p>
- 此示例演示了在您的应用中如何使用设备凭据作为身份验证方法。
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ConfirmCredential">在 GitHub 中获取</a>
-</p>
-
-<h3 id="FingerprintDialog">指纹对话框</h3>
-
-<p>
- 此示例演示了在您的应用中如何识别已注册的指纹以验证用户的身份。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-FingerprintDialog">在 GitHub 中获取</a></p>
-
-<h3 id="AutomaticBackup">自动备份应用</h3>
-
-<p>
- Android M 引入了自动备份应用设置功能。此示例演示如何向应用添加筛选规则,以管理设置备份。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-AutoBackupForApps">在 GitHub 中获取</a></p>
-
-<h3 id="CameraRaw">相机 2 RAW</h3>
-
-<p>
-  演示如何使用 <code>Camera2</code> API 捕获 RAW 相机缓冲区并将其另存为 <code>DNG</code> 文件。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-Camera2Raw">在 GitHub 中获取</a></p>
-
-<h3 id="ActiveNotification">活动通知</h3>
-
-<p>
-  此示例演示 <a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a>
- 如何让您了解应用当前显示的通知数量。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ActiveNotifications">在 GitHub 中获取</a></p>
diff --git a/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd b/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd
deleted file mode 100644
index e9910b4..0000000
--- a/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd
+++ /dev/null
@@ -1,207 +0,0 @@
-page.title=设置预览版 SDK
-page.image=images/cards/card-set-up_16-9_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本文内容</h2>
-      <ol>
-        <li><a href="#get-as13">获取 Android Studio 1.3</a></li>
-        <li><a href="#get-sdk">获取预览版 SDK</a></li>
-        <li><a href="#create-update">创建或更新项目</a></li>
-        <li><a href="#setup-test">测试设置</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>M 开发者预览版 SDK 可通过 Android SDK 管理器获取。本文假定您熟悉 Android 应用开发的相关操作,例如:使用 Android SDK 管理器和创建项目。
-
-如果您是首次使用 Android,请先参阅<a href="{@docRoot}training/basics/firstapp/index.html">开发您的第一款应用</a>培训课程。</a>
-
-</p>
-
-<h2 id="get-as13">获取 Android Studio 1.3</h2>
-
-<p>开发者预览版与处于预览版状态的 Android Studio 1.3 结合使用时效果最佳。
-强烈建议您安装 Android Studio 1.3 的预览版本,以便与预览版 SDK 结合使用。
-</p>
-
-<p class="caution"><strong>注意:</strong>Android Studio 1.3 的 Canary 预览版仍处于活动的开发状态。
-如果您正使用主要开发机器测试开发者预览版,则可创建另一套 Android Studio 安装系统供测试使用。
-
-</p>
-
-<p>要安装 Android Studio 1.3 预览版,请执行以下操作:</p>
-
-<ol>
-  <li>下载并启动 <a href="{@docRoot}tools/studio/index.html">Android Studio</a>。
-
-  </li>
-
-  <li>打开<strong>设置</strong>窗口(在 Windows 中,您可通过选择<strong>文件 &gt; 设置</strong>执行此操作)。
-选择<strong>外观和行为 &gt; 系统设置 &gt; 更新</strong>面板。
-
-
-
-    <p class="aside">在 OSX 中,您可在 Android Studio 的<strong>首选项</strong>窗口中找到<strong>外观和行为</strong>面板。
-
-</p>
-  </li>
-
-  <li> 在<strong>更新</strong>面板中,选择选项<strong>自动检查更新:
-Canary 渠道</strong>。
-  </li>
-
-  <li>在<strong>更新</strong>面板中,选择<strong>立即检查</strong>,以检查最新的 Canary 内部版本。
-当系统出现提示时,请下载并安装该内部版本。
-
-  </li>
-</ol>
-
-<h2 id="get-sdk">获取预览版 SDK</h2>
-
-<p>要将预览版 SDK 组件添加到开发环境,请执行以下操作:</p>
-
-<ol>
-  <li>启动 Android Studio 1.3 预览版。
-  </li>
-
-  <li>打开<strong>设置</strong>窗口(在 Windows 中,您可通过选择<strong>文件 &gt; 设置</strong>执行此操作)。
-选择<strong>外观和行为 &gt; 系统设置 &gt; 更新</strong>面板。
-
-
-
-    <p class="aside">在 OSX 中,您可在 Android Studio 的<strong>首选项</strong>窗口中找到<strong>外观和行为</strong>面板。
-
-</p>
-  </li>
-
-  <li>在<strong>更新</strong>面板中,选择选项<strong>自动检查更新:
-Canary 渠道</strong>和<strong>自动检查 Android SDK 的更新:
-预览版渠道</strong>。
-  </li>
-
-  <li>启动 <strong>Android SDK 管理器</strong>。(对于 Android Studio 1.3,SDK 管理器已集成至 Android Studio,而不是独立应用。)
-
-
-  </li>
-
-  <li>在<strong>平台</strong>部分下,选择 <strong>Android MNC 预览版</strong>。
-
-  </li>
-
-  <li>在<strong>工具</strong>部分中,选择最新的 Android <strong>SDK 工具</strong>、<strong>平台工具</strong>和<strong>构建工具</strong>。
-
-
-  </li>
-
-  <li>点击<strong>安装软件包</strong>并接受所有软件包的许可协议。
-
-  </li>
-
-  <li>验证是否已安装 M 开发者预览版,具体方式如下:打开<strong>设置</strong>窗口并选择<strong>外观与行为 &gt; 系统设置 &gt; Android SDK</strong> 面板。
-
-</li>
-
-  <li>在 <strong>Android SDK</strong> 面板中,选择 <strong>SDK 平台</strong>选项卡。
-<strong>Android MNC 预览版</strong>应作为“已安装”列出<em></em>。
-另外,打开 <strong>SDK 工具</strong>选项卡,确认是否已安装最新工具。
-
-
-  </li>
-</ol>
-<p>完成上述步骤后,预览版组件即可用于您的开发环境。
- </p>
-
-
-<h2 id="create-update">创建或更新项目</h2>
-
-<p>
-  为使用预览版 API,您必须创建或更新一个使用预览版组件的开发项目。
-
-</p>
-
-
-<h3 id="create">创建新项目</h3>
-
-<p>
-  建议使用 Android Studio 创建一个使用该预览版的项目。按照<a href="{@docRoot}sdk/installing/create-project.html">创建项目</a>中所描述的步骤操作,直到转到项目向导中的“外形”<em></em>屏幕为止。
-
-然后执行下列步骤,创建为该预览版配置的项目。
-
-</p>
-
-<ul>
-  <li>选中<strong>手机和平板电脑</strong>。</li>
-  <li>选择 <strong>MNC:Android M (预览版)</strong>(在<strong>最低 SDK</strong> 中)。
-</li>
-</ul>
-
-
-<h3 id="update">更新现有项目</h3>
-
-<p>
-  对于现有项目,您必须修改项目配置以启用预览版 API。在开发环境中,打开模块的 <code>build.gradle</code> 文件,并按如下所示设置这些值:
-
-
-</p>
-
-<ul>
-  <li>将 <code>compileSdkVersion</code> 设置为 <code>'android-MNC'</code></li>
-  <li>将 <code>minSdkVersion</code> 设置为 <code>'MNC'</code></li>
-  <li>将 <code>targetSdkVersion</code> 设置为 <code>'MNC'</code></li>
-</ul>
-
-
-<h2 id="setup-test">测试设置</h2>
-
-<p>
-  要使用预览版测试应用,您必须拥有已配置平台预览版本的物理设备或虚拟设备。
-如果您拥有兼容设备,则可安装预览版平台进行测试。
-另外,您可以配置用于测试的虚拟设备。
-</p>
-
-<h3 id="setup-device">设置物理设备</h3>
-
-<p>
-  如果您拥有 Nexus 5、Nexus 6、Nexus 9 或 Android TV,则可在这些设备中安装预览版系统映像,来测试您的应用。通过使用 Android 虚拟设备管理器工具,您可从 Android Studio 内设置带有平台预览版本的虚拟设备。
-
-
-
-</p>
-
-<p class="caution">
-  <strong>重要说明:</strong>在设备中安装预览版映像会删除此设备中的所有数据,因此您应在安装预览版映像之前备份数据。<em></em>
-
-</p>
-
-<h3 id="setupAVD">设置虚拟设备</h3>
-
-<p>
-  通过使用 Android 虚拟设备管理器工具,您可从 Android Studio 内设置带有平台预览版本的虚拟设备。
-
-</p>
-
-<p>要使用 AVD 管理器创建 AVD,请执行以下操作:</p>
-
-<ol>
-  <li>在开发环境中安装预览版 SDK,如<a href="{@docRoot}preview/setup-sdk.html">设置预览版 SDK</a> 中所述。
-
-</li>
-  <li>按照<a href="{@docRoot}tools/devices/managing-avds.html">使用 AVD 管理器管理 AVD </a>中的步骤操作。
-
-使用以下设置:
-    <ul>
-      <li><strong>设备:</strong>Nexus 5、Nexus 6、Nexus 9 或 Android TV</li>
-      <li><strong>目标:</strong>
-       Android M(预览版)- API 级别 M</li>
-      <li><strong>ABI:</strong>x86</li>
-    </ul>
-  </li>
-</ol>
-
-<p>
-  如需了解有关创建测试用虚拟设备的详细信息,请参阅<a href="{@docRoot}tools/devices/index.html">管理虚拟设备</a>。
-</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/testing/guide.jd b/docs/html-intl/intl/zh-cn/preview/testing/guide.jd
deleted file mode 100644
index 256d5bb..0000000
--- a/docs/html-intl/intl/zh-cn/preview/testing/guide.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=测试指南
-page.image=images/cards/card-build_16x9_2x.png
-page.keywords=预览资源,androidm,测试,权限
-
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本文内容</h2>
-      <ol>
-        <li><a href="#runtime-permissions">测试权限</a></li>
-        <li><a href="#doze-standby">测试瞌睡模式和应用待机模式</a></li>
-        <li><a href="#ids">自动备份和设备标识符</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  利用 Android M 开发者预览版,您有机会确保应用可使用下一平台版本。
-如 <a href="{@docRoot}preview/api-overview.html">API 概览</a>和<a href="{@docRoot}preview/behavior-changes.html">行为变更</a>中所述,该预览版包括大量 API 和可能影响应用的行为变更。
-
-使用预览版测试应用时,您应重点关注一些特定的系统变更,确保用户拥有愉悦的体验。
-
-
-</p>
-
-<p>
-  本指南介绍可使用您的应用测试预览版的哪些功能以及如何测试。您应确定优先测试以下特定预览版功能,因为它们可能会对应用行为产生较大影响。
-
-
-</p>
-
-<ul>
-  <li><a href="#runtime-permissions">权限</a>
-  </li>
-  <li><a href="#doze-standby">瞌睡模式和应用待机模式</a>
-  </li>
-  <li><a href="#ids">自动备份和设备标识符</a></li>
-</ul>
-
-<p>
-  如需了解有关如何使用预览版系统映像设置设备或虚拟设备以进行测试的详细信息,请参阅<a href="{@docRoot}preview/setup-sdk.html">设置预览版 SDK</a>。
-
-</p>
-
-
-<h2 id="runtime-permissions">测试权限</h2>
-
-<p>
-  新<a href="{@docRoot}preview/features/runtime-permissions.html">权限</a>模型改变了用户向您的应用分配权限的方式。
-您的应用必须在运行时要求用户提供各项权限,而不是在安装过程中要求授予所有权限。
-
-对于用户而言,此行为有助于他们更精细地控制每个应用的Activity,并更深入地了解应用为何请求提供特定权限的上下文信息。
-用户可以随时向应用授予某项权限或撤销其某项权限。
-预览版的这种功能最有可能会对应用行为产生影响,而且可能会阻止某些应用功能运行或只能在降级状态中运行。
-
-
-</p>
-
-<p class="caution">
-  这一变更会影响在新平台上运行的所有应用,即便这些应用并非面向新平台版本开发亦是如此。
-该平台为旧版应用提供有限的兼容性行为,但您现在应当开始计划将应用迁移到新权限模型,以便在官方平台启动时发布更新的应用版本。
-
-
-</p>
-
-
-<h3 id="permission-test-tips">测试提示</h3>
-
-<p>
-  使用以下测试提示有助于您计划并通过新权限行为执行应用测试。
-
-</p>
-
-<ul>
-  <li>识别应用的当前权限和相关的代码路径</li>
-  <li>跨受权限保护的服务和数据测试用户流程</li>
-  <li>使用授予/撤销权限的各种组合进行测试</li>
-  <li>使用 {@code adb} 工具从命令行管理权限:
-    <ul>
-      <li>按组列出权限和状态:
-        <pre>adb shell pm list permissions -d -g</pre>
-      </li>
-      <li>使用以下语法授予或撤销一项或多项权限:<br>
-        <pre>adb shell pm [grant|revoke] &lt;permission.name&gt; ...</pre>
-      </li>
-    </ul>
-  </li>
-  <li>针对使用权限的服务对应用进行分析</li>
-</ul>
-
-<h3 id="permission-test-strategy">测试策略</h3>
-
-<p>
-  权限更改会影响应用的结构和设计,以及您为用户提供的用户体验和流程。
-您应评估应用的当前权限使用情况并开始计划要提供的新流程。
-平台的正式版本提供兼容性行为,但您应计划更新应用,而不是依赖于这些行为。
-
-
-</p>
-
-<p>
-  确定应用实际需要和使用的权限,然后找出各种使用受权限保护的服务的代码路径。
-您可通过结合使用新平台测试和代码分析完成此操作。
-在测试中,您应通过将应用的 {@code targetSdkVersion} 更改为预览版,重点关注选择运行时权限。
-如需了解详细信息,请参阅<a href="{@docRoot}preview/setup-sdk.html#">设置预览版 SDK</a>。
-
-</p>
-
-<p>
-  使用已撤销和已添加权限的各种组合进行测试,突出显示依赖于权限的用户流程。
-如果依赖关系不明显或不符合逻辑,则您应考虑重构或划分该流程,以消除依赖关系或阐明需要权限的原因。
-
-
-</p>
-
-<p>
-  如需了解有关运行时权限行为、测试和最佳做法的详细信息,请参阅<a href="{@docRoot}preview/features/runtime-permissions.html">权限</a>开发者预览版页面。
-
-
-</p>
-
-
-<h2 id="doze-standby">测试瞌睡模式和应用待机模式</h2>
-
-<p>
-  当设备处于空闲状态或应用未聚焦时,瞌睡模式和应用待机模式的节能功能将限制应用可执行的后台处理工作量。
-系统可对应用实施的限制包括:限制或禁止访问网络、暂停后台任务、暂停通知、忽略唤醒请求和闹铃。
-
-要确保应用在完成这些节能优化后正常运行,您应通过模拟这些低功耗状态对应用进行测试。
-
-
-</p>
-
-<h4 id="doze">在瞌睡模式下测试您的应用</h4>
-
-<p>要在瞌睡模式下测试您的应用,请执行以下操作:</p>
-
-<ol>
-<li>使用 M 预览版系统映像配置硬件设备或虚拟设备</li>
-<li>将设备连接到开发计算机并安装应用</li>
-<li>运行应用并使其保持活动状态</li>
-<li>通过运行以下命令,模拟进入瞌睡模式的设备:
-
-<pre>
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-
-  </li>
-  <li>观察重新激活设备时的应用行为。确保应用在设备退出瞌睡模式时正常恢复
-</li>
-</ol>
-
-
-<h4 id="standby">在应用待机模式下测试您的应用</h4>
-
-<p>要在应用待机模式下测试您的应用,请执行以下操作:</p>
-
-<ol>
-  <li>使用 M 预览版系统映像配置硬件设备或虚拟设备</li>
-  <li>将设备连接到开发计算机并安装应用</li>
-  <li>运行应用并使其保持活动状态</li>
-  <li>通过运行以下命令,模拟进入待机模式的应用:
-
-<pre>
-$ adb shell am broadcast -a android.os.action.DISCHARGING
-$ adb shell am set-idle &lt;packageName&gt; true
-</pre>
-
-  </li>
-  <li>使用以下命令模拟如何唤醒应用:
-    <pre>$ adb shell am set-idle &lt;packageName&gt; false</pre>
-  </li>
-  <li>观察唤醒后的应用行为。确保应用从待机模式中正常恢复。
-特别地,您应检查应用的通知和后台作业是否按预期继续运行
-</li>
-</ol>
-
-<h2 id="ids">自动备份应用和设备特定的标识符</h2>
-
-<p>如果应用坚持在内部存储中使用任何设备特定的标识符,如 Google 云消息传递注册 ID,请确保遵循最佳做法将存储位置从自动备份中排除,如<a href="{@docRoot}preview/backup/index.html">自动备份应用</a>中所述。
-
-
-
- </p>
diff --git a/docs/html-intl/intl/zh-cn/preview/testing/performance.jd b/docs/html-intl/intl/zh-cn/preview/testing/performance.jd
deleted file mode 100644
index 1f88854..0000000
--- a/docs/html-intl/intl/zh-cn/preview/testing/performance.jd
+++ /dev/null
@@ -1,656 +0,0 @@
-page.title=测试显示性能
-page.image=images/cards/card-test-performance_2x.png
-page.keywords=性能, fps, 工具
-
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本文内容</h2>
-      <ol>
-        <li><a href="#measure">测量 UI 性能</a>
-          <ul>
-            <li><a href="#aggregate">聚合帧统计信息</a></li>
-            <li><a href="#timing-info">精确的帧时间信息</a></li>
-            <li><a href="#timing-dump">简单的帧时间转储</a></li>
-            <li><a href="#collection-window">控制统计信息收集的时段</a></li>
-            <li><a href="#diagnose">诊断性能回归</a></li>
-            <li><a href="#resources">其他资源</a></li>
-          </ul>
-        </li>
-        <li><a href="#automate">自动化 UI 性能测试</a>
-          <ul>
-            <li><a href="#ui-tests">设置 UI 测试</a></li>
-            <li><a href="#automated-tests">设置自动化 UI 测试</a></li>
-            <li><a href="#triage">分类并解决观察到的问题</a></li>
-          </ul>
-        </li>
-      </ol>
-  </div>
-</div>
-
-
-<p>
-  用户界面 (UI) 性能测试可确保您的应用不仅满足其功能要求,同时确保用户与应用之间的交互顺畅无比,能够以每秒连续 60 帧(<a href="https://www.youtube.com/watch?v=CaMTIgxCSqU&amp;index=25&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">为什么选择 60fps?</a>)的帧速运行,而不会出现任何帧丢失或延迟的现象,也就是我们通常所说的“卡顿”。<em></em>
-
-
-本文档介绍可用于测量 UI 性能的工具并提出一种将 UI 性能测量集成到测试实践中的方法。
-
-
-</p>
-
-
-<h2 id="measure">测量 UI 性能</h2>
-
-<p>
-  为了改善性能,您首先必须能够测量系统性能,然后诊断并识别可能来自管道各个部分的问题。
-
-
-</p>
-
-<p>
-  <a href="https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a> 是一种在设备上运行并转储感兴趣的系统服务状态信息的 Android 工具。<em></em>
-
-通过向 dumpsys 传递“gfxinfo”命令,可以提供 logcat 格式的输出,其中包含有关与录制阶段期间发生的动画帧相关的性能信息。
-
-<em></em>
-</p>
-
-<pre>
-&gt; adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt;
-</pre>
-
-<p>
-  此命令可以生成多个不同表达形式的帧时间数据。
-</p>
-
-<h3 id="aggregate">聚合帧统计信息</h3>
-
-<p>
-  借助 M 预览版,该命令可将在整个进程生命周期中收集的帧数据的聚合分析打印输出到 logcat。
-例如:
-</p>
-
-<pre class="noprettyprint">
-Stats since: 752958278148ns
-Total frames rendered: 82189
-Janky frames: 35335 (42.99%)
-90th percentile: 34ms
-95th percentile: 42ms
-99th percentile: 69ms
-Number Missed Vsync: 4706
-Number High input latency: 142
-Number Slow UI thread: 17270
-Number Slow bitmap uploads: 1542
-Number Slow draw: 23342
-</pre>
-
-<p>
-  这些高级统计信息可以较高水平地传达应用的呈现性能及其在多个帧之间的稳定性。
-
-</p>
-
-
-<h3 id="timing-info">精确的帧时间信息</h3>
-
-<p>
-  M 预览版附带提供了一个适用于 gfxinfo 的新命令,即:framestats,该命令根据最近的帧提供非常详细的帧时间信息,让您能够更准确地查出并调试问题。<em></em>
-
-
-</p>
-
-<pre>
-&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; framestats
-</pre>
-
-<p>
-  此命令根据应用生成的最后 120 帧,打印输出带有纳秒时间戳的帧时间信息。以下是来自 adb dumpsys gfxinfo &lt;软件包名称&gt; framestats 的原始输出示例:
-
-
-</p>
-
-<pre class="noprettyprint">
-0,49762224585003,49762241251670,9223372036854775807,0,49762257627204,49762257646058,49762257969704,49762258002100,49762265541631,49762273951162,49762300914808,49762303675954,
-0,49762445152142,49762445152142,9223372036854775807,0,49762446678818,49762446705589,49762447268818,49762447388037,49762453551527,49762457134131,49762474889027,49762476150120,
-0,49762462118845,49762462118845,9223372036854775807,0,49762462595381,49762462619287,49762462919964,49762462968454,49762476194547,49762476483454,49762480214964,49762480911527,
-0,49762479085548,49762479085548,9223372036854775807,0,49762480066370,49762480099339,49762481013089,49762481085850,49762482232152,49762482478350,49762485657620,49762486116683,
-</pre>
-
-<p>
-  每行输出均代表应用生成的一帧。每行都有固定的列数,用于描述帧生成管道的每个阶段所花的时间。
-下文将详细描述此格式,包括每列代表的具体内容。
-
-</p>
-
-
-<h4 id="fs-data-format">Framestats 数据格式</h4>
-
-<p>
-  由于数据块是 CSV 格式的输出,因此将其粘贴到所选的电子表格工具或使用脚本进行收集和解析非常简单。
-下表解释了输出数据列的格式。
-所有时间戳均以纳秒计。
-</p>
-
-<ul>
-  <li>标志
-    <ul>
-      <li>“标志”列带有“0”的行可以通过从 FRAME_COMPLETED 列中减去 INTENDED_VSYNC 列计算得出总帧时间。
-
-      </li>
-
-      <li>该列为非零值的行将被忽略,因为其对应的帧已被确定为偏离正常性能,其布局和绘制时间预计超过 16 毫秒。
-
-可能出现这种情况有如下几个原因:
-        <ul>
-          <li>窗口布局发生变化(例如,应用的第一帧或在旋转后)
-
-          </li>
-
-          <li>此外,如果帧的某些值包含无意义的时间戳,则也可能跳过该帧。
-例如,如果帧的运行速度超过 60fps,或者如果屏幕上的所有内容最终都准确无误,则可能跳过该帧,这不一定表示应用中存在问题。
-
-
-          </li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-
-  <li>INTENDED_VSYNC
-    <ul>
-      <li>帧的预期起点。如果此值不同于 VSYNC,则表示 UI 线程中发生的工作使其无法及时响应垂直同步信号。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>VSYNC
-    <ul>
-      <li>所有垂直同步侦听器中使用的时间值和帧绘图(Choreographer 帧回调、动画、View.getDrawingTime() 等等)
-
-      </li>
-
-      <li>如需进一步了解 VSYNC 及其对应用产生的影响,请观看<a href="https://www.youtube.com/watch?v=1iaHxmfZGGc&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=23">了解 VSYNC</a> 视频。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>OLDEST_INPUT_EVENT
-    <ul>
-      <li>输入队列中最早输入事件的时间戳或 Long.MAX_VALUE(如果帧没有输入事件)。
-
-      </li>
-
-      <li>此值主要用于平台工作,对应用开发者的作用有限。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>NEWEST_INPUT_EVENT
-    <ul>
-      <li>输入队列中最新输入事件的时间戳或 0(如果帧没有输入事件)。
-
-      </li>
-
-      <li>此值主要用于平台工作,对应用开发者的作用有限。
-
-      </li>
-
-      <li>但是,可以通过查看 (FRAME_COMPLETED - NEWEST_INPUT_EVENT) 大致了解应用增加的延迟时间。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>HANDLE_INPUT_START
-    <ul>
-      <li>将输入事件分派给应用的时间戳。
-      </li>
-
-      <li>通过观察此时间戳与 ANIMATION_START 之间的时差,可以测量应用处理输入事件所花的时间。
-
-      </li>
-
-      <li>如果这个数字较高(&gt; 2 毫秒),则表明应用处理 View.onTouchEvent() 等输入事件所花的时间太长,这意味着此工作需要进行优化或转交给其他线程。
-
-请注意,有些情况下(例如,启动新Activity或类似活动的点击事件),这个数字较大是预料之中并且可以接受的。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>ANIMATION_START
-    <ul>
-      <li>在 Choreographer 中注册的动画运行的时间戳。
-      </li>
-
-      <li>通过观察此时间戳与 PERFORM_TRANVERSALS_START 之间的时差,可以确定评估正在运行的所有动画(ObjectAnimator、ViewPropertyAnimator 和通用转换)所需的时间。
-
-
-      </li>
-
-      <li>如果这个数字较高(&gt; 2 毫秒),请检查您的应用是否编写了任何自定义动画,或检查 ObjectAnimator 在对哪些字段设置动画并确保它们适用于动画。
-
-
-      </li>
-
-      <li>如需了解有关 Choreographer 的更多信息,请观看<a href="https://developers.google.com/events/io/sessions/325418001">利弊</a>视频。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>PERFORM_TRAVERSALS_START
-    <ul>
-      <li>如果您从此值中扣除 DRAW_START,则可推断出完成布局和测量阶段所需的时间(请注意,在滚动或动画期间,您会希望此时间接近于零)。
-
-
-      </li>
-
-      <li>如需了解有关呈现管道的测量和布局阶段的更多信息,请观看<a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">失效、布局和性能</a>视频。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>DRAW_START
-    <ul>
-      <li>performTraversals 绘制阶段的开始时间。这是记录任何失效视图的显示列表的起点。
-
-      </li>
-
-      <li>此时间与 SYNC_START 之间的时差就是对树中的所有失效视图调用 View.draw() 所需的时间。
-
-      </li>
-
-      <li>如需了解有关绘图模型的详细信息,请参阅<a href="{@docRoot}guide/topics/graphics/hardware-accel.html#hardware-model">硬件加速</a>或<a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">失效、布局和性能</a>视频。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>SYNC_START
-    <ul>
-      <li>绘制同步阶段的开始时间。
-      </li>
-
-      <li>如果此时间与 ISSUE_DRAW_COMMANDS_START 之间的时差较大(约 &gt; 0.4 毫秒),则通常表示绘制了大量必须上传到 GPU 的新位图。
-
-
-      </li>
-
-      <li>如需进一步了解同步阶段,请观看 <a href="https://www.youtube.com/watch?v=VzYkVL1n4M8&amp;index=24&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">GPU 呈现模式分析</a>视频。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>ISSUE_DRAW_COMMANDS_START
-    <ul>
-      <li>硬件呈现器开始向 GPU 发出绘图命令的时间。
-      </li>
-
-      <li>此时间与 FRAME_COMPLETED 之间的时差让您可以大致了解应用生成的 GPU 工作量。
-绘制过度或呈现效果不佳等问题都会在此显示出来。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>SWAP_BUFFERS
-    <ul>
-      <li>调用 eglSwapBuffers 的时间,此调用不属于平台工作,相对乏味。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>FRAME_COMPLETED
-    <ul>
-      <li>全部完成!处理此帧所花的总时间可以通过执行 FRAME_COMPLETED - INTENDED_VSYNC 计算得出。
-
-      </li>
-    </ul>
-  </li>
-
-</ul>
-
-<p>
-  您可以通过不同的方法使用此数据。一种简单却有用的可视化方式就是在不同的延迟时段中显示帧时间 (FRAME_COMPLETED - INTENDED_VSYNC) 分布的直方图(参见下图)。
-
-此图直观地表明,大部分帧非常有效,截止时间远低于 16 毫秒(显示为红色),但是少数帧明显超出了截止时间。
-
-我们可以观察此直方图中的变化趋势,了解所产生的整体变化或新异常值。
-此外,您还可以根据数据中的多个时间戳绘制表示输入延迟、布局所用时间或其他类似关注指标的图形。
-
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-framestats.png">
-
-
-<h3 id="timing-dump">简单的帧时间转储</h3>
-
-<p>
-  如果在“开发者选项”中将 <strong>GPU 呈现模式分析</strong>设置为<strong>在 adb shell dumpsys gfxinfo 中</strong>,则 <code>adb shell dumpsys gfxinfo</code> 命令会打印输出最近 120 帧的时间信息,这些信息分为几个不同的类别,其相应的值以制表符分隔。
-
-
-这些数据可以用于大致表明绘图管道的哪些部分可能速度较慢。
-
-</p>
-
-<p>
-  与上述 <a href="#fs-data-format">framestats</a> 类似,将其粘贴到所选的电子表格工具或使用脚本进行收集和解析同样非常简单。
-
-下图详细显示了应用生成的许多帧的具体时间分布。
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-frame-latency.png">
-
-<p>
-  运行 gfxinfo、复制输出、将其粘贴到电子表格应用并将数据绘制成堆积条形图的结果。
-
-</p>
-
-<p>
-  每个垂直条均代表一个动画帧;其高度代表计算该动画帧所需的毫秒数。
-垂直条的每个彩色分段均代表呈现管道的一个不同阶段,因此您可以看到应用的哪些部分可能会出现瓶颈。
-
-如需了解有关呈现管道的详细信息,请参阅<a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;index=27&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">失效、布局和性能</a>视频。
-
-
-</p>
-
-
-<h3 id="collection-window">控制统计信息收集的时段</h3>
-
-<p>
-  Framestats 和简单的帧计时均可在极短的时间内(相当于约呈现 2 秒)收集数据。
-要精确控制此时间范围(例如,将数据限制于特定动画),您可以重置所有计数器并汇总收集的统计信息。
-
-
-</p>
-
-<pre>
-&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; reset
-</pre>
-
-<p>
-  这也可以与转储命令结合使用来定期进行收集和重置,从而持续捕获时间范围不到 2 秒的帧。
-
-
-</p>
-
-
-<h3 id="diagnose">诊断性能回归</h3>
-
-<p>
-  要查出问题并保持应用运行状况良好,第一步最好是识别回归。
-但是,dumpsys 仅确定是否存在问题及其相对严重性。
-您仍需诊断性能问题的具体原因并找到适当的解决方法。
-为此,我们强烈建议您使用 <a href="{@docRoot}tools/help/systrace.html">systrace</a> 工具。
-
-</p>
-
-
-<h3 id="resources">其他资源</h3>
-
-<p>
-  如需了解有关 Android 呈现管道的工作原理、可能存在的常见问题以及如何解决这些问题的详细信息,以下其他资源可能对您有所帮助:
-
-
-</p>
-
-<ul>
-  <li>呈现性能 101
-  </li>
-  <li>为什么选择 60fps?
-  </li>
-  <li>Android UI 和 GPU
-  </li>
-  <li>失效、布局和性能
-  </li>
-  <li>使用 Systrace 分析 UI 性能
-  </li>
-</ul>
-
-
-<h2 id="automate">自动化 UI 性能测试</h2>
-
-<p>
-  UI 性能测试方法之一是让测试人员对目标应用执行一系列用户操作,并目视检查是否存在卡顿现象,或花费大量时间使用工具驱动型方法来查明是否存在卡顿现象。
-
-但是,这种人工方法充满风险:人为感知帧率变化的能力参差不齐,并且此过程又费时、繁琐且易于出错。
-
-
-</p>
-
-<p>
-  更为有效的方法是记录并分析自动化 UI 测试中的关键性能指标。
-Android M 开发者预览版包括新的日志记录功能。利用这些功能,您可以轻松确定应用动画中的卡顿数量和严重性,您还可以使用这些功能构建严格的流程,用于确定当前性能并跟踪未来的性能目标。
-
-
-
-</p>
-
-<p>
-  本文将向您介绍一种使用这些数据自动化性能测试的推荐方法。
-
-</p>
-
-<p>
-  此方法主要分为两个关键操作。首先,确定测试对象和测试方法;其次,设置和维护自动化测试环境。
-
-
-</p>
-
-
-<h3 id="ui-tests">设置 UI 测试</h3>
-
-<p>
-  在开始进行自动化测试之前,您必须做出一些较高层次的决策,以便准确了解测试空间和可能存在的需求。
-
-</p>
-
-<h4>
-  识别要测试的关键动画/流程
-</h4>
-
-<p>
-  请记住,流畅的动画中断时,用户对低劣性能的感触最深。
-因此,在识别要测试的 UI 操作类型时,集中精力处理用户最常见或对用户体验最为重要的关键动画非常有用。
-
-例如,以下是对识别有所帮助的一些常见场景:
-</p>
-
-<ul>
-  <li>滚动主要的 ListView 或 RecyclerView
-  </li>
-
-  <li>异步等待周期内的动画
-  </li>
-
-  <li>可能涉及位图加载/操纵的所有操作
-  </li>
-
-  <li>包括 Alpha 值混合处理在内的动画
-  </li>
-
-  <li>使用画布绘制的自定义视图
-  </li>
-</ul>
-
-<p>
-  与团队中的工程师、设计师和产品经理开展合作,优先处理测试覆盖范围内的这些关键产品动画。
-
-</p>
-
-<h4>
-  定义未来的目标并予以跟踪
-</h4>
-
-<p>
-  从较高层面来看,确定具体的性能目标、专注于编写测试并收集相关数据至关重要。
-例如:
-</p>
-
-<ul>
-  <li>您是否只是首次想要开始跟踪 UI 性能以了解详情?
-  </li>
-
-  <li>您是否想要防止未来可能引入的性能回归?
-  </li>
-
-  <li>您当前是否有 90% 的帧运行顺畅且希望在本季度达到 98%?
-  </li>
-
-  <li>您是否有 98% 的帧运行顺畅且不希望出现性能回归?
-  </li>
-
-  <li>提高低端设备上的性能是否为您的目标?
-  </li>
-</ul>
-
-<p>
-  在所有这些情况下,您都将需要进行历史跟踪,以显示多个应用版本中的性能。
-
-</p>
-
-<h4>
-  识别用于测试的设备
-</h4>
-
-<p>
-  应用性能因其所在设备而异。某些设备的内存可能更少,GPU 功能略弱或 CPU 芯片速度较慢。
-这意味着动画在一套硬件上表现良好,但在其他硬件上可能并非如此,而且可能因为其他管道部分中出现的瓶颈表现更为糟糕。
-
-因此,考虑到用户可能会看到的这种变化,请选取各种设备(包括当前的高端设备、低端设备、平板电脑等)来执行测试。
-
-找出 CPU 性能、RAM、屏幕密度、尺寸等方面的变化。
-在高端设备上顺利通过的测试在低端设备上可能会失败。
-
-</p>
-
-<h4>
-  基本的 UI 测试框架
-</h4>
-
-<p>
-  <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a> 和 <a href="{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a> 等测试套件是为了帮助自动化用户使用应用过程中的操作而构建。
-
-这些套件是模拟用户与您的设备进行交互的简单框架。
-要使用这些框架,您需要有效创建通过一组用户操作运行的独特脚本,并在设备中演示这些脚本。
-
-
-</p>
-
-<p>
-  通过结合这些自动化测试以及 <code>dumpsys gfxinfo</code>,您可以快速创建可再生成的系统,然后您可使用此系统执行测试并测量特定条件的性能信息。
-
-
-</p>
-
-
-<h3 id="automated-tests">设置自动化 UI 测试</h3>
-
-<p>
-  您能够执行 UI 测试并拥有从单一测试收集数据的管道后,下一个重要步骤就是采用可以在多种设备上多次执行该测试的框架,并汇总生成的性能数据,以供开发团队做进一步分析。
-
-
-
-</p>
-
-<h4>
-  测试自动化框架
-</h4>
-
-<p>
-  有一点值得注意,UI 测试框架(例如,<a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>)直接在目标设备/模拟器上运行,
-而性能信息收集则是由主机通过 ADB 发送命令来驱动 dumpsys gfxinfo 完成的。<em></em>
-为帮助桥接这些单独实体的自动化,我们开发了 <a href="{@docRoot}tools/help/monkeyrunner_concepts.html">MonkeyRunner</a> 框架;这是一款在主机上运行的脚本编写系统,可以向一组连接设备发出命令并从中接收数据。
-
-
-
-</p>
-
-<p>
-  为正确自动化 UI 性能测试而构建一套脚本时,至少应当能够利用 monkeyRunner 完成以下任务:
-
-</p>
-
-<ul>
-  <li>向一个或多个目标设备或模拟器加载并启动所需的 APK。
-  </li>
-
-  <li>启动 UI Automator 的 UI 测试并允许执行该测试
-  </li>
-
-  <li>通过 dumpsys gfxinfo 收集性能信息。<em></em><em></em>
-  </li>
-
-  <li>汇总信息并以有效的方式重新向开发者显示。
-  </li>
-</ul>
-
-
-<h3 id="triage">分类并解决观察到的问题</h3>
-
-<p>
-  一旦确定问题模式或回归,下一步就是识别和应用修复。
-如果自动化测试框架保持帧的精确时间分解,则可帮助您审查最近的可疑代码/布局更改(出现回归时),或在切换到人工调查时缩小分析的系统范围。
-
-
-对于人工调查,<a href="{@docRoot}tools/help/systrace.html">systrace</a> 是一个很好的着手点,它可显示有关呈现管道的每个阶段、系统中的每个线程和核心以及您定义的任何自定义事件标记的精确时间信息。
-
-
-</p>
-
-<h4>
-  准确分析时间
-</h4>
-
-<p>
-  需要注意的是,获取和测量呈现性能所需的时间并非易事。
-就其本质而言,这些数字不具有确定性,往往会随系统状态、可用内存量、热节流以及太阳耀斑到达地面的最后时间而波动。
-
-问题在于,尽管同一测试可以运行两次,但获得的结果可能略有不同,它们彼此接近,却并不完全相同。
-
-
-</p>
-
-<p>
-  以这种方式准确收集和分析数据意味着多次运行同一测试,且以平均值或中值的形式累积结果(为了简单起见,我们将其称为“批处理”)。这可为您提供测试性能的粗略近似值,而无需确切的时间。
-
-
-
-</p>
-
-<p>
-  您可对代码更改前和更改后的应用均使用批处理,了解这些更改对性能产生的相对影响。
-如果更改前批处理的平均帧率大于更改后批处理的平均帧率,则此特定更改通常可为您带来全面的性能优势。
-
-
-</p>
-
-<p>
-  这意味着您执行的任何自动化 UI 测试均应考虑这一概念以及测试期间可能出现的任何异常。
-例如,如果应用性能因某些设备问题(不是由应用引起)骤降,则您可能需要重新运行批处理以便获得更精确的时间。
-
-
-
-</p>
-
-<p>
-  那么,在获得更有意义的测量结果之前,您应运行多少次测试?至少应运行 10 次,次数越多(例如 50 或 100 次)获得的结果更精确(当然,您现在是牺牲时间换取精确度)
-
-
-</p>
diff --git a/docs/html-intl/intl/zh-cn/sdk/index.jd b/docs/html-intl/intl/zh-cn/sdk/index.jd
new file mode 100644
index 0000000..4de6022
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/sdk/index.jd
@@ -0,0 +1,429 @@
+page.title=下载 Android Studio 和 SDK 工具
+page.tags=sdk, android studio
+page.template=sdk
+page.image=images/cards/android-studio_2x.png
+header.hide=1
+page.metaDescription=下载官方 Android IDE 和开发者工具,构建适用于 Android 手机、平板电脑、可穿戴设备、电视等设备的应用。
+
+@jd:body
+
+<style type="text/css">
+  .offline {display:none;}
+  h2.feature {
+    padding-top:30px;
+    margin-top:0;
+    clear:both;
+  }
+  .feature-blurb {
+  margin:0px; font-size:16px; font-weight:300;
+  padding-top:40px;
+  }
+
+  .landing-button .small {
+    font-size: 12px;
+    font-weight: normal;
+    line-height: 12px;
+    display: block;
+  }
+
+  h1.studio-logo {
+    width:226px;
+    height:78px;
+    display:block;
+    padding:0;
+    white-space: nowrap;
+    text-indent: -10000px;
+    font-size:0px;
+    background: url({@docRoot}images/tools/studio-logo.png);
+    background-image: -webkit-image-set(url({@docRoot}images/tools/studio-logo.png) 1x, url({@docRoot}images/tools/studio-logo_2x.png) 2x);
+    background-size: 226px 78px;
+  }
+
+</style>
+
+
+
+
+
+<div style="position:relative;">
+
+
+<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
+<div class="col-13" style="margin:0;">&nbsp;</div><!-- provides top margin for content -->
+
+<h1 id="tos-header" style="margin-top:0">下载</h1>
+
+<p class="sdk-terms-intro">在安装 Android Studio 或独立 SDK
+工具之前,您必须同意下列条款和条件。</p>
+
+<div class="sdk-terms" onfocus="this.blur()">
+<h2 class="norule">条款和条件</h2>
+本协议是 Android 软件开发工具包许可协议
+
+<h3>1. Introduction</h3>
+1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
+
+1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
+
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+
+
+<h3>2. Accepting this License Agreement</h3>
+2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
+
+2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
+
+2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
+
+2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
+
+
+<h3>3. SDK License from Google</h3>
+3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
+
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
+
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+
+3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+
+3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
+
+3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
+
+3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+
+3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
+
+
+<h3>4. Use of the SDK by You</h3>
+4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
+
+4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
+
+4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
+
+4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
+
+4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
+
+4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
+
+
+<h3>5. Your Developer Credentials</h3>
+5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
+
+
+<h3>6. Privacy and Information</h3>
+6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
+
+6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
+
+
+<h3>7. Third Party Applications</h3>
+7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
+
+7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
+
+7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
+
+
+<h3>8. Using Android APIs</h3>
+8.1 Google Data APIs
+
+8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
+
+8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
+
+
+<h3>9. Terminating this License Agreement</h3>
+9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
+
+9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
+
+9.3 Google may at any time, terminate the License Agreement with you if:
+(A) you have breached any provision of the License Agreement; or
+(B) Google is required to do so by law; or
+(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
+(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
+
+9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
+
+
+<h3>10. DISCLAIMER OF WARRANTIES</h3>
+10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+
+10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
+
+10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+
+
+<h3>11. LIMITATION OF LIABILITY</h3>
+11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
+
+<h3>12. Indemnification</h3>
+12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
+
+
+<h3>13. Changes to the License Agreement</h3>
+13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
+
+
+<h3>14. General Legal Terms</h3>
+14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
+
+14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
+
+14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
+
+14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
+
+14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
+
+14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
+
+14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+
+<em>November 20, 2015</em>
+</div>
+
+
+
+
+
+<div id="next-steps" style="display:none;position:absolute;width:inherit">
+  <p>您距离构建 Android 应用只有几步之遥!</p>
+  <p>系统很快就会将您重定向到
+<a id="next-link" href="{@docRoot}sdk/installing/index.html">安装 Android SDK</a>。</p>
+
+</div><!-- end next-steps -->
+
+
+
+<div id="sdk-terms-form">
+<p>
+<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+<label id="agreeLabel" for="agree">我已阅读并同意上述条款和条件</label>
+</p>
+<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+</div>
+
+
+</div><!-- end TOS -->
+
+
+
+
+
+
+<div id="landing">
+
+<div class="col-13">&nbsp;</div><!-- provides top margin for content -->
+
+<img src="{@docRoot}images/tools/studio-hero.png" srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x" width="760" height="400"/>
+
+<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
+
+<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>
+
+<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
+width: 400px;text-align: center;">官方 Android IDE</p>
+
+<ul style="font-size:12px;line-height:19px;">
+<li>Android Studio IDE</li>
+<li>Android SDK 工具</li>
+<li>Android 6.0 (Marshmallow) 平台</li>
+<li>Android 6.0 模拟器系统映像(附带 Google API)</li>
+</ul>
+
+<a class="online landing-button green download-bundle-button"
+href="#Other" >Download Android Studio<br/><span class='small'></span></a>
+
+<!-- this appears when viewing the offline docs -->
+<p class="offline">
+如需获得 Android Studio 或独立 SDK 工具,请访问 <a href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
+</p>
+</div>
+
+<ul>
+  <li><a href="#Requirements">系统要求</a></li>
+  <li><a href="#Other">其他下载选项</a></li>
+  <li><a href="{@docRoot}sdk/installing/migrate.html">迁移至 Android Studio</a></li>
+  <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform" target="_blank">参加调查</a></li>
+</ul>
+
+
+
+
+<h2 class="feature norule" >智能代码编辑器</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-code.png" srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Android Studio 的核心是一个智能代码编辑器,可进行高级代码完成、重构和代码分析。
+</p>
+  <p>这款功能强大的代码编辑器可帮助您成为更高产的 Android 应用开发者。</p>
+</div>
+
+
+
+
+
+<h2 class="feature norule">代码模板和 GitHub 集成</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-import.png" srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>新项目向导让开始一个新项目变得前所未有的简单。</p>
+
+  <p>可使用适用于不同模式(如抽屉式导航栏和视图分页器)的模板代码开始项目,甚至可以从 GitHub
+导入 Google 代码示例。</p>
+</div>
+
+
+
+
+<h2 class="feature norule">多屏幕应用开发</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-screens.png" srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>构建适用于 Android 手机、平板电脑、Android Wear、Android TV、Android Auto
+以及 Google Glass 的应用。</p>
+  <p>Android Studio 内全新的 Android
+项目视图和模块支持让应用项目和资源管理变得更加轻松。
+</div>
+
+
+
+
+<h2 class="feature norule">用于模拟所有形状和尺寸的虚拟设备</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-avds.png" srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Android Studio 预先配置了经过优化的模拟器映像。</p>
+  <p>经过更新和精简的虚拟设备管理器可为常见 Android
+设备提供预定义设备配置文件。</p>
+</div>
+
+
+
+
+<h2 class="feature norule">
+Android 版本借助 Gradle 演进</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-gradle.png" srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>使用同一项目为您的 Android 应用创建多个具有不同功能的 APK。</p>
+  <p>使用 Maven 管理应用依赖项。</p>
+  <p>使用 Android Studio 或命令行构建 APK。</p>
+</div>
+
+
+
+
+<h2 class="feature norule">有关 Android Studio 的详细信息</h2>
+<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
+
+<a class="online landing-button green download-bundle-button" style="margin:0 0 40px 60px;float:right" href="">Download</a>
+
+  <ul>
+  <li>这款由 JetBrains 推出并广受欢迎的 Java IDE 以 IntelliJ IDEA Community Edition 为基础构建</li>
+  <li>基于 Gradle 的灵活构建系统</li>
+  <li>构建变体和多 APK 生成</li>
+  <li>为 Google 服务和各种设备类型提供扩展模板支持</li>
+  <li>支持主题编辑的富布局编辑器</li>
+  <li>可捕捉性能、可用性、版本兼容性以及其他问题的 Lint 工具</li>
+  <li>ProGuard 和应用签名功能</li>
+  <li>内置对 Google 云平台的支持,可轻松集成 Google Cloud
+  Messaging 和应用引擎</li>
+  </ul>
+
+<p style="margin:0">
+有关 Android Studio
+所提供功能的更多详细信息,请阅读 <a href="{@docRoot}tools/studio/index.html">Android Studio 基础知识</a>指南。</p>
+</div>
+
+
+<p>如果您一直在使用附带 ADT 的 Eclipse,请注意 Android Studio 现已成为 Android
+的官方 IDE,因此您应迁移至 Android Studio,以获得所有最新的 IDE
+更新。如果在迁移项目时需要帮助,请参阅<a href="{@docRoot}sdk/installing/migrate.html">迁移至
+Android
+Studio</a>。</p>
+
+
+
+
+
+
+
+<h2 id="Requirements">系统要求</h2>
+
+<h3>Windows</h3>
+
+<ul>
+<li>Microsoft&reg; Windows&reg; 8/7/Vista/2003(32 位或 64 位)</li>
+<li>最低:2GB RAM,推荐:4GB RAM</li>
+<li>400MB 硬盘空间</li>
+<li>Android SDK、模拟器系统映像及缓存至少需要 1GB 空间</li>
+<li>最低屏幕分辨率:1280 x 800</li>
+<li>Java 开发工具包 (JDK) 7 </li>
+<li>用于加速模拟器的选件:支持 Intel® VT-x、Intel® EM64T (Intel® 64) 和禁止执行
+(XD) 位功能的 Intel® 处理器</li>
+</ul>
+
+
+<h3>Mac OS X</h3>
+
+<ul>
+<li>Mac&reg; OS X&reg; 10.8.5 或更高版本,直至 10.9 (Mavericks)</li>
+<li>最低:2GB RAM,推荐:4GB RAM</li>
+<li>400MB 硬盘空间</li>
+<li>Android SDK、模拟器系统映像及缓存至少需要 1GB 空间</li>
+<li>最低屏幕分辨率:1280 x 800</li>
+<li>Java 运行组件环境 (JRE) 6</li>
+<li>Java 开发工具包 (JDK) 7</li>
+<li>用于加速模拟器的选件:支持 Intel® VT-x、Intel® EM64T (Intel® 64)
+和禁止执行 (XD) 位功能的 Intel® 处理器</li>
+</ul>
+
+<p>在 Mac OS 上运行附带 Java 运行组件环境 (JRE) 6 的 Android Studio
+可优化字体渲染。您随后可将您的项目配置为使用 Java 开发工具包 (JDK) 6 或 JDK 7。</p>
+
+
+
+<h3>Linux</h3>
+
+<ul>
+<li>GNU 网络对象模型环境或 KDE 桌面</li>
+<li>GNU C Library (glibc) 2.15 或更高版本</li>
+<li>最低:2GB RAM,推荐:4GB RAM</li>
+<li>400MB 硬盘空间</li>
+<li>Android SDK、模拟器系统映像及缓存至少需要 1GB 空间</li>
+<li>最低屏幕分辨率:1280 x 800</li>
+<li>Oracle&reg; Java 开发工具包 (JDK) 7 </li>
+</ul>
+<p>已在
+Ubuntu&reg; 14.04 (Trusty Tahr)(能够运行 32 位应用的 64 位分发)上进行了测试。</p>
+
+
+
+
+<h2 id="Other" style="clear:left">其他下载选项</h2>
+
+<!-- alternative SDK options follows -->
diff --git a/docs/html-intl/intl/zh-cn/sdk/installing/adding-packages.jd b/docs/html-intl/intl/zh-cn/sdk/installing/adding-packages.jd
new file mode 100644
index 0000000..4d5d7ec
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/sdk/installing/adding-packages.jd
@@ -0,0 +1,226 @@
+page.title=添加 SDK 软件包
+
+page.tags=sdk 管理器
+
+@jd:body
+
+<style>
+ol.large {
+  margin-left:0;
+}
+ol.large > li {
+  list-style-position: inside;
+  list-style-type:none;
+  margin:30px 0 0 0;
+  padding:30px 20px;
+  background:#eee;
+}
+ol.large > li:nth-child(odd) {
+}
+ol.large > li:before {
+  display:inline;
+  left:-40px;
+  float:left;
+  width:20px;
+  font-size:20px;
+  line-height:20px;
+}
+ol.large > li > h2 {
+  font-size:20px;
+  line-height:20px;
+  padding:0 0 0 20px;
+  margin:0 0 20px 0;
+  display:inline;
+  font-weight:normal;
+}
+ol.large > li:nth-child(1):before {
+  content:"1. ";
+}
+ol.large > li:nth-child(2):before {
+  content:"2. ";
+}
+ol.large > li:nth-child(3):before {
+  content:"3. ";
+}
+ol.large > li:nth-child(4):before {
+  content:"4. ";
+}
+ol.large > li:nth-child(5):before {
+  content:"5. ";
+}
+ol.large > li:nth-child(6):before {
+  content:"6. ";
+}
+</style>
+
+
+<p>
+默认情况下,Android SDK
+并不包括您着手开发所需的一切内容。SDK
+将工具、平台和其他组件分成若干个软件包,您可以通过
+<a href="{@docRoot}tools/help/sdk-manager.html">Android SDK 管理器</a>根据需要下载这些软件包。因此您需要先为 Android SDK
+添加几个软件包,然后才能着手开发。</p>
+
+<p>要添加软件包,请先通过下列方式之一启动 Android SDK 管理器:</p>
+<ul>
+  <li>在 Android Studio 中,点击工具栏中的 <strong>SDK 管理器</strong>
+<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:17px" />。</li>
+  <li>如果您未使用 Android Studio:
+    <ul>
+      <li>Windows:双击 Android
+ SDK 根目录中的 <code>SDK Manager.exe</code> 文件。</li>
+      <li>Mac/Linux:打开一个终端,导航到 Android SDK 安装
+位置的 <code>tools/</code> 目录,然后执行 <code>android sdk</code>。</li>
+    </ul>
+  </li>
+</ul>
+
+<p>当您首次打开 SDK
+管理器时,有几个软件包默认处于选定状态。保持它们的选定状态,但务必按照下列步骤获得着手开发所需的一切内容:
+</p>
+
+
+<ol class="large">
+<li>
+  <h2 id="GetTools" class="norule">获得最新的 SDK 工具</h2>
+
+<img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
+
+  <p>在安装 Android SDK 时,
+您至少应下载最新工具和 Android 平台:</p>
+  <ol>
+   <li>打开 Tools 目录并选择:
+     <ul>
+       <li><strong>Android SDK Tools</strong></li>
+       <li><strong>Android SDK Platform-tools</strong></li>
+       <li><strong>Android SDK Build-tools</strong>(最高版本)</li>
+     </ul>
+   </li>
+   <li>打开第一个 Android X.X 文件夹(最新版本)并选择:
+     <ul>
+      <li><strong>SDK Platform</strong></li>
+      <li>模拟器系统映像,例如 <br>
+      <strong>ARM EABI v7a System Image</strong></li>
+     </ul>
+   </li>
+  </ol>
+</li>
+
+<li>
+  <h2 id="GetSupportLib" class="norule">获得其他 API 的支持库</h2>
+
+  <div class="sidebox">
+    <p>以下项目需要支持库:</p>
+    <ul>
+      <li><a href="{@docRoot}wear/index.html">Android Wear</a></li>
+      <li><a href="{@docRoot}tv/index.html">Android TV</a></li>
+      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
+    </ul>
+
+    <p>它还提供了以下受欢迎的 API:</p>
+    <ul>
+      <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">Navigation
+      drawer</a></li>
+      <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">Swipe views</a></li>
+      <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">Backward-compatible
+      action bar</a></li>
+    </ul>
+  </div>
+
+  <p><a href="{@docRoot}tools/support-library/features.html">Android 支持库</a>提供了一组丰富的 API,可兼容大多数版本的 Android。
+</p>
+
+  <p>打开 <strong>Extras</strong> 目录并选择:</p>
+     <ul>
+       <li><strong>Android Support Repository</strong></li>
+       <li><strong>Android Support Library</strong></li>
+     </ul>
+
+  <p>&nbsp;</p>
+  <p>&nbsp;</p>
+
+</li>
+
+
+<li>
+  <h2 id="GetGoogle" class="norule">为更多 API 获得 Google Play 服务</h2>
+
+  <div class="sidebox">
+
+    <p>Google Play services API 为您的 Android
+ 应用提供了各种功能和服务,例如:</p>
+    <ul>
+      <li><a href="{@docRoot}google/play-services/plus.html">用户身份验证</a></li>
+      <li><a href="{@docRoot}google/play-services/maps.html">Google 地图</a></li>
+      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
+      <li><a href="{@docRoot}google/play-services/games.html">游戏成就和
+排行榜</a></li>
+      <li><a href="{@docRoot}google/play-services/index.html">更多其他功能</a></li>
+    </ul>
+  </div>
+
+  <p>要使用 Google API 进行开发,您需要 Google Play 服务包:</p>
+  <p>打开 <strong>Extras</strong> 目录并选择:</p>
+     <ul>
+       <li><strong>Google Repository</strong></li>
+       <li><strong>Google Play services</strong></li>
+     </ul>
+
+  <p class="note"><strong>注:</strong>并非所有采用
+ Android 技术的设备上都提供 Google Play Services API,但所有安装了 Google Play 商店的设备均提供这些 API。要在 Android 模拟器中使用这些
+ API,您还必须安装 SDK 管理器中最新 Android X.X 目录内的 <strong>Google APIs</strong>
+ 系统映像。</p>
+</li>
+
+
+<li>
+  <h2 id="Install" class="norule">安装软件包</h2>
+  <p>选择想要安装的所有软件包后,即可继续执行安装:</p>
+  <ol>
+   <li>点击 <strong>Install X packages</strong>。</li>
+   <li>在下一个窗口中,双击左侧的每个软件包名称,
+以接受各软件包的许可协议。</li>
+   <li>点击 <strong>Install</strong>。</li>
+  </ol>
+  <p>SDK 管理器窗口底部显示下载进度。
+  <strong>切勿退出 SDK 管理器</strong>,否则它会取消下载。</p>
+</li>
+
+<li>
+  <h2 id="Build" class="norule">赶快着手开发吧!</h2>
+
+<p>现在您的 Android SDK 已包含上述软件包,您随时可以着手开发
+ Android 应用。当新工具以及其他 API 推出时,只需启动 SDK 管理器
+,为您的 SDK 下载新软件包。</p>
+
+<p>以下几个方案可为您的开发工作提供指导:</p>
+
+<div class="cols" style="padding:10px 0">
+<div class="col-4">
+<h3>入门指南</h3>
+<p>如果您是第一次开发 Android
+应用,请按照<strong><a href="{@docRoot}training/basics/firstapp/index.html">开发您的第一款应用</a></strong>指南了解 Android 应用的基础知识。</p>
+
+</div>
+<div class="col-4 box">
+<h3>开发穿戴式设备应用</h3>
+<p>如果您已准备好着手开发 Android
+穿戴式设备应用,请参阅<strong><a href="{@docRoot}wear/preview/start.html">开发 Android Wear 应用</a></strong>。</p>
+
+</div>
+<div class="col-4 box">
+<h3>使用 Google API</h3>
+<p>要开始使用 Google API,例如 Google Maps API 或 Google
+Play Game Services
+API,请参阅<strong><a href="{@docRoot}google/play-services/setup.html">设置 Google Play
+服务</a></strong>指南。</p>
+
+</div>
+</div><!-- end cols -->
+
+
+</li>
+
+</ol>
+
+
diff --git a/docs/html-intl/intl/zh-cn/training/material/animations.jd b/docs/html-intl/intl/zh-cn/training/material/animations.jd
new file mode 100644
index 0000000..75e5bad
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/training/material/animations.jd
@@ -0,0 +1,550 @@
+page.title=定义定制动画
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>本课程将向您展示如何</h2>
+<ol>
+  <li><a href="#Touch">定制触摸反馈</a></li>
+  <li><a href="#Reveal">使用揭露效果</a></li>
+  <li><a href="#Transitions">定制操作行为转换</a></li>
+  <li><a href="#ViewState">为视图状态改变添加动画</a></li>
+  <li><a href="#AnimVector">为矢量图片添加动画</a></li>
+</ol>
+<h2>您也应该阅读</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">材料设计规范</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android 材料设计</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>材料设计中的动画将为用户提供操作反馈并在用户与您的应用进行互动时提供视觉连续性。
+材料主题将为按钮与操作行为转换提供一些默认动画,而 Android 5.0(API 级别 21)及更高版本可让您定制这些动画,同时也可创建新动画:
+
+</p>
+
+<ul>
+<li>触摸反馈</li>
+<li>循环揭露</li>
+<li>操作行为转换</li>
+<li>曲线运动</li>
+<li>视图状态改变</li>
+</ul>
+
+
+<h2 id="Touch">定制触摸反馈</h2>
+
+<p>材料设计中的触摸反馈可在用户与 UI 元素互动时,在接触点上提供即时视觉确认。
+适用于按钮的默认触摸动画使用全新 {@link android.graphics.drawable.RippleDrawable} 类别,以波纹效果实现不同状态间的转换。
+
+</p>
+
+<p>在大多数情况下,您应以下列方式指定视图背景,在您的视图 XML 中应用此功能:
+</p>
+
+<ul>
+<li><code>?android:attr/selectableItemBackground</code> 指定有界的波纹。</li>
+<li><code>?android:attr/selectableItemBackgroundBorderless</code> 指定越过视图边界的波纹。
+它将由一个非空背景的视图的最近父项所绘制和设定边界。
+</li>
+</ul>
+
+<p class="note"><strong>注意:</strong><code>selectableItemBackgroundBorderless</code> 是 API 级别 21 中推出的新属性。
+</p>
+
+
+<p>此外,您可利用 <code>ripple</code> 元素将 {@link android.graphics.drawable.RippleDrawable}
+定义为一个 XML 资源。</p>
+
+<p>您可以为 {@link android.graphics.drawable.RippleDrawable} 对象指定一种颜色。如果要改变默认触摸反馈颜色,请使用主题的 <code>android:colorControlHighlight</code>
+属性。
+</p>
+
+<p>如果要了解更多信息,请参阅 {@link
+android.graphics.drawable.RippleDrawable} 类别的 API 参考文档。</p>
+
+
+<h2 id="Reveal">使用揭露效果</h2>
+
+<p>当您显示或隐藏一组 UI
+元素时,揭露动画可为用户提供视觉连续性。{@link android.view.ViewAnimationUtils#createCircularReveal
+ViewAnimationUtils.createCircularReveal()} 方法让您能够为裁剪区域添加动画以揭露或隐藏视图。
+</p>
+
+<p>如果要使用此效果揭露之前不可见的视图:</p>
+
+<pre>
+// previously invisible view
+View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the final radius for the clipping circle
+int finalRadius = Math.max(myView.getWidth(), myView.getHeight());
+
+// create the animator for this view (the start radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);
+
+// make the view visible and start the animation
+myView.setVisibility(View.VISIBLE);
+anim.start();
+</pre>
+
+<p>如果要使用此效果隐藏之前可见的视图:</p>
+
+<pre>
+// previously visible view
+final View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the initial radius for the clipping circle
+int initialRadius = myView.getWidth();
+
+// create the animation (the final radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0);
+
+// make the view invisible when the animation is done
+anim.addListener(new AnimatorListenerAdapter() {
+    &#64;Override
+    public void onAnimationEnd(Animator animation) {
+        super.onAnimationEnd(animation);
+        myView.setVisibility(View.INVISIBLE);
+    }
+});
+
+// start the animation
+anim.start();
+</pre>
+
+
+<h2 id="Transitions">定制操作行为转换</h2>
+
+<!-- shared transition video -->
+<div style="width:290px;margin-left:35px;float:right">
+  <div class="framed-nexus5-port-span-5">
+  <video class="play-on-hover" autoplay="">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.mp4">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.webm">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.ogv">
+  </video>
+  </div>
+  <div style="font-size:10pt;margin-left:20px;margin-bottom:30px">
+    <p class="img-caption" style="margin-top:3px;margin-bottom:10px"><strong>图 1</strong> - 拥有共享元素的转换。
+</p>
+    <em>如果要重新播放影片,请点击设备屏幕</em>
+  </div>
+</div>
+
+<p>材料设计应用中的操作行为转换透过通用元素之间的移动和转换提供不同状态之间的视觉连接。
+您可为进入、退出转换以及操作行为之间的共享元素转换指定定制动画。
+</p>
+
+<ul>
+<li><strong>进入</strong>转换将决定操作行为中视图如何进入场景。例如,在<em>分解</em>进入转换中,视图将从屏幕外进入场景并飞往屏幕中心。
+
+</li>
+
+<li><strong>退出</strong>转换将决定操作行为中应用行为的显示视图如何退出场景。例如,在<em>分解</em>退出转换中,视图将从屏幕中心退出场景。
+
+</li>
+
+<li><strong>共享元素</strong>转换将决定两个操作行为转换之间共享的视图如何在这些操作行为中转换。
+例如,如果两个操作行为拥有相同的图像,但其位置与大小不同,<em>changeImageTransform</em> 共享元素转换将在这些操作行为之间平滑地转换与缩放图像。
+
+</li>
+</ul>
+
+<p>Android 5.0(API 级别 21)支持这些进入与退出转换:</p>
+
+<ul>
+<li><em>分解</em> - 从场景中心移入或移出视图。</li>
+<li><em>滑动</em> - 从场景边缘移入或移出视图。</li>
+<li><em>淡入淡出</em> - 通过调整透明度在场景中增添或移除视图。</li>
+</ul>
+
+<p>任何扩展 {@link android.transition.Visibility} 类别的转换均将获得进入或退出转换支持。
+如果要了解更多信息,请参阅
+{@link android.transition.Transition} 类别的 API 参考文档。</p>
+
+<p>Android 5.0(API 级别 21)也支持这些共享元素转换:</p>
+
+<ul>
+<li><em>changeBounds</em> - 为目标视图的布局边界的变化添加动画。</li>
+<li><em>changeClipBounds</em> - 为目标视图的裁剪边界的变化添加动画。</li>
+<li><em>changeTransform</em> - 为目标视图的缩放与旋转变化添加动画。</li>
+<li><em>changeImageTransform</em> - 为目标图像的大小与缩放变化添加动画。</li>
+</ul>
+
+<p>当您在您的应用中启用操作行为转换,默认的交叉淡入淡出转换将在进入与退出操作行为之间激活。
+</p>
+
+<img src="{@docRoot}training/material/images/SceneTransition.png" alt="" width="600" height="405" style="margin-top:20px" />
+<p class="img-caption">
+  <strong>图 2</strong> - 拥有一个共享元素的场景转换。
+</p>
+
+<h3>指定定制转换</h3>
+
+<p>首先,在定义您从材料主题继承的风格时,使用 <code>android:windowContentTransitions</code>
+属性启用窗口内容转换。您也可在您的风格定义中指定进入、退出以及共享元素转换:
+</p>
+
+<pre>
+&lt;style name="BaseAppTheme" parent="android:Theme.Material">
+  &lt;!-- enable window content transitions -->
+  &lt;item name="android:windowContentTransitions">true&lt;/item>
+
+  &lt;!-- specify enter and exit transitions -->
+  &lt;item name="android:windowEnterTransition">@transition/explode&lt;/item>
+  &lt;item name="android:windowExitTransition">@transition/explode&lt;/item>
+
+  &lt;!-- specify shared element transitions -->
+  &lt;item name="android:windowSharedElementEnterTransition">
+    &#64;transition/change_image_transform&lt;/item>
+  &lt;item name="android:windowSharedElementExitTransition">
+    &#64;transition/change_image_transform&lt;/item>
+&lt;/style>
+</pre>
+
+<p>此示例中的 <code>change_image_transform</code> 转换定义如下:</p>
+
+<pre>
+&lt;!-- res/transition/change_image_transform.xml -->
+&lt;!-- (see also Shared Transitions below) -->
+&lt;transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;changeImageTransform/>
+&lt;/transitionSet>
+</pre>
+
+<p><code>changeImageTransform</code> 元素与
+{@link android.transition.ChangeImageTransform} 类别相对应。如果要了解更多信息,请参阅 {@link android.transition.Transition} 的 API
+参考。</p>
+
+<p>如果要在您的代码中启用窗口内容转换,请调用
+{@link android.view.Window#requestFeature Window.requestFeature()} 方法:</p>
+
+<pre>
+// inside your activity (if you did not enable transitions in your theme)
+getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+
+// set an exit transition
+getWindow().setExitTransition(new Explode());
+</pre>
+
+<p>如果要在您的代码中指定转换,请以 {@link
+android.transition.Transition} 对象调用这些方法:</p>
+
+<ul>
+  <li>{@link android.view.Window#setEnterTransition Window.setEnterTransition()}</li>
+  <li>{@link android.view.Window#setExitTransition Window.setExitTransition()}</li>
+  <li>{@link android.view.Window#setSharedElementEnterTransition
+      Window.setSharedElementEnterTransition()}</li>
+  <li>{@link android.view.Window#setSharedElementExitTransition
+      Window.setSharedElementExitTransition()}</li>
+</ul>
+
+<p>{@link android.view.Window#setExitTransition setExitTransition()} 和 {@link
+android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} 方法定义正在调用的操作行为的退出转换。
+{@link android.view.Window#setEnterTransition
+setEnterTransition()} 与 {@link android.view.Window#setSharedElementEnterTransition
+setSharedElementEnterTransition()} 方法定义被调用的操作行为的进入转换。</p>
+
+<p>如果要取得转换的完整效果,您必须在正在调用以及被调用的操作行为上启用窗口内容转换。
+否则,正在调用的操作行为将开始退出转换,但是您将会看到窗口转换(例如缩放或淡入淡出)。
+</p>
+
+<p>如果要尽快开始进入转换,请针对被调用的操作行为使用
+{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}
+方法。这可以让您实现更生动的进入转换。</p>
+
+<h3>使用转换启动一个操作行为</h3>
+
+<p>如果您启用转换并且为一个操作行为设置退出转换,那么在您启动另一个操作行为时,转换将以下列方式激活:
+</p>
+
+<pre>
+startActivity(intent,
+              ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
+</pre>
+
+<p>如果您已为第二个操作行为设置进入转换,则转换也将会在操作行为启动时激活。
+如果要在您启动另一个操作行为时禁用转换,请提供
+<code>null</code> 选项包。</p>
+
+<h3>以共享元素启动一个操作行为</h3>
+
+<p>如果要在两个拥有共享元素的操作行为之间安排屏幕转换动画:</p>
+
+<ol>
+<li>请在您的主题中启用窗口内容转换。</li>
+<li>在您的风格中指定一个共享元素转换。</li>
+<li>将您的转换定义为 XML 资源。</li>
+<li>利用
+<code>android:transitionName</code> 属性对两个布局中的共享元素指定一个通用名称。</li>
+<li>使用 {@link android.app.ActivityOptions#makeSceneTransitionAnimation
+ActivityOptions.makeSceneTransitionAnimation()} 方法。</li>
+</ol>
+
+<pre>
+// get the element that receives the click event
+final View imgContainerView = findViewById(R.id.img_container);
+
+// get the common element for the transition in this activity
+final View androidRobotView = findViewById(R.id.image_small);
+
+// define a click listener
+imgContainerView.setOnClickListener(new View.OnClickListener() {
+    &#64;Override
+    public void onClick(View view) {
+        Intent intent = new Intent(this, Activity2.class);
+        // create the transition animation - the images in the layouts
+        // of both activities are defined with android:transitionName="robot"
+        ActivityOptions options = ActivityOptions
+            .makeSceneTransitionAnimation(this, androidRobotView, "robot");
+        // start the new activity
+        startActivity(intent, options.toBundle());
+    }
+});
+</pre>
+
+<p>对于在您的代码中生成的共享动态视图,请使用
+{@link android.view.View#setTransitionName View.setTransitionName()} 方法在两个操作行为中指定一个通用元素名称。
+</p>
+
+<p>如果要在完成第二项操作行为时反转场景转换动画,请调用
+{@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()}
+方法而非 {@link android.app.Activity#finish Activity.finish()}。</p>
+
+<h3>以多个共享元素启动一个操作行为</h3>
+
+<p>如果要在两个拥有多个共享元素的操作行为之间安排场景转换动画,请以 <code>android:transitionName</code>
+属性(或在两个操作行为中使用 {@link android.view.View#setTransitionName View.setTransitionName()} 方法)定义共享元素,并以下列方式创建一个 {@link android.app.ActivityOptions} 对象:
+
+</p>
+
+<pre>
+ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
+        Pair.create(view1, "agreedName1"),
+        Pair.create(view2, "agreedName2"));
+</pre>
+
+
+<h2 id="CurvedMotion">使用曲线运动</h2>
+
+<p>材料设计中的动画利用曲线实现时间内插与空间移动模式。
+利用 Android 5.0(API 级别 21)及更高版本,您可为动画定义定制时间曲线以及曲线运动模式。
+</p>
+
+<p>{@link android.view.animation.PathInterpolator} 类别是一个基于贝塞尔曲线或 {@link android.graphics.Path} 对象的全新插入器。
+此插入器在一个 1x1 的正方形内指定一个运动曲线,定位点位于 (0,0) 以及 (1,1),而控制点则使用构造函数参数指定。
+
+您也可以将路径插入器定义为一个 XML 资源:</p>
+
+<pre>
+&lt;pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:controlX1="0.4"
+    android:controlY1="0"
+    android:controlX2="1"
+    android:controlY2="1"/>
+</pre>
+
+<p>系统将为材料设计规范中的三种基本曲线提供 XML 资源:
+</p>
+
+<ul>
+  <li><code>&#64;interpolator/fast_out_linear_in.xml</code></li>
+  <li><code>&#64;interpolator/fast_out_slow_in.xml</code></li>
+  <li><code>&#64;interpolator/linear_out_slow_in.xml</code></li>
+</ul>
+
+<p>您可以将一个 {@link android.view.animation.PathInterpolator} 对象传递给 {@link
+android.animation.Animator#setInterpolator Animator.setInterpolator()} 方法。</p>
+
+<p>{@link android.animation.ObjectAnimator} 类别拥有新的构造函数,可让您一次使用两个或更多属性在路径上为坐标添加动画。
+例如,下列动画使用 {@link android.graphics.Path} 对象为视图的 X 和 Y 属性添加动画:
+</p>
+
+<pre>
+ObjectAnimator mAnimator;
+mAnimator = ObjectAnimator.ofFloat(view, View.X, View.Y, path);
+...
+mAnimator.start();
+</pre>
+
+
+<h2 id="ViewState">为视图状态改变添加动画</h2>
+
+<p>{@link android.animation.StateListAnimator} 类别让您能够定义视图状态改变时运行的动画。
+下列示例显示如何将 {@link
+android.animation.StateListAnimator} 定义为一个 XML 资源:</p>
+
+<pre>
+&lt;!-- animate the translationZ property of a view when pressed -->
+&lt;selector xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;item android:state_pressed="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="@android:integer/config_shortAnimTime"
+        android:valueTo="2dp"
+        android:valueType="floatType"/>
+        &lt;!-- you could have other objectAnimator elements
+             here for "x" and "y", or other properties -->
+    &lt;/set>
+  &lt;/item>
+  &lt;item android:state_enabled="true"
+    android:state_pressed="false"
+    android:state_focused="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="100"
+        android:valueTo="0"
+        android:valueType="floatType"/>
+    &lt;/set>
+  &lt;/item>
+&lt;/selector>
+</pre>
+
+<p>如果要将定制视图状态动画附加至一个视图,请依照此示例使用 XML 资源文件中的
+<code>selector</code> 元素定义一个动画,并使用 <code>android:stateListAnimator</code> 属性将此动画分配给您的视图。
+如果要将一个状态列表动画分配给您的代码内的一个视图,请使用 {@link android.animation.AnimatorInflater#loadStateListAnimator
+AnimationInflater.loadStateListAnimator()} 方法,并以
+{@link android.view.View#setStateListAnimator View.setStateListAnimator()} 方法将动画分配给您的视图。
+</p>
+
+<p>当您的主题扩展材料主题时,在默认情况下按钮将拥有一个 Z 动画。如果要避免您的按钮出现这类行为,请将 <code>android:stateListAnimator</code> 属性设置为
+<code>@null</code>。
+</p>
+
+<p>{@link android.graphics.drawable.AnimatedStateListDrawable} 类别让您能够创建图片,显示相关视图之间的状态变化。
+Android 5.0 中的某些系统小组件在默认情况下使用这些动画。
+下列示例显示如何将 {@link android.graphics.drawable.AnimatedStateListDrawable} 定义为一个 XML 资源:
+</p>
+
+<pre>
+&lt;!-- res/drawable/myanimstatedrawable.xml -->
+&lt;animated-selector
+    xmlns:android="http://schemas.android.com/apk/res/android">
+
+    &lt;!-- provide a different drawable for each state-->
+    &lt;item android:id="@+id/pressed" android:drawable="@drawable/drawableP"
+        android:state_pressed="true"/>
+    &lt;item android:id="@+id/focused" android:drawable="@drawable/drawableF"
+        android:state_focused="true"/>
+    &lt;item android:id="@id/default"
+        android:drawable="@drawable/drawableD"/>
+
+    &lt;!-- specify a transition -->
+    &lt;transition android:fromId="@+id/default" android:toId="@+id/pressed">
+        &lt;animation-list>
+            &lt;item android:duration="15" android:drawable="@drawable/dt1"/>
+            &lt;item android:duration="15" android:drawable="@drawable/dt2"/>
+            ...
+        &lt;/animation-list>
+    &lt;/transition>
+    ...
+&lt;/animated-selector>
+</pre>
+
+
+<h2 id="AnimVector">为矢量图片添加动画</h2>
+
+<p><a href="{@docRoot}training/material/drawables.html#VectorDrawables">矢量图片</a>可在不丢失定义的情况下缩放。
+{@link android.graphics.drawable.AnimatedVectorDrawable}
+类别可让您为矢量图片的属性添加动画。</p>
+
+<p>您通常可以在 3 个 XML 文件中定义添加动画的矢量图片:</p>
+
+<ul>
+<li>在
+<code>res/drawable/</code> 中拥有 <code>&lt;vector&gt;</code> 元素的矢量图片</li>
+<li>在
+<code>res/drawable/</code> 中拥有 <code>&lt;animated-vector&gt;</code> 元素且已添加动画的矢量图片</li>
+<li>在
+<code>res/anim/</code> 中拥有 <code>&lt;objectAnimator&gt;</code> 元素的一个或多个对象动画</li>
+</ul>
+
+<p>添加动画的矢量图片可为 <code>&lt;group&gt;</code> 以及
+<code>&lt;path&gt;</code> 元素的属性添加动画。<code>&lt;group&gt;</code> 元素定义路径集或子组,而 <code>&lt;path&gt;</code> 元素则定义将绘制的路径。
+</p>
+
+<p>当您定义一个您想要添加动画的矢量图片时,请使用 <code>android:name</code>
+属性给这些群组和路径指定一个唯一名称,以便让您能够从您的动画定义中引用这些群组或路径。
+例如:</p>
+
+<pre>
+&lt;!-- res/drawable/vectordrawable.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="64dp"
+    android:width="64dp"
+    android:viewportHeight="600"
+    android:viewportWidth="600">
+    &lt;group
+        <strong>android:name="rotationGroup"</strong>
+        android:pivotX="300.0"
+        android:pivotY="300.0"
+        android:rotation="45.0" >
+        &lt;path
+            <strong>android:name="v"</strong>
+            android:fillColor="#000000"
+            android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
+    &lt;/group>
+&lt;/vector>
+</pre>
+
+<p>已添加动画的矢量图片定义按名称引用矢量图片内的群组和路径:
+</p>
+
+<pre>
+&lt;!-- res/drawable/animvectordrawable.xml -->
+&lt;animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+  android:drawable="@drawable/vectordrawable" >
+    &lt;target
+        android:name="rotationGroup"
+        android:animation="@anim/rotation" />
+    &lt;target
+        android:name="v"
+        android:animation="@anim/path_morph" />
+&lt;/animated-vector>
+</pre>
+
+<p>动画定义代表着 {@link android.animation.ObjectAnimator} 或 {@link
+android.animation.AnimatorSet} 对象。此示例中的第一个动画将目标群组旋转 360 度:
+</p>
+
+<pre>
+&lt;!-- res/anim/rotation.xml -->
+&lt;objectAnimator
+    android:duration="6000"
+    android:propertyName="rotation"
+    android:valueFrom="0"
+    android:valueTo="360" />
+</pre>
+
+<p>此示例中的第二个动画对矢量图片的路径进行变形。
+两个路径均需可兼容变形操作:两个路径均需拥有相同数量的指令,而且每个指令均需拥有相同数量的参数。
+</p>
+
+<pre>
+&lt;!-- res/anim/path_morph.xml -->
+&lt;set xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;objectAnimator
+        android:duration="3000"
+        android:propertyName="pathData"
+        android:valueFrom="M300,70 l 0,-70 70,70 0,0   -70,70z"
+        android:valueTo="M300,70 l 0,-70 70,0  0,140 -70,0 z"
+        android:valueType="pathType" />
+&lt;/set>
+</pre>
+
+<p>如果要了解更多信息,请参阅 {@link
+android.graphics.drawable.AnimatedVectorDrawable} 的 API 参考文档。</p>
diff --git a/docs/html-intl/intl/zh-cn/training/material/compatibility.jd b/docs/html-intl/intl/zh-cn/training/material/compatibility.jd
new file mode 100644
index 0000000..aa23d4b
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/training/material/compatibility.jd
@@ -0,0 +1,168 @@
+page.title=维护兼容性
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>本课程将向您展示如何</h2>
+<ol>
+  <li><a href="#Theme">定义备用样式</a></li>
+  <li><a href="#Layouts">提供备用布局</a></li>
+  <li><a href="#SupportLib">使用支持内容库</a></li>
+  <li><a href="#CheckVersion">检查系统版本</a></li>
+</ol>
+<h2>您也应该阅读</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">材料设计规范</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android 材料设计</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>有些材料设计功能(例如材料主题和定制操作行为转换)仅在 Android 5.0(API 级别 21)及更高版本中提供。
+不过,您可为您的应用进行设计,使应用在支持材料设计的设备上运行时可使用这些功能,且同时能够与运行早期版本 Android 的设备兼容。
+
+</p>
+
+
+<h2 id="Theme">定义备用样式</h2>
+
+<p>您可对您的应用进行配置,使应用能够在支持它的设备上使用材料主题,并且能够在运行早期版本 Android 的设备上还原至早期版本的主题:
+</p>
+
+<ol>
+<li>定义一个从
+<code>res/values/styles.xml</code> 中的早期版本主题(例如 Holo)继承的主题。</li>
+<li>定义一个从
+<code>res/values-v21/styles.xml</code> 中的材料主题继承且拥有相同名称的主题。</li>
+<li>在清单文件中将此主题设置为您的应用主题。</li>
+</ol>
+
+<p class="note"><strong>注意</strong>:如果您的应用使用材料主题,但没有以这方式提供备用主题,您的应用将无法在 Android 5.0 之前的 Android 版本上运行。
+
+
+</p>
+
+
+<h2 id="Layouts">提供备用布局</h2>
+
+<p>如果您根据材料设计指导方针设计的布局没有使用 Android 5.0(API 级别 21)所推出的新 XML 属性,这些布局将能够在早期版本的 Android 上运行。
+
+或者,您也可以提供备用布局。您也可以提供备用布局以定制应用在早期版本的 Android 上的呈现方式。
+</p>
+
+<p>您可在 <code>res/layout-v21/</code> 内创建用于 Android 5.0(API 级别 21)的布局文件,同时也可在 <code>res/layout/</code> 内创建用于早期版本 Android 的备用布局文件。例如,<code>res/layout/my_activity.xml</code> 是
+<code>res/layout-v21/my_activity.xml</code> 的备用布局。
+
+</p>
+
+<p>为避免代码重复,请在 <code>res/values/</code> 内定义您的风格,在 <code>res/values-v21/</code> 内为新 API 修改风格,以及使用风格继承(即:在 <code>res/values/</code> 内定义基础风格,然后在 <code>res/values-v21/</code> 内继承这些风格)。
+
+</p>
+
+
+<h2 id="SupportLib">使用支持内容库</h2>
+
+<p><a href="{@docRoot}tools/support-library/features.html#v7">v7 支持内容库</a>
+r21 及更高版本包括下列材料设计功能:</p>
+
+<ul>
+<li>应用其中一个 <code>Theme.AppCompat</code> 主题时可取得适用于一些系统小组件的<a href="{@docRoot}training/material/theme.html">材料设计风格</a>。
+</li>
+<li><code>Theme.AppCompat</code> 主题中拥有<a href="{@docRoot}training/material/theme.html#ColorPalette">配色工具主题属性</a>。
+</li>
+<li><a href="{@docRoot}training/material/lists-cards.html#RecyclerView">显示数据集合</a>的 {@link android.support.v7.widget.RecyclerView} 小组件。
+</li>
+<li><a href="{@docRoot}training/material/lists-cards.html#CardView">创建卡片</a>的 {@link android.support.v7.widget.CardView} 小组件。</li>
+<li><a href="{@docRoot}training/material/drawables.html#ColorExtract">从图像萃取突出颜色</a>的 {@link android.support.v7.graphics.Palette} 类别。
+</li>
+</ul>
+
+<h3>系统小组件</h3>
+
+<p><code>Theme.AppCompat</code> 主题可为这些小组件提供材料设计风格:</p>
+
+<ul>
+  <li>{@link android.widget.EditText}</li>
+  <li>{@link android.widget.Spinner}</li>
+  <li>{@link android.widget.CheckBox}</li>
+  <li>{@link android.widget.RadioButton}</li>
+  <li>{@link android.support.v7.widget.SwitchCompat}</li>
+  <li>{@link android.widget.CheckedTextView}</li>
+</ul>
+
+<h3>配色工具</h3>
+
+<p>如果要利用 Android v7 支持内容库取得材料设计风格以及定制配色工具,请应用其中一个 <code>Theme.AppCompat</code> 主题:
+</p>
+
+<pre>
+&lt;!-- extend one of the Theme.AppCompat themes -->
+&lt;style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
+    &lt;!-- customize the color palette -->
+    &lt;item name="colorPrimary">@color/material_blue_500&lt;/item>
+    &lt;item name="colorPrimaryDark">@color/material_blue_700&lt;/item>
+    &lt;item name="colorAccent">@color/material_green_A200&lt;/item>
+&lt;/style>
+</pre>
+
+<h3>列表和卡片</h3>
+
+<p>{@link android.support.v7.widget.RecyclerView} 以及 {@link
+android.support.v7.widget.CardView} 小组件可通过 Android v7 支持内容库提供给早期版本 Android,但有如下限制:
+</p>
+<ul>
+<li>{@link android.support.v7.widget.CardView} 使用额外边距返回编程阴影实现。
+</li>
+<li>{@link android.support.v7.widget.CardView} 不会裁剪其与圆角相交的子视图。
+</li>
+</ul>
+
+
+<h3>依赖项</h3>
+
+<p>如果要在 Android 5.0(API 级别 21)之前的 Android 版本中使用这些功能,请将
+Android v7 支持内容库作为 <a href="{@docRoot}/sdk/installing/studio-build.html#dependencies">Gradle 依赖项</a>包括在您的项目中:</p>
+
+<pre>
+dependencies {
+    compile 'com.android.support:appcompat-v7:21.0.+'
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
+
+
+<h2 id="CheckVersion">检查系统版本</h2>
+
+<p>下列功能仅在 Android 5.0(API 级别 21)及更高版本中提供:</p>
+
+<ul>
+<li>操作行为转换</li>
+<li>触摸反馈</li>
+<li>揭露动画</li>
+<li>基于路径的动画</li>
+<li>矢量图片</li>
+<li>图片着色</li>
+</ul>
+
+<p>如果要保留与早期版本 Android 的兼容性,请您在运行时检查系统 {@link
+android.os.Build.VERSION#SDK_INT version},然后再为下列的任何一个功能调用 API:
+</p>
+
+<pre>
+// Check if we're running on Android 5.0 or higher
+if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+    // Call some material design APIs here
+} else {
+    // Implement this feature without material design
+}
+</pre>
+
+<p class="note"><strong>注意:</strong>如果要指定您的应用所支持的 Android 版本,请使用您的清单文件中的 <code>android:minSdkVersion</code> 以及 <code>android:targetSdkVersion</code>
+属性。
+如果要在 Android 5.0 内使用材料设计功能,请将 <code>android:targetSdkVersion</code> 属性设置为 <code>21</code>。
+如果要了解更多信息,请参阅
+<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt; API
+指南</a>。</p>
diff --git a/docs/html-intl/intl/zh-cn/training/material/drawables.jd b/docs/html-intl/intl/zh-cn/training/material/drawables.jd
new file mode 100644
index 0000000..8a65431
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/training/material/drawables.jd
@@ -0,0 +1,126 @@
+page.title=使用图片
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>本课程将向您展示如何</h2>
+<ol>
+  <li><a href="#DrawableTint">为图片资源着色</a></li>
+  <li><a href="#ColorExtract">从图像萃取突出颜色</a></li>
+  <li><a href="#VectorDrawables">创建矢量图片</a></li>
+</ol>
+<h2>您也应该阅读</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">材料设计规范</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android 材料设计</a></li>
+</ul>
+</div>
+</div>
+
+<p>下列适用于图片的功能将协助您在您的应用中实现材料设计:</p>
+
+<ul>
+<li>图片着色</li>
+<li>突出颜色萃取</li>
+<li>矢量图片</li>
+</ul>
+
+<p>本课程将向您展示如何在您的应用中使用这些功能。</p>
+
+
+<h2 id="DrawableTint">为图片资源着色</h2>
+
+<p>利用 Android 5.0(API 级别 21)及更高版本,您可为位图以及定义为 Alpha 蒙版的点九图着色。
+您可使用颜色资源或分解为颜色资源(例如 <code>?android:attr/colorPrimary</code>)的主题属性为其着色。
+通常,您只有一次机会创建这些资产并自动为其上色以符合您的主题。
+</p>
+
+<p>您可利用 {@code setTint()} 方法为 {@link android.graphics.drawable.BitmapDrawable} 或 {@link
+android.graphics.drawable.NinePatchDrawable} 对象着色。您也可以利用 <code>android:tint</code> 以及
+<code>android:tintMode</code> 属性设置您的布局中的着色颜色和模式。
+</p>
+
+
+<h2 id="ColorExtract">从图像萃取突出颜色</h2>
+
+<p>Android 支持内容库 r21 及更高版本包括 {@link
+android.support.v7.graphics.Palette} 类别,可让您从图像萃取突出颜色。此类别将萃取下列突出颜色:
+</p>
+
+<ul>
+<li>鲜艳</li>
+<li>鲜艳深色</li>
+<li>鲜艳浅色</li>
+<li>低调</li>
+<li>低调深色</li>
+<li>低调浅色</li>
+</ul>
+
+<p>如果要萃取这些颜色,请将 {@link android.graphics.Bitmap} 对象传递给位于您上载图像的背景线程的
+{@link android.support.v7.graphics.Palette#generate Palette.generate()} 静态方法。
+如果您无法使用此线程,请调用
+{@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} 方法并提供一个侦听程序。
+</p>
+
+<p>您可使用
+<code>Palette</code> 类别(例如 <code>Palette.getVibrantColor</code>)中的 getter 方法从图像检索突出颜色。</p>
+
+<p>如果要在项目中使用 {@link android.support.v7.graphics.Palette} 类别,请将下列
+<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">Gradle 依赖项</a>添加至您的应用模块:
+</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:palette-v7:21.0.0'
+}
+</pre>
+
+<p>如果要了解更多信息,请参阅{@link android.support.v7.graphics.Palette}
+类别的 API 参考文档。</p>
+
+
+<h2 id="VectorDrawables">创建矢量图片</h2>
+
+<!-- video box -->
+<a class="notice-developers-video" href="https://www.youtube.com/watch?v=wlFVIIstKmA" style="margin-top:18px">
+<div>
+    <h3>视频</h3>
+    <p>Android 矢量图形</p>
+</div>
+</a>
+
+<p>在 Android 5.0(API 级别 21)及更高版本中,您可定义矢量图片,而且图片可在不损失清晰度的情况下缩放。
+您只需一个资产文件即可创建一个矢量图像,而位图图像则需要为每个屏幕密度提供一个资产文件。
+如果要创建一个矢量图像,请您在 <code>&lt;vector&gt;</code> XML 元素中定义形状的详情。
+</p>
+
+<p>下列示例以心形定义一个矢量图像:</p>
+
+<pre>
+&lt;!-- res/drawable/heart.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    &lt;!-- intrinsic size of the drawable -->
+    android:height="256dp"
+    android:width="256dp"
+    &lt;!-- size of the virtual canvas -->
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+
+  &lt;!-- draw a path -->
+  &lt;path android:fillColor="#8fff"
+      android:pathData="M20.5,9.5
+                        c-1.955,0,-3.83,1.268,-4.5,3
+                        c-0.67,-1.732,-2.547,-3,-4.5,-3
+                        C8.957,9.5,7,11.432,7,14
+                        c0,3.53,3.793,6.257,9,11.5
+                        c5.207,-5.242,9,-7.97,9,-11.5
+                        C25,11.432,23.043,9.5,20.5,9.5z" />
+&lt;/vector>
+</pre>
+
+<p>矢量图像在 Android 中以 {@link android.graphics.drawable.VectorDrawable}
+对象表示。如果要了解更多有关 <code>pathData</code> 语法的信息,请参阅 <a href="http://www.w3.org/TR/SVG11/paths.html#PathData">SVG 路径参考</a>。如果要了解更多有关为矢量图片属性添加动画的信息,请参阅<a href="{@docRoot}training/material/animations.html#AnimVector">为矢量图片添加动画</a>。
+
+</p>
diff --git a/docs/html-intl/intl/zh-cn/training/material/get-started.jd b/docs/html-intl/intl/zh-cn/training/material/get-started.jd
new file mode 100644
index 0000000..16db97b
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/training/material/get-started.jd
@@ -0,0 +1,171 @@
+page.title=入门指南
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>本课程将向您展示如何</h2>
+<ol>
+  <li><a href="#ApplyTheme">使用材料主题</a></li>
+  <li><a href="#Layouts">设计布局</a></li>
+  <li><a href="#Depth">指定您视图内的高度</a></li>
+  <li><a href="#ListsCards">创建列表与卡片</a></li>
+  <li><a href="#Animations">定制您的动画</a></li>
+</ol>
+<h2>您也应该阅读</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">材料设计规范</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android 材料设计</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>如果要使用材料设计创建应用:</p>
+
+<ol>
+  <li style="margin-bottom:10px">
+    请查阅<a href="http://www.google.com/design/spec">材料设计规范</a>。</li>
+  <li style="margin-bottom:10px">
+    在您的应用中使用材料<strong>主题</strong>。</li>
+  <li style="margin-bottom:10px">
+    遵循材料设计指导方针创建您的<strong>布局</strong>。</li>
+  <li style="margin-bottom:10px">
+    指定您视图要投射阴影的<strong>高度</strong>。</li>
+  <li style="margin-bottom:10px">
+    使用系统<strong>小组件</strong>呈现列表与卡片。</li>
+  <li style="margin-bottom:10px">
+    定制您的应用中的<strong>动画</strong>。</li>
+</ol>
+
+<h3>保持后向兼容性</h3>
+
+<p>您可将多个材料设计功能添加至您的应用,同时保持与 Android 5.0 之前的 Android 版本的兼容性。
+如果要了解更多信息,请参阅
+<a href="{@docRoot}training/material/compatibility.html">保持兼容性</a>。</p>
+
+<h3>使用材料设计更新您的应用</h3>
+
+<p>如果要更新现有应用以纳入材料设计,请遵循材料设计指导方针更新您的布局。
+同时也须确保纳入深度、触摸反馈和动画。
+</p>
+
+<h3>使用材料设计创建新应用</h3>
+
+<p>如果您要使用材料设计功能创建新应用,<a href="http://www.google.com/design/spec">材料设计指导方针</a>将为您提供一个紧密结合的设计框架。
+请遵循这些指导方针并使用 Android
+框架中的新功能来设计与开发您的应用。</p>
+
+
+<h2 id="ApplyTheme">使用材料主题</h2>
+
+<p>如果要在您的应用中使用材料主题,请指定一个从
+<code>android:Theme.Material</code> 继承的风格:</p>
+
+<pre>
+&lt;!-- res/values/styles.xml -->
+&lt;resources>
+  &lt;!-- your theme inherits from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- theme customizations -->
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<p>材料主题提供更新的系统小组件,让您能够为触摸反馈以及操作行为转换设置配色工具以及默认动画。
+有关更多详情,请参阅<a href="{@docRoot}training/material/theme.html">使用材料主题</a>。
+</p>
+
+
+<h2 id="Layouts">设计布局</h2>
+
+<p>除了应用及定制材料主题,您的布局同时也应符合<a href="http://www.google.com/design/spec">材料设计指导方针</a>。
+设计布局时,请特别注意下列几点:
+</p>
+
+<ul>
+<li>基线格点</li>
+<li>关键线</li>
+<li>间距</li>
+<li>触摸目标大小</li>
+<li>布局结构</li>
+</ul>
+
+
+<h2 id="Depth">指定您视图内的高度</h2>
+
+<p>视图可透射阴影,而视图的高度值将决定其阴影的大小以及其显示顺序。
+如果要设置视图的高度,请使用您的布局中的
+<code>android:elevation</code> 属性:</p>
+
+<pre>
+&lt;TextView
+    android:id="&#64;+id/my_textview"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:text="&#64;string/next"
+    android:background="&#64;color/white"
+    android:elevation="5dp" />
+</pre>
+
+<p>新的 <code>translationZ</code> 属性可让您创建反映出视图高度临时变化的动画。
+高度变化可在<a href="{@docRoot}training/material/animations.html#ViewState">响应触摸手势</a>时发挥作用。
+
+</p>
+
+<p>有关更多详情,请参阅<a href="{@docRoot}training/material/shadows-clipping.html">定义阴影与裁剪视图</a>。
+</p>
+
+
+<h2 id="ListsCards">创建列表与卡片</h2>
+
+<p>{@link android.support.v7.widget.RecyclerView} 是 {@link
+android.widget.ListView} 的可插入版本,支持不同布局类型,具有更高性能。
+{@link android.support.v7.widget.CardView} 让您能够展示卡片内的各种信息并且在各种应用中实现一致的呈现方式。
+下列代码示例将展示如何将
+{@link android.support.v7.widget.CardView} 包括在您的布局中:</p>
+
+<pre>
+&lt;android.support.v7.widget.CardView
+    android:id="&#64;+id/card_view"
+    android:layout_width="200dp"
+    android:layout_height="200dp"
+    card_view:cardCornerRadius="3dp">
+    ...
+&lt;/android.support.v7.widget.CardView>
+</pre>
+
+<p>如需了解详细信息,请参阅<a href="{@docRoot}training/material/lists-cards.html">创建列表和卡片</a>。
+</p>
+
+
+<h2 id="Animations">定制您的动画</h2>
+
+<p>Android 5.0(API 级别 21)包括新 API,可用于在您的应用中创建定制动画。例如,您可启用操作行为转换并定义操作行为内的退出转换:
+
+</p>
+
+<pre>
+public class MyActivity extends Activity {
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // enable transitions
+        getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+        setContentView(R.layout.activity_my);
+    }
+
+    public void onSomeButtonClicked(View view) {
+        getWindow().setExitTransition(new Explode());
+        Intent intent = new Intent(this, MyOtherActivity.class);
+        startActivity(intent,
+                      ActivityOptions
+                          .makeSceneTransitionAnimation(this).toBundle());
+    }
+}
+</pre>
+
+<p>当您从此操作行为启动另一个操作行为时,退出转换将被激活。</p>
+
+<p>如果要了解有关新动画 API 的更多详情,请参阅<a href="{@docRoot}training/material/animations.html">定义定制动画</a>。</p>
diff --git a/docs/html-intl/intl/zh-cn/training/material/index.jd b/docs/html-intl/intl/zh-cn/training/material/index.jd
new file mode 100644
index 0000000..dea1483
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/training/material/index.jd
@@ -0,0 +1,61 @@
+page.title=面向开发者的材料设计
+page.type=设计
+page.image=images/cards/material_2x.png
+page.metaDescription=学习如何将材料设计运用到您的应用中。
+
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+  <h2>依赖项和先决条件</h2>
+  <ul>
+    <li>Android 5.0(API 级别 21)</li>
+  </ul>
+</div>
+</div>
+
+<p>材料设计是专为设计适用于多个平台和设备的视觉、运动与互动效果而制定的综合指南。
+如果要在您的 Android 应用中使用材料设计,请遵循<a href="http://www.google.com/design/spec/material-design/introduction.html">材料设计规范</a>内所述的指导方针,并使用 Android 5.0(API 级别 21)所提供的新组件与功能。
+
+
+
+</p>
+
+<p>本课程将向您介绍如何利用下列元素创建材料设计应用:</p>
+
+<ul>
+<li>材料主题</li>
+<li>用于创建卡片与列表的小组件</li>
+<li>定制阴影以及视图裁剪</li>
+<li>矢量图片</li>
+<li>定制动画</li>
+</ul>
+
+<p>本课程也将向您展示在您的应用中使用材料设计功能时应如何保持与 Android
+5.0(API 级别 21)之前的 Android 版本的兼容性。</p>
+
+<h2>课程</h2>
+
+<dl>
+  <dt><a href="{@docRoot}training/material/get-started.html">入门指南</a></dt>
+  <dd>了解如何使用材料设计功能更新您的应用。</dd>
+
+  <dt><a href="{@docRoot}training/material/theme.html">使用材料主题</a></dt>
+  <dd>了解如何在您的应用中使用材料设计风格。</dd>
+
+  <dt><a href="{@docRoot}training/material/lists-cards.html">创建列表与卡片</a></dt>
+  <dd>了解如何使用系统小组件创建拥有一致的呈现方式与风格的列表与卡片。</dd>
+
+  <dt><a href="{@docRoot}training/material/shadows-clipping.html">定义阴影与裁剪视图</a></dt>
+  <dd>了解如何为您的视图设置高度以便创建定制阴影以及如何裁剪视图。</dd>
+
+  <dt><a href="{@docRoot}training/material/drawables.html">使用 Drawables</a></dt>
+  <dd>了解如何创建矢量图片以及如何为资源着色。</dd>
+
+  <dt><a href="{@docRoot}training/material/animations.html">定义定制动画</a></dt>
+  <dd>了解如何为视图以及拥有共享元素的操作行为创建定制动画。</dd>
+
+  <dt><a href="{@docRoot}training/material/compatibility.html">维护兼容性</a></dt>
+  <dd>了解如何维护与 Android 5.0 之前各种平台版本的兼容性。</dd>
+</dl>
diff --git a/docs/html-intl/intl/zh-cn/training/material/lists-cards.jd b/docs/html-intl/intl/zh-cn/training/material/lists-cards.jd
new file mode 100644
index 0000000..47efe26
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/training/material/lists-cards.jd
@@ -0,0 +1,266 @@
+page.title=创建列表与卡片
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>本课程将向您展示如何</h2>
+<ol>
+  <li><a href="#RecyclerView">创建列表</a></li>
+  <li><a href="#CardView">创建卡片</a></li>
+  <li><a href="#Dependencies">添加依赖关系</a></li>
+</ol>
+<h2>您也应该阅读</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">材料设计规范</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android 材料设计</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>如果要在您的应用中使用材料设计风格创建复杂列表与卡片,您可使用
+{@link android.support.v7.widget.RecyclerView} 以及 {@link android.support.v7.widget.CardView}
+小组件。</p>
+
+
+<h2 id="RecyclerView">创建列表</h2>
+
+<p>{@link android.support.v7.widget.RecyclerView} 小组件比 {@link android.widget.ListView} 更高级且更具灵活性。
+此小组件是一个用于显示庞大数据集的容器,可通过保持有限数量的视图进行非常有效的滚动操作。
+如果您有数据集合,其中的元素将因用户操作或网络事件而发生改变,请使用
+{@link android.support.v7.widget.RecyclerView} 小组件。
+</p>
+
+<p>{@link android.support.v7.widget.RecyclerView} 类别将通过提供下列功能简化庞大数据集的显示与处理:
+</p>
+
+<ul>
+  <li>用于项目定位的布局管理器</li>
+  <li>用于通用项目操作(例如删除或添加项目)的默认动画</li>
+</ul>
+
+<p>您也可灵活选择如何为 {@link
+android.support.v7.widget.RecyclerView} 小组件定义定制布局管理器与动画。</p>
+
+<img src="{@docRoot}training/material/images/RecyclerView.png" alt="" width="550" height="106" />
+<p class="img-caption">
+<strong>图 1</strong>.<code>RecyclerView</code> 小组件。
+</p>
+
+<p>如果要使用 {@link android.support.v7.widget.RecyclerView} 小组件,您必须指定一个适配器和一个布局管理器。
+如果要创建一个适配器,请扩展 {@link
+android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter} 类别。实现的详情将取决于数据集的具体信息以及视图的类型。
+如果要了解更多信息,请参阅下列<a href="#RVExamples">示例</a>。
+</p>
+
+<div style="float:right">
+<img src="{@docRoot}design/material/images/list_mail.png" alt="" width="250" height="426" />
+<p class="img-caption" style="margin-left:8px">
+<strong>图 2</strong> - 随附 <code>RecyclerView</code> 的列表。
+</p>
+</div>
+
+<p><strong>布局管理器</strong>将确定 {@link
+android.support.v7.widget.RecyclerView} 内各项目视图的位置并决定何时重新使用用户已不可见的项目视图。
+如果要重新使用(或<em>重复使用</em>)一个视图,布局管理器可能会要求适配器以数据集中的另一个元素替换视图的内容。
+以此方式重复使用视图将可避免创建不必要的视图或执行成本高昂的 {@link android.app.Activity#findViewById findViewById()} 查找,从而改善性能。
+
+</p>
+
+<p>{@link android.support.v7.widget.RecyclerView} 提供这些内置布局管理器:</p>
+
+<ul>
+<li>{@link android.support.v7.widget.LinearLayoutManager} 以垂直或水平滚动列表方式显示项目。
+</li>
+<li>{@link android.support.v7.widget.GridLayoutManager} 在网格中显示项目。</li>
+<li>{@link android.support.v7.widget.StaggeredGridLayoutManager} 在分散对齐网格中显示项目。</li>
+</ul>
+
+<p>如果要创建一个定制布局管理器,请扩展 {@link
+android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager} 类别。</p>
+
+<h3>动画</h3>
+
+<p>{@link
+android.support.v7.widget.RecyclerView} 在默认情况下启用增添与删除项目的动画。如果要定制这些动画,请扩展
+{@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} 类别并使用 {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()}
+方法。
+</p>
+
+<h3 id="RVExamples">示例</h3>
+
+<p>下列代码示例将展示如何将
+{@link android.support.v7.widget.RecyclerView} 添加至布局:</p>
+
+<pre>
+&lt;!-- A RecyclerView with some commonly used attributes -->
+&lt;android.support.v7.widget.RecyclerView
+    android:id="@+id/my_recycler_view"
+    android:scrollbars="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"/>
+</pre>
+
+<p>将 {@link android.support.v7.widget.RecyclerView} 小组件添加至您的布局后,立即获取对象图柄并将其连接至布局管理器,同时附加一个适配器以便显示数据:
+
+</p>
+
+<pre>
+public class MyActivity extends Activity {
+    private RecyclerView mRecyclerView;
+    private RecyclerView.Adapter mAdapter;
+    private RecyclerView.LayoutManager mLayoutManager;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.my_activity);
+        mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
+
+        // use this setting to improve performance if you know that changes
+        // in content do not change the layout size of the RecyclerView
+        mRecyclerView.setHasFixedSize(true);
+
+        // use a linear layout manager
+        mLayoutManager = new LinearLayoutManager(this);
+        mRecyclerView.setLayoutManager(mLayoutManager);
+
+        // specify an adapter (see also next example)
+        mAdapter = new MyAdapter(myDataset);
+        mRecyclerView.setAdapter(mAdapter);
+    }
+    ...
+}
+</pre>
+
+<p>适配器可让您存取数据集中的项目,为项目创建视图,并且在原始项目不再可见时以新数据项目替换视图的某些内容。
+
+下列代码示例将展示一个简单的实现,目标为一个包含使用 {@link android.widget.TextView} 小组件显示的字符串阵列的数据集:
+</p>
+
+<pre>
+public class MyAdapter extends RecyclerView.Adapter&lt;MyAdapter.ViewHolder> {
+    private String[] mDataset;
+
+    // Provide a reference to the views for each data item
+    // Complex data items may need more than one view per item, and
+    // you provide access to all the views for a data item in a view holder
+    public static class ViewHolder extends RecyclerView.ViewHolder {
+        // each data item is just a string in this case
+        public TextView mTextView;
+        public ViewHolder(TextView v) {
+            super(v);
+            mTextView = v;
+        }
+    }
+
+    // Provide a suitable constructor (depends on the kind of dataset)
+    public MyAdapter(String[] myDataset) {
+        mDataset = myDataset;
+    }
+
+    // Create new views (invoked by the layout manager)
+    &#64;Override
+    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
+                                                   int viewType) {
+        // create a new view
+        View v = LayoutInflater.from(parent.getContext())
+                               .inflate(R.layout.my_text_view, parent, false);
+        // set the view's size, margins, paddings and layout parameters
+        ...
+        ViewHolder vh = new ViewHolder(v);
+        return vh;
+    }
+
+    // Replace the contents of a view (invoked by the layout manager)
+    &#64;Override
+    public void onBindViewHolder(ViewHolder holder, int position) {
+        // - get element from your dataset at this position
+        // - replace the contents of the view with that element
+        holder.mTextView.setText(mDataset[position]);
+
+    }
+
+    // Return the size of your dataset (invoked by the layout manager)
+    &#64;Override
+    public int getItemCount() {
+        return mDataset.length;
+    }
+}
+</pre>
+
+
+<div style="float:right;margin-top:15px;margin-left:30px">
+<img src="{@docRoot}design/material/images/card_travel.png" alt="" width="225" height="383">
+<p class="img-caption" style="margin-left:12px">
+<strong>图 3</strong>.卡片示例。
+</p>
+</div>
+
+<h2 id="CardView">创建卡片</h2>
+
+<p>{@link android.support.v7.widget.CardView} 扩展 {@link android.widget.FrameLayout} 类别并让您能够显示卡片内的信息,这些信息在整个平台中拥有一致的呈现方式。{@link
+android.support.v7.widget.CardView} 小组件可拥有阴影和圆角。
+</p>
+
+<p>如果要使用阴影创建卡片,请使用 <code>card_view:cardElevation</code> 属性。{@link android.support.v7.widget.CardView} 在 Android 5.0(API 级别 21)及更高版本中使用真实高度与动态阴影,而在早期的 Android 版本中则返回编程阴影实现。如需了解详细信息,请参阅<a href="{@docRoot}training/material/compatibility.html">保持兼容性</a>
+
+
+
+</p>
+
+<p>使用这些属性定制
+{@link android.support.v7.widget.CardView} 小组件的外观:</p>
+
+<ul>
+  <li>如果要在您的布局中设置圆角半径,请使用 <code>card_view:cardCornerRadius</code>
+属性。</li>
+  <li>如果要在您的代码中设置圆角半径,请使用 <code>CardView.setRadius</code> 方法。</li>
+  <li>如果要设置卡片的背景颜色,请使用 <code>card_view:cardBackgroundColor</code>
+属性。</li>
+</ul>
+
+<p>下列代码示例将展示如何将 {@link android.support.v7.widget.CardView}
+小组件包括在您的布局中:</p>
+
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    ... >
+    &lt;!-- A CardView that contains a TextView -->
+    &lt;android.support.v7.widget.CardView
+        xmlns:card_view="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/card_view"
+        android:layout_gravity="center"
+        android:layout_width="200dp"
+        android:layout_height="200dp"
+        card_view:cardCornerRadius="4dp">
+
+        &lt;TextView
+            android:id="@+id/info_text"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
+    &lt;/android.support.v7.widget.CardView>
+&lt;/LinearLayout>
+</pre>
+
+<p>如果要了解更多信息,请参阅 {@link android.support.v7.widget.CardView} 的 API 参考。</p>
+
+
+<h2 id="Dependencies">添加依赖项</h2>
+
+<p>{@link android.support.v7.widget.RecyclerView} 与 {@link android.support.v7.widget.CardView}
+小组件为 <a href="{@docRoot}tools/support-library/features.html#v7">v7 支持内容库</a>的一部分。
+如果要在您的项目中使用这些小组件,请将这些
+<a href="{@docRoot}sdk/installing/studio-build.html#dependencies">Gradle 依赖项</a>添加至您的应用模块:
+</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
diff --git a/docs/html-intl/intl/zh-cn/training/material/shadows-clipping.jd b/docs/html-intl/intl/zh-cn/training/material/shadows-clipping.jd
new file mode 100644
index 0000000..e063d33
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/training/material/shadows-clipping.jd
@@ -0,0 +1,133 @@
+page.title=定义阴影与裁剪视图
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>本课程将向您展示如何</h2>
+<ol>
+  <li><a href="#Elevation">指定视图高度</a></li>
+  <li><a href="#Shadows">定制视图阴影与轮廓</a></li>
+  <li><a href="#Clip">裁剪视图</a></li>
+</ol>
+<h2>您也应该阅读</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">材料设计规范</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android 材料设计</a></li>
+</ul>
+</div>
+</div>
+
+<p>材料设计为 UI 元素引入高度。高度将帮助用户了解每个元素的相对重要性,让他们能够集中于手边的工作。
+</p>
+
+<p>由 Z 属性所表示的视图高度将决定其阴影的视觉外观:拥有较高 Z 值的视图将投射更大且更柔和的阴影。
+拥有较高 Z 值的视图将挡住拥有较低 Z 值的视图;不过视图的 Z 值并不影响视图的大小。
+</p>
+
+<p>阴影是由提升的视图的父项所绘制,因此将受到标准视图裁剪的影响,而在默认情况下裁剪将由父项执行。
+</p>
+
+<p>此外,在创建其中的小组件在执行某些操作行为时会暂时升至视图平面之上的动画时,高度也很实用。
+</p>
+
+<p>要了解更多有关材料设计高度的信息,请参阅
+<a href="http://www.google.com/design/spec/what-is-material/objects-in-3d-space.html">3D 空间内的对象</a>。
+</p>
+
+
+<h2 id="Elevation">指定视图高度</h2>
+
+<p>视图的 Z 值包含两个组件:
+
+<ul>
+<li>高度:静态组件。</li>
+<li>转换:用于动画的动态组件。</li>
+</ul>
+
+<p><code>Z = elevation + translationZ</code></p>
+
+<img src="{@docRoot}training/material/images/shadows-depth.png" width="580" height="261" alt="" />
+<p class="img-caption"><strong>图 1</strong> - 不同视图高度的阴影。</p>
+
+<p>如果要在布局定义中设置视图的高度,请使用 <code>android:elevation</code>
+ 属性。如果要在操作行为的代码中设置视图高度,请使用
+{@link android.view.View#setElevation View.setElevation()} 方法。</p>
+
+<p>如果要设置视图转换,请使用 {@link android.view.View#setTranslationZ
+View.setTranslationZ()} 方法。</p>
+
+<p>全新的 {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} 与 {@link
+android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} 方法让您能够轻松地为视图高度添加动画。
+如果要了解更多信息,请参阅
+{@link android.view.ViewPropertyAnimator} 的 API 参考以及<a href="{@docRoot}guide/topics/graphics/prop-animation.html">属性动画</a>开发指南。
+</p>
+
+<p>您也可使用 {@link android.animation.StateListAnimator} 以说明性方式指定这些动画。
+当状态改变会触发动画(例如当用户按下按钮)时,此方法特别有用。
+如果要了解更多信息,请参阅<a href="{@docRoot}training/material/animations.html#ViewState">为视图状态改变添加动画</a>。
+</p>
+
+<p>Z 值以 dp(密度独立像素)为单位度量。</p>
+
+
+<h2 id="Shadows">定制视图阴影与轮廓</h2>
+
+<p>视图的背景图片的边界将决定其阴影的默认形状。<strong>轮廓</strong>代表图形对象的外形并定义触摸反馈的波纹区域。
+
+</p>
+
+<p>下面举一个以背景图片定义的视图示例:</p>
+
+<pre>
+&lt;TextView
+    android:id="@+id/myview"
+    ...
+    android:elevation="2dp"
+    android:background="@drawable/myrect" />
+</pre>
+
+<p>背景图片被定义为一个拥有圆角的矩形:</p>
+
+<pre>
+&lt;!-- res/drawable/myrect.xml -->
+&lt;shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+    &lt;solid android:color="#42000000" />
+    &lt;corners android:radius="5dp" />
+&lt;/shape>
+</pre>
+
+<p>视图将投射一个带有圆角的阴影,因为背景图片将定义视图的轮廓。
+如果提供一个定制轮廓,则此轮廓将替代视图阴影的默认形状。</p>
+
+<p>如果要为您的代码中的视图定义定制轮廓:<p>
+
+<ol>
+<li>扩展 {@link android.view.ViewOutlineProvider} 类别。</li>
+<li>替代 {@link android.view.ViewOutlineProvider#getOutline getOutline()} 方法。</li>
+<li>利用 {@link
+android.view.View#setOutlineProvider View.setOutlineProvider()} 方法向您的视图指定新的轮廓提供程序。</li>
+</ol>
+
+<p>您可使用
+{@link android.graphics.Outline} 类别中的方法创建带有圆角的椭圆形和矩形轮廓。视图的默认轮廓提供程序将从视图背景取得轮廓。
+如果要防止视图投射阴影,请将其轮廓提供程序设置为 <code>null</code>。
+</p>
+
+
+<h2 id="Clip">裁剪视图</h2>
+
+<p>裁剪视图让您能够轻松改变视图形状。您可以裁剪视图,以便与其他设计元素保持一致,也可以根据用户输入改变视图形状。您可使用 {@link android.view.View#setClipToOutline
+View.setClipToOutline()} 方法或 <code>android:clipToOutline</code> 属性将视图裁剪至其轮廓区域。
+
+由
+{@link android.graphics.Outline#canClip Outline.canClip()} 方法所决定,仅有矩形、圆形和圆角矩形轮廓支持裁剪。
+</p>
+
+<p>如果要将视图裁剪至图片的形状,请将图片设置为视图背景(如上所示)并调用 {@link android.view.View#setClipToOutline View.setClipToOutline()}
+方法。
+</p>
+
+<p>裁剪视图是一个成本高昂的操作,因此不可为您用于裁剪视图的形状添加动画。
+如果要实现此效果,请使用<a href="{@docRoot}training/material/animations.html#Reveal">揭露效果</a>动画。</p>
diff --git a/docs/html-intl/intl/zh-cn/training/material/theme.jd b/docs/html-intl/intl/zh-cn/training/material/theme.jd
new file mode 100644
index 0000000..5a45d4b
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/training/material/theme.jd
@@ -0,0 +1,131 @@
+page.title=使用材料主题
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>本课程将向您展示如何</h2>
+<ol>
+  <li><a href="#ColorPalette">定制配色工具</a></li>
+  <li><a href="#StatusBar">定制状态栏</a></li>
+  <li><a href="#Inheritance">主题个别视图</a></li>
+</ol>
+<h2>您也应该阅读</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">材料设计规范</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android 材料设计</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>新材料主题将提供:</p>
+
+<ul>
+  <li>让您设置主题配色工具的系统小组件</li>
+  <li>适用于系统小组件的触摸反馈动画</li>
+  <li>操作行为转换动画</li>
+</ul>
+
+<p>您可使用您所控制的配色工具,按照您的品牌形象定制材料主题的外观。
+您可使用主题属性为操作栏和状态栏着色,如<a href="#fig3">图 3</a> 所示。
+</p>
+
+<p>系统小组件拥有全新的设计与触摸反馈动画。您可为您的应用定制配色工具、触摸反馈动画以及操作行为转换。
+</p>
+
+<p>材料主题的定义为:</p>
+
+<ul>
+  <li><code>@android:style/Theme.Material</code>(深色版本)</li>
+  <li><code>@android:style/Theme.Material.Light</code>(浅色版本)</li>
+  <li><code>@android:style/Theme.Material.Light.DarkActionBar</code></li>
+</ul>
+
+<p>如果要了解您可使用的材料风格,请参阅
+{@link android.R.style R.style} 的 API 参考。</p>
+
+<!-- two columns, dark/light material theme example -->
+<div style="width:700px;margin-top:25px;margin-bottom:10px">
+<div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
+  <img src="{@docRoot}design/material/images/MaterialDark.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>图 1</strong>.深色材料主题</p>
+  </div>
+</div>
+<div style="float:left;width:250px;margin-right:0px;">
+  <img src="{@docRoot}design/material/images/MaterialLight.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>图 2</strong>.浅色材料主题</p>
+  </div>
+</div>
+<br style="clear:left">
+</div>
+
+<p class="note">
+<strong>注意:</strong>材料主题仅在 Android 5.0(API 级别 21)及更高版本中提供。
+<a href="{@docRoot}tools/support-library/features.html#v7">v7 支持内容库</a>为一些小组件提供附带材料设计风格的主题,同时为配色工具定制提供支持。
+
+如果要了解更多信息,请参阅
+<a href="{@docRoot}training/material/compatibility.html">保持兼容性</a>。
+</p>
+
+
+<h2 id="ColorPalette">定制配色工具</h2>
+
+<p style="margin-bottom:30px">如果要定制主题的基色以符合您的品牌,您可在进行材料主题继承时使用主题属性定义您的定制颜色:
+</p>
+
+<pre>
+&lt;resources>
+  &lt;!-- inherit from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- Main theme colors -->
+    &lt;!--   your app branding color for the app bar -->
+    &lt;item name="android:colorPrimary">@color/primary&lt;/item>
+    &lt;!--   darker variant for the status bar and contextual app bars -->
+    &lt;item name="android:colorPrimaryDark">@color/primary_dark&lt;/item>
+    &lt;!--   theme UI controls like checkboxes and text fields -->
+    &lt;item name="android:colorAccent">@color/accent&lt;/item>
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<div style="float:right;margin-left:25px;margin-top:20px;margin-bottom:10px" id="fig3">
+<img src="{@docRoot}training/material/images/ThemeColors.png" width="250" height="445" />
+<p class="img-caption" style="margin-bottom:0px">
+<strong>图 3.</strong>定制材料主题。</p>
+</div>
+
+
+<h2 id="StatusBar">定制状态栏</h2>
+
+<p>材料主题可让您轻松定制状态栏,因此您可以指定一个符合自己品牌特色且对比度足够高、能够显示白色状态图标的颜色。
+如果要为状态栏设置定制颜色,您可在扩展材料主题时使用 <code>android:statusBarColor</code> 属性。
+
+默认情况下,<code>android:statusBarColor</code> 将继承 <code>android:colorPrimaryDark</code> 的值。
+</p>
+
+<p>您也可自行将状态栏移到后侧。例如,您想在一个照片上以透明的方式显示状态栏,同时利用细微的深色渐变以确保白色状态图标仍保持可见。
+
+如果要执行此操作,请将 <code>android:statusBarColor</code> 属性设置为
+<code>&#64;android:color/transparent</code> 并根据需要调整窗口标志。您也可以使用 {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} 方法进行动画或淡出设置。
+
+</p>
+
+<p class="note">
+<strong>注意:</strong>在多数情况下,状态栏与主工具栏之间应该有一个清楚的分割,您在这些栏的后侧显示全屏的丰富图像或媒体内容以及使用颜色渐变以确保图表仍保持可见的情况除外。
+
+
+</p>
+
+<p>定制导航栏和状态栏时,您可选择将导航栏和状态栏变透明或仅修改状态栏。
+在所有其他情况中,导航栏均应保持黑色。</p>
+
+
+<h2 id="Inheritance">主题个别视图</h3>
+
+<p>XML 布局定义内的元素可指定 <code>android:theme</code> 属性,而该属性将引用一个主题资源。
+此属性可修改元素以及任何子元素的主题,有助于改变界面中特定部分的主题配色工具。
+
+</p>
diff --git a/docs/html-intl/intl/zh-cn/training/wearables/apps/creating-app-china.jd b/docs/html-intl/intl/zh-cn/training/wearables/apps/creating-app-china.jd
new file mode 100644
index 0000000..4e33d36
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/training/wearables/apps/creating-app-china.jd
@@ -0,0 +1,156 @@
+page.title=创建面向中国市场的 Android Wear 应用
+parent.title=培训
+parent.link=creating.html
+page.tags= "可穿戴式", "应用", "中国"
+page.article=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>本课程将向您展示如何</h2>
+<ol>
+  <li><a href="#ChinaSDK">在面向中国市场的 Android Wear 上支持您的应用</a></li>
+  <li><a href="#other-services">使用其他 Google Play Services API</a></li>
+</ol>
+<h2>依赖项和先决条件</h2>
+<ol>
+<li> 在手持式设备和可穿戴式设备上安装 Android 4.3(API 级别 18)或更高版本。</li>
+</ol>
+<h2>下载</h2>
+<ol>
+<div class="download-box">
+<a href="https://dl.google.com/androidwear/developers/china/google-play-services-7-8-87.zip" class="button">独立客户端库</a>
+<p class="filename">google-play-services-7-8-87.zip</p>
+</div>
+</ol>
+</div>
+</div>
+
+
+<p>
+在中国销售的手持式设备没有预装 Google Play 服务。为此,在面向中国市场的设备上运行的可穿戴式设备应用必须通过 Android Wear 协同应用与配对的手持式设备进行通信。
+
+为了让您能够开发出可与面向中国市场的 Android Wear 和面向全球其他市场的 Android Wear 配合使用的 APK,我们提供了专用版本的 Google Play services 客户端库。
+
+</p>
+
+<p>
+此客户端库与 Android 4.3(API 级别 18)及更高版本兼容,您只需将其拖放到您的应用中。
+您无需编写任何新代码,只需更改几个项目配置设置,然后重新编译应用。
+
+</p>
+
+
+<p>本页面的其余部分将介绍如何执行此过程。</p>
+
+
+
+<h2 id = "ChinaSDK">在面向中国市场的 Android Wear 上支持您的应用</h2>
+
+<p>
+<p>为了在所有手持式设备上支持您的可穿戴式设备应用,您必须下载 Google Play
+services 7.8.87 客户端库,并将其作为 Maven 存储库添加到您的项目中,配置开发项目以使用该库,然后重新编译您的应用。
+
+</p>
+
+<h3>添加 Google Play services 7.8.87 库</h3>
+
+<p>Google Play services 7.8.87 客户端库作为 Maven 存储库分发。要将此存储库添加到项目,请:
+</p>
+
+<ol>
+<li><a href="https://dl.google.com/androidwear/developers/china/google-play-services-7-8-87.zip">下载</a>客户端库。
+文件名为 {@code google-play-services-7-8-87.zip}。
+</li>
+<li>通过从下载的 zip 文件提取 {@code google-play-services-7-8-87/} 目录来创建本地 Maven 存储库,并将其放入项目的根目录中。
+
+</li>
+<li>在顶级项目 {@code build.gradle} 文件中,指定新创建的本地 Maven {@code google-play-services-7-8-87} 存储库的位置。
+
+</li>
+<p>
+以下示例向您展示如何操作:
+</p>
+<pre>
+allprojects {
+  repositories {
+
+        maven {
+                url "${rootProject.projectDir}/google-play-services-7-8-87"
+              }
+       // ... other repositories may go here ...
+
+    }</pre>
+</ol>
+<h3>配置应用以使用库</h3>
+<p>在 <em>mobile</em> 模块的 {@code build.gradle} 文件中,将 Google Play services 依赖项替换为指向客户端库(来自新添加的存储库)的引用。
+以下示例向您展示如何操作:
+
+</p>
+
+
+<pre>
+dependencies{
+    ...
+    wearApp project(':wear')
+    compile 'com.google.android.gms:play-services-wearable:7.8.87'
+    ...
+    }
+</pre>
+<p><em>wear</em> 模块的 {@code build.gradle} 文件也必须使用此版本的客户端库,例如:
+
+</p>
+<pre>
+dependencies {
+    compile 'com.google.android.support:wearable:1.3.0'
+    compile 'com.google.android.gms:play-services-wearable:7.8.87'
+}
+</pre>
+
+<p class="note"><strong>注</strong>:如果您在可穿戴式设备应用中使用任何其他 Google Play services API,则必须有选择地将这些 Google Play services API 添加到应用中,并显式指定 7.8.87 版本。
+
+例如,若要将 Google 位置 API 包含到可穿戴式设备应用中,则在您的 {@code build.gradle} 文件中添加以下行:
+
+</p>
+<pre>
+compile 'com.google.android.gms:play-services-location:7.8.87'
+</pre>
+</p>
+<h3>构建项目</h3>
+
+
+<p>现在,您可以<a href="{@docRoot}training/wearables/apps/packaging.html">构建</a>应用的新版本,并将其全局部署到 Android 手持式设备。
+</p>
+</ol>
+
+
+<h2 id= "other-services">使用其他 Google Play services API</h2>
+
+<p>
+如果您的应用使用 Google Play services API 而不是 Wearable API,那么您的应用需要检查这些 API 在运行时是否可用以及是否能够做出恰当的响应。
+检查 Google Play services API 可用性的方式有两种:
+
+</p>
+
+<ol>
+<li>使用独立的 <a href="https://developers.google.com/android/reference/com/google/android/gms/
+common/api/GoogleApiClient.html">{@code GoogleApiClient}</a> 实例来连接到其他 API。此界面包含回调以提醒您的应用连接成功还是失败。若要了解如何处理连接故障,请参阅<a href="https://developers.google.com/android/guides/api-client">访问 Google API</a>。
+
+
+</li>
+
+<li>使用
+<a href="https://developers.google.com/android/
+reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html">{@code GoogleApiClient.Builder}
+</a>
+的 <a href="https://developers.google.com/android/reference/com/google/android/gms/common/
+api/GoogleApiClient.Builder.html#addApiIfAvailable(com.google.android.gms.common.api.Api&lt;O&gt;, O,
+com.google.android.gms.common.api.Scope...)"> {@code addApiIfAvailable()}</a> 方法以连接到必需的 API。在触发 <a href="https://developers.google.com/android/reference/
+com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks#onConnected(android.os.Bundle)">
+{@code onConnected()}</a> 回调后,使用 <a href="https://developers.google.com/android/reference/com/google/android/gms/common/api/
+GoogleApiClient.html#hasConnectedApi(com.google.android.gms.common.api.Api&lt;?&gt;)">
+ {@code hasConnectedApi()}</a> 方法检查所请求的每个 API 是否均已正确连接。
+
+
+</ol>
diff --git a/docs/html-intl/intl/zh-cn/training/wearables/apps/creating.jd b/docs/html-intl/intl/zh-cn/training/wearables/apps/creating.jd
new file mode 100644
index 0000000..5c9ec3f
--- /dev/null
+++ b/docs/html-intl/intl/zh-cn/training/wearables/apps/creating.jd
@@ -0,0 +1,225 @@
+page.title=创建并运行可穿戴式设备应用
+page.tags=wear
+helpoutsWidget=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>本课程将向您展示如何</h2>
+<ol>
+  <li><a href="#UpdateSDK">更新 SDK</a></li>
+  <li><a href="#SetupEmulator">设置 Android Wear 模拟器或设备</a></li>
+  <li><a href="#CreateProject">创建项目</a></li>
+  <li><a href="#Install">安装可穿戴式设备应用</a></li>
+  <li><a href="#Libraries">包含正确的库</a></li>
+</ol>
+</div>
+</div>
+
+<p>可穿戴式设备应用直接在可穿戴式设备上运行,让您可以直接访问可穿戴式设备上的底层硬件(如传感器)、Activity、服务等。
+
+</p>
+
+<p>如果您想要发布到 Google Play 商店,还需要提供包含可穿戴式设备应用的协同手持式设备应用。可穿戴式设备不支持 Google Play 商店,因此,用户可下载协同手持式设备应用,后者自动将可穿戴式设备应用推送到可穿戴式设备上。
+
+
+手持式设备应用还可用于执行繁重的处理、网络操作或其他工作,以及将处理结果发送到可穿戴式设备。
+
+
+</p>
+
+<p>此课程介绍如何设置设备或模拟器,并创建一个同时包含可穿戴式设备应用和手持式设备应用的项目。
+
+</p>
+
+<h2 id="UpdateSDK">更新 SDK</h2>
+
+<p>在您着手构建可穿戴式设备应用前,必须:</p>
+
+<ul>
+  <li><strong>将您的 SDK 工具更新到 23.0.0 或更高版本</strong>
+    <br>
+    利用更新后的 SDK 工具,您可以构建和测试可穿戴式设备应用。
+  </li>
+  <li><strong>将您的 SDK 平台更新为 Android 4.4W.2 (API 20) 或更高版本</strong>
+    <br>
+    更新后的平台版本提供了新的可穿戴式设备应用 API。
+  </li>
+</ul>
+
+<p>若要将 SDK 更新为上述组件,请参阅<a href="{@docRoot}sdk/installing/adding-packages.html#GetTools">获取最新的 SDK 工具</a>
+。</p>
+
+
+<h2 id="SetupEmulator">设置 Android Wear 模拟器或设备</h2>
+<p>我们建议您在真实的硬件上进行开发,以便您可以更好地衡量用户体验。
+不过,通过模拟器,您可以测试不同类型的屏幕形状,这对于测试非常有用。
+</p>
+
+<h3>设置 Android Wear 虚拟设备</h3>
+
+<p>若要设置 Android Wear 虚拟设备,请:</p>
+<ol>
+  <li>点击 <b>Tools &gt; Android &gt; AVD Manager</b>。</li>
+  <li>点击 <b>Create Virtual Device...</b>。</li>
+  <ol>
+    <li>在“Category”列表中点击 <b>Wear</b>:</li>
+    <li>选择 Android Wear Square 或 Android Wear Round。</li>
+    <li>点击 <b>Next</b>。</li>
+    <li>选择版本名称(例如,KitKat Wear)。</li>
+    <li>点击 <b>Next</b>。</li>
+    <li>(可选)更改虚拟设备的任意首选项。</li>
+    <li>点击 <b>Finish</b>。</li>
+  </ol>
+<li>启动模拟器:
+<ol>
+  <li>选择您刚创建的虚拟设备。</li>
+  <li>点击 <b>Play</b> 按钮。</li>
+  <li>等待模拟器初始化并显示 Android Wear 主屏幕。</li>
+</ol>
+</li>
+<li>将手持式设备与模拟器配对:
+<ol>
+  <li>在手持式设备上,从 Google Play 安装 Android Wear 应用。</li>
+  <li>通过 USB 将手持式设备连接到计算机。</li>
+  <li>将 AVD 的通信端口转发到连接的手持式设备(每次连接手持式设备时必须进行此操作):
+
+  <pre>adb -d forward tcp:5601 tcp:5601</pre>
+  </li>
+  <li>在手持式设备上启动 Android Wear 应用并连接到模拟器。</li>
+  <li>点击 Android Wear 应用右上角的菜单并选择
+<b>Demo Cards</b>。</li>
+  <li>您选择的卡片作为通知显示在模拟器主屏幕上。</li>
+</ol>
+</li>
+</ol>
+
+<h3 id="SetupDevice">设置 Android Wear 设备</h3>
+<p>若要设置 Android Wear 设备,请:</p>
+<ol>
+  <li>在手持式设备上安装 Android Wear 应用,可通过 Google Play 获取。</li>
+  <li>按照应用的说明将手持式设备与可穿戴式设备配对。
+  这样,您可以测试同步的手持式设备通知(如果您正在构建这些通知)。</li>
+  <li>在您的手机上使 Android Wear 应用保持打开状态。</li>
+  <li>在 Android Wear 设备上启用 adb 调试。</li>
+  <ol>
+    <li>请转到 <strong>Settings &gt; About</strong>。</li>
+    <li>连续点击 <strong>Build number</strong> 七次。</li>
+    <li>向右滑动返回“Settings”菜单。</li>
+    <li>转到屏幕底部的 <strong>Developer options</strong>。
+    </li>
+    <li>点击 <strong>ADB Debugging</strong> 以启用 adb。</li>
+  </ol>
+  <li>通过 USB 将可穿戴式设备连接到您的计算机,以便您可以在开发时将应用直接安装在可穿戴式设备上。
+可穿戴式设备应用和 Android Wear 应用上会显示一条消息,提示您允许调试。
+</li>
+
+  <p class="note"><strong>注</strong>:如果您无法通过 USB 将可穿戴式设备连接到计算机,您可以尝试<a href="{@docRoot}training/wearables/apps/bt-debugging.html">通过蓝牙连接</a>。
+
+
+  </p>
+
+  <li>在 Android Wear 应用上,选择 <strong>Always allow from this computer</strong> 并点击
+<strong>OK</strong>。</li>
+</ol>
+
+<p>Android Studio 上的 Android 工具窗口显示来自可穿戴式设备的系统日志。<i></i>
+运行 <code>adb devices</code> 命令也可列出可穿戴式设备。</p>
+
+<h2 id="CreateProject">创建项目</h2>
+
+<p>若要着手开发,请先创建包含可穿戴式设备和手持式设备应用模块的应用项目。
+在 Android Studio 中,点击 <b>File</b> &gt;
+ <b>New Project</b>,并按照项目向导说明操作,如<a href="{@docRoot}sdk/installing/create-project.html">创建项目</a>中所述。
+
+按照向导进行操作时,请输入以下信息:</p>
+
+<ol>
+  <li>在 <b>Configure your Project</b> 窗口中,输入应用名称和软件包名称。
+</li>
+  <li>在 <b>Form Factors</b> 窗口中:
+    <ul>
+      <li>选择 <b>Phone and Tablet</b>,然后在 <b>Minimum SDK</b> 下选择 <b>API 9: Android 2.3 (Gingerbread)</b>。
+</li>
+      <li>选择 <b>Wear</b>,然后在 <b>Minimum SDK</b> 下选择 <b>API 20: Android 4.4 (KitKat Wear)</b>。
+</li>
+    </ul>
+  </li>
+  <li>在第一个 <b>Add an Activity</b> 窗口中,针对移动设备添加空白 Activity。</li>
+  <li>在第二个 <b>Add an Activity</b> 窗口中,针对穿戴设备添加空白 Activity。</li>
+</ol>
+  <p>向导完成时,Android Studio 将创建一个包含两个模块(<b>mobile</b>
+和 <b>wear</b>)的新项目。现在,您有一个可供手持式设备应用和可穿戴式设备应用使用的项目,您可以针对该项目创建 Activity、服务和自定义布局。
+手持式设备应用处理大多数繁重事务,如网络通信、密集型处理或需要大量用户交互的任务。
+
+当应用完成这些操作时,您的应用可通过通知或同步数据并将其发送到可穿戴式设备,将处理结果通知给可穿戴式设备。
+
+</p>
+
+  <p class="note"><b>注</b>:<b>wear</b> 模块还包含一个使用
+<a href="{@docRoot}reference/android/support/wearable/view/WatchViewStub.html"><code>WatchViewStub</code></a>的 "Hello World" Activity。
+
+  该类可根据设备屏幕是圆形还是方形扩充布局。
+  <a href="{@docRoot}reference/android/support/wearable/view/WatchViewStub.html"><code>WatchViewStub</code></a>
+ 类是<a href="{@docRoot}training/wearables/apps/layouts.html#UiLibrary">可穿戴式设备支持库</a>提供的 UI 小工具之一。
+
+
+  </p>
+</li>
+
+<h2 id="Install">安装可穿戴式设备应用</h2>
+
+<p>开发时,与手持式设备应用相似,直接将应用安装到可穿戴式设备。使用 Android Studio 上的 <code>adb install</code> 或 <b>Play</b> 按钮。
+</p>
+
+<p>准备向用户发布应用时,将可穿戴式设备应用嵌入手持式设备应用的内部。
+用户从 Google Play 安装手持式设备应用时,已连接的可穿戴式设备会自动接收可穿戴式设备应用。
+</p>
+
+<p class="note"><b>注</b>:自动安装可穿戴式设备应用的功能仅支持发布密钥,如果您使用调试密钥签署应用,将无法自动安装。
+有关如何正确打包可穿戴式设备应用的完整信息,请参阅<a href="{@docRoot}training/wearables/apps/packaging.html">打包可穿戴式设备应用</a>
+
+。</p>
+
+<li>
+要将“Hello World”应用安装到可穿戴式设备,请从 <b>Run/Debug
+configuration</b> 下拉菜单中选择 <b>wear</b>,然后点击 <b>Play</b> 按钮。此时,该 Activity 将出现在可穿戴式设备上并显示“Hello world!”
+
+</li></ol>
+<h2 id="Libraries">包含正确的库</h2>
+
+<p>项目向导将在相应模块的 <code>build.gradle</code> 文件中为您导入正确的依赖项。不过,这些依赖项并不是必需的,因此,请阅读以下说明以了解您是否需要它们:
+
+
+</p>
+
+<b>通知</b>
+<p><a href="{@docRoot}tools/support-library/features.html#v4">Android
+v4 支持库</a>(或 v13,其包含 v4)包含的 API 可扩展手持式设备上的现有通知,使之支持可穿戴式设备。
+</p>
+
+<p>对于仅显示在可穿戴式设备上的通知(意味着这些通知由可穿戴式设备上运行的应用发出),您只需在可穿戴式设备上使用标准框架 API(API 级别 20),并在项目的 <b>mobile</b> 模块中移除支持库依赖项。
+
+
+
+</p>
+
+<b>Wearable Data Layer</b>
+<p>若要通过 Wearable Data Layer API 在可穿戴式设备和手持式设备之间同步和发送数据,您需要最新版本的
+<a href="{@docRoot}google/play-services/setup.html">Google Play 服务</a>。如果您不打算使用这些 API,则从这两个模块中移除依赖项。
+
+</p>
+
+<b>Wearable UI 支持库</b>
+<p>这是非官方库,其包含<a href="{@docRoot}training/wearables/apps/layouts.html#UiLibrary">专为可穿戴式设备设计的 UI 小工具</a>。
+
+我们建议您在应用中使用这些库,因为它们可作为最佳实践的范例,但仍可随时进行更改。
+不过,更新库时,您的应用不会中断,因为这些库已编译到您的应用中。
+要从更新的库中获取新功能,您只需静态链接新版本,然后相应更新您的应用。
+此库仅适用于创建可穿戴式设备应用。
+
+</p>
+
+<p>在后面的课程中,您将学习如何创建专为可穿戴式设备设计的布局,以及如何使用平台支持的各种语音操作。
+</p>
diff --git a/docs/html-intl/intl/zh-tw/design/get-started/principles.jd b/docs/html-intl/intl/zh-tw/design/get-started/principles.jd
index 27cce81..c5d40d4 100644
--- a/docs/html-intl/intl/zh-tw/design/get-started/principles.jd
+++ b/docs/html-intl/intl/zh-tw/design/get-started/principles.jd
@@ -9,13 +9,13 @@
 
 <p>
 當您套用您本身的創意與設計思維時,請考慮這些原則。
-偏離一般做法要帶有目的。
+除非有特定目的,否則請遵循這些原則。
 </p>
 
 <h2 id="enchant-me">使人著迷</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="delight-me">以出乎意外的方式取悅人</h4>
 <p>漂亮的外觀、精心設置的動畫,或時機恰到好處的音效,都是令人感到喜悅的體驗。
@@ -23,7 +23,7 @@
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_delight.png">
 
@@ -32,15 +32,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
-<h4 id="real-objects-more-fun">真實的物件比按鈕和功能表更有趣</h4>
-<p>讓人們可以在您應用程式中直接輕觸和操縱物件,這可減少執行某項工作所需的認知過程,同時在情緒上更令人感到滿足。
+<h4 id="real-objects-more-fun">真實的物件比生硬的按鈕和選單,更能夠引人入勝。</h4>
+<p>您所設計的應用程式應該要能讓使用者可直接輕觸並操縱物件。這將可減少執行工作所需的認知準備,同時也能讓使用者在情緒上更為滿足。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_real_objects.png">
 
@@ -49,16 +49,16 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="make-it-mine">提供個人設定</h4>
-<p>人們喜歡加上個人風格,因為這有助於他們感到自在並握有主控權。提供能令人感受及美觀的預設設定,但也可以考慮使用不會阻礙主要工作卻又好玩的可選用性自訂項目。
+<p>很多人喜歡加上個人風格,因為這有助於他們感到自在並握有主控權。提供實用且美觀的預設設定,但也可以考慮使用不會阻礙主要工作而且有趣的選用自訂項目。
 
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_make_it_mine.png">
 
@@ -67,15 +67,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="get-to-know-me">設法了解使用者</h4>
-<p>隨著時間而學習使用者的偏好。讓人們易於取得之前的選擇,而不是一再詢問他們會做出相同選擇的問題。
+<p>隨著時間而學習使用者的偏好。讓使用者容易取得之前的選擇,而不是一再請他們做出相同的選擇。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_get_to_know_me.png">
 
@@ -84,14 +84,14 @@
 
 <h2 id="simplify-my-life">簡化生活</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="keep-it-brief">保持簡潔</h4>
-<p>以簡單單字組成簡短語句。人們傾向於略過冗長的句子。</p>
+<p>以簡單單字組成簡短語句。多數人傾向於略過冗長的句子。</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_keep_it_brief.png">
 
@@ -100,15 +100,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="pictures-faster-than-words">圖片的傳達效果更勝於言語</h4>
-<p>請考慮使用圖片來解釋想法。圖片能吸引人們的注意力,並比言語更有效率。
+<p>請考慮使用圖片來解釋想法。圖片能吸引目光,並比言語更有效率。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_pictures.png">
 
@@ -117,15 +117,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="decide-for-me">幫使用者決定,但使用者擁有最終決定權</h4>
-<p>做出最好的猜測,先行動,而非先詢問。太多的選擇和決定會讓人們不高興。
+<p>做出最好的猜測,先行動,而非先詢問。太多的選擇和決定會讓使用者覺得很痛苦。
 為防止錯誤,務必允許復原。</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_decide_for_me.png">
 
@@ -134,15 +134,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
-<h4 id="only-show-when-i-need-it">必要時僅顯示使用者需要的東西</h4>
-<p>人們無法承受一次看到太多東西。將工作和資訊細分成小型、易消化的區塊。
-隱藏當下不重要的選項,但在人們需要選擇時要明確指導。</p>
+<h4 id="only-show-when-i-need-it">必要時僅顯示使用者需要的內容</h4>
+<p>多數人無法承受一次看到太多東西。將工作和資訊細分成小型、易消化的區塊。
+隱藏當下不重要的選項,但在需要選擇時要明確指導。</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_information_when_need_it.png">
 
@@ -151,15 +151,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
-<h4 id="always-know-where-i-am">使用者應該總是清楚所在位置</h4>
-<p>給人們信心,知道自己沒有迷路。讓您應用程式中的各處看起來都有獨特性,並使用轉換來顯示畫面之間的關係。
+<h4 id="always-know-where-i-am">使用者應該永遠清楚所在位置</h4>
+<p>給使用者信心,知道自己沒有迷路。讓您應用程式中的各個地方看起來都有獨特性,並使用轉換來顯示畫面之間的關係。
 針對進行中的工作提供回饋。</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_navigation.png">
 
@@ -168,8 +168,8 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="never-lose-my-stuff">別弄丟使用者的東西</h4>
 <p>儲存使用者花時間所建立的資訊,並且讓使用者可從任何地方存取。跨手機、平板電腦和電腦記住設定、個人風格和建立的資訊。
@@ -177,7 +177,7 @@
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_never_lose_stuff.png">
 
@@ -186,15 +186,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="looks-same-should-act-same">如果看起來一樣,就應該有相同的動作</h4>
-<p>讓功能看起來就不一樣,而非變化微妙,這可以協助人們辨別功能差異。在相同輸入環境下,因為模式看起來很類似但卻有不同的動作,請盡量避免使用。
+<p>讓功能看起來就不一樣,而非變化微妙,這可以協助使用者辨別功能差異。在相同輸入環境下,請盡量避免使用看起來很類似但作用卻不同的模式。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_looks_same.png">
 
@@ -203,15 +203,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="interrupt-only-if-important">重要時才打斷</h4>
-<p>就像一位好的私人助理,讓人們免於無關緊要的枝微末節。人們總想集中注意力,除非很重要且具時效性,不然貿然中斷會令人感到費力且沮喪。
+<p>就像一位好的私人助理,應該讓使用者免於無關緊要的枝微末節。使用者總想集中注意力,除非很重要且具時效性,否則貿然中斷會令人感到費力且沮喪。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_important_interruption.png">
 
@@ -220,16 +220,16 @@
 
 <h2 id="make-me-amazing">讓使用者驚艷</h2>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="give-me-tricks">提供使用者各處通用的訣竅</h4>
-<p>當人們能自行弄清楚來龍去脈時是很棒的體驗。運用來自其他 Android 應用程式的視覺模式和肌肉記憶效應,讓使用者更易於學會您的應用程式。
+<p>當使用者能自行弄清楚來龍去脈時是很棒的體驗。運用來自其他 Android 應用程式的視覺模式和肌肉記憶效應,讓使用者更易於學會您的應用程式。
 例如,擺動手勢可能是很好的導覽捷徑。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_tricks.png">
 
@@ -238,16 +238,16 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="its-not-my-fault">不是使用者的錯</h4>
-<p>提示人們更正時要溫和。人們使用您的應用程式時,會想要感受到自已非常明智。如果有什麼不對,請提供明確的復原指示,但不需要使用者明瞭技術細節。如果可以,請盡量在幕後修正。
-
+<p>提示使用者進行更正時要溫和。使用者使用您的應用程式時,不會自覺是笨蛋。
+若有地方出錯,請提供明確的復原指示,但不需要使用者明瞭技術細節。如果可以,請盡量在幕後修正。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_error.png">
 
@@ -256,15 +256,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="sprinkle-encouragement">分段鼓勵</h4>
-<p>將複雜工作細分成更小的步驟,讓使用者可以輕鬆完成。對動作給予回饋,即使只是個微光效果。
+<p>將複雜工作細分成更小的步驟,讓使用者可以輕鬆完成。對動作給予回饋,即使只是細微的動作。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_sprinkle_encouragement.png">
 
@@ -273,16 +273,16 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="do-heavy-lifting-for-me">為使用者處理繁重的工作</h4>
-<p>讓新手也能做出以前從未想像過可以辦到的事情,讓使用者有專家的感覺。例如,組合多個相片效果的捷徑,只要幾個步驟,即可讓業餘照片令人驚艷。
+<p>讓新手也能做到以前從未想像過可以完成的事情,讓使用者覺得自己是專家。例如,組合多個相片效果的捷徑,只要幾個步驟,即可讓業餘照片令人驚艷。
 
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_heavy_lifting.png">
 
@@ -291,15 +291,15 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-7">
+<div class="cols">
+  <div class="col-7">
 
 <h4 id="make-important-things-fast">快速找到重要的功能</h4>
-<p>並非所有的動作都一視同仁。決定應用程式中最重要的部分,並讓使用者易於找到並可迅速使用,例如相機的快門按鈕或音樂播放器的暫停按鈕。
+<p>並非所有的動作都平等。決定應用程式中最重要的部分,並讓使用者易於找到並可迅速使用,例如相機的快門按鈕或音樂播放器的暫停按鈕。
 </p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
 
     <img src="{@docRoot}design/media/principles_make_important_fast.png">
 
diff --git a/docs/html-intl/intl/zh-tw/design/material/index.jd b/docs/html-intl/intl/zh-tw/design/material/index.jd
index 620ee6e..464dc2a 100644
--- a/docs/html-intl/intl/zh-tw/design/material/index.jd
+++ b/docs/html-intl/intl/zh-tw/design/material/index.jd
@@ -1,7 +1,6 @@
-page.title=材料設計
-page.tags=Material, design
-page.type=設計
-page.image=design/material/images/MaterialLight.png
+page.title=Android 材料設計
+page.tags=Material,design, 設計
+page.image=images/cards/design-material-for-android_2x.jpg
 
 @jd:body
 
@@ -41,25 +40,25 @@
 
 <p itemprop="description">材料設計是一份內容廣泛的綜合性指南,引導您跨平台、跨裝置進行視覺、動態和互動的設計。
 Android 現已納入對材料設計應用程式的支援。
-如果要在 Android 應用程式中使用材料設計,請依照<a href="http://www.google.com/design/spec">材料設計規格</a>中定義的指示,並使用
-Android
-5.0 (API 層級 21) 或後續版本中的新元件和新功能。</p>
+如果要在 Android 應用程式中使用材料設計,請依照<a href="http://www.google.com/design/spec">材料設計規格</a>中定義的指示,並使用 Android 5.0 (API 級別 21) 或後續版本中的新元件和新功能。
+
+</p>
 
 <p>Android 提供下列元素,供您打造材料設計應用程式:</p>
 
 <ul>
-  <li>一個新的設計風格</li>
-  <li>用於複雜檢視的小工具</li>
+  <li>新的設計風格</li>
+  <li>用於複雜視圖的小工具</li>
   <li>自訂陰影和動畫的新 API</li>
 </ul>
 
-<p>如需取得如何在 Android 上實作材料設計的詳細資訊,請詳見<a href="{@docRoot}training/material/index.html">使用材料設計建立應用程式</a>。
+<p>如需取得如何在 Android 上實作材料設計的詳細資訊,請參閱<a href="{@docRoot}training/material/index.html">使用材料設計建立應用程式</a>。
 </p>
 
 
 <h3>材料設計風格</h3>
 
-<p>材料設計風格提供您應用程式使用的新樣式、可以讓您設定色板的系統小工具,並針對輕觸回饋與操作行為轉換提供預設動畫。
+<p>材料設計風格提供您應用程式使用的新樣式、可以讓您設定色板的系統小工具,並針對輕觸回饋與操作 Activity 轉換提供預設動畫。
 </p>
 
 <!-- two columns -->
@@ -92,8 +91,8 @@
 <div style="width:700px;margin-top:25px;margin-bottom:20px">
 <div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
   <img src="{@docRoot}design/material/images/list_mail.png" width="500" height="426" />
-  <p>新的 <code>RecyclerView</code> 小工具是 <code>ListView</code>
-更容易插入的版本,支援不同的版面配置類型,並提供效能改善。</p>
+  <p>新的 <code>RecyclerView</code> 小工具是 <code>ListView</code> 更容易插入的版本,支援不同的版面配置類型,並提供效能改善。
+</p>
 </div>
 <div style="float:left;width:250px;margin-right:0px;">
   <img src="{@docRoot}design/material/images/card_travel.png" width="500" height="426" />
@@ -109,12 +108,12 @@
 
 <h3>檢視陰影</h3>
 
-<p>除了 X 和 Y 屬性外,Android 中的檢視現在也有 Z 屬性。
-這個新屬性代表檢視的高度,這會決定:</p>
+<p>除了 X 和 Y 屬性外,Android 中的視圖現在也有 Z 屬性。
+這個新屬性代表視圖的高度,這會決定:</p>
 
 <ul>
-<li>陰影大小:帶有較高 Z 值的檢視會投射更大的陰影。</li>
-<li>繪製順序:具有較高 Z 值的檢視會顯示在其他檢視之上。</li>
+<li>陰影大小:Z 值較高的視圖會投射更大的陰影。</li>
+<li>繪製順序:Z 值較高的視圖會顯示在其他視圖之上。</li>
 </ul>
 
 <div style="width:290px;margin-left:35px;float:right">
@@ -130,39 +129,38 @@
   </div>
 </div>
 
-<p>如需取得詳細資訊,請參閱<a href="{@docRoot}training/material/shadows-clipping.html">定義陰影和裁剪檢視</a>。
+<p>如需詳細資訊,請參閱<a href="{@docRoot}training/material/shadows-clipping.html">定義陰影和裁剪視圖</a>。
 </p>
 
 
 <h3>動畫</h3>
-
-<p>新的動畫 API 可針對 UI 控制項的輕觸回饋、檢視狀態中的變更,以及行為轉換,讓您建立自訂動畫。
+<p>新的動畫 API 可針對 UI 控制項的輕觸回饋、視圖狀態中的變更,以及操作行為轉換,讓您建立自訂動畫。
 </p>
 
 <p>這些 API 讓您可以:</p>
 
 <ul>
 <li style="margin-bottom:15px">
-回應您檢視中有<strong>輕觸回饋</strong>動畫的輕觸事件。
+回應您視圖中有<strong>輕觸回饋</strong>動畫的輕觸事件。
 </li>
 <li style="margin-bottom:15px">
-隱藏和顯示有<strong>循環顯示</strong>動畫的檢視。
+隱藏和顯示有<strong>循環顯示</strong>動畫的視圖。
 </li>
 <li style="margin-bottom:15px">
-在有自訂<strong>行為轉換</strong>動畫的行為間切換。
+在包含自訂<strong>操作行為轉換</strong>動畫的行為間切換。
 </li>
 <li style="margin-bottom:15px">
 使用<strong>曲線動作</strong>建立更自然的動畫。
 </li>
 <li style="margin-bottom:15px">
-在帶有<strong>檢視狀態變更</strong>動畫的一個或多個檢視屬性中變更動畫。
+在包含<strong>視圖狀態變更</strong>動畫的一個或多個視圖屬性中變更動畫。
 </li>
 <li style="margin-bottom:15px">
-在檢視狀態變更間,顯示<strong>狀態清單可繪項目</strong>中的動畫。
+在視圖狀態變更之間,顯示<strong>狀態清單可繪項目</strong>中的動畫。
 </li>
 </ul>
 
-<p>輕觸回饋動畫會內建於數個標準檢視中,例如按鈕等。新 API 可讓您自訂這些動畫,並將其新增至您的自訂檢視中。
+<p>輕觸回饋動畫會內建於數個標準視圖中,例如按鈕等。新 API 可讓您自訂這些動畫,並將其新增至您的自訂視圖中。
 </p>
 
 <p>如需詳細資訊,請參閱<a href="{@docRoot}training/material/animations.html">定義自訂動畫</a>。
@@ -176,7 +174,7 @@
 <ul>
 <li><strong>矢量可繪項目</strong>可以調整大小,但又不會喪失定義,最適合於應用程式中的單色圖示。
 </li>
-<li><strong>可繪項目著色</strong>可讓您在執行階段將點陣圖定義為 Alpha 遮罩,並以一個顏色進行著色。
+<li><strong>繪製著色</strong>可讓您在執行階段將點陣圖定義為 Alpha 遮罩,並以一個顏色進行著色。
 </li>
 <li><strong>顏色提取</strong>可讓您自動從點陣圖影像中提取顯著顏色。
 </li>
diff --git a/docs/html-intl/intl/zh-tw/design/patterns/compatibility.jd b/docs/html-intl/intl/zh-tw/design/patterns/compatibility.jd
new file mode 100644
index 0000000..b65b90b
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/design/patterns/compatibility.jd
@@ -0,0 +1,70 @@
+page.title=向下相容性
+page.tags="support"
+page.metaDescription=有關 Android 4.x 改寫針對舊硬體和 OS 版本設計的 UI 之備註。
+@jd:body
+
+<a class="notice-developers" href="{@docRoot}training/basics/supporting-devices/index.html">
+  <div>
+    <h3>開發人員文件</h3>
+    <p>支援不同裝置</p>
+  </div>
+</a>
+
+<p>Android 3.0 主要更新包含:</p>
+<ul>
+<li>淘汰導覽硬體鍵 (返回、選單、搜尋、首頁),以虛擬控制按鍵取代實體導覽按鍵 (返回、首頁、最近使用記錄)。
+</li>
+<li>健全的動作列選單使用模式。</li>
+</ul>
+<p>Android 4.0 版本將平板電腦的變更套用於手機平台。</p>
+
+<h2 id="older-hardware">針對舊版本的硬體及應用程式,改寫 Android 4.0</h2>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>使用虛擬導覽控制鍵的手機</h4>
+<p>專為 Android 3.0 及之後版本設計的應用程式會在動作列中顯示動作。擠不進動作列或重要性不足的動作,會顯示在動作溢位中。
+
+</p>
+<p>使用者可輕觸動作列中的動作溢位以存取它。</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_virtual_nav.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>使用實體導覽鍵的手機</h4>
+<p>使用實體導覽鍵的 Android 手機不會在螢幕底部顯示虛擬導覽列。
+如要存取動作溢位,請使用選單硬體按鍵。所產生的動作彈出式選單的風格與先前範例相同,但會顯示在螢幕頂部。
+</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_physical_buttons.png">
+
+  </div>
+</div>
+
+<div class="cols">
+  <div class="col-6">
+
+<h4>在使用虛擬導覽控制鍵的手機上執行舊版應用程式</h4>
+<p>當您在具備虛擬導覽控制鍵的手機上,執行為 Android 2.3 或之前版本所設計的應用程式時,動作溢位控制會顯示在虛擬導覽列的右側。
+您可以輕觸控制鍵,以顯示傳統 Android 選單風格的應用程式動作。
+</p>
+
+  </div>
+  <div class="col-7">
+
+    <img src="{@docRoot}design/media/compatibility_legacy_apps.png">
+
+  </div>
+</div>
diff --git a/docs/html-intl/intl/zh-tw/design/patterns/confirming-acknowledging.jd b/docs/html-intl/intl/zh-tw/design/patterns/confirming-acknowledging.jd
index ac8975f..a92a017 100644
--- a/docs/html-intl/intl/zh-tw/design/patterns/confirming-acknowledging.jd
+++ b/docs/html-intl/intl/zh-tw/design/patterns/confirming-acknowledging.jd
@@ -2,14 +2,14 @@
 page.tags=dialog,toast,notification
 @jd:body
 
-<p>在某些情況下,當使用者在您應用程式中呼叫一個動作時,最好是透過文字來「確認」(confirm) <em></em>或「確認完成」<em></em>(acknowledge)。</p>
+<p>在某些情況下,當使用者在您應用程式中呼叫一個動作時,最好是透過文字來「確認」<em></em>或「確認完成」<em></em>。</p>
 
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <img src="{@docRoot}design/media/confirm_ack_confirming.png">
     <p><strong>確認</strong>是要求使用者確認真的要進行剛剛呼叫的動作。在某些情況下,確認訊息出現時會伴隨警告或需要使用者考量是否採取動作的相關重要資訊。</p>
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <img src="{@docRoot}design/media/confirm_ack_acknowledge.png">
     <p><strong>確認完成</strong>是顯示文字,讓使用者知道已經完成剛剛呼叫的動作。這會排除系統正在採取之隱式作業的不確定性。在某些情況下,確認完成出現時會伴隨復原動作的選項。</p>
   </div>
@@ -22,14 +22,14 @@
 <img src="{@docRoot}design/media/confirm_ack_flowchart.png">
 
 <h2>確認</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>範例:Google Play 書籍</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_books.png">
     <p>在此範例中,使用者已要求從其 Google Play 媒體庫中刪除一本書籍。顯示<a href="{@docRoot}design/building-blocks/dialogs.html#alerts">警示</a>來確認此動作,因為使用者必須了解將不再針對任何裝置提供這本書籍。</p>
     <p>設計一個確認的對話方塊時,要讓標題具有意義就必須回應要求的動作。</p>
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <h4>範例:Android Beam</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_beam.png">
     <p>確認不一定要以具有兩個按鈕的警示來呈現。在啟動 Android Beam 之後,會提示使用者輕觸要共用的內容 (在此範例中是一張照片)。如果他們決定不進行,只要移開他們的電話即可。</p>
@@ -37,15 +37,15 @@
 </div>
 
 <h2>確認完成</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>範例:已儲存放棄的 Gmail 草稿</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_draftsave.png">
-    <p>在此範例中,如果使用者從 Gmail 撰寫畫面返回,可能會發生預期外的狀況:會自動儲存目前的草稿。以快顯通知 (toast) 形式出現的確認完成,會讓使用者明瞭此情況。確認完成會在幾秒鐘後淡出。</p>
+    <p>在此範例中,如果使用者從 Gmail 撰寫畫面返回,可能會發生預期外的狀況:會自動儲存目前的草稿。以快顯通知形式出現的確認完成,會讓使用者明瞭此情況。確認完成會在幾秒鐘後淡出。</p>
     <p>在此並不合適使用復原功能,因為儲存動作是由應用程式發起,而非使用者。瀏覽至草稿清單,就可以方便且快速地繼續撰寫。</p>
 
   </div>
-  <div class="layout-content-col span-6">
+  <div class="col-6">
     <h4>範例:已刪除 Gmail 會話群組</h4>
     <img src="{@docRoot}design/media/confirm_ack_draft_deleted.png">
     <p>使用者從 Gmail 清單中刪除一個會話群組後,會出現確認完成訊息,並提供一個復原選項。確認完成會持續出現,直到使用者採取不相關的動作,例如捲動清單。</p>
@@ -53,14 +53,14 @@
 </div>
 
 <h2>無「確認」或「確認完成」</h2>
-<div class="layout-content-row">
-  <div class="layout-content-col span-6">
+<div class="cols">
+  <div class="col-6">
     <h4>範例:+1 中</h4>
     <img style="padding: 33px 0 30px;" src="{@docRoot}design/media/confirm_ack_ex_plus1.png">
     <p><strong>確認並非必要</strong>。如果使用者不小心按了 + 1 按鈕,這並不是什麼大問題。他們可以再次輕觸按鈕,復原此動作。</p>
-    <p><strong>確認完成並非必要</strong>。使用者將會看到 +1 彈起並變成紅色。這是個非常明確的訊號。</p>
+    <p><strong>確認完成並非必要</strong>。使用者將會看到 +1 按鈕彈起並變成紅色。這是個非常明確的訊號。</p>
   </div>
-  <div class="layout-content-col span-7">
+  <div class="col-7">
     <h4>範例:從主螢幕移除應用程式</h4>
     <img src="{@docRoot}design/media/confirm_ack_ex_removeapp.png">
     <p><strong>確認並非必要</strong>。這是特意設計的動作:使用者必須拖曳項目放到相對較大且隔離的目標上。因此極不可能發生意外狀況。但如果使用者後悔所做的決定,只需幾秒鐘,就可以恢復原狀。</p>
diff --git a/docs/html-intl/intl/zh-tw/design/patterns/navigation.jd b/docs/html-intl/intl/zh-tw/design/patterns/navigation.jd
index db160c2..a568cb1d 100644
--- a/docs/html-intl/intl/zh-tw/design/patterns/navigation.jd
+++ b/docs/html-intl/intl/zh-tw/design/patterns/navigation.jd
@@ -10,71 +10,71 @@
   </div>
 </a>
 
-<p itemprop="description">一致的導覽是整體使用者體驗的必備組成。基本導覽的行為若不一致又令人意外,是最令使用者感到更沮喪的狀況。
+<p itemprop="description">一致的導覽是整體使用者體驗的要件。以不一致且非預期方式運作的基本導覽行為最令使用者感到沮喪。
 Android 3.0 已將重大變更導入全域的導覽行為中。
-完全遵循 [返回] 及 [上一層] 的方針,會讓使用者感到您的應用程式導覽既可靠又符合預期。
+仔細遵循以下指導方針原則以設定 [返回] 及 [上一層] 按鈕,讓您的應用程式更可靠且符合預期。
 </p>
-<p>Android 2.3 和更早版本依賴系統 [返回]
-<em></em>按鈕,以支援應用程式內的導覽。在 Android 3.0 導入動作列之後,出現第二個導覽機制:[上一層]
-<em></em>按鈕,由應用程式圖示和左指符號組成。</p>
+<p>Android 2.3 及之前版本均使用 [返回]<em></em> 按鈕在應用程式中進行導覽。
+在 Android 3.0 導入導覽列功能,使用者有了另一種導覽方式:[上一層]<em></em> 按鈕,由應用程式圖示及左指插入號組成。
+</p>
 
 <img src="{@docRoot}design/media/navigation_with_back_and_up.png">
 
-<h2 id="up-vs-back">[上一層] vs.[返回]</h2>
+<h2 id="up-vs-back">[返回] 及 [上一層]</h2>
 
-<p>[上一層] 按鈕用於在畫面間有階層關係的應用程式中導覽。
-例如,如果畫面 A
-顯示項目清單,然後選擇其中一個項目導致進入畫面 B (更詳細呈現該項目),那麼畫面 B 應該提供 [上一層] 按鈕,以便返回畫面 A。
+<p>[上一層] 按鈕用於在應用程式中,根據畫面之間的階層關係進行導覽。
+例如,如果畫面 A 顯示項目清單,然後選擇其中一個項目導致進入畫面 B (更詳細呈現該項目),那麼畫面 B 應該提供 [上一層] 按鈕,以便返回畫面 A。
+
 </p>
-<p>如果畫面是在應用程式中的最頂端 (亦即應用程式的首頁),則不應該會有 [上一層]按鈕。
+<p>如果畫面是在應用程式中的最頂端 (亦即應用程式的首頁),則不應該會有 [上一層] 按鈕。
 </p>
 
 <p>系統 [返回] 按鈕用於逆時間順序導覽,透過歷程記錄,可以經歷使用者最近使用過的畫面。
 [返回] 通常基於畫面之間的暫時關係,而非應用程式的階層。
 </p>
 
-<p>當先前檢視的畫面也是目前畫面的階層父項時,按下
-[返回] 按鈕和按下 [上一層] 按鈕效果相同 &mdash; 這是常見的狀況。
-然而,與 [上一層] 按鈕不同的是 (該按鈕可以確保使用者仍停留在您的應用程式內):[返回]
-按鈕可以讓使用者返回主畫面,或甚至是不同的應用程式。</p>
+<p>當先前檢視的畫面也是目前畫面的階層父項時,按下 [返回] 按鈕和按下 [上一層] 按鈕效果相同 &mdash; 這是常見的狀況。
+
+然而,與 [上一層] 按鈕不同的是 (該按鈕可以確保使用者仍停留在您的應用程式內):[返回] 按鈕可以讓使用者返回主螢幕,或甚至是不同的應用程式。
+</p>
 
 <img src="{@docRoot}design/media/navigation_up_vs_back_gmail.png">
 
 <p>[返回] 按鈕還支援幾個間接關聯畫面對畫面導覽的行為:
 </p>
 <ul>
-<li>關閉浮動視窗 (對話、快顯)</li>
+<li>關閉浮動視窗 (對話框、快顯)</li>
 <li>關閉內容相關的動作列,並從選取項目移除醒目顯示</li>
 <li>隱藏畫面鍵盤 (IME)</li>
 </ul>
 <h2 id="within-app">在應用程式內導覽</h2>
 
-<h4>導覽至具有多重入口的畫面</h4>
-<p>有時候,一個畫面在應用程式的階層中並沒有嚴謹的位置,而且可以從多個入口存取 &mdash; 例如可以從您應用程式中任何其他畫面存取的設定畫面。在這種情況下,[上一層]
-按鈕應該選擇返回導引至此畫面的前一畫面,這個行為與 [返回] 相同。
+<h4>導覽至具有多個進入點的畫面</h4>
+<p>有時畫面在應用程式中的階層並不明確,可從多個入口點進入畫面 &mdash; 例如,可從應用程式中的任何其他畫面進入的設定畫面。
 
+在這種情況下,應按下 [上一層] 按鈕回到之前的參照畫面,操作方式與 [返回] 按鈕相同。
 </p>
-<h4>在畫面內變更檢視</h4>
-<p>變更畫面的檢視選項並不會變更 [上一層] 或 [返回] 的行為:畫面仍維持在應用程式階層中的相同位置,並不會建立新的導覽歷程記錄。
+<h4>在畫面內變更視圖</h4>
+<p>變更畫面的視圖選項並不會變更 [上一層] 或 [返回] 的行為:畫面仍維持在應用程式階層中的相同位置,並不會建立新的導覽歷程記錄。
 </p>
-<p>這類檢視變更的範例如下:</p>
+<p>這類視圖變更的範例如下:</p>
 <ul>
-<li>使用標籤和/或左與右滑動來切換檢視</li>
-<li>使用下拉清單 (亦即折疊標籤) 切換檢視</li>
+<li>使用標籤和/或左與右滑動來切換視圖</li>
+<li>使用下拉清單 (亦即折疊標籤) 切換視圖</li>
 <li>篩選清單</li>
 <li>對清單排序</li>
 <li>變更顯示特性 (如縮放)</li>
 </ul>
 <h4>在同層級畫面間導覽</h4>
-<p>當您的應用程式支援從項目清單導覽至項目之一的詳細檢視時,使用者通常會想使用方向導覽功能,以便從該項目導覽至清單中的前一個或後一個項目。
+<p>當您的應用程式支援從項目清單導覽至項目之一的詳細視圖時,使用者通常會想使用方向導覽功能,以便從該項目導覽至清單中的前一個或後一個項目。
 
 例如在 Gmail 中,可以很容易從會話群組向左或右滑動,方便檢視相同「收件匣」中的較新或舊會話群組。
-就像在一個畫面中變更檢視時,這類導覽不會變更 [上一層] 或 [返回] 的行為。
+就像在一個畫面中變更視圖時,這類導覽不會變更 [上一層] 或 [返回] 的行為。
 </p>
 
 <img src="{@docRoot}design/media/navigation_between_siblings_gmail.png">
 
-<p>然而有一個明顯的例外是,在不被引用清單綁在一起的相關詳細資料檢視之間瀏覽時 &mdash; 例如在 Play 商店中於相同開發者的不同應用程式之間瀏覽時,或是在相同演出者的專輯間瀏覽時。
+<p>然而有一個明顯的例外是,在未與引用清單繫結在一起的相關詳細資料視圖之間瀏覽時 &mdash; 例如在 Play 商店中於相同開發者的不同應用程式之間瀏覽時,或是在相同演出者的專輯間瀏覽時。
 
 在這些情況下,瀏覽每個連結都會產生歷程記錄,這會造成 [返回] 按鈕會經歷每個先前檢視過的畫面。
 [上一層] 應該會繼續略過這些相關的畫面,並導覽到最近檢視過的容器畫面。
@@ -82,16 +82,16 @@
 
 <img src="{@docRoot}design/media/navigation_between_siblings_market1.png">
 
-<p>基於您對詳細資料檢視的瞭解,您有能力讓 [上一層] 行為甚至變得更聰明。
+<p>基於您對詳細資料視圖的瞭解,您有能力讓 [上一層] 行為甚至變得更聰明。
 再延伸說明之前提及的 Play 商店範例,想像使用者已從最近檢視的「書籍」導覽至「電影」改編的詳細資料。
-在這種情況下,[上一層]
-可以返回到使用者之前沒有導覽過的上層容器 (電影)。</p>
+在這種情況下,[上一層] 可以返回到使用者之前沒有導覽過的上層容器 (電影)。
+</p>
 
 <img src="{@docRoot}design/media/navigation_between_siblings_market2.png">
 
-<h2 id="into-your-app">透過「主畫面小工具」和「通知」,導覽至您的應用程式</h2>
+<h2 id="into-your-app">透過「主螢幕小工具」和「通知」,導覽至您的應用程式</h2>
 
-<p>您可以使用主畫面小工具或通知,協助您直接導覽至深入您應用程式階層中的畫面。
+<p>您可以使用主螢幕小工具或通知,協助您直接導覽至深入您應用程式階層中的畫面。
 例如,Gmail 的「收件匣」小工具和新郵件通知,都可以略過「收件匣」畫面,將使用者直接帶到會話群組檢視之中。
 </p>
 
@@ -100,7 +100,7 @@
 <ul>
 <li>如果目的地畫面通常是透過您應用程式中的一個特定畫面到達,那麼 [上一層] 應該要導覽至該畫面。<em></em>
 </li>
-<li>否則<em></em>, [上一層] 應該導覽至您應用程式的最頂端 (「主」) 畫面。</li>
+<li>否則<em></em>, [上一層] 應該導覽至您應用程式的最頂端 (「主」) 螢幕。</li>
 </ul>
 
 <p>就 [返回] 按鈕而言,您應讓導覽更符合預期,方法是在工作的返回堆疊中,插入前往應用程式最頂端畫面的完整向上導覽路徑。
@@ -108,30 +108,30 @@
 
 </p>
 
-<p>舉例來說,Gmail 的主畫面小工具有一個按鈕,可以直接往下進入撰寫畫面。
-來自撰寫畫面的 [上一層] 或 [返回] 按鈕,會將使用者帶到「收件匣」中,而此處的 [返回] 按鈕則可繼續前往至「主畫面」。
+<p>舉例來說,Gmail 的主螢幕小工具有一個按鈕,可以直接往下進入撰寫畫面。
+來自撰寫畫面的 [上一層] 或 [返回] 按鈕,會將使用者帶到「收件匣」中,而此處的 [返回] 按鈕則可繼續前往至「主螢幕」。
 </p>
 
 <img src="{@docRoot}design/media/navigation_from_outside_back.png">
 
 <h4>間接通知</h4>
 
-<p>當您的應用程式需要同時呈現多個事件的資訊時,可以使用單一通知,引導使用者進入一個插頁畫面。
-此畫面會摘要這些事件,並提供路徑,讓使用者可以深入應用程式之中。這種風格的通知稱為「間接通知」<em></em>。
-
+<p>若應用程式必須同時呈現多個事件,可利用單一通知,引導使用者進入插頁畫面。
+插頁畫面會概述所有事件,並提供讓使用者可以深入應用程式之中的路徑。
+這種通知方式稱為<em>間接通知</em>。
 </p>
 
 <p>與標準 (直接) 通知不同的是,從間接通知的插頁畫面按下 [返回],會讓使用者返回至通知觸發的起點 &mdash; 無其他畫面會插入至返回堆疊之中。
 
-一旦使用者從插頁畫面繼續進入應用程式之後,[上一層]
-與 [返回] 會如上所述,其行為就像針對標準通知一樣:在應用程式內導覽,而非返回插頁畫面。
+一旦使用者從插頁畫面繼續進入應用程式之後,[上一層] 與 [返回] 會如上所述,其行為就像針對標準通知一樣:在應用程式內導覽,而非返回插頁畫面。
+
 </p>
 
 <p>例如,假設 Gmail 中的使用者收到來自「行事曆」的間接通知。輕觸這個通知會打開插頁畫面,而此畫面會顯示數個不同事件的提醒。
 
 從插頁畫面輕觸 [返回],會讓使用者返回至 Gmail。輕觸特定事件會將使用者帶離插頁畫面,並進入完整的「行事曆」應用程式,顯示事件的詳細資料。
 
-從事件詳細資料中,[上一層] 和 [返回] 會導覽至「行事曆」的最頂層檢視。</p>
+從事件詳細資料中,[上一層] 和 [返回] 會導覽至「行事曆」的最頂層視圖。</p>
 
 <img src="{@docRoot}design/media/navigation_indirect_notification.png">
 
@@ -139,75 +139,75 @@
 
 <p>快顯通知<em></em>會略過通知匣,直接出現在使用者面前。
 這不常使用,<strong>應該要保留在需要適時回應,以及必須中斷使用者前後關聯動作的時候</strong>。
-例如,Talk
-就使用這種風格,用來提示使用者有朋友邀請加入視訊聊天,而且此邀請會在幾秒之後自動過期。
+例如,Talk 就使用這種風格,用來提示使用者有朋友邀請加入視訊聊天,而且此邀請會在幾秒之後自動過期。
+
 </p>
 
 <p>就導覽行為而言,快顯通知緊接著間接通知插頁畫面的行為。
-[返回] 會關閉快顯通知。如果使用者從快顯導覽進入通知應用程式,[上一層]
-和 [返回] 會遵循標準通知的規則,只在應用程式內導覽。
+[返回] 會關閉快顯通知。如果使用者從快顯導覽進入通知應用程式,[上一層] 和 [返回] 會遵循標準通知的規則,只在應用程式內導覽。
+
 </p>
 
 <img src="{@docRoot}design/media/navigation_popup_notification.png">
 
 <h2 id="between-apps">在應用程式間導覽</h2>
 
-<p>Android 系統的基本優點之一是應用程式互相啟動的能力,讓使用者能夠直接從一個應用程式導覽至另一個應用程式。
-例如,需要擷取一張相片的應用程式可以啟動「相機」應用程式,而此應用程式會將相片傳回引用的應用程式。開發人員可以輕鬆利用其他應用程式的程式碼,而使用者在經常執行的動作中可以享受一致性的體驗,這對雙方都是一大好處。
+<p>Android 系統的主要優勢在於應用程式之間可彼此互連,使用者可從一個應用程式中直接導覽至另一個應用程式。
+舉例來說,需要拍攝相片的的應用程式,可開啟「相機」應用程式,然後再返回原始參照應用程式中。
 
-
+這項功能不僅使開發人員可輕鬆地利用其他應用程式的程式碼,還可讓使用者透過一致的作業方式享受常用功能。
 
 </p>
 
-<p>要瞭解應用程式對應用程式的導覽,重要的是要瞭解以下討論的 Android 架構行為。
+<p>欲了解應用程式對應用程式的導覽行為,必須先了解以下介紹的 Android 架構行為。
 </p>
 
-<h4>活動、工作和意圖</h4>
+<h4>Activity、工作和意圖</h4>
 
-<p>在 Android 中,<strong>活動</strong>是一個應用程式元件,定義了資訊畫面,以及使用者可以執行的所有關聯動作。
-您的應用程式是個活動的集合,包括您可以建立及您能從其他應用程式重複使用的活動。
+<p>在 Android 中,<strong>Activity</strong> 是一個應用程式元件,定義了資訊畫面,以及使用者可以執行的所有關聯動作。
+您的應用程式是個 Activity 的集合,包括您可以建立及您能從其他應用程式重複使用的 Activity。
 </p>
 
-<p><strong>工作</strong>是使用者遵循以達到目標的一系列活動。單一工作可以利用來自單一應用程式的活動,或是汲取數個不同應用程式的活動。
+<p><strong>工作</strong>是使用者遵循以達到目標的一系列 Activity。單一工作可以利用來自單一應用程式的 Activity,或是汲取數個不同應用程式的 Activity。
 
 </p>
 
-<p><strong>意向</strong>是指應用程式所發出想要另一套應用程式協助執行某動作訊號的機制。
-應用程式的活動可指示其可回應哪些意向。
-針對如「共用」等常見意向,使用者可能已安裝許多可以滿足此要求的應用程式。
+<p><strong>意圖</strong>是指應用程式所發出想要另一套應用程式協助執行某動作訊號的機制。
+應用程式的 Activity 可指示其可回應哪些意圖。
+針對如「共用」等常見意圖,使用者可能已安裝許多可以滿足此要求的應用程式。
 </p>
 
-<h4>範例:在應用程式間導覽,以支援共用</h4>
+<h4>例如:在多個應用程式中導覽以支援共用功能</h4>
 
-<p>要理解活動、工作和意向如何攜手合作,請思考應用程式如何讓使用者使用另一套應用程式來共用內容。例如,從「主」畫面啟動 Play 商店應用程式,開始新工作 A (見下圖)。
-
-在導覽經歷 Play 商店,並輕觸一本促銷的書籍以查看詳細資料後,使用者仍會停留在相同工作中,並透過新增行為延伸工作。
-觸發「共用」動作會提示使用者一個對話框,列出已註冊可用來處理「共用」意向的每個活動 (來自不同的應用程式)。
+<p>要了解使用活動、工作和意圖如何相互作用,必須先考慮一個應用程式如何讓使用者利用另一個應用程式共用內容。
+例如,在首頁中開啟 Play 商店應用程式,並開始工作 A (如下所示)。
+使用者在 Play 商店應用程式中結束導覽後,輕觸促銷的書籍以查看細節,這時仍會停留在相同的工作中,同時新增活動以延伸功能。
+觸發「共用」動作會提示使用者一個對話框,列出已註冊可用來處理「共用」意圖的每個 Activity (來自不同的應用程式)。
 
 </p>
 
 <img src="{@docRoot}design/media/navigation_between_apps_inward.png">
 
-<p>當使用者選擇透過 Gmail 共用,Gmail
-的撰寫活動會被新增為工作 A 的延續 &mdash; 而不會建立新工作。如果 Gmail 有本身的工作正在背景執行,這並不會影響該工作。
+<p>當使用者選擇透過 Gmail 共用,Gmail 的撰寫 Activity 會被新增為工作 A 的延續 &mdash; 而不會建立新工作。
+如果 Gmail 有本身的工作正在背景執行,這並不會影響該工作。
 </p>
 
-<p>從撰寫活動中,傳送訊息或輕觸 [返回] 按鈕,會讓使用者返回至書籍詳細資料的活動。
-繼續輕觸 [返回] 則會經由 Play 商店往回導覽,最終到達「主畫面」。
+<p>從撰寫 Activity 中,傳送訊息或輕觸 [返回] 按鈕,會讓使用者返回至書籍詳細資料的 Activity。
+繼續輕觸 [返回] 則會經由 Play 商店往回導覽,最終到達「主螢幕」。
 </p>
 
 <img src="{@docRoot}design/media/navigation_between_apps_back.png">
 
-<p>然而,透過輕觸撰寫行為的 [上一層],代表使用者指明停留在 Gmail 的意願。
-Gmail 的會話群組清單活動會隨即出現,並針對該活動建立一個新的工作 B。新工作的最後根源都是「主畫面」,所以從會話群組輕觸 [返回] 會返回至該處。
+<p>然而,透過輕觸撰寫 Activity 的 [上一層],代表使用者指明停留在 Gmail 的意願。
+Gmail 的會話群組清單 Activity 會隨即出現,並針對該 Activity 建立一個新的工作 B。新工作的最後根源都是「主螢幕」,所以從會話群組輕觸 [返回] 會返回至該處。
 </p>
 
 <img src="{@docRoot}design/media/navigation_between_apps_up.png">
 
-<p>工作 A 仍然存在背景之中,而使用者可能會在稍後返回 (例如,透過「最近」畫面)。
+<p>工作 A 仍然存在背景之中,而使用者可能會在稍後返回 (例如,透過「最近使用記錄」畫面)。
 如果 Gmail 在背景正在執行自己的工作,則其會被工作 B 取代 &mdash; 並捨棄之前的前後關係,而就使用者的新目標。
 </p>
 
-<p>當您的應用程式註冊來處理具有深入應用程式階層活動的意向時,請參考<a href="#into-your-app">透過主畫面視窗小工具和通知,導覽至您的應用程式</a>,取得如何指定 [上一層] 導覽的指導方針。
+<p>當您的應用程式註冊來處理具有深入應用程式階層 Activity 的意圖時,請參考<a href="#into-your-app">透過主螢幕小工具和通知,導覽至您的應用程式</a>,取得如何指定 [上一層] 導覽的指導方針。
 
 </p>
diff --git a/docs/html-intl/intl/zh-tw/guide/components/activities.jd b/docs/html-intl/intl/zh-tw/guide/components/activities.jd
new file mode 100644
index 0000000..ea09349
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/components/activities.jd
@@ -0,0 +1,756 @@
+page.title=Activity
+page.tags=Activity,意圖
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>本文件內容</h2>
+<ol>
+  <li><a href="#Creating">建立 Activity</a>
+    <ol>
+      <li><a href="#UI">實作使用者介面</a></li>
+      <li><a href="#Declaring">在宣示說明中宣告 Activity</a></li>
+    </ol>
+  </li>
+  <li><a href="#StartingAnActivity">啟動 Activity</a>
+    <ol>
+      <li><a href="#StartingAnActivityForResult">啟動 Activity 以取得結果</a></li>
+    </ol>
+  </li>
+  <li><a href="#ShuttingDown">關閉 Activity</a></li>
+  <li><a href="#Lifecycle">管理 Activity 生命週期</a>
+    <ol>
+      <li><a href="#ImplementingLifecycleCallbacks">實作生命週期回呼</a></li>
+      <li><a href="#SavingActivityState">儲存 Activity 狀態</a></li>
+      <li><a href="#ConfigurationChanges">處理設定變更</a></li>
+      <li><a href="#CoordinatingActivities">協調 Activity</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>重要類別</h2>
+<ol>
+  <li>{@link android.app.Activity}</li>
+</ol>
+
+<h2>另請參閱</h2>
+<ol>
+  <li><a href="{@docRoot}guide/components/tasks-and-back-stack.html">工作和返回堆疊</a>
+</li>
+</ol>
+
+</div>
+</div>
+
+
+
+<p>{@link android.app.Activity} 是提供畫面的應用程式元件,使用者可以與此畫面互動以執行動作,例如撥號、拍照、傳送電子郵件或檢視地圖。
+
+每個 Activity 都會有專屬視窗,用於繪製其使用者介面。視窗一般會佔滿螢幕,但也可能小於螢幕或在其他視窗上方浮動。
+
+</p>
+
+<p> 應用程式通常由多個 Activity 組成,這些 Activity 之間的繫結鬆散。
+一般來說,應用程式中的某個 Activity 會指定為「主要」Activity。使用者第一次啟動應用程式時,會將此 Activity 向使用者顯示。
+然後,每個 Activity 可以啟動另一個 Activity,以執行不同的動作。
+每次啟動新的 Activity 時,之前的 Activity 會停止,但系統將該 Activity 保留在堆疊中(即「返回堆疊」)。
+
+新的 Activity 啟動時會推送至返回堆疊,然後取得使用者焦點。
+返回堆疊遵循基本的「後進先出」堆疊機制,因此,使用者完成目前的 Activity,按下 [返回] 按鈕<em></em>時,目前的 Activity 會從堆疊被推出 (並終止),然後繼續之前的 Activity。
+
+(返回堆疊在<a href="{@docRoot}guide/components/tasks-and-back-stack.html">工作和返回堆疊</a>文件中,有更詳細的說明)。
+
+</p>
+
+<p>Activity 因啟動新的 Activity 而停止時,Activity 的生命週期回呼方法會通知此狀態的變更。由於 Activity 狀態的變更 &mdash; 可能是系統建立、停止、繼續或終止 Activity 時 &mdash; Activity 會收到數個回呼方法,而且每個回呼都提供您執行適合該次狀態變更的特定工作機會。
+
+
+
+
+例如,停止時,您的 Activity 應釋放任何大型物件,例如網路或資料庫連線。
+Activity 繼續時,您可以重新取得必要資源,並繼續之前中斷的動作。
+這些狀態轉換都是 Activity 生命週期的一部分。
+</p>
+
+<p>本文件的其他部分會討論建置和使用 Activity 的基本概念,包括完整討論 Activity 生命週期的運作方式,讓您可以正確地管理各種 Activity 狀態之間的轉換。
+
+</p>
+
+
+
+<h2 id="Creating">建立 Activity</h2>
+
+<p>如要建立 Activity,您必須建立 {@link android.app.Activity} 的子類別 (或它現有的子類別)。
+在您的子類別中,您需要實作回呼方法,當 Activity 在其生命週期的各種狀態之間轉換時,系統可以呼叫此回呼方法。例如,Activity 建立、停止、繼續或終止時。
+
+最重要的兩個回呼方法如下:
+</p>
+
+<dl>
+  <dt>{@link android.app.Activity#onCreate onCreate()}</dt>
+  <dd>您必須實作此方法。系統建立您的 Activity 時會呼叫此方法。
+在您的實作中,應該初始化 Activity 的基本元件。
+
+    最重要的是,您必須在這裡呼叫 {@link android.app.Activity#setContentView
+ setContentView()},才能定義 Activity 使用者介面的版面配置。</dd>
+  <dt>{@link android.app.Activity#onPause onPause()}</dt>
+  <dd>系統呼叫此方法做為使用者離開您的 Activity 的第一個指標 (但並非一定表示該 Activity 遭到終止)。
+您通常需要透過這個方法提交要在目前的使用者工作階段以外保留的任何變更 (原因在於使用者可能不會返回)。
+
+</dd>
+</dl>
+
+<p>還有一些您應使用的其他生命週期回呼方法,以便提供 Activity 之間流暢的使用者體驗,並處理讓您的 Activity 停止、甚至終止的非預期中斷。
+
+如需所有生命週期回呼方法的相關資訊,請參閱<a href="#Lifecycle">管理 Activity 生命週期</a>。
+</p>
+
+
+
+<h3 id="UI">實作使用者介面</h3>
+
+<p> Activity 的使用者介面是由階層的檢視所提供 &mdash; 衍生自 {@link android.view.View} 類別的物件。
+每個檢視都控制 Activity 視窗內特定的長方形空間,並且可以回應使用者的互動。
+例如,檢視可能是按鈕,使用者觸碰此按鈕時會初始化一個動作。
+</p>
+
+<p>Android 提供許多現成的檢視,您可以用於設計並組織您的版面配置。
+「小工具」是在畫面上提供視覺和互動元素的檢視,例如按鈕、文字欄位、核取方塊或只是一張影像。
+「版面配置」是衍生自 {@link
+android.view.ViewGroup} 的檢視,讓子檢視可具有獨特的版面配置模型,例如線性版面配置、網格版面配置或相對版面配置。
+您也可以製作 {@link android.view.View} 和
+{@link android.view.ViewGroup} 類別 (或現有子類別) 的子類別,以建立您自己的小工具和版面配置,然後套用到您的 Activity 版面配置。
+</p>
+
+<p>使用檢視定義版面配置的最常見方式,是使用 XML 版面配置檔案 (儲存於您的應用程式資源)。
+這樣一來,您可以分別維護使用者介面的設計和定義 Activity 行為的原始程式碼。
+您可以使用 {@link android.app.Activity#setContentView(int) setContentView()} 傳送版面配置的資源 ID,將版面配置設為 Activity 的 UI。
+
+不過,您也可以透過將新的 {@link
+android.view.View} 插入 {@link android.view.ViewGroup},然後藉由將根
+{@link android.view.ViewGroup} 傳送給 {@link android.app.Activity#setContentView(View)
+setContentView()} 來使用該版面配置,以便在您的 Activity 程式碼中建立新的 {@link android.view.View},並且建置視圖層次。
+</p>
+
+<p>如需關於建立使用者介面的詳細資訊,請參閱<a href="{@docRoot}guide/topics/ui/index.html">使用者介面</a>。</p>
+
+
+
+<h3 id="Declaring">在宣示說明中宣告 Activity</h3>
+
+<p>您必須在宣示說明檔案中宣告 Activity,系統才能加以存取。
+如要宣告您的 Activity,請開啟宣示說明檔案,然後新增 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 元素做為 <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a> 元素的下層物件。
+
+範例:</p>
+
+<pre>
+&lt;manifest ... &gt;
+  &lt;application ... &gt;
+      &lt;activity android:name=".ExampleActivity" /&gt;
+      ...
+  &lt;/application ... &gt;
+  ...
+&lt;/manifest &gt;
+</pre>
+
+<p>您可以包括此元素中的其他屬性 (attribute) 來定義屬性 (property),例如 Activity 的標籤、Activity 的圖示或 Activity UI 的設計風格。<a href="{@docRoot}guide/topics/manifest/activity-element.html#nm">{@code android:name}</a> 屬性 (attribute) 是唯一必須的屬性 &mdash; 它會指定 Activity 的類別名稱。
+
+
+一旦發佈應用程式,您就不得變更此名稱,這是因為這樣做可能會破壞一些功能,例如應用程式捷徑 (閱讀部落格貼文:<a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">不能變更的事項</a>)。
+
+
+</p>
+
+<p>請參閱 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 元素參考文件,進一步瞭解如何在宣示說明中宣告 Activity。
+</p>
+
+
+<h4>使用意圖篩選器</h4>
+
+<p><a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> 元素也可以指定各種意圖篩選器 &mdash; 使用 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> 元素 &mdash; 以便宣告其他應用程式元件啟動它的方式。
+</p>
+
+<p>使用 Android SDK 工具建立新的應用程式時,自動為您建立的
+虛設常式 Activity 會內含意圖篩選器。含意圖篩選器會宣告回應
+「主要」動作的 Activity,並且應放置在「啟動器」類別。意圖篩選器看起來會如下所示:
+</p>
+
+<pre>
+&lt;activity android:name=".ExampleActivity" android:icon="@drawable/app_icon"&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p><a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> 元素指出這是應用程式的「主要」進入點。<a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> 元素指出此 Activity 應列於系統的應用程式啟動器 (以允許使用者啟動此 Activity)。
+</p>
+
+<p>如果您本來就要讓應用程式獨自運作,不要讓其他應用程式啟動其 Activity,則不需要任何其他意圖篩選器。
+只有一個 Activity 可以有「主要」動作和「啟動器」類別,如同上一個範例所示。
+您不要讓其他應用程式使用的 Activity,則不應使用意圖篩選器,而且您可以使用明確的意圖自行加以啟動 (將於以下小節討論)。
+
+</p>
+
+<p>不過,如果您的 Activity 需要回應從其他應用程式 (和您自己的應用程式) 傳送過來的隱含式意圖,則必須為您的 Activity 定義額外的意圖篩選器。
+
+針對您要回應的意圖類型,您必須包括 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a>,其中內含
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> 元素和 <a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> 元素 (選用) 和/或 <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
+&lt;data&gt;}</a> 元素。這些元素會指定您的 Activity 可以回應哪些類型的意圖。
+</p>
+
+<p>如需關於您的 Activity 如何回應意圖的詳細資訊,請參閱<a href="{@docRoot}guide/components/intents-filters.html">意圖和意圖篩選器</a>。
+</p>
+
+
+
+<h2 id="StartingAnActivity">啟動 Activity</h2>
+
+<p>透過呼叫 {@link android.app.Activity#startActivity
+ startActivity()}、將 {@link android.content.Intent} (描述要啟動的 Activity) 傳給它,您可以啟動另一個 Activity。
+意圖會指出您要啟動的那個 Activity,或描述您要執行的動作類型 (而讓系統為您選取適當的 Activity,甚至可以是來自不同應用程式的 Activity)。
+
+
+意圖也可以攜帶少量的資料給已啟動的 Activity 使用。
+</p>
+
+<p>在您自己的應用程式內運作時,通常只要啟動已知的 Activity。
+ 建立意圖並明確定義您要啟動的 Activity (使用類別名稱),可以達成此目的。
+例如,以下示範 Activity 如何啟動另一個名為 {@code
+SignInActivity} 的 Activity:</p>
+
+<pre>
+Intent intent = new Intent(this, SignInActivity.class);
+startActivity(intent);
+</pre>
+
+<p>不過,您的應用程式也希望可以執行其他動作,例如使用您 Activity 中的資料以傳送電子郵件、文字訊息或狀態更新。
+在此情況下,您的應用程式可能就沒有專屬的 Activity 來執行這類動作。因此,您可以改為運用裝置上其他應用程式提供的 Activity。讓這些 Activity 為您執行所需的動作。
+
+這正是意圖寶貴的地方 &mdash; 您可以建立意圖,在其中描述您要執行的動作,然後系統會從另一個應用程式啟動適當的 Activity。
+
+
+如果有多個 Activity 都可以處理意圖,則使用者可以選取要使用哪個 Activity。
+例如,如果要讓使用者傳送電子郵件訊息,您可以建立下列意圖:
+
+</p>
+
+<pre>
+Intent intent = new Intent(Intent.ACTION_SEND);
+intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
+startActivity(intent);
+</pre>
+
+<p>加入意圖的 {@link android.content.Intent#EXTRA_EMAIL} 額外值是一個字串陣列,由應該要寄送電子郵件的電子郵件地址所組成。
+電子郵件應用程式回應此意圖時,它會讀取額外值中提供的字串陣列,並將這些內容放置在編寫電子郵件表單的「收件人」欄位。
+
+在此情況下,電子郵件應用程式的 Activity 會啟動,並且會在使用者完成後,繼續您的 Activity。
+</p>
+
+
+
+
+<h3 id="StartingAnActivityForResult">啟動 Activity 以取得結果</h3>
+
+<p>有時候,您會想要收到由您啟動 Activity 的結果。如要接收結果,請透過呼叫 {@link android.app.Activity#startActivityForResult
+ startActivityForResult()} (而非 {@link android.app.Activity#startActivity
+ startActivity()}) 以啟動 Activity。
+如要接收後續 Activity 的結果,請實作 {@link android.app.Activity#onActivityResult onActivityResult()} 回呼方法。
+
+後續 Activity 完成時,會將 {@link
+android.content.Intent} 中的結果傳回到您的 {@link android.app.Activity#onActivityResult onActivityResult()} 方法。
+</p>
+
+<p>例如,您可能會讓使用者在聯絡人中挑選一位,讓您的 Activity 可以針對該聯絡人的資訊進行一些處理。
+以下示範如何建立這類意圖,並處理結果:
+</p>
+
+<pre>
+private void pickContact() {
+    // Create an intent to "pick" a contact, as defined by the content provider URI
+    Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
+    startActivityForResult(intent, PICK_CONTACT_REQUEST);
+}
+
+&#64;Override
+protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+    // If the request went well (OK) and the request was PICK_CONTACT_REQUEST
+    if (resultCode == Activity.RESULT_OK &amp;&amp; requestCode == PICK_CONTACT_REQUEST) {
+        // Perform a query to the contact's content provider for the contact's name
+        Cursor cursor = getContentResolver().query(data.getData(),
+        new String[] {Contacts.DISPLAY_NAME}, null, null, null);
+        if (cursor.moveToFirst()) { // True if the cursor is not empty
+            int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
+            String name = cursor.getString(columnIndex);
+            // Do something with the selected contact's name...
+        }
+    }
+}
+</pre>
+
+<p>此範例顯示您應該在您的 {@link
+android.app.Activity#onActivityResult onActivityResult()} 方法中使用的基本邏輯,以便處理 Activity 結果。
+第一個條件會檢查要求是否成功 &mdash; 如果成功,則{@code resultCode} 會是 {@link android.app.Activity#RESULT_OK} &mdash;,以及此結果回應的要求是否為已知的要求 &mdash; 範例中的 {@code requestCode} 符合以 {@link android.app.Activity#startActivityForResult
+startActivityForResult()} 傳送的第二個參數。
+
+
+程式碼在這裡透過查詢 {@link android.content.Intent} ({@code data} 參數) 中傳回的資料,來處理 Activity 結果。
+</p>
+
+<p>其中的過程是,{@link
+android.content.ContentResolver} 針對內容供應程式執行查詢,所傳回的
+{@link android.database.Cursor} 可以讀取查詢到的資料。如需詳細資訊,請參閱<a href="{@docRoot}guide/topics/providers/content-providers.html">內容供應程式</a>。
+</p>
+
+<p>如需關於使用意圖的詳細資訊,請參閱<a href="{@docRoot}guide/components/intents-filters.html">意圖和意圖篩選器</a>。
+</p>
+
+
+<h2 id="ShuttingDown">關閉 Activity</h2>
+
+<p>呼叫 Activity 的 {@link android.app.Activity#finish
+finish()} 方法,可以關閉此 Activity。您也可以呼叫
+{@link android.app.Activity#finishActivity finishActivity()},關閉您之前啟動的個別 Activity。</p>
+
+<p class="note"><strong>注意:</strong>大多數情況,您不應使用這些方法明確地結束 Activity。
+如同下一節所討論的 Activity 生命週期,Android 系統會為您管理 Activity 的生命週期,所以您不需要結束您自己的 Activity。
+
+呼叫這些方法對使用者體驗有負面的影響,只有在您十分確定不希望使用者返回 Activity 的此執行個體時,才加以呼叫。
+
+</p>
+
+
+<h2 id="Lifecycle">管理 Activity 生命週期</h2>
+
+<p>實作回呼方法來管理 Activity 的生命週期,對於開發強大且有彈性的應用程式來說,相當重要。
+
+Activity 的生命週期受到相關其他 Activity、本身的工作以及返回堆疊的直接影響。
+</p>
+
+<p>Activity 基本上有以下三種狀態:</p>
+
+<dl>
+  <dt><i>已繼續</i></dt>
+    <dd>Activity 位於螢幕的前景,具有使用者焦點 (此狀態有時候也稱為「執行中」)。
+</dd>
+
+  <dt><i>已暫停</i></dt>
+    <dd>前景中有其他具備焦點的 Activity,但系統仍然可以看到這個 Activity。也就是說,這個 Activity 上方有另一個,該 Activity 為半透明,或是未覆蓋整個螢幕。
+
+已暫停的 Activity 是完全有效的 ({@link android.app.Activity} 物件會保留在記憶體中、維護所有狀態和成員資訊,以及繼續附加至視窗管理員),但在系統記憶體極低的情況下會遭到終止。
+
+</dd>
+
+  <dt><i>已停止</i></dt>
+    <dd>另一個 Activity 已完全遮蓋原本的 Activity (原本的 Activity 現在位於「背景」)。
+已停止的 Activity 仍然是有效的 ({@link android.app.Activity} 物件會保留在記憶體中、維護所有狀態和成員資訊,但「不會」<em></em>附加至視窗管理員)。
+
+只是使用者不會再看到已停止的 Activity,而且其他地方需要記憶體時,系統會將它終止。
+</dd>
+</dl>
+
+<p>如果 Activity 已暫停或已停止,系統可以透過要求它結束 (呼叫其 {@link android.app.Activity#finish finish()} 方法) 或直接終止其處理程序,將它從記憶體中刪除。
+
+Activity 遭到結束或終止後,再次開啟時,必須全部重新建立。
+</p>
+
+
+
+<h3 id="ImplementingLifecycleCallbacks">實作生命週期回呼</h3>
+
+<p>Activity 在不同的狀態之間轉換時 (如上所述),會透過各種回呼方法進行通知。
+所有的回呼方法都是虛設,請加以覆寫,以便在 Activity 狀態變更時,執行適當的工作。
+下列主要 Activity 包括每個基礎生命週期方法:
+</p>
+
+
+<pre>
+public class ExampleActivity extends Activity {
+    &#64;Override
+    public void {@link android.app.Activity#onCreate onCreate}(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // The activity is being created.
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onStart onStart()} {
+        super.onStart();
+        // The activity is about to become visible.
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onResume onResume()} {
+        super.onResume();
+        // The activity has become visible (it is now "resumed").
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onPause onPause()} {
+        super.onPause();
+        // Another activity is taking focus (this activity is about to be "paused").
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onStop onStop()} {
+        super.onStop();
+        // The activity is no longer visible (it is now "stopped")
+    }
+    &#64;Override
+    protected void {@link android.app.Activity#onDestroy onDestroy()} {
+        super.onDestroy();
+        // The activity is about to be destroyed.
+    }
+}
+</pre>
+
+<p class="note"><strong>注意:</strong>實作這些生命週期方法時,一定要先呼叫超級類別實作,才能執行任何工作,如同以上範例所示。
+</p>
+
+<p>總而言之,這些方法定義了 Activity 的整個生命週期。透過實作這些方法,您可以監視 Activity 生命週期中的三個巢狀迴圈:
+ </p>
+
+<ul>
+<li>Activity 的<b>整個生命週期</b>是介於 {@link
+android.app.Activity#onCreate onCreate()} 呼叫和 {@link
+android.app.Activity#onDestroy} 呼叫之間。您的 Activity 應在 {@link android.app.Activity#onCreate onCreate()} 中設定「全域」狀態 (例如定義版面配置),並且在 {@link android.app.Activity#onDestroy} 中釋放所有剩餘的資源。
+
+例如,如果您的 Activity 有一個執行緒在背景執行,並從網路下載資料,那麼最好可以在 {@link android.app.Activity#onCreate onCreate()} 中建立該執行緒,然後在 {@link
+android.app.Activity#onDestroy} 中將它停止。
+
+</li>
+
+<li><p>Activity 的<b>可見生命週期</b>是介於 {@link
+android.app.Activity#onStart onStart()} 呼叫和 {@link
+android.app.Activity#onStop onStop()} 呼叫之間。在此期間,使用者可以在螢幕上看到該 Activity,並與之互動。
+例如,啟動新的 Activity,而這個 Activity 不再看得到時,會呼叫 {@link android.app.Activity#onStop onStop()}。
+在這兩個方法之間,您可以維護需要讓使用者看到的資源。
+例如,您可以在{@link
+android.app.Activity#onStart onStart()} 中註冊
+{@link android.content.BroadcastReceiver},以監視影響到 UI 的變更,然後當使用者不再看到您顯示的內容時,在 {@link android.app.Activity#onStop onStop()} 中將它取消註冊。
+
+系統可以在 Activity 的整個生命週期時,多次呼叫 {@link android.app.Activity#onStart onStart()} 和 {@link
+android.app.Activity#onStop onStop()},因為 Activity 對使用者而言會一直在顯示和隱藏之間切換。
+</p></li>
+
+<li><p>Activity 的<b>前景生命週期</b>是介於 {@link
+android.app.Activity#onResume onResume()} 呼叫和 {@link android.app.Activity#onPause
+onPause()} 呼叫之間。在此期間,Activity 會在螢幕上所有其他 Activity 的前面,而且具有使用者輸入焦點。
+Activity 可以經常在前景和背景之間轉換 &mdash; 例如,裝置進入睡眠或顯示對話方塊時,會呼叫 {@link android.app.Activity#onPause onPause()}。
+
+由於此狀態可能會經常轉換,因此這兩個方法中的程式碼應十分精簡,這樣可以避免使用者在轉換時等待。
+</p></li>
+</ul>
+
+<p>圖 1 說明 Activity 在轉換狀態時的可能迴圈和路徑。長方形代表您可以實作的回呼方法,以便 Activity 在轉換狀態時執行操作。
+
+ <p>
+
+<img src="{@docRoot}images/activity_lifecycle.png" alt="" />
+<p class="img-caption"><strong>圖 1.</strong>Activity 生命週期。</p>
+
+<p>表 1 列出相同的生命週期回呼方法,其中詳細描述每個回呼方法,並且指出每個回呼方法在 Activity 整個生命週期中的位置,包括系統是否可以在回呼方法完成後終止 Activity。
+
+
+</p>
+
+<p class="table-caption"><strong>表 1.</strong>Activity 生命週期回呼方法摘要。
+</p>
+
+<table border="2" width="85%" frame="hsides" rules="rows">
+<colgroup align="left" span="3"></colgroup>
+<colgroup align="left"></colgroup>
+<colgroup align="center"></colgroup>
+<colgroup align="center"></colgroup>
+
+<thead>
+<tr><th colspan="3">方法</th> <th>描述</th> <th>完成後是否可終止?</th> <th>下一個方法</th></tr>
+</thead>
+
+<tbody>
+<tr>
+  <td colspan="3" align="left"><code>{@link android.app.Activity#onCreate onCreate()}</code></td>
+  <td>一開始建立 Activity 時呼叫。
+      您應該在這裡所有的一般靜態設定 &mdash; 建立檢視、將資料繫結至清單等等。
+「套件」物件會傳送給此方法,如果有擷取到狀態,此物件會內含 Activity 的上一個狀態 (請參閱下文的<a href="#actstate">儲存 Activity 狀態</a>)。
+
+
+
+      <p>後面一定會接著 {@code onStart()}。</p></td>
+  <td align="center">否</td>
+      <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td rowspan="5" style="border-left: none; border-right: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onRestart
+onRestart()}</code></td>
+   <td>Activity 已停止後,即將再次啟動之前呼叫。
+
+       <p>後面一定會接著 {@code onStart()}。</p></td>
+   <td align="center">否</td>
+   <td align="center">{@code onStart()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStart onStart()}</code></td>
+   <td>Activity 即將要讓使用者看到之前呼叫。
+       <p>如果 Activity 移到前景,後面會接著 {@code onResume()},如果變成隱藏,後面會接著 {@code onStop()}。
+</p></td>
+    <td align="center">否</td>
+    <td align="center">{@code onResume()} <br/>或<br/> {@code onStop()}</td>
+</tr>
+
+<tr>
+   <td rowspan="2" style="border-left: none;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
+   <td align="left"><code>{@link android.app.Activity#onResume onResume()}</code></td>
+   <td>Activity 即將與使用者開始互動之前呼叫。
+此時,Activity 位於 Activity 堆疊的最上方,接受使用的輸入。
+
+       <p>後面一定會接著 {@code onPause()}。</p></td>
+   <td align="center">否</td>
+   <td align="center">{@code onPause()}</td>
+</tr>
+
+<tr>
+   <td align="left"><code>{@link android.app.Activity#onPause onPause()}</code></td>
+   <td>系統即將開始繼續另一個 Activity 時呼叫。
+認可對永久資料的未儲存變更、停止動畫,以及會使用 CPU 等等資源的其他操作時,一般會使用此方法。
+
+不論此操作會執行什麼動作,都要快速完成,這是因為此方法傳回後,才會繼續下一個 Activity。
+
+       <p>如果 Activity 返回前景,後面會接著 {@code onResume()},如果變成使用者看不到它,後面會接著 {@code onStop()}。
+
+</td>
+   <td align="center"><strong style="color:#800000">是</strong></td>
+   <td align="center">{@code onResume()} <br/>或<br/> {@code onStop()}</td>
+</tr>
+
+<tr>
+   <td colspan="2" align="left"><code>{@link android.app.Activity#onStop onStop()}</code></td>
+   <td>使用者看不到 Activity 時呼叫。Activity 遭到終止或另一個 Activity (不論是現有 Activity 或新的 Activity) 已經繼續,而且將它覆蓋住,就會發生此情形。
+
+
+       <p>如果 Activity 回來與使用者互動,後面會接著 {@code onRestart()},如果 Activity 離開,後面會接著
+ {@code onDestroy()}。
+</p></td>
+   <td align="center"><strong style="color:#800000">是</strong></td>
+   <td align="center">{@code onRestart()} <br/>或<br/> {@code onDestroy()}</td>
+</tr>
+
+<tr>
+   <td colspan="3" align="left"><code>{@link android.app.Activity#onDestroy
+onDestroy()}</code></td>
+   <td>在 Activity 終止前呼叫。Activity 會接收到的最後呼叫。
+Activity 正在完成 (有人在 Activity 上呼叫 <code>{@link android.app.Activity#finish
+       finish()}</code>),或系統正在暫時終止 Activity 的這個執行個體以節省空間時,會呼叫此方法。
+
+您可以使用 <code>{@link
+       android.app.Activity#isFinishing isFinishing()}</code> 方法分辨這兩種情況。
+</td>
+   <td align="center"><strong style="color:#800000">是</strong></td>
+   <td align="center"><em>無</em></td>
+</tr>
+</tbody>
+</table>
+
+<p>此欄標示為「完成後是否可終止?」表示系統是否可以「在方法傳回後」隨時終止代管 Activity 的處理程序<em></em>,而不需要執行另一行 Activity 的程式碼。
+
+有三個方法標示為「是」:({@link
+android.app.Activity#onPause
+onPause()}、{@link android.app.Activity#onStop onStop()} 以及 {@link android.app.Activity#onDestroy
+onDestroy()})。由於 {@link android.app.Activity#onPause onPause()} 是這三個方法中的第一個方法,Activity 建立後,{@link android.app.Activity#onPause onPause()} 是一定會呼叫的最後一個方法,之後處理程序才能加以終止<em></em> &mdash; 如果系統必須緊急收回記憶體,可能就不會呼叫 {@link
+android.app.Activity#onStop onStop()} 和 {@link android.app.Activity#onDestroy onDestroy()}。
+
+
+
+因此,您應該使用 {@link android.app.Activity#onPause onPause()} 將極為重要的永久資料 (例如使用者的編輯內容) 寫入儲存空間。
+不過,您應選擇哪些資訊必須在 {@link android.app.Activity#onPause onPause()} 期間加以保留,這是因為此方法中的任何程序遭到封鎖,都無法轉換到下一個 Activity,而且會讓使用者體驗變慢。
+
+
+</p>
+
+<p> 在「是否可終止」<b></b>欄標示為「否」的方法,從呼叫這些方法的那一刻起,會保護代管 Activity 的處理程序不會遭到終止。
+因此,Activity 從 {@link android.app.Activity#onPause onPause()} 傳回到呼叫
+ {@link android.app.Activity#onResume onResume()} 的期間為可終止。
+再次呼叫和傳回
+{@link android.app.Activity#onPause onPause()} 之前,Activity 為不可終止。 </p>
+
+<p class="note"><strong>注意:</strong>表 1 中定義為不是「可終止」的 Activity 仍可遭到系統終止 &mdash; 但只會發生在無技可施的情況下。
+
+Activity 可加以終止的時機,於<a href="{@docRoot}guide/components/processes-and-threads.html">處理和執行緒</a>文件中有更詳細的討論。
+
+</p>
+
+
+<h3 id="SavingActivityState">儲存 Activity 狀態</h3>
+
+<p><a href="#Lifecycle">管理 Activity 生命週期</a>的簡介中提到,當 Activity 暫停或停止時,會保留 Activity 的狀態。
+
+這點是成立的,原因在於當 {@link android.app.Activity} 物件暫停或停止時,它仍然保留在記憶體中 &mdash; 關於它的成員和目前狀態的所有資訊,仍然為有效的。
+
+因此,使用者在 Activity 內所做的任何變更,都會保留下來。所以,當 Activity 返回前景 (當它「繼續」時),那些變更仍然會在原地。
+
+</p>
+
+<p>不過,當系統終止 Activity 以收回記憶體時,{@link
+android.app.Activity} 物件會遭到終止,所以系統就無法將它及其狀態完好無缺地繼續。
+如果使用者瀏覽回 {@link android.app.Activity} 物件,系統必須加以重新建立。
+但是,使用者不會注意到系統已終止該 Activity 並加以重新建立,可能因此期待 Activity 就跟之前的狀態一樣。
+
+如果是這樣,您可以實作額外的回呼方法,以確認 Activity 狀態相關的重要資訊會保留下來。此回呼方法讓您儲存關於 Activity 狀態的資訊:{@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()}。
+
+</p>
+
+<p>系統會在終止 Activity 之前呼叫 {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}。
+系統會將 {@link android.os.Bundle} 傳送給此方法,您可以使用 {@link
+android.os.Bundle#putString putString()} 和 {@link
+android.os.Bundle#putInt putInt()} 之類的方法,將 Activity 相關的狀態資訊以名稱-值組的方式儲存。
+
+然後,如果系統終止應用程式處理程序,並且使用者瀏覽回您的 Activity,則系統會重新建立 Activity,然後將 {@link android.os.Bundle} 傳送給 {@link android.app.Activity#onCreate onCreate()} 和 {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()}。
+
+您可以使用以上其中一種方法,從 {@link android.os.Bundle} 擷取已儲存的狀態,然後還原 Activity 狀態。
+
+如果沒有狀態資訊可供還原,則傳送過來的 {@link
+android.os.Bundle} 為空值 (null) (第一次建立 Activity 時,就是這種情況)。
+</p>
+
+<img src="{@docRoot}images/fundamentals/restore_instance.png" alt="" />
+<p class="img-caption"><strong>圖 2.</strong>Activity 返回使用者焦點,同時具備完整狀態的兩種方式:Activity 遭到終止,然後重新建立,Activity 必須還原之前儲存的狀態;或者Activity 已停止,然後繼續,Activity 狀態維持完整。
+
+
+</p>
+
+<p class="note"><strong>注意:</strong>不保證在您的 Activity 遭到終止之前,一定會呼叫 {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()},這是因為有時會發生不需要儲存狀態的情形 (例如,使用者使用「返回」按鈕離開您的 Activity 時<em></em>,原因在於使用者明確地關閉 Activity)。
+
+
+
+如果系統要呼叫 {@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()},會在 {@link
+android.app.Activity#onStop onStop()} 之前呼叫,可能會在 {@link android.app.Activity#onPause
+onPause()} 之前呼叫。</p>
+
+<p>不過,即使您沒有做任何事,沒有實作 {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()},有些 Activity 狀態會經由{@link android.app.Activity} 類別的預設實作 {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} 而還原。
+具體來說,預設實作會針對版面配置中的每一個 {@link
+android.view.View} 呼叫對應的 {@link
+android.view.View#onSaveInstanceState onSaveInstanceState()} 方法,這樣可以讓每個檢視提供本身應該要儲存的相關資訊。
+
+在 Android 架構中,幾乎每個小工具都適當地實作此方法,因此 UI 中可見的變更都會自動儲存,並於 Activity 重新建立時加以還原。
+
+例如,{@link android.widget.EditText} 小工具會儲存使用者輸入的任何文字,而 {@link android.widget.CheckBox} 小工具則會儲存是否勾選。
+
+您只要針對需要儲存狀態的每個小工具,提供唯一的 ID (使用 <a href="{@docRoot}guide/topics/resources/layout-resource.html#idvalue">{@code android:id}</a> 屬性) 即可。
+如果小工具沒有 ID,則系統無法儲存其狀態。
+</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<p>您也可以明確地讓版面配置中的檢視停止儲存其狀態,只要將
+{@link android.R.attr#saveEnabled android:saveEnabled} 屬性設為 {@code "false"},或呼叫 {@link android.view.View#setSaveEnabled setSaveEnabled()} 方法即可。
+您通常不應停用儲存狀態的功能,不過,如果您想要還原不同的 Activity UI 狀態,則另當別論。
+</p>
+</div>
+</div>
+
+<p>儘管 {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} 的預設實作會儲存 Activity UI 相關的實用資訊,您仍然需要加以覆寫,以儲存額外的資訊,例如,您需要儲存 Activity 生命期間變更的成員值 (此真可能與 UI 中要還原的值有關,但保留那些 UI 值的成員預設不會加以還原)。
+
+
+
+</p>
+
+<p>由於 {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} 的預設實作可協助儲存 UI 的狀態,因此,如果您覆寫此方法以儲存額外的狀態資訊,一定要再執行任何動作之前,呼叫 {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()} 的超級類別實作。
+
+
+同樣的情況,您也要呼叫 {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} 的超級類別實作 (如果您將它覆寫),讓預設實作可以還原檢視狀態。
+</p>
+
+<p class="note"><strong>注意:</strong>由於不保證一定會呼叫 {@link android.app.Activity#onSaveInstanceState
+onSaveInstanceState()},您只能用它來記錄 Activity 的短暫狀態 (UI 的狀態) &mdash; 不應該用它儲存永久資料。
+
+而是要在使用者離開 Activity 時,利用 {@link
+android.app.Activity#onPause onPause()} 來儲存永內資料 (例如要儲存到資料庫的資料)。
+</p>
+
+<p>測試應用程式是否能夠還原其狀態的好方式,只要旋轉裝置,改變螢幕方向即可。
+螢幕方向改變時,系統會終止 Activity 並重新建立,以便套用針對新的螢幕設定而提供使用的替代資源。
+
+單單就這一點而言,您的 Activity 在重新建立時可以完整還原,就非常重要了,這是因為使用者操作應用程式時會經常旋轉螢幕。
+
+</p>
+
+
+<h3 id="ConfigurationChanges">處理設定變更</h3>
+
+<p>有些裝置設定可以在執行階段期間進行變更 (例如,螢幕方向、鍵盤可用性和語言)。
+發生這類變更時,Android 會重新建立執行中的 Activity (系統呼叫 {@link android.app.Activity#onDestroy},然後立即呼叫 {@link
+android.app.Activity#onCreate onCreate()})。
+此行為的設計透過自動重新載入應用程式與提供的替代資源 (例如針對不同的螢幕方向和大小的不同版面配置),可協助應用程式適應新的設定。
+
+
+</p>
+
+<p>如果您如上所述正確地設計 Activity,處理由於螢幕方向變更的重新啟動,然後還原 Activity 的狀態,您的應用程式對於 Activity 生命週期中的不可預期事件,會更具有抗性。
+
+</p>
+
+<p>處理這類重新啟動的最佳方式,是使用 {@link
+android.app.Activity#onSaveInstanceState onSaveInstanceState()} 和 {@link
+android.app.Activity#onRestoreInstanceState onRestoreInstanceState()} (或 {@link
+android.app.Activity#onCreate onCreate()}) 儲存並還原 Activity 的狀態,如同上一節所討論。
+</p>
+
+<p>如需關於執行階段發生的設定變更,以及如何加以處理的詳細資訊,請參閱<a href="{@docRoot}guide/topics/resources/runtime-changes.html">處理執行階段變更</a>指南。
+
+</p>
+
+
+
+<h3 id="CoordinatingActivities">協調 Activity</h3>
+
+ <p>Activity 啟動另一個 Activity 時,它們兩者都經歷生命週期轉換。第一個 Activity 暫停並停止 (雖然如果仍然可以在背景看到它,表示它並未真的「停止」),而另一個 Activity 建立起來。
+
+若這些 Activity 共用儲存到磁碟或其他地方的資料,第一個 Activity 在第二個 Activity 已建立之前,不會完全停止,瞭解這件事很重要。然而,啟動第二個 Activity 的處理程序與停止第一個 Activity 的處理程序會重疊。
+
+
+</p>
+
+<p>生命週期回呼的順序定義的很好,尤其是當兩個 Activity 位於相同的處理程序,而其中一個 Activity 啟動另一個 Activity 時。
+Activity A 啟動 Activity B 時所發生的操作順利如下:
+ </p>
+
+<ol>
+<li>Activity A 的 {@link android.app.Activity#onPause onPause()} 方法會執行。</li>
+
+<li>Activity B 按順序執行 {@link android.app.Activity#onCreate onCreate()}、{@link
+android.app.Activity#onStart onStart()} 以及 {@link android.app.Activity#onResume onResume()} 方法。
+(Activity B 現在擁有使用者焦點)。</li>
+
+<li>然後,如果螢幕上已經看不到 Activity A,就會執行 Activity A 的 {@link
+android.app.Activity#onStop onStop()} 方法。</li>
+</ol>
+
+ <p>這一段可預測的生命週期回呼,可以讓您管理 Activity 之間資訊的轉換。
+例如,如果第一個 Activity 停止時,您必須寫入資料庫,讓接下來的 Activity 可以讀取,那麼您應該在 {@link android.app.Activity#onPause onPause()} 期間寫入,而不是在 {@link
+android.app.Activity#onStop onStop()} 期間寫入。
+
+</p>
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For more information about how Android maintains a history of activities and
+enables user multitasking, continue with the <b><a
+href="{@docRoot}guide/components/tasks-and-back-stack.html">Tasks and Back
+Stack</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/zh-tw/guide/components/bound-services.jd b/docs/html-intl/intl/zh-tw/guide/components/bound-services.jd
new file mode 100644
index 0000000..da47634
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/components/bound-services.jd
@@ -0,0 +1,658 @@
+page.title=繫結服務
+parent.title=服務
+parent.link=services.html
+@jd:body
+
+
+<div id="qv-wrapper">
+<ol id="qv">
+<h2>本文件內容</h2>
+<ol>
+  <li><a href="#Basics">基本概念</a></li>
+  <li><a href="#Creating">建立繫結服務</a>
+    <ol>
+      <li><a href="#Binder">延伸 Binder 類別</a></li>
+      <li><a href="#Messenger">使用 Messenger</a></li>
+    </ol>
+  </li>
+  <li><a href="#Binding">繫結至服務</a></li>
+  <li><a href="#Lifecycle">管理繫結服務的週期</a></li>
+</ol>
+
+<h2>重要類別</h2>
+<ol>
+  <li>{@link android.app.Service}</li>
+  <li>{@link android.content.ServiceConnection}</li>
+  <li>{@link android.os.IBinder}</li>
+</ol>
+
+<h2>範例</h2>
+<ol>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html">{@code
+      RemoteService}</a></li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+      LocalService}</a></li>
+</ol>
+
+<h2>另請參閱</h2>
+<ol>
+  <li><a href="{@docRoot}guide/components/services.html">服務</a></li>
+</ol>
+</div>
+
+
+<p>繫結服務是主從介面中的伺服器。繫結服務讓元件 (例如 Activity) 可以繫結至服務、傳送要求、接收回應,甚至執行處理程序間通訊 (IPC)。
+
+繫結服務通常只會在服務另一個應用程式元件時才存在,而且不會在背景中一直執行。
+</p>
+
+<p>本文會告訴您如何建立繫結服務,包括如何從其他應用程式元件繫結至服務。
+不過,如需關於服務的一般其他資訊,可參閱<a href="{@docRoot}guide/components/services.html">服務</a>文件,例如如何從服務傳遞通知、設定服務在前景執行等等。
+
+</p>
+
+
+<h2 id="Basics">基本概念</h2>
+
+<p>繫結服務是 {@link android.app.Service} 類別的實作,允許其他應用程式繫結至此實作,並與之互動。
+若服務要要提供繫結功能,您必須實作 {@link android.app.Service#onBind onBind()} 回呼方法。
+此方法會傳回 {@link android.os.IBinder} 物件,其中定義程式設計介面。用戶端可以使用此介面與服務互動。
+
+</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>繫結至已啟動的服務</h3>
+
+<p>我們在<a href="{@docRoot}guide/components/services.html">服務</a>文件中討論過,您可以建立已啟動且繫結的服務。
+也就是說,此服務可以透過呼叫 {@link android.content.Context#startService startService()} 加以啟動,讓此服務一直無限執行,也可以透過呼叫 {@link
+android.content.Context#bindService bindService()},讓用戶端繫結至此服務。
+
+
+  <p>如果您允許服務被啟動且繫結,當服務啟動後,系統「不會」<em></em>在所有用戶端都解除繫結時將此服務終結。
+您必須透過呼叫 {@link android.app.Service#stopSelf stopSelf()} 或 {@link
+android.content.Context#stopService stopService()} 明確地停止服務。
+</p>
+
+<p>雖然您通常只會實作 {@link android.app.Service#onBind onBind()} 或<em></em> {@link android.app.Service#onStartCommand onStartCommand()},但有時候需要實作兩者。
+
+例如,此功能對於音樂播放器就很實用,除了可以讓服務無限期執行,也可以提供繫結功能。
+這樣一來,Activity 就可以啟用服務並播放音樂,然後即使使用者離開應用程式後,音樂仍然繼續播放。
+使用者後續回到此應用程式時,Activity 可以繫結至服務,以重新取得播放的控制權。
+</p>
+
+<p>務必閱讀<a href="#Lifecycle">管理繫結服務的週期</a>,以取得關於新增繫結至已啟動的服務時,此服務週期的詳細資訊。
+
+</p>
+</div>
+</div>
+
+<p>用戶端可以透過呼叫 {@link android.content.Context#bindService
+bindService()} 繫結至服務。這麼做時,用戶端必須實作 {@link
+android.content.ServiceConnection} 以監視與服務之間的連線狀況。{@link
+android.content.Context#bindService bindService()} 方法會立即傳回 (不含值),當 Android 系統在用戶端和服務之間建立連線時,會呼叫 {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} (位於 {@link
+android.content.ServiceConnection}) 以傳遞 {@link android.os.IBinder} (用戶端可以用來與服務溝通)。
+
+
+</p>
+
+<p>多個用戶端可以同時連線至該服務。不過,系統只會在用戶端第一次繫結時,呼叫服務的
+{@link android.app.Service#onBind onBind()} 方法,以擷取 {@link android.os.IBinder}。
+然後,系統會將同一個 {@link android.os.IBinder} 傳遞給其他任何繫結的用戶端,不會再次呼叫 {@link android.app.Service#onBind onBind()}。
+</p>
+
+<p>最後一個用戶端從服務解除繫結時,系統會終結服務 (除非服務也是由 {@link android.content.Context#startService startService()} 所啟動)。
+</p>
+
+<p>實作繫結服務時,最重要的部分是定義您的 {@link android.app.Service#onBind onBind()} 回呼方法傳回的介面。
+您可以使用幾種不同的方式來定義服務的 {@link android.os.IBinder} 介面,以下小節將討論其中的每一種技術。
+
+</p>
+
+
+
+<h2 id="Creating">建立已繫結的服務</h2>
+
+<p>建立提供繫結功能的服務時,您必須提供 {@link android.os.IBinder} 程式設計介面。用戶端可以使用此介面與服務互動。
+定義介面有三種方式:
+</p>
+
+<dl>
+  <dt><a href="#Binder">延伸 Binder 類別</a></dt>
+  <dd>如果您的服務只讓您自己的應用程式使用,而且跟用戶端執行在同一個處理程序 (此作法很常見),則應該要透過延伸 {@link android.os.Binder} 類別,並從
+{@link android.app.Service#onBind onBind()} 傳回此類別的執行個體來建立介面。
+
+用戶端接收 {@link android.os.Binder} 後,可以用它直接存取 {@link android.os.Binder} 實作或 {@link android.app.Service} 提供的公用方法。
+
+
+  <p>若您的服務只是您自己應用程式的背景工作者,建議使用此方式。
+除非您的服務是由其他應用程式或跨個別處理程序使用,才不用以此方式建立自己的介面。
+</dd>
+
+  <dt><a href="#Messenger">使用 Messenger</a></dt>
+  <dd>如果您的介面需要跨不同處理程序運作,則可以建立內含 {@link android.os.Messenger} 服務的介面。
+此服務定義了回應不同類型 {@link
+android.os.Message} 物件的 {@link android.os.Handler}。
+這個 {@link android.os.Handler} 是 {@link android.os.Messenger} 的基礎,之後可以與用戶端分享 {@link android.os.IBinder},讓用戶端使用 {@link
+android.os.Message} 物件傳送命令給此服務。
+
+此外,用戶端可以定義專屬的 {@link android.os.Messenger},服務就可以傳回訊息。
+
+  <p>這是處理程序間通訊 (IPC) 最簡單的執行方式,因為 {@link
+android.os.Messenger} 會將所有要求都排列到單一個執行緒,因此,就不用將服務設計成執行緒安全的形式。
+</p>
+  </dd>
+
+  <dt>使用 AIDL</dt>
+  <dd>AIDL (Android 介面定義語言) 的工作是將物件分解為作業系統瞭解的始類型,然後將這些原始類型在各個處理程序間進行封送,以執行 IPC。先前使用 {@link android.os.Messenger} 的技術,實際上就是以 AIDL 作為底層結構。
+
+
+如上所述,{@link android.os.Messenger} 會在單一執行緒中建立所有用戶端要求的佇列,所以服務一次會接收一個要求。
+不過,如果您要讓服務可以同時處理多個要求,則可以直接使用 AIDL。
+
+在此情況下,您的服務必須具備多執行緒的功能,而且是以執行緒安全的形式建置。
+  <p>如要直接使用 AIDL,您必須建立 {@code .aidl} 檔案,並在其中定義程式設計介面。
+Android SDK 工具會使用此檔案產生一個抽象類別,以便實作介面並處理 IPC。您就可以在服務內加以延伸。
+
+</p>
+  </dd>
+</dl>
+
+  <p class="note"><strong>注意:</strong>大部分應用程式<strong>不應</strong>使用 AIDL 建立繫結服務,若自行建立的話,就需要實作多執行緒功能,可能會導致更複雜的實作。
+
+因此,AIDL 不適用於大部分應用程式,而且本文不會討論如何在您的服務中使用 AIDL。
+如果您確定需要直接使用 AIDL,請參閱 <a href="{@docRoot}guide/components/aidl.html">AIDL</a> 文件。
+
+</p>
+
+
+
+
+<h3 id="Binder">延伸 Binder 類別</h3>
+
+<p>如果您的服務只會在本機應用程式使用,而且不需要跨處理程序運作,則可以實作您自己的 {@link android.os.Binder} 類別,讓用戶端直接存取服務中的公用方法。
+
+</p>
+
+<p class="note"><strong>注意:</strong>用戶端和服務都位於相同應用程式和處理程序時才適用,這也是最常見的情況。
+例如,需要將 Activity 繫結到其專屬服務 (在背景播放音樂)的音樂應用程式,就很適合。
+
+</p>
+
+<p>設定的方式如下:</p>
+<ol>
+  <li>在您的服務中建立 {@link android.os.Binder} 的執行個體,以具備以下其中一種功用:
+    <ul>
+      <li>包含用戶端可以呼叫的公用方法</li>
+      <li>傳回目前的 {@link android.app.Service} 執行個體,其中含有用戶端可以呼叫的公用方法
+</li>
+      <li>傳回由服務所裝載另一個類別的執行個體,而此服務含有用戶端可以呼叫的公用方法
+</li>
+    </ul>
+  <li>從 {@link
+android.app.Service#onBind onBind()} 回呼方法傳回此 {@link android.os.Binder} 的執行個體。</li>
+  <li>在用戶端方面,從 {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} 回呼方法接收 {@link android.os.Binder},然後使用提供的方法呼叫繫結服務。
+</li>
+</ol>
+
+<p class="note"><strong>注意:</strong>服務和用戶端必須位於相同的應用程式,是因為用戶端才可以轉換傳回的物件,然後正確地呼叫其 API。
+服務和用戶端也必須位於相同的處理程序,因為此技術不會執行任何跨處理程序間旳封送。
+
+</p>
+
+<p>例如,以下的服務可以讓用戶端透過實作的 {@link android.os.Binder} 存取服務中的方法:
+</p>
+
+<pre>
+public class LocalService extends Service {
+    // Binder given to clients
+    private final IBinder mBinder = new LocalBinder();
+    // Random number generator
+    private final Random mGenerator = new Random();
+
+    /**
+     * Class used for the client Binder.  Because we know this service always
+     * runs in the same process as its clients, we don't need to deal with IPC.
+     */
+    public class LocalBinder extends Binder {
+        LocalService getService() {
+            // Return this instance of LocalService so clients can call public methods
+            return LocalService.this;
+        }
+    }
+
+    &#64;Override
+    public IBinder onBind(Intent intent) {
+        return mBinder;
+    }
+
+    /** method for clients */
+    public int getRandomNumber() {
+      return mGenerator.nextInt(100);
+    }
+}
+</pre>
+
+<p>{@code LocalBinder} 提供 {@code getService()} 方法,讓用戶端擷取 {@code LocalService} 目前的執行個體。
+這樣可以讓用戶端呼叫服務中的公用方法。
+例如,用戶端可以從服務呼叫 {@code getRandomNumber()}。</p>
+
+<p>當按一下按鈕時,會發生繫結至 {@code LocalService} 並呼叫 {@code getRandomNumber()}的 Activity:
+</p>
+
+<pre>
+public class BindingActivity extends Activity {
+    LocalService mService;
+    boolean mBound = false;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+
+    &#64;Override
+    protected void onStart() {
+        super.onStart();
+        // Bind to LocalService
+        Intent intent = new Intent(this, LocalService.class);
+        bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+    }
+
+    &#64;Override
+    protected void onStop() {
+        super.onStop();
+        // Unbind from the service
+        if (mBound) {
+            unbindService(mConnection);
+            mBound = false;
+        }
+    }
+
+    /** Called when a button is clicked (the button in the layout file attaches to
+      * this method with the android:onClick attribute) */
+    public void onButtonClick(View v) {
+        if (mBound) {
+            // Call a method from the LocalService.
+            // However, if this call were something that might hang, then this request should
+            // occur in a separate thread to avoid slowing down the activity performance.
+            int num = mService.getRandomNumber();
+            Toast.makeText(this, "number: " + num, Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    /** Defines callbacks for service binding, passed to bindService() */
+    private ServiceConnection mConnection = new ServiceConnection() {
+
+        &#64;Override
+        public void onServiceConnected(ComponentName className,
+                IBinder service) {
+            // We've bound to LocalService, cast the IBinder and get LocalService instance
+            LocalBinder binder = (LocalBinder) service;
+            mService = binder.getService();
+            mBound = true;
+        }
+
+        &#64;Override
+        public void onServiceDisconnected(ComponentName arg0) {
+            mBound = false;
+        }
+    };
+}
+</pre>
+
+<p>上述範例顯示:用戶端如何使用 
+{@link android.content.ServiceConnection} 的實作和 {@link
+android.content.ServiceConnection#onServiceConnected onServiceConnected()} 回呼,繫結至服務。下一節提供關於繫結至服務處理程序的詳細資訊。
+</p>
+
+<p class="note"><strong>注意:</strong>上述範例未明確從服務解除繫結,但所有用戶端都應該在適當時間解除繫結 (例如,Activity 暫停時)。
+</p>
+
+<p>如要取得更多範例程式碼,請參閱 <a href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a> 中的 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+LocalService.java}</a> 類別和 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceActivities.html">{@code
+LocalServiceActivities.java}</a> 類別。</p>
+
+
+
+
+
+<h3 id="Messenger">使用 Messenger</h3>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h4>與 AIDL 的比較</h4>
+  <p>需要執行 IPC 時,使用 {@link android.os.Messenger} 作為介面較簡單 (與使用 AIDL 實作介面相比),因為 {@link android.os.Messenger} 佇列都會呼叫服務,但是單純的 AIDL 介面會同時將要求傳送給服務。因此,服務必須具備處理多執行緒功能。
+
+
+</p>
+  <p>對於大部分應用程式而言,服務不需要執行多執行緒,所以使用 {@link
+android.os.Messenger} 讓服務一次處理一個呼叫。如果您的服務必須處理多執行緒,則要使用 <a href="{@docRoot}guide/components/aidl.html">AIDL</a> 定義您的介面。
+</p>
+</div>
+</div>
+
+<p>如果服務要和遠端處理程序溝通,則可以使用 
+{@link android.os.Messenger} 為您的服務提供介面。此技術讓您不需要使用 AIDL,就可以執行處理程序間通訊 (IPC)。
+</p>
+
+<p>以下是使用 {@link android.os.Messenger} 的摘要:</p>
+
+<ul>
+  <li>此服務實作 {@link android.os.Handler},可以從用戶端接收每個呼叫的回呼。
+</li>
+  <li>{@link android.os.Handler} 用於建立 {@link android.os.Messenger} 物件 (這是 {@link android.os.Handler} 的參照)。
+</li>
+  <li>{@link android.os.Messenger} 會建立 {@link android.os.IBinder},服務會從 {@link android.app.Service#onBind onBind()} 傳回給用戶端。
+</li>
+  <li>用戶端使用 {@link android.os.IBinder} 將 {@link android.os.Messenger} (參照服務的 {@link android.os.Handler}) 具現化,用戶端就可以用來將
+{@link android.os.Message} 物件傳送給服務。
+</li>
+  <li>服務會在其 {@link
+android.os.Handler} 中接收每個 {@link android.os.Message} &mdash; 更明確地說,就是在 {@link android.os.Handler#handleMessage
+handleMessage()} 方法中加以接收。</li>
+</ul>
+
+
+<p>這樣一來,用戶端就不需要呼叫服務的任何「方法」。用戶端只要傳遞「訊息」({@link android.os.Message} 物件),服務就會在其 {@link android.os.Handler} 中接收。
+
+</p>
+
+<p>以下是使用 {@link android.os.Messenger} 介面的簡單範例服務:</p>
+
+<pre>
+public class MessengerService extends Service {
+    /** Command to the service to display a message */
+    static final int MSG_SAY_HELLO = 1;
+
+    /**
+     * Handler of incoming messages from clients.
+     */
+    class IncomingHandler extends Handler {
+        &#64;Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_SAY_HELLO:
+                    Toast.makeText(getApplicationContext(), "hello!", Toast.LENGTH_SHORT).show();
+                    break;
+                default:
+                    super.handleMessage(msg);
+            }
+        }
+    }
+
+    /**
+     * Target we publish for clients to send messages to IncomingHandler.
+     */
+    final Messenger mMessenger = new Messenger(new IncomingHandler());
+
+    /**
+     * When binding to the service, we return an interface to our messenger
+     * for sending messages to the service.
+     */
+    &#64;Override
+    public IBinder onBind(Intent intent) {
+        Toast.makeText(getApplicationContext(), "binding", Toast.LENGTH_SHORT).show();
+        return mMessenger.getBinder();
+    }
+}
+</pre>
+
+<p>請注意,
+{@link android.os.Handler} 中的 {@link android.os.Handler#handleMessage handleMessage()} 方法是服務接收傳入 {@link android.os.Message} 的位置,也是根據 {@link android.os.Message#what} 成員,決定後續執行動作的位置。
+</p>
+
+<p>用戶端只需要根據服務傳回的 {@link
+android.os.IBinder},建立 {@link android.os.Messenger},然後使用 {@link
+android.os.Messenger#send send()} 傳送訊息。例如,以下的簡單 Activity 會繫結至服務,然後將 {@code MSG_SAY_HELLO} 訊息傳遞給服務:
+</p>
+
+<pre>
+public class ActivityMessenger extends Activity {
+    /** Messenger for communicating with the service. */
+    Messenger mService = null;
+
+    /** Flag indicating whether we have called bind on the service. */
+    boolean mBound;
+
+    /**
+     * Class for interacting with the main interface of the service.
+     */
+    private ServiceConnection mConnection = new ServiceConnection() {
+        public void onServiceConnected(ComponentName className, IBinder service) {
+            // This is called when the connection with the service has been
+            // established, giving us the object we can use to
+            // interact with the service.  We are communicating with the
+            // service using a Messenger, so here we get a client-side
+            // representation of that from the raw IBinder object.
+            mService = new Messenger(service);
+            mBound = true;
+        }
+
+        public void onServiceDisconnected(ComponentName className) {
+            // This is called when the connection with the service has been
+            // unexpectedly disconnected -- that is, its process crashed.
+            mService = null;
+            mBound = false;
+        }
+    };
+
+    public void sayHello(View v) {
+        if (!mBound) return;
+        // Create and send a message to the service, using a supported 'what' value
+        Message msg = Message.obtain(null, MessengerService.MSG_SAY_HELLO, 0, 0);
+        try {
+            mService.send(msg);
+        } catch (RemoteException e) {
+            e.printStackTrace();
+        }
+    }
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+
+    &#64;Override
+    protected void onStart() {
+        super.onStart();
+        // Bind to the service
+        bindService(new Intent(this, MessengerService.class), mConnection,
+            Context.BIND_AUTO_CREATE);
+    }
+
+    &#64;Override
+    protected void onStop() {
+        super.onStop();
+        // Unbind from the service
+        if (mBound) {
+            unbindService(mConnection);
+            mBound = false;
+        }
+    }
+}
+</pre>
+
+<p>注意,此範例並未顯示服務回應用戶端的方式。如果您希望
+服務有所回應,則同時需要在用戶端建立 {@link android.os.Messenger}。之後,用戶端接收 {@link android.content.ServiceConnection#onServiceConnected
+onServiceConnected()} 回呼時,會傳送 {@link android.os.Message} 給服務,其中包括用戶端的 {@link android.os.Messenger} (位於 {@link android.os.Messenger#send send()} 方法的 {@link android.os.Message#replyTo} 參數中)。
+
+
+</p>
+
+<p>您可以在 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerService.html">{@code
+MessengerService.java}</a> (服務) 和 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/MessengerServiceActivities.html">{@code
+MessengerServiceActivities.java}</a> (用戶端) 的範例中看到如何進行雙向傳訊的例子。</p>
+
+
+
+
+
+<h2 id="Binding">繫結至服務</h2>
+
+<p>應用程式元件 (用戶端) 可以透過呼叫
+{@link android.content.Context#bindService bindService()},繫結至服務。然後,Android 系統會呼叫服務的 {@link android.app.Service#onBind
+onBind()} 方法 (此方法傳回 {@link android.os.IBinder} 以便與服務互動)。
+</p>
+
+<p>繫結為非同步。{@link android.content.Context#bindService
+bindService()} 會立即傳回,但「不會」將<em></em> {@link android.os.IBinder} 傳回給用戶端。
+如要接收 {@link android.os.IBinder},用戶端必須建立 {@link
+android.content.ServiceConnection} 的執行個體,然後將此執行個體傳送給 {@link android.content.Context#bindService
+bindService()}。{@link android.content.ServiceConnection} 內含回呼方法,系統會呼叫此方法以傳遞 {@link android.os.IBinder}。
+</p>
+
+<p class="note"><strong>注意:</strong>只有 Activity、服務以及內容提供者可以繫結至服務 &mdash; 您<strong>不能</strong>從廣播接收者繫結至服務。
+</p>
+
+<p>因此,如要從用戶端繫結至服務,必須符合下列條件: </p>
+<ol>
+  <li>實作 {@link android.content.ServiceConnection}。
+    <p>實作中必須覆寫兩個回呼方法:</p>
+    <dl>
+      <dt>{@link android.content.ServiceConnection#onServiceConnected onServiceConnected()}</dt>
+        <dd>系統會呼叫此方法來傳遞 {@link android.os.IBinder} (由服務的 {@link android.app.Service#onBind onBind()} 方法所傳回)。
+</dd>
+      <dt>{@link android.content.ServiceConnection#onServiceDisconnected
+onServiceDisconnected()}</dt>
+        <dd>與服務之間的連線突然遺失時 (例如服務當機或遭到終止時),Android 系統會呼收此方法。
+用戶端解除繫結時,「不會」<em></em>呼叫此方法。
+</dd>
+    </dl>
+  </li>
+  <li>呼叫會傳送 {@link
+android.content.ServiceConnection} 實作的 {@link
+android.content.Context#bindService bindService()}。 </li>
+  <li>系統呼叫 {@link android.content.ServiceConnection#onServiceConnected
+onServiceConnected()} 回呼方法時,您就可以使用介面定義的方法,開始呼叫服務。
+</li>
+  <li>如要與服務中斷連線,請呼叫 {@link
+android.content.Context#unbindService unbindService()}。
+    <p>用戶端遭到終結時,會與服務解除繫結。不過,您應該要在與服務完成互動時,或者 Activity 暫停,要讓服務未使用時可以加以關閉的情況下,一定要解除繫結。
+
+(以下將有繫結和解除繫結適當時機的詳細討論)。
+</p>
+  </li>
+</ol>
+
+<p>例如,下列程式碼片段會透過<a href="#Binder">延伸 Binder 類別</a>,將用戶端連線到上述建立的服務,因此用戶端只要將傳回的
+{@link android.os.IBinder} 轉換為 {@code LocalService} 類別,然後要求 {@code
+LocalService} 執行個體:
+</p>
+
+<pre>
+LocalService mService;
+private ServiceConnection mConnection = new ServiceConnection() {
+    // Called when the connection with the service is established
+    public void onServiceConnected(ComponentName className, IBinder service) {
+        // Because we have bound to an explicit
+        // service that is running in our own process, we can
+        // cast its IBinder to a concrete class and directly access it.
+        LocalBinder binder = (LocalBinder) service;
+        mService = binder.getService();
+        mBound = true;
+    }
+
+    // Called when the connection with the service disconnects unexpectedly
+    public void onServiceDisconnected(ComponentName className) {
+        Log.e(TAG, "onServiceDisconnected");
+        mBound = false;
+    }
+};
+</pre>
+
+<p>使用此 {@link android.content.ServiceConnection},用戶端可以透過將它傳送給 {@link android.content.Context#bindService bindService()} 而繫結至服務。
+例如:</p>
+
+<pre>
+Intent intent = new Intent(this, LocalService.class);
+bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+</pre>
+
+<ul>
+  <li>{@link android.content.Context#bindService bindService()} 的第一個參數是
+{@link android.content.Intent},明確地指定服務進行繫結 (儘管意圖是隱含的)。
+</li>
+<li>第二個參數是 {@link android.content.ServiceConnection} 物件。</li>
+<li>第三個參數是旗標,用來指出繫結的選項。如果服務尚未存在,通常是使用 {@link
+android.content.Context#BIND_AUTO_CREATE} 以建立服務。其他可能的值為 {@link android.content.Context#BIND_DEBUG_UNBIND}和 {@link android.content.Context#BIND_NOT_FOREGROUND},或者 {@code 0} 代表無。
+
+</li>
+</ul>
+
+
+<h3>其他注意事項</h3>
+
+<p>以下是關於繫結至服務的一些重要注意事項:</p>
+<ul>
+  <li>您一定要設陷 {@link android.os.DeadObjectException} 例外狀況 (連線中斷時會擲回此例外狀況)。
+遠端方法只會擲回這個例外狀況。</li>
+  <li>物件會跨處理程序計算參照。 </li>
+  <li>繫結和解除繫結通常應成對使用,以符合用戶端的開始和結束週期。
+例如:
+    <ul>
+      <li>如果您只要在 Activity 可見時與服務互動,則要在 {@link android.app.Activity#onStart onStart()} 時繫結,並於 {@link
+android.app.Activity#onStop onStop()} 時解除繫結。
+</li>
+      <li>如果您希望 Activity 即使在背景中停止時,仍然會接收回應,則可以在 {@link android.app.Activity#onCreate onCreate()} 時繫結,並於{@link android.app.Activity#onDestroy onDestroy()} 時解除繫結。
+
+請注意,這表示您的 Activity 在整個執行期間 (即使是在背景執行也一樣) 都需要使用服務,因此,如果服務位於另一個處理程序,您要增加該處理程序的權重。但系統很可能因而將它終止。
+
+
+</li>
+    </ul>
+    <p class="note"><strong>注意:</strong>Activity 的 {@link android.app.Activity#onResume onResume()} 和 {@link
+android.app.Activity#onPause onPause()} 期間,通常<strong>不要</strong>繫結和解除繫結,因為這些回呼會在每個週期轉換時發生,而且您應該要讓這些轉換期間所發生的處理動作保持在最少狀態。
+
+另外,如果您的應用程式中有多個 Activity 繫結至同一個服務,而這兩個 Activity 之間會進行轉換,則服務會在目前的 Activity 解除繫結(暫停) 時,而下一個 Activity 繫結之前 (繼續時),先終結後再重新建立
+
+
+(此 Activity 轉換如何在 Activity 之間協調其週期的資訊,於 <a href="{@docRoot}guide/components/activities.html#CoordinatingActivities">Activity</a> 文件中說明)。
+
+</p>
+</ul>
+
+<p>如要取得如何繫結至服務的更多範例程式碼,請參閱 <a href="{@docRoot}resources/samples/ApiDemos/index.html">ApiDemos</a> 中的 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/RemoteService.html">{@code
+RemoteService.java}</a> 類別。</p>
+
+
+
+
+
+<h2 id="Lifecycle">管理繫結服務的週期</h2>
+
+<p>服務與所有用戶端解除繫結時,Android 系統會將服務終結 (除非服務是和 {@link android.app.Service#onStartCommand onStartCommand()} 一起啟動的)。
+如果您的服務純粹是繫結服務,就不用管理它的週期&mdash; Android 系統會根據服務是否繫結至任何用戶端,為您管理服務。
+
+</p>
+
+<p>不過,如果您選擇實作 {@link android.app.Service#onStartCommand
+onStartCommand()} 回呼方法,則必須明確停止服務,因為服務現在會視為「已啟動」<em></em>。
+如果是此情形,除非服務本身使用 {@link android.app.Service#stopSelf()} 自行停止,或另一個元件呼叫 {@link
+android.content.Context#stopService stopService()} 加以停止,否則服務會持續執行,不論它是否繫結至任何用戶端。
+
+</p>
+
+<p>此外,如果您的服務已啟動並且接受繫結,當系統呼叫您的 {@link android.app.Service#onUnbind onUnbind()} 方法時,可以選擇傳回 
+{@code true} (如果您希望用戶端下次繫結至服務時,可以接收 {@link android.app.Service#onRebind
+onRebind()} 呼叫,而不是接收 {@link
+android.app.Service#onBind onBind()} 的呼叫)。{@link android.app.Service#onRebind
+onRebind()} 會傳回空值,但用戶端仍然會在其
+{@link android.content.ServiceConnection#onServiceConnected onServiceConnected()} 回呼中接收到 {@link android.os.IBinder}。以下「圖 1」說明這類週期的邏輯。
+
+</p>
+
+
+<img src="{@docRoot}images/fundamentals/service_binding_tree_lifecycle.png" alt="" />
+<p class="img-caption"><strong>圖 1.</strong>服務的週期開始後,就允許繫結行為。
+</p>
+
+
+<p>如需關於已啟動服務週期的詳細資訊,請參閱<a href="{@docRoot}guide/components/services.html#Lifecycle">服務</a>文件。</p>
+
+
+
+
diff --git a/docs/html-intl/intl/zh-tw/guide/components/fragments.jd b/docs/html-intl/intl/zh-tw/guide/components/fragments.jd
new file mode 100644
index 0000000..e54769b
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/components/fragments.jd
@@ -0,0 +1,812 @@
+page.title=片段
+parent.title=Activity
+parent.link=activities.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>本文件內容</h2>
+  <ol>
+    <li><a href="#Design">設計概念</a></li>
+    <li><a href="#Creating">建立片段</a>
+      <ol>
+        <li><a href="#UI">新增使用者介面</a></li>
+        <li><a href="#Adding">將片段新增到 Activity 中</a></li>
+      </ol>
+    </li>
+    <li><a href="#Managing">管理片段</a></li>
+    <li><a href="#Transactions">進行片段交易</a></li>
+    <li><a href="#CommunicatingWithActivity">與 Activity 通訊</a>
+      <ol>
+        <li><a href="#EventCallbacks">為 Activity 建立事件回呼</a></li>
+        <li><a href="#ActionBar">將項目新增到動作列中</a></li>
+      </ol>
+    </li>
+    <li><a href="#Lifecycle">處理片段生命週期</a>
+      <ol>
+        <li><a href="#CoordinatingWithActivity">調整 Activity 生命週期</a></li>
+      </ol>
+    </li>
+    <li><a href="#Example">範例說明</a></li>
+  </ol>
+
+  <h2>重要類別</h2>
+  <ol>
+    <li>{@link android.app.Fragment}</li>
+    <li>{@link android.app.FragmentManager}</li>
+    <li>{@link android.app.FragmentTransaction}</li>
+  </ol>
+  
+  <h2>另請參閱</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/fragments/index.html">使用片段建置動態 UI</a></li>
+    <li><a href="{@docRoot}guide/practices/tablets-and-handsets.html">支援平板電腦和手機</a>
+</li>
+  </ol>
+</div>
+</div>
+
+<p>{@link android.app.Fragment} 代表一種行為或 
+{@link android.app.Activity} 中的一部分使用者介面。您可以合併單一 Activity 中的多個片段,藉此建置
+多窗格 UI 以及在多個 Activity 中重複使用片段。您可以將片段想成是 Activity 的模組化區段,片段擁有自己的生命週期、接收自己的輸入事件,而且您可以在 Activity 執行時新增或移除片段 (有點像是您可以在不同 Activity 中重複使用的「子 Activity」)。
+
+
+</p>
+
+<p>片段必須一律嵌入 Activity 中,而主要 Activity 的生命週期會直接影響片段的生命週期。
+例如,當 Activity 暫停時,其中的所有片段也會一併暫停;而當 Activity 遭到刪除時,所有片段也會一併刪除。
+不過,當 Activity 執行時 (該 Activity 會處於繼續進行<em></em><a href="{@docRoot}guide/components/activities.html#Lifecycle">生命週期狀態</a>),您可以個別操縱所有片段,例如新增或移除片段。
+
+當您進行片段交易這類操作時,您也可以將片段加到 Activity 所管理的返回堆疊中 &mdash; Activity 中的所有返回堆疊項目均為所發生片段交易的記錄。
+
+
+返回堆疊可讓使用者復原片段交易 (往回瀏覽),只要按下 [返回]<em></em> 按鈕即可。
+</p>
+
+<p>當您將片段新增為 Activity 版面配置的一部分後,片段就會位於 Activity 檢視階層中的 {@link
+android.view.ViewGroup},而且片段會自行定義專屬的版面配置。您可以宣告 Activity 版面配置檔案中的片段,或是在應用程式的程式碼中將片段加到現有的 {@link android.view.ViewGroup} 中,藉此在 Activity 版面配置中將片段插入為 {@code &lt;fragment&gt;} 元素。
+
+
+
+不過,片段未必要成為 Activity 版面配置的一部分;您也可以選擇不透過其 UI,以隱形工作人員的身分使用 Activity 的片段。
+
+</p>
+
+<p>本文說明如何建置應用程式以使用片段,包括片段如何在加到 Activity 返回堆疊時保持自身狀態、如何與 Activity 和 Activity 中的其他片段共用活動、如何製作 Activity 欄等等。
+
+
+</p>
+
+
+<h2 id="Design">設計概念</h2>
+
+<p>我們在 Android 3.0 (API 級別 11) 中導入了片段,主要目的是為了在大型螢幕 (例如平板電腦) 上支援更多動態和彈性 UI 設計。
+由於平板電腦的螢幕比手機大上許多,因此有更多空間可結合及交換 UI 元件。
+
+片段可實現這種介面設計,而不必讓您管理複雜的檢視階層變更。
+將 Activity 的版面配置劃分成片段後,您就可以修改 Activity 在執行階段的外觀,以及保留 Activity 所管理返回堆疊的相關變更。
+
+</p>
+
+<p>例如,某個新聞應用程式可使用單一片段在畫面左側顯示文章清單,並且使用另一個片段在畫面右側顯示某篇文章 &mdash; 這兩個片段是以並排方式出現在某個 Activity 中,而每個片段都有自己的一組生命週期回呼方法,可自行處理其使用者輸入事件。
+
+
+因此,使用者可以在相同 Activity 中選取並閱讀某篇文章 (如圖 1 中的平板電腦版面配置所示),而不必使用不同 Activity 選取及閱讀文章。
+
+</p>
+
+<p>請務必將每個片段設計成模組化和可重複使用的 Activity 元件。這是因為每個片段會根據其生命週期回呼,定義專屬版面配置和行為,而您可將單一片段加到多個 Activity 中,故請將其設計成可重複使用的元件,同時避免直接操縱個別片段。
+
+
+由於模組化片段可讓您針對不同螢幕大小變更片段組合,因此請務必這麼做。
+設計您的應用程式以支援平板電腦和手機時,您可以在不同版面配置設定中重複使用片段,藉此根據可用的螢幕空間提供最佳的使用者體驗。
+
+以手機為例說明,如果相同 Activity 中有多個片段不相符,則只要分割片段即可提供單一面板式的 UI。
+
+</p>
+
+<img src="{@docRoot}images/fundamentals/fragments.png" alt="" />
+<p class="img-caption"><strong>圖 1.</strong>片段所定義的兩個 UI 模組如何針對平板電腦設計合併成單一 Activity、如何針對手機設計分割成個別 Activity。
+
+</p>
+
+<p>例如 &mdash; 延續新聞應用程式範例加以說明 &mdash; 在平板電腦大小的裝置上執行的應用程式可將兩個片段嵌入「Activity A」<em></em>。
+不過,在手機大小的螢幕上,由於螢幕空間不足以容納兩個片段,因此「Activity A」<em></em>只會包含文章清單的片段,而當使用者選取文章後,系統就會啟動內含第二個片段的「Activity B」<em></em>,讓使用者閱讀文章。
+
+
+因此,應用程式可透過重複使用不同片段組合的方式,同時支援平板電腦和手機 (如圖 1 所示)。
+
+</p>
+
+<p>如要進一步瞭解如何使用不同片段組合針對各種螢幕設定設計應用程式,請參閱<a href="{@docRoot}guide/practices/tablets-and-handsets.html">支援平板電腦和手機</a>指南。
+</p>
+
+
+
+<h2 id="Creating">建立片段</h2>
+
+<div class="figure" style="width:327px">
+<img src="{@docRoot}images/fragment_lifecycle.png" alt="" />
+<p class="img-caption"><strong>圖 2.</strong>片段的生命週期 (當其中的 Activity 處於執行狀態時)。
+</p>
+</div>
+
+<p>如要建立片段,您必須建立 {@link android.app.Fragment} 的子類別 (或是其現有的子類別)。
+{@link android.app.Fragment} 類別內含與{@link android.app.Activity} 十分雷同的程式碼。
+該程式碼包括與 Activity 類似的回呼方法,例如 {@link android.app.Fragment#onCreate onCreate()}、{@link android.app.Fragment#onStart onStart()}、
+{@link android.app.Fragment#onPause onPause()} 和 {@link android.app.Fragment#onStop onStop()}。
+事實上,如果您是設定現有 Android 應用程式改用片段,只要將 Activity 的回呼方法中的程式碼移到片段的個別回呼方法即可。
+
+
+</p>
+
+<p>一般來說,您至少必須實作下列生命週期方法:</p>
+
+<dl>
+  <dt>{@link android.app.Fragment#onCreate onCreate()}</dt>
+  <dd>系統會在建立片段時呼叫這個方法。在實作這個方法時,您必須初始化您想保留的必要片段元件,以便恢復已暫停或停止的片段。
+
+</dd>
+  <dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
+  <dd>系統會在片段初次顯示其使用者介面時呼叫這個方法。
+您必須透過這個方法傳回 {@link android.view.View} (片段版面配置的根目錄),才能顯示片段的 UI。
+如果片段並未提供 UI 的話,則可以傳回空值。
+</dd>
+  <dt>{@link android.app.Activity#onPause onPause()}</dt>
+  <dd>系統會在使用者初次離開片段時呼叫這個方法 (即使使用者這麼做未必會刪除片段)。
+您通常需要透過這個方法提交要在目前的使用者工作階段以外保留的任何變更 (原因在於使用者可能不會返回)。
+
+</dd>
+</dl>
+
+<p>大多數應用程式都至少必須針對每個片段實作這三個方法,不過您也必須使用幾個其他回呼方法來控制片段生命週期的各種狀態。
+
+如要進一步瞭解所有回呼方法,請參閱<a href="#Lifecycle">處理片段生命週期</a>。
+</p>
+
+
+<p>以下列出幾個您可能會想擴充的子類別 (基礎 {@link
+android.app.Fragment} 類別除外):</p>
+
+<dl>
+  <dt>{@link android.app.DialogFragment}</dt>
+  <dd>顯示浮動對話方塊。使用這個類別建立對話方塊是使用 {@link android.app.Activity} 類別中的對話方塊協助程式方法的推薦替代方法,這是因為使用此類別可將片段對話方塊納入 Activity 所管理的片段堆疊,讓使用者得已返回已關閉的片段。
+
+
+</dd>
+
+  <dt>{@link android.app.ListFragment}</dt>
+  <dd>顯示配接器 (例如 {@link
+android.widget.SimpleCursorAdapter}) 所管理的項目清單;與 {@link android.app.ListActivity} 方法相似。這個方法可提供數種管理清單檢視畫面的方法,例如可處理點擊事件的 {@link
+android.app.ListFragment#onListItemClick(ListView,View,int,long) onListItemClick()}回呼。
+
+</dd>
+
+  <dt>{@link android.preference.PreferenceFragment}</dt>
+  <dd>列出 {@link android.preference.Preference} 物件的階層;與
+{@link android.preference.PreferenceActivity} 方法相似。為應用程式建立「設定」Activity 時,這個方法就非常實用。
+</dd>
+</dl>
+
+
+<h3 id="UI">新增使用者介面</h3>
+
+<p>片段通常是當作某 Activity 的使用者介面使用,而且可將自身的版面配置提供給 Activity。
+</p>
+
+<p>如要提供片段的版面配置,您必須實作 {@link
+android.app.Fragment#onCreateView onCreateView()} 回呼方法,讓 Android 系統呼叫片段顯示其版面配置。
+實作這個方法時,您必須傳回
+{@link android.view.View} (片段版面配置的根目錄)。</p>
+
+<p class="note"><strong>注意:</strong>如果您的片段是 {@link
+android.app.ListFragment} 的子類別,則實作完畢後系統預設會傳回 {@link android.app.Fragment#onCreateView onCreateView()} 的
+{@link android.widget.ListView},因此您不必加以實作。</p>
+
+<p>如要從 {@link
+android.app.Fragment#onCreateView onCreateView()} 傳回版面配置,您可以從 XML 中定義的<a href="{@docRoot}guide/topics/resources/layout-resource.html">l版面配置資源</a>擴大它。為協助您完成這項作業,{@link android.app.Fragment#onCreateView onCreateView()} 提供了 
+{@link android.view.LayoutInflater} 物件。
+</p>
+
+<p>例如,以下是 {@link android.app.Fragment} 的子類別,可從 
+{@code example_fragment.xml} 檔案載入版面配置:</p>
+
+<pre>
+public static class ExampleFragment extends Fragment {
+    &#64;Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.example_fragment, container, false);
+    }
+}
+</pre>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>建立版面配置</h3>
+  <p>在上方範例中,{@code R.layout.example_fragment} 是應用程式中儲存的
+「{@code example_fragment.xml}」版面配置資源的參照資料。如要瞭解如何在 XML 中建立版面配置,請參閱<a href="{@docRoot}guide/topics/ui/index.html">使用者介面</a>。
+
+</p>
+</div>
+</div>
+
+<p>傳入 {@link android.app.Fragment#onCreateView
+onCreateView()} 的 {@code container} 參數是上層 {@link android.view.ViewGroup} (來自 Activity 的版面配置),系統會將您的片段版面配置插入其中。
+
+{@code savedInstanceState} 參數是 {@link android.os.Bundle},當片段即將恢復時 (如要進一步瞭解還原狀態,請參閱<a href="#Lifecycle">處理片段生命週期</a>),這個參數就會提供先前的片段執行個體的相關資料。
+
+
+</p>
+
+<p>{@link android.view.LayoutInflater#inflate(int,ViewGroup,boolean) inflate()} 方法採用三種引數:
+</p>
+<ul>
+  <li>您想要擴大的版面配置的資源 ID。</li>
+  <li>要設為擴大過後版面配置的上層檢視的 {@link android.view.ViewGroup}。請務必傳遞 {@code
+container},以便讓系統將版面配置參數套用至擴大過後版面配置的根檢視 (由將做為其目標的父檢視所指定)。
+</li>
+  <li>用於指示系統是否要在擴大期間將擴大過後的版面配置附加到 {@link
+android.view.ViewGroup} (第二個參數) 的布林值 (由於系統已將擴大過後的版面配置插入 {@code
+container},因此布林值應為 false &mdash; 如果您傳送 true,會導致系統在最終版面配置中建立多餘的檢視群組)。
+</li>
+</ul>
+
+<p>您現在已瞭解如何建立可提供版面配置的片段了。接著,請將建立好的片段新增至 Activity。
+</p>
+
+
+
+<h3 id="Adding">將片段新增到 Activity 中</h3>
+
+<p>片段通常會將一部分 UI 嵌入主要 Activity 的整體檢視階層中。
+您有兩種方式可將片段新增到 Activity 版面配置:
+</p>
+
+<ul>
+  <li><b>宣告 Activity 版面配置檔案內含的片段。</b>
+<p>選用這種方式時,您可以將片段視為檢視,為其指定版面配置屬性。
+例如,以下是內含兩個片段的 Activity 版面配置檔案:
+</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"&gt;
+    &lt;fragment android:name="com.example.news.ArticleListFragment"
+            android:id="@+id/list"
+            android:layout_weight="1"
+            android:layout_width="0dp"
+            android:layout_height="match_parent" /&gt;
+    &lt;fragment android:name="com.example.news.ArticleReaderFragment"
+            android:id="@+id/viewer"
+            android:layout_weight="2"
+            android:layout_width="0dp"
+            android:layout_height="match_parent" /&gt;
+&lt;/LinearLayout&gt;
+</pre>
+  <p>{@code &lt;fragment&gt;} 中的 {@code android:name} 屬性可指定系統呼叫版面配置中的 {@link
+android.app.Fragment} 類別。</p>
+
+<p>系統建立這個 Activity 版面配置後,就會呼叫版面配置中指定的任何片段,並為每個片段呼叫 {@link android.app.Fragment#onCreateView onCreateView()} 方法,藉此擷取所有片段的版面配置。
+
+系統會插入片段所傳回的 {@link android.view.View} 來取代 {@code &lt;fragment&gt;} 元素。
+</p>
+
+<div class="note">
+  <p><strong>注意:</strong>您必須為每個片段提供專屬識別碼,以便系統在 Activity 重新開始時復原片段 (您也可以使用此識別碼擷取要交易的片段,例如移除片段)。
+
+您有三種方式可提供片段的 ID:
+</p>
+  <ul>
+    <li>提供內含專屬 ID 的 {@code android:id} 屬性。</li>
+    <li>提供內含不重複字串的 {@code android:tag} 屬性。</li>
+    <li>如果您未提供上述兩項屬性,系統會採用容器檢視的 ID。
+</li>
+  </ul>
+</div>
+  </li>
+
+  <li><b>或者,利用程式將片段新增至現有的 {@link android.view.ViewGroup}。</b>
+<p>只要 Activity 處於執行狀態,您都可以將片段新增至 Activity 版面配置。方法很簡單,只要指定您想在其中加入片段的 {@link
+android.view.ViewGroup} 即可。
+</p>
+  <p>如要在 Activity 中進行片段交易 (例如新增、移除或替換片段),請使用 {@link android.app.FragmentTransaction} 中的 API 進行。
+您可以透過以下方式取得 {@link android.app.Activity} 的 {@link android.app.FragmentTransaction} 執行個體:
+</p>
+
+<pre>
+FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()}
+FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
+</pre>
+
+<p>接著,您就可以使用 {@link
+android.app.FragmentTransaction#add(int,Fragment) add()} 方法指定要新增的片段,以及要插入片段的目標檢視。
+例如:</p>
+
+<pre>
+ExampleFragment fragment = new ExampleFragment();
+fragmentTransaction.add(R.id.fragment_container, fragment);
+fragmentTransaction.commit();
+</pre>
+
+  <p>第一個傳入 {@link android.app.FragmentTransaction#add(int,Fragment) add()} 的引數是要在其中插入片段的 {@link android.view.ViewGroup} (使用資源 ID 加以指定),而第二個參數則是要新增的引數。
+
+</p>
+  <p>透過
+{@link android.app.FragmentTransaction} 完成變更後,請呼叫 {@link android.app.FragmentTransaction#commit} 以便讓變更生效。
+</p>
+  </li>
+</ul>
+
+
+<h4 id="AddingWithoutUI">新增不顯示 UI 的片段</h4>
+
+<p>上述範例說明如何將片段新增至 Activity,以提供 UI。但事實上,您也可以使用片段為 Activity 提供背景行為,避免顯示額外的 UI。
+
+</p>
+
+<p>如要新增不顯示使 UI 的片段,請使用 {@link
+android.app.FragmentTransaction#add(Fragment,String)} 從 Activity 新增片段 (請提供片段的不重複字串「標記」,而不是檢視 ID)。
+這樣即可新增片段,但由於該片段並未與 Activity 版面配置中的檢視相關聯,因此不會接收 {@link
+android.app.Fragment#onCreateView onCreateView()} 的呼叫。
+如此一來,您就不必實作該方法。</p>
+
+<p>提供片段的字串標記並不是採用非 UI 片段時的必要步驟 &mdash; 您也可以提供沒有 UI 的片段的字串標記 &mdash; 不過,如果片段沒有 UI,則字串標記將成為識別片段的唯一途徑。
+
+如果您想之後再從 Activity 中取得片段,請使用 {@link android.app.FragmentManager#findFragmentByTag
+findFragmentByTag()}。
+</p>
+
+<p>如需使用沒有 UI 的片段做為背景工作者的 Activity 範例,請參閱 SDK 範例中位於以下路徑的 {@code
+FragmentRetainInstance.java} 範例 (可透過 Android SDK Manager 存取)<code>&lt;sdk_root&gt;/APIDemos/app/src/main/java/com/example/android/apis/app/FragmentRetainInstance.java</code>。
+
+</p>
+
+
+
+<h2 id="Managing">管理片段</h2>
+
+<p>如要管理 Activity 中的片段,請使用 {@link android.app.FragmentManager}。如要取得這些片段,請呼叫 Activity 中的 {@link android.app.Activity#getFragmentManager()}。
+</p>
+
+<p>您可透過 {@link android.app.FragmentManager} 執行下列操作:</p>
+
+<ul>
+  <li>使用 {@link
+android.app.FragmentManager#findFragmentById findFragmentById()} (針對在 Activity 版面配置中提供 UI 的片段) 或 {@link android.app.FragmentManager#findFragmentByTag
+findFragmentByTag()} (針對未提供 UI 的片段) 取得 Activity 中的現有片段。
+</li> 
+  <li>使用 {@link
+android.app.FragmentManager#popBackStack()} (模擬使用者的「返回」<em></em>命令) 將片段從返回堆疊中推出。</li>
+  <li>使用 {@link
+android.app.FragmentManager#addOnBackStackChangedListener addOnBackStackChangedListener()} 針對返回堆疊的變更項目註冊監聽器。</li>
+</ul>
+
+<p>如要進一步瞭解上述方法以及其他方法,請參閱 {@link
+android.app.FragmentManager} 類別說明文件。</p>
+
+<p>如上一節所述,您也可以使用 {@link android.app.FragmentManager} 開啟 {@link android.app.FragmentTransaction},以便進行片段交易 (例如新增及移除片段)。
+
+</p>
+
+
+<h2 id="Transactions">進行片段交易</h2>
+
+<p>使用 Activity 中片段的一項實用功能,就是新增、移除、替換片段以及對它們執行其他動作,藉此反映使用者互動。
+您針對 Activity 提交的每組變更稱為交易,而您可以使用 {@link
+android.app.FragmentTransaction} 中的進行這種交易。
+此外,您也可以儲存對 Activity 所管理的返回堆疊進行的交易,讓使用者能夠往回瀏覽片段變更 (如同往回瀏覽 Activity)。
+
+</p>
+
+<p>您可以從 {@link
+android.app.FragmentManager} 中取得如下所示的 {@link android.app.FragmentTransaction}:</p>
+
+<pre>
+FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()};
+FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
+</pre>
+
+<p>每次交易都是您想同時進行的一組變更。您可以使用 {@link
+android.app.FragmentTransaction#add add()}、{@link android.app.FragmentTransaction#remove remove()}和 {@link android.app.FragmentTransaction#replace replace()} 等方法設定您想針對特定交易進行的變更。
+
+接著,只要呼叫 {@link android.app.FragmentTransaction#commit()},就能將該交易套用至 Activity。
+</p>
+</dl>
+
+<p>不過,您可能會為了新增交易至片段交易返回堆疊,先呼叫 {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()},然後再呼叫 {@link
+android.app.FragmentTransaction#commit()}。
+返回堆疊是由 Activity 所管理,可讓使用者透過按下 [返回]<em></em> 按鈕的方式,返回先前的片段狀態。
+</p>
+
+<p>以下範例可讓您替換片段,並且保留先前的返回堆疊狀態:
+</p>
+
+<pre>
+// Create new fragment and transaction
+Fragment newFragment = new ExampleFragment();
+FragmentTransaction transaction = getFragmentManager().beginTransaction();
+
+// Replace whatever is in the fragment_container view with this fragment,
+// and add the transaction to the back stack
+transaction.replace(R.id.fragment_container, newFragment);
+transaction.addToBackStack(null);
+
+// Commit the transaction
+transaction.commit();
+</pre>
+
+<p>在這個範例中,{@code newFragment} 會針對依據 {@code R.id.fragment_container} ID 識別的版面配置容器,
+替換其中的任何現有片段 (如果有的話)。系統會呼叫 {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()},將替換交易儲存到返回堆疊,以便使用者按下 [返回]<em></em> 按鈕來復原交易以及返回上一個片段。
+
+</p>
+
+<p>如果您將多項變更新增至交易 (例如新增另一個 {@link
+android.app.FragmentTransaction#add add()} 或 {@link android.app.FragmentTransaction#remove
+remove()}),並且呼叫 {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()},那麼您在呼叫 {@link android.app.FragmentTransaction#commit commit()} 之前套用的所有變更都會新增至返回堆疊做為單次交易,在這種情況下,按下 [返回]<em></em> 按鈕就能一次復原所有變更。
+
+</p>
+
+<p>您將變更新增至 {@link android.app.FragmentTransaction} 的順序並不會造成任何影響,但請注意以下例外狀況:
+</p>
+<ul>
+  <li>務必最後才呼叫 {@link android.app.FragmentTransaction#commit()}</li>
+  <li>如果您是將多個片段新增至同一容器,那麼您新增片段的順序將決定這些片段在檢視階層中的顯示順序
+</li>
+</ul>
+
+<p>如果您並未在進行移除片段的交易時呼叫 {@link android.app.FragmentTransaction#addToBackStack(String)
+addToBackStack()},該片段會在您提交交易後遭到刪除,而且使用者無法往回瀏覽至該片段。
+不過,如果您在移除片段時呼叫 {@link android.app.FragmentTransaction#addToBackStack(String) addToBackStack()},則該片段將會遭到「停止」<em></em>,而且會在使用者往回瀏覽時繼續進行。
+
+
+</p>
+
+<p class="note"><strong>提示:</strong>您可以在進行每次片段交易時套用交易動畫,方法是在提交交易前呼叫 {@link android.app.FragmentTransaction#setTransition setTransition()}。
+
+</p>
+
+<p>呼叫 {@link android.app.FragmentTransaction#commit()} 並不會立即進行交易,
+而是會讓系統排定 UI 執行緒 (「主要」執行緒) 可執行這個方法時,立即加以執行。
+不過,您可以視需要透過 UI 執行緒呼叫 {@link
+android.app.FragmentManager#executePendingTransactions()},立即執行 {@link android.app.FragmentTransaction#commit()} 所提交的交易。
+您通常不必這樣做,除非該交易是其他執行緒的工作的必要元件。
+</p>
+
+<p class="caution"><strong>注意:</strong>您可以使用 {@link
+android.app.FragmentTransaction#commit commit()} 來提交交易,但僅限於 Activity <a href="{@docRoot}guide/components/activities.html#SavingActivityState">儲存其狀態</a>之前 (也就是使用者離開 Activity 之前)。
+如果您在這個時間點之後嘗試提交交易,就會發生例外狀況,
+這是因為狀態會在交易提交後遺失 (如果需要復原 Activity 的話)。
+如果想確保狀態遺失不會造成任何影響,請使用 {@link
+android.app.FragmentTransaction#commitAllowingStateLoss()} 提交交易。</p>
+
+
+
+
+<h2 id="CommunicatingWithActivity">與 Activity 通訊</h2>
+
+<p>雖然 {@link android.app.Fragment} 是實作成不同於
+{@link android.app.Activity} 的物件,而且可在多個 Activity 中使用,特定片段執行個體仍會直接與含有該物件的 Activity 建立關聯。
+</p>
+
+<p>因此,片段可存取內含{@link
+android.app.Fragment#getActivity()} 的 {@link android.app.Activity} 執行個體,以及輕鬆進行在 Activity 版面配置中尋找檢視等工作:
+</p>
+
+<pre>
+View listView = {@link android.app.Fragment#getActivity()}.{@link android.app.Activity#findViewById findViewById}(R.id.list);
+</pre>
+
+<p>相同地,您的 Activity 可利用 {@link
+android.app.FragmentManager#findFragmentById findFragmentById()} 或 {@link
+android.app.FragmentManager#findFragmentByTag findFragmentByTag()} 從 {@link android.app.FragmentManager} 中取得 {@link android.app.Fragment} 參照資料,以呼叫片段中的方法。
+例如:</p>
+
+<pre>
+ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
+</pre>
+
+
+<h3 id="EventCallbacks">為 Activity 建立事件回呼</h3>
+
+<p>在某些情況下,您可能需要可用來與 Activity 分享事件的片段。如果您需要這種片段,建議您在片段內定義回呼介面,然後要求主要 Activity 實作該片段。
+
+當 Activity 透過介面接收回呼後,即可視需要與版面配置中的其他片段分享這項資訊。
+</p>
+
+<p>例如,假設新聞應用程式的 Activity 中有兩個片段 &mdash; 一個用於顯示文章清單 (片段 A),另一個用於顯示文章 (片段 B) &mdash; 其中的片段 A 必須告知 Activity 使用者選取清單項目的時間點,以便通知片段 B 顯示文章。
+
+在這個範例中,{@code OnArticleSelectedListener} 介面是在片段 A 中完成宣告:
+</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    ...
+    // Container Activity must implement this interface
+    public interface OnArticleSelectedListener {
+        public void onArticleSelected(Uri articleUri);
+    }
+    ...
+}
+</pre>
+
+<p>接著,代管片段的 Activity 會實作 {@code OnArticleSelectedListener} 介面,並且覆寫 {@code onArticleSelected()} 以便將片段 A 的事件告知片段 B。為了確保主要 Activity 可實作該介面,片段 A 的 {@link
+android.app.Fragment#onAttach onAttach()} 回呼方法 (系統將片段新增至 Activity 時會呼叫這種方法) 轉換傳入 {@link android.app.Fragment#onAttach
+onAttach()} 的 {@link android.app.Activity},藉此呼叫 {@code OnArticleSelectedListener} 執行個體:
+
+
+
+
+</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    OnArticleSelectedListener mListener;
+    ...
+    &#64;Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        try {
+            mListener = (OnArticleSelectedListener) activity;
+        } catch (ClassCastException e) {
+            throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener");
+        }
+    }
+    ...
+}
+</pre>
+
+<p>如果 Activity 並未實作介面,那麼片段會擲回
+{@link java.lang.ClassCastException}。成功擲回時,{@code mListener} 成員會保留 Activity 所實作 
+{@code OnArticleSelectedListener} 的參照資料,以便片段 A 呼叫 {@code OnArticleSelectedListener} 介面定義的方法與 Activity 分享事件。
+
+例如,假設片段 A 是
+{@link android.app.ListFragment} 的延伸,則每當使用者點擊清單項目時,系統就會呼叫片段中的 {@link android.app.ListFragment#onListItemClick
+onListItemClick()},讓該方法呼叫 {@code onArticleSelected()} 以便與 Activity 分享事件:
+
+</p>
+
+<pre>
+public static class FragmentA extends ListFragment {
+    OnArticleSelectedListener mListener;
+    ...
+    &#64;Override
+    public void onListItemClick(ListView l, View v, int position, long id) {
+        // Append the clicked item's row ID with the content provider Uri
+        Uri noteUri = ContentUris.{@link android.content.ContentUris#withAppendedId withAppendedId}(ArticleColumns.CONTENT_URI, id);
+        // Send the event and Uri to the host activity
+        mListener.onArticleSelected(noteUri);
+    }
+    ...
+}
+</pre>
+
+<p>傳入 {@link
+android.app.ListFragment#onListItemClick onListItemClick()} 的 {@code id} 參數是使用者所點擊項目的資料列 ID,可讓 Activity (或其他片段) 用來從應用程式的 {@link
+android.content.ContentProvider} 擷取文章。
+</p>
+
+<p><!--To see a complete implementation of this kind of callback interface, see the <a
+href="{@docRoot}resources/samples/NotePad/index.html">NotePad sample</a>. -->如要進一步瞭解如何使用內容供應程式,請參閱<a href="{@docRoot}guide/topics/providers/content-providers.html">內容供應程式</a>。
+</p>
+
+
+
+<h3 id="ActionBar">將項目新增到動作列中</h3>
+
+<p>片段可實作
+{@link android.app.Fragment#onCreateOptionsMenu(Menu,MenuInflater) onCreateOptionsMenu()} 來為 Activity 的<a href="{@docRoot}guide/topics/ui/menus.html#options-menu">選項選單</a> (以及<a href="{@docRoot}guide/topics/ui/actionbar.html">動作列</a>) 提供選單項目。不過,您必須在呼叫 {@link
+android.app.Fragment#onCreate(Bundle) onCreate()} 時呼叫 {@link
+android.app.Fragment#setHasOptionsMenu(boolean) setHasOptionsMenu()},告知系統該片段會新增項目到「選項選單」,這個方法才能接收呼叫 (否則該片段將無法接收
+{@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()} 的呼叫)。
+
+</p>
+
+<p>您之後透過片段新增到「選項選單」的任何物件都會附加到現有的選單項目。
+該片段也會在使用者選取選單項目時接收 {@link
+android.app.Fragment#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} 的回呼。
+</p>
+
+<p>此外,您也可以在片段版面配置中註冊檢視來提供內容選單,方法是呼叫 {@link
+android.app.Fragment#registerForContextMenu(View) registerForContextMenu()}。當使用者開啟內容選單時,片段就會接收 {@link
+android.app.Fragment#onCreateContextMenu(ContextMenu,View,ContextMenu.ContextMenuInfo)
+onCreateContextMenu()} 的呼叫。
+而當使用者選取某個項目時,片段則會接收 {@link
+android.app.Fragment#onContextItemSelected(MenuItem) onContextItemSelected()} 的呼叫。</p>
+
+<p class="note"><strong>注意:</strong>雖然片段會在使用者選取項目時,針對所有新增的選單項目接收回呼,不過最先在使用者選取選單項目時接收個別回呼的是 Activity。
+
+如果 Activity 在使用者選取項目時所實作的回呼無法處理所選項目,則系統會將該事件傳送到片段的回呼中。
+這種情況會發生在「選項選單」和內容選單。
+</p>
+
+<p>如要進一步瞭解選單,請參閱<a href="{@docRoot}guide/topics/ui/menus.html">選單</a>和<a href="{@docRoot}guide/topics/ui/actionbar.html">動作列</a>開發人員指南。</p>
+
+
+
+
+<h2 id="Lifecycle">處理片段生命週期</h2>
+
+<div class="figure" style="width:350px">
+<img src="{@docRoot}images/activity_fragment_lifecycle.png" alt="" />
+<p class="img-caption"><strong>圖 3.</strong>Activity 生命週期對片段生命週期造成的影響。
+</p>
+</div>
+
+<p>管理片段生命週期的方式與管理 Activity 生命週期十分雷同。與 Activity 相同,片段有以下三種狀態:
+</p>
+
+<dl>
+  <dt><i>已繼續</i></dt>
+    <dd>系統會在執行中的 Activity 內顯示片段。</dd>
+
+  <dt><i>已暫停</i></dt>
+    <dd>前景中有其他具備焦點的 Activity,但系統仍會顯示含有這個片段的 Activity (前景 Activity 處於半透明狀態,或是未覆蓋整個螢幕)。
+
+</dd>
+
+  <dt><i>已停止</i></dt>
+    <dd>系統不會顯示片段。這可能是因為主要 Activity 已停止,或是加到返回堆疊的片段已從 Activity 中移除。
+已停止的片段仍處於有效狀態 (系統會保留所有狀態和成員資訊),
+但使用者無法看到這類片段,而且當 Activity 遭到刪除時,這些片段也會一併刪除。
+</dd>
+</dl>
+
+<p>與 Activity 相同,您可以使用 {@link
+android.os.Bundle} 保留片段的狀態,以便在 Activity 的處理程序遭到刪除後想重新建立 Activity 時,還原片段狀態。
+您可以在片段的 {@link
+android.app.Fragment#onSaveInstanceState onSaveInstanceState()} 回呼期間儲存狀態,並且在
+{@link android.app.Fragment#onCreate onCreate()}、{@link
+android.app.Fragment#onCreateView onCreateView()} 或 {@link
+android.app.Fragment#onActivityCreated onActivityCreated()} 時還原狀態。如要進一步瞭解如何儲存狀態,請參閱 <a href="{@docRoot}guide/components/activities.html#SavingActivityState">Activity</a>。
+
+</p>
+
+<p>Activity 與片段生命週期之間最明顯的差異是,生命週期儲存在個別返回堆疊的方式。
+在預設情況下,Activity 停止後會插入系統所管理的 Activity 堆疊,方便使用者按下 [返回]<em></em> 按鈕來返回該 Activity (如<a href="{@docRoot}guide/components/tasks-and-back-stack.html">工作和返回堆疊</a>所述)。不過,片段只會在您進行移除片段的交易期間,呼叫 {@link
+android.app.FragmentTransaction#addToBackStack(String) addToBackStack()} 來要求系統儲存執行個體時,插入主要 Activity 所管理的返回堆疊。
+
+
+
+
+</p>
+
+<p>在其他情況下,管理片段生命週期的方式與管理 Activity 生命週期十分雷同。
+因此,<a href="{@docRoot}guide/components/activities.html#Lifecycle">管理 Activity 生命週期</a>的做法同樣適用於片段。
+不過,建議您參考相關資源,瞭解 Activity 生命週期對片段生命週期造成的影響。
+</p>
+
+<p class="caution"><strong>注意:</strong>如果您需要 {@link android.app.Fragment} 的
+{@link android.content.Context} 物件,請呼叫 {@link android.app.Fragment#getActivity()}。不過,請務必只在確定片段是附加到 Activity 的情況下,再呼叫 {@link android.app.Fragment#getActivity()}。
+
+如果片段未附加到 Activity,或是片段因超過生命週期而遭到卸除,則 {@link android.app.Fragment#getActivity()} 將傳回空值。
+</p>
+
+
+<h3 id="CoordinatingWithActivity">調整 Activity 生命週期</h3>
+
+<p>內含片段的 Activity 的生命週期會直接影響片段的生命週期,這樣一來,Activity 的每次生命週期回呼會針對每個片段產生相似的回呼。
+
+例如,當 Activity 收到 {@link android.app.Activity#onPause} 後,Activity 中的每個片段都會收到 {@link android.app.Fragment#onPause}。
+</p>
+
+<p>不過,片段有幾個額外的生命週期回呼,可用於處理與 Activity 之間的特殊互動,以執行建置或刪除片段 UI 等動作。以下是這些額外的回呼方法:
+
+</p>
+
+<dl>
+  <dt>{@link android.app.Fragment#onAttach onAttach()}</dt>
+    <dd>當片段與 Activity 建立關聯時,系統就會呼叫這個方法 ({@link
+android.app.Activity} 會傳入與片段相關聯的 Activity)。</dd>
+  <dt>{@link android.app.Fragment#onCreateView onCreateView()}</dt>
+    <dd>系統會呼叫這個方法來建立與片段相關聯的檢視階層。</dd>
+  <dt>{@link android.app.Fragment#onActivityCreated onActivityCreated()}</dt>
+    <dd>當 Activity 的 {@link android.app.Activity#onCreate
+onCreate()} 方法成功傳回時,系統就會呼叫這個方法。</dd>
+  <dt>{@link android.app.Fragment#onDestroyView onDestroyView()}</dt>
+    <dd>當使用者移除與片段相關聯的檢視階層時,系統就會呼叫這個方法。</dd>
+  <dt>{@link android.app.Fragment#onDetach onDetach()}</dt>
+    <dd>當使用者將片段與 Activity 解除關聯時,系統就會呼叫這個方法。</dd>
+</dl>
+
+<p>如圖 3 所述,片段生命週期的流程會受到主要 Activity 的影響。
+您可以透過該圖片瞭解 Activity 的連續狀態如何決定片段要接收的回呼方法。
+例如,當 Activity 收到 {@link
+android.app.Activity#onCreate onCreate()} 回呼後,Activity 中的片段就不會收到
+{@link android.app.Fragment#onActivityCreated onActivityCreated()} 以外的回呼。</p>
+
+<p>Activity 一旦進入已恢復狀態,您便可視需要在 Activity 中新增或移除片段。
+因此,只有處於已恢復狀態的 Activity 會影響片段的生命週期。
+</p>
+
+<p>不過,當 Activity 不再處於已恢復狀態後,Activity 就會再次推送片段的生命週期。
+</p>
+
+
+
+
+<h2 id="Example">範例說明</h2>
+
+<p>以下提供使用兩個片段建立兩個面板的版面配置的 Activity 範例,藉此綜合說明本文所述內容。
+下方 Activity 包含一個用於顯示莎士比亞劇作清單的片段,以及另一個用於在使用者選取清單項目時顯示劇作摘要的片段。
+
+這個 Activity 範例同時示範了如何根據螢幕設定提供不同的片段設定。
+</p>
+
+<p class="note"><strong>注意:</strong>如需這個 Activity 的完整原始碼,請查閱 
+<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.html">{@code
+FragmentLayout.java}</a>。</p>
+
+<p>主要 Activity 會在 {@link
+android.app.Activity#onCreate onCreate()} 時以常見的方式套用版面配置:</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java main}
+
+<p>Activity 套用的版面配置為 {@code fragment_layout.xml}:</p>
+
+{@sample development/samples/ApiDemos/res/layout-land/fragment_layout.xml layout}
+
+<p>使用這個版面配置可讓系統在 Activity 載入版面配置時,呼叫 {@code TitlesFragment} (這個類別會列出劇本名稱),而 {@link android.widget.FrameLayout} (顯示劇本摘要的片段將納入的目標類別) 則會佔用螢幕右側的空間,但在一開始會保持空白狀態。
+
+
+如下方所示,系統只會在使用者從清單中選取項目後,才將片段插入 {@link android.widget.FrameLayout}。
+</p>
+
+<p>不過,並非所有螢幕設定都有足夠的空間同時並排顯示劇作清單以及劇作摘要。
+因此,上方版面配置只適用於橫向螢幕設定,系統會將它儲存在 {@code res/layout-land/fragment_layout.xml} 中。
+</p>
+
+<p>而在螢幕為直向的情況下,系統會套用儲存在 {@code res/layout/fragment_layout.xml} 中的以下版面配置:
+</p>
+
+{@sample development/samples/ApiDemos/res/layout/fragment_layout.xml layout}
+
+<p>這個版面配置只包含 {@code TitlesFragment}。也就是說,如果裝置採用直向螢幕設定,系統只會顯示劇作名稱清單。
+因此,當使用者在採用這種設定的裝置上點擊清單項目後,應用程式就會啟動新 Activity 來顯示劇作摘要,而不是載入第二個片段。
+
+</p>
+
+<p>接著,請看看片段類別如何達到以上目標。首先是用於顯示莎士比亞劇作名稱清單的 {@code
+TitlesFragment}。這個片段會延伸 {@link
+android.app.ListFragment},並且依據該類別控制大多數的清單檢視工作。</p>
+
+<p>如果您檢查這個程式碼,將會發現使用者點擊清單項目後會觸發兩種行為:視採用的版面配置而定,系統會建立並呈現新的片段,以便在同一 Activity 中顯示詳細資料 (將片段加到 {@link
+android.widget.FrameLayout}),或是啟動新的 Activity (藉此顯示片段)。
+
+</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java titles}
+
+<p>第二個片段 {@code DetailsFragment} 則會針對
+{@code TitlesFragment} 中,使用者所選清單項目的劇本摘要:</p>
+ 
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java details}
+
+<p>針對 {@code TitlesFragment} 類別發出的回呼,如果使用者點擊清單項目,而且目前的版面配置「並未」<em></em>包含 {@code R.id.details} 檢視 ({@code DetailsFragment} 所屬的檢視),則應用程式會執行 {@code DetailsActivity} Activity 來顯示項目內容。
+
+
+</p>
+
+<p>以下是會在螢幕採用橫向版面設定時,嵌入 {@code DetailsFragment} 以顯示所選劇本摘要的 {@code DetailsActivity}:
+</p>
+
+{@sample development/samples/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java
+details_activity}
+ 
+<p>請注意,這個 Activity 會在螢幕採用橫向版面配置的情況下自行結束,因此主要 Activity 會接續顯示 {@code TitlesFragment} 旁的 {@code DetailsFragment}。如果使用者在採用直向版面配置的裝置上執行 {@code DetailsActivity},然後將該裝置旋轉成橫向 (這會重新執行目前的 Activity),就可能會發生這種情況。
+
+
+</p>
+
+
+<p>如需更多使用片段的範例 (以及本範例的原始檔案),請參閱<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/index.html#Fragment">ApiDemos</a> 所提供的 API Demos 範例應用程式 (可透過 <a href="{@docRoot}resources/samples/get.html">SDK 元件範本</a>下載)。
+
+</p>
+
+
diff --git a/docs/html-intl/intl/zh-tw/guide/components/fundamentals.jd b/docs/html-intl/intl/zh-tw/guide/components/fundamentals.jd
new file mode 100644
index 0000000..d3b3c28
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/components/fundamentals.jd
@@ -0,0 +1,480 @@
+page.title=應用程式基礎知識
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本文件內容</h2>
+<ol>
+<li><a href="#Components">應用程式元件</a>
+  <ol>
+    <li><a href="#ActivatingComponents">啟用元件</a></li>
+  </ol>
+</li>
+<li><a href="#Manifest">宣示說明檔案</a>
+  <ol>
+    <li><a href="#DeclaringComponents">宣告元件</a></li>
+    <li><a href="#DeclaringRequirements">宣告應用程式需求</a></li>
+  </ol>
+</li>
+<li><a href="#Resources">應用程式資源</a></li>
+</ol>
+</div>
+</div>
+
+<p>Android 應用程式是以 Java 程式語言編寫而成。Android SDK 工具可將您的程式碼 &mdash; 連同任何相關資料和資源檔案 &mdash; 編入 APK (
+ <i>Android 套件,</i>使用 {@code .apk} 後綴字詞的封存檔)。
+APK 檔案包含 Android 應用程式的所有內容,搭載 Android 作業系統的裝置會使用這種檔案來安裝應用程式。
+</p>
+
+<p>Android 應用程式安裝到裝置之後,便可在專屬的安全性沙箱中執行: </p>
+
+<ul>
+ <li>Android 作業系統是一種支援多位使用者的 Linux 系統;在這種系統中,每款應用程式即代表不同的使用者。
+</li>
+
+<li>在預設情況下,系統會為每款應用程式指派一個不重複 Linux 使用者 ID (只有系統可使用這個 ID,應用程式無法取得這項資訊)。
+系統會為應用程式中的所有檔案設定權限,因此只有該應用程式指派的使用者 ID 可存取這些檔案。
+ </li>
+
+<li>所有處理程序都有專屬的虛擬機器 (VM),供系統在獨立環境中執行應用程式的程式碼。
+</li>
+
+<li>在預設情況下,每款應用程式會在專屬的 Linux 處理程序中執行。Android 會在需要執行應用程式的任何元件時啟動處理程序,並且在不必執行應用程式元件,或系統必須復原記憶體供其他應用程式使用時關閉處理程序。
+
+</li>
+</ul>
+
+<p>如此一來,Android 系統就會實作「最低權限原則」<em></em>。換句話說,在預設情況下,所有應用程式只能存取執行工作時所需的元件。
+
+這樣一來,應用程式便無法存取系統的某些部分,藉此建立十分安全的執行環境。
+</p>
+
+<p>不過,應用程式可透過一些方式與其他應用程式分享資料,以及存取系統服務:
+</p>
+
+<ul>
+  <li>兩款應用程式可共用相同的 Linux 使用者 ID,以便存取彼此的檔案。
+為了節省系統資源,共用相同使用者 ID 的應用程式可在相同 Linux 處理程序中執行,以及共用相同的 VM (前提是應用程式必須使用相同的憑證進行簽署)。
+
+</li>
+  <li>應用程式可要求存取裝置資料 (例如使用者的聯絡人資料、簡訊、掛載式儲存空間 (SD 卡)、相機、藍牙等)。
+使用者必須在安裝期間授予所有應用程式權限。
+</li>
+</ul>
+
+<p>本文提供有關 Android 應用程式如何在系統中運作的基本概念,其餘部分則說明以下幾點:
+</p>
+<ul>
+  <li>定義應用程式的核心架構元件。</li>
+  <li>用於宣告應用程式所需元件和裝置功能的宣示說明檔案。
+</li>
+  <li>應用程式的程式碼以外的資源;這些資源可讓您的應用程式針對各種裝置設定最佳化本身的行為。
+</li>
+</ul>
+
+
+
+<h2 id="Components">應用程式元件</h2>
+
+<p>應用程式元件是 Android 應用程式的重要設計模組。每個元件 都是系統進入您應用程式的不同要點。並非所有元件都是使用者的實際進入點;某些元件的定義取決於其他元件,但所有元件都是獨立的個體,扮演著特定角色 &mdash; 換句話說,每個元件都是獨特的設計模組,可協助定義您應用程式的整體行為。
+
+
+
+</p>
+
+<p>應用程式元件可分為 4 種不同類型。每種類型的用途和生命週期均不相同,可定義元件的建立及刪除方式。
+</p>
+
+<p>以下是應用程式元件的 4 種類型:</p>
+
+<dl>
+
+<dt><b>Activity</b></dt>
+
+<dd>單一 <i>Activity</i> 代表顯示使用者介面的一個畫面。例如,電子郵件應用程式可包含一個用於顯示新郵件清單的 Activity、一個用於撰寫郵件的 Activity,以及一個用於閱讀郵件的 Activity。
+
+雖然電子郵件應用程式的 Activity 會共同運作,以提供豐富的使用者體驗,不過每個 Activity 都是不同的個體。
+
+因此,其他應用程式可執行其中任何一項 Activity (如果電子郵件應用程式允許的話)。
+例如,相機應用程式可在電子郵件應用程式中,執行用於撰寫新郵件的 Activity,以便讓使用者分享相片。
+
+
+<p>Activity 是實作成 {@link android.app.Activity} 的子類別;詳情請參閱 <a href="{@docRoot}guide/components/activities.html">Activity</a> 開發人員指南。
+
+</p>
+</dd>
+
+
+<dt><b>服務</b></dt>
+
+<dd>單一 <i>服務</i> 是在背景執行的元件,用於進行長期作業或遠端處理程序工作。
+服務並不會提供使用者介面。
+例如,服務可在使用者位於其他應用程式時在背景撥放音樂,或是透過網路擷取資料,同時允許使用者與 Activity 進行互動。
+
+其他元件 (例如 Activity) 可啟動並讓服務執行,或是繫結至 Activity 以便與其進行互動。
+
+
+<p>服務是實作成 {@link android.app.Service} 的子類別;詳情請參閱<a href="{@docRoot}guide/components/services.html">服務</a>開發人員指南。
+
+</p>
+</dd>
+
+
+<dt><b>內容供應程式</b></dt>
+
+<dd>單一 <i>內容供應程式</i> 可管理一組已分享的應用程式資料。您可以將資料儲存在檔案系統、SQLite 資料庫、網路上,或是您應用程式可存取的任何其他永久儲存空間。
+
+其他應用程式可透過內容供應程式查詢或甚至修改資料 (如果內容供應程式允許這麼做的話)。
+例如,Android 系統會提供用於管理使用者聯絡資訊的內容供應程式。
+因此,任何具備適當權限的應用程式均可查詢內容供應程式的一部分 (例如 {@link
+android.provider.ContactsContract.Data}),以便讀取及寫入有關特定使用者的相關資訊。
+
+
+<p>此外,內容供應程式也可用於讀取及寫入只有您應用程式能存取的不公開資料。
+例如,<a href="{@docRoot}resources/samples/NotePad/index.html">Note Pad</a> 範例應用程式可使用內容供應程式儲存記事。
+</p>
+
+<p>內容供應程式是實作成 {@link android.content.ContentProvider} 的子類別,而且必須實作一組標準 API 以便讓其他應用程式執行交易。
+
+如需詳細資訊,請參閱<a href="{@docRoot}guide/topics/providers/content-providers.html">內容供應程式</a>開發人員指南。
+</p>
+</dd>
+
+
+<dt><b>廣播接收器</b></dt>
+
+<dd>單一 <i>廣播接收器</i> 是一種元件,可回應整個系統的廣播通知。
+大多數廣播都是由系統所發出 &mdash; 例如,系統會發出廣播來通知使用者螢幕已關閉、電池電量不足,或相片已拍攝完成。此外,應用程式也可發出廣播 &mdash; 例如說發出廣播來通知其他應用程式特定資料已下載到裝置,可供它們使用。
+
+
+雖然廣播接收器無法顯示使用者介面,但它們可<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">建立狀態列通知</a>,告訴使用者發生了廣播事件。
+
+具體而言,廣播接收器只是其他元件的「閘道」,用於執行極少量的工作。
+例如,廣播接收器可啟動服務依據事件執行特定工作。
+
+
+<p>廣播接收器是實作為成 {@link android.content.BroadcastReceiver} 的子類別,而每個廣播都是由 {@link android.content.Intent} 物件所發出。
+如需詳細資訊,請參閱 {@link android.content.BroadcastReceiver} 類別。
+</p>
+</dd>
+
+</dl>
+
+
+
+<p>Android 系統設計的一項特色是,任何應用程式都可啟動其他應用程式的元件。
+例如,假設您想讓使用者透過裝置相機拍攝相片,您的應用程式可利用其他具備相關功能的應用程式 (如果有的話) 以達到這個目標,這樣您就不必自行建立用於拍攝相片的 Activity。
+
+您不需要納入或連結相機應用程式的程式碼,只要啟動相機應用程式中用於拍攝像片的 Activity 即可。
+
+
+啟動相關 Activity 後,系統就會將相片傳回您的應用程式供您使用。對於使用者而言,相機就宛如是您應用程式的一部分。
+</p>
+
+<p>當系統啟動某個元件後,就會啟動該應用程式的處理程序 (如果該應用程式目前並非處於執行中狀態) 並且呼叫該元件所需的類別。
+例如,假設您的應用程式啟動相機應用程式中用於拍攝相片的 Activity,則該 Activity 會在隸屬於相機應用程式的處理程序中執行,而不是您應用程式的處理程序。因此,與大多數其他系統的應用程式不同,Android 應用程式沒有單一進入點 (例如沒有 {@code main()} 函式)。
+
+
+
+</p>
+
+<p>系統是在個別處理程序 (具備檔案權限,可限制其他應用程式存取) 中執行每款應用程式,因此您的應用程式無法直接啟動其他應用程式的元件,不過 Android 系統可以。
+
+基於這個原因,如要啟動其他應用程式的元件,您必須向指定「意圖」<em></em>的系統發送訊息,以啟動特定元件。
+
+系統隨後會為您啟用所需的元件。</p>
+
+
+<h3 id="ActivatingComponents">啟用元件</h3>
+
+<p>4 種元件類型的其中 3 種 &mdash; Activity、服務和廣播接收器 &mdash; 是透過「意圖」<em></em>這種非同步訊息啟用。意圖會在執行階段將元件與彼此繫結 (您可以意圖想成要求其他元件進行動作的傳令員),不論元件是否屬於您的應用程式。
+
+
+
+</p>
+
+<p>意圖是使用 {@link android.content.Intent} 物件建立而成,該物件可定義訊息來啟用特定元件或特定「類型」<em></em>的元件 &mdash; 意圖可以採取明確或隱含設定。
+
+</p>
+
+<p>針對 Activity 和服務,意圖會定義要執行的動作 (例如「查看」或「傳送」某項目),並且可能會指定執行動作的目標資料 URI (以及通知要啟用的元件)。
+
+例如,意圖可傳達某 Activity 的要求,顯示圖片或開啟網頁。
+在某些情況下,您可以啟動 Activity 來接收結果,此時該 Activity 也會傳回{@link android.content.Intent} 的結果 (例如,您可以發出意圖讓使用者挑選聯絡人資料,並將該資訊傳回給您 &mdash; 傳回意圖會包含指向所選聯絡人的 URI )。
+
+
+
+</p>
+
+<p>針對廣播接收器,意圖只會定義要廣播的通知 (例如,用於通知裝置電量不足的廣播只會包含指出「電池電量不足」的已知動作字串)。
+
+</p>
+
+<p>其他元件類型和內容供應程式並非由意圖所啟用,而是在受 {@link android.content.ContentResolver} 發出的要求所指定時由系統啟用。
+內容解析程式可處理內容供應程式的所有直接交易,因此與供應程式進行交易的元件不必呼叫 {@link
+android.content.ContentResolver} 物件的方法。
+
+這樣會在內容供應程式與要求資訊 (基於安全目的) 之間保留抽象層。
+</p>
+
+<p>用於啟用各種元件的方法有以下幾種:</p>
+<ul>
+  <li>將 {@link android.content.Intent} 傳送到 {@link android.content.Context#startActivity
+startActivity()} 或 {@link android.app.Activity#startActivityForResult startActivityForResult()} (如果您想讓 Activity 傳回結果的話) 即可啟動 Activity (或是指派新工作給 Activity)。
+
+</li>
+  <li>將 {@link android.content.Intent} 傳送到 {@link android.content.Context#startService
+startService()} 即可啟動服務 (或是指派新指示給正在執行的服務)。
+或者,您也可以將 {@link android.content.Intent} 傳送到
+{@link android.content.Context#bindService bindService()} 來繫結至服務。</li>
+  <li>將 {@link android.content.Intent} 傳送到
+{@link android.content.Context#sendBroadcast(Intent) sendBroadcast()}、{@link
+android.content.Context#sendOrderedBroadcast(Intent, String) sendOrderedBroadcast()} 或 {@link
+android.content.Context#sendStickyBroadcast sendStickyBroadcast()} 等方法即可啟用廣播。</li>
+  <li>對 {@link android.content.ContentResolver} 呼叫{@link
+android.content.ContentProvider#query query()} 即可查詢內容供應程式。</li>
+</ul>
+
+<p>如要進一步瞭解如何使用意圖,請參閱<a href="{@docRoot}guide/components/intents-filters.html">意圖和意圖篩選器</a>。
+如要進一步瞭解如何啟用特定元件,請參閱下列說明文件:
+<a href="{@docRoot}guide/components/activities.html">Activity</a>、<a href="{@docRoot}guide/components/services.html">服務</a>、{@link
+android.content.BroadcastReceiver} 和<a href="{@docRoot}guide/topics/providers/content-providers.html">內容供應程式</a>。</p>
+
+
+<h2 id="Manifest">宣示說明檔案</h2>
+
+<p>Android 系統必須先讀取應用程式的 {@code AndroidManifest.xml} 檔案 (「宣示說明」檔案) 確認應用程式元件確實存在,才能啟動該元件。
+
+您的應用程式必須在這個檔案中宣告本身的所有元件,而該檔案必須位於應用程式專案目錄的根目錄。
+</p>
+
+<p>除了宣告應用程式的元件以外,宣示說明還可以進行許多工作,包括:
+</p>
+<ul>
+  <li>識別應用程式所需的任何使用者權限,例如網際網路存取權或使用者合約的讀取存取權。
+</li>
+  <li>根據應用程式使用的 API,宣告應用程式所需的最低 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API 級別</a>。
+</li>
+  <li>宣告應用程式所使用或所需的硬體和軟體,例如相機、藍牙服務或多點觸控螢幕。
+</li>
+  <li>應用程式需要連結的 API 程式庫 (除了 Android 架構 API 以外),例如 <a href="http://code.google.com/android/add-ons/google-apis/maps-overview.html">Google 地圖程式庫</a>。
+
+</li>
+  <li>還有其他工作</li>
+</ul>
+
+
+<h3 id="DeclaringComponents">宣告元件</h3>
+
+<p>宣告說明的主要工作是將應用程式的元件告知系統。例如,宣告說明檔案可用如下方式宣告 Activity:
+ </p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;manifest ... &gt;
+    &lt;application android:icon="@drawable/app_icon.png" ... &gt;
+        &lt;activity android:name="com.example.project.ExampleActivity"
+                  android:label="@string/example_label" ... &gt;
+        &lt;/activity&gt;
+        ...
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>在 <code><a
+href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>元素中,{@code android:icon} 屬性會指向識別應用程式的圖示資源。
+
+</p>
+
+<p>而在 <code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 元素中,
+{@code android:name} 屬性會指定 {@link
+android.app.Activity} 子類別的完整類別名稱,{@code android:label} 屬性則會指定要當作 Activity 的使用者可見標籤使用的字串。
+</p>
+
+<p>您必須用以下方式宣告所有應用程式元件:</p>
+<ul>
+  <li><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>:Activity 適用的元素
+</li>
+  <li><code><a
+href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>:服務適用的元素
+</li>
+  <li><code><a
+href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>:廣播接收器適用的元素
+</li>
+  <li><code><a
+href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>:內容供應程式適用的元素
+</li>
+</ul>
+
+<p>系統看不到您納入來源但未在宣示說明中宣告的 Activity、服務和內容供應程式,因此系統無法執行這些項目。
+不過,您可在宣示說明宣告廣播接收器,或是透過程式碼以動態方式建立廣播接收器 (將廣播接收器建立為 
+{@link android.content.BroadcastReceiver} 物件),然後呼叫 {@link android.content.Context#registerReceiver registerReceiver()}
+向系統註冊廣播接收器。
+
+</p>
+
+<p>如要進一步瞭解如何為應用程式建立宣示說明檔案,請參閱 <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml 檔案</a>。
+ </p>
+
+
+
+<h3 id="DeclaringComponentCapabilities">宣告元件功能</h3>
+
+<p>如<a href="#ActivatingComponents">啟用元件</a>所述,您可以使用
+{@link android.content.Intent} 來啟動 Activity、服務和廣播接收器。如要這麼做,請在意圖中明確指定目標元件 (使用元件類別名稱)。
+不過,意圖最大的功能在於「隱含意圖」<em></em>的概念。
+隱含意圖可簡單描述要執行的動作類型 (或是執行動作的資料依據) 以及讓系統在裝置中找出可執行動作的元件,然後加以啟動。
+
+
+如果意圖指出有多個元件可執行動作,則使用者可選取要使用的元件。
+</p>
+
+<p>系統會比對接受到的意圖與裝置上其他應用程式的宣示說明檔案中提供的意圖篩選器,藉此識別可回應意圖的元件。
+<i></i>
+</p>
+
+<p>在應用程式的宣示說明中宣告 Activity 時,您可視需要納入宣告 Activity 功能的意圖篩選器,以便讓 Activity 可回應其他應用程式的意圖。
+
+您可以為元件宣告意圖篩選器,方法是將 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code
+&lt;intent-filter&gt;}</a> 元素新增為元件宣告元素的子元素。
+</p>
+
+<p>例如,假設您以用於撰寫新郵件的 Activity 建置電子郵件應用程式,您可以下列方式宣告意圖篩選器來回應「傳送」意圖 (藉此傳送新郵件):
+</p>
+<pre>
+&lt;manifest ... >
+    ...
+    &lt;application ... &gt;
+        &lt;activity android:name="com.example.project.ComposeEmailActivity">
+            &lt;intent-filter>
+                &lt;action android:name="android.intent.action.SEND" />
+                &lt;data android:type="*/*" />
+                &lt;category android:name="android.intent.category.DEFAULT" />
+            &lt;/intent-filter>
+        &lt;/activity>
+    &lt;/application&gt;
+&lt;/manifest>
+</pre>
+
+<p>接著,如果其他應用程式透過 {@link
+android.content.Intent#ACTION_SEND} 動作建立了意圖並傳送到 {@link android.app.Activity#startActivity
+startActivity()},系統就可能會啟動您的 Activity 讓使用者撰寫及傳送郵件。
+</p>
+
+<p>如要進一不瞭解如何建立意圖篩選器,請參閱<a href="{@docRoot}guide/components/intents-filters.html">意圖和意圖篩選器</a>。
+</p>
+
+
+
+<h3 id="DeclaringRequirements">宣告應用程式需求</h3>
+
+<p>並非所有搭載 Android 作業系統的裝置都能提供完整功能。
+為了避免使用者在缺少應用程式所需功能的裝置上安裝您的應用程式,請務必在宣示說明檔案中宣告裝置和軟體需求,清楚定義您的應用程式支援的裝置類型。
+
+
+大多數宣告僅供使用者參考,系統無法讀取,但 Google Play 等外部服務可讀取這些宣示,以便在使用者透過自己的裝置搜尋應用程式時提供篩選功能。
+
+</p>
+
+<p>例如,假設您的應用程式需要相機且採用 Android 2.1 (<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API 級別</a> 7) 導入的 API,建議您用下列方式在宣示說明檔案中宣告這些需求:
+</p> 
+
+<pre>
+&lt;manifest ... >
+    &lt;uses-feature android:name="android.hardware.camera.any"
+                  android:required="true" />
+    &lt;uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" />
+    ...
+&lt;/manifest>
+</pre>
+
+<p>如此一來,「沒有」<em></em>相機且搭載 Android 2.1「以下版本」<em></em>的裝置就無法從 Google Play 安裝您的應用程式。
+</p>
+
+<p>不過,您也可以宣告您的應用程式會使用相機,但相機並非應用程式的「必要」<em></em>配備。
+在這種情況下,應用程式的 <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#required">{@code required}</a>屬性必須設為 {@code "false"},而且應用程式必須在執行階段檢查裝置是否具備相機,並且視需要停用任何相機功能。
+
+</p>
+
+<p>如要進一步瞭解如何管理應用程式與不同裝置的相容性,請參閱<a href="{@docRoot}guide/practices/compatibility.html">裝置相容性</a>。
+
+</p>
+
+
+
+<h2 id="Resources">應用程式資源</h2>
+
+<p>Android 應用程式是以程式碼等其他要素開發而成 &mdash; 例如圖片、音訊檔案以及與應用程式視覺效果相關的其他資源。例如,您必須使用 XML 檔案定義 Activity 使用者介面的動畫、選單、樣式、顏色以及版面配置。
+
+
+使用應用程式資源可協助更新應用程式的各種特性,而不必修改程式碼 &mdash; 或是提供多組替代資源 &mdash; 藉此針對各種裝置設定 (例如不同的語言和螢幕大小) 最佳化您的應用程式。
+
+
+</p>
+
+<p>針對您在 Android 專案中加入的所有資源,SDK 建置工具會定義一個整數 ID,讓您用於從應用程式的程式碼或 XML 中定義的其他資源參照特定資源。
+
+例如,假設您的應用程式含有名為 {@code
+logo.png} 的圖片檔案 (儲存在 {@code res/drawable/} 目錄中),SDK 工具會產生名為 {@code R.drawable.logo} 的資源 ID,讓您用於參照圖片並將其插入使用者介面。
+
+</p>
+
+<p>提供原始碼以外資源的一個重點是針對不同的裝置設定提供替代資源。
+
+例如,您可以在 XML 中定義使用者介面字串,藉此將字串翻譯成其他語言,以及將這些字串儲存成個別檔案。
+接著,視您附加到資源目錄名稱的語言「修飾語」<em></em> (例如代表法文字串值的 {@code res/values-fr/}),以及使用者的語言設定而定,Android 系統會為您的 UI 套用適當的語言字串。
+
+
+</p>
+
+<p>Android 針對替代資源支援各種「修飾語」<em></em>。修飾語是一個簡短字串;您可在資源目錄名稱中加入修飾語,藉此定義應使用這些資源的裝置設定。
+
+例如,您通常需要為 Activity 建立多種版面配置 (視裝置螢幕的方向和大小而定)。
+
+例如,假設裝置螢幕的方向為縱向 (直版),版面配置的按鈕就必須以垂直方向排列;假設裝置螢幕的方向為橫向 (寬版),則版面配置的按鈕就必須以水平方向排列。
+
+如要根據螢幕方向變更版面配置,請建立兩種版面配置,然後為每個版面配置目錄名稱套用適當的修飾語。
+
+如此系統就會根據目前的裝置方向,自動套用適當的版面配置。
+</p>
+
+<p>如要進一步瞭解您可在應用程式中加入的資源類型,以及如何針對不同的裝置設定建立替代資源,請詳閱<a href="{@docRoot}guide/topics/resources/providing-resources.html">提供資源</a>。
+</p>
+
+
+
+<div class="next-docs">
+<div class="col-6">
+  <h2 class="norule">繼續閱讀有關下列主題的說明文章:</h2>
+  <dl>
+    <dt><a href="{@docRoot}guide/components/intents-filters.html">意圖和意圖篩選器</a>
+    </dt>
+    <dd>說明如何使用 {@link android.content.Intent} API 來啟用應用程式元件 (例如 Activity 和服務),以及如何將應用程式元件提供給其他應用程式使用。
+
+</dd>
+    <dt><a href="{@docRoot}guide/components/activities.html">Activity</a></dt>
+    <dd>說明如何建立 {@link android.app.Activity} 類別執行個體,以便讓應用程式的使用者介面提供不同內容。
+</dd>
+    <dt><a href="{@docRoot}guide/topics/resources/providing-resources.html">提供資源</a></dt>
+    <dd>說明 Android 應用程式如何區別應用程式資源與程式碼,包括如何針對特定裝置設定供替代資源。
+
+
+    </dd>
+  </dl>
+</div>
+<div class="col-6">
+  <h2 class="norule">您可能也會想瞭解下列主題:</h2>
+  <dl>
+    <dt><a href="{@docRoot}guide/practices/compatibility.html">裝置相容性</a></dt>
+    <dd>說明 Android 如何在各種裝置上運作,以及如何針對各個裝置最佳化您的應用程式,或針對不同裝置限制應用程式提供的功能。
+
+</dd>
+    <dt><a href="{@docRoot}guide/topics/security/permissions.html">系統權限</a></dt>
+    <dd>說明 Android 如何運用系統權限規定應用程式必須取得使用者同意才能使用特定 API。
+</dd>
+  </dl>
+</div>
+</div>
+
diff --git a/docs/html-intl/intl/zh-tw/guide/components/index.jd b/docs/html-intl/intl/zh-tw/guide/components/index.jd
new file mode 100644
index 0000000..f34c712
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/components/index.jd
@@ -0,0 +1,57 @@
+page.title=應用程式元件
+page.landing=true
+page.landing.intro=Android 的應用程式架構可讓您使用一系列可重複使用的元件,建立內容豐富的新穎應用程式。本節說明如何建置元件來定義應用程式的設計模組,以及如何使用意圖連結這些元件。
+page.metaDescription=Android 的應用程式架構可讓您使用一系列可重複使用的元件,建立內容豐富的新穎應用程式。本節說明如何建置元件來定義應用程式的設計模組,以及如何使用意圖連結這些元件。
+page.landing.image=images/develop/app_components.png
+page.image=images/develop/app_components.png
+
+@jd:body
+
+<div class="landing-docs">
+
+  <div class="col-6">
+    <h3>部落格文章</h3>
+    
+    <a href="http://android-developers.blogspot.com/2012/05/using-dialogfragments.html">
+      <h4>使用 DialogFragments</h4>
+      <p>本文示範如何搭配 v4 支援程式庫 (可針對 Honeycomb 以下版本裝置提供向下相容性支援) 使用 DialogFragments 來顯示簡易的編輯對話方塊,以及透過介面將結果回傳給呼叫「Activity」。</p>
+    </a>
+
+    <a href="http://android-developers.blogspot.com/2011/03/fragments-for-all.html">
+      <h4>適用於各種裝置的片段</h4>
+      <p>我們於今日推出的靜態程式庫可列出相同的 Fragments API (以及新的 LoaderManager 和些許其他類別),讓與 Android 1.6 以下版本相容的應用程式能夠使用片段來建立相容於平板電腦的使用者介面。 </p>
+    </a>
+    
+    <a href="http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html">
+      <h4>運用多個執行緒來提升效能</h4>
+      <p>建立回應式應用程式的建議做法是,最小化您的主要 UI 執行緒所執行的工作數。
+方法是讓應用程式透過其他執行緒處理任何所需執行時間偏長的工作。
+</p>
+    </a>
+  </div>
+
+  <div class="col-6">
+    <h3>培訓</h3>
+    
+    <a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">
+      <h4>管理 Activity 生命週期</h4>
+      <p>本課程說明每個「Activity」執行個體都會接收的生命週期重要回呼方法,並且說明如何使用這些方法,讓 Activity 的運作能符合使用者的預期,以及讓 Activity 在不需要系統資源時不耗用這類資源。
+
+</p>
+    </a>
+
+    <a href="http://developer.android.com/training/basics/fragments/index.html">
+      <h4>使用片段建置動態 UI</h4>
+      <p>本課程示範如何使用片段來設計動態使用者體驗,以及如何針對各種螢幕大小的裝置最佳化您的應用程式使用者體驗,同時讓應用程式繼續支援搭載 Android 1.6 等舊版作業系統的裝置。
+
+</p>
+    </a>
+
+    <a href="http://developer.android.com/training/sharing/index.html">
+      <h4>分享內容</h4>
+      <p>本課程說明幾個使用 Intent API 和 Action Provider 物件在不同應用程式間傳送及接收內容的常見方法。
+</p>
+    </a>
+  </div>
+
+</div>
diff --git a/docs/html-intl/intl/zh-tw/guide/components/intents-filters.jd b/docs/html-intl/intl/zh-tw/guide/components/intents-filters.jd
new file mode 100644
index 0000000..d3edac3
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/components/intents-filters.jd
@@ -0,0 +1,899 @@
+page.title=意圖和意圖篩選器
+page.tags="IntentFilter"
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本文件內容</h2>
+<ol>
+  <li><a href="#Types">意圖類型</a></li>
+  <li><a href="#Building">建置意圖</a>
+    <ol>
+      <li><a href="#ExampleExplicit">明確意圖範例</a></li>
+      <li><a href="#ExampleSend">隱含意圖範例</a></li>
+      <li><a href="#ForceChooser">強制顯示應用程式選擇器</a></li>
+    </ol>
+  </li>
+  <li><a href="#Receiving">接收隱含意圖</a>
+    <ol>
+      <li><a href="#ExampleFilters">篩選器範例</a></li>
+    </ol>
+  </li>
+  <li><a href="#PendingIntent">使用待處理意圖</a></li>
+  <li><a href="#Resolution">意圖解析</a>
+    <ol>
+      <li><a href="#ActionTest">動作測試</a></li>
+      <li><a href="#CategoryTest">類別測試</a></li>
+      <li><a href="#DataTest">資料測試</a></li>
+      <li><a href="#imatch">意圖比對</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>另請參閱</h2>
+<ol>
+<li><a href="{@docRoot}training/basics/intents/index.html">與其他應用程式互動</a></li>
+<li><a href="{@docRoot}training/sharing/index.html">分享內容</a></li>
+</ol>
+
+</div>
+</div>
+
+
+
+
+<p>{@link android.content.Intent} 是可用來向另一個<a href="{@docRoot}guide/components/fundamentals.html#Components">應用程式元件</a>要求動作的傳訊物件。
+
+雖然意圖有幾種方式可加速元件間的通訊,但共有三種基本使用案例:
+</p>
+
+<ul>
+<li><b>如何啟動 Activity:</b>
+<p>{@link android.app.Activity} 代表應用程式中的單一畫面。您可以將 {@link android.content.Intent} 傳送至 {@link android.content.Context#startActivity startActivity()} 來啟動
+{@link android.app.Activity} 的新執行個體。
+{@link android.content.Intent} 可描述要啟動的 Activity 並攜帶任何必要資料。
+</p>
+
+<p>如果您想要在 Activity 完成時收到結果,
+請呼叫 {@link android.app.Activity#startActivityForResult
+startActivityForResult()}。Activity 的 {@link android.app.Activity#onActivityResult onActivityResult()}回呼中的個別 {@link android.content.Intent} 物件,就是 Activity 收到的結果。
+
+如需詳細資訊,請參閱 <a href="{@docRoot}guide/components/activities.html">Activity</a> 指南。
+</p></li>
+
+<li><b>如何啟動服務:</b>
+<p>{@link android.app.Service} 是可以在背景中執行操作的元件,但沒有使用者介面。
+您可以將 {@link android.content.Intent} 傳送至
+{@link android.content.Context#startService startService()} 來啟動服務以執行一次性操作 (例如下載檔案)。
+{@link android.content.Intent} 可描述要啟動的服務並攜帶任何必要資料。
+</p>
+
+<p>如果服務是採用主從介面設計,您可以將 {@link android.content.Intent} 傳送至 {@link
+android.content.Context#bindService bindService()} 來繫結至另一個元件的服務。</code>
+如需詳細資訊,請參閱<a href="{@docRoot}guide/components/services.html">服務</a>指南。</p></li>
+
+<li><b>如何傳送廣播:</b>
+<p>廣播是指任何應用程式都可接收的訊息。系統會傳送各種系統事件廣播,例如系統開機或裝置開始充電。
+您可以將 {@link android.content.Intent} 傳送至 {@link android.content.Context#sendBroadcast(Intent) sendBroadcast()}、
+{@link android.content.Context#sendOrderedBroadcast(Intent, String) 或{@link
+android.content.Context#sendStickyBroadcast sendStickyBroadcast()},以向其他應用程式傳送廣播。
+
+
+</p>
+</li>
+</ul>
+
+
+
+
+<h2 id="Types">意圖類型</h2>
+
+<p>意圖類型分為兩種:</p>
+
+<ul>
+<li><b>明確意圖</b>:可依名稱 (完整類別名稱) 指定要啟動的元件。
+一般情況下,您會使用明確意圖啟動您應用程式中的元件,這是因為您知道 Activity 的類別名稱或您想要啟動的服務。
+例如,為回應使用者動作而啟動新的 Activity,或啟動服務以在背景下載檔案。
+
+</li>
+
+<li><b>隱含意圖</b>:不會指定特定元件,而會宣告要執行的一般動作,讓另一個應用程式的元件來處理它。
+例如,如果您想要向使用者顯示地圖上的某個位置,可以使用隱含意圖,要求另一個支援應用程式在地圖上顯示指定的位置。
+
+</li>
+</ul>
+
+<p>當您建立明確意圖以啟動 Activity 或服務時,系統會立即啟動
+{@link android.content.Intent} 物件中指定的應用程式元件。</p>
+
+<div class="figure" style="width:446px">
+<img src="{@docRoot}images/components/intent-filters@2x.png" width="446" alt="" />
+<p class="img-caption"><strong>圖 1.</strong>說明如何透過系統傳送隱含意圖以啟動另一個 Activity:<b>[1]</b> Activity A <em></em> 會建立含有動作描述的{@link android.content.Intent} 並傳送至 {@link
+android.content.Context#startActivity startActivity()}。<b>[2]</b> Android 系統會搜尋所有應用程式,以找出符合該意圖的意圖篩選器。
+
+
+找到相符項目時,<b>[3]</b> 系統會呼叫其 {@link android.app.Activity#onCreate onCreate()} 方法,並將 {@link android.content.Intent} 傳送給它來啟動相符的 Activity (Activity B<em></em>)。
+
+
+</p>
+</div>
+
+<p>當您建立隱含意圖時,Android 系統會比較意圖內容和裝置上其他應用程式的<a href="{@docRoot}guide/topics/manifest/manifest-intro.html">宣示說明檔案</a>中宣告的「意圖篩選器」<em></em>,以找出要啟動的適當元件。
+
+如果意圖和意圖篩選器相符,系統會啟動該元件,並將 {@link android.content.Intent} 物件傳送給它。
+如果有多個意圖篩選器符合意圖,系統會顯示對話方塊,供使用者挑選要使用的應用程式。
+</p>
+
+<p>意圖篩選器是應用程式宣示說明檔案中的運算式,可指定元件要接收的意圖類型。
+
+例如,藉由宣告 Activity 的意圖篩選器,可讓其他應用程式使用特定意圖類型直接啟動您的 Activity。
+同樣地,如果您「不」<em></em>為 Activity 宣告任何意圖篩選器,就只能以明確意圖啟動它。
+
+</p>
+
+<p class="caution"><strong>注意:</strong>為了確保您的應用程式安全,請一律使用明確意圖啟動 {@link android.app.Service},並且不要宣告服務的意圖篩選器。
+
+使用隱含意圖啟動服務會危害安全性,原因在於您無法確定哪個服務會回應意圖,而且使用者無法得知系統會啟動哪項服務。
+
+從 Android 5.0 (API 級別 21) 開始,如果您使用隱含意圖呼叫 {@link android.content.Context#bindService bindService()},系統都會擲回例外狀況。
+
+</p>
+
+
+
+
+
+<h2 id="Building">建置意圖</h2>
+
+<p>{@link android.content.Intent} 物件攜帶 Android 系統用來判斷要啟動哪個元件的資訊 (例如應接收意圖的確切元件名稱或元件類別),再加上接收者元件用以適當執行動作的資訊 (例如要執行的動作和據以執行的資料)。
+
+
+</p>
+
+
+<p>{@link android.content.Intent} 包含的主要資訊如下:</p>
+
+<dl>
+
+<dt><b>元件名稱</b></dt>
+<dd>要啟動元件的名稱。
+
+<p>雖可選擇是否使用,但這卻是讓意圖「明確」<b></b>的重要資訊,表示意圖只能傳送至元件名稱所定義的應用程式元件。
+
+如果不使用元件名稱,意圖會是「隱含」<b></b>的,因此系統會根據其他意圖資訊來決定哪個元件應接收意圖 (例如動作、資料及類別 &mdash; 如下所述)。
+
+如果您需要啟動應用程式中的特定元件,就應該指定元件名稱。
+</p>
+
+<p class="note"><strong>注意:</strong>啟動 {@link android.app.Service} 時,請務必指定元件名稱。
+<strong></strong>否則,您無法確定哪個服務會回應意圖,而且使用者無法得知系統會啟動哪項服務。
+</p>
+
+<p>{@link android.content.Intent} 的這個欄位是
+{@link android.content.ComponentName} 物件,您可以使用目標元件的完整類別名稱加以指定,包括應用程式的封裝名稱。例如,
+
+{@code com.example.ExampleActivity}。您可以使用 {@link
+android.content.Intent#setComponent setComponent()}、{@link android.content.Intent#setClass
+setClass()}、{@link android.content.Intent#setClassName(String, String) setClassName()} 或
+{@link android.content.Intent} 建構函式來設定元件名稱。</p>
+
+</dd>
+
+<p><dt><b>動作</b></dt>
+<dd>以字串指定要執行的一般動作 (例如「檢視」<em></em>或「挑選」<em></em>)。
+
+<p>就廣播意圖而言,這是指已發生且系統回報的動作。動作大半決定其餘意圖的建構方式 &mdash; 特別是資料與額外資料中包含的項目。
+
+
+
+<p>您可以在應用程式內指定自己的動作以供意圖使用 (或由其他應用程式用來呼叫應用程式中的元件),但您應使用 {@link android.content.Intent} 類別或其他架構類別定義的動作常數。
+
+以下是可啟動 Activity 的一些常見動作:
+</p>
+
+<dl>
+<dt>{@link android.content.Intent#ACTION_VIEW}</dt>
+   <dd>當您有一些資訊可讓 Activity 向使用者顯示時,例如要在圖庫應用程式檢視的相片或要在地圖應用程式檢視的地址,就可以透過 {@link android.content.Context#startActivity startActivity()} 使用意圖中的這個動作。
+
+
+</dd>
+
+<dt>{@link android.content.Intent#ACTION_SEND}</dt>
+   <dd>也稱為「分享」意圖,當您有一些資料可供使用者透過其他應用程式分享時,例如電子郵件應用程式或社交分享應用程式,才應透過 {@link android.content.Context#startActivity startActivity()} 使用意圖中的這個動作。
+
+</dd>
+</dl>
+
+<p>如要進一步瞭解定義一般動作的常數,請參閱 {@link android.content.Intent} 類別參考文件。
+其他動作則是在 Android 架構的其他位置完成定義,例如可在系統設定應用程式中開啟特定畫面的動作位在 {@link android.provider.Settings} 中。
+
+</p>
+
+<p>您可以透過 {@link android.content.Intent#setAction
+setAction()} 或 {@link android.content.Intent} 建構函式來指定意圖的動作。</p>
+
+<p>如果您定義自己的動作,請務必加入您應用程式的封裝名稱做為前置詞。
+例如:</p>
+<pre>static final String ACTION_TIMETRAVEL = "com.example.action.TIMETRAVEL";</pre>
+</dd>
+
+<dt><b>資料</b></dt>
+<dd>URI ({@link android.net.Uri} 物件) 可參考據以執行的資料和/或該資料的 MIME 類型。
+提供的資料類型通常是由意圖的動作控制。例如,如果動作是 {@link android.content.Intent#ACTION_EDIT},資料就應包含欲編輯文件的 URI。
+
+
+
+<p>建立意圖時,除了意圖的 URI 以外,請務必指定資料類型 (其 MIME 類型)。
+
+
+例如,能夠顯示影像的 Activity 可能無法播放音訊檔案,即使有類似的 URI 格式。
+因此,指定資料的 MIME 格式可協助 Android 系統找出最適合接收意圖的元件。
+
+不過 &mdash; 尤其是當資料指出資料位在裝置何處且受
+{@link android.content.ContentProvider} 控制讓系統看見資料 MIME 類型的
+{@code content:} URI 時,有時能夠從 URI 推論出 MIME 類型。</p>
+
+<p>如果您只想設定資料 URI,請呼叫 {@link android.content.Intent#setData setData()}。
+如要設定 MIME 類型,請呼叫 {@link android.content.Intent#setType setType()}。您還可以視需要利用
+{@link
+android.content.Intent#setDataAndType setDataAndType()} 明確設定兩者。</p>
+
+<p class="caution"><strong>注意:</strong>如果您想同時設定 URI 與 MIME 類型,「請勿」<strong></strong>呼叫 {@link android.content.Intent#setData setData()} 和
+{@link android.content.Intent#setType setType()},原因是這兩者會抵銷彼此的值。
+請務必使用 {@link android.content.Intent#setDataAndType setDataAndType()} 來設定 URI 與 MIME 類型。
+
+</p>
+</dd>
+
+<p><dt><b>類別</b></dt>
+<dd>字串當中包含哪種元件應處理意圖的其他相關資訊。
+意圖中可放置的類別描述數目並沒有限制,但大多數意圖都不需要類別。
+以下是一些常見類別:
+
+
+<dl>
+<dt>{@link android.content.Intent#CATEGORY_BROWSABLE}</dt>
+  <dd>目標 Activity 允許自己由網頁瀏覽器啟動,以顯示連結所參照的資料 &mdash; 例如影像或電子郵件訊息。
+
+  </dd>
+<dt>{@link android.content.Intent#CATEGORY_LAUNCHER}</dt>
+  <dd>Activity 是工作的初始 Activity,而且列在系統的應用程式啟動器中。
+
+  </dd>
+</dl>
+
+<p>如需類別的完整清單,請參閱 {@link android.content.Intent} 類別描述。
+</p>
+
+<p>您可以使用 {@link android.content.Intent#addCategory addCategory()} 來指定類別。</p>
+</dd>
+</dl>
+
+
+<p>以上列出的屬性 (元件名稱、動作、資料及類別) 代表意圖的定義特性。
+藉由讀取這些屬性,Android 系統就能分析出應啟動的應用程式元件。
+</p>
+
+<p>不過,意圖還能攜帶其他不影響如何將它解析成應用程式元件的資訊。
+意圖還能提供:</p>
+
+<dl>
+<dt><b>額外資料</b></dt>
+<dd>鍵值對當中攜帶完成要求動作所需的其他資訊。
+和有些動作會使用特定種類的資料 URI 一樣,有些動作也會使用特定的額外資料。
+
+<p>您可以使用各種 {@link android.content.Intent#putExtra putExtra()}方法來新增額外資料,每種方法都接受兩個參數:索引鍵名稱與值。
+
+
+您也可以使用所有的額外資料建立 {@link android.os.Bundle} 物件,再透過 {@link
+android.content.Intent#putExtras putExtras()} 將 {@link android.content.Intent} 插入 {@link android.os.Bundle}。</p>
+
+<p>例如,建立意圖以使用
+{@link android.content.Intent#ACTION_SEND} 來傳送電子郵件時,您可以利用
+{@link android.content.Intent#EXTRA_EMAIL} 索引鍵指定「收件者」,並使用
+{@link android.content.Intent#EXTRA_SUBJECT} 索引鍵指定「主旨」。</p>
+
+<p>{@link android.content.Intent} 類別指定許多用於標準化資料類型的
+{@code EXTRA_*} 常數。如果您需要宣告自己的額外資料索引鍵 (用於您應用程式接收的意圖),請務必加入您應用程式的封裝名稱做為前置詞。
+
+例如:</p>
+<pre>static final String EXTRA_GIGAWATTS = "com.example.EXTRA_GIGAWATTS";</pre>
+</dd>
+
+<dt><b>旗標</b></dt>
+<dd>{@link android.content.Intent} 類別中定義的旗標,可當成意圖的中繼資料使用。
+旗標可指示 Android 系統如何啟動 Activity (例如,Activity 屬於哪個
+<a href="{@docRoot}guide/components/tasks-and-back-stack.html">工作</a>) 以及如何處理已啟動的 Activity (例如,它是否屬於最近 Activity 清單)。
+
+
+
+<p>如需詳細資訊,請參閱 {@link android.content.Intent#setFlags setFlags()} 方法。</p>
+</dd>
+
+</dl>
+
+
+
+
+<h3 id="ExampleExplicit">明確意圖範例</h3>
+
+<p>您用來啟動特定應用程式元件的就是明確意圖,例如應用程式中的特定 Activity 或服務。如要建立明確意圖,請定義
+
+{@link android.content.Intent}物件的元件名稱 &mdash; 其他意圖屬性均為選用性質。
+</p>
+
+<p>例如,您在應用程式中建置稱為 {@code DownloadService} 的服務,其設計為從網頁下載檔案,您可以使用下列程式碼來啟動該服務:
+</p>
+
+<pre>
+// Executed in an Activity, so 'this' is the {@link android.content.Context}
+// The fileUrl is a string URL, such as "http://www.example.com/image.png"
+Intent downloadIntent = new Intent(this, DownloadService.class);
+downloadIntent.setData({@link android.net.Uri#parse Uri.parse}(fileUrl));
+startService(downloadIntent);
+</pre>
+
+<p>{@link android.content.Intent#Intent(Context,Class)} 建構函式提供應用程式 {@link android.content.Context} 與元件 ({@link java.lang.Class} 物件)。
+
+因此,這個意圖會明確啟動應用程式中的
+{@code DownloadService} 類別。</p>
+
+<p>如要進一步瞭解如何建置及啟動服務,請參閱<a href="{@docRoot}guide/components/services.html">服務</a>指南。
+</p>
+
+
+
+
+<h3 id="ExampleSend">隱含意圖範例</h3>
+
+<p>隱藏意圖指定的動作會呼叫裝置上任何能執行該動作的應用程式。
+當您的應用程式無法執行該動作,但其他應用程式或許能執行,而您想讓使用者挑選要使用的應用程式時,使用隱含意圖相當有用。
+</p>
+
+<p>例如,您有想讓使用者與其他人分享的內容,可使用
+{@link android.content.Intent#ACTION_SEND} 動作來建立意圖,以及新增可指定要分享內容的額外資料。
+當您使用該意圖呼叫
+{@link android.content.Context#startActivity startActivity()} 時,使用者就能挑選要用以分享內容的應用程式。
+</p>
+
+<p class="caution"><strong>注意:</strong>使用者可能會沒有「任何」<em></em>
+應用程式可處理您傳送至 {@link android.content.Context#startActivity
+startActivity()} 的隱含意圖。如果發生這種情況,呼叫會失敗且應用程式將會當機。如要確認 Activity 將可收到意圖,請在
+{@link android.content.Intent} 物件上呼叫 {@link android.content.Intent#resolveActivity
+resolveActivity()}。如果結果不是 null,表示至少有一個應用程式能夠處理該意圖,可以放心呼叫
+
+{@link android.content.Context#startActivity startActivity()}。如果結果為 null,表示您不應使用該意圖,可以的話您還必須將發出該意圖的功能停用。
+
+</p>
+
+
+<pre>
+// Create the text message with a string
+Intent sendIntent = new Intent();
+sendIntent.setAction(Intent.ACTION_SEND);
+sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
+sendIntent.setType("text/plain");
+
+// Verify that the intent will resolve to an activity
+if (sendIntent.resolveActivity(getPackageManager()) != null) {
+    startActivity(sendIntent);
+}
+</pre>
+
+<p class="note"><strong>注意:</strong>在這種情況下,不會使用 URI,但會宣告意圖的資料類型,以指定額外資料所攜帶的內容。
+</p>
+
+
+<p>呼叫 {@link android.content.Context#startActivity startActivity()} 時,系統會檢查所有安裝的應用程式,判斷哪些可以處理這種意圖 (含有 {@link android.content.Intent#ACTION_SEND}動作和攜帶「純文字」資料的意圖)。
+
+
+如果只有一個應用程式能夠處理,該應用程式會立即開啟並獲派該意圖。
+如果有多個 Activity 接受該意圖,系統會顯示對話方塊,供使用者挑選要使用的應用程式。
+</p>
+
+
+<div class="figure" style="width:200px">
+  <img src="{@docRoot}images/training/basics/intent-chooser.png" alt="">
+  <p class="img-caption"><strong>圖 2.</strong>選擇器對話方塊。</p>
+</div>
+
+<h3 id="ForceChooser">強制顯示應用程式選擇器</h3>
+
+<p>有多個應用程式均回應您的隱含意圖時,使用者可以選擇要使用的應用程式,並將該應用程式當成動作的預設選擇。
+
+如果在執行動作時使用者希望之後都使用同一應用程式 (例如使用者偏好使用某個特定網頁瀏覽器開啟網頁,這項功能就非常實用。
+
+</p>
+
+<p>不過,如果有多個應用程式能回應該意圖,而使用者每次都想使用不同的應用程式,您應該明確顯示選擇器對話方塊。
+選擇器對話方塊每次都會要求使用者選取要用於該動作的應用程式 (使用者無法為該動作選取預設應用程式)。
+
+例如,當您的應用程式使用 {@link
+android.content.Intent#ACTION_SEND} 動作執行「分享」時,使用者可能希望根據當下的情況使用不同的應用程式來分享,此時您應該一律使用選擇器對話方塊,如圖 2 所示。
+</p>
+
+
+
+
+<p>如要顯示選擇器,請使用 {@link
+android.content.Intent#createChooser createChooser()} 建立 {@link android.content.Intent},並將其傳送至 {@link
+android.app.Activity#startActivity startActivity()}。例如:</p>
+
+<pre>
+Intent sendIntent = new Intent(Intent.ACTION_SEND);
+...
+
+// Always use string resources for UI text.
+// This says something like "Share this photo with"
+String title = getResources().getString(R.string.chooser_title);
+// Create intent to show the chooser dialog
+Intent chooser = Intent.createChooser(sendIntent, title);
+
+// Verify the original intent will resolve to at least one activity
+if (sendIntent.resolveActivity(getPackageManager()) != null) {
+    startActivity(chooser);
+}
+</pre>
+
+<p>以上範例會顯示對話方塊 (將回應意圖的應用程式清單傳送至 {@link
+android.content.Intent#createChooser createChooser()} 方法),並使用提供的文字做為對話方塊的標題。
+</p>
+
+
+
+
+
+
+
+
+
+<h2 id="Receiving">接收隱含意圖</h2>
+
+<p>如要通知應用程式可接收的隱含內容,請在<a href="{@docRoot}guide/topics/manifest/manifest-intro.html">宣告說明檔案</a>中利用 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a> 元素,針對您的每個應用程式元件宣告一或多個意圖篩選器。每個意圖篩選器都會根據意圖的動作、資料和類別,指定其接受的意圖類型。
+
+
+
+只有在意圖通過您的其中一個意圖篩選器時,系統才會將隱含意圖傳送至您的應用程式元件。
+</p>
+
+<p class="note"><strong>注意:</strong>不論元件宣告的意圖篩選器為何,明確意圖一律會傳送至其目標。
+</p>
+
+<p>應用程式元件應為其所能執行的各個獨特工作宣告不同的篩選器。例如,圖片庫應用程式中的一個 Activity 可能會有兩個篩選器:一個用於檢視圖片的篩選器,以及另一個用於編輯圖片的篩選器。
+
+當 Activity 啟動時,它會檢查
+{@link android.content.Intent} 並根據
+{@link android.content.Intent} 中的資訊決定如何運作 (例如,是否要檢視編輯器控制項)。</p>
+
+<p>每個意圖篩選器都是由 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a> 元素定義在應用程式的宣示說明檔案中,以巢狀方式置於對應的應用程式元件 (例如,<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 元素)。
+
+
+在 <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">{@code &lt;intent-filter&gt;}</a> 內,您可以使用以下三個元素當中的一或多個元素,指定要接受的意圖類型:
+
+</p>
+
+<dl>
+<dt><a href="{@docRoot}guide/topics/manifest/action-element.html">{@code &lt;action&gt;}</a></dt>
+  <dd>在 {@code name} 屬性中,宣告接受的意圖動作。值必須是動作的常值字串值,不得為類別常數。
+</dd>
+<dt><a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a></dt>
+  <dd>使用一或多項屬性指定資料 URI (
+<code>scheme</code>、<code>host</code>、<code>port</code>、
+<code>path</code> 等) 與 MIME 類型的各層面,以宣告接受的資料類型。</dd>
+<dt><a href="{@docRoot}guide/topics/manifest/category-element.html">{@code &lt;category&gt;}</a></dt>
+  <dd>在 {@code name} 屬性中,宣告接受的意圖類別。值必須是動作的常值字串值,不得為類別常數。
+
+
+  <p class="note"><strong>注意:</strong>如要接收隱含意圖,您「必須」<strong></strong>在意圖篩選器中納入 {@link android.content.Intent#CATEGORY_DEFAULT} 類別。
+
+
+{@link android.app.Activity#startActivity startActivity()} 與
+{@link android.app.Activity#startActivityForResult startActivityForResult()} 方法對所有意圖進行處理時,就像已宣告
+{@link android.content.Intent#CATEGORY_DEFAULT} 類別一樣。
+  如果您未在意圖篩選器中宣告此類別,任何隱含意圖都不會解析為 Activity。
+</p>
+  </dd>
+</dl>
+
+<p>例如,假設資料類型為文字,以下 Activity 宣告的意圖篩選器都可接受
+{@link android.content.Intent#ACTION_SEND} 意圖:</p>
+
+<pre>
+&lt;activity android:name="ShareActivity">
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="text/plain"/>
+    &lt;/intent-filter>
+&lt;/activity>
+</pre>
+
+<p>想要建立包含多個
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code &lt;action&gt;}</a>、
+<a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a> 或
+<a href="{@docRoot}guide/topics/manifest/category-element.html">{@code &lt;category&gt;}</a> 執行個體的篩選器也沒關係。
+如果您這樣做,只需要確定該元件能處理這些篩選器元素的任何組合。
+</p>
+
+<p>當您想要處理多種意圖,但只限特定的動作、資料及類別類型組合時,您必須建立多個意圖篩選器。
+</p>
+
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>限制存取元件</h2>
+<p>使用意圖篩選器並無法安全地防止其他應用程式啟動您的元件。
+雖然意圖篩選器限制元件只能回應特定的隱含意圖,如果開發人員決定您的元件名稱,另一款應用程式還是有可能使用明確意圖來啟動您的應用程式元件。
+
+
+如果必須「限定只有您自己的應用程式」<em></em>才能啟動您的元件,請將該元件的
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#exported">{@code
+exported}</a> 屬性設定為 {@code "false"}。
+</p>
+</div>
+</div>
+
+<p>藉由將意圖與三個元素個別比較,針對篩選器來測試隱含意圖。
+如要傳送至元件,意圖必須通過共三個測試。
+
+如果無一相符,Android 系統就不會將意圖傳送至該元件。不過,由於元件可能會有多個意圖篩選器,未通過其中一個元件篩選器的意圖可能會通過另一個篩選器。
+
+
+如要進一步瞭解系統如何解析意圖,請參閱下文的<a href="#Resolution">意圖解析</a>。</p>
+
+<p class="caution"><strong>注意:</strong>如要避免一時疏忽而執行不同應用程式的
+{@link android.app.Service},請一律使用明確意圖啟動您自己的服務,同時不要宣告服務的意圖篩選器。
+</p>
+
+<p class="note"><strong>注意:</strong>對於所有 Activity,您都必須在宣示說明檔案中宣告意圖篩選器。
+
+不過,廣播接收器的篩選器可以藉由呼叫
+{@link android.content.Context#registerReceiver(BroadcastReceiver, IntentFilter, String,
+Handler) registerReceiver()} 進行動態註冊。您之後可以利用 {@link
+android.content.Context#unregisterReceiver unregisterReceiver()} 來取消註冊接收器。這樣做可在您的應用程式執行時,讓應用程式只能在指定期間內接聽特定廣播。
+
+</p>
+
+
+
+
+
+
+
+<h3 id="ExampleFilters">篩選器範例</h3>
+
+<p>如要進一步瞭解意圖篩選器行為,可以看看社交分享應用程式宣示說明檔案中的以下程式碼片段。
+</p>
+
+<pre>
+&lt;activity android:name="MainActivity">
+    &lt;!-- This activity is the main entry, should appear in app launcher -->
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.MAIN" />
+        &lt;category android:name="android.intent.category.LAUNCHER" />
+    &lt;/intent-filter>
+&lt;/activity>
+
+&lt;activity android:name="ShareActivity">
+    &lt;!-- This activity handles "SEND" actions with text data -->
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="text/plain"/>
+    &lt;/intent-filter&gt;
+    &lt;!-- This activity also handles "SEND" and "SEND_MULTIPLE" with media data -->
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.SEND"/>
+        &lt;action android:name="android.intent.action.SEND_MULTIPLE"/>
+        &lt;category android:name="android.intent.category.DEFAULT"/>
+        &lt;data android:mimeType="application/vnd.google.panorama360+jpg"/>
+        &lt;data android:mimeType="image/*"/>
+        &lt;data android:mimeType="video/*"/>
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p>第一個 Activity {@code MainActivity} 是應用程式的主要進入點 &mdash; 這個 Activity 會在使用者使用啟動器圖示初次啟動應用程式時開啟:
+</p>
+<ul>
+  <li>{@link android.content.Intent#ACTION_MAIN} 動作可指出這是主要進入點且預期沒有任何意圖資料。
+</li>
+  <li>{@link android.content.Intent#CATEGORY_LAUNCHER} 類別可指出此 Activity 的圖示應該放在系統的應用程式啟動器中。
+如果 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a>元素未以 {@code icon} 指定圖示,系統會使用 <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a> 元素中的圖示。
+
+</li>
+</ul>
+<p>上述兩項必須成對,Activity 才會顯示在應用程式啟動器中。</p>
+
+<p>第二個 Activity {@code ShareActivity} 是用來加速分享文字與媒體內容。
+雖然使用者可能藉由從 {@code MainActivity} 來瀏覽它而進入此 Activity,但它們也能從發出隱含意圖 (符合兩個意圖篩選器之一) 的另一款應用程式直接進入 {@code ShareActivity}。
+
+</p>
+
+<p class="note"><strong>注意:</strong>
+<a href="https://developers.google.com/panorama/android/">{@code
+application/vnd.google.panorama360+jpg}</a> MIME 類型是指定全景相片的特殊資料類型,您可以透過
+<a href="{@docRoot}reference/com/google/android/gms/panorama/package-summary.html">Google 全景</a> API 來處理。
+</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<h2 id="PendingIntent">使用待處理意圖</h2>
+
+<p>{@link android.app.PendingIntent} 物件是環繞 {@link
+android.content.Intent} 物件的包裝函式。{@link android.app.PendingIntent} 的主要用途是將權限授予外部應用程式,以便使用包含的 {@link android.content.Intent},有如從應用程式自己的程序執行一般。
+
+
+</p>
+
+<p>待處理意圖的主要使用案例包括:</p>
+<ul>
+  <li>宣告當使用者透過您的<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">通知</a>執行動作時要執行的意圖 (Android 系統的 {@link android.app.NotificationManager} 會執行 {@link android.content.Intent})。
+
+
+  <li>宣告當使用者透過您的<a href="{@docRoot}guide/topics/appwidgets/index.html">應用程式小工具</a>執行動作時要執行的意圖 (主螢幕應用程式會執行 {@link android.content.Intent})。
+
+
+  <li>宣告要在未來的指定時間內執行的意圖 (Android 系統的 {@link android.app.AlarmManager} 會執行 {@link android.content.Intent})。
+
+</ul>
+
+<p>由於每個 {@link android.content.Intent} 物件都設計為要由特定的應用程式元件類型來處理 ({@link android.app.Activity}、{@link android.app.Service} 或 {@link android.content.BroadcastReceiver}),因此請務必以相同的考量建立 {@link android.app.PendingIntent}。
+
+
+使用待處理意圖時,您的應用程式將不會透過像是
+{@link android.content.Context#startActivity
+startActivity()} 的呼叫來執行意圖。當您藉由呼叫以下的個別建立者方法建立
+{@link android.app.PendingIntent} 時,您必須改為宣告意圖元件類型:</p>
+
+<ul>
+  <li>{@link android.app.PendingIntent#getActivity PendingIntent.getActivity()} 適用於啟動 {@link android.app.Activity} 的 {@link android.content.Intent}。
+</li>
+  <li>{@link android.app.PendingIntent#getService PendingIntent.getService()} 適用於啟動 {@link android.app.Service} 的 {@link android.content.Intent}。
+</li>
+  <li>{@link android.app.PendingIntent#getBroadcast PendingIntent.getBroadcast()} 適用於啟動 {@link android.content.BroadcastReceiver} 的 {@link android.content.Intent}。
+</li>
+</ul>
+
+<p>除非您的應用程式「收到」<em></em>來自其他應用程式的待處理意圖,否則您可能只需要上述建立
+{@link android.app.PendingIntent} 的
+{@link android.app.PendingIntent} 方法。</p>
+
+<p>每個方法會採用目前的應用程式 {@link android.content.Context}、您要包裝的
+{@link android.content.Intent} 以及一或多個指定應如何使用意圖的旗標 (例如該意圖是否能使用多次)。
+</p>
+
+<p>如要進一步瞭解如何使用待處理意圖,請參閱個別使用案例的參考文件,例如<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">通知</a>以及<a href="{@docRoot}guide/topics/appwidgets/index.html">應用程式小工具</a> API 指南。
+
+</p>
+
+
+
+
+
+
+
+<h2 id="Resolution">意圖解析</h2>
+
+
+<p>當系統收到要啟動 Activity 的隱含意圖時,會根據三個層面來比較意圖與意圖篩選器,以便為該意圖搜尋最適合的 Activity。
+</p>
+
+<ul>
+  <li>意圖動作
+  <li>意圖資料 (URI 與資料類型)
+  <li>意圖類別
+</ul>
+
+<p>下列各節就如何在應用程式宣示說明檔案中宣告意圖篩選器這點,說明如何比對意圖以找出適當的元件。
+</p>
+
+
+<h3 id="ActionTest">動作測試</h3>
+
+<p>如要指定接受的意圖動作,意圖篩選器可以宣告零或多個
+<a href="{@docRoot}guide/topics/manifest/action-element.html">{@code
+&lt;action&gt;}</a> 元素。例如:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.EDIT" /&gt;
+    &lt;action android:name="android.intent.action.VIEW" /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>如要通過此篩選器,{@link android.content.Intent} 中指定的動作必須與篩選器中列出的其中一個動作相符。
+</p>
+
+<p>如果篩選器未列出任何可供意圖比對的動作,所有意圖都無法通過測試。
+不過,如果 {@link android.content.Intent} 未指定任何動作,它就會通過測試 (只要篩選器至少包含一個動作即可)。
+
+</p>
+
+
+
+<h3 id="CategoryTest">類別測試</h3>
+
+<p>如要指定接受的意圖類別,意圖篩選器可以宣告零或多個
+<a href="{@docRoot}guide/topics/manifest/category-element.html">{@code
+&lt;category&gt;}</a> 元素。例如:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+    &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>{@link android.content.Intent} 中的每個類別都必須與篩選器中的類別相符,意圖才會通過類別測試。
+不需要反向進行 &mdash; 意圖篩選器宣告的類別可以比
+{@link android.content.Intent} 中指定的類別多,而
+{@link android.content.Intent} 仍可通過測試。因此,不論篩選器中宣告的類別為何,未包含類別的意圖一律可通過此測試。
+</p>
+
+<p class="note"><strong>注意:</strong>Android 會將 {@link android.content.Intent#CATEGORY_DEFAULT} 類別自動套用到所有傳送至 {@link
+android.content.Context#startActivity startActivity()} 與 {@link
+android.app.Activity#startActivityForResult startActivityForResult()} 的隱含意圖。因此,如果您希望 Activity 收到隱含意圖,Activity 的意圖篩選器就必須包含
+{@code "android.intent.category.DEFAULT"} 的類別 (如先前的 {@code &lt;intent-filter&gt;} 範例中所示)。
+
+
+
+</p>
+
+
+
+<h3 id="DataTest">資料測試</h3>
+
+<p>如要指定接受的意圖資料,意圖篩選器可以宣告零或多個
+<a href="{@docRoot}guide/topics/manifest/data-element.html">{@code
+&lt;data&gt;}</a> 元素。例如:</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:mimeType="video/mpeg" android:scheme="http" ... /&gt;
+    &lt;data android:mimeType="audio/mpeg" android:scheme="http" ... /&gt;
+    ...
+&lt;/intent-filter&gt;
+</pre>
+
+<p>每個 <code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code>
+ 元素都能指定 URI 結構與資料類型 (MIME 媒體類型)。URI 的每個部分都有個別的屬性:
+{@code scheme}、{@code host}、{@code port} 和 {@code path}。
+
+</p>
+
+<p style="margin-left: 2em">{@code &lt;scheme&gt;://&lt;host&gt;:&lt;port&gt;/&lt;path&gt;}</p>
+
+<p>
+例如:
+</p>
+
+<p style="margin-left: 2em">{@code content://com.example.project:200/folder/subfolder/etc}</p>
+
+<p>在這個 URI 中,配置為 {@code content}、主機為 {@code com.example.project}、連接埠為 {@code 200},而路徑為 {@code folder/subfolder/etc}。
+
+</p>
+
+<p>在 <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a> 元素中,上述所有屬性均為選用性質,但具有線性相依性:
+</p>
+<ul>
+  <li>如果未指定配置,就會忽略主機。</li>
+  <li>如果未指定主機,就會忽略連接埠。</li>
+  <li>如果配置與主機均未指定,就會忽略路徑。</li>
+</ul>
+
+<p>將意圖中的 URI 與篩選器中的 URI 規格比較時,只會比較篩選器中所包含的 URI 部分。
+例如:</p>
+<ul>
+  <li>如果篩選器只指定配置,含有該配置的所有 URI 都會與篩選器相符。
+</li>
+  <li>如果篩選器指定了配置與授權,但未指定路徑,不論其路徑為何,含有相同配置與授權的所有 URI 都會通過篩選器。
+</li>
+  <li>如果篩選器指定了配置、授權和路徑,則只有包含相同配置、授權和路徑的 URI 才會通過篩選器。
+</li>
+</ul>
+
+<p class="note"><strong>注意:</strong>路徑規格可以包含萬用字元星號 (*),以要求僅部分相符的路徑名稱。
+</p>
+
+<p>資料測試會比較意圖中的 URI 與 MIME 類型,以及篩選器中指定的 URI 與 MIME 類型。
+以下說明規則:
+</p>
+
+<ol type="a">
+<li>只有在篩選器未指定任何 URI 或 MIME 類型時,未包含 URI 或 MIME 類型的意圖才會通過測試。
+</li>
+
+<li>只有在其 URI 與篩選器的 URI 格式相符,而且篩選器同樣未指定 MIME 類型時,包含 URI 但沒有 MIME 類型 (既非明確也無法從 URI 推測得出) 的意圖才會通過測試。
+
+</li>
+
+<li>只有在篩選器列出相同的 MIME 類型且未指定 URI 格式時,包含 MIME 類型但沒有 URI 的意圖才會通過測試。
+</li>
+
+<li>只有在 MIME 類型與篩選器中列出的類型相符時,包含 URI 與 MIME 類型 (明確或可從 URI 推測得出) 的意圖才會通過 MIME 類型部分的測試。
+
+如果它的 URI 與篩選器中的 URI 相符,或如果它有
+{@code content:} 或 {@code file:} URI,而且篩選器未指定 URI 時,就會通過 URI 部分的測試。換句話說,如果它的篩選器「只」<em></em>列出 MIME 類型,就會假設元件支援 {@code content:} 與 {@code file:} 資料。
+
+
+</p></li>
+</ol>
+
+<p>
+最後一項規則 (規則 (d)) 可反映出希望元件能夠從檔案或內容供應程式取得本機資料的期望。
+
+因此,其篩選器可以只列出資料類型,同時不需要明確命名
+{@code content:} 與 {@code file:} 配置。
+此為典型案例。例如,如下所示的 <a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a> 元素可以告訴 Android,元件能夠從內容供應程式取得影像資料並加以顯示:
+
+
+</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:mimeType="image/*" /&gt;
+    ...
+&lt;/intent-filter&gt;</pre>
+
+<p>
+由於大部分可用資料都是由內容供應程式分配,因此指定資料類型但未指定 URI 的篩選器也許會最常見。
+
+</p>
+
+<p>
+另一個常見的設定是含有配置與資料類型的篩選器。例如,如下所示的
+<a href="{@docRoot}guide/topics/manifest/data-element.html">{@code &lt;data&gt;}</a>元素可以告訴 Android,元件能夠從網路擷取影片資料以執行動作:
+
+
+</p>
+
+<pre>
+&lt;intent-filter&gt;
+    &lt;data android:scheme="http" android:type="video/*" /&gt;
+    ...
+&lt;/intent-filter&gt;</pre>
+
+
+
+<h3 id="imatch">意圖比對</h3>
+
+<p>和意圖篩選器比對的意圖不只可探尋要啟動的目標元件,還能探尋裝置上元件集合的相關資料。
+
+例如,主畫面應用程式會利用指定
+{@link android.content.Intent#ACTION_MAIN} 動作與
+{@link android.content.Intent#CATEGORY_LAUNCHER} 類別的意圖篩選器來尋找所有 Activity,以填入應用程式啟動器。
+</p>
+
+<p>您的應用程式能以類似的方式使用意圖比對。
+{@link android.content.pm.PackageManager} 有一組 {@code query...()}方法可將接受特定意圖的所有元件傳回,還有一系列類似的
+{@code resolve...()} 方法可決定回應意圖的最佳元件。
+
+例如,
+{@link android.content.pm.PackageManager#queryIntentActivities
+queryIntentActivities()} 會傳回所有 Activity 清單,上述的 Activity 都可以執行當成引數傳送的意圖,以及
+{@link
+android.content.pm.PackageManager#queryIntentServices
+queryIntentServices()} 可傳回類似的服務清單。
+
+這些方法不會啟動元件,只會列出可以回應的元件。類似的方法
+{@link android.content.pm.PackageManager#queryBroadcastReceivers
+queryBroadcastReceivers()} 可用於廣播接收器。
+</p>
+
+
+
+
diff --git a/docs/html-intl/intl/zh-tw/guide/components/loaders.jd b/docs/html-intl/intl/zh-tw/guide/components/loaders.jd
new file mode 100644
index 0000000..89bfc80
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/components/loaders.jd
@@ -0,0 +1,494 @@
+page.title=載入器
+parent.title=Activity
+parent.link=activities.html
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+    <h2>本文件內容</h2>
+    <ol>
+    <li><a href="#summary">載入器 API 摘要</a></li>
+    <li><a href="#app">在應用程式中使用載入器</a>
+      <ol>
+        <li><a href="#requirements"></a></li>
+        <li><a href="#starting">啟動載入器</a></li>
+        <li><a href="#restarting">重新啟動載入器</a></li>
+        <li><a href="#callback">使用 LoaderManager 回呼</a></li>
+      </ol>
+    </li>
+    <li><a href="#example">範例說明</a>
+       <ol>
+         <li><a href="#more_examples">其他範例</a></li>
+        </ol>
+    </li>
+  </ol>
+    
+  <h2>重要類別</h2>
+    <ol>
+      <li>{@link android.app.LoaderManager}</li>
+      <li>{@link android.content.Loader}</li>
+
+    </ol>   
+    
+    <h2>相關範例</h2>
+   <ol>
+     <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">LoaderCursor
+</a></li>
+     <li> <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html">LoaderThrottle
+</a></li>
+   </ol>
+  </div>
+</div>
+
+<p>在 Android 3.0 導入的載入器可輕鬆在 Activity 或片段中,以非同步方式載入資料。
+載入器的特性如下:</p>
+  <ul>
+    <li>適用於所有 {@link android.app.Activity} 和 {@link
+android.app.Fragment} 。</li>
+    <li>提供以非同步方式載入資料。</li>
+    <li>監視其資料來源,並在內容變更時傳送新的結果。
+</li>
+    <li>可在設定變更後重新建立時,自動重新連接到上次載入器的游標,
+因此不需要重新查詢資料。
+</li>
+  </ul>
+ 
+<h2 id="summary">載入器 API 摘要</h2>
+
+<p>有多個類別和介面可能與在應用程式中使用載入器有關。
+請參閱下表的摘要說明:</p>
+
+<table>
+  <tr>
+    <th>類別/介面</th>
+    <th>說明</th>
+  </tr>
+  <tr>
+    <td>{@link android.app.LoaderManager}</td>
+    <td>與 {@link android.app.Activity} 或
+{@link android.app.Fragment} 相關聯的抽象類別,可用於管理一或多個 {@link
+android.content.Loader} 執行個體。這可以協助應用程式管理所需執行時間較長的操作與 {@link android.app.Activity} 或 {@link android.app.Fragment} 生命週期搭配使用,這最常與
+{@link android.content.CursorLoader} 搭配使用,不過應用程式能夠撰寫自己的載入器來載入其他類型的資料。
+
+
+
+    <br />
+    <br />
+    每個 Activity 或片段只能有一個 {@link android.app.LoaderManager},但 {@link android.app.LoaderManager} 可以有多個載入器。
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.app.LoaderManager.LoaderCallbacks}</td>
+    <td>可供用戶端與 {@link
+android.app.LoaderManager} 互動的回呼介面。例如,您使用 {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}
+回呼方法來建立新的載入器。</td>
+  </tr>
+  <tr>
+    <td>{@link android.content.Loader}</td>
+    <td>以非同步方式載入資料的抽象類別。這是載入器的基本類別。
+您通常會使用 {@link
+android.content.CursorLoader},但您也可以實作自己的子類別。載入器處於使用中時,應會監視其資料來源,並在內容有變更時傳送新的結果。
+
+ </td>
+  </tr>
+  <tr>
+    <td>{@link android.content.AsyncTaskLoader}</td>
+    <td>提供 {@link android.os.AsyncTask} 以執行工作的抽象載入器。</td>
+  </tr>
+  <tr>
+    <td>{@link android.content.CursorLoader}</td>
+    <td>查詢
+{@link android.content.ContentResolver} 並傳回 {@link
+android.database.Cursor} 的 {@link android.content.AsyncTaskLoader} 子類別。此類別會以標準方式實作 {@link
+android.content.Loader} 通訊協定,用來查詢建置於 {@link android.content.AsyncTaskLoader} 的游標,以便在背景執行緒中執行游標查詢,藉此避免封鎖應用程式的 UI。
+
+
+以非同步方式從 {@link
+android.content.ContentProvider} 載入資料,而不是透過片段或 Activity 的 API 來管理查詢,最好的方法就是使用此載入器。
+</td>
+  </tr>
+</table>
+
+<p>上表中的類別和介面就是您將用來在應用程式中實作載入器的基本元件。
+上述元件不需要在您建立載入器時全部使用,但您必須一律參照到 {@link
+android.app.LoaderManager},才能初始化載入器並實作
+{@link android.content.Loader} 類別,例如 {@link
+android.content.CursorLoader}。
+以下各節說明如何在應用程式中使用這些類別和介面。
+</p>
+
+<h2 id ="app">在應用程式中使用載入器</h2>
+<p>本節說明如何在 Android 應用程式中使用載入器。使用載入器的應用程式通常包括下列物件:
+</p>
+<ul>
+  <li>{@link android.app.Activity} 或 {@link android.app.Fragment}。</li>
+  <li>{@link android.app.LoaderManager} 的執行個體。</li>
+  <li>可載入 {@link
+android.content.ContentProvider} 所備份資料的 {@link android.content.CursorLoader}。或者,您可以實作自己的
+{@link android.content.Loader} 子類別或 {@link android.content.AsyncTaskLoader},從其他來源載入資料。
+</li>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks} 的實作。
+您可以在這裡建立新的載入器和管理對現有載入器的參照。
+</li> 
+<li>顯示載入器資料的一種方式,例如 {@link
+android.widget.SimpleCursorAdapter}。</li>
+  <li>使用 {@link android.content.CursorLoader} 時的資料來源,例如 {@link android.content.ContentProvider}。
+</li>
+</ul>
+<h3 id="starting">啟動載入器</h3>
+
+<p>{@link android.app.LoaderManager} 可在 {@link android.app.Activity} 或 {@link android.app.Fragment} 內管理一或多個 {@link
+android.content.Loader} 執行個體。
+每個 Activity 或片段只能有一個 {@link
+android.app.LoaderManager}。</p> 
+
+<p>您通常會在 Activity 的 {@link
+android.app.Activity#onCreate onCreate()} 方法內或在片段的 {@link android.app.Fragment#onActivityCreated onActivityCreated()} 方法內,初始化 {@link android.content.Loader},
+
+如下所示:
+</p>
+
+<pre>// Prepare the loader.  Either re-connect with an existing one,
+// or start a new one.
+getLoaderManager().initLoader(0, null, this);</pre>
+
+<p>{@link android.app.LoaderManager#initLoader initLoader()} 方法採用下列參數:
+</p>
+<ul>
+  <li>可識別載入器的不重複 ID。在本範例中,此 ID 為 0。</li>
+<li>可在建構時提供給載入器的選用引數 (在本範例中為<code>null</code>)。
+</li> 
+
+<li>{@link android.app.LoaderManager.LoaderCallbacks} 實作,
+{@link android.app.LoaderManager} 會呼叫此實作來回報載入器事件。在本範例中,本機類別會實作 {@link
+android.app.LoaderManager.LoaderCallbacks} 執行個體,以將參照傳送給它自己 ({@code this})。
+
+</li> 
+</ul>
+<p>{@link android.app.LoaderManager#initLoader initLoader()} 呼叫可確保載入器已初始化且處於有效狀態。
+可能會有兩種結果:</p>
+<ul>
+  <li>如果 ID 所指定的載入器已經存在,就會重複使用上次建立的載入器。
+</li>
+  <li>如果 ID 所指定的載入器「不存在」<em></em>,
+{@link android.app.LoaderManager#initLoader initLoader()} 會觸發
+{@link android.app.LoaderManager.LoaderCallbacks} 方法 {@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}。
+您可以在這裡實作程式碼以具現化及傳回新的載入器。
+如需詳細資訊,請參閱 <a href="#onCreateLoader">onCreateLoader</a>。</li>
+</ul>
+<p>在任一情況下,指定的 {@link android.app.LoaderManager.LoaderCallbacks}實作會與載入器建立關聯且會在載入器狀態變更時呼叫。
+
+如果進行此呼叫時,呼叫器處於已啟動狀態,而要求的載入器已經存在並產生自己的資料,那麼系統會立即呼叫 {@link
+android.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()} (在 {@link android.app.LoaderManager#initLoader initLoader()} 期間),請務必做好發生這種情況的準備。
+
+
+
+如要進一步瞭解此回呼,請參閱 <a href="#onLoadFinished">onLoadFinished
+</a>。</p>
+
+<p>請注意,{@link android.app.LoaderManager#initLoader initLoader()}方法會傳回建立的 {@link android.content.Loader},但您不需要擷取它的參照。
+
+{@link android.app.LoaderManager} 會自動管理載入器的生命週期。
+{@link android.app.LoaderManager} 會在必要時啟動及停止載入,並維護載入器的狀態與其相關內容。
+
+顧名思義,您鮮少會直接與載入器互動 (但如需使用載入器方法微調載入器行為的範例,請參閱 <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> 範例)。
+
+當發生特定事件時,您最常會使用 {@link
+android.app.LoaderManager.LoaderCallbacks} 方法來介入載入程序。
+
+如要進一步瞭解此主題,請參閱<a href="#callback">使用 LoaderManager 回呼</a>。</p>
+
+<h3 id="restarting">重新啟動載入器</h3>
+
+<p>當您使用 {@link android.app.LoaderManager#initLoader initLoader()} (如上所示),它會使用已指定 ID 的現有載入器 (如果有的話)。
+
+如果沒有,就會自行建立載入器。不過,有時候您會想捨棄舊資料並從頭開始。
+</p>
+
+<p>如要捨棄舊資料,請使用 {@link
+android.app.LoaderManager#restartLoader restartLoader()}。例如,當使用者的查詢改變時,實作 {@link android.widget.SearchView.OnQueryTextListener} 會重新啟動載入器。
+
+您必須重新啟動載入器,才能使用修訂後的搜尋篩選器執行新的查詢:
+</p>
+
+<pre>
+public boolean onQueryTextChanged(String newText) {
+    // Called when the action bar search text has changed.  Update
+    // the search filter, and restart the loader to do a new query
+    // with this filter.
+    mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+    getLoaderManager().restartLoader(0, null, this);
+    return true;
+}</pre>
+
+<h3 id="callback">使用 LoaderManager 回呼</h3>
+
+<p>{@link android.app.LoaderManager.LoaderCallbacks} 是回呼介面,可讓用戶端與 {@link android.app.LoaderManager} 互動。
+ </p>
+<p>載入器 (特別是 {@link android.content.CursorLoader}) 在停止之後,應該會保留它們的資料。
+這可讓應用程式保留其在 Activity 或片段的 {@link android.app.Activity#onStop
+onStop()} 與 {@link android.app.Activity#onStart onStart()} 方法間的資料,好讓使用者回到應用程式時,不必枯等資料重新載入。
+
+
+您可以使用 {@link android.app.LoaderManager.LoaderCallbacks} 方法,藉以得知何時該建立新的載入器,以及指示應用程式何時該停止使用載入器的資料。
+
+</p>
+
+<p>{@link android.app.LoaderManager.LoaderCallbacks} 包含以下方法:
+</p>
+<ul>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()} — 具現化及傳回指定 ID 的新 {@link android.content.Loader}。
+
+</li></ul>
+<ul>
+  <li> {@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished onLoadFinished()} — 當先前建立的載入器已完成其載入工作時呼叫。
+
+</li></ul>
+<ul>
+  <li>{@link android.app.LoaderManager.LoaderCallbacks#onLoaderReset onLoaderReset()} — 正要重設先前建立的載入器時呼叫,使其資料無法使用。
+
+
+</li>
+</ul>
+<p>以上方法在下列幾節有更詳細的說明。</p>
+
+<h4 id ="onCreateLoader">onCreateLoader</h4>
+
+<p>當您嘗試存取載入器 (例如,透過 {@link
+android.app.LoaderManager#initLoader initLoader()}) 時,系統會檢查根據 ID 指定的載入器是否已存在。
+如果不存在,就會觸發 {@link
+android.app.LoaderManager.LoaderCallbacks} 方法 {@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()}。您可以在這裡建立新的載入器。
+這通常會是 {@link
+android.content.CursorLoader},但您也可以實作自己的 {@link
+android.content.Loader} 子類別。 </p>
+
+<p>在此範例中,{@link
+android.app.LoaderManager.LoaderCallbacks#onCreateLoader onCreateLoader()} 回呼方法會建立 {@link android.content.CursorLoader}。
+您必須使用其建構函式方法來建置
+{@link android.content.CursorLoader},其需要一組完整的資訊才能對 {@link
+android.content.ContentProvider} 執行查詢。
+具體來說,建構函式方法需要以下項目:</p>
+<ul>
+  <li>uri<em></em> - 要擷取內容的 URI。 </li>
+  <li>projection<em></em> - 要傳回的欄清單。傳送
+<code>null</code> 將會傳回無效的所有欄。 </li>
+  <li>selection<em></em> - 篩選器會採用 SQL WHERE 子句的格式 (WHERE 本身除外) 宣告要傳回的列。
+傳送
+<code>null</code> 將會傳回指定 URI 的所有列。 </li>
+  <li>selectionArgs<em></em> - 您可能會在選取項目中包含 ?s,而其會由來自 selectionArgs<em></em> 的值按照其出現在選取項目中的順序所取代。
+
+值將會繫結為字串。 </li>
+  <li>sortOrder<em></em> - 如何採用 SQL ORDER BY 子句的格式 (ORDER BY 本身除外) 來排列各列的順序。
+傳遞 <code>null</code> 將會使用預設的排序順序,其可能是無排序順序。
+</li>
+</ul>
+<p>例如:</p>
+<pre>
+ // If non-null, this is the current filter the user has provided.
+String mCurFilter;
+...
+public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+    // This is called when a new Loader needs to be created.  This
+    // sample only has one Loader, so we don't care about the ID.
+    // First, pick the base URI to use depending on whether we are
+    // currently filtering.
+    Uri baseUri;
+    if (mCurFilter != null) {
+        baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+                  Uri.encode(mCurFilter));
+    } else {
+        baseUri = Contacts.CONTENT_URI;
+    }
+
+    // Now create and return a CursorLoader that will take care of
+    // creating a Cursor for the data being displayed.
+    String select = &quot;((&quot; + Contacts.DISPLAY_NAME + &quot; NOTNULL) AND (&quot;
+            + Contacts.HAS_PHONE_NUMBER + &quot;=1) AND (&quot;
+            + Contacts.DISPLAY_NAME + &quot; != '' ))&quot;;
+    return new CursorLoader(getActivity(), baseUri,
+            CONTACTS_SUMMARY_PROJECTION, select, null,
+            Contacts.DISPLAY_NAME + &quot; COLLATE LOCALIZED ASC&quot;);
+}</pre>
+<h4 id="onLoadFinished">onLoadFinished</h4>
+
+<p>這個方法是在先前建立的載入器已完成其載入工作時呼叫。
+此方法一律是在提供給此載入器的最後資料發佈之前呼叫。
+此時,您應要移除所有使用的舊資料 (由於資料即將發佈),但不應自行發佈,因為載入器擁有該資料且將會負責處理。
+
+</p>
+
+
+<p>一旦應用程式不再使用資料時,載入器就會立即發佈資料。
+例如,如果資料是來自 {@link
+android.content.CursorLoader} 的游標,您不應該自行對它呼叫 {@link
+android.database.Cursor#close close()}。如果正要將該游標放入
+{@link android.widget.CursorAdapter},您應該使用 {@link
+android.widget.SimpleCursorAdapter#swapCursor swapCursor()} 方法,如此才不會關閉舊的
+{@link android.database.Cursor}。例如:</p>
+
+<pre>
+// This is the Adapter being used to display the list's data.<br
+/>SimpleCursorAdapter mAdapter;
+...
+
+public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
+    // Swap the new cursor in.  (The framework will take care of closing the
+    // old cursor once we return.)
+    mAdapter.swapCursor(data);
+}</pre>
+
+<h4 id="onLoaderReset">onLoaderReset</h4>
+
+<p>這個方法是在正要重設先前建立的載入器時呼叫,以便使其資料無法使用。
+此回呼方法可讓您知道即將要發佈資料,而能先行將其參照移除。
+  </p>
+<p>此實作會以 <code>null</code> 的值呼叫 
+{@link android.widget.SimpleCursorAdapter#swapCursor swapCursor()}:
+</p>
+
+<pre>
+// This is the Adapter being used to display the list's data.
+SimpleCursorAdapter mAdapter;
+...
+
+public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
+    // This is called when the last Cursor provided to onLoadFinished()
+    // above is about to be closed.  We need to make sure we are no
+    // longer using it.
+    mAdapter.swapCursor(null);
+}</pre>
+
+
+<h2 id="example">範例說明</h2>
+
+<p>例如,以下是 {@link
+android.app.Fragment} 的完整實作,
+其顯示的 {@link android.widget.ListView} 包含聯絡人內容供應程式的查詢結果。它使用 {@link
+android.content.CursorLoader} 管理對供應程式的查詢。</p>
+ 
+<p>如本範例所示,針對要存取使用者聯絡人的應用程式,它的宣示說明必須包含 {@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS} 權限。
+
+</p>
+
+<pre>
+public static class CursorLoaderListFragment extends ListFragment
+        implements OnQueryTextListener, LoaderManager.LoaderCallbacks&lt;Cursor&gt; {
+
+    // This is the Adapter being used to display the list's data.
+    SimpleCursorAdapter mAdapter;
+
+    // If non-null, this is the current filter the user has provided.
+    String mCurFilter;
+
+    @Override public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        // Give some text to display if there is no data.  In a real
+        // application this would come from a resource.
+        setEmptyText(&quot;No phone numbers&quot;);
+
+        // We have a menu item to show in action bar.
+        setHasOptionsMenu(true);
+
+        // Create an empty adapter we will use to display the loaded data.
+        mAdapter = new SimpleCursorAdapter(getActivity(),
+                android.R.layout.simple_list_item_2, null,
+                new String[] { Contacts.DISPLAY_NAME, Contacts.CONTACT_STATUS },
+                new int[] { android.R.id.text1, android.R.id.text2 }, 0);
+        setListAdapter(mAdapter);
+
+        // Prepare the loader.  Either re-connect with an existing one,
+        // or start a new one.
+        getLoaderManager().initLoader(0, null, this);
+    }
+
+    @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        // Place an action bar item for searching.
+        MenuItem item = menu.add(&quot;Search&quot;);
+        item.setIcon(android.R.drawable.ic_menu_search);
+        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+        SearchView sv = new SearchView(getActivity());
+        sv.setOnQueryTextListener(this);
+        item.setActionView(sv);
+    }
+
+    public boolean onQueryTextChange(String newText) {
+        // Called when the action bar search text has changed.  Update
+        // the search filter, and restart the loader to do a new query
+        // with this filter.
+        mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+        getLoaderManager().restartLoader(0, null, this);
+        return true;
+    }
+
+    @Override public boolean onQueryTextSubmit(String query) {
+        // Don't care about this.
+        return true;
+    }
+
+    @Override public void onListItemClick(ListView l, View v, int position, long id) {
+        // Insert desired behavior here.
+        Log.i(&quot;FragmentComplexList&quot;, &quot;Item clicked: &quot; + id);
+    }
+
+    // These are the Contacts rows that we will retrieve.
+    static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
+        Contacts._ID,
+        Contacts.DISPLAY_NAME,
+        Contacts.CONTACT_STATUS,
+        Contacts.CONTACT_PRESENCE,
+        Contacts.PHOTO_ID,
+        Contacts.LOOKUP_KEY,
+    };
+    public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+        // This is called when a new Loader needs to be created.  This
+        // sample only has one Loader, so we don't care about the ID.
+        // First, pick the base URI to use depending on whether we are
+        // currently filtering.
+        Uri baseUri;
+        if (mCurFilter != null) {
+            baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+                    Uri.encode(mCurFilter));
+        } else {
+            baseUri = Contacts.CONTENT_URI;
+        }
+
+        // Now create and return a CursorLoader that will take care of
+        // creating a Cursor for the data being displayed.
+        String select = &quot;((&quot; + Contacts.DISPLAY_NAME + &quot; NOTNULL) AND (&quot;
+                + Contacts.HAS_PHONE_NUMBER + &quot;=1) AND (&quot;
+                + Contacts.DISPLAY_NAME + &quot; != '' ))&quot;;
+        return new CursorLoader(getActivity(), baseUri,
+                CONTACTS_SUMMARY_PROJECTION, select, null,
+                Contacts.DISPLAY_NAME + &quot; COLLATE LOCALIZED ASC&quot;);
+    }
+
+    public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor data) {
+        // Swap the new cursor in.  (The framework will take care of closing the
+        // old cursor once we return.)
+        mAdapter.swapCursor(data);
+    }
+
+    public void onLoaderReset(Loader&lt;Cursor&gt; loader) {
+        // This is called when the last Cursor provided to onLoadFinished()
+        // above is about to be closed.  We need to make sure we are no
+        // longer using it.
+        mAdapter.swapCursor(null);
+    }
+}</pre>
+<h3 id="more_examples">其他範例</h3>
+
+<p><strong>ApiDemos</strong> 中有數個不同的範例,示範如何使用載入器:
+</p>
+<ul>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.html">LoaderCursor</a> - 上述程式碼片段的完整版本在此。
+
+</li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.html"> LoaderThrottle</a> - 以範例說明如何使用節流功能在其資料變更時降低內容供應程式執行的查詢數目。
+</li>
+</ul>
+
+<p>如要進一步瞭解如何下載及安裝 SDK 範例,請參閱<a href="http://developer.android.com/resources/samples/get.html">取得範例</a>。
+ </p>
+
diff --git a/docs/html-intl/intl/zh-tw/guide/components/processes-and-threads.jd b/docs/html-intl/intl/zh-tw/guide/components/processes-and-threads.jd
new file mode 100644
index 0000000..74dbb8e
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/components/processes-and-threads.jd
@@ -0,0 +1,411 @@
+page.title=處理程序和執行緒
+page.tags=生命週期、背景
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本文件內容</h2>
+<ol>
+<li><a href="#Processes">處理程序</a>
+  <ol>
+    <li><a href="#Lifecycle">處理程序生命週期</a></li>
+  </ol>
+</li>
+<li><a href="#Threads">執行緒</a>
+  <ol>
+    <li><a href="#WorkerThreads">工作者執行緒</a></li>
+    <li><a href="#ThreadSafe">安全執行緒方法</a></li>
+  </ol>
+</li>
+<li><a href="#IPC">處理程序間通訊</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>當應用程式元件啟動且該應用程式未執行任何其他元件時,Android 系統會以執行單一執行緒的方式,為該應用程式啟動新的 Linux 處理程序。
+
+預設會以相同的處理程序和執行緒 (稱為「主要」執行緒) 執行相同應用程式的所有元件。
+如果應用程式元件啟動且已有該應用程式的處理程序存在 (由於應用程式還有另一個元件存在),那麼元件會在該處理程序中啟動,並使用相同的執行緒執行。
+
+不過,您可以安排應用程式中的不同元件以個別處理程序執行,還可以為任何處理程序建立額外的執行緒。
+
+</p>
+
+<p>本文件說明處理程序和執行緒如何在 Android 應用程式中運作。</p>
+
+
+<h2 id="Processes">處理程序</h2>
+
+<p>在預設情況下,系統會以相同的處理程序執行相同應用程式的所有元件,而且大部分應用程式都是如此。
+不過,如果您需要控制特定元件所屬的處理程序,可以在宣示說明檔案中這麼做。
+</p>
+
+<p>每種元件元素 &mdash; <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a>、<a href="{@docRoot}guide/topics/manifest/service-element.html">{@code
+&lt;service&gt;}</a>、<a href="{@docRoot}guide/topics/manifest/receiver-element.html">{@code
+&lt;receiver&gt;}</a> 和 <a href="{@docRoot}guide/topics/manifest/provider-element.html">{@code
+&lt;provider&gt;}</a> &mdash; 的宣示說明項目都支援 {@code android:process} 屬性,這項屬性能指定元件應在哪個處理程序執行。
+您可以設定此屬性讓每個元件都以自己的處理程序執行,或只讓當中的部分元件共用同一處理程序。
+您也可以設定 
+{@code android:process},讓不同應用程式的元件以相同的處理程序執行,只要這些應用程式分享相同的 Linux 使用者 ID 並以相同的憑證簽署。
+
+</p>
+
+<p><a href="{@docRoot}guide/topics/manifest/application-element.html">{@code
+&lt;application&gt;}</a> 元素也支援 {@code android:process} 屬性,以設定要套用到所有元件的預設值。
+</p>
+
+<p>Android 可能會在記憶體不足且需要其他處理程序更立即為使用者提供服務時,決定關閉處理程序。
+使用已終止的處理程序執行的應用程式元件會因此而終結。
+當再次有工作需要執行時,就會為這些元件再次啟動處理程序。
+</p>
+
+<p>Android 系統會將處理程序對使用者的相對重要性加權,以決定要終止的處理程序。
+例如,相較於代管可見 Activity 的處理程序,系統較容易關閉代管已不在螢幕上顯示的 Activity 的處理程序。
+因此,是否要終止處理程序,取決於以該處理程序執行中的元件狀態。
+如要瞭解用於決定是否終止處理程序的規則,請參閱下文。
+ </p>
+
+
+<h3 id="Lifecycle">處理程序生命週期</h3>
+
+<p>Android 系統會儘可能持續維護處理程序,但最終仍必須移除舊的處理程序,以便回收記憶體供新的或更重要的處理程序使用。
+系統會根據以該處理程序執行的元件和那些元件的狀態,將每個處理程序放入「重要性階層」,藉此決定要保留以及要終止的處理程序。
+
+
+重要性最低的處理程序會最先遭到終止,接著是重要性次低的處理程序,依此類推,視需要收回系統資源。
+
+</p>
+
+<p>重要性階層共有五個層級。下方清單依照重要性的順序列出不同類型的處理程序 (第一個處理程序為「最重要」<em></em>且會「最後終止」<em></em>):
+
+</p>
+
+<ol>
+  <li><b>前景處理程序</b>
+    <p>這種處理程序是指使用者目前執行的工作所需的處理程序。針對下列任一情況,系統或將處理程序視為位於前景中:
+</p>
+
+      <ul>
+        <li>使用者正與其代管的 {@link android.app.Activity} 互動 (已呼叫 {@link
+android.app.Activity} 的 {@link android.app.Activity#onResume onResume()} 方法)。
+</li>
+
+        <li>其代管的 {@link android.app.Service} 已繫結至正在與使用者互動的 Activity。
+</li>
+
+        <li>其代管的 {@link android.app.Service} 正「在前景」執行中 (服務已呼叫 {@link android.app.Service#startForeground startForeground()})。
+
+
+        <li>其代管的 {@link android.app.Service} 正在執行本身的其中一個生命週期回呼 ({@link android.app.Service#onCreate onCreate()}、{@link android.app.Service#onStart onStart()} 或 {@link android.app.Service#onDestroy onDestroy()})。
+
+</li>
+
+        <li>其代管的 {@link android.content.BroadcastReceiver} 正在執行本身的 {@link
+android.content.BroadcastReceiver#onReceive onReceive()} 方法。</li>
+    </ul>
+
+    <p>一般來說,在任何指定時間內只會有幾個前景處理程序存在。只有在記憶體過低而全都無法繼續執行時,才會採取這最後的手段來終止它們。
+在這種情況下,裝置通常已達到記憶體分頁處理狀態,因此必須終止一些前景處理程序,才能讓使用者介面保持回應。
+
+</p></li>
+
+  <li><b>可見處理程序</b>
+    <p>這種處理程序是指沒有任何前景元件的處理程序,但仍會影響使用者在螢幕上看見的內容。
+針對下列任一情況,系統會將處理程序視為可見:
+</p>
+
+      <ul>
+        <li>其代管的 {@link android.app.Activity} 不在前景中,但使用者仍可看見 (已呼叫它的 {@link android.app.Activity#onPause onPause()} 方法)。
+例如,如果前景 Activity 啟動的對話方塊允許在它身後看見先前的 Activity,就會發生這種情況。
+
+</li>
+
+        <li>其代管的 {@link android.app.Service} 已繫結至可見 (或前景) Activity。
+</li>
+      </ul>
+
+      <p>可見處理程序相當重要而且不會遭到終止,除非系統為了讓所有前景處理程序維持執行而必須終止這類處理程序。
+ </p>
+    </li>
+
+  <li><b>服務處理程序</b>
+    <p>這種處理程序是指正在執行已使用 {@link
+android.content.Context#startService startService()} 方法啟動的服務的處理程序;此處理程序不屬於上述兩種較重要的類別。
+雖然服務處理程序是間接繫結至使用者所見內容,但通常會執行使用者重視的工作 (例如,在背景中播放音樂,或下載網路上的資料),因此除非記憶體不足,無法讓所有前景與可見處理程序保持執行,否則系統會讓這類處理程序繼續執行。
+
+
+ </p>
+  </li>
+
+  <li><b>背景處理程序</b>
+    <p>這種處理程序會保留使用者目前看不見的 Activity (已呼叫 Activity 的 
+{@link android.app.Activity#onStop onStop()} 方法)。這些處理程序會間接影響使用者體驗,且系統能隨時將其終止,藉此回收記憶體以供前景、可見或服務處理程序使用。
+
+
+通常會有許多背景處理程序處於執行中,因此會將它們放在 LRU (最近最少使用) 清單中,以確保在最後才將包含使用者最近最常見 Activity 的處理程序終止。
+
+如果 Activity 正確實作其生命週期方法並儲存其目前狀態,終止其處理程序不會對使用者體驗造成任何可察覺的影響,原因是當使用者瀏覽回 Activity 時,該 Activity 會還原它的所有可見狀態。
+
+
+如要進一步瞭解如何儲存及還原狀態,請參閱 <a href="{@docRoot}guide/components/activities.html#SavingActivityState">Activity</a>。
+</p>
+  </li>
+
+  <li><b>空白處理程序</b>
+    <p>這種處理程序是指未保留任何使用中應用程式元件的處理程序。讓這類處理程序保持有效的唯一目的是將其用於快取,以改善元件下次執行時所需的啟動時間。
+
+系統通常會終止這些處理程序,以平衡處理程序快取與底層核心快取之間的整體系統資源。
+</p>
+  </li>
+</ol>
+
+
+  <p>Android 會根據在處理程序中目前處於使用中的元件重要性,將處理程序盡量排在最高層級。
+例如,如果處理程序代管一項服務和一個可見 Activity,此處理程序的會排為可見處理程序,而不是服務處理程序。
+</p>
+
+  <p>此外,還可能因為它有其他相依處理程序,而導致處理程序的排名提升:為另一個處理程序提供服務的處理程序,其排名絕不能低於為其提供服務的處理程序。
+
+例如,如果處理程序 A 的內容供應程式為處理程序 B 中的用戶端提供服務,或處理程序 A 中的服務繫結至處理程序 B 中的元件,則系統至少會將處理程序 A 視為和處理程序 B 一樣重要。
+
+</p>
+
+  <p>由於執行服務的處理程序排名會比包含背景 Activity 的處理程序排名高,因此初始化長時間執行操作的 Activity 可能適合啟動該操作的<a href="{@docRoot}guide/components/services.html">服務</a>,而不只是建立工作者執行緒 &mdash; 特別是該操作可能會比 Activity 持久。例如,將圖片上傳至網站 Activity 應該啟動要執行上傳的服務,如果使用者離開 Activity,上傳處理程序也能在背景中繼續進行。如果使用服務,不論 Activity 發生什麼情況,都可保證該操作的優先順序至少會是「服務處理程序」。
+
+
+
+
+
+廣播接收器應該採用服務,而不是只在執行緒中放置時間耗用操作,也是相同的理由。
+</p>
+
+
+
+
+<h2 id="Threads">執行緒</h2>
+
+<p>當應用程式啟動時,系統會為執行該應用程式建立一個稱為「主要」的執行緒。
+這個執行緒非常重要,原因是它負責將事件分配給適當的使用者介面小工具,包括繪製事件。
+您的應用程式與 Android UI 工具組中的元件 ({@link
+android.widget} 和 {@link android.view} 中的元件) 互動時,也需要使用這個執行緒。
+因此,主要執行緒有時也稱為 UI 執行緒。
+</p>
+
+<p>系統「不會」<em></em>為每個元件執行個體建立個別的執行緒。以相同處理程序執行的所有元件都是利用 UI 執行緒來具現化,而且都是由該執行緒分配系統呼叫的每個元件。
+
+因此,回應系統回呼的方法 (例如報告使用者動作的 {@link android.view.View#onKeyDown onKeyDown()} 或生命週期回呼方法) 一律會以該處理程序的 UI 執行緒執行。
+
+</p>
+
+<p>例如,當使用者輕觸畫面上的按鈕時,您應用程式的 UI 執行緒會將輕觸事件分配給小工具,接著設定其按下狀態並對事件佇列張貼失效要求。
+
+UI 執行緒會將要求從佇列中移除,然後通知小工具應重新繪製本身。
+</p>
+
+<p>當您的應用程式密集執行作業以回應使用者互動時,除非您適當實作應用程式,否則這種單一執行緒模型會降低效能。
+具體來說,假設一切都在 UI 執行緒中進行,如果執行像是網路存取或資料庫查詢的長時間操作,將會封鎖整個 UI。當執行緒遭到封鎖時,會無法分配任何事件 (包括繪製事件)。
+
+
+從使用者的觀點來看,應用程式似乎閒置不動。
+更糟的是,如果 UI 執行緒遭到封鎖長達數秒 (目前約為 5 秒),就會向使用者顯示的「<a href="http://developer.android.com/guide/practices/responsiveness.html">應用程式沒有回應</a>」(ANR) 對話方塊。
+
+使用者接著會決定結束您的應用程式,並可能因感到不滿而將其解除安裝。
+</p>
+
+<p>此外,Andoid UI 工具組「並非」<em></em>安全執行緒,因此請勿透過工作者執行緒操縱 UI &mdash; 使用者介面的所有操縱作業都必須從 UI 執行緒來執行。
+
+基於上述原因,Android 的單一執行緒模型只有兩項簡單規則:</p>
+
+<ol>
+<li>不要封鎖 UI 執行緒
+<li>不要從 UI 執行緒以外的位置存取 Android UI 工具組
+</ol>
+
+<h3 id="WorkerThreads">工作者執行緒</h3>
+
+<p>因為上述的單一執行緒模型,所以不封鎖 UI 執行緒對於應用程式 UI 的回應能力至關重要。
+如果您有不會立即執行的操作,請務必以不同的執行緒 (「背景」或「工作者」執行緒) 執行這類操作。
+
+</p>
+
+<p>例如,以下是從個別執行緒下載圖片並顯示在 {@link android.widget.ImageView} 的部分點擊接聽器程式碼:
+</p>
+
+<pre>
+public void onClick(View v) {
+    new Thread(new Runnable() {
+        public void run() {
+            Bitmap b = loadImageFromNetwork("http://example.com/image.png");
+            mImageView.setImageBitmap(b);
+        }
+    }).start();
+}
+</pre>
+
+<p>首先,由於這會建立新的執行緒來處理網路操作,所以看起來似乎可以正常運作。
+不過,它違反單一執行緒模型的第二項規則:「不要從 UI 執行緒以外的位置存取 Android UI 工具組」<em></em>&mdash; 這個範例修改工作者執行緒中的 {@link
+android.widget.ImageView},而不是 UI 執行緒。
+這樣會產生未定義且預期外的行為,不但難以追蹤且耗費時間。
+</p>
+
+<p>為修正這個問題,Android 提供數種可從其他執行緒存取 UI 執行緒的方法。
+以下是可協助修正此問題的方法清單:</p>
+
+<ul>
+<li>{@link android.app.Activity#runOnUiThread(java.lang.Runnable)
+Activity.runOnUiThread(Runnable)}</li>
+<li>{@link android.view.View#post(java.lang.Runnable) View.post(Runnable)}</li>
+<li>{@link android.view.View#postDelayed(java.lang.Runnable, long) View.postDelayed(Runnable,
+long)}</li>
+</ul>
+
+<p>例如,您可以使用 {@link
+android.view.View#post(java.lang.Runnable) View.post(Runnable)} 方法來修正上述程式碼:</p>
+
+<pre>
+public void onClick(View v) {
+    new Thread(new Runnable() {
+        public void run() {
+            final Bitmap bitmap = loadImageFromNetwork("http://example.com/image.png");
+            mImageView.post(new Runnable() {
+                public void run() {
+                    mImageView.setImageBitmap(bitmap);
+                }
+            });
+        }
+    }).start();
+}
+</pre>
+
+<p>現在這個實作才是安全執行緒:雖然從不同的執行緒完成網路操作,但卻是從 UI 執行緒操縱 {@link android.widget.ImageView}。
+</p>
+
+<p>不過,隨著操作複雜度日益增加,這種程式碼也會變得複雜且難以維護。
+如要利用工作者執行緒處理更複雜的互動,您可能要考慮在工作者執行緒中使用 {@link android.os.Handler},以處理從 UI 執行緒傳送的訊息。
+
+最佳解決方案也許是擴充 {@link android.os.AsyncTask} 類別,將必須與 UI 互動的工作者執行緒工作執行簡化。
+</p>
+
+
+<h4 id="AsyncTask">使用 AsyncTask</h4>
+
+<p>{@link android.os.AsyncTask} 可讓您透過使用者介面執行非同步工作。
+它會以工作者執行緒執行封鎖操作,然後將結果發行在 UI 執行緒,完全不需要您自行處理執行緒和/或處理常式。
+</p>
+
+<p>使用方法是您必須要有子類別 {@link android.os.AsyncTask},並實作以背景執行緒集區執行的 {@link
+android.os.AsyncTask#doInBackground doInBackground()} 回呼方法。
+如要更新您的 UI,請實作 {@link
+android.os.AsyncTask#onPostExecute onPostExecute()} 來傳送 {@link
+android.os.AsyncTask#doInBackground doInBackground()} 的結果,然後以 UI 執行緒執行,如此您才能安全地更新 UI。
+接著,您可以從 UI 執行緒呼叫 {@link android.os.AsyncTask#execute execute()} 來執行該工作。
+</p>
+
+<p>例如,您可以使用 {@link android.os.AsyncTask} 這種方法實作先前的範例:
+</p>
+
+<pre>
+public void onClick(View v) {
+    new DownloadImageTask().execute("http://example.com/image.png");
+}
+
+private class DownloadImageTask extends AsyncTask&lt;String, Void, Bitmap&gt; {
+    /** The system calls this to perform work in a worker thread and
+      * delivers it the parameters given to AsyncTask.execute() */
+    protected Bitmap doInBackground(String... urls) {
+        return loadImageFromNetwork(urls[0]);
+    }
+    
+    /** The system calls this to perform work in the UI thread and delivers
+      * the result from doInBackground() */
+    protected void onPostExecute(Bitmap result) {
+        mImageView.setImageBitmap(result);
+    }
+}
+</pre>
+
+<p>現在 UI 很安全,而且程式碼變得更簡單,這是因為它將工作分成兩部分,一部分應在工作者執行緒上完成,而另一部分應在 UI 執行緒上完成。
+</p>
+
+<p>建議您參閱 {@link android.os.AsyncTask} 參考資料,以全面瞭解如何使用此類別;以下是其如何運作的快速總覽:
+</p>
+
+<ul>
+<li>您可以使用泛型來指定參數類型、進度值以及工作的最終值
+</li>
+<li>{@link android.os.AsyncTask#doInBackground doInBackground()} 方法會在工作者執行緒中自動執行
+</li>
+<li>{@link android.os.AsyncTask#onPreExecute onPreExecute()}、{@link
+android.os.AsyncTask#onPostExecute onPostExecute()} 和 {@link
+android.os.AsyncTask#onProgressUpdate onProgressUpdate()} 全都是透過 UI 執行緒呼叫。</li>
+<li>{@link android.os.AsyncTask#doInBackground doInBackground()} 傳回的值會傳送至
+{@link android.os.AsyncTask#onPostExecute onPostExecute()}</li>
+<li>您隨時都可用 {@link
+android.os.AsyncTask#doInBackground doInBackground()} 呼叫 {@link android.os.AsyncTask#publishProgress publishProgress()},以便透過 UI 執行緒執行 {@link
+android.os.AsyncTask#onProgressUpdate onProgressUpdate()}。</li>
+<li>您可以從任何執行緒隨時取消工作</li>
+</ul>
+
+<p class="caution"><strong>注意:</strong>使用工作者執行緒可能會遇到的另一個問題是,由於<a href="{@docRoot}guide/topics/resources/runtime-changes.html">執行階段設定變更</a> (例如使用者變更螢幕方向時) 使您的 Activity 意外重新啟動,而可能會終止您的工作者站執行緒。
+
+請參閱 <a href="http://code.google.com/p/shelves/">Shelves</a> 範例應用程式的原始程式碼,以瞭解如何在遇到其中一種重新啟動情況時保留您的工作,以及如何在 Activity 遭到終止時適當取消該工作。
+
+</p>
+
+
+<h3 id="ThreadSafe">安全執行緒方法</h3>
+
+<p> 在某些情況下,您實作的方法可能是從多個執行緒呼叫,因此務必要撰寫成安全執行緒。
+ </p>
+
+<p>這種情況主要發生在可從遠端呼叫的方法,例如<a href="{@docRoot}guide/components/bound-services.html">已繫結服務</a>中的方法。當在源自執行 {@link android.os.IBinder IBinder} 的相同處理程序中實作 {@link android.os.IBinder} 方法上的呼叫時,該方法是以呼叫端的執行緒執行。
+
+
+
+不過,當呼叫源自另一個處理程序時,會從系統在相同處理程序中當成 {@link android.os.IBinder
+IBinder} (未以處理程序的 UI 執行緒執行) 維護的執行緒集區,以選擇的執行緒來執行該方法。例如,雖然服務的
+{@link android.app.Service#onBind onBind()} 方法可從服務處理程序的 UI 執行緒呼叫,但以 {@link android.app.Service#onBind
+onBind()} 傳回的物件實作的方法會從集區中的執行緒呼叫。
+
+由於服務能有多個用戶端,同時也能有多個集區執行緒採用相同的
+{@link android.os.IBinder IBinder} 方法。因此 {@link android.os.IBinder
+IBinder} 方法必須實作為安全執行緒。</p>
+
+<p> 同樣地,內容供應程式能接收源自其他處理程序的資料要求。
+雖然 {@link android.content.ContentResolver} 與 {@link android.content.ContentProvider}
+類別會隱藏如何管理處理程序間通訊的詳細資料,但回應這些要求的 {@link
+android.content.ContentProvider} 方法 &mdash; {@link
+android.content.ContentProvider#query query()}、{@link android.content.ContentProvider#insert
+insert()}、{@link android.content.ContentProvider#delete delete()}、{@link
+android.content.ContentProvider#update update()} 和 {@link android.content.ContentProvider#getType
+getType()} &mdash; 是在內容供應程式的處理程序中從執行緒集區呼叫,而不是該處理程序的 UI 執行緒。
+由於可能會同時有任意數目的執行緒呼叫這些方法,因此它們也要實作為安全執行緒。
+ </p>
+
+
+<h2 id="IPC">處理程序間通訊</h2>
+
+<p>Android 提供一項使用遠端程序呼叫 (RPC) 進行處理程序間通訊 (IPC) 的機制,RPC 是指 (以另一個處理程序) 從遠端執行由 Activity 或其他應用程式元件呼叫的方法,再加上要傳回給呼叫端的任何結果。
+
+
+這需要將方法呼叫與其資料分解成作業系統能夠瞭解的程度,將它從本機處理程序與位址空間傳輸到遠端處理程序與位址空間,然後再重新組合和重新實作呼叫。
+
+接著,再以相反的方向傳輸傳回值。
+Android 提供進行這些 IPC 交易的所有程式碼,讓您可以專心定義及實作 RPC 程式設計介面。
+ </p>
+
+<p>如要執行 IPC,您的應用程式必須使用 {@link
+android.content.Context#bindService bindService()} 來繫結至服務。如需詳細資訊,請參閱<a href="{@docRoot}guide/components/services.html">服務</a>開發人員指南。</p>
+
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For information about how to perform work in the background for an indefinite period of time
+(without a user interface), continue with the <b><a
+href="{@docRoot}guide/components/services.html">Services</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/zh-tw/guide/components/recents.jd b/docs/html-intl/intl/zh-tw/guide/components/recents.jd
new file mode 100644
index 0000000..d56c12c
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/components/recents.jd
@@ -0,0 +1,256 @@
+page.title=總覽畫面
+page.tags="recents","overview"
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>本文件內容</h2>
+  <ol>
+    <li><a href="#adding">新增工作到總覽畫面</a>
+      <ol>
+        <li><a href="#flag-new-doc">使用意圖旗標來新增工作</a></li>
+        <li><a href="#attr-doclaunch">使用 Activity 屬性來新增工作</a></li>
+      </ol>
+    </li>
+    <li><a href="#removing">移除工作</a>
+      <ol>
+        <li><a href="#apptask-remove">使用 AppTask 類別來移除工作</a></li>
+        <li><a href="#retain-finished">保留結束的工作</a></li>
+      </ol>
+    </li>
+  </ol>
+
+  <h2>重要類別</h2>
+  <ol>
+    <li>{@link android.app.ActivityManager.AppTask}</li>
+    <li>{@link android.content.Intent}</li>
+  </ol>
+
+  <h2>程式碼範例</h2>
+  <ol>
+    <li><a href="{@docRoot}samples/DocumentCentricApps/index.html">以文件為中心的應用程式</a></li>
+  </ol>
+
+</div>
+</div>
+
+<p>總覽畫面 (也被稱為最近畫面、最近工作清單,或最近的應用程式) 是系統層級的 UI,可以列出最近存取的 <a href="{@docRoot}guide/components/activities.html">Activity</a> 與<a href="{@docRoot}guide/components/tasks-and-back-stack.html">工作</a>。
+
+使用者可以透過清單導覽並選擇要繼續的工作,或是使用者可以滑動的方式從清單移除工作。
+
+使用 Android 5.0 版本 (API 級別 21),相同 Activity (包含不同文件) 的多個執行個體可以在總覽畫面中顯示為工作。
+例如:對多份 Google 文件,Google 雲端硬碟能讓每份文件都對應一個工作。
+每份文件在總覽畫面中都會顯示為工作。
+</p>
+
+<img src="{@docRoot}images/components/recents.png" alt="" width="284" />
+<p class="img-caption"><strong>圖 1.</strong>總覽畫面會顯示三份 Google 雲端硬碟文件,每份都分別顯示為一項工作。
+</p>
+
+<p>一般而言,您應該允許系統定義如何在總覽畫面中呈現工作與 Activity,而且不需要修改此行為。
+然而,您的應用程式可以決定要如何與在何時於總覽畫面中顯示 Activity。
+
+{@link android.app.ActivityManager.AppTask} 類別讓您可以管理工作,而 {@link android.content.Intent} 類別的 Activity 旗標可以讓您指定何時從總覽畫面新增或移除 Activity。
+
+此外,<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
+&lt;activity&gt;</a></code> 屬性可以讓您設定宣示說明中的行為。</p>
+
+<h2 id="adding">新增工作到總覽畫面</h2>
+
+<p>使用 {@link android.content.Intent} 類別的旗標可以新增工作,該工作針對何時與如何在總覽畫面中開啟或重新開啟文件,可給予更多控制權。
+當您使用
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>屬性時,您可以選擇永遠在新工作開啟文件或對文件重複使用現有工作。
+
+</p>
+
+<h3 id="flag-new-doc">使用意圖旗標來新增工作</h3>
+
+<p>當您建立 Activity 的新文件時,您可以呼叫
+ {@link android.app.ActivityManager.AppTask} 類別的 {@link android.app.ActivityManager.AppTask#startActivity(android.content.Context, android.content.Intent, android.os.Bundle) startActivity()}方法,傳送啟動 Activity 的意圖至新文件。
+
+如要插入邏輯中斷,讓系統可以將您的 Activity 當作總覽視窗中的新工作,傳送啟動 Activity 的 {@link android.content.Intent}其 {@link android.content.Intent#addFlags(int) addFlags()} 方法中的 {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} 旗標。
+
+
+</p>
+
+<p class="note"><strong>注意:</strong>{@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} 旗標會取代 {@link android.content.Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET} 旗標,後者已從 Android 5.0 (API 級別 21) 起失效。
+
+</p>
+
+<p>如果您在建立新文件時設定 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 旗標,則系統永遠會在建立新工作時也在根目錄建立目標 Activity。此設定允許可以在一個以上的工作中開啟相同的文件。
+
+下列程式碼示範主要 Activity 如何處理:
+</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">
+DocumentCentricActivity.java</a></p>
+<pre>
+public void createNewDocument(View view) {
+      final Intent newDocumentIntent = newDocumentIntent();
+      if (useMultipleTasks) {
+          newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
+      }
+      startActivity(newDocumentIntent);
+  }
+
+  private Intent newDocumentIntent() {
+      boolean useMultipleTasks = mCheckbox.isChecked();
+      final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
+      newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
+      newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());
+      return newDocumentIntent;
+  }
+
+  private static int incrementAndGet() {
+      Log.d(TAG, "incrementAndGet(): " + mDocumentCounter);
+      return mDocumentCounter++;
+  }
+}
+</pre>
+
+<p class="note"><strong>注意:</strong>與 {@code FLAG_ACTIVITY_NEW_DOCUMENT} 旗標一起啟動的 Activity 務必要在宣示說明中設定 {@code android:launchMode="standard"} 屬性值 (預設)。
+
+</p>
+
+<p>當主要 Activity 啟動新的 Activity 時,系統會透過現有工作搜尋其意圖和 Activity 意圖元件名稱及意圖資料相同的 Activity。
+如果找不到工作,或意圖已包含 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 旗標,則會建立新的工作並使用 Activity 做為其根目錄。
+
+如果找到工作,則會將該工作帶到前面並傳送新的意圖到 {@link android.app.Activity#onNewIntent onNewIntent()}。
+新的 Activity 會取得意圖並在總覽視窗中建立新的文件,如下列範例所示:
+
+</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">NewDocumentActivity.java
+</a></p>
+<pre>
+&#64;Override
+protected void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_new_document);
+    mDocumentCount = getIntent()
+            .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0);
+    mDocumentCounterTextView = (TextView) findViewById(
+            R.id.hello_new_document_text_view);
+    setDocumentCounterText(R.string.hello_new_document_counter);
+}
+
+&#64;Override
+protected void onNewIntent(Intent intent) {
+    super.onNewIntent(intent);
+    /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this activity
+    is reused to create a new document.
+     */
+    setDocumentCounterText(R.string.reusing_document_counter);
+}
+</pre>
+
+
+<h3 id="#attr-doclaunch">使用 Activity 屬性來新增工作</h3>
+
+<p>Activity 也可以在宣示說明中指定為永遠啟動新工作,這可透過使用<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 屬性的 <a href="{@docRoot}guide/topics/manifest/activity-element.html#dlmode">
+{@code android:documentLaunchMode}</a> 達成。
+
+此屬性有四個值,在使用者使用應用程式開啟文件時,會產生下列效果:
+</p>
+
+<dl>
+  <dt>"{@code intoExisting}"</dt>
+  <dd>Activity 會對文件重複使用現有的工作。設定
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} 旗標,但「不」<em></em>設定
+{@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 旗標,會與上述<a href="#flag-new-doc">使用意圖旗標來新增工作</a>達到相同效果。
+</dd>
+
+  <dt>"{@code always}"</dt>
+  <dd>Activity 會為文件建立新的工作,就算文件已開始也會建立新的工作。使用此值與設定 {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} 與 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 旗標會達到相同效果。
+
+</dd>
+
+  <dt>"{@code none”}"</dt>
+  <dd>Activity 不會為文件建立新的工作。總覽視窗會將 Activity 當作預設:會顯示應用程式的單一工作,該工作會從使用者最後呼叫的 Activity 繼續。
+
+</dd>
+
+  <dt>"{@code never}"</dt>
+  <dd>Activity 不會為文件建立新的工作。設定此值會覆寫 {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} 與 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK} 旗標的行為,如果任一個已於意圖中設定,總覽視窗會顯示應用程式的單一工作,該工作會從使用者最後呼叫的 Activity 繼續。
+
+
+
+</dd>
+</dl>
+
+<p class="note"><strong>注意:</strong>如果值不是 {@code none} 與 {@code never},則 Activity 必須使用 {@code launchMode="standard"} 定義。
+如果沒有指定此屬性,則會使用 
+{@code documentLaunchMode="none"}。</p>
+
+<h2 id="removing">移除工作</h2>
+
+<p>依照預設,當 Activity 結束時,會自動將文件工作從總覽畫面移除。
+您可以使用 {@link android.app.ActivityManager.AppTask} 類別,搭配 {@link android.content.Intent} 旗標或 <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">
+&lt;activity&gt;</a></code> 屬性,來覆寫此行為。
+</p>
+
+<p>您可以完全從總覽畫面排除工作,設定方式為將
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 屬性的<a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">
+{@code android:excludeFromRecents}</a> 設為 {@code true}。
+</p>
+
+<p>您可以設定應用程式可以納入總覽視窗的最大工作數目,方法是對 <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 屬性 <a href="{@docRoot}guide/topics/manifest/activity-element.html#maxrecents">{@code android:maxRecents}</a> 設定整數值。
+
+
+預設值為 16。當達到工作的最大值時,會從總覽視窗移除最近最少使用的工作。
+{@code android:maxRecents} 的最大值是 50 (在低記憶體裝置上是 25);數值不可以小於 1。
+</p>
+
+<h3 id="#apptask-remove">使用 AppTask 類別來移除工作</h3>
+
+<p>在總覽畫面建立新工作的 Activity 中,您可以指定何時移除工作與結束所有相關 Activity,方法為呼叫{@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()} 方法。
+
+</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">NewDocumentActivity.java
+</a></p>
+<pre>
+public void onRemoveFromRecents(View view) {
+    // The document is no longer needed; remove its task.
+    finishAndRemoveTask();
+}
+</pre>
+
+<p class="note"><strong>注意:</strong>使用
+{@link android.app.ActivityManager.AppTask#finishAndRemoveTask() finishAndRemoveTask()} 方法覆寫 {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} 標籤的使用,會在下面討論。
+
+</p>
+
+<h3 id="#retain-finished">保留結束的工作</h3>
+
+<p>如果您要保留總覽畫面中的工作 (就算其 Activity 已結束), 方法為傳送啟動 Activity 的意圖其 {@link android.content.Intent#addFlags(int) addFlags()} 方法中的
+{@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} 旗標。
+</p>
+
+<p class="code-caption"><a href="{@docRoot}samples/DocumentCentricApps/index.html">DocumentCentricActivity.java
+</a></p>
+<pre>
+private Intent newDocumentIntent() {
+    final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
+    newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
+      android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS);
+    newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, incrementAndGet());
+    return newDocumentIntent;
+}
+</pre>
+
+<p>如要達到相同效果,可以設定
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 屬性的 <a href="{@docRoot}guide/topics/manifest/activity-element.html#autoremrecents">
+{@code android:autoRemoveFromRecents}</a> 為 {@code false}。
+對文件 Activity 的預設值為 {@code true},對定期 Activity 的預設值則為 {@code false}。
+如同之前的討論,使用此屬性可以覆寫 {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS} 旗標。
+</p>
+
+
+
+
+
+
+
diff --git a/docs/html-intl/intl/zh-tw/guide/components/services.jd b/docs/html-intl/intl/zh-tw/guide/components/services.jd
new file mode 100644
index 0000000..d6a440d
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/components/services.jd
@@ -0,0 +1,813 @@
+page.title=服務
+@jd:body
+
+<div id="qv-wrapper">
+<ol id="qv">
+<h2>本文件內容</h2>
+<ol>
+<li><a href="#Basics">基本概念</a></li>
+<ol>
+  <li><a href="#Declaring">在宣示說明中宣告服務</a></li>
+</ol>
+<li><a href="#CreatingAService">建立已啟動的服務</a>
+  <ol>
+    <li><a href="#ExtendingIntentService">延伸 IntentService 類別</a></li>
+    <li><a href="#ExtendingService">延伸服務類別</a></li>
+    <li><a href="#StartingAService">啟動服務</a></li>
+    <li><a href="#Stopping">停止服務</a></li>
+  </ol>
+</li>
+<li><a href="#CreatingBoundService">建立已繫結的服務</a></li>
+<li><a href="#Notifications">傳送通知給使用者</a></li>
+<li><a href="#Foreground">在前景中執行服務</a></li>
+<li><a href="#Lifecycle">管理服務的生命週期</a>
+<ol>
+  <li><a href="#LifecycleCallbacks">實作生命週期回呼</a></li>
+</ol>
+</li>
+</ol>
+
+<h2>重要類別</h2>
+<ol>
+  <li>{@link android.app.Service}</li>
+  <li>{@link android.app.IntentService}</li>
+</ol>
+
+<h2>範例</h2>
+<ol>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.html">{@code
+      ServiceStartArguments}</a></li>
+  <li><a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
+      LocalService}</a></li>
+</ol>
+
+<h2>另請參閱</h2>
+<ol>
+<li><a href="{@docRoot}guide/components/bound-services.html">已繫結的服務</a></li>
+</ol>
+
+</div>
+
+
+<p>{@link android.app.Service} 是可以在背景中長時間執行操作的應用程式元件,且不提供使用者介面。
+也是另一個可以啟動服務的應用程式元件,就算使用者切換至其他應用程式,也會繼續在背景中執行。
+
+此外,元件也可以繫結至服務,以便與其互動,甚至執行處理程序間通訊 (IPC)。
+例如,服務可能處理網路交易、播放音樂、執行檔案輸入/輸出或與內容供應程式互動,這些都可以從背景執行。
+
+</p>
+
+<p>服務基本上可以採取兩種形式:</p>
+
+<dl>
+  <dt>啟動</dt>
+  <dd>服務「啟動」表示應用程式元件 (例如 Activity) 透過呼叫
+{@link android.content.Context#startService startService()} 來啟動服務。一旦啟動,服務可以無限次數地在背景中執行,就算啟動服務的元件已終結也不會影響。
+通常,已啟動的服務會執行單一操作且不會將結果傳回呼叫端。例如,服務可能會透過網路下載或上傳檔案。
+
+當操作完成時,服務應該會自行終結。
+</dd>
+  <dt>繫結</dt>
+  <dd>服務「繫結」表示應用程式元件透過呼叫 {@link
+android.content.Context#bindService bindService()} 來繫結至服務。已繫結的服務提供主從式介面,讓元件可以與服務互動、傳送要求、取得結果,甚至可以使用處理程序間通訊 (IPC) 來跨程序達到目的。
+
+已繫結的服務伴隨另一個繫結至服務的應用程式元件執行。
+多重元件可以一次繫結至服務,但是當所有元件都取消繫結時,服務就會被終結。
+</dd>
+</dl>
+
+<p>雖然此文件通常分別討論服務的這兩種類別,但您的服務兩種方式都可以執行 &mdash; 可以啟動服務 (無限次數地執行) 也允許繫結。
+這僅與您是否實作兩種回呼方法而定:{@link
+android.app.Service#onStartCommand onStartCommand()} 允許元件啟動服務,而 {@link
+android.app.Service#onBind onBind()} 則允許繫結。
+</p>
+
+<p>不論您的應用程式是否啟動、繫結或兩者都有,任何應用程式元件可以使用服務 (就算來自不同的應用程式),與任何元件可以使用 Activity 的方式相同 &mdash; 使用 {@link android.content.Intent} 啟動服務。
+
+然而,您可以宣告服務為私用、位於宣示說明檔案之中,與封鎖從其他應用程式存取。
+如需更多討論資訊,請詳見<a href="#Declaring">在宣示說明中宣告服務</a>。
+
+</p>
+
+<p class="caution"><strong>注意:</strong>服務會在其託管程序的主執行緒中執行 &mdash; 服務<strong>不會</strong>建立自己的執行緒且<strong>不會</strong>在另外的程序中執行 (除非您另行指定)。
+
+這代表如果您的服務即將從事任何 CPU 密集的作業或封鎖操作 (如播放 MP3 或連線網路),您應該在服務中建立新的執行緒來執行這些工作。
+
+透過使用另外的執行緒,您會降低應用程式不回應 (ANR) 錯誤的風險,且應用程式的主執行緒仍可以專務於使用者與您的 Activity 互動。
+
+</p>
+
+
+<h2 id="Basics">基本概念</h2>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>應該使用服務或執行緒?</h3>
+  <p>服務簡單而言就是可以在背景中執行的元件,就算使用者不與您的應用程式互動也不會影響。
+所以,您應該只在需要時才建立服務。
+</p>
+  <p>如果您必須在主執行緒外執行作業,但只有在使用者與您應用程式互動時才需要,則您可能應該建立新的執行緒而非服務。
+例如,如果您想要播放一些音樂,但只在執行您的 Activity 時播放,您可能在
+{@link android.app.Activity#onCreate onCreate()} 中建立執行緒,在 {@link
+android.app.Activity#onStart onStart()} 中開始執行該執行緒,然後在 {@link android.app.Activity#onStop
+onStop()} 中停止。
+也可以考慮使用 {@link android.os.AsyncTask} 或 {@link android.os.HandlerThread},來代替傳統的 {@link java.lang.Thread} 類別。
+如需更多有關執行緒的資訊,請參閱<a href="{@docRoot}guide/components/processes-and-threads.html#Threads">程序與執行緒</a>文件。
+</p>
+  <p>請記得如果您確實使用服務,依照預設會在您應用程式的主執行緒中執行該服務,所以,如果服務執行密集的操作或封鎖操作,則您仍應在服務中建立新的執行緒。
+
+</p>
+</div>
+</div>
+
+<p>如要建立服務,您必須建立 {@link android.app.Service} 的子類別 (或是其現有的子類別之一)。
+在您的實作中,如果可以,您必須覆寫某些回呼方法,這些方法負責處理服務生命週期的關鍵層面,並提供元件繫結至服務的機制。
+
+您應該覆寫的最重要回呼方法為:</p>
+
+<dl>
+  <dt>{@link android.app.Service#onStartCommand onStartCommand()}</dt>
+    <dd>當另一個元件 (如 Activity) 透過呼叫 {@link android.content.Context#startService
+startService()} 來要求啟動服務時,系統會呼叫此方法。
+一旦執行此方法,服務會被啟動且可以無限次數地在背景中執行。
+如果您實作此方法,當作業完成時,您必須負責停止服務,方式為呼叫 {@link android.app.Service#stopSelf stopSelf()} 或 {@link
+android.content.Context#stopService stopService()}。
+(如果您只想要提供繫結功能,您不需要實作此方法)。
+</dd>
+  <dt>{@link android.app.Service#onBind onBind()}</dt>
+    <dd>當其他元件想要與服務 (如執行 RPC) 繫結時,系統會透過呼叫 {@link android.content.Context#bindService
+bindService()} 來呼叫此方法。
+在您實作此方法時,透過傳回 {@link android.os.IBinder},您必須提供用戶端可用來與服務通訊的介面。
+您必須永遠實作此方法,但如果您不想允許繫結,則您應該傳回 null。
+</dd>
+  <dt>{@link android.app.Service#onCreate()}</dt>
+    <dd>當第一次建立服務時,系統會呼叫此方法來執行一次性的設定程序 (在其呼叫 {@link android.app.Service#onStartCommand onStartCommand()} 或
+{@link android.app.Service#onBind onBind()} 之前)。
+如果已經執行服務,則不會呼叫此方法。
+</dd>
+  <dt>{@link android.app.Service#onDestroy()}</dt>
+    <dd>當不再使用服務且正在終結服務時,系統會呼叫此方法。您的服務應該實作此方法來清除任何如執行緒、註冊的接聽器,接收器等資源。
+
+這會是服務接收到的最後呼叫。</dd>
+</dl>
+
+<p>如果透過呼叫 {@link
+android.content.Context#startService startService()} (這是呼叫至 {@link
+android.app.Service#onStartCommand onStartCommand()} 的結果) 讓元件啟動服務,則服務仍會保持執行狀態,直到使用 {@link android.app.Service#stopSelf()} 讓服務自行停止或透過呼叫
+{@link android.content.Context#stopService stopService()} 由其他元件停止服務。
+</p>
+
+<p>如果元件呼叫
+{@link android.content.Context#bindService bindService()} 來建立服務 (且「沒有」呼叫 {@link
+android.app.Service#onStartCommand onStartCommand()}<em></em>),則服務會伴隨繫結至服務的元件執行。
+一旦服務與所有用戶端解除繫結時,系統會終結服務。
+</p>
+
+<p>只有在記憶體不足且必須復原擁有使用者焦點的 Activity 其系統資源時,Android 系統才會強制停止服務。
+如果服務已繫結至擁有使用者焦點的 Activity,則該服務不太容易被終止,且如果服務被宣告為<a href="#Foreground">在前景中執行</a> (稍後會討論),則該服務幾乎不會被終止。
+否則,如果長時間執行於前景中啟動的服務,則系統會隨時間降低該服務在背景工作清單中的位置,且該服務會很容易被終止 &mdash; 如果已啟動您的服務,則您必須設計讓系統可以完美地處理重新啟動。
+
+
+
+如果系統終止服務,則系統會在可以再度取得資源時立即重新啟動服務 (雖然這也會依據您從 {@link
+android.app.Service#onStartCommand onStartCommand()} 傳回的值而有所不同,稍後會討論)。
+如需更多有關系統何時可能終結服務的資訊,請參閱<a href="{@docRoot}guide/components/processes-and-threads.html">程序與執行緒</a>文件。
+
+</p>
+
+<p>在下列小節,您將看到您如何可以建立每種類型的服務與如何從不同應用程式元件使用。
+</p>
+
+
+
+<h3 id="Declaring">在宣示說明中宣告服務</h3>
+
+<p>就如同 Activity (與其他元件),您必須在您應用程式的宣示說明檔案中宣告所有服務。
+</p>
+
+<p>如要宣告您的服務,可以新增 <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> 元素為 <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application&gt;}</a>元素的子項。
+
+例如:</p>
+
+<pre>
+&lt;manifest ... &gt;
+  ...
+  &lt;application ... &gt;
+      &lt;service android:name=".ExampleService" /&gt;
+      ...
+  &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+
+<p>如需更多有關在宣示說明中宣告您服務的行系資訊,請參閱 <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> 元素。
+</p>
+
+<p>您還可以在 <a href="{@docRoot}guide/topics/manifest/service-element.html">{@code &lt;service&gt;}</a> 元素中包含其他屬性,用來定義如啟動服務所需權限的屬性,與服務應該執行的程序。
+
+<a href="{@docRoot}guide/topics/manifest/service-element.html#nm">{@code android:name}</a> 屬性是唯一必備的屬性 &mdash; 用來指定服務的類別名稱。
+一旦您發佈應用程式,您就不應該變更此名稱,因為如果這樣做,會由於依賴明確的意圖來啟動或繫結服務 (閱讀部落格貼文、<a href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">不能變更的事項</a>),造成程式碼中斷的風險。
+
+
+
+
+<p>如要確認您的應用程式是安全的,<strong>當啟動或繫結您的 {@link android.app.Service} 時,永遠使用明確意圖</strong>,且不要宣告服務的意圖篩選器。
+如果允許一定程度的模糊來決定啟動的服務是重要的,您可以提供您的服務意圖篩選器,並從 {@link
+android.content.Intent} 排除元件名稱,但您仍需使用 {@link
+android.content.Intent#setPackage setPackage()} 設定意圖的封裝,這會提供目標服務足夠明確、避免含糊的指示。
+
+
+</p>
+
+<p>此外,您可以確保只有您的應用程式可以使用您的服務,方法為包含 <a href="{@docRoot}guide/topics/manifest/service-element.html#exported">{@code android:exported}</a> 屬性並將其設定為 {@code "false"}。
+
+這可以有效地避免其他應用程式啟動您的服務,就算使用明確意圖時也是如此。
+</p>
+
+
+
+
+<h2 id="CreatingStartedService">建立已啟動的服務</h2>
+
+<p>已啟動的服務是由其他應用程式呼叫 {@link
+android.content.Context#startService startService()} 所啟動的,由呼叫至服務的
+{@link android.app.Service#onStartCommand onStartCommand()} 方法所導致。</p>
+
+<p>當服務啟動,其生命週期與啟動服務的元件無關,且服務可以無限次數地在背景中執行,就算啟動服務的元件已終結也不會影響。
+
+因此,當服務的工作藉由呼叫 {@link android.app.Service#stopSelf stopSelf()} 而完成時,服務應該會自行停止,或藉由呼叫 {@link android.content.Context#stopService stopService()},其他元件也可以停止服務。
+
+</p>
+
+<p>如 Activity 等應用程式元件可以透過呼叫 {@link
+android.content.Context#startService startService()} 與傳送用來指定服務及包含服務所要使用任何資料的
+{@link android.content.Intent},來啟動服務。服務會接收 {@link android.app.Service#onStartCommand
+onStartCommand()} 方法中的此 {@link android.content.Intent}。
+</p>
+
+<p>例如,假設 Activity 需要一些資料到線上資料庫。藉由傳送意圖至 {@link
+android.content.Context#startService startService()},Activity 可以啟動伴隨服務並傳送要儲存的資料。
+服務會接收 {@link
+android.app.Service#onStartCommand onStartCommand()} 中的意圖,連線到網際網路,並執行資料庫交易。
+當操作完成時,服務應該會自行終結。
+</p>
+
+<p class="caution"><strong>注意:</strong>服務會在與應用程式相同的程序中執行,服務會在該程序中被宣告,且依照預設,會位於該應用程式的主執行緒之中。
+所以,在使用者與來自相同應用程式的 Activity 互動時,如果您的服務執行密集的操作或封鎖操作,則該服務將會降低 Activity 的效能。
+
+要避免影響應用程式的效能,您應該在服務之中啟動新的執行緒。
+</p>
+
+<p>傳統上,有兩種類別可以延伸為建立已啟動的服務:</p>
+<dl>
+  <dt>{@link android.app.Service}</dt>
+  <dd>這是所有服務的基本類別。當您延伸此類別時,建立用來執行所有服務工作的新執行緒是非常重要的,因為依照預設,服務會使用您應用程式的主執行緒,這會降低任何您應用程式所執行 Activity 的效能。
+
+
+</dd>
+  <dt>{@link android.app.IntentService}</dt>
+  <dd>這是 {@link android.app.Service} 的子類別,會使用 worker 執行緒來處理所有的啟動要求,一次一個。
+如果您不需要您的服務同時處理多個要求,則這是最佳的選項。
+您唯一要做的就是實作 {@link
+android.app.IntentService#onHandleIntent onHandleIntent()},這會接收每個起始要求的意圖 ,所以您可以在背景執行。
+</dd>
+</dl>
+
+<p>下列小節說明如何可以使用這些類別之一來實作您的服務。
+</p>
+
+
+<h3 id="ExtendingIntentService">延伸 IntentService 類別</h3>
+
+<p>因為大多數的已啟動服務不需要同時處理多個要求(多重執行緒策略事實上是危險的),如果您使用 {@link android.app.IntentService} 類別來實作您的服務可能是最佳的方法。
+
+</p>
+
+<p>{@link android.app.IntentService} 會達到下列目的:</p>
+
+<ul>
+  <li>建立預設的 worker 執行緒,該執行緒會執行所有傳送至 {@link
+android.app.Service#onStartCommand onStartCommand()} 的意圖,並與您應用程式的主執行緒有所分別。
+</li>
+  <li>建立工作佇列,該佇列會一次傳送一個意圖到您的 {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} 實作,所以您絕對不需要擔心多重執行緒的問題。
+</li>
+  <li>在所有啟動要求都已處理後,停止服務,這樣您永遠不需要呼叫
+{@link android.app.Service#stopSelf}。</li>
+  <li>提供傳回 null 的 {@link android.app.IntentService#onBind onBind()} 其預設實作。
+</li>
+  <li>提供傳送意圖至工作佇列的 {@link android.app.IntentService#onStartCommand
+onStartCommand()} 其預設實作,然後傳送至您的 {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} 實作。</li>
+</ul>
+
+<p>所有這一切都說明了您要做的就是實作 {@link
+android.app.IntentService#onHandleIntent onHandleIntent()} 來完成用戶端提供的工作。
+(雖然,您也需要提供小型建構函式給服務)。</p>
+
+<p>下列是 {@link android.app.IntentService} 實作的範例:</p>
+
+<pre>
+public class HelloIntentService extends IntentService {
+
+  /**
+   * A constructor is required, and must call the super {@link android.app.IntentService#IntentService}
+   * constructor with a name for the worker thread.
+   */
+  public HelloIntentService() {
+      super("HelloIntentService");
+  }
+
+  /**
+   * The IntentService calls this method from the default worker thread with
+   * the intent that started the service. When this method returns, IntentService
+   * stops the service, as appropriate.
+   */
+  &#64;Override
+  protected void onHandleIntent(Intent intent) {
+      // Normally we would do some work here, like download a file.
+      // For our sample, we just sleep for 5 seconds.
+      long endTime = System.currentTimeMillis() + 5*1000;
+      while (System.currentTimeMillis() &lt; endTime) {
+          synchronized (this) {
+              try {
+                  wait(endTime - System.currentTimeMillis());
+              } catch (Exception e) {
+              }
+          }
+      }
+  }
+}
+</pre>
+
+<p>您需要的是:{@link
+android.app.IntentService#onHandleIntent onHandleIntent()} 的建構函式與實作。</p>
+
+<p>如果您決定也要覆寫其他回呼方法,如 {@link
+android.app.IntentService#onCreate onCreate()}、{@link
+android.app.IntentService#onStartCommand onStartCommand()} 或 {@link
+android.app.IntentService#onDestroy onDestroy()},請確認呼叫超級實作,這樣
+{@link android.app.IntentService} 才可以適當處理 worker 執行緒的生命。</p>
+
+<p>例如,{@link android.app.IntentService#onStartCommand onStartCommand()} 必須傳回預設的實作 (這就是意圖如何被傳送至 {@link
+android.app.IntentService#onHandleIntent onHandleIntent()}):
+</p>
+
+<pre>
+&#64;Override
+public int onStartCommand(Intent intent, int flags, int startId) {
+    Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
+    return super.onStartCommand(intent,flags,startId);
+}
+</pre>
+
+<p>除了 {@link android.app.IntentService#onHandleIntent onHandleIntent()},您不需要呼叫超級類別的唯一方法就是 {@link android.app.IntentService#onBind
+onBind()} (但只有在您的服務允許繫結時才需要實作)。
+</p>
+
+<p>在下一節,您會看到在延伸基本 {@link android.app.Service} 類別時,如何實作同類的服務,這需要寫更多程式碼,但是如果您需要同時處理多個啟動要求時,這可能是比較合適的處理方式。
+
+</p>
+
+
+<h3 id="ExtendingService">延伸服務類別</h3>
+
+<p>如同您在前一節看到的,使用 {@link android.app.IntentService} 可讓您已啟動服務的實作變得非常容易。
+然而,如果您要求您的服務執行多重執行緒 (取代透過工作佇列處理啟動要求),則您可以延伸 {@link android.app.Service} 類別來處理每個意圖。
+
+</p>
+
+<p>為了對比之用,下列程式碼範例是 {@link
+android.app.Service} 類別的實作,該類別執行與上述使用 {@link
+android.app.IntentService} 範例相同的工作。也就是,對每個啟動要求,會使用 worker 執行緒來執行工作,且一次只處理一個要求。
+</p>
+
+<pre>
+public class HelloService extends Service {
+  private Looper mServiceLooper;
+  private ServiceHandler mServiceHandler;
+
+  // Handler that receives messages from the thread
+  private final class ServiceHandler extends Handler {
+      public ServiceHandler(Looper looper) {
+          super(looper);
+      }
+      &#64;Override
+      public void handleMessage(Message msg) {
+          // Normally we would do some work here, like download a file.
+          // For our sample, we just sleep for 5 seconds.
+          long endTime = System.currentTimeMillis() + 5*1000;
+          while (System.currentTimeMillis() &lt; endTime) {
+              synchronized (this) {
+                  try {
+                      wait(endTime - System.currentTimeMillis());
+                  } catch (Exception e) {
+                  }
+              }
+          }
+          // Stop the service using the startId, so that we don't stop
+          // the service in the middle of handling another job
+          stopSelf(msg.arg1);
+      }
+  }
+
+  &#64;Override
+  public void onCreate() {
+    // Start up the thread running the service.  Note that we create a
+    // separate thread because the service normally runs in the process's
+    // main thread, which we don't want to block.  We also make it
+    // background priority so CPU-intensive work will not disrupt our UI.
+    HandlerThread thread = new HandlerThread("ServiceStartArguments",
+            Process.THREAD_PRIORITY_BACKGROUND);
+    thread.start();
+
+    // Get the HandlerThread's Looper and use it for our Handler
+    mServiceLooper = thread.getLooper();
+    mServiceHandler = new ServiceHandler(mServiceLooper);
+  }
+
+  &#64;Override
+  public int onStartCommand(Intent intent, int flags, int startId) {
+      Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
+
+      // For each start request, send a message to start a job and deliver the
+      // start ID so we know which request we're stopping when we finish the job
+      Message msg = mServiceHandler.obtainMessage();
+      msg.arg1 = startId;
+      mServiceHandler.sendMessage(msg);
+
+      // If we get killed, after returning from here, restart
+      return START_STICKY;
+  }
+
+  &#64;Override
+  public IBinder onBind(Intent intent) {
+      // We don't provide binding, so return null
+      return null;
+  }
+
+  &#64;Override
+  public void onDestroy() {
+    Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();
+  }
+}
+</pre>
+
+<p>如同您看到的,比起使用 {@link android.app.IntentService},這需要花更多功夫。</p>
+
+<p>然而,因為您自行處理每個對 {@link android.app.Service#onStartCommand
+onStartCommand()} 的呼叫,您可以同時執行多個要求。那不是這個範例要做的,但如果那是您想要的,那麼您可以針對每個要求建立新的執行緒,並立即執行 (代替等待之前的要求結束)。
+
+</p>
+
+<p>請注意:{@link android.app.Service#onStartCommand onStartCommand()} 方法必須傳回整數。
+整數是一個數值,說明在系統終止服務的事件中,系統該如何繼續服務 (如上述的討論,雖然您可以修改,但 {@link
+android.app.IntentService} 的預設實作會替您處理)。
+從
+{@link android.app.Service#onStartCommand onStartCommand()} 傳回的值必須是下列常數之一:
+</p>
+
+<dl>
+  <dt>{@link android.app.Service#START_NOT_STICKY}</dt>
+    <dd>如果系統在 {@link android.app.Service#onStartCommand
+onStartCommand()} 回傳後終止服務,除非有待決的意圖要傳送,否則請「不要」<em></em>建立服務。
+在非必要時與應用程式可以簡單地重新啟動任何未完成的工作時,這是避免執行服務的最安全方式。
+</dd>
+  <dt>{@link android.app.Service#START_STICKY}</dt>
+    <dd>如果系統在 {@link android.app.Service#onStartCommand
+onStartCommand()} 回傳後終止服務,請重新建立服務並呼叫 {@link
+android.app.Service#onStartCommand onStartCommand()},但「不要」<em></em>重新傳送最後的意圖。
+相反地,除非有待決的意圖要啟動服務傳送,否則系統會使用 null 意圖呼叫 {@link android.app.Service#onStartCommand onStartCommand()},如果有待決的意圖要啟動服務,則會傳送那些意圖。
+
+這適用於媒體播放程式 (或類似服務) 這類不執行命令,但可以無次數限制執行與等待工作的服務。
+</dd>
+  <dt>{@link android.app.Service#START_REDELIVER_INTENT}</dt>
+    <dd>如果系統在 {@link android.app.Service#onStartCommand
+onStartCommand()} 回傳後終止服務,請重新建立服務並使用傳送至服務的最後意圖呼叫 {@link
+android.app.Service#onStartCommand onStartCommand()}。
+任何待決的意圖會反過來由後往前傳送。這適用的服務為主動執行如下載檔案等應該立即繼續的工作。
+</dd>
+</dl>
+<p>如需有關這些傳回值的詳細資訊,請參閱每個常數的連結參考文件。
+</p>
+
+
+
+<h3 id="StartingAService">啟動服務</h3>
+
+<p>您可以透過傳送
+{@link android.content.Intent} (指定要啟動的服務) 到 {@link
+android.content.Context#startService startService()},從 Activity 或其他應用程式元件來啟動服務。Android 系統會呼叫服務的 {@link
+android.app.Service#onStartCommand onStartCommand()} 方法並傳送 {@link
+android.content.Intent} 給該方法。(絕對不要直接呼叫 {@link android.app.Service#onStartCommand
+onStartCommand()})。</p>
+
+<p>例如,使用明確意圖並搭配 {@link android.content.Context#startService
+startService()},Activity 可以啟動前小節範例中的服務 ({@code
+HelloSevice}):</p>
+
+<pre>
+Intent intent = new Intent(this, HelloService.class);
+startService(intent);
+</pre>
+
+<p>{@link android.content.Context#startService startService()} 方法會立即回傳且Android 系統會呼叫服務的 {@link android.app.Service#onStartCommand
+onStartCommand()} 方法。
+如果尚未開始執行服務,系統會先呼叫 {@link
+android.app.Service#onCreate onCreate()},然後呼叫 {@link android.app.Service#onStartCommand
+onStartCommand()}。</p>
+
+<p>如果服務也不提供繫結,則與意圖一同傳送的 {@link
+android.content.Context#startService startService()} 是在應用程式元件與服務間通訊的唯一模式。
+然而,如果您想要服務將結果送回,則啟動服務的用戶端會針對廣播建立 {@link android.app.PendingIntent}(搭配 {@link android.app.PendingIntent#getBroadcast getBroadcast()}) 並將其傳送至服務,該服務在啟動服務的 {@link android.content.Intent} 之中。
+
+
+然後服務就可使用廣播來傳送結果。
+</p>
+
+<p>多個啟動服務的要求會導致多個相關呼叫至服務的
+{@link android.app.Service#onStartCommand onStartCommand()}。然而,只允許一個要求可以停止服務 (使用 {@link android.app.Service#stopSelf stopSelf()} 或 {@link
+android.content.Context#stopService stopService()})。
+</p>
+
+
+<h3 id="Stopping">停止服務</h3>
+
+<p>已啟動的服務必須管理本身的生命週期。也就是,系統不會停止或終結服務,除非系統必須復原系統記憶體,而服務會在 {@link android.app.Service#onStartCommand onStartCommand()} 回傳後繼續執行。
+
+所以,服務務必自我停止,可透過呼叫 {@link android.app.Service#stopSelf stopSelf()} 達成,或透過呼叫 {@link android.content.Context#stopService stopService()} 讓其他元件可以停止服務。
+
+</p>
+
+<p>一旦要求使用 {@link android.app.Service#stopSelf stopSelf()} 或 {@link
+android.content.Context#stopService stopService()} 停止,系統會盡快終結服務。
+</p>
+
+<p>然而,如果您的服務同時處理多個對 {@link
+android.app.Service#onStartCommand onStartCommand()} 的要求,則在您開始處理啟動要求時,您不應該停止服務,因為您仍可能會收到新的啟動要求 (在第一個要求結束時停止可能會終止第二個要求)。
+
+如要避免發生此問題,您可以使用 {@link android.app.Service#stopSelf(int)} 來確保您停止服務的要求會總是基於最新的啟動要求。
+
+也就是,當您呼叫 {@link
+android.app.Service#stopSelf(int)} 時,會傳送啟動要求的 ID (<code>startId</code> 已傳送至 {@link android.app.Service#onStartCommand onStartCommand()}) 至您相關的停止要求。
+
+然而,如果服務在您可以呼叫 {@link
+android.app.Service#stopSelf(int)} 之前,就收到新的啟動要求,則 ID 將不會相符,服務也不會停止。</p>
+
+<p class="caution"><strong>注意:</strong>在您的應用程式完成工作時,應用程式停止其服務是非常重要的,這可以避免浪費系統資源與消耗電池電力。
+如果必要,透過呼叫 {@link
+android.content.Context#stopService stopService()},其他元件可以停止服務。
+就算您啟動服務的繫結,如果曾接收對 {@link
+android.app.Service#onStartCommand onStartCommand()} 的呼叫,您永遠仍必須自行停止服務。
+</p>
+
+<p>如需有關服務生命週期的詳細資訊,請參閱下節<a href="#Lifecycle">管理服務的生命週期</a>。</p>
+
+
+
+<h2 id="CreatingBoundService">建立已繫結的服務</h2>
+
+<p>已繫結的服務是允許應用程式元件透過呼叫 {@link
+android.content.Context#bindService bindService()} 來建立繫結的服務,這是為了建立長期的連線 (一般而言,並不允許元件透過呼叫 {@link
+android.content.Context#startService startService()} 來「啟動」<em></em> )。
+</p>
+
+<p>當您想要透過處理程序間通訊 (IPC),與來自 Activity 的服務及您應用程式中的其他元件互動時,或是想要揭露您應用程式的特定功能給其他應用程式時,您應該建立已繫結的服務。
+
+</p>
+
+<p>如要建立已繫結的服務,您必須實作 {@link
+android.app.Service#onBind onBind()} 回呼方法並傳回
+{@link android.os.IBinder} (這用來定義與服務溝通的介面)。接著其他應用程式元件可以呼叫
+{@link android.content.Context#bindService bindService()} 來擷取介面並開始服務上的呼叫方法。
+服務只會為了服務所繫結應用程式元件才存在,
+所以當沒有繫結服務的元件時,系統會終結服務 (當服務透過
+{@link android.app.Service#onStartCommand onStartCommand()} 啟動時,您「不」<em></em>需要停止已繫結的服務)。
+</p>
+
+<p>如要建立已繫結的服務,您必須做的第一件事就是定義用來指定用戶端如何與服務通訊的介面。
+介於服務與用戶端間的介面必須是 {@link android.os.IBinder} 的實作,也是您服務必須從 {@link android.app.Service#onBind
+onBind()} 回呼方法傳回的。
+
+一旦用戶端收到 {@link android.os.IBinder},可以透過介面開始與服務互動。
+</p>
+
+<p>服務一次可以繫結多個用戶端。當用戶端完成與服務互動時,會呼叫 {@link android.content.Context#unbindService unbindService()} 來取消繫結。
+一旦沒有用戶端與服務繫結,系統就會終結服務。
+</p>
+
+<p>有多個方法可以實作已繫結的服務,且實作比已啟動服務更加複雜,所以會在另一份有關<a href="{@docRoot}guide/components/bound-services.html">已繫結的服務</a>文件中討論已繫結的服務。
+
+</p>
+
+
+
+<h2 id="Notifications">傳送通知給使用者</h2>
+
+<p>一旦執行,服務可以使用<a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">快顯通知</a>或<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">狀態列通知</a>來通知事件的使用者。</p>
+
+<p>快顯通知是一個會出現在目前視窗表面上短暫時間然後消失的訊息,此時狀態列通知會在狀態列提供一個圖示與訊息,使用者可以選擇然後採取行動 (例如啟動 Activity)。
+
+</p>
+
+<p>通常,當已完成某些背景作業(如完成檔案下載) 且使用者現在可以採取行動時,狀態列通知是最佳的方法。
+
+當使用者從擴展的檢視選取通知時,通知可以啟動 Activity (如檢視已下載檔案)。
+</p>
+
+<p>如需更多資訊,請參閱<a href="{@docRoot}guide/topics/ui/notifiers/toasts.html">快顯通知</a>或<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">狀態列通知</a>開發人員指南。
+</p>
+
+
+
+<h2 id="Foreground">在前景中執行服務</h2>
+
+<p>前景服務是被認為使用者已主動意識到、就算在記憶體不足時系統也不會終結的服務。
+前景服務必須提供通知給狀態列,狀態列會放置在「進行中」標題之下,這表示除非服務已被停止或從前景移除,否則無法解除通知。
+
+
+</p>
+
+<p>例如,播放來自某服務音樂的音樂播放器應該被設為在前景中執行,因為使用者明確意識到這項操作。
+
+狀態列中的通知可能會指出目前播放的歌曲,並允許使用者啟動 Activity 來與音樂播放器互動。
+</p>
+
+<p>如要要求您的服務在前景中執行,可以呼叫 {@link
+android.app.Service#startForeground startForeground()}。此方法有兩個參數:一個整數用來唯一識別通知,以及 {@link
+android.app.Notification} 供狀態列使用。
+例如:</p>
+
+<pre>
+Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text),
+        System.currentTimeMillis());
+Intent notificationIntent = new Intent(this, ExampleActivity.class);
+PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
+notification.setLatestEventInfo(this, getText(R.string.notification_title),
+        getText(R.string.notification_message), pendingIntent);
+startForeground(ONGOING_NOTIFICATION_ID, notification);
+</pre>
+
+<p class="caution"><strong>注意:</strong>您給 {@link
+android.app.Service#startForeground startForeground()} 的整數 ID 不能為 0。</p>
+
+
+<p>如要從前景移除服務,可以呼叫 {@link
+android.app.Service#stopForeground stopForeground()}。此方法有一個布林數,表示是否同時移除狀態列通知。
+此方法「不會」<em></em>停止服務。
+然而,如果您在服務仍於前景執行時停止服務,則也會移除通知。
+</p>
+
+<p>如需更多有關通知的資訊,請參閱<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">建立狀態列通知</a>。
+</p>
+
+
+
+<h2 id="Lifecycle">管理服務的生命週期</h2>
+
+<p>服務的生命週期比 Activity 的生命週期要簡單多了。然而,密切關注如何建立與終結服務就更重要了,因為在使用者沒有意識到的狀況下可在背景中執行服務。
+
+</p>
+
+<p>服務生命週期 &mdash; 從何時建立到何時終結 &mdash; 可以遵循兩種不同的路徑:
+</p>
+
+<ul>
+<li>已啟動的服務
+  <p>當其他元件呼叫 {@link
+android.content.Context#startService startService()} 時,會建立服務。然後服務可無限次數執行,且必須自行停止,方法是呼叫 {@link
+android.app.Service#stopSelf() stopSelf()}。
+透過呼叫 {@link android.content.Context#stopService
+stopService()},其他元件可以停止服務。
+當服務停止時,系統會終結服務。</p></li>
+
+<li>已繫結的服務
+  <p>當其他元件 (一個用戶端) 呼叫 {@link
+android.content.Context#bindService bindService()} 時,會建立服務。然後用戶端會透過
+{@link android.os.IBinder} 介面與服務通訊。用戶端也可以呼叫
+{@link android.content.Context#unbindService unbindService()} 來切斷連線。多重用戶端可以繫結至相同的服務,但是當所有用戶端都取消繫結時,系統就會終結服務。
+(服務「不」<em></em>需要自行停止)。
+</p></li>
+</ul>
+
+<p>這兩種路徑不是完全獨立的。也就是,您可以繫結至已經使用
+{@link android.content.Context#startService startService()} 啟動的服務。例如,可以啟動背景音樂服務,方法是呼叫 {@link android.content.Context#startService
+startService()} 並搭配可識別要播放音樂的 {@link android.content.Intent}。
+之後,使用者可能會想要透過播放器試試某些控制或取得關於目前歌曲的資訊,可以將 Activity 繫結至服務,方法為呼叫 {@link
+android.content.Context#bindService bindService()}。
+
+就這個的案子而言,除非所有的用戶端都取消繫結,否則 {@link
+android.content.Context#stopService stopService()} 或 {@link android.app.Service#stopSelf
+stopSelf()} 不會實際上停止服務。 </p>
+
+
+<h3 id="LifecycleCallbacks">實作生命週期回呼</h3>
+
+<p>就如同 Activity,服務有您可以實作來監控服務狀態變更與在適合時段執行作業的生命週期回呼方法。
+下列服務會示範每個生命週期方法:
+</p>
+
+<pre>
+public class ExampleService extends Service {
+    int mStartMode;       // indicates how to behave if the service is killed
+    IBinder mBinder;      // interface for clients that bind
+    boolean mAllowRebind; // indicates whether onRebind should be used
+
+    &#64;Override
+    public void {@link android.app.Service#onCreate onCreate}() {
+        // The service is being created
+    }
+    &#64;Override
+    public int {@link android.app.Service#onStartCommand onStartCommand}(Intent intent, int flags, int startId) {
+        // The service is starting, due to a call to {@link android.content.Context#startService startService()}
+        return <em>mStartMode</em>;
+    }
+    &#64;Override
+    public IBinder {@link android.app.Service#onBind onBind}(Intent intent) {
+        // A client is binding to the service with {@link android.content.Context#bindService bindService()}
+        return <em>mBinder</em>;
+    }
+    &#64;Override
+    public boolean {@link android.app.Service#onUnbind onUnbind}(Intent intent) {
+        // All clients have unbound with {@link android.content.Context#unbindService unbindService()}
+        return <em>mAllowRebind</em>;
+    }
+    &#64;Override
+    public void {@link android.app.Service#onRebind onRebind}(Intent intent) {
+        // A client is binding to the service with {@link android.content.Context#bindService bindService()},
+        // after onUnbind() has already been called
+    }
+    &#64;Override
+    public void {@link android.app.Service#onDestroy onDestroy}() {
+        // The service is no longer used and is being destroyed
+    }
+}
+</pre>
+
+<p class="note"><strong>注意:</strong>不像 Activity 生命週期回呼方法,您「不」<em></em>需要呼叫這些回呼方法的超級類別實作。
+</p>
+
+<img src="{@docRoot}images/service_lifecycle.png" alt="" />
+<p class="img-caption"><strong>圖 2.</strong>服務生命週期。左圖顯示使用 {@link android.content.Context#startService
+startService()} 建立服務的生命週期,右圖顯示使用
+{@link android.content.Context#bindService bindService()} 建立服務的生命週期。
+</p>
+
+<p>透過實作這些方法,您可以監控服務生命週期中的兩個巢狀迴圈: </p>
+
+<ul>
+<li>服務的<strong>整個生命</strong>發生在 {@link
+android.app.Service#onCreate onCreate()} 被呼叫的時間與 {@link
+android.app.Service#onDestroy} 回傳的時間之間。就像 Activity,服務於
+{@link android.app.Service#onCreate onCreate()} 中開始其初始設定,並於 {@link
+android.app.Service#onDestroy onDestroy()} 中釋出所有剩餘的資訊。例如,音樂播放服務可以建立執行緒,且音樂會於 {@link
+android.app.Service#onCreate onCreate()} 中播放,然後在 {@link
+android.app.Service#onDestroy onDestroy()} 中停止執行緒。
+
+
+<p>{@link android.app.Service#onCreate onCreate()} 與 {@link android.app.Service#onDestroy
+onDestroy()} 方法可供所有服務呼叫,不論服務是否由 {@link android.content.Context#startService startService()} 或 {@link
+android.content.Context#bindService bindService()} 所建立。
+</p></li>
+
+<li>服務的<strong>使用生命</strong>從對 {@link
+android.app.Service#onStartCommand onStartCommand()} 或 {@link android.app.Service#onBind onBind()} 的呼叫開始。
+每個方法都被遞交 {@link
+android.content.Intent},也會被分別傳送至 {@link android.content.Context#startService
+startService()} 或 {@link android.content.Context#bindService bindService()}。
+<p>如果服務已啟動,使用生命的結束時間與整個生命結束的時間相同 (就算在 {@link android.app.Service#onStartCommand
+onStartCommand()} 回傳後,服務仍在作用中)。
+如果服務已繫結,使用生命的會於 {@link
+android.app.Service#onUnbind onUnbind()} 回傳時結束。</p>
+</li>
+</ul>
+
+<p class="note"><strong>注意:</strong>雖然已啟動的服務可藉由對
+ {@link android.app.Service#stopSelf stopSelf()} 或 {@link
+android.content.Context#stopService stopService()} 的呼叫來停止,但沒有服務的相對應回呼 (沒有 {@code onStop()} 回呼)。
+所有,除非服務已繫結至用戶端,系統會在服務停止時終結服務 &mdash; {@link
+android.app.Service#onDestroy onDestroy()} 是唯一收到的回呼。
+</p>
+
+<p>圖 2 說明服務的回呼方法。雖然圖示區隔由
+{@link android.content.Context#startService startService()} 所建立的服務與由
+{@link android.content.Context#bindService bindService()} 所建立的服務,但請記住,任何服務不論是如何建立的,都可能可以允許使用者繫結。
+
+所以,一開始使用 {@link android.app.Service#onStartCommand
+onStartCommand()} 啟動的服務 (由用戶端呼叫 {@link android.content.Context#startService startService()})仍可以接收對 {@link android.app.Service#onBind onBind()} 的呼叫 (當用戶端呼叫
+{@link android.content.Context#bindService bindService()} 時)。
+</p>
+
+<p>針對建立提供已繫結的服務,如需更多詳細資訊,請參閱<a href="{@docRoot}guide/components/bound-services.html">已繫結的服務</a>文件,其中在<a href="{@docRoot}guide/components/bound-services.html#Lifecycle">管理已繫結服務的生命週期</a>包含更多有關 {@link android.app.Service#onRebind onRebind()}回呼方法的詳細資訊。
+
+
+</p>
+
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>To learn how to query data from the system or other applications (such as contacts or media
+stored on the device), continue with the <b><a
+href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a></b>
+document.</p>
+-->
diff --git a/docs/html-intl/intl/zh-tw/guide/components/tasks-and-back-stack.jd b/docs/html-intl/intl/zh-tw/guide/components/tasks-and-back-stack.jd
new file mode 100644
index 0000000..e23301d
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/components/tasks-and-back-stack.jd
@@ -0,0 +1,578 @@
+page.title=工作和返回堆疊
+parent.title=Activity
+parent.link=activities.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本文件內容</h2>
+<ol>
+<li><a href="#ActivityState">儲存 Activity 狀態</a></li></li>
+<li><a href="#ManagingTasks">管理工作</a>
+  <ol>
+    <li><a href="#TaskLaunchModes">定義啟動模式</a></li>
+    <li><a href="#Affinities">處理親和性</a></li>
+    <li><a href="#Clearing">清除返回堆疊</a></li>
+    <li><a href="#Starting">開始工作</a></li>
+  </ol>
+</li>
+</ol>
+
+<h2>文章</h2>
+<ol>
+  <li><a href="http://android-developers.blogspot.com/2010/04/multitasking-android-way.html">  Android 的多工作業方式
+</a></li>
+</ol>
+
+<h2>另請參閱</h2>
+<ol>
+  <li><a href="{@docRoot}design/patterns/navigation.html">Android 設計:導覽
+</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;} 宣示說明元素
+</a></li>
+  <li><a href="{@docRoot}guide/components/recents.html">總覽畫面</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>一個應用程式通常包含多個 <a href="{@docRoot}guide/components/activities.html">Activity</a>。每個 Activity 應根據使用者可執行的特定動作類型加以設計,且要能啟動其他 Activity。
+
+例如,電子郵件應用程式可能會有一個可顯示新訊息清單的 Activity。
+當使用者選擇一則訊息,會開啟新的 Activity 以檢視該訊息。</p>
+
+<p>Activity 甚至可啟動裝置上其他應用程式的 Activity。例如,如果您的應用程式想要傳送一封電子郵件訊息,您可以定義一個意圖以執行「傳送」動作並包含一些資料,像是電子郵件地址和訊息。
+
+其他應用程式中宣告處理此意圖類型的 Activity 就會開啟。
+在這種情況下,意圖就是要傳送電子郵件,因此電子郵件應用程式會啟動「撰寫」Activity (如果有多個 Activity 支援相同的意圖,則系統會讓使用者選擇要使用的 Activity)。
+
+電子郵件傳送後,您的 Activity 就會繼續,並將電子郵件 Activity 視為您應用程式的一部分。
+雖然 Activity 可能來自不同的應用程式,但 Android 會將兩個 Activity 放在相同的工作中,以維護使用者體驗的流暢性。
+
+<em></em></p>
+
+<p>工作是執行特定工作時,與使用者互動的 Activity 集合。
+Activity 會在堆疊 (返回堆疊<em></em>) 中依照每個 Activity 開啟的順序加以排列。
+</p>
+
+<!-- SAVE FOR WHEN THE FRAGMENT DOC IS ADDED
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h3>Adding fragments to a task's back stack</h3>
+
+<p>Your activity can also include {@link android.app.Fragment}s to the back stack. For example,
+suppose you have a two-pane layout using fragments, one of which is a list view (fragment A) and the
+other being a layout to display an item from the list (fragment B). When the user selects an item
+from the list, fragment B is replaced by a new fragment (fragment C). In this case, it might be
+desireable for the user to navigate back to reveal fragment B, using the <em>Back</em> button.</p>
+<p>In order to add fragment B to the back stack so that this is possible, you must call {@link
+android.app.FragmentTransaction#addToBackStack addToBackStack()} before you {@link
+android.app.FragmentTransaction#commit()} the transaction that replaces fragment B with fragment
+C.</p>
+<p>For more information about using fragments and adding them to the back stack, see the {@link
+android.app.Fragment} class documentation.</p>
+
+</div>
+</div>
+-->
+
+<p>裝置主螢幕是大多數工作開始的地方。當使用者輕觸應用程式啟動組件上的某個圖示 (或主螢幕上的捷徑 ) 時,應用程式工作會移到前景。
+
+如果應用程式沒有工作 (最近未使用應用程式),則會建立新的工作,且該應用程式的「主要」Activity 會以堆疊中的根 Activity 形式開啟。
+
+</p>
+
+<p>當目前的 Activity 啟動另一個 Activity 時,會將新的 Activity 推到堆疊的頂端並取得焦點。
+之前的 Activity 會留在堆疊中,但已停止。Activity 停止後,系統會保留其使用者介面的目前狀態。
+當使用者按下 [返回] 按鈕<em></em>,會將目前的 Activity 從堆疊頂端推出 (Activity 已終結),並繼續進行之前的 Activity (還原其 UI 之前的狀態)。
+
+
+堆疊中的 Activity 不會重新整理,只會從堆疊推入和推出 &mdash; 由目前 Activity 啟動時推入堆疊,而當使用者使用 [返回] 按鈕離開時推出堆疊。<em></em>
+
+因此,返回堆疊會以「後進先出」的物件結構進行運作。
+
+圖 1 透過時間軸將此行為視覺化,以時間軸顯示 Activity 間的進度以及每個時間點的目前返回堆疊。
+
+</p>
+
+<img src="{@docRoot}images/fundamentals/diagram_backstack.png" alt="" />
+<p class="img-caption"><strong>圖 1.</strong>顯示工作中每個新 Activity 如何將項目新增到返回堆疊。
+當使用者按下 [返回] 按鈕,目前的 Activity 將會終結,而之前的 Activity 則會繼續進行。<em></em>
+
+</p>
+
+
+<p>如果使用者持續按下 [返回]<em></em>,則會持續推出堆疊中的每個 Activity 以顯示之前的 Activity,直到使用者返回主螢幕 (或到工作開始時執行的 Activity)。
+
+
+當堆疊中的 Activity 全部移除後,工作將不再存在。</p>
+
+<div class="figure" style="width:287px">
+<img src="{@docRoot}images/fundamentals/diagram_multitasking.png" alt="" /> <p
+class="img-caption"><strong>圖 2.</strong>兩個工作:工作 B 在前景收到使用者互動,而工作 A 在背景等待繼續。
+</p>
+</div>
+<div class="figure" style="width:215px">
+  <img src="{@docRoot}images/fundamentals/diagram_multiple_instances.png" alt="" /> <p
+class="img-caption"><strong>圖 3.</strong>單一 Activity 會具現化很多次。</p>
+</div>
+
+<p>工作是一個緊密結合的單位,當使用者開始新的工作時可以移到「背景」,或透過 [首頁] 按鈕前往主螢幕。<em></em>
+在背景時,工作中的所有 Activity 都會停止,但該工作的返回堆疊會保留下來 &mdash; 該工作純粹失去焦點,由另一個工作取而代之,如圖 2 所示。
+
+
+之後,工作可以返回「前景」,讓使用者繼續未完成的工作。
+例如,假設目前的工作 (工作 A) 的堆疊中有三個 Activity &mdash; 兩個位於目前的 Activity 下。
+使用者按下 [首頁] 按鈕,<em></em>然後從應用程式啟動新的應用程式。
+
+當主螢幕出現時,工作 A 會移到背景。
+新的應用程式啟動時,系統會啟動該應用程式的工作 (工作 B),該應用程式會有自己的 Activity 堆疊。
+與該應用程式互動之後,使用者會再次回到首頁,並選取原來啟動工作 A 的應用程式。現在,工作 A 移到了前景 &mdash; 堆疊中的三個 Activity 全部保持不變,而堆疊中最頂端的 Activity 則會繼續進行。
+
+
+
+此時,使用者也能切換回工作 B,前往首頁並選取啟動該工作的應用程式圖示 (或從<a href="{@docRoot}guide/components/recents.html">總覽畫面</a>選取應用程式工作)。這是在 Android 執行多工作業的範例。
+
+
+
+</p>
+
+<p class="note"><strong>注意:</strong>背景可以一次執行多個工作。
+不過,如果使用者同時執行多個背景工作,系統可能會開始終結背景 Activity 以復原記憶體,導致 Activity 狀態遺失。
+請參閱下列有關 <a href="#ActivityState">Activity 狀態</a>的章節。
+</p>
+
+<p>由於返回堆疊中的 Activity 不會重新整理,如果您的應用程式允許使用者從一個以上的 Activity 中啟動特定 Activity,則會建立該 Activity 的新執行個體並推入堆疊 (而不會將 Activity 任何之前的執行個體移到最頂端)。
+
+
+因此,您應用程式中的一個 Activity 可能會具現化很多次 (甚至來自不同的工作),如圖 3 所示。
+也因為這樣,如果使用者使用 [返回] 按鈕瀏覽之前的資訊,Activity 的每個執行個體會依開啟的順序顯示<em></em> (每個會有自己的 UI 狀態)。
+
+
+不過,如果您不希望 Activity 具現化一次以上,則可以修改這個行為。
+如需詳細步驟,請參閱下文的<a href="#ManagingTasks">管理工作</a>。</p>
+
+
+<p>摘要說明 Activity 和工作的預設行為:</p>
+
+<ul>
+  <li>當 Activity A 啟動 Activity B,Activity A 會停止,但系統會保留其狀態(例如捲軸位置和輸入表單的文字)。
+
+如果使用者在 Activity B 按下 [返回] 按鈕,<em></em>Activity A 的狀態會復原並繼續執行。
+</li>
+  <li>當使用者按下 [首頁] 按鈕離開工作,<em></em>目前的 Activity 會停止且其工作會移到背景。
+
+系統會保留工作中所有 Activity 的狀態。如果使用者稍後選取啟動工作的啟動組件圖示繼續執行工作,工作會移到前景並在堆疊頂端繼續執行 Activity。
+
+</li>
+  <li>如果使用者按下 [返回] 按鈕<em></em>,會將目前的 Activity 從堆疊推出並終結。
+
+堆疊中之前的 Activity 會繼續進行。Activity 終結後,系統將不會保留 Activity 的狀態。
+<em></em></li>
+  <li>Activity 可以具現化很多次,即使來自其他工作也一樣。</li>
+</ul>
+
+
+<div class="note design">
+<p><strong>導覽設計</strong></p>
+  <p>如需應用程式導覽如何在 Android 運作的詳細資訊,請參閱 Android 設計的<a href="{@docRoot}design/patterns/navigation.html">導覽</a>指南。</p>
+</div>
+
+
+<h2 id="ActivityState">儲存 Activity 狀態</h2>
+
+<p>如上所述,系統的預設行為會在 Activity 停止時保留 Activity 的狀態。
+如此一來,當使用者瀏覽之前的 Activity 時,其使用者介面的顯示方式將與離開時一樣。
+不過,您可以 &mdash; 也<strong>應該</strong> &mdash; 使用回呼方法主動保留 Activity 的狀態,以防止 Activity 遭到終結且必須重新建立的情況。
+
+</p>
+
+<p>如果系統停止您其中一個 Activity (例如,當新的 Activity 開始或工作移到背景),當系統需要復原系統記憶體時,可能會完全終結該 Activity。
+
+發生這種情況時,與 Activity 狀態相關的資訊都將遺失。如果發生這種情況,系統仍然知道該 Activity 位於返回堆疊中,但是當 Activity 移到堆疊頂端時,系統必須重新建立該 Activity (而不是繼續執行)。
+
+
+如果不想讓使用者的工作遺失,您應該在 Activity 中實作 {@link android.app.Activity#onSaveInstanceState onSaveInstanceState()} 回呼方法,主動保留該工作。
+
+
+</p>
+
+<p>如需儲存 Activity 狀態的詳細資訊,請參閱 <a href="{@docRoot}guide/components/activities.html#SavingActivityState">Activity</a> 文件。
+</p>
+
+
+
+<h2 id="ManagingTasks">管理工作</h2>
+
+<p>如上所述,Android 管理工作和返回堆疊的方式 &mdash; 將連續啟動的所有 Activity 放在相同的工作及「後進先出」堆疊中 &mdash; 對大多數應用程式而言非常好用,而且您不需擔心 Activity 與工作關聯的方式或它們如何存在於返回堆疊中。
+
+
+不過,您也許會想中斷一般的行為。
+您或許會希望應用程式的 Activity 可以在啟動時開始一個新的工作 (而不是放入目前的工作中);或者當您啟動一個 Activity 時,您可能會想使用其現有的執行個體 (而不是在返回堆疊頂端建立新的執行個體);又或者當使用者離開工作時,您想要清除返回堆疊中的所有 Activity,只留下根 Activity。
+
+
+
+</p>
+
+<p>如要執行這些工作及更多工作,您可以使用 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 宣示說明元素中的屬性,以及您傳送到 {@link android.app.Activity#startActivity startActivity()} 之意圖中的旗標。
+
+
+</p>
+
+<p>就這個情況而言,您可以使用的主要 <a href="{@docRoot}guide/topics/manifest/activity-element.html">
+{@code &lt;activity&gt;}</a> 屬性包括:</p>
+
+<ul class="nolist">
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">
+  {@code taskAffinity}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">
+  {@code launchMode}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">
+  {@code allowTaskReparenting}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">
+  {@code clearTaskOnLaunch}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
+  {@code alwaysRetainTaskState}</a></li>
+  <li><a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">
+  {@code finishOnTaskLaunch}</a></li>
+</ul>
+
+<p>而您可以使用的主要意圖旗標包括:</p>
+
+<ul class="nolist">
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</li>
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</li>
+  <li>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</li>
+</ul>
+
+<p>在以下各節中,您將瞭解如何使用這些宣示說明屬性和意圖旗標,定義 Activity 與工作關聯的方式以及它們在返回堆疊中的行為。
+</p>
+
+<p>同時,還會分開討論工作與 Activity 如何在總覽畫面表示和進行管理。
+請參閱<a href="{@docRoot}guide/components/recents.html">總覽畫面</a>以取得詳細資訊。
+一般而言,您應該允許系統定義如何在總覽畫面中呈現工作與 Activity,而且不需要修改此行為。
+</p>
+
+<p class="caution"><strong>注意:</strong>大多數應用程式不應中斷 Activity 和工作的預設行為:
+如果您判斷修改 Activity 的預設行為是必要的,請謹慎小心並記得測試啟動期間 Activity 的可用性,以及使用 [返回] 按鈕從其他 Activity 和工作瀏覽到此 Activity 的情況。請記得測試可能會與使用者預期的行為衝突的瀏覽行為。<em></em>
+
+
+</p>
+
+
+<h3 id="TaskLaunchModes">定義啟動模式</h3>
+
+<p>啟動模式可讓您定義 Activity 的新執行個體與目前工作關聯的方式。
+您可用兩種方法定義不同的啟動模式:</p>
+<ul class="nolist">
+  <li><a href="#ManifestForTasks">使用宣示說明檔案</a>
+    <p>當您在宣示說明檔案中宣告 Activity 時,您可以指定 Activity 啟動時該如何與工作關聯。
+</li>
+  <li><a href="#IntentFlagsForTasks">使用意圖旗標</a>
+    <p>當您呼叫 {@link android.app.Activity#startActivity startActivity()} 時,您可以在 {@link android.content.Intent} 包含一個旗標,宣告新 Activity 應如何 (或是否) 與目前的工作關聯。
+
+</p></li>
+</ul>
+
+<p>因此,如果 Activity A 啟動 Activity B,Activity B 可以在其宣示說明中定義它應如何與目前的工作 (如果有) 關聯,而且 Activity A 也能要求 Activity B 應如何與目前的工作關聯。
+
+如果這兩個 Activity 皆定義 Activity B 應如何與工作關聯,相較於 Activity B 的要求 (如宣示說明中所定義),會優先採用 Activity A 的要求 (如意圖中所定義)。
+
+</p>
+
+<p class="note"><strong>注意:</strong>某些宣示說明檔案中提供的啟動模式可能沒有對應的意圖旗標,同樣地,某些意圖旗標提供的啟動模式無法在宣示說明中定義。
+
+</p>
+
+
+<h4 id="ManifestForTasks">使用宣示說明檔案</h4>
+
+<p>當您在宣示說明檔案中宣告 Activity 時,您可以使用 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 元素的 <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
+launchMode}</a> 屬性,指定 Activity 應如何與工作關聯。
+
+</p>
+
+<p><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code
+launchMode}</a> 屬性可指定應如何將 Activity 啟動至工作內的指示。
+您可以為
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">launchMode</a></code> 屬性指定四種不同的啟動模式:
+</p>
+
+<dl>
+<dt>{@code "standard"} (預設模式)</dt>
+  <dd>預設。系統在啟動 Activity 的工作中建立新的執行個體,並將意圖路由至該處。
+Activity 可以具現化很多次,每個執行個體可屬於不同的工作,而且一個工作可以有多個執行個體。
+</dd>
+<dt>{@code "singleTop"}</dt>
+  <dd>如果 Activity 的執行個體已經出現在目前工作的頂端,系統會透過呼叫其 {@link
+android.app.Activity#onNewIntent onNewIntent()} 方法,將意圖路由至該執行個體,而不是建立新的 Activity 執行個體。
+
+Activity 可以具現化很多次,每個執行個體可屬於不同的工作,而且一個工作可以有多個執行個體 (但僅限於返回堆疊頂端的 Activity 不是現有的 Activity 執行個體時<em></em>)。
+
+
+  <p>例如,假設工作的返回堆疊包含根 Activity A 及 Activity B、C 及在最頂端的 D (堆疊為 A-B-C-D;D 在最頂端)。
+類型 D Activity 的意圖抵達。
+如果 D 有預設的 {@code "standard"} 啟動模式,則會啟動新的類別執行個體,且堆疊會變成 A-B-C-D-D。不過,如果 D 啟動模式為 {@code "singleTop"},D 的現有執行個體會透過 {@link
+android.app.Activity#onNewIntent onNewIntent()} 接收意圖,這是因為它位於堆疊的最頂端 &mdash; 堆疊會維持 A-B-C-D。不過,如果類型 B Activity 的意圖抵達,則 B 的新執行個體會新增到堆疊中,即使其啟動模式為 {@code "singleTop"} 也是如此。
+
+
+
+</p>
+  <p class="note"><strong>注意:</strong>建立新的 Activity 執行個體之後,使用者可按下 [返回]<em></em> 按鈕,返回之前的 Activity。
+但是,如果處理新意圖的是現有的 Activity 執行個體,則使用者無法按下 [返回]<em></em> 按鈕回到新意圖抵達 {@link android.app.Activity#onNewIntent
+onNewIntent()} 之前的 Activity 狀態。
+
+
+
+</p>
+</dd>
+
+<dt>{@code "singleTask"}</dt>
+  <dd>系統會建立新的工作並在新工作的根目錄將 Activity 具現化。不過,如果 Activity 的執行個體已經出現在其他工作中,系統會透過呼叫其 {@link
+android.app.Activity#onNewIntent onNewIntent()} 方法,將意圖路由至現有的執行個體,而不是建立新的執行個體。
+
+一次只能有一個 Activity 執行個體。
+
+  <p class="note"><strong>注意:</strong>雖然 Activity 是在新工作中啟動,使用者仍可使用 [返回] 按鈕返回之前的 Activity。
+<em></em></p></dd>
+<dt>{@code "singleInstance"}。</dt>
+  <dd>與 {@code "singleTask"} 一樣,差別在於系統不會將任何其他 Activity 啟動至保留執行個體的工作中。
+Activity 一律是其工作的唯一成員;使用此項目啟動的任何 Activity 會在個別的工作中開啟。
+</dd>
+</dl>
+
+
+<p>另外一個例子,Android 瀏覽器應用程式宣告網頁瀏覽器 Activity 應永遠在自己的工作中開啟 &mdash; 透過在 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 元素指定 {@code singleTask} 啟動模式。
+這表示如果您的應用程式發出開啟 Android 瀏覽器的意圖,其 Activity 不會與您的應用程式放在同一個工作中。<em></em>
+
+
+而是會為瀏覽器啟動新的工作,或者如果瀏覽器已經有工作在背景執行,會將該工作帶出來處理新的意圖。
+
+</p>
+
+<p>無論 Activity 在新工作啟動或與啟動該 Activity 之 Activity 的相同工作中啟動,使用者都能使用 [返回] 按鈕返回之前的 Activity。<em></em>
+不過,如果您啟動指定 {@code singleTask} 啟動模式的 Activity,如果該 Activity 的執行個體存在於背景工作中,則該工作會整個移到前景。
+
+此時,返回堆疊現在包含已帶出且位於堆疊頂端之工作的所有 Activity。
+
+圖 4 說明這種類型的情況。</p>
+
+<img src="{@docRoot}images/fundamentals/diagram_backstack_singletask_multiactivity.png" alt="" />
+<p class="img-caption"><strong>圖 4.</strong>顯示含有啟動模式 "singleTask" 的 Activity 如何新增到返回堆疊。
+如果 Activity 已經是背景工作的一部份且有自己的返回堆疊,則整個返回堆疊都會帶出來,位於目前工作的最頂端。
+
+</p>
+
+<p>如要進一步瞭解如何使用宣示說明檔案中的啟動模式,請參閱 <code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 元素,其中會有 {@code launchMode} 屬性和可接受值的詳細說明。
+
+
+</p>
+
+<p class="note"><strong>注意:</strong>您使用 <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> 屬性指定的 Activity 行為可被啟動 Activity 之意圖所含的旗標所覆寫,如下一節所述。
+
+</p>
+
+
+
+<h4 id="#IntentFlagsForTasks">使用意圖旗標</h4>
+
+<p>啟動 Activity 時,您可以在傳送到 {@link
+android.app.Activity#startActivity startActivity()} 的意圖中包含旗標,以修改 Activity 及其工作的預設關聯。
+您可以用來修改預設行為的旗標包括:
+</p>
+
+<p>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</dt>
+    <dd>在新工作中啟動 Activity。如果工作已為您目前啟動的 Activity 執行,該工作會移到前景並復原至上個狀態,而且 Activity 會在 {@link android.app.Activity#onNewIntent onNewIntent()} 收到新的意圖。
+
+
+    <p>這會產生與 {@code "singleTask"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> 值相同的行為,如上節所述。
+</p></dd>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}</dt>
+    <dd>如果現在正在啟動的 Activity 是目前的 Activity (位於返回堆疊的頂端),則現有執行個體會收到 {@link android.app.Activity#onNewIntent onNewIntent()} 呼叫,而不會建立新的 Activity 執行個體。
+
+
+    <p>這會產生與 {@code "singleTop"} <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> 值相同的行為,如上節所述。
+</p></dd>
+  <dt>{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TOP}</dt>
+    <dd>如果正在啟動的 Activity 已在目前的工作中執行,則不會啟動新的 Activity 執行個體,而是會終結位於其上方的所有其他 Activity,且此意圖會透過 {@link android.app.Activity#onNewIntent onNewIntent()} 傳送到繼續執行的 Activity 執行個體 (現在位於頂端)。
+
+
+
+    <p>沒有任何 <a href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">{@code launchMode}</a> 屬性值可以產生此行為。
+</p>
+    <p>{@code FLAG_ACTIVITY_CLEAR_TOP} 最常與 {@code FLAG_ACTIVITY_NEW_TASK} 搭配使用。
+一起使用時,這些旗標可以找出位於其他工作中的現有 Activity,然後將它放置於可以回應意圖的地方。
+
+ </p>
+    <p class="note"><strong>注意:</strong>如果指定 Activity 的啟動模式為 {@code "standard"},它也會從堆疊中移除,改為啟動新的執行個體處理傳入的意圖。
+
+
+這是因為當啟動模式為 {@code "standard"} 時,一律會為新的意圖建立新的執行個體。
+ </p>
+</dd>
+</dl>
+
+
+
+
+
+<h3 id="Affinities">處理親和性</h3>
+
+<p>親和性<em></em>可指出 Activity 偏好屬於哪個工作。根據預設,相同應用程式的所有 Activity 間互相都有親和性。
+因此,根據預設,相同應用程式的所有 Activity 都偏好位於相同的工作。
+不過,您可以修改 Activity 的預設親和性。
+不同應用程式中定義的 Activity 可以共用親和性,或者相同應用程式中定義的 Activity 可以指派不同的工作親和性。
+
+</p>
+
+<p>您可以使用 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 元素的 <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a> 屬性修改任何指定 Activity 的親和性。
+
+</p>
+
+<p><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a> 屬性使用字串值,但必須與 <a href="{@docRoot}guide/topics/manifest/manifest-element.html">
+{@code &lt;manifest&gt;}</a> 元素中宣告的預設封裝名稱不同,因為系統使用該名稱來識別應用程式的預設工作親和性。
+
+
+
+</p>
+
+<p>在兩種情況下會用到親和性:</p>
+<ul>
+  <li>當啟動 Activity 的意圖包含 
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK} 旗標。
+
+
+<p>根據預設,新的 Activity 會啟動至 Activity (名為 {@link android.app.Activity#startActivity startActivity()}) 的工作中。
+系統會將它推入至與呼叫端相同的返回堆疊。
+不過,如果傳送至 
+{@link android.app.Activity#startActivity startActivity()} 的意圖包含 {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK} 旗標,則系統會找尋不同的工作來放置新的 Activity。
+
+這通常是新工作。
+不過,它不一定要是新工作。如果現有工作中有與新 Activity 相同的親和性,Activity 會啟動至該工作中。
+如果沒有,會開始新的工作。</p>
+
+<p>如果此旗標導致 Activity 開始新的工作,而使用者按 [首頁] 按鈕離開它,必須要有方法可以讓使用者回來瀏覽這個工作。<em></em>
+
+有些實體 (例如,通知管理員) 總是從外部工作開始 Activity,從來不使用自己的工作,因此他們都會將 {@code FLAG_ACTIVITY_NEW_TASK} 放入傳送到 
+{@link android.app.Activity#startActivity startActivity()} 的意圖。
+
+如果您的 Activity 可以由外部實體呼叫且可能使用此旗標,記得要提供使用者獨立的方法回到啟動的工作,例如,透過啟動組件圖示 (工作的根 Activity 有一個 {@link android.content.Intent#CATEGORY_LAUNCHER} 意圖篩選器;請參閱下方的<a href="#Starting">開始工作</a>)。
+
+
+
+</p>
+</li>
+
+  <li>當 Activity 的<a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">
+{@code allowTaskReparenting}</a> 屬性設為 {@code "true"}。
+  <p>在這種情況下,當工作移到前景時,Activity 可以從其啟動的工作移到與其有親和性的工作。
+</p>
+  <p>例如,假設將報告所選城市天氣狀況的 Activity 定義為旅遊應用程式的一部份。
+它與相同應用程式中的其他 Activity 有相同的親和性 (預設的應用程式親和性),而且它允許與此屬性重設父代。
+當您的其中一個 Activity 開始氣象報告程式 Activity,它一開始屬於與您 Activity 相同的工作。
+
+不過,當旅遊應用程式工作移到前景,氣象報告程式 Activity 就會重新指派給該工作,並在其中顯示。
+</p>
+</li>
+</ul>
+
+<p class="note"><strong>提示:</strong>如果從使用者的角度來看 {@code .apk} 檔案包含一個以上的「應用程式」,您可能會想要使用 <a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">{@code taskAffinity}</a> 屬性對與每個「應用程式」關聯的 Activity 指派不同的親和性。
+
+</p>
+
+
+
+<h3 id="Clearing">清除返回堆疊</h3>
+
+<p>如果使用者離開工作一段很長的時間,系統會清除根 Activity 以外所有 Activity 的工作
+。當使用者再次回到工作,只會復原根 Activity。
+系統會有這樣的行為是因為在一段很長的時間後,使用者很可能會放棄他們之前在做的工作,並回到工作開始其他新的工作。
+ </p>
+
+<p>您可以使用下列一些 Activity 屬性來修改這個行為: </p>
+
+<dl>
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#always">alwaysRetainTaskState</a></code>
+</dt>
+<dd>如果這項屬性在工作的根 Activity 中設為 {@code "true"},則剛描述的預設行為不會發生。
+即使過了很長的一段時間,工作仍然會在堆疊保留所有的 Activity。
+</dd>
+
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#clear">clearTaskOnLaunch</a></code></dt>
+<dd>如果這項屬性在工作的根 Activity 中設為 {@code "true"},則剛描述的預設行為不會發生。
+即使過了很長的一段時間,工作仍然會在堆疊保留所有的 Activity。
+換句話說,它與 
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#always">
+{@code alwaysRetainTaskState}</a> 相反。即便使用者只離開工作一小段時間,使用者還是會回到工作的起始狀態。
+</dd>
+
+<dt><code><a
+href="{@docRoot}guide/topics/manifest/activity-element.html#finish">finishOnTaskLaunch</a></code>
+</dt>
+<dd>這項屬性與 <a href="{@docRoot}guide/topics/manifest/activity-element.html#clear">{@code clearTaskOnLaunch}</a> 相似,但它在單一 Activity 上作業,而不是在整個工作。
+
+它也會導致任何 Activity 離開,包含根 Activity。
+如果設成 {@code "true"},Activity 只會在目前的工作階段留在此工作中。
+如果使用者離開後再回到工作,該工作將不再存在。
+</dd>
+</dl>
+
+
+
+
+<h3 id="Starting">開始工作</h3>
+
+<p>您可以給予 Activity 一個意圖篩選器,將 
+{@code "android.intent.action.MAIN"} 設定為指定的動作, 
+{@code "android.intent.category.LAUNCHER"} 設定為指定的類別,以便將該 Activity 設定為工作的進入點。
+例如:</p>
+
+<pre>
+&lt;activity ... &gt;
+    &lt;intent-filter ... &gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+    ...
+&lt;/activity&gt;
+</pre>
+
+<p>這類意圖篩選器可在應用程式啟動組件顯示 Activity 的圖示和標籤,讓使用者啟動 Activity 並回到 Activity 啟動後任何時間建立的工作。
+
+
+</p>
+
+<p>第二項功能很重要:使用者必須能夠在離開工作後,使用此 Activity 啟動組件回到此工作。
+由於這個原因,兩個將 Activity 標示為一律啟動工作的<a href="#LaunchModes">啟動模式</a> {@code "singleTask"} 和 
+{@code "singleInstance"},應只能在 Activity 有 {@link android.content.Intent#ACTION_MAIN} 和 {@link android.content.Intent#CATEGORY_LAUNCHER} 篩選器時才能使用。
+
+
+例如,試想如果缺少篩選器會發生什麼情況:
+意圖會啟動 {@code "singleTask"} Activity、起始新工作,然後使用者會花一些時間在該工作進行作業。
+之後,使用者按下 [首頁]<em></em> 按鈕。
+此工作現在會傳送到背景而且不會顯示。現在,使用者沒有辦法回到工作,這是因為應用程式啟動組件沒有代表此工作的項目。
+</p>
+
+<p>在您不希望使用者返回 Activity 的情況下,將
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 元素的
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#finish">{@code finishOnTaskLaunch}</a> 設定為 {@code "true"} (請參閱<a href="#Clearing">清除堆疊</a>)。
+
+</p>
+
+<p>如要進一步瞭解工作和 Activity 在總覽畫面中的顯示及管理方式,請參閱<a href="{@docRoot}guide/components/recents.html">總覽畫面</a>。
+
+</p>
+
+<!--
+<h2>Beginner's Path</h2>
+
+<p>For more information about how to use intents to
+activate other application components and publish the intents to which your components
+respond, continue with the <b><a
+href="{@docRoot}guide/components/intents-filters.html">Intents and Intent
+Filters</a></b> document.</p>
+-->
diff --git a/docs/html-intl/intl/zh-tw/guide/index.jd b/docs/html-intl/intl/zh-tw/guide/index.jd
new file mode 100644
index 0000000..f7ad966
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/index.jd
@@ -0,0 +1,74 @@
+page.title=Android 簡介
+
+@jd:body
+
+
+<div class="sidebox" style="width:220px"><!-- width to match col-4 below -->
+<p>如要瞭解應用程式的運作方式,請參閱<a href="{@docRoot}guide/components/fundamentals.html">應用程式基礎知識</a>。
+</p>
+<p>如果想立即編寫程式碼,請參閱<a href="{@docRoot}training/basics/firstapp/index.html">建立您的第一個應用程式</a>。</p>
+</div>
+
+<p>Android 提供內容豐富的應用程式架構,可讓您在 Java 語言環境中建置適用於行動裝置的新穎應用程式和遊戲。
+您可以參閱左側導覽區所列的文件,進一步瞭解如何使用 Android 的各種 API 建置應用程式。
+</p>
+
+<p>如果您是剛開始接觸 Android 開發環境,請務必詳閱下列有關 Android 應用程式架構的基本概念:
+</p>
+
+
+<div class="landing-banner">
+
+<div class="col-6">
+
+<h4>應用程式可提供多個進入點</h4>
+
+<p>Android 應用程式是由許多不同元件建置而成,應用程式可個別呼叫每個元件。
+例如,「Activity」<em></em>可在單一畫面中顯示使用者介面,而「服務」<em></em>則個別可在背景中執行作業。
+
+</p>
+
+<p>您可以透過某個元件使用「意圖」<em></em>啟動另一個元件。您甚至可以啟動其他應用程式中的元件,例如啟動地圖應用程式的 Activity 來顯示地址。
+這個模型可為單一應用程式提供多個進入點,還能讓任何應用程式針對其他應用程式可能呼叫的動作,以使用者設定的「預設值」運作。
+
+</p>
+
+
+<p><b>瞭解詳情:</b></p>
+<ul class="nolist">
+<li><a href="{@docRoot}guide/components/fundamentals.html">應用程式基礎知識</a>
+<li><a href="{@docRoot}guide/components/intents-filters.html">意圖和意圖篩選器</a>
+<li><a href="{@docRoot}guide/components/activities.html">Activity</a>
+</ul>
+
+</div>
+
+
+<div class="col-6">
+
+<h4>應用程式會針對不同裝置進行調整</h4>
+
+<p>Android 提供的應用程式架構可視情況進行調整,讓您能夠針對不同的裝置設定提供專屬資源。
+例如,您可以針對不同的螢幕大小建立各種 XML 版面配置檔案,藉此讓系統根據目前裝置的螢幕大小決定要套用的版面配置設定。
+
+</p>
+
+<p>如果有應用程式功能需要特定硬體 (例如相機) 才能運作,您可以在執行階段查詢裝置功能的可用性。
+此外,您還可以視需要宣告您的應用程式所需的功能,以便讓 Google Play 商店等應用程式市集禁止使用者在不支援相關功能的裝置上安裝您的應用程式。
+
+</p>
+
+
+<p><b>瞭解詳情:</b></p>
+<ul class="nolist">
+<li><a href="{@docRoot}guide/practices/compatibility.html">裝置相容性</a>
+<li><a href="{@docRoot}guide/topics/resources/overview.html">資源總覽</a>
+<li><a href="{@docRoot}guide/topics/ui/overview.html">使用者介面總覽</a>
+</ul>
+
+</div>
+
+</div><!-- end landing-banner -->
+
+
+
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/manifest/manifest-intro.jd b/docs/html-intl/intl/zh-tw/guide/topics/manifest/manifest-intro.jd
new file mode 100644
index 0000000..5e42e37
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/manifest/manifest-intro.jd
@@ -0,0 +1,517 @@
+page.title=應用程式宣示說明
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本文件內容</h2>
+<ol>
+<li><a href="#filestruct">宣示說明檔案結構</a></li>
+<li><a href="#filec">檔案轉換</a>
+<li><a href="#filef">檔案功能</a>
+	<ol>
+	<li><a href="#ifs">意圖篩選器</a></li>
+	<li><a href="#iconlabel">圖示和標籤</a></li>
+	<li><a href="#perms">權限</a></li>
+	<li><a href="#libs">程式庫</a></li>
+	</ol></li>
+</ol>
+</div>
+</div>
+
+<p>
+  每個應用程式的根目錄都必須包含 AndroidManifest.xml 檔案 (名稱要一字不差)。
+ <span itemprop="description">宣示說明檔案可向 Android 系統顯示應用程式的基本資訊,也就是系統在執行該應用程式的任何程式碼之前必須具備的資訊。
+
+
+</span> 宣示說明可執行下列動作:
+</p>
+
+<ul>
+<li>為應用程式的 Java 封裝命名。
+封裝名稱可當成應用程式的唯一識別碼使用。</li>
+
+<li>描述應用程式的元件 &mdash; 組成應用程式的 Activity、服務、廣播接收器和內容供應程式。
+
+為實作每個元件的類別命名以及發佈類別的功能 (例如,類別可處理的 {@link android.content.Intent 
+Intent} 訊息)。
+這些宣告可讓 Android 系統瞭解元件為何以及可在哪些情況下啟動。
+</li>
+
+<li>決定代管應用程式元件的程序。</li>  
+
+<li>宣告應用程式必須擁有哪些權限,才能存取 API 受保護的部分以及與其他應用程式互動。
+</li>  
+
+<li>宣示說明亦可宣告其他項目必須擁有哪些權限,才能與應用程式的元件互動。
+</li>
+
+<li>列出可在應用程式執行時提供分析和其他資訊的 {@link android.app.Instrumentation} 類別。
+只有在應用程式開發及測試完成的情況下,宣示說明中才會顯示這些宣告;這些宣告會在應用程式發佈之前移除。
+
+</li>
+
+<li>宣告應用程式要求的最低 Android API 級別。
+</li>
+
+<li>列出應用程式必須連結的程式庫。</li>
+</ul>
+
+
+<h2 id="filestruct">宣示說明檔案結構</h2>
+
+<p>
+下圖顯示宣示說明檔案的一般結構和可納入其中的元素。
+每個元素和其所有屬性都會完全記錄在個別檔案中。
+如要查看任一元素的詳細資訊,只要按一下圖表中的元素名稱、圖表後方按字母順序列出的元素清單,或在他處提及的任何元素名稱。
+
+
+ 
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a>
+
+    <a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk /&gt;</a>
+    <a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration /&gt;</a>  <!-- ##api level 3## -->
+    <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature /&gt;</a>  <!-- ##api level 4## -->
+    <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens /&gt;</a>  <!-- ##api level 4## -->
+    <a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html">&lt;compatible-screens /&gt;</a>  <!-- ##api level 9## -->
+    <a href="{@docRoot}guide/topics/manifest/supports-gl-texture-element.html">&lt;supports-gl-texture /&gt;</a>  <!-- ##api level 11## -->
+
+    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action /&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category /&gt;</a>
+                <a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;/activity&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;/activity-alias&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data/&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;/service&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a> . . . <a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;/intent-filter&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;/receiver&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data /&gt;</a>
+            <a href="{@docRoot}guide/topics/manifest/path-permission-element.html">&lt;path-permission /&gt;</a>
+        <a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;/provider&gt;</a>
+
+        <a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library /&gt;</a>
+
+    <a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;/application&gt;</a>
+
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;/manifest&gt;</a>
+</pre>
+
+<p>
+下方按字母順序列出可出現在宣示說明檔案中的所有元素。
+只有這些才是符合資格的元素,您無法新增自己的元素或屬性。
+  
+</p>
+
+<p style="margin-left: 2em">
+<code><a href="{@docRoot}guide/topics/manifest/action-element.html">&lt;action&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/category-element.html">&lt;category&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/data-element.html">&lt;data&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">&lt;supports-screens&gt;</a></code>  <!-- ##api level 4## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration&gt;</a></code>  <!-- ##api level 3## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature&gt;</a></code>  <!-- ##api level 4## -->
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</a></code>
+</p>
+
+
+    
+
+<h2 id="filec">檔案轉換</h2>
+
+<p>
+某些轉換和規則通常適用於宣示說明中的所有元素與屬性:
+
+</p>
+
+<dl>
+<dt><b>元素</b></dt>
+<dd>只有
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> 與
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 是必要元素,務必顯示兩者且這些元素只能出現一次。
+雖然您至少必須顯示當中的一些元素,才能完成有意義的作業,但大部分其他元素可以出現數次或完全不出現。
+
+
+
+
+<p>
+如果可以的話,元素還可以包含其他元素。所有值並非當成元素內的字元資料使用,而是透過屬性設定。
+
+</p>
+
+<p>
+系統通常不會將位於相同層級的元素排序。例如,
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>、
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> 和 
+<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code> 元素能以任何順序排列組合。
+(
+<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code> 元素是這項規則的例外狀況:
+由於它是
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 的別名,因此必須跟在該元素的後面)。
+
+</p></dd>
+
+<dt><b>屬性</b></dt>
+<dd>形式上而言,所有屬性均為選用性質。不過,您必須為元素指定某些屬性,才能達到其目的。
+請使用本文件當成參考指南。
+真正的選用屬性會提及在缺少規格時要使用的預設值或狀態。
+
+
+<p>除了
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> 根元素的某些屬性以外,所有屬性名稱都是以前置詞 {@code android:}為開頭,例如 {@code android:alwaysRetainTaskState}。
+
+由於前置詞是通用的,因此按名稱參照屬性時,文件通常會加以省略。
+
+</p></dd>
+
+<dt><b>宣告類別名稱</b></dt>
+<dd>許多元素都會對應到 Java 物件,包括應用程式本身的元素 (
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 元素) 與其主要元件:Activity (<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>)、服務 (<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>)、廣播接收器 (<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>) 以及內容供應程式 (<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>)。
+
+
+
+
+
+
+
+
+  
+
+<p>
+如果您一如往常定義元件類別 ({@link android.app.Activity}、{@link android.app.Service}、
+{@link android.content.BroadcastReceiver} 及 {@link android.content.ContentProvider}) 般定義子類別,就會透過 {@code name} 屬性宣告子類別。
+
+該名稱必須包含完整的封裝指定名稱。
+例如,{@link android.app.Service} 子類別可能會以下列格式宣告:
+
+</p>
+
+<pre>&lt;manifest . . . &gt;
+    &lt;application . . . &gt;
+        &lt;service android:name="com.example.project.SecretService" . . . &gt;
+            . . .
+        &lt;/service&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+不過,採用速記法時,如果字串的第一個字元是句點,就會將字串附加到應用程式的封裝名稱 (如同由
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> 元素的
+<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">package</a></code> 屬性指定)。
+
+
+下列的指派結果會和上述相同: 
+</p>
+
+<pre>&lt;manifest package="com.example.project" . . . &gt;
+    &lt;application . . . &gt;
+        &lt;service android:name=".SecretService" . . . &gt;
+            . . .
+        &lt;/service&gt;
+        . . .
+    &lt;/application&gt;
+&lt;/manifest&gt;</pre>
+
+<p>
+啟動元件時,Android 會建立具名子類別的執行個體。如果未指定子類別,就會建立基本類別的執行個體。
+
+</p></dd>
+
+<dt><b>多個值</b></dt>
+<dd>如果可以指定多個值,該元素幾乎會一直重複,而不是在單一元素內列出多個值。
+例如,意圖篩選器能列出數種動作:
+
+
+<pre>&lt;intent-filter . . . &gt;
+    &lt;action android:name="android.intent.action.EDIT" /&gt;
+    &lt;action android:name="android.intent.action.INSERT" /&gt;
+    &lt;action android:name="android.intent.action.DELETE" /&gt;
+    . . .
+&lt;/intent-filter&gt;</pre></dd>
+
+<dt><b>資源值</b></dt>
+<dd>有些屬性的值可以供使用者查看 &mdash; 例如 Activity 的標籤和圖示。
+您必須將這些屬性的值本地化,以便從資源或主題設定這些值。
+資源值是採用下列格式表示:
+</p>
+
+<p style="margin-left: 2em">{@code @[<i>package</i>:]<i>type</i>:<i>name</i>}</p>
+
+<p>
+其中的<i>package</i> 名稱可以省略 (如果資源所在的封裝和應用程式相同的話),
+ <i>type</i> 是指資源類型 &mdash; 例如「字串」或「可繪項目」 &mdash; 而
+ <i>name</i> 則是可識別特定資源的名稱。範例:
+
+</p>
+
+<pre>&lt;activity android:icon="@drawable/smallPic" . . . &gt</pre>
+
+<p>
+主題中的值會以類似的方式表示,但字首會是 '{@code ?}',而不是 '{@code @}':
+
+</p>
+
+<p style="margin-left: 2em">{@code ?[<i>package</i>:]<i>type</i>:<i>name</i>}
+</p></dd>
+
+<dt><b>字串值</b></dt>
+<dd>如果屬性值為字串,必須使用雙反斜線 ('{@code \\}')來溢出字元,例如 '{@code \\n}'表示換行字元,或 '{@code \\uxxxx}' 表示 Unicode 字元。
+
+</dd>
+</dl>
+
+
+<h2 id="filef">檔案功能</h2>
+
+<p>
+下列各節說明如何在宣示說明檔案中反映部分 Android 功能。
+
+</p>
+
+
+<h3 id="ifs">意圖篩選器</h3>
+
+<p>
+應用程式的核心元件 (即應用程式的 Activity、服務和廣播接收器) 是由
+ <i>意圖</i>啟動。意圖是一組資訊組合 ({@link android.content.Intent} 物件),用於說明要採取的動作 &mdash; 包括執行依據的資料、應執行動作的元件類別,以及其他相關的指示。
+
+
+Android 會找出適當的元件來回應意圖、視需要啟動元件的新執行個體,以及將意圖物件傳送給它。
+
+
+
+</p>
+
+<p>
+元件會通知其功能 (元件可回應的意圖類型),而通知途徑是
+ <i>意圖篩選器</i>。由於 Android 系統必須先瞭解元件能夠處理哪些意圖,才能啟動該元件,因此意圖篩選器在宣示說明中會指定為
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> 元素。
+
+
+元件可包含的篩選器數目不拘,每個篩選器描述的功能各不相同。
+
+</p>
+
+<p>
+明確命名目標元件的意圖會啟動該元件,而不必使用篩選器。
+但未指定目標名稱的意圖,只有在其通過其中一個元件的篩選器後,才能啟動元件。
+
+
+</p>
+
+<p>
+如要瞭解意圖物件測試意圖篩選器的方式,請參閱<a href="{@docRoot}guide/components/intents-filters.html">意圖和意圖篩選器</a>。
+
+
+
+</p>
+
+
+<h3 id="iconlabel">圖示和標籤</h3>
+
+<p>
+許多元素都有可供小型圖示與文字標籤使用的 {@code icon} 和 {@code label} 屬性,而使用者可看到這些圖示和標籤。
+有些元素還包含可供較長說明文字使用的
+{@code description} 屬性,這個說明文字亦可顯示在螢幕上。
+例如,假設
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 元素含有上述三種屬性,當系統詢問使用者是否將權限授予發出要求的應用程式時,可以將代表權限的圖示、該權限的名稱以及所需的描述全都向使用者顯示。
+
+
+
+
+</p>
+
+<p>
+在各種情況下,元件中設定的圖示和標籤會成為所有容器下層元素的預設
+{@code icon} 與 {@code label} 設定因此,
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 元素中設定的圖示和標籤會是應用程式各元件的預設圖示和標籤。
+
+同樣地,為元件 (例如
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 元素) 設定的圖示和標籤會是元件的
+<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> 元素預設值。
+
+
+如果 
+<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 元素設有一個標籤,但 Activity 與其意圖篩選器並未設定該標籤,系統會將應用程式標籤視為 Activity 和意圖篩選器的標籤。
+
+
+
+</p>
+
+<p>
+每當執行篩選器通告的功能,要向使用者顯示元件時,就會將為意圖篩選器設定的圖示和標籤用來代表元件。
+
+例如,包含
+"{@code android.intent.action.MAIN}" 與
+"{@code android.intent.category.LAUNCHER}" 設定的篩選器會將某 Activity 宣告為啟動應用程式的 Activity,也就是應顯示在應用程式啟動器中的 Activity。
+
+因此,顯示在啟動器中的會是篩選器中設定的圖示和標籤。
+
+</p>
+
+
+<h3 id="perms">權限</h3>
+
+<p>
+單一 <i>權限</i> 是指一項限制,可限制某部分程式碼或裝置上資料的存取權。
+   系統會強制實施這項限制,以保護會遭到誤用而扭曲或損害使用者體驗的重要資料與程式碼。
+  
+</p>
+
+<p>
+各項權限都是用不重複的標籤加以辨識。該標籤通常會指出受到限制的動作。
+例如,以下是 Android 定義的一些權限:
+
+</p>
+
+<p style="margin-left: 2em">{@code android.permission.CALL_EMERGENCY_NUMBERS}
+<br/>{@code android.permission.READ_OWNER_DATA}
+<br/>{@code android.permission.SET_WALLPAPER}
+<br/>{@code android.permission.DEVICE_POWER}</p>
+
+<p>
+單一功能最多只能利用一項權限來加以保護。
+</p>
+
+<p>
+如果應用程式需要存取受權限保護的功能,它必須在宣示說明中利用
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 元素來宣告其需要該項權限。
+
+接著,要在裝置上安裝該應用程式時,安裝程式會檢查簽署該應用程式憑證的授權單位 (在某些情況下還會詢問使用者),然後決定是否授予要求的權限。
+
+
+如果授予權限,該應用程式就能夠使用受保護的功能。
+
+如果不授予權限,存取相關功能的嘗試就會失敗,但使用者不會收到任何通知。
+ 
+</p>
+
+<p>
+應用程式也能利用權限來保護自己的元件 (Activity、服務、廣播接收器和內容供應程式)。
+它能使用 Android 定義的任何權限 (列於 
+{@link android.Manifest.permission android.Manifest.permission}) 或其他應用程式宣告的任何權限。
+
+此外,應用程式也能自行定義權限。新的權限是以
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 元素宣告。
+
+例如,您可以利用下列權限保護 Activity:
+</p>
+
+<pre>
+&lt;manifest . . . &gt;
+    &lt;permission android:name="com.example.project.DEBIT_ACCT" . . . /&gt;
+    &lt;uses-permission android:name="com.example.project.DEBIT_ACCT" /&gt;
+    . . .
+    &lt;application . . .&gt;
+        &lt;activity android:name="com.example.project.FreneticActivity"
+                  android:permission="com.example.project.DEBIT_ACCT"
+                  . . . &gt;
+            . . .
+        &lt;/activity&gt;
+    &lt;/application&gt;
+&lt;/manifest&gt;
+</pre>
+
+<p>
+請注意,在本範例中,不只以
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 元素宣告 {@code DEBIT_ACCT} 權限,還使用 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 元素來要求使用此權限。
+
+
+即使保護是由應用程式本身強制施行,還是必須要求使用該權限,應用程式的其他元件才能啟動受保護的 Activity。
+
+  
+</p>
+
+<p>
+在相同的範例中,如果 {@code permission} 屬性設定為在別處宣告的權限 (例如 {@code android.permission.CALL_EMERGENCY_NUMBERS}),就不必再次使用
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 元素來宣告。
+
+
+
+不過,還是必須利用
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 來要求使用。 
+</p>
+
+<p>
+
+<code><a href="{@docRoot}guide/topics/manifest/permission-tree-element.html">&lt;permission-tree&gt;</a></code> 元素可為程式碼將定義的一組權限宣告命名空間。
+
+此外,
+<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code> 可為一組權限定義標籤 (以
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 元素在宣示說明中宣告的權限或在別處宣告的權限)。
+
+它只會影響在向使用者呈現權限時的分組方式。
+
+<code><a href="{@docRoot}guide/topics/manifest/permission-group-element.html">&lt;permission-group&gt;</a></code> 元素不會指定各權限所屬的群組,只會指定群組的名稱。
+
+只要將群組名稱指派給
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 元素
+<code><a href="{@docRoot}guide/topics/manifest/permission-element.html#pgroup">permissionGroup</a></code> 的屬性,就能將權限放入群組中。
+
+
+
+</p>
+
+
+<h3 id="libs">程式庫</h3>
+
+<p>
+每款應用程式都會與預設的 Android 程式庫連結,該程式庫中包含的基本封裝可用於建置應用程式 (使用 Activity、Service、Intent、View、Button、Application、ContentProvider 等一般類別)。
+
+
+
+</p>
+
+<p>
+不過,有些封裝是存放在其專屬的程式庫中。如果您的應用程式使用來自這類封裝的程式碼,您必須明確要求與其建立連結。
+
+宣示說明必須包含個別的
+<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code> 元素,才能命名各個程式庫。
+(您可以在封裝的說明文件中找到程式庫名稱)。
+
+</p>
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/providers/calendar-provider.jd b/docs/html-intl/intl/zh-tw/guide/topics/providers/calendar-provider.jd
new file mode 100644
index 0000000..42434e4
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/providers/calendar-provider.jd
@@ -0,0 +1,1184 @@
+page.title=日曆供應程式
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+    <h2>本文件內容</h2>
+    <ol>
+  <li><a href="#overview">基本概念</a></li>
+  <li><a href="#manifest">使用者權限</a></li>
+  <li><a href="#calendar">日曆表格</a>
+<ol>
+      <li><a href="#query">查詢日曆</a></li>
+      <li><a href="#modify-calendar">修改日曆</a></li>
+      <li><a href="#insert-calendar">插入日曆</a></li>
+    </ol>
+  </li>
+  <li><a href="#events">活動表格</a>
+<ol>
+      <li><a href="#add-event">新增活動</a></li>
+      <li><a href="#update-event">更新活動</a></li>
+      <li><a href="#delete-event">刪除活動</a></li>
+    </ol>
+  </li>
+  <li><a href="#attendees">參與者表格</a>
+<ol>
+      <li><a href="#add-attendees">新增參與者</a></li>
+    </ol>
+  </li>
+  <li><a href="#reminders">提醒表格</a>
+<ol>
+      <li><a href="#add-reminders">新增提醒</a></li>
+    </ol>
+  </li>
+  <li><a href="#instances">執行個體表格</a>
+  <ol>
+      <li><a href="#query-instances">查詢執行個體表格</a></li>
+  </ol></li>
+  <li><a href="#intents">日曆意圖</a>
+  <ol>
+      <li><a href="#intent-insert">使用意圖插入活動</a></li>
+      <li><a href="#intent-edit">使用意圖編輯活動</a></li>
+      <li><a href="#intent-view">使用意圖檢視日曆資料</a></li>
+    </ol>
+  </li>
+  
+  <li><a href="#sync-adapter">同步配接器</a></li>
+</ol>
+
+    <h2>重要類別</h2>
+    <ol>
+      <li>{@link android.provider.CalendarContract.Calendars}</li>
+      <li>{@link android.provider.CalendarContract.Events}</li>
+      <li>{@link android.provider.CalendarContract.Attendees}</li>
+      <li>{@link android.provider.CalendarContract.Reminders}</li>
+    </ol>
+</div>
+</div>
+
+<p>「日曆供應程式」是使用者日曆活動的存放庫。「日曆供應程式」API 允許您在日曆、活動、參與者、提醒等等項目中執行查詢、插入、更新以及刪除操作。
+
+</p>
+
+
+<p>「日曆供應程式」API 可以由應用程式和同步配接器使用。規則取決於發出呼叫的程式類型。
+本文件主要著重於將「日曆供應程式」API 作為應用程式使用。
+如要瞭解同步配接器不一樣的資訊,請參閱<a href="#sync-adapter">同步配接器</a>。
+
+</p>
+
+
+<p>一般而言,如要讀取或寫入日曆資料,應用程式的宣示說明必須含有適當的權限 (於<a href="#manifest">使用者權限</a>中描述)。
+
+如要更輕鬆執行常見操作,「日曆供應程式」提供一組意圖 (於<a href="#intents">日曆意圖</a>中描述)。
+
+這些意圖會將使用者帶往「日曆」應用程式,以插入、檢視以及編輯活動。
+使用者與「日曆」應用程式互動後,回到原來的應用程式。
+因此,您的應用程式不需要要求權限,也不需要提供檢視或建立活動的使用者介面。
+</p>
+
+<h2 id="overview">基本概念</h2>
+
+<p><a href="{@docRoot}guide/topics/providers/content-providers.html">內容供應程式</a>會儲存資料,讓應用程式可以存取這些資料。
+內容供應程式是由 Android 平台所提供 (包括「日曆供應程式」),通常會根據關聯式資料庫模型,以一組表格的形式公開資料。表格中的每一列都是一筆記錄,而每一欄則是特定類型和意義的資料。
+
+透過「日曆供應程式」API,應用程式和同步配接器可以取得資料庫表格 (此資料庫表格含有使用者日曆資料) 的讀取/寫入存取權。
+
+</p>
+
+<p>每個內容供應程式都會公開一個公用 URI (包裝為 
+{@link android.net.Uri} 物件),可唯一識別其資料集。
+控制多個資料集 (多個表格) 的內容供應程式會為每個資料集公開個別的 URI。
+供應程式所有 URI 的開頭字串為「content://」。
+這表示資料是受到內容供應程式的控制。
+「日曆供應程式」會為每個類別 (表格) 的 URI 定義常數。
+這些 URI 的格式為 <code><em>&lt;class&gt;</em>.CONTENT_URI</code>。
+例如,{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}。
+</p>
+
+<p>「圖 1」顯示「日曆供應程式」資料模型的圖形表示。它顯示主要表格以及將每個表格連接在一起的欄位。
+</p>
+
+<img src="{@docRoot}images/providers/datamodel.png" alt="Calendar Provider Data Model" />
+<p class="img-caption"><strong>圖 1.</strong>「日曆供應程式」資料模型。</p>
+
+<p>使用者可以有多個日曆,而且不同的日曆可以與不同類型的帳戶 (Google 日曆、Exchange 等等) 關聯。</p>
+
+<p>{@link android.provider.CalendarContract} 會定義日曆的資料模型和活動相關資訊。此資料儲存於一些表格,列示如下。</p>
+
+<table>
+  <tr>
+    <th>表格 (類別)</th>
+    <th>描述</th>
+  </tr>
+  <tr>
+    <td><p>{@link android.provider.CalendarContract.Calendars}</p></td>
+    
+    <td>此表格內含日曆特定的資訊。
+此表格中的每一列包含單一日曆的詳細資訊,例如名稱、色彩、同步資訊等等。
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Events}</td>
+    
+    <td>此表格內含活動特定的資訊。
+此表格中的每一列包含單一活動的資訊 &mdash; 例如,活動標題、位置、開始時間、結束時間等等。
+
+活動可以只發生一次或發生多次。參與者、提醒以及延伸屬性儲存於個別的表格。
+它們每一個都有 {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID},會參照「活動」表格中的 {@link android.provider.BaseColumns#_ID}。
+
+</td>
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances}</td>
+    
+    <td>此表格內含活動每次發生的開始和結束時間。
+此表格的每一列代表單一活動發生。
+單次活動執行個體和活動的對應為 1:1。
+對於週期性活動,則會自動產生多個列,對應到該活動的多次發生。
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Attendees}</td>
+    
+    <td>此表格內含活動參與者 (邀請對象) 的資訊。
+每一列代表一個活動的單一邀請對象。
+其中會指出邀請對象類型,以及邀請對象是否出席該活動的回應。
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Reminders}</td>
+    
+    <td>此表格內含警示/通知資訊。
+每一列代表一個活動的單一警示。一個活動可以設定多個提醒。
+每個活動的最大數量提醒指定於 
+{@link android.provider.CalendarContract.CalendarColumns#MAX_REMINDERS},此項是由擁有指定日曆的同步配接器所設定。
+
+
+提醒是以分鐘數指定活動發生前的時間,而且有一個方法用於決定通知使用者的方式。
+</td>
+  </tr>
+  
+</table>
+
+<p>「日曆供應程式」API 的設計具備彈性且功能強大。提供良好的使用者體驗,以及保護日曆及其資料的完整性,兩者一樣重要。
+
+關於這一點,使用此 API 時,請記得以下事項:
+</p>
+
+<ul>
+
+<li><strong>插入、更新以及檢視日曆活動。</strong>如要從「日曆供應程式」直接插入、修改以及讀取活動,您需要具備適當的<a href="#manifest">權限</a>。然而,如果您不是要建置功能豐富的日曆應用程式,則不需要要求這些權限。您可以改用 Android「日曆」應用程式支援的意圖,將讀取和寫入操作交給您的應用程式。使用意圖時,您的應用程式可以將使用者傳送到「日曆」應用程式,在預先填好的表單中執行想要的操作。
+完成之後,使用者會回到您的應用程式。將應用程式設計成透過「日曆」來執行常見的操作,即可為使用者提供一致且完整的使用者介面。
+
+我們建議您採用此方式。
+如需詳細資訊,請參閱<a href="#intents">日曆意圖</a>。
+</p>
+
+
+<li><strong>同步配接器。</strong>同步配接器會將使用者裝置的日曆資料與另一台伺服器或資料來源進行同步。
+在 
+{@link android.provider.CalendarContract.Calendars} 和
+{@link android.provider.CalendarContract.Events} 表格中,會保留某些欄讓同步配接器使用。供應程式和應用程式不應加以修改。
+
+事實上,除非以同步配接器進行存取,否則看不到這些保留的欄。
+如需關於同步配接器的詳細資訊,請參閱<a href="#sync-adapter">同步配接器</a>。
+</li>
+
+</ul>
+
+
+<h2 id="manifest">使用者權限</h2>
+
+<p>如要讀取日曆資料,應用程式必須在其宣示說明檔案中包含 {@link
+android.Manifest.permission#READ_CALENDAR} 權限。宣示說明檔案必須包含 {@link android.Manifest.permission#WRITE_CALENDAR} 權限,才能刪除、插入或更新日曆資料:
+
+</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;...&gt;
+    &lt;uses-sdk android:minSdkVersion=&quot;14&quot; /&gt;
+    &lt;uses-permission android:name=&quot;android.permission.READ_CALENDAR&quot; /&gt;
+    &lt;uses-permission android:name=&quot;android.permission.WRITE_CALENDAR&quot; /&gt;
+    ...
+&lt;/manifest&gt;
+</pre>
+
+
+<h2 id="calendar">日曆表格</h2>
+
+<p>{@link android.provider.CalendarContract.Calendars} 表格包含個別日曆的詳細資訊。
+下列「日曆」欄可以讓應用程式和<a href="#sync-adapter">同步配接器</a>寫入。
+如需關於支援欄位的完整清單,請參閱
+{@link android.provider.CalendarContract.Calendars} 參照。
+</p>
+<table>
+  <tr>
+    <th>常數</th>
+    <th>描述</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#NAME}</td>
+    <td>日曆的名稱。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#CALENDAR_DISPLAY_NAME}</td>
+    <td>使用者看到此日曆的名稱。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Calendars#VISIBLE}</td>
+    
+    <td>指出是否選擇要顯示日曆的布林值。值 0 表示與此日曆關聯的活動不應顯示。
+
+值 1 表示與此日曆關聯的活動應顯示。
+此值會影響 {@link
+android.provider.CalendarContract.Instances} 表格中列的產生。</td>
+
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.CalendarColumns#SYNC_EVENTS}</td>
+    
+    <td>指出日曆是否應同步,並且讓日曆的活動儲存在裝置上的布林值。
+值 0 表示不同步此日曆,並且不要在裝置上儲存其活動。
+值 1 表示同步此日曆的活動,並且在裝置上儲存其活動。
+</td>
+  </tr>
+</table>
+
+<h3 id="query">查詢日曆</h3>
+
+<p>以下的範例顯示如何取得特定使用者擁有的日曆。
+為了簡化起見,本範例中的查詢操作顯示於使用者介面執行緒 (即「主要執行緒」) 中。
+實務上,應該以非同步執行緒來完成,而不是使用主要執行緒。
+如需更多討論,請參閱<a href="{@docRoot}guide/components/loaders.html">載入器</a>。
+如果您不只要讀取資料,還要加以修改,請參閱 {@link android.content.AsyncQueryHandler}。
+
+</p>
+
+
+<pre>
+// Projection array. Creating indices for this array instead of doing
+// dynamic lookups improves performance.
+public static final String[] EVENT_PROJECTION = new String[] {
+    Calendars._ID,                           // 0
+    Calendars.ACCOUNT_NAME,                  // 1
+    Calendars.CALENDAR_DISPLAY_NAME,         // 2
+    Calendars.OWNER_ACCOUNT                  // 3
+};
+  
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_ACCOUNT_NAME_INDEX = 1;
+private static final int PROJECTION_DISPLAY_NAME_INDEX = 2;
+private static final int PROJECTION_OWNER_ACCOUNT_INDEX = 3;</pre>
+  
+
+<div class="sidebox-wrapper"> <div class="sidebox"> <h3>為什麼一定要包含 ACCOUNT_TYPE?
+</h3> <p>如果您要針對 {@link
+android.provider.CalendarContract.Calendars#ACCOUNT_NAME
+Calendars.ACCOUNT_NAME} 進行查詢,也必須在選項中包含 
+{@link android.provider.CalendarContract.Calendars#ACCOUNT_TYPE Calendars.ACCOUNT_TYPE}。
+這是因為只有同時提供指定帳戶的 <code>ACCOUNT_NAME</code> 和
+<code>ACCOUNT_TYPE</code> 情況下,此帳戶才會視為唯一的。
+<code>ACCOUNT_TYPE</code> 是對應至帳戶驗證器的字串。帳戶使用
+{@link android.accounts.AccountManager} 註冊時,會使用此帳戶驗證器。
+沒有與裝置帳戶關聯的日曆也有一種特殊類型的帳戶,稱為 {@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL}。{@link
+android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} 帳戶不會進行同步。
+
+</p> </div> </div> 
+
+
+<p> 在範例的下一個部分,您將建構查詢。選項會指定查詢的條件。
+在此範例中,查詢會尋找日曆中有 <code>ACCOUNT_NAME</code> "sampleuser@google.com"、<code>ACCOUNT_TYPE</code> "com.google" 以及 <code>OWNER_ACCOUNT</code> "sampleuser@google.com" 的內容。
+
+
+
+如果您要查看使用者可以檢視的所有日曆,不是只查看使用者擁有的日曆,請略過 <code>OWNER_ACCOUNT</code>。此查詢會傳回 {@link android.database.Cursor} 物件。您可以使用此物件周遊資料庫查詢傳回的結果集。
+
+
+
+如需關於在內容供應程式中使用查詢的詳細討論,請參閱<a href="{@docRoot}guide/topics/providers/content-providers.html">內容供應程式</a>。
+</p>
+
+
+<pre>// Run query
+Cursor cur = null;
+ContentResolver cr = getContentResolver();
+Uri uri = Calendars.CONTENT_URI;   
+String selection = "((" + Calendars.ACCOUNT_NAME + " = ?) AND (" 
+                        + Calendars.ACCOUNT_TYPE + " = ?) AND ("
+                        + Calendars.OWNER_ACCOUNT + " = ?))";
+String[] selectionArgs = new String[] {"sampleuser@gmail.com", "com.google",
+        "sampleuser@gmail.com"}; 
+// Submit the query and get a Cursor object back. 
+cur = cr.query(uri, EVENT_PROJECTION, selection, selectionArgs, null);</pre>
+
+<p>下一節會使用游標逐步檢視結果集。它會使用範例一開始設定好的常數,傳回每個欄位的值。
+
+</p>
+    
+<pre>// Use the cursor to step through the returned records
+while (cur.moveToNext()) {
+    long calID = 0;
+    String displayName = null;
+    String accountName = null;
+    String ownerName = null;
+      
+    // Get the field values
+    calID = cur.getLong(PROJECTION_ID_INDEX);
+    displayName = cur.getString(PROJECTION_DISPLAY_NAME_INDEX);
+    accountName = cur.getString(PROJECTION_ACCOUNT_NAME_INDEX);
+    ownerName = cur.getString(PROJECTION_OWNER_ACCOUNT_INDEX);
+              
+    // Do something with the values...
+
+   ...
+}
+</pre>
+  
+<h3 id="modify-calendar">修改日曆</h3>
+
+<p>如要執行日曆的更新,您可以提供日曆的 {@link
+android.provider.BaseColumns#_ID},可以是 URI 的附加 ID 
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 或以第一個選擇項目方式提供。
+
+
+選項的開頭應該是 <code>&quot;_id=?&quot;</code>,而且第一個 
+<code>selectionArg</code> 應該是日曆的 {@link
+android.provider.BaseColumns#_ID}。
+您也可以透過將 ID 編碼在 URI 中,以執行更新。此範例會使用 
+({@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 方式變更日曆的顯示名稱:
+
+
+</p>
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long calID = 2;
+ContentValues values = new ContentValues();
+// The new display name for the calendar
+values.put(Calendars.CALENDAR_DISPLAY_NAME, &quot;Trevor's Calendar&quot;);
+Uri updateUri = ContentUris.withAppendedId(Calendars.CONTENT_URI, calID);
+int rows = getContentResolver().update(updateUri, values, null, null);
+Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);</pre>
+
+<h3 id="insert-calendar">插入日曆</h2>
+
+<p>日曆的設計主要是由同步配接器進行管理,因此您只能以同步配接器的方式插入新日曆。
+在大多數情況下,應用程式只能對日曆進行與外觀相關的變更,例如變更顯示名稱
+。如果應用程式需要建立本機日曆,請以同步配接器的方式插入日曆,方法是使用 {@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} 的 {@link android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE}。
+{@link android.provider.CalendarContract#ACCOUNT_TYPE_LOCAL} 是特殊的日曆帳戶類型,它沒有與裝置帳戶關聯。
+
+
+
+
+
+此類型的日曆不會同步至伺服器。如需關於同步配接器的相關討論,請參閱<a href="#sync-adapter">同步配接器</a>。
+</p>
+
+<h2 id="events">活動表格</h2>
+
+<p>{@link android.provider.CalendarContract.Events} 表格包含個人活動的詳細資訊。
+如要新增、更新或刪除活動,應用程式必須在<a href="#manifest">宣示說明檔案</a>中包括 {@link android.Manifest.permission#WRITE_CALENDAR}權限。
+
+</p>
+
+<p>下列「活動」欄可以讓應用程式和同步配接器寫入。
+如需關於支援欄位的完整清單,請參閱 {@link
+android.provider.CalendarContract.Events} 參照。</p>
+
+<table>
+  <tr>
+    <th>常數</th>
+    <th>描述</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#CALENDAR_ID}</td>
+    <td>活動所屬日曆的 {@link android.provider.BaseColumns#_ID}。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#ORGANIZER}</td>
+    <td>活動主辦人 (擁有者) 的電子郵件。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#TITLE}</td>
+    <td>活動的標題。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION}</td>
+    <td>舉辦活動的地點。 </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION}</td>
+    <td>活動的描述。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DTSTART}</td>
+    <td>活動開始的時間,以紀元元年 1 月 1 日零時起算經過的 UTC 毫秒數為單位。 </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DTEND}</td>
+    <td>活動結束的時間,以紀元元年 1 月 1 日零時起算經過的 UTC 毫秒數為單位。 </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}</td>
+    <td>活動的時區。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_END_TIMEZONE}</td>
+    <td>活動結束時間的時區。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DURATION}</td>
+    
+    <td>活動的持續期間,以 <a href="http://tools.ietf.org/html/rfc5545#section-3.8.2.5">RFC5545</a> 格式表示。例如,值 <code>&quot;PT1H&quot;</code> 表示活動持續一小時,而值 <code>&quot;P2W&quot;</code> 指出持續 2 週。
+
+
+ </td>
+
+
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#ALL_DAY}</td>
+    
+    <td>值 1 表示此活動需要整天,如同當地時區所定義。
+值 0 表示定期活動,會在一天中的任何時間開始和結束。
+</td>
+
+    
+  </tr>
+  
+  
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#RRULE}</td>
+    
+    <td>活動的週期規則。例如,<code>&quot;FREQ=WEEKLY;COUNT=10;WKST=SU&quot;</code>。
+您可以在<a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.3">這裡</a>查看更多範例。
+</td>
+    
+  </tr>
+  
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#RDATE}</td>
+    <td>活動重複發生的日期。您通常會將 {@link android.provider.CalendarContract.EventsColumns#RDATE} 和 {@link android.provider.CalendarContract.EventsColumns#RRULE} 一起使用,以定義週期性活動的彙總集合。
+
+
+
+如需更多討論,請參閱 <a href="http://tools.ietf.org/html/rfc5545#section-3.8.5.2">RFC5545 規格</a>。</td>
+</tr>
+ 
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY}</td>
+    
+    <td>活動要視為忙碌或有空 (可以安排其他活動) 的時間。
+ </td>
+    
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_MODIFY}</td>
+    <td>邀請對象是否可以修改活動。 </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_INVITE_OTHERS}</td>
+    <td>邀請對象是否可以邀請其他人。 </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#GUESTS_CAN_SEE_GUESTS}</td>
+    <td>邀請對象是否可以看到參與者清單。</td>
+  </tr>
+</table>
+
+<h3 id="add-event">新增活動</h3>
+
+<p>您的應用程式插入新活動時,我們建議您使用 
+{@link android.content.Intent#ACTION_INSERT INSERT} 意圖 (如同<a href="#intent-insert">使用意圖插入活動</a>所述)。不過,如果需要,您也可以直接插入活動。
+本節將描述如何執行此動作。
+</p>
+
+
+<p>以下是插入新活動的規則: </p>
+<ul>
+
+  <li>您必須包括 {@link
+android.provider.CalendarContract.EventsColumns#CALENDAR_ID} 和 {@link
+android.provider.CalendarContract.EventsColumns#DTSTART}。</li>
+
+<li>您必須包括 {@link
+android.provider.CalendarContract.EventsColumns#EVENT_TIMEZONE}。如要取得系統已安裝時區 ID 的清單,請使用 {@link
+java.util.TimeZone#getAvailableIDs()}。
+請注意,如果您是透過 {@link
+android.content.Intent#ACTION_INSERT INSERT} 意圖 (如同<a href="#intent-insert">使用意圖插入活動</a> &mdash; 所描述的案例) 插入活動,則不適用此規則,將會提供預設時區。
+
+</li>
+  
+  <li>對於非週期性活動,您必須包括 {@link
+android.provider.CalendarContract.EventsColumns#DTEND}。 </li>
+  
+  
+  <li>對於週期性活動,您必須包括 {@link
+android.provider.CalendarContract.EventsColumns#DURATION},以及 {@link
+android.provider.CalendarContract.EventsColumns#RRULE} 或 {@link
+android.provider.CalendarContract.EventsColumns#RDATE}。請注意,如果您是透過 {@link
+android.content.Intent#ACTION_INSERT INSERT} 意圖 (如同<a href="#intent-insert">使用意圖插入活動</a> &mdash; 所描述的案例) 插入活動,則不適用此規則。您可以使用 {@link
+android.provider.CalendarContract.EventsColumns#RRULE} 搭配 {@link android.provider.CalendarContract.EventsColumns#DTSTART} 和 {@link android.provider.CalendarContract.EventsColumns#DTEND},然後「日曆」應用程式就會自動將它轉換為一段持續時間。
+
+
+</li>
+  
+</ul>
+
+<p>以下是插入活動的範例。為了簡化,會在 UI 執行緒中執行此示範。
+實際運作時,插入和更新應該在非同步執行緒中完成,以便將動作移至背景執行緒。
+如需詳細資訊,請參閱 {@link android.content.AsyncQueryHandler}。
+</p>
+
+
+<pre>
+long calID = 3;
+long startMillis = 0; 
+long endMillis = 0;     
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2012, 9, 14, 7, 30);
+startMillis = beginTime.getTimeInMillis();
+Calendar endTime = Calendar.getInstance();
+endTime.set(2012, 9, 14, 8, 45);
+endMillis = endTime.getTimeInMillis();
+...
+
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Events.DTSTART, startMillis);
+values.put(Events.DTEND, endMillis);
+values.put(Events.TITLE, &quot;Jazzercise&quot;);
+values.put(Events.DESCRIPTION, &quot;Group workout&quot;);
+values.put(Events.CALENDAR_ID, calID);
+values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");
+Uri uri = cr.insert(Events.CONTENT_URI, values);
+
+// get the event ID that is the last element in the Uri
+long eventID = Long.parseLong(uri.getLastPathSegment());
+// 
+// ... do something with event ID
+//
+//</pre>
+
+<p class="note"><strong>注意:</strong>查看本範例如何在建立活動後擷取活動 ID。
+這是取得活動 ID 的最簡單方式。您經常需要活動 ID 來執行其他日曆操作 &mdash; 例如,在活動中新增參與者或提醒。
+
+</p>
+
+
+<h3 id="update-event">更新活動</h3>
+
+<p>您的應用程式允許使用者編輯活動時,我們建議您使用 {@link android.content.Intent#ACTION_EDIT EDIT} 意圖編輯活動 (如同<a href="#intent-edit">使用意圖插入活動</a>所述)。不過,如果需要,您也可以直接編輯活動。
+
+
+如要執行活動的更新,您要提供活動的 <code>_ID</code>,可以是 URI 的附加 ID ({@link
+android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()}) 或以第一個選擇項目方式提供。
+
+
+選項的開頭應該是 <code>&quot;_id=?&quot;</code>,而且第一個 
+<code>selectionArg</code> 應該是活動的 <code>_ID</code>。
+您也可以使用不含 ID 的選項進行更新。以下是更新活動的範例。
+
+它使用 
+{@link android.content.ContentUris#withAppendedId(android.net.Uri,long) withAppendedId()} 方式變更活動的標題:
+</p>
+
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long eventID = 188;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+Uri updateUri = null;
+// The new title for the event
+values.put(Events.TITLE, &quot;Kickboxing&quot;); 
+updateUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+int rows = getContentResolver().update(updateUri, values, null, null);
+Log.i(DEBUG_TAG, &quot;Rows updated: &quot; + rows);  </pre>
+
+<h3 id="delete-event">刪除活動</h3>
+
+<p>您可以透過活動 URI 的附加 ID {@link
+android.provider.BaseColumns#_ID} 或使用標準選擇方式來刪除活動。
+如果您使用附加 ID,就不能進行選擇。刪除有兩種方式:以應用程式和以同步配接器。
+應用程式刪除會將 <em>deleted</em> 欄設定為 1。
+此旗標會告訴同步配接器該列已刪除,而且此刪除應傳播到伺服器。
+
+同步配接器會從資料庫刪除活動及其相關的所有資料。
+以下是應用程式透過活動的 {@link android.provider.BaseColumns#_ID}刪除活動的範例:
+</p>
+
+
+<pre>private static final String DEBUG_TAG = "MyActivity";
+...
+long eventID = 201;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+Uri deleteUri = null;
+deleteUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+int rows = getContentResolver().delete(deleteUri, null, null);
+Log.i(DEBUG_TAG, &quot;Rows deleted: &quot; + rows);  
+</pre>
+
+<h2 id="attendees">參與者表格</h2>
+
+<p>{@link android.provider.CalendarContract.Attendees} 表格的每一列都代表活動的單一參與者或邀請對象。
+呼叫 
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} 會傳回指定 {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 活動的參與者清單。
+
+此 {@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 必須符合特定活動的 {@link
+android.provider.BaseColumns#_ID}。
+
+</p> 
+
+<p>下表列出可寫入的欄位。
+插入新的參與者時,您必須包括 <code>ATTENDEE_NAME</code> 以外的所有項目。
+
+</p>
+
+
+<table>
+  <tr>
+    <th>常數</th>
+    <th>描述</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID}</td>
+    <td>活動的 ID。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_NAME}</td>
+    <td>參與者的名稱。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_EMAIL}</td>
+    <td>參與者的電子郵件地址。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_RELATIONSHIP}</td>
+    <td><p>參與者與活動的關係。可以是以下其中一種:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_ATTENDEE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_NONE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_ORGANIZER}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_PERFORMER}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#RELATIONSHIP_SPEAKER}</li>
+    </ul>
+    </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_TYPE}</td>
+    <td><p>參與者的類型。可以是以下其中一種: </p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#TYPE_REQUIRED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#TYPE_OPTIONAL}</li>
+    </ul></td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS}</td>
+    <td><p>參與者的出席狀態。可以是以下其中一種:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_ACCEPTED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_DECLINED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_INVITED}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_NONE}</li>
+        <li>{@link android.provider.CalendarContract.AttendeesColumns#ATTENDEE_STATUS_TENTATIVE}</li>
+    </ul></td>
+  </tr>
+</table>
+
+<h3 id="add-attendees">新增參與者</h3>
+
+<p>以下是將單一參與者新增至活動的範例。請注意,
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 為必要的:
+</p>
+
+<pre>
+long eventID = 202;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Attendees.ATTENDEE_NAME, &quot;Trevor&quot;);
+values.put(Attendees.ATTENDEE_EMAIL, &quot;trevor@example.com&quot;);
+values.put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ATTENDEE);
+values.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_OPTIONAL);
+values.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_INVITED);
+values.put(Attendees.EVENT_ID, eventID);
+Uri uri = cr.insert(Attendees.CONTENT_URI, values);
+</pre>
+
+<h2 id="reminders">提醒表格</h2>
+
+<p>{@link android.provider.CalendarContract.Reminders} 表格的每一列都代表活動的單一提醒。
+呼叫 
+{@link android.provider.CalendarContract.Reminders#query(android.content.ContentResolver, long, java.lang.String[]) query()} 會傳回指定 
+{@link android.provider.CalendarContract.AttendeesColumns#EVENT_ID} 活動的提醒清單。
+</p>
+
+
+<p>下表列出提醒可寫入的欄位。插入新的提醒時,必須包括所有項目。
+請注意,同步配接器會在 {@link
+android.provider.CalendarContract.Calendars} 表格中指出同步配接器支援的提醒類型。
+如需詳細資料,請參閱 
+{@link android.provider.CalendarContract.CalendarColumns#ALLOWED_REMINDERS}。
+</p>
+
+
+<table>
+  <tr>
+    <th>常數</th>
+    <th>描述</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#EVENT_ID}</td>
+    <td>活動的 ID。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#MINUTES}</td>
+    <td>活動之前的幾分鐘要觸發提醒。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.RemindersColumns#METHOD}</td>
+    <td><p>鬧鐘方法 (如伺服器上所設定)。可以是以下其中一種:</p>
+      <ul>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_ALERT}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_DEFAULT}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_EMAIL}</li>
+        <li>{@link android.provider.CalendarContract.RemindersColumns#METHOD_SMS}</li>
+    </ul></td>
+  </tr>
+</table>
+
+<h3 id="add-reminders">新增提醒</h3>
+
+<p>此範例會在活動新增提醒。此提醒會在活動 15 分鐘之前觸發。
+</p>
+<pre>
+long eventID = 221;
+...
+ContentResolver cr = getContentResolver();
+ContentValues values = new ContentValues();
+values.put(Reminders.MINUTES, 15);
+values.put(Reminders.EVENT_ID, eventID);
+values.put(Reminders.METHOD, Reminders.METHOD_ALERT);
+Uri uri = cr.insert(Reminders.CONTENT_URI, values);</pre>
+
+<h2 id="instances">執行個體表格</h2>
+
+<p>
+{@link android.provider.CalendarContract.Instances} 表格內含活動每次發生的開始和結束時間。
+此表格的每一列代表單一活動發生。
+執行個體表格無法寫入,僅供查詢活動的發生。
+ </p>
+
+<p>下表列出您可以針對執行個體查詢的欄位。請注意,時區是由 
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_TYPE} 和 
+{@link android.provider.CalendarContract.CalendarCache#KEY_TIMEZONE_INSTANCES} 所定義。
+
+</p>
+
+
+<table>
+  <tr>
+    <th>常數</th>
+    <th>描述</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#BEGIN}</td>
+    <td>執行個體的開始時間,以 UTC 毫秒數為單位。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END}</td>
+    <td>執行個體的結束時間,以 UTC 毫秒數為單位。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END_DAY}</td>
+    
+    <td>執行個體的凱撒曆結束日,與「日曆」的時區相關。
+ 
+    
+</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#END_MINUTE}</td>
+    
+    <td>執行個體的結束分鐘,從「日曆」時區的午夜開始計算。
+</td>
+    
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#EVENT_ID}</td>
+    <td>此執行個體活動的 <code>_ID</code>。</td>
+  </tr>
+    <tr>
+    <td>{@link android.provider.CalendarContract.Instances#START_DAY}</td>
+    <td>執行個體的凱撒曆開始日,與「日曆」的時區相關。 
+ </td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.Instances#START_MINUTE}</td>
+    
+    <td>執行個體的開始分鐘,從午夜開始計算,與「日曆」的時區相關。
+ 
+</td>
+    
+  </tr>
+
+</table>
+
+<h3 id="query-instances">查詢執行個體表格</h3>
+
+<p>如要查詢「執行個體」表格,您需要在 URI 中指定查詢的範圍時間。在本範例中,{@link android.provider.CalendarContract.Instances} 是透過 {@link android.provider.CalendarContract.EventsColumns} 介面的實作,得以存取 {@link
+android.provider.CalendarContract.EventsColumns#TITLE} 欄位。
+
+
+換句話說,{@link
+android.provider.CalendarContract.EventsColumns#TITLE} 是透過資料庫視觀表所傳回,而不是透過查詢原始 {@link
+android.provider.CalendarContract.Instances} 表格。
+
+</p>
+
+<pre>
+private static final String DEBUG_TAG = "MyActivity";
+public static final String[] INSTANCE_PROJECTION = new String[] {
+    Instances.EVENT_ID,      // 0
+    Instances.BEGIN,         // 1
+    Instances.TITLE          // 2
+  };
+  
+// The indices for the projection array above.
+private static final int PROJECTION_ID_INDEX = 0;
+private static final int PROJECTION_BEGIN_INDEX = 1;
+private static final int PROJECTION_TITLE_INDEX = 2;
+...
+
+// Specify the date range you want to search for recurring
+// event instances
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2011, 9, 23, 8, 0);
+long startMillis = beginTime.getTimeInMillis();
+Calendar endTime = Calendar.getInstance();
+endTime.set(2011, 10, 24, 8, 0);
+long endMillis = endTime.getTimeInMillis();
+  
+Cursor cur = null;
+ContentResolver cr = getContentResolver();
+
+// The ID of the recurring event whose instances you are searching
+// for in the Instances table
+String selection = Instances.EVENT_ID + " = ?";
+String[] selectionArgs = new String[] {"207"};
+
+// Construct the query with the desired date range.
+Uri.Builder builder = Instances.CONTENT_URI.buildUpon();
+ContentUris.appendId(builder, startMillis);
+ContentUris.appendId(builder, endMillis);
+
+// Submit the query
+cur =  cr.query(builder.build(), 
+    INSTANCE_PROJECTION, 
+    selection, 
+    selectionArgs, 
+    null);
+   
+while (cur.moveToNext()) {
+    String title = null;
+    long eventID = 0;
+    long beginVal = 0;    
+    
+    // Get the field values
+    eventID = cur.getLong(PROJECTION_ID_INDEX);
+    beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
+    title = cur.getString(PROJECTION_TITLE_INDEX);
+              
+    // Do something with the values. 
+    Log.i(DEBUG_TAG, "Event:  " + title); 
+    Calendar calendar = Calendar.getInstance();
+    calendar.setTimeInMillis(beginVal);  
+    DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
+    Log.i(DEBUG_TAG, "Date: " + formatter.format(calendar.getTime()));    
+    }
+ }</pre>
+
+<h2 id="intents">日曆意圖</h2>
+<p>您的應用程式不需要<a href="#manifest">權限</a>,即可讀取和寫入日曆資料。您可以改用 Android「日曆」應用程式支援的意圖,將讀取和寫入操作交給您的應用程式。下表列出「日曆供應程式」支援的意圖:</p>
+<table>
+  <tr>
+    <th>動作</th>
+    <th>URI</th>
+
+    <th>描述</th>
+    <th>Extra</th>
+  </tr>
+  <tr>
+    <td><br>
+    {@link android.content.Intent#ACTION_VIEW VIEW} <br></td>
+    <td><p><code>content://com.android.calendar/time/&lt;ms_since_epoch&gt;</code></p>
+    您也可以使用 
+{@link android.provider.CalendarContract#CONTENT_URI CalendarContract.CONTENT_URI} 參照 URI。如需使用此意圖的範例,請參閱<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">使用意圖檢視日曆資料</a>。
+ 
+
+    </td>
+    <td>開啟日曆到 <code>&lt;ms_since_epoch&gt;</code> 指定的時間。</td>
+    <td>無。</td>
+  </tr>
+  <tr>
+    <td><p>{@link android.content.Intent#ACTION_VIEW VIEW} </p>
+
+     </td>
+    <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
+    
+    您也可以使用 
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} 參照 URI。如需使用此意圖的範例,請參閱<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-view">使用意圖檢視日曆資料</a>。
+
+    
+    </td>
+    <td>檢視 <code>&lt;event_id&gt;</code> 指定的活動。</td>
+
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}<br>
+      <br>
+      <br>
+    {@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}</td>
+  </tr>
+
+  <tr>
+    <td>{@link android.content.Intent#ACTION_EDIT EDIT} </td>
+    <td><p><code>content://com.android.calendar/events/&lt;event_id&gt;</code></p>
+    
+  您也可以使用 
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} 參照 URI。如需使用此意圖的範例,請參閱<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-edit">使用意圖編輯活動</a>。
+
+    
+    
+    </td>
+    <td>編輯 <code>&lt;event_id&gt;</code> 指定的活動。</td>
+
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME CalendarContract.EXTRA_EVENT_BEGIN_TIME}<br>
+      <br>
+      <br>
+    {@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME CalendarContract.EXTRA_EVENT_END_TIME}</td>
+  </tr>
+
+  <tr>
+    <td>{@link android.content.Intent#ACTION_EDIT EDIT} <br>
+    <br>
+    {@link android.content.Intent#ACTION_INSERT INSERT} </td>
+    <td><p><code>content://com.android.calendar/events</code></p>
+    
+   您也可以使用 
+{@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI} 參照 URI。如需使用此意圖的範例,請參閱<a href="{@docRoot}guide/topics/providers/calendar-provider.html#intent-insert">使用意圖插入活動</a>。
+
+    
+    </td>
+
+    <td>建立活動。</td>
+    <td>Extra 列於下表。</td>
+  </tr>
+</table>
+
+<p>下表列出「日曆供應程式」支援的意圖 Extra:
+</p>
+<table>
+  <tr>
+    <th>意圖 Extra</th>
+    <th>描述</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#TITLE Events.TITLE}</td>
+    <td>活動的名稱。</td>
+  </tr>
+  <tr>
+  
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
+CalendarContract.EXTRA_EVENT_BEGIN_TIME}</td>
+    <td>活動開始時間,以紀元元年 1 月 1 日零時起算經過的毫秒數為單位。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_END_TIME
+CalendarContract.EXTRA_EVENT_END_TIME}</td>
+    
+    <td>活動結束時間,以紀元元年 1 月 1 日零時起算經過的毫秒數為單位。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract#EXTRA_EVENT_ALL_DAY
+CalendarContract.EXTRA_EVENT_ALL_DAY}</td>
+    
+    <td>指出活動為整天的布林值。值可以是 
+<code>true</code> 或 <code>false</code>。</td> </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#EVENT_LOCATION
+Events.EVENT_LOCATION}</td>
+    
+    <td>活動的地點。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#DESCRIPTION
+Events.DESCRIPTION}</td>
+    
+    <td>活動描述。</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL}</td>
+    <td>邀請對象的電子郵件地址 (以逗號分隔的清單)。</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.provider.CalendarContract.EventsColumns#RRULE Events.RRULE}</td>
+    <td>活動的週期規則。</td>
+  </tr>
+  <tr>
+    <td>
+    {@link android.provider.CalendarContract.EventsColumns#ACCESS_LEVEL
+Events.ACCESS_LEVEL}</td>
+    
+    <td>活動為私人或公開性質。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.CalendarContract.EventsColumns#AVAILABILITY
+Events.AVAILABILITY}</td>
+    
+    <td>活動要視為忙碌或有空 (可以安排其他活動) 的時間。</td>
+    
+</table> 
+<p>以下各節說明如何使用這些意圖。</p>
+
+
+<h3 id="intent-insert">使用意圖插入活動</h3>
+
+<p>使用 {@link android.content.Intent#ACTION_INSERT INSERT} 意圖讓您的應用程式將活動插入工作交給「日曆」本身。使用此方式,您的應用程式就不需要將 {@link
+android.Manifest.permission#WRITE_CALENDAR} 權限包括在其<a href="#manifest">宣示說明檔案</a>中。
+
+</p>
+
+  
+<p>使用者執行採用此方式的應用程式時,此應用程式會將使用者
+傳送到「日曆」以完成新增活動的操作。{@link
+android.content.Intent#ACTION_INSERT INSERT} 意圖會使用額外的欄位將「日曆」中活動的詳細資訊,預先填入表單。
+然後,使用者可以取消活動、視需要編輯表單或將活動儲存到其日曆。
+
+</p>
+  
+
+
+<p>以下的程式碼片段會在 2012 年 1 月 19 日安排活動,此活動的期間是從上午 7:30 到上午 8:30。
+請注意下列關於此程式碼片段的事項:</p>
+
+<ul>
+  <li>它指定 {@link android.provider.CalendarContract.Events#CONTENT_URI Events.CONTENT_URI}  作為 URI。
+</li>
+  
+  <li>它使用 {@link
+android.provider.CalendarContract#EXTRA_EVENT_BEGIN_TIME
+CalendarContract.EXTRA_EVENT_BEGIN_TIME} 和 {@link
+android.provider.CalendarContract#EXTRA_EVENT_END_TIME
+CalendarContract.EXTRA_EVENT_END_TIME} 額外欄位,將活動的時間預先填入表單。
+這些時間值必須以自紀元元年 1 月 1 日零時起算經過的 UTC 毫秒數為單位。
+</li>
+  
+  <li>它使用 {@link android.content.Intent#EXTRA_EMAIL Intent.EXTRA_EMAIL} 額外欄位提供逗號分隔的受邀者清單 (以電子郵件地址指定)。
+</li>
+  
+</ul>
+<pre>
+Calendar beginTime = Calendar.getInstance();
+beginTime.set(2012, 0, 19, 7, 30);
+Calendar endTime = Calendar.getInstance();
+endTime.set(2012, 0, 19, 8, 30);
+Intent intent = new Intent(Intent.ACTION_INSERT)
+        .setData(Events.CONTENT_URI)
+        .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())
+        .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis())
+        .putExtra(Events.TITLE, &quot;Yoga&quot;)
+        .putExtra(Events.DESCRIPTION, &quot;Group class&quot;)
+        .putExtra(Events.EVENT_LOCATION, &quot;The gym&quot;)
+        .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY)
+        .putExtra(Intent.EXTRA_EMAIL, &quot;rowan@example.com,trevor@example.com&quot;);
+startActivity(intent);
+</pre>
+
+<h3 id="intent-edit">使用意圖編輯活動</h3>
+
+<p>您可以直接更新活動,如同<a href="#update-event">更新活動</a>所述。不過,使用 {@link
+android.content.Intent#ACTION_EDIT EDIT} 意圖可以讓不具備權限的應用程式將活動編輯操作交給「日曆」應用程式。使用者在「日曆」中完成活動的編輯操作時,使用者就會回到原來的應用程式。
+
+
+</p> <p>以下的意圖範例會為指定的活動設定名稱,然後讓使用者在「日曆」中編輯此活動。
+</p>
+
+
+<pre>long eventID = 208;
+Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+Intent intent = new Intent(Intent.ACTION_EDIT)
+    .setData(uri)
+    .putExtra(Events.TITLE, &quot;My New Title&quot;);
+startActivity(intent);</pre>
+
+<h3 id="intent-view">使用意圖檢視日曆資料</h3>
+<p>「日曆供應程式」提供兩種不同的方式來使用 {@link android.content.Intent#ACTION_VIEW VIEW} 意圖:</p>
+<ul>
+  <li>開啟「日曆」到特定的日期。</li>
+  <li>檢視某個活動。</li>
+
+</ul>
+<p>以下的範例顯示如何開啟「日曆」到特定的日期:</p>
+<pre>// A date-time specified in milliseconds since the epoch.
+long startMillis;
+...
+Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
+builder.appendPath(&quot;time&quot;);
+ContentUris.appendId(builder, startMillis);
+Intent intent = new Intent(Intent.ACTION_VIEW)
+    .setData(builder.build());
+startActivity(intent);</pre>
+
+<p>以下的範例顯示如何開啟某個活動以便檢視。</p>
+<pre>long eventID = 208;
+...
+Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
+Intent intent = new Intent(Intent.ACTION_VIEW)
+   .setData(uri);
+startActivity(intent);
+</pre>
+
+
+<h2 id="sync-adapter">同步配接器</h2>
+
+
+<p>應用程式和同步配接器存取「日曆供應程式」的方式只有些微差異:
+</p>
+
+<ul>
+  <li>同步配接器需要透過將 {@link android.provider.CalendarContract#CALLER_IS_SYNCADAPTER} 設定為 <code>true</code>,以指出這是同步配接器。</li>
+  
+  
+  <li>同步配接器需要在 URI 中提供 {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_NAME} 和 {@link
+android.provider.CalendarContract.SyncColumns#ACCOUNT_TYPE} 作為查詢參數。 </li>
+  
+  <li>同步配接器與應用程式或小工具相比,有更多欄的寫入權限。
+  例如,應用程式只能修改日曆的一些特性,例如名稱、顯示名稱、能見度設定,以及日曆是否同步。
+
+相較之下,同步配接器不只能存取這些欄,還可以存取很多其他欄,例如日曆色彩、時區、存取級別、位置等等。然而,同步配接器受限於所指定的 <code>ACCOUNT_NAME</code> 和 
+<code>ACCOUNT_TYPE</code>。
+
+</li> </ul>
+
+<p>以下是您可用於傳回 URI 的協助程式方法,以便與同步配接器搭配使用:</p>
+<pre> static Uri asSyncAdapter(Uri uri, String account, String accountType) {
+    return uri.buildUpon()
+        .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,&quot;true&quot;)
+        .appendQueryParameter(Calendars.ACCOUNT_NAME, account)
+        .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
+ }
+</pre>
+<p>如需實作同步配接器的範例 (並非與「日曆」特別相關),請參閱 
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a>。
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/providers/contacts-provider.jd b/docs/html-intl/intl/zh-tw/guide/topics/providers/contacts-provider.jd
new file mode 100644
index 0000000..b5f8880
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/providers/contacts-provider.jd
@@ -0,0 +1,2356 @@
+page.title=聯絡人供應程式
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<h2>快速檢視</h2>
+<ul>
+    <li>Android 關於人員資訊的存放庫。</li>
+    <li>
+        與網頁同步。
+    </li>
+    <li>
+        整合社交串流資料。
+    </li>
+</ul>
+<h2>本文件內容</h2>
+<ol>
+    <li>
+        <a href="#InformationTypes">聯絡人供應程式組織架構</a>
+    </li>
+    <li>
+        <a href="#RawContactBasics">原始聯絡人</a>
+    </li>
+    <li>
+        <a href="#DataBasics">資料</a>
+    </li>
+    <li>
+        <a href="#ContactBasics">聯絡人</a>
+    </li>
+    <li>
+        <a href="#Sources">來自同步配接器的資料</a>
+    </li>
+    <li>
+        <a href="#Permissions">必要權限</a>
+    </li>
+    <li>
+        <a href="#UserProfile">使用者設定檔</a>
+    </li>
+    <li>
+        <a href="#ContactsProviderMetadata">聯絡人供應程式中繼資料</a>
+    </li>
+    <li>
+        <a href="#Access">聯絡人供應程式存取</a>
+    <li>
+    </li>
+    <li>
+        <a href="#SyncAdapters">聯絡人供應程式同步配接器</a>
+    </li>
+    <li>
+        <a href="#SocialStream">社交串流資料</a>
+    </li>
+    <li>
+        <a href="#AdditionalFeatures">其他聯絡人供應程式功能</a>
+    </li>
+</ol>
+<h2>重要類別</h2>
+<ol>
+    <li>{@link android.provider.ContactsContract.Contacts}</li>
+    <li>{@link android.provider.ContactsContract.RawContacts}</li>
+    <li>{@link android.provider.ContactsContract.Data}</li>
+    <li>{@code android.provider.ContactsContract.StreamItems}</li>
+</ol>
+<h2>相關範例</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}resources/samples/ContactManager/index.html">聯絡人管理員
+</a>
+
+    </li>
+    <li>
+        <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">
+範例同步配接器</a>
+    </li>
+</ol>
+<h2>另請參閱</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        內容供應程式基本概念
+        </a>
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    聯絡人供應程式是強大且有彈性的 Android 元件,負責管理裝置上與人員相關的中央資料存放庫。
+聯絡人供應程式是裝置中聯絡人應用程式的資料來源,您也可以在自己的應用程式中存取其資料,並且在裝置和線上服務之間傳輸資料。
+
+供應程式內含範圍寬廣的資料來源,而且嘗試管理每個人愈來愈多的資料,組織架構因而變得很複雜。
+
+基於這個原因,供應程式的 API 包括豐富的合約類別和介面,可幫助資料的擷取和修改。
+
+
+</p>
+<p>
+    本指南描述以下各項:
+</p>
+    <ul>
+        <li>
+            基本的供應程式結構。
+        </li>
+        <li>
+            如何從供應程式擷取資料。
+        </li>
+        <li>
+            如何修改供應程式中的資料。
+        </li>
+        <li>
+            如何針對從伺服器到聯絡人供應程式的資料同步編寫同步配接器。
+
+        </li>
+    </ul>
+<p>
+    本指南假設您瞭解 Android 內容供應程式基本概念。如要更瞭解 Android 內容供應程式的詳細資訊,請閱讀<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">內容供應程式基本概念</a>指南。
+
+
+<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">範例同步配接器</a>範例應用程式是使用同步配接器在聯絡人供應程式和 Google 網路服務代管的範例應用程式之間傳輸資料的例子。
+
+
+
+</p>
+<h2 id="InformationTypes">聯絡人供應程式組織架構</h2>
+<p>
+    聯絡人供應程式是 Android 內容供應程式元件。負責維護三種與人有關的資料類型,每一種類型都會對應到供應程式所提供的表格,如圖 1 所示:
+
+
+</p>
+<img src="{@docRoot}images/providers/contacts_structure.png" alt="" height="364" id="figure1" />
+<p class="img-caption">
+  <strong>圖 1.</strong>聯絡人供應程式表格結構。
+</p>
+<p>
+    這三個表格通常會以其合約類別的名稱來稱呼。類別會定義內容 URI 的常數、欄名稱以及表格所使用的欄值:
+
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.Contacts} 表格
+    </dt>
+    <dd>
+        根據原始聯絡人列的彙總,代表不同人員的列。
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.RawContacts} 表格
+    </dt>
+    <dd>
+        內含人員資料摘要的列,針對使用者帳戶和類型。
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.Data} 表格
+    </dt>
+    <dd>
+        內含原始聯絡人詳細資料的列,例如電子郵件地址或電話號碼。
+    </dd>
+</dl>
+<p>
+    合約類別在 {@link android.provider.ContactsContract} 中呈現的其他表格都是輔助表格。聯絡人供應程式使用輔助表格來管理其操作,或支援裝置中聯絡人或電話應用程式的特定功能。
+
+
+</p>
+<h2 id="RawContactBasics">原始聯絡人</h2>
+<p>
+    原始聯絡人是來自單一帳戶類型和帳戶名稱的人員資料。
+因為聯絡人供應程式允許一個人有多種線上服務做為資料來源,所以聯絡人供應程式可以讓同一個人有多個原始聯絡人。
+
+    多個原始聯絡人也可以讓使用者,將相同帳戶類型中多個帳戶的人員資料合併。
+
+</p>
+<p>
+    原始聯絡人的大部分資料不是儲存在
+{@link android.provider.ContactsContract.RawContacts} 表格,而是儲存在 {@link android.provider.ContactsContract.Data} 表格中的一或多個列。
+每個資料列都有一欄
+{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID Data.RAW_CONTACT_ID},當中包含其上層資料列 {@link android.provider.ContactsContract.RawContacts} 的 {@code android.provider.BaseColumns#_ID RawContacts._ID} 值。
+
+
+</p>
+<h3 id="RawContactsColumns">重要的原始聯絡人欄</h3>
+<p>
+    {@link android.provider.ContactsContract.RawContacts} 表格中的重要欄列於表 1。
+請詳閱表格下方的注意事項:
+</p>
+<p class="table-caption" id="table1">
+    <strong>表 1.</strong>重要的原始聯絡人欄。
+</p>
+<table>
+    <tr>
+        <th scope="col">欄名稱</th>
+        <th scope="col">用途</th>
+        <th scope="col">備註</th>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_NAME}
+        </td>
+        <td>
+            帳戶類型 (此原始聯絡人的來源) 的帳戶名稱。
+            例如,Google 帳戶的帳戶名稱是裝置擁有者的其中一個 Gmail 地址。
+請參閱下一個項目,進一步瞭解
+ {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}。
+
+        </td>
+        <td>
+            不同的帳戶類型的名稱格式各不相同。帳戶名稱不一定是電子郵件地址。
+
+        </td>
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.SyncColumns#ACCOUNT_TYPE}
+        </td>
+        <td>
+            帳戶類型是此原始聯絡人的來源。例如,Google 帳戶的帳戶類型為 <code>com.google</code>。
+一定要將帳戶類型加上您所擁有或控制網域的網域識別碼。
+這樣可以確認您的帳戶類型是唯一的。
+
+        </td>
+        <td>
+            提供聯絡人資料的帳戶類型通常有關聯的同步配接器,可以與聯絡人供應程式同步。
+
+    </tr>
+    <tr>
+        <td>
+            {@link android.provider.ContactsContract.RawContactsColumns#DELETED}
+        </td>
+        <td>
+            原始聯絡人的「已刪除」旗標。
+        </td>
+        <td>
+            此旗標讓聯絡人供應程式可以在內部維護列,直到同步配接器從其伺服器刪除該列,最後從存放庫刪除該列。
+
+
+        </td>
+    </tr>
+</table>
+<h4>備註</h4>
+<p>
+    以下是有關
+ {@link android.provider.ContactsContract.RawContacts} 表格的注意事項:
+</p>
+<ul>
+    <li>
+        原始聯絡人的名稱不是儲存於本身在
+{@link android.provider.ContactsContract.RawContacts} 的列,而是儲存在 {@link android.provider.ContactsContract.Data} 表格的
+ {@link android.provider.ContactsContract.CommonDataKinds.StructuredName} 列中。
+原始聯絡人在 {@link android.provider.ContactsContract.Data} 表格中只有一列這種類型。
+
+    </li>
+    <li>
+        <strong>注意:</strong>如要使用您在原始聯絡人列中自己的帳戶資料,必須先向 {@link android.accounts.AccountManager} 註冊。
+如要註冊,請提示使用者將帳戶類型及其帳戶名稱新增至帳戶清單。
+如果沒有這麼做,聯絡人供應程式將自動刪除您的原始聯絡人列。
+
+        <p>
+            例如,如果您希望應用程式維護網域為 {@code com.example.dataservice} 網頁式服務的聯絡人資料,此服務的使用者帳戶是 {@code becky.sharp@dataservice.example.com},這名使用者必須先新增帳戶「類型」({@code com.example.dataservice}) 和帳戶「名稱」
+({@code becky.smart@dataservice.example.com}),您的應用程式才能新增原始聯絡人列。
+
+
+
+            您可以在文件中向使用者說明此需求,或提示使用者同時新增類型和名稱。
+帳戶類型和帳戶名稱在下一節有更詳細的說明。
+
+    </li>
+</ul>
+<h3 id="RawContactsExample">原始聯絡人資料的來源</h3>
+<p>
+    如要瞭解原始聯絡人的運作方式,假設一位使用者 Emily Dickinson 在其裝置上定義了下列三個使用者帳戶:
+
+</p>
+<ul>
+    <li><code>emily.dickinson@gmail.com</code></li>
+    <li><code>emilyd@gmail.com</code></li>
+    <li>Twitter 帳戶「belle_of_amherst」</li>
+</ul>
+<p>
+    此使用者在「帳戶」<em></em>設定中為這三個帳戶啟用了「同步聯絡人」<em></em>。
+
+</p>
+<p>
+    假設 Emily Dickinson 開啟瀏覽器視窗,使用
+ <code>emily.dickinson@gmail.com</code>登入 Gmail,開啟[聯絡人] 並新增「Thomas Higginson」。
+接著,她使用
+ <code>emilyd@gmail.com</code>登入 Gmail,並寄送電子郵件給「Thomas Higginson」(系統已自動將他新增為聯絡人)。
+她也在 Twitter 上關注「colonel_tom」(Thomas Higginson 的 Twitter ID)。
+
+</p>
+<p>
+    聯絡人供應程式建立三個原始聯絡人的方式如下:
+</p>
+<ol>
+    <li>
+        「Thomas Higginson」的原始聯絡人與 <code>emily.dickinson@gmail.com</code> 相關聯。
+        該使用者帳戶類型為 Google。
+    </li>
+    <li>
+        「Thomas Higginson」的第二個原始聯絡人與 <code>emilyd@gmail.com</code> 相關聯。
+        該使用者帳戶類型也是 Google。儘管第二個原始聯絡人的名稱與前一個名稱完全相同,但此人是針對不同使用者帳戶所新增的。
+
+
+    </li>
+    <li>
+        「Thomas Higginson」的第三個原始聯絡人與「belle_of_amherst」相關聯。該使用者帳戶類型是 Twitter。
+
+    </li>
+</ol>
+<h2 id="DataBasics">資料</h2>
+<p>
+    如前所述,原始聯絡人的資料是儲存在
+ {@link android.provider.ContactsContract.Data} 列,而此列會連結到原始聯絡人的
+ <code>_ID</code> 值。這樣讓原始聯絡人的相同資料類型可以有多個執行個體,例如電子郵件地址或電話號碼。
+例如,如果{@code emilyd@gmail.com} 的 "Thomas Higginson" (Thomas Higginson 的原始聯絡人列,與 Google 帳戶 <code>emilyd@gmail.com</code> 關聯) 的住家電子郵件地址為
+ <code>thigg@gmail.com</code>,而工作電子郵件地址為
+ <code>thomas.higginson@gmail.com</code>,則聯絡人供應程式會儲存這兩個電子郵件地址列,並將兩者連結到原始聯絡人。
+
+
+
+</p>
+<p>
+    請注意,此單一表格中儲存了不同類型的資料。{@link android.provider.ContactsContract.Data} 表格中可以看到顯示名稱、電話號碼、電子郵件、郵寄地址、相片以及網站詳細資料等列。
+
+為了協助管理這些內容,
+{@link android.provider.ContactsContract.Data} 表格有一些欄附有描述性名稱,而其他欄則有一般名稱。
+描述性名稱欄的內容有相同的意義 (無論列中的資料類型為何),而一般名稱欄的內容則視資料的類型會有不同的意義。
+
+
+</p>
+<h3 id="DescriptiveColumns">描述性欄名稱</h3>
+<p>
+    以下提供幾個描述性欄名稱範例:
+</p>
+<dl>
+    <dt>
+        {@link android.provider.ContactsContract.Data#RAW_CONTACT_ID}
+    </dt>
+    <dd>
+        原始聯絡人 <code>_ID</code> 欄的資料值。
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.Data#MIMETYPE}
+    </dt>
+    <dd>
+        儲存在此列中的資料類型,以自訂 MIME 類型表示。聯絡人供應程式會使用
+ {@link android.provider.ContactsContract.CommonDataKinds} 子類別中定義的MIME 類型。
+這些 MIME 類型屬開放原始碼,可以和聯絡人供應程式搭配的任何應用程式或同步配接器都可以加以使用。
+
+    </dd>
+    <dt>
+        {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY}
+    </dt>
+    <dd>
+        如果原始聯絡人的此類型資料列出現多次,則
+ {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} 欄會在包含主要資料類型的資料列加上旗標。
+例如,使用者長按聯絡人的電話號碼並選取 [設為預設值]<strong></strong>,則包含該號碼的 {@link android.provider.ContactsContract.Data} 列就會將它的 {@link android.provider.ContactsContract.DataColumns#IS_PRIMARY} 欄設為零以外的值。
+
+
+
+
+    </dd>
+</dl>
+<h3 id="GenericColumns">一般欄名稱</h3>
+<p>
+    一般欄有 15 個 (名稱為 <code>DATA1</code> 到
+ <code>DATA15</code>),系統通常會提供這些欄。另外有 4 個一般欄(<code>SYNC1</code> 到 <code>SYNC4</code>) 只能透過同步配接器使用。
+
+不管列中的資料類型為何,一定可以使用一般欄名稱常數。
+
+</p>
+<p>
+    <code>DATA1</code> 欄會建立索引。聯絡人供應程式一律會使用此欄的資料,而且供應程式預期此欄為最常查詢的目標。
+例如,在電子郵件列中,此欄內含實際的電子郵件地址。
+
+</p>
+<p>
+    一般來說,<code>DATA15</code> 欄會保留用於儲存「二進位大型物件」(BLOB) 資料,例如相片縮圖。
+
+</p>
+<h3 id="TypeSpecificNames">類型特定的欄名稱</h3>
+<p>
+    為了要協助欄處理具有特定類型的列,聯絡人供應程式也提供類型特定的欄名稱常數。這些常數會在
+ {@link android.provider.ContactsContract.CommonDataKinds}的子類別中定義。
+常數只是為相同欄名稱指定不同的常數名稱,以協助您存取列中特定類型的資料。
+
+
+</p>
+<p>
+    例如,{@link android.provider.ContactsContract.CommonDataKinds.Email} 類別定義了 {@link android.provider.ContactsContract.Data} 列的類型特定欄名稱常數。此列內含 MIME 類型 {@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
+Email.CONTENT_ITEM_TYPE}。
+
+
+類別含有電子郵件地址欄的常數
+ {@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS}。
+
+ {@link android.provider.ContactsContract.CommonDataKinds.Email#ADDRESS}的實際值是「data1」。此值與欄的一般名稱相同。
+
+</p>
+<p class="caution">
+    <strong>注意:</strong>如果
+ {@link android.provider.ContactsContract.Data} 表格使用供應程式預先定義 MIME 類型的其中一種,請不要將您自訂的資料新增至此表格。
+假如將您自訂的資料新增至此表格,可能會遺失資料或讓供應程式發生故障。
+例如,您不應該將含有 MIME 類型 {@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_ITEM_TYPE
+Email.CONTENT_ITEM_TYPE} (內含使用者名稱,而不是電子郵件地址) 的列新增至 <code>DATA1</code> 欄。
+
+如果您的列使用自訂 MIME 類型,那麼您可以自行定義專屬的類型特定的欄名稱,並按照您的需求使用這些欄。
+
+</p>
+<p>
+    圖 2 顯示描述性欄和資料欄顯示在
+ {@link android.provider.ContactsContract.Data} 列的樣式,以及類型特定欄名稱與一般欄名稱的「重疊」方式。
+
+</p>
+<img src="{@docRoot}images/providers/data_columns.png" alt="How type-specific column names map to generic column names" height="311" id="figure2" />
+<p class="img-caption">
+  <strong>圖 2.</strong>特定類型欄名稱與一般欄名稱。
+</p>
+<h3 id="ColumnMaps">特定類型欄名稱類別</h3>
+<p>
+    表 2 列出最常用的特定類型欄名稱類別:
+</p>
+<p class="table-caption" id="table2">
+  <strong>表 2.</strong>特定類型欄名稱類別</p>
+<table>
+  <tr>
+    <th scope="col">對應類別</th>
+    <th scope="col">資料類型</th>
+    <th scope="col">備註</th>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredName}</td>
+    <td>原始聯絡人 (與此資料列相關聯) 的名稱資料。</td>
+    <td>原始聯絡人只有一列此資料。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Photo}</td>
+    <td>原始聯絡人 (與此資料列相關聯) 的主要相片。</td>
+    <td>原始聯絡人只有一列此資料。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.Email}</td>
+    <td>原始聯絡人 (與此資料列相關聯) 的電子郵件地址。</td>
+    <td>原始聯絡人可以有多個電子郵件地址。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal}</td>
+    <td>原始聯絡人 (與此資料列相關聯) 的郵寄地址。</td>
+    <td>原始聯絡人可以有多個郵寄地址。</td>
+  </tr>
+  <tr>
+    <td>{@link android.provider.ContactsContract.CommonDataKinds.GroupMembership}</td>
+    <td>將原始聯絡人連結至聯絡人供應程式內其中一個群組的識別碼。</td>
+    <td>
+        群組是帳戶類型和帳戶名稱的選用功能。如要進一步瞭解群組,請參閱<a href="#Groups">聯絡人群組</a>。
+
+    </td>
+  </tr>
+</table>
+<h3 id="ContactBasics">聯絡人</h3>
+<p>
+    聯絡人供應程式會合併所有帳戶類型和帳戶名稱的原始聯絡人,而成為「聯絡人」<strong></strong>。
+藉此協助使用者顯示及修改針對某個人所收集的所有資料。
+聯絡人供應程式負責建立新的聯絡人列,以及彙總原始聯絡人與現有的聯絡人列。
+應用程式或同步配接器都可以新增聯絡人,而聯絡人列中的某些欄屬於唯讀性質。
+
+</p>
+<p class="note">
+    <strong>注意:</strong>如果您嘗試使用
+ {@link android.content.ContentResolver#insert(Uri,ContentValues) insert()} 將聯絡人新增至聯絡人供應程式,將會收到 {@link java.lang.UnsupportedOperationException} 例外狀況。
+如果您試著更新列為「唯讀」的欄,則會略過此更新作業。
+
+</p>
+<p>
+    如果新增的原始聯絡人與現有的聯絡人都不相符,聯絡人供應程式就會建立新的聯絡人。
+如果現有原始聯絡人的資料在變更後,不再與之前附加的聯絡人相符,則供應程式也會建立新的聯絡人。
+
+如果應用程式或同步配接器建立的新原始聯絡人「符合」<em></em>現有的聯絡人,則新的原始聯絡人會彙總為現有的聯絡人。
+
+
+</p>
+<p>
+    聯絡人供應程式使用 {@link android.provider.ContactsContract.Contacts Contacts} 表格中的聯絡人
+ <code>_ID</code> 欄,將聯絡人列連結到其原始聯絡人列。
+原始聯絡人表格
+ {@link android.provider.ContactsContract.RawContacts} 的 <code>CONTACT_ID</code> 欄,內含聯絡人列 (與每個原始聯絡人列相關聯) 的 <code>_ID</code> 值。
+
+</p>
+<p>
+    {@link android.provider.ContactsContract.Contacts} 表格也有
+{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} 欄,此為聯絡人列的「永久」連結。
+因為聯絡人供應程式會自動維護聯絡人,它會變更聯絡人列的 {@code android.provider.BaseColumns#_ID} 值,以回應彙總或同步操作。
+
+即使發生這種情況,與聯絡人的
+{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} 合併的內容 URI {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI} 仍會指向聯絡人列,因此,您可以使用
+{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY}
+ 來維護「常用聯絡人」等聯絡人的連結。
+
+此欄有自己的格式,與 {@code android.provider.BaseColumns#_ID} 欄的格式無關。
+
+</p>
+<p>
+    圖 3 說明這三個主要表格彼此之間的關係。
+</p>
+<img src="{@docRoot}images/providers/contacts_tables.png" alt="Contacts provider main tables" height="514" id="figure4" />
+<p class="img-caption">
+  <strong>圖 3.</strong>聯絡人、原始聯絡人以及詳細資料表格的關係。
+</p>
+<h2 id="Sources">來自同步配接器的資料</h2>
+<p>
+    使用者將聯絡人資料直接輸入裝置,但資料也會過「同步配接器」從網路服務流入聯絡人供應程式<strong></strong> (同步配接器會自動將資料在裝置和服務之間傳輸)。
+
+同步配接器受到系統的控制、在背景執行,並且會呼叫 {@link android.content.ContentResolver} 方法來管理資料。
+
+
+</p>
+<p>
+    在 Android 中,與同步配接器搭配運作的網路服務,是透過帳戶類型加以識別。
+    每個同步配接器會與一種帳戶類型搭配,但可以支援該類型的多個帳戶名稱。
+帳戶類型和帳戶名稱在<a href="#RawContactsExample">原始聯絡人資料的來源</a>中會有更詳細的說明。
+ 下列定義提供更詳細的資訊,說明帳戶類型和名稱與同步配接器和服務之間的關係。
+
+</p>
+<dl>
+    <dt>
+        帳戶類型
+    </dt>
+    <dd>
+        識別使用者儲存資料的服務。在大部分情況下,使用者必須經過服務的驗證。
+例如,Google 聯絡人是一種帳戶類型,由程式碼 <code>google.com</code> 加以識別。
+此值會對應到
+ {@link android.accounts.AccountManager} 所使用的帳戶類型。
+    </dd>
+    <dt>
+        帳戶名稱
+    </dt>
+    <dd>
+        識別特定帳戶或帳戶類型的登入。Google 聯絡人帳戶與 Google 帳戶相同,都是使用電子郵件地址做為帳戶名稱。
+
+        其他服務可能是以單一文字使用者名稱或數值 ID 做為帳戶名稱。
+    </dd>
+</dl>
+<p>
+    帳戶類型不必是唯一的。使用者可以設定多個 Google 聯絡人帳戶,並將其資料下載至聯絡人供應程式;如果使用者有一組個人帳戶名稱的個人聯絡人,還有另一組工作用的聯絡人,就可能發生此情形。
+
+帳戶名稱通常是唯一的。
+兩者加起來,就可以識別聯絡人供應程式和外部服務之間的特定資料流程。
+
+</p>
+<p>
+    如果您要將服務的資料傳輸到聯絡人供應程式,則需要編寫您自己的同步配接器。
+如要進一步瞭解同步配接器,請參閱<a href="#SyncAdapters">聯絡人供應程式同步配接器</a>。
+
+</p>
+<p>
+    圖 4 顯示聯絡人供應程式在人員相關的資料流程中所扮演的角色。
+在標記為「同步配接器」的方塊中,每個配接器都以其帳戶類型做為標籤。
+</p>
+<img src="{@docRoot}images/providers/ContactsDataFlow.png" alt="Flow of data about people" height="252" id="figure5" />
+<p class="img-caption">
+  <strong>圖 4.</strong>聯絡人供應程式資料流程。
+</p>
+<h2 id="Permissions">必要權限</h2>
+<p>
+    要存取聯絡人供應程式的應用程式必須要求下列權限:
+
+</p>
+<dl>
+    <dt>一或多份表格的讀取權限</dt>
+    <dd>
+        {@link android.Manifest.permission#READ_CONTACTS},在
+ <code>AndroidManifest.xml</code> 的
+ <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code> 元素中,以
+ <code>&lt;uses-permission android:name="android.permission.READ_CONTACTS"&gt;</code> 指定。
+    </dd>
+    <dt>一或多份表格的寫入權限</dt>
+    <dd>
+        {@link android.Manifest.permission#WRITE_CONTACTS},在
+<code>AndroidManifest.xml</code> 的
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">
+        &lt;uses-permission&gt;</a></code> 元素中,以
+<code>&lt;uses-permission android:name="android.permission.WRITE_CONTACTS"&gt;</code> 指定。
+    </dd>
+</dl>
+<p>
+    這些權限不會延伸到使用者設定檔資料。如要瞭解使用者設定檔及其必要權限,請參閱<a href="#UserProfile">使用者設定檔</a>。
+
+
+</p>
+<p>
+    請記住,使用者的聯絡人資料是個人的敏感資訊。使用者很關心隱私權相關的問題,因此不希望應用程式收集使用者本身或其聯絡人的相關資訊。
+
+    如果沒有明確說明為何需要存取使用者的聯絡人資料,使用者可能會給您的應用程式低評分,或直接拒絕安裝。
+
+</p>
+<h2 id="UserProfile">使用者設定檔</h2>
+<p>
+    {@link android.provider.ContactsContract.Contacts} 表格中有一列內含裝置使用者的設定檔資料,
+此資料描述裝置的 <code>user</code>,而不是其中一位使用者的聯絡人。
+針對使用設定檔的每個系統,設定檔聯絡人列會連結到原始聯絡人列。
+
+    每個設定檔原始聯絡人列可以有多個資料列。{@link android.provider.ContactsContract.Profile} 類別中提供存取使用者設定檔的常數。
+
+</p>
+<p>
+    存取使用者設定檔需要特殊權限。除了
+{@link android.Manifest.permission#READ_CONTACTS} 和
+{@link android.Manifest.permission#WRITE_CONTACTS} 的讀取和寫入權限以外,存取使用者設定檔還分別需要 {@code android.Manifest.permission#READ_PROFILE} 讀取權限和
+{@code android.Manifest.permission#WRITE_PROFILE} 寫入權限。
+
+
+</p>
+<p>
+    請務必將使用者的設定檔視為敏感資訊。
+{@code android.Manifest.permission#READ_PROFILE}權限可以讓您存取裝置上使用者的身分識別資料。
+請務必在應用程式的簡介中告訴使用者,為何需要使用者設定檔存取權限。
+
+</p>
+<p>
+    如要擷取內含使用者的設定檔的聯絡人列,請呼叫 {@link android.content.ContentResolver#query(Uri,String[], String, String[], String)
+ContentResolver.query()}。
+將內容 URI 設為 
+{@link android.provider.ContactsContract.Profile#CONTENT_URI},並且不要提供任何選取條件。
+您也可以使用此內容 URI 做為擷取原始聯絡人或設定檔資料的基礎 URI。
+例如,以下程式碼片段會擷取設定檔資料:
+</p>
+<pre>
+// Sets the columns to retrieve for the user profile
+mProjection = new String[]
+    {
+        Profile._ID,
+        Profile.DISPLAY_NAME_PRIMARY,
+        Profile.LOOKUP_KEY,
+        Profile.PHOTO_THUMBNAIL_URI
+    };
+
+// Retrieves the profile from the Contacts Provider
+mProfileCursor =
+        getContentResolver().query(
+                Profile.CONTENT_URI,
+                mProjection ,
+                null,
+                null,
+                null);
+</pre>
+<p class="note">
+    <strong>注意:</strong>如果您擷取了多個聯絡人列,而想要判斷其中之一是否為使用者設定檔,請測試該列的
+{@link android.provider.ContactsContract.ContactsColumns#IS_USER_PROFILE} 欄。
+如果聯絡人為使用者設定檔,此欄會設為「1」。
+
+</p>
+<h2 id="ContactsProviderMetadata">聯絡人供應程式中繼資料</h2>
+<p>
+    聯絡人供應程式管理的資料可以追蹤存放庫中聯絡人資料的
+狀態。存放庫相關的中繼資料儲存在不同的位置,包括
+「原始聯絡人」、「資料」以及「聯絡人」表格列,
+{@link android.provider.ContactsContract.Settings} 表格以及
+{@link android.provider.ContactsContract.SyncState} 表格。以下表格說明
+這些中繼資料的作用:
+</p>
+<p class="table-caption" id="table3">
+  <strong>表 3.</strong>聯絡人供應程式的中繼資料</p>
+<table>
+    <tr>
+        <th scope="col">表格</th>
+        <th scope="col">欄</th>
+        <th scope="col">值</th>
+        <th scope="col">意義</th>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.RawContacts}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.SyncColumns#DIRTY}</td>
+        <td>「0」:上次同步後沒有變更。</td>
+        <td rowspan="2">
+            標記裝置上經過變更,且必須同步回伺服器的原始聯絡人。
+Android 應用程式更新列時,聯絡人供應程式會自動設定此值。
+
+            <p>
+                修改原始聯絡人或資料表格的同步配接器一律會將字串{@link android.provider.ContactsContract#CALLER_IS_SYNCADAPTER} 附加到其使用的內容 URI,
+
+藉此防止供應程式將列標記為已變更 (dirty)。
+                否則,同步配接器修改會顯示為本機修改,因而傳送到伺服器,儘管伺服器才是修改的來源。
+
+            </p>
+        </td>
+    </tr>
+    <tr>
+            <td>「1」:上次同步後已變更,需要同步回伺服器。</td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#VERSION}</td>
+        <td>此列的版本號碼。</td>
+        <td>
+            每當列或其相關資料變更時,聯絡人供應程式都會自動增加此值。
+
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.Data}</td>
+        <td>{@link android.provider.ContactsContract.DataColumns#DATA_VERSION}</td>
+        <td>此列的版本號碼。</td>
+        <td>
+            每當資料列變更時,聯絡人供應程式都會自動增加此值。
+
+        </td>
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.RawContacts}</td>
+        <td>{@link android.provider.ContactsContract.SyncColumns#SOURCE_ID}</td>
+        <td>
+            可唯一識別帳戶原始聯絡人的字串值(此帳戶是以此字串值所建立)。
+
+        </td>
+        <td>
+            同步配接器建立新的原始聯絡人時,此欄應設為原始聯絡人的伺服器唯一 ID。
+Android 應用程式建立新的原始聯絡人時,應用程式應將此欄保留空白。
+這樣會提供訊號給同步配接器,要在伺服器上建立新的原始聯絡人,然後取得
+{@link android.provider.ContactsContract.SyncColumns#SOURCE_ID} 值。
+
+            <p>
+                尤其是來源 ID 對於每個帳戶類型必須具備<strong>唯一性</strong>,在同步時應該很穩定:
+
+            </p>
+                <ul>
+                    <li>
+                        唯一:帳戶的每個原始聯絡人都必須有自己的來源 ID。如果沒有強制執行此條件,則聯絡人應用程式會發生問題。
+
+                        請注意,同一個帳戶「類型」<em></em>的兩個原始聯絡人可能會有相同的來源 ID。
+例如,{@code emily.dickinson@gmail.com} 帳戶的原始聯絡人「Thomas Higginson」與
+ {@code emilyd@gmail.com} 帳戶的原始聯絡人「Thomas Higginson」的來源 ID相同。
+
+
+                    </li>
+                    <li>
+                        穩定:來源 ID 是線上服務中原始聯絡人資料的永久部分。
+例如,如果使用者從應用程式設定中清除「聯絡人儲存空間」,然後重新同步,則還原的原始聯絡人的來源 ID 應該與先前相同。
+
+如果沒有強制執行此條件,捷徑將停止運作。
+
+                    </li>
+                </ul>
+        </td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Groups}</td>
+        <td rowspan="2">{@link android.provider.ContactsContract.GroupsColumns#GROUP_VISIBLE}</td>
+        <td>「0」:Android 應用程式 UI 中不應顯示此群組中的聯絡人。</td>
+        <td>
+            有些伺服器可以讓使用者隱藏某些群組中的聯絡人,此欄的設計提供了與這類伺服器的相容性。
+
+        </td>
+    </tr>
+    <tr>
+        <td>「1」:應用程式 UI 中會顯示此群組中的聯絡人。</td>
+    </tr>
+    <tr>
+        <td rowspan="2">{@link android.provider.ContactsContract.Settings}</td>
+        <td rowspan="2">
+            {@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE}</td>
+        <td>
+            「0」:針對此帳戶和帳戶類型,Android 應用程式 UI 中不會顯示不屬於群組的聯絡人。
+
+        </td>
+        <td rowspan="2">
+            如果沒有任何原始聯絡人屬於某個群組,則聯絡人預設為不可見(原始聯絡人的群組成員資格是由{@link android.provider.ContactsContract.Data} 表格中的一或多個
+{@link android.provider.ContactsContract.CommonDataKinds.GroupMembership} 列所指出)。
+
+
+            在 {@link android.provider.ContactsContract.Settings} 表格列中為帳戶類型和帳戶設定此旗標,可以強制讓不屬於任何群組的聯絡人成為可見的。
+
+            此旗標的其中一個用途是,顯示伺服器中不屬於任何群組的聯絡人。
+        </td>
+    </tr>
+    <tr>
+        <td>
+            「1」:針對此帳戶和帳戶類型,應用程式 UI 中會顯示不屬於群組的聯絡人。
+
+        </td>
+
+    </tr>
+    <tr>
+        <td>{@link android.provider.ContactsContract.SyncState}</td>
+        <td>(全部)</td>
+        <td>
+            使用此表格儲存同步配接器的中繼資料。
+        </td>
+        <td>
+            使用此表格,您可以儲存同步狀態,以及其他與同步相關、會永久放在裝置上的資料。
+
+        </td>
+    </tr>
+</table>
+<h2 id="Access">聯絡人供應程式存取</h2>
+<p>
+    本節說明從聯絡人供應程式存取資料的指導方針,著重於以下各項:
+
+</p>
+<ul>
+    <li>
+        實體查詢。
+    </li>
+    <li>
+        批次修改。
+    </li>
+    <li>
+        使用意圖進行擷取及修改。
+    </li>
+    <li>
+        資料完整性。
+    </li>
+</ul>
+<p>
+    從同步配接器進行修改,在<a href="#SyncAdapters">聯絡人供應程式同步配接器</a>中也提供更詳細的資訊。
+
+</p>
+<h3 id="Entities">實體查詢</h3>
+<p>
+    因為聯絡人供應程式為階層式表格,擷取某一列及連結至此列的所有「子」列時非常實用。
+例如,如要顯示人員的所有資訊,您可能要擷取單一
+ {@link android.provider.ContactsContract.Contacts} 列的
+所有 {@link android.provider.ContactsContract.RawContacts} 列,或單一
+{@link android.provider.ContactsContract.RawContacts} 列的所有
+{@link android.provider.ContactsContract.CommonDataKinds.Email} 列。
+為了協助此操作,聯絡人供應程式提供<strong>實體</strong>建構,其運作方式就像是資料庫結合各個表格一樣。
+
+
+</p>
+<p>
+    實體就像是一份表格,由上層表格及其下層表格中的選取欄所組成。
+    查詢實體時,您會提供投影 (projection) 和搜尋條件根據該實體可用的欄。
+結果會是 {@link android.database.Cursor},擷取到的每個下層表格列在其中都會有一列。
+例如,如果您查詢
+{@link android.provider.ContactsContract.Contacts.Entity} 的聯絡人名稱,並且查詢所有 {@link android.provider.ContactsContract.CommonDataKinds.Email} 列中該名稱的所有原始聯絡人,則會取回 {@link android.database.Cursor},每個 {@link android.provider.ContactsContract.CommonDataKinds.Email} 列都會有一列。
+
+
+
+</p>
+<p>
+    實體簡化查詢。使用實體,您可以一次擷取聯絡人或原始聯絡人的所有聯絡人資料,而不用先查詢父項表格以取得 ID,再以此 ID 查詢子項表格。另外,聯絡人供應程式會在單一交易中處理針對實體的查詢,以確保所擷取的資料在內部的一致性。
+
+
+
+
+</p>
+<p class="note">
+    <strong>注意:</strong>實體通常不會包含上層表格和下層表格的所有欄。
+如果您嘗試使用的欄名稱未列在實體的欄名稱常數中,將會收到 {@link java.lang.Exception}。
+
+</p>
+<p>
+    以下程式碼片段展示如何擷取一位聯絡人的所有原始聯絡人列。此程式碼片段屬於大型應用程式的一部分,此應用程式有兩個 Activity:「主要」和「詳細」。
+主要 Activity 會顯示聯絡人列的清單,當使用者選取其中一項時,此 Activity 會將其 ID 傳送給詳細 Activity。
+
+詳細 Activity 會使用 {@link android.provider.ContactsContract.Contacts.Entity},針對所選取的聯絡人,顯示與其關聯的所有原始聯絡人的所有資料列。
+
+
+</p>
+<p>
+    此程式碼片段是取自「詳細」Activity:
+</p>
+<pre>
+...
+    /*
+     * Appends the entity path to the URI. In the case of the Contacts Provider, the
+     * expected URI is content://com.google.contacts/#/entity (# is the ID value).
+     */
+    mContactUri = Uri.withAppendedPath(
+            mContactUri,
+            ContactsContract.Contacts.Entity.CONTENT_DIRECTORY);
+
+    // Initializes the loader identified by LOADER_ID.
+    getLoaderManager().initLoader(
+            LOADER_ID,  // The identifier of the loader to initialize
+            null,       // Arguments for the loader (in this case, none)
+            this);      // The context of the activity
+
+    // Creates a new cursor adapter to attach to the list view
+    mCursorAdapter = new SimpleCursorAdapter(
+            this,                        // the context of the activity
+            R.layout.detail_list_item,   // the view item containing the detail widgets
+            mCursor,                     // the backing cursor
+            mFromColumns,                // the columns in the cursor that provide the data
+            mToViews,                    // the views in the view item that display the data
+            0);                          // flags
+
+    // Sets the ListView's backing adapter.
+    mRawContactList.setAdapter(mCursorAdapter);
+...
+&#64;Override
+public Loader&lt;Cursor&gt; onCreateLoader(int id, Bundle args) {
+
+    /*
+     * Sets the columns to retrieve.
+     * RAW_CONTACT_ID is included to identify the raw contact associated with the data row.
+     * DATA1 contains the first column in the data row (usually the most important one).
+     * MIMETYPE indicates the type of data in the data row.
+     */
+    String[] projection =
+        {
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID,
+            ContactsContract.Contacts.Entity.DATA1,
+            ContactsContract.Contacts.Entity.MIMETYPE
+        };
+
+    /*
+     * Sorts the retrieved cursor by raw contact id, to keep all data rows for a single raw
+     * contact collated together.
+     */
+    String sortOrder =
+            ContactsContract.Contacts.Entity.RAW_CONTACT_ID +
+            " ASC";
+
+    /*
+     * Returns a new CursorLoader. The arguments are similar to
+     * ContentResolver.query(), except for the Context argument, which supplies the location of
+     * the ContentResolver to use.
+     */
+    return new CursorLoader(
+            getApplicationContext(),  // The activity's context
+            mContactUri,              // The entity content URI for a single contact
+            projection,               // The columns to retrieve
+            null,                     // Retrieve all the raw contacts and their data rows.
+            null,                     //
+            sortOrder);               // Sort by the raw contact ID.
+}
+</pre>
+<p>
+    載入完成時,{@link android.app.LoaderManager} 會呼叫 {@link android.app.LoaderManager.LoaderCallbacks#onLoadFinished(Loader, D)
+    onLoadFinished()} 的回呼。
+此方法的其中一個傳入引數是內含查詢結果的
+ {@link android.database.Cursor}。在您的應用程式中,您可以從這個 {@link android.database.Cursor} 取得資料,然後加以顯示或進一步處理。
+
+</p>
+<h3 id="Transactions">批次修改</h3>
+<p>
+    您應該儘可能透過建立
+ {@link android.content.ContentProviderOperation} 物件的{@link java.util.ArrayList},然後呼叫
+ {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()},以「批次模式」在聯絡人供應程式中進行資料的插入、更新以及刪除。
+因為聯絡人供應程式會在單一交易中執行 
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} 的所有操作,所以您所做的修改不會讓聯絡人存放庫處於不一致的狀態。
+
+
+批次修改同時也有助於插入原始聯絡人及其詳細資料。
+
+</p>
+<p class="note">
+    <strong>注意:</strong>如要修改「單一」<em></em>原始聯絡人,請考慮將意圖傳送到裝置的聯絡人應用程式,而不要在您的應用程式中處理修改操作。這些動作在<a href="#Intents">使用意圖擷取和修改</a>中有更詳細的資料。
+
+
+
+</p>
+<h4>降伏點</h4>
+<p>
+    包含大量操作的批次修改可能會封鎖其他處理程序,導致整體的使用者體驗不良。
+如要將您想要執行的所有修改,儘可能安排在較少的清單中執行,同時要避免這些修改讓系統無法進行其他操作,則應該要為一或多個操作設定「降伏點」<strong></strong>。
+
+
+    降伏點是一個 {@link android.content.ContentProviderOperation} 物件,而且其
+{@link android.content.ContentProviderOperation#isYieldAllowed()} 值是設為
+<code>true</code>。當聯絡人供應程式遇到降伏點時,會暫停它的工作,以便讓其他處理程序執行,並關閉目前的交易。
+供應程式再次啟動時,會繼續 {@link java.util.ArrayList} 中的下一項操作,並啟動新的交易。
+
+
+</p>
+<p>
+    降伏點會讓每次呼叫
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} 產生一個以上的交易。基於這項原因,您必須將上次操作的降伏點設為一組相關的列。
+
+    例如,您應該為以下兩種上次操作設定降伏點:新增原始聯絡人列及其相關資料列的一組動作,或與單一聯絡人相關的一組列。
+
+
+</p>
+<p>
+    降伏點也是微型操作的單位。兩個降伏點之間的所有存取會以單一單元來看待為成功或失敗。
+如果沒有設定任何降伏點,則最小的微型操作就是整批操作。
+如果使用降伏點,您可以防止操作降低系統效能,同時確保操作的子集是微型操作。
+
+
+</p>
+<h4>修改反向參考</h4>
+<p>
+    以一組
+ {@link android.content.ContentProviderOperation} 物件插入新的原始聯絡人及其關聯的資料列時,您必須透過插入原始聯絡人的
+ {@code android.provider.BaseColumns#_ID} 值做為
+{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID} 值,將資料列連結到原始聯絡人列。
+不過,此
+值在您為資料列建立 {@link android.content.ContentProviderOperation}
+時並不存在,這是因為您尚未替原始聯絡人列
+套用 {@link android.content.ContentProviderOperation}。為解決此狀況,{@link android.content.ContentProviderOperation.Builder} 類別提供了
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()} 這個方法。
+
+    此方法可以讓您使用之前操作的結果來插入或修改欄。
+
+</p>
+<p>
+    {@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}
+方法有兩個引數:
+</p>
+    <dl>
+        <dt>
+            <code>key</code>
+        </dt>
+        <dd>
+            鍵值對的鍵。此引數的值是您要修改表格中的欄名稱。
+
+        </dd>
+        <dt>
+            <code>previousResult</code>
+        </dt>
+        <dd>
+            
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} 中的
+{@link android.content.ContentProviderResult} 物件以 0 開始的陣列索引值。套用批次操作時,每次操作結果都會儲存在結果的中繼陣列。
+
+<code>previousResult</code> 值是這些結果的其中一個索引,這些結果是以 <code>key</code>值擷取並加以儲存。
+
+這樣可以讓您插入新的原始聯絡人記錄,並取得其
+{@code android.provider.BaseColumns#_ID} 值,然後在您新增 {@link android.provider.ContactsContract.Data} 列時,做為此值的「反向參考」。
+
+            <p>
+                您首次呼叫
+ {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} 時會建立整個結果陣列,此陣列的大小等同於您所提供
+ {@link android.content.ContentProviderOperation} 物件的{@link java.util.ArrayList} 大小。
+不過,結果陣列中的所有元素會設為 <code>null</code>,如果您嘗試要針對尚未套用的操作結果製作反向參考,
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}則會擲回 {@link java.lang.Exception}。
+
+
+
+
+            </p>
+        </dd>
+    </dl>
+<p>
+    以下程式碼片段展示如何插入大量新的原始聯絡人和資料。其中包括建立降伏點和使用反向參考的程式碼。
+此程式碼片段是 <code>createContacEntry()</code> 方法的擴充版本。而這個方法是
+ <code><a href="{@docRoot}resources/samples/ContactManager/index.html">
+    Contact Manager</a></code> 範例應用程式中
+ <code>ContactAdder</code> 類別的一部分。
+
+</p>
+<p>
+    第一個程式碼片段會從 UI 擷取聯絡人資料。此時,使用者已經選好要加入的新原始聯絡人帳戶。
+
+</p>
+<pre>
+// Creates a contact entry from the current UI values, using the currently-selected account.
+protected void createContactEntry() {
+    /*
+     * Gets values from the UI
+     */
+    String name = mContactNameEditText.getText().toString();
+    String phone = mContactPhoneEditText.getText().toString();
+    String email = mContactEmailEditText.getText().toString();
+
+    int phoneType = mContactPhoneTypes.get(
+            mContactPhoneTypeSpinner.getSelectedItemPosition());
+
+    int emailType = mContactEmailTypes.get(
+            mContactEmailTypeSpinner.getSelectedItemPosition());
+</pre>
+<p>
+    下一個程式碼片段的操作會將原始聯絡人列插入
+{@link android.provider.ContactsContract.RawContacts} 表格:
+</p>
+<pre>
+    /*
+     * Prepares the batch operation for inserting a new raw contact and its data. Even if
+     * the Contacts Provider does not have any data for this person, you can't add a Contact,
+     * only a raw contact. The Contacts Provider will then add a Contact automatically.
+     */
+
+     // Creates a new array of ContentProviderOperation objects.
+    ArrayList&lt;ContentProviderOperation&gt; ops =
+            new ArrayList&lt;ContentProviderOperation&gt;();
+
+    /*
+     * Creates a new raw contact with its account type (server type) and account name
+     * (user's account). Remember that the display name is not stored in this row, but in a
+     * StructuredName data row. No other data is required.
+     */
+    ContentProviderOperation.Builder op =
+            ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
+            .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType())
+            .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    接著,程式碼會建立顯示名稱、電話以及電子郵件列的資料列。
+</p>
+<p>
+    每項操作建立器物件會使用
+{@link android.content.ContentProviderOperation.Builder#withValueBackReference(String, int) withValueBackReference()}來取得
+{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID}。
+參照會指向第一項操作中的 {@link android.content.ContentProviderResult} 物件 (第一項操作會新增原始聯絡人列,並傳回其新的 {@code android.provider.BaseColumns#_ID} 值)。
+
+
+因此,每個資料列會透過其
+{@link android.provider.ContactsContract.DataColumns#RAW_CONTACT_ID} 自動連結到它所屬的新 {@link android.provider.ContactsContract.RawContacts} 列。
+
+</p>
+<p>
+    新增電子郵件列的 {@link android.content.ContentProviderOperation.Builder} 物件會帶有 {@link android.content.ContentProviderOperation.Builder#withYieldAllowed(boolean)
+    withYieldAllowed()} 旗標,而這會設定降伏點:
+
+</p>
+<pre>
+    // Creates the display name for the new raw contact, as a StructuredName data row.
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * withValueBackReference sets the value of the first argument to the value of
+             * the ContentProviderResult indexed by the second argument. In this particular
+             * call, the raw contact ID column of the StructuredName data row is set to the
+             * value of the result returned by the first operation, which is the one that
+             * actually adds the raw contact row.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to StructuredName
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
+
+            // Sets the data row's display name to the name in the UI.
+            .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified phone number and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Phone
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
+
+            // Sets the phone number and type
+            .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone)
+            .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+
+    // Inserts the specified email and type as a Phone data row
+    op =
+            ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
+            /*
+             * Sets the value of the raw contact id column to the new raw contact ID returned
+             * by the first operation in the batch.
+             */
+            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
+
+            // Sets the data row's MIME type to Email
+            .withValue(ContactsContract.Data.MIMETYPE,
+                    ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
+
+            // Sets the email address and type
+            .withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email)
+            .withValue(ContactsContract.CommonDataKinds.Email.TYPE, emailType);
+
+    /*
+     * Demonstrates a yield point. At the end of this insert, the batch operation's thread
+     * will yield priority to other threads. Use after every set of operations that affect a
+     * single contact, to avoid degrading performance.
+     */
+    op.withYieldAllowed(true);
+
+    // Builds the operation and adds it to the array of operations
+    ops.add(op.build());
+</pre>
+<p>
+    最後一個程式碼片段顯示
+{@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} 的呼叫,以插入新的原始聯絡人和資料列。
+
+</p>
+<pre>
+    // Ask the Contacts Provider to create a new contact
+    Log.d(TAG,"Selected account: " + mSelectedAccount.getName() + " (" +
+            mSelectedAccount.getType() + ")");
+    Log.d(TAG,"Creating contact: " + name);
+
+    /*
+     * Applies the array of ContentProviderOperation objects in batch. The results are
+     * discarded.
+     */
+    try {
+
+            getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
+    } catch (Exception e) {
+
+            // Display a warning
+            Context ctx = getApplicationContext();
+
+            CharSequence txt = getString(R.string.contactCreationFailure);
+            int duration = Toast.LENGTH_SHORT;
+            Toast toast = Toast.makeText(ctx, txt, duration);
+            toast.show();
+
+            // Log exception
+            Log.e(TAG, "Exception encountered while inserting contact: " + e);
+    }
+}
+</pre>
+<p>
+    批次操作也可以讓您實作<strong>開放式並行存取控制</strong>,此方法可以在套用修改交易時,不需要鎖定底層存放庫。
+
+    如要使用此方法,您要套用交易,然後檢查同時發生的其他修改操作。
+如果您發現不一致的修改,請將交易復原並加以重試。
+
+</p>
+<p>
+    開放式並行存取控制很適合用在行動裝置,這是因為行動裝置一次只會有一位使用者,而且很少會發生同時存取資料存放庫的情形。
+由於不會使用到鎖定,因此您不必花時間在設定鎖定,或等待其他交易釋放鎖定。
+
+</p>
+<p>
+    如要在更新單一
+ {@link android.provider.ContactsContract.RawContacts} 列時使用開放式並行存取控制,請遵循以下步驟:
+</p>
+<ol>
+    <li>
+        隨著您要擷取的其他資料,一起擷取原始聯絡人的 {@link android.provider.ContactsContract.SyncColumns#VERSION} 欄。
+
+    </li>
+    <li>
+        使用
+ {@link android.content.ContentProviderOperation#newAssertQuery(Uri)} 方法建立適合用於強制執行限制的{@link android.content.ContentProviderOperation.Builder} 物件。
+如果是內容 URI,請使用 {@link android.provider.ContactsContract.RawContacts#CONTENT_URI
+RawContacts.CONTENT_URI} 並附加原始聯絡人的 {@code android.provider.BaseColumns#_ID}。
+
+
+    </li>
+    <li>
+        如果是 {@link android.content.ContentProviderOperation.Builder} 物件,請呼叫 {@link android.content.ContentProviderOperation.Builder#withValue(String, Object)
+        withValue()},以比較 {@link android.provider.ContactsContract.SyncColumns#VERSION} 欄和您剛才擷取的版本號碼。
+
+
+    </li>
+    <li>
+        如果是相同的 {@link android.content.ContentProviderOperation.Builder},請呼叫 {@link android.content.ContentProviderOperation.Builder#withExpectedCount(int)
+withExpectedCount()} 以確保此判斷提示只測試一列。
+
+    </li>
+    <li>
+        呼叫 {@link android.content.ContentProviderOperation.Builder#build()} 以建立
+{@link android.content.ContentProviderOperation} 物件,然後將此物件新增為您傳送到
+ {@link android.content.ContentResolver#applyBatch(String, ArrayList) applyBatch()} 的第一個 {@link java.util.ArrayList} 物件。
+
+    </li>
+    <li>
+        套用批次交易。
+    </li>
+</ol>
+<p>
+    如果在您讀取原始聯絡人列和嘗試加以修改之間,有另一項操作要加以更新,則「判斷提示」{@link android.content.ContentProviderOperation} 將會失敗,而且整個批次的操作將會退出。
+
+您之後可以選擇重試此批次作業或採取其他動作。
+
+</p>
+<p>
+    以下程式碼片段展示如何在使用 {@link android.content.CursorLoader} 查詢單一原始聯絡人後,建立「判斷提示」
+{@link android.content.ContentProviderOperation}:
+
+</p>
+<pre>
+/*
+ * The application uses CursorLoader to query the raw contacts table. The system calls this method
+ * when the load is finished.
+ */
+public void onLoadFinished(Loader&lt;Cursor&gt; loader, Cursor cursor) {
+
+    // Gets the raw contact's _ID and VERSION values
+    mRawContactID = cursor.getLong(cursor.getColumnIndex(BaseColumns._ID));
+    mVersion = cursor.getInt(cursor.getColumnIndex(SyncColumns.VERSION));
+}
+
+...
+
+// Sets up a Uri for the assert operation
+Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, mRawContactID);
+
+// Creates a builder for the assert operation
+ContentProviderOperation.Builder assertOp = ContentProviderOperation.netAssertQuery(rawContactUri);
+
+// Adds the assertions to the assert operation: checks the version and count of rows tested
+assertOp.withValue(SyncColumns.VERSION, mVersion);
+assertOp.withExpectedCount(1);
+
+// Creates an ArrayList to hold the ContentProviderOperation objects
+ArrayList ops = new ArrayList&lt;ContentProviderOperationg&gt;;
+
+ops.add(assertOp.build());
+
+// You would add the rest of your batch operations to "ops" here
+
+...
+
+// Applies the batch. If the assert fails, an Exception is thrown
+try
+    {
+        ContentProviderResult[] results =
+                getContentResolver().applyBatch(AUTHORITY, ops);
+
+    } catch (OperationApplicationException e) {
+
+        // Actions you want to take if the assert operation fails go here
+    }
+</pre>
+<h3 id="Intents">使用意圖進行擷取及修改</h3>
+<p>
+    將意圖傳送給裝置的聯絡人應用程式,可讓您間接存取聯絡人供應程式。
+意圖會啟動裝置的聯絡人應用程式 UI,使用者可以在此執行與聯絡人相關的工作。
+透過此類型的存取方式,使用者可以:
+    <ul>
+        <li>從清單挑選聯絡人,並將它傳送給應用程式以進行其他操作。</li>
+        <li>編輯現有的聯絡人資料。</li>
+        <li>為使用者的任何帳戶插入新的原始聯絡人。</li>
+        <li>刪除聯絡人或聯絡人資料。</li>
+    </ul>
+<p>
+    如果使用者正在插入或更新資料,您可以先收集資料,然後讓它成為意圖的一部分加以傳送。
+
+</p>
+<p>
+    當您透過裝置的聯絡人應用程式使用意圖來存取聯絡人供應程式時,不需要自已撰寫存取供應程式的 UI 或程式碼。
+您也不需要要求供應程式的讀取或寫入權限。
+裝置的聯絡人應用程式可以將某個聯絡人的讀取權限委派給您,而且因為是透過另一個應用程式對供應程式進行修改,所以不需要具備寫入權限。
+
+
+</p>
+<p>
+    傳送意圖以存取供應程式的一般流程在<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">內容供應程式基本概念</a>指南的「透過意圖存取資料」中有詳細的說明。
+
+表 4 摘要說明您可以在工作中使用的動作、MIME 類型以及資料值,而您可以和
+ {@link android.content.Intent#putExtra(String, String) putExtra()} 搭配使用的額外值則列於 {@link android.provider.ContactsContract.Intents.Insert} 的參考文件:
+
+
+
+</p>
+<p class="table-caption" id="table4">
+  <strong>表 4.</strong>聯絡人供應程式意圖。
+</p>
+<table style="width:75%">
+    <tr>
+        <th scope="col" style="width:10%">工作</th>
+        <th scope="col" style="width:5%">動作</th>
+        <th scope="col" style="width:10%">資料</th>
+        <th scope="col" style="width:10%">MIME 類型</th>
+        <th scope="col" style="width:25%">備註</th>
+    </tr>
+    <tr>
+        <td><strong>從清單挑選聯絡人</strong></td>
+        <td>{@link android.content.Intent#ACTION_PICK}</td>
+        <td>
+            可以是以下其中一種:
+            <ul>
+                <li>
+{@link android.provider.ContactsContract.Contacts#CONTENT_URI Contacts.CONTENT_URI},可顯示聯絡人的清單。
+
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Phone#CONTENT_URI Phone.CONTENT_URI},可顯示原始聯絡人的電話號碼清單。
+
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.StructuredPostal#CONTENT_URI
+StructuredPostal.CONTENT_URI},可顯示原始聯絡人的郵寄地址清單。
+
+                </li>
+                <li>
+{@link android.provider.ContactsContract.CommonDataKinds.Email#CONTENT_URI Email.CONTENT_URI},可顯示原始聯絡人的電子郵件地址清單。
+
+                </li>
+            </ul>
+        </td>
+        <td>
+            未使用
+        </td>
+        <td>
+            顯示原始聯絡人清單或原始聯絡人的資料清單,視您提供的內容 URI 類型而定。
+
+            <p>
+                呼叫
+{@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()}可傳回所選取列的內容 URI。
+URI 的格式是表格的內容 URI 附加列的 <code>LOOKUP_ID</code>。
+
+                裝置的聯絡人應用程式會在 Activity 的生命週期內,將讀取和寫入權限委派給此內容 URI。
+詳情請參閱<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">內容供應程式基本概念</a>指南。
+
+
+            </p>
+        </td>
+    </tr>
+    <tr>
+        <td><strong>插入新的原始聯絡人</strong></td>
+        <td>{@link android.provider.ContactsContract.Intents.Insert#ACTION Insert.ACTION}</td>
+        <td>不適用</td>
+        <td>
+            {@link android.provider.ContactsContract.RawContacts#CONTENT_TYPE
+RawContacts.CONTENT_TYPE},一組原始聯絡人的 MIME 類型。
+        </td>
+        <td>
+            顯示裝置聯絡人應用程式中的「新增聯絡人」<strong></strong>畫面。會顯示您新增至意圖的額外值。
+如果隨著
+{@link android.app.Activity#startActivityForResult(Intent, int) startActivityForResult()} 一起傳送,則新增的原始聯絡人內容 URI 會在 {@link android.content.Intent} 引數的 [資料] 欄位中傳回給 Activity 的
+{@link android.app.Activity#onActivityResult(int, int, Intent) onActivityResult()}回呼方法。
+
+
+如要取得此值,請呼叫 {@link android.content.Intent#getData()}。
+        </td>
+    </tr>
+    <tr>
+        <td><strong>編輯聯絡人</strong></td>
+        <td>{@link android.content.Intent#ACTION_EDIT}</td>
+        <td>
+            聯絡人的 {@link android.provider.ContactsContract.Contacts#CONTENT_LOOKUP_URI}。
+編輯器 Activity 可讓使用者編輯與此聯絡人關聯的任何資料。
+
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE
+Contacts.CONTENT_ITEM_TYPE},單一聯絡人。</td>
+        <td>
+            顯示聯絡人應用程式中的「編輯聯絡人」畫面。顯示您新增至意圖的額外值。
+使用者按一下 [完成]<strong></strong> 來儲存編輯內容時,您的 Activity 會回到前景。
+
+        </td>
+    </tr>
+    <tr>
+        <td><strong>顯示也能夠新增資料的挑選器</strong></td>
+        <td>{@link android.content.Intent#ACTION_INSERT_OR_EDIT}</td>
+        <td>
+            不適用
+        </td>
+        <td>
+            {@link android.provider.ContactsContract.Contacts#CONTENT_ITEM_TYPE}
+        </td>
+         <td>
+            此意圖一律會顯示聯絡人應用程式的挑選器畫面。使用者可以挑選要編輯的聯絡人,或新增聯絡人。
+不論使用者選擇編輯或新增,所顯示的畫面中也會顯示您在意圖中傳送的額外資料。
+
+如果您的應用程式顯示電子郵件或電話號碼之類的聯絡人資料,使用此意圖會讓使用者將資料新增至現有聯絡人。
+
+
+            <p class="note">
+                <strong>注意:</strong>不需要在意圖的額外值中傳送名稱值,這是因為使用者一定會挑選現有名稱或新增名稱。
+再者,如果您傳送名稱,而使用者選擇編輯,則聯絡人應用程式會覆寫之前的值,以顯示您傳送的名稱。
+
+如果使用者沒有注意到此情形並儲存本次編輯,則會遺失舊的值。
+
+            </p>
+         </td>
+    </tr>
+</table>
+<p>
+    裝置的聯絡人應用程式不會讓您刪除原始聯絡人或任何含有意圖的資料。
+如要刪除原始聯絡人,請改用
+{@link android.content.ContentResolver#delete(Uri, String, String[]) ContentResolver.delete()} 或 {@link android.content.ContentProviderOperation#newDelete(Uri)
+ContentProviderOperation.newDelete()}。
+
+</p>
+<p>
+    以下程式碼片段展示如何建構及傳送可插入新原始聯絡人和資料,的意圖:
+
+</p>
+<pre>
+// Gets values from the UI
+String name = mContactNameEditText.getText().toString();
+String phone = mContactPhoneEditText.getText().toString();
+String email = mContactEmailEditText.getText().toString();
+
+String company = mCompanyName.getText().toString();
+String jobtitle = mJobTitle.getText().toString();
+
+// Creates a new intent for sending to the device's contacts application
+Intent insertIntent = new Intent(ContactsContract.Intents.Insert.ACTION);
+
+// Sets the MIME type to the one expected by the insertion activity
+insertIntent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
+
+// Sets the new contact name
+insertIntent.putExtra(ContactsContract.Intents.Insert.NAME, name);
+
+// Sets the new company and job title
+insertIntent.putExtra(ContactsContract.Intents.Insert.COMPANY, company);
+insertIntent.putExtra(ContactsContract.Intents.Insert.JOB_TITLE, jobtitle);
+
+/*
+ * Demonstrates adding data rows as an array list associated with the DATA key
+ */
+
+// Defines an array list to contain the ContentValues objects for each row
+ArrayList&lt;ContentValues&gt; contactData = new ArrayList&lt;ContentValues&gt;();
+
+
+/*
+ * Defines the raw contact row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues rawContactRow = new ContentValues();
+
+// Adds the account type and name to the row
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_TYPE, mSelectedAccount.getType());
+rawContactRow.put(ContactsContract.RawContacts.ACCOUNT_NAME, mSelectedAccount.getName());
+
+// Adds the row to the array
+contactData.add(rawContactRow);
+
+/*
+ * Sets up the phone number data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues phoneRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+phoneRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
+);
+
+// Adds the phone number and its type to the row
+phoneRow.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone);
+
+// Adds the row to the array
+contactData.add(phoneRow);
+
+/*
+ * Sets up the email data row
+ */
+
+// Sets up the row as a ContentValues object
+ContentValues emailRow = new ContentValues();
+
+// Specifies the MIME type for this data row (all data rows must be marked by their type)
+emailRow.put(
+        ContactsContract.Data.MIMETYPE,
+        ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE
+);
+
+// Adds the email address and its type to the row
+emailRow.put(ContactsContract.CommonDataKinds.Email.ADDRESS, email);
+
+// Adds the row to the array
+contactData.add(emailRow);
+
+/*
+ * Adds the array to the intent's extras. It must be a parcelable object in order to
+ * travel between processes. The device's contacts app expects its key to be
+ * Intents.Insert.DATA
+ */
+insertIntent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, contactData);
+
+// Send out the intent to start the device's contacts app in its add contact activity.
+startActivity(insertIntent);
+</pre>
+<h3 id="DataIntegrity">資料完整性</h3>
+<p>
+    因為聯絡人存放庫內含重要的敏感資料,使用者會期待這些資料為正確且為最新狀態,聯絡人供應程式對於資料完整性有定義良好的規則。
+因此,您在修改聯絡人資料時,必須符合這些規則。
+以下列出重要規則:
+
+</p>
+<dl>
+    <dt>
+        務必為您新增的每個 {@link android.provider.ContactsContract.RawContacts} 列新增 {@link android.provider.ContactsContract.CommonDataKinds.StructuredName} 列。
+
+    </dt>
+    <dd>
+        {@link android.provider.ContactsContract.Data} 表格中不含
+ {@link android.provider.ContactsContract.CommonDataKinds.StructuredName} 列的
+{@link android.provider.ContactsContract.RawContacts} 列,在彙總時會造成問題。
+
+    </dd>
+    <dt>
+        務必將 {@link android.provider.ContactsContract.Data} 列連結到其上層的
+{@link android.provider.ContactsContract.RawContacts} 列。
+    </dt>
+    <dd>
+        裝置的聯絡人應用程式中將看不到未連結到
+ {@link android.provider.ContactsContract.RawContacts} 的 {@link android.provider.ContactsContract.Data} 列,而且與同步配接器搭配使用時可能會造成問題。
+
+    </dd>
+    <dt>
+        只針對您擁有的原始聯絡人變更資料。
+    </dt>
+    <dd>
+        請記住,聯絡人供應程式通常用來管理來自不同帳戶類型或線上服務的資料。
+您必須確認應用程式只會修改或刪除屬於您的資料列,並且確認應用程式插入的資料只含有您可控制的帳戶類型和名稱。
+
+
+    </dd>
+    <dt>
+        務必使用 {@link android.provider.ContactsContract} 及其子類別中定義的常數,做為授權、內容 URI、URI 路徑、欄名稱、MIME 類型以及
+{@link android.provider.ContactsContract.CommonDataKinds.CommonColumns#TYPE} 值。
+
+    </dt>
+    <dd>
+        使用這些常數可協助您避免發生錯誤。如果有任何常數已失效,則編譯器會發出通知。
+
+    </dd>
+</dl>
+<h3 id="CustomData">自訂資料列</h3>
+<p>
+    透過建立自訂的 MIME 類型,您可以插入、編輯、刪除以及擷取 {@link android.provider.ContactsContract.Data} 表格中您自己的資料列。
+儘管您可以將自己的類型特定欄名稱對應到預設的欄名稱,您的列仍受限於使用
+ {@link android.provider.ContactsContract.DataColumns} 中所定義的欄。
+
+在裝置的聯絡人應用程式中,可以顯示您的列中資料,但無法加以編輯或刪除,而且使用者無法新增其他資料。
+
+如要讓使用者修改您自訂的資料列,您必須在自己的應用程式中提供編輯器 Activity。
+
+</p>
+<p>
+    如要顯示自己的資料,請提供 <code>contacts.xml</code> 檔案,其中要包含
+<code>&lt;ContactsAccountType&gt;</code> 元素以及一或多個其
+<code>&lt;ContactsDataKind&gt;</code> 子元素。詳情請參閱 <a href="#SocialStreamDataKind"><code>&lt;ContactsDataKind&gt; element</code></a>一節。
+
+</p>
+<p>
+    如要更瞭解自訂 MIME 類型的詳細資訊,請閱讀<a href="{@docRoot}guide/topics/providers/content-provider-creating.html">建立內容供應程式</a>指南。
+
+
+</p>
+<h2 id="SyncAdapters">聯絡人供應程式同步配接器</h2>
+<p>
+    聯絡人供應程式的設計是專門用來處理裝置和線上服務之間聯絡人資料的「同步作業」<strong></strong>。
+以便讓使用者將現有資料下載到新裝置,以及將現有資料上傳到新帳戶。
+
+    同步作業也可以確保使用者手邊使用的是最新的資料,不論來源經過哪些新增和變更。
+同步作業的另一個好處是,即使裝置沒有連上網路,使用者仍然可以存取聯絡人資料。
+
+</p>
+<p>
+    您可以用各種方式實作同步作業,不過 Android 系統提供的外掛程式同步架構可以將以下工作自動化:
+
+    <ul>
+
+    <li>
+        檢查網路可用性。
+    </li>
+    <li>
+        根據使用者偏好設定,安排並執行同步作業。
+    </li>
+    <li>
+        重新啟動已停止的同步作業。
+    </li>
+    </ul>
+<p>
+    如要使用此架構,您要提供同步配接器外掛程式。每個同步配接器對於服務和內容供應程式來說是唯一的,但可以處理相同服務的多個帳戶名稱。
+此架構也可以讓相同服務和供應程式使用多個同步配接器。
+
+</p>
+<h3 id="SyncClassesFiles">同步配接器類別和檔案</h3>
+<p>
+    您將同步配接器實做為 {@link android.content.AbstractThreadedSyncAdapter} 的子類別,並以 Android 應用程式的一部分加以安裝。
+
+系統會從應用程式宣示說明中的元素,以及從宣示說明所指向的特殊 XML 檔案中瞭解同步配接器的相關資訊。
+此 XML 檔案定義線上服務的帳戶類型,以及內容供應程式的授權,這兩者可用來唯一識別此配接器。
+
+同步配接器要在使用者新增同步配接器的帳戶類型,
+並啟用要與同步配接器的內容供應程式同步後,
+同步配接器才會變成使用中。此時,系統會開始管理配接器並視需要加以呼叫,以便在內容供應程式和伺服器之間進行同步。
+
+</p>
+<p class="note">
+    <strong>注意:</strong>使用帳戶類型做為同步配接器識別的一部分,可以讓系統在偵測後,將存取不同服務、但來自相同組織的同步配接器群組在一起。
+
+例如,Google 線上服務的同步配接器都有相同的帳戶類型 <code>com.google</code>。
+使用者將 Google 帳戶新增至其裝置後,所有已安裝的 Google 服務同步配接器會列在一起,每個列出的同步配接器會與裝置上不同的內容供應程式進行同步。
+
+
+</p>
+<p>
+    由於大多數服務都需要在存取資料之前先驗證其身分,因此 Android 系統提供類似的驗證架構,而且通常會與同步配接器架構一起搭配使用。
+
+驗證架構使用外掛程式驗證器,這是
+ {@link android.accounts.AbstractAccountAuthenticator} 的子類別。
+驗證器會以下列步驟驗證使用者的身分:
+
+    <ol>
+        <li>
+            收集使用者的名稱、密碼或類似資訊 (使用者的<strong>憑證</strong>)。
+
+        </li>
+        <li>
+            將憑證傳送給服務
+        </li>
+        <li>
+            檢驗服務的回覆。
+        </li>
+    </ol>
+<p>
+    如果服務接受此憑證,則驗證器可以儲存憑證供以後使用。
+由於外掛程式驗證器架構的緣故,
+{@link android.accounts.AccountManager} 可以存取驗證器支援且選擇顯示的任何 authtoken,例如 OAuth2 authtoken。
+
+</p>
+<p>
+    雖然驗證並非必要,大部分聯絡人服務仍會加以使用。
+    不過,您不一定要使用 Android 驗證架構來進行驗證動作。
+</p>
+<h3 id="SyncAdapterImplementing">同步配接器實作</h3>
+<p>
+    如要實作聯絡人供應程式的同步配接器,要從建立內含以下各項的 Android 應用程式開始:
+
+</p>
+    <dl>
+        <dt>
+            回應來自系統的要求,以繫結至同步配接器的 {@link android.app.Service} 元件。
+
+        </dt>
+        <dd>
+            系統要執行同步時,會呼叫服務的
+ {@link android.app.Service#onBind(Intent) onBind()} 方法,以取得同步配接器的
+ {@link android.os.IBinder}。這樣可以讓系統以跨處理程序的方式呼叫配接器的方法。
+
+            <p>
+                在<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">範例同步配接器</a>範例應用程式中,此服務的名稱為
+ <code>com.example.android.samplesync.syncadapter.SyncService</code>。
+
+            </p>
+        </dd>
+        <dt>
+            實際的同步配接器是以
+ {@link android.content.AbstractThreadedSyncAdapter} 的實體子類別加以實作。
+        </dt>
+        <dd>
+            此類別會執行的工作包括:從伺服器下載資料、從裝置上傳資料以及解決衝突。
+配接器的主要工作會使用 {@link android.content.AbstractThreadedSyncAdapter#onPerformSync(
+Account, Bundle, String, ContentProviderClient, SyncResult)
+onPerformSync()} 方法完成。
+此類別必須以單一執行個體的方式加以具現化。
+            <p>
+                在<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">範例同步配接器</a>範例應用程式中,同步配接器定義在
+<code>com.example.android.samplesync.syncadapter.SyncAdapter</code> 類別中。
+
+            </p>
+        </dd>
+        <dt>
+            {@link android.app.Application} 的子類別。
+        </dt>
+        <dd>
+            此類別就像是同步配接器單一執行個體的工廠。使用
+{@link android.app.Application#onCreate()} 方法具現化同步配接器,並提供靜態的「getter」方法將單一執行個體傳回給同步配接器服務的
+{@link android.app.Service#onBind(Intent) onBind()} 方法。
+
+
+        </dd>
+        <dt>
+            <strong>選用:</strong>回應系統針對使用者發出的驗證要求的 {@link android.app.Service} 元件。
+
+        </dt>
+        <dd>
+            {@link android.accounts.AccountManager} 會啟動此服以開始驗證程序。
+服務的 {@link android.app.Service#onCreate()} 方法會具現化為驗證器物件。
+系統需驗證應用程式同步配接器的使用者帳戶時,會呼叫服務的 
+{@link android.app.Service#onBind(Intent) onBind()} 方法以取得驗證器的
+ {@link android.os.IBinder}。
+這樣可以讓系統以跨處理程序的方式呼叫驗證器的方法。
+
+            <p>
+                在<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">範例同步配接器</a>範例應用程式中,此服務的類別名稱為
+<code>com.example.android.samplesync.authenticator.AuthenticationService</code>。
+
+            </p>
+        </dd>
+        <dt>
+            <strong>選用:</strong>處理驗證要求的
+{@link android.accounts.AbstractAccountAuthenticator} 實體子類別。
+
+        </dt>
+        <dd>
+            {@link android.accounts.AccountManager} 會呼叫此類別提供的方法,透過伺服器驗證使用者的憑證。
+驗證程序的詳細方式會根據所使用的伺服器技術,而有很大的差異。
+建議您參閱伺服器軟體的說明文件,進一步瞭解驗證。
+
+            <p>
+                在<a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">範例同步配接器</a>範例應用程式中,驗證器是在
+<code>com.example.android.samplesync.authenticator.Authenticator</code> 類別中完成定義。
+
+            </p>
+        </dd>
+        <dt>
+            定義系統同步配接器和驗證器的 XML 檔案。
+        </dt>
+        <dd>
+            應用程式宣示說明中的
+ <code>&lt;<a href="{@docRoot}guide/topics/manifest/service-element.html">service</a>&gt;</code> 元素會定義之前說明的同步配接器和驗證器服務元件。
+
+這些元素包含的
+<code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code> 子元素可提供系統的特定資料:
+
+
+
+            <ul>
+                <li>
+                    同步配接器服務的
+ <code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code> 元素,此元素會指向 XML 檔案 <code>res/xml/syncadapter.xml</code>。
+
+此檔案會按順序指出
+將與聯絡人供應程式同步的網路服務 URI,
+以及網路服務的帳戶類型。
+                </li>
+                <li>
+                    <strong>選用:</strong>驗證器服務的
+ <code>&lt;<a href="{@docRoot}guide/topics/manifest/meta-data-element.html">meta-data</a>&gt;</code> 元素,此元素會指向 XML 檔案
+<code>res/xml/authenticator.xml</code>。
+此檔案會按順序指出此驗證器支援的帳戶類型,以及驗證程序中會出現的 UI 資源。
+
+此元素中指定的帳戶類型必須與同步配接器中指定的帳戶類型相同。
+
+
+                </li>
+            </ul>
+        </dd>
+    </dl>
+<h2 id="SocialStream">社交串流資料</h2>
+<p>
+    {@code android.provider.ContactsContract.StreamItems} 和
+{@code android.provider.ContactsContract.StreamItemPhotos} 表格負責管理社交網路的傳入資料。
+您可以編寫一個同步配接器,將來自您自己網路的串流資料
+新增至這些表格,或是可以從這些表格讀取串流資料,然後
+顯示於您自己的應用程式中,或同時具備這兩種功能。有了這些功能,您的社交網路服務和應用程式就可以整合到 Android 的社交網路體驗。
+
+</p>
+<h3 id="StreamText">社交串流文字</h3>
+<p>
+    串流項目永遠會與原始聯絡人關聯。
+{@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID} 會連結到原始聯絡人的
+ <code>_ID</code> 值。原始聯絡人的帳戶類型和帳戶名稱也會儲存在串流項目列。
+
+</p>
+<p>
+    串流中的資料會儲存在下列各欄:
+</p>
+<dl>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_TYPE}
+    </dt>
+    <dd>
+        <strong>必要。</strong>與此串流項目相關聯的原始聯絡人使用者帳戶類型。
+請記得在插入串流項目時設定此值。
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#ACCOUNT_NAME}
+    </dt>
+    <dd>
+        <strong>必要。</strong>與此串流項目相關聯的原始聯絡人使用者帳戶名稱。
+請記得在插入串流項目時設定此值。
+    </dd>
+    <dt>
+        識別碼欄
+    </dt>
+    <dd>
+        <strong>必要。</strong>您必須在插入串流項目時插入以下識別碼欄:
+
+        <ul>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_ID}:與此串流項目相關聯的聯絡人
+{@code android.provider.BaseColumns#_ID} 值。
+
+            </li>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#CONTACT_LOOKUP_KEY}:與此串流項目相關聯的聯絡人
+{@code android.provider.ContactsContract.ContactsColumns#LOOKUP_KEY} 值。
+
+            </li>
+            <li>
+                {@code android.provider.ContactsContract.StreamItemsColumns#RAW_CONTACT_ID}:與此串流項目相關聯的原始聯絡人
+{@code android.provider.BaseColumns#_ID} 值。
+
+            </li>
+        </ul>
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#COMMENTS}
+    </dt>
+    <dd>
+        選用。儲存您可以在串流項目開頭顯示的摘要資訊。
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#TEXT}
+    </dt>
+    <dd>
+        串流項目的文字,可能是項目來源張貼的內容,或者會產生串流項目動作的描述。
+此欄可以包含
+{@link android.text.Html#fromHtml(String) fromHtml()} 能夠轉譯的任何格式內嵌資源影像。
+供應程式會截斷較長的內容,但會試著避免破壞標籤。
+
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP}
+    </dt>
+    <dd>
+        內含插入或更新串流項目時間的文字字串,
+,以「毫秒」<em></em>為單位。插入或更新串流項目的應用程式負責維護此欄,聯絡人供應程式不會自動加以維護。
+
+
+    </dd>
+</dl>
+<p>
+    如要顯示串流項目的識別資訊,請使用
+{@code android.provider.ContactsContract.StreamItemsColumns#RES_ICON}、
+{@code android.provider.ContactsContract.StreamItemsColumns#RES_LABEL} 以及
+{@code android.provider.ContactsContract.StreamItemsColumns#RES_PACKAGE} 連結到應用程式中的資源。
+
+</p>
+<p>
+    {@code android.provider.ContactsContract.StreamItems} 表格也包含
+{@code android.provider.ContactsContract.StreamItemsColumns#SYNC1} 到
+{@code android.provider.ContactsContract.StreamItemsColumns#SYNC4} 欄,專門供同步配接器使用。
+
+</p>
+<h3 id="StreamPhotos">社交串流相片</h3>
+<p>
+   {@code android.provider.ContactsContract.StreamItemPhotos} 表格會儲存與串流項目相關聯的相片。
+表格的
+{@code android.provider.ContactsContract.StreamItemPhotosColumns#STREAM_ITEM_ID} 欄會連結到
+ {@code android.provider.ContactsContract.StreamItems} 表格中 {@code android.provider.BaseColumns#_ID} 欄的值。
+相片參照會儲存在表格中的以下各欄:
+
+</p>
+<dl>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotos#PHOTO} 欄 (BLOB)。
+    </dt>
+    <dd>
+        相片的二進位檔,由供應程式調整大小以進行儲存和顯示。
+        此欄是要提供與使用舊版聯絡人供應程式儲存相片的向下相容性。
+不過,在目前版本中,您不應使用此欄來儲存相片。
+請改用 {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID} 或
+{@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI} (下文提供這兩者的相關說明) 在檔案中儲存相片。
+
+此欄現在包含相片的縮圖可供讀取。
+
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_FILE_ID}
+    </dt>
+    <dd>
+        原始聯絡人相片的數字識別碼。將此值附加到常數
+{@link android.provider.ContactsContract.DisplayPhoto#CONTENT_URI DisplayPhoto.CONTENT_URI} 可取得指向單一相片檔案的內容 URI,然後呼叫 {@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
+openAssetFileDescriptor()} 可取得此相片檔案的控制代碼。
+
+
+    </dd>
+    <dt>
+        {@code android.provider.ContactsContract.StreamItemPhotosColumns#PHOTO_URI}
+    </dt>
+    <dd>
+        直接指向此列所呈現相片的相片檔案內容 URI。
+        使用此 URI 呼叫 {@link android.content.ContentResolver#openAssetFileDescriptor(Uri, String)
+openAssetFileDescriptor()} 可取得相片檔案的控制代碼。
+    </dd>
+</dl>
+<h3 id="SocialStreamTables">使用社交串流表格</h3>
+<p>
+    這些表格的運作方式與聯絡人供應程式中的其他主要表格大致相同,以下各項除外:
+</p>
+    <ul>
+        <li>
+            這些表格需要額外的存取權限。如要從中讀取,您的應用程式必須具備 {@code android.Manifest.permission#READ_SOCIAL_STREAM} 權限。
+如要加以修改,您的應用程式必須具備
+{@code android.Manifest.permission#WRITE_SOCIAL_STREAM} 權限。
+
+        </li>
+        <li>
+            針對 {@code android.provider.ContactsContract.StreamItems} 表格,每個原始聯絡人的儲存列數是有限制的。
+達到此限制後,聯絡人供應程式會自動刪除
+{@code android.provider.ContactsContract.StreamItemsColumns#TIMESTAMP} 最舊的列,為新的串流項目列騰出空間。
+
+如要取得此限制,請發出查詢給內容 URI
+{@code android.provider.ContactsContract.StreamItems#CONTENT_LIMIT_URI}。
+您只要將內容 URI 設為 <code>null</code> 即可,其餘引數不需要處理。
+此查詢會傳回內含單一列的 Cursor 與單一欄
+{@code android.provider.ContactsContract.StreamItems#MAX_ITEMS}。
+
+        </li>
+    </ul>
+
+<p>
+    類別 {@code android.provider.ContactsContract.StreamItems.StreamItemPhotos} 定義了單一串流項目,且內含相片列的 {@code android.provider.ContactsContract.StreamItemPhotos} 子表格。
+
+
+</p>
+<h3 id="SocialStreamInteraction">社交串流互動</h3>
+<p>
+    社交串流資料受到聯絡人供應程式與裝置聯絡人應用程式的管理,提供強大的方式將您的社交網路系統與現有聯絡人連接起來。
+
+提供下列功能:
+</p>
+    <ul>
+        <li>
+            使用同步配接器將您的社交網路服務同步到聯絡人供應程式後,您可以擷取某位使用者的聯絡人最近 Activity,並將它儲存在 {@code android.provider.ContactsContract.StreamItems} 和
+{@code android.provider.ContactsContract.StreamItemPhotos} 表格中,供後續使用。
+
+
+        </li>
+        <li>
+            除了一般同步之外,您可以在使用者選取要檢視的聯絡人時,觸發您的同步配接器,以擷取其他資料。
+此舉可讓您的同步配接器擷取聯絡人高解析度的相片,以及聯絡人最近的串流項目。
+
+        </li>
+        <li>
+            藉由向裝置的聯絡人應用程式和聯絡人供應程式註冊通知,您可以在檢視聯絡人時「收到」<em></em>意圖,並於此時更新您服務中的聯絡人狀態。
+
+相較於與同步配接器執行完整同步,
+此方式較快速且使用的頻寬較少。
+        </li>
+        <li>
+            使用者在裝置的聯絡人應用程式查看聯絡人時,可以將聯絡人新增至您的社交網路服務。
+您可以透過「邀請聯絡人」啟用上述功能。「邀請聯絡人」會啟用一連串的 Activity,將現有聯絡人新增至您的網路和 XML 檔案。此檔案會將您應用程式的詳細資訊提供給裝置的聯絡人應用程式和聯絡人供應程式。
+
+
+
+        </li>
+    </ul>
+<p>
+    串流項目與聯絡人供應程式的一般同步與其他同步相同。
+如要進一步瞭解同步,請參閱<a href="#SyncAdapters">聯絡人供應程式同步配接器</a>。
+以下兩節說明如何註冊通知和邀請聯絡人。
+
+</p>
+<h4>註冊以處理社交網路檢視</h4>
+<p>
+    註冊您的同步配接器,使其在使用者查看由您的同步配接器所管理的聯絡人時收到通知:
+
+</p>
+<ol>
+    <li>
+        在專案的 <code>res/xml/</code> 目錄中建立名稱為 <code>contacts.xml</code>的檔案。
+如果已經有這個檔案,可略過此步驟。
+    </li>
+    <li>
+        在此檔案中,新增
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code> 元素。
+        如果這個元素已經存在,可略過此步驟。
+    </li>
+    <li>
+        為了註冊服務,讓使用者在裝置的聯絡人應用程式中開啟聯絡人的詳細資訊頁面時收到通知,請將
+ <code>viewContactNotifyService="<em>serviceclass</em>"</code> 屬性新增至此元素,其中
+ <code><em>serviceclass</em></code> 是該服務的完整類別名稱,而此服務會收到來自裝置聯絡人應用程式的意圖。
+
+對於通知器服務而言,使用擴充 {@link android.app.IntentService} 的類別可以讓此服務接收意圖。
+
+傳入意圖的資料中含有使用者所點擊該名原始聯絡人的內容 URI。
+您可以從通知器服務繫結,然後呼叫您的同步配接器,以更新原始聯絡人的資料。
+
+    </li>
+</ol>
+<p>
+    如何註冊使用者點擊串流項目或相片 (或兩者) 時所呼叫的 Activity:
+</p>
+<ol>
+    <li>
+        在專案的 <code>res/xml/</code> 目錄中建立名稱為 <code>contacts.xml</code>的檔案。
+如果已經有這個檔案,可略過此步驟。
+    </li>
+    <li>
+        在此檔案中,新增
+<code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code> 元素。
+        如果這個元素已經存在,可略過此步驟。
+    </li>
+    <li>
+        為了註冊其中一個 Activity,讓它處理使用者在裝置的聯絡人應用程式中點擊串流項目的 Activity,請將
+ <code>viewStreamItemActivity="<em>activityclass</em>"</code> 屬性新增至此元素,其中
+ <code><em>activityclass</em></code> 是該 Activity 的完整類別名稱,而此 Activity 會收到來自裝置聯絡人應用程式的意圖。
+
+
+    </li>
+    <li>
+        為了註冊其中一個 Activity,讓它處理使用者在裝置的聯絡人應用程式中點擊串流相片的活動,請將
+ <code>viewStreamItemPhotoActivity="<em>activityclass</em>"</code> 屬性新增至此元素,其中
+ <code><em>activityclass</em></code> 是該 Activity 的完整類別名稱,而此 Activity 會收到來自裝置聯絡人應用程式的意圖。
+
+
+    </li>
+</ol>
+<p>
+    如要進一步瞭解 <code>&lt;ContactsAccountType&gt;</code> 元素,請參閱 <a href="#SocialStreamAcctType">&lt;ContactsAccountType&gt; 元素</a>。
+
+</p>
+<p>
+    傳入意圖的資料中含有使用者所按下項目或相片的內容 URI。
+    如要針對文字項目和相片採取不同的 Activity,請在相同的檔案中同時使用兩個屬性。
+</p>
+<h4>與社交網路服務互動</h4>
+<p>
+    使用者不需要離開裝置的聯絡人應用程式,就可以邀請聯絡人到您的社交網路網站。
+您可以改為讓裝置的聯絡人應用程式傳送意圖,以邀請聯絡人前往您的 Activity。
+如要進行此設定:
+</p>
+<ol>
+    <li>
+        在專案的 <code>res/xml/</code> 目錄中建立名稱為 <code>contacts.xml</code>的檔案。
+如果已經有這個檔案,可略過此步驟。
+    </li>
+    <li>
+        在此檔案中,新增 <code>&lt;ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android"&gt;</code> 元素。
+
+        如果這個元素已經存在,可略過此步驟。
+    </li>
+    <li>
+        新增下列屬性:
+        <ul>
+            <li><code>inviteContactActivity="<em>activityclass</em>"</code></li>
+            <li>
+                <code>inviteContactActionLabel="&#64;string/<em>invite_action_label</em>"</code>
+            </li>
+        </ul>
+        <code><em>activityclass</em></code> 值是 Activity 的完整類別名稱,以此 Activity 接收意圖。
+<code><em>invite_action_label</em></code> 值是顯示在裝置聯絡人應用程式內 [新增連線]<strong></strong> 選單中的文字字串。
+ 
+
+    </li>
+</ol>
+<p class="note">
+    <strong>注意:</strong><code>ContactsSource</code> 是
+ <code>ContactsAccountType</code> 已淘汰的標籤名稱。
+</p>
+<h3 id="ContactsFile">contacts.xml 參照</h3>
+<p>
+    <code>contacts.xml</code> 檔案包含的 XML 元素,可控制您的同步配接器與應用程式 (聯絡人應用程式和聯絡人供應程式) 之間的互動。
+這些元素在以下各節有詳細的說明。
+
+</p>
+<h4 id="SocialStreamAcctType">&lt;ContactsAccountType&gt; 元素</h4>
+<p>
+    <code>&lt;ContactsAccountType&gt;</code> 元素控制您的應用程式與聯絡人應用程式之間的互動。
+此元素的語法如下:
+</p>
+<pre>
+&lt;ContactsAccountType
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        inviteContactActivity="<em>activity_name</em>"
+        inviteContactActionLabel="<em>invite_command_text</em>"
+        viewContactNotifyService="<em>view_notify_service</em>"
+        viewGroupActivity="<em>group_view_activity</em>"
+        viewGroupActionLabel="<em>group_action_text</em>"
+        viewStreamItemActivity="<em>viewstream_activity_name</em>"
+        viewStreamItemPhotoActivity="<em>viewphotostream_activity_name</em>"&gt;
+</pre>
+<p>
+    <strong>包含於:</strong>
+</p>
+<p>
+    <code>res/xml/contacts.xml</code>
+</p>
+<p>
+    <strong>可以包含:</strong>
+</p>
+<p>
+    <strong><code>&lt;ContactsDataKind&gt;</code></strong>
+</p>
+<p>
+    <strong>描述:</strong>
+</p>
+<p>
+    宣告 Android 元件和 UI 標籤,讓使用者可以邀請聯絡人加入社交網路、使用者的社交網路串流更新內容時通知使用者等等。
+
+
+</p>
+<p>
+    請注意,<code>&lt;ContactsAccountType&gt;</code> 的屬性不需要使用屬性前置詞 <code>android:</code>。
+
+</p>
+<p>
+    <strong>屬性:</strong>
+</p>
+<dl>
+    <dt>{@code inviteContactActivity}</dt>
+    <dd>
+        使用者從裝置的聯絡人應用程式選取[新增連線]<strong></strong>時,您希望在應用程式中啟動的 Activity 完整類別名稱。
+
+
+    </dd>
+    <dt>{@code inviteContactActionLabel}</dt>
+    <dd>
+        在 [新增連線]<strong></strong> 選單的
+ {@code inviteContactActivity} 中所指定 Activity 的顯示文字字串。
+        例如,您可以使用「關注我的網路活動」字串。此標籤可以使用字串資源識別碼。
+
+    </dd>
+    <dt>{@code viewContactNotifyService}</dt>
+    <dd>
+        使用者檢視聯絡人時,要接收通知的應用程式中的服務完整類別名稱。
+此通知是由裝置的聯絡人應用程式所傳送,這樣可以讓您的應用程式延後要處理大量資料的操作,需要時再加以處理。
+
+例如,您的應用程式可以藉由讀取並顯示聯絡人的高解析度相片,以及最近的社交串流項目,以回應此通知。
+
+如要進一步瞭解此功能,請參閱<a href="#SocialStreamInteraction">社交串流互動</a>。
+您可以在
+ <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">SampleSyncAdapter</a> 範例應用程式的 <code>NotifierService.java</code>中查看通知服務的範例。
+
+
+    </dd>
+    <dt>{@code viewGroupActivity}</dt>
+    <dd>
+        應用程式中可以顯示群組資訊的 Activity 完整類別名稱。
+使用者在裝置的聯絡人應用程式中按一下群組標籤時,會顯示此 Activity 的 UI。
+
+    </dd>
+    <dt>{@code viewGroupActionLabel}</dt>
+    <dd>
+        聯絡人應用程式顯示 UI 控制項的標籤,可以讓使用者在您的應用程式中查看群組。
+
+        <p>
+            例如,如果您在裝置上安裝 Google+ 應用程式,而您將Google+ 與聯絡人應用程式進行同步,您會看到 Google+ 社交圈已列為聯絡人應用程式 [群組]<strong></strong> 標籤中的群組。
+
+如果按一下 Google+ 社交圈,您會看到該社交圈中的人員已列為「群組」。
+系統會在畫面頂端顯示 Google+ 圖示,如果您按一下此圖示,則控制權會切換到 Google+ 應用程式。聯絡人應用程式使用
+{@code viewGroupActivity} 執行此動作,並使用 Google+ 圖示做為
+{@code viewGroupActionLabel} 的值。
+
+
+        </p>
+        <p>
+            此屬性可以使用字串資源識別碼。
+        </p>
+    </dd>
+    <dt>{@code viewStreamItemActivity}</dt>
+    <dd>
+        使用者按一下原始聯絡人的串流項目時,裝置的聯絡人應用程式所啟動應用程式中的 Activity 完整類別名稱。
+
+    </dd>
+    <dt>{@code viewStreamItemPhotoActivity}</dt>
+    <dd>
+        使用者按一下原始聯絡人串流項目中的相片時,裝置的聯絡人應用程式所啟動應用程式中的 Activity 完整類別名稱。
+
+
+    </dd>
+</dl>
+<h4 id="SocialStreamDataKind">&lt;ContactsDataKind&gt; 元素</h4>
+<p>
+    <code>&lt;ContactsDataKind&gt;</code> 元素控制聯絡人應用程式的 UI 中,您的應用程式自訂資料列所顯示的控制項。此元素的語法如下:
+
+</p>
+<pre>
+&lt;ContactsDataKind
+        android:mimeType="<em>MIMEtype</em>"
+        android:icon="<em>icon_resources</em>"
+        android:summaryColumn="<em>column_name</em>"
+        android:detailColumn="<em>column_name</em>"&gt;
+</pre>
+<p>
+    <strong>包含於:</strong>
+</p>
+<code>&lt;ContactsAccountType&gt;</code>
+<p>
+    <strong>描述:</strong>
+</p>
+<p>
+    使用此元素讓聯絡人應用程式,將自訂資料列的內容顯示為原始聯絡人詳細資訊的一部分。
+<code>&lt;ContactsAccountType&gt;</code> 的每個 <code>&lt;ContactsDataKind&gt;</code> 子元素都代表同步配接器新增至 {@link android.provider.ContactsContract.Data} 表格的自訂資料列類型。
+
+針對您使用的每個自訂 MIME 類型,新增一個
+ <code>&lt;ContactsDataKind&gt;</code> 元素。如果您不要顯示某個自訂資料列的資料,就不用為該列新增元素。
+
+</p>
+<p>
+    <strong>屬性:</strong>
+</p>
+<dl>
+    <dt>{@code android:mimeType}</dt>
+    <dd>
+        您在
+ {@link android.provider.ContactsContract.Data} 表格中已經為自訂資料列類型所定義的自訂 MIME 類型。例如,
+<code>vnd.android.cursor.item/vnd.example.locationstatus</code> 值可能是
+記錄聯絡人最後已知位置資料列的自訂 MIME 類型。
+    </dd>
+    <dt>{@code android:icon}</dt>
+    <dd>
+        聯絡人應用程式顯示在資料旁邊的 Android
+<a href="{@docRoot}guide/topics/resources/drawable-resource.html">可繪資源</a>。
+使用此項向使用者指出資料是來自您的服務。
+
+    </dd>
+    <dt>{@code android:summaryColumn}</dt>
+    <dd>
+        從資料列擷取兩個值,其中第一個值的欄名稱。此資料列的值會顯示為該項目的第一行。
+第一行的用意是做為資料的摘要使用,但為選用。
+另請參閱
+ <a href="#detailColumn">android:detailColumn</a>。
+    </dd>
+    <dt>{@code android:detailColumn}</dt>
+    <dd>
+        從資料列擷取兩個值,其中第二個值的欄名稱。此資料列的值會顯示為該項目的第二行。
+另請參閱
+{@code android:summaryColumn}。
+    </dd>
+</dl>
+<h2 id="AdditionalFeatures">其他聯絡人供應程式功能</h2>
+<p>
+    除了上一節所描述的主要功能之外,聯絡人供應程式也提供以下實用功能來處理聯絡人資料:
+
+</p>
+    <ul>
+       <li>聯絡人群組</li>
+       <li>相片功能</li>
+    </ul>
+<h3 id="Groups">聯絡人群組</h3>
+<p>
+    聯絡人供應程式可以選擇為群組<strong></strong>資料相關的聯絡人集合貼上標籤。
+如果與使用者帳戶關聯的伺服器要維護群組,該帳戶的帳戶類型所屬的同步配接器,應該要在聯絡人供應程式和伺服器之間傳輸群組資料。
+
+使用者將新的聯絡人新增至伺服器,然後將此聯絡人放置於新群組時,同步配接器必須將新群組新增至 {@link android.provider.ContactsContract.Groups} 表格。
+
+原始聯絡人所屬的一或多個群組會使用 {@link android.provider.ContactsContract.CommonDataKinds.GroupMembership} MIME 類型儲存在 {@link android.provider.ContactsContract.Data} 表格。
+
+
+</p>
+<p>
+    如果您設計的同步配接器,會將原始聯絡人資料從伺服器新增至聯絡人供應程式,表示您並未使用群組,那麼您需要告訴供應程式讓您的資料變成可見的。
+
+在使用者將帳戶新增至裝置時,要執行的程式碼中,更新聯絡人供應程式為帳戶新增的 {@link android.provider.ContactsContract.Settings} 列。
+
+在此列中,將 {@link android.provider.ContactsContract.SettingsColumns#UNGROUPED_VISIBLE
+Settings.UNGROUPED_VISIBLE} 欄的值設為 1。
+這麼做之後,即使您沒有使用群組,聯絡人供應程式
+一律會讓您的聯絡人資料成為可見的。
+</p>
+<h3 id="Photos">聯絡人相片</h3>
+<p>
+    {@link android.provider.ContactsContract.Data} 表格會使用 MIME 類型 {@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
+Photo.CONTENT_ITEM_TYPE} 在列中儲存相片。
+列的
+{@link android.provider.ContactsContract.RawContactsColumns#CONTACT_ID} 欄是連結到其所屬原始聯絡人的
+ {@code android.provider.BaseColumns#_ID} 欄。
+    類別 {@link android.provider.ContactsContract.Contacts.Photo} 定義了
+ {@link android.provider.ContactsContract.Contacts} 的子表格,其中包含聯絡人主要相片的相片資訊,也就是聯絡人之主要原始聯絡人的主要相片。
+同樣地,
+類別 {@link android.provider.ContactsContract.RawContacts.DisplayPhoto} 定義了 {@link android.provider.ContactsContract.RawContacts} 的子表格,其中包含原始聯絡人之主要相片的相片資訊。
+
+
+</p>
+<p>
+    {@link android.provider.ContactsContract.Contacts.Photo} 和
+{@link android.provider.ContactsContract.RawContacts.DisplayPhoto} 的參考文件含有擷取相片資訊的範例。
+擷取原始聯絡人的主要縮圖沒有方便使用的類別,不過您可以傳送查詢到
+{@link android.provider.ContactsContract.Data} 表格,然後選取原始聯絡人的
+{@code android.provider.BaseColumns#_ID}、{@link android.provider.ContactsContract.CommonDataKinds.Photo#CONTENT_ITEM_TYPE
+Photo.CONTENT_ITEM_TYPE} 以及 {@link android.provider.ContactsContract.Data#IS_PRIMARY} 欄,以尋找原始聯絡人的主要相片列。
+
+
+
+</p>
+<p>
+    人員的社交串流資料可能也包括相片。這些資訊都儲存在
+{@code android.provider.ContactsContract.StreamItemPhotos} 表格。<a href="#StreamPhotos">社交串流相片</a>中針對此表格會有更詳細的說明。
+
+</p>
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/providers/content-provider-basics.jd b/docs/html-intl/intl/zh-tw/guide/topics/providers/content-provider-basics.jd
new file mode 100644
index 0000000..7831478
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/providers/content-provider-basics.jd
@@ -0,0 +1,1196 @@
+page.title=內容供應程式基本概念
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<!-- In this document -->
+<h2>本文件內容</h2>
+<ol>
+    <li>
+        <a href="#Basics">總覽</a>
+        <ol>
+            <li>
+                <a href="#ClientProvider">存取供應程式</a>
+            </li>
+            <li>
+                <a href="#ContentURIs">內容 URI</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#SimpleQuery">從供應程式擷取資料</a>
+        <ol>
+            <li>
+                <a href="#RequestPermissions">要求讀取權限</a>
+            </li>
+            <li>
+                <a href="#Query">建構查詢</a>
+            </li>
+            <li>
+                <a href="#DisplayResults">顯示查詢結果</a>
+            </li>
+            <li>
+                <a href="#GettingResults">從查詢結果取得資料</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#Permissions">內容供應程式權限</a>
+    </li>
+    <li>
+        <a href="#Modifications">插入、更新及刪除資料</a>
+        <ol>
+            <li>
+                <a href="#Inserting">插入資料</a>
+            </li>
+            <li>
+                <a href="#Updating">更新資料</a>
+            </li>
+            <li>
+                <a href="#Deleting">刪除資料</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#DataTypes">供應程式資料類型</a>
+    </li>
+    <li>
+        <a href="#AltForms">供應程式存取權的替代形式</a>
+        <ol>
+            <li>
+                <a href="#Batch">批次存取</a>
+            </li>
+            <li>
+                <a href="#Intents">透過意圖存取資料</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#ContractClasses">合約類別</a>
+    </li>
+    <li>
+        <a href="#MIMETypeReference">MIME 類型參考資料</a>
+    </li>
+</ol>
+
+    <!-- Key Classes -->
+<h2>重要類別</h2>
+    <ol>
+        <li>
+            {@link android.content.ContentProvider}
+        </li>
+        <li>
+            {@link android.content.ContentResolver}
+        </li>
+        <li>
+            {@link android.database.Cursor}
+        </li>
+        <li>
+            {@link android.net.Uri}
+        </li>
+    </ol>
+
+    <!-- Related Samples -->
+<h2>相關範例</h2>
+    <ol>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html">
+        游標 (使用者)</a>
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html">
+        游標 (電話)</a>
+        </li>
+    </ol>
+
+    <!-- See also -->
+<h2>另請參閱</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+            建立內容供應程式</a>
+        </li>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+            日曆供應程式</a>
+        </li>
+    </ol>
+</div>
+</div>
+
+    <!-- Intro paragraphs -->
+<p>
+    內容供應程式可管理中央資料存放庫的存取權。供應程式是 Android 應用程式的一部分,通常可提供本身的 UI 方便使用者處理資料。
+
+不過,內容供應程式主要是供其他應用程式使用 (透過供應程式用戶端物件進行存取)。
+供應程式與供應程式用戶端可提供一致的標準介面,除了可用於存取資料,還能用來處理程序間通訊以及保護資料存取的安全。
+
+
+</p>
+<p>
+    本主題涵蓋以下基本概念:
+</p>
+    <ul>
+        <li>內容供應程式的運作方式。</li>
+        <li>可用於從內容供應程式擷取資料的 API。</li>
+        <li>可用於插入、更新或刪除內容供應程式資料的 API。</li>
+        <li>有助於使用供應程式的其他 API 功能。</li>
+    </ul>
+
+    <!-- Basics -->
+<h2 id="Basics">總覽</h2>
+<p>
+    內容供應程式會向外部應用程式以一或多份表格顯示資料,這些表格的樣式類似於關聯式資料庫中的表格。
+每個資料列代表供應程式所收集部分資料類型的單一執行個體,而列中的每個資料欄則代表針對該執行個體收集的個別資料。
+
+
+</p>
+<p>
+    例如,Android 平台內建的其中一個供應程式是使用者字典,其中儲存使用者想保留的非標準字詞的拼寫方式。
+表 1 說明此供應程式表格顯示這種資料的方式:
+
+</p>
+<p class="table-caption">
+    <strong>表 1:</strong>使用者字典表格範例。
+</p>
+<table id="table1" style="width: 50%;">
+    <tr>
+        <th style="width:20%" align="center" scope="col">字詞</th>
+        <th style="width:20%" align="center" scope="col">應用程式 ID</th>
+        <th style="width:20%" align="center" scope="col">頻率</th>
+        <th style="width:20%" align="center" scope="col">地區</th>
+        <th style="width:20%" align="center" scope="col">_ID</th>
+    </tr>
+    <tr>
+        <td align="center" scope="row">mapreduce</td>
+        <td align="center">user1</td>
+        <td align="center">100</td>
+        <td align="center">en_US</td>
+        <td align="center">1</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">precompiler</td>
+        <td align="center">user14</td>
+        <td align="center">200</td>
+        <td align="center">fr_FR</td>
+        <td align="center">2</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">applet</td>
+        <td align="center">user2</td>
+        <td align="center">225</td>
+        <td align="center">fr_CA</td>
+        <td align="center">3</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">const</td>
+        <td align="center">user1</td>
+        <td align="center">255</td>
+        <td align="center">pt_BR</td>
+        <td align="center">4</td>
+    </tr>
+    <tr>
+        <td align="center" scope="row">int</td>
+        <td align="center">user5</td>
+        <td align="center">100</td>
+        <td align="center">en_UK</td>
+        <td align="center">5</td>
+    </tr>
+</table>
+<p>
+    在表 1 中,每個資料列代表標準字典未收錄的某個字詞執行個體。
+每個資料欄則代表該字詞的部分資料,例如初次出現該字詞的地區。
+欄標題為儲存在供應程式中的欄名稱。
+如果想得知某一列的地區,請查看相對應的 <code>locale</code> 欄。以這個供應程式為例,<code>_ID</code> 欄的用途與供應程式自動維護的「主索引鍵」欄相同。
+
+
+</p>
+<p class="note">
+    <strong>注意:</strong>供應程式不需具備主索引鍵,也不必採用 <code>_ID</code> 做為主索引鍵欄的名稱 (如果有此欄的話)。
+不過,如果您想將供應程式的資料繫結至 {@link android.widget.ListView},就必須將其中一個資料欄命名為 <code>_ID</code>。
+
+如要進一步瞭解這項規定,請參閱<a href="#DisplayResults">顯示查詢結果</a>。
+
+</p>
+<h3 id="ClientProvider">存取供應程式</h3>
+<p>
+    應用程式會透過 {@link android.content.ContentResolver} 用戶端物件存取內容供應程式的資料。
+此物件內含的方法可呼叫供應程式物件 ({@link android.content.ContentProvider} 子類別的其中一項執行個體) 中的同名方法。
+
+
+{@link android.content.ContentResolver} 方法可提供永久儲存空間的「CRUD」(建立、擷取、更新、刪除) 基本功能。
+
+</p>
+<p>
+    用戶端應用程式處理程序中的 {@link android.content.ContentResolver} 物件以及擁有供應程式的應用程式中的 {@link android.content.ContentProvider} 物件,會自動處理程序間通訊。
+{@link android.content.ContentProvider} 還可當作其資料存放庫與外部資料表格之間的抽象層。
+
+
+
+</p>
+<p class="note">
+    <strong>注意:</strong>如要存取供應程式,您的應用程式通常必須透過本身的宣示說明檔案要求特定權限。
+如需詳細資料,請參閱<a href="#Permissions">內容供應程式權限</a>。
+
+</p>
+<p>
+    例如,如要從使用者字典供應程式取得一份列出字詞及其地區的清單,請呼叫 {@link android.content.ContentResolver#query ContentResolver.query()}。
+
+    {@link android.content.ContentResolver#query query()} 方法會呼叫使用者字典供應程式所定義的
+{@link android.content.ContentProvider#query ContentProvider.query()} 方法。
+以下是 
+{@link android.content.ContentResolver#query ContentResolver.query()} 呼叫的程式碼:
+<p>
+<pre>
+// Queries the user dictionary and returns results
+mCursor = getContentResolver().query(
+    UserDictionary.Words.CONTENT_URI,   // The content URI of the words table
+    mProjection,                        // The columns to return for each row
+    mSelectionClause                    // Selection criteria
+    mSelectionArgs,                     // Selection criteria
+    mSortOrder);                        // The sort order for the returned rows
+</pre>
+<p>
+    表 2 列出 
+{@link android.content.ContentResolver#query
+query(Uri,projection,selection,selectionArgs,sortOrder)} 的引數及相對應的 SQL SELECT 陳述式:
+</p>
+<p class="table-caption">
+    <strong>表 2:</strong>Query() 與 SQL 查詢的對照表。
+</p>
+<table id="table2" style="width: 75%;">
+    <tr>
+        <th style="width:25%" align="center" scope="col">query() 引數</th>
+        <th style="width:25%" align="center" scope="col">SELECT 關鍵字/參數</th>
+        <th style="width:50%" align="center" scope="col">備註</th>
+    </tr>
+    <tr>
+        <td align="center"><code>Uri</code></td>
+        <td align="center"><code>FROM <em>table_name</em></code></td>
+        <td><code>Uri</code> 會對應至供應程式中名為的「table_name」<em></em>表格。</td>
+    </tr>
+    <tr>
+        <td align="center"><code>projection</code></td>
+        <td align="center"><code><em>col,col,col,...</em></code></td>
+        <td>
+            <code>projection</code> 代表需針對每個擷取的資料列
+納入的一系列資料欄。
+        </td>
+    </tr>
+    <tr>
+        <td align="center"><code>selection</code></td>
+        <td align="center"><code>WHERE <em>col</em> = <em>value</em></code></td>
+        <td><code>selection</code> 會指定資料列選取條件。</td>
+    </tr>
+    <tr>
+        <td align="center"><code>selectionArgs</code></td>
+        <td align="center">
+            (沒有任何相對應的關鍵字/參數。選取引數會取代選取子句中的 
+<code>?</code> 預留位置。)
+        </td>
+    </tr>
+    <tr>
+        <td align="center"><code>sortOrder</code></td>
+        <td align="center"><code>ORDER BY <em>col,col,...</em></code></td>
+        <td>
+            <code>sortOrder</code> 會指定資料列在傳回的 {@link android.database.Cursor} 中的顯示順序。
+
+        </td>
+    </tr>
+</table>
+<h3 id="ContentURIs">內容 URI</h3>
+<p>
+    <strong>內容 URI</strong> 是指用於識別供應程式資料的 URI,內容 URI 包括整個供應程式的符號名稱 (亦即供應程式的<strong>授權</strong>),以及指向表格的名稱 (亦即<strong>路徑</strong>)。
+
+當您呼叫用戶端方法來存取供應程式中的表格時,該表格的內容 URI 即為其中一個引數。
+
+
+</p>
+<p>
+    在上方程式碼中,
+{@link android.provider.UserDictionary.Words#CONTENT_URI} 常數包含使用者字典表格「字詞」的內容 URI。
+{@link android.content.ContentResolver} 物件會剖析該 URI 的授權,然後比較授權和已知供應程式的系統表格,藉此「解析」供應程式。
+
+接著 {@link android.content.ContentResolver} 可以查詢引數分派給正確的供應程式。
+
+
+</p>
+<p>
+    {@link android.content.ContentProvider} 會使用內容 URI 的路徑部分選擇要存取的表格。
+供應程式通常包含用於公開每個表格的「路徑」<strong></strong>。
+</p>
+<p>
+    以上方程式碼為例,「字詞」的完整 URI 會如下所示:
+</p>
+<pre>
+content://user_dictionary/words
+</pre>
+<p>
+    其中的 <code>user_dictionary</code> 字串代表供應程式的授權,而 <code>words</code> 字串則是表格的路徑。
+字串 <code>content://</code> (<strong>配置</strong>) 一律會顯示,而起會將此項目識別為內容 URI。
+
+
+</p>
+<p>
+    許多供應程式都可讓您存取表格中的單一資料列,方法是在 URI 後方附加 ID 值。例如,如要從使用者字典擷取 <code>_ID</code> 為 <code>4</code> 的資料列,請使用以下內容 URI:
+
+
+</p>
+<pre>
+Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);
+</pre>
+<p>
+    在更新或刪除您擷取的一組資料列時,通常需要使用 ID 值。
+
+</p>
+<p class="note">
+    <strong>注意:</strong>{@link android.net.Uri} 和 {@link android.net.Uri.Builder} 類別包含可用於從字串建構格式正確之 URI 物件的簡便方法。
+而 {@link android.content.ContentUris} 則包含可用於將 ID 值附加至 URI 的簡便方法。上方程式碼片段是使用 {@link android.content.ContentUris#withAppendedId
+withAppendedId()} 將 ID 附加至 UserDictionary 內容 URI。
+
+
+</p>
+
+
+    <!-- Retrieving Data from the Provider -->
+<h2 id="SimpleQuery">從供應程式擷取資料</h2>
+<p>
+    本節以使用者字典供應程式為例,說明如何從供應程式擷取資料。
+
+</p>
+<p class="note">
+    為了避免造成混淆,本節中的程式碼片段是透過「UI 執行緒」呼叫 {@link android.content.ContentResolver#query ContentResolver.query()}。
+不過在實際程式碼中,您需要透過個別執行緒以非同步方式進行查詢。
+您可以使用 {@link android.content.CursorLoader} 類別 (詳情請參閱<a href="{@docRoot}guide/components/loaders.html">載入器</a>指南) 來完成這項作業。
+
+
+此外,本節中的程式碼都只是程式碼片段,無法呈現完整的應用程式。
+
+</p>
+<p>
+    如要從供應程式擷取資料,請按照下列基本步驟操作:
+</p>
+<ol>
+   <li>
+        要求供應程式的讀取權限。
+   </li>
+   <li>
+        定義可將查詢傳送至供應程式的程式碼。
+   </li>
+</ol>
+<h3 id="RequestPermissions">要求讀取權限</h3>
+<p>
+    您的應用程式需取得供應程式的「讀取權限」,才能從供應程式擷取資料。
+您無法在執行階段要求此權限;您必須使用 <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 元素和供應程式所定義的確切權限名稱,在宣示說明中指明您需要此權限。
+
+
+
+在宣示說明中指定此元素後,即可為您的應用程式「要求」這項權限。
+當使用者安裝您應用程式時,他們會間接核准此要求。
+
+</p>
+<p>
+    如要找出所使用供應程式的確切讀取權限名稱,以及該供應程式使用的其他存取權限名稱,請查閱供應程式的說明文件。
+
+
+</p>
+<p>
+    如要進一步瞭解用於存取供應程式的權限角色,請參閱<a href="#Permissions">內容供應程式權限</a>。
+
+</p>
+<p>
+    使用者字典供應程式會在本身的宣示說明檔案中定義 <code>android.permission.READ_USER_DICTIONARY</code> 權限,因此想讀取該供應程式的應用程式都必須要求此權限。
+
+
+</p>
+<!-- Constructing the query -->
+<h3 id="Query">建構查詢</h3>
+<p>
+    從供應程式擷取資料的下一個步驟是建構查詢。本節中的第一個程式碼片段可定義數個用於存取使用者字典供應程式的變數:
+
+</p>
+<pre class="prettyprint">
+
+// A "projection" defines the columns that will be returned for each row
+String[] mProjection =
+{
+    UserDictionary.Words._ID,    // Contract class constant for the _ID column name
+    UserDictionary.Words.WORD,   // Contract class constant for the word column name
+    UserDictionary.Words.LOCALE  // Contract class constant for the locale column name
+};
+
+// Defines a string to contain the selection clause
+String mSelectionClause = null;
+
+// Initializes an array to contain selection arguments
+String[] mSelectionArgs = {""};
+
+</pre>
+<p>
+    下一個程式碼片段以使用者字典供應程式為例,示範 {@link android.content.ContentResolver#query ContentResolver.query()} 的使用方式。
+
+供應程式用戶端查詢類似於 SQL 查詢,包含一組要傳回的資料欄、一組選取條件以及一個排序順序。
+
+</p>
+<p>
+    查詢需傳回的一組資料欄稱為「投影」<strong></strong>(即 <code>mProjection</code> 變數)。
+
+</p>
+<p>
+    指定要擷取的資料列的運算式會分為選取子句和選取引數。
+選取子句包含邏輯運算式和布林運算式、欄名稱和值 (即 <code>mSelectionClause</code> 變數)。
+如果您指定可替換的參數 <code>?</code>,而不是某個值,則查詢方法會從選取引數陣列 (即 <code>mSelectionArgs</code> 變數) 擷取相關值。
+
+
+</p>
+<p>
+    在下方程式碼片段中,如果使用者未輸入任何字詞,選取子句會設定為 <code>null</code>,此時查詢會傳回供應程式中的所有字詞。
+如果使用者輸入了某個字詞,則選取子句會設定為 <code>UserDictionary.Words.WORD + " = ?"</code>,而選取引數陣列的第一個元素會設為使用者所輸入的字詞。
+
+
+</p>
+<pre class="prettyprint">
+/*
+ * This defines a one-element String array to contain the selection argument.
+ */
+String[] mSelectionArgs = {""};
+
+// Gets a word from the UI
+mSearchString = mSearchWord.getText().toString();
+
+// Remember to insert code here to check for invalid or malicious input.
+
+// If the word is the empty string, gets everything
+if (TextUtils.isEmpty(mSearchString)) {
+    // Setting the selection clause to null will return all words
+    mSelectionClause = null;
+    mSelectionArgs[0] = "";
+
+} else {
+    // Constructs a selection clause that matches the word that the user entered.
+    mSelectionClause = UserDictionary.Words.WORD + " = ?";
+
+    // Moves the user's input string to the selection arguments.
+    mSelectionArgs[0] = mSearchString;
+
+}
+
+// Does a query against the table and returns a Cursor object
+mCursor = getContentResolver().query(
+    UserDictionary.Words.CONTENT_URI,  // The content URI of the words table
+    mProjection,                       // The columns to return for each row
+    mSelectionClause                   // Either null, or the word the user entered
+    mSelectionArgs,                    // Either empty, or the string the user entered
+    mSortOrder);                       // The sort order for the returned rows
+
+// Some providers return null if an error occurs, others throw an exception
+if (null == mCursor) {
+    /*
+     * Insert code here to handle the error. Be sure not to use the cursor! You may want to
+     * call android.util.Log.e() to log this error.
+     *
+     */
+// If the Cursor is empty, the provider found no matches
+} else if (mCursor.getCount() &lt; 1) {
+
+    /*
+     * Insert code here to notify the user that the search was unsuccessful. This isn't necessarily
+     * an error. You may want to offer the user the option to insert a new row, or re-type the
+     * search term.
+     */
+
+} else {
+    // Insert code here to do something with the results
+
+}
+</pre>
+<p>
+    這個查詢類似下方的 SQL 陳述式:
+</p>
+<pre>
+SELECT _ID, word, locale FROM words WHERE word = &lt;userinput&gt; ORDER BY word ASC;
+</pre>
+<p>
+    這個 SQL 陳述式會使用實際的欄名稱,而不是合約類別常數。
+</p>
+<h4 id="Injection">防範惡意輸入</h4>
+<p>
+    如果內容供應程式所管理的資料是儲存在 SQL 資料庫中,在原始 SQL 陳述式中納入不受信任的外部資料可能會導致 SQL 遭植入惡意程式碼。
+
+</p>
+<p>
+    以下提供選取子句範例:
+</p>
+<pre>
+// Constructs a selection clause by concatenating the user's input to the column name
+String mSelectionClause =  "var = " + mUserInput;
+</pre>
+<p>
+    使用這個選取子句可讓使用者能夠將惡意 SQL 串連至您的 SQL 陳述式。
+    例如,使用者可針對 <code>mUserInput</code> 輸入「nothing; DROP TABLE *;」,以產生 <code>var = nothing; DROP TABLE *;</code> 選取子句。
+由於系統會將選取子句視為 SQL 陳述式,因此這種選取子句可能會導致供應程式清除底層 SQLite 資料庫中的所有表格 (除非您設定供應程式捕捉 <a href="http://en.wikipedia.org/wiki/SQL_injection">SQL 植入</a>嘗試)。
+
+
+
+</p>
+<p>
+    為了避免發生這個問題,請使用包含 <code>?</code> 可替換參數和一系列選取引數的選取子句。
+當您執行此動作時,使用者輸入會直接繫結到查詢,而不是被解譯為 SQL 陳述式的一部分。
+
+    這樣一來,系統就不會將選取子句視為 SQL,進而防止使用者輸入植入惡意 SQL。您也可以使用以下選取子句,而不是透過串連方式納入使用者輸入:
+
+</p>
+<pre>
+// Constructs a selection clause with a replaceable parameter
+String mSelectionClause =  "var = ?";
+</pre>
+<p>
+    設定如下所示的一系列選取引數:
+</p>
+<pre>
+// Defines an array to contain the selection arguments
+String[] selectionArgs = {""};
+</pre>
+<p>
+    如下所示在選取引數中加入一個值:
+</p>
+<pre>
+// Sets the selection argument to the user's input
+selectionArgs[0] = mUserInput;
+</pre>
+<p>
+    建議您使用包含 <code>?</code> 可替換參數和一系列選取引數的選取子句,即使供應程式並非以 SQL 資料庫為基礎亦然。
+
+
+</p>
+<!-- Displaying the results -->
+<h3 id="DisplayResults">顯示查詢結果</h3>
+<p>
+    {@link android.content.ContentResolver#query ContentResolver.query()} 用戶端方法一律會針對符合查詢選取條件的資料列,傳回內含查詢的投影所指定資料欄的 {@link android.database.Cursor}。
+
+{@link android.database.Cursor} 物件會針對本身包含的資料列和資料欄提供隨機讀取存取權。
+
+您可以使用 {@link android.database.Cursor} 方法逐一查看結果中的資料列、決定每個資料欄的資料類型、匯出資料欄的資料,以及檢查結果的其他屬性。
+
+實作某些 {@link android.database.Cursor} 方法可在供應程式的資料變更時自動更新相關物件,或在 {@link android.database.Cursor} 變更時觸發觀察器物件中的方法,或是同時進行以上兩者。
+
+
+</p>
+<p class="note">
+    <strong>注意:</strong>供應程式可能會根據建立查詢物件的屬性限制資料欄的存取權。
+例如,內容供應程式會限制同步配接器存取部分資料欄,避免將這些資料欄傳回 Activity 或服務。
+
+</p>
+<p>
+    如果沒有任何資料欄符合選取條件,則供應程式會傳回 {@link android.database.Cursor#getCount Cursor.getCount()} 為 0 的 
+{@link android.database.Cursor} 物件 (即沒有任何內容的游標)。
+
+</p>
+<p>
+    如果發生內部錯誤,查詢結果將取決於供應程式的決定。供應程式可能會選擇傳回 <code>null</code>,或是擲回 {@link java.lang.Exception}。
+
+</p>
+<p>
+    由於 {@link android.database.Cursor} 是一份資料欄「清單」,因此要顯示 {@link android.database.Cursor} 的內容,最佳做法是透過 {@link android.widget.SimpleCursorAdapter} 將其連結至 {@link android.widget.ListView}。
+
+
+</p>
+<p>
+    以下程式碼片段是上一個程式碼片段的延伸。它會建立內含查詢所擷取 {@link android.database.Cursor} 的 
+{@link android.widget.SimpleCursorAdapter} 物件,並將該物件設定為 {@link android.widget.ListView} 的配接器:
+
+
+</p>
+<pre class="prettyprint">
+// Defines a list of columns to retrieve from the Cursor and load into an output row
+String[] mWordListColumns =
+{
+    UserDictionary.Words.WORD,   // Contract class constant containing the word column name
+    UserDictionary.Words.LOCALE  // Contract class constant containing the locale column name
+};
+
+// Defines a list of View IDs that will receive the Cursor columns for each row
+int[] mWordListItems = { R.id.dictWord, R.id.locale};
+
+// Creates a new SimpleCursorAdapter
+mCursorAdapter = new SimpleCursorAdapter(
+    getApplicationContext(),               // The application's Context object
+    R.layout.wordlistrow,                  // A layout in XML for one row in the ListView
+    mCursor,                               // The result from the query
+    mWordListColumns,                      // A string array of column names in the cursor
+    mWordListItems,                        // An integer array of view IDs in the row layout
+    0);                                    // Flags (usually none are needed)
+
+// Sets the adapter for the ListView
+mWordList.setAdapter(mCursorAdapter);
+</pre>
+<p class="note">
+    <strong>注意:</strong>如要返回內含 {@link android.database.Cursor} 的{@link android.widget.ListView},您必須為游標加入名為 <code>_ID</code> 的資料欄。
+
+    因為這樣,上述查詢會擷取「字詞」表格的 <code>_ID</code> 欄,即使 {@link android.widget.ListView} 未顯示該資料欄亦然。
+
+    這項限制也是為何大多數供應程式會針對本身的所有表格設定 <code>_ID</code> 欄的原因。
+
+</p>
+
+        <!-- Getting data from query results -->
+<h3 id="GettingResults">從查詢結果取得資料</h3>
+<p>
+    除了單純顯示查詢結果以外,您還可以將它們用於其他工作。例如,您可以從使用者字典擷取拼字,然後在其他供應程式中查閱這些拼字。
+
+如要這麼做,請逐一查看 {@link android.database.Cursor} 中的資料列:
+</p>
+<pre class="prettyprint">
+
+// Determine the column index of the column named "word"
+int index = mCursor.getColumnIndex(UserDictionary.Words.WORD);
+
+/*
+ * Only executes if the cursor is valid. The User Dictionary Provider returns null if
+ * an internal error occurs. Other providers may throw an Exception instead of returning null.
+ */
+
+if (mCursor != null) {
+    /*
+     * Moves to the next row in the cursor. Before the first movement in the cursor, the
+     * "row pointer" is -1, and if you try to retrieve data at that position you will get an
+     * exception.
+     */
+    while (mCursor.moveToNext()) {
+
+        // Gets the value from the column.
+        newWord = mCursor.getString(index);
+
+        // Insert code here to process the retrieved word.
+
+        ...
+
+        // end of while loop
+    }
+} else {
+
+    // Insert code here to report an error if the cursor is null or the provider threw an exception.
+}
+</pre>
+<p>
+    {@link android.database.Cursor} 實作方法包含數個用於從物件擷取不同資料類型的「get」方法。
+例如,上方程式碼片段使用了 {@link android.database.Cursor#getString getString()}。
+此外,這種實作方法還包括 
+{@link android.database.Cursor#getType getType()} 方法,可傳回指定資料欄資料類型的值。
+
+</p>
+
+
+    <!-- Requesting permissions -->
+<h2 id="Permissions">內容供應程式權限</h2>
+<p>
+    供應程式的應用程式可指定其他應用程式在存取供應程式的資料時所需的權限。
+這些權限可確保使用者瞭解應用程式嘗試存取的資料為何。
+根據供應程式需求,其他應用程式必須取得相關必要權限才能存取供應程式。
+使用者可在安裝應用程式時得知這些必要的權限。
+
+</p>
+<p>
+    如果供應程式的應用程式未指定任何權限,則其他應用程式就無法存取供應程式的資料。
+不過,供應程式的應用程式元件一律會具備完整的讀取及寫入存取權,無論供應程式指定的權限為何。
+
+</p>
+<p>
+    如上所述,使用者字典供應程式要求其他應用程式需取得 <code>android.permission.READ_USER_DICTIONARY</code> 權限,才能擷取其中的資料。
+
+    而該供應程式還個別針對插入、更新或刪除資料用途,指定了不同的 <code>android.permission.WRITE_USER_DICTIONARY</code> 權限。
+
+</p>
+<p>
+    如要取得存取供應程式時所需的權限,應用程式可利用 <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 元素在本身的宣示說明檔案中要求相關權限。
+
+當 Android 套件管理員安裝應用程式時,使用者必須授予該應用程式要求的所有權限。
+使用者授予所有權限後,套件管理員才能繼續進行安裝作業;如果使用者不授予權限,則套件管理員就會取消安裝。
+
+
+</p>
+<p>
+    以下的 
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+ 元素會要求使用者字典供應程式的讀取存取權:
+</p>
+<pre>
+    &lt;uses-permission android:name="android.permission.READ_USER_DICTIONARY"&gt;
+</pre>
+<p>
+    如要進一步瞭解權限對供應程式存取的影響,請參閱<a href="{@docRoot}guide/topics/security/security.html">安全性和權限</a>指南。
+
+</p>
+
+
+<!-- Inserting, Updating, and Deleting Data -->
+<h2 id="Modifications">插入、更新及刪除資料</h2>
+<p>
+    透過從供應程式擷取資料的相同方式,您也可以利用供應程式用戶端與供應程式的 {@link android.content.ContentProvider} 之間的互動來修改資料。
+
+    如要這麼做,請呼叫其中引數已傳送到相對應 {@link android.content.ContentProvider} 方法的 {@link android.content.ContentResolver} 方法。
+供應程式和供應程式用戶端會自動處理安全性和處理程序間通訊。
+
+</p>
+<h3 id="Inserting">插入資料</h3>
+<p>
+    如要在供應程式中插入資料,請呼叫 
+{@link android.content.ContentResolver#insert ContentResolver.insert()} 方法。
+這個方法會在供應程式中插入新的資料列,並傳回該列的內容 URI。
+    以下程式碼片段示範如何在使用者字典供應程式中插入新的字詞:
+</p>
+<pre class="prettyprint">
+// Defines a new Uri object that receives the result of the insertion
+Uri mNewUri;
+
+...
+
+// Defines an object to contain the new values to insert
+ContentValues mNewValues = new ContentValues();
+
+/*
+ * Sets the values of each column and inserts the word. The arguments to the "put"
+ * method are "column name" and "value"
+ */
+mNewValues.put(UserDictionary.Words.APP_ID, "example.user");
+mNewValues.put(UserDictionary.Words.LOCALE, "en_US");
+mNewValues.put(UserDictionary.Words.WORD, "insert");
+mNewValues.put(UserDictionary.Words.FREQUENCY, "100");
+
+mNewUri = getContentResolver().insert(
+    UserDictionary.Word.CONTENT_URI,   // the user dictionary content URI
+    mNewValues                          // the values to insert
+);
+</pre>
+<p>
+    新資料列的資料會傳入單一 {@link android.content.ContentValues} 物件,該物件的格式與單列游標類似。
+您不必為這個物件中的資料欄指定相同的資料類型,而且如果您不想指定任何值,可以將資料欄設定為 <code>null</code> 以使用 {@link android.content.ContentValues#putNull ContentValues.putNull()}。
+
+
+</p>
+<p>
+    該程式碼片段並不會新增 <code>_ID</code> 欄,這是因為系統自動會維護該欄。
+供應程式會將不重複值 <code>_ID</code> 指派給新增的所有資料列。
+供應程式通常會採用該值做為表格的主索引鍵。
+</p>
+<p>
+    <code>newUri</code> 以下方格式傳回的內容 URI 可用於識別新增的資料列:
+
+</p>
+<pre>
+content://user_dictionary/words/&lt;id_value&gt;
+</pre>
+<p>
+    <code>&lt;id_value&gt;</code> 是 ID 為 <code>_ID</code> 的資料列內容。
+    大多數供應程式可自動偵測這種格式的內容 URI,並據以針對指定的資料列執行特定作業。
+
+</p>
+<p>
+    如要從傳回的 {@link android.net.Uri} 取得 <code>_ID</code> 的值,請呼叫 
+{@link android.content.ContentUris#parseId ContentUris.parseId()}。
+</p>
+<h3 id="Updating">更新資料</h3>
+<p>
+    如要更新資料列,請使用內含經過更新的值 (與您在插入資料時所使用的值相同) 以及選取條件 (與您在建立查詢時所使用的選取條件相同) 的 {@link android.content.ContentValues} 物件。
+
+    您所使用的用戶端方法為 
+{@link android.content.ContentResolver#update ContentResolver.update()}。您只需針對要更新的資料欄,將相關值加到 {@link android.content.ContentValues} 物件即可。
+如果您想清除資料欄的內容,請將值設定為 <code>null</code>。
+
+</p>
+<p>
+    以下程式碼片段會針對地區代碼含有「en」字詞的所有資料列,將其地區代碼變更為 <code>null</code>。
+系統會傳回已更新的資料列數量:
+</p>
+<pre>
+// Defines an object to contain the updated values
+ContentValues mUpdateValues = new ContentValues();
+
+// Defines selection criteria for the rows you want to update
+String mSelectionClause = UserDictionary.Words.LOCALE +  "LIKE ?";
+String[] mSelectionArgs = {"en_%"};
+
+// Defines a variable to contain the number of updated rows
+int mRowsUpdated = 0;
+
+...
+
+/*
+ * Sets the updated value and updates the selected words.
+ */
+mUpdateValues.putNull(UserDictionary.Words.LOCALE);
+
+mRowsUpdated = getContentResolver().update(
+    UserDictionary.Words.CONTENT_URI,   // the user dictionary content URI
+    mUpdateValues                       // the columns to update
+    mSelectionClause                    // the column to select on
+    mSelectionArgs                      // the value to compare to
+);
+</pre>
+<p>
+    建議您在呼叫 {@link android.content.ContentResolver#update ContentResolver.update()} 時對使用者輸入進行檢測。
+如需詳細資訊,請參閱<a href="#Injection">防範惡意輸入</a>。
+
+</p>
+<h3 id="Deleting">刪除資料</h3>
+<p>
+    刪除資料列的方法與擷取資料列資料類似:您必須為想刪除的資料列指定選取條件,用戶端方法最後會傳回已刪除的資料列數量。
+
+    以下程式碼片段可刪除應用程式 ID 為「user」的資料列。此外,這個方法還會傳回已刪除的資料列數量。
+
+</p>
+<pre>
+
+// Defines selection criteria for the rows you want to delete
+String mSelectionClause = UserDictionary.Words.APP_ID + " LIKE ?";
+String[] mSelectionArgs = {"user"};
+
+// Defines a variable to contain the number of rows deleted
+int mRowsDeleted = 0;
+
+...
+
+// Deletes the words that match the selection criteria
+mRowsDeleted = getContentResolver().delete(
+    UserDictionary.Words.CONTENT_URI,   // the user dictionary content URI
+    mSelectionClause                    // the column to select on
+    mSelectionArgs                      // the value to compare to
+);
+</pre>
+<p>
+    建議您在呼叫 {@link android.content.ContentResolver#delete ContentResolver.delete()} 時對使用者輸入進行檢測。
+如需詳細資訊,請參閱<a href="#Injection">防範惡意輸入</a>。
+
+</p>
+<!-- Provider Data Types -->
+<h2 id="DataTypes">供應程式資料類型</h2>
+<p>
+    內容供應程式可提供多種資料類型。使用者字典供應程式只能提供文字,但供應程式還可提供下列格式:
+
+</p>
+    <ul>
+        <li>
+            整數
+        </li>
+        <li>
+            長整數 (long)
+        </li>
+        <li>
+            浮點數
+        </li>
+        <li>
+            長浮點數 (double)
+        </li>
+    </ul>
+<p>
+    供應程式慣用的其他資料類型為二進位大型物件 (BLOB),這種資料會實作成 64 KB 位元組陣列。
+如果想瞭解可用的資料類型,請查閱 {@link android.database.Cursor} 類別的「get」方法。
+
+</p>
+<p>
+    供應程式的說明文件通常會列出其中每個資料欄的資料類型。
+    使用者字典供應程式的資料類型列在其合約類別 {@link android.provider.UserDictionary.Words} 的參考文件 (如需合約類別的相關資訊,請參閱<a href="#ContractClasses">合約類別</a>一節) 中。
+
+
+    您也可以呼叫 {@link android.database.Cursor#getType
+Cursor.getType()} 來確認可用的資料類型。
+</p>
+<p>
+    此外,供應程式也會保留任何所定義內容 URI 的 MIME 資料類型資訊。您可以利用 MIME 類型資訊確認您的應用程式是否可處理供應程式所提供的資料,或是根據 MIME 類型選擇處理方式類型。
+
+當您使用內含複雜的資料結構或檔案的供應程式時,通常需要使用 MIME 類型。
+
+例如,聯絡人供應程式中的 {@link android.provider.ContactsContract.Data} 表格會使用 MIME 類型為每個資料列中儲存的聯絡人資料加上標籤。
+
+如要取得與內容 URI 相對應的 MIME 類型,請呼叫 
+{@link android.content.ContentResolver#getType ContentResolver.getType()}。
+</p>
+<p>
+    如要瞭解標準與自訂 MIME 類型的語法,請參閱 <a href="#MIMETypeReference">MIME 類型參考資料</a>。
+
+</p>
+
+
+<!-- Alternative Forms of Provider Access -->
+<h2 id="AltForms">供應程式存取權的替代形式</h2>
+<p>
+    開發應用程式時會使用到 3 種供應程式存取權的替代形式:
+</p>
+<ul>
+    <li>
+        <a href="#Batch">批次存取</a>:您可以使用 {@link android.content.ContentProviderOperation} 類別中的方法建立批次存取權呼叫,然後利用 {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()} 套用這些呼叫。
+
+
+    </li>
+    <li>
+        非同步查詢:建議您在個別執行緒中進行查詢。您可以使用 {@link android.content.CursorLoader} 類別來完成這項作業。
+如需相關示範說明,請參閱<a href="{@docRoot}guide/components/loaders.html">載入器</a>指南中的範例。
+
+
+    </li>
+    <li>
+        <a href="#Intents">透過意圖存取資料</a>:您無法直接將意圖傳送到供應程式,但可以將意圖傳送到供應程式的應用程式;供應程式的應用程式通常是修改供應程式資料的最佳環境。
+
+
+    </li>
+</ul>
+<p>
+    如需透過意圖進行批次存取和修改作業的相關資訊,請參閱下文。
+</p>
+<h3 id="Batch">批次存取</h3>
+<p>
+    您可利用供應程式的批次存取功能插入大量資料列、透過相同方法呼叫在多個表格中插入資料列,或是透過單次交易 (微型作業) 在處理程序之間執行一組作業。
+
+
+</p>
+<p>
+    如要以「批次模式」存取供應程式,請建立一系列 {@link android.content.ContentProviderOperation} 物件,然後使用 {@link android.content.ContentResolver#applyBatch ContentResolver.applyBatch()} 將這些物件分派給內容供應程式。
+
+
+請將內容供應程式的「授權」<em></em>(而不是特定內容 URI) 傳入這個方法。這樣可讓陣列中的所有 {@link android.content.ContentProviderOperation} 物件能夠在不同表格中運作。
+
+
+如果您呼叫 {@link android.content.ContentResolver#applyBatch
+ContentResolver.applyBatch()},則系統會傳回一系列結果。
+</p>
+<p>
+    {@link android.provider.ContactsContract.RawContacts} 合約類別的說明包含可展示批次插入作業的程式碼片段。
+<a href="{@docRoot}resources/samples/ContactManager/index.html">聯絡人管理員</a>範例應用程式的 <code>ContactAdder.java</code> 來源檔案包含批次存取範例供您參考。
+
+
+
+</p>
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>使用協助程式顯示資料</h2>
+<p>
+    如果您的應用程式「沒有」<em></em>存取權限,而您仍想使用意圖在其他應用程式中顯示資料。
+例如,日曆應用程式接受用於顯示特定日期或活動的 {@link android.content.Intent#ACTION_VIEW} 意圖。
+
+    這樣可讓您顯示日曆資訊,而不必自行建立使用者介面。如要進一步瞭解此功能,請參閱<a href="{@docRoot}guide/topics/providers/calendar-provider.html">日曆供應程式</a>指南。
+
+
+</p>
+<p>
+    您傳送意圖的目標應用程式未必要與供應程式建立關聯。
+例如,您可以從聯絡人供應程式擷取聯絡人資料,然後將內含聯絡人圖片內容 URI 的 {@link android.content.Intent#ACTION_VIEW} 意圖傳送到圖片檢視器。
+
+
+</p>
+</div>
+</div>
+<h3 id="Intents">透過意圖存取資料</h3>
+<p>
+    意圖可提供內容供應程式的間接存取權。即使您的應用程式沒有存取權限,您仍可透過以下方式允許使用者存取供應程式的資料:從具備權限的應用程式取回結果意圖,或是啟用具備權限的應用程式並允許使用者存取該應用程式。
+
+
+
+</p>
+<h4>透過臨時權限取得存取權</h4>
+<p>
+    即使沒有適當的存取權限,您仍可存取內容供應程式的資料,方法是傳送意圖到沒有權限的應用程式,然後接收內含「URI」權限的結果意圖。
+
+
+    URI 權限是特定內容 URI 專用的權限;在接收權限的 Activity 結束之前,這類權限會維持有效狀態。
+具備永久權限的應用程式可授予臨時權限,只要在結果意圖中設定旗標即可:
+
+</p>
+<ul>
+    <li>
+        <strong>讀取權限:</strong>
+        {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}
+    </li>
+    <li>
+        <strong>寫入權限:</strong>
+        {@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION}
+    </li>
+</ul>
+<p class="note">
+    <strong>注意:</strong>這些旗標並不會將讀取或寫入存取權授予系統在內容 URI 中提供授權的供應程式。存取權僅供 URI 使用。
+
+</p>
+<p>
+    供應程式會使用 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+ 元素的 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">android:grantUriPermission</a></code>
+ 屬性以及 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
+ 元素的 
+<code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">&lt;grant-uri-permission&gt;</a></code>
+ 子元素在本身的宣示說明中為內容 URI 定義 URI 權限。如要進一步瞭解 URI 權限的運作機制,請參閱<a href="{@docRoot}guide/topics/security/security.html">安全性和權限</a>指南的「URI 權限」。
+
+
+</p>
+<p>
+    例如,即使您沒有 {@link android.Manifest.permission#READ_CONTACTS} 權限,您仍可透過聯絡人供應程式擷取聯絡人資料。
+您可能會想透過可用來在聯絡人的生日當天傳送電子賀卡給對方的應用程式進行這項動作。
+您偏好讓使用者控管要讓您的應用程式使用的聯絡人資料,而不是要求 {@link android.Manifest.permission#READ_CONTACTS} 授權您存取使用者的所有聯絡人以及個人資訊。
+
+
+為了達到這個目的,您進行了下列程序:
+</p>
+<ol>
+    <li>
+        您的應用程式使用 {@link android.app.Activity#startActivityForResult
+startActivityForResult()} 方法,傳送了內含 
+{@link android.content.Intent#ACTION_PICK} 動作的意圖以及「聯絡人」MIME 類型 
+{@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE}。
+
+    </li>
+    <li>
+        由於該意圖符合聯絡人應用程式的「選取」Activity 的意圖篩選器,因此該 Activity 會在移動到前景。
+
+    </li>
+    <li>
+        在選取 Activity 中,使用者選取了要更新的聯絡人。
+一旦使用者進行這項動作,選取 Activity 便會呼叫 
+{@link android.app.Activity#setResult setResult(resultcode, intent)} 來設定要傳回您應用程式的意圖。
+該意圖包含使用者所選聯絡人的內容 URI,以及「額外」的旗標 
+{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}。
+這些旗標可將 URI 權限授予您的應用程式,以便其讀取內容 URI 指向的聯絡人資料。選取 Activity 隨後會呼叫 {@link android.app.Activity#finish()} 來傳回您應用程式的控制權。
+
+
+
+    </li>
+    <li>
+        您的 Activity 返回前景,而系統呼叫您 Activity 的 
+{@link android.app.Activity#onActivityResult onActivityResult()} 方法。
+這個方法可接收聯絡人應用程式中的選取 Activity 所建立的結果意圖。
+
+    </li>
+    <li>
+        即使您未在宣示說明中要求供應程式的永久讀取權限,只要利用結果意圖的內容 URI 即可從聯絡人供應程式讀取聯絡人資料。
+
+您之後可以取得聯絡人的出生日期資訊或聯絡人的電子郵件地址,以便傳送電子賀卡給對方。
+
+    </li>
+</ol>
+<h4>使用其他應用程式</h4>
+<p>
+    允許使用者修改您無法存取的資料的簡單方式,是啟用具備相關權限的應用程式,並且讓使用者透過該應用程式進行修改作業。
+
+</p>
+<p>
+    例如,日曆應用程式接受可讓您啟用應用程式插入 UI 的 
+{@link android.content.Intent#ACTION_INSERT} 意圖。您可以在該意圖中傳入「額外」的資料,供應用程式用於預先填入使用者介面。由於週期性活動的語法較為複雜,因此建議您利用 {@link android.content.Intent#ACTION_INSERT} 啟用日曆應用程式,然後讓使用者透過該應用程式將活動插入日曆供應程式。
+
+
+
+
+</p>
+<!-- Contract Classes -->
+<h2 id="ContractClasses">合約類別</h2>
+<p>
+    合約類別可定義協助應用程式使用內容 URI、欄名稱、意圖動作,以及內容供應程式的其他功能的常數。
+合約類別並不會自動納入供應程式;供應程式的開發人員必須自行定義合約類別,然後將其提供給其他開發人員。
+
+Android 平台內建的大多數供應程式都可在 {@link android.provider} 套件中取得對應的合約類別。
+
+</p>
+<p>
+    例如,使用者字典供應程式有一個內含內容 URI 和欄名稱常數的 {@link android.provider.UserDictionary} 合約類別。
+「字詞」表格的內容 URI 是在 
+{@link android.provider.UserDictionary.Words#CONTENT_URI UserDictionary.Words.CONTENT_URI} 常數中定義。
+
+    此外,{@link android.provider.UserDictionary.Words} 類別也包含欄名稱常數,可用於本指南中的程式碼片段範例。
+例如,您可以將查詢投影定義成如下所示:
+
+</p>
+<pre>
+String[] mProjection =
+{
+    UserDictionary.Words._ID,
+    UserDictionary.Words.WORD,
+    UserDictionary.Words.LOCALE
+};
+</pre>
+<p>
+    聯絡人供應程式的另一個合約類別為 {@link android.provider.ContactsContract}。
+    此類別的參考文件附有程式碼片段範例。其中一個 
+{@link android.provider.ContactsContract.Intents.Insert} 子類別為內含意圖常數和意圖資料的合約類別。
+
+</p>
+
+
+<!-- MIME Type Reference -->
+<h2 id="MIMETypeReference">MIME 類型參考資料</h2>
+<p>
+    內容供應程式可傳回標準 MIME 媒體類型或自訂媒體類型字串,或是以上兩者。
+</p>
+<p>
+    以下是 MIME 類型的格式
+</p>
+<pre>
+<em>type</em>/<em>subtype</em>
+</pre>
+<p>
+    例如,常見的 MIME 類型 <code>text/html</code> 包含 <code>text</code> 類型以及 <code>html</code> 子類型。
+如果供應程式傳回這種 URI 類型,代表採用該 URI 的查詢會傳回內含 HTML 標記的文字。
+
+</p>
+<p>
+    自訂 MIME 類型字串 (亦稱為「廠商專用」MIME 類型) 包含較為複雜的類型<em></em>和子類型<em></em>值。
+針對多個資料欄,類型值<em></em>一律會如下所示
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>
+</pre>
+<p>
+    或者,針對單一資料欄,類型值一律會如下所示
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>
+</pre>
+<p>
+    。
+</p>
+<p>
+    子類型<em></em>為供應程式專用。Android 內建的供應程式通常包含簡易的子類型。
+例如,當聯絡人應用程式建立電話號碼資料列時,會為該列設定下列 MIME 類型:
+
+</p>
+<pre>
+vnd.android.cursor.item/phone_v2
+</pre>
+<p>
+    請注意,子類型值為 <code>phone_v2</code>。
+</p>
+<p>
+    其他的供應程式開發人員可能會根據供應程式的授權和表格名稱,自行建立專屬的子類型模式。
+例如,考慮一個包含火車時刻表的供應程式。
+    供應程式的授權為 <code>com.example.trains</code> 且包括 Line1、Line2 和 Line3 表格。
+根據 Line1 表格的內容 URI
+</p>
+<p>
+<pre>
+content://com.example.trains/Line1
+</pre>
+<p>
+    供應程式會傳回 MIME 類型
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>/vnd.example.line1
+</pre>
+<p>
+     根據 Line1 表格的內容 URI
+</p>
+<pre>
+content://com.example.trains/Line2/5
+</pre>
+<p>
+    供應程式會傳回 MIME 類型
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>/vnd.example.line2
+</pre>
+<p>
+    大多數內容供應程式會針對其使用的 MIME 類型定義合約類別常數。例如,聯絡人供應程式的合約類別 {@link android.provider.ContactsContract.RawContacts} 會為某個 MIME 類型的原始聯絡人列定義 {@link android.provider.ContactsContract.RawContacts#CONTENT_ITEM_TYPE} 常數。
+
+
+
+
+</p>
+<p>
+    如要進一步瞭解個別資料列的內容 URI,請參閱<a href="#ContentURIs">內容 URI</a>。
+
+</p>
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/providers/content-provider-creating.jd b/docs/html-intl/intl/zh-tw/guide/topics/providers/content-provider-creating.jd
new file mode 100644
index 0000000..3d46ee4
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/providers/content-provider-creating.jd
@@ -0,0 +1,1214 @@
+page.title=建立內容供應程式
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+
+<h2>本文件內容</h2>
+<ol>
+    <li>
+        <a href="#DataStorage">設計資料儲存空間</a>
+    </li>
+    <li>
+        <a href="#ContentURI">設計內容 URI</a>
+    </li>
+    <li>
+        <a href="#ContentProvider">實作 ContentProvider 類別</a>
+        <ol>
+            <li>
+                <a href="#RequiredAccess">必要方法</a>
+            </li>
+            <li>
+                <a href="#Query">實作 query() 方法</a>
+            </li>
+            <li>
+                <a href="#Insert">實作 insert() 方法</a>
+            </li>
+            <li>
+                <a href="#Delete">實作 delete() 方法</a>
+            </li>
+            <li>
+                <a href="#Update">實作 update() 方法</a>
+            </li>
+            <li>
+                <a href="#OnCreate">實作 onCreate() 方法</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#MIMETypes">實作內容供應程式 MIME 類型</a>
+        <ol>
+            <li>
+                <a href="#TableMIMETypes">表格 MIME 類型</a>
+            </li>
+            <li>
+                <a href="#FileMIMETypes">檔案 MIME 類型</a>
+            </li>
+        </ol>
+    </li>
+    <li>
+        <a href="#ContractClass">實作合約類別</a>
+    </li>
+    <li>
+        <a href="#Permissions">實作內容供應程式權限</a>
+    </li>
+    <li>
+        <a href="#ProviderElement">&lt;provider&gt; 元素</a>
+    </li>
+    <li>
+        <a href="#Intents">意圖和資料存取權</a>
+    </li>
+</ol>
+<h2>重要類別</h2>
+    <ol>
+        <li>
+            {@link android.content.ContentProvider}
+        </li>
+        <li>
+            {@link android.database.Cursor}
+        </li>
+        <li>
+            {@link android.net.Uri}
+        </li>
+    </ol>
+<h2>相關範例</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}resources/samples/NotePad/index.html">                Note Pad 範例應用程式
+            </a>
+
+        </li>
+    </ol>
+<h2>另請參閱</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">        內容供應程式基本存放庫概念</a>
+
+        </li>
+        <li>
+            <a href="{@docRoot}guide/topics/providers/calendar-provider.html">        日曆供應程式</a>
+
+        </li>
+    </ol>
+</div>
+</div>
+
+
+<p>
+    內容供應程式可管理中央資料存放庫的存取權。您可以將供應程式實作成 Android 應用程式的一或多個類別,以及宣示說明檔案的元素。
+
+您的其中一個類別會實作子類別
+{@link android.content.ContentProvider} (供應程式與其他應用程式之間的介面)。
+雖然內容供應程式的用途是將資料提供給其他應用程式,不過您也可以在應用程式中加入 Activity,讓使用者查詢及修改供應程式所管理的資料。
+
+
+</p>
+<p>
+    本主題的其餘部分為一份說明建置內容供應程式的步驟清單,以及一份可供您使用的 API 清單。
+
+</p>
+
+
+<!-- Before You Start Building -->
+<h2 id="BeforeYouStart">建置供應程式的前置作業</h2>
+<p>
+    請先完成下列事項,再開始建置供應程式:
+</p>
+<ol>
+    <li>
+        <strong>評估建置內容供應程式的必要性</strong>。如果您想提供下列功能,您就必須建置內容供應程式:
+
+        <ul>
+            <li>您想將複雜的資料或檔案提供給其他應用程式。</li>
+            <li>您想讓使用者從您的應用程式將複雜的資料複製到其他應用程式。</li>
+            <li>您想使用搜尋架構提供自訂搜尋建議。</li>
+        </ul>
+    <p>
+        如果您的應用程式內建所有您想提供的功能,您就「不需要」<em></em>建置供應程式來使用 SQLite 資料庫。
+
+    </p>
+    </li>
+    <li>
+        詳閱<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">內容供應程式基本概念</a>進一步瞭解供應程式 (如果您尚未閱讀該文章的話)。
+
+
+    </li>
+</ol>
+<p>
+    完成上述事項後,請按照下列步驟建置供應程式:
+</p>
+<ol>
+    <li>
+        為您的資料設計原始儲存空間。內容供應程式會以兩種方式提供資料:
+        <dl>
+            <dt>
+                檔案資料
+            </dt>
+            <dd>
+                通常儲存在檔案中的資料,例如相片、音訊或影片。
+這種檔案會儲存在您應用程式的私人空間中。
+您的供應程式可針對此檔案提供處理支援,藉此回應其他應用程式發出的檔案要求。
+
+            </dd>
+            <dt>
+                「結構化」資料
+            </dt>
+            <dd>
+                通常儲存在資料庫、陣列或類似結構中的資料。
+                這種資料會採用與內含資料列和資料欄的表格相容的格式儲存。資料列代表一個實體,例如某個人或庫存中的商品。
+而資料欄則代表實體的部分資料,例如某個人的名稱或商品的售價。
+這種資料類型一般會儲存在 SQLite 資料庫,但您也可以將它儲存在其他類型的永久儲存空間。
+
+如要進一步瞭解 Android 系統提供的儲存空間類型,請參閱<a href="#DataStorage">設計資料儲存空間</a>。
+
+
+            </dd>
+        </dl>
+    </li>
+    <li>
+        定義 {@link android.content.ContentProvider} 類別及其所需方法的實作方式。
+這個類別是您的資料與 Android 系統其餘部分之間的介面。
+如要進一步瞭解這個類別,請參閱<a href="#ContentProvider">實作 ContentProvider 類別</a>。
+
+    </li>
+    <li>
+        定義供應程式的授權字串、內容 URI 和資料列名稱。如果您希望供應程式的應用程式能控制意圖,請同時定義意圖動作、額外資料和旗標。
+
+此外,您還需要針對想存取您資料的應用程式,定義其所需的權限。
+建議您將這些值定義為個別合約類別中的常數;您之後可將這個類別提供給其他開發人員。
+如要進一步瞭解內容 URI,請參閱<a href="#ContentURI">設計內容 URI</a>。
+
+
+        如要進一步瞭解意圖,請參閱<a href="#Intents">意圖和資料存取權</a>。
+
+    </li>
+    <li>
+        視需要進行其他動作,例如新增範例資料,或實作 {@link android.content.AbstractThreadedSyncAdapter} 讓應程式與雲端資料之間的資料保持同步。
+
+
+    </li>
+</ol>
+
+
+<!-- Designing Data Storage -->
+<h2 id="DataStorage">設計資料儲存空間</h2>
+<p>
+    內容供應程式是模組化格式資料的介面。建議這個介面之前,請先決定您儲存資料的方式。
+您可用任何偏好格式儲存資料,然後設計對應介面來讀取及寫入所需資料。
+
+</p>
+<p>
+    以下是 Android 提供的部分資料儲存技術:
+</p>
+<ul>
+    <li>
+        Android 系統內含 SQLite 資料庫 API,可讓 Android 本身的供應程式用於儲存以表格為基礎的資料。
+
+{@link android.database.sqlite.SQLiteOpenHelper} 類別可協助您建立資料庫,而 {@link android.database.sqlite.SQLiteDatabase} 類別則是用於存取資料庫的基礎類別。
+
+
+        <p>
+            請記住,您不需要使用資料庫實作存放庫。供應程式會以一組表格的形式對外顯示 (類似於相關的資料庫),不過這並非在內部實作供應程式的必要條件。
+
+
+        </p>
+    </li>
+    <li>
+        如果您想儲存檔案資料,請使用 Android 提供的多種適用於檔案的 API。
+        如要進一步瞭解檔案儲存空間,請參閱<a href="{@docRoot}guide/topics/data/data-storage.html">資料儲存空間</a>。
+如果您想設計可提供媒體相關資料 (例如音樂或影片) 的供應程式,建議您建立結合表格資料與檔案的供應程式。
+
+
+    </li>
+    <li>
+        如果您想存取以網路為基準的資料,請使用 {@link java.net} 和
+{@link android.net} 中的類別。您也可以將以網路為基準的資料同步到本機資料儲存空間 (例如資料庫),然後以表格或檔案的形式提供資料。
+
+        <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">範例同步配接器</a>應用程式範例示範了如何進行這種同步處理作業。
+
+    </li>
+</ul>
+<h3 id="DataDesign">
+    資料設計注意事項
+</h3>
+<p>
+    以下提供一些有關設計供應程式資料結構的祕訣:
+</p>
+<ul>
+    <li>
+        表格資料一律需包含「主索引鍵」欄,方便供應程式保存每個資料列的數值。
+您可以使用這些值將資料列連結至其他表格中的相關資料列 (也就是將這些值當作「外部索引鍵」使用)。
+事實上,您也可以使用此資料欄的任何名稱進行連結,但使用 {@link android.provider.BaseColumns#_ID BaseColumns._ID} 是最佳做法,這是因為將供應程式的查詢結果連結至
+{@link android.widget.ListView} 時需要將某個擷取出的資料列命名為 
+<code>_ID</code>。
+
+
+    </li>
+    <li>
+        如果您想提供點陣圖或檔案資料的一大部分,請將資料儲存在檔案中,然後以間接方式提供該檔案,而不要直接將該檔案儲存在表格中。
+
+如果您採用這種做法,請務必通知供應程式的使用者採用
+{@link android.content.ContentResolver} 檔案方法來存取資料。
+    </li>
+    <li>
+        使用二進位大型物件 (BLOB) 資料類型儲存大小或結構不同的資料。
+例如,您可以使用 BLOB 欄儲存<a href="http://code.google.com/p/protobuf">通訊協定緩衝區</a> 或 <a href="http://www.json.org">JSON 結構</a>。
+
+
+        <p>
+            此外,您也可以使用 BLOB 實作「按結構定義分門別類」<em></em>的表格。在這種表格中,您需要定義主索引鍵欄、MIME 類型欄和一或多個 BLOB 一般資料欄。
+
+MIME 類型欄中的值會決定 BLOB 欄的資料定義,
+這可讓您在同一表格中儲存多種資料列類型。
+聯絡人供應程式的「資料」表格
+{@link android.provider.ContactsContract.Data} 即為按結構定義分門別類的表格範例。
+
+        </p>
+    </li>
+</ul>
+<!-- Designing Content URIs -->
+<h2 id="ContentURI">設計內容 URI</h2>
+<p>
+    <strong>內容 URI</strong> 是指用於識別供應程式資料的 URI,其中包括整個供應程式的符號名稱 (亦即供應程式的<strong>授權</strong>),以及指向表格或檔案的名稱 (亦即<strong>路徑</strong>)。
+
+選用的 ID 部分則會指向表格中的個別資料欄。
+
+{@link android.content.ContentProvider} 的每個資料存取方法均包括一個內容 URI (引數);該內容 URI 可讓您決定要存取哪個表格、資料列或檔案。
+
+</p>
+<p>
+    如需內容 URI 的基本概念,請參閱<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">內容供應程式基本概念</a>。
+
+
+</p>
+<h3>設計授權</h3>
+<p>
+    供應程式通常會包含一個授權,可當做供應程式 Android 內部名稱。為了避免與其他供應程式發生衝突,請務必反向使用網際網路網域擁有權作為供應程式授權的基礎。
+
+此外,也請針對 Android 套件名稱採取此建議做法;您可以將供應程式授權定義為內含供應程式的套件名稱的副檔名。
+
+例如,假設您 Android 套件的名稱為
+ <code>com.example.&lt;appname&gt;</code>,則請將供應程式的授權定義為 
+<code>com.example.&lt;appname&gt;.provider</code>。
+</p>
+<h3>設計路徑結構</h3>
+<p>
+    開發人員通常只要附加指向個別表格的路徑,即可從授權建立內容 URI。
+例如,假設您有「table1」<em></em>和「table2」<em></em>這兩個表格,則您可以結合上述範例中的授權來產生內容 URI 
+<code>com.example.&lt;appname&gt;.provider/table1</code> 和 
+<code>com.example.&lt;appname&gt;.provider/table2</code>。
+
+路徑並不侷限於單一區隔,而您也不必為每個路徑層級產生表格。
+
+</p>
+<h3>處理內容 URI ID</h3>
+<p>
+    一般來說,供應程式可利用 URI 尾端資料列的 ID 值接受內容 URI,藉此提供某個資料列的存取權。此外,供應程式通常也可比對 ID 值與表格的 <code>_ID</code> 欄,然後對相符的資料列執行要求的存取動作。
+
+
+
+</p>
+<p>
+    這種機制可協助採用一般設計模式應用程式存取供應程式,讓應用程式對供應程式執行查詢,並且利用 {@link android.widget.CursorAdapter} 在 {@link android.widget.ListView} 中顯示最終的 {@link android.database.Cursor}。
+
+
+    定義 {@link android.widget.CursorAdapter} 時需要將
+{@link android.database.Cursor} 的其中一個資料列設為 <code>_ID</code>。
+</p>
+<p>
+    使用者之後挑選了顯示在 UI 中的某一資料列,以查看或修改資料。
+應用程式會從支援
+ {@link android.widget.ListView} 的 {@link android.database.Cursor} 取得對應的資料列、取得該資料列的 <code>_ID</code> 值,然後將該值附加到內容 URI 並向供應程式發出存取要求。
+供應程式之後可對使用者挑選的資料列進行查詢或修改。
+
+</p>
+<h3>內容 URI 模式</h3>
+<p>
+    為協助您決定要對傳入內容 URI 採取什麼動作,供應程式 API 提供了簡便類別 {@link android.content.UriMatcher},可將內容 URI「模式」對應至整數值。
+
+您可以在 <code>switch</code> 陳述式中使用整數值,決定要對符合特定模式的內容 URI 採取的動作。
+
+</p>
+<p>
+    內容 URI 模式會比對採用萬用字元的內容 URI:
+</p>
+    <ul>
+        <li>
+            <strong><code>*</code>:</strong>比對由任何有效字元組成的字串;長度不限。
+        </li>
+        <li>
+            <strong><code>#</code>:</strong>比對由數字組成的字串;長度不限。
+        </li>
+    </ul>
+<p>
+    以設計及編寫內容 URI 處理方式為例,假設供應程式內含 <code>com.example.app.provider</code> 授權,可識別下列指向表格的內容 URI:
+
+
+</p>
+<ul>
+    <li>
+        <code>content://com.example.app.provider/table1</code>:名稱為 <code>table1</code> 的表格。
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table2/dataset1</code>:名稱為 
+<code>dataset1</code> 的表格。
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table2/dataset2</code>:名稱為 
+<code>dataset2</code> 的表格。
+    </li>
+    <li>
+        <code>content://com.example.app.provider/table3</code>:名稱為 <code>table3</code> 的表格。
+    </li>
+</ul>
+<p>
+    此外,供應程式也會識別附有資料列 ID 的內容 URI,例如 <code>content://com.example.app.provider/table3/1</code> 會指定 <code>table3</code> 中 ID 為
+ <code>1</code> 的資料列。
+
+</p>
+<p>
+    以下是可能的內容 URI 模式:
+</p>
+<dl>
+    <dt>
+        <code>content://com.example.app.provider/*</code>
+    </dt>
+    <dd>
+        與供應程式的任何內容 URI 相符。
+    </dd>
+    <dt>
+        <code>content://com.example.app.provider/table2/*</code>:
+    </dt>
+    <dd>
+        與 <code>dataset1</code> 和 <code>dataset2</code> 表格的內容 URI 相符,但與 <code>table1</code> 或 
+<code>table3</code> 的內容 URI 不符。
+
+    </dd>
+    <dt>
+        <code>content://com.example.app.provider/table3/#</code>:比對 <code>table3</code> 中單一資料列的內容 URI,例如
+ <code>content://com.example.app.provider/table3/6</code> 會比對其中的
+ <code>6</code> 所指定的資料列。
+
+    </dt>
+</dl>
+<p>
+    以下程式碼片段說明各種方法在 {@link android.content.UriMatcher} 中的運作方式。
+    這個程式碼會以不同方式處理整個表格的 URI 以及單一資料列的 URI;針對表格使用內容 URI 模式 
+<code>content://&lt;authority&gt;/&lt;path&gt;</code>,針對單一資料列則使用 
+<code>content://&lt;authority&gt;/&lt;path&gt;/&lt;id&gt;</code>。
+
+</p>
+<p>
+    {@link android.content.UriMatcher#addURI(String, String, int) addURI()} 方法會將授權和
+路徑對應至某個整數值,而 {@link android.content.UriMatcher#match(Uri)
+    match()} 方法會傳回 URI 的整數值。<code>switch</code> 陳述式則會要查詢整個表格,還是查詢單一記錄:
+
+</p>
+<pre class="prettyprint">
+public class ExampleProvider extends ContentProvider {
+...
+    // Creates a UriMatcher object.
+    private static final UriMatcher sUriMatcher;
+...
+    /*
+     * The calls to addURI() go here, for all of the content URI patterns that the provider
+     * should recognize. For this snippet, only the calls for table 3 are shown.
+     */
+...
+    /*
+     * Sets the integer value for multiple rows in table 3 to 1. Notice that no wildcard is used
+     * in the path
+     */
+    sUriMatcher.addURI("com.example.app.provider", "table3", 1);
+
+    /*
+     * Sets the code for a single row to 2. In this case, the "#" wildcard is
+     * used. "content://com.example.app.provider/table3/3" matches, but
+     * "content://com.example.app.provider/table3 doesn't.
+     */
+    sUriMatcher.addURI("com.example.app.provider", "table3/#", 2);
+...
+    // Implements ContentProvider.query()
+    public Cursor query(
+        Uri uri,
+        String[] projection,
+        String selection,
+        String[] selectionArgs,
+        String sortOrder) {
+...
+        /*
+         * Choose the table to query and a sort order based on the code returned for the incoming
+         * URI. Here, too, only the statements for table 3 are shown.
+         */
+        switch (sUriMatcher.match(uri)) {
+
+
+            // If the incoming URI was for all of table3
+            case 1:
+
+                if (TextUtils.isEmpty(sortOrder)) sortOrder = "_ID ASC";
+                break;
+
+            // If the incoming URI was for a single row
+            case 2:
+
+                /*
+                 * Because this URI was for a single row, the _ID value part is
+                 * present. Get the last path segment from the URI; this is the _ID value.
+                 * Then, append the value to the WHERE clause for the query
+                 */
+                selection = selection + "_ID = " uri.getLastPathSegment();
+                break;
+
+            default:
+            ...
+                // If the URI is not recognized, you should do some error handling here.
+        }
+        // call the code to actually do the query
+    }
+</pre>
+<p>
+    另一個 {@link android.content.ContentUris} 類別可提供使用內容 URI 的 <code>id</code> 部分的簡便方法。
+{@link android.net.Uri} 和 
+{@link android.net.Uri.Builder} 類別則可提供剖析現有 
+{@link android.net.Uri} 物件及建置新物件的簡便方法。
+</p>
+
+<!-- Implementing the ContentProvider class -->
+<h2 id="ContentProvider">實作 ContentProvider 類別</h2>
+<p>
+    {@link android.content.ContentProvider} 執行個體可透過處理其他應用程式所發出要求的方式,管理一組結構化資料的存取權。
+所有形式的存取權最終都會呼叫 {@link android.content.ContentResolver},而這個類別隨後會呼叫 {@link android.content.ContentProvider} 方法來取得存取權。
+
+
+</p>
+<h3 id="RequiredAccess">必要方法</h3>
+<p>
+    抽象類別 {@link android.content.ContentProvider} 會定義 6 種方法,而您必須將這些方法實作成您所擁有子類別的一部分。
+嘗試存取您內容供應程式的用戶端應用程式會呼叫以下所有方法 
+({@link android.content.ContentProvider#onCreate() onCreate()} 除外):
+
+</p>
+<dl>
+    <dt>
+        {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+        query()}
+    </dt>
+    <dd>
+        從您的供應程式擷取檔案。您可以使用引數來選取要查詢的表格、要傳回的資料列和資料欄,以及最終結果的排序順序。
+
+        以 {@link android.database.Cursor} 物件的形式傳回資料。
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()}
+    </dt>
+    <dd>
+        在供應程式中插入新的資料列。您可以使用引數來選取目標表格,以及取得要使用的資料欄值。
+此外,這個方法還可傳回新插入資料欄的內容 URI。
+
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#update(Uri, ContentValues, String, String[])
+        update()}
+    </dt>
+    <dd>
+        更新供應程式中的現有資料欄。您可以使用引數來選取要更新的表格和資料列,以及取得更新過後的資料欄值。
+此外,這個方法還可傳回經過更新的資料列數量。
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()}
+    </dt>
+    <dd>
+        從您的供應程式中刪除資料列。您可以使用引數來選取要刪除的表格和資料列。
+此外,這個方法還可傳回遭刪除的資料列數量。
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#getType(Uri) getType()}
+    </dt>
+    <dd>
+        傳回與內容 URI 相對應的 MIME 類型。如要進一步瞭解這個方法,請參閱<a href="#MIMETypes">實作內容供應程式 MIME 類型</a>。
+
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#onCreate() onCreate()}
+    </dt>
+    <dd>
+        初始化您的供應程式。Android 系統會在建立供應程式後立即呼叫這個方法。
+請注意,一旦
+ {@link android.content.ContentResolver} 嘗試存取您的供應程式,Android 系統便會建立供應程式。
+    </dd>
+</dl>
+<p>
+    請注意,上述方法採用的簽名與同名的 
+{@link android.content.ContentResolver} 方法相同。
+</p>
+<p>
+    實作這些方法時請注意下列事項:
+</p>
+<ul>
+    <li>
+        多重執行緒可能會同時呼叫 {@link android.content.ContentProvider#onCreate() onCreate()} 以外的所有方法,因此請務必確保這些方法不會對執行緒造成負面影響。
+如要進一步瞭解多重執行緒,請參閱<a href="{@docRoot}guide/components/processes-and-threads.html">處理程序和執行緒</a>。
+
+
+
+    </li>
+    <li>
+        避免透過 {@link android.content.ContentProvider#onCreate()
+        onCreate()} 進行需大量時間才可完成的作業。除非有實質上的需求,否則請延遲初始化工作。
+        如需相關資訊,請參閱<a href="#OnCreate">實作 onCreate() 方法</a>。
+
+    </li>
+    <li>
+        雖然您必須實作這些方法,但您的程式碼只需傳回預期的資料類型即可,不必傳回任何其他資料。
+例如,您可能想避免其他應用程式將資料插入部分表格。
+在這種情況下,您可以略過呼叫
+{@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} 並傳回 0。
+
+    </li>
+</ul>
+<h3 id="Query">實作 query() 方法</h3>
+<p>
+    {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+    ContentProvider.query()} 方法如果未傳回 {@link android.database.Cursor} 物件,便會發生錯誤而擲回 {@link java.lang.Exception}。
+
+如果您採用 SQLite 資料庫做為資料儲存空間,您可以直接傳回
+{@link android.database.sqlite.SQLiteDatabase} 類別的任一 <code>query()</code> 方法所傳回的 {@link android.database.Cursor}。
+
+    如果查詢不符任何資料列,您就必須傳回其中的 {@link android.database.Cursor#getCount()} 方法傳回 0 的
+ {@link android.database.Cursor} 執行個體。
+    請注意,只有在查詢程序發生內部錯誤時,您才需要傳回 <code>null</code>。
+</p>
+<p>
+    如果您並非採用 SQLite 資料庫做為資料儲存空間,請使用
+ {@link android.database.Cursor} 的子類別。例如,{@link android.database.MatrixCursor} 類別
+會一系列 {@link java.lang.Object} 的所有資料列中實作游標。您可以搭配這個類別使用 {@link android.database.MatrixCursor#addRow(Object[]) addRow()} 來新增資料列。
+
+</p>
+<p>
+    請記住,您必須確保 Android 系統能夠與 {@link java.lang.Exception} 通訊,而不會受到處理程序的限制。
+Android 可以針對下列例外狀況執行這項動作,藉此協助解決查詢錯誤:
+
+</p>
+<ul>
+    <li>
+        {@link java.lang.IllegalArgumentException} (如果供應程式接收的內容 URI 無效,您可以選擇擲回這個類別)
+
+    </li>
+    <li>
+        {@link java.lang.NullPointerException}
+    </li>
+</ul>
+<h3 id="Insert">實作 insert() 方法</h3>
+<p>
+    {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} 方法會利用 {@link android.content.ContentValues} 引數中的值,在適當的表格中新增資料列。
+
+如果 {@link android.content.ContentValues} 引數中沒有資料欄名稱,建議您在供應程式的程式碼或資料庫的結構定義中,提供預設的資料欄名稱。
+
+
+</p>
+<p>
+    這個方法會傳回新資料列的內容 URI。如要建構這個方法,請使用 {@link android.content.ContentUris#withAppendedId(Uri, long) withAppendedId()},將新資料列的 <code>_ID</code> (或其他主索引鍵) 值附加到表格的內容 URI。
+
+
+</p>
+<h3 id="Delete">實作 delete() 方法</h3>
+<p>
+    {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()} 方法並不會從您的資料儲存空間中刪除資料列。
+如果您搭配供應程式使用同步配接器,建議您為已刪除的資料列加上「已刪除」標示,而不是徹底移除資料列。
+
+同步配接器可檢查已刪除的資料列,並且將這些資料列從伺服器中移除,然後再從供應程式中將它們刪除。
+
+</p>
+<h3 id="Update">實作 update() 方法</h3>
+<p>
+    {@link android.content.ContentProvider#update(Uri, ContentValues, String, String[])
+    update()} 方法會採用 {@link android.content.ContentProvider#insert(Uri, ContentValues) insert()} 所使用的相同 {@link android.content.ContentValues} 引數,以及
+ {@link android.content.ContentProvider#delete(Uri, String, String[]) delete()} 和 {@link android.content.ContentProvider#query(Uri, String[], String, String[], String)
+    ContentProvider.query()} 所使用的相同 <code>selection</code> 與 <code>selectionArgs</code> 引數,
+
+
+以便讓您針對這些方法重複使用相同的程式碼。
+</p>
+<h3 id="OnCreate">實作 onCreate() 方法</h3>
+<p>
+    Android 系統會在啟動供應程式時呼叫 {@link android.content.ContentProvider#onCreate()
+    onCreate()}。建議您只使用這個方法執行可快速完成的初始化工作,並且等到供應程式實際收到資料要求後,再建立資料庫以及載入資料。
+
+如果您使用 {@link android.content.ContentProvider#onCreate() onCreate()} 進行需大量時間才能完成工作,啟動供應程式所需的時間就會延長。
+
+此外,這樣也會延遲供應程式回應其他應用程式的時間。
+
+</p>
+<p>
+    例如,如果您採用 SQLite 資料庫,您可以透過 
+{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()} 建立新的 {@link android.database.sqlite.SQLiteOpenHelper} 物件,然後在初次開啟資料庫時建立 SQL 表格。
+
+為了加快這個程序,當您初次呼叫 {@link android.database.sqlite.SQLiteOpenHelper#getWritableDatabase
+getWritableDatabase()} 時,該方法會自動呼叫 {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+SQLiteOpenHelper.onCreate()} 方法。
+
+
+</p>
+<p>
+    以下兩個程式碼片段展示了 
+{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()} 與 {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+    SQLiteOpenHelper.onCreate()} 之間的互動過程。
+而第一個程式碼片段是用於實作 
+{@link android.content.ContentProvider#onCreate() ContentProvider.onCreate()}:
+</p>
+<pre class="prettyprint">
+public class ExampleProvider extends ContentProvider
+
+    /*
+     * Defines a handle to the database helper object. The MainDatabaseHelper class is defined
+     * in a following snippet.
+     */
+    private MainDatabaseHelper mOpenHelper;
+
+    // Defines the database name
+    private static final String DBNAME = "mydb";
+
+    // Holds the database object
+    private SQLiteDatabase db;
+
+    public boolean onCreate() {
+
+        /*
+         * Creates a new helper object. This method always returns quickly.
+         * Notice that the database itself isn't created or opened
+         * until SQLiteOpenHelper.getWritableDatabase is called
+         */
+        mOpenHelper = new MainDatabaseHelper(
+            getContext(),        // the application context
+            DBNAME,              // the name of the database)
+            null,                // uses the default SQLite cursor
+            1                    // the version number
+        );
+
+        return true;
+    }
+
+    ...
+
+    // Implements the provider's insert method
+    public Cursor insert(Uri uri, ContentValues values) {
+        // Insert code here to determine which table to open, handle error-checking, and so forth
+
+        ...
+
+        /*
+         * Gets a writeable database. This will trigger its creation if it doesn't already exist.
+         *
+         */
+        db = mOpenHelper.getWritableDatabase();
+    }
+}
+</pre>
+<p>
+    第二個程式碼片段則是用於實作 {@link android.database.sqlite.SQLiteOpenHelper#onCreate(SQLiteDatabase)
+SQLiteOpenHelper.onCreate()},包括協助程式類別:
+
+</p>
+<pre class="prettyprint">
+...
+// A string that defines the SQL statement for creating a table
+private static final String SQL_CREATE_MAIN = "CREATE TABLE " +
+    "main " +                       // Table's name
+    "(" +                           // The columns in the table
+    " _ID INTEGER PRIMARY KEY, " +
+    " WORD TEXT"
+    " FREQUENCY INTEGER " +
+    " LOCALE TEXT )";
+...
+/**
+ * Helper class that actually creates and manages the provider's underlying data repository.
+ */
+protected static final class MainDatabaseHelper extends SQLiteOpenHelper {
+
+    /*
+     * Instantiates an open helper for the provider's SQLite data repository
+     * Do not do database creation and upgrade here.
+     */
+    MainDatabaseHelper(Context context) {
+        super(context, DBNAME, null, 1);
+    }
+
+    /*
+     * Creates the data repository. This is called when the provider attempts to open the
+     * repository and SQLite reports that it doesn't exist.
+     */
+    public void onCreate(SQLiteDatabase db) {
+
+        // Creates the main table
+        db.execSQL(SQL_CREATE_MAIN);
+    }
+}
+</pre>
+
+
+<!-- Implementing ContentProvider MIME Types -->
+<h2 id="MIMETypes">實作 ContentProvider MIME 類型</h2>
+<p>
+    {@link android.content.ContentProvider} 類別包含兩種用於傳回 MIME 類型的方法:
+</p>
+<dl>
+    <dt>
+        {@link android.content.ContentProvider#getType(Uri) getType()}
+    </dt>
+    <dd>
+        您必須針對任何供應程式實作的其中一個必要方法。
+    </dd>
+    <dt>
+        {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}
+    </dt>
+    <dd>
+        如果您的供應程式會提供檔案,您就需要實作這個方法。
+    </dd>
+</dl>
+<h3 id="TableMIMETypes">表格 MIME 類型</h3>
+<p>
+    {@link android.content.ContentProvider#getType(Uri) getType()} 方法會採用 MIME 格式傳回
+ {@link java.lang.String},以說明 URI 引數所傳回的資料類型。
+{@link android.net.Uri} 可以是一個模式 (而非特定 URI);在這種情況下,建議您傳回與符合模式的內容 URI 相關聯的資料類型。
+
+
+</p>
+<p>
+    針對文字、HTML、JPEG 等常見資料類型,
+{@link android.content.ContentProvider#getType(Uri) getType()} 會傳回該資料的標準 MIME 類型。
+如需這些標準模式的完整清單,請造訪
+ <a href="http://www.iana.org/assignments/media-types/index.htm">IANA MIME 媒體類型</a>網站。
+
+</p>
+<p>
+    針對指向表格資料的資料列的內容 URI,
+{@link android.content.ContentProvider#getType(Uri) getType()} 會採用 Android 廠商專用的 MINE 格式傳回 MIME 類型:
+
+</p>
+<ul>
+    <li>
+        類型部分:<code>vnd</code>
+    </li>
+    <li>
+        子類型部分:
+        <ul>
+            <li>
+    如果 URI 模式適用於單一資料列:<code>android.cursor.<strong>item</strong>/</code>
+            </li>
+            <li>
+    如果 URI 模式適用於一個以上的資料列:<code>android.cursor.<strong>dir</strong>/</code>
+            </li>
+        </ul>
+    </li>
+    <li>
+        供應程式專用部分:<code>vnd.&lt;name&gt;</code>.<code>&lt;type&gt;</code>
+        <p>
+            您需要提供 <code>&lt;name&gt;</code> 和 <code>&lt;type&gt;</code>。
+            <code>&lt;name&gt;</code> 必須是全域唯一值,而 <code>&lt;type&gt;</code> 必須為相對應 URI 模式的專屬值。
+
+建議您使用貴公司的名稱或您應用程式的部分 Android 套件名稱做為 <code>&lt;name&gt;</code>。
+針對 
+<code>&lt;type&gt;</code>,則建議您使用可識別與 URI 相關的表格的字串。
+
+        </p>
+
+    </li>
+</ul>
+<p>
+    例如,假設供應程式的授權為 
+<code>com.example.app.provider</code>,而該授權可提供 
+<code>table1</code> 這個表格,則 <code>table1</code> 中多個資料列的 MIME 類型會如下所示:
+</p>
+<pre>
+vnd.android.cursor.<strong>dir</strong>/vnd.com.example.provider.table1
+</pre>
+<p>
+    而 <code>table1</code> 中單一資料列的 MIME 類型則會如下所示:
+</p>
+<pre>
+vnd.android.cursor.<strong>item</strong>/vnd.com.example.provider.table1
+</pre>
+<h3 id="FileMIMETypes">檔案 MIME 類型</h3>
+<p>
+    如果您的供應程式會提供檔案,您就需要實作
+{@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()}。
+    該方法會針對您的供應程式可為特定 URI 傳回的檔案,傳回一系列 MIME 類型的 {@link java.lang.String}。建議您按 MIME 類型篩選器引數篩選您提供的 MIME 類型,方便您只傳回用戶端想處理的 MIME 類型。
+
+
+</p>
+<p>
+    例如,假設您的供應程式會採用 <code>.jpg</code>、
+<code>.png</code> 和 <code>.gif</code> 檔案格式提供相片。
+    當有應用程式使用篩選器字串 <code>image/*</code> (類型為「圖片」的任何檔案) 呼叫 {@link android.content.ContentResolver#getStreamTypes(Uri, String)
+ContentResolver.getStreamTypes()} 時,{@link android.content.ContentProvider#getStreamTypes(Uri, String)
+ContentProvider.getStreamTypes()} 方法就會傳回如下所示的陣列:
+
+
+</p>
+<pre>
+{ &quot;image/jpeg&quot;, &quot;image/png&quot;, &quot;image/gif&quot;}
+</pre>
+<p>
+    如果應用程式只想取得 <code>.jpg</code> 檔案,則可以使用篩選器字串 <code>*\/jpeg</code> 呼叫 {@link android.content.ContentResolver#getStreamTypes(Uri, String)
+ContentResolver.getStreamTypes()},此時 {@link android.content.ContentProvider#getStreamTypes(Uri, String)
+ContentProvider.getStreamTypes()} 會傳回如下所示的陣列:
+
+
+<pre>
+{&quot;image/jpeg&quot;}
+</pre>
+<p>
+    如果您的供應程式並未提供任何篩選器字串所要求的 MIME 類型,則
+ {@link android.content.ContentProvider#getStreamTypes(Uri, String) getStreamTypes()} 會傳回 <code>null</code>。
+
+</p>
+
+
+<!--  Implementing a Contract Class -->
+<h2 id="ContractClass">實作合約類別</h2>
+<p>
+    合約類別是 <code>public final</code> 類別,內含以下項目的固定不變定義:URI、欄名稱、MIME 類型以及供應程式擁有的其他中繼資料。
+這個類別會在供應程式與其他應用程式之間建立合約,藉此確保使用者在 URI、欄名等值有變更的情況下,仍可正常存取供應程式。
+
+
+
+</p>
+<p>
+    此外,由於合約類別針對其常數採用了好記的名稱,因此可協助開發人員避免使用錯誤的欄名或 URI 值。
+與其他類別相同,合約類別也包含 Javadoc 說明文件。
+如 Eclipse 這類整合式開發環境可利用合約類別自動填入常數名稱,並針對常數顯示 Javadoc。
+
+
+</p>
+<p>
+    開發人員無法存取您應用程式中合約類別的類別檔案,但可以靜態方式從您提供的 <code>.jar</code> 檔案中將類別檔案編入其應用程式。
+
+</p>
+<p>
+    {@link android.provider.ContactsContract} 類別及其巢狀類別均為合約類別範例。
+
+</p>
+<h2 id="Permissions">實作內容供應程式權限</h2>
+<p>
+    如需 Android 系統提供的所有權限和存取權的詳細資訊,請參閱<a href="{@docRoot}guide/topics/security/security.html">安全性和權限</a>。
+
+    您也可以參閱<a href="{@docRoot}guide/topics/data/data-storage.html">資料儲存空間</a>,瞭解各種儲存空間實際提供的安全性和權限。
+
+    簡言之,請注意下列重點:
+</p>
+<ul>
+    <li>
+        在預設情況下,儲存在裝置內部儲存空間的資料檔案只有您的應用程式和供應程式可存取。
+
+    </li>
+    <li>
+        您所建立的 {@link android.database.sqlite.SQLiteDatabase} 資料庫只有您的應用程式和供應程式可存取。
+
+    </li>
+    <li>
+        在預設情況下,您儲存到外部儲存空間的資料檔案為「公開分享」<em></em>,任何人均可讀取<em></em>。
+您無法使用內容供應程式針對外部儲存空間中的檔案限制存取權,這是因為其他應用程式可使用其他 API 呼叫讀取及寫入這類檔案。
+
+    </li>
+    <li>
+        呼叫用於開啟/建立檔案,或是用於在裝置內部儲存空間中開啟/建立 SQLite 儲存庫的方法,可能會同時將讀取及寫入存取權授予其他所有應用程式。
+如果您採用內部檔案或資料庫做為供應程式的存放庫,並且將「開放讀取」或「開放寫入」存取權授予該存放庫,則您在供應程式的宣示說明中設定的權限無助於保護您的資料安全。
+
+
+內部儲存空間中的檔案和儲存庫的預設存取權為「不公開」;請勿針對供應程式的存放庫變更此存取權。
+
+    </li>
+</ul>
+<p>
+    如果您想使用內容供應程式權限控制資料的存取權,建議您將資料儲存在內部檔案、SQLite 資料庫或「雲端」(例如遠端伺服器),並確保只有您的應用程式可以存取這些檔案和資料庫。
+
+
+</p>
+<h3>實作權限</h3>
+<p>
+    在預設情況下,您的供應程式不會設定任何權限,因此即使底層資料的存取權限為「不公開」,任何應用程式都可透過您的供應程式讀取及寫入資料。
+如果想改變這種情況,請使用屬性或 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+    &lt;provider&gt;</a></code> 元素的子元素,在供應程式的宣示說明檔案中設定權限。
+
+您可以選擇讓設定好的權限套用至整個供應程式、特定表格或記錄,或是套用至以上三者。
+
+</p>
+<p>
+    您可以使用一或多項 <code><a href="{@docRoot}guide/topics/manifest/permission-element.html">
+    &lt;permission&gt;</a></code> 元素,在供應程式的宣示說明檔案中定義權限。
+為了將權限設為僅適用於您的供應程式,請針對
+ <code><a href="{@docRoot}guide/topics/manifest/permission-element.html#nm">
+    android:name</a></code> 屬性使用 Java 式範圍。
+例如,請將讀取權限命名為 
+<code>com.example.app.provider.permission.READ_PROVIDER</code>。
+
+</p>
+<p>
+    以下列出供應程式權限範圍的詳細說明;這份清單將從套用至整個供應程式的權限開始說明,接著逐一說明套用範圍較小的權限。
+
+    套用範圍較小權限的優先等級會比套用範圍較大的權限來得高:
+</p>
+<dl>
+    <dt>
+        供應程式層級的單一讀取寫入權限
+    </dt>
+    <dd>
+        這項權限是由 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code> 元素的 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+        android:permission</a></code> 屬性所指定,可控制整個供應程式的讀取及寫入存取權。
+
+    </dd>
+    <dt>
+        供應程式層級的個別讀取及寫入權限
+    </dt>
+    <dd>
+        整個供應程式的讀取權限及寫入權限。您可以使用 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code> 元素的
+ <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">
+        android:readPermission</a></code> 和 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">
+        android:writePermission</a></code> 屬性指定這兩項權限。
+這些權限的優先等級比 
+<code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+        android:permission</a></code> 所需的權限來得高。
+    </dd>
+    <dt>
+        路徑層級權限
+    </dt>
+    <dd>
+        供應程式內容 URI 的讀取、寫入或讀取/寫入權限。您可以使用
+ <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+        &lt;provider&gt;</a></code> 元素的
+ <code><a href="{@docRoot}guide/topics/manifest/path-permission-element.html">
+        &lt;path-permission&gt;</a></code> 子元素指定您想控制的所有 URI。
+針對您所指定的每個內容 URI,您可以指定讀取/寫入權限、讀取權限或寫入權限,或是以上三種權限。
+讀取及寫入權限的優先等級比讀取/寫入權限來得高。
+此外,路徑層級權限的優先等級比供應程式層級權限來得高。
+
+    </dd>
+    <dt>
+        臨時權限
+    </dt>
+    <dd>
+        這種權限層級可將臨時存取權授予某個應用程式,即使該應用程式不具備一般的必要權限。
+臨時存取功能可減少應用程式的宣示說明所需的權限數量。
+
+在啟用臨時權限的情況下,只有會繼續存取您資料的應用程式,需要供應程式的「永久」權限。
+
+
+        <p>
+            如果想允許外部的圖片檢視器應用程式顯示您供應程式中的相片附加檔案,請將實作電子郵件供應程式和應用程式時所需的權限納入考量。
+
+如要授予圖片檢視器必要的存取權,而不發出權限要求,請設定相片內容 URI 的臨時權限。
+並且將您的電子郵件應用程式設計成在使用者想顯示相片時,將內含相片內容 URI 和權限旗標的意圖傳送給圖片檢視器。
+
+讓圖片檢視器在檢視器沒有供應程式的一般讀取權限的情況下,仍可查詢電子郵件供應程式來擷取相片。
+
+
+        </p>
+        <p>
+            如要啟用臨時權限,請設定
+ <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> 元素的
+ <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+            android:grantUriPermissions</a></code> 元素,或是在
+ <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> 元素中新增一或多項
+ <code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
+            &lt;grant-uri-permission&gt;</a></code> 子元素。如果您有使用臨時權限,您就必須在從供應程式中移除內容 URI 支援,以及將內容 URI 與臨時權限建立關聯時呼叫 {@link android.content.Context#revokeUriPermission(Uri, int)
+Context.revokeUriPermission()}。
+
+
+        </p>
+        <p>
+            屬性的值會決定供應程式的可存取部分。
+            如果將屬性設為 <code>true</code>,則系統會將臨時權限授予整個供應程式,從而覆寫供應程式層級或路徑層級權限所需的任何其他權限。
+
+
+        </p>
+        <p>
+            如果將這個旗標設為 <code>false</code>,您就必須在
+ <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> 元素中加入
+ <code><a href="{@docRoot}guide/topics/manifest/grant-uri-permission-element.html">
+            &lt;grant-uri-permission&gt;</a></code> 子元素。每項子元素都會指定要授予臨時存取權的內容 URI。
+
+        </p>
+        <p>
+            如要將臨時存取權委派給某款應用程式,您就必須在意圖中加入 
+{@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION} 或 
+{@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION} 旗標,或是同時加入以上兩者。請使用 
+{@link android.content.Intent#setFlags(int) setFlags()} 方法設定這些旗標。
+        </p>
+        <p>
+            如果系統未顯示 <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+            android:grantUriPermissions</a></code> 屬性,代表該屬性是設為
+ <code>false</code>。
+        </p>
+    </dd>
+</dl>
+
+
+
+<!-- The Provider Element -->
+<h2 id="ProviderElement">&lt;provider&gt; 元素</h2>
+<p>
+    與 {@link android.app.Activity} 和 {@link android.app.Service} 元件相同,您必須使用
+ <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+    &lt;provider&gt;</a></code> 元素在應用程式的宣示說明檔案中定義 {@link android.content.ContentProvider} 子類別:Android 系統會從元素取得下列資訊:
+
+
+
+<dl>
+    <dt>
+        授權
+        (<a href="{@docRoot}guide/topics/manifest/provider-element.html#auth">{@code
+        android:authorities}</a>)
+    </dt>
+    <dd>
+        用於識別系統內整個供應程式的符號名稱。如要進一步瞭解這項屬性,請參閱<a href="#ContentURI">設定內容 URI</a>。
+
+
+    </dd>
+    <dt>
+        供應程式類別名稱
+        (<code>
+<a href="{@docRoot}guide/topics/manifest/provider-element.html#nm">android:name</a>
+        </code>)
+    </dt>
+    <dd>
+        實作 {@link android.content.ContentProvider} 的類別。如要進一步瞭解這個類別,請參閱<a href="#ContentProvider">實作 ContentProvider </a>。
+
+
+    </dd>
+    <dt>
+        權限
+    </dt>
+    <dd>
+        這些屬性可指定其他應用程式在存取供應程式的資料時所需的權限:
+
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#gprmsn">
+                android:grantUriPermssions</a></code>:臨時的權限旗標。
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#prmsn">
+                android:permission</a></code>:供應程式範圍的單一讀取/寫入權限。
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#rprmsn">
+                android:readPermission</a></code>:供應程式範圍的讀取權限。
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#wprmsn">
+                android:writePermission</a></code>:供應程式範圍的寫入權限。
+            </li>
+        </ul>
+        <p>
+            如要進一步瞭解權限及相對應的屬性,請參閱<a href="#Permissions">實作內容供應程式權限</a>。
+
+
+        </p>
+    </dd>
+    <dt>
+        啟動及控制屬性
+    </dt>
+    <dd>
+        這些屬性可決定 Android 系統啟動供應程式的方式和時間、供應程式的處理程序特性,以及其他執行階段設定:
+
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#enabled">
+                android:enabled</a></code>:可讓系統啟動供應程式的旗標。
+            </li>
+              <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#exported">
+                android:exported</a></code>:可讓其他應用程式使用這個供應程式的旗標。
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#init">
+                android:initOrder</a></code>:這個供應程式的啟動順序 (相對於相同處理程序中的其他供應程式)。
+
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#multi">
+                android:multiProcess</a></code>:可讓系統將相同處理程序中的供應程式啟動成呼叫用戶端的旗標。
+
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#proc">
+                android:process</a></code>:執行供應程式的處理程序名稱。
+
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#sync">
+                android:syncable</a></code>:指示系統將供應程式的資料與伺服器的資料保持同步的旗標。
+
+            </li>
+        </ul>
+        <p>
+            如需上述屬性的完整說明,請參閱開發人員指南的
+ <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> 元素。
+
+        </p>
+    </dd>
+    <dt>
+        資訊屬性
+    </dt>
+    <dd>
+        選用的供應程式圖示和標籤:
+        <ul>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#icon">
+                android:icon</a></code>:內含供應程式圖示的可繪資源。
+                這個圖示會顯示在應用程式清單 ([設定]<em></em> &gt; [應用程式]<em></em> &gt; [全部]<em></em>) 中,供應程式標籤的旁邊。
+
+            </li>
+            <li>
+                <code><a href="{@docRoot}guide/topics/manifest/provider-element.html#label">
+                android:label</a></code>:附有供應程式或其資料或以上兩者的說明的資訊標籤。
+這個標籤會顯示在應用程式清單 ([設定]<em></em> &gt; [應用程式]<em></em> &gt; [全部]<em></em>) 中。
+
+            </li>
+        </ul>
+        <p>
+            如需上述屬性的完整說明,請參閱開發人員指南的
+ <code><a href="{@docRoot}guide/topics/manifest/provider-element.html">
+            &lt;provider&gt;</a></code> 元素。
+        </p>
+    </dd>
+</dl>
+
+<!-- Intent Access -->
+<h2 id="Intents">意圖和資料存取權</h2>
+<p>
+    應用程式可透過 {@link android.content.Intent} 以間接方式存取內容供應程式。
+    利用這種存取方式的應用程式不會呼叫 {@link android.content.ContentResolver} 或 
+{@link android.content.ContentProvider} 的任何方法,而是會傳送可啟動 Activity (此 Activity 通常屬於供應程式本身的應用程式) 的意圖。
+目標 Activity 會負責擷取資料並在本身的 UI 中顯示該資料。視意圖中的動作而定,目標 Activity 也可能會提示使用者修改供應程式的資料。
+
+
+    此外,意圖還可能會包含目標 Activity 顯示在 UI 中的「額外」資料;使用者之後可選擇是否要先變更這些資料,然後再將其用於修改供應程式的資料。
+
+
+</p>
+<p>
+
+</p>
+<p>
+    您可以使用意圖存取權來確保資料的完整性。您的供應程式可能會將根據詳細定義的業務邏輯插入、更新及刪除的資料做為運作依據。
+如果是這樣,允許其他應用程式直接修改您的資料可能會導致資料失效。
+
+如果想讓開發人員使用意圖存取權,請務必保留相關的完整記錄。
+    並且向他們說明為何使用您應用程式 UI 的意圖存取權,比嘗試使用自己的程式碼修改資料來得好。
+
+</p>
+<p>
+    處理想修改供應程式資料的傳入意圖的方式與處理其他意圖完全相同。
+如要進一步瞭解如何使用意圖,請參閱<a href="{@docRoot}guide/components/intents-filters.html">意圖和意圖篩選器</a>。
+
+</p>
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/providers/content-providers.jd b/docs/html-intl/intl/zh-tw/guide/topics/providers/content-providers.jd
new file mode 100644
index 0000000..7f7fa34
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/providers/content-providers.jd
@@ -0,0 +1,108 @@
+page.title=內容供應程式
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+
+<!-- In this document -->
+<h2>本文主題</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">        內容供應程式基本概念</a>
+
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-creating.html">        建立內容供應程式</a>
+
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/calendar-provider.html">日曆供應程式</a>
+    </li>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/contacts-provider.html">聯絡人供應程式</a>
+    </li>
+</ol>
+
+    <!-- Related Samples -->
+<h2>相關範例</h2>
+    <ol>
+        <li>
+            <a href="{@docRoot}resources/samples/ContactManager/index.html">            聯絡人管理員</a>應用程式
+
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List2.html">        「游標 (使用者)」        </a>
+
+
+        </li>
+        <li>
+        <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/view/List7.html">        「游標 (電話)」</a>
+
+        </li>
+        <li>
+            <a href="{@docRoot}resources/samples/SampleSyncAdapter/index.html">            範例同步配接器</a>
+
+        </li>
+    </ol>
+</div>
+</div>
+<p>
+    內容供應程式可管理一組結構化資料的存取權、壓縮資料以及提供用於定義資料安全性的機制。
+內容供應程式是一種標準介面,可將某個處理程序中的資料與另一個處理程序中執行的程式碼建立連結。
+
+</p>
+<p>
+    如果想透過內容供應程式存取資料,請使用您應用程式的 {@link android.content.Context} 中的{@link android.content.ContentResolver} 物件,以用戶端的身分與供應程式通訊。
+
+
+    {@link android.content.ContentResolver} 物件會與供應程式物件 (實作 {@link android.content.ContentProvider} 的類別執行個體) 通訊。
+而供應程式物件則會接收用戶端發出的資料要求、執行要求的動作,以及傳回最終結果。
+
+
+</p>
+<p>
+    如果您打算與其他應用程式分享您的資料,您不必自行開發供應程式。
+不過,您必須為自己的應用程式準備專屬供應程式,以提供自訂搜尋建議。
+此外,如果您想從自己的應用程式複製複雜的資料或檔案並貼到其他應用程式,也需要準備專屬的供應程式。
+
+</p>
+<p>
+    Android 隨附內容供應程式,可用於管理音訊、影片、圖片、個人聯絡資訊等資料。
+如果想查看 Android 隨附的部分內容供應程式,請參閱 <code><a href="{@docRoot}reference/android/provider/package-summary.html">android.provider</a>
+    </code> 套件的參考文件。
+
+這些供應程式可透過任何 Android 應用程式存取,只不過使用上有些許限制。
+
+</p><p>
+    如果想進一步瞭解內容供應程式,請參閱下列主題:
+</p>
+<dl>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        內容供應程式基本概念</a></strong>
+    </dt>
+    <dd>
+        如何在資料已整理成表格的情況下,透過內容供應程式存取資料。
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/content-provider-creating.html">
+        建立內容供應程式</a></strong>
+    </dt>
+    <dd>
+        如何自行建立內容供應程式。
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/calendar-provider.html">
+        日曆供應程式</a></strong>
+    </dt>
+    <dd>
+        如何存取屬於 Android 平台一部分的日曆供應程式。
+    </dd>
+    <dt>
+        <strong><a href="{@docRoot}guide/topics/providers/contacts-provider.html">
+        聯絡人供應程式</a></strong>
+    </dt>
+    <dd>
+        如何存取屬於 Android 平台一部分的聯絡人供應程式。
+    </dd>
+</dl>
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/providers/document-provider.jd b/docs/html-intl/intl/zh-tw/guide/topics/providers/document-provider.jd
new file mode 100644
index 0000000..1dc7c46
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/providers/document-provider.jd
@@ -0,0 +1,916 @@
+page.title=儲存空間存取架構
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本文件內容
+<a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
+        <span class="more">顯示更多</span>
+        <span class="less" style="display:none">顯示較少</span></a></h2>
+<ol id="toc44" class="hide-nested">
+    <li>
+        <a href="#overview">總覽</a>
+    </li>
+    <li>
+        <a href="#flow">控管流程</a>
+    </li>
+    <li>
+        <a href="#client">編寫用戶端應用程式</a>
+        <ol>
+        <li><a href="#search">搜尋文件</a></li>
+        <li><a href="#process">處理結果</a></li>
+        <li><a href="#metadata">檢查文件中繼資料</a></li>
+        <li><a href="#open">開啟文件</a></li>
+        <li><a href="#create">建立新文件</a></li>
+        <li><a href="#delete">刪除文件</a></li>
+        <li><a href="#edit">編輯文件</a></li>
+        <li><a href="#permissions">保留權限</a></li>
+        </ol>
+    </li>
+    <li><a href="#custom">編寫自訂文件供應程式</a>
+        <ol>
+        <li><a href="#manifest">宣示說明</a></li>
+        <li><a href="#contract">合約</a></li>
+        <li><a href="#subclass">將 DocumentsProvider 設為子類別</a></li>
+        <li><a href="#security">安全性</a></li>
+        </ol>
+    </li>
+
+</ol>
+<h2>重要類別</h2>
+<ol>
+    <li>{@link android.provider.DocumentsProvider}</li>
+    <li>{@link android.provider.DocumentsContract}</li>
+</ol>
+
+<h2>相關影片</h2>
+
+<ol>
+    <li><a href="http://www.youtube.com/watch?v=zxHVeXbK1P4">DevBytes:
+Android 4.4 儲存空間存取架構:供應程式</a></li>
+     <li><a href="http://www.youtube.com/watch?v=UFj9AEz0DHQ">DevBytes:
+Android 4.4 儲存空間存取架構:用戶端</a></li>
+</ol>
+
+
+<h2>程式碼範例</h2>
+
+<ol>
+    <li><a href="{@docRoot}samples/StorageProvider/index.html">儲存空間供應程式</a>
+</li>
+     <li><a href="{@docRoot}samples/StorageClient/index.html">StorageClient</a>
+</li>
+</ol>
+
+<h2>另請參閱</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+        內容供應程式基本概念
+        </a>
+    </li>
+</ol>
+
+</div>
+</div>
+
+
+<p>Android 4.4 (API 級別 19) 導入了「儲存空間存取架構」(Storage Access Framework (SAF)),SAF 可方便使用者透過偏好的文件儲存空間供應程式開啟文件、圖片等其他檔案。
+
+提供簡單易用的標準 UI 可讓使用者在各種應用程式和供應程式中,以相同的方式瀏覽檔案及存取近期開啟的檔案。
+</p>
+
+<p>雲端或本機儲存服務可實作會封裝服務本身的
+{@link android.provider.DocumentsProvider},藉此加入這個生態系統。您只需編寫幾行程式碼,即可將需要存取供應程式文件的用戶端應用程式與 SAF 整合。
+
+</p>
+
+<p>SAF 內含下列項目:</p>
+
+<ul>
+<li><strong>文件供應程式</strong> &mdash; 可讓儲存服務 (例如 Google 雲端硬碟) 顯示所管理檔案的內容供應程式。
+文件供應程式是當作
+{@link android.provider.DocumentsProvider} 類別的子類別使用。文件供應程式結構定義是以傳統檔案階層為依據,不論您為文件供應程式設定的資料儲存方式為何。Android 平台內建數種文件供應程式,例如「下載」、「圖片」和「影片」。
+
+
+
+</li>
+
+<li><strong>用戶端應用程式</strong> &mdash; 可呼叫
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 和 (或)
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT} 意圖及接收文件供應程式所傳回檔案的自訂應用程式。
+</li>
+
+<li><strong>挑選器</strong> &mdash; 可讓使用者透過所有符合用戶端應用程式搜尋條件的文件供應程式存取文件的系統 UI。
+</li>
+</ul>
+
+<p>以下是 SAF 提供的部分功能:</p>
+<ul>
+<li>可讓使用者透過所有文件供應程式 (而非單一應用程式) 瀏覽內容。</li>
+<li>可將文件供應程式所擁有文件的存取權永久授予您的應用程式,
+方便使用者透過相關供應程式新增、編輯、儲存及刪除檔案。
+</li>
+<li>支援多個使用者帳戶和暫時性的根目錄,例如只在插入電腦時才會顯示的 USB 儲存空間供應程式。
+ </li>
+</ul>
+
+<h2 id ="overview">總覽</h2>
+
+<p>SAF 是以內容供應程式 ({@link android.provider.DocumentsProvider} 類別的子類別) 為基礎。
+「文件供應程式」<em></em>中的資料結構採用如下所示的傳統檔案階層:
+</p>
+<p><img src="{@docRoot}images/providers/storage_datamodel.png" alt="data model" /></p>
+<p class="img-caption"><strong>圖 1.</strong>文件供應程式資料模型。「根目錄」會指向單一「文件」,接著該文件會展開成樹狀結構的分支。請注意下列事項:
+</p>
+
+<p></p>
+<ul>
+
+<li>每個文件供應程式都會回報一或多個「根目錄」(也就是文件樹狀結構的起始點)。每個根目錄都有專屬的 {@link android.provider.DocumentsContract.Root#COLUMN_ROOT_ID},可導向至代表該根目錄所含內容的某份文件 (某個目錄)。根目錄的設計架構是動態的,能夠支援多重帳戶、暫時性 USB 儲存裝置或使用者登入/登出等使用狀況。
+
+
+
+
+
+</li>
+
+<li>每個根目錄都內含一份文件,而該文件會指向 N<em></em> 份文件的 1,每份文件又可指向另外 N<em></em> 份文件的 1。
+ </li>
+
+<li>每個儲存空間後端都會透過唯一的
+{@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID} 來參照個別檔案,藉此顯示這些檔案及目錄。文件 ID 不得重複而且一旦核發便不得更改,原因在於裝置重新啟動時會將這些 ID 用於永久 URI 授權。
+
+
+</li>
+
+
+<li>文件可以是可開啟的檔案 (類型為 MIME) 或內含其他文件的目錄 (類型為
+{@link android.provider.DocumentsContract.Document#MIME_TYPE_DIR} MIME )。
+</li>
+
+<li>每份文件的功能會視
+{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS COLUMN_FLAGS} 而有所不同,例如 {@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_WRITE}、
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE} 和
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_THUMBNAIL}。相同的 {@link android.provider.DocumentsContract.Document#COLUMN_DOCUMENT_ID} 可以納入多個目錄中。
+
+
+</li>
+</ul>
+
+<h2 id="flow">控管流程</h2>
+<p>如上所述,文件供應程式資料模型是以傳統檔案階層為基礎。
+不過,您可以自己偏好的方式儲存您的資料,只要所儲存資料可透過 {@link android.provider.DocumentsProvider} API 存取即可。例如,您可以將資料存放在標籤式的雲端儲存空間。
+
+</p>
+
+<p>圖 2 是相片應用程式如何使用 SAF 存取已儲存資料的說明範例:
+</p>
+<p><img src="{@docRoot}images/providers/storage_dataflow.png" alt="app" /></p>
+
+<p class="img-caption"><strong>圖 2.</strong>儲存空間存取架構</p>
+
+<p>請注意下列事項:</p>
+<ul>
+
+<li>在 SAF 中,供應程式與用戶端無法直接進行互動。
+用戶端必須取得相關權限才能與檔案進行互動 (也就是讀取、編輯、建立或刪除檔案)。
+</li>
+
+<li>應用程式 (在此範例中為相片應用程式) 觸發
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 或 {@link android.content.Intent#ACTION_CREATE_DOCUMENT} 意圖後,互動程序便會開始。意圖可能包括用於縮小條件範圍的篩選器 &mdash; 例如「將所有內含 MIME 類型『圖片』的可開啟檔案提供給我」。
+
+</li>
+
+<li>一旦觸發意圖,系統挑選器就會前往所有已註冊的供應程式,並且向使用者顯示相符的內容根目錄。
+</li>
+
+<li>即便底層文件供應程式可能不盡相同,挑選器仍會提供使用者可用於存取文件的標準介面。
+例如圖 2 中的 Google 雲端硬碟供應程式、USB 供應程式和雲端供應程式。
+</li>
+</ul>
+
+<p>圖 3 顯示的是使用者搜尋指定 Google 雲端硬碟帳戶中的圖片時所用的挑選器:
+</p>
+
+<p><img src="{@docRoot}images/providers/storage_picker.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
+
+<p class="img-caption"><strong>圖 3.</strong>挑選器</p>
+
+<p>使用者選取 Google 雲端硬碟後,系統就會顯示相關圖片 (如圖 4 所示)。
+此時,使用者即可與這些圖片進行供應程式和用戶端應用程式支援的互動。
+
+
+<p><img src="{@docRoot}images/providers/storage_photos.png" width="340" alt="picker" style="border:2px solid #ddd" /></p>
+
+<p class="img-caption"><strong>圖 4.</strong>相關圖片</p>
+
+<h2 id="client">編寫用戶端應用程式</h2>
+
+<p>如果您想讓應用程式在搭載 Android 4.3 以下版本的裝置上從其他應用程式擷取檔案,您的應用程式就必須呼叫 {@link android.content.Intent#ACTION_PICK}或 {@link android.content.Intent#ACTION_GET_CONTENT} 意圖。
+
+接著,使用者必須選取某款應用程式來選取檔案,而且選定的應用程式必須提供使用者介面,讓使用者瀏覽及挑選可用的檔案。
+
+ </p>
+
+<p>針對搭載 Android 4.4 以上版本的裝置,您的應用程式還可以呼叫 
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 意圖,以顯示系統所控管的挑選器 UI,方便使用者瀏覽其他應用程式提供的所有檔案。
+
+透過這個單一 UI,使用者可以從任何受支援的應用程式挑選檔案。
+</p>
+
+<p>{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 並不是 {@link android.content.Intent#ACTION_GET_CONTENT} 的替代意圖,實際上應呼叫的意圖取決於您應用程式的需求。
+
+</p>
+
+<ul>
+<li>如果您只想讓應用程式讀取/匯入資料,請呼叫 {@link android.content.Intent#ACTION_GET_CONTENT},
+以便應用程式匯入資料 (例如圖片檔) 的複本。
+</li>
+
+<li>如果您想將文件供應程式所擁有文件的存取權永久授予您的應用程式,請呼叫 {@link android.content.Intent#ACTION_OPEN_DOCUMENT}。
+
+例如可讓使用者編輯文件供應程式中所儲存圖片的相片編輯應用程式。
+ </li>
+
+</ul>
+
+
+<p>本節說明如何根據
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 和
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT} 意圖編寫用戶端應用程式。</p>
+
+
+<h3 id="search">搜尋文件</h3>
+
+<p>
+以下程式碼片段採用 {@link android.content.Intent#ACTION_OPEN_DOCUMENT},可搜尋內含圖片檔的文件供應程式:
+
+</p>
+
+<pre>private static final int READ_REQUEST_CODE = 42;
+...
+/**
+ * Fires an intent to spin up the &quot;file chooser&quot; UI and select an image.
+ */
+public void performFileSearch() {
+
+    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's file
+    // browser.
+    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as a
+    // file (as opposed to a list of contacts or timezones)
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Filter to show only images, using the image MIME data type.
+    // If one wanted to search for ogg vorbis files, the type would be &quot;audio/ogg&quot;.
+    // To search for all documents available via installed storage providers,
+    // it would be &quot;*/*&quot;.
+    intent.setType(&quot;image/*&quot;);
+
+    startActivityForResult(intent, READ_REQUEST_CODE);
+}</pre>
+
+<p>請注意下列事項:</p>
+<ul>
+<li>當應用程式觸發 {@link android.content.Intent#ACTION_OPEN_DOCUMENT} 意圖時,挑選器便會啟動並顯示所有相符的文件供應程式。
+</li>
+
+<li>將 {@link android.content.Intent#CATEGORY_OPENABLE} 這個類別加入意圖中可篩選搜尋結果,限定系統只顯示可開啟的文件 (例如圖片檔)。
+</li>
+
+<li>使用 {@code intent.setType("image/*")} 陳述式可進一步篩選搜尋結果,顯示系統只顯示內含 MIME 類型圖片的文件。
+</li>
+</ul>
+
+<h3 id="results">處理結果</h3>
+
+<p>使用者在挑選器中選取某份文件後,便會呼叫
+{@link android.app.Activity#onActivityResult onActivityResult()}。指向所選文件的 URI 包含在 {@code resultData} 參數中。
+
+請使用 {@link android.content.Intent#getData getData()} 擷取 URI,然後使用該 URI 擷取使用者所需的文件。
+例如:
+</p>
+
+<pre>&#64;Override
+public void onActivityResult(int requestCode, int resultCode,
+        Intent resultData) {
+
+    // The ACTION_OPEN_DOCUMENT intent was sent with the request code
+    // READ_REQUEST_CODE. If the request code seen here doesn't match, it's the
+    // response to some other intent, and the code below shouldn't run at all.
+
+    if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
+        // The document selected by the user won't be returned in the intent.
+        // Instead, a URI to that document will be contained in the return intent
+        // provided to this method as a parameter.
+        // Pull that URI using resultData.getData().
+        Uri uri = null;
+        if (resultData != null) {
+            uri = resultData.getData();
+            Log.i(TAG, "Uri: " + uri.toString());
+            showImage(uri);
+        }
+    }
+}
+</pre>
+
+<h3 id="metadata">檢查文件中繼資料</h3>
+
+<p>取得文件的 URI 後,您就可以存取該文件的中繼資料。以下程式碼片段會擷取 URI 所指定文件的中繼資料並且加以記錄:
+</p>
+
+<pre>public void dumpImageMetaData(Uri uri) {
+
+    // The query, since it only applies to a single document, will only return
+    // one row. There's no need to filter, sort, or select fields, since we want
+    // all fields for one document.
+    Cursor cursor = getActivity().getContentResolver()
+            .query(uri, null, null, null, null, null);
+
+    try {
+    // moveToFirst() returns false if the cursor has 0 rows.  Very handy for
+    // &quot;if there's anything to look at, look at it&quot; conditionals.
+        if (cursor != null &amp;&amp; cursor.moveToFirst()) {
+
+            // Note it's called &quot;Display Name&quot;.  This is
+            // provider-specific, and might not necessarily be the file name.
+            String displayName = cursor.getString(
+                    cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
+            Log.i(TAG, &quot;Display Name: &quot; + displayName);
+
+            int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE);
+            // If the size is unknown, the value stored is null.  But since an
+            // int can't be null in Java, the behavior is implementation-specific,
+            // which is just a fancy term for &quot;unpredictable&quot;.  So as
+            // a rule, check if it's null before assigning to an int.  This will
+            // happen often:  The storage API allows for remote files, whose
+            // size might not be locally known.
+            String size = null;
+            if (!cursor.isNull(sizeIndex)) {
+                // Technically the column stores an int, but cursor.getString()
+                // will do the conversion automatically.
+                size = cursor.getString(sizeIndex);
+            } else {
+                size = &quot;Unknown&quot;;
+            }
+            Log.i(TAG, &quot;Size: &quot; + size);
+        }
+    } finally {
+        cursor.close();
+    }
+}
+</pre>
+
+<h3 id="open-client">開啟文件</h3>
+
+<p>取得文件的 URI 後,您就可以開啟該文件或是對該文件執行任何所需操作。
+</p>
+
+<h4>點陣圖</h4>
+
+<p>以下範例可開啟 {@link android.graphics.Bitmap}:</p>
+
+<pre>private Bitmap getBitmapFromUri(Uri uri) throws IOException {
+    ParcelFileDescriptor parcelFileDescriptor =
+            getContentResolver().openFileDescriptor(uri, "r");
+    FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
+    Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
+    parcelFileDescriptor.close();
+    return image;
+}
+</pre>
+
+<p>請注意,請不要針對 UI 執行緒進行這項作業,請在背景中使用 {@link android.os.AsyncTask} 進行。
+開啟點陣圖後,您就可以在 {@link android.widget.ImageView} 中顯示該點陣圖。
+
+</p>
+
+<h4>取得 InputStream</h4>
+
+<p>以下範例可從 URI 中取得 {@link java.io.InputStream}。在這個程式碼片段中,系統會將每行檔案解讀為單一字串:
+</p>
+
+<pre>private String readTextFromUri(Uri uri) throws IOException {
+    InputStream inputStream = getContentResolver().openInputStream(uri);
+    BufferedReader reader = new BufferedReader(new InputStreamReader(
+            inputStream));
+    StringBuilder stringBuilder = new StringBuilder();
+    String line;
+    while ((line = reader.readLine()) != null) {
+        stringBuilder.append(line);
+    }
+    fileInputStream.close();
+    parcelFileDescriptor.close();
+    return stringBuilder.toString();
+}
+</pre>
+
+<h3 id="create">建立新文件</h3>
+
+<p>應用程式可在文件供應程式中使用
+{@link android.content.Intent#ACTION_CREATE_DOCUMENT} 意圖建立新文件。
+如要建立新檔案,請將 MIME 類型和檔案名稱提供給意圖,然後使用專屬的要求程式碼執行該意圖。
+系統會為您完成其餘的作業:</p>
+
+
+<pre>
+// Here are some examples of how you might call this method.
+// The first parameter is the MIME type, and the second parameter is the name
+// of the file you are creating:
+//
+// createFile("text/plain", "foobar.txt");
+// createFile("image/png", "mypicture.png");
+
+// Unique request code.
+private static final int WRITE_REQUEST_CODE = 43;
+...
+private void createFile(String mimeType, String fileName) {
+    Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as
+    // a file (as opposed to a list of contacts or timezones).
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Create a file with the requested MIME type.
+    intent.setType(mimeType);
+    intent.putExtra(Intent.EXTRA_TITLE, fileName);
+    startActivityForResult(intent, WRITE_REQUEST_CODE);
+}
+</pre>
+
+<p>建立新文件後,您可在
+{@link android.app.Activity#onActivityResult onActivityResult()} 中取得該文件的 URI,
+以便繼續在其中編寫程式碼。</p>
+
+<h3 id="delete">刪除文件</h3>
+
+<p>如果您已取得文件的 URI,而且文件的
+{@link android.provider.DocumentsContract.Document#COLUMN_FLAGS Document.COLUMN_FLAGS} 含有
+{@link android.provider.DocumentsContract.Document#FLAG_SUPPORTS_DELETE SUPPORTS_DELETE},您就可以刪除該文件。
+
+例如:</p>
+
+<pre>
+DocumentsContract.deleteDocument(getContentResolver(), uri);
+</pre>
+
+<h3 id="edit">編輯文件</h3>
+
+<p>您可以使用 SAF 即時編輯文字文件。以下程式碼片段會觸發 {@link android.content.Intent#ACTION_OPEN_DOCUMENT} 意圖並使用 {@link android.content.Intent#CATEGORY_OPENABLE} 類別限制系統只顯示可開啟的文件。
+
+
+
+此外,這個程式碼還會進一步篩選搜尋結果,讓系統只顯示文字檔:</p>
+
+<pre>
+private static final int EDIT_REQUEST_CODE = 44;
+/**
+ * Open a file for writing and append some text to it.
+ */
+ private void editDocument() {
+    // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's
+    // file browser.
+    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+
+    // Filter to only show results that can be &quot;opened&quot;, such as a
+    // file (as opposed to a list of contacts or timezones).
+    intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+    // Filter to show only text files.
+    intent.setType(&quot;text/plain&quot;);
+
+    startActivityForResult(intent, EDIT_REQUEST_CODE);
+}
+</pre>
+
+<p>接著,您可以利用 {@link android.app.Activity#onActivityResult onActivityResult()} (詳情請參閱<a href="#results">處理結果</a>) 呼叫程式碼執行編輯動作。以下程式碼片段會利用 {@link android.content.ContentResolver} 取得 {@link java.io.FileOutputStream}。
+
+
+在預設情況下,這個程式碼片段會使用「寫入」模式。這種方法可索取最少量的所需存取權,因此如果您只需要寫入存取權,請勿要求讀取/寫入:
+
+</p>
+
+<pre>private void alterDocument(Uri uri) {
+    try {
+        ParcelFileDescriptor pfd = getActivity().getContentResolver().
+                openFileDescriptor(uri, "w");
+        FileOutputStream fileOutputStream =
+                new FileOutputStream(pfd.getFileDescriptor());
+        fileOutputStream.write(("Overwritten by MyCloud at " +
+                System.currentTimeMillis() + "\n").getBytes());
+        // Let the document provider know you're done by closing the stream.
+        fileOutputStream.close();
+        pfd.close();
+    } catch (FileNotFoundException e) {
+        e.printStackTrace();
+    } catch (IOException e) {
+        e.printStackTrace();
+    }
+}</pre>
+
+<h3 id="permissions">保留權限</h3>
+
+<p>應用程式開啟要讀取或寫入的檔案後,系統會將該檔案的 URI 權限授予您的應用程式。
+除非使用者重新啟動裝置,否則這項權限會持續保持有效狀態。不過,假如您的應用程式為圖片編輯應用程式,而您希望使用者可直接透過您的應用程式存取他們最近編輯的 5 張圖片。如果使用者重新啟動的裝置,就您必須將使用者傳回系統挑選器來搜尋所需檔案,而這並非最佳做法。
+
+
+
+</p>
+
+<p>為了避免這種情況發生,您可以保留系統授予您應用程式的權限。實際上,您的應用程式會「取得」系統授予的永久性 URI 權限。
+
+這種權限可讓使用者持續透過您的應用程式存取檔案,即使其裝置重新啟動也無妨:
+</p>
+
+
+<pre>final int takeFlags = intent.getFlags()
+            &amp; (Intent.FLAG_GRANT_READ_URI_PERMISSION
+            | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+// Check for the freshest data.
+getContentResolver().takePersistableUriPermission(uri, takeFlags);</pre>
+
+<p>除了上述指示外,您還需要完成最後一個步驟。您儲存了您的應用程式最近存取的 URI,但這些 URI 有可能已失效 &mdash; 原因在於其他應用程式刪除或修改了文件。
+
+因此,建議您一律呼叫
+{@code getContentResolver().takePersistableUriPermission()} 檢查最新資料。
+</p>
+
+<h2 id="custom">編寫自訂文件供應程式</h2>
+
+<p>
+如果您想開發可提供檔案儲存服務 (例如雲端儲存服務) 的應用程式,可以編寫自訂文件供應程式透過 SAF 提供您的檔案。
+
+本節說明如何編寫這類程式。
+</p>
+
+
+<h3 id="manifest">宣示說明</h3>
+
+<p>如要實作自訂文件供應程式,請將以下項目加入應用程式的宣示說明:
+</p>
+<ul>
+
+<li>19 以上的 API 級別目標。</li>
+
+<li>宣告自訂儲存空間供應程式的
+<code>&lt;provider&gt;</code> 元素。 </li>
+
+<li>供應程式的名稱 (也就是供應程式的類別名稱),包括套件名稱。範例:<code>com.example.android.storageprovider.MyCloudProvider</code>。
+</li>
+
+<li>授權的名稱 (也就是套件的名稱;在此範例中為 
+<code>com.example.android.storageprovider</code>) 以及內容供應程式的類型
+(<code>documents</code>)。範例:{@code com.example.android.storageprovider.documents}。</li>
+
+<li>設為 <code>&quot;true&quot;</code> 的 <code>android:exported</code> 屬性。您必須將供應程式匯出,方便其他應用程式加以偵測。
+</li>
+
+<li>設為 <code>&quot;true&quot;</code> 的
+<code>android:grantUriPermissions</code> 屬性。這項設定可讓系統將供應程式內容的存取權授予其他應用程式。
+如果想瞭解如何保留特定文件的權限,請參閱<a href="#permissions">保留權限</a>。
+</li>
+
+<li>{@code MANAGE_DOCUMENTS} 權限。在預設情況下,所有人都可使用供應程式。
+加入這項權限可針對系統設定供應程式限制,藉此提高其安全性。
+</li>
+
+<li>設定資源檔案所定義布林值的 {@code android:enabled} 屬性。
+這項屬性可用於針對搭載 Android 4.3 以下版本的裝置停用供應程式。範例:{@code android:enabled="@bool/atLeastKitKat"}。
+除了在宣示說明中加入這項屬性以外,您還必須執行下列操作:
+
+<ul>
+<li>在位於 {@code res/values/} 的 {@code bool.xml} 資源檔案中,新增以下程式碼:
+ <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;false&lt;/bool&gt;</pre></li>
+
+<li>在位於 {@code res/values-v19/} 的 {@code bool.xml} 資源檔案中,新增以下程式碼:
+ <pre>&lt;bool name=&quot;atLeastKitKat&quot;&gt;true&lt;/bool&gt;</pre></li>
+</ul></li>
+
+<li>內含 
+{@code android.content.action.DOCUMENTS_PROVIDER} 動作的意圖篩選器,讓您的供應程式能夠在系統搜尋供應程式時顯示在挑選器中。
+</li>
+
+</ul>
+<p>以下是內含供應程式的範例宣示說明例外狀況:</p>
+
+<pre>&lt;manifest... &gt;
+    ...
+    &lt;uses-sdk
+        android:minSdkVersion=&quot;19&quot;
+        android:targetSdkVersion=&quot;19&quot; /&gt;
+        ....
+        &lt;provider
+            android:name=&quot;com.example.android.storageprovider.MyCloudProvider&quot;
+            android:authorities=&quot;com.example.android.storageprovider.documents&quot;
+            android:grantUriPermissions=&quot;true&quot;
+            android:exported=&quot;true&quot;
+            android:permission=&quot;android.permission.MANAGE_DOCUMENTS&quot;
+            android:enabled=&quot;&#64;bool/atLeastKitKat&quot;&gt;
+            &lt;intent-filter&gt;
+                &lt;action android:name=&quot;android.content.action.DOCUMENTS_PROVIDER&quot; /&gt;
+            &lt;/intent-filter&gt;
+        &lt;/provider&gt;
+    &lt;/application&gt;
+
+&lt;/manifest&gt;</pre>
+
+<h4 id="43">支援搭載 Android 4.3 以下版本的裝置</h4>
+
+<p>只有搭載 Android 4.4 以上版本的裝置可使用 
+{@link android.content.Intent#ACTION_OPEN_DOCUMENT} 意圖。如果您想讓應用程式支援 {@link android.content.Intent#ACTION_GET_CONTENT} 以便與搭載 Android 4.3 以下版本的裝置相容,請針對搭載 Android 4.4 以上版本的裝置停用宣示說明中的 {@link android.content.Intent#ACTION_GET_CONTENT} 意圖篩選器。
+
+
+
+
+文件供應器和 {@link android.content.Intent#ACTION_GET_CONTENT} 是完全不同的項目。
+
+如果您同時支援這兩個項目,您的應用程式就會重複出現在系統挑選器 UI 中,讓使用者可透過兩種不同方式存取您儲存的資料,
+
+而這樣會造成混淆。</p>
+
+<p>以下提供針對搭載 Android 4.4 以上版本的裝置停用
+{@link android.content.Intent#ACTION_GET_CONTENT} 意圖篩選器的建議做法:
+</p>
+
+<ol>
+<li>在位於 {@code res/values/} 的 {@code bool.xml} 資源檔案中,新增以下程式碼:
+ <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;true&lt;/bool&gt;</pre></li>
+
+<li>在位於 {@code res/values-v19/} 的 {@code bool.xml} 資源檔案中,新增以下程式碼:
+ <pre>&lt;bool name=&quot;atMostJellyBeanMR2&quot;&gt;false&lt;/bool&gt;</pre></li>
+
+<li>新增
+<a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">Activity 別名</a>來針對搭載 Android 4.4 (API 級別 19) 以上版本的裝置停用 {@link android.content.Intent#ACTION_GET_CONTENT} 意圖篩選器。
+
+例如:
+
+<pre>
+&lt;!-- This activity alias is added so that GET_CONTENT intent-filter
+     can be disabled for builds on API level 19 and higher. --&gt;
+&lt;activity-alias android:name=&quot;com.android.example.app.MyPicker&quot;
+        android:targetActivity=&quot;com.android.example.app.MyActivity&quot;
+        ...
+        android:enabled=&quot;@bool/atMostJellyBeanMR2&quot;&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name=&quot;android.intent.action.GET_CONTENT&quot; /&gt;
+        &lt;category android:name=&quot;android.intent.category.OPENABLE&quot; /&gt;
+        &lt;category android:name=&quot;android.intent.category.DEFAULT&quot; /&gt;
+        &lt;data android:mimeType=&quot;image/*&quot; /&gt;
+        &lt;data android:mimeType=&quot;video/*&quot; /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity-alias&gt;
+</pre>
+</li>
+</ol>
+<h3 id="contract">合約</h3>
+
+<p>一般來說,當您編寫自訂內容供應程式時,需要完成的其中一項工作為實作合約類別 (詳情請參閱<a href="{@docRoot}guide/topics/providers/content-provider-creating.html#ContractClass">內容供應程式</a>開發人員指南)。
+
+
+合約類別是 {@code public final} 類別,內含以下項目的固定不變定義:URI、欄名稱、MIME 類型以及供應程式擁有的其他中繼資料。
+
+SAF 可為您提供以下合約類別,因此您不必自行編 寫合約:
+
+</p>
+
+<ul>
+   <li>{@link android.provider.DocumentsContract.Document}</li>
+   <li>{@link android.provider.DocumentsContract.Root}</li>
+</ul>
+
+<p>例如,以下是在文件供應程式查詢文件或根目錄時可能會傳回的資料欄:
+</p>
+
+<pre>private static final String[] DEFAULT_ROOT_PROJECTION =
+        new String[]{Root.COLUMN_ROOT_ID, Root.COLUMN_MIME_TYPES,
+        Root.COLUMN_FLAGS, Root.COLUMN_ICON, Root.COLUMN_TITLE,
+        Root.COLUMN_SUMMARY, Root.COLUMN_DOCUMENT_ID,
+        Root.COLUMN_AVAILABLE_BYTES,};
+private static final String[] DEFAULT_DOCUMENT_PROJECTION = new
+        String[]{Document.COLUMN_DOCUMENT_ID, Document.COLUMN_MIME_TYPE,
+        Document.COLUMN_DISPLAY_NAME, Document.COLUMN_LAST_MODIFIED,
+        Document.COLUMN_FLAGS, Document.COLUMN_SIZE,};
+</pre>
+
+<h3 id="subclass">將 DocumentsProvider 設為子類別</h3>
+
+<p>編寫自動文件供應程式的下一個步驟是,將抽象類別 {@link android.provider.DocumentsProvider} 設為子類別。
+您至少必須實作下列方法:
+</p>
+
+<ul>
+<li>{@link android.provider.DocumentsProvider#queryRoots queryRoots()}</li>
+
+<li>{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()}</li>
+
+<li>{@link android.provider.DocumentsProvider#queryDocument queryDocument()}</li>
+
+<li>{@link android.provider.DocumentsProvider#openDocument openDocument()}</li>
+</ul>
+
+<p>以上是您必須實作的方法,不過您可能會視需要實作其他方法。
+詳情請參閱 {@link android.provider.DocumentsProvider}。
+</p>
+
+<h4 id="queryRoots">實作 queryRoots</h4>
+
+<p>實作 {@link android.provider.DocumentsProvider#queryRoots
+queryRoots()} 後系統會使用 {@link android.provider.DocumentsContract.Root} 中定義的資料欄,傳回指向文件供應程式所有根目錄的 {@link android.database.Cursor}。
+
+</p>
+
+<p>在以下程式碼片段中,{@code projection} 參數代表呼叫者想返回的特定欄位。
+這個程式碼片隊會建立新游標並在其中加入一列 &mdash; 也就是根目錄或頂層目錄 (例如「下載」或「圖片」)。
+
+大多數供應程式只有一個根目錄。而您可以有多個根目錄,例如擁有多個使用者帳戶的情況下。
+在這種情況下,只要在游標中加入第二列即可。
+</p>
+
+<pre>
+&#64;Override
+public Cursor queryRoots(String[] projection) throws FileNotFoundException {
+
+    // Create a cursor with either the requested fields, or the default
+    // projection if "projection" is null.
+    final MatrixCursor result =
+            new MatrixCursor(resolveRootProjection(projection));
+
+    // If user is not logged in, return an empty root cursor.  This removes our
+    // provider from the list entirely.
+    if (!isUserLoggedIn()) {
+        return result;
+    }
+
+    // It's possible to have multiple roots (e.g. for multiple accounts in the
+    // same app) -- just add multiple cursor rows.
+    // Construct one row for a root called &quot;MyCloud&quot;.
+    final MatrixCursor.RowBuilder row = result.newRow();
+    row.add(Root.COLUMN_ROOT_ID, ROOT);
+    row.add(Root.COLUMN_SUMMARY, getContext().getString(R.string.root_summary));
+
+    // FLAG_SUPPORTS_CREATE means at least one directory under the root supports
+    // creating documents. FLAG_SUPPORTS_RECENTS means your application's most
+    // recently used documents will show up in the &quot;Recents&quot; category.
+    // FLAG_SUPPORTS_SEARCH allows users to search all documents the application
+    // shares.
+    row.add(Root.COLUMN_FLAGS, Root.FLAG_SUPPORTS_CREATE |
+            Root.FLAG_SUPPORTS_RECENTS |
+            Root.FLAG_SUPPORTS_SEARCH);
+
+    // COLUMN_TITLE is the root title (e.g. Gallery, Drive).
+    row.add(Root.COLUMN_TITLE, getContext().getString(R.string.title));
+
+    // This document id cannot change once it's shared.
+    row.add(Root.COLUMN_DOCUMENT_ID, getDocIdForFile(mBaseDir));
+
+    // The child MIME types are used to filter the roots and only present to the
+    //  user roots that contain the desired type somewhere in their file hierarchy.
+    row.add(Root.COLUMN_MIME_TYPES, getChildMimeTypes(mBaseDir));
+    row.add(Root.COLUMN_AVAILABLE_BYTES, mBaseDir.getFreeSpace());
+    row.add(Root.COLUMN_ICON, R.drawable.ic_launcher);
+
+    return result;
+}</pre>
+
+<h4 id="queryChildDocuments">實作 queryChildDocuments</h4>
+
+<p>實作
+{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()} 後系統會使用
+{@link android.provider.DocumentsContract.Document} 中定義的資料欄,傳回指向特定目錄中所有檔案的 {@link android.database.Cursor}。
+
+</p>
+
+<p>當您在挑選器 UI 中選擇應用程式的根目錄後,就會呼叫這個方法,藉此取得根目錄內某個目錄中的下層文件。
+您可以在檔案階層的任何層級中呼叫這個方法,而不單單只能在根目錄中呼叫。
+以下程式碼片段會使用要求的資料欄建立新游標,然後加入該游標中上層目錄的任何下層物件相關資訊。下層物件可以是圖片、其他目錄等任何檔案:
+
+
+</p>
+
+<pre>&#64;Override
+public Cursor queryChildDocuments(String parentDocumentId, String[] projection,
+                              String sortOrder) throws FileNotFoundException {
+
+    final MatrixCursor result = new
+            MatrixCursor(resolveDocumentProjection(projection));
+    final File parent = getFileForDocId(parentDocumentId);
+    for (File file : parent.listFiles()) {
+        // Adds the file's display name, MIME type, size, and so on.
+        includeFile(result, null, file);
+    }
+    return result;
+}
+</pre>
+
+<h4 id="queryDocument">實作 queryDocument</h4>
+
+<p>實作
+{@link android.provider.DocumentsProvider#queryDocument queryDocument()} 後系統會使用 {@link android.provider.DocumentsContract.Document} 中定義的資料欄,傳回指向特定檔案的 {@link android.database.Cursor}。
+
+
+</p>
+
+<p>{@link android.provider.DocumentsProvider#queryDocument queryDocument()}方法會針對特定檔案傳回
+{@link android.provider.DocumentsProvider#queryChildDocuments queryChildDocuments()} 所傳送的相同資訊:
+
+</p>
+
+
+<pre>&#64;Override
+public Cursor queryDocument(String documentId, String[] projection) throws
+        FileNotFoundException {
+
+    // Create a cursor with the requested projection, or the default projection.
+    final MatrixCursor result = new
+            MatrixCursor(resolveDocumentProjection(projection));
+    includeFile(result, documentId, null);
+    return result;
+}
+</pre>
+
+<h4 id="openDocument">實作 openDocument</h4>
+
+<p>您必須實作 {@link android.provider.DocumentsProvider#openDocument
+openDocument()} 來傳回代表特定檔案的 
+{@link android.os.ParcelFileDescriptor}。其他應用程式可利用傳回的 {@link android.os.ParcelFileDescriptor} 傳輸資料。
+使用者選取檔案而且用戶端應用程式呼叫
+{@link android.content.ContentResolver#openFileDescriptor openFileDescriptor()} 要求存取該檔案後,系統就會呼叫這個方法。範例:
+
+</p>
+
+<pre>&#64;Override
+public ParcelFileDescriptor openDocument(final String documentId,
+                                         final String mode,
+                                         CancellationSignal signal) throws
+        FileNotFoundException {
+    Log.v(TAG, &quot;openDocument, mode: &quot; + mode);
+    // It's OK to do network operations in this method to download the document,
+    // as long as you periodically check the CancellationSignal. If you have an
+    // extremely large file to transfer from the network, a better solution may
+    // be pipes or sockets (see ParcelFileDescriptor for helper methods).
+
+    final File file = getFileForDocId(documentId);
+
+    final boolean isWrite = (mode.indexOf('w') != -1);
+    if(isWrite) {
+        // Attach a close listener if the document is opened in write mode.
+        try {
+            Handler handler = new Handler(getContext().getMainLooper());
+            return ParcelFileDescriptor.open(file, accessMode, handler,
+                        new ParcelFileDescriptor.OnCloseListener() {
+                &#64;Override
+                public void onClose(IOException e) {
+
+                    // Update the file with the cloud server. The client is done
+                    // writing.
+                    Log.i(TAG, &quot;A file with id &quot; +
+                    documentId + &quot; has been closed!
+                    Time to &quot; +
+                    &quot;update the server.&quot;);
+                }
+
+            });
+        } catch (IOException e) {
+            throw new FileNotFoundException(&quot;Failed to open document with id &quot;
+            + documentId + &quot; and mode &quot; + mode);
+        }
+    } else {
+        return ParcelFileDescriptor.open(file, accessMode);
+    }
+}
+</pre>
+
+<h3 id="security">安全性</h3>
+
+<p>假如您的文件供應程式為受密碼保護的雲端儲存服務,而您先想確認使用者都已登入,然後再開始分享其檔案。那麼在使用者未登入的情況下,您的應用程式應採取什麼行動?
+
+解決方案是不要讓文件供應程式在您實作 {@link android.provider.DocumentsProvider#queryRoots
+queryRoots()} 後傳回任何根目錄。
+換句話說,就是讓供應程式傳回空的根目錄游標:</p>
+
+<pre>
+public Cursor queryRoots(String[] projection) throws FileNotFoundException {
+...
+    // If user is not logged in, return an empty root cursor.  This removes our
+    // provider from the list entirely.
+    if (!isUserLoggedIn()) {
+        return result;
+}
+</pre>
+
+<p>另一個需採取的步驟是呼叫 {@code getContentResolver().notifyChange()}。還記得 {@link android.provider.DocumentsContract} 嗎?
+我們會使用該類別建立 URI。以下程式碼片段會指示系統在使用者的登入狀態變更時,查詢文件供應程式的根目錄。
+
+如果使用者未登入,呼叫 {@link android.provider.DocumentsProvider#queryRoots queryRoots()} 就會如上所述傳回空的游標。
+
+這樣可確保只有登入供應程式的使用者可存取其中的文件。
+</p>
+
+<pre>private void onLoginButtonClick() {
+    loginOrLogout();
+    getContentResolver().notifyChange(DocumentsContract
+            .buildRootsUri(AUTHORITY), null);
+}
+</pre>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/resources/accessing-resources.jd b/docs/html-intl/intl/zh-tw/guide/topics/resources/accessing-resources.jd
new file mode 100644
index 0000000..3a5a961
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/resources/accessing-resources.jd
@@ -0,0 +1,337 @@
+page.title=存取資源
+parent.title=應用程式資源
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>快速檢視</h2>
+  <ul>
+    <li>使用 {@code R.java} 中的整數可以參照程式碼中的資源,例如
+{@code R.drawable.myimage}</li>
+    <li>使用特殊 XML 語法可以參照資源中的資源,例如 {@code
+&#64;drawable/myimage}</li>
+    <li>您也可以使用
+{@link android.content.res.Resources} 中的方法存取應用程式資源</li>
+  </ul>
+
+  <h2>重要類別</h2>
+  <ol>
+    <li>{@link android.content.res.Resources}</li>
+  </ol>
+
+  <h2>本文件內容</h2>
+  <ol>
+    <li><a href="#ResourcesFromCode">存取程式碼中的資源</a></li>
+    <li><a href="#ResourcesFromXml">存取 XML 中的資源</a>
+      <ol>
+        <li><a href="#ReferencesToThemeAttributes">參照樣式屬性</a></li>
+      </ol>
+    </li>
+    <li><a href="#PlatformResources">存取平台資源</a></li>
+  </ol>
+
+  <h2>另請參閱</h2>
+  <ol>
+    <li><a href="providing-resources.html">提供資源</a></li>
+    <li><a href="available-resources.html">資源類型</a></li>
+  </ol>
+</div>
+</div>
+
+
+
+
+<p>提供應用程式中的資源 (於<a href="providing-resources.html">提供資源</a>中討論) 後,您可以參照其資源 ID 加以應用。所有資源 ID 會在專案的 {@code R} 類別中定義。此類別是由 {@code aapt} 工具自動產生的。
+
+</p>
+
+<p>編譯應用程式後,{@code aapt} 會產生 {@code R} 類別。此類別內含 {@code
+res/} 目錄中所有資源的資源 ID。
+每一種資源類型都有 {@code R} 子類別 (例如,所有可繪項目資源的
+{@code R.drawable}),而這種類型的每一種資源都有靜態整數 (例如,{@code R.drawable.icon})。
+此整數就是資源 ID,您可以用於擷取資源。
+</p>
+
+<p>儘管資源 ID 都指定於 {@code R} 類別,您不需要為了取得資源 ID 而加以查看。資源 ID 的組成如下:
+</p>
+<ul>
+  <li>資源類型<em></em>:每一種資源會以「類型」分類,例如 {@code
+string}、{@code drawable} 以及 {@code layout}。如需有關不同類型的詳細資訊,請參閱<a href="available-resources.html">資源類型</a>。
+  </li>
+  <li>資源名稱<em></em>可能是:檔案名稱,不含副檔名;或 XML {@code android:name} 屬性中的值,如果資源是簡單值 (例如字串)。
+
+</li>
+</ul>
+
+<p>您有兩種方式可存取資源:</p>
+<ul>
+  <li><strong>在程式碼中:</strong>使用 {@code R} 類別中子類別的靜態整數,例如:
+
+    <pre class="classic no-pretty-print">R.string.hello</pre>
+    <p>{@code string} 是資源類型,而 {@code hello} 是資源名稱。若您以此格式提供資源 ID 時,很多 Android API 都可以存取您的資源。
+請參閱<a href="#ResourcesFromCode">在程式碼中存取資源</a>。
+</p>
+  </li>
+  <li><strong>在 XML 中:</strong>使用特殊 XML 語法,也可以對應到您在 {@code R} 類別中定義的資源 ID,例如:
+
+    <pre class="classic no-pretty-print">&#64;string/hello</pre>
+    <p>{@code string} 是資源類型,而 {@code hello} 是資源名稱。您可以在 XML 資源中的任何位置使用此語法,只要符合您在資源中所提供的預期值即可。
+請參閱<a href="#ResourcesFromXml">存取 XML 中的資源</a>。</p>
+  </li>
+</ul>
+
+
+
+<h2 id="ResourcesFromCode">在程式碼中存取資源 </h2>
+
+<p>您可以將資源 ID 作為方法參數傳遞,在程式碼中使用資源。例如,您可以利用 {@link android.widget.ImageView#setImageResource(int) setImageResource()} 將 {@link android.widget.ImageView} 設定為使用 {@code res/drawable/myimage.png} 資源:
+
+</p>
+<pre>
+ImageView imageView = (ImageView) findViewById(R.id.myimageview);
+imageView.setImageResource(<strong>R.drawable.myimage</strong>);
+</pre>
+
+<p>您也可以使用 {@link
+android.content.res.Resources} (以 {@link android.content.Context#getResources()} 可取得執行個體) 中的方法擷取個別的資源。
+</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2>存取原始檔案</h2>
+
+<p>雖然不常見,但您有時需要存取原始檔案和目錄。如果有此需求,則不能將檔案儲存在 {@code res/},因為要從 
+{@code res/} 讀取資源的唯一方式是透過資源 ID。不過,您可以將資源儲存在 
+{@code assets/} 目錄。
+</p>
+<p>儲存在 {@code assets/} 目錄中的檔案「不會」<em></em>指定資源 ID,因此您無法透過 {@code R} 類別或從 XML 資源參照這些檔案。
+您可以改為查詢 {@code assets/} 目錄中的檔案,就像一般檔案系統一樣,並使用 
+{@link android.content.res.AssetManager} 讀取原始資料。
+</p>
+<p>不過,如果您只是要讀取原始資料 (例如影片或音訊檔案),可以將檔案儲存在 {@code res/raw/} 目錄,然後使用 {@link
+android.content.res.Resources#openRawResource(int) openRawResource()} 讀取位元組串流。
+</p>
+
+</div>
+</div>
+
+
+<h3>語法</h3>
+
+<p>在程式碼中參照資源的語法如下:</p>
+
+<pre class="classic no-pretty-print">
+[<em>&lt;package_name&gt;</em>.]R.<em>&lt;resource_type&gt;</em>.<em>&lt;resource_name&gt;</em>
+</pre>
+
+<ul>
+  <li>{@code &lt;package_name&gt;}<em></em> 資源所在的封裝名稱 (從您自己的封裝中參照資源時,不需要此名稱)。
+</li>
+  <li>{@code &lt;resource_type&gt;}<em></em> 是資源類型的 {@code R} 子類別。</li>
+  <li>{@code &lt;resource_name&gt;}<em></em> 可以是不含副檔名的資源檔案名稱,或是 XML 元素中的 {@code android:name} 屬性值 (簡單值)。
+
+</li>
+</ul>
+<p>請參閱<a href="available-resources.html">資源類型</a>,以取得關於每個資源類型及其參照方式的詳細資訊。
+</p>
+
+
+<h3>使用案例</h3>
+
+<p>很多方法都接受資源 ID 參數,您可以使用
+{@link android.content.res.Resources} 中的方法擷取資源。您可以透過以下方式取得 {@link
+android.content.res.Resources} 的執行個體:{@link android.content.Context#getResources
+Context.getResources()}。</p>
+
+
+<p>以下是在程式碼中存取資源的範例:</p>
+
+<pre>
+// Load a background for the current screen from a drawable resource
+{@link android.app.Activity#getWindow()}.{@link
+android.view.Window#setBackgroundDrawableResource(int)
+setBackgroundDrawableResource}(<strong>R.drawable.my_background_image</strong>) ;
+
+// Set the Activity title by getting a string from the Resources object, because
+//  this method requires a CharSequence rather than a resource ID
+{@link android.app.Activity#getWindow()}.{@link android.view.Window#setTitle(CharSequence)
+setTitle}(getResources().{@link android.content.res.Resources#getText(int)
+getText}(<strong>R.string.main_title</strong>));
+
+// Load a custom layout for the current screen
+{@link android.app.Activity#setContentView(int)
+setContentView}(<strong>R.layout.main_screen</strong>);
+
+// Set a slide in animation by getting an Animation from the Resources object
+mFlipper.{@link android.widget.ViewAnimator#setInAnimation(Animation)
+setInAnimation}(AnimationUtils.loadAnimation(this,
+        <strong>R.anim.hyperspace_in</strong>));
+
+// Set the text on a TextView object using a resource ID
+TextView msgTextView = (TextView) findViewById(<strong>R.id.msg</strong>);
+msgTextView.{@link android.widget.TextView#setText(int)
+setText}(<strong>R.string.hello_message</strong>);
+</pre>
+
+
+<p class="caution"><strong>注意:</strong>您不應手動修改 {@code
+R.java} 檔案 &mdash; 此檔案是在編譯專案時由 {@code aapt} 工具所產生。
+下次編譯時會覆寫所有變更內容。</p>
+
+
+
+<h2 id="ResourcesFromXml">存取 XML 中的資源</h2>
+
+<p>您可以使用現有資源的參照,為某些 XML 屬性和元素定義值。
+您在建立版面配置檔案時,會經常以此方式提供字串和影像讓小工具使用。
+</p>
+
+<p>例如,如果您要將 {@link android.widget.Button} 加入版面配置,應該使用按鈕文字的<a href="string-resource.html">字串資源</a>:
+</p>
+
+<pre>
+&lt;Button
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:text="<strong>@string/submit</strong>" /&gt;
+</pre>
+
+
+<h3>語法</h3>
+
+<p>在 XML 資源中參照資源的語法如下:</p>
+
+<pre class="classic no-pretty-print">
+&#64;[<em>&lt;package_name&gt;</em>:]<em>&lt;resource_type&gt;</em>/<em>&lt;resource_name&gt;</em>
+</pre>
+
+<ul>
+  <li>{@code &lt;package_name&gt;} 資源所在的封裝名稱 (從同一個封裝中參照資源時,不需要此名稱)
+</li>
+  <li>{@code &lt;resource_type&gt;} 是資源類型的
+{@code R} 子類別。</li>
+  <li>{@code &lt;resource_name&gt;} 可以是不含副檔名的資源檔案名稱,或是 XML 元素中的 {@code android:name} 屬性值 (簡單值)。
+
+</li>
+</ul>
+
+<p>請參閱<a href="available-resources.html">資源類型</a>,以取得關於每個資源類型及其參照方式的詳細資訊。
+</p>
+
+
+<h3>使用案例</h3>
+
+<p>有時候您必須在 XML 中使用資源,而不能使用值 (例如,將可繪項目影像套用至小工具)。不過,您也可以在 XML 中接受簡單值的任何位置使用資源。
+例如,如果您有下列資源檔案,其中內含<a href="more-resources.html#Color">色彩資源</a>和<a href="string-resource.html">字串資源</a>:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+   &lt;color name="opaque_red">#f00&lt;/color>
+   &lt;string name="hello">Hello!&lt;/string>
+&lt;/resources>
+</pre>
+
+<p>您可以在下列版面配置檔案中使用這些資源,以設定文字色彩和文字字串:
+</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;fill_parent&quot;
+    android:textColor=&quot;<strong>&#64;color/opaque_red</strong>&quot;
+    android:text=&quot;<strong>&#64;string/hello</strong>&quot; /&gt;
+</pre>
+
+<p>在此情況下,您不用在資源參照中指定封裝名稱,因為資源是來自您自己的封裝。
+如要參照系統資源,則需要使用封裝名稱。
+範例:</p>
+
+<pre>
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;EditText xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;fill_parent&quot;
+    android:textColor=&quot;<strong>&#64;android:color/secondary_text_dark</strong>&quot;
+    android:text=&quot;&#64;string/hello&quot; /&gt;
+</pre>
+
+<p class="note"><strong>注意:</strong>您一律都要使用字串資源,便於應用程式當地語系化。
+如需關於建立替代資源 (例如當地語系化的字串) 的詳細資訊,請參閱<a href="providing-resources.html#AlternativeResources">提供替代資源</a>。
+
+
+如需將應用程式當地語系化的詳細指南,請參閱<a href="localization.html">當地語系化</a>。
+</p>
+
+<p>您甚至可以在 XML 中使用資源以建立別名。例如:您可以用其他可繪項目資源的別名,建立可繪項目資源:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/other_drawable" />
+</pre>
+
+<p>聽起來多此一舉,但是,當您使用替代資源時,就非常實用。深入瞭解<a href="providing-resources.html#AliasResources">建立別名資源</a>。
+</p>
+
+
+
+<h3 id="ReferencesToThemeAttributes">參照樣式屬性</h3>
+
+<p>樣式屬性資源可以讓您在目前套用的設計風格中參照屬性的值。
+參照樣式屬性可以讓您透過目前設計風格提供的標準變化自訂 UI 元素外觀,而不需要使用硬式編碼值。
+
+參照樣式屬性基本上就是「使用目前設計風格中此屬性所定義的樣式」。
+</p>
+
+<p>如要參照樣式屬性,名稱語法幾乎和一般資源格式相同,只要把小老鼠符號 ({@code @}) 換成問號 ({@code ?}) 即可,而且您可以選擇是否要使用資源類型。
+
+範例:</p>
+
+<pre class="classic">
+?[<em>&lt;package_name&gt;</em>:][<em>&lt;resource_type&gt;</em>/]<em>&lt;resource_name&gt;</em>
+</pre>
+
+<p>例如,您可以參照屬性,讓文字色彩符合系統設計風格的「主要」文字色彩,方式如下:
+</p>
+
+<pre>
+&lt;EditText id=&quot;text&quot;
+    android:layout_width=&quot;fill_parent&quot;
+    android:layout_height=&quot;wrap_content&quot;
+    android:textColor=&quot;<strong>?android:textColorSecondary</strong>&quot;
+    android:text=&quot;&#64;string/hello_world&quot; /&gt;
+</pre>
+
+<p>這裡的 {@code android:textColor} 屬性指出目前設計風格中樣式屬性的名稱。
+Android 現在會將套用至 {@code android:textColorSecondary} 樣式屬性的值,當成此小工具中 {@code android:textColor} 的值。
+因為系統資源工具知道在此環境中會有一個屬性資源,您不需要明確陳述其類型 (
+<code>?android:attr/textColorSecondary</code>)&mdash; 可以不需要寫上出 {@code attr} 類型。
+
+</p>
+
+
+
+
+<h2 id="PlatformResources">存取平台資源</h2>
+
+<p>Android 內含多種標準資源,例如樣式、設計風格以及版面配置。如要存取這些資源,則必須在參照資源時使用
+<code>android</code> 封裝名稱。
+例如,Android 在 {@link android.widget.ListAdapter} 中提供版面配置資源,您可以用於列出項目:
+</p>
+
+<pre>
+{@link android.app.ListActivity#setListAdapter(ListAdapter)
+setListAdapter}(new {@link
+android.widget.ArrayAdapter}&lt;String&gt;(this, <strong>android.R.layout.simple_list_item_1</strong>, myarray));
+</pre>
+
+<p>在此範例中,{@link android.R.layout#simple_list_item_1} 是一個版面配置資源,由平台為 {@link android.widget.ListView} 中的項目所定義。
+您可以加以使用,而不用自行建立清單項目的版面配置。
+如需詳細資訊,請參閱<a href="{@docRoot}guide/topics/ui/layout/listview.html">清單檢視</a>開發人員指南。
+</p>
+
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/resources/overview.jd b/docs/html-intl/intl/zh-tw/guide/topics/resources/overview.jd
new file mode 100644
index 0000000..68197d1
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/resources/overview.jd
@@ -0,0 +1,103 @@
+page.title=資源總覽
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>本文主題</h2>
+  <ol>
+    <li><a href="providing-resources.html">提供資源</a></li>
+    <li><a href="accessing-resources.html">存取資源</a></li>
+    <li><a href="runtime-changes.html">處理執行階段變更</a></li>
+    <li><a href="localization.html">本地化</a></li>
+  </ol>
+
+  <h2>參考資料</h2>
+  <ol>
+    <li><a href="available-resources.html">資源類型</a></li>
+  </ol>
+</div>
+</div>
+
+
+<p>建議您一律將應用程式程式碼當中像是圖片和字串的資源具體化,以便個別加以維護。
+將資源具體化也可讓您提供支援特定裝置設定的替代資源,例如不同語言或螢幕大小,隨著提供不同設定的 Android 裝置日漸增加,這點也變得日益重要。
+
+
+為了提供不同設定的相容性,您必須整理專案的 {@code res/} 目錄中的資源,使用各種子目錄按類型與設定將資源分門別類。
+
+
+</p>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram1.png" height="167" alt="" />
+<p class="img-caption">
+<strong>圖 1.</strong>兩個不同的裝置,個別使用預設的版面配置 (應用程式未提供替代的版面配置)。
+</p>
+</div>
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
+<p class="img-caption">
+<strong>圖 2.</strong>兩個不同的裝置,個別使用不同螢幕大小所提供的不同版面配置。
+</p>
+</div>
+
+<p>針對任何資源類型,您都能為應用程式指定「預設」<em></em>與多項「替代」<em></em>資源。
+</p>
+<ul>
+  <li>不論裝置設定為何,或在沒有符合目前設定的替代資源時,您都應該使用預設資源。
+
+</li>
+  <li>您設計用來與特定設定搭配使用的就是替代資源。
+如要為某個設定指定一組資源,請將適當的設定限定詞附加到目錄名稱。
+</li>
+</ul>
+
+<p>例如,假設您的預設 UI 版面配置儲存在 {@code res/layout/} 目錄,您可能要指定一個不同的版面配置並儲存在
+{@code res/layout-land/} 目錄中,以在螢幕處於橫向時使用。
+
+Android 會在比對裝置目前的設定與您的資源目錄名稱後,自動套用適當的資源。
+</p>
+
+<p>圖 1 說明系統如何在沒有替代資源可用時,對兩個不同裝置套用相同的版面配置。
+圖 2 說明相同的應用程式為較大的螢幕新增替代版面配置資源的情況。
+</p>
+
+<p>下文提供完整的說明,指引您如何整理應用程式資源、指定替代資源、在您的應用程式中存取這些資源等等:
+</p>
+
+<dl>
+  <dt><strong><a href="providing-resources.html">提供資源</a></strong></dt>
+  <dd>您可在應用程式中加入哪些資源類型,儲存在哪裡以及如何針對不同的裝置設定建立替代資源。
+</dd>
+  <dt><strong><a href="accessing-resources.html">存取資源</a></strong></dt>
+  <dd>如何使用您提供的資源 (在應用程式的程式碼中或在其他 XML 資源中參考)。
+</dd>
+  <dt><strong><a href="runtime-changes.html">處理執行階段變更</a></strong></dt>
+  <dd>如何管理在 Activity 執行期間發生的設定變更。</dd>
+  <dt><strong><a href="localization.html">本地化</a></strong></dt>
+  <dd>從細節到整體的說明,指引您使用替代資源將應用程式本地化。雖然這只是替代資源的一種特殊用途,但為了觸及更多使用者,這樣做非常重要。
+
+</dd>
+  <dt><strong><a href="available-resources.html">資源類型</a></strong></dt>
+  <dd>您能提供的各種資源類型參考資料,描述其 XML 元件、屬性及語法。
+例如,此參考資料說明如何建立應用程式選單、可繪項目、動畫等資源。
+</dd>
+</dl>
+
+<!--
+<h2>Raw Assets</h2>
+
+<p>An alternative to saving files in {@code res/} is to save files in the {@code
+assets/} directory. This should only be necessary if you need direct access to original files and
+directories by name. Files saved in the {@code assets/} directory will not be given a resource
+ID, so you can't reference them through the {@code R} class or from XML resources. Instead, you can
+query data in the {@code assets/} directory like an ordinary file system, search through the
+directory and
+read raw data using {@link android.content.res.AssetManager}. For example, this can be more useful
+when dealing with textures for a game. However, if you only need to read raw data from a file
+(such as a video or audio file), then you should save files into the {@code res/raw/} directory and
+then read a stream of bytes using {@link android.content.res.Resources#openRawResource(int)}. This
+is uncommon, but if you need direct access to original files in {@code assets/}, refer to the {@link
+android.content.res.AssetManager} documentation.</p>
+-->
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/resources/providing-resources.jd b/docs/html-intl/intl/zh-tw/guide/topics/resources/providing-resources.jd
new file mode 100644
index 0000000..0938dc0
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/resources/providing-resources.jd
@@ -0,0 +1,1094 @@
+page.title=提供資源
+parent.title=應用程式資源
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>快速檢視</h2>
+  <ul>
+    <li>不同類型的資源屬於 {@code res/} 中不同的子目錄</li>
+    <li>替代資源提供特定設定資源檔案</li>
+    <li>始終要包含預設資源,如此應用程式才不會依賴特定裝置設定
+</li>
+  </ul>
+  <h2>本文件內容</h2>
+  <ol>
+    <li><a href="#ResourceTypes">分組資源類型</a></li>
+    <li><a href="#AlternativeResources">提供替代資源</a>
+      <ol>
+        <li><a href="#QualifierRules">限定詞名稱規則</a></li>
+        <li><a href="#AliasResources">建立別名資源</a></li>
+      </ol>
+    </li>
+    <li><a href="#Compatibility">使用資源提供最佳的裝置相容性</a></li>
+    <li><a href="#BestMatch">Android 如何尋找最相符的資源</a></li>
+  </ol>
+
+  <h2>另請參閱</h2>
+  <ol>
+    <li><a href="accessing-resources.html">存取資源</a></li>
+    <li><a href="available-resources.html">資源類型</a></li>
+    <li><a href="{@docRoot}guide/practices/screens_support.html">支援多個螢幕</a>
+</li>
+  </ol>
+</div>
+</div>
+
+<p>您應該一律將應用程式資源具體化,例如影像和程式碼字串,以便單獨維護它們。
+同時,您還應該將替代資源分組到特殊命名的資源目錄中,為特定裝置設定提供替代資源。
+Android 會在執行階段根據目前的設定使用適當的資源。
+例如,您可能會想根據螢幕大小提供不同的 UI 版面配置,或者根據語言設定提供不同的字串。
+
+</p>
+
+<p>具體化您的應用程式資源後,可以使用在專案 {@code R} 類別中產生的資源 ID 來存取它們。
+在應用程式使用資源的方法在<a href="accessing-resources.html">存取資源</a>中有相關討論。
+
+本文件說明如何在 Android 專案分組您的資源,並為特定裝置設定提供替代資源。
+</p>
+
+
+<h2 id="ResourceTypes">分組資源類型</h2>
+
+<p>您應該將每個資源類型放在專案
+{@code res/} 目錄的特定子目錄中。例如,下列為簡單專案的檔案階層:</p>
+
+<pre class="classic no-pretty-print">
+MyProject/
+    src/  <span style="color:black">
+        MyActivity.java  </span>
+    res/
+        drawable/  <span style="color:black">
+            graphic.png  </span>
+        layout/  <span style="color:black">
+            main.xml
+            info.xml</span>
+        mipmap/  <span style="color:black">
+            icon.png </span>
+        values/  <span style="color:black">
+            strings.xml  </span>
+</pre>
+
+<p>如您在此範例所見,{@code res/} 目錄包含所有資源 (在子目錄中):一個影像資源、兩個版面配置資源、啟動器圖示的 {@code mipmap/} 目錄,以及字串資源檔案。
+
+資源目錄名稱非常重要,在表 1 有相關說明。
+</p>
+
+<p class="note"><strong>注意:</strong>如需有關使用 mipmap 資料夾的詳細資訊,請參閱<a href="{@docRoot}tools/projects/index.html#mipmap">管理專案總覽</a>。
+</p>
+
+<p class="table-caption" id="table1"><strong>表 1.</strong>專案 {@code res/} 目錄內部支援資源目錄。
+</p>
+
+<table>
+  <tr>
+    <th scope="col">目錄</th>
+    <th scope="col">資源類型</th>
+  </tr>
+
+  <tr>
+    <td><code>animator/</code></td>
+    <td>定義<a href="{@docRoot}guide/topics/graphics/prop-animation.html">屬性動畫</a>的 XML 檔案。
+</td>
+  </tr>
+
+  <tr>
+    <td><code>anim/</code></td>
+    <td>定義 <a href="{@docRoot}guide/topics/graphics/view-animation.html#tween-animation">tween 動畫</a>的 XML 檔案。
+(屬性動畫也能儲存在這個目錄中,但建議將屬性動畫放在{@code animator/} 目錄中,以區分這兩個類型。)
+
+</td>
+  </tr>
+
+  <tr>
+    <td><code>color/</code></td>
+    <td>定義色彩狀態清單的 XML 檔案。請參閱<a href="color-list-resource.html">色彩狀態清單資源</a>
+</td>
+  </tr>
+
+  <tr>
+    <td><code>drawable/</code></td>
+
+    <td><p>編譯成下列可繪項目資源子類型的點陣圖檔案 ({@code .png}、{@code .9.png}、{@code .jpg}、{@code .gif}) 或 XML 檔案:
+</p>
+      <ul>
+        <li>點陣圖檔案</li>
+        <li>九宮格影像 (可重新調整大小的點陣圖)</li>
+        <li>狀態清單</li>
+        <li>形狀</li>
+        <li>動畫可繪項目</li>
+        <li>其他可繪項目</li>
+      </ul>
+      <p>請參閱<a href="drawable-resource.html">可繪項目資源</a>。</p>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>mipmap/</code></td>
+    <td>適用於不同啟動器圖示密度的可繪項目檔案。如需有關使用 {@code mipmap/} 資料夾管理啟動器圖示的詳細資訊,請參閱<a href="{@docRoot}tools/project/index.html#mipmap">管理專案總覽</a>。
+
+</td>
+  </tr>
+
+  <tr>
+    <td><code>layout/</code></td>
+    <td>定義使用者介面版面配置的 XML 檔案。
+        請參閱<a href="layout-resource.html">版面配置資源</a>。</td>
+  </tr>
+
+  <tr>
+    <td><code>menu/</code></td>
+    <td>定義應用程式選單 (例如,選項選單、操作選單或子選單) 的 XML 檔案。
+請參閱<a href="menu-resource.html">選單資源</a>。</td>
+  </tr>
+
+  <tr>
+    <td><code>raw/</code></td>
+    <td><p>以原始格式儲存的任意檔案。如要使用原始
+{@link java.io.InputStream} 開啟這些資源,使用資源 ID 呼叫 {@link android.content.res.Resources#openRawResource(int)
+Resources.openRawResource()},資源 ID 為 {@code R.raw.<em>filename</em>}。</p>
+      <p>然而,如果您需要存取原始檔案名稱和檔案階層,可以考慮將一些資源儲存在 {@code
+assets/} 目錄中 (而不是 {@code res/raw/})。
+位於 {@code assets/} 的檔案不會有資源 ID,因此您只能使用 {@link android.content.res.AssetManager} 讀取它們。
+</p></td>
+  </tr>
+
+  <tr>
+    <td><code>values/</code></td>
+    <td><p>包含簡單值 (例如,字串、整數和色彩) 的 XML 檔案。</p>
+      <p>位於其他 {@code res/} 子目錄的 XML 資源檔案會根據 XML 檔案名稱定義單一資源,而位於 {@code values/} 目錄的檔案則會描述多個資源。
+針對這個目錄中的檔案,{@code &lt;resources&gt;} 元素的每個子項都會定義單一資源。
+
+例如,{@code &lt;string&gt;} 元素建立一個
+{@code R.string} 資源,{@code &lt;color&gt;} 元素建立一個 {@code R.color}資源。
+</p>
+      <p>由於每個資源都是以自己的 XML 元素定義,您可以依照自己的喜好命名檔案,並將不同的資源類型放在一個檔案中。
+然而,為了更加清楚,您可以將唯一資源類型放在不同的檔案中。
+例如,針對您可以在此目錄建立的資源,這裡提供一些檔案名稱慣例:
+</p>
+      <ul>
+        <li>arrays.xml 適用於資源陣列 (<a href="more-resources.html#TypedArray">具類型的陣列</a>)。</li>
+        <li>colors.xml 適用於<a href="more-resources.html#Color">色彩值</a></li>
+        <li>dimens.xml 適用於<a href="more-resources.html#Dimension">維度值</a>。</li>
+        <li>strings.xml 適用於<a href="string-resource.html">字串值</a>。
+</li>
+        <li>styles.xml 適用於<a href="style-resource.html">樣式</a>。</li>
+      </ul>
+      <p>請參閱<a href="string-resource.html">字串資源</a>、
+<a href="style-resource.html">樣式資源</a>和
+<a href="more-resources.html">更多資源類型</a>。</p>
+    </td>
+  </tr>
+
+  <tr>
+    <td><code>xml/</code></td>
+    <td>可以在執行階段讀取的任意 XML 檔案,方法是呼叫 {@link
+android.content.res.Resources#getXml(int) Resources.getXML()}。各種 XML 設定檔案都必須儲存在這裡,例如<a href="{@docRoot}guide/topics/search/searchable-config.html">可搜尋項目設定</a>。
+
+<!-- or preferences configuration. --></td>
+  </tr>
+</table>
+
+<p class="caution"><strong>注意:</strong>千萬不要將資源檔案直接儲存在
+{@code res/} 目錄內 &mdash; 會發生編譯錯誤。</p>
+
+<p>如需特定資源類型的詳細資訊,請參閱<a href="available-resources.html">資源類型</a>文件。</p>
+
+<p>您儲存在表 1 定義之子目錄的資源是您的「預設」資源。
+也就是說,這些資源會定義您應用程式的預設設計和內容。
+然而,不同類型的 Android 平台裝置可能需要不同類型的資源。
+例如,如果裝置的螢幕大於一般螢幕,則您需要提供不同的版面配置資源,以充分利用額外的螢幕空間。
+或者,如果裝置有不同的語言設定,則您需要提供不同的字串資源,以翻譯您使用者介面中的文字。
+
+如要為不同裝置設定提供這些不同的資源,除了預設資源之外,您還需要提供替代資源。
+
+</p>
+
+
+<h2 id="AlternativeResources">提供替代資源</h2>
+
+
+<div class="figure" style="width:429px">
+<img src="{@docRoot}images/resources/resource_devices_diagram2.png" height="167" alt="" />
+<p class="img-caption">
+<strong>圖 1.</strong>兩個不同的裝置,個別使用不同的版面配置資源。</p>
+</div>
+
+<p>幾乎每個應用程式都應提供替代資源以支援特定裝置設定。
+例如,您應該為不同的螢幕密度包含替代可繪項目資源,並為不同語言提供替代字串資源。
+Android 會在執行階段偵測目前的裝置設定,並為您的應用程式載入適當的資源。
+
+</p>
+
+<p>如要為一組資源指定特定設定的替代項目:</p>
+<ol>
+  <li>在 {@code res/} 建立一個新的目錄,命名的格式為 {@code
+<em>&lt;resources_name&gt;</em>-<em>&lt;config_qualifier&gt;</em>}。
+    <ul>
+      <li><em>{@code &lt;resources_name&gt;}</em> 是對應預設資源 (定義在表 1) 的目錄名稱。
+</li>
+      <li><em>{@code &lt;qualifier&gt;}</em> 是用來指定要使用這些資源之個別設定的名稱 (定義在表 2)。
+</li>
+    </ul>
+    <p>您可以附加一個以上的 <em>{@code &lt;qualifier&gt;}</em>。使用破折號分隔每個項目。
+</p>
+    <p class="caution"><strong>注意:</strong>附加多個限定詞時,您必須以表 2 列出的相同順序放置它們。
+如果限定詞的順序錯誤,將會忽略該資源。
+</p>
+  </li>
+  <li>將各個替代資源儲存在這個新的目錄。資源檔案的名稱必須和預設資源檔案的名稱完全相同。
+</li>
+</ol>
+
+<p>例如,這裡有些預設和替代資源:</p>
+
+<pre class="classic no-pretty-print">
+res/
+    drawable/   <span style="color:black">
+        icon.png
+        background.png    </span>
+    drawable-hdpi/  <span style="color:black">
+        icon.png
+        background.png  </span>
+</pre>
+
+<p>{@code hdpi} 限定詞代表該目錄的資源適用於高密度螢幕裝置。
+這些可繪項目目錄中的影像大小已調整為符合特定螢幕密度,但是檔案名稱完全相同。
+
+如此一來,您用來參照 {@code icon.png} 或 {@code
+background.png} 影像的資源 ID 一律都會相同,但 Android 會透過比對裝置設定資訊和資源目錄名稱中的限定詞,選擇最符合目前裝置的每個資源版本。
+
+</p>
+
+<p>Android 支援多種設定限定詞,而且您可以將多個限定詞加到一個目錄名稱,並用破折號分隔每個限定詞。
+表 2 依優先等級列出有效的設定限定詞 &mdash; 如果您針對一個資源目錄使用多個限定詞,您必須依表格中列出的順序將它們新增到目錄名稱。
+
+
+</p>
+
+
+<p class="table-caption" id="table2"><strong>表 2.</strong>設定限定詞名稱。
+</p>
+<table>
+    <tr>
+        <th>設定</th>
+        <th>限定詞值</th>
+        <th>描述</th>
+    </tr>
+    <tr id="MccQualifier">
+      <td>MCC 和 MNC</td>
+      <td>範例:<br/>
+        <code>mcc310</code><br/>
+        <code><nobr>mcc310-mnc004</nobr></code><br/>
+        <code>mcc208-mnc00</code><br/>
+        等等。
+      </td>
+      <td>
+        <p>行動裝置國家/地區代碼 (MCC) 後面會選擇性加上裝置 SIM 卡上的行動裝置網路代碼 (MNC)
+。例如,<code>mcc310</code> 代表美國地區的所有行動通訊業者、
+        <code>mcc310-mnc004</code> 代表美國地區的 Verizon,以及 <code>mcc208-mnc00</code> 代表法國地區的 Orange。
+</p>
+        <p>如果裝置使用無線電連線 (GSM 手機),MCC 和 MNC 值都會來自SIM 卡。
+</p>
+        <p>您也可以單獨使用 MCC (例如,在應用程式包含國家特定法律資源)。
+如果您只需根據語言進行指定,則改為使用「語言和區域」<em></em>限定詞 (稍後將會討論)。
+如果您決定使用 MCC 和 MNC 限定詞,應謹慎使用,並測試是否可按預期運作。
+</p>
+        <p>另請查看設定欄位 {@link
+android.content.res.Configuration#mcc} 和 {@link
+android.content.res.Configuration#mnc},分別提供目前的行動裝置國家代碼和行動裝置網路代碼。
+</p>
+      </td>
+    </tr>
+    <tr id="LocaleQualifier">
+      <td>語言和區域</td>
+      <td>範例:<br/>
+        <code>en</code><br/>
+        <code>fr</code><br/>
+        <code>en-rUS</code><br/>
+        <code>fr-rFR</code><br/>
+        <code>fr-rCA</code><br/>
+        等等。
+      </td>
+      <td><p>語言是以兩個字母的 <a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">ISO 639-1</a> 語言代碼定義,後面可以視需要加上兩個字母的 <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO 3166-1-alpha-2</a> 區域代碼 (前面加上小寫 "{@code r}")。
+
+
+
+        </p><p>
+        代碼「沒有」<em></em>大小寫之分;{@code r} 首碼是用來區分區域部分。
+
+        您不能只指定區域。</p>
+        <p>如果使用者在系統設定變更其語言,此設定就會在應用程式生命週期內發生變更。
+請參閱<a href="runtime-changes.html">處理執行階段變更</a>,以瞭解這會如何在執行階段期間影響您的應用程式。
+</p>
+        <p>請參閱<a href="localization.html">當地語系化</a>,以取得將您的應用程式當地語系化成其他語言的詳細指南。
+</p>
+        <p>另請查看 {@link android.content.res.Configuration#locale} 設定欄位,這會提供目前的地區設定。
+</p>
+      </td>
+    </tr>
+    <tr id="LayoutDirectionQualifier">
+      <td>版面配置方向</td>
+      <td><code>ldrtl</code><br/>
+        <code>ldltr</code><br/>
+      </td>
+      <td><p>應用程式的版面配置方向。{@code ldrtl} 代表「版面配置方向右至左」。
+      {@code ldltr} 代表「版面配置方向左至右」,而且是預設隱含值。
+      </p>
+      <p>這適用於任何資源,例如版面配置、可繪項目或值。
+      </p>
+      <p>例如,如果您想針對阿拉伯語言提供一些特定版面配置,以及為任何其他「右至左」語言 (像是波斯文或希伯來文) 提供幾個一般版面配置,則程式碼如下:
+
+      </p>
+<pre class="classic no-pretty-print">
+res/
+    layout/   <span style="color:black">
+        main.xml  </span>(Default layout)
+    layout-ar/  <span style="color:black">
+        main.xml  </span>(Specific layout for Arabic)
+    layout-ldrtl/  <span style="color:black">
+        main.xml  </span>(Any "right-to-left" language, except
+                  for Arabic, because the "ar" language qualifier
+                  has a higher precedence.)
+</pre>
+        <p class="note"><strong>注意:</strong>如要為您的應用程式啟用右至左版面配置功能,您必須將 <a href="{@docRoot}guide/topics/manifest/application-element.html#supportsrtl">{@code
+        supportsRtl}</a> 設成 {@code "true"},以及將 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> 設成 17 或更高。
+</p>
+        <p>已新增至 API 級別 17。<em></em></p>
+      </td>
+    </tr>
+    <tr id="SmallestScreenWidthQualifier">
+      <td>smallestWidth</td>
+      <td><code>sw&lt;N&gt;dp</code><br/><br/>
+        範例:<br/>
+        <code>sw320dp</code><br/>
+        <code>sw600dp</code><br/>
+        <code>sw720dp</code><br/>
+        等等。
+      </td>
+      <td>
+        <p>螢幕的基本大小,也就是可用
+螢幕區域的最短維度。具體而言,裝置的 smallestWidth 是螢幕最短的可用高度和寬度 (您也可以把它當成螢幕的「最小寬度」)。
+您可以使用此限定詞確保無論螢幕目前的方向為何,您的應用程式至少有 {@code &lt;N&gt;} dps 的寬度可供 UI 使用。
+
+</p>
+        <p>例如,如果您的版面配置需要隨時保持至少 600 dp 的最小螢幕區域維度,則您可以使用此限定詞建立版面配置資源 {@code
+res/layout-sw600dp/}。
+系統只會在可用螢幕的最小維度至少是 600dp 時使用這些資源,無論 600dp 的長度對使用者而言是高度或寬度都一樣。
+
+smallestWidth 是螢幕的固定螢幕大小特性;<strong>裝置的 smallestWidth 不會隨著螢幕方向的改變而變更。</strong>
+</p>
+        <p>裝置的 smallestWidth 會將螢幕裝飾和系統 UI 列入計算。例如,如果裝置的螢幕上有一些永久的 UI 元素,且這些元素佔用了 smallestWidth 座標軸上的空間,系統會宣告 smallestWidth 小於實際螢幕大小,因為這些是 UI 無法使用的螢幕像素。
+
+
+因此,您使用的值應該是版面配置所需的實際最小維度<em></em> (這個值通常是您版面配置支援的「最小寬度」,無論螢幕目前的方向為何都一樣)。
+
+</p>
+        <p>您可以針對一般螢幕大小在這裡使用的一些值:</p>
+        <ul>
+          <li>320 適用於採用以下螢幕設定的裝置:
+            <ul>
+              <li>240x320 ldpi (QVGA 手機)</li>
+              <li>320x480 mdpi (手機)</li>
+              <li>480x800 hdpi (高密度手機)</li>
+            </ul>
+          </li>
+          <li>480 適用於 480x800 mdpi 這類螢幕 (平板電腦/手機)。</li>
+          <li>600 適用於 600x1024 mdpi 這類螢幕 (7" 平板電腦)。</li>
+          <li>720 適用於 720x1280 mdpi 這類螢幕 (10" 平板電腦)。</li>
+        </ul>
+        <p>當您的應用程式為 smallestWidth 限定詞提供多個值不相同的資源目錄時,系統會使用最接近 (不超過)裝置 smallestWidth 的值。
+
+ </p>
+        <p>已新增至 API 級別 13。<em></em></p>
+        <p>另請查看 <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html#requiresSmallest">{@code
+android:requiresSmallestWidthDp}</a> 屬性,該屬性會宣告與您應用程式相容的最小 smallestWidth,以及 {@link
+android.content.res.Configuration#smallestScreenWidthDp} 設定欄位,此欄位保留裝置的 smallestWidth 值。
+
+</p>
+        <p>如需設計不同螢幕及使用此限定詞的詳細資訊,請參閱<a href="{@docRoot}guide/practices/screens_support.html">支援多個螢幕</a>開發人員指南。
+
+</p>
+      </td>
+    </tr>
+    <tr id="ScreenWidthQualifier">
+      <td>可用寬度</td>
+      <td><code>w&lt;N&gt;dp</code><br/><br/>
+        範例:<br/>
+        <code>w720dp</code><br/>
+        <code>w1024dp</code><br/>
+        等等。
+      </td>
+      <td>
+        <p>指定資源應使用的最小可用螢幕寬度,以 {@code dp} 單位計算 &mdash; 由 <code>&lt;N&gt;</code> 值定義。
+這個設定值會隨著螢幕方向變更為橫向或直向而改變,以符合目前實際的寬度。
+
+</p>
+        <p>當您的應用程式為這個設定提供多個值不相同的資源目錄時,系統會使用最接近 (不超過) 裝置目前螢幕寬度的值。
+
+這個值會將螢幕裝飾列入計算,因此如果裝置顯示的左邊緣或右邊緣有一些永久的 UI 元素,則會使用比實際螢幕大小更小的寬度值,將這些 UI 元素列入計算並減少應用程式的可用空間。
+
+
+
+</p>
+        <p>已新增至 API 級別 13。<em></em></p>
+        <p>另請查看 {@link android.content.res.Configuration#screenWidthDp} 設定欄位,該欄位保留目前的螢幕寬度。
+</p>
+        <p>如需設計不同螢幕及使用此限定詞的詳細資訊,請參閱<a href="{@docRoot}guide/practices/screens_support.html">支援多個螢幕</a>開發人員指南。
+
+</p>
+      </td>
+    </tr>
+    <tr id="ScreenHeightQualifier">
+      <td>可用高度</td>
+      <td><code>h&lt;N&gt;dp</code><br/><br/>
+        範例:<br/>
+        <code>h720dp</code><br/>
+        <code>h1024dp</code><br/>
+        等等。
+      </td>
+      <td>
+        <p>指定資源應使用的最小可用螢幕高度,以「dp」單位計算 &mdash; 由 <code>&lt;N&gt;</code> 值定義。
+這個設定值會隨著螢幕方向變更為橫向或直向而改變,以符合目前實際的高度。
+
+</p>
+        <p>當您的應用程式為這個設定提供多個值不相同的資源目錄時,系統會使用最接近 (不超過) 裝置目前螢幕高度的值。
+
+這個值會將螢幕裝飾列入計算,因此如果裝置顯示的上邊緣或下邊緣有一些永久的 UI 元素,則會使用比實際螢幕大小更小的高度值,將這些 UI 元素列入計算並減少應用程式的可用空間。
+
+
+
+不固定的螢幕裝飾 (例如,可在全螢幕時隱藏的手機狀態列) 在這裡不<em></em>列入計算,標題列或動作列這類視窗裝飾也不會列入計算,因此應用程式必須做好準備因應比其指定還小的空間。
+
+
+
+
+        <p>已新增至 API 級別 13。<em></em></p>
+        <p>另請查看 {@link android.content.res.Configuration#screenHeightDp} 設定欄位,該欄位保留目前的螢幕寬度。
+</p>
+        <p>如需設計不同螢幕及使用此限定詞的詳細資訊,請參閱<a href="{@docRoot}guide/practices/screens_support.html">支援多個螢幕</a>開發人員指南。
+
+</p>
+      </td>
+    </tr>
+    <tr id="ScreenSizeQualifier">
+      <td>螢幕大小</td>
+      <td>
+        <code>small</code><br/>
+        <code>normal</code><br/>
+        <code>large</code><br/>
+        <code>xlarge</code>
+      </td>
+      <td>
+        <ul class="nolist">
+        <li>{@code small}:與低密度 QVGA 螢幕大小相似的螢幕
+。小螢幕的最低版面配置大小約 320x426 dp 單位。
+範例包含 QVGA 低密度和 VGA 高密度。
+</li>
+        <li>{@code normal}:與中密度 HVGA 螢幕大小相似的螢幕。
+一般螢幕的最低版面配置大小約 320x470 dp 單位。
+這類螢幕的範例有 WQVGA 低密度、HVGA 中密度、WVGA高密度。
+
+</li>
+        <li>{@code large}:與中密度 VGA 螢幕大小相似的螢幕。
+
+        大螢幕的最低版面配置大小約 480x640 dp 單位。
+        範例包含 VGA 和 WVGA 中密度螢幕。</li>
+        <li>{@code xlarge}:比傳統中密度 HVGA 螢幕大很多的螢幕。
+超大螢幕的最低版面配置大小約 720x960 dp 單位。
+在大多數情況下,使用超大螢幕的裝置由於尺寸過大無法放入口袋,因此最有可能是平板電腦樣式的裝置。
+
+已新增至 API 級別 9。<em></em></li>
+        </ul>
+        <p class="note"><strong>注意:</strong>使用大小限定詞不代表資源僅適用於該大小的螢幕。<em></em>
+如果您提供的替代資源沒有更符合目前裝置設定的限定詞,系統將使用<a href="#BestMatch">最符合</a>的資源。
+
+</p>
+        <p class="caution"><strong>注意:</strong>如果所有資源都使用比目前螢幕更大<em></em>的大小限定詞,系統將不會<strong></strong>使用這些資源,您的應用程式將會在執行階段當機 (例如,如果所有版面配置資源都標記為 {@code
+xlarge} 限定詞,但裝置為一般大小螢幕)。
+
+</p>
+        <p>已新增至 API 級別 4。<em></em></p>
+        
+        <p>請參閱<a href="{@docRoot}guide/practices/screens_support.html">支援多個螢幕</a>以取得詳細資訊。
+</p>
+        <p>另請查看 {@link android.content.res.Configuration#screenLayout} 設定欄位,該欄位會指出螢幕為小螢幕、一般螢幕或大螢幕。
+
+</p>
+      </td>
+    </tr>
+    <tr id="ScreenAspectQualifier">
+      <td>螢幕外觀</td>
+      <td>
+        <code>long</code><br/>
+        <code>notlong</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code long}:長螢幕,例如 WQVGA、WVGA、FWVGA</li>
+          <li>{@code notlong}:非長螢幕,例如 QVGA、HVGA、VGA</li>
+        </ul>
+        <p>已新增至 API 級別 4。<em></em></p>
+        <p>這純粹是依照螢幕的外觀比例來判定 (「長」螢幕是較寬的螢幕)。這與螢幕方向無關。
+</p>
+        <p>另請查看 {@link android.content.res.Configuration#screenLayout} 設定欄位,該欄位會指出螢幕是否為長螢幕。
+</p>
+      </td>
+    </tr>
+    <tr id="OrientationQualifier">
+      <td>螢幕方向</td>
+      <td>
+        <code>port</code><br/>
+        <code>land</code>  <!-- <br/>
+        <code>square</code>  -->
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code port}:裝置的方向為直向 (垂直)</li>
+          <li>{@code land}:裝置的方向為橫向 (水平)</li>
+          <!-- Square mode is currently not used. -->
+        </ul>
+        <p>如果使用者旋轉螢幕,此設定就會在應用程式生命週期內發生變更。
+請參閱<a href="runtime-changes.html">處理執行階段變更</a>,以瞭解這會如何在執行階段期間影響您的應用程式。
+</p>
+        <p>另請查看 {@link android.content.res.Configuration#orientation} 設定欄位,該欄位會指出目前的裝置方向。
+</p>
+      </td>
+    </tr>
+    <tr id="UiModeQualifier">
+      <td>UI 模式</td>
+      <td>
+        <code>car</code><br/>
+        <code>desk</code><br/>
+        <code>television</code><br/>
+        <code>appliance</code>
+        <code>watch</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code car}:在車用座架顯示的裝置</li>
+          <li>{@code desk}:在桌面座架顯示的裝置</li>
+          <li>{@code television}:在電視上顯示的裝置,提供在離使用者很遠的大螢幕上顯示 UI 的「十英呎」體驗,主要透過 DPAD 或其他非指標互動指定方向。
+
+
+</li>
+          <li>{@code appliance}:做為設備使用的裝置,沒有顯示器
+</li>
+          <li>{@code watch}:裝置有佩戴在手腕上的顯示器</li>
+        </ul>
+        <p>已新增至 API 級別 8、電視已新增至 API 13、手錶已新增至 API 20。<em></em></p>
+        <p>如要瞭解從座架插入或移除裝置時,您的應用程式可以如何回應的相關資訊,請參閱<a href="{@docRoot}training/monitoring-device-state/docking-monitoring.html">判斷和監控座架狀態和類型</a>。
+
+</p>
+        <p>如果使用者將裝置放入座架,此設定就會在應用程式生命週期內發生變更。
+您可以使用 {@link
+android.app.UiModeManager} 啟用或停用這些模式。請參閱<a href="runtime-changes.html">處理執行階段變更</a>,以瞭解這會如何在執行階段期間影響您的應用程式。
+</p>
+      </td>
+    </tr>
+    <tr id="NightQualifier">
+      <td>夜間模式</td>
+      <td>
+        <code>night</code><br/>
+        <code>notnight</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code night}:夜間時間</li>
+          <li>{@code notnight}:日間模式</li>
+        </ul>
+        <p>已新增至 API 級別 8。<em></em></p>
+        <p>如果從自動模式 (預設) 的夜間模式離開,在這種情況下模式會隨著日間時間變更,此設定就會在應用程式生命週期內發生變更。
+您可以使用 {@link android.app.UiModeManager} 啟用或停用這個模式。
+請參閱<a href="runtime-changes.html">處理執行階段變更</a>,以瞭解這會如何在執行階段期間影響您的應用程式。
+</p>
+      </td>
+    </tr>
+    <tr id="DensityQualifier">
+      <td>螢幕像素密度 (dpi)</td>
+      <td>
+        <code>ldpi</code><br/>
+        <code>mdpi</code><br/>
+        <code>hdpi</code><br/>
+        <code>xhdpi</code><br/>
+        <code>xxhdpi</code><br/>
+        <code>xxxhdpi</code><br/>
+        <code>nodpi</code><br/>
+        <code>tvdpi</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code ldpi}:低密度螢幕;約 120dpi。</li>
+          <li>{@code mdpi}:中密度 (在傳統 HVGA) 螢幕;約 160dpi。
+</li>
+          <li>{@code hdpi}:高密度螢幕;約 240dpi。</li>
+          <li>{@code xhdpi}:特高密度螢幕;約 320dpi。已新增至 API 級別 8。
+<em></em></li>
+          <li>{@code xxhdpi}:特特高密度螢幕;約 480dpi。已新增至 API 級別 16。
+<em></em></li>
+          <li>{@code xxxhdpi}:特特特高密度使用 (僅限啟動器圖示,請參閱支援多個螢幕中的<a href="{@docRoot}guide/practices/screens_support.html#xxxhdpi-note">注意</a><em></em>);約 640dpi。
+
+已新增至 API 級別 18。
+<em></em></li>
+          <li>{@code nodpi}:如果您不想縮放點陣圖資源以符合裝置密度,可使用此設定。
+</li>
+          <li>{@code tvdpi}:介於 mdpi 和 hdpi 的螢幕;約 213dpi。這不屬於「主要」密度群組。
+這大部分用於電視,大多數應用程式應該不需要用到 &mdash;mdpi 和 hdpi 資源對大多數應用程式已經足夠,系統將視需要縮放它們。
+
+這個限定詞由 API 級別 13 導入。</li>
+        </ul>
+        <p>六個主要密度之間有一個 3:4:6:8:12:16 縮放比例 (忽略tvdpi 密度)。
+因此,ldpi 的 9x9 點陣圖等同於 mdpi 的 12x12 點陣圖、hdpi 的 18x18 點陣圖、xhdpi 的 24x24 點陣圖,以此類推。
+</p>
+        <p>如果您覺得影像資源在電視或其他特定裝置上看起來不夠美觀,而想嘗試 tvdpi 資源,比例因數為 1.33*mdpi。
+例如,mdpi 螢幕上的 100px x 100px 影像在 tvdpi 螢幕應該是 133px x 133px。
+</p>
+        <p class="note"><strong>注意:</strong>使用密度限定詞不代表資源僅適用於該密度的螢幕。
+<em></em>如果您提供的替代資源沒有更符合目前裝置設定的限定詞,系統將使用<a href="#BestMatch">最符合</a>的資源。
+
+</p>
+        <p>請參閱<a href="{@docRoot}guide/practices/screens_support.html">支援多個螢幕</a>,深入瞭解如何處理不同的螢幕密度,以及 Android會如何縮放點陣圖以符合目前的密度。
+
+</p>
+       </td>
+    </tr>
+    <tr id="TouchscreenQualifier">
+      <td>觸控螢幕類型</td>
+      <td>
+        <code>notouch</code><br/>
+        <code>finger</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code notouch}:沒有觸控螢幕的裝置。</li>
+          <li>{@code finger}:裝置含有觸控螢幕,其目的是透過使用者的手指進行方向互動。
+</li>
+        </ul>
+        <p>另請查看 {@link android.content.res.Configuration#touchscreen} 設定欄位,該欄位會指出裝置的觸控螢幕類型。
+</p>
+      </td>
+    </tr>
+    <tr id="KeyboardAvailQualifier">
+      <td>鍵盤可用性</td>
+      <td>
+        <code>keysexposed</code><br/>
+        <code>keyshidden</code><br/>
+        <code>keyssoft</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code keysexposed}:裝置包含鍵盤。如果裝置啟用軟體鍵盤 (可能性很高),即使沒有將硬體鍵盤展示給使用者或甚至裝置沒有硬體鍵盤時,都可使用此設定。
+
+<em></em>如果沒有提供或已停用軟體鍵盤,則只能在展示硬體鍵盤時使用此設定。
+
+</li>
+          <li>{@code keyshidden}:裝置有可用的硬體鍵盤但已隱藏起來,且裝置沒有啟用軟體鍵盤。
+<em></em><em></em></li>
+          <li>{@code keyssoft}:裝置已啟用軟體鍵盤,無論是可見或不可見。
+</li>
+        </ul>
+        <p>如果您提供 <code>keysexposed</code> 資源但沒有 <code>keyssoft</code>資源,只要系統已啟用軟體鍵盤,無論鍵盤是否可見,系統都會使用 <code>keysexposed</code> 資源。
+
+</p>
+        <p>如果使用者開啟硬體鍵盤,此設定就會在應用程式生命週期內發生變更。
+請參閱<a href="runtime-changes.html">處理執行階段變更</a>,以瞭解這會如何在執行階段期間影響您的應用程式。
+</p>
+        <p>另請查看設定欄位 {@link
+android.content.res.Configuration#hardKeyboardHidden} 和 {@link
+android.content.res.Configuration#keyboardHidden},這兩個欄位會分別指出硬體鍵盤的可見度,以及任何其他類型鍵盤 (包含軟體) 的可見度。
+</p>
+      </td>
+    </tr>
+    <tr id="ImeQualifier">
+      <td>主要文字輸入方式</td>
+      <td>
+        <code>nokeys</code><br/>
+        <code>qwerty</code><br/>
+        <code>12key</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code nokeys}:裝置沒有硬體按鍵可輸入文字。</li>
+          <li>{@code qwerty}:裝置有硬體 qwerty 軟體鍵盤,無論使用者是否可見。
+
+</li>
+          <li>{@code 12key}:裝置有硬體 12 鍵鍵盤,無論使用者是否可見。
+</li>
+        </ul>
+        <p>另請查看 {@link android.content.res.Configuration#keyboard} 設定欄位,該欄位會指出可用的主要文字輸入方式。
+</p>
+      </td>
+    </tr>
+    <tr id="NavAvailQualifier">
+      <td>導覽鍵可用性</td>
+      <td>
+        <code>navexposed</code><br/>
+        <code>navhidden</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code navexposed}:使用者可使用導覽鍵。</li>
+          <li>{@code navhidden}:不提供導覽鍵 (例如,位於密合蓋子的後方)。
+</li>
+        </ul>
+        <p>如果使用者顯示導覽鍵,此設定就會在應用程式生命週期內發生變更。
+請參閱<a href="runtime-changes.html">處理執行階段變更</a>,以瞭解這會如何在執行階段期間影響您的應用程式。
+</p>
+        <p>另請查看 {@link android.content.res.Configuration#navigationHidden} 設定欄位,該欄位會指出導覽鍵是否隱藏起來。
+</p>
+      </td>
+    </tr>
+    <tr id="NavigationQualifier">
+      <td>主要的非觸控導覽方式</td>
+      <td>
+        <code>nonav</code><br/>
+        <code>dpad</code><br/>
+        <code>trackball</code><br/>
+        <code>wheel</code>
+      </td>
+      <td>
+        <ul class="nolist">
+          <li>{@code nonav}:裝置除了使用觸控螢幕之外沒有其他導覽設施。
+</li>
+          <li>{@code dpad}:裝置有導覽用的方向鍵 (d-pad)。</li>
+          <li>{@code trackball}:裝置有導覽用的軌跡球。</li>
+          <li>{@code wheel}:裝置有導覽用的方向輪 (不常見)。</li>
+        </ul>
+        <p>另請查看 {@link android.content.res.Configuration#navigation} 設定欄位,該欄位會指出可用的導覽方式類型。
+</p>
+      </td>
+    </tr>
+<!-- DEPRECATED
+    <tr>
+      <td>Screen dimensions</td>
+      <td>Examples:<br/>
+        <code>320x240</code><br/>
+        <code>640x480</code><br/>
+        etc.
+      </td>
+      <td>
+        <p>The larger dimension must be specified first. <strong>This configuration is deprecated
+and should not be used</strong>. Instead use "screen size," "wider/taller screens," and "screen
+orientation" described above.</p>
+      </td>
+    </tr>
+-->
+    <tr id="VersionQualifier">
+      <td>平台版本 (API 級別)</td>
+      <td>範例:<br/>
+        <code>v3</code><br/>
+        <code>v4</code><br/>
+        <code>v7</code><br/>
+        等等。</td>
+      <td>
+        <p>裝置支援的 API 級別。例如,<code>v1</code> 代表 API 級別1 (裝置安裝 Android 1.0 以上版本),以及 <code>v4</code> 代表 API 級別 4 (裝置安裝 Android1.6 以上版本)。
+
+請參閱 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Android API 級別</a>文件以取得有關這些值的詳細資訊。
+</p>
+      </td>
+    </tr>
+</table>
+
+
+<p class="note"><strong>注意:</strong>有些設定限定詞從 Android1.0 就已新增,因此並非所有 Android 版本都支援所有限定詞。
+使用新的限定詞會以隱含的方式新增平台版本的限定詞,因此較舊的裝置一定會忽略它。
+例如,使用
+ <code>w600dp</code> 限定詞最自動包含 <code>v13</code> 限定詞,因為可用寬度限定詞是 API 級別 13 的新項目。
+為了避免發生任何問題,永遠要包含一組預設資源 (一組沒有限定詞的資源<em></em>)。
+如需詳細資訊,請參閱<a href="#Compatibility">使用資源提供最佳的裝置相容性</a>一節。
+
+</p>
+
+
+
+<h3 id="QualifierRules">限定詞名稱規則</h3>
+
+<p>這裡有一些使用設定限定詞名稱的規則:</p>
+
+<ul>
+    <li>您可以為一組資源指定多個限定詞,以破折號分隔。例如,
+<code>drawable-en-rUS-land</code> 適用於橫向的美國英文裝置。
+</li>
+    <li>限定詞的順序必須與<a href="#table2">表 2</a> 所列的一樣。例如:
+
+      <ul>
+        <li>錯誤:<code>drawable-hdpi-port/</code></li>
+        <li>正確:<code>drawable-port-hdpi/</code></li>
+      </ul>
+    </li>
+    <li>替代資源目錄不可為巢狀。例如,您不能有
+<code>res/drawable/drawable-en/</code>。</li>
+    <li>值有大小寫之分。資源編譯器會將目錄名稱轉換為小寫再處理,以避免有大小寫之分的檔案系統發生問題。
+
+名稱中的任何大寫只是為了方便閱讀。</li>
+    <li>每個限定詞類型只支援一個值。例如,如果您想在西班牙文和法文使用相同的可繪項目檔案,則不能將目錄命名為 <em></em>
+<code>drawable-rES-rFR/</code>。
+您必須有兩個資源目錄,例如 
+<code>drawable-rES/</code> 和 <code>drawable-rFR/</code>,這兩個目錄要包含適當的檔案。
+但是,您不需要實際將相同的檔案複製到這兩位置。您可以為資源建立別名。
+請參閱下方的
+<a href="#AliasResources">建立別名資源</a>。</li>
+</ul>
+
+<p>當您將替代資源儲存到以這些限定詞命名的目錄後,Android 會根據目前的裝置設定自動將資源套用到您的應用程式。
+
+每次要求資源時,Android 會檢查包含要求之資源檔案的替代資源目錄,然後<a href="#BestMatch">尋找最符合的資源
+</a> (下方有相關討論)。
+如果沒有符合特定裝置設定的替代資源,則 Android 會使用對應的預設資源 (特定資源類型的資源組,不含設定限定詞)。
+
+
+</p>
+
+
+
+<h3 id="AliasResources">建立別名資源</h3>
+
+<p>如果您要將資源用於一個以上的裝置設定 (但不想以預設資源的形式提供),您不需要將相同的資源放入一個以上的替代資源目錄。
+
+您可以 (在某些情況下) 建立一個替代資源,將它做為儲存在您預設資源目錄的資源別名。
+
+</p>
+
+<p class="note"><strong>注意:</strong>並非所有資源都提供為其他資源建立別名的機制。
+特別是動畫、選單、原始項目和其他在 {@code xml/} 目錄中未指定的資源都不提供這項功能。
+</p>
+
+<p>例如,想像您有一個應用程式圖示 {@code icon.png},且必須為不同的地區設定提供唯一的版本。
+但是,加拿大英文和加拿大法文這兩個地區設定必須使用相同的版本。
+您可能會假設必須在加拿大英文和加拿大法文這兩個資源目錄中複製相同的影像,但並不需要這樣做。
+
+您可以將這兩個地區設定的影像儲存成 {@code icon_ca.png} ({@code icon.png} 以外的任何名稱),然後將該影像放入預設的 {@code res/drawable/} 目錄。
+
+之後,在 {@code
+res/drawable-en-rCA/} 建立一個 {@code icon.xml} 檔案,以及建立 {@code res/drawable-fr-rCA/},用於參照使用 {@code &lt;bitmap&gt;} 元素的 {@code icon_ca.png} 資源。
+這樣可以讓您只儲存一個版本的 PNG 檔案,以及指向該檔案的兩個小 XML 檔案。
+(範例 XML 檔案如下所示。)</p>
+
+
+<h4>可繪項目</h4>
+
+<p>如要為現有的可繪項目建立別名,請使用 {@code &lt;bitmap&gt;} 元素。
+例如:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+    android:src="@drawable/icon_ca" />
+</pre>
+
+<p>如果您將此檔案儲存成 {@code icon.xml} (在替代資源目錄中,像是 
+{@code res/drawable-en-rCA/}),系統會將它編譯成可當作 {@code R.drawable.icon} 參照的資源,但它實際上是 {@code
+R.drawable.icon_ca} 資源 (儲存在 {@code res/drawable/}) 的別名。
+</p>
+
+
+<h4>版面配置</h4>
+
+<p>如要為現有的可繪項目建立別名,請使用以 {@code &lt;merge&gt;} 包裝的{@code &lt;include&gt;} 元素。
+例如:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;merge>
+    &lt;include layout="@layout/main_ltr"/>
+&lt;/merge>
+</pre>
+
+<p>如果您將此檔案儲存成 {@code main.xml},系統會將它編譯成可當作 {@code R.layout.main} 參照的資源,但它實際上是 {@code R.layout.main_ltr} 資源的別名。
+
+</p>
+
+
+<h4>字串和其他簡單值</h4>
+
+<p>如要為現有的字串建立別名,只要將所需字串的資源 ID 當作新字串的值即可。
+例如:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;string name="hello">Hello&lt;/string>
+    &lt;string name="hi">@string/hello&lt;/string>
+&lt;/resources>
+</pre>
+
+<p>{@code R.string.hi} 資源現在是 {@code R.string.hello} 的別名。</p>
+
+<p> <a href="{@docRoot}guide/topics/resources/more-resources.html">其他簡易值</a>的運作方法也一樣。
+例如,一個顏色:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;resources>
+    &lt;color name="yellow">#f00&lt;/color>
+    &lt;color name="highlight">@color/red&lt;/color>
+&lt;/resources>
+</pre>
+
+
+
+
+<h2 id="Compatibility">使用資源提供最佳的裝置相容性</h2>
+
+<p>如要讓您的應用程式支援多個裝置設定,務必要為您應用程式使用的每個資源類型提供預設資源。
+</p>
+
+<p>例如,如果您的應用程式支援多個語言,一律要包含一個 {@code
+values/} 目錄 (儲存字串的位置),其中「不包含」<em></em><a href="#LocaleQualifier">語言和區域限定詞</a>。如果您將所有字串檔案放在含有語言和區域限定詞的目錄中,當執行應用程式的裝置,其語言設定不受字串支援時,應用程式就會當機。
+
+不過,只要您提供預設 {@code values/} 資源,
+應用程式就能正常運作 (即便使用者不懂該語言 &mdash; 仍然比當機好)。
+</p>
+
+<p>同樣地,如果您根據螢幕方向提供不同的版面配置資源,您應該選擇一個方向做為您的預設值。
+例如,不要在 {@code
+layout-land/} 提供橫向版面配置資源及在 {@code layout-port/} 提供直向版面配置資源,而是留下一個做為預設值,例如 {@code layout/} 做為橫向和 {@code layout-port/} 做為直向。
+</p>
+
+<p>提供預設資源很重要,這不只是因為您的應用程式可能執行您未預期到的設定,還因為新的 Android 版本有時候會新增舊版不支援的設定限定詞。
+
+如果您使用新的資源限定詞,但與舊版 Android 保持程式碼相容,則舊版 Android 執行您的應用程式時,如果您沒有提供預設資源,應用程式就會當機,這是因為它無法使用以新限定詞命名的資源。
+
+
+例如,如果您的 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code
+minSdkVersion}</a> 設為 4,而且您讓所有可繪項目資源具備使用<a href="#NightQualifier">夜間模式</a>的資格 (已新增到 API 級別 8 的 {@code night} 或 {@code notnight}),則 API 級別 4 裝置將無法存取您的可繪項目資源且會當機。
+在這種情況下,您可能會想要將 {@code notnight} 當作預設資源,因此您應該要排除該限定詞,讓您的可繪項目資源成為 {@code drawable/} 或 {@code drawable-night/}。
+
+</p>
+
+<p>因此,如要提供最佳的裝置相容性,請務必針對應用程式正常執行所需的資源提供預設資源。
+然後,使用設定限定詞為特定裝置設定建立替代資源。
+</p>
+
+<p>這個規則有一個例外狀況:如果您應用程式的 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> 為 4 或高,當您提供含有<em></em><a href="#DensityQualifier">螢幕密度</a>限定詞的替代可繪項目資源時,則不需要預設可繪項目資源。
+
+即使沒有預設可繪項目資源,Android 仍然可從替代螢幕密度中找到最符合的項目,並視需要縮放點陣圖。
+
+不過,為了在所有裝置類型獲得最佳體驗,您應該為這三種密度類型提供替代可繪項目。
+</p>
+
+
+
+<h2 id="BestMatch">Android 如何尋找最相符的資源</h2>
+
+<p>當您要求已提供替代項目的資源時,Android 會根據目前的裝置設定,選擇執行階段要使用的替代資源。
+為了示範 Android 如何選取替代資源,假設下列可繪項目目錄分別包含相同影像的不同版本:
+
+</p>
+
+<pre class="classic no-pretty-print">
+drawable/
+drawable-en/
+drawable-fr-rCA/
+drawable-en-port/
+drawable-en-notouch-12key/
+drawable-port-ldpi/
+drawable-port-notouch-12key/
+</pre>
+
+<p>同時假設裝置設定如下:</p>
+
+<p style="margin-left:1em;">
+地區設定 = <code>en-GB</code> <br/>
+螢幕方向 = <code>port</code> <br/>
+螢幕像素密度 = <code>hdpi</code> <br/>
+觸控螢幕類型 = <code>notouch</code> <br/>
+主要文字輸入方式 = <code>12key</code>
+</p>
+
+<p>Android 透過比對裝置設定和可用的替代資源,從 {@code drawable-en-port} 選取可繪項目。
+</p>
+
+<p>系統使用下列邏輯決定要使用的資源:
+</p>
+
+
+<div class="figure" style="width:371px">
+<img src="{@docRoot}images/resources/res-selection-flowchart.png" alt="" height="471" />
+<p class="img-caption"><strong>圖 2.</strong>Android 如何尋找最相符資源的流程圖。
+</p>
+</div>
+
+
+<ol>
+  <li>排除與裝置設定衝突的資源檔案。
+    <p>已排除 <code>drawable-fr-rCA/</code> 目錄,因為它與 <code>en-GB</code> 地區設定衝突。
+</p>
+<pre class="classic no-pretty-print">
+drawable/
+drawable-en/
+<strike>drawable-fr-rCA/</strike>
+drawable-en-port/
+drawable-en-notouch-12key/
+drawable-port-ldpi/
+drawable-port-notouch-12key/
+</pre>
+<p class="note"><strong>例外狀況:</strong>螢幕像素密度是唯一沒有因為衝突而被排除的限定詞。
+即使裝置的螢幕密度是 hdpi 但仍然沒有排除 
+<code>drawable-port-ldpi/</code>,因為此刻每個螢幕密度都視為相符。
+如需詳細資訊,請參閱<a href="{@docRoot}guide/practices/screens_support.html">支援多個螢幕</a>文件。
+</p></li>
+
+  <li>在清單 (<a href="#table2">表 2</a>) 中選擇 (下一個) 最高優先等級的限定詞(從 MCC 往下移動)。
+ </li>
+  <li>有任何資源目錄包含此限定詞嗎?  </li>
+    <ul>
+      <li>如果沒有,回到步驟 2 查看下一個限定詞。(在此範例中,回答一直是「否」,直到語言限定詞為止。)
+</li>
+      <li>如果有,繼續到步驟 4。</li>
+    </ul>
+  </li>
+
+  <li>排除不包含此限定詞的來源目錄。在此範例中,系統排除所有不包含語言限定詞的目錄:
+</li>
+<pre class="classic no-pretty-print">
+<strike>drawable/</strike>
+drawable-en/
+drawable-en-port/
+drawable-en-notouch-12key/
+<strike>drawable-port-ldpi/</strike>
+<strike>drawable-port-notouch-12key/</strike>
+</pre>
+<p class="note"><strong>例外狀況:</strong>如果提到的限定詞是螢幕像素密度,Android 會選擇最符合裝置螢幕密度的選項。一般而言,Android 偏好縮小較大的原始影像以放大較小的原始影像。
+
+
+請參閱<a href="{@docRoot}guide/practices/screens_support.html">支援多個螢幕</a>。
+</p>
+  </li>
+
+  <li>重複步驟 2、3 和 4,直到剩下一個目錄為止。在此範例中,螢幕方向是下個有相符項目的限定詞。
+因此,將排除沒有指定螢幕方向的資源:
+
+<pre class="classic no-pretty-print">
+<strike>drawable-en/</strike>
+drawable-en-port/
+<strike>drawable-en-notouch-12key/</strike>
+</pre>
+<p>剩下的目錄是 {@code drawable-en-port}。</p>
+  </li>
+</ol>
+
+<p>雖然會針對每個要求的資源執行此程序,但系統還是會進一步最佳化某些方面。
+其中一個最佳化是一旦知道裝置設定,它將排除永遠無法符合的替代資源。
+例如,如果設定語言是英文 ("en"),則語言限定詞設定為不是英文的任何資源目錄永遠都不會包含在檢查的資源集區內 (但仍會包含<em>不含</em>語言限定詞的資源目錄)。
+
+
+</p>
+
+<p>根據螢幕大小限定詞選取資源時,如果沒有最符合的資源,系統會使用適用於比目前螢幕更小之螢幕設計的資源 (例如,如有需要,大型螢幕會使用一般大小螢幕資源)。
+
+然而,如果唯一可用的資源比目前螢幕<em>更大</em>,系統將<strong>不會</strong>使用這些資源,如果沒有其他資源符合裝置設定,則應用程式將會當機 (例如,如果所有版面配置資源都標記為 {@code xlarge} 限定詞,但裝置為一般大小螢幕)。
+
+
+
+</p>
+
+<p class="note"><strong>注意:</strong>限定詞的優先等級<em></em> (在<a href="#table2">表 2</a>) 比完全符合裝置的限定詞數量更重要。
+例如,在上述步驟 4,清單的最後一個選擇包含三個完全符合裝置的限定詞 (方向、觸控螢幕類型和輸入方法),而 <code>drawable-en</code> 只有一個相符的參數(語言)。
+
+
+然而,語言的優先等級高於這些其他限定詞,因此將排除
+<code>drawable-port-notouch-12key</code>。</p>
+
+<p>如需深入瞭解在應用程式使用資源的方法,請繼續閱讀<a href="accessing-resources.html">存取資源</a>。</p>
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/resources/runtime-changes.jd b/docs/html-intl/intl/zh-tw/guide/topics/resources/runtime-changes.jd
new file mode 100644
index 0000000..7a8b3ae
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/resources/runtime-changes.jd
@@ -0,0 +1,281 @@
+page.title=處理執行階段變更
+page.tags=Activity、生命週期
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+  <h2>本文件內容</h2>
+  <ol>
+    <li><a href="#RetainingAnObject">變更設定期間保留物件</a></li>
+    <li><a href="#HandlingTheChange">自行處理設定變更</a>
+  </ol>
+
+  <h2>另請參閱</h2>
+  <ol>
+    <li><a href="providing-resources.html">提供資源</a></li>
+    <li><a href="accessing-resources.html">存取資源</a></li>
+    <li><a href="http://android-developers.blogspot.com/2009/02/faster-screen-orientation-change.html">快速的螢幕方向變更
+</a></li>
+  </ol>
+</div>
+</div>
+
+<p>有些裝置設定可以在執行階段期間進行變更 (例如,螢幕方向、鍵盤可用性和語言)。
+進行這類變更時,Android 會重新啟動執行中的 
+{@link android.app.Activity} (呼叫 {@link android.app.Activity#onDestroy()},後面加上 {@link
+android.app.Activity#onCreate(Bundle) onCreate()})。
+重新啟動行為的設計是以符合新裝置設定的替代資源自動重新載入您的應用程式,以協助您的應用程式適應新的設定。
+
+</p>
+
+<p>如要正確處理重新啟動,務必透過一般 <a href="{@docRoot}guide/components/activities.html#Lifecycle">Activity 生命週期</a>將您的 Activity 還原為之前的狀態,其中 Android 會先呼叫
+{@link android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()} 再終結您的 Activity,讓您能儲存應用程式狀態的相關資料。
+
+
+之後,您便能在 {@link android.app.Activity#onCreate(Bundle) onCreate()} 或 {@link
+android.app.Activity#onRestoreInstanceState(Bundle) onRestoreInstanceState()} 期間還原狀態。
+</p>
+
+<p>如要測試您的應用程式是否使用原本的應用程式狀態重新啟動,您應該在應用程式執行各種工作時呼叫設定變更 (例如變更螢幕方向)。
+
+您的應用程式應該能隨時重新啟動而不會遺失使用者資料或狀態,以便處理設定變更這類事件,或是使用者接聽來電,然後很久後才在應用程式程序可能終結後才返回應用程式的這類情況。
+
+
+如要瞭解如何還原您的 Activity 狀態,請參閱 <a href="{@docRoot}guide/components/activities.html#Lifecycle">Activity 生命週期</a>。</p>
+
+<p>不過,您可能遇到重新啟動應用程式以及還原大量資料的成本很昂貴,而且會產生使用者體驗不佳的情況。
+在這種情況下,您有兩種其他選擇:
+</p>
+
+<ol type="a">
+  <li><a href="#RetainingAnObject">變更設定期間保留物件</a>
+  <p>允許您的 Activity 在設定變更時重新啟動,但將可設定狀態的物件帶到 Activity 的新執行個體中。
+</p>
+
+  </li>
+  <li><a href="#HandlingTheChange">自行處理設定變更</a>
+  <p>避免系統在某些設定變更期間重新啟動您的 Activity,但在設定變更時接收回呼,您便能視需要手動更新您的 Activity。
+
+</p>
+  </li>
+</ol>
+
+
+<h2 id="RetainingAnObject">變更設定期間保留物件</h2>
+
+<p>如果重新啟動您的 Activity 需要復原大量資料、重新建立網路連線或執行其他密集型操作,則由於設定變更造成的完整重新啟動可能會拖慢使用者體驗。
+
+此外,您可能無法透過 {@link android.os.Bundle} 完全還原您的 Activity 狀態,這是系統透過 {@link android.app.Activity#onSaveInstanceState(Bundle) onSaveInstanceState()} 回呼所為您所儲存的&mdash;它的設計並不是用來傳送大型物件 (例如點陣圖),而且其中的資料必須先序列化再還原序列化,這會耗用大量記憶體並讓設定變更變慢。
+
+
+
+在這種情況下,您可以在 Activity 因設定變更而重新啟動時,透過保留 {@link
+android.app.Fragment} 的方式來減少重新初始化 Activity 的負擔。
+這個片段可包含您要保留可設定狀態物件的參考資料。
+</p>
+
+<p>當 Android 系統因設定變更而關閉您的 Activity 時,您標示要保留的 Activity 片段不會被終結。
+您可以將這類片段新增至您的 Activity 以保留可設定狀態的物件。
+</p>
+
+<p>如要在執行階段設定變更期間,在片段中保留可設定狀態的物件:</p>
+
+<ol>
+  <li>延伸 {@link android.app.Fragment} 類別並宣告可設定狀態物件的參考資料。
+</li>
+  <li>片段建立之後,呼叫 {@link android.app.Fragment#setRetainInstance(boolean)}。
+      </li>
+  <li>將片段新增至您的 Activity。</li>
+  <li>當 Activity 重新啟動時,使用 {@link android.app.FragmentManager} 擷取片段。
+</li>
+</ol>
+
+<p>例如,將您的片段定義如下:</p>
+
+<pre>
+public class RetainedFragment extends Fragment {
+
+    // data object we want to retain
+    private MyDataObject data;
+
+    // this method is only called once for this fragment
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // retain this fragment
+        setRetainInstance(true);
+    }
+
+    public void setData(MyDataObject data) {
+        this.data = data;
+    }
+
+    public MyDataObject getData() {
+        return data;
+    }
+}
+</pre>
+
+<p class="caution"><strong>注意:</strong>雖然您可以儲存任何物件,但您不應該傳送與 {@link android.app.Activity} 相關的物件,例如 {@link
+android.graphics.drawable.Drawable}、{@link android.widget.Adapter}、{@link android.view.View} 或任何與 {@link android.content.Context} 關聯的其他物件。
+
+如果您這樣做,會流失原始 Activity 執行個體的所有檢視和資源。
+(資源流失表示您的應用程式會繼續保留資源但無法回收記憶體,因此會流失大量記憶體。)
+
+</p>
+
+<p>然後使用 {@link android.app.FragmentManager} 將片段新增至您的 Activity。您可以在執行階段設定變更期間,於 Activity 再次啟動時,從片段取得資料物件。
+
+例如,將您的 Activity 定義如下:</p>
+
+<pre>
+public class MyActivity extends Activity {
+
+    private RetainedFragment dataFragment;
+
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+
+        // find the retained fragment on activity restarts
+        FragmentManager fm = getFragmentManager();
+        dataFragment = (DataFragment) fm.findFragmentByTag(“data”);
+
+        // create the fragment and data the first time
+        if (dataFragment == null) {
+            // add the fragment
+            dataFragment = new DataFragment();
+            fm.beginTransaction().add(dataFragment, “data”).commit();
+            // load the data from the web
+            dataFragment.setData(loadMyData());
+        }
+
+        // the data is available in dataFragment.getData()
+        ...
+    }
+
+    &#64;Override
+    public void onDestroy() {
+        super.onDestroy();
+        // store the data in the fragment
+        dataFragment.setData(collectMyLoadedData());
+    }
+}
+</pre>
+
+<p>在此範例中,{@link android.app.Activity#onCreate(Bundle) onCreate()} 會在 Activity 新增片段或還原參考資料。
+{@link android.app.Activity#onCreate(Bundle) onCreate()} 也會在片段執行個體內儲存可設定狀態的物件。
+
+{@link android.app.Activity#onDestroy() onDestroy()} 會在保留的片段執行個體內更新可設定狀態的物件。
+</p>
+
+
+
+
+
+<h2 id="HandlingTheChange">自行處理設定變更</h2>
+
+<p>如果您的應用程式在特定設定變更期間不需要更新資源,「且」<em></em>您具有效能限制,要求您避免 Activity 重新啟動,則您可以宣告您的 Activity 自行處理設定變更,這樣可避免系統重新啟動您的 Activity。
+
+
+</p>
+
+<p class="note"><strong>注意:</strong>自行處理設定變更讓替代資源的使用變得更加困難,因為系統無法幫您自動套用。
+
+當您必須避免因為設定變更而造成重新啟動時,應將這個方式視為最後手段,而且不建議對大部分的應用程式使用。
+</p>
+
+<p>如要宣告您的 Activity 處理設定變更,可在宣示說明檔案中編輯適當的 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity&gt;}</a> 元素以包含 <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> 屬性和值,代表您要處理的設定。
+
+<a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> 屬性的可能值列於文件中 (最常用的值是 {@code "orientation"},可避免在螢幕方向變更時重新啟動,而 {@code "keyboardHidden"} 可避免鍵盤可用性變更時重新啟動)。
+
+您可以使用直立線符號 {@code |} 字元來分隔,在屬性中宣告多個設定值。
+</p>
+
+<p>例如,下列宣示說明程式碼宣告同時處理螢幕方向變更和鍵盤可用性變更的 Activity:
+</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"
+          android:configChanges="orientation|keyboardHidden"
+          android:label="@string/app_name">
+</pre>
+
+<p>現在,當其中一個設定變更時, {@code MyActivity} 便不會重新啟動。
+而是由 {@code MyActivity} 接收對 {@link android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} 的呼叫。
+這個方法傳送一個 {@link android.content.res.Configuration} 物件,指定新裝置設定。
+
+讀取 {@link android.content.res.Configuration} 中的欄位時,您可判斷新的設定,並且更新您介面中使用的資源來進行適當的變更。
+
+此時,會呼叫這個方法,Activity 的 {@link android.content.res.Resources} 物件會根據新設定進行更新以傳回資源,因此您便能輕鬆地重新設定 UI 的元素,系統無需重新啟動您的 Activity。
+
+
+</p>
+
+<p class="caution"><strong>注意:</strong>從 Android 3.2 (API 級別 13) 開始,裝置在橫向與直向之間進行切換時,<strong>「螢幕大小」也會跟著變更</strong>。
+
+因此,在開發 API 級別 13 或更高級別時 (如 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> 和 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> 屬性所宣告),如果您要避免因為方向變更而造成執行階段重新啟動,除了{@code
+"orientation"} 值之外,您還必須包含 {@code "screenSize"} 值。
+
+也就是說,您必須宣告 {@code
+android:configChanges="orientation|screenSize"}。不過,如果您的應用程式是針對 API 級別 12 或更低級別,則您的 Activity 一律要自行處理這個設定變更 (即使在 Android 3.2 或更高版本的裝置上執行時,這個設定變更也不會重新啟動您的 Activity)。
+
+</p>
+
+<p>例如,下列 {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} 實作會檢查目前的裝置方向:
+</p>
+
+<pre>
+&#64;Override
+public void onConfigurationChanged(Configuration newConfig) {
+    super.onConfigurationChanged(newConfig);
+
+    // Checks the orientation of the screen
+    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
+        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
+    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
+        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
+    }
+}
+</pre>
+
+<p>{@link android.content.res.Configuration} 物件代表目前所有的設定,而不只是已變更的設定。
+大多數情況下,您不用特別留意設定如何變更,只要重新指派所有的資源,提供替代項目給您正在處理的設定。
+
+例如,因為 {@link
+android.content.res.Resources} 物件現在已更新,您可以使用 {@link android.widget.ImageView#setImageResource(int)
+setImageResource()} 重新設定任何 {@link android.widget.ImageView}並且針對新設定,使用適當的資源 (如<a href="providing-resources.html#AlternateResources">提供資源</a>中所述)。
+
+</p>
+
+<p>請注意,{@link
+android.content.res.Configuration} 欄位的值,是與 {@link android.content.res.Configuration} 類別的特定常數相符的整數。
+如需與每個欄位搭配使用之常數的相關文件,請參閱 {@link
+android.content.res.Configuration} 參考資料中的適當欄位。
+</p>
+
+<p class="note"><strong>請記住:</strong>當您宣告您的 Activity 以處理設定變更時,您要負責為提供的替代項目重新設定所有元素。
+如果您宣告您的 Activity 以處理方向變更,而且具有應該在橫向與直向之間進行方向變更的影像,則您必須在 {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()} 期間對每個元素重新指派每個資源。
+
+</p>
+
+<p>如果您不需要根據這些設定變更來更新您的應用程式,可改為不必<em></em>實作 {@link
+android.app.Activity#onConfigurationChanged(Configuration) onConfigurationChanged()}。
+在此情況下,仍然可使用設定變更前使用的所有資源,而您只要避免重新啟動您的 Activity 即可。
+
+不過,您的應用程式應該能夠關閉以及重新啟動成之前原本的狀態,因此在一般 Activity 生命週期期間無法保留您的狀態時,就不應考慮使用這個方法。
+
+這不只是因為有其他設定變更讓您無法防止重新啟動應用程式,還因為有您應該處理事件,例如當使用者離開應用程式後,使用者返回應用程式之前應用程式已終結。
+
+
+</p>
+
+<p>如需有關您在 Activity 中可以處理哪些設定變更的詳細資訊,請參閱 <a href="{@docRoot}guide/topics/manifest/activity-element.html#config">{@code
+android:configChanges}</a> 文件和 {@link android.content.res.Configuration} 類別。
+</p>
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/ui/controls.jd b/docs/html-intl/intl/zh-tw/guide/topics/ui/controls.jd
new file mode 100644
index 0000000..0f27ae4
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/controls.jd
@@ -0,0 +1,90 @@
+page.title=輸入控制項
+parent.title=使用者介面
+parent.link=index.html
+@jd:body
+
+<div class="figure" style="margin:0">
+  <img src="{@docRoot}images/ui/ui-controls.png" alt="" style="margin:0" />
+</div>
+
+<p>輸入控制項是應用程式使用者介面中的互動元件。Android 提供了多種控制項讓您在 UI 中使用,例如按鈕、文字欄位、搜尋列、核取方塊、縮放按鈕、切換按鈕等。
+
+</p>
+
+<p>在使用者介面中加入輸入控制項,就如同將 XML 元素加到 <a href="{@docRoot}guide/topics/ui/declaring-layout.html">XML 版面配置</a>一樣簡單。例如,以下是包含文字欄位和按鈕的版面配置:
+</p>
+
+<pre style="clear:right">
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="horizontal">
+    &lt;EditText android:id="@+id/edit_message"
+        android:layout_weight="1"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:hint="@string/edit_message" />
+    &lt;Button android:id="@+id/button_send"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/button_send"
+        android:onClick="sendMessage" />
+&lt;/LinearLayout>
+</pre>
+
+<p>每個輸入控制項均支援一組特定輸入事件,方便您處理使用者輸入文字或輕觸按鈕等事件。
+</p>
+
+
+<h2 id="CommonControls">一般控制項</h2>
+<p>下方列出您可在應用程式中使用的部分一般控制項。只要點進清單中的相關連結,即可進一步瞭解如何使用這些控制項。
+</p>
+
+<p class="note"><strong>注意:</strong>本文並未列出 Android 提供的部分控制項。
+如果想查看未列出的控制項,請瀏覽 {@link android.widget} 套件。如果您的應用程式需要特定類型的輸入控制項,您可以自行建置<a href="{@docRoot}guide/topics/ui/custom-components.html">自訂元件</a>。
+</p>
+
+<table>
+    <tr>
+        <th scope="col">控制項類型</th>
+        <th scope="col">說明</th>
+	<th scope="col">相關類別</th>
+    </tr>
+    <tr>
+        <td><a href="controls/button.html">按鈕</a></td>
+        <td>可供使用者按下或點擊來執行某項動作的按鈕。</td>
+	<td>{@link android.widget.Button Button} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/text.html">文字欄位</a></td>
+        <td>可編輯的文字欄位。您可以使用 <code>AutoCompleteTextView</code> 小工具建立可提供自動完成建議的文字輸入小工具。</td>
+	<td>{@link android.widget.EditText EditText}、{@link android.widget.AutoCompleteTextView}</td>
+    </tr>
+    <tr>
+        <td><a href="controls/checkbox.html">核取方塊</a></td>
+        <td>可供使用者切換的開啟/關閉開關。如果想為使用者提供一組互不相斥的可選取選項時,請使用核取方塊。</td>
+	<td>{@link android.widget.CheckBox CheckBox} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/radiobutton.html">圓形按鈕</a></td>
+        <td>功用與核取方塊類似,但會限制使用者只能從一組選項中選取一個選項。</td>
+	<td>{@link android.widget.RadioGroup RadioGroup} 
+	<br>{@link android.widget.RadioButton RadioButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/togglebutton.html" style="white-space:nowrap">切換按鈕</a></td>
+        <td>附有亮光指標的開啟/關閉按鈕。</td>
+	<td>{@link android.widget.ToggleButton ToggleButton} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/spinner.html">微調按鈕</a></td>
+        <td>可供使用者從一組選項中選取單一值的下拉式清單。</td>
+	<td>{@link android.widget.Spinner Spinner} </td>
+    </tr>
+    <tr>
+        <td><a href="controls/pickers.html">挑選器</a></td>
+        <td>可供使用者透過向上/向下按鈕或滑動手勢選取單一值的對話方塊。此外,挑選器還會提供 <code>DatePicker</code> 程式碼小工具和 <code>TimePicker</code> 小工具,分別讓使用者輸入日期值 (年、月、日) 以及時間值 (小時、分鐘、AM/PM);系統會自動根據使用者所在的地區為這些值設定對應的格式。</td>
+	<td>{@link android.widget.DatePicker}、{@link android.widget.TimePicker}</td>
+    </tr>
+</table>
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/ui/declaring-layout.jd b/docs/html-intl/intl/zh-tw/guide/topics/ui/declaring-layout.jd
new file mode 100644
index 0000000..7275571
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/declaring-layout.jd
@@ -0,0 +1,492 @@
+page.title=版面配置
+page.tags=view,viewgroup
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>本文件內容</h2>
+<ol>
+  <li><a href="#write">編寫 XML</a></li>
+  <li><a href="#load">載入 XML 資源</a></li>
+  <li><a href="#attributes">屬性</a>
+    <ol>
+      <li><a href="#id">ID</a></li>
+      <li><a href="#layout-params">版面配置參數</a></li>
+    </ol>
+  </li>
+  <li><a href="#Position">版面配置位置</a></li>
+  <li><a href="#SizePaddingMargins">大小、邊距和邊界</a></li>
+  <li><a href="#CommonLayouts">常見版面配置</a></li>
+  <li><a href="#AdapterViews">使用配接器建置版面配置</a>
+    <ol>
+      <li><a href="#FillingTheLayout">將資料填入配接器檢視</a></li>
+      <li><a href="#HandlingUserSelections">處理點擊事件</a></li>
+    </ol>
+  </li>
+</ol>
+
+  <h2>重要類別</h2>
+  <ol>
+    <li>{@link android.view.View}</li>
+    <li>{@link android.view.ViewGroup}</li>
+    <li>{@link android.view.ViewGroup.LayoutParams}</li>
+  </ol>
+
+  <h2>另請參閱</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/firstapp/building-ui.html">建置簡易使用者
+介面</a></li> </div>
+</div>
+
+<p>版面配置會定義使用者介面 (例如 <a href="{@docRoot}guide/components/activities.html">Activity</a> 或<a href="{@docRoot}guide/topics/appwidgets/index.html">應用程式小工具</a>的使用者介面) 的視覺結構。您可以兩種方式宣告版面配置:
+</p>
+<ul>
+<li><strong>在 XML 中宣告 UI 元素</strong>。Android 提供的 XML 字彙不僅簡單明瞭,還可對應至 View 類別和子類別 (例如小工具和版面配置)。
+</li>
+<li><strong>在執行階段啟動版面配置元素</strong>。您的應用程式可透過程式建立 View 和 ViewGroup 物件 (以及操控其屬性)。
+ </li>
+</ul>
+
+<p>Android 架構可讓您彈性使用上述任一或兩種方法來宣告及管理應用程式的 UI。例如,您可以在 XML 中宣告應用程式的預設版面配置,包括會顯示在應用程式中的元素及其屬性。接著,您可在執行階段為應用程式加入程式碼來修改螢幕物件的狀態,包括您在 XML 中宣告的物件。 </p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <ul>
+  <li><a href="{@docRoot}tools/sdk/eclipse-adt.html">Eclipse 專用的 ADT 外掛程式</a>可提供 XML 的版面配置預覽 &mdash; 只要開啟您想預覽的 XML 檔案,然後選取 [版面配置]<strong></strong> 標籤即可。
+
+</li>
+  <li>同時也建議您使用 <a href="{@docRoot}tools/debugging/debugging-ui.html#hierarchyViewer">階層檢視器</a>工具針對版面配置進行除錯 &mdash; 這項工具會顯示版面配置屬性值、繪製線框並在其中加上編距/邊界標記,以及提供完整檢視 (如果您是透過模擬器或裝置進行除錯的話)。
+
+
+
+</li>
+  <li><a href="{@docRoot}tools/debugging/debugging-ui.html#layoutopt">layoutopt</a> 工具可讓您快速分析版面配置和階層,以找出效能不佳等其他問題。
+</li>
+</div>
+</div>
+
+<p>在 XML 中宣告 UI 可讓您進一步將應用程式的顯示畫面與控制應用程式行為的程式碼區隔開來。這樣可將 UI 說明置於應用程式的程式碼外部,方便您修改或調整使用者介面說明,而不必修改並重新編譯原始碼。例如,您可以針對不同的螢幕方向、裝置螢幕大小和語言建立各種 XML 檔案。此外,在 XML 中宣告版面配置可協助以視覺效果呈現 UI 的結構,方便您進行除錯。針對上述優點,本文件著重於說明如何在 XML 中宣告版面配置。如果您想在執行階段啟動 View 物件,請參閱 {@link android.view.ViewGroup} 和 {@link android.view.View} 類別參考文件。
+
+</p>
+
+<p>一般來說,用於宣告 UI 元素的 XML 字彙會遵從類別與方法的結構和名稱,其中元素名稱對應至類別名稱,而屬性名稱則對應至方法。事實上,這些對應關係十分直接,您可以輕易猜出某個 XML 屬性對應的哪個類別方法,或某個類別對應的特定 XML 元素為何。不過請注意,並非所有字彙均為相同。在部分情況下,您會發現某些不同的名稱。例如,EditText 元素包含對應至 <code>EditText.setText()</code> 的 <code>text</code> 屬性。
+
+ </p>
+
+<p class="note"><strong>提示:</strong>如要進一步瞭解各種版面配置類型,請參閱<a href="{@docRoot}guide/topics/ui/layout-objects.html">常見版面配置物件</a>。
+您也可以參閱 <a href="{@docRoot}resources/tutorials/views/index.html">Hello Views</a> 教學指南,取得一系列說明如何建置各種版面配置的教學課程。
+</p>
+
+<h2 id="write">編寫 XML</h2>
+
+<p>您可以使用 Android 的 XML 字彙,快速設計 UI 版面配置和其中包含的螢幕元素,方法與採用 HTML 建立網頁相同 &mdash; 都需要建置一系列巢狀元素。 </p>
+
+<p>每個版面配置檔案均需包含 1 個根元素 (必須為 View 或 ViewGroup 物件)。定義根元素後,您就可以將額外的物件或小工具新增為子元素,逐步建置檢檢視階層視階層來定義您的版面配置。例如,以下是使用直向 {@link android.widget.LinearLayout} 以納入
+{@link android.widget.TextView} 和 {@link android.widget.Button} 的 XML 版面配置:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:orientation="vertical" >
+    &lt;TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="Hello, I am a TextView" />
+    &lt;Button android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Hello, I am a Button" />
+&lt;/LinearLayout>
+</pre>
+
+<p>在 XML 中宣告版面配置後,請使用 <code>.xml</code> 副檔名將檔案儲存到 Android 專案的 <code>res/layout/</code> 目錄中,藉此讓系統妥善加以編譯。
+ </p>
+
+<p>如要進一步瞭解 XML 版面配置檔案的語法,請參閱<a href="{@docRoot}guide/topics/resources/layout-resource.html">版面配置資源</a>。</p>
+
+<h2 id="load">載入 XML 資源</h2>
+
+<p>當您編譯應用程式時,系統會將所有 XML 版面配置檔案編入
+{@link android.view.View} 資源。在這種情況下,您必須透過 {@link android.app.Activity#onCreate(android.os.Bundle) Activity.onCreate()} 回呼,載入應用程式的程式碼中的版面配置資源,方法是呼叫 <code>{@link android.app.Activity#setContentView(int) setContentView()}</code>,然後採用以下格式將其參考資源傳送到版面配置資源:
+<code>R.layout.<em>layout_file_name</em></code>。例如,假設您將 XML 版面配置儲存成 <code>main_layout.xml</code>,您就必須針對如下所示的 Activity 載入該 XML:
+
+
+
+
+</p>
+<pre>
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.main_layout);
+}
+</pre>
+
+<p>Android 架構會在 Activity 啟動時呼叫 Activity 中的 <code>onCreate()</code> 回呼方法 (如需生命週期相關資訊,請參閱 <a href="{@docRoot}guide/components/activities.html#Lifecycle">Activity</a>)。
+
+
+</p>
+
+
+<h2 id="attributes">屬性</h2>
+
+<p>所有 View 和 ViewGroup 物件均支援本身專用的各種 XML 屬性。部分屬性僅適用於 View 物件 (例如 TextView 可支援 <code>textSize</code> 屬性),不過可能延伸這個類別的 View 物件也會沿用這些屬性。由於某些屬性是沿用自 View 根類別,因此會成為所有 View 物件的常用屬性 (例如 <code>id</code> 屬性)。
+
+
+
+而系統會將其他屬性視為「版面配置參數」,這些屬性可說明 View 物件的特定版面配置方向 (View 由物件的 ViewGroup 上層物件所定義)。
+
+</p>
+
+<h3 id="id">ID</h3>
+
+<p>任何 View 物件都可能包含一個相關聯的整數 ID,可用於識別樹狀結構中的 View。在應用程式編寫期間,雖然這個 ID 通常是在 XML 版面配置檔案的 <code>id</code> 屬性中指派為字串,系統仍會將其解讀為整數。此為所有 View 物件常用的 XML 屬性 (由 {@link android.view.View} 類別所定義);您會經常使用的這項屬性。以下是 XML 標記中的 ID 語法:
+
+
+
+
+</p>
+<pre>android:id="&#64;+id/my_button"</pre>
+
+<p>字串開頭的 @ 符號可指示 XML 剖析器應剖析或展開 ID 字串的其餘部分,並且將其視為 ID 資源。
+加號符號 (+) 表示此為系統必須建立並加到資源 (<code>R.java</code> 檔案) 中的新資源名稱。
+Android 架構提供了多種其他 ID 資源。
+參照 Android 資源 ID 時,您不必加入 + 符號,但必須加入 <code>android</code> 套件命名空間,如下所示:
+</p>
+<pre>android:id="&#64;android:id/empty"</pre>
+<p>只要加入 <code>android</code> 套件命名空間,系統就會從 <code>android.R</code> 資源類別參照 ID,而不是從本機資源類別。
+</p>
+
+<p>以下是透過應用程式建立檢視和參照的一般方法:</p>
+<ol>
+  <li>在版面配置檔案中定義檢視/小工具,並為該檔案指派不重複 ID:
+<pre>
+&lt;Button android:id="&#64;+id/my_button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="&#64;string/my_button_text"/>
+</pre>
+  </li>
+  <li>接著,建立檢視物件執行個體,並從版面配置中擷取該執行個體 (通常使用 <code>{@link android.app.Activity#onCreate(Bundle) onCreate()}</code> 方法進行擷取):
+
+<pre>
+Button myButton = (Button) findViewById(R.id.my_button);
+</pre>
+  </li>
+</ol>
+<p>請務必在建立 {@link android.widget.RelativeLayout} 時為檢視物件定義 ID。在相關的版面配置中,同層級的檢視可將本身的版面配置與其他同層級的檢視建立關聯,而不重複 ID 正是這些版面配置的參照依據。
+
+</p>
+<p>整個樹狀結構的 ID 不必是不重複 ID,但您所搜尋樹狀結構部分的 ID 就必須是不重複 ID (由於您搜尋的部分通常是整個樹狀結構,因此建議您為其定義不重複 ID)。
+
+</p>
+
+
+<h3 id="layout-params">版面配置參數</h3>
+
+<p>名為 <code>layout_<em>something</em></code> 的 XML 版面配置屬性會為適用於所屬 ViewGroup 的 View 定義版面配置參數。
+</p>
+
+<p>所有 ViewGroup 類別都會實作可延伸 {@link
+android.view.ViewGroup.LayoutParams} 的巢狀類別。這個子類別包含定義下層檢視大小和位置的屬性類型,而這些屬性類型也適用於檢視群組。
+
+如圖 1 所示,上層檢視群組為每個下層檢視 (包括下層檢視群組) 定義了版面配置參數。
+</p>
+
+<img src="{@docRoot}images/layoutparams.png" alt="" />
+<p class="img-caption"><strong>圖 1.</strong>檢視層級以及與每個檢視相關聯的版面配置參數。
+</p>
+
+<p>請注意,所有 LayoutParams 子類別都包含用於設定值的專屬語法。
+而每個子元素都必須定義適用於其上層元素的 LayoutParams,即便子元素也會為其下層物件定義不同的 LayoutParams。
+ </p>
+
+<p>所有檢視群組均包含寬度和高度 (<code>layout_width</code> 和
+<code>layout_height</code>),而每個檢視都必須定義這些值。大多數 LayoutParams 還會包含選用的標界和邊框。
+ <p>
+
+<p>您可以依據測量結果指定寬度和高度 (您通常不必經常指定這些值)。
+在大多數情況下,您需使用以下任一常數設定寬度或高度:
+ </p>
+
+<ul>
+  <li><var>wrap_content</var> 可指示檢視自行將大小調整成其內容所需的尺寸。
+</li>
+  <li><var>match_parent</var> (在 API 級別 8 之前稱為 <var>fill_parent</var> ) 可指示檢視自行將大小擴展成上層檢視群組允許的上限。
+</li>
+</ul>
+
+<p>一般來說,我們不建議您使用絕對單位 (例如像素) 指定版面配置的寬度和高度。
+建議做法是使用相對測量單位 (例如依據密度的像素單位 (
+<var>dp</var>)、 <var>wrap_content</var>或
+<var>match_parent</var>指定這些值,這是因為這樣可協助確保應用程式在各種裝置螢幕大小中能保有最佳顯示效果。如需支援的測量類型的定義,請參閱<a href="{@docRoot}guide/topics/resources/available-resources.html#dimension">可用資源</a>。
+
+
+
+</p>
+
+
+<h2 id="Position">版面配置位置</h2>
+   <p>
+   檢視的形狀為矩形。檢視包含一個位置值 (以一組「水平」<em></em>和「垂直」<em></em>座標表示),以及兩個尺寸值 (以寬度和高度表示)。
+
+位置和尺寸的單位均為像素。
+
+   </p>
+
+   <p>
+   您可以呼叫 {@link android.view.View#getLeft()} 和 {@link android.view.View#getTop()} 方法來擷取檢視的位置值。
+第一個方法會傳回顯示檢視的矩形區塊的水平座標 (X 座標);
+第二個方法則會傳回顯示檢視的矩形區塊的垂直座標 (Y 座標)。
+這兩個方法都會傳回檢視相對於其上層項目的位置。
+例如,假設 <code>getLeft()</code> 傳回 20,表示該檢視位於其直屬上層項目左側邊緣向右平移 20 像素的位置。
+
+
+   </p>
+
+   <p>
+   我們也提供了 {@link android.view.View#getRight()} 和 {@link android.view.View#getBottom()} 這兩個簡易方法,可用於避免不必要的運算程序。
+
+   這些方法會傳回險是檢視的矩形區塊的右下角座標。
+例如,呼叫 {@link android.view.View#getRight()} 的用途與以下運算式類似:<code>getLeft() + getWidth()</code>。
+
+   </p>
+
+
+<h2 id="SizePaddingMargins">大小、邊距和邊界</h2>
+   <p>
+   檢視的大小是以寬度和高度表示。單一檢視會包含兩組寬度和高度值。
+
+   </p>
+
+   <p>
+   第一組值稱為「寬度測定值」<em></em>和「高度測定值」<em></em>,
+可定義檢視在上層項目中的尺寸。
+您可以呼叫 {@link android.view.View#getMeasuredWidth()} 和 {@link android.view.View#getMeasuredHeight()} 來取得尺寸測定值。
+
+
+   </p>
+
+   <p>
+   第二組值簡稱「寬度」<em></em>和「高度」<em></em>,或是「寬度描繪值」<em></em>和「高度描繪值」<em></em>,
+可定義檢視在螢幕中的實際大小 (描繪期間以及版面配置之後)。
+
+這些值可能 (但未必) 會與寬度和高度測量值不同。
+您可以呼叫 
+{@link android.view.View#getWidth()} 和 {@link android.view.View#getHeight()} 來取得尺寸描繪值。
+   </p>
+
+   <p>
+   測量檢視的尺寸時,系統會將檢視的邊距納入考量。邊距是指檢視的上、下、左、右部分 (單位為像素),
+
+   可用於將檢視內容偏移特定像素。
+例如,2 像素的左側邊距可將檢視內容由左側邊緣向右平移 2 像素。
+您可以使用
+{@link android.view.View#setPadding(int, int, int, int)} 方法來設定邊距,以及呼叫
+{@link android.view.View#getPaddingLeft()}、{@link android.view.View#getPaddingTop()}、
+{@link android.view.View#getPaddingRight()} 和 {@link android.view.View#getPaddingBottom()} 來查詢邊距。
+   </p>
+
+   <p>
+   雖然檢視可定義邊距,但無法針對邊界提供任何支援。
+不過,檢視群組可提供這類支援。詳情請參閱
+{@link android.view.ViewGroup} 和
+{@link android.view.ViewGroup.MarginLayoutParams}。
+   </p>
+
+   <p>如要進一步瞭解尺寸,請參閱<a href="{@docRoot}guide/topics/resources/more-resources.html#Dimension">尺寸值</a>。
+
+   </p>
+
+
+
+
+
+
+<style type="text/css">
+div.layout {
+  float:left;
+  width:200px;
+  margin:0 0 20px 20px;
+}
+div.layout.first {
+  margin-left:0;
+  clear:left;
+}
+</style>
+
+
+
+
+<h2 id="CommonLayouts">常見版面配置</h2>
+
+<p>{@link android.view.ViewGroup} 類別的所有子類別均可以獨有方式顯示您在當中套疊的檢視。
+以下提供幾個 Android 平台內建的常見版面配置類型。
+</p>
+
+<p class="note"><strong>注意:</strong>雖然您可以將版面配置套疊在一起來符合您的 UI 設計,但建議您盡可能讓版面配置階層維持淺薄。
+
+套疊的版面配置越少,版面配置的描繪速度就越快 (建議您使用寬的檢視階層,而不是深的檢視階層)。
+</p>
+
+<!--
+<h2 id="framelayout">FrameLayout</h2>
+<p>{@link android.widget.FrameLayout FrameLayout} is the simplest type of layout
+object. It's basically a blank space on your screen that you can
+later fill with a single object &mdash; for example, a picture that you'll swap in and out.
+All child elements of the FrameLayout are pinned to the top left corner of the screen; you cannot
+specify a different location for a child view. Subsequent child views will simply be drawn over
+previous ones,
+partially or totally obscuring them (unless the newer object is transparent).
+</p>
+-->
+
+
+<div class="layout first">
+  <h4><a href="layout/linear.html">線性版面配置</a></h4>
+  <a href="layout/linear.html"><img src="{@docRoot}images/ui/linearlayout-small.png" alt="" /></a>
+  <p>這種版面配置可將其下層物件整合至單一水平或垂直列。如果視窗長度超過螢幕長度,線性版面配置就會建立捲軸方便使用者捲動畫面。
+</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/relative.html">相對版面配置</a></h4>
+  <a href="layout/relative.html"><img src="{@docRoot}images/ui/relativelayout-small.png" alt="" /></a>
+  <p>這種版面配置可讓您指定下層物件之間的相對位置 (指定下層物件 A 位於下層物件 B 的左側),或指定下層物件與上層物件的相對位置 (指定下層物件緊貼上層物件的頂端)。
+</p>
+</div>
+
+<div class="layout">
+  <h4><a href="{@docRoot}guide/webapps/webview.html">網頁檢視</a></h4>
+  <a href="{@docRoot}guide/webapps/webview.html"><img src="{@docRoot}images/ui/webview-small.png" alt="" /></a>
+  <p>這種版面配置可顯示網頁。</p>
+</div>
+
+
+
+
+<h2 id="AdapterViews" style="clear:left">使用配接器建置版面配置</h2>
+
+<p>如果您版面配置的內容為動態內容,而不是預先定義的內容,您可以在執行階段將子類別為 {@link android.widget.AdapterView} 的版面配置填入檢視中。
+
+{@link android.widget.AdapterView} 類別的子類別會使用 {@link android.widget.Adapter} 將資料繫結至本身的版面配置。
+{@link android.widget.Adapter} 就如同是資料來源與 {@link android.widget.AdapterView} 版面配置的中間人 &mdash; {@link android.widget.Adapter} 會從陣列或資料庫查詢等來源擷取資料,然後將這些資料轉換成可加入 {@link android.widget.AdapterView} 版面配置的檢視。
+
+
+</p>
+
+<p>以下是配接器支援的常見版面配置:</p>
+
+<div class="layout first">
+  <h4><a href="layout/listview.html">清單檢視</a></h4>
+  <a href="layout/listview.html"><img src="{@docRoot}images/ui/listview-small.png" alt="" /></a>
+  <p>這種版面配置可顯示能夠捲動的單欄清單。</p>
+</div>
+
+<div class="layout">
+  <h4><a href="layout/gridview.html">格狀檢視</a></h4>
+  <a href="layout/gridview.html"><img src="{@docRoot}images/ui/gridview-small.png" alt="" /></a>
+  <p>這種版面配置可顯示能夠捲動的資料欄和資料列網格。</p>
+</div>
+
+
+
+<h3 id="FillingTheLayout" style="clear:left">將資料填入配接器檢視</h3>
+
+<p>您可將 {@link android.widget.AdapterView} 執行個體繫結至
+{@link android.widget.Adapter} 以便從外部來源擷取資料,並建立可顯示所有資料的 {@link
+android.view.View},藉此填入 {@link android.widget.AdapterView} (例如 {@link android.widget.ListView} 或 {@link android.widget.GridView}。
+</p>
+
+<p>Android 提供數個 {@link android.widget.Adapter} 子類別可用於擷取不同資料類型以及為 {@link android.widget.AdapterView} 建置檢視。
+以下是兩種常見的配接器:
+</p>
+
+<dl>
+  <dt>{@link android.widget.ArrayAdapter}</dt>
+    <dd>如果您的資料來源是陣列,請使用這個配接器。在預設情況下,{@link
+android.widget.ArrayAdapter} 會針對每個陣列項目呼叫 {@link
+java.lang.Object#toString()} 並取代 {@link
+android.widget.TextView} 中的內容,藉此為每個陣列項目建立檢視。
+      <p>例如,如果您想在 {@link
+android.widget.ListView} 中顯示一系列字串,請使用建構函式為每個字串和字串陣列指定版面配置,藉此初始化新的 {@link android.widget.ArrayAdapter}:
+</p>
+<pre>
+ArrayAdapter&lt;String> adapter = new ArrayAdapter&lt;String>(this,
+        android.R.layout.simple_list_item_1, myStringArray);
+</pre>
+<p>這個建構函式的引數包括:</p>
+<ul>
+  <li>您的應用程式 {@link android.content.Context}</li>
+  <li>含有陣列中所有字串的 {@link android.widget.TextView} 的版面配置</li>
+  <li>字串陣列</li>
+</ul>
+<p>接著,針對您的 {@link android.widget.ListView} 呼叫 
+{@link android.widget.ListView#setAdapter setAdapter()}:</p>
+<pre>
+ListView listView = (ListView) findViewById(R.id.listview);
+listView.setAdapter(adapter);
+</pre>
+
+      <p>如要自訂每個項目的外觀,您可以針對陣列中的物件覆寫 {@link
+java.lang.Object#toString()} 方法。或者,如果想為 {@link android.widget.TextView} 以外的所有項目建立檢視 (例如,如果您想為所有陣列項目建立 {@link android.widget.ImageView}),請延伸 {@link
+android.widget.ArrayAdapter} 類別並覆寫 {@link android.widget.ArrayAdapter#getView
+getView()},以傳回您想為所有項目建立的檢視類型。
+
+</p>
+
+</dd>
+
+  <dt>{@link android.widget.SimpleCursorAdapter}</dt>
+    <dd>如果您的資料來自 {@link android.database.Cursor},請使用這個配接器。使用
+{@link android.widget.SimpleCursorAdapter} 時,您必須指定要用於 {@link android.database.Cursor} 中所有資料列的版面配置,以及指定要將 {@link android.database.Cursor} 中的哪些資料欄插入哪些版面配置檢視。
+
+例如,如果您想建立一份列出使用者名稱和電話號碼的清單,請執行查詢來傳回 {@link
+android.database.Cursor},其中包含一個列出每位使用者的資料列,以及多個列出名稱和電話號碼的資料欄。
+
+接著,請建立一個字串陣列以便從 {@link
+android.database.Cursor} 指定您想在版面配置中列出每項結果的資料欄,以及建立一個整數陣列為每個資料欄指定對應的值:
+</p>
+<pre>
+String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME,
+                        ContactsContract.CommonDataKinds.Phone.NUMBER};
+int[] toViews = {R.id.display_name, R.id.phone_number};
+</pre>
+<p>當您啟動 {@link android.widget.SimpleCursorAdapter} 時,請傳送用於顯示所有結果的版面配置、包含結果的 {@link android.database.Cursor},以及下列兩個陣列:
+</p>
+<pre>
+SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
+        R.layout.person_name_and_number, cursor, fromColumns, toViews, 0);
+ListView listView = getListView();
+listView.setAdapter(adapter);
+</pre>
+<p>{@link android.widget.SimpleCursorAdapter} 隨即會將每個 {@code
+fromColumns} 項目插入相對應的 {@code toViews} 檢視,藉此利用提供的版面配置為
+{@link android.database.Cursor} 中的所有資料列建立專屬檢視。</p>.</dd>
+</dl>
+
+
+<p>如果您在應用程式的效期內更改配接器讀取的底層資料,您就必須呼叫 {@link android.widget.ArrayAdapter#notifyDataSetChanged()}。
+這樣會通知附加的檢視由於資料已變更,因此需進行重新整理。
+</p>
+
+
+
+<h3 id="HandlingUserSelections">處理點擊事件</h3>
+
+<p>只要實作 {@link android.widget.AdapterView.OnItemClickListener} 介面,即可回應 {@link android.widget.AdapterView} 中所有項目的點擊事件。
+例如:</p>
+
+<pre>
+// Create a message handling object as an anonymous class.
+private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
+    public void onItemClick(AdapterView parent, View v, int position, long id) {
+        // Do something in response to the click
+    }
+};
+
+listView.setOnItemClickListener(mMessageClickedHandler);
+</pre>
+
+
+
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/ui/dialogs.jd b/docs/html-intl/intl/zh-tw/guide/topics/ui/dialogs.jd
new file mode 100644
index 0000000..b0ae12e
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/dialogs.jd
@@ -0,0 +1,798 @@
+page.title=對話方塊
+page.tags=alertdialog,dialogfragment
+
+@jd:body
+
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>本文件內容</h2>
+<ol>
+  <li><a href="#DialogFragment">建立對話方塊片段</a></li>
+  <li><a href="#AlertDialog">建置快訊對話方塊</a>
+    <ol>
+      <li><a href="#AddingButtons">加入按鈕</a></li>
+      <li><a href="#AddingAList">加入清單</a></li>
+      <li><a href="#CustomLayout">建立自訂版面配置</a></li>
+    </ol>
+  </li>
+  <li><a href="#PassingEvents">將事件傳回對話方塊的主控件</a></li>
+  <li><a href="#ShowingADialog">顯示對話方塊</a></li>
+  <li><a href="#FullscreenDialog">顯示全螢幕對話方塊或內嵌片段</a>
+    <ol>
+      <li><a href="#ActivityAsDialog">針對大型螢幕將 Activity 顯示為對話方塊</a></li>
+    </ol>
+  </li>
+  <li><a href="#DismissingADialog">關閉對話方塊</a></li>
+</ol>
+
+    <h2>重要類別</h2>
+    <ol>
+      <li>{@link android.app.DialogFragment}</li>
+      <li>{@link android.app.AlertDialog}</li>
+    </ol>
+    
+    <h2>另請參閱</h2>
+    <ol>
+      <li><a href="{@docRoot}design/building-blocks/dialogs.html">對話方塊設計指南</a></li>
+      <li><a href="{@docRoot}guide/topics/ui/controls/pickers.html">挑選器</a> (日期/時間對話方塊)</li>
+    </ol>
+  </div>
+</div>
+
+<p>對話方塊是一種小型視窗,可提示使用者做出決定或輸入額外資訊。
+對話視窗並不會佔滿整個螢幕,而且通常是供強制回應事件使用,這種事件會要求使用者必須先完成特定動作,才能繼續下一步。
+</p>
+
+<div class="note design">
+<p><strong>設計對話方塊</strong></p>
+  <p>如要瞭解如何設計對話方塊,包括建議使用的設計語言,請參閱<a href="{@docRoot}design/building-blocks/dialogs.html">對話方塊</a>設計指南。
+</p>
+</div>
+
+<img src="{@docRoot}images/ui/dialogs.png" />
+
+<p>{@link android.app.Dialog} 類別是對話方塊的基礎類別,但請避免直接啟動 {@link android.app.Dialog}。建議您改用下列其中一個子類別:
+
+</p>
+<dl>
+  <dt>{@link android.app.AlertDialog}</dt>
+  <dd>這種對話方塊可以顯示一個標題、最多三個按鈕、一系列可選取項目或一個自訂版面配置。
+</dd>
+  <dt>{@link android.app.DatePickerDialog} 或 {@link android.app.TimePickerDialog}</dt>
+  <dd>這種對話方塊會提供預先定義的 UI,可讓使用者選取日期或時間。</dd>
+</dl>
+
+<div class="sidebox">
+<h2>避免使用 ProgressDialog</h2>
+<p>Android 包含另一個稱為
+{@link android.app.ProgressDialog} 的對話方塊類別,可顯示內含進度列的對話方塊。不過,如果您需要向使用者指明載入進度或不明朗的進度,建議您按照<a href="{@docRoot}design/building-blocks/progress.html">進度和 Activity</a> 設計指導方針中的指示操作,並且在版面配置中使用 {@link android.widget.ProgressBar}。
+
+
+</p>
+</div>
+
+<p>上述類別可定義對話方塊的樣式和結構,但建議您使用 {@link android.support.v4.app.DialogFragment} 做為對話方塊的容器。
+{@link android.support.v4.app.DialogFragment} 類別可提供您所需的所有控制項,方便您建立對話方塊及管理對話方塊的外觀,如此您不必對 {@link android.app.Dialog} 物件呼叫方法。
+
+
+</p>
+
+<p>使用 {@link android.support.v4.app.DialogFragment} 管理對話方塊可確保對話方塊能正確控制生命週期事件,例如使用者點擊 [返回]<em></em> 按鈕或旋轉螢幕。
+
+此外,{@link
+android.support.v4.app.DialogFragment} 類別還能像傳統的 {@link
+android.support.v4.app.Fragment} 一樣讓您重複使用對話方塊的 UI,做為大型 UI 中的可嵌入元件 (例如當您想讓對話方塊使用者介面在大型和小型螢幕上呈現不同外觀時)。
+
+</p>
+
+<p>本指南的以下各節說明如何搭配 {@link android.app.AlertDialog} 物件使用 {@link
+android.support.v4.app.DialogFragment}。
+如果您是想建立日期或時間挑選器,請改為參閱<a href="{@docRoot}guide/topics/ui/controls/pickers.html">挑選器</a>指南。
+</p>
+
+<p class="note"><strong>注意:</strong>{@link android.app.DialogFragment} 類別最初是在 Android 3.0 (API 級別 11) 中導入,因此本文說明如何使用<a href="{@docRoot}tools/support-library/index.html">支援程式庫</a>提供的 {@link
+android.support.v4.app.DialogFragment} 類別。
+
+只要將這個程式庫加到您的應用程式,即可在搭載 Android 1.6 以上版本的裝置上使用 {@link android.support.v4.app.DialogFragment} 以及多種其他 API。
+
+如果您應用程式支援的最低版本為 API 級別 11 以上版本,您就可以使用架構版本的 {@link
+android.app.DialogFragment},但請注意,本文中提供的連結是用於取得支援程式庫 API。
+
+使用支援程式庫時,請務必匯入 <code>android.support.v4.app.DialogFragment</code> 類別,而「不是」<em></em><code>android.app.DialogFragment</code>。
+
+</p>
+
+
+<h2 id="DialogFragment">建立對話方塊片段</h2>
+
+<p>如果想建立多種對話方塊設計 &mdash; 包括自訂版面配置和<a href="{@docRoot}design/building-blocks/dialogs.html">對話方塊</a>設計指南中所述的對話方塊設計 &mdash; 只要延伸
+{@link android.support.v4.app.DialogFragment} 然後利用
+{@link android.support.v4.app.DialogFragment#onCreateDialog
+onCreateDialog()} 回呼方法建立 {@link android.app.AlertDialog} 即可。
+
+</p>
+
+<p>例如,假設您利用 {@link android.support.v4.app.DialogFragment} 管理以下的基本
+{@link android.app.AlertDialog}:</p>
+
+<pre>
+public class FireMissilesDialogFragment extends DialogFragment {
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Use the Builder class for convenient dialog construction
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // FIRE ZE MISSILES!
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // User cancelled the dialog
+                   }
+               });
+        // Create the AlertDialog object and return it
+        return builder.create();
+    }
+}
+</pre>
+
+<div class="figure" style="width:290px;margin:0 0 0 20px">
+<img src="{@docRoot}images/ui/dialog_buttons.png" alt="" />
+<p class="img-caption"><strong>圖 1.</strong>
+包含一段訊息和兩個動作按鈕的對話方塊。</p>
+</div>
+
+<p>在這種情況下,如果您建立這個類別執行個體,然後對該物件呼叫 {@link
+android.support.v4.app.DialogFragment#show show()},就會顯示如圖 1 所示的對話方塊。
+</p>
+
+<p>如要進一步瞭解如何使用 {@link android.app.AlertDialog.Builder} API 建立對話方塊,請參閱下一節。
+</p>
+
+<p>視對話方塊的複雜程度而定,您可以在 {@link android.support.v4.app.DialogFragment} 中實作多種其他回呼方法,包括所有的基本<a href="{@docRoot}guide/components/fragments.html#Lifecycle">片段生命週期方法</a>。
+
+
+
+
+
+
+
+<h2 id="AlertDialog">建置快訊對話方塊</h2>
+
+
+<p>{@link android.app.AlertDialog} 通常是您需要使用的唯一對話方塊類別,可讓您建置多種對話方塊設計。如圖 2 所示,快訊對話方塊是由 3 個區塊組合而成:
+
+</p>
+
+<div class="figure" style="width:311px;margin-top:0">
+<img src="{@docRoot}images/ui/dialogs_regions.png" alt="" style="margin-bottom:0" />
+<p class="img-caption"><strong>圖 2.</strong>對話方塊的版面配置。</p>
+</div>
+
+<ol>
+<li><b>標題</b>
+  <p>此為選用區塊;只有在內容區域提供詳細訊息、一份清單或自訂版面配置時,您才需要使用標題。
+如果您想提供一段簡短訊息或一個簡易問題 (如圖 1 所示的對話方塊),您就不必使用標題。
+</li>
+<li><b>內容區塊</b>
+  <p>這個區塊可以顯示一段訊息、一份清單或其他自訂版面配置。</p></li>
+<li><b>動作按鈕</b>
+  <p>單一對話方塊最多只能包含 3 個動作按鈕。</p></li>
+</ol>
+
+<p>{@link android.app.AlertDialog.Builder} 類別提供的 API 可讓您建立包含這些內容類型 (包括自訂版面配置) 的 {@link android.app.AlertDialog}。
+
+</p>
+
+<p>如何建置 {@link android.app.AlertDialog}:</p>
+
+<pre>
+<b>// 1. Instantiate an {@link android.app.AlertDialog.Builder} with its constructor</b>
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+
+<b>// 2. Chain together various setter methods to set the dialog characteristics</b>
+builder.setMessage(R.string.dialog_message)
+       .setTitle(R.string.dialog_title);
+
+<b>// 3. Get the {@link android.app.AlertDialog} from {@link android.app.AlertDialog.Builder#create()}</b>
+AlertDialog dialog = builder.create();
+</pre>
+
+<p>以下主題說明如何定義多種採用 {@link android.app.AlertDialog.Builder} 類別的對話方塊屬性。
+</p>
+
+
+
+
+<h3 id="AddingButtons">加入按鈕</h3>
+
+<p>想要加入如圖 2 所示的動作按鈕,請呼叫 {@link android.app.AlertDialog.Builder#setPositiveButton setPositiveButton()} 和
+{@link android.app.AlertDialog.Builder#setNegativeButton setNegativeButton()} 方法:
+</p>
+
+<pre style="clear:right">
+AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+// Add the buttons
+builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User clicked OK button
+           }
+       });
+builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+           public void onClick(DialogInterface dialog, int id) {
+               // User cancelled the dialog
+           }
+       });
+// Set other dialog properties
+...
+
+// Create the AlertDialog
+AlertDialog dialog = builder.create();
+</pre>
+
+<p><code>set...Button()</code> 方法會要求<a href="{@docRoot}guide/topics/resources/string-resource.html">字串資源</a>提供的按鈕標題,以及可定義使用者點擊按鈕後需要完成的動作的{@link android.content.DialogInterface.OnClickListener}。
+
+
+</p>
+
+<p>您可以加入的動作按鈕分為 3 種:</p>
+<dl>
+  <dt>正面</dt>
+  <dd>這種按鈕的用途是接受及繼續進行特定動作 (「確定」按鈕)。</dd>
+  <dt>負面</dt>
+  <dd>這種按鈕的用途是取消動作。</dd>
+  <dt>中立</dt>
+  <dd>如果使用者不想繼續進行特定動作,但並非要取消動作,請使用這種按鈕。
+這種按鈕會顯示在正面和負面按鈕之間。
+範例:[稍後提醒我] 按鈕。</dd> 
+</dl>
+
+<p>您可以將以上其中一種按鈕加入 {@link
+android.app.AlertDialog};換句話說,您最多只能加入一個「正面」按鈕。</p>
+
+
+
+<div class="figure" style="width:290px;margin:0 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_list.png" alt="" />
+<p class="img-caption"><strong>圖 3.</strong>
+包含一個標題和一份清單的對話方塊。</p>
+</div>
+
+<h3 id="AddingAList">加入清單</h3>
+
+<p>{@link android.app.AlertDialog} API 可提供以下 3 種清單類型:</p>
+<ul>
+<li>傳統的單一選項清單</li>
+<li>永續性的單一選項清單 (圓形按鈕)</li>
+<li>永續性的多重選項清單 (核取方塊)</li>
+</ul>
+
+<p>想要建立如圖 3 所示的單一選項清單,請使用 {@link android.app.AlertDialog.Builder#setItems setItems()} 方法:
+</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    builder.setTitle(R.string.pick_color)
+           .setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int which) {
+               // The 'which' argument contains the index position
+               // of the selected item
+           }
+    });
+    return builder.create();
+}
+</pre>
+
+<p>由於清單會出現在對話方塊的內容區塊中,因此對話方塊無法同時顯示訊息和清單,而且您必須使用 {@link android.app.AlertDialog.Builder#setTitle setTitle()} 為對話方塊設定標題。
+
+如要指定清單列出的項目,請呼叫 {@link
+android.app.AlertDialog.Builder#setItems setItems()} 來傳送陣列。或者,您也可以使用 {@link
+android.app.AlertDialog.Builder#setAdapter setAdapter()} 指定清單。
+
+如此一來,您就可以使用 {@link android.widget.ListAdapter} 為清單加入動態資料 (例如資料庫中的動態資料)。
+</p>
+
+<p>如果您選擇讓清單採用 {@link android.widget.ListAdapter},請一律使用 {@link android.support.v4.content.Loader} 以非同步方式載入內容。
+
+詳情請參閱<a href="{@docRoot}guide/topics/ui/declaring-layout.html#AdapterViews">使用配接器建置版面配置</a>和<a href="{@docRoot}guide/components/loaders.html">載入器</a>指南。
+
+
+</p>
+
+<p class="note"><strong>注意:</strong>在預設情況下,輕觸某個清單項目會關閉對話方塊,除非您使用以下的永續性選項清單。
+</p>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_checkboxes.png" />
+<p class="img-caption"><strong>圖 4.</strong>
+多重選項清單。</p>
+</div>
+
+
+<h4 id="Checkboxes">加入永續性的多重選項或單一選項清單</h4>
+
+<p>如要加入多重選項 (核取方塊) 或單一選項 (圓形按鈕),請使用
+{@link android.app.AlertDialog.Builder#setMultiChoiceItems(Cursor,String,String,
+DialogInterface.OnMultiChoiceClickListener) setMultiChoiceItems()} 或
+{@link android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()} 方法。
+</p>
+
+<p>例如,以下說明如何建立如圖 4 所示能夠在 {@link java.util.ArrayList} 中儲存所選項目的多重選項清單:
+
+</p>
+
+<pre style="clear:right">
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    mSelectedItems = new ArrayList();  // Where we track the selected items
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Set the dialog title
+    builder.setTitle(R.string.pick_toppings)
+    // Specify the list array, the items to be selected by default (null for none),
+    // and the listener through which to receive callbacks when items are selected
+           .setMultiChoiceItems(R.array.toppings, null,
+                      new DialogInterface.OnMultiChoiceClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int which,
+                       boolean isChecked) {
+                   if (isChecked) {
+                       // If the user checked the item, add it to the selected items
+                       mSelectedItems.add(which);
+                   } else if (mSelectedItems.contains(which)) {
+                       // Else, if the item is already in the array, remove it 
+                       mSelectedItems.remove(Integer.valueOf(which));
+                   }
+               }
+           })
+    // Set the action buttons
+           .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // User clicked OK, so save the mSelectedItems results somewhere
+                   // or return them to the component that opened the dialog
+                   ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   ...
+               }
+           });
+
+    return builder.create();
+}
+</pre>
+
+<p>雖然傳統清單和包含圓形按鈕的清單都可提供「單選」動作,但如果您想保留使用者的選擇,請使用 {@link
+android.app.AlertDialog.Builder#setSingleChoiceItems(int,int,DialogInterface.OnClickListener) 
+setSingleChoiceItems()}。也就是說,如果您想讓對話方塊再次開啟時顯示使用者目前所選的選項,請建立包含圓形按鈕的清單。
+
+
+</p>
+
+
+
+
+
+<h3 id="CustomLayout">建立自訂版面配置</h3>
+
+<div class="figure" style="width:290px;margin:-30px 0 0 40px">
+<img src="{@docRoot}images/ui/dialog_custom.png" alt="" />
+<p class="img-caption"><strong>圖 5.</strong>自訂的對話方塊版面配置。</p>
+</div>
+
+<p>如果您想自訂對話方塊的版面配置,請建立所需的版面配置,然後對 {@link
+android.app.AlertDialog.Builder} 物件呼叫 {@link
+android.app.AlertDialog.Builder#setView setView()},將新建的版面配置加到 {@link android.app.AlertDialog}。
+</p>
+
+<p>自訂版面配置預設會佔滿整個對話方塊視窗,但您仍可使用 {@link android.app.AlertDialog.Builder} 方法在其中加入按鈕和標題。
+</p>
+
+<p>例如,以下是圖 5 所示的對話方塊版面配置檔案:</p>
+
+<p style="clear:right" class="code-caption">res/layout/dialog_signin.xml</p>
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+    &lt;ImageView
+        android:src="@drawable/header_logo"
+        android:layout_width="match_parent"
+        android:layout_height="64dp"
+        android:scaleType="center"
+        android:background="#FFFFBB33"
+        android:contentDescription="@string/app_name" />
+    &lt;EditText
+        android:id="@+id/username"
+        android:inputType="textEmailAddress"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="16dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="4dp"
+        android:hint="@string/username" />
+    &lt;EditText
+        android:id="@+id/password"
+        android:inputType="textPassword"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="4dp"
+        android:layout_marginLeft="4dp"
+        android:layout_marginRight="4dp"
+        android:layout_marginBottom="16dp"
+        android:fontFamily="sans-serif"
+        android:hint="@string/password"/>
+&lt;/LinearLayout>
+</pre>
+
+<p class="note"><strong>提示:</strong>在預設情況下,如果您設定 {@link android.widget.EditText} 元素使用 {@code "textPassword"} 輸入類型,字型系列就會設為等寬字型,因此您必須將該元素的字型系列變更為 {@code "sans-serif"},讓文字欄位採用對應的字型。
+
+
+</p>
+
+<p>如要擴大 {@link android.support.v4.app.DialogFragment} 中的版面配置,請透過 {@link android.app.Activity#getLayoutInflater()} 取得 {@link android.view.LayoutInflater},然後呼叫{@link android.view.LayoutInflater#inflate inflate()} (其中的第一個參數為版面配置資源 ID,第二個參數則是版面配置的上層檢視)。接著,您可以呼叫 {@link android.app.AlertDialog#setView setView()} 來取代對話方塊中的版面配置。
+
+
+
+
+
+</p>
+
+<pre>
+&#64;Override
+public Dialog onCreateDialog(Bundle savedInstanceState) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+    // Get the layout inflater
+    LayoutInflater inflater = getActivity().getLayoutInflater();
+
+    // Inflate and set the layout for the dialog
+    // Pass null as the parent view because its going in the dialog layout
+    builder.setView(inflater.inflate(R.layout.dialog_signin, null))
+    // Add action buttons
+           .setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
+               &#64;Override
+               public void onClick(DialogInterface dialog, int id) {
+                   // sign in the user ...
+               }
+           })
+           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+               public void onClick(DialogInterface dialog, int id) {
+                   LoginDialogFragment.this.getDialog().cancel();
+               }
+           });      
+    return builder.create();
+}
+</pre>
+
+<div class="note">
+<p><strong>提示:</strong>如果您想自訂對話方塊,請改為將 {@link android.app.Activity} 顯示為對話方塊,而不是使用 {@link android.app.Dialog} API。
+
+方法很簡單,只要建立 Activity 然後在 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> 宣示說明元素中將其主題設為 
+{@link android.R.style#Theme_Holo_Dialog Theme.Holo.Dialog} 即可:
+</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.Dialog" >
+</pre>
+<p>這樣一來,Activity 就會顯示在對話方塊視窗,而不是以全螢幕模式顯示。</p>
+</div>
+
+
+
+<h2 id="PassingEvents">將事件傳回對話方塊的主控件</h2>
+
+<p>使用者在對話方塊中輕觸任一動作按鈕或從清單中選取一個項目後,您的 {@link android.support.v4.app.DialogFragment} 可能會自行執行必要動作,不過,您通常會想將事件傳送到 Activity 或對話方塊開啟的片段。
+
+
+如要這麼做,請透過每個點擊事件類型適用的方法定義介面,然後在會接收對話方塊的動作事件的主機元件中實作該介面。
+
+</p>
+
+<p>例如,以下是定義用於將事件傳回主機 Activity 的介面的 {@link android.support.v4.app.DialogFragment}:
+</p>
+
+<pre>
+public class NoticeDialogFragment extends DialogFragment {
+    
+    /* The activity that creates an instance of this dialog fragment must
+     * implement this interface in order to receive event callbacks.
+     * Each method passes the DialogFragment in case the host needs to query it. */
+    public interface NoticeDialogListener {
+        public void onDialogPositiveClick(DialogFragment dialog);
+        public void onDialogNegativeClick(DialogFragment dialog);
+    }
+    
+    // Use this instance of the interface to deliver action events
+    NoticeDialogListener mListener;
+    
+    // Override the Fragment.onAttach() method to instantiate the NoticeDialogListener
+    &#64;Override
+    public void onAttach(Activity activity) {
+        super.onAttach(activity);
+        // Verify that the host activity implements the callback interface
+        try {
+            // Instantiate the NoticeDialogListener so we can send events to the host
+            mListener = (NoticeDialogListener) activity;
+        } catch (ClassCastException e) {
+            // The activity doesn't implement the interface, throw exception
+            throw new ClassCastException(activity.toString()
+                    + " must implement NoticeDialogListener");
+        }
+    }
+    ...
+}
+</pre>
+
+<p>代管對話方塊的 Activity 會建立包含對話方塊片段的建構函式的對話方塊執行個體,以及透過您實作的 {@code NoticeDialogListener} 介面接收對話方塊的事件:
+
+</p>
+
+<pre>
+public class MainActivity extends FragmentActivity
+                          implements NoticeDialogFragment.NoticeDialogListener{
+    ...
+    
+    public void showNoticeDialog() {
+        // Create an instance of the dialog fragment and show it
+        DialogFragment dialog = new NoticeDialogFragment();
+        dialog.show(getSupportFragmentManager(), "NoticeDialogFragment");
+    }
+
+    // The dialog fragment receives a reference to this Activity through the
+    // Fragment.onAttach() callback, which it uses to call the following methods
+    // defined by the NoticeDialogFragment.NoticeDialogListener interface
+    &#64;Override
+    public void onDialogPositiveClick(DialogFragment dialog) {
+        // User touched the dialog's positive button
+        ...
+    }
+
+    &#64;Override
+    public void onDialogNegativeClick(DialogFragment dialog) {
+        // User touched the dialog's negative button
+        ...
+    }
+}
+</pre>
+
+<p>由於主機 Activity 會實作 {@code NoticeDialogListener} &mdash; 如上所述的 {@link android.support.v4.app.Fragment#onAttach onAttach()} 回呼方法會強制執行這個 Activity &mdash; 因此對話方塊片段可以使用介面回呼方法將點擊事件傳送到 Activity:
+
+
+</p>
+
+<pre>
+public class NoticeDialogFragment extends DialogFragment {
+    ...
+
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // Build the dialog and set up the button click handlers
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(R.string.dialog_fire_missiles)
+               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the positive button event back to the host activity
+                       mListener.onDialogPositiveClick(NoticeDialogFragment.this);
+                   }
+               })
+               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+                   public void onClick(DialogInterface dialog, int id) {
+                       // Send the negative button event back to the host activity
+                       mListener.onDialogNegativeClick(NoticeDialogFragment.this);
+                   }
+               });
+        return builder.create();
+    }
+}
+</pre>
+
+
+
+<h2 id="ShowingADialog">顯示對話方塊</h2>
+
+<p>如果想顯示對話方塊,請建立 {@link
+android.support.v4.app.DialogFragment} 執行個體並呼叫 {@link android.support.v4.app.DialogFragment#show
+show()} 來傳送對話方塊片段的 {@link android.support.v4.app.FragmentManager} 和標籤名稱。
+</p>
+
+<p>如要取得 {@link android.support.v4.app.FragmentManager},請呼叫
+{@link android.support.v4.app.FragmentActivity} 中的
+{@link android.support.v4.app.FragmentActivity#getSupportFragmentManager()} 或 {@link
+android.support.v4.app.Fragment} 中的 {@link
+android.support.v4.app.Fragment#getFragmentManager()}。例如:</p>
+
+<pre>
+public void confirmFireMissiles() {
+    DialogFragment newFragment = new FireMissilesDialogFragment();
+    newFragment.show(getSupportFragmentManager(), "missiles");
+}
+</pre>
+
+<p>第二個引數 {@code "missiles"} 是不重複的標籤名稱,可供系統視需要用於儲存及還原片段狀態。
+此外,該標籤還可讓您呼叫
+ {@link android.support.v4.app.FragmentManager#findFragmentByTag
+findFragmentByTag()} 來取得片段的控點。</p>
+
+
+
+
+<h2 id="FullscreenDialog">顯示全螢幕對話方塊或內嵌片段</h2>
+
+<p>您可能會想建立 UI 設計,讓 UI 片段在某些情況下於該設計中顯示為對話方塊,而不是其他設計中的全螢幕或內嵌片段 (例如視裝置採用螢幕大小而定)。
+
+{@link android.support.v4.app.DialogFragment} 類別能為您提供這樣的彈性,這是因為該類別仍可做為可嵌入的 {@link
+android.support.v4.app.Fragment} 使用。
+</p>
+
+<p>不過,您無法使用 {@link android.app.AlertDialog.Builder AlertDialog.Builder} 或其他 {@link android.app.Dialog} 物件來建置這種對話方塊。
+如果您想建立可嵌入的 {@link android.support.v4.app.DialogFragment},請務必在版面配置中定義對話方塊的 UI,然後透過 {@link android.support.v4.app.DialogFragment#onCreateView
+onCreateView()} 回呼載入版面配置。
+
+
+</p>
+
+<p>以下的 {@link android.support.v4.app.DialogFragment} 範例可顯示為對話方塊或可嵌入片段 (使用名為 <code>purchase_items.xml</code> 的版面配置):
+</p>
+
+<pre>
+public class CustomDialogFragment extends DialogFragment {
+    /** The system calls this to get the DialogFragment's layout, regardless
+        of whether it's being displayed as a dialog or an embedded fragment. */
+    &#64;Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+        // Inflate the layout to use as dialog or embedded fragment
+        return inflater.inflate(R.layout.purchase_items, container, false);
+    }
+  
+    /** The system calls this only when creating the layout in a dialog. */
+    &#64;Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        // The only reason you might override this method when using onCreateView() is
+        // to modify any dialog characteristics. For example, the dialog includes a
+        // title by default, but your custom layout might not need it. So here you can
+        // remove the dialog title, but you must call the superclass to get the Dialog.
+        Dialog dialog = super.onCreateDialog(savedInstanceState);
+        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+        return dialog;
+    }
+}
+</pre>
+
+<p>以下的程式碼可根據螢幕大小,決定要將片段顯示為對話方塊或全螢幕 UI:
+</p>
+
+<pre>
+public void showDialog() {
+    FragmentManager fragmentManager = getSupportFragmentManager();
+    CustomDialogFragment newFragment = new CustomDialogFragment();
+    
+    if (mIsLargeLayout) {
+        // The device is using a large layout, so show the fragment as a dialog
+        newFragment.show(fragmentManager, "dialog");
+    } else {
+        // The device is smaller, so show the fragment fullscreen
+        FragmentTransaction transaction = fragmentManager.beginTransaction();
+        // For a little polish, specify a transition animation
+        transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
+        // To make it fullscreen, use the 'content' root view as the container
+        // for the fragment, which is always the root view for the activity
+        transaction.add(android.R.id.content, newFragment)
+                   .addToBackStack(null).commit();
+    }
+}
+</pre>
+
+<p>如要進一步瞭解如何進行片段交易,請參閱<a href="{@docRoot}guide/components/fragments.html">片段</a>指南。
+</p>
+
+<p>在本範例中,<code>mIsLargeLayout</code> 布林值可指定是否要讓目前的裝置採用應用程式的大型版面配置設計 (藉此將這個片段顯示為對話方塊,而不是全螢幕)。
+
+設定這種布林值的最佳做法,是使用<a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">替代資源</a>值為不同裝置大小宣告<a href="{@docRoot}guide/topics/resources/more-resources.html#Bool">布林資源值</a>。
+
+例如,以下是適用於不同螢幕大小的 2 種布林資源版本:
+</p>
+
+<p class="code-caption">res/values/bools.xml</p>
+<pre>
+&lt;!-- Default boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">false&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p class="code-caption">res/values-large/bools.xml</p>
+<pre>
+&lt;!-- Large screen boolean values -->
+&lt;resources>
+    &lt;bool name="large_layout">true&lt;/bool>
+&lt;/resources>
+</pre>
+
+<p>接著,您可以在呼叫 Activity 的 {@link android.app.Activity#onCreate onCreate()} 方法時初始化 {@code mIsLargeLayout} 值:
+</p>
+
+<pre>
+boolean mIsLargeLayout;
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_main);
+
+    mIsLargeLayout = getResources().getBoolean(R.bool.large_layout);
+}
+</pre>
+
+
+
+<h3 id="ActivityAsDialog">針對大型螢幕將 Activity 顯示為對話方塊</h3>
+
+<p>您可以針對大型螢幕將 {@link android.app.Activity} 顯示為對話方塊,而不是將對話方塊顯示為全螢幕 UI,藉此達到相同結果。
+
+您要採用的方法取決於您的應用程式設計,但如果您的應用程式是針對小型螢幕進行設計,將 Activity 顯示為對話方塊通常就能獲得良好效果,而如果您想針對平板電腦改善使用者體驗,請將生命週期較短的 Activity 顯示為對話方塊。
+
+
+</p>
+
+<p>如果只想針對大型螢幕將 Activity 顯示為對話方塊,請為 <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
+&lt;activity&gt;}</a> 宣示元素套用 {@link android.R.style#Theme_Holo_DialogWhenLarge Theme.Holo.DialogWhenLarge} 主題:
+
+</p>
+
+<pre>
+&lt;activity android:theme="&#64;android:style/Theme.Holo.DialogWhenLarge" >
+</pre>
+
+<p>如要進一步瞭解如何運用主題設定 Activity 的樣式,請參閱<a href="{@docRoot}guide/topics/ui/themes.html">樣式和主題</a>指南。</p>
+
+
+
+<h2 id="DismissingADialog">關閉對話方塊</h2>
+
+<p>只要使用者輕觸任何用 {@link android.app.AlertDialog.Builder} 建立的動作按鈕,系統就會為您關閉對話方塊。
+</p>
+
+<p>此外,系統也會在使用者輕觸對話方塊清單中的項目時,關閉對話方塊,但如果清單採用圓形按鈕或核取方塊,系統就不會關閉對話方塊。
+不過,您可以對 {@link
+android.support.v4.app.DialogFragment} 呼叫 {@link android.support.v4.app.DialogFragment#dismiss()},藉此手動關閉對話方塊。
+</p>
+
+<p>如果您需要在對話方塊關閉時執行特定動作,請在 {@link
+android.support.v4.app.DialogFragment} 中實作 {@link
+android.support.v4.app.DialogFragment#onDismiss onDismiss()} 方法。
+</p>
+
+<p>此外,您還可以「取消」<em></em>對話方塊。這種特殊事件可用於指明使用者尚未完成工作便關閉對話方塊。
+如果使用者按下 [返回]<em></em> 按鈕、輕觸對話方塊以外的螢幕畫面,或如果您對 {@link
+android.app.Dialog} 呼叫 {@link android.app.Dialog#cancel()} (例如藉此回應對話方塊中的 [取消] 按鈕),就會發生這個事件。
+
+</p>
+
+<p>如上方範例所示,您可以在 {@link
+android.support.v4.app.DialogFragment} 類別中實作 {@link android.support.v4.app.DialogFragment#onCancel onCancel()} 來回應取消事件。
+</p>
+
+<p class="note"><strong>注意:</strong>系統會在發生會呼叫 {@link android.support.v4.app.DialogFragment#onCancel onCancel()} 回呼的事件時呼叫
+{@link android.support.v4.app.DialogFragment#onDismiss onDismiss()}。
+不過,如果您呼叫 {@link android.app.Dialog#dismiss Dialog.dismiss()} 或 {@link
+android.support.v4.app.DialogFragment#dismiss DialogFragment.dismiss()},則系統會呼叫 {@link android.support.v4.app.DialogFragment#onDismiss onDismiss()}「而不是」<em></em>{@link android.support.v4.app.DialogFragment#onCancel onCancel()}。
+
+
+因此,我們通常建議您在使用者點擊您對話方塊中的「正面」<em></em>按鈕以便將對話方塊從檢視移除時,呼叫 {@link android.support.v4.app.DialogFragment#dismiss dismiss()}。
+
+</p>
+
+
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/ui/menus.jd b/docs/html-intl/intl/zh-tw/guide/topics/ui/menus.jd
new file mode 100644
index 0000000..be1fa7f
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/menus.jd
@@ -0,0 +1,1031 @@
+page.title=選單
+parent.title=使用者介面
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>本文件內容</h2>
+<ol>
+  <li><a href="#xml">在 XML 中定義選單</a></li>
+  <li><a href="#options-menu">建立選項選單</a>
+    <ol>
+      <li><a href="#RespondingOptionsMenu">處理點擊事件</a></li>
+      <li><a href="#ChangingTheMenu">在執行階段變更選單項目</a></li>
+    </ol>
+  </li>
+  <li><a href="#context-menu">建立內容關聯選單</a>
+    <ol>
+      <li><a href="#FloatingContextMenu">建立浮動內容選單</a></li>
+      <li><a href="#CAB">使用內容關聯動作模式</a></li>
+    </ol>
+  </li>
+  <li><a href="#PopupMenu">建立彈出式選單</a>
+    <ol>
+      <li><a href="#PopupEvents">處理點擊事件</a></li>
+    </ol>
+  </li>
+  <li><a href="#groups">建立選單群組</a>
+    <ol>
+      <li><a href="#checkable">使用可核取的選單項目</a></li>
+    </ol>
+  </li>
+  <li><a href="#intents">根據意圖新增選單項目</a>
+    <ol>
+      <li><a href="#AllowingToAdd">允許將 Activity 新增至其他選單</a></li>
+    </ol>
+  </li>
+</ol>
+
+  <h2>重要類別</h2>
+  <ol>
+    <li>{@link android.view.Menu}</li>
+    <li>{@link android.view.MenuItem}</li>
+    <li>{@link android.view.ContextMenu}</li>
+    <li>{@link android.view.ActionMode}</li>
+  </ol>
+
+  <h2>另請參閱</h2>
+  <ol>
+    <li><a href="{@docRoot}guide/topics/ui/actionbar.html">動作列</a></li>
+    <li><a href="{@docRoot}guide/topics/resources/menu-resource.html">選單資源</a></li>
+    <li><a href="http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html">和選單按鈕說再見
+</a></li>
+  </ol>
+</div>
+</div>
+
+<p>選單在許多類型的應用程式中都是常見的使用者介面元件。為提供熟悉且一致的使用者體驗,您應該使用
+{@link android.view.Menu} API 來呈現 Activity 中的使用者動作與其他選項。
+</p>
+
+<p>從 Android 3.0 (API 級別 11) 開始,提供 Android 的裝置不再需要提供專屬的「選單」<em></em>按鈕。
+有此變更之後,Android 應用程式應可脫離對傳統有 6 個項目的選單面板的依賴,改為提供動作列來呈現一般的使用者動作。
+
+</p>
+
+<p>雖然有些選單項目的設計與使用者體驗有所變更,但依然是根據
+{@link android.view.Menu} API 來定義一組動作與選項的語意。本指南說明如何在所有版本的 Android 上,建立三個基本類型的選單或動作呈現方式:
+
+</p>
+
+<dl>
+  <dt><strong>選項選單和動作列</strong></dt>
+    <dd><a href="#options-menu">選項選單</a>是 Activity 的主要選單項目集合。
+您應該將對應用程式有全域影響的動作放置在此,例如「搜尋」、「撰寫電子郵件」及「設定」。
+
+  <p>如果您是為 Android 2.3 以下版本進行開發,使用者可按下「選單」<em></em>按鈕來顯示選項選單面板。
+</p>
+  <p>在 Android 3.0 以上版本,選項選單的項目是當成螢幕上的動作項目與溢出選項組合,以<a href="{@docRoot}guide/topics/ui/actionbar.html">動作列</a>呈現。
+從 Android 3.0 開始,「選單」<em></em>按鈕已淘汰 (有些裝置甚至沒有),因此您應轉向使用動作列來存取動作和其他選項。
+
+
+</p>
+  <p>請參閱<a href="#options-menu">建立選項選單</a>。</p>
+    </dd>
+    
+  <dt><strong>內容選單和內容關聯動作模式</strong></dt>
+  
+   <dd>內容選單是會在使用者長按某元素時顯示的<a href="#FloatingContextMenu">浮動選單</a>。
+它提供的動作會影響所選取內容或內容畫面。
+
+  <p>針對 Android 3.0 以上版本進行開發時,您應該改為使用<a href="#CAB">關聯比對動作模式</a>,以啟用所選取內容的動作。此模式顯示的動作項目會影響畫面頂端列中選取的內容,並允許使用者選取多個項目。
+
+</p>
+  <p>請參閱<a href="#context-menu">建立內容關聯選單</a>。</p>
+</dd>
+    
+  <dt><strong>彈出式選單</strong></dt>
+    <dd>彈出式選單顯示的項目清單會以垂直清單的方式,錨定在呼叫該選單的檢視。
+它很適合用來提供與特定內容有關的動作溢出,或針對第二部分的命令提供選項。
+彈出式選單中的動作「不」<strong></strong>應直接影響對應內容,應由內容關聯動作直接影響。
+
+彈出式選單主要用於您 Activity 中與內容區域相關的延伸動作。
+
+  <p>請參閱<a href="#PopupMenu">建立彈出式選單</a>。</p>
+</dd>
+</dl>
+
+
+
+<h2 id="xml">在 XML 中定義選單</h2>
+
+<p>對於所有選單類型,Android 提供標準 XML 格式來定義選單項目。
+您應該在 XML <a href="{@docRoot}guide/topics/resources/menu-resource.html">選單資源</a>中定義選單與其相關項目,而不是在您 Activity 的程式碼中建置選單。
+接著,您可以擴大 Activity 或片段中的選單資源 (當成
+{@link android.view.Menu} 物件載入)。
+</p>
+
+<p>建議使用選單資源的幾個理由如下:</p>
+<ul>
+  <li>較容易視覺化 XML 中的選單結構。</li>
+  <li>可將選單內容和您應用程式的行為程式碼分開。</li>
+  <li>可讓您運用<a href="{@docRoot}guide/topics/resources/index.html">應用程式資源</a>架構,為不同的平台版本、螢幕大小及其他設定,建立替代選單設定。
+</li>
+</ul>
+
+<p>如要定義選單,可在專案的 <code>res/menu/</code> 目錄內建立 XML 檔案,然後利用下列元素建置選單:
+</p>
+<dl>
+  <dt><code>&lt;menu></code></dt>
+    <dd>定義選單項目的容器 {@link android.view.Menu}。<code>&lt;menu></code> 元素必須是檔案的根節點,並可保留一或多個
+<code>&lt;item></code> 與 <code>&lt;group></code> 元素。
+</dd>
+
+  <dt><code>&lt;item></code></dt>
+    <dd>建立代表選單中單一項目的 {@link android.view.MenuItem}。此元素可以包含巢狀
+<code>&lt;menu></code> 元素以建立子選單。</dd>
+    
+  <dt><code>&lt;group></code></dt>
+    <dd>可供 {@code &lt;item&gt;} 元素選用的不可見容器。它可讓您將選單項目分類,以便分享屬性,例如有效狀態與可見度。
+如需詳細資訊,請參閱<a href="#groups">建立選單群組</a>。
+</dd>
+</dl>
+
+
+<p>稱為 <code>game_menu.xml</code> 的範例選單如下:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/new_game"
+          android:icon="@drawable/ic_new_game"
+          android:title="@string/new_game"
+          android:showAsAction="ifRoom"/&gt;
+    &lt;item android:id="@+id/help"
+          android:icon="@drawable/ic_help"
+          android:title="@string/help" /&gt;
+&lt;/menu&gt;
+</pre>
+
+<p><code>&lt;item></code> 元素支援數個屬性,您可以用來定義項目的外觀與行為。
+上述選單中的項目包括下列屬性:</p>
+
+<dl>
+  <dt>{@code android:id}</dt>
+    <dd>項目獨有的資源 ID,當使用者選取該項目時可讓應用程式辨識出來。
+</dd>
+  <dt>{@code android:icon}</dt>
+    <dd>要當成項目圖示使用的可繪項目參考資料。</dd>
+  <dt>{@code android:title}</dt>
+    <dd>要當成項目標題使用的字串參考資料。</dd>
+  <dt>{@code android:showAsAction}</dt>
+    <dd>指定此項目應何時且如何顯示為<a href="{@docRoot}guide/topics/ui/actionbar.html">動作列</a>中的動作項目。</dd>
+</dl>
+
+<p>這些都是您應該使用的最重要屬性,但不侷限於上述這幾個。
+如需所有支援屬性的詳細資訊,請參閱<a href="{@docRoot}guide/topics/resources/menu-resource.html">選單資源</a>。</p>
+
+<p>您可以藉由將 {@code &lt;menu&gt;} 元素新增為 {@code &lt;item&gt;} 的子項,將子選單新增至任何選單 (子選單除外) 的項目。
+當您的應用程式有很多可按主題分類的功能,例如 PC 應用程式選單列中的項目 (檔案、編輯、檢視等等) 時,子選單相當有用。
+
+例如:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/file"
+          android:title="@string/file" &gt;
+        &lt;!-- "file" submenu --&gt;
+        &lt;menu&gt;
+            &lt;item android:id="@+id/create_new"
+                  android:title="@string/create_new" /&gt;
+            &lt;item android:id="@+id/open"
+                  android:title="@string/open" /&gt;
+        &lt;/menu&gt;
+    &lt;/item&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>如要在 Activity 中使用選單,您必須使用 {@link android.view.MenuInflater#inflate(int,Menu)
+MenuInflater.inflate()} 擴大選單資源 (將 XML 轉換成可程式化的物件)。
+下列各節將說明如何擴大各種
+選單類型的選單。</p>
+
+
+
+<h2 id="options-menu">建立選項選單</h2>
+
+<div class="figure" style="width:200px;margin:0">
+  <img src="{@docRoot}images/options_menu.png" height="333" alt="" />
+  <p class="img-caption"><strong>圖 1.</strong>Android 2.3 裝置上瀏覽器中的選項選單。
+</p>
+</div>
+
+<p>您應該在選項選單中包括與目前 Activity 內容關聯動作和其他選項,例如「搜尋」、「撰寫電子郵件」及「設定」。
+</p>
+
+<p>選項選單中的項目會顯示在螢幕上的哪個位置,取決於您為其開發應用程式的版本。
+</p>
+
+<ul>
+  <li>如果您為「Android 2.3.x (API 級別 10) 以下版本」<strong></strong>開發應用程式,當使用者按下[選單]<em></em> 按鈕,選項選單的內容會顯示在螢幕底部,如圖 1 所示。
+
+開啟時,第一個可見部分就是最多可保留六個選單項目的圖示選單。
+
+如果您的選單包含六個以上的項目,Android 會將第六個與其餘的項目放入溢出選單,使用者可透過選取[更多]<em></em> 來開啟。
+
+</li>
+
+  <li>如果您為「Android 3.0 (API 級別 11) 以上版本」<strong></strong>開發應用程式,選項選單中的項目會顯示在<a href="{@docRoot}guide/topics/ui/actionbar.html">動作列</a>。
+在預設情況下,系統會將所有項目放入動作溢出,使用者可以利用動作列右側的動作溢出圖示來顯示 (或按裝置的「選單」<em></em>按鈕,如果有的話)。
+
+為了能夠快速存取重要的動作,您可以將 {@code android:showAsAction="ifRoom"} 新增至對應的 {@code &lt;item&gt;} 元素,將要顯示在動作列的幾個項目升階 (請參閱圖 2)。
+
+
+
+ <p>如需動作項目與其他動作列行為的詳細資訊,請參閱<a href="{@docRoot}guide/topics/ui/actionbar.html">動作列</a>指南。 </p>
+<p class="note"><strong>注意:</strong>即使您「並非」<em></em>為 Android 3.0 以上版本進行開發,您仍可建置自己的動作列版面配置,達到類似的效果。
+如需如何支援舊版Android 提供動作列的範例,請參閱<a href="{@docRoot}resources/samples/ActionBarCompat/index.html">動作列相容性</a>範例。
+
+</p>
+</li>
+</ul>
+
+<img src="{@docRoot}images/ui/actionbar.png" alt="" />
+<p class="img-caption"><strong>圖 2.</strong><a href="{@docRoot}resources/samples/HoneycombGallery/index.html">Honeycomb 圖片庫</a>應用程式的動作列,顯示導覽索引標籤與相機動作項目 (再加上動作溢出按鈕)。
+</p>
+
+<p>您可以從 {@link android.app.Activity} 子類別或 {@link android.app.Fragment} 子類別宣告選項選單的項目。
+如果您的 Activity 與片段都宣告選項選單的項目,兩者會在 UI 中結合。
+
+先顯示 Activity 的項目,接著會依片段新增至 Activity 的順序顯示各片段的項目。
+您可以視需要在您想移動的 {@code &lt;item&gt;} 中,利用其 {@code android:orderInCategory}屬性重新排列選單項目的順序。
+</p>
+
+<p>如要指定 Activity 的選項選單,可覆寫 {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} (片段會提供自己的
+{@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()} 回呼)。在這種方法中,您可以將選單資源(<a href="#xml">在 XML 中完成定義</a>) 擴大回呼中提供的 {@link
+android.view.Menu}。
+例如:</p>
+
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu) {
+    MenuInflater inflater = {@link android.app.Activity#getMenuInflater()};
+    inflater.inflate(R.menu.game_menu, menu);
+    return true;
+}
+</pre>
+
+<p>透過 {@link android.view.MenuItem} API,您也可以使用 {@link android.view.Menu#add(int,int,int,int)
+add()} 來新增選單項目,以及利用 {@link android.view.Menu#findItem findItem()} 擷取項目來修訂它們的屬性。
+</p>
+
+<p>如果您是為 Android 2.3.x 以下版本開發應用程式,當使用者初次開啟選單時,系統會呼叫 {@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()},以建立選項選單。
+如果您是為 Android 3.0 以上版本開發應用程式,啟動 Activity 時,系統會呼叫
+{@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()},以在動作列顯示項目。
+</p>
+
+
+
+<h3 id="RespondingOptionsMenu">處理點擊事件</h3>
+
+<p>使用者從選項選單 (包括動作列中的動作項目) 中選取項目時,系統會呼叫您 Activity 的
+{@link android.app.Activity#onOptionsItemSelected(MenuItem)
+onOptionsItemSelected()} 方法。此方法會傳送所選取的 {@link android.view.MenuItem}。您可以呼叫
+{@link android.view.MenuItem#getItemId()} 傳回選單項目的唯一 ID (由選單資源中的
+{@code android:id} 屬性或透過指定給
+{@link android.view.Menu#add(int,int,int,int) add()} 方法的整數來定義) 來識別該項目。您可以將此 ID 和已知選單項目比對,以執行適當動作。
+例如:</p>
+
+<pre>
+&#64;Override
+public boolean onOptionsItemSelected(MenuItem item) {
+    // Handle item selection
+    switch (item.getItemId()) {
+        case R.id.new_game:
+            newGame();
+            return true;
+        case R.id.help:
+            showHelp();
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+    }
+}
+</pre>
+
+<p>當您成功處理選單項目時會傳回 {@code true}。如果您不處理選單項目,應該呼叫
+{@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} 的超級類別實作 (預設實作會傳回 false)。
+</p>
+
+<p>如果您的 Activity 包含片段,系統會先呼叫 Activity 的 {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()},再依片段的新增順序呼叫各片段,直到其中之一傳回
+{@code true} 或所有片段均已呼叫。
+</p>
+
+<p class="note"><strong>提示:</strong>Android 3.0 新增的功能可讓您在 XML 中使用
+{@code android:onClick} 屬性定義選單項目的點擊行為。該屬性值必須是使用選單的 Activity 所定義的方法名稱。
+它必須是公用方法且接受單一
+{@link android.view.MenuItem} 參數,當系統呼叫此方法時,它會傳送選取的選單項目。
+如需詳細資訊與範例,請參閱<a href="{@docRoot}guide/topics/resources/menu-resource.html">選單資源</a>文件。</p>
+
+<p class="note"><strong>提示:</strong>如果您的應用程式包含多個 Activity 且有一些提供相同的選項選單,可考慮建立只實作
+{@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()} 與 {@link android.app.Activity#onOptionsItemSelected(MenuItem)
+onOptionsItemSelected()} 方法的 Activity。
+接著,針對應共用相同選項選單的 Activity 擴充此類別。
+如此一來,您可以管理一組處理選單動作的程式碼,以及每一個繼承選單行為的子系類別。
+
+
+如果您想要將選單項目新增至其中一個子系 Activity,請覆寫該 Activity 中的 {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()}。呼叫 {@code super.onCreateOptionsMenu(menu)} 以建立原始的選單項目,然後利用
+{@link
+android.view.Menu#add(int,int,int,int) menu.add()} 來新增選單項目。您也可以覆寫個別選單項目的超級類別行為。
+</p>
+
+
+<h3 id="ChangingTheMenu">在執行階段變更選單項目</h3>
+
+<p>系統呼叫 {@link android.app.Activity#onCreateOptionsMenu(Menu)
+onCreateOptionsMenu()} 之後,會保留您填入的 {@link android.view.Menu} 執行個體,除非該選單因某種理由而變無效,否則不會再次呼叫
+{@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()}。
+不過,{@link
+android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} 應該只用來建立初始選單狀態,您不要在 Activity 生命週期間用來進行變更。
+</p>
+
+<p>如果您想要根據 Activity 生命週期當中發生的事件來修改選項選單,您可以使用
+{@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()} 方法這麼做。
+這個方法會將目前存在的
+{@link android.view.Menu} 物件傳送給您加以修改,例如新增、移除或停用項目
+(片段也會提供 {@link
+android.app.Fragment#onPrepareOptionsMenu onPrepareOptionsMenu()} 回呼)。</p>
+
+<p>在 Android 2.3.x 以下版本,每當使用者開啟選項選單 (按下 [選單]<em></em>
+按鈕) 時,系統都會呼叫 {@link
+android.app.Activity#onPrepareOptionsMenu(Menu)
+onPrepareOptionsMenu()}。</p>
+
+<p>在 Android 3.0 以上版本,當選單項目顯示在動作列時會一律將選項選單視為開啟。
+當事件發生且您想要執行選單更新時,您必須呼叫
+{@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()},以要求系統呼叫
+{@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}。</p>
+
+<p class="note"><strong>注意:</strong>您不應該根據目前處於焦點狀態的
+{@link android.view.View},變更選項選單中的項目。
+處於輕觸模式 (使用者未使用軌跡球或導覽用的方向鍵) 時,檢視無法成為焦點,因此您不應該使用焦點當成修改選項選單中項目時的依據。
+
+如果您想要在 {@link
+android.view.View} 提供具內容相關性的選單項目,請使用<a href="#context-menu">內容選單</a>。</p>
+
+
+
+
+<h2 id="context-menu">建立內容關聯選單</h2>
+
+<div class="figure" style="width:420px;margin-top:-1em">
+  <img src="{@docRoot}images/ui/menu-context.png" alt="" />
+  <p class="img-caption"><strong>圖 3.</strong>浮動內容選單的螢幕擷取畫面 (左) 與內容關聯動作列 (右)。
+</p>
+</div>
+
+<p>內容關聯選單提供的動作會影響 UI 中的特定項或內容畫面。
+
+您可以為任何檢視提供內容選單,但它們通常用於使用者能直接對各項目執行動作的 {@link
+android.widget.ListView}、{@link android.widget.GridView} 或其他檢視集合中的項目。</p>
+
+<p>您有兩種方式可提供內容關聯動作:</p>
+<ul>
+  <li>在<a href="#FloatingContextMenu">浮動內容選單</a>中。當使用者長按 (按住不放) 某個宣告支援內容選單的檢視時,選單會顯示為浮動的選單項目清單 (類似於對話方塊)。
+
+使用者一次可對一個項目執行內容關聯動作。
+</li>
+
+  <li>在<a href="#CAB">內容關聯動作模式</a>中。此模式是
+{@link android.view.ActionMode} 的系統實作,在畫面頂端將會影響將所選項目的動作項目顯示在「內容關聯動作列」<em></em>。
+此模式處於使用中時,使用者能一次對多個項目執行某一動作 (如果您的應用程式允許的話)。
+</li>
+</ul>
+
+<p class="note"><strong>注意:</strong>Android 3.0 (API 級別 11) 以上版本可以使用內容關聯動作模式,此模式同時是可以顯示內容關聯動作時的偏好技術。
+
+如果您的應用程式支援 3.0 以下版本,您應該在這類裝置上切換為浮動內容選單。
+</p>
+
+
+<h3 id="FloatingContextMenu">建立浮動內容選單</h3>
+
+<p>如何提供浮動內容選單:</p>
+<ol>
+  <li>呼叫 {@link android.app.Activity#registerForContextMenu(View) registerForContextMenu()} 並將 {@link android.view.View} 傳送給它,向應該建立關聯的內容選單註冊 {@link android.view.View}。
+
+
+  <p>如果您的 Activity 使用 {@link android.widget.ListView} 或 {@link android.widget.GridView},且您希望每個項目都提供相同的內容選單,可將 {@link android.widget.ListView} 或 {@link android.widget.GridView} 傳送至 {@link
+android.app.Activity#registerForContextMenu(View) registerForContextMenu()} 來註冊內容選單的所有項目。
+
+</p>
+</li>
+
+  <li>在您的 {@link android.app.Activity} 或 {@link android.app.Fragment} 中實作 {@link
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()} 方法。
+
+  <p>當註冊的檢視收到長按事件時,系統會呼叫 {@link
+android.view.View.OnCreateContextMenuListener#onCreateContextMenu onCreateContextMenu()} 方法。
+您可以在這裡定義選單項目,方法通常是擴大選單資源。例如:
+</p>
+<pre>
+&#64;Override
+public void onCreateContextMenu(ContextMenu menu, View v,
+                                ContextMenuInfo menuInfo) {
+    super.onCreateContextMenu(menu, v, menuInfo);
+    MenuInflater inflater = getMenuInflater();
+    inflater.inflate(R.menu.context_menu, menu);
+}
+</pre>
+
+<p>{@link android.view.MenuInflater} 可讓您從<a href="{@docRoot}guide/topics/resources/menu-resource.html">選單資源</a>擴大內容選單。回呼方法參數包括使用者選取的
+{@link android.view.View},以及提供其他所選取項目相關資訊的 {@link android.view.ContextMenu.ContextMenuInfo} 物件。
+
+如果 Activity 有數個分別提供不同內容選單的檢視,您可以使用這些參數來決定要擴大的內容選單。
+
+</p>
+</li>
+
+<li>實作 {@link android.app.Activity#onContextItemSelected(MenuItem)
+onContextItemSelected()}。
+  <p>當使用者選取選單項目時,系統會呼叫此方法,以便您執行適當的動作。
+例如:</p>
+
+<pre>
+&#64;Override
+public boolean onContextItemSelected(MenuItem item) {
+    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
+    switch (item.getItemId()) {
+        case R.id.edit:
+            editNote(info.id);
+            return true;
+        case R.id.delete:
+            deleteNote(info.id);
+            return true;
+        default:
+            return super.onContextItemSelected(item);
+    }
+}
+</pre>
+
+<p>{@link android.view.MenuItem#getItemId()} 方法會查詢選定選單項目的 ID,使用
+{@code
+android:id} 屬性在 XML 中指派給各個選單項目,如<a href="#xml">在 XML 中定義選單</a>一節所述。
+</p>
+
+<p>當您成功處理選單項目時會傳回 {@code true}。如果您不處理選單項目,請將選單項目傳送至超級類別實作。
+如果您的 Activity 包括片段,該 Activity 會先收到此回呼。
+在不處理時呼叫超級類別,系統就可以一次一個 (依片段的新增順序) 將事件傳送至各片段中的個別回呼方法,直到傳回
+{@code true} 或 {@code false}。
+(
+{@link android.app.Activity} 與 {@code android.app.Fragment} 的預設實作會傳回 {@code
+false},因此當您不處理時,務必要呼叫超級類別。)</p>
+</li>
+</ol>
+
+
+<h3 id="CAB">使用內容關聯動作模式</h3>
+
+<p>內容關聯動作模式是 {@link android.view.ActionMode} 的系統實作,執行內容關聯動作時著重於與使用者互動。
+當使用者選取項目而啟用此模式時,「內容關聯動作列」<em></em>會出現在畫面頂端,呈現使用者可在目前所選項目上執行的動作。
+
+此模式啟用時,使用者能選取多個項目 (如果您允許的話)、取消選取項目,還可以在 Activity 內繼續瀏覽 (在您允許的範圍內)。
+
+當使用者取消選取所有項目、按下 [後退] 按鈕,或選取該列左側的[完成]<em></em> 按鈕時,動作模式會停用且內容 關聯 動作列也會消失。
+
+</p>
+
+<p class="note"><strong>注意:</strong>內容關聯動作列不一定要與<a href="{@docRoot}guide/topics/ui/actionbar.html">動作列</a>關聯。
+即使內容相關動作列在視覺上覆蓋動作列的位置,兩者依然獨立運作。
+
+</p>
+
+<p>如果您在為 Android 3.0 (API 級別 11) 以上版本進行開發,您應使用內容關聯動作模式來呈現內容動作,而不是<a href="#FloatingContextMenu">浮動內容選單</a>。
+</p>
+
+<p>針對提供內容相關動作的檢視,您應該就下列兩種事件之一 (或兩者) 呼叫內容關聯動作模式:
+</p>
+<ul>
+  <li>使用者長按檢視。</li>
+  <li>使用者選取檢視內的核取方塊或類似 UI 元件。</li>
+</ul>
+
+<p>應用程式如何呼叫內容關聯動作模式以及如何定義每個動作的行為,視您的設計而定。
+基本上可分為兩種設計:</p>
+<ul>
+  <li>在個別的任意檢視上執行內容關聯動作。</li>
+  <li>針對 {@link
+android.widget.ListView} 或 {@link android.widget.GridView} (允許使用者選取多個項目並對全部執行同一動作) 中的項目群組批次執行內容關聯動作。
+</li>
+</ul>
+
+<p>下列各節說明每種情況所需的設定。</p>
+
+
+<h4 id="CABforViews">為個別的檢視啟用內容關離動作模式</h4>
+
+<p>如果您只有在使用者選取特定檢視時,才想要呼叫內容關聯動作模式,建議您採取以下動作:
+</p>
+<ol>
+  <li>實作 {@link android.view.ActionMode.Callback} 介面。在它的回呼方法中,您可以指定內容相關動作列的動作、回應動作項目的點擊事件,以及處理動作模式的其他生命週期事件。
+
+</li>
+  <li>當您想要顯示該列時 (例如當使用者長按檢視時),可呼叫 {@link android.app.Activity#startActionMode startActionMode()}。
+</li>
+</ol>
+
+<p>例如:</p>
+
+<ol>
+  <li>實作 {@link android.view.ActionMode.Callback ActionMode.Callback} 介面:
+<pre>
+private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
+
+    // Called when the action mode is created; startActionMode() was called
+    &#64;Override
+    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+        // Inflate a menu resource providing context menu items
+        MenuInflater inflater = mode.getMenuInflater();
+        inflater.inflate(R.menu.context_menu, menu);
+        return true;
+    }
+
+    // Called each time the action mode is shown. Always called after onCreateActionMode, but
+    // may be called multiple times if the mode is invalidated.
+    &#64;Override
+    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+        return false; // Return false if nothing is done
+    }
+
+    // Called when the user selects a contextual menu item
+    &#64;Override
+    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.menu_share:
+                shareCurrentItem();
+                mode.finish(); // Action picked, so close the CAB
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    // Called when the user exits the action mode
+    &#64;Override
+    public void onDestroyActionMode(ActionMode mode) {
+        mActionMode = null;
+    }
+};
+</pre>
+
+<p>請注意,這些事件回呼幾乎和<a href="#options-menu">選項選單</a>的回呼一模一樣,只是每一個都會傳送與事件關聯的 {@link
+android.view.ActionMode} 物件。您可以使用 {@link
+android.view.ActionMode} API 對 CAB 進行各種變更,例如使用
+{@link android.view.ActionMode#setTitle setTitle()} 與 {@link
+android.view.ActionMode#setSubtitle setSubtitle()} 修改標題與子標題 (指出已選取的項目數量相當有用)。
+</p>
+
+<p>同時請注意,當動作模式終結時,上述範例會將 {@code mActionMode} 變數設為 null。
+在下個步驟中,您將看到它是如何初始化,以及如何儲存 Activity 或片段中的成員變數,非常實用。
+</p>
+</li>
+
+  <li>呼叫 {@link android.app.Activity#startActionMode startActionMode()} (可以的話) 以啟用內容關聯動作模式,例如回應長按 {@link
+android.view.View}。
+</p>
+
+<pre>
+someView.setOnLongClickListener(new View.OnLongClickListener() {
+    // Called when the user long-clicks on someView
+    public boolean onLongClick(View view) {
+        if (mActionMode != null) {
+            return false;
+        }
+
+        // Start the CAB using the ActionMode.Callback defined above
+        mActionMode = getActivity().startActionMode(mActionModeCallback);
+        view.setSelected(true);
+        return true;
+    }
+});
+</pre>
+
+<p>當您呼叫 {@link android.app.Activity#startActionMode startActionMode()} 時,系統會傳回建立的
+{@link android.view.ActionMode}。只要將此儲存在成員變數中,您就可以變更內容關聯動作列以回應其他事件。
+在上述範例中,
+{@link android.view.ActionMode} 是用來確保不會重新建立已在使用中的 {@link android.view.ActionMode} 執行個體,方法是在將動作模式啟動之前,檢查成員是否為 null。
+
+</p>
+</li>
+</ol>
+
+
+
+<h4 id="CABforListView">啟用 ListView 或 GridView 中的批次內容相關動作</h4>
+
+<p>如果您在 {@link android.widget.ListView} 或 {@link
+android.widget.GridView} (或 {@link android.widget.AbsListView} 的另一個延伸) 中有一系列項目,且想要允許使用者執行批次動作,請進行以下動作:
+</p>
+
+<ul>
+  <li>實作 {@link android.widget.AbsListView.MultiChoiceModeListener} 介面並使用
+{@link android.widget.AbsListView#setMultiChoiceModeListener
+setMultiChoiceModeListener()} 加以設定以供檢視群組使用。在接聽器的回呼方法中,您可以指定內容相關動作列的動作、回應動作項目的點擊事件,以及處理從 {@link android.view.ActionMode.Callback} 介面繼承的其他回呼。
+
+</li>
+
+  <li>使用 {@link
+android.widget.AbsListView#CHOICE_MODE_MULTIPLE_MODAL} 引數呼叫 {@link android.widget.AbsListView#setChoiceMode setChoiceMode()}。</li>
+</ul>
+
+<p>例如:</p>
+
+<pre>
+ListView listView = getListView();
+listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
+listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
+
+    &#64;Override
+    public void onItemCheckedStateChanged(ActionMode mode, int position,
+                                          long id, boolean checked) {
+        // Here you can do something when items are selected/de-selected,
+        // such as update the title in the CAB
+    }
+
+    &#64;Override
+    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+        // Respond to clicks on the actions in the CAB
+        switch (item.getItemId()) {
+            case R.id.menu_delete:
+                deleteSelectedItems();
+                mode.finish(); // Action picked, so close the CAB
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    &#64;Override
+    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+        // Inflate the menu for the CAB
+        MenuInflater inflater = mode.getMenuInflater();
+        inflater.inflate(R.menu.context, menu);
+        return true;
+    }
+
+    &#64;Override
+    public void onDestroyActionMode(ActionMode mode) {
+        // Here you can make any necessary updates to the activity when
+        // the CAB is removed. By default, selected items are deselected/unchecked.
+    }
+
+    &#64;Override
+    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+        // Here you can perform updates to the CAB due to
+        // an {@link android.view.ActionMode#invalidate} request
+        return false;
+    }
+});
+</pre>
+
+<p>這樣一來,當使用者以長按的方式選取項目時,系統就會呼叫 {@link
+android.widget.AbsListView.MultiChoiceModeListener#onCreateActionMode onCreateActionMode()}
+方法,並顯示包含指定動作的內容相關動作列。可以看見內容關聯動作列時,使用者即可選取其他項目。
+</p>
+
+<p>在某些情況下,內容關聯動作提供一般動作項目,因為使用者可能未發現有長按行為,所以您可能希望新增核取方塊或類似的 UI 元素,讓他們選取項目。
+
+當使用者選取核取方塊時,您可以使用 {@link android.widget.AbsListView#setItemChecked setItemChecked()} 將個別的清單項目設定成已核取狀態,以呼叫內容關聯動作模式。
+
+</p>
+
+
+
+
+<h2 id="PopupMenu">建立彈出式選單</h2>
+
+<div class="figure" style="width:220px">
+<img src="{@docRoot}images/ui/popupmenu.png" alt="" />
+<p><strong>圖 4.</strong>Gmail 應用程式中的彈出式選單錨定於右上角的溢出按鈕。
+</p>
+</div>
+
+<p>{@link android.widget.PopupMenu} 是錨定於 {@link android.view.View} 的強制回應選單。
+有空間的畫會顯示在錨定檢視下方或檢視上方。適合用途:</p>
+<ul>
+  <li>為與特定內容關聯動作提供溢出樣式選單 (例如 Gmail 的電子郵件標頭,如圖 4 所示)。<em></em>
+
+    <p class="note"><strong>注意:</strong>內容選單一般用於會「影響」<em></em>所選取內容的動作,與這並不相同。
+對於會影響所選取內容的動作,請使用<a href="#CAB">內容關聯動作模式</a>或<a href="#FloatingContextMenu">浮動內容選單</a>。
+</p></li>
+  <li>提供命令句的第二部分 (例如,標示為「新增」的按鈕會產生包含不同「新增」選項的彈出式選單)。
+</li>
+  <li>提供類似於 {@link android.widget.Spinner} (不保留永續性選擇) 的下拉式清單。
+</li>
+</ul>
+
+
+<p class="note"><strong>注意:</strong> API 級別 11 以上版本才可以使用 {@link android.widget.PopupMenu}。
+</p>
+
+<p>如果您<a href="#xml">在 XML 中定義選單</a>,以下說明如何顯示彈出式選單:</p>
+<ol>
+  <li>透過其建構函式將 {@link android.widget.PopupMenu} 具現化,使用應錨定選單的目前應用程式
+{@link android.content.Context} 與 {@link android.view.View}。
+</li>
+  <li>使用 {@link android.view.MenuInflater} 將您的選單資源擴大成
+{@link
+android.widget.PopupMenu#getMenu() PopupMenu.getMenu()} 所傳回的 {@link android.view.Menu} 物件。針對 14 以上的 API 級別,您可以改用
+{@link android.widget.PopupMenu#inflate PopupMenu.inflate()}。</li>
+  <li>呼叫 {@link android.widget.PopupMenu#show() PopupMenu.show()}。</li>
+</ol>
+
+<p>例如,以下是含有 {@link android.R.attr#onClick android:onClick} 屬性可顯示彈出式選單的按鈕。
+</p>
+
+<pre>
+&lt;ImageButton
+    android:layout_width="wrap_content" 
+    android:layout_height="wrap_content" 
+    android:src="@drawable/ic_overflow_holo_dark"
+    android:contentDescription="@string/descr_overflow_button"
+    android:onClick="showPopup" />
+</pre>
+
+<p>接著,該 Activity 可以顯示彈出式選單,如下所示:</p>
+
+<pre>
+public void showPopup(View v) {
+    PopupMenu popup = new PopupMenu(this, v);
+    MenuInflater inflater = popup.getMenuInflater();
+    inflater.inflate(R.menu.actions, popup.getMenu());
+    popup.show();
+}
+</pre>
+
+<p>在 14 以上的 API 級別中,您可以利用 {@link
+android.widget.PopupMenu#inflate PopupMenu.inflate()} 將兩行結合來擴大選單。</p>
+
+<p>當使用者選取某項目或輕觸選單區域外時會關閉選單。
+您可以使用 {@link
+android.widget.PopupMenu.OnDismissListener} 來接聽關閉事件。</p>
+
+<h3 id="PopupEvents">處理點擊事件</h3>
+
+<p>如要在使用者選取選單項目時執行動作,您必須呼叫 {@link android.widget.PopupMenu#setOnMenuItemClickListener
+setOnMenuItemclickListener()} 來實作 {@link
+android.widget.PopupMenu.OnMenuItemClickListener} 介面並向您的 {@link
+android.widget.PopupMenu} 註冊。
+當使用者選取項目時,系統會在您的介面中呼叫 {@link
+android.widget.PopupMenu.OnMenuItemClickListener#onMenuItemClick onMenuItemClick()} 回呼。
+</p>
+
+<p>例如:</p>
+
+<pre>
+public void showMenu(View v) {
+    PopupMenu popup = new PopupMenu(this, v);
+
+    // This activity implements OnMenuItemClickListener
+    popup.setOnMenuItemClickListener(this);
+    popup.inflate(R.menu.actions);
+    popup.show();
+}
+
+&#64;Override
+public boolean onMenuItemClick(MenuItem item) {
+    switch (item.getItemId()) {
+        case R.id.archive:
+            archive(item);
+            return true;
+        case R.id.delete:
+            delete(item);
+            return true;
+        default:
+            return false;
+    }
+}
+</pre>
+
+
+<h2 id="groups">建立選單群組</h2>
+
+<p>選單群組是指某些特性相同的選單項目集合。您可以利用群組:
+</p>
+<ul>
+  <li>透過 {@link android.view.Menu#setGroupVisible(int,boolean)
+setGroupVisible()} 來顯示或隱藏所有項目</li>
+  <li>透過 {@link android.view.Menu#setGroupEnabled(int,boolean)
+setGroupEnabled()} 來啟用或停用所有項目</li>
+  <li>透過 {@link
+android.view.Menu#setGroupCheckable(int,boolean,boolean) setGroupCheckable()} 指定是否可核取所有項目</li>
+</ul>
+
+<p>您可以將 {@code &lt;item&gt;} 元素堆疊在選單資源中的 {@code &lt;group&gt;}元素內,或使用 {@link
+android.view.Menu#add(int,int,int,int) add()} 方法指定群組 ID 來建立群組。
+</p>
+
+<p>以下是包含群組的範例選單資源:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;item android:id="@+id/menu_save"
+          android:icon="@drawable/menu_save"
+          android:title="@string/menu_save" /&gt;
+    &lt;!-- menu group --&gt;
+    &lt;group android:id="@+id/group_delete"&gt;
+        &lt;item android:id="@+id/menu_archive"
+              android:title="@string/menu_archive" /&gt;
+        &lt;item android:id="@+id/menu_delete"
+              android:title="@string/menu_delete" /&gt;
+    &lt;/group&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>群組中的項目和第一個項目都會顯示在同一層,選單中的這三個項目都屬於同層級。
+不過,您可以參考群組 ID 並使用上方所述的方法,修改群組當中兩個項目的特性。
+系統也絕不會將群組的項目分離。
+例如,如果您針對每個項目宣告 {@code
+android:showAsAction="ifRoom"},它們都會顯示在動作列中或顯示在動作溢出中。
+</p>
+
+
+<h3 id="checkable">使用可勾選的選單項目</h3>
+
+<div class="figure" style="width:200px">
+  <img src="{@docRoot}images/radio_buttons.png" height="333" alt="" />
+  <p class="img-caption"><strong>圖 5.</strong>包含可勾選項目的子選單螢幕擷取畫面。
+</p>
+</div>
+
+<p>對於獨立選項使用核取方塊,或對互斥選項群組使用選項按鈕,將選單當成開啟或關閉選項的介面,相當實用。
+
+圖 5 顯示的子選單包含能以圓形按鈕勾選的項目。
+</p>
+
+<p class="note"><strong>注意:</strong>圖示選單 (出自選項選單) 中的選單項目無法顯示核取方塊或選項按鈕。
+如果您選擇要將圖示選單中的項目設為可勾選,每當狀態變更時,您都必須切換圖示和/或文字,手動指出勾選狀態。
+
+</p>
+
+<p>您可以使用 {@code &lt;item&gt;} 元素中的 {@code
+android:checkable} 屬性,為個別的選單項目定義可勾選行為,或利用 {@code &lt;group&gt;} 元素中的 {@code android:checkableBehavior} 屬性來為整個群組定義。
+例如,此選單群組中的所有項目都可以利用選項按鈕勾選。
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&gt;
+    &lt;group android:checkableBehavior="single"&gt;
+        &lt;item android:id="@+id/red"
+              android:title="@string/red" /&gt;
+        &lt;item android:id="@+id/blue"
+              android:title="@string/blue" /&gt;
+    &lt;/group&gt;
+&lt;/menu&gt;
+</pre>
+
+<p>{@code android:checkableBehavior} 屬性可接受其中一項:
+<dl>
+  <dt>{@code single}</dt>
+    <dd>只能勾選群組中的一個項目 (圓形按鈕)</dd>
+  <dt>{@code all}</dt>
+    <dd>可勾選所有項目 (核取方塊)</dd>
+  <dt>{@code none}</dt>
+    <dd>沒有任何項目可供勾選</dd>
+</dl>
+
+<p>您可以使用
+{@code &lt;item&gt;} 元素中的 {@code android:checked} 屬性將預設的勾選狀態套用至項目,並使用 {@link
+android.view.MenuItem#setChecked(boolean) setChecked()} 方法在程式碼中變更它。</p>
+
+<p>已選取可勾選項目時,系統會呼叫所選取個別項目的回呼方法 (例如 {@link android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()})。
+您必須在這裡設定核取方塊的狀態,原因是核取方塊或選項按鈕並不會自動變更其狀態。
+
+您可以利用 
+{@link android.view.MenuItem#isChecked()} 來查詢項目的目前狀態 (使用者選取它之前的狀態),然後利用
+{@link android.view.MenuItem#setChecked(boolean) setChecked()} 來設定勾選狀態。例如:</p>
+
+<pre>
+&#64;Override
+public boolean onOptionsItemSelected(MenuItem item) {
+    switch (item.getItemId()) {
+        case R.id.vibrate:
+        case R.id.dont_vibrate:
+            if (item.isChecked()) item.setChecked(false);
+            else item.setChecked(true);
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+    }
+}
+</pre>
+
+<p>如果您不以這種方式設定已勾選狀態,將無法在使用者選取時變更項目 (核取方塊或選項按鈕) 的可見狀態。
+
+當您確實設定狀態,Activity 會保留項目的已勾選狀態,當使用者稍後開啟選單時,即可看見您設定的已勾選狀態。
+
+</p>
+
+<p class="note"><strong>注意:</strong>可勾選的選單項目只能在各工作階段上使用,並不會在應用程式終結後儲存。
+
+如果想為使用者儲存特定應用程式設定,請使用<a href="{@docRoot}guide/topics/data/data-storage.html#pref">共用偏好設定</a>。
+</p>
+
+
+
+<h2 id="intents">根據意圖新增選單項目</h2>
+
+<p>有時候您會希望選單項目使用 {@link android.content.Intent}來啟動 Activity (不論是您的應用程式或另一應用程式中的 Activity)。
+當您知道想要使用的意圖,同時有應繼承該意圖的特定選單項目時,您可在使用者選取項目時才回呼的適當方法實作期間使用
+{@link android.app.Activity#startActivity(Intent) startActivity()} 執行該意圖 (例如 {@link
+android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} callback) 回呼)。
+
+</p>
+
+<p>不過,如果您不確定使用者的裝置是否包含可處理該意圖的應用程式,而新增可呼叫它的選單項目會導致選單項目無法運作,原因可能是該意圖不會解析成 Activity。
+
+
+為解決這個問題,當 Android 在處理您意圖的裝置上找到 Activity 時,Android 會讓您將選單項目動態新增至選單。
+</p>
+
+<p>如何根據接受意圖的可用 Activity 來新增選單項目:</p>
+<ol>
+  <li>定義類別為
+{@link android.content.Intent#CATEGORY_ALTERNATIVE} 和/或
+{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} 的意圖,再加上其他需求。</li>
+  <li>呼叫 {@link
+android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+Menu.addIntentOptions()}。Android 接著會搜尋可執行該意圖的任何應用程式,並將其新增至您的選單。
+</li>
+</ol>
+
+<p>如果未安裝可滿足該意圖的應用程式,則不會新增任何選單項目。
+</p>
+
+<p class="note"><strong>注意:</strong>
+{@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} 是用來處理畫面上目前選取的元素。
+因此,請只在 {@link
+android.app.Activity#onCreateContextMenu(ContextMenu,View,ContextMenuInfo)
+onCreateContextMenu()} 中建立選單的情況下才使用。</p>
+
+<p>例如:</p>
+
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu){
+    super.onCreateOptionsMenu(menu);
+
+    // Create an Intent that describes the requirements to fulfill, to be included
+    // in our menu. The offering app must include a category value of Intent.CATEGORY_ALTERNATIVE.
+    Intent intent = new Intent(null, dataUri);
+    intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
+
+    // Search and populate the menu with acceptable offering applications.
+    menu.addIntentOptions(
+         R.id.intent_group,  // Menu group to which new items will be added
+         0,      // Unique item ID (none)
+         0,      // Order for the items (none)
+         this.getComponentName(),   // The current activity name
+         null,   // Specific items to place first (none)
+         intent, // Intent created above that describes our requirements
+         0,      // Additional flags to control items (none)
+         null);  // Array of MenuItems that correlate to specific items (none)
+
+    return true;
+}</pre>
+
+<p>找到的各個 Activity 提供的意圖篩選器如果與定義的意圖相符,就會新增選單項目,使用意圖篩選器的 <code>android:label</code> 中的值當成選單項目標題,並將應用程式圖示當成選單項目圖示。
+
+此外,
+{@link android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+addIntentOptions()} 方法還會傳回新增的選單項目數量。</p>
+
+<p class="note"><strong>注意:</strong>當您呼叫 {@link
+android.view.Menu#addIntentOptions(int,int,int,ComponentName,Intent[],Intent,int,MenuItem[])
+addIntentOptions()} 時,它會覆寫第一個引數中所指定選單群組中的任何或所有選單項目。
+</p>
+
+
+<h3 id="AllowingToAdd">允許將 Activity 新增至其他選單</h3>
+
+<p>您也能向其他應用程式提供 Activity 的服務,這樣即可在其他應用程式的選單中包含您的應用程式 (與上述的角色顛倒)。
+</p>
+
+<p>如要包含在其他應用程式選單中,您必須照常定義意圖篩選器,但務必為意圖篩選器類別納入 
+{@link android.content.Intent#CATEGORY_ALTERNATIVE} 和/或 {@link android.content.Intent#CATEGORY_SELECTED_ALTERNATIVE} 值。
+
+例如:</p>
+<pre>
+&lt;intent-filter label="&#64;string/resize_image">
+    ...
+    &lt;category android:name="android.intent.category.ALTERNATIVE" />
+    &lt;category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
+    ...
+&lt;/intent-filter>
+</pre>
+
+<p>如要進一步瞭解如何編寫意圖篩選器,請參閱<a href="/guide/components/intents-filters.html">意圖和意圖篩選器</a>。
+</p>
+
+<p>如需採用此技術的範例應用程式,請參閱 <a href="{@docRoot}resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html">NotePad</a> 範例程式碼。
+
+</p>
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/ui/notifiers/notifications.jd b/docs/html-intl/intl/zh-tw/guide/topics/ui/notifiers/notifications.jd
new file mode 100644
index 0000000..b853744
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/notifiers/notifications.jd
@@ -0,0 +1,979 @@
+page.title=通知
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>本文件內容</h2>
+<ol>
+  <li><a href="#Design">設計注意事項</a></li>
+  <li><a href="#CreateNotification">建立通知</a>
+    <ol>
+      <li><a href="#Required">必要的通知內容</a></li>
+      <li><a href="#Optional">選用的通知內容和設定</a></li>
+      <li><a href="#Actions">通知動作</a></li>
+      <li><a href="#Priority">通知優先順序</a></li>
+      <li><a href="#SimpleNotification">建立簡易通知</a></li>
+      <li><a href="#ApplyStyle">將擴充版面配置套用至通知</a></li>
+      <li><a href="#Compatibility">處理相容性</a></li>
+    </ol>
+  </li>
+  <li><a href="#Managing">管理通知</a>
+    <ol>
+      <li><a href="#Updating">更新通知</a></li>
+      <li><a href="#Removing">移除通知</a></li>
+    </ol>
+  </li>
+  <li><a href="#NotificationResponse">啟動 Activity 時保留導覽</a>
+    <ol>
+      <li><a href="#DirectEntry">設定一般 Activity PendingIntent</a></li>
+      <li><a href="#ExtendedNotification">設定特殊 Activity PendingIntent</a></li>
+    </ol>
+  </li>
+  <li><a href="#Progress">在通知中顯示進度</a>
+    <ol>
+      <li><a href="#FixedProgress">顯示時間長度固定的進度指示器</a></li>
+      <li><a href="#ActivityIndicator">顯示持續性 Activity 指示器</a></li>
+    </ol>
+  </li>
+  <li><a href="#metadata">通知中繼資料</a></li>
+  <li><a href="#Heads-up">抬頭通知</a></li>
+  <li><a href="#lockscreenNotification">鎖定螢幕通知</a></li>
+    <ol>
+      <li><a href="#visibility">設定可見度</a></li>
+      <li><a href="#controllingMedia">在鎖定螢幕上控制媒體播放</a></li>
+    </ol>
+  <li><a href="#CustomNotification">自訂通知版面配置</a></li>
+</ol>
+
+    <h2>重要類別</h2>
+    <ol>
+        <li>{@link android.app.NotificationManager}</li>
+        <li>{@link android.support.v4.app.NotificationCompat}</li>
+    </ol>
+    <h2>相關影片</h2>
+    <ol>
+        <li>
+            <a href="http://www.youtube.com/watch?v=Yc8YrVc47TI&amp;feature=player_detailpage#t=1672s">4.1 版中的通知
+</a>
+        </li>
+    </ol>
+<h2>另請參閱</h2>
+<ol>
+    <li>
+        <a href="{@docRoot}design/patterns/notifications.html">Android 設計:通知</a>
+    </li>
+</ol>
+</div>
+</div>
+<p>
+    通知是您應用程式的一般 UI 以外,可以向使用者顯示的訊息。當您告訴系統發出通知時,它會先在「通知區域」<strong></strong>顯示為圖示。
+
+使用者可開啟「通知匣」<strong></strong>來查看通知的詳細資料。
+通知區域與通知匣都是使用者可隨時查看的系統控制區域。
+
+</p>
+<img id="figure1" src="{@docRoot}images/ui/notifications/notification_area.png" height="" alt="" />
+<p class="img-caption">
+    <strong>圖 1.</strong>通知區域中的通知。
+</p>
+<img id="figure2" src="{@docRoot}images/ui/notifications/notification_drawer.png" width="280px" alt="" />
+<p class="img-caption">
+    <strong>圖 2.</strong>通知匣中的通知。
+</p>
+
+<p class="note"><strong>注意:</strong>除非另外註明,否則本指南參照<a href="{@docRoot}tools/support-library/index.html">支援程式庫</a> 4 版中的 
+{@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} 類別。類別 {@link android.app.Notification.Builder Notification.Builder} 是在 Android 3.0 (API 級別 11) 新增。
+
+
+</p>
+
+<h2 id="Design">設計注意事項</h2>
+
+<p>做為 Android 使用者介面重要部分,通知有自己的設計指導方針。
+在 Android 5.0 (API 級別 21) 導入的質感設計變更,更是特別重要。
+如需詳情,請參閱<a href="{@docRoot}training/material/index.html">質感設計</a>。
+如要瞭解如何設計通知與其互動,請參閱<a href="{@docRoot}design/patterns/notifications.html">通知</a>設計指南。
+</p>
+
+<h2 id="CreateNotification">建立通知</h2>
+
+<p>您會為 
+{@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} 物件中的通知指定 UI 資訊與動作。
+如要建立通知本身,您可以呼叫 
+{@link android.support.v4.app.NotificationCompat.Builder#build NotificationCompat.Builder.build()},其傳回的 
+{@link android.app.Notification} 物件會包含您的規格。如要發出通知,您可以呼叫 {@link android.app.NotificationManager#notify NotificationManager.notify()} 將 {@link android.app.Notification} 物件傳送至系統。
+
+</p>
+
+<h3 id="Required">必要的通知內容</h3>
+<p>
+    {@link android.app.Notification} 物件「必須」<em></em>包含下列項目:
+</p>
+<ul>
+    <li>
+        小圖示,由
+{@link android.support.v4.app.NotificationCompat.Builder#setSmallIcon setSmallIcon()} 設定
+    </li>
+    <li>
+        標題,由
+{@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()} 設定
+    </li>
+    <li>
+        詳情文字,由
+{@link android.support.v4.app.NotificationCompat.Builder#setContentText setContentText()} 設定
+    </li>
+</ul>
+<h3 id="Optional">選用的通知內容和設定</h3>
+<p>
+    所有其他的通知設定與內容均為選用。如需詳情,請參閱
+{@link android.support.v4.app.NotificationCompat.Builder} 的參考文件。
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Actions">通知動作</h3>
+<p>
+    動作雖屬選用性質,但您至少必須將一個動作新增至通知。
+    動作可讓使用者從通知直接移至您應用程式中的
+{@link android.app.Activity},他們能在那裡查看一或多個事件或執行進一步工作。
+
+</p>
+<p>
+    通知可以提供多個動作。您應該一律定義會在使用者按一下通知時觸發的動作。
+這個動作通常會開啟您應用程式中的
+{@link android.app.Activity}。您也可以將按鈕新增至通知來執行其他動作,例如延遲鬧鐘或立即回應文字訊息。自 Android 4.1 起才提供此功能。
+
+如果您使用其他動作按鈕,也務必要在您應用程式的 {@link android.app.Activity} 中提供此功能。
+
+如需詳情,請參閱<a href="#Compatibility">處理相容性</a>。
+</p>
+<p>
+    在 {@link android.app.Notification} 內,動作本身是由
+{@link android.app.PendingIntent} 完成定義,其中包含的
+{@link android.content.Intent} 會啟動您應用程式中的
+{@link android.app.Activity}。如要將 
+{@link android.app.PendingIntent} 與手勢關聯,可呼叫
+{@link android.support.v4.app.NotificationCompat.Builder} 的適當方法。例如,如果當使用者按一下通知匣中的通知文字時,您希望啟動
+{@link android.app.Activity},可呼叫
+{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent setContentIntent()} 來新增 {@link android.app.PendingIntent}。
+
+</p>
+<p>
+    最常見的動作情況就是在使用者按一下通知時啟動 {@link android.app.Activity}。
+您也可以在使用者關閉通知時啟動 {@link android.app.Activity}。
+在 Android 4.1 以上版本中,您可以透過動作按鈕啟動
+{@link android.app.Activity}。如需詳情,請參閱
+{@link android.support.v4.app.NotificationCompat.Builder} 的參考指南。
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Priority">通知優先順序</h3>
+<p>
+    如有需要,您可以設定通知的優先順序。優先順序就像是提示一樣,可讓裝置 UI 知道該如何顯示通知。
+
+    如要設定通知的優先順序,可呼叫 {@link
+android.support.v4.app.NotificationCompat.Builder#setPriority(int)
+NotificationCompat.Builder.setPriority()},然後傳入其中一個 {@link
+android.support.v4.app.NotificationCompat} 優先順序常數。共有五個優先順序級別,範圍從
+{@link
+android.support.v4.app.NotificationCompat#PRIORITY_MIN} (-2) 到 {@link
+android.support.v4.app.NotificationCompat#PRIORITY_MAX} (2)。如未加以設定,優先順序會預設為
+{@link
+android.support.v4.app.NotificationCompat#PRIORITY_DEFAULT} (0)。
+</p>
+<p> 如要瞭解如何設定適當的優先順序級別,請參閱<a href="{@docRoot}design/patterns/notifications.html">通知</a>設計指南中的「正確地設定及管理通知優先順序」。
+
+
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="SimpleNotification">建立簡易通知</h3>
+<p>
+    下列程式碼片段說明簡易的通知,指定要在使用者按一下通知時開啟的 Activity。
+請注意,以下程式碼會建立
+{@link android.support.v4.app.TaskStackBuilder} 物件,並使用此物件建立動作的
+{@link android.app.PendingIntent}。如要進一步瞭解這種模式,請參閱<a href="#NotificationResponse">啟動 Activity 時保留導覽</a>:
+
+
+</p>
+<pre>
+NotificationCompat.Builder mBuilder =
+        new NotificationCompat.Builder(this)
+        .setSmallIcon(R.drawable.notification_icon)
+        .setContentTitle("My notification")
+        .setContentText("Hello World!");
+// Creates an explicit intent for an Activity in your app
+Intent resultIntent = new Intent(this, ResultActivity.class);
+
+// The stack builder object will contain an artificial back stack for the
+// started Activity.
+// This ensures that navigating backward from the Activity leads out of
+// your application to the Home screen.
+TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
+// Adds the back stack for the Intent (but not the Intent itself)
+stackBuilder.addParentStack(ResultActivity.class);
+// Adds the Intent that starts the Activity to the top of the stack
+stackBuilder.addNextIntent(resultIntent);
+PendingIntent resultPendingIntent =
+        stackBuilder.getPendingIntent(
+            0,
+            PendingIntent.FLAG_UPDATE_CURRENT
+        );
+mBuilder.setContentIntent(resultPendingIntent);
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// mId allows you to update the notification later on.
+mNotificationManager.notify(mId, mBuilder.build());
+</pre>
+<p>這樣一來,您的使用者就會收到通知。</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ApplyStyle">將擴充版面配置套用至通知</h3>
+<p>
+    如要讓通知顯示在擴充的檢視中,請先建立含有您所需一般檢視選項的
+{@link android.support.v4.app.NotificationCompat.Builder} 物件。
+接著,將擴充版面配置物件當成引數,呼叫 {@link android.support.v4.app.NotificationCompat.Builder#setStyle
+Builder.setStyle()}。
+</p>
+<p>
+    請記住,Android 4.1 以下版本平台不支援擴充通知。如要進一步瞭解如何處理 Android 4.1 以下版本平台的通知,請參閱<a href="#Compatibility">處理相容性</a>。
+
+
+</p>
+<p>
+    例如,下列程式碼片段示範如何更改上述程式碼片段中建立的通知,以使用擴充版面配置:
+
+</p>
+<pre>
+NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
+    .setSmallIcon(R.drawable.notification_icon)
+    .setContentTitle("Event tracker")
+    .setContentText("Events received")
+NotificationCompat.InboxStyle inboxStyle =
+        new NotificationCompat.InboxStyle();
+String[] events = new String[6];
+// Sets a title for the Inbox in expanded layout
+inboxStyle.setBigContentTitle("Event tracker details:");
+...
+// Moves events into the expanded layout
+for (int i=0; i &lt; events.length; i++) {
+
+    inboxStyle.addLine(events[i]);
+}
+// Moves the expanded layout object into the notification object.
+mBuilder.setStyle(inBoxStyle);
+...
+// Issue the notification here.
+</pre>
+
+<h3 id="Compatibility">處理相容性</h3>
+
+<p>
+    即使支援程式庫類別 {@link android.support.v4.app.NotificationCompat.Builder NotificationCompat.Builder} 中有設定這些功能的方法,特定版本也不一定能使用所有通知功能。
+
+
+    例如,取決於擴充通知的動作按鈕,只能在 Android 4.1 以上版本中顯示,原因是擴充通知本身只能在 Android 4.1 以上版本中使用。
+
+
+</p>
+<p>
+    為確保能有最佳相容性,可利用
+{@link android.support.v4.app.NotificationCompat NotificationCompat} 與其子類別來建立通知,特別是
+{@link android.support.v4.app.NotificationCompat.Builder
+NotificationCompat.Builder}。此外,實作通知時,請按照下列程序操作:
+</p>
+<ol>
+    <li>
+        不論使用者所用的版本為何,請向所有使用者提供所有所有通知功能。
+如要這麼做,請驗證可從您應用程式的
+{@link android.app.Activity} 使用所有功能。您可能會想要新增
+{@link android.app.Activity} 來執行此動作。
+        <p>
+            例如,如果您想要使用
+{@link android.support.v4.app.NotificationCompat.Builder#addAction addAction()}
+ 以提供可停止和開始媒體播放的控制項,可先在您應用程式的
+{@link android.app.Activity} 中實作此控制項。
+        </p>
+    </li>
+    <li>
+        藉由在使用者按一下通知時啟動功能,可確保所有使用者都能使用 {@link android.app.Activity} 中的功能。
+如要這樣做,請為 {@link android.app.Activity} 建立 {@link android.app.PendingIntent}。
+
+呼叫
+{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+setContentIntent()} 以將 {@link android.app.PendingIntent} 新增至通知。
+    </li>
+    <li>
+        現在,可以將您想要使用的擴充通知功能新增至通知。請記住,您新增的任何功能也必須能在使用者點選通知時所啟動的
+{@link android.app.Activity} 中使用。
+
+    </li>
+</ol>
+
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="Managing">管理通知</h2>
+<p>
+    當您必須對相同類型的事件發出多次通知時,請避免建立全新的通知。
+您應該考慮變更或新增 (或兩者) 就有通知的某些值來加以更新。
+
+</p>
+<p>
+    例如,Gmail 藉由新增其未讀訊息計數並將每封電子郵件的摘要新增至通知,藉此通知使用者新電子郵件已送達。
+而這稱為「堆疊」通知。詳情請參閱<a href="{@docRoot}design/patterns/notifications.html">通知</a>設計指南。
+
+
+</p>
+<p class="note">
+    <strong>注意:</strong>此 Gmail 功能需要「收件匣」擴充版面配置,也屬於 Android 4.1 以上版本才能使用的擴充通知功能。
+
+</p>
+<p>
+    以下各節說明如何更新及移除通知。
+</p>
+<h3 id="Updating">更新通知</h3>
+<p>
+    藉由呼叫
+{@link android.app.NotificationManager#notify(int, android.app.Notification) NotificationManager.notify()} 連同通知 ID 一起發出,即可將通知設定成可以更新。
+    如要在發出此通知後加以更新,可以更新或建立
+{@link android.support.v4.app.NotificationCompat.Builder} 物件,從中建置
+{@link android.app.Notification} 物件,並將
+{@link android.app.Notification} 連同您先前使用的相同 ID 一起發出。如果仍可看見先前的通知,系統會更新 {@link android.app.Notification} 物件內容中的通知。
+
+如果已關閉先前的通知,會改為建立新的通知。
+
+</p>
+<p>
+    以下程式碼片段示範如何更新通知以反映發生的事件數目。
+以堆疊通知的方式顯示摘要:
+</p>
+<pre>
+mNotificationManager =
+        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// Sets an ID for the notification, so it can be updated
+int notifyID = 1;
+mNotifyBuilder = new NotificationCompat.Builder(this)
+    .setContentTitle("New Message")
+    .setContentText("You've received new messages.")
+    .setSmallIcon(R.drawable.ic_notify_status)
+numMessages = 0;
+// Start of a loop that processes data and then notifies the user
+...
+    mNotifyBuilder.setContentText(currentText)
+        .setNumber(++numMessages);
+    // Because the ID remains unchanged, the existing notification is
+    // updated.
+    mNotificationManager.notify(
+            notifyID,
+            mNotifyBuilder.build());
+...
+</pre>
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="Removing">移除通知</h3>
+<p>
+    下列其中一個情況發生之前,都會看見通知:
+</p>
+<ul>
+    <li>
+        使用者個別關閉通知,或透過「全部清除」的方式關閉通知 (如果可以清除通知的話)。
+
+    </li>
+    <li>
+        使用者按一下通知,而您在建立通知時呼叫
+{@link android.support.v4.app.NotificationCompat.Builder#setAutoCancel setAutoCancel()}。
+
+    </li>
+    <li>
+        您對特定通知 ID 呼叫 {@link android.app.NotificationManager#cancel(int) cancel()}。這種方法也會刪除進行中的通知。
+
+    </li>
+    <li>
+        您呼叫 {@link android.app.NotificationManager#cancelAll() cancelAll()},將先前發出的所有通知移除。
+
+    </li>
+</ul>
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="NotificationResponse">啟動 Activity 時保留導覽</h2>
+<p>
+    當您從通知啟動 {@link android.app.Activity} 時,您必須保留使用者預期的導覽體驗。
+按一下  <i>[返回]</i> 應可將使用者從應用程式的一般工作流程帶回主螢幕,而按一下 
+ <i>[近期記錄]</i> 應會將
+{@link android.app.Activity} 顯示為個別的工作。如要保留導覽體驗,請以全新的工作啟動
+{@link android.app.Activity}。您該如何設定
+{@link android.app.PendingIntent} 以取得全新工作,取決於即將啟動的
+{@link android.app.Activity} 屬性。一般有兩種情況:
+</p>
+<dl>
+    <dt>
+        一般 Activity
+    </dt>
+    <dd>
+        您即將啟動的 {@link android.app.Activity} 屬於應用程式的一般工作流程。
+在這種情況下,設定 {@link android.app.PendingIntent}以啟動全新工作,再連同返回堆疊一起提供 {@link android.app.PendingIntent},可再次產生應用程式的一般
+
+ <i>返回</i> 行為。
+        <p>
+            Gmail 應用程式的通知可示範這種情況。當您點選某一封電子郵件訊息的通知後,您會看到訊息本身。
+輕觸 [返回]<b></b>可將您從 Gmail 帶回主螢幕,就像您剛才從主螢幕進入 Gmail,而不是從通知進入。
+
+
+        </p>
+        <p>
+            不論您所在的應用程式為何,當您輕觸通知時,都會發生這種情況。
+例如,如果您在 Gmail 撰寫訊息,而您點選某一封電子郵件的通知,就會立即前往該封電子郵件。
+輕觸  <i>[返回]</i>
+            會將您帶往收件匣,然後再到主螢幕,而不是到您正在撰寫的訊息。
+
+        </p>
+    </dd>
+    <dt>
+        特殊 Activity
+    </dt>
+    <dd>
+        只有從通知啟動這個 {@link android.app.Activity} 時,使用者才會看到它。
+        在某種意義上,{@link android.app.Activity}藉由提供難以在通知本身顯示的資訊來擴充通知。
+針對這種情況,請設定
+{@link android.app.PendingIntent} 以全新工作啟動。您不必建立返回堆疊,原因是啟動的
+{@link android.app.Activity} 不屬於應用程式的 Activity 流程。
+按一下  <i>[返回]</i> 還是會將使用者帶回主螢幕。
+
+    </dd>
+</dl>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="DirectEntry">設定一般 Activity PendingIntent</h3>
+<p>
+    如要設定會啟動直接項目
+{@link android.app.Activity} 的 {@link android.app.PendingIntent},請按照下列步驟操作:
+</p>
+<ol>
+    <li>
+        在宣示說明中定義您應用程式的 {@link android.app.Activity} 階層。
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                新增 Android 4.0.3 以下版本的支援。如要這樣做,請將
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code> 元素新增為
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 的下層物件,以指定您要啟動
+{@link android.app.Activity} 的上層物件。
+
+                <p>
+                    針對此元素設定
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a>="android.support.PARENT_ACTIVITY"</code>。
+                    設定
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#val">android:value</a>="&lt;parent_activity_name&gt;"</code>,其中 <code>&lt;parent_activity_name&gt;</code> 是上層
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 元素的
+<code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html#nm">android:name</a></code> 值。
+
+
+如需範例,請參閱下列 XML。
+                </p>
+            </li>
+            <li>
+                此外您還需要新增 Android 4.1 以上版本的支援。為此,請將 
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#parent">android:parentActivityName</a></code> 屬性新增到您要啟動 {@link android.app.Activity} 的
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 元素。
+
+
+            </li>
+        </ol>
+        <p>
+            最後的 XML 看起來會如下所示:
+        </p>
+<pre>
+&lt;activity
+    android:name=".MainActivity"
+    android:label="&#64;string/app_name" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MAIN" /&gt;
+        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+&lt;activity
+    android:name=".ResultActivity"
+    android:parentActivityName=".MainActivity"&gt;
+    &lt;meta-data
+        android:name="android.support.PARENT_ACTIVITY"
+        android:value=".MainActivity"/&gt;
+&lt;/activity&gt;
+</pre>
+    </li>
+    <li>
+        根據啟動
+{@link android.app.Activity} 的 {@link android.content.Intent} 建立返回堆疊:
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                建立 {@link android.content.Intent} 以啟動 {@link android.app.Activity}。
+            </li>
+            <li>
+                呼叫 {@link android.app.TaskStackBuilder#create
+TaskStackBuilder.create()} 來建立堆疊建立器。
+            </li>
+            <li>
+                呼叫
+{@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()} 將返回堆疊新增至堆疊建立器。
+                對於您在宣示說明中所定義階層中的每個 {@link android.app.Activity}
+而言,返回堆疊包含會啟動
+{@link android.app.Activity} 的 {@link android.content.Intent} 物件。此方法也會新增以全新工作啟動堆疊的旗標。
+
+                <p class="note">
+                    <strong>注意:</strong>雖然
+{@link android.support.v4.app.TaskStackBuilder#addParentStack addParentStack()}的引數是參考啟動的 {@link android.app.Activity},但呼叫的方法不會新增會啟動
+{@link android.app.Activity} 的
+{@link android.content.Intent},
+這項工作是在下個步驟中完成。
+                </p>
+            </li>
+            <li>
+                呼叫
+{@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()} 來新增會從通知啟動 {@link android.app.Activity} 的 {@link android.content.Intent}。
+
+                將您在第一個步驟中建立的 {@link android.content.Intent} 當成
+{@link android.support.v4.app.TaskStackBuilder#addNextIntent addNextIntent()} 的引數傳送。
+
+            </li>
+            <li>
+                如有必要,呼叫
+{@link android.support.v4.app.TaskStackBuilder#editIntentAt
+TaskStackBuilder.editIntentAt()} 在堆疊上將引數新增至 {@link android.content.Intent} 物件。當使用者使用以下方式導覽時,有必要確保目標
+{@link android.app.Activity} 可顯示有意義的資料:
+ <i>返回</i>。
+            </li>
+            <li>
+                呼叫
+{@link android.support.v4.app.TaskStackBuilder#getPendingIntent getPendingIntent()} 來取得 {@link android.app.PendingIntent} 以用於此返回堆疊。
+                接著,您可以使用這個 {@link android.app.PendingIntent} 當成
+{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+setContentIntent()} 的引數。
+            </li>
+        </ol>
+     </li>
+</ol>
+<p>
+    以下程式碼片段會示範程序:
+</p>
+<pre>
+...
+Intent resultIntent = new Intent(this, ResultActivity.class);
+TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
+// Adds the back stack
+stackBuilder.addParentStack(ResultActivity.class);
+// Adds the Intent to the top of the stack
+stackBuilder.addNextIntent(resultIntent);
+// Gets a PendingIntent containing the entire back stack
+PendingIntent resultPendingIntent =
+        stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
+...
+NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+builder.setContentIntent(resultPendingIntent);
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+mNotificationManager.notify(id, builder.build());
+</pre>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ExtendedNotification">設定特殊 Activity PendingIntent</h3>
+<p>
+    下一節說明如何設定特殊 Activity
+{@link android.app.PendingIntent}。
+</p>
+<p>
+    特殊 {@link android.app.Activity} 不需要返回堆疊,因此您不必在宣示說明中定義其
+{@link android.app.Activity} 階層,也不用呼叫
+{@link android.support.v4.app.TaskStackBuilder#addParentStack  addParentStack()}來建置返回堆疊。
+
+而是使用宣示說明設定 {@link android.app.Activity} 工作選項,並呼叫
+{@link android.app.PendingIntent#getActivity getActivity()} 來建立 {@link android.app.PendingIntent}:
+
+</p>
+<ol>
+    <li>
+        在您的宣示說明中,將下列屬性新增至 {@link android.app.Activity} 的
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> 元素
+
+        <dl>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#nm">android:name</a>="<i>activityclass</i>"</code>
+            </dt>
+            <dd>
+                Activity 的完整類別名稱。
+            </dd>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">android:taskAffinity</a>=""</code>
+            </dt>
+            <dd>
+                結合您在程式碼中設定的
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK} 旗標,可確保此 {@link android.app.Activity} 不會前往應用程式的預設工作。
+
+具有應用程式預設親和性的任何現有工作均不受影響。
+
+            </dd>
+            <dt>
+<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#exclude">android:excludeFromRecents</a>="true"</code>
+            </dt>
+            <dd>
+                從 [近期記錄] 中排除新的工作,<i></i>,避免使用者意外返回瀏覽。
+
+            </dd>
+        </dl>
+        <p>
+            以下程式碼片段顯示該元素:
+        </p>
+<pre>
+&lt;activity
+    android:name=".ResultActivity"
+...
+    android:launchMode="singleTask"
+    android:taskAffinity=""
+    android:excludeFromRecents="true"&gt;
+&lt;/activity&gt;
+...
+</pre>
+    </li>
+    <li>
+        建置並發出通知:
+        <ol style="list-style-type: lower-alpha;">
+            <li>
+                建立會啟動 {@link android.app.Activity} 的{@link android.content.Intent}。
+
+            </li>
+            <li>
+                使用旗標
+{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK} 與
+{@link android.content.Intent#FLAG_ACTIVITY_CLEAR_TASK FLAG_ACTIVITY_CLEAR_TASK} 呼叫
+{@link android.content.Intent#setFlags setFlags()} 來設定 {@link android.app.Activity} 以全新的空白工作啟動。
+
+            </li>
+            <li>
+                為 {@link android.content.Intent} 設定您需要的任何其他選項。
+            </li>
+            <li>
+                呼叫 {@link android.app.PendingIntent#getActivity getActivity()} 從{@link android.content.Intent} 中建立 {@link android.app.PendingIntent}。
+
+                接著,您可以使用這個 {@link android.app.PendingIntent} 當成
+{@link android.support.v4.app.NotificationCompat.Builder#setContentIntent
+setContentIntent()} 的引數。
+            </li>
+        </ol>
+    <p>
+        以下程式碼片段會示範程序:
+    </p>
+<pre>
+// Instantiate a Builder object.
+NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+// Creates an Intent for the Activity
+Intent notifyIntent =
+        new Intent(this, ResultActivity.class);
+// Sets the Activity to start in a new, empty task
+notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+                        | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+// Creates the PendingIntent
+PendingIntent notifyPendingIntent =
+        PendingIntent.getActivity(
+        this,
+        0,
+        notifyIntent,
+        PendingIntent.FLAG_UPDATE_CURRENT
+);
+
+// Puts the PendingIntent into the notification builder
+builder.setContentIntent(notifyPendingIntent);
+// Notifications are issued by sending them to the
+// NotificationManager system service.
+NotificationManager mNotificationManager =
+    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+// Builds an anonymous Notification object from the builder, and
+// passes it to the NotificationManager
+mNotificationManager.notify(id, builder.build());
+</pre>
+    </li>
+</ol>
+<!-- ------------------------------------------------------------------------------------------ -->
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="Progress">在通知中顯示進度</h2>
+<p>
+    通知可包含動畫進度指示器,向使用者顯示進行中操作的狀態。
+如果您隨時可預估操作花費的時間以及完成程度,可以使用形式「明確」的指示器 (進度列)。
+
+如果您無法預估操作的時間長度,請使用形式「不明確」的指示器 (Activity 指示器)。
+
+</p>
+<p>
+    進度指示器是使用平台的
+{@link android.widget.ProgressBar} 類別實作來顯示。
+</p>
+<p>
+    從 Android 4.0 開始,只要呼叫
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()} 即可在平台上使用進度指示器。對於先前的版本,您必須建立自己的自訂通知版面配置,當中還要包含 {@link android.widget.ProgressBar} 檢視。
+
+
+</p>
+<p>
+    下列各節說明如何使用
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()} 在通知中顯示進度。
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="FixedProgress">顯示時間長度固定的進度指示器</h3>
+<p>
+    如要顯示明確的進度列,請呼叫
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress
+setProgress(max, progress, false)} 將該列新增至您的通知,然後發出通知。隨著您的操作進行,
+<code>progress</code> 會增加並更新通知。操作結束時,
+<code>progress</code> 應該等於 <code>max</code>。呼叫
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress()} 的常見方法是將 <code>max</code> 設定為 100,然後新增 <code>progress</code> 做為操作的「完成百分比」值。
+
+
+</p>
+<p>
+    當操作完成時,您可以繼續顯示進度列或將其移除。不論是任何一種情況,都務必更新通知文字來指出操作已完成。
+
+    如要移除進度列,請呼叫 
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress
+setProgress(0, 0, false)}。例如:
+</p>
+<pre>
+...
+mNotifyManager =
+        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+mBuilder = new NotificationCompat.Builder(this);
+mBuilder.setContentTitle("Picture Download")
+    .setContentText("Download in progress")
+    .setSmallIcon(R.drawable.ic_notification);
+// Start a lengthy operation in a background thread
+new Thread(
+    new Runnable() {
+        &#64;Override
+        public void run() {
+            int incr;
+            // Do the "lengthy" operation 20 times
+            for (incr = 0; incr &lt;= 100; incr+=5) {
+                    // Sets the progress indicator to a max value, the
+                    // current completion percentage, and "determinate"
+                    // state
+                    mBuilder.setProgress(100, incr, false);
+                    // Displays the progress bar for the first time.
+                    mNotifyManager.notify(0, mBuilder.build());
+                        // Sleeps the thread, simulating an operation
+                        // that takes time
+                        try {
+                            // Sleep for 5 seconds
+                            Thread.sleep(5*1000);
+                        } catch (InterruptedException e) {
+                            Log.d(TAG, "sleep failure");
+                        }
+            }
+            // When the loop is finished, updates the notification
+            mBuilder.setContentText("Download complete")
+            // Removes the progress bar
+                    .setProgress(0,0,false);
+            mNotifyManager.notify(ID, mBuilder.build());
+        }
+    }
+// Starts the thread by calling the run() method in its Runnable
+).start();
+</pre>
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h3 id="ActivityIndicator">顯示持續性 Activity 指示器</h3>
+<p>
+    如要顯示不明確的 Activity 指示器,可利用
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, true)}(可忽略前兩個引數) 將這類指示器新增至通知,然後發出通知。
+結果是指示器會有和進度列相同的樣式,只不過其中的動畫會持續播放。
+
+</p>
+<p>
+    在操作一開始發出通知。動畫會持續播放,直到您修改通知為止。
+操作完成時,可呼叫
+{@link android.support.v4.app.NotificationCompat.Builder#setProgress setProgress(0, 0, false)},然後更新通知以移除 Activity 指示器。
+
+    請務必這樣做,不然即使操作完成後,動畫還是會繼續播放。此外,請務必變更通知文字來指出操作已完成。
+
+</p>
+<p>
+    如要查看 Activity 指示器如何運作,請參考上方的程式碼片段。找出下列幾行程式碼:
+</p>
+<pre>
+// Sets the progress indicator to a max value, the current completion
+// percentage, and "determinate" state
+mBuilder.setProgress(100, incr, false);
+// Issues the notification
+mNotifyManager.notify(0, mBuilder.build());
+</pre>
+<p>
+    用下列幾行取代您找到的程式碼:
+</p>
+<pre>
+ // Sets an activity indicator for an operation of indeterminate length
+mBuilder.setProgress(0, 0, true);
+// Issues the notification
+mNotifyManager.notify(0, mBuilder.build());
+</pre>
+
+<h2 id="metadata">通知中繼資料</h2>
+
+<p>通知會按照您以下列
+{@link android.support.v4.app.NotificationCompat.Builder} 方法指派的中繼資料加以排序:</p>
+
+<ul>
+    <li>當裝置處於「優先順序」模式時 (例如,如果您的通知代表來電、即時訊息或鬧鐘),{@link android.support.v4.app.NotificationCompat.Builder#setCategory(java.lang.String) setCategory()} 會指示系統如何處理您的應用程式通知。
+
+</li>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#setPriority(int) setPriority()} 會將具有優先順序欄位的通知設定為 {@code PRIORITY_MAX} 或 {@code PRIORITY_HIGH},而如果通知也有聲音或振動,就會以小型浮動視窗顯示。
+
+</li>
+    <li>{@link android.support.v4.app.NotificationCompat.Builder#addPerson(java.lang.String) addPerson()} 可讓您將人員名單新增至通知。
+您的應用程式可用這種方式通知系統,應該將來自指定人員的通知歸在同一組,或是將較重要人員發出的通知排序。
+
+</li>
+</ul>
+
+<div class="figure" style="width:230px">
+  <img src="{@docRoot}images/ui/notifications/heads-up.png" alt="" width="" height="" id="figure3" />
+  <p class="img-caption">
+    <strong>圖 3.</strong>顯示抬頭通知的全螢幕 Activity
+  </p>
+</div>
+
+<h2 id="Heads-up">抬頭通知</h2>
+
+<p>針對 Android 5.0 (API 級別 21),當裝置處於使用中 (也就是裝置已解鎖且螢幕處於開啟) 時,通知能以小型浮動視窗顯示 (也稱為「抬頭」<em></em>通知)。
+
+這些通知類似於精簡版的通知,只不過抬頭通知也會顯示動作按鈕。
+
+使用者不需要離開目前的應用程式,就可以執行動作或關閉抬頭通知。
+</p>
+
+<p>可能觸發抬頭通知的範例情況包括:</p>
+
+<ul>
+  <li>使用者的 Activity 處於全螢幕模式 (應用程式使用
+{@link android.app.Notification#fullScreenIntent});或者</li>
+  <li>通知擁有高優先順序,並使用鈴聲或振動
+</li>
+</ul>
+
+<h2 id="lockscreenNotification">鎖定螢幕通知</h2>
+
+<p>隨著 Android 5.0 (API 級別 21) 版發行,通知現在可以顯示在鎖定螢幕上。
+您的應用程式可使用此功能,提供媒體播放控制項和其他常見動作。
+使用者可以選擇是否透過 [設定] 在鎖定螢幕上顯示通知,您還可以指定是否能在鎖定螢幕上看見來自您應用程式的通知。
+</p>
+
+<h3 id="visibility">設定可見度</h3>
+
+<p>您的應用程式可控制安全鎖定螢幕上所顯示通知的詳細資料可見程度。
+您可以呼叫 {@link android.support.v4.app.NotificationCompat.Builder#setVisibility(int) setVisibility()},然後指定下列其中一個值:
+</p>
+
+<ul>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC}:顯示通知的完整內容。
+</li>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_SECRET}:不在鎖定螢幕上顯示此通知的任何部分。
+</li>
+    <li>{@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE}:顯示基本資訊,例如通知的圖示與內容標題,但隱藏通知的完整內容。
+</li>
+</ul>
+
+<p>已設定 {@link android.support.v4.app.NotificationCompat#VISIBILITY_PRIVATE} 時,您還可提供可隱藏特定詳細資料的通知內容替代版本。
+例如,SMS 應用程式可能會顯示「您有 3 則簡訊」<em></em>,但隱藏訊息內容與寄件者。
+
+如要提供此替代通知,可先使用 {@link android.support.v4.app.NotificationCompat.Builder} 來建立替代通知。
+建立私人通知物件時,透過 {@link android.support.v4.app.NotificationCompat.Builder#setPublicVersion(android.app.Notification) setPublicVersion()} 方法附加上替代通知。
+
+
+</p>
+
+<h3 id="controllingMedia">在鎖定螢幕上控制媒體播放</h3>
+
+<p>在 Android 5.0 (API 級別 21) 中,鎖定螢幕不會再依據 {@link android.media.RemoteControlClient} (現已淘汰) 顯示媒體控制項。
+利用 {@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()} 方法使用 {@link android.app.Notification.MediaStyle} 範本,將動作轉換成可點擊的圖示。
+
+
+</p>
+
+<p class="note"><strong>注意:</strong>支援程式庫不包含範本與 {@link android.app.Notification.Builder#addAction(android.app.Notification.Action) addAction()} 方法,因此這些功能只能在 Android 5.0 以上版本中執行。
+
+</p>
+
+<p>如要在 Android 5.0 的鎖定螢幕上顯示媒體播放控制項,請將可見度設定為 {@link android.support.v4.app.NotificationCompat#VISIBILITY_PUBLIC},如上所述。
+接著,新增動作並設定 {@link android.app.Notification.MediaStyle} 範本,如以下程式碼範例所示:
+
+</p>
+
+<pre>
+Notification notification = new Notification.Builder(context)
+    // Show controls on lock screen even when user hides sensitive content.
+    .setVisibility(Notification.VISIBILITY_PUBLIC)
+    .setSmallIcon(R.drawable.ic_stat_player)
+    // Add media control buttons that invoke intents in your media service
+    .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0
+    .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent)  // #1
+    .addAction(R.drawable.ic_next, "Next", nextPendingIntent)     // #2
+    // Apply the media style template
+    .setStyle(new Notification.MediaStyle()
+    .setShowActionsInCompactView(1 /* #1: pause button */)
+    .setMediaSession(mMediaSession.getSessionToken())
+    .setContentTitle("Wonderful music")
+    .setContentText("My Awesome Band")
+    .setLargeIcon(albumArtBitmap)
+    .build();
+</pre>
+
+<p class="note"><strong>注意:</strong>進一步實作控制媒體的 {@link android.media.RemoteControlClient} 已失效。
+如要進一步瞭解管理媒體工作階段與控制播放的新 API,請參閱<a href="{@docRoot}about/versions/android-5.0.html#MediaPlaybackControl">媒體播放控制項</a>。
+
+</p>
+
+
+<!-- ------------------------------------------------------------------------------------------ -->
+<h2 id="CustomNotification">自訂通知版面配置</h2>
+<p>
+    通知架構可讓您定義自訂通知版面配置,藉此定義 {@link android.widget.RemoteViews} 物件中的通知外觀。
+
+    自訂配置通知類似於一般通知,只不過這類通知是以 XML 版面配置檔案中定義的 {@link android.widget.RemoteViews} 為基礎。
+
+</p>
+<p>
+    自訂通知版面配置的可用高度取決於通知檢視。一般檢視的版面配置以 64 dp 為限,而擴充檢視的版面配置以 256 dp 為限。
+
+</p>
+<p>
+    如要定義自訂通知版面配置,請從具現化可擴大 XML 配置檔案的 
+{@link android.widget.RemoteViews} 物件著手。接著,改為呼叫 {@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()},而不是呼叫像是 {@link android.support.v4.app.NotificationCompat.Builder#setContentTitle setContentTitle()} 的方法。
+
+
+如要設定自訂通知中的內容詳細資料,可使用 {@link android.widget.RemoteViews} 中的方法來設定檢視下層物件的值:
+
+
+</p>
+<ol>
+    <li>
+        以個別檔案建立通知的 XML 版面配置。您可以使用任何檔案名稱,但副檔名必須為 <code>.xml</code>。
+
+    </li>
+    <li>
+        在您的應用程式中,使用 {@link android.widget.RemoteViews} 方法來定義通知的圖示與文字。
+藉由呼叫 {@link android.support.v4.app.NotificationCompat.Builder#setContent setContent()} 將這個 {@link android.widget.RemoteViews} 物件放入您的 {@link android.support.v4.app.NotificationCompat.Builder}。
+
+避免在您的 {@link android.widget.RemoteViews} 物件上設定背景 {@link android.graphics.drawable.Drawable},這是因為這樣做可能會使您的文字色彩變得無法閱讀。
+
+
+    </li>
+</ol>
+<p>
+    {@link android.widget.RemoteViews} 類別還包含您可用來將 {@link android.widget.Chronometer} 或 {@link android.widget.ProgressBar} 輕鬆新增至通知版面配置的方法。
+
+如要進一步瞭解如何為您的通知建立自訂版面配置,請參閱 {@link android.widget.RemoteViews} 參考文件。
+
+</p>
+<p class="caution">
+    <strong>注意:</strong>當您使用自訂通知版面配置時,請特別注意,確保您的自訂版面配置適用於不同的裝置方向或解析度。
+雖然此建議適用於所有檢視版面配置,但對於通知而言特別重要,原因是通知匣的空間十分有限。
+
+不要建立過於複雜的自訂版面配置,而且一定要在不同的設定中加以測試。
+
+</p>
+<!-- ------------------------------------------------------------------------------------------ -->
+<h4>針對自訂通知文字使用樣式資源</h4>
+<p>
+    自訂通知文字一律使用樣式資源。在不同的裝置與版本間可能會有不同的通知背景色彩,因此使用樣式資源可協助您將這點列入考量。
+
+從 Android 2.3 開始,系統已定義了標準通知版面配置資料的樣式。
+如果您在適用於 Android 2.3 以上版本的應用程式中使用相同的樣式,將可確保能在顯示背景上看見您的文字。
+
+</p>
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/ui/overview.jd b/docs/html-intl/intl/zh-tw/guide/topics/ui/overview.jd
new file mode 100644
index 0000000..44d05a8
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/overview.jd
@@ -0,0 +1,71 @@
+page.title=UI 總覽
+@jd:body
+
+
+<p>Android 應用程式中的所有使用者介面元素都是使用 {@link android.view.View} 與
+{@link android.view.ViewGroup} 物件。{@link android.view.View} 物件可在畫面上繪製使用者能與之互動的項目。
+{@link android.view.ViewGroup} 物件可保留其他
+{@link android.view.View} (與 {@link android.view.ViewGroup}) 物件,以定義介面的版面配置。
+</p>
+
+<p>Android 提供 {@link android.view.View} 與{@link
+android.view.ViewGroup} 子類別集合,提供一般輸入控制項 (例如按鈕與文字欄位) 及各種版面配置模型 (例如線性或相對)。
+</p>
+
+
+<h2 id="Layout">使用者介面版面配置</h2>
+
+<p>應用程式每個元件的使用者介面是使用 {@link
+android.view.View} 與 {@link android.view.ViewGroup} 物件的階層來定義,如圖 1 所示。每個檢視群組都是不可見容器,用以組織子檢視,而子檢視可能是輸入控制項或其他繪製部分 UI 的小工具。這個階層樹狀結構可依您的需求簡單或複雜化 (但簡化才會有最佳效能)。
+
+
+
+</p>
+
+<img src="{@docRoot}images/viewgroup.png" alt="" />
+<p class="img-caption"><strong>圖 1.</strong>定義 UI 版面配置的檢視階層圖例
+</p>
+
+<p>如要宣告版面配置,您可以在程式碼中將 {@link android.view.View} 物件具現化,然後開始建置樹狀結構,但最簡單也最有效的方法是使用 XML 檔案來定義您的版面配置。
+
+XML 提供類似於 HTML 且人類看得懂的版面配置結構。</p>
+
+<p>檢視的 XML 元素名稱相當於它個別代表的 Android 類別。因此,
+<code>&lt;TextView&gt;</code> 元素可在您的 UI 中建立 {@link android.widget.TextView} 小工具,而
+<code>&lt;LinearLayout&gt;</code> 元素可以建立 {@link android.widget.LinearLayout} 檢視群組。
+ </p>
+
+<p>例如,上面有一個文字檢視與按鈕的簡單垂直版面配置,看起來像這樣:</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="fill_parent" 
+              android:layout_height="fill_parent"
+              android:orientation="vertical" >
+    &lt;TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="I am a TextView" />
+    &lt;Button android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="I am a Button" />
+&lt;/LinearLayout>
+</pre>
+
+<p>當您載入應用程式中的版面配置資源時,Android 會將每個版面配置節點初始化成執行階段物件,您再用來定義其他行為、查詢物件狀態或修改版面配置。
+
+</p>
+
+<p>如需建立 UI 版面配置的完整指南,請參閱 <a href="declaring-layout.html">XML 版面配置</a>。
+
+
+  
+<h2 id="UIComponents">使用者介面元件</h2>
+
+<p>您不必使用 {@link android.view.View} 與 {@link
+android.view.ViewGroup} 物件來建置您的所有 UI。Android 提供的數個應用程式元件會提供標準 UI 版面配置,您只需要定義內容即可。
+這些 UI 元件各自有一組獨特的 API,如其各自的文件中所述,例如<a href="{@docRoot}guide/topics/ui/actionbar.html">動作列</a>、<a href="{@docRoot}guide/topics/ui/dialogs.html">對話方塊</a>及<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">狀態通知</a>。
+</p>
+
+
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/ui/settings.jd b/docs/html-intl/intl/zh-tw/guide/topics/ui/settings.jd
new file mode 100644
index 0000000..91ac929
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/settings.jd
@@ -0,0 +1,1202 @@
+page.title=設定
+page.tags=偏好設定、偏好設定 Activity、偏好設定片段
+
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>本文件內容</h2>
+<ol>
+  <li><a href="#Overview">總覽</a>
+    <ol>
+      <li><a href="#SettingTypes">偏好設定</a></li>
+    </ol>
+  </li>
+  <li><a href="#DefiningPrefs">在 XML 中定義偏好設定</a>
+    <ol>
+      <li><a href="#Groups">建立設定群組</a></li>
+      <li><a href="#Intents">使用意圖</a></li>
+    </ol>
+  </li>
+  <li><a href="#Activity">建立偏好設定 Activity</a></li>
+  <li><a href="#Fragment">使用偏好設定片段</a></li>
+  <li><a href="#Defaults">設定預設值</a></li>
+  <li><a href="#PreferenceHeaders">使用偏好設定標頭</a>
+    <ol>
+      <li><a href="#CreateHeaders">建立標頭檔案</a></li>
+      <li><a href="#DisplayHeaders">顯示標頭</a></li>
+      <li><a href="#BackCompatHeaders">使用偏好設定標頭支援舊版</a></li>
+    </ol>
+  </li>
+  <li><a href="#ReadingPrefs">讀取偏好設定</a>
+    <ol>
+      <li><a href="#Listening">接聽偏好設定變更</a></li>
+    </ol>
+  </li>
+  <li><a href="#NetworkUsage">管理網路使用量</a></li>
+  <li><a href="#Custom">建置自訂偏好設定</a>
+    <ol>
+      <li><a href="#CustomSelected">指定使用者介面</a></li>
+      <li><a href="#CustomSave">儲存設定值</a></li>
+      <li><a href="#CustomInitialize">初始化目前值</a></li>
+      <li><a href="#CustomDefault">提供預設值</a></li>
+      <li><a href="#CustomSaveState">儲存和還原偏好設定狀態</a></li>
+    </ol>
+  </li>
+</ol>
+
+<h2>重要類別</h2>
+<ol>
+  <li>{@link android.preference.Preference}</li>
+  <li>{@link android.preference.PreferenceActivity}</li>
+  <li>{@link android.preference.PreferenceFragment}</li>
+</ol>
+
+
+<h2>另請參閱</h2>
+<ol>
+  <li><a href="{@docRoot}design/patterns/settings.html">設定設計指南</a></li>
+</ol>
+</div>
+</div>
+
+
+
+
+<p>應用程式通常會包含可讓使用者修改應用程式功能和行為的設定。例如,有些應用程式可讓使用者指定是否啟用通知,或指定應用程式與雲端同步資料的頻率。
+
+</p>
+
+<p>如果您想要為應用程式提供設定,應該使用 Android {@link android.preference.Preference} API 建置與其他 Android 應用程式使用者體驗一致的介面 (包含系統設定)。
+
+本文件說明如何使用 {@link android.preference.Preference} API 建置應用程式設定。
+</p>
+
+<div class="note design">
+<p><strong>設定設計</strong></p>
+  <p>如要瞭解如何設計設定,請參閱<a href="{@docRoot}design/patterns/settings.html">設定</a>設計指南。</p>
+</div>
+
+
+<img src="{@docRoot}images/ui/settings/settings.png" alt="" width="435" />
+<p class="img-caption"><strong>圖 1.</strong>Android 簡訊應用程式設定的螢幕擷取畫面。
+選取一個 {@link android.preference.Preference} 定義的項目可以開啟介面變更設定。
+</p>
+
+
+
+
+<h2 id="Overview">總覽</h2>
+
+<p>現在不使用 {@link android.view.View} 物件建置使用者介面,而是使用您在 XML 檔案中所宣告 {@link android.preference.Preference} 類別的各種子類別來建置設定。
+
+</p>
+
+<p>一個 {@link android.preference.Preference} 物件是單一設定的建置區塊。
+每個 {@link android.preference.Preference} 都以項目的形式在清單中顯示,並為使用者提供適當的 UI 以修改設定。
+例如,{@link
+android.preference.CheckBoxPreference} 可以建立顯示核取方塊的清單項目,而 {@link
+android.preference.ListPreference} 可以建立開啟對話方塊 (其中包含選擇清單) 的項目。</p>
+
+<p>每個您新增的 {@link android.preference.Preference} 都會有一個對應的鍵值配對,系統可使用此鍵值對將設定儲存到您應用程式設定的預設 {@link android.content.SharedPreferences} 檔案。
+
+當使用者變更設定,系統會為您更新 {@link android.content.SharedPreferences} 檔案中的對應值。
+您唯一需要與關聯的 {@link android.content.SharedPreferences} 檔案直接互動的時候,是當您需要讀取值才能根據使用者設定判斷應用程式行為時。
+
+</p>
+
+<p>儲存在 {@link android.content.SharedPreferences} 的每個設定值可以是下列其中一個資料類型:
+</p>
+
+<ul>
+  <li>布林值</li>
+  <li>浮動</li>
+  <li>整數</li>
+  <li>長整數</li>
+  <li>字串</li>
+  <li>字串 {@link java.util.Set}</li>
+</ul>
+
+<p>由於您的應用程式設定 UI 是使用 {@link android.preference.Preference} 物件,而不是 {@link android.view.View} 物件建置,因此您需要使用專門的 {@link android.app.Activity} 或 {@link android.app.Fragment} 子類別來顯示清單設定:
+
+
+</p>
+
+<ul>
+  <li>如果應用程式支援的 Android 版本早於 3.0 (API 級別 10 及較早版本),您必須以 {@link android.preference.PreferenceActivity} 類別延伸的形式建置 Activity。
+</li>
+  <li>在 Android 3.0 及更新版本上,您應該使用傳統 {@link android.app.Activity},它託管了顯示應用程式設定的 {@link android.preference.PreferenceFragment}。
+
+然而,當您有多個設定群組時,還可以使用 {@link android.preference.PreferenceActivity} 在大螢幕建立兩個面板的版面配置。
+</li>
+</ul>
+
+<p>如何設定 {@link android.preference.PreferenceActivity} 和 {@link
+android.preference.PreferenceFragment} 執行個體在<a href="#Activity">建立偏好設定 Activity</a> 和<a href="#Fragment">使用偏好設定片段</a>小節中有相關說明。
+</p>
+
+
+<h3 id="SettingTypes">偏好設定</h3>
+
+<p>應用程式的每個設定都會以 {@link
+android.preference.Preference} 類別的特定子類別代表。每個子類別包含一組核心屬性,可讓您為設定指定標題等項目和預設值。
+每個子類別還提供自己專屬的屬性和使用者介面。
+例如,圖 1 顯示簡訊應用程式設定的螢幕擷取畫面。
+設定畫面中的每個清單項目都由不同的 {@link
+android.preference.Preference} 物件支援。</p>
+
+<p>下列為幾個最常見的偏好設定:</p>
+
+<dl>
+  <dt>{@link android.preference.CheckBoxPreference}</dt>
+  <dd>為啟用或停用的設定顯示含有核取方塊的項目。儲存的值是布林值 (如果選取 <code>true</code>)。
+</dd>
+
+  <dt>{@link android.preference.ListPreference}</dt>
+  <dd>開啟含有選項按鈕清單的對話方塊。儲存的值可以是任何支援的值類型 (如上所列)。
+</dd>
+
+  <dt>{@link android.preference.EditTextPreference}</dt>
+  <dd>開啟含有 {@link android.widget.EditText} 小工具的對話方塊。儲存的值是 {@link
+java.lang.String}。</dd>
+</dl>
+
+<p>請參閱 {@link android.preference.Preference} 類別,以取得所有其他子類別及其對應屬性的清單。
+</p>
+
+<p>當然,內建類別無法滿足所有需要,您的應用程式可能需要更專門的功能。
+例如,平台目前無法提供 {@link
+android.preference.Preference} 類別以選取數字或日期。因此,您可能需要定義自己的 {@link android.preference.Preference} 子類別。
+如需執行此操作的協助,請參閱<a href="#Custom">建置自訂偏好設定</a>。</p>
+
+
+
+<h2 id="DefiningPrefs">在 XML 中定義偏好設定</h2>
+
+<p>雖然您可以在執行階段將新的 {@link android.preference.Preference} 物件具現化,但您仍應該在 XML 中定義設定清單,並在其中包含 {@link android.preference.Preference} 物件的階層。
+
+使用 XML 檔案定義設定集合是較建議的做法,因為該檔案提供的易讀結構很容易更新。
+而且,雖然您仍然可以在執行階段修改集合,但您的應用程式設定通常是預先定義好的。
+</p>
+
+<p>每個 {@link android.preference.Preference} 子類別都可透過與類別名稱相符的 XML 元素進行宣告,例如 {@code &lt;CheckBoxPreference&gt;}。
+</p>
+
+<p>您必須將 XML 檔案儲存在 {@code res/xml/} 目錄中。雖然您可以自由命名檔案,但在傳統上會命名為 {@code preferences.xml}。
+您通常只需要一個檔案,因為階層 (會開啟自己的設定清單) 中的子目錄是透過 {@link android.preference.PreferenceScreen} 的巢狀執行個體進行宣告。
+
+</p>
+
+<p class="note"><strong>注意:</strong>如果您想要為設定建立多個面板的版面配置,則您需要為每個片段準備個別的 XML 檔案。
+</p>
+
+<p>XML 檔案的根節點必須是 {@link android.preference.PreferenceScreen
+&lt;PreferenceScreen&gt;} 元素。您要將每個 {@link
+android.preference.Preference} 新增到此元素內。您在 {@link android.preference.PreferenceScreen &lt;PreferenceScreen&gt;} 元素內新增的每個子項會在設定清單中顯示為單一項目。
+
+</p>
+
+<p>例如:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;CheckBoxPreference
+        android:key="pref_sync"
+        android:title="@string/pref_sync"
+        android:summary="@string/pref_sync_summ"
+        android:defaultValue="true" />
+    &lt;ListPreference
+        android:dependency="pref_sync"
+        android:key="pref_syncConnectionType"
+        android:title="@string/pref_syncConnectionType"
+        android:dialogTitle="@string/pref_syncConnectionType"
+        android:entries="@array/pref_syncConnectionTypes_entries"
+        android:entryValues="@array/pref_syncConnectionTypes_values"
+        android:defaultValue="@string/pref_syncConnectionTypes_default" />
+&lt;/PreferenceScreen>
+</pre>
+
+<p>此範例中有一個 {@link android.preference.CheckBoxPreference} 和一個 {@link
+android.preference.ListPreference}。這兩個項目都包含下列三個屬性:</p>
+
+<dl>
+  <dt>{@code android:key}</dt>
+  <dd>需要這個屬性才能保留資料值的偏好設定。它會指定當系統將此設定值儲存於 {@link
+android.content.SharedPreferences} 時要使用的唯一索引鍵 (字串)。
+ 
+  <p>只有在下列情況下不需要此屬性:<em></em>偏好設定為 {@link android.preference.PreferenceCategory} 或 {@link android.preference.PreferenceScreen},或者偏好設定指定 {@link android.content.Intent} 進行呼叫 (搭配 <a href="#Intents">{@code &lt;intent&gt;}</a> 元素) 或 {@link android.app.Fragment} 進行顯示 (搭配 <a href="{@docRoot}reference/android/preference/Preference.html#attr_android:fragment">{@code
+android:fragment}</a> 屬性)。
+
+</p>
+  </dd>
+  <dt>{@code android:title}</dt>
+  <dd>這可為設定提供使用者可見的名稱。</dd>
+  <dt>{@code android:defaultValue}</dt>
+  <dd>這可指定系統在 {@link
+android.content.SharedPreferences} 檔案中應設定的初始值。您應該為所有設定提供預設值。
+</dd>
+</dl>
+
+<p>如需所有其他支援的屬性相關資訊,請參閱 {@link
+android.preference.Preference} (及個別子類別) 文件。</p>
+
+
+<div class="figure" style="width:300px">
+  <img src="{@docRoot}images/ui/settings/settings-titles.png" alt="" />
+  <p class="img-caption"><strong>圖 2.</strong>設定含有標題的類別。
+ <br/><b>1.</b>類別以 {@link
+android.preference.PreferenceCategory &lt;PreferenceCategory&gt;} 元素指定。 <br/><b>2.</b>標題以 {@code android:title} 屬性指定。
+</p>
+</div>
+
+
+<p>如果您的設定清單超過約 10 個項目,您可以新增標題來定義設定群組,或在分開的畫面顯示這些群組。
+
+這些選項在下列幾節有詳細的描述。</p>
+
+
+<h3 id="Groups">建立設定群組</h3>
+
+<p>如果您的清單有 10 個以上的項目,掃描、理解和處理這些項目對使用者而言可能會很困難。
+如要解決這個問題,可將部分或所有設定分成不同的群組,有效地將一長串清單分成多個簡短的清單。
+
+一組包含相關設定的群組可以下列其中一種方式顯示:</p>
+
+<ul>
+  <li><a href="#Titles">使用標題</a></li>
+  <li><a href="#Subscreens">使用子畫面</a></li>
+</ul>
+
+<p>您可以使用上述一種或兩種分組技巧來整理您的應用程式設定。決定要使用哪種方法或如何分割設定時,您應該要依照 Android 設計<a href="{@docRoot}design/patterns/settings.html">設定</a>指南中的指導方針進行。
+
+</p>
+
+
+<h4 id="Titles">使用標題</h4>
+
+<p>如果您想要在設定群組間使用標題區分 (如圖 2 所示),將 {@link android.preference.Preference} 物件的每個群組放入 {@link
+android.preference.PreferenceCategory}。
+</p>
+
+<p>例如:</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;PreferenceCategory 
+        android:title="&#64;string/pref_sms_storage_title"
+        android:key="pref_key_storage_settings">
+        &lt;CheckBoxPreference
+            android:key="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_auto_delete"
+            android:title="&#64;string/pref_title_auto_delete"
+            android:defaultValue="false"... />
+        &lt;Preference 
+            android:key="pref_key_sms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_sms_delete"... />
+        &lt;Preference 
+            android:key="pref_key_mms_delete_limit"
+            android:dependency="pref_key_auto_delete"
+            android:summary="&#64;string/pref_summary_delete_limit"
+            android:title="&#64;string/pref_title_mms_delete" ... />
+    &lt;/PreferenceCategory>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h4 id="Subscreens">使用子畫面</h4>
+
+<p>如果您想將設定群組放入子畫面 (如圖 3 所示),將 {@link android.preference.Preference} 物件的群組放入 {@link
+android.preference.PreferenceScreen}。
+</p>
+
+<img src="{@docRoot}images/ui/settings/settings-subscreen.png" alt="" />
+<p class="img-caption"><strong>圖 3.</strong>設定子畫面。{@code
+&lt;PreferenceScreen&gt;} 元素建立的項目會在選取時開啟獨立的清單以顯示巢狀設定。
+</p>
+
+<p>例如:</p>
+
+<pre>
+&lt;PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;!-- opens a subscreen of settings -->
+    &lt;PreferenceScreen
+        android:key="button_voicemail_category_key"
+        android:title="&#64;string/voicemail"
+        android:persistent="false">
+        &lt;ListPreference
+            android:key="button_voicemail_provider_key"
+            android:title="&#64;string/voicemail_provider" ... />
+        &lt;!-- opens another nested subscreen -->
+        &lt;PreferenceScreen
+            android:key="button_voicemail_setting_key"
+            android:title="&#64;string/voicemail_settings"
+            android:persistent="false">
+            ...
+        &lt;/PreferenceScreen>
+        &lt;RingtonePreference
+            android:key="button_voicemail_ringtone_key"
+            android:title="&#64;string/voicemail_ringtone_title"
+            android:ringtoneType="notification" ... />
+        ...
+    &lt;/PreferenceScreen>
+    ...
+&lt;/PreferenceScreen>
+</pre>
+
+
+<h3 id="Intents">使用意圖</h3>
+
+<p>在某些情況下,您可能會希望偏好設定項目開啟不同的 Activity 而不是設定畫面,例如,開啟網路瀏覽器以檢視網頁。
+如要在使用者選取偏好設定項目時呼叫 {@link
+android.content.Intent},請新增 {@code &lt;intent&gt;} 元素做為對應 {@code &lt;Preference&gt;} 元素的子項。
+</p>
+
+<p>例如,您可以使用下列方法透過偏好設定項目開啟網頁:</p>
+
+<pre>
+&lt;Preference android:title="@string/prefs_web_page" >
+    &lt;intent android:action="android.intent.action.VIEW"
+            android:data="http://www.example.com" />
+&lt;/Preference>
+</pre>
+
+<p>您可以使用下列屬性建立隱含和明確意圖:</p>
+
+<dl>
+  <dt>{@code android:action}</dt>
+    <dd>根據 {@link android.content.Intent#setAction setAction()} 方法指派的動作。
+</dd>
+  <dt>{@code android:data}</dt>
+    <dd>根據 {@link android.content.Intent#setData setData()} 方法指派的資料。</dd>
+  <dt>{@code android:mimeType}</dt>
+    <dd>根據 {@link android.content.Intent#setType setType()} 方法指派的 MIME 類型。
+</dd>
+  <dt>{@code android:targetClass}</dt>
+    <dd>根據 {@link android.content.Intent#setComponent
+setComponent()} 方法指派的元件名稱類別部分。</dd>
+  <dt>{@code android:targetPackage}</dt>
+    <dd>根據 {@link
+android.content.Intent#setComponent setComponent()} 方法指派的元件名稱封裝部分。</dd>
+</dl>
+
+
+
+<h2 id="Activity">建立偏好設定 Activity</h2>
+
+<p>如要在 Activity 中顯示設定,延伸 {@link
+android.preference.PreferenceActivity} 類別。這是傳統 {@link
+android.app.Activity} 類別的延伸,可根據 {@link
+android.preference.Preference} 物件的階層顯示設定清單。當使用者進行變更時,{@link android.preference.PreferenceActivity} 會自動保留與每個 {@link
+android.preference.Preference} 關聯的設定。
+</p>
+
+<p class="note"><strong>注意:</strong>如果您針對 Android 3.0 及更新版本開發應用程式,您應該改為使用 {@link android.preference.PreferenceFragment}。
+前往下一個<a href="#Fragment">使用偏好設定片段</a>章節。
+</p>
+
+<p>最需要注意的一件事就是,不要在 {@link
+android.preference.PreferenceActivity#onCreate onCreate()} 呼叫期間載入檢視的版面配置。您應該要呼叫 {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()},將您在 XML 檔案中宣告的偏好設定新增到 Activity 中。
+例如,下列為功能 {@link android.preference.PreferenceActivity} 所需的基本程式碼:
+</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.preferences);
+    }
+}
+</pre>
+
+<p>事實上,這個程式碼對某些應用程式而言已經足夠,因為使用者修改偏好設定後,系統會將變更儲存到預設 {@link android.content.SharedPreferences} 檔案,當您需要檢查使用者設定時,您的其他應用程式元件就能進行讀取。
+
+但是,許多應用程式需要更多一點程式碼,以接聽對偏好設定進行的變更。
+如需在 {@link android.content.SharedPreferences} 檔案接聽變更的相關資訊,請參閱<a href="#ReadingPrefs">讀取偏好設定</a>。
+
+</p>
+
+
+
+
+<h2 id="Fragment">使用偏好設定片段</h2>
+
+<p>如果您針對 Android 3.0 (API 級別 11) 及更新版本進行開發,您應該使用 {@link
+android.preference.PreferenceFragment} 顯示 {@link android.preference.Preference} 物件清單。
+您可以將 {@link android.preference.PreferenceFragment} 新增到任何 Activity &mdash; 您不需要使用 {@link android.preference.PreferenceActivity}。
+</p>
+
+<p><a href="{@docRoot}guide/components/fragments.html">片段</a>單就 Activity 而言,可為您的應用程式提供更有彈性的架構,無論您建置哪一種 Activity 都一樣。
+
+因此,我們建議您盡可能使用 {@link
+android.preference.PreferenceFragment} 來控制設定的顯示,而不要使用 {@link
+android.preference.PreferenceActivity}。</p>
+
+<p>實作 {@link android.preference.PreferenceFragment} 可以很簡單,只要定義 {@link android.preference.PreferenceFragment#onCreate onCreate()} 方法,透過 {@link android.preference.PreferenceFragment#addPreferencesFromResource
+addPreferencesFromResource()} 載入偏好設定檔案。
+
+例如:</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Load the preferences from an XML resource
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+}
+</pre>
+
+<p>之後,您可以將此片段新增至 {@link android.app.Activity},做法與任何其他
+{@link android.app.Fragment} 一樣。例如:</p>
+
+<pre>
+public class SettingsActivity extends Activity {
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Display the fragment as the main content.
+        getFragmentManager().beginTransaction()
+                .replace(android.R.id.content, new SettingsFragment())
+                .commit();
+    }
+}
+</pre>
+
+<p class="note"><strong>注意:</strong>{@link android.preference.PreferenceFragment} 沒有自己的 {@link android.content.Context} 物件。
+如果您需要 {@link android.content.Context} 物件,可以呼叫 {@link android.app.Fragment#getActivity()}。
+不過,必須小心,只能在片段附加到 Activity 時才能呼叫 {@link android.app.Fragment#getActivity()}。
+如果未附加片段,或是在生命週期期間中斷連結,{@link
+android.app.Fragment#getActivity()} 將傳回 null。
+</p>
+
+
+<h2 id="Defaults">設定預設值</h2>
+
+<p>您建立的偏好設定可能為應用程式定義了一些重要的行為,因此當使用者第一次開啟您的應用程式時,務必使用每個 {@link android.preference.Preference} 預設值來初始化關聯的 {@link android.content.SharedPreferences} 檔案。
+
+
+</p>
+
+<p>您必須要做的第一件事,就是使用 {@code android:defaultValue} 屬性指定 XML 檔案中每個 {@link
+android.preference.Preference} 物件的預設值。
+值可以是適用於對應 {@link android.preference.Preference} 物件的任何資料類型。
+例如:
+</p>
+
+<pre>
+&lt;!-- default value is a boolean -->
+&lt;CheckBoxPreference
+    android:defaultValue="true"
+    ... />
+
+&lt;!-- default value is a string -->
+&lt;ListPreference
+    android:defaultValue="@string/pref_syncConnectionTypes_default"
+    ... />
+</pre>
+
+<p>之後,從您應用程式主 Activity &mdash; 以及使用者第一次進入您應用程式所使用的任何其他 Activity &mdash; 的 {@link android.app.Activity#onCreate onCreate()} 方法呼叫 {@link android.preference.PreferenceManager#setDefaultValues
+setDefaultValues()}:
+
+</p>
+
+<pre>
+PreferenceManager.setDefaultValues(this, R.xml.advanced_preferences, false);
+</pre>
+
+<p>在 {@link android.app.Activity#onCreate onCreate()} 期間呼叫它,可確保您的應用程式正確地以預設值初始化,您的應用程式可能需要讀取這些預設值,才能判斷一些行為 (例如,使用行動網路時是否可下載資料)。
+
+
+</p>
+
+<p>這個方法採用三種引數:</p>
+<ul>
+  <li>您的應用程式 {@link android.content.Context}。</li>
+  <li>您要設定預設值之偏好設定 XML 檔案的資源 ID。</li>
+  <li>布林值指出預設值是否要設定一次以上。
+<p>如果為 <code>false</code>,系統只會在過去從未呼叫此方法時設定預設值 (或者預設值共用偏好設定檔案的 {@link android.preference.PreferenceManager#KEY_HAS_SET_DEFAULT_VALUES} 為 false)。
+
+</p></li>
+</ul>
+
+<p>只要將第三個引數設為 <code>false</code>,您可以在每次 Activity 啟動時很安全地呼叫此方法,而不會將使用者儲存的偏好設定重設為預設值。
+
+不過,如果您將它設為 <code>true</code>,會將任何之前的值覆寫為預設值。
+</p>
+
+
+
+<h2 id="PreferenceHeaders">使用偏好設定標頭</h2>
+
+<p>在少數情況下,您可能會想將設定設計為只在第一個畫面顯示<a href="#Subscreens">子畫面</a>清單(與系統設定應用程式一樣,如圖 4 和 5 所示)。
+
+當您為 Android 3.0 及更新版本開發這類設計時,您應該使用 Android 3.0 的新「標頭」功能,而不是使用巢狀 {@link android.preference.PreferenceScreen} 元素建置子畫面。
+
+</p>
+
+<p>如要使用標頭建置設定,您必須:</p>
+<ol>
+  <li>將每個設定群組分成不同的 {@link
+android.preference.PreferenceFragment} 執行個體。也就是說,每個設定群組需要一個獨立的 XML 檔案。
+</li>
+  <li>建立一個 XML 標頭檔案,其中列出每個設定群組以及宣告哪些片段包含對應的設定清單。
+</li>
+  <li>延伸 {@link android.preference.PreferenceActivity} 類別以託管您的設定。</li>
+  <li>實作 {@link
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} 回呼以指定標頭檔案。
+</li>
+</ol>
+
+<p>使用這個設計最大的好處在於在大螢幕執行時,
+{@link android.preference.PreferenceActivity} 會自動顯示兩個面板的版面配置,如圖 4 所示。</p>
+
+<p>即使應用程式支援的 Android 版本較 3.0 舊,您還是可以建置應用程式在新版的裝置上使用 {@link android.preference.PreferenceFragment} 顯示兩個面板,同時仍然支援舊版裝置上的傳統多畫面階層 (請參閱<a href="#BackCompatHeaders">使用偏好設定標頭支援舊版</a>)。
+
+
+
+</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-tablet.png" alt="" />
+<p class="img-caption"><strong>圖 4.</strong>含標頭的兩個面板版面配置。 <br/><b>1.</b>標頭以 XML 標頭檔案定義。
+ <br/><b>2.</b>每個設定群組是由標頭檔案 {@code &lt;header&gt;} 元素指定的{@link android.preference.PreferenceFragment} 所定義。
+
+</p>
+
+<img src="{@docRoot}images/ui/settings/settings-headers-handset.png" alt="" />
+<p class="img-caption"><strong>圖 5.</strong>含設定標頭的手機裝置。選取項目後,關聯的 {@link android.preference.PreferenceFragment} 會取代標頭。
+
+</p>
+
+
+<h3 id="CreateHeaders" style="clear:left">建立標頭檔案</h3>
+
+<p>您標頭清單中的每個設定群組是由根 {@code &lt;preference-headers&gt;} 元素中的單一 {@code &lt;header&gt;} 元素指定。
+例如:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsActivity$SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;!-- key/value pairs can be included as arguments for the fragment. -->
+        &lt;extra android:name="someKey" android:value="someHeaderValue" />
+    &lt;/header>
+&lt;/preference-headers>
+</pre>
+
+<p>有了 {@code android:fragment} 屬性,每個標頭會宣告當使用者選取標頭時,應該開啟的 {@link
+android.preference.PreferenceFragment} 執行個體。</p>
+
+<p>{@code &lt;extras&gt;} 元素可讓您將鍵值配對傳送到 {@link
+android.os.Bundle} 中的片段。片段可以透過呼叫 {@link
+android.app.Fragment#getArguments()} 擷取引數。您可以因各種理由將引數傳送到片段,但其中一個最好的理由是針對每個群組重複使用 {@link
+android.preference.PreferenceFragment} 中相同的子類別,並使用引數指定應載入片段的偏好設定 XML 檔案。
+
+</p>
+
+<p>例如,當每個標頭使用 {@code "settings"} 索引鍵定義 {@code &lt;extra&gt;} 引數時,下列片段可在多個設定群組重複使用:
+</p>
+
+<pre>
+public static class SettingsFragment extends PreferenceFragment {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        String settings = getArguments().getString("settings");
+        if ("notifications".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_wifi);
+        } else if ("sync".equals(settings)) {
+            addPreferencesFromResource(R.xml.settings_sync);
+        }
+    }
+}
+</pre>
+
+
+
+<h3 id="DisplayHeaders">顯示標頭</h3>
+
+<p>如要顯示偏好設定標頭,必須實作 {@link
+android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()} 回呼方法,並呼叫 {@link android.preference.PreferenceActivity#loadHeadersFromResource
+loadHeadersFromResource()}。
+例如:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity {
+    &#64;Override
+    public void onBuildHeaders(List&lt;Header> target) {
+        loadHeadersFromResource(R.xml.preference_headers, target);
+    }
+}
+</pre>
+
+<p>當使用者從標頭清單選取項目時,系統會開啟關聯的 {@link
+android.preference.PreferenceFragment}。</p>
+
+<p class="note"><strong>注意:</strong>使用偏好設定標頭時,{@link
+android.preference.PreferenceActivity} 的子類別不需要實作 {@link
+android.preference.PreferenceActivity#onCreate onCreate()} 方法,這是因為 Activity 唯一需要做的工作就是載入標頭。
+</p>
+
+
+<h3 id="BackCompatHeaders">使用偏好設定標頭支援舊版</h3>
+
+<p>如果您應用程式支援的 Android 版本比 3.0 舊,您仍然可以在 Android 3.0 及更新版本執行時,使用標頭提供兩個面板的版面配置。
+您只需要建立一個額外的偏好設定 XML 檔案,該檔案要使用行為與標頭項目 (供舊版 Android 使用) 一樣的基本 {@link android.preference.Preference
+&lt;Preference&gt;} 元素。
+
+</p>
+
+<p>但是,不會開啟新的 {@link android.preference.PreferenceScreen},每個 {@link
+android.preference.Preference &lt;Preference&gt;} 元素會傳送一個 {@link android.content.Intent} 到 {@link android.preference.PreferenceActivity},以指定要載入的偏好設定 XML 檔案。
+
+</p>
+
+<p>例如,下列為使用 Android 3.0及更新版本的偏好設定標頭 XML 檔案 ({@code res/xml/preference_headers.xml}):
+</p> 
+
+<pre>
+&lt;preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentOne"
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one" />
+    &lt;header 
+        android:fragment="com.example.prefs.SettingsFragmentTwo"
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" />
+&lt;/preference-headers>
+</pre>
+
+<p>而,這裡有個偏好設定檔案為 Android 3.0 以下版本提供相同的標頭 ({@code res/xml/preference_headers_legacy.xml}):
+</p>
+
+<pre>
+&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;Preference 
+        android:title="@string/prefs_category_one"
+        android:summary="@string/prefs_summ_category_one"  >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_ONE" />
+    &lt;/Preference>
+    &lt;Preference 
+        android:title="@string/prefs_category_two"
+        android:summary="@string/prefs_summ_category_two" >
+        &lt;intent 
+            android:targetPackage="com.example.prefs"
+            android:targetClass="com.example.prefs.SettingsActivity"
+            android:action="com.example.prefs.PREFS_TWO" />
+    &lt;/Preference>
+&lt;/PreferenceScreen>
+</pre>
+
+<p>因為 Android 3.0 已加入對 {@code &lt;preference-headers&gt;} 的支援,系統只會在 Androd 3.0 或更新版本執行時,才會呼叫 {@link
+android.preference.PreferenceActivity} 中的 {@link android.preference.PreferenceActivity#onBuildHeaders onBuildHeaders()}。
+如要載入「舊版」標頭檔案 ({@code preference_headers_legacy.xml}),您必須檢查 Android 版本,如果版本比 Android 3.0 更舊 ({@link
+android.os.Build.VERSION_CODES#HONEYCOMB}),呼叫 {@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} 以載入舊版標頭檔案。
+
+
+例如:</p>
+
+<pre>
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    ...
+
+    if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+
+// Called only on Honeycomb and later
+&#64;Override
+public void onBuildHeaders(List&lt;Header> target) {
+   loadHeadersFromResource(R.xml.preference_headers, target);
+}
+</pre>
+
+<p>最後一件要做的事,是處理傳送到 Activity 的 {@link android.content.Intent},以識別要載入的偏好設定檔案。
+擷取意圖的動作,並將它與偏好設定 XML {@code &lt;intent&gt;} 標籤中使用的已知動作字串進行比對:
+</p>
+
+<pre>
+final static String ACTION_PREFS_ONE = "com.example.prefs.PREFS_ONE";
+...
+
+&#64;Override
+public void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+
+    String action = getIntent().getAction();
+    if (action != null &amp;&amp; action.equals(ACTION_PREFS_ONE)) {
+        addPreferencesFromResource(R.xml.preferences);
+    }
+    ...
+
+    else if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
+        // Load the legacy preferences headers
+        addPreferencesFromResource(R.xml.preference_headers_legacy);
+    }
+}
+</pre>
+
+<p>請注意,{@link
+android.preference.PreferenceActivity#addPreferencesFromResource addPreferencesFromResource()} 的連續呼叫會將所有偏好設定堆疊在單一清單中,因此請確定將條件鏈結到 else-if 陳述式時只會呼叫它一次。
+
+</p>
+
+
+
+
+
+<h2 id="ReadingPrefs">讀取偏好設定</h2>
+
+<p>根據預設,透過呼叫靜態方法 {@link
+android.preference.PreferenceManager#getDefaultSharedPreferences
+PreferenceManager.getDefaultSharedPreferences()},您應用程式中的所有偏好設定會儲存可從應用程式內任何地方存取的檔案中。
+這會傳回 {@link
+android.content.SharedPreferences} 物件,其中包含與您 {@link
+android.preference.PreferenceActivity} 使用之 {@link android.preference.Preference} 物件關聯的所有鍵值配對。
+</p>
+
+<p>例如,下列說明如何從應用程式中的任何其他 Activity 讀取其中一個偏好設定值:
+</p>
+
+<pre>
+SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
+String syncConnPref = sharedPref.getString(SettingsActivity.KEY_PREF_SYNC_CONN, "");
+</pre>
+
+
+
+<h3 id="Listening">接聽偏好設定變更</h3>
+
+<p>使用者變更其中一個偏好設定後,您想要立即收到通知的原因有好幾個。
+如要在任何偏好設定發生變更時收到回呼,實作 {@link android.content.SharedPreferences.OnSharedPreferenceChangeListener
+SharedPreference.OnSharedPreferenceChangeListener} 介面,並呼叫 {@link
+android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
+registerOnSharedPreferenceChangeListener()} 為 {@link android.content.SharedPreferences} 物件註冊接聽器。
+
+</p>
+
+<p>介面只有一個回呼方式 {@link
+android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged
+onSharedPreferenceChanged()},而且在 Activity 中實作介面可能對您來說會更為容易。
+例如:</p>
+
+<pre>
+public class SettingsActivity extends PreferenceActivity
+                              implements OnSharedPreferenceChangeListener {
+    public static final String KEY_PREF_SYNC_CONN = "pref_syncConnectionType";
+    ...
+
+    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
+        String key) {
+        if (key.equals(KEY_PREF_SYNC_CONN)) {
+            Preference connectionPref = findPreference(key);
+            // Set summary to be the user-description for the selected value
+            connectionPref.setSummary(sharedPreferences.getString(key, ""));
+        }
+    }
+}
+</pre>
+
+<p>在此範例中,方法會檢查是否是針對已知的偏好設定索引鍵設定進行變更。它會呼叫 {@link android.preference.PreferenceActivity#findPreference findPreference()} 以取得變更的 {@link android.preference.Preference} 物件,以便將項目摘要修改為使用者選取的描述。
+
+
+也就是說,當設定為 {@link
+android.preference.ListPreference} 或其他多選擇設定時,如果設定變更為顯示目前狀態 (如圖 5 顯示的休眠設定),您應該呼叫 {@link
+android.preference.Preference#setSummary setSummary()}。
+</p>
+
+<p class="note"><strong>注意:</strong>如 Android 設計文件中有關<a href="{@docRoot}design/patterns/settings.html">設定</a>的說明所述,我們建議您在每次使用者變更偏好設定時更新 {@link android.preference.ListPreference} 的摘要,以描述目前的設定。
+
+</p>
+
+<p>為了在 Activity 中正確管理生命週期,我們建議您分別在 {@link
+android.app.Activity#onResume} 和 {@link android.app.Activity#onPause} 回呼期間,註冊和解決註冊您的 {@link android.content.SharedPreferences.OnSharedPreferenceChangeListener}:
+</p>
+
+<pre>
+&#64;Override
+protected void onResume() {
+    super.onResume();
+    getPreferenceScreen().getSharedPreferences()
+            .registerOnSharedPreferenceChangeListener(this);
+}
+
+&#64;Override
+protected void onPause() {
+    super.onPause();
+    getPreferenceScreen().getSharedPreferences()
+            .unregisterOnSharedPreferenceChangeListener(this);
+}
+</pre>
+
+<p class="caution"><strong>注意:</strong>當您呼叫 {@link
+android.content.SharedPreferences#registerOnSharedPreferenceChangeListener
+registerOnSharedPreferenceChangeListener()} 時,偏好設定管理員目前不會在接聽器儲存強式參照。
+您必須將強式參照儲存到接聽器,否則它會很容易受記憶體回收的影響。
+我們建議您在物件的執行個體資料中保留接聽器參照,如此一來您可以在需要接聽器時隨時使用。
+
+</p>
+
+<p>例如,在下列程式碼中,呼叫器沒有保留接聽器參照。
+因此,接聽器將受到記憶體回收的支配,而且會在未來不明確的時間發生失敗:
+</p>
+
+<pre>
+prefs.registerOnSharedPreferenceChangeListener(
+  // Bad! The listener is subject to garbage collection!
+  new SharedPreferences.OnSharedPreferenceChangeListener() {
+  public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+    // listener implementation
+  }
+});
+</pre>
+
+<p>將接聽器參照儲存在物件的執行個體資料欄位中,可以在需要接聽器時隨時使用:
+</p>
+
+<pre>
+SharedPreferences.OnSharedPreferenceChangeListener listener =
+    new SharedPreferences.OnSharedPreferenceChangeListener() {
+  public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
+    // listener implementation
+  }
+};
+prefs.registerOnSharedPreferenceChangeListener(listener);
+</pre>
+
+<h2 id="NetworkUsage">管理網路使用量</h2>
+
+
+<p>從 Android 4.0 開始,系統的設定應用程式允許使用者查看應用程式在前景和背景時使用了多少網路資料。
+然後,使用者可以停用個別應用程式的背景資料。
+如要避免使用者停用您的應用程式從背景存取資料,您應該有效率地使用資料連線,並允許使用者透過應用程式設定精簡您的應用程式資料使用量。
+
+<p>
+
+<p>例如,您可以讓使用者控制同步資料的頻率,無論您的應用程式只在 Wi-Fi 上執行上傳/下載、應用程式在漫遊使用資料等。
+使用者有了這些控制項,就比較不會在快要達到在系統設定中設定的限制時停用您應用程式的資料存取,因為他們可以準確地控制您應用程式使用的資料量。
+
+
+</p>
+
+<p>您在 {@link android.preference.PreferenceActivity} 新增所需的偏好設定以控制應用程式的資料習慣後,您應該在宣示說明檔新增 {@link
+android.content.Intent#ACTION_MANAGE_NETWORK_USAGE} 的意圖篩選器。
+例如:</p>
+
+<pre>
+&lt;activity android:name="SettingsActivity" ... >
+    &lt;intent-filter>
+       &lt;action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />
+       &lt;category android:name="android.intent.category.DEFAULT" />
+    &lt;/intent-filter>
+&lt;/activity>
+</pre>
+
+<p>這個意圖篩選器向系統指出,是 Activity 在控制您的應用程式資料使用量。
+因此,當使用者從系統設定應用程式檢查您的應用程式使用了多少資料量時,可以使用 [檢視應用程式設定] 按鈕啟動您的<em></em> {@link android.preference.PreferenceActivity},讓使用者精簡您應用程式使用的資料量。
+
+
+</p>
+
+
+
+
+
+
+
+<h2 id="Custom">建置自訂偏好設定</h2>
+
+<p>Android 架構包含各式各樣的 {@link android.preference.Preference} 子類別,可讓您建置所種不同設定類型的 UI。不過,您可能會發現內建解決方案中可能沒有您所需的設定,例如數字挑選器或日期挑選器。
+
+
+在這類情況下,您需要延伸 {@link android.preference.Preference} 類別或其中一個其他子類別,以建立自訂的偏好設定。
+</p>
+
+<p>當您延伸 {@link android.preference.Preference} 類別時,需要執行幾個重要工作:
+</p>
+
+<ul>
+  <li>指定使用者選取設定時要顯示的使用者介面。</li>
+  <li>視需要儲存設定值。</li>
+  <li>顯示 {@link android.preference.Preference} 時,使用目前 (或預設) 值加以初始化。
+</li>
+  <li>在系統要求時提供預設值。</li>
+  <li>如果 {@link android.preference.Preference} 提供自己的 UI (例如對話方塊),儲存並還原狀態以處理生命週期變更 (例如,當使用者旋轉螢幕時)。
+</li>
+</ul>
+
+<p>以下各節說明如何完成這些工作。</p>
+
+
+
+<h3 id="CustomSelected">指定使用者介面</h3>
+
+  <p>如果您直接延伸 {@link android.preference.Preference} 類別,必須實作 {@link android.preference.Preference#onClick()} 以定義使用者選取項目時的動作。
+
+不過,大多數自訂設定會延伸 {@link android.preference.DialogPreference} 來顯示對話方塊,以簡化程序。
+延伸 {@link
+android.preference.DialogPreference} 時,您必須在類別建構函式期間呼叫 {@link
+android.preference.DialogPreference#setDialogLayoutResource setDialogLayoutResourcs()},以指定對話方塊的版面配置。
+</p>
+
+  <p>例如,下列為自訂 {@link
+android.preference.DialogPreference} 的建構函式,該偏好設定宣告版面配置並指定預設正值和負值對話方塊按鈕的文字:
+</p>
+
+<pre>
+public class NumberPickerPreference extends DialogPreference {
+    public NumberPickerPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        
+        setDialogLayoutResource(R.layout.numberpicker_dialog);
+        setPositiveButtonText(android.R.string.ok);
+        setNegativeButtonText(android.R.string.cancel);
+        
+        setDialogIcon(null);
+    }
+    ...
+}
+</pre>
+
+
+
+<h3 id="CustomSave">儲存設定值</h3>
+
+<p>您可以呼叫其中一個 {@link
+android.preference.Preference} 類別的 {@code persist*()} 方法隨時儲存設定值,例如,如果設定值是整數,使用 {@link
+android.preference.Preference#persistInt persistInt()},或者使用 {@link android.preference.Preference#persistBoolean persistBoolean()} 儲存布林值。
+</p>
+
+<p class="note"><strong>注意:</strong>每個 {@link android.preference.Preference} 只能儲存一個資料類型,因此您必須使用適合您自訂 {@link android.preference.Preference} 使用之資料類型的 {@code persist*()} 方法。
+
+</p>
+
+<p>當您選擇保留設定時,可以依據您延伸的 {@link
+android.preference.Preference} 類別加以設定。如果您延伸 {@link
+android.preference.DialogPreference},則應該只在對話方塊因正值結果 (使用者選取 [確定] 按鈕) 關閉時保留該值。
+</p>
+
+<p>當 {@link android.preference.DialogPreference} 關閉時,系統會呼叫 {@link
+android.preference.DialogPreference#onDialogClosed onDialogClosed()} 方法。這個方法包括一個布林值引數,指定使用者結果是否為「正值」&mdash; 如果值為
+<code>true</code>,則表示使用者選取正值按鈕,而您應該儲存新值。
+例如:
+</p>
+
+<pre>
+&#64;Override
+protected void onDialogClosed(boolean positiveResult) {
+    // When the user selects "OK", persist the new value
+    if (positiveResult) {
+        persistInt(mNewValue);
+    }
+}
+</pre>
+
+<p>在此範例中,<code>mNewValue</code> 是保留設定目前值的類別成員。
+呼叫 {@link android.preference.Preference#persistInt persistInt()} 可將值儲存到 {@link android.content.SharedPreferences} 檔案 (自動使用 XML 檔案中為此 {@link android.preference.Preference} 指定的索引鍵)。
+
+</p>
+
+
+<h3 id="CustomInitialize">初始化目前值</h3>
+
+<p>當系統將您的 {@link android.preference.Preference} 新增到畫面時,會呼叫 {@link android.preference.Preference#onSetInitialValue onSetInitialValue()} 以通知您設定是否有持續值。
+
+如果沒有持續值,這個呼叫會提供您預設值。
+</p>
+
+<p>{@link android.preference.Preference#onSetInitialValue onSetInitialValue()} 方法會傳送布林值 <code>restorePersistedValue</code>,以指出該設定的值是否已經持續。
+
+如果是 <code>true</code>,則您應該呼叫其中一個 {@link
+android.preference.Preference} 類別的 {@code getPersisted*()} 方法以擷取持續值,例如,如果為整數值,可使用 {@link
+android.preference.Preference#getPersistedInt getPersistedInt()}。
+您通常都會想要擷取持續值,如此您可以正確的更新 UI 以反映之前儲存的值。
+
+</p>
+
+<p>如果 <code>restorePersistedValue</code> 是 <code>false</code>,則您應該使用在第二引數中傳送的預設值。
+</p>
+
+<pre>
+&#64;Override
+protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
+    if (restorePersistedValue) {
+        // Restore existing state
+        mCurrentValue = this.getPersistedInt(DEFAULT_VALUE);
+    } else {
+        // Set default state from the XML attribute
+        mCurrentValue = (Integer) defaultValue;
+        persistInt(mCurrentValue);
+    }
+}
+</pre>
+
+<p>在實際上沒有持續值或沒有索引鍵的情況下,每個 {@code getPersisted*()} 方法會採用指定要使用之預設值的引數。
+在上述範例中,會使用本機常數來指定預設值,以避免 {@link
+android.preference.Preference#getPersistedInt getPersistedInt()} 無法傳回持續值。
+</p>
+
+<p class="caution"><strong>注意:</strong>您<strong>無法</strong>使用 <code>defaultValue</code> 作為 {@code getPersisted*()} 方法中的預設值,因為當 <code>restorePersistedValue</code> 為 <code>true</code> 時,其值永遠是 null。
+
+</p>
+
+
+<h3 id="CustomDefault">提供預設值</h3>
+
+<p>如果 {@link android.preference.Preference} 類別的執行個體指定預設值 (包含 {@code android:defaultValue} 屬性),則系統會在將物件具現化時呼叫 {@link android.preference.Preference#onGetDefaultValue
+onGetDefaultValue()},以擷取值。
+
+您必須實作此方法,才能讓系統將預設值儲存在 {@link
+android.content.SharedPreferences} 中。
+例如:</p>
+
+<pre>
+&#64;Override
+protected Object onGetDefaultValue(TypedArray a, int index) {
+    return a.getInteger(index, DEFAULT_VALUE);
+}
+</pre>
+
+<p>方法引數可以提供您所需的所有物件:屬性陣列,以及您必須擷取之 {@code android:defaultValue} 的索引位置。
+您必須實作此方法以便從屬性擷取預設值的原因,是因為您必須在未定義值的情況為屬性指定一個本機預設值。
+
+</p>
+
+
+
+<h3 id="CustomSaveState">儲存和還原偏好設定狀態</h3>
+
+<p>如同版面配置中的 {@link android.view.View},您的 {@link android.preference.Preference} 子類別負責在 Activity 或片段重新啟動 (例如,當使用者旋轉螢幕時) 時,儲存和還原其狀態。
+
+如要正確的儲存和還原 {@link android.preference.Preference} 類別的狀態,您必須實作生命週期回呼方法 {@link android.preference.Preference#onSaveInstanceState
+onSaveInstanceState()} 和 {@link
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()}。
+
+</p>
+
+<p>您 {@link android.preference.Preference} 的狀態由實作 {@link android.os.Parcelable} 介面的物件定義。
+Android 架構為您提供這類物件作為定義狀態物件的起始點:{@link
+android.preference.Preference.BaseSavedState} 類別。
+</p>
+
+<p>如要定義 {@link android.preference.Preference} 類別儲存狀態的方法,您應該延伸 {@link android.preference.Preference.BaseSavedState} 類別。
+您只需要覆寫幾個方法,然後定義 {@link android.preference.Preference.BaseSavedState#CREATOR}物件。
+
+</p>
+
+<p>對於大多數應用程式而言,如果您的 {@link android.preference.Preference} 子類別儲存整數以外的資料類型,您可以複製下列實作,然後變更處理 {@code value} 的行即可。
+
+</p>
+
+<pre>
+private static class SavedState extends BaseSavedState {
+    // Member that holds the setting's value
+    // Change this data type to match the type saved by your Preference
+    int value;
+
+    public SavedState(Parcelable superState) {
+        super(superState);
+    }
+
+    public SavedState(Parcel source) {
+        super(source);
+        // Get the current preference's value
+        value = source.readInt();  // Change this to read the appropriate data type
+    }
+
+    &#64;Override
+    public void writeToParcel(Parcel dest, int flags) {
+        super.writeToParcel(dest, flags);
+        // Write the preference's value
+        dest.writeInt(value);  // Change this to write the appropriate data type
+    }
+
+    // Standard creator object using an instance of this class
+    public static final Parcelable.Creator&lt;SavedState> CREATOR =
+            new Parcelable.Creator&lt;SavedState>() {
+
+        public SavedState createFromParcel(Parcel in) {
+            return new SavedState(in);
+        }
+
+        public SavedState[] newArray(int size) {
+            return new SavedState[size];
+        }
+    };
+}
+</pre>
+
+<p>將上述 {@link android.preference.Preference.BaseSavedState} 實作新增到您的應用程式 (通常做為 {@link android.preference.Preference} 子類別的子類別) 之後,您需要針對 {@link android.preference.Preference} 子類別實作 {@link android.preference.Preference#onSaveInstanceState
+onSaveInstanceState()} 和 {@link
+android.preference.Preference#onRestoreInstanceState onRestoreInstanceState()} 方法。
+
+
+</p>
+
+<p>例如:</p>
+
+<pre>
+&#64;Override
+protected Parcelable onSaveInstanceState() {
+    final Parcelable superState = super.onSaveInstanceState();
+    // Check whether this Preference is persistent (continually saved)
+    if (isPersistent()) {
+        // No need to save instance state since it's persistent,
+        // use superclass state
+        return superState;
+    }
+
+    // Create instance of custom BaseSavedState
+    final SavedState myState = new SavedState(superState);
+    // Set the state's value with the class member that holds current
+    // setting value
+    myState.value = mNewValue;
+    return myState;
+}
+
+&#64;Override
+protected void onRestoreInstanceState(Parcelable state) {
+    // Check whether we saved the state in onSaveInstanceState
+    if (state == null || !state.getClass().equals(SavedState.class)) {
+        // Didn't save the state, so call superclass
+        super.onRestoreInstanceState(state);
+        return;
+    }
+
+    // Cast state to custom BaseSavedState and pass to superclass
+    SavedState myState = (SavedState) state;
+    super.onRestoreInstanceState(myState.getSuperState());
+    
+    // Set this Preference's widget to reflect the restored state
+    mNumberPicker.setValue(myState.value);
+}
+</pre>
+
diff --git a/docs/html-intl/intl/zh-tw/guide/topics/ui/ui-events.jd b/docs/html-intl/intl/zh-tw/guide/topics/ui/ui-events.jd
new file mode 100644
index 0000000..68714e8
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/guide/topics/ui/ui-events.jd
@@ -0,0 +1,291 @@
+page.title=輸入事件
+parent.title=使用者介面
+parent.link=index.html
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>本文件內容</h2>
+  <ol>
+    <li><a href="#EventListeners">事件接聽器</a></li>
+    <li><a href="#EventHandlers">事件處理常式</a></li>
+    <li><a href="#TouchMode">輕觸模式</a></li>
+    <li><a href="#HandlingFocus">處理焦點</a></li>
+  </ol>
+
+</div>
+</div>
+
+<p>在 Android,有多種方法可以攔截使用者與應用程式互動的事件。
+如果考慮的是使用者介面內的事件,方法就是從與使用者互動的特定檢視物件中擷取事件。
+檢視類別提供執行此動作的方法。</p>
+
+<p>在您用來撰寫版面配置的各種檢視類別中,您會發現多種公用回呼方法,對 UI 事件似乎相當實用。
+當該物件發生個別動作時,Android 架構會呼叫這些方法。
+例如,輕觸檢視 (例如按鈕) 時,會在該物件上呼叫 <code>onTouchEvent()</code> 方法。
+不過,為了攔截這個事件,您必須延伸類別並覆寫方法。
+然而,延伸每個檢視物件以便處理這類事件並不實際。
+這就是檢視類別也包含巢狀介面與回呼的集合的原因,這樣您就能更輕鬆地定義。
+這些介面稱為<a href="#EventListeners">事件接聽器</a>,就是用來擷取使用者與您 UI 互動的票券。
+</p>
+
+<p>雖然您更常使用事件接聽器來接聽使用者互動,未來您可能會想要延伸檢視類別以建置自訂元件。
+或許您想要延伸 {@link android.widget.Button} 類別讓一些項目更為出色。
+
+在這種情況下,您能夠使用類別<a href="#EventHandlers">事件處理常式</a>來為您的類別定義預設事件行為。
+</p>
+
+
+<h2 id="EventListeners">事件接聽器</h2>
+
+<p>事件接聽器是 {@link android.view.View} 類別中的一個介面,該類別包含單一回呼方法。
+當使用者與 UI 中的項目互動並觸發接聽器所註冊的檢視時,Android 架構就會呼叫這些方法。
+</p>
+
+<p>事件接聽器介面包含下列回呼方法:</p>
+
+<dl>
+  <dt><code>onClick()</code></dt>
+    <dd>從 {@link android.view.View.OnClickListener}。使用者輕觸項目 (處於輕觸模式時),或將焦點放在具有導覽鍵或軌跡球的項目上,然後按適當的 "enter" 鍵或按下軌跡球時,就會呼叫。
+
+
+</dd>
+  <dt><code>onLongClick()</code></dt>
+    <dd>從 {@link android.view.View.OnLongClickListener}。使用者輕觸並按住項目 (處於輕觸模式時),或將焦點放在具有導覽鍵或軌跡球的項目上,然後按住適當的 "enter" 鍵或按住軌跡球 (一秒) 時,就會呼叫。
+
+
+</dd>
+  <dt><code>onFocusChange()</code></dt>
+    <dd>從 {@link android.view.View.OnFocusChangeListener}。使用者使用導覽鍵或軌跡球導覽至項目或離開項目時,就會呼叫。
+</dd>
+  <dt><code>onKey()</code></dt>
+    <dd>從 {@link android.view.View.OnKeyListener}。使用者將焦點放在項目上,然後按下或放開裝置上的硬體鍵時,就會呼叫。
+</dd>
+  <dt><code>onTouch()</code></dt>
+    <dd>從 {@link android.view.View.OnTouchListener}。當使用者執行符合輕觸事件資格的動作時,包括按下、放開或在螢幕上的任何移動手勢 (在項目邊界內),就會呼叫。
+
+</dd>
+  <dt><code>onCreateContextMenu()</code></dt>
+    <dd>從 {@link android.view.View.OnCreateContextMenuListener}。建置操作選單時 (產生持續「長按」的效果),就會呼叫。
+請參閱<a href="{@docRoot}guide/topics/ui/menus.html#context-menu">選單</a>開發人員指南的操作選單相關討論。
+
+</dd>
+</dl>
+
+<p>這些方法是其個別介面的唯一要素。如要定義其中一種方法並處理您的事件,可在您的 Activity 中實作巢狀介面或將它定義為匿名類別。然後,將您的實作執行個體傳送至個別的 <code>View.set...Listener()</code> 方法。
+
+
+(例如,呼叫
+<code>{@link android.view.View#setOnClickListener(View.OnClickListener) setOnClickListener()}</code>,將您的 {@link android.view.View.OnClickListener OnClickListener} 實作傳送給它。)
+</p>
+
+<p>下列範例說明如何為某個按鈕註冊 on-click 接聽器。 </p>
+
+<pre>
+// Create an anonymous implementation of OnClickListener
+private OnClickListener mCorkyListener = new OnClickListener() {
+    public void onClick(View v) {
+      // do something when the button is clicked
+    }
+};
+
+protected void onCreate(Bundle savedValues) {
+    ...
+    // Capture our button from layout
+    Button button = (Button)findViewById(R.id.corky);
+    // Register the onClick listener with the implementation above
+    button.setOnClickListener(mCorkyListener);
+    ...
+}
+</pre>
+
+<p>您也會發現在 Activity 中實作 OnClickListener 會更為方便。這樣可避免額外的類別載入和物件配置。
+例如:</p>
+<pre>
+public class ExampleActivity extends Activity implements OnClickListener {
+    protected void onCreate(Bundle savedValues) {
+        ...
+        Button button = (Button)findViewById(R.id.corky);
+        button.setOnClickListener(this);
+    }
+
+    // Implement the OnClickListener callback
+    public void onClick(View v) {
+      // do something when the button is clicked
+    }
+    ...
+}
+</pre>
+
+<p>請注意,上述範例的 <code>onClick()</code> 回呼不會傳回任何值,但某些其他事件接聽器方法必須傳回布林值。
+這個原因取決於事件。
+少數執行此事件的原因如下:</p>
+<ul>
+  <li><code>{@link android.view.View.OnLongClickListener#onLongClick(View) onLongClick()}</code> - 這會傳回一個布林值,指出您是否已使用此事件,未來不應該繼續執行。
+亦即,傳回 <em>true</em> 指出您已處理事件,應該在這裡停止;如果您未處理事件和/或事件應該繼續在任何其他 on-click 接聽器上執行,則會傳回 <em>false</em>。
+
+
+</li>
+  <li><code>{@link android.view.View.OnKeyListener#onKey(View,int,KeyEvent) onKey()}</code> - 這會傳回一個布林值,指出您是否已使用此事件,未來不應該繼續執行。
+
+    亦即,傳回 <em>true</em> 指出您已處理事件,應該在這裡停止;如果您未處理事件和/或事件應該繼續在任何其他 on-key 接聽器上執行,則會傳回 <em>false</em>。
+
+</li>
+  <li><code>{@link android.view.View.OnTouchListener#onTouch(View,MotionEvent) onTouch()}</code> - 這會傳回一個布林值,指出您的接聽器是否已使用此事件。
+最重要的是,這個事件可以處理彼此接續的多個動作。
+因此,收到向下動作事件時如果您傳回 <em>false</em>,就表示您尚未使用事件,而且對於這個事件的後續動作也不感興趣。
+
+因此,您不需要在事件內執行任何其他動作,例如手指手勢或最終動作事件。
+</li>
+</ul>
+
+<p>請記住,硬體按鍵事件一律會傳送至目前焦點中的檢視。它們會從檢視階層的最上層開始發送,然後往下直到到達適當的目的地為止。
+如果焦點現在位於您的檢視 (或檢視的子項),則您可以透過 <code>{@link android.view.View#dispatchKeyEvent(KeyEvent)
+dispatchKeyEvent()}</code> 方法查看事件過程。
+作為透過您的檢視擷取按鍵事件的替代方法,您也可以使用 <code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code> 和 <code>{@link android.app.Activity#onKeyUp(int,KeyEvent) onKeyUp()}</code> 接收您 Activity 內的所有事件。
+
+</p>
+
+<p>此外,當您思考應用程式的文字輸入時,請記住,許多裝置只有軟體輸入方法。
+這類方法不需要以按鍵為基礎;有些可能會使用語音輸入、手寫等方式。即使輸入方法出現類似鍵盤的介面,也通常<strong>不會</strong>觸發事件的
+<code>{@link android.app.Activity#onKeyDown(int,KeyEvent) onKeyDown()}</code> 系列。
+您不應該建置需要按下特定按鍵才能控制的 UI,除非您想將應用程式限制為使用硬體鍵盤的裝置。
+
+尤其是當使用者按 Return 鍵時,不要藉助這些方法來驗證輸入;改為使用像 {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE} 的動作向輸入方法示意您應用程式預期的反應方式,讓它能夠以有意義的方式變更其 UI。
+
+避免假設軟體輸入方法應該會如何運作,只要相信它能為您的應用程式提供既有的格式化文字。
+</p>
+
+<p class="note"><strong>注意:</strong>Android 會先呼叫事件處理常式,然後再從類別定義呼叫適當的預設處理常式。
+因此,從這些事件接聽器傳回 <em>true</em> 將會停止將事件傳播到其他事件接聽器,也會封鎖對檢視中預設事件處理常式的回呼。
+
+因此,要確定您傳回 <em>true</em> 時要終止事件。</p>
+
+
+<h2 id="EventHandlers">事件處理常式</h2>
+
+<p>如果您正從檢視建置自訂元件,則您就能定義多種回呼方法做為預設事件處理常式。在<a href="{@docRoot}guide/topics/ui/custom-components.html">自訂元件</a>的相關文件中,您將瞭解事件處理常式的一些常見回呼,包括:
+
+
+
+</p>
+<ul>
+  <li><code>{@link  android.view.View#onKeyDown}</code> - 當發生新的按鍵事件時就會進行呼叫。</li>
+  <li><code>{@link  android.view.View#onKeyUp}</code> - 當發生向上鍵事件時就會進行呼叫。</li>
+  <li><code>{@link  android.view.View#onTrackballEvent}</code> - 當發生軌跡球動作事件時就會進行呼叫。</li>
+  <li><code>{@link  android.view.View#onTouchEvent}</code> - 當發生觸控螢幕動作事件時就會進行呼叫。</li>
+  <li><code>{@link  android.view.View#onFocusChanged}</code> - 當檢視獲得或失去焦點時就會進行呼叫。</li>
+</ul>
+<p>您還必須注意其他一些方法,這些方法不屬於檢視類別,但會直接影響您能夠處理事件的方式。
+因此,在版面配置中管理更複雜的事件時,請考量下列其他方法:
+</p>
+<ul>
+  <li><code>{@link  android.app.Activity#dispatchTouchEvent(MotionEvent)
+    Activity.dispatchTouchEvent(MotionEvent)}</code> - 這讓您的 {@link
+android.app.Activity} 能在發送至視窗之前攔截所有輕觸事件。</li>
+  <li><code>{@link  android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)
+    ViewGroup.onInterceptTouchEvent(MotionEvent)}</code> - 這讓 {@link
+android.view.ViewGroup} 在發送至子檢視時能監控事件。</li>
+  <li><code>{@link  android.view.ViewParent#requestDisallowInterceptTouchEvent(boolean)
+    ViewParent.requestDisallowInterceptTouchEvent(boolean)}</code> - 呼叫這個父檢視以指出不應該使用 <code>{@link 
+    android.view.ViewGroup#onInterceptTouchEvent(MotionEvent)}</code> 攔截輕觸事件。
+</li>
+</ul>
+
+<h2 id="TouchMode">輕觸模式</h2>
+<p>
+使用者以方向鍵或軌跡球瀏覽使用者介面時,必須對可動作的項目 (例如按鈕) 提供焦點,這樣使用者就能看到什麼項目將接受輸入。
+
+不過,如果裝置具有輕觸功能,而且使用者透過輕觸方式開始與介面互動,就不需要再將項目反白顯示,或是對特定檢視提供焦點。
+
+因此,這就是名稱為「輕觸模式」的互動模式。
+ 
+</p>
+<p>
+如果是具備輕觸功能的裝置,使用者輕觸螢幕之後,裝置就會進入輕觸模式。
+從這點以此類推,只有 
+{@link android.view.View#isFocusableInTouchMode} 為 true 的檢視才可設定焦點,例如文字編輯小工具。
+其他可輕觸的檢視,例如按鈕,在輕觸時不會成為焦點;按下時,只會觸發 on-click 接聽器。
+
+</p>
+<p>
+使用者在任何時候點擊方向鍵或使用軌跡球捲動時,裝置會結束輕觸模式,然後找尋要成為焦點的檢視。
+現在,使用者可繼續與使用者介面互動,而不必輕觸螢幕。
+
+</p>
+<p>
+整個系統 (所有視窗和 Activity) 都會保留輕觸模式的狀態。如要查詢目前的狀態,您可以呼叫 
+{@link android.view.View#isInTouchMode} 以查看裝置目前是否處於輕觸模式。
+
+</p>
+
+
+<h2 id="HandlingFocus">處理焦點</h2>
+
+<p>架構會處理慣例焦點移動以回應使用者輸入。
+這包括在移除或隱藏檢視時變更焦點,或是新檢視可用時。
+檢視可透過 <code>{@link android.view.View#isFocusable()}</code> 方法指出它們成為焦點的意願。
+如要變更檢視是否可成為焦點,可呼叫 <code>{@link android.view.View#setFocusable(boolean) setFocusable()}</code>。
+處於輕觸模式時,您可使用 <code>{@link android.view.View#isFocusableInTouchMode()}</code> 查詢檢視是否允許成為焦點。
+
+您可以使用 <code>{@link android.view.View#setFocusableInTouchMode(boolean) setFocusableInTouchMode()}</code> 進行變更。
+</p>
+
+<p>焦點移動是以演算法為依據,在指定的方向尋找最接近的項目。
+在少數情況下,預設的演算法與開發人員預期的行為可能不符。
+在這些情況下,您可以在版面配置檔案使用下列 XML 屬性進行明確的覆寫:
+
+<var>nextFocusDown</var>、 <var>nextFocusLeft</var>、 <var>nextFocusRight</var>和
+<var>nextFocusUp</var>。在移出焦點的檢視中,新增下列其中一個屬性<em></em>。
+將屬性的值定義為應該成為焦點之檢視的 ID<em></em>。
+例如:</p>
+<pre>
+&lt;LinearLayout
+    android:orientation="vertical"
+    ... >
+  &lt;Button android:id="@+id/top"
+          android:nextFocusUp="@+id/bottom"
+          ... />
+  &lt;Button android:id="@+id/bottom"
+          android:nextFocusDown="@+id/top"
+          ... />
+&lt;/LinearLayout>
+</pre>
+
+<p>一般來說,在這個直式版面配置中,從第一個按鈕往上瀏覽或從第二個按鈕往下瀏覽都不會到任何地方。
+現在,上方按鈕已將下方按鈕定義為
+ <var>nextFocusUp</var> (反之亦然),導覽焦點會從上到下以及從下到上循環。
+</p>
+
+<p>如果您想在 UI 中將檢視宣告為可設定焦點 (傳統上不行),可在您的版面配置宣告中將 <code>android:focusable</code> XML 屬性新增至檢視。
+
+將值設定為 <var>true</var>。您也可以使用 <code>android:focusableInTouchMode</code> 在輕觸模式中將檢視宣告為可設定焦點。
+</p>
+<p>如要要求特定檢視成為焦點,可呼叫 <code>{@link android.view.View#requestFocus()}</code>。</p>
+<p>如要接聽焦點事件 (在檢視獲得或失去焦點時收到通知),可使用
+<code>{@link android.view.View.OnFocusChangeListener#onFocusChange(View,boolean) onFocusChange()}</code> (如上述<a href="#EventListeners">事件接聽器</a>中所討論)。
+</p>
+
+
+
+<!--
+<h2 is="EventCycle">Event Cycle</h2>
+   <p>The basic cycle of a View is as follows:</p>
+   <ol>
+    <li>An event comes in and is dispatched to the appropriate View. The View
+    handles the event and notifies any listeners.</li>
+    <li>If, in the course of processing the event, the View's bounds may need
+    to be changed, the View will call {@link android.view.View#requestLayout()}.</li>
+    <li>Similarly, if in the course of processing the event the View's appearance
+    may need to be changed, the View will call {@link android.view.View#invalidate()}.</li>
+    <li>If either {@link android.view.View#requestLayout()} or {@link android.view.View#invalidate()} were called,
+    the framework will take care of measuring, laying out, and drawing the tree
+    as appropriate.</li>
+   </ol>
+   
+   <p class="note"><strong>Note:</strong> The entire View tree is single threaded. You must always be on
+   the UI thread when calling any method on any View.
+   If you are doing work on other threads and want to update the state of a View
+   from that thread, you should use a {@link android.os.Handler}.
+   </p>
+-->
diff --git a/docs/html-intl/intl/zh-tw/index.jd b/docs/html-intl/intl/zh-tw/index.jd
index cf1376f..a5772ef 100644
--- a/docs/html-intl/intl/zh-tw/index.jd
+++ b/docs/html-intl/intl/zh-tw/index.jd
@@ -5,42 +5,81 @@
 
 @jd:body
 
-<!-- <div class="dac-hero-carousel" data-carousel-query="collection:index/carousel">
-</div> -->
-<section class="dac-hero-carousel">
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
 
-<!-- <article class="dac-expand dac-hero dac-invert active" style="background-color: rgb(38, 50, 56);"> -->
-<article class="dac-expand dac-hero dac-invert dac-darken mprev active" style="background-color: #75d1ff;">
-<a href="/preview/index.html">
+<section class="dac-expand dac-hero dac-invert" style="background-color:#455A64">
   <div class="wrap" style="max-width:1100px;margin-top:0">
-    <div class="cols dac-hero-content">
-      <div class="col-8of16 col-push-6of16 dac-hero-figure mprev">
-      </div>
-      <div class="col-8of16 col-pull-7of16">
-        <div class="dac-hero-tag"></div>
-
-        <h1 class="dac-hero-title" style="white-space:nowrap;">Android 6.0 Marshmallow</h1>
-        <p class="dac-hero-description">準備使用新版 Android。在 Nexus 5、6、9 和
-        Player 上測試您的應用程式。 </p>
-
-        <a class="dac-hero-cta" href="{@docRoot}preview/index.html">
+    <div class="col-7of16 col-push-9of16" style="padding-left:2em;">
+      <a href="{@docRoot}preview/index.html">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
+        <p class="dac-hero-description">
+          Get ready for the next version of Android!
+          <strong>Test your apps</strong> on Nexus and other devices. Support new system
+          behaviors to <strong>save power and memory</strong>.
+          Extend your apps with <strong>multi-window UI</strong>,
+          <strong>direct reply notifications</strong> and more.
+        </p>
+        <a class="dac-hero-cta" href="/preview/index.html">
           <span class="dac-sprite dac-auto-chevron"></span>
-          開始使用!
-        </a><br>
-        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
+          Learn more
+        </a><!--<br>
+        <a class="dac-hero-cta" href="/preview/support.html">
           <span class="dac-sprite dac-auto-chevron"></span>
-          Developer Preview 3 (final SDK)</a>
-      </div>
+          Update to Developer Preview (final SDK)
+        </a><br>-->
+      </a>
+    </div>
+    <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:0em;padding-right:1.5em;">
+      <a href="{@docRoot}preview/index.html">
+        <img style="" class="dac-hero-image" src="/images/home/n-preview-hero.png"
+             srcset="/images/home/n-preview-hero.png 1x,
+             /images/home/n-preview-hero_2x.png 2x">
+        </a>
     </div>
   </div>
-</a>
-</article></section>
+</section>
 
-<div class="actions-bar dac-expand dac-invert">
+<div id="useUpdatedTemplates" style="display:none" class="dac-section dac-slim dac-gray dac-expand">
   <div class="wrap dac-offset-parent">
     <a class="dac-fab dac-scroll-button" data-scroll-button href="#build-apps">
       <i class="dac-sprite dac-arrow-down-gray"></i>
     </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}sdk/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Get the SDK
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}samples/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Browse sample code
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}distribute/stories/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Watch stories
+        </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+    <a class="dac-fab dac-scroll-button" data-scroll-button="" href="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
     <div class="actions">
       <div><a href="{@docRoot}sdk/index.html">
         <span class="dac-sprite dac-auto-chevron-large"></span>
@@ -50,17 +89,15 @@
         <span class="dac-sprite dac-auto-chevron-large"></span>
         Browse Samples
       </a></div>
-      <div><a href="//www.youtube.com/user/androiddevelopers">
+      <div><a href="{@docRoot}distribute/stories/index.html">
         <span class="dac-sprite dac-auto-chevron-large"></span>
-        Watch Videos
+        Watch Stories
       </a></div>
     </div><!-- end .actions -->
   </div><!-- end .wrap -->
-</div><!-- end .actions-bar -->
+</div>
 
-
-
-<section class="dac-section dac-section-light" id="build-apps"><div class="wrap">
+<section class="dac-section dac-light" id="build-apps"><div class="wrap">
   <h1 class="dac-section-title">Build Beautiful Apps</h1>
   <div class="dac-section-subtitle">
     Resources to get you started with designing and developing for Android.
diff --git a/docs/html-intl/intl/zh-tw/preview/api-overview.jd b/docs/html-intl/intl/zh-tw/preview/api-overview.jd
deleted file mode 100644
index a68f0cd..0000000
--- a/docs/html-intl/intl/zh-tw/preview/api-overview.jd
+++ /dev/null
@@ -1,521 +0,0 @@
-page.title=API 總覽
-page.keywords=預覽,sdk,相容性
-page.tags=previewresources, androidm
-sdk。platform.apiLevel=22-mnc
-page.image=images/cards/card-api-overview_16-9_2x.png
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>本文件內容
-<a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
-        <span class="more">顯示更多內容</span>
-        <span class="less" style="display:none">顯示較少內容</span></a></h2>
-
-<ol id="toc44" class="hide-nested">
-  <li><a href="#app-linking">應用程式連結</a></li>
-  <li><a href="#backup">針對應用程式進行自動備份</a></li>
-  <li><a href="#authentication">驗證</a>
-    <ol>
-      <li><a href="#fingerprint-authentication">指紋驗證</a></li>
-      <li><a href="#confirm-credential">確認認證</a></li>
-    </ol>
-  </li>
-  <li><a href="#direct-share">直接分享</a></li>
-  <li><a href="#voice-interactions">語音互動</a></li>
-  <li><a href="#assist">協助 API</a></li>
-  <li><a href="#notifications">通知</a></li>
-  <li><a href="#bluetooth-stylus">藍牙手寫筆支援</a></li>
-  <li><a href="#ble-scanning">已改進藍牙低電量掃描</a></li>
-  <li><a href="#hotspot">無線基地台 2.0 版本 1 支援</a></li>
-  <li><a href="#4K-display">4K 顯示模式</a></li>
-  <li><a href="#behavior-themeable-colorstatelists">具備設計風格的 ColorStateList</a></li>
-  <li><a href="#audio">音訊功能</a></li>
-  <li><a href="#video">影片功能</a></li>
-  <li><a href="#camera">相機功能</a>
-    <ol>
-      <li><a href="#flashlight">閃光燈 API</a></li>
-      <li><a href="#reprocessing">相機重新處理</a></li>
-    </ol>
-  </li>
-  <li><a href="#afw">Android for Work 功能</a></li>
-</ol>
-
-<h2>API 差異</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">API 級別 22 到 M 預覽版&raquo;</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M 開發人員預覽版讓您能夠搶先查看即將發行的 Android 平台版本,這個版本將提供可供使用者和應用程式開發人員使用的新功能。
-
-本文件提供最值得受到矚目的 API 簡介。</p>
-
-<p>M 開發人員預覽版的適用對象是<strong>早期採用的開發人員</strong>和<strong>測試者</strong>。
-如果您對於如何影響 Android 架構方向深感興趣,請<a href="{@docRoot}preview/setup-sdk.html">嘗試使用 M 開發人員預覽版</a>,然後將您的意見反應傳送給我們!
-
-
-</p>
-
-<p class="caution"><strong>注意:</strong>請勿將使用 M 開發人員預覽版的應用程式發行到 Google Play 商店。
-</p>
-
-<p class="note"><strong>注意:</strong>本文件通常會參考 <a href="{@docRoot}">developer.android.com</a> 上尚未提供可用參考資料的類別和方法。
-這些 API 元素在本文件中的格式是 {@code code style} (不含超連結)。
-如需這些元素的 API 初稿文件,請下載<a href="{@docRoot}preview/download.html#docs">預覽版參考資料</a>。
-</p>
-
-<h3>重要行為變更</h3>
-
-<p>如果您先前曾發行過適用於 Android 的應用程式,請注意,您的應用程式會受到平台中的變更所影響。
-</p>
-
-<p>如需完整資訊,請參閱<a href="behavior-changes.html">行為變更</a>。</p>
-
-<h2 id="app-linking">應用程式連結</h2>
-<p>這個預覽版提供功能更強大的應用程式連結來增強 Android 的意圖系統。此功能讓您能夠將應用程式關聯到您自己的 Web 網域。
-根據這個關聯,平台可以判斷要用來處理特定 Web 連結的預設應用程式,並略過提示使用者選取應用程式的程序。如要深入瞭解如何實作此功能,請參閱<a href="{@docRoot}preview/features/app-linking.html">應用程式連結</a>。
-
-
-
-
-<h2 id="backup">針對應用程式進行自動備份</h2>
-<p>系統現在會針對應用程式執行自動完整資料備份與還原。預設會針對目標為 M 預覽版的應用程式啟用這個行為;您不需要新增任何其他的程式碼。
-如果使用者刪除他們的 Google 帳戶,也會同時刪除他們的備份資料。
-如要深入瞭解此功能的運作方式以及如何在檔案系統上設定要備份的內容,請參閱<a href="{@docRoot}preview/backup/index.html">針對應用程式進行自動備份</a>。
-
-</p>
-
-<h2 id="authentication">驗證</h2>
-<p>這個預覽版提供新的 API,讓您能夠在支援的裝置上利用使用者的指紋掃描來驗證他們,並使用裝置解鎖機制 (例如鎖定螢幕密碼) 來檢查距離最後一次驗證該使用者的時間有多接近。
-
-將這些 API 與 <a href="{@docRoot}training/articles/keystore.html">Android 金鑰存放區系統</a>搭配使用。
-</p>
-
-<h3 id="fingerprint-authentication">指紋驗證</h3>
-
-<p>如要透過指紋掃描驗證使用者,請取得新的
-{@code android.hardware.fingerprint.FingerprintManager} 類別的執行個體,然後呼叫
-{@code FingerprintManager.authenticate()} 方法。您的應用程式必須在配備指紋感應器的相容裝置上執行。
-您必須在應用程式上實作適用於指紋驗證流程的使用者介面,並在您的 UI 中使用標準的 Android 指紋圖示。Android 指紋圖示 ({@code c_fp_40px.png}) 隨附於<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">範例應用程式</a>中。如果您正在開發多個使用指紋驗證的應用程式,請注意,每個應用程式都必須個別驗證使用者的指紋。
-
-
-
-
-</p>
-
-<p>如要在您的應用程式中使用此功能,請先在您的宣示說明中新增 {@code USE_FINGERPRINT} 權限。
-</p>
-
-<pre>
-&lt;uses-permission
-        android:name="android.permission.USE_FINGERPRINT" /&gt;
-</pre>
-
-<img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-
-<p>如要查看指紋驗證的應用程式實作,請參閱<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">指紋對話方塊範例</a>。
-
-</p>
-
-<p>如果您正在測試此功能,請依照下列步驟執行:</p>
-<ol>
-<li>安裝 Android SDK 工具修訂版 24.3 (如果您尚未安裝)。</li>
-<li>前往 [設定] &gt; [安全性] &gt; [指紋]<strong></strong>,然後依照註冊指示,在模擬器中註冊新的指紋。
-</li>
-<li>使用模擬器,利用下列命令來模擬指紋輕觸事件。
-使用同一個命令,在鎖定螢幕上或您的應用程式中模擬指紋輕觸事件。
-
-<pre class="no-prettyprint">
-adb -e emu finger touch &lt;finger_id&gt;
-</pre>
-<p>在 Windows 上,您可能必須執行 {@code telnet 127.0.0.1 <emulator-id>},後面接著
-{@code finger touch <finger_id>}。
-</p>
-</li>
-</ol>
-
-<h3 id="confirm-credential">確認認證</h3>
-<p>您的應用程式可以根據使用者最近一次將裝置解鎖的時間有多接近來驗證他們。此功能讓使用者不需記住其他應用程式特定的密碼,並且讓您不需要實作自己的驗證使用者介面。
-
-您的應用程式應該將此功能與公用或秘密金鑰實作搭配使用,來進行使用者驗證。
-</p>
-
-<p>如要設定在成功驗證使用者之後,同一個金鑰可重複使用的逾時時間長度,可在您設定 {@link javax.crypto.KeyGenerator} 或
-{@link java.security.KeyPairGenerator} 時,呼叫新的
-{@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()}
-方法。
-此功能目前適用於對稱式密碼編譯操作。
-</p>
-
-<p>避免過度顯示重新驗證對話方塊 -- 您的應用程式應該先嘗試使用密碼編譯物件,如果逾時過期,才使用
-{@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()}
-方法在您的應用程式內重新驗證使用者。
-
-</p>
-
-<p>如要查看此功能的應用程式實作,請參閱<a href="https://github.com/googlesamples/android-ConfirmCredential" class="external-link">確認認證範例</a>。
-
-</p>
-
-<h2 id="direct-share">直接分享</h2>
-
-<img src="{@docRoot}preview/images/direct-share-screen.png" srcset="{@docRoot}preview/images/direct-share-screen.png 1x, {@docRoot}preview/images/direct-share-screen_2x.png 2x" style="float:right; margin:0 0 20px 30px" width="312" height="329" />
-
-<p>這個預覽版提供 API,讓使用者能夠以直覺且快速的方式進行分享。您現在可以定義「直接分享目標」<em></em>,在您的應用程式中啟動特定的行為。這些直接分享目標是透過 [分享]<em></em> 選單來向使用者公開。
-
-此功能讓使用者能夠將內容分享到其他應用程式內的目標,例如聯絡人。
-例如,直接分享目標可以在其他社交網路應用程式中啟動某個活動,讓使用者能夠在該應用程式中,直接與特定的朋友或社群分享內容。
-
-</p>
-
-<p>如要啟用直接分享目標,您必須定義一個類別來擴充
-{@code android.service.} <br>
-{@code chooser.ChooserTargetService} 類別。在宣示說明中宣告您的
-{@code ChooserTargetService}。在該宣告中,指定
-{@code BIND_CHOOSER_TARGET_SERVICE} 權限以及含有
-{@code SERVICE_INTERFACE} 動作的意圖篩選條件。</p>
-<p>下列範例示範如何在您的宣示說明中宣告 {@code ChooserTargetService}。
-</p>
-<pre>
-&lt;service android:name=".ChooserTargetService"
-        android:label="&#64;string/service_name"
-        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"&gt;
-    &lt;intent-filter&gt;
-        &lt;action android:name="android.service.chooser.ChooserTargetService" /&gt;
-    &lt;/intent-filter&gt;
-&lt;/service&gt;
-</pre>
-
-<p>針對您要向 {@code ChooserTargetService} 公開的每個活動,在您的應用程式宣示說明中,新增名稱為
-{@code "android.service.chooser.chooser_target_service"} 的
-{@code <meta-data>} 元素。
-</p>
-
-<pre>
-&lt;activity android:name=".MyShareActivity”
-        android:label="&#64;string/share_activity_label"&gt;
-    &lt;intent-filter>
-        &lt;action android:name="android.intent.action.SEND" /&gt;
-    &lt;/intent-filter>
-&lt;meta-data
-        android:name="android.service.chooser.chooser_target_service"
-        android:value=".ChooserTargetService" /&gt;
-&lt;/activity>
-</pre>
-
-<h2 id="voice-interactions">語音互動</h2>
-<p>
-這個預覽版提供新的語音互動 API,可與<a href="https://developers.google.com/voice-actions/" class="external-link">語音操作</a>搭配使用,讓您能夠在應用程式內建置交談式語音體驗。
-
-呼叫
-{@code android.app.Activity.isVoiceInteraction()} 方法,來判斷是否已啟動您的活動來回應語音操作。
-如果是,則您的應用程式可以使用
-{@code android.app.VoiceInteractor} 類別,來要求使用者進行語音確認、從選項清單中選取,以及其他更多動作。
-如要深入瞭解如何實作語音操作,請參閱<a href="https://developers.google.com/voice-actions/interaction/" class="external-link">語音操作開發人員網站</a>。
-
-</p>
-
-<h2 id="assist">協助 API</h2>
-<p>
-這個預覽版提供一種新方式,可透過小幫手吸引使用者來使用您的應用程式。如要使用此功能,使用者必須啟用小幫手來使用目前的內容。
-啟用之後,使用者就能夠在所有應用程式內,按住 <strong>Home</strong> 按鈕不放來啟用小幫手。
-</p>
-<p>您的應用程式可以設定
-{@link android.view.WindowManager.LayoutParams#FLAG_SECURE} 旗標,選擇不要與小幫手分享目前的內容。除了平台傳遞給小幫手的一組標準資訊之外,您的應用程式也可以使用新的 {@code android.app.Activity.AssistContent} 類別來分享其他資訊。
-
-</p>
-
-<p>如要將您應用程式的其他內容提供給小幫手,請依照下列步驟執行:</p>
-
-<ol>
-<li>實作 {@link android.app.Application.OnProvideAssistDataListener} 介面。</li>
-<li>使用
-{@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()} 來註冊這個監聽器。</li>
-<li>如要提供特定活動的內容資訊,請覆寫
- {@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()}
-回呼,然後選擇性地覆寫新的 {@code Activity.onProvideAssistContent()} 回呼。
-</ol>
-
-<h2 id="notifications">通知</h2>
-<p>這個預覽版新增了下列適用於通知的 API 變更:</p>
-<ul>
-  <li>新的 {@code NotificationListenerService.INTERRUPTION_FILTER_ALARMS} 篩選條件級別,會對應至新的「僅允許鬧鐘」<em></em>的請勿打擾模式。
-</li>
-  <li>新的 {@code Notification.CATEGORY_REMINDER} 類別值,可用來分辨來自其他事件 ({@link android.app.Notification#CATEGORY_EVENT}) 與鬧鐘 ({@link android.app.Notification#CATEGORY_ALARM}) 的使用者排程提醒。
-
-
-</li>
-  <li>新的 {@code android.graphics.drawable.Icon} 類別,可以透過 {@code Notification.Builder.setSmallIcon(Icon)} 和
-{@code Notification.Builder.setLargeIcon(Icon)} 方法來附加您的通知。
-</li>
-  <li>新的 {@code NotificationManager.getActiveNotifications()} 方法,讓您的應用程式能夠找出它們目前有哪些通知仍處於有效狀態。
-如要查看使用此功能的應用程式實作,請參閱<a href="https://github.com/googlesamples/android-ActiveNotifications" class="external-link">使用中通知範例</a>。
-</li>
-</ul>
-
-<h2 id="bluetooth-stylus">藍牙手寫筆支援</h2>
-<p>這個預覽版提供對於使用者使用藍牙手寫筆進行輸入的改良支援。使用者可以將相容的藍芽手寫筆與他們的手機或平板電腦配對並連線。
-連線之後,來自觸控螢幕的位置資訊會與來自手寫筆的壓力和按鈕資訊結合,比起單獨使用觸控螢幕,這樣能夠提供更大範圍的表達方式。
-
-您的應用程式可以藉由在您的活動中註冊新的
-{@code View.onStylusButtonPressListener} 和 {@code GestureDetector.OnStylusButtonPressListener}
-回呼,來監聽手寫筆按鈕的按下動作,並執行次要動作。
-</p>
-
-<p>使用 {@link android.view.MotionEvent} 方法和常數來偵測手寫筆按鈕互動:
-</p>
-<ul>
-<li>如果使用者使用具有一個按鈕的手寫筆輕觸應用程式的螢幕,則
-{@link android.view.MotionEvent#getToolType(int) getTooltype()} 方法會傳回
-{@link android.view.MotionEvent#TOOL_TYPE_STYLUS}。</li>
-<li>針對目標為 M 預覽版的應用程式,
-{@link android.view.MotionEvent#getButtonState() getButtonState()}
-方法會在使用者按下主要手寫筆按鈕時傳回 {@code MotionEvent.STYLUS_BUTTON_PRIMARY}。
-如果手寫筆有第二個按鈕,則當使用者按下該按鈕時,同一個方法會傳回
-{@code MotionEvent.STYLUS_BUTTON_SECONDARY}。如果使用者同時按下這兩個按鈕,此方法即會使用 OR 連結,一併傳回這兩個值 ({@code STYLUS_BUTTON_PRIMARY|STYLUS_BUTTON_SECONDARY})。
-
-</li>
-<li>
-針對目標為較低平台版本的應用程式,
-{@link android.view.MotionEvent#getButtonState() getButtonState()} 方法會傳回
-{@link android.view.MotionEvent#BUTTON_SECONDARY} (針對主要手寫筆按鈕的按下動作)、
-{@link android.view.MotionEvent#BUTTON_TERTIARY} (針對次要手寫筆按鈕的按下動作),或兩者。
-</li>
-</ul>
-
-<h2 id="ble-scanning">已改進藍牙低電量掃描</h2>
-<p>
-如果您的應用程式會執行藍芽低電量掃描,就可以使用新的
-{@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} 方法,來指定如果先找到符合
-{@link android.bluetooth.le.ScanFilter} 組合的廣告封包,以及在某個時段中找不到它時,只需通知回呼。
-
-比起先前平台版本中所提供的功能,這個掃描方法功能更強大且更有效率。
-
-</p>
-
-<h2 id="hotspot">無線基地台 2.0 版本 1 支援</h2>
-<p>
-這個預覽版在 Nexus 6 和 Nexus 9 裝置上新增對於無線基地台 2.0 版本 1 規格的支援。如要在您的應用程式中佈建無線基地台 2.0 認證,請使用
-{@link android.net.wifi.WifiEnterpriseConfig} 類別的新方法,例如 {@code setPlmn()} 和
-{@code setRealm()}。
-在 {@link android.net.wifi.WifiConfiguration} 物件中,您可以設定
-{@link android.net.wifi.WifiConfiguration#FQDN} 和 {@code providerFriendlyName} 欄位。新的 {@code ScanResult.PasspointNetwork} 屬性指出偵測到的網路是否代表無線基地台 2.0 存取點。
-
-
-</p>
-
-<h2 id="4K-display">4K 顯示模式</h2>
-<p>此平台現在允許應用程式能夠要求將在相容硬體中呈現的顯示解析度升級到 4K。
-如要查詢目前的實際解析度,請使用新的
-{@code android.view.Display.Mode} API。如果 UI 是使用較低的邏輯解析度來繪製,並向上升級為較高的實際解析度,請注意,
-{@code Display.Mode.getPhysicalWidth()} 方法傳回的實際解析度可能會與 {@link android.view.Display#getSize(android.graphics.Point) getSize()} 報告的邏輯解析度不同。
-
-</p>
-
-<p>您可以在應用程式執行時,藉由設定應用程式視窗的 {@code WindowManager.LayoutParams.preferredDisplayModeId} 屬性,來要求系統變更該應用程式中的實際解析度。
-如果您想要切換為 4K 顯示解析度,這個功能非常實用。
-儘管在 4K 顯示模式中,UI 會持續使用原始解析度 (例如 1080p) 來呈現並向上升級為 4K,但是
-{@link android.view.SurfaceView} 物件可能會以原生解析度來顯示內容。
-</p>
-
-<h2 id="behavior-themeable-colorstatelists">具備設計風格的 ColorStateList</h2>
-<p>針對執行 M 預覽版的裝置,
-{@link android.content.res.ColorStateList} 中目前支援設計風格屬性。
-{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} 和
-{@link android.content.res.Resources#getColor(int) getColor()} 方法已過時。如果您正在呼叫這些 API,請改為呼叫新的 {@code Context.getColorStateList()} 或
-{@code Context.getColor()} 方法。
-您也可以透過 {@link android.support.v4.content.ContextCompat},在 v4 appcompat 程式庫中取得這些方法。
-</p>
-
-<h2 id="audio">音訊功能</h2>
-
-<p>這個預覽版在 Android 上新增了音訊處理的增強功能,包括: </p>
-<ul>
-  <li>利用新的 {@code android.media.midi} API,來支援 <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a> 通訊協定。
-使用這些 API 來傳送與接收 MIDI 事件。
-</li>
-  <li>新的 {@code android.media.AudioRecord.Builder} 和 {@code android.media.AudioTrack.Builder}
-類別,可分別建立數位音訊擷取和播放物件,並設定音訊來源和接收屬性來覆寫系統預設值。
-</li>
-  <li>API 勾點,適合用來關聯音訊與輸入裝置。如果您的應用程式允許使用者從連接到 Android TV 的遊戲控制器或遙控器啟動音訊搜尋,則這特別有用。系統會在使用者啟動搜尋時,叫用新的 {@code android.app.Activity.onSearchRequested()} 回呼。
-
-
-如要判斷使用者的輸入裝置是否有內建的麥克風,請從該回呼中擷取 {@link android.view.InputDevice} 物件,然後呼叫新的
-{@code InputDevice.hasMic()} 方法。
-</li>
-  <li>新的 {@code android.media.AudioDevicesManager} 類別,讓您能夠擷取所有已連接的來源與接收音訊裝置的清單。
-如果您想要讓應用程式在連接或中斷連接音訊裝置時收到通知,也可以指定
-{@code android.media.OnAudioDeviceConnectionListener} 物件。
-</li>
-</ul>
-
-<h2 id="video">影片功能</h2>
-<p>這個預覽版在影片處理 API 中增加了新功能,包括:</p>
-<ul>
-<li>新的 {@code android.media.MediaSync} 類別,可協助應用程式同步轉譯音訊和影片串流。
-音訊緩衝區是利用非封鎖的方式來提交,並透過回呼來傳回。
-它也支援動態播放速率。
-</li>
-<li>新的 {@code MediaDrm.EVENT_SESSION_RECLAIMED} 事件,指出應用程式開啟的工作階段已由資源管理員所回收。
-如果您的應用程式使用 DRM 工作階段,就應該處理這個事件,並確定不會使用回收的工作階段。
-
-</li>
-<li>新的 {@code MediaCodec.CodecException.ERROR_RECLAIMED} 錯誤碼,表示資源管理員已回收轉碼器所使用的媒體資源。
-如果發生這個例外狀況,就必須釋放轉碼器,就如同它已進入終止狀態。
-
-</li>
-<li>新的 {@code MediaCodecInfo.CodecCapabilities.getMaxSupportedInstances()} 介面,可取得支援並行轉碼器執行個體數目上限的提示。
-
-</li>
-<li>新的 {@code MediaPlayer.setPlaybackParams()} 方法,可將媒體播放速率設定為快速或慢速播放。
-這也可以和影片一起自動延伸或加速音訊播放。
-</li>
-</ul>
-
-<h2 id="camera">相機功能</h2>
-<p>這個預覽版包含下列可用來存取相機閃光燈和相機重新處理影像的 API:
-</p>
-
-<h3 id="flashlight">閃光燈 API</h3>
-<p>如果相機裝置具有閃光裝置,則您可以呼叫 {@code CameraManager.setTorchMode()}
-方法,在不開啟相機裝置的情況下,開啟或關閉閃光裝置的閃光模式。應用程式不具備閃光裝置或相機裝置的獨佔擁有權。
-每當相機裝置變成無法使用時,或者,當其他相機資源讓閃光變成無法使用時,閃光模式也會關閉且變成無法使用。
-
-其他應用程式也會呼叫 {@code setTorchMode()}
-來關閉閃光模式。關閉最後一個開啟閃光模式的應用程式時,閃光模式即會關閉。
-</p>
-
-<p>您可以呼叫
-{@code CameraManager.registerTorchCallback()} 方法,來註冊回呼要收到有關閃光模式狀態的通知。第一次註冊回呼時,會立即使用所有目前已知具有閃光裝置之相機裝置的閃光模式來呼叫它。
-
-如果成功開啟或關閉閃光模式,即會叫用
-{@code CameraManager.TorchCallback.onTorchModeChanged()} 方法。</p>
-
-<h3 id="reprocessing">重新處理 API</h3>
-<p>{@link android.hardware.camera2 Camera2} API 已擴充,支援重新處理 YUV 和私人不透明格式的影像。
-您的應用程式會判斷是否可透過 {@code CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES} 使用重新處理功能。
-如果裝置支援重新處理,您就可以呼叫
-{@code CameraDevice.createReprocessableCaptureSession()} 來建立可重新處理的相機拍攝工作階段,然後建立適用於重新處理輸入緩衝區的要求。
-
-</p>
-
-<p>使用 {@code ImageWriter} 類別,將輸入緩衝區流程連接到相機重新處理輸入。
-如要取得空的緩衝區,請依照這個程式設計模型執行:</p>
-
-<ol>
-<li>呼叫 {@code ImageWriter.dequeueInputImage()} 方法。</li>
-<li>在輸入緩衝區中填入資料。</li>
-<li>呼叫 {@code ImageWriter.queueInputImage()} 方法,將緩衝區傳送到相機。</li>
-</ol>
-
-<p>如果您將 {@code ImageWriter} 物件和
-{@code android.graphics.ImageFormat.PRIVATE} 影像一起使用,您的應用程式就無法直接存取影像資料。
-請改為呼叫 {@code ImageWriter.queueInputImage()} 方法但不含任何緩衝區複本,直接將 {@code ImageFormat.PRIVATE} 影像傳遞到
-{@code ImageWriter}。
-</p>
-
-<p>{@code ImageReader} 類別現在支援 {@code android.graphics.ImageFormat.PRIVATE} 格式的影像串流。
-這個支援讓您的應用程式能夠保留
-{@code ImageReader} 輸出影像的循環影像佇列、選取一或多個影像,然後將它們傳送到
-{@code ImageWriter} 以進行相機重新處理。</p>
-
-<h2 id="afw">Android for Work 功能</h2>
-<p>這個預覽版包含下列適用於 Android for Work 功能的新 API:</p>
-<ul>
-  <li><strong>已增強適用於公司擁有、單一用途裝置的控制項:</strong>裝置擁有者現在可以控制下列設定,來改進公司擁有、單一用途 (COSU) 裝置的管理:
-
-
-  <ul>
-    <li>使用
-{@code DevicePolicyManager.setKeyguardEnabledState()} 方法來停用或重新啟用滑動解鎖。</li>
-    <li>使用
-{@code DevicePolicyManager.setStatusBarEnabledState()} 方法,來停用或重新啟用狀態列 (包括快速設定、通知,以及啟動 Google 即時資訊的導覽向上滑動手勢)。
-</li>
-    <li>使用 {@link android.os.UserManager} 常數
-{@code DISALLOW_SAFE_BOOT} 來停用或重新啟用安全開機。</li>
-    <li>使用 
-  {@link android.provider.Settings.Global} 常數 {@code STAY_ON_WHILE_PLUGGED_IN},防止螢幕在使用者為裝置連接電源時關閉。</li>
-  </ul>
-  </li>
-  <li><strong>透過裝置擁有者自動安裝與解除安裝應用程式:</strong>裝置擁有者現在可以使用 {@link android.content.pm.PackageInstaller}
-API (與 Google Play for Work 無關) 自動安裝與解除安裝應用程式。
-您現在可以透過裝置擁有者佈建裝置,該裝置擁有者可在不與使用者互動的情況下擷取並安裝應用程式。
-如要在不啟用 Google 帳戶的情況下輕觸一次就能佈建 Kiosk 或其他這類裝置,這個功能非常有用。
-</li>
-<li><strong>自動存取企業憑證:</strong>當應用程式呼叫
-{@link android.security.KeyChain#choosePrivateKeyAlias(android.app.Activity,android.security.KeyChainAliasCallback,java.lang.String[],java.security.Principal[],java.lang.String,int,java.lang.String) choosePrivateKeyAlias()} 時,在系統提示使用者選取憑證之前,設定檔或裝置擁有者現在會呼叫 {@code DeviceAdminReceiver.onChoosePrivateKeyAlias()} 方法,為提出要求的應用程式自動提供別名。
-
-
-這個功能讓您能夠在不與使用者互動的情況下,為受管理的應用程式授與存取憑證的權限。
-</li>
-<li><strong>自動接受系統更新。</strong>藉由使用
-{@code DevicePolicyManager.setSystemUpdatePolicy()} 來設定系統更新原則,裝置擁有者現在可以自動接受系統更新 (例如,在 Kiosk 裝置的案例中),或者延後更新,並防止使用者進行更新,最多 30 天。
-
-因此,系統管理員可以設定必須取得更新的每日時間範圍 ,例如,在 Kiosk 裝置處於未使用狀態時。
-在系統更新可供使用時,系統就會檢查工作原則控制器應用程式是否已設定系統更新原則,並據以運作。
-
-
-</li>
-<li>
-<strong>委派的憑證安裝:</strong>設定檔或裝置擁有者現在可以授與第三方廠商的應用程式呼叫這些 {@link android.app.admin.DevicePolicyManager} 憑證管理 API 的能力:
-
-
-<ul>
-  <li>{@link android.app.admin.DevicePolicyManager#getInstalledCaCerts(android.content.ComponentName)
-getInstalledCaCerts()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#hasCaCertInstalled(android.content.ComponentName,byte[])
-hasCaCertInstalled()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#installCaCert(android.content.ComponentName,byte[])
-installCaCert()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#uninstallCaCert(android.content.ComponentName,byte[])
-uninstallCaCert()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#uninstallAllUserCaCerts(android.content.ComponentName)
-uninstallAllUserCaCerts()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#installKeyPair(android.content.ComponentName,java.security.PrivateKey,java.security.cert.Certificate,java.lang.String)
-installKeyPair()}</li>
-</ul>
-</li>
-<li><strong>企業原廠重設保護:</strong>佈建裝置擁有者時,您現在可以藉由設定
-{@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS} 套件組合,來設定參數以解除鎖定原廠重設保護 (FRP)。
-NFC 程式設計人員應用程式可以在已重設裝置來解除鎖定 FRP 並佈建裝置之後提供這些參數,而不需使用先前設定的 Google 帳戶。
-
-如果您並未修改這些參數,FRP 會就地保留,並防止裝置在沒有先前啟用的 Google 認證的情況下啟用。
-
-
-<p>此外,裝置擁有者可以在 Google Play 服務上設定應用程式限制,來指定可用來解除鎖定 FRP 的替代 Google 帳戶,以取代已在裝置上啟用的帳戶。
-</p>
-</li>
-<img src="{@docRoot}preview/images/work-profile-screen.png" srcset="{@docRoot}preview/images/work-profile-screen.png 1x, {@docRoot}preview/images/work-profile-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-<li><strong>資料使用量追蹤。</strong>設定檔或裝置擁有者現在可以使用新的
-{@code android.app.usage.NetworkStatsManager} 方法,針對可在 [設定] &gt; [資料]<strong></strong> 使用量中看見的資料使用量統計資料進行查詢。
-系統會自動授與設定檔擁有者權限來查詢他們所管理之設定檔上的資料,在此同時,裝置擁有者會取得受管理的主要使用者之使用量資料的存取權限。
-
-</li>
-<li><strong>執行階段權限管理:</strong>
-<p>設定檔或裝置擁有者可以使用
-{@code DevicePolicyManager.setPermissionPolicy()},針對所有應用程式的所有執行階段要求設定權限原則,以提示使用者授與一般權限,或者以無訊息方式自動授與或拒絕該權限。
-
-如果設定了後項原則,使用者就無法在應用程式權限畫面的 [設定]<strong></strong> 中,修改設定檔或裝置擁有者所做的選項。
-
-</p></li>
-<li><strong>設定中的 VPN:</strong>VPN 應用程式現在可以在 [設定] &gt; [更多] &gt; [VPN]<strong></strong> 中看見。此外,伴隨 VPN 使用量出現的通知是該 VPN 設定方式的特定通知。
-
-
-針對設定檔擁有者,通知是專門用來通知是否已針對受管理的設定檔、個人設定檔或兩者設定了 VPN。
-針對裝置擁有者,通知是專門用來通知是否已針對整個裝置設定了 VPN。
-</li>
-<li><strong>工作狀態通知:</strong>每當來自受管理設定檔的應用程式在前景中有活動時,狀態列上就會出現公事包圖示。
-因此,如果直接將裝置解除鎖定至受管理設定檔中應用程式的活動,即會顯示一個快顯通知,通知使用者他們正處於工作設定檔內。
-
-
-</li>
-</ul>
-
-<p class="note">
-  如需 M 開發人員預覽版中所有 API 變更的詳細檢視,請參閱 <a href="{@docRoot}preview/download.html">API 差異報告</a>。
-</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/backup/index.jd b/docs/html-intl/intl/zh-tw/preview/backup/index.jd
deleted file mode 100644
index edb8b98..0000000
--- a/docs/html-intl/intl/zh-tw/preview/backup/index.jd
+++ /dev/null
@@ -1,327 +0,0 @@
-page.title=針對應用程式進行自動備份
-page.tags=backup, previewresources, androidm
-page.keywords=backup, autobackup, preview
-page.image=images/cards/card-auto-backup_2x.png
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本文件內容</h2>
-      <ol>
-        <li><a href="#overview">總覽</a></li>
-        <li><a href="#configuring">設定資料備份</a></li>
-        <li><a href="#testing">測試備份設定</a></li>
-        <li><a href="#issues">已知問題</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  使用者通常會在應用程式中花費很多時間精力建立資料和設定偏好設定。
-如果使用者換掉壞掉的裝置或升級到新的裝置時,能夠保存裝置上的資料,就能夠讓使用者獲得良好的體驗。
-執行 Android M 預覽版系統的裝置可以協助在上述情況自動將應用程式資料備份到 Google 雲端硬碟,讓使用者獲得良好的體驗。
-
-如果使用者變更或升級裝置,應用程式資料會自動儲存。
-
-</p>
-
-<p>
-  在執行 Android M 預覽版的裝置上安裝的所有應用程式,預設都會啟用自動備份。不需要任何額外的應用程式程式碼。
-系統則提供使用者不進行自動備份資料的選項。
-您也可以選擇限制要備份應用程式的哪些資料。
-</p>
-
-<p>
-  本文件說明新的系統行為,以及如何指定備份應用程式的哪些資料。
-
-</p>
-
-<h2 id="overview">總覽</h2>
-
-<p>
-  自動備份功能保存應用程式資料的方法,是將使用者裝置上建立的資料上傳到使用者的 Google 雲端硬碟帳戶,然後將資料加密。
-儲存資料不會向您或使用者收費,儲存的資料也不會計入使用者個人雲端硬碟的容量配額。
-在 M 預覽版期間,使用者最多可以為每個 Android 應用程式儲存 25 MB 的資料。
-
-</p>
-
-<p>
-  當裝置閒置、正在充電且連線到 Wi-Fi 網路時,每 24 小時會執行一次自動備份。
-當符合上述情況時,備份管理員服務就會將所有可用的備份資料上傳到雲端。
-當使用者轉換到新的裝置,或者解除安裝又重新安裝已備份的應用程式時,系統會進行一項還原作業,將備份的資料複製到新安裝之應用程式的資料目錄。
-
-
-</p>
-
-<p class="note">
-  <strong>注意:</strong>如果您的應用程式使用舊版
- <a href="{@docRoot}google/backup/index.html">Android 備份服務</a>,這個新的行為就不適用,現有的備份行為還是如往常運作。
-
-</p>
-
-
-<h3 id="auto-exclude">自動排除的資料檔案</h3>
-
-<p>
-  並非所有應用程式資料都需要備份,例如暫存檔案和快取,因此自動備份服務預設會排除某些資料檔案:
-
-</p>
-
-<ul>
-  <li>{@link android.content.Context#getCacheDir
-getCacheDir()} 和 {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()}
-方法所參考目錄中的檔案。
-  </li>
-
-  <li>位於外部儲存空間的檔案,除非這些檔案位於
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
-方法所參考的目錄中。
-  </li>
-
-  <li>{@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()} 方法所參考目錄中的檔案。
-
-  </li>
-</ul>
-
-<h2 id="configuring">設定資料備份</h2>
-
-<p>
-  除了上一節所列自動排除的檔案之外,其餘由 M 預覽版裝置上安裝的任何應用程式所建立的資料一律都會備份。
-您可以使用應用程式宣示說明中的設定,進一步限制和設定要備份應用程式的哪些資料。
-
-</p>
-
-<h3 id="include-exclude">納入或排除資料</h3>
-
-<p>
-  根據您的應用程式需要的資料和您儲存資料的方式,您可能需要設定特定的規則來納入或排除某些檔案或目錄。
-自動備份服務支援使用 XML 設定檔和應用程式宣示說明來設定這些備份規則。
-
-在應用程式宣示說明中,您可以依照下列範例指定備份配置設定檔:
-
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:tools="http://schemas.android.com/tools"
-        package="com.my.appexample"&gt;
-    &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
-    &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
-    &lt;app ...
-<strong>        android:fullBackupContent="&#64;xml/mybackupscheme"&gt;</strong>
-    &lt;/app&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
-
-<p>
-  在此範例程式碼中,<code>android:fullBackupContent</code> 屬性指定應用程式開發專案的 <code>res/xml/</code> 目錄中,名為
-<code>mybackupscheme.xml</code> 的 XML 檔案。
-此設定檔包含要備份哪些檔案的規則。
-下列範例程式碼顯示排除特定檔案不要進行備份的設定檔:
-
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;full-backup-content&gt;
-    &lt;exclude domain="database" path="device_info.db"/&gt;
-&lt;/full-backup-content&gt;
-</pre>
-
-<p>
-  此範例備份設定只排除特定資料庫檔案不要進行備份。
-  其他所有檔案都會備份。
-</p>
-
-<h4>備份設定語法</h4>
-
-<p>
-  您可以使用備份服務設定指定要將哪些檔案納入或排除備份。
-資料備份設定 XML 檔案的語法如下所示:
-</p>
-
-<pre>
-&lt;full-backup-content&gt;
-    &lt;include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
-    &lt;exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
-&lt;/full-backup-content&gt;
-</pre>
-
-<p>
-  您可以使用下列元素和屬性指定要將哪些檔案納入備份或從備份排除:
-
-</p>
-
-<ul>
-  <li>
-  <code>&lt;include&gt;</code>。如果您想要指定備份一組資源,請使用此元素,而不要讓系統預設備份應用程式的所有資料。
-當您指定
-<code>&lt;include&gt;</code> 標籤時,系統只會備份此元素「指定的資源」<em></em>。
-
-  </li>
-
-  <li>
-  <code>&lt;exclude&gt;</code>。如果您想要指定一組資源不要進行備份,請使用此元素。
-系統會備份應用程式中除了此元素指定之資源以外的其他所有資料。
-
-  </li>
-
-  <li>
-  <code>domain.</code> 您想要納入或排除備份的資源類型。此屬性可以指定的有效值包括:
-
-  </li>
-
-  <li style="list-style: none">
-  <ul>
-    <li>
-    <code>root</code>。指定資源位於應用程式的根目錄。
-    </li>
-
-    <li>
-    <code>file</code>。位於
-{@link android.content.Context#getFilesDir getFilesDir()} 方法傳回的目錄中的資源。
-    </li>
-
-    <li>
-    <code>database</code>。{@link android.content.Context#getDatabasePath getDatabasePath()} 方法或使用
-{@link android.database.sqlite.SQLiteOpenHelper} 類別傳回的資料庫。
-
-    </li>
-
-    <li>
-    <code>sharedpref</code>。{@link android.content.Context#getSharedPreferences getSharedPreferences()}
-方法傳回的 {@link android.content.SharedPreferences} 物件。
-
-    </li>
-
-    <li>
-    <code>external</code>。指定資源位於外部儲存空間,並且位於
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()} 方法傳回的目錄中的檔案。
-
-    </li>
-
-    <li>
-    <code>path</code>。您想要納入或排除備份的資源檔案路徑。
-
-    </li>
-  </ul>
-  </li>
-</ul>
-
-
-<h3 id="prohibit">禁止資料備份</h3>
-
-<p>
-  您可以在應用程式的宣示說明元素中將
-<code>android:allowBackup</code> 屬性設定為 <code>false</code>,選擇不要對任何應用程式資料進行自動備份。
-此設定如下列範例程式碼所示:
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:tools="http://schemas.android.com/tools"
-        package="com.my.appexample"&gt;
-    &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
-    &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
-    &lt;app ...
-<strong>        android:allowBackup="false"&gt;</strong>
-    &lt;/app&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
-
-
-<h2 id="testing">測試備份設定</h2>
-
-<p>
-  如果您建立了備份設定,就要進行測試,以確保您的應用程式能正確儲存和還原資料。
-
-</p>
-
-
-<h4>啟用備份記錄</h4>
-
-<p>
-  如要協助判斷備份功能如何剖析您的 XML 檔案,請在執行測試備份之前先啟用記錄功能:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
-</pre>
-
-<h4>測試備份</h4>
-
-<p>如要手動執行備份,首先您必須呼叫下列命令以初始化備份管理員:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr run
-</pre>
-
-<p>
-  接著,您要使用下列命令,將 <code>&lt;PACKAGE&gt;</code> 參數指定為您應用程式的套件名稱,手動備份您的應用程式:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr fullbackup &lt;PACKAGE&gt;</pre>
-
-
-<h4>測試還原</h4>
-
-<p>
-  如要在應用程式資料備份之後手動啟動還原,請呼叫下列命令,將 <code>&lt;PACKAGE&gt;</code> 參數指定為您應用程式的套件名稱:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr restore &lt;PACKAGE&gt;
-</pre>
-
-<p class="warning">
-  <b>警告:</b>這個動作在執行還原作業之前會先停止您的應用程式,然後清除其中的資料。
-
-</p>
-
-<p>
-  如果解除安裝又重新安裝應用程式,就會針對應用程式啟動還原程序。應用程式安裝完成之後,就會自動從雲端還原應用程式資料。
-
-</p>
-
-
-<h4>疑難排解備份</h4>
-
-<p>
-  如果您遇到問題,可以在 [設定] &gt; [備份]<strong></strong> 中關閉備份再開啟、將裝置重設為出廠值,或是呼叫下列命令,清除備份資料及相關的中繼資料:
-
-
-</p>
-
-<pre>$ adb shell bmgr wipe &lt;TRANSPORT&gt; &lt;PACKAGE&gt;</pre>
-
-<p>
-  <code>&lt;TRANSPORT&gt;</code> 值前面必須加上 <code>com.google.android.gms</code>。
-  如要取得傳輸清單,請呼叫下列命令:
-</p>
-
-<pre>$ adb shell bmgr list transports</pre>
-
-<h2 id="issues">已知問題</h2>
-
-<p>以下是自動備份服務的已知問題:</p>
-
-<ul>
-  <li><strong>Google 雲端通訊</strong> - 使用「Google 雲端通訊」推送通知的應用程式有一個已知問題,亦即備份由「Google 雲端通訊」註冊程序傳回的註冊 ID,會讓還原後的應用程式無法傳送推送通知。在新裝置安裝 API 之後,需要向 API 查詢新的註冊 ID,因此如果之前備份了舊的註冊 ID,就會發生問題。
-
-
-
-
-如要避免發生這個情況,請不要備份包含註冊 ID 的檔案。
-
-  </li>
-</ul>
diff --git a/docs/html-intl/intl/zh-tw/preview/behavior-changes.jd b/docs/html-intl/intl/zh-tw/preview/behavior-changes.jd
deleted file mode 100644
index 405aea1..0000000
--- a/docs/html-intl/intl/zh-tw/preview/behavior-changes.jd
+++ /dev/null
@@ -1,402 +0,0 @@
-page.title=行為變更
-page.keywords=預覽版,sdk,相容性
-sdk.platform.apiLevel=MNC
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>本文件內容</h2>
-
-<ol id="toc44" class="hide-nested">
-    <li><a href="#behavior-runtime-permissions">執行階段權限</a></li>
-    <li><a href="#behavior-power">省電最佳化</a>
-        <ol>
-            <li><a href="#behavior-doze">休眠</a></li>
-            <li><a href="#behavior-app-standby">應用程式待命</a></li>
-        </ol>
-    </li>
-    <li><a href="#behavior-adoptable-storage">可採用的儲存裝置</a></li>
-    <li><a href="#behavior-apache-http-client">移除 Apache HTTP 用戶端</a></li>
-    <li><a href="#behavior-audiomanager-Changes">AudioManager 變更</a></li>
-    <li><a href="#behavior-test-selection">文字選取</a></li>
-    <li><a href="#behavior-keystore">Android 金鑰存放區變更</a></li>
-    <li><a href="#behavior-network">Wi-Fi 和網路變更</a></li>
-    <li><a href="#behavior-camera">相機服務變更</a></li>
-    <li><a href="#behavior-art-runtime">ART 執行階段</a></li>
-    <li><a href="#behavior-apk-validation">APK 驗證</a></li>
-    <li><a href="#behavior-afw">Android for Work 變更</a></li>
-</ol>
-
-<h2>API 差異</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">API 級別 22 到 M 預覽版&raquo;</a> </li>
-</ol>
-
-
-<h2>另請參閱</h2>
-<ol>
-<li><a href="{@docRoot}preview/api-overview.html">M 開發人員預覽版 API 總覽</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>除了新特性和功能以外,M 開發人員預覽版還包含各種不同的系統變更和 API 行為變更。
-本文件將強調說明一些您應該知道且在您的應用程式中加以考量的重要變更。
-</p>
-
-<p>如果您先前曾發行過適用於 Android 的應用程式,請注意,您的應用程式可能會受到平台中的這類變更所影響。
-</p>
-
-<h2 id="behavior-runtime-permissions">執行階段權限</h1>
-<p>這個預覽版引進了新的權限模型,使用者現在可以在執行階段直接管理應用程式權限。
-這個模型為使用者提供了改良的能見度並使其可完全控制權限,同時為應用程式開發人員提供更流暢的安裝和自動更新程序。使用者可以針對安裝的應用程式個別授與或撤銷權限。
-
- </p>
-
-<p>在目標為 M 預覽版的應用程式中,請務必在執行階段檢查並要求權限。
-如要判斷您的應用程式是否已獲授與權限,請呼叫新的 {@code Context.checkSelfPermission()} 方法。
-如要要求權限,請呼叫新的
-{@code Activity.requestPermission()} 方法。即使您的應用程式目標不是 M,還是應該在新的權限模型下測試您的應用程式。
-</p>
-
-<p>如需在您的應用程式中支援新權限模型的詳細資訊,請參閱<a href="{@docRoot}preview/features/runtime-permissions.html">權限</a>開發人員預覽版頁面。
-
-如需評估對您應用程式的影響的祕訣,請參閱<a href="{@docRoot}preview/testing/guide.html#runtime-permissions">測試指南</a>。
-</p>
-
-<h2 id="behavior-power">省電最佳化</h2>
-<p>這個預覽版針對閒置的裝置和應用程式引進了新的省電最佳化功能。</p>
-
-<h3 id="behavior-doze">休眠</h3>
-<p>如果拔除裝置電源並關閉螢幕使其保持靜止狀態一段時間,該裝置即會進入「休眠」<em></em>模式,它會嘗試讓系統保持睡眠狀態。
-在此模式中,裝置會在短期間內定期繼續執行正常操作,因此,會進行應用程式同步處理,而系統可以執行任何待處理的操作。
-
-</p>
-
-<p>處於休眠狀態時,下列限制會套用到您的應用程式:</p>
-<ul>
-<li>除非您的應用程式接收到高優先順序的 Google 雲端通訊活動訊號 (Tickle),否則會停用網路存取。
-</li>
-<li><a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">喚醒鎖定</a>會被忽略。</li>
-<li>使用 {@link android.app.AlarmManager} 類別排定的鬧鐘會被停用,但使用 {@link android.app.AlarmManager#setAlarmClock setAlarmClock()}方法和 {@code AlarmManager.setAndAllowWhileIdle()} 設定的鬧鐘則不會被停用。
-
-</li>
-<li>WiFi 掃描不會執行。</li>
-<li>不容許執行您同步配接器的同步處理和工作以及 {@link android.app.job.JobScheduler}。
-</li>
-</ul>
-</p>
-<p>當裝置離開休眠狀態時,就會執行所有待處理的工作和同步處理。</p>
-<p>您可以測試此功能,方法是將執行 M 預覽版的裝置連接到您的開發電腦並呼叫下列命令:
-
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-<p class="note"><strong>注意:</strong>即將發行的 <a href="https://developers.google.com/cloud-messaging/" class="external-link">Google 雲端通訊</a>版本讓您能夠指定高優先順序的訊息。
-
-
-如果您的應用程式收到高優先順序的 GCM 訊息,即使裝置處於休眠狀態,系統還是會授與它短暫的網路存取權限。
-
-</p>
-
-<p>如需如何在您的應用程式中測試休眠的祕訣,請參閱<a href="{@docRoot}preview/testing/guide.html#doze-standby">測試指南</a>。
-
- </p>
-
-<h3 id="behavior-app-standby">應用程式待命</h3>
-<p>使用這個預覽版時,系統可在應用程式處於未使用狀態時,判斷它們是否處於閒置狀態。
-除非系統偵測到以下任一個訊號,否則會在一段時間之後將應用程式視為閒置:
-</p>
-
-<ul>
-<li>使用者明確啟動應用程式。</li>
-<li>應用程式目前在前景中有一個處理程序 (可能是做為活動或前景服務,也可能正由其他活動或前景服務所使用)。
-</li>
-<li>應用程式產生使用者可以在鎖定螢幕或通知匣中看見的通知。
-</li>
-<li>使用者透過 [設定]<strong></strong> 明確要求應用程式不需進行最佳化。
-</li>
-</ul>
-
-<p>如果拔除了裝置電源,即會停用被視為閒置之應用程式的網路存取,並擱置它們的同步處理和工作。
-為裝置插上電源時,就允許這些應用程式進行網路存取,且可執行所有已擱置的工作和同步處理。
-如果裝置長時間處於閒置狀態,則允許閒置的應用程式進行網路存取,大約是一天一次。
-</p>
-
-<p>您可以測試此功能,方法是將執行 M 預覽版的裝置連接到您的開發電腦並呼叫下列命令:
-
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell am set-idle &lt;packageName&gt; true
-$ adb shell am set-idle &lt;packageName&gt; false
-$ adb shell am get-idle &lt;packageName&gt;
-</pre>
-
-<p class="note"><strong>注意:</strong>即將發行的 <a href="https://developers.google.com/cloud-messaging/" class="external-link">Google 雲端通訊</a> (GCM) 版本讓您能夠指定高優先順序的訊息。
-
-
-如果您的應用程式收到高優先順序的 GCM 訊息,即使應用程式處於閒置狀態,系統還是會授與它短暫的網路存取權限。
-
-</p>
-
-<p>如需如何在您的應用程式中測試應用程式待命的祕訣,請參閱<a href="{@docRoot}preview/testing/guide.html#doze-standby">測試指南</a>。
-
- </p>
-
-<h2 id="behavior-adoptable-storage">可採用的儲存裝置</h2>
-<p>
-使用這個預覽版時,使用者可以採用<em></em>像是 SD 卡的外部儲存裝置。採用外部儲存裝置會加密並格式化裝置,使其可如內部儲存空間般運作。
-此功能讓使用者能夠在儲存裝置之間移動應用程式和這些應用程式的私人資料。
-移動應用程式時,系統會採用宣示說明中的 <a href="{@docRoot}guide/topics/manifest/manifest-element.html#install">{@code android:installLocation}</a> 偏好設定。
-
-
-</p>
-
-<p>如果您的應用程式會存取下列 API 或欄位,請注意,在內部和外部儲存裝置之間移動應用程式時,它們傳回的檔案路徑將會動態變更。建置檔案路徑時,強烈建議您一律動態呼叫這些 API。請勿使用硬式編碼的檔案路徑或保留先前建置的完整檔案路徑。
-
-
-</p>
-
-<ul>
-<li>{@link android.content.Context} 方法:
-    <ul>
-        <li>{@link android.content.Context#getFilesDir() getFilesDir()}</li>
-        <li>{@link android.content.Context#getCacheDir() getCacheDir()}</li>
-        <li>{@link android.content.Context#getCodeCacheDir() getCodeCacheDir()}</li>
-        <li>{@link android.content.Context#getDatabasePath(java.lang.String) getDatabasePath()}</li>
-        <li>{@link android.content.Context#getDir(java.lang.String,int) getDir()}</li>
-        <li>{@link android.content.Context#getNoBackupFilesDir() getNoBackupFilesDir()}</li>
-        <li>{@link android.content.Context#getFileStreamPath(java.lang.String) getFileStreamPath()}</li>
-        <li>{@link android.content.Context#getPackageCodePath() getPackageCodePath()}</li>
-        <li>{@link android.content.Context#getPackageResourcePath() getPackageResourcePath()}</li>
-    </ul>
-</li>
-<li>{@link android.content.pm.ApplicationInfo} 欄位:
-    <ul>
-        <li>{@link android.content.pm.ApplicationInfo#dataDir dataDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#sourceDir sourceDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#nativeLibraryDir nativeLibraryDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#publicSourceDir publicSourceDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#splitSourceDirs splitSourceDirs}</li>
-        <li>{@link android.content.pm.ApplicationInfo#splitPublicSourceDirs splitPublicSourceDirs}</li>
-    </ul>
-</li>
-</ul>
-
-<p>如要在開發人員預覽版中對此功能進行偵錯,您可以執行下列命令來採用 USB 磁碟機 (這個磁碟機是透過 USB On-The-Go (OTG) 纜線連接到 Android 裝置):
-</p>
-
-<pre class="no-prettyprint">
-$ adb shell sm set-force-adoptable true
-</pre>
-
-<h2 id="behavior-apache-http-client">移除 Apache HTTP 用戶端</h2>
-<p>這個預覽版已移除對於 Apache HTTP 用戶端的支援。如果您的應用程式正在使用這個用戶端且目標為 Android 2.3 (API 級別 9) 或更高版本,請改為使用 {@link java.net.HttpURLConnection} 類別。
-
-這個 API 的效率更高,因為它能透過透明的壓縮和回應快取來降低網路使用量,並將電源耗用量降至最低。
-如要繼續使用 Apache HTTP API,您必須先在 {@code build.gradle} 檔案中宣告下列編譯時期的相依性:
-
-</p>
-<pre>
-android {
-    useLibrary 'org.apache.http.legacy'
-}
-</pre>
-<p>Android 正從 OpenSSL 移至 <a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a> 程式庫。
-
-如果您正在應用程式中使用 Android NDK,請勿連結不屬於 NDK API 一部分的密碼編譯程式庫,例如 {@code libcrypto.so} 和 {@code libssl.so}。
-這些程式庫不是公用 API,而且可能在沒有通知的情況下,在新的版本和裝置上變更或終止支援。此外,您可能會讓自己暴露於安全性弱點中。
-
-因此,請改為修改您的原生程式碼,透過 JNI 來呼叫 Java 密碼編譯 API,或以靜態方式連結您選擇的密碼編譯程式庫。
-
-</p>
-
-<h2 id="behavior-audiomanager-Changes">AudioManager 變更</h2>
-<p>不再支援透過 {@link android.media.AudioManager} 類別直接設定音量或將特定串流設定為靜音。
-{@link android.media.AudioManager#setStreamSolo(int,boolean)
-setStreamSolo()} 方法已過時,您應該改為呼叫
-{@code AudioManager.requestAudioFocus()} 方法。同樣地,
-{@link android.media.AudioManager#setStreamMute(int,boolean) setStreamMute()} 方法已過時;請改為呼叫 {@code AudioManager.adjustStreamVolume()} 方法並傳入方向值 {@code ADJUST_MUTE} 或 {@code ADJUST_UNMUTE}。
-
-</p>
-
-<h2 id="behavior-test-selection">文字選取</h2>
-
-<img src="{@docRoot}preview/images/text-selection.gif" style="float:right; margin:0 0 20px 30px" width="360" height="640" />
-
-<p>當使用者在您的應用程式中選取文字時,您現在可以在<a href="http://www.google.com/design/spec/patterns/selection.html#selection-text-selection" class="external-link">浮動工具列</a>中顯示文字選取動作,例如,剪下<em></em>、複製<em></em>及貼上<em></em>。
-
-使用者互動實作類似於針對內容關聯動作列所做的實作,如<a href="{@docRoot}guide/topics/ui/menus.html#CABforViews">為個別的檢視啟用內容關聯動作模式</a>中所述。
-
-
-</p>
-
-<p>如要實作適用於文字選取的浮動工具列,請在您現有的應用程式中進行下列變更:
-</p>
-<ol>
-<li>在您的 {@link android.view.View} 或 {@link android.app.Activity} 物件中,將
-{@link android.view.ActionMode} 呼叫從
-{@code startActionMode(Callback)} 變更為 {@code startActionMode(Callback, ActionMode.TYPE_FLOATING)}。</li>
-<li>進行 {@code ActionMode.Callback} 的現有實作,並改為讓它擴充
-{@code ActionMode.Callback2}。</li>
-<li>覆寫 {@code Callback2.onGetContentRect()} 方法,以在檢視中提供內容 {@link android.graphics.Rect} 物件 (例如,文字選取矩形區塊) 的座標。
-</li>
-<li>如果矩形區塊位置不再有效,而且這是唯一變成無效的元素,請呼叫 {@code ActionMode.invalidateContentRect()} 方法。
-</li>
-</ol>
-
-<p>如果您正在使用 <a href="{@docRoot}tools/support-library/index.html">Android 支援程式庫</a>版本 22.2,請注意,浮動工具列無法向下相容,而且 appcompat 預設會取得 {@link android.view.ActionMode} 物件的完整控制權。
-
-
-這可防止浮動工具列顯示。如要在
-{@link android.support.v7.app.AppCompatActivity} 中啟用
-{@link android.view.ActionMode} 支援,請呼叫
-{@code android.support.v7.app.AppCompatActivity.getDelegate()},然後在傳回的
-{@link android.support.v7.app.AppCompatDelegate} 物件中呼叫
-{@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()},並將輸入參數設定為 {@code false}。
-這個呼叫會將 {@link android.view.ActionMode} 物件的控制權傳回架構中。
-儘管在 M 預覽版之前的裝置中,只支援 {@link android.support.v7.app.ActionBar} 模式,但在執行 M 預覽版的裝置中,允許架構支援
-{@link android.support.v7.app.ActionBar} 或浮動工具列模式。
-</p>
-
-<h2 id="behavior-keystore">Android 金鑰存放區變更</h2>
-<p>使用這個預覽版時,<a href="{@docRoot}training/articles/keystore.html">Android 金鑰存放區供應程式</a>不再支援 DSA。
-
-但仍支援 ECDSA。</p>
-
-<p>在停用或重設安全鎖定螢幕時 (例如,由使用者或裝置管理員執行),將不再刪除其餘不需加密的金鑰。
-在這些事件期間,將會刪除其餘需要加密的金鑰。
-</p>
-
-<h2 id="behavior-network">Wi-Fi 和網路變更</h2>
-
-<p>這個預覽版引進了下列對於 Wi-Fi 和網路 API 的行為變更。</p>
-<ul>
-<li>唯有當您建立了 {@link android.net.wifi.WifiConfiguration} 物件時,您的應用程式現在才能變更這些物件的狀態。
-系統不容許您修改或刪除由使用者或其他應用程式所建立的
-{@link android.net.wifi.WifiConfiguration} 物件。
-</li>
-<li>
-在以前,如果應用程式使用
-{@link android.net.wifi.WifiManager#enableNetwork(int,boolean) enableNetwork()} 搭配
-{@code disableAllOthers=true} 設定來強制裝置連接到特定的 Wi-Fi 網路,裝置即會中斷與其他網路的連線,例如行動數據。
-在這個預覽版中,裝置不再中斷與這類其他網路的連線。如果您應用程式的 {@code targetSdkVersion} 是 {@code “20”} 或更低版本,即會將它固定到選取的 Wi-Fi 網路。
-
-如果您應用程式的 {@code targetSdkVersion} 是 {@code “21”} 或更高版本,請使用多網路 API (例如,
-{@link android.net.Network#openConnection(java.net.URL) openConnection()}、
-{@link android.net.Network#bindSocket(java.net.Socket) bindSocket()} 及新的
-{@code ConnectivityManager.bindProcessToNetwork()} 方法),以確保會在選取的網路上傳送它的網路流量。
-
-</li>
-</ul>
-
-<h2 id="behavior-camera">相機服務變更</h2>
-<p>在這個預覽版中,在相機服務中存取分享資源的模型已經從先前的「先進先服務」存取模型變更為依照優先順序針對處理程序進行處理的存取模型。
-
-對於服務行為的變更如下:</p>
-<ul>
-<li>存取相機子系統資源 (包括開啟和設定相機裝置) 的權限是根據用戶端應用程式處理程序的「優先順序」來授與。
-通常會為具有使用者可看見或前景活動的應用程式處理程序提供較高的優先順序,讓相機資源的取得和使用更可靠。
-
-</li>
-<li>優先順序較低之應用程式的使用中相機用戶端可能會在優先順序較高的應用程式嘗試使用相機時被系統「撤出」。
-在已過時的 {@link android.hardware.Camera} API 中,這會導致針對被撤出的用戶端呼叫
-{@link android.hardware.Camera.ErrorCallback#onError(int,android.hardware.Camera) onError()}。
-
-在 {@link android.hardware.camera2 Camera2} API 中,會導致針對被撤出的用戶端呼叫
-{@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected(android.hardware.camera2.CameraDevice) onDisconnected()}
-。</li>
-<li>在配備適當相機硬體的裝置上,個別的應用程式處理程序能夠單獨開啟,同時使用不同的相機裝置。
-但是,相機服務現在可以偵測到且不允許多處理程序使用案例,同時存取會對任何已開啟的相機裝置造成顯著的效能或功能降級。
-
-此變更可能會導致優先順序較低的用戶端被「撤出」,即使沒有任何其他應用程式正直接嘗試存取同一個相機裝置也一樣。
-
-
-</li>
-<li>
-變更目前的使用者會導致先前的使用者帳戶所擁有之應用程式的使用中相機用戶端被撤出。
-相機的存取權受限於目前裝置使用者所擁有的使用者設定檔。例如,這實際上表示「訪客」帳戶在使用者切換到不同帳戶之後,將無法保留使用相機子系統的執行中處理程序。
-
-
-</li>
-</ul>
-
-<h2 id="behavior-art-runtime">ART 執行階段</h2>
-<p>ART 執行階段現在可以正確實作
-{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} 方法的存取規則。這個變更會修正 Dalvik 在先前版本中以不正確方式檢查存取規則的問題。如果您的應用程式使用
-{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} 方法且您想要覆寫存取檢查,請搭配已設定為 {@code true} 的輸入參數呼叫
-{@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()} 方法。
-
-
-
-如果您的應用程式使用 <a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7 appcompat 程式庫</a>或 <a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">v7 recyclerview 程式庫</a>,您就必須更新應用程式來使用這些程式庫的最新版本。
-
-
-否則,請確定從 XML 參考的所有自訂類別都會更新,如此一來就能存取其類別建構函式。
-</p>
-
-<p>這個預覽版會更新動態連結器的行為。動態連結器現在瞭解程式庫的 {@code soname} 與其路徑 (<a href="https://code.google.com/p/android/issues/detail?id=6670" class="external-link">公開的 Bug 6670</a>) 之間的差異,而且現在會實作依 {@code soname} 進行搜尋。
-
-
-
-先前可運作但含有錯誤 {@code DT_NEEDED} 項目 (通常是組建電腦之檔案系統上的絕對路徑) 的應用程式可能會在載入時失敗。
-</p>
-
-<p>{@code dlopen(3) RTLD_LOCAL} 旗標現在會以正確的方式實作。請注意,
-{@code RTLD_LOCAL} 是預設值,因此,對 {@code dlopen(3)} 的呼叫 (不會明確使用
-{@code RTLD_LOCAL}) 將會受到影響 (除非您的應用程式明確使用 {@code RTLD_GLOBAL})。使用
-{@code RTLD_LOCAL},由後續呼叫
-{@code dlopen(3)} (相對於 {@code DT_NEEDED} 項目所參考) 所載入的程式庫將無法使用符號。</p>
-</p>
-
-<h2 id="behavior-apk-validation">APK 驗證</h2>
-<p>此平台現在會執行較嚴格的 APK 驗證。如果檔案宣告於宣示說明中但未出現在 APK 本身中,則 APK 會被視為毀損。
-如果移除了任何內容,就必須重新簽署 APK。
-</p>
-
-<h2 id="behavior-afw">Android for Work 變更</h2>
-<p>這個預覽版包含下列對於 Android for Work 的行為變更:</p>
-<ul>
-<li><strong>個人內容中的工作聯絡人。</strong>Google 撥號程式通話記錄現在會在使用者檢視過去的通話記錄時顯示工作聯絡人。將 {@code DevicePolicyManager.setCrossProfileCallerIdDisabled()} 設定為 {@code true},可以在 Google 撥號程式通話記錄中隱藏工作設定檔聯絡人。
-
-
-只有在您將 {@code DevicePolicyManager.setBluetoothContactSharingDisabled()} 設定為 {@code false} 時,工作聯絡人才會透過藍牙,與個人聯絡人一起顯示於裝置上。
-
-預設會設定為 {@code true}。
-
-</li>
-<li><strong>移除 WiFi 設定:</strong>如果將工作設定檔刪除,則現在會移除由設定檔擁有者所新增的 WiFi 設定 (例如,透過呼叫
-{@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration)
-addNetwork()} 方法)。
-</li>
-<li><strong>鎖定 WiFi 設定:</strong>使用者無法再修改或刪除任何由使用中裝置擁有者所建立的 WiFi 設定。
-只要尚未針對使用者設定 {@link android.os.UserManager} 常數
-{@link android.os.UserManager#DISALLOW_CONFIG_WIFI},該使用者就仍能建立和修改他們自己的 WiFi 設定。
-</li>
-<li><strong>透過 Google 帳戶新增來下載工作原則控制器:</strong>在將要求透過工作原則控制器 (WPC) 應用程式進行管理的 Google 帳戶新增到受管理內容以外的裝置時,新增帳戶流程現在會提示使用者安裝適當的 WPC。這個行為也適用於在初始裝置設定精靈中透過 [設定] &gt; [帳戶]<strong></strong> 來新增的帳戶。
-
-
-
-</li>
-<li><strong>對於特定 DevicePolicyManager API 行為的變更:</strong>呼叫 {@link android.app.admin.DevicePolicyManager#setCameraDisabled(android.content.ComponentName,boolean) setCameraDisabled()}
-方法,只會對正在呼叫之使用者的相機產生影響;從受管理的設定檔呼叫它則不會對在主要使用者上執行的相機應用程式產生影響。
-
-此外,除了裝置擁有者,
-{@link android.app.admin.DevicePolicyManager#setKeyguardDisabledFeatures(android.content.ComponentName,int) setKeyguardDisabledFeatures()}
-方法現在還可供設定檔擁有者使用。設定檔擁有者可以設定下列滑動解鎖限制:
-
-<ul>
-<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_TRUST_AGENTS} 和
-{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_FINGERPRINT},它們會對設定檔上層使用者的滑動解鎖設定產生影響。
-</li>
-<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS},這只會影響受管理設定檔中由應用程式所產生的通知。
-</li>
-</ul>
-</li>
-</ul>
diff --git a/docs/html-intl/intl/zh-tw/preview/download.jd b/docs/html-intl/intl/zh-tw/preview/download.jd
deleted file mode 100644
index 163af2c..0000000
--- a/docs/html-intl/intl/zh-tw/preview/download.jd
+++ /dev/null
@@ -1,360 +0,0 @@
-page.title=下載
-page.image=images/cards/card-download_16-9_2x.png
-
-@jd:body
-
-<div style="position:relative; min-height:600px">
-
-  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
-    <p class="sdk-terms-intro">在下載和安裝 Android 預覽版
-SDK 的元件之前 ,您必須同意遵守下列條款和條件。</p>
-
-    <h2 class="norule">條款和條件</h2>
-
-    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-這是「Android SDK 預覽版授權協議」(以下稱「授權協議」)。
-
-1.簡介
-
-1.1「Android SDK 預覽版」(在「授權協議」中稱為「預覽版」,包括 (如果有可用的) Android 系統檔案、經過封裝的 API 和預覽版程式庫檔案) 是在「授權協議」之條款的約束下授權給您使用。「授權協議」就您對「預覽版」的使用,構成您與 Google 間具法律約束力之合約。
-
-1.2「Android」係指「Android 軟體開放原始碼專案」(http://source.android.com/) 所提供的 Android 裝置軟體堆疊 (不定期更新)。
-
-1.3「Google」係指 Google Inc.,是一家在美國德拉瓦州註冊的公司,地址為 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States。
-
-2.接受「授權協議」
-
-2.1 必須先同意遵守「授權協議」,才能使用此「預覽版」。如果不接受「授權協議」,您就無法使用此「預覽版」。
-
-2.2 按一下 [接受] 且/或使用「預覽版」,即表示您同意「授權協議」的條款。
-
-2.3 如果您是美國或其他國家/地區 (包括您所居住或使用此「預覽版」的國家/地區) 的法律所禁止接收此「預覽版」的人員,就不得使用此「預覽版」及接受「授權協議」。
-
-2.4 如果您將在公司或組織內部使用「預覽版」,您就要代表雇主或其他實體同意受「授權協議」約束,且您代表並保證具備完整法定權限來約束您的雇主或這類實體遵守「授權協議」。如果您不具備必要的權限,就不得代表您的雇主或其他實體接受「授權協議」或使用此「預覽版」。
-
-3.Google 的預覽版授權
-
-3.1 在「授權協議」之條款的約束下,Google 授權您使用此「預覽版」,此授權為買斷式、不可轉讓、非獨占性、不可轉授權、有限且可撤銷,僅在您公司或組織內部私下或內部使用。此「預覽版」僅供您用於開發在 Android 平台上執行的應用程式。
-
-3.2 您同意 Google 或第三方對此「預覽版」擁有一切法定權利及權益,包括存在於此「預覽版」中的任何「智慧財產權」。「智慧財產權」係指專利法、著作權法、商業秘密法、商標法及任何和所有其他專利權下的任何及一切權利。Google 保留一切未明確授予您的權利。
-
-3.3 您不得將此「預覽版」用於「授權協議」未明文許可的任何用途。除非適用的第三方授權所需,否則您不得:(a) 對此「預覽版」或其任何部分進行複製 (備份用途除外)、修改、改編、轉散佈、反向組譯、還原工程、解編或製作衍生成品;或是 (b) 將此「預覽版」的任何部分載入至行動電話或個人電腦以外的任何其他硬體裝置、將此「預覽版」的任何部分與其他軟體結合,或散佈包含此「預覽版」之任一部分的任何軟體或裝置。
-
-3.4 您同意不會從事任何可能導致或造成 Android 分裂的活動,包括但不限於以任何形式散佈從此「預覽版」衍生的軟體開發套件、參其製作或宣傳。
-
-3.5 對開放原始碼軟體授權下所授權之「預覽版」的使用、複製及散佈,完全受該開放原始碼軟體授權的條款管制,而不受「授權協議」管制。您同意遵守從這類開放原始碼軟體授權獲得的所有權利,並且避免採取任何可能終止、中止或侵害這類權利的行為。
-
-3.6 您同意 Google 可在不事先通知您的情況下變更其所提供之「預覽版」的形式和本質,且此「預覽版」的未來版本可與在此「預覽版」的先前版本上開發的應用程式不相容。您同意 Google 通常可全權斟酌永久或暫時停止提供此「預覽版」(或此「預覽版」的任何功能) 給您或使用者,毋須事先通知。
-
-3.7「授權協議」中的所有條款皆未授予您任何使用 Google 之商業名稱、商標、服務標章、標誌、網域名稱或其他明確品牌特徵的權利。
-
-3.8 您同意不會移除、遮蔽或更改可能附加至或內含在此「預覽版」中的任何專利權通知 (包括著作權和商標通知)。
-
-4.您對「預覽版」的使用
-
-4.1 Google 同意在「授權協議」下,任何條款皆未從您 (或您的授權人) 賦予 Google 對您使用此「預覽版」開發之任何軟體應用程式的任何權利及權益,包括存在於這些應用程式中的任何智慧財產權。
-
-4.2 您同意只就 (a)「授權協議」和 (b) 相關管轄權中任何適用法律、規定或是普遍獲得接受之慣例或指導方針 (包括任何有關將資料或軟體輸出或輸入美國或其他相關國家/地區的法律) 所允許的用途使用此「預覽版」及撰寫應用程式。
-
-4.3 您同意如果使用此「預覽版」開發應用程式,您將保護使用者的隱私權和法定權利。如果使用者提供您使用者名稱、密碼或是其他登入資訊或個人資訊,您必須告知使用者這類資訊將提供給您的應用程式使用,並且必須為這些使用者提供法定充分的隱私權通知和保護。如果您的應用程式會儲存使用者所提供的個人或敏感資訊,它必須確保這些資訊安全無虞。如果使用者提供 Google 帳戶資訊給您,則只有在每個使用者已授權您存取其 Google 帳戶並僅限用於使用者所授權之用途的情況下,您的應用程式才能使用該資訊來存取使用者的 Google 帳戶。
-
-4.4 您同意不會使用此「預覽版」從事任何不當Activity,例如開發或散佈會以未經授權的方式干擾、妨礙、損害或存取 Google 或任何第三方之伺服器、網路或是其他財產或服務的應用程式。
-
-4.5 您同意對您透過 Android 裝置和 (或) Android 應用程式建立、傳輸或顯示的任何資料、內容或資源,以及上述行為造成的後果 (包括 Google 可能蒙受的任何損失或損害) 負起全責 (而 Google 對您或任何第三方就上述一切不需負任何責任)。
-
-4.6 您同意對違反在此「授權協議」、任何適用之第三方合約或《服務條款》或是任何適用之法律或規定下所必須遵守的義務,以及違反相關義務造成的後果 (包括 Google 或任何第三方可能蒙受的任何損失或損害) 負起全責 (而 Google 對您或任何第三方就上述一切不需負任何責任)。
-
-4.7「預覽版」目前正在開發中,因此您的測試與意見反應對開發程序非常重要。使用「預覽版」,您即認同某些功能仍處於開發階段,因此您不應期待「預覽版」擁有穩定版本的完整功能。在官方 Android SDK 發行之後,此「預覽版」不再受到支援時,您同意不使用此「預覽版」公開散佈或隨附任何應用程式。
-
-5.您的開發人員認證
-
-5.1 您同意負責保密 Google 可能核發給您或您自己選擇的任何開發人員認證,並且對在您開發人員認證名義下開發的所有應用程式負起全責。
-
-6.隱私權和資訊
-
-6.1 為了持續更新及改進此「預覽版」,Google 可能會從軟體收集某些使用狀況統計數據,包括但不限於軟體的唯一識別碼、相關 IP 位址、版本號碼,以及有關使用此「預覽版」中的哪些工具和 (或) 服務及其使用方式的相關資訊。在收集這類資訊之前,此「預覽版」會先通知您並徵求您的同意。如果您不同意,Google 將不會收集這類資訊。
-
-6.2 Google 會彙總並檢查收集到的資料,據以改善此「預覽版」,並且會依據《Google 隱私權政策》(http://www.google.com/policies/privacy/) 加以妥善保存。
-
-7.第三方應用程式
-
-7.1 如果您使用此「預覽版」來執行第三方開發的應用程式,或是執行會存取第三方所提供之資料、內容或資源的應用程式,您同意 Google 不需對這類應用程式、資料、內容或資源負任何責任。您瞭解您透過第三方應用程式存取的所有資料、內容或資源是由其提供者負起全責,而 Google 對您因使用或存取任何這些第三方應用程式、資料、內容或資源所造成的損失或損害不需負任何責任。
-
-7.2 您瞭解第三方應用程式提供給您的資料、內容或資源可能受到提供者 (或代表他們的其他人員或公司) 所擁有的智慧財產權保護。您不得根據這類資料、內容或資源 (不論是整個或部分) 修改、出租、出借、販售、散佈或製作衍生成品,除非相關擁有者明確授權您從事上述活動。
-
-7.3 您瞭解使用第三方應用程式、資料、內容或資源可能受到您與相關第三方之間的個別條款約束。
-
-8.使用 Google API
-
-8.1 Google API
-
-8.1.1 如果您使用任何 API 從 Google 擷取資料,您瞭解這些資料可能受到 Google 或資料提供者 (或代表他們的其他人員或公司) 所擁有的智慧財產權保護。您對任何這類 API 的使用可能受到其他《服務條款》約束。除非相關《服務條款》明文允許,否則您不得根據這類資料 (不論是整個或部分) 修改、出租、出借、販售、散佈或製作衍生成品。
-
-8.1.2 使用任何 API 從 Google 擷取使用者的資料時,您瞭解並同意只有在該使用者明確同意且授權您擷取其資料,而且僅限用於使用者所授權之用途的情況下,您才能擷取資料。
-
-9.終止「授權協議」
-
-9.1 除非您或 Google 終止「授權協議」(請見下方說明),否則「授權協議」將持續具有效力。
-
-9.2 如果想終止「授權協議」,只要停止使用此「預覽版」及任何相關的開發人員憑證即可。
-
-9.3 Google 可隨時通知您終止「授權協議」,無論有無原因。
-
-9.4「授權協議」在先發生下列任一情況時,將自動終止而不另行通知或採取其他行動:
-(A) Google 決定不再提供此「預覽版」或此「預覽版」的特定部分給您所居住或使用此服務之國家/地區的使用者;或
-(B) Google 發行最終版本的 Android SDK。
-
-9.5 當「授權條款」終止時,您在「授權協議」所獲得的授權也將會一併終止,您將立即停止「預覽版」的所有使用,而第 10、11、12 和 14 項的條款將無限期持續適用。
-
-10.免責聲明
-
-10.1 您明確瞭解並同意完全自負使用此「預覽版」的風險,並且此「預覽版」是依「現況」和「可提供性」提供,Google 不負任何擔保責任。
-
-10.2 您對使用此「預覽版」及透過此「預覽版」以下載或其他方式取得的任何內容,需自行斟酌和自負風險,而且您對因這類使用而對您的電腦系統或其他裝置所造成的任何損害或資料遺失,需負起全責。不限於前述,您瞭解此「預覽版」不是穩定的版本,可能會包含許多錯誤、瑕疵和安全性弱點而對您的電腦系統或其他裝置造成嚴重的損害,包括完全、不可回復的損失。
-
-10.3 Google 進一步明確表示不提供任何形式的瑕疵擔保和條件 (不論明示或默示),包括但不限於適售性、適合特定用途及未侵權的默示擔保和條件。
-
-11.責任限制
-
-11.1 您明確瞭解並同意在任何歸責理論下,就可能由您引起的任何直接、間接、附隨性、特殊性、衍生性或懲罰性損害賠償 (包括任何資料遺失),不論 Google 或其代表是否已獲告知或應已瞭解發生任何這類損失的可能性,Google、其子公司和關係企業及其授權人不必對您負起任何責任。
-
-12.賠償
-
-12.1 在法律允許的最大範圍內,您同意為 Google、其子公司及其個別董監事、主管、員工和代理人,就任何和一切索賠、法律行動、訴訟或訴訟程序,以及因下列原因而引起的任何和一切損失、責任、損害賠償、費用及開支 (包括合理的律師費),提供辯護、賠償損失並確保其免於承擔賠償責任:(a) 您使用此「預覽版」;(b) 您使用此「預覽版」開發的應用程式侵害任何人的任何智慧財產權,或是詆毀任何人或違反其公開權或隱私權;以及 (c) 您未遵守「授權協議」。
-
-13.對「授權協議」做出的變更
-
-13.1 Google 可在散佈此「預覽版」的新版本時修改「授權協議」。做出這類變更後,Google 會在提供此「預覽版」的網站上提供「授權協議」的新版本。
-
-14.一般法律條款
-
-14.1「授權協議」構成您與 Google 之間的法律協議,用於管制您對此「預覽版」(不包括 Google 依據個別書面協議提供給您的任何服務) 的使用,並完全取代先前您與 Google 之間就此「預覽版」簽署的相關協議。
-
-14.2 您同意如果 Google 未行使或執行「授權協議」所含的任何法律權利或救濟 (或在任何適用法律下對 Google 有利的權益),並不代表 Google 正式放棄權利,Google 日後仍可行使這些權利或救濟。
-
-14.3 如果經任何法院 (就此事宜依管轄權決定) 裁決「授權協議」中有任何條款無效,則該條款將自「授權協議」中移除,「授權協議」的其餘部分則不受影響。「授權協議」的其餘條款將持續具有效力且可執行。
-
-14.4 您瞭解並同意 Google 旗下子公司體系的每位成員都是「授權協議」的第三方受益人,而且這類其他公司有權直接執行和依據「授權協議」中對其授予權益 (或對其有利之權利) 的任何條款。除此之外的任何其他人員或公司皆非「授權協議」的第三方受益人。
-
-14.5 出口限制。此「預覽版」受美國出口法規約束。您必須遵守適用於此「預覽版」的所有國內和國際出口法規。這些法律包括對目的地、使用者及最終用途的限制。
-
-14.6 未事先取得 Google 事先書面核准的情況下,您不得轉讓或轉移「授權協議」,未經這類核准的任何轉讓將會失效。您不得在未事先取得 Google 書面核准的情況下,委派其「授權協議」涵蓋的責任或義務。
-
-14.7「授權協議」以及您與 Google 就「授權協議」構成的關係皆受加州法律管轄,毋須理會其法律牴觸條款。您和 Google 同意服從位於加州聖塔克拉拉 (Santa Clara, California) 郡內法院的專屬管轄權,以解決由「授權協議」產生的任何法律事務。儘管如此,您同意 Google 仍可在任何管轄權中申請禁制令救濟 (或同等類型的緊急法定救濟)。
-  </div><!-- sdk terms -->
-
-
-
-    <div id="sdk-terms-form">
-      <p>
-        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-        <label id="agreeLabel" for="agree">我已閱讀並同意上述條款及細則</label>
-      </p>
-      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-    </div>
-
-
-  </div><!-- end TOS -->
-
-
-  <div id="landing">
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本文件內容</h2>
-      <ol>
-        <li><a href="#sdk">Android 6.0 SDK</a></li>
-        <li><a href="#docs">開發人員文件</a></li>
-        <li><a href="#images">硬體系統映像</a></li>
-      </ol>
-     <h2>Legacy downloads</h2>
-        <ol>
-           <li><a href="{@docRoot}preview/download_mp1.html">Developer Preview 1</a></li>
-           <li><a href="{@docRoot}preview/download_mp2.html">Developer Preview 2</a></li>
-        </ol>
-  </div>
-</div>
-
-
-<p>
-  Android M 預覽版 SDK 有開發工具、Android 系統檔案以及程式庫檔案,可以幫助測試您的應用程式和下一個平台版本隨附的新 API。
-本文件會說明如何取得可下載的預覽版元件來測試您的應用程式。
-
-</p>
-
-
-<h2 id="sdk">Android 6.0 SDK</h2>
-
-<p>
-  預覽版 SDK 可透過 <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK 管理器</a>下載取得。如需有關下載和設定預覽版 SDK 的詳細資訊,請參閱<a href="{@docRoot}preview/setup-sdk.html#downloadSdk">設定預覽版 SDK</a>。
-
-</p>
-
-
-<h2 id="docs">開發人員文件</h2>
-
-<p>
-  開發人員文件下載套件提供詳細的 API 參考資料和預覽版的 API 差異報告。
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Description</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="docs-dl">
-    <td>Android M Preview 3<br>Developer Docs</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >m-preview-3-developer-docs.zip</a><br>
-      MD5: d99b14b0c06d31c8dfecb25072654ca3<br>
-      SHA-1: 9cefeeda07676130da606a1796e1c00fffc667c1
-    </td>
-  </tr>
-</table>
-
-
-<h2 id="images">硬體系統映像</h2>
-
-<p>
-  這些系統映像可以讓您在實體裝置上安裝預覽版的平台來進行測試。
-使用其中一個映像設定裝置,您就可以安裝並測試您的應用程式,瞭解應用程式在下一個版本的平台上表現如何。
-在裝置上安裝系統映像的過程中,會「移除裝置當中所有的資料」,因此您應該在安裝系統映像之前備份您的資料。<em></em>
-
-
-</p>
-
-<p class="warning">
-  <b>警告:</b>下列 Android 系統映像是預覽版,可能隨時會有變更。使用這些系統映像受到「Android SDK 預覽版授權協議」的約束。
-Android 預覽版系統映像還不是穩定的版本,可能會包含許多錯誤和瑕疵而對您的電腦系統、裝置和資料造成損害。
-
-預覽版的 Android 系統映像與出廠作業系統的測試不同,可能會導致您的手機和安裝的服務與應用程式停止運作。
-
-
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Device</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="hammerhead">
-    <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >hammerhead-MPA44I-preview-2ebbc049.tgz</a><br>
-      MD5: 91a924fb0c9f8e716e3b4c9954fd0dbb<br>
-      SHA-1: 2ebbc049b68c4da8baeee3e42bb94d7a965ba4a3
-    </td>
-  </tr>
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-MPA44I-preview-62b9c486.tgz</a><br>
-      MD5: ac6e58da86125073d9c395257fd42664<br>
-      SHA-1: 62b9c486fd7a5020e228d53ca5acd5c1857e48ff
-    </td>
-  </tr>
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-MPA44I-preview-5c30a6e2.tgz</a><br>
-      MD5: 7f83768757913d3fea945a661020d185<br>
-      SHA-1: 5c30a6e2acd11a81f4105b12d23ff654f534f699
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-MPA44I-preview-2860040a.tgz</a><br>
-      MD5: 438da8d37da9e341a69cfb16a4001ac5<br>
-      SHA-1: 2860040a326582f1ff5f702bf9a1ef002717fc98
-    </td>
-  </tr>
-
-</table>
-
-<h3 id="install-image">在裝置上安裝映像</h3>
-
-<p>
-  如果要使用裝置映像進行測試,您必須先在相容的裝置上安裝映像。請依照下面的指示安裝系統映像:
-
-</p>
-
-<ol>
-  <li>下載此處列出的其中一個系統映像,然後解壓縮。</li>
-  <li>備份您要保留的所有裝置資料。</li>
-  <li>依照
-<a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
-的指示,將映像更新到您的裝置。</li>
-</ol>
-
-<p class="note">
-  <strong>注意:</strong>在您使用預覽版系統映像更新開發裝置之後,裝置就會透過無線 (OTA) 更新方式自動升級為下一個預覽版版本。
-
-</p>
-
-<h3 id="revertDevice">將裝置還原成出廠規格</h3>
-
-<p>
-  如果您要解除安裝預覽版並將裝置還原成出廠規格,請至
-<a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a> 並下載您要為裝置更新的映像。
-依照該頁面的指示,將映像更新到您的裝置。
-
-</p>
-
-  </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
-  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
-  function onDownload(link) {
-
-    $("#downloadForRealz").html("Download " + $(link).text());
-    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
-    $("#tos").fadeIn('fast');
-    $("#landing").fadeOut('fast');
-
-    return true;
-  }
-
-
-  function onAgreeChecked() {
-    /* verify that the TOS is agreed */
-    if ($("input#agree").is(":checked")) {
-      /* reveal the download button */
-      $("a#downloadForRealz").removeClass('disabled');
-    } else {
-      $("a#downloadForRealz").addClass('disabled');
-    }
-  }
-
-  function onDownloadForRealz(link) {
-    if ($("input#agree").is(':checked')) {
-    /*
-      $("#tos").fadeOut('fast');
-      $("#landing").fadeIn('fast');
-    */
-
-      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
-
-    /*
-      location.hash = "";
-    */
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  $(window).hashchange( function(){
-    if (location.hash == "") {
-      location.reload();
-    }
-  });
-
-</script>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/app-linking.jd b/docs/html-intl/intl/zh-tw/preview/features/app-linking.jd
deleted file mode 100644
index 5be8a0f..0000000
--- a/docs/html-intl/intl/zh-tw/preview/features/app-linking.jd
+++ /dev/null
@@ -1,123 +0,0 @@
-page.title=應用程式連結
-page.image=images/cards/card-app-linking_2x.png
-page.keywords=應用程式連結, 深層連結, 意圖
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本文件內容</h2>
-      <ol>
-        <li><a href="#web-assoc">宣告網站關聯</a></li>
-        <li><a href="#verfy-links">要求應用程式連結驗證</a></li>
-        <li><a href="#user-manage">管理應用程式連結設定</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  Android 意圖系統是一個彈性機制,讓應用程式能夠用來處理內容和要求。
-  有許多應用程式可能會在它們的意圖篩選條件中宣告相符的 URI 模式。當使用者按一下不含預設啟動處理常式的 Web 連結時,平台可能會顯示一個對話方塊,讓使用者能夠從具備已宣告相符意圖篩選條件的應用程式清單中選取。
-
-
-</p>
-
-<p>
-  Android M 開發人員預覽版引進了應用程式連結的支援,這樣就能藉由允許應用程式開發人員將應用程式關聯至他們所擁有的 Web 網域,來改善現有的連結處理。
-當開發人員建立這個關聯時,平台可以自動判斷要用來處理特定 Web 連結的預設應用程式,並略過詢問使用者的程序。
-
-
-</p>
-
-
-<h2 id="web-assoc">宣告網站關聯</h2>
-
-<p>
-  網站擁有者必須宣告與應用程式的關聯,才能建立應用程式連結。站台擁有者可藉由在網域上的已知位置裝載名為 {@code statements.json} 的 JSON 檔案,來宣告與應用程式的關係:
-
-
-</p>
-
-<pre>http://&lt;domain&gt;:&lt;optional port&gt;/.well-known/statements.json</pre>
-
-<p class="note">
-  <strong>注意:</strong>
-  在 M 開發人員預覽版期間,會透過 http 通訊協定來驗證 JSON 檔案。如果是平台的正式版本,就會透過加密的 https 通訊協定來驗證該檔案。
-
-</p>
-
-<p>
-  這個 JSON 檔案會指出應該在這個網域中用來做為 URL 預設處理常式的 Android 應用程式。
-它會根據下列欄位來識別應用程式:
-</p>
-
-<ul>
-  <li>{@code package_name}:宣告於應用程式宣示說明中的套件名稱。</li>
-
-  <li>{@code sha256_cert_fingerprints}:您應用程式簽署憑證的 SHA256 指紋。
-    您可以使用 Java 金鑰工具,利用下列命令來產生指紋:
-    <pre>keytool -list -v -keystore my-release-key.keystore</pre>
-  </li>
-</ul>
-
-<p>
-  下列檔案清單會顯示
-{@code statements.json} 檔案的內容與格式範例:
-</p>
-
-<pre>
-[{
-  "relation": ["delegate_permission/common.handle_all_urls"],
-  "target": {
-    "namespace": "android_app",
-    "package_name": "<strong>&lt;package name&gt;</strong>",
-    "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
-  }
-}]
-</pre>
-
-
-<h2 id="verfy-links">要求應用程式連結驗證</h2>
-
-<p>
-  應用程式可以要求平台根據裝載於個別 Web 網域上的 {@code statements.json} 檔案,自動驗證在其意圖篩選條件的資料元素中由主機名稱所定義的任何應用程式連結。
-
-如要要求應用程式連結驗證,請將 {@code android:autoVerify}
- 屬性新增到宣示說明中每個所需的意圖篩選條件中,如下列宣示說明程式碼片段所示:
-
-</p>
-
-<pre>
-&lt;activity ...&gt;
-    &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
-        &lt;action android:name="android.intent.action.VIEW" /&gt;
-        &lt;category android:name="android.intent.category.DEFAULT" /&gt;
-        &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
-        &lt;data android:scheme="http" android:host="www.android.com" /&gt;
-        &lt;data android:scheme="https" android:host="www.android.com" /&gt;
-    &lt;/intent-filter&gt;
-&lt;/activity&gt;
-</pre>
-
-<p>
-  當 {@code android:autoVerify} 屬性出現在應用程式宣示說明時,平台即會在安裝該應用程式時嘗試驗證應用程式連結。
-如果平台無法成功驗證應用程式連結,就無法將該應用程式設定為偏好使用的應用程式來處理 Web 連結。
-當使用者下次開啟其中一個連結時,平台就切換回為該使用者展示一個對話方塊。
-
-
-</p>
-
-<p class="note">
-  <strong>注意:</strong>在測試期間,如果驗證失敗,可能會產生誤判,但是使用者已經使用系統「設定」應用程式,明確地啟用應用程式來自動開啟支援的連結。在此案例中,不會顯示任何對話方塊,而且連結會直接連至您的應用程式,但這只是基於使用者的設定,而不是因為驗證成功所致。
-
-
-
-</p>
-
-
-<h2 id="user-manage">管理應用程式連結設定</h2>
-
-<p>
-  使用者可以變更應用程式連結設定,讓他們能夠以偏好使用的方式來處理 URL。您可以在系統「設定」應用程式中,於 [設定] &gt; [應用程式] &gt; [應用程式資訊] &gt; [預設開啟]<strong></strong> 下方,檢閱和管理應用程式連結。
-
-
-</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/runtime-permissions.jd b/docs/html-intl/intl/zh-tw/preview/features/runtime-permissions.jd
deleted file mode 100644
index cf756aa..0000000
--- a/docs/html-intl/intl/zh-tw/preview/features/runtime-permissions.jd
+++ /dev/null
@@ -1,794 +0,0 @@
-page.title=權限
-page.tags=previewresources, androidm
-page.keywords=權限, 執行階段, 預覽
-page.image={@docRoot}preview/features/images/permissions_check.png
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>快速檢視</h2>
-    <ul>
-      <li>如果您的應用程式是以 M 預覽版 SDK 為目標,它會提示使用者在執行階段授與權限,而不是安裝期間。
-</li>
-      <li>使用者能隨時從應用程式 [設定] 畫面撤銷權限。
-</li>
-      <li>您的應用程式每次執行時都需要檢查它是否有所需的權限。
-</li>
-    </ul>
-
-    <h2>本文件內容</h2>
-    <ol>
-      <li><a href="#overview">總覽</a></li>
-      <li><a href="#coding">編寫執行階段權限的程式碼</a></li>
-      <li><a href="#testing">測試執行階段權限</a></li>
-      <li><a href="#best-practices">建議做法</a></li>
-    </ol>
-
-<!--
-  <h2>Related Samples</h2>
-  <ol>
-    <li></li>
-  </ol>
--->
-
-<!--
-  <h2>See also</h2>
-  <ol>
-    <li></li>
-  </ol>
--->
-  </div> <!-- qv -->
-</div> <!-- qv-wrapper -->
-
-
-<p>
-  M 開發人員預覽版導入新的應用程式權限模型,簡化使用者安裝和升級應用程式的程序。
-如果 M 預覽版上執行的應用程式支援新的權限模型,使用者安裝或升級應用程式時,不需要授與任何權限。應用程式會在需要時才要求權限,而且系統會對使用者顯示要求權限的對話方塊。
-
-
-
-
-</p>
-
-<p>
-  如果應用程式支援新的權限模型,它仍能在在執行舊版 Android 的裝置上安裝並執行 (在那些裝置上使用舊的權限模型)。
-
-
-</p>
-
-<h2 id="overview">
-  總覽
-</h2>
-
-<p>
-  使用 M 開發人員預覽版,平台導入新的應用程式權限模型。
-以下是這個新模型的主要元件摘要:
-</p>
-
-<ul>
-  <li>
-    <strong>宣告權限:</strong>應用程式會在宣示說明中宣告所需的所有權限,如舊版 Android 平台。
-
-  </li>
-
-  <li>
-    <strong>權限群組:</strong>權限會根據其功能分為「權限群組」
-<em></em>。例如,
-<code>CONTACTS</code> 權限群組包含讀取和寫入使用者聯絡人與設定檔資訊的權限。
-
-  </li>
-
-  <li>
-    <p><strong>安裝期間授與的有限權限:</strong>當使用者安裝或更新應用程式時,系統會將應用程式所要求且歸入 {@link
-android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL} 的所有權限授與應用程式。
-
-
-    例如,會在安裝期間自動授與歸入 {@link
-android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL} 的鬧鐘與網際網路權限。
-
-    </p>
-
-    <p>系統也會授與應用程式簽名和系統權限,如<a href="#system-apps">系統應用程式和簽名</a>所述。
-
-安裝期間「不」<em></em>會提示使用者授與任何權限。
-</p>
-  </li>
-
-  <li>
-    <strong>使用者在執行階段授與權限:</strong>應用程式要求權限時,系統會對使用者顯示對話方塊,接著呼叫應用程式的回呼函數,通知它是否已授與權限。
-
-如果使用者授與權限,應用程式會獲得在應用程式宣示說明中所宣告之權限功能區域中的所有權限。
-
-
-  </li>
-
-</ul>
-
-<p>
-  此權限模型改變應用程式要求權限的功能行為。
-以下是您應遵循以調整此模型的開發做法摘要:
-
-</p>
-
-<ul>
-
-  <li>
-    <strong>一律檢查是否具備權限:</strong>當應用程式需要執行任何需要權限的動作時,都應要先檢查是否具備有該權限。
-
-若不具備,即要求獲得授與該權限。
-
-  </li>
-
-  <li>
-    <strong>適當處理缺少權限的情況:</strong>如果應用程式未獲授與適當的權限,它應要能完全處理失敗。
-
-    例如,若只有新增功能需要該權限,應用程式可以將該功能停用。
-如果應用程式務必要具備該權限才能運作,應用程式可以停用其所有功能,並通知使用者務必要授與該權限。
-
-
-  </li>
-
-  <div class="figure" style="width:220px" id="fig-perms-screen">
-    <img src="{@docRoot}preview/features/images/app-permissions-screen_2x.png" srcset="{@docRoot}preview/features/images/app-permissions-screen.png 1x, {@docRoot}preview/features/images/app-permissions-screen_2x.png 2x" alt="" width="220">
-    <p class="img-caption">
-      <strong>圖 1.</strong>應用程式 [設定] 的權限畫面。
-    </p>
-  </div>
-
-  <li>
-    <strong>權限可以撤銷:</strong>使用者可以隨時撤銷應用程式的權限。
-如果使用者關閉應用程式的權限,並「不」<em></em>會通知應用程式。
-再次強調,您的應用程式在執行任何受限制的動作之前,應該驗證它是否具備所需的權限。
-
-  </li>
-</ul>
-
-<p class="note">
-  <strong>注意:</strong>如果應用程式是以 M 開發人員預覽版為目標,「務必要」
-<em></em>使用新的權限模型。
-</p>
-
-<p>
-  自 M 開發人員預覽版推出起,並非所有 Google 應用程式都完全實作新的權限模型。
-Google 正透過 M 開發人員預覽版逐漸更新這些應用程式,以適當保留權限切換設定。
-
-
-</p>
-
-<p class="note">
-  <strong>注意:</strong>如果您的應用程式有自己的 API 介面,務必要先確定呼叫端具備存取該資料的必要權限後,再 Proxy 權限。
-
-
-</p>
-
-<h3 id="system-apps">
-  系統應用程式和簽名權限
-</h3>
-
-<p>
-  一般來說,當使用者安裝應用程式時,系統只會將
- {@link android.content.pm.PermissionInfo#PROTECTION_NORMAL
- PROTECTION_NORMAL} 授與應用程式。不過,在某些情況下,系統會授與應用程式更多權限:
-
-</p>
-
-<ul>
-  <li>如果應用程式屬於系統映像的一部分,會自動獲授與其宣示說明中列出的所有權限。
-
-  </li>
-
-  <li>如果應用程式要求宣示說明中歸入 {@link
-android.content.pm.PermissionInfo#PROTECTION_SIGNATURE PROTECTION_SIGNATURE} 的權限,並和宣告那些權限的應用程式一樣,以相同的憑證簽署應用程式,系統會在安裝時將那些權限授與要求的應用程式。
-
-
-
-  </li>
-</ul>
-
-<p>
-  在這兩種情況下,使用者仍能隨時撤銷權限,只要前往系統的 [設定]<strong></strong> 畫面,然後選擇 [應用程式] &gt;<strong></strong>
-
- <i>app_name</i> &gt; [權限]<strong></strong>。應用程式應持續在執行階段檢查是否具備權限,並在必要時予以要求。
-
-
-</p>
-
-<h3 id="compatibility">
-  往後和回溯相容性
-</h3>
-
-<p>
-  如果應用程式不是以 M 開發人員預覽版為目標,即使在 M 預覽版裝置上,應用程式也會持續使用舊的權限模型。
-當使用者安裝應用程式時,系統會要求使用者授與應用程式的宣示說明中列出的所有權現。
-
-
-</p>
-
-<p class="note">
-  <strong>注意:</strong>在執行 M 開發人員預覽版的裝置上,使用者能從應用程式的設定畫面關閉任何應用程式 (包括舊版應用程式) 的權限。
-
-如果使用者關閉舊版應用程式的權限,系統會自動停用適當功能。
-當應用程式嘗試執行需要那項權限的操作時,該操作不一定會造成例外狀況。
-
-而可能傳回空的資料集,通知發生錯誤,或展示未預期的行為。
-例如,如果您不具備查詢行事曆的權限,方法會傳回空的資料集。
-
-</p>
-
-<p>
-  如果您在並非執行 M 預覽版的裝置上使用新的權限模型來安裝應用程式,系統會將它和任何其他應用程式一視同仁:系統會在安裝期間要求使用者授與所有宣告的權限。
-
-
-
-</p>
-
-<p class="note">
-  <strong>注意:</strong>對於預覽版,您必須將 SDK 最低版本設定為 M 預覽版 SDK,才能以預覽版 SDK 編譯。
-這表示在開發人員預覽版期間,您將無法在舊版平台上測試這類應用程式。
-
-
-</p>
-
-<h3 id="perms-vs-intents">權限與意圖比較</h3>
-
-<p>
-  在許多情況下,您可以為應用程式在兩種方法當中擇一來執行工作。
-您可以讓應用程式要求權限以自行執行操作。
-或者,您可以讓應用程式使用意圖,讓其他應用程式來執行工作。
-
-</p>
-
-<p>
-  例如,假設您的應用程式需要能夠使用裝置相機拍攝相片。
-您的應用程式能要求
-<code>android.permission.CAMERA</code> 權限,讓應用程式直接存取相機。
-接著,應用程式會使用相機 API 來控制相機並拍攝相片。
-這種方法可讓您的應用程式對攝影處理程序有完整控制權,並讓您將相機 UI 納入應用程式。
-
-
-</p>
-
-<p>
-  不過,如果您不需要這類控制權,您可以只使用 {@link
-android.provider.MediaStore#ACTION_IMAGE_CAPTURE ACTION_IMAGE_CAPTURE} 意圖來要求影像。
-當您啟動意圖時,會提示使用者選擇相機應用程式 (如果還沒有預設的相機應用程式),然後該應用程式會拍攝相片。
-
-相機應用程式會將相片傳回應用程式的 {@link
- android.app.Activity#onActivityResult onActivityResult()} 方法。
-</p>
-
-<p>
-  同樣地,如果您需要撥打電話、存取使用者的聯絡人等等,您都可以建立適當的意圖來執行,或是要求權限,然後直接存取適當的物件。
-
-每種方法各有利弊。
-
-</p>
-
-<p>
-  如果您使用權限:
-</p>
-
-<ul>
-  <li>當您執行操作時,應用程式對使用者體驗有完整控制權。
-不過,如此多樣化控制使您必須設計適當的 UI,而增加工作複雜度。
-
-  </li>
-
-  <li>當您初次執行操作時,會提示使用者授與權限 (僅此一次)。
-之後應用程式可以逕行執行該操作,不需要再與使用者有其他互動。
-不過,如果使用者未授與權限 (或稍後予以撤銷),您的應用程式會完全無法執行該操作。
-
-
-  </li>
-</ul>
-
-<p>
-  如果您使用意圖:
-</p>
-
-<ul>
-  <li>您不必為該操作設計 UI。處理意圖的應用程式會提供 UI。不過,這表示您對使用者體驗沒有控制權。
-
-使用者可能會和您不曾見過的應用程式互動。
-
-  </li>
-
-  <li>如果使用者沒有執行該操作的預設應用程式,系統會提示使用者選擇應用程式。如果使用者未指定預設處理常式,每次執行操作時可能都要完成額外的對話方塊。
-
-
-
-  </li>
-</ul>
-
-<h2 id="coding">編寫執行階段權限的程式碼</h2>
-
-<p>
-  如果您的應用程式是以新的 M 開發人員預覽版為目標,請務必使用新的權限模型。
-這表示除了在宣示說明中宣告所需的權限之外,您也必須在執行階段檢查是否具備權限,並在您不具備時要求權限。
-
-
-
-</p>
-
-<h3 id="enabling">
-  啟用新的權限模型
-</h3>
-
-<p>
-  如要啟用新的 M 開發人員預覽版權限模型,可將應用程式的
-<code>targetSdkVersion</code> 屬性設定為 <code>"MNC"</code>,並將
-<code>compileSdkVersion</code> 設定為 <code>"android-MNC"</code>。這樣做可啟用所有新權限功能。
-
-</p>
-
-<p>
-  對於預覽版,您必須將 <code>minSdkVersion</code> 設定為
-<code>"MNC"</code>,才能以預覽版 SDK 編譯。
-</p>
-
-<h3 id="m-only-perm">
-  指定只限 M 預覽版使用的權限
-</h3>
-
-<p>
-  您可以在宣示說明中使用新的 <code>&lt;uses-permission-sdk-m&gt;</code> 元素,指出只有在 M 預覽版上才需要某權限。
-如果您以這種方式宣告權限,每當在舊版裝置上安裝應用程式時,系統都不會提示使用者或將權限授與應用程式。藉由使用 <code>&lt;uses-permission-sdk-m&gt;</code> 元素,當使用者安裝更新時,您不需要強制他們授與權限,就可以將新的權限新增至更新的應用程式版本。
-
-
-
-
-
-
-</p>
-
-<p>
-  如果應用程式在使用 M 開發人員預覽版的裝置上執行,
-<code>&lt;uses-permission-sdk-m&gt;</code> 的運作方式會和
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code> 相同。
-  當他們安裝應用程式時,系統不會提示使用者授與任何權限,而應用程式會在需要時才要求權限。
-
-</p>
-
-<h3 id="prompting">
-  提示授與權限
-</h3>
-
-<p>
-  如果您的應用程式使用新的 M 開發人員預覽版權限模型,在執行 M 預覽版的裝置上初次啟動應用程式時,不會要求使用者授與所有權限。
-
-您的應用程式會在需要時才要求權限。
-應用程式要求權限時,系統會對使用者顯示對話方塊。
-
-</p>
-
-<p>
-  如果您的應用程式在 SDK 22 以下版本的裝置上執行,應用程式會使用舊的權限模型。
-當使用者安裝應用程式時,會提示他們授與應用程式在其宣示說明中要求的所有權限,但標示為 <code>&lt;uses-permission-sdk-m&gt;</code> 的那些權限除外。
-
-
-</p>
-
-<h4 id="check-platform">檢查應用程式執行所在的平台</h4>
-
-<p>
-  只有執行 M 開發人員預覽版的裝置上才支援此權限模型。
-呼叫這些方法之前,應用程式應該檢查 {@link android.os.Build.VERSION#CODENAME
- Build.VERSION.CODENAME} 的值,驗證它執行所在的平台。
-
-如果裝置是執行 M 開發人員預覽版,
-{@link android.os.Build.VERSION#CODENAME CODENAME} 是 <code>"MNC"</code>。
-</p>
-
-<h4 id="check-for-permission">檢查應用程式是否具備所需權限</h4>
-
-<p>當使用者嘗試執行需要權限的操作時,應用程式會檢查它目前是否具備可執行此操作的權限。
-如要這麼做,應用程式可呼叫
-
-<code>Context.checkSelfPermission(<i>permission_name</i>)</code>。由於使用者可以隨時撤銷應用程式的權限,即使應用程式知道使用者已授與該權限,還是應該執行此檢查。
-
-
-例如,如果使用者想要使用應用程式拍攝相片,應用程式會呼叫 <code>Context.checkSelfPermission(Manifest.permission.CAMERA)</code>。
-
-</p>
-
-<p class="table-caption" id="permission-groups">
-  <strong>表 1.</strong>權限和權限群組。</p>
-<table>
-  <tr>
-    <th scope="col">權限群組</th>
-    <th scope="col">權限</th>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CALENDAR</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_CALENDAR</code>
-        </li>
-      </ul>
-      <ul>
-        <li>
-          <code>android.permission.WRITE_CALENDAR</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CAMERA</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.CAMERA</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CONTACTS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_CONTACTS</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_CONTACTS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_PROFILE</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_PROFILE</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.LOCATION</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.ACCESS_FINE_LOCATION</code>
-        </li>
-        <li>
-          <code>android.permission.ACCESS_COARSE_LOCATION</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.MICROPHONE</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.RECORD_AUDIO</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.PHONE</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_PHONE_STATE</code>
-        </li>
-        <li>
-          <code>android.permission.CALL_PHONE</code>
-        </li>
-        <li>
-          <code>android.permission.READ_CALL_LOG</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_CALL_LOG</code>
-        </li>
-        <li>
-          <code>com.android.voicemail.permission.ADD_VOICEMAIL</code>
-        </li>
-        <li>
-          <code>android.permission.USE_SIP</code>
-        </li>
-        <li>
-          <code>android.permission.PROCESS_OUTGOING_CALLS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.SENSORS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.BODY_SENSORS</code>
-        </li>
-      </ul>
-      <ul>
-        <li>
-          <code>android.permission.USE_FINGERPRINT</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.SMS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.SEND_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_WAP_PUSH</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_MMS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_CELL_BROADCASTS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-</table>
-
-<h4 id="request-permissions">必要時要求權限</h4>
-
-<p>如果應用程式還沒有所需的權限,應用程式會呼叫
-<code>Activity.requestPermissions(String[], int)</code> 方法以要求適當的權限。
-應用程式會傳遞它所需的權限,還有整數「要求代碼」。
-
-  這種方法以非同步方式運作:它會立即傳回,並在使用者回應對話方塊後,系統會以該結果呼叫應用程式的回呼方法,傳遞應用程式傳遞給 <code>requestPermissions()</code> 的相同「要求代碼」。
-
-
-</p>
-
-  <p>下列程式碼會檢查應用程式是否具備讀取使用者聯絡人的權限,並在必要時要求權限。
-</p>
-
-<pre>
-if (checkSelfPermission(Manifest.permission.READ_CONTACTS)
-        != PackageManager.PERMISSION_GRANTED) {
-    requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
-            MY_PERMISSIONS_REQUEST_READ_CONTACTS);
-
-    // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
-    // app-defined int constant
-
-    return;
-}
-</pre>
-
-<h4 id="handle-response">處理權限要求回應</h4>
-
-<p>
-  當應用程式要求權限時,系統會對使用者呈現對話方塊。
-當使用者回應時,系統會呼叫 <code>Activity.onRequestPermissionsResult(int, String[], int[])</code> 並將使用者回應傳遞給它。
-
-您的應用程式需要覆寫該方法。將您傳遞給 <code>requestPermissions()</code> 的相同要求代碼傳遞給回呼。
-
-例如,如果應用程式要求 <code>READ_CONTACTS</code> 存取權,可能會有下列回呼方法:
-
-
-</p>
-
-<pre>
-&#64;Override
-public void onRequestPermissionsResult(int requestCode,
-        String permissions[], int[] grantResults) {
-    switch (requestCode) {
-        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
-            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-
-                // permission was granted, yay! do the
-                // calendar task you need to do.
-
-            } else {
-
-                // permission denied, boo! Disable the
-                // functionality that depends on this permission.
-            }
-            return;
-        }
-
-        // other 'switch' lines to check for other
-        // permissions this app might request
-    }
-}
-</pre>
-
-  <p>如果使用者授與權限,系統就會將應用程式宣示說明所列出該功能區域的所有權限給予應用程式。
-如果使用者拒絕要求,您應該執行適當動作。
-例如,您可能會停用依存於此權限的任何選單動作。
-
-  </li>
-</p>
-
-<p>
-  系統要求使用者授與權限時,使用者可選擇告知系統不要再次要求該權限。
-在上述情況下,當應用程式使用 <code>requestPermissions()</code> 要求該權限時,系統會立即拒絕要求。
-
-在這種情況下,如果使用者再次明確拒絕您的要求,系統會以相同的方式呼叫您的 <code>onRequestPermissionsResult()</code>。
-
-基於這個理由,您的應用程式不能假設已與使用者發生任何直接互動。
-
-</p>
-
-<h2 id="testing">測試執行階段權限</h2>
-
-
-<p>
-  如果您的應用程式是以新的 M 開發人員預覽版為目標,您必須測試它是否能適當處理權限。
-您不能假設應用程式在執行時具備任何特定權限。
-應用程式初次啟動時,很可能不具備任何權限,且使用者可隨時撤銷或還原權限。
-
-
-</p>
-
-<p>
-  您應該測試應用程式,確保它在所有權限情況下都能正常運作。
-使用 M 預覽版 SDK,我們現在提供 <a href="{@docRoot}tools/help/adb.html">Android 偵錯橋 (adb)</a> 命令,不管需要嘗試哪種權限設定都能讓您測試。
-
-
-
-</p>
-
-<h3>
-  新的 adb 命令和選項
-</h3>
-
-<p>
-  M 預覽版 SDK 平台工具提供的數個命令可讓您測試應用程式如何處理權限。
-
-</p>
-
-<h4>
-  連同權限一併安裝
-</h4>
-
-<p>
-  您可以使用 <a href="{@docRoot}tools/help/adb.html#move"><code>adb
-  install</code></a> 命令的新 <code>-g</code> 選項,安裝應用程式並授與其宣示說明中列出的所有權限:
-
-</p>
-
-<pre class="no-pretty-print">
-$ adb install -g &lt;path_to_apk&gt;
-</pre>
-
-<h4>
-  授與和撤銷權限
-</h4>
-
-<p>
-  您可以使用新的 ADB <a href="{@docRoot}tools/help/adb.html#pm">套件管理員 (pm)</a> 命令,對安裝的應用程式授與和撤銷權限。此功能在自動化測試時非常實用。
-
-
-</p>
-
-<p>
-  如要授與權限,可使用套件管理員的 <code>grant</code> 命令:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant &lt;package_name&gt; &lt;permission_name&gt;
-</pre>
-
-<p>
-  例如,如要將可錄製音訊的權限授與 com.example.myapp 套件,請使用此命令:
-
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant com.example.myapp android.permission.RECORD_AUDIO
-</pre>
-
-<p>
-  如要撤銷權限,可使用套件管理員的 <code>revoke</code> 命令:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm revoke &lt;package_name&gt; &lt;permission_name&gt;
-</pre>
-
-<h2 id="best-practices">最佳做法</h2>
-
-<p>
-  新的權限模型讓使用者有更順暢的體驗,並能輕鬆安裝應用程式且對應用程式執行的工作感到自在。
-
-建議使用下列最佳做法以充分利用新的模型。
-
-</p>
-
-
-<h3 id="bp-what-you-need">只要求您所需的權限</h3>
-
-<p>
-  每次要求權限時,您都是在強迫使用者做出決定。
-  如果使用者拒絕要求,就會減少您應用程式的功能。
-  您應該儘可能減少提出這些要求的次數。
-</p>
-
-<p>
-  例如,您的應用程式可經常使用<a href="{@docRoot}guide/components/intents-filters.html">意圖</a>來取得所需功能,而不是要求權限。
-
-如果您的應用程式需要使用手機的相機拍攝相片,應用程式可以使用 {@link
-  android.provider.MediaStore#ACTION_IMAGE_CAPTURE
-  MediaStore.ACTION_IMAGE_CAPTURE} 意圖。
-當您的應用程式執行意圖時,系統會提示使用者選擇已安裝的相機應用程式來拍攝相片。
-
-
-</p>
-
-<h3 id="bp-dont-overwhelm">
-  別讓使用者無法承受
-</h3>
-
-<p>
-  如果您讓使用者一次面對太多權限要求,可能會讓使用者無法承受而結束您的應用程式。您應該改為在需要時才要求權限。
-
-
-</p>
-
-<p>
-  在某些情況下,您的應用程式可能必須具備一或多個權限。在那種情況下,在應用程式啟動時立即要求所有權限是合理的舉措。
-
-例如,如果您建立攝影應用程式,該應用程式會需要存取裝置相機。
-使用者初次啟動應用程式時,看到要求使用相機的權限不會被嚇到。
-
-但如果相同的應用程式具有與使用者聯絡人分享相片的功能,您可能「不」<em></em>應該在初次啟動時要求該權限。
-
-可以等到使用者嘗試使用「分享」功能時,再要求該權限。
-
-</p>
-
-<p>
-  如果您的應用程式提供教學課程,在教學課程結束時要求應用程式的基本權限是合理的舉措。
-
-</p>
-
-<h3 id="bp-explain">
-  說明需要權限的原因
-</h3>
-
-<p>
-  當您呼叫
-<code>requestPermissions()</code> 時,系統顯示的權限對話方塊會說明您的應用程式想要的權限,但不會說明原因。
-在某些情況下,使用者可能會感到不解。
-  在呼叫 <code>requestPermissions()</code> 前對使用者說明應用程式想要權限的原因是不錯的想法。
-
-</p>
-
-<p>
-  例如,攝影應用程式可能想要使用定位服務,以便將相片加上地理標籤。
-一般使用者可能不明白相片可以包含定位資訊,而不明白為何攝影應用程式會想要知道位置。
-
-在這種情況下,在呼叫 <code>requestPermissions()</code>「之前」<em></em>,將此功能的相關資訊告訴使用者會是不錯的想法。
-
-
-</p>
-
-<p>
-  您可以將這些要求與應用程式教學課程結合來完成此作業。教學課程可依序顯示應用程式的各項功能,並可以同時說明需要哪些權限。
-
-例如,攝影應用程式的教學課程可以示範「與聯絡人分享相片」功能,接著告訴使用者需要提供權限,應用程式才能看到使用者的聯絡人。
-
-
-接著,應用程式可以呼叫 <code>requestPermissions()</code>,要求使用者提供該存取權。
-當然,並非每位使用者都會依照教學課程執行動作,所以您仍需要在應用程式的正常操作期間檢查和要求權限。
-
-
-</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/index.jd b/docs/html-intl/intl/zh-tw/preview/index.jd
deleted file mode 100644
index 3aaf382..0000000
--- a/docs/html-intl/intl/zh-tw/preview/index.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Android M 開發人員預覽版
-page.tags="preview",
-meta.tags="preview, M preview", androidm
-fullpage=true
-section.landing=true
-header.hide=1
-footer.hide=1
-@jd:body
-
-<section class="dac-expand dac-hero dac-light" >
-  <div class="wrap">
-    <div class="cols dac-hero-content">
-      <div class="col-9of16 col-push-7of16 dac-hero-figure">
-        <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png" srcset="{@docRoot}images/home/devices-hero_620px.png 1x,
-             {@docRoot}images/home/devices-hero_620px_2x.png 2x">
-      </div>
-      <div class="col-7of16 col-pull-9of16">
-        <h1 class="dac-hero-title">Android M 開發人員預覽版</h1>
-        <p class="dac-hero-description">
-          準備使用新版 Android。在 Nexus 5、6、9 和 Player 上測試您的應用程式。
-瞭解新功能 &mdash; <strong>執行階段權限</strong>、<strong>休眠</strong>、<strong>應用程式待命</strong>等省電功能、新的<strong>輔助技術</strong>,以及其他功能。
-
-
-        </p>
-
-        <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          開始使用!
-</a><br>
-        <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          Developer Preview 3 (final SDK)</a>
-      </div>
-    </div>
-    <div class="dac-section dac-small">
-      <div class="resource-widget resource-flow-layout col-16"
-           data-query="collection:preview/landing/resources"
-           data-cardSizes="6x2"
-           data-maxResults="6"></div>
-    </div>
-  </div>
-</section>
-
-<section class="dac-section dac-gray"><div class="wrap">
-  <h1 class="dac-section-title">資源</h1>
-  <div class="dac-section-subtitle">
-    以下重要資訊可幫助您的應用程式準備好使用 Android M。
-  </div>
-
-  <div class="resource-widget resource-flow-layout col-16"
-       data-query="collection:preview/landing/more"
-       data-cardSizes="6x6"
-       data-maxResults="16"></div>
-
-    <ul class="dac-section-links">
-      <li class="dac-section-link">
-        <a href="https://code.google.com/p/android-developer-preview/">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          回報問題
-</a>
-      </li>
-      <li class="dac-section-link"><a href="http://g.co/dev/AndroidMDevPreview">
-        <span class="dac-sprite dac-auto-chevron"></span>
-        參加 G+ 社群
-</a>
-      </li>
-    </ul>
-  </div>
-</section>
-
diff --git a/docs/html-intl/intl/zh-tw/preview/license.jd b/docs/html-intl/intl/zh-tw/preview/license.jd
deleted file mode 100644
index c4acb91..0000000
--- a/docs/html-intl/intl/zh-tw/preview/license.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=授權協議
-
-@jd:body
-
-<p>
-如果想要開始使用 Android SDK 預覽版,您必須同意遵守下列條款和條件。如下方所述,請注意這是 Android SDK 預覽版,可能隨時會有變更,請您自負使用風險。
-Android SDK 預覽版還不是穩定的版本,可能會包含許多錯誤和瑕疵而對您的電腦系統、裝置和資料造成嚴重的損害。
-</p>
-
-<p>
-這是「Android SDK 預覽版授權協議」(以下稱「授權協議」)。
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1.簡介
-
-1.1「Android SDK 預覽版」(在「授權協議」中稱為「預覽版」,包括 (如果有可用的) Android 系統檔案、經過封裝的 API 和預覽版程式庫檔案) 是在「授權協議」之條款的約束下授權給您使用。「授權協議」就您對「預覽版」的使用,構成您與 Google 間具法律約束力之合約。
-
-1.2「Android」係指「Android 軟體開放原始碼專案」(http://source.android.com/) 所提供的 Android 裝置軟體堆疊 (不定期更新)。
-
-1.3「Google」係指 Google Inc.,是一家在美國德拉瓦州註冊的公司,地址為 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States。
-
-2.接受「授權協議」
-
-2.1 必須先同意遵守「授權協議」,才能使用此「預覽版」。如果不接受「授權協議」,您就無法使用此「預覽版」。
-
-2.2 按一下 [接受] 且/或使用「預覽版」,即表示您同意「授權協議」的條款。
-
-2.3 如果您是美國或其他國家/地區 (包括您所居住或使用此「預覽版」的國家/地區) 的法律所禁止接收此「預覽版」的人員,就不得使用此「預覽版」及接受「授權協議」。
-
-2.4 如果您將在公司或組織內部使用「預覽版」,您就要代表雇主或其他實體同意受「授權協議」約束,且您代表並保證具備完整法定權限來約束您的雇主或這類實體遵守「授權協議」。如果您不具備必要的權限,就不得代表您的雇主或其他實體接受「授權協議」或使用此「預覽版」。
-
-3.Google 的預覽版授權
-
-3.1 在「授權協議」之條款的約束下,Google 授權您使用此「預覽版」,此授權為買斷式、不可轉讓、非獨占性、不可轉授權、有限且可撤銷,僅在您公司或組織內部私下或內部使用。此「預覽版」僅供您用於開發在 Android 平台上執行的應用程式。
-
-3.2 您同意 Google 或第三方對此「預覽版」擁有一切法定權利及權益,包括存在於此「預覽版」中的任何「智慧財產權」。「智慧財產權」係指專利法、著作權法、商業秘密法、商標法及任何和所有其他專利權下的任何及一切權利。Google 保留一切未明確授予您的權利。
-
-3.3 您不得將此「預覽版」用於「授權協議」未明文許可的任何用途。除非適用的第三方授權所需,否則您不得:(a) 對此「預覽版」或其任何部分進行複製 (備份用途除外)、修改、改編、轉散佈、反向組譯、還原工程、解編或製作衍生成品;或是 (b) 將此「預覽版」的任何部分載入至行動電話或個人電腦以外的任何其他硬體裝置、將此「預覽版」的任何部分與其他軟體結合,或散佈包含此「預覽版」之任一部分的任何軟體或裝置。
-
-3.4 您同意不會從事任何可能導致或造成 Android 分裂的活動,包括但不限於以任何形式散佈從此「預覽版」衍生的軟體開發套件、參其製作或宣傳。
-
-3.5 對開放原始碼軟體授權下所授權之「預覽版」的使用、複製及散佈,完全受該開放原始碼軟體授權的條款管制,而不受「授權協議」管制。您同意遵守從這類開放原始碼軟體授權獲得的所有權利,並且避免採取任何可能終止、中止或侵害這類權利的行為。
-
-3.6 您同意 Google 可在不事先通知您的情況下變更其所提供之「預覽版」的形式和本質,且此「預覽版」的未來版本可與在此「預覽版」的先前版本上開發的應用程式不相容。您同意 Google 通常可全權斟酌永久或暫時停止提供此「預覽版」(或此「預覽版」的任何功能) 給您或使用者,毋須事先通知。
-
-3.7「授權協議」中的所有條款皆未授予您任何使用 Google 之商業名稱、商標、服務標章、標誌、網域名稱或其他明確品牌特徵的權利。
-
-3.8 您同意不會移除、遮蔽或更改可能附加至或內含在此「預覽版」中的任何專利權通知 (包括著作權和商標通知)。
-
-4.您對「預覽版」的使用
-
-4.1 Google 同意在「授權協議」下,任何條款皆未從您 (或您的授權人) 賦予 Google 對您使用此「預覽版」開發之任何軟體應用程式的任何權利及權益,包括存在於這些應用程式中的任何智慧財產權。
-
-4.2 您同意只就 (a)「授權協議」和 (b) 相關管轄權中任何適用法律、規定或是普遍獲得接受之慣例或指導方針 (包括任何有關將資料或軟體輸出或輸入美國或其他相關國家/地區的法律) 所允許的用途使用此「預覽版」及撰寫應用程式。
-
-4.3 您同意如果使用此「預覽版」開發應用程式,您將保護使用者的隱私權和法定權利。如果使用者提供您使用者名稱、密碼或是其他登入資訊或個人資訊,您必須告知使用者這類資訊將提供給您的應用程式使用,並且必須為這些使用者提供法定充分的隱私權通知和保護。如果您的應用程式會儲存使用者所提供的個人或敏感資訊,它必須確保這些資訊安全無虞。如果使用者提供 Google 帳戶資訊給您,則只有在每個使用者已授權您存取其 Google 帳戶並僅限用於使用者所授權之用途的情況下,您的應用程式才能使用該資訊來存取使用者的 Google 帳戶。
-
-4.4 您同意不會使用此「預覽版」從事任何不當活動,例如開發或散佈會以未經授權的方式干擾、妨礙、損害或存取 Google 或任何第三方之伺服器、網路或是其他財產或服務的應用程式。
-
-4.5 您同意對您透過 Android 裝置和 (或) Android 應用程式建立、傳輸或顯示的任何資料、內容或資源,以及上述行為造成的後果 (包括 Google 可能蒙受的任何損失或損害) 負起全責 (而 Google 對您或任何第三方就上述一切不需負任何責任)。
-
-4.6 您同意對違反在此「授權協議」、任何適用之第三方合約或《服務條款》或是任何適用之法律或規定下所必須遵守的義務,以及違反相關義務造成的後果 (包括 Google 或任何第三方可能蒙受的任何損失或損害) 負起全責 (而 Google 對您或任何第三方就上述一切不需負任何責任)。
-
-4.7「預覽版」目前正在開發中,因此您的測試與意見反應對開發程序非常重要。使用「預覽版」,您即認同某些功能仍處於開發階段,因此您不應期待「預覽版」擁有穩定版本的完整功能。在官方 Android SDK 發行之後,此「預覽版」不再受到支援時,您同意不使用此「預覽版」公開散佈或隨附任何應用程式。
-
-5.您的開發人員認證
-
-5.1 您同意負責保密 Google 可能核發給您或您自己選擇的任何開發人員認證,並且對在您開發人員認證名義下開發的所有應用程式負起全責。
-
-6.隱私權和資訊
-
-6.1 為了持續更新及改進此「預覽版」,Google 可能會從軟體收集某些使用狀況統計數據,包括但不限於軟體的唯一識別碼、相關 IP 位址、版本號碼,以及有關使用此「預覽版」中的哪些工具和 (或) 服務及其使用方式的相關資訊。在收集這類資訊之前,此「預覽版」會先通知您並徵求您的同意。如果您不同意,Google 將不會收集這類資訊。
-
-6.2 Google 會彙總並檢查收集到的資料,據以改善此「預覽版」,並且會依據《Google 隱私權政策》(http://www.google.com/policies/privacy/) 加以妥善保存。
-
-7.第三方應用程式
-
-7.1 如果您使用此「預覽版」來執行第三方開發的應用程式,或是執行會存取第三方所提供之資料、內容或資源的應用程式,您同意 Google 不需對這類應用程式、資料、內容或資源負任何責任。您瞭解您透過第三方應用程式存取的所有資料、內容或資源是由其提供者負起全責,而 Google 對您因使用或存取任何這些第三方應用程式、資料、內容或資源所造成的損失或損害不需負任何責任。
-
-7.2 您瞭解第三方應用程式提供給您的資料、內容或資源可能受到提供者 (或代表他們的其他人員或公司) 所擁有的智慧財產權保護。您不得根據這類資料、內容或資源 (不論是整個或部分) 修改、出租、出借、販售、散佈或製作衍生成品,除非相關擁有者明確授權您從事上述活動。
-
-7.3 您瞭解使用第三方應用程式、資料、內容或資源可能受到您與相關第三方之間的個別條款約束。
-
-8.使用 Google API
-
-8.1 Google API
-
-8.1.1 如果您使用任何 API 從 Google 擷取資料,您瞭解這些資料可能受到 Google 或資料提供者 (或代表他們的其他人員或公司) 所擁有的智慧財產權保護。您對任何這類 API 的使用可能受到其他《服務條款》約束。除非相關《服務條款》明文允許,否則您不得根據這類資料 (不論是整個或部分) 修改、出租、出借、販售、散佈或製作衍生成品。
-
-8.1.2 使用任何 API 從 Google 擷取使用者的資料時,您瞭解並同意只有在該使用者明確同意且授權您擷取其資料,而且僅限用於使用者所授權之用途的情況下,您才能擷取資料。
-
-9.終止「授權協議」
-
-9.1 除非您或 Google 終止「授權協議」(請見下方說明),否則「授權協議」將持續具有效力。
-
-9.2 如果想終止「授權協議」,只要停止使用此「預覽版」及任何相關的開發人員憑證即可。
-
-9.3 Google 可隨時通知您終止「授權協議」,無論有無原因。
-
-9.4「授權協議」在先發生下列任一情況時,將自動終止而不另行通知或採取其他行動:
-(A) Google 決定不再提供此「預覽版」或此「預覽版」的特定部分給您所居住或使用此服務之國家/地區的使用者;或
-(B) Google 發行最終版本的 Android SDK。
-
-9.5 當「授權條款」終止時,您在「授權協議」所獲得的授權也將會一併終止,您將立即停止「預覽版」的所有使用,而第 10、11、12 和 14 項的條款將無限期持續適用。
-
-10.免責聲明
-
-10.1 您明確瞭解並同意完全自負使用此「預覽版」的風險,並且此「預覽版」是依「現況」和「可提供性」提供,Google 不負任何擔保責任。
-
-10.2 您對使用此「預覽版」及透過此「預覽版」以下載或其他方式取得的任何內容,需自行斟酌和自負風險,而且您對因這類使用而對您的電腦系統或其他裝置所造成的任何損害或資料遺失,需負起全責。不限於前述,您瞭解此「預覽版」不是穩定的版本,可能會包含許多錯誤、瑕疵和安全性弱點而對您的電腦系統或其他裝置造成嚴重的損害,包括完全、不可回復的損失。
-
-10.3 Google 進一步明確表示不提供任何形式的瑕疵擔保和條件 (不論明示或默示),包括但不限於適售性、適合特定用途及未侵權的默示擔保和條件。
-
-11.責任限制
-
-11.1 您明確瞭解並同意在任何歸責理論下,就可能由您引起的任何直接、間接、附隨性、特殊性、衍生性或懲罰性損害賠償 (包括任何資料遺失),不論 Google 或其代表是否已獲告知或應已瞭解發生任何這類損失的可能性,Google、其子公司和關係企業及其授權人不必對您負起任何責任。
-
-12.賠償
-
-12.1 在法律允許的最大範圍內,您同意為 Google、其子公司及其個別董監事、主管、員工和代理人,就任何和一切索賠、法律行動、訴訟或訴訟程序,以及因下列原因而引起的任何和一切損失、責任、損害賠償、費用及開支 (包括合理的律師費),提供辯護、賠償損失並確保其免於承擔賠償責任:(a) 您使用此「預覽版」;(b) 您使用此「預覽版」開發的應用程式侵害任何人的任何智慧財產權,或是詆毀任何人或違反其公開權或隱私權;以及 (c) 您未遵守「授權協議」。
-
-13.對「授權協議」做出的變更
-
-13.1 Google 可在散佈此「預覽版」的新版本時修改「授權協議」。做出這類變更後,Google 會在提供此「預覽版」的網站上提供「授權協議」的新版本。
-
-14.一般法律條款
-
-14.1「授權協議」構成您與 Google 之間的法律協議,用於管制您對此「預覽版」(不包括 Google 依據個別書面協議提供給您的任何服務) 的使用,並完全取代先前您與 Google 之間就此「預覽版」簽署的相關協議。
-
-14.2 您同意如果 Google 未行使或執行「授權協議」所含的任何法律權利或救濟 (或在任何適用法律下對 Google 有利的權益),並不代表 Google 正式放棄權利,Google 日後仍可行使這些權利或救濟。
-
-14.3 如果經任何法院 (就此事宜依管轄權決定) 裁決「授權協議」中有任何條款無效,則該條款將自「授權協議」中移除,「授權協議」的其餘部分則不受影響。「授權協議」的其餘條款將持續具有效力且可執行。
-
-14.4 您瞭解並同意 Google 旗下子公司體系的每位成員都是「授權協議」的第三方受益人,而且這類其他公司有權直接執行和依據「授權協議」中對其授予權益 (或對其有利之權利) 的任何條款。除此之外的任何其他人員或公司皆非「授權協議」的第三方受益人。
-
-14.5 出口限制。此「預覽版」受美國出口法規約束。您必須遵守適用於此「預覽版」的所有國內和國際出口法規。這些法律包括對目的地、使用者及最終用途的限制。
-
-14.6 未事先取得 Google 事先書面核准的情況下,您不得轉讓或轉移「授權協議」,未經這類核准的任何轉讓將會失效。您不得在未事先取得 Google 書面核准的情況下,委派其「授權協議」涵蓋的責任或義務。
-
-14.7「授權協議」以及您與 Google 就「授權協議」構成的關係皆受加州法律管轄,毋須理會其法律牴觸條款。您和 Google 同意服從位於加州聖塔克拉拉 (Santa Clara, California) 郡內法院的專屬管轄權,以解決由「授權協議」產生的任何法律事務。儘管如此,您同意 Google 仍可在任何管轄權中申請禁制令救濟 (或同等類型的緊急法定救濟)。
-
-
-</div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/preview/overview.jd b/docs/html-intl/intl/zh-tw/preview/overview.jd
deleted file mode 100644
index 9693eec..0000000
--- a/docs/html-intl/intl/zh-tw/preview/overview.jd
+++ /dev/null
@@ -1,389 +0,0 @@
-page.title=程式總覽
-page.metaDescription=歡迎使用 Android M 開發人員預覽版,本程式提供為新版 Android 測試和最佳化您應用程式所需的一切。
-page.image=images/cards/card-preview_16-9_2x.png
-page.tags="preview", "developer", "android"
-
-@jd:body
-
-<div class="cols" style=
-"background-color:#ffebc3; padding: 5px 0;margin-bottom:1em; text-align:center;">
-<h3>
-    Developer Preview 2 is now available
-  </h3>
-
- <ul class="dac-section-links">
-    <li class="dac-section-link">
-      <a href="{@docRoot}preview/support.html#preview2-notes">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Read the Notes</a>
-    </li>
-
-    <li class="dac-section-link">
-      <a href="{@docRoot}preview/support.html#preview2-get">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Get the Update</a>
-    </li>
-
-    <li class="dac-section-link">
-      <a href="https://code.google.com/p/android-developer-preview/">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Report Issues</a>
-    </li>
-  </ul>
-</div>
-
-<p>
-  歡迎使用「Android M 開發人員預覽版」<strong></strong>,本程式提供為新版 Android 測試和最佳化您應用程式所需的一切。
-
-免費使用,您只要下載 M 開發人員預覽版工具,就能立即開始使用。
-
-</p>
-
-<div style="background-color:#eceff1;padding:1em;">
-<div class="wrap">
-  <div class="cols">
-    <div class="col-4of12">
-      <h5>
-        硬體與模擬器系統映像
-      </h5>
-
-      <p>
-        在 Nexus 5、6、9 和 Player (適用於電視) ,以及模擬器上執行和測試您的應用程式。
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        最新的平台程式碼
-      </h5>
-
-      <p>
-        我們將在預覽版期間提供多次更新,讓您能夠針對最新的平台變更進行測試。
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        透過 OTA 傳遞更新
-      </h5>
-
-      <p>
-        在您將裝置刷新為初始預覽版之後,就能以無線方式取得更新。
-
-      </p>
-    </div>
-  </div>
-
-  <div class="cols">
-
-
-    <div class="col-4of12">
-      <h5>
-        新行為和功能
-      </h5>
-
-      <p>
-        儘早開始開發以支援新的平台行為,例如新的執行階段權限模型和省電功能。
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        開發人員限時優先回報問題
-      </h5>
-
-      <p>
-        在前幾個星期內,我們將讓開發人員優先回報問題,因此請盡快測試並提供意見反應。
-
-      </p>
-    </div>
-
-    <div class="col-4of12">
-      <h5>
-        意見反應與支援
-      </h5>
-
-      <p>
-        使用<a href="https://code.google.com/p/android-developer-preview/">問題追蹤器</a>回報問題並提供意見反應。
-        與 <a href="http://g.co/dev/AndroidMDevPreview">M&nbsp;開發人員社群</a>中的其他開發人員聯絡。
-
-      </p>
-    </div>
-  </div>
-</div>
-</div>
-
-<!--
-<p>
-  With the M Developer Preview, you'll get an early start on testing your apps,
-  with enough time to make adjustments before the public platform release later
-  in the year. We'll provide several updates to the Preview tools in the weeks
-  ahead, so you can keep in sync with the latest changes as the platform moves
-  toward launch.
-</p>
-<img src="{@docRoot}preview/images/m-preview-timeline.png" alt=
-"Preview program timeline" id="timeline">
-<p>
-  You can help us improve the platform by <a href=
-  "https://code.google.com/p/android-developer-preview/">reporting issues</a>
-  through our feedback channels. This is especially
-  critical in the first month of the preview, when we’ll be giving priority to
-  developer-reported issues and feedback.
-</p> -->
-
-
-<h2 id="timeline">
-  時間軸和更新
-</h2>
-<img src="{@docRoot}preview/images/m-preview-timeline-crop.png" alt="Preview program timeline" id="timeline">
-<p>
-  M 開發人員預覽版可從 5 月 28 日開始執行,直到我們將在 2015 年第 3 季正式發行之前發行的最終版 Android M SDK。
-
-
-</p>
-
-<p>
-  我們將在主要的開發里程碑為您的測試裝置提供更新。
-  里程碑暫定如下
-</p>
-
-<ul>
-  <li>
-    <strong>預覽版&nbsp;1</strong> (初始預覽版,五月下旬)、
-  </li>
-
-  <li>
-    <strong>預覽版&nbsp;2</strong> (六月下旬/七月上旬) 及
-  </li>
-
-  <li>
-    <strong>預覽版&nbsp;3</strong> (接近最終版,七月下旬)
-  </li>
-</ul>
-
-<p>
-  這些更新最終會成為「最終版 SDK」<strong></strong> (稍後於第 3 季),為新版 Android 提供正式的 API,以及最終的系統行為和功能。
-
-
-</p>
-
-<p>
-  當您在 Android M 上測試和開發時,強烈建議您在預覽版更新發行時立即更新,讓「您的開發環境保持在最新狀態」<strong></strong>。
-
-  為了讓程序更簡單,我們將對更新為預覽版建置的裝置<strong>以無線 (OTA) 方式提供更新</strong>,還會提供您能手動下載和更新的系統映像。
-
-
-</p>
-<p class="note">
-  <strong>注意:</strong>最終版 SDK 與系統映像無法以 OTA 方式提供,將必須<strong>以手動方式更新</strong>至您的測試裝置。</strong>
-
-
-</p>
-
-<p>
-  我們將透過 <a href="http://android-developers.blogspot.com/">Android 開發人員部落格</a>,還有本網站與 <a href="http://g.co/dev/AndroidMDevPreview">Android M 開發人員社群</a>來通知您有可用的預覽版更新。
-
-
-</p>
-
-<h2 id="preview_tools">
-  預覽版新增功能
-</h2>
-
-<p>
-  M 開發人員預覽版包含您針對各種不同螢幕大小、網路技術、 CPU/GPU 晶片組及硬體架構,測試現有應用程式所需的一切。
-
-
-</p>
-
-<h4>
-  SDK 工具
-</h4>
-
-<p>
-  您可以透過 <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a> 中的「SDK 管理器」下載以下元件:
-</p>
-
-<ul>
-  <li>M 開發人員預覽版 <strong>SDK 工具</strong>
-  </li>
-
-  <li>M 開發人員預覽版<strong>模擬器系統映像</strong> (32 位元和 64 位元)
-
-  </li>
-
-  <li>M 開發人員預覽版<strong>模擬器系統映像 (適用於 Android TV)</strong> (32 位元)
-
-  </li>
-</ul>
-
-<h4>
-  硬體系統映像
-</h4>
-
-<p>
-  您可以從<a href="download.html">下載頁面</a>下載適用於 Nexus 裝置的以下硬體系統映像:
-
-</p>
-
-<ul>
-  <li>
-    <strong>Nexus 5</strong> (GSM/LTE)“hammerhead”裝置系統映像
-  </li>
-
-  <li>
-    <strong>Nexus 6</strong>“shamu”裝置系統映像
-  </li>
-
-  <li>
-    <strong>Nexus 9</strong> (Wi-Fi)“volantis”裝置系統映像
-  </li>
-
-  <li>
-    <strong>Nexus Player</strong> (Android TV)“fugu”裝置系統映像
-  </li>
-</ul>
-
-<h4>
-  文件和範例程式碼
-</h4>
-
-<p>
-  這些文件資源可協助您瞭解預覽版:
-</p>
-
-<ul>
-  <li>
-    <a href="setup-sdk.html">設定 SDK</a> 涵蓋開始使用的逐步指示。
-
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/testing/guide.html">測試指南</a>與<a href="behavior-changes.html">行為變更</a>指出要測試的主要區域。
-  </li>
-
-  <li>新 API 的文件,包括 <a href="api-overview.html">API 總覽</a>、可下載的 <a href="{@docRoot}preview/download.html#docs">API 參考資料</a>以及主要功能 (例如<a href="{@docRoot}preview/features/runtime-permissions.html">權限</a>、<a href="{@docRoot}preview/backup/index.html">應用程式備份</a>及其他功能) 的詳細開發人員指南。
-
-
-
-
-  </li>
-
-  <li>
-    示範如何支援權限和其他新功能的<a href="{@docRoot}preview/samples.html">範例程式碼</a>。
-
-  </li>
-
-  <li>
-    適用於目前 M 開發人員預覽版的<a href="{@docRoot}preview/support.html#release-notes">版本資訊</a>,包括變更資訊與差異報告。
-
-  </li>
-</ul>
-
-<h4>
-  支援資源
-</h4>
-
-<p>
-  在 M 開發人員預覽版上測試和開發時,請使用以下支援資源:
-
-</p>
-
-<ul>
-  <li><a href="https://code.google.com/p/android-developer-preview/">M 開發人員預覽版問題追蹤器</a>是您的<strong>主要意見反應</strong>管道。
-
-您可以透過問題追蹤器來回報錯誤、效能問題及一般意見反應。
-您也可以檢查<a href="https://code.google.com/p/android-developer-preview/wiki/KnownIssues">已知問題</a>
-和尋找因應方式步驟。
-  </li>
-
-  <li><a href="http://g.co/dev/AndroidMDevPreview">Android M 開發人員社群</a>是您能<strong>與其他 Android M 開發人員聯絡</strong>的 Google+ 社群。您可以分享有關 Android M 的觀察或想法,或尋找解答。
-
-
-
-  </li>
-</ul>
-
-
-<h2 id="preview_apis_and_publishing">
-  目標設定、預覽版 API 及發行
-</h2>
-
-<p>
-  Android M 開發人員預覽版是開發專用的版本,而且<strong>沒有標準的 API 層級</strong>。
-如果您想要選擇退出相容性行為以測試您的應用程式 (強烈建議),您可以將應用程式的 <code><a href=
-  "/guide/topics/manifest/uses-sdk-element.html">targetSdkVersion</a></code> 設定為 <code>“MNC”</code>,就能以 M 開發人員預覽版為目標。
-
-
-
-</p>
-
-<p>
-  Android M 開發人員預覽版提供<strong>預覽版 API</strong> &mdash; 在最終版 SDK (目前規劃在 2015 年第三季) 發行之前的都不是正式 API。
-
-這表示您可以預期 API 會隨時間而有些許變更,特別是程式一開始的幾週。<strong></strong>
-
-我們會將 Android M 開發人員預覽版每次更新的變更摘要提供給您。
-
-</p>
-
-<p class="note">
-  請注意,雖然預覽版 API 可能會改變,但例如執行階段權限和省電功能等基本系統行為,均已穩定且能夠立即測試。
-
-
-</p>
-
-<p>
-  在發行方面,Google Play 會<strong>禁止您發行以 M 開發人員預覽版為目標的應用程式</strong>。
-當 Android M 最終版 SDK 推出時,您將能夠以正式 Android M API 層級為目標,並將您的應用程式發行至 Google Play。
-
-同時,您可以透過電子郵件或直接從您的網站下載,來對測試者散佈以 Android M 為目標的應用程式。
-
-
-</p>
-
-<h2 id="get_started">
-  如何開始
-</h2>
-
-<p>
-  如要開始測試您的應用程式:
-</p>
-
-<ol>
-  <li>檢閱 <a href="{@docRoot}preview/api-overview.html">API 總覽</a>與<a href="{@docRoot}preview/behavior-changes.html">行為變更</a>,以瞭解新增功能,還有它會如何影響您的應用程式。
-
-特別是瞭解新的<a href="{@docRoot}preview/features/runtime-permissions.html">執行階段權限</a>模型、省電功能以及自動化備份。
-
-
-  </li>
-
-  <li>依照<a href="{@docRoot}preview/setup-sdk.html">設定預覽版 SDK</a> 的指示來設定您的環境,並設定測試裝置。
-
-
-  </li>
-
-  <li>依照<a href="https://developers.google.com/android/nexus/images">刷新指示</a>,針對 Nexus 5、6、9 及 Player 刷新最新的 M 開發人員預覽版系統映像。
-
-在您刷新開發裝置之後,預覽版更新將以無線 (OTA) 更新</a>的方式提供。
-
-  </li>
-
-  <li>下載 <a href="{@docRoot}preview/download.html#docs">M 預覽版 API 參考資料</a>與 <a href="{@docRoot}preview/samples.html">M 預覽版範例</a>,以深入瞭解新的 API 功能以及如何在您的應用程式中運用。
-
-
-
-  </li>
-
-  <li>加入 <a href="http://g.co/dev/AndroidMDevPreview">Android M 開發人員社群</a>以取得最新消息,並與其他使用新平台的開發人員聯絡。
-
-
-  </li>
-</ol>
-
-<p>
-  感謝您參與 Android M 開發人員預覽版程式!
-</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/samples.jd b/docs/html-intl/intl/zh-tw/preview/samples.jd
deleted file mode 100644
index 2ef9a60..0000000
--- a/docs/html-intl/intl/zh-tw/preview/samples.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=範例
-page.image=images/cards/samples-new_2x.png
-@jd:body
-
-<p>
-  下列提供 M 開發人員預覽版的程式碼範例。如要下載 Android Studio 的範例,請選取 [File] (檔案) &gt; [Import Samples] (匯入範例) 選單選項。
-<b></b>
-</p>
-
-<p class="note">
-  <strong>注意:</strong>這些可下載的專案是專為與 Gradle 和 Android Studio 一起使用而設計。
-
-</p>
-
-
-<h3 id="RuntimePermissions">執行階段權限</h3>
-
-<p>
- Android M 改變系統權限的運作方式。改為在執行階段才要求使用者核准權限要求,而不是安裝期間。
-這個範例顯示如何要求這些權限。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-RuntimePermissions">在 GitHub 上取得</a></p>
-
-<h3 id="ConfirmCredentials">確認認證</h3>
-
-<p>
- 這個範例示範如何在您的應用程式中使用裝置認證做為驗證方法。
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ConfirmCredential">在 GitHub 上取得</a>
-</p>
-
-<h3 id="FingerprintDialog">指紋對話方塊</h3>
-
-<p>
- 這個範例示範如何在您的應用程式中辨識註冊的指紋以驗證使用者。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-FingerprintDialog">在 GitHub 上取得</a></p>
-
-<h3 id="AutomaticBackup">針對應用程式進行自動備份</h3>
-
-<p>
- Android M 導入自動備份應用程式設定的功能。這個範例示範如何將篩選規則新增至應用程式以管理設定備份。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-AutoBackupForApps">在 GitHub 上取得</a></p>
-
-<h3 id="CameraRaw">相機 2 Raw</h3>
-
-<p>
-  示範如何使用 <code>Camera2</code> API,以擷取 RAW 相機緩衝區並另存為 <code>DNG</code> 檔案。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-Camera2Raw">在 GitHub 上取得</a></p>
-
-<h3 id="ActiveNotification">使用中通知</h3>
-
-<p>
-  這個範例示範 
-<a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a>
- 如何將您應用程式目前顯示的通知數目告訴您。
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ActiveNotifications">在 GitHub 上取得</a></p>
diff --git a/docs/html-intl/intl/zh-tw/preview/setup-sdk.jd b/docs/html-intl/intl/zh-tw/preview/setup-sdk.jd
deleted file mode 100644
index 1769f74..0000000
--- a/docs/html-intl/intl/zh-tw/preview/setup-sdk.jd
+++ /dev/null
@@ -1,207 +0,0 @@
-page.title=設定預覽版 SDK
-page.image=images/cards/card-set-up_16-9_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本文件內容</h2>
-      <ol>
-        <li><a href="#get-as13">取得 Android Studio 1.3</a></li>
-        <li><a href="#get-sdk">取得預覽版 SDK</a></li>
-        <li><a href="#create-update">建立或更新專案</a></li>
-        <li><a href="#setup-test">設定以進行測試</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>M 開發人員預覽版 SDK 可以從 Android SDK Manager 取得。本文件假設您熟悉 Android 應用程式開發工作,例如使用 Android SDK Manager 和建立專案。
-
-如果您是 Android 的新手,請先參閱<a href="{@docRoot}training/basics/firstapp/index.html">建置您的第一個應用程式</a>訓練課程。
-</a>
-</p>
-
-<h2 id="get-as13">取得 Android Studio 1.3</h2>
-
-<p>開發人員預覽版最適合與處於預覽版狀態的 Android Studio 1.3 一起使用。
-強烈建議您安裝 Android Studio 1.3 預覽版與開發人員預覽版一起使用。
-</p>
-
-<p class="caution"><strong>注意:</strong>Android Studio 1.3 的測試預覽版仍在持續開發中。
-如果您使用主要開發電腦來測試開發人員預覽版,可以建立第二個 Android Studio 安裝以用於測試。
-
-</p>
-
-<p>如要安裝 Android Studio 1.3 預覽版:</p>
-
-<ol>
-  <li>下載並啟動 <a href="{@docRoot}tools/studio/index.html">Android Studio</a>。
-
-  </li>
-
-  <li>開啟 [Settings] (設定) 視窗 (在 Windows 上,您可以選擇 [檔案] &gt; [設定] 來執行此動作)。<strong>
-</strong><strong></strong>選擇 [Appearance &amp; Behavior] (外觀和行為) &gt; [System Settings] (系統設定) &gt; [Updates] (更新) 面板。<strong></strong>
-
-
-
-    <p class="aside">在 OSX 上,您可以在 Android Studio 的「Preferences」(偏好設定) 視窗中,找到 [Appearance &amp; Behavior] (外觀和行為) 面板。<strong></strong><strong></strong>
-
-</p>
-  </li>
-
-  <li> 在「Updates」(更新) 面板上,選擇以下選項:[Automatically check updates for: (自動檢查以下的可用更新:)
-<strong></strong><strong>Canary Channel] (測試版管道)。</strong>
-  </li>
-
-  <li>在「Updates」(更新) 面板上,選取 [Check Now] (立即檢查) 以檢查是否有可用的最新測試版建置。<strong></strong><strong></strong>
-版本請在系統提示您時,下載並安裝該版本。
-
-  </li>
-</ol>
-
-<h2 id="get-sdk">取得預覽版 SDK</h2>
-
-<p>如要將預覽版 SDK 元件新增至您的開發環境:</p>
-
-<ol>
-  <li>啟動 Android Studio 1.3 預覽版。
-  </li>
-
-  <li>開啟 [Settings] (設定) 視窗 (在 Windows 上,您可以選擇 [檔案] &gt; [設定] 來執行此動作)。<strong></strong><strong></strong>
-選擇 [Appearance &amp; Behavior] (外觀和行為) &gt; [System Settings] (系統設定) &gt; [Updates] (更新) 面板。<strong></strong>
-
-
-
-    <p class="aside">在 OSX 上,您可以在 Android Studio 的「Preferences」(偏好設定) 視窗中,找到 [Appearance &amp; Behavior] (外觀和行為) 面板。<strong></strong><strong></strong>
-
-</p>
-  </li>
-
-  <li>在「Updates」(更新) 面板上,選擇以下選項:[Automatically check updates for: (自動檢查以下的可用更新:)
-<strong></strong><strong></strong>Canary Channel] (測試版管道) 以及 [Automatically check updates for Android SDK: (自動檢查 Android SDK 的可用更新:)<strong>
-Preview Channel] (預覽版管道)。</strong>
-  </li>
-
-  <li>啟動 <strong>Android Studio Manager</strong>。(使用 Android Studio 1.3,SDK Manager 會與 Android Studio 整合,而不是獨立的應用程式。)
-
-
-  </li>
-
-  <li>在「Platforms」(平台) 區段下,選取 [Android MNC Preview] (Android MNC 預覽版)。<strong></strong><strong></strong>
-
-  </li>
-
-  <li>在「Tools」(工具) 區段中,選擇最新的 Android SDK 工具、平台工具以及建置工具。<strong></strong><strong></strong><strong></strong><strong></strong>
-
-
-  </li>
-
-  <li>按一下 [Install packages] (安裝套件) 並接受所有套件的授權合約。<strong></strong>
-
-  </li>
-
-  <li>開啟 [Settings] (設定) 視窗,然後選擇 [Appearance &amp; Behavior] (外觀和行為) &gt; [System Settings] (系統設定) &gt; [Android SDK] 面板,來驗證已安裝 M 開發人員預覽版。<strong></strong><strong></strong>
-
-</li>
-
-  <li>在「Android SDK」面板上,選擇 [SDK Platforms] (SDK 平台) 索引標籤。<strong></strong><strong></strong>
-「Android MNC Preview」(Android MNC 預覽版) 應該會列在「Installed」(已安裝)。<strong></strong><em></em>
-此外,開啟 [SDK Tools] (SDK 工具) 索引標籤以確認已經安裝最新的工具。<strong></strong>
-
-
-  </li>
-</ol>
-<p>完成這些步驟之後,就能在您的開發環境中使用預覽版元件。
- </p>
-
-
-<h2 id="create-update">建立或更新專案</h2>
-
-<p>
-  為了使用預覽版 API,您必須建立或更新開發專案,才能使用預覽版元件。
-
-</p>
-
-
-<h3 id="create">建立新專案</h3>
-
-<p>
-  建議您使用 Android Studio 搭配預覽版來建立專案。依照<a href="{@docRoot}sdk/installing/create-project.html">建立專案</a>中所述的步驟執行,直到您到達專案精靈中的「大小」畫面。
-
-<em></em>接著,執行下列步驟以建立為預覽版設定的專案。
-
-</p>
-
-<ul>
-  <li>核取 [Phone and Tablet] (手機與平板電腦)。<strong></strong></li>
-  <li>選取 [MNC:<strong></strong>Android M (Preview)] (Android M (預覽版)),它位於 [Minimum SDK] (SDK 最低版本)。<strong></strong>
-</li>
-</ul>
-
-
-<h3 id="update">更新現有的專案</h3>
-
-<p>
-  對於現有專案,您必須修改專案設定以啟用預覽版 API。在您的開發環境中,開啟模組的 <code>build.gradle</code> 檔案,然後將這些值設定如下:
-
-
-</p>
-
-<ul>
-  <li>將 <code>compileSdkVersion</code> 設定為 <code>'android-MNC'</code></li>
-  <li>將 <code>minSdkVersion</code> 設定為 <code>'MNC'</code></li>
-  <li>將 <code>targetSdkVersion</code> 設定為 <code>'MNC'</code></li>
-</ul>
-
-
-<h2 id="setup-test">設定以進行測試</h2>
-
-<p>
-  利用預覽版測試應用程式,需要您將裝置或虛擬裝置設定為使用平台的預覽版本。
-如果您有相容的裝置,您可以安裝預覽版平台以用於測試。
-否則,您可以設定虛擬裝置以用於測試。
-</p>
-
-<h3 id="setup-device">設定實體裝置</h3>
-
-<p>
-  如果您有 Nexus 5、Nexus 6、Nexus 9 或 Android 電視,您可以在這些裝置上安裝預覽版系統映像,以測試您的應用程式。您可以使用 Android Virtual Device Manager (Android 虛擬裝置管理員) 工具,從 Android Studio 內設定使用平台預覽版本的虛擬裝置。
-
-
-
-</p>
-
-<p class="caution">
-  <strong>重要說明:</strong>在裝置上安裝預覽版映像,會「移除當中的所有資料」,因此您應該在安裝預覽版映像之前備份任何資料。<em></em>
-
-</p>
-
-<h3 id="setupAVD">設定虛擬裝置</h3>
-
-<p>
-  您可以使用 Android Virtual Device Manager (Android 虛擬裝置管理員) 工具,從 Android Studio 內設定使用平台預覽版本的虛擬裝置。
-
-</p>
-
-<p>如要使用 AVD Manager 來建立 AVD:</p>
-
-<ol>
-  <li>請在您的開發環境中安裝預覽版 SDK,如<a href="{@docRoot}preview/setup-sdk.html">設定預覽版 SDK</a> 中所述。
-
-</li>
-  <li>依照<a href="{@docRoot}tools/devices/managing-avds.html">使用 AVD Manager 來管理 AVD</a>中的步驟執行。
-
-使用下列設定:
-    <ul>
-      <li><strong>裝置:</strong>Nexus 5、Nexus 6、Nexus 9 或 Android 電視</li>
-      <li><strong>目標:</strong>
-       Android M (預覽版) - API 級別 M</li>
-      <li><strong>ABI:</strong> x86</li>
-    </ul>
-  </li>
-</ol>
-
-<p>
-  如需建立虛擬裝置以用於測試的詳細資訊,請參閱<a href="{@docRoot}tools/devices/index.html">管理虛擬裝置</a>。
-</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/testing/guide.jd b/docs/html-intl/intl/zh-tw/preview/testing/guide.jd
deleted file mode 100644
index 879ec02..0000000
--- a/docs/html-intl/intl/zh-tw/preview/testing/guide.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=測試指南
-page.image=images/cards/card-build_16x9_2x.png
-page.keywords=previewresources,androidm,testing,permissions
-
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本文件內容</h2>
-      <ol>
-        <li><a href="#runtime-permissions">測試權限</a></li>
-        <li><a href="#doze-standby">測試休眠與應用程式待命</a></li>
-        <li><a href="#ids">自動備份與裝置識別碼</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  Android M 開發人員預覽版能夠讓您有機會確保您的應用程式能搭配下一個版本的平台運作。
-此預覽版包含許多 API 和足以影響應用程式的行為變更,如 <a href="{@docRoot}preview/api-overview.html">API 總覽</a>和<a href="{@docRoot}preview/behavior-changes.html">行為變更</a>中所述。
-
-使用預覽版測試應用程式時,您必須著重在許多特定的系統變更,以確保使用者都能擁有良好的體驗。
-
-
-</p>
-
-<p>
-  本指南說明對應用程式測試預覽功能的內容與方法。您應優先測試這些特定的預覽功能,因為這些功能可能會對您的應用程式行為有非常大的影響:
-
-
-</p>
-
-<ul>
-  <li><a href="#runtime-permissions">權限</a>
-  </li>
-  <li><a href="#doze-standby">休眠與應用程式待命</a>
-  </li>
-  <li><a href="#ids">自動備份與裝置識別碼</a></li>
-</ul>
-
-<p>
-  如需有關如何設定使用預覽版系統映像的裝置或虛擬裝置以進行測試的詳細資訊,請參閱<a href="{@docRoot}preview/setup-sdk.html">設定預覽版 SDK</a>。
-
-</p>
-
-
-<h2 id="runtime-permissions">測試權限</h2>
-
-<p>
-  新的<a href="{@docRoot}preview/features/runtime-permissions.html">權限</a>模型改變使用者對您的應用程式分配權限的方式。
-以前在安裝過程中會授與所有權限,現在您的應用程式則必須在執行階段向使用者要求個別的權限。
-
-對於使用者而言,這個行為能夠對每個應用程式的Activity提供更細膩的控制,而且也能更瞭解應用程式為何要要求特定權限。
-使用者可以隨時個別對應用程式授與或撤銷權限。
-預覽版的這個功能最有可能影響到您應用程式的行為,而且可能會導致應用程式某些功能無法正常運作,或者這些功能會以降級的狀態運作。
-
-
-</p>
-
-<p class="caution">
-  這個變更會影響在新平台上執行的所有應用程式,甚至影響並非針對新平台版本開發的應用程式。
-平台會對舊版應用程式提供有限的相容性行為,但是您最好還是立即開始規劃將應用程式移轉到新的權限模型,以便能在官方平台上市時發佈更新的應用程式版本。
-
-
-</p>
-
-
-<h3 id="permission-test-tips">測試祕訣</h3>
-
-<p>
-  使用下列測試祕訣,可以幫助您使用新的權限行為,規劃和執行應用程式測試。
-
-</p>
-
-<ul>
-  <li>辨別應用程式目前的權限與相關的程式碼路徑。</li>
-  <li>針對所有權限保護的服務與資料測試使用者流程。</li>
-  <li>測試各種組合的授與/撤銷權限。</li>
-  <li>從命令列使用 {@code adb} 工具管理權限:
-    <ul>
-      <li>依群組列出權限與狀態:
-        <pre>adb shell pm list permissions -d -g</pre>
-      </li>
-      <li>使用下列語法授與或撤銷一或多個權限:<br>
-        <pre>adb shell pm [grant|revoke] &lt;permission.name&gt; ...</pre>
-      </li>
-    </ul>
-  </li>
-  <li>分析使用權限的應用程式服務。</li>
-</ul>
-
-<h3 id="permission-test-strategy">測試策略</h3>
-
-<p>
-  權限變更會影響應用程式的結構和設計,同時也會影響使用者的體驗以及您提供給使用者的流程。
-您應該評估應用程式目前的權限作法,然後開始規劃您要提供的新流程。
-官方版本的平台會提供相容性行為,但是您最好規劃更新您的應用程式,而不要依賴這些行為。
-
-
-</p>
-
-<p>
-  辨別您的應用程式實際需要且使用到的權限,然後找出使用受權限保護之服務的各種程式碼路徑。
-您可以在新平台上測試,並且進行程式碼分析,來達到上述目的。
-測試時,您應該變更應用程式的 {@code targetSdkVersion} 為預覽版本,著重在加入執行階段權限。
-如需詳細資訊,請參閱<a href="{@docRoot}preview/setup-sdk.html#">設定預覽版 SDK</a>。
-
-</p>
-
-<p>
-  測試各種撤銷/加入權限的組合,著重在依據這些權限的使用者流程。
-如果相依性不明顯或邏輯不清楚時,您可以考慮重新分解或劃分流程以消除相依性,或是更清楚為何需要某個權限。
-
-
-</p>
-
-<p>
-  如需有關執行階段權限行為、測試和建議做法的詳細資訊,請參閱 <a href="{@docRoot}preview/features/runtime-permissions.html">權限</a>開發人員預覽版頁面。
-
-
-</p>
-
-
-<h2 id="doze-standby">測試休眠與應用程式待命</h2>
-
-<p>
-  當裝置處於閒置狀態,或者當您的應用程式不在使用中時,「休眠」與「應用程式待命」的省電功能會限制應用程式可以執行的背景處理量。
-系統可能加諸在應用程式的限制,包括網路受到限制或沒有網路、背景工作暫停、通知暫停、喚醒要求被略過,以及警示被略過。
-
-如要確保您的應用程式能正確運作,而且這些省電功能也達到最好的效益,您應該透過模擬這些低電量狀態,測試您的應用程式。
-
-
-</p>
-
-<h4 id="doze">搭配休眠測試應用程式</h4>
-
-<p>對您的應用程式測試休眠:</p>
-
-<ol>
-<li>設定 M 預覽版系統映像的硬體裝置或虛擬裝置。</li>
-<li>將裝置連線到您的開發電腦並安裝您的應用程式。</li>
-<li>執行您的應用程式並讓應用程式保持使用中。</li>
-<li>執行下列命令,模擬裝置進入「休眠」模式:
-
-<pre>
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-
-  </li>
-  <li>觀察當裝置重新啟動時的應用程式行為。當裝置結束「休眠」時,確定應用程式順利回復。
-</li>
-</ol>
-
-
-<h4 id="standby">搭配應用程式待命測試應用程式</h4>
-
-<p>對您的應用程式測試應用程式待命模式:</p>
-
-<ol>
-  <li>設定 M 預覽版系統映像的硬體裝置或虛擬裝置。</li>
-  <li>將裝置連線到您的開發電腦並安裝您的應用程式。</li>
-  <li>執行您的應用程式並讓應用程式保持使用中。</li>
-  <li>執行下列命令,模擬應用程式進入待命模式:
-
-<pre>
-$ adb shell am broadcast -a android.os.action.DISCHARGING
-$ adb shell am set-idle &lt;packageName&gt; true
-</pre>
-
-  </li>
-  <li>使用下列命令,模擬喚醒應用程式:
-    <pre>$ adb shell am set-idle &lt;packageName&gt; false</pre>
-  </li>
-  <li>觀察當應用程式被喚醒時的行為。確定應用程式順利從待命模式回復。
-您尤其要檢查應用程式通知與背景工作是否有如預期般繼續運作
-。</li>
-</ol>
-
-<h2 id="ids">針對應用程式進行自動備份與裝置特定識別碼</h2>
-
-<p>如果您的應用程式在內部儲存空間存有任何裝置特定識別碼,例如 Google
-雲端通訊註冊 ID,請確認按照建議做法排除這些儲存位置不要進行自動備份,如<a href="{@docRoot}preview/backup/index.html">針對應用程式進行自動備份</a>中所述。
-
-
- </p>
diff --git a/docs/html-intl/intl/zh-tw/preview/testing/performance.jd b/docs/html-intl/intl/zh-tw/preview/testing/performance.jd
deleted file mode 100644
index 5437e9d..0000000
--- a/docs/html-intl/intl/zh-tw/preview/testing/performance.jd
+++ /dev/null
@@ -1,656 +0,0 @@
-page.title=測試顯示效能
-page.image=images/cards/card-test-performance_2x.png
-page.keywords=效能, fps, 工具
-
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>本文件內容</h2>
-      <ol>
-        <li><a href="#measure">測量 UI 效能</a>
-          <ul>
-            <li><a href="#aggregate">彙總畫面統計資料</a></li>
-            <li><a href="#timing-info">精確畫面計時資訊</a></li>
-            <li><a href="#timing-dump">簡易畫面計時傾印</a></li>
-            <li><a href="#collection-window">控制統計資料收集時間</a></li>
-            <li><a href="#diagnose">診斷效能回復</a></li>
-            <li><a href="#resources">其他資源</a></li>
-          </ul>
-        </li>
-        <li><a href="#automate">自動化 UI 效能測試</a>
-          <ul>
-            <li><a href="#ui-tests">設定 UI 測試</a></li>
-            <li><a href="#automated-tests">設定自動化 UI 測試</a></li>
-            <li><a href="#triage">分類和修正觀察到的問題</a></li>
-          </ul>
-        </li>
-      </ol>
-  </div>
-</div>
-
-
-<p>
-  使用者介面效能測試可確保您的應用程式不只符合功能需求,與使用者與應用程式的互動也無比順暢,執行時每秒一致有 60 個畫面 (<a href="https://www.youtube.com/watch?v=CaMTIgxCSqU&amp;index=25&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">為什麼 60fps?</a>),任何畫面都不會遺漏或延遲,或稱為「閃避」<em></em>現象。
-
-
-本文件說明可用以測量 UI 效能的工具,以及呈現可將 UI 效能測量與測試做法整合的方法。
-
-
-</p>
-
-
-<h2 id="measure">測量 UI 效能</h2>
-
-<p>
-  為改善效能,首先您需要測量系統效能的能力,接著在管道的各部分發生問題時加以診斷和辨識。
-
-
-</p>
-
-<p>
-  <em><a href="https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></em> 是一種 Android 工具,可在裝置上執行和傾印有關系統服務狀態的有趣資訊。
-
-將 <em>gfxinfo</em> 命令傳送至 dumpsys,會將錄製階段所發生與動畫的畫面相關的效能資訊以 logcat 提供輸出。
-
-
-</p>
-
-<pre>
-&gt; adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt;
-</pre>
-
-<p>
-  此命令會產生多種不同的畫面計時資料。
-</p>
-
-<h3 id="aggregate">彙總畫面統計資料</h3>
-
-<p>
-  使用 M 預覽版,命令會在程序的生命週期全程收集畫面資料,並將彙總的分析列印到 logcat。
-例如:
-</p>
-
-<pre class="noprettyprint">
-Stats since: 752958278148ns
-Total frames rendered: 82189
-Janky frames: 35335 (42.99%)
-90th percentile: 34ms
-95th percentile: 42ms
-99th percentile: 69ms
-Number Missed Vsync: 4706
-Number High input latency: 142
-Number Slow UI thread: 17270
-Number Slow bitmap uploads: 1542
-Number Slow draw: 23342
-</pre>
-
-<p>
-  這些高階統計資料是以高階方式轉換應用程式的轉譯效能,還有其在許多畫面的穩定性。
-
-</p>
-
-
-<h3 id="timing-info">精確畫面計時資訊</h3>
-
-<p>
-  M 預覽版隨附新的命令 gfxinfo,而 <em>framestats</em> 可從最近的畫面提供相當詳細的畫面計時資訊,讓您可以追蹤並更準確進行除錯。
-
-
-</p>
-
-<pre>
-&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; framestats
-</pre>
-
-<p>
-  此命令會從應用程式所產生至少 120 個畫面當中,加上奈秒時間戳記印出畫面計時資訊。以下範例是 adb dumpsys gfxinfo &lt;PACKAGE_NAME&gt; framestats 的原始輸出:
-
-
-</p>
-
-<pre class="noprettyprint">
-0,49762224585003,49762241251670,9223372036854775807,0,49762257627204,49762257646058,49762257969704,49762258002100,49762265541631,49762273951162,49762300914808,49762303675954,
-0,49762445152142,49762445152142,9223372036854775807,0,49762446678818,49762446705589,49762447268818,49762447388037,49762453551527,49762457134131,49762474889027,49762476150120,
-0,49762462118845,49762462118845,9223372036854775807,0,49762462595381,49762462619287,49762462919964,49762462968454,49762476194547,49762476483454,49762480214964,49762480911527,
-0,49762479085548,49762479085548,9223372036854775807,0,49762480066370,49762480099339,49762481013089,49762481085850,49762482232152,49762482478350,49762485657620,49762486116683,
-</pre>
-
-<p>
-  這裡的每一行輸出都代表應用程式產生的一個畫面。每行都有固定的資料欄編號,描述畫面產生管道的各階段所花費的時間。
-下一節會詳細說明此格式,包括各資料欄代表的意義。
-
-</p>
-
-
-<h4 id="fs-data-format">Framestats 資料格式</h4>
-
-<p>
-  由於資料區塊是以 CSV 格式輸出,所以可以直接將它貼到選擇的試算表工具,或使用指令碼來收集和剖析。
-下表說明輸出資料欄的格式。
-所有時間戳記都以奈秒為單位。
-</p>
-
-<ul>
-  <li>FLAGS
-    <ul>
-      <li>FLAGS 資料欄的資料列均為 0,從 FRAME_COMPLETED 資料欄減去 INTENDED_VSYNC 資料欄可計算得出總畫面時間。
-
-      </li>
-
-      <li>如果這個值非零,應該略過該資料列,因為從正常效能來判斷,畫面已是極端值,版面配置與繪製預期都要花費 16ms 以上的時間。
-
-以下是發生這種情況的幾個原因:
-        <ul>
-          <li>視窗版面配置改變 (例如應用程式的第一個畫面或經過旋轉)
-
-          </li>
-
-          <li>也可能是略過畫面,在這種情況下,某些值會含有記憶體回收的時間戳記。
-例如,如果畫面速度超過 60fps,或如果螢幕上空無一物,最後卻有所改變,就可能會略過畫面,這不一定是應用程式發生問題的徵兆。
-
-
-          </li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-
-  <li>INTENDED_VSYNC
-    <ul>
-      <li>預期的畫面起始點。如果這個值和VSYNC 不同,表示 UI 執行緒中發生的工作使它無法即時回應 vsync 訊號。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>VSYNC
-    <ul>
-      <li>用於所有 vsync 接聽器和繪製畫面的時間值 (Choreographer 畫面回呼、動畫、View.getDrawingTime() 等等)
-
-      </li>
-
-      <li>如要深入瞭解有關 VSYNC 和它如何影響您的應用程式,請參閱<a href="https://www.youtube.com/watch?v=1iaHxmfZGGc&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=23">瞭解 VSYNC</a> 影片。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>OLDEST_INPUT_EVENT
-    <ul>
-      <li>輸入佇列中最舊輸入事件的時間戳記,或為 Long.MAX_VALUE,若沒有該畫面的輸入事件的話。
-
-      </li>
-
-      <li>這個值主要用於平台工作,對應用程式開發人員用處不大。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>NEWEST_INPUT_EVENT
-    <ul>
-      <li>輸入佇列中最新輸入事件的時間戳記,或為 0,若沒有該畫面的輸入事件的話。
-
-      </li>
-
-      <li>這個值主要用於平台工作,對應用程式開發人員用處不大。
-
-      </li>
-
-      <li>不過,透過查看 (FRAME_COMPLETED - NEWEST_INPUT_EVENT),可以大略知道應用程式還會延遲多少時間。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>HANDLE_INPUT_START
-    <ul>
-      <li>將輸入事件分配給應用程式時的時間戳記。
-      </li>
-
-      <li>查看這個值與 ANIMATION_START 之間的時間,即可測量出應用程式花費在處理輸入事件的時間。
-
-      </li>
-
-      <li>如果這個數字很高 (&gt;2ms),這表示應用程式花費在處理輸入事件(例如 View.onTouchEvent()) 的時間過長,指出需要將這項工作最佳化,或卸載交由其他執行緒處理。
-
-請注意,還有一些情況本就預期且可接受這個數字較大,例如會啟動新活動或類似工作的點擊事件。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>ANIMATION_START
-    <ul>
-      <li>向 Choreographer 註冊的動畫執行時的時間戳記。
-      </li>
-
-      <li>查看這個值與 PERFORM_TRANVERSALS_START 之間的時間,即可判斷它花費多久的時間評估所有執行中的動畫器 (常見的有 ObjectAnimator、ViewPropertyAnimator 及 Transitions)。
-
-
-      </li>
-
-      <li>如果這個數字很高 (&gt;2ms),可查看您的應用程式是否撰寫任何自訂動畫器,或 ObjectAnimators 正進行動畫處理的資料欄,並確定它們都適用於動畫。
-
-
-      </li>
-
-      <li>如要深入瞭解 Choreographer,請參閱<a href="https://developers.google.com/events/io/sessions/325418001">順滑流暢與否</a>影片。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>PERFORM_TRAVERSALS_START
-    <ul>
-      <li>如果您從這個值中減去 DRAW_START,就可以得知版面配置和測量階段花費多久的時間完成。(請注意,在捲動或動畫期間,您會希望這個值趨近於零。)
-
-
-      </li>
-
-      <li>如要深入瞭解轉譯管道的測量與版面配置階段,請參閱<a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">無效判定、版面配置及效能</a>影片。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>DRAW_START
-    <ul>
-      <li>performTraversals 的繪製階段開始的時間。這是判定無效的任何檢視顯示清單的記錄起始點。
-
-      </li>
-
-      <li>這個值與 SYNC_START 之間的時間,就是對樹狀結構中所有無效判定檢視呼叫 View.draw() 所花費的時間。
-
-      </li>
-
-      <li>如需繪製模型的詳細資訊,請參閱<a href="{@docRoot}guide/topics/graphics/hardware-accel.html#hardware-model">硬體加速</a>或<a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">無效判定、版面配置及效能</a>影片。
-
-
-      </li>
-    </ul>
-  </li>
-
-  <li>SYNC_START
-    <ul>
-      <li>繪製的同步階段開始的時間。
-      </li>
-
-      <li>如果這個值與 ISSUE_DRAW_COMMANDS_START 之間的時間相當長 (約為 &gt;0.4ms ),通常代表已繪製許多必須上傳至 GPU 的新點陣圖。
-
-
-      </li>
-
-      <li>如要深入瞭解同步階段,請參閱<a href="https://www.youtube.com/watch?v=VzYkVL1n4M8&amp;index=24&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">設定檔 GPU 轉譯</a>影片。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>ISSUE_DRAW_COMMANDS_START
-    <ul>
-      <li>硬體轉譯器開始對 GPU 發出繪製命令的時間。
-      </li>
-
-      <li>這個值與 FRAME_COMPLETED 之間的時間大約就是應用程式產生的 GPU 工作量。
-太過度繪製或無效轉譯效果之類的問題都會顯示於此。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>SWAP_BUFFERS
-    <ul>
-      <li>相對於無趣的平台工作以外,呼叫 eglSwapBuffers 的時間。
-
-      </li>
-    </ul>
-  </li>
-
-  <li>FRAME_COMPLETED
-    <ul>
-      <li>全部完成!花費在處理這個畫面的總時間,計算方法是 FRAME_COMPLETED - INTENDED_VSYNC。
-
-      </li>
-    </ul>
-  </li>
-
-</ul>
-
-<p>
-  您能以不同的方式使用這項資料。顯示不同延遲貯體中畫面時間分布的長條圖就是一種簡單但實用的方式,請見下圖。
-
-本圖可一目瞭然地告訴我們,大部分畫面都低於 16ms 的上限 (紅色除外),但只有幾個畫面明顯超過上限。
-
-我們可以查看此長條圖一段時間的變化,觀察出現的大規模位移或產生新的極端值。
-您也能根據資料中的許多時間戳記將輸入延遲、花費在版面配置的時間或其他類似的有趣度量指標繪成圖表。
-
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-framestats.png">
-
-
-<h3 id="timing-dump">簡易畫面計時傾印</h3>
-
-<p>
-  如果 [開發人員選項] 中的 [設定檔 GPU 轉譯]<strong></strong> 設定為 [In adb shell dumpsys gfxinfo]<strong></strong>
-,<code>adb shell dumpsys gfxinfo</code> 命令會印出最近 120 個畫面的計時資訊,以定位鍵分隔值分成數個不同類別。
-
-這項資料非常適合用來指出可能是繪製管道的哪個部分太慢。
-
-</p>
-
-<p>
-  類似於上述的 <a href="#fs-data-format">framestats</a>,可以直接將它貼到選擇的試算表工具,或使用指令碼來收集和剖析。
-
-下圖顯示許多由應用程式產生的畫面花費時間的分類細項。
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-frame-latency.png">
-
-<p>
-  執行 gfxinfo、複製輸出、將輸出貼入試算表應用程式,然後將資料繪製成堆疊長條圖的結果。
-
-</p>
-
-<p>
-  每個直條都代表動畫的一個畫面,其高度代表計算該畫面所花費的毫秒數。
-長條的每個色塊都代表轉譯管道的不同階段,好讓您看出應用程式的哪部分可能產生瓶頸。
-
-如需瞭解繪製管道以及如何最佳化的詳細資訊,請參閱硬體加速或<a href="https://www.youtube.com/watch?v=we6poP0kw6E&amp;index=27&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">無效判定、版面配置及效能</a>影片。
-
-
-</p>
-
-
-<h3 id="collection-window">控制統計資料收集時間</h3>
-
-<p>
-  framestats 與簡單的畫面計時都會收集極短時間內的資料 – 轉譯約需兩秒。
-為了精確控制這段時間,例如只限特定動畫的資料,您可以重設所有計數器,然後彙總收集的統計資料。
-
-
-</p>
-
-<pre>
-&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; reset
-</pre>
-
-<p>
-  這也能和傾印命令本身結合使用,定期收集和重設,持續擷取兩秒時間內的畫面。
-
-
-</p>
-
-
-<h3 id="diagnose">診斷效能回復</h3>
-
-<p>
-  識別回復是追蹤問題和維護應用程式健康情況的第一步。
-不過,dumpsys 只能識別有問題存在與相關的嚴重性。
-您仍需要診斷造成效能問題的特定原因,以及找出適當的修正方式。
-因此,強烈建議您使用 <a href="{@docRoot}tools/help/systrace.html">systrace</a> 工具。
-
-</p>
-
-
-<h3 id="resources">其他資源</h3>
-
-<p>
-  如需 Android 的轉譯管道如何運作、常見問題以及如何修正的詳細資訊,下列的一些資訊可能會很實用:
-
-
-</p>
-
-<ul>
-  <li>轉譯效能 101
-  </li>
-  <li>為什麼 60fps?
-  </li>
-  <li>Android UI 和 GPU
-  </li>
-  <li>無效判定、版面配置及效能
-  </li>
-  <li>利用 Systrace 分析 UI 效能
-  </li>
-</ul>
-
-
-<h2 id="automate">自動化 UI 效能測試</h2>
-
-<p>
-  UI 效能測試的方法之一就是讓測試人員對目標應用程式執行一組使用者操作,並以肉眼查看,或花費很長一段時間使用工具導向的方法,尋找閃避現象。
-
-但這種靠人工的方式充滿危險,人類對畫面率變化的感知能力因人而異,而且這種方法也很費時、繁瑣且容易出錯。
-
-
-</p>
-
-<p>
-  較有效率的方法是從自動化的 UI 測試中記錄和分析重要效能度量指標。
-Android M 開發人員預覽版包含新的記錄功能,能夠輕鬆判斷應用程式動畫中閃避現象的數量與嚴重程度,還能用來建置嚴謹的程序,判斷目前的效能並追蹤未來的效能目標。
-
-
-
-</p>
-
-<p>
-  本文會逐步說明建議用來使用資料以自動化效能測試的方法。
-
-</p>
-
-<p>
-  這種方法大多分成兩個主要動作。首先,識別您要測試的項目,以及測試的方法。其次是設定和維護自動化測試環境。
-
-
-</p>
-
-
-<h3 id="ui-tests">設定 UI 測試</h3>
-
-<p>
-  在您開始進行自動化測試之前,務必要決定幾個高階決策,才能適當瞭解您的測試空間與可能會有的需求。
-
-</p>
-
-<h4>
-  識別要測試的主要動畫 / 流程
-</h4>
-
-<p>
-  請記住,流暢的動畫有所中斷時,就是使用者最容易看見效能低落的時候。
-因此,識別要測試哪種類型的 UI 動作時,最好著重在使用者最常看見或對他們的體驗最重要的主要動畫。
-
-例如,以下是一些可能有利於識別的常見情況:
-</p>
-
-<ul>
-  <li>捲動主要的 ListView 或 RecyclerView
-  </li>
-
-  <li>非同步等待週期內的動畫
-  </li>
-
-  <li>當中會載入 / 操縱點陣圖的任何動畫
-  </li>
-
-  <li>包含 Alpha 透明混色的動畫
-  </li>
-
-  <li>使用畫布繪製的自訂檢視
-  </li>
-</ul>
-
-<p>
-  和您團隊的工程人員、設計師及產品經理合作,優先考慮將這些主要產品動畫放入測試涵蓋範圍內。
-
-</p>
-
-<h4>
-  定義未來目標並予以追蹤
-</h4>
-
-<p>
-  從高階觀點來看,重要的是識別特定的效能目標,並著重在撰寫測試及收集相關資料。
-例如:
-</p>
-
-<ul>
-  <li>您是否只想初次開始追蹤 UI 效能以深入瞭解?
-  </li>
-
-  <li>您是否想要避免可能在未來導入的回復?
-  </li>
-
-  <li>今日有 90% 的順暢畫面並想要在本季達到 98%?
-  </li>
-
-  <li>今日有 98% 的順暢畫面且不想要回復?
-  </li>
-
-  <li>您的目標是改善低階裝置上的效能嗎?
-  </li>
-</ul>
-
-<p>
-  在上述的這些情況中,您會想要有歷史追蹤功能,來顯示不同應用程式版本間的效能。
-
-</p>
-
-<h4>
-  識別測試要用的裝置
-</h4>
-
-<p>
-  應用程式效能會因其執行所在裝置而異。有些裝置包含的記憶體較少、GPU 較不強大或 CPU 晶片速度較慢。
-這表示可在某組硬體上執行良好的動畫,在其他組合上不一定能執行良好,更糟的是可能會在管道的不同部分產生瓶頸。
-
-使用者所見可能會不同,為將這點列入考量,請挑選涵蓋當前高階裝置、低階裝置、平板電腦等的一系列裝置執行測試。
-
-尋找 CPU 效能、RAM、畫面密度、大小等方面的變化。
-高階裝置上通過的測試,在低階裝置上可能會失敗。
-
-</p>
-
-<h4>
-  UI 測試的基本架構
-</h4>
-
-<p>
-  工具套件 (例如 <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a> 和 <a href="{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a>) 是為協助將使用者在您的應用程式四處移動的動作自動化而建置。
-
-這些都是模擬使用者與裝置互動的簡單架構。
-如要使用這些架構,您要有效地建立會逐一執行一組使用者動作的獨特指令碼,然後在裝置上自行播放。
-
-
-</p>
-
-<p>
-  連同 <code>dumpsys gfxinfo</code>,再結合這些自動化測試,您可快速建立可重現系統,讓您執行測試並測量該特定情況下的效能資訊。
-
-
-</p>
-
-
-<h3 id="automated-tests">設定自動化 UI 測試</h3>
-
-<p>
-  在您能夠執行 UI 測試,還有可從單一測試收集資料的管道後,下一個重要步驟是利用可多次執行該項測試的架構,然後彙總產生的效能資料,以供您的開發團隊進一步分析。
-
-
-
-</p>
-
-<h4>
-  測試自動化的架構
-</h4>
-
-<p>
-  直接在目標裝置/模擬器上執行的 UI 測試架構 (例如 <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>) 毫無價值。
-因為效能收集資訊是由主控機器透過 ADB 傳送命令驅動 <em>dumpsys gfxinfo</em> 來完成。
-<a href="{@docRoot}tools/help/monkeyrunner_concepts.html">MonkeyRunner</a> 架構是為了協助橋接這些個別實體開發。在主控機器上執行的指令碼處理系統可對一組連接的裝置發出命令,也能接收來自這些裝置的資料。
-
-
-
-</p>
-
-<p>
-  建置一組指令碼以適當自動化 UI 效能測試,至少應能利用 monkeyRunner 來完成下列工作:
-
-</p>
-
-<ul>
-  <li>對目標裝置或模擬器載入和啟動所需的 APK。
-  </li>
-
-  <li>啟動並允許執行 UI Automator UI 測試
-  </li>
-
-  <li>透過 dumpsys gfxinfo 收集效能資訊。<em></em><em></em>
-  </li>
-
-  <li>彙總資訊並以對開發人員有用的方式顯示。
-  </li>
-</ul>
-
-
-<h3 id="triage">分類和修正觀察到的問題</h3>
-
-<p>
-  在辨識出問題模式與回復之後,下一個步驟是辨識和套用修正。
-如果您的自動化測試架構會為畫面保留精確的計時分類細項,可幫助您詳細審察目前可疑的程式碼/版面配置變化 (在回復的情況下),或在您切換為靠人工探究時縮小要分析的系統部分。
-
-
-如需靠人工探究時,<a href="{@docRoot}tools/help/systrace.html">systrace</a> 是開始進行的好地方,顯示轉譯管道各階段、系統中每個執行緒與核心,還有您所定義任何自訂事件標記的精確計時資訊。
-
-
-</p>
-
-<h4>
-  適當分析暫時的計時
-</h4>
-
-<p>
-  請務必注意,從轉譯效能中取得和測量計時的困難度。
-這些數字不具決定性且通常受系統狀態、可用記憶體數目、溫度調節,還有上次太陽閃焰何時衝擊您所在地區影響。
-
-重點是您執行相同的測試兩次,而每次得到的數字都有些微不同,數字很接近但不會完全相同。
-
-
-</p>
-
-<p>
-  以這種方式適當收集和分析資料,表示執行相同的測試多次,並累積結果取平均值或中間值。(為了簡單起見,我們稱之為「批次」) 這可讓您粗略計算測試的效能,而不需要精確的計時。
-
-
-
-</p>
-
-<p>
-  在變更的程式碼之間使用批次,可看出那些變更對效能的影響。
-如果前次變更批次的平均畫面率大於後來變更批次,您通常會有那項特定變更的整體 win wrt 效能。
-
-
-</p>
-
-<p>
-  這表示您執行的任何自動化 UI 測試都應將此概念列入考量,同時考量可能會在測試期間發生的任何異常情況。
-例如,您的應用程式效能若因為某些裝置問題而突然下降 (並非由您的應用程式引起),您可能會想要重新執行批次,以讓取得的計時較不混亂。
-
-
-
-</p>
-
-<p>
-  應該執行多少次測試才能獲得有意義的測量結果呢?最少應執行 10 次,若執行更多次 (像是 50 或 100 次) 可以產生更準確的結果 (當然您現在是以時間換取準確度)。
-
-
-</p>
diff --git a/docs/html-intl/intl/zh-tw/sdk/index.jd b/docs/html-intl/intl/zh-tw/sdk/index.jd
new file mode 100644
index 0000000..ba11c46
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/sdk/index.jd
@@ -0,0 +1,429 @@
+page.title=下載 Android Studio 和 SDK 工具
+page.tags=sdk, android studio
+page.template=sdk
+page.image=images/cards/android-studio_2x.png
+header.hide=1
+page.metaDescription=下載官方 Android IDE 和開發人員工具以建置適用於 Android 手機、平板電腦、穿戴式裝置、電視等裝置的應用程式。
+
+@jd:body
+
+<style type="text/css">
+  .offline {display:none;}
+  h2.feature {
+    padding-top:30px;
+    margin-top:0;
+    clear:both;
+  }
+  .feature-blurb {
+  margin:0px; font-size:16px; font-weight:300;
+  padding-top:40px;
+  }
+
+  .landing-button .small {
+    font-size: 12px;
+    font-weight: normal;
+    line-height: 12px;
+    display: block;
+  }
+
+  h1.studio-logo {
+    width:226px;
+    height:78px;
+    display:block;
+    padding:0;
+    white-space: nowrap;
+    text-indent: -10000px;
+    font-size:0px;
+    background: url({@docRoot}images/tools/studio-logo.png);
+    background-image: -webkit-image-set(url({@docRoot}images/tools/studio-logo.png) 1x, url({@docRoot}images/tools/studio-logo_2x.png) 2x);
+    background-size: 226px 78px;
+  }
+
+</style>
+
+
+
+
+
+<div style="position:relative;">
+
+
+<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
+<div class="col-13" style="margin:0;">&nbsp;</div><!-- provides top margin for content -->
+
+<h1 id="tos-header" style="margin-top:0">下載</h1>
+
+<p class="sdk-terms-intro">在安裝 Android Studio 或單獨的 SDK 工具之前,您必須同意遵守下列條款及細則。
+</p>
+
+<div class="sdk-terms" onfocus="this.blur()">
+<h2 class="norule">條款及細則</h2>
+此為「Android 軟體開發套件授權協議」
+
+<h3>1. Introduction</h3>
+1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
+
+1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
+
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+
+
+<h3>2. Accepting this License Agreement</h3>
+2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
+
+2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
+
+2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
+
+2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
+
+
+<h3>3. SDK License from Google</h3>
+3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
+
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
+
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+
+3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+
+3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
+
+3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
+
+3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+
+3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
+
+
+<h3>4. Use of the SDK by You</h3>
+4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
+
+4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
+
+4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
+
+4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
+
+4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
+
+4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
+
+
+<h3>5. Your Developer Credentials</h3>
+5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
+
+
+<h3>6. Privacy and Information</h3>
+6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
+
+6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
+
+
+<h3>7. Third Party Applications</h3>
+7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
+
+7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
+
+7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
+
+
+<h3>8. Using Android APIs</h3>
+8.1 Google Data APIs
+
+8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
+
+8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
+
+
+<h3>9. Terminating this License Agreement</h3>
+9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
+
+9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
+
+9.3 Google may at any time, terminate the License Agreement with you if:
+(A) you have breached any provision of the License Agreement; or
+(B) Google is required to do so by law; or
+(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
+(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
+
+9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
+
+
+<h3>10. DISCLAIMER OF WARRANTIES</h3>
+10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+
+10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
+
+10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+
+
+<h3>11. LIMITATION OF LIABILITY</h3>
+11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
+
+<h3>12. Indemnification</h3>
+12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
+
+
+<h3>13. Changes to the License Agreement</h3>
+13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
+
+
+<h3>14. General Legal Terms</h3>
+14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
+
+14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
+
+14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
+
+14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
+
+14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
+
+14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
+
+14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+
+<em>November 20, 2015</em>
+</div>
+
+
+
+
+
+<div id="next-steps" style="display:none;position:absolute;width:inherit">
+  <p>只要再進行幾個步驟,即可建置適用於 Android 的應用程式!</p>
+  <p>系統即將把您重新導向至
+<a id="next-link" href="{@docRoot}sdk/installing/index.html">安裝 Android SDK</a> 網頁。</p>
+
+</div><!-- end next-steps -->
+
+
+
+<div id="sdk-terms-form">
+<p>
+<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+<label id="agreeLabel" for="agree">我已閱讀並同意上述條款及細則</label>
+</p>
+<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+</div>
+
+
+</div><!-- end TOS -->
+
+
+
+
+
+
+<div id="landing">
+
+<div class="col-13">&nbsp;</div><!-- provides top margin for content -->
+
+<img src="{@docRoot}images/tools/studio-hero.png" srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x" width="760" height="400"/>
+
+<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
+
+<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>
+
+<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
+width: 400px;text-align: center;">官方 Android IDE</p>
+
+<ul style="font-size:12px;line-height:19px;">
+<li>Android Studio IDE</li>
+<li>Android SDK 工具</li>
+<li>Android 6.0 (Marshmallow) 平台</li>
+<li>含 Google API 的 Android 6.0 模擬器系統映像檔</li>
+</ul>
+
+<a class="online landing-button green download-bundle-button"
+href="#Other" >Download Android Studio<br/><span class='small'></span></a>
+
+<!-- this appears when viewing the offline docs -->
+<p class="offline">
+想要取得 Android Studio 或獨立 SDK 工具,請造訪 <a href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
+</p>
+</div>
+
+<ul>
+  <li><a href="#Requirements">系統需求</a></li>
+  <li><a href="#Other">其他下載選項</a></li>
+  <li><a href="{@docRoot}sdk/installing/migrate.html">遷移至 Android Studio</a></li>
+  <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform" target="_blank">參與問卷調查</a></li>
+</ul>
+
+
+
+
+<h2 class="feature norule" >智慧型程式碼編輯器</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-code.png" srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Android Studio 的核心是一個智慧型程式碼編輯器,能夠進行進階的程式碼自動完成、重構及程式碼分析作業。
+</p>
+  <p>這項功能強大的程式碼編輯器可協助您成為更具生產力的 Android 應用程式開發人員。</p>
+</div>
+
+
+
+
+
+<h2 class="feature norule">程式碼範本與 GitHub 整合</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-import.png" srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>全新的專案精靈可協助您及早發起新專案。</p>
+
+  <p>您可以使用模式 (例如導覽匣和資料檢視巡覽區) 範本程式碼,甚至是從 GitHub 匯入 Google 程式碼來發起專案。
+</p>
+</div>
+
+
+
+
+<h2 class="feature norule">多螢幕應用程式開發</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-screens.png" srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>建置適用於 Android 手機、平板電腦、Android Wear、Android TV、Android Auto 和 Google Glass 的應用程式。
+</p>
+  <p>透過 Android Studio 中新的「Android 專案檢視」和模組支援功能,管理應用程式專案和相關資源變得更加容易。
+
+</div>
+
+
+
+
+<h2 class="feature norule">適用於所有形狀和大小的虛擬裝置</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-avds.png" srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>Android Studio 隨附預先設定、經過最佳化的模擬器映像檔。</p>
+  <p>經過更新及簡化的 Virtual Device Manager (虛擬裝置管理員) 可為常見的 Android 裝置提供預先定義的裝置設定檔。
+</p>
+</div>
+
+
+
+
+<h2 class="feature norule">
+Android 版本已隨 Gradle 更新</h2>
+
+<div class="col-9">
+  <img src="{@docRoot}images/tools/studio-hero-gradle.png" srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
+</div><!-- end col-9 (left column) -->
+
+<div class="col-4 feature-blurb">
+  <p>可使用同一項專案為您的 Android 應用程式建立多個具有不同功能的 APK。</p>
+  <p>可使用 Maven 管理應用程式依附功能。</p>
+  <p>可使用 Android Studio 或命令列建置 APK。</p>
+</div>
+
+
+
+
+<h2 class="feature norule">瞭解 Android Studio</h2>
+<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
+
+<a class="online landing-button green download-bundle-button" style="margin:0 0 40px 60px;float:right" href="">Download</a>
+
+  <ul>
+  <li>以 IntelliJ IDEA Community Edition (JetBrains 所推出的常用 Java IDE) 為基礎。</li>
+  <li>具有彈性的 Gradle 型建置系統。</li>
+  <li>可產生建置變體和多個 APK。</li>
+  <li>可為 Google 各項服務和各種裝置類型提供額外的範本支援。</li>
+  <li>具有支援主題編輯功能的版面配置編輯器。</li>
+  <li>具有可取得效能、可用性、版本相容性資料及偵測其他問題的 Lint 工具。</li>
+  <li>具有 ProGuard 和應用程式簽署功能。</li>
+  <li>內建 Google Cloud Platform 支援,可讓您輕鬆整合 Google Cloud Messaging 與 App Engine。
+</li>
+  </ul>
+
+<p style="margin:0">
+如要進一步瞭解 Android Studio 提供的功能,請參閱《<a href="{@docRoot}tools/studio/index.html">Android Studio 基本概念</a>》指南。
+</p>
+</div>
+
+
+<p>如果您搭配 ADT 使用 Eclipse,請注意,Android Studio 現已成為 Android 的官方 IDE,因此請遷移至 Android Studio 以接收 IDE 的所有更新資訊。
+
+如果想瞭解如何遷移專案,請參閱<a href="{@docRoot}sdk/installing/migrate.html">遷移至 Android Studio</a>。
+
+</p>
+
+
+
+
+
+
+
+<h2 id="Requirements">系統需求</h2>
+
+<h3>Windows</h3>
+
+<ul>
+<li>Microsoft&reg; Windows&reg; 8/7/Vista/2003 (32 或 64 位元)</li>
+<li>2 GB 以上的 RAM (建議準備 4 GB 的 RAM)</li>
+<li>400 MB 的硬碟空間</li>
+<li>至少 1 GB (供 Android SDK、模擬器系統映像檔及快取使用)</li>
+<li>1280 x 800 以上的螢幕解析度</li>
+<li>Java Development Kit (JDK) 7 </li>
+<li>提升模擬器效能的選用配件:支援 Intel® VT-x、Intel® EM64T (Intel® 64) 及 Execute Disable (XD) Bit 功能的 Intel® 處理器
+</li>
+</ul>
+
+
+<h3>Mac OS X</h3>
+
+<ul>
+<li>Mac&reg; OS X&reg; 10.8.5 以上版本;最高可支援 10.9 (Mavericks)</li>
+<li>2 GB 以上的 RAM (建議準備 4 GB 的 RAM)</li>
+<li>400 MB 的硬碟空間</li>
+<li>至少 1 GB (供 Android SDK、模擬器系統映像檔及快取使用)</li>
+<li>1280 x 800 以上的螢幕解析度</li>
+<li>Java Runtime Environment (JRE) 6</li>
+<li>Java Development Kit (JDK) 7</li>
+<li>提升模擬器效能的選用配件:支援 Intel® VT-x、Intel® EM64T (Intel® 64) 及 Execute Disable (XD) Bit 功能的 Intel® 處理器
+</li>
+</ul>
+
+<p>如果您使用 Mac OS,可搭配 Java Runtime Environment (JRE) 6 執行 Android Studio 以獲得最佳字型顯示效果。
+此外,您還可以設定專案使用 Java Development Kit (JDK) 6 或 JDK 7。</p>
+
+
+
+<h3>Linux</h3>
+
+<ul>
+<li>GNOME 或 KDE 桌面</li>
+<li>GNU C 程式庫 (glibc) 2.15 以上版本</li>
+<li>2 GB 以上的 RAM (建議準備 4 GB 的 RAM)</li>
+<li>400 MB 的硬碟空間</li>
+<li>至少 1 GB (供 Android SDK、模擬器系統映像檔及快取使用)</li>
+<li>1280 x 800 以上的螢幕解析度</li>
+<li>Oracle&reg; Java Development Kit (JDK) 7 </li>
+</ul>
+<p>已在 Ubuntu&reg; 14.04 Trusty Tahr (能夠執行 32 位元應用程式的 64 位元發行版本) 上經過測試。
+</p>
+
+
+
+
+<h2 id="Other" style="clear:left">其他下載選項</h2>
+
+<!-- alternative SDK options follows -->
diff --git a/docs/html-intl/intl/zh-tw/sdk/installing/adding-packages.jd b/docs/html-intl/intl/zh-tw/sdk/installing/adding-packages.jd
new file mode 100644
index 0000000..563df51
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/sdk/installing/adding-packages.jd
@@ -0,0 +1,226 @@
+page.title=新增 SDK 封裝
+
+page.tags=sdk manager
+
+@jd:body
+
+<style>
+ol.large {
+  margin-left:0;
+}
+ol.large > li {
+  list-style-position: inside;
+  list-style-type:none;
+  margin:30px 0 0 0;
+  padding:30px 20px;
+  background:#eee;
+}
+ol.large > li:nth-child(odd) {
+}
+ol.large > li:before {
+  display:inline;
+  left:-40px;
+  float:left;
+  width:20px;
+  font-size:20px;
+  line-height:20px;
+}
+ol.large > li > h2 {
+  font-size:20px;
+  line-height:20px;
+  padding:0 0 0 20px;
+  margin:0 0 20px 0;
+  display:inline;
+  font-weight:normal;
+}
+ol.large > li:nth-child(1):before {
+  content:"1. ";
+}
+ol.large > li:nth-child(2):before {
+  content:"2. ";
+}
+ol.large > li:nth-child(3):before {
+  content:"3. ";
+}
+ol.large > li:nth-child(4):before {
+  content:"4. ";
+}
+ol.large > li:nth-child(5):before {
+  content:"5. ";
+}
+ol.large > li:nth-child(6):before {
+  content:"6. ";
+}
+</style>
+
+
+<p>
+Android SDK 預設不會包括開發所需的所有內容。SDK 將工具、平台及其他元件劃分為不同的封裝。您可以使用
+ <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a> 視需要下載。因此,您要先將封裝加入 Android SDK 後,才可以開始進行。
+
+
+</p>
+
+<p>如要新增封裝,請透過下列其中一種方式啟動 Android SDK Manager:</p>
+<ul>
+  <li>在 Android Studio 中,按一下工具列的 [<strong>SDK Manager</strong>]
+<img src="{@docRoot}images/tools/sdk-manager-studio.png" style="vertical-align:bottom;margin:0;height:17px" />。</li>
+  <li>如果您不是使用 Android Studio:
+    <ul>
+      <li>Windows:按兩下位於 Android SDK 目錄之根目錄的 <code>SDK Manager.exe</code> 檔案。
+</li>
+      <li>Mac/Linux:開啟終端機並瀏覽到安裝 Android SDK 的 <code>tools/</code> 目錄,然後執行 <code>android sdk</code>。
+</li>
+    </ul>
+  </li>
+</ul>
+
+<p>第一次開啟 SDK Manager 時,預設會選取多個封裝。
+保留預設選取的封裝,但務必按照以下步驟確認您已經取得開發所需的所有內容:
+</p>
+
+
+<ol class="large">
+<li>
+  <h2 id="GetTools" class="norule">取得最新的 SDK 工具</h2>
+
+<img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
+
+  <p>設定 Android SDK 時,您一定要下載最新的工具和平台:
+</p>
+  <ol>
+   <li>開啟 Tools 目錄並選取:
+     <ul>
+       <li><strong>Android SDK 工具</strong></li>
+       <li><strong>Android SDK 平台工具</strong></li>
+       <li><strong>Android SDK 建置工具</strong> (最新版本)</li>
+     </ul>
+   </li>
+   <li>開啟第一個 Android X.X 資料夾 (最新版本) 並選取:
+     <ul>
+      <li><strong>SDK 平台</strong></li>
+      <li>模擬器的系統映像,例如 <br>
+      <strong>ARM EABI v7a 系統映像</strong></li>
+     </ul>
+   </li>
+  </ol>
+</li>
+
+<li>
+  <h2 id="GetSupportLib" class="norule">取得額外 API 的支援程式庫</h2>
+
+  <div class="sidebox">
+    <p>以下各項需要支援程式庫:</p>
+    <ul>
+      <li><a href="{@docRoot}wear/index.html">Android Wear</a></li>
+      <li><a href="{@docRoot}tv/index.html">Android 電視</a></li>
+      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
+    </ul>
+
+    <p>支援程式庫也提供常用的 API:</p>
+    <ul>
+      <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">導覽匣</a>
+</li>
+      <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">滑動檢視</a></li>
+      <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">向下相容的動作列</a>
+</li>
+    </ul>
+  </div>
+
+  <p><a href="{@docRoot}tools/support-library/features.html">Android 支援程式庫</a>提供的 API 延伸集合,可以與大部分的 Android 版本相容。
+</p>
+
+  <p>開啟 <strong>Extras</strong> 目錄並選取:</p>
+     <ul>
+       <li><strong>Android 支援存放庫</strong></li>
+       <li><strong>Android 支援程式庫</strong></li>
+     </ul>
+
+  <p>&nbsp;</p>
+  <p>&nbsp;</p>
+
+</li>
+
+
+<li>
+  <h2 id="GetGoogle" class="norule">從 Google Play 服務取得更多 API</h2>
+
+  <div class="sidebox">
+
+    <p>Google Play 服務 API 為 Android 應用程式提供多種功能與服務,例如:
+</p>
+    <ul>
+      <li><a href="{@docRoot}google/play-services/plus.html">使用者驗證</a></li>
+      <li><a href="{@docRoot}google/play-services/maps.html">Google 地圖</a></li>
+      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
+      <li><a href="{@docRoot}google/play-services/games.html">遊戲關卡和排行榜</a>
+</li>
+      <li><a href="{@docRoot}google/play-services/index.html">更多功能與服務</a></li>
+    </ul>
+  </div>
+
+  <p>如要使用 Google API 進行開發,您需要 Google Play 服務封裝:</p>
+  <p>開啟 <strong>Extras</strong> 目錄並選取:</p>
+     <ul>
+       <li><strong>Google 存放庫</strong></li>
+       <li><strong>Google Play 服務</strong></li>
+     </ul>
+
+  <p class="note"><strong>注意:</strong>並非所有 Android 裝置都提供 Google Play 服務,但內含 Google Play 市集的所有裝置都可以使用 Google Play 服務。
+如要在 Android 模擬器中使用這些 API,您必須從 SDK Manager 最新的 Android X.X 目錄中安裝 <strong>Google API</strong> 系統映像。
+
+</p>
+</li>
+
+
+<li>
+  <h2 id="Install" class="norule">安裝封裝</h2>
+  <p>您選好需要的所有封裝後,就可以繼續安裝:</p>
+  <ol>
+   <li>按一下 [<strong>安裝 X 封裝</strong>]。</li>
+   <li>在下一個視窗中,按兩下左側的每個封裝名稱,以接受每項的授權合約。
+</li>
+   <li>按一下 [<strong>安裝</strong>]。</li>
+  </ol>
+  <p>SDK Manager 視窗的下方會顯示下載進度。
+  <strong>請勿結束 SDK Manager</strong>,下載會因而取消。</p>
+</li>
+
+<li>
+  <h2 id="Build" class="norule">開始建置!</h2>
+
+<p>Android SDK 現在已內含上述封裝,您可以開始建置 Android 應用程式了。
+若有新的工具和其他 API,只要啟動 SDK Manager 即可將新的封裝下載到 SDK。
+</p>
+
+<p>以下是繼續進行的選項:</p>
+
+<div class="cols" style="padding:10px 0">
+<div class="col-4">
+<h3>開始使用</h3>
+<p>如果您是 Android 開發新手,可參考<strong><a href="{@docRoot}training/basics/firstapp/index.html">建置第一個應用程式</a></strong>指南瞭解 Android 應用程式的基本概念。
+</p>
+
+</div>
+<div class="col-4 box">
+<h3>建置穿戴式應用程式</h3>
+<p>如果您準備好開始建置 Android 穿戴式裝置的應用程式,請參閱<strong><a href="{@docRoot}wear/preview/start.html">建置 Android Wear 的應用程式</a></strong>指南。
+</p>
+
+</div>
+<div class="col-4 box">
+<h3>使用 Google API</h3>
+<p>如要開始使用 Google API (例如「地圖」或 Play Game 服務),請參閱<strong><a href="{@docRoot}google/play-services/setup.html">設定 Google Play 服務</a></strong>指南。
+
+
+</p>
+
+</div>
+</div><!-- end cols -->
+
+
+</li>
+
+</ol>
+
+
diff --git a/docs/html-intl/intl/zh-tw/training/material/animations.jd b/docs/html-intl/intl/zh-tw/training/material/animations.jd
new file mode 100644
index 0000000..ba28575
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/training/material/animations.jd
@@ -0,0 +1,550 @@
+page.title=定義自訂動畫
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>本課程示範</h2>
+<ol>
+  <li><a href="#Touch">自訂輕觸回饋</a></li>
+  <li><a href="#Reveal">使用顯示效果</a></li>
+  <li><a href="#Transitions">自訂操作行為轉換</a></li>
+  <li><a href="#ViewState">動畫顯示視圖狀態變更</a></li>
+  <li><a href="#AnimVector">動畫顯示矢量可繪</a></li>
+</ol>
+<h2>您也應該閱讀</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">材料設計規格</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android 上的材料設計</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>材料設計中的動畫讓使用者在進行操作動作之後獲得回饋,並且在使用者與您的應用程式互動時提供視覺上的連續性。
+材料設計風格針對按鈕和操作行為轉換,提供某些預設的動畫,而 Android 5.0 (API 級別 21) 以上版本則可讓您自訂這些動畫並建立新的動畫:
+
+</p>
+
+<ul>
+<li>輕觸回饋</li>
+<li>循環顯示</li>
+<li>操作行為轉換</li>
+<li>曲線動作</li>
+<li>視圖狀態變更</li>
+</ul>
+
+
+<h2 id="Touch">自訂輕觸回饋</h2>
+
+<p>當使用者與 UI 元素互動時,材料設計中的輕觸回饋在接觸點提供即時的視覺化確認。
+按鈕的預設輕觸回饋動畫使用新的 {@link android.graphics.drawable.RippleDrawable} 類別,透過漣漪效果在不同狀態之間進行轉換。
+
+</p>
+
+<p>大多數情況下,您應該在視圖 XML 中將視圖背景指定為下列項目以套用此功能:
+</p>
+
+<ul>
+<li>對有邊界的漣漪指定為 <code>?android:attr/selectableItemBackground</code>。</li>
+<li>對延伸出視圖的漣漪指定為 <code>?android:attr/selectableItemBackgroundBorderless</code>。
+這會繪製在具有非空背景的視圖之最接近父項上,並以其作為邊界。
+</li>
+</ul>
+
+<p class="note"><strong>注意:</strong><code>selectableItemBackgroundBorderless</code> 是 API 級別 21 推出的新屬性。
+</p>
+
+
+<p>或者,您也可以使用 <code>ripple</code> 元素將 {@link android.graphics.drawable.RippleDrawable} 定義為 XML 資源。
+</p>
+
+<p>您可以對 {@link android.graphics.drawable.RippleDrawable} 物件指定色彩。如要變更預設的輕觸回饋色彩,請使用設計風格的 <code>android:colorControlHighlight</code> 屬性。
+
+</p>
+
+<p>如需詳細資訊,請參閱 {@link
+android.graphics.drawable.RippleDrawable} 類別的 API 參考資料。</p>
+
+
+<h2 id="Reveal">使用顯示效果</h2>
+
+<p>當您顯示或隱藏一組 UI 元素時,顯示動畫可提供使用者視覺上的連續性。
+{@link android.view.ViewAnimationUtils#createCircularReveal
+ViewAnimationUtils.createCircularReveal()}方法可讓您以動畫顯示裁剪的圓形,以顯示或隱藏視圖。
+</p>
+
+<p>使用下列效果顯示之前看不見的視圖:</p>
+
+<pre>
+// previously invisible view
+View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the final radius for the clipping circle
+int finalRadius = Math.max(myView.getWidth(), myView.getHeight());
+
+// create the animator for this view (the start radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);
+
+// make the view visible and start the animation
+myView.setVisibility(View.VISIBLE);
+anim.start();
+</pre>
+
+<p>使用下列效果隱藏之前看見的視圖:</p>
+
+<pre>
+// previously visible view
+final View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the initial radius for the clipping circle
+int initialRadius = myView.getWidth();
+
+// create the animation (the final radius is zero)
+Animator anim =
+    ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0);
+
+// make the view invisible when the animation is done
+anim.addListener(new AnimatorListenerAdapter() {
+    &#64;Override
+    public void onAnimationEnd(Animator animation) {
+        super.onAnimationEnd(animation);
+        myView.setVisibility(View.INVISIBLE);
+    }
+});
+
+// start the animation
+anim.start();
+</pre>
+
+
+<h2 id="Transitions">自訂操作行為轉換</h2>
+
+<!-- shared transition video -->
+<div style="width:290px;margin-left:35px;float:right">
+  <div class="framed-nexus5-port-span-5">
+  <video class="play-on-hover" autoplay="">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.mp4">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.webm">
+    <source src="{@docRoot}design/material/videos/ContactsAnim.ogv">
+  </video>
+  </div>
+  <div style="font-size:10pt;margin-left:20px;margin-bottom:30px">
+    <p class="img-caption" style="margin-top:3px;margin-bottom:10px"><strong>圖 1</strong> - 使用分享元素的轉換。
+</p>
+    如要重播影片,請按一下裝置螢幕<em></em>
+  </div>
+</div>
+
+<p>材料設計應用程式中的操作行為轉換透過常見元素之間的動作和轉換,在不同的狀態之間提供視覺上的連接效果。
+您可針對進入和離開轉換及不同操作行為之間分享元素的轉換指定自訂動畫。
+</p>
+
+<ul>
+<li><strong>進入</strong>轉換決定操作行為中的視圖如何進入場景。例如,在爆炸<em></em>進入轉換中,視圖會從外面進入場景,接著飛入螢幕的中央。
+
+</li>
+
+<li><strong>離開</strong>轉換決定操作行為中的視圖如何離開場景。例如,在爆炸<em></em>離開轉換中,視圖會從中央離開場景。
+
+</li>
+
+<li><strong>分享元素</strong>轉換決定在兩個操作行為轉換之間分享的視圖如何在這些操作行為之間轉換。
+例如,若兩個操作行為在不同的位置和大小具有相同的影像,changeImageTransform<em></em> 分享元素轉換會在這些操作行為之間流暢地解譯影像以及調整影像的大小。
+
+</li>
+</ul>
+
+<p>Android 5.0 (API 級別 21) 支援下列進入和離開轉換:</p>
+
+<ul>
+<li>爆炸<em></em> - 視圖從場景的中央移入和移出。</li>
+<li>滑動<em></em> - 視圖從場景的其中一邊移入和移出。</li>
+<li>淡化<em></em> - 改變視圖的透明度,以將視圖加入場景,或從場景中移除。</li>
+</ul>
+
+<p>所有延伸 {@link android.transition.Visibility} 類別的轉換都可作為進入或離開轉換。
+如需詳細資訊,請參閱 {@link android.transition.Transition} 類別的 API 參考資料。
+</p>
+
+<p>Android 5.0 (API 級別 21) 也支援下列分享元素轉換:</p>
+
+<ul>
+<li>changeBounds<em></em> - 動畫顯示目標視圖版面配置邊界的變更。</li>
+<li>changeClipBounds<em></em> - 動畫顯示目標視圖裁剪邊界的變更。</li>
+<li>changeTransform<em></em> - 動畫顯示目標視圖比例和旋轉方向的變更。</li>
+<li><em>changeImageTransform</em> - 動畫顯示目標影像大小和比例的變更。</li>
+</ul>
+
+<p>當您在應用程式中啟用操作行為轉換時,進入和離開操作行為之間會啟動預設交錯淡化轉換。
+</p>
+
+<img src="{@docRoot}training/material/images/SceneTransition.png" alt="" width="600" height="405" style="margin-top:20px" />
+<p class="img-caption">
+  <strong>圖 2</strong> - 使用一個分享元素的場景轉換。
+</p>
+
+<h3>指定自訂轉換</h3>
+
+<p>首先,當您定義一個從材料設計風格繼承而來的樣式時,請使用 <code>android:windowContentTransitions</code> 屬性啟用視窗內容轉換。
+您也可在樣式定義中指定進入、離開和分享元素轉換:
+</p>
+
+<pre>
+&lt;style name="BaseAppTheme" parent="android:Theme.Material">
+  &lt;!-- enable window content transitions -->
+  &lt;item name="android:windowContentTransitions">true&lt;/item>
+
+  &lt;!-- specify enter and exit transitions -->
+  &lt;item name="android:windowEnterTransition">@transition/explode&lt;/item>
+  &lt;item name="android:windowExitTransition">@transition/explode&lt;/item>
+
+  &lt;!-- specify shared element transitions -->
+  &lt;item name="android:windowSharedElementEnterTransition">
+    &#64;transition/change_image_transform&lt;/item>
+  &lt;item name="android:windowSharedElementExitTransition">
+    &#64;transition/change_image_transform&lt;/item>
+&lt;/style>
+</pre>
+
+<p>此範例中的 <code>change_image_transform</code> 轉換定義如下:</p>
+
+<pre>
+&lt;!-- res/transition/change_image_transform.xml -->
+&lt;!-- (see also Shared Transitions below) -->
+&lt;transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;changeImageTransform/>
+&lt;/transitionSet>
+</pre>
+
+<p><code>changeImageTransform</code> 元素對應至 {@link android.transition.ChangeImageTransform} 類別。
+如需詳細資訊,請參閱 {@link android.transition.Transition} 的 API 參考資料。
+</p>
+
+<p>如要在程式碼中改為啟用視窗內容轉換,請呼叫 {@link android.view.Window#requestFeature Window.requestFeature()}方法:
+</p>
+
+<pre>
+// inside your activity (if you did not enable transitions in your theme)
+getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+
+// set an exit transition
+getWindow().setExitTransition(new Explode());
+</pre>
+
+<p>如要在程式碼中指定轉換,請以 {@link
+android.transition.Transition} 物件呼叫下列方法:</p>
+
+<ul>
+  <li>{@link android.view.Window#setEnterTransition Window.setEnterTransition()}</li>
+  <li>{@link android.view.Window#setExitTransition Window.setExitTransition()}</li>
+  <li>{@link android.view.Window#setSharedElementEnterTransition
+      Window.setSharedElementEnterTransition()}</li>
+  <li>{@link android.view.Window#setSharedElementExitTransition
+      Window.setSharedElementExitTransition()}</li>
+</ul>
+
+<p>{@link android.view.Window#setExitTransition setExitTransition()} 和 {@link
+android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} 方法定義了呼叫操作行為的離開轉換。
+{@link android.view.Window#setEnterTransition
+setEnterTransition()} 和 {@link android.view.Window#setSharedElementEnterTransition
+setSharedElementEnterTransition()} 方法定義被呼叫操作行為的進入轉換。</p>
+
+<p>如要取得轉換的完整效果,您必須同時對呼叫與被呼叫操作行為啟用視窗內容轉換。
+否則,呼叫操作行為會啟動離開轉換,然後您只會看到視窗轉換 (類似調整大小或淡化)。
+</p>
+
+<p>如要立即啟動進入轉換,請對被呼叫的操作行為使用 {@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()} 方法。
+
+這樣您就會有更戲劇性的進入轉換。</p>
+
+<h3>使用轉換啟動操作行為</h3>
+
+<p>若您啟用轉換並對操作行為設定離開轉換,當您啟動另一個操作行為時,就會啟動轉換,如下所示:
+</p>
+
+<pre>
+startActivity(intent,
+              ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
+</pre>
+
+<p>若您已針對第二個操作行為設定進入轉換,當操作行為啟動時,也會啟動轉換。
+若要在啟動另一個操作行為時停用轉換,請提供 <code>null</code> 選項組合。
+</p>
+
+<h3>使用一個分享元素啟動操作行為</h3>
+
+<p>在兩個擁有分享元素的操作行為之間製作螢幕轉換動畫:</p>
+
+<ol>
+<li>在設計風格中啟用視窗內容轉換。</li>
+<li>在樣式中指定分享元素轉換。</li>
+<li>將您的轉換定義為 XML 資源。</li>
+<li>使用 <code>android:transitionName</code> 屬性,對兩個版面配置中的分享元素指定通用名稱。
+</li>
+<li>使用 {@link android.app.ActivityOptions#makeSceneTransitionAnimation
+ActivityOptions.makeSceneTransitionAnimation()} 方法。</li>
+</ol>
+
+<pre>
+// get the element that receives the click event
+final View imgContainerView = findViewById(R.id.img_container);
+
+// get the common element for the transition in this activity
+final View androidRobotView = findViewById(R.id.image_small);
+
+// define a click listener
+imgContainerView.setOnClickListener(new View.OnClickListener() {
+    &#64;Override
+    public void onClick(View view) {
+        Intent intent = new Intent(this, Activity2.class);
+        // create the transition animation - the images in the layouts
+        // of both activities are defined with android:transitionName="robot"
+        ActivityOptions options = ActivityOptions
+            .makeSceneTransitionAnimation(this, androidRobotView, "robot");
+        // start the new activity
+        startActivity(intent, options.toBundle());
+    }
+});
+</pre>
+
+<p>對於您在程式碼中所產生的分享動態視圖,請使用 {@link android.view.View#setTransitionName View.setTransitionName()} 方法,在兩個操作行為中指定通用元素名稱。
+
+</p>
+
+<p>如要在完成第二個操作行為時倒轉場景轉換動畫,請呼叫 {@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()} 方法而不是 {@link android.app.Activity#finish Activity.finish()}。
+
+</p>
+
+<h3>使用多個分享元素啟動操作行為</h3>
+
+<p>如要在兩個具有多個分享元素的操作行為之間製作場景轉換動畫,請使用 <code>android:transitionName</code> 屬性在兩個版面配置中定義分享元素 (或在兩個操作行為中使用 {@link android.view.View#setTransitionName View.setTransitionName()} 方法),然後建立 {@link android.app.ActivityOptions} 物件,如下所示:
+
+
+</p>
+
+<pre>
+ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
+        Pair.create(view1, "agreedName1"),
+        Pair.create(view2, "agreedName2"));
+</pre>
+
+
+<h2 id="CurvedMotion">使用曲線動作</h2>
+
+<p>材料設計中的動畫依據使用時間插值法和空間移動模式的曲線而定。
+在 Android 5.0 (API 級別 21) 及以上版本中,您可為動畫定義自訂時間曲線和曲線動作模式。
+</p>
+
+<p>{@link android.view.animation.PathInterpolator} 類別是根據貝茲曲線 (Bézier curve) 或 {@link android.graphics.Path} 物件的一種新插值器。
+這個插值器在一個 1x1 的方格中指定動作曲線,在 (0,0) 和 (1,1) 有兩個錨定點,以及使用建構函式引數指定的控制點。
+
+您也可以將路徑插值器定義為 XML 資源:</p>
+
+<pre>
+&lt;pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
+    android:controlX1="0.4"
+    android:controlY1="0"
+    android:controlX2="1"
+    android:controlY2="1"/>
+</pre>
+
+<p>系統在材料設計規格中提供三種基本曲線的 XML 資源:
+</p>
+
+<ul>
+  <li><code>&#64;interpolator/fast_out_linear_in.xml</code></li>
+  <li><code>&#64;interpolator/fast_out_slow_in.xml</code></li>
+  <li><code>&#64;interpolator/linear_out_slow_in.xml</code></li>
+</ul>
+
+<p>您可將 {@link android.view.animation.PathInterpolator} 物件傳送至 {@link
+android.animation.Animator#setInterpolator Animator.setInterpolator()} 方法。</p>
+
+<p>{@link android.animation.ObjectAnimator} 類別有新的建構函式,可讓您一次使用兩個以上的屬性沿著路徑以動畫顯示座標。
+例如,下列動畫器使用 {@link android.graphics.Path} 物件,以動畫顯示視圖的 X 和 Y 屬性:
+</p>
+
+<pre>
+ObjectAnimator mAnimator;
+mAnimator = ObjectAnimator.ofFloat(view, View.X, View.Y, path);
+...
+mAnimator.start();
+</pre>
+
+
+<h2 id="ViewState">動畫顯示視圖狀態變更</h2>
+
+<p>{@link android.animation.StateListAnimator} 類別可讓您定義視圖狀態變更時所執行的動畫器。
+下列範例示範如何將 {@link
+android.animation.StateListAnimator} 定義為 XML 資源:</p>
+
+<pre>
+&lt;!-- animate the translationZ property of a view when pressed -->
+&lt;selector xmlns:android="http://schemas.android.com/apk/res/android">
+  &lt;item android:state_pressed="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="@android:integer/config_shortAnimTime"
+        android:valueTo="2dp"
+        android:valueType="floatType"/>
+        &lt;!-- you could have other objectAnimator elements
+             here for "x" and "y", or other properties -->
+    &lt;/set>
+  &lt;/item>
+  &lt;item android:state_enabled="true"
+    android:state_pressed="false"
+    android:state_focused="true">
+    &lt;set>
+      &lt;objectAnimator android:propertyName="translationZ"
+        android:duration="100"
+        android:valueTo="0"
+        android:valueType="floatType"/>
+    &lt;/set>
+  &lt;/item>
+&lt;/selector>
+</pre>
+
+<p>如要將自訂的視圖狀態動畫連接到視圖,請依照此範例在 XML 資源檔案中使用 <code>selector</code> 元素定義動畫器,並使用 <code>android:stateListAnimator</code> 屬性將其指派到您的視圖。
+
+如要在程式碼中為視圖指派狀態清單動畫器,請使用 {@link android.animation.AnimatorInflater#loadStateListAnimator
+AnimationInflater.loadStateListAnimator()} 方法,然後使用 {@link android.view.View#setStateListAnimator View.setStateListAnimator()} 方法將動畫器指派到您的視圖。
+
+</p>
+
+<p>當您的設計風格延伸材料設計風格時,按鈕預設會有 Z 動畫。如果要避免在按鈕中出現這類行為,請將 <code>android:stateListAnimator</code> 屬性設定為 <code>@null</code>。
+
+</p>
+
+<p>{@link android.graphics.drawable.AnimatedStateListDrawable} 類別可讓您在相關視圖的狀態變更之間,建立顯示動畫的可繪項目。
+Android 5.0 中的某些系統小工具預設會使用這些動畫。
+下列範例示範如何將 {@link android.graphics.drawable.AnimatedStateListDrawable} 定義為 XML 資源:
+</p>
+
+<pre>
+&lt;!-- res/drawable/myanimstatedrawable.xml -->
+&lt;animated-selector
+    xmlns:android="http://schemas.android.com/apk/res/android">
+
+    &lt;!-- provide a different drawable for each state-->
+    &lt;item android:id="@+id/pressed" android:drawable="@drawable/drawableP"
+        android:state_pressed="true"/>
+    &lt;item android:id="@+id/focused" android:drawable="@drawable/drawableF"
+        android:state_focused="true"/>
+    &lt;item android:id="@id/default"
+        android:drawable="@drawable/drawableD"/>
+
+    &lt;!-- specify a transition -->
+    &lt;transition android:fromId="@+id/default" android:toId="@+id/pressed">
+        &lt;animation-list>
+            &lt;item android:duration="15" android:drawable="@drawable/dt1"/>
+            &lt;item android:duration="15" android:drawable="@drawable/dt2"/>
+            ...
+        &lt;/animation-list>
+    &lt;/transition>
+    ...
+&lt;/animated-selector>
+</pre>
+
+
+<h2 id="AnimVector">動畫顯示矢量可繪</h2>
+
+<p><a href="{@docRoot}training/material/drawables.html#VectorDrawables">矢量可繪</a>可以調整大小,但又不會喪失定義。
+{@link android.graphics.drawable.AnimatedVectorDrawable} 類別可讓您以動畫顯示矢量可繪的屬性。
+</p>
+
+<p>您通常會在下列三個 XML 檔案中定義能可動矢量可繪:</p>
+
+<ul>
+<li>在 <code>res/drawable/</code> 中包含 <code>&lt;vector&gt;</code> 元素的矢量可繪
+</li>
+<li>在 <code>res/drawable/</code> 中包含 <code>&lt;animated-vector&gt;</code> 元素的可動矢量可繪
+</li>
+<li>在 <code>res/anim/</code> 中包含 <code>&lt;objectAnimator&gt;</code> 元素的一或多個物件動畫器
+</li>
+</ul>
+
+<p>可動的矢量可繪能以動畫顯示 <code>&lt;group&gt;</code> 和 <code>&lt;path&gt;</code> 元素的屬性。
+<code>&lt;group&gt;</code> 元素定義一組路徑或子群組,而 <code>&lt;path&gt;</code> 元素則定義要繪製的路徑。
+</p>
+
+<p>當您定義要可動的矢量可繪時,請使用 <code>android:name</code> 屬性為群組和路徑指派唯一的名稱,以便從您的動畫器定義參考這些群組和路徑。
+
+例如:</p>
+
+<pre>
+&lt;!-- res/drawable/vectordrawable.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="64dp"
+    android:width="64dp"
+    android:viewportHeight="600"
+    android:viewportWidth="600">
+    &lt;group
+        <strong>android:name="rotationGroup"</strong>
+        android:pivotX="300.0"
+        android:pivotY="300.0"
+        android:rotation="45.0" >
+        &lt;path
+            <strong>android:name="v"</strong>
+            android:fillColor="#000000"
+            android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
+    &lt;/group>
+&lt;/vector>
+</pre>
+
+<p>可動的矢量可繪定義是依照名稱來參考矢量可繪中的群組和路徑:
+</p>
+
+<pre>
+&lt;!-- res/drawable/animvectordrawable.xml -->
+&lt;animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+  android:drawable="@drawable/vectordrawable" >
+    &lt;target
+        android:name="rotationGroup"
+        android:animation="@anim/rotation" />
+    &lt;target
+        android:name="v"
+        android:animation="@anim/path_morph" />
+&lt;/animated-vector>
+</pre>
+
+<p>動畫定義代表 {@link android.animation.ObjectAnimator} 或 {@link
+android.animation.AnimatorSet} 物件。此範例中的第一個動畫器會 360 度旋轉目標群組:
+</p>
+
+<pre>
+&lt;!-- res/anim/rotation.xml -->
+&lt;objectAnimator
+    android:duration="6000"
+    android:propertyName="rotation"
+    android:valueFrom="0"
+    android:valueTo="360" />
+</pre>
+
+<p>此範例中的第二個動畫器會將矢量可繪的路徑從一種形狀變成另外一種形狀。
+兩個路徑必須相容才能變形:意即兩個路徑必須有相同數量的命令,而每個命令必須有相同數量的參數。
+</p>
+
+<pre>
+&lt;!-- res/anim/path_morph.xml -->
+&lt;set xmlns:android="http://schemas.android.com/apk/res/android">
+    &lt;objectAnimator
+        android:duration="3000"
+        android:propertyName="pathData"
+        android:valueFrom="M300,70 l 0,-70 70,70 0,0   -70,70z"
+        android:valueTo="M300,70 l 0,-70 70,0  0,140 -70,0 z"
+        android:valueType="pathType" />
+&lt;/set>
+</pre>
+
+<p>如需詳細資訊,請參閱 {@link
+android.graphics.drawable.AnimatedVectorDrawable} 的 API 參考資料。</p>
diff --git a/docs/html-intl/intl/zh-tw/training/material/compatibility.jd b/docs/html-intl/intl/zh-tw/training/material/compatibility.jd
new file mode 100644
index 0000000..767788b
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/training/material/compatibility.jd
@@ -0,0 +1,168 @@
+page.title=維持相容性
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>本課程示範</h2>
+<ol>
+  <li><a href="#Theme">定義替代樣式</a></li>
+  <li><a href="#Layouts">提供替代版面配置</a></li>
+  <li><a href="#SupportLib">使用支援程式庫</a></li>
+  <li><a href="#CheckVersion">檢查系統版本</a></li>
+</ol>
+<h2>您也應該閱讀</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">材料設計規格</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android 上的材料設計</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>某些材料設計功能如材料設計風格和自訂操作行為轉換等,只能在 Android 5.0 (API 級別 21) 及以上版本中使用。
+然而,您還是可以將應用程式設計為在支援材料設計的裝置上執行時才使用這些功能,並仍然與執行舊版 Android 的裝置相容。
+
+</p>
+
+
+<h2 id="Theme">定義替代樣式</h2>
+
+<p>您可以設定應用程式在支援材料設計風格的裝置上執行時才予以使用,在執行舊版 Android 的裝置上執行時則轉換成舊版的設計風格:
+</p>
+
+<ol>
+<li>在 <code>res/values/styles.xml</code> 中定義繼承自舊版設計風格 (例如 Holo) 的設計風格。
+</li>
+<li>在 <code>res/values-v21/styles.xml</code> 中定義與材料設計風格相同名稱的設計風格。
+</li>
+<li>在宣示說明檔案中將此設計風格設定為應用程式的設計風格。</li>
+</ol>
+
+<p class="note"><strong>注意</strong>:若您的應用程式使用材料設計風格,但卻未以此方式提供替代設計風格,您的應用程式將無法在 Android 5.0 之前的版本上執行。
+
+
+</p>
+
+
+<h2 id="Layouts">提供替代版面配置</h2>
+
+<p>若您根據材料設計指南所設計的版面配置並未使用任何 Android 5.0 (API 級別 21) 中推出的全新 XML 屬性,則這些版面配置就可以在舊版 Android 上運作。
+
+或者,您也可以提供替代的版面配置。您也可提供替代的版面配置以自訂應用程式在舊版 Android 上如何顯示。
+</p>
+
+<p>在 <code>res/layout-v21/</code> 內建立 Android 5.0 (API 級別 21) 的版面配置檔案,並在 <code>res/layout/</code> 內建立舊版 Android 的替代版面配置檔案。例如,<code>res/layout/my_activity.xml</code> 是 <code>res/layout-v21/my_activity.xml</code> 的替代版面配置。
+
+
+</p>
+
+<p>為了避免程式碼重複,請在 <code>res/values/</code> 內定義您的樣式,在 <code>res/values-v21/</code> 中針對新的 API 修改樣式,再使用樣式繼承,在 <code>res/values/</code> 中定義基礎樣式,然後從 <code>res/values-v21/</code> 中的樣式繼承。
+
+</p>
+
+
+<h2 id="SupportLib">使用支援程式庫</h2>
+
+<p><a href="{@docRoot}tools/support-library/features.html#v7">v7 支援程式庫</a> r21 以及更新版本包含下列材料設計功能:
+</p>
+
+<ul>
+<li>當您套用其中一個 <code>Theme.AppCompat</code> 設計風格時,某些系統小工具的<a href="{@docRoot}training/material/theme.html">材料設計樣式</a>。
+</li>
+<li>在 <code>Theme.AppCompat</code> 設計風格中的<a href="{@docRoot}training/material/theme.html#ColorPalette">色板設計風格屬性</a>。
+</li>
+<li><a href="{@docRoot}training/material/lists-cards.html#RecyclerView">顯示資料集合</a>的 {@link android.support.v7.widget.RecyclerView} 小工具。
+</li>
+<li><a href="{@docRoot}training/material/lists-cards.html#CardView">建立卡片</a>的 {@link android.support.v7.widget.CardView} 小工具。</li>
+<li><a href="{@docRoot}training/material/drawables.html#ColorExtract">從影像提取顯著顏色</a>的 {@link android.support.v7.graphics.Palette} 類別。
+</li>
+</ul>
+
+<h3>系統小工具</h3>
+
+<p><code>Theme.AppCompat</code> 設計風格提供下列小工具的材料設計樣式:</p>
+
+<ul>
+  <li>{@link android.widget.EditText}</li>
+  <li>{@link android.widget.Spinner}</li>
+  <li>{@link android.widget.CheckBox}</li>
+  <li>{@link android.widget.RadioButton}</li>
+  <li>{@link android.support.v7.widget.SwitchCompat}</li>
+  <li>{@link android.widget.CheckedTextView}</li>
+</ul>
+
+<h3>色板</h3>
+
+<p>如果要取得材料設計樣式並使用 Android v7 支援程式庫自訂色板,請套用其中一個 <code>Theme.AppCompat</code> 設計風格:
+</p>
+
+<pre>
+&lt;!-- extend one of the Theme.AppCompat themes -->
+&lt;style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
+    &lt;!-- customize the color palette -->
+    &lt;item name="colorPrimary">@color/material_blue_500&lt;/item>
+    &lt;item name="colorPrimaryDark">@color/material_blue_700&lt;/item>
+    &lt;item name="colorAccent">@color/material_green_A200&lt;/item>
+&lt;/style>
+</pre>
+
+<h3>清單和卡片</h3>
+
+<p>在舊版 Android 中,透過 Android v7 支援程式庫可以使用 {@link android.support.v7.widget.RecyclerView} 和 {@link
+android.support.v7.widget.CardView} 小工具,但有下列限制:
+</p>
+<ul>
+<li>{@link android.support.v7.widget.CardView} 只能使用額外的填補方式,有計畫地實作陰影。
+</li>
+<li>{@link android.support.v7.widget.CardView} 不會裁剪與圓形邊角重疊的下方視圖。
+</li>
+</ul>
+
+
+<h3>相依性</h3>
+
+<p>如果要在 Android 5.0 (API 級別 21) 以前的版本中使用這些功能,請在您的專案中包含 Android v7 支援程式庫做為 <a href="{@docRoot}/sdk/installing/studio-build.html#dependencies">Gradle 相依性</a>:
+</p>
+
+<pre>
+dependencies {
+    compile 'com.android.support:appcompat-v7:21.0.+'
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
+
+
+<h2 id="CheckVersion">檢查系統版本</h2>
+
+<p>下列功能只能在 Android 5.0 (API 級別 21) 以及更新版本中使用:</p>
+
+<ul>
+<li>操作行為轉換</li>
+<li>輕觸回饋</li>
+<li>顯示動畫</li>
+<li>路徑型動畫</li>
+<li>矢量可繪</li>
+<li>繪製著色</li>
+</ul>
+
+<p>如要維持與舊版 Android 的相容性,在呼叫這些功能的 API 之前,請先在執行期間檢查系統 {@link
+android.os.Build.VERSION#SDK_INT version}:
+</p>
+
+<pre>
+// Check if we're running on Android 5.0 or higher
+if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+    // Call some material design APIs here
+} else {
+    // Implement this feature without material design
+}
+</pre>
+
+<p class="note"><strong>注意:</strong>如果要指定應用程式支援的 Android 版本,請在您的宣示說明檔案中使用 <code>android:minSdkVersion</code> 和 <code>android:targetSdkVersion</code> 屬性。
+
+如果要在 Android 5.0 中使用材料設計功能,請將 <code>android:targetSdkVersion</code> 屬性設定為 <code>21</code>。
+如需詳細資訊,請參閱 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt; API 指南</a>。
+
+</p>
diff --git a/docs/html-intl/intl/zh-tw/training/material/drawables.jd b/docs/html-intl/intl/zh-tw/training/material/drawables.jd
new file mode 100644
index 0000000..ae807c0
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/training/material/drawables.jd
@@ -0,0 +1,126 @@
+page.title=使用可繪項目
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>本課程示範</h2>
+<ol>
+  <li><a href="#DrawableTint">為可繪項目資源著色</a></li>
+  <li><a href="#ColorExtract">從影像提取顯著顏色</a></li>
+  <li><a href="#VectorDrawables">建立矢量可繪</a></li>
+</ol>
+<h2>您也應該閱讀</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">材料設計規格</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android 上的材料設計</a></li>
+</ul>
+</div>
+</div>
+
+<p>下列可繪項目功能可以幫助您在應用程式中運用材料設計:</p>
+
+<ul>
+<li>繪製著色</li>
+<li>顯著顏色提取</li>
+<li>矢量可繪</li>
+</ul>
+
+<p>本課程示範如何在應用程式中使用這些功能。</p>
+
+
+<h2 id="DrawableTint">為可繪項目資源著色</h2>
+
+<p>若您使用 Android 5.0 (API 級別 21) 或以上版本,您可對點陣圖和定義為 Alpha 遮罩的九宮格影像著色。
+您可使用顏色資源或解析為顏色資源的設計風格屬性 (如 <code>?android:attr/colorPrimary</code> 為圖片著色。
+這些資產您通常只會建立一次,然後自動著色以符合您的設計風格。
+</p>
+
+<p>您可使用 {@code setTint()} 方法對 {@link android.graphics.drawable.BitmapDrawable} 或 {@link
+android.graphics.drawable.NinePatchDrawable} 物件套用著色。您也可以使用 <code>android:tint</code> 和 <code>android:tintMode</code> 屬性,設定版面配置中的著色顏色和模式。
+
+</p>
+
+
+<h2 id="ColorExtract">從影像提取顯著顏色</h2>
+
+<p>Android 支援程式庫 r21 和更新版本包含 {@link
+android.support.v7.graphics.Palette} 類別,可讓您從影像提取出顯著的顏色。此類別會提取下列顯著顏色:
+</p>
+
+<ul>
+<li>鮮明</li>
+<li>鮮明 (深色)</li>
+<li>鮮明 (淺色)</li>
+<li>柔和</li>
+<li>柔和 (深色)</li>
+<li>柔和 (淺色)</li>
+</ul>
+
+<p>如果要提取這些顏色,請將 {@link android.graphics.Bitmap} 物件傳遞到載入影像之背景執行緒中的 {@link android.support.v7.graphics.Palette#generate Palette.generate()} 靜態方法。
+
+如果您無法使用該執行緒,請改為呼叫 {@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} 方法並提供接聽程式。
+
+</p>
+
+<p>您可使用 <code>Palette</code> 類別中的 getter 方法 (如 <code>Palette.getVibrantColor</code> 從影像擷取顯著顏色。
+</p>
+
+<p>如果要在專案中使用 {@link android.support.v7.graphics.Palette} 類別,請在應用程式的模組中加入下列 <a href="{@docRoot}sdk/installing/studio-build.html#dependencies">Gradle 相依性</a>:
+
+</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:palette-v7:21.0.0'
+}
+</pre>
+
+<p>如需詳細資訊,請參閱 {@link android.support.v7.graphics.Palette} 類別的 API 參考資料。
+</p>
+
+
+<h2 id="VectorDrawables">建立矢量可繪</h2>
+
+<!-- video box -->
+<a class="notice-developers-video" href="https://www.youtube.com/watch?v=wlFVIIstKmA" style="margin-top:18px">
+<div>
+    <h3>影片</h3>
+    <p>Android Vector Graphics</p>
+</div>
+</a>
+
+<p>在 Android 5.0 (API 級別 21) 或以上版本中,您可定義矢量可繪,這種圖形可以調整大小但不會遺失定義。
+一個矢量影像只需要一個資產檔案,但點陣圖影像的每一種螢幕密度都需要一個資產檔案。
+如果要建立矢量影像,您必須在 <code>&lt;vector&gt;</code> XML 元素內定義圖形的詳細資料。
+</p>
+
+<p>下列範例定義一個具有心形圖案的矢量影像:</p>
+
+<pre>
+&lt;!-- res/drawable/heart.xml -->
+&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
+    &lt;!-- intrinsic size of the drawable -->
+    android:height="256dp"
+    android:width="256dp"
+    &lt;!-- size of the virtual canvas -->
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+
+  &lt;!-- draw a path -->
+  &lt;path android:fillColor="#8fff"
+      android:pathData="M20.5,9.5
+                        c-1.955,0,-3.83,1.268,-4.5,3
+                        c-0.67,-1.732,-2.547,-3,-4.5,-3
+                        C8.957,9.5,7,11.432,7,14
+                        c0,3.53,3.793,6.257,9,11.5
+                        c5.207,-5.242,9,-7.97,9,-11.5
+                        C25,11.432,23.043,9.5,20.5,9.5z" />
+&lt;/vector>
+</pre>
+
+<p>在 Android 中,{@link android.graphics.drawable.VectorDrawable} 物件代表矢量影像。
+如需有關 <code>pathData</code> 語法的詳細資訊,請參閱 <a href="http://www.w3.org/TR/SVG11/paths.html#PathData">SVG 路徑參考資料</a>。如需有關繪製矢量可繪屬性的詳細資訊,請參閱<a href="{@docRoot}training/material/animations.html#AnimVector">動畫顯示矢量可繪</a>。
+
+</p>
diff --git a/docs/html-intl/intl/zh-tw/training/material/get-started.jd b/docs/html-intl/intl/zh-tw/training/material/get-started.jd
new file mode 100644
index 0000000..dfa0074
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/training/material/get-started.jd
@@ -0,0 +1,171 @@
+page.title=開始使用
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>本課程示範</h2>
+<ol>
+  <li><a href="#ApplyTheme">套用材料設計風格</a></li>
+  <li><a href="#Layouts">設計版面配置</a></li>
+  <li><a href="#Depth">指定視圖中的高度</a></li>
+  <li><a href="#ListsCards">建立清單和卡片</a></li>
+  <li><a href="#Animations">自訂動畫</a></li>
+</ol>
+<h2>您也應該閱讀</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">材料設計規格</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android 上的材料設計</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>如果要使用材料設計建立應用程式:</p>
+
+<ol>
+  <li style="margin-bottom:10px">
+    請閱讀<a href="http://www.google.com/design/spec">材料設計規格</a>。</li>
+  <li style="margin-bottom:10px">
+    對應用程式套用材料<strong>設計風格</strong>。</li>
+  <li style="margin-bottom:10px">
+    依照材料設計指南建立<strong>版面配置</strong>。</li>
+  <li style="margin-bottom:10px">
+    指定視圖的<strong>高度</strong>來投射出陰影。</li>
+  <li style="margin-bottom:10px">
+    使用系統<strong>小工具</strong>製作清單和卡片。</li>
+  <li style="margin-bottom:10px">
+    自訂應用程式中的<strong>動畫</strong>。</li>
+</ol>
+
+<h3>維持向下相容性</h3>
+
+<p>您可在應用程式中加入多種材料設計功能,同時維持與 Android 5.0 之前版本的相容性。
+如需詳細資訊,請參閱<a href="{@docRoot}training/material/compatibility.html">維持相容性</a>。
+</p>
+
+<h3>更新應用程式以納入材料設計功能</h3>
+
+<p>如要更新現有應用程式以納入材料設計功能,請依照下列材料設計指南更新版面配置。
+同時確保加入深度、輕觸回饋和動畫。
+</p>
+
+<h3>使用材料設計建立新應用程式</h3>
+
+<p>如果您要使用材料設計功能建立新應用程式,<a href="http://www.google.com/design/spec">材料設計指南</a>可以提供一致性的設計架構。
+請依照下列指南,使用 Android 架構中的新功能來設計和開發應用程式。
+</p>
+
+
+<h2 id="ApplyTheme">套用材料設計風格</h2>
+
+<p>如要在應用程式中套用材料設計風格,請指定一個繼承自 <code>android:Theme.Material</code> 的樣式:
+</p>
+
+<pre>
+&lt;!-- res/values/styles.xml -->
+&lt;resources>
+  &lt;!-- your theme inherits from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- theme customizations -->
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<p>材料設計風格提供已更新的系統小工具,可讓您設定系統小工具的色板和預設動畫,作為輕觸回饋與操作行為轉換。
+如需詳細資訊,請參閱<a href="{@docRoot}training/material/theme.html">使用材料設計風格</a>。
+</p>
+
+
+<h2 id="Layouts">設計版面配置</h2>
+
+<p>除了套用和自訂材料設計風格之外,您的版面配置也必須遵守<a href="http://www.google.com/design/spec">材料設計指南</a>。
+當您設計版面配置時,請注意下列事項:
+</p>
+
+<ul>
+<li>基準線網格</li>
+<li>邊線</li>
+<li>間距</li>
+<li>輕觸目標大小</li>
+<li>版面配置結構</li>
+</ul>
+
+
+<h2 id="Depth">指定視圖中的高度</h2>
+
+<p>檢視可以投射出陰影,因此檢視的高度值會決定陰影的大小及其繪製順序。
+如要設定視圖的高度,請在版面配置中使用 <code>android:elevation</code> 屬性:
+</p>
+
+<pre>
+&lt;TextView
+    android:id="&#64;+id/my_textview"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:text="&#64;string/next"
+    android:background="&#64;color/white"
+    android:elevation="5dp" />
+</pre>
+
+<p>您可以使用新的 <code>translationZ</code> 屬性建立動畫,來反映視圖高度的短暫變化。
+高度變化可以用來<a href="{@docRoot}training/material/animations.html#ViewState">回應輕觸手勢</a>。
+
+</p>
+
+<p>如需詳細資訊,請參閱<a href="{@docRoot}training/material/shadows-clipping.html">定義陰影和裁剪檢視</a>。
+</p>
+
+
+<h2 id="ListsCards">建立清單和卡片</h2>
+
+<p>{@link android.support.v7.widget.RecyclerView} 是一個更容易插入的 {@link
+android.widget.ListView} 版本,可支援不同的版面配置類型並提供更好的效能。{@link android.support.v7.widget.CardView} 可讓您在不同的應用程式之間以一致的外觀顯示卡片內部的資訊。
+
+下列程式碼範例示範如何在版面配置中加入 {@link android.support.v7.widget.CardView}:
+</p>
+
+<pre>
+&lt;android.support.v7.widget.CardView
+    android:id="&#64;+id/card_view"
+    android:layout_width="200dp"
+    android:layout_height="200dp"
+    card_view:cardCornerRadius="3dp">
+    ...
+&lt;/android.support.v7.widget.CardView>
+</pre>
+
+<p>如需詳細資訊,請參閱<a href="{@docRoot}training/material/lists-cards.html">建立清單和卡片</a>。
+</p>
+
+
+<h2 id="Animations">自訂動畫</h2>
+
+<p>Android 5.0 (API 級別 21) 包含許多新的 API 以便在應用程式中建立自訂動畫。例如,您可以啟用操作行為轉換,並在操作行為內部定義離開轉換:
+
+</p>
+
+<pre>
+public class MyActivity extends Activity {
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // enable transitions
+        getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+        setContentView(R.layout.activity_my);
+    }
+
+    public void onSomeButtonClicked(View view) {
+        getWindow().setExitTransition(new Explode());
+        Intent intent = new Intent(this, MyOtherActivity.class);
+        startActivity(intent,
+                      ActivityOptions
+                          .makeSceneTransitionAnimation(this).toBundle());
+    }
+}
+</pre>
+
+<p>當您從這個操作行為開始另一個操作行為時,就會啟動離開轉換。</p>
+
+<p>如需深入了解新的動畫 API,請參閱<a href="{@docRoot}training/material/animations.html">定義自訂動畫</a>。</p>
diff --git a/docs/html-intl/intl/zh-tw/training/material/index.jd b/docs/html-intl/intl/zh-tw/training/material/index.jd
new file mode 100644
index 0000000..5599d59
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/training/material/index.jd
@@ -0,0 +1,61 @@
+page.title=開發人員材料設計
+page.type=設計
+page.image=images/cards/material_2x.png
+page.metaDescription=學習如何套用材料設計至您的應用程式。
+
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+  <h2>相依性和先決條件</h2>
+  <ul>
+    <li>Android 5.0 (API 級別 21)</li>
+  </ul>
+</div>
+</div>
+
+<p>材料設計是一份廣泛綜合性的指南,引導您跨平台、跨裝置進行視覺、動態和互動的設計。
+如要在 Android 應用程式中使用材料設計,請依照<a href="http://www.google.com/design/spec/material-design/introduction.html">材料設計規格中的指示</a>,使用 Android 5.0 (API 級別 21) 中的新元件和新功能。
+
+
+
+</p>
+
+<p>本課程示範如何使用下列元素建立材料設計應用程式:</p>
+
+<ul>
+<li>材料設計風格</li>
+<li>卡片和清單的小工具</li>
+<li>自訂陰影和裁剪視圖</li>
+<li>矢量可繪</li>
+<li>自訂動畫</li>
+</ul>
+
+<p>本課程也示範當您在應用程式中使用材料設計功能時,如何與 Android 5.0 (API 級別 21) 之前的版本維持相容性。
+</p>
+
+<h2>課程</h2>
+
+<dl>
+  <dt><a href="{@docRoot}training/material/get-started.html">開始使用</a></dt>
+  <dd>了解如何更新應用程式以納入材料設計功能。</dd>
+
+  <dt><a href="{@docRoot}training/material/theme.html">使用材料設計風格</a></dt>
+  <dd>了解如何對應用程式套用材料設計樣式。</dd>
+
+  <dt><a href="{@docRoot}training/material/lists-cards.html">建立清單和卡片</a></dt>
+  <dd>了解如何使用系統小工具,建立外觀和操作方式一致的清單和卡片。</dd>
+
+  <dt><a href="{@docRoot}training/material/shadows-clipping.html">定義陰影和裁剪視圖</a></dt>
+  <dd>了解如何對視圖設定高度建立自訂陰影,以及如何裁剪視圖。</dd>
+
+  <dt><a href="{@docRoot}training/material/drawables.html">使用可繪項目</a></dt>
+  <dd>了解如何建立矢量可繪項目,以及如何對可繪資源著色。</dd>
+
+  <dt><a href="{@docRoot}training/material/animations.html">定義自訂動畫</a></dt>
+  <dd>了解如何使用分享元素對視圖建立自訂動畫和操作行為轉換。</dd>
+
+  <dt><a href="{@docRoot}training/material/compatibility.html">維持相容性</a></dt>
+  <dd>了解如何與 Android 5.0 之前的平台版本維持相容性。</dd>
+</dl>
diff --git a/docs/html-intl/intl/zh-tw/training/material/lists-cards.jd b/docs/html-intl/intl/zh-tw/training/material/lists-cards.jd
new file mode 100644
index 0000000..71adffb
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/training/material/lists-cards.jd
@@ -0,0 +1,266 @@
+page.title=建立清單和卡片
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>本課程示範</h2>
+<ol>
+  <li><a href="#RecyclerView">建立清單</a></li>
+  <li><a href="#CardView">建立卡片</a></li>
+  <li><a href="#Dependencies">新增相依性</a></li>
+</ol>
+<h2>您也應該閱讀</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">材料設計規格</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android 上的材料設計</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>如要在應用程式中使用材料設計樣式建立複雜的清單和卡片,可以使用 {@link android.support.v7.widget.RecyclerView} 和 {@link android.support.v7.widget.CardView} 小工具。
+
+</p>
+
+
+<h2 id="RecyclerView">建立清單</h2>
+
+<p>{@link android.support.v7.widget.RecyclerView} 小工具是比較進階和彈性的 {@link android.widget.ListView} 版本。
+這個小工具是一個用來顯示大型資料集的容器,只要維護少數幾個視圖,就可極有效率地捲動資料集。
+當您的資料集元素在執行階段會根據使用者操作動作或網路事件而變更,請使用 {@link android.support.v7.widget.RecyclerView} 小工具。
+
+</p>
+
+<p>{@link android.support.v7.widget.RecyclerView} 類別會提供下列項目,簡化大型資料集的顯示和處理方式:
+</p>
+
+<ul>
+  <li>版面配置管理員,用來將項目定位</li>
+  <li>常見項目操作 (例如移除或新增項目) 的預設動畫</li>
+</ul>
+
+<p>您也可針對 {@link
+android.support.v7.widget.RecyclerView} 小工具定義自訂的版面配置管理員。</p>
+
+<img src="{@docRoot}training/material/images/RecyclerView.png" alt="" width="550" height="106" />
+<p class="img-caption">
+<strong>圖 1.</strong><code>RecyclerView</code> 小工具。
+</p>
+
+<p>如果要使用 {@link android.support.v7.widget.RecyclerView} 小工具,您必須指定配接器和版面配置管理員。
+如要建立配接器,請延伸 {@link
+android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter} 類別。實作的詳細情形根據您的資料集和檢視類型而定。
+如需詳細資訊,請參閱下面的<a href="#RVExamples">範例</a>。
+</p>
+
+<div style="float:right">
+<img src="{@docRoot}design/material/images/list_mail.png" alt="" width="250" height="426" />
+<p class="img-caption" style="margin-left:8px">
+<strong>圖 2</strong> - 含有 <code>RecyclerView</code> 的清單。
+</p>
+</div>
+
+<p><strong>版面配置管理員</strong>會將 {@link
+android.support.v7.widget.RecyclerView} 內的項目視圖定位,並判斷何時要重複使用使用者不會再看到的項目視圖。
+如要重複使用 (或回收<em></em>) 某個視圖,版面配置管理員會要求配接器以資料集中不同的元素,取代視圖的內容。
+使用此方式回收視圖可避免建立不必要的視圖或執行耗費資源的 {@link android.app.Activity#findViewById findViewById()} 查詢,以增進效能。
+
+</p>
+
+<p>{@link android.support.v7.widget.RecyclerView} 提供下列內建的版面配置管理員:</p>
+
+<ul>
+<li>{@link android.support.v7.widget.LinearLayoutManager} 在垂直或水平捲動清單中顯示項目。
+</li>
+<li>{@link android.support.v7.widget.GridLayoutManager} 會在網格中顯示項目。</li>
+<li>{@link android.support.v7.widget.StaggeredGridLayoutManager} 會在交錯網格中顯示項目。</li>
+</ul>
+
+<p>如要建立自訂版面配置管理員,請延伸 {@link
+android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager} 類別。</p>
+
+<h3>動畫</h3>
+
+<p>在 {@link
+android.support.v7.widget.RecyclerView} 中,預設已啟用新增和移除項目的動畫。如果要自訂這些動畫,請延伸 {@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} 類別並使用 {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()} 方法。
+
+
+</p>
+
+<h3 id="RVExamples">範例</h3>
+
+<p>下列程式碼範例示範如何在版面配置中加入 {@link android.support.v7.widget.RecyclerView}:
+</p>
+
+<pre>
+&lt;!-- A RecyclerView with some commonly used attributes -->
+&lt;android.support.v7.widget.RecyclerView
+    android:id="@+id/my_recycler_view"
+    android:scrollbars="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"/>
+</pre>
+
+<p>一旦您在版面配置中加入 {@link android.support.v7.widget.RecyclerView} 小工具之後,先取得該物件的控制代碼、將控制代碼連線到版面配置管理員,再連接配接器以便顯示資料:
+
+</p>
+
+<pre>
+public class MyActivity extends Activity {
+    private RecyclerView mRecyclerView;
+    private RecyclerView.Adapter mAdapter;
+    private RecyclerView.LayoutManager mLayoutManager;
+
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.my_activity);
+        mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
+
+        // use this setting to improve performance if you know that changes
+        // in content do not change the layout size of the RecyclerView
+        mRecyclerView.setHasFixedSize(true);
+
+        // use a linear layout manager
+        mLayoutManager = new LinearLayoutManager(this);
+        mRecyclerView.setLayoutManager(mLayoutManager);
+
+        // specify an adapter (see also next example)
+        mAdapter = new MyAdapter(myDataset);
+        mRecyclerView.setAdapter(mAdapter);
+    }
+    ...
+}
+</pre>
+
+<p>配接器可存取資料集中的項目、建立項目的視圖,並在原來的項目無法再顯示時,使用新的資料項目取代某些視圖的內容。
+
+下列程式碼範例簡單實作一個由使用 {@link android.widget.TextView} 小工具顯示的字串陣列所組成的資料集:
+</p>
+
+<pre>
+public class MyAdapter extends RecyclerView.Adapter&lt;MyAdapter.ViewHolder> {
+    private String[] mDataset;
+
+    // Provide a reference to the views for each data item
+    // Complex data items may need more than one view per item, and
+    // you provide access to all the views for a data item in a view holder
+    public static class ViewHolder extends RecyclerView.ViewHolder {
+        // each data item is just a string in this case
+        public TextView mTextView;
+        public ViewHolder(TextView v) {
+            super(v);
+            mTextView = v;
+        }
+    }
+
+    // Provide a suitable constructor (depends on the kind of dataset)
+    public MyAdapter(String[] myDataset) {
+        mDataset = myDataset;
+    }
+
+    // Create new views (invoked by the layout manager)
+    &#64;Override
+    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
+                                                   int viewType) {
+        // create a new view
+        View v = LayoutInflater.from(parent.getContext())
+                               .inflate(R.layout.my_text_view, parent, false);
+        // set the view's size, margins, paddings and layout parameters
+        ...
+        ViewHolder vh = new ViewHolder(v);
+        return vh;
+    }
+
+    // Replace the contents of a view (invoked by the layout manager)
+    &#64;Override
+    public void onBindViewHolder(ViewHolder holder, int position) {
+        // - get element from your dataset at this position
+        // - replace the contents of the view with that element
+        holder.mTextView.setText(mDataset[position]);
+
+    }
+
+    // Return the size of your dataset (invoked by the layout manager)
+    &#64;Override
+    public int getItemCount() {
+        return mDataset.length;
+    }
+}
+</pre>
+
+
+<div style="float:right;margin-top:15px;margin-left:30px">
+<img src="{@docRoot}design/material/images/card_travel.png" alt="" width="225" height="383">
+<p class="img-caption" style="margin-left:12px">
+<strong>圖 3.</strong>卡片範例。
+</p>
+</div>
+
+<h2 id="CardView">建立卡片</h2>
+
+<p>{@link android.support.v7.widget.CardView} 會延伸{@link android.widget.FrameLayout} 類別,讓您跨平台以一致的外觀顯示卡片內部的資訊。{@link
+android.support.v7.widget.CardView} 小工具可以有陰影和圓形邊角。
+</p>
+
+<p>如要建立有陰影的卡片,請使用 <code>card_view:cardElevation</code> 屬性。在 Android 5.0 (API 級別 21) 以及以上版本,{@link android.support.v7.widget.CardView} 使用實際高度和動態陰影,但在較舊的版本上只能有計畫地實作陰影。如需詳細資訊,請參閱<a href="{@docRoot}training/material/compatibility.html">維持相容性</a>。
+
+
+
+</p>
+
+<p>使用下列屬性可自訂 {@link android.support.v7.widget.CardView} 小工具的外觀:
+</p>
+
+<ul>
+  <li>如果要在版面配置中設定圓角的半徑,請使用 <code>card_view:cardCornerRadius</code> 屬性。
+ </li>
+  <li>如果要在程式碼中設定圓角的半徑,請使用 <code>CardView.setRadius</code> 方法。</li>
+  <li>如果要設定卡片的背景顏色,請使用 <code>card_view:cardBackgroundColor</code> 屬性。
+ </li>
+</ul>
+
+<p>下列程式碼範例示範如何在版面配置中加入 {@link android.support.v7.widget.CardView}小工具:
+ </p>
+
+<pre>
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    ... >
+    &lt;!-- A CardView that contains a TextView -->
+    &lt;android.support.v7.widget.CardView
+        xmlns:card_view="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/card_view"
+        android:layout_gravity="center"
+        android:layout_width="200dp"
+        android:layout_height="200dp"
+        card_view:cardCornerRadius="4dp">
+
+        &lt;TextView
+            android:id="@+id/info_text"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
+    &lt;/android.support.v7.widget.CardView>
+&lt;/LinearLayout>
+</pre>
+
+<p>如需詳細資訊,請參閱 {@link android.support.v7.widget.CardView} 的 API 參考資料。</p>
+
+
+<h2 id="Dependencies">新增相依性</h2>
+
+<p>{@link android.support.v7.widget.RecyclerView} 和 {@link android.support.v7.widget.CardView} 小工具都屬於 <a href="{@docRoot}tools/support-library/features.html#v7">v7 支援程式庫</a>。
+
+如要在專案中使用這些小工具,請在應用程式的模組中加入下列 <a href="{@docRoot}sdk/installing/studio-build.html#dependencies">Gradle 相依性</a>:
+
+</p>
+
+<pre>
+dependencies {
+    ...
+    compile 'com.android.support:cardview-v7:21.0.+'
+    compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+</pre>
diff --git a/docs/html-intl/intl/zh-tw/training/material/shadows-clipping.jd b/docs/html-intl/intl/zh-tw/training/material/shadows-clipping.jd
new file mode 100644
index 0000000..d8c996d
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/training/material/shadows-clipping.jd
@@ -0,0 +1,133 @@
+page.title=定義陰影和裁剪視圖
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>本課程示範</h2>
+<ol>
+  <li><a href="#Elevation">指定視圖的高度</a></li>
+  <li><a href="#Shadows">自訂視圖陰影和外框</a></li>
+  <li><a href="#Clip">裁剪視圖</a></li>
+</ol>
+<h2>您也應該閱讀</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">材料設計規格</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android 上的材料設計</a></li>
+</ul>
+</div>
+</div>
+
+<p>材料設計為 UI 元素引入高度的概念。高度有助使用者了解每個元素的相對重要性並將焦點放在手邊的工作上。
+</p>
+
+<p>視圖的高度以 Z 屬性表示,決定其陰影的視覺外觀:視圖的 Z 值越高,投射範圍越大,陰影也就越柔和。
+Z 值較高的視圖會遮住 Z 值較低的視圖。然而,視圖的 Z 值不會影響視圖的大小。
+</p>
+
+<p>陰影是由較高的上層視圖繪製,因此也和標準視圖裁剪一樣,預設由上層視圖裁剪陰影。
+</p>
+
+<p>當小工具在執行某些操作動作而暫時升高到視圖平面的上方時,高度對於建立動畫也非常實用。
+</p>
+
+<p>如需有關材料設計高度的詳細資訊,請參閱 <a href="http://www.google.com/design/spec/what-is-material/objects-in-3d-space.html">3D 空間中的物件</a>。
+
+</p>
+
+
+<h2 id="Elevation">指定視圖的高度</h2>
+
+<p>視圖的 Z 值有兩個部分:
+
+<ul>
+<li>高度:靜態部分。</li>
+<li>解譯:用在動畫的動態部分。</li>
+</ul>
+
+<p><code>Z = elevation + translationZ</code></p>
+
+<img src="{@docRoot}training/material/images/shadows-depth.png" width="580" height="261" alt="" />
+<p class="img-caption"><strong>圖 1</strong> - 不同視圖高度的陰影。</p>
+
+<p>如要在版面配置定義中設定視圖的高度,請使用 <code>android:elevation</code> 屬性。
+如果要在操作行為的程式碼中設定檢視的高度,請使用 {@link android.view.View#setElevation View.setElevation()} 方法。
+</p>
+
+<p>如要在操作行為的程式碼中設定檢視的高度,請使用 {@link android.view.View#setTranslationZ
+View.setTranslationZ()} 方法。</p>
+
+<p>新的 {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} 和 {@link
+android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} 方法可以很輕易地讓視圖高度變得栩栩如生。
+如需詳細資訊,請參閱 {@link android.view.ViewPropertyAnimator}的 API 參考資料和<a href="{@docRoot}guide/topics/graphics/prop-animation.html">屬性動畫開發人員指南</a>。
+
+</p>
+
+<p>您也可以使用 {@link android.animation.StateListAnimator} 以宣告的方式指定這些動畫。
+當狀態變更觸發動畫時, 例如使用者按下按鈕,這會特別實用。
+如需詳細資訊,請參閱<a href="{@docRoot}training/material/animations.html#ViewState">動畫顯示視圖狀態變更</a>。
+</p>
+
+<p>Z 值的測量單位為 dp (密度獨立像素)。</p>
+
+
+<h2 id="Shadows">自訂視圖陰影和外框</h2>
+
+<p>檢視背景可繪項目的邊界決定了視圖陰影的預設形狀。<strong>外框</strong>代表圖形物件的外部形狀,並可定義輕觸回饋的漣漪區域。
+
+</p>
+
+<p>我們來看看這個使用背景可繪項目定義的視圖:</p>
+
+<pre>
+&lt;TextView
+    android:id="@+id/myview"
+    ...
+    android:elevation="2dp"
+    android:background="@drawable/myrect" />
+</pre>
+
+<p>背景可繪項目定義為有圓形邊角的長方形:</p>
+
+<pre>
+&lt;!-- res/drawable/myrect.xml -->
+&lt;shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+    &lt;solid android:color="#42000000" />
+    &lt;corners android:radius="5dp" />
+&lt;/shape>
+</pre>
+
+<p>因為背景可繪項目定義了視圖的外框,所以視圖投射出有圓形邊角的陰影。
+如果提供自訂的外框,則會覆寫視圖陰影的預設形狀。</p>
+
+<p>在程式碼中定義視圖的自訂外框:<p>
+
+<ol>
+<li>延伸 {@link android.view.ViewOutlineProvider} 類別。</li>
+<li>覆寫 {@link android.view.ViewOutlineProvider#getOutline getOutline()} 方法。</li>
+<li>使用 {@link
+android.view.View#setOutlineProvider View.setOutlineProvider()} 方法對您的視圖指定新的外框提供者。</li>
+</ol>
+
+<p>您可以使用 {@link android.graphics.Outline} 類別中的方法,建立橢圓形外框和有圓形邊角的長方形外框。
+視圖的預設外框提供者會從視圖的背景取得外框。
+如果要避免視圖投射出陰影,請將視圖的外框提供者設定為 <code>null</code>。
+</p>
+
+
+<h2 id="Clip">裁剪視圖</h2>
+
+<p>裁剪視圖可以讓您輕鬆地變更視圖的形狀。您可以裁剪視圖,讓視圖與其他設計元素有一致的外觀,或變更視圖的形狀來回應使用者的輸入。您可以使用 {@link android.view.View#setClipToOutline
+View.setClipToOutline()} 方法或 <code>android:clipToOutline</code> 屬性,將視圖裁剪為其外框區域。
+
+根據 {@link android.graphics.Outline#canClip Outline.canClip()} 方法的定義,只有長方形、圓形和圓角長方形的外框才支援裁剪。
+
+</p>
+
+<p>如要將視圖裁剪為可繪項目的形狀,請將可繪項目設定為視圖的背景 (如上所示),然後呼叫 {@link android.view.View#setClipToOutline View.setClipToOutline()} 方法。
+
+</p>
+
+<p>裁剪視圖是一種耗費資源的操作,所以請不要將您用來裁剪視圖的形狀做成動畫。
+如果想要達到這種效果,請使用<a href="{@docRoot}training/material/animations.html#Reveal">顯示效果</a>動畫。</p>
diff --git a/docs/html-intl/intl/zh-tw/training/material/theme.jd b/docs/html-intl/intl/zh-tw/training/material/theme.jd
new file mode 100644
index 0000000..61cd8bd
--- /dev/null
+++ b/docs/html-intl/intl/zh-tw/training/material/theme.jd
@@ -0,0 +1,131 @@
+page.title=使用材料設計風格
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>本課程示範</h2>
+<ol>
+  <li><a href="#ColorPalette">自訂色板</a></li>
+  <li><a href="#StatusBar">自訂狀態列</a></li>
+  <li><a href="#Inheritance">設計風格個別視圖</a></li>
+</ol>
+<h2>您也應該閱讀</h2>
+<ul>
+  <li><a href="http://www.google.com/design/spec">材料設計規格</a></li>
+  <li><a href="{@docRoot}design/material/index.html">Android 上的材料設計</a></li>
+</ul>
+</div>
+</div>
+
+
+<p>新的材料設計風格提供:</p>
+
+<ul>
+  <li>可設定其色板的系統小工具</li>
+  <li>系統小工具的輕觸回饋動畫</li>
+  <li>操作行為轉換動畫</li>
+</ul>
+
+<p>您可根據品牌特性,使用您控制的色板以自訂材料設計風格的外觀。
+您可以使用風格主題屬性,為行為欄和狀態列著色,如<a href="#fig3">圖 3</a> 所示。
+</p>
+
+<p>系統小工具經過全新設計,有輕觸回饋動畫。您可以為應用程式自訂色板、輕觸回饋動畫,以及操作行為轉換。
+</p>
+
+<p>材料設計風格定義為:</p>
+
+<ul>
+  <li><code>@android:style/Theme.Material</code> (深色版本)</li>
+  <li><code>@android:style/Theme.Material.Light</code> (淺色版本)</li>
+  <li><code>@android:style/Theme.Material.Light.DarkActionBar</code></li>
+</ul>
+
+<p>如需您可以使用的材料樣式清單,請參閱 {@link android.R.style R.style} 的 API 參考資料。
+</p>
+
+<!-- two columns, dark/light material theme example -->
+<div style="width:700px;margin-top:25px;margin-bottom:10px">
+<div style="float:left;width:250px;margin-left:40px;margin-right:60px;">
+  <img src="{@docRoot}design/material/images/MaterialDark.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>圖 1</strong>.深色材料設計風格</p>
+  </div>
+</div>
+<div style="float:left;width:250px;margin-right:0px;">
+  <img src="{@docRoot}design/material/images/MaterialLight.png" width="500" height="238">
+  <div style="width:170px;margin:0 auto">
+  <p style="margin-top:8px;font-size:12px"><strong>圖 2</strong>.淺色材料設計風格</p>
+  </div>
+</div>
+<br style="clear:left">
+</div>
+
+<p class="note">
+<strong>注意:</strong>材料設計風格只能在 Android 5.0 (API 級別 21) 及以上版本中使用。
+<a href="{@docRoot}tools/support-library/features.html#v7">v7 支援程式庫</a>針對某些小工具提供使用材料設計樣式的設計風格,並支援自訂色板。
+
+如需詳細資訊,請參閱<a href="{@docRoot}training/material/compatibility.html">維持相容性</a>。
+
+</p>
+
+
+<h2 id="ColorPalette">自訂色板</h2>
+
+<p style="margin-bottom:30px">如要自訂設計風格的基礎顏色來搭配您的品牌,在繼承材料設計風格時,請使用設計風格屬性定義您的自訂顏色:
+</p>
+
+<pre>
+&lt;resources>
+  &lt;!-- inherit from the material theme -->
+  &lt;style name="AppTheme" parent="android:Theme.Material">
+    &lt;!-- Main theme colors -->
+    &lt;!--   your app branding color for the app bar -->
+    &lt;item name="android:colorPrimary">@color/primary&lt;/item>
+    &lt;!--   darker variant for the status bar and contextual app bars -->
+    &lt;item name="android:colorPrimaryDark">@color/primary_dark&lt;/item>
+    &lt;!--   theme UI controls like checkboxes and text fields -->
+    &lt;item name="android:colorAccent">@color/accent&lt;/item>
+  &lt;/style>
+&lt;/resources>
+</pre>
+
+<div style="float:right;margin-left:25px;margin-top:20px;margin-bottom:10px" id="fig3">
+<img src="{@docRoot}training/material/images/ThemeColors.png" width="250" height="445" />
+<p class="img-caption" style="margin-bottom:0px">
+<strong>圖 3.</strong>自訂材料設計風格。</p>
+</div>
+
+
+<h2 id="StatusBar">自訂狀態列</h2>
+
+<p>材料設計風格可讓您輕鬆自訂狀態列,因此,您可指定符合品牌的顏色,並提供足夠的對比來顯示白色的狀態圖示。
+如要設定狀態列的自訂顏色,請在延伸材料設計風格時使用 <code>android:statusBarColor</code> 屬性。
+
+<code>android:statusBarColor</code> 預設會繼承 <code>android:colorPrimaryDark</code> 的值。
+</p>
+
+<p>您也可以自行繪製狀態列。例如,若您想在相片上面顯示透明的狀態列,卻想搭配一點深色的漸層以確保白色的狀態圖示清晰可見。
+
+請將 <code>android:statusBarColor</code> 屬性設定為 <code>&#64;android:color/transparent</code>,並且視需要調整視窗標幟。
+您也可以使用 {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} 方法顯示動畫或進行淡化。
+
+</p>
+
+<p class="note">
+<strong>注意:</strong>狀態列應該與主要工具列有清楚區分的輪廓,除非您想在這些列後面顯示全版的豐富圖像或媒體內容,或使用漸層以確保圖示清晰可見。
+
+
+</p>
+
+<p>當您自訂瀏覽列和狀態列時,請讓兩者都變成透明,或者只修改狀態列。
+在其他所有狀況下,瀏覽列都必須保持黑色。</p>
+
+
+<h2 id="Inheritance">設計風格個別視圖</h3>
+
+<p>XML 版面配置定義中的元素可以指定 <code>android:theme</code> 屬性,參考設計風格資源。
+此屬性會修改元素和所有子元素的設計風格,對於改變介面特定部份的設計風格色板非常實用。
+
+</p>
diff --git a/docs/html/_redirects.yaml b/docs/html/_redirects.yaml
index 5d59130..5ce98ff 100644
--- a/docs/html/_redirects.yaml
+++ b/docs/html/_redirects.yaml
@@ -1,5 +1,5 @@
 # WARNING: THIS FILE IS NOT USED IN PRODUCTION
-# CHANGES MADE HERE **DO NOT EFFECT** developer.android.com
+# CHANGES MADE HERE **DO NOT AFFECT** developer.android.com
 
 # Instead, update the following file in the current docs release branch:
 # <docs-release-branch>/vendor/google/docs/app-engine-server/v3/redirects.yaml
diff --git a/docs/html/about/_book.yaml b/docs/html/about/_book.yaml
new file mode 100644
index 0000000..04150bd
--- /dev/null
+++ b/docs/html/about/_book.yaml
@@ -0,0 +1,49 @@
+toc:
+- title: Marshmallow
+  path: /about/versions/marshmallow/index.html
+  section:
+  - title: Android 6.0 APIs
+    path: /about/versions/marshmallow/android-6.0.html
+  - title: Android 6.0 Changes
+    path: /about/versions/marshmallow/android-6.0-changes.html
+  - title: Android 6.0 Samples
+    path: /about/versions/marshmallow/samples.html
+
+- title: Lollipop
+  path: /about/versions/lollipop.html
+  section:
+  - title: Android 5.1 APIs
+    path: /about/versions/android-5.1.html
+  - title: Android 5.0 APIs
+    path: /about/versions/android-5.0.html
+    custom_link_attributes:
+    - es-lang="API de Android 5.0"
+    - ja-lang="Android 5.0 API"
+    - ko-lang="Android 5.0 API"
+    - ru-lang="API для Android 5.0"
+    - zh-cn-lang="Android 5.0 API"
+    - zh-tw-lang="Android 5.0 API"
+  - title: Android 5.0 Changes
+    path: /about/versions/android-5.0-changes.html
+
+- title: KitKat
+  path: /about/versions/kitkat.html
+  section:
+  - title: Android 4.4 APIs
+    path: /about/versions/android-4.4.html
+
+- title: Jelly Bean
+  path: /about/versions/jelly-bean.html
+  section:
+  - title: Android 4.3 APIs
+    path: /about/versions/android-4.3.html
+  - title: Android 4.2 APIs
+    path: /about/versions/android-4.2.html
+  - title: Android 4.1 APIs
+    path: /about/versions/android-4.1.html
+
+- title: About Android
+  path: /about/android.html
+
+- title: Dashboards
+  path: /about/dashboards/index.html
diff --git a/docs/html/about/about_toc.cs b/docs/html/about/about_toc.cs
index 45e8eb3..a456012 100644
--- a/docs/html/about/about_toc.cs
+++ b/docs/html/about/about_toc.cs
@@ -1,5 +1,16 @@
 <ul id="nav">
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="<?cs var:toroot ?>about/versions/marshmallow/index.html">
+      <span class="en">Marshmallow</span></a></div>
+      <ul>
+        <li><a href="<?cs var:toroot ?>about/versions/marshmallow/android-6.0.html">
+        Android 6.0 APIs</a></li>
+        <li><a href="<?cs var:toroot ?>about/versions/marshmallow/android-6.0-changes.html">
+        Android 6.0 Changes</a></li>
+        <li><a href="<?cs var:toroot ?>about/versions/marshmallow/samples.html">
+        Android 6.0 Samples</a></li>
+      </ul>
+  </li>
   <li class="nav-section">
     <div class="nav-section-header"><a href="<?cs var:toroot ?>about/versions/lollipop.html"
               zh-tw-lang="Lollipop"
diff --git a/docs/html/about/android.jd b/docs/html/about/android.jd
index ad0ea7c..e3b6958 100644
--- a/docs/html/about/android.jd
+++ b/docs/html/about/android.jd
@@ -26,7 +26,7 @@
 <blockquote>Every day more than a million new Android devices are activated worldwide.</blockquote>
 
 <p>Android’s openness has made it a favorite for consumers and developers alike,
-driving strong growth in app consumption. Android users download more than 
+driving strong growth in app consumption. Android users download 
 billions of apps and games from Google Play each month. </p>
 
 <p>With its partners, Android is continuously pushing the boundaries of hardware and software
@@ -76,7 +76,7 @@
 packaging Android apps. Using the IDE, you can develop on any available Android
 device or create virtual devices that emulate any hardware configuration.</p>
 
-<blockquote>1.5 billion downloads a month and growing. Get your apps in front
+<blockquote>Billion downloads a month and growing. Get your apps in front
 of millions of users at Google's scale.</blockquote>
 
 <h3>Open marketplace for distributing your apps</h3>
@@ -107,5 +107,5 @@
 the best apps promotional slots in curated collections.
 </p>
 
-<p>Preinstalled on hundreds of billions of Android devices around the world,
+<p>Preinstalled on billions of Android devices around the world,
 Google Play can be a growth engine for your business.</p>
\ No newline at end of file
diff --git a/docs/html/about/dashboards/index.jd b/docs/html/about/dashboards/index.jd
index ff6b681..f0e1a3c 100644
--- a/docs/html/about/dashboards/index.jd
+++ b/docs/html/about/dashboards/index.jd
@@ -1,7 +1,9 @@
 page.title=Dashboards
-page.metaDescription=page.metaDescription=Charts that give you an overview of device characteristics and platform versions that are active in the Android ecosystem.
+page.metaDescription=page.metaDescription=An overview of device characteristics and platform versions that are active in the Android ecosystem.
 page.tags="android, dashboard, platforms, versions"
-meta.tags="ecosystem, versions, whatsnew"
+meta.tags="ecosystem, versions, whatsnew, dashboards"
+page.image=https://chart.googleapis.com/chart?chl=GL%202.0%7CGL%203.0%7CGL%203.1&chf=bg%2Cs%2C00000000&chd=t%3A51.6%2C40.7%2C7.7&chco=c4df9b%2C6fad0c&cht=p&chs=400x250
+
 @jd:body
 
 <style>
@@ -57,7 +59,7 @@
 </div>
 
 
-<p style="clear:both"><em>Data collected during a 7-day period ending on August 3, 2015.
+<p style="clear:both"><em>Data collected during a 7-day period ending on April 4, 2016.
 <br/>Any versions with less than 0.1% distribution are not shown.</em>
 </p>
 
@@ -88,7 +90,7 @@
 </div>
 
 
-<p style="clear:both"><em>Data collected during a 7-day period ending on August 3, 2015.
+<p style="clear:both"><em>Data collected during a 7-day period ending on April 4, 2016.
 
 <br/>Any screen configurations with less than 0.1% distribution are not shown.</em></p>
 
@@ -108,7 +110,7 @@
 
 
 <img alt="" style="float:right"
-src="//chart.googleapis.com/chart?chl=GL%202.0%7CGL%203.0%7CGL%203.1&chf=bg%2Cs%2C00000000&chd=t%3A59.8%2C36.8%2C3.4&chco=c4df9b%2C6fad0c&cht=p&chs=400x250">
+src="//chart.googleapis.com/chart?chl=GL%202.0%7CGL%203.0%7CGL%203.1&chf=bg%2Cs%2C00000000&chd=t%3A50.9%2C40.7%2C8.4&chco=c4df9b%2C6fad0c&cht=p&chs=400x250">
 
 <p>To declare which version of OpenGL ES your application requires, you should use the {@code
 android:glEsVersion} attribute of the <a
@@ -126,21 +128,21 @@
 </tr>
 <tr>
 <td>2.0</td>
-<td>59.8%</td>
+<td>50.9%</td>
 </tr>
 <tr>
 <td>3.0</td>
-<td>36.8%</td>
+<td>40.7%</td>
 </tr>
 <tr>
 <td>3.1</td>
-<td>3.4%</td>
+<td>8.4%</td>
 </tr>
 </table>
 
 
 
-<p style="clear:both"><em>Data collected during a 7-day period ending on August 3, 2015</em></p>
+<p style="clear:both"><em>Data collected during a 7-day period ending on April 4, 2016</em></p>
 
 
 
@@ -152,30 +154,30 @@
   {
     "data": {
       "Large": {
-        "hdpi": "0.6",
+        "hdpi": "0.5",
         "ldpi": "0.3",
-        "mdpi": "4.9",
-        "tvdpi": "2.3",
-        "xhdpi": "0.6"
+        "mdpi": "4.6",
+        "tvdpi": "2.2",
+        "xhdpi": "0.5"
       },
       "Normal": {
-        "hdpi": "40.6",
-        "mdpi": "6.9",
+        "hdpi": "41.5",
+        "mdpi": "4.9",
         "tvdpi": "0.1",
-        "xhdpi": "20.4",
-        "xxhdpi": "15.8"
+        "xhdpi": "23.9",
+        "xxhdpi": "14.9"
       },
       "Small": {
-        "ldpi": "3.6"
+        "ldpi": "2.4"
       },
       "Xlarge": {
         "hdpi": "0.3",
-        "mdpi": "3.0",
-        "xhdpi": "0.6"
+        "mdpi": "3.2",
+        "xhdpi": "0.7"
       }
     },
-    "densitychart": "//chart.googleapis.com/chart?chs=400x250&cht=p&chco=c4df9b%2C6fad0c&chf=bg%2Cs%2C00000000&chd=t%3A3.9%2C14.8%2C2.4%2C41.5%2C21.6%2C15.8&chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi",
-    "layoutchart": "//chart.googleapis.com/chart?chs=400x250&cht=p&chco=c4df9b%2C6fad0c&chf=bg%2Cs%2C00000000&chd=t%3A3.9%2C8.7%2C83.8%2C3.6&chl=Xlarge%7CLarge%7CNormal%7CSmall"
+    "densitychart": "//chart.googleapis.com/chart?chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi&chd=t%3A2.7%2C12.7%2C2.3%2C42.3%2C25.1%2C14.9&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=400x250",
+    "layoutchart": "//chart.googleapis.com/chart?chl=Xlarge%7CLarge%7CNormal%7CSmall&chd=t%3A4.2%2C8.1%2C85.3%2C2.4&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=400x250"
   }
 ];
 
@@ -183,52 +185,57 @@
 var VERSION_DATA =
 [
   {
-    "chart": "//chart.googleapis.com/chart?chs=500x250&cht=p&chco=c4df9b%2C6fad0c&chf=bg%2Cs%2C00000000&chd=t%3A0.3%2C4.6%2C4.1%2C33.6%2C39.3%2C18.1&chl=Froyo%7CGingerbread%7CIce%20Cream%20Sandwich%7CJelly%20Bean%7CKitKat%7CLollipop",
+    "chart": "//chart.googleapis.com/chart?chl=Froyo%7CGingerbread%7CIce%20Cream%20Sandwich%7CJelly%20Bean%7CKitKat%7CLollipop%7CMarshmallow&chd=t%3A0.1%2C2.6%2C2.2%2C21.3%2C33.4%2C35.8%2C4.6&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=500x250",
     "data": [
       {
         "api": 8,
         "name": "Froyo",
-        "perc": "0.3"
+        "perc": "0.1"
       },
       {
         "api": 10,
         "name": "Gingerbread",
-        "perc": "4.6"
+        "perc": "2.6"
       },
       {
         "api": 15,
         "name": "Ice Cream Sandwich",
-        "perc": "4.1"
+        "perc": "2.2"
       },
       {
         "api": 16,
         "name": "Jelly Bean",
-        "perc": "13.0"
+        "perc": "7.8"
       },
       {
         "api": 17,
         "name": "Jelly Bean",
-        "perc": "15.9"
+        "perc": "10.5"
       },
       {
         "api": 18,
         "name": "Jelly Bean",
-        "perc": "4.7"
+        "perc": "3.0"
       },
       {
         "api": 19,
         "name": "KitKat",
-        "perc": "39.3"
+        "perc": "33.4"
       },
       {
         "api": 21,
         "name": "Lollipop",
-        "perc": "15.5"
+        "perc": "16.4"
       },
       {
         "api": 22,
         "name": "Lollipop",
-        "perc": "2.6"
+        "perc": "19.4"
+      },
+      {
+        "api": 23,
+        "name": "Marshmallow",
+        "perc": "4.6"
       }
     ]
   }
@@ -316,27 +323,16 @@
     "api":22,
     "link":"<a href='/about/versions/android-5.1.html'>5.1</a>",
     "codename":"Lollipop"
+  },
+  {
+    "api":23,
+    "link":"<a href='/about/versions/marshmallow/index.html'>6.0</a>",
+    "codename":"Marshmallow"
   }
 ];
 
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
 $(document).ready(function(){
   // for each set of data (each month)
   $.each(VERSION_DATA, function(i, set) {
diff --git a/docs/html/about/index.jd b/docs/html/about/index.jd
index 215fc3c..22f504e 100644
--- a/docs/html/about/index.jd
+++ b/docs/html/about/index.jd
@@ -119,40 +119,4 @@
 <p>Preinstalled on hundreds of millions of Android devices around the world,
 Google Play can be a growth engine for your business.</p>
 
-<p><a class="landing-page-link" href="{@docRoot}about/start.html">GET STARTED</a></p>
-
-<div style="background: #F0F0F0;
-            border-top: 1px solid #DDD;
-            padding: 20px 0 24px 0;
-            overflow: auto;
-            clear:both;
-            margin-bottom:-10px;
-            margin-top:60px;"">
-   <div style="padding:0 0 0 29px;">
-        <h4>Developer Story: Robot Invader</h4>
-          <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
-            -moz-border-radius: 5px;
-            border-radius: 5px height:78px;
-            width: 78px;
-            float: left;
-            margin: 17px 20px 9px 0;" src=
-            "//g0.gstatic.com/android/market/com.robotinvader.knightmare/hi-256-0-9e08d83bc8d01649e167131d197ada1cd1783fb0">
-          <div style="width:700px;">
-          <p style="margin-top:26px;margin-bottom:12px;">Robot Invader chose 
-              Android as the launch platform for their first game, 
-              <a data-g-event="Developers Page" data-g-label="Case Study Link" href=
-              "//play.google.com/store/apps/details?id=com.robotinvader.knightmare"><em>Wind-up
-              Knight</em></a>.
-           </p>
-           <p>
-              Hear from the developers themselves how Android helped them reach more
-              than 100 devices with a single app binary, then iterate rapidly to ensure
-              a great experience for users.
-           </p>
-           </div>
-           <iframe style="float:left;
-             margin-right:24px;
-             margin-top:14px;" width="700" height="394" src=
-             "http://www.youtube.com/embed/hTtlLiUTowY" frameborder="0" allowfullscreen></iframe>
-   </div> 
-</div>
\ No newline at end of file
+<p><a class="landing-page-link" href="{@docRoot}about/start.html">GET STARTED</a></p>
\ No newline at end of file
diff --git a/docs/html/about/versions/android-1.5.jd b/docs/html/about/versions/android-1.5.jd
index ca8771b..522f855 100644
--- a/docs/html/about/versions/android-1.5.jd
+++ b/docs/html/about/versions/android-1.5.jd
@@ -80,12 +80,12 @@
     //$(".toggleme", toggleable).slideDown("fast");
     toggleable.removeClass("closed");
     toggleable.addClass("open");
-    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/triangle-opened.png"));
+    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/styles/disclosure_up.png"));
   } else {
     //$(".toggleme", toggleable).slideUp("fast");
     toggleable.removeClass("open");
     toggleable.addClass("closed");
-    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/triangle-closed.png"));
+    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/styles/disclosure_down.png"));
   }
   return false;
 }
@@ -115,7 +115,7 @@
 
 <div class="toggleable opened">
   <a href="#" onclick="return toggleDiv(this)">
-        <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px" />
+        <img src="{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-img" height="9px" width="9px" />
         Android 1.5, Revision 4</a> <em>(May 2010)</em></a>
   <div class="toggleme">
 <dl>
@@ -138,7 +138,7 @@
 
 <div class="toggleable closed">
   <a href="#" onclick="return toggleDiv(this)">
-        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
+        <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-img" height="9px" width="9px" />
         Android 1.5, Revision 3</a> <em>(July 2009)</em></a>
   <div class="toggleme">
 <dl>
@@ -152,7 +152,7 @@
 
 <div class="toggleable closed">
   <a href="#" onclick="return toggleDiv(this)">
-        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
+        <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-img" height="9px" width="9px" />
         Android 1.5, Revision 2</a> <em>(May 2009)</em></a>
   <div class="toggleme">
 <p>Not available as an SDK component &mdash; please use Android 1.5, r3 instead. </p>
@@ -161,7 +161,7 @@
 
 <div class="toggleable closed">
   <a href="#" onclick="return toggleDiv(this)">
-        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
+        <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-img" height="9px" width="9px" />
         Android 1.5, Revision 1</a> <em>(April 2009)</em></a>
   <div class="toggleme">
 <p>Not available as an SDK component &mdash; please use Android 1.5, r3 instead. </p>
diff --git a/docs/html/about/versions/android-1.6.jd b/docs/html/about/versions/android-1.6.jd
old mode 100644
new mode 100755
index e727f55..dc30b49
--- a/docs/html/about/versions/android-1.6.jd
+++ b/docs/html/about/versions/android-1.6.jd
@@ -63,7 +63,7 @@
 <h2 id="features">Platform Highlights</h2>
 
 <p>For a list of new user features and platform highlights, see the <a
-href="http://developer.android.com/about/versions/android-{@sdkPlatformVersion}-highlights.html">Android 
+href="http://developer.android.com/about/versions/android-{@sdkPlatformVersion}-highlights.html">Android
 {@sdkPlatformVersion} Platform Highlights</a> document.</p>
 
 
@@ -82,12 +82,12 @@
     //$(".toggleme", toggleable).slideDown("fast");
     toggleable.removeClass("closed");
     toggleable.addClass("open");
-    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/triangle-opened.png"));
+    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/styles/disclosure_up.png"));
   } else {
     //$(".toggleme", toggleable).slideUp("fast");
     toggleable.removeClass("open");
     toggleable.addClass("closed");
-    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/triangle-closed.png"));
+    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/styles/disclosure_down.png"));
   }
   return false;
 }
@@ -117,7 +117,7 @@
 
 <div class="toggleable opened">
   <a href="#" onclick="return toggleDiv(this)">
-        <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px" />
+        <img src="{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-img" height="9px" width="9px" />
         Android 1.6, Revision 3</a> <em>(May 2010)</em></a>
   <div class="toggleme">
 <dl>
@@ -125,11 +125,11 @@
 <dd>
 <p>Requires SDK Tools r6 or higher.</p>
 </dd>
-<dt>Tools:</dt> 
+<dt>Tools:</dt>
 <dd>
-<ul> 
+<ul>
 <li>Adds support for library projects in the Ant build system.</li>
-</ul> 
+</ul>
 </dd>
 </dl>
  </div>
@@ -137,7 +137,7 @@
 
 <div class="toggleable closed">
   <a href="#" onclick="return toggleDiv(this)">
-        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
+        <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-img" height="9px" width="9px" />
         Android 1.6, Revision 2</a> <em>(December 2009)</em></a>
   <div class="toggleme">
 <dl>
@@ -146,33 +146,33 @@
 <p>Requires SDK Tools r4 or higher.</p>
 </dd>
 
-<dt>API related:</dt> 
+<dt>API related:</dt>
 <dd>
-<ul> 
+<ul>
 <li>Properly exposes CDMA-related constants in <code><a href="{@docRoot}reference/android/telephony/TelephonyManager.html">android.telephony.TelephonyManager</a></code>: <code>DATA_ACTIVITY_DORMANT</code>,
 <code>PHONE_TYPE_CDMA</code>, <code>NETWORK_TYPE_CDMA</code>,
 <code>NETWORK_TYPE_EVDO_0</code>, <code>NETWORK_TYPE_EVDO_A</code>, and
-<code>NETWORK_TYPE_1xRTT</code>.</li> 
-</ul> 
+<code>NETWORK_TYPE_1xRTT</code>.</li>
+</ul>
 </dd>
-<dt>System image:</dt> 
+<dt>System image:</dt>
 <dd>
-<ul> 
-<li>Fixes bug so that Bitmap's density is now propagated through Parcelable.</li> 
-<li>Fixes NinePatchDrawable to properly scale its reported padding for compatibility mode.</li> 
-<li>Fixes TextView to properly compute styled font metrics based on the screen density.</li> 
+<ul>
+<li>Fixes bug so that Bitmap's density is now propagated through Parcelable.</li>
+<li>Fixes NinePatchDrawable to properly scale its reported padding for compatibility mode.</li>
+<li>Fixes TextView to properly compute styled font metrics based on the screen density.</li>
 <li>Updates kernel to 2.6.29, to match kernel on commercially
-available Android-powered devices.</li> 
-</ul> 
+available Android-powered devices.</li>
+</ul>
 </dd>
-<dt>Tools:</dt> 
+<dt>Tools:</dt>
 <dd>
-<ul> 
+<ul>
 <li>Adds new Ant build system with support for Emma instrumentation projects
-(code coverage).</li> 
-<li>Fixes emulator skins to properly emulate d-pad in landscape mode.</li> 
-<li>Fixes density rendering in the layout editor in ADT.</li> 
-</ul> 
+(code coverage).</li>
+<li>Fixes emulator skins to properly emulate d-pad in landscape mode.</li>
+<li>Fixes density rendering in the layout editor in ADT.</li>
+</ul>
 </dd>
 </dl>
  </div>
@@ -180,7 +180,7 @@
 
 <div class="toggleable closed">
   <a href="#" onclick="return toggleDiv(this)">
-        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
+        <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-img" height="9px" width="9px" />
         Android 1.6, Revision 1</a> <em>(September 2009)</em></a>
   <div class="toggleme">
 <dl>
@@ -227,8 +227,8 @@
           <li><code>OvershootInterpolator</code></li>
         </ul>
       </li>
-      <li>New XML attribute <code>android:onClick</code> to specify a View's 
-<a href="/reference/android/view/View.OnClickListener.html">View.OnClickListener</a> 
+      <li>New XML attribute <code>android:onClick</code> to specify a View's
+<a href="/reference/android/view/View.OnClickListener.html">View.OnClickListener</a>
 from a layout file.
       </li>
       <li>New support for dealing with varying screen densities. Density
@@ -236,8 +236,8 @@
 correct scaling. The framework will automatically scale bitmaps and
 nine-patches based on the density the resource was found under and the
 density of the screen, etc.
-      </li><p>To use APIs introduced in Android {@sdkPlatformVersion} in your application, you need to 
-set the proper value, "{@sdkPlatformApiLevel}", in the attributes of the <code>&lt;uses-sdk&gt;</code> 
+      </li><p>To use APIs introduced in Android {@sdkPlatformVersion} in your application, you need to
+set the proper value, "{@sdkPlatformApiLevel}", in the attributes of the <code>&lt;uses-sdk&gt;</code>
 element in your application's manifest. </p>
     </ul>
 
@@ -295,33 +295,33 @@
 <h3 id="AndroidManifest">Android Manifest elements</h3>
 
     <ul>
-      <li>New <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">{@code 
-      <supports-screens>}</a> element lets you specify the device screen sizes that your
+      <li>New <a href="{@docRoot}guide/topics/manifest/supports-screens-element.html">{@code
+      &lt;supports-screens>}</a> element lets you specify the device screen sizes that your
       application is designed and tested to support, where "size" is a combination
-      of resolution and density. If your application is run on a device whose screen 
-      size is not specified in the <code>&lt;supports-screen&gt;</code> element, the system 
+      of resolution and density. If your application is run on a device whose screen
+      size is not specified in the <code>&lt;supports-screen&gt;</code> element, the system
       displays the application in <em>compatibility mode</em>, which performs best-effort scaling
-      of the application UI to match the resolution and density of the screen. 
+      of the application UI to match the resolution and density of the screen.
 
     <p>The attributes available for defining an application's screen support are:
 
         <ul>
 
           <li><code>smallScreen</code>: Boolean value that indicates whether the
-            application is designed to run on devices with small screens. 
+            application is designed to run on devices with small screens.
             Examples: QVGA low density; VGA high density.
           </li>
-          <li><code>normalScreens</code>: Boolean value that indicates whether 
-            the application is designed to run on devices with normal screens. 
+          <li><code>normalScreens</code>: Boolean value that indicates whether
+            the application is designed to run on devices with normal screens.
             Examples: WQVGA low density; HVGA medium density; WVGA high density.
           </li>
-          <li><code>largeScreens</code>: Boolean value that indicates whether 
-            the application is designed to run on devices with significantly 
+          <li><code>largeScreens</code>: Boolean value that indicates whether
+            the application is designed to run on devices with significantly
             larger screens, such that special care may be required on
-            the application's part to make proper use of the screen area. 
+            the application's part to make proper use of the screen area.
             Examples: VGA medium density; WVGA medium density.
           </li>
-          <li><code>anyDensity</code>: Boolean value that indicates whether 
+          <li><code>anyDensity</code>: Boolean value that indicates whether
             the application can accommodate any screen density.
           </li>
           <li><code>resizable</code>: Boolean value that indicates whether
@@ -331,28 +331,28 @@
     </p>
     </li>
 
-      <li>New <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code <uses-feature>}</a>
+      <li>New <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code &lt;uses-feature>}</a>
         element lets an application specify hardware (or other)
         features that it requires to function normally. When an application
         specifies such features, the system allows the application to be installed only
         on devices that offer the required features. The element supports these
         attributes:
         <ul>
-          <li><code>name</code>: The name of the feature required by the application. Currently accepts 
-          "android.hardware.camera" and "android.hardware.camera.autofocus" values, which specify that a 
+          <li><code>name</code>: The name of the feature required by the application. Currently accepts
+          "android.hardware.camera" and "android.hardware.camera.autofocus" values, which specify that a
           camera and camera autofocus are required, respectively.</li>
           <li><code>glEsVersion</code>: Indicates the minimum version of OpenGL ES required.</li>
         </ul>
       </li>
-      <li>New attributes for the 
-      <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">{@code <uses-sdk>}</a> element:
+      <li>New attributes for the
+      <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">{@code &lt;uses-sdk>}</a> element:
         <ul>
-          <li><code>targetSdkVersion</code>: Indicates the API Level that the application is targeting. 
-          It is able to run on older versions (down to minSdkVersion), but was explicitly tested to 
-          work with the version specified here. Specifying this version allows the platform to 
-          disable compatibility code that is not required or enable newer features that are not 
+          <li><code>targetSdkVersion</code>: Indicates the API Level that the application is targeting.
+          It is able to run on older versions (down to minSdkVersion), but was explicitly tested to
+          work with the version specified here. Specifying this version allows the platform to
+          disable compatibility code that is not required or enable newer features that are not
           available to older applications. </li>
-          <li><code>maxSdkVersion</code>: Indicates the maximum API Level on which an application is 
+          <li><code>maxSdkVersion</code>: Indicates the maximum API Level on which an application is
           designed to run. <strong>Important:</strong> Please read the <a
           href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
           documentation before using this attribute. </li>
@@ -366,13 +366,13 @@
 
     <ul>
       <li>{@link android.Manifest.permission#CHANGE_WIFI_MULTICAST_STATE
-          CHANGE_WIFI_MULTICAST_STATE}: Allows applications to enter Wi-Fi 
+          CHANGE_WIFI_MULTICAST_STATE}: Allows applications to enter Wi-Fi
           Multicast mode.
       </li>
-      <li>{@link android.Manifest.permission#GLOBAL_SEARCH}: Allows the 
+      <li>{@link android.Manifest.permission#GLOBAL_SEARCH}: Allows the
           global search system to access the data of a specified content provider.
-      </li> 
-      <li>{@link android.Manifest.permission#INSTALL_LOCATION_PROVIDER INSTALL_LOCATION_PROVIDER}: 
+      </li>
+      <li>{@link android.Manifest.permission#INSTALL_LOCATION_PROVIDER INSTALL_LOCATION_PROVIDER}:
           Allows an application to install a location provider into the Location Manager.
       </li>
       <li>READ_HISTORY_BOOKMARKS:
@@ -380,13 +380,13 @@
           and bookmarks.
       </li>
       <li>WRITE_HISTORY_BOOKMARKS:
-          Allows an application to write (but not read) the user's browsing history 
+          Allows an application to write (but not read) the user's browsing history
           and bookmarks.
       </li>
-      <li>{@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE}: 
+      <li>{@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE}:
           Allows an application to write to external storage. Applications using API Level 3
-          and lower will be implicitly granted this permission (and this will be visible to 
-          the user); Applications using API Level 4 or higher must explicitly request this 
+          and lower will be implicitly granted this permission (and this will be visible to
+          the user); Applications using API Level 4 or higher must explicitly request this
           permission.
       </li>
     </ul>
@@ -394,8 +394,8 @@
 
 <h3 id="api-diff">API differences report</h3>
 
-<p>For a detailed view of API changes in Android {@sdkPlatformVersion} (API Level {@sdkPlatformApiLevel}), as compared to 
-the previous version, see the <a href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API 
+<p>For a detailed view of API changes in Android {@sdkPlatformVersion} (API Level {@sdkPlatformApiLevel}), as compared to
+the previous version, see the <a href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
 Differences Report</a>.</p>
 
 <h2 id="apps">Built-in Applications</h2>
@@ -438,8 +438,8 @@
 <p>The system image included in the downloadable platform provides a variety of
 built-in locales. In some cases, region-specific strings are available for the
 locales. In other cases, a default version of the language is used. The
-languages that are available in the Android {@sdkPlatformVersion} system 
-image are listed below (with <em>language</em>_<em>country/region</em> 
+languages that are available in the Android {@sdkPlatformVersion} system
+image are listed below (with <em>language</em>_<em>country/region</em>
 locale descriptor).</p>
 
 <table style="border:0;margin-bottom:0;padding-bottom:0;">
@@ -479,13 +479,13 @@
 </tr>
 </table>
 
-<p>Localized UI strings match the locales that are accessible 
+<p>Localized UI strings match the locales that are accessible
 through Settings.</p>
 
 <h2 id="skins">Emulator Skins</h2>
 
-<p>The downloadable platform includes a set of emulator skins that you can 
-use for modeling your application in different screen sizes and resolutions. 
+<p>The downloadable platform includes a set of emulator skins that you can
+use for modeling your application in different screen sizes and resolutions.
 The emulator skins are: </p>
 
 <ul>
diff --git a/docs/html/about/versions/android-2.0.1.jd b/docs/html/about/versions/android-2.0.1.jd
index ba00231..2974152 100644
--- a/docs/html/about/versions/android-2.0.1.jd
+++ b/docs/html/about/versions/android-2.0.1.jd
@@ -82,12 +82,12 @@
     //$(".toggleme", toggleable).slideDown("fast");
     toggleable.removeClass("closed");
     toggleable.addClass("open");
-    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/triangle-opened.png"));
+    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/styles/disclosure_up.png"));
   } else {
     //$(".toggleme", toggleable).slideUp("fast");
     toggleable.removeClass("open");
     toggleable.addClass("closed");
-    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/triangle-closed.png"));
+    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/styles/disclosure_down.png"));
   }
   return false;
 }
@@ -113,7 +113,7 @@
 
 <div class="toggleable closed">
   <a href="#" onclick="return toggleDiv(this)">
-        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
+        <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-img" height="9px" width="9px" />
         Android 2.0.1, Revision 1</a> <em>(December 2009)</em></a>
   <div class="toggleme">
 <dl>
diff --git a/docs/html/about/versions/android-2.0.jd b/docs/html/about/versions/android-2.0.jd
index 82bb78f..5c0d3dc 100644
--- a/docs/html/about/versions/android-2.0.jd
+++ b/docs/html/about/versions/android-2.0.jd
@@ -75,12 +75,12 @@
     //$(".toggleme", toggleable).slideDown("fast");
     toggleable.removeClass("closed");
     toggleable.addClass("open");
-    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/triangle-opened.png"));
+    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/styles/disclosure_up.png"));
   } else {
     //$(".toggleme", toggleable).slideUp("fast");
     toggleable.removeClass("open");
     toggleable.addClass("closed");
-    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/triangle-closed.png"));
+    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/styles/disclosure_down.png"));
   }
   return false;
 }
@@ -106,7 +106,7 @@
 
 <div class="toggleable opened">
   <a href="#" onclick="return toggleDiv(this)">
-        <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px" />
+        <img src="{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-img" height="9px" width="9px" />
         Android 2.0, Revision 1</a> <em>(October 2009)</em></a>
   <div class="toggleme">
 <dl>
diff --git a/docs/html/about/versions/android-2.1.jd b/docs/html/about/versions/android-2.1.jd
index 2d5988a..02dec7e 100644
--- a/docs/html/about/versions/android-2.1.jd
+++ b/docs/html/about/versions/android-2.1.jd
@@ -78,7 +78,7 @@
 <div class="toggle-content opened" style="padding-left:1em;">
 
 <p><a href="#" onclick="return toggleContent(this)">
-  <img src="{@docRoot}assets/images/triangle-opened.png"
+  <img src="{@docRoot}assets/images/styles/disclosure_up.png"
 class="toggle-content-img" alt="" />
   Android {@sdkPlatformVersion}, Revision 3</a> <em>(July 2011)</em>
 </a></p>
@@ -106,7 +106,7 @@
 <div class="toggle-content closed" style="padding-left:1em;">
 
 <p><a href="#" onclick="return toggleContent(this)">
-  <img src="{@docRoot}assets/images/triangle-closed.png"
+  <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />
   Android {@sdkPlatformVersion}, Revision 2</a> <em>(May 2010)</em>
 </a></p>
@@ -133,7 +133,7 @@
 <div class="toggle-content closed" style="padding-left:1em;">
 
 <p><a href="#" onclick="return toggleContent(this)">
-  <img src="{@docRoot}assets/images/triangle-closed.png"
+  <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />
   Android {@sdkPlatformVersion}, Revision 1</a> <em>(January 2010)</em>
 </a></p>
diff --git a/docs/html/about/versions/android-4.0-highlights.jd b/docs/html/about/versions/android-4.0-highlights.jd
old mode 100644
new mode 100755
index f2b35ac..c980af6
--- a/docs/html/about/versions/android-4.0-highlights.jd
+++ b/docs/html/about/versions/android-4.0-highlights.jd
@@ -143,7 +143,7 @@
 favorites tray</strong></p>
 
 <p>New home screen <strong>folders</strong> offer a new way for users to group
-their apps and shortcuts logically, just by dragging one onto another. Also, 
+their apps and shortcuts logically, just by dragging one onto another. Also,
 in All Apps launcher, users can now simply <strong>drag an app</strong> to get
 information about it or immediately uninstall it, or disable a pre-installed app.</p>
 
@@ -210,7 +210,7 @@
 
 <p style="margin-top:1em;margin-bottom:.75em;"><strong>Improved text input and
 spell-checking</strong></p>
-  
+
 <p>The soft keyboard in Android 4.0 makes text input even faster and more
 accurate. Error correction and word suggestion are improved through a new set of
 default dictionaries and more accurate heuristics for handling cases such as
@@ -693,7 +693,7 @@
 <h3 id="communication-dev">Communication and sharing</h3>
 
 <p>Android 4.0 extends social and sharing features to any application on the
-device. Applications can integrate contacts, profile data, stream items, 
+device. Applications can integrate contacts, profile data, stream items,
 and calendar events from any of the user’s activities or social networks.</p>
 
 
@@ -914,8 +914,8 @@
 Because hierarchies are flatter, developers can also manage alignments between
 components that are visually related to each other even when they are not
 logically related, for precise control over application UI. GridLayout is also
-specifically designed to be configured by drag-and-drop design tools such as the
-ADT Plug-in for Eclipse.</p>
+specifically designed to be configured by drag-and-drop design tools such as
+Android Studio.</p>
 
 
 <p style="margin-top:1em;margin-bottom:.75em;"><strong>OpenGL ES texture
@@ -998,7 +998,7 @@
 screen position, and more. Applications can also request changes to certain
 properties to help manage focus and selected state. For example, an
 accessibility service could use these new capabilities to add convenient
-features such as screen-search by text. </p> 
+features such as screen-search by text. </p>
 
 
 <p style="margin-top:1em;margin-bottom:.75em;"><strong>Text-to-speech
diff --git a/docs/html/about/versions/android-4.0.3.jd b/docs/html/about/versions/android-4.0.3.jd
index fef9ce1..3be684d 100644
--- a/docs/html/about/versions/android-4.0.3.jd
+++ b/docs/html/about/versions/android-4.0.3.jd
@@ -45,7 +45,7 @@
 <div class="toggle-content closed">
 
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" /><strong>Table of Contents</strong>
   </a></p>
 
@@ -264,7 +264,7 @@
 {@link android.media.CamcorderProfile#QUALITY_TIME_LAPSE_QVGA} constants.</li>
 
 <li>New methods {@link android.hardware.Camera.Parameters#setVideoStabilization(boolean) setVideoStabilization()},
-{@link android.hardware.Camera.Parameters#getVideoStabilization() setVideoStabilization()}, and {@link android.hardware.Camera.Parameters#isVideoStabilizationSupported() isVideoStabilizationSupported()}
+{@link android.hardware.Camera.Parameters#getVideoStabilization() getVideoStabilization()}, and {@link android.hardware.Camera.Parameters#isVideoStabilizationSupported() isVideoStabilizationSupported()}
 let you check and manage video stabilization for a {@link android.hardware.Camera}.</li>
 </ul>
 
diff --git a/docs/html/about/versions/android-4.0.jd b/docs/html/about/versions/android-4.0.jd
index 1b103b7..4318582 100644
--- a/docs/html/about/versions/android-4.0.jd
+++ b/docs/html/about/versions/android-4.0.jd
@@ -49,7 +49,7 @@
 <div class="toggle-content closed">
 
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />
     <strong>Table of Contents</strong>
   </a></p>
diff --git a/docs/html/about/versions/android-4.2.jd b/docs/html/about/versions/android-4.2.jd
old mode 100644
new mode 100755
index f903156..c26d4a2
--- a/docs/html/about/versions/android-4.2.jd
+++ b/docs/html/about/versions/android-4.2.jd
@@ -549,7 +549,7 @@
 </dl>
 
 <p class="note"><strong>Note:</strong> Although Filterscript support is in the platform, developer
-support will be available in ADT and SDK Tools Release 21.0.1. </p>
+support will be available in SDK Tools Release 21.0.1. </p>
 
 
 <p>For a detailed view of all API changes in Android 4.2, see the
diff --git a/docs/html/about/versions/android-4.4.jd b/docs/html/about/versions/android-4.4.jd
index 0d58a1d..b898fe3 100644
--- a/docs/html/about/versions/android-4.4.jd
+++ b/docs/html/about/versions/android-4.4.jd
@@ -149,7 +149,7 @@
 <p>Your app might behave differently when running on Android 4.4, especially when you update your app's <a
 href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> to "19" or higher.</p>
 
-<p>The code underlying the {@link android.webkit.WebView} class and related APIs has been upgraded to be based on a modern snapshot of the Chromium source code. This brings a variety of improvements for performance, support for new HTML5 features, and support for remote debugging of your {@link android.webkit.WebView} content. The scope of this upgrade means that if your app uses {@link android.webkit.WebView}, it's behavior may be impacted in some cases. Although known behavior changes are documented and mostly affect your app only when you update your app's <a
+<p>The code underlying the {@link android.webkit.WebView} class and related APIs has been upgraded to be based on a modern snapshot of the Chromium source code. This brings a variety of improvements for performance, support for new HTML5 features, and support for remote debugging of your {@link android.webkit.WebView} content. The scope of this upgrade means that if your app uses {@link android.webkit.WebView}, its behavior may be impacted in some cases. Although known behavior changes are documented and mostly affect your app only when you update your app's <a
 href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> to "19" or higher&mdash;the new {@link android.webkit.WebView} operates in "quirks mode" to provide some legacy functionality in apps that target API level 18 and lower&mdash;it's possible that your app depends on unknown behaviors from the previous version of {@link android.webkit.WebView}.</p>
 
 <p>So if your existing app uses {@link android.webkit.WebView}, it's important that you test on Android 4.4 as soon as possible and consult <a href="{@docRoot}guide/webapps/migrating.html">Migrating to WebView in Android 4.4</a> for information about how your app might be affected when you update your <a
diff --git a/docs/html/about/versions/kitkat.jd b/docs/html/about/versions/kitkat.jd
index dff3508..2987bd4 100644
--- a/docs/html/about/versions/kitkat.jd
+++ b/docs/html/about/versions/kitkat.jd
@@ -58,11 +58,10 @@
     <img src="{@docRoot}images/kk-devices.png" alt="Android 4.4 on phone and tablet" width="380">
   </div>
 
-  <div class="landing-docs" style="float:right;clear:both;margin:22px 0 2em 3em;">
-  <div class="col-4 normal-links highlights" style="font-size:12px;">
-    <h3 id="thisd" >Key Developer Features</h3>
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2 id="features" >Key Developer Features</h3>
     <ul style="list-style-type:none;">
-      <!--<li><a href="#44-ui">UI refresh</a></li>-->
       <li><a href="#44-hce">Host Card Emulation</a></li>
       <li><a href="#44-printing">Printing framework</a></li>
       <li><a href="#44-storage-access">Storage access framework</a></li>
diff --git a/docs/html/about/versions/marshmallow/android-6.0-changes.jd b/docs/html/about/versions/marshmallow/android-6.0-changes.jd
new file mode 100644
index 0000000..b44142e
--- /dev/null
+++ b/docs/html/about/versions/marshmallow/android-6.0-changes.jd
@@ -0,0 +1,418 @@
+page.title=Android 6.0 Changes
+page.keywords=marshmallow,android60,sdk,compatibility
+meta.tags=marshmallow,api23,android60,androidm
+sdk.platform.apiLevel=23
+page.image=images/cards/samples-new_2x.png
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>In this document</h2>
+
+<ol id="toc44" class="hide-nested">
+    <li><a href="#behavior-runtime-permissions">Runtime Permissions</a></li>
+    <li><a href="#behavior-power">Doze and App Standby</a></li>
+    <li><a href="#behavior-apache-http-client">Apache HTTP Client Removal</a></li>
+    <li><a href="#behavior-apache-http-client">BoringSSL</a></li>
+    <li><a href="#behavior-hardware-id">Access to Hardware Identifiers</a></li>
+    <li><a href="#behavior-notifications">Notifications</a></li>
+    <li><a href="#behavior-audiomanager-Changes">AudioManager Changes</a></li>
+    <li><a href="#behavior-text-selection">Text Selection</a></li>
+    <li><a href="#behavior-bookmark-browser">Browser Bookmark Changes</a></li>
+    <li><a href="#behavior-keystore">Android Keystore Changes</a></li>
+    <li><a href="#behavior-network">Wi-Fi and Networking Changes</a></li>
+    <li><a href="#behavior-camera">Camera Service Changes</a></li>
+    <li><a href="#behavior-runtime">Runtime</a></li>
+    <li><a href="#behavior-apk-validation">APK Validation</a></li>
+    <li><a href="#behavior-usb">USB Connection</a></li>
+    <li><a href="#behavior-afw">Android for Work Changes</a></li>
+</ol>
+
+<h2>API Differences</h2>
+<ol>
+<li><a href="{@docRoot}sdk/api_diff/23/changes.html">API level 22 to 23 &raquo;</a> </li>
+</ol>
+
+
+<h2>See Also</h2>
+<ol>
+<li><a href="{@docRoot}about/versions/marshmallow/android-6.0.html">Android 6.0 API Overview</a> </li>
+</ol>
+
+</div>
+</div>
+
+<p>Along with new features and capabilities, Android 6.0 (API level 23) includes a variety of
+system changes and API behavior changes. This document highlights
+some of the key changes that you should understand and account for in your apps.</p>
+
+<p>If you have previously published an app for Android, be aware that these changes in the
+platform affect your app.</p>
+
+<h2 id="behavior-runtime-permissions">Runtime Permissions</h1>
+<p>This release introduces a new permissions model, where users can now directly manage
+app permissions at runtime. This model gives users improved visibility and control over
+permissions, while streamlining the installation and auto-update processes for app developers.
+Users can grant or revoke permissions individually for installed apps. </p>
+
+<p>On your apps that target Android 6.0 (API level 23) or higher, make sure to check for and request
+permissions at runtime. To determine if your app has been granted a permission, call the
+new {@link android.content.Context#checkSelfPermission(java.lang.String) checkSelfPermission()}
+method. To request a permission, call the new
+{@link android.app.Activity#requestPermissions(java.lang.String[], int) requestPermissions()}
+method. Even if your app is not targeting Android 6.0 (API level 23), you should test your app under
+the new permissions model.</p>
+
+<p>For details on supporting the new permissions model in your app, see
+<a href="{@docRoot}training/permissions/index.html">
+Working with System Permissions</a>. For tips on how to assess the impact on your app,
+see <a href="{@docRoot}training/permissions/best-practices.html#testing">Permissions Best Practices</a>.</p>
+
+<h2 id="behavior-power">Doze and App Standby</h2>
+<p>This release introduces new power-saving optimizations for idle devices and apps. These
+features affect all apps so make sure to test your apps in these new modes.</p>
+<ul>
+<li><strong>Doze</strong>: If a user unplugs a device and leaves it stationary, with its screen off,
+for a period of time, the device goes into <em>Doze</em> mode, where it attempts to keep the system
+in a sleep state. In this mode, devices periodically resume normal operations for brief periods of
+time so that app syncing can occur and the system can perform any pending operations.
+<li><strong>App Standby</strong>: App Standby allows the system to determine that an app is idle
+when the user is not actively using it. The system makes this determination when the user does not
+touch the app for a certain period of time. If the device is unplugged, the system disables network
+access and suspends syncs and jobs for the apps it deems idle.</li>
+</ul>
+
+<p>To learn more about these power-saving changes, see
+<a href="{@docRoot}training/monitoring-device-state/doze-standby.html">Optimizing for Doze and App Standby</a>.</p>
+
+<h2 id="behavior-apache-http-client">Apache HTTP Client Removal</h2>
+
+<p>Android 6.0 release removes support for the Apache HTTP client. If your app is using this client and
+targets Android 2.3 (API level 9) or higher, use the {@link java.net.HttpURLConnection} class
+instead. This API is more efficient because it reduces network use through transparent compression
+and response caching, and minimizes power consumption. To continue using the Apache HTTP APIs, you
+must first declare the following compile-time dependency in your {@code build.gradle} file:
+</p>
+<pre>
+android {
+    useLibrary 'org.apache.http.legacy'
+}
+</pre>
+
+<h2 id="boringSSL">BoringSSL </h2>
+
+<p>Android is moving away from OpenSSL to the
+<a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a>
+library. If you’re using the Android NDK in your app, don't link against cryptographic libraries
+that are not a part of the NDK API, such as {@code libcrypto.so} and {@code libssl.so}. These
+libraries are not public APIs, and may change or break without notice across releases and devices.
+In addition, you may expose yourself to security vulnerabilities. Instead, modify your
+native code to call the Java cryptography APIs via JNI or to statically link against a
+cryptography library of your choice.</p>
+
+<h2 id="behavior-hardware-id">Access to Hardware Identifier</h2>
+<p>To provide users with greater data protection, starting in this release, Android
+removes programmatic access to the device’s local hardware identifier for
+apps using the Wi-Fi and Bluetooth APIs. The
+{@link android.net.wifi.WifiInfo#getMacAddress() WifiInfo.getMacAddress()} and the
+{@link android.bluetooth.BluetoothAdapter#getAddress() BluetoothAdapter.getAddress()} methods
+now return a constant value of {@code 02:00:00:00:00:00}.</p>
+
+<p>To access the hardware identifiers of nearby external devices via Bluetooth and Wi-Fi scans,
+your app must now have the {@link android.Manifest.permission#ACCESS_FINE_LOCATION} or
+{@link android.Manifest.permission#ACCESS_COARSE_LOCATION} permissions:</p>
+<ul>
+<li>{@link android.net.wifi.WifiManager#getScanResults() WifiManager.getScanResults()}</li>
+<li>{@link android.bluetooth.BluetoothDevice#ACTION_FOUND BluetoothDevice.ACTION_FOUND}</li>
+<li>{@link android.bluetooth.le.BluetoothLeScanner#startScan(android.bluetooth.le.ScanCallback)
+BluetoothLeScanner.startScan()}</li>
+</ul>
+
+<p class="note"><strong>Note</strong>: When a device running Android 6.0 (API level 23) initiates a
+background Wi-Fi or Bluetooth scan, the operation is visible to external devices as
+originating from a randomized MAC address.</p>
+
+<h2 id="behavior-notifications">Notifications</h2>
+<p>
+This release removes the {@code Notification.setLatestEventInfo()} method. Use the
+{@link android.app.Notification.Builder} class instead to construct notifications. To update a
+notification repeatedly, reuse the {@link android.app.Notification.Builder} instance. Call the
+{@link android.app.Notification.Builder#build()} method to get
+updated {@link android.app.Notification} instances.
+</p>
+<p>The {@code adb shell dumpsys notification} command no longer prints out your notification text.
+Use the {@code adb shell dumpsys notification --noredact} command instead to print out the text
+in a notification object.</p>
+
+<h2 id="behavior-audiomanager-Changes">AudioManager Changes</h2>
+<p>Setting the volume directly or muting specific streams via the {@link android.media.AudioManager}
+class is no longer supported. The {@link android.media.AudioManager#setStreamSolo(int,boolean)
+setStreamSolo()} method is deprecated, and you should call the
+{@link android.media.AudioManager#requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, int, int) requestAudioFocus()}
+method instead. Similarly, the
+{@link android.media.AudioManager#setStreamMute(int,boolean) setStreamMute()} method is
+deprecated; instead, call the {@link android.media.AudioManager#adjustStreamVolume(int, int, int)
+adjustStreamVolume()} method and pass in the direction value
+{@link android.media.AudioManager#ADJUST_MUTE} or
+{@link android.media.AudioManager#ADJUST_UNMUTE}.</p>
+
+
+<h2 id="behavior-text-selection">Text Selection</h2>
+
+<img src="{@docRoot}images/android-6.0/text-selection.gif"
+style="float:right; margin:0 0 20px 30px" width="360" height="640" />
+
+<p>When users select text in your app, you can now display text selection actions such as
+<em>Cut</em>, <em>Copy</em>, and <em>Paste</em> in a
+<a href="http://www.google.com/design/spec/patterns/selection.html#selection-text-selection"
+class="external-link">floating toolbar</a>. The user interaction implementation is similar to that
+for the contextual action bar, as described in
+<a href="{@docRoot}guide/topics/ui/menus.html#CABforViews">
+Enabling the contextual action mode for individual views</a>.</p>
+
+<p>To implement a floating toolbar for text selection, make the following changes in your existing
+apps:</p>
+<ol>
+<li>In your {@link android.view.View} or {@link android.app.Activity} object, change your
+{@link android.view.ActionMode} calls from
+{@code startActionMode(Callback)} to {@code startActionMode(Callback, ActionMode.TYPE_FLOATING)}.</li>
+<li>Take your existing implementation of {@code ActionMode.Callback} and make it extend
+{@link android.view.ActionMode.Callback2} instead.</li>
+<li>Override the
+{@link android.view.ActionMode.Callback2#onGetContentRect(android.view.ActionMode, android.view.View, android.graphics.Rect) onGetContentRect()}
+method to provide the coordinates of the content {@link android.graphics.Rect} object
+(such as a text selection rectangle) in the view.</li>
+<li>If the rectangle positioning is no longer valid, and this is the only element to be invalidated,
+call the {@link android.view.ActionMode#invalidateContentRect() invalidateContentRect()} method.</li>
+</ol>
+
+<p>If you are using <a href="{@docRoot}tools/support-library/index.html">
+Android Support Library</a> revision 22.2, be aware that floating toolbars are not
+backward-compatible and appcompat takes control over {@link android.view.ActionMode} objects by
+default. This prevents floating toolbars from being displayed. To enable
+{@link android.view.ActionMode} support in an
+{@link android.support.v7.app.AppCompatActivity}, call
+{@link android.support.v7.app.AppCompatActivity#getDelegate()}, then call
+{@link android.support.v7.app.AppCompatDelegate#setHandleNativeActionModesEnabled(boolean)
+setHandleNativeActionModesEnabled()} on the returned
+{@link android.support.v7.app.AppCompatDelegate} object and set the input
+parameter to {@code false}. This call returns control of {@link android.view.ActionMode} objects to
+the framework. In devices running Android 6.0 (API level 23), that allows the framework to support
+{@link android.support.v7.app.ActionBar} or floating toolbar modes, while on devices running
+Android 5.1 (API level 22) or lower, only the {@link android.support.v7.app.ActionBar} modes are
+supported.</p>
+
+<h2 id="behavior-bookmark-browser">Browser Bookmark Changes</h2>
+<p>This release removes support for global bookmarks. The
+{@code android.provider.Browser.getAllBookmarks()} and {@code android.provider.Browser.saveBookmark()}
+methods are now removed. Likewise, the {@code READ_HISTORY_BOOKMARKS} and {@code WRITE_HISTORY_BOOKMARKS}
+permissions are removed. If your app targets Android 6.0 (API level 23) or higher, don't access
+bookmarks from the global provider or use the bookmark permissions. Instead, your app should store
+bookmarks data internally.</p>
+
+<h2 id="behavior-keystore">Android Keystore Changes</h2>
+<p>With this release, the
+<a href="{@docRoot}training/articles/keystore.html">Android Keystore provider</a> no longer supports
+DSA. ECDSA is still supported.</p>
+
+<p>Keys which do not require encryption at rest will no longer be deleted when secure lock screen
+is disabled or reset (for example, by the user or a Device Administrator). Keys which require
+encryption at rest will be deleted during these events.</p>
+
+<h2 id="behavior-network">Wi-Fi and Networking Changes</h2>
+
+<p>This release introduces the following behavior changes to the Wi-Fi and networking APIs.</p>
+<ul>
+<li>Your apps can now change the state of {@link android.net.wifi.WifiConfiguration} objects only
+if you created these objects. You are not permitted to modify or delete
+{@link android.net.wifi.WifiConfiguration} objects created by the user or by other apps.
+</li>
+<li>
+Previously, if an app forced the device to connect to a specific Wi-Fi network by using
+{@link android.net.wifi.WifiManager#enableNetwork(int,boolean) enableNetwork()} with the
+{@code disableAllOthers=true} setting, the device disconnected from other networks such as
+cellular data. In This release, the device no longer disconnects from such other networks. If
+your app’s {@code targetSdkVersion} is {@code “20”} or lower, it is pinned to the selected
+Wi-Fi network. If your app’s {@code targetSdkVersion} is {@code “21”} or higher, use the
+multinetwork APIs (such as
+{@link android.net.Network#openConnection(java.net.URL) openConnection()},
+{@link android.net.Network#bindSocket(java.net.Socket) bindSocket()}, and the new
+{@link android.net.ConnectivityManager#bindProcessToNetwork(android.net.Network)
+bindProcessToNetwork()} method) to ensure that its network traffic is sent on the selected network.</li>
+</ul>
+
+<h2 id="behavior-camera">Camera Service Changes</h2>
+<p>In This release, the model for accessing shared resources in the camera service has been changed
+from the previous “first come, first serve” access model to an access model where high-priority
+processes are favored.  Changes to the service behavior include:</p>
+<ul>
+<li>Access to camera subsystem resources, including opening and configuring a camera device, is
+awarded based on the “priority” of the client application process. Application processes with
+user-visible or foreground activities are generally given a higher-priority, making camera resource
+acquisition and use more dependable.</li>
+<li>Active camera clients for lower priority apps may be “evicted” when a higher priority
+application attempts to use the camera.  In the deprecated {@link android.hardware.Camera} API,
+this results in
+{@link android.hardware.Camera.ErrorCallback#onError(int,android.hardware.Camera) onError()} being
+called for the evicted client. In the {@link android.hardware.camera2 Camera2} API, it results in
+{@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected(android.hardware.camera2.CameraDevice) onDisconnected()}
+being called for the evicted client.</li>
+<li>On devices with appropriate camera hardware, separate application processes are able to
+independently open and use separate camera devices simultaneously. However, multi-process use
+cases, where simultaneous access causes significant degradation of performance or capabilities of
+any of the open camera devices, are now detected and disallowed by the camera service. This change
+may result in “evictions” for lower priority clients even when no other app is directly
+attempting to access the same camera device.
+</li>
+<li>
+Changing the current user causes active camera clients in apps owned by the previous user account
+to be evicted.  Access to the camera is limited to user profiles owned by the current device user.
+In practice, this means that a “Guest” account, for example, will not be able to leave running
+processes that use the camera subsystem when the user has switched to a different account.
+</li>
+</ul>
+
+<h2 id="behavior-runtime">Runtime</h2>
+<p>The ART runtime now properly implements access rules for the
+{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} method. This
+change fixes a problem where Dalvik was checking access rules incorrectly in previous versions.
+If your app uses the
+{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} method and you
+want to override access checks, call the
+{@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()} method with the input
+parameter set to {@code true}. If your app uses the
+<a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7 appcompat library</a> or the
+<a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">v7 recyclerview library</a>,
+you must update your app to use to the latest versions of these libraries. Otherwise, make sure that
+any custom classes referenced from XML are updated so that their class constructors are accessible.</p>
+
+<p>This release updates the behavior of the dynamic linker. The dynamic linker now understands the
+difference between a library’s {@code soname} and its path
+(<a href="https://code.google.com/p/android/issues/detail?id=6670" class="external-link">
+public bug 6670</a>), and search by {@code soname} is now
+implemented. Apps which previously worked that have bad {@code DT_NEEDED} entries
+(usually absolute paths on the build machine’s file system) may fail when loaded.</p>
+
+<p>The {@code dlopen(3) RTLD_LOCAL} flag is now correctly implemented. Note that
+{@code RTLD_LOCAL} is the default, so calls to {@code dlopen(3)} that didn’t explicitly use
+{@code RTLD_LOCAL} will be affected (unless your app explicitly used {@code RTLD_GLOBAL}). With
+{@code RTLD_LOCAL}, symbols will not be made available to libraries loaded by later calls to
+{@code dlopen(3)} (as opposed to being referenced by {@code DT_NEEDED} entries).</p>
+</p>
+
+<p>
+On previous versions of Android, if your app requested the system to load a shared library with
+text relocations, the system displayed a warning but still allowed the library to be loaded.
+Beginning in this release, the system rejects this library if your app's target SDK version is 23
+or higher. To help you detect if a library failed to load, your app should log the
+{@code dlopen(3)} failure, and include the problem description text that the {@code dlerror(3)}
+call returns. To learn more about handling text relocations, see this
+<a href="https://wiki.gentoo.org/wiki/Hardened/Textrels_Guide" class="external-link">guide</a>.</p>
+
+<h2 id="behavior-apk-validation">APK Validation</h2>
+<p>The platform now performs stricter validation of APKs. An APK is considered corrupt if a file is
+declared in the manifest but not present in the APK itself. An APK must be re-signed if any of the
+contents are removed.</p>
+
+<h2 id="behavior-usb">USB Connection</h2>
+<p>Device connections through the USB port are now set to charge-only mode by default. To access
+the device and its content over a USB connection, users must explicitly grant permission for such
+interactions. If your app supports user interactions with the device over a USB port, take into
+consideration that the interaction must be explicitly enabled.
+</p>
+
+<h2 id="behavior-afw">Android for Work Changes</h2>
+<p>This release includes the following behavior changes for Android for Work:</p>
+<ul>
+  <li><strong>Work contacts in personal contexts.</strong> The Google Dialer
+Call Log now displays work contacts when the user views past calls.
+Setting
+{@link android.app.admin.DevicePolicyManager#setCrossProfileCallerIdDisabled(android.content.ComponentName, boolean) setCrossProfileCallerIdDisabled()}
+to {@code true} hides the work profile contacts in the Google Dialer Call Log. Work contacts can be
+displayed along with personal contacts to devices over Bluetooth only if
+you set {@link android.app.admin.DevicePolicyManager#setBluetoothContactSharingDisabled(android.content.ComponentName, boolean)
+setBluetoothContactSharingDisabled()} to {@code false}. By default, it is set to {@code true}.
+  </li>
+  <li><strong>Wi-Fi configuration removal:</strong> Wi-Fi configurations added by a Profile Owner
+(for example, through calls to the
+{@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration)
+addNetwork()} method) are now removed if that work profile is deleted.
+  </li>
+  <li><strong>Wi-Fi configuration lockdown:</strong> Any Wi-Fi configuration created by
+  an active Device Owner can no longer be modified or deleted by the user if
+  {@link android.provider.Settings.Global#WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN} is non-zero.
+  The user can still create and modify their own Wi-Fi configurations. Active Device
+  Owners have the privilege of editing or removing any Wi-Fi configurations, including
+  those not created by them.
+  </li>
+<li><strong>Download device policy controller via Google account addition:</strong> When a Google
+account that requires management via a device policy controller (DPC) app is added to a device
+outside of a managed context, the add account flow now prompts the user to install the
+appropriate WPC. This behavior also applies to accounts added via
+<strong>Settings > Accounts</strong> and in the initial device setup wizard.</li>
+<li><strong>Changes to specific {@link android.app.admin.DevicePolicyManager} API behaviors:</strong>
+  <ul>
+  <li>Calling the
+{@link android.app.admin.DevicePolicyManager#setCameraDisabled(android.content.ComponentName,boolean) setCameraDisabled()}
+method affects the camera for the calling user only; calling it from the managed profile doesn’t
+affect camera apps running on the primary user.</li>
+  <li>In addition, the
+{@link android.app.admin.DevicePolicyManager#setKeyguardDisabledFeatures(android.content.ComponentName,int) setKeyguardDisabledFeatures()}
+    method is now available for Profile Owners, as well as to Device Owners. </li>
+  <li>A Profile Owner can set these keyguard restrictions:
+    <ul>
+    <li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_TRUST_AGENTS} and
+    {@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_FINGERPRINT}, which affect the
+    keyguard settings for the profile’s parent user.</li>
+    <li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS}, which
+    only affects notifications generated by applications in the managed profile.</li>
+    </ul>
+  </li>
+  <li>The {@code DevicePolicyManager.createAndInitializeUser()} and {@code DevicePolicyManager.createUser()} methods have been deprecated.</li>
+  <li>The {@link android.app.admin.DevicePolicyManager#setScreenCaptureDisabled(android.content.ComponentName, boolean) setScreenCaptureDisabled()}
+method now also blocks the assist structure when an app of the given user is in the foreground. </li>
+  <li>{@link android.app.admin.DevicePolicyManager#EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM}
+now defaults to SHA-256. SHA-1 is still supported for backwards compatibility but will be removed
+in future.
+{@link android.app.admin.DevicePolicyManager#EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM}
+now only accepts SHA-256.</li>
+  <li>Device initializer APIs which existed in the Android 6.0 (API level 23) are now removed.</li>
+    <li><code>EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS</code> is removed so NFC bump
+provisioning cannot programmatically unlock a factory reset protected device.</li>
+<li>You can now use the {@link android.app.admin.DevicePolicyManager#EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE}
+extra to pass data to the device owner app during NFC provisioning of the managed device.</li>
+    <li>Android for Work APIs are optimized for M runtime permissions, including Work profiles,
+assist layer, and others. New {@link android.app.admin.DevicePolicyManager} permission APIs don't
+affect pre-M apps.</li>
+<li>When users back out of the synchronous part of the setup flow initiated through an
+{@link android.app.admin.DevicePolicyManager#ACTION_PROVISION_MANAGED_PROFILE} or
+{@link android.app.admin.DevicePolicyManager#ACTION_PROVISION_MANAGED_DEVICE} intent, the system
+now returns a {@link android.app.Activity#RESULT_CANCELED} result code.</li>
+    </ul></li>
+
+<li><strong>Changes to other APIs</strong>:
+<ul>
+    <li>Data Usage: The {@code android.app.usage.NetworkUsageStats} class has been renamed
+{@link android.app.usage.NetworkStats}.</li>
+</ul>
+    </li>
+
+    <li><strong>Changes to global settings</strong>:
+    <ul>
+    <li>These settings can no longer be set via {@link android.app.admin.DevicePolicyManager#setGlobalSetting(android.content.ComponentName, java.lang.String, java.lang.String) setGlobalSettings()}</code>:
+<ul>
+    <li><code>BLUETOOTH_ON</code></li>
+    <li><code>DEVELOPMENT_SETTINGS_ENABLED</code></li>
+    <li><code>MODE_RINGER</code></li>
+    <li><code>NETWORK_PREFERENCE</code></li>
+    <li><code>WIFI_ON</code></li>
+</ul>
+    </li>
+    <li>These global settings can now be set via {@link android.app.admin.DevicePolicyManager#setGlobalSetting(android.content.ComponentName, java.lang.String, java.lang.String) setGlobalSettings()}:
+    <ul>
+    <li>{@link android.provider.Settings.Global#WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN}</li>
+    </ul>
+    </li>
+    </ul>
+</ul>
diff --git a/docs/html/about/versions/marshmallow/android-6.0.jd b/docs/html/about/versions/marshmallow/android-6.0.jd
new file mode 100644
index 0000000..779ecf4
--- /dev/null
+++ b/docs/html/about/versions/marshmallow/android-6.0.jd
@@ -0,0 +1,605 @@
+page.title=Android 6.0 APIs
+page.keywords=marshmallow,sdk,compatibility
+page.tags=androidm,marshmallow
+sdk.platform.apiLevel=23
+page.image=images/cards/card-api-overview_16-9_2x.png
+page.metaDescription=Get to know the new developer features in Android 6.0 Marshmallow.
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>In this document
+    <a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
+        <span class="more">show more</span>
+        <span class="less" style="display:none">show less</span></a></h2>
+
+<ol id="toc44" class="hide-nested">
+
+  <li><a href="#fingerprint-authentication">Fingerprint Authentication</a></li>
+  <li><a href="#confirm-credential">Confirm Credential</a></li>
+  <li><a href="#app-linking">App Linking</a></li>
+  <li><a href="#backup">Auto Backup for Apps</a></li>
+  <li><a href="#direct-share">Direct Share</a></li>
+  <li><a href="#voice-interactions">Voice Interactions</a></li>
+  <li><a href="#assist">Assist API</a></li>
+  <li><a href="#adoptable-storage">Adoptable Storage</a></li>
+  <li><a href="#notifications">Notifications</a></li>
+  <li><a href="#bluetooth-stylus">Bluetooth Stylus Support</a></li>
+  <li><a href="#ble-scanning">Improved Bluetooth Low Energy Scanning</a></li>
+  <li><a href="#hotspot">Hotspot 2.0 Release 1 Support</a></li>
+  <li><a href="#4K-display">4K Display Mode</a></li>
+  <li><a href="#behavior-themeable-colorstatelists">Themeable ColorStateLists</a></li>
+  <li><a href="#audio">Audio Features</a></li>
+  <li><a href="#video">Video Features</a></li>
+  <li><a href="#camera">Camera Features</a>
+    <ol>
+      <li><a href="#flashlight">Flashlight API</a></li>
+      <li><a href="#reprocessing">Camera Reprocessing</a></li>
+    </ol>
+  </li>
+  <li><a href="#afw">Android for Work Features</a></li>
+</ol>
+
+<h2>API Differences</h2>
+<ol>
+<li><a href="{@docRoot}sdk/api_diff/23/changes.html">API level 22 to 23 &raquo;</a> </li>
+</ol>
+
+</div>
+</div>
+
+<p>Android 6.0 (<a href="{@docRoot}reference/android/os/Build.VERSION_CODES.html#M">M</a>)
+offers new features for users and app developers. This document provides an introduction to the
+most notable APIs.</p>
+
+<h3 id="Start">Start developing</h3>
+
+<p>To start building apps for Android 6.0, you must first <a href="{@docRoot}sdk/index.html">get
+the Android SDK</a>. Then use the <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>
+to download the Android 6.0 SDK Platform and System Images.</p>
+
+
+<h3 id="ApiLevel">Update your target API level</h3>
+
+<p>To better optimize your app for devices running Android {@sdkPlatformVersion},
+  set your <a
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> to
+<code>"{@sdkPlatformApiLevel}"</code>, install your app on an Android
+{@sdkPlatformVersion} system image, test it, then publish the updated app with
+this change.</p>
+
+<p>You can use Android {@sdkPlatformVersion} APIs while also supporting older
+versions by adding conditions to your code that check for the system API level
+before executing APIs not supported by your <a
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a>.
+To learn more about maintaining backward compatibility, read <a
+href="{@docRoot}training/basics/supporting-devices/platforms.html">Supporting
+Different Platform Versions</a>.</p>
+
+<p>For more information about how API levels work, read <a
+href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">What is API
+Level?</a></p>
+
+<h2 id="fingerprint-authentication">Fingerprint Authentication</h2>
+
+<p>This release offers new APIs to let you authenticate users by using their fingerprint scans on
+supported devices, Use these APIs in conjunction with
+the <a href="{@docRoot}training/articles/keystore.html">Android Keystore system</a>.</p>
+
+<p>To authenticate users via fingerprint scan, get an instance of the new
+{@link android.hardware.fingerprint.FingerprintManager} class and call the
+{@link android.hardware.fingerprint.FingerprintManager#authenticate(android.hardware.fingerprint.FingerprintManager.CryptoObject, android.os.CancellationSignal, int, android.hardware.fingerprint.FingerprintManager.AuthenticationCallback, android.os.Handler) authenticate()}
+method. Your app must be running on a compatible
+device with a fingerprint sensor. You must implement the user interface for the fingerprint
+authentication flow on your app, and use the standard Android fingerprint icon in your UI.
+The Android fingerprint icon ({@code c_fp_40px.png}) is included in the
+<a href="{@docRoot}samples/FingerprintDialog/index.html">Fingerprint Dialog sample</a>. If you are
+developing multiple apps that use fingerprint authentication, note that each app must authenticate
+the user’s fingerprint independently.
+</p>
+
+<p>To use this feature in your app, first add the
+  {@link android.Manifest.permission#USE_FINGERPRINT} permission in your manifest.</p>
+
+<pre>
+&lt;uses-permission
+        android:name="android.permission.USE_FINGERPRINT" /&gt;
+</pre>
+<img src="{@docRoot}images/android-6.0/fingerprint-screen.png"
+srcset="{@docRoot}images/android-6.0/fingerprint-screen.png 1x, {@docRoot}images/android-6.0/fingerprint-screen_2x.png 2x"
+style="float:right; margin:0 0 10px 20px" width="282" height="476" />
+
+<p>To see an app implementation of fingerprint authentication, refer to the
+<a href="{@docRoot}samples/FingerprintDialog/index.html">Fingerprint Dialog sample</a>. For a
+demonstration of how you can use these authentication
+  APIs in conjunction with other Android APIs, see the video
+  <a class="video-shadowbox-button" href="https://www.youtube.com/watch?v=VOn7VrTRlA4">
+  Fingerprint and Payment APIs</a>.</p>
+
+<p>If you are testing this feature, follow these steps:</p>
+<ol>
+<li>Install Android SDK Tools Revision 24.3, if you have not done so.</li>
+<li>Enroll a new fingerprint in the emulator by going to
+<strong>Settings > Security > Fingerprint</strong>, then follow the enrollment instructions.</li>
+<li>Use an emulator to emulate fingerprint touch events with the
+following command. Use the same command to emulate fingerprint touch events on the lockscreen or
+in your app.
+<pre class="no-prettyprint">
+adb -e emu finger touch &lt;finger_id&gt;
+</pre>
+<p>On Windows, you may have to run {@code telnet 127.0.0.1 &lt;emulator-id&gt;} followed by
+  {@code finger touch &lt;finger_id&gt;}.
+</p>
+</li>
+</ol>
+
+<h2 id="confirm-credential">Confirm Credential</h2>
+<p>Your app can authenticate users based on how recently they last unlocked their device. This
+feature frees users from having to remember additional app-specific passwords, and avoids the need
+for you to implement your own authentication user interface. Your app should use this feature in
+conjunction with a public or secret key implementation for user authentication.</p>
+
+<p>To set the timeout duration for which the same key can be re-used after a user is successfully
+authenticated, call the new
+{@link android.security.keystore.KeyGenParameterSpec.Builder#setUserAuthenticationValidityDurationSeconds(int) setUserAuthenticationValidityDurationSeconds()}
+method when you set up a {@link javax.crypto.KeyGenerator} or
+{@link java.security.KeyPairGenerator}.</p>
+
+<p>Avoid showing the re-authentication dialog excessively -- your apps should try using the
+cryptographic object first and if the the timeout expires, use the
+{@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()}
+method to re-authenticate the user within your app.
+</p>
+
+<p>To see an app implementation of this feature, refer to the
+<a href="{@docRoot}samples/ConfirmCredential/index.html">
+  Confirm Credential sample</a>.</p>
+
+<h2 id="app-linking">App Linking</h2>
+<p>This release enhances Android’s intent system by providing more powerful app linking.
+This feature allows you to associate an app with a web domain you own. Based on this
+association, the platform can determine the default app to use to handle a particular
+web link and skip prompting users to select an app. To learn how to implement this feature, see
+<a href="{@docRoot}training/app-links/index.html">Handling App Links</a>.
+
+<h2 id="backup">Auto Backup for Apps</h2>
+<p>The system now performs automatic full data backup and restore for apps. Your app must target
+  Android 6.0 (API level 23) to enable this behavior; you do not need to add any additional code.
+  If users delete their Google accounts, their backup data is deleted as well. To learn how this
+  feature works and how to configure what to back up on the file system, see
+  <a href="{@docRoot}training/backup/autosyncapi.html">Configuring Auto Backup for Apps</a>.</p>
+
+<h2 id="direct-share">Direct Share</h2>
+
+<img src="{@docRoot}images/android-6.0/direct-share-screen.png"
+srcset="{@docRoot}images/android-6.0/direct-share-screen.png 1x, {@docRoot}images/android-6.0/direct-share-screen_2x.png 2x"
+style="float:right; margin:0 0 20px 30px" width="312" height="329" />
+
+<p>This release provides you with APIs to make sharing intuitive and quick for users. You can now
+define <em>direct share targets</em> that launch a specific activity in your app. These direct share
+targets are exposed to users via the <em>Share</em> menu. This feature allows users to share
+content to targets, such as contacts, within other apps. For example, the direct share target might
+launch an activity in another social network app, which lets the user share content directly to a
+specific friend or community in that app.</p>
+
+<p>To enable direct share targets you must define a class that extends the
+{@link android.service.chooser.ChooserTargetService} class. Declare your
+service in the manifest. Within that declaration, specify the
+{@link android.Manifest.permission#BIND_CHOOSER_TARGET_SERVICE} permission and an
+intent filter using the
+{@link android.service.chooser.ChooserTargetService#SERVICE_INTERFACE SERVICE_INTERFACE} action.</p>
+<p>The following example shows how you might declare the
+{@link android.service.chooser.ChooserTargetService} in your manifest.</p>
+<pre>
+&lt;service android:name=".ChooserTargetService"
+        android:label="&#64;string/service_name"
+        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.service.chooser.ChooserTargetService" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/service&gt;
+</pre>
+
+<p>For each activity that you want to expose to
+{@link android.service.chooser.ChooserTargetService}, add a
+{@code &lt;meta-data&gt;} element with the name
+{@code "android.service.chooser.chooser_target_service"} in your app manifest.
+</p>
+
+<pre>
+&lt;activity android:name=".MyShareActivity”
+        android:label="&#64;string/share_activity_label"&gt;
+    &lt;intent-filter>
+        &lt;action android:name="android.intent.action.SEND" /&gt;
+    &lt;/intent-filter>
+&lt;meta-data
+        android:name="android.service.chooser.chooser_target_service"
+        android:value=".ChooserTargetService" /&gt;
+&lt;/activity>
+</pre>
+
+<h2 id="voice-interactions">Voice Interactions</h2>
+<p>
+This release provides a new voice interaction API which, together with
+<a href="https://developers.google.com/voice-actions/" class="external-link">Voice Actions</a>,
+allows you to build conversational voice experiences into your apps. Call the
+{@link android.app.Activity#isVoiceInteraction()} method to determine if a voice action triggered
+your activity. If so, your app can use the
+{@link android.app.VoiceInteractor} class to request a voice confirmation from the user, select
+from a list of options, and more.</p>
+
+<p>Most voice interactions originate from a user voice action. A voice interaction activity can
+also, however, start without user input. For example, another app launched through a voice
+interaction can also send an intent to launch a voice interaction. To determine if your activity
+launched from a user voice query or from another voice interaction app, call the
+{@link android.app.Activity#isVoiceInteractionRoot()} method. If another app launched your
+activity, the method returns {@code false}. Your app may then prompt the user to confirm that
+they intended this action.</p>
+
+<p>To learn more about implementing voice actions, see the
+<a href="https://developers.google.com/voice-actions/interaction/"
+class="external-link">Voice Actions developer site</a>.
+</p>
+
+<h2 id="assist">Assist API</h2>
+<p>
+This release offers a new way for users to engage with your apps through an assistant. To use this
+feature, the user must enable the assistant to use the current context. Once enabled, the user
+can summon the assistant within any app, by long-pressing on the <strong>Home</strong> button.</p>
+<p>Your app can elect to not share the current context with the assistant by setting the
+{@link android.view.WindowManager.LayoutParams#FLAG_SECURE} flag. In addition to the
+standard set of information that the platform passes to the assistant, your app can share
+additional information by using the new {@link android.app.assist.AssistContent} class.</p>
+
+<p>To provide the assistant with additional context from your app, follow these steps:</p>
+
+<ol>
+<li>Implement the {@link android.app.Application.OnProvideAssistDataListener} interface.</li>
+<li>Register this listener by using
+{@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()}.</li>
+<li>In order to provide activity-specific contextual information, override the
+{@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()}
+callback and, optionally, the new
+{@link android.app.Activity#onProvideAssistContent(android.app.assist.AssistContent) onProvideAssistContent()}
+callback.
+</ol>
+
+<h2 id="adoptable-storage">Adoptable Storage Devices</h2>
+<p>
+With this release, users can <em>adopt</em> external storage devices such as SD cards. Adopting an
+external storage device encrypts and formats the device to behave like internal storage. This
+feature allows users to move both apps and private data of those apps between storage devices. When
+moving apps, the system respects the
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html#install">{@code android:installLocation}</a>
+preference in the manifest.</p>
+
+<p>If your app accesses the following APIs or fields, be aware that the file paths they return
+will dynamically change when the app is moved between internal and external storage devices.
+When building file paths, it is strongly recommended that you always call these APIs dynamically.
+Don’t use hardcoded file paths or persist fully-qualified file paths that were built previously.</p>
+
+<ul>
+<li>{@link android.content.Context} methods:
+    <ul>
+        <li>{@link android.content.Context#getFilesDir() getFilesDir()}</li>
+        <li>{@link android.content.Context#getCacheDir() getCacheDir()}</li>
+        <li>{@link android.content.Context#getCodeCacheDir() getCodeCacheDir()}</li>
+        <li>{@link android.content.Context#getDatabasePath(java.lang.String) getDatabasePath()}</li>
+        <li>{@link android.content.Context#getDir(java.lang.String,int) getDir()}</li>
+        <li>{@link android.content.Context#getNoBackupFilesDir() getNoBackupFilesDir()}</li>
+        <li>{@link android.content.Context#getFileStreamPath(java.lang.String) getFileStreamPath()}</li>
+        <li>{@link android.content.Context#getPackageCodePath() getPackageCodePath()}</li>
+        <li>{@link android.content.Context#getPackageResourcePath() getPackageResourcePath()}</li>
+    </ul>
+</li>
+<li>{@link android.content.pm.ApplicationInfo} fields:
+    <ul>
+        <li>{@link android.content.pm.ApplicationInfo#dataDir dataDir}</li>
+        <li>{@link android.content.pm.ApplicationInfo#sourceDir sourceDir}</li>
+        <li>{@link android.content.pm.ApplicationInfo#nativeLibraryDir nativeLibraryDir}</li>
+        <li>{@link android.content.pm.ApplicationInfo#publicSourceDir publicSourceDir}</li>
+        <li>{@link android.content.pm.ApplicationInfo#splitSourceDirs splitSourceDirs}</li>
+        <li>{@link android.content.pm.ApplicationInfo#splitPublicSourceDirs splitPublicSourceDirs}</li>
+    </ul>
+</li>
+</ul>
+
+<p>To debug this feature, you can enable adoption of a USB drive that is
+connected to an Android device through a USB On-The-Go (OTG) cable, by running this command:</p>
+
+<pre class="no-prettyprint">
+$ adb shell sm set-force-adoptable true
+</pre>
+
+<h2 id="notifications">Notifications</h2>
+<p>This release adds the following API changes for notifications:</p>
+<ul>
+  <li>New {@link android.app.NotificationManager#INTERRUPTION_FILTER_ALARMS} filter level that
+    corresponds to the new <em>Alarms only</em> do not disturb mode.</li>
+  <li>New {@link android.app.Notification#CATEGORY_REMINDER} category value that is used to
+  distinguish user-scheduled reminders from other events
+  ({@link android.app.Notification#CATEGORY_EVENT}) and alarms
+  ({@link android.app.Notification#CATEGORY_ALARM}).</li>
+  <li>New {@link android.graphics.drawable.Icon} class that you can attach to your notifications
+  via the
+  {@link android.app.Notification.Builder#setSmallIcon(android.graphics.drawable.Icon) setSmallIcon()}
+  and {@link android.app.Notification.Builder#setLargeIcon(android.graphics.drawable.Icon) setLargeIcon()}
+  methods. Similarly, the
+  {@link android.app.Notification.Builder#addAction(int, java.lang.CharSequence, android.app.PendingIntent)
+  addAction()} method now accepts an {@link android.graphics.drawable.Icon} object instead of a
+  drawable resource ID.</li>
+  <li>New {@link android.app.NotificationManager#getActiveNotifications()} method that allows your
+  apps to find out which of their notifications are currently alive. To see an app implementation
+  that uses this feature, see the
+  <a href="{@docRoot}samples/ActiveNotifications/index.html">Active Notifications sample</a>.</li>
+</ul>
+
+<h2 id="bluetooth-stylus">Bluetooth Stylus Support</h2>
+<p>This release provides improved support for user input using a Bluetooth stylus. Users can pair
+and connect a compatible Bluetooth stylus with their phone or tablet.  While connected, position
+information from the touch screen is fused with pressure and button information from the stylus to
+provide a greater range of expression than with the touch screen alone. Your app can listen for
+stylus button presses and perform secondary actions, by registering
+{@link android.view.View.OnContextClickListener} and
+{@link android.view.GestureDetector.OnContextClickListener} objects in your activity.</p>
+
+<p>Use the {@link android.view.MotionEvent} methods and constants to detect stylus button
+interactions:</p>
+<ul>
+<li>If the user touches a stylus with a button on the screen of your app, the
+{@link android.view.MotionEvent#getToolType(int) getTooltype()} method returns
+{@link android.view.MotionEvent#TOOL_TYPE_STYLUS}.</li>
+<li>For apps targeting Android 6.0 (API level 23), the
+{@link android.view.MotionEvent#getButtonState() getButtonState()}
+method returns {@link android.view.MotionEvent#BUTTON_STYLUS_PRIMARY} when the user
+presses the primary stylus button. If the stylus has a second button, the same method returns
+{@link android.view.MotionEvent#BUTTON_STYLUS_SECONDARY} when the user presses it. If the user presses
+both buttons simultaneously, the method returns both values OR'ed together
+({@link android.view.MotionEvent#BUTTON_STYLUS_PRIMARY}|{@link android.view.MotionEvent#BUTTON_STYLUS_SECONDARY}).</li>
+<li>
+For apps targeting a lower platform version, the
+{@link android.view.MotionEvent#getButtonState() getButtonState()} method returns
+{@link android.view.MotionEvent#BUTTON_SECONDARY} (for primary stylus button press),
+{@link android.view.MotionEvent#BUTTON_TERTIARY} (for secondary stylus button press), or both.
+</li>
+</ul>
+
+<h2 id="ble-scanning">Improved Bluetooth Low Energy Scanning</h2>
+<p>
+If your app performs performs Bluetooth Low Energy scans, use the new
+{@link android.bluetooth.le.ScanSettings.Builder#setCallbackType(int) setCallbackType()}
+method to specify that you want the system to notify callbacks when it first finds, or sees after a
+long time, an advertisement packet matching the set {@link android.bluetooth.le.ScanFilter}. This
+approach to scanning is more power-efficient than what’s provided in the previous platform version.
+</p>
+
+<h2 id="hotspot">Hotspot 2.0 Release 1 Support</h2>
+<p>
+This release adds support for the Hotspot 2.0 Release 1 spec on Nexus 6 and Nexus 9 devices. To
+provision Hotspot 2.0 credentials in your app, use the new methods of the
+{@link android.net.wifi.WifiEnterpriseConfig} class, such as
+{@link android.net.wifi.WifiEnterpriseConfig#setPlmn(java.lang.String) setPlmn()} and
+{@link android.net.wifi.WifiEnterpriseConfig#setRealm(java.lang.String) setRealm()}. In the
+{@link android.net.wifi.WifiConfiguration} object, you can set the
+{@link android.net.wifi.WifiConfiguration#FQDN} and the
+{@link android.net.wifi.WifiConfiguration#providerFriendlyName} fields.
+The new {@link android.net.wifi.ScanResult#isPasspointNetwork()} method indicates if a detected
+network represents a Hotspot 2.0 access point.
+</p>
+
+<h2 id="4K-display">4K Display Mode</h2>
+<p>The platform now allows apps to request that the display resolution be upgraded to 4K rendering
+on compatible hardware. To query the current physical resolution, use the new
+{@link android.view.Display.Mode} APIs. If the UI is drawn at a lower logical resolution and is
+upscaled to a larger physical resolution, be aware that the physical resolution the
+{@link android.view.Display.Mode#getPhysicalWidth()} method returns may differ from the logical
+resolution reported by {@link android.view.Display#getSize(android.graphics.Point) getSize()}.</p>
+
+<p>You can request the system to change the physical resolution in your app as it runs, by setting
+the {@link android.view.WindowManager.LayoutParams#preferredDisplayModeId} property of your app’s
+window.  This feature is useful if you want to switch to 4K display resolution. While in 4K display
+mode, the UI continues to be rendered at the original resolution (such as 1080p) and is upscaled to
+4K, but {@link android.view.SurfaceView} objects may show content at the native resolution.</p>
+
+<h2 id="behavior-themeable-colorstatelists">Themeable ColorStateLists</h2>
+<p>Theme attributes are now supported in
+{@link android.content.res.ColorStateList} for devices running on Android 6.0 (API level 23). The
+{@link android.content.res.Resources#getColorStateList(int) Resources.getColorStateList()} and
+{@link android.content.res.Resources#getColor(int) Resources.getColor()} methods have been
+deprecated. If you are calling these APIs, call the new
+{@link android.content.Context#getColorStateList(int) Context.getColorStateList()} or
+{@link android.content.Context#getColor(int) Context.getColor()} methods instead. These methods are
+also available in the v4 appcompat library via {@link android.support.v4.content.ContextCompat}.</p>
+
+<h2 id="audio">Audio Features</h2>
+
+<p>This release adds enhancements to audio processing on Android, including: </p>
+<ul>
+  <li>Support for the <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a>
+protocol, with the new {@link android.media.midi} APIs. Use these APIs to send and receive MIDI
+events.</li>
+  <li>New {@link android.media.AudioRecord.Builder} and {@link android.media.AudioTrack.Builder}
+classes to create digital audio capture and playback objects respectively, and configure audio
+source and sink properties to override the system defaults.</li>
+  <li>API hooks for associating audio and input devices. This is particularly useful if your app
+allows users to start a voice search from a game controller or remote control connected to Android
+TV. The system invokes the new
+{@link android.app.Activity#onSearchRequested(android.view.SearchEvent) onSearchRequested()}
+callback when the user starts a search. To determine if the user's input device has a built-in
+microphone, retrieve the {@link android.view.InputDevice} object from that callback, then call the
+new {@link android.view.InputDevice#hasMicrophone()} method.</li>
+  <li>New {@link android.media.AudioManager#getDevices(int) getDevices()} method which lets you
+retrieve a list of all audio devices currently connected to the system. You can also register an
+{@link android.media.AudioDeviceCallback} object if you want the system to notify your app
+when an audio device connects or disconnects.</li>
+</ul>
+
+<h2 id="video">Video Features</h2>
+<p>This release adds new capabilities to the video processing APIs, including:</p>
+<ul>
+<li>New {@link android.media.MediaSync} class which helps applications to synchronously render
+audio and video streams. The audio buffers are submitted in non-blocking fashion and are
+returned via a callback. It also supports dynamic playback rate.
+</li>
+<li>New {@link android.media.MediaDrm#EVENT_SESSION_RECLAIMED} event, which indicates that a
+session opened by the app has been reclaimed by the resource manager. If your app uses DRM sessions,
+you should handle this event and make sure not to use a reclaimed session.
+</li>
+<li>New {@link android.media.MediaCodec.CodecException#ERROR_RECLAIMED} error code, which indicates
+that the resource manager reclaimed the media resource used by the codec. With this exception, the
+codec must be released, as it has moved to terminal state.
+</li>
+<li>New {@link android.media.MediaCodecInfo.CodecCapabilities#getMaxSupportedInstances()
+getMaxSupportedInstances()} interface to get a hint for the max number of the supported
+concurrent codec instances.
+</li>
+<li>New {@link android.media.MediaPlayer#setPlaybackParams(android.media.PlaybackParams)
+setPlaybackParams()} method to set the media playback rate for fast or
+slow motion playback. It also stretches or speeds up the audio playback automatically in
+conjunction with the video.</li>
+</ul>
+
+<h2 id="camera">Camera Features</h2>
+<p>This release includes the following new APIs for accessing the camera’s flashlight and for
+camera reprocessing of images:</p>
+
+<h3 id="flashlight">Flashlight API</h3>
+<p>If a camera device has a flash unit, you can call the
+{@link android.hardware.camera2.CameraManager#setTorchMode(java.lang.String, boolean) setTorchMode()}
+method to switch the flash unit’s torch mode on or off without opening the camera device. The app
+does not have exclusive ownership of the flash unit or the camera device. The torch mode is turned
+off and becomes unavailable whenever the camera device becomes unavailable, or when other camera
+resources keeping the torch on become unavailable. Other apps can also call
+{@link android.hardware.camera2.CameraManager#setTorchMode(java.lang.String, boolean) setTorchMode()}
+to turn off the torch mode. When the last app that turned on the torch mode is closed, the torch
+mode is turned off.</p>
+
+<p>You can register a callback to be notified about torch mode status by calling the
+{@link android.hardware.camera2.CameraManager#registerTorchCallback(android.hardware.camera2.CameraManager.TorchCallback, android.os.Handler) registerTorchCallback()}
+method. The first time the callback is registered, it is immediately called with the torch mode
+status of all currently known camera devices with a flash unit. If the torch mode is turned on or
+off successfully, the
+{@link android.hardware.camera2.CameraManager.TorchCallback#onTorchModeChanged(java.lang.String, boolean) onTorchModeChanged()}
+method is invoked.</p>
+
+<h3 id="reprocessing">Reprocessing API</h3>
+<p>The {@link android.hardware.camera2 Camera2} API is extended to support YUV and private
+opaque format image reprocessing. To determine if these reprocessing capabilities are available,
+call {@link android.hardware.camera2.CameraManager#getCameraCharacteristics(java.lang.String)
+getCameraCharacteristics()} and check for the
+{@link android.hardware.camera2.CameraCharacteristics#REPROCESS_MAX_CAPTURE_STALL} key. If a
+device supports reprocessing, you can create a reprocessable camera capture session by calling
+<a href="/reference/android/hardware/camera2/CameraDevice.html#createReprocessableCaptureSession(android.hardware.camera2.params.InputConfiguration, java.util.List<android.view.Surface>, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler)"><code>createReprocessableCaptureSession()</code></a>,
+and create requests for input buffer reprocessing.</p>
+
+<p>Use the {@link android.media.ImageWriter} class to connect the input buffer flow to the camera
+reprocessing input. To get an empty buffer, follow this programming model:</p>
+
+<ol>
+<li>Call the {@link android.media.ImageWriter#dequeueInputImage()} method.</li>
+<li>Fill the data into the input buffer.</li>
+<li>Send the buffer to the  camera by calling the
+{@link android.media.ImageWriter#queueInputImage(android.media.Image) queueInputImage()} method.</li>
+</ol>
+
+<p>If you are using a {@link android.media.ImageWriter} object together with an
+{@link android.graphics.ImageFormat#PRIVATE} image, your app cannot access the image
+data directly. Instead, pass the {@link android.graphics.ImageFormat#PRIVATE} image directly to the
+{@link android.media.ImageWriter} by calling the
+{@link android.media.ImageWriter#queueInputImage(android.media.Image) queueInputImage()} method
+without any buffer copy.</p>
+
+<p>The {@link android.media.ImageReader} class now supports
+{@link android.graphics.ImageFormat#PRIVATE} format image streams. This support allows your app to
+maintain a circular image queue of {@link android.media.ImageReader} output images, select one or
+more images, and send them to the {@link android.media.ImageWriter} for camera reprocessing.</p>
+
+<h2 id="afw">Android for Work Features</h2>
+<p>This release includes the following new APIs for Android for Work:</p>
+<ul>
+  <li><strong>Enhanced controls for Corporate-Owned, Single-Use devices:</strong> The Device Owner
+can now control the following settings to improve management of
+Corporate-Owned, Single-Use (COSU) devices:
+  <ul>
+    <li>Disable or re-enable the keyguard with the
+{@link android.app.admin.DevicePolicyManager#setKeyguardDisabled(android.content.ComponentName, boolean)
+setKeyguardDisabled()} method.</li>
+    <li>Disable or re-enable the status bar (including quick settings, notifications, and the
+navigation swipe-up gesture that launches Google Now) with the
+{@link android.app.admin.DevicePolicyManager#setStatusBarDisabled(android.content.ComponentName, boolean) setStatusBarDisabled()}
+method.</li>
+    <li>Disable or re-enable safe boot with the {@link android.os.UserManager} constant
+{@link android.os.UserManager#DISALLOW_SAFE_BOOT}.</li>
+    <li>Prevent the screen from turning off while plugged in with the
+  {@link android.provider.Settings.Global#STAY_ON_WHILE_PLUGGED_IN} constant.</li>
+  </ul>
+  </li>
+  <li><strong>Silent install and uninstall of apps by Device Owner:</strong> A Device Owner can now
+silently install and uninstall applications using the {@link android.content.pm.PackageInstaller}
+APIs, independent of Google Play for Work. You can now provision devices through a Device Owner that
+fetches and installs apps without user interaction. This feature is useful for enabling one-touch
+provisioning of kiosks or other such devices without activating a Google account.</li>
+<li><strong>Silent enterprise certificate access: </strong> When an app calls
+{@link android.security.KeyChain#choosePrivateKeyAlias(android.app.Activity,android.security.KeyChainAliasCallback,java.lang.String[],java.security.Principal[],java.lang.String,int,java.lang.String) choosePrivateKeyAlias()},
+prior to the user being prompted to select a certificate, the Profile or Device Owner can now call
+the {@link android.app.admin.DeviceAdminReceiver#onChoosePrivateKeyAlias(android.content.Context, android.content.Intent, int, android.net.Uri, java.lang.String) onChoosePrivateKeyAlias()}
+method to provide the alias silently to the requesting application. This feature lets you grant
+managed apps access to certificates without user interaction.</li>
+<li><strong>Auto-acceptance of system updates.</strong> By setting a system update policy with
+{@link android.app.admin.DevicePolicyManager#setSystemUpdatePolicy(android.content.ComponentName, android.app.admin.SystemUpdatePolicy) setSystemUpdatePolicy()},
+a Device Owner can now auto-accept a system
+update, for instance in the case of a kiosk device, or postpone the update and prevent it being
+taken by the user for up to 30 days. Furthermore, an administrator can set a daily time window in
+which an update must be taken, for example during the hours when a kiosk device is not in use. When
+a system update is available, the system checks if the device policy controller app has set a system
+update policy, and behaves accordingly.
+</li>
+<li>
+<strong>Delegated certificate installation:</strong> A Profile or Device Owner can now grant a
+third-party app the ability to call these {@link android.app.admin.DevicePolicyManager} certificate
+management APIs:
+<ul>
+  <li>{@link android.app.admin.DevicePolicyManager#getInstalledCaCerts(android.content.ComponentName)
+getInstalledCaCerts()}</li>
+  <li>{@link android.app.admin.DevicePolicyManager#hasCaCertInstalled(android.content.ComponentName,byte[])
+hasCaCertInstalled()}</li>
+  <li>{@link android.app.admin.DevicePolicyManager#installCaCert(android.content.ComponentName,byte[])
+installCaCert()}</li>
+  <li>{@link android.app.admin.DevicePolicyManager#uninstallCaCert(android.content.ComponentName,byte[])
+uninstallCaCert()}</li>
+  <li>{@link android.app.admin.DevicePolicyManager#uninstallAllUserCaCerts(android.content.ComponentName)
+uninstallAllUserCaCerts()}</li>
+  <li>{@link android.app.admin.DevicePolicyManager#installKeyPair(android.content.ComponentName,java.security.PrivateKey,java.security.cert.Certificate,java.lang.String)
+installKeyPair()}</li>
+</ul>
+</li>
+<img src="{@docRoot}images/android-6.0/work-profile-screen.png"
+srcset="{@docRoot}images/android-6.0/work-profile-screen.png 1x, {@docRoot}images/android-6.0/work-profile-screen_2x.png 2x"
+style="float:right; margin:0 0 10px 20px" width="282" height="476" />
+<li><strong>Data usage tracking.</strong> A Profile or Device Owner can now query for the
+data usage statistics visible in <strong>Settings > Data</strong> usage by using the new
+{@link android.app.usage.NetworkStatsManager} methods. Profile Owners are automatically granted
+permission to query data on the profile they manage, while Device Owners get access to usage data
+of the managed primary user.</li>
+<li><strong>Runtime permission management:</strong>
+<p>A Profile or Device Owner can set a permission policy
+for all runtime requests of all applications using
+{@link android.app.admin.DevicePolicyManager#setPermissionPolicy(android.content.ComponentName, int)
+setPermissionPolicy()}, to either prompt the user to grant the permission or automatically grant or
+deny the permission silently. If the latter policy is set, the user cannot
+modify the selection made by the Profile or Device Owner within the app’s permissions screen in
+<strong>Settings</strong>.</p></li>
+<li><strong>VPN in Settings:</strong> VPN apps are now visible in
+    <strong>Settings > More > VPN</strong>.
+Additionally, the notifications that accompany VPN usage are now specific to how that VPN is
+configured. For Profile Owner, the notifications are specific to whether the VPN is configured
+for a managed profile, a personal profile, or both. For a Device Owner, the notifications are
+specific to whether the VPN is configured for the entire device.</li>
+<li><strong>Work status notification:</strong> A status bar briefcase icon now appears whenever
+an app from the managed profile has an activity in the foreground. Furthermore, if the device is
+unlocked directly to the activity of an app in the managed profile, a toast is displayed notifying
+the user that they are within the work profile.
+</li>
+</ul>
diff --git a/docs/html/about/versions/marshmallow/index.jd b/docs/html/about/versions/marshmallow/index.jd
new file mode 100644
index 0000000..35edd72
--- /dev/null
+++ b/docs/html/about/versions/marshmallow/index.jd
@@ -0,0 +1,88 @@
+page.title=Android 6.0 Marshmallow
+page.tags="marshmallow"
+meta.tags="marshamallow","android60"
+fullpage=true
+nonavpage=true
+forcelocalnav=true
+header.hide=1
+footer.hide=1
+@jd:body
+
+<section class="dac-expand dac-hero dac-light" >
+  <div class="wrap">
+    <div class="cols dac-hero-content">
+      <div class="col-9of16 col-push-7of16 dac-hero-figure">
+        <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png"
+             srcset="{@docRoot}images/home/devices-hero_620px.png 1x,
+             {@docRoot}images/home/devices-hero_620px_2x.png 2x">
+      </div>
+      <div class="col-7of16 col-pull-9of16">
+        <h1 class="dac-hero-title">Android 6.0 Marshmallow</h1>
+        <p class="dac-hero-description">
+          <strong>Get your apps ready for Android 6.0 Marshmallow!</strong>
+          Explore what's new &mdash; <strong>runtime permissions</strong>,
+          <strong>Doze</strong> and <strong>App Standby</strong> power-saving features, new
+          <strong>assist technology</strong>, and more.
+        </p>
+
+        <a class="dac-hero-cta" href="{@docRoot}about/versions/marshmallow/android-6.0-changes.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Get started
+        </a><br>
+      </div>
+    </div>
+    <div class="dac-section dac-small">
+      <div class="resource-widget resource-flow-layout col-16"
+           data-query="collection:marshmallow/landing/resources"
+           data-cardSizes="6x2"
+           data-maxResults="3">
+      </div>
+    </div>
+  </div>
+</section>
+
+<div class="wrap dac-offset-parent">
+  <a class="dac-fab dac-scroll-button" data-scroll-button href="#resources">
+    <i class="dac-sprite dac-arrow-down-gray"></i>
+  </a>
+</div>
+
+<section class="dac-section dac-gray" id="resources"><div class="wrap">
+  <h1 class="dac-section-title">Resources</h1>
+  <div class="dac-section-subtitle">
+    Essential information to help you get your apps ready for Android 6.0.
+  </div>
+
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:marshmallow/landing/more"
+       data-cardSizes="6x6"
+       data-items-per-page="15"
+       data-initial-results="3"></div>
+  </div>
+</section>
+
+<section class="dac-section" id="videos"><div class="wrap">
+  <h1 class="dac-section-title">Videos</h1>
+  <div class="dac-section-subtitle">
+    New Android capabilities and the right way to use them in your apps.
+  </div>
+
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:marshmallow/landing/videos"
+       data-cardSizes="6x6"
+       data-items-per-page="15"
+       data-initial-results="6"></div>
+  </div>
+</section>
+
+<section class="dac-section dac-gray dac-small" id="latest"><div class="wrap">
+  <h2 class="norule">Latest</h2>
+  <div class="resource-widget resource-flow-layout col-16"
+      data-query="type:blog+tag:marshmallow"
+      data-sortOrder="-timestamp"
+      data-cardSizes="6x6"
+      data-maxResults="24"
+      data-items-per-page="15"
+      data-initial-results="3">
+  </div>
+</section>
diff --git a/docs/html/about/versions/marshmallow/samples.jd b/docs/html/about/versions/marshmallow/samples.jd
new file mode 100644
index 0000000..1422151
--- /dev/null
+++ b/docs/html/about/versions/marshmallow/samples.jd
@@ -0,0 +1,89 @@
+page.title=Android 6.0 Samples
+page.image=images/cards/card-build_16x9_2x.png
+page.tags=marshmallow, samples
+meta.tags=marshmallow,androidm,samples
+page.metaDescription=Code to get your started with Android 6.0 APIs.
+@jd:body
+
+<p>
+  Download or browse sample projects to get started with Android 6.0
+  APIs (API level 23). You can download the samples
+  directly from Android Studio &mdash; just select the <b>File > Import
+  Samples</b> menu option and pick the sample you want.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> These downloadable projects are designed
+   for use with Gradle and Android Studio.
+</p>
+
+<ul>
+<li id="ActiveNotification">
+<a href="{@docRoot}samples/ActiveNotifications/index.html">Active Notification</a>: This sample demonstrates how the
+  <a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a>
+  can tell you how many notifications your app is currently showing.
+</li>
+
+<li id="AutomaticBackup">
+<a href="{@docRoot}samples/AutoBackupForApps/index.html">Auto Backup for Apps</a>: Android 6.0
+(API level 23) introduces automatic backup for app settings. This sample demonstrates how to add
+filtering rules to an app in order to manage settings backup.
+</li>
+
+<li id="CameraRaw">
+<a href="{@docRoot}samples/Camera2Raw/index.html">Camera 2 Raw</a>: This sample demonstrates how to
+use the <code>Camera2</code> API to capture RAW camera buffers and save them as
+<code>DNG</code> files.
+</li>
+
+<li id="ConfirmCredential">
+  <a href="{@docRoot}samples/ConfirmCredential/index.html">Confirm Credential</a>: This sample
+  demonstrates how to use device credentials as an authentication method in your app.
+</li>
+
+<li id="DeviceOwner"><a href="{@docRoot}samples/DeviceOwner/index.html">Device Owner</a>: This
+  sample demonstrates how to use the device owner features to manage and
+  configure a device.
+</li>
+
+<li id="DirectShare"><a href="{@docRoot}samples/DirectShare/index.html">Direct Share</a>:
+  This sample demonstrates how to provide the
+  <a href="{@docRoot}about/versions/marshmallow/android-6.0.html#direct-share">Direct Share</a>
+  feature. The app shows some options directly in the list of share intent candidates.
+</li>
+
+<li id="FingerprintDialog">
+  <a href="{@docRoot}samples/FingerprintDialog/index.html">Fingerprint
+  Dialog</a>:
+  This sample demonstrates how to recognize registered fingerprints to
+  authenticate your app's user.
+</li>
+
+<li id="MidiScope">
+  <a href="{@docRoot}samples/MidiScope/index.html">MidiScope</a>:
+  This sample demonstrates how to use the <a href=
+  "{@docRoot}reference/android/media/midi/package-summary.html">MIDI API</a> to
+  receive and process MIDI signals coming from an attached input device.
+</li>
+
+<li id="MidiSynth">
+  <a href="{@docRoot}samples/MidiSynth/index.html">MidiSynth</a>:
+  This sample demonstrates how to use the <a href=
+  "{@docRoot}reference/android/media/midi/package-summary.html">MIDI API</a> to
+  receive and play MIDI messages coming from an attached input device.
+</li>
+
+<li id="NfcProvisioning"><a href="{@docRoot}samples/NfcProvisioning/index.html">NFC Provisioning</a>:
+  This sample demonstrates how to use NFC to provision other devices with a
+  specific device owner.
+</li>
+
+<li id="RuntimePermissions">
+  <a href=
+  "{@docRoot}samples/RuntimePermissions/index.html">RuntimePermissions</a>:
+  This sample shows runtime permissions available in Android 6.0 (API level 23)
+  and higher. Display the log on screen to follow the execution. If executed on
+  an Android 6.0 device, the app displays an additional option to access
+  contacts using an 6.0-only optional permission.
+</li>
+</ul>
\ No newline at end of file
diff --git a/docs/html/auto/images/assets/landing/01.gif b/docs/html/auto/images/assets/landing/01.gif
index 7a75f87..1433463 100644
--- a/docs/html/auto/images/assets/landing/01.gif
+++ b/docs/html/auto/images/assets/landing/01.gif
Binary files differ
diff --git a/docs/html/auto/images/assets/landing/02.gif b/docs/html/auto/images/assets/landing/02.gif
index 655c5bc..c0f9e52 100644
--- a/docs/html/auto/images/assets/landing/02.gif
+++ b/docs/html/auto/images/assets/landing/02.gif
Binary files differ
diff --git a/docs/html/auto/images/assets/landing/03.gif b/docs/html/auto/images/assets/landing/03.gif
index 195315a..7dacf59 100644
--- a/docs/html/auto/images/assets/landing/03.gif
+++ b/docs/html/auto/images/assets/landing/03.gif
Binary files differ
diff --git a/docs/html/auto/images/assets/landing/04.png b/docs/html/auto/images/assets/landing/04.png
index aecdb58..2e0df02 100644
--- a/docs/html/auto/images/assets/landing/04.png
+++ b/docs/html/auto/images/assets/landing/04.png
Binary files differ
diff --git a/docs/html/auto/images/assets/landing/05.png b/docs/html/auto/images/assets/landing/05.png
index a3baba4..564a6fd 100644
--- a/docs/html/auto/images/assets/landing/05.png
+++ b/docs/html/auto/images/assets/landing/05.png
Binary files differ
diff --git a/docs/html/auto/images/assets/landing/06.png b/docs/html/auto/images/assets/landing/06.png
index fe74a49..dcbba9a 100644
--- a/docs/html/auto/images/assets/landing/06.png
+++ b/docs/html/auto/images/assets/landing/06.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/genesis.png b/docs/html/auto/images/logos/auto/genesis.png
new file mode 100644
index 0000000..488b888
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/genesis.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/jaguar.png b/docs/html/auto/images/logos/auto/jaguar.png
new file mode 100644
index 0000000..19778cb
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/jaguar.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/lambo.png b/docs/html/auto/images/logos/auto/lambo.png
new file mode 100644
index 0000000..c0d121c
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/lambo.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/landrover.png b/docs/html/auto/images/logos/auto/landrover.png
new file mode 100644
index 0000000..343b946
--- /dev/null
+++ b/docs/html/auto/images/logos/auto/landrover.png
Binary files differ
diff --git a/docs/html/auto/images/logos/auto/mahindra.png b/docs/html/auto/images/logos/auto/mahindra.png
index bd3957a..afed645 100644
--- a/docs/html/auto/images/logos/auto/mahindra.png
+++ b/docs/html/auto/images/logos/auto/mahindra.png
Binary files differ
diff --git a/docs/html/auto/images/ui/gearhead_custom_UI.png b/docs/html/auto/images/ui/gearhead_custom_UI.png
index a3baba4..fce7eb8 100644
--- a/docs/html/auto/images/ui/gearhead_custom_UI.png
+++ b/docs/html/auto/images/ui/gearhead_custom_UI.png
Binary files differ
diff --git a/docs/html/auto/images/ui/gearhead_custom_user_actions.png b/docs/html/auto/images/ui/gearhead_custom_user_actions.png
index 8e65ee04..5aedbb9 100644
--- a/docs/html/auto/images/ui/gearhead_custom_user_actions.png
+++ b/docs/html/auto/images/ui/gearhead_custom_user_actions.png
Binary files differ
diff --git a/docs/html/auto/images/ui/gearhead_day.png b/docs/html/auto/images/ui/gearhead_day.png
index a3baba4..5593caa 100644
--- a/docs/html/auto/images/ui/gearhead_day.png
+++ b/docs/html/auto/images/ui/gearhead_day.png
Binary files differ
diff --git a/docs/html/auto/images/ui/gearhead_drawer_generic.png b/docs/html/auto/images/ui/gearhead_drawer_generic.png
index 94dd305..1d6fc85 100644
--- a/docs/html/auto/images/ui/gearhead_drawer_generic.png
+++ b/docs/html/auto/images/ui/gearhead_drawer_generic.png
Binary files differ
diff --git a/docs/html/auto/images/ui/gearhead_drawers_customized.png b/docs/html/auto/images/ui/gearhead_drawers_customized.png
index fe74a49..308e8cf 100644
--- a/docs/html/auto/images/ui/gearhead_drawers_customized.png
+++ b/docs/html/auto/images/ui/gearhead_drawers_customized.png
Binary files differ
diff --git a/docs/html/auto/images/ui/gearhead_generic_UI.png b/docs/html/auto/images/ui/gearhead_generic_UI.png
index d7cd53d..cd51929 100644
--- a/docs/html/auto/images/ui/gearhead_generic_UI.png
+++ b/docs/html/auto/images/ui/gearhead_generic_UI.png
Binary files differ
diff --git a/docs/html/auto/images/ui/gearhead_lens_switching.png b/docs/html/auto/images/ui/gearhead_lens_switching.png
index 9fb8b65..39e4bc6 100644
--- a/docs/html/auto/images/ui/gearhead_lens_switching.png
+++ b/docs/html/auto/images/ui/gearhead_lens_switching.png
Binary files differ
diff --git a/docs/html/auto/images/ui/gearhead_night.png b/docs/html/auto/images/ui/gearhead_night.png
index 8f1ecdd..424df16 100644
--- a/docs/html/auto/images/ui/gearhead_night.png
+++ b/docs/html/auto/images/ui/gearhead_night.png
Binary files differ
diff --git a/docs/html/auto/images/ui/gearhead_overview.png b/docs/html/auto/images/ui/gearhead_overview.png
index 00b35ce..21948f7 100644
--- a/docs/html/auto/images/ui/gearhead_overview.png
+++ b/docs/html/auto/images/ui/gearhead_overview.png
Binary files differ
diff --git a/docs/html/auto/index.jd b/docs/html/auto/index.jd
index 2f0ffd5..843aabf 100644
--- a/docs/html/auto/index.jd
+++ b/docs/html/auto/index.jd
@@ -4,6 +4,7 @@
 no_footer_links=true
 page.type=about
 page.image=/images/cards/android-auto_2x.png
+nonavpage=true
 
 @jd:body
 
@@ -331,7 +332,8 @@
           </div>
           <div class="landing-body landing-align-center">
               <div class="landing-subhead">
-                Android Auto is coming soon to new cars from these manufacturers
+              We've partnered with manufacturers around the world to bring
+               the Android platform to cars.
               </div>
           </div>
 
@@ -430,20 +432,28 @@
               </a>
             </div>
             <div class="col-5">
+              <a href="http://www.genesismotors.com/en/index.html">
+                  <img src="{@docRoot}auto/images/logos/auto/genesis.png"
+                      width="120" height="120" class="img-logo" />
+              </a>
+            </div>
+
+            <div class="col-5">
               <a href="http://www.gmc.com/">
                   <img src="{@docRoot}auto/images/logos/auto/gmc.png"
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
+            </div>
+            <div class="cols cols-leftp">
             <div class="col-5">
               <a href="http://www.holden.com/">
                   <img src="{@docRoot}auto/images/logos/auto/holden.png"
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
-          </div>
 
-          <div class="cols cols-leftp">
+
             <div class="col-5">
               <a href="http://www.honda.com/">
                   <img src="{@docRoot}auto/images/logos/auto/honda.png"
@@ -462,15 +472,21 @@
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
+            </div>
+            <div class="cols cols-leftp">
+             <div class="col-5">
+              <a href="http://www.jaguar.com/index.html">
+                  <img src="{@docRoot}auto/images/logos/auto/jaguar.png"
+                      width="120" height="120" class="img-logo" />
+              </a>
+            </div>
             <div class="col-5">
               <a href="http://www.jeep.com/">
                   <img src="{@docRoot}auto/images/logos/auto/jeep.png"
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
-          </div>
 
-          <div class="cols cols-leftp">
             <div class="col-5">
               <a href="http://www.kia.com/worldwide/">
                   <img src="{@docRoot}auto/images/logos/auto/kia.png"
@@ -478,6 +494,21 @@
               </a>
             </div>
             <div class="col-5">
+              <a href=" http://www.lamborghini.com/">
+                  <img src="{@docRoot}auto/images/logos/auto/lambo.png"
+                      width="120" height="120" class="img-logo" />
+              </a>
+            </div>
+            </div>
+            <div class="cols cols-leftp">
+            <div class="col-5">
+              <a href=" http://www.landrover.com/">
+                  <img src="{@docRoot}auto/images/logos/auto/landrover.png"
+                      width="120" height="120" class="img-logo" />
+              </a>
+            </div>
+
+            <div class="col-5">
               <a href="http://www.mahindra.com/">
                   <img src="{@docRoot}auto/images/logos/auto/mahindra.png"
                       width="120" height="120" class="img-logo" />
@@ -495,15 +526,16 @@
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
-          </div>
+            </div>
 
-          <div class="cols cols-leftp">
-            <div class="col-5">
+              <div class="cols cols-leftp">
+              <div class="col-5">
               <a href="http://www.mitsubishi-motors.com/">
                   <img src="{@docRoot}auto/images/logos/auto/mitsubishi.png"
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
+
             <div class="col-5">
               <a href="http://www.nissan-global.com/">
                   <img src="{@docRoot}auto/images/logos/auto/nissan.png"
@@ -522,15 +554,15 @@
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
-          </div>
-
-          <div class="cols cols-leftp">
+            </div>
+            <div class="cols cols-leftp">
             <div class="col-5">
               <a href="http://www.ramtrucks.com/">
                   <img src="{@docRoot}auto/images/logos/auto/ram.png"
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
+
             <div class="col-5">
               <a href="http://www.renault.com/">
                   <img src="{@docRoot}auto/images/logos/auto/renault.png"
@@ -549,21 +581,23 @@
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
-          </div>
-
-          <div class="cols cols-leftp">
+            </div>
+            <div class="cols cols-leftp">
             <div class="col-5">
               <a href="http://www.smotor.com/">
                   <img src="{@docRoot}auto/images/logos/auto/ssangyong.png"
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
+
             <div class="col-5">
               <a href="http://www.subaru-global.com/">
                   <img src="{@docRoot}auto/images/logos/auto/subaru.png"
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
+
+
             <div class="col-5">
               <a href="http://www.globalsuzuki.com/automobile/">
                   <img src="{@docRoot}auto/images/logos/auto/suzuki.png"
@@ -576,25 +610,22 @@
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
-          </div>
-
-          <div class="cols cols-leftp">
-            <div class="col-5"></div>
+            </div>
+            <div class="cols cols-leftp">
             <div class="col-5">
               <a href="http://www.volkswagen.com/">
                   <img src="{@docRoot}auto/images/logos/auto/volkswagen.png"
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
+
             <div class="col-5">
               <a href="http://www.volvocars.com/intl">
                   <img src="{@docRoot}auto/images/logos/auto/volvo.png"
                       width="120" height="120" class="img-logo" />
               </a>
             </div>
-            <div class="col-5"></div>
-
-          </div>
+            </div>
         </div>
       </div>
 
@@ -619,25 +650,6 @@
         </div>
       </div>
   </div>
-  <div class="content-footer wrap" itemscope="" itemtype="http://schema.org/SiteNavigationElement"
-    style="border-top: none;">
-
-    <div class="layout-content-col col-16" style="padding-top:4px">
-      <style>#___plusone_0 {float:right !important;}</style>
-      <div class="g-plusone" data-size="medium"></div>
-    </div>
-  </div>
-
-  <div id="footer" class="wrap" style="width:940px;position:relative;top:-35px;z-index:-1">
-    <div id="copyright">
-        Except as noted, this content is
-        licensed under <a href="http://creativecommons.org/licenses/by/2.5/">
-        Creative Commons Attribution 2.5</a>. For details and
-        restrictions, see the <a href="{@docRoot}license.html">Content
-        License</a>.
-    </div>
-  </div>
-</div> <!-- end .landing-hero-container -->
 
   <script>
   $("a.landing-down-arrow").on("click", function(e) {
diff --git a/docs/html/design/_book.yaml b/docs/html/design/_book.yaml
new file mode 100644
index 0000000..4575475
--- /dev/null
+++ b/docs/html/design/_book.yaml
@@ -0,0 +1,111 @@
+toc:
+- title: Creative Vision
+  path: /design/get-started/creative-vision.html
+  section:
+  - title: Design Principles
+    path: /design/get-started/principles.html
+    custom_link_attributes:
+    - es-lang="Principios de diseño para Android"
+    - ja-lang="Android デザイン指針"
+    - ko-lang="Android 디자인 원칙"
+    - pt-br-lang="Princípios de projeto para Android"
+    - ru-lang="Принципы проектирования Android"
+    - zh-cn-lang="Android 设计原则"
+    - zh-tw-lang="Android 設計原則"
+  - title: New in Android
+    path: /design/patterns/new.html
+
+- title: Material for Android
+  path: /design/material/index.html
+  custom_link_attributes:
+  - ja-lang="マテリアル デザイン"
+  - ko-lang="머티어리얼 디자인"
+  - zh-cn-lang="材料设计"
+  - zh-tw-lang="材料設計"
+
+- title: Devices
+  path: /design/devices.html
+  section:
+  - title: Phones & Tablets
+    path: /design/handhelds/index.html
+  - title: Wear
+    path: /design/wear/index.html
+    section:
+    - title: Creative Vision
+      path: /design/wear/creative-vision.html
+    - title: Design Principles
+      path: /design/wear/principles.html
+    - title: App Structure
+      path: /design/wear/structure.html
+    - title: Context Awareness
+      path: /design/wear/context.html
+    - title: UI Patterns
+      path: /design/wear/patterns.html
+    - title: Style
+      path: /design/wear/style.html
+    - title: Watch Faces
+      path: /design/wear/watchfaces.html
+  - title: TV
+    path: /design/tv/index.html
+    section:
+    - title: Creative Vision
+      path: /design/tv/principles.html
+    - title: UI Patterns
+      path: /design/tv/patterns.html
+    - title: Style
+      path: /design/tv/style.html
+  - title: Auto
+    path: /design/auto/index.html
+
+- title: Pure Android
+  path: /design/patterns/index.html
+  section:
+  - title: Devices and Displays
+    path: /design/style/devices-displays.html
+  - title: Navigation
+    path: /design/patterns/navigation.html
+    custom_link_attributes:
+    - es-lang="Navegación con los botones Back y Up"
+    - ja-lang="Back と Up を使用したナビゲーション"
+    - ko-lang="뒤로 및 위로 탐색 기능이 포함된 탐색"
+    - pt-br-lang="Navegação com Voltar e Para cima"
+    - ru-lang="Навигация с помощью кнопок \"Назад\" и \"Вверх\""
+    - zh-cn-lang="使用返回和向上导航"
+    - zh-tw-lang="使用 [返回] 及 [上一層] 導覽"
+  - title: Notifications
+    path: /design/patterns/notifications.html
+    custom_link_attributes:
+    - es-lang="Notificaciones"
+    - ja-lang="通知"
+    - ko-lang="알림"
+    - pt-br-lang="Notificações"
+    - ru-lang="Уведомления"
+    - zh-cn-lang="通知"
+    - zh-tw-lang="通知"
+  - title: Widgets
+    path: /design/patterns/widgets.html
+  - title: Swipe Views
+    path: /design/patterns/swipe-views.html
+  - title: Full Screen
+    path: /design/patterns/fullscreen.html
+  - title: Confirming & Acknowledging
+    path: /design/patterns/confirming-acknowledging.html
+    custom_link_attributes:
+    - es-lang="Confirmación y reconocimiento"
+    - ja-lang="確認と通知"
+    - ko-lang="확인 및 승인하기"
+    - pt-br-lang="Confirmação e reconhecimento"
+    - ru-lang="Подтверждение и уведомление"
+    - zh-cn-lang="确认和确知"
+    - zh-tw-lang="確認及確認完成"
+  - title: Pure Android
+    path: /design/patterns/pure-android.html
+  - title: Compatibility
+    path: /design/patterns/compatibility.html
+  - title: Accessibility
+    path: /design/patterns/accessibility.html
+  - title: Help
+    path: /design/patterns/help.html
+
+- title: Downloads
+  path: /design/downloads/index.html
diff --git a/docs/html/design/auto/index.jd b/docs/html/design/auto/index.jd
index 49bd221..117ce63 100644
--- a/docs/html/design/auto/index.jd
+++ b/docs/html/design/auto/index.jd
@@ -2,13 +2,6 @@
 page.tags="design","Auto"
 @jd:body
 
-<a class="notice-developers" href="{@docRoot}training/auto/index.html">
-  <div>
-    <h3>Developer Docs</h3>
-    <p>Building Apps for Auto</p>
-  </div>
-</a>
-
 <div class="sidebox-wrapper">
 <div class="sidebox">
   <h2><strong>UI Guidelines</strong></h2>
@@ -26,6 +19,22 @@
 </div>
 </div>
 
+<a class="notice-developers" href="{@docRoot}training/auto/index.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Building Apps for Auto</p>
+  </div>
+</a>
+
+<a href="http://www.youtube.com/watch?v=vG9c5egwEYY"
+        class="notice-developers-video">
+<div>
+    <h3>Video</h3>
+    <p>Designing For Drivers</p>
+</div>
+</a>
+
+
 <p>Android Auto provide a standardized user interface and user interaction
 model that works across vehicles. As a designer, you do not
 need to worry about vehicle-specific hardware differences. This page
diff --git a/docs/html/design/design_toc.cs b/docs/html/design/design_toc.cs
index 477eb23..a837a04 100644
--- a/docs/html/design/design_toc.cs
+++ b/docs/html/design/design_toc.cs
@@ -18,13 +18,11 @@
 
   <li class="nav-section">
     <div class="nav-section-header empty"><a href="<?cs var:toroot ?>design/material/index.html"
-       es-lang="Material Design"
        ja-lang="マテリアル デザイン"
        ko-lang="머티어리얼 디자인"
-       pt-br-lang="Material Design"
-       ru-lang="Material Design"
        zh-cn-lang="材料设计"
-       zh-tw-lang="材料設計">
+       zh-tw-lang="材料設計"
+       >
     Material for Android</a></div>
   </li>
 
@@ -59,10 +57,9 @@
   </li>
 
   <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot ?>design/style/index.html">Pure Android</a></div>
+    <div class="nav-section-header"><a href="<?cs var:toroot ?>design/patterns/index.html">Pure Android</a></div>
     <ul>
       <li><a href="<?cs var:toroot ?>design/style/devices-displays.html">Devices and Displays</a></li>
-      <li><a href="<?cs var:toroot ?>design/patterns/app-structure.html">App Structure</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/navigation.html"
        es-lang="Navegación con los botones Back y Up"
        ja-lang="Back と Up を使用したナビゲーション"
@@ -85,7 +82,6 @@
       <li><a href="<?cs var:toroot ?>design/patterns/widgets.html">Widgets</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/swipe-views.html">Swipe Views</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/fullscreen.html">Full Screen</a></li>
-
       <li><a href="<?cs var:toroot ?>design/patterns/confirming-acknowledging.html"
        es-lang="Confirmación y reconocimiento"
        ja-lang="確認と通知"
@@ -95,7 +91,6 @@
        zh-cn-lang="确认和确知"
        zh-tw-lang="確認及確認完成">
        Confirming &amp; Acknowledging</a></li>
-
       <li><a href="<?cs var:toroot ?>design/patterns/pure-android.html">Pure Android</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/compatibility.html">Compatibility</a></li>
       <li><a href="<?cs var:toroot ?>design/patterns/accessibility.html">Accessibility</a></li>
diff --git a/docs/html/design/devices.jd b/docs/html/design/devices.jd
index 3d23d07..4616836 100644
--- a/docs/html/design/devices.jd
+++ b/docs/html/design/devices.jd
@@ -1,7 +1,5 @@
 page.title=Android devices
-page.viewport_width=970
 section.landing=true
-header.hide=1
 footer.hide=1
 page.image=images/cards/android-devices_2x.jpg
 @jd:body
diff --git a/docs/html/design/downloads/index.jd b/docs/html/design/downloads/index.jd
index 089a4af..788c7c1 100644
--- a/docs/html/design/downloads/index.jd
+++ b/docs/html/design/downloads/index.jd
@@ -1,8 +1,11 @@
 page.title=Downloads
-page.tags=Icons,stencils,color swatches
+page.tags="icons","stencils","colors,"swatches"
+meta.tags="downloads, design, tools"
+section.landing=true
+footer.hide=true
+nonavpage=true
+forcelocalnav=true
 @jd:body
-
-
 <p>For icons, sticker sheets, and other downloadable resources, visit the
 <a href="http://www.google.com/design">Design site</a> or use the links below. </p>
 
@@ -28,10 +31,10 @@
   </div>
   <div class="col-4">
   <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Wear Toolkit AI');"
-    href="{@docRoot}downloads/design/Android_Wear_Toolkit_20140722.ai">Adobe&reg; Illustrator&reg; Toolkit</a>
+    href="{@docRoot}downloads/design/Android_Wear_Toolkit_371.ai">Adobe&reg; Illustrator&reg; Toolkit</a>
 
   <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Wear Toolkit PDF');"
-    href="{@docRoot}downloads/design/Android_Wear_Toolkit_20140722.pdf">PDF Toolkit</a>
+    href="{@docRoot}downloads/design/Android_Wear_Toolkit_371.pdf">PDF Toolkit</a>
   </div>
 </div>
 
@@ -105,7 +108,7 @@
   <div class="col-4">
 
     <img src="{@docRoot}design/media/downloads_wear_Slide_Ai_Icon.png" width="150"
-         style="width:150px;margin:0 auto;display:block">
+         style="width:150px;margin:0 auto 15px;display:block">
 
   </div>
   <div class="col-4">
@@ -125,7 +128,7 @@
   <div class="col-4">
 
     <img src="{@docRoot}design/media/downloads_wear_Slide_Psd_Icon.png" width="150"
-         style="width:150px;margin:0 auto;display:block">
+         style="width:150px;margin:0 auto 15px;display:block">
 
   </div>
   <div class="col-4">
@@ -145,11 +148,35 @@
   <div class="col-4">
 
     <img src="{@docRoot}design/media/downloads_wear_Slide_IconExample.png" width="150"
-         style="width:150px;margin:0 auto;display:block">
+         style="width:150px;margin:0 auto 20px;display:block">
 
   </div>
   <div class="col-4">
   <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Wear Watch Face Example Specifications');"
     href="{@docRoot}downloads/design/Slide_IconExample.psd">Adobe&reg; Photoshop&reg; Icon</a>
   </div>
+</div>
+
+<div class="cols">
+  <div class="col-5">
+  <h4>Hardware technical drawings</h4>
+<p>Technical drawings and specifications for the latest Android Wear devices.
+</p>
+
+  </div>
+  <div class="col-4">
+
+    <img src="{@docRoot}design/media/nemo_preview.png" width="150"
+         style="width:150px;margin:0 auto;display:block">
+
+  </div>
+  <div class="col-4">
+  <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Hardware Technical Drawings');"
+    href="{@docRoot}downloads/design/AndroidWear_AllGear_TechDrawings&Spec_20151101_square.png">
+PNG Toolkit (Square)</a>
+
+  <a class="download-button"  onClick="ga('send', 'event', 'Design', 'Download', 'Hardware Technical Drawings');"
+    href="{@docRoot}downloads/design/AndroidWear_AllGear_TechDrawings&Spec_20151101_round.png">
+PNG Toolkit (Round)</a>
+  </div>
 </div>
\ No newline at end of file
diff --git a/docs/html/design/get-started/creative-vision.jd b/docs/html/design/get-started/creative-vision.jd
index 974d5d0..26bc1b2 100644
--- a/docs/html/design/get-started/creative-vision.jd
+++ b/docs/html/design/get-started/creative-vision.jd
@@ -1,8 +1,11 @@
 page.title=Creative Vision
+section.landing=true
+footer.hide=1
 page.image=images/cards/design-creative-vision_2x.jpg
+
 @jd:body
 
-<img src="{@docRoot}design/media/creative_vision_main.png">
+<img src="{@docRoot}design/media/creative_vision_main.png" style="width:100%;margin-top:">
 
 <div class="vspace size-1">&nbsp;</div>
 
@@ -15,7 +18,7 @@
 <div class="vspace size-1">&nbsp;</div>
 
 <div class="cols">
-  <div class="col-4">
+  <div class="col-1of3">
 
 <h4>Enchant me</h4>
 <p>Beauty is more than skin deep. Android apps are sleek and aesthetically pleasing on multiple levels.
@@ -24,7 +27,7 @@
 simplicity and purpose to create a magical experience that is effortless and powerful.</p>
 
   </div>
-  <div class="col-5">
+  <div class="col-1of3">
 
 <h4>Simplify my life</h4>
 <p>Android apps make life easier and are easy to understand. When people use your app for the first
@@ -35,7 +38,7 @@
 irrelevant flash.</p>
 
   </div>
-  <div class="col-4">
+  <div class="col-1of3">
 
 <h4>Make me amazing</h4>
 <p>It's not enough to make an app that is easy to use. Android apps empower people to try new things
diff --git a/docs/html/design/get-started/principles.jd b/docs/html/design/get-started/principles.jd
index 172a4e4..9e8a371 100644
--- a/docs/html/design/get-started/principles.jd
+++ b/docs/html/design/get-started/principles.jd
@@ -15,7 +15,7 @@
 <h2 id="enchant-me">Enchant Me</h2>
 
 <div class="cols">
-  <div class="col-7">
+  <div class="col-7of12">
 
 <h4 id="delight-me">Delight me in surprising ways</h4>
 <p>A beautiful surface, a carefully-placed animation, or a well-timed sound effect is a joy to
@@ -23,7 +23,7 @@
 force is at hand.</p>
 
   </div>
-  <div class="col-6">
+  <div class="col-5of12">
 
     <img src="{@docRoot}design/media/principles_delight.png">
 
@@ -33,14 +33,14 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <div class="cols">
-  <div class="col-7">
+  <div class="col-7of12">
 
 <h4 id="real-objects-more-fun">Real objects are more fun than buttons and menus</h4>
 <p>Allow people to directly touch and manipulate objects in your app. It reduces the cognitive effort
 needed to perform a task while making it more emotionally satisfying.</p>
 
   </div>
-  <div class="col-6">
+  <div class="col-5of12">
 
     <img src="{@docRoot}design/media/principles_real_objects.png">
 
@@ -50,7 +50,7 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <div class="cols">
-  <div class="col-7">
+  <div class="col-7of12">
 
 <h4 id="make-it-mine">Let me make it mine</h4>
 <p>People love to add personal touches because it helps them feel at home and in control. Provide
@@ -58,7 +58,7 @@
 primary tasks.</p>
 
   </div>
-  <div class="col-6">
+  <div class="col-5of12">
 
     <img src="{@docRoot}design/media/principles_make_it_mine.png">
 
@@ -68,14 +68,14 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <div class="cols">
-  <div class="col-7">
+  <div class="col-7of12">
 
 <h4 id="get-to-know-me">Get to know me</h4>
 <p>Learn peoples' preferences over time. Rather than asking them to make the same choices over and
 over, place previous choices within easy reach.</p>
 
   </div>
-  <div class="col-6">
+  <div class="col-5of12">
 
     <img src="{@docRoot}design/media/principles_get_to_know_me.png">
 
@@ -85,13 +85,13 @@
 <h2 id="simplify-my-life">Simplify My Life</h2>
 
 <div class="cols">
-  <div class="col-7">
+  <div class="col-7of12">
 
 <h4 id="keep-it-brief">Keep it brief</h4>
 <p>Use short phrases with simple words. People are likely to skip sentences if they're long.</p>
 
   </div>
-  <div class="col-6">
+  <div class="col-5of12">
 
     <img src="{@docRoot}design/media/principles_keep_it_brief.png">
 
@@ -101,14 +101,14 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <div class="cols">
-  <div class="col-7">
+  <div class="col-7of12">
 
 <h4 id="pictures-faster-than-words">Pictures are faster than words</h4>
 <p>Consider using pictures to explain ideas. They get people's attention and can be much more efficient
 than words.</p>
 
   </div>
-  <div class="col-6">
+  <div class="col-5of12">
 
     <img src="{@docRoot}design/media/principles_pictures.png">
 
@@ -118,14 +118,14 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <div class="cols">
-  <div class="col-7">
+  <div class="col-7of12">
 
 <h4 id="decide-for-me">Decide for me but let me have the final say</h4>
 <p>Take your best guess and act rather than asking first. Too many choices and decisions make people
 unhappy. Just in case you get it wrong, allow for 'undo'.</p>
 
   </div>
-  <div class="col-6">
+  <div class="col-5of12">
 
     <img src="{@docRoot}design/media/principles_decide_for_me.png">
 
@@ -135,14 +135,14 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <div class="cols">
-  <div class="col-7">
+  <div class="col-7of12">
 
 <h4 id="only-show-when-i-need-it">Only show what I need when I need it</h4>
 <p>People get overwhelmed when they see too much at once. Break tasks and information into small,
 digestible chunks. Hide options that aren't essential at the moment, and teach people as they go.</p>
 
   </div>
-  <div class="col-6">
+  <div class="col-5of12">
 
     <img src="{@docRoot}design/media/principles_information_when_need_it.png">
 
@@ -152,14 +152,14 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <div class="cols">
-  <div class="col-7">
+  <div class="col-7of12">
 
 <h4 id="always-know-where-i-am">I should always know where I am</h4>
 <p>Give people confidence that they know their way around. Make places in your app look distinct and
 use transitions to show relationships among screens. Provide feedback on tasks in progress.</p>
 
   </div>
-  <div class="col-6">
+  <div class="col-5of12">
 
     <img src="{@docRoot}design/media/principles_navigation.png">
 
@@ -169,7 +169,7 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <div class="cols">
-  <div class="col-7">
+  <div class="col-7of12">
 
 <h4 id="never-lose-my-stuff">Never lose my stuff</h4>
 <p>Save what people took time to create and let them access it from anywhere. Remember settings,
@@ -177,7 +177,7 @@
 easiest thing in the world.</p>
 
   </div>
-  <div class="col-6">
+  <div class="col-5of12">
 
     <img src="{@docRoot}design/media/principles_never_lose_stuff.png">
 
@@ -187,14 +187,14 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <div class="cols">
-  <div class="col-7">
+  <div class="col-7of12">
 
 <h4 id="looks-same-should-act-same">If it looks the same, it should act the same</h4>
 <p>Help people discern functional differences by making them visually distinct rather than subtle.
 Avoid modes, which are places that look similar but act differently on the same input.</p>
 
   </div>
-  <div class="col-6">
+  <div class="col-5of12">
 
     <img src="{@docRoot}design/media/principles_looks_same.png">
 
@@ -204,14 +204,14 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <div class="cols">
-  <div class="col-7">
+  <div class="col-7of12">
 
 <h4 id="interrupt-only-if-important">Only interrupt me if it's important</h4>
 <p>Like a good personal assistant, shield people from unimportant minutiae. People want to stay
 focused, and unless it's critical and time-sensitive, an interruption can be taxing and frustrating.</p>
 
   </div>
-  <div class="col-6">
+  <div class="col-5of12">
 
     <img src="{@docRoot}design/media/principles_important_interruption.png">
 
@@ -221,7 +221,7 @@
 <h2 id="make-me-amazing">Make Me Amazing</h2>
 
 <div class="cols">
-  <div class="col-7">
+  <div class="col-7of12">
 
 <h4 id="give-me-tricks">Give me tricks that work everywhere</h4>
 <p>People feel great when they figure things out for themselves. Make your app easier to learn by
@@ -229,7 +229,7 @@
 may be a good navigational shortcut.</p>
 
   </div>
-  <div class="col-6">
+  <div class="col-5of12">
 
     <img src="{@docRoot}design/media/principles_tricks.png">
 
@@ -239,7 +239,7 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <div class="cols">
-  <div class="col-7">
+  <div class="col-7of12">
 
 <h4 id="its-not-my-fault">It's not my fault</h4>
 <p>Be gentle in how you prompt people to make corrections. They want to feel smart when they use your
@@ -247,7 +247,7 @@
 If you can fix it behind the scenes, even better.</p>
 
   </div>
-  <div class="col-6">
+  <div class="col-5of12">
 
     <img src="{@docRoot}design/media/principles_error.png">
 
@@ -257,14 +257,14 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <div class="cols">
-  <div class="col-7">
+  <div class="col-7of12">
 
 <h4 id="sprinkle-encouragement">Sprinkle encouragement</h4>
 <p>Break complex tasks into smaller steps that can be easily accomplished. Give feedback on actions,
 even if it's just a subtle glow.</p>
 
   </div>
-  <div class="col-6">
+  <div class="col-5of12">
 
     <img src="{@docRoot}design/media/principles_sprinkle_encouragement.png">
 
@@ -274,7 +274,7 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <div class="cols">
-  <div class="col-7">
+  <div class="col-7of12">
 
 <h4 id="do-heavy-lifting-for-me">Do the heavy lifting for me</h4>
 <p>Make novices feel like experts by enabling them to do things they never thought they could. For
@@ -282,7 +282,7 @@
 only a few steps.</p>
 
   </div>
-  <div class="col-6">
+  <div class="col-5of12">
 
     <img src="{@docRoot}design/media/principles_heavy_lifting.png">
 
@@ -292,14 +292,14 @@
 <div class="vspace size-2">&nbsp;</div>
 
 <div class="cols">
-  <div class="col-7">
+  <div class="col-7of12">
 
 <h4 id="make-important-things-fast">Make important things fast</h4>
 <p>Not all actions are equal. Decide what's most important in your app and make it easy to find and
 fast to use, like the shutter button in a camera, or the pause button in a music player.</p>
 
   </div>
-  <div class="col-6">
+  <div class="col-5of12">
 
     <img src="{@docRoot}design/media/principles_make_important_fast.png">
 
diff --git a/docs/html/design/handhelds/index.jd b/docs/html/design/handhelds/index.jd
old mode 100644
new mode 100755
index 81c2c19..4a4526c
--- a/docs/html/design/handhelds/index.jd
+++ b/docs/html/design/handhelds/index.jd
@@ -79,9 +79,9 @@
 </li>
 <li>
 <h4>Navigation Bar</h4>
-<p>New for phones in Android 4.0, the navigation bar is present only on devices that don't have
+<p>The navigation bar is present only on devices that don't have
   the traditional hardware keys. It houses the device navigation controls Back, Home, and
-  Recents, and also displays a menu for apps written for Android 2.3 or earlier.</p>
+  Recents.</p>
 </li>
 </ol>
 
diff --git a/docs/html/design/index.jd b/docs/html/design/index.jd
index 799a64f..b4e909f 100644
--- a/docs/html/design/index.jd
+++ b/docs/html/design/index.jd
@@ -1,10 +1,11 @@
 fullpage=true
 page.title=Design
-page.viewport_width=970
 section.landing=true
 meta.tags="beautifulapps, design, ux, patterns, holo, appquality, landing"
+page.metaDescription=Create beautiful experiences in your apps.
 header.hide=1
 footer.hide=1
+nonavpage=true
 @jd:body
 
 <section class="dac-expand dac-hero dac-light">
@@ -46,7 +47,7 @@
     <i class="dac-sprite dac-arrow-down-gray"></i>
   </a>
 </div>
-<section class="dac-section dac-gray dac-small dac-invert" id="latest"><div class="wrap">
+<section class="dac-section dac-gray dac-small" id="latest"><div class="wrap">
   <h2 class="norule">Latest</h2>
   <div class="resource-widget resource-flow-layout col-16"
        data-query="collection:design/landing/latest"
diff --git a/docs/html/design/material/index.jd b/docs/html/design/material/index.jd
index c5893a7..701c951 100644
--- a/docs/html/design/material/index.jd
+++ b/docs/html/design/material/index.jd
@@ -1,8 +1,8 @@
 page.title=Material Design for Android
 page.tags=Material,design
-page.type=design
 page.image=images/cards/design-material-for-android_2x.jpg
-
+footer.hide=true
+forcelocalnav=true
 @jd:body
 
 <!-- developer docs box -->
diff --git a/docs/html/design/media/nemo_preview.png b/docs/html/design/media/nemo_preview.png
new file mode 100644
index 0000000..757b87a
--- /dev/null
+++ b/docs/html/design/media/nemo_preview.png
Binary files differ
diff --git a/docs/html/design/patterns/actionbar.jd b/docs/html/design/patterns/actionbar.jd
index ef02c53..262172b 100644
--- a/docs/html/design/patterns/actionbar.jd
+++ b/docs/html/design/patterns/actionbar.jd
@@ -13,10 +13,10 @@
   </div>
 </a>
 
-<a class="notice-developers" href="{@docRoot}guide/topics/ui/actionbar.html">
+<a class="notice-developers" href="{@docRoot}training/appbar/index.html">
   <div>
     <h3>Developer Docs</h3>
-    <p>Action Bar</p>
+    <p>Adding the App Bar</p>
   </div>
 </a>
 
diff --git a/docs/html/design/patterns/index.jd b/docs/html/design/patterns/index.jd
new file mode 100644
index 0000000..01e5c0d
--- /dev/null
+++ b/docs/html/design/patterns/index.jd
@@ -0,0 +1,29 @@
+page.title=Pure Android
+footer.hide=1
+@jd:body
+
+<style>
+#landing-graphic-container {
+  position: relative;
+}
+
+#text-overlay {
+  position: absolute;
+  left: 0;
+  top: 402px;
+  width: 220px;
+}
+</style>
+
+<div id="landing-graphic-container">
+  <div id="text-overlay">
+    <span itemprop="description">Build visually compelling apps that look great on any
+    device.</span>
+    <br><br>
+    <a href="{@docRoot}design/style/devices-displays.html" class="landing-page-link">Devices and Displays</a>
+  </div>
+
+  <a href="{@docRoot}design/style/devices-displays.html">
+    <img src="{@docRoot}design/media/design_elements_landing.png">
+  </a>
+</div>
diff --git a/docs/html/design/patterns/navigation.jd b/docs/html/design/patterns/navigation.jd
old mode 100644
new mode 100755
index 703528e..abb3a73
--- a/docs/html/design/patterns/navigation.jd
+++ b/docs/html/design/patterns/navigation.jd
@@ -11,11 +11,10 @@
 </a>
 
 <p itemprop="description">Consistent navigation is an essential component of the overall user experience. Few things frustrate
-users more than basic navigation that behaves in inconsistent and unexpected ways. Android 3.0
-introduced significant changes to the global navigation behavior. Thoughtfully following the
-guidelines for Back and Up will make your app's navigation predictable and reliable for your users.</p>
-<p>Android 2.3 and earlier relied upon the system <em>Back</em> button for supporting navigation within an
-app. With the introduction of action bars in Android 3.0, a second navigation mechanism appeared:
+users more than basic navigation that behaves in inconsistent and unexpected ways. Thoughtfully
+following the guidelines for Back and Up will make your app's navigation predictable and reliable
+for your users.</p>
+<p>Action bars provide a second, standard navigation mechanism:
 the <em>Up</em> button, consisting of the app icon and a left-point caret.</p>
 
 <img src="{@docRoot}design/media/navigation_with_back_and_up.png">
diff --git a/docs/html/design/patterns/new.jd b/docs/html/design/patterns/new.jd
old mode 100644
new mode 100755
index 47b05b2..df4c2ed
--- a/docs/html/design/patterns/new.jd
+++ b/docs/html/design/patterns/new.jd
@@ -196,10 +196,7 @@
   <div class="col-7">
     <p>Android 4.0 removes the need for traditional hardware keys on
     phones by replacing them with a virtual navigation bar that houses
-    the Back, Home and Recents buttons. Read the
-    <a href="{@docRoot}design/patterns/compatibility.html">Compatibility</a>
-    pattern to learn how the OS adapts to phones with hardware buttons and
-    how pre-Android 3.0 apps that rely on menu keys are supported.</p>
+    the Back, Home and Recents buttons.</p>
   </div>
   <div class="col-6">
     <img src="{@docRoot}design/media/whats_new_nav_bar.png">
diff --git a/docs/html/design/patterns/notifications.jd b/docs/html/design/patterns/notifications.jd
index fdd435c..844c3b6 100644
--- a/docs/html/design/patterns/notifications.jd
+++ b/docs/html/design/patterns/notifications.jd
@@ -1,22 +1,22 @@
 page.title=Notifications
-page.tags="notifications","design","L"
+page.tags="notifications","design"
 @jd:body
 
-  <a class="notice-developers" href="{@docRoot}training/notify-user/index.html">
+  <a class="notice-developers right" href="{@docRoot}training/notify-user/index.html">
   <div>
     <h3>Developer Docs</h3>
     <p>Notifying the User</p>
   </div>
 </a>
 
-<a class="notice-designers" href="notifications_k.html">
+<a class="notice-designers right" href="notifications_k.html">
   <div>
     <h3>Notifications in Android 4.4 and Lower</h3>
   </div>
 </a>
 
 <!-- video box -->
-<a class="notice-developers-video" href="https://www.youtube.com/watch?v=Uiq2kZ2JHVY">
+<a class="notice-developers-video right" href="https://www.youtube.com/watch?v=Uiq2kZ2JHVY">
 <div>
     <h3>Video</h3>
     <p>DevBytes: Notifications in the Android L Developer Preview</p>
diff --git a/docs/html/design/patterns/notifications_k.jd b/docs/html/design/patterns/notifications_k.jd
index 01a12a7..39ee269 100644
--- a/docs/html/design/patterns/notifications_k.jd
+++ b/docs/html/design/patterns/notifications_k.jd
@@ -1,14 +1,15 @@
-page.title=Notifications in Android 4.4 and Lower
+page.title=Notifications, Android 4.4 and Lower
+footer.hide=1
 @jd:body
 
-<a class="notice-developers" href="{@docRoot}training/notify-user/index.html">
+<a class="notice-developers right" href="{@docRoot}training/notify-user/index.html">
   <div>
     <h3>Developer Docs</h3>
     <p>Notifying the User</p>
   </div>
 </a>
 
-<a class="notice-designers" href="notifications.html">
+<a class="notice-designers right" href="notifications.html">
   <div>
     <h3>Notifications in Android 5.0</h3>
   </div>
diff --git a/docs/html/design/patterns/pure-android.jd b/docs/html/design/patterns/pure-android.jd
index e617711..6446e39 100644
--- a/docs/html/design/patterns/pure-android.jd
+++ b/docs/html/design/patterns/pure-android.jd
@@ -65,28 +65,6 @@
 
 <div class="vspace size-2">&nbsp;</div>
 
-<div class="cols">
-  <div class="col-5">
-
-<h4>Don't use bottom tab bars</h4>
-<p>Other platforms use the bottom tab bar to switch between the app's views. Per platform convention,
-Android's tabs for view control are shown in action bars at the top of the screen instead. In
-addition, Android apps may use a bottom bar to display actions on a split action bar.</p>
-<p>You should follow this guideline to create a consistent experience with other apps on the Android
-platform and to avoid confusion between actions and view switching on Android.</p>
-<p>For more information on how to properly use action bars for view control, see
-<a href="{@docRoot}design/patterns/actionbar.html">Action Bars</a>.</p>
-
-  </div>
-  <div class="col-8">
-
-    <img src="{@docRoot}design/media/migrating_ios_dialers.png">
-    <div class="figure-caption">
-      Android dialer with tabs in an action bar vs. bottom tabs in iOS.
-    </div>
-
-  </div>
-</div>
 
 <div class="cols">
   <div class="col-5">
diff --git a/docs/html/design/patterns/swipe-views.jd b/docs/html/design/patterns/swipe-views.jd
index 9ee33db..789538d 100644
--- a/docs/html/design/patterns/swipe-views.jd
+++ b/docs/html/design/patterns/swipe-views.jd
@@ -2,7 +2,7 @@
 page.tags=viewpager,navigation,tabs
 @jd:body
 
-<a class="notice-developers" href="{@docRoot}training/implementing-navigation/lateral.html">
+<a class="notice-developers right" href="{@docRoot}training/implementing-navigation/lateral.html">
   <div>
     <h3>Developer Docs</h3>
     <p>Creating Swipe Views with Tabs</p>
@@ -20,7 +20,7 @@
 related data items, such as images, chats, or emails, and then pick one of the items to see the
 detail contents in a separate screen.</p>
 
-<img src="{@docRoot}design/media/swipe_views.png">
+<img itemprop="image" src="{@docRoot}design/media/swipe_views.png">
 <div class="figure-caption">
   Master (left) and detail (right) views.
 </div>
diff --git a/docs/html/design/patterns/widgets.jd b/docs/html/design/patterns/widgets.jd
old mode 100644
new mode 100755
index b149af6..42f563a
--- a/docs/html/design/patterns/widgets.jd
+++ b/docs/html/design/patterns/widgets.jd
@@ -87,7 +87,10 @@
 <div class="cols">
   <div class="col-6">
     <h3>Widget resizing</h3>
-    <p>With version 3.1, Android introduced resizable widgets to the platform. Resizing allows users to adjust the height and/or the width of a widget within the constraints of the home panel placement grid. You can decide if your widget is freely resizable or if it is constrained to horizontal or vertical size changes. You do not have to support resizing if your particular widget is inherently fixed-size.</p>
+    <p>Resizing allows users to adjust the height and/or the width of a widget within the
+constraints of the home panel placement grid. You can decide if your widget is freely resizable or
+if it is constrained to horizontal or vertical size changes. You do not have to support resizing if
+your particular widget is inherently fixed-size.</p>
     <p>Allowing users to resize widgets has important benefits:</p>
     <ul>
       <li>They can fine-tune how much information they want to see on each widget.</li>
@@ -103,7 +106,7 @@
   </div>
 </div>
 
-<p>Planning a resize strategy for your widget depends on the type of widget you're creating. List or grid-based collection widgets are usually straightforward because resizing the widget will simply expand or contract the vertical scrolling area. Regardless of the of the widget's size, the user can still scroll all information elements into view. Information widgets on the other hand require a bit more hands-on planning, since they are not scrollable and all content has to fit within a given size. You will have to dynamically adjust your widget's content and layout to the size the user defined through the resize operation.</p>
+<p>Planning a resize strategy for your widget depends on the type of widget you're creating. List or grid-based collection widgets are usually straightforward because resizing the widget will simply expand or contract the vertical scrolling area. Regardless of the widget's size, the user can still scroll all information elements into view. Information widgets on the other hand require a bit more hands-on planning, since they are not scrollable and all content has to fit within a given size. You will have to dynamically adjust your widget's content and layout to the size the user defined through the resize operation.</p>
 <img src="{@docRoot}design/media/widgets_resizing02.png">
 <p>In this simple example the user can horizontally resize a weather widget in 4 steps and expose richer information about the weather at the current location as the widget grows.</p>
 <p>For each widget size determine how much of your app's information should surface. For smaller sizes concentrate on the essential and then add more contextual information as the widget grows horizontally and vertically.</p>
diff --git a/docs/html/design/style/devices-displays.jd b/docs/html/design/style/devices-displays.jd
index caa77da..9edfadd 100644
--- a/docs/html/design/style/devices-displays.jd
+++ b/docs/html/design/style/devices-displays.jd
@@ -3,15 +3,7 @@
 
 @jd:body
 
-<a class="notice-designers-material"
-  href="http://www.google.com/design/spec/layout/principles.html">
-  <div>
-    <h3>Material Design</h3>
-    <p>Layout Principles<p>
-  </div>
-</a>
-
-<p>Android powers hundreds of millions of phones, tablets, and other devices in a wide variety of screen sizes and
+<p>Android powers more than a billion phones, tablets, and other devices in a wide variety of screen sizes and
 form factors. By taking advantage of Android's flexible layout system, you can create apps that
 gracefully scale from large tablets to smaller phones.</p>
 
diff --git a/docs/html/design/tv/images/icon.png b/docs/html/design/tv/images/icon.png
index ae34e18..9cf584c 100644
--- a/docs/html/design/tv/images/icon.png
+++ b/docs/html/design/tv/images/icon.png
Binary files differ
diff --git a/docs/html/design/tv/images/overscan.png b/docs/html/design/tv/images/overscan.png
index fb7e4bc..7957e97 100644
--- a/docs/html/design/tv/images/overscan.png
+++ b/docs/html/design/tv/images/overscan.png
Binary files differ
diff --git a/docs/html/design/tv/patterns.jd b/docs/html/design/tv/patterns.jd
index ccec285..622e678 100644
--- a/docs/html/design/tv/patterns.jd
+++ b/docs/html/design/tv/patterns.jd
@@ -39,9 +39,10 @@
 <h2 id="recommendation">Recommendations</h2>
 
 <p>The first row of the Android TV home screen displays cards for content recommended by applications.
-Your application provides these recommendations, as described in <a href="{@docRoot}training/tv/discovery/recommendations.html">
-</a>. For a visual overview of recommendations, see <a href="design/tv/index.html#recommendations">
-Design for Android TV</a>.</p>
+Your application provides these recommendations, as described in
+<a href="{@docRoot}training/tv/discovery/recommendations.html">Recommending TV Content</a>.
+For a visual overview of recommendations, see
+<a href="{@docRoot}design/tv/index.html#recommendations">Designing for Android TV</a>.</p>
 
 <div class="cols">
   <div class="col-8 with-callouts">
@@ -75,7 +76,7 @@
 should be different than the one provided for the large icon, and meet the following specifications:</p>
 
 <ul>
-  <li>Measure 2016 x 1134 pixels (1920 x 1080 plus 5% margin for for motion)</li>
+  <li>Measure 2016 x 1134 pixels (1920 x 1080 plus 5% margin for motion)</li>
   <li id="solid-background">Must not be transparent</li>
 </ul>
 
@@ -113,20 +114,24 @@
 
 <h4>Small icon</h4>
 
-<p>Recommendation cards include a small icon that is imposed over a colored background. The icon and
-background color display at 100% opacity when the card is selected, and at 50% opacity when not
-selected.</p>
+<p>Recommendation cards include a small icon that is imposed over a colored
+background. The icon and background color both display at 100% opacity when the card
+is selected and at 50% opacity when the card is not selected.</p>
 
 <img src="{@docRoot}design/tv/images/icon.png" alt="Recommendation icon examples" />
 
-<p>Here are the requirements for recommendation small icons:</p>
+<p>Here are the requirements for a small recommendation icon:</p>
 
 <ul>
-  <li>Flat image</li>
-  <li>Monocolor: size 16x16dp, white (#fff) icon with transparent background, PNG format</li>
-  <li>Graphics should be centered within the icon image</li>
+  <li>Visually flat graphic, monocolor, 16x16dp</li>
+  <li>Color <code>#eeeeee</code> with transparency</li>
+  <li>Graphic centered over transparent background</li>
+  <li>PNG file format</li>
 </ul>
 
+<p class="note"><strong>Note:</strong> The color value <code>#eeeeee</code> is actually a light
+gray, but it is used by the system to create a background which appears white.</p>
+
 <h2>Audio Feedback</h2>
 
 <p>Sounds on Android TV bring a cinematic quality to the interaction experience. You should
diff --git a/docs/html/design/tv/style.jd b/docs/html/design/tv/style.jd
index dd10a8a..4c43983 100644
--- a/docs/html/design/tv/style.jd
+++ b/docs/html/design/tv/style.jd
@@ -51,9 +51,11 @@
 
 <img src="{@docRoot}design/tv/images/overscan.png" alt="Overscan borders for TV" />
 
-<p>Build a 10% margin into your TV screen designs to account for overscan area the TV may not
-  display correctly. On a 1920 x 1080 pixel screen, this margin should be a minimum of 27px from the
-  top and bottom edges and a minimum of 48px from the right and left edges of the picture.</p>
+<p>Build a 5% margin into your TV screen designs to account for overscan area the TV may not
+  display correctly. On a 1920 x 1080 screen, this margin should be a minimum of 27 pixels
+  from the top and bottom edges and a minimum of 48 pixels from the right and left edges of the
+  picture.
+  </p>
 
 
 <h2>Color</h2>
diff --git a/docs/html/develop/index.jd b/docs/html/develop/index.jd
index bbd2f71..460d056 100644
--- a/docs/html/develop/index.jd
+++ b/docs/html/develop/index.jd
@@ -13,6 +13,12 @@
   <div class="wrap">
     <div class="cols dac-hero-content">
       <div class="col-1of2 col-push-1of2 dac-hero-figure">
+        <!--
+        <iframe width="448" height="252"
+            src="//www.youtube.com/embed/Z98hXV9GmzY?autohide=1&amp;showinfo=0"
+            frameborder="0" allowfullscreen=""
+            style="float: right;"></iframe>
+        -->
         <img class="dac-hero-image" src="{@docRoot}images/develop/hero_image_studio5_2x.png"
           srcset="/images/develop/hero_image_studio5.png 1x, /images/develop/hero_image_studio5_2x.png 2x" />
       </div>
@@ -53,15 +59,15 @@
   </a>
 </div>
 
-<section class="dac-section dac-gray dac-small dac-invert" id="latest"><div class="wrap">
+<section class="dac-section dac-gray dac-small" id="latest"><div class="wrap">
   <h2 class="norule">Latest</h2>
   <div class="resource-widget resource-flow-layout col-16"
-       data-query="type:youtube+tag:develop+tag:featured, type:blog+tag:develop+tag:featured"
-       data-query="collection:develop/landing/latest"
-       data-sortOrder="-timestamp"
-       data-cardSizes="6x6"
-       data-maxResults="12"
-       data-initial-results="3"></div>
+    data-query="type:youtube+tag:develop+tag:featured, type:blog+tag:develop+tag:featured"
+    data-sortOrder="-timestamp"
+    data-cardSizes="6x6"
+    data-items-per-page="6"
+    data-maxResults="15"
+    data-initial-results="3"></div>
 </div></section>
 
 <section class="dac-section dac-light"><div class="wrap">
@@ -74,9 +80,27 @@
        data-cardSizes="6x6"
        data-maxResults="15"
        data-initial-results="3"
+       data-items-per-page="6"
        data-sortOrder="random"></div>
 </div></section>
 
+<section class="dac-section dac-gray"><div class="wrap">
+  <h1 class="dac-section-title">Android development patterns</h1>
+  <div class="dac-section-subtitle">
+    Fundamental components and best practices that can help you build better apps.
+  </div>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:develop/landing/devpatterns"
+       data-cardSizes="6x6"
+       data-maxResults="3"></div>
+  <ul class="dac-section-links">
+    <li class="dac-section-link"><a href="https://www.youtube.com/playlist?list=PLWz5rJ2EKKc-lJo_RGGXL2Psr8vVCTWjM">
+      <span class="dac-sprite dac-auto-chevron"></span>
+      Playlist
+    </a></li>
+  </ul>
+</div></section>
+
 <section class="dac-section dac-section-light"><div class="wrap">
   <h1 class="dac-section-title">Android performance patterns</h1>
   <div class="dac-section-subtitle">
@@ -97,7 +121,7 @@
 <section class="dac-section dac-gray"><div class="wrap">
   <h1 class="dac-section-title">Ubiquitous computing on Android</h1>
   <div class="dac-section-subtitle">
-    A great experience for your users across devices. 
+    A great experience for your users across devices.
   </div>
   <div class="resource-widget resource-flow-layout col-16"
        data-query="collection:develop/landing/ubicomp"
@@ -128,5 +152,6 @@
        data-sortOrder="random"
        data-cardSizes="6x6"
        data-initial-results="6"
-       data-maxResults="12"></div>
+       data-items-per-page="24"
+       data-maxResults="24"></div>
 </div></section>
diff --git a/docs/html/distribute/analyze/_book.yaml b/docs/html/distribute/analyze/_book.yaml
new file mode 100644
index 0000000..1e24cb9
--- /dev/null
+++ b/docs/html/distribute/analyze/_book.yaml
@@ -0,0 +1,18 @@
+toc:
+- title: Get Started with Analytics
+  path: /distribute/analyze/start.html
+
+- title: Measure What Matters
+  path: /distribute/analyze/measure.html
+
+- title: Understand User Value
+  path: /distribute/analyze/understand-user-value.html
+
+- title: Improve Marketing ROI
+  path: /distribute/analyze/improve-roi.html
+
+- title: Build Better Apps
+  path: /distribute/analyze/build-better-apps.html
+
+- title: Act Across Google Services
+  path: /distribute/analyze/google-services.html
diff --git a/docs/html/distribute/analyze/start.jd b/docs/html/distribute/analyze/start.jd
index c3a1f87..0221f72 100644
--- a/docs/html/distribute/analyze/start.jd
+++ b/docs/html/distribute/analyze/start.jd
@@ -1,5 +1,5 @@
 page.title=Get Started with Analytics
-page.metaDescription=Unlock the power of Analytics by choosing the implementation that works best for your app.
+page.metaDescription=Get advanced insight into how players discover and play your games.
 page.tags="analytics, user behavior"
 page.image=images/cards/card-analytics_2x.png
 
diff --git a/docs/html/distribute/engage/_book.yaml b/docs/html/distribute/engage/_book.yaml
new file mode 100644
index 0000000..ef86a2a
--- /dev/null
+++ b/docs/html/distribute/engage/_book.yaml
@@ -0,0 +1,30 @@
+toc:
+- title: Increase Usage through Intents
+  path: /distribute/engage/intents.html
+
+- title: Build Useful Widgets
+  path: /distribute/engage/widgets.html
+
+- title: Use Rich Notifications
+  path: /distribute/engage/notifications.html
+
+- title: Drive Usage with Search
+  path: /distribute/engage/deep-linking.html
+
+- title: Drive Engagement with Ads
+  path: /distribute/engage/ads.html
+
+- title: Encourage Competition
+  path: /distribute/engage/game-services.html
+
+- title: Understand User Behavior
+  path: /distribute/engage/analytics.html
+
+- title: Add Google Sign-in
+  path: /distribute/engage/easy-signin.html
+
+- title: Integrate GCM
+  path: /distribute/engage/gcm.html
+
+- title: Get Feedback with Beta Tests
+  path: /distribute/engage/beta.html
diff --git a/docs/html/distribute/engage/beta.jd b/docs/html/distribute/engage/beta.jd
new file mode 100644
index 0000000..85ab5e5
--- /dev/null
+++ b/docs/html/distribute/engage/beta.jd
@@ -0,0 +1,113 @@
+page.title=Get real user feedback with beta tests
+page.metaDescription=Run alpha and beta tests from the developer console, and make improvements and correct issues before you release.
+page.image=images/cards/distribute/engage/beta.jpg
+page.tags="beta, alpha, release channels"
+Xnonavpage=true
+
+@jd:body
+
+<p>
+  With alpha or beta tests run from the Developer Console you can collect user
+  feedback on early versions of your app, then make improvements and correct
+  issues before you release to the full Play Store audience.
+</p>
+
+<img src="{@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test.png"
+  srcset="{@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test.png 1x,
+      {@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test_2x.png 2x"
+  width="500">
+
+<p>Testing your app with a select group of users will give you a chance to fix any technical or user experience issues before you release it widely, so that you can be confident about releasing the best version of your app to the majority of your users. Feedback from your test users won't affect your app’s public rating.</p>
+
+<p>
+  Learn more about <a href=
+  "https://support.google.com/googleplay/android-developer/answer/3131213"
+  class="external-link">how to run a beta test.</a>
+</p>
+
+<h2 id="how-to">How to Do It</h2>
+
+<ul>
+
+<ul>
+  <li>
+    <strong>Open beta —</strong> Use an open beta when you want any user who
+    has the link to be able to join your beta with just one click. One of the
+    advantages of an open beta is that it allows you to scale to a large number
+    of testers. However, you can also limit the maximum number of users who can
+    join.
+  </li>
+
+  <li>
+    <strong>Closed beta using email addresses —</strong> If you want to
+    restrict which users can access your beta, you have a new option: you can
+    now set up a closed beta using lists of individual email addresses which
+    you can add individually or upload as a .csv file. These users will be able
+    to join your beta via a one-click opt-in link.
+  </li>
+
+  <li>
+    <strong>Closed beta with Google+ community or Google Group —</strong> You
+    can continue to use betas with Google+ communities or Google Groups. You
+    can also move closed betas to an open beta while maintaining your existing
+    testers.
+  </li>
+</ul>
+
+<h2 id="tips">Tips</h2>
+
+<ul>
+  <li>Your testers will need to have a Google Account (<code>@gmail.com</code>)
+  or a Google Apps account to join a test.
+  </li>
+
+  <li>Use alpha tests for early experimental versions of your app that might
+  contain incomplete or unstable functionality, and use beta tests for apps
+  that should be complete and stable.
+  </li>
+
+  <li>Start testing with a small group of more trusted testers in an alpha
+  test, then expand your test to a larger group of testers in a beta test.
+  </li>
+
+  <li>Testers can't leave public reviews for alpha/beta apps on Google Play, so
+  include a feedback channel or provide the option to send feedback by email,
+  website, or a message forum.
+  </li>
+
+  <li>For an APK to be available to alpha testers it must have a higher version
+  number than your beta or production version, and for beta testers the APK
+  must have a higher version number than your production version.
+  </li>
+
+  <li>Alpha testers receive the alpha, beta, or production version of your app
+  with the highest version code that is compatible with their device, while
+  beta testers receive the beta or production version of your app with the
+  highest version code that is compatible with their device. This also means
+  that posting a higher version number APK cancels earlier tests of earlier
+  versions, so posting a production 2.0 version would cancel a beta test of
+  version 1.9 and that beta test would have canceled an alpha test of version
+  1.8.
+  </li>
+
+  <li>Also consider using <a href=
+  "https://www.google.com/insights/consumersurveys/" class=
+  "external-link">Google Consumer Surveys</a> to conduct market research and
+  gather user feedback at scale.
+  </li>
+</ul>
+
+<p style="clear:both">
+</p>
+
+<div class="dynamic-grid">
+<div class="headerLine">
+<h2 id="related-resources">Related Resources</h2>
+</div>
+
+<div class="resource-widget resource-flow-layout col-13"
+  data-query="collection:distribute/googleplay/beta"
+  data-sortOrder="-timestamp"
+  data-cardSizes="9x3"
+  data-maxResults="6"></div>
+  </div>
diff --git a/docs/html/distribute/engage/engage_toc.cs b/docs/html/distribute/engage/engage_toc.cs
index 91206d3..e86623f 100644
--- a/docs/html/distribute/engage/engage_toc.cs
+++ b/docs/html/distribute/engage/engage_toc.cs
@@ -29,6 +29,7 @@
         <span class="en">Drive Engagement with Ads</span></a>
     </div>
   </li>
+
   <li class="nav-section">
     <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs
         var:toroot?>distribute/engage/game-services.html">
@@ -53,7 +54,12 @@
         <span class="en">Integrate GCM</span></a>
     </div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs
+        var:toroot?>distribute/engage/beta.html">
+        <span class="en">Get Feedback with Beta Tests</span></a>
+    </div>
+  </li>
 </ul>
 
 <script type="text/javascript">
diff --git a/docs/html/distribute/engage/game-services.jd b/docs/html/distribute/engage/game-services.jd
index 1c77d2d..4a22035 100644
--- a/docs/html/distribute/engage/game-services.jd
+++ b/docs/html/distribute/engage/game-services.jd
@@ -1,90 +1,193 @@
 page.title=Encourage Competition
 page.metaDescription= Bring out the competitor in your users with cloud save, multiplayer game play, and more.
-page.tags="games"
-page.image=/images/google/gps-play_games_logo.png
+page.tags="games, games services, play games"
+page.image=/images/cards/distribute/engage/card-game-services.png
 
 @jd:body
 
-<div class="figure" style="width:330px;">
-  <img src="{@docRoot}images/google/gps-play_games_logo.png">
+
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>Features</h2>
+    <ul>
+      <li><a href="#simplify">Simplify your game development</a></li>
+      <li><a href="#acquire-users">Acquire and engage users</a></li>
+      <li><a href="#socialize">Socialize your games</a></li>
+      <li><a href="#extend">Extend across form factors</a></li>
+      <li><a href="#manage">Manage your games</a></li>
+    </ul>
+  </div>
 </div>
 
 <p>
-  Increase game installs, in-app revenue, and engagement with <a href=
-  "{@docRoot}google/play-services/games.html">Google Play
-  Game Services</a>. Bring out the competitor in your users with cloud save,
-  multiplayer game play, and more.
+  Three out of four Android users download games to their device, making games
+  one the most popular additions to users’ devices. Making your games stand out
+  from the crowd is therefore key to success.
 </p>
 
+<div class="figure">
+  <img src="{@docRoot}images/google/gps-play_games_logo.png"
+        srcset="{@docRoot}images/google/gps-play_games_logo.png 1x,
+            {@docRoot}images/google/gps-play_games_logo_2x.png 2x"
+      alt="" width="170" />
+</div>
+
+<p>
+  Google Play game services save you from implementing popular game features
+  yourself such as achievements, leaderboards, real-time multiplayer, and
+  others. You can also let players sign in using their Google identity and
+  share their gaming experience with friends. And there is comprehensive
+  reporting and statistics to help you track and improve your game’s
+  performance.
+</p>
+
+<p>
+  Start now by visiting <a href="https://developers.google.com/games/services/"
+  class="external-link">Google Play game services.</a>
+</p>
+
+<h3 id="simplify">Simplify your game development</h3>
+
 <ul>
   <li>
-    <p>
-      <a href=
-      "https://developers.google.com/games/services/android/achievements">Achievements</a>
-      encourage players to try new features, resulting in more time spent in
-      your games.
-    </p>
+    <strong>Set up Google Play Games Services:</strong> Use the Google Play
+    Developer Console to manage games services and configure metadata for
+    authorizing and authenticating your game.
   </li>
 
   <li>
-    <p>
-      <a href=
-      "https://developers.google.com/games/services/android/leaderboards">Leaderboards</a>
-      are a fun way to drive competition among your players.
-    </p>
-  </li>
-
-  <li>
-    <p>
-      <a href=
-      "https://developers.google.com/games/services/android/cloudsave">Cloud
-      Save</a> allows users to continue where they left off on another device
-      or platform.
-    </p>
-  </li>
-
-  <li>
-    <p>
-      Multiplayer features allow users to invite friends to install games and
-      play together in <a href=
-      "https://developers.google.com/games/services/common/concepts/realtimeMultiplayer">
-      real-time</a> or <a href=
-      "https://developers.google.com/games/services/common/concepts/turnbasedMultiplayer">
-      turn-by-turn</a>.
-    </p>
-  </li>
-
-  <li>
-    <p>
-      <a href=
-      "https://play.google.com/store/apps/details?id=com.google.android.play.games">
-      Google Play Games App</a> provides additional exposure to increase
-      downloads and gameplay. It helps users play with friends, see what others
-      are playing, and discover featured games.
-    </p>
+    <strong>Use the Play Games APIs:</strong> Start integrating popular gaming
+    features into your games by using the <a href=
+    "https://developers.google.com/games/services/" class=
+    "external-link">Google Play Games Services APIs.</a>
   </li>
 </ul>
 
-<p>
-  And there is no need to worrying about device or OS version support. Google
-  Play Game Services is backward compatible, allowing you to reach more
-  users with less effort. Get started on <a href=
-  "{@docRoot}google/play-services/games.html">Google Play
-  Game Services</a>. For more tips on keeping gamers engaged, see the <a href=
-  "{@docRoot}distribute/essentials/best-practices/games.html">
-  Game Developer Best Practices</a>.
+<h3 id="acquire-users">Acquire and engage users</h3>
+
+<ul>
+  <li>
+    <strong>Player Analytics:</strong> View details on multiplayer games,
+    average revenue per paying user (ARPPU), sessions per user, and more; as
+    well as set and monitor daily revenue targets from a comprehensive
+    dashboard of player and engagement statistics.
+  </li>
+
+  <li>
+    <strong>Achievements:</strong> Set goals to encourage players to spend more
+    time in your games and try new features; reward them with experience points
+    that players redeem to gain level-ups in their Play Games profile.
+  </li>
+
+  <li>
+    <strong>Quests:</strong> Offer players in-game rewards and benefits for
+    exploring your game more deeply: use particular items, reach a certain
+    level, or perform a specific game action. And set up quests without the
+    need to release an app update.
+  </li>
+</ul>
+
+<h3 id="socialize">Socialize your games</h3>
+
+<ul>
+  <li>
+    <strong>Leaderboards:</strong> Drive competition among your players with
+    daily, weekly, and all-time leaderboards. Create multiple leaderboards for
+    game levels or other game features.
+  </li>
+
+  <li>
+    <strong>Multiplayer games:</strong> Add the challenge of playing against
+    others to your real-time and turn-by-turn games. Players can invite friends
+    to install your game across form factors and supported platforms.
+  </li>
+
+  <li>
+    <strong>Game gifts:</strong> Drive downloads and engagement by giving your
+    players the ability to send virtual in-game objects to their friends. Also
+    let players request gifts and use gifts as a trading mechanism within
+    games.
+  </li>
+</ul>
+
+<h3 id="extend">Extend across form factors</h3>
+
+<ul>
+  <li>
+    <strong>Saved Games:</strong> Save game states to the cloud and enable
+    players to resume games anytime on any of their devices. Cover images and
+    descriptions show players where they left off and attract them back.
+  </li>
+
+  <li>
+    <strong>Nearby Connections API:</strong> Enhance the experience of your
+    games for Android TV by connecting seamlessly with smartphones and tablets,
+    to use them as second-screen controllers.
+  </li>
+</ul>
+
+<h3 id="manage">Manage your games</h3>
+
+<ul>
+  <li>
+    <strong>Easily update your game metadata:</strong> Simplify your game
+    testing and player account management with the <a href=
+    "https://developers.google.com/games/services/management/" class=
+    "external-link">Google Play games services Management API.</a>
+  </li>
+
+  <li>
+    <strong>Automate your game production and distribution tasks:</strong>
+    Modify listings and upload icons for achievements and leaderboards with the
+    <a href="https://developers.google.com/games/services/publishing/" class=
+    "external-link">Google Play games services Publishing API.</a>
+  </li>
+
+  <li>
+    <strong>Insights and alerts:</strong> Get information on how to improve
+    your multiplayer, leaderboards, achievements, and other game services
+    implementations from the Developer Console.
+  </li>
+
+  <li>
+    <strong>Anti-piracy:</strong> Optionally disable game services for games
+    not purchased from the Play Store.
+  </li>
+</ul>
+
+<h3 id="tips">Tips</h3>
+<ul>
+  <li>The best Google Play game services integrations are highly visible,
+  customized, achievable, and incentivized.
+  </li>
+
+  <li>Prompt players to sign in to Google Play game services when your game
+  launches. This ensures they get access to the game service features, and also
+  maximizes the number of players online and ready to collaborate.
+  </li>
+
+  <li>Avoid creating achievements that rely too much on elements beyond the
+  player's control or cannot be earned once the player has made a decision in
+  your game.
+  </li>
+
+  <li>With Google Play game services, you can add seamless interaction between
+  Android and your games on the web and other platforms.
+  </li>
+</ul>
+
+<p style="clear:both">
 </p>
 
+<div class="dynamic-grid">
 <div class="headerLine">
-  <h2 id="related-resources">
-    Related Resources
-  </h2>
-
-
+<h2 id="related-resources">Related Resources</h2>
 </div>
 
-<div class="resource-widget resource-flow-layout col-13" data-query=
-"collection:distribute/engage/googleplaygames" data-sortorder="-timestamp"
-data-cardsizes="9x3" data-maxresults="6">
-</div>
-
+<div class="resource-widget resource-flow-layout col-13"
+  data-query="collection:distribute/engage/googleplaygames"
+  data-sortOrder="-timestamp"
+  data-cardSizes="9x3"
+  data-maxResults="6"></div>
+  </div>
diff --git a/docs/html/distribute/essentials/_book.yaml b/docs/html/distribute/essentials/_book.yaml
new file mode 100644
index 0000000..e8b7811
--- /dev/null
+++ b/docs/html/distribute/essentials/_book.yaml
@@ -0,0 +1,50 @@
+toc:
+- title: Core App Quality
+  path: /distribute/essentials/quality/core.html
+  custom_link_attributes:
+  - zh-cn-lang="应用的核心质量"
+
+- title: Tablet App Quality
+  path: /distribute/essentials/quality/tablets.html
+  custom_link_attributes:
+  - zh-cn-lang="平板电脑应用的质量"
+
+- title: Wear App Quality
+  path: /distribute/essentials/quality/wear.html
+
+- title: TV App Quality
+  path: /distribute/essentials/quality/tv.html
+
+- title: Auto App Quality
+  path: /distribute/essentials/quality/auto.html
+
+- title: Launch Checklist
+  path: /distribute/tools/launch-checklist.html
+  custom_link_attributes:
+  - zh-cn-lang="发布检查清单"
+
+- title: Localization Checklist
+  path: /distribute/tools/localization-checklist.html
+  custom_link_attributes:
+  - zh-cn-lang="本地化检查清单"
+
+- title: Brand Guidelines
+  path: /distribute/tools/promote/brand.html
+  custom_link_attributes:
+  - zh-cn-lang="品牌指南"
+
+- title: Device Art Generator
+  path: /distribute/tools/promote/device-art.html
+
+- title: Google Play Badges
+  path: https://play.google.com/intl/en_us/badges/
+  custom_link_attributes:
+  - zh-cn-lang="Google Play 徽章生成器"
+
+- title: Linking to Your Products
+  path: /distribute/tools/promote/linking.html
+  custom_link_attributes:
+  - zh-cn-lang="链接到您的商品"
+
+- title: Alternative Distribution
+  path: /distribute/tools/open-distribution.html
diff --git a/docs/html/distribute/essentials/essentials_toc.cs b/docs/html/distribute/essentials/essentials_toc.cs
index 072aa08..a78252d 100644
--- a/docs/html/distribute/essentials/essentials_toc.cs
+++ b/docs/html/distribute/essentials/essentials_toc.cs
@@ -51,7 +51,7 @@
     </div>
   </li>
   <li class="nav-section">
-    <div class="nav-section empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/tools/promote/badges.html" zh-cn-lang="Google Play 徽章生成器">
+    <div class="nav-section empty" style="font-weight:normal"><a href="https://play.google.com/intl/en_us/badges/" zh-cn-lang="Google Play 徽章生成器">
             <span class="en">Google Play Badges</span></a>
     </div>
   </li>
diff --git a/docs/html/distribute/essentials/index.jd b/docs/html/distribute/essentials/index.jd
index 6185e54..636c11d 100644
--- a/docs/html/distribute/essentials/index.jd
+++ b/docs/html/distribute/essentials/index.jd
@@ -1,5 +1,5 @@
 page.title=Essentials for a Successful App
-meta.tags="landing, quality"
+meta.tags="guidelines, quality"
 page.tags="guidelines", "tablet", "quality"
 section.landing=true
 nonavpage=true
@@ -12,21 +12,23 @@
   process of monitoring feedback and making improvement after launch.
 </p>
 
-<h2 id="guidelines">Quality Guidelines</h2>
+<section class="dac-section dac-small" id="latest-games"><div class="wrap">
+<h2 id="guidelines" class="norule">Quality Guidelines</h2>
 
 <div class="resource-widget resource-flow-layout landing col-16"
   data-query="collection:distribute/essentials/guidelines"
   data-cardSizes="6x6"
   data-maxResults="9">
-</div>
+</div></div></section>
 
-<h2 id="tools">Tools &amp; Resources</h2>
+<section class="dac-section dac-small" id="latest-games"><div class="wrap">
+<h2 id="tools" class="norule">Tools &amp; Resources</h2>
 
 <div class="resource-widget resource-flow-layout landing col-16"
   data-query="collection:distribute/essentials/tools"
   data-cardSizes="6x6"
   data-maxResults="9">
-</div>
+</div></div></section>
 
 <!-- <h2>Related resources</h2>
 
diff --git a/docs/html/distribute/essentials/quality/auto.jd b/docs/html/distribute/essentials/quality/auto.jd
index f547616..386b1d8 100644
--- a/docs/html/distribute/essentials/quality/auto.jd
+++ b/docs/html/distribute/essentials/quality/auto.jd
@@ -50,7 +50,7 @@
 <ol>
   <li> Use the Android Auto simulator to validate each checklist item. The simulator allows you to
   sideload your app for testing. For more information on the simulator, see
-  <a href="{@docRoot}training/auto/start/index.html#test-it">Run and Test Auto Apps</a>.</li>
+  <a href="{@docRoot}training/auto/start/index.html#test-it-dhu">Run and Test Auto Apps</a>.</li>
   <li>Test your app in a vehicle by uploading your app to the alpha/beta channel on Google Play.
   Apps will not work on Auto in vehicles unless they are installed from the Play Store.
   For more information, see <a
@@ -91,7 +91,8 @@
   These criteria ensure that your app follows critical design and interaction patterns
   to ensure a consistent, intuitive, and enjoyable user experience on Android Auto. Many elements,
   such as the navigation drawer, card backgrounds, fonts and icon colors, are set and rendered by
-  the system. Your own app-specific design elements must meet the following criteria.
+  the system. Your own app-specific design elements must meet the following criteria when running
+  on a device connected to Android Auto.
 </p>
 
 <table>
@@ -170,8 +171,8 @@
   <td>
     <p style="margin-bottom:.5em;">
     App never activates the phone screen to present any form of visual information (notifications,
-    toasts, video, images, advertising, etc.) on the phone screen while the app is active in Android
-    Auto.
+    toasts, video, images, advertising, etc.) on the phone screen while the app is interacting
+    with the Android Auto dashboard unit.
     </p>
   </td>
 </tr>
@@ -295,7 +296,7 @@
 
 <p>
   These criteria ensure that your app is configured correctly and provides expected
-  functional behavior.
+  functional behavior  when running on a device connected to Android Auto.
 </p>
 
 
diff --git a/docs/html/distribute/essentials/quality/core.jd b/docs/html/distribute/essentials/quality/core.jd
index cfe1a2a..4b0b546 100644
--- a/docs/html/distribute/essentials/quality/core.jd
+++ b/docs/html/distribute/essentials/quality/core.jd
@@ -238,7 +238,7 @@
 
 <div class="resource-widget resource-flow-layout col-13" data-query=
 "collection:distribute/essentials/corequalityguidelines/visualdesign"
-data-sortorder="-timestamp" data-cardsizes="9x3,9x3,6x3,6x3,6x3"
+data-sortorder="-timestamp" data-cardsizes="6x3"
 data-maxresults="6">
 </div>
 
@@ -592,6 +592,23 @@
   </td>
   </tr>
 
+  <tr id="PS-B1">
+  <td>
+    Battery
+  </td>
+  <td>
+    PS-B1
+  </td>
+  <td>
+    App supports power management features in Android 6.0+ (Doze and App Standby)
+    properly. In the case where core functionality is disrupted by power management,
+    only qualified apps may request an exemption.
+  </td>
+  <td>
+    <a href="#BA-1">BA-1</a>
+  </td>
+  </tr>
+
   <tr id="PS-M1">
   <td>
     Media
@@ -702,7 +719,7 @@
   </tr>
 
   <tr id="GP-P1">
-  <td rowspan="2">
+  <td rowspan="3">
     Policies
   </td>
   <td>
@@ -729,17 +746,31 @@
     "http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=188189">
     Content Rating Guidelines</a>.
     </p>
-
-    <p style="margin-bottom:.25em;">
-    Especially, note that apps that request permission to use the device
-    location cannot be given the maturity level "Everyone".
-    </p>
   </td>
   <td>
     <a href="#gp">GP-1</a>
   </td>
   </tr>
 
+  <tr id="GP-P2">
+  <td>
+    GP-P3
+  </td>
+  <td>
+    <p style="margin-bottom:.5em;">
+    App supports power management features in Android 6.0+ (Doze and App Standby)
+    properly. In the case where core functionality is disrupted by power management,
+    only qualified apps may request an exemption.
+    See <a
+    href="{@docRoot}training/monitoring-device-state/doze-standby.html#other_use_cases">Support
+    for other use cases</a> in Doze and App Standby.</p>
+    </p>
+  </td>
+  <td>
+    <a href="#gp">GP-4</a>
+  </td>
+  </tr>
+
   <tr id="GP-D1">
   <td rowspan="3">
     App&nbsp;Details Page
@@ -957,8 +988,7 @@
     Switch to another app to send the test app into the background. Go to
     Settings and check whether the test app has any services running while in
     the background. In Android 4.0 and higher, go to the Apps screen and find
-    the app in the "Running" tab. In earlier versions, use "Manage
-    Applications" to check for running services.
+    the app in the "Running" tab.
   </td>
   </tr>
 
@@ -1088,8 +1118,29 @@
   </td>
   </tr>
 
+  <tr id="BA-1">
+  <td>
+    Battery
+  </td>
+  <td>
+    BA-1
+  </td>
+  <td>
+    <p style="margin-bottom:.5em;">
+    Repeat <em>Core Suite</em> across Doze and App Standby cycles.
+    </p>
+
+    <p style="margin-bottom:.25em;">
+    Pay close attention to alarms, timers, notifications, syncs, and so on.
+    See <a
+    href="{@docRoot}training/monitoring-device-state/doze-standby.html#testing_doze_and_app_standby">Testing
+    with Doze and App Standby</a> for requirements and guidelines.
+    </p>
+  </td>
+  </tr>
+
   <tr id="gp">
-  <td rowspan="3">
+  <td rowspan="4">
     Google Play
   </td>
   <td>
@@ -1125,6 +1176,17 @@
 
   <tr id="GP-4">
   <td>
+    GP-4
+  </td>
+  <td>
+  Review <a
+  href="{@docRoot}training/monitoring-device-state/doze-standby.html#other_use_cases">Support
+  for other use cases</a> in Doze and App Standby.
+  </td>
+  </tr>
+
+  <tr id="GP-4">
+  <td>
     Payments
   </td>
   <td>
diff --git a/docs/html/distribute/googleplay/_book.yaml b/docs/html/distribute/googleplay/_book.yaml
new file mode 100644
index 0000000..009d1c07
--- /dev/null
+++ b/docs/html/distribute/googleplay/_book.yaml
@@ -0,0 +1,100 @@
+toc:
+- title: The Google Play Opportunity
+  path: /distribute/googleplay/about.html
+  custom_link_attributes:
+  - es-lang="La oportunidad de Google Play"
+  - ja-lang="Google Play の可能性"
+  - ko-lang="Google Play 활용 기회"
+  - pt-br-lang="A oportunidade do Google Play"
+  - ru-lang="Возможности Google Play"
+  - zh-cn-lang="Google Play 蕴藏的机会"
+  - zh-tw-lang="Google Play商機"
+
+- title: Get Started with Publishing
+  path: /distribute/googleplay/start.html
+  custom_link_attributes:
+  - es-lang="Comienza a publicar"
+  - ja-lang="アプリを公開する"
+  - ko-lang="게시 시작하기"
+  - pt-br-lang="Introdução à publicação"
+  - ru-lang="Первые шаги в публикациях"
+  - zh-cn-lang="开始发布"
+  - zh-tw-lang="開始發行"
+
+- title: Developer Console
+  path: /distribute/googleplay/developer-console.html
+  custom_link_attributes:
+  - es-lang="Consola para desarrolladores"
+  - ja-lang="デベロッパー コンソール"
+  - ko-lang="개발자 콘솔"
+  - pt-br-lang="Console do Desenvolvedor"
+  - ru-lang="Консоль разработчика"
+  - zh-cn-lang="开发者控制台"
+
+- title: Distribute to Android Wear
+  path: /distribute/googleplay/wear.html
+  custom_link_attributes:
+  - es-lang="Distribución para Android Wear"
+  - ja-lang="Android Wear への配布"
+  - ko-lang="Android Wear에 배포"
+  - pt-br-lang="Distribuindo para Android Wear"
+  - ru-lang="Распространение приложений Android Wear"
+  - zh-cn-lang="分发到 Android Wear"
+  - zh-tw-lang="散佈至 Android Wear"
+
+- title: Distribute to Android TV
+  path: /distribute/googleplay/tv.html
+  custom_link_attributes:
+  - es-lang="Distribución para Android TV"
+  - ja-lang="Android TV への配布"
+  - ko-lang="Android TV에 배포"
+  - pt-br-lang="Distribuindo para Android TV"
+  - ru-lang="Распространение приложений в Android TV"
+  - zh-cn-lang="分发到 Android TV"
+  - zh-tw-lang="散佈至 Android 電視"
+
+- title: Distribute to Android Auto
+  path: /distribute/googleplay/auto.html
+  custom_link_attributes:
+  - es-lang="Distribución para Android Auto"
+  - ja-lang="Android Auto への配布"
+  - ko-lang="Android Auto에 배포"
+  - pt-br-lang="Distribuindo para o Android Auto"
+  - ru-lang="Распространение приложений для Android Auto"
+  - zh-cn-lang="分发到 Android Auto"
+  - zh-tw-lang="散佈至 Android Auto"
+
+- title: Designed for Families
+  path: /distribute/googleplay/families/about.html
+  custom_link_attributes:
+  - es-lang="Diseñado para la familia"
+  - ru-lang="Для всей семьи"
+  - zh-cn-lang="为家庭设计"
+
+- title: Google Play for Work
+  path: /distribute/googleplay/work/about.html
+
+- title: Google Play for Education
+  path: /distribute/googleplay/edu/about.html
+  section:
+  - title: Publish Apps
+    path: /distribute/googleplay/edu/start.html
+  - title: Video Resources
+    path: /distribute/googleplay/edu/videos.html
+
+- title: Stream Your Content with Cast
+  path: /distribute/googleplay/cast.html
+
+- title: Build VR with Cardboard
+  path: /distribute/googleplay/cardboard.html
+
+- title: Find Success on Google Play
+  path: /distribute/googleplay/guide.html
+  custom_link_attributes:
+  - es-lang="Cómo tener éxito en Google Play"
+  - ja-lang="Google Play で成功を手にする"
+  - ko-lang="Google Play에서 성공 모색"
+  - pt-br-lang="Obtendo sucesso no Google Play"
+  - ru-lang="Найдите свой путь к успеху в Google Play"
+  - zh-cn-lang="在 Google Play 上取得成功"
+  - zh-tw-lang="在 Google Play 上尋找成功"
diff --git a/docs/html/distribute/googleplay/about.jd b/docs/html/distribute/googleplay/about.jd
index 543d7d3..a93d1c7 100644
--- a/docs/html/distribute/googleplay/about.jd
+++ b/docs/html/distribute/googleplay/about.jd
@@ -6,367 +6,148 @@
 
 @jd:body
 
-    <div id="qv-wrapper">           
+<div id="qv-wrapper">
   <div id="qv">
   <h2>About Google Play</h2>
     <ol style="list-style-type:none;">
-      <li><a href="#reach">Worldwide Reach, Rapid Growth</a></li>
-      <li><a href="#ratings-reviews">User Ratings and Reviews</a></li>
-      <li><a href="#category-browsing">Category Browsing</a></li>
-      <li><a href="#search">Search</a></li>
-      <li><a href="#top-charts-and-lists">Top Charts and Lists</a></li>
-      <li><a href="#featured-staff-picks">Featured, Staff Picks, Collections, and Badges</a></li>
-      <li><a href="#product-detail-pages">Store Listing Pages</a></li>
-      <li><a href="#related-resources">Related Resources</a></li>
+
+      <li><a href="#playstore-discovery">Discovery on the Play Store and the Top Lists</a></li>
+      <li><a href="#playstore-listing">Your Play Store Listing</a></li>
+      <li><a href="#devpage">Your Developer Page</a></li>
+      <li><a href="#search-discovery">Discovery through Search</a></li>
+      <li><a href="#browsing">Personalized browsing experience</a></li>
+      <li><a href="#featured-staff-picks">Featured Apps and Collections</a></li>
+      <li><a href="#editors-choice">Editor's Choice, Top Developer, and Other Badges</a></li>
     </ol>
   </div>
 </div>
 
+<h2 id="reach">Reach Users Around the World</h2>
+
 <p>
   Google Play is the premier store for distributing Android apps. When you
-  publish on Google Play, you put your apps in front of Android's huge base of
-  active customers, in more than 190 countries and territories across the
+  publish on Google Play, you put your apps in front of over 1 billion active
+  Android users, in more than 190 countries and territories across the
   world.
 </p>
 
-<div>
-  <img src="{@docRoot}images/gp-about-0.jpg" alt="Google Play on an Android Tablet"
-  style="width:480px;position:relative" />
-</div>
+<img src="{@docRoot}images/distribute/googleplay/about_hero_play-opportunity.png"
+  srcset="{@docRoot}images/distribute/googleplay/about_hero_play-opportunity.png 1x,
+      {@docRoot}images/distribute/googleplay/about_hero_play-opportunity_2x.png 2x"
+  alt="" width="460" />
 
-<p>
-  Google Play is a central part of the Android experience. New users
-  personalize their devices with apps, games, and other Google Play content.
-  Existing users return regularly to see what's trending and new. Downloading
-  new apps is extremely convenient and fast&mdash; Google Play pushes apps to
-  the user's devices instantly, over the air.
-</p>
+<div class="wrap">
 
-<p>
-  Google Play is also a top destination for web users. Anyone with a browser
-  can explore Google Play on the web. Android users can even buy and install
-  the apps they want and Google Play pushes them automatically to their devices
-  with no cables required.
-</p>
-
-<p>
-  The accessibility and convenience of the Google Play web site give you new
-  ways to drive traffic to your products from many sources, such as online ads,
-  web search and cross-linking. Google Play is designed to connect users with
-  great apps and games. It provides key channels to get your app noticed and
-  gain traction in the marketplace.
-</p>
-
-<div class="headerLine">
-  <h2 id="ratings-reviews">
-    User Ratings and Reviews
-  </h2>
-
-
-</div>
-
-<p>
-  Prospective users look at ratings and reviews as key benchmarks of app
-  quality. By rating apps from one to five stars and posting reviews, Android
-  users show their appreciation for the apps they have downloaded.
-</p>
-
-<p>
-  <strong>Your app's rating is one of the most important factors influencing
-  its ranking</strong> in the Google Play lists and search results. It's also
-  one of the key metrics that the editorial staff looks for when curating apps
-  and games for promotion in the store.
-</p>
-
-<div class="img" style="padding: 1em auto;width:96%;">
-  <img src="{@docRoot}images/gp-rating-web.png" style="border:1px solid #ddd;">
-</div>
-
-<div class="headerLine">
-  <h2 id="category-browsing">
-    Category Browsing
-  </h2>
-
-
-</div>
-
-<p>
-  When you publish an app in Google Play, you pick the category where you want
-  users to find your app. More than 30 categories are available. Inside each
-  category, apps are ranked based on a combination of ratings, reviews,
-  downloads, country, and other factors.
-</p>
-
-<div class="headerLine">
-  <h2 id="search">
-    Search
-  </h2>
-
-
-</div>
-
-<p>
-  Search on Google Play lets users pinpoint an app or game quickly. Search uses
-  powerful heuristics to suggest terms as the user types, and it offers direct
-  links to apps as suggestions. In results, users find the most relevant, most
-  popular apps at the top.
-</p>
-
-<div class="headerLine">
-  <h2 id="top-charts-and-lists">
-    Top Charts and Lists
-  </h2>
-
-
-</div>
-
-<div class="figure">
-  <img src="{@docRoot}images/gp-about-top.jpg">
-</div>
-
-<p>
-  Top charts keep users in touch with what’s popular and trending with Android
-  users, right from the Apps and Games home pages. The charts stay fresh,
-  updating several times each day based on recent download activity. As an
-  app's ratings and download activity grow, it can move up in the charts.
-</p>
-
-<p>
-  To make the charts as relevant as possible for users across the world, they
-  are also country-specific in Google Play's most popular countries. As your
-  apps get traction and build momentum in downloads and ratings, they’ll climb
-  one or more of the top charts and gain even more exposure.
-</p>
-
-<table style="width:50%;">
-  <tr>
-    <td>
-      Top Free
-    </td>
-    <td>
-      Free apps and free games lists
-    </td>
-  </tr>
-
-  <tr>
-    <td>
-      Top Paid
-    </td>
-    <td>
-      Paid apps and paid games lists
-    </td>
-  </tr>
-
-  <tr>
-    <td>
-      Top Grossing
-    </td>
-    <td>
-      Gross proceeds, free or paid
-    </td>
-  </tr>
-
-  <tr>
-    <td>
-      Top New Free
-    </td>
-    <td>
-      Less than 30 days old
-    </td>
-  </tr>
-
-  <tr>
-    <td>
-      Top New Paid
-    </td>
-    <td>
-      Less than 30 days old
-    </td>
-  </tr>
-
-  <tr>
-    <td>
-      Trending
-    </td>
-    <td>
-      New arrivals growing quickly in installs
-    </td>
-  </tr>
-</table>
-
-<div class="headerLine">
-  <h2 id="featured-staff-picks">
-    Featured, Staff Picks, Collections, and Badges
-  </h2>
-
-
-</div>
-
-<p>
-  The Google Play editorial team is dedicated to bringing the best apps to the
-  attention of users and setting the tone for app quality throughout the store.
-  It constantly reviews apps from across Google Play to find not only the
-  best-known apps and games, but also the "diamonds in the rough" that they
-  want more people to see. The team promotes great apps in the
-  <em>Featured</em>, <em>Staff Picks</em>, and other collections.
-</p>
-
-<p>
-  You can't nominate your app for featuring, but the team is always monitoring
-  Google Play for great apps. If you build an app that users love and that
-  looks great on Android devices, the editorial team will notice.
-</p>
-
-<h3 id="featured-staff-picks2">
-  Featured and Staff Picks
-</h3>
-
-<p>
-  Each week the Google Play editorial staff selects a new set of apps to
-  promote in its popular <em>Featured</em> and <em>Staff Picks</em>
-  collections.
-</p>
-
-<p>
-  The <em>Featured</em> collections highlight the latest and greatest app and
-  game titles available for Android. The list also includes the best and most
-  popular apps in the top categories are also featured. <em>Staff Picks</em>
-  collects all recently featured apps and games on Google Play. To focus on
-  tablet users, A special <em>Staff Picks</em> collection highlights the best
-  apps for Android tablets.
-</p>
-
-<table style="text-align:center;margin:1.5em 0;">
-  <tr>
-    <td style="border:none;">
-      <img src="{@docRoot}images/gp-about-picks1.jpg">
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-6of12">
+      <h3 id="playstore-discovery">Discovery on the Play Store and the top lists</h3>
       <p>
-        Featured
+        The Play Store has been built to make discovering relevant apps, games, and
+        other content simple and pleasurable. Users can browse over 30 categories of
+        ranked apps. They can also discover popular and trending apps from one of the
+        ‘top charts’; updated throughout the day, they’re even country-specific in
+        Google Play's most popular countries.
       </p>
-    </td>
-    <td style="border:none;">
-      <img src="{@docRoot}images/gp-about-picks2.jpg">
-      <p>
-        Collection
-      </p>
-    </td>
-    <td style="border:none;">
-      <img src="{@docRoot}images/gp-about-picks3.jpg">
-      <p>
-        Editors' Choice
-      </p>
-    </td>
-  </tr>
-</table>
-
-<h3 id="collections">
-  App collections
-</h3>
-
-<p>
-  From time to time the editorial staff puts together a collection of apps and
-  games based on a theme or seasonal event. Users frequently use these lists to
-  select apps, attracted by the timeliness of the collection.
-</p>
-
-<p>
-  The editorial staff chooses apps for collection promotions &mdash;
-  high-quality apps that show the best of Android on phones and tablets. The
-  staff also looks for apps that can make an interesting or unique contribution
-  to the collection as a whole.
-</p>
-
-<h3 id="editors-choice">
-  <img style="margin-right:.25em;margin-bottom:.5em;" src=
-  "{@docRoot}images/editorschoice_ann.png"> Editors' Choice
-</h3>
-
-<p>
-  <em>Editors’ Choice</em> is a curated collection of apps that highlights some
-  of the very best apps available on Android. Editors choose these apps for
-  quality and great user interface, long-term popularity and innovative use of
-  Android features.
-</p>
-
-<p>
-  Apps chosen for <em>Editors’ Choice</em> also receive a badge that is
-  displayed wherever the app name is seen in Google Play.
-</p>
-
-<h3 id="top-developer">
-  <img style="margin-right:.25em;margin-bottom:.5em;" src=
-  "{@docRoot}images/topdev_ann.png"> Top Developer
-</h3>
-
-<p>
-  Top Developer is a badge recognizing established, respected developers for
-  their commitment to launching high-quality and innovative apps on Android.
-  The Google Play editorial staff awards a Top Developer badge from
-  time-to-time based on the cumulative work of the developer.
-</p>
-
-<p>
-  The Top Developer badge appears next to the developer name wherever it is
-  displayed in Google Play. The badge means long-term recognition of all of the
-  developer’s apps. It signifies an additional level of trust and confidence
-  users have in a developer’s products.
-</p>
-
-<div class="headerLine">
-  <h2 id="product-detail-pages">
-    Store Listing Pages
-  </h2>
-
-
-</div>
-
-<div class="figure">
-  <img src="{@docRoot}images/gp-about-listing.jpg">
-</div>
-
-<p>
-  Your app’s Google Play storefront is its <em>store listing page</em>: a rich
-  and colorful page that lets you promote your app, highlight its ratings and
-  reviews, and show what your app can do.
-</p>
-
-<p>
-  Your store listing is where your users come to find out everything about your
-  app. When they see your app listed in search results, top charts, category
-  listings, and collections, one tap takes them directly to your store listing.
-</p>
-
-<p>
-  Manage your product details page through the <a href=
-  "https://play.google.com/apps/publish/">Google Play Developer Console</a>
-  from any web browser. Sign in to upload or update your brand assets, and
-  enter your product details in the languages of your markets.
-</p>
-
-<p>
-  When you publish, Google Play adds your app’s ratings, reviews, links to your
-  other products, and more. It also makes sure your store listing page looks
-  great on phones, tablets, and in a web browser.
-</p>
-
-<p>
-  You can link web users directly to your product details page from outside
-  Google Play, such as from your web site, an ad campaign, reviews, social
-  media posts, and more. See <a href=
-  "{@docRoot}distribute/tools/promote/linking.html">Linking to Your
-  Products</a> to find out how.
-</p>
-
-<p style="clear:both">
-</p>
-
-<div class="headerLine">
-<h2>Related Resources</h2>
-</div>
-
-<div class="resource-widget resource-flow-layout col-13"
-  data-query="collection:distribute/googleplay"
-  data-sortOrder="-timestamp"
-  data-cardSizes="9x3"
-  data-maxResults="4"></div>
     </div>
+    <div class="col-5of12 col-push-1of12">
+     <img src="{@docRoot}images/distribute/googleplay/about_play_store_home.png"
+        style="padding-top:1em;" width="225">
+    </div>
+  </div>
+
+
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-6of12">
+      <h3 id="playstore-listing">Your Play Store listing</h3>
+      <p>
+        Your app’s Play Store listing is where users come to find out everything
+        about your app: hero image or video, age rating, total downloads, summary
+        rating, features, and screenshots. Users can also see the ratings and reviews
+        left by other users, which are an important influence on your app’s ranking
+        in lists and search. When creating your app’s page you can take advantage of
+        <a href="{@docRoot}distribute/users/experiments.html"
+        >Store Listing Experiments</a> to test variations in
+        text and graphics and find the combination that drives the most downloads.
+      </p>
+    </div>
+    <div class="col-5of12 col-push-1of12">
+     <img src="{@docRoot}images/distribute/googleplay/about_play_store_listing.png"
+          style="padding-top:1em;" width="225">
+    </div>
+  </div>
+
+
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-6of12">
+      <h3 id="devpage">Your developer page</h3>
+      <p>
+        You can now promote your brand using your new <a href=
+        "https://support.google.com/googleplay/android-developer/answer/6226441"
+        class="external-link">developer page.</a> Add a hero image, logo, and
+        description, then optionally add a link to your website and a featured app.
+        This is a great way to increase exposure, in addition to your
+        developer-specific app collection on Google Play.
+      </p>
+    </div>
+    <div class="col-5of12 col-push-1of12">
+     <img src="{@docRoot}images/distribute/googleplay/about_developer_page.png"
+          style="padding-top:1em;" width="225">
+    </div>
+  </div>
+
+
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-6of12">
+      <h3 id="search-discovery">Discovery through search</h3>
+      <p>
+        Search on Google Play is one of the single biggest drivers of installs and it
+        lets users pinpoint an app or game quickly. Search uses powerful heuristics
+        to suggest terms as the user types, and it offers direct links to apps as
+        suggestions. In results, users find the most relevant and most popular apps
+        at the top.
+      </p>
+    </div>
+    <div class="col-5of12 col-push-1of12">
+     <img src="{@docRoot}images/distribute/googleplay/about_search_results.png"
+          style="padding-top:1em;" width="225">
+    </div>
+  </div>
+
+
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-6of12">
+      <h3 id="browsing">Personalized browsing experience</h3>
+      <p>
+        Using manual and algorithmic curation, the Play Store creates unique
+        collections that represent deeper user interests. These collections are then
+        matched with a user’s interests and displayed on their Play Store home page.
+        Since its introduction this more-personalized approach to app listings has
+        doubled the likelihood a user will install an app. This example shows the
+        home page of a user who enjoys outdoor activity and fitness apps.
+      </p>
+    </div>
+    <div class="col-5of12 col-push-1of12">
+     <img src="{@docRoot}images/distribute/googleplay/about_personalized_home.png"
+          style="padding-top:1em;" width="225">
+    </div>
+  </div>
+</div>
+
+<h2 id="featured-staff-picks">Featured Apps and Collections</h2>
+<p>
+  The Google Play editorial team bring the best apps to the attention of users
+  through the Featured, Staff Picks, and Editor’s Choice collections.
+  Periodically they also create app collections based on a theme or seasonal
+  event. The apps and games featured will include some that are popular and
+  well known, but also innovative and groundbreaking apps that haven’t built
+  their ranking yet.
+</p>
+
+<h2 id="editors-choice">Editor's Choice, Top Developer, and Other Badges</h2>
+<p>
+  The best apps and games and the developers who create them are awarded badges
+  by the Google Play editorial staff: Editors’ Choice, Top Developer, and
+  others. Displayed with the app and developer name when they are seen in
+  Google Play, they give users an additional level of trust and confidence in
+  your apps.
+</p>
diff --git a/docs/html/distribute/googleplay/cardboard.jd b/docs/html/distribute/googleplay/cardboard.jd
index d5965d1..8d21c2f 100644
--- a/docs/html/distribute/googleplay/cardboard.jd
+++ b/docs/html/distribute/googleplay/cardboard.jd
@@ -1,6 +1,7 @@
 page.title=Build VR with Google Cardboard
 page.metaDescription=Build apps and games with VR, for a viewer anyone can buy.
-page.tags=vr, carboard, games
+page.tags=vr, cardboard, games
+page.image=images/cards/card-cardboard_2x.png
 @jd:body
 
 <p>
diff --git a/docs/html/distribute/googleplay/developer-console.jd b/docs/html/distribute/googleplay/developer-console.jd
index 7631980..c826e82 100644
--- a/docs/html/distribute/googleplay/developer-console.jd
+++ b/docs/html/distribute/googleplay/developer-console.jd
@@ -1,27 +1,20 @@
 page.title=Developer Console
 page.metaDescription=Learn about the Developer Console, your home for app publishing on Google Play.
 page.image=images/cards/dev-console_2x.jpg
+page.tags="play, publish, google, google play"
 Xnonavpage=true
 
 @jd:body
-    
-    <div id="qv-wrapper">           
+
+    <div id="qv-wrapper">
   <div id="qv">
-    <h2>Publishing Features</h2>
+    <h2>Features</h2>
     <ol>
-      <li><a href="#allapps">All Applications</a></li>
-      <li><a href="#account-details">Your Account Details</a></li>
-      <li><a href="#merchant-account">Linking Your Merchant Account</a></li>
-      <li><a href="#multiple-user-accounts">Multiple User Accounts</a></li>
-      <li><a href="#alpha-beta">Alpha and Beta Testing</a></li>
-      <li><a href="#staged-rollouts">Staged Rollouts</a></li>
-      <li><a href="#multiple-apk">Multiple APK Support</a></li>
-      <li><a href="#selling-pricing-your-products">Selling and Pricing</a></li>
-      <li><a href="#in-app-products">In-App Products</a></li>
-      <li><a href="#distribution-controls">Distribution Controls</a></li>
-      <li><a href="#reviews-reports">User Reviews, Crash Reports</a></li>
-      <li><a href="#app-stats">App Stats</a></li>
-      <li><a href="#related-resources">Related Resources</a></li>
+      <li><a href="#latest">Latest blog posts</a></li>
+      <li><a href="#publish">Publish with confidence</a></li>
+      <li><a href="#aquire-users">Acquire users</a></li>
+      <li><a href="#insights">Actionable insights</a></li>
+      <li><a href="#manage">Manage your app</a></li>
     </ol>
   </div>
 </div>
@@ -30,8 +23,9 @@
   The <a href="https://play.google.com/apps/publish/">Google Play Developer
   Console</a> is your home for publishing operations and tools.
 </p>
-<!-- <img src="{@docRoot}images/gp-dc-startscreen.jpg" style="width:480px;" /> -->
-<img src="{@docRoot}images/gp-devconsole-home.png" style="width:480px;">
+
+<img src="{@docRoot}images/distribute/googleplay/gp-devconsole-home.png" style="width:480px;">
+
 <p>
   Upload apps, build your product pages, configure prices and distribution, and
   publish. You can manage all phases of publishing on Google Play through the
@@ -44,547 +38,252 @@
   verification by email, you can sign in to your Google Play Developer Console.
 </p>
 
+
+<p style="clear:both">
+</p>
+
+<div class="dynamic-grid">
 <div class="headerLine">
-  <h2 id="allapps">
-    All Applications
-  </h2>
-
-
+<h2 id="latest">Latest blog posts</h2>
 </div>
 
-<p>
-  Start in All Applications, which gives you a quick overview of your apps,
-  lets you jump to stats, reviews, and product details, or upload a new app.
-</p>
+<div class="resource-widget resource-flow-layout col-13"
+  data-query="type:blog+tag:developerconsole+tag:featured"
+  data-sortOrder="-timestamp"
+  data-cardSizes="6x3"
+  data-maxResults="3"></div>
+  </div>
 
-<div style="padding:1em 0em 0em 0em;">
-  <img src="{@docRoot}images/gp-dc-home.png" class="border-img">
-</div>
+<h2 id="publish">Publish with confidence</h2>
 
-<div class="headerLine" style="margin-top:-6px">
-  <h2 id="account-details">
-    Your Account Details
-  </h2>
+<div class="wrap">
+  <h3 id="alpha-beta">Alpha and beta tests</h3>
 
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-3of12">
+      <p>
+        Distribute your pre-release app to users as an open beta with a
+        one-click, opt-in URL or as a closed beta using an email list, Google
+        Group, or Google+ community. Users can then provide feedback, while not
+        affecting your app’s public reviews and rating. This valuable feedback
+        will help you test features and improve the quality of your app.
+        <a href="{@docRoot}distribute/engage/beta.html">Learn more</a>.
+      </p>
+    </div>
 
-</div>
+    <div class="col-8of12 col-push-1of12">
+      <img src=
+      "{@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test.png"
+      srcset=
+      "{@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test.png 1x, {@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test_2x.png 2x"
+      width="500">
+    </div>
+  </div>
 
-<p>
-  Specify basic developer profile information about yourself or your company on
-  the accounts detail page. This identifies you to Google Play and your
-  customers. You can go back at any time to edit the information and change
-  your settings.
-</p>
+  <h3 id="cloud-test">Cloud Test Lab</h3>
 
-<div>
-  <img src="{@docRoot}images/gp-dc-profile.png" class="frame">
-</div>
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-3of12">
+      <p>
+        Get free automated testing of your app on physical devices covering
+        nearly every brand, model, and version of the devices your users might
+        be using. The lab will help you quickly find compatibility issues you
+        may miss using only your available test devices. Sign-up in the
+        Developer Console to become an early tester before this feature becomes
+        more widely available. <a href=
+        "https://developers.google.com/cloud-test-lab/" class=
+        "external-link">Learn more and sign up for updates.</a>
+      </p>
+    </div>
 
-<p>
-  Your developer profile contains:
-</p>
-
-<ul>
-  <li>
-    <p>
-      Developer name &mdash; displayed on your store listing page and elsewhere
-      on Google Play.
-    </p>
-  </li>
-
-  <li>
-    <p>
-      Contact information &mdash; used by Google only, it isn't seen by your
-      customers.
-    </p>
-  </li>
-
-  <li>
-    <p>
-      Web site URL &mdash; displayed on your store listing page.
-    </p>
-  </li>
-</ul>
-
-<p>
-  On the account details page you can also add restricted access for marketers
-  and other teams, register for a merchant account, or set up test accounts for
-  Google Play licensing.
-</p>
-
-<div class="headerLine">
-  <h2 id="merchant-account">
-    Linking Your Merchant Account
-  </h2>
-
-
-</div>
-
-<p>
-  If you want to sell apps or in-app products, link your Google payments merchant
-  account to your developer profile. Google Play uses the linked merchant
-  account for financial and tax identification, as well as for monthly payouts
-  from sales.
-</p>
-
-<div class="headerLine">
-  <h2 id="multiple-user-accounts">
-    Multiple User Accounts
-  </h2>
-
-
-</div>
-
-<p>
-  Set up user accounts for other team members to access different parts of your
-  Developer Console.
-</p>
-
-<div style="width:550px;">
-  <img src="{@docRoot}images/gp-dc-invite.png" class="frame">
-</div>
-
-<p>
-  The first account registered is the <em>account owner</em>, with full access
-  to all parts of the console. The owner can add <em>user accounts</em> and
-  manage console access.
-</p>
-
-<p>
-  For example, an owner can grant users access to publishing and app
-  configuration, but not to financial reports. Learn how to <a href=
-  "https://support.google.com/googleplay/android-developer/answer/2528691">set
-  up multiple accounts</a> now.
-</p>
-
-<div class="headerLine">
-  <h2 id="store-listing-details">
-    Store Listing Details
-  </h2>
-
-
-</div>
-
-<p>
-  Use the Developer Console to set up a <em>Store Listing page</em>. This is
-  the home for your app in Google Play. It's the page users see on their mobile
-  phones or on the web to learn about your app and download it.
-</p>
-
-<p>
-  Upload custom brand assets, screenshots, and videos to highlight what's great
-  about your app. Provide a localized description, add notes about the latest
-  version, and more. You can update your store listing at any time.
-</p>
-
-<div>
-  <img src="{@docRoot}images/gp-dc-details.png" class="frame">
-</div>
-
-<div class="headerLine">
-  <h2 id="upload-instantly-publish">
-    Upload and Instantly Publish
-  </h2>
-
-
-</div>
-
-<p>
-  From the Developer Console you can quickly upload and publish a release-ready
-  Android application package file. The app is a <em>draft</em> until you
-  publish it, at which time Google Play makes your store listing page and app
-  available to users&mdash;your app appears in the store listings within hours,
-  not weeks.
-</p>
-
-<p>
-  Once your app is published, you can update it as often as you want: Change
-  prices, configuration, and distribution options at any time, without needing
-  to update your app binary.
-</p>
-
-<p>
-  As you add features or address code issues, you can publish an updated binary
-  at any time. The new version is available almost immediately and existing
-  customers are notified that an update is ready for download. Users can also
-  accept automatic updates to your app, so that your updates are delivered and
-  installed as soon as you publish them. You can unpublish your apps app at any
-  time.
-</p>
-
-<div class="headerLine">
-  <h2 id="alpha-beta">
-    Alpha and Beta Testing
-  </h2>
-
-
-</div>
-
-<p>
-  It's always valuable to get real-world feedback from users, especially before
-  launch. Google Play makes it easy to distribute pre-release versions of your
-  app to alpha and beta test groups anywhere in the world.
-</p>
-
-<p>
-  In the <strong>APK</strong> section of your Google Play Developer Console
-  you’ll find the <strong>Alpha Testing</strong> and <strong>Beta
-  Testing</strong> tabs. Here you can upload versions of your apps’ APK files
-  and define a list of testers as a <a href=
-  "https://support.google.com/groups/answer/46601">Google Group</a> or <a href=
-  "https://support.google.com/plus/topic/2888488">Google+ Community</a>. Once
-  this is done you’ll receive a URL that you forward to your testers, from
-  which they can opt-in to the testing program.
-</p>
-
-<div>
-  <img src="{@docRoot}images/gp-dc-ab.png" class="frame">
-</div>
-
-<p>
-  After opting-in, your testers then go to your app’s product page and when
-  they download the app Google Play will deliver them the alpha or beta version
-  as appropriate. Incidentally, if a user happens to be opted-in to both your
-  testing groups, Google Play will always deliver them the alpha test version.
-</p>
-
-<p>
-  Note that users cannot provide feedback and reviews on alpha and beta
-  versions of your apps. To gather feedback you could used the <a href=
-  "https://support.google.com/groups/answer/46601">Google Group</a> or <a href=
-  "https://support.google.com/plus/topic/2888488">Google+ Community</a>, or
-  setup an email address or your own website.
-</p>
-
-<p>
-  You can use these testing programs to <a href=
-  "{@docRoot}distribute/essentials/optimizing-your-app.html">optimize your
-  apps</a>, help with <a href=
-  "{@docRoot}distribute/users/expand-to-new-markets.html">rollout to new
-  markets</a>, and start <a href=
-  "{@docRoot}distribute/users/build-community.html">building your
-  community</a>. There is also more information on using beta test in the
-  <a href="{@docRoot}distribute/tools/launch-checklist.html">Launch
-  Checklist</a> and <a href=
-  "{@docRoot}distribute/tools/localization-checklist.html">Localization
-  Checklist</a>.
-</p>
-
-<div class="headerLine">
-  <h2 id="staged-rollouts">
-    Staged Rollouts
-  </h2>
-
-
-</div>
-
-<p>
-  You can also stage the rollout of your apps using the Production tab in the
-  APK section of your Google Play Developer Console. Here you can define the
-  percentage of user who’ll be able to download your app.
-</p>
-
-<p>
-  Staging your rollout will help limit the impact of unexpected bugs or server
-  load and enable you to gauge user feedback with an unbiased sample of users.
-  Users can rate and review your apps during staged roll outs, so if you’re
-  hesitant, start your rollout to a small percentage of users. Be sure to watch
-  for and respond to any negative reviews.
-</p>
-
-<p>
-  Note that rollbacks aren’t supported due to the <a href=
-  "{@docRoot}tools/publishing/versioning.html">app versioning requirements</a>
-  of the Android platform. If you need to rollback, consider launching a
-  previous APK with a new version number. However, this practice should be used
-  only as a last resort, as users will lose access to new features and your old
-  app may not be forward-compatible with your server changes or data formats,
-  so be sure to run <a href="#alpha-beta">alpha and beta tests</a> of your
-  updates.
-</p>
-
-<div class="headerLine">
-  <h2 id="multiple-apk">
-    Multiple APK Support
-  </h2>
-
-
-</div>
-
-<p>
-  In most cases, a single app package (APK) is all you need, and it’s usually
-  the easiest way to manage and maintain the app. However, if you need to
-  deliver a different APK to different devices, Google Play provides a way to
-  do that.
-</p>
-
-<p>
-  <em>Multiple APK support</em> lets you create multiple app packages that use
-  the same package name but differ in their OpenGL texture compression formats,
-  screen-size support, or Android platform versions supported. You can simply
-  upload all the APKs under a single product listing and Google Play selects
-  the best ones to deliver to users, based on the characteristics of their
-  devices.
-</p>
-
-<p>
-  You can also upload up to two secondary downloads for each published APK,
-  including multiple APKs, using the <em>APK Expansion Files</em> option. Each
-  expansion file can be up to 2GB and contain any type of code or assets.
-  Google Play hosts them for free and handles the download of the files as part
-  of the normal app installation.
-</p>
-
-<div class="headerLine">
-  <h2 id="selling-pricing-your-products">
-    Selling and Pricing Your Products
-  </h2>
-
-
-</div>
-
-<div class="figure-right">
-  <img src="{@docRoot}images/gp-buyer-currency.png" class="frame">
-</div>
-
-<p>
-  You have tools to set prices for your apps and in-app products. Your app can
-  be free to download or priced, requiring payment before download.
-</p>
-
-<ul>
-  <li>If you publish your app as free, it must <strong>remain free for the life
-  of the app</strong>. Free apps can be downloaded by all users in Google Play.
-  </li>
-
-  <li>If you publish it as priced, you can later change it to free. Priced apps
-  can be purchased and downloaded only by users who have registered a form of
-  payment in Google Play.
-  </li>
-</ul>
-
-<div class="sidebox-wrapper" style="float:right;">
-  <div class="sidebox">
-    <p>
-      See <a href=
-      "http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&amp;answer=138294&amp;topic=2365624&amp;ctx=topic">
-      Supported locations for distributing applications</a> for a list of
-      countries where you can distribute or sell your apps.
-    </p>
+    <div class="col-8of12 col-push-1of12">
+      <img src=
+      "{@docRoot}images/distribute/googleplay/dev-console_cloud-test-lab.png"
+      srcset=
+      "{@docRoot}images/distribute/googleplay/dev-console_cloud-test-lab.png 1x, {@docRoot}images/distribute/googleplay/dev-console_cloud-test-lab_2x.png 2x"
+      width="500">
+    </div>
   </div>
 </div>
 
-<p>
-  You can also offer in-app products and subscriptions, whether the app is free
-  or priced. Set prices separately for priced apps, in-app products, and
-  subscriptions.
-</p>
+<h3 id="staged-rollouts">Staged rollouts</h3>
 
 <p>
-  When users browse your app product pages or initiate a purchase, Google Play
-  shows them the price they’ll be charged in their local currency.
+  Release app updates progressively to an increasing portion of your users and
+  monitor for missed issues. Then take the opportunity to fix problems before
+  all your users are affected. <a href=
+  "https://support.google.com/googleplay/android-developer/answer/3131213"
+  class="external-link">Learn more.</a>
 </p>
 
-<p>
-  For each product, you initially set a default price in your own currency. If
-  you do no more, Google Play will automatically set local prices once a month
-  based on the US-Dollar price for your app.
+<p class="aside">
+  <strong>Tip:</strong> If you find an issue during a rollout stage you can
+  halt the rollout to further minimize the effect, and then resume rollout once
+  a fix has been made.
 </p>
 
-<p>
-  However, Google Play gives you complete control over how you price your
-  products in each country. To start you can manually set fixed local prices
-  from the default price, using the <strong>auto-convert prices now</strong>
-  feature. You can then review these prices and set new ones for any countries
-  you wish &mdash; the price for each country is independent, so you can adjust
-  one price without affecting others. For most countries, the price you set is
-  the final price charged to users, including taxes.
-</p>
+<h2 id="aquire-users">Aquire users</h2>
 
-<p>
-  For more on pricing your apps, see <a href=
-  "{@docRoot}distribute/users/expand-to-new-markets.html#localize-your-google-play-listing">
-  Expand into New Markets</a>.
-</p>
+  <h3 id="adwords">AdWords Universal App Campaigns</h3>
 
-<div class="headerLine">
-  <h2 id="in-app-products">
-    In-app Products
-  </h2>
-
-
-</div>
-
-<p>
-  You can sell in-app products and subscriptions using <a href=
-  "{@docRoot}google/play/billing/index.html">Google Play In-app Billing</a> as
-  a way to monetize your apps. In-app products are one-time purchases, while
-  subscriptions are recurring charges on a monthly or annual basis.
-</p>
-
-<p>
-  In the <strong>In-app Products</strong> section for a specific published or
-  draft APK you:
-</p>
-
-<ul>
-  <li>Create product lists for in-app products and subscriptions.
-  </li>
-
-  <li>Set prices.
-  </li>
-
-  <li>Publish the products with the app or withdraw obsolete products.
-  </li>
-</ul>
-
-<p>
-  For details on how to implement In-app Billing, see the <a href=
-  "{@docRoot}google/play/billing/index.html">In-app Billing</a> developer
-  documentation. You make use of in-app products in the <a href=
-  "{@docRoot}distribute/monetize/premium.html">Premium</a>, <a href=
-  "{@docRoot}distribute/monetize/freemium.html">Freemium</a>, and <a href=
-  "{@docRoot}distribute/monetize/subscriptions.html">Subscription</a>
-  monetization models
-</p>
-
-<div class="headerLine">
-  <h2 id="distribution-controls">
-    Distribution Controls
-  </h2>
-
-
-</div>
-
-<p>
-  Manage which countries and territories your apps will distribute to. For some
-  countries, you can choose which carriers you want to target. You can also see
-  the list of devices your app is available for, based on any distribution
-  rules declared in its manifest file.
-</p>
-
-<h3 id="geotargeting">
-  Geographic targeting
-</h3>
-
-<p>
-  You can use controls in the Google Play Developer Console to easily manage
-  the geographic distribution of your apps, without any changes in your
-  application binary. You can specify which countries and territories you want
-  to distribute to, and even which carriers (for some countries).
-</p>
-
-<p>
-  When users visit the store, Google Play makes sure that they are in one of
-  your targeted countries before downloading your app. You can change your
-  country and carrier targeting at any time just by saving changes in the
-  Google Play Developer Console.
-</p>
-
-<div class="figure-right" style="width:500px;">
-  <img src="{@docRoot}images/gp-supported-dev-requirements.png" class="frame">
-</div>
-
-<p>
-  To help you market to users around the world, you can <a href=
-  "{@docRoot}distribute/tools/launch-checklist.html#start-localization">localize
-  your store listing</a>, including app details and description, promotional
-  graphics, screenshots, and more.
-</p>
-
-<h3 id="captargeting">
-  Capabilities targeting
-</h3>
-
-<p>
-  Google Play also lets you control distribution according to device features
-  or capabilities that your app depends on. There are several types of
-  dependencies that the app can define in its manifest, such as hardware
-  features, OpenGL texture compression formats, libraries, Android platform
-  versions, and others.
-</p>
-
-<p>
-  When you upload your app, Google Play reads the dependencies and sets up any
-  necessary distribution rules. For technical information about declaring
-  dependencies, read <a href="{@docRoot}google/play/filters.html">Filters on
-  Google Play</a>.
-</p>
-
-<p>
-  For pinpoint control over distribution, Google Play lets you see all of the
-  devices your app is available to based on its dependencies (if any). From the
-  Google Play Developer Console, you can list the supported devices and even
-  exclude specific devices if needed.
-</p>
-
-<div class="headerLine">
-  <h2 id="reviews-reports">
-    User Reviews and Crash Reports
-  </h2>
-
-
-</div>
-
-<div class="figure-right" style="width:500px;">
-  <img src="{@docRoot}images/gp-dc-reviews.png" class="frame">
-  <p class="img-caption">
-    The User reviews section gives you access to user reviews for a specific
-    app. You can filter reviews in a number of ways to locate issues more
-    easily and support your customers more effectively.
+  <p>
+    Easily and conveniently buy AdWords app install ads, across Search
+    (including Play Search), YouTube, AdMob, and the Google Display Network.
+    Simply set a budget and cost per acquisition and Google takes care of the
+    rest. <a href="{@docRoot}distribute/users/promote-with-ads.html">Learn
+    more</a>.
   </p>
+
+<div class="wrap">
+  <h3 id="listing-experiments">Store Listing Experiments</h3>
+
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-3of12">
+      <p>
+        Test variations of the images and text used to promote and describe
+        your app on your Play store listing. Then when enough data has been
+        collected, choose to make the winning combination visible on Google
+        Play. <a href="{@docRoot}distribute/users/experiments.html">Learn
+        more</a>.
+      </p>
+
+      <p class="aside">
+        <strong>Tip:</strong> You can even try out different orders for your
+        screenshots and other images to discover which grabs users’ attention
+        the best.
+      </p>
+    </div>
+
+    <div class="col-8of12 col-push-1of12">
+      <img src=
+      "{@docRoot}images/distribute/googleplay/dev-console_store-listing-experiment.png"
+      srcset=
+      "{@docRoot}images/distribute/googleplay/dev-console_store-listing-experiment.png 1x, {@docRoot}images/distribute/googleplay/dev-console_store-listing-experiment_2x.png 2x"
+      width="500">
+    </div>
+  </div>
+
+  <h3 id="user-perf-report">User Acquisition performance report</h3>
+
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-3of12">
+      <p>
+        Discover where visitors to your Play Store listing come from, how many
+        go on to install your app, and how many buy your in-app products in the
+        User Acquisition performance report; compare cohorts, examine
+        acquisition channels, and see details of users and buyers. <a href=
+        "{@docRoot}distribute/users/user-acquisition.html">Learn more</a>.
+      </p>
+    </div>
+
+    <div class="col-8of12 col-push-1of12">
+      <img src=
+      "{@docRoot}images/distribute/googleplay/dev-console_conversion-funnel.png"
+      srcset=
+      "{@docRoot}images/distribute/googleplay/dev-console_conversion-funnel.png 1x, {@docRoot}images/distribute/googleplay/dev-console_conversion-funnel_2x.png 2x"
+      width="500">
+    </div>
+  </div>
 </div>
 
-<p>
-  Google Play makes it easy for users to submit reviews of your app for the
-  benefit of other users. The reviews give you usability feedback, support
-  requests, and details of important functionality issues direct from your
-  customers.
-</p>
+<h2 id="insights">Actionable insights</h2>
 
-<p>
-  Use crash reports for debugging and improving your app. You can see crash
-  reports with stack trace and other data, submitted automatically from Android
-  devices.
-</p>
+<div class="wrap">
 
-<div class="headerLine">
-  <h2 id="app-stats">
-    App Statistics
-  </h2>
+<h3 id="player-analytics">Player Analytics</h3>
 
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-3of12">
+      <p>
+        With Google Play game services integration, discover more about the
+        behaviour of your game players; how they play and how they buy. Also get
+        help setting and monitoring revenue budgets. <a href=
+        "{@docRoot}distribute/engage/game-services.html">Learn more</a>.
+      </p>
+    </div>
 
+    <div class="col-8of12 col-push-1of12">
+      <img src=
+      "{@docRoot}images/distribute/googleplay/dev-console_player-analytics.png"
+      srcset=
+      "{@docRoot}images/distribute/googleplay/dev-console_player-analytics.png 1x, {@docRoot}images/distribute/googleplay/dev-console_player-analytics_2x.png 2x"
+      width="500">
+    </div>
+  </div>
+
+<h3 id="stats">Detailed statistics and reports</h3>
+
+  <div class="cols" style="margin-top:2em;">
+    <div class="col-3of12">
+      <p>
+        Get a wide range of reports on the performance of your app and behaviour
+        of users; such as installs, revenue, crashes, and more. Turn on email
+        alerts to be notified of any sudden changes to important stats. <a href=
+        "https://support.google.com/googleplay/android-developer/topic/3450942?ref_topic=3450986"
+        class="external-link">Learn more.</a>
+      </p>
+    </div>
+
+    <div class="col-8of12 col-push-1of12">
+      <img src=
+      "{@docRoot}images/distribute/googleplay/dev-console_statistics.png" srcset=
+      "{@docRoot}images/distribute/googleplay/dev-console_statistics.png 1x, {@docRoot}images/distribute/googleplay/dev-console_statistics_2x.png 2x"
+      width="500">
+    </div>
+  </div>
 </div>
 
-<div class="figure" style="width:500px">
-  <img src="{@docRoot}images/gp-dc-stats.png">
-  <p class="img-caption">
-    <b>App statistics page</b>: Shows you a variety of statistics about a
-    specific app's installation performance.
-  </p>
-</div>
+
+<h3 id="optimization"> Optimization tips</h3>
 
 <p>
-  You get detailed statistics on the install performance of your app.
+  Get tips, based on automatic app scanning, on ways in which you can improve
+  your app, everything from updating old APIs to suggestions for languages you
+  should consider localizing to.
 </p>
 
-<p>
-  See installation metrics measured by unique users as well as by unique
-  devices. View active installs, total installs, upgrades, daily installs and
-  uninstalls, and metrics about ratings.
-</p>
+<h2 id="manage">Manage your app</h2>
+
+<h3 id="manage-apks">Manage your APKs</h3>
 
 <p>
-  Zoom into the installation numbers by metric, including Android platform
-  version, device, country, language, app version, and carrier. View the
-  installation data for each dimension on timeline charts.
+  Upload and manage your Android application packages (APK) to the Developer
+  Console as drafts or to your Alpha, Beta, or Production channels. <a href=
+  "https://support.google.com/googleplay/android-developer/answer/113469?ref_topic=3450986"
+  class="external-link">Learn more.</a>
 </p>
 
+<p class="aside">
+  <strong>Tip:</strong> Ensure users get the best possible experience for the
+  smallest app downloads by creating multiple APKs with just the right content
+  for device screen size, hardware features and more.
+</p>
+
+<h3 id="iap">In-app products and subscriptions</h3>
+
 <p>
-  These charts highlight your app’s installation peaks and longer-term trends.
-  They help you learn your user’s adoption behavior, correlate statistics to
-  promotions, see the effect of app improvements, and other factors. Focus in
-  on data inside a dimension by adding specific points to the timeline.
+  Manage your in-app products and price them for local markets accordingly.
+  Offer weekly, monthly, annual, or seasonal subscriptions and take advantage
+  of features such as grace periods and trials. <a href=
+  "https://support.google.com/googleplay/android-developer/topic/3452896?ref_topic=3452890"
+  class="external-link">Learn more.</a>
+</p>
+
+<h3 id="pricing">Pricing and distribution</h3>
+
+<p>
+  Control the price of your app for each country you choose to distribute to.
+  Make your app available to new audiences — opt-in to Android Auto, Android
+  TV, and Android Wear, as well as Designed for Families, Google Play for Work,
+  and Google Play for Education. <a href=
+  "https://support.google.com/googleplay/android-developer/answer/113469#pricing"
+  class="external-link">Learn more</a>.
+</p>
+
+<p class="external-link">
+  <strong>Tip:</strong> You can set prices in other countries automatically
+  based on current exchange rates using the <strong>auto-convert prices
+  now</strong> feature.
 </p>
 
 <p style="clear:both">
@@ -596,7 +295,7 @@
 </div>
 
 <div class="resource-widget resource-flow-layout col-13"
-  data-query="collection:distribute/googleplay/developerconsole"
+  data-query="collection:distribute/googleplay/developerconsole/related"
   data-sortOrder="-timestamp"
   data-cardSizes="9x3"
   data-maxResults="6"></div>
diff --git a/docs/html/distribute/googleplay/families/about.jd b/docs/html/distribute/googleplay/families/about.jd
index 9b85c9a..fa7af7c 100644
--- a/docs/html/distribute/googleplay/families/about.jd
+++ b/docs/html/distribute/googleplay/families/about.jd
@@ -174,4 +174,39 @@
   for Families program and Google Play opportunities, sign up using the
   <a href="https://docs.google.com/forms/d/1EtvUWqlkxS6RxHJjeI-3-7uzdbIZx6n9Cocy2D369B8/viewform">
   Designed for Families Interest Form</a>
-</p>
\ No newline at end of file
+</p>
+
+<h2 id="playbook">
+  Find Success with the Family Playbook
+</h2>
+
+<p>
+  Read our developer guide, "The Family Playbook", to get tips on how to succeed
+  with family and kid-focused apps and games on Google Play.
+</p>
+
+<p>
+  The Family Playbook is a companion guide to <a href="https://g.co/play/developerguide">The
+  Secrets to App Success on Google Play</a> and includes best practices and advice from
+  other developers to help you tailor your apps for families and kids in order to
+  provide high quality, age-appropriate content.
+</p>
+
+<div style="text-align:center">
+  <a href="http://g.co/play/familyplaybook">
+  <img alt="Get it on Google Play"
+   src="https://play.google.com/intl/en_us/badges/images/books/en-play-badge-border.png"
+   style="height:60px" />
+  </a>
+</div>
+
+<p>
+  You can also <a
+  href="{@docRoot}shareables/distribute/family_playbook/family_playbook_v2a_en.pdf">download
+  the pdf</a>.
+</p>
+
+<p>
+  We’d love to hear your feedback so we can continue to improve our developer
+  resources, please <a href="http://goo.gl/xZL1No">let us know what you think</a>.
+</p>
diff --git a/docs/html/distribute/googleplay/googleplay_toc.cs b/docs/html/distribute/googleplay/googleplay_toc.cs
index 60da6d2..021a986 100644
--- a/docs/html/distribute/googleplay/googleplay_toc.cs
+++ b/docs/html/distribute/googleplay/googleplay_toc.cs
@@ -39,19 +39,6 @@
     </div>
   </li>
   <li class="nav-section">
-    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/googleplay/guide.html"
-       es-lang="Cómo tener éxito en Google Play"
-       ja-lang="Google Play で成功を手にする"
-       ko-lang="Google Play에서 성공 모색"
-       pt-br-lang="Obtendo sucesso no Google Play"
-       ru-lang="Найдите свой путь к успеху в Google Play"
-       zh-cn-lang="在 Google Play 上取得成功"
-       zh-tw-lang="在 Google Play 上尋找成功">
-           Find Success on <span style="white-space:nowrap">Google Play
-        </a>
-    </div>
-  </li>
-  <li class="nav-section">
     <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/googleplay/wear.html"
        es-lang="Distribución para Android Wear"
        ja-lang="Android Wear への配布"
@@ -132,7 +119,20 @@
   </li>
   <li class="nav-section">
     <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/googleplay/cardboard.html">
-          <span class="en">Build VR with <span style="white-space:nowrap">Google Cardboard</span></span>
+          <span class="en">Build VR with <span style="white-space:nowrap">Cardboard</span></span>
+        </a>
+    </div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/googleplay/guide.html"
+       es-lang="Cómo tener éxito en Google Play"
+       ja-lang="Google Play で成功を手にする"
+       ko-lang="Google Play에서 성공 모색"
+       pt-br-lang="Obtendo sucesso no Google Play"
+       ru-lang="Найдите свой путь к успеху в Google Play"
+       zh-cn-lang="在 Google Play 上取得成功"
+       zh-tw-lang="在 Google Play 上尋找成功">
+           Find Success on <span style="white-space:nowrap">Google Play
         </a>
     </div>
   </li>
@@ -142,4 +142,4 @@
     buildToggleLists();
     changeNavLang(getLangPref());
 //-->
-</script>
\ No newline at end of file
+</script>
diff --git a/docs/html/distribute/googleplay/guide.jd b/docs/html/distribute/googleplay/guide.jd
index 8317206..6cb8cc0 100644
--- a/docs/html/distribute/googleplay/guide.jd
+++ b/docs/html/distribute/googleplay/guide.jd
@@ -1,7 +1,8 @@
-page.title=Finding Success on Google Play
-page.metaDescription=A guide to help you find success with your app or game business on Google Play.
-meta.tags="distribute", "bestpractices"
-page.tags="google play", "business", "monetize", "engagement"
+page.title=Find Success on Google Play
+page.metaDescription=The updated guide that helps you find success with your app or game business on Google Play.
+page.tags="play,protips"
+page.timestamp=1447437450
+meta.tags="secrets, success, play, google"
 page.image=distribute/images/play_dev_guide.png
 
 @jd:body
@@ -9,63 +10,34 @@
 <p>
   We’ve created a downloadable guide to help you find success with your app or
   game business on Google Play. In it, you’ll find features, tips, and best
-  practices to help you build an effective strategy.
+  practices to help you build an effective strategy to improve the quality,
+  reach, retention, and monetization of your apps and games.
 </p>
 
-<p>
-  The guide is separated into the following sections:
-</p>
-<ul>
-  <li>
-    <strong>Publishing on Google Play</strong> &mdash; using the Google Play
-    Developer Console to distribute your app to over 1 billion Android users
-    worldwide.
-  </li>
+<a href="https://play.google.com/store/books/details?id=O2a5CgAAQBAJ&utm_source=global_co&utm_medium=prtnr&utm_content=Mar2515&utm_campaign=PartBadge&pcampaignid=MKT-AC-global-none-all-co-pr-py-PartBadges-Oct1515-1">
+  <img src="{@docRoot}images/distribute/secrets_v2_banner.jpg">
+</a>
 
-  <li>
-    <strong>Quality</strong> &mdash; The fundamentals of building a great app
-    and an insight into the Google Play guidelines and policies.
-  </li>
+<div style="text-align:center">
+  <a href="https://play.google.com/store/books/details?id=O2a5CgAAQBAJ&utm_source=global_co&utm_medium=prtnr&utm_content=Mar2515&utm_campaign=PartBadge&pcampaignid=MKT-AC-global-none-all-co-pr-py-PartBadges-Oct1515-1">
+  <img alt="Get it on Google Play"
+   src="https://play.google.com/intl/en_us/badges/images/books/en-play-badge-border.png"
+   style="height:60px" />
+  </a>
+</div>
 
-  <li>
-    <strong>Discoverability &amp; reach</strong> &mdash; Maximizing your app's
-    discoverability and reaching the widest audience possible.
-  </li>
-
-  <li>
-    <strong>Engagement &amp; retention</strong> &mdash; Converting
-    installations into active users and improving user retention.
-  </li>
-
-  <li>
-    <strong>Monetization</strong> &mdash; Monetization strategies to generate
-    ongoing, growing revenue streams.
-  </li>
-
-  <li>
-    <strong>Measurement with Google Analytics</strong> &mdash; Understanding
-    your users and improving your app experience, conversions, and marketing.
-  </li>
-
-  <li>
-    <strong>Going global</strong> &mdash; Launching your app in local markets
-    around the world.
-  </li>
-</ul>
-
-<p>
-  Download the guide by clicking the image below or <a href=
-  "http://goo.gl/DFjbrS">get it on Google Play</a>.
+<p><a
+  href="https://docs.google.com/forms/d/1KFE9D7NlOrxM_jzmyMeZGaczgg1xo57jBoGq0R5nnsU/viewform">Sign
+  up to be notified</a> when the guide is released in the following languages:
+  Bahasa Indonesia, Deutsch, español (Latinoamérica), le français, português do
+  Brasil, <span style="white-space: nowrap;">tiếng Việt</span>, <span style="white-space:
+  nowrap;">русский язы́к</span>, <span style="white-space: nowrap;">ไทย</span>,
+  <span style="white-space: nowrap;">한국어</span>, <span style="white-space: nowrap;">中文
+  (简体)</span>, <span style="white-space: nowrap;">中文 (繁體)</span>, and <span style="white-space:
+  nowrap;">日本語</span>.
 </p>
 
-<p>
-  We’ll release the guide in more languages in the coming months. Check back to
-  this website regularly as we post information on new features and best
-  practices to help you distribute and monetize your app.
+<p>You can also <a
+  href="{@docRoot}shareables/distribute/secrets_play/v2/web/secrets_to_app_success_v2_en.pdf">download
+  the pdf</a>.
 </p>
-  <div class="resource-widget resource-flow-layout col-16"
-    data-query="collection:play_dev_guide"
-    data-cardSizes="9x6"
-    data-maxResults="1">
-  </div>
-
diff --git a/docs/html/distribute/googleplay/index.jd b/docs/html/distribute/googleplay/index.jd
index 3b5966f..c69ce23 100644
--- a/docs/html/distribute/googleplay/index.jd
+++ b/docs/html/distribute/googleplay/index.jd
@@ -11,22 +11,24 @@
   help you gain traction in the marketplace.</span>
 </p>
 
-  <h2>Overview</h2>
+  <section class="dac-section dac-small" id="latest-games"><div class="wrap">
+  <h2 class="norule">Overview</h2>
 
   <div class="resource-widget resource-flow-layout landing col-16"
     data-query="collection:distribute/gp/gplanding"
     data-sortOrder="-timestamp"
     data-cardSizes="6x6"
     data-maxResults="3">
-  </div>
+    </div></div></section>
 
-  <h2 id="opportunities">Opportunities &amp; Programs</h2>
+  <section class="dac-section dac-small" id="latest-games"><div class="wrap">
+  <h2 id="opportunities" class="norule">Opportunities &amp; Programs</h2>
 
   <div class="resource-widget resource-flow-layout landing col-16"
     data-query="collection:distribute/gp/gpfelanding"
     data-cardSizes="6x6"
     data-maxResults="10">
-  </div>
+  </div></div></section>
 
 <!--  <h2>Related resources</h2>
 
diff --git a/docs/html/distribute/googleplay/work/about.jd b/docs/html/distribute/googleplay/work/about.jd
index 20fec7a..a31bca2 100644
--- a/docs/html/distribute/googleplay/work/about.jd
+++ b/docs/html/distribute/googleplay/work/about.jd
@@ -66,7 +66,9 @@
   <li>Request the minimum permissions that your app needs.</li>
   <li>Make sure communication to your backend and data in your backend is secure.</li>
   <li>Implement authorization policies that will minimize the number of your employees that can access user data.</li>
-  <li><a href={@docRoot}training/enterprise/app-compatibility.html">Offer compatibility with work profile</a> and test that with the <a href="{@docRoot}samples/BasicManagedProfile/index.html">BasicManagedProfile sample app</a>.</li>
+  <li><a href={@docRoot}training/enterprise/app-compatibility.html>Offer compatibility with work
+  profile</a> and test that with the <a href="{@docRoot}samples/BasicManagedProfile/index.html"
+  >BasicManagedProfile sample app</a>.</li>
   <li>Support <a href="{@docRoot}training/enterprise/app-restrictions.html">app restrictions</a> so that IT admins can remotely configure your app through leading EMM solutions.</li>
 </ul>
 
diff --git a/docs/html/distribute/index.jd b/docs/html/distribute/index.jd
index a6ece63..6384773 100644
--- a/docs/html/distribute/index.jd
+++ b/docs/html/distribute/index.jd
@@ -1,5 +1,6 @@
 fullpage=true
 page.title=Distribute Your Apps
+page.image=images/distribute/google-play-bg.jpg
 page.viewport_width=970
 section.landing=true
 header.hide=1
@@ -7,6 +8,17 @@
 page.metaDescription=The most visited store in the world for Android apps. Cloud-connected and always synced, it's never been easier for users to find and download your apps.
 
 @jd:body
+
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
+
 <div class="dac-hero-carousel" data-carousel-query="collection:distribute/landing/carousel">
 </div>
 
@@ -16,16 +28,64 @@
   </a>
 </div>
 
-<section class="dac-section dac-gray dac-small dac-invert" id="latest"><div class="wrap">
+<section id="useOldTemplates" style="display:none" class="dac-section dac-gray dac-small" id="latest"><div class="wrap">
   <h2 class="norule">Latest</h2>
   <div class="resource-widget resource-flow-layout col-16"
       data-query="type:youtube+tag:googleplay+tag:developerstory+tag:featured, type:blog+tag:googleplay+tag:distribute+tag:featured"
       data-sortOrder="-timestamp"
       data-cardSizes="6x6"
-      data-maxResults="12"
+      data-maxResults="3"
+      data-items-per-page="6"
       data-initial-results="3"></div>
 </div></section>
 
+<section id="useUpdatedTemplates" style="display:none" class="dac-section dac-gray dac-small" id="latest"><div class="wrap">
+  <h2 class="norule">Latest</h2>
+
+  <div class="dac-filter dac-filter-section" data-filter="#latest-resources">
+    <div data-tabs>
+      <span class="dac-filter-title">Showing:</span>
+      <ol class="dac-tab-bar">
+        <li class="dac-tab-item" data-tab-item="goal">
+          <p class="dac-tab-title">Goals <i class="dac-tab-arrow dac-sprite dac-expand-more-black"></i></p>
+          <span data-filter-count="goal" class="dac-filter-count dac-disabled">0</span>
+        </li>
+        <li class="dac-tab-item" data-tab-item="type">
+          <p class="dac-tab-title">Types <i class="dac-filter-item-arrow dac-sprite dac-expand-more-black"></i></p>
+          <span data-filter-count="type" class="dac-filter-count dac-disabled">0</span>
+        </li>
+      </ol>
+
+      <ol class="dac-tab-views" data-tab-views>
+        <li class="dac-tab-view" data-tab-view="goal">
+          <div class="dac-filter-item" data-filter-value="category:googleplay" data-filter-name="Get Started"></div>
+          <div class="dac-filter-item" data-filter-value="category:users" data-filter-name="Get Users"></div>
+          <div class="dac-filter-item" data-filter-value="category:engage" data-filter-name="Engage"></div>
+          <div class="dac-filter-item" data-filter-value="category:monetize" data-filter-name="Earn"></div>
+          <div class="dac-filter-item" data-filter-value="category:analyze" data-filter-name="Analyze"></div>
+          <div class="dac-filter-item" data-filter-value="category:stories" data-filter-name="Stories"></div>
+
+        </li>
+        <li class="dac-tab-view" data-tab-view="type">
+          <div class="dac-filter-item" data-filter-value="type:distribute" data-filter-name="Articles"></div>
+          <div class="dac-filter-item" data-filter-value="type:youtube" data-filter-name="Videos"></div>
+          <div class="dac-filter-item" data-filter-value="type:blog" data-filter-name="Blog posts"></div>
+        </li>
+      </ol>
+    </div>
+
+    <ul class="dac-filter-chips" data-filter-chips></ul>
+  </div>
+
+  <div class="resource-flow-layout col-16" id="latest-resources"
+      data-query="type:distribute, type:youtube+tag:googleplay, type:blog+tag:googleplay+tag:featured"
+      data-sortOrder="-timestamp"
+      data-cardSizes="6x6"
+      data-items-per-page="6"
+      data-initial-results="6"></div>
+</div></section>
+
+
 <section class="dac-section dac-invert dac-darken-bg" style="background-image: url(/images/distribute/google-play-bg.jpg)"><div class="wrap">
   <div class="cols"><div class="col-10of12 col-push-1of12">
     <h1 class="dac-section-title">Reach the world with Google Play</h1>
diff --git a/docs/html/distribute/monetize/_book.yaml b/docs/html/distribute/monetize/_book.yaml
new file mode 100644
index 0000000..2ebc695
--- /dev/null
+++ b/docs/html/distribute/monetize/_book.yaml
@@ -0,0 +1,18 @@
+toc:
+- title: Premium
+  path: /distribute/monetize/premium.html
+
+- title: Freemium
+  path: /distribute/monetize/freemium.html
+
+- title: Subscriptions
+  path: /distribute/monetize/subscriptions.html
+
+- title: AdMob Ads
+  path: /distribute/monetize/ads.html
+
+- title: E-commerce
+  path: /distribute/monetize/ecommerce.html
+
+- title: Purchasing
+  path: /distribute/monetize/payments.html
diff --git a/docs/html/distribute/stories/_book.yaml b/docs/html/distribute/stories/_book.yaml
new file mode 100644
index 0000000..d49238e
--- /dev/null
+++ b/docs/html/distribute/stories/_book.yaml
@@ -0,0 +1,9 @@
+toc:
+- title: Latest
+  path: /distribute/stories/index.html
+
+- title: Apps
+  path: /distribute/stories/apps.html
+
+- title: Games
+  path: /distribute/stories/games.html
diff --git a/docs/html/distribute/stories/apps.jd b/docs/html/distribute/stories/apps.jd
new file mode 100644
index 0000000..9a642dc
--- /dev/null
+++ b/docs/html/distribute/stories/apps.jd
@@ -0,0 +1,34 @@
+page.title=Developer Stories: Apps
+meta.tags="apps, developer story"
+page.timestamp=1381449601
+page.image=images/cards/distribute/stories/intuit-mint.png
+page.metaDescription=How app developers are making use of localization, tablet features.
+
+@jd:body
+
+<p>
+  Learn more about how app developers are using Google Play services to delight
+  their users.
+</p>
+
+<section class="dac-section dac-small" id="app-videos"><div class="wrap">
+  <h2 class="norule">Videos</h2>
+
+  <div class="resource-widget resource-flow-layout col-16"
+      data-query="type:youtube+tag:developerstory+tag:apps"
+      data-sortOrder="-timestamp"
+      data-cardSizes="6x6"
+      data-items-per-page="15"
+      data-initial-results="6"></div>
+</div></section>
+
+<section class="dac-section dac-small" id="apps-articles"><div class="wrap">
+  <h2 class="norule">Articles</h2>
+
+  <div class="resource-widget resource-flow-layout col-16"
+      data-query="type:distribute+tag:developerstory+tag:apps"
+      data-sortOrder="-timestamp"
+      data-cardSizes="6x6"
+      data-items-per-page="15"
+      data-initial-results="3"></div>
+</div></section>
\ No newline at end of file
diff --git a/docs/html/distribute/stories/apps/intuit-mint.jd b/docs/html/distribute/stories/apps/intuit-mint.jd
new file mode 100644
index 0000000..5b2e400
--- /dev/null
+++ b/docs/html/distribute/stories/apps/intuit-mint.jd
@@ -0,0 +1,82 @@
+page.title=Mint finds more screen real estate gives more engagement
+page.metaDescription=Intuit expands their Mint app to the tablet.
+page.tags="developerstory", "apps", "googleplay"
+page.image=images/cards/distribute/stories/intuit-mint.png
+page.timestamp=1456340902
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/intuit-mint-icon.png"
+  height="113" />
+</div>
+
+<p>
+  Intuit wanted to expand their
+  <a class="external-link"
+  href="http://play.google.com/store/apps/details?id=com.mint">Mint.com
+  Personal Finance</a> offering for mobile by including a version optimized for
+  Android tablets. However, they knew that taking the layout that worked for
+  phones and simply showing an enlarged version wouldn’t take full advantage of
+  the opportunities that tablets afford.
+</p>
+
+<h3>What they did</h3>
+
+<p>
+  Following the Tablet Quality guidelines, the Intuit team updated Mint to
+  target 7- to 10-inch tablets, in addition to phones. “We knew we had a lot
+  more real estate, and we wanted to provide a more immersive experience for
+  our users” said Ken Sun, Intuit Group Product Manager for Mint.
+</p>
+
+<h3>Results</h3>
+
+<div class="figure" style="width:380px">
+  <img
+   src="{@docRoot}images/distribute/stories/intuit-mint-screenshot.png"
+   srcset=
+  "{@docRoot}images/distribute/stories/intuit-mint-screenshot.png 1x
+  {@docRoot}images/distribute/stories/intuit-mint-screenshot_2x.png 2x">
+  <p class="img-caption">
+    Mint used the extra screen area on tablets to offer quick access to
+    additional tools and information
+  </p>
+</div>
+
+<p>
+  Intuit’s Mint app, which has a 4-star rating on Google Play, brings a number
+  of features to Android tablets that aren’t available for phones. These include
+  a more visual presentation of personal financial data: a change that has
+  contributed to <b>much higher user engagement</b>.
+</p>
+
+<p>
+  For example, 50 percent more Android tablet users have Mint sessions of <b>
+  five minutes or longer</b> than they do on phones.
+</p>
+
+<p>
+  Intuit also noted that customer budget operations (view, edit, drill-down,
+  and others) are <b>seven times higher on Android tablets</b> than they are on
+  phones.
+</p>
+
+<p>
+  Ken noted that “We’ve found that phone usage is indicative of a customer’s
+  regular financial check-in, while tablet usage points towards more analysis
+  and interaction with that customer’s personal financial data. This is the
+  sort of immersive engagement experience we were looking for; the tablet and
+  phone apps serve as great complements to each other."
+</p>
+
+<h3>Get started</h3>
+
+<p>
+  Find out more about creating a tablet version of your app by reviewing the
+  <a href="http://developer.android.com/distribute/essentials/quality/tablets.html">
+  Tablet App Quality</a> guidelines and growing your user base.
+</p>
diff --git a/docs/html/distribute/stories/apps/remember-the-milk.jd b/docs/html/distribute/stories/apps/remember-the-milk.jd
new file mode 100644
index 0000000..16c0caf
--- /dev/null
+++ b/docs/html/distribute/stories/apps/remember-the-milk.jd
@@ -0,0 +1,77 @@
+page.title=Remember The Milk lifts installs with tablet design
+page.metaDescription=The team at Remember The Milk redesigned their app for tablets.
+page.tags="developerstory", "apps", "googleplay"
+page.image=images/cards/distribute/stories/remember-the-milk.jpg
+page.timestamp=1456340902
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/rememberthemilk-icon.png"
+  height="113" />
+</div>
+
+<p>
+  When the Android tablet guidelines came out, the team at Remember The Milk had
+  already been thinking about a redesign for
+  <a class="external-link"
+  href="http://play.google.com/store/apps/details?id=com.rememberthemilk.MobileRTM">
+  Remember The Milk</a> their feature-packed to-do list app; never forget the
+  milk (or anything else) again.
+</p>
+
+<h3>What they did</h3>
+
+<p>
+  “We took this as an opportunity to think about how we were going to approach
+  Android tablets differently from a user experience perspective,” says Omar
+  Kilani, Co-founder of Remember The Milk. “The guidelines were a helpful
+  resource, and with the extra screen real estate tablets afford, users have
+  the opportunity to see all of their data in context and drill down on more
+  items."
+</p>
+
+<h3>Results</h3>
+
+<div class="figure" style="width:367px">
+  <img
+   src="{@docRoot}images/distribute/stories/rememberthemilk-screenshot.png"
+   srcset=
+  "{@docRoot}images/distribute/stories/rememberthemilk-screenshot.png 1x
+  {@docRoot}images/distribute/stories/rememberthemilk-screenshot_2x.png 2x">
+  <p class="img-caption">
+    Tablet version of Remember The Milk
+  </p>
+</div>
+
+<p>
+  In addition to the basic changes to bring the app to tablets, the team also
+  came out with a number of other goodies — including a new set of widgets and
+  richer notifications, and more ways to provide an immersive experience for
+  their users. And importantly, following the guidelines meant they could
+  deliver a <b>single APK for phones and tablets</b>.
+</p>
+
+<p>
+  Following the
+  <a class="external-link"
+  href="http://blog.rememberthemilk.com/2013/04/the-all-new-remember-the-milk-for-android-and-tablets-too/">
+  update</a> of the Android app, in part to meet the tablet design criteria,
+  Remember The Milk saw an <b>83% increase in tablet installs</b>. They also
+  noted that Nexus 7 was theat most popular Android device for the app.
+</p>
+
+<p>
+  Omar Kilani, concludesd that “For us, designing for tablets was an investment that has really paid off.”
+</p>
+
+<h3>Get started</h3>
+
+<p>
+  Find out more about creating a tablet version of your app by reviewing the
+  <a href="http://developer.android.com/distribute/essentials/quality/tablets.html">
+  Tablet App Quality</a> guidelines and growing your user base.
+</p>
diff --git a/docs/html/distribute/stories/apps/sayhi.jd b/docs/html/distribute/stories/apps/sayhi.jd
new file mode 100644
index 0000000..1beb028
--- /dev/null
+++ b/docs/html/distribute/stories/apps/sayhi.jd
@@ -0,0 +1,83 @@
+page.title=SayHi Chat grows installs and user engagement with App Translation Service
+page.metaDescription=The SayHi team used details from Google Analytics, the DAU and user growth numbers, to identify several candidate languages for new translations.
+page.tags="developerstory", "apps", "googleplay"
+page.image=images/cards/distribute/stories/sayhichat.jpg
+page.timestamp=1454440882
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/sayhichat-icon.png"
+  height="113" />
+</div>
+
+<p>
+  The <a class="external-link"
+  href="https://play.google.com/store/apps/details?id=com.unearby.sayhi">
+  SayHi Chat app</a>, a social app to help its users find people nearby, was
+  first released in Japanese, Chinese, and English. It soon became one of the
+  most popular apps in Japan, Hong Kong, and Taiwan.
+</p>
+
+
+<h3>What they did</h3>
+
+<p>
+  The SayHi team realized that the global growth of SayHi was being restricted
+  by the limited number of languages in which the app was available. Using
+  details from Google Analytics, the DAU and user growth numbers, the SayHi team
+  identified several candidate languages for new translations. After looking at
+  the total of Android and iOS users in each market, they settled on a list of
+  13 additional languages. They then engaged the App Translation Service through
+  the Google Play Developer Console to complete the translations.
+</p>
+
+<h3>Results</h3>
+
+<div class="figure" style="width:194px">
+  <img width="194"
+   src="{@docRoot}images/distribute/stories/sayhichat-screenshot.jpg"
+   srcset=
+  "{@docRoot}images/distribute/stories/sayhichat-screenshot.jpg 1x
+  {@docRoot}images/distribute/stories/sayhichat-screenshot_2x.jpg 2x">
+  <p class="img-caption">
+    Arabic version of SayHi Chat
+  </p>
+</div>
+
+<p>
+  SayHi launched in its new languages in August 2013 and immediately saw a 120
+  percent increase in install rates. In addition, the app entered the Top 10
+  apps rankings in countries including Poland and Italy.
+</p>
+
+<p>
+  Notably, they also saw steady growth in Spain after replacing their previous
+  non-professional Spanish translation with a professional one produced by the
+  App Translation Service.
+</p>
+
+<p>
+  There was also an increase of about 20 percent in revenue and around a 50
+  percent increase in User Reviews in the new languages.
+</p>
+
+<p>
+  Yan Shi, senior developer at SayHi, says “The App Translation Service is
+  really easy to use and the completion time for translation requests is very
+  good.”
+</p>
+
+<h3>Get started</h3>
+
+<p>
+  Find out more about the
+  <a href="http://developer.android.com/distribute/tools/localization-checklist.html#gp-trans">
+  App Translation Service</a> and read the full
+  <a href="https://developer.android.com/distribute/tools/localization-checklist.html">
+  Localization checklist</a> to simplify the process of localizing your app or
+  game for users across the globe.
+</p>
diff --git a/docs/html/distribute/stories/games.jd b/docs/html/distribute/stories/games.jd
index 2351eed..fe059eb 100644
--- a/docs/html/distribute/stories/games.jd
+++ b/docs/html/distribute/stories/games.jd
@@ -1,28 +1,35 @@
-page.title=Developer Stories: Google Play Game Services
-meta.tags="google play, story, stories, games, global"
+page.title=Developer Stories: Games
+meta.tags="google play, games, global, developer story"
+page.timestamp=1381449601
 page.image=/images/distribute/glu-ew-gpgames.jpg
 page.metaDescription=How game studios are using Google Play game services to deliver new gaming experiences for their users.
 
 @jd:body
 
 <p>
-  <a href="https://developers.google.com/games/">Google Play game services</a>
-  lets you add great social features to your games quickly, without having to
-  build them yourself. You can add multiplayer, game invites, quests, and a
-  variety of other features &mdash; all from within your app. Google provides
-  cross-platform game and player infrastructure for you, as well as insights
-  and analytics to help you understand the activities of users in your games.
+  Learn how top game studios are taking advantage of Google Play game services
+  &mdash; the features they've added and the results they are seeing.
 </p>
 
-<p>
-  The case study presentations below highlight how top game studios are taking
-  advantage of Google Play game services &mdash; the features they've added and
-  the results they are seeing. Each deck (PDF) is focused on a single game and
-  how it uses a specific Google Play gemes feature.
-</p>
+<section class="dac-section dac-small" id="games-videos"><div class="wrap">
+  <h2 class="norule">Videos</h2>
 
-<div class="resource-widget resource-flow-layout col-13"
-    data-query="collection:distribute/stories/games"
-    data-sortOrder="-timestamp"
-    data-cardSizes="18x12"
-    data-maxResults="32"></div>
\ No newline at end of file
+  <div class="resource-widget resource-flow-layout col-16"
+      data-query="type:youtube+tag:developerstory+tag:games"
+      data-sortOrder="-timestamp"
+      data-cardSizes="6x6"
+      data-items-per-page="15"
+      data-initial-results="6"></div>
+</div></section>
+
+<section class="dac-section dac-small" id="games-articles"><div class="wrap">
+  <h2 class="norule">Articles</h2>
+
+  <div class="resource-widget resource-flow-layout col-16"
+      data-query="type:distribute+tag:developerstory+tag:games"
+      data-sortOrder="-timestamp"
+      data-cardSizes="6x6"
+      data-items-per-page="15"
+      data-initial-results="6"></div>
+</div></section>
+
diff --git a/docs/html/distribute/stories/games/concrete-bowling.jd b/docs/html/distribute/stories/games/concrete-bowling.jd
new file mode 100644
index 0000000..f4f6549
--- /dev/null
+++ b/docs/html/distribute/stories/games/concrete-bowling.jd
@@ -0,0 +1,93 @@
+page.title=Concrete Software increases engagement with quests
+page.metaDescription=Concrete Software makes use of Google Play games services in its 10-pin bowling game, PBA Bowling Challenge.
+page.tags="developerstory", "games", "googleplay"
+page.image=images/cards/distribute/stories/concrete-bowling.jpg
+page.timestamp=1454440882
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img
+  src="{@docRoot}images/distribute/stories/concrete-bowling-icon.png" />
+</div>
+
+<p>
+  Concrete Software makes use of Google Play games services in its 10-pin
+  bowling game,
+  <a class="external-link"
+  href="https://play.google.com/store/apps/details?id=com.concretesoftware.pbachallenge_androidmarket">
+  PBA Bowling Challenge</a>. Once users have signed in with Google Play games
+  services they’re able to take part in multiplayer games, view leaderboards,
+  and gain achievements.
+</p>
+
+
+<h3>What they did</h3>
+
+<p>
+  To offer players new game content, Concrete Software implemented Google Play
+  games services quests. Easily accessible from the game’s home screen, quests
+  are designed with clear goals that integrated into in-game goals and core
+  experience. Each quest stated rewards; offered a progress tracker, which
+  updates as users advance; gave a clear deadline; and a call to action button.
+  Both short-term and long-term quests were offered to users.
+</p>
+
+<h3>Results</h3>
+
+<div class="figure" style="width:310px">
+  <img
+   src="{@docRoot}images/distribute/stories/concrete-bowling-screenshot.png"
+   srcset=
+  "{@docRoot}images/distribute/stories/concrete-bowling-screenshot.png 1x
+  {@docRoot}images/distribute/stories/concrete-bowling-screenshot_2x.png 2x">
+  <p class="img-caption">
+    Prominent and customized quest icon displayed on home screen
+  </p>
+</div>
+
+<p>
+  Quests appealed most to dedicated users, and yet there is still an increase
+  in their engagement after using quests. <b>Sessions per user improved 14.4
+  percent</b> DoD upon quests acceptance, and <b>3.7 percent</b> DoD upon
+  completion. While users who accepted a quest <b>started 98 percent more
+  sessions per day</b>; users who completed a quest <b>started 140.2 percent
+  </b> more.
+</p>
+
+<p>
+  Concrete Software also found that quest acceptance and completion rates
+  increased overtime, while daily active users (DAU) remained constant. Among
+  users who accepted the first quest, almost <b>48% of the users accepted a
+  second</b> quest. Among those who completed the first, <b>78% accepted a
+  second</b>.
+</p>
+
+<p>
+  Quests also had a positive impact on retention with one day retention for
+  users who accepted a quest being <b>39.2 percent higher</b> than the average;
+  for users who completed a quest, it’s <b>60.7 percent higher</b> than the
+  average.
+</p>
+
+<p>
+  See examples of how Concrete Software integrated Google Play games services
+  into the <a class="external-link"
+  href="{@docRoot}shareables/stories/ConcreteSoftware_PBABowling_gpgs.pdf">
+  UI of PBA Bowling Challenge</a>.
+</p>
+
+<h3>Get started</h3>
+
+<p>
+  Find out how to
+  <a class="external-link"
+  href="https://developers.google.com/games/services/common/concepts/quests">
+  implement quests</a> in your games and discover more about
+  <a href="https://developer.android.com/distribute/engage/game-services.html">
+  using Google Play games services</a> in your games to increase player
+  engagement and revenues.
+</p>
diff --git a/docs/html/distribute/stories/games/doctor-who-legacy.jd b/docs/html/distribute/stories/games/doctor-who-legacy.jd
new file mode 100644
index 0000000..d62e250
--- /dev/null
+++ b/docs/html/distribute/stories/games/doctor-who-legacy.jd
@@ -0,0 +1,97 @@
+page.title=Achievements drive engagement in Doctor Who: Legacy
+page.metaDescription=The Tiny Rebel Games integrated achievements and cloud services from Google Play games services into the award-winning Doctor Who: Legacy game, under license from BBC Worldwide.
+page.tags="developerstory", "games", "googleplay"
+page.image=images/cards/distribute/stories/doctor-who-legacy.jpg
+page.timestamp=1456431511
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/doctor-who-legacy-icon.png"
+  height="113" />
+</div>
+
+<p>
+  The Tiny Rebel Games team has a combined experience of over 35 years in
+  creating blockbuster console, PC, and mobile games in the areas of production,
+  design, marketing, social media, PR, and distribution.
+</p>
+
+<p>
+  They are the publisher and co-developer (along with Seed Studio in Taiwan) of
+  the award-winning
+  <a class="external-link"
+  href="https://play.google.com/store/apps/details?id=com.tinyrebel.doctorwholegacy">
+  Doctor Who: Legacy</a> game, under license from BBC Worldwide.
+</p>
+
+<h3>What they did</h3>
+
+<p>
+  Tiny Rebel Games integrated achievements and cloud services from Google
+  Play games services into Doctor Who: Legacy. Achievements were supported with
+  beautifully designed and customized badges to encourage players to unlock. To
+  delight users with quick wins, achievements can be unlocked from within the
+  first play session. In addition, percentage progress updates keep players
+  motivated.
+</p>
+
+<h3>Results</h3>
+
+<div class="figure" style="width:237px">
+  <img
+   src="{@docRoot}images/distribute/stories/doctor-who-legacy-screenshot.png"
+   srcset=
+  "{@docRoot}images/distribute/stories/doctor-who-legacy-screenshot.png 1x
+  {@docRoot}images/distribute/stories/doctor-who-legacy-screenshot_2x.png 2x">
+  <p class="img-caption">
+    Beautifully designed achievements badges encourage unlock
+  </p>
+</div>
+
+<p>
+  After integrating achievements, Tiny Rebel Games saw a dramatic increase in
+  daily revenues as a result of an increase in daily installs and the average
+  revenue per install
+</p>
+
+<p>
+  Some key metrics include:
+  <ul>
+    <li>Average <b>daily revenue increased 108 percent</b> from the 30 days
+    before to the 30 days after integrating Google Play games services.</li>
+    <li>30-day <b>average revenue per install increased 53 percent</b> after
+    implementation.</li>
+    <li>Among achievement earners, <b>integration increased daily average
+    revenue per user by ~33 percent</b>.</li>
+  </ul>
+</p>
+
+<p>
+  "Google Play has been a tremendous partner of ours in our launch and support
+  of Doctor Who: Legacy, which to date remains our most successful platform in
+  terms of downloads and revenue. Integration of cloud services and achievements
+  dramatically improved our daily revenues and we continue to look to add
+  additional services like the newly announced Google Quests," says Susan
+  Cummings, CEO and Executive Producer at Tiny Rebel Games.
+</p>
+
+<p>
+  See examples of how Tiny Rebel Games integrated Google Play games services
+  achievements into the
+  <a href="{@docRoot}shareables/stories/TinyRebel_DoctorWhoLegacy_gpgs.pdf">
+  UI of Doctor Who: Legacy</a>.
+</p>
+
+<h3>Get started</h3>
+
+<p>
+  Find out how to add
+  <a href="https://developers.google.com/games/services/common/concepts/achievements">achievements</a> to your games and discover more about
+  <a href="https://developer.android.com/distribute/engage/game-services.html">
+  using Google Play games services</a> in your games to increase player
+  engagement and revenues.
+</p>
diff --git a/docs/html/distribute/stories/games/dots.jd b/docs/html/distribute/stories/games/dots.jd
new file mode 100644
index 0000000..e3851c2
--- /dev/null
+++ b/docs/html/distribute/stories/games/dots.jd
@@ -0,0 +1,84 @@
+page.title=Dots increased installs by over 6% using Store Listing Experiments
+page.metaDescription=Game developer Playdots decided to use Store Listing Experiments to see if different game screenshots could impact installs for their game Two Dots. They found that game screenshots showing gameplay mechanics drove more installs from the store listing page than their existing non-gameplay screenshots.
+page.tags="developerstory", "games", "googleplay"
+page.image=images/cards/distribute/stories/dots.png
+page.timestamp=1456431511
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/dots-icon.png" height="113" />
+</div>
+
+<p>
+  <a class="external-link"
+  href="https://play.google.com/store/apps/details?id=com.nerdyoctopus.gamedots&hl=en">
+  Dots</a>, the successful puzzle strategy game from games developer Playdots
+  Inc., was produced by <a class="external-link"
+  href="https://betaworks.com/">Betaworks</a> in 2013.
+  It achieved over 20 million downloads in its first year, with over five
+  billion games having played on Android and iOS since launch. For the follow
+  up,
+  <a class="external-link"
+  href="https://play.google.com/store/apps/details?id=com.weplaydots.twodotsandroid&hl=en">
+  Two Dots</a>, Playdots decided to use
+  <a class="external-link"
+  href="https://support.google.com/googleplay/android-developer/answer/6227309">
+  Store Listing Experiments</a> to see if
+  different game screenshots could impact installs. They found that game
+  screenshots showing gameplay mechanics drove more installs from the store
+  listing page than their existing non-gameplay screenshots.
+</p>
+
+<h3>What they did</h3>
+
+<p>
+  Dots used a localized store listing experiment in the Google Play Developer
+  Console to test Two Dots screenshots in the US. They targeted 50 percent of
+  users with non-gameplay screenshots (the “control”) and the other 50 percent
+  with gameplay screenshots, to see how graphically demonstrating gameplay would
+  impact installs.
+</p>
+
+<h3>Results</h3>
+
+<p>
+  The results revealed that screenshots showing gameplay mechanics drove 6
+  percent more installs than the control group using non-gameplay screenshots.
+</p>
+
+  <img
+   src="{@docRoot}images/distribute/stories/dots-screenshot.png"
+   srcset=
+  "{@docRoot}images/distribute/stories/dots-screenshot.png 1x
+  {@docRoot}images/distribute/stories/dots-screenshot_2x.png 2x">
+  <p class="img-caption">
+    Beautifully designed achievements badges encourage unlock
+  </p>
+
+<p>
+  In a follow up experiment they tested whether including text emphasizing
+  gameplay performed better than screenshots without text. The results showed
+  that screenshots with text highlighting gameplay had an 8 percent increase in
+  installs compared to those without.
+</p>
+
+<p>
+  Dots commented that “sometimes you have to step back and think about what your
+  objective is: illustrate gameplay. So that’s what we did — and the simplest
+  changes impacted our conversion by a huge percentage.”
+</p>
+
+<h3>Get started</h3>
+
+<p>
+  Learn how to run
+  <a class="external-link"
+  href="https://support.google.com/googleplay/android-developer/answer/6227309">
+  Store Listing Experiments</a> and read our best practices for
+  <a href="https://developer.android.com/distribute/users/experiments.html">
+  running successful experiments</a>.
+</p>
diff --git a/docs/html/distribute/stories/games/g4a-indian-rummy.jd b/docs/html/distribute/stories/games/g4a-indian-rummy.jd
new file mode 100644
index 0000000..0655f80
--- /dev/null
+++ b/docs/html/distribute/stories/games/g4a-indian-rummy.jd
@@ -0,0 +1,93 @@
+page.title=Ease-of-use and fast turnaround time benefits Indian Rummy.
+page.metaDescription=Games4All localized their apps based upon popularity.
+page.tags="developerstory", "games", "googleplay"
+page.image=images/cards/distribute/stories/g4a-indian-rummy.jpg
+page.timestamp=1456340902
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/indian-rummy-icon.png"
+  height="113" />
+</div>
+
+<p>
+  Games4All (G4A) develops a variety of games that they distribute broadly to
+  users around the world.
+</p>
+
+<p>
+  After noticing that certain apps — including
+  <a class="external-link"
+  href="https://play.google.com/store/apps/details?id=org.games4all.android.games.indianrummy.prod">
+  Indian Rummy</a>, a card game in which players try to form sets and sequences
+  of cards — had become especially popular in specific countries, they decided
+  to localize those apps.
+</p>
+
+<h3>What they did</h3>
+
+<p>
+  Initially they used a local agency to do the translations and got great
+  results — the release of localized versions increased the number of users
+  tremendously.
+</p>
+
+<p>
+  Building on that success, G4A expanded their localization goals, but found
+  that translation quality varied among their vendors and costs limited the
+  language/game combinations they could translate. That's when G4A decided to try
+  the App Translation Service.
+</p>
+
+<h3>Results</h3>
+
+<div class="figure" class="style:376px">
+  <img
+   src="{@docRoot}images/distribute/stories/indian-rummy-screenshot.jpg"
+   srcset=
+  "{@docRoot}images/distribute/stories/indian-rummy-screenshot.jpg 1x
+  {@docRoot}images/distribute/stories/indian-rummy-screenshot_2x.jpg 2x">
+  <p class="img-caption">
+    Dutch version of Indian Rummy
+  </p>
+</div>
+
+<p>
+  G4A found that the cost per translation was much lower with the App Translation Service compared to local companies. The process was much easier too, G4A simply had to provide texts in the strings.xml format.
+</p>
+
+<p>
+  Initially, G4A translated Indian Rummy into five languages through the App
+  Translation Service. As a result they’ve <b>doubled the number of users</b>
+  in French and German languages and seen a <b>300 percent increase in user
+  engagement</b> with the localized versions.
+</p>
+
+<p>
+  They also found that making slight changes to games rules based on local
+  nuances was key to the game's success.
+</p>
+
+<p>
+  “In contrast [to the App Translation Service], our previous experiences with
+  translation agencies were much more difficult: files often required extensive
+  conversion operations to make them usable, and turnaround times varied
+  wildly,” says G4A founder Pieter Olivier. He continues, "With the App
+  Translation Service, the turnaround time is usually measured in days instead
+  of weeks that we were used to with traditional translation agencies."
+</p>
+
+<h3>Get started</h3>
+
+<p>
+  Find out more about the
+  <a href="http://developer.android.com/distribute/tools/localization-checklist.html#gp-trans">
+  App Translation Service</a> and read the full
+<a href="https://developer.android.com/distribute/tools/localization-checklist.html">
+  Localization checklist</a> to simplify the process of localizing your app or
+  game for users across the globe.
+</p>
diff --git a/docs/html/distribute/stories/games/gameloft-asphalt8.jd b/docs/html/distribute/stories/games/gameloft-asphalt8.jd
new file mode 100644
index 0000000..991c829
--- /dev/null
+++ b/docs/html/distribute/stories/games/gameloft-asphalt8.jd
@@ -0,0 +1,90 @@
+page.title=Gameloft drives viral distribution with friend invitations
+page.metaDescription=Gameloft makes extensive use of Google Play games services.
+page.tags="developerstory", "games", "googleplay"
+page.image=images/cards/distribute/stories/gameloft-asphalt8.jpg
+page.timestamp=1454440882
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img
+  src="{@docRoot}images/distribute/stories/gameloft-asphalt8-icon.png"
+  height="113" />
+</div>
+
+<p>
+  Founded in 2000 Gameloft has grown to deliver over 500 games, with over 2
+  million of their games being downloaded every day across smartphones and
+  feature phones.
+</p>
+
+<p>
+  Gameloft makes extensive use of Google Play games services.
+  <a class="external-link"
+  href="https://play.google.com/store/apps/details?id=com.gameloft.android.ANMP.GloftA8HM">
+  Asphalt 8: Airborne</a> is no exception including Google Play games services
+  sign-in, leaderboards, and achievements.
+</p>
+
+<h3>What they did</h3>
+
+<p>
+  To drive downloads of Asphalt 8: Airborne, Gameloft introduced friend invites.
+  Gameloft chose to display the invite option clearly next to social media
+  iconography, which started a smooth and easy friends invite flow. Then the
+  friend invites look and feel was designed to fit the game’s artistic style to
+  create a more trusted and immersive experience.
+</p>
+
+<h3>Results</h3>
+
+<div class="figure" style="width:310px">
+  <img
+   src="{@docRoot}images/distribute/stories/gameloft-asphalt8-screenshot.png"
+   srcset=
+  "{@docRoot}images/distribute/stories/gameloft-asphalt8-screenshot.png 1x
+  {@docRoot}images/distribute/stories/gameloft-asphalt8-screenshot_2x.png 2x">
+  <p class="img-caption">
+    Friend invites match the game’s artistic style
+  </p>
+</div>
+
+<p>
+  Gameloft found that adding friends invites enhanced the overall user
+  experience and helped increase viral distribution of Asphalt 8: Airborne.
+</p>
+
+<p>
+  In addition, retention and the percentage of payers are positively correlated
+  with Google Play games sign-ins. Users that signed-in are <b>300 percent more
+  likely to come back after three days, and 400 percent more likely after seven
+  days</b>. In addition, they’re <b>3.5 times more likely to convert to payers
+  </b>.
+</p>
+
+<p>
+  Gameloft’s experience with Google Play games services has resulted in their
+  integration into the majority of Gameloft’s games.
+</p>
+
+<p>
+  See examples of how Gameloft integrated Google Play games services into the
+  <a class="external-link"
+  href="{@docRoot}shareables/stories/Gameloft_Asphalt8_gpgs.pdf">
+  UI of Asphalt 8</a>.
+</p>
+
+<h3>Get started</h3>
+
+<p>
+  Find out how to add
+  <a class="external-link"
+  href="https://developers.google.com/games/services/common/concepts/realtimeMultiplayer#invitations">
+  friend invitations</a> in your multi-player games and more about
+  <a href="https://developer.android.com/distribute/engage/game-services.html">
+  using Google Play games services</a> in your games to increase your player
+  engagement and revenues.
+</p>
diff --git a/docs/html/distribute/stories/games/glu-eternity-warriors.jd b/docs/html/distribute/stories/games/glu-eternity-warriors.jd
new file mode 100644
index 0000000..bb6b400
--- /dev/null
+++ b/docs/html/distribute/stories/games/glu-eternity-warriors.jd
@@ -0,0 +1,85 @@
+page.title=Glu adds games gifts to Eternity Warriors 3 to driver player engagement
+page.metaDescription=Glu Mobile makes extensive use of Google Play games in Eternity Warriors 3 this including sign-in, leaderboards, achievements, and multiplayer games features.
+page.tags="developerstory", "games", "googleplay"
+page.image=images/cards/distribute/stories/glu-eternity-warriors.jpg
+page.timestamp=1454440882
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img
+  src="{@docRoot}images/distribute/stories/glu-eternity-warriors-icon.jpg"
+  height="113" />
+</div>
+
+<p>
+  Found in 2001, Glu  Mobile is a leading global developer and publisher of
+  free-to-play games for smartphone and tablet devices.
+</p>
+
+<p>
+  The company makes extensive use of Google Play games services across its
+  portfolio: in Eternity Warriors 3 this includes sign-in, leaderboards,
+  achievements, and multiplayer games features.
+</p>
+
+
+<h3>What they did</h3>
+
+<p>
+  To help drive installs and player engagement, Glu added games gifts to
+  Eternity Warriors 3. They made this new feature accessible from the home
+  screen, providing it exposure by grouping it with similar “freebies” options.
+  In addition, so not to interrupt the in-game experience, they implemented an
+  automatic transition back to the gifting screen after sending requests.
+</p>
+
+<p>
+  To promote the addition of games gifts Glu:
+  <ul>
+    <li>sent push notifications to users telling them about the gifting feature.
+    </li>
+    <li>showed a full screen in-game screen promoting the gifting feature.</li>
+    <li>ran promos during promo events.</li>
+  </ul>
+</p>
+
+<p>
+  Glu went a step further by integrating friends invites into the gifts UI,
+  with the option easily accessible in the Gifting screen.
+</p>
+
+<h3>Results</h3>
+
+<div class="figure" style="width:378px">
+  <img
+   src="{@docRoot}images/distribute/stories/glu-eternity-warriors-screenshot.png"
+   srcset=
+  "{@docRoot}images/distribute/stories/glu-eternity-warriors-screenshot.png 1x
+  {@docRoot}images/distribute/stories/glu-eternity-warriors-screenshot_2x.png 2x">
+  <p class="img-caption">
+    Gifting options are clearly displayed
+  </p>
+</div>
+
+<p>
+  Glu found that the gifting feature has a very high response rate and the gift
+  requests’ <b>fulfillment rate doubled</b> within 30 days of the feature’s
+  launch. Also these rates continued to increase over time among Eternity
+  Warriors 3 players.
+</p>
+
+<h3>Get started</h3>
+
+<p>
+  Find out how to add
+  <a class="external-link"
+  href="https://developers.google.com/games/services/android/giftRequests">
+  game gifts</a> to your games and discover more about
+  <a href="https://developer.android.com/distribute/engage/game-services.html">
+  using Google Play games services</a> in your games to increase player
+  engagement and revenues.
+</p>
diff --git a/docs/html/distribute/stories/games/glu-tap-baseball.jd b/docs/html/distribute/stories/games/glu-tap-baseball.jd
new file mode 100644
index 0000000..30be8e9
--- /dev/null
+++ b/docs/html/distribute/stories/games/glu-tap-baseball.jd
@@ -0,0 +1,71 @@
+page.title=Glu increased their conversion rate over 2% with Store Listing Experiments
+page.metaDescription=Glu Mobile decided to use Store Listing Experiments to see if different background colors in the game’s icon would affect installs. They found that a lighter background resulted in more installs.
+page.tags="developerstory", "games", "googleplay"
+page.image=images/cards/distribute/stories/glu-tap-baseball.jpg
+page.timestamp=1456431511
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/glu-tap-baseball-icon.jpg"
+  height="113" />
+</div>
+
+<p>
+  <a class="external-link"
+  href="https://play.google.com/store/apps/details?id=com.glu.baseball15&hl=en">
+  Tap Sports Baseball 2015</a> is a sports game by US games developer Glu
+  Mobile. Founded in 2001, Glu Mobile is a leading global developer and
+  publisher of free-to-play games for smartphone and tablet devices.
+</p>
+
+<p>
+  Glu Mobile decided to use
+  <a class="external-link"
+  href="https://support.google.com/googleplay/android-developer/answer/6227309">
+  Store Listing Experiments</a> to see if different background colors in the
+  game’s icon would affect installs. They found that a lighter background
+  resulted in more installs.
+</p>
+
+<h3>What they did</h3>
+
+<p>
+  <a class="external-link"
+  href="https://play.google.com/store/apps/dev?id=8633921029894576093">Glu
+  Mobile</a> used a global store listing experiment in the Google Play Developer
+  Console to test three different background colors in the game’s icon.
+</p>
+
+<h3>Results</h3>
+
+<p>
+  The results showed that of three different color schemes —  blue, light blue,
+  and light red — an icon with a light blue background converted 2.9 percent
+  more visitors than the original control icon.
+</p>
+
+
+  <img
+   src="{@docRoot}images/distribute/stories/glu-tap-baseball-screenshot.png"
+   srcset=
+  "{@docRoot}images/distribute/stories/glu-tap-baseball-screenshot.png 1x
+  {@docRoot}images/distribute/stories/glu-tap-baseball-screenshot_2x.png 2x">
+  <p class="img-caption">
+    Beautifully designed achievements badges encourage unlock
+  </p>
+
+
+<h3>Get started</h3>
+
+<p>
+  Learn how to run
+  <a class="external-link"
+  href="https://support.google.com/googleplay/android-developer/answer/6227309">
+  Store Listing Experiments</a> and read our best practices for
+  <a href="https://developer.android.com/distribute/users/experiments.html">
+  running successful experiments</a>.
+</p>
diff --git a/docs/html/distribute/stories/games/hotheadgames-firefight.jd b/docs/html/distribute/stories/games/hotheadgames-firefight.jd
new file mode 100644
index 0000000..ac1461a
--- /dev/null
+++ b/docs/html/distribute/stories/games/hotheadgames-firefight.jd
@@ -0,0 +1,90 @@
+page.title=Hothead Games grows retention and revenues with leaderboards and achievements
+page.metaDescription=Following their experience with Google Play games services in Rivals at War: Firefight, Hothead Games includes its features in all their games.
+page.tags="developerstory", "games", "googleplay"
+page.image=images/cards/distribute/stories/hotheadgames-firefight.jpg
+page.timestamp=1454440882
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/hotheadgames-firefight-icon.png"
+  height="113" />
+</div>
+
+<p>
+  Hothead Games was founded in 2006 and took the plunge into mobile games in
+  2011. This move has proved very successful, allowing the company to continue
+  growing into 2016 by creating and publishing great games exclusively for
+  mobile users.
+</p>
+
+<p>
+  Following their experience with Google Play games services in
+  <a class="external-link"
+  href="https://play.google.com/store/apps/details?id=com.hotheadgames.google.free.valorcmd">
+  Rivals at War: Firefight</a> they plan to include its features in all their
+  games.
+</p>
+
+<h3>What they did</h3>
+
+<p>
+  To start, the Google Play games services sign-in icon was given a prominent
+  position on the home screen so it was clear and easily accessible. They then
+  added leaderboards with their own beautifully designed badges as well as
+  achievements. Both were aligned and displayed with related in-game missions
+  showing players their progress and rewards earned. Notifications were used to
+  give players instant gratification when achievements were unlocked.
+</p>
+
+<h3>Results</h3>
+
+<div class="figure" style="width:379px">
+  <img
+   src="{@docRoot}images/distribute/stories/hotheadgames-firefight-screenshot.png"
+   srcset=
+  "{@docRoot}images/distribute/stories/hotheadgames-firefight-screenshot.png 1x
+  {@docRoot}images/distribute/stories/hotheadgames-firefight-screenshot_2x.png 2x">
+  <p class="img-caption">
+    Beautifully designed and specialized leaderboards
+  </p>
+</div>
+
+<p>
+  Hothead games found that retention, average revenue per daily active user
+  (ARPDAU), and average revenue per user (ARPU) positively correlated with
+  Google Play games sign-ins. The metrics for users signed-in with Google Play
+  games services include:
+  <ul>
+    <li>Day one retention <b>125 percent higher</b> and day seven retention
+    <b>182 percent higher</b>.</li>
+    <li>ARPDAU <b>134 percent higher</b>.</li>
+    <li>ARPU <b>900 percent higher</b>.</li>
+  </ul>
+</p>
+
+<p>
+  See examples of how Hothead Games integrated Google Play games services
+  leaderboards and achievements into the
+  <a class="external-link"
+  href="{@docRoot}shareables/stories/HotheadGames_RivalsatWar_gpgs.pdf">
+  UI of Rivals at War: Firefight</a>.
+</p>
+
+<h3>Get started</h3>
+
+<p>
+  Find out how to add
+  <a class="external-link"
+  href="https://developers.google.com/games/services/common/concepts/leaderboards">
+  leaderboards</a> and
+  <a class="external-link"
+  href="https://developers.google.com/games/services/common/concepts/achievements">
+  achievements</a> to your games and discover more about
+  <a href="https://developer.android.com/distribute/engage/game-services.html">
+  using Google Play games services</a> in your games to increase player
+  engagement and revenues.
+</p>
diff --git a/docs/html/distribute/stories/games/kongregate-adv-cap.jd b/docs/html/distribute/stories/games/kongregate-adv-cap.jd
new file mode 100644
index 0000000..8338934
--- /dev/null
+++ b/docs/html/distribute/stories/games/kongregate-adv-cap.jd
@@ -0,0 +1,76 @@
+page.title=Kongregate increases AdVenture Capitalist conversions by 5% with Store Listing Experiments
+page.metaDescription=AdVenture Capitalist, a builder game from games developers HyperHippo and Kongregate, was originally built for the web and released as a mobile version in May 2015. Kongregate decided to use Store Listing Experiments to see if different graphics could impact their installs.
+page.tags="developerstory", "games", "googleplay"
+page.image=images/cards/distribute/stories/kongregate-adv-cap.jpg
+page.timestamp=1456431511
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/kongregate-adv-cap-icon.png"
+  height="113" />
+</div>
+
+<p>
+  <a class="external-link"
+  href="https://play.google.com/store/apps/details?id=com.kongregate.mobile.adventurecapitalist.google&hl=en">
+  AdVenture Capitalist</a> a builder game from games developers HyperHippo and
+  Kongregate, was originally built for the web and released as a mobile version
+  in May 2015. Kongregate decided to use
+  <a class="external-link"
+  href="https://support.google.com/googleplay/android-developer/answer/6227309">
+  Store Listing Experiments</a> to see if different graphics
+  could impact their installs. They found that graphics illustrating the game’s
+  builder mechanics and strategy drove more installs from the store listing page
+  than their existing graphics.
+
+</p>
+
+<h3>What they did</h3>
+
+<p>
+  <a class="external-link"
+  href="https://play.google.com/store/apps/developer?id=Kongregate">
+  Kongregate</a> used a global store listing experiment in the Google Play
+  Developer Console to test two variant designs of feature art. Their prediction
+  was that their current control graphic would outperform the variant designs,
+  because of the game’s brand and icon reputation on the web.
+</p>
+
+<h3>Results</h3>
+
+<p>
+  The results revealed that variant graphics showing more of the game’s builder
+  mechanics and strategy drove more installs compared to the existing branded
+  icon.
+</p>
+
+  <img
+   src="{@docRoot}images/distribute/stories/kongregate-adv-cap-screenshot.png"
+   srcset=
+  "{@docRoot}images/distribute/stories/kongregate-adv-cap-screenshot.png 1x
+  {@docRoot}images/distribute/stories/kongregate-adv-cap-screenshot_2x.png 2x">
+  <p class="img-caption">
+    Beautifully designed achievements badges encourage unlock
+  </p>
+
+<p>
+  Jeff Gurian, Senior Marketing Director at Kongregate commented that: "Google
+  Play's Store Listing Experiments tool allows us to maximize ASO performance
+  across all of our channels in a live environment, for free — it is now our
+  primary tool for testing."
+</p>
+
+<h3>Get started</h3>
+
+<p>
+  Learn how to run
+  <a class="external-link"
+  href="https://support.google.com/googleplay/android-developer/answer/6227309">
+  Store Listing Experiments</a> and read our best practices for
+  <a href="https://developer.android.com/distribute/users/experiments.html">
+  running successful experiments</a>.
+</p>
diff --git a/docs/html/distribute/stories/games/kongregate-global-assault.jd b/docs/html/distribute/stories/games/kongregate-global-assault.jd
new file mode 100644
index 0000000..e8fec2d
--- /dev/null
+++ b/docs/html/distribute/stories/games/kongregate-global-assault.jd
@@ -0,0 +1,78 @@
+page.title=Kongregate increases Global Assault installs by 92 percent with Store Listing Experiments
+page.metaDescription=Kongregate decided to use Store Listing Experiments to see if different artwork could impact the installs of their game Global Assault. They found that icons illustrating dynamic game play drove more installs from the store listing page than their existing icon.
+page.tags="developerstory", "games", "googleplay"
+page.image=images/cards/distribute/stories/kongregate-global-assault.jpg
+page.timestamp=1456431511
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img
+  src="{@docRoot}images/distribute/stories/kongregate-global-assault-icon.png"
+  height="113" />
+</div>
+
+<p>
+  <a class="external-link"
+  href="https://play.google.com/store/apps/details?id=com.kongregate.mobile.globalassault.google">
+  Global Assault</a> is a free-to-play, 3D strategy RPG developed and produced
+  by Kongregate that was released in November 2014. Kongregate decided to use
+  <a class="external-link"
+  href="https://support.google.com/googleplay/android-developer/answer/6227309">
+  Store Listing Experiments</a> to see if different artwork could impact their
+  installs. They found that icons illustrating dynamic game play drove more
+  installs from the store listing page than their existing icon.
+</p>
+
+<h3>What they did</h3>
+
+<p>
+  <a class="external-link"
+  href="https://play.google.com/store/apps/developer?id=Kongregate">
+  Kongregate</a> used a global store listing experiment in the Google Play
+  Developer Console to test three new icons. From previous internal tests, they
+  believed that their existing icon, the control, would perform best in terms of
+  installs.
+</p>
+
+<h3>Results</h3>
+
+<p>
+  The results showed that one new icon, the ‘Chopper’ variant, outperformed the
+  control group by 92 percent in terms of installs. Based on these findings,
+  Kongregate changed Global Assault’s icon on Google Play to the ‘Chopper’
+  image.
+</p>
+
+
+  <img
+   src="{@docRoot}images/distribute/stories/kongregate-global-assault-screenshot.png"
+   srcset=
+  "{@docRoot}images/distribute/stories/kongregate-global-assault-screenshot.png 1x
+  {@docRoot}images/distribute/stories/kongregate-global-assault-screenshot_2x.png 2x">
+  <p class="img-caption">
+    Beautifully designed achievements badges encourage unlock
+  </p>
+
+
+<p>
+  Jeff Gurian, Senior Marketing Director at Kongregate commented that “as a
+  publisher we are responsible for handling the marketing spend of our
+  developers. If we can improve conversion rates through art or graphics by even
+  0.5% it is extremely valuable to us — and the Store Listing Experiment tool
+  gives us the data we need to make those decisions.”
+</p>
+
+<h3>Get started</h3>
+
+<p>
+  Learn how to run
+  <a class="external-link"
+  href="https://support.google.com/googleplay/android-developer/answer/6227309">
+  Store Listing Experiments</a> and read our best practices for
+  <a href="https://developer.android.com/distribute/users/experiments.html">
+  running successful experiments</a>.
+</p>
diff --git a/docs/html/distribute/stories/games/leos-fortune.jd b/docs/html/distribute/stories/games/leos-fortune.jd
new file mode 100644
index 0000000..8b20596
--- /dev/null
+++ b/docs/html/distribute/stories/games/leos-fortune.jd
@@ -0,0 +1,80 @@
+page.title=Saved games help bring players back to Leo’s Fortune
+page.metaDescription=1337 & Senri implemented Google Play games services saved games in their game Leo’s Fortune.
+page.tags="developerstory", "games", "googleplay"
+page.image=images/cards/distribute/stories/leos-fortune.jpg
+page.timestamp=1456431511
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/leos-fortune-icon.png"
+  height="113" />
+</div>
+
+<p>
+  1337 & Senri, a software development firm based in Gothenburg, Sweden, have
+  collaborated on a number of games, including
+  <a class="external-link"
+  href="https://play.google.com/store/apps/details?id=com.leosfortune">
+  Leo’s Fortune</a> and
+  <a class="external-link"
+  href="https://play.google.com/store/apps/details?id=com.senri.da">Devil's
+  Attorney</a>.
+</p>
+
+<h3>What they did</h3>
+
+<p>
+  Senri implemented Google Play games services saved games in Leo’s Fortune. Each saved game includes a screenshot showing the date and time of the last play session, as well as the current chapter and total play time. In addition progress information is displayed clearly in Play Games destination app’s home screen.
+</p>
+
+<p>
+  In addition, they also implemented one Leaderboard per chapter, which fits
+  well with the flow and objective of the game.
+</p>
+
+<h3>Results</h3>
+
+<div class="figure" style="width:304px">
+  <img
+   src="{@docRoot}images/distribute/stories/leos-fortune-screenshot.png"
+   srcset=
+  "{@docRoot}images/distribute/stories/leos-fortune-screenshot.png 1x
+  {@docRoot}images/distribute/stories/leos-fortune-screenshot_2x.png 2x">
+  <p class="img-caption">
+    Players can view and restart games
+  </p>
+</div>
+
+<p>
+  Adoption of cloud saved games, achievements, and leaderboards was very high
+  among players of Leo’s Fortune.
+</p>
+
+<p>
+  They found that Google Play games services users are 22 percent more likely to
+  come back after 1 day and 17 percent more likely after 2 days.
+</p>
+
+<p>
+  See examples of how 1337 & Senri integrated Google Play games services saved
+  games, achievements, and leaderboards into the
+  <a class="external-link"
+  href="{@docRoot}shareables/stories/Senri_LeosFortune_gpgs.pdf">
+  UI of Leo's Fortune</a>.
+</p>
+
+<h3>Get started</h3>
+
+<p>
+  Find out how to add
+  <a class="external-link"
+  href="https://developers.google.com/games/services/common/concepts/savedgames">
+  saved games</a> to your games and discover more about
+  <a href="https://developer.android.com/distribute/engage/game-services.html">
+  using Google Play games services</a> in your games to increase player
+  engagement and revenues.
+</p>
diff --git a/docs/html/distribute/stories/games/noodlecake-super-stickman.jd b/docs/html/distribute/stories/games/noodlecake-super-stickman.jd
new file mode 100644
index 0000000..54a4794
--- /dev/null
+++ b/docs/html/distribute/stories/games/noodlecake-super-stickman.jd
@@ -0,0 +1,108 @@
+page.title=Noodlecake engages players with multiplayer in Super Stickman Golf 2
+page.metaDescription=For the update to Super Stickman Golf, Noodlecake made extensive use of Google Play games services.
+page.tags="developerstory", "games", "googleplay"
+page.image=images/cards/distribute/stories/noodlecake-super-stickman.jpg
+page.timestamp=1456431511
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/noodlecake-super-stickman-icon.png"
+  height="113" />
+</div>
+
+<p>
+  Founded in early 2011, Noodlecake Studios is an indie game studio based in
+  Canada. Noodlecake found success with its first game, Super Stickman Golf.
+  Since then they have expanded into publishing and releasing games on multiple
+  platforms.
+</p>
+
+<p>
+  For the update to Super Stickman Golf Noodlecake made extensive use of
+  Google Play games services.
+</p>
+
+<h3>What they did</h3>
+
+<p>
+  In
+  <a class="external-link"
+  href="https://play.google.com/store/apps/details?id=com.noodlecake.ssg2">
+  Super Stickman Golf 2</a> Noodlecake implemented a game open screen that
+  prompts the user to sign in, with a clear value proposition. Once the user has
+  signed in, they’re given the option to auto sign-in in the future. For users
+  who don’t select this option, sign-in is prominently displayed on the game’s
+  home screen.
+</p>
+
+<p>
+  In addition to achievements, the main Google Play games services feature in
+  Super Stickman Golf 2 is multiplayer. Users have two multiplayer options:
+  turn based or race mode,  which engage with different types of players.
+  Players can find an opponent among their friends or one at random to start a
+  game immediately. And to minimize drop-off asynchronous gameplay starts
+  immediately after an invite is issued.
+</p>
+
+<h3>Results</h3>
+
+<div class="figure" style="width:379px">
+  <img
+   src="{@docRoot}images/distribute/stories/noodlecake-super-stickman-screenshot.png"
+   srcset=
+  "{@docRoot}images/distribute/stories/noodlecake-super-stickman-screenshot.png 1x
+  {@docRoot}images/distribute/stories/noodlecake-super-stickman-screenshot_2x.png 2x">
+  <p class="img-caption">
+    Two multiplayer options engage with different types of players
+  </p>
+</div>
+
+<p>
+  Noodlecake found that user acquisition, retention, and engagement positively
+  correlated with the use of Google Play Games by players. This is consistent
+  across different games and genres, not just for Stickman Golf 2.
+</p>
+
+<p>
+  Also multiplayer, in addition to increasing user engagement, is also an
+  effective user acquisition channel.
+</p>
+
+<p>
+  Some key metrics include:
+  <ul>
+    <li>~96 percent increase in the number of users after Google Play games
+    services integration.</li>
+    <li>~26 percent decrease in the user attrition rate.</li>
+    <li>~6 percent increase in session length.</li>
+  </ul>
+</p>
+
+<p>
+  See examples of how Noodlecake Studio integrated Google Play games services
+  multiplayer and achievements into the
+  <a style="external-link"
+  href="{@docRoot}shareables/stories/Noodlecake_SuperStickmanGolf2_gpgs.pdf">
+  UI of Super Stickman Golf 2</a>.
+</p>
+
+<h3>Get started</h3>
+
+<p>
+  Find out how to add
+  <a class="external-link"
+  href="https://developers.google.com/games/services/common/concepts/realtimeMultiplayer">
+  real-time</a> or
+  <a class="external-link"
+  href="https://developers.google.com/games/services/common/concepts/turnbasedMultiplayer">
+  turn-based</a> multiplayer and
+  <a class="external-link"
+  href="https://developers.google.com/games/services/common/concepts/achievements">achievements</a> to your games and discover more about
+  <a href="https://developer.android.com/distribute/engage/game-services.html">
+  using Google Play games services</a> in your games to increase player
+  engagement and revenues.
+</p>
diff --git a/docs/html/distribute/stories/games/rvappstudios-zombie.jd b/docs/html/distribute/stories/games/rvappstudios-zombie.jd
new file mode 100644
index 0000000..134bac4
--- /dev/null
+++ b/docs/html/distribute/stories/games/rvappstudios-zombie.jd
@@ -0,0 +1,70 @@
+page.title=Localization improves Zombie Ragdoll engagement at launch
+page.metaDescription=Zombie Ragdoll is a physics based zombie shooting game launched by RV AppStudios in August 2013. Having attended Google I/O talks, the team at RV AppStudios was inspired to go global with Zombie Ragdoll at launch.
+page.tags="developerstory", "games", "googleplay"
+page.image=images/cards/distribute/stories/rvappstudios-zombie.jpg
+page.timestamp=1454440882
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/rvappstudios-zombie-icon.png" height="113" />
+</div>
+
+<p>
+  <a class="external-link" href="
+  https://play.google.com/store/apps/details?id=com.rvappstudios.zombieragdoll">
+  Zombie Ragdoll</a> is a physics based zombie shooting game launched by RV AppStudios in August
+  2013. Inspired by Google I/O talks about reaching global users on Google Play, the team at RV
+  AppStudios was inspired to go global with Zombie Ragdoll at launch.
+</p>
+
+
+<h3>What they did</h3>
+
+<p>
+  Using the App Translation Service in the Google Play Developer Console,
+  RV AppStudios launched Zombie Ragdoll localized into 20 languages.
+  In addition to localizing the text within the game, they also localized
+  game assets to specific countries and cultures.
+</p>
+
+<h3>Results</h3>
+
+<div class="figure" style="width:380px">
+  <img width="380"
+   src="{@docRoot}images/distribute/stories/rvappstudios-zombie-screenshot.jpg"
+   srcset=
+  "{@docRoot}images/distribute/stories/rvappstudios-zombie-screenshot.jpg 1x
+  {@docRoot}images/distribute/stories/rvappstudios-zombie-screenshot_2x.jpg 2x">
+  <p class="img-caption">
+    Hindi version of Zombie Ragdoll
+  </p>
+</div>
+
+<p>
+  After launch 80% of downloads came from non-English speaking countries,
+  improving engagement with users worldwide. In addition, there was
+  growth in use in countries where their apps hadn’t been as popular
+  before; achieving significant traction in countries such as Vietnam,
+  Russia, Philippines, and Thailand.
+</p>
+
+<p>
+  Vivek Dave, founder of RV AppStudios says, “Users want a personalized
+  experience, and by offering a localized game with translation of text and
+  graphic assets, we believe users will connect at a much deeper level.""
+</p>
+
+<h3>Get started</h3>
+
+<p>
+  Find out more about the App Translation Service <a href="
+  http://developer.android.com/distribute/tools/localization-checklist.html#gp-trans">
+  here</a> and read the full <a href="
+  https://developer.android.com/distribute/tools/localization-checklist.html">
+  Localization checklist</a> to simplify the process of localizing your app
+  or game for users across the globe.
+</p>
diff --git a/docs/html/distribute/stories/games/tiny-co.jd b/docs/html/distribute/stories/games/tiny-co.jd
new file mode 100644
index 0000000..b8435ba
--- /dev/null
+++ b/docs/html/distribute/stories/games/tiny-co.jd
@@ -0,0 +1,78 @@
+page.title=TinyCo finds monetization opportunities on tablets
+page.metaDescription=TinyCo launches their line of apps across multiple form factors.
+page.tags="developerstory", "games", "googleplay"
+page.image=images/cards/distribute/stories/tiny-co.jpg
+page.timestamp=1456340902
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/tinyvillage-icon.png"
+  height="113" />
+</div>
+
+<p>
+  App developer TinyCo, makers of a suite of games such as Tiny Monsters,
+  decided to prioritize launching effectively across multiple platforms. They
+  chose Android as one of their primary launch platforms because of its large
+  installed base and global reach. They also knew that the growing base of
+  Android tablet users represented a huge opportunity.
+</p>
+
+<h3>What they did</h3>
+
+<p>
+  <a class="external-link"
+  href="http://play.google.com/store/apps/details?id=com.tinyco.village">
+  Tiny Village</a>, a game targeting 7- to 10-inch tablets and phones, was their
+  first title to take advantage of the strategy, and it proved to be a winning
+  one — especially in terms of Android tablets.
+</p>
+
+<h3>Results</h3>
+
+<div class="figure" style="width:336px">
+  <img
+   src="{@docRoot}images/distribute/stories/tinyvillage-screenshot.png"
+   srcset=
+  "{@docRoot}images/distribute/stories/tinyvillage-screenshot.png 1x
+  {@docRoot}images/distribute/stories/tinyvillage-screenshot_2x.png 2x">
+  <p class="img-caption">
+    Tiny Village monetized better on tablets
+  </p>
+</div>
+
+<p>
+  In the six months from launch TinyCo saw Android tablet <b>downloads more than
+  triple</b>.
+</p>
+
+<p>
+  When used on tablets Tiny Village also showed an increase in average revenue
+  per paying user (ARPPU) — about 35% higher than on smaller-screen devices such
+  as phones. Additionally, average revenue per user <b>(ARPU) is now about 35%
+  higher</b> as well. “The game is just much more immersive on tablets,” said
+  Rajeev Nagpal, Head of Product at TinyCo.
+</p>
+
+<p>
+  There has also been a <b>consistent increase in retention</b> over other
+  platforms, an important metric for games according to Nagpal.
+</p>
+
+<p>
+  “With continued optimization of the gameplay experience and a genuine
+  commitment to our Android offering through our Griffin engine, all of our
+  metrics started to rise,” said Nagpal.
+</p>
+
+<h3>Get started</h3>
+
+<p>
+  Find out more about creating a tablet version of your app by reviewing the
+  <a href="http://developer.android.com/distribute/essentials/quality/tablets.html">
+  Tablet App Quality</a> guidelines and growing your user base.
+</p>
diff --git a/docs/html/distribute/stories/games/two-dots.jd b/docs/html/distribute/stories/games/two-dots.jd
new file mode 100644
index 0000000..a2299ce
--- /dev/null
+++ b/docs/html/distribute/stories/games/two-dots.jd
@@ -0,0 +1,77 @@
+page.title=Two Dots increased installs by 7 percent using Store Listing Experiments
+page.metaDescription=Two Dots, the sequel to the popular game Dots, is a free-to-play puzzle game launched by Playdots, Inc. Playdots decided to use Store Listing Experiments to see if adding a call to action in the games’ store listing short descriptions had an impact on installs.
+page.tags="developerstory", "games", "googleplay"
+page.image=images/cards/distribute/stories/two-dots.png
+page.timestamp=1456431511
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/two-dots-icon.png"
+  height="113" />
+</div>
+
+<p>
+  <a class="external-link"
+  href="https://play.google.com/store/apps/details?id=com.weplaydots.twodotsandroid&hl=en">
+  Two Dots</a>, the sequel to the popular game
+  <a class="external-link"
+  href="https://play.google.com/store/apps/details?id=com.nerdyoctopus.gamedots&hl=en">
+  Dots</a>, is a free-to-play puzzle game launched by Playdots, Inc. in May
+  2014. Since launch it has gained over 30 million downloads, seen over five
+  billion games played, and achieved 15 times the revenue of the original Dots
+  game within a year. Dots decided to use
+  <a class="external-link"
+  href="https://support.google.com/googleplay/android-developer/answer/6227309">
+  Store Listing Experiments</a> to see if adding a call to action in the games'
+  store listing short descriptions had an impact on installs.
+
+</p>
+
+<h3>What they did</h3>
+
+<p>
+  Dots used localized store listing experiments in the Google Play Developer
+  Console to test both games’ short descriptions. They compared the games’
+  current descriptions — the control, with no call to action — against variant
+  descriptions, targeting half of their traffic with the variant descriptions.
+</p>
+
+<h3>Results</h3>
+
+<p>
+  The results showed that the addition of a call to action in the short
+  description had a positive impact on installs.
+</p>
+
+
+  <img
+   src="{@docRoot}images/distribute/stories/two-dots-screenshot.png"
+   srcset=
+  "{@docRoot}images/distribute/stories/two-dots-screenshot.png 1x
+  {@docRoot}images/distribute/stories/two-dots-screenshot_2x.png 2x">
+  <p class="img-caption">
+    Beautifully designed achievements badges encourage unlock
+  </p>
+
+
+<p>
+  In Dots, the conversion rate increased by 2 percent with a simple call to
+  action in the variant text. In Two Dots, where a call to action was combined
+  with messaging that the game is the “best puzzle game on Android”, conversion
+  rates increased by 7 percent compared to the control description.
+</p>
+
+<h3>Get started</h3>
+
+<p>
+  Learn how to run
+  <a clas="external-link"
+  href="https://support.google.com/googleplay/android-developer/answer/6227309">
+  Store Listing Experiments</a> and read our best practices for
+  <a href="https://developer.android.com/distribute/users/experiments.html">
+  running successful experiments</a>.
+</p>
diff --git a/docs/html/distribute/stories/glu-dh.jd b/docs/html/distribute/stories/glu-dh.jd
new file mode 100644
index 0000000..3353f69
--- /dev/null
+++ b/docs/html/distribute/stories/glu-dh.jd
@@ -0,0 +1,75 @@
+page.title=Glu improves player lifetime value with Google Play games services sign-in
+page.metaDescription=With the release of their game Deer Hunter 2014, leading developer and publisher Glu Mobile found that Google Play games services helped improve the user experience leading to increased player happiness.
+page.tags="developerstory", "games", "googleplay"
+page.image=images/cards/distribute/stories/glu-dh.jpg
+timestamp=1456787470
+
+@jd:body
+
+
+<h3>Background</h3>
+
+<div class="figure" style="width:113px">
+  <img src="{@docRoot}images/distribute/stories/glu-dh-icon.jpg" height="113"
+      srcset="{@docRoot}images/distribute/stories/glu-dh-icon.jpg 1x,
+      {@docRoot}images/distribute/stories/glu-dh-icon_2x.jpg 2x" />
+</div>
+
+<p>
+  With the release of their game <a href=
+  "https://play.google.com/store/apps/details?id=com.glu.deerhunt2" class=
+  "external-link">Deer Hunter 2014</a>, leading developer and publisher Glu
+  Mobile found that Google Play games services helped improve the user
+  experience leading to increased player happiness. These happy players then
+  tended to play longer and have a higher <em>lifetime value (LTV)</em>.
+</p>
+
+
+<h3>What they did</h3>
+
+<p>
+  Glu implemented Google Play games services sign-in as part of Deer Hunter
+  2014. Users were given the option to auto sign-in and, for those that didn’t
+  take that option, sign-in was displayed prominently on the game’s home
+  screen.
+</p>
+
+<p>
+  For users who were signed in, Glu offered leaderboards and achievements,
+  found through easily recognizable and accessible icons on the game’s home
+  screen. Achievements were customized to fit the flow of the game, with the
+  degree of progress displayed to keep players motivated. Multiple leaderboards
+  were provided to engage players through different goals; with friends-only
+  leaderboards, in addition to the public ones, to keep the experience social.
+</p>
+
+<h3>Results</h3>
+
+<div class="figure" style="width:380px">
+  <img src="{@docRoot}images/distribute/stories/glu-dh-screenshot.png"
+    width="380"
+    srcset="{@docRoot}images/distribute/stories/glu-dh-screenshot.png 1x,
+   {@docRoot}images/distribute/stories/glu-dh-screenshot_2x.png 2x">
+  <p class="img-caption">
+    Games services features shown with easily recognizable icons after
+    user signs in
+  </p>
+</div>
+
+<p>
+  Overall, Glu found that Google Play games services helped identify
+  high-quality players, improve segmentation and user targeting.
+</p>
+
+<p>
+  The results from Deer Hunter 2014 showed that sessions per user and lifetime
+  value were positively correlated with Google Play games sign-ins: signed-in
+  users reported engagement at 62 percent higher and average LTV 211 percent
+  higher than users who didn’t sign-in.
+</p>
+
+<p>
+  This success also supported the guidelines for Google Play games services
+  integrations: make them highly visible, customized, achievable, and
+  incentivized.
+</p>
diff --git a/docs/html/distribute/stories/index.jd b/docs/html/distribute/stories/index.jd
index ca7647d..8fe1019 100644
--- a/docs/html/distribute/stories/index.jd
+++ b/docs/html/distribute/stories/index.jd
@@ -1,13 +1,39 @@
 page.title=Developer Stories
-section.landing=true
+excludeFromSuggestions=true
 page.metaDescription=Android developers, their apps, and their successes with Android and Google Play.
 
 @jd:body
 
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
+
 <p>Android developers, their apps, and their successes with Android and Google Play.</p>
 
-<div class="resource-widget resource-flow-layout col-13"
-    data-query="type:youtube+tag:developerstory"
-    data-sortOrder="-timestamp"
-    data-cardSizes="18x12"
-    data-maxResults="32"></div>
+<section class="dac-section dac-small" id="latest-apps"><div class="wrap">
+  <h2 class="norule">Latest from apps</h2>
+
+  <div class="resource-widget resource-flow-layout col-16"
+      data-query="type:distribute+tag:developerstory+tag:apps, type:youtube+tag:developerstory+tag:apps"
+      data-sortOrder="-timestamp"
+      data-cardSizes="6x6"
+      data-items-per-page="15"
+      data-initial-results="9"></div>
+</div></section>
+
+<section class="dac-section dac-small" id="latest-games"><div class="wrap">
+  <h2 class="norule">Latest from games</h2>
+
+  <div class="resource-widget resource-flow-layout col-16"
+      data-query="type:distribute+tag:developerstory+tag:games,type:youtube+tag:developerstory+tag:games"
+      data-sortOrder="-timestamp"
+      data-cardSizes="6x6"
+      data-items-per-page="15"
+      data-initial-results="9"></div>
+</div></section>
diff --git a/docs/html/distribute/stories/localization.jd b/docs/html/distribute/stories/localization.jd
deleted file mode 100644
index d6e6ccf..0000000
--- a/docs/html/distribute/stories/localization.jd
+++ /dev/null
@@ -1,330 +0,0 @@
-page.title=Developer Stories: Localization in Google Play
-meta.tags="google play, developer story, localization, global"
-page.tags="stories", "video", "case study"
-page.image=/images/distribute/zombie-ragdoll-n5-land.jpg
-page.metaDescription=Hear from Android developers who have successfully used the Google Play App Translation Service.
-
-@jd:body
-
-<p>
-  As you build your app and distribute it across the world through Google Play,
-  localization becomes an increasingly important tool to reach more users.
-  Localization involves a <a href=
-  "{@docRoot}distribute/googleplay/publish/localizing.html">variety of tasks</a>, but
-  most important is creating quality translations of your app's UI strings and
-  marketing materials.
-</p>
-
-<p>
-  Managing the translation process across multiple languages can be a
-  challenge, especially if you need to locate translators on your own. That’s
-  why Google Play offers the App Translation Service right from the Developer
-  Console. It's a single place where you can go to source professional
-  translators, get cost estimates, and then send your strings and other
-  materials for translation.
-</p>
-
-<p>
-  Here are some stories from developers who have used Google Play's App Translation
-  Service to localize their apps and the results they've seen as they've
-  expand their offerings beyond a single language.
-</p>
-
-<!-- START STORY -->
-
-<div style="margin-bottom:2em;padding-top:10px;" id="zombieragdoll">
-
-<h3 style="line-height:1.25em">Zombie Ragdoll: Improved user engagement<br /> with localized versions</h3>
-
-  <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
-            -moz-border-radius: 5px;
-            border-radius: 5px height:78px;
-            width: 78px;
-            float: left;
-            margin: 12px 20px 9px 20px;" src=
-            "https://lh4.ggpht.com/m-Ew8c8C_nGctbP6PSPGOaVNnGFryReOE2yHXJ9Z6Prk1nsDyx5w5TmWfg-P5N3HypA=w124">
-
-  <div style="list-style: none;height:100%;
-  float: right;
-  border-top: 1px solid #9C0;
-  width: 220px;
-  margin: 4px 20px;padding: .5em;">
-
-    <h5>About the app</h5>
-
-    <ul>
-      <li><a href="https://play.google.com/store/apps/details?id=com.rvappstudios.zombieragdoll">Zombie Ragdoll</a></li>
-      <li>A fun zombie-based physics game</li>
-    </ul>
-
-    <h5>Localization Results</h5>
-
-    <ul>
-      <li>Increased engagement because of appeal of the localized version</li>
-      <li>80% of installs came from users of non-English languages</li>
-      </ul>
-
-    <div style="padding:.5em 0 0 1em;">
-      <a href="https://play.google.com/store/apps/details?id=com.rvappstudios.zombieragdoll">
-        <img alt="Android app on Google Play"
-         src="{@docRoot}images/brand/en_generic_rgb_wo_45.png" />
-      </a>
-
-    </div>
-  </div>
-
-  <div style="line-height:1.4em;">
-
-<p>
-  The 2013 Google I/O talks about <a href=
-  "https://developers.google.com/events/io/sessions/326345917">Building Android
-  Apps for a Global Audience</a> and <a href=
-  "https://developers.google.com/events/io/sessions/326455375">What’s New for
-  Developers in Google Play</a> inspired developers at RV AppStudios to go global
-  from very beginning for their new game, Zombie Ragdoll. They launched Zombie
-  Ragdoll in August 2013, localized into 20 languages.
-</p>
-
-<p>
-  They quickly saw the impact of their decision to ship simultaneously in
-  multiple languages through increased non-English installs and improved
-  engagement with users worldwide. In addition, they started getting
-  significant usage in countries where their apps had not been as popular
-  before. They are seeing great traction in countries like Vietnam, Russia,
-  Philippines and Thailand.
-</p>
-
-<p>
-  Vivek Dave, founder of RV AppStudios, credits the success of Zombie Ragdoll
-  to localization:
-</p>
-
-<p>
-  "The value of localization is clear, it helps discoverability and helps
-  connect with the users in other countries. So when the localization
-  opportunity arose, we immediately jumped on it. Android is worldwide, and we
-  would be severely limiting ourselves if we focused on English as the only
-  language.
-</p>
-
-<p>
-  "The App Translation Service offered in the Google Play Developer Console is
-  extremely easy to use and the pricing is very attractive. Developers with
-  limited localization experience can easily create, upload, and translate
-  their app."
-</p>
-
-
-<p>
-  RV AppStudios not only localizes the text within the game, but also localizes
-  the game assets to a specific country/culture. Dave says, “Users want a
-  personalized experience, and by offering a localized game with translation of
-  text and graphic assets, we believe users will connect at a much deeper level
-  with the game.”
-</p>
-
-
-  <div style="margin-top:8px;float:left;margin-right:24px;">
-    <img src="{@docRoot}images/distribute/zombie-ragdoll-n5-land.jpg" style="width:470px;">
-  </div>
-
-
-    <div style="margin-top:128px;">
-      <p class="img-caption"><strong>Hindi version of Zombie Ragdoll</strong>:
-      Localized screenshots and videos in the app's Google Play listing go a
-      long way toward increasing the number of installs.</p>
-    </div>
-
-  </div>
-
-</div> <!-- END STORY -->
-
-<!-- START STORY -->
-
-<div style="margin-bottom:2em;padding-top:18px;clear:both;" id="sayhichat">
-
-<h3>SayHi Chat: Install growth and user engagement<br />
-  from professional translations</h3>
-
-  <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
-            -moz-border-radius: 5px;
-            border-radius: 5px height:78px;
-            width: 78px;
-            float: left;
-            margin: 12px 20px 9px 20px;" src=
-            "https://lh5.ggpht.com/qiL6CF1Hktz618T3mbGrxvm_OoeheQ78FgG7zr90C2MCRiz4IDQsbKuHT4xQGiWEU8o=w124">
-
-  <div style="list-style: none;height:100%;
-  float: right;
-  border-top: 1px solid #9C0;
-  width: 220px;
-  margin: 4px 20px;padding: .5em;">
-
-    <h5>About the app</h5>
-
-    <ul>
-      <li><a href="https://play.google.com/store/apps/details?id=com.unearby.sayhi">SayHi Chat,
-      Love, Meet, Dating</a></li>
-      <li>A social app to help you find people nearby</li>
-    </ul>
-
-    <h5>Localization Results</h5>
-
-    <ul>
-      <li>120% growth in language installs for new languages added</li>
-      <li>~20% increase in revenue and ~50% increase in User Reviews in the new
-        languages</li>
-      </ul>
-
-    <div style="padding:.5em 0 0 1em;">
-      <a href="https://play.google.com/store/apps/details?id=com.unearby.sayhi">
-        <img alt="Android app on Google Play"
-         src="{@docRoot}images/brand/en_generic_rgb_wo_45.png" />
-      </a>
-
-    </div>
-  </div>
-
-  <div style="line-height:1.4em;">
-
-<p>
-  The SayHi Chat app started out only in Japanese, Chinese and English. It soon
-  became one of the most popular apps in Japan, Hong Kong, and Taiwan. The
-  SayHi team realized it was time to launch in more languages, as the language
-  barrier was restricting how fast SayHi could grow globally. </p>
-
-  <p>Yan Shi, senior
-  developer at SayHi, says: "We checked Google Analytics for our DAU and user
-  growth numbers in each country, we also looked at total Android and iOS users
-  in those markets before finalizing our next set of languages.
-</p>
-
-  <div style="margin-top:8px;float:left;width:270px;">
-    <img src="{@docRoot}images/distribute/hichat-n5-port.jpg" style="width:240px;margin-right:48px;">
-  </div>
-
-<p>
-  SayHi used the App Translation Service to launch in 13 additional languages
-  in August 2013 and immediately saw 120% increase in install rates. In
-  addition, they are seeing their app ranked in Top 10 apps in countries like
-  Poland and Italy.
-</p>
-
-<p>Notably, they saw steady growth in Spain after replacing their previous
-  non-professional Spanish translation with a professional one produced through
-  the App Translation Service.</p>
-
-<p>
-  Yan Shi adds, “The App Translation Service is really easy to use and
-  the completion time for translation requests is very good.”
-</p>
-
-    <div style="width:600px;margin-top:98px;padding:0;">
-      <p class="img-caption"><strong>Arabic version of SayHi Chat</strong>:
-        User engagement increased significantly with
-        the localized version.</p>
-    </div>
-
-  </div>
-</div> <!-- END STORY -->
-
-
-<div style="margin-bottom:2em;clear:both;padding-top:18px;" id="g4a"><!-- START STORY -->
-
-<h3 style="line-spacing:1.25em;">G4A Indian Rummy: Benefitting from ease-of-use and<br /> fast turnaround time</h3>
-
-  <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
-            -moz-border-radius: 5px;
-            border-radius: 5px height:78px;
-            width: 78px;
-            float: left;
-            margin: 12px 20px 9px 20px;" src=
-            "https://lh4.ggpht.com/IxSyQgO0LWzPRoLfCrER06-0kr6aMAa2azF7eNYB30EBZAGOLYJUZulknPockbTlDYU=w124">
-
-  <div style="list-style: none;height:100%;
-  float: right;
-  border-top: 1px solid #9C0;
-  width: 220px;
-  margin: 4px 20px;padding: .5em;">
-
-    <h5>About the app</h5>
-
-    <ul>
-      <li><a href="https://play.google.com/store/apps/details?id=org.games4all.android.games.indianrummy.prod">G4A Indian Rummy</a></li>
-      <li>A card game in which the players try to form sets and sequences of cards</li>
-    </ul>
-
-    <h5>Localization Results</h5>
-
-    <ul>
-      <li>Double the number of users in French and German languages</li>
-      <li>300% increase in user engagement with localized version</li>
-      </ul>
-
-    <div style="padding:.5em 0 0 1em;">
-      <a href="https://play.google.com/store/apps/details?id=com.rvappstudios.zombieragdoll">
-        <img alt="Android app on Google Play"
-         src="{@docRoot}images/brand/en_generic_rgb_wo_45.png" />
-      </a>
-    </div>
-  </div>
-
-  <div style="line-height:1.4em;">
-
-<p>
-  Games4All (G4A) is the developer of Indian Rummy and a variety of games that
-  they distribute broadly to users around the world. After noticing that
-  certain apps had become especially popular in specific countries, they
-  decided to localize those apps. Initially they used a local agency to do
-  the translation and got great results &mdash; the number of users in
-  that language increased tremendously when they released the localized
-  version.
-</p>
-
-<p>
-  Building on that success, G4A expanded their localization goals but
-  found that translation quality varied across their vendors and costs limited the
-  language/game combinations they could try. That's when G4A decided to try the
-  App Translation Service.
-</p>
-
-<p>
-  Founder Pieter Olivier says, "When we heard that the App Translation
-  Service was available in the Developer Console, we jumped at the opportunity.
-  We've now been using the App Translation Service for several months and found
-  that the cost per translation is much lower than with local companies and the
-  process is much easier."
-</p>
-
-<p>So far, G4A has translated the game Indian Rummy into five languages through
-   the App Translation Service.</p>
-
-<p>
-  Olivier continues, "The first thing we did was convert all of our texts into
-  the strings.xml format. After that using the service was extremely easy and
-  straightforward. In contrast, our previous experiences with translation
-  agencies were much more difficult: files often required extensive conversion
-  operations to make them usable, and turnaround times varied wildly.
-</p>
-
-<p>
-  "With the App Translation Service, the turnaround time is usually measured in
-  days instead of weeks that we were used to with traditional translation
-  agencies."
-</p>
-
-  <div style="margin-top:14px;float:left;margin-right:24px;">
-    <img src="{@docRoot}images/distribute/indian-rummy-n4-land.jpg" style="width:470px;">
-  </div>
-
-    <div style="margin-top:158px;">
-      <p class="img-caption"><strong>Dutch
-      version of Indian Rummy</strong>: Making slight changes to games rules based on
-      local nuances was key to success of the game.</p>
-    </div>
-
-  </div>
-
-
-
-</div> <!-- END STORY -->
\ No newline at end of file
diff --git a/docs/html/distribute/stories/stories_toc.cs b/docs/html/distribute/stories/stories_toc.cs
index 54b7639..cd86af8 100644
--- a/docs/html/distribute/stories/stories_toc.cs
+++ b/docs/html/distribute/stories/stories_toc.cs
@@ -1,30 +1,27 @@
 <ul id="nav">
   <li class="nav-section">
-    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/stories/index.html">
-            <span class="en">Videos</span></a>
+    <div class="nav-section-header empty" style="font-weight:normal">
+    <a href="<?cs var:toroot?>distribute/stories/index.html">
+      <span class="en">Latest</span></a>
     </div>
   </li>
   <li class="nav-section">
-    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/stories/localization.html">
-            <span class="en">Going Global</span></a>
+    <div class="nav-section-header empty" style="font-weight:normal">
+    <a href="<?cs var:toroot?>distribute/stories/apps.html">
+      <span class="en">Apps</span>
+    </a>
     </div>
   </li>
   <li class="nav-section">
-    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/stories/games.html">
-            <span class="en">Games</span>
-          </a>
-    </div>
-  </li>
-  <li class="nav-section">
-    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/stories/tablets.html">
-          <span class="en">Tablets</span>
-        </a>
+    <div class="nav-section-header empty" style="font-weight:normal">
+    <a href="<?cs var:toroot?>distribute/stories/games.html">
+      <span class="en">Games</span>
+    </a>
     </div>
   </li>
 
 </ul>
 
-
 <script type="text/javascript">
 <!--
     buildToggleLists();
diff --git a/docs/html/distribute/stories/tablets.jd b/docs/html/distribute/stories/tablets.jd
deleted file mode 100644
index 771fa52..0000000
--- a/docs/html/distribute/stories/tablets.jd
+++ /dev/null
@@ -1,368 +0,0 @@
-page.title=Developer Stories: The Opportunity of Android Tablets
-meta.tags="google play, developer story, journal, tablets, pure"
-pdage.metaDescription=Developers are investing in a full tablet experience for their apps and seeing those investments pay off big.
-page.image=/images/distribute/rememberthemilk.png
-
-@jd:body
-
-
-<p>"More" and more, developers are investing in a full tablet experience
-for their apps and are seeing those investments pay off big. The increased
-screen area on tablets opens up a world of possibilities, allowing for more
-engagement with the user &mdash; which can mean an increase in usage as well as
-more monetization opportunities. And with the growing wave of Android tablets that
-continue to hit the market, it’s an important piece of any developer’s mobile
-offering. </p>
-
-<p>Here are some stories from developers who are seeing real results as they
-expand their offering to include Android tablets.</p>
-
-
-<div style="margin-bottom:2em;" id="rememberthemilk"><!-- START STORY -->
-
-<h3>Remember The Milk: Lifting installs with tablet design</h3>
-
-  <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
-            -moz-border-radius: 5px;
-            border-radius: 5px height:78px;
-            width: 78px;
-            float: left;
-            margin: 12px 20px 9px 20px;" src=
-            "http://lh3.ggpht.com/xmnal18taauP2mjQFEhr1PhcItQ_W32IRuaD86IoL2U_4E-mfeKiliKtkISgOuA6Ln9n=w124">
-          
-  <div style="list-style: none;height:100%;
-  float: right;
-  border-top: 1px solid #9C0;
-  width: 220px;
-  margin: 4px 20px;padding: .5em;">
-  
-
-    <h5>About the app</h5> 
-    
-    
-    <ul>
-      <li><a href="http://play.google.com/store/apps/details?id=com.rememberthemilk.MobileRTM">Remember The Milk</a></li>
-      <li>A feature-packed to-do list app; never forget the milk (or anything else) again</li>
-    </ul>
-
-    <h5>Tablet Results</h5> 
-
-    <ul>
-      <li>83% jump in tablet installs following update </li>
-      <li>Nexus 7 is most popular Android device for app </li>
-      <li>Single APK for phones and tablets</li>
-      </ul>
-    
-    <div style="padding:.5em 0 0 1em;">
-      <a href="http://play.google.com/store/apps/details?id=com.rememberthemilk.MobileRTM">
-        <img alt="Android app on Google Play"
-         src="{@docRoot}images/brand/en_generic_rgb_wo_45.png" />
-      </a>
-      
-    </div>
-  </div>
-
-  <div style="line-height:1.4em;">
-    <p style="margin-top:0;margin-bottom:12px;">When the Android tablet guidelines
-      came out in 2012, the team at Remember The Milk had already been thinking about
-      a redesign for their <a href="http://play.google.com/store/apps/details?id=com.rememberthemilk.MobileRTM">feature-packed
-      to-do list app</a>. Omar Kilani, Co-founder of Remember The Milk, explains how
-      <a href="http://blog.rememberthemilk.com/2013/04/the-all-new-remember-the-milk-for-android-and-tablets-too/">updating</a>
-      their app to meet the tablet guidelines lead to an 83% jump in tablet installs: </p>
-
-    <p>“We took this as an opportunity to think about how we were going to approach
-      Android tablets differently from a user experience perspective. The guidelines
-      were a helpful resource, and with the extra screen real estate tablets afford,
-      users have the opportunity to see all of their data in context and drill down
-      on more items. All of this is accomplished using a single APK on Play, even though
-      the phone and tablet versions each capture completely different use cases for us.”</p>
-
-    <p>“In the month after updating, we saw our tablet installs on Google Play jump 83%,
-      and the Nexus 7 is now the most popular Android device amongst our users. For us,
-      designing for tablets was an investment that has really paid off.”</p>
-
-    <p>The team also came out with a number of other goodies &mdash; including a new set of
-      widgets and richer notifications, and more ways to provide an immersive experience
-      for their users.</p>
-  </div>
-
-  <div style="clear:both;margin-top:30px;width:auto;">
-  
-    <img src="{@docRoot}images/distribute/rememberthemilk.png">
-
-    <div style="width:600px;margin-top:0px;padding:0 90px;">
-      <p class="image-caption"><span style="font-weight:500;">Tablet redesign led to lift
-      in installs</span>: Following the redesign of the Android app, in part to meet the tablet
-      design criteria, Remember The Milk saw an 83% increase in tablet installs.</p>
-    </div>
-
-  </div>
-
-</div> <!-- END STORY -->
-
-
-<div style="margin-bottom:2em;" id="mint"><!-- START STORY -->
-
-<h3>Mint: More screen real estate = more engagement</h3>
-
-  <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
-            -moz-border-radius: 5px;
-            border-radius: 5px height:78px;
-            width: 78px;
-            float: left;
-            margin: 12px 20px 9px 20px;" src=
-            "https://lh5.ggpht.com/0xAIZJ1uE05b4RHNHgBBTIH6nRdPTY660T104xY7O2GbHXwab6YVmpU5yYg8yacfBg=w124">
-          
-  <div style="list-style: none;height:100%;
-  float: right;
-  border-top: 1px solid #9C0;
-  width: 220px;
-  margin: 4px 20px;padding: .5em;">
-  
-
-    <h5>About the app</h5> 
-    
-    
-    <ul>
- <li><a href="http://play.google.com/store/apps/details?id=com.mint">Mint.com Personal Finance</a> by Intuit Inc.</li>
-      <li>Financial management app targeting 7- to 10-inch tablets and phones</li>
-    </ul>
-
-    <h5>Tablet Results</h5> 
-
-    <ul>
-      <li>Able to offer richer UI features</li>
-      <li>Much higher user engagement</li>
-      <li>Longer sessions &mdash; more Android tablet users have sessions longer than 5 minutes</li>
-      </ul>
-    
-    <div style="padding:.5em 0 0 1em;">
-<a href="http://play.google.com/store/apps/details?id=com.mint">
-  <img alt="Android app on Google Play"
-       src="{@docRoot}images/brand/en_generic_rgb_wo_45.png" />
-</a>
-      
-    </div>
-  </div>
-
-  <div style="line-height:1.4em;">
-    <p style="margin-top:0;margin-bottom:12px;">When Intuit was thinking about
-expanding their Mint mobile offering to include a version optimized for Android
-tablets, they knew that taking the layout that worked for phones and simply
-showing an enlarged version wouldn’t take full advantage of the opportunities
-that tablets afford.</p>
-    
-    <p>“We knew we had a lot more real estate, and we wanted to provide a more
-immersive experience for our users” said Ken Sun, Intuit Group Product Manager
-at Mint.</p>
-
-<p>Intuit’s Mint app, which has a 4-star rating on Google Play, brings a number
-of features to Android tablets that aren’t available for phones, including a
-more visual presentation of personal financial data.</p>
-
-<p>“Whereas our app for phones is used throughout the day for quick sessions,
-we’ve seen a larger percentage of our tablet usage happen in the evening, for
-much longer sessions,” said Sun. “People are doing a lot more than just checking
-their spending. They’re looking at historical trends, re-categorizing
-transactions, analyzing the data and setting financial goals for the future
-&mdash; digging much deeper and being more thoughtful. One example is how much
-users are interacting with their own budgets in the tablet app.  Customer budget
-operations (view, edit, drill-down, etc.) are 7x higher on Android tablets than
-they are on phones.”</p>
-
-<p>Fifty percent more Android tablet users have Mint sessions of 5 minutes or
-longer than they do on phones.  “We’ve found that phone usage is indicative of a
-customer’s regular financial check-in, while tablet usage points towards more
-analysis and interaction with that customer’s personal financial data.  This is
-the sort of immersive engagement experience we were looking for; the tablet and
-phone apps serve as great complements to each other."</p>
-  </div>
-
-  <div style="clear:both;margin-top:40px;width:auto;">
-  
-    <img src="{@docRoot}images/distribute/mint.png">
-
-    <div style="width:600px;margin-top:0px;padding:0 90px;">
-      <p class="image-caption"><span style="font-weight:500;">Making the most of tablet screens</span>: Mint used the extra screen area on tablets to offer quick access to additional tools and information.</p>
-    </div>
-
-  </div>
-
-</div> <!-- END STORY -->
-
-
-<div style="margin:3em auto"><!-- START STORY -->
-
-
-<h3>TinyCo: Monetization opportunities abound on tablets</h3>
-
-  <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
-            -moz-border-radius: 5px;
-            border-radius: 5px height:78px;
-            width: 78px;
-            float: left;
-            margin: 12px 20px 30px 20px;" src=
-            "https://lh6.ggpht.com/QTy7lOGRTS58NW4XEeym2sxpWKDmRNod_n3kBrHlqTRIyzIv2gkw8DfwiR4GIAdxiHw=w124">
-
-          
-  <div style="list-style: none;height:100%;
-  float: right;
-  border-top: 1px solid #9C0;
-  width: 220px;
-  margin: 4px 20px;padding: .5em;">
-
-    <h5>About the app</h5> 
-
-    <ul>
-                <li><a href="http://play.google.com/store/apps/details?id=com.tinyco.village">Tiny Village</a> by TinyCo</li>
-            <li>Game targeting 7- to 10-inch tablets and phones</li>
-    </ul>
-
-    <h5>Tablet Results</h5> 
-
-    <ul>
-      <li>35% higher average revenue per paying user (ARPPU)</li>
-      <li>Consistent increase in user retention</li>
-      <li>3x increase in downloads to Android tablets in the last 6 months</li>
-    </ul>
-    
-    <div style="padding:.5em 0 0 1em;">
-<a href="http://play.google.com/store/apps/details?id=com.tinyco.village">
-  <img alt="Android app on Google Play"
-       src="{@docRoot}images/brand/en_generic_rgb_wo_45.png" />
-</a>
-      
-    </div>
-  </div>
-
-  <div style="line-height:1.4em;">
-    <p style="margin-top:0;margin-bottom:12px;">
-    
-<p>Over a year ago, app developer TinyCo, makers of a suite of games such as
-Tiny Monsters, decided to prioritize launching across multiple platforms
-effectively. They chose Android as one of their primary launch platforms because
-of its large installed base and global reach. They also knew that the growing
-base of Android tablet users represented a huge opportunity.</p>
-    
-    <p>Tiny Village was their first title to take advantage of the strategy, and
-it proved to be a winning one &mdash; especially in terms of Android
-tablets.</p>
-    
-    <p> “With continued optimization of the gameplay experience and a genuine
-commitment to our Android offering through our Griffin engine, all of our
-metrics started to rise,” said Rajeev Nagpal, Head of Product at TinyCo. In
-fact, they’ve seen Android tablet downloads more than triple in the last six
-months.</p>
-
-    <p>One of the first things they noticed about usage of Tiny Village on
-tablets was an increase in average revenue per paying user (ARPPU)&mdash;about 35%
-higher than on smaller-screen devices such as phones. Additionally, average
-revenue per user ARPU is now about 35% higher as well. “The game is just much
-more immersive on tablet.”</p>
-
-    <p>In addition to an increase in monetization metrics, they’ve also seen a
-consistent increase in retention over other platforms. “These are really
-important metrics for games &mdash; if you can get users to both stay around
-longer and spend more while they’re there, you have a recipe for success.”</p>
-  </div>
-
-  <div style="clear:both;margin-top:40px;width:auto;">
-  
-    <img src="{@docRoot}images/distribute/tinyvillage.png">
-
-    <div style="width:600px;margin-top:0px;padding:0 90px;">
-      <p class="image-caption"><span style="font-weight:500;">More monetization
-on tablets</span>: On Android tablets TinyCo has seen higher ARPPU and user
-retention than on phones.</p>
-    </div>
-
-  </div>
-
-</div> <!-- END STORY -->
-
-
-<div style="margin-bottom:2em;"><!-- START STORY -->
-
-<h3>Instapaper: Riding the growing wave of Android tablets</h3>
-
-
-  <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
-            -moz-border-radius: 5px;
-            border-radius: 5px height:78px;
-            width: 78px;
-            float: left;
-            margin: 12px 20px 9px 20px;" src=
-            "https://lh3.ggpht.com/30KKcrIFO8V_wRfhnHaI9l0CLH_orIVFE7Xywtr9TBxAf0hi2BaZkKyBOs63Yfavpg=w124">
-
-          
-  <div style="list-style: none;height:100%;
-  float: right;
-  border-top: 1px solid #9C0;
-  width: 220px;
-  margin: 4px 20px;padding: .5em;">
-  
-  
-  
-
-    <h5>About the app</h5> 
-    <ul>
-                <li><a href="http://play.google.com/store/apps/details?id=com.instapaper.android">Instapaper</a> by Mobelux</li>
-      <li>Content-browsing utility that targets 7- to 10-inch tablets and phones</li>
-    </ul>
-
-    <h5>Tablet Results</h5> 
-
-    <ul>
-      <li>Tablets are now 50% of the app's installed base.</li>
-    </ul>
-    
-    <div style="padding:.5em 0 0 1em;">
-<a href="http://play.google.com/store/apps/details?id=com.instapaper.android">
-  <img alt="Android app on Google Play"
-       src="{@docRoot}images/brand/en_generic_rgb_wo_45.png" />
-</a>
-      
-    </div>
-  </div>
-
-  <div style="line-height:1.4em;">
-    <p style="margin-top:0;margin-bottom:12px;">Instapaper for Android is an app
-for saving web content to read later. Developer Mobelux decided that creating a
-great UI for Android tablet users would be an essential part of their initial launch
-plan.</p>
-    
-    <p>The app launched at the beginning of the summer of 2012, just in time to
-take advantage of a new tide of Android tablets, including the <span
-style="white-space:nowrap;">Nexus 7</span> tablet. The app has since seen huge
-popularity among tablet users, in particular, on Nexus 7. On the day that
-pre-orders of Nexus 7 began arriving, Mobelux saw a 600% jump in downloads of
-its app on Google Play.</p>
-
-    <p>“We saw a promising new set of Android tablets about to hit the market
-and wanted to position ourselves to be ready for them” said Jeff Rock of
-Mobelux. “It was a market that others were hesitant to explore, but the decision
-to prioritize tablets has paid off very well for us.”</p>
-
-    <p>Since that initial 600% jump in downloads, Instapaper for Android has
-continued to see a successful run on Android tablets. In fact, Android tablets
-now represent about 50% of their installed base. “With more and more Android
-tablets coming online, we’re excited to see how our investment in Android
-tablets continues to pay off.”</p>
-  </div>
-
-  <div style="clear:both;margin-top:40px;width:auto;">
-  
-    <img src="{@docRoot}images/distribute/instapaper.png">
-
-    <div style="width:600px;margin-top:0px;padding:0 90px;">
-      <p class="image-caption"><span style="font-weight:500;">Popular with
-tablet users</span>: A great tablet UI and browsing convenience make Instapaper
-popular with Android tablet users.</p>
-    </div>
-
-  </div>
-
-</div> <!-- END STORY -->
-
-
-
diff --git a/docs/html/distribute/tools/_book.yaml b/docs/html/distribute/tools/_book.yaml
new file mode 100644
index 0000000..57e03ba
--- /dev/null
+++ b/docs/html/distribute/tools/_book.yaml
@@ -0,0 +1,31 @@
+toc:
+- title: Launch Checklist
+  path: /distribute/tools/launch-checklist.html
+  custom_link_attributes:
+  - zh-cn-lang="发布检查清单"
+
+- title: Localization Checklist
+  path: /distribute/tools/localization-checklist.html
+  custom_link_attributes:
+  - zh-cn-lang="本地化检查清单"
+
+- title: Device Art Generator
+  path: /distribute/tools/promote/device-art.html
+
+- title: Google Play Badges
+  path: /distribute/tools/promote/badges.html
+  custom_link_attributes:
+  - zh-cn-lang="Google Play 徽章生成器"
+
+- title: Linking to Your Products
+  path: /distribute/tools/promote/linking.html
+  custom_link_attributes:
+  - zh-cn-lang="链接到您的商品"
+
+- title: Brand Guidelines
+  path: /distribute/tools/promote/brand.html
+  custom_link_attributes:
+  - zh-cn-lang="品牌指南"
+
+- title: Alternative Distribution
+  path: /distribute/tools/open-distribution.html
diff --git a/docs/html/distribute/tools/launch-checklist.jd b/docs/html/distribute/tools/launch-checklist.jd
index 962e3ff..a68f98b 100644
--- a/docs/html/distribute/tools/launch-checklist.jd
+++ b/docs/html/distribute/tools/launch-checklist.jd
@@ -290,7 +290,7 @@
 <p>
   The overall size of your app can affect its design and how you publish it on
   Google Play. Currently, the maximum size for an APK published on Google Play
-  is <strong>50 MB</strong>. If your app exceeds that size, or if you want to
+  is <strong>100 MB</strong>. If your app exceeds that size, or if you want to
   offer a secondary download, you can use <a href=
   "{@docRoot}google/play/expansion-files.html">APK Expansion Files</a>, which
   Google Play will host for free on its server infrastructure and automatically
@@ -300,7 +300,7 @@
 <ul>
   <li>
     <p>
-      The maximum size for an APK published on Google Play is 50 MB.
+      The maximum size for an APK published on Google Play is 100 MB.
     </p>
   </li>
 
diff --git a/docs/html/distribute/tools/localization-checklist.jd b/docs/html/distribute/tools/localization-checklist.jd
index e640243..1497c36 100644
--- a/docs/html/distribute/tools/localization-checklist.jd
+++ b/docs/html/distribute/tools/localization-checklist.jd
@@ -549,12 +549,6 @@
   <img src="{@docRoot}images/gp-localization-trans-0.png" class="border-img">
 </div>
 
-<h3 class="rel-resources clearfloat">Related resources</h3>
-
-<div class="resource-widget resource-flow-layout col-13" data-query=
-"collection:distribute/toolsreference/localizationchecklist/translatestrings"
-data-sortorder="-timestamp" data-cardsizes="9x3" data-maxresults="6">
-</div>
 
 <div class="headerLine">
   <h2 id="test">
diff --git a/docs/html/distribute/tools/promote/badges.jd b/docs/html/distribute/tools/promote/badges.jd
deleted file mode 100644
index eb09333..0000000
--- a/docs/html/distribute/tools/promote/badges.jd
+++ /dev/null
@@ -1,362 +0,0 @@
-page.title=Google Play Badge Generator
-page.image=/images/gp-badges-set.png
-page.metaDescription=Build badges for your app in just a few clicks, or download hi-res badge assets localized for a variety of languages.
-meta.tags="disttools, promoting, deviceart, marketing, googleplay"
-page.tags="badge, google play"
-
-@jd:body
-
-<p itemprop="description">Google Play badges enable you to promote your apps with
-official branding in your online ads, promotional materials, or anywhere you want
-a link to your apps</p>
-
-<p>In the form below,
-input your app's package name or publisher name, choose the badge style,
-click <em>Build my badge</em>, then paste the HTML into your web content.</p>
-
-<p>If you're creating a promotional web page for your app, you should also use the
-<a href="{@docRoot}distribute/tools/promote/device-art.html">Device Art Generator</a>, which quickly
-wraps your screenshots in real device artwork.</p>
-
-<p>For guidelines when using the Google Play badge and other brand assets,
-see the <a href="{@docRoot}distribute/tools/promote/brand.html#brand-google_play">Brand
-Guidelines</a>.</p>
-
-<style type="text/css">
-
-form.button-form {
-  margin-top:2em;
-}
-
-/* the label and input elements are blocks that float left in order to
-   keep the left edgets of the input aligned, and IE 6/7 do not fully support "inline-block" */
-label.block {
-  display: block;
-  float: left;
-  width: 100px;
-  padding-right: 10px;
-}
-
-input.text {
-  display: block;
-  float: left;
-  width: 250px;
-}
-
-div.button-row {
-  white-space:nowrap;
-  min-height:80px;
-}
-
-div.button-row input {
-  vertical-align:middle;
-  margin:0 5px 0 0;
-}
-
-#jd-content div.button-row img {
-  margin: 0;
-  vertical-align:middle;
-}
-
-</style>
-
-<script type="text/javascript">
-
-// locales for which we have the 'app' badge
-var APP_LANGS = ['it','pt-br','pt-pt','nl','ko','ja','fr','es','es-419','en','de'];
-
-// variables for creating 'try it out' demo button
-var imagePath = "https://developer.android.com/images/brand/"
-var linkStart = "<a href=\"https://play.google.com/store/";
-var imageStart = "\">\n"
-        + "  <img alt=\"";
-  // leaves opening for the alt text value
-var imageSrc = "\"\n       src=\"" + imagePath;
-  // leaves opening for the image file name
-var imageEnd = ".png\" />\n</a>";
-
-// variables for creating code snippet
-var linkStartCode = "&lt;a href=\"https://play.google.com/store/";
-var imageStartCode = "\"&gt;\n"
-        + "  &lt;img alt=\"";
-  // leaves opening for the alt text value
-var imageSrcCode = "\"\n       src=\"" + imagePath;
-  // leaves opening for the image file name
-var imageEndCode = ".png\" />\n&lt;/a>";
-
-/** Generate the HTML snippet and demo based on form values */
-function buildButton(form) {
-  var lang = $('#locale option:selected').val();
-  var selectedValue = lang + $('form input[type=radio]:checked').val();
-  var altText = selectedValue.indexOf("generic") != -1 ? "Get it on Google Play" : "Android app on Google Play";
-
-  if (form["package"].value != "com.example.android") {
-    $("#preview").show();
-    var packageName = escapeHTML(form["package"].value);
-    $("#snippet").show().html(linkStartCode + "apps/details?id=" + packageName
-            + imageStartCode + altText + imageSrcCode
-            + selectedValue + imageEndCode);
-    $("#button-preview").html(linkStart + "apps/details?id=" + packageName
-            + imageStart + altText + imageSrc
-            + selectedValue + imageEnd);
-
-    // Send the event to Analytics
-    ga('send', 'event', 'Distribute', 'Create Google Play Badge', 'Package ' + selectedValue);
-  } else if (form["publisher"].value != "Example, Inc.") {
-    $("#preview").show();
-    var publisherName = escapeHTML(form["publisher"].value);
-    $("#snippet").show().html(linkStartCode + "search?q=pub:" + publisherName
-            + imageStartCode + altText + imageSrcCode
-            + selectedValue + imageEndCode);
-    $("#button-preview").html(linkStart + "search?q=pub:" + publisherName
-            + imageStart + altText + imageSrc
-            + selectedValue + imageEnd);
-
-    // Send the event to Analytics
-    ga('send', 'event', 'Distribute', 'Create Google Play Badge', 'Publisher ' + selectedValue);
-  } else {
-    alert("Please enter your package name or publisher name");
-  }
-  return false;
-}
-
-/** Listen for Enter key */
-function onTextEntered(event, form, me) {
-  // 13 = enter
-  if (event.keyCode == 13) {
-    buildButton(form);
-  }
-}
-
-/** When input is focused, remove example text and disable other input */
-function onInputFocus(object, example) {
-  if (object.value == example) {
-    $(object).val('').css({'color' : '#000'});
-  }
-  $('input[type="text"]:not(input[name='+object.name+'])',
-          object.parentNode).attr('disabled','true');
-  $('#'+object.name+'-clear').show();
-}
-
-/** When input is blured, restore example text if appropriate and enable other input */
-function onInputBlur(object, example) {
-  if (object.value.length < 1) {
-    $(object).attr('value',example).css({'color':'#ccc'});
-    $('input[type="text"]', object.parentNode).removeAttr('disabled');
-    $('#'+object.name+'-clear').hide();
-  }
-}
-
-/** Clear the form to start over */
-function clearLabel(id, example) {
-  $("#preview").hide();
-  $('#'+id+'').html('').attr('value',example).css({'color':'#ccc'});
-  $('input[type="text"]', $('#'+id+'').parent()).removeAttr('disabled');
-  $('#'+id+'-clear').hide();
-  return false;
-}
-
-/** Switch the badge urls for selected language */
-function changeBadgeLang() {
-  var lang = $('#locale option:selected').val();
-
-  // check if we have the 'app' badge for this lang and show notice if not
-  $("div.button-row.error").remove();  // remove any existing instance of error message
-  if ($.inArray(lang,APP_LANGS) == -1) {
-    $("div.button-row.app").hide();
-    $("div.button-row.app").after('<div class="button-row error"><p class="note" style="margin:1em 0 -1em">'
-        + 'Sorry, we currently don\'t have the '
-        + '<em>Android app on Google Play</em> badge translated for '
-        + $("select#locale option[value="+lang+"]").attr("title")
-        + '.<br>Please check back later or instead use the <em>Get it on Google Play</em> badge below.'
-        + '</p></div>');
-  } else {
-    $("div.button-row.app").show(); // show the 'app' badge row
-  }
-
-  $('.button-row img').each(function() {
-    var id = $(this).parent().attr('for');
-    var imgName = lang + $('input#'+id).attr('value') + '.png';
-    var lastSlash = $(this).attr('src').lastIndexOf('/');
-    var imgPath = $(this).attr('src').substring(0, lastSlash+1);
-    $(this).attr('src', imgPath + imgName);
-  });
-}
-
-/** When the doc is ready, find the inputs and color the input grey if the value is the example
-    text. This is necessary to handle back-navigation, which can auto-fill the form with previous
-    values (and text should not be grey) */
-$(document).ready(function() {
-  $(".button-form input.text").each(function(index) {
-    if ($(this).val() == $(this).attr("default")) {
-      $(this).css("color","#ccc");
-    } else {
-      /* This is necessary to handle back-navigation to the page after form was filled */
-      $('input[type="text"]:not(input[name='+this.name+'])',
-              this.parentNode).attr('disabled','true');
-      $('#'+this.name+'-clear').show();
-    }
-  });
-});
-
-</script>
-
-<form class="button-form">
-  <label class="block" for="locale">Language:</label>
-  <select id="locale" style="display:block;float:left;margin:0"
-          onchange="changeBadgeLang()">
-    <option title="Afrikaans"
-            value="af">Afrikaans</option>
-    <option title="Arabic"
-            value="ar">العربية</option>
-    <option title="Belarusian"
-            value="be">Беларуская</option>
-    <option title="Bulgarian"
-            value="bg">Български</option>
-    <option title="Catalan"
-            value="ca">Català</option>
-    <option title="Chinese (China)"
-            value="zh-cn">中文 (中国)</option>
-    <option title="Chinese (Hong Kong)"
-            value="zh-hk">中文(香港)</option>
-    <option title="Chinese (Taiwan)"
-            value="zh-tw">中文 (台灣)</option>
-    <option title="Croatian"
-            value="hr">Hrvatski</option>
-    <option title="Czech"
-            value="cs">Česky</option>
-    <option title="Danish"
-            value="da">Dansk</option>
-    <option title="Dutch"
-            value="nl">Nederlands</option>
-    <option title="Estonian"
-            value="et">Eesti</option>
-    <option title="Farsi - Persian"
-            value="fa">فارسی</option>
-    <option title="Filipino"
-            value="fil">Tagalog</option>
-    <option title="Finnish"
-            value="fi">Suomi</option>
-    <option title="French"
-            value="fr">Français</option>
-    <option title="German"
-            value="de">Deutsch</option>
-    <option title="Greek"
-            value="el">Ελληνικά</option>
-    <option title="English"
-            value="en" selected="true">English</option>
-<!--
-    <option title="Hebrew"
-            value="iw-he">עברית</option>
--->
-    <option title="Hungarian"
-            value="hu">Magyar</option>
-    <option title="Indonesian"
-            value="id-in">Bahasa Indonesia</option>
-    <option title="Italian"
-            value="it">Italiano</option>
-    <option title="Japanese"
-            value="ja">日本語</option>
-    <option title="Korean"
-            value="ko">한국어</option>
-    <option title="Latvian"
-            value="lv">Latviešu</option>
-    <option title="Lithuanian"
-            value="lt">Lietuviškai</option>
-    <option title="Malay"
-            value="ms">Bahasa Melayu</option>
-    <option title="Norwegian"
-            value="no">Norsk (bokmål)‎</option>
-    <option title="Polish"
-            value="pl">Polski</option>
-    <option title="Portuguese (Brazil)"
-            value="pt-br">Português (Brasil)</option>
-    <option title="Portuguese (Portugal)"
-            value="pt-pt">Português (Portugal)</option>
-    <option title="Romanian"
-            value="ro">Română</option>
-    <option title="Russian"
-            value="ru">Русский</option>
-    <option title="Serbian"
-            value="sr">Српски / srpski</option>
-    <option title="Slovak"
-            value="sk">Slovenčina</option>
-    <option title="Slovenian"
-            value="sl">Slovenščina</option>
-    <option title="Spanish (Spain)"
-            value="es">Español (España)</option>
-    <option title="Spanish (Latin America)"
-            value="es-419">Español (Latinoamérica)</option>
-    <option title="Swedish"
-            value="sv">Svenska</option>
-    <option title="Swahili"
-            value="sw">Kiswahili</option>
-    <option title="Thai"
-            value="th">ไทย</option>
-    <option title="Turkish"
-            value="tr">Türkçe</option>
-    <option title="Ukrainian"
-            value="uk">Українська</option>
-    <option title="Vietnamese"
-            value="vi">Tiếng Việt</option>
-    <option title="Zulu"
-            value="zu">isiZulu</option>
-  </select>
-  <p style="clear:both;margin:0">&nbsp;</p>
-  <label class="block" for="package" style="clear:left">Package name:</label>
-  <input class="text" type="text" id="package" name="package"
-         value="com.example.android"
-         default="com.example.android"
-         onfocus="onInputFocus(this, 'com.example.android')"
-         onblur="onInputBlur(this, 'com.example.android')"
-         onkeyup="return onTextEntered(event, this.parentNode, this)"/>&nbsp;
-         <a id="package-clear" style="display:none" href="#"
-            onclick="return clearLabel('package','com.example.android');">clear</a>
-  <p style="clear:both;margin:0">&nbsp;<em>or</em></p>
-  <label class="block" style="margin-top:5px" for="publisher">Publisher&nbsp;name:</label>
-  <input class="text" type="text" id="publisher" name="publisher"
-         value="Example, Inc."
-         default="Example, Inc."
-         onfocus="onInputFocus(this, 'Example, Inc.')"
-         onblur="onInputBlur(this, 'Example, Inc.')"
-         onkeyup="return onTextEntered(event, this.parentNode, this)"/>&nbsp;
-         <a id="publisher-clear" style="display:none" href="#"
-            onclick="return clearLabel('publisher','Example, Inc.');">clear</a>
-         <br/><br/>
-
-
-<div class="button-row app">
-  <input type="radio" name="buttonStyle" value="_app_rgb_wo_45" id="ws" />
-    <label for="ws"><img src="{@docRoot}images/brand/en_app_rgb_wo_45.png"
-alt="Android app on Google Play (small)" /></label>
-    &nbsp;&nbsp;&nbsp;&nbsp;
-  <input type="radio" name="buttonStyle" value="_app_rgb_wo_60" id="wm" />
-    <label for="wm"><img src="{@docRoot}images/brand/en_app_rgb_wo_60.png"
-alt="Android app on Google Play (large)" /></label>
-</div>
-
-<div class="button-row">
-  <input type="radio" name="buttonStyle" value="_generic_rgb_wo_45" id="ns" checked="checked" />
-    <label for="ns"><img src="{@docRoot}images/brand/en_generic_rgb_wo_45.png"
-alt="Get it on Google Play (small)" /></label>
-    &nbsp;&nbsp;&nbsp;&nbsp;
-  <input type="radio" name="buttonStyle" value="_generic_rgb_wo_60" id="nm" />
-    <label for="nm"><img src="{@docRoot}images/brand/en_generic_rgb_wo_60.png"
-alt="Get it on Google Play (large)" /></label>
-</div>
-
-  <input class="button" onclick="return buildButton(this.parentNode);"
-    type="button" value="Build my badge" style="padding:10px" />
-  <br/>
-</form>
-
-<div id="preview" style="display:none">
-  <p>Copy and paste this HTML into your web site:</p>
-  <textarea id="snippet" cols="100" rows="5" onclick="this.select()"
-style="font-family:monospace;background-color:#efefef;padding:5px;display:none;margin-bottom:1em">
-  </textarea >
-
-<p>Test your badge:</p>
-<div id="button-preview" style="margin-top:1em"></div>
-</div>
-
diff --git a/docs/html/distribute/tools/promote/brand.jd b/docs/html/distribute/tools/promote/brand.jd
index cf83a5e..409dfdd 100644
--- a/docs/html/distribute/tools/promote/brand.jd
+++ b/docs/html/distribute/tools/promote/brand.jd
@@ -14,6 +14,12 @@
 href="https://support.google.com/googleplay/contact/brand_developer">Android and Google Play Brand Permissions Inquiry form</a> to submit your
 marketing for review.</p>
 
+<p>
+  If you need Google Play badges or guidelines, please see the
+  <a href="https://play.google.com/intl/en_us/badges/">Google Play Badge</a> page.
+</p>
+
+
 <h2 id="brand-android">Android</h2>
 
  <p>The following are guidelines for the Android brand
@@ -101,103 +107,10 @@
 
 <p>The custom typeface may not be used.</p>
 
-<p>The following are guidelines for the Google Play brand.</p>
-
-<h4>Google Play&#8482; Badges</h4>
-
-  <div style="float:right;clear:right;width:172px;margin-left:30px">
-    <img src="{@docRoot}images/brand/en_app_rgb_wo_60.png" alt="">
-    <p style="text-align:center">
-       <a href="{@docRoot}images/brand/en_app_rgb_wo_45.png">129x45</a> |
-       <a href="{@docRoot}images/brand/en_app_rgb_wo_60.png">172x60</a></p>
-  </div>
-
-  <div style="float:right;clear:right;width:172px;margin-left:30px">
-    <img src="{@docRoot}images/brand/en_generic_rgb_wo_60.png" alt="">
-    <p style="text-align:center">
-       <a href="{@docRoot}images/brand/en_generic_rgb_wo_45.png">129x45</a> |
-       <a href="{@docRoot}images/brand/en_generic_rgb_wo_60.png">172x60</a></p>
-  </div>
-
-  <p>Use the "Get it on Google Play" and "Android App on Google Play" badges on your website and
-  promotional materials to point to your products on Google Play. These badges are both available
-  in over 40 languages. Additional Google Play badge formats and
-    badges for music, books, magazines, movies, and TV shows are also available.
-    Use the  <a
-    href="https://support.google.com/googleplay/contact/brand_developer">Android
-    and Google Play Brand Permissions Inquiry form</a> to request
-    those badges.</p>
-
-  <p>Google Play badge guidelines:</p>
-  <ul>
-    <li>Don't modify the color, proportions, spacing, or any other aspect of the badge.</li>
-    <li>When used alongside logos for other application marketplaces, the Google Play badge
-    should be of equal or greater size.</li>
-    <li>When used online, the badge should link to either:</li>
-      <ul>
-        <li>A list of products published by you, for example:<br />
-        <span style="margin-left:1em;">http://play.google.com/store/search?q=<em>publisherName</em></span>
-        </li>
-        <li>A specific app product details page within Google Play, for example:<br />
-        <span style="margin-left:1em;">http://play.google.com/store/apps/details?id=<em>packageName</em></span>
-        </li>
-      </ul>
-    <li>You do not need to include a legal attribution if you are only using a Google Play badge.
-    However, keep in mind that:</li>
-     <ul>
-     <li>If you make any mention of Google Play or Android outside of the badge a legal attribution
-     must be included. </li>
-     <li>If you are including another app store’s legal attribution then include this legal
-     attribution:</li>
-      <ul>
-      <li>Google Play is a trademark of Google Inc.</li>
-      </ul>
-    </li>
-    <li>Use of the Google Play badge does not need to be reviewed or approved by the Google Play
-    brand team unless the marketing campaign will have over 1 million impressions.</li>
-  </ul>
-
-  <p>To quickly create a badge that links to your apps on Google Play,
-  use the <a
-  href="{@docRoot}distribute/tools/promote/badges.html">Google Play badge generator</a>
-  (badges available in over 40 languages).</p>
-
-  <p>For details on all the ways that you can link to your product details page in Google Play,
-    see <a href="{@docRoot}distribute/tools/promote/linking.html">Linking to your products</a>.</p>
-
-<h2 id="Marketing_Review">Google Play in Text</h2>
-
-<p>Any use of Google Play in text must be reviewed and approved by the Google Play brand team.
-Submit your marketing via the <a href="https://support.google.com/googleplay/contact/brand_developer">
-Android and Google Play Partner Brand Inquiry Form.</a></p>
-
-<p>Always include a ™ symbol on the first or most prominent instance of Google Play™ in text.</p>
-
-<p>When mentioning that a product is available on Google Play always say “on Google Play”</p>
-
-<ul>
-<li><span style="color:red">Incorrect</span>: Our app is now available from Google Play.</li>
-<li><span style="color:green">Correct</span>: Our app is now available on Google Play.</li>
-</ul>
-<br>
-<p>Only refer to Google Play as the Google Play™ store app in instructional text meant to inform a
-customer about how to find or download your product on Google Play.</p>
-
-<ul>
-<li><span style="color:red">Incorrect</span>:  Download our games using the Google Play™ store app.</li>
-<li><span style="color:green">Correct</span>: This is how you download our app using the Google
-Play™ store app.</li>
-</ul>
-<br>
-
-<p>Any use of the Google Play name in your marketing or communications needs to be accompanied by
-this legal attribution:</p>
-
-<p><em>Google Play is a trademark of Google Inc.</em></p>
 
 <h2 id="Marketing_Review">Marketing Reviews and Brand Inquiries</h2>
 
 <p>Use the <a
 href="https://support.google.com/googleplay/contact/brand_developer">Android
 and Google Play Brand Permissions Inquiry form</a> to submit any marketing
-reviews or brand inquires. Typical response time is at least one week.</p>
\ No newline at end of file
+reviews or brand inquires. Typical response time is at least one week.</p>
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/land_back.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/land_back.png
new file mode 100644
index 0000000..6407fbe
--- /dev/null
+++ b/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/land_back.png
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/land_fore.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/land_fore.png
new file mode 100644
index 0000000..b831f48
--- /dev/null
+++ b/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/land_fore.png
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/land_shadow.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/land_shadow.png
new file mode 100644
index 0000000..79b5930
--- /dev/null
+++ b/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/land_shadow.png
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/port_back.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/port_back.png
new file mode 100644
index 0000000..33691b2
--- /dev/null
+++ b/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/port_back.png
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/port_fore.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/port_fore.png
new file mode 100644
index 0000000..c227a92
--- /dev/null
+++ b/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/port_fore.png
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/port_shadow.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/port_shadow.png
new file mode 100644
index 0000000..3a19d6f
--- /dev/null
+++ b/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/port_shadow.png
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/thumb.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/thumb.png
new file mode 100644
index 0000000..4f56fee
--- /dev/null
+++ b/docs/html/distribute/tools/promote/device-art-resources/nexus_5x/thumb.png
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/land_back.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/land_back.png
new file mode 100644
index 0000000..3495b13
--- /dev/null
+++ b/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/land_back.png
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/land_fore.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/land_fore.png
new file mode 100644
index 0000000..e8c7413
--- /dev/null
+++ b/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/land_fore.png
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/land_shadow.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/land_shadow.png
new file mode 100644
index 0000000..e88906b
--- /dev/null
+++ b/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/land_shadow.png
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/port_back.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/port_back.png
new file mode 100644
index 0000000..9c311fd
--- /dev/null
+++ b/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/port_back.png
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/port_fore.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/port_fore.png
new file mode 100644
index 0000000..442ab87
--- /dev/null
+++ b/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/port_fore.png
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/port_shadow.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/port_shadow.png
new file mode 100644
index 0000000..4b4e526
--- /dev/null
+++ b/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/port_shadow.png
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/thumb.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/thumb.png
new file mode 100644
index 0000000..5ef0098
--- /dev/null
+++ b/docs/html/distribute/tools/promote/device-art-resources/nexus_6p/thumb.png
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/land_back.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/land_back.png
deleted file mode 100644
index 697fb7d..0000000
--- a/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/land_back.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/land_fore.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/land_fore.png
deleted file mode 100644
index 735262f..0000000
--- a/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/land_fore.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/land_shadow.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/land_shadow.png
deleted file mode 100644
index cfb7952..0000000
--- a/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/land_shadow.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/port_back.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/port_back.png
deleted file mode 100644
index 5bb815a..0000000
--- a/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/port_back.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/port_fore.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/port_fore.png
deleted file mode 100644
index 1be3b21..0000000
--- a/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/port_fore.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/port_shadow.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/port_shadow.png
deleted file mode 100644
index 7e8aff2..0000000
--- a/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/port_shadow.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/thumb.png b/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/thumb.png
deleted file mode 100644
index b5db82e..0000000
--- a/docs/html/distribute/tools/promote/device-art-resources/nexus_7_2012/thumb.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/distribute/tools/promote/device-art.jd b/docs/html/distribute/tools/promote/device-art.jd
index d321074..9b4dd14 100644
--- a/docs/html/distribute/tools/promote/device-art.jd
+++ b/docs/html/distribute/tools/promote/device-art.jd
@@ -186,7 +186,7 @@
     {
       id: 'nexus_5',
       title: 'Nexus 5',
-      url: 'http://www.google.com/nexus/5/',
+      url: 'https://www.google.com/nexus/5/',
       physicalSize: 5,
       physicalHeight: 5.43,
       density: 'XXHDPI',
@@ -195,11 +195,25 @@
       portRes: ['shadow', 'back', 'fore'],
       portOffset: [304,436],
       portSize: [1080,1920],
+      archived: true
+    },
+    {
+      id: 'nexus_5x',
+      title: 'Nexus 5X',
+      url: 'https://www.google.com/nexus/5x/',
+      physicalSize: 5.2,
+      physicalHeight: 5.625,
+      density: '420DPI',
+      landRes: ['shadow', 'back', 'fore'],
+      landOffset: [485,313],
+      portRes: ['shadow', 'back', 'fore'],
+      portOffset: [305,485],
+      portSize: [1080,1920],
     },
     {
       id: 'nexus_6',
       title: 'Nexus 6',
-      url: 'http://www.google.com/nexus/6/',
+      url: 'https://www.google.com/nexus/6/',
       physicalSize: 6,
       physicalHeight: 6.27,
       density: '560DPI',
@@ -207,7 +221,21 @@
       landOffset: [489,327],
       portRes: ['shadow', 'back', 'fore'],
       portOffset: [327,489],
-      portSize: [1440, 2560],
+      portSize: [1440, 2560], 
+      archived: true
+    },
+    {
+      id: 'nexus_6p',
+      title: 'Nexus 6P',
+      url: 'https://www.google.com/nexus/6p/',
+      physicalSize: 5.7,
+      physicalHeight: 6.125,
+      density: '560DPI',
+      landRes: ['shadow', 'back', 'fore'],
+      landOffset: [579,321],
+      portRes: ['shadow', 'back', 'fore'],
+      portOffset: [312,579],
+      portSize: [1440, 2560]
     },
     {
       id: 'nexus_7',
@@ -221,12 +249,13 @@
       landOffset: [326,245],
       portRes: ['shadow', 'back', 'fore'],
       portOffset: [244,326],
-      portSize: [800,1280]
+      portSize: [800,1280],
+      archived: true
     },
     {
       id: 'nexus_9',
       title: 'Nexus 9',
-      url: 'http://www.google.com/nexus/9/',
+      url: 'https://www.google.com/nexus/9/',
       physicalSize: 9,
       physicalHeight: 8.98,
       actualResolution: [1536,2048],
@@ -240,7 +269,7 @@
     {
       id: 'nexus_10',
       title: 'Nexus 10',
-      url: 'http://www.google.com/nexus/10/',
+      url: 'https://www.google.com/nexus/10/',
       physicalSize: 10,
       physicalHeight: 7,
       actualResolution: [1600,2560],
@@ -253,23 +282,9 @@
       archived: true
     },
     {
-      id: 'nexus_7_2012',
-      title: 'Nexus 7 (2012)',
-      url: 'http://www.google.com/nexus/7/',
-      physicalSize: 7,
-      physicalHeight: 7.81,
-      density: '213dpi',
-      landRes: ['shadow', 'back', 'fore'],
-      landOffset: [315,270],
-      portRes: ['shadow', 'back', 'fore'],
-      portOffset: [264,311],
-      portSize: [800,1280],
-      archived: true
-    },
-    {
       id: 'nexus_4',
       title: 'Nexus 4',
-      url: 'http://www.google.com/nexus/4/',
+      url: 'https://www.google.com/nexus/4/',
       physicalSize: 4.7,
       physicalHeight: 5.27,
       density: 'XHDPI',
@@ -283,7 +298,7 @@
     {
       id: 'wear',
       title: 'Android Wear',
-      url: 'http://www.android.com/wear/',
+      url: 'https://www.android.com/wear/',
       physicalSize: 1.8,
       physicalHeight: 1.8,
       density: 'HDPI',
@@ -296,7 +311,7 @@
     {
       id: 'wear_square',
       title: 'Android Wear Square',
-      url: 'http://www.android.com/wear/',
+      url: 'https://www.android.com/wear/',
       physicalSize: 1.8,
       physicalHeight: 1.8,
       density: 'HDPI',
@@ -310,7 +325,7 @@
     {
       id: 'wear_round',
       title: 'Android Wear Round',
-      url: 'http://www.android.com/wear/',
+      url: 'https://www.android.com/wear/',
       physicalSize: 1.8,
       physicalHeight: 1.8,
       density: 'HDPI',
diff --git a/docs/html/distribute/users/_book.yaml b/docs/html/distribute/users/_book.yaml
new file mode 100644
index 0000000..0febb02
--- /dev/null
+++ b/docs/html/distribute/users/_book.yaml
@@ -0,0 +1,33 @@
+toc:
+- title: Create a Great Listing
+  path: /distribute/users/your-listing.html
+
+- title: Promote with Ads
+  path: /distribute/users/promote-with-ads.html
+
+- title: Drive Installs from Search
+  path: /distribute/users/appindexing.html
+
+- title: Expand to New Markets
+  path: /distribute/users/expand-to-new-markets.html
+
+- title: Offer Over-the-air Installs
+  path: /distribute/users/ota-installs.html
+
+- title: Smarter App Invites
+  path: /distribute/users/app-invites.html
+
+- title: Drive installs from YouTube
+  path: /distribute/users/youtube.html
+
+- title: Cross-Sell with House Ads
+  path: /distribute/users/house-ads.html
+
+- title: Increase installs with Store Listing Experiments
+  path: /distribute/users/experiments.html
+
+- title: Add an App Install Banner On Your Mobile Website
+  path: /distribute/users/banners.html
+
+- title: Understand Where Your Users Come From
+  path: /distribute/users/user-acquisition.html
diff --git a/docs/html/distribute/users/appindexing.jd b/docs/html/distribute/users/appindexing.jd
deleted file mode 100644
index 04114e3..0000000
--- a/docs/html/distribute/users/appindexing.jd
+++ /dev/null
@@ -1,47 +0,0 @@
-page.title=Drive installs from Google Search
-page.metaDescription=Surface the content of your apps in Google Search and link it to app installs.
-meta.tags="getusers", "search", "appindexing"
-page.tags="app indexing", "search", "get users"
-page.image=images/cards/google-search_2x.png
-@jd:body
-
-<p>Google Search now helps users discover your app, with App Indexing. When users
-search with Google on their Android device the results will include details of
-relevant, indexed apps. The search results will include an install button that
-takes users to your app in the Google Play store. And when your app is
-installed, the user will be taken straight to the right content within it.</p>
-
-<div class="figure-left">
-<img src="{@docRoot}images/distribute/appindexing.gif">
-</div>
-
-<p>This free service expands your opportunities to turn the investment you’ve made
-in creating an outstanding app or game into installs. </p>
-
-<p>Start now by adding deep linking support to your app, verifying your app’s
-official website, and defining deep links. To learn how, check out these <a
-href="https://developers.google.com/app-indexing/webmasters/details">instructions</a>. </p>
-
-<p>Once your app is index, links to its content will join the 30 billion app index
-links already available to Google Search.</p>
-
-<h2 id=tips>Tips</h2>
-
-<ul>
-  <li> App Indexing will also be used as a ranking signal for all users on Android,
-regardless of whether they have your app installed or not. 
-  <li> App Indexing also helps drive use of your app — when your app is installed on a
-user’s device, search results will include deep links to your app that bring
-the user straight to the relevant app content.
-  <li> Use the App Indexing API to help users discover relevant content in your app
-before they complete a query with auto-completions.
-</ul>
-
-<h2 id=related_resources>Related resources</h2>
-
-<div class="resource-widget resource-flow-layout col-13"
-  data-query="collection:distribute/users/appindexing"
-  data-sortOrder="-timestamp"
-  data-cardSizes="9x3"
-  data-maxResults="6"></div>
-
diff --git a/docs/html/distribute/users/banners.jd b/docs/html/distribute/users/banners.jd
new file mode 100644
index 0000000..d889ac7
--- /dev/null
+++ b/docs/html/distribute/users/banners.jd
@@ -0,0 +1,64 @@
+page.title=Add An App Install Banner On Your Mobile Website
+page.metaDescription=Add a native app install banner to your mobile website and allow visitors to install your app straight from your site.
+page.image=images/cards/card-install-banners_16x9_2x.png
+page.tags="banner, chrome, web"
+Xnonavpage=true
+
+@jd:body
+
+<!--
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol>
+      <li>TOC item</li>
+    </ol>
+  </div>
+</div>
+-->
+
+<div class="figure" style="width:138px">
+  <img src="{@docRoot}images/distribute/users/banners.png"
+    srcset="{@docRoot}images/distribute/users/banners.png 1x,
+        {@docRoot}images/distribute/users/banners_2x.png 2x"
+    width="138">
+</div>
+
+<p>
+  Add a native app install banner to your mobile website and offer visitors the
+  added convenience of installing your app or game straight from your site.
+</p>
+
+<p>
+  Learn how to <a href=
+  "https://developers.google.com/web/updates/2015/03/increasing-engagement-with-app-install-banners-in-chrome-for-android#native"
+  class="external-link">add a native app install banner</a> to your mobile
+  site.
+</p>
+
+<h3 id="how">How it Works</h3>
+
+<p>
+  App install banners are offered as an extension of Chrome’s ability to
+  deliver Web App install banners. You can setup this feature in a web app
+  manifest file. In the manifest you define how your app will appear on the
+  user’s system, how it should be launched, and whether its banner has priority
+  over the banner for your Web App. Then, as long as your site is delivered
+  over HTTPS, after a user visits your site on two separate days within a two
+  week period they’ll be shown your app’s install banner.
+</p>
+
+<p style="clear:both">
+</p>
+
+<div class="dynamic-grid">
+<div class="headerLine">
+<h2 id="related-resources">Related Resources</h2>
+</div>
+
+<div class="resource-widget resource-flow-layout col-13"
+  data-query="collection:distribute/googleplay/banners/related"
+  data-sortOrder="-timestamp"
+  data-cardSizes="9x3"
+  data-maxResults="6"></div>
+  </div>
diff --git a/docs/html/distribute/users/build-community.jd b/docs/html/distribute/users/build-community.jd
deleted file mode 100644
index 23b9d88..0000000
--- a/docs/html/distribute/users/build-community.jd
+++ /dev/null
@@ -1,183 +0,0 @@
-page.title=Build Community
-page.metaDescription=Build a loyal following with great support and communication.
-page.tags="users, growth, community"
-page.image=/images/cards/card-build-community_16-9_2x.png
-
-@jd:body
-
-
-<p>
-  Fans of your apps love to help others, turn newer users into fans, and bring
-  you more users as they talk about your app. Building a community can help you
-  tap into those influencers to help you improve your app and provide support
-  to others.
-</p>
-
-<div class="figure">
-  <img src="{@docRoot}images/cards/card-build-community_16-9_2x.png">
-</div>
-
-<p>
-  Building your own community can help you bring content that will delight
-  users and get them talking about your apps to friends, family and others in
-  their social network.
-</p>
-
-<div class="headerLine">
-  <h2 id="starting-your-community">
-  Starting Your Community
-  </h2>
-
-
-</div>
-
-<p>
-  In conjunction with your apps’ design and development, you should start
-  defining and building your community infrastructure. There’s no one approach
-  that fits all, and the approach for each of your apps may need to be a little
-  different. You should start by thinking about your potential users and asking
-  questions such as:
-</p>
-
-<ul>
-  <li>
-  <p>
-    How will my users prefer to interact? Game users may prefer a modern feed
-    style community, users of a financial management app a more traditional
-    discussion forum.
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Should I have a community for all my apps or should each app have its
-    own? Will users be turned off if the community isn’t just about the app
-    that interests them or can I make it a way to turn them onto my other
-    apps?
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Will different countries or territories, or speakers of particular
-    languages need separate forums? How will I handle feedback in languages I
-    don’t know?
-  </p>
-  </li>
-
-  <li>
-  <p>
-    Do I need any additional policies beyond those governing the tool used to
-    host the community?
-  </p>
-  </li>
-</ul>
-
-<p>
-  Any way you do it, starting your community early helps you build momentum as
-  you turn happy users into influencers.
-</p>
-
-<p>
-  Consider inviting your existing users through a rich notification or an
-  opt-in on your website. Don’t overlook inviting your critics too. If you have
-  been able to address their earlier issues you may convert them into
-  supporters — it’s not unknown for your harshest critics to become your most
-  enthusiastic fans if you address their concerns.
-</p>
-
-<p>
-  When you use the <a href=
-  "{@docRoot}distribute/googleplay/developer-console.html#alpha-beta">beta-testing
-  feature</a> in Google Play, you’ll create a testers group through a <a href=
-  "https://support.google.com/groups/answer/46601">Google Group</a> or <a href=
-  "https://support.google.com/plus/topic/2888488">Google+ Community</a> to
-  define who gets your software for testing. Consider managing these groups as
-  communities in their own right.
-</p>
-
-<div class="headerLine">
-  <h2 id="tools-to-build-your-community">
-  Tools to Build Your Community
-  </h2>
-
-
-</div>
-
-<p>
-  There are many tools you can use to build your community. Before you launch,
-  inviting <a href="http://www.google.com/+/business/">Google+</a> users or
-  <a href="https://support.google.com/groups/answer/46601?hl=en">Google
-  Groups</a> to <a href=
-  "{@docRoot}distribute/googleplay/developer-console.html#alpha-beta">beta-test</a>
-  your app can help you kickstart your community while you listen to and
-  respond to your user feedback.
-</p>
-
-<p>
-  Once you’ve launched, your Google+ or other social media presence can help
-  you continue to gather feedback, answer questions, and get input on updates.
-  Use social media to get the conversation started. Post updates to your
-  followers, announce new apps, and host contests. Ask followers to re-post so
-  that they bring new users into the conversation. Fans love to profess their
-  passion for great apps, so be sure to give them plenty of reason to do so.
-</p>
-
-<p>
-  Forums like <a href=
-  "https://support.google.com/groups/answer/46601?hl=en">Google Groups</a> are
-  particularly well suited to help you and your users provide support to
-  others. By helping out your community, you’re building your fan base who will
-  share their experiences with other prospective customers.
-</p>
-
-<p>
-  Respond to comments and reviews on both your product details page on Google
-  Play and <a href="http://youtube.com">YouTube</a> pages. Prospective
-  customers are influenced by reviews and comments, so be sure to manage your
-  brand in every channel you can.
-</p>
-
-<div class="headerLine">
-  <h2 id="managing-your-community">
-  Managing Your Community
-  </h2>
-
-
-</div>
-
-<div class="figure">
-  <img src="{@docRoot}images/gp-community-0.png">
-</div>
-
-<p>
-  Engaged users want you to succeed. Let them know you’re listening! Responding
-  to posts, comments, and other social media mentions improves your ratings by
-  letting users know you care.
-</p>
-
-<p>
-  Update the product based on user feedback and announce new releases. Users
-  often change their original star ratings after feeling heard, inspiring more
-  users to install your apps.
-</p>
-
-<p>
-  There are many ways to make your community feel special. Consider polls to
-  let users influence product updates. Use competitions to inspire and reward
-  your community. Giving a special <em>member of the week</em> badge is an easy
-  way to recognize those that help others. Or get users involved in testing new
-  versions or new apps to make them feel special.
-</p>
-
-<div class="headerLine">
-  <h2 id="related-resources">
-  Related Resources
-  </h2>
-
-</div>
-<div class="resource-widget resource-flow-layout col-13"
-  data-query="collection:distribute/users/buildcommunity"
-  data-sortOrder="-timestamp"
-  data-cardSizes="9x3"
-  data-maxResults="6"></div>
\ No newline at end of file
diff --git a/docs/html/distribute/users/experiments.jd b/docs/html/distribute/users/experiments.jd
new file mode 100644
index 0000000..215d3a2
--- /dev/null
+++ b/docs/html/distribute/users/experiments.jd
@@ -0,0 +1,121 @@
+page.title=Increase installs with Store Listing Experiments
+page.metaDescription=Run experiments to find the best possible Play Store listing page.
+page.image=images/cards/distribute/users/experiments.png
+page.tags="ab testing, experiments, testing"
+Xnonavpage=true
+
+@jd:body
+
+<p>
+  First impressions matter, so having the best possible Play Store listing page
+  for your app is vital. Store Listing Experiments let you test combinations of
+  text and graphics to find the ones that bring you the most installs.
+</p>
+
+<img src="{@docRoot}images/distribute/googleplay/hero-store-listing-experiment.png"
+  srcset="{@docRoot}images/distribute/googleplay/hero-store-listing-experiment.png 1x,
+      {@docRoot}images/distribute/googleplay/hero-store-listing-experiment_2x.png 2x"
+ width="460">
+
+<p>
+  Learn how to <a href=
+  "https://support.google.com/googleplay/android-developer/answer/6227309"
+  class="external-link">get started with Store Listing Experiments.</a>
+</p>
+
+<h3 id="planning">Tips for planning a successful experiment</h3>
+<ul>
+  <li>Make sure that you have a question or objective in mind when designing
+  your experiments.
+  </li>
+
+  <li>Test one attribute at a time to get the clearest results, but test
+  similar changes in icons and feature graphics together, for example comparing
+  use of character art against objects from a game.
+  </li>
+
+  <li>Start testing with your app icon, because it can have a huge impact on
+  whether users pick your app from search results and category lists.
+  </li>
+
+  <li>Test all of your listing’s attributes; after icons, test screenshots and
+  short descriptions as they are seen by users from search results and category
+  lists. Test the feature graphic as a priority, as it has such a presence on
+  your store listing’s page.
+  </li>
+</ul>
+
+<h3 id="graphics">Tips for your graphics and text</h3>
+<ul>
+  <li>Create up to three alternatives for your hi-res icon, feature graphic,
+  screenshots, promo video, short description, and full description.
+  </li>
+
+  <li>Set up a Global experiment for graphics against your default language or
+  a Localized experiment for both text and graphics in a specific language.
+  Experiment with screenshots and their order.
+  </li>
+
+  <li>Be bold about testing different artwork, but iterate on the results to
+  confirm and improve your findings.
+  </li>
+
+  <li>Make sure short descriptions clearly demonstrate an app or game’s value
+  to users.
+  </li>
+</ul>
+
+<h3 id="success">Tips for running successful experiments</h3>
+<ul>
+  <li>Test one asset at a time, unless testing completely different designs for
+  a store listing page against one another.
+  </li>
+
+  <li>Run your experiment for at least 7 days, even if you have enough traffic
+  to get meaningful results in a few days. Depending on the percentage of your
+  audience you’re showing the experiment too and the traffic on your listings
+  page it may take anything from a few days to several weeks to get a
+  result.
+  </li>
+
+  <li>Run your experiments with 50 percent of your audience, the maximum
+  allowed, to get results faster; particularly for localized tests that may be
+  visible to only a small percentage of your users.
+  </li>
+
+  <li>Check the banner on the Experiments page to see progress. Once enough
+  data has been collected the winner is displayed and you can apply it to your
+  store listing.
+  </li>
+</ul>
+
+<p style="clear:both">
+</p>
+
+<!-- TBA
+<div class="dynamic-grid">
+<div class="headerLine">
+<h2 id="successes">See how other developers have successfully run Store
+  Listing Experiments
+</h2>
+</div>
+
+<div class="resource-widget resource-flow-layout col-13"
+  data-query="collection:distribute/googleplay/experiments/successes"
+  data-sortOrder="-timestamp"
+  data-cardSizes="9x3"
+  data-maxResults="9"></div>
+  </div>
+-->
+
+<div class="dynamic-grid">
+<div class="headerLine">
+<h2 id="related-resources">Related Resources</h2>
+</div>
+
+<div class="resource-widget resource-flow-layout col-13"
+  data-query="collection:distribute/googleplay/experiments/related"
+  data-sortOrder="-timestamp"
+  data-cardSizes="6x6"
+  data-maxResults="6"></div>
+  </div>
diff --git a/docs/html/distribute/users/promote-with-ads.jd b/docs/html/distribute/users/promote-with-ads.jd
index f0e3256..2db4ca3 100644
--- a/docs/html/distribute/users/promote-with-ads.jd
+++ b/docs/html/distribute/users/promote-with-ads.jd
@@ -29,10 +29,8 @@
       </h3>
       <img src="/images/distribute/promote_ads_play.png">
       <p class="figure-caption">
-        Search ads on Google Play are still undergoing testing and not yet
-        available to buy. <a href=
-        "http://android-developers.blogspot.com/2015/02/a-new-way-to-promote-your-app-on-google.html">
-        Find out more</a>.
+        Promote your app on Google Play when users are searching and browsing
+        for apps.
       </p>
     </div>
 
diff --git a/docs/html/distribute/users/user-acquisition.jd b/docs/html/distribute/users/user-acquisition.jd
new file mode 100644
index 0000000..3f073f5
--- /dev/null
+++ b/docs/html/distribute/users/user-acquisition.jd
@@ -0,0 +1,102 @@
+page.title=Understand Where Your Users Come From
+page.metaDescription=Use the Developer Console to identify the channels that bring the greatest volume of high-value users.
+page.image=images/cards/distribute/users/user-acquisition.jpg
+page.tags="user acquisition, reports, cohorts"
+Xnonavpage=true
+
+@jd:body
+
+<!--
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol>
+      <li>TOC item</li>
+    </ol>
+  </div>
+</div>
+-->
+
+<p>
+  Whether you pay to acquire users or not, you want to focus your acquisition
+  efforts on the channels that bring you the greatest volume of high-value
+  users. It’s now easy to identify those channels from the User Acquisition
+  page in the Developer Console.
+</p>
+
+<img src="{@docRoot}images/distribute/googleplay/dev-console_conversion-funnel.png"
+  srcset="{@docRoot}images/distribute/googleplay/dev-console_conversion-funnel.png 1x,
+      {@docRoot}images/distribute/googleplay/dev-console_conversion-funnel_2x.png 2x"
+ width="500">
+
+<p>
+  From the performance report you can follow users — whether originating as
+  organic or paid traffic — from discovery to installation then onto their
+  purchase of your in-app products, with convenient predefined reporting
+  criteria. With the improved understanding of where your most valuable users
+  come from, you can better focus your efforts.
+</p>
+
+<p>
+  Learn more about how to <a href=
+  "https://support.google.com/googleplay/android-developer/answer/6263332"
+  class="external-link">measure your app’s user acquisition channels.</a>
+</p>
+
+<h2 id="how-to">How to use the User Acquisition performance report</h2>
+
+<ul>
+  <li>
+    <strong>Compare cohorts:</strong> In this report, a <em>cohort</em> is a
+    group of users who’ve visited your app’s store listing during a selected
+    date range. For example, if you update your app’s icon on the Play Store,
+    you’ll want to see how the change affects installs and in-app purchases.
+    You can do this by selecting cohorts before and after your app update, and
+    measure how your change impacted conversion rates.
+  </li>
+
+  <li>
+    <strong>Examine acquisition channels:</strong> For your defined cohort, you
+    can explore how user behaviour and value differ between acquisition
+    channels, such as organic Play Store traffic, AdWords campaigns, tracked
+    channels, and searches. Drill down into specific channels to explore user
+    behaviour in detail.
+  </li>
+
+  <li>
+    <strong>See users:</strong> Get stats for all the <strong>store listing
+    visitors</strong> (users who visited your app’s store listing) and
+    <strong>installers</strong>. This helps you understand how prospects are
+    converting into users.
+  </li>
+
+  <li>
+    <strong>See buyers:</strong> If you sell in-app products, the funnel report
+    can also tell you about <strong>new buyers</strong> and <strong>repeat
+    buyers</strong>. This helps you understand how quickly your in-app products
+    and subscriptions are gaining traction with users.
+  </li>
+</ul>
+
+<p class="aside">
+  <strong>Tip:</strong> If you’re directing your users to your mobile app from
+  your website, you can track conversions by adding a UTM campaign source and a
+  campaign name tag to the <a href=
+  "https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#google-play-url-builder"
+  class="external-link">Google Play store URL.</a>
+</p>
+
+<p style="clear:both">
+</p>
+
+<div class="dynamic-grid">
+<div class="headerLine">
+<h2 id="related-resources">Related Resources</h2>
+</div>
+
+<div class="resource-widget resource-flow-layout col-13"
+  data-query="collection:distribute/googleplay/useracquisition/related"
+  data-sortOrder="-timestamp"
+  data-cardSizes="9x3"
+  data-maxResults="6"></div>
+  </div>
diff --git a/docs/html/distribute/users/users_toc.cs b/docs/html/distribute/users/users_toc.cs
index 1e4085b..f84c926 100644
--- a/docs/html/distribute/users/users_toc.cs
+++ b/docs/html/distribute/users/users_toc.cs
@@ -47,6 +47,26 @@
         </a>
     </div>
   </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/users/experiments.html">
+          <span class="en">Increase installs with Store Listing Experiments</span>
+        </a>
+    </div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/users/banners.html">
+          <span class="en">Add an App Install Banner On Your Mobile Website</span>
+        </a>
+    </div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/users/user-acquisition.html">
+          <span class="en">Understand Where Your Users Come From</span>
+        </a>
+    </div>
+  </li>
+
 </ul>
 
 
diff --git a/docs/html/google/_book.yaml b/docs/html/google/_book.yaml
new file mode 100644
index 0000000..01efa4f
--- /dev/null
+++ b/docs/html/google/_book.yaml
@@ -0,0 +1,78 @@
+toc:
+- title: Google Play In-app Billing
+  path: /google/play/billing/index.html
+  custom_link_attributes:
+  - zh-cn-lang="应用内结算"
+  section:
+  - title: Overview
+    path: /google/play/billing/billing_overview.html
+    custom_link_attributes:
+    - zh-cn-lang="应用内结算概述"
+  - title: Version 3 API
+    path: /google/play/billing/api.html
+    custom_link_attributes:
+    - zh-cn-lang="应用内结算 API"
+    section:
+    - title: Implementing the API
+      path: /google/play/billing/billing_integrate.html
+    - title: Reference
+      path: /google/play/billing/billing_reference.html
+  - title: Subscriptions
+    path: /google/play/billing/billing_subscriptions.html
+  - title: Promotions
+    path: /google/play/billing/billing_promotions.html
+  - title: Security and Design
+    path: /google/play/billing/billing_best_practices.html
+    custom_link_attributes:
+    - zh-cn-lang="安全性和设计"
+  - title: Testing In-app Billing
+    path: /google/play/billing/billing_testing.html
+    custom_link_attributes:
+    - zh-cn-lang="测试应用内结算"
+  - title: Administering In-app Billing
+    path: /google/play/billing/billing_admin.html
+    custom_link_attributes:
+    - zh-cn-lang="管理应用内结算"
+  - title: Version Notes
+    path: /google/play/billing/versions.html
+
+- title: Filters on Google Play
+  path: /google/play/filters.html
+  custom_link_attributes:
+  - es-lang="Filtros en Google Play"
+  - ja-lang="Google Play 上のフィルタ"
+  - ko-lang="Google Play 필터"
+  - pt-br-lang="Filtros no Google Play"
+  - ru-lang="Фильтры в Google Play"
+  - zh-cn-lang="Google Play 上的筛选器"
+  - zh-tw-lang="Google Play 上的篩選器"
+
+- title: Google Play Developer API
+  path: /google/play/developer-api.html
+
+- title: Advertising ID
+  path: /google/play-services/id.html
+
+- title: Multiple APK Support
+  path: /google/play/publishing/multiple-apks.html
+
+- title: APK Expansion Files
+  path: /google/play/expansion-files.html
+
+- title: Application Licensing
+  path: /google/play/licensing/index.html
+  section:
+  - title: Licensing Overview
+    path: /google/play/licensing/overview.html
+  - title: Setting Up for Licensing
+    path: /google/play/licensing/setting-up.html
+  - title: Adding Licensing to Your App
+    path: /google/play/licensing/adding-licensing.html
+  - title: Licensing Reference
+    path: /google/play/licensing/licensing-reference.html
+
+- title: Android Backup Service
+  path: /google/backup/index.html
+  section:
+  - title: Register
+    path: /google/backup/signup.html
diff --git a/docs/html/google/backup/signup.jd b/docs/html/google/backup/signup.jd
index f9ad600..598003d 100644
--- a/docs/html/google/backup/signup.jd
+++ b/docs/html/google/backup/signup.jd
@@ -208,7 +208,7 @@
 <input id="pname" type="text" name="pname" size="47" value="" onkeyup="onFormInput()"
 onfocus="boxFocusChanged(this,true)" onblur="boxFocusChanged(this,false)"/>
 </p>
-<p><a href="" class="button disabled" id="registerButton" 
+<p><a href="" class="dac-button dac-raised dac-primary disabled ndk" id="registerButton" 
 onclick="onRegister(); return false;" >Register with Android Backup Service</a></p>
 </div>
 
diff --git a/docs/html/google/google_toc.cs b/docs/html/google/google_toc.cs
index ffdc22d..e5d8c13 100644
--- a/docs/html/google/google_toc.cs
+++ b/docs/html/google/google_toc.cs
@@ -17,20 +17,13 @@
               <span class="en">Reference</span></a></li>
               </ul>
       </li>
-      <li class="nav-section"><div class="nav-section-header"><a href="<?cs var:toroot?>google/play/billing/v2/api.html">
-              <span class="en">Version 2 API</span></a></div>
-              <ul>
-              <li><a href="<?cs var:toroot?>google/play/billing/v2/billing_integrate.html">
-              <span class="en">Implementing the API</span></a></li>
-              <li><a href="<?cs var:toroot?>google/play/billing/v2/billing_subscriptions.html">
-              <span class="en">Subscriptions</span></a></li>
-              <li><a href="<?cs var:toroot?>google/play/billing/v2/billing_reference.html">
-              <span class="en">Reference</span></a></li>
-              </ul>
-      </li>
+
       <li><a href="<?cs var:toroot?>google/play/billing/billing_subscriptions.html">
               <span class="en">Subscriptions</span></a>
       </li>
+      <li><a href="<?cs var:toroot?>google/play/billing/billing_promotions.html">
+              <span class="en">Promotions</span></a>
+      </li>
       <li><a href="<?cs var:toroot?>google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
               <span class="en">Security and Design</span></a>
       </li>
@@ -64,6 +57,11 @@
               <span class="en">Google Play Developer API</span></a>
       </div>
   </li>
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="<?cs var:toroot?>google/play-services/id.html">
+              <span class="en">Advertising ID</span></a>
+      </div>
+  </li>
     <li class="nav-section">
   <div class="nav-section-header empty"><a href="<?cs var:toroot ?>google/play/publishing/multiple-apks.html">
           <span class="en">Multiple APK Support</span></a>
diff --git a/docs/html/google/index.jd b/docs/html/google/index.jd
index a2a6c50..b3ceee3 100644
--- a/docs/html/google/index.jd
+++ b/docs/html/google/index.jd
@@ -39,12 +39,13 @@
   </a>
 </div>
 
-<section class="dac-section dac-gray dac-small dac-invert" id="latest"><div class="wrap">
+<section class="dac-section dac-gray dac-small" id="latest"><div class="wrap">
   <h2 class="norule">Latest</h2>
   <div class="resource-widget resource-flow-layout col-16"
        data-query="type:blog+tag:googleservices+tag:featured"
        data-cardSizes="6x6"
-       data-maxResults="12"
+       data-maxResults="15"
+       data-items-per-page="6"
        data-initial-results="3"></div>
   </div>
 </section>
@@ -68,7 +69,7 @@
   </div>
 </section>
 
-<section class="dac-section dac-gray dac-small dac-invert" id="videos"><div class="wrap">
+<section class="dac-section dac-gray dac-small" id="videos"><div class="wrap">
   <h2 class="norule">Videos</h2>
   <div class="resource-widget resource-flow-layout col-16"
        data-query="collection:google/landing/videos"
diff --git a/docs/html/google/play-services/id.jd b/docs/html/google/play-services/id.jd
new file mode 100644
index 0000000..f95ebef
--- /dev/null
+++ b/docs/html/google/play-services/id.jd
@@ -0,0 +1,193 @@
+page.title=Advertising ID
+page.tags=Ads,Advertising ID,ID
+
+@jd:body
+<div class="landing-banner">
+
+<div class="col-8">
+<p itemprop="description">
+  The advertising ID is a user-specific, unique, resettable ID for advertising,
+  provided by Google Play services. It gives users better controls and provides
+  developers with a simple, standard system to continue to monetize your apps.
+  It is an anonymous identifier for advertising purposes and enables users to
+  reset their identifier or opt out of interest-based ads within Google Play
+  apps.
+</p>
+<p>
+  The advertising ID is accessible through a straightforward API that you can
+  implement in your apps. For details, take a look at the <a href=
+  "#get_started">overview</a> and the <a href=
+  "https://developers.google.com/android/reference/com/google/android/gms/ads/identifier/package-summary">
+  advertising ID API reference</a>.
+</p>
+</div>
+</div>
+<div class="landing-docs">
+  <div class="col-6 normal-links">
+    <h3 style="clear:left">Key Developer Features</h3>
+      <h4>Standard, simple ID</h4>
+      <p>The advertising ID is a part of a standard, simple system for serving ads and performing analytics.</p>
+      <h4>Giving users control</h4>
+      <p>Users  can reset their advertising ID or opt out of interest-based ads at any time, right from the Google Settings app.
+      Their preferences apply across all ad companies that use the advertising ID.</p>
+
+  </div>
+  <div class="col-6 normal-links">
+    <h3 style="clear:left">Getting Started</h3>
+    <h4>1. Get the Google Play services SDK</h4>
+    <p>The advertising ID APIs are part of the Google Play services platform.</p>
+    <p>To get started, <a href="https://developers.google.com/android/guides/setup">set up
+      the Google Play services SDK</a>. </p>
+    <h4>2. Read the docs and example code</h4>
+    <p>Once you've installed the Google Play services package, review the <a href="#get_started">overview</a>
+    below, as well as the <a href="#example">example</a>.</p>
+    <p>
+    For detailed documentation, take a look at the <a href=
+  "https://developers.google.com/android/reference/com/google/android/gms/ads/identifier/package-summary">
+    advertising ID API reference documentation</a>.
+    </p>
+  </div>
+</div>
+<p class="caution" style=
+"background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;">
+  As a reminder, please note that starting <strong>1 August 2014</strong>, new
+  apps and app updates distributed through Google Play must use the advertising
+  ID in lieu of any other persistent identifiers for any advertising purposes,
+  on devices that support the advertising ID.<br>
+  <br>
+  To learn how to check your app's compliance through the Developer Console, or
+  for details on the associated developer policy changes, please see the
+  <a href=
+  "https://support.google.com/googleplay/android-developer/answer/6048248">Advertising
+  ID topic</a> in the Google Play developer help center.
+</p>
+<h2 id="get_started">Using the Advertising ID</h2>
+<p>
+  The <strong>advertising ID</strong> is a unique but
+  user-resettable string identifier that lets ad networks and other apps anonymously
+  identify a user. The user's advertising ID is made available to apps through APIs
+  provided in Google Play services.
+</p>
+<p>
+  Users can reset their advertising ID at any time, right from the Ads section of the
+  Google Settings app on their devices. From the same app, users can also
+  opt-out of targeted advertising based on the advertising ID by setting the appropriate
+  <strong style="white-space:nowrap">ad tracking preference</strong>. When the
+  user opts-out of targeted ads, this ad tracking preference is made available
+  to apps through a Google Play services API.
+</p>
+<p>
+  Apps making use of the advertising ID <strong>must check for and respect</strong> the
+  user's ad tracking preference. Also please note that any use of the advertising ID
+  must abide by the terms of the <a class="external-link"
+  href="http://play.google.com/about/developer-content-policy.html#ADID">Google Play
+  Developer Content Policies</a>.
+</p>
+<h3 id="format">Format of the Advertising ID</h3>
+<p>
+  Google Play services APIs expose the user's advertising ID as a string format of UUID,
+  with values similar to this:
+</p>
+<p style="margin-left:1.5em;"><code>"38400000-8cf0-11bd-b23e-10b96e40000d"</code></p>
+<h3 id="requirements">Requirements</h3>
+<ul>
+  <li>The advertising ID APIs are supported in Google Play services 4.0+</li>
+  <li>Support for the advertising ID on specific devices is based on their installed versions
+  of Google Play services</li>
+</ul>
+<h3 id="obtaining">Obtaining the user's advertising ID and ad tracking preference</h3>
+<p>
+  If you want to use the advertising ID in your app, you must first install the Google
+  Play services SDK. As noted in the requirements above, you should install the
+  SDK for Google Play services 4.0 or higher if you will develop using the advertising ID
+  APIs. For information about how to get started, see <a href=
+  "https://developers.google.com/android/guides/setup">Setting Up Google Play services</a>.
+</p>
+<p>
+  The advertising ID APIs are available in the <a href=
+  "{@docRoot}reference/com/google/android/gms/ads/identifier/package-summary.html">
+  <code>com.google.android.gms.ads.identifier</code></a> package in the Google
+  Play Services library. To obtain the user's advertising ID and tracking preference,
+  call the method
+  <a href=
+  "{@docRoot}reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.html#getAdvertisingIdInfo(android.content.Context)">
+  <code>getAdvertisingIdInfo()</code></a>, which returns an <a href=
+  "{@docRoot}reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.Info.html">
+  <code>AdvertisingIdClient.Info</code></a> encapsulating the user's current Advertising ID
+  and tracking preference.
+</p>
+<p class="note">
+  <strong>Note:</strong> The
+  <a href=
+  "{@docRoot}reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.html#getAdvertisingIdInfo(android.content.Context)"><code>getAdvertisingIdInfo()</code></a>
+  method is a blocking call, so you must not call it on the main (UI) thread.
+  If called on the main thread, the method throws
+  {@link java.lang.IllegalStateException}.
+</p>
+<p>
+  Once you've retrieved the
+  <a href=
+  "{@docRoot}reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.Info.html">
+  <code>AdvertisingIdClient.Info</code></a>
+  object, you can use its <a href=
+  "{@docRoot}reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.Info.html#getId()">
+  <code>getId()</code></a> and <a href=
+  "{@docRoot}reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.Info.html#isLimitAdTrackingEnabled()">
+  <code>isLimitAdTrackingEnabled()</code></a> methods to access the advertising ID and
+  ad tracking preference.
+</p>
+<table>
+<tr>
+<th>Method</th>
+<th>Description</th>
+</tr>
+<tr>
+<td><code>public String <a href=
+  "{@docRoot}reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.Info.html#getId()">getId()</a></code></td>
+<td style="white-space:nowrap;">Retrieves the advertising ID.</td>
+</tr>
+<tr>
+<td style="white-space:nowrap;"><code>public boolean <a href=
+  "{@docRoot}reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.Info.html#isLimitAdTrackingEnabled()">isLimitAdTrackingEnabled()</a></code></td>
+<td>Retrieves whether the user has limit ad tracking enabled or not.</td>
+</tr>
+</table>
+<p>
+  The advertising ID APIs do not include a "reset" method. Only users can initiate a
+  reset of their own advertising IDs, through the Google Settings application.
+</p>
+<p>
+  For more information about the advertising ID APIs, see the <a href=
+  "{@docRoot}reference/com/google/android/gms/ads/identifier/package-summary.html">
+  reference documentation</a>.
+</p>
+<h3 id="example">Example implementation</h3>
+<p>
+  Here's a basic illustration of how you can retrieve the user's advertising ID and ad
+  tracking preference in your app:
+</p>
+<pre>
+import com.google.android.gms.ads.identifier.AdvertisingIdClient;
+import com.google.android.gms.ads.identifier.AdvertisingIdClient.Info;
+import com.google.android.gms.common.GooglePlayServicesAvailabilityException;
+import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
+import java.io.IOException;
+...
+// Do not call this function from the main thread. Otherwise,
+// an IllegalStateException will be thrown.
+public void getIdThread() {
+  Info adInfo = null;
+  try {
+    adInfo = AdvertisingIdClient.getAdvertisingIdInfo(mContext);
+  } catch (IOException e) {
+    // Unrecoverable error connecting to Google Play services (e.g.,
+    // the old version of the service doesn't support getting AdvertisingId).
+
+  } catch (GooglePlayServicesAvailabilityException e) {
+    // Encountered a recoverable error connecting to Google Play services.
+  } catch (GooglePlayServicesNotAvailableException e) {
+    // Google Play services is not available entirely.
+  }
+  final String id = adInfo.getId();
+  final boolean isLAT = adInfo.isLimitAdTrackingEnabled();
+}</pre>
diff --git a/docs/html/google/play/billing/api.jd b/docs/html/google/play/billing/api.jd
index bc710f9..6816ff1 100644
--- a/docs/html/google/play/billing/api.jd
+++ b/docs/html/google/play/billing/api.jd
@@ -11,53 +11,96 @@
   <ol>
     <li><a href="#producttypes">Product Types</a>
        <ol>
-       <li><a href="#managed">Managed In-app Products</a><li>
-       <li><a href="#subs">Subscriptions</a><li>
+       <li><a href="#managed">Managed In-app Products</a></li>
+       <li><a href="#subs">Subscriptions</a></li>
        </ol>
     </li>
     <li><a href="#purchase">Purchasing Items</a></li>
     <li><a href="#consume">Consuming In-app Products</a>
        <ol>
-       <li><a href="#consumetypes">Non-consumable and Consumable In-app Products</a><li>
-       <li><a href="#managingconsumables">Managing Consumable Purchases</a><li>
+       <li><a href="#consumetypes">Non-consumable and Consumable In-app Products</a></li>
+       <li><a href="#managingconsumables">Managing Consumable Purchases</a></li>
        </ol>
     </li>
     <li><a href="#caching">Local Caching</a></li>
   </ol>
-  
+
   <h2>Reference</h2>
   <ol>
     <li><a href="{@docRoot}google/play/billing/billing_reference.html">In-app Billing
     Reference (V3)</a></li>
   </ol>
-  
+
  <h2>See also</h2>
   <ol>
     <li><a href="{@docRoot}training/in-app-billing/index.html">Selling In-app Products</a></li>
-  </ol>  
+  </ol> 
 </div>
 </div>
 
-<p>The In-app Billing Version 3 API makes it easier for you to integrate In-app Billing into your applications. The features in this version include improved synchronous purchase flow, APIs to let you easily track ownership of consumable goods, and local caching of in-app purchase data.</p>
+<p>
+  The In-app Billing Version 3 API makes it easier for you to integrate In-app
+  Billing into your applications. The features in this version include improved
+  synchronous purchase flow, APIs to let you easily track ownership of
+  consumable goods, and local caching of in-app purchase data.
+</p>
 
 <h2 id="producttypes">Product Types</h2>
-<p>You define your products using the Google Play Developer Console, including product type, SKU, price, description, and so on. For more information, see <a
-href="{@docRoot}google/play/billing/billing_admin.html">Administering In-app Billing</a>. The Version 3 API supports managed in-app products and subscriptions.</p>
+
+<p>
+  You define your products using the Google Play Developer Console, including
+  product type, SKU, price, description, and so on. For more information, see
+  <a href="{@docRoot}google/play/billing/billing_admin.html">Administering
+  In-app Billing</a>. The Version 3 API supports managed in-app products and
+  subscriptions.
+</p>
+
 <h3 id="managed">Managed In-app Products</h3>
-<p>Managed in-app products are items that have their ownership information tracked and managed by Google Play. When a user purchases a managed in-app item, Google Play stores the purchase information for each item on a per-user basis. This enables you to later query Google Play at any time to restore the state of the items a specific user has purchased. This information is persistent on the Google Play servers even if the user uninstalls the application or if they change devices.</p>
-<p>If you are using the Version 3 API, you can also consume managed items within your application. You would typically implement consumption for items that can be purchased multiple times (such as in-game currency, fuel, or magic spells). Once purchased, a managed item cannot be purchased again until you consume the item, by sending a consumption request to Google Play. To learn more about in-app product consumption, see <a href="#consume">Consuming Items</a></p>
+
+<p>
+  Managed in-app products are items that have their ownership information
+  tracked and managed by Google Play. When a user purchases a managed in-app
+  item, Google Play stores the purchase information for each item on a per-user
+  basis. This enables you to later query Google Play at any time to restore the
+  state of the items a specific user has purchased. This information is
+  persistent on the Google Play servers even if the user uninstalls the
+  application or if they change devices.
+</p>
+
+<p>
+  If you are using the Version 3 API, you can also consume managed items within
+  your application. You would typically implement consumption for items that
+  can be purchased multiple times (such as in-game currency, fuel, or magic
+  spells). Once purchased, a managed item cannot be purchased again until you
+  consume the item, by sending a consumption request to Google Play. To learn
+  more about in-app product consumption, see <a href="#consume">Consuming
+  Items</a>.
+</p>
 
 <h3 id="subs">Subscriptions</h3>
-<p>A subscription is a product type offered in In-app Billing that lets you sell 
-content, services, or features to users from inside your app with recurring 
-monthly or annual billing. You can sell subscriptions to almost any type of 
-digital content, from any type of app or game. To understand how  
-subscriptions work, see <a href="{@docRoot}google/play/billing/billing_subscriptions.html">In-app Billing Subscriptions</a>.</p>
-<p>With the Version 3 API, you can use the same purchase flow for buying 
-subscriptions and retrieving subscription purchase information as with in-app 
-products. For a code example, see <a href="{@docRoot}google/play/billing/billing_integrate.html#Subs">Implementing Subscriptions</a>.</p>
-<p class="caution"><strong>Important</strong>: Unlike in-app products, 
-subscriptions cannot be consumed.</p>
+
+<p>
+  A subscription is a product type offered in In-app Billing that lets you sell
+  content, services, or features to users from inside your app with recurring
+  monthly or annual billing. You can sell subscriptions to almost any type of
+  digital content, from any type of app or game. To understand how
+  subscriptions work, see <a href=
+  "{@docRoot}google/play/billing/billing_subscriptions.html">In-app Billing
+  Subscriptions</a>.
+</p>
+
+<p>
+  With the Version 3 API, you can use the same purchase flow for buying
+  subscriptions and retrieving subscription purchase information as with in-app
+  products. For a code example, see <a href=
+  "{@docRoot}google/play/billing/billing_integrate.html#Subs">Implementing
+  Subscriptions</a>.
+</p>
+
+<p class="caution">
+  <strong>Important</strong>: Unlike in-app products, subscriptions cannot be
+  consumed.
+</p>
 
 <h2 id="purchase">Purchasing Items</h2>
 
@@ -68,71 +111,205 @@
 </p>
 </div>
 
-<p>A typical purchase flow with the Version 3 API is as follows:
+<p>A typical purchase flow with the Version 3 API is as follows:</p>
+
 <ol>
-<li>Your application sends a {@code isBillingSupported} request to Google Play to determine that the target version of the In-app Billing API that you are using is supported.  </li>
-<li>When your application starts or user logs in, it's good practice to check with Google Play to determine what items are owned by the user. To query the user's in-app purchases, send a {@code getPurchases} request. If the request is successful, Google Play returns a {@code Bundle} containing a list of product IDs of the purchased items, a list of the individual purchase details, and a list of the signatures for the purchases.</li>
-<li>Usually, you'll want to inform the user of the products that are available for purchase. To query the details of the in-app products that you defined in Google Play, your application can send a {@code getSkuDetails} request. You must specify a list of product IDs in the query request. If the request is successful, Google Play returns a {@code Bundle} containing product details including the product’s price, title, description, and the purchase type. 
-</li>
-<li>If an in-app product is not owned by the user, you can initiate a purchase for it. To start a purchase request, your application sends a {@code getBuyIntent} request, specifying the product ID of the item to purchase, along with other parameters. You should record the product ID when you create a new in-app product in the Developer Console.
-  <ol type="a">
-  <li>Google Play returns a {@code Bundle} that contains a {@code PendingIntent} which you application uses to start the checkout UI for the purchase.</li>
-  <li>Your application launches the pending intent by calling the {@code startIntentSenderForResult} method.</li>
-  <li>When the checkout flow finishes (that is, the user successfully purchases the item or cancels the purchase), Google Play sends a response {@code Intent} to your {@code onActivityResult} method. The result code of the {@code onActivityResult} has a result code that indicates whether the purchase was successful or canceled. The response {@code Intent} contains information about the purchased item, including a {@code purchaseToken} String that is generated by Google Play to uniquely identify this purchase transaction. The {@code Intent} also contains the signature of the purchase, signed with your private developer key.</li> 
-  </ol>
-</li>
+  <li>Your application sends a {@code isBillingSupported} request to Google
+  Play to determine that the target version of the In-app Billing API that you
+  are using is supported.
+  </li>
+
+  <li>When your application starts or user logs in, it's good practice to check
+  with Google Play to determine what items are owned by the user. To query the
+  user's in-app purchases, send a {@code getPurchases} request. If the request
+  is successful, Google Play returns a {@code Bundle} containing a list of
+  product IDs of the purchased items, a list of the individual purchase
+  details, and a list of the signatures for the purchases.
+  </li>
+
+  <li>Usually, you'll want to inform the user of the products that are
+  available for purchase. To query the details of the in-app products that you
+  defined in Google Play, your application can send a {@code getSkuDetails}
+  request. You must specify a list of product IDs in the query request. If the
+  request is successful, Google Play returns a {@code Bundle} containing
+  product details including the product’s price, title, description, and the
+  purchase type.
+  </li>
+
+  <li>If an in-app product is not owned by the user, you can initiate a
+  purchase for it. To start a purchase request, your application sends a {@code
+  getBuyIntent} request, specifying the product ID of the item to purchase,
+  along with other parameters. You should record the product ID when you create
+  a new in-app product in the Developer Console.
+    <ol type="a">
+      <li>Google Play returns a {@code Bundle} that contains a {@code
+      PendingIntent} which your application uses to start the checkout UI for
+      the purchase.
+      </li>
+
+      <li>Your application launches the pending intent by calling the {@code
+      startIntentSenderForResult} method.
+      </li>
+
+      <li>When the checkout flow finishes (that is, the user successfully
+      purchases the item or cancels the purchase), Google Play sends a response
+      {@code Intent} to your {@code onActivityResult} method. The result code
+      of the {@code onActivityResult} has a result code that indicates whether
+      the purchase was successful or canceled. The response {@code Intent}
+      contains information about the purchased item, including a {@code
+      purchaseToken} String that is generated by Google Play to uniquely
+      identify this purchase transaction. The {@code Intent} also contains the
+      signature of the purchase, signed with your private developer key.
+      </li>
+    </ol>
+  </li>
 </ol>
+
+<p>
+  To learn more about the Version 3 API calls and server responses, see
+  <a href="{@docRoot}google/play/billing/billing_reference.html">In-app Billing
+  Reference</a>.
 </p>
-<p>To learn more about the Version 3 API calls and server responses, see <a href="{@docRoot}google/play/billing/billing_reference.html">In-app Billing Reference</a>.</p>
 
 <h2 id="consume">Consuming In-app Products</h2>
-<p>You can use the consumption mechanism to track the user's ownership of in-app 
-products.</p>
-<p>In Version 3, all in-app products are managed. This means that the user's 
-ownership of all in-app item purchases is maintained by Google Play, and your 
-application can query the user's purchase information when needed. When the user 
-successfully purchases an in-app product, that purchase is recorded in Google 
-Play. Once an in-app product is purchased, it is considered to be "owned". 
-In-app products in the "owned" state cannot be purchased from Google Play. You 
-must send a consumption request for the "owned" in-app product before Google 
-Play makes it available for purchase again. Consuming the in-app product reverts 
-it to the "unowned" state, and discards the previous purchase data.</p>
+
+<p>
+  You can use the consumption mechanism to track the user's ownership of in-app
+  products.
+</p>
+
+<p>
+  In Version 3, all in-app products are managed. This means that the user's
+  ownership of all in-app item purchases is maintained by Google Play, and your
+  application can query the user's purchase information when needed. When the
+  user successfully purchases an in-app product, that purchase is recorded in
+  Google Play. Once an in-app product is purchased, it is considered to be
+  "owned". In-app products in the "owned" state cannot be purchased from Google
+  Play. You must send a consumption request for the "owned" in-app product
+  before Google Play makes it available for purchase again. Consuming the
+  in-app product reverts it to the "unowned" state, and discards the previous
+  purchase data.
+</p>
+
 <div class="figure" style="width:420px">
-<img src="{@docRoot}images/in-app-billing/v3/iab_v3_consumption_flow.png" id="figure2" height="300"/>
+<img src="{@docRoot}images/in-app-billing/v3/iab_v3_consumption_flow.png"
+    id="figure2" height="300"/>
 <p class="img-caption">
   <strong>Figure 2.</strong> The basic sequence for a consumption request.
 </p>
 </div>
-<p>To retrieve the list of product's owned by the user, your application sends a {@code getPurchases} call to Google Play. Your application can make a consumption request by sending a {@code consumePurchase} call. In the request argument, you must specify the in-app product's unique {@code purchaseToken} String that you obtained from Google Play when it was purchased. Google Play returns a status code indicating if the consumption was recorded successfully.</p>
+
+<p>
+  To retrieve the list of product's owned by the user, your application sends a
+  {@code getPurchases} call to Google Play. Your application can make a
+  consumption request by sending a {@code consumePurchase} call. In the request
+  argument, you must specify the in-app product's unique {@code purchaseToken}
+  String that you obtained from Google Play when it was purchased. Google Play
+  returns a status code indicating if the consumption was recorded
+  successfully.
+</p>
 
 <h3 id="consumetypes">Non-consumable and Consumable In-app Products</h3>
-<p>It's up to you to decide if you want to handle your in-app products as non-consumable or consumable items.</p>
+
+<p>
+  It's up to you to decide if you want to handle your in-app products as
+  non-consumable or consumable items.
+</p>
+
 <dl>
-<dt>Non-consumable Items</dt>
-<dd>Typically, you would not implement consumption for in-app products that can only be purchased once in your application and provide a permanent benefit. Once purchased, these items will be permanently associated to the user's Google account. An example of a non-consumable in-app product is a premium upgrade or a level pack.</dd>
-<dt>Consumable items</dt>
-<dd>In contrast, you can implement consumption for items that can be made available for purchase multiple times. Typically, these items provide certain temporary effects. For example, the user's in-game character might gain life points or gain extra gold coins in their inventory. Dispensing the benefits or effects of the purchased item in your application is called <em>provisioning</em> the in-app product. You are responsible for controlling and tracking how in-app products are provisioned to the users.
-<p class="note"><strong>Important:</strong> Before provisioning the consumable in-app product in your application, you must send a consumption request to Google Play and receive a successful response indicating that the consumption was recorded.</p>
-</dd>
+  <dt>
+    Non-consumable Items
+  </dt>
+
+  <dd>
+    Typically, you would not implement consumption for in-app products that can
+    only be purchased once in your application and provide a permanent benefit.
+    Once purchased, these items will be permanently associated to the user's
+    Google account. An example of a non-consumable in-app product is a premium
+    upgrade or a level pack.
+  </dd>
+
+  <dt>
+    Consumable items
+  </dt>
+
+  <dd>
+    In contrast, you can implement consumption for items that can be made
+    available for purchase multiple times. Typically, these items provide
+    certain temporary effects. For example, the user's in-game character might
+    gain life points or gain extra gold coins in their inventory. Dispensing
+    the benefits or effects of the purchased item in your application is called
+    <em>provisioning</em> the in-app product. You are responsible for
+    controlling and tracking how in-app products are provisioned to the users.
+    <p class="note">
+      <strong>Important:</strong> Before provisioning the consumable in-app
+      product in your application, you must send a consumption request to
+      Google Play and receive a successful response indicating that the
+      consumption was recorded.
+    </p>
+  </dd>
 </dl>
+
 <h3 id="managingconsumables">Managing consumable purchases in your application</h3>
 <p>Here is the basic flow for purchasing a consumable in-app product:</p>
+
 <ol>
-<li>Launch a purchase flow with a {@code getBuyIntent} call</li>
-<li>Get a response {@code Bundle}from Google Play indicating if the purchase completed successfully.</li>
-<li>If the purchase was successful, consume the purchase by making a {@code consumePurchase} call.</li>
-<li>Get a response code from Google Play indicating if the consumption completed successfully.</li>
-<li>If the consumption was successful, provision the product in your application.</li>
+  <li>Launch a purchase flow with a {@code getBuyIntent} call
+  </li>
+
+  <li>Get a response {@code Bundle}from Google Play indicating if the purchase
+  completed successfully.
+  </li>
+
+  <li>If the purchase was successful, consume the purchase by making a {@code
+  consumePurchase} call.
+  </li>
+
+  <li>Get a response code from Google Play indicating if the consumption
+  completed successfully.
+  </li>
+
+  <li>If the consumption was successful, provision the product in your
+  application.
+  </li>
 </ol>
-<p>Subsequently, when the user starts up or logs in to your application, you should check if the user owns any outstanding consumable in-app products; if so, make sure to consume and provision those items. Here's the recommended application startup flow if you implement consumable in-app products in your application:</p>
+
+<p>
+  Subsequently, when the user starts up or logs in to your application, you
+  should check if the user owns any outstanding consumable in-app products; if
+  so, make sure to consume and provision those items. Here's the recommended
+  application startup flow if you implement consumable in-app products in your
+  application:
+</p>
+
 <ol>
-<li>Send a {@code getPurchases} request to query the owned in-app products for the user.</li>
-<li>If there are any consumable in-app products, consume the items by calling {@code consumePurchase}. This step is necessary because the application might have completed the purchase order for the consumable item, but stopped or got disconnected before the application had the chance to send a consumption request.</li>
-<li>Get a response code from Google Play indicating if the consumption completed successfully.</li>
-<li>If the consumption was successful, provision the product in your application.</li>
+  <li>Send a {@code getPurchases} request to query the owned in-app products
+  for the user.
+  </li>
+
+  <li>If there are any consumable in-app products, consume the items by calling
+  {@code consumePurchase}. This step is necessary because the application might
+  have completed the purchase order for the consumable item, but stopped or got
+  disconnected before the application had the chance to send a consumption
+  request.
+  </li>
+
+  <li>Get a response code from Google Play indicating if the consumption
+  completed successfully.
+  </li>
+
+  <li>If the consumption was successful, provision the product in your
+  application.
+  </li>
 </ol>
 
 <h2 id="caching">Local Caching</h2>
-<p>Because the Google Play client now caches In-app Billing information locally on the device, you can use the Version 3 API to query for this information more frequently, for example through a {@code getPurchases} call. Unlike with previous versions of the API, many Version 3 API calls will be serviced through cache lookups instead of through a network connection to Google Play, which significantly speeds up the API's response time. </p>
 
-
+<p>
+  Because the Google Play client now caches In-app Billing information locally
+  on the device, you can use the Version 3 API to query for this information
+  more frequently, for example through a {@code getPurchases} call. Unlike with
+  previous versions of the API, many Version 3 API calls will be serviced
+  through cache lookups instead of through a network connection to Google Play,
+  which significantly speeds up the API's response time.
+</p>
diff --git a/docs/html/google/play/billing/billing_admin.jd b/docs/html/google/play/billing/billing_admin.jd
index 009495b..ff7acc9 100644
--- a/docs/html/google/play/billing/billing_admin.jd
+++ b/docs/html/google/play/billing/billing_admin.jd
@@ -130,9 +130,10 @@
     a product ID.</p>
   </li>
   <li><strong>Product Type</strong>
-    <p>The product type can be <strong>Managed per user account</strong>, <strong>Unmanaged</strong>,
-    or <strong>Subscription</strong>. You can never change an item's product type after you set it. For more
-    information, see <a href="#billing-purchase-type">Choosing a product type</a> later in this
+    <p>The product type can be <strong>Managed per user account</strong>,
+    <strong>Unmanaged</strong>, or <strong>Subscription</strong>. You can never
+    change an item's product type after you set it. For more information, see
+    <a href="#billing-purchase-type">Choosing a product type</a> later in this
     document.</p>
   </li>
   <li><strong>Publishing State</strong>
@@ -154,14 +155,15 @@
     application.</p>
   </li>
   <li><strong>Title</strong>
-    <p>The title is a short descriptor for the item. For example, "Sleeping potion." Titles must be
-    unique across an application's namespace. Every item must have a title. The title is visible to
+    <p>The title is a short descriptor for the item. For example, "Sleeping potion."
+    Every item must have a title. The title is visible to
     users during checkout. For optimum appearance, titles should be no longer than 25 characters;
     however, titles can be up to 55 characters in length.</p>
   </li>
   <li><strong>Description</strong>
     <p>The description is a long descriptor for the item. For example, "Instantly puts creatures to
-    sleep. Does not work on angry elves." Every item must have a description. Descriptions can be up to 80 characters in length.</p>
+    sleep. Does not work on angry elves." Every item must have a description. Descriptions can be
+    up to 80 characters in length.</p>
   </li>
   <li><strong>Price</strong>
     <p>You must provide a default price in your home currency. You can also provide prices in other
@@ -171,22 +173,25 @@
     <p>To specify prices in other currencies, you can manually enter the price for each
     currency or you can click <strong>Auto Fill</strong> and let Google Play do a one-time
     conversion from your home currency to the currencies you are targeting (see figure 3).</p>
-    <p>For subscription items, note that you can not change the item's price once you have published it. </p>
+    <p>For subscription items, note that you can not change the item's price once you have published
+    it.</p>
   </li>
 </ul>
 
 <div style="margin:1em;">
-<img style="border:1px solid #ddd;padding-bottom:.5em" src="{@docRoot}images/in-app-billing/billing_list_form_2.png" xheight="1226" id="figure3" />
+<img style="border:1px solid #ddd;padding-bottom:.5em"
+    src="{@docRoot}images/in-app-billing/billing_list_form_2.png"
+    xheight="1226" id="figure3" />
 <p class="img-caption" style="padding-left:.5em;">
   <strong>Figure 3.</strong> Specifying additional currencies for an in-app product.
 </p>
 </div>
 
 <p>For more information about product IDs and product lists, see <a
-href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=1072599">Creating In-App Product
-IDs</a>. For more information about pricing, see <a
-href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=1153485">In-App Billing
-Pricing</a>.</p>
+href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=1072599">
+Creating In-App Product IDs</a>. For more information about pricing, see <a
+href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=1153485">
+In-App Billing Pricing</a>.</p>
 
 <p class="note"><strong>Note</strong>: Be sure to plan your product ID namespace. You cannot reuse
 or modify product IDs after you save them.</p>
@@ -196,14 +201,15 @@
 <p>To add a batch of items to a product list using a CSV file, you first need to create your CSV
 file. The data values that you specify in the CSV file represent the same data values you specify
 manually through the In-app Products UI (see <a href="#billing-form-add">Adding items one at a time
-to a product list</a>). 
+to a product list</a>).
 
 <p>If you are importing and exporting CSV files with in-app products, please
 keep tax-inclusive pricing in mind. If you use auto-fill, you can provide a
 tax-exclusive default price and tax-inclusive prices will be auto-filled. If you
 do not use auto-fill, prices you provide must include tax.</p>
 
-<p class="note"><strong>Note:</strong> Batch upload of product lists containing subscriptions is not yet supported.</p>
+<p class="note"><strong>Note:</strong> Batch upload of product lists containing
+subscriptions is not yet supported.</p>
 
 The CSV file uses commas (,) and semi-colons (;) to separate data values.
 Commas are used to separate primary data values, and semi-colons are used to separate subvalues. For
@@ -287,7 +293,8 @@
   </li>
   <li><em>price</em>
     <p>This is equivalent to the Price in the In-app Products UI. The price must be specified in
-    micro-units. To convert a currency value to micro-units, you multiply the real value by 1,000,000.
+    micro-units. To convert a currency value to micro-units, you multiply the real value by
+    1,000,000.
     For example, if you want to sell an in-app item for $1.99 you specify 1990000 in the
     <em>price</em> field.</p>
   </li>
@@ -413,8 +420,8 @@
 application. For more information, see <a
 href="{@docRoot}google/play/billing/v2/api.html#billing-action-notify">Handling
 IN_APP_NOTIFY messages</a> and <a
-href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=1153485">In-app Billing
-Pricing</a>.</p>
+href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=1153485">
+In-app Billing Pricing</a>.</p>
 
 <p class="caution"><strong>Important:</strong> You cannot use the API to issue
 refunds or cancel In-app Billing transactions. You must do this manually through your Google
@@ -442,7 +449,7 @@
 Order Number as the value of <code>orderID</code>. Here's an
 example:</p>
 
-<pre>"orderId" : "12999556515565155651.5565135565155651"</pre>
+<pre>"orderId" : "GPA.1234-5678-9012-34567"</pre>
 
 <p>For transactions dated previous to 5 December 2012, Google checkout assigned
 a Google Order Number and reported that number as the value of
@@ -453,10 +460,11 @@
 
 <h2 id="billing-testing-setup">Setting Up Test Accounts</h2>
 
-<p>The Google Play Developer Console lets you set up one or more test accounts. A test account is a
-regular Google account that you register on the Developer Console as a test account. Test accounts are
-authorized to make in-app purchases from applications that you have uploaded to the Google Play
-Developer Console but have not yet published.</p>
+<p>The Google Play Developer Console lets you set up one or more test accounts.
+A test account is a regular Google account that you register on the Developer
+Console as a test account. Test accounts are authorized to make in-app purchases
+from applications that you have uploaded to the Google Play Developer Console
+but have not yet published.</p>
 
 <p>You can use any Google account as a test account. Test accounts are useful if you want to let
 multiple people test In-app Billing on applications without giving them access to your publisher
@@ -547,6 +555,3 @@
 <p>For general information about how to post to the groups listed above, see <a
 href="{@docRoot}resources/community-groups.html">Developer Forums</a> document in the Resources
 tab.</p>
-
-
-
diff --git a/docs/html/google/play/billing/billing_best_practices.jd b/docs/html/google/play/billing/billing_best_practices.jd
index 015e7c3..70084b8 100644
--- a/docs/html/google/play/billing/billing_best_practices.jd
+++ b/docs/html/google/play/billing/billing_best_practices.jd
@@ -72,7 +72,7 @@
   line to your Proguard configuration file:</p>
   <p><code>-keep class com.android.vending.billing.**</code></p>
 </div>
-  
+
 <h3 id="sample">Modify all sample application code</h3>
 <p>The In-app Billing sample application is publicly distributed and can be downloaded by anyone,
 which means it is relatively easy for an attacker to reverse engineer your application if you use
@@ -90,16 +90,33 @@
 nonces on the server.</p>
 
 <h3 id="payload">Set the developer payload string when making purchase requests</h3>
-<p>With the In-app Billing Version 3 API, you can include a 'developer payload' string token when sending your purchase request to Google Play. Typically, this is used to pass in a string token that uniquely identifies this purchase request. If you specify a string value, Google Play returns this string along with the purchase response. Subsequently, when you make queries about this purchase, Google Play returns this string together with the purchase details.</p>
-<p>You should pass in a string token that helps your application to identify the user who made the purchase, so that you can later verify that this is a legitimate purchase by that user. For consumable items, you can use a randomly generated string, but for non-consumable items you should use a string that uniquely identifies the user.</p>
-<p>When you get back the response from Google Play, make sure to verify that the developer payload string matches the token that you sent previously with the purchase request. As a further security precaution, you should perform the verification on your own secure server.</p>
+<p>With the In-app Billing Version 3 API, you can include a 'developer payload'
+string token when sending your purchase request to Google Play. Typically, this
+is used to pass in a string token that uniquely identifies this purchase request.
+If you specify a string value, Google Play returns this string along with the
+purchase response. Subsequently, when you make queries about this purchase,
+Google Play returns this string together with the purchase details.</p>
+<p>You should pass in a string token that helps your application to identify the user who
+made the purchase, so that you can later verify that this is a legitimate purchase by
+that user. For consumable items, you can use a randomly generated string, but for non-
+consumable items you should use a string that uniquely identifies the user.</p>
+
+<p class="note">
+  <strong>Note:</strong> Do not use the user's
+  email address in the payload string, since that address may change.
+</p>
+
+<p>When you get back the response from Google Play, make sure to verify that the
+developer payload string matches the token that you sent previously with the purchase
+request. As a further security precaution, you should perform the verification on your
+own secure server.</p>
 
 
 <h3 id="trademark">Take action against trademark and copyright infringement</h3>
 <p>If you see your content being redistributed on Google Play, act quickly and decisively. File a
-<a href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=141511">trademark notice
-of infringement</a> or a <a href="http://www.google.com/android_dmca.html">copyright notice of
-infringement</a>.</p>
+<a href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=141511">
+trademark notice of infringement</a> or a <a href="http://www.google.com/android_dmca.html">
+copyright notice of infringement</a>.</p>
 
 <h3 id="revocable">Implement a revocability scheme for unlocked content</h3>
 <p>If you are using a remote server to deliver or manage content, have your application verify the
@@ -112,4 +129,3 @@
 example, XOR with some other string) to hide the actual key. The key itself is not secret
 information, but you do not want to make it easy for a hacker or malicious user to replace the
 public key with another key.</p>
-
diff --git a/docs/html/google/play/billing/billing_integrate.jd b/docs/html/google/play/billing/billing_integrate.jd
old mode 100644
new mode 100755
index 52973a8..c658f70
--- a/docs/html/google/play/billing/billing_integrate.jd
+++ b/docs/html/google/play/billing/billing_integrate.jd
@@ -16,8 +16,8 @@
        <li><a href="#QueryDetails">Querying Items Available for Purchase</a><li>
        <li><a href="#Purchase">Purchasing an Item</a></li>
        <li><a href="#QueryPurchases">Querying Purchased Items</a></li>
-       <li><a href="#Consume">Consuming a Purchase</a><li>
-       <li><a href="#Subs">Implementing Subscriptions</a><li>
+       <li><a href="#Consume">Consuming a Purchase</a></li>
+       <li><a href="#Subs">Implementing Subscriptions</a></li>
        </ol>
     </li>
     <li><a href="#billing-security">Securing Your App</a>
@@ -38,15 +38,35 @@
 </div>
 </div>
 
-<p>In-app Billing on Google Play provides a straightforward, simple interface for sending In-app Billing requests and managing In-app Billing transactions using Google Play. The information below covers the basics of how to make calls from your application to the In-app Billing service using the Version 3 API. </p>
+<p>
+  In-app Billing on Google Play provides a straightforward, simple interface
+  for sending In-app Billing requests and managing In-app Billing transactions
+  using Google Play. The information below covers the basics of how to make
+  calls from your application to the In-app Billing service using the Version 3
+  API.
+</p>
 
-<p class="note"><strong>Note:</strong> To see a complete implementation and learn how to test your application, see the <a href="{@docRoot}training/in-app-billing/index.html">Selling In-app Products</a> training class. The training class provides a complete sample In-app Billing application, including convenience classes to handle key tasks related to setting up your connection, sending billing requests and processing responses from Google Play, and managing background threading so that you can make In-app Billing calls from your main activity.</p>
+<p class="note">
+  <strong>Note:</strong> To see a complete implementation and learn how to test
+  your application, see the <a href=
+  "{@docRoot}training/in-app-billing/index.html">Selling In-app Products</a>
+  training class. The training class provides a complete sample In-app Billing
+  application, including convenience classes to handle key tasks related to
+  setting up your connection, sending billing requests and processing responses
+  from Google Play, and managing background threading so that you can make
+  In-app Billing calls from your main activity.
+</p>
 
-<p>Before you start, be sure that you read the <a href="{@docRoot}google/play/billing/billing_overview.html">In-app Billing Overview</a> to familiarize yourself with
-concepts that will make it easier for you to implement In-app Billing.</p>
+<p>
+  Before you start, be sure that you read the <a href=
+  "{@docRoot}google/play/billing/billing_overview.html">In-app Billing
+  Overview</a> to familiarize yourself with concepts that will make it easier
+  for you to implement In-app Billing.
+</p>
 
 <p>To implement In-app Billing in your application, you need to do the
 following:</p>
+
 <ol>
   <li>Add the In-app Billing library to your project.</li>
   <li>Update your {@code AndroidManifest.xml} file.</li>
@@ -70,51 +90,81 @@
 <li>Select <strong>Google Play Billing Library</strong>.</li>
 <li>Click <strong>Install packages</strong> to complete the download.</li>
 </ol>
-<p>The {@code IInAppBillingService.aidl} file will be installed to {@code <sdk>/extras/google/play_billing/}.</p>
+<p>The {@code IInAppBillingService.aidl} file will be installed to {@code &lt;sdk&gt;/extras/google/play_billing/}.</p>
 
 <p>To add the AIDL to your project:</p>
-<ol>
-<li>Copy the {@code IInAppBillingService.aidl} file to your Android project.
-  <ul>
-  <li>If you are using Eclipse:
-     <ol type="a">
-        <li>If you are starting from an existing Android project, open the project
-in Eclipse. If you are creating a new Android project from scratch, click
-<strong>File</strong> &gt; <strong>New</strong> &gt; <strong>Android Application
-Project</strong>, then follow the instructions in the <strong>New Android
-Application</strong> wizard to create a new project in your workspace.</li>
-	<li>In the {@code /src} directory, click <strong>File</strong> &gt;
-<strong>New</strong> &gt; <strong>Package</strong>, then create a package named {@code com.android.vending.billing}.</li>
-	<li>Copy the {@code IInAppBillingService.aidl} file from {@code <sdk>/extras/google/play_billing/} and paste it into the {@code src/com.android.vending.billing/}
-folder in your workspace.</li>
-     </ol>
-  </li>
-  <li>If you are developing in a non-Eclipse environment: Create the following
-directory {@code /src/com/android/vending/billing} and copy the
-{@code IInAppBillingService.aidl} file into this directory. Put the AIDL file
-into your project and use the Ant tool to build your project so that the
-<code>IInAppBillingService.java</code> file gets generated.</li>
-  </ul>
-</li>
-<li>Build your application. You should see a generated file named
-{@code IInAppBillingService.java} in the {@code /gen} directory of your
-project.</li>
-</ol>
 
+<ol>
+  <li>First, download the Google Play Billing Library to your Android project:
+      <ol type="a">
+      <li>Select <strong>Tools > Android > SDK Manager</strong>.</li>
+      <li>Under <strong>Appearance & Behavior > System Settings > Android SDK</strong>,
+          select the <em>SDK Tools</em> tab to select and download <em>Google Play Billing
+          Library</em>.</li></ol>
+
+  <li>Next, copy the {@code IInAppBillingService.aidl} file to your project.
+    <ul>
+      <li>If you are using Android Studio:
+        <ol type="a">
+          <li>Navigate to {@code src/main} in the Project tool window.</li>
+
+          <li>Select <strong>File > New > Directory</strong> and enter {@code aidl} in the
+          <em>New Directory</em> window, then select <strong>OK</strong>.
+
+          <li>Select <strong>File > New > Package</strong> and enter 
+          {@code com.android.vending.billing} in the <em>New Package</em> window, then select
+          <strong>OK</strong>.</li>
+
+          <li>Using your operating system file explorer, navigate to 
+          {@code &lt;sdk&gt;/extras/google/play_billing/}, copy the 
+          {@code IInAppBillingService.aidl} file, and paste it into the 
+          {@code com.android.vending.billing} package in your project.
+          </li>
+        </ol>
+      </li>
+
+      <li>If you are developing in a non-Android Studio environment: Create the
+      following directory {@code /src/com/android/vending/billing} and copy the
+      {@code IInAppBillingService.aidl} file into this directory. Put the AIDL
+      file into your project and use the Gradle tool to build your project so that
+      the <code>IInAppBillingService.java</code> file gets generated.
+      </li>
+    </ul>
+  </li>
+
+  <li>Build your application. You should see a generated file named {@code
+  IInAppBillingService.java} in the {@code /gen} directory of your project.
+  </li>
+</ol>
 
 <h2 id="billing-permission">Updating Your Application's Manifest</h2>
 
-<p>In-app billing relies on the Google Play application, which handles all communication between your application and the Google Play server. To use the Google Play application, your application must request the proper permission. You can do this by adding the {@code com.android.vending.BILLING} permission to your AndroidManifest.xml file. If your application does not declare the In-app Billing permission, but attempts to send billing requests, Google Play will refuse the requests and respond with an error.</p>
+<p>
+  In-app billing relies on the Google Play application, which handles all
+  communication between your application and the Google Play server. To use the
+  Google Play application, your application must request the proper permission.
+  You can do this by adding the {@code com.android.vending.BILLING} permission
+  to your AndroidManifest.xml file. If your application does not declare the
+  In-app Billing permission, but attempts to send billing requests, Google Play
+  will refuse the requests and respond with an error.
+</p>
 
-<p>To give your app the necessary permission, add this line in your {@code Android.xml} manifest file:</p>
+<p>
+  To give your app the necessary permission, add this line in your {@code
+  Android.xml} manifest file:
+</p>
+
 <pre>
 &lt;uses-permission android:name="com.android.vending.BILLING" /&gt;
 </pre>
 
 <h2 id="billing-service">Creating a ServiceConnection</h2>
 
-<p>Your application must have a {@link android.content.ServiceConnection} to facilitate messaging between
-your application and Google Play. At a minimum, your application must do the following:</p>
+<p>
+  Your application must have a {@link android.content.ServiceConnection} to
+  facilitate messaging between your application and Google Play. At a minimum,
+  your application must do the following:
+</p>
 
 <ul>
   <li>Bind to {@code IInAppBillingService}.
@@ -123,8 +173,18 @@
 </ul>
 
 <h3>Binding to IInAppBillingService</h3>
-<p>To establish a connection with the In-app Billing service on Google Play, implement a {@link android.content.ServiceConnection} to bind your activity to {@code IInAppBillingService}. Override the {@link android.content.ServiceConnection#onServiceDisconnected onServiceDisconnected} and {@link
-android.content.ServiceConnection#onServiceConnected onServiceConnected} methods to get a reference to the {@code IInAppBillingService} instance after a connection has been established.</p>
+
+<p>
+  To establish a connection with the In-app Billing service on Google Play,
+  implement a {@link android.content.ServiceConnection} to bind your activity
+  to {@code IInAppBillingService}. Override the {@link
+  android.content.ServiceConnection#onServiceDisconnected
+  onServiceDisconnected} and {@link
+  android.content.ServiceConnection#onServiceConnected onServiceConnected}
+  methods to get a reference to the {@code IInAppBillingService} instance after
+  a connection has been established.
+</p>
+
 <pre>
 IInAppBillingService mService;
 
@@ -142,20 +202,52 @@
 };
 </pre>
 
-<p>In your activity’s {@link android.app.Activity#onCreate onCreate} method, perform the binding by calling the {@link android.content.Context#bindService bindService} method. Pass the method an {@link android.content.Intent} that references the In-app Billing service and an instance of the {@link android.content.ServiceConnection} that you created, and explicitly set the Intent's target package name to <code>com.android.vending</code> &mdash; the package name of Google Play app.</p>
+<p>
+  In your activity’s {@link android.app.Activity#onCreate onCreate} method,
+  perform the binding by calling the {@link android.content.Context#bindService
+  bindService} method. Pass the method an {@link android.content.Intent} that
+  references the In-app Billing service and an instance of the {@link
+  android.content.ServiceConnection} that you created, and explicitly set the
+  Intent's target package name to <code>com.android.vending</code> — the
+  package name of Google Play app.
+</p>
 
-<p class="caution"><strong>Caution:</strong> To protect the security of billing transactions, always make sure to explicitly set the intent's target package name to <code>com.android.vending</code>, using {@link android.content.Intent#setPackage(java.lang.String) setPackage()} as shown in the example below. Setting the package name explicitly ensures that <em>only</em> the Google Play app can handle billing requests from your app, preventing other apps from intercepting those requests.</p>
+<p class="caution">
+  <strong>Caution:</strong> To protect the security of billing transactions,
+  always make sure to explicitly set the intent's target package name to
+  <code>com.android.vending</code>, using {@link
+  android.content.Intent#setPackage(java.lang.String) setPackage()} as shown in
+  the example below. Setting the package name explicitly ensures that
+  <em>only</em> the Google Play app can handle billing requests from your app,
+  preventing other apps from intercepting those requests.
+</p>
 
 <pre>&#64;Override
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
-  Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
+  Intent serviceIntent =
+      new Intent("com.android.vending.billing.InAppBillingService.BIND");
   serviceIntent.setPackage("com.android.vending");
   bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);
+}
 </pre>
-<p>You can now use the mService reference to communicate with the Google Play service.</p>
-<p class="note"><strong>Important:</strong> Remember to unbind from the In-app Billing service when you are done with your {@link android.app.Activity}. If you don’t unbind, the open service connection could cause your device’s performance to degrade. This example shows how to perform the unbind operation on a service connection to In-app Billing called {@code mServiceConn} by overriding the activity’s {@link android.app.Activity#onDestroy onDestroy} method.</p>
+
+<p>
+  You can now use the mService reference to communicate with the Google Play
+  service.
+</p>
+
+<p class="note">
+  <strong>Important:</strong> Remember to unbind from the In-app Billing
+  service when you are done with your {@link android.app.Activity}. If you
+  don’t unbind, the open service connection could cause your device’s
+  performance to degrade. This example shows how to perform the unbind
+  operation on a service connection to In-app Billing called {@code
+  mServiceConn} by overriding the activity’s {@link
+  android.app.Activity#onDestroy onDestroy} method.
+</p>
+
 <pre>
 &#64;Override
 public void onDestroy() {
@@ -166,16 +258,37 @@
 }
 </pre>
 
-<p>For a complete implementation of a service connection that binds to the {@code IInAppBillingService},
-see the <a href="{@docRoot}training/in-app-billing/preparing-iab-app.html">Selling In-app
-Products</a> training class and associated sample.</p>
-
+<p>
+  For a complete implementation of a service connection that binds to the
+  {@code IInAppBillingService}, see the <a href=
+  "{@docRoot}training/in-app-billing/preparing-iab-app.html">Selling In-app
+  Products</a> training class and associated sample.
+</p>
 <h2 id="billing-requests">Making In-app Billing Requests</h2>
-<p>Once your application is connected to Google Play, you can initiate purchase requests for in-app products. Google Play provides a checkout interface for users to enter their payment method, so your application does not need to handle payment transactions directly. When an item is purchased, Google Play recognizes that the user has ownership of that item and prevents the user from purchasing another item with the same product ID until it is consumed. You can control how the item is consumed in your application, and notify Google Play to make the item available for purchase again. You can also query Google Play to quickly retrieve the list of purchases that were made by the user. This is useful, for example, when you want to restore the user's purchases when your user launches your app.
+<p>
+  Once your application is connected to Google Play, you can initiate purchase
+  requests for in-app products. Google Play provides a checkout interface for
+  users to enter their payment method, so your application does not need to
+  handle payment transactions directly. When an item is purchased, Google Play
+  recognizes that the user has ownership of that item and prevents the user
+  from purchasing another item with the same product ID until it is consumed.
+  You can control how the item is consumed in your application, and notify
+  Google Play to make the item available for purchase again. You can also query
+  Google Play to quickly retrieve the list of purchases that were made by the
+  user. This is useful, for example, when you want to restore the user's
+  purchases when your user launches your app.
 </p>
 
 <h3 id="QueryDetails">Querying for Items Available for Purchase</h3>
-<p>In your application, you can query the item details from Google Play using the In-app Billing Version 3 API. To pass a request to the In-app Billing service, first create a {@link android.os.Bundle}  that contains a String {@link java.util.ArrayList} of product IDs with key "ITEM_ID_LIST", where each string is a product ID for an purchasable item.</p>
+
+<p>
+  In your application, you can query the item details from Google Play using
+  the In-app Billing Version 3 API. To pass a request to the In-app Billing
+  service, first create a {@link android.os.Bundle} that contains a String
+  {@link java.util.ArrayList} of product IDs with key "ITEM_ID_LIST", where
+  each string is a product ID for an purchasable item.
+</p>
+
 <pre>
 ArrayList&lt;String&gt; skuList = new ArrayList&lt;String&gt; ();
 skuList.add("premiumUpgrade");
@@ -183,19 +296,51 @@
 Bundle querySkus = new Bundle();
 querySkus.putStringArrayList(“ITEM_ID_LIST”, skuList);
 </pre>
-<p>To retrieve this information from Google Play, call the {@code getSkuDetails} method on the In-app Billing Version 3 API, and pass the method the In-app Billing API version (“3”), the package name of your calling app, the purchase type (“inapp”), and the {@link android.os.Bundle} that you created.</p>
+
+<p>
+  To retrieve this information from Google Play, call the {@code getSkuDetails}
+  method on the In-app Billing Version 3 API, and pass the method the In-app
+  Billing API version (“3”), the package name of your calling app, the purchase
+  type (“inapp”), and the {@link android.os.Bundle} that you created.
+</p>
+
 <pre>
 Bundle skuDetails = mService.getSkuDetails(3,
    getPackageName(), "inapp", querySkus);
 </pre>
-<p>If the request is successful, the returned {@link android.os.Bundle}has a response code of {@code BILLING_RESPONSE_RESULT_OK} (0).</p>
-<p class="note"><strong>Warning:</strong> Do not call the {@code getSkuDetails} method on the main thread. Calling this method triggers a network request which could block your main thread.  Instead, create a separate thread and call the {@code getSkuDetails} method from inside that thread.</p>
 
-<p>To see all the possible response codes from Google Play, see <a href="{@docRoot}google/play/billing/billing_reference.html#billing-codes">In-app Billing Reference</a>.</p>
+<p>
+  If the request is successful, the returned {@link android.os.Bundle}has a
+  response code of {@code BILLING_RESPONSE_RESULT_OK} (0).
+</p>
 
-<p>The query results are stored in a String ArrayList with key {@code DETAILS_LIST}.  The purchase information is stored in the String in JSON format. To see the types of product detail information that are returned, see <a href="{@docRoot}google/play/billing/billing_reference.html#getSkuDetails">In-app Billing Reference</a>.</p>
+<p class="note">
+  <strong>Warning:</strong> Do not call the {@code getSkuDetails} method on the
+  main thread. Calling this method triggers a network request which could block
+  your main thread. Instead, create a separate thread and call the {@code
+  getSkuDetails} method from inside that thread.
+</p>
 
-<p>In this example, you are retrieving the prices for your in-app items from the skuDetails {@link android.os.Bundle} returned from the previous code snippet.</p>
+<p>
+  To see all the possible response codes from Google Play, see <a href=
+  "{@docRoot}google/play/billing/billing_reference.html#billing-codes">In-app
+  Billing Reference</a>.
+</p>
+
+<p>
+  The query results are stored in a String ArrayList with key {@code
+  DETAILS_LIST}. The purchase information is stored in the String in JSON
+  format. To see the types of product detail information that are returned, see
+  <a href=
+  "{@docRoot}google/play/billing/billing_reference.html#getSkuDetails">In-app
+  Billing Reference</a>.
+</p>
+
+<p>
+  In this example, you are retrieving the prices for your in-app items from the
+  skuDetails {@link android.os.Bundle} returned from the previous code snippet.
+</p>
+
 <pre>
 int response = skuDetails.getInt("RESPONSE_CODE");
 if (response == 0) {
@@ -213,31 +358,69 @@
 </pre>
 
 <h3 id="Purchase">Purchasing an Item</h3>
-<p>To start a purchase request from your app, call the {@code getBuyIntent} method on the In-app Billing service. Pass in to the method the In-app Billing API version (“3”), the package name of your calling app, the product ID for the item to purchase, the purchase type (“inapp” or "subs"), and a {@code developerPayload} String. The {@code developerPayload} String is used to  specify any additional arguments that you want Google Play to send back along with the purchase information.</p>
+<p>
+  To start a purchase request from your app, call the {@code getBuyIntent}
+  method on the In-app Billing service. Pass in to the method the In-app
+  Billing API version (“3”), the package name of your calling app, the product
+  ID for the item to purchase, the purchase type (“inapp” or "subs"), and a
+  {@code developerPayload} String. The {@code developerPayload} String is used
+  to specify any additional arguments that you want Google Play to send back
+  along with the purchase information.
+</p>
 
 <pre>
 Bundle buyIntentBundle = mService.getBuyIntent(3, getPackageName(),
    sku, "inapp", "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ");
 </pre>
+
 <p>
-If the request is successful, the returned {@link android.os.Bundle} has a response code of {@code BILLING_RESPONSE_RESULT_OK} (0) and a {@link android.app.PendingIntent} that you can use to start the purchase flow. To see all the possible response codes from Google Play, see <a href="{@docRoot}google/play/billing/billing_reference.html#billing-codes">In-app Billing Reference</a>. Next, extract a {@link android.app.PendingIntent} from the response {@link android.os.Bundle} with key {@code BUY_INTENT}.
+  If the request is successful, the returned {@link android.os.Bundle} has a
+  response code of {@code BILLING_RESPONSE_RESULT_OK} (0) and a {@link
+  android.app.PendingIntent} that you can use to start the purchase flow. To
+  see all the possible response codes from Google Play, see <a href=
+  "{@docRoot}google/play/billing/billing_reference.html#billing-codes">In-app
+  Billing Reference</a>. Next, extract a {@link android.app.PendingIntent} from
+  the response {@link android.os.Bundle} with key {@code BUY_INTENT}.
 </p>
+
 <pre>
 PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
 </pre>
+
 <p>
-To complete the purchase transaction, call the {@link android.app.Activity#startIntentSenderForResult startIntentSenderForResult} method and use the {@link android.app.PendingIntent} that you created. In this example, you are using an arbitrary value of 1001 for the request code.</p>
+  To complete the purchase transaction, call the {@link
+  android.app.Activity#startIntentSenderForResult startIntentSenderForResult}
+  method and use the {@link android.app.PendingIntent} that you created. In
+  this example, you are using an arbitrary value of 1001 for the request code.
+</p>
+
 <pre>
 startIntentSenderForResult(pendingIntent.getIntentSender(),
    1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0),
    Integer.valueOf(0));
 </pre>
-<p>Google Play sends a response to your {@link android.app.PendingIntent} to the {@link android.app.Activity#onActivityResult onActivityResult} method of your application. The {@link android.app.Activity#onActivityResult onActivityResult} method will have a result code of {@code Activity.RESULT_OK} (1) or {@code Activity.RESULT_CANCELED} (0). To see the types of order information that is returned in the response {@link android.content.Intent}, see <a href="{@docRoot}google/play/billing/billing_reference.html#getBuyIntent">In-app Billing Reference</a>.</p>
 
-<p>The purchase data for the order is a String in JSON format that is mapped to the {@code INAPP_PURCHASE_DATA} key in the response {@link android.content.Intent}, for example:
+<p>
+  Google Play sends a response to your {@link android.app.PendingIntent} to the
+  {@link android.app.Activity#onActivityResult onActivityResult} method of your
+  application. The {@link android.app.Activity#onActivityResult
+  onActivityResult} method will have a result code of {@code
+  Activity.RESULT_OK} (1) or {@code Activity.RESULT_CANCELED} (0). To see the
+  types of order information that is returned in the response {@link
+  android.content.Intent}, see <a href=
+  "{@docRoot}google/play/billing/billing_reference.html#getBuyIntent">In-app
+  Billing Reference</a>.
+</p>
+
+<p>
+  The purchase data for the order is a String in JSON format that is mapped to
+  the {@code INAPP_PURCHASE_DATA} key in the response {@link
+  android.content.Intent}, for example:
+</p>
+
 <pre>
 '{
-   "orderId":"12999763169054705758.1371079406387615",
+   "orderId":"GPA.1234-5678-9012-34567",
    "packageName":"com.example.app",
    "productId":"exampleSku",
    "purchaseTime":1345678900000,
@@ -246,17 +429,22 @@
    "purchaseToken":<em>"opaque-token-up-to-1000-characters"</em>
  }'
 </pre>
+
+<p class="note">
+  <strong>Note:</strong> Google Play generates a token for the purchase. This
+  token is an opaque character sequence that may be up to 1,000 characters
+  long. Pass this entire token to other methods, such as when you consume the
+  purchase, as described in <a href=
+  "{@docRoot}training/in-app-billing/purchase-iab-products.html#Consume">Consume
+  a Purchase</a>. Do not abbreviate or truncate this token; you must save and
+  return the entire token.
 </p>
 
-<p class="note"><strong>Note:</strong> Google Play generates a token for the
-purchase. This token is an opaque character sequence that may be up to 1,000
-characters long. Pass this entire token to other methods, such as when you
-consume the purchase, as described in
-<a href="{@docRoot}training/in-app-billing/purchase-iab-products.html#Consume">Consume
-a Purchase</a>. Do not abbreviate or truncate this token; you must save and
-return the entire token.</p>
+<p>
+  Continuing from the previous example, you get the response code, purchase
+  data, and signature from the response {@link android.content.Intent}.
+</p>
 
-<p>Continuing from the previous example, you get the response code, purchase data, and signature from the response {@link android.content.Intent}.</p>
 <pre>
 &#64;Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
@@ -280,16 +468,59 @@
    }
 }
 </pre>
-<p class="note"><strong>Security Recommendation:</strong>  When you send a purchase request, create a String token that uniquely identifies this purchase request and include this token in the {@code developerPayload}.You can use a randomly generated string as the token. When you receive the purchase response from Google Play, make sure to check the returned data signature, the {@code orderId}, and the {@code developerPayload} String. For added security, you should perform the checking on your own secure server. Make sure to verify that the {@code orderId} is a unique value that you have not previously processed, and the {@code developerPayload} String matches the token that you sent previously with the purchase request.</p>
+
+<p class="note">
+  <strong>Security Recommendation:</strong> When you send a purchase request,
+  create a String token that uniquely identifies this purchase request and
+  include this token in the {@code developerPayload}.You can use a randomly
+  generated string as the token. When you receive the purchase response from
+  Google Play, make sure to check the returned data signature, the {@code
+  orderId}, and the {@code developerPayload} String. For added security, you
+  should perform the checking on your own secure server. Make sure to verify
+  that the {@code orderId} is a unique value that you have not previously
+  processed, and the {@code developerPayload} String matches the token that you
+  sent previously with the purchase request.
+</p>
 
 <h3 id="QueryPurchases">Querying for Purchased Items</h3>
-<p>To retrieve information about purchases made by a user from your app, call the {@code getPurchases} method on the In-app Billing Version 3 service. Pass in to the method the In-app Billing API version (“3”), the package name of your calling app, and the purchase type (“inapp” or "subs").</p>
+
+<p>
+  To retrieve information about purchases made by a user from your app, call
+  the {@code getPurchases} method on the In-app Billing Version 3 service. Pass
+  in to the method the In-app Billing API version (“3”), the package name of
+  your calling app, and the purchase type (“inapp” or "subs").
+</p>
+
 <pre>
 Bundle ownedItems = mService.getPurchases(3, getPackageName(), "inapp", null);
 </pre>
-<p>The Google Play service returns only the purchases made by the user account that is currently logged in to the device. If the request is successful, the returned {@link android.os.Bundle} has a response code of 0. The response {@link android.os.Bundle} also contains a list of the product IDs, a list of the order details for each purchase, and the signatures for each purchase.</p>
-<p>To improve performance, the In-app Billing service returns only up to 700 products that are owned by the user when {@code getPurchase} is first called. If the user owns a large number of products, Google Play includes a String token mapped to the key {@code INAPP_CONTINUATION_TOKEN} in the response {@link android.os.Bundle} to indicate that more products can be retrieved. Your application can then make a subsequent {@code getPurchases} call, and pass in this token as an argument. Google Play continues to return a continuation token in the response {@link android.os.Bundle} until all products that are owned by the user has been sent to your app.</p>
-<p>For more information about the data returned by {@code getPurchases}, see <a href="{@docRoot}google/play/billing/billing_reference.html#getPurchases">In-app Billing Reference</a>. The following example shows how you can retrieve this data from the response.
+
+<p>
+  The Google Play service returns only the purchases made by the user account
+  that is currently logged in to the device. If the request is successful, the
+  returned {@link android.os.Bundle} has a response code of 0. The response
+  {@link android.os.Bundle} also contains a list of the product IDs, a list of
+  the order details for each purchase, and the signatures for each purchase.
+</p>
+
+<p>
+  To improve performance, the In-app Billing service returns only up to 700
+  products that are owned by the user when {@code getPurchase} is first called.
+  If the user owns a large number of products, Google Play includes a String
+  token mapped to the key {@code INAPP_CONTINUATION_TOKEN} in the response
+  {@link android.os.Bundle} to indicate that more products can be retrieved.
+  Your application can then make a subsequent {@code getPurchases} call, and
+  pass in this token as an argument. Google Play continues to return a
+  continuation token in the response {@link android.os.Bundle} until all
+  products that are owned by the user has been sent to your app.
+</p>
+
+<p>For more information about the data returned by {@code getPurchases}, see
+  <a href="{@docRoot}google/play/billing/billing_reference.html#getPurchases">
+  In-app Billing Reference</a>. The following example shows how you can
+  retrieve this data from the response.
+</p>
+
 <pre>
 int response = ownedItems.getInt("RESPONSE_CODE");
 if (response == 0) {
@@ -302,7 +533,7 @@
    String continuationToken =
       ownedItems.getString("INAPP_CONTINUATION_TOKEN");
 
-   for (int i = 0; i < purchaseDataList.size(); ++i) {
+   for (int i = 0; i &lt; purchaseDataList.size(); ++i) {
       String purchaseData = purchaseDataList.get(i);
       String signature = signatureList.get(i);
       String sku = ownedSkus.get(i);
@@ -314,43 +545,76 @@
    // if continuationToken != null, call getPurchases again
    // and pass in the token to retrieve more items
 }
-
 </pre>
 
+
 <h3 id="Consume">Consuming a Purchase</h3>
-<p>You can use the In-app Billing Version 3 API to track the ownership of
-purchased in-app products in Google Play. Once an in-app product is purchased,
-it is considered to be "owned" and cannot be purchased from Google Play. You
-must send a consumption request for the in-app product before Google Play makes
-it available for purchase again.</p>
-<p class="caution"><strong>Important</strong>: Managed in-app products are
-consumable, but subscriptions are not.</p>
-<p>How you use the consumption mechanism in your app is up to you. Typically,
-you would implement consumption for in-app products with temporary benefits that
-users may want to purchase multiple times (for example, in-game currency or
-equipment). You would typically not want to implement consumption for in-app
-products that are purchased once and provide a permanent effect (for example,
-a premium upgrade).</p>
-<p>To record a purchase consumption, send the {@code consumePurchase} method to
-the In-app Billing service and pass in the {@code purchaseToken} String value
-that identifies the purchase to be removed. The {@code purchaseToken} is part
-of the data returned in the {@code INAPP_PURCHASE_DATA} String by the Google
-Play service following a successful purchase request. In this example, you are
-recording the consumption of a product that is identified with the
-{@code purchaseToken} in the {@code token} variable.</p>
+
+<p>
+  You can use the In-app Billing Version 3 API to track the ownership of
+  purchased in-app products in Google Play. Once an in-app product is
+  purchased, it is considered to be "owned" and cannot be purchased from Google
+  Play. You must send a consumption request for the in-app product before
+  Google Play makes it available for purchase again.
+</p>
+
+<p class="caution">
+  <strong>Important</strong>: Managed in-app products are consumable, but
+  subscriptions are not.
+</p>
+
+<p>
+  How you use the consumption mechanism in your app is up to you. Typically,
+  you would implement consumption for in-app products with temporary benefits
+  that users may want to purchase multiple times (for example, in-game currency
+  or equipment). You would typically not want to implement consumption for
+  in-app products that are purchased once and provide a permanent effect (for
+  example, a premium upgrade).
+</p>
+
+<p>
+  To record a purchase consumption, send the {@code consumePurchase} method to
+  the In-app Billing service and pass in the {@code purchaseToken} String value
+  that identifies the purchase to be removed. The {@code purchaseToken} is part
+  of the data returned in the {@code INAPP_PURCHASE_DATA} String by the Google
+  Play service following a successful purchase request. In this example, you
+  are recording the consumption of a product that is identified with the {@code
+  purchaseToken} in the {@code token} variable.
+</p>
+
 <pre>
 int response = mService.consumePurchase(3, getPackageName(), token);
 </pre>
-<p class="note"><strong>Warning:</strong> Do not call the {@code consumePurchase} method on the main thread.  Calling this method triggers a network request which could block your main thread.  Instead, create a separate thread and call the {@code consumePurchase} method from inside that thread.</p>
-<p>It's your responsibility to control and track how the in-app product is provisioned to the user. For example, if the user purchased in-game currency, you should update the player's inventory with the amount of currency purchased.</p>
-<p class="note"><strong>Security Recommendation:</strong> You must send a consumption request before provisioning the benefit of the consumable in-app purchase to the user. Make sure that you have received a successful consumption response from Google Play before you provision the item.</p>
+
+<p class="note">
+  <strong>Warning:</strong> Do not call the {@code consumePurchase} method on
+  the main thread. Calling this method triggers a network request which could
+  block your main thread. Instead, create a separate thread and call the {@code
+  consumePurchase} method from inside that thread.
+</p>
+
+<p>
+  It's your responsibility to control and track how the in-app product is
+  provisioned to the user. For example, if the user purchased in-game currency,
+  you should update the player's inventory with the amount of currency
+  purchased.
+</p>
+
+<p class="note">
+  <strong>Security Recommendation:</strong> You must send a consumption request
+  before provisioning the benefit of the consumable in-app purchase to the
+  user. Make sure that you have received a successful consumption response from
+  Google Play before you provision the item.
+</p>
 
 <h3 id="Subs">Implementing Subscriptions</h3>
+
 <p>Launching a purchase flow for a subscription is similar to launching the
 purchase flow for a product, with the exception that the product type must be set
 to "subs". The purchase result is delivered to your Activity's
 {@link android.app.Activity#onActivityResult onActivityResult} method, exactly
 as in the case of in-app products.</p>
+
 <pre>
 Bundle bundle = mService.getBuyIntent(3, "com.example.myapp",
    MY_SKU, "subs", developerPayload);
@@ -363,12 +627,15 @@
        Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));
 }
 </pre>
+
 <p>To query for active subscriptions, use the {@code getPurchases} method, again
 with the product type parameter set to "subs".</p>
+
 <pre>
 Bundle activeSubs = mService.getPurchases(3, "com.example.myapp",
                    "subs", continueToken);
 </pre>
+
 <p>The call returns a {@code Bundle} with all the active subscriptions owned by
 the user. Once a subscription expires without renewal, it will no longer appear
 in the returned {@code Bundle}.</p>
@@ -383,7 +650,7 @@
 
 <p class="note"><strong>Note:</strong>To find the public key portion of this key
 pair, open your application's details in the Developer Console, then click on
-<strong>Services & APIs</strong>, and look at the field titled
+<strong>Services &amp; APIs</strong>, and look at the field titled
 <strong>Your License Key for This Application</strong>.</p>
 
 <p>The Base64-encoded RSA public key generated by Google Play is in binary
@@ -399,13 +666,5 @@
 verification on that server.</p>
 
 <p>For more information about best practices for security and design, see <a
-href="{@docRoot}google/play/billing/billing_best_practices.html">Security and Design</a>.</p>
-
-
-
-
-
-
-
-
-
+href="{@docRoot}google/play/billing/billing_best_practices.html">Security and
+Design</a>.</p>
diff --git a/docs/html/google/play/billing/billing_overview.jd b/docs/html/google/play/billing/billing_overview.jd
index 732e328..cc56468 100644
--- a/docs/html/google/play/billing/billing_overview.jd
+++ b/docs/html/google/play/billing/billing_overview.jd
@@ -29,7 +29,13 @@
   </ol>
    <h2>Related Samples</h2>
   <ol>
-    <li><a href="{@docRoot}training/in-app-billing/preparing-iab-app.html#GetSample">Sample Application (V3)</a></li>
+    <li><a href="{@docRoot}training/in-app-billing/preparing-iab-app.html#GetSample">Sample
+      Application (V3)</a></li>
+  </ol>
+   <h2>Related Videos</h2>
+  <ol>
+    <li><a href="https://www.youtube.com/watch?v=UvCl5Xx7Z5o">Implementing
+      Freemium</a></li>
   </ol>
 </div>
 </div>
@@ -40,12 +46,13 @@
 
 <p class="note"><b>Note</b>: Ensure that you comply with applicable laws in the countries where you
 distribute apps. For example, in EU countries, laws based on the
-<a href="http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2005:149:0022:0039:EN:PDF">Unfair
-Commercial Practices Directive</a> prohibit direct exhortations to children to buy advertised
+<a href="http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2005:149:0022:0039:EN:PDF">
+Unfair Commercial Practices Directive</a> prohibit direct exhortations to children to buy advertised
 products or to persuade their parents or other adults to buy advertised products for them.
 See the
-<a href="http://ec.europa.eu/consumers/enforcement/docs/common_position_on_online_games_en.pdf">position
-of the EU consumer protection authorities</a> for more information on this and other topics.
+<a href="http://ec.europa.eu/consumers/enforcement/docs/common_position_on_online_games_en.pdf">
+position of the EU consumer protection authorities</a> for more information on this and other
+topics.
 </p>
 
 <h2 id="api">In-app Billing API</h2>
@@ -65,7 +72,9 @@
 <p>In-app billing Version 3 is the latest version, and maintains very broad
 compatibility across the range of Android devices. In-app Billing Version 3 is
 supported on devices running Android 2.2 or higher that have the latest version
-of the Google Play store installed (<a href="{@docRoot}about/dashboards/index.html">a vast majority</a> of active devices).</p>
+of the Google Play store installed (<a
+href="{@docRoot}about/dashboards/index.html">a vast majority</a> of active
+devices).</p>
 
 <h4>Version 3 features</h4>
 <ul>
@@ -107,7 +116,9 @@
 <p>You can specify these types of products for your In-app Billing application
 — <em>managed in-app products</em> and <em>subscriptions</em>. Google Play
 handles and tracks ownership for in-app products and subscriptions on your
-application on a per user account basis. <a href="{@docRoot}google/play/billing/api.html#producttypes">Learn more about the product types supported by In-app Billing Version 3</a>.</p>
+application on a per user account basis.
+<a href="{@docRoot}google/play/billing/api.html#producttypes">Learn more about
+the product types supported by In-app Billing Version 3</a>.</p>
 
 <h2 id="console">Google Play Developer Console</h2>
 <p>The Developer Console is where you can publish your
@@ -146,7 +157,9 @@
 provides a sample application that demonstrates how to sell in-app products and subscriptions
 from inside an app.</p>
 
-<p>The <a href="{@docRoot}training/in-app-billing/preparing-iab-app.html#GetSample">TrivialDrive sample for the Version 3 API</a> sample shows how to use the In-app Billing Version 3 API
+<p>The <a href="{@docRoot}training/in-app-billing/preparing-iab-app.html#GetSample">
+TrivialDrive sample for the Version 3 API</a> sample shows how to use the In-app
+Billing Version 3 API
 to implement in-app product and subscription purchases for a driving game. The
 application demonstrates how to send In-app Billing requests, and handle
 synchronous responses from Google Play. The application also shows how to record
@@ -160,7 +173,7 @@
 and Design</a>.</p>
 
 <h2 id="migration">Migration Considerations</h2>
-<p>The In-app Billing Version 2 API is deprecated and will be discontinued in January 2015.
+<p>The In-app Billing Version 2 API was discontinued in January 2015.
 If you have an existing In-app Billing implementation that uses API Version 2 or
 earlier, you must migrate to <a href="{@docRoot}google/play/billing/api.html">In-app Billing Version
 3</a>.</p>
@@ -173,11 +186,5 @@
 treated as managed products if you make a purchase request for these items using
 the Version 3 API. You do not need to create a new product entry in Developer
 Console for these items, and you can use the same product IDs to purchase these
-items. They will still continue to be treated as unmanaged items if you make a
-purchase request for them using the Version 2 or earlier API.
+items.
 </ul>
-
-
-
-
-
diff --git a/docs/html/google/play/billing/billing_promotions.jd b/docs/html/google/play/billing/billing_promotions.jd
new file mode 100644
index 0000000..ccf50fc
--- /dev/null
+++ b/docs/html/google/play/billing/billing_promotions.jd
@@ -0,0 +1,301 @@
+page.title=In-app Promotions
+parent.title=In-app Billing
+parent.link=index.html
+page.metaDescription=Support promo codes in your app, which let you give content or features away to a limited number of users free of charge.
+page.image=/images/play_dev.jpg
+page.tags="promotions, billing, promo codes"
+meta.tags="monetization, inappbilling, promotions"
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>Quickview</h2>
+  <h2>In this document</h2>
+  <ol>
+    <li><a href="#workflow">Creating and Redeeming Promo Codes</a></li>
+    <li><a href="#supporting">Supporting Promo Codes In Your App</a></li>
+    <li><a href="#testing">Testing In-app Promotions</a></li>
+  </ol>
+  <h2>See also</h2>
+  <ol>
+    <li><a href="{@docRoot}google/play/billing/billing_integrate.html">Implementing
+    In-app Billing</a></li>
+    <!-- TODO: link to blog post when available -->
+  </ol>
+</div>
+</div>
+
+<p>
+  Promo codes let you give content or features away to a limited number of
+  users free of charge. Once you create a promo code, you can distribute it
+  subject to the
+  <!--TODO: Link to TOS when/if they're available as a web page --> terms of
+  service. The user enters the promo code in your app or in the Play Store app,
+  and gets the item at no cost. You can use promo codes in many ways to
+  creatively engage with users. For example:
+</p>
+
+<ul>
+  <li>A game could have a special item, such as a character or decoration,
+  that's only available to players who attend an event. The developer could
+  distribute cards with promo codes at the event, and users would enter their
+  promo code to unlock the item.
+  </li>
+
+  <li>An app developer might distribute promo codes at local businesses, to
+  encourage potential users to try the app.
+  </li>
+
+  <li>An app developer might give out "friends and family" codes to its employees to
+  share with their friends.
+  </li>
+</ul>
+
+<p>
+  Every promo code is associated with a particular <em>product ID</em> (also
+  known as a <em>SKU</em>). You can create promo codes for your existing in-app
+  products. You can also keep a SKU off the Play Store, so the only way to get
+  that item is by entering that SKU's promo code. When a user enters the promo
+  code in the Play Store or in their app, the user gets the item, just as if
+  they paid full price for it. If your app already uses <a href=
+  "{@docRoot}google/play/billing/api.html">In-app Billing version 3</a> to
+  support in-app purchases, it's easy to add support for promo codes.
+</p>
+
+<h2 id="workflow">Creating and Redeeming Promo Codes</h2>
+
+<p>
+  You create promo codes through the <a href=
+  "https://play.google.com/apps/publish/" class="external-link">Google Play
+  Developer Console</a>. Each promo code is associated with a single product item
+  registered in the developer console.
+</p>
+
+<p>
+  When a user gets a promo code, they redeem it in one of two ways:
+</p>
+
+<ul>
+  <li>The user can enter the promo code as part of the app's ordinary purchase flow, as
+  described in <a href="{@docRoot}google/play/billing/billing_integrate.html">
+  Implementing In-app Billing</a>. As far as the app is concerned, this is
+  just like an ordinary purchase, except that the user makes payment with a
+  promo code instead of with money.
+  </li>
+
+  <li>The user can redeem the code in the Google Play Store app. Once the user
+  enters the code, the Play Store prompts the user to open the app (if they have
+  the latest version installed) or to download or update it. (We do not
+  currently support redeeming promo codes from the Google Play web store.)
+  </li>
+</ul>
+
+<p>
+  If the promo code is for a <a href=
+  "{@docRoot}google/play/billing/api.html#consumetypes">consumable product</a>,
+  the user can apply an additional code for the same product <em>after</em> the first
+  product is consumed. For example, a game might offer promo codes for a bundle
+  of extra lives. Betty has two different promo codes for that bundle. She
+  redeems a single promo code, then launches the game. When the game launches,
+  the her character receives the lives, consuming the item. She can now redeem
+  the second promo code for another bundle of lives. (She cannot redeem the
+  second promo code until after she consumes the item she purchased with the
+  first promo code.)
+</p>
+
+<h2 id="supporting">Supporting Promo Codes In Your App</h2>
+
+<p>
+  To support promotion codes, your app should call the <a href=
+  "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
+  ><code>getPurchases()</code></a>
+  method whenever the app starts or resumes. This method returns a bundle of all
+  current, unconsumed purchases, including purchases the user made by redeeming
+  a promo code. This simplest approach is to call <a href=
+  "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
+  ><code>getPurchases()</code></a>
+  in your activity's {@link android.app.Activity#onResume onResume()} method,
+  since that callback fires when the activity is created, as well as when the
+  activity is unpaused. Calling <a href=
+  "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
+  ><code>getPurchases()</code></a>
+  on startup and resume guarantees that your app will find out about all
+  purchases and redemptions the user may have made while the app wasn't
+  running. Furthermore, if a user makes a purchase while the app is running and
+  your app misses it for any reason, your app will still find out about the
+  purchase the next time the activity resumes and calls <a href=
+  "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
+  ><code>getPurchases()</code></a>.
+</p>
+
+<p>
+  In addition, your app should allow users to redeem promo codes inside the app
+  itself. If your app supports the in-app purchase workflow (described in
+  <a href=
+  "{@docRoot}google/play/billing/billing_integrate.html#billing-requests">Making
+  In-app Billing Requests</a>), your app automatically supports in-app
+  redemption of promo codes. When you launch the in-app purchase UI,
+  the user has the option to pay for the purchase with
+  a promo code. Your activity's {@link android.app.Activity#onActivityResult
+  onActivityResult()} method receives a response intent telling the app whether the
+  purchase was completed. However, your app should still call <a href=
+  "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
+  ><code>getPurchases()</code></a>
+  on startup and resume, just in case the purchase and consumption workflow
+  didn't complete. For example, if the user successfully redeems a promo code,
+  and then your app crashes before the item is consumed, your app still gets
+  information about the purchase when the app calls <a href=
+  "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
+  ><code>getPurchases()</code></a> on its next startup.
+</p>
+
+<p>
+  Your app should also support the scenario where a user redeems a promo code
+  in the Play Store app while the app is running. Your app can find out right
+  away when the user redeems a code by registering a listener for the
+  <code>PURCHASES_UPDATED</code> intent. The Play Store fires this intent
+  whenever a user redeems a promo code.
+</p>
+
+<p>
+  To listen for the <code>PURCHASES_UPDATED</code> intent, dynamically create a
+  {@link android.content.BroadcastReceiver} object and register it to listen
+  for <code>"com.android.vending.billing.PURCHASES_UPDATED"</code>. Register
+  the receiver by putting code like this in your activity's {@link
+  android.app.Activity#onResume onResume()} method:
+</p>
+
+<pre>IntentFilter promoFilter =
+    new IntentFilter("com.android.vending.billing.PURCHASES_UPDATED");
+registerReceiver(myPromoReceiver, promoFilter);</pre>
+
+<p>
+  When the user makes a purchase, the system invokes your broadcast receiver's
+  {@link android.content.BroadcastReceiver#onReceive onReceive()} method. That
+  method should call <a href=
+  "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
+  ><code>getPurchases()</code></a>
+  to see what purchases the user has made.
+</p>
+
+<p>
+  Your activity's {@link android.app.Activity#onPause onPause()} method should
+  unregister the broadcast receiver, to reduce system overhead when your app
+  isn't running:
+</p>
+
+<pre>unRegisterReceiver(myPromoReceiver);</pre>
+
+<p class="note">
+  <strong>Note:</strong> You should not register this broadcast receiver in the
+  app manifest. Declaring the receiver in the manifest can cause the system to
+  launch the app to handle the intent if the user makes a purchase while the app
+  isn't running. This behavior is not necessary, and may be annoying to the
+  user. Instead, your app should call <a href=
+  "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
+  ><code>getPurchases()</code></a>
+  when the user launches it, to find out about any purchases the user made
+  while the app wasn't running.
+</p>
+
+<h2 id="testing">Testing In-app Promotions</h2>
+
+<p>
+  If your app supports in-app promotions, you should test the following use
+  cases.
+</p>
+
+<h3 id="test-inapp">User redeems promo code in the app</h3>
+
+<p>
+  If the user redeems a promo code within the app's purchase flow, as described
+  in <a href=
+  "{@docRoot}google/play/billing/billing_integrate.html#billing-requests">Making
+  In-app Billing Requests</a>, the system invokes your activity's {@link
+  android.app.Activity#onActivityResult onActivityResult()} method to handle
+  the purchase. Verify that {@link android.app.Activity#onActivityResult
+  onActivityResult()} handles the purchase properly, whether the user uses cash
+  or a promo code.
+</p>
+
+<h3 id="test-playstore">User redeems promo code in the Play Store</h3>
+
+<p>
+  If the user redeems a promo code in the Play Store, there are several
+  possible workflows. You should verify each one of these.
+</p>
+
+<h4 id="test-app-uninstalled">App is not installed</h4>
+
+<p>
+  If the user redeems a promo code for an app that is not installed on the
+  device, the Play Store prompts the user to install the app. (If the app is
+  installed but not up-to-date, the Play Store prompts the user to update the
+  app.) You should test the following sequence on a device that does not
+  have your app installed.
+</p>
+
+<ol>
+  <li>User redeems a promo code for the app in the Play Store. The Play Store
+  prompts the user to install your app.
+  </li>
+
+  <li>User installs and launches your app. Verify that on startup, the app
+  calls <a href=
+  "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
+  ><code>getPurchases()</code></a>
+  and correctly detects the purchase the user made with the promo code.
+  </li>
+</ol>
+
+<h4 id="test-app-not-running">App is installed, but not running</h4>
+
+<p>
+  If the user redeems a promo code for an app that is installed on the device,
+  the Play Store prompts the user to switch to the app.  You should test the
+  following sequence on a device that has your app installed but not running:
+</p>
+
+<ol>
+  <li>User redeems a promo code for the app in the Play Store. The Play Store
+  prompts the user to switch to your app.
+  </li>
+
+  <li>User launches your app. Verify that on startup, the app calls <a href=
+  "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
+  ><code>getPurchases()</code></a>
+  and correctly detects the purchase the user made with the promo code.
+  </li>
+</ol>
+
+<h4 id="test-app-running">App is installed and running
+</h4>
+
+<p>
+  If the user redeems a promo code for an app that is currently running on the
+  device, the Play Store notifies the app via a <code>PURCHASES_UPDATED</code>
+  intent. You should test the following sequence:
+</p>
+
+<ol>
+  <li>User launches the app. Verify that the app has properly registered itself to
+  receive the <code>PURCHASES_UPDATED</code> intent.
+  </li>
+
+  <li>User launches the Play Store app and redeems a promo code for the app. The Play
+  Store fires a <code>PURCHASES_UPDATED</code> intent. Verify that your app's
+  {@link android.content.BroadcastReceiver#onReceive
+  BroadcastReceiver.onReceive()} callback fires to handle the intent.
+  </li>
+
+  <li>Your {@link android.content.BroadcastReceiver#onReceive onReceive()}
+  method should respond to the intent by calling <a href=
+  "{@docRoot}google/play/billing/billing_reference.html#getPurchases"
+  ><code>getPurchases()</code></a>. Verify that it calls this method, and that
+  it correctly detects the purchase the user made with the promo code.
+  </li>
+
+  <li>User switches back to your app. Verify that the user has the purchased
+  item.
+  </li>
+</ol>
diff --git a/docs/html/google/play/billing/billing_reference.jd b/docs/html/google/play/billing/billing_reference.jd
index b06d874..45ec785 100644
--- a/docs/html/google/play/billing/billing_reference.jd
+++ b/docs/html/google/play/billing/billing_reference.jd
@@ -29,11 +29,17 @@
   </ol>
 </div>
 </div>
-<p>This documentation provides technical reference information for using the In-app Billing Version 3 API. </p>
+<p>This documentation provides technical reference information for using the
+In-app Billing Version 3 API. </p>
 
 <h2 id="billing-codes">Server Response Codes</h2>
-<p>The following table lists all of the server response codes that are sent from Google Play to your application. Google Play sends the response code synchronously as an integer mapped to the {@code RESPONSE_CODE} key in the response {@code Bundle}. Your application must handle all of these response codes.</p>
-
+<p>
+  The following table lists all of the server response codes that are sent from
+  Google Play to your application. Google Play sends the response code
+  synchronously as an integer mapped to the {@code RESPONSE_CODE} key in the
+  response {@code Bundle}. Your application must handle all of these response
+  codes.
+</p>
 <p class="table-caption" id="response-codes-table">
 <strong>Table 1.</strong> Summary of response codes for In-app Billing Version 3 API calls.</p>
 <table>
@@ -70,7 +76,10 @@
   <tr>
     <td>{@code BILLING_RESPONSE_RESULT_DEVELOPER_ERROR}</td>
     <td>5</td>
-    <td>Invalid arguments provided to the API. This error can also indicate that the application was not correctly signed or properly set up for In-app Billing in Google Play, or does not have the necessary permissions in its manifest</td>
+    <td>Invalid arguments provided to the API. This error can also indicate that
+    the application was not correctly signed or properly set up for In-app
+    Billing in Google Play, or does not have the necessary permissions in its
+    manifest</td>
   </tr>
   <tr>
     <td>{@code BILLING_RESPONSE_RESULT_ERROR}</td>
@@ -90,13 +99,23 @@
 </table>
 
 <h2 id="billing-interface">API Reference</h2>
-<p>The In-app Billing Version 3 API is defined in the {@code IInAppBillingService.aidl} file, which is included with the Version 3 <a href="{@docRoot}training/in-app-billing/preparing-iab-app.html#GetSample">sample application</a>.</p>
+<p>The In-app Billing Version 3 API is defined in the {@code
+  IInAppBillingService.aidl} file, which is included with the Version 3
+  <a href="{@docRoot}training/in-app-billing/preparing-iab-app.html#GetSample">
+  sample application</a>.</p>
 
 <h3 id="getSkuDetails">The getSkuDetails() method</h3>
-<p>This method returns product details for a list of product IDs. In the response {@code Bundle} sent by Google Play, the query results are stored in a String {@code ArrayList} mapped to the {@code DETAILS_LIST} key. Each String in the details list contains product details for a single product in JSON format. The fields in the JSON string with the product details are summarized in table 2.</p>
-
+<p>
+  This method returns product details for a list of product IDs. In the
+  response {@code Bundle} sent by Google Play, the query results are stored in
+  a String {@code ArrayList} mapped to the {@code DETAILS_LIST} key. Each
+  String in the details list contains product details for a single product in
+  JSON format. The fields in the JSON string with the product details are
+  summarized in table 2.
+</p>
 <p class="table-caption" id="product-details-table">
-<strong>Table 2.</strong> Description of JSON fields with product item details returned from a {@code getSkuDetails} request.</p>
+<strong>Table 2.</strong> Description of JSON fields with product item details
+returned from a {@code getSkuDetails} request.</p>
 <table>
   <tr>
     <th scope="col">Key</th>
@@ -179,7 +198,8 @@
 </table>
 </p>
 
-<p>Table 4 describes the JSON fields that are returned in the response data for a purchase order.</p>
+<p>Table 4 describes the JSON fields that are returned in the response data for
+a purchase order.</p>
 <p class="table-caption" id="purchase-data-table">
 <strong>Table 4.</strong>  Descriptions of the JSON fields for {@code INAPP_PURCHASE_DATA}.</p>
 <table>
@@ -208,7 +228,9 @@
   <tr>
     <td>{@code orderId}</td>
     <td>A unique order identifier for the transaction. This identifier
-      corresponds to the Google payments order ID.</td>
+      corresponds to the Google payments order ID. If the order is a test
+      purchase made through the In-app Billing Sandbox, {@code orderId} is
+      blank.</td>
   </tr>
   <tr>
     <td>{@code packageName}</td>
@@ -216,7 +238,9 @@
   </tr>
   <tr>
     <td>{@code productId}</td>
-    <td>The item's product identifier. Every item has a product ID, which you must specify in the application's product list on the Google Play Developer Console.</td>
+    <td>The item's product identifier. Every item has a product ID, which you
+      must specify in the application's product list on the Google Play
+      Developer Console.</td>
   </tr>
   <tr>
     <td>{@code purchaseTime}</td>
@@ -304,7 +328,11 @@
 </p>
 
 <h3 id="getPurchases">The getPurchases() method</h3>
-<p>This method returns the current un-consumed products owned by the user. Table 5 lists the response data that is returned in the {@code Bundle}.</p>
+<p>This method returns the current un-consumed products owned by the user,
+  including both purchased items and items acquired by redeeming a promo code.
+  Table 5 lists the response data that is returned in the
+  {@link android.os.Bundle}.</p>
+
 <p class="table-caption" id="getpurchases-response-table">
 <strong>Table 6.</strong> Response data from a {@code getPurchases} request.</p>
 <table>
@@ -330,8 +358,13 @@
   </tr>
   <tr>
     <td>{@code INAPP_CONTINUATION_TOKEN}</td>
-    <td>String containing a continuation token to retrieve the next set of in-app products owned by the user. This is only set by the Google Play service if the number of products owned by the user is very large. When a continuation token is present in the response, you must make another call to {@code getPurchases} and pass in the continuation token that you received. The subsequent {@code getPurchases} call returns more purchases and possibly another continuation token.</td>
+    <td>String containing a continuation token to retrieve the next set of
+      in-app products owned by the user. This is only set by the Google Play
+      service if the number of products owned by the user is very large. When a
+      continuation token is present in the response, you must make another call
+      to {@code getPurchases} and pass in the continuation token that you
+      received. The subsequent {@code getPurchases} call returns more purchases
+      and possibly another continuation token.</td>
   </tr>
 </table>
 </p>
-
diff --git a/docs/html/google/play/billing/billing_subscriptions.jd b/docs/html/google/play/billing/billing_subscriptions.jd
index 13660b0..069947d 100644
--- a/docs/html/google/play/billing/billing_subscriptions.jd
+++ b/docs/html/google/play/billing/billing_subscriptions.jd
@@ -21,8 +21,10 @@
   </ol>
   <h2>See also</h2>
   <ol>
-    <li><a href="{@docRoot}google/play/billing/billing_integrate.html#Subs">Implementing Subscriptions (V3)</a></li>
-    <li><a href="https://developers.google.com/android-publisher/">Google Play Developer API</a></li>
+    <li><a href="{@docRoot}google/play/billing/billing_integrate.html#Subs">Implementing
+    Subscriptions (V3)</a></li>
+    <li><a href="https://developers.google.com/android-publisher/">Google Play
+    Developer API</a></li>
   </ol>
 </div>
 </div>
@@ -109,11 +111,12 @@
 <p>In general the same basic policies and terms apply to subscriptions as to
 standard in-app products, however there are some differences. For complete
 information about the current policies and terms, please read the <a
-href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en
-&answer=140504">policies document</a>.</p>
+href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=140504">
+policies document</a>.</p>
 
 <p>To learn about the minimum system requirements for
-subscriptions, see the <a href="{@docRoot}google/play/billing/versions.html#Subs">Version Notes</a>.</p>
+subscriptions, see the <a href="{@docRoot}google/play/billing/versions.html#Subs">
+Version Notes</a>.</p>
 
 <h2 id="administering">Configuring Subscription Items</h2>
 
@@ -167,9 +170,14 @@
   <li>Monthly &mdash; Google Play bills the customer’s Google payments account at
   the time of purchase and monthly subsequent to the purchase date (exact billing
   intervals can vary slightly over time).</li>
+  <li>3 Months &mdash; Google Play bills the customer’s Google payments account at
+  the time of purchase and every three months after that (exact billing
+  intervals can vary slightly over time).</li>
+  <li>6 Months &mdash; Google Play bills the customer’s Google payments account at
+  the time of purchase and every six months after that (exact billing
+  intervals can vary slightly over time).</li>
   <li>Annually &mdash; Google Play bills the customer's Google payments account at
   the time of purchase and again on the same date in subsequent years.</li>
-
   <li>Seasonal &mdash; Google Play bills the customer's Google payments account at
   the beginning of each "season" (you specify the season beginning and end
   dates). This
@@ -194,15 +202,8 @@
 href="{@docRoot}google/play/developer-api.html">Google Play Developer API</a>.</p>
 
 <p>If a recurring payment fails (for example, because the customer’s credit
-card has become invalid), the subscription does not renew. How your app is
-notified depends on the In-app Billing API version that you are using:</p>
-<ul>
-<li>With In-app Billing Version 3, the failed or expired subscription is no longer
-returned when you call {@code getPurchases}.</li>
-<li>With In-app Billing Version 2, Google Play notifies your app at the end of
-the active cycle that the purchase state of the subscription is now "Expired".
-</li>
-</ul>
+card has become invalid), the subscription does not renew. The {@code
+getPurchases()} method does not return failed or expired subscriptions.</p>
 
 <p class="note"><strong>Recommendation</strong>: Include business logic in your
 app to notify your backend servers of subscription purchases, tokens, and any
@@ -312,7 +313,8 @@
 try your subscription content before buying it. The trial period runs for the
 period of time that you set and then automatically converts to a full
 subscription managed according to the subscription's billing interval and
-price. Free trials are supported for monthly and annual subscriptions only, and are not supported for seasonal subscriptions.</p>
+price. Google Play supports free trials for all subscription types, including
+seasonal subscriptions.</p>
 
 <p>To take advantage of a free trial, a user must "purchase" the full
 subscription through the standard In-app Billing flow, providing a valid form of
@@ -330,10 +332,10 @@
 the amount set
 for the full subscription, and continuing at the subscription interval. If
 necessary, the user can cancel the subscription at any time during the trial
-period. In this case, Google Play <em>marks the subscription as expired immediately</em>,
-rather than waiting until the end of the trial period. The user has not
-paid for the trial period and so is not entitled to continued access after
-cancellation.</p>
+period. In this case, the subscription remains active until the end of the
+trial period, but Google Play sets the subscription <em>not</em> to renew
+automatically; at the end of the trial period the subscription expires, and
+Google Play does not charge the user.</p>
 
 <p>You can set up a trial period for a subscription in the Developer Console,
 without needing to modify or update your APK. Just locate and edit the
@@ -369,6 +371,24 @@
 product from the product list offered in your app to prevent users from seeing
 or purchasing it.</p>
 
+<h3 id="prorate">Prorated Seasonal Subscription Prices</h3>
+
+<p>You can set up prorated prices for users who buy seasonal subscriptions
+after the season's start date. You specify the date on which the discounted
+price takes effect. The discounted price takes effect at 0:00 UTC on
+the specified date. You can set multiple prorated prices, dropping the
+subscription price lower and lower as the season goes on. If a user purchases
+a prorated seasonal subscription and remains subscribed until the start of the
+next season, Google Play charges them the full subscription price when the next
+season starts.</p>
+
+<p>For example, the professional checkers season runs from March 1 to August 31.
+The <em>Checkers Dilettante</em> app offers a seasonal subscription for €10. The
+app also offers two prorated prices: €7.50 for users who sign up on or after
+June 1, and €5 for users who sign up on or after
+August 15. Regardless of when the user signs up, the seasonal subscription ends
+on August 31.</p>
+
 <h2 id="cancellation">Subscription Cancellation</h2>
 
 <p>Users can view the status of all of their subscriptions and cancel them if
@@ -398,7 +418,8 @@
 refund their subscription payments.
 Removing content that any subscriber is entitled to access
 will result in penalties. Please see the <a
-href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=140504">policies document</a> for more information. </p>
+href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=140504">
+policies document</a> for more information. </p>
 
 <h3 id="uninstall">App uninstallation</h3>
 
@@ -443,8 +464,8 @@
 outside of the app and Google Play (such as to a web site).</p>
 
 <p>For complete details about terms and policies, see the <a
-href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=140504">policies
-document</a>.</p>
+href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=140504">
+policies document</a>.</p>
 
 <h3 id="orderId">Subscription order numbers</h3>
 
@@ -453,10 +474,11 @@
 subscription and denotes
 each recurring transaction by appending an integer as follows: </p>
 
-<p><span style="color:#777"><code style="color:#777">12999556515565155651.5565135565155651</code> (base order number)</span><br />
-<code>12999556515565155651.5565135565155651..0</code> (first recurrence orderID)<br />
-<code>12999556515565155651.5565135565155651..1</code> (second recurrence orderID)<br />
-<code>12999556515565155651.5565135565155651..2</code> (third recurrence orderID)<br />
+<p><span style="color:#777"><code style="color:#777">GPA.1234-5678-9012-34567</code>
+(base order number)</span><br />
+<code>GPA.1234-5678-9012-34567..0</code> (first recurrence orderID)<br />
+<code>GPA.1234-5678-9012-34567..1</code> (second recurrence orderID)<br />
+<code>GPA.1234-5678-9012-34567..2</code> (third recurrence orderID)<br />
 ...<br /></p>
 
 <p>Google Play provides the order number as the value of the
diff --git a/docs/html/google/play/billing/billing_testing.jd b/docs/html/google/play/billing/billing_testing.jd
index f0eb254..018276d 100644
--- a/docs/html/google/play/billing/billing_testing.jd
+++ b/docs/html/google/play/billing/billing_testing.jd
@@ -26,16 +26,27 @@
 
 <ul>
 <li>Test purchases, which let license-test users purchase your published in-app
-    items, but without any actual charges to their accounts.</li>
+    items, without any actual charges to their accounts.</li>
 <li>Static billing responses from Google Play, for testing in early development</p>
 </ul>
 
-<p>To test In-app Billing in an application you must install the application on an Android-powered
-device. You cannot use the Android emulator to test In-app Billing.  The device you use for testing
-must run a standard version of the Android 1.6 or later platform (API level 4 or higher), and have
-the most current version of the Google Play application installed. If a device is not running the
-most current Google Play application, your application won't be able to send In-app Billing
-requests to Google Play. For general information about how to set up a device for use in
+<p>To test in-app billing, you need to publish your app to an <a
+href="https://support.google.com/googleplay/android-developer/answer/3131213">alpha
+or beta channel in Google Play.</a></p>
+
+<p>After you publish an app to an alpha or beta channel, it can take a few hours
+for the app to be available for testers. The version code of an APK on a test device
+must match the version currently uploaded to the alpha or beta channel on Google Play.</p>
+
+<p class="caution"><strong>Important</strong>: To test in-app products or make in-app
+purchases in your alpha or beta channel app, each tester
+needs to <a href="https://support.google.com/googleplay/android-developer/answer/3131213">opt-in
+to your app’s alpha or beta test</a>. On your test’s opt-in URL, your
+testers will get an explanation of what it means to be a tester and a link to opt-in.</p>
+
+<p>You can test on any Android-powered hardware device running Android 1.6 or higher.
+The most current version of the Google Play application must be installed on the device.
+For general information about how to set up a device for use in
 developing Android applications, see <a href="{@docRoot}tools/device.html">Using Hardware
 Devices</a>.</p>
 
@@ -43,18 +54,23 @@
 
 <p>When your In-app Billing implementation is ready, you can test purchasing of your in-app SKUs in two ways:</p>
 
-<ul> <li><strong>Test purchases</strong>, which let your selected license-test
+<ul>
+<li><strong>Test purchases</strong>, which let your selected license-test
 users purchase your in-app products without any resulting charges to the user.
-Test purchases can be used in alpha/beta releases or in published apps. </li>
+Test purchases can be used in alpha/beta releases only. </li>
 <li><strong>Real purchases</strong>, which let regular users make real purchases
-of your in-app products with actual charges to the user’s payment instruments.
-You can use Google Play’s alpha and beta release groups to manage
-the users who can make live purchases using your implementation.  </li>
+of your in-app products with actual charges to the user’s payment instruments.</li>
 </ul>
 
-<p>The sections below provide more detail about how to use these approaches for
+<p>In either case, you need to publish your app to Google Play's
+<a href="https://support.google.com/googleplay/android-developer/answer/3131213">alpha
+  and beta release channels</a> to manage the users who can make purchases.</p>
+
+  <p>The sections below provide more detail about how to use these approaches for
 testing and validation. </p>
 
+
+
 <h3 id="test-purchases">Test Purchases (In-app Billing Sandbox)</h3>
 
 <p>Test purchases offer a secure, convenient way to enable larger-scale testing
@@ -66,15 +82,18 @@
 <p>Once authorized for testing access, those users can make purchases without
 being charged.
 Test purchases are real orders and Google Play processes them in the same way as
-other orders. When purchases are complete, Google Play prevents the orders from
+other orders. However, the <code>orderId</code> field for test purchases is
+blank.
+When purchases are complete, Google Play prevents the orders from
 going to financial processing, ensuring that there are no actual charges to user
-accounts, and automatically canceling the completed orders after 14 days. </p>
+accounts, and automatically canceling the completed orders after 14 days.</p>
 
 <p class="note">
   <strong>Note:</strong> Test subscription purchases recur daily, regardless of
   the product's subscription period.
 </p>
 
+
 <h4 id="setup">Setting up test purchases</h4>
 
 <p>It’s easy to set up test purchases&mdash;any user account can be chosen to be
@@ -83,7 +102,7 @@
 method).</p>
 
 <p>First, upload and publish in-app products that you want testers to be able to
-purchase. You can upload and publish in-app products in the Developer Console. 
+purchase. You can upload and publish in-app products in the Developer Console.
 Note that you can upload and publish your in-app items before you publish the
 APK itself.</p>
 
@@ -97,13 +116,25 @@
 within 15 minutes those users can begin making test purchases of your in-app
 products.</p>
 
-<p class="note"><strong>Note</strong>: To make test purchases, the license test
-account must be on the user’s Android device. If the device has more than one
+<p class="caution"><strong>Important</strong>: After you publish your app
+to an alpha or beta channel, your testers need to <a
+href="https://support.google.com/googleplay/android-developer/answer/3131213">opt-in
+to your app’s alpha or beta test</a> using the provided opt-in URL before they
+can make test purchases. </p>
+
+<p class="note"><strong>Note</strong>: License test accounts
+must be on the user’s Android device. If the device has more than one
 account, the purchase will be made with the account that downloaded the app. If
 none of the accounts has downloaded the app, the purchase is made with the first
 account. Users can confirm the account that is making a purchase by expanding the
 purchase dialog.</p>
 
+<p class="note">
+  <strong>Note:</strong> For test subscription purchases, leave the {@code orderId}
+  field blank. You can use the {@code purchaseToken} field to identify test purchases.
+</p>
+
+
 <h4 id="tp-account">Test purchases and developer account</h4>
 <p>Authorized license test accounts are associated with your developer account
 in Google Play, rather than with a specific APK or package name. Identifying an
@@ -133,6 +164,22 @@
 by looking up their order numbers.</li>
 </ul>
 
+<p>
+  You can cancel test subscriptions purchases from the app page in the Play Store,
+  or use the 
+  <a href="https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/cancel">
+  {@code cancel}</a> method.
+</p>
+
+<p class="caution">
+  <strong>Important:</strong> The
+  <a href="https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/refund">
+  {@code refund}</a> and
+  <a href="https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/revoke">
+  {@code revoke}</a> methods do not support test purchases.
+</p>
+
+
 <h3 id="transations">Testing with real transactions</h3>
 <p>As you prepare to launch an app that uses In-app Billing, you can make use of
 Google Play alpha/beta release options to do validation and load testing on your
@@ -145,13 +192,19 @@
 license accounts in your alpha and beta distribution groups, those users will
 only be able to make test purchases. </p>
 
+<p class="caution"><strong>Important</strong>: After you publish your app
+to an alpha or beta channel, your testers need to <a
+href="https://support.google.com/googleplay/android-developer/answer/3131213">opt-in
+to your app’s alpha or beta test</a> using the provided opt-in URL before they
+can make test purchases. </p>
+
 
 <h2 id="billing-testing-static">Testing with Static Responses</h2>
 
 <p>We recommend that you first test your In-app Billing implementation using static responses from
 Google Play. This enables you to verify that your application is handling the primary Google
-Play responses correctly and that your application is able to verify signatures correctly. You can do this
-even if the app hasn't been published yet.</p>
+Play responses correctly and that your application is able to verify signatures correctly. You can
+do this even if the app hasn't been published yet.</p>
 
 <p>To test your implementation with static responses, you make an In-app Billing request using a
 special item that has a reserved product ID. Each reserved product ID returns a specific static
@@ -199,9 +252,11 @@
     billing service. Refunds must be initiated by you (the merchant). After you process a refund
     request through your Google payments merchant account, a refund message is sent to your application by
     Google Play. This occurs only when Google Play gets notification from Google payments that
-    a refund has been made. For more information about refunds, see <a href="{@docRoot}google/play/billing/v2/api.html#billing-action-notify">Handling
-IN_APP_NOTIFY messages</a> and <a href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=1153485">In-app Billing
-Pricing</a>.</p>
+    a refund has been made. For more information about refunds, see <a
+    href="{@docRoot}google/play/billing/v2/api.html#billing-action-notify">Handling
+    IN_APP_NOTIFY messages</a> and <a
+    href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=1153485"
+    >In-app Billing Pricing</a>.</p>
   </li>
   <li><strong>android.test.item_unavailable</strong>
     <p>When you make an In-app Billing request with this product ID, Google Play responds as
diff --git a/docs/html/google/play/billing/index.jd b/docs/html/google/play/billing/index.jd
index ae6e222..b2e9fe4 100644
--- a/docs/html/google/play/billing/index.jd
+++ b/docs/html/google/play/billing/index.jd
@@ -14,6 +14,18 @@
 <div class="sidebox">
   <h2><strong>New in In-App Billing</strong></h2>
   <ul>
+  <li><strong>In-app Promotions</strong>&mdash;Developers can create promo codes
+    which users can redeem for content or features.</li>
+  <li><strong>Prorated Subscription Prices</strong>&mdash;Content providers can
+    lower the price of seasonal subscriptions for users who sign up late in the
+    season. For example, a sports-related service might lower the subscription
+    price halfway through the sport's season.</li>
+  <li><strong>Free Trials</strong>&mdash;Content providers can
+    offer free trial periods for all kinds of subscriptions, including
+    seasonal subscriptions. If a user cancels the subscription in the trial
+    period, they pay nothing. If they do not cancel by the end of the
+    trial period, the subscription automatically converts to a paid
+    subscription.</li>
   <li><strong>Subscription Upgrade/Downgrade</strong>&mdash;A user can
     subscribe to a higher or lower tier of subscription while their current
     subscription is active. The old subscription is canceled, and the unused
@@ -24,9 +36,9 @@
     period.</li>
   <li><strong>IAB Sandbox</strong>&mdash;The In-app Billing Sandbox now supports
     testing subscription purchases.</li>
-  <li><strong>IAB v2 shutdown</strong>&mdash;In-app Billing v2 API is deprecated
-    and will be shut down in January 2015. If your app is still using In-app Billing
-    v2, please migrate to the v3 API as soon as possible.</li>
+  <li><strong>As of January 2015, the In-App Billing v2 API is shut down.
+    If your app is still using In-app Billing
+    v2, please migrate to the v3 API as soon as possible.</strong></li>
   <li><strong>Seasonal subscriptions</strong>&mdash;You can now set up a
     recurring <a href="billing_subscriptions.html#user-billing">seasonal
     subscription</a> that starts and ends on the same date each year (for
@@ -68,14 +80,17 @@
 provides a sample application that demonstrates how to sell standard in-app
 products and subscriptions from inside an app.</p>
 
-<p>To get started, read the documents below or take the <a href="{@docRoot}training/in-app-billing/index.html">Selling
-    In-app Products</a> training class.</p>
+<p>To get started, read the documents below or take the
+<a href="{@docRoot}training/in-app-billing/index.html">Selling In-app
+Products</a> training class.</p>
 
 <dl>
-  <dt><strong><a href="{@docRoot}google/play/billing/billing_overview.html">Overview</a></strong></dt>
+  <dt><strong><a href="{@docRoot}google/play/billing/billing_overview.html">
+      Overview</a></strong></dt>
     <dd>Read this document for a description of the underlying concepts in In-app Billing.</dd>
   <dt><strong><a href="{@docRoot}google/play/billing/api.html">Version 3 API</a></strong></dt>
-    <dd>Read the documents in this section for an overview of the latest version of In-app Billing, as well as implementation details and API reference.</dd>
+    <dd>Read the documents in this section for an overview of the latest version of In-app Billing,
+      as well as implementation details and API reference.</dd>
   <dt><strong><a href="{@docRoot}google/play/billing/billing_best_practices.html">Security
   and Design</a></strong></dt>
     <dd>Review these best practices to help ensure that your In-app Billing implementation is
diff --git a/docs/html/google/play/billing/v2/api.jd b/docs/html/google/play/billing/v2/api.jd
deleted file mode 100644
index 31dfdc9..0000000
--- a/docs/html/google/play/billing/v2/api.jd
+++ /dev/null
@@ -1,525 +0,0 @@
-page.title=In-app Billing Version 2
-excludeFromSuggestions=true
-@jd:body
-
-<p class="caution" style=
-"background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;">
-  The <strong>In-app Billing Version 2 API</strong> has been deprecated in
-  favor of the Version 3 API. If your app is using In-app Billing, please
-  <strong>make sure that it is using the Version 3 API</strong>. If your app is
-  still using the Version 2 API, you must <strong>migrate to the Version 3 API
-  as soon as possible</strong>.<br>
-  <br>
-  We plan to turn off the In-app Billing Version 2 service on <strong>January
-  27, 2015</strong>, after which time users will <strong>no longer be able to
-  purchase in-app items and subscriptions through the Version 2 API</strong>.
-  We strongly encourage and recommend you migrate your apps to use Version 3
-  API by November 2014, to provide ample time for users to update their apps to
-  the new version.<br>
-  <br>
-  For more information, please see the <a href=
-  "http://support.google.com/googleplay/android-developer/answer/6090268">Help Center
-  article</a>. For common questions about transitioning your implementation to
-  In-app Billing Version 3, please see <a href=
-  "{@docRoot}google/play/billing/billing_overview.html#migration">Migration
-  Considerations</a>.
-</p>
-    <div id="qv-wrapper" style="margin-top:0;">
-<div id="qv">
-
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#billing-types">Product and Purchase Types</a></li>
-    <li><a href="#billing-arch">Service Architecture</a></li>
-    <li><a href="#billing-msgs">Service Messages</a></li>
-    <ol>
-      <li><a href="#billing-request">Request messages</a></li>
-      <li><a href="#billing-response">Broadcast intents</a></li>
-      <li><a href="#billing-message-sequence">Messaging sequence</a></li>
-      <li><a href="#billing-action-notify">Handling IN_APP_NOTIFY messages</a></li>
-    </ol>
-    <li><a href="#billing-security">Security Controls</a></li>
-    <li><a href="#billing-limitations">Requirements and Limitations</a></li>
-  </ol>
-</div>
-</div>
-
-<p>In-app Billing version 2 is the legacy version of the Google Play In-app
-Billing. Like Version 3, it lets you interact with the Google Play purchase flow
-and payments system indirectly, by means of IPC communication with the Play
-Store app installed on the device. </p>
-
-<p>Unlike Version 3, the Version 2 API is
-asynchronous and uses service messages sent as broadcast intents, so
-it is more complicated than Version 3. </p>
-
-<h2 id="billing-types">Product Types</h2>
-
-<p>In-app Billing Version supports three different product types
-to give you flexibility in how you monetize your app. In all cases, you define
-your products using the Google Play Developer Console, including product type,
-SKU, price, description, and so on. For more information, see <a
-href="{@docRoot}google/play/billing/billing_admin.html">Administering In-app Billing</a>.</p>
-
-<ul>
-<li><em>Managed per user account</em> &mdash; Items that can be purchased only
-once per user account on Google Play. When a user purchases an item that uses
-the "managed per user account" product type, Google Play permanently stores the
-transaction information for each item on a per-user basis. This enables you to
-later query Google Play to restore the state of the items a specific user has
-purchased. If a user attempts to purchase a managed item that has already been
-purchased, Google Play prevents the user from purchasing the item again and
-displays an "Item already purchased" error.
-
-<p>The "managed" product type is useful if you are selling
-items such as game levels or application features. These items are not transient
-and usually need to be restored whenever a user reinstalls your application,
-wipes the data on their device, or installs your application on a new
-device.</p>
-
-<li><em>Unmanaged</em> &mdash; Items that do not have their transaction
-information stored on Google Play. This means that you cannot later query Google
-Play to retrieve transaction information for those items. For "unmanaged"
-purchases, you are responsible for managing the transaction information. Also,
-Google Play does not attempt to prevent the user from purchasing an item
-multiple times if it uses the "unmanaged" product type. It's up to you to
-control how many times an unmanaged item can be purchased.</p>
-
-<p>The "unmanaged" product type is useful if you are selling consumable items,
-such as fuel or magic spells. These items are consumed within your application
-and are usually purchased multiple times.</p></li>
-
-<li><em>Subscriptions</em> &mdash; Items that are sold with a
-developer-specified, recurring billing interval. When a user purchases a
-subscription, Google Play and its payment processor automatically bill the
-user's account at the specified interval and price, charging the amount to the
-original payment method. Once the user purchases a subscription, Google Play
-continues billing the account indefinitely, without requiring approval or action
-from the user. The user can cancel the subscription at any time. 
-
-<p>Subscriptions can only be sold using the "managed per user account" purchase
-type. As with in-app products, once the user has purchased an in-app product
-there is no refund window. Users desiring refunds must contact the developer
-directly. For more information about subscriptions and how to sell them in your
-apps, see the <a href="{@docRoot}google/play/billing/v2/billing_subscriptions.html">Subscriptions</a>
-document.</p></li>
-</ul>
-
-<h2 id="billing-arch">Service Architecture</h2>
-
-<p>Your app accesses the In-app Billing service using an API that is exposed by
-the Google Play app installed on the device. The Google Play app then uses an
-asynchronous message loop to convey billing requests and responses between your
-application and the Google Play server. In practice, your application never
-directly communicates with the Google Play server (see figure 1). Instead, your
-application sends billing requests to the Google Play application over
-interprocess communication (IPC) and receives purchase responses from the Google
-Play application in the form of asynchronous broadcast intents. Your application
-does not manage any network connections between itself and the Google Play
-server or use any special APIs from the Android platform.</p>
-
-<div class="figure" style="width:440px">
-<img src="/images/billing_arch.png" alt="" height="582" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> Your application sends and receives billing messages through the
-  Google Play application, which handles all communication with the Google Play server.</p>
-</div>
-
-<p>Some in-app billing implementations may also use a private remote server to deliver content or
-validate transactions, but a remote server is not required to implement in-app billing. A remote
-server can be useful if you are selling digital content that needs to be delivered to a user's
-device, such as media files or photos. You might also use a remote server to store users'
-transaction history or perform various in-app billing security tasks, such as signature
-verification. Although you can handle all security-related tasks in your application, performing
-those tasks on a remote server is recommended because it helps make your application less vulnerable
-to security attacks.</p>
-
-<p>A typical in-app billing implementation relies on three components:</p>
-<ul>
-  <li>A {@link android.app.Service Service} (named <code>BillingService</code> in the sample application),
-  which processes purchase messages from the application and sends billing requests to the Google
-  Play in-app billing service.</li>
-  <li>A {@link android.content.BroadcastReceiver BroadcastReceiver} (named <code>BillingReceiver</code> in the sample
-  application), which receives all asynchronous billing responses from the Google Play
-  application.</li>
-  <li>A security component (named <code>Security</code> in the sample application), which performs
-  security-related tasks, such as signature verification and nonce generation. For more information
-  about in-app billing security, see <a href="#billing-security">Security controls</a> later in this
-  document.</li>
-</ul>
-
-<p>You may also want to incorporate two other components to support in-app billing:</p>
-<ul>
-  <li>A response {@link android.os.Handler Handler} (named <code>ResponseHandler</code> in the sample
-  application), which provides application-specific processing of purchase notifications, errors,
-  and other status messages.</li>
-  <li>An observer (named <code>PurchaseObserver</code> in the sample application), which is
-  responsible for sending callbacks to your application so you can update your user interface with
-  purchase information and status.</li>
-</ul>
-
-<p>In addition to these components, your application must provide a way to store information about
-users' purchases and some sort of user interface that lets users select items to purchase. You do
-not need to provide a checkout user interface. When a user initiates an in-app purchase, the Google
-Play application presents the checkout user interface to your user. When the user completes the
-checkout process, your application resumes.</p>
-
-<h2 id="billing-msgs">In-app Billing Messages</h2>
-
-<p>When the user initiates a purchase, your application sends billing messages to Google Play's
-in-app billing service (named <code>MarketBillingService</code>) using simple IPC method calls. The
-Google Play application responds to all billing requests synchronously, providing your
-application with status notifications and other information. The Google Play application also
-responds to some billing requests asynchronously, providing your application with error messages and
-detailed transaction information. The following section describes the basic request-response
-messaging that takes place between your application and the Google Play application.</p>
-
-<h3 id="billing-request">In-app billing requests</h3>
-
-<p>Your application sends in-app billing requests by invoking a single IPC method
-(<code>sendBillingRequest()</code>), which is exposed by the <code>MarketBillingService</code>
-interface. This interface is defined in an <a
-href="{@docRoot}guide/components/aidl.html">Android Interface Definition Language</a> file
-(<code>IMarketBillingService.aidl</code>). You can <a
-href="{@docRoot}google/play/billing/v2/billing_integrate.html#billing-download">download</a> this AIDL
-file with the in-app billing sample application.</p>
-
-<p>The <code>sendBillingRequest()</code> method has a single {@link android.os.Bundle Bundle} parameter.
-The Bundle that you deliver must include several key-value pairs that specify various parameters for
-the request, such as the type of billing request you are making, the item that is being purchased and
-its type, and the application that is making the request. For more information about the Bundle keys
-that are sent with a request, see <a
-href="{@docRoot}google/play/billing/v2/billing_reference.html#billing-interface">In-app Billing
-Service Interface</a>.
-
-<p>One of the most important keys that every request Bundle must have is the
-<code>BILLING_REQUEST</code> key. This key lets you specify the type of billing request you are
-making. Google Play's in-app billing service supports the following five types of billing
-requests:</p>
-
-<ul>
-  <li><code>CHECK_BILLING_SUPPORTED</code>
-    <p>This request verifies that the Google Play application supports in-app billing. You
-    usually send this request when your application first starts up. This request is useful if you
-    want to enable or disable certain UI features that are relevant only to in-app billing.</p>
-  </li>
-  <li><code>REQUEST_PURCHASE</code>
-    <p>This request sends a purchase message to the Google Play application and is the foundation
-    of in-app billing. You send this request when a user indicates that he or she wants to purchase
-    an item in your application. Google Play then handles the financial transaction by displaying
-    the checkout user interface.</p>
-  </li>
-  <li><code>GET_PURCHASE_INFORMATION</code>
-    <p>This request retrieves the details of a purchase state change. A purchase changes state when
-    a requested purchase is billed successfully or when a user cancels a transaction during
-    checkout. It can also occur when a previous purchase is refunded. Google Play notifies your
-    application when a purchase changes state, so you only need to send this request when there is
-    transaction information to retrieve.</p>
-  </li>
-  <li><code>CONFIRM_NOTIFICATIONS</code>
-    <p>This request acknowledges that your application received the details of a purchase state
-    change. Google Play sends purchase state change notifications to your application until you
-    confirm that you received them.</p>
-  </li>
-  <li><code>RESTORE_TRANSACTIONS</code>
-    <p>This request retrieves a user's transaction status for <a
-    href="{@docRoot}google/play/billing/billing_admin.html#billing-purchase-type">managed
-    purchases</a> and <a
-    href="{@docRoot}google/play/billing/billing_admin.html#billing-purchase-type">subscriptions</a>.
-    You should send this request only when you need to retrieve a user's transaction
-    status, which is usually only when your application is reinstalled or installed for the first
-    time on a device.</p>
-  </li>
-</ul>
-
-<h3 id="billing-response">In-app Billing Responses</h3>
-
-<p>The Google Play application responds to in-app billing requests with both synchronous and
-asynchronous responses. The synchronous response is a {@link android.os.Bundle Bundle} with the following
-three keys:</p>
-
-<ul>
-  <li><code>RESPONSE_CODE</code>
-    <p>This key provides status information and error information about a request.</p>
-  </li>
-  <li><code>PURCHASE_INTENT</code>
-    <p>This key provides a {@link android.app.PendingIntent PendingIntent}, which you use to launch the checkout
-    activity.</p>
-  </li>
-  <li><code>REQUEST_ID</code>
-    <p>This key provides you with a request identifier, which you can use to match asynchronous
-    responses with requests.</p>
-  </li>
-</ul>
-<p>Some of these keys are not relevant to every request. For more information, see <a
-href="#billing-message-sequence">Messaging sequence</a> later in this document.</p>
-
-<p>The asynchronous response messages are sent in the form of individual broadcast intents and
-include the following:</p>
-
-<ul>
-    <li><code>com.android.vending.billing.RESPONSE_CODE</code>
-    <p>This response contains a Google Play server response code, and is sent after you make an
-    in-app billing request. A server response code can indicate that a billing request was
-    successfully sent to Google Play or it can indicate that some error occurred during a billing
-    request. This response is <em>not</em> used to report any purchase state changes (such as refund
-    or purchase information). For more information about the response codes that are sent with this
-    response, see <a
-    href="{@docRoot}google/play/billing/v2/billing_reference.html#billing-codes">Server Response Codes
-    for In-app Billing</a>.</p>
-  </li>
-  <li><code>com.android.vending.billing.IN_APP_NOTIFY</code>
-    <p>This response indicates that a purchase has changed state, which means a purchase succeeded,
-    was canceled, or was refunded. This response contains one or more notification IDs. Each
-    notification ID corresponds to a specific server-side message, and each messages contains
-    information about one or more transactions. After your application receives an
-    <code>IN_APP_NOTIFY</code> broadcast intent, you send a <code>GET_PURCHASE_INFORMATION</code>
-    request with the notification IDs to retrieve message details.</p>
-  </li>
-  <li><code>com.android.vending.billing.PURCHASE_STATE_CHANGED</code>
-    <p>This response contains detailed information about one or more transactions. The transaction
-    information is contained in a JSON string. The JSON string is signed and the signature is sent
-    to your application along with the JSON string (unencrypted). To help ensure the security of
-    your in-app billing messages, your application can verify the signature of this JSON string.</p>
-  </li>
-</ul>
-
-<p>The JSON string that is returned with the <code>PURCHASE_STATE_CHANGED</code> intent provides
-your application with the details of one or more billing transactions. An example of this JSON
-string for a subscription item is shown below:</p>
-<pre class="no-pretty-print" style="color:black">{ "nonce" : 1836535032137741465,
-  "orders" :
-    [{ "notificationId" : "android.test.purchased",
-       "orderId" : "transactionId.android.test.purchased",
-       "packageName" : "com.example.dungeons",
-       "productId" : "android.test.purchased",
-       "developerPayload" : "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
-       "purchaseTime" : 1290114783411,
-       "purchaseState" : 0,
-       "purchaseToken" : "rojeslcdyyiapnqcynkjyyjh" }]
-}
-</pre>
-
-<p>For more information about the fields in this JSON string, see <a
-href="{@docRoot}google/play/billing/v2/billing_reference.html#billing-intents">In-app Billing
-Broadcast Intents</a>.</p>
-
-<h3 id="billing-message-sequence">Messaging sequence</h3>
-
-<p>The messaging sequence for a typical purchase request is shown in figure 2. Request types for
-each <code>sendBillingRequest()</code> method are shown in <strong>bold</strong>, broadcast intents
-are shown in <em>italic</em>. For clarity, figure 2 does not show the <code>RESPONSE_CODE</code>
-broadcast intents that are sent for every request.</p>
-
-<p>The basic message sequence for an in-app purchase request is as follows:</p>
-
-<ol>
-  <li>Your application sends a purchase request (<code>REQUEST_PURCHASE</code> type), specifying a
-  product ID and other parameters.</li>
-  <li>The Google Play application sends your application a Bundle with the following keys:
-  <code>RESPONSE_CODE</code>, <code>PURCHASE_INTENT</code>, and <code>REQUEST_ID</code>. The
-  <code>PURCHASE_INTENT</code> key provides a {@link android.app.PendingIntent PendingIntent}, which your
-  application uses to start the checkout UI for the given product ID.</li>
-  <li>Your application launches the pending intent, which launches the checkout UI.
-    <p class="note"><strong>Note:</strong> You must launch the pending intent from an activity
-    context and not an application context.</p>
-  </li>
-  <li>When the checkout flow finishes (that is, the user successfully purchases the item or cancels
-  the purchase), Google Play sends your application a notification message (an
-  <code>IN_APP_NOTIFY</code> broadcast intent). The notification message includes a notification ID,
-  which references the transaction.</li>
-  <li>Your application requests the transaction information by sending a
-  <code>GET_PURCHASE_STATE_CHANGED</code> request, specifying the notification ID for the
-  transaction.</li>
-  <li>The Google Play application sends a Bundle with a <code>RESPONSE_CODE</code> key and a 
-  <code>REQUEST_ID</code> key.
-  <li>Google Play sends the transaction information to your application in a
-  <code>PURCHASE_STATE_CHANGED</code> broadcast intent.</li>
-  <li>Your application confirms that you received the transaction information for the given
-  notification ID by sending a confirmation message (<code>CONFIRM_NOTIFICATIONS</code> type),
-  specifying the notification ID for which you received transaction information.</li>
-  <li>The Google Play application sends your application a Bundle with a
-  <code>RESPONSE_CODE</code> key and a <code>REQUEST_ID</code> key.</li>
-</ol>
-
-<img src="/images/billing_request_purchase.png" height="231" id="figure2" />
-<p class="img-caption">
-  <strong>Figure 2.</strong> Message sequence for a purchase request.
-</p>
-
-<p>Keep in mind, you must send a confirmation when you receive transaction information from Google
-Play (step 8 in figure 2). If you don't send a confirmation message, Google Play will
-continue sending <code>IN_APP_NOTIFY</code> messages for the transactions you have not
-confirmed. As a best practice, you should not send a <code>CONFIRM_NOTIFICATIONS</code> request for
-a purchased item until you have delivered the item to the user. This way, if your application
-crashes or something else prevents your application from delivering the product, your application
-will still receive an <code>IN_APP_NOTIFY</code> broadcast intent from Google Play indicating
-that you need to deliver the product. Also, as a best practice, your application must be able to
-handle <code>IN_APP_NOTIFY</code> messages that contain multiple orders.</p>
-
-<p>The messaging sequence for a restore transaction request is shown in figure 3. Request types for
-each <code>sendBillingRequest()</code> method are shown in <strong>bold</strong>, broadcast intents
-are shown in <em>italic</em>. For clarity, figure 3 does not show the <code>RESPONSE_CODE</code>
-broadcast intents that are sent for every request.</p>
-
-<div class="figure" style="width:490px">
-<img src="/images/billing_restore_transactions.png" alt="" height="168" />
-<p class="img-caption">
-  <strong>Figure 3.</strong> Message sequence for a restore transactions request.
-</p>
-</div>
-
-<p>The request triggers three responses. The first is a {@link android.os.Bundle Bundle} with a
-<code>RESPONSE_CODE</code> key and a <code>REQUEST_ID</code> key. Next, the Google Play
-application sends a <code>RESPONSE_CODE</code> broadcast intent, which provides status information
-or error information about the request. As always, the <code>RESPONSE_CODE</code> message references
-a specific request ID, so you can determine which request a <code>RESPONSE_CODE</code> message
-pertains to.</p>
-
-<p>The <code>RESTORE_TRANSACTIONS</code> request type also triggers a
-<code>PURCHASE_STATE_CHANGED</code> broadcast intent, which contains the same type of transaction
-information that is sent during a purchase request. Unlike with a purchase request, however, the transactions
-are given without any associated notification IDs, so you do not need to respond to this
-intent with a <code>CONFIRM_NOTIFICATIONS</code> message. </p>
-
-<p class="note"><strong>Note:</strong> You should use the <code>RESTORE_TRANSACTIONS</code> request
-type only when your application is installed for the first time on a device or when your
-application has been removed from a device and reinstalled.</p>
-
-<p>The messaging sequence for checking whether in-app billing is supported is shown in figure 4. The
-request type for the <code>sendBillingRequest()</code> method is shown in <strong>bold</strong>.</p>
-
-<div class="figure" style="width:454px">
-<img src="/images/billing_check_supported.png" alt="" height="168" />
-<p class="img-caption">
-  <strong>Figure 4.</strong> Message sequence for checking whether in-app billing is supported.
-</p>
-</div>
-
-<p>The synchronous response for a <code>CHECK_BILLING_SUPPORTED</code> request provides a Bundle
-with a server response code.  A <code>RESULT_OK</code> response code indicates that in-app billing
-is supported; a <code>RESULT_BILLING_UNAVAILABLE</code> response code indicates that in-app billing
-is unavailable because the API version you specified is unrecognized or the user is not eligible to
-make in-app purchases (for example, the user resides in a country that does not allow in-app
-billing). A <code>SERVER_ERROR</code> can also be returned, indicating that there was a problem with
-the Google Play server.</p>
-
-<h3 id="billing-action-notify">Handling IN_APP_NOTIFY messages</h3>
-
-<p>Usually, your application receives an <code>IN_APP_NOTIFY</code> broadcast intent from Google
-Play in response to a <code>REQUEST_PURCHASE</code> message (see figure 2). The
-<code>IN_APP_NOTIFY</code> broadcast intent informs your application that the state of a requested
-purchase has changed. To retrieve the details of that purchase, your application sends a
-<code>GET_PURCHASE_INFORMATION</code> request. Google Play responds with a
-<code>PURCHASE_STATE_CHANGED</code> broadcast intent, which contains the details of the purchase
-state change. Your application then sends a <code>CONFIRM_NOTIFICATIONS</code> message, informing
-Google Play that you have received the purchase state change information.</p>
-
-<p>In some special cases, you may receive multiple <code>IN_APP_NOTIFY</code> messages even though
-you have confirmed receipt of the purchase information, or you may receive
-<code>IN_APP_NOTIFY</code> messages for a purchase change even though you never initiated the
-purchase. Your application must handle both of these special cases.</p>
-
-<h4>Handling multiple IN_APP_NOTIFY messages</h4>
-
-<p>When Google Play receives a <code>CONFIRM_NOTIFICATIONS</code> message for a given
-<code>PURCHASE_STATE_CHANGED</code> message, it usually stops sending <code>IN_APP_NOTIFY</code>
-intents for that <code>PURCHASE_STATE_CHANGED</code> message. Sometimes, however, Google
-Play may send repeated <code>IN_APP_NOTIFY</code> intents for a
-<code>PURCHASE_STATE_CHANGED</code> message even though your application has sent a
-<code>CONFIRM_NOTIFICATIONS</code> message. This can occur if a device loses network connectivity
-while you are sending the <code>CONFIRM_NOTIFICATIONS</code> message. In this case, Google Play
-might not receive your <code>CONFIRM_NOTIFICATIONS</code> message and it could send multiple
-<code>IN_APP_NOTIFY</code> messages until it receives acknowledgement that you received the
-transaction message. Therefore, your application must be able to recognize that the subsequent
-<code>IN_APP_NOTIFY</code> messages are for a previously processed transaction. You can do this by
-checking the <code>orderID</code> that's contained in the JSON string because every transaction has
-a unique <code>orderId</code>.</p>
-
-<h4>Handling refunds and other unsolicited IN_APP_NOTIFY messages</h4>
-
-<p>There are two cases where your application may receive <code>IN_APP_NOTIFY</code> broadcast
-intents even though your application has not sent a <code>REQUEST_PURCHASE</code> message. Figure 5
-shows the messaging sequence for both of these cases. Request types for each
-<code>sendBillingRequest()</code> method are shown in <strong>bold</strong>, broadcast intents are
-shown in <em>italic</em>. For clarity, figure 5 does not show the <code>RESPONSE_CODE</code>
-broadcast intents that are sent for every request.</p>
-
-<div class="figure" style="width:481px">
-<img src="/images/billing_refund.png" alt="" height="189" />
-<p class="img-caption">
-  <strong>Figure 5.</strong> Message sequence for refunds and other unsolicited
-IN_APP_NOTIFY messages.</p>
-</div>
-
-<p>In the first case, your application may receive an <code>IN_APP_NOTIFY</code> broadcast intent
-when a user has your application installed on two (or more) devices and the user makes an in-app
-purchase from one of the devices. In this case, Google Play sends an <code>IN_APP_NOTIFY</code>
-message to the second device, informing the application that there is a purchase state change. Your
-application can handle this message the same way it handles the response from an
-application-initiated <code>REQUEST_PURCHASE</code> message, so that ultimately your application
-receives a <code>PURCHASE_STATE_CHANGED</code> broadcast intent message that includes information
-about the item that has been purchased. This applies only to items that have their product type
-set to "managed per user account."</p>
-
-<p>In the second case, your application can receive an <code>IN_APP_NOTIFY</code> broadcast intent
-when Google Play receives a refund notification from Google. In this case, Google
-Play sends an <code>IN_APP_NOTIFY</code> message to your application. Your application can handle
-this message the same way it handles responses from an application-initiated
-<code>REQUEST_PURCHASE</code> message so that ultimately your application receives a
-<code>PURCHASE_STATE_CHANGED</code> message that includes information about the item that has been
-refunded. The refund information is included in the JSON string that accompanies the
-<code>PURCHASE_STATE_CHANGED</code> broadcast intent. Also, the <code>purchaseState</code> field in
-the JSON string is set to 2.</p>
-
-<p class="caution"><strong>Important:</strong> You cannot use the API to
-issue refunds or cancel in-app billing transactions. You must do this manually through your
-Google payments merchant account. However, you can use the API to retrieve order
-information.</p>
-
-<h2 id="billing-security">Security Controls</h2>
-
-<p>To help ensure the integrity of the transaction information that is sent to your application,
-Google Play signs the JSON string that is contained in the <code>PURCHASE_STATE_CHANGED</code>
-broadcast intent. Google Play uses the private key that is associated with the app to create
-this signature. The Developer Console generates an RSA key pair for each app.
-You can find the public key portion of this key pair in the app's publishing details
-in the Developer Console, under <strong>Settings</strong>, in the License Key field.</p>
-
-<p>When Google Play signs a billing response, it includes the signed JSON string (unencrypted)
-and the signature. When your application receives this signed response you can use the public key
-portion of your RSA key pair to verify the signature. By performing signature verification you can
-help detect responses that have been tampered with or that have been spoofed. You can perform this
-signature verification step in your application; however, if your application connects to a secure
-remote server then we recommend that you perform the signature verification on that server.</p>
-
-<p>In-app billing also uses nonces (a random number used once) to help verify the integrity of the
-purchase information that's returned from Google Play. Your application must generate a nonce and
-send it with a <code>GET_PURCHASE_INFORMATION</code> request and a <code>RESTORE_TRANSACTIONS</code>
-request. When Google Play receives the request, it adds the nonce to the JSON string that
-contains the transaction information. The JSON string is then signed and returned to your
-application. When your application receives the JSON string, you need to verify the nonce as well as
-the signature of the JSON string.</p>
-
-<p>For more information about best practices for security and design, see <a
-href="{@docRoot}google/play/billing/billing_best_practices.html">Security and Design</a>.</p>
-
-<h2 id="billing-limitations">In-app Billing Requirements and Limitations</h2>
-
-<p>Before you get started with in-app billing, be sure to review the following requirements and
-limitations.</p>
-
-<ul>
-  <li>In-app billing can be implemented only in applications that you publish through Google
-  Play.</li>
-  <li>You must have a Google payments Merchant account to use Google Play In-app Billing.</li>
-  <li>To support subscriptions, version 3.5 or higher of the Google Play app is required. </li>
-  <li>In-app Billing requires Android 1.6 (API level 4) or higher.</li>
-  <li>You can use in-app billing to sell only digital content. You cannot use in-app billing to sell
-  physical goods, personal services, or anything that requires physical delivery.</li>
-  <li>Google Play does not provide any form of content delivery. You are responsible for
-  delivering the digital content that you sell in your applications.</li>
-  <li>You cannot implement in-app billing on a device that never connects to the network. To
-  complete in-app purchase requests, a device must be able to access the Google Play server over
-  the network. </li>
-</ul>
diff --git a/docs/html/google/play/billing/v2/billing_integrate.jd b/docs/html/google/play/billing/v2/billing_integrate.jd
deleted file mode 100644
index 1345c19..0000000
--- a/docs/html/google/play/billing/v2/billing_integrate.jd
+++ /dev/null
@@ -1,1145 +0,0 @@
-page.title=Implementing In-app Billing <span style="font-size:16px;">(IAB Version 2)</span>
-excludeFromSuggestions=true
-@jd:body
-
-<p class="caution" style=
-"background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;">
-  The <strong>In-app Billing Version 2 API</strong> has been deprecated in
-  favor of the Version 3 API. If your app is using In-app Billing, please
-  <strong>make sure that it is using the Version 3 API</strong>. If your app is
-  still using the Version 2 API, you must <strong>migrate to the Version 3 API
-  as soon as possible</strong>.<br>
-  <br>
-  We plan to turn off the In-app Billing Version 2 service on <strong>January
-  27, 2015</strong>, after which time users will <strong>no longer be able to
-  purchase in-app items and subscriptions through the Version 2 API</strong>.
-  We strongly encourage and recommend you migrate your apps to use Version 3
-  API by November 2014, to provide ample time for users to update their apps to
-  the new version.<br>
-  <br>
-  For more information, please see the <a href=
-  "http://support.google.com/googleplay/android-developer/answer/6090268">Help Center
-  article</a>. For common questions about transitioning your implementation to
-  In-app Billing Version 3, please see <a href=
-  "{@docRoot}google/play/billing/billing_overview.html#migration">Migration
-  Considerations</a>.
-</p>
-    <div id="qv-wrapper" style="margin-top:0;">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#billing-download">Downloading the Sample</a></li>
-    <li><a href="#billing-add-aidl">Adding the AIDL file to your project</a></li>
-    <li><a href="#billing-permission">Updating Your Manifest</a></li>
-    <li><a href="#billing-service">Creating a Service</a></li>
-    <li><a href="#billing-broadcast-receiver">Creating a BroadcastReceiver</a></li>
-    <li><a href="#billing-security">Securing Your App</a></li>
-    <li><a href="#billing-implement">Modifying Your Application Code</a></li>
-  </ol>
-  <h2>Downloads</h2>
-  <ol>
-    <li><a href="#billing-download">Sample Application (V2)</a></li>
-  </ol>
-</div>
-</div>
-
-<p>This document helps you implement In-app Billing Version 2 by stepping through the primary
-implementation tasks, using the sample application as an example.</p>
-
-<p>Before you implement in-app billing in your own application, be sure that you read <a
-href="{@docRoot}google/play/billing/v2/api.html">Overview of In-app Billing Version 2</a> and <a
-href="{@docRoot}google/play/billing/billing_best_practices.html">Security and Design</a>. These
-documents provide background information that will make it easier for you to implement in-app
-billing.</p>
-
-<p>To implement in-app billing in your application, you need to do the following:</p>
-<ol>
-  <li><a href="#billing-download">Download the in-app billing sample application</a>.</li>
-  <li><a href="#billing-add-aidl">Add the IMarketBillingService.aidl file</a> to your project.</li>
-  <li><a href="#billing-permission">Update your AndroidManifest.xml file</a>.</li>
-  <li><a href="#billing-service">Create a Service</a> and bind it to the
-  <code>MarketBillingService</code> so your application can send billing requests and receive
-  billing responses from Google Play.</li>
-  <li><a href="#billing-broadcast-receiver">Create a BroadcastReceiver</a> to handle broadcast
-  intents from Google Play.</li>
-  <li><a href="#billing-signatures">Create a security processing component</a> to verify the
-  integrity of the transaction messages that are sent by Google Play.</li>
-  <li><a href="#billing-implement">Modify your application code</a> to support in-app billing.</li>
-</ol>
-
-<h2 id="billing-download">Downloading the Sample Application</h2>
-
-<p>The in-app billing sample application shows you how to perform several tasks that are common to
-all in-app billing implementations, including:</p>
-
-<ul>
-  <li>Sending in-app billing requests to Google Play.</li>
-  <li>Handling synchronous responses from Google Play.</li>
-  <li>Handling broadcast intents (asynchronous responses) from Google Play.</li>
-  <li>Using in-app billing security mechanisms to verify the integrity of billing responses.</li>
-  <li>Creating a user interface that lets users select items for purchase.</li>
-</ul>
-
-<p>The sample application includes an application file (<code>Dungeons.java</code>), the AIDL file
-for the <code>MarketBillingService</code> (<code>IMarketBillingService.aidl</code>), and several
-classes that demonstrate in-app billing messaging. It also includes a class that demonstrates basic
-security tasks, such as signature verification.</p>
-
-<p>Table 1 lists the source files that are included with the sample application.</p>
-<p class="table-caption" id="source-files-table"><strong>Table 1.</strong> In-app billing sample
-application source files.</p>
-
-<table>
-<tr>
-<th>File</th>
-<th>Description</th>
-</tr>
-
-<tr>
-<td>IMarketBillingService.aidl</td>
-<td>Android Interface Definition Library (AIDL) file that defines the IPC interface to Google
-Play's in-app billing service (<code>MarketBillingService</code>).</td>
-</tr>
-
-<tr>
-<td>Dungeons.java</td>
-<td>Sample application file that provides a UI for making purchases and displaying purchase
-history.</td>
-</tr>
-
-<tr>
-<td>PurchaseDatabase.java</td>
-<td>A local database for storing purchase information.</td>
-</tr>
-
-<tr>
-  <td>BillingReceiver.java</td>
-  <td>A {@link android.content.BroadcastReceiver} that receives asynchronous response messages
-  (broadcast intents) from Google Play. Forwards all messages to the
-  <code>BillingService</code>.</td>
-</tr>
-<tr>
-  <td>BillingService.java</td>
-  <td>A {@link android.app.Service} that sends messages to Google Play on behalf of the
-  application by connecting (binding) to the <code>MarketBillingService</code>.</td>
-</tr>
-
-<tr>
-  <td>ResponseHandler.java</td>
-  <td>A {@link android.os.Handler} that contains methods for updating the purchases database and the
-  UI.</td>
-</tr>
-
-<tr>
-  <td>PurchaseObserver.java</td>
-  <td>An abstract class for observing changes related to purchases.</td>
-</tr>
-
-<tr>
-<td>Security.java</td>
-<td>Provides various security-related methods.</td>
-</tr>
-
-<tr>
-<td>Consts.java</td>
-<td>Defines various Google Play constants and sample application constants. All constants that
-are defined by Google Play must be defined the same way in your application.</td>
-</tr>
-
-<tr>
-<td>Base64.java and Base64DecoderException.java</td>
-<td>Provides conversion services from binary to Base64 encoding. The <code>Security</code> class
-relies on these utility classes.</td>
-</tr>
-
-</table>
-
-<p>The in-app billing sample application is available as a downloadable component of the Android
-SDK. To download the sample application component, launch the Android SDK Manager and then
-select the <strong>Google Market Billing package</strong> component (see figure 1), and click <strong>Install
-Selected</strong> to begin the download.</p>
-
-
-<img src="{@docRoot}images/billing_package.png" height="325" id="figure1" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> The Google Market Billing package contains the sample application and
-  the AIDL file.
-</p>
-
-<p>When the download is complete, the Android SDK Manager saves the component into the
-following directory:</p>
-
-<p><code>&lt;sdk&gt;/extras/google/market_billing/</code></p>
-
-<p>If you want to see an end-to-end demonstration of in-app billing before you integrate in-app
-billing into your own application, you can build and run the sample application. Building and
-running the sample application involves three tasks:</p>
-
-<ul>
-  <li>Configuring and building the sample application.</li>
-  <li>Uploading the sample application to Google Play.</li>
-  <li>Setting up test accounts and running the sample application.</li>
-</ul>
-
-<p class="note"><strong>Note:</strong> Building and running the sample application is necessary only
-if you want to see a demonstration of in-app billing. If you do not want to run the sample
-application, you can skip to the next section, <a href="#billing-add-aidl">Adding the AIDL file to
-your project</a>.</p>
-
-<h3>Configuring and building the sample application</h3>
-
-<p>Before you can run the sample application, you need to configure it and build it by doing the
-following:</p>
-
-<ol>
-  <li><strong>Add your app's public key to the sample application code.</strong>
-    <p>This enables the application to verify the signature of the transaction information that is
-    returned from Google Play. To add your public key to the sample application code, do the
-    following:</p>
-    <ol>
-      <li>Log in to your Google Play <a href="http://play.google.com/apps/publish">Developer
-      console</a>.</li>
-      <li>On the upper left part of the page, All Applications, click the application name.</strong>.</li>
-      <li>On the Edit Profile page, scroll down to the <strong>Licensing &amp; In-app
-      Billing</strong> panel.</li>
-      <li>Copy your public key.</li>
-      <li>Open <code>src/com/example/dungeons/Security.java</code> in the editor of your choice.
-        <p>You can find this file in the sample application's project folder.</p>
-      </li>
-      <li>Add your public key to the following line of code:
-        <p><code>String base64EncodedPublicKey = "your public key here";</code></p>
-      </li>
-      <li>Save the file.</li>
-    </ol>
-  </li>
-  <li><strong>Change the package name of the sample application.</strong>
-    <p>The current package name is <code>com.example.dungeons</code>. Google Play does not let
-    you upload applications with package names that contain <code>com.example</code>, so you must
-    change the package name to something else.</p>
-  </li>
-  <li><strong>Build the sample application in release mode and sign it.</strong>
-    <p>To learn how to build and sign applications, see <a
-    href="{@docRoot}tools/building/index.html">Building and Running</a>.</p>
-  </li>
-</ol>
-
-<h3>Uploading the sample application</h3>
-
-<p>After you build a release version of the sample application and sign it, you need to upload it as
-a draft to the Google Play Developer Console. You also need to create a product list for the in-app
-items that are available for purchase in the sample application. The following instructions show you
-how to do this.</p>
-
-<p class="caution"><strong>Caution:</strong> Draft applications are no longer
-supported. To test an application, publish it in the <a
-href="{@docRoot}distribute/googleplay/developer-console.html#alpha-beta">alpha
-or beta channels</a>. For more information, see <a
-href="{@docRoot}google/play/billing/billing_testing.html#draft_apps">Draft Apps
-are No Longer Supported</a>.</p>
-
-<ol>
-  <li><strong>Upload the release version of the sample application to Google Play.</strong>
-    <p>Do not publish the sample application; leave it as an unpublished draft application. The
-    sample application is for demonstration purposes only and should not be made publicly available
-    on Google Play. To learn how to upload an application to Google Play, see <a
-    href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=113469">Uploading
-    applications</a>.</p>
-  </li>
-  <li><strong>Create a product list for the sample application.</strong>
-    <p>The sample application lets you purchase two items: a two-handed sword
-    (<code>sword_001</code>) and a potion (<code>potion_001</code>). We recommend that you set up
-    your product list so that <code>sword_001</code> has a purchase type of "Managed per user
-    account" and <code>potion_001</code> has a purchase type of "Unmanaged" so you can see how these
-    two purchase types behave. To learn how to set up a product list, see <a
-    href="{@docRoot}google/play/billing/billing_admin.html#billing-list-setup">Creating a Product
-    List</a>.</p>
-    <p class="note"><strong>Note:</strong> You must publish the items in your product
-    list (<code>sword_001</code> and <code>potion_001</code>) even though you are not publishing the
-    sample application. Also, you must have a Google payments merchant account to add items to the
-    sample application's product list.</p>
-  </li>
-</ol>
-
-<h3>Running the sample application</h3>
-
-<p>You cannot run the sample application in the emulator. You must install the sample application
-onto a device to run it. To run the sample application, do the following:</p>
-
-<ol>
-  <li><strong>Make sure you have at least one test account registered under your Google Play
-  publisher account.</strong>
-    <p>You cannot purchase items from yourself, so you need to
-    create at least one test account that you can use to purchase items in the sample application.
-    To learn how to set up a test account, see <a
-    href="{@docRoot}google/play/billing/billing_testing.html#billing-testing-setup">Setting up Test
-    Accounts</a>.</p>
-  </li>
-  <li><strong>Verify that your device is running a supported version of the Google Play
-  application or the MyApps application.</strong>
-    <p>If your device is running Android 3.0, in-app billing requires version 5.0.12 (or higher) of
-    the MyApps application. If your device is running any other version of Android, in-app billing
-    requires version 2.3.4 (or higher) of the Google Play application. To learn how to check the
-    version of the Google Play application, see <a
-    href="http://market.android.com/support/bin/answer.py?answer=190860">Updating Google
-    Play</a>.</p>
-  </li>
-  <li><strong>Install the application onto your device.</strong>
-    <p>Even though you uploaded the application to Google Play, the application is not published,
-    so you cannot download it from Google Play to a device. Instead, you must install the
-    application onto your device. To learn how to install an application onto a device, see <a
-    href="{@docRoot}tools/building/building-cmdline.html#RunningOnDevice">Running on a
-    device</a>.</p>
- </li>
- <li><strong>Make one of your test accounts the primary account on your device.</strong>
-    <p>The primary account on your device must be one of the <a
-    href="{@docRoot}google/play/billing/billing_admin.html#billing-testing-setup">test accounts</a>
-    that you registered on the Google Play Developer Console. If the primary account on your device is not a
-    test account, you must do a factory reset of the device and then sign in with one of your test
-    accounts. To perform a factory reset, do the following:</p>
-    <ol>
-      <li>Open Settings on your device.</li>
-      <li>Touch <strong>Privacy</strong>.</li>
-      <li>Touch <strong>Factory data reset</strong>.</li>
-      <li>Touch <strong>Reset phone</strong>.</li>
-      <li>After the phone resets, be sure to sign in with one of your test accounts during the
-      device setup process.</li>
-    </ol>
-  </li>
-  <li><strong>Run the application and purchase the sword or the potion.</strong>
-    <p>When you use a test account to purchase items, the test account is billed through Google
-    payments and your Google payments merchant account receives a payout for the purchase.
-    Therefore, you may want to refund purchases that are made with test accounts, otherwise the
-    purchases will show up as actual payouts to your merchant account.</p>
-</ol>
-
-<p class="note"><strong>Note</strong>: Debug log messages are turned off by default in the
-sample application. You can turn them on by setting the variable <code>DEBUG</code>
-to <code>true</code> in the <code>Consts.java</code> file.</p>
-
-<h2 id="billing-add-aidl">Adding the AIDL file to your project</h2>
-
-<p>The sample application contains an Android Interface Definition Language (AIDL) file,  which
-defines the interface to Google Play's in-app billing service
-(<code>MarketBillingService</code>). When you add this file to your project, the Android build
-environment creates an interface file (<code>IMarketBillingService.java</code>). You can then use
-this interface to make billing requests by invoking IPC method calls.</p>
-
-<p>If you are using the ADT plug-in with Eclipse, you can just add this file to your
-<code>/src</code> directory. Eclipse will automatically generate the interface file when you build
-your project (which should happen immediately). If you are not using the ADT plug-in, you can put
-the AIDL file into your project and use the Ant tool to build your project so that the
-<code>IMarketBillingService.java</code> file gets generated.</p>
-
-<p>To add the <code>IMarketBillingService.aidl</code> file to your project, do the following:</p>
-
-<ol>
-  <li>Create the following directory in your application's <code>/src</code> directory:
-    <p><code>com/android/vending/billing/</code></p>
-  </li>
-  <li>Copy the <code>IMarketBillingService.aidl</code> file into the
-  <code>sample/src/com/android/vending/billing/</code> directory.</li>
-  <li>Build your application.</li>
-</ol>
-
-<p>You should now find a generated interface file named <code>IMarketBillingService.java</code> in
-the <code>gen</code> folder of your project.</p>
-
-<h2 id="billing-permission">Updating Your Application's Manifest</h2>
-
-<p>In-app billing relies on the Google Play application, which handles all communication between
-your application and the Google Play server. To use the Google Play application, your
-application must request the proper permission. You can do this by adding the
-<code>com.android.vending.BILLING</code> permission to your AndroidManifest.xml file. If your
-application does not declare the in-app billing permission, but attempts to send billing requests,
-Google Play will refuse the requests and respond with a <code>RESULT_DEVELOPER_ERROR</code>
-response code.</p>
-
-<p>In addition to the billing permission, you need to declare the {@link
-android.content.BroadcastReceiver} that you will use to receive asynchronous response messages
-(broadcast intents) from Google Play, and you need to declare the {@link android.app.Service}
-that you will use to bind with the <code>IMarketBillingService</code> and send messages to Google
-Play. You must also declare <a
-href="{@docRoot}guide/topics/manifest/intent-filter-element.html">intent filters</a> for the {@link
-android.content.BroadcastReceiver} so that the Android system knows how to handle the broadcast
-intents that are sent from the Google Play application.</p>
-
-<p>For example, here is how the in-app billing sample application declares the billing permission,
-the {@link android.content.BroadcastReceiver}, the {@link android.app.Service}, and the intent
-filters. In the sample application, <code>BillingReceiver</code> is the {@link
-android.content.BroadcastReceiver} that handles broadcast intents from the Google Play
-application and <code>BillingService</code> is the {@link android.app.Service} that sends requests
-to the Google Play application.</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.example.dungeons"
-  android:versionCode="1"
-  android:versionName="1.0"&gt;
-
-  &lt;uses-permission android:name="com.android.vending.BILLING" /&gt;
-
-  &lt;application android:icon="@drawable/icon" android:label="@string/app_name"&gt;
-    &lt;activity android:name=".Dungeons" android:label="@string/app_name"&gt;
-      &lt;intent-filter&gt;
-        &lt;action android:name="android.intent.action.MAIN" /&gt;
-        &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
-      &lt;/intent-filter&gt;
-    &lt;/activity&gt;
-
-    &lt;service android:name="BillingService" /&gt;
-
-    &lt;receiver android:name="BillingReceiver"&gt;
-      &lt;intent-filter&gt;
-        &lt;action android:name="com.android.vending.billing.IN_APP_NOTIFY" /&gt;
-        &lt;action android:name="com.android.vending.billing.RESPONSE_CODE" /&gt;
-        &lt;action android:name="com.android.vending.billing.PURCHASE_STATE_CHANGED" /&gt;
-      &lt;/intent-filter&gt;
-    &lt;/receiver&gt;
-
-  &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-<h2 id="billing-service">Creating a Local Service</h2>
-
-<p>Your application must have a local {@link android.app.Service} to facilitate messaging between
-your application and Google Play. At a minimum, this service must do the following:</p>
-
-<ul>
-  <li>Bind to the <code>MarketBillingService</code>.
-  <li>Send billing requests (as IPC method calls) to the Google Play application. The five types
-  of billing requests include:
-    <ul>
-      <li><code>CHECK_BILLING_SUPPORTED</code> requests</li>
-      <li><code>REQUEST_PURCHASE</code> requests</li>
-      <li><code>GET_PURCHASE_INFORMATION</code> requests</li>
-      <li><code>CONFIRM_NOTIFICATIONS</code> requests</li>
-      <li><code>RESTORE_TRANSACTIONS</code> requests</li>
-    </ul>
-  </li>
-  <li>Handle the synchronous response messages that are returned with each billing request.</li>
-</ul>
-
-<h3>Binding to the MarketBillingService</h3>
-
-<p>Binding to the <code>MarketBillingService</code> is relatively easy if you've already added the
-<code>IMarketBillingService.aidl</code> file to your project. The following code sample shows how to
-use the {@link android.content.Context#bindService bindService()} method to bind a service to the
-<code>MarketBillingService</code>. You could put this code in your service's {@link
-android.app.Activity#onCreate onCreate()} method.</p>
-
-<pre>
-try {
-  boolean bindResult = mContext.bindService(
-    new Intent("com.android.vending.billing.MarketBillingService.BIND"), this,
-    Context.BIND_AUTO_CREATE);
-  if (bindResult) {
-    Log.i(TAG, "Service bind successful.");
-  } else {
-    Log.e(TAG, "Could not bind to the MarketBillingService.");
-  }
-} catch (SecurityException e) {
-  Log.e(TAG, "Security exception: " + e);
-}
-</pre>
-
-<p>After you bind to the service, you need to create a reference to the
-<code>IMarketBillingService</code> interface so you can make billing requests via IPC method calls.
-The following code shows you how to do this using the {@link
-android.content.ServiceConnection#onServiceConnected onServiceConnected()} callback method.</p>
-
-<pre>
-/**
-  * The Android system calls this when we are connected to the MarketBillingService.
-  */
-  public void onServiceConnected(ComponentName name, IBinder service) {
-    Log.i(TAG, "MarketBillingService connected.");
-    mService = IMarketBillingService.Stub.asInterface(service);
-  }
-</pre>
-
-<p>You can now use the <code>mService</code> reference to invoke the
-<code>sendBillingRequest()</code> method.</p>
-
-<p>For a complete implementation of a service that binds to the <code>MarketBillingService</code>,
-see the <code>BillingService</code> class in the sample application.</p>
-
-<h3>Sending billing requests to the MarketBillingService</h3>
-
-<p>Now that your {@link android.app.Service} has a reference to the
-<code>IMarketBillingService</code> interface, you can use that reference to send billing requests
-(via IPC method calls) to the <code>MarketBillingService</code>. The
-<code>MarketBillingService</code> IPC interface exposes a single public method
-(<code>sendBillingRequest()</code>), which takes a single {@link android.os.Bundle} parameter. The
-Bundle that you deliver with this method specifies the type of request you want to perform, using
-various key-value pairs. For instance, one key indicates the type of request you are making, another
-indicates the item being purchased, and another identifies your application. The
-<code>sendBillingRequest()</code> method immediately returns a Bundle containing an initial response
-code. However, this is not the complete purchase response; the complete response is delivered with
-an asynchronous broadcast intent. For more information about the various Bundle keys that are
-supported by the <code>MarketBillingService</code>, see <a
-href="{@docRoot}google/play/billing/v2/billing_reference.html#billing-interface">In-app Billing
-Service Interface</a>.</p>
-
-<p>You can use the <code>sendBillingRequest()</code> method to send five types of billing requests.
-The five request types are specified using the <code>BILLING_REQUEST</code> Bundle key. This Bundle
-key can have the following five values:</p>
-
-<ul>
-  <li><code>CHECK_BILLING_SUPPORTED</code>&mdash;verifies that the Google Play application
-  supports in-app billing and the version of the In-app Billing API available.</li>
-  <li><code>REQUEST_PURCHASE</code>&mdash;sends a purchase request for an in-app item.</li>
-  <li><code>GET_PURCHASE_INFORMATION</code>&mdash;retrieves transaction information for a purchase
-  or refund.</li>
-  <li><code>CONFIRM_NOTIFICATIONS</code>&mdash;acknowledges that you received the transaction
-  information for a purchase or refund.</li>
-  <li><code>RESTORE_TRANSACTIONS</code>&mdash;retrieves a user's transaction history for <a
-  href="{@docRoot}google/play/billing/billing_admin.html#billing-purchase-type">managed
-  purchases</a>.</li>
-</ul>
-
-<p>To make any of these billing requests, you first need to build an initial {@link
-android.os.Bundle} that contains the three keys that are required for all requests:
-<code>BILLING_REQUEST</code>, <code>API_VERSION</code>, and <code>PACKAGE_NAME</code>. The following
-code sample shows you how to create a helper method named <code>makeRequestBundle()</code> that does
-this.</p>
-
-<pre>
-protected Bundle makeRequestBundle(String method) {
-  Bundle request = new Bundle();
-  request.putString(BILLING_REQUEST, method);
-  request.putInt(API_VERSION, 1);
-  request.putString(PACKAGE_NAME, getPackageName());
-  return request;
-</pre>
-
-<p>To use this helper method, you pass in a <code>String</code> that corresponds to one of the five
-types of billing requests. The method returns a Bundle that has the three required keys defined. The
-following sections show you how to use this helper method when you send a billing request.</p>
-
-<p class="caution"><strong>Important</strong>: You must make all in-app billing requests from your
-application's main thread.</p>
-
-<h4>Verifying that in-app billing is supported (CHECK_BILLING_SUPPPORTED)</h4>
-
-<p>The following code sample shows how to verify whether the Google Play application supports
-in-app billing and confirm what version of the API it supports. In the sample, <code>mService</code>
-is an instance of the <code>MarketBillingService</code> interface.</p>
-
-<pre>
-/**
-* Request type is CHECK_BILLING_SUPPORTED
-*/
-  Bundle request = makeRequestBundle("CHECK_BILLING_SUPPORTED");
-  Bundle response = mService.sendBillingRequest(request);
-  // Do something with this response.
-}
-</pre>
-
-<p>The <code>makeRequestBundle()</code> method constructs an initial Bundle, which contains the
-three keys that are required for all requests: <code>BILLING_REQUEST</code>,
-<code>API_VERSION</code>, and <code>PACKAGE_NAME</code>. If you are offering subscriptions in
-your app, set the API_VERSION key to a value of "2", to confirm that In-app Billing v2 is
-available. For an example, see
-<a href="{@docRoot}google/play/billing/v2/billing_subscriptions.html#version">Subscriptions</a>.</p>
-
-<p>The <code>CHECK_BILLING_SUPPORTED</code> request returns a synchronous {@link
-android.os.Bundle} response, which contains only a single key: <code>RESPONSE_CODE</code>. The
-<code>RESPONSE_CODE</code> key can have the following values:</p>
-<ul>
-  <li><code>RESULT_OK</code>&mdash;the spedified version of in-app billing is supported.</li>
-  <li><code>RESULT_BILLING_UNAVAILABLE</code>&mdash;in-app billing is not available because the API
-  version you specified is not recognized or the user is not eligible to make in-app purchases (for
-  example, the user resides in a country that prohibits in-app purchases).</li>
-  <li><code>RESULT_ERROR</code>&mdash;there was an error connecting with the Google Play
-  application.</li>
-  <li><code>RESULT_DEVELOPER_ERROR</code>&mdash;the application is trying to make an in-app billing
-  request but the application has not declared the <code>com.android.vending.BILLING</code>
-  permission in its manifest. Can also indicate that an application is not properly signed, or that
-  you sent a malformed request.</li>
-</ul>
-
-<p>The <code>CHECK_BILLING_SUPPORTED</code> request does not trigger any asynchronous responses
-(broadcast intents).</p>
-
-<p>We recommend that you invoke the <code>CHECK_BILLING_SUPPORTED</code> request within a
-<code>RemoteException</code> block. When your code throws a <code>RemoteException</code> it
-indicates that the remote method call failed, which means that the Google Play application is out
-of date and needs to be updated. In this case, you can provide users with an error message that
-contains a link to the <a
-href="http://market.android.com/support/bin/answer.py?answer=190860">Updating Google Play</a>
-Help topic.</p>
-
-<p>The sample application demonstrates how you can handle this error condition (see
-<code>DIALOG_CANNOT_CONNECT_ID</code> in <code>Dungeons.java</code>).</p>
-
-<h4>Making a purchase request (REQUEST_PURCHASE)</h4>
-
-<p>To make a purchase request you must do the following:</p>
-
-<ul>
-  <li>Send the <code>REQUEST_PURCHASE</code> request.</li>
-  <li>Launch the {@link android.app.PendingIntent} that is returned from the Google Play
-  application.</li>
-  <li>Handle the broadcast intents that are sent by the Google Play application.</li>
-</ul>
-
-<h5>Making the request</h5>
-
-<p>You must specify four keys in the request {@link android.os.Bundle}. The following code sample
-shows how to set these keys and make a purchase request for a single in-app item. In the sample,
-<code>mProductId</code> is the Google Play product ID of an in-app item (which is listed in the
-application's <a href="{@docRoot}google/play/billing/billing_admin.html#billing-list-setup">product
-list</a>), and <code>mService</code> is an instance of the <code>MarketBillingService</code>
-interface.</p>
-
-<pre>
-/**
-* Request type is REQUEST_PURCHASE
-*/
-  Bundle request = makeRequestBundle("REQUEST_PURCHASE");
-  request.putString(ITEM_ID, mProductId);
-  // Request is for a standard in-app product
-  request.putString(ITEM_TYPE, "inapp");
-  // Note that the developer payload is optional.
-  if (mDeveloperPayload != null) {
-    request.putString(DEVELOPER_PAYLOAD, mDeveloperPayload);
-  }
-  Bundle response = mService.sendBillingRequest(request);
-  // Do something with this response.
-</pre>
-<p>The <code>makeRequestBundle()</code> method constructs an initial Bundle, which contains the
-three keys that are required for all requests: <code>BILLING_REQUEST</code>,
-<code>API_VERSION</code>, and <code>PACKAGE_NAME</code>. The <code>ITEM_ID</code> key is then added
-to the Bundle prior to invoking the <code>sendBillingRequest()</code> method.</p>
-
-<p>The request returns a synchronous {@link android.os.Bundle} response, which contains three keys:
-<code>RESPONSE_CODE</code>, <code>PURCHASE_INTENT</code>, and <code>REQUEST_ID</code>. The
-<code>RESPONSE_CODE</code> key provides you with the status of the request and the
-<code>REQUEST_ID</code> key provides you with a unique request identifier for the request. The
-<code>PURCHASE_INTENT</code> key provides you with a {@link android.app.PendingIntent}, which you
-can use to launch the checkout UI.</p>
-
-<h5>Using the pending intent</h5>
-
-<p>How you use the pending intent depends on which version of Android a device is running. On
-Android 1.6, you must use the pending intent to launch the checkout UI in its own separate task
-instead of your application's activity stack. On Android 2.0 and higher, you can use the pending
-intent to launch the checkout UI on your application's activity stack. The following code shows you
-how to do this. You can find this code in the <code>PurchaseObserver.java</code> file in the sample
-application.</p>
-
-<pre>
-void startBuyPageActivity(PendingIntent pendingIntent, Intent intent) {
-  if (mStartIntentSender != null) {
-    // This is on Android 2.0 and beyond.  The in-app checkout page activity
-    // will be on the activity stack of the application.
-    try {
-      // This implements the method call:
-      // mActivity.startIntentSender(pendingIntent.getIntentSender(),
-      //     intent, 0, 0, 0);
-      mStartIntentSenderArgs[0] = pendingIntent.getIntentSender();
-      mStartIntentSenderArgs[1] = intent;
-      mStartIntentSenderArgs[2] = Integer.valueOf(0);
-      mStartIntentSenderArgs[3] = Integer.valueOf(0);
-      mStartIntentSenderArgs[4] = Integer.valueOf(0);
-      mStartIntentSender.invoke(mActivity, mStartIntentSenderArgs);
-    } catch (Exception e) {
-      Log.e(TAG, "error starting activity", e);
-      }
-  } else {
-    // This is on Android 1.6. The in-app checkout page activity will be on its
-    // own separate activity stack instead of on the activity stack of
-    // the application.
-    try {
-      pendingIntent.send(mActivity, 0 /* code */, intent);
-    } catch (CanceledException e) {
-      Log.e(TAG, "error starting activity", e);
-      }
-  }
-}
-</pre>
-
-<p class="caution"><strong>Important:</strong> You must launch the pending intent from an activity
-context and not an application context. Also, you cannot use the <code>singleTop</code> <a
-href="{@docRoot}guide/topics/manifest/activity-element.html#lmode">launch mode</a> to launch the
-pending intent. If you do either of these, the Android system will not attach the pending intent to
-your application process. Instead, it will bring Google Play to the foreground, disrupting your
-application.</p>
-
-<h5>Handling broadcast intents</h5>
-
-<p>A <code>REQUEST_PURCHASE</code> request also triggers two asynchronous responses (broadcast
-intents). First, the Google Play application sends a <code>RESPONSE_CODE</code> broadcast intent,
-which provides error information about the request. If the request does not generate an
-error, the <code>RESPONSE_CODE</code> broadcast intent returns <code>RESULT_OK</code>, which
-indicates that the request was successfully sent. (To be clear, a <code>RESULT_OK</code> response
-does not indicate that the requested purchase was successful; it indicates that the request was sent
-successfully to Google Play.)</p>
-
-<p>Next, when the requested transaction changes state (for example, the purchase is successfully
-charged to a credit card or the user cancels the purchase), the Google Play application sends an
-<code>IN_APP_NOTIFY</code> broadcast intent. This message contains a notification ID, which you can
-use to retrieve the transaction details for the <code>REQUEST_PURCHASE</code> request.</p>
-
-<p class="note"><strong>Note:</strong> The Google Play application also sends
-an <code>IN_APP_NOTIFY</code> for refunds. For more information, see <a
-href="{@docRoot}google/play/billing/v2/api.html#billing-action-notify">Handling
-IN_APP_NOTIFY messages</a>.</p>
-
-<p>Because the purchase process is not instantaneous and can take several seconds (or more), you
-must assume that a purchase request is pending from the time you receive a <code>RESULT_OK</code>
-message until you receive an <code>IN_APP_NOTIFY</code> message for the transaction. While the
-transaction is pending, the Google Play checkout UI displays an "Authorizing purchase..."
-notification; however, this notification is dismissed after 60 seconds and you should not rely on
-this notification as your primary means of conveying transaction status to users. Instead, we
-recommend that you do the following:</p>
-
-<ul>
-  <li>Add an {@link android.app.Activity} to your application that shows users the status of pending
-and completed in-app purchases.</li>
-  <li>Use a <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">status
-bar notification</a> to keep users informed about the progress of a purchase.</li>
-</ul>
-
-<p>To use these two UI elements, you could invoke a status bar notification with a ticker-text
-message that says "Purchase pending" when your application receives a <code>RESULT_OK</code>
-message. Then, when your application receives an <code>IN_APP_NOTIFY</code> message, you could
-update the notification with a new message that says "Purchase succeeded" or "Purchase failed." When
-a user touches the expanded status bar notification, you could launch the activity that shows the
-status of pending and completed in-app purchases.</p>
-
-<p>If you use some other UI technique to inform users about the state of a pending transaction,
-be sure that your pending status UI does not block your application. For example, you should avoid
-using a hovering progress wheel to convey the status of a pending transaction because a pending
-transaction could last a long time, particularly if a device loses network connectivity and cannot
-receive transaction updates from Google Play.</p>
-
-<p class="caution"><strong>Important:</strong> If a user purchases a managed item, you must prevent
-the user from purchasing the item again while the original transaction is pending. If a user
-attempts to purchase a managed item twice, and the first transaction is still pending, Google
-Play will display an error to the user; however, Google Play will not send an error to your
-application notifying you that the second purchase request was canceled. This might cause your
-application to get stuck in a pending state while it waits for an <code>IN_APP_NOTIFY</code> message
-for the second purchase request.</p>
-
-<h4>Retrieving transaction information for a purchase or refund (GET_PURCHASE_INFORMATION)</h4>
-
-<p>You retrieve transaction information in response to an <code>IN_APP_NOTIFY</code> broadcast
-intent. The <code>IN_APP_NOTIFY</code> message contains a notification ID, which you can use to
-retrieve transaction information.</p>
-
-<p>To retrieve transaction information for a purchase or refund you must specify five keys in the
-request {@link android.os.Bundle}. The following code sample shows how to set these keys and make
-the request. In the sample, <code>mService</code> is an instance of the
-<code>MarketBillingService</code> interface.</p>
-
-<pre>
-/**
-* Request type is GET_PURCHASE_INFORMATION
-*/
-  Bundle request = makeRequestBundle("GET_PURCHASE_INFORMATION");
-  request.putLong(REQUEST_NONCE, mNonce);
-  request.putStringArray(NOTIFY_IDS, mNotifyIds);
-  Bundle response = mService.sendBillingRequest(request);
-  // Do something with this response.
-}
-</pre>
-<p>The <code>makeRequestBundle()</code> method constructs an initial Bundle, which contains the
-three keys that are required for all requests: <code>BILLING_REQUEST</code>,
-<code>API_VERSION</code>, and <code>PACKAGE_NAME</code>. The additional keys are then added to the
-bundle prior to invoking the <code>sendBillingRequest()</code> method. The
-<code>REQUEST_NONCE</code> key contains a cryptographically secure nonce (number used once) that you
-must generate. The Google Play application returns this nonce with the
-<code>PURCHASE_STATE_CHANGED</code> broadcast intent so you can verify the integrity of the
-transaction information. The <code>NOTIFY_IDS</code> key contains an array of notification IDs,
-which you received in the <code>IN_APP_NOTIFY</code> broadcast intent.</p>
-
-<p>The request returns a synchronous {@link android.os.Bundle} response, which contains two keys:
-<code>RESPONSE_CODE</code> and <code>REQUEST_ID</code>. The <code>RESPONSE_CODE</code> key provides
-you with the status of the request and the <code>REQUEST_ID</code> key provides you with a unique
-request identifier for the request.</p>
-
-<p>A <code>GET_PURCHASE_INFORMATION</code> request also triggers two asynchronous responses
-(broadcast intents). First, the Google Play application sends a <code>RESPONSE_CODE</code>
-broadcast intent, which provides status and error information about the request. Next, if the
-request was successful, the Google Play application sends a <code>PURCHASE_STATE_CHANGED</code>
-broadcast intent. This message contains detailed transaction information. The transaction
-information is contained in a signed JSON string (unencrypted). The message includes the signature
-so you can verify the integrity of the signed string.</p>
-
-<h4>Acknowledging transaction information (CONFIRM_NOTIFICATIONS)</h4>
-
-<p>To acknowledge that you received transaction information you send a
-<code>CONFIRM_NOTIFICATIONS</code> request. You must specify four keys in the request {@link
-android.os.Bundle}. The following code sample shows how to set these keys and make the request. In
-the sample, <code>mService</code> is an instance of the <code>MarketBillingService</code>
-interface.</p>
-
-<pre>
-/**
-* Request type is CONFIRM_NOTIFICATIONS
-*/
-  Bundle request = makeRequestBundle("CONFIRM_NOTIFICATIONS");
-  request.putStringArray(NOTIFY_IDS, mNotifyIds);
-  Bundle response = mService.sendBillingRequest(request);
-  // Do something with this response.
-}
-</pre>
-<p>The <code>makeRequestBundle()</code> method constructs an initial Bundle, which contains the
-three keys that are required for all requests: <code>BILLING_REQUEST</code>,
-<code>API_VERSION</code>, and <code>PACKAGE_NAME</code>. The additional <code>NOTIFY_IDS</code> key
-is then added to the bundle prior to invoking the <code>sendBillingRequest()</code> method. The
-<code>NOTIFY_IDS</code> key contains an array of notification IDs, which you received in an
-<code>IN_APP_NOTIFY</code> broadcast intent and also used in a <code>GET_PURCHASE_INFORMATION</code>
-request.</p>
-
-<p>The request returns a synchronous {@link android.os.Bundle} response, which contains two keys:
-<code>RESPONSE_CODE</code> and <code>REQUEST_ID</code>. The <code>RESPONSE_CODE</code> key provides
-you with the status of the request and the <code>REQUEST_ID</code> key provides you with a unique
-request identifier for the request.</p>
-
-<p>A <code>CONFIRM_NOTIFICATIONS</code> request triggers a single asynchronous response&mdash;a
-<code>RESPONSE_CODE</code> broadcast intent. This broadcast intent provides status and error
-information about the request.</p>
-
-<p>You must send a confirmation when you receive transaction information from Google Play. If you
-don't send a confirmation message, Google Play will continue sending
-<code>IN_APP_NOTIFY</code> messages for the transactions you have not confirmed. Also,
-your application must be able to handle <code>IN_APP_NOTIFY</code> messages that contain multiple
-orders.</p>
-
-<p>In addition, as a best practice, you should not send a <code>CONFIRM_NOTIFICATIONS</code> request
-for a purchased item until you have delivered the item to the user. This way, if your application
-crashes or something else prevents your application from delivering the product, your application
-will still receive an <code>IN_APP_NOTIFY</code> broadcast intent from Google Play indicating
-that you need to deliver the product.</p>
-
-<h4>Restoring transaction information (RESTORE_TRANSACTIONS)</h4>
-
-<p>To restore a user's transaction information, you send a <code>RESTORE_TRANSACTIONS</code>
-request. You must specify four keys in the request {@link android.os.Bundle}. The following code
-sample shows how to set these keys and make the request. In the sample, <code>mService</code> is an
-instance of the <code>MarketBillingService</code> interface.</p>
-
-<pre>
-/**
-* Request type is RESTORE_TRANSACTIONS
-*/
-  Bundle request = makeRequestBundle("RESTORE_TRANSACTIONS");
-  request.putLong(REQUEST_NONCE, mNonce);
-  Bundle response = mService.sendBillingRequest(request);
-  // Do something with this response.
-}
-</pre>
-<p>The <code>makeRequestBundle()</code> method constructs an initial Bundle, which contains the
-three keys that are required for all requests: <code>BILLING_REQUEST</code>,
-<code>API_VERSION</code>, and <code>PACKAGE_NAME</code>. The additional <code>REQUEST_NONCE</code>
-key is then added to the bundle prior to invoking the <code>sendBillingRequest()</code> method. The
-<code>REQUEST_NONCE</code> key contains a cryptographically secure nonce (number used once) that you
-must generate. The Google Play application returns this nonce with the transactions information
-contained in the <code>PURCHASE_STATE_CHANGED</code> broadcast intent so you can verify the
-integrity of the transaction information.</p>
-
-<p>The request returns a synchronous {@link android.os.Bundle} response, which contains two keys:
-<code>RESPONSE_CODE</code> and <code>REQUEST_ID</code>. The <code>RESPONSE_CODE</code> key provides
-you with the status of the request and the <code>REQUEST_ID</code> key provides you with a unique
-request identifier for the request.</p>
-
-<p>A <code>RESTORE_TRANSACTIONS</code> request also triggers two asynchronous responses (broadcast
-intents). First, the Google Play application sends a <code>RESPONSE_CODE</code> broadcast intent,
-which provides status and error information about the request. Next, if the request was successful,
-the Google Play application sends a <code>PURCHASE_STATE_CHANGED</code> broadcast intent. This
-message contains the detailed transaction information. The transaction information is contained in a
-signed JSON string (unencrypted). The message includes the signature so you can verify the integrity
-of the signed string.</p>
-
-<p class="note"><strong>Note:</strong> You should use the <code>RESTORE_TRANSACTIONS</code>
-request type only when your application is installed for the first time on a device or when your
-application has been removed from a device and reinstalled.</p>
-
-<h3>Other service tasks</h3>
-
-<p>You may also want your {@link android.app.Service} to receive intent messages from your {@link
-android.content.BroadcastReceiver}. You can use these intent messages to convey the information that
-was sent asynchronously from the Google Play application to your {@link
-android.content.BroadcastReceiver}. To see an example of how you can send and receive these intent
-messages, see the <code>BillingReceiver.java</code> and <code>BillingService.java</code> files in
-the sample application. You can use these samples as a basis for your own implementation. However,
-if you use any of the code from the sample application, be sure you follow the guidelines in <a
-href="{@docRoot}google/play/billing/billing_best_practices.html">Security and Design</a>.</p>
-
-<h2 id="billing-broadcast-receiver">Creating a BroadcastReceiver</h2>
-
-<p>The Google Play application uses broadcast intents to send asynchronous billing responses to
-your application. To receive these intent messages, you need to create a {@link
-android.content.BroadcastReceiver} that can handle the following intents:</p>
-
-<ul>
-  <li>com.android.vending.billing.RESPONSE_CODE
-  <p>This broadcast intent contains a Google Play response code, and is sent after you make an
-  in-app billing request. For more information about the response codes that are sent with this
-  response, see <a
-  href="{@docRoot}google/play/billing/v2/billing_reference.html#billing-codes">Google Play Response
-  Codes for In-app Billing</a>.</p>
-  </li>
-  <li>com.android.vending.billing.IN_APP_NOTIFY
-  <p>This response indicates that a purchase has changed state, which means a purchase succeeded,
-  was canceled, or was refunded. For more information about notification messages, see <a
-  href="{@docRoot}google/play/billing/v2/billing_reference.html#billing-intents">In-app Billing
-  Broadcast Intents</a></p>
-  </li>
-  <li>com.android.vending.billing.PURCHASE_STATE_CHANGED
-  <p>This broadcast intent contains detailed information about one or more transactions. For more
-  information about purchase state messages, see <a
-  href="{@docRoot}google/play/billing/v2/billing_reference.html#billing-intents">In-app Billing
-  Broadcast Intents</a></p>
-  </li>
-</ul>
-
-<p>Each of these broadcast intents provide intent extras, which your {@link
-android.content.BroadcastReceiver} must handle. The intent extras are listed in the following table
-(see table 1).</p>
-
-<p class="table-caption"><strong>Table 1.</strong> Description of broadcast intent extras that are
-sent in response to billing requests.</p>
-
-<table>
-
-<tr>
-<th>Intent</th>
-<th>Extra</th>
-<th>Description</th>
-</tr>
-<tr>
-  <td><code>com.android.vending.billing.RESPONSE_CODE</code></td>
-  <td><code>request_id</code></td>
-  <td>A <code>long</code> representing a request ID. A request ID identifies a specific billing
-  request and is returned by Google Play at the time a request is made.</td>
-</tr>
-<tr>
-  <td><code>com.android.vending.billing.RESPONSE_CODE</code></td>
-  <td><code>response_code</code></td>
-  <td>An <code>int</code> representing the actual Google Play server response code.</td>
-</tr>
-<tr>
-  <td><code>com.android.vending.billing.IN_APP_NOTIFY</code></td>
-  <td><code>notification_id</code></td>
-  <td>A <code>String</code> representing the notification ID for a given purchase state change.
-  Google Play notifies you when there is a purchase state change and the notification includes a
-  unique notification ID. To get the details of the purchase state change, you send the notification
-  ID with the <code>GET_PURCHASE_INFORMATION</code> request.</td>
-</tr>
-<tr>
-  <td><code>com.android.vending.billing.PURCHASE_STATE_CHANGED</code></td>
-  <td><code>inapp_signed_data</code></td>
-  <td>A <code>String</code> representing the signed JSON string. The JSON string contains
-  information about the billing transaction, such as order number, amount, and the item that was
-  purchased or refunded.</td>
-</tr>
-<tr>
-  <td><code>com.android.vending.billing.PURCHASE_STATE_CHANGED</code></td>
-  <td><code>inapp_signature</code></td>
-  <td>A <code>String</code> representing the signature of the JSON string.</td>
-</tr>
-</table>
-
-<p>The following code sample shows how to handle these broadcast intents and intent extras within a
-{@link android.content.BroadcastReceiver}. The BroadcastReceiver in this case is named
-<code>BillingReceiver</code>, just as it is in the sample application.</p>
-
-<pre>
-public class BillingReceiver extends BroadcastReceiver {
-
-  private static final String TAG = "BillingReceiver";
-
-  // Intent actions that we receive in the BillingReceiver from Google Play.
-  // These are defined by Google Play and cannot be changed.
-  // The sample application defines these in the Consts.java file.
-  public static final String ACTION_NOTIFY =
-      "com.android.vending.billing.IN_APP_NOTIFY";
-  public static final String ACTION_RESPONSE_CODE =
-      "com.android.vending.billing.RESPONSE_CODE";
-  public static final String ACTION_PURCHASE_STATE_CHANGED =
-      "com.android.vending.billing.PURCHASE_STATE_CHANGED";
-
-  // The intent extras that are passed in an intent from Google Play.
-  // These are defined by Google Play and cannot be changed.
-  // The sample application defines these in the Consts.java file.
-  public static final String NOTIFICATION_ID = "notification_id";
-  public static final String INAPP_SIGNED_DATA = "inapp_signed_data";
-  public static final String INAPP_SIGNATURE = "inapp_signature";
-  public static final String INAPP_REQUEST_ID = "request_id";
-  public static final String INAPP_RESPONSE_CODE = "response_code";
-
-
-  &#64;Override
-  public void onReceive(Context context, Intent intent) {
-    String action = intent.getAction();
-    if (ACTION_PURCHASE_STATE_CHANGED.equals(action)) {
-      String signedData = intent.getStringExtra(INAPP_SIGNED_DATA);
-      String signature = intent.getStringExtra(INAPP_SIGNATURE);
-      // Do something with the signedData and the signature.
-    } else if (ACTION_NOTIFY.equals(action)) {
-      String notifyId = intent.getStringExtra(NOTIFICATION_ID);
-      // Do something with the notifyId.
-    } else if (ACTION_RESPONSE_CODE.equals(action)) {
-      long requestId = intent.getLongExtra(INAPP_REQUEST_ID, -1);
-      int responseCodeIndex = intent.getIntExtra(INAPP_RESPONSE_CODE,
-        ResponseCode.RESULT_ERROR.ordinal());
-      // Do something with the requestId and the responseCodeIndex.
-    } else {
-      Log.w(TAG, "unexpected action: " + action);
-    }
-  }
-  // Perform other processing here, such as forwarding intent messages
-  // to your local service.
-}
-</pre>
-
-<p>In addition to receiving broadcast intents from the Google Play application, your {@link
-android.content.BroadcastReceiver} must handle the information it received in the broadcast intents.
-Usually, your {@link android.content.BroadcastReceiver} does this by sending the information to a
-local service (discussed in the next section). The <code>BillingReceiver.java</code> file in the
-sample application shows you how to do this. You can use this sample as a basis for your own {@link
-android.content.BroadcastReceiver}. However, if you use any of the code from the sample application,
-be sure you follow the guidelines that are discussed in <a
-href="{@docRoot}google/play/billing/billing_best_practices.html">Security and Design </a>.</p>
-
-<h2 id="billing-security">Securing Your Application</h2>
-
-<p>To help ensure the integrity of the transaction information that is sent to your application,
-Google Play signs the JSON string that is contained in the <code>PURCHASE_STATE_CHANGED</code>
-broadcast intent. Google Play uses the private key that is associated with your publisher account
-to create this signature. The Developer Console generates an RSA key pair for each publisher account.
-You can find the public key portion of this key pair on your account's profile page. It is the same
-public key that is used with Google Play licensing.</p>
-
-<p>When Google Play signs a billing response, it includes the signed JSON string (unencrypted)
-and the signature. When your application receives this signed response you can use the public key
-portion of your RSA key pair to verify the signature. By performing signature verification you can
-help detect responses that have been tampered with or that have been spoofed. You can perform this
-signature verification step in your application; however, if your application connects to a secure
-remote server then we recommend that you perform the signature verification on that server.</p>
-
-<p>In-app billing also uses nonces (a random number used once) to help verify the integrity of the
-purchase information that's returned from Google Play. Your application must generate a nonce and
-send it with a <code>GET_PURCHASE_INFORMATION</code> request and a <code>RESTORE_TRANSACTIONS</code>
-request. When Google Play receives the request, it adds the nonce to the JSON string that
-contains the transaction information. The JSON string is then signed and returned to your
-application. When your application receives the JSON string, you need to verify the nonce as well as
-the signature of the JSON string.</p>
-
-<p>For more information about best practices for security and design, see <a
-href="{@docRoot}google/play/billing/billing_best_practices.html">Security and Design</a>.</p>
-
-<h3 id="billing-signatures">Verifying signatures and nonces</h3>
-
-<p>Google Play's in-app billing service uses two mechanisms to help verify the integrity of the
-transaction information you receive from Google Play: nonces and signatures. A nonce (number used
-once) is a cryptographically secure number that your application generates and sends with every
-<code>GET_PURCHASE_INFORMATION</code> and <code>RESTORE_TRANSACTIONS</code> request. The nonce is
-returned with the <code>PURCHASE_STATE_CHANGED</code> broadcast intent, enabling you to verify that
-any given <code>PURCHASE_STATE_CHANGED</code> response corresponds to an actual request that you
-made. Every <code>PURCHASE_STATE_CHANGED</code> broadcast intent also includes a signed JSON string
-and a signature, which you can use to verify the integrity of the response.</p>
-
-<p>Your application must provide a way to generate, manage, and verify nonces. The following sample
-code shows some simple methods you can use to do this.</p>
-
-<pre>
-  private static final SecureRandom RANDOM = new SecureRandom();
-  private static HashSet&lt;Long&gt; sKnownNonces = new HashSet&lt;Long&gt;();
-
-  public static long generateNonce() {
-    long nonce = RANDOM.nextLong();
-    sKnownNonces.add(nonce);
-    return nonce;
-  }
-
-  public static void removeNonce(long nonce) {
-    sKnownNonces.remove(nonce);
-  }
-
-  public static boolean isNonceKnown(long nonce) {
-    return sKnownNonces.contains(nonce);
-  }
-</pre>
-
-<p>Your application must also provide a way to verify the signatures that accompany every
-<code>PURCHASE_STATE_CHANGED</code> broadcast intent. The <code>Security.java</code> file in the
-sample application shows you how to do this. If you use this file as a basis for your own security
-implementation, be sure to follow the guidelines in <a
-href="{@docRoot}google/play/billing/billing_best_practices.html">Security and Design</a> and
-obfuscate your code.</p>
-
-<p>You will need to use your Google Play public key to perform the signature verification. The
-following procedure shows you how to retrieve Base64-encoded public key from the Google Play
-Developer Console.</p>
-
-<ol>
-  <li>Log in to your <a href="http://play.google.com/apps/publish">publisher account</a>.</li>
-  <li>On the upper left part of the page, click <strong>All applications</strong> and then click
-  the app name in the listing.</li>
-  <li>Click <em>Services &amp; APIs</em> and find "Your License Key for this Application" on the page. </li>
-  <li>Copy the app's public key.</li>
-</ol>
-
-<p class="caution"><strong>Important</strong>: To keep your public key safe from malicious users and
-hackers, do not embed your public key as an entire literal string. Instead, construct the string at
-runtime from pieces or use bit manipulation (for example, XOR with some other string) to hide the
-actual key. The key itself is not secret information, but you do not want to make it easy for a
-hacker or malicious user to replace the public key with another key.</p>
-
-<div style="width:640px;">
-<img src="{@docRoot}images/licensing_public_key.png" class="frame">
-<p class="img-caption"><strong>Figure
-2.</strong> An app's license key is available from the Services &amp; APIs page in
-the Developer Console.</p>
-</div>
-
-
-<h2 id="billing-implement">Modifying Your Application Code</h2>
-
-<p>After you finish adding in-app billing components to your project, you are ready to modify your
-application's code. For a typical implementation, like the one that is demonstrated in the sample
-application, this means you need to write code to do the following: </p>
-
-<ul>
-  <li>Create a storage mechanism for storing users' purchase information.</li>
-  <li>Create a user interface that lets users select items for purchase.</li>
-</ul>
-
-<p>The sample code in <code>Dungeons.java</code> shows you how to do both of these tasks.</p>
-
-<h3>Creating a storage mechanism for storing purchase information</h3>
-
-<p>You must set up a database or some other mechanism for storing users' purchase information. The
-sample application provides an example database (PurchaseDatabase.java); however, the example
-database has been simplified for clarity and does not exhibit the security best practices that we
-recommend. If you have a remote server, we recommend that you store purchase information on your
-server instead of in a local database on a device. For more information about security best
-practices, see <a href="{@docRoot}google/play/billing/billing_best_practices.html">Security and
-Design</a>.</p>
-
-<p class="note"><strong>Note</strong>: If you store any purchase information on a device, be sure to
-encrypt the data and use a device-specific encryption key. Also, if the purchase type for any of
-your items is "unmanaged," we recommend that you back up the purchase information for these items to
-a remote server or use Android's <a href="{@docRoot}guide/topics/data/backup.html">data
-backup</a> framework to back up the purchase information. Backing up purchase information for
-unmanaged items is important because unmanaged items cannot be restored by using the
-<code>RESTORE_TRANSACTIONS</code> request type.</p>
-
-<h3>Creating a user interface for selecting items</h3>
-
-<p>You must provide users with a means for selecting items that they want to purchase. Google
-Play provides the checkout user interface (which is where the user provides a form of payment and
-approves the purchase), but your application must provide a control (widget) that invokes the
-<code>sendBillingRequest()</code> method when a user selects an item for purchase.</p>
-
-<p>You can render the control and trigger the <code>sendBillingRequest()</code> method any way you
-want. The sample application uses a spinner widget and a button to present items to a user and
-trigger a billing request (see <code>Dungeons.java</code>). The user interface also shows a list of
-recently purchased items.</p>
-
diff --git a/docs/html/google/play/billing/v2/billing_reference.jd b/docs/html/google/play/billing/v2/billing_reference.jd
deleted file mode 100644
index 5d97c98..0000000
--- a/docs/html/google/play/billing/v2/billing_reference.jd
+++ /dev/null
@@ -1,437 +0,0 @@
-page.title=In-app Billing Reference <span style="font-size:16px;">(IAB Version 2)</span>
-excludeFromSuggestions=true
-@jd:body
-
-<p class="caution" style=
-"background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;">
-  The <strong>In-app Billing Version 2 API</strong> has been deprecated in
-  favor of the Version 3 API. If your app is using In-app Billing, please
-  <strong>make sure that it is using the Version 3 API</strong>. If your app is
-  still using the Version 2 API, you must <strong>migrate to the Version 3 API
-  as soon as possible</strong>.<br>
-  <br>
-  We plan to turn off the In-app Billing Version 2 service on <strong>January
-  27, 2015</strong>, after which time users will <strong>no longer be able to
-  purchase in-app items and subscriptions through the Version 2 API</strong>.
-  We strongly encourage and recommend you migrate your apps to use Version 3
-  API by November 2014, to provide ample time for users to update their apps to
-  the new version.<br>
-  <br>
-  For more information, please see the <a href=
-  "http://support.google.com/googleplay/android-developer/answer/6090268">Help Center
-  article</a>. For common questions about transitioning your implementation to
-  In-app Billing Version 3, please see <a href=
-  "{@docRoot}google/play/billing/billing_overview.html#migration">Migration
-  Considerations</a>.
-</p>
-    <div id="qv-wrapper" style="margin-top:0;">
-<div id="qv">
-<h2>In this document</h2>
-  <ol>
-  <li><a href="#billing-codes">Server Response Codes</a></li>
-  <li><a href="#billing-interface">API Reference</a></li>
-  <li><a href="#billing-intents">Broadcast Intents</a></li>
-  <li><a href="#http-api">REST API for Subscriptions</a></li>
-  </ol>	
-
-<h2>Related Samples</h2>
-  <ol>
-  <li><a href="{@docRoot}google/play/billing/v2/billing_integrate.html#billing-download">Sample
-    Application (V2)</a></li>
-  </ol>  
-
-</div>
-</div>
-<p>This documentation provides technical reference information for using the In-app Billing Version 2 API. </p>
-
-<h2 id="billing-codes">Server Response Codes</h2>
-<p>The following table lists all of the server response codes that are sent from Google Play to
-your application. Google Play sends these response codes asynchronously as
-<code>response_code</code> extras in the <code>com.android.vending.billing.RESPONSE_CODE</code>
-broadcast intent. Your application must handle all of these response codes.</p>
-
-<p class="table-caption" id="response-codes-table"><strong>Table 6.</strong> Summary of response
-codes returned by Google Play.</p>
-
-<table>
-<tr>
-<th>Response Code</th>
-<th>Value</th>
-<th>Description</th>
-</tr>
-<tr>
-  <td><code>RESULT_OK</code></td>
-  <td>0</td>
-  <td>Indicates that the request was sent to the server successfully. When this code is returned in
-  response to a <code>CHECK_BILLING_SUPPORTED</code> request, indicates that billing is
-  supported.</td>
-</tr>
-<tr>
-  <td><code>RESULT_USER_CANCELED</code></td>
-  <td>1</td>
-  <td>Indicates that the user pressed the back button on the checkout page instead of buying the
-  item.</td>
-</tr>
-<tr>
-  <td><code>RESULT_SERVICE_UNAVAILABLE</code></td>
-  <td>2</td>
-  <td>Indicates that the network connection is down.</td>
-</tr>
-<tr>
-  <td><code>RESULT_BILLING_UNAVAILABLE</code></td>
-  <td>3</td>
-  <td>Indicates that In-app Billing is not available because the <code>API_VERSION</code> that you
-  specified is not recognized by the Google Play application or the user is ineligible for in-app
-  billing (for example, the user resides in a country that prohibits in-app purchases).</td>
-</tr>
-<tr>
-  <td><code>RESULT_ITEM_UNAVAILABLE</code></td>
-  <td>4</td>
-  <td>Indicates that Google Play cannot find the requested item in the application's product
-  list. This can happen if the product ID is misspelled in your <code>REQUEST_PURCHASE</code>
-  request or if an item is unpublished in the application's product list.</td>
-</tr>
-<tr>
-  <td><code>RESULT_DEVELOPER_ERROR</code></td>
-  <td>5</td>
-  <td>Indicates that an application is trying to make an In-app Billing request but the application
-  has not declared the com.android.vending.BILLING permission in its manifest. Can also indicate
-  that an application is not properly signed, or that you sent a malformed request, such as a
-  request with missing Bundle keys or a request that uses an unrecognized request type.</td>
-</tr>
-<tr>
-  <td><code>RESULT_ERROR</code></td>
-  <td>6</td>
-  <td>Indicates an unexpected server error. For example, this error is triggered if you try to
-purchase an item from yourself, which is not allowed.</td>
-</tr>
-</table>
-</p>
-
-<h3 id="billing-interface">In-app billing Version 2 API reference</h3>
-
-<p>The following section describes the interface for Google Play's In-app Billing service. The
-interface is defined in the <code>IMarketBillingService.aidl</code> file, which is included with the
-In-app Billing <a
-href="{@docRoot}google/play/billing/v2/billing_integrate.html#billing-download">sample
-application</a>.</p>
-<p>The interface consists of a single request method <code>sendBillingRequest()</code>. This method
-takes a single {@link android.os.Bundle} parameter. The Bundle parameter includes several key-value
-pairs, which are summarized in table 7.</p>
-
-<p class="table-caption"><strong>Table 7.</strong> Description of Bundle keys passed in a
-<code>sendBillingRequest()</code> request.</p>
-
-<table>
-
-<tr>
-<th>Key</th>
-<th>Type</th>
-<th>Possible Values</th>
-<th>Required?</th>
-<th>Description</th>
-</tr>
-<tr>
-  <td><code>BILLING_REQUEST</code></td>
-  <td><code>String</code></td>
-  <td><code>CHECK_BILLING_SUPPORTED</code>, <code>REQUEST_PURCHASE</code>,
-  <code>GET_PURCHASE_INFORMATION</code>, <code>CONFIRM_NOTIFICATIONS</code>, or
-  <code>RESTORE_TRANSACTIONS</code></td>
-  <td>Yes</td>
-  <td>The type of billing request you are making with the <code>sendBillingRequest()</code> request.
-  The possible values are discussed more below this table.</td>
-</tr>
-<tr>
-  <td><code>API_VERSION</code></td>
-  <td><code>int</code></td>
-  <td>  <ul>
-  <li><code>"2"</code> [<a href="#version_2">details</a>]</li>
-  <li><code>"1"</code> [<a href="#version_1">details</a>]</li>
-  </ul></td>
-  <td>Yes</td>
-  <td>The version of Google Play's In-app Billing service you want to use.</td>
-</tr>
-<tr>
-  <td><code>PACKAGE_NAME</code></td>
-  <td><code>String</code></td>
-  <td>A valid package name.</td>
-  <td>Yes</td>
-  <td>The name of the application that is making the request.</td>
-</tr>
-<tr>
-  <td><code>ITEM_ID</code></td>
-  <td><code>String</code></td>
-  <td>Any valid product identifier.</td>
-  <td>Required for <code>REQUEST_PURCHASE</code> requests.</td>
-  <td>The product ID of the item you are making a billing request for. Every in-app item that you
-  sell using Google Play's In-app Billing service must have a unique product ID, which you
-  specify on the Google Play Developer Console.</td>
-</tr>
-<tr>
-  <td><code>NONCE</code></td>
-  <td><code>long</code></td>
-  <td>Any valid <code>long</code> value.</td>
-  <td>Required for <code>GET_PURCHASE_INFORMATION</code> and <code>RESTORE_TRANSACTIONS</code>
-  requests.</td>
-  <td>A number used once. Your application must generate and send a nonce with each
-  <code>GET_PURCHASE_INFORMATION</code> and <code>RESTORE_TRANSACTIONS</code> request. The nonce is
-  returned with the <code>PURCHASE_STATE_CHANGED</code> broadcast intent, so you can use this value
-  to verify the integrity of transaction responses form Google Play.</td>
-</tr>
-<tr>
-  <td><code>NOTIFY_IDS</code></td>
-  <td>Array of <code>long</code> values</td>
-  <td>Any valid array of <code>long</code> values</td>
-  <td>Required for <code>GET_PURCHASE_INFORMATION</code> and <code>CONFIRM_NOTIFICATIONS</code>
-  requests.</td>
-  <td>An array of notification identifiers. A notification ID is sent to your application in an
-  <code>IN_APP_NOTIFY</code> broadcast intent every time a purchase changes state. You use the
-  notification to retrieve the details of the purchase state change.</td>
-</tr>
-<tr>
-  <td><code>DEVELOPER_PAYLOAD</code></td>
-  <td><code>String</code></td>
-  <td>Any valid <code>String</code> less than 256 characters long.</td>
-  <td>No</td>
-  <td>A developer-specified string that can be specified when you make a
-  <code>REQUEST_PURCHASE</code> request. This field is returned in the JSON string that contains
-  transaction information for an order. You can use this key to send supplemental information with
-  an order. For example, you can use this key to send index keys with an order, which is useful if
-  you are using a database to store purchase information. We recommend that you do not use this key
-  to send data or content.</td>
-</tr>
-</table>
-
-<p>The <code>BILLING_REQUEST</code> key can have the following values:</p>
-
-<ul>
-  <li><code>CHECK_BILLING_SUPPORTED</code>
-    <p>This request verifies that the Google Play application supports In-app Billing. You
-    usually send this request when your application first starts up. This request is useful if you
-    want to enable or disable certain UI features that are relevant only to In-app Billing.</p>
-  </li>
-  <li><code>REQUEST_PURCHASE</code>
-    <p>This request sends a purchase message to the Google Play application and is the foundation
-    of In-app Billing. You send this request when a user indicates that he or she wants to purchase
-    an item in your application. Google Play then handles the financial transaction by displaying
-    the checkout user interface.</p>
-  </li>
-  <li><code>GET_PURCHASE_INFORMATION</code>
-    <p>This request retrieves the details of a purchase state change. A purchase state change can
-    occur when a purchase request is billed successfully or when a user cancels a transaction during
-    checkout. It can also occur when a previous purchase is refunded. Google Play notifies your
-    application when a purchase changes state, so you only need to send this request when there is
-    transaction information to retrieve.</p>
-  </li>
-  <li><code>CONFIRM_NOTIFICATIONS</code>
-    <p>This request acknowledges that your application received the details of a purchase state
-    change. That is, this message confirms that you sent a <code>GET_PURCHASE_INFORMATION</code>
-    request for a given notification and that you received the purchase information for the
-    notification.</p>
-  </li>
-  <li><code>RESTORE_TRANSACTIONS</code>
-    <p>This request retrieves a user's transaction status for managed purchases (see <a
-    href="{@docRoot}google/play/billing/billing_admin.html#billing-purchase-type">Choosing a
-    Purchase Type</a> for more information). You should send this message only when you need to
-    retrieve a user's transaction status, which is usually only when your application is reinstalled
-    or installed for the first time on a device.</p>
-  </li>
-</ul>
-
-<p>Every In-app Billing request generates a synchronous response. The response is a {@link
-android.os.Bundle} and can include one or more of the following keys:</p>
-
-<ul>
-  <li><code>RESPONSE_CODE</code>
-    <p>This key provides status information and error information about a request.</p>
-  </li>
-  <li><code>PURCHASE_INTENT</code>
-    <p>This key provides a {@link android.app.PendingIntent}, which you use to launch the checkout
-    activity.</p>
-  </li>
-  <li><code>REQUEST_ID</code>
-    <p>This key provides you with a request identifier, which you can use to match asynchronous
-    responses with requests.</p>
-  </li>
-</ul>
-
-<p>Some of these keys are not relevant to certain types of requests. Table 8 shows which keys are
-returned for each request type.</p>
-
-<p class="table-caption"><strong>Table 8.</strong> Description of Bundle keys that are returned with
-each In-app Billing request type.</p>
-
-<table>
-
-<tr>
-<th>Request Type</th>
-<th>Keys Returned</th>
-<th>Possible Response Codes</th>
-</tr>
-<tr>
-  <td><code>CHECK_BILLING_SUPPORTED</code></td>
-  <td><code>RESPONSE_CODE</code></td>
-  <td><code>RESULT_OK</code>, <code>RESULT_BILLING_UNAVAILABLE</code>, <code>RESULT_ERROR</code>,
-  <code>RESULT_DEVELOPER_ERROR</code></td>
-</tr>
-<tr>
-  <td><code>REQUEST_PURCHASE</code></td>
-  <td><code>RESPONSE_CODE</code>, <code>PURCHASE_INTENT</code>, <code>REQUEST_ID</code></td>
-  <td><code>RESULT_OK</code>, <code>RESULT_ERROR</code>, <code>RESULT_DEVELOPER_ERROR</code></td>
-</tr>
-<tr>
-  <td><code>GET_PURCHASE_INFORMATION</code></td>
-  <td><code>RESPONSE_CODE</code>, <code>REQUEST_ID</code></td>
-  <td><code>RESULT_OK</code>, <code>RESULT_ERROR</code>, <code>RESULT_DEVELOPER_ERROR</code></td>
-</tr>
-<tr>
-  <td><code>CONFIRM_NOTIFICATIONS</code></td>
-  <td><code>RESPONSE_CODE</code>, <code>REQUEST_ID</code></td>
-  <td><code>RESULT_OK</code>, <code>RESULT_ERROR</code>, <code>RESULT_DEVELOPER_ERROR</code></td>
-</tr>
-<tr>
-  <td><code>RESTORE_TRANSACTIONS</code></td>
-  <td><code>RESPONSE_CODE</code>, <code>REQUEST_ID</code></td>
-  <td><code>RESULT_OK</code>, <code>RESULT_ERROR</code>, <code>RESULT_DEVELOPER_ERROR</code></td>
-</tr>
-</table>
-
-<h3 id="billing-intents">In-app billing broadcast intents</h3>
-
-<p>The following section describes the In-app Billing broadcast intents that are sent by the Google
-Play application. These broadcast intents inform your application about In-app Billing actions
-that have occurred. Your application must implement a {@link android.content.BroadcastReceiver} to
-receive these broadcast intents, such as the <code>BillingReceiver</code> that's shown in the in-app
-billing <a href="{@docRoot}google/play/billing/v2/billing_integrate.html#billing-download">sample
-application</a>.</p>
-
-<h4>com.android.vending.billing.RESPONSE_CODE</h4>
-
-<p>This broadcast intent contains a Google Play response code, and is sent after you make an
-In-app Billing request. A server response code can indicate that a billing request was successfully
-sent to Google Play or it can indicate that some error occurred during a billing request. This
-intent is not used to report any purchase state changes (such as refund or purchase information).
-For more information about the response codes that are sent with this response, see <a
-href="#billing-codes">Google Play Response Codes for In-app Billing</a>. The sample application
-assigns this broadcast intent to a constant named <code>ACTION_RESPONSE_CODE</code>.</p>
-
-<h5>Extras</h5>
-
-<ul type="none">
-  <li><code>request_id</code>&mdash;a <code>long</code> representing a request ID. A request ID
-  identifies a specific billing request and is returned by Google Play at the time a request is
-  made.</li>
-  <li><code>response_code</code>&mdash;an <code>int</code> representing the Google Play server
-  response code.</li>
-</ul>
-
-<h4>com.android.vending.billing.IN_APP_NOTIFY</h4>
-
-<p>This response indicates that a purchase has changed state, which means a purchase succeeded, was
-canceled, or was refunded. This response contains one or more notification IDs. Each notification ID
-corresponds to a specific server-side message, and each messages contains information about one or
-more transactions. After your application receives an <code>IN_APP_NOTIFY</code> broadcast intent,
-you send a <code>GET_PURCHASE_INFORMATION</code> request with the notification IDs to retrieve the
-message details. The sample application assigns this broadcast intent to a constant named
-<code>ACTION_NOTIFY</code>.</p>
-
-<h5>Extras</h5>
-
-<ul type="none">
-  <li><code>notification_id</code>&mdash;a <code>String</code> representing the notification ID for
-  a given purchase state change. Google Play notifies you when there is a purchase state change
-  and the notification includes a unique notification ID. To get the details of the purchase state
-  change, you send the notification ID with the <code>GET_PURCHASE_INFORMATION</code> request.</li>
-</ul>
-
-<h4>com.android.vending.billing.PURCHASE_STATE_CHANGED</h4>
-
-<p>This broadcast intent contains detailed information about one or more transactions. The
-transaction information is contained in a JSON string. The JSON string is signed and the signature
-is sent to your application along with the JSON string (unencrypted). To help ensure the security of
-your In-app Billing messages, your application can verify the signature of this JSON string. The
-sample application assigns this broadcast intent to a constant named
-<code>ACTION_PURCHASE_STATE_CHANGED</code>.</p>
-
-<h5>Extras</h5>
-
-<ul type="none">
-  <li><code>inapp_signed_data</code>&mdash;a <code>String</code> representing the signed JSON
-  string.</li>
-  <li><code>inapp_signature</code>&mdash;a <code>String</code> representing the signature.</li>
-</ul>
-
-<p class="note"><strong>Note:</strong> Your application should map the broadcast intents and extras
-to constants that are unique to your application. See the <code>Consts.java</code> file in the
-sample application to see how this is done.</p>
-
-<p>The fields in the JSON string are described in the following table (see table 9):</p>
-
-<p class="table-caption"><strong>Table 9.</strong> Description of JSON fields that are returned with
-a <code>PURCHASE_STATE_CHANGED</code> intent.</p>
-
-<table>
-
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-<tr>
-  <td>nonce</td>
-  <td>A number used once. Your application generates the nonce and sends it with the
-  <code>GET_PURCHASE_INFORMATION</code> request. Google Play sends the nonce back as part of the
-  JSON string so you can verify the integrity of the message.</td>
-</tr>
-<tr>
-  <td>notificationId</td>
-  <td>A unique identifier that is sent with an <code>IN_APP_NOTIFY</code> broadcast intent. Each
-  <code>notificationId</code> corresponds to a specify message that is waiting to be retrieved on
-  the Google Play server. Your application sends back the <code>notificationId</code> with the
-  <code>GET_PURCHASE_INFORMATION</code> message so Google Play can determine which messages you
-  are retrieving.</td>
-</tr>
-<tr>
-  <td>orderId</td>
-  <td>A unique order identifier for the transaction. This corresponds to the Google payments order
-  ID.</td>
-</tr>
-<tr>
-  <td>packageName</td>
-  <td>The application package from which the purchase originated.</td>
-</tr>
-<tr>
-  <td>productId</td>
-  <td>The item's product identifier. Every item has a product ID, which you must specify in the
-  application's product list on the Google Play Developer Console.</td>
-</tr>
-<tr>
-  <td>purchaseTime</td>
-  <td>The time the product was purchased, in milliseconds since the epoch (Jan 1, 1970).</td>
-</tr>
-
-<tr>
-  <td>purchaseState</td>
-  <td>The purchase state of the order. Possible values are 0 (purchased), 1 (canceled), 2
-  (refunded), or 3 (expired, for subscription purchases only).</td>
-</tr>
-<tr>
-  <td>purchaseToken</td>
-  <td>A token that uniquely identifies a subscription purchase for a given item and user pair.
-  You can use the token to specify the subscription when querying for subscription validity.
-  
-  <p><br><em>Supported only in In-app Billing API Version 2 and higher.</em></p></td>
-</tr>
-<tr>
-  <td>developerPayload</td>
-  <td>A developer-specified string that contains supplemental information about an order. You can
-  specify a value for this field when you make a <code>REQUEST_PURCHASE</code> request.</td>
-</tr>
-</table>
-
-<!--<h2 id="other-intents">Other Intents</h2> 
-
-<p>The following Intents related to In-app Billing may be useful in your
-implemention. </p> -->
-
-<h3 id="http-api">REST API for subscriptions</h3>
-<p>Google Play offers an HTTP-based API that you can use to remotely query the validity of a specific subscription at any time or cancel a subscription. The API is designed to be used from your backend servers as a way of securely managing subscriptions, as well as extending and integrating subscriptions with other services. See <a href="{@docRoot}google/play/billing/gp-purchase-status-api.html">Purchase Status API</a> for more information.</p>
diff --git a/docs/html/google/play/billing/v2/billing_subscriptions.jd b/docs/html/google/play/billing/v2/billing_subscriptions.jd
deleted file mode 100644
index d602b0a..0000000
--- a/docs/html/google/play/billing/v2/billing_subscriptions.jd
+++ /dev/null
@@ -1,448 +0,0 @@
-page.title=Implementing Subscriptions  <span style="font-size:16px;">(IAB Version 2)</span>
-excludeFromSuggestions=true
-@jd:body
-
-<p class="caution" style=
-"background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;">
-  The <strong>In-app Billing Version 2 API</strong> has been deprecated in
-  favor of the Version 3 API. If your app is using In-app Billing, please
-  <strong>make sure that it is using the Version 3 API</strong>. If your app is
-  still using the Version 2 API, you must <strong>migrate to the Version 3 API
-  as soon as possible</strong>.<br>
-  <br>
-  We plan to turn off the In-app Billing Version 2 service on <strong>January
-  27, 2015</strong>, after which time users will <strong>no longer be able to
-  purchase in-app items and subscriptions through the Version 2 API</strong>.
-  We strongly encourage and recommend you migrate your apps to use Version 3
-  API by November 2014, to provide ample time for users to update their apps to
-  the new version.<br>
-  <br>
-  For more information, please see the <a href=
-  "http://support.google.com/googleplay/android-developer/answer/6090268">Help Center
-  article</a>. For common questions about transitioning your implementation to
-  In-app Billing Version 3, please see <a href=
-  "{@docRoot}google/play/billing/billing_overview.html#migration">Migration
-  Considerations</a>.
-</p>
-    <div id="qv-wrapper" style="margin-top:0;">
-<div id="qv">
-  <h2>In this document</h2>
-  <ol>
-        <li><a href="#sample">Sample Application</a></li>
-        <li><a href="#model">Application Model</a></li>
-        <li><a href="#token">Purchase Token</a></li>
-        <li><a href="#version">Checking the In-app Billing API Version</a></li>
-        <li><a href="#purchase">Purchasing a Subscription</a></li>
-        <li><a href="#restore">Restoring Transactions</a></li>
-        <li><a href="#validity">Checking Subscription Validity</a></li>
-        <li><a href="#viewstatus">Letting Users Cancel or View Status</a></li>
-        <li><a href="#purchase-state-changes">Recurring Billing and Changes in Purchase State</a></li>
-        <li><a href="#modifying">Modifying Your App for Subscriptions</a></li>
-   </ol>
-</div>
-</div>
-
-<p>This document is focused on highlighting implementation details that are 
-specific to subscriptions with the Version 2 API. To understand how  
-subscriptions work, see <a href="{@docRoot}google/play/billing/billing_subscriptions.html">In-app Billing Subscriptions</a>.</p>
-
-
-<h2 id="sample">Sample Application</h2>
-
-<p>To help you get started with your In-app Billing implementation and
-subscriptions, an updated Version of the In-app Billing sample app is available.
-You can download the sample app from the Android SDK repository using the
-Android SDK Manager. For details, see <a
-href="{@docRoot}google/play/billing/v2/billing_integrate.html#billing-download">
-Downloading the Sample Application</a>.</p>
-
-<h2 id="model">Application Model</h2>
-
-<p>With subscriptions, your app uses the standard In-app Billing application
-model, sending billing requests to the Play Store application over interprocess
-communication (IPC) and receiving purchase responses from the Play Store app in
-the form of asynchronous broadcast intents. Your application does not manage any
-network connections between itself and the Google Play server or use any special
-APIs from the Android platform.</p>
-
-<p>Your app also uses the standard In-app Billing components &mdash; a billing
-Service for sending requests, a BroadcastReceiver for receiving the responses,
-and a security component for verifying that the response was sent by Google
-Play. Also recommended are a response Handler for processing notifications,
-errors, and status messages, and an observer for sending callbacks to your
-application as needed. All of these components and their interactions are
-described in full in the <a
-href="{@docRoot}google/play/billing/v2/api.html">In-app Billing
-Overview</a> and related documents.</p>
-
-<p>To initiate different types of billing communication with Google Play, your
-app will use the standard set of in-app billing requests and receive the same
-responses. Inside the requests and responses are two new fields described below.
-</p>
-
-<h2 id="token">Purchase Token</h2>
-
-<p>Central to the end-to-end architecture for subscriptions is the purchase
-token, a string value that uniquely identifies (and associates) a user ID and a
-subscription ID. Google Play generates the purchase token when the user
-completes the purchase of a subscription product (and payment is approved by
-Google) and then sends it to the purchasing app on the device through the
-In-app Billing API. </p>
-
-<p>At the conclusion of a <code>PURCHASE_REQUEST</code> message flow, your app
-can retrieve the purchase token and other transaction details by initiating a
-<code>GET_PURCHASE_INFORMATION</code> request. The Bundle returned by the call
-contains an JSON array of order objects. In the order corresponding to the
-subscription purchase, the token is available in the <code>purchaseToken</code>
-field. </p>
-
-<p>An example of a JSON order object that includes a subscription purchase token
-is shown below. </p>
-
-<pre class="no-pretty-print" style="color:black">{ "nonce" : 1836535032137741465,
-  "orders" :
-    [{ "notificationId" : "android.test.purchased",
-       "orderId" : "12999556515565155651.5565135565155651"
-       "packageName" : "com.example.dungeons",
-       "productId" : "android.test.purchased",
-       "developerPayload" : "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
-       "purchaseTime" : 1290114783411,
-       "purchaseState" : 0,
-       "purchaseToken" : "rojeslcdyyiapnqcynkjyyjh" }]
-}
-</pre>
-
-<p>After receiving a purchase token, your apps can store the token locally or
-pass it to your backend servers, which can then use it to query the billing
-status or cancel the subscription remotely. If your app will store the token
-locally, please read the <a
-href="{@docRoot}google/play/billing/billing_best_practices.html">Security and
-Design</a> document for best practices for maintaining the security of your
-data.</p>
-
-<h2 id="version">Checking the In-app Billing API Version</h2>
-
-<p>Subscriptions support is available only in versions of Google Play that
-support the In-app Billing v2 API (Google Play 3.5 and higher). For your app,
-an essential first step at launch is to check whether the Version of Google Play
-installed on the device supports the In-app Billing v2 API and
-subscriptions.</p>
-
-<p>To do this, create a CHECK_BILLING_SUPPORTED request Bundle that includes the
-required key-value pairs, together with</p>
-
-<ul>
-  <li>The <code>API_VERSION</code> key, assigning a value of 2.</li>
-  <li>The <code>BILLING_REQUEST_ITEM_TYPE</code> key, assigning a value of “subs”</li>
-</ul>
-
-<p>Send the request using <code>sendBillingRequest(Bundle)</code> and receive
-the response Bundle. You can extract the response from the
-<code>BILLING_RESPONSE_RESPONSE_CODE</code> key of the response. RESULT_OK
-indicates that subscriptions are supported.</p>
-
-<p>The sample app declares constants for the accepted
-<code>BILLING_REQUEST_ITEM_TYPE</code> values (from Consts.java):</p>
-
-<pre class="pretty-print">   // These are the types supported in the IAB v2
-   public static final String ITEM_TYPE_INAPP = "inapp";
-   public static final String ITEM_TYPE_SUBSCRIPTION = "subs";
-</pre>
-
-<p>It sets up a convenience method for building the request bundle (from BillingService.java):</p>
-
-<pre class="pretty-print">       protected Bundle makeRequestBundle(String method) {
-           Bundle request = new Bundle();
-           request.putString(Consts.BILLING_REQUEST_METHOD, method);
-           request.putInt(Consts.BILLING_REQUEST_<code>API_VERSION</code>, 2);
-           request.putString(Consts.BILLING_REQUEST_PACKAGE_NAME, getPackageName());
-           return request;
-       }
-</pre>
-
-<p>Here’s an example of how to test support for In-App Billing v2 and subscriptions
-(from BillingService.java):</p>
-
-<pre class="pretty-print">   /**
-    * Wrapper class that checks if in-app billing is supported.
-    */
-   class CheckBillingSupported extends BillingRequest {
-       public String mProductType = null;
-       public CheckBillingSupported() {
-           // This object is never created as a side effect of starting this
-           // service so we pass -1 as the startId to indicate that we should
-           // not stop this service after executing this request.
-           super(-1);
-       }
-
-       public CheckBillingSupported(String type) {
-           super(-1);
-           mProductType = type;
-       }
-
-       &#64;Override
-       protected long run() throws RemoteException {
-           Bundle request = makeRequestBundle("CHECK_BILLING_SUPPORTED");
-           if (mProductType != null) {
-               request.putString(Consts.<code>BILLING_REQUEST_ITEM_TYPE</code>, mProductType);
-           }
-           Bundle response = mService.sendBillingRequest(request);
-           int responseCode = response.getInt(Consts.<code>BILLING_RESPONSE_RESPONSE_CODE</code>);
-           if (Consts.DEBUG) {
-               Log.i(TAG, "CheckBillingSupported response code: " +
-                       ResponseCode.valueOf(responseCode));
-           }
-           boolean billingSupported = (responseCode == ResponseCode.RESULT_OK.ordinal());
-           ResponseHandler.checkBillingSupportedResponse(billingSupported, mProductType);
-           return Consts.BILLING_RESPONSE_INVALID_REQUEST_ID;
-       }
-   }
-</pre>
-
-<h2 id="purchase">Requesting a Subscription Purchase</h2>
-
-<p>Once you’ve checked the API Version as described above and determined that
-subscriptions are supported, you can present subscription products to the user
-for purchase. When the user has selected a subscription product and initiated a
-purchase, your app handles the purchase just as it would for other in-app
-products &mdash; by sending a REQUEST_PURCHASE request. You can then launch
-Google Play to display the checkout user interface and handle the financial
-transaction..  
-
-<p>The REQUEST_PURCHASE includes a Bundle containing the item details, as
-described in the <a
-href="{@docRoot}google/play/billing/v2/api.html">In-app Billing
-Overview</a>. For a subscription, the Bundle must also specify:</p>
-
-<ul>
-  <li>The <code>ITEM_ID</code> key, with a value that specifies a valid, published
-  subscription product.</li>
-  <li>The <code>ITEM_TYPE</code> key, with a value of “subs”
-  (<code>ITEM_TYPE_SUBSCRIPTION</code> in the sample app). If the request does not
-  specify the subscription's <code>ITEM_TYPE</code>, Google Play attempts to
-  handle the request as a standard in-app purchase (one-time purchase).</li>
-</ul>
-
-<p>Google Play synchronously returns a response bundle that includes
-<code>RESPONSE_CODE</code>, <code>PURCHASE_INTENT</code>, and
-<code>REQUEST_ID</code>. Your app uses the <code>PURCHASE_INTENT</code> to
-launch the checkout UI and the message flow proceeds exactly as described in <a
-href="{@docRoot}google/play/billing/v2/api.html#billing-message-
-sequence">Messaging sequence</a>.</p>
-
-<p>Here’s how the sample app initiates a purchase for a subscription, where
-<code>mProductType</code> is <code>ITEM_TYPE_SUBSCRIPTION</code> (from
-BillingService.java).</p>
-
-<pre class="pretty-print">   /**
-    * Wrapper class that requests a purchase.
-    */
-   class RequestPurchase extends BillingRequest {
-       public final String mProductId;
-       public final String mDeveloperPayload;
-       public final String mProductType;
-
-. . .
-
-       &#64;Override
-       protected long run() throws RemoteException {
-           Bundle request = makeRequestBundle("REQUEST_PURCHASE");
-           request.putString(Consts.BILLING_REQUEST_ITEM_ID, mProductId);
-           request.putString(Consts.<code>BILLING_REQUEST_ITEM_TYPE</code>, mProductType);
-           // Note that the developer payload is optional.
-           if (mDeveloperPayload != null) {
-               request.putString(Consts.BILLING_REQUEST_DEVELOPER_PAYLOAD, mDeveloperPayload);
-           }
-           Bundle response = mService.sendBillingRequest(request);
-           PendingIntent pendingIntent
-                   = response.getParcelable(Consts.BILLING_RESPONSE_PURCHASE_INTENT);
-           if (pendingIntent == null) {
-               Log.e(TAG, "Error with requestPurchase");
-               return Consts.BILLING_RESPONSE_INVALID_REQUEST_ID;
-           }
-
-           Intent intent = new Intent();
-           ResponseHandler.buyPageIntentResponse(pendingIntent, intent);
-           return response.getLong(Consts.BILLING_RESPONSE_REQUEST_ID,
-                   Consts.BILLING_RESPONSE_INVALID_REQUEST_ID);
-       }
-
-       &#64;Override
-       protected void responseCodeReceived(ResponseCode responseCode) {
-           ResponseHandler.responseCodeReceived(BillingService.this, this, responseCode);
-       }
-   }
-</pre>
-
-<h2 id="restoring">Restoring Transactions</h2>
-
-<p>Subscriptions always use  the <em>managed by user account</em> purchase type,
-so that you can restore a record of subscription transactions on the device when
-needed. When a user installs your app onto a new device, or when the user
-uninstalls/reinstalls the app on the original device, your app should restore
-the subscriptions that the user has purchased.</p>
-
-<p>The process for restoring subscriptions transactions is the same as described
-in <a
-href="{@docRoot}google/play/billing/v2/api.html#billing-message-
-sequence">Messaging sequence</a>. Your app sends a
-<code>RESTORE_TRANSACTIONS</code> request to Google Play. Google Play sends two
-broadcast intents as asynchronous responses &mdash; a <code>RESPONSE_CODE</code>
-intent and a <code>PURCHASE_STATE_CHANGED</code> intent.</p>
-
-<p>The <code>PURCHASE_STATE_CHANGED</code> intent contains a notification ID
-that your app can use to retrieve the purchase details, including the purchase
-token, by sending a standard <code>GET_PURCHASE_INFORMATION</code> request. The
-<code>Bundle</code> returned in the call includes an JSON array of order objects
-corresponding to subscription (and in-app product) purchases that you can
-restore locally.</p>
-
-<p>Your app can store the restored purchase state and other transaction details
-in the way that best meets your needs. Your app can use it later to check the
-subscription validity, although please read the <a
-href="{@docRoot}google/play/billing/billing_best_practices.html">Security and
-Design</a> document for best practices for maintaining the security of your
-data.</p>
-
-<h2 id="validity">Checking Subscription Validity</h2>
-
-<p>Subscriptions are time-bound purchases that require successful billing
-recurrences over time to remain valid. Your app should check the validity of
-purchased subscriptions at launch or prior to granting access to subscriber
-content.</p>
-
-<p>With In-app Billing, you validate a subscription by keeping track of its
-purchase state and then checking the state whenever needed. Google Play 
-provides two ways to let you know when the purchase
-state of a subscription changes:</p>
-
-<ul>
-  <li><em>In-app Billing Notifications</em>. Google Play pushes a notification
-  to your app to indicate a change in the purchase state of a subscription. Your app can
-  store the most recent purchase state for a given purchase token and then check
-  that state at run time, as needed.</li>
-  <li><em>Google Play Android Developer API</em>. You can use this HTTP-based
-  API to poll Google Play for the current purchase state of a subscription. You
-  can store the purchased state for each <code>purchaseToken</code> on your
-  backend servers. For more information, see <a href="#play-dev-api">Google Play
-  Android Developer API</a>, below.</li>
-</ul>
-
-<p>For most use-cases, especially those where backend servers are already keeping
-track of subscribed users, implementing a combination of both methods is the
-recommended approach. A typical implementation might work like this:</p>
-
-<ul>
-  <li>When the user successfully purchases a new subscription, your app notifies a
-  backend server, which stores the purchase token, user name, and other
-  information in a secure location.</li>
-  <li>Since your app cannot know the expiration date, your server can poll Google
-  Play to get the expiration and store it with the purchase token and other
-  data.</li>
-  <li>Because your server now knows the expiration date, it does not need to poll
-  Google Play again until after the expiration date, at which time it can confirm
-  that the subscription was not cancelled.</li>
-  <li>On the client side, your app can continue to update the server whenever the
-  purchase state changes, storing the state locally.</li>
-</ul>
-
-<p>If you are using both notifications and the Google Play Android Developer API to validate subscriptions, we recommend the following:</p>
-
-<ul>
-  <li>If your app wants to check validity but you can’t reach your server (or
-you don’t have a server), use the latest purchase state received by
-notification.</li>
-  <li>If you have a server and it’s reachable, always give preference to the
-purchase state obtained from your server over the state received in
-notifications.</li>
-</ul>
-
-<p>If necessary, you can also use a <code>RESTORE_TRANSACTIONS</code> request to retrieve a record of all managed and in-app products purchased by the user, which you can then store locally. However, using <code>RESTORE_TRANSACTIONS</code> on a regular basis is not recommended because of performance impacts.</p>
-
-<p>Regardless of the approach you choose, your app should check subscriptions
-and validity at launch, such as prior to accessing subscriber content, game
-levels, and so on.</p>
-
-<p class="table-caption"><strong>Table 1.</strong> Summary of purchaseState
-values for subscription purchases, as received with a
-<code>PURCHASE_STATE_CHANGED</code> intent.</p>
-
-<table>
-<tr>
-<th>State</th><th>purchaseState Value</th><th>Comments</th>
-</tr>
-<tr>
-<td>Purchased successfully</td><td><code>0</code></td><td>Sent at original purchase only (not at recurring billing cycles).</td></tr>
-<td>Cancelled</td><td><code>1</code></td><td>Sent at original purchase only if the purchase has failed for some reason. </td></tr>
-<td>Refunded</td><td><code>2</code></td><td>The purchase was refunded.</code></td></tr>
-<td>Subscription expired</td><td><code>3</code></td><td>Sent at the end of a billing cycle to indicate that the subscription expired without renewal because of non-payment or user-cancellation. Your app does not need to grant continued access to the subscription content. 
-</td></tr>
-</table>
-
-
-<h2 id="viewstatus">Letting the User Cancel or View Subscriptions</h2>
-
-<p>In-app Billing does not currently provide an API to let users directly view or cancel
-subscriptions from within the purchasing app. Instead, users can launch the Play
-Store app on their devices and go to the My Apps screen to manage subscriptions. In My Apps,
-users can see a list of their subscriptions organized by application. Tapping one of the
-subscriptions loads the app's product page, from which users can see active subscriptions
-and billing status and cancel subscriptions as needed.</p>
-
-<p>To make it easier for users to find and manage their subscriptions from inside your app, 
-we recommend that you offer a "View My Subscriptions" or "Manage Subscriptions" option in
-your UI that directly loads your app's product page in the Play Store app.</p>
-
-<p>To do this, create an intent with the <a 
-href="{@docRoot}reference/android/content/Intent.html#ACTION_VIEW">ACTION_VIEW</a>
-action and include the <code>market://</code> URI (rather than the <code>http://</code>
-URI) of your app's details page. Here’s an example:</p>
-
-<pre style="pretty-print">Intent intent = new Intent(Intent.ACTION_VIEW);
-intent.setData(Uri.parse("market://details?id=com.example.app"));
-startActivity(intent);</pre>
-
-<p>For more information, see 
-  <a href="{@docRoot}distribute/tools/promote/linking.html">Linking to Your Products</a>.</p>
-
-<h2 id="purchase-state-changes">Recurring Billing, Cancellation, and Changes In Purchase State</h2>
-
-<p>Google Play notifies your app when the user completes the purchase of a
-subscription, but the purchase state does not change over time, provided that
-recurring billing takes place successfully. Google Play does not notify your app
-of a purchase state change <em>until the subscription expires because of
-non-payment or user cancellation</em>. </p>
-
-<p>Over the life of a subscription, your app does not need to initiate any
-recurring billing events &mdash; those are all handled by Google Play and they
-are transparent to your application if billing is successful.</p>
-
-<p>When the user cancels a subscription during an active billing cycle, Google
-Play <em>does not</em> notify your app immediately of the change in purchase
-state. Instead, it waits until the end of the active billing cycle and then
-notifies your app that the purchase state has changed to "Expired". </p>
-
-<p>Similarly, if payment for the next billing cycle fails, Google Play waits
-until the end of the active billing cycle and then notifies your app at that time that the
-purchase state has changed to "Expired".</p>
-
-<p>Your app can handle user cancellation and non-payment in the same way, since both cause
-a change to the same "Expired" purchase state. Once the purchase state has become "Expired",
-your app does not need to grant further access to the subscription content.</p>
-
-<h2 id="modifying">Modifying Your App for Subscriptions</h2>
-
-<p>For subscriptions, you make the same types of modifications to your app as
-are described in <a
-href="{@docRoot}google/play/billing/v2/billing_integrate.html#billing-implement">
-Modifying your Application Code</a>.</p>
-
-<p>Note that, in your UI that lets users view and select subscriptions for
-purchase, you should add logic to check for purchased subscriptions and validate
-them. Your UI should not present subscriptions if the user has already purchased
-them.</p>
-
-
-
-
-
diff --git a/docs/html/google/play/billing/versions.jd b/docs/html/google/play/billing/versions.jd
index aa35501..1b15b2d 100644
--- a/docs/html/google/play/billing/versions.jd
+++ b/docs/html/google/play/billing/versions.jd
@@ -2,13 +2,21 @@
 page.title=In-app Billing Version Notes
 @jd:body
 
-<p>The In-app Billing API is versioned, with each version offering additional features to your app. API support is provided by the Google Play Store app. On most devices, the Google Play Store app is updated automatically to support newer versions of the API. 
+<p>
+  The In-app Billing API is versioned, with each version offering additional
+  features to your app. API support is provided by the Google Play Store app.
+  On most devices, the Google Play Store app is updated automatically to
+  support newer versions of the API.
+</p>
 
 <p>The sections below list the supported versions of the In-app Billing API.</p>
 
 <p id="api_check"><strong><em>How to check for In-app Billing version</em></strong></p>
 
-<p>At run time, your app can query the Google Play Store app to determine what version of the API it supports and what features are available. </p>
+<p>
+  At run time, your app can query the Google Play Store app to determine what
+  version of the API it supports and what features are available.
+</p>
 
 <ul>
 
@@ -17,7 +25,12 @@
 supports the version of the In-app Billing API that you are using by sending an
 {@code isBillingSupported} request.</li>
 
-<li>If the In-app Billing API version that you are using is earlier than version 3, the version information is returned in the <code>API_VERSION</code> key of the Bundle object passed in the {@code sendBillingRequest} method. For more information, see <a href="{@docRoot}google/play/billing/v2/billing_reference.html#billing-interface-v2">In-app Billing Service Interface</a>.</li>
+<li>If the In-app Billing API version that you are using is earlier than version
+3, the version information is returned in the <code>API_VERSION</code> key of
+the Bundle object passed in the {@code sendBillingRequest} method. For more
+information, see
+<a href="{@docRoot}google/play/billing/v2/billing_reference.html#billing-interface-v2">
+In-app Billing Service Interface</a>.</li>
 </ul>
 
 <h3 id="version_5">In-app Billing version 5</h3>
@@ -38,17 +51,23 @@
 <h3 id="version_3">In-app Billing version 3</h3>
 <p><em>February 2013</em></p>
 <ul>
-<li>Purchasing and querying managed in-app items requires Google Play client 
+<li>Purchasing and querying managed in-app items requires Google Play client
 version 3.9.16 or higher.</li>
-<li>Purchasing and querying subscription items requires Google Play client 
+<li>Purchasing and querying subscription items requires Google Play client
 version 3.10.10 or higher.</li>
-<li>Provides a new Android Interface Definition Language (AIDL) file named {@code IInAppBillingService.aidl}. The new interface offers these features:
+<li>Provides a new Android Interface Definition Language (AIDL) file named
+  {@code IInAppBillingService.aidl}. The new interface offers these features:
 <ul>
-<li>Provides a new API to get details of in-app items published for the app including price, type, title and description.</li>
-<li>The purchase flow is synchronous and purchase information is available immediately after it completes.</li>
-<li>Purchase information of in-app purchases is maintained within the Google Play system till the purchase is consumed.</li>
-<li>An API to consume a purchase of an inapp item. All purchases of one-time in-app items are consumable and thereafter can be purchased again.</li>
-<li>An API to get current purchases of the user immediately. This list will not contain any consumed purchases.</li>
+<li>Provides a new API to get details of in-app items published for the app including price, type,
+  title and description.</li>
+<li>The purchase flow is synchronous and purchase information is available immediately after it
+  completes.</li>
+<li>Purchase information of in-app purchases is maintained within the Google Play system till the
+  purchase is consumed.</li>
+<li>An API to consume a purchase of an inapp item. All purchases of one-time in-app items are
+  consumable and thereafter can be purchased again.</li>
+<li>An API to get current purchases of the user immediately. This list will not contain any consumed
+  purchases.</li>
 </ul>
 </li>
 </ul>
@@ -57,9 +76,13 @@
 <p><em>May 2012</em></p>
 <ul>
   <li>Adds support for subscriptions, including free trial period.</li>
-  <li>Adds a new supported string value, "2", for the <code>API_VERSION</code> key of the Bundle object passed in the <code>sendBillingRequest()</code>.</li>
-  <li>Adds a new JSON field, <code>purchaseToken</code>, to the <code>orders</code> list returned in a <code>PURCHASE_STATE_CHANGED</code> intent. </li> 
-  <li>Adds a new <code>purchaseState</code> value, <code>3</code> (expired), to the <code>orders</code> list returned in a <code>PURCHASE_STATE_CHANGED</code> intent. The value indicates that a subscription has expired and is no longer valid.</li>
+  <li>Adds a new supported string value, "2", for the <code>API_VERSION</code> key of the Bundle
+    object passed in the <code>sendBillingRequest()</code>.</li>
+  <li>Adds a new JSON field, <code>purchaseToken</code>, to the <code>orders</code> list returned in
+    a <code>PURCHASE_STATE_CHANGED</code> intent. </li>
+  <li>Adds a new <code>purchaseState</code> value, <code>3</code> (expired), to the
+    <code>orders</code> list returned in a <code>PURCHASE_STATE_CHANGED</code> intent. The value
+    indicates that a subscription has expired and is no longer valid.</li>
 <li>Requires Google Play (Play Store) version 3.5 or higher.</li>
 </ul>
 
@@ -69,5 +92,3 @@
 <li>Initial release.</li>
 <li>Requires Google Play/Android Market 2.3.4 or higher.</li>
 </ul>
-
-
diff --git a/docs/html/google/play/expansion-files.jd b/docs/html/google/play/expansion-files.jd
old mode 100644
new mode 100755
index 0c514b2..6d1de7e
--- a/docs/html/google/play/expansion-files.jd
+++ b/docs/html/google/play/expansion-files.jd
@@ -1,5 +1,5 @@
 page.title=APK Expansion Files
-page.metaDescription=If your app needs more than the 50MB APK max, use free APK expansion files from Google Play.
+page.metaDescription=If your app needs more than the 100MB APK max, use free APK expansion files from Google Play.
 page.tags="apk size, apk max, large assets"
 @jd:body
 
@@ -8,7 +8,7 @@
 <div id="qv">
 <h2>Quickview</h2>
 <ul>
-  <li>Recommended for most apps that exceed the 50MB APK limit</li>
+  <li>Recommended for most apps that exceed the 100MB APK limit</li>
   <li>You can provide up to 4GB of additional data for each APK</li>
   <li>Google Play hosts and serves the expansion files at no charge</li>
   <li>The files can be any file type you want and are saved to the device's shared storage</li>
@@ -63,10 +63,10 @@
 
 
 
-<p>Google Play currently requires that your APK file be no more than 50MB. For most
+<p>Google Play currently requires that your APK file be no more than 100MB. For most
 applications, this is plenty of space for all the application's code and assets.
 However, some apps need more space for high-fidelity graphics, media files, or other large assets.
-Previously, if your app exceeded 50MB, you had to host and download the additional resources
+Previously, if your app exceeded 100MB, you had to host and download the additional resources
 yourself when the user opens the app. Hosting and serving the extra files can be costly, and the
 user experience is often less than ideal. To make this process easier for you and more pleasant
 for users, Google Play allows you to attach two large expansion files that supplement your
@@ -131,7 +131,7 @@
   <dt>{@code main} or {@code patch}</dt>
     <dd>Specifies whether the file is the main or patch expansion file. There can be
 only one main file and one patch file for each APK.</dd>
-  <dt>{@code <expansion-version>}</dt>
+  <dt>{@code &lt;expansion-version&gt;}</dt>
     <dd>This is an integer that matches the version code of the APK with which the expansion is
 <em>first</em> associated (it matches the application's <a
 href="{@docRoot}guide/topics/manifest/manifest-element.html#vcode">{@code android:versionCode}</a>
@@ -139,7 +139,7 @@
     <p>"First" is emphasized because although the Developer Console allows you to
 re-use an uploaded expansion file with a new APK, the expansion file's name does not change&mdash;it
 retains the version applied to it when you first uploaded the file.</p></dd>
-  <dt>{@code <package-name>}</dt>
+  <dt>{@code &lt;package-name&gt;}</dt>
     <dd>Your application's Java-style package name.</dd>
 </dl>
 
@@ -162,9 +162,9 @@
 </pre>
 
 <ul>
-  <li>{@code <shared-storage>} is the path to the shared storage space, available from
+  <li>{@code &lt;shared-storage&gt;} is the path to the shared storage space, available from
 {@link android.os.Environment#getExternalStorageDirectory()}.</li>
-  <li>{@code <package-name>} is your application's Java-style package name, available
+  <li>{@code &lt;package-name&gt;} is your application's Java-style package name, available
 from {@link android.content.Context#getPackageName()}.</li>
 </ul>
 
@@ -241,9 +241,9 @@
 application:</p>
 
 <ol>
-  <li>First determine whether your application absolutely requires more than 50MB per installation.
+  <li>First determine whether your application absolutely requires more than 100MB per installation.
 Space is precious and you should keep your total application size as small as possible. If your app
-uses more than 50MB in order to provide multiple versions of your graphic assets for multiple screen
+uses more than 100MB in order to provide multiple versions of your graphic assets for multiple screen
 densities, consider instead publishing <a
 href="{@docRoot}google/play/publishing/multiple-apks.html">multiple APKs</a> in which each APK
 contains only the assets required for the screens that it targets.</li>
@@ -450,37 +450,36 @@
 download two packages from the SDK Manager and add the appropriate libraries to your
 application.</p>
 
-<p>First, open the <a href="{@docRoot}sdk/exploring.html">Android SDK Manager</a>, expand
-<em>Extras</em> and download:</p>
+<p>First, open the <a href="{@docRoot}sdk/exploring.html">Android SDK Manager</a>
+(<strong>Tools > Android > SDK Manager</strong>), and under
+<em>Appearance & Behavior > System Settings > Android SDK</em>, select
+the <em>SDK Tools</em> tab to select and download:</p>
 <ul>
   <li><em>Google Play Licensing Library package</em></li>
   <li><em>Google Play APK Expansion Library package</em></li>
 </ul>
 
-<p>If you're using Eclipse, create a project for each library and add it to your app:</p>
+<p>Create a new library module for the License Verification Library and Downloader
+Library. For each library:</p>
 <ol>
-  <li>Create a new Library Project for the License Verification Library and Downloader
-Library. For each library:
-    <ol>
-      <li>Begin a new Android project.</li>
-      <li>Select <strong>Create project from existing
-source</strong> and choose the library from the {@code <sdk>/extras/google/} directory
-({@code market_licensing/} for the License Verification Library or {@code
-market_apk_expansion/downloader_library/} for the Downloader Library).</li>
-      <li>Specify a <em>Project Name</em> such as "Google Play License Library" and "Google Play
-Downloader
-Library"</li>
-      <li>Click <strong>Finish</strong>.</li>
-    </ol>
+  <li>Select <strong>File > New > New Module</strong>.</li>
+  <li>In the <em>Create New Module</em> window, select <strong>Android Library</strong>,
+and then select <strong>Next</strong>.</li>
+  <li>Specify an <em>Application/Library name</em> such as "Google Play License Library"
+and "Google Play Downloader Library", choose <em>Minimum SDK level</em>, then select
+<strong>Finish</strong>.</li>
+  <li>Select <strong>File > Project Structure</strong>.</li>
+  <li>Select the <em>Properties</em> tab and in <em>Library
+Repository</em>, enter the library from the {@code &lt;sdk&gt;/extras/google/} directory
+({@code play_licensing/} for the License Verification Library or {@code
+play_apk_expansion/downloader_library/} for the Downloader Library).</li>
+  <li>Select <strong>OK</strong> to create the new module.</li>
+</ol>
+
 <p class="note"><strong>Note:</strong> The Downloader Library depends on the License
 Verification Library. Be sure to add the License
-Verification Library to the Downloader Library's project properties (same process as
-steps 2 and 3 below).</p>
+Verification Library to the Downloader Library's project properties.</p>
   </li>
-  <li>Right-click the Android project in which you want to use APK expansion files and
-select <strong>Properties</strong>.</li>
-  <li>In the <em>Library</em> panel, click <strong>Add</strong> to select and add each of the
-libraries to your application.</li>
 </ol>
 
 <p>Or, from a command line, update your project to include the libraries:</p>
@@ -717,7 +716,7 @@
   </li>
   <li>Start the download by calling the static method {@code
 DownloaderClientMarshaller.startDownloadServiceIfRequired(Context c, PendingIntent
-notificationClient, Class<?> serviceClass)}.
+notificationClient, Class&lt;?> serviceClass)}.
     <p>The method takes the following parameters:</p>
     <ul>
       <li><code>context</code>: Your application's {@link android.content.Context}.</li>
@@ -781,7 +780,7 @@
   </li>
   <li>When the {@code startDownloadServiceIfRequired()} method returns anything <em>other
 than</em> {@code NO_DOWNLOAD_REQUIRED}, create an instance of {@code IStub} by
-calling {@code DownloaderClientMarshaller.CreateStub(IDownloaderClient client, Class<?>
+calling {@code DownloaderClientMarshaller.CreateStub(IDownloaderClient client, Class&lt;?>
 downloaderService)}. The {@code IStub} provides a binding between your activity to the downloader
 service such that your activity receives callbacks about the download progress.
     <p>In order to instantiate your {@code IStub} by calling {@code CreateStub()}, you must pass it
@@ -957,7 +956,7 @@
 depends on the type of file you've used. As discussed in the <a href="#Overview">overview</a>, your
 expansion files can be any kind of file you
 want, but are renamed using a particular <a href="#Filename">file name format</a> and are saved to
-{@code <shared-storage>/Android/obb/<package-name>/}.</p>
+{@code &lt;shared-storage&gt;/Android/obb/&lt;package-name&gt;/}.</p>
 
 <p>Regardless of how you read your files, you should always first check that the external
 storage is available for reading. There's a chance that the user has the storage mounted to a
@@ -1060,7 +1059,7 @@
 
 <p>The Google Market Apk Expansion package includes a library called the APK
 Expansion Zip Library (located in {@code
-<sdk>/extras/google/google_market_apk_expansion/zip_file/}). This is an optional library that
+&lt;sdk>/extras/google/google_market_apk_expansion/zip_file/}). This is an optional library that
 helps you read your expansion
 files when they're saved as ZIP files. Using this library allows you to easily read resources from
 your ZIP expansion files as a virtual file system.</p>
diff --git a/docs/html/google/play/licensing/overview.jd b/docs/html/google/play/licensing/overview.jd
old mode 100644
new mode 100755
index a2d5379..ecb384d
--- a/docs/html/google/play/licensing/overview.jd
+++ b/docs/html/google/play/licensing/overview.jd
@@ -197,8 +197,7 @@
 
 <ul>
 <li>An application can use the service only if the Google Play client is
-installed on its host device and the device is running Android 1.5 (API level 3)
-or higher.</li>
+installed on its host device and the device is running Android 1.5 (API level 3) or higher.</li>
 <li>To complete a license check, the licensing server must be accessible over
 the network. You can implement license caching behaviors to manage access to your application when
 there is no network connectivity. </li>
@@ -233,8 +232,7 @@
 
 <p>Although no license mechanism can completely prevent all unauthorized use,
 the licensing service lets you control access for most types of normal usage,
-across all compatible devices, locked or unlocked, that run Android 1.5 or
-higher version of the platform.</p>
+across all compatible devices, locked or unlocked.</p>
 
 <p>To begin adding application licensing to your application, continue to <a
 href="{@docRoot}google/play/licensing/setting-up.html">Setting Up for Licensing</a>.</p>
diff --git a/docs/html/google/play/licensing/setting-up.jd b/docs/html/google/play/licensing/setting-up.jd
old mode 100644
new mode 100755
index 1822337..f752182
--- a/docs/html/google/play/licensing/setting-up.jd
+++ b/docs/html/google/play/licensing/setting-up.jd
@@ -6,7 +6,7 @@
 
 <div id="qv-wrapper">
 <div id="qv">
-  
+
   <h2>In this document</h2>
   <ol>
   <li><a href="#account">Setting Up a Publisher Account</a></li>
@@ -161,7 +161,7 @@
 However, it does provide: </p>
 
 <ul>
-<li>An Google Play background service that implements the
+<li>A Google Play background service that implements the
 <code>ILicensingService</code> remote interface, so that your application can
 send license checks over the network to the licensing server. </li>
 <li>A set of underlying account services that let you add an a Google account on
@@ -179,21 +179,24 @@
 these steps: </p>
 
 <ol>
-  <li>Launch the Android SDK Manager (available under the Eclipse <strong>Window</strong>
-menu or by executing {@code <sdk>/tools/android sdk}).</li>
+  <li>Launch the Android SDK Manager, available under the Android Studio Tools menu
+(<strong>Tools > Android > SDK Manager</strong>) or by executing
+{@code &lt;sdk>/tools/android sdk}.</li>
   <li>Select and download <strong>Google APIs</strong> for the Android version you'd like to target
 (must be Android 2.2 or higher).</li>
-  <li>When the download is complete, open the AVD Manager (available under the Eclipse
-<strong>Window</strong>
-menu or by executing {@code <sdk>/tools/android avd}).</li>
-  <li>Click
-<strong>New</strong> and set the configuration details for the new AVD. </li>
-  <li>In the dialog that appears, assign a descriptive name to the AVD and then
-use the Target menu to choose the <strong>Google APIs</strong> as
-the system image to run on the new AVD. Set the other configuration details as
-needed and then click <strong>Create AVD</strong> to finish. The SDK tools
-create the new AVD configuration, which then appears in the list of available
-Android Virtual Devices.</li>
+  <li>When the download is complete, open the AVD Manager, available under the Android Studio
+Tools menu (<strong>Tools > Android > AVD Manager</strong>) or by executing
+{@code &lt;sdk>/tools/android avd}.</li>
+  <li>In the <em>Android Virtual Device Manager</em> window, select
+<strong>+ Create Virtual Device</strong> to set the configuration details for the new AVD. </li>
+  <li>In the <em>Virtual Device Configuration</em> window, select device hardware, then
+select <strong>Next</strong>.</li>
+<li>Select a <strong>Google API</strong> as the system image to run on the new AVD, then
+select <strong>Next</strong>.</li>
+<li>Assign a descriptive name to the AVD and then set the other configuration details as
+needed.</li>
+<li>Select <strong>Finish</strong> to create the new AVD configuration, which will appear in the
+list of available Android Virtual Devices.</li>
 </ol>
 
 <p>If you are not familiar with AVDs or how to use them, see <a
@@ -205,29 +208,13 @@
 above &mdash; either on an actual device or on an emulator &mdash; make sure to
 update your application project or build scripts as needed, so that your compiled
 <code>.apk</code> files that use licensing are deployed into that environment.
-In particular, if you are developing in Eclipse, make sure that you set up a
+In particular, if you are developing in Android Studio, make sure that you set up a
 Run/Debug Configuration that targets the appropriate device or AVD. </p>
 
 <p>You do not need to make any changes to your application's
 build configuration, provided that the project is already configured to compile
-against a standard Android 1.5 (API level 3) or higher library. For example:
-
-<ul>
-<li>If you have an existing application that is compiled against
-the Android 1.5 library, you do not need to make any changes to your
-build configuration to support licensing. The build target meets the minimum
-requirements for licensing, so you would continue building
-against the same version of the Android platform.</li>
-
-<li>Similarly, if you are building against Android 1.5 (API level 3) but
-are using an emulator running the Google APIs Add-On API 8 as the application's
-runtime environment, there is no need to change your application's build
-configuration. </li>
-</ul>
-
-<p>In general, adding licensing to an application should have no impact
-whatsoever on the application's build configuration.</p>
-
+against a standard Android 1.5 (API level 3) or higher library. Adding licensing to an application
+should have no impact whatsoever on the application's build configuration.</p>
 
 <h3 id="download-lvl">Downloading the LVL</h3>
 
@@ -323,28 +310,22 @@
 <p>The LVL is provided as a configured library project &mdash; once you have
 downloaded it, you can start using it right away. </p>
 
-<p>If you are working in Eclipse with ADT, you need to add the LVL to your
-workspace as a new development project, in the same way as you would a new
-application project. </p>
+<p>If you are working in Android Studio, you need to add the LVL to your
+project as a new module.</p>
 
 <ol>
-<li>Use the New Project Wizard to create a new
-project from existing sources. Select the LVL's <code>library</code> directory
-(the directory containing the library's AndroidManifest.xml file) as the project
-root.</li>
-<li>When you are creating the library project, you can select any application
-name, package, and set other fields as needed. </li>
-<li>For the library's build target, select Android 1.5 (API level 3) or higher.</li>
+<li>Use the New Module Wizard to import a library module by selecting
+<strong>File > New > Import Module</strong>.</li>
+<li>In the <em>New Module</em> window, in <em>Source directory</em>, enter the LVL's
+<code>library</code> directory (the directory containing the library's AndroidManifest.xml file)
+as the project root ({@code &lt;sdk>/extras/google/play_licensing/library/AndroidManifest.xml}),
+then select <strong>Next</strong>.</li>
+<li>Select <strong>Finish</strong> to import the library module.</li>
 </ol>
 
-<p> When created, the project is
-predefined as a library project in its <code>project.properties</code> file, so
-no further configuration is needed. </p>
-
-<p>For more information about how to create an application project or work with
-library projects in Eclipse, see <a
-href="{@docRoot}tools/projects/projects-eclipse.html">Managing Projects from
-Eclipse with ADT</a>.</p>
+<p>For more information about how to work with library modules in Android Studio, see
+<a href="{@docRoot}sdk/installing/create-project.html#SettingUpLibraryModule">Managing Projects from
+Android Studio</a>.</p>
 
 
 <h4>Copying the LVL sources to your application</h4>
@@ -369,24 +350,10 @@
 compile time. The process for adding a reference to a library project depends
 on your development environment, as described below.</p>
 
-<p> If you are developing in Eclipse with ADT, you should already have added the
-library project to your workspace, as described in the previous section. If you
+<p> If you are developing in Android Studio, you should already have added the
+library module to your project, as described in the previous section. If you
 haven't done that already, do it now before continuing. </p>
 
-<p>Next, open the application's project properties window, as shown below.
-Select the "Android" properties group and click <strong>Add</strong>, then
-choose the LVL library project (com_android_vending_licensing) and click
-<strong>OK</strong>. For more information, see
-<a href="{@docRoot}tools/projects/projects-eclipse.html#SettingUpLibraryProject">
-Managing Projects from Eclipse with ADT</a></p>.
-
-
-<img src="{@docRoot}images/licensing_add_library.png" alt=""/>
-<p class="img-caption"><strong>Figure 3.</strong> If you are
-working in Eclipse with ADT, you can add the LVL library project to your
-application from the application's project properties.</p>
-
-
 <p>If you are developing using the SDK command-line tools, navigate to the
 directory containing your application project and open the
 <code>project.properties</code> file. Add a line to the file that specifies the
diff --git a/docs/html/google/play/publishing/multiple-apks.jd b/docs/html/google/play/publishing/multiple-apks.jd
index 71a7ae5..fd4481d 100644
--- a/docs/html/google/play/publishing/multiple-apks.jd
+++ b/docs/html/google/play/publishing/multiple-apks.jd
@@ -67,7 +67,7 @@
 alternative resources for different configurations (for example, different layouts for different
 screen sizes) and the Android system selects the appropriate resources for the device at runtime. In
 a few cases, however, a single APK is unable to support all device configurations, because
-alternative resources make the APK file too big (greater than 50MB) or other technical challenges
+alternative resources make the APK file too big (greater than 100MB) or other technical challenges
 prevent a single APK from working on all devices.</p>
 
 <p>Although <strong>we encourage you to develop and publish a single APK</strong> that supports as
@@ -93,7 +93,7 @@
 
 <p class="note"><strong>Note:</strong> You should generally use multiple APKs to support
 different device configurations <strong>only when your APK is too large</strong> (greater than
-50MB) due to the alternative resources needed for different device configurations.
+100MB) due to the alternative resources needed for different device configurations.
 Using a single APK to support different configurations is always the best practice,
 because it makes the path for application updates simple and clear for users (and also makes
 your life simpler by avoiding development and publishing complexity). Read the section below about
@@ -626,7 +626,7 @@
 
 <h3 id="ScreenOptions">Supporting multiple screens</h3>
 
-<p>Unless your APK file exceeds the Google Play size limit of 50MB, supporting multiple screens
+<p>Unless your APK file exceeds the Google Play size limit of 100MB, supporting multiple screens
 should always be done with a single APK. Since Android 1.6, the Android system manages most of the
 work required for your application to run successfully on a variety of screen sizes and
 densities.</p>
diff --git a/docs/html/guide/_book.yaml b/docs/html/guide/_book.yaml
new file mode 100644
index 0000000..5017376
--- /dev/null
+++ b/docs/html/guide/_book.yaml
@@ -0,0 +1,409 @@
+toc:
+- title: Introduction
+  path: /guide/index.html
+  section:
+  - title: App Fundamentals
+    path: /guide/components/fundamentals.html
+  - title: Device Compatibility
+    path: /guide/practices/compatibility.html
+  - title: System Permissions
+    path: /guide/topics/security/permissions.html
+
+- title: App Components
+  path: /guide/components/index.html
+  section:
+  - title: Intents and Intent Filters
+    path: /guide/components/intents-filters.html
+    section:
+    - title: Common Intents
+      path: /guide/components/intents-common.html
+  - title: Activities
+    path: /guide/components/activities.html
+    section:
+    - title: Fragments
+      path: /guide/components/fragments.html
+    - title: Loaders
+      path: /guide/components/loaders.html
+    - title: Tasks and Back Stack
+      path: /guide/components/tasks-and-back-stack.html
+    - title: Overview Screen
+      path: /guide/components/recents.html
+  - title: Services
+    path: /guide/components/services.html
+    section:
+    - title: Bound Services
+      path: /guide/components/bound-services.html
+    - title: AIDL
+      path: /guide/components/aidl.html
+  - title: Content Providers
+    path: /guide/topics/providers/content-providers.html
+    section:
+    - title: Content Provider Basics
+      path: /guide/topics/providers/content-provider-basics.html
+    - title: Creating a Content Provider
+      path: /guide/topics/providers/content-provider-creating.html
+    - title: Calendar Provider
+      path: /guide/topics/providers/calendar-provider.html
+    - title: Contacts Provider
+      path: /guide/topics/providers/contacts-provider.html
+    - title: Storage Access Framework
+      path: /guide/topics/providers/document-provider.html
+  - title: App Widgets
+    path: /guide/topics/appwidgets/index.html
+    section:
+    - title: App Widget Host
+      path: /guide/topics/appwidgets/host.html
+  - title: Processes and Threads
+    path: /guide/components/processes-and-threads.html
+
+- title: App Resources
+  path: /guide/topics/resources/index.html
+  section:
+  - title: Overview
+    path: /guide/topics/resources/overview.html
+  - title: Providing Resources
+    path: /guide/topics/resources/providing-resources.html
+  - title: Accessing Resources
+    path: /guide/topics/resources/accessing-resources.html
+  - title: Handling Runtime Changes
+    path: /guide/topics/resources/runtime-changes.html
+  - title: Localization
+    path: /guide/topics/resources/localization.html
+  - title: Resource Types
+    path: /guide/topics/resources/available-resources.html
+    section:
+    - title: Animation
+      path: /guide/topics/resources/animation-resource.html
+    - title: Color State List
+      path: /guide/topics/resources/color-list-resource.html
+    - title: Drawable
+      path: /guide/topics/resources/drawable-resource.html
+    - title: Layout
+      path: /guide/topics/resources/layout-resource.html
+    - title: Menu
+      path: /guide/topics/resources/menu-resource.html
+    - title: String
+      path: /guide/topics/resources/string-resource.html
+    - title: Style
+      path: /guide/topics/resources/style-resource.html
+    - title: More Types
+      path: /guide/topics/resources/more-resources.html
+
+- title: App Manifest
+  path: /guide/topics/manifest/manifest-intro.html
+  section:
+  - title: <action>
+    path: /guide/topics/manifest/action-element.html
+  - title: <activity>
+    path: /guide/topics/manifest/activity-element.html
+  - title: <activity-alias>
+    path: /guide/topics/manifest/activity-alias-element.html
+  - title: <application>
+    path: /guide/topics/manifest/application-element.html
+  - title: <category>
+    path: /guide/topics/manifest/category-element.html
+  - title: <compatible-screens>
+    path: /guide/topics/manifest/compatible-screens-element.html
+  - title: <data>
+    path: /guide/topics/manifest/data-element.html
+  - title: <grant-uri-permission>
+    path: /guide/topics/manifest/grant-uri-permission-element.html
+  - title: <instrumentation>
+    path: /guide/topics/manifest/instrumentation-element.html
+  - title: <intent-filter>
+    path: /guide/topics/manifest/intent-filter-element.html
+  - title: <manifest>
+    path: /guide/topics/manifest/manifest-element.html
+  - title: <meta-data>
+    path: /guide/topics/manifest/meta-data-element.html
+  - title: <path-permission>
+    path: /guide/topics/manifest/path-permission-element.html
+  - title: <permission>
+    path: /guide/topics/manifest/permission-element.html
+  - title: <permission-group>
+    path: /guide/topics/manifest/permission-group-element.html
+  - title: <permission-tree>
+    path: /guide/topics/manifest/permission-tree-element.html
+  - title: <provider>
+    path: /guide/topics/manifest/provider-element.html
+  - title: <receiver>
+    path: /guide/topics/manifest/receiver-element.html
+  - title: <service>
+    path: /guide/topics/manifest/service-element.html
+  - title: <supports-gl-texture>
+    path: /guide/topics/manifest/supports-gl-texture-element.html
+  - title: <supports-screens>
+    path: /guide/topics/manifest/supports-screens-element.html
+  - title: <uses-configuration>
+    path: /guide/topics/manifest/uses-configuration-element.html
+  - title: <uses-feature>
+    path: /guide/topics/manifest/uses-feature-element.html
+  - title: <uses-library>
+    path: /guide/topics/manifest/uses-library-element.html
+  - title: <uses-permission>
+    path: /guide/topics/manifest/uses-permission-element.html
+  - title: <uses-permission-sdk-23>
+    path: /guide/topics/manifest/uses-permission-sdk-23-element.html
+  - title: <uses-sdk>
+    path: /guide/topics/manifest/uses-sdk-element.html
+
+- title: User Interface
+  path: /guide/topics/ui/index.html
+  section:
+  - title: Overview
+    path: /guide/topics/ui/overview.html
+  - title: Layouts
+    path: /guide/topics/ui/declaring-layout.html
+    section:
+    - title: Linear Layout
+      path: /guide/topics/ui/layout/linear.html
+    - title: Relative Layout
+      path: /guide/topics/ui/layout/relative.html
+    - title: List View
+      path: /guide/topics/ui/layout/listview.html
+    - title: Grid View
+      path: /guide/topics/ui/layout/gridview.html
+  - title: Input Controls
+    path: /guide/topics/ui/controls.html
+    section:
+    - title: Buttons
+      path: /guide/topics/ui/controls/button.html
+    - title: Text Fields
+      path: /guide/topics/ui/controls/text.html
+    - title: Checkboxes
+      path: /guide/topics/ui/controls/checkbox.html
+    - title: Radio Buttons
+      path: /guide/topics/ui/controls/radiobutton.html
+    - title: Toggle Buttons
+      path: /guide/topics/ui/controls/togglebutton.html
+    - title: Spinners
+      path: /guide/topics/ui/controls/spinner.html
+    - title: Pickers
+      path: /guide/topics/ui/controls/pickers.html
+  - title: Input Events
+    path: /guide/topics/ui/ui-events.html
+  - title: Menus
+    path: /guide/topics/ui/menus.html
+  - title: Settings
+    path: /guide/topics/ui/settings.html
+  - title: Dialogs
+    path: /guide/topics/ui/dialogs.html
+  - title: Notifications
+    path: /guide/topics/ui/notifiers/notifications.html
+  - title: Toasts
+    path: /guide/topics/ui/notifiers/toasts.html
+  - title: Search
+    path: /guide/topics/search/index.html
+    section:
+    - title: Creating a Search Interface
+      path: /guide/topics/search/search-dialog.html
+    - title: Adding Recent Query Suggestions
+      path: /guide/topics/search/adding-recent-query-suggestions.html
+    - title: Adding Custom Suggestions
+      path: /guide/topics/search/adding-custom-suggestions.html
+    - title: Searchable Configuration
+      path: /guide/topics/search/searchable-config.html
+  - title: Drag and Drop
+    path: /guide/topics/ui/drag-drop.html
+  - title: Accessibility
+    path: /guide/topics/ui/accessibility/index.html
+    section:
+    - title: Making Applications Accessible
+      path: /guide/topics/ui/accessibility/apps.html
+    - title: Accessibility Developer Checklist
+      path: /guide/topics/ui/accessibility/checklist.html
+    - title: Building Accessibility Services
+      path: /guide/topics/ui/accessibility/services.html
+  - title: Styles and Themes
+    path: /guide/topics/ui/themes.html
+  - title: Custom Components
+    path: /guide/topics/ui/custom-components.html
+
+- title: Animation and Graphics
+  path: /guide/topics/graphics/index.html
+  section:
+  - title: Overview
+    path: /guide/topics/graphics/overview.html
+  - title: Property Animation
+    path: /guide/topics/graphics/prop-animation.html
+  - title: View Animation
+    path: /guide/topics/graphics/view-animation.html
+  - title: Drawable Animation
+    path: /guide/topics/graphics/drawable-animation.html
+  - title: Canvas and Drawables
+    path: /guide/topics/graphics/2d-graphics.html
+  - title: OpenGL ES
+    path: /guide/topics/graphics/opengl.html
+  - title: Hardware Acceleration
+    path: /guide/topics/graphics/hardware-accel.html
+
+- title: Computation
+  path: /guide/topics/renderscript/index.html
+  section:
+  - title: RenderScript
+    path: /guide/topics/renderscript/compute.html
+  - title: Advanced RenderScript
+    path: /guide/topics/renderscript/advanced.html
+  - title: Runtime API Reference
+    path: /guide/topics/renderscript/reference/overview.html
+    section:
+    - title: Numerical Types
+      path: /guide/topics/renderscript/reference/rs_value_types.html
+    - title: Object Types
+      path: /guide/topics/renderscript/reference/rs_object_types.html
+    - title: Conversion Functions
+      path: /guide/topics/renderscript/reference/rs_convert.html
+    - title: Mathematical Constants and Functions
+      path: /guide/topics/renderscript/reference/rs_math.html
+    - title: Vector Math Functions
+      path: /guide/topics/renderscript/reference/rs_vector_math.html
+    - title: Matrix Functions
+      path: /guide/topics/renderscript/reference/rs_matrix.html
+    - title: Quaternion Functions
+      path: /guide/topics/renderscript/reference/rs_quaternion.html
+    - title: Atomic Update Functions
+      path: /guide/topics/renderscript/reference/rs_atomic.html
+    - title: Time Functions and Types
+      path: /guide/topics/renderscript/reference/rs_time.html
+    - title: Allocation Data Access Functions
+      path: /guide/topics/renderscript/reference/rs_allocation_data.html
+    - title: Object Characteristics Functions
+      path: /guide/topics/renderscript/reference/rs_object_info.html
+    - title: Kernel Invocation Functions and Types
+      path: /guide/topics/renderscript/reference/rs_for_each.html
+    - title: Input/Output Functions
+      path: /guide/topics/renderscript/reference/rs_io.html
+    - title: Debugging Functions
+      path: /guide/topics/renderscript/reference/rs_debug.html
+    - title: Graphics Functions and Types
+      path: /guide/topics/renderscript/reference/rs_graphics.html
+    - title: Index
+      path: /guide/topics/renderscript/reference/index.html
+
+- title: Media and Camera
+  path: /guide/topics/media/index.html
+  section:
+  - title: Media Playback
+    path: /guide/topics/media/mediaplayer.html
+  - title: Media Router
+    path: /guide/topics/media/mediarouter.html
+  - title: Media Route Provider
+    path: /guide/topics/media/mediarouteprovider.html
+  - title: ExoPlayer
+    path: /guide/topics/media/exoplayer.html
+  - title: Supported Media Formats
+    path: /guide/appendix/media-formats.html
+  - title: Audio Capture
+    path: /guide/topics/media/audio-capture.html
+  - title: JetPlayer
+    path: /guide/topics/media/jetplayer.html
+  - title: Camera
+    path: /guide/topics/media/camera.html
+
+- title: Location and Sensors
+  path: /guide/topics/sensors/index.html
+  section:
+  - title: Location and Maps
+    path: /guide/topics/location/index.html
+  - title: Location Strategies
+    path: /guide/topics/location/strategies.html
+  - title: Sensors Overview
+    path: /guide/topics/sensors/sensors_overview.html
+  - title: Motion Sensors
+    path: /guide/topics/sensors/sensors_motion.html
+  - title: Position Sensors
+    path: /guide/topics/sensors/sensors_position.html
+  - title: Environment Sensors
+    path: /guide/topics/sensors/sensors_environment.html
+
+- title: Connectivity
+  path: /guide/topics/connectivity/index.html
+  section:
+  - title: Bluetooth
+    path: /guide/topics/connectivity/bluetooth.html
+    section:
+    - title: Bluetooth Low Energy
+      path: /guide/topics/connectivity/bluetooth-le.html
+  - title: NFC
+    path: /guide/topics/connectivity/nfc/index.html
+    section:
+    - title: NFC Basics
+      path: /guide/topics/connectivity/nfc/nfc.html
+    - title: Advanced NFC
+      path: /guide/topics/connectivity/nfc/advanced-nfc.html
+    - title: Host-based Card Emulation
+      path: /guide/topics/connectivity/nfc/hce.html
+  - title: Wi-Fi P2P
+    path: /guide/topics/connectivity/wifip2p.html
+  - title: USB
+    path: /guide/topics/connectivity/usb/index.html
+    section:
+    - title: Accessory
+      path: /guide/topics/connectivity/usb/accessory.html
+    - title: Host
+      path: /guide/topics/connectivity/usb/host.html
+  - title: SIP
+    path: /guide/topics/connectivity/sip.html
+
+- title: Text and Input
+  path: /guide/topics/text/index.html
+  section:
+  - title: Copy and Paste
+    path: /guide/topics/text/copy-paste.html
+  - title: Creating an IME
+    path: /guide/topics/text/creating-input-method.html
+  - title: Spelling Checker
+    path: /guide/topics/text/spell-checker-framework.html
+
+- title: Data Storage
+  path: /guide/topics/data/index.html
+  section:
+  - title: Storage Options
+    path: /guide/topics/data/data-storage.html
+  - title: Data Backup
+    path: /guide/topics/data/backup.html
+  - title: App Install Location
+    path: /guide/topics/data/install-location.html
+
+- title: Administration
+  path: /guide/topics/admin/index.html
+  section:
+  - title: Device Policies
+    path: /guide/topics/admin/device-admin.html
+
+- title: Web Apps
+  path: /guide/webapps/index.html
+  section:
+  - title: Supporting Different Screens in Web Apps
+    path: /guide/webapps/targeting.html
+  - title: Building Web Apps in WebView
+    path: /guide/webapps/webview.html
+  - title: Migrating to WebView in Android 4.4
+    path: /guide/webapps/migrating.html
+  - title: Debugging Web Apps
+    path: /guide/webapps/debugging.html
+  - title: Best Practices for Web Apps
+    path: /guide/webapps/best-practices.html
+
+- title: Best Practices
+  path: /guide/practices/index.html
+  custom_link_attributes:
+  - de-lang="Bewährte Verfahren"
+  - es-lang="Prácticas recomendadas"
+  - fr-lang="Meilleures pratiques"
+  - it-lang="Best practice"
+  - ja-lang="ベスト プラクティス"
+  - zh-cn-lang="最佳实践"
+  - zh-tw-lang="最佳實務"
+  section:
+  - title: Supporting Multiple Screens
+    path: /guide/practices/screens_support.html
+    section:
+    - title: Distributing to Specific Screens
+      path: /guide/practices/screens-distribution.html
+    - title: Screen Compatibility Mode
+      path: /guide/practices/screen-compat-mode.html
+  - title: Supporting Tablets and Handsets
+    path: /guide/practices/tablets-and-handsets.html
+  - title: Verifying App Behavior on ART
+    path: /guide/practices/verifying-apps-art.html
diff --git a/docs/html/guide/appendix/glossary.jd b/docs/html/guide/appendix/glossary.jd
old mode 100644
new mode 100755
index db518f9..a200a6c
--- a/docs/html/guide/appendix/glossary.jd
+++ b/docs/html/guide/appendix/glossary.jd
@@ -41,8 +41,8 @@
     <dt id="adb">adb</dt>
     <dd>Android Debug Bridge, a command-line debugging application included with the
         SDK. It provides tools to browse the device, copy tools on the device, and
-        forward ports for debugging. If you are developing in Eclipse using the
-		ADT Plugin, adb is integrated into your development environment. See 
+        forward ports for debugging. If you are developing in Android Studio, 
+        adb is integrated into your development environment. See 
 		<a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a>
 		for more information. </dd>
 
@@ -90,8 +90,8 @@
     <dt id="ddms">DDMS</dt>
     <dd>Dalvik Debug Monitor Service, a GUI debugging application included
     with the SDK. It provides screen capture, log dump, and process
-    examination capabilities. If you are developing in Eclipse using the ADT
-    Plugin, DDMS is integrated into your development environment. See <a
+    examination capabilities. If you are developing in Android Studio, 
+    DDMS is integrated into your development environment. See <a
     href="{@docRoot}tools/debugging/ddms.html">Using DDMS</a> to learn more about the program.</dd>
 
     <dt id="dialog">Dialog</dt> <dd> A floating window that acts as a lightweight
@@ -290,4 +290,4 @@
     in your application. </dd>
 
 
-</dl>
\ No newline at end of file
+</dl>
diff --git a/docs/html/guide/components/activities.jd b/docs/html/guide/components/activities.jd
index 7eeaeeb..070154d 100644
--- a/docs/html/guide/components/activities.jd
+++ b/docs/html/guide/components/activities.jd
@@ -115,7 +115,7 @@
 button that initiates an action when the user touches it.</p>
 
 <p>Android provides a number of ready-made views that you can use to design and organize your
-layout. "Widgets" are views that provide a visual (and interactive) elements for the screen, such
+layout. "Widgets" are views that provide visual (and interactive) elements for the screen, such
 as a button, text field, checkbox, or just an image. "Layouts" are views derived from {@link
 android.view.ViewGroup} that provide a unique layout model for its child views, such as a linear
 layout, a grid layout, or relative layout. You can also subclass the {@link android.view.View} and
@@ -661,7 +661,7 @@
 appropriate, such that any visible changes to the UI are automatically saved and restored when your
 activity is recreated. For example, the {@link android.widget.EditText} widget saves any text
 entered by the user and the {@link android.widget.CheckBox} widget saves whether it's checked or
-not. The only work required by you is to provide a unique ID (with the <a
+not. The only work required of you is to provide a unique ID (with the <a
 href="{@docRoot}guide/topics/resources/layout-resource.html#idvalue">{@code android:id}</a>
 attribute) for each widget you want to save its state. If a widget does not have an ID, then the
 system cannot save its state.</p>
diff --git a/docs/html/guide/components/aidl.jd b/docs/html/guide/components/aidl.jd
old mode 100644
new mode 100755
index e15e53f1..4031800
--- a/docs/html/guide/components/aidl.jd
+++ b/docs/html/guide/components/aidl.jd
@@ -190,11 +190,11 @@
 with a {@code .java} extension (for example, {@code IRemoteService.aidl} results in {@code
 IRemoteService.java}).</p>
 
-<p>If you use Eclipse, the incremental build generates the binder class almost immediately. If you
-do not use Eclipse, then the Ant tool generates the binder class next time you build your
-application&mdash;you should build your project with <code>ant debug</code> (or <code>ant
-release</code>) as soon as you're finished writing the {@code .aidl} file, so that your code can
-link against the generated class.</p>
+<p>If you use Android Studio, the incremental build generates the binder class almost immediately.
+If you do not use Android Studio, then the Gradle tool generates the binder class next time you
+build your application&mdash;you should build your project with <code>gradle assembleDebug</code>
+(or <code>gradle assembleRelease</code>) as soon as you're finished writing the {@code .aidl} file,
+so that your code can link against the generated class.</p>
 
 
 <h3 id="Implement">2. Implement the interface</h3>
@@ -217,7 +217,7 @@
 
 <p>Here is an example implementation of an interface called {@code IRemoteService} (defined by the
 {@code IRemoteService.aidl} example, above) using an anonymous instance:</p>
-  
+
 <pre>
 private final IRemoteService.Stub mBinder = new IRemoteService.Stub() {
     public int getPid(){
@@ -324,7 +324,7 @@
 
 
 
-  
+
 
 <h2 id="PassingObjects">Passing Objects over IPC</h2>
 
diff --git a/docs/html/guide/components/bound-services.jd b/docs/html/guide/components/bound-services.jd
index c2ac607..f71ba87 100644
--- a/docs/html/guide/components/bound-services.jd
+++ b/docs/html/guide/components/bound-services.jd
@@ -15,7 +15,11 @@
       <li><a href="#Messenger">Using a Messenger</a></li>
     </ol>
   </li>
-  <li><a href="#Binding">Binding to a Service</a></li>
+  <li><a href="#Binding">Binding to a Service</a>
+    <ol>
+      <li><a href="#Additional_Notes">Additional notes</a></li>
+    </ol>
+  </li>
   <li><a href="#Lifecycle">Managing the Lifecycle of a Bound Service</a></li>
 </ol>
 
@@ -309,8 +313,11 @@
 android.content.ServiceConnection#onServiceConnected onServiceConnected()} callback. The next
 section provides more information about this process of binding to the service.</p>
 
-<p class="note"><strong>Note:</strong> The example above doesn't explicitly unbind from the service,
-but all clients should unbind at an appropriate time (such as when the activity pauses).</p>
+<p class="note"><strong>Note:</strong> In the example above, the
+{@link android.app.Activity#onStop onStop()} method unbinds the client from the service. Clients
+should unbind from services at appropriate times, as discussed in
+<a href="#Additional_Notes">Additional Notes</a>.
+</p>
 
 <p>For more sample code, see the <a
 href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
@@ -538,10 +545,11 @@
 the methods defined by the interface.</li>
   <li>To disconnect from the service, call {@link
 android.content.Context#unbindService unbindService()}.
-    <p>When your client is destroyed, it will unbind from the service, but you should always unbind
-when you're done interacting with the service or when your activity pauses so that the service can
-shutdown while its not being used. (Appropriate times to bind and unbind is discussed
-more below.)</p>
+  <p>If your client is still bound to a service when your app destroys the client, destruction
+causes the client to unbind. It is better practice to unbind the client as soon as it is done
+interacting with the service. Doing so allows the idle service to shut down. For more information
+about appropriate times to bind and unbind, see <a href="#Additional_Notes">Additional Notes</a>.
+</p>
   </li>
 </ol>
 
@@ -591,7 +599,7 @@
 </ul>
 
 
-<h3>Additional notes</h3>
+<h3 id="Additional_Notes">Additional notes</h3>
 
 <p>Here are some important notes about binding to a service:</p>
 <ul>
diff --git a/docs/html/guide/components/fragments.jd b/docs/html/guide/components/fragments.jd
index 3b7da87..f9c2a26 100644
--- a/docs/html/guide/components/fragments.jd
+++ b/docs/html/guide/components/fragments.jd
@@ -19,7 +19,7 @@
     <li><a href="#CommunicatingWithActivity">Communicating with the Activity</a>
       <ol>
         <li><a href="#EventCallbacks">Creating event callbacks to the activity</a></li>
-        <li><a href="#ActionBar">Adding items to the Action Bar</a></li>
+        <li><a href="#ActionBar">Adding items to the App Bar</a></li>
       </ol>
     </li>
     <li><a href="#Lifecycle">Handling the Fragment Lifecycle</a>
@@ -321,7 +321,7 @@
 of {@link android.app.FragmentTransaction} from your {@link android.app.Activity} like this:</p>
 
 <pre>
-FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()}
+FragmentManager fragmentManager = {@link android.app.Activity#getFragmentManager()};
 FragmentTransaction fragmentTransaction = fragmentManager.{@link android.app.FragmentManager#beginTransaction()};
 </pre>
 
@@ -603,11 +603,11 @@
 
 
 
-<h3 id="ActionBar">Adding items to the Action Bar</h3>
+<h3 id="ActionBar">Adding items to the App Bar</h3>
 
 <p>Your fragments can contribute menu items to the activity's <a
 href="{@docRoot}guide/topics/ui/menus.html#options-menu">Options Menu</a> (and, consequently, the <a
-href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a>) by implementing
+href="{@docRoot}training/appbar/index.html">app bar</a>) by implementing
 {@link android.app.Fragment#onCreateOptionsMenu(Menu,MenuInflater) onCreateOptionsMenu()}. In order
 for this method to receive calls, however, you must call {@link
 android.app.Fragment#setHasOptionsMenu(boolean) setHasOptionsMenu()} during {@link
@@ -634,8 +634,8 @@
 the Options Menu and context menus.</p>
 
 <p>For more information about menus, see the <a
-href="{@docRoot}guide/topics/ui/menus.html">Menus</a> and <a
-href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> developer guides.</p>
+href="{@docRoot}guide/topics/ui/menus.html">Menus</a> developer guide and the <a
+href="{@docRoot}training/appbar/index.html">App Bar</a> training class.</p>
 
 
 
diff --git a/docs/html/guide/components/fundamentals.jd b/docs/html/guide/components/fundamentals.jd
index 1d45106..ed3ba7d 100644
--- a/docs/html/guide/components/fundamentals.jd
+++ b/docs/html/guide/components/fundamentals.jd
@@ -59,8 +59,9 @@
 same user ID can also arrange to run in the same Linux process and share the same VM (the
 apps must also be signed with the same certificate).</li>
   <li>An app can request permission to access device data such as the user's
-contacts, SMS messages, the mountable storage (SD card), camera, Bluetooth, and more. All
-app permissions must be granted by the user at install time.</li>
+contacts, SMS messages, the mountable storage (SD card), camera, Bluetooth, and more. The user has
+to explicitly grant these permissions. For more information, see
+<a href="{@docRoot}training/permissions/index.html">Working with System Permissions</a>.</li>
 </ul>
 
 <p>That covers the basics regarding how an Android app exists within the system. The rest of
@@ -297,7 +298,7 @@
 <p>In the <code><a
 href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> element,
 the {@code android:name} attribute specifies the fully qualified class name of the {@link
-android.app.Activity} subclass and the {@code android:label} attributes specifies a string
+android.app.Activity} subclass and the {@code android:label} attribute specifies a string
 to use as the user-visible label for the activity.</p>
 
 <p>You must declare all app components this way:</p>
@@ -368,7 +369,7 @@
 </pre>
 
 <p>Then, if another app creates an intent with the {@link
-android.content.Intent#ACTION_SEND} action and pass it to {@link android.app.Activity#startActivity
+android.content.Intent#ACTION_SEND} action and passes it to {@link android.app.Activity#startActivity
 startActivity()}, the system may start your activity so the user can draft and send an
 email.</p>
 
@@ -390,7 +391,7 @@
 
 <p>For example, if your app requires a camera and uses APIs introduced in Android 2.1 (<a
 href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Level</a> 7),
-you should declare these as requirements in your manifest file like this:</p> 
+you should declare these as requirements in your manifest file like this:</p>
 
 <pre>
 &lt;manifest ... >
diff --git a/docs/html/guide/components/intents-common.jd b/docs/html/guide/components/intents-common.jd
index 078ff53..9488f6e 100644
--- a/docs/html/guide/components/intents-common.jd
+++ b/docs/html/guide/components/intents-common.jd
@@ -66,6 +66,11 @@
       <li><a href="#PlaySearch">Play music based on a search query</a></li>
     </ol>
   </li>
+  <li><a href="#NewNote">New Note</a>
+    <ol>
+      <li><a href="#CreateNote">Create a note</a></li>
+    </ol>
+  </li>
   <li><a href="#Phone">Phone</a>
     <ol>
       <li><a href="#DialPhone">Initiate a phone call</a></li>
@@ -558,7 +563,7 @@
 public void capturePhoto(String targetFilename) {
     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
     intent.putExtra(MediaStore.EXTRA_OUTPUT,
-            Uri.withAppendedPath(mLocationForPhotos, targetFilename);
+            Uri.withAppendedPath(mLocationForPhotos, targetFilename));
     if (intent.resolveActivity(getPackageManager()) != null) {
         startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
     }
@@ -1780,6 +1785,72 @@
 
 
 
+<h2 id="NewNote">New Note</h2>
+
+<h3 id="CreateNote">Create a note</h3>
+
+<p>To create a new note, use the
+<a href="https://developers.google.com/android/reference/com/google/android/gms/actions/NoteIntents#ACTION_CREATE_NOTE">
+{@code ACTION_CREATE_NOTE}</a> action and specify note details such as the subject and text using extras defined below.</p>
+
+<p class="note"><strong>Note:</strong> Apps must ask for confirmation from the user
+before completing the action.</p>
+
+<dl>
+  <dt><b>Action</b></dt>
+  <dd><a href="https://developers.google.com/android/reference/com/google/android/gms/actions/NoteIntents#ACTION_CREATE_NOTE">
+  {@code ACTION_CREATE_NOTE}</a>
+</dd>
+
+  <dt><b>Data URI Scheme</b></dt>
+  <dd>None</dd>
+
+  <dt><b>MIME Type</b></dt>
+  <dd><a href="https://developer.android.com/reference/org/apache/http/protocol/HTTP.html#PLAIN_TEXT_TYPE">
+{@code PLAIN_TEXT_TYPE}</a></dd>
+  <dd>"*/*"</dd>
+
+
+<dt><b>Extras</b></dt>
+<dd>
+  <dl>
+    <dt><a href="https://developers.google.com/android/reference/com/google/android/gms/actions/NoteIntents#EXTRA_NAME">
+        {@code EXTRA_NAME}</a>
+      <dd>A string indicating the title or subject of the note.</dd>
+    <dt><a href="https://developers.google.com/android/reference/com/google/android/gms/actions/NoteIntents#EXTRA_TEXT">
+       {@code EXTRA_TEXT}</a>
+      <dd>A string indicating the text of the note.</dd>
+  </dl>
+</dd>
+
+
+<p><b>Example intent:</b></p>
+<pre>
+public void createNote(String subject, String text) {
+    Intent intent = new Intent(NoteIntents.ACTION_CREATE_NOTE)
+            .putExtra(NoteIntents.EXTRA_NAME, subject)
+            .putExtra(NoteIntents.EXTRA_TEXT, text);
+    if (intent.resolveActivity(getPackageManager()) != null) {
+        startActivity(intent);
+    }
+}</pre>
+
+
+<p><b>Example intent filter:</b></p>
+<pre>
+&lt;activity ...&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="com.google.android.gms.actions.CREATE_NOTE" /&gt;
+        &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+        &lt;data android:mimeType=”*/*”&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+
+
+
+
 <h2 id="Phone">Phone</h2>
 
 
diff --git a/docs/html/guide/components/intents-filters.jd b/docs/html/guide/components/intents-filters.jd
index abc67f2..d1d8c78 100644
--- a/docs/html/guide/components/intents-filters.jd
+++ b/docs/html/guide/components/intents-filters.jd
@@ -707,7 +707,7 @@
   <li>The intent category
 </ul>
 
-<p>The following sections describe how an intents are matched to the appropriate component(s)
+<p>The following sections describe how intents are matched to the appropriate component(s)
 in terms of how the intent filter is declared in an app's manifest file.</p>
 
 
diff --git a/docs/html/guide/components/services.jd b/docs/html/guide/components/services.jd
index 4053769..e646a17 100644
--- a/docs/html/guide/components/services.jd
+++ b/docs/html/guide/components/services.jd
@@ -261,7 +261,7 @@
 database transaction. When the transaction is done, the service stops itself and it is
 destroyed.</p>
 
-<p class="caution"><strong>Caution:</strong> A services runs in the same process as the application
+<p class="caution"><strong>Caution:</strong> A service runs in the same process as the application
 in which it is declared and in the main thread of that application, by default. So, if your service
 performs intensive or blocking operations while the user interacts with an activity from the same
 application, the service will slow down activity performance. To avoid impacting application
diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs
index e99c15a..549a1b6 100644
--- a/docs/html/guide/guide_toc.cs
+++ b/docs/html/guide/guide_toc.cs
@@ -183,6 +183,7 @@
       <li><a href="<?cs var:toroot ?>guide/topics/manifest/uses-feature-element.html">&lt;uses-feature&gt;</a></li> <!-- ##api level 4## -->
       <li><a href="<?cs var:toroot ?>guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></li>
       <li><a href="<?cs var:toroot ?>guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></li>
+      <li><a href="<?cs var:toroot ?>guide/topics/manifest/uses-permission-sdk-23-element.html">&lt;uses-permission-sdk-23&gt;</a></li>
       <li><a href="<?cs var:toroot ?>guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</a></li>
     </ul>
   </li><!-- end of the manifest file -->
@@ -261,9 +262,6 @@
       <li><a href="<?cs var:toroot ?>guide/topics/ui/menus.html">
           <span class="en">Menus</span></span>
           </a></li>
-      <li><a href="<?cs var:toroot ?>guide/topics/ui/actionbar.html">
-           <span class="en">Action Bar</span>
-          </a></li>
       <li><a href="<?cs var:toroot ?>guide/topics/ui/settings.html">
             <span class="en">Settings</span>
           </a></li>
diff --git a/docs/html/guide/practices/app-design/seamlessness.jd b/docs/html/guide/practices/app-design/seamlessness.jd
old mode 100644
new mode 100755
index ec6b7fd..1687962
--- a/docs/html/guide/practices/app-design/seamlessness.jd
+++ b/docs/html/guide/practices/app-design/seamlessness.jd
@@ -41,10 +41,10 @@
 phone call, for example). That behavior would not work for your application or
 for the user. </p>
 
-<p>To avoid these problems, your application should use the proper system 
-facility for notifying the user &mdash; the 
+<p>To avoid these problems, your application should use the proper system
+facility for notifying the user &mdash; the
 {@link android.app.Notification Notification} classes. Using
-notifications, your application can signal the user that an event has 
+notifications, your application can signal the user that an event has
 taken place, by displaying an icon in the status bar rather than taking
 focus and interrupting the user.</p>
 
@@ -140,7 +140,7 @@
 on the event handler thread, effectively blocking the event handler. This will
 delay input processing, and result in the ANR dialogs. To avoid this, move
 your computations to a thread. This <a
-href="responsiveness.html">Design for Responsiveness</a> document 
+href="responsiveness.html">Design for Responsiveness</a> document
 discusses how to do that..</p>
 
 <h2 id="multiple-activities">Don't Overload a Single Activity Screen</h2>
@@ -175,16 +175,16 @@
 
 <h2 id="flexui">Design Your UI to Work with Multiple Screen Resolutions</h2>
 
-<p>Different Android-powered devices will support different screen resolutions. 
-Some will even be able to change resolutions on the fly, such as by switching 
-to landscape mode. It's important to make sure your layouts and drawables 
+<p>Different Android-powered devices will support different screen resolutions.
+Some will even be able to change resolutions on the fly, such as by switching
+to landscape mode. It's important to make sure your layouts and drawables
 are flexible enough to display properly on a variety of device screens.</p>
 
-<p>Fortunately, this is very easy to do. In brief, what you must do is 
-provide different versions of your artwork (if you use any) for the key 
-resolutions, and then design your layout to accommodate various dimensions. 
-(For example, avoid using hard-coded positions and instead use relative 
-layouts.) If you do that much, the system handles the rest, and your 
+<p>Fortunately, this is very easy to do. In brief, what you must do is
+provide different versions of your artwork (if you use any) for the key
+resolutions, and then design your layout to accommodate various dimensions.
+(For example, avoid using hard-coded positions and instead use relative
+layouts.) If you do that much, the system handles the rest, and your
 application looks great on any device.</p>
 
 <h2 id="network">Assume the Network is Slow</h2>
@@ -208,9 +208,9 @@
 you're using the emulator, since the emulator uses your desktop computer's
 network connection. That's almost guaranteed to be much faster than a cell
 network, so you'll want to change the settings on the emulator that simulate
-slower network speeds. You can do this in Eclipse, in the "Emulator Settings"
-tab of your launch configuration or via a <a
-href="{@docRoot}tools/help/emulator.html#netspeed">command-line 
+slower network speeds. You can do this in Android Studio via the AVD Manager or
+via a <a
+href="{@docRoot}tools/help/emulator.html#netspeed">command-line
 option</a> when starting the emulator.</p>
 
 <h2 id="keyboard">Don't Assume Touchscreen or Keyboard</h2>
diff --git a/docs/html/guide/practices/compatibility.jd b/docs/html/guide/practices/compatibility.jd
index 1bfc99d3..83e841c 100644
--- a/docs/html/guide/practices/compatibility.jd
+++ b/docs/html/guide/practices/compatibility.jd
@@ -74,15 +74,12 @@
 
 
 <p>However, you do need to consider whether your <b>app is compatible</b> with each potential
-device configuration. Because Android runs on a wide range of device configurations, some features are not
-available on all devices. For example, some devices may not include a
+device configuration. Because Android runs on a wide range of device configurations, some features
+are not available on all devices. For example, some devices may not include a
 compass sensor. If your app's core functionality requires the use
 of a compass sensor, then your app is compatible only with devices that
 include a compass sensor.</p>
 
-
-
-
 <h2 id="how">Controlling Your App's Availability to Devices</h2>
 
 <p>Android supports a variety of features your app can leverage through platform APIs. Some
@@ -91,7 +88,6 @@
 so you may need to control your app's availability to devices based on your app's required
 features.</p>
 
-
 <p>To achieve the largest user-base possible for your app, you should strive to support as many
 device configurations as possible using a single APK. In most situations, you can do so by
 disabling optional features at runtime and <a
@@ -107,7 +103,6 @@
   <li><a href="#Screens">Screen configuration</a>
 </ul>
 
-
 <h3 id="Features">Device features</h3>
 
 <p>In order for you to manage your app’s availability based on device features,
@@ -119,7 +114,7 @@
 
 <p>If necessary, you can prevent users from installing your app when their devices don't provide a
 given feature by declaring it with a <a href=
-"{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code <uses-feature>}</a>
+"{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code &lt;uses-feature&gt;}</a>
 element in your app's <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">manifest
 file</a>.</p>
 
@@ -127,11 +122,11 @@
 you can declare the compass sensor as required with the following manifest tag:</p>
 
 <pre>
-&lt;manifest ... >
+&lt;manifest ... &gt;
     &lt;uses-feature android:name="android.hardware.sensor.compass"
-                  android:required="true" />
+                  android:required="true" /&gt;
     ...
-&lt;/manifest>
+&lt;/manifest&gt;
 </pre>
 
 <p>Google Play Store compares the features your app requires to the features available on
@@ -157,7 +152,7 @@
 </pre>
 
 <p>For information about all the filters you can
-use to control the availability of your app to users through Google Play Store, see the 
+use to control the availability of your app to users through Google Play Store, see the
 <a href="{@docRoot}google/play/filters.html">Filters on Google Play</a>
 document.</p>
 
@@ -169,17 +164,11 @@
 on this feature and make your app available to devices without Bluetooth by setting the <a href=
 "{@docRoot}guide/topics/manifest/uses-feature-element.html#required">{@code required}</a> attribute
 to {@code "false"} in the <a href=
-"{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code <uses-feature>}</a> tag.
+"{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code &lt;uses-feature&gt;}</a> tag.
 For more information about implicitly required device features, read <a href=
 "{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions">Permissions that Imply
 Feature Requirements</a>.</p>
 
-
-
-
-
-
-
 <h3 id="Versions">Platform version</h3>
 
 <p>Different devices may run different versions of the Android platform,
@@ -191,7 +180,9 @@
 
 <p>The API level allows you to declare the minimum version with which your app is
 compatible, using the <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">{@code
-<uses-sdk>}</a> manifest tag and its <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a> attribute.</p>
+&lt;uses-sdk>}</a> manifest tag and its
+<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a>
+attribute.</p>
 
 <p>For example, the <a href="{@docRoot}guide/topics/providers/calendar-provider.html">Calendar
 Provider</a> APIs were added in Android 4.0 (API level 14). If your app cannot function without
@@ -199,10 +190,10 @@
 version like this:</p>
 
 <pre>
-&lt;manifest ... >
-    &lt;uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />
+&lt;manifest ... &gt;
+    &lt;uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" /&gt;
     ...
-&lt;/manifest>
+&lt;/manifest&gt;
 </pre>
 
 <p>The <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code
@@ -212,7 +203,7 @@
 your app.</p>
 
 <p>Each successive version of Android provides compatibility for apps that were built using
-the APIs from previous platform versions, so your app should always be compitible with future
+the APIs from previous platform versions, so your app should always be compatible with future
 versions of Android while using the documented Android APIs.</p>
 
 <p class="note"><strong>Note:</strong>
@@ -241,18 +232,13 @@
 API level you want to check. For example:</p>
 
 <pre>
-if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
+if (Build.VERSION.SDK_INT &lt; Build.VERSION_CODES.HONEYCOMB) {
     // Running on something older than API level 11, so disable
     // the drag/drop features that use {@link android.content.ClipboardManager} APIs
     disableDragAndDrop();
 }
 </pre>
 
-
-
-
-
-
 <h3 id="Screens">Screen configuration</h3>
 
 <p>Android runs on devices of various sizes, from phones to tablets and TVs.
@@ -279,13 +265,6 @@
 href="{@docRoot}training/basics/supporting-devices/screens.html">Supporting Different Screens</a>.
 </p>
 
-
-
-
-
-
-
-
 <h2 id="filtering">Controlling Your App's Availability for Business Reasons</h2>
 
 <p>In addition to restricting your app's availability based on device characteristics,
@@ -301,11 +280,6 @@
 filtering for non-technical reasons (such as geographic locale) is always
 handled in the Google Play developer console.</p>
 
-
-
-
-
-
 <div class="next-docs">
 <div class="col-6">
   <h2 class="norule">Continue reading about:</h2>
diff --git a/docs/html/guide/practices/seamlessness.jd b/docs/html/guide/practices/seamlessness.jd
old mode 100644
new mode 100755
index 9679e2a..db12ad2
--- a/docs/html/guide/practices/seamlessness.jd
+++ b/docs/html/guide/practices/seamlessness.jd
@@ -42,10 +42,10 @@
 phone call, for example). That behavior would not work for your application or
 for the user. </p>
 
-<p>To avoid these problems, your application should use the proper system 
-facility for notifying the user &mdash; the 
+<p>To avoid these problems, your application should use the proper system
+facility for notifying the user &mdash; the
 {@link android.app.Notification Notification} classes. Using
-notifications, your application can signal the user that an event has 
+notifications, your application can signal the user that an event has
 taken place, by displaying an icon in the status bar rather than taking
 focus and interrupting the user.</p>
 
@@ -141,7 +141,7 @@
 on the event handler thread, effectively blocking the event handler. This will
 delay input processing, and result in the ANR dialogs. To avoid this, move
 your computations to a thread. This <a
-href="responsiveness.html">Design for Responsiveness</a> document 
+href="responsiveness.html">Design for Responsiveness</a> document
 discusses how to do that..</p>
 
 <h2 id="multiple-activities">Don't Overload a Single Activity Screen</h2>
@@ -176,16 +176,16 @@
 
 <h2 id="flexui">Design Your UI to Work with Multiple Screen Resolutions</h2>
 
-<p>Different Android-powered devices will support different screen resolutions. 
-Some will even be able to change resolutions on the fly, such as by switching 
-to landscape mode. It's important to make sure your layouts and drawables 
+<p>Different Android-powered devices will support different screen resolutions.
+Some will even be able to change resolutions on the fly, such as by switching
+to landscape mode. It's important to make sure your layouts and drawables
 are flexible enough to display properly on a variety of device screens.</p>
 
-<p>Fortunately, this is very easy to do. In brief, what you must do is 
-provide different versions of your artwork (if you use any) for the key 
-resolutions, and then design your layout to accommodate various dimensions. 
-(For example, avoid using hard-coded positions and instead use relative 
-layouts.) If you do that much, the system handles the rest, and your 
+<p>Fortunately, this is very easy to do. In brief, what you must do is
+provide different versions of your artwork (if you use any) for the key
+resolutions, and then design your layout to accommodate various dimensions.
+(For example, avoid using hard-coded positions and instead use relative
+layouts.) If you do that much, the system handles the rest, and your
 application looks great on any device.</p>
 
 <h2 id="network">Assume the Network is Slow</h2>
@@ -209,9 +209,9 @@
 you're using the emulator, since the emulator uses your desktop computer's
 network connection. That's almost guaranteed to be much faster than a cell
 network, so you'll want to change the settings on the emulator that simulate
-slower network speeds. You can do this in Eclipse, in the "Emulator Settings"
-tab of your launch configuration or via a <a
-href="{@docRoot}tools/help/emulator.html#netspeed">command-line 
+slower network speeds. You can do this in Android Studio via the AVD Manager,
+or via a <a
+href="{@docRoot}tools/help/emulator.html#netspeed">command-line
 option</a> when starting the emulator.</p>
 
 <h2 id="keyboard">Don't Assume Touchscreen or Keyboard</h2>
diff --git a/docs/html/guide/topics/connectivity/index.jd b/docs/html/guide/topics/connectivity/index.jd
index 385cf08..0795f79 100644
--- a/docs/html/guide/topics/connectivity/index.jd
+++ b/docs/html/guide/topics/connectivity/index.jd
@@ -7,21 +7,9 @@
 
 <div class="landing-docs">
 
-  <div class="col-6">
-    <h3>Blog Articles</h3>
-    
-    <a href="http://android-developers.blogspot.com/2011/09/androids-http-clients.html">
-      <h4>Android’s HTTP Clients</h4>
-      <p>Most network-connected Android apps will use HTTP to send and receive data. Android
-includes two HTTP clients: HttpURLConnection and Apache HTTP Client. Both support HTTPS, streaming
-uploads and downloads, configurable timeouts, IPv6 and connection pooling.</p>
-    </a>
-    
-  </div>
-
-  <div class="col-6">
+  <div>
     <h3>Training</h3>
-    
+
     <a href="http://developer.android.com/training/efficient-downloads/index.html">
       <h4>Transferring Data Without Draining the Battery</h4>
       <p>This class demonstrates the best practices for scheduling and executing downloads using
@@ -29,14 +17,16 @@
 the wireless radio can affect your choices on when, what, and how to transfer data in order to
 minimize impact on battery life.</p>
     </a>
-    
-    <a href="http://developer.android.com/training/cloudsync/index.html">
-      <h4>Syncing to the Cloud</h4>
-      <p>This class covers different strategies for cloud enabled applications. It covers syncing
-data with the cloud using your own back-end web application, and backing up data using the cloud so
-that users can restore their data when installing your application on a new device.</p>
+
+    <a href="http://developer.android.com/training/backup/index.html">
+      <h4>Backing up App Data to the Cloud</h4>
+      <p>
+      This class covers techniques for backing up data to the cloud so that users can restore
+      their data when recovering from a data loss (such as a factory reset) or installing your
+      application on a new device.
+      </p>
     </a>
-    
+
   </div>
 
-</div>
\ No newline at end of file
+</div>
diff --git a/docs/html/guide/topics/connectivity/sip.jd b/docs/html/guide/topics/connectivity/sip.jd
old mode 100644
new mode 100755
index 5154767..d754894
--- a/docs/html/guide/topics/connectivity/sip.jd
+++ b/docs/html/guide/topics/connectivity/sip.jd
@@ -478,14 +478,19 @@
 <ol>
 
 <li>On your device, connect to wireless (<strong>Settings > Wireless & networks
-> Wi-Fi > Wi-Fi settings</strong>)</li>
+> Wi-Fi > Wi-Fi settings</strong>).</li>
 <li>Set up your mobile device for testing, as described in <a
 href="{@docRoot}tools/device.html">Developing on a Device</a>.</li>
 <li>Run your application on your mobile device, as described in <a
 href="{@docRoot}tools/device.html">Developing on a Device</a>.</li>
 
-<li>If you are using Eclipse, you can view the application log output in Eclipse
-using LogCat (<strong>Window > Show View > Other > Android >
-LogCat</strong>).</li>
+<li>If you are using Android Studio, you can view the application log output by
+opening the Event Log console (<strong>View > Tool Windows > Event Log</strong>). 
+<li>Ensure your application is configured to launch Logcat automatically when it runs: 
+<ol TYPE=a>
+<li>Select <strong>Run > Edit Configurations</strong>.
+<li>Select the <strong>Miscellaneous</strong> tab in the <strong>Run/Debug Configurations</strong> window.
+<li>Under <strong>Logcat</strong>, select <strong>Show logcat automatically</strong> then
+select <strong>OK</strong>.</li></ol>
 </ol>
 
diff --git a/docs/html/guide/topics/connectivity/usb/host.jd b/docs/html/guide/topics/connectivity/usb/host.jd
index f957b60..d2194e6 100644
--- a/docs/html/guide/topics/connectivity/usb/host.jd
+++ b/docs/html/guide/topics/connectivity/usb/host.jd
@@ -276,7 +276,7 @@
 HashMap&lt;String, UsbDevice&gt; deviceList = manager.getDeviceList();
 Iterator&lt;UsbDevice&gt; deviceIterator = deviceList.values().iterator();
 while(deviceIterator.hasNext()){
-    UsbDevice device = deviceIterator.next()
+    UsbDevice device = deviceIterator.next();
     //your code
 }
 </pre>
diff --git a/docs/html/guide/topics/data/backup.jd b/docs/html/guide/topics/data/backup.jd
index 9554835..619c790 100644
--- a/docs/html/guide/topics/data/backup.jd
+++ b/docs/html/guide/topics/data/backup.jd
@@ -198,7 +198,7 @@
 href="http://code.google.com/android/backup/index.html">Android Backup Service</a> for most
 Android-powered devices running Android 2.2 or greater.</p>
 
-<p>In order for you application to perform backup using Android Backup Service, you must
+<p>In order for your application to perform backup using Android Backup Service, you must
 register your application with the service to receive a Backup Service Key, then
 declare the Backup Service Key in your Android manifest.</p>
 
diff --git a/docs/html/guide/topics/graphics/prop-animation.jd b/docs/html/guide/topics/graphics/prop-animation.jd
old mode 100644
new mode 100755
index e455496..aed533d
--- a/docs/html/guide/topics/graphics/prop-animation.jd
+++ b/docs/html/guide/topics/graphics/prop-animation.jd
@@ -920,10 +920,7 @@
 <p>To distinguish animation files that use the new property animation APIs from those that use the
 legacy <a href="{@docRoot}guide/topics/graphics/view-animation.html">view animation</a> framework,
 starting with Android 3.1, you should save the XML files for property animations in the {@code
-res/animator/} directory (instead of {@code res/anim/}). Using the {@code animator} directory name
-is optional, but necessary if you want to use the layout editor tools in the Eclipse ADT plugin (ADT
-11.0.0+), because ADT only searches the {@code res/animator/} directory for property animation
-resources.</p>
+res/animator/} directory.</p>
 
 <p>The following property animation classes have XML declaration support with the
   following XML tags:</p>
diff --git a/docs/html/guide/topics/location/strategies.jd b/docs/html/guide/topics/location/strategies.jd
old mode 100644
new mode 100755
index f1eb66e..32be463
--- a/docs/html/guide/topics/location/strategies.jd
+++ b/docs/html/guide/topics/location/strategies.jd
@@ -402,20 +402,23 @@
 user location works. This is most easily done using a real Android-powered device. If, however, you
 don't have a device, you can still test your location-based features by mocking location data in
 the Android emulator. There are three different ways to send your application mock location
-data: using Eclipse, DDMS, or the "geo" command in the emulator console.</p>
+data: using Android Studio, DDMS, or the "geo" command in the emulator console.</p>
 
 <p class="note"><strong>Note:</strong> Providing mock location data is injected as GPS location
 data, so you must request location updates from <code>GPS_PROVIDER</code> in order for mock location
 data to work.</p>
 
-<h3 id="MockEclipse">Using Eclipse</h3>
+<h3 id="MockAVD">Using Android Studio</h3>
 
-<p>Select <b>Window</b> &gt; <b>Show View</b> &gt; <b>Other</b> &gt; <b>Emulator Control</b>.</p>
+<p>Select <b>Tools</b> &gt; <b>Android</b> &gt; <b>AVD Manager</b>. In the Android Virtual
+Device Manager window, choose your AVD and launch it in the emulator by selecting the green 
+play arrow in the Actions column.</p>
 
-<p>In the Emulator Control panel, enter GPS coordinates under Location Controls as individual
-lat/long coordinates, with a GPX file for route playback, or a KML file for multiple place marks.
-(Be sure that you have a device selected in the Devices panel&mdash;available from <b>Window</b>
-&gt; <b>Show View</b> &gt; <b>Other</b> &gt; <b>Devices</b>.)</p>
+<p>Then, select <b>Tools</b> &gt; <b>Android</b> &gt; <b>Android Device Monitor</b>.
+Select the Emulator Control tab in the Android Device Monitor window, and enter GPS coordinates 
+under Location Controls as individual lat/long coordinates, with a GPX file for route playback, 
+or a KML file for multiple place marks.
+</p>
 
 
 <h3 id="MockDdms">Using DDMS</h3>
diff --git a/docs/html/guide/topics/manifest/activity-element.jd b/docs/html/guide/topics/manifest/activity-element.jd
index fd1729c..e0f5e3d 100644
--- a/docs/html/guide/topics/manifest/activity-element.jd
+++ b/docs/html/guide/topics/manifest/activity-element.jd
@@ -982,16 +982,17 @@
     <tr><th>Value</th><th>Description</th></tr>
     <tr><td>{@code "none"}</td><td>No extra UI options. This is the default.</td></tr>
     <tr><td>{@code "splitActionBarWhenNarrow"}</td><td>Add a bar at
-the bottom of the screen to display action items in the {@link android.app.ActionBar}, when
+the bottom of the screen to display action items in the <em>app bar</em> (also known as the
+<em>action bar</em>), when
 constrained for horizontal space (such as when in portrait mode on a handset). Instead of a small
-number of action items appearing in the action bar at the top of the screen, the action bar is
+number of action items appearing in the app bar at the top of the screen, the app bar is
 split into the top navigation section and the bottom bar for action items. This ensures a reasonable
 amount of space is made available not only for the action items, but also for navigation and title
 elements at the top. Menu items are not split across the two bars; they always appear
 together.</td></tr>
   </table>
-  <p>For more information about the action bar, see the <a
-href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> developer guide.</p>
+  <p>For more information about the app bar, see the <a
+href="{@docRoot}training/appbar/index.html">Adding the App Bar</a> training class.</p>
   <p>This attribute was added in API level 14.</p>
 </dd>
 
diff --git a/docs/html/guide/topics/manifest/application-element.jd b/docs/html/guide/topics/manifest/application-element.jd
index 887b4ea..56d61f3 100644
--- a/docs/html/guide/topics/manifest/application-element.jd
+++ b/docs/html/guide/topics/manifest/application-element.jd
@@ -434,16 +434,17 @@
     <tr><th>Value</th><th>Description</th></tr>
     <tr><td>{@code "none"}</td><td>No extra UI options. This is the default.</td></tr>
     <tr><td>{@code "splitActionBarWhenNarrow"}</td><td>Add a bar at
-the bottom of the screen to display action items in the {@link android.app.ActionBar}, when
+the bottom of the screen to display action items in the <em>app bar</em> (also known as the
+<em>action bar</em>), when
 constrained for horizontal space (such as when in portrait mode on a handset). Instead of a small
-number of action items appearing in the action bar at the top of the screen, the action bar is
+number of action items appearing in the app bar at the top of the screen, the app bar is
 split into the top navigation section and the bottom bar for action items. This ensures a reasonable
 amount of space is made available not only for the action items, but also for navigation and title
 elements at the top. Menu items are not split across the two bars; they always appear
 together.</td></tr>
   </table>
-  <p>For more information about the action bar, see the <a
-href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> developer guide.</p>
+  <p>For more information about the app bar, see the <a
+href="{@docRoot}training/appbar/index.html">Adding the App Bar</a> training class.</p>
   <p>This attribute was added in API level 14.</p>
 </dd>
 
diff --git a/docs/html/guide/topics/manifest/compatible-screens-element.jd b/docs/html/guide/topics/manifest/compatible-screens-element.jd
index 9c7f036..c1fac94 100644
--- a/docs/html/guide/topics/manifest/compatible-screens-element.jd
+++ b/docs/html/guide/topics/manifest/compatible-screens-element.jd
@@ -9,7 +9,8 @@
 <pre>
 &lt;<a href="#compatible-screens">compatible-screens</a>&gt;
     &lt;<a href="#screen">screen</a> android:<a href="#screenSize">screenSize</a>=["small" | "normal" | "large" | "xlarge"]
-            android:<a href="#screenDensity">screenDensity</a>=["ldpi" | "mdpi" | "hdpi" | "xhdpi" | "xxhdpi" | "xxxhdpi"] /&gt;
+            android:<a href="#screenDensity">screenDensity</a>=["ldpi" | "mdpi" | "hdpi" | "xhdpi"
+                                   | "280" | "360" | "420" | "480" | "560" ] /&gt;
     ...
 &lt;/compatible-screens&gt;
 </pre>
@@ -90,12 +91,15 @@
         <dd><b>Required.</b> Specifies the screen density for this screen configuration.
           <p>Accepted values:</p>
           <ul>
-            <li>{@code ldpi}</li>
-            <li>{@code mdpi}</li>
-            <li>{@code hdpi}</li>
-            <li>{@code xhdpi}</li>
-            <li>{@code xxhdpi}</li>
-            <li>{@code xxxhdpi}</li>
+            <li>{@code "ldpi"} (approximately 120 dpi)</li>
+            <li>{@code "mdpi"} (approximately 160 dpi)</li>
+            <li>{@code "hdpi"} (approximately 240 dpi)</li>
+            <li>{@code "xhdpi"} (approximately 320 dpi)</li>
+            <li>{@code "280"}</li>
+            <li>{@code "360"}</li>
+            <li>{@code "420"}</li>
+            <li>{@code "480"}</li>
+            <li>{@code "560"}</li>
           </ul>
           <p>For information about the different screen densities, see <a
 href="{@docRoot}guide/practices/screens_support.html#range">Supporting Multiple Screens</a>.</p>
diff --git a/docs/html/guide/topics/manifest/manifest-element.jd b/docs/html/guide/topics/manifest/manifest-element.jd
index 7717696..5968548 100644
--- a/docs/html/guide/topics/manifest/manifest-element.jd
+++ b/docs/html/guide/topics/manifest/manifest-element.jd
@@ -35,6 +35,7 @@
 <br/><code><a href="{@docRoot}guide/topics/manifest/uses-configuration-element.html">&lt;uses-configuration&gt;</a></code>  <!-- ##api level 3## -->
 <br/><code><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature&gt;</a></code>
 <br/><code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>
+<br/><code><a href="{@docRoot}guide/topics/manifest/uses-permission-sdk-23-element.html">&lt;uses-permission-sdk-23&gt;</a></code>
 <br/><code><a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</a></code></dd>
 
 <p>
diff --git a/docs/html/guide/topics/manifest/manifest-intro.jd b/docs/html/guide/topics/manifest/manifest-intro.jd
index c8d68f5..d7b176e 100644
--- a/docs/html/guide/topics/manifest/manifest-intro.jd
+++ b/docs/html/guide/topics/manifest/manifest-intro.jd
@@ -279,7 +279,7 @@
 should be localized and therefore set from a resource or theme.  Resource 
 values are expressed in the following format,</p>
 
-<p style="margin-left: 2em"><code>@[<i>package</i>:]<i>type</i>:<i>name</i></code></p>
+<p style="margin-left: 2em">{@code @[<i>package</i>:]<i>type</i>/<i>name</i>}</p>
 
 <p>
 where the <i>package</i> name can be omitted if the resource is in the same package 
@@ -295,7 +295,7 @@
 rather than '{@code @}':
 </p>
 
-<p style="margin-left: 2em"><code>?[<i>package</i>:]<i>type</i>:<i>name</i></code>
+<p style="margin-left: 2em">{@code ?[<i>package</i>:]<i>type</i>/<i>name</i>}
 </p></dd>
 
 <dt><b>String values</b></dt>
diff --git a/docs/html/guide/topics/manifest/uses-feature-element.jd b/docs/html/guide/topics/manifest/uses-feature-element.jd
old mode 100644
new mode 100755
index e746a67..c2def69
--- a/docs/html/guide/topics/manifest/uses-feature-element.jd
+++ b/docs/html/guide/topics/manifest/uses-feature-element.jd
@@ -486,10 +486,22 @@
 
 <ol>
 <li>First, build and export your application as an unsigned <code>.apk</code>.
-If you are developing in Eclipse with ADT, right-click the project and select
-<strong>Android Tools</strong> &gt; <strong>Export Unsigned Application
-Package</strong>. Select a destination filename and path and click
-<strong>OK</strong>. </li>
+If you are developing in Android Studio, build your application with Gradle:
+<ol TYPE=a>
+<li>Open the project and select <strong>Run > Edit Configurations</strong>.
+<li>Select the plus sign near the top-left corner of the <strong>Run/Debug
+Configurations</strong> window.
+<li>Select <strong>Gradle.</strong>
+<li>Enter <code>Unsigned APK</code> in <strong>Name</strong>.
+<li>Choose your module from the <strong>Gradle project</strong> section.
+<li>Enter <code>assemble</code> in <strong>Tasks</strong>.
+<li>Select <strong>OK</strong> to complete the new configuration.
+<li>Make sure the <strong>Unsigned APK</strong> run configuration is selected
+in the toolbar and select <strong>Run > Run 'Unsigned APK'</strong>.</li>
+</ol>
+You can find your unsigned <code>.apk</code> in the
+<code>&lt;<em>ProjectName</em>&gt;/app/build/outputs/apk/</code> directory.
+
 <li>Next, locate the <code>aapt</code> tool, if it is not already in your PATH.
 If you are using SDK Tools r8 or higher, you can find <code>aapt</code> in the
 <code>&lt;<em>SDK</em>&gt;/platform-tools/</code> directory.
@@ -541,12 +553,27 @@
        <th>Comments</th>
     </tr>
     <tr>
-       <td>Audio</td>
-       <td><code>android.hardware.audio.low_latency</td>
+       <td rowspan="4">Audio</td>
+       <td><code>android.hardware.audio.low_latency</code></td>
        <td>The application uses a low-latency audio pipeline on the device and
-is sensitive to delays or lag in sound input or output.</td>
-<td>
-</td>
+           is sensitive to delays or lag in sound input or output.</td>
+       <td></td>
+    </tr>
+    <tr>
+       <td><code>android.hardware.audio.pro</code></td>
+       <td>The application uses high-end audio functionality and performance.</td>
+       <td></td>
+    </tr>
+    <tr>
+       <td><code>android.hardware.microphone</code></td>
+       <td>The application records audio via a microphone.</td>
+       <td></td>
+    </tr>
+    </tr>
+       <td><code>android.hardware.output</code></td>
+       <td>The application produces at least one form of audio output, such as speakers, audio jack
+           or streaming over bluetooth.</td>
+       <td></td>
     </tr>
     <tr>
        <td rowspan="2">Bluetooth</td>
@@ -563,9 +590,9 @@
        <td rowspan="6">Camera</td>
        <td><code>android.hardware.camera</code></td>
        <td>The application uses the device's back-facing (main) camera.</td>
-       <td>Devices with only a front-facing camera do not list this feature, so the
-           <code>android.hardware.camera.any</code> feature should be
-           used instead if a camera facing any direction is acceptable for the
+       <td>Devices with only a front-facing camera do not list this feature, so
+           the <code>android.hardware.camera.any</code> feature should be used
+           instead if a camera facing any direction is acceptable for the
            application.</td>
     </tr>
 <tr>
@@ -932,6 +959,12 @@
   support Live Wallpapers.</td>
 </tr>
 <tr>
+  <td>MIDI</td>
+  <td><code>android.software.midi</code></td>
+  <td>The application connects to musical instruments or outputs sound
+  using the Musical Instrument Digital Interface (MIDI) protocol.</td>
+</tr>
+<tr>
   <td rowspan="2">SIP/VOIP</td>
   <td><code>android.software.sip</code></td>
   <td>The application uses SIP service on the device and should be installed only on devices that
diff --git a/docs/html/guide/topics/manifest/uses-permission-element.jd b/docs/html/guide/topics/manifest/uses-permission-element.jd
index bb93a70..32fe21e 100644
--- a/docs/html/guide/topics/manifest/uses-permission-element.jd
+++ b/docs/html/guide/topics/manifest/uses-permission-element.jd
@@ -43,14 +43,15 @@
 
 <dt>description:</dt>
 <dd itemprop="description">Requests a permission that the application must be granted in
-order for it to operate correctly.  Permissions are granted by the user when the 
-application is installed, not while it's running.
+order for it to operate correctly. Permissions are granted by the user when the 
+application is installed (on devices running Android 5.1 and lower) or while the app is running (on devices running Android 6.0 and higher).
 
 <p>
 For more information on permissions, see the 
 <a href="{@docRoot}guide/topics/manifest/manifest-intro.html#perms">Permissions</a></code> 
-section in the introduction and the separate 
-<a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a> document.  
+section in the introduction and the separate
+<a href="{@docRoot}guide/topics/security/permissions.html">System
+Permissions</a> API guide.
 A list of permissions defined by the base platform can be found at 
 {@link android.Manifest.permission android.Manifest.permission}.
 
@@ -60,8 +61,10 @@
 <dd>The name of the permission.  It can be a permission defined by the 
 application with the <code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code> 
 element, a permission defined by another application, or one of the 
-standard system permissions, such as "{@code android.permission.CAMERA}" 
-or "{@code android.permission.READ_CONTACTS}".  As these examples show, 
+standard system permissions (such as
+{@link android.Manifest.permission#CAMERA "android.permission.CAMERA"}
+or {@link android.Manifest.permission#READ_CONTACTS
+"android.permission.READ_CONTACTS"}).  As these examples show,
 a permission name typically includes the package name as a prefix.</dd>
 
 <dt><a name="maxSdk"></a>{@code android:maxSdkVersion}</dt>
@@ -94,6 +97,8 @@
 <dd>
 <ul>
   <li><code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code></li>
+  <li><a href="uses-permission-sdk-23-element.html"
+      ><code>&lt;uses-permission-sdk-23&gt;</code></a></li>
   <li><code><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature&gt;</a></code></li>
 </ul>
 </dd>
diff --git a/docs/html/guide/topics/manifest/uses-permission-sdk-23-element.jd b/docs/html/guide/topics/manifest/uses-permission-sdk-23-element.jd
new file mode 100644
index 0000000..860d30f
--- /dev/null
+++ b/docs/html/guide/topics/manifest/uses-permission-sdk-23-element.jd
@@ -0,0 +1,96 @@
+page.title=&lt;uses-permission-sdk-23&gt;
+page.tags="uses-permission-sdk-23","permissions","uses-permission-sdk23"
+parent.title=The AndroidManifest.xml File
+parent.link=manifest-intro.html
+@jd:body
+
+<dl class="xml">
+
+<dt>syntax:</dt>
+<dd><pre class="stx">&lt;uses-permission-sdk-23 android:<a href="#nm">name</a>="<i>string</i>"
+        android:<a href="#maxSdk">maxSdkVersion</a>="<i>integer</i>" /&gt;</pre></dd>
+
+<dt>Contained in:</dt>
+<dd><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code></dd>
+
+<dt>
+  Description:
+</dt>
+
+<dd itemprop="description">
+  Specifies that an app wants a particular permission, but <em>only</em> if
+  the app is running on a device with <a
+  href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API
+  level</a> 23 or higher. If the device
+  is running API level 22 or lower, the app does not have the specified
+  permission.
+
+<p>
+  This element is useful when you update an app to include a new
+  feature that requires an additional permission. If a user updates an app on a
+  device that is running API level 22 or lower, the system prompts the user
+  at install time to grant all new permissions that are declared in that
+  update. If a new feature is minor enough, you may prefer to disable
+  the feature altogether on those devices, so the user does not have to grant
+  additional permissions to update the app. By using the
+  <code>&lt;uses-permission-sdk-23&gt;</code> element instead of <a href=
+  "uses-permission-element.html"><code>&lt;uses-permission&gt;</code></a>,
+  you can request the permission <em>only</em> if the app is running on
+  platforms that support the <a
+  href="{@docRoot}training/permissions/requesting.html">runtime permissions</a>
+  model, in which the user
+  grants permissions to the app while it is running.
+</p>
+
+  <p>
+    For more information on permissions, see the <a href=
+    "{@docRoot}guide/topics/manifest/manifest-intro.html#perms">Permissions</a>
+    section in the introduction and the separate <a href=
+    "{@docRoot}guide/topics/security/permissions.html">System Permissions</a>
+    API guide. A list of permissions defined by the base platform is available
+    at {@link android.Manifest.permission android.Manifest.permission}.
+  </p>
+</dd>
+
+<dt>Attributes:</dt>
+
+  <dd>
+    <dl class="attr">
+
+      <dt><a name="nm"></a>{@code android:name}</dt>
+
+      <dd>
+        The name of the permission. This permission can be defined by the
+        app with the <code><a href=
+        "{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code>
+        element, it can be a permission defined by another app, or it can be one
+        of the standard system permissions, such as
+        {@link android.Manifest.permission#CAMERA "android.permission.CAMERA"}
+        or {@link android.Manifest.permission#READ_CONTACTS
+        "android.permission.READ_CONTACTS"}.
+      </dd>
+
+      <dt><a name="maxSdk"></a>{@code android:maxSdkVersion}</dt>
+      <dd>
+        The highest API level at which this permission should be granted to your
+        app. If the app is installed on a device with a later API level, the app
+        is not granted the permission and cannot use any related functionality.
+      </dd>
+    </dl>
+  </dd>
+
+<!-- ##api level indication## -->
+<dt>introduced in:</dt>
+<dd>API Level 23</dd>
+
+<dt>see also:</dt>
+<dd>
+<ul>
+  <li><code><a href="{@docRoot}guide/topics/manifest/permission-element.html">&lt;permission&gt;</a></code></li>
+  <li><a href=
+    "uses-permission-element.html"><code>&lt;uses-permission&gt;</code></a></li>
+  <li><code><a href="{@docRoot}guide/topics/manifest/uses-feature-element.html">&lt;uses-feature&gt;</a></code></li>
+</ul>
+</dd>
+
+</dl>
diff --git a/docs/html/guide/topics/manifest/uses-sdk-element.jd b/docs/html/guide/topics/manifest/uses-sdk-element.jd
old mode 100644
new mode 100755
index 642b820..94577ed
--- a/docs/html/guide/topics/manifest/uses-sdk-element.jd
+++ b/docs/html/guide/topics/manifest/uses-sdk-element.jd
@@ -226,10 +226,10 @@
 <table>
   <tr><th>Platform Version</th><th>API Level</th><th>VERSION_CODE</th><th>Notes</th></tr>
 
-    <tr><td>Android 6.0</td>
+    <tr><td><a href="{@docRoot}about/versions/marshmallow/android-6.0.html">Android 6.0</a></td>
     <td><a href="{@docRoot}sdk/api_diff/23/changes.html" title="Diff Report">23</a></td>
     <td>{@link android.os.Build.VERSION_CODES#M}</td>
-    <td><a href="{@docRoot}preview/api-overview.html">API Changes</a></td></tr>
+    <td><a href="{@docRoot}about/versions/marshmallow/index.html">Platform Highlights</a></td></tr>
 
     <tr><td><a href="{@docRoot}about/versions/android-5.1.html">Android 5.1</a></td>
     <td><a href="{@docRoot}sdk/api_diff/22/changes.html" title="Diff Report">22</a></td>
@@ -543,10 +543,7 @@
 <p>To access the updater, use the <code>android</code> command-line tool,
 located in the &lt;sdk&gt;/tools directory. You can launch the SDK updater by
 executing <code>android sdk</code>. You can
-also simply double-click the android.bat (Windows) or android (OS X/Linux) file.
-In ADT, you can also access the updater by selecting
-<strong>Window</strong>&nbsp;>&nbsp;<strong>Android SDK
-Manager</strong>.</p>
+also simply double-click the android.bat (Windows) or android (OS X/Linux) file.</p>
 
 <p>To run your application against different platform versions in the emulator,
 create an AVD for each platform version that you want to test. For more
diff --git a/docs/html/guide/topics/providers/content-provider-basics.jd b/docs/html/guide/topics/providers/content-provider-basics.jd
index 199a671b..b7ae3d2 100644
--- a/docs/html/guide/topics/providers/content-provider-basics.jd
+++ b/docs/html/guide/topics/providers/content-provider-basics.jd
@@ -328,7 +328,7 @@
 </pre>
 <p>
     where the <code>user_dictionary</code> string is the provider's authority, and
-    <code>words</code> string is the table's path. The string
+    the <code>words</code> string is the table's path. The string
     <code>content://</code> (the <strong>scheme</strong>) is always present,
     and identifies this as a content URI.
 </p>
@@ -346,8 +346,8 @@
 </p>
 <p class="note">
     <strong>Note:</strong> The {@link android.net.Uri} and {@link android.net.Uri.Builder} classes
-    contain convenience methods for constructing well-formed Uri objects from strings. The
-    {@link android.content.ContentUris} contains convenience methods for appending id values to
+    contain convenience methods for constructing well-formed URI objects from strings. The
+    {@link android.content.ContentUris} class contains convenience methods for appending id values to
     a URI. The previous snippet uses {@link android.content.ContentUris#withAppendedId
     withAppendedId()} to append an id to the UserDictionary content URI.
 </p>
@@ -407,7 +407,7 @@
 <!-- Constructing the query -->
 <h3 id="Query">Constructing the query</h3>
 <p>
-    The next step in retrieving data a provider is to construct a query. This first snippet
+    The next step in retrieving data from a provider is to construct a query. This first snippet
     defines some variables for accessing the User Dictionary Provider:
 </p>
 <pre class="prettyprint">
@@ -1148,7 +1148,7 @@
 </p>
 <p>
     The <em>subtype</em> is provider-specific. The Android built-in providers usually have a simple
-    subtype. For example, the when the Contacts application creates a row for a telephone number,
+    subtype. For example, when the Contacts application creates a row for a telephone number,
     it sets the following MIME type in the row:
 </p>
 <pre>
diff --git a/docs/html/guide/topics/providers/content-provider-creating.jd b/docs/html/guide/topics/providers/content-provider-creating.jd
old mode 100644
new mode 100755
index 6ec1e1b..7cd3d69
--- a/docs/html/guide/topics/providers/content-provider-creating.jd
+++ b/docs/html/guide/topics/providers/content-provider-creating.jd
@@ -879,8 +879,8 @@
     A contract class also helps developers because it usually has mnemonic names for its constants,
     so developers are less likely to use incorrect values for column names or URIs. Since it's a
     class, it can contain Javadoc documentation. Integrated development environments such as
-    Eclipse can auto-complete constant names from the contract class and display Javadoc for the
-    constants.
+    Android Studio can auto-complete constant names from the contract class and display Javadoc for 
+    the constants.
 </p>
 <p>
     Developers can't access the contract class's class file from your application, but they can
diff --git a/docs/html/guide/topics/renderscript/compute.jd b/docs/html/guide/topics/renderscript/compute.jd
old mode 100644
new mode 100755
index eef8cda..564215e
--- a/docs/html/guide/topics/renderscript/compute.jd
+++ b/docs/html/guide/topics/renderscript/compute.jd
@@ -192,19 +192,18 @@
   <li>Make sure you have the required Android SDK version and Build Tools version installed.</li>
   <li> Update the settings for the Android build process to include the RenderScript settings:
 
-    <p><strong>For Android Studio or Gradle-based builds</strong></p>
     <ul>
       <li>Open the {@code build.gradle} file in the app folder of your application module. </li>
       <li>Add the following RenderScript settings to the file:
 
 <pre>
 android {
-    compileSdkVersion 19
-    buildToolsVersion "19.0.3"
+    compileSdkVersion 23
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 8
-        targetSdkVersion 16
+        targetSdkVersion 19
 <strong>
         renderscriptTargetApi 18
         renderscriptSupportModeEnabled true
@@ -218,9 +217,9 @@
 
     <ul>
       <li>{@code renderscriptTargetApi} - Specifies the bytecode version to be generated. We
-      recommend you set this value to the highest available API level and set
-      {@code renderscriptSupportModeEnabled}
-      to {@code true}. Valid values for this setting are any integer value
+      recommend you set this value to the lowest API level able to provide all the functionality
+      you are using and set {@code renderscriptSupportModeEnabled} to {@code true}.
+      Valid values for this setting are any integer value
       from 11 to the most recently released API level. If your minimum SDK version specified in your
       application manifest is set to a different value, that value is ignored and the target value
       in the build file is used to set the minimum SDK version.</li>
@@ -233,42 +232,8 @@
       installed build tools version is used. You should always set this value to ensure the
       consistency of builds across development machines with different configurations.</li>
     </ul>
-
     </li>
-
-    <p><strong>For Eclipse</strong></p>
-    <ul>
-      <li>Open the {@code project.properties} file in the root folder of your application project.</li>
-      <li>Add the following lines to the file:
-
-<pre>
-renderscript.target=18
-renderscript.support.mode=true
-sdk.buildtools=18.1.0
-</pre>
-
-      <p>The settings listed above control specific behavior in the Android build process:</p>
-
-      <ul>
-        <li>{@code renderscript.target} - Specifies the bytecode version to be generated. We
-        recommend you set this value to the highest available API level and set
-        {@code renderscript.support.mode} to {@code true}. Valid values for this setting are any
-        integer value from 11 to the most recently released API level. If your minimum SDK version
-        specified in your application manifest is set to a higher value, this value is ignored and
-        the target value is set to the minimum SDK version.</li>
-        <li>{@code renderscript.support.mode} - Specifies that the generated bytecode should fall
-        back to a compatible version if the device it is running on does not support the target version.
-        </li>
-        <li>{@code sdk.buildtools} - The version of the Android SDK build tools to use. This value
-        should be set to {@code 18.1.0} or higher. If this option is not specified, the highest
-        installed build tools version is used. You should always set this value to ensure the
-        consistency of builds across development machines with different configurations.</li>
-      </ul>
-     </li>
-
-    </ul>
-
-  </ul>
+   </ul>
 
   <li>In your application classes that use RenderScript, add an import for the Support Library
     classes:
@@ -279,7 +244,7 @@
 
   </li>
 
- </0l>
+</ol>
 
 <h2 id="using-rs-from-java">Using RenderScript from Java Code</h2>
 
diff --git a/docs/html/guide/topics/resources/color-list-resource.jd b/docs/html/guide/topics/resources/color-list-resource.jd
index 61f6665..ac73d64 100644
--- a/docs/html/guide/topics/resources/color-list-resource.jd
+++ b/docs/html/guide/topics/resources/color-list-resource.jd
@@ -17,7 +17,7 @@
 that you can apply as a color, but will actually change colors, depending on the state of
 the {@link android.view.View} object to which it is applied. For example, a {@link
 android.widget.Button} widget can exist in one of several different states (pressed, focused,
-or niether) and, using a color state list, you can provide a different color during each state.</p>
+or neither) and, using a color state list, you can provide a different color during each state.</p>
 
 <p>You can describe the state list in an XML file. Each color is defined in an {@code
 <item>} element inside a single {@code <selector>} element. Each {@code <item>}
diff --git a/docs/html/guide/topics/resources/drawable-resource.jd b/docs/html/guide/topics/resources/drawable-resource.jd
index dd2c4c2..b489b43 100644
--- a/docs/html/guide/topics/resources/drawable-resource.jd
+++ b/docs/html/guide/topics/resources/drawable-resource.jd
@@ -8,6 +8,7 @@
     <h2>See also</h2>
     <ol>
       <li><a href="{@docRoot}guide/topics/graphics/2d-graphics.html">2D Graphics</a></li>
+      <li><a href="{@docRoot}tools/help/vector-asset-studio.html">Vector Asset Studio</a></li>
     </ol>
   </div>
 </div>
@@ -607,7 +608,7 @@
 that uses a several different images to represent the same graphic, depending on the state of
 the object. For example, a {@link
 android.widget.Button} widget can exist in one of several different states (pressed, focused,
-or niether) and, using a state list drawable, you can provide a different background image for each
+or neither) and, using a state list drawable, you can provide a different background image for each
 state.</p>
 
 <p>You can describe the state list in an XML file. Each graphic is represented by an {@code
diff --git a/docs/html/guide/topics/resources/index.jd b/docs/html/guide/topics/resources/index.jd
index b85170b..60736bb 100644
--- a/docs/html/guide/topics/resources/index.jd
+++ b/docs/html/guide/topics/resources/index.jd
@@ -1,6 +1,6 @@
 page.title=App Resources
 page.landing=true
-page.landing.intro=It takes more than just code to build a great app. Resources are the additional files and static content that your code uses, such as bitmaps, layout definitions, user interface strings, animation instructions, and more.  
+page.landing.intro=It takes more than just code to build a great app. Resources are the additional files and static content that your code uses, such as bitmaps, layout definitions, user interface strings, animation instructions, and more.
 page.landing.image=images/develop/resources.png
 page.image=/images/develop/resources.png
 page.metaDescription=Developer guide about how to use resources in your Android apps.
@@ -16,8 +16,8 @@
 href="http://android-developers.blogspot.com/2011/07/new-tools-for-managing-screen-sizes.html">
       <h4>New Tools For Managing Screen Sizes</h4>
       <p>Android 3.2 includes new tools for supporting devices with a wide range of screen sizes.
-One important result is better support for a new size of screen; what is typically called a ?7-inch?
-tablet. This release also offers several new APIs to simplify developers? work in adjusting to
+One important result is better support for a new size of screen; what is typically called a "7-inch"
+tablet. This release also offers several new APIs to simplify developers' work in adjusting to
 different screen sizes.</p>
     </a>
 
@@ -27,7 +27,7 @@
 difficult to design an app with a single predictable look and feel. We set out to improve this
 situation for the developer community in Ice Cream Sandwich and beyond.</p>
     </a>
-    
+
     <a
 href="http://android-developers.blogspot.com/2011/07/new-mode-for-apps-on-large-screens.html">
       <h4>New Mode for Apps on Large Screens</h4>
@@ -47,7 +47,7 @@
 resources and other features so your app can provide an optimized user experience on a variety of
 Android-compatible devices, using a single application package (APK).</p>
     </a>
-    
+
     <a href="http://developer.android.com/training/multiscreen/index.html">
       <h4>Designing for Multiple Screens</h4>
       <p>This class shows you how to implement a user interface that's optimized for several screen
diff --git a/docs/html/guide/topics/resources/localization.jd b/docs/html/guide/topics/resources/localization.jd
old mode 100644
new mode 100755
index e60ca9f..afe4611
--- a/docs/html/guide/topics/resources/localization.jd
+++ b/docs/html/guide/topics/resources/localization.jd
@@ -10,25 +10,29 @@
 <h2>Quickview</h2>
 
 <ul>
-  <li>Use resource sets to create a localized app.</li>
-  <li>Android loads the correct resource set for the user's language and locale.</li>
-  <li>If localized resources are not available, Android loads your default resources.</li>
+<li>Use resource sets to create a localized app.</li>
+<li>Android loads the correct resource set for the user's language and locale.</li>
+<li>If localized resources are not available, Android loads your default resources.</li>
 </ul>
 
 <h2>In this document</h2>
 <ol>
-  <li><a href="#resource-switching">Overview: Resource-Switching in Android</a></li>
+<li><a href="#resource-switching">Overview: Resource-Switching in Android</a></li>
 <li><a href="#using-framework">Using Resources for Localization</a></li>
 <li><a href="#strategies">Localization Tips</a></li>
 <li><a href="#testing">Testing Localized Applications</a></li>
 </ol>
 
 <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}distribute/tools/localization-checklist.html">Localization Checklist</a></li>
-    <li><a href="{@docRoot}guide/topics/resources/providing-resources.html">Providing Resources</a></li>
-    <li><a href="{@docRoot}guide/topics/ui/declaring-layout.html">Layouts</a></li>
-    <li><a href="{@docRoot}reference/android/app/Activity.html#ActivityLifecycle">Activity Lifecycle</a></li>
+<ol>
+<li><a href="{@docRoot}distribute/tools/localization-checklist.html">
+Localization Checklist</a></li>
+<li><a href="{@docRoot}guide/topics/resources/providing-resources.html">
+Providing Resources</a></li>
+<li><a href="{@docRoot}guide/topics/ui/declaring-layout.html">
+Layouts</a></li>
+<li><a href="{@docRoot}reference/android/app/Activity.html#ActivityLifecycle">
+Activity Lifecycle</a></li>
 </ol>
 </div>
 </div>
@@ -39,8 +43,7 @@
 </p>
 
 <p>This document describes best practices for localizing Android
-applications. The principles apply whether you are developing your application  
-using ADT with Eclipse, Ant-based tools, or any other IDE. </p>
+applications.</p>
 
 <p>You should already have a working knowledge of Java and be  familiar with
 Android resource loading, the declaration of user interface elements in XML,
@@ -52,19 +55,21 @@
 functionality:</p>
 
 <ul>
-  <li>You can put most or all of the <em>contents</em> of your application's
+<li>You can put most or all of the <em>contents</em> of your application's
 user interface into resource files, as described in this document and in <a
-href="{@docRoot}guide/topics/resources/providing-resources.html">Providing Resources</a>.</li>
-  <li>The <em>behavior</em> of the user interface, on the other hand, is driven
-by your Java code. 
+href="{@docRoot}guide/topics/resources/providing-resources.html">
+Providing Resources</a>.</li>
+<li>The <em>behavior</em> of the user interface, on the other hand, is driven
+by your Java code.
     For example, if users input data that needs to be formatted or sorted
 differently depending on locale, then you would use Java to handle the data
 programmatically. This document does not cover how to  localize your Java code.
 </li>
 </ul>
 
-<p>For a short guide to localizing strings in your app, see the training lesson, <a
-href="{@docRoot}training/basics/supporting-devices/languages.html">Supporting Different Languages</a>. </p>
+<p>For a short guide to localizing strings in your app, see the training lesson,
+<a href="{@docRoot}training/basics/supporting-devices/languages.html">
+Supporting Different Languages</a>. </p>
 
 
 <h2 id="resource-switching">Overview: Resource-Switching in Android</h2>
@@ -72,24 +77,25 @@
 <p>Resources are text strings, layouts, sounds, graphics, and any other static
 data that your  Android application  needs. An application can include multiple
 sets of resources, each customized for a different device configuration. When a
-user runs the application,  Android    automatically selects and loads the 
+user runs the application,  Android    automatically selects and loads the
 resources that best match the device.</p>
 
 <p>(This document focuses on localization and locale. For a complete description
 of resource-switching and all the types of configurations that you can
-specify &#8212; screen orientation, touchscreen type, and so on &#8212; see <a
-href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">Providing
-Alternative Resources</a>.)</p>
+specify &#8212; screen orientation, touchscreen type, and so on &#8212;
+see <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">
+Providing Alternative Resources</a>.)</p>
 
 <table border="0" cellspacing="0" cellpadding="0">
-  <tr border="0">
-    <td width="180" style="border: 0pt none ;"><p class="special-note">
-    <strong>When you write your application:</strong>
-    <br><br>
-    You create a set of default resources, plus alternatives to be used in
-    different locales.</p></td>
-    <td style="border: 0pt none; padding:0">
-    <p style="border:0; padding:0"><img src="../../../images/resources/right-arrow.png" alt="right-arrow" 
+<tr border="0">
+<td width="180" style="border: 0pt none ;"><p class="special-note">
+<strong>When you write your application:</strong>
+<br><br>
+You create a set of default resources, plus alternatives to be used in
+different locales.</p></td>
+<td style="border: 0pt none; padding:0">
+<p style="border:0; padding:0">
+<img src="../../../images/resources/right-arrow.png" alt="right-arrow"
     width="51" height="17"></p></td>
     <td width="180" style="border: 0pt none ;"><p class="special-note">
     <strong>When a user runs your application:</strong>
@@ -109,36 +115,35 @@
 
 <p>Whenever the application runs in a locale for which you have not provided
 locale-specific text,  Android will load the default strings from
-<code>res/values/strings.xml</code>. If this default  file is absent, or if it 
-is missing a string that your application needs, then your application will not run 
-and will show an error. 
-The example below illustrates what can happen when the default text file is incomplete. </p>
+<code>res/values/strings.xml</code>. If this default  file is absent, or if it
+is missing a string that your application needs, then your application will not run
+and will show an error.
+The example below illustrates what can happen when the default text file is
+incomplete. </p>
 
 <p><em>Example:</em>
-<p>An application's Java code refers to just two strings, <code>text_a</code> and 
-	<code>text_b</code>. This application includes a localized resource file 
-	(<code>res/values-en/strings.xml</code>) that defines <code>text_a</code> and 
-	<code>text_b</code> in English. This application also includes a default 
+<p>An application's Java code refers to just two strings, <code>text_a</code> and
+	<code>text_b</code>. This application includes a localized resource file
+	(<code>res/values-en/strings.xml</code>) that defines <code>text_a</code> and
+	<code>text_b</code> in English. This application also includes a default
 	resource file (<code>res/values/strings.xml</code>) that includes a
 definition for <code>text_a</code>, but not for <code>text_b</code>:
 <ul>
-  <li>This application might compile without a problem. An IDE such as Eclipse 
-  	will not highlight any errors if a resource is missing.</li>
-  <li>When this application is launched on a device with locale set to English, 
-  	the application  might run without a problem, because 
-  	<code>res/values-en/strings.xml</code> contains both of the needed text 
+  <li>When this application is launched on a device with locale set to English,
+  	the application  might run without a problem, because
+  	<code>res/values-en/strings.xml</code> contains both of the needed text
   	strings.</li>
-  <li>However, <strong>the user  will see an error message and a Force Close 
-  	button</strong> when this application is launched on a device set to a 
+  <li>However, <strong>the user  will see an error message and a Force Close
+  	button</strong> when this application is launched on a device set to a
   	language other than English. The application will not load.</li>
 </ul>
 
 
-<p>To prevent this situation, make sure that a <code>res/values/strings.xml</code> 
-	file exists and that it defines every needed string. The situation applies to 
-	all types of resources, not just strings: You 
-	need to create a  set of default resource files containing all 
-	the resources that your application calls upon &#8212; layouts, drawables, 
+<p>To prevent this situation, make sure that a <code>res/values/strings.xml</code>
+	file exists and that it defines every needed string. The situation applies to
+	all types of resources, not just strings: You
+	need to create a  set of default resource files containing all
+	the resources that your application calls upon &#8212; layouts, drawables,
 	animations, etc. For information about testing, see <a href="#test-for-default">
 	Testing for Default Resources</a>.</p>
 
@@ -154,26 +159,26 @@
 default language, which is the language that you expect most of your application's users to
 speak.  </p>
 
-<p>The default resource set must also include any default drawables and layouts, 
-	and can include other types of resources such as animations. 
+<p>The default resource set must also include any default drawables and layouts,
+	and can include other types of resources such as animations.
 <br>
   <code>&nbsp;&nbsp;&nbsp;&nbsp;res/drawable/</code>(required directory holding at least
   one graphic file, for the application's icon on Google Play)<br>
   <code>&nbsp;&nbsp;&nbsp;&nbsp;res/layout/</code> (required directory holding an XML
   file that defines the default layout)<br>
-  <code>&nbsp;&nbsp;&nbsp;&nbsp;res/anim/</code> (required if you have any 
+  <code>&nbsp;&nbsp;&nbsp;&nbsp;res/anim/</code> (required if you have any
   <code>res/anim-<em>&lt;qualifiers&gt;</em></code> folders)<br>
-  <code>&nbsp;&nbsp;&nbsp;&nbsp;res/xml/</code> (required if you have any 
+  <code>&nbsp;&nbsp;&nbsp;&nbsp;res/xml/</code> (required if you have any
   <code>res/xml-<em>&lt;qualifiers&gt;</em></code> folders)<br>
-  <code>&nbsp;&nbsp;&nbsp;&nbsp;res/raw/</code> (required if you have any 
+  <code>&nbsp;&nbsp;&nbsp;&nbsp;res/raw/</code> (required if you have any
   <code>res/raw-<em>&lt;qualifiers&gt;</em></code> folders)
 </p>
 
-<p class="note"><strong>Tip:</strong> In your code, examine each reference to 
+<p class="note"><strong>Tip:</strong> In your code, examine each reference to
 	an Android resource. Make sure that a default resource is defined for each
 	one. Also make sure that the default string file is complete: A <em>
-	localized</em> string file can contain a subset of the strings, but the 
-	<em>default</em> string file must contain them all. 
+	localized</em> string file can contain a subset of the strings, but the
+	<em>default</em> string file must contain them all.
 </p>
 
 <h3 id="creating-alternatives">How to Create Alternative Resources</h3>
@@ -184,9 +189,9 @@
 
 <p>An application can specify many <code>res/<em>&lt;qualifiers&gt;</em>/</code>
 directories, each with different qualifiers. To create an alternative resource for
-a different locale, you use a qualifier that specifies a language or a 
-language-region combination. (The name of a resource directory must conform 
-to the naming scheme described in 
+a different locale, you use a qualifier that specifies a language or a
+language-region combination. (The name of a resource directory must conform
+to the naming scheme described in
 <a href="{@docRoot}guide/topics/resources/providing-resources.html#AlternativeResources">Providing
 Alternative Resources</a>,
 or else it will not compile.)</p>
@@ -243,7 +248,7 @@
     Contains
   default graphics.</li>
   <li><code>res/drawable-small-land-stylus/</code><br>
-  Contains  graphics optimized for use with a device that expects input from a 
+  Contains  graphics optimized for use with a device that expects input from a
   stylus and has a QVGA low-density screen in landscape orientation.</li>
   <li><code>res/drawable-ja/</code> <br>
   Contains  graphics optimized for use with Japanese.</li>
@@ -251,7 +256,7 @@
 
 <p>If the application runs on a device that is configured to use Japanese,
 Android will load graphics from  <code>res/drawable-ja/</code>, even if the
-device happens to be one that expects input from a stylus and has a QVGA 
+device happens to be one that expects input from a stylus and has a QVGA
 low-density screen in landscape orientation.</p>
 
 <p class="note"><strong>Exception:</strong> The only qualifiers that take
@@ -316,8 +321,8 @@
 
 <p>You cannot assume anything about the device on which a user will
 run your application. The device might have hardware that you were not
-anticipating, or it might be set to a locale that you did not plan for or that 
-you cannot test. Design your application so that it will function normally or fail gracefully no 
+anticipating, or it might be set to a locale that you did not plan for or that
+you cannot test. Design your application so that it will function normally or fail gracefully no
 matter what device it runs on.</p>
 
 <p class="note"><strong>Important:</strong> Make sure that your application
@@ -326,14 +331,12 @@
 additional modifiers in the folder names) that contain all the images and text
 that your application will need. </p>
 
-<p>If an application is missing even one default resource, it will not run on a 
-	device that is set to an unsupported locale. For example, the 
-	<code>res/values/strings.xml</code> default file might lack one string that 
-	the application needs: When the application runs in an unsupported locale and 
-	attempts to load <code>res/values/strings.xml</code>, the user will see an 
-	error message and a Force Close button. An IDE such as Eclipse will not 
-	highlight this kind of error, and you will not see the problem when you 
-	test the application on a device or emulator that is set to a supported locale.</p>
+<p>If an application is missing even one default resource, it will not run on a
+device that is set to an unsupported locale. For example, the
+<code>res/values/strings.xml</code> default file might lack one string that
+the application needs: When the application runs in an unsupported locale and
+attempts to load <code>res/values/strings.xml</code>, the user will see an
+error message and a Force Close button.</p>
 
 <p>For more information, see <a href="#test-for-default">Testing for Default Resources</a>.</p>
 
@@ -396,10 +399,10 @@
 <h2 id="testing">Testing Localized Applications</h2>
 
 <h3 id="device">Testing on a Device</h3>
-<p>Keep in mind that the device you are testing may be significantly different from 
-	the devices available to consumers in other geographies. The locales available 
-	on your device may differ from those available on other devices. Also, the 
-	resolution and density of the device screen may differ, which could affect 
+<p>Keep in mind that the device you are testing may be significantly different from
+	the devices available to consumers in other geographies. The locales available
+	on your device may differ from those available on other devices. Also, the
+	resolution and density of the device screen may differ, which could affect
 	the display of strings and drawables in your UI.</p>
 
 <p>To change the locale or language on a device, use the Settings application.</p>
@@ -419,7 +422,7 @@
 
 <ul>
   <li>Use the Custom Locale application, which is accessible from the
-Application tab. (After you create a custom locale, switch to it by 
+Application tab. (After you create a custom locale, switch to it by
 pressing and holding the locale name.)</li>
   <li>Change to a custom locale from the adb shell, as described below.</li>
 </ul>
@@ -443,7 +446,7 @@
   or if you have a device attached, specify that you want the emulator by adding
 the <code>-e</code> option:<br>
   <code>adb -e shell</code></li>
-  <li>At  the  adb shell prompt (<code>#</code>), run this command: <br>
+<li>At  the  adb shell prompt (<code>#</code>), run this command: <br>
     <code>setprop persist.sys.locale [<em>BCP-47 language tag</em>];stop;sleep 5;start <br>
     </code>Replace bracketed sections with the  appropriate codes from Step
 1.</li>
@@ -454,31 +457,28 @@
 <p><code>setprop persist.sys.locale fr-CA;stop;sleep 5;start </code></p>
 
 <p>This will cause the emulator  to restart. (It will look like a full reboot,
-but it is not.) Once the Home screen appears again, re-launch your application (for
-example, click the Run icon in Eclipse), and the application will launch with
-the new locale. </p>
+but it is not.) Once the Home screen appears again, re-launch your application,
+ and the application launches with the new locale. </p>
 
 <h3 id="test-for-default">Testing for Default Resources</h3>
-<p>Here's how to test whether an application includes every string resource that it needs:  </p>
-<ol><li>Set the emulator or device to a language that your application does not 
-	support. For example, if the application has French strings in 
-	<code>res/values-fr/</code> but does not have any Spanish strings in 
-	<code>res/values-es/</code>, then set the emulator's locale to Spanish. 
-	(You can use the Custom Locale application to set the emulator to an 
-	unsupported locale.)</li>
-	<li>Run the application.</li>  
-<li>If the application shows an error message and a Force Close button, it might 
-	be looking for a string that is not available. Make sure that your 
-	<code>res/values/strings.xml</code> file includes a definition for 
-	every string that the application uses.</li>
-</ol> 
-</p> 
+<p>Here's how to test whether an application includes every string
+resource that it needs:  </p>
+<ol><li>Set the emulator or device to a language that your application does not
+support. For example, if the application has French strings in
+<code>res/values-fr/</code> but does not have any Spanish strings in
+<code>res/values-es/</code>, then set the emulator's locale to Spanish.
+(You can use the Custom Locale application to set the emulator to an
+unsupported locale.)</li>
+<li>Run the application.</li>
+<li>If the application shows an error message and a Force Close button, it might
+be looking for a string that is not available. Make sure that your
+<code>res/values/strings.xml</code> file includes a definition for
+every string that the application uses.</li>
+</ol>
+</p>
 
-<p>If the test is successful, repeat it for other types of 
-	configurations. For example, if the application has a layout file called 
-	<code>res/layout-land/main.xml</code> but does not contain a file called 
-	<code>res/layout-port/main.xml</code>, then set the emulator or device to 
-	portrait orientation and see if the application will run. 
-
-
-
+<p>If the test is successful, repeat it for other types of
+configurations. For example, if the application has a layout file called
+<code>res/layout-land/main.xml</code> but does not contain a file called
+<code>res/layout-port/main.xml</code>, then set the emulator or device to
+portrait orientation and see if the application will run.
diff --git a/docs/html/guide/topics/resources/menu-resource.jd b/docs/html/guide/topics/resources/menu-resource.jd
index b2d6eb3..53ff276 100644
--- a/docs/html/guide/topics/resources/menu-resource.jd
+++ b/docs/html/guide/topics/resources/menu-resource.jd
@@ -117,43 +117,47 @@
           <p>Introduced in API Level 11.</p></dd>
 
         <dt><code>android:showAsAction</code></dt>
-          <dd><em>Keyword</em>. When and how this item should appear as an action item in the Action
-Bar. A menu item can appear as an action item only when the activity includes an {@link
-android.app.ActionBar} (introduced in API Level 11). Valid values:
+          <dd><em>Keyword</em>. When and how this item should appear as an action item in the app
+            bar. A menu item can appear as an action item only when the activity includes an
+            app bar. Valid values:
           <table>
             <tr><th>Value</th><th>Description</th></tr>
-            <tr><td><code>ifRoom</code></td><td>Only place this item in the Action Bar if
-there is room for it.</td></tr>
+            <tr><td><code>ifRoom</code></td><td>Only place this item in the
+            app bar if there is room for it. If there is not room for all
+            the items marked <code>"ifRoom"</code>, the items with the lowest
+            <code>orderInCategory</code> values are displayed as actions, and
+            the remaining items are displayed in the overflow menu.</td></tr>
             <tr><td><code>withText</code></td><td>Also include the title text (defined
 by {@code android:title}) with the action item. You can include this value along with one
 of the others as a flag set, by separating them with a pipe {@code |}.</td></tr>
-            <tr><td><code>never</code></td><td>Never place this item in the Action Bar.</td></tr>
-            <tr><td><code>always</code></td><td>Always place this item in the Action Bar.
+            <tr><td><code>never</code></td><td>Never place this item in the app bar. Instead, list the item in the app bar's overflow
+            menu.</td></tr>
+            <tr><td><code>always</code></td><td>Always place this item in the app bar.
 Avoid using this unless it's critical that the item always appear in the action
 bar. Setting multiple items to always appear as action items can result in them overlapping
-with other UI in the action bar.</td></tr>
+with other UI in the app bar.</td></tr>
             <tr><td><code>collapseActionView</code></td><td>The action view associated
 with this action item (as declared by <code>android:actionLayout</code> or
 <code>android:actionViewClass</code>) is
 collapsible.<br/>Introduced in API Level 14.</td></tr>
           </table>
-          <p>See the <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> developer 
-guide for more information.</p>
+          <p>See the <a href="{@docRoot}training/appbar/index.html">Adding the App Bar</a>
+          training class for more information.</p>
           <p>Introduced in API Level 11.</p>
         </dd>
 
         <dt><code>android:actionLayout</code></dt>
           <dd><em>Layout resource</em>. A layout to use as the action view.
-          <p>See the <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> developer 
-guide for more information.</p>
+          <p>See <a href="{@docRoot}training/appbar/action-views.html">Action
+            Views and Action Providers</a> for more information.</p>
           <p>Introduced in API Level 11.</p></dd>
 
         <dt><code>android:actionViewClass</code></dt>
           <dd><em>Class name</em>. A fully-qualified class name for the {@link android.view.View}
 to use as the action view. For example,
 {@code "android.widget.SearchView"} to use {@link android.widget.SearchView} as an action view.
-          <p>See the <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> developer 
-guide for more information.</p>
+          <p>See <a href="{@docRoot}training/appbar/action-views.html">Action
+            Views and Action Providers</a> for more information.</p>
           <p class="warning"><strong>Warning:</strong> If you obfuscate your code using <a
 href="{@docRoot}tools/help/proguard.html">ProGuard</a> (or a similar tool),
 be sure to exclude the class you specify in this attribute from renaming, because it can break the
@@ -164,8 +168,8 @@
           <dd><em>Class name</em>. A fully-qualified class name for the {@link
 android.view.ActionProvider} to use in place of the action item. For example,
 {@code "android.widget.ShareActionProvider"} to use {@link android.widget.ShareActionProvider}.
-          <p>See the <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> developer
-guide for more information.</p>
+          <p>See <a href="{@docRoot}training/appbar/action-views.html">Action
+            Views and Action Providers</a> for more information.</p>
           <p class="warning"><strong>Warning:</strong> If you obfuscate your code using <a
 href="{@docRoot}tools/help/proguard.html">ProGuard</a> (or a similar tool),
 be sure to exclude the class you specify in this attribute from renaming, because it can break the
@@ -301,4 +305,4 @@
 </dd> <!-- end example -->
 
 
-</dl>
\ No newline at end of file
+</dl>
diff --git a/docs/html/guide/topics/resources/string-resource.jd b/docs/html/guide/topics/resources/string-resource.jd
index 9adf6de..e6193db 100644
--- a/docs/html/guide/topics/resources/string-resource.jd
+++ b/docs/html/guide/topics/resources/string-resource.jd
@@ -1,6 +1,7 @@
 page.title=String Resources
 parent.title=Resource Types
 parent.link=available-resources.html
+page.metaDescription=Explains how to use string resources in your UI.
 @jd:body
 
 <p>A string resource provides text strings for your application
diff --git a/docs/html/guide/topics/search/search-dialog.jd b/docs/html/guide/topics/search/search-dialog.jd
index 1af3e5d..389fc1d 100644
--- a/docs/html/guide/topics/search/search-dialog.jd
+++ b/docs/html/guide/topics/search/search-dialog.jd
@@ -134,8 +134,7 @@
       <li>Or, a {@link android.widget.SearchView} widget
         <p>Using the search widget allows you to put the search box anywhere in your activity.
 Instead of putting it in your activity layout, you should usually use
-{@link android.widget.SearchView} as an 
-<a href="{@docRoot}guide/topics/ui/actionbar.html#ActionView">action view in the Action Bar</a>.</p>
+{@link android.widget.SearchView} as an action view in the app bar.</p>
       </li>
     </ul>
   </li>
@@ -493,10 +492,10 @@
 available from the <a href="{@docRoot}design/downloads/index.html#action-bar-icon-pack">Action Bar
 Icon Pack</a>.</p>
 
-<p class="note"><strong>Note:</strong> If your app uses the <a
-href="{@docRoot}guide/topics/ui/actionbar.html">action bar</a>, then you should not use
+<p class="note"><strong>Note:</strong> If your app uses an <a
+href="{@docRoot}training/appbar/index.html">app bar</a>, then you should not use
 the search dialog for your search interface. Instead, use the <a href="#UsingSearchWidget">search
-widget</a> as a collapsible view in the action bar.</p>
+widget</a> as a collapsible view in the app bar.</p>
 
 <p>You can also enable "type-to-search" functionality, which activates the search dialog when the
 user starts typing on the keyboard&mdash;the keystrokes are inserted into the search dialog. You can
@@ -680,10 +679,9 @@
 
 <p>The {@link android.widget.SearchView} widget is available in Android 3.0 and higher. If
 you're developing your application for Android 3.0 and have decided to use the search widget, we
-recommend that you insert the search widget as an <a
-href="{@docRoot}guide/topics/ui/actionbar.html#ActionView">action view in the Action Bar</a>,
+recommend that you insert the search widget as an action view in the app bar,
 instead of using the search dialog (and instead of placing the search widget in your activity
-layout). For example, figure 2 shows the search widget in the Action Bar.</p>
+layout). For example, figure 2 shows the search widget in the app bar.</p>
 
 <p>The search widget provides the same functionality as the search dialog. It starts the appropriate
 activity when the user executes a search, and it can provide search suggestions and perform voice
@@ -707,8 +705,8 @@
 android.app.SearchManager#getSearchableInfo getSearchableInfo()} on {@link
 android.app.SearchManager}.</p>
 
-<p>For example, if you're using a {@link android.widget.SearchView} as an action view in the <a
-href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a>, you should enable the widget
+<p>For example, if you're using a {@link android.widget.SearchView} as an action view in the
+<a href="{@docRoot}training/appbar/index.html">app bar</a>, you should enable the widget
 during the {@link android.app.Activity#onCreateOptionsMenu onCreateOptionsMenu()} callback:</p>
 
 <pre>
@@ -738,9 +736,8 @@
 documentation for {@link android.widget.SearchView} and its nested interfaces for the
 appropriate event listeners.</p>
 
-<p>For more information about action views in the Action Bar, read the <a
-href="{@docRoot}guide/topics/ui/actionbar.html#ActionView">Action Bar</a> developer guide (which
-includes sample code for adding a search widget as an action view).</p>
+<p>For more information about action views in the Action Bar, see
+<a href="{@docRoot}training/appbar/action-views.html">Action Views and Action Providers</a>.</p>
 
 
 <h3 id="WidgetFeatures">Other search widget features</h3>
diff --git a/docs/html/guide/topics/security/normal-permissions.jd b/docs/html/guide/topics/security/normal-permissions.jd
new file mode 100644
index 0000000..8471dc7
--- /dev/null
+++ b/docs/html/guide/topics/security/normal-permissions.jd
@@ -0,0 +1,174 @@
+page.title=Normal Permissions
+page.tags=permissions,normal
+@jd:body
+
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<!--
+<h2>In this document</h2>
+<ol>
+  <li></li>
+</ol>
+-->
+
+  <h2>Key classes</h2>
+  <ol>
+    <li>{@link android.Manifest.permission}</li>
+  </ol>
+
+  <h2>See Also</h2>
+  <ol>
+    <li><a href="{@docRoot}training/permissions/index.html">Working with System
+        Permissions</a></li>
+  </ol>
+
+<!--
+<h2>See also</h2>
+<ol>
+  <li></li>
+</ol>
+-->
+
+</div>
+</div>
+
+<p>
+  Many permissions are designated as {@link
+  android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL},
+  which indicates that
+  there's no great risk to the user's privacy or security in letting apps have
+  those permissions. For example, users would reasonably want to know whether
+  an app can read their contact information, so users have to grant this
+  permission explicitly. By contrast, there's no great risk in allowing an app
+  to vibrate the device, so that permission is designated as <em>normal.</em>
+</p>
+
+<p>
+  If an app declares in its
+  manifest that it needs a normal permission, the system automatically grants
+  the app
+  that permission at install time. The system does not prompt the user
+  to grant normal
+  permissions, and users cannot revoke these permissions.
+</p>
+
+<p>As of API level 23, the following permissions are classified as {@link
+    android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}:</p>
+
+<ul>
+  <li>{@link android.Manifest.permission#ACCESS_LOCATION_EXTRA_COMMANDS
+  ACCESS_LOCATION_EXTRA_COMMANDS}
+  </li>
+
+  <li>{@link android.Manifest.permission#ACCESS_NETWORK_STATE
+  ACCESS_NETWORK_STATE}
+  </li>
+
+  <li>{@link android.Manifest.permission#ACCESS_NOTIFICATION_POLICY
+  ACCESS_NOTIFICATION_POLICY}
+  </li>
+
+  <li>{@link android.Manifest.permission#ACCESS_WIFI_STATE ACCESS_WIFI_STATE}
+  </li>
+
+  <li>{@link android.Manifest.permission#BLUETOOTH BLUETOOTH}
+  </li>
+
+  <li>{@link android.Manifest.permission#BLUETOOTH_ADMIN BLUETOOTH_ADMIN}
+  </li>
+
+  <li>{@link android.Manifest.permission#BROADCAST_STICKY BROADCAST_STICKY}
+  </li>
+
+  <li>{@link android.Manifest.permission#CHANGE_NETWORK_STATE
+  CHANGE_NETWORK_STATE}
+  </li>
+
+  <li>{@link android.Manifest.permission#CHANGE_WIFI_MULTICAST_STATE
+  CHANGE_WIFI_MULTICAST_STATE}
+  </li>
+
+  <li>{@link android.Manifest.permission#CHANGE_WIFI_STATE CHANGE_WIFI_STATE}
+  </li>
+
+  <li>{@link android.Manifest.permission#DISABLE_KEYGUARD DISABLE_KEYGUARD}
+  </li>
+
+  <li>{@link android.Manifest.permission#EXPAND_STATUS_BAR EXPAND_STATUS_BAR}
+  </li>
+
+  <li>{@link android.Manifest.permission#GET_PACKAGE_SIZE GET_PACKAGE_SIZE}
+  </li>
+
+  <li>{@link android.Manifest.permission#INSTALL_SHORTCUT INSTALL_SHORTCUT}
+  </li>
+
+  <li>{@link android.Manifest.permission#INTERNET INTERNET}
+  </li>
+
+  <li>{@link android.Manifest.permission#KILL_BACKGROUND_PROCESSES
+  KILL_BACKGROUND_PROCESSES}
+  </li>
+
+  <li>{@link android.Manifest.permission#MODIFY_AUDIO_SETTINGS
+  MODIFY_AUDIO_SETTINGS}
+  </li>
+
+  <li>{@link android.Manifest.permission#NFC NFC}
+  </li>
+
+  <li>{@link android.Manifest.permission#READ_SYNC_SETTINGS READ_SYNC_SETTINGS}
+  </li>
+
+  <li>{@link android.Manifest.permission#READ_SYNC_STATS READ_SYNC_STATS}
+  </li>
+
+  <li>{@link android.Manifest.permission#RECEIVE_BOOT_COMPLETED
+  RECEIVE_BOOT_COMPLETED}
+  </li>
+
+  <li>{@link android.Manifest.permission#REORDER_TASKS REORDER_TASKS}
+  </li>
+
+  <li>{@link android.Manifest.permission#REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
+  REQUEST_IGNORE_BATTERY_OPTIMIZATIONS}
+  </li>
+
+  <li>{@link android.Manifest.permission#REQUEST_INSTALL_PACKAGES
+  REQUEST_INSTALL_PACKAGES}
+  </li>
+
+  <li>{@link android.Manifest.permission#SET_ALARM SET_ALARM}
+  </li>
+
+  <li>{@link android.Manifest.permission#SET_TIME_ZONE SET_TIME_ZONE}
+  </li>
+
+  <li>{@link android.Manifest.permission#SET_WALLPAPER SET_WALLPAPER}
+  </li>
+
+  <li>{@link android.Manifest.permission#SET_WALLPAPER_HINTS
+  SET_WALLPAPER_HINTS}
+  </li>
+
+  <li>{@link android.Manifest.permission#TRANSMIT_IR TRANSMIT_IR}
+  </li>
+
+  <li>{@link android.Manifest.permission#UNINSTALL_SHORTCUT UNINSTALL_SHORTCUT}
+  </li>
+
+  <li>{@link android.Manifest.permission#USE_FINGERPRINT USE_FINGERPRINT}
+  </li>
+
+  <li>{@link android.Manifest.permission#VIBRATE VIBRATE}
+  </li>
+
+  <li>{@link android.Manifest.permission#WAKE_LOCK WAKE_LOCK}
+  </li>
+
+  <li>{@link android.Manifest.permission#WRITE_SYNC_SETTINGS
+  WRITE_SYNC_SETTINGS}
+  </li>
+</ul>
diff --git a/docs/html/guide/topics/security/permissions.jd b/docs/html/guide/topics/security/permissions.jd
index 6158e40..f7f70b3 100644
--- a/docs/html/guide/topics/security/permissions.jd
+++ b/docs/html/guide/topics/security/permissions.jd
@@ -1,4 +1,5 @@
 page.title=System Permissions
+page.tags=permissions
 @jd:body
 
 <div id="qv-wrapper">
@@ -10,7 +11,12 @@
 <li><a href="#signing">Application Signing</a></li>
 <li><a href="#userid">User IDs and File Access</a></li>
 <li><a href="#permissions">Using Permissions</a></li>
-<li><a href="#declaring">Declaring and Enforcing Permissions</a>
+<li><a href="#normal-dangerous">Normal and Dangerous Permissions</a>
+  <ol>
+    <li><a href="#perm-groups">Permission Groups</a></li>
+  </ol>
+</li>
+<li><a href="#defining">Defining and Enforcing Permissions</a>
 	<ol>
 	<li><a href="#manifest">...in AndroidManifest.xml</a></li>
 	<li><a href="#broadcasts">...when Sending Broadcasts</a></li>
@@ -18,9 +24,46 @@
 	</ol></li>
 <li><a href="#uri">URI Permissions</a></li>
 </ol>
+
+  <h2>Key classes</h2>
+  <ol>
+    <li>{@link android.Manifest.permission}</li>
+    <li>{@link android.Manifest.permission_group}</li>
+  </ol>
+
+  <h2>See Also</h2>
+  <ol>
+    <li><a href="{@docRoot}training/permissions/index.html">Working with System
+        Permissions</a></li>
+  </ol>
+
+<!--
+  <h2>See also</h2>
+  <ol>
+    <li></li>
+  </ol>
+-->
 </div>
 </div>
 
+<a class="notice-designers"
+    href="https://www.google.com/design/spec/patterns/permissions.html">
+  <div>
+    <h3>Design Patterns</h3>
+    <p>Permissions</p>
+  </div>
+</a>
+
+<!-- video box -->
+<a class="notice-developers-video"
+    href="https://www.youtube.com/watch?v=f17qe9vZ8RM">
+<div>
+    <h3>Video</h3>
+    <p>Google I/O 2015—Android M Permissions: Best Practices for
+      Developers</p>
+</div>
+</a>
+
 <p>Android is a privilege-separated operating system, in which each
 application runs with a distinct system identity (Linux user ID and group
 ID).  Parts of the system are also separated into distinct identities.
@@ -33,7 +76,8 @@
 
 <p>This document describes how application developers can use the
 security features provided by Android.  A more general <a
-href="http://source.android.com/tech/security/index.html"> Android Security
+href="http://source.android.com/tech/security/index.html"
+class="external-link">Android Security
 Overview</a> is provided in the Android Open Source Project.</p>
 
 
@@ -51,12 +95,11 @@
 must explicitly share resources and data. They do this by declaring the
 <em>permissions</em> they need for additional capabilities not provided by
 the basic sandbox. Applications statically declare the permissions they
-require, and the Android system prompts the user for consent at the time the
-application is installed.</p>
+require, and the Android system prompts the user for consent.</p>
 
 <p>The application sandbox does not depend on the technology used to build
 an application. In particular the Dalvik VM is not a security boundary, and
-any app can run native code (see <a href="/sdk/ndk/index.html">the Android
+any app can run native code (see <a href="{@docRoot}tools/sdk/ndk/index.html">the Android
 NDK</a>). All types of applications &mdash; Java, native, and hybrid &mdash;
 are sandboxed in the same way and have the same degree of security from each
 other.</p>
@@ -72,9 +115,9 @@
 for Android applications to use self-signed certificates. The purpose of
 certificates in Android is to distinguish application authors. This allows
 the system to grant or deny applications access to <a
-href="/guide/topics/manifest/permission-element.html#plevel">signature-level
+href="{@docRoot}guide/topics/manifest/permission-element.html#plevel">signature-level
 permissions</a> and to grant or deny an application's <a
-href="/guide/topics/manifest/manifest-element.html#uid">request to be given
+href="{@docRoot}guide/topics/manifest/manifest-element.html#uid">request to be given
 the same Linux identity</a> as another application.</p>
 
 <a name="userid"></a>
@@ -110,15 +153,16 @@
 been set appropriately so any other application can see it.</p>
 
 
-<a name="permissions"></a>
-<h2>Using Permissions</h2>
+<h2 id="permissions">Using Permissions</h2>
 
 <p>A basic Android application has no permissions associated with it by default,
 meaning it cannot do anything that would adversely impact the user experience
 or any data on the device.  To make use of protected features of the device,
-you must include in your <code>AndroidManifest.xml</code> one or more
-<code>{@link android.R.styleable#AndroidManifestUsesPermission &lt;uses-permission&gt;}</code>
-tags declaring the permissions that your application needs.</p>
+you must include one or more
+<a href="{@docRoot}guide/topics/manifest/uses-permission-element.html"
+    ><code>&lt;uses-permission&gt;</code></a>
+tags in your <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">app
+manifest</a>.</p>
 
 <p>For example, an application that needs to monitor incoming SMS messages would
 specify:</p>
@@ -129,14 +173,50 @@
     ...
 &lt;/manifest&gt;</pre>
 
-<p>At application install time, permissions requested by the application are
-granted to it by the package installer, based on checks against the
-signatures of the applications declaring those permissions and/or interaction
-with the user. <em>No</em> checks with the user
-are done while an application is running; the app is either granted a particular
-permission when installed, and can use that feature as desired, or the
-permission is not granted and any attempt to use the feature fails
-without prompting the user.</p>
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3>Permission Levels</h3>
+  <p>For more information about the different protection levels for
+    permissions, see <a href="#normal-dangerous">Normal and Dangerous
+    Permissions</a>.</p>
+</div>
+</div>
+
+<p>
+  If your app lists <em>normal</em> permissions in its manifest (that is,
+  permissions that don't pose much risk to the user's privacy or the device's
+  operation), the system automatically grants those permissions.
+  If your app lists <em>dangerous</em> permissions in its manifest (that is,
+  permissions that could potentially affect the user's privacy or the device's
+  normal operation), the system asks the user to explicitly grant those
+  permissions. The way Android makes the requests depends on the system
+  version, and the system version targeted by your app:
+</p>
+
+<ul>
+  <li>If the device is running Android 6.0 (API level 23) or higher,
+  <em>and</em> the app's <a
+  href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target"
+  ><code>targetSdkVersion</code></a>
+  is 23 or higher, the app requests permissions from the user at run-time.
+  The user can revoke the permissions at any time, so the app needs to
+  check whether it has the permissions every time it runs.
+  For more information about requesting permissions in your app, see the
+  <a href="{@docRoot}training/permissions/index.html">Working with System
+  Permissions</a> training guide.
+  </li>
+
+  <li>If the device is running Android 5.1 (API level 22) or lower, <em>or</em>
+  the app's <a
+  href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target"
+  ><code>targetSdkVersion</code></a>
+  is 22 or lower, the system asks the user to grant the permissions when the
+  user installs the app. If you add a new permission to an updated version of
+  the app, the system asks the user to grant that permission when the user
+  updates the app. Once the user installs the app, the only way they can
+  revoke the permission is by uninstalling the app.
+  </li>
+</ul>
 
 <p>Often times a permission failure will result in a {@link
 java.lang.SecurityException} being thrown back to the application. However,
@@ -146,12 +226,6 @@
 will not receive an exception if there are permission failures. In almost all
 cases, however, a permission failure will be printed to the system log.</p>
 
-<p>However, in a normal user situation (such as when the app is installed
-from Google Play Store), an app cannot be installed if the user does not grant the app
-each of the requested permissions. So you generally don't need to worry about runtime failures
-caused by missing permissions because the mere fact that the app is installed at all
-means that your app has been granted its desired permissions.</p>
-
 <p>The permissions provided by the Android system can be found at {@link
 android.Manifest.permission}. Any application may also define and enforce its
 own permissions, so this is not a comprehensive list of all possible
@@ -171,10 +245,9 @@
 <li>Binding to or starting a service.</li>
 </ul>
 
+<h3 id="auto-adjustments">Automatic permission adjustments</h3>
 
-
-<div class="caution">
-<p><strong>Caution:</strong> Over time,
+<p> Over time,
 new restrictions may be added to the platform such that, in order
 to use certain APIs, your app must request a permission that it previously did not need.
 Because existing apps assume access to those APIs is freely available,
@@ -189,18 +262,283 @@
 added in API level 4 to restrict access to the shared storage space. If your <a
 href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a>
 is 3 or lower, this permission is added to your app on newer versions of Android.</p>
-<p>Beware that if this happens to your app, your app listing on Google Play will show these
-required permissions even though your app might not actually require them.</p>
+
+<p class="caution">
+  <strong>Caution:</strong> If a permission is automatically added to your app,
+  your app listing on Google Play lists these additional permissions even
+  though your app might not actually require them.
+</p>
+
 <p>To avoid this and remove the default permissions you don't need, always update your <a
 href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a>
 to be as high as possible. You can see which permissions were added with each release in the
 {@link android.os.Build.VERSION_CODES} documentation.</p>
 </div>
 
+<h2 id="normal-dangerous">Normal and Dangerous Permissions</h2>
+
+<p>
+  System permissions are divided into several protection levels. The two most
+  important protection levels to know about are <em>normal</em> and
+  <em>dangerous</em> permissions:
+</p>
+
+<ul>
+  <li>
+    <em>Normal</em> permissions cover areas where your app needs to access data
+    or resources outside the app's sandbox, but where there's very little risk
+    to the user's privacy or the operation of other apps. For example,
+    permission to set the time zone is a normal permission. If an app
+    declares that it needs a normal permission, the system automatically grants
+    the permission to the app. For a full listing of the current normal
+    permissions, see <a href="normal-permissions.html">Normal permissions</a>.
+  </li>
+
+  <li>
+    <em>Dangerous</em> permissions cover areas where the app wants data or
+    resources that involve the user's private information, or could potentially
+    affect the user's stored data or the operation of other apps. For example,
+    the ability to read the user's contacts is a dangerous permission. If an
+    app declares that it needs a dangerous permission, the user has to
+    explicitly grant the permission to the app.
+  </li>
+</ul>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+  <h3 id="special_permissions">Special Permissions</h3>
+  <p>
+    There are a couple of permissions that don't behave like normal and
+    dangerous permissions. {@link android.Manifest.permission#SYSTEM_ALERT_WINDOW
+    SYSTEM_ALERT_WINDOW} and {@link android.Manifest.permission#WRITE_SETTINGS
+    WRITE_SETTINGS} are particularly sensitive, so most apps should not use
+    them. If an app needs one of these permissions, it must declare the
+    permission in the manifest, <em>and</em> send an intent requesting the
+    user's authorization. The system responds to the intent by showing a
+    detailed management screen to the user.
+  </p>
+
+  <p>
+    For details on how to request these permissions, see the {@link
+    android.Manifest.permission#SYSTEM_ALERT_WINDOW SYSTEM_ALERT_WINDOW} and
+    {@link android.Manifest.permission#WRITE_SETTINGS WRITE_SETTINGS} reference
+    entries.
+  </p>
+</div>
+</div>
+
+<h3 id="perm-groups">Permission groups</h3>
+
+<p>
+  All dangerous Android system permissions belong to permission groups.
+  If the device is running Android 6.0 (API level 23) and the app's <a href=
+  "{@docRoot}guide/topics/manifest/uses-sdk-element.html#target"
+  ><code>targetSdkVersion</code></a> is 23 or higher, the following system
+  behavior applies when your app requests a dangerous permission:
+</p>
+
+<ul>
+  <li>If an app requests a dangerous permission listed in its manifest, and the app
+  does not currently have any permissions in the permission group, the system
+  shows a dialog box to the user describing the permission group that the app
+  wants access to. The dialog box does not describe the specific permission
+  within that group. For example, if an app requests the {@link
+  android.Manifest.permission#READ_CONTACTS READ_CONTACTS} permission, the
+  system dialog box just says the app needs access to the device's contacts. If
+  the user grants approval, the system gives the app just the permission it
+  requested.
+  </li>
+
+  <li>If an app requests a dangerous permission listed in its manifest, and the app
+  already has another dangerous permission in the same permission group, the
+  system immediately grants the permission without any interaction with the
+  user. For example, if an app had previously requested and been granted the
+  {@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS} permission,
+  and it then requests {@link android.Manifest.permission#WRITE_CONTACTS
+  WRITE_CONTACTS}, the system immediately grants that permission.
+  </li>
+</ul>
+
+<p class="aside">
+  Any permission can belong to a permission group, including normal permissions
+  and permissions defined by your app.
+  However, a permission's group only affects the user experience if the
+  permission is dangerous. You can ignore the permission group for normal
+  permissions.
+</p>
+
+<p>
+  If the device is running Android 5.1 (API level 22) or lower, or the app's
+  <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target"
+  ><code>targetSdkVersion</code></a> is 22 or lower, the system asks the user
+  to grant the permissions at install time. Once again, the system just tells
+  the user what permission <em>groups</em> the app needs, not the individual
+  permissions.
+</p>
+
+<p class="table-caption" id="permission-groups">
+  <strong>Table 1.</strong> Dangerous permissions and permission groups.</p>
+<table>
+  <tr>
+    <th scope="col">Permission Group</th>
+    <th scope="col">Permissions</th>
+  </tr>
+
+  <tr>
+    <td>{@link android.Manifest.permission_group#CALENDAR CALENDAR}</td>
+    <td>
+      <ul>
+        <li>
+          {@link android.Manifest.permission#READ_CALENDAR READ_CALENDAR}
+        </li>
+      </ul>
+      <ul>
+        <li>
+          {@link android.Manifest.permission#WRITE_CALENDAR WRITE_CALENDAR}
+        </li>
+      </ul>
+    </td>
+  </tr>
+
+  <tr>
+    <td>{@link android.Manifest.permission_group#CAMERA CAMERA}</td>
+    <td>
+      <ul>
+        <li>
+          {@link android.Manifest.permission#CAMERA CAMERA}
+        </li>
+      </ul>
+    </td>
+  </tr>
+
+  <tr>
+    <td>{@link android.Manifest.permission_group#CONTACTS CONTACTS}</td>
+    <td>
+      <ul>
+        <li>
+          {@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS}
+        </li>
+        <li>
+          {@link android.Manifest.permission#WRITE_CONTACTS WRITE_CONTACTS}
+        </li>
+        <li>
+          {@link android.Manifest.permission#GET_ACCOUNTS GET_ACCOUNTS}
+        </li>
+      </ul>
+    </td>
+  </tr>
+
+  <tr>
+    <td>{@link android.Manifest.permission_group#LOCATION LOCATION}</td>
+    <td>
+      <ul>
+        <li>
+          {@link android.Manifest.permission#ACCESS_FINE_LOCATION ACCESS_FINE_LOCATION}
+        </li>
+        <li>
+          {@link android.Manifest.permission#ACCESS_COARSE_LOCATION ACCESS_COARSE_LOCATION}
+        </li>
+      </ul>
+    </td>
+  </tr>
+
+  <tr>
+    <td>{@link android.Manifest.permission_group#MICROPHONE MICROPHONE}</td>
+    <td>
+      <ul>
+        <li>
+          {@link android.Manifest.permission#RECORD_AUDIO RECORD_AUDIO}
+        </li>
+      </ul>
+    </td>
+  </tr>
+
+  <tr>
+    <td>{@link android.Manifest.permission_group#PHONE PHONE}</td>
+    <td>
+      <ul>
+        <li>
+          {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
+        </li>
+        <li>
+          {@link android.Manifest.permission#CALL_PHONE CALL_PHONE}
+        </li>
+        <li>
+          {@link android.Manifest.permission#READ_CALL_LOG READ_CALL_LOG}
+        </li>
+        <li>
+          {@link android.Manifest.permission#WRITE_CALL_LOG WRITE_CALL_LOG}
+        </li>
+        <li>
+          {@link android.Manifest.permission#ADD_VOICEMAIL ADD_VOICEMAIL}
+        </li>
+        <li>
+          {@link android.Manifest.permission#USE_SIP USE_SIP}
+        </li>
+        <li>
+          {@link android.Manifest.permission#PROCESS_OUTGOING_CALLS PROCESS_OUTGOING_CALLS}
+        </li>
+      </ul>
+    </td>
+  </tr>
+
+  <tr>
+    <td>{@link android.Manifest.permission_group#SENSORS SENSORS}</td>
+    <td>
+      <ul>
+        <li>
+          {@link android.Manifest.permission#BODY_SENSORS BODY_SENSORS}
+        </li>
+      </ul>
+    </td>
+  </tr>
+
+  <tr>
+    <td>{@link android.Manifest.permission_group#SMS SMS}</td>
+    <td>
+      <ul>
+        <li>
+          {@link android.Manifest.permission#SEND_SMS SEND_SMS}
+        </li>
+        <li>
+          {@link android.Manifest.permission#RECEIVE_SMS RECEIVE_SMS}
+        </li>
+        <li>
+          {@link android.Manifest.permission#READ_SMS READ_SMS}
+        </li>
+        <li>
+          {@link android.Manifest.permission#RECEIVE_WAP_PUSH RECEIVE_WAP_PUSH}
+        </li>
+        <li>
+          {@link android.Manifest.permission#RECEIVE_MMS RECEIVE_MMS}
+        </li>
+      </ul>
+    </td>
+  </tr>
+
+  <tr>
+    <td>
+      {@link android.Manifest.permission_group#STORAGE STORAGE}
+    </td>
+    <td>
+      <ul>
+        <li>
+          {@link android.Manifest.permission#READ_EXTERNAL_STORAGE
+              READ_EXTERNAL_STORAGE}
+        </li>
+        <li>
+          {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE
+              WRITE_EXTERNAL_STORAGE}
+        </li>
+      </ul>
+    </td>
+  </tr>
+
+</table>
 
 
 <a name="declaring"></a>
-<h2>Declaring and Enforcing Permissions</h2>
+<h2 id="defining">Defining and Enforcing Permissions</h2>
 
 <p>To enforce your own permissions, you must first declare them in your
 <code>AndroidManifest.xml</code> using one or more
@@ -439,10 +777,6 @@
 {@link android.content.Context#checkUriPermission Context.checkUriPermission()}
 methods.</p>
 
-
-
-
-
 <div class="next-docs">
 <div class="col-6">
   <h2 class="norule">Continue reading about:</h2>
@@ -467,7 +801,7 @@
     <dd>Information about Android works on different types of devices and an introduction
     to how you can optimize your app for each device or restrict your app's availability
     to different devices.</dd>
-    <dt><a href="{@docRoot}http://source.android.com/devices/tech/security/index.html"
+    <dt><a href="http://source.android.com/devices/tech/security/index.html"
         class="external-link">Android Security Overview</a></dt>
     <dd>A detailed discussion about the Android platform's security model.</dd>
   </dl>
diff --git a/docs/html/guide/topics/sensors/sensors_motion.jd b/docs/html/guide/topics/sensors/sensors_motion.jd
index 393c3c5..2a3c4d6 100644
--- a/docs/html/guide/topics/sensors/sensors_motion.jd
+++ b/docs/html/guide/topics/sensors/sensors_motion.jd
@@ -338,7 +338,7 @@
 should be identical to that of the accelerometer.</p>
 
 <h2 id="sensors-motion-gyro">Using the Gyroscope</h2>
-<p>The gyroscope measures the rate or rotation in rad/s around a device's x, y,
+<p>The gyroscope measures the rate of rotation in rad/s around a device's x, y,
 and z axis. The following code shows you how to get an instance of the default gyroscope:</p>
 
 <pre>
diff --git a/docs/html/guide/topics/ui/actionbar.jd b/docs/html/guide/topics/ui/actionbar.jd
deleted file mode 100644
index c21671f..0000000
--- a/docs/html/guide/topics/ui/actionbar.jd
+++ /dev/null
@@ -1,1501 +0,0 @@
-page.title=Action Bar
-page.tags=actionbar,menu,tabs
-
-@jd:body
-
-
-<a class="notice-designers top" href="{@docRoot}design/patterns/actionbar.html">
-  <div>
-    <h3>Design Guide</h3>
-    <p>Action Bar</p>
-  </div>
-</a>
-
-<div id="qv-wrapper">
-<div id="qv">
-
-  <h2>In this document</h2>
-<ol>
-  <li><a href="#Adding">Adding the Action Bar</a>
-    <ol>
-      <li><a href="#Removing">Removing the action bar</a></li>
-      <li><a href="#Logo">Using a logo instead of an icon</a></li>
-    </ol>
-  </li>
-  <li><a href="#ActionItems">Adding Action Items</a>
-    <ol>
-      <li><a href="#ActionEvents">Handling clicks on action items</a></li>
-      <li><a href="#SplitBar">Using split action bar</a></li>
-    </ol>
-  </li>
-  <li><a href="#Home">Navigating Up with the App Icon</a></li>
-  <li><a href="#ActionView">Adding an Action View</a>
-    <ol>
-      <li><a href="#ActionViewCollapsing">Handling collapsible action views</a></li>
-    </ol>
-  </li>
-  <li><a href="#ActionProvider">Adding an Action Provider</a>
-    <ol>
-      <li><a href="#ShareActionProvider">Using the ShareActionProvider</a></li>
-      <li><a href="#CreatingActionProvider">Creating a custom action provider</a></li>
-    </ol>
-  </li>
-  <li><a href="#Tabs">Adding Navigation Tabs</a></li>
-  <li><a href="#Dropdown">Adding Drop-down Navigation</a></li>
-  <li><a href="#Style">Styling the Action Bar</a>
-    <ol>
-      <li><a href="#GeneralStyles">General appearance</a></li>
-      <li><a href="#ActionItemStyles">Action items</a></li>
-      <li><a href="#NavigationStyles">Navigation tabs</a></li>
-      <li><a href="#DropDownStyles">Drop-down lists</a></li>
-      <li><a href="#StyleExample">Example theme</a></li>
-    </ol>
-  </li>
-</ol>
-
-  <h2>Key classes</h2>
-  <ol>
-    <li>{@link android.support.v7.app.ActionBar}</li>
-    <li>{@link android.view.Menu}</li>
-  </ol>
-
-</div>
-</div>
-
-<p>The action bar is a window feature that identifies the user location, and
-provides user actions and navigation modes. Using the action bar offers your users a
-familiar interface across applications that the system gracefully adapts
-for different screen configurations.</p>
-
-<img src="{@docRoot}images/ui/actionbar@2x.png" alt="" width="428" height="215" />
-<p class="img-caption"><strong>Figure 1.</strong> An action bar that includes the [1] app icon,
-[2] two action items, and [3] action overflow.</p>
-
-<p>The action bar provides several key functions:</p>
-
-<ul>
-  <li>Provides a dedicated space for giving your app an identity and indicating the user's
-  location in the app.</li>
-  <li>Makes important actions prominent and accessible in a predictable way
-  (such as <em>Search</em>).</li>
-  <li>Supports consistent navigation and view switching within apps (with tabs or drop-down
-  lists).</li>
-</ul>
-
-<p>For more information about the action bar's interaction patterns and design guidelines,
-see the <a href="{@docRoot}design/patterns/actionbar.html">Action Bar</a>
-design guide.</p>
-
-<p>The {@link android.app.ActionBar} APIs were first added in Android 3.0 (API level 11) but they
-are also available in the <a href="{@docRoot}tools/support-library/index.html">Support Library</a>
-for compatibility with Android 2.1 (API level 7) and above.</p>
-
-<p><b>This guide focuses on how to use the
-support library's action bar</b>, but if your app supports <em>only</em> Android 3.0 or higher, you
-should use the {@link android.app.ActionBar} APIs in the framework. Most of the APIs are
-the same&mdash;but reside in a different package namespace&mdash;with a few exceptions to method
-names or signatures that are noted in the sections below.</p>
-
-
-<div class="caution">
-<p><strong>Caution:</strong> Be certain you import
-the {@code ActionBar} class (and related APIs) from the appropriate package:</p>
-<ul>
-<li>If supporting API levels <em>lower than</em> 11: <br>
-{@code import android.support.v7.app.ActionBar}</li>
-<li>If supporting <em>only</em> API level 11 and higher: <br>
-{@code import android.app.ActionBar}</li>
-</ul>
-</div>
-
-
-<p class="note"><strong>Note:</strong> If you're looking for information about the <em>contextual
-action bar</em> for displaying contextual action items, see the <a
-href="{@docRoot}guide/topics/ui/menus.html#context-menu">Menu</a> guide.</p>
-
-
-
-<h2 id="Adding">Adding the Action Bar</h2>
-
-<p>As mentioned above, this guide focuses on how to use the {@link
-android.support.v7.app.ActionBar} APIs in the support library. So before you can add the action
-bar, you must set up your project with the <strong>appcompat v7</strong> support library by
-following the instructions in the <a href="{@docRoot}tools/support-library/setup.html">Support
-Library Setup</a>.</p>
-
-<p>Once your project is set up with the support library, here's how to add the action bar:</p>
-<ol>
-  <li>Create your activity by extending {@link android.support.v7.app.ActionBarActivity}.</li>
-  <li>Use (or extend) one of the {@link android.support.v7.appcompat.R.style#Theme_AppCompat
-  Theme.AppCompat} themes for your activity. For example:
-  <pre>&lt;activity android:theme="@style/Theme.AppCompat.Light" ... ></pre>
-  </li>
-</ol>
-
-<p>Now your activity includes the action bar when running on Android 2.1 (API level 7) or higher.
-</p>
-
-<div class="note">
-<p><b>On API level 11 or higher</b></p>
-<p>The action bar is included in all activities that use the
-{@link android.R.style#Theme_Holo Theme.Holo} theme (or one of its
-descendants), which is the default theme when either the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> or
-<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a>
-attribute is set to {@code "11"} or higher. If you don't want the action bar for an
-activity, set the activity theme to {@link android.R.style#Theme_Holo_NoActionBar
-Theme.Holo.NoActionBar}.</p>
-</div>
-
-
-<h3 id="Removing">Removing the action bar</h3>
-
-<p>You can hide the action bar at runtime by calling {@link android.support.v7.app.ActionBar#hide}.
-For example:</p>
-
-<pre>
-ActionBar actionBar = {@link android.support.v7.app.ActionBarActivity#getSupportActionBar()};
-actionBar.hide();
-</pre>
-
-<div class="note">
-<p><b>On API level 11 or higher</b></p>
-<p>Get the {@link android.app.ActionBar} with the {@link android.app.Activity#getActionBar}
-method.</p>
-</div>
-
-<p>When the action bar hides, the system adjusts your layout to fill the
-screen space now available. You can bring the action bar back by calling {@link
-android.support.v7.app.ActionBar#show()}.</p>
-
-<p>Beware that hiding and removing the action bar causes your activity to re-layout in order to
-account for the space consumed by the action bar. If your activity often hides and shows the
-action bar, you might want to enable <em>overlay mode</em>. Overlay mode
-draws the action bar in front of your activity layout, obscuring the top portion. This
-way, your layout remains fixed when the action bar hides and re-appears. To enable overlay mode,
-create a custom theme for your activity and set {@link
-android.support.v7.appcompat.R.attr#windowActionBarOverlay
-windowActionBarOverlay} to {@code true}. For more information, see the section below about <a
-href="#Style">Styling the Action Bar</a>.</p>
-
-
-<h3 id="Logo">Using a logo instead of an icon</h3>
-
-<p>By default, the system uses your application icon in the action bar, as specified by the <a
-href="{@docRoot}guide/topics/manifest/application-element.html#icon">{@code icon}</a>
-attribute in the <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code
-<application>}</a> or <a
-href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
-<activity>}</a> element. However, if you also specify the <a
-href="{@docRoot}guide/topics/manifest/application-element.html#logo">{@code logo}</a>
-attribute, then the action bar uses the logo image instead of the icon.</p>
-
-<p>A logo should usually be wider than the icon, but should not include unnecessary text. You
-should generally use a logo only when it represents your brand in a traditional format that users
-recognize. A good example is the YouTube app's logo&mdash;the logo represents the expected user
-brand, whereas the app's icon is a modified version that conforms to the square requirement
-for the launcher icon.</p>
-
-
-
-
-<h2 id="ActionItems">Adding Action Items</h2>
-
-<div class="figure" style="width:340px">
-  <img src="{@docRoot}images/ui/actionbar-item-withtext.png" width="340" alt="" />
-  <p class="img-caption"><strong>Figure 2.</strong> Action bar with three action buttons and
-the overflow button.</p>
-</div>
-
-<p>The action bar provides users access to the most important action
-items relating to the app's current
-context. Those that appear directly in the action bar with an icon and/or text are known
-as <em>action buttons</em>. Actions that can't fit in the action bar or aren't
-important enough are hidden in the action overflow.
-The user can reveal a list of the other actions by pressing the overflow button
-on the right side (or the device <em>Menu</em> button, if available).</p>
-
-<p>When your activity starts, the system populates the action items by calling your activity's
-{@link android.app.Activity#onCreateOptionsMenu onCreateOptionsMenu()} method. Use this
-method to inflate a <a
-href="{@docRoot}guide/topics/resources/menu-resource.html">menu resource</a> that defines all the
-action items. For example, here's a menu resource defining a couple of menu items:</p>
-
-<p class="code-caption">res/menu/main_activity_actions.xml</p>
-<pre>
-&lt;menu xmlns:android="http://schemas.android.com/apk/res/android" >
-    &lt;item android:id="@+id/action_search"
-          android:icon="@drawable/ic_action_search"
-          android:title="@string/action_search"/&gt;
-    &lt;item android:id="@+id/action_compose"
-          android:icon="@drawable/ic_action_compose"
-          android:title="@string/action_compose" /&gt;
-&lt;/menu&gt;
-</pre>
-
-<p>Then in your activity's {@link android.app.Activity#onCreateOptionsMenu onCreateOptionsMenu()}
-method, inflate the menu resource into the given {@link android.view.Menu}
-to add each item to the action bar:</p>
-
-<pre>
-&#64;Override
-public boolean onCreateOptionsMenu(Menu menu) {
-    // Inflate the menu items for use in the action bar
-    MenuInflater inflater = getMenuInflater();
-    inflater.inflate(R.menu.main_activity_actions, menu);
-    return super.onCreateOptionsMenu(menu);
-}
-</pre>
-
-<p>To request that an item appear directly in the action bar
-as an action button, include {@code
-showAsAction="ifRoom"} in the {@code <item>} tag. For example:</p>
-
-<pre>
-&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"
-      <strong>xmlns:yourapp="http://schemas.android.com/apk/res-auto"</strong> >
-    &lt;item android:id="@+id/action_search"
-          android:icon="@drawable/ic_action_search"
-          android:title="@string/action_search"
-          <strong>yourapp:showAsAction="ifRoom"</strong>  /&gt;
-    ...
-&lt;/menu&gt;
-</pre>
-
-<p>If there's not enough room for the item in the action bar, it will appear in the action
-overflow.</p>
-
-
-<div class="note" id="XmlAttributes">
-<p><strong>Using XML attributes from the support library</strong></p>
-Notice that the {@code showAsAction} attribute above uses a custom namespace defined in the
-{@code <menu>} tag. This is necessary when using any XML attributes defined by the support
-library, because these attributes do not exist in the Android framework on older devices.
-So you must use your own namespace as a prefix for all attributes defined by the support library.
-</p>
-</div>
-
-<p>If your menu item supplies both a title and an icon&mdash;with the {@code title} and
-{@code icon} attributes&mdash;then the action item shows only the icon by default. If you
-want to display the text title, add {@code "withText"} to the {@code showAsAction}
-attribute. For example:</p>
-
-<pre>
-&lt;item yourapp:showAsAction="ifRoom|withText" ... /&gt;
-</pre>
-
-<p class="note"><strong>Note:</strong> The {@code "withText"} value is a <em>hint</em> to the
-action bar that the text title should appear. The action bar will show the title when possible, but
-might not if an icon is available and the action bar is constrained for space.</p>
-
-<p>You should always define the {@code title} for each item even if you don't declare that
-the title appear with the action item, for the following reasons:</p>
-<ul>
-  <li>If there's not enough room in the action bar for the action item, the menu item appears
-in the overflow where only the title appears.</li>
-  <li>Screen readers for sight-impaired users read the menu item's title.</li>
-  <li>If the action item appears with only the icon, a user can long-press the item to reveal a
-tool-tip that displays the action title.</li>
-</ul>
-
-<p>The {@code icon} is optional, but recommended. For icon design recommendations,
-see the <a href="{@docRoot}design/style/iconography.html#action-bar">Iconography</a> design
-guide. You can also download a set of standard action bar icons (such as for Search or Discard)
-from the <a href="{@docRoot}design/downloads/index.html">Downloads</a> page.</p>
-
-<p>You can also use {@code "always"} to declare that an item always appear as an action button.
-However, you <strong>should not</strong> force an item to appear in the action bar this
-way. Doing so can create layout problems on devices with a narrow screen. It's best to instead
-use {@code "ifRoom"} to request that an item appear in the action bar, but allow the system to move
-it into the overflow when there's not enough room. However, it might be necessary to use this value
-if the item includes an <a href="#ActionView">action view</a> that cannot be collapsed and
-must always be visible to provide access to a critical feature.</p>
-
-
-
-
-<h3 id="ActionEvents">Handling clicks on action items</h3>
-
-<p>When the user presses an action, the system calls your activity's {@link
-android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} method. Using the
-{@link android.view.MenuItem} passed to this method, you can identify the action by calling {@link
-android.view.MenuItem#getItemId()}. This returns the unique ID provided by the {@code <item>}
-tag's {@code id} attribute so you can perform the appropriate action. For example:</p>
-
-<pre>
-&#64;Override
-public boolean onOptionsItemSelected(MenuItem item) {
-    // Handle presses on the action bar items
-    switch (item.getItemId()) {
-        case R.id.action_search:
-            openSearch();
-            return true;
-        case R.id.action_compose:
-            composeMessage();
-            return true;
-        default:
-            return super.onOptionsItemSelected(item);
-    }
-}
-</pre>
-
-<p class="note"><strong>Note:</strong> If you inflate menu items from a fragment, via the {@link
-android.app.Fragment} class's {@link android.app.Fragment#onCreateOptionsMenu onCreateOptionsMenu()}
-callback, the system calls {@link
-android.app.Fragment#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} for that
-fragment when the user selects one of those items. However, the activity gets a chance to
-handle the event first, so the system first calls {@link
-android.app.Activity#onOptionsItemSelected(MenuItem) onOptionsItemSelected()} on the activity,
-before calling the same callback for the fragment. To ensure that any fragments in the
-activity also have a chance to handle the callback, always pass the call to the superclass
-as the default behavior instead of returning {@code false} when you do not handle the item.</p>
-
-
-
-<div class="figure" style="width:420px;margin-top:0">
-<img src="{@docRoot}images/ui/actionbar-splitaction@2x.png" alt="" width="420"/>
-<p class="img-caption"><strong>Figure 3.</strong> Mock-ups showing an action bar with
-tabs (left), then with split action bar (middle); and with the app icon and title disabled
-(right).</p>
-</p>
-</div>
-
-<h3 id="SplitBar">Using split action bar</h3>
-
-<p>Split action bar provides a separate
-bar at the bottom of the screen to display all action items when the activity is running on
-a narrow screen (such as a portrait-oriented handset).</p>
-
-<p>Separating the action items this way
-ensures that a reasonable amount of space is available to display all your action
-items on a narrow screen, while leaving room for navigation and title elements at the top.</p>
-
-<p>To enable split action bar when using the support library, you must do two things:</p>
-<ol>
-  <li>Add {@code uiOptions="splitActionBarWhenNarrow"} to each
-<a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code <activity>}</a>
-element or to the
-<a href="{@docRoot}guide/topics/manifest/application-element.html">{@code <application>}</a>
-element. This attribute is understood only by API level 14 and higher (it is ignored
-by older versions).</li>
-  <li>To support older versions, add a <a
-  href="{@docRoot}guide/topics/manifest/meta-data-element.html">{@code <meta-data>}</a>
-  element as a child of each
-  <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code <activity>}</a>
-  element that declares the same value for {@code "android.support.UI_OPTIONS"}.</li>
-</ol>
-
-<p>For example:</p>
-
-<pre>
-&lt;manifest ...>
-    &lt;activity uiOptions="splitActionBarWhenNarrow" ... >
-        &lt;meta-data android:name="android.support.UI_OPTIONS"
-                   android:value="splitActionBarWhenNarrow" />
-    &lt;/activity>
-&lt;/manifest>
-</pre>
-
-
-<p>Using split action bar also allows <a href="#Tabs">navigation tabs</a> to collapse into the
-main action bar if you remove the icon and title (as shown on the right in figure 3).
-To create this effect, disable the action bar
-icon and title with {@link android.support.v7.app.ActionBar#setDisplayShowHomeEnabled
-setDisplayShowHomeEnabled(false)} and {@link
-android.support.v7.app.ActionBar#setDisplayShowTitleEnabled setDisplayShowTitleEnabled(false)}.</p>
-
-
-
-<h2 id="Home">Navigating Up with the App Icon</h2>
-
-<a class="notice-designers" href="{@docRoot}design/patterns/navigation.html">
-  <div>
-    <h3>Design Guide</h3>
-    <p>Navigation with Back and Up</p>
-  </div>
-</a>
-
-<div class="figure" style="width:240px">
-  <img src="{@docRoot}images/ui/actionbar-up.png" width="240" alt="" />
-  <p class="img-caption"><strong>Figure 4.</strong> The <em>Up</em> button in Gmail.</p>
-</div>
-
-<p>Enabling the app icon as an <em>Up</em> button allows the user to navigate your app based
-on the hierarchical relationships between screens. For instance, if screen A displays a list of
-items, and selecting an item leads to screen B, then
-screen B should include the <em>Up</em> button, which returns to screen A.</p>
-
-<p class="note"><strong>Note:</strong> Up navigation is distinct from the back navigation provided
-by the system <em>Back</em> button. The <em>Back</em> button is used to navigate in reverse
-chronological order through the history of screens the user has recently worked with. It is
-generally based on the temporal relationships between screens, rather than the app's hierarchy
-structure (which is the basis for up navigation).</p>
-
-<p>To enable the app icon as an <em>Up</em> button, call {@link
-android.support.v7.app.ActionBar#setDisplayHomeAsUpEnabled setDisplayHomeAsUpEnabled()}.
-For example:</p>
-
-<pre>
-&#64;Override
-protected void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.activity_details);
-
-    ActionBar actionBar = getSupportActionBar();
-    actionBar.setDisplayHomeAsUpEnabled(true);
-    ...
-}
-</pre>
-
-<p>Now the icon in the action bar appears with the <em>Up</em> caret (as shown in figure 4).
-However, it won't do anything by default. To specify the activity to open when the
-user presses <em>Up</em> button, you have two options:</p>
-
-<ul>
-  <li><b>Specify the parent activity in the manifest file.</b>
-    <p>This is the best option when <strong>the parent activity is always the same</strong>. By
-declaring in the manifest which activity is the parent, the action bar automatically performs the
-correct action when the user presses the <em>Up</em> button.</p>
-
-    <p>Beginning in Android 4.1 (API level 16), you can declare the parent with the <a href=
-"{@docRoot}guide/topics/manifest/activity-element.html#parent">{@code parentActivityName}</a>
-attribute in the <a href="{@docRoot}guide/topics/manifest/activity-element.html">{@code
-<activity>}</a> element.</p>
-    <p>To support older devices with the support library, also
-include a <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">{@code
-<meta-data>}</a> element that specifies
-the parent activity as the value for {@code android.support.PARENT_ACTIVITY}. For example:</p>
-<pre>
-&lt;application ... >
-    ...
-    &lt;!-- The main/home activity (has no parent activity) -->
-    &lt;activity
-        android:name="com.example.myfirstapp.MainActivity" ...>
-        ...
-    &lt;/activity>
-    &lt;!-- A child of the main activity -->
-    &lt;activity
-        android:name="com.example.myfirstapp.DisplayMessageActivity"
-        android:label="&#64;string/title_activity_display_message"
-        android:parentActivityName="com.example.myfirstapp.MainActivity" >
-        &lt;!-- Parent activity meta-data to support API level 7+ -->
-        &lt;meta-data
-            android:name="android.support.PARENT_ACTIVITY"
-            android:value="com.example.myfirstapp.MainActivity" />
-    &lt;/activity>
-&lt;/application>
-</pre>
-
-  <p>Once the parent activity is specified in the manifest like this and you enable the <em>Up</em>
-  button with {@link
-android.support.v7.app.ActionBar#setDisplayHomeAsUpEnabled setDisplayHomeAsUpEnabled()}, your work
-is done and the action bar properly navigates up.</p>
-  </li>
-
-
-  <li><strong>Or, override {@link
-android.support.v7.app.ActionBarActivity#getSupportParentActivityIntent()} and {@link
-android.support.v7.app.ActionBarActivity#onCreateSupportNavigateUpTaskStack
-onCreateSupportNavigateUpTaskStack()} in your activity</strong>.</li>
-
-    <p>This is appropriate when <strong>the parent activity may be different</strong> depending
-    on how the user arrived at the current screen. That is, if there are many paths that the user
-    could have taken to reach the current screen, the <em>Up</em> button should navigate
-    backward along the path the user actually followed to get there.</p>
-
-    <p>The system calls {@link
-android.support.v7.app.ActionBarActivity#getSupportParentActivityIntent()} when the user presses
-the <em>Up</em> button while navigating your app (within your app's own task). If the activity that
-should open upon up navigation differs depending on how the user arrived at the current location,
-then you should override this method to return the {@link
-android.content.Intent} that starts the appropriate parent activity.</p>
-
-    <p>The system calls {@link
-android.support.v7.app.ActionBarActivity#onCreateSupportNavigateUpTaskStack
-onCreateSupportNavigateUpTaskStack()} for your activity when the user presses the <em>Up</em>
-button while your activity is running in a task that does <em>not</em> belong to your app. Thus,
-you must use the {@link android.support.v4.app.TaskStackBuilder} passed to this method to construct
-the appropriate back stack that should be synthesized when the user navigates up.</p>
-
-    <p>Even if you override {@link
-android.support.v7.app.ActionBarActivity#getSupportParentActivityIntent()} to specify up navigation
-as the user navigates your app, you can avoid the need to implement {@link
-android.support.v7.app.ActionBarActivity#onCreateSupportNavigateUpTaskStack
-onCreateSupportNavigateUpTaskStack()} by declaring "default" parent activities in the manifest file
-as shown above. Then the default implementation of {@link
-android.support.v7.app.ActionBarActivity#onCreateSupportNavigateUpTaskStack
-onCreateSupportNavigateUpTaskStack()} will synthesize a back stack based on the parent activities
-declared in the manifest.</p>
-
-  </li>
-</ul>
-
-<p class="note"><strong>Note:</strong>
-If you've built your app hierarchy using a series of fragments instead of multiple
-activities, then neither of the above options will work. Instead, to navigate up through your
-fragments, override {@link android.support.v7.app.ActionBarActivity#onSupportNavigateUp()}
-to perform the appropriate fragment transaction&mdash;usually by popping
-the current fragment from the back stack by calling {@link
-android.support.v4.app.FragmentManager#popBackStack()}.</p>
-
-<p>For more information about implementing <em>Up</em> navigation, read
-<a href="{@docRoot}training/implementing-navigation/ancestral.html">Providing Up Navigation</a>.</p>
-
-
-
-<h2 id="ActionView">Adding an Action View</h2>
-
-<div class="figure" style="width:340px">
-<img src="/images/ui/actionbar-searchview@2x.png" alt="" width="340" />
-<p class="img-caption"><strong>Figure 5.</strong> An action bar with a collapsible
-{@link android.support.v7.widget.SearchView}.</p>
-</div>
-
-
-<p>An <em>action view</em> is a widget that appears in the action bar as a substitute for an action
-button. An action view provides fast access to rich actions without changing activities or
-fragments, and without replacing the action bar. For example, if you have an action for Search, you
-can add an action view to
-embeds a {@link android.support.v7.widget.SearchView} widget in the action bar, as shown in figure
-5.</p>
-
-<p>To declare an action view, use either the {@code
-actionLayout} or {@code actionViewClass} attribute to specify either a layout
-resource or widget class to use, respectively. For example, here's how to add
-the {@link android.support.v7.widget.SearchView} widget:</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"
-      xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
-    &lt;item android:id="@+id/action_search"
-          android:title="@string/action_search"
-          android:icon="@drawable/ic_action_search"
-          yourapp:showAsAction="ifRoom|collapseActionView"
-          <b>yourapp:actionViewClass="android.support.v7.widget.SearchView"</b> /&gt;
-&lt;/menu>
-</pre>
-
-<p>Notice that the {@code showAsAction} attribute also includes the {@code "collapseActionView"}
-value. This is optional and declares that the action view should be collapsed into a
-button. (This behavior is explained further in the following section about
-<a href="#ActionViewCollapsing">Handling collapsible action views</a>.)</p>
-
-<p>If you need to configure the action view (such as to add event listeners), you can do so during
-the {@link android.app.Activity#onCreateOptionsMenu onCreateOptionsMenu()} callback. You can
-acquire the action view object by calling the static method {@link
-android.support.v4.view.MenuItemCompat#getActionView MenuItemCompat.getActionView()} and passing it
-the corresponding {@link android.view.MenuItem}. For example, the search widget from the above
-sample is acquired like this:</p>
-
-
-<pre>
-&#64;Override
-public boolean onCreateOptionsMenu(Menu menu) {
-    getMenuInflater().inflate(R.menu.main_activity_actions, menu);
-    MenuItem searchItem = menu.findItem(R.id.action_search);
-    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
-    // Configure the search info and add any event listeners
-    ...
-    return super.onCreateOptionsMenu(menu);
-}
-</pre>
-
-<div class="note">
-<p><b>On API level 11 or higher</b></p>
-<p>Get the action view by calling {@link android.view.MenuItem#getActionView} on the
-corresponding {@link android.view.MenuItem}:</p>
-<pre>menu.findItem(R.id.action_search).getActionView()</pre>
-</div>
-
-<p>For more information about using the search widget, see <a
-href="{@docRoot}guide/topics/search/search-dialog.html">Creating a Search Interface</a>.</p>
-
-
-
-<h3 id="ActionViewCollapsing">Handling collapsible action views</h3>
-
-<p>To preserve the action bar space, you can collapse your action view into an action button.
-When collapsed, the system might place the action
-into the action overflow, but the
-action view still appears in the action bar when the user selects it. You can make your action
-view collapsible by adding {@code "collapseActionView"} to the {@code showAsAction}
-attribute, as shown in the XML above.</p>
-
-<p>Because the system expands the action view when the user selects the action, you
-<em>do not</em> need to respond to the item in the {@link
-android.app.Activity#onOptionsItemSelected onOptionsItemSelected()} callback. The system still calls
-{@link android.app.Activity#onOptionsItemSelected onOptionsItemSelected()}, but if
-you return {@code true} (indicating you've handled the event instead), then the
-action view will <em>not</em> expand.</p>
-
-<p>The system also collapses your action view when the user presses the <em>Up</em> button
-or <em>Back</em> button.</p>
-
-<p>If you need to update your activity based on the visibility of your action view, you can receive
-callbacks when the action is expanded and collapsed by defining an {@link
-android.support.v4.view.MenuItemCompat.OnActionExpandListener OnActionExpandListener} and
-passing it to {@link android.support.v4.view.MenuItemCompat#setOnActionExpandListener
-setOnActionExpandListener()}. For example:</p>
-
-
-<pre>
-&#64;Override
-public boolean onCreateOptionsMenu(Menu menu) {
-    getMenuInflater().inflate(R.menu.options, menu);
-    MenuItem menuItem = menu.findItem(R.id.actionItem);
-    ...
-
-    // When using the support library, the setOnActionExpandListener() method is
-    // static and accepts the MenuItem object as an argument
-    MenuItemCompat.setOnActionExpandListener(menuItem, new OnActionExpandListener() {
-        &#64;Override
-        public boolean onMenuItemActionCollapse(MenuItem item) {
-            // Do something when collapsed
-            return true;  // Return true to collapse action view
-        }
-
-        &#64;Override
-        public boolean onMenuItemActionExpand(MenuItem item) {
-            // Do something when expanded
-            return true;  // Return true to expand action view
-        }
-    });
-}
-</pre>
-
-
-
-
-<h2 id="ActionProvider">Adding an Action Provider</h2>
-
-<div class="figure" style="width:240px">
-  <img src="{@docRoot}images/ui/actionbar-shareaction@2x.png" alt="" width="240" />
-  <p class="img-caption"><strong>Figure 6.</strong> An action bar with
-  {@link android.widget.ShareActionProvider} expanded to show share targets.</p>
-</div>
-
-<p>Similar to an <a href="#ActionView">action view</a>, an <em>action provider</em>
-replaces an action button with a customized layout. However,
-unlike an action view, an action provider takes control of all the action's behaviors
-and an action provider can display a submenu when pressed.</p>
-
-<p>To declare an action provider, supply the {@code actionViewClass} attribute in the
-menu {@code <item>} tag with a fully-qualified class name for an
-{@link android.support.v4.view.ActionProvider}.</p>
-
-<p>You can build your own action provider by extending the {@link
-android.support.v4.view.ActionProvider} class, but Android provides some pre-built action providers
-such as {@link android.support.v7.widget.ShareActionProvider}, which facilitates a "share" action
-by showing a list of possible apps for sharing directly in the action bar (as shown in figure
-6).</p>
-
-<p>Because each {@link android.support.v4.view.ActionProvider} class defines its own action
-behaviors, you don't need to listen for the action in the {@link
-android.app.Activity#onOptionsItemSelected onOptionsItemSelected()} method. If necessary though,
-you can still listen for the click event in the {@link android.app.Activity#onOptionsItemSelected
-onOptionsItemSelected()} method in case you need to simultaneously perform another action. But be
-sure to return {@code false} so that the the action provider still receives the {@link
-android.support.v4.view.ActionProvider#onPerformDefaultAction()} callback to perform its intended
-action.</p>
-
-
-<p>However, if the action provider provides a submenu of actions, then your
-activity does not receive a call to {@link android.app.Activity#onOptionsItemSelected
-onOptionsItemSelected()} when the user opens the list or selects one of the submenu items.</p>
-
-
-
-<h3 id="ShareActionProvider">Using the ShareActionProvider</h3>
-
-<p>To add a "share" action with {@link android.support.v7.widget.ShareActionProvider},
-define the {@code actionProviderClass} for an {@code <item>} tag with
-the {@link android.support.v7.widget.ShareActionProvider} class. For example:</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"
-      xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
-    &lt;item android:id="@+id/action_share"
-          android:title="@string/share"
-          yourapp:showAsAction="ifRoom"
-          <strong>yourapp:actionProviderClass="android.support.v7.widget.ShareActionProvider"</strong>
-          /&gt;
-    ...
-&lt;/menu>
-</pre>
-
-<p>Now the action provider takes control of the action item and handles both
-its appearance and behavior. But you must
-still provide a title for the item to be used when it appears in the action overflow.</p>
-
-<p>The only thing left to do is define
-the {@link android.content.Intent} you want to use for sharing. To do so, edit
-your {@link
-android.app.Activity#onCreateOptionsMenu onCreateOptionsMenu()} method to call {@link
-android.support.v4.view.MenuItemCompat#getActionProvider MenuItemCompat.getActionProvider()}
-and pass it the {@link android.view.MenuItem} holding the action provider. Then call {@link
-android.support.v7.widget.ShareActionProvider#setShareIntent setShareIntent()} on the
-returned {@link android.support.v7.widget.ShareActionProvider} and pass it an
-{@link android.content.Intent#ACTION_SEND} intent with the appropriate content attached.</p>
-
-<p>You should call {@link
-android.support.v7.widget.ShareActionProvider#setShareIntent setShareIntent()} once during {@link
-android.app.Activity#onCreateOptionsMenu onCreateOptionsMenu()} to initialize the share action,
-but because the user context might change, you must update the intent any time the shareable
-content changes by again calling {@link
-android.support.v7.widget.ShareActionProvider#setShareIntent setShareIntent()}.</p>
-
-<p>For example:</p>
-
-<pre>
-private ShareActionProvider mShareActionProvider;
-
-&#64;Override
-public boolean onCreateOptionsMenu(Menu menu) {
-    getMenuInflater().inflate(R.menu.main_activity_actions, menu);
-
-    // Set up ShareActionProvider's default share intent
-    MenuItem shareItem = menu.findItem(R.id.action_share);
-    mShareActionProvider = (ShareActionProvider)
-            MenuItemCompat.getActionProvider(shareItem);
-    mShareActionProvider.setShareIntent(getDefaultIntent());
-
-    return super.onCreateOptionsMenu(menu);
-}
-
-/** Defines a default (dummy) share intent to initialize the action provider.
-  * However, as soon as the actual content to be used in the intent
-  * is known or changes, you must update the share intent by again calling
-  * mShareActionProvider.{@link android.support.v7.widget.ShareActionProvider#setShareIntent setShareIntent()}
-  */
-private Intent getDefaultIntent() {
-    Intent intent = new Intent(Intent.ACTION_SEND);
-    intent.setType("image/*");
-    return intent;
-}
-</pre>
-
-<p>The {@link android.support.v7.widget.ShareActionProvider} now handles all user interaction with
-the item and you <em>do not</em> need to handle click events from the {@link
-android.app.Activity#onOptionsItemSelected onOptionsItemSelected()} callback method.</p>
-
-
-<p>By default, the {@link android.support.v7.widget.ShareActionProvider} retains a ranking for each
-share target based on how often the user selects each one. The share targets used more frequently
-appear at the top of the drop-down list and the target used most often appears directly in the
-action bar as the default share target. By default, the ranking information is saved in a private
-file with a name specified by {@link
-android.support.v7.widget.ShareActionProvider#DEFAULT_SHARE_HISTORY_FILE_NAME}. If you use the
-{@link android.support.v7.widget.ShareActionProvider} or an extension of it for only one type of
-action, then you should continue to use this default history file and there's nothing you need to
-do. However, if you use {@link android.support.v7.widget.ShareActionProvider} or an extension of it
-for multiple actions with semantically different meanings, then each {@link
-android.support.v7.widget.ShareActionProvider} should specify its own history file in order to
-maintain its own history. To specify a different history file for the {@link
-android.support.v7.widget.ShareActionProvider}, call {@link
-android.support.v7.widget.ShareActionProvider#setShareHistoryFileName setShareHistoryFileName()}
-and provide an XML file name (for example, {@code "custom_share_history.xml"}).</p>
-
-
-<p class="note"><strong>Note:</strong> Although the {@link
-android.support.v7.widget.ShareActionProvider} ranks share targets based on frequency of use, the
-behavior is extensible and extensions of {@link android.support.v7.widget.ShareActionProvider} can
-perform different behaviors and ranking based on the history file (if appropriate).</p>
-
-
-
-
-<h3 id="CreatingActionProvider">Creating a custom action provider</h3>
-
-<p>Creating your own action provider allows you to re-use and manage dynamic action item
-behaviors in a self-contained module, rather than handle action item transformations and
-behaviors in your fragment or activity
-code. As shown in the previous section, Android already provides an implementation of {@link
-android.support.v4.view.ActionProvider} for share actions: the {@link
-android.support.v7.widget.ShareActionProvider}.</p>
-
-<p>To create your own action provider for a different action, simply extend the
-{@link android.support.v4.view.ActionProvider} class and implement
-its callback methods as appropriate. Most importantly, you should implement the following:</p>
-
-<dl>
-  <dt>{@link android.support.v4.view.ActionProvider#ActionProvider ActionProvider()}</dt>
-  <dd>This constructor passes you the application {@link android.content.Context}, which you
-should save in a member field to use in the other callback methods.</dd>
-
-  <dt>{@link android.support.v4.view.ActionProvider#onCreateActionView(MenuItem)}</dt>
-  <dd>This is where you define the action view for the item. Use the {@link
-android.content.Context} acquired from the constructor to instantiate a {@link
-android.view.LayoutInflater} and inflate your action view layout from an XML resource, then hook
-up event listeners. For example:
-<pre>
-public View onCreateActionView(MenuItem forItem) {
-    // Inflate the action view to be shown on the action bar.
-    LayoutInflater layoutInflater = LayoutInflater.from(mContext);
-    View view = layoutInflater.inflate(R.layout.action_provider, null);
-    ImageButton button = (ImageButton) view.findViewById(R.id.button);
-    button.setOnClickListener(new View.OnClickListener() {
-        &#064;Override
-        public void onClick(View v) {
-            // Do something...
-        }
-    });
-    return view;
-}
-</pre>
-</dd>
-
-  <dt>{@link android.support.v4.view.ActionProvider#onPerformDefaultAction()}</dt>
-  <dd>The system calls this when the menu item is selected from the action overflow and the
-action provider should perform a default action for the menu item.
-  <p>However, if your action provider provides a submenu, through the {@link
-android.support.v4.view.ActionProvider#onPrepareSubMenu onPrepareSubMenu()} callback, then the
-submenu appears even when the action provider is placed in the action overflow. Thus, {@link
-android.support.v4.view.ActionProvider#onPerformDefaultAction()} is never called when there is a
-submenu.</p>
-
-  <p class="note"><strong>Note:</strong> An activity or a fragment that implements {@link
-android.app.Activity#onOptionsItemSelected onOptionsItemSelected()} can override the action
-provider's default behavior (unless it uses a submenu) by handling the item-selected event (and
-returning <code>true</code>), in which case, the system does not call {@link
-android.support.v4.view.ActionProvider#onPerformDefaultAction()}.</p>
-
-</dd>
-</dl>
-
-<p>For an example extension of {@link android.view.ActionProvider}, see <a
-href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/ActionBarSettingsActionProviderActivity.html"
->ActionBarSettingsActionProviderActivity</a>.</p>
-
-
-
-
-<h2 id="Tabs">Adding Navigation Tabs</h2>
-
-<img src="{@docRoot}images/ui/actionbar-tabs@2x.png" width="760" alt="" />
-<p class="img-caption"><strong>Figure 7.</strong> Action bar tabs on a wide screen.</p>
-
-<a class="notice-designers" href="{@docRoot}design/building-blocks/tabs.html">
-  <div>
-    <h3>Design Guide</h3>
-    <p>Tabs</p>
-  </div>
-</a>
-
-<a class="notice-developers" href="{@docRoot}training/implementing-navigation/lateral.html">
-  <div>
-    <h3>Also read</h3>
-    <p>Creating Swipe Views with Tabs</p>
-  </div>
-</a>
-
-
-<div class="figure" style="width:240px">
-  <img src="{@docRoot}images/ui/actionbar-tabs-stacked@2x.png" width="240" alt="" />
-  <p class="img-caption"><strong>Figure 8.</strong> Tabs on a narrow screen.</p>
-</div>
-
-<p>Tabs in the action bar make it easy for users to explore and switch between different views in
-your app. The tabs provided by the {@link android.support.v7.app.ActionBar} are ideal because they
-adapt to different screen sizes. For example, when the screen is wide enough the tabs appear in the
-action bar alongside the action buttons (such as when on a tablet, shown in figure 7), while when
-on a narrow screen they appear in a separate bar (known as the "stacked action bar", shown in
-figure 8). In some cases, the Android system will instead show your tab items as a drop-down list
-to ensure the best fit in the action bar.</p>
-
-<p>To get started, your layout must include a {@link android.view.ViewGroup} in which you place
-each {@link android.app.Fragment} associated with a tab. Be sure the {@link android.view.ViewGroup}
-has a resource ID so you can reference it from your code and swap the tabs within it.
-</p>
-
-<p>Once you determine where the fragments appear in the layout, the basic procedure to add tabs
-is:</p>
-<ol>
-  <li>Implement the {@link android.support.v7.app.ActionBar.TabListener} interface. This interface
-  provides callbacks for tab events, such as when the user presses one so you can swap the
-  tabs.</li>
-  <li>For each tab you want to add, instantiate an {@link android.support.v7.app.ActionBar.Tab}
-  and set the {@link android.support.v7.app.ActionBar.TabListener} by calling {@link
-  android.support.v7.app.ActionBar.Tab#setTabListener setTabListener()}. Also set the tab's title
-  and with {@link android.app.ActionBar.Tab#setText setText()} (and optionally, an icon with
-  {@link android.app.ActionBar.Tab#setIcon setIcon()}).</li>
-  <li>Then add each tab to the action bar by calling {@link android.support.v7.app.ActionBar#addTab
-  addTab()}.</li>
-</ol>
-
-<p>Notice that the {@link android.support.v7.app.ActionBar.TabListener}
-callback methods don't specify which fragment is associated with the tab, but merely which
-{@link android.support.v7.app.ActionBar.Tab} was selected.
-You must define your own association
-between each {@link android.app.ActionBar.Tab} and the appropriate {@link android.app.Fragment} that
-it represents. There are several ways you
-can define the association, depending on your design.</p>
-
-<p>For example, here's how you might implement the {@link android.app.ActionBar.TabListener}
-such that each tab uses its own instance of the listener:</p>
-<pre>
-public static class TabListener&lt;T extends Fragment> implements ActionBar.TabListener {
-    private Fragment mFragment;
-    private final Activity mActivity;
-    private final String mTag;
-    private final Class&lt;T> mClass;
-
-    /** Constructor used each time a new tab is created.
-      * @param activity  The host Activity, used to instantiate the fragment
-      * @param tag  The identifier tag for the fragment
-      * @param clz  The fragment's Class, used to instantiate the fragment
-      */
-    public TabListener(Activity activity, String tag, Class&lt;T> clz) {
-        mActivity = activity;
-        mTag = tag;
-        mClass = clz;
-    }
-
-    /* The following are each of the {@link android.app.ActionBar.TabListener} callbacks */
-
-    public void onTabSelected(Tab tab, FragmentTransaction ft) {
-        // Check if the fragment is already initialized
-        if (mFragment == null) {
-            // If not, instantiate and add it to the activity
-            mFragment = Fragment.instantiate(mActivity, mClass.getName());
-            ft.add(android.R.id.content, mFragment, mTag);
-        } else {
-            // If it exists, simply attach it in order to show it
-            ft.attach(mFragment);
-        }
-    }
-
-    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
-        if (mFragment != null) {
-            // Detach the fragment, because another one is being attached
-            ft.detach(mFragment);
-        }
-    }
-
-    public void onTabReselected(Tab tab, FragmentTransaction ft) {
-        // User selected the already selected tab. Usually do nothing.
-    }
-}
-</pre>
-
-<p class="caution"><strong>Caution:</strong> You <strong>must not</strong> call {@link
-android.app.FragmentTransaction#commit} for the fragment transaction in each of these
-callbacks&mdash;the system calls it for you and it may throw an exception if you call it yourself.
-You also <strong>cannot</strong> add these fragment transactions to the back stack.</p>
-
-<p>In this example, the listener simply attaches ({@link android.app.FragmentTransaction#attach
-attach()}) a fragment to the activity layout&mdash;or if not instantiated, creates the fragment and
-adds ({@link android.app.FragmentTransaction#add add()}) it to the layout (as a child of the {@code
-android.R.id.content} view group)&mdash;when the respective tab is selected, and detaches ({@link
-android.app.FragmentTransaction#detach detach()}) it when the tab is unselected.</p>
-
-<p>All that remains is to create each {@link android.app.ActionBar.Tab} and add it to the {@link
-android.app.ActionBar}. Additionally, you must call {@link
-android.app.ActionBar#setNavigationMode(int) setNavigationMode(NAVIGATION_MODE_TABS)} to make the
-tabs visible.</p>
-
-<p>For example, the following code adds two tabs using the listener defined above:</p>
-
-<pre>
-&#64;Override
-protected void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    // Notice that setContentView() is not used, because we use the root
-    // android.R.id.content as the container for each fragment
-
-    // setup action bar for tabs
-    ActionBar actionBar = getSupportActionBar();
-    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
-    actionBar.setDisplayShowTitleEnabled(false);
-
-    Tab tab = actionBar.newTab()
-                       .setText(R.string.artist)
-                       .setTabListener(new TabListener&lt;ArtistFragment>(
-                               this, "artist", ArtistFragment.class));
-    actionBar.addTab(tab);
-
-    tab = actionBar.newTab()
-                   .setText(R.string.album)
-                   .setTabListener(new TabListener&lt;AlbumFragment>(
-                           this, "album", AlbumFragment.class));
-    actionBar.addTab(tab);
-}
-</pre>
-
-
-<p>If your activity stops, you should retain the currently selected tab with the <a href=
-"{@docRoot}guide/components/activities.html#SavingActivityState">saved instance state</a> so you
-can open the appropriate tab when the user returns. When it's time to save the state, you can query
-the currently selected tab with {@link
-android.support.v7.app.ActionBar#getSelectedNavigationIndex()}. This returns the index position of
-the selected tab.</p>
-
-
-<p class="caution"><strong>Caution:</strong> It's important that you save the state of each fragment
-so when users switch fragments with the tabs and then return to a previous
-fragment, it looks the way it did when they left. Some of the state is saved by default, but you
-may need to manually save state for customized views. For information about saving the state of your
-fragment, see the <a href="{@docRoot}guide/components/fragments.html">Fragments</a>
-API guide.</p>
-
-<p class="note"><strong>Note:</strong> The above implementation for {@link
-android.support.v7.app.ActionBar.TabListener} is one of several possible techniques. Another popular
-option is to use {@link android.support.v4.view.ViewPager} to manage the fragments so users
-can also use a swipe gesture to switch tabs. In this case, you simply tell the
-{@link android.support.v4.view.ViewPager} the current tab position in the
-{@link android.support.v7.app.ActionBar.TabListener#onTabSelected onTabSelected()} callback.
-For more information, read
-<a href="{@docRoot}training/implementing-navigation/lateral.html"
->Creating Swipe Views with Tabs</a>.</p>
-
-
-
-
-
-<h2 id="Dropdown">Adding Drop-down Navigation</h2>
-
-<div class="figure" style="width:240px">
-  <img src="{@docRoot}images/ui/actionbar-dropdown@2x.png" alt="" width="240" />
-  <p class="img-caption"><strong>Figure 9.</strong> A drop-down navigation list in the
-action bar.</p>
-</div>
-
-<p>As another mode of navigation (or filtering) for your activity, the action bar offers a built
-in drop-down list (also known as a "spinner"). For example, the drop-down list can offer different
-modes by which content in the activity is sorted.</p>
-
-<p>Using the drop-down list is useful when changing the content is important but not necessarily a
-frequent occurrence. In cases where switching the content is more frequent,
-you should use <a href="#Tabs">navigation tabs</a> instead.</p>
-
-
-<p>The basic procedure to enable drop-down navigation is:</p>
-
-<ol>
-  <li>Create a {@link android.widget.SpinnerAdapter} that provides the
-list of selectable items for the drop-down and the layout to use when drawing each item in the
-list.</li>
-  <li>Implement {@link android.support.v7.app.ActionBar.OnNavigationListener} to define the
-  behavior that occurs when the user selects an item from the list.</li>
-  <li>During your activity's {@link android.app.Activity#onCreate
-onCreate()} method, enable the action bar's drop-down list by calling {@link
-android.support.v7.app.ActionBar#setNavigationMode setNavigationMode(NAVIGATION_MODE_LIST)}.
-  </li>
-  <li>Set the callback for the drop-down list with {@link
-android.support.v7.app.ActionBar#setListNavigationCallbacks setListNavigationCallbacks()}.
-For example:
-<pre>
-actionBar.setListNavigationCallbacks(mSpinnerAdapter, mNavigationCallback);
-</pre>
-<p>This method takes your {@link android.widget.SpinnerAdapter} and {@link
-android.support.v7.app.ActionBar.OnNavigationListener}.</p>
-</li>
-</ol>
-
-<p>This procedure is relatively short, but implementing the {@link android.widget.SpinnerAdapter}
-and {@link android.app.ActionBar.OnNavigationListener} is where most of the work is done. There are
-many ways you can implement these to define the functionality for your drop-down navigation and
-implementing various types of {@link android.widget.SpinnerAdapter} is beyond the scope of this
-document (you should refer to the {@link android.widget.SpinnerAdapter} class reference for more
-information). However, below is an example for a {@link android.widget.SpinnerAdapter} and {@link
-android.app.ActionBar.OnNavigationListener} to get you started (click the title to reveal the
-sample).</p>
-
-
-
-<div class="toggle-content closed">
-
-  <h3 id="Spinner"><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt="" />
-    Example SpinnerAdapter and OnNavigationListener
-  </a></h3>
-
-  <div class="toggle-content-toggleme">
-
-<p>{@link android.widget.SpinnerAdapter} is an adapter that provides data for a spinner widget,
-such as the drop-down list in the action bar. {@link android.widget.SpinnerAdapter} is an interface
-that you can implement, but Android includes some useful implementations that you can extend, such
-as {@link android.widget.ArrayAdapter} and {@link
-android.widget.SimpleCursorAdapter}. For example, here's an easy way to create a {@link
-android.widget.SpinnerAdapter} by using {@link android.widget.ArrayAdapter} implementation, which
-uses a string array as the data source:</p>
-
-<pre>
-SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(this,
-        R.array.action_list, android.R.layout.simple_spinner_dropdown_item);
-</pre>
-
-<p>The {@link android.widget.ArrayAdapter#createFromResource createFromResource()} method takes
-three parameters: the application {@link android.content.Context}, the resource ID for the string
-array, and the layout to use for each list item.</p>
-
-<p>A <a href="{@docRoot}guide/topics/resources/string-resource.html#StringArray">string array</a>
-defined in a resource looks like this:</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;resources&gt;
-    &lt;string-array name="action_list"&gt;
-        &lt;item&gt;Mercury&lt;/item&gt;
-        &lt;item&gt;Venus&lt;/item&gt;
-        &lt;item&gt;Earth&lt;/item&gt;
-    &lt;/string-array&gt;
-&lt;/resources&gt;
-</pre>
-
-<p>The {@link android.widget.ArrayAdapter} returned by {@link
-android.widget.ArrayAdapter#createFromResource createFromResource()} is complete and ready for you
-to pass it to {@link android.app.ActionBar#setListNavigationCallbacks setListNavigationCallbacks()}
-(in step 4 from above). Before you do, though, you need to create the {@link
-android.app.ActionBar.OnNavigationListener OnNavigationListener}.</p>
-
-
-<p>Your implementation of {@link android.app.ActionBar.OnNavigationListener} is where you handle
-fragment changes or other modifications to your activity when the user selects an item from the
-drop-down list. There's only one callback method to implement in the listener: {@link
-android.app.ActionBar.OnNavigationListener#onNavigationItemSelected onNavigationItemSelected()}.</p>
-
-<p>The {@link
-android.app.ActionBar.OnNavigationListener#onNavigationItemSelected onNavigationItemSelected()}
-method receives the position of the item in the list and a unique item ID provided by the {@link
-android.widget.SpinnerAdapter}.</p>
-
-<p>Here's an example that instantiates an anonymous implementation of {@link
-android.app.ActionBar.OnNavigationListener OnNavigationListener}, which inserts a {@link
-android.app.Fragment} into the
-layout container identified by {@code R.id.fragment_container}:</p>
-
-<pre>
-mOnNavigationListener = new OnNavigationListener() {
-  // Get the same strings provided for the drop-down's ArrayAdapter
-  String[] strings = getResources().getStringArray(R.array.action_list);
-
-  &#64;Override
-  public boolean onNavigationItemSelected(int position, long itemId) {
-    // Create new fragment from our own Fragment class
-    ListContentFragment newFragment = new ListContentFragment();
-    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
-
-    // Replace whatever is in the fragment container with this fragment
-    // and give the fragment a tag name equal to the string at the position
-    // selected
-    ft.replace(R.id.fragment_container, newFragment, strings[position]);
-
-    // Apply changes
-    ft.commit();
-    return true;
-  }
-};
-</pre>
-
-<p>This instance of {@link android.app.ActionBar.OnNavigationListener OnNavigationListener} is
-complete and you can now call {@link android.app.ActionBar#setListNavigationCallbacks
-setListNavigationCallbacks()} (in step 4), passing the {@link android.widget.ArrayAdapter} and this
-{@link android.app.ActionBar.OnNavigationListener OnNavigationListener}.</p>
-
-<p>In this example, when the user selects an item from the drop-down list, a fragment is added to
-the layout (replacing the current fragment in the {@code R.id.fragment_container} view). The
-fragment added is given a tag that uniquely identifies it, which is the same string used to
-identify the fragment in the drop-down list.</p>
-
-<p>Here's a look at the {@code ListContentFragment} class that defines each fragment in this
-example:</p>
-
-<pre>
-public class ListContentFragment extends Fragment {
-    private String mText;
-
-    &#64;Override
-    public void onAttach(Activity activity) {
-      // This is the first callback received; here we can set the text for
-      // the fragment as defined by the tag specified during the fragment
-      // transaction
-      super.onAttach(activity);
-      mText = getTag();
-    }
-
-    &#64;Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-        // This is called to define the layout for the fragment;
-        // we just create a TextView and set its text to be the fragment tag
-        TextView text = new TextView(getActivity());
-        text.setText(mText);
-        return text;
-    }
-}
-</pre>
-
-  </div><!-- end toggle-content-toggleme -->
-
-</div><!-- end toggle-content -->
-
-
-
-
-
-
-
-<h2 id="Style">Styling the Action Bar</h2>
-
-<p>If you want to implement a visual design that represents your app's brand, the action bar allows
-you to customize each detail of its appearance, including the action bar color, text colors, button
-styles, and more. To do so, you need to use Android's <a href=
-"{@docRoot}guide/topics/ui/themes.html">style and theme</a> framework to restyle the action bar
-using special style properties.</p>
-
-<p class="caution"><strong>Caution:</strong> For all background drawables you provide, be sure to
-use <a href="{@docRoot}guide/topics/graphics/2d-graphics.html#nine-patch">Nine-Patch drawables</a>
-to allow stretching. The nine-patch image should be <em>smaller</em> than 40dp tall and 30dp
-wide.</p>
-
-
-
-<h3 id="GeneralStyles">General appearance</h3>
-
-<dl>
-  <dt>{@link android.R.attr#actionBarStyle
-      actionBarStyle}</dt>
-  <dd>Specifies a style resource that defines various style properties
-  for the action bar.
-      <p>The default for this style for this
-      is {@link android.support.v7.appcompat.R.style#Widget_AppCompat_ActionBar
-      Widget.AppCompat.ActionBar}, which is what you should use as the parent style.</p>
-      <p>Supported styles include:</p>
-    <dl>
-      <dt>{@link android.R.attr#background}</dt>
-        <dd>Defines a drawable resource for the action bar background.</dd>
-      <dt>{@link android.R.attr#backgroundStacked}</dt>
-        <dd>Defines a drawable resource for the stacked action bar
-          (the <a href="#Tabs">tabs</a>).</dd>
-      <dt>{@link android.R.attr#backgroundSplit}</dt>
-        <dd>Defines a drawable resource for the <a href="#SplitBar">split action bar</a>.</dd>
-      <dt>{@link android.R.attr#actionButtonStyle}</dt>
-        <dd>Defines a style resource for action buttons.
-          <p>The default for this style for this
-      is {@link android.support.v7.appcompat.R.style#Widget_AppCompat_ActionButton
-      Widget.AppCompat.ActionButton}, which is what you should use as the parent style.</p>
-        </dd>
-      <dt>{@link android.R.attr#actionOverflowButtonStyle}</dt>
-        <dd>Defines a style resource for overflow action items.
-          <p>The default for this style for this
-      is {@link android.support.v7.appcompat.R.style#Widget_AppCompat_ActionButton_Overflow
-      Widget.AppCompat.ActionButton.Overflow}, which is what you should use as the parent style.</p>
-        </dd>
-      <dt>{@link android.R.attr#displayOptions}</dt>
-        <dd>Defines one or more action bar display options, such as whether to use the app logo,
-        show the activity title, or enable the <em>Up</em> action. See {@link
-        android.R.attr#displayOptions} for all possible values.
-      <dt>{@link android.R.attr#divider}</dt>
-        <dd>Defines a drawable resource for the divider between action items.</dd>
-      <dt>{@link android.R.attr#titleTextStyle}</dt>
-        <dd>Defines a style resource for the action bar title.
-          <p>The default for this style for this
-      is {@link android.support.v7.appcompat.R.style#TextAppearance_AppCompat_Widget_ActionBar_Title
-      TextAppearance.AppCompat.Widget.ActionBar.Title}, which is what you should use as the parent
-      style.</p></dd>
-    </dl>
-  </dd>
-
-  <dt>{@link android.R.attr#windowActionBarOverlay
-      windowActionBarOverlay}</dt>
-  <dd>Declares whether the action bar should overlay the activity layout rather than offset the
-activity's layout position (for example, the Gallery app uses overlay mode). This is
-{@code false} by default.
-  <p>Normally, the action bar requires its own space on the screen and your activity layout fills in
-what's left over. When the action bar is in overlay mode, your activity layout uses all the
-available space and the system draws the action bar on top. Overlay mode can be useful if you want
-your content to keep a fixed size and position when the action bar is hidden and shown. You might
-also like to use it purely as a visual effect, because you can use a semi-transparent background
-for the action bar so the user can still see some of your activity layout behind the action
-bar.</p>
-  <p class="note"><strong>Note:</strong> The {@link android.R.style#Theme_Holo Holo} theme families
-draw the action bar with a semi-transparent background by default. However, you can modify it with
-your own styles and the {@link android.R.style#Theme_DeviceDefault DeviceDefault} theme on
-different devices might use an opaque background by default.</p>
-  <p>When overlay mode is enabled, your activity layout has no awareness of the action bar lying on
-top of it. So, you must be careful not to place any important information or UI components in the
-area overlaid by the action bar. If appropriate, you can refer to the platform's value for {@link
-android.R.attr#actionBarSize} to determine the height of the action bar, by referencing it
-in your XML layout. For example:</p>
-<pre>
-&lt;SomeView
-    ...
-    android:layout_marginTop="?android:attr/actionBarSize" /&gt;
-</pre>
-  <p>You can also retrieve the action bar height at runtime with {@link
-android.app.ActionBar#getHeight()}. This reflects the height of the action bar at the time it's
-called, which might not include the stacked action bar (due to navigation tabs) if called during
-early activity lifecycle methods. To see how you can determine the total height at runtime,
-including the stacked action bar, see the <a href=
-"{@docRoot}resources/samples/HoneycombGallery/src/com/example/android/hcgallery/TitlesFragment.html">
-{@code TitlesFragment}</a> class in the <a href=
-"{@docRoot}resources/samples/HoneycombGallery/index.html">Honeycomb Gallery</a> sample app.</p>
-
-</dd>
-
-</dl>
-
-
-<h3 id="ActionItemStyles">Action items</h3>
-
-<dl>
-  <dt>{@link android.R.attr#actionButtonStyle
-      actionButtonStyle}</dt>
-  <dd>Defines a style resource for the action item buttons.
-      <p>The default for this style for this
-  is {@link android.support.v7.appcompat.R.style#Widget_AppCompat_ActionButton
-  Widget.AppCompat.ActionButton}, which is what you should use as the parent style.</p></dd>
-
-  <dt>{@link android.R.attr#actionBarItemBackground
-      actionBarItemBackground}</dt>
-  <dd>Defines a drawable resource for each action item's background.
-    This should be a <a href="{@docRoot}guide/topics/resources/drawable-resource.html#StateList"
-    >state-list drawable</a> to indicate different selected states.</dd>
-
-  <dt>{@link android.R.attr#itemBackground
-      itemBackground}</dt>
-  <dd>Defines a drawable resource for each action overflow item's background.
-    This should be a <a href="{@docRoot}guide/topics/resources/drawable-resource.html#StateList"
-    >state-list drawable</a> to indicate different selected states.</dd>
-
-  <dt>{@link android.R.attr#actionBarDivider
-      actionBarDivider}</dt>
-  <dd>Defines a drawable resource for the divider between action items.</dd>
-
-  <dt>{@link android.R.attr#actionMenuTextColor
-      actionMenuTextColor}</dt>
-  <dd>Defines a color for text that appears in an action item.</dd>
-
-  <dt>{@link android.R.attr#actionMenuTextAppearance
-      actionMenuTextAppearance}</dt>
-  <dd>Defines a style resource for text that appears in an action item.</dd>
-
-  <dt>{@link android.R.attr#actionBarWidgetTheme
-      actionBarWidgetTheme}</dt>
-  <dd>Defines a theme resource for widgets that are inflated into the action bar as <a
-href="#ActionView">action views</a>.</dd>
-</dl>
-
-
-<h3 id="NavigationStyles">Navigation tabs</h3>
-
-<dl>
-  <dt>{@link android.R.attr#actionBarTabStyle
-      actionBarTabStyle}</dt>
-  <dd>Defines a style resource for tabs in the action bar.
-      <p>The default for this style for this
-  is {@link android.support.v7.appcompat.R.style#Widget_AppCompat_ActionBar_TabView
-  Widget.AppCompat.ActionBar.TabView}, which is what you should use as the parent style.</p></dd>
-
-  <dt>{@link android.R.attr#actionBarTabBarStyle
-      actionBarTabBarStyle}</dt>
-  <dd>Defines a style resource for the thin bar that appears below the navigation tabs.
-      <p>The default for this style for this
-  is {@link android.support.v7.appcompat.R.style#Widget_AppCompat_ActionBar_TabBar
-  Widget.AppCompat.ActionBar.TabBar}, which is what you should use as the parent style.</p></dd>
-
-  <dt>{@link android.R.attr#actionBarTabTextStyle
-      actionBarTabTextStyle}</dt>
-  <dd>Defines a style resource for text in the navigation tabs.
-      <p>The default for this style for this
-  is {@link android.support.v7.appcompat.R.style#Widget_AppCompat_ActionBar_TabText
-  Widget.AppCompat.ActionBar.TabText}, which is what you should use as the parent style.</p></dd>
-</dl>
-
-
-<h3 id="DropDownStyles">Drop-down lists</h3>
-
-<dl>
-  <dt>{@link android.R.attr#actionDropDownStyle
-      actionDropDownStyle}</dt>
-  <dd>Defines a style for the drop-down navigation (such as the background and text styles).
-      <p>The default for this style for this
-  is {@link android.support.v7.appcompat.R.style#Widget_AppCompat_Spinner_DropDown_ActionBar
-  Widget.AppCompat.Spinner.DropDown.ActionBar}, which is what you should use as the parent
-  style.</p></dd>
-</dl>
-
-
-<h3 id="StyleExample">Example theme</h3>
-
-<p>Here's an example that defines a custom theme for an activity, {@code CustomActivityTheme},
-that includes several styles to customize the action bar.</p>
-
-<p>Notice that there are two versions for each action bar style property. The first one
-includes the {@code android:} prefix on the property name to support API levels 11 and higher
-that include these properties in the framework. The second version does <em>not</em>
-include the {@code android:} prefix and is for older versions of the platform, on which
-the system uses the style property from the support library. The effect for each is the same.</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;resources>
-    &lt;!-- the theme applied to the application or activity -->
-    &lt;style name="CustomActionBarTheme"
-           parent="&#64;style/Theme.AppCompat.Light">
-        &lt;item name="android:actionBarStyle">&#64;style/MyActionBar&lt;/item>
-        &lt;item name="android:actionBarTabTextStyle">&#64;style/TabTextStyle&lt;/item>
-        &lt;item name="android:actionMenuTextColor">&#64;color/actionbar_text&lt;/item>
-
-        &lt;!-- Support library compatibility -->
-        &lt;item name="actionBarStyle">&#64;style/MyActionBar&lt;/item>
-        &lt;item name="actionBarTabTextStyle">&#64;style/TabTextStyle&lt;/item>
-        &lt;item name="actionMenuTextColor">&#64;color/actionbar_text&lt;/item>
-    &lt;/style>
-
-    &lt;!-- general styles for the action bar -->
-    &lt;style name="MyActionBar"
-           parent="&#64;style/Widget.AppCompat.ActionBar">
-        &lt;item name="android:titleTextStyle">&#64;style/TitleTextStyle&lt;/item>
-        &lt;item name="android:background">&#64;drawable/actionbar_background&lt;/item>
-        &lt;item name="android:backgroundStacked">&#64;drawable/actionbar_background&lt;/item>
-        &lt;item name="android:backgroundSplit">&#64;drawable/actionbar_background&lt;/item>
-
-        &lt;!-- Support library compatibility -->
-        &lt;item name="titleTextStyle">&#64;style/TitleTextStyle&lt;/item>
-        &lt;item name="background">&#64;drawable/actionbar_background&lt;/item>
-        &lt;item name="backgroundStacked">&#64;drawable/actionbar_background&lt;/item>
-        &lt;item name="backgroundSplit">&#64;drawable/actionbar_background&lt;/item>
-    &lt;/style>
-
-    &lt;!-- action bar title text -->
-    &lt;style name="TitleTextStyle"
-           parent="&#64;style/TextAppearance.AppCompat.Widget.ActionBar.Title">
-        &lt;item name="android:textColor">&#64;color/actionbar_text&lt;/item>
-    &lt;/style>
-
-    &lt;!-- action bar tab text -->
-    &lt;style name="TabTextStyle"
-           parent="&#64;style/Widget.AppCompat.ActionBar.TabText">
-        &lt;item name="android:textColor">&#64;color/actionbar_text&lt;/item>
-    &lt;/style>
-&lt;/resources>
-
-</pre>
-
-<p>In your manifest file, you can apply the theme to your entire app:</p>
-
-<pre>
-&lt;application android:theme="&#64;style/CustomActionBarTheme" ... />
-</pre>
-
-<p>Or to individual activities:</p>
-
-<pre>
-&lt;activity android:theme="&#64;style/CustomActionBarTheme" ... />
-</pre>
-
-
-<p class="caution"><strong>Caution:</strong> Be certain that each theme and style declares a parent
-theme in the {@code <style>} tag, from which it inherits all styles not explicitly declared
-by your theme. When modifying the action bar, using a parent theme is important so that you can
-simply override the action bar styles you want to change without re-implementing the styles you
-want to leave alone (such as text size or padding in action items).</p>
-
-<p>For more information about using style and theme resources in your application, read <a
-href="{@docRoot}guide/topics/ui/themes.html">Styles and Themes</a>.</p>
-
-
-
diff --git a/docs/html/guide/topics/ui/custom-components.jd b/docs/html/guide/topics/ui/custom-components.jd
old mode 100644
new mode 100755
index b146098..b7249c5
--- a/docs/html/guide/topics/ui/custom-components.jd
+++ b/docs/html/guide/topics/ui/custom-components.jd
@@ -451,7 +451,7 @@
 perfect example, and the APIs for doing this might change from this early
 preview, but it does demonstrate the principles.</p>
 <p>If you haven't done so already, import the 
-NotePad sample into Eclipse (or
+NotePad sample into Android Studio (or
 just look at the source using the link provided). In particular look at the definition of
 <code>MyEditText</code> in the <a
 href="{@docRoot}resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html">NoteEditor.java</a>
diff --git a/docs/html/guide/topics/ui/declaring-layout.jd b/docs/html/guide/topics/ui/declaring-layout.jd
old mode 100644
new mode 100755
index ab105fd..2d4134d
--- a/docs/html/guide/topics/ui/declaring-layout.jd
+++ b/docs/html/guide/topics/ui/declaring-layout.jd
@@ -54,9 +54,6 @@
 <div class="sidebox-wrapper">
 <div class="sidebox">
   <ul>
-  <li>The <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT
-  Plugin for Eclipse</a> offers a layout preview of your XML &mdash;
-  with the XML file opened, select the <strong>Layout</strong> tab.</li>
   <li>You should also try the
   <a href="{@docRoot}tools/debugging/debugging-ui.html#hierarchyViewer">Hierarchy Viewer</a> tool,
   for debugging layouts &mdash; it reveals layout property values,
@@ -76,8 +73,7 @@
 <code>EditText.setText()</code>. </p>
 
 <p class="note"><strong>Tip:</strong> Learn more about different layout types in <a href="{@docRoot}guide/topics/ui/layout-objects.html">Common
-Layout Objects</a>. There are also a collection of tutorials on building various layouts in the
-<a href="{@docRoot}resources/tutorials/views/index.html">Hello Views</a> tutorial guide.</p>
+Layout Objects</a>.</p>
 
 <h2 id="write">Write the XML</h2>
 
diff --git a/docs/html/guide/topics/ui/drag-drop.jd b/docs/html/guide/topics/ui/drag-drop.jd
index 9d8aa9b..4eb54f2 100644
--- a/docs/html/guide/topics/ui/drag-drop.jd
+++ b/docs/html/guide/topics/ui/drag-drop.jd
@@ -643,7 +643,7 @@
         // Defines a callback that sends the drag shadow dimensions and touch point back to the
         // system.
         &#64;Override
-        public void onProvideShadowMetrics (Point size, Point touch)
+        public void onProvideShadowMetrics (Point size, Point touch) {
             // Defines local variables
             private int width, height;
 
diff --git a/docs/html/guide/topics/ui/index.jd b/docs/html/guide/topics/ui/index.jd
index f342b06..0725eb7 100644
--- a/docs/html/guide/topics/ui/index.jd
+++ b/docs/html/guide/topics/ui/index.jd
@@ -1,6 +1,6 @@
 page.title=User Interface
 page.landing=true
-page.landing.intro=Your app's user interface is everything that the user can see and interact with. Android provides a variety of pre-build UI components such as structured layout objects and UI controls that allow you to build the graphical user interface for your app. Android also provides other UI modules for special interfaces such as dialogs, notifications, and menus.  
+page.landing.intro=Your app's user interface is everything that the user can see and interact with. Android provides a variety of pre-built UI components such as structured layout objects and UI controls that allow you to build the graphical user interface for your app. Android also provides other UI modules for special interfaces such as dialogs, notifications, and menus.  
 page.landing.image=images/ui/ui_index.png
 page.landing.next=overview.html
 
@@ -10,7 +10,7 @@
 
   <div class="col-6">
     <h3>Blog Articles</h3>
-    
+
     <a href="http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html">
       <h4>Say Goodbye to the Menu Button</h4>
       <p>As Ice Cream Sandwich rolls out to more devices, it’s important that you begin to migrate
@@ -35,7 +35,7 @@
 
   <div class="col-6">
     <h3>Training</h3>
-    
+
     <a href="http://developer.android.com/training/implementing-navigation/index.html">
       <h4>Implementing Effective Navigation</h4>
       <p>This class shows you how to plan out the high-level screen hierarchy for your application
diff --git a/docs/html/guide/topics/ui/layout/linear.jd b/docs/html/guide/topics/ui/layout/linear.jd
index f4babfe0..7441782 100644
--- a/docs/html/guide/topics/ui/layout/linear.jd
+++ b/docs/html/guide/topics/ui/layout/linear.jd
@@ -58,7 +58,7 @@
 href="{@docRoot}reference/android/widget/LinearLayout.LayoutParams.html#attr_android:layout_weight"
 >{@code android:layout_weight}</a> attribute.
 This attribute assigns an "importance" value to a view in
-terms of how much space is should occupy on the screen. A larger weight value allows it to expand
+terms of how much space it should occupy on the screen. A larger weight value allows it to expand
 to fill any remaining space in the parent view. 
 Child views can specify a weight value, and then any remaining space in the view group is
 assigned to children in the proportion of their declared weight. Default
diff --git a/docs/html/guide/topics/ui/menus.jd b/docs/html/guide/topics/ui/menus.jd
index 2c6d0b2..11e84f1 100644
--- a/docs/html/guide/topics/ui/menus.jd
+++ b/docs/html/guide/topics/ui/menus.jd
@@ -47,7 +47,7 @@
 
   <h2>See also</h2>
   <ol>
-    <li><a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a></li>
+    <li><a href="{@docRoot}training/appbar/index.html">Adding the App Bar</a></li>
     <li><a href="{@docRoot}guide/topics/resources/menu-resource.html">Menu Resource</a></li>
     <li><a
 href="http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html">Say
@@ -62,7 +62,7 @@
 
 <p>Beginning with Android 3.0 (API level 11), Android-powered devices are no longer required to
 provide a dedicated <em>Menu</em> button. With this change, Android apps should migrate away from a
-dependence on the traditional 6-item menu panel and instead provide an action bar to present common
+dependence on the traditional 6-item menu panel and instead provide an app bar to present common
 user actions.</p>
 
 <p>Although the design and user experience for some menu items have changed, the semantics to define
@@ -71,14 +71,14 @@
 versions of Android:</p>
 
 <dl>
-  <dt><strong>Options menu and action bar</strong></dt>
+  <dt><strong>Options menu and app bar</strong></dt>
     <dd>The <a href="#options-menu">options menu</a> is the primary collection of menu items for an
 activity. It's where you should place actions that have a global impact on the app, such as
 "Search," "Compose email," and "Settings."
   <p>If you're developing for Android 2.3 or lower, users can
 reveal the options menu panel by pressing the <em>Menu</em> button.</p>
-  <p>On Android 3.0 and higher, items from the options menu are presented by the <a
-href="{@docRoot}guide/topics/ui/actionbar.html">action bar</a> as a combination of on-screen action
+  <p>On Android 3.0 and higher, items from the options menu are presented by the
+  app bar as a combination of on-screen action
 items and overflow options. Beginning with Android 3.0, the <em>Menu</em> button is deprecated (some
 devices
 don't have one), so you should migrate toward using the action bar to provide access to actions and
@@ -141,7 +141,7 @@
 element may contain a nested <code>&lt;menu></code> element in order to create a submenu.</dd>
     
   <dt><code>&lt;group></code></dt>
-    <dd>An optional, invisible container for {@code <item>} elements. It allows you to
+    <dd>An optional, invisible container for {@code &lt;item&gt;} elements. It allows you to
 categorize menu items so they share properties such as active state and visibility. For more
 information, see the section about <a href="#groups">Creating Menu Groups</a>.</dd>
 </dl>
@@ -166,23 +166,23 @@
 
 <dl>
   <dt>{@code android:id}</dt>
-    <dd>A resource ID that's unique to the item, which allows the application can recognize the item
+    <dd>A resource ID that's unique to the item, which allows the application to recognize the item
 when the user selects it.</dd>
   <dt>{@code android:icon}</dt>
     <dd>A reference to a drawable to use as the item's icon.</dd>
   <dt>{@code android:title}</dt>
     <dd>A reference to a string to use as the item's title.</dd>
   <dt>{@code android:showAsAction}</dt>
-    <dd>Specifies when and how this item should appear as an action item in the <a
-href="{@docRoot}guide/topics/ui/actionbar.html">action bar</a>.</dd>
+    <dd>Specifies when and how this item should appear as an action item in the
+      app bar.</dd>
 </dl>
 
 <p>These are the most important attributes you should use, but there are many more available.
 For information about all the supported attributes, see the <a
 href="{@docRoot}guide/topics/resources/menu-resource.html">Menu Resource</a> document.</p>
 
-<p>You can add a submenu to an item in any menu (except a submenu) by adding a {@code <menu>}
-element as the child of an {@code <item>}. Submenus are useful when your application has a lot
+<p>You can add a submenu to an item in any menu (except a submenu) by adding a {@code &lt;menu&gt;}
+element as the child of an {@code &lt;item&gt;}. Submenus are useful when your application has a lot
 of functions that can be organized into topics, like items in a PC application's menu bar (File,
 Edit, View, etc.). For example:</p>
 
@@ -233,25 +233,20 @@
 <em>More</em>.</li>
 
   <li>If you've developed your application for <strong>Android 3.0 (API level 11) and
-higher</strong>, items from the options menu are available in the <a
-href="{@docRoot}guide/topics/ui/actionbar.html">action bar</a>. By default, the system
+higher</strong>, items from the options menu are available in the 
+app bar. By default, the system
 places all items in the action overflow, which the user can reveal with the action overflow icon on
-the right side of the action bar (or by pressing the device <em>Menu</em> button, if available). To
+the right side of the app bar (or by pressing the device <em>Menu</em> button, if available). To
 enable
-quick access to important actions, you can promote a few items to appear in the action bar by adding
-{@code android:showAsAction="ifRoom"} to the corresponding {@code <item>} elements (see figure
-2). <p>For more information about action items and other action bar behaviors, see the <a
-href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> guide. </p>
-<p class="note"><strong>Note:</strong> Even if you're <em>not</em> developing for Android 3.0 or
-higher, you can build your own action bar layout for a similar effect. For an example of how you can
-support older versions of Android with an action bar, see the <a
-href="{@docRoot}resources/samples/ActionBarCompat/index.html">Action Bar Compatibility</a>
-sample.</p>
+quick access to important actions, you can promote a few items to appear in the app bar by adding
+{@code android:showAsAction="ifRoom"} to the corresponding {@code &lt;item&gt;} elements (see figure
+2). <p>For more information about action items and other app bar behaviors, see the <a
+href="{@docRoot}training/appbar/index.html">Adding the App Bar</a> training class. </p>
 </li>
 </ul>
 
 <img src="{@docRoot}images/ui/actionbar.png" alt="" />
-<p class="img-caption"><strong>Figure 2.</strong> Action bar from the <a
+<p class="img-caption"><strong>Figure 2.</strong> App bar from the <a
 href="{@docRoot}resources/samples/HoneycombGallery/index.html">Honeycomb Gallery</a> app, showing
 navigation tabs and a camera action item (plus the action overflow button).</p>
 
@@ -260,7 +255,7 @@
 declare items for the options menu, they are combined in the UI. The activity's items appear
 first, followed by those of each fragment in the order in which each fragment is added to the
 activity. If necessary, you can re-order the menu items with the {@code android:orderInCategory}
-attribute in each {@code <item>} you need to move.</p>
+attribute in each {@code &lt;item&gt;} you need to move.</p>
 
 <p>To specify the options menu for an activity, override {@link
 android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} (fragments provide their
@@ -285,13 +280,13 @@
 android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} to create the options menu
 when the user opens the menu for the first time. If you've developed for Android 3.0 and higher, the
 system calls {@link android.app.Activity#onCreateOptionsMenu(Menu) onCreateOptionsMenu()} when
-starting the activity, in order to show items to the action bar.</p>
+starting the activity, in order to show items to the app bar.</p>
 
 
 
 <h3 id="RespondingOptionsMenu">Handling click events</h3>
 
-<p>When the user selects an item from the options menu (including action items in the action bar),
+<p>When the user selects an item from the options menu (including action items in the app bar),
 the system calls your activity's {@link android.app.Activity#onOptionsItemSelected(MenuItem)
 onOptionsItemSelected()} method. This method passes the {@link android.view.MenuItem} selected. You
 can identify the item by calling {@link android.view.MenuItem#getItemId()}, which returns the unique
@@ -370,7 +365,7 @@
 button).</p>
 
 <p>On Android 3.0 and higher, the options menu is considered to always be open when menu items are
-presented in the action bar. When an event occurs and you want to perform a menu update, you must
+presented in the app bar. When an event occurs and you want to perform a menu update, you must
 call {@link android.app.Activity#invalidateOptionsMenu invalidateOptionsMenu()} to request that the
 system call {@link android.app.Activity#onPrepareOptionsMenu(Menu) onPrepareOptionsMenu()}.</p>
 
@@ -505,8 +500,8 @@
 or selects the <em>Done</em> action on the left side of the bar.</p>
 
 <p class="note"><strong>Note:</strong> The contextual action bar is not necessarily
-associated with the <a href="{@docRoot}guide/topics/ui/actionbar.html">action bar</a>. They operate
-independently, even though the contextual action bar visually overtakes the action bar
+associated with the app bar. They operate
+independently, even though the contextual action bar visually overtakes the app bar
 position.</p>
 
 <p>If you're developing for Android 3.0 (API level 11) or higher, you
@@ -833,7 +828,7 @@
 android.view.Menu#setGroupCheckable(int,boolean,boolean) setGroupCheckable()}</li>
 </ul>
 
-<p>You can create a group by nesting {@code <item>} elements inside a {@code <group>}
+<p>You can create a group by nesting {@code &lt;item&gt;} elements inside a {@code &lt;group&gt;}
 element in your menu resource or by specifying a group ID with the {@link
 android.view.Menu#add(int,int,int,int) add()} method.</p>
 
@@ -882,8 +877,8 @@
 each time the state changes.</p>
 
 <p>You can define the checkable behavior for individual menu items using the {@code
-android:checkable} attribute in the {@code <item>} element, or for an entire group with
-the {@code android:checkableBehavior} attribute in the {@code <group>} element. For
+android:checkable} attribute in the {@code &lt;item&gt;} element, or for an entire group with
+the {@code android:checkableBehavior} attribute in the {@code &lt;group&gt;} element. For
 example, all items in this menu group are checkable with a radio button:</p>
 
 <pre>
@@ -909,7 +904,7 @@
 </dl>
 
 <p>You can apply a default checked state to an item using the {@code android:checked} attribute in
-the {@code <item>} element and change it in code with the {@link
+the {@code &lt;item&gt;} element and change it in code with the {@link
 android.view.MenuItem#setChecked(boolean) setChecked()} method.</p>
 
 <p>When a checkable item is selected, the system calls your respective item-selected callback method
diff --git a/docs/html/guide/topics/ui/notifiers/notifications.jd b/docs/html/guide/topics/ui/notifiers/notifications.jd
index 976115e..da10dbc 100644
--- a/docs/html/guide/topics/ui/notifiers/notifications.jd
+++ b/docs/html/guide/topics/ui/notifiers/notifications.jd
@@ -107,7 +107,7 @@
 {@link android.support.v4.app.NotificationCompat.Builder#build NotificationCompat.Builder.build()},
 which returns a {@link android.app.Notification} object containing your specifications. To issue the
 notification, you pass the {@link android.app.Notification} object to the system by calling
-{@link android.app.NotificationManager#notify NotificationManager.notify()}.</p>
+{@link android.app.NotificationManager#notify(int, android.app.Notification) NotificationManager.notify()}.</p>
 
 <h3 id="Required">Required notification contents</h3>
 <p>
diff --git a/docs/html/guide/topics/ui/overview.jd b/docs/html/guide/topics/ui/overview.jd
index 41f7cc7..85c5756 100644
--- a/docs/html/guide/topics/ui/overview.jd
+++ b/docs/html/guide/topics/ui/overview.jd
@@ -67,7 +67,7 @@
 android.view.ViewGroup} objects. Android provides several app components that offer
 a standard UI layout for which you simply need to define the content. These UI components each
 have a unique set of APIs that are described in their respective documents, such as <a
-href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a>, <a
+href="{@docRoot}training/appbar/index.html">Adding the App Bar</a>, <a
 href="{@docRoot}guide/topics/ui/dialogs.html">Dialogs</a>, and <a
 href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Status Notifications</a>.</p>
 
diff --git a/docs/html/guide/webapps/debugging.jd b/docs/html/guide/webapps/debugging.jd
old mode 100644
new mode 100755
index 3c95fc2..a74797d
--- a/docs/html/guide/webapps/debugging.jd
+++ b/docs/html/guide/webapps/debugging.jd
@@ -53,9 +53,7 @@
 those written using JavaScript {@code console} APIs.</p>
   <p>To run logcat and view messages, execute
 {@code adb logcat} from your Android SDK {@code tools/} directory, or, from DDMS, select
-<strong>Device > Run logcat</strong>. When using the <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT
-plugin for Eclipse</a>, you can also view logcat messages by opening the Logcat view, available from
-<strong>Window > Show View > Other > Android > Logcat</strong>.</p>
+<strong>Device > Run logcat</strong>.</p>
   <p>See <a href="{@docRoot}tools/debugging/debugging-log.html">Debugging</a>
   for more information about <codelogcat</code>.</p>
 </div>
diff --git a/docs/html/images/ads_hero@2x.jpg b/docs/html/images/ads_hero@2x.jpg
new file mode 100644
index 0000000..e202943
--- /dev/null
+++ b/docs/html/images/ads_hero@2x.jpg
Binary files differ
diff --git a/docs/html/images/ads_hero_17@2x.jpg b/docs/html/images/ads_hero_17@2x.jpg
new file mode 100644
index 0000000..409381a
--- /dev/null
+++ b/docs/html/images/ads_hero_17@2x.jpg
Binary files differ
diff --git a/docs/html/preview/images/direct-share-screen.png b/docs/html/images/android-6.0/direct-share-screen.png
similarity index 100%
rename from docs/html/preview/images/direct-share-screen.png
rename to docs/html/images/android-6.0/direct-share-screen.png
Binary files differ
diff --git a/docs/html/preview/images/direct-share-screen_2x.png b/docs/html/images/android-6.0/direct-share-screen_2x.png
similarity index 100%
rename from docs/html/preview/images/direct-share-screen_2x.png
rename to docs/html/images/android-6.0/direct-share-screen_2x.png
Binary files differ
diff --git a/docs/html/preview/images/fingerprint-screen.png b/docs/html/images/android-6.0/fingerprint-screen.png
similarity index 100%
rename from docs/html/preview/images/fingerprint-screen.png
rename to docs/html/images/android-6.0/fingerprint-screen.png
Binary files differ
diff --git a/docs/html/preview/images/fingerprint-screen_2x.png b/docs/html/images/android-6.0/fingerprint-screen_2x.png
similarity index 100%
rename from docs/html/preview/images/fingerprint-screen_2x.png
rename to docs/html/images/android-6.0/fingerprint-screen_2x.png
Binary files differ
diff --git a/docs/html/preview/images/text-selection.gif b/docs/html/images/android-6.0/text-selection.gif
similarity index 100%
rename from docs/html/preview/images/text-selection.gif
rename to docs/html/images/android-6.0/text-selection.gif
Binary files differ
diff --git a/docs/html/preview/images/work-profile-screen.png b/docs/html/images/android-6.0/work-profile-screen.png
similarity index 100%
rename from docs/html/preview/images/work-profile-screen.png
rename to docs/html/images/android-6.0/work-profile-screen.png
Binary files differ
diff --git a/docs/html/preview/images/work-profile-screen_2x.png b/docs/html/images/android-6.0/work-profile-screen_2x.png
similarity index 100%
rename from docs/html/preview/images/work-profile-screen_2x.png
rename to docs/html/images/android-6.0/work-profile-screen_2x.png
Binary files differ
diff --git a/docs/html/images/brand/Google_Play_Store_48.png b/docs/html/images/brand/Google_Play_Store_48.png
deleted file mode 100644
index 2f0cfe0..0000000
--- a/docs/html/images/brand/Google_Play_Store_48.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/Google_Play_Store_600.png b/docs/html/images/brand/Google_Play_Store_600.png
deleted file mode 100644
index f748652..0000000
--- a/docs/html/images/brand/Google_Play_Store_600.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/Google_Play_Store_96.png b/docs/html/images/brand/Google_Play_Store_96.png
deleted file mode 100644
index 6e2c835..0000000
--- a/docs/html/images/brand/Google_Play_Store_96.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/af_generic_rgb_wo_45.png b/docs/html/images/brand/af_generic_rgb_wo_45.png
deleted file mode 100644
index bf774ab..0000000
--- a/docs/html/images/brand/af_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/af_generic_rgb_wo_60.png b/docs/html/images/brand/af_generic_rgb_wo_60.png
deleted file mode 100644
index 0487c7f..0000000
--- a/docs/html/images/brand/af_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ar_generic_rgb_wo_45.png b/docs/html/images/brand/ar_generic_rgb_wo_45.png
deleted file mode 100644
index c403608..0000000
--- a/docs/html/images/brand/ar_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ar_generic_rgb_wo_60.png b/docs/html/images/brand/ar_generic_rgb_wo_60.png
deleted file mode 100644
index 95e31eb..0000000
--- a/docs/html/images/brand/ar_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/be_generic_rgb_wo_45.png b/docs/html/images/brand/be_generic_rgb_wo_45.png
deleted file mode 100644
index bec6c7a..0000000
--- a/docs/html/images/brand/be_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/be_generic_rgb_wo_60.png b/docs/html/images/brand/be_generic_rgb_wo_60.png
deleted file mode 100644
index 53ad2a11..0000000
--- a/docs/html/images/brand/be_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/bg_generic_rgb_wo_45.png b/docs/html/images/brand/bg_generic_rgb_wo_45.png
deleted file mode 100644
index 9a27471..0000000
--- a/docs/html/images/brand/bg_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/bg_generic_rgb_wo_60.png b/docs/html/images/brand/bg_generic_rgb_wo_60.png
deleted file mode 100644
index 5143a66..0000000
--- a/docs/html/images/brand/bg_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ca_generic_rgb_wo_45.png b/docs/html/images/brand/ca_generic_rgb_wo_45.png
deleted file mode 100644
index 698a4cd..0000000
--- a/docs/html/images/brand/ca_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ca_generic_rgb_wo_60.png b/docs/html/images/brand/ca_generic_rgb_wo_60.png
deleted file mode 100644
index e943de1..0000000
--- a/docs/html/images/brand/ca_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/cs_generic_rgb_wo_45.png b/docs/html/images/brand/cs_generic_rgb_wo_45.png
deleted file mode 100644
index b97b805..0000000
--- a/docs/html/images/brand/cs_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/cs_generic_rgb_wo_60.png b/docs/html/images/brand/cs_generic_rgb_wo_60.png
deleted file mode 100644
index 9656c2e..0000000
--- a/docs/html/images/brand/cs_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/da_generic_rgb_wo_45.png b/docs/html/images/brand/da_generic_rgb_wo_45.png
deleted file mode 100644
index 541ba29..0000000
--- a/docs/html/images/brand/da_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/da_generic_rgb_wo_60.png b/docs/html/images/brand/da_generic_rgb_wo_60.png
deleted file mode 100644
index d974154..0000000
--- a/docs/html/images/brand/da_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/de_app_rgb_wo_45.png b/docs/html/images/brand/de_app_rgb_wo_45.png
deleted file mode 100644
index db48df2..0000000
--- a/docs/html/images/brand/de_app_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/de_app_rgb_wo_60.png b/docs/html/images/brand/de_app_rgb_wo_60.png
deleted file mode 100644
index 9e0f757..0000000
--- a/docs/html/images/brand/de_app_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/de_generic_rgb_wo_45.png b/docs/html/images/brand/de_generic_rgb_wo_45.png
deleted file mode 100644
index 1396f79..0000000
--- a/docs/html/images/brand/de_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/de_generic_rgb_wo_60.png b/docs/html/images/brand/de_generic_rgb_wo_60.png
deleted file mode 100644
index f2df4a4..0000000
--- a/docs/html/images/brand/de_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/el_generic_rgb_wo_45.png b/docs/html/images/brand/el_generic_rgb_wo_45.png
deleted file mode 100644
index adaea5f..0000000
--- a/docs/html/images/brand/el_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/el_generic_rgb_wo_60.png b/docs/html/images/brand/el_generic_rgb_wo_60.png
deleted file mode 100644
index 37ae3bc..0000000
--- a/docs/html/images/brand/el_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/en_app_rgb_wo_45.png b/docs/html/images/brand/en_app_rgb_wo_45.png
deleted file mode 100644
index 9891cbb..0000000
--- a/docs/html/images/brand/en_app_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/en_app_rgb_wo_60.png b/docs/html/images/brand/en_app_rgb_wo_60.png
deleted file mode 100644
index 649e782..0000000
--- a/docs/html/images/brand/en_app_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/en_generic_rgb_wo_45.png b/docs/html/images/brand/en_generic_rgb_wo_45.png
deleted file mode 100644
index 73dd393..0000000
--- a/docs/html/images/brand/en_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/en_generic_rgb_wo_60.png b/docs/html/images/brand/en_generic_rgb_wo_60.png
deleted file mode 100644
index 9a50aff..0000000
--- a/docs/html/images/brand/en_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/es-419_app_rgb_wo_45.png b/docs/html/images/brand/es-419_app_rgb_wo_45.png
deleted file mode 100644
index 3fb9a3f..0000000
--- a/docs/html/images/brand/es-419_app_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/es-419_app_rgb_wo_60.png b/docs/html/images/brand/es-419_app_rgb_wo_60.png
deleted file mode 100644
index 1dfb820..0000000
--- a/docs/html/images/brand/es-419_app_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/es-419_generic_rgb_wo_45.png b/docs/html/images/brand/es-419_generic_rgb_wo_45.png
deleted file mode 100644
index b89274d..0000000
--- a/docs/html/images/brand/es-419_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/es-419_generic_rgb_wo_60.png b/docs/html/images/brand/es-419_generic_rgb_wo_60.png
deleted file mode 100644
index 23d7705..0000000
--- a/docs/html/images/brand/es-419_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/es_app_rgb_wo_45.png b/docs/html/images/brand/es_app_rgb_wo_45.png
deleted file mode 100644
index ad5e61a..0000000
--- a/docs/html/images/brand/es_app_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/es_app_rgb_wo_60.png b/docs/html/images/brand/es_app_rgb_wo_60.png
deleted file mode 100644
index 6796ad3..0000000
--- a/docs/html/images/brand/es_app_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/es_generic_rgb_wo_45.png b/docs/html/images/brand/es_generic_rgb_wo_45.png
deleted file mode 100644
index b89274d..0000000
--- a/docs/html/images/brand/es_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/es_generic_rgb_wo_60.png b/docs/html/images/brand/es_generic_rgb_wo_60.png
deleted file mode 100644
index 23d7705..0000000
--- a/docs/html/images/brand/es_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/et_generic_rgb_wo_45.png b/docs/html/images/brand/et_generic_rgb_wo_45.png
deleted file mode 100644
index 0e267381..0000000
--- a/docs/html/images/brand/et_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/et_generic_rgb_wo_60.png b/docs/html/images/brand/et_generic_rgb_wo_60.png
deleted file mode 100644
index a99dee1..0000000
--- a/docs/html/images/brand/et_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/fa_generic_rgb_wo_45.png b/docs/html/images/brand/fa_generic_rgb_wo_45.png
deleted file mode 100644
index 25827f6..0000000
--- a/docs/html/images/brand/fa_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/fa_generic_rgb_wo_60.png b/docs/html/images/brand/fa_generic_rgb_wo_60.png
deleted file mode 100644
index 5118909..0000000
--- a/docs/html/images/brand/fa_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/fi_generic_rgb_wo_45.png b/docs/html/images/brand/fi_generic_rgb_wo_45.png
deleted file mode 100644
index 93dc4fc..0000000
--- a/docs/html/images/brand/fi_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/fi_generic_rgb_wo_60.png b/docs/html/images/brand/fi_generic_rgb_wo_60.png
deleted file mode 100644
index 95eff07..0000000
--- a/docs/html/images/brand/fi_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/fil_generic_rgb_wo_45.png b/docs/html/images/brand/fil_generic_rgb_wo_45.png
deleted file mode 100644
index 7e74e62..0000000
--- a/docs/html/images/brand/fil_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/fil_generic_rgb_wo_60.png b/docs/html/images/brand/fil_generic_rgb_wo_60.png
deleted file mode 100644
index 8f02743..0000000
--- a/docs/html/images/brand/fil_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/fr_app_rgb_wo_45.png b/docs/html/images/brand/fr_app_rgb_wo_45.png
deleted file mode 100644
index 14219e3..0000000
--- a/docs/html/images/brand/fr_app_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/fr_app_rgb_wo_60.png b/docs/html/images/brand/fr_app_rgb_wo_60.png
deleted file mode 100644
index af58843..0000000
--- a/docs/html/images/brand/fr_app_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/fr_generic_rgb_wo_45.png b/docs/html/images/brand/fr_generic_rgb_wo_45.png
deleted file mode 100644
index 3e1768f..0000000
--- a/docs/html/images/brand/fr_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/fr_generic_rgb_wo_60.png b/docs/html/images/brand/fr_generic_rgb_wo_60.png
deleted file mode 100644
index 5c307f5..0000000
--- a/docs/html/images/brand/fr_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/hr_generic_rgb_wo_45.png b/docs/html/images/brand/hr_generic_rgb_wo_45.png
deleted file mode 100644
index b8acaac..0000000
--- a/docs/html/images/brand/hr_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/hr_generic_rgb_wo_60.png b/docs/html/images/brand/hr_generic_rgb_wo_60.png
deleted file mode 100644
index 4fe6c7b..0000000
--- a/docs/html/images/brand/hr_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/hu_generic_rgb_wo_45.png b/docs/html/images/brand/hu_generic_rgb_wo_45.png
deleted file mode 100644
index 3b2184d..0000000
--- a/docs/html/images/brand/hu_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/hu_generic_rgb_wo_60.png b/docs/html/images/brand/hu_generic_rgb_wo_60.png
deleted file mode 100644
index d6572be..0000000
--- a/docs/html/images/brand/hu_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/id-in_generic_rgb_wo_45.png b/docs/html/images/brand/id-in_generic_rgb_wo_45.png
deleted file mode 100644
index 17ce069..0000000
--- a/docs/html/images/brand/id-in_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/id-in_generic_rgb_wo_60.png b/docs/html/images/brand/id-in_generic_rgb_wo_60.png
deleted file mode 100644
index ad067ce..0000000
--- a/docs/html/images/brand/id-in_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/it_app_rgb_wo_45.png b/docs/html/images/brand/it_app_rgb_wo_45.png
deleted file mode 100644
index 16a137e..0000000
--- a/docs/html/images/brand/it_app_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/it_app_rgb_wo_60.png b/docs/html/images/brand/it_app_rgb_wo_60.png
deleted file mode 100644
index 27123dc..0000000
--- a/docs/html/images/brand/it_app_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/it_generic_rgb_wo_45.png b/docs/html/images/brand/it_generic_rgb_wo_45.png
deleted file mode 100644
index ee5f85e..0000000
--- a/docs/html/images/brand/it_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/it_generic_rgb_wo_60.png b/docs/html/images/brand/it_generic_rgb_wo_60.png
deleted file mode 100644
index 03ea5ba..0000000
--- a/docs/html/images/brand/it_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/iw-he_generic_rgb_wo_45.png b/docs/html/images/brand/iw-he_generic_rgb_wo_45.png
deleted file mode 100644
index 1d03c77..0000000
--- a/docs/html/images/brand/iw-he_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/iw-he_generic_rgb_wo_60.png b/docs/html/images/brand/iw-he_generic_rgb_wo_60.png
deleted file mode 100644
index decfdae..0000000
--- a/docs/html/images/brand/iw-he_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ja_app_rgb_wo_45.png b/docs/html/images/brand/ja_app_rgb_wo_45.png
deleted file mode 100644
index 6af7582..0000000
--- a/docs/html/images/brand/ja_app_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ja_app_rgb_wo_60.png b/docs/html/images/brand/ja_app_rgb_wo_60.png
deleted file mode 100644
index e197e12..0000000
--- a/docs/html/images/brand/ja_app_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ja_generic_rgb_wo_45.png b/docs/html/images/brand/ja_generic_rgb_wo_45.png
deleted file mode 100644
index 5f5281a..0000000
--- a/docs/html/images/brand/ja_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ja_generic_rgb_wo_60.png b/docs/html/images/brand/ja_generic_rgb_wo_60.png
deleted file mode 100644
index fcb4c9c..0000000
--- a/docs/html/images/brand/ja_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ko_app_rgb_wo_45.png b/docs/html/images/brand/ko_app_rgb_wo_45.png
deleted file mode 100644
index f0b427e..0000000
--- a/docs/html/images/brand/ko_app_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ko_app_rgb_wo_60.png b/docs/html/images/brand/ko_app_rgb_wo_60.png
deleted file mode 100644
index 6ccb673..0000000
--- a/docs/html/images/brand/ko_app_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ko_generic_rgb_wo_45.png b/docs/html/images/brand/ko_generic_rgb_wo_45.png
deleted file mode 100644
index 61ae04a..0000000
--- a/docs/html/images/brand/ko_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ko_generic_rgb_wo_60.png b/docs/html/images/brand/ko_generic_rgb_wo_60.png
deleted file mode 100644
index 9c14e36..0000000
--- a/docs/html/images/brand/ko_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/lt_generic_rgb_wo_45.png b/docs/html/images/brand/lt_generic_rgb_wo_45.png
deleted file mode 100644
index 96564d5..0000000
--- a/docs/html/images/brand/lt_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/lt_generic_rgb_wo_60.png b/docs/html/images/brand/lt_generic_rgb_wo_60.png
deleted file mode 100644
index 2c6c1bf..0000000
--- a/docs/html/images/brand/lt_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/lv_generic_rgb_wo_45.png b/docs/html/images/brand/lv_generic_rgb_wo_45.png
deleted file mode 100644
index 8182ca5..0000000
--- a/docs/html/images/brand/lv_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/lv_generic_rgb_wo_60.png b/docs/html/images/brand/lv_generic_rgb_wo_60.png
deleted file mode 100644
index 5c0b3d2..0000000
--- a/docs/html/images/brand/lv_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ms_generic_rgb_wo_45.png b/docs/html/images/brand/ms_generic_rgb_wo_45.png
deleted file mode 100644
index d6ccc6b..0000000
--- a/docs/html/images/brand/ms_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ms_generic_rgb_wo_60.png b/docs/html/images/brand/ms_generic_rgb_wo_60.png
deleted file mode 100644
index 6e1c34d..0000000
--- a/docs/html/images/brand/ms_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/nl_app_rgb_wo_45.png b/docs/html/images/brand/nl_app_rgb_wo_45.png
deleted file mode 100644
index f06ed04..0000000
--- a/docs/html/images/brand/nl_app_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/nl_app_rgb_wo_60.png b/docs/html/images/brand/nl_app_rgb_wo_60.png
deleted file mode 100644
index f2c797d..0000000
--- a/docs/html/images/brand/nl_app_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/nl_generic_rgb_wo_45.png b/docs/html/images/brand/nl_generic_rgb_wo_45.png
deleted file mode 100644
index 6b5826d..0000000
--- a/docs/html/images/brand/nl_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/nl_generic_rgb_wo_60.png b/docs/html/images/brand/nl_generic_rgb_wo_60.png
deleted file mode 100644
index cb11afda..0000000
--- a/docs/html/images/brand/nl_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/no_generic_rgb_wo_45.png b/docs/html/images/brand/no_generic_rgb_wo_45.png
deleted file mode 100644
index fb390d8..0000000
--- a/docs/html/images/brand/no_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/no_generic_rgb_wo_60.png b/docs/html/images/brand/no_generic_rgb_wo_60.png
deleted file mode 100644
index e83dce7..0000000
--- a/docs/html/images/brand/no_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/pl_generic_rgb_wo_45.png b/docs/html/images/brand/pl_generic_rgb_wo_45.png
deleted file mode 100644
index 78caded..0000000
--- a/docs/html/images/brand/pl_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/pl_generic_rgb_wo_60.png b/docs/html/images/brand/pl_generic_rgb_wo_60.png
deleted file mode 100644
index 2d956fb..0000000
--- a/docs/html/images/brand/pl_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/pt-br_app_rgb_wo_45.png b/docs/html/images/brand/pt-br_app_rgb_wo_45.png
deleted file mode 100644
index 065998b..0000000
--- a/docs/html/images/brand/pt-br_app_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/pt-br_app_rgb_wo_60.png b/docs/html/images/brand/pt-br_app_rgb_wo_60.png
deleted file mode 100644
index 1ce0a6c..0000000
--- a/docs/html/images/brand/pt-br_app_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/pt-br_generic_rgb_wo_45.png b/docs/html/images/brand/pt-br_generic_rgb_wo_45.png
deleted file mode 100644
index a661d44..0000000
--- a/docs/html/images/brand/pt-br_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/pt-br_generic_rgb_wo_60.png b/docs/html/images/brand/pt-br_generic_rgb_wo_60.png
deleted file mode 100644
index 402af71..0000000
--- a/docs/html/images/brand/pt-br_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/pt-pt_app_rgb_wo_45.png b/docs/html/images/brand/pt-pt_app_rgb_wo_45.png
deleted file mode 100644
index 0b50959..0000000
--- a/docs/html/images/brand/pt-pt_app_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/pt-pt_app_rgb_wo_60.png b/docs/html/images/brand/pt-pt_app_rgb_wo_60.png
deleted file mode 100644
index 65dd887..0000000
--- a/docs/html/images/brand/pt-pt_app_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/pt-pt_generic_rgb_wo_45.png b/docs/html/images/brand/pt-pt_generic_rgb_wo_45.png
deleted file mode 100644
index a616cf1..0000000
--- a/docs/html/images/brand/pt-pt_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/pt-pt_generic_rgb_wo_60.png b/docs/html/images/brand/pt-pt_generic_rgb_wo_60.png
deleted file mode 100644
index 36a7b83..0000000
--- a/docs/html/images/brand/pt-pt_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ro_generic_rgb_wo_45.png b/docs/html/images/brand/ro_generic_rgb_wo_45.png
deleted file mode 100644
index c18a548..0000000
--- a/docs/html/images/brand/ro_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ro_generic_rgb_wo_60.png b/docs/html/images/brand/ro_generic_rgb_wo_60.png
deleted file mode 100644
index b8f3433..0000000
--- a/docs/html/images/brand/ro_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ru_generic_rgb_wo_45.png b/docs/html/images/brand/ru_generic_rgb_wo_45.png
deleted file mode 100644
index c049ddb..0000000
--- a/docs/html/images/brand/ru_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/ru_generic_rgb_wo_60.png b/docs/html/images/brand/ru_generic_rgb_wo_60.png
deleted file mode 100644
index e00c276..0000000
--- a/docs/html/images/brand/ru_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/sk_generic_rgb_wo_45.png b/docs/html/images/brand/sk_generic_rgb_wo_45.png
deleted file mode 100644
index 27ce06a..0000000
--- a/docs/html/images/brand/sk_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/sk_generic_rgb_wo_60.png b/docs/html/images/brand/sk_generic_rgb_wo_60.png
deleted file mode 100644
index 8591f2c..0000000
--- a/docs/html/images/brand/sk_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/sl_generic_rgb_wo_45.png b/docs/html/images/brand/sl_generic_rgb_wo_45.png
deleted file mode 100644
index 115a99d..0000000
--- a/docs/html/images/brand/sl_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/sl_generic_rgb_wo_60.png b/docs/html/images/brand/sl_generic_rgb_wo_60.png
deleted file mode 100644
index 37c2e52..0000000
--- a/docs/html/images/brand/sl_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/sr_generic_rgb_wo_45.png b/docs/html/images/brand/sr_generic_rgb_wo_45.png
deleted file mode 100644
index 86dba47..0000000
--- a/docs/html/images/brand/sr_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/sr_generic_rgb_wo_60.png b/docs/html/images/brand/sr_generic_rgb_wo_60.png
deleted file mode 100644
index 67806da..0000000
--- a/docs/html/images/brand/sr_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/sv_generic_rgb_wo_45.png b/docs/html/images/brand/sv_generic_rgb_wo_45.png
deleted file mode 100644
index fb390d8..0000000
--- a/docs/html/images/brand/sv_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/sv_generic_rgb_wo_60.png b/docs/html/images/brand/sv_generic_rgb_wo_60.png
deleted file mode 100644
index e83dce7..0000000
--- a/docs/html/images/brand/sv_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/sw_generic_rgb_wo_45.png b/docs/html/images/brand/sw_generic_rgb_wo_45.png
deleted file mode 100644
index c7deecc..0000000
--- a/docs/html/images/brand/sw_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/sw_generic_rgb_wo_60.png b/docs/html/images/brand/sw_generic_rgb_wo_60.png
deleted file mode 100644
index 9c0d057..0000000
--- a/docs/html/images/brand/sw_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/th_generic_rgb_wo_45.png b/docs/html/images/brand/th_generic_rgb_wo_45.png
deleted file mode 100644
index 803b6c5..0000000
--- a/docs/html/images/brand/th_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/th_generic_rgb_wo_60.png b/docs/html/images/brand/th_generic_rgb_wo_60.png
deleted file mode 100644
index 6e36e02..0000000
--- a/docs/html/images/brand/th_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/tr_generic_rgb_wo_45.png b/docs/html/images/brand/tr_generic_rgb_wo_45.png
deleted file mode 100644
index baa8394..0000000
--- a/docs/html/images/brand/tr_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/tr_generic_rgb_wo_60.png b/docs/html/images/brand/tr_generic_rgb_wo_60.png
deleted file mode 100644
index 63fa31f..0000000
--- a/docs/html/images/brand/tr_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/uk_generic_rgb_wo_45.png b/docs/html/images/brand/uk_generic_rgb_wo_45.png
deleted file mode 100644
index 68c111f..0000000
--- a/docs/html/images/brand/uk_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/uk_generic_rgb_wo_60.png b/docs/html/images/brand/uk_generic_rgb_wo_60.png
deleted file mode 100644
index 918d70a..0000000
--- a/docs/html/images/brand/uk_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/vi_generic_rgb_wo_45.png b/docs/html/images/brand/vi_generic_rgb_wo_45.png
deleted file mode 100644
index e39d00a..0000000
--- a/docs/html/images/brand/vi_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/vi_generic_rgb_wo_60.png b/docs/html/images/brand/vi_generic_rgb_wo_60.png
deleted file mode 100644
index ba1e9a0..0000000
--- a/docs/html/images/brand/vi_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/zh-cn_generic_rgb_wo_45.png b/docs/html/images/brand/zh-cn_generic_rgb_wo_45.png
deleted file mode 100644
index c7748de..0000000
--- a/docs/html/images/brand/zh-cn_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/zh-cn_generic_rgb_wo_60.png b/docs/html/images/brand/zh-cn_generic_rgb_wo_60.png
deleted file mode 100644
index 0a0f91a..0000000
--- a/docs/html/images/brand/zh-cn_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/zh-hk_generic_rgb_wo_45.png b/docs/html/images/brand/zh-hk_generic_rgb_wo_45.png
deleted file mode 100644
index c3d064c..0000000
--- a/docs/html/images/brand/zh-hk_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/zh-hk_generic_rgb_wo_60.png b/docs/html/images/brand/zh-hk_generic_rgb_wo_60.png
deleted file mode 100644
index 2b072de..0000000
--- a/docs/html/images/brand/zh-hk_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/zh-tw_generic_rgb_wo_45.png b/docs/html/images/brand/zh-tw_generic_rgb_wo_45.png
deleted file mode 100644
index 7bb2b09..0000000
--- a/docs/html/images/brand/zh-tw_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/zh-tw_generic_rgb_wo_60.png b/docs/html/images/brand/zh-tw_generic_rgb_wo_60.png
deleted file mode 100644
index 0797c84b..0000000
--- a/docs/html/images/brand/zh-tw_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/zu_generic_rgb_wo_45.png b/docs/html/images/brand/zu_generic_rgb_wo_45.png
deleted file mode 100644
index 1e9f7c7..0000000
--- a/docs/html/images/brand/zu_generic_rgb_wo_45.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/brand/zu_generic_rgb_wo_60.png b/docs/html/images/brand/zu_generic_rgb_wo_60.png
deleted file mode 100644
index 09f521b..0000000
--- a/docs/html/images/brand/zu_generic_rgb_wo_60.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/build.png b/docs/html/images/build.png
index bf4cf4e..94cc21b 100644
--- a/docs/html/images/build.png
+++ b/docs/html/images/build.png
Binary files differ
diff --git a/docs/html/images/cards/admob-analytics_2x.png b/docs/html/images/cards/admob-analytics_2x.png
new file mode 100644
index 0000000..5c024b5
--- /dev/null
+++ b/docs/html/images/cards/admob-analytics_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-assist_16-9_2x.png b/docs/html/images/cards/card-assist_16-9_2x.png
new file mode 100644
index 0000000..a016367
--- /dev/null
+++ b/docs/html/images/cards/card-assist_16-9_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-doze_16-9_2x.png b/docs/html/images/cards/card-doze_16-9_2x.png
new file mode 100644
index 0000000..0db640f
--- /dev/null
+++ b/docs/html/images/cards/card-doze_16-9_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-install-banners_16x9_2x.png b/docs/html/images/cards/card-install-banners_16x9_2x.png
new file mode 100644
index 0000000..09ebc30
--- /dev/null
+++ b/docs/html/images/cards/card-install-banners_16x9_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-n-apis_2x.png b/docs/html/images/cards/card-n-apis_2x.png
new file mode 100644
index 0000000..296ea6c
--- /dev/null
+++ b/docs/html/images/cards/card-n-apis_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-n-changes_2x.png b/docs/html/images/cards/card-n-changes_2x.png
new file mode 100644
index 0000000..7d08e37
--- /dev/null
+++ b/docs/html/images/cards/card-n-changes_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-n-downloads_2x.png b/docs/html/images/cards/card-n-downloads_2x.png
new file mode 100644
index 0000000..febc661
--- /dev/null
+++ b/docs/html/images/cards/card-n-downloads_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-n-overview_2x.png b/docs/html/images/cards/card-n-overview_2x.png
new file mode 100644
index 0000000..2c7392a
--- /dev/null
+++ b/docs/html/images/cards/card-n-overview_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-n-samples_2x.png b/docs/html/images/cards/card-n-samples_2x.png
new file mode 100644
index 0000000..d6621eb
--- /dev/null
+++ b/docs/html/images/cards/card-n-samples_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-n-sdk_2x.png b/docs/html/images/cards/card-n-sdk_2x.png
new file mode 100644
index 0000000..05d2eb9
--- /dev/null
+++ b/docs/html/images/cards/card-n-sdk_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-n-support_2x.png b/docs/html/images/cards/card-n-support_2x.png
new file mode 100644
index 0000000..0aec6cf
--- /dev/null
+++ b/docs/html/images/cards/card-n-support_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-studio-modules_crop_2x.png b/docs/html/images/cards/card-studio-modules_crop_2x.png
new file mode 100644
index 0000000..98ddf1f
--- /dev/null
+++ b/docs/html/images/cards/card-studio-modules_crop_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-user-ids_2x.png b/docs/html/images/cards/card-user-ids_2x.png
new file mode 100644
index 0000000..d27098d
--- /dev/null
+++ b/docs/html/images/cards/card-user-ids_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-user-permissions_2x.png b/docs/html/images/cards/card-user-permissions_2x.png
new file mode 100644
index 0000000..899dc3d
--- /dev/null
+++ b/docs/html/images/cards/card-user-permissions_2x.png
Binary files differ
diff --git a/docs/html/images/cards/card-user_2x.png b/docs/html/images/cards/card-user_2x.png
new file mode 100644
index 0000000..2888356
--- /dev/null
+++ b/docs/html/images/cards/card-user_2x.png
Binary files differ
diff --git a/docs/html/images/cards/course-nanodegree_2x.png b/docs/html/images/cards/course-nanodegree_2x.png
deleted file mode 100644
index 8f99703..0000000
--- a/docs/html/images/cards/course-nanodegree_2x.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/cards/course-ud825_2x.png b/docs/html/images/cards/course-ud825_2x.png
deleted file mode 100644
index 77f98b5..0000000
--- a/docs/html/images/cards/course-ud825_2x.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/cards/course-ud875_2x.jpg b/docs/html/images/cards/course-ud875_2x.jpg
deleted file mode 100644
index b7fc8cc..0000000
--- a/docs/html/images/cards/course-ud875_2x.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/cards/course-ud876_2x.jpg b/docs/html/images/cards/course-ud876_2x.jpg
deleted file mode 100644
index 5f27246..0000000
--- a/docs/html/images/cards/course-ud876_2x.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/cards/courses/admob_course.png b/docs/html/images/cards/courses/admob_course.png
new file mode 100644
index 0000000..a068a73
--- /dev/null
+++ b/docs/html/images/cards/courses/admob_course.png
Binary files differ
diff --git a/docs/html/images/cards/course-ud855_2x.jpg b/docs/html/images/cards/courses/advanced_android_course.jpg
similarity index 100%
rename from docs/html/images/cards/course-ud855_2x.jpg
rename to docs/html/images/cards/courses/advanced_android_course.jpg
Binary files differ
diff --git a/docs/html/images/cards/courses/android_analytics_course.png b/docs/html/images/cards/courses/android_analytics_course.png
new file mode 100644
index 0000000..1ce1d01
--- /dev/null
+++ b/docs/html/images/cards/courses/android_analytics_course.png
Binary files differ
diff --git a/docs/html/images/cards/courses/android_auto_course.jpg b/docs/html/images/cards/courses/android_auto_course.jpg
new file mode 100644
index 0000000..84cc1f3
--- /dev/null
+++ b/docs/html/images/cards/courses/android_auto_course.jpg
Binary files differ
diff --git a/docs/html/images/cards/course-ud862_2x.jpg b/docs/html/images/cards/courses/android_design_course.jpg
similarity index 100%
rename from docs/html/images/cards/course-ud862_2x.jpg
rename to docs/html/images/cards/courses/android_design_course.jpg
Binary files differ
diff --git a/docs/html/images/cards/course-ud853_2x.jpg b/docs/html/images/cards/courses/android_fundamentals_course.jpg
similarity index 100%
rename from docs/html/images/cards/course-ud853_2x.jpg
rename to docs/html/images/cards/courses/android_fundamentals_course.jpg
Binary files differ
diff --git a/docs/html/images/cards/courses/android_identity_course.png b/docs/html/images/cards/courses/android_identity_course.png
new file mode 100644
index 0000000..e4a47c3
--- /dev/null
+++ b/docs/html/images/cards/courses/android_identity_course.png
Binary files differ
diff --git a/docs/html/images/cards/courses/android_location_course.png b/docs/html/images/cards/courses/android_location_course.png
new file mode 100644
index 0000000..21a2aaa
--- /dev/null
+++ b/docs/html/images/cards/courses/android_location_course.png
Binary files differ
diff --git a/docs/html/images/cards/courses/android_maps_course.png b/docs/html/images/cards/courses/android_maps_course.png
new file mode 100644
index 0000000..70910e9
--- /dev/null
+++ b/docs/html/images/cards/courses/android_maps_course.png
Binary files differ
diff --git a/docs/html/images/cards/courses/android_nanodegree.png b/docs/html/images/cards/courses/android_nanodegree.png
new file mode 100644
index 0000000..fb50494
--- /dev/null
+++ b/docs/html/images/cards/courses/android_nanodegree.png
Binary files differ
diff --git a/docs/html/images/cards/courses/android_performance_course.jpg b/docs/html/images/cards/courses/android_performance_course.jpg
new file mode 100644
index 0000000..a255718
--- /dev/null
+++ b/docs/html/images/cards/courses/android_performance_course.jpg
Binary files differ
diff --git a/docs/html/images/cards/courses/android_tv_cast_course.jpg b/docs/html/images/cards/courses/android_tv_cast_course.jpg
new file mode 100644
index 0000000..4b86310
--- /dev/null
+++ b/docs/html/images/cards/courses/android_tv_cast_course.jpg
Binary files differ
diff --git a/docs/html/images/cards/courses/android_wear_course.jpg b/docs/html/images/cards/courses/android_wear_course.jpg
new file mode 100644
index 0000000..763e647
--- /dev/null
+++ b/docs/html/images/cards/courses/android_wear_course.jpg
Binary files differ
diff --git a/docs/html/images/cards/course-ud837_2x.jpg b/docs/html/images/cards/courses/beginning_android_course.jpg
similarity index 100%
rename from docs/html/images/cards/course-ud837_2x.jpg
rename to docs/html/images/cards/courses/beginning_android_course.jpg
Binary files differ
diff --git a/docs/html/images/cards/course-ud867_2x.jpg b/docs/html/images/cards/courses/gradle_course.jpg
similarity index 100%
rename from docs/html/images/cards/course-ud867_2x.jpg
rename to docs/html/images/cards/courses/gradle_course.jpg
Binary files differ
diff --git a/docs/html/images/cards/course-ud849_2x.jpg b/docs/html/images/cards/courses/mobile_ux_course.jpg
similarity index 100%
rename from docs/html/images/cards/course-ud849_2x.jpg
rename to docs/html/images/cards/courses/mobile_ux_course.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/engage/beta.jpg b/docs/html/images/cards/distribute/engage/beta.jpg
new file mode 100644
index 0000000..40eb901
--- /dev/null
+++ b/docs/html/images/cards/distribute/engage/beta.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/engage/card-game-services.png b/docs/html/images/cards/distribute/engage/card-game-services.png
new file mode 100644
index 0000000..54a3a94
--- /dev/null
+++ b/docs/html/images/cards/distribute/engage/card-game-services.png
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/concrete-bowling.jpg b/docs/html/images/cards/distribute/stories/concrete-bowling.jpg
new file mode 100644
index 0000000..797da4d
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/concrete-bowling.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/doctor-who-legacy.jpg b/docs/html/images/cards/distribute/stories/doctor-who-legacy.jpg
new file mode 100644
index 0000000..565bdba
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/doctor-who-legacy.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/dots.png b/docs/html/images/cards/distribute/stories/dots.png
new file mode 100644
index 0000000..479f8cb
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/dots.png
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/g4a-indian-rummy.jpg b/docs/html/images/cards/distribute/stories/g4a-indian-rummy.jpg
new file mode 100644
index 0000000..28dbae2
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/g4a-indian-rummy.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/gameloft-asphalt8.jpg b/docs/html/images/cards/distribute/stories/gameloft-asphalt8.jpg
new file mode 100644
index 0000000..cdf021e
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/gameloft-asphalt8.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/glu-dh.jpg b/docs/html/images/cards/distribute/stories/glu-dh.jpg
new file mode 100644
index 0000000..faf0e65
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/glu-dh.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/glu-eternity-warriors.jpg b/docs/html/images/cards/distribute/stories/glu-eternity-warriors.jpg
new file mode 100644
index 0000000..496efcb
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/glu-eternity-warriors.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/glu-tap-baseball.jpg b/docs/html/images/cards/distribute/stories/glu-tap-baseball.jpg
new file mode 100644
index 0000000..6232786
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/glu-tap-baseball.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/hotheadgames-firefight.jpg b/docs/html/images/cards/distribute/stories/hotheadgames-firefight.jpg
new file mode 100644
index 0000000..1524001
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/hotheadgames-firefight.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/intuit-mint.png b/docs/html/images/cards/distribute/stories/intuit-mint.png
new file mode 100644
index 0000000..39b8f11
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/intuit-mint.png
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/kongregate-adv-cap.jpg b/docs/html/images/cards/distribute/stories/kongregate-adv-cap.jpg
new file mode 100644
index 0000000..f8c1cd1
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/kongregate-adv-cap.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/kongregate-global-assault.jpg b/docs/html/images/cards/distribute/stories/kongregate-global-assault.jpg
new file mode 100644
index 0000000..ae6115e
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/kongregate-global-assault.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/leos-fortune.jpg b/docs/html/images/cards/distribute/stories/leos-fortune.jpg
new file mode 100644
index 0000000..80703ee
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/leos-fortune.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/noodlecake-super-stickman.jpg b/docs/html/images/cards/distribute/stories/noodlecake-super-stickman.jpg
new file mode 100644
index 0000000..a9f8de0
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/noodlecake-super-stickman.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/remember-the-milk.jpg b/docs/html/images/cards/distribute/stories/remember-the-milk.jpg
new file mode 100644
index 0000000..3415073
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/remember-the-milk.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/rvappstudios-zombie.jpg b/docs/html/images/cards/distribute/stories/rvappstudios-zombie.jpg
new file mode 100644
index 0000000..a78ed60
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/rvappstudios-zombie.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/sayhichat.jpg b/docs/html/images/cards/distribute/stories/sayhichat.jpg
new file mode 100644
index 0000000..33f0dde
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/sayhichat.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/tiny-co.jpg b/docs/html/images/cards/distribute/stories/tiny-co.jpg
new file mode 100644
index 0000000..ad1a689
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/tiny-co.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/stories/two-dots.png b/docs/html/images/cards/distribute/stories/two-dots.png
new file mode 100644
index 0000000..f0e3db4
--- /dev/null
+++ b/docs/html/images/cards/distribute/stories/two-dots.png
Binary files differ
diff --git a/docs/html/images/cards/distribute/users/banners.png b/docs/html/images/cards/distribute/users/banners.png
new file mode 100644
index 0000000..ced01ae
--- /dev/null
+++ b/docs/html/images/cards/distribute/users/banners.png
Binary files differ
diff --git a/docs/html/images/cards/distribute/users/experiments.png b/docs/html/images/cards/distribute/users/experiments.png
new file mode 100644
index 0000000..06ea9ab
--- /dev/null
+++ b/docs/html/images/cards/distribute/users/experiments.png
Binary files differ
diff --git a/docs/html/images/cards/distribute/users/user-acquisition.jpg b/docs/html/images/cards/distribute/users/user-acquisition.jpg
new file mode 100644
index 0000000..8704e7a
--- /dev/null
+++ b/docs/html/images/cards/distribute/users/user-acquisition.jpg
Binary files differ
diff --git a/docs/html/images/distribute/appindexing.gif b/docs/html/images/distribute/appindexing.gif
deleted file mode 100644
index 6015d14..0000000
--- a/docs/html/images/distribute/appindexing.gif
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/about_developer_page.png b/docs/html/images/distribute/googleplay/about_developer_page.png
new file mode 100644
index 0000000..9e28a2f
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/about_developer_page.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/about_hero_play-opportunity.png b/docs/html/images/distribute/googleplay/about_hero_play-opportunity.png
new file mode 100644
index 0000000..97598e9
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/about_hero_play-opportunity.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/about_hero_play-opportunity_2x.png b/docs/html/images/distribute/googleplay/about_hero_play-opportunity_2x.png
new file mode 100644
index 0000000..9d0109c
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/about_hero_play-opportunity_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/about_personalized_home.png b/docs/html/images/distribute/googleplay/about_personalized_home.png
new file mode 100644
index 0000000..af35c35c
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/about_personalized_home.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/about_play_store_home.png b/docs/html/images/distribute/googleplay/about_play_store_home.png
new file mode 100644
index 0000000..6e2b52c
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/about_play_store_home.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/about_play_store_listing.png b/docs/html/images/distribute/googleplay/about_play_store_listing.png
new file mode 100644
index 0000000..985456a
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/about_play_store_listing.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/about_search_results.png b/docs/html/images/distribute/googleplay/about_search_results.png
new file mode 100644
index 0000000..8dbc3f4
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/about_search_results.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_cloud-test-lab.png b/docs/html/images/distribute/googleplay/dev-console_cloud-test-lab.png
new file mode 100644
index 0000000..efad065
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_cloud-test-lab.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_cloud-test-lab_2x.png b/docs/html/images/distribute/googleplay/dev-console_cloud-test-lab_2x.png
new file mode 100644
index 0000000..b60eed3
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_cloud-test-lab_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_conversion-funnel.png b/docs/html/images/distribute/googleplay/dev-console_conversion-funnel.png
new file mode 100644
index 0000000..e2d3769
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_conversion-funnel.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_conversion-funnel_2x.png b/docs/html/images/distribute/googleplay/dev-console_conversion-funnel_2x.png
new file mode 100644
index 0000000..531ed86
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_conversion-funnel_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_player-analytics.png b/docs/html/images/distribute/googleplay/dev-console_player-analytics.png
new file mode 100644
index 0000000..aa4f39e
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_player-analytics.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_player-analytics_2x.png b/docs/html/images/distribute/googleplay/dev-console_player-analytics_2x.png
new file mode 100644
index 0000000..b44e7f0
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_player-analytics_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_running-a-beta-test.png b/docs/html/images/distribute/googleplay/dev-console_running-a-beta-test.png
new file mode 100644
index 0000000..cf8ebca
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_running-a-beta-test.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_running-a-beta-test_2x.png b/docs/html/images/distribute/googleplay/dev-console_running-a-beta-test_2x.png
new file mode 100644
index 0000000..dcea50e
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_running-a-beta-test_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_statistics.png b/docs/html/images/distribute/googleplay/dev-console_statistics.png
new file mode 100644
index 0000000..4bddd1a
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_statistics.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_statistics_2x.png b/docs/html/images/distribute/googleplay/dev-console_statistics_2x.png
new file mode 100644
index 0000000..e1ab470
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_statistics_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_store-listing-experiment.png b/docs/html/images/distribute/googleplay/dev-console_store-listing-experiment.png
new file mode 100644
index 0000000..52fa217
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_store-listing-experiment.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_store-listing-experiment_2x.png b/docs/html/images/distribute/googleplay/dev-console_store-listing-experiment_2x.png
new file mode 100644
index 0000000..ea5d0a4
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_store-listing-experiment_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/gp-devconsole-home.png b/docs/html/images/distribute/googleplay/gp-devconsole-home.png
new file mode 100644
index 0000000..a1af0ef
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/gp-devconsole-home.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/hero-store-listing-experiment.png b/docs/html/images/distribute/googleplay/hero-store-listing-experiment.png
new file mode 100644
index 0000000..ad54c2a
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/hero-store-listing-experiment.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/hero-store-listing-experiment_2x.png b/docs/html/images/distribute/googleplay/hero-store-listing-experiment_2x.png
new file mode 100644
index 0000000..2925aa5
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/hero-store-listing-experiment_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/hero-IO15-growing-games.jpg b/docs/html/images/distribute/hero-IO15-growing-games.jpg
index c08bd71..f2f6584 100644
--- a/docs/html/images/distribute/hero-IO15-growing-games.jpg
+++ b/docs/html/images/distribute/hero-IO15-growing-games.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-acquisition-devbyte.jpg b/docs/html/images/distribute/hero-acquisition-devbyte.jpg
new file mode 100644
index 0000000..6a533bc
--- /dev/null
+++ b/docs/html/images/distribute/hero-acquisition-devbyte.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-carousel-djit.jpg b/docs/html/images/distribute/hero-carousel-djit.jpg
new file mode 100644
index 0000000..f477dbb
--- /dev/null
+++ b/docs/html/images/distribute/hero-carousel-djit.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-carousel-giftedmom.jpg b/docs/html/images/distribute/hero-carousel-giftedmom.jpg
new file mode 100644
index 0000000..33ac3a5
--- /dev/null
+++ b/docs/html/images/distribute/hero-carousel-giftedmom.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-carousel-sgn.jpg b/docs/html/images/distribute/hero-carousel-sgn.jpg
new file mode 100644
index 0000000..bced6a0
--- /dev/null
+++ b/docs/html/images/distribute/hero-carousel-sgn.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-carousel-wego.jpg b/docs/html/images/distribute/hero-carousel-wego.jpg
new file mode 100644
index 0000000..fd156ef
--- /dev/null
+++ b/docs/html/images/distribute/hero-carousel-wego.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-domain-story.jpg b/docs/html/images/distribute/hero-domain-story.jpg
new file mode 100644
index 0000000..2246de0
--- /dev/null
+++ b/docs/html/images/distribute/hero-domain-story.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-dots-story.jpg b/docs/html/images/distribute/hero-dots-story.jpg
new file mode 100644
index 0000000..2791c7e
--- /dev/null
+++ b/docs/html/images/distribute/hero-dots-story.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-jelly-button.jpg b/docs/html/images/distribute/hero-jelly-button.jpg
index 032755b..3cc40f8 100644
--- a/docs/html/images/distribute/hero-jelly-button.jpg
+++ b/docs/html/images/distribute/hero-jelly-button.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-playtime-opener.jpg b/docs/html/images/distribute/hero-playtime-opener.jpg
new file mode 100644
index 0000000..fbd21bd
--- /dev/null
+++ b/docs/html/images/distribute/hero-playtime-opener.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-rogervoice-story.jpg b/docs/html/images/distribute/hero-rogervoice-story.jpg
new file mode 100644
index 0000000..2e48b55
--- /dev/null
+++ b/docs/html/images/distribute/hero-rogervoice-story.jpg
Binary files differ
diff --git a/docs/html/images/distribute/hero-secrets-to-app-success.jpg b/docs/html/images/distribute/hero-secrets-to-app-success.jpg
new file mode 100644
index 0000000..4d59e6b
--- /dev/null
+++ b/docs/html/images/distribute/hero-secrets-to-app-success.jpg
Binary files differ
diff --git a/docs/html/images/distribute/secrets_v2_banner.jpg b/docs/html/images/distribute/secrets_v2_banner.jpg
new file mode 100644
index 0000000..cec4d8e
--- /dev/null
+++ b/docs/html/images/distribute/secrets_v2_banner.jpg
Binary files differ
diff --git a/docs/html/images/distribute/stories/concrete-bowling-icon.png b/docs/html/images/distribute/stories/concrete-bowling-icon.png
new file mode 100644
index 0000000..e81e390
--- /dev/null
+++ b/docs/html/images/distribute/stories/concrete-bowling-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/concrete-bowling-screenshot.png b/docs/html/images/distribute/stories/concrete-bowling-screenshot.png
new file mode 100644
index 0000000..540df1f
--- /dev/null
+++ b/docs/html/images/distribute/stories/concrete-bowling-screenshot.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/concrete-bowling-screenshot_2x.png b/docs/html/images/distribute/stories/concrete-bowling-screenshot_2x.png
new file mode 100644
index 0000000..0f76df6
--- /dev/null
+++ b/docs/html/images/distribute/stories/concrete-bowling-screenshot_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/doctor-who-legacy-icon.png b/docs/html/images/distribute/stories/doctor-who-legacy-icon.png
new file mode 100644
index 0000000..4634fa1
--- /dev/null
+++ b/docs/html/images/distribute/stories/doctor-who-legacy-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/doctor-who-legacy-screenshot.png b/docs/html/images/distribute/stories/doctor-who-legacy-screenshot.png
new file mode 100644
index 0000000..7d3eade
--- /dev/null
+++ b/docs/html/images/distribute/stories/doctor-who-legacy-screenshot.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/doctor-who-legacy-screenshot_2x.png b/docs/html/images/distribute/stories/doctor-who-legacy-screenshot_2x.png
new file mode 100644
index 0000000..556bfcd
--- /dev/null
+++ b/docs/html/images/distribute/stories/doctor-who-legacy-screenshot_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/dots-icon.png b/docs/html/images/distribute/stories/dots-icon.png
new file mode 100644
index 0000000..721c536
--- /dev/null
+++ b/docs/html/images/distribute/stories/dots-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/dots-screenshot.png b/docs/html/images/distribute/stories/dots-screenshot.png
new file mode 100644
index 0000000..ec95f69
--- /dev/null
+++ b/docs/html/images/distribute/stories/dots-screenshot.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/dots-screenshot_2x.png b/docs/html/images/distribute/stories/dots-screenshot_2x.png
new file mode 100644
index 0000000..17edb12
--- /dev/null
+++ b/docs/html/images/distribute/stories/dots-screenshot_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/gameloft-asphalt8-icon.png b/docs/html/images/distribute/stories/gameloft-asphalt8-icon.png
new file mode 100644
index 0000000..27e5219
--- /dev/null
+++ b/docs/html/images/distribute/stories/gameloft-asphalt8-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/gameloft-asphalt8-screenshot.png b/docs/html/images/distribute/stories/gameloft-asphalt8-screenshot.png
new file mode 100644
index 0000000..f55c774
--- /dev/null
+++ b/docs/html/images/distribute/stories/gameloft-asphalt8-screenshot.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/gameloft-asphalt8-screenshot_2x.png b/docs/html/images/distribute/stories/gameloft-asphalt8-screenshot_2x.png
new file mode 100644
index 0000000..2b0c1e3
--- /dev/null
+++ b/docs/html/images/distribute/stories/gameloft-asphalt8-screenshot_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/glu-dh-icon.jpg b/docs/html/images/distribute/stories/glu-dh-icon.jpg
new file mode 100644
index 0000000..2010bf3
--- /dev/null
+++ b/docs/html/images/distribute/stories/glu-dh-icon.jpg
Binary files differ
diff --git a/docs/html/images/distribute/stories/glu-dh-icon_2x.jpg b/docs/html/images/distribute/stories/glu-dh-icon_2x.jpg
new file mode 100644
index 0000000..4f20e72
--- /dev/null
+++ b/docs/html/images/distribute/stories/glu-dh-icon_2x.jpg
Binary files differ
diff --git a/docs/html/images/distribute/stories/glu-dh-screenshot.png b/docs/html/images/distribute/stories/glu-dh-screenshot.png
new file mode 100644
index 0000000..428e66f
--- /dev/null
+++ b/docs/html/images/distribute/stories/glu-dh-screenshot.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/glu-dh-screenshot_2x.png b/docs/html/images/distribute/stories/glu-dh-screenshot_2x.png
new file mode 100644
index 0000000..691a34b
--- /dev/null
+++ b/docs/html/images/distribute/stories/glu-dh-screenshot_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/glu-eternity-warriors-icon.jpg b/docs/html/images/distribute/stories/glu-eternity-warriors-icon.jpg
new file mode 100644
index 0000000..c4b0cd1
--- /dev/null
+++ b/docs/html/images/distribute/stories/glu-eternity-warriors-icon.jpg
Binary files differ
diff --git a/docs/html/images/distribute/stories/glu-eternity-warriors-screenshot.png b/docs/html/images/distribute/stories/glu-eternity-warriors-screenshot.png
new file mode 100644
index 0000000..4b8807e
--- /dev/null
+++ b/docs/html/images/distribute/stories/glu-eternity-warriors-screenshot.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/glu-eternity-warriors-screenshot_2x.png b/docs/html/images/distribute/stories/glu-eternity-warriors-screenshot_2x.png
new file mode 100644
index 0000000..b41e917
--- /dev/null
+++ b/docs/html/images/distribute/stories/glu-eternity-warriors-screenshot_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/glu-tap-baseball-icon.jpg b/docs/html/images/distribute/stories/glu-tap-baseball-icon.jpg
new file mode 100644
index 0000000..f99710b
--- /dev/null
+++ b/docs/html/images/distribute/stories/glu-tap-baseball-icon.jpg
Binary files differ
diff --git a/docs/html/images/distribute/stories/glu-tap-baseball-screenshot.png b/docs/html/images/distribute/stories/glu-tap-baseball-screenshot.png
new file mode 100644
index 0000000..92aa942
--- /dev/null
+++ b/docs/html/images/distribute/stories/glu-tap-baseball-screenshot.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/glu-tap-baseball-screenshot_2x.png b/docs/html/images/distribute/stories/glu-tap-baseball-screenshot_2x.png
new file mode 100644
index 0000000..df6c8a8
--- /dev/null
+++ b/docs/html/images/distribute/stories/glu-tap-baseball-screenshot_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/hotheadgames-firefight-icon.png b/docs/html/images/distribute/stories/hotheadgames-firefight-icon.png
new file mode 100644
index 0000000..c7592c1
--- /dev/null
+++ b/docs/html/images/distribute/stories/hotheadgames-firefight-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/hotheadgames-firefight-screenshot.png b/docs/html/images/distribute/stories/hotheadgames-firefight-screenshot.png
new file mode 100644
index 0000000..f93010e
--- /dev/null
+++ b/docs/html/images/distribute/stories/hotheadgames-firefight-screenshot.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/hotheadgames-firefight-screenshot_2x.png b/docs/html/images/distribute/stories/hotheadgames-firefight-screenshot_2x.png
new file mode 100644
index 0000000..4761715
--- /dev/null
+++ b/docs/html/images/distribute/stories/hotheadgames-firefight-screenshot_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/indian-rummy-icon.png b/docs/html/images/distribute/stories/indian-rummy-icon.png
new file mode 100644
index 0000000..2e99112
--- /dev/null
+++ b/docs/html/images/distribute/stories/indian-rummy-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/indian-rummy-screenshot.jpg b/docs/html/images/distribute/stories/indian-rummy-screenshot.jpg
new file mode 100644
index 0000000..a446a8a
--- /dev/null
+++ b/docs/html/images/distribute/stories/indian-rummy-screenshot.jpg
Binary files differ
diff --git a/docs/html/images/distribute/stories/indian-rummy-screenshot_2x.jpg b/docs/html/images/distribute/stories/indian-rummy-screenshot_2x.jpg
new file mode 100644
index 0000000..61943fc
--- /dev/null
+++ b/docs/html/images/distribute/stories/indian-rummy-screenshot_2x.jpg
Binary files differ
diff --git a/docs/html/images/distribute/stories/intuit-mint-icon.png b/docs/html/images/distribute/stories/intuit-mint-icon.png
new file mode 100644
index 0000000..b09e430
--- /dev/null
+++ b/docs/html/images/distribute/stories/intuit-mint-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/intuit-mint-screenshot.png b/docs/html/images/distribute/stories/intuit-mint-screenshot.png
new file mode 100644
index 0000000..212ae86
--- /dev/null
+++ b/docs/html/images/distribute/stories/intuit-mint-screenshot.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/intuit-mint-screenshot_2x.png b/docs/html/images/distribute/stories/intuit-mint-screenshot_2x.png
new file mode 100644
index 0000000..39b8f11
--- /dev/null
+++ b/docs/html/images/distribute/stories/intuit-mint-screenshot_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/kongregate-adv-cap-icon.png b/docs/html/images/distribute/stories/kongregate-adv-cap-icon.png
new file mode 100644
index 0000000..ca8c597
--- /dev/null
+++ b/docs/html/images/distribute/stories/kongregate-adv-cap-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/kongregate-adv-cap-screenshot.png b/docs/html/images/distribute/stories/kongregate-adv-cap-screenshot.png
new file mode 100644
index 0000000..5f751e2
--- /dev/null
+++ b/docs/html/images/distribute/stories/kongregate-adv-cap-screenshot.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/kongregate-adv-cap-screenshot_2x.png b/docs/html/images/distribute/stories/kongregate-adv-cap-screenshot_2x.png
new file mode 100644
index 0000000..cff67dc
--- /dev/null
+++ b/docs/html/images/distribute/stories/kongregate-adv-cap-screenshot_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/kongregate-global-assault-icon.png b/docs/html/images/distribute/stories/kongregate-global-assault-icon.png
new file mode 100644
index 0000000..b93180d
--- /dev/null
+++ b/docs/html/images/distribute/stories/kongregate-global-assault-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/kongregate-global-assault-screenshot.png b/docs/html/images/distribute/stories/kongregate-global-assault-screenshot.png
new file mode 100644
index 0000000..d0709a3
--- /dev/null
+++ b/docs/html/images/distribute/stories/kongregate-global-assault-screenshot.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/leos-fortune-icon.png b/docs/html/images/distribute/stories/leos-fortune-icon.png
new file mode 100644
index 0000000..390c027
--- /dev/null
+++ b/docs/html/images/distribute/stories/leos-fortune-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/leos-fortune-screenshot.png b/docs/html/images/distribute/stories/leos-fortune-screenshot.png
new file mode 100644
index 0000000..751dffb
--- /dev/null
+++ b/docs/html/images/distribute/stories/leos-fortune-screenshot.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/leos-fortune-screenshot_2x.png b/docs/html/images/distribute/stories/leos-fortune-screenshot_2x.png
new file mode 100644
index 0000000..d67c9af
--- /dev/null
+++ b/docs/html/images/distribute/stories/leos-fortune-screenshot_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/noodlecake-super-stickman-icon.png b/docs/html/images/distribute/stories/noodlecake-super-stickman-icon.png
new file mode 100644
index 0000000..2ae6e3f
--- /dev/null
+++ b/docs/html/images/distribute/stories/noodlecake-super-stickman-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/noodlecake-super-stickman-screenshot.png b/docs/html/images/distribute/stories/noodlecake-super-stickman-screenshot.png
new file mode 100644
index 0000000..9e53537
--- /dev/null
+++ b/docs/html/images/distribute/stories/noodlecake-super-stickman-screenshot.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/noodlecake-super-stickman-screenshot_2x.png b/docs/html/images/distribute/stories/noodlecake-super-stickman-screenshot_2x.png
new file mode 100644
index 0000000..c1e8824
--- /dev/null
+++ b/docs/html/images/distribute/stories/noodlecake-super-stickman-screenshot_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/rememberthemilk-icon.png b/docs/html/images/distribute/stories/rememberthemilk-icon.png
new file mode 100644
index 0000000..2e026c0
--- /dev/null
+++ b/docs/html/images/distribute/stories/rememberthemilk-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/rememberthemilk-screenshot.png b/docs/html/images/distribute/stories/rememberthemilk-screenshot.png
new file mode 100644
index 0000000..62b431e
--- /dev/null
+++ b/docs/html/images/distribute/stories/rememberthemilk-screenshot.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/rememberthemilk-screenshot_2x.png b/docs/html/images/distribute/stories/rememberthemilk-screenshot_2x.png
new file mode 100644
index 0000000..25d0391
--- /dev/null
+++ b/docs/html/images/distribute/stories/rememberthemilk-screenshot_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/rvappstudios-zombie-icon.png b/docs/html/images/distribute/stories/rvappstudios-zombie-icon.png
new file mode 100644
index 0000000..70c9cb2
--- /dev/null
+++ b/docs/html/images/distribute/stories/rvappstudios-zombie-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/rvappstudios-zombie-screenshot.jpg b/docs/html/images/distribute/stories/rvappstudios-zombie-screenshot.jpg
new file mode 100644
index 0000000..32d93df
--- /dev/null
+++ b/docs/html/images/distribute/stories/rvappstudios-zombie-screenshot.jpg
Binary files differ
diff --git a/docs/html/images/distribute/stories/rvappstudios-zombie-screenshot_2x.jpg b/docs/html/images/distribute/stories/rvappstudios-zombie-screenshot_2x.jpg
new file mode 100644
index 0000000..2981a2c
--- /dev/null
+++ b/docs/html/images/distribute/stories/rvappstudios-zombie-screenshot_2x.jpg
Binary files differ
diff --git a/docs/html/images/distribute/stories/sayhichat-icon.png b/docs/html/images/distribute/stories/sayhichat-icon.png
new file mode 100644
index 0000000..2ed7fed
--- /dev/null
+++ b/docs/html/images/distribute/stories/sayhichat-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/sayhichat-screenshot.jpg b/docs/html/images/distribute/stories/sayhichat-screenshot.jpg
new file mode 100644
index 0000000..55a7997
--- /dev/null
+++ b/docs/html/images/distribute/stories/sayhichat-screenshot.jpg
Binary files differ
diff --git a/docs/html/images/distribute/stories/sayhichat-screenshot_2x.jpg b/docs/html/images/distribute/stories/sayhichat-screenshot_2x.jpg
new file mode 100644
index 0000000..b93e983
--- /dev/null
+++ b/docs/html/images/distribute/stories/sayhichat-screenshot_2x.jpg
Binary files differ
diff --git a/docs/html/images/distribute/stories/tinyvillage-icon.png b/docs/html/images/distribute/stories/tinyvillage-icon.png
new file mode 100644
index 0000000..313e4d4
--- /dev/null
+++ b/docs/html/images/distribute/stories/tinyvillage-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tinyvillage-screenshot.png b/docs/html/images/distribute/stories/tinyvillage-screenshot.png
new file mode 100644
index 0000000..e149a76
--- /dev/null
+++ b/docs/html/images/distribute/stories/tinyvillage-screenshot.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/tinyvillage-screenshot_2x.png b/docs/html/images/distribute/stories/tinyvillage-screenshot_2x.png
new file mode 100644
index 0000000..51948b9
--- /dev/null
+++ b/docs/html/images/distribute/stories/tinyvillage-screenshot_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/two-dots-icon.png b/docs/html/images/distribute/stories/two-dots-icon.png
new file mode 100644
index 0000000..b75fe51
--- /dev/null
+++ b/docs/html/images/distribute/stories/two-dots-icon.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/two-dots-screenshot.png b/docs/html/images/distribute/stories/two-dots-screenshot.png
new file mode 100644
index 0000000..13ce693
--- /dev/null
+++ b/docs/html/images/distribute/stories/two-dots-screenshot.png
Binary files differ
diff --git a/docs/html/images/distribute/stories/two-dots-screenshot_2x.png b/docs/html/images/distribute/stories/two-dots-screenshot_2x.png
new file mode 100644
index 0000000..2e34a68
--- /dev/null
+++ b/docs/html/images/distribute/stories/two-dots-screenshot_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/users/banners.png b/docs/html/images/distribute/users/banners.png
new file mode 100644
index 0000000..44a2418
--- /dev/null
+++ b/docs/html/images/distribute/users/banners.png
Binary files differ
diff --git a/docs/html/images/distribute/users/banners_2x.png b/docs/html/images/distribute/users/banners_2x.png
new file mode 100644
index 0000000..2c1cb46
--- /dev/null
+++ b/docs/html/images/distribute/users/banners_2x.png
Binary files differ
diff --git a/docs/html/images/google/gps-play_games_logo.png b/docs/html/images/google/gps-play_games_logo.png
index 19692fa..9a107b2 100644
--- a/docs/html/images/google/gps-play_games_logo.png
+++ b/docs/html/images/google/gps-play_games_logo.png
Binary files differ
diff --git a/docs/html/images/google/gps-play_games_logo_2x.png b/docs/html/images/google/gps-play_games_logo_2x.png
new file mode 100644
index 0000000..fcc0c27
--- /dev/null
+++ b/docs/html/images/google/gps-play_games_logo_2x.png
Binary files differ
diff --git a/docs/html/images/gp-badges-set.png b/docs/html/images/gp-badges-set.png
index e2e0e94..f1c74a7 100644
--- a/docs/html/images/gp-badges-set.png
+++ b/docs/html/images/gp-badges-set.png
Binary files differ
diff --git a/docs/html/images/home/androidn-hero-n5.png b/docs/html/images/home/androidn-hero-n5.png
new file mode 100644
index 0000000..58c0837
--- /dev/null
+++ b/docs/html/images/home/androidn-hero-n5.png
Binary files differ
diff --git a/docs/html/images/home/n-preview-hero.png b/docs/html/images/home/n-preview-hero.png
new file mode 100644
index 0000000..b9636dd
--- /dev/null
+++ b/docs/html/images/home/n-preview-hero.png
Binary files differ
diff --git a/docs/html/images/home/n-preview-hero_2x.png b/docs/html/images/home/n-preview-hero_2x.png
new file mode 100644
index 0000000..c59d195
--- /dev/null
+++ b/docs/html/images/home/n-preview-hero_2x.png
Binary files differ
diff --git a/docs/html/images/n-preview-updates-narrow_2x.png b/docs/html/images/n-preview-updates-narrow_2x.png
new file mode 100644
index 0000000..cf2ad90
--- /dev/null
+++ b/docs/html/images/n-preview-updates-narrow_2x.png
Binary files differ
diff --git a/docs/html/images/n-preview-updates_2x.png b/docs/html/images/n-preview-updates_2x.png
new file mode 100644
index 0000000..ec64d68
--- /dev/null
+++ b/docs/html/images/n-preview-updates_2x.png
Binary files differ
diff --git a/docs/html/preview/images/perf-test-frame-latency.png b/docs/html/images/performance-testing/perf-test-frame-latency.png
similarity index 100%
rename from docs/html/preview/images/perf-test-frame-latency.png
rename to docs/html/images/performance-testing/perf-test-frame-latency.png
Binary files differ
diff --git a/docs/html/preview/images/perf-test-framestats.png b/docs/html/images/performance-testing/perf-test-framestats.png
similarity index 100%
rename from docs/html/preview/images/perf-test-framestats.png
rename to docs/html/images/performance-testing/perf-test-framestats.png
Binary files differ
diff --git a/docs/html/images/testing/testing-icon.png b/docs/html/images/testing/testing-icon.png
new file mode 100644
index 0000000..41a783b
--- /dev/null
+++ b/docs/html/images/testing/testing-icon.png
Binary files differ
diff --git a/docs/html/images/tools/ai-ilightbulb.png b/docs/html/images/tools/ai-ilightbulb.png
new file mode 100644
index 0000000..e9522f3
--- /dev/null
+++ b/docs/html/images/tools/ai-ilightbulb.png
Binary files differ
diff --git a/docs/html/images/tools/ai-lint.png b/docs/html/images/tools/ai-lint.png
new file mode 100644
index 0000000..2a0aabc
--- /dev/null
+++ b/docs/html/images/tools/ai-lint.png
Binary files differ
diff --git a/docs/html/images/tools/am-alloctracker.png b/docs/html/images/tools/am-alloctracker.png
new file mode 100644
index 0000000..b94713d
--- /dev/null
+++ b/docs/html/images/tools/am-alloctracker.png
Binary files differ
diff --git a/docs/html/images/tools/am-androidmon.png b/docs/html/images/tools/am-androidmon.png
new file mode 100644
index 0000000..fc832b5
--- /dev/null
+++ b/docs/html/images/tools/am-androidmon.png
Binary files differ
diff --git a/docs/html/images/tools/am-cpumon.png b/docs/html/images/tools/am-cpumon.png
new file mode 100644
index 0000000..487c010
--- /dev/null
+++ b/docs/html/images/tools/am-cpumon.png
Binary files differ
diff --git a/docs/html/images/tools/am-domtree.png b/docs/html/images/tools/am-domtree.png
new file mode 100644
index 0000000..8a995af
--- /dev/null
+++ b/docs/html/images/tools/am-domtree.png
Binary files differ
diff --git a/docs/html/images/tools/am-dumpalloc.png b/docs/html/images/tools/am-dumpalloc.png
new file mode 100644
index 0000000..d0d18e7
--- /dev/null
+++ b/docs/html/images/tools/am-dumpalloc.png
Binary files differ
diff --git a/docs/html/images/tools/am-gc.png b/docs/html/images/tools/am-gc.png
new file mode 100644
index 0000000..2ae4858
--- /dev/null
+++ b/docs/html/images/tools/am-gc.png
Binary files differ
diff --git a/docs/html/images/tools/am-gpumon.png b/docs/html/images/tools/am-gpumon.png
new file mode 100644
index 0000000..ed1e3df
--- /dev/null
+++ b/docs/html/images/tools/am-gpumon.png
Binary files differ
diff --git a/docs/html/images/tools/am-hprofanalyzer.png b/docs/html/images/tools/am-hprofanalyzer.png
new file mode 100644
index 0000000..9c2cb43
--- /dev/null
+++ b/docs/html/images/tools/am-hprofanalyzer.png
Binary files differ
diff --git a/docs/html/images/tools/am-hprofviewer.png b/docs/html/images/tools/am-hprofviewer.png
new file mode 100644
index 0000000..342590f
--- /dev/null
+++ b/docs/html/images/tools/am-hprofviewer.png
Binary files differ
diff --git a/docs/html/images/tools/am-ialloctracking.png b/docs/html/images/tools/am-ialloctracking.png
new file mode 100644
index 0000000..dc7ac37
--- /dev/null
+++ b/docs/html/images/tools/am-ialloctracking.png
Binary files differ
diff --git a/docs/html/images/tools/am-iclear.png b/docs/html/images/tools/am-iclear.png
new file mode 100644
index 0000000..aefb365
--- /dev/null
+++ b/docs/html/images/tools/am-iclear.png
Binary files differ
diff --git a/docs/html/images/tools/am-icon.png b/docs/html/images/tools/am-icon.png
new file mode 100644
index 0000000..cd67a6a
--- /dev/null
+++ b/docs/html/images/tools/am-icon.png
Binary files differ
diff --git a/docs/html/images/tools/am-idom.png b/docs/html/images/tools/am-idom.png
new file mode 100644
index 0000000..d15d674
--- /dev/null
+++ b/docs/html/images/tools/am-idom.png
Binary files differ
diff --git a/docs/html/images/tools/am-idownstack.png b/docs/html/images/tools/am-idownstack.png
new file mode 100644
index 0000000..14e1a31
--- /dev/null
+++ b/docs/html/images/tools/am-idownstack.png
Binary files differ
diff --git a/docs/html/images/tools/am-idump.png b/docs/html/images/tools/am-idump.png
new file mode 100644
index 0000000..d364c03
--- /dev/null
+++ b/docs/html/images/tools/am-idump.png
Binary files differ
diff --git a/docs/html/images/tools/am-idumpend.png b/docs/html/images/tools/am-idumpend.png
new file mode 100644
index 0000000..e3261a5
--- /dev/null
+++ b/docs/html/images/tools/am-idumpend.png
Binary files differ
diff --git a/docs/html/images/tools/am-idumpstart.png b/docs/html/images/tools/am-idumpstart.png
new file mode 100644
index 0000000..b6fa667
--- /dev/null
+++ b/docs/html/images/tools/am-idumpstart.png
Binary files differ
diff --git a/docs/html/images/tools/am-igc.png b/docs/html/images/tools/am-igc.png
new file mode 100644
index 0000000..742d27d
--- /dev/null
+++ b/docs/html/images/tools/am-igc.png
Binary files differ
diff --git a/docs/html/images/tools/am-igcroot.png b/docs/html/images/tools/am-igcroot.png
new file mode 100644
index 0000000..6af7355
--- /dev/null
+++ b/docs/html/images/tools/am-igcroot.png
Binary files differ
diff --git a/docs/html/images/tools/am-igear.png b/docs/html/images/tools/am-igear.png
new file mode 100644
index 0000000..e7f8a2b
--- /dev/null
+++ b/docs/html/images/tools/am-igear.png
Binary files differ
diff --git a/docs/html/images/tools/am-ihide.png b/docs/html/images/tools/am-ihide.png
new file mode 100644
index 0000000..d8f5f01
--- /dev/null
+++ b/docs/html/images/tools/am-ihide.png
Binary files differ
diff --git a/docs/html/images/tools/am-ijumptosource.png b/docs/html/images/tools/am-ijumptosource.png
new file mode 100644
index 0000000..5f37477
--- /dev/null
+++ b/docs/html/images/tools/am-ijumptosource.png
Binary files differ
diff --git a/docs/html/images/tools/am-imethodtrace.png b/docs/html/images/tools/am-imethodtrace.png
new file mode 100644
index 0000000..96fe34a
--- /dev/null
+++ b/docs/html/images/tools/am-imethodtrace.png
Binary files differ
diff --git a/docs/html/images/tools/am-ipause.png b/docs/html/images/tools/am-ipause.png
new file mode 100644
index 0000000..258eca8
--- /dev/null
+++ b/docs/html/images/tools/am-ipause.png
Binary files differ
diff --git a/docs/html/images/tools/am-iperformanalysis.png b/docs/html/images/tools/am-iperformanalysis.png
new file mode 100644
index 0000000..58ebcbb
--- /dev/null
+++ b/docs/html/images/tools/am-iperformanalysis.png
Binary files differ
diff --git a/docs/html/images/tools/am-iprint.png b/docs/html/images/tools/am-iprint.png
new file mode 100644
index 0000000..65525a8
--- /dev/null
+++ b/docs/html/images/tools/am-iprint.png
Binary files differ
diff --git a/docs/html/images/tools/am-irestart.png b/docs/html/images/tools/am-irestart.png
new file mode 100644
index 0000000..916402c
--- /dev/null
+++ b/docs/html/images/tools/am-irestart.png
Binary files differ
diff --git a/docs/html/images/tools/am-iscreencapture.png b/docs/html/images/tools/am-iscreencapture.png
new file mode 100644
index 0000000..68135a7
--- /dev/null
+++ b/docs/html/images/tools/am-iscreencapture.png
Binary files differ
diff --git a/docs/html/images/tools/am-iscrollend.png b/docs/html/images/tools/am-iscrollend.png
new file mode 100644
index 0000000..4db6e23
--- /dev/null
+++ b/docs/html/images/tools/am-iscrollend.png
Binary files differ
diff --git a/docs/html/images/tools/am-isearch.png b/docs/html/images/tools/am-isearch.png
new file mode 100644
index 0000000..b792fc3
--- /dev/null
+++ b/docs/html/images/tools/am-isearch.png
Binary files differ
diff --git a/docs/html/images/tools/am-isoftwraps.png b/docs/html/images/tools/am-isoftwraps.png
new file mode 100644
index 0000000..ce0b24f
--- /dev/null
+++ b/docs/html/images/tools/am-isoftwraps.png
Binary files differ
diff --git a/docs/html/images/tools/am-isysteminfo.png b/docs/html/images/tools/am-isysteminfo.png
new file mode 100644
index 0000000..37d77db
--- /dev/null
+++ b/docs/html/images/tools/am-isysteminfo.png
Binary files differ
diff --git a/docs/html/images/tools/am-iterminate.png b/docs/html/images/tools/am-iterminate.png
new file mode 100644
index 0000000..238ba86
--- /dev/null
+++ b/docs/html/images/tools/am-iterminate.png
Binary files differ
diff --git a/docs/html/images/tools/am-iupstack.png b/docs/html/images/tools/am-iupstack.png
new file mode 100644
index 0000000..ca362e9
--- /dev/null
+++ b/docs/html/images/tools/am-iupstack.png
Binary files differ
diff --git a/docs/html/images/tools/am-ivideo.png b/docs/html/images/tools/am-ivideo.png
new file mode 100644
index 0000000..901eaf1
--- /dev/null
+++ b/docs/html/images/tools/am-ivideo.png
Binary files differ
diff --git a/docs/html/images/tools/am-logcatmon.png b/docs/html/images/tools/am-logcatmon.png
new file mode 100644
index 0000000..b0de41a
--- /dev/null
+++ b/docs/html/images/tools/am-logcatmon.png
Binary files differ
diff --git a/docs/html/images/tools/am-methodtrace.png b/docs/html/images/tools/am-methodtrace.png
new file mode 100644
index 0000000..8d5ca4e
--- /dev/null
+++ b/docs/html/images/tools/am-methodtrace.png
Binary files differ
diff --git a/docs/html/images/tools/am-networkmon.png b/docs/html/images/tools/am-networkmon.png
new file mode 100644
index 0000000..95b3a5b
--- /dev/null
+++ b/docs/html/images/tools/am-networkmon.png
Binary files differ
diff --git a/docs/html/images/tools/and-studio_feat-gradle_2x.png b/docs/html/images/tools/and-studio_feat-gradle_2x.png
new file mode 100644
index 0000000..b4821b6
--- /dev/null
+++ b/docs/html/images/tools/and-studio_feat-gradle_2x.png
Binary files differ
diff --git a/docs/html/images/tools/and-studio_shortcuts-included_2x.png b/docs/html/images/tools/and-studio_shortcuts-included_2x.png
new file mode 100644
index 0000000..8d4e30b
--- /dev/null
+++ b/docs/html/images/tools/and-studio_shortcuts-included_2x.png
Binary files differ
diff --git a/docs/html/images/tools/as-api-level-preview.png b/docs/html/images/tools/as-api-level-preview.png
new file mode 100644
index 0000000..602a6ad
--- /dev/null
+++ b/docs/html/images/tools/as-api-level-preview.png
Binary files differ
diff --git a/docs/html/images/tools/as-debugbutton.png b/docs/html/images/tools/as-debugbutton.png
index 55e95d1..f8edf4d 100644
--- a/docs/html/images/tools/as-debugbutton.png
+++ b/docs/html/images/tools/as-debugbutton.png
Binary files differ
diff --git a/docs/html/images/tools/as-find-apk.png b/docs/html/images/tools/as-find-apk.png
new file mode 100644
index 0000000..e68d2b1
--- /dev/null
+++ b/docs/html/images/tools/as-find-apk.png
Binary files differ
diff --git a/docs/html/images/tools/as-gradle.png b/docs/html/images/tools/as-gradle.png
new file mode 100644
index 0000000..a1b88ae
--- /dev/null
+++ b/docs/html/images/tools/as-gradle.png
Binary files differ
diff --git a/docs/html/images/tools/as-run.png b/docs/html/images/tools/as-run.png
index 76c7020..dbc3e33 100644
--- a/docs/html/images/tools/as-run.png
+++ b/docs/html/images/tools/as-run.png
Binary files differ
diff --git a/docs/html/images/tools/codeeditor-low.gif b/docs/html/images/tools/codeeditor-low.gif
new file mode 100644
index 0000000..50d840c
--- /dev/null
+++ b/docs/html/images/tools/codeeditor-low.gif
Binary files differ
diff --git a/docs/html/images/tools/image-out.png b/docs/html/images/tools/image-out.png
new file mode 100644
index 0000000..0373b16
--- /dev/null
+++ b/docs/html/images/tools/image-out.png
Binary files differ
diff --git a/docs/html/images/tools/performance/memory-monitor/gettingstarted_image001.png b/docs/html/images/tools/performance/memory-monitor/gettingstarted_image001.png
index c6fe045..c4ea2dc 100644
--- a/docs/html/images/tools/performance/memory-monitor/gettingstarted_image001.png
+++ b/docs/html/images/tools/performance/memory-monitor/gettingstarted_image001.png
Binary files differ
diff --git a/docs/html/images/tools/performance/memory-monitor/gettingstarted_image001b.png b/docs/html/images/tools/performance/memory-monitor/gettingstarted_image001b.png
new file mode 100644
index 0000000..ea76d45
--- /dev/null
+++ b/docs/html/images/tools/performance/memory-monitor/gettingstarted_image001b.png
Binary files differ
diff --git a/docs/html/images/tools/signstudio3.png b/docs/html/images/tools/signstudio3.png
index f25bf00..4d51764 100644
--- a/docs/html/images/tools/signstudio3.png
+++ b/docs/html/images/tools/signstudio3.png
Binary files differ
diff --git a/docs/html/images/tools/studio-translations-editor.png b/docs/html/images/tools/studio-translations-editor.png
new file mode 100644
index 0000000..22722d2
--- /dev/null
+++ b/docs/html/images/tools/studio-translations-editor.png
Binary files differ
diff --git a/docs/html/images/tools/studio/ic_devices_grey.png b/docs/html/images/tools/studio/ic_devices_grey.png
new file mode 100644
index 0000000..4adfb88
--- /dev/null
+++ b/docs/html/images/tools/studio/ic_devices_grey.png
Binary files differ
diff --git a/docs/html/images/tools/studio/ic_explore_grey.png b/docs/html/images/tools/studio/ic_explore_grey.png
new file mode 100644
index 0000000..d1bc527
--- /dev/null
+++ b/docs/html/images/tools/studio/ic_explore_grey.png
Binary files differ
diff --git a/docs/html/images/tools/studio/ic_school_grey.png b/docs/html/images/tools/studio/ic_school_grey.png
new file mode 100644
index 0000000..93cc855
--- /dev/null
+++ b/docs/html/images/tools/studio/ic_school_grey.png
Binary files differ
diff --git a/docs/html/images/tools/studio/studio-feature-devices_2x.png b/docs/html/images/tools/studio/studio-feature-devices_2x.png
new file mode 100644
index 0000000..af6f89f
--- /dev/null
+++ b/docs/html/images/tools/studio/studio-feature-devices_2x.png
Binary files differ
diff --git a/docs/html/images/tools/studio/studio-feature-emulator_2x.jpg b/docs/html/images/tools/studio/studio-feature-emulator_2x.jpg
new file mode 100644
index 0000000..7518931
--- /dev/null
+++ b/docs/html/images/tools/studio/studio-feature-emulator_2x.jpg
Binary files differ
diff --git a/docs/html/images/tools/studio/studio-feature-github_2x.png b/docs/html/images/tools/studio/studio-feature-github_2x.png
new file mode 100644
index 0000000..8d4e30b
--- /dev/null
+++ b/docs/html/images/tools/studio/studio-feature-github_2x.png
Binary files differ
diff --git a/docs/html/images/tools/studio/studio-feature-gradle_2x.png b/docs/html/images/tools/studio/studio-feature-gradle_2x.png
new file mode 100644
index 0000000..b4821b6
--- /dev/null
+++ b/docs/html/images/tools/studio/studio-feature-gradle_2x.png
Binary files differ
diff --git a/docs/html/images/tools/studio/studio-feature-instant-run_2x.png b/docs/html/images/tools/studio/studio-feature-instant-run_2x.png
new file mode 100644
index 0000000..b76d7c0
--- /dev/null
+++ b/docs/html/images/tools/studio/studio-feature-instant-run_2x.png
Binary files differ
diff --git a/docs/html/images/tools/studio/studio-feature-livetemplate.gif b/docs/html/images/tools/studio/studio-feature-livetemplate.gif
new file mode 100644
index 0000000..e265d91
--- /dev/null
+++ b/docs/html/images/tools/studio/studio-feature-livetemplate.gif
Binary files differ
diff --git a/docs/html/images/tools/studio/studio-project-files.png b/docs/html/images/tools/studio/studio-project-files.png
new file mode 100644
index 0000000..695c561
--- /dev/null
+++ b/docs/html/images/tools/studio/studio-project-files.png
Binary files differ
diff --git a/docs/html/images/tools/trim.png b/docs/html/images/tools/trim.png
new file mode 100644
index 0000000..8420dd4
--- /dev/null
+++ b/docs/html/images/tools/trim.png
Binary files differ
diff --git a/docs/html/images/tools/vas-codepreview.png b/docs/html/images/tools/vas-codepreview.png
new file mode 100644
index 0000000..ea8482c
--- /dev/null
+++ b/docs/html/images/tools/vas-codepreview.png
Binary files differ
diff --git a/docs/html/images/tools/vas-imageincode.png b/docs/html/images/tools/vas-imageincode.png
new file mode 100644
index 0000000..8295cfa
--- /dev/null
+++ b/docs/html/images/tools/vas-imageincode.png
Binary files differ
diff --git a/docs/html/images/tools/vas-layout.png b/docs/html/images/tools/vas-layout.png
new file mode 100644
index 0000000..f70461b
--- /dev/null
+++ b/docs/html/images/tools/vas-layout.png
Binary files differ
diff --git a/docs/html/images/tools/vas-materialicon.png b/docs/html/images/tools/vas-materialicon.png
new file mode 100644
index 0000000..d04a831
--- /dev/null
+++ b/docs/html/images/tools/vas-materialicon.png
Binary files differ
diff --git a/docs/html/images/tools/vas-rtl.png b/docs/html/images/tools/vas-rtl.png
new file mode 100644
index 0000000..0d45b94
--- /dev/null
+++ b/docs/html/images/tools/vas-rtl.png
Binary files differ
diff --git a/docs/html/images/tools/vas-rtlmenu.png b/docs/html/images/tools/vas-rtlmenu.png
new file mode 100644
index 0000000..aaf95de
--- /dev/null
+++ b/docs/html/images/tools/vas-rtlmenu.png
Binary files differ
diff --git a/docs/html/images/tools/vas-svgerror.png b/docs/html/images/tools/vas-svgerror.png
new file mode 100644
index 0000000..8c85247
--- /dev/null
+++ b/docs/html/images/tools/vas-svgerror.png
Binary files differ
diff --git a/docs/html/images/training/appbar/action_view.png b/docs/html/images/training/appbar/action_view.png
new file mode 100644
index 0000000..29e8528
--- /dev/null
+++ b/docs/html/images/training/appbar/action_view.png
Binary files differ
diff --git a/docs/html/images/training/appbar/action_view_2x.png b/docs/html/images/training/appbar/action_view_2x.png
new file mode 100644
index 0000000..5c58b77
--- /dev/null
+++ b/docs/html/images/training/appbar/action_view_2x.png
Binary files differ
diff --git a/docs/html/images/training/appbar/appbar_basic.png b/docs/html/images/training/appbar/appbar_basic.png
new file mode 100644
index 0000000..bcac6f5
--- /dev/null
+++ b/docs/html/images/training/appbar/appbar_basic.png
Binary files differ
diff --git a/docs/html/images/training/appbar/appbar_basic_2x.png b/docs/html/images/training/appbar/appbar_basic_2x.png
new file mode 100644
index 0000000..3a6042d
--- /dev/null
+++ b/docs/html/images/training/appbar/appbar_basic_2x.png
Binary files differ
diff --git a/docs/html/images/training/appbar/appbar_sheets.png b/docs/html/images/training/appbar/appbar_sheets.png
new file mode 100644
index 0000000..74cefd9
--- /dev/null
+++ b/docs/html/images/training/appbar/appbar_sheets.png
Binary files differ
diff --git a/docs/html/images/training/appbar/appbar_sheets_2x.png b/docs/html/images/training/appbar/appbar_sheets_2x.png
new file mode 100644
index 0000000..8124110
--- /dev/null
+++ b/docs/html/images/training/appbar/appbar_sheets_2x.png
Binary files differ
diff --git a/docs/html/images/training/appbar/appbar_with_button.png b/docs/html/images/training/appbar/appbar_with_button.png
new file mode 100644
index 0000000..356f2f4
--- /dev/null
+++ b/docs/html/images/training/appbar/appbar_with_button.png
Binary files differ
diff --git a/docs/html/images/training/appbar/appbar_with_button_2x.png b/docs/html/images/training/appbar/appbar_with_button_2x.png
new file mode 100644
index 0000000..1292b24
--- /dev/null
+++ b/docs/html/images/training/appbar/appbar_with_button_2x.png
Binary files differ
diff --git a/docs/html/images/training/articles/user-data-overview-permissions-flow01.jpg b/docs/html/images/training/articles/user-data-overview-permissions-flow01.jpg
new file mode 100644
index 0000000..e3b192b
--- /dev/null
+++ b/docs/html/images/training/articles/user-data-overview-permissions-flow01.jpg
Binary files differ
diff --git a/docs/html/images/training/articles/user-data-overview-permissions-flow02.png b/docs/html/images/training/articles/user-data-overview-permissions-flow02.png
new file mode 100644
index 0000000..f572a44
--- /dev/null
+++ b/docs/html/images/training/articles/user-data-overview-permissions-flow02.png
Binary files differ
diff --git a/docs/html/images/training/articles/user-data-overview-permissions-groups.png b/docs/html/images/training/articles/user-data-overview-permissions-groups.png
new file mode 100644
index 0000000..5996489
--- /dev/null
+++ b/docs/html/images/training/articles/user-data-overview-permissions-groups.png
Binary files differ
diff --git a/docs/html/images/training/articles/user-data-overview-permissions-usage.jpg b/docs/html/images/training/articles/user-data-overview-permissions-usage.jpg
new file mode 100644
index 0000000..0732369
--- /dev/null
+++ b/docs/html/images/training/articles/user-data-overview-permissions-usage.jpg
Binary files differ
diff --git a/docs/html/images/training/assistant/image01.png b/docs/html/images/training/assistant/image01.png
new file mode 100644
index 0000000..d915bc2
--- /dev/null
+++ b/docs/html/images/training/assistant/image01.png
Binary files differ
diff --git a/docs/html/images/training/assistant/image02.png b/docs/html/images/training/assistant/image02.png
new file mode 100644
index 0000000..0307a30
--- /dev/null
+++ b/docs/html/images/training/assistant/image02.png
Binary files differ
diff --git a/docs/html/images/training/assistant/image03.png b/docs/html/images/training/assistant/image03.png
new file mode 100644
index 0000000..8834ffb
--- /dev/null
+++ b/docs/html/images/training/assistant/image03.png
Binary files differ
diff --git a/docs/html/images/training/assistant/image04.png b/docs/html/images/training/assistant/image04.png
new file mode 100644
index 0000000..743fbcc
--- /dev/null
+++ b/docs/html/images/training/assistant/image04.png
Binary files differ
diff --git a/docs/html/images/training/auto-desktop-head-unit-context-menu-enabled.png b/docs/html/images/training/auto-desktop-head-unit-context-menu-enabled.png
index 99e60e9..06361af 100644
--- a/docs/html/images/training/auto-desktop-head-unit-context-menu-enabled.png
+++ b/docs/html/images/training/auto-desktop-head-unit-context-menu-enabled.png
Binary files differ
diff --git a/docs/html/images/training/auto-desktop-head-unit-server-running.png b/docs/html/images/training/auto-desktop-head-unit-server-running.png
index 5aa3b83..f8e1f38 100644
--- a/docs/html/images/training/auto-desktop-head-unit-server-running.png
+++ b/docs/html/images/training/auto-desktop-head-unit-server-running.png
Binary files differ
diff --git a/docs/html/images/training/basics/actionbar-actions.png b/docs/html/images/training/basics/actionbar-actions.png
deleted file mode 100644
index 5195a8c..0000000
--- a/docs/html/images/training/basics/actionbar-actions.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/training/basics/actionbar-basic.png b/docs/html/images/training/basics/actionbar-basic.png
deleted file mode 100644
index ba77659..0000000
--- a/docs/html/images/training/basics/actionbar-basic.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/training/basics/actionbar-overlay@2x.png b/docs/html/images/training/basics/actionbar-overlay@2x.png
deleted file mode 100644
index 7014a19..0000000
--- a/docs/html/images/training/basics/actionbar-overlay@2x.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/training/basics/actionbar-theme-custom-tabs@2x.png b/docs/html/images/training/basics/actionbar-theme-custom-tabs@2x.png
deleted file mode 100644
index ea8c93b..0000000
--- a/docs/html/images/training/basics/actionbar-theme-custom-tabs@2x.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/training/basics/actionbar-theme-custom@2x.png b/docs/html/images/training/basics/actionbar-theme-custom@2x.png
deleted file mode 100644
index bb6f1a4..0000000
--- a/docs/html/images/training/basics/actionbar-theme-custom@2x.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/training/basics/actionbar-theme-dark-solid@2x.png b/docs/html/images/training/basics/actionbar-theme-dark-solid@2x.png
deleted file mode 100644
index bd16ffe..0000000
--- a/docs/html/images/training/basics/actionbar-theme-dark-solid@2x.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/training/basics/actionbar-theme-dark@2x.png b/docs/html/images/training/basics/actionbar-theme-dark@2x.png
deleted file mode 100644
index 88c3b22..0000000
--- a/docs/html/images/training/basics/actionbar-theme-dark@2x.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/training/basics/actionbar-theme-light-darkactionbar@2x.png b/docs/html/images/training/basics/actionbar-theme-light-darkactionbar@2x.png
deleted file mode 100644
index 5509e16..0000000
--- a/docs/html/images/training/basics/actionbar-theme-light-darkactionbar@2x.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/training/basics/actionbar-theme-light-solid@2x.png b/docs/html/images/training/basics/actionbar-theme-light-solid@2x.png
deleted file mode 100644
index 810ef46..0000000
--- a/docs/html/images/training/basics/actionbar-theme-light-solid@2x.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/training/basics/actionbar-theme-light@2x.png b/docs/html/images/training/basics/actionbar-theme-light@2x.png
deleted file mode 100644
index a0af43a..0000000
--- a/docs/html/images/training/basics/actionbar-theme-light@2x.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/training/doze.png b/docs/html/images/training/doze.png
new file mode 100644
index 0000000..32d0d5d
--- /dev/null
+++ b/docs/html/images/training/doze.png
Binary files differ
diff --git a/docs/html/images/training/enterprise/app_restrictions_diagram.png b/docs/html/images/training/enterprise/app_restrictions_diagram.png
new file mode 100644
index 0000000..5ab3f8d
--- /dev/null
+++ b/docs/html/images/training/enterprise/app_restrictions_diagram.png
Binary files differ
diff --git a/docs/html/images/training/enterprise/app_restrictions_diagram_2x.png b/docs/html/images/training/enterprise/app_restrictions_diagram_2x.png
new file mode 100644
index 0000000..13a2db1
--- /dev/null
+++ b/docs/html/images/training/enterprise/app_restrictions_diagram_2x.png
Binary files differ
diff --git a/docs/html/images/training/enterprise/pinning_vs_locktaskmode.png b/docs/html/images/training/enterprise/pinning_vs_locktaskmode.png
new file mode 100644
index 0000000..8fa470b
--- /dev/null
+++ b/docs/html/images/training/enterprise/pinning_vs_locktaskmode.png
Binary files differ
diff --git a/docs/html/images/training/enterprise/pinning_vs_locktaskmode_2x.png b/docs/html/images/training/enterprise/pinning_vs_locktaskmode_2x.png
new file mode 100644
index 0000000..d7690f4
--- /dev/null
+++ b/docs/html/images/training/enterprise/pinning_vs_locktaskmode_2x.png
Binary files differ
diff --git a/docs/html/images/training/firstapp/edittext_gravity.png b/docs/html/images/training/firstapp/edittext_gravity.png
index bc4f7ee..fcf0504 100644
--- a/docs/html/images/training/firstapp/edittext_gravity.png
+++ b/docs/html/images/training/firstapp/edittext_gravity.png
Binary files differ
diff --git a/docs/html/images/training/firstapp/edittext_wrap.png b/docs/html/images/training/firstapp/edittext_wrap.png
index fe56731..51f34f4 100644
--- a/docs/html/images/training/firstapp/edittext_wrap.png
+++ b/docs/html/images/training/firstapp/edittext_wrap.png
Binary files differ
diff --git a/docs/html/images/training/performance/network_traffic_colors.png b/docs/html/images/training/performance/network_traffic_colors.png
new file mode 100644
index 0000000..e3f4014
--- /dev/null
+++ b/docs/html/images/training/performance/network_traffic_colors.png
Binary files differ
diff --git a/docs/html/images/training/performance/optimal_network_traffic_pattern.png b/docs/html/images/training/performance/optimal_network_traffic_pattern.png
new file mode 100644
index 0000000..a32c19a
--- /dev/null
+++ b/docs/html/images/training/performance/optimal_network_traffic_pattern.png
Binary files differ
diff --git a/docs/html/images/training/performance/suboptimal_network_traffic_pattern.png b/docs/html/images/training/performance/suboptimal_network_traffic_pattern.png
new file mode 100644
index 0000000..c35c673
--- /dev/null
+++ b/docs/html/images/training/performance/suboptimal_network_traffic_pattern.png
Binary files differ
diff --git a/docs/html/images/training/permissions/request_permission_dialog.png b/docs/html/images/training/permissions/request_permission_dialog.png
new file mode 100644
index 0000000..fad5f11
--- /dev/null
+++ b/docs/html/images/training/permissions/request_permission_dialog.png
Binary files differ
diff --git a/docs/html/images/training/permissions/request_permission_dialog_2x.png b/docs/html/images/training/permissions/request_permission_dialog_2x.png
new file mode 100644
index 0000000..ee63ded
--- /dev/null
+++ b/docs/html/images/training/permissions/request_permission_dialog_2x.png
Binary files differ
diff --git a/docs/html/images/training/snackbar/snackbar_button_move.mp4 b/docs/html/images/training/snackbar/snackbar_button_move.mp4
new file mode 100644
index 0000000..0a1cefc
--- /dev/null
+++ b/docs/html/images/training/snackbar/snackbar_button_move.mp4
Binary files differ
diff --git a/docs/html/images/training/snackbar/snackbar_drive.png b/docs/html/images/training/snackbar/snackbar_drive.png
new file mode 100644
index 0000000..1483a84
--- /dev/null
+++ b/docs/html/images/training/snackbar/snackbar_drive.png
Binary files differ
diff --git a/docs/html/images/training/snackbar/snackbar_drive_2x.png b/docs/html/images/training/snackbar/snackbar_drive_2x.png
new file mode 100644
index 0000000..6d45b8c
--- /dev/null
+++ b/docs/html/images/training/snackbar/snackbar_drive_2x.png
Binary files differ
diff --git a/docs/html/images/training/snackbar/snackbar_undo_action.png b/docs/html/images/training/snackbar/snackbar_undo_action.png
new file mode 100644
index 0000000..979d127
--- /dev/null
+++ b/docs/html/images/training/snackbar/snackbar_undo_action.png
Binary files differ
diff --git a/docs/html/images/training/snackbar/snackbar_undo_action_2x.png b/docs/html/images/training/snackbar/snackbar_undo_action_2x.png
new file mode 100644
index 0000000..1f150af
--- /dev/null
+++ b/docs/html/images/training/snackbar/snackbar_undo_action_2x.png
Binary files differ
diff --git a/docs/html/images/training/tv/playback/guided-step-screen-2x.png b/docs/html/images/training/tv/playback/guided-step-screen-2x.png
new file mode 100644
index 0000000..e13d97a
--- /dev/null
+++ b/docs/html/images/training/tv/playback/guided-step-screen-2x.png
Binary files differ
diff --git a/docs/html/images/training/tv/playback/guided-step-screen.png b/docs/html/images/training/tv/playback/guided-step-screen.png
new file mode 100644
index 0000000..3025fe1
--- /dev/null
+++ b/docs/html/images/training/tv/playback/guided-step-screen.png
Binary files differ
diff --git a/docs/html/images/training/tv/playback/now-playing-screen.png b/docs/html/images/training/tv/playback/now-playing-screen.png
new file mode 100644
index 0000000..3f6e252
--- /dev/null
+++ b/docs/html/images/training/tv/playback/now-playing-screen.png
Binary files differ
diff --git a/docs/html/images/training/wear/ask_again.png b/docs/html/images/training/wear/ask_again.png
new file mode 100644
index 0000000..33c110b
--- /dev/null
+++ b/docs/html/images/training/wear/ask_again.png
Binary files differ
diff --git a/docs/html/images/training/wear/ask_again_2x.png b/docs/html/images/training/wear/ask_again_2x.png
new file mode 100644
index 0000000..8996203
--- /dev/null
+++ b/docs/html/images/training/wear/ask_again_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/ask_in_context.png b/docs/html/images/training/wear/ask_in_context.png
new file mode 100644
index 0000000..61fa478
--- /dev/null
+++ b/docs/html/images/training/wear/ask_in_context.png
Binary files differ
diff --git a/docs/html/images/training/wear/ask_in_context_2x.png b/docs/html/images/training/wear/ask_in_context_2x.png
new file mode 100644
index 0000000..20c1f47
--- /dev/null
+++ b/docs/html/images/training/wear/ask_in_context_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/ask_up_front.png b/docs/html/images/training/wear/ask_up_front.png
new file mode 100644
index 0000000..ced2228
--- /dev/null
+++ b/docs/html/images/training/wear/ask_up_front.png
Binary files differ
diff --git a/docs/html/images/training/wear/ask_up_front_2x.png b/docs/html/images/training/wear/ask_up_front_2x.png
new file mode 100644
index 0000000..ef7eb46
--- /dev/null
+++ b/docs/html/images/training/wear/ask_up_front_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/deny.png b/docs/html/images/training/wear/deny.png
new file mode 100644
index 0000000..a1e9562
--- /dev/null
+++ b/docs/html/images/training/wear/deny.png
Binary files differ
diff --git a/docs/html/images/training/wear/deny_2x.png b/docs/html/images/training/wear/deny_2x.png
new file mode 100644
index 0000000..721c271
--- /dev/null
+++ b/docs/html/images/training/wear/deny_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/educate_in_context.png b/docs/html/images/training/wear/educate_in_context.png
new file mode 100644
index 0000000..c8ac641
--- /dev/null
+++ b/docs/html/images/training/wear/educate_in_context.png
Binary files differ
diff --git a/docs/html/images/training/wear/educate_in_context_2x.png b/docs/html/images/training/wear/educate_in_context_2x.png
new file mode 100644
index 0000000..92baead
--- /dev/null
+++ b/docs/html/images/training/wear/educate_in_context_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/educate_up_front.png b/docs/html/images/training/wear/educate_up_front.png
new file mode 100644
index 0000000..2e4fdf7
--- /dev/null
+++ b/docs/html/images/training/wear/educate_up_front.png
Binary files differ
diff --git a/docs/html/images/training/wear/educate_up_front_2x.png b/docs/html/images/training/wear/educate_up_front_2x.png
new file mode 100644
index 0000000..1f6f491
--- /dev/null
+++ b/docs/html/images/training/wear/educate_up_front_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/for_services.png b/docs/html/images/training/wear/for_services.png
new file mode 100644
index 0000000..0aaae10
--- /dev/null
+++ b/docs/html/images/training/wear/for_services.png
Binary files differ
diff --git a/docs/html/images/training/wear/for_services_2x.png b/docs/html/images/training/wear/for_services_2x.png
new file mode 100644
index 0000000..a7f92f2
--- /dev/null
+++ b/docs/html/images/training/wear/for_services_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/for_settings.png b/docs/html/images/training/wear/for_settings.png
new file mode 100644
index 0000000..fde50c7
--- /dev/null
+++ b/docs/html/images/training/wear/for_settings.png
Binary files differ
diff --git a/docs/html/images/training/wear/for_settings_2x.png b/docs/html/images/training/wear/for_settings_2x.png
new file mode 100644
index 0000000..c2daa7c
--- /dev/null
+++ b/docs/html/images/training/wear/for_settings_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/multiple_permissions.png b/docs/html/images/training/wear/multiple_permissions.png
new file mode 100644
index 0000000..65e3e08
--- /dev/null
+++ b/docs/html/images/training/wear/multiple_permissions.png
Binary files differ
diff --git a/docs/html/images/training/wear/multiple_permissions_2x.png b/docs/html/images/training/wear/multiple_permissions_2x.png
new file mode 100644
index 0000000..cbaace8
--- /dev/null
+++ b/docs/html/images/training/wear/multiple_permissions_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/open_on_phone.png b/docs/html/images/training/wear/open_on_phone.png
new file mode 100644
index 0000000..1899839
--- /dev/null
+++ b/docs/html/images/training/wear/open_on_phone.png
Binary files differ
diff --git a/docs/html/images/training/wear/open_on_phone_2x.png b/docs/html/images/training/wear/open_on_phone_2x.png
new file mode 100644
index 0000000..e5c2c96
--- /dev/null
+++ b/docs/html/images/training/wear/open_on_phone_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/phone_requests_wear.png b/docs/html/images/training/wear/phone_requests_wear.png
new file mode 100644
index 0000000..4d0b09d
--- /dev/null
+++ b/docs/html/images/training/wear/phone_requests_wear.png
Binary files differ
diff --git a/docs/html/images/training/wear/phone_requests_wear_2x.png b/docs/html/images/training/wear/phone_requests_wear_2x.png
new file mode 100644
index 0000000..1c98f4a
--- /dev/null
+++ b/docs/html/images/training/wear/phone_requests_wear_2x.png
Binary files differ
diff --git a/docs/html/images/tv/custom-head.png b/docs/html/images/tv/custom-head.png
new file mode 100644
index 0000000..094e490
--- /dev/null
+++ b/docs/html/images/tv/custom-head.png
Binary files differ
diff --git a/docs/html/index.jd b/docs/html/index.jd
index 10519f7..2f67c58 100644
--- a/docs/html/index.jd
+++ b/docs/html/index.jd
@@ -2,71 +2,103 @@
 excludeFromSuggestions=true
 page.metaDescription=The official site for Android developers. Provides the Android SDK and documentation for app developers and designers.
 page.customHeadTag=<meta name="google-site-verification" content="sa-bIAI6GKvct3f61-WpRguHq-aNjtF7xJjMTSi79as" />
+nonavpage=true
 
 @jd:body
 
-<!-- <div class="dac-hero-carousel" data-carousel-query="collection:index/carousel">
-</div> -->
-<section class="dac-hero-carousel">
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
 
-<!-- <article class="dac-expand dac-hero dac-invert active" style="background-color: rgb(38, 50, 56);"> -->
-<article class="dac-expand dac-hero dac-invert dac-darken mprev active" style="background-color: #75d1ff;">
-<a href="/preview/index.html">
+<section class="dac-expand dac-hero dac-invert" style="background-color:#455A64">
   <div class="wrap" style="max-width:1100px;margin-top:0">
-    <div class="cols dac-hero-content">
-      <div class="col-8of16 col-push-6of16 dac-hero-figure mprev">
-      </div>
-      <div class="col-8of16 col-pull-7of16">
-        <div class="dac-hero-tag"></div>
-
-        <h1 class="dac-hero-title" style="white-space:nowrap;">Android 6.0 Marshmallow</h1>
-        </div>
-        <div class="col-6of16 col-push-1of16">
-        <p class="dac-hero-description" style="color:white"><strong>The
-        official Android 6.0 SDK is now available!</strong> Update to
-        Developer Preview 3 and get your apps ready for Android Marshmallow!</p>
-
+    <div class="col-7of16 col-push-9of16" style="padding-left:2em;">
+      <a href="{@docRoot}preview/index.html">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
+        <p class="dac-hero-description">
+          Get ready for the next version of Android!
+          <strong>Test your apps</strong> on Nexus and other devices. Support new system
+          behaviors to <strong>save power and memory</strong>.
+          Extend your apps with <strong>multi-window UI</strong>,
+          <strong>direct reply notifications</strong> and more.
+        </p>
         <a class="dac-hero-cta" href="/preview/index.html">
           <span class="dac-sprite dac-auto-chevron"></span>
-          Get started
-        </a><br>
-
-        <a class="dac-hero-cta mprev" href="/preview/support.html">
+          Learn more
+        </a><!--<br>
+        <a class="dac-hero-cta" href="/preview/support.html">
           <span class="dac-sprite dac-auto-chevron"></span>
-          Update to Developer Preview 3 (final SDK)
+          Update to Developer Preview (final SDK)
+        </a><br>-->
+      </a>
+    </div>
+    <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:0em;padding-right:1.5em;">
+      <a href="{@docRoot}preview/index.html">
+        <img style="" class="dac-hero-image" src="/images/home/n-preview-hero.png"
+             srcset="/images/home/n-preview-hero.png 1x,
+             /images/home/n-preview-hero_2x.png 2x">
         </a>
-      </div>
-      </div>
     </div>
   </div>
-</a>
-</article></section>
+</section>
 
-<div class="actions-bar dac-expand dac-invert">
+<div id="useUpdatedTemplates" style="display:none" class="dac-section dac-slim dac-gray dac-expand">
   <div class="wrap dac-offset-parent">
     <a class="dac-fab dac-scroll-button" data-scroll-button href="#build-apps">
       <i class="dac-sprite dac-arrow-down-gray"></i>
     </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}sdk/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Get Android Studio
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}samples/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Browse sample code
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}distribute/stories/index.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Watch stories
+        </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+    <a class="dac-fab dac-scroll-button" data-scroll-button="" href="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
     <div class="actions">
       <div><a href="{@docRoot}sdk/index.html">
         <span class="dac-sprite dac-auto-chevron-large"></span>
-        Get the SDK
+        Get Android Studio
       </a></div>
       <div><a href="{@docRoot}samples/index.html">
         <span class="dac-sprite dac-auto-chevron-large"></span>
         Browse Samples
       </a></div>
-      <div><a href="//www.youtube.com/user/androiddevelopers">
+      <div><a href="{@docRoot}distribute/stories/index.html">
         <span class="dac-sprite dac-auto-chevron-large"></span>
-        Watch Videos
+        Watch Stories
       </a></div>
     </div><!-- end .actions -->
   </div><!-- end .wrap -->
-</div><!-- end .actions-bar -->
+</div>
 
-
-
-<section class="dac-section dac-section-light" id="build-apps"><div class="wrap">
+<section class="dac-section dac-light" id="build-apps"><div class="wrap">
   <h1 class="dac-section-title">Build Beautiful Apps</h1>
   <div class="dac-section-subtitle">
     Resources to get you started with designing and developing for Android.
diff --git a/docs/html/jd_collections.js b/docs/html/jd_collections.js
index c5b0b85..863d235 100644
--- a/docs/html/jd_collections.js
+++ b/docs/html/jd_collections.js
@@ -16,10 +16,10 @@
   "index/secondary/carousel": {
     "title": "",
     "resources": [
-      "http://www.youtube.com/watch?v=0r36OJaeMo4",
-      "http://www.youtube.com/watch?v=1Iw7Tg_afKk",
-      "http://www.youtube.com/watch?v=TieksFvD-7o",
-      "http://www.youtube.com/watch?v=MCoh4Pxs_ok"
+      "http://www.youtube.com/watch?v=9m6MoBM-sFI",
+      "http://www.youtube.com/watch?v=Pms0pcyPbAM",
+      "http://www.youtube.com/watch?v=e7t3svG9PTk",
+      "http://www.youtube.com/watch?v=J3IvOfvH1ys"
     ]
   },
   "index/multiscreen": {
@@ -41,9 +41,9 @@
   "design/landing/latest": {
     "title": "",
     "resources": [
-      "http://www.youtube.com/watch?v=p4gmvHyuZzw",
-      "http://www.youtube.com/watch?v=YaG_ljfzeUw",
-      "http://www.youtube.com/watch?v=XOcCOBe8PTc"
+      "https://www.youtube.com/watch?v=p4gmvHyuZzw",
+      "https://www.youtube.com/watch?v=YaG_ljfzeUw",
+      "https://www.youtube.com/watch?v=XOcCOBe8PTc"
     ]
   },
   "design/landing/materialdesign": {
@@ -90,17 +90,25 @@
   "develop/landing/latest": {
     "title": "",
     "resources": [
-      "http://android-developers.blogspot.com/2015/04/new-android-code-samples.html",
-      "http://android-developers.blogspot.com/2015/04/android-support-library-221.html",
-      "http://android-developers.blogspot.com/2015/03/a-new-reference-app-for-multi-device.html"
+      "https://android-developers.blogspot.com/2015/04/new-android-code-samples.html",
+      "https://android-developers.blogspot.com/2015/04/android-support-library-221.html",
+      "https://android-developers.blogspot.com/2015/03/a-new-reference-app-for-multi-device.html"
+    ]
+  },
+  "develop/landing/devpatterns": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/watch?v=kmUGLURRPkI",
+      "https://www.youtube.com/watch?v=HGElAW224dE",
+      "https://www.youtube.com/watch?v=zQekzaAgIlQ"
     ]
   },
   "develop/landing/performance": {
     "title": "",
     "resources": [
-      "http://www.youtube.com/watch?v=fEEulSk1kNY",
-      "http://www.youtube.com/watch?v=-3ry8PxcJJA",
-      "http://www.youtube.com/watch?v=_kKTGK-Cb_4"
+      "https://www.youtube.com/watch?v=fEEulSk1kNY",
+      "https://www.youtube.com/watch?v=-3ry8PxcJJA",
+      "https://www.youtube.com/watch?v=_kKTGK-Cb_4"
     ]
   },
   "develop/landing/buildwithgoogle": {
@@ -120,13 +128,39 @@
     "title": "",
     "resources": [
       "https://www.youtube.com/watch?v=K2dodTXARqc&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
-      "https://www.youtube.com/watch?v=3PIc-DuEU2s&list=PLWz5rJ2EKKc9e0d55YHgJFHXNZbGHEXJX",
       "https://www.youtube.com/watch?v=cD7NPxuuXYY&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
       "https://www.youtube.com/watch?v=JLLnhwtDoHw&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
       "https://www.youtube.com/watch?v=2I6fuD20qlY&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
       "https://www.youtube.com/watch?v=5Be2mJzP-Uw&list=PLWz5rJ2EKKc9e0d55YHgJFHXNZbGHEXJX"
     ]
   },
+  "preview/landing/resources": {
+    "title": "",
+    "resources": [
+      "preview/overview.html",
+      "preview/api-overview.html",
+      "preview/behavior-changes.html",
+      "preview/setup-sdk.html",
+      "preview/samples.html",
+      "preview/support.html"
+    ]
+  },
+  "preview/landing/more": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/watch?v=CsulIu3UaUM",
+      "preview/features/multi-window.html",
+      "preview/features/notification-updates.html",
+      "preview/features/background-optimization.html",
+      "preview/features/data-saver.html",
+      "preview/features/direct-boot.html",
+      "preview/features/icu4j-framework.html",
+      "preview/features/multilingual-support.html",
+      "preview/features/scoped-folder-access.html",
+      "preview/features/picture-in-picture.html",
+      "preview/features/tv-recording-api.html"
+    ]
+  },
   "google/landing/services": {
     "title": "",
     "resources": [
@@ -158,36 +192,31 @@
   "develop/landing/courses": {
     "title": "",
     "resources": [
-      "https://www.udacity.com/course/ux-design-for-mobile-developers--ud849",
-      "https://www.udacity.com/course/developing-android-apps--ud853",
-      "https://www.udacity.com/course/android-performance--ud825",
+      "https://www.udacity.com/course/ud849",
+      "https://www.udacity.com/course/ud853",
+      "https://www.udacity.com/course/ud825",
       "https://www.udacity.com/android",
-      "https://www.udacity.com/course/advanced-android-app-development--ud855",
-      "https://www.udacity.com/course/android-ubiquitous-computing--ud875",
-      "https://www.udacity.com/course/google-play-services--ud876",
-      "https://www.udacity.com/course/android-design-for-developers--ud862",
-      "https://www.udacity.com/course/android-development-for-beginners--ud837",
-      "https://www.udacity.com/course/gradle-for-android-and-java--ud867"
-    ]
-  },
-  "preview/landing/more": {
-    "title": "",
-    "resources": [
-      "preview/features/runtime-permissions.html",
-      "preview/behavior-changes.html",
-      "preview/backup/index.html",
-      "preview/features/app-linking.html",
-      "preview/testing/guide.html",
-      "preview/testing/performance.html",
+      "https://www.udacity.com/course/ud855",
+      "https://www.udacity.com/course/ud875A",
+      "https://www.udacity.com/course/ud875B",
+      "https://www.udacity.com/course/ud875C",
+      "https://www.udacity.com/course/ud876--1",
+      "https://www.udacity.com/course/ud876--2",
+      "https://www.udacity.com/course/ud876--3",
+      "https://www.udacity.com/course/ud876--4",
+      "https://www.udacity.com/course/ud876--5",
+      "https://www.udacity.com/course/ud862",
+      "https://www.udacity.com/course/ud837",
+      "https://www.udacity.com/course/ud867"
     ]
   },
   "distribute/landing/carousel": {
     "title": "",
     "resources": [
-      "https://www.youtube.com/watch?v=QDM52bblwlg",
-      "https://www.youtube.com/watch?v=wcjqBSei3a0&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
-      "https://www.youtube.com/watch?v=B6ydLpkhq04&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
-      "https://www.youtube.com/watch?v=jyO3-rF4Mu0&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
+    "distribute/googleplay/guide.html",
+    "https://www.youtube.com/watch?v=JrR6o5tYMWQ",
+    "https://www.youtube.com/watch?v=B6ydLpkhq04&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
+    "https://www.youtube.com/watch?v=yJisuP94lHU",
     ]
   },
   "distribute/landing/googleplay": {
@@ -201,12 +230,12 @@
   "distribute/landing/more": {
     "title": "",
     "resources": [
-    "distribute/users/promote-with-ads.html",
-    "distribute/monetize/ads.html",
-    "distribute/analyze/index.html",
-    "distribute/engage/deep-linking.html",
-    "distribute/engage/easy-signin.html",
-    "https://cloud.google.com/docs/"
+      "distribute/users/promote-with-ads.html",
+      "distribute/monetize/ads.html",
+      "distribute/analyze/index.html",
+      "distribute/engage/deep-linking.html",
+      "distribute/engage/easy-signin.html",
+      "https://cloud.google.com/docs/"
     ]
   },
   "distribute/edu/videos/stories": {
@@ -228,17 +257,17 @@
   "distribute/edu/videos/experience": {
     "title": "",
     "resources": [
-      "http://youtu.be/vzvpcEffvaE"
+      "https://youtu.be/vzvpcEffvaE"
     ]
   },
 /*  "launch/static": {
     "title": "",
     "resources": [
-      "http://www.youtube.com/watch?v=1RIz-cmTQB4",
-      "http://www.youtube.com/watch?v=MVBMWDzyHAI",
-      "http://android-developers.blogspot.com/2013/11/app-translation-service-now-available.html",
-      "http://android-developers.blogspot.com/2013/10/more-visibility-for-tablet-apps-in.html",
-      "http://android-developers.blogspot.com/2013/11/bring-your-apps-into-classroom-with.html",
+      "https://www.youtube.com/watch?v=1RIz-cmTQB4",
+      "https://www.youtube.com/watch?v=MVBMWDzyHAI",
+      "https://android-developers.blogspot.com/2013/11/app-translation-service-now-available.html",
+      "https://android-developers.blogspot.com/2013/10/more-visibility-for-tablet-apps-in.html",
+      "https://android-developers.blogspot.com/2013/11/bring-your-apps-into-classroom-with.html",
       "distribute/essentials/quality/tablets.html",
       "distribute/users/build-buzz.html",
       "distribute/monetize/premium.html",
@@ -255,17 +284,17 @@
     "resources": [
       "https://www.youtube.com/watch?v=xelYnWcYkuE",
       "https://www.youtube.com/playlist?list=PLCOC_kP3nqGIHEgwm9mybvA04Vn4Cg9nn",
-      "http://googledevjp.blogspot.jp/2014/12/android-wear.html",
-      "http://googledevjp.blogspot.jp/2014/12/android-studio-10.html",
-      "http://googledevjp.blogspot.jp/2014/12/google-play-65.html",
+      "https://googledevjp.blogspot.jp/2014/12/android-wear.html",
+      "https://googledevjp.blogspot.jp/2014/12/android-studio-10.html",
+      "https://googledevjp.blogspot.jp/2014/12/google-play-65.html",
       "intl/ja/distribute/googleplay/developer-console.html#alpha-beta",
       "intl/ja/distribute/googleplay/guide.html",
       "intl/ja/distribute/essentials/quality/core.html",
-      "http://support.google.com/googleplay/android-developer/answer/4430948?hl=ja",
+      "https://support.google.com/googleplay/android-developer/answer/4430948?hl=ja",
       "intl/ja/support.html",
       "intl/ja/distribute/essentials/quality/wear.html",
       "intl/ja/training/tv/start/index.html",
-      "http://googleforwork-japan.blogspot.jp/2014/12/gcp-google-cloud-platform-rpg-gcp.html",
+      "https://googleforwork-japan.blogspot.jp/2014/12/gcp-google-cloud-platform-rpg-gcp.html",
       "intl/ja/distribute/monetize/ads.html"
     ]
   },
@@ -274,9 +303,9 @@
     "resources": [
       "https://www.youtube.com/watch?v=7X9Ue0Nfdh4&index=2&list=PL_WJkTbDHdBksDBRoqfeyLchEQqBAOlNl",
       "https://www.youtube.com/watch?v=83FpwuschCQ",
-      "http://googledevkr.blogspot.com/2014/11/android50guidefordevelopers.html",
-      "http://googledevkr.blogspot.com/2014/10/material-design-on-android-checklist.html",
-      "http://googledevkr.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html",
+      "https://googledevkr.blogspot.com/2014/11/android50guidefordevelopers.html",
+      "https://googledevkr.blogspot.com/2014/10/material-design-on-android-checklist.html",
+      "https://googledevkr.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html",
       "intl/ko/distribute/googleplay/developer-console.html#alpha-beta",
       "intl/ko/distribute/googleplay/guide.html",
       "intl/ko/distribute/essentials/quality/core.html",
@@ -305,11 +334,12 @@
       "distribute/googleplay/edu/about.html",
       "distribute/googleplay/cast.html",
       "distribute/googleplay/cardboard.html",
+      "distribute/googleplay/guide.html"
     ]
   },
   "distribute/googleplay/gpfw": {
     "resources": [
-      "http://www.android.com/work/",
+      "https://www.android.com/work/",
       "https://www.youtube.com/watch?v=jQWB_-o1kz4&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
       "training/enterprise/index.html"
     ]
@@ -339,7 +369,6 @@
     "resources": [
       "distribute/users/your-listing.html",
       "distribute/users/promote-with-ads.html",
-      "distribute/users/appindexing.html",
       "distribute/googleplay/index.html#opportunities",
       "distribute/analyze/improve-roi.html",
       "distribute/users/expand-to-new-markets.html",
@@ -349,6 +378,10 @@
       "distribute/users/ota-installs.html",
       "distribute/users/youtube.html",
       "distribute/users/house-ads.html",
+      "distribute/users/experiments.html",
+      "distribute/users/user-acquisition.html",
+      "distribute/users/banners.html",
+      "distribute/users/beta.html"
     ]
   },
   "distribute/engagelanding": {
@@ -362,6 +395,7 @@
       "distribute/engage/easy-signin.html",
       "distribute/analyze/build-better-apps.html",
       "distribute/engage/gcm.html",
+      "distribute/engage/beta.html"
     ]
   },
   "distribute/monetize": {
@@ -391,7 +425,7 @@
       "google/play-services/index.html",
       "https://developers.google.com/analytics/solutions/mobile-implementation-guide",
       "https://developers.google.com/analytics/devguides/collection/android/",
-      "http://www.google.com/tagmanager/",
+      "https://www.google.com/tagmanager/",
       "https://github.com/googleanalytics/google-analytics-plugin-for-unity"
     ]
   },
@@ -460,7 +494,7 @@
       "https://support.google.com/googleplay/android-developer",
       "distribute/tools/promote/brand.html",
       "distribute/tools/promote/device-art.html",
-      "distribute/tools/promote/badges.html",
+      "https://play.google.com/intl/en_us/badges/",
       "distribute/tools/promote/linking.html",
       "distribute/tools/open-distribution.html",
       "about/dashboards/index.html"
@@ -483,14 +517,14 @@
   "distribute/tools/promote": {
     "resources": [
       "distribute/tools/promote/device-art.html",
-      "distribute/tools/promote/badges.html",
+      "https://play.google.com/intl/en_us/badges/",
       "distribute/tools/promote/linking.html"
     ]
   },
   "distribute/tools/promote/zhcn": {
     "resources": [
       "intl/zh-cn/distribute/tools/promote/device-art.html",
-      "intl/zh-cn/distribute/tools/promote/badges.html",
+      "https://play.google.com/intl/en_us/badges/",
       "intl/zh-cn/distribute/tools/promote/linking.html"
     ]
   },
@@ -513,7 +547,7 @@
   "distribute/tools/news": {
     "title": "",
     "resources": [
-      "http://android-developers.blogspot.com/",
+      "https://android-developers.blogspot.com/",
       "https://plus.google.com/+AndroidDevelopers/"
     ]
   },
@@ -551,19 +585,52 @@
       "https://support.google.com/googleplay/android-developer"
     ]
   },
-  "distribute/googleplay/developerconsole": {
+  "distribute/googleplay/developerconsole/related": {
     "title": "Developer Console",
     "resources": [
       "google/play/billing/index.html",
       "https://support.google.com/googleplay/android-developer/answer/138294"
     ]
   },
+  "distribute/googleplay/beta": {
+    "title": "Alpha and Beta Testing",
+    "resources": [
+      "https://support.google.com/googleplay/android-developer/answer/3131213",
+      "https://support.google.com/googleplay/android-developer/answer/3131213#games",
+      "distribute/googleplay/experiments.html"
+    ]
+  },
+  "distribute/googleplay/experiments/successes": {
+    "title": "Store Listing Experiment successes",
+    "resources": [
+    ]
+  },
+  "distribute/googleplay/experiments/related": {
+    "title": "Store Listing Experiments",
+    "resources": [
+      "https://support.google.com/googleplay/android-developer/answer/6227309",
+      "https://www.youtube.com/watch?v=B6ydLpkhq04",
+      "https://support.google.com/tagmanager/answer/6003007"
+    ]
+  },
+  "distribute/googleplay/banners/related": {
+    "title": "App Install Banners",
+    "resources": [
+      "https://developers.google.com/web/updates/2015/03/increasing-engagement-with-app-install-banners-in-chrome-for-android#native"
+    ]
+  },
+  "distribute/googleplay/useracquisition/related": {
+    "title": "User Acquisition",
+    "resources": [
+      "https://support.google.com/googleplay/android-developer/answer/6263332"
+    ]
+  },
   "distribute/googleplay/cast": {
     "title": "Google Cast",
     "resources": [
       "https://developers.google.com/cast/docs/ux_guidelines",
       "https://developers.google.com/cast/docs/android_sender",
-      "http://www.github.com/googlecast"
+      "https://www.github.com/googlecast"
     ]
   },
   "distribute/googleplay/cardboard": {
@@ -571,13 +638,13 @@
     "resources": [
       "https://www.google.com/get/cardboard/get-cardboard/",
       "https://developers.google.com/cardboard/android/download",
-      "http://www.google.com/design/spec-vr"
+      "https://www.google.com/design/spec-vr"
     ]
   },
   "distribute/googleplay/gpfe/highlight": {
     "title": "About Google Play for Education",
     "resources": [
-      "http://youtu.be/vzvpcEffvaE"
+      "https://youtu.be/vzvpcEffvaE"
     ]
   },
   "distribute/googleplay/gpfe/dev/about": {
@@ -598,28 +665,28 @@
       "https://developers.google.com/edu/guidelines",
       "distribute/essentials/quality/tablets.html",
       "distribute/googleplay/developer-console.html",
-      "http://play.google.com/about/developer-distribution-agreement-addendum.html",
+      "https://play.google.com/about/developer-distribution-agreement-addendum.html",
     ]
   },
   "distribute/googleplay/aboutgpfe/educators/about": {
     "title": "About Google Play for Education / Educators",
     "resources": [
-      "http://www.google.com/edu/tablets/",
-      "http://www.youtube.com/watch?v=haEmsMo0f3w"
+      "https://www.google.com/edu/tablets/",
+      "https://www.youtube.com/watch?v=haEmsMo0f3w"
     ]
   },
   "distribute/googleplay/aboutgpfe/educators": {
     "title": "About Google Play for Education / Educators",
     "resources": [
-      "http://www.google.com/edu/tablets/",
-      "http://youtu.be/vzvpcEffvaE"
+      "https://www.google.com/edu/tablets/",
+      "https://youtu.be/vzvpcEffvaE"
     ]
   },
   "distribute/googleplay/gettingstartedgpfe/educators": {
     "title": "About Google Play for Education / Educators",
     "resources": [
-      "http://www.google.com/edu/tablets/",
-      "http://youtu.be/vzvpcEffvaE"
+      "https://www.google.com/edu/tablets/",
+      "https://youtu.be/vzvpcEffvaE"
     ]
   },
   "distribute/essentials/eduessentials/developers": {
@@ -633,7 +700,7 @@
   "distribute/essentials/eduessentials/educators": {
     "title": "",
     "resources": [
-      "http://www.google.com/edu/tablets/",
+      "https://www.google.com/edu/tablets/",
       "distribute/essentials/quality/tablets.html",
     ]
   },
@@ -642,7 +709,7 @@
     "resources": [
       "design/index.html",
       "training/articles/perf-anr.html",
-      "http://android-developers.blogspot.com/2013/10/improved-app-insight-by-linking-google.html"
+      "https://android-developers.blogspot.com/2013/10/improved-app-insight-by-linking-google.html"
      ]
   },
   "distribute/users/appinvites": {
@@ -665,21 +732,21 @@
   "distribute/users/buildbuzz": {
     "title": "",
     "resources": [
-      "distribute/tools/promote/badges.html",
+      "https://play.google.com/intl/en_us/badges/",
       "distribute/tools/promote/linking.html",
       "distribute/tools/promote/device-art.html",
-      "http://plus.google.com/+GooglePlay"
+      "https://plus.google.com/+GooglePlay"
     ]
   },
   "distribute/users/createagreatlisting": {
     "title": "",
     "resources": [
       "https://support.google.com/googleplay/android-developer/answer/1078870",
-      "http://android-developers.blogspot.com/2011/10/android-market-featured-image.html",
+      "https://android-developers.blogspot.com/2011/10/android-market-featured-image.html",
       "distribute/tools/launch-checklist.html",
-      "http://android-developers.blogspot.com/2013/07/making-beautiful-android-app-icons.html",
-      "http://android-developers.blogspot.com/2012/12/localize-your-promotional-graphics-on.html",
-      "http://android-developers.blogspot.com/2013/10/making-your-app-content-more-accessible.html"
+      "https://android-developers.blogspot.com/2013/07/making-beautiful-android-app-icons.html",
+      "https://android-developers.blogspot.com/2012/12/localize-your-promotional-graphics-on.html",
+      "https://android-developers.blogspot.com/2013/10/making-your-app-content-more-accessible.html"
     ]
   },
   "distribute/users/buildcommunity": {
@@ -688,7 +755,7 @@
       "distribute/googleplay/developer-console.html",
       "https://support.google.com/groups/answer/46601",
       "https://support.google.com/plus/topic/2888488",
-      "http://www.youtube.com/yt/dev/"
+      "https://www.youtube.com/yt/dev/"
     ]
   },
   "distribute/users/appindexing": {
@@ -713,8 +780,8 @@
     "resources": [
       "https://support.google.com/admob/topic/2784623",
       "https://developers.google.com/mobile-ads-sdk/download",
-      "http://support.google.com/googleplay/android-developer/topic/2985714",
-      "http://analyticsacademy.withgoogle.com/mobile-app",
+      "https://support.google.com/googleplay/android-developer/topic/2985714",
+      "https://analyticsacademy.withgoogle.com/mobile-app",
       "https://support.google.com/analytics/answer/2611404",
       "https://support.google.com/admob/answer/3111064"
     ]
@@ -730,16 +797,16 @@
     "title": "",
     "resources": [
       "distribute/googleplay/developer-console.html",
-      "http://android-developers.blogspot.com/"
+      "https://android-developers.blogspot.com/"
     ]
   },
   "distribute/toolsreference/bestpractices/games": {
     "title": "",
     "resources": [
       "google/play-services/games.html",
-      "http://android-developers.blogspot.com/",
+      "https://android-developers.blogspot.com/",
       "distribute/googleplay/developer-console.html",
-      "http://www.youtube.com/watch?v=1RIz-cmTQB4"
+      "https://www.youtube.com/watch?v=1RIz-cmTQB4"
     ]
   },
   "distribute/essentials/corequalityguidelines/visualdesign": {
@@ -755,7 +822,7 @@
   "distribute/essentials/corequalityguidelines/functionality": {
     "title": "",
     "resources": [
-      "http://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html",
+      "https://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html",
       "guide/components/tasks-and-back-stack.html",
       "training/basics/activity-lifecycle/recreating.html"
     ]
@@ -800,19 +867,19 @@
   "distribute/essentials/core/performance": {
     "title": "",
     "resources": [
-      "http://android-developers.blogspot.com/2010/12/new-gingerbread-api-strictmode.html",
+      "https://android-developers.blogspot.com/2010/12/new-gingerbread-api-strictmode.html",
       "training/articles/perf-anr.html",
-      "http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html"
+      "https://android-developers.blogspot.com/2010/07/multithreading-for-performance.html"
     ]
   },
   "distribute/essentials/core/play": {
     "title": "",
     "resources": [
       "distribute/tools/launch-checklist.html",
-      "http://play.google.com/about/developer-content-policy.html?hl=zh-Hans",
+      "https://play.google.com/about/developer-content-policy.html?hl=zh-Hans",
       "https://support.google.com/googleplay/android-developer/answer/188189?hl=zh-Hans",
       "https://support.google.com/googleplay/android-developer/answer/1078870?hl=zh-Hans",
-      "http://android-developers.blogspot.com/2011/10/android-market-featured-image.html",
+      "https://android-developers.blogspot.com/2011/10/android-market-featured-image.html",
       "https://support.google.com/googleplay/android-developer/answer/113477?hl=zh-Hans"
     ]
   },
@@ -820,10 +887,10 @@
     "title": "",
     "resources": [
       "intl/zh-cn/distribute/tools/launch-checklist.html",
-      "http://play.google.com/about/developer-content-policy.html",
+      "https://play.google.com/about/developer-content-policy.html",
       "https://support.google.com/googleplay/android-developer/answer/188189?hl=zh-Hans",
       "https://support.google.com/googleplay/android-developer/answer/1078870?hl=zh-Hans",
-      "http://android-developers.blogspot.com/2011/10/android-market-featured-image.html",
+      "https://android-developers.blogspot.com/2011/10/android-market-featured-image.html",
       "https://support.google.com/googleplay/android-developer/answer/113477?hl=zh-Hans"
     ]
   },
@@ -897,7 +964,7 @@
     "resources": [
       "distribute/tools/launch-checklist.html",
       "https://play.google.com/apps/publish/",
-      "distribute/tools/promote/badges.html",
+      "https://play.google.com/intl/en_us/badges/",
       "distribute/tools/promote/device-art.html"
     ]
   },
@@ -906,14 +973,14 @@
     "resources": [
       "intl/zh-cn/distribute/tools/launch-checklist.html",
       "https://play.google.com/apps/publish/?hl=zh-Hans",
-      "intl/zh-cn/distribute/tools/promote/badges.html",
+      "https://play.google.com/intl/en_us/badges/",
       "intl/zh-cn/distribute/tools/promote/device-art.html"
     ]
   },
   "distribute/essentials/tabletguidelines/googleplay": {
     "title": "",
     "resources": [
-      "http://android-developers.blogspot.com/2013/10/more-visibility-for-tablet-apps-in.html",
+      "https://android-developers.blogspot.com/2013/10/more-visibility-for-tablet-apps-in.html",
       "google/play/filters.html"
     ]
   },
@@ -921,7 +988,7 @@
     "title": "",
     "resources": [
       "distribute/essentials/quality/core.html",
-      "http://android-developers.blogspot.com/2013/10/more-visibility-for-tablet-apps-in.html",
+      "https://android-developers.blogspot.com/2013/10/more-visibility-for-tablet-apps-in.html",
       "distribute/tools/launch-checklist.html",
       "distribute/tools/promote/device-art.html"
     ]
@@ -931,14 +998,14 @@
     "resources": [
       "design/patterns/notifications.html",
       "distribute/engage/gcm.html",
-      "http://play.google.com/about/developer-content-policy.html"
+      "https://play.google.com/about/developer-content-policy.html"
     ]
   },
   "distribute/engage/analytics": {
     "title": "",
     "resources": [
-      "http://www.google.com/analytics/mobile/",
-      "http://android-developers.blogspot.com/2013/10/improved-app-insight-by-linking-google.html",
+      "https://www.google.com/analytics/mobile/",
+      "https://android-developers.blogspot.com/2013/10/improved-app-insight-by-linking-google.html",
       "https://developers.google.com/analytics/devguides/collection/android/"
     ]
   },
@@ -963,7 +1030,6 @@
     "resources": [
       "distribute/engage/intents.html",
       "distribute/engage/deep-linking.html",
-      "distribute/users/appindexing.html",
       "training/app-indexing/index.html"
     ]
   },
@@ -980,10 +1046,9 @@
     "resources": [
       "distribute/tools/localization-checklist.html",
       "https://support.google.com/googleplay/android-developer/table/3541286",
-      "distribute/stories/localization.html",
-      "distribute/tools/promote/badges.html",
+      "https://play.google.com/intl/en_us/badges/",
       "distribute/tools/promote/device-art.html",
-      "http://www.youtube.com/watch?v=SkHHPf3EdzE"
+      "https://www.youtube.com/watch?v=SkHHPf3EdzE"
     ]
   },
   "distribute/engage/gcm": {
@@ -993,11 +1058,13 @@
       "https://developers.google.com/cloud-messaging/android/client",
     ]
   },
-  "distribute/engage/googleplaygames": {
+  "distribute/engage/gamesservices/related": {
     "title": "",
     "resources": [
-      "google/play-services/games.html",
-      "distribute/essentials/best-practices/games.html"
+      "https://developers.google.com/games/services/",
+      "distribute/analyze/start.html",
+      "distribute/googleplay/cardboard.html",
+      "https://www.google.com/admob/"
     ]
   },
   "distribute/engage/gplus": {
@@ -1035,9 +1102,9 @@
   "distribute/engage/video/more": {
     "title": "",
     "resources": [
-      "http://www.youtube.com/yt/dev/",
+      "https://www.youtube.com/yt/dev/",
       "distribute/essentials/best-practices/games.html",
-      "http://www.youtube.com/watch?v=RRelFvc6Czo"
+      "https://www.youtube.com/watch?v=RRelFvc6Czo"
     ]
   },
   "distribute/engage/community": {
@@ -1050,15 +1117,15 @@
   "distribute/engage/kiwi": {
     "title": "",
     "resources": [
-      "http://www.youtube.com/watch?v=WWArLD6nqrk"
+      "https://www.youtube.com/watch?v=WWArLD6nqrk"
     ]
   },
   "distribute/toolsreference/gpfefaq": {
     "title": "",
     "resources": [
-      "http://www.google.com/edu/tablets/",
+      "https://www.google.com/edu/tablets/",
       "distribute/googleplay/edu/start.html",
-      "http://play.google.com/about/developer-distribution-agreement-addendum.html",
+      "https://play.google.com/about/developer-distribution-agreement-addendum.html",
       "distribute/essentials/quality/core.html",
       "distribute/essentials/quality/tablets.html"
     ]
@@ -1078,7 +1145,7 @@
   "distribute/tools/loc/designforloc": {
     "title": "",
     "resources": [
-      "http://android-developers.blogspot.com/2013/03/native-rtl-support-in-android-42.html",
+      "https://android-developers.blogspot.com/2013/03/native-rtl-support-in-android-42.html",
       "guide/topics/resources/string-resource.html#Plurals",
       "guide/topics/resources/string-resource.html",
       "reference/java/util/Locale.html"
@@ -1089,7 +1156,7 @@
     "resources": [
       "guide/topics/resources/string-resource.html",
       "design/style/writing.html",
-      "http://en.wikipedia.org/wiki/XLIFF"
+      "https://en.wikipedia.org/wiki/XLIFF"
     ]
   },
   "distribute/toolsreference/localizationchecklist/managestrings/zhcn": {
@@ -1097,26 +1164,20 @@
     "resources": [
       "guide/topics/resources/string-resource.html",
       "intl/zh-cn/design/style/writing.html",
-      "http://en.wikipedia.org/wiki/XLIFF"
-    ]
-  },
-  "distribute/toolsreference/localizationchecklist/translatestrings": {
-    "title": "",
-    "resources": [
-      "distribute/stories/localization.html",
+      "https://en.wikipedia.org/wiki/XLIFF"
     ]
   },
   "distribute/toolsreference/localizationchecklist/preplaunch": {
     "title": "",
     "resources": [
-      "distribute/tools/promote/badges.html",
+      "https://play.google.com/intl/en_us/badges/",
       "distribute/tools/promote/device-art.html"
     ]
   },
   "distribute/toolsreference/localizationchecklist/preplaunch/zhcn": {
     "title": "",
     "resources": [
-      "intl/zh-cn/distribute/tools/promote/badges.html",
+      "https://play.google.com/intl/en_us/badges/",
       "intl/zh-cn/distribute/tools/promote/device-art.html"
     ]
   },
@@ -1207,15 +1268,14 @@
   "distribute/toolsreference/launchchecklist/localization": {
     "title": "",
     "resources": [
-      "distribute/tools/localization-checklist.html",
-      "guide/topics/resources/localization.html",
+      "distribute/tools/localization-checklist.html"
     ]
   },
   "distribute/toolsreference/launchchecklist/graphics": {
     "title": "",
     "resources": [
       "https://support.google.com/googleplay/android-developer/answer/1078870",
-      "http://android-developers.blogspot.com/2011/10/android-market-featured-image.html"
+      "https://android-developers.blogspot.com/2011/10/android-market-featured-image.html"
     ]
   },
   "distribute/toolsreference/launchchecklist/productdetails": {
@@ -1228,14 +1288,14 @@
   "distribute/toolsreference/launchchecklist/badges": {
     "title": "",
     "resources": [
-      "distribute/tools/promote/badges.html",
+      "https://play.google.com/intl/en_us/badges/",
       "distribute/tools/promote/linking.html"
     ]
   },
   "distribute/toolsreference/launchchecklist/finalchecks": {
     "title": "",
     "resources": [
-      "http://play.google.com/about/developer-content-policy.html",
+      "https://play.google.com/about/developer-content-policy.html",
       "https://support.google.com/googleplay/android-developer/answer/113476",
       "support.html"
     ]
@@ -1249,9 +1309,6 @@
       "distribute/essentials/optimizing-your-app.html"
     ]
   },
-
-
-
   "distribute/toolsreference/launchchecklist/understanding/zhcn": {
     "title": "",
     "resources": [
@@ -1317,18 +1374,25 @@
       "https://support.google.com/googleplay/android-developer/answer/138000?hl=zh-Hans"
     ]
   },
+  "distribute/stories/localization": {
+    "title": "",
+    "resources": [
+      "distribute/stories/games/rvappstudios-zombie.html",
+      "distribute/stories/games/g4a-indian-rummy.html",
+      "distribute/stories/apps/sayhi.html"
+    ]
+  },
   "distribute/toolsreference/launchchecklist/localization/zhcn": {
     "title": "",
     "resources": [
       "intl/zh-cn/distribute/tools/localization-checklist.html",
-      "guide/topics/resources/localization.html"
     ]
   },
   "distribute/toolsreference/launchchecklist/graphics/zhcn": {
     "title": "",
     "resources": [
       "https://support.google.com/googleplay/android-developer/answer/1078870?hl=zh-Hans",
-      "http://android-developers.blogspot.com/2011/10/android-market-featured-image.html"
+      "https://android-developers.blogspot.com/2011/10/android-market-featured-image.html"
     ]
   },
   "distribute/toolsreference/launchchecklist/productdetails/zhcn": {
@@ -1341,14 +1405,14 @@
   "distribute/toolsreference/launchchecklist/badges/zhcn": {
     "title": "",
     "resources": [
-      "intl/zh-cn/distribute/tools/promote/badges.html",
+      "https://play.google.com/intl/en_us/badges/",
       "intl/zh-cn/distribute/tools/promote/linking.html"
     ]
   },
   "distribute/toolsreference/launchchecklist/finalchecks/zhcn": {
     "title": "",
     "resources": [
-      "http://play.google.com/about/developer-content-policy.html",
+      "https://play.google.com/about/developer-content-policy.html",
       "https://support.google.com/googleplay/android-developer/answer/113476?hl=zh-Hans",
       "support.html"
     ]
@@ -1393,9 +1457,9 @@
   "distribute/monetize/advertising": {
     "title": "",
     "resources": [
-      "http://www.google.com/ads/admob/#subid=us-en-et-dac",
-      "http://www.google.com/doubleclick/publishers/small-business/index.html",
-      "http://support.google.com/googleplay/android-developer/topic/2985714",
+      "https://www.google.com/ads/admob/#subid=us-en-et-dac",
+      "https://www.google.com/doubleclick/publishers/small-business/index.html",
+      "https://support.google.com/googleplay/android-developer/topic/2985714",
       "training/monetization/ads-and-ux.html"
     ]
   },
@@ -1403,8 +1467,8 @@
     "title": "",
     "resources": [
       "https://support.google.com/admob/topic/2784623",
-      "http://admob.blogspot.com/",
-      "http://analyticsacademy.withgoogle.com/mobile-app",
+      "https://admob.blogspot.com/",
+      "https://analyticsacademy.withgoogle.com/mobile-app",
     ]
   },
   "distribute/monetize/paymentmethods": {
@@ -1414,17 +1478,6 @@
       "https://support.google.com/googleplay/answer/2651410"
     ]
   },
-  "preview/landing/resources": {
-    "title": "",
-    "resources": [
-      "preview/overview.html",
-      "preview/download.html",
-      "preview/setup-sdk.html",
-      "preview/samples.html",
-      "preview/api-overview.html",
-      "preview/support.html"
-    ]
-  },
   "autolanding": {
     "title": "",
     "resources": [
@@ -1449,12 +1502,6 @@
       "training/wearables/ui/index.html"
     ]
   },
-  "play_dev_guide": {
-    "title": "",
-    "resources": [
-      "shareables/distribute/play_dev_guide_secrets_en.pdf"
-    ]
-  },
   "design/auto/auto_ui_guidelines": {
     "title": "",
     "resources": [
@@ -1494,19 +1541,55 @@
       "distribute/googleplay/auto.html"
     ]
   },
+  "training/testing/overview": {
+    "title": "",
+    "resources": [
+      "training/testing/start/index.html",
+      "tools/testing/testing_android.html",
+      "https://www.youtube.com/watch?v=vdasFFfXKOY"
+    ]
+  },
+  "training/testing/tools": {
+    "title": "",
+    "resources": [
+      "tools/testing-support-library/index.html",
+      "tools/help/monkey.html",
+      "tools/help/monkeyrunner_concepts.html",
+      "tools/testing/testing_otheride.html",
+      "https://source.android.com/devices/tech/debug/dumpsys.html"
+    ]
+  },
+  "training/testing/techniques": {
+    "title": "",
+    "resources": [
+      "training/testing/ui-testing/index.html",
+      "training/testing/unit-testing/index.html",
+      "training/testing/performance.html"
+    ]
+  },
+  "training/testing/resources": {
+    "title": "",
+    "resources": [
+      "https://github.com/googlesamples/android-testing",
+      "https://www.youtube.com/watch?v=2I6fuD20qlY",
+      "https://codelabs.developers.google.com/codelabs/android-testing/index.html",
+      "https://github.com/googlesamples/android-testing-templates",
+      "https://google.github.io/android-testing-support-library"
+    ]
+  },
   "distribute/stories/games": {
     "title": "",
     "resources": [
-      "http://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_Deerhunter2014_gpgs.pdf",
-      "http://storage.googleapis.com/androiddevelopers/shareables/stories/ConcreteSoftware_PBABowling_gpgs.pdf",
-      "http://storage.googleapis.com/androiddevelopers/shareables/stories/Dragonplay_DragonplaySlots_gpgs.pdf",
-      "http://storage.googleapis.com/androiddevelopers/shareables/stories/Gameloft_Asphalt8_gpgs.pdf",
-      "http://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_EternityWarriors3_gpgs.pdf",
-      "http://storage.googleapis.com/androiddevelopers/shareables/stories/HotheadGames_RivalsatWar_gpgs.pdf",
-      "http://storage.googleapis.com/androiddevelopers/shareables/stories/TMSOFT_Compulsive_gpgs.pdf",
-      "http://storage.googleapis.com/androiddevelopers/shareables/stories/Noodlecake_SuperStickmanGolf2_gpgs.pdf",
-      "http://storage.googleapis.com/androiddevelopers/shareables/stories/TinyRebel_DoctorWhoLegacy_gpgs.pdf",
-      "http://storage.googleapis.com/androiddevelopers/shareables/stories/Senri_LeosFortune_gpgs.pdf"
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_Deerhunter2014_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/ConcreteSoftware_PBABowling_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/Dragonplay_DragonplaySlots_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/Gameloft_Asphalt8_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_EternityWarriors3_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/HotheadGames_RivalsatWar_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/TMSOFT_Compulsive_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/Noodlecake_SuperStickmanGolf2_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/TinyRebel_DoctorWhoLegacy_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/Senri_LeosFortune_gpgs.pdf"
     ]
   },
   "overview/zhcn/1": {
@@ -1532,7 +1615,7 @@
   "overview/zhcn/3": {
     "title": "",
     "resources": [
-      "intl/zh-cn/distribute/tools/promote/badges.html",
+      "https://play.google.com/intl/en_us/badges/",
 
       "intl/zh-cn/distribute/tools/promote/device-art.html",
       "intl/zh-cn/distribute/tools/promote/linking.html",
@@ -1552,9 +1635,9 @@
   "overview/carousel/zhcn": {
     "title": "",
     "resources": [
-      "http://www.youtube.com/watch?v=vGV7FHGzpFU",
-      "http://www.youtube.com/watch?v=aqc3ZOTzpdk",
-      "http://www.youtube.com/watch?v=jaNrJ8uyLSc"
+      "https://www.youtube.com/watch?v=vGV7FHGzpFU",
+      "https://www.youtube.com/watch?v=aqc3ZOTzpdk",
+      "https://www.youtube.com/watch?v=jaNrJ8uyLSc"
     ]
   },
   "overview/1": {
@@ -1580,7 +1663,7 @@
   "overview/3": {
     "title": "",
     "resources": [
-      "distribute/tools/promote/badges.html",
+      "https://play.google.com/intl/en_us/badges/",
       "distribute/tools/promote/device-art.html",
       "distribute/tools/promote/linking.html",
       "distribute/tools/promote/brand.html",
@@ -1601,10 +1684,11 @@
     "resources": [
       "training/enterprise/app-compatibility.html",
       "training/enterprise/app-restrictions.html",
+      "training/enterprise/cosu.html",
       "https://www.youtube.com/watch?v=39NkpWkaH8M&index=2&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
       "samples/AppRestrictionSchema/index.html",
-      "samples/AppRestrictionEnforcer/index.html",
-      "https://www.youtube.com/watch?v=dH41OutAMNM"
+      "https://www.youtube.com/watch?v=dH41OutAMNM",
+      "samples/AppRestrictionEnforcer/index.html"
     ]
   },
   "training/work/admin": {
@@ -1647,5 +1731,59 @@
        "tools/performance/batterystats-battery-historian/index.html",
        "tools/performance/batterystats-battery-historian/charts.html"
     ]
-  }
+  },
+  "marshmallow/landing/resources": {
+    "title": "",
+    "resources": [
+       "about/versions/marshmallow/android-6.0-changes.html",
+       "about/versions/marshmallow/android-6.0.html",
+       "about/versions/marshmallow/samples.html"
+    ]
+  },
+  "marshmallow/landing/videos": {
+    "title": "",
+    "resources": [
+       "https://youtu.be/U9tw5ypqEN0",
+       "https://youtu.be/N72ksDKrX6c",
+       "https://youtu.be/iZqDdvhTZj0",
+       "https://www.youtube.com/watch?v=vcSj8ln-BlE",
+       "https://youtu.be/LQoohRwojmw",
+       "https://www.youtube.com/watch?v=VOn7VrTRlA4",
+       "https://youtu.be/5sCQjeGoE7M",
+       "https://www.youtube.com/watch?v=C8lUdPVSzDk",
+       "https://www.youtube.com/watch?v=HXacyy0HSW0",
+       "https://www.youtube.com/watch?v=OW1A4XFRuyc",
+       "https://www.youtube.com/watch?v=j3QC6hcpy90",
+       "https://www.youtube.com/watch?v=f17qe9vZ8RM",
+       "https://www.youtube.com/watch?v=ndBdf1_oOGA"
+    ]
+  },
+  "marshmallow/landing/more": {
+    "title": "",
+    "resources": [
+      "training/permissions/requesting.html",
+      "training/backup/autosyncapi.html",
+      "training/monitoring-device-state/doze-standby.html",
+      "training/app-links/index.html",
+      "training/articles/assistant.html",
+      "training/testing/performance.html",
+      "https://developers.google.com/android/nexus/images"
+    ]
+  },
+  "tools/landing/resources": {
+    "title": "",
+    "resources": [
+    "tools/studio/index.html",
+    "tools/studio/studio-features.html",
+    "sdk/installing/studio-tips.html",
+    ]
+  },
+  "tools/landing/latest": {
+    "title": "",
+    "resources": [
+    "https://medium.com/google-developers/how-often-should-you-update-android-studio-db25785c488e#.8blbql35x",
+    "http://android-developers.blogspot.com/2016/02/android-studio-20-beta.html",
+    "https://medium.com/google-developers/writing-more-code-by-writing-less-code-with-android-studio-live-templates-244f648d17c7#.hczcm02du",
+    ]
+  },
 }
diff --git a/docs/html/jd_extras.js b/docs/html/jd_extras.js
index 5dbca75..eb21dd9 100644
--- a/docs/html/jd_extras.js
+++ b/docs/html/jd_extras.js
@@ -17,6 +17,94 @@
  /* TODO Remove standard resources from here, such as below
  */
   {
+    "title":"Writing More Code by Writing Less Code with Android Studio Live Templates",
+    "titleFriendly":"",
+    "summary":"Unless you’re getting paid by the keystroke, no one wants to write repetitive boilerplate code.",
+    "url":"https://medium.com/google-developers/writing-more-code-by-writing-less-code-with-android-studio-live-templates-244f648d17c7#.hczcm02du",
+    "group":"",
+    "keywords": [],
+    "tags": ['studio'],
+    "image":"https://cdn-images-1.medium.com/max/800/1*JkrYXGs1AxZAbK0sCLrJAQ.gif",
+    "type":"medium"
+  },
+  {
+    "title":"How Often Should You Update Android Studio?",
+    "titleFriendly":"",
+    "summary":"One of the beauties of Android Studio is how quickly is evolves and improves.",
+    "url":"https://medium.com/google-developers/how-often-should-you-update-android-studio-db25785c488e#.8blbql35x",
+    "group":"",
+    "keywords": [],
+    "tags": ['studio'],
+    "image":"https://cdn-images-1.medium.com/max/2000/1*chMiA9mGa_FBUOoesHHk3Q.png",
+    "type":"medium"
+  },
+  {
+    "title":"Measure your app’s user acquisition channels",
+    "titleFriendly":"",
+    "summary":"Get details on how to use the Developer Console User Acquisitions reports to discover where your users come from.",
+    "url":"https://support.google.com/googleplay/android-developer/answer/6263332",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/play_dev.jpg",
+    "type":"google"
+  },
+  {
+    "title":"Set up native app install banners in Chrome",
+    "titleFriendly":"",
+    "summary":"Get the details you need to add your native app or game to your site’s web app manifest file.",
+    "url":"https://developers.google.com/web/updates/2015/03/increasing-engagement-with-app-install-banners-in-chrome-for-android#native",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/play_dev.jpg",
+    "type":"google"
+  },
+  {
+    "title":"Optimize your store listing pages with experiments",
+    "titleFriendly":"",
+    "summary":"You can run experiments to find the most effective graphics and localized text for your app.",
+    "url":"https://support.google.com/googleplay/android-developer/answer/6227309",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/play_dev.jpg",
+    "type":"google"
+  },
+  {
+    "title":"Content Experiments for Mobile Apps",
+    "titleFriendly":"",
+    "summary":"Google Analytics Content Experiments allows you to test multiple variations of a given web page.",
+    "url":"https://support.google.com/tagmanager/answer/6003007",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/play_dev.jpg",
+    "type":"google"
+  },
+  {
+    "title":"Store Listing Experiments for Google Play",
+    "titleFriendly":"",
+    "summary":"Learn how to use Google Play’s new store listing optimization feature to get more installs of your app.",
+    "url":"https://www.youtube.com/watch?v=B6ydLpkhq04",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/B6ydLpkhq04/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Use alpha/beta testing & staged rollouts",
+    "titleFriendly":"",
+    "summary":"Using the Google Play Developer Console, you can choose groups of users to test different versions of your app.",
+    "url":"https://support.google.com/googleplay/android-developer/answer/3131213",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/play_dev.jpg",
+    "type":"google"
+  },
+  {
     "title":"Quizlet Developer Story",
     "titleFriendly":"",
     "summary":"Quizlet is an extremely popular online learning tool for students. See how they optimized for the classroom with Android and the power of Google Play for Education.",
@@ -27,7 +115,7 @@
       "#gpfe",
       "#googleplay"
     ],
-    "image":"http://i1.ytimg.com/vi/Idu7VcTTXfk/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/Idu7VcTTXfk/maxresdefault.jpg",
     "type":"video"
   },
   {
@@ -41,7 +129,7 @@
       "#gpfe",
       "#googleplay"
     ],
-    "image":"http://i1.ytimg.com/vi/IKhU180eJMo/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/IKhU180eJMo/maxresdefault.jpg",
     "type":"video"
   },
   {
@@ -70,7 +158,7 @@
     "title":"Cast sample apps",
     "titleFriendly":"",
     "summary":"Get example Google Cast applications for both senders and receivers.",
-    "url":"http://www.github.com/googlecast",
+    "url":"https://www.github.com/googlecast",
     "group":"",
     "keywords": ["cast", "samples"],
     "tags": [],
@@ -103,7 +191,7 @@
     "title":"Cardboard design guidelines",
     "titleFriendly":"",
     "summary":"Focus on overall usability and avoiding common VR pitfalls while creating an immersive experience of your own.",
-    "url":"http://www.google.com/design/spec-vr",
+    "url":"https://www.google.com/design/spec-vr",
     "group":"",
     "keywords": ["carboard","vr"],
     "tags": [],
@@ -165,7 +253,7 @@
       "#gpfe",
       "#googleplay"
     ],
-    "image":"http://i1.ytimg.com/vi/iokH4SAIfRw/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/iokH4SAIfRw/maxresdefault.jpg",
     "type":"video"
   },
   {
@@ -179,7 +267,7 @@
       "#gpfe",
       "#googleplay"
     ],
-    "image":"http://i1.ytimg.com/vi/Eh2adsAyTKc/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/Eh2adsAyTKc/maxresdefault.jpg",
     "type":"video"
   },
   {
@@ -193,7 +281,7 @@
       "#gpfe",
       "#googleplay"
     ],
-    "image":"http://i1.ytimg.com/vi/_AZ6UcPz-_g/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/_AZ6UcPz-_g/maxresdefault.jpg",
     "type":"video"
   },
   {
@@ -207,79 +295,115 @@
       "#gpfe",
       "#googleplay"
     ],
-    "image":"http://i1.ytimg.com/vi/iulXz8QTD1g/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/iulXz8QTD1g/maxresdefault.jpg",
     "type":"video"
   },
   {
     "title":"DesignBytes: Intro To Material Design",
     "titleFriendly":"",
     "summary":"These days, UI designers need to be thinking about phones, tablets, laptops, TVs, smartwatches, and beyond. In this DesignByte we talk about how Google designers have been working on making cross-platform and multi-screen design easier. We wanted to build a design system that felt at home on every screen, from the smallest watch to the largest TV.",
-    "url":"http://www.youtube.com/watch?v=p4gmvHyuZzw",
+    "url":"https://www.youtube.com/watch?v=p4gmvHyuZzw",
     "group":"",
     "keywords": [],
     "tags": [
     ],
-    "image":"http://i1.ytimg.com/vi/p4gmvHyuZzw/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/p4gmvHyuZzw/maxresdefault.jpg",
     "type":"video"
   },
   {
     "title":"DesignBytes: Paper and Ink: The Materials that Matter",
     "titleFriendly":"",
     "summary":"Join Rich Fulcher to learn about the materials of material design. See how virtual paper and ink form the foundation of your tactile user interface and master the rules that govern their behaviour.",
-    "url":"http://www.youtube.com/watch?v=YaG_ljfzeUw",
+    "url":"https://www.youtube.com/watch?v=YaG_ljfzeUw",
     "group":"",
     "keywords": [],
     "tags": [
     ],
-    "image":"http://i1.ytimg.com/vi/YaG_ljfzeUw/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/YaG_ljfzeUw/maxresdefault.jpg",
     "type":"video"
   },
   {
     "title":"DesignBytes: Material Design in the Google I/O App",
     "titleFriendly":"",
     "summary":"Roman Nurik shares details on the design process for the Google I/O 2014 app. To check out the app's source code, visit github.com/google/iosched.",
-    "url":"http://www.youtube.com/watch?v=XOcCOBe8PTc",
+    "url":"https://www.youtube.com/watch?v=XOcCOBe8PTc",
     "group":"",
     "keywords": [],
     "tags": [
     ],
-    "image":"http://i1.ytimg.com/vi/XOcCOBe8PTc/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/XOcCOBe8PTc/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Toolbars for a flexible Action Bar & more",
+    "titleFriendly":"",
+    "summary":"Toolbars are a flexible View you can add to your Android app which provides many of the same APIs as the system provided Action Bar, but can also do so much more such as reacting to scrolling or being integrated directly into your layouts.",
+    "url":"https://www.youtube.com/watch?v=kmUGLURRPkI",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/kmUGLURRPkI/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Protecting Implicit Intents with Runtime Checks",
+    "titleFriendly":"",
+    "summary":"Make sure you protect your implicit intents with a simple runtime check.",
+    "url":"https://www.youtube.com/watch?v=HGElAW224dE",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/HGElAW224dE/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Tabs and ViewPager",
+    "titleFriendly":"",
+    "summary":"Showing multiple screens or pages of content is easy with the help of ViewPager and a PagerAdapter. Combining that with tabs make for an effective top level navigation strategy for your app or for moving between content at the same level of hierarchy within your app.",
+    "url":"https://www.youtube.com/watch?v=zQekzaAgIlQ",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/zQekzaAgIlQ/maxresdefault.jpg",
     "type":"video"
   },
   {
     "title":"Battery Drain and Networking",
     "titleFriendly":"",
     "summary":"Let’s take a moment to make something insanely clear: As far as battery is concerned, NETWORKING is the biggest, baddest, dirtiest offender there is. And optimizing performance here isn’t easy. Since the chip isn’t always awake and draining power, means you can optimize how it wakes up, sends traffic, and saves battery.",
-    "url":"http://www.youtube.com/watch?v=fEEulSk1kNY",
+    "url":"https://www.youtube.com/watch?v=fEEulSk1kNY",
     "group":"",
     "keywords": [],
     "tags": [
     ],
-    "image":"http://i1.ytimg.com/vi/fEEulSk1kNY/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/fEEulSk1kNY/maxresdefault.jpg",
     "type":"video"
   },
   {
     "title":"Batching Background Work Until Later",
     "titleFriendly":"",
     "summary":"Yes, your app is special. But when it comes to battery use, sometimes it’s better to be part of the crowd. Why not spread the battery blame around a bit? Ian Ni-Lewis shows you how ridiculously easy it is to go from battery hog to team player in this video.",
-    "url":"http://www.youtube.com/watch?v=-3ry8PxcJJA",
+    "url":"https://www.youtube.com/watch?v=-3ry8PxcJJA",
     "group":"",
     "keywords": [],
     "tags": [
     ],
-    "image":"http://i1.ytimg.com/vi/-3ry8PxcJJA/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/-3ry8PxcJJA/maxresdefault.jpg",
     "type":"video"
   },
   {
     "title":"The Performance Lifecycle",
     "titleFriendly":"",
     "summary":"Performance problems surface in your application at the least-wanted times (like right before you’re about to ship your first build). But don’t freak out: There’s a simple process that you can follow to help get your performance back under control.",
-    "url":"http://www.youtube.com/watch?v=_kKTGK-Cb_4",
+    "url":"https://www.youtube.com/watch?v=_kKTGK-Cb_4",
     "group":"",
     "keywords": [],
     "tags": [
     ],
-    "image":"http://i1.ytimg.com/vi/_kKTGK-Cb_4/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/_kKTGK-Cb_4/maxresdefault.jpg",
     "type":"video"
   },
   {
@@ -291,7 +415,7 @@
     "keywords": ["studio", "tools"],
     "tags": [
     ],
-    "image":"http://i1.ytimg.com/vi/K2dodTXARqc/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/K2dodTXARqc/maxresdefault.jpg",
     "type":"video"
   },
 
@@ -304,7 +428,7 @@
     "keywords": ["google play services"],
     "tags": [
     ],
-    "image":"http://i1.ytimg.com/vi/M3Udfu6qidk/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/M3Udfu6qidk/maxresdefault.jpg",
     "type":"video"
   },
   {
@@ -316,7 +440,7 @@
     "keywords": ["google play services"],
     "tags": [
     ],
-    "image":"http://i1.ytimg.com/vi/FOn64iqlphk/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/FOn64iqlphk/maxresdefault.jpg",
     "type":"video"
   },
   {
@@ -328,7 +452,7 @@
     "keywords": ["google play services"],
     "tags": [
     ],
-    "image":"http://i1.ytimg.com/vi/fvtMtfCuEpw/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/fvtMtfCuEpw/maxresdefault.jpg",
     "type":"video"
   },
     {
@@ -340,19 +464,19 @@
     "keywords": ["google play services"],
     "tags": [
     ],
-    "image":"http://i1.ytimg.com/vi/F0Kh_RnSM0w/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/F0Kh_RnSM0w/maxresdefault.jpg",
     "type":"video"
   },
   {
     "title":"Running a Successful Games Business with Google",
     "titleFriendly":"",
     "summary":"Sure, we all want to make the next great gaming masterpiece. But we also want to feed our families and/or dogs. Join Bob Meese from the Google Play team as he gives you some key pointers on how to make sure you're best taking advantage of Google Play and running a successful games business.",
-    "url":"http://www.youtube.com/watch?v=tDmnGNkTtlE",
+    "url":"https://www.youtube.com/watch?v=tDmnGNkTtlE",
     "group":"",
     "keywords": [],
     "tags": [
     ],
-    "image":"http://i1.ytimg.com/vi/tDmnGNkTtlE/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/tDmnGNkTtlE/maxresdefault.jpg",
     "type":"video"
   },
   {
@@ -364,7 +488,7 @@
     "keywords": ["tv"],
     "tags": [
     ],
-    "image":"http://i1.ytimg.com/vi/6K_jxccHv5M/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/6K_jxccHv5M/maxresdefault.jpg",
     "type":"video"
   },
   {
@@ -376,10 +500,94 @@
     "keywords": ["auto"],
     "tags": [
     ],
-    "image":"http://i1.ytimg.com/vi/ctiaVxgclsg/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/ctiaVxgclsg/maxresdefault.jpg",
     "type":"video"
   },
   {
+    "title":"Debugging and testing in Android Studio",
+    "titleFriendly":"",
+    "summary":"This video introduces the state of unit testing support in Studio and Google’s new Android Testing Support Library for functional UI testing and running instrumented tests on a device.",
+    "url":"https://www.youtube.com/watch?v=2I6fuD20qlY",
+    "group":"",
+    "keywords": ["testing"],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/2I6fuD20qlY/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Android Testing (Android Dev Summit 2015)",
+    "titleFriendly":"",
+    "summary":"Overview of the testing tools and frameworks provided by Google and how they can help you to iterate more quickly and maintain a more healthy codebase.",
+    "url":"https://www.youtube.com/watch?v=vdasFFfXKOY",
+    "group":"",
+    "keywords": ["testing"],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/vdasFFfXKOY/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"dumpsys",
+    "titleFriendly":"",
+    "summary":"A tool that runs on the device and provides information about the status of system services.",
+    "url":"https://source.android.com/devices/tech/debug/dumpsys.html",
+    "group":"",
+    "keywords": ["testing"],
+    "tags": [
+    ],
+    "image":"",
+    "type":"google"
+  },
+  {
+    "title":"Android Testing Samples",
+    "titleFriendly":"",
+    "summary":"A collection of samples demonstrating different frameworks and techniques for automated testing.",
+    "url":"https://github.com/googlesamples/android-testing",
+    "group":"",
+    "keywords": ["testing"],
+    "tags": [
+    ],
+    "image":"images/testing/testing-icon.png",
+    "type":"Samples"
+  },
+  {
+    "title":"Android Testing Templates",
+    "titleFriendly":"",
+    "summary":"A collection of Google's Android testing tools and frameworks, all integrated in a single application project.",
+    "url":"https://github.com/googlesamples/android-testing-templates",
+    "group":"",
+    "keywords": ["testing"],
+    "tags": [
+    ],
+    "image":"images/testing/testing-icon.png",
+    "type":"Samples"
+  },
+   {
+    "title":"Android Testing Support Library (GitHub)",
+    "titleFriendly":"",
+    "summary":"A resource page on GitHub for the Android Testing Support Library.",
+    "url":"https://google.github.io/android-testing-support-library",
+    "group":"",
+    "keywords": ["testing"],
+    "tags": [
+    ],
+    "image":"images/testing/testing-icon.png",
+    "type":"Samples"
+  },
+  {
+    "title":"Android Testing Codelab",
+    "titleFriendly":"",
+    "summary":"This codelab shows how to build an Android app from the ground up in Android Studio, using a Model View Presenter architecture, Unit Tests and Instrumentation Tests.",
+    "url":"https://codelabs.developers.google.com/codelabs/android-testing/index.html",
+    "group":"",
+    "keywords": ["testing"],
+    "tags": [
+    ],
+    "image":"images/testing/testing-icon.png",
+    "type":"google"
+  },
+  {
     "title":"Developer Registration",
     "titleFriendly":"",
     "summary":"Additional information about the registration process.",
@@ -425,6 +633,17 @@
     "type":"google"
   },
   {
+    "title":"Google Play Badge Generator",
+    "titleFriendly":"",
+    "summary":"Build badges for your app in just a few clicks, or download hi-res badge assets localized for a variety of languages.",
+    "url":"https://play.google.com/intl/en_us/badges/",
+    "group":"",
+    "keywords": [],
+    "tags": ["#developersupport"],
+    "image":"images/gp-badges-set.png",
+    "type":"google"
+  },
+  {
     "lang": "en",
     "group": "",
     "tags": ["#developersupport #termsandpolicies"],
@@ -445,7 +664,7 @@
     "group":"",
     "keywords": [],
     "tags": [],
-    "image":"http://storage.googleapis.com/support-kms-prod/SNP_712EA2784949DDF085C46E3BE7B1DC618A09_4389397_en_v0",
+    "image":"https://storage.googleapis.com/support-kms-prod/SNP_712EA2784949DDF085C46E3BE7B1DC618A09_4389397_en_v0",
     "type":"google"
   },
   {
@@ -456,7 +675,7 @@
     "group":"",
     "keywords": [],
     "tags": [],
-    "image":"http://storage.googleapis.com/support-kms-prod/SNP_712EA2784949DDF085C46E3BE7B1DC618A09_4389397_en_v0",
+    "image":"https://storage.googleapis.com/support-kms-prod/SNP_712EA2784949DDF085C46E3BE7B1DC618A09_4389397_en_v0",
     "type":"google"
   },
   {
@@ -485,7 +704,7 @@
     "title":"Google for Education",
     "titleFriendly":"",
     "summary":"Find out more about how Google can support your work with apps and tablets.",
-    "url":"http://www.google.com/edu/tablets/",
+    "url":"https://www.google.com/edu/tablets/",
     "group":"",
     "keywords": [],
     "tags": [],
@@ -506,22 +725,54 @@
   {
     "title":"Google Play Game Services",
     "titleFriendly":"",
-    "summary":"Tools to offer a better game experience.",
-    "url":"google/play-services/games.html",
+    "summary":"Make your games social with Google Play game services. Add achievements, leaderboards, real-time multiplayer, and other popular features using the Google Play game services SDK.",
+    "url":"https://developers.google.com/games/services/",
     "group":"",
     "keywords": ["games","play games"],
     "tags": [],
     "image":"images/google/gps-play_games_logo.png",
     "type":"google"
   },
-
+  {
+    "title":"Get Started with Analytics",
+    "titleFriendly":"",
+    "summary":"Get advanced insight into how players discover and play your games.",
+    "url":"distribute/analyze/start.html",
+    "group":"",
+    "keywords": ["analytics"],
+    "tags": [],
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "type": "distribute"
+  },
+  {
+    "title":"Build VR with Google Cardboard",
+    "titleFriendly":"",
+    "summary":"Turn any phone into a virtual reality headset with a Cardboard viewer and experiment with adding virtual reality to your games with the Cardboard SDK.",
+    "url":"distribute/googleplay/cardboard.html",
+    "group":"",
+    "keywords": ["cardboard"],
+    "tags": [],
+    "image":"images/cards/card-cardboard_2x.png",
+    "type": "distribute"
+  },
+  {
+    "title":"Monetize your apps intelligently",
+    "titleFriendly":"",
+    "summary":"Generate revenue from your free games with ads tailored to match your game's look and feel.",
+    "url":"https://www.google.com/admob/",
+    "group":"",
+    "keywords": ["AdMob"],
+    "tags": [],
+    "image":"images/cards/admob-analytics_2x.png",
+    "type": "distribute"
+  },
   {
     "lang": "en",
     "group": "",
     "tags": [
       "versions", "blog", "googleplay"
     ],
-    "url": "http://android-developers.blogspot.com/",
+    "url": "https://android-developers.blogspot.com/",
     "timestamp": 1004884220000,
     "image": "images/blog.jpg",
     "title": "Android Developers Blog",
@@ -530,12 +781,11 @@
     "type": "blog",
     "titleFriendly": ""
   },
-
   {
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html",
+    "url": "https://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html",
     "timestamp": 1194884220000,
     "image": null,
     "title": "Making Android Apps that Play Nice",
@@ -548,7 +798,7 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html",
+    "url": "https://android-developers.blogspot.com/2010/07/multithreading-for-performance.html",
     "timestamp": 1194884220000,
     "image": null,
     "title": "Multithreading for Performance",
@@ -561,7 +811,7 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://play.google.com/about/developer-content-policy.html",
+    "url": "https://play.google.com/about/developer-content-policy.html",
     "timestamp": 1194884220000,
     "image": "images/play_dev.jpg",
     "title": "Developer Program Policies",
@@ -584,6 +834,19 @@
     "titleFriendly": ""
   },
   {
+    "lang": "en",
+    "group": "",
+    "tags": ["devices", "nexus", "testing"],
+    "url": "https://developers.google.com/android/nexus/images",
+    "timestamp": 1194884220000,
+    "image": "images/cards/card-download_16-9_2x.png",
+    "title": "Factory Images for Nexus Devices",
+    "summary": "System image files for Android 6.0 and other Android releases.",
+    "keywords": ["nexus, downloads"],
+    "type": "support",
+    "titleFriendly": ""
+  },
+  {
     "lang": "zh-cn",
     "group": "",
     "tags": [],
@@ -600,7 +863,7 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://android-developers.blogspot.com/2011/10/android-market-featured-image.html",
+    "url": "https://android-developers.blogspot.com/2011/10/android-market-featured-image.html",
     "timestamp": 1194884220000,
     "image": "images/play_dev.jpg",
     "title": "Google Play Featured Image Guidelines",
@@ -782,9 +1045,9 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://youtu.be/SkHHPf3EdzE",
+    "url": "https://youtu.be/SkHHPf3EdzE",
     "timestamp": 1194884220000,
-    "image": "http://i1.ytimg.com/vi/SkHHPf3EdzE/maxresdefault.jpg",
+    "image": "https://i1.ytimg.com/vi/SkHHPf3EdzE/maxresdefault.jpg",
     "title": "Level Up Your Android Game",
     "summary": "Learn how to take your game to the next level on Google Play.",
     "keywords": [],
@@ -808,7 +1071,7 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://play.google.com/about/developer-distribution-agreement.html",
+    "url": "https://play.google.com/about/developer-distribution-agreement.html",
     "timestamp": 1194884220000,
     "image": "images/play_dev.jpg",
     "title": "Developer Distribution Agreement",
@@ -847,7 +1110,7 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://play.google.com/about/developer-distribution-agreement-addendum.html",
+    "url": "https://play.google.com/about/developer-distribution-agreement-addendum.html",
     "timestamp": 1194884220000,
     "image": "images/play_dev.jpg",
     "title": "Google Play for Education Addendum",
@@ -860,7 +1123,7 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://android-developers.blogspot.com/2013/03/native-rtl-support-in-android-42.html",
+    "url": "https://android-developers.blogspot.com/2013/03/native-rtl-support-in-android-42.html",
     "timestamp": null,
     "image": null,
     "title": "Native RTL Support in Android 4.2",
@@ -1020,7 +1283,7 @@
     "group":"",
     "keywords": ["android","dashboard","platforms","versions"],
     "tags": ["#ecosystem","#versions","#whatsnew"],
-    "image":"http://chart.googleapis.com/chart?chl=GL%201.1%20only%7CGL%202.0%7CGL%203.0&chf=bg%2Cs%2C00000000&chd=t%3A0.1%2C93.5%2C6.4&chco=c4df9b%2C6fad0c&chs=400x250&cht=p",
+    "image":"https://chart.googleapis.com/chart?chl=GL%201.1%20only%7CGL%202.0%7CGL%203.0&chf=bg%2Cs%2C00000000&chd=t%3A0.1%2C93.5%2C6.4&chco=c4df9b%2C6fad0c&chs=400x250&cht=p",
     "lang":"en",
     "type":"about"
   },
@@ -1239,9 +1502,9 @@
       "#gpfe",
       "#googleplay"
     ],
-    "url": "http://youtu.be/vzvpcEffvaE",
+    "url": "https://youtu.be/vzvpcEffvaE",
     "timestamp": 1383243492000,
-    "image": "http://i1.ytimg.com/vi/vzvpcEffvaE/maxresdefault.jpg",
+    "image": "https://i1.ytimg.com/vi/vzvpcEffvaE/maxresdefault.jpg",
     "title": "Introducing Tablets with Google Play for Education",
     "summary": "Schools in Hillsborough, New Jersey were among the first to try out Nexus 7 tablets with Google Play for Education. See the difference it made for students, teachers, and administrators.",
     "keywords": [],
@@ -1254,9 +1517,9 @@
     "tags": [
       "#engagement",
     ],
-    "url": "http://www.youtube.com/yt/dev/",
+    "url": "https://www.youtube.com/yt/dev/",
     "timestamp": 1383243492000,
-    "image": "http://www.youtube.com/yt/dev/media/images/yt-dev-home-hero.jpg",
+    "image": "https://www.youtube.com/yt/dev/media/images/yt-dev-home-hero.jpg",
     "title": "YouTube for Developers",
     "summary": "The YouTube APIs and Tools enable you to integrate YouTube's video content and functionality into your website, app, or device.",
     "keywords": [],
@@ -1269,7 +1532,7 @@
     "tags": [
       "#engagement",
     ],
-    "url": "http://www.google.com/analytics/mobile/",
+    "url": "https://www.google.com/analytics/mobile/",
     "timestamp": 1383243492000,
     "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "Mobile App Analytics",
@@ -1286,9 +1549,9 @@
     "tags": [
       "#gcm",
     ],
-    "url": "http://www.youtube.com/watch?v=y76rjidm8cU",
+    "url": "https://www.youtube.com/watch?v=y76rjidm8cU",
     "timestamp": 1383243492000,
-    "image": "http://1.bp.blogspot.com/-IF-1-1kA0sg/UYwTidxdi3I/AAAAAAAAAEU/ellLeQ-E1vs/s800/google-io-lockup-2.png",
+    "image": "https://1.bp.blogspot.com/-IF-1-1kA0sg/UYwTidxdi3I/AAAAAAAAAEU/ellLeQ-E1vs/s800/google-io-lockup-2.png",
     "title": "Google Cloud Messaging at I/O 2013",
     "summary": "Google Cloud Messaging allows your services to efficiently send data to applications on Android devices. See what's new, and learn how to use GCM to make your apps more efficient.",
     "keywords": ["gcm"],
@@ -1301,7 +1564,7 @@
     "tags": [
       "#gcm",
     ],
-    "url": "http://developer.chrome.com/apps/cloudMessagingV2",
+    "url": "https://developer.chrome.com/apps/cloudMessagingV2",
     "timestamp": 1383243492000,
     "image": "images/kk-chromium-icon.png",
     "title": "Google Cloud Messaging for Chrome",
@@ -1317,7 +1580,7 @@
     "tags": [
       "#sdkupdates"
     ],
-    "url": "http://android-developers.blogspot.com/2013/07/making-beautiful-android-app-icons.html",
+    "url": "https://android-developers.blogspot.com/2013/07/making-beautiful-android-app-icons.html",
     "timestamp": 1194884220000,
     "image": null,
     "title": "Make Beautiful Android App Icons",
@@ -1332,7 +1595,7 @@
     "tags": [
       "#sdkupdates"
     ],
-    "url": "http://android-developers.blogspot.com/2012/12/localize-your-promotional-graphics-on.html",
+    "url": "https://android-developers.blogspot.com/2012/12/localize-your-promotional-graphics-on.html",
     "timestamp": 1194884220000,
     "image": null,
     "title": "Localize Your Promotional Graphics",
@@ -1347,7 +1610,7 @@
     "tags": [
       "#sdkupdates"
     ],
-    "url": "http://android-developers.blogspot.com/2013/10/making-your-app-content-more-accessible.html",
+    "url": "https://android-developers.blogspot.com/2013/10/making-your-app-content-more-accessible.html",
     "timestamp": 1194884220000,
     "image": null,
     "title": "Make your App Content more Accessible with App Linking",
@@ -1438,7 +1701,7 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://en.wikipedia.org/wiki/XLIFF",
+    "url": "https://en.wikipedia.org/wiki/XLIFF",
     "timestamp": 1194884220000,
     "image": null,
     "title": "XML Localisation Interchange File Format (XLIFF)",
@@ -1503,7 +1766,7 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://android-developers.blogspot.com/2013/11/bring-your-apps-into-classroom-with.html",
+    "url": "https://android-developers.blogspot.com/2013/11/bring-your-apps-into-classroom-with.html",
     "timestamp": null,
     "image": "distribute/images/gp-edu-apps-image.jpg",
     "title": "Google play for education",
@@ -1542,7 +1805,7 @@
     "lang": "en",
     "group": "",
     "tags": ["games", "localization", "quality"],
-    "url": "http://www.youtube.com/watch?v=SkHHPf3EdzE",
+    "url": "https://www.youtube.com/watch?v=SkHHPf3EdzE",
     "timestamp": null,
     "image": "https://developers.google.com/apps/images/io_2013/google-io-logo.png",
     "title": "Level Up Your Android Game",
@@ -1581,9 +1844,9 @@
     "lang": "en",
     "group": "",
     "tags": ["monetize", "ads"],
-    "url": "http://www.google.com/doubleclick/publishers/small-business/index.html",
+    "url": "https://www.google.com/doubleclick/publishers/small-business/index.html",
     "timestamp": null,
-    "image": "http://www.google.com/doubleclick/publishers/small-business/images/define_ad.png",
+    "image": "https://www.google.com/doubleclick/publishers/small-business/images/define_ad.png",
     "title": "DoubleClick for Publishers",
     "summary": "A free ad management solution that helps growing publishers sell, schedule, deliver, and measure all of their digital ad inventory.",
     "keywords": ["ads"],
@@ -1594,7 +1857,7 @@
     "lang": "en",
     "group": "",
     "tags": ["monetize", "ads"],
-    "url": "http://support.google.com/googleplay/android-developer/topic/2985714",
+    "url": "https://support.google.com/googleplay/android-developer/topic/2985714",
     "timestamp": null,
     "image":"images/play_dev.jpg",
     "title": "Policy Center: Ads",
@@ -1620,7 +1883,7 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://admob.blogspot.com/",
+    "url": "https://admob.blogspot.com/",
     "timestamp": null,
     "image": "images/cards/analytics-mobile_2x.jpg",
     "title": "Inside Admob",
@@ -1685,7 +1948,7 @@
     "lang": "en",
     "group": "",
     "tags": ["plus", "social"],
-    "url": "http://plus.google.com/+GooglePlay",
+    "url": "https://plus.google.com/+GooglePlay",
     "timestamp": null,
     "image": "https://lh4.googleusercontent.com/-IKezweZlcXI/AAAAAAAAAAI/AAAAAAABOvg/uK8Z0jekVE4/s120-c/photo.jpg",
     "title": "+Google Play",
@@ -1726,7 +1989,7 @@
     "tags": [],
     "url": "https://developers.google.com/edu/guidelines",
     "timestamp": null,
-    "image": "http://developer.android.com/distribute/images/edu-guidelines.jpg",
+    "image": "https://developer.android.com/distribute/images/edu-guidelines.jpg",
     "title": "Education Guidelines",
     "summary": "These guidelines and requirements help you develop great apps for students, which offer compelling content and an intuitive user experience on Android tablets.",
     "keywords": [],
@@ -1739,7 +2002,7 @@
     "tags": [],
     "url": "https://developers.google.com/edu/guidelines?hl=zh-Hans",
     "timestamp": null,
-    "image": "http://developer.android.com/distribute/images/edu-guidelines.jpg",
+    "image": "https://developer.android.com/distribute/images/edu-guidelines.jpg",
     "title": "Education Guidelines",
     "summary": "These guidelines and requirements help you develop great apps for students, which offer compelling content and an intuitive user experience on Android tablets.",
     "keywords": [],
@@ -1752,7 +2015,7 @@
     "tags": [],
     "url": "https://developers.google.com/edu/faq",
     "timestamp": null,
-    "image": "http://developer.android.com/distribute/images/gpfe-faq.jpg",
+    "image": "https://developer.android.com/distribute/images/gpfe-faq.jpg",
     "title": "Education FAQ",
     "summary": "Answers to common questions you might have about Google Play for Education.",
     "keywords": [],
@@ -1789,9 +2052,9 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_Deerhunter2014_gpgs.pdf",
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_Deerhunter2014_gpgs.pdf",
     "timestamp": null,
-    "image": "http://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_Deerhunter2014_gpgs.png",
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_Deerhunter2014_gpgs.png",
     "title": "Deer Hunter 2014 by Glu &mdash; Sign-in",
     "summary": "Glu finds that Google Play Game Services helps improve the user experience which leads to increased player happiness. They also find that Play Games Services signed in users tend to play longer and have a higher lifetime value.",
     "keywords": ["stories"],
@@ -1802,9 +2065,9 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://storage.googleapis.com/androiddevelopers/shareables/stories/ConcreteSoftware_PBABowling_gpgs.pdf",
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/ConcreteSoftware_PBABowling_gpgs.pdf",
     "timestamp": null,
-    "image": "http://storage.googleapis.com/androiddevelopers/shareables/stories/ConcreteSoftware_PBABowling_gpgs.png",
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/ConcreteSoftware_PBABowling_gpgs.png",
     "title": "PBA® Bowling Challenge by Concrete Software &mdash; Quests",
     "summary": "Concrete Software finds that Google Play Game Services' quests are a great way to create new content for users that leads to higher engagement.",
     "keywords": ["stories"],
@@ -1815,9 +2078,9 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://storage.googleapis.com/androiddevelopers/shareables/stories/Dragonplay_DragonplaySlots_gpgs.pdf",
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Dragonplay_DragonplaySlots_gpgs.pdf",
     "timestamp": null,
-    "image": "http://storage.googleapis.com/androiddevelopers/shareables/stories/Dragonplay_DragonplaySlots_gpgs.png",
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Dragonplay_DragonplaySlots_gpgs.png",
     "title": "Dragonplay Slots by Dragonplay &mdash; Sign-in",
     "summary": "Dragonplay finds that players who sign in with Google Play Games services tend to be high quality users who were highly engaged. They also tend to be easier to convert to paying users.",
     "keywords": ["stories"],
@@ -1828,9 +2091,9 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://storage.googleapis.com/androiddevelopers/shareables/stories/Gameloft_Asphalt8_gpgs.pdf",
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Gameloft_Asphalt8_gpgs.pdf",
     "timestamp": null,
-    "image": "http://storage.googleapis.com/androiddevelopers/shareables/stories/Gameloft_Asphalt8_gpgs.png",
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Gameloft_Asphalt8_gpgs.png",
     "title": "Asphalt 8 by Gameloft &mdash; Friends invitations",
     "summary": "Gameloft finds that Google Play Game Services users are more engaged than the average Android user and more likely to convert to paying players.",
     "keywords": ["stories"],
@@ -1841,9 +2104,9 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_EternityWarriors3_gpgs.pdf",
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_EternityWarriors3_gpgs.pdf",
     "timestamp": null,
-    "image": "http://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_EternityWarriors3_gpgs.png",
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_EternityWarriors3_gpgs.png",
     "title": "Eternity Warriors 3 by Glu &mdash; Gifting",
     "summary": "Glu finds that Google Play Game Services gifting outperforms other implementations (including those with incentives) because of its seamless flow and consistent performance.",
     "keywords": ["stories"],
@@ -1854,9 +2117,9 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://storage.googleapis.com/androiddevelopers/shareables/stories/HotheadGames_RivalsatWar_gpgs.pdf",
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/HotheadGames_RivalsatWar_gpgs.pdf",
     "timestamp": null,
-    "image": "http://storage.googleapis.com/androiddevelopers/shareables/stories/HotheadGames_RivalsatWar_gpgs.jpg",
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/HotheadGames_RivalsatWar_gpgs.jpg",
     "title": "Rivals at War: Firefight by Hothead Games &mdash; Leaderboards",
     "summary": "Hothead Games is planning to include Google Play Game Services features in all their games going forwards after seeing that players that signed in with Play Games Services tend to show higher retention and a higher average revenue.",
     "keywords": ["stories"],
@@ -1867,9 +2130,9 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://storage.googleapis.com/androiddevelopers/shareables/stories/TMSOFT_Compulsive_gpgs.pdf",
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/TMSOFT_Compulsive_gpgs.pdf",
     "timestamp": null,
-    "image": "http://storage.googleapis.com/androiddevelopers/shareables/stories/TMSOFT_Compulsive_gpgs.png",
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/TMSOFT_Compulsive_gpgs.png",
     "title": "Compulsive by TMSOFT &mdash; Cross-platform",
     "summary": "TMSOFT finds that users who authenticate with Play Games Services on Android and iOS play Compulsive twice as much and purchase in-app products over four times as much.",
     "keywords": ["stories"],
@@ -1880,9 +2143,9 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://storage.googleapis.com/androiddevelopers/shareables/stories/Noodlecake_SuperStickmanGolf2_gpgs.pdf",
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Noodlecake_SuperStickmanGolf2_gpgs.pdf",
     "timestamp": null,
-    "image": "http://storage.googleapis.com/androiddevelopers/shareables/stories/Noodlecake_SuperStickmanGolf2_gpgs.png",
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Noodlecake_SuperStickmanGolf2_gpgs.png",
     "title": "Super Stickman Golf 2 by Noodlecake Studios &mdash; Multiplayer",
     "summary": "Noodlecake Studios finds that Google Play Game Services’ multiplayer feature helps reduce attrition.",
     "keywords": ["stories"],
@@ -1893,9 +2156,9 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://storage.googleapis.com/androiddevelopers/shareables/stories/TinyRebel_DoctorWhoLegacy_gpgs.pdf",
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/TinyRebel_DoctorWhoLegacy_gpgs.pdf",
     "timestamp": null,
-    "image": "http://storage.googleapis.com/androiddevelopers/shareables/stories/TinyRebelGames_DrWhoLegacy_pgps.png",
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/TinyRebelGames_DrWhoLegacy_pgps.png",
     "title": "Dr. Doctor Who: Legacy by Tiny Rebel Games &mdash; Achievements",
     "summary": "After integrating achievements and cloud services from Google Play Game Services, Tiny Rebel Games saw a dramatic increase in daily revenues as a result of an increase in daily installs and an increase in the average revenue per install.",
     "keywords": ["stories"],
@@ -1906,9 +2169,9 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://storage.googleapis.com/androiddevelopers/shareables/stories/Senri_LeosFortune_gpgs.pdf",
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Senri_LeosFortune_gpgs.pdf",
     "timestamp": null,
-    "image": "http://storage.googleapis.com/androiddevelopers/shareables/stories/Senri_LeosFortune_gpgs.png",
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Senri_LeosFortune_gpgs.png",
     "title": "Leo’s Fortune by 1337 &amp; Senri &mdash; Saved games",
     "summary": "1337 + Senri finds that Google Play Game Services is easy to integrate and provides essential game functions like cloud saved games, achievements and leaderboards which have a very large adoption rate amongst players.",
     "keywords": ["stories"],
@@ -1918,15 +2181,15 @@
   {
     "lang": "en",
     "group": "",
-    "tags": [],
-    "url": "shareables/distribute/play_dev_guide_secrets_en.pdf",
-    "timestamp": null,
-    "image": "distribute/images/play_dev_guide_b.jpg",
+    "tags": ["play,protips"],
+    "url": "shareables/distribute/secrets_play/v2/web/secrets_to_app_success_v2_en.pdf",
+    "timestamp": 1447437450,
+    "image": "images/distribute/secrets_v2_banner.jpg",
     "title": "The Secrets to App Success on Google Play",
-    "summary": "A guide to useful features, tips, and best practices that will help you grow a successful app business on Google Play.",
-    "keywords": ["distribute"],
-    "type": "PDF DOWNLOAD (11MB)",
-    "titleFriendly": ""
+    "summary": "Get the updated guide full of useful features, tips, and best practices that will help you grow a successful app or game business on Google Play.",
+    "keywords": ["secrets, success, play, google"],
+    "type": "Book",
+    "category": "distribute"
   },
   {
     "lang": "en",
@@ -1984,9 +2247,9 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://www.google.com/tagmanager/",
+    "url": "https://www.google.com/tagmanager/",
     "timestamp": null,
-    "image": "http://www.google.com/tagmanager/images/gtm-hero-illustration-small.png",
+    "image": "https://www.google.com/tagmanager/images/gtm-hero-illustration-small.png",
     "title": "Google Tag Manager",
     "summary": "Google Tag Manager enables you to change configuration values in your mobile apps using the Google Tag Manager interface, without having to rebuild and resubmit application binaries to app marketplaces.",
     "keywords": ["analytics", "tagmanager"],
@@ -2181,7 +2444,7 @@
     "tags": [],
     "url": "https://support.google.com/tagmanager/answer/6003007",
     "timestamp": null,
-    "image": "http://www.google.com/tagmanager/images/gtm-hero-illustration-small.png",
+    "image": "https://www.google.com/tagmanager/images/gtm-hero-illustration-small.png",
     "title": "In-App A/B Testing",
     "summary": "With content experiments in Google Tag Manager you can test multiple variations of your app to find which works best.",
     "keywords": ["tagmanager"],
@@ -2507,7 +2770,7 @@
     "lang": "en",
     "group": "",
     "tags": [],
-    "url": "http://analyticsacademy.withgoogle.com/mobile-app",
+    "url": "https://analyticsacademy.withgoogle.com/mobile-app",
     "timestamp": null,
     "image": "distribute/images/advertising.jpg",
     "title": "Analytics Academy for Mobile Apps",
@@ -2650,6 +2913,200 @@
     "titleFriendly": ""
   },
 
+ // Online courses
+
+ {
+    "title":"UX Design for Mobile Developers",
+    "titleFriendly":"",
+    "summary":"Learn how to design a 5-star app.",
+    "url":"https://www.udacity.com/course/ud849",
+    "group":"",
+    "keywords": ["mobile","ux","design"],
+    "tags": ["courses, start"],
+    "image":"images/cards/courses/mobile_ux_course.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Developing Android Apps",
+    "titleFriendly":"",
+    "summary":"Learn Android and build an app!",
+    "url":"https://www.udacity.com/course/ud853",
+    "group":"",
+    "keywords": ["android", "start","firstapp","sdk"],
+    "tags": ["courses, start"],
+    "image":"images/cards/courses/android_fundamentals_course.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Android Performance",
+    "titleFriendly":"",
+    "summary":"Optimize your apps for speed and usability.",
+    "url":"https://www.udacity.com/course/ud825",
+    "group":"",
+    "keywords": ["android, performance","battery"],
+    "tags": ["courses, performance"],
+    "image":"images/cards/courses/android_performance_course.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Enroll in the Android Nanodegree",
+    "titleFriendly":"",
+    "summary":"Enroll in the Android Nanodegree to build the skills to work as an Android developer.",
+    "url":"https://www.udacity.com/android",
+    "group":"",
+    "keywords": ["android, nanodegree"],
+    "tags": ["courses"],
+    "image":"images/cards/courses/android_nanodegree.png",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Advanced Android App Development",
+    "titleFriendly":"",
+    "summary":"Productionize and publish your apps.",
+    "url":"https://www.udacity.com/course/ud855",
+    "group":"",
+    "keywords": ["android, experts"],
+    "tags": ["courses, expert"],
+    "image":"images/cards/courses/advanced_android_course.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Material Design for Android Developers",
+    "titleFriendly":"",
+    "summary":"Learn how to make your apps material.",
+    "url":"https://www.udacity.com/course/ud862",
+    "group":"",
+    "keywords": ["android, design, pure, material"],
+    "tags": ["courses, start, material"],
+    "image":"images/cards/courses/android_design_course.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Android for Beginners",
+    "titleFriendly":"",
+    "summary":"Make your first Android app, even if you don't write code.",
+    "url":"https://www.udacity.com/course/ud837",
+    "group":"",
+    "keywords": ["android, sdk, firstapp"],
+    "tags": ["courses, start"],
+    "image":"images/cards/courses/beginning_android_course.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Gradle for Android and Java",
+    "titleFriendly":"",
+    "summary":"Build better apps through automation",
+    "url":"https://www.udacity.com/course/ud867",
+    "group":"",
+    "keywords": ["gradle","studio", "sdk"],
+    "tags": ["courses, gradle, sdk"],
+    "image":"images/cards/courses/gradle_course.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Add Location and Context to your app",
+    "titleFriendly":"",
+    "summary":"Make Your Android App Location Aware.",
+    "url":"https://www.udacity.com/course/ud876-1",
+    "group":"",
+    "keywords": ["google services, context, location"],
+    "tags": ["courses, google, location, context"],
+    "image":"images/cards/courses/android_location_course.png",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Analytics and Tag Manager for Android",
+    "titleFriendly":"",
+    "summary":"Use Analytics and Tag Manager in Your Apps.",
+    "url":"https://www.udacity.com/course/ud876-2",
+    "group":"",
+    "keywords": ["google services, analytics, tag manager"],
+    "tags": ["courses, google, analytics"],
+    "image":"images/cards/courses/android_analytics_course.png",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"AdMob for Android",
+    "titleFriendly":"",
+    "summary":"Monetize Your App by Displaying Ads.",
+    "url":"https://www.udacity.com/course/ud876-3",
+    "group":"",
+    "keywords": ["monetize, google services, ads, admob"],
+    "tags": ["courses, google, ads, admob"],
+    "image":"images/cards/courses/admob_course.png",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Add Maps to your Android app",
+    "titleFriendly":"",
+    "summary":"Use maps, cameras, markers and more in your app.",
+    "url":"https://www.udacity.com/course/ud876-4",
+    "group":"",
+    "keywords": ["google, maps, marker, camera"],
+    "tags": ["courses, google, maps"],
+    "image":"images/cards/courses/android_maps_course.png",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Add Sign-in to your Android app",
+    "titleFriendly":"",
+    "summary":"Build a Seamless Sign-In Experience.",
+    "url":"https://www.udacity.com/course/ud876-5",
+    "group":"",
+    "keywords": ["google services, signin, authorization"],
+    "tags": ["courses, google, auth"],
+    "image":"images/cards/courses/android_identity_course.png",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Android Wear Development",
+    "titleFriendly":"",
+    "summary":"Extend your Apps to Android Smartwatches.",
+    "url":"https://www.udacity.com/course/ud875A",
+    "group":"",
+    "keywords": ["wear, wearables, smartwatch"],
+    "tags": ["courses, wear, wearable"],
+    "image":"images/cards/courses/android_wear_course.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Android TV and Google Cast Development",
+    "titleFriendly":"",
+    "summary":"Extend your Apps to the Big Screen.",
+    "url":"https://www.udacity.com/course/ud875B",
+    "group":"",
+    "keywords": ["cast, living room"],
+    "tags": ["courses, cast, tv"],
+    "image":"images/cards/courses/android_tv_cast_course.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
+  {
+    "title":"Android Auto Development",
+    "titleFriendly":"",
+    "summary":"Put your apps in the driver's seat.",
+    "url":"https://www.udacity.com/course/ud875C",
+    "group":"",
+    "keywords": ["auto"],
+    "tags": ["courses, auto"],
+    "image":"images/cards/courses/android_auto_course.jpg",
+    "lang":"en",
+    "type":"online course"
+  },
 
 
  // TODO remove this?
@@ -2666,126 +3123,6 @@
     "type":"design"
   },
   {
-    "title":"UX Design for Mobile Developers",
-    "titleFriendly":"",
-    "summary":"Learn how to design a 5-star app.",
-    "url":"https://www.udacity.com/course/ux-design-for-mobile-developers--ud849",
-    "group":"",
-    "keywords": ["mobile","ux","design"],
-    "tags": ["courses"],
-    "image":"images/cards/course-ud849_2x.jpg",
-    "lang":"en",
-    "type":"online course"
-  },
-  {
-    "title":"Developing Android Apps",
-    "titleFriendly":"",
-    "summary":"Learn Android and build an app!",
-    "url":"https://www.udacity.com/course/developing-android-apps--ud853",
-    "group":"",
-    "keywords": ["start","firstapp","sdk"],
-    "tags": ["courses"],
-    "image":"images/cards/course-ud853_2x.jpg",
-    "lang":"en",
-    "type":"online course"
-  },
-  {
-    "title":"Android Performance",
-    "titleFriendly":"",
-    "summary":"Optimize your apps for speed and usability.",
-    "url":"https://www.udacity.com/course/android-performance--ud825",
-    "group":"",
-    "keywords": ["performance","battery"],
-    "tags": ["courses"],
-    "image":"images/cards/course-ud825_2x.png",
-    "lang":"en",
-    "type":"online course"
-  },
-  {
-    "title":"Enroll in the Android Nanodegree",
-    "titleFriendly":"",
-    "summary":"Enroll in the Android Nanodegree to build the skills to work as an Android developer.",
-    "url":"https://www.udacity.com/android",
-    "group":"",
-    "keywords": ["nanodegree"],
-    "tags": ["courses"],
-    "image":"images/cards/course-nanodegree_2x.png",
-    "lang":"en",
-    "type":"online course"
-  },
-  {
-    "title":"Advanced Android App Development",
-    "titleFriendly":"",
-    "summary":"Productionize and publish your apps.",
-    "url":"https://www.udacity.com/course/advanced-android-app-development--ud855",
-    "group":"",
-    "keywords": ["android, experts"],
-    "tags": ["courses"],
-    "image":"images/cards/course-ud855_2x.jpg",
-    "lang":"en",
-    "type":"online course"
-  },
-  {
-    "title":"Android Ubiquitous Computing",
-    "titleFriendly":"",
-    "summary":"Extend your apps to Wear, TV, and Auto.",
-    "url":"https://www.udacity.com/course/android-ubiquitous-computing--ud875",
-    "group":"",
-    "keywords": ["wear, tv, auto"],
-    "tags": ["courses"],
-    "image":"images/cards/course-ud875_2x.jpg",
-    "lang":"en",
-    "type":"online course"
-  },
-  {
-    "title":"Google Play Services",
-    "titleFriendly":"",
-    "summary":"Use Google APIs to improve your apps.",
-    "url":"https://www.udacity.com/course/google-play-services--ud876",
-    "group":"",
-    "keywords": ["google, play services, google services"],
-    "tags": ["courses"],
-    "image":"images/cards/course-ud876_2x.jpg",
-    "lang":"en",
-    "type":"online course"
-  },
-  {
-    "title":"Android Design for Developers",
-    "titleFriendly":"",
-    "summary":"Learn how to make your apps material.",
-    "url":"https://www.udacity.com/course/android-design-for-developers--ud862",
-    "group":"",
-    "keywords": ["design, pure, material"],
-    "tags": ["courses"],
-    "image":"images/cards/course-ud862_2x.jpg",
-    "lang":"en",
-    "type":"online course"
-  },
-  {
-    "title":"Android Development for Beginners",
-    "titleFriendly":"",
-    "summary":"Make your first Android app, even if you don't write code.",
-    "url":"https://www.udacity.com/course/android-development-for-beginners--ud837",
-    "group":"",
-    "keywords": ["firstapp",],
-    "tags": ["courses"],
-    "image":"images/cards/course-ud837_2x.jpg",
-    "lang":"en",
-    "type":"online course"
-  },
-  {
-    "title":"Gradle for Android and Java",
-    "titleFriendly":"",
-    "summary":"Build better apps through automation",
-    "url":"https://www.udacity.com/course/gradle-for-android-and-java--ud867",
-    "group":"",
-    "keywords": ["gradle","studio", "sdk"],
-    "tags": ["courses"],
-    "image":"images/cards/course-ud867_2x.jpg",
-    "lang":"en",
-    "type":"online course"
-  },
-  {
     "title":"Watch Faces for Android Wear",
     "titleFriendly":"",
     "summary":"Watch faces let you customize the most prominent UI feature of Android wearables. The API is simple enough for rapid development and flexible enough to build something awesome.",
@@ -2793,7 +3130,7 @@
     "group":"",
     "keywords": ["wear", "wearable", "watch face"],
     "tags": [],
-    "image":"http://i1.ytimg.com/vi/AK38PJZmIW8/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/AK38PJZmIW8/maxresdefault.jpg",
     "lang":"en",
     "type":"video"
   },
@@ -2805,7 +3142,7 @@
     "group":"",
     "keywords": ["support", "compatibility"],
     "tags": [],
-    "image":"http://i1.ytimg.com/vi/3PIc-DuEU2s/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/3PIc-DuEU2s/maxresdefault.jpg",
     "lang":"en",
     "type":"Video"
   },
@@ -2817,7 +3154,7 @@
     "group":"",
     "keywords": ["support", "compatibility","design-code"],
     "tags": [],
-    "image":"http://i1.ytimg.com/vi/5Be2mJzP-Uw/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/5Be2mJzP-Uw/maxresdefault.jpg",
     "lang":"en",
     "type":"Video"
   },
@@ -2829,7 +3166,7 @@
     "group":"",
     "keywords": ["tools", "studio","gradle"],
     "tags": [],
-    "image":"http://i1.ytimg.com/vi/cD7NPxuuXYY/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/cD7NPxuuXYY/maxresdefault.jpg",
     "lang":"en",
     "type":"Video"
   },
@@ -2841,7 +3178,7 @@
     "group":"",
     "keywords": ["tools", "studio","layout"],
     "tags": [],
-    "image":"http://i1.ytimg.com/vi/JLLnhwtDoHw/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/JLLnhwtDoHw/maxresdefault.jpg",
     "lang":"en",
     "type":"Video"
   },
@@ -2853,22 +3190,11 @@
     "group":"",
     "keywords": ["tools", "studio","debugging","profiling","performance"],
     "tags": [],
-    "image":"http://i1.ytimg.com/vi/2I6fuD20qlY/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/2I6fuD20qlY/maxresdefault.jpg",
     "lang":"en",
     "type":"Video"
   },
   {
-    "tags": [
-      "android",
-      "developerstory",
-      "googleplay",
-      "featured"
-    ],
-    "title": "Android Developer Story: Jelly Button Games — Growing globally through data driven development",
-    "type": "youtube",
-    "url": "http://www.youtube.com/watch?v=Pd49vTkvu0U"
-  },
-  {
     "title":"Scale with Google Cloud Platform",
     "titleFriendly":"",
     "summary":"Build, test, and deploy applications on Google's highly-scalable and reliable infrastructure for your web, mobile and backend solutions.",
@@ -2896,7 +3222,7 @@
     "title":"Android for Work",
     "titleFriendly":"",
     "summary":"Learn more about how Android for Work makes your favorite phones and tablets the perfect business tools.",
-    "url":"http://www.android.com/work/",
+    "url":"https://www.android.com/work/",
     "group":"",
     "keywords": ["work", "enterprise", "emm"],
     "tags": [],
@@ -2912,7 +3238,7 @@
     "group":"",
     "keywords": ["work", "enterprise", "emm"],
     "tags": [],
-    "image":"http://i1.ytimg.com/vi/jQWB_-o1kz4/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/jQWB_-o1kz4/maxresdefault.jpg",
     "lang":"en",
     "type":"youtube"
   },
@@ -2924,7 +3250,7 @@
     "group":"",
     "keywords": ["work", "enterprise", "emm"],
     "tags": [],
-    "image":"http://i1.ytimg.com/vi/39NkpWkaH8M/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/39NkpWkaH8M/maxresdefault.jpg",
     "lang":"en",
     "type":"youtube"
   },
@@ -2936,7 +3262,7 @@
     "group":"",
     "keywords": ["work", "enterprise", "emm"],
     "tags": [],
-    "image":"http://i1.ytimg.com/vi/dH41OutAMNM/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/dH41OutAMNM/maxresdefault.jpg",
     "lang":"en",
     "type":"youtube"
   },
@@ -2948,7 +3274,7 @@
     "group":"",
     "keywords": ["work", "enterprise", "emm"],
     "tags": [],
-    "image":"http://i1.ytimg.com/vi/j3QC6hcpy90/maxresdefault.jpg",
+    "image":"https://i1.ytimg.com/vi/j3QC6hcpy90/maxresdefault.jpg",
     "lang":"en",
     "type":"youtube"
   },
@@ -2976,8 +3302,186 @@
     "lang":"en",
     "type":"distribute"
   },
-
-
+  {
+    "title":"What’s New in Android N Developer Preview",
+    "titleFriendly":"",
+    "summary":"Learn all about the new features in the Android N Preview.",
+    "url":"https://www.youtube.com/watch?v=CsulIu3UaUM",
+    "group":"",
+    "keywords": ["n preview"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/CsulIu3UaUM/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Developing for Android 6.0 (Marshmallow)",
+    "titleFriendly":"",
+    "summary":"This video covers how to get started with the preview, important APIs to test and how to provide feedback on the preview.",
+    "url":"https://www.youtube.com/watch?v=yYU4DHLwoRk",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/yYU4DHLwoRk/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Google I/O 2015 - What's new in Android",
+    "titleFriendly":"",
+    "summary":"This session will highlight the most exciting new developer features of the Android platform.",
+    "url":"https://www.youtube.com/watch?v=ndBdf1_oOGA",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/ndBdf1_oOGA/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Fingerprint and payments APIs",
+    "titleFriendly":"",
+    "summary":"New fingerprint and payments APIs are introduced in M, to enable enhanced UX and security for online purchasing, banking, and retail payments.",
+    "url":"https://www.youtube.com/watch?v=VOn7VrTRlA4",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/VOn7VrTRlA4/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Introduction to Voice Interaction API",
+    "titleFriendly":"",
+    "summary":"This video covers how to use the Voice Interaction API to support system or custom voice actions.",
+    "url":"https://www.youtube.com/watch?v=OW1A4XFRuyc",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/OW1A4XFRuyc/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Android Auto Backup for Apps",
+    "titleFriendly":"",
+    "summary":"Android Backup is the automatic, cloud-based backup and restore of users’ apps when they set up a new device.",
+    "url":"https://www.youtube.com/watch?v=HXacyy0HSW0",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/HXacyy0HSW0/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"New APIs in M for Android for Work",
+    "titleFriendly":"",
+    "summary":"Android M extends Android for Work functionality with a new set of APIs for Enterprise Mobility Management providers to offer new features and policy controls to IT Departments.",
+    "url":"https://www.youtube.com/watch?v=vcSj8ln-BlE",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/vcSj8ln-BlE/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Android for Work: Single Use Devices",
+    "titleFriendly":"",
+    "summary":"Android M is bringing the power of Android to all kinds of workplaces.",
+    "url":"https://www.youtube.com/watch?v=j3QC6hcpy90",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/j3QC6hcpy90/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Runtime Permissions in Android 6.0 Marshmallow",
+    "titleFriendly":"",
+    "summary":"Learn how to integrate runtime permissions into your Android app.",
+    "url":"https://www.youtube.com/watch?v=C8lUdPVSzDk",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/C8lUdPVSzDk/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Introduction to Doze",
+    "titleFriendly":"",
+    "summary":"An overview of Doze and how to make sure that your app behaves as expected both in and out of Doze mode. ",
+    "url":"https://youtu.be/N72ksDKrX6c",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/N72ksDKrX6c/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"The Nexus 5X, Nexus 6P and Android Marshmallow",
+    "titleFriendly":"",
+    "summary":"The new Nexus 5X and Nexus 6P along with some of the most significant developer features in the latest Android release,.",
+    "url":"https://youtu.be/U9tw5ypqEN0",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/U9tw5ypqEN0/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Asking For Permission Fine",
+    "titleFriendly":"",
+    "summary":"Picking the right way and time to ask for a permission is critical to it being granted. ",
+    "url":"https://youtu.be/iZqDdvhTZj0",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/iZqDdvhTZj0/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Data Binding Library",
+    "titleFriendly":"",
+    "summary":"Data Binding Library is a way to write declarative layouts and minimize the glue code necessary to bind your application logic and layouts. ",
+    "url":"https://youtu.be/5sCQjeGoE7M",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/5sCQjeGoE7M/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"App Links",
+    "titleFriendly":"",
+    "summary":"App Links is a new feature of Android Marshmallow that brings a faster way of opening website links for domains that you own.",
+    "url":"https://youtu.be/LQoohRwojmw",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/LQoohRwojmw/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Android M Permissions",
+    "titleFriendly":"",
+    "summary":"An introduction to Android M runtime permissions in Android M from Google I/O 2015. ",
+    "url":"https://www.youtube.com/watch?v=f17qe9vZ8RM",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/f17qe9vZ8RM/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
   {
     "lang": "ja",
     "title": "Gaming Everywhere",
@@ -2987,7 +3491,7 @@
     "group": "",
     "keywords": [],
     "tags": [],
-    "image": "http://img.youtube.com/vi/xelYnWcYkuE/hqdefault.jpg",
+    "image": "https://img.youtube.com/vi/xelYnWcYkuE/hqdefault.jpg",
     "type": "youtube"
   },
   {
@@ -2999,7 +3503,7 @@
     "group": "",
     "keywords": [],
     "tags": [],
-    "image": "http://img.youtube.com/vi/lJdjY3z6-LY/hqdefault.jpg",
+    "image": "https://img.youtube.com/vi/lJdjY3z6-LY/hqdefault.jpg",
     "type": "youtube"
   },
   {
@@ -3007,11 +3511,11 @@
     "title": "Android Wear 関連の動画に日本語字幕が付きました",
     "titleFriendly": "",
     "summary": "",
-    "url": "http://googledevjp.blogspot.jp/2014/12/android-wear.html",
+    "url": "https://googledevjp.blogspot.jp/2014/12/android-wear.html",
     "group": "",
     "keywords": [],
     "tags": [],
-    "image": "http://i1.ytimg.com/vi/4JcDYkgqksY/maxresdefault.jpg",
+    "image": "https://i1.ytimg.com/vi/4JcDYkgqksY/maxresdefault.jpg",
     "type": "blog"
   },
   {
@@ -3019,11 +3523,11 @@
     "title": "Android Studio 1.0 をリリースしました",
     "titleFriendly": "",
     "summary": "",
-    "url": "http://googledevjp.blogspot.jp/2014/12/android-studio-10.html",
+    "url": "https://googledevjp.blogspot.jp/2014/12/android-studio-10.html",
     "group": "",
     "keywords": [],
     "tags": [],
-    "image": "http://3.bp.blogspot.com/-1hV3sD1At74/VIaQSWBasUI/AAAAAAAABAU/9vYLJMsmMuQ/s1600/studio-logo.png",
+    "image": "https://3.bp.blogspot.com/-1hV3sD1At74/VIaQSWBasUI/AAAAAAAABAU/9vYLJMsmMuQ/s1600/studio-logo.png",
     "type": "blog"
   },
   {
@@ -3031,11 +3535,11 @@
     "title": "Google Play 開発者サービス 6.5 のご紹介",
     "titleFriendly": "",
     "summary": "",
-    "url": "http://googledevjp.blogspot.jp/2014/12/google-play-65.html",
+    "url": "https://googledevjp.blogspot.jp/2014/12/google-play-65.html",
     "group": "",
     "keywords": [],
     "tags": [],
-    "image": "http://1.bp.blogspot.com/-4BNREC0Jojo/VGo7ahW35wI/AAAAAAAABAc/9thZl94F6fY/s1600/GMS%2B-%2BRelease%2BBlog%2BNacho%2B-%2BMap%2BToolbar.png",
+    "image": "https://1.bp.blogspot.com/-4BNREC0Jojo/VGo7ahW35wI/AAAAAAAABAc/9thZl94F6fY/s1600/GMS%2B-%2BRelease%2BBlog%2BNacho%2B-%2BMap%2BToolbar.png",
     "type": "blog"
   },
   {
@@ -3079,7 +3583,7 @@
     "title": "Google Play アプリ ポリシー センター",
     "titleFriendly": "",
     "summary": "",
-    "url": "http://support.google.com/googleplay/android-developer/answer/4430948?hl=ja",
+    "url": "https://support.google.com/googleplay/android-developer/answer/4430948?hl=ja",
     "group": "",
     "keywords": [],
     "tags": [],
@@ -3115,11 +3619,11 @@
     "title": "Google Cloud Platform が支える、新感覚リアルタイム RPG ユニゾンリーグ - 株式会社エイチームの GCP 導入事例",
     "titleFriendly": "",
     "summary": "スケーラブルなバックエンドを実現する Google Cloud Platform の最新導入事例。",
-    "url": "http://googleforwork-japan.blogspot.jp/2014/12/gcp-google-cloud-platform-rpg-gcp.html",
+    "url": "https://googleforwork-japan.blogspot.jp/2014/12/gcp-google-cloud-platform-rpg-gcp.html",
     "group": "",
     "keywords": [],
     "tags": [],
-    "image": "http://3.bp.blogspot.com/-xp7KoPkbne4/VI_PfoFil3I/AAAAAAAAA3U/-k1UZ0zjCBc/s1600/unison-league.jpeg",
+    "image": "https://3.bp.blogspot.com/-xp7KoPkbne4/VI_PfoFil3I/AAAAAAAAA3U/-k1UZ0zjCBc/s1600/unison-league.jpeg",
     "type": "distribute"
   },
   {
@@ -3143,7 +3647,7 @@
     "group": "",
     "keywords": [],
     "tags": [],
-    "image": "http://img.youtube.com/vi/7X9Ue0Nfdh4/hqdefault.jpg",
+    "image": "https://img.youtube.com/vi/7X9Ue0Nfdh4/hqdefault.jpg",
     "type": "youtube"
   },
   {
@@ -3155,7 +3659,7 @@
     "group": "",
     "keywords": [],
     "tags": [],
-    "image": "http://img.youtube.com/vi/83FpwuschCQ/hqdefault.jpg",
+    "image": "https://img.youtube.com/vi/83FpwuschCQ/hqdefault.jpg",
     "type": "youtube"
   },
   {
@@ -3163,7 +3667,7 @@
     "title": "안드로이드 5.0 롤리팝을 맞이하는 개발자를 위한 안내서",
     "titleFriendly": "",
     "summary": "",
-    "url": "http://googledevkr.blogspot.com/2014/11/android50guidefordevelopers.html",
+    "url": "https://googledevkr.blogspot.com/2014/11/android50guidefordevelopers.html",
     "group": "",
     "keywords": [],
     "tags": [],
@@ -3175,7 +3679,7 @@
     "title": "안드로이드 앱을 위한 머티리얼 디자인 체크 리스트",
     "titleFriendly": "",
     "summary": "",
-    "url": "http://googledevkr.blogspot.com/2014/10/material-design-on-android-checklist.html",
+    "url": "https://googledevkr.blogspot.com/2014/10/material-design-on-android-checklist.html",
     "group": "",
     "keywords": [],
     "tags": [],
@@ -3187,11 +3691,11 @@
     "title": "App Compat 라이브러리",
     "titleFriendly": "",
     "summary": "",
-    "url": "http://googledevkr.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html",
+    "url": "https://googledevkr.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html",
     "group": "",
     "keywords": [],
     "tags": [],
-    "image": "http://2.bp.blogspot.com/-7fF9ayZ6PgI/U9iFpk5FNEI/AAAAAAAAAs0/4P4SCvdB_4M/s640/image00.png",
+    "image": "https://2.bp.blogspot.com/-7fF9ayZ6PgI/U9iFpk5FNEI/AAAAAAAAAs0/4P4SCvdB_4M/s640/image00.png",
     "type": "blog"
   },
   {
@@ -3312,7 +3816,7 @@
   },
   {
     "url":"https://www.youtube.com/watch?v=wcjqBSei3a0&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
-    "image": "http://i1.ytimg.com/vi/wcjqBSei3a0/maxresdefault.jpg",
+    "image": "https://i1.ytimg.com/vi/wcjqBSei3a0/maxresdefault.jpg",
     "title": "Developers connecting the world through Google Play",
     "summary": "The mobile ecosystem is empowering developers to make good on the dream of connecting the world through technology to improve people's lives.",
     "tags":["io15","googleplay"],
@@ -3321,7 +3825,7 @@
   },
   {
     "url":"https://www.youtube.com/watch?v=B6ydLpkhq04&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
-    "image": "http://i1.ytimg.com/vi/B6ydLpkhq04/maxresdefault.jpg",
+    "image": "https://i1.ytimg.com/vi/B6ydLpkhq04/maxresdefault.jpg",
     "title": "Store Listing Experiments for Google Play",
     "summary": "Learn how to use Google Play’s new store listing optimization feature to get more installs of your app, and how to test different graphics and text to find out which options perform the best. ",
     "tags":["io15","googleplay","store listing"],
@@ -3330,16 +3834,37 @@
   },
   {
     "url":"https://www.youtube.com/watch?v=jyO3-rF4Mu0&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
-    "image": "http://i1.ytimg.com/vi/jyO3-rF4Mu0/maxresdefault.jpg",
+    "image": "https://i1.ytimg.com/vi/jyO3-rF4Mu0/maxresdefault.jpg",
     "title": "Growing games with Google",
     "summary": "The games industry has never been more promising and full of opportunities. This talk covers how Google is helping developers across a broad range of existing and emerging platforms.",
     "tags":["io15","android", "googleplay","games"],
     "keywords":["Google I/O","google play","games"],
     "type":"youtube"
-  }
+  },
+  {
+    "url":"https://www.youtube.com/watch?v=yJisuP94lHU",
+    "image": "images/distribute/hero-playtime-opener.jpg",
+    "title": "Playtime 2015: Innovation happens everywhere",
+    "type":"Video",
+    "tags":["googleplay"],
+    "summary": "Watch the opening video from Google Play's annual event series, Playtime, which celebrates inspirational developers who are changing the world around them.",
+  },
+{
+    "url":"https://www.youtube.com/watch?v=JrR6o5tYMWQ",
+    "image": "images/distribute/hero-acquisition-devbyte.jpg",
+    "title": "User acquisition and tracking on Google Play",
+    "type" : "Video",
+    "tags" : "users,googleplay,googleio",
+    "summary": "Learn how to get new users, using Universal app campaigns directly within the Google Play Developer Console to increase your installs from ads, and find out how your acquisition channels perform.",
+  },
 ]);
 
 var CAROUSEL_OVERRIDE = {
+  "distribute/googleplay/guide.html": {
+    "image": "images/distribute/hero-secrets-to-app-success.jpg",
+    "title": "The Secrets to App Success on Google Play",
+    "summary": "Get the updated guide full of useful features, tips, and best practices that will help you grow a successful app or game business on Google Play.",
+  },
   "about/versions/lollipop.html": {
     "image": "images/home/hero-lollipop_2x.png",
     "heroColor": "#263238",
@@ -3347,58 +3872,33 @@
     "title": "Android 5.0 Lollipop",
     "summary": "The Android 5.0 update adds a variety of new features for your apps, such as notifications on the lock screen, an all-new camera API, OpenGL ES 3.1, the new naterial design interface, and much more.",
   },
-  "http://www.youtube.com/watch?v=Pd49vTkvu0U": {
-    "url":"http://www.youtube.com/watch?v=Pd49vTkvu0U&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
-    "image": "images/distribute/hero-jelly-button.jpg",
-    "title": "How Jelly Button Games are growing globally through data",
-    "summary": "To really understand their users, Jelly Button Games analyzes over 3 billion events each month using Google Analytics and Google BigQuery.",
+  "http://www.youtube.com/watch?v=Pms0pcyPbAM": {
+    "url":"https://www.youtube.com/watch?v=Pms0pcyPbAM&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c]",
+    "image": "images/distribute/hero-carousel-giftedmom.jpg",
+    "title": "Gifted Mom reaches more mothers across Africa with Android",
+    "type":"youtube",
+    "summary": "Gifted Mom is an app developed in Cameroon which provides users with critical information about pregnancy, breastfeeding and child vaccinations. Hear the creators explain how they built their business on Google Play.",
   },
-  "http://www.youtube.com/watch?v=700gYRkhkLM": {
-    "url":"http://www.youtube.com/watch?v=700gYRkhkLM&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
-    "image": "images/distribute/hero-outfit7.jpg",
-    "title": "Outfit7 — Building an entertainment company with Google",
-    "summary": "Outfit7, creators of My Talking Tom and My Talking Angela, offer a complete entertainment experience to users spanning mobile apps, user generated and original YouTube content, and a range of toys, clothing, and accessories....",
+  "http://www.youtube.com/watch?v=9m6MoBM-sFI": {
+    "url":"https://www.youtube.com/watch?v=9m6MoBM-sFI&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c&index=3",
+    "image": "images/distribute/hero-carousel-sgn.jpg",
+    "title": "SGN increases installs with Store Listing Experiments",
+    "type" : "youtube",
+    "summary": "Watch mobile game developer SGN talk about how using Store Listing Experiments to test multiple variants across their portfolio of games helped improve their ROI, conversion rates and gamer retention.",
   },
-  "http://www.youtube.com/watch?v=MPnH7h12h0U": {
-    "url":"http://www.youtube.com/watch?v=MPnH7h12h0U&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
-    "image": "images/distribute/hero-haystack.jpg",
-    "summary": "Haystack TV built a scalable business with six employees and Android TV. Two weeks was all it took for them to bring their mobile app to the big screen.",
+  "http://www.youtube.com/watch?v=e7t3svG9PTk": {
+    "url":"https://www.youtube.com/watch?v=e7t3svG9PTk&index=2&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
+    "image": "images/distribute/hero-carousel-djit.jpg",
+    "title": "DJiT builds higher quality experiences on Android",
+    "type" : "youtube",
+    "summary": "Learn how Music app developer DJiT create higher quality apps with improved latency on Android Marshmallow, as well as other Android and Google Play features.",
   },
-  "http://www.youtube.com/watch?v=ekxABqJeRBc": {
-    "url":"http://www.youtube.com/watch?v=ekxABqJeRBc&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
-    "image": "images/distribute/hero-ginlemon.jpg",
-    "title": "How GinLemon is breaking through with Google Play",
-    "summary": "Meet Vincenzo Colucci, developer and founder of GinLemon, which started as a summer holiday joke and has now become a successful global app business on Google Play based in Manfredonia, southern Italy.",
-  },
-  "distribute/googleplay/guide.html": {
-    "heroColor": "#fcb94e",
-    "image": "images/distribute/hero-g-play-guidebooks_2x.png",
-    "title": "Finding success on Google Play",
-    "summary": "We’ve created a downloadable guide to help you find success with your app or game business on Google Play. In it, you’ll find features, tips, and best practices to help you build an effective strategy.",
-  },
-  "http://www.youtube.com/watch?v=0r36OJaeMo4": {
-    "url":"http://www.youtube.com/watch?v=0r36OJaeMo4&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
-    "image": "images/distribute/hero-shifty-jelly.jpg",
-    "title": "Shifty Jelly — building a number 1 podcast app",
-    "summary": "Shifty Jelly is an Adelaide based mobile development company that has seen great success building Pocket Casts, a premium podcast manager app.",
-  },
-  "http://www.youtube.com/watch?v=1Iw7Tg_afKk": {
-    "image": "images/distribute/hero-wooga.jpg",
-    "url":"http://www.youtube.com/watch?v=1Iw7Tg_afKk&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
-    "title": "Wooga’s fast iterations on Google Play",
-    "summary": "The speed at which Wooga is able to iterate its live and under development games with the Android and Google Play tools has been key to delivering hits such as Diamond Dash, Jelly Splash, and Agent Alice.",
-  },
-  "http://www.youtube.com/watch?v=TieksFvD-7o": {
-    "url":"http://www.youtube.com/watch?v=TieksFvD-7o&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
-    "image": "images/distribute/hero-trello.jpg",
-    "title": "Trello lifts engagement by double digits with material design",
-    "summary": "Trello recently redesigned their collaborative planning app using the material design guidelines, and their efforts paid off.",
-  },
-  "http://www.youtube.com/watch?v=MCoh4Pxs_ok": {
-    "url":"http://www.youtube.com/watch?v=MCoh4Pxs_ok&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
-    "image": "images/distribute/hero-the-hunt.jpg",
-    "title": "The Hunt — growing engagement with material design and Google Play",
-    "summary": "Material design has helped The Hunt to enhance engagement in their style advice and product discovery app. ",
+  "http://www.youtube.com/watch?v=J3IvOfvH1ys": {
+    "url":"https://www.youtube.com/watch?v=J3IvOfvH1ys&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c&index=1",
+    "image": "images/distribute/hero-carousel-wego.jpg",
+    "title": "Wego increases user retention with material design",
+    "type" : "youtube",
+    "summary": "Hear how online travel marketplace Wego, increased monthly user retention by 300% and reduced uninstall rates by up to 25% with material design.",
   },
   "https://www.youtube.com/watch?v=QDM52bblwlg": {
     "url":"distribute/googleplay/families/about.html",
@@ -3426,4 +3926,4 @@
     "tags":["io15"],
     "summary": "The games industry has never been more promising and full of opportunities. This talk from Google I/O 2015 covers how Google is helping developers across a broad range of existing and emerging platforms.",
   }
-};
\ No newline at end of file
+};
diff --git a/docs/html/jd_extras_en.js b/docs/html/jd_extras_en.js
new file mode 100644
index 0000000..54b77b0
--- /dev/null
+++ b/docs/html/jd_extras_en.js
@@ -0,0 +1,4763 @@
+/* Metadata represendations of resources that are outside of the autogenerated
+   local resource lists, or that override local resource representations.
+
+   Resources listed here are referenced from queries and collections,
+   matched by url string.
+
+   Currently, these articles can override only the generated resources
+   in DISTRIBUTE_RESOURCES. A representation defined here will not be applied
+   when a collection or section specifies a url that's not in DISTRIBUTE_RESOURCEs.
+   Also
+   So if a section url refers to a static doc that's
+   not in a distribute section, you need to create an item for
+   it in this file. Fix is to compare across
+   ALL_RESOURCES_BY_URL.  */
+
+METADATA['en'].extras = METADATA['en'].extras.concat([
+ /* TODO Remove standard resources from here, such as below
+ */
+  {
+    "title":"Measure your app’s user acquisition channels",
+    "category":"google",
+    "summary":"Get details on how to use the Developer Console User Acquisitions reports to discover where your users come from.",
+    "url":"https://support.google.com/googleplay/android-developer/answer/6263332",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/cards/google-play_2x.png",
+    "type":"distribute"
+  },
+  {
+    "title":"Set up native app install banners in Chrome",
+    "category":"google",
+    "summary":"Get the details you need to add your native app or game to your site’s web app manifest file.",
+    "url":"https://developers.google.com/web/updates/2015/03/increasing-engagement-with-app-install-banners-in-chrome-for-android#native",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/cards/google-play_2x.png",
+    "type":"distribute"
+  },
+  {
+    "title":"Optimize your store listing pages with experiments",
+    "category":"google",
+    "summary":"You can run experiments to find the most effective graphics and localized text for your app.",
+    "url":"https://support.google.com/googleplay/android-developer/answer/6227309",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/cards/google-play_2x.png",
+    "type":"distribute"
+  },
+  {
+    "title":"Content Experiments for Mobile Apps",
+    "category":"google",
+    "summary":"Google Analytics Content Experiments allows you to test multiple variations of a given web page.",
+    "url":"https://support.google.com/tagmanager/answer/6003007",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/cards/google-play_2x.png",
+    "type":"distribute"
+  },
+  {
+    "title":"Use alpha/beta testing & staged rollouts",
+    "category":"google play",
+    "summary":"Using the Google Play Developer Console, you can choose groups of users to test different versions of your app.",
+    "url":"https://support.google.com/googleplay/android-developer/answer/3131213",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/cards/google-play_2x.png",
+    "type":"distribute"
+  },
+  {
+    "title":"Quizlet Developer Story",
+    "category":"google play",
+    "summary":"Quizlet is an extremely popular online learning tool for students. See how they optimized for the classroom with Android and the power of Google Play for Education.",
+    "url":"https://www.youtube.com/watch?v=Idu7VcTTXfk",
+    "group":"",
+    "keywords": [],
+    "tags": [
+      "#gpfe",
+      "#googleplay"
+    ],
+    "image":"https://i1.ytimg.com/vi/Idu7VcTTXfk/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"What's New in GPFE",
+    "category":"google play",
+    "summary":"Learn about the vision and philosophy behind Google Play for Education",
+    "url":"https://www.youtube.com/watch?v=IKhU180eJMo",
+    "group":"",
+    "keywords": [],
+    "tags": [
+      "#gpfe",
+      "#googleplay"
+    ],
+    "image":"https://i1.ytimg.com/vi/IKhU180eJMo/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Get started with Google Cast",
+    "category":"google",
+    "summary":"Build multi-screen experiences, let the user send video and audio content to TVs and speakers.",
+    "url":"https://developers.google.com/cast/docs/ux_guidelines",
+    "group":"",
+    "keywords": ["cast", "chromecast", "video", "audio"],
+    "tags": [],
+    "image":"images/cards/card-cast_2x.jpg",
+    "type":"develop"
+  },
+  {
+    "title":"Android Sender Applications",
+    "category":"google",
+    "summary":"Get an overview of how your Android app can act as a Google Cast sender app.",
+    "url":"https://developers.google.com/cast/docs/android_sender",
+    "group":"",
+    "keywords": ["cast", "sender"],
+    "tags": [],
+    "image":"images/cards/card-cast_2x.jpg",
+    "type":"develop"
+  },
+  {
+    "title":"Cast sample apps",
+    "category":"google",
+    "summary":"Get example Google Cast applications for both senders and receivers.",
+    "url":"https://www.github.com/googlecast",
+    "group":"",
+    "keywords": ["cast", "samples"],
+    "tags": [],
+    "image":"images/cards/card-cast_2x.jpg",
+    "type":"Samples"
+  },
+  {
+    "title":"Get Cardboard",
+    "category":"Google",
+    "summary":"Get your own Cardboard, today. Buy one from a manufacturer or build your own, and start developing.",
+    "url":"https://www.google.com/get/cardboard/get-cardboard/",
+    "group":"",
+    "keywords": ["carboard","vr"],
+    "tags": [],
+    "image":"images/cards/card-cardboard_2x.png",
+    "type":"develop"
+  },
+    {
+    "title":"Download the Cardboard SDK",
+    "category":"google",
+    "summary":"Grab the Cardboard libraries from GitHub and start creating VR apps in your favorite development environment.",
+    "url":"https://developers.google.com/cardboard/android/download",
+    "group":"",
+    "keywords": ["carboard","vr"],
+    "tags": [],
+    "image":"images/cards/card-cardboard_2x.png",
+    "type":"develop"
+  },
+  {
+    "title":"Cardboard design guidelines",
+    "category":"design",
+    "summary":"Focus on overall usability and avoiding common VR pitfalls while creating an immersive experience of your own.",
+    "url":"https://www.google.com/design/spec-vr",
+    "group":"",
+    "keywords": ["carboard","vr"],
+    "tags": [],
+    "image":"images/cards/card-cardboard_2x.png",
+    "type":"Design"
+  },
+  {
+    "title":"Maps",
+    "category":"google",
+    "summary":"Give users the map that more than a billion people use every month.",
+    "url":"https://developers.google.com/maps/documentation/android/",
+    "group":"",
+    "keywords": ["maps"],
+    "tags": [],
+    "image":"images/google/gps-maps.png",
+    "type":"develop"
+  },
+    {
+    "title":"Places API",
+    "category":"google",
+    "summary":"give your users contextual information about where they are, when they’re there.",
+    "url":"https://developers.google.com/places/android/",
+    "group":"",
+    "keywords": ["places","location", "context"],
+    "tags": [],
+    "image":"images/cards/card-places_2x.png",
+    "type":"develop"
+  },
+  {
+    "title":"GCM Client for Android",
+    "category":"google",
+    "summary":"Send push notifications and pubsub from your server to Android devices around the world.",
+    "url":"https://developers.google.com/cloud-messaging/android/client",
+    "group":"",
+    "keywords": ["push","gcm"],
+    "tags": [],
+    "image":"images/cards/card-google-cloud-messaging_16-9_2x.png",
+    "type":"develop"
+  },
+  {
+    "title":"Google Cloud Messaging",
+    "category":"google",
+    "summary":"Learn about GCM and the kinds of services you can offer to users through push notifications",
+    "url":"https://developers.google.com/cloud-messaging/gcm",
+    "group":"",
+    "keywords": ["push","gcm"],
+    "tags": [],
+    "image":"images/cards/card-google-cloud-messaging_16-9_2x.png",
+    "type":"develop"
+  },
+  {
+    "title":"ClassDojo Developer Story",
+    "category":"developer story",
+    "summary":"ClassDojo is a classroom tool that helps teachers improve behavior in their classrooms quickly and easily. See how they optimized for the classroom with Android and the power of Google Play for Education.",
+    "url":"https://www.youtube.com/watch?v=iokH4SAIfRw",
+    "group":"",
+    "keywords": [],
+    "tags": [
+      "#gpfe",
+      "#googleplay"
+    ],
+    "image":"https://i1.ytimg.com/vi/iokH4SAIfRw/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Plan for Success",
+    "category":"google play",
+    "summary":"5 tips from developers on creating great EDU apps.",
+    "url":"https://www.youtube.com/watch?v=Eh2adsAyTKc",
+    "group":"",
+    "keywords": [],
+    "tags": [
+      "#gpfe",
+      "#googleplay"
+    ],
+    "image":"https://i1.ytimg.com/vi/Eh2adsAyTKc/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Optimizing Apps for Education",
+    "category":"google play",
+    "summary":"Learn how to optimize your app for teachers and students.",
+    "url":"https://www.youtube.com/watch?v=_AZ6UcPz-_g",
+    "group":"",
+    "keywords": [],
+    "tags": [
+      "#gpfe",
+      "#googleplay"
+    ],
+    "image":"https://i1.ytimg.com/vi/_AZ6UcPz-_g/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Ideas and Tools for Building Innovative Education Apps",
+    "category":"google play",
+    "summary":"Are you hungry to build an awesome app for education but don't quite know where to start? Come hear about apps that teachers want, and the APIs you're going to need to build them! In particular, we'll talk about app ideas that combine APIs for Google Drive, Google Login, Android Single Task Mode and more to build transformative Educational apps that will delight educators and kids in and out of the classroom.",
+    "url":"https://www.youtube.com/watch?v=iulXz8QTD1g",
+    "group":"",
+    "keywords": [],
+    "tags": [
+      "#gpfe",
+      "#googleplay"
+    ],
+    "image":"https://i1.ytimg.com/vi/iulXz8QTD1g/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"DesignBytes: Intro To Material Design",
+    "category":"material design",
+    "summary":"These days, UI designers need to be thinking about phones, tablets, laptops, TVs, smartwatches, and beyond. In this DesignByte we talk about how Google designers have been working on making cross-platform and multi-screen design easier. We wanted to build a design system that felt at home on every screen, from the smallest watch to the largest TV.",
+    "url":"https://www.youtube.com/watch?v=p4gmvHyuZzw",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/p4gmvHyuZzw/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"DesignBytes: Paper and Ink: The Materials that Matter",
+    "category":"material design",
+    "summary":"Join Rich Fulcher to learn about the materials of material design. See how virtual paper and ink form the foundation of your tactile user interface and master the rules that govern their behaviour.",
+    "url":"https://www.youtube.com/watch?v=YaG_ljfzeUw",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/YaG_ljfzeUw/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"DesignBytes: Material Design in the Google I/O App",
+    "category":"",
+    "summary":"Roman Nurik shares details on the design process for the Google I/O 2014 app. To check out the app's source code, visit github.com/google/iosched.",
+    "url":"https://www.youtube.com/watch?v=XOcCOBe8PTc",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/XOcCOBe8PTc/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Toolbars for a flexible Action Bar & more",
+    "category":"",
+    "summary":"Toolbars are a flexible View you can add to your Android app which provides many of the same APIs as the system provided Action Bar, but can also do so much more such as reacting to scrolling or being integrated directly into your layouts.",
+    "url":"https://www.youtube.com/watch?v=kmUGLURRPkI",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/kmUGLURRPkI/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Protecting Implicit Intents with Runtime Checks",
+    "category":"",
+    "summary":"Make sure you protect your implicit intents with a simple runtime check.",
+    "url":"https://www.youtube.com/watch?v=HGElAW224dE",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/HGElAW224dE/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Tabs and ViewPager",
+    "category":"",
+    "summary":"Showing multiple screens or pages of content is easy with the help of ViewPager and a PagerAdapter. Combining that with tabs make for an effective top level navigation strategy for your app or for moving between content at the same level of hierarchy within your app.",
+    "url":"https://www.youtube.com/watch?v=zQekzaAgIlQ",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/zQekzaAgIlQ/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Battery Drain and Networking",
+    "category":"",
+    "summary":"Let’s take a moment to make something insanely clear: As far as battery is concerned, NETWORKING is the biggest, baddest, dirtiest offender there is. And optimizing performance here isn’t easy. Since the chip isn’t always awake and draining power, means you can optimize how it wakes up, sends traffic, and saves battery.",
+    "url":"https://www.youtube.com/watch?v=fEEulSk1kNY",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/fEEulSk1kNY/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Batching Background Work Until Later",
+    "category":"",
+    "summary":"Yes, your app is special. But when it comes to battery use, sometimes it’s better to be part of the crowd. Why not spread the battery blame around a bit? Ian Ni-Lewis shows you how ridiculously easy it is to go from battery hog to team player in this video.",
+    "url":"https://www.youtube.com/watch?v=-3ry8PxcJJA",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/-3ry8PxcJJA/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"The Performance Lifecycle",
+    "category":"",
+    "summary":"Performance problems surface in your application at the least-wanted times (like right before you’re about to ship your first build). But don’t freak out: There’s a simple process that you can follow to help get your performance back under control.",
+    "url":"https://www.youtube.com/watch?v=_kKTGK-Cb_4",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/_kKTGK-Cb_4/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Introduction to Android Studio",
+    "category":"",
+    "summary":"Learn why you should migrate your projects to Android Studio now and how it can help you be more productive as a developer. Rich layout editor, handy suggestions and fixes, new Android project view - these are just some of the things you can expect from the IDE, which is built on the successful IntelliJ IDEA.",
+    "url":"https://www.youtube.com/watch?v=K2dodTXARqc&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
+    "group":"",
+    "keywords": ["studio", "tools"],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/K2dodTXARqc/maxresdefault.jpg",
+    "type":"video"
+  },
+
+  {
+    "title":"Google Play Services 7.5",
+    "category":"",
+    "summary":"This update brings App Invites, topics to GCM, GCMNetworkManager, Cast Remote Display API, Smart Lock for Passwords, Maps API for Android Wear, Google Fit extensions and more.",
+    "url":"https://www.youtube.com/watch?v=M3Udfu6qidk&list=PLWz5rJ2EKKc9Qk1_iCZNbBp6adYnJf9Vf",
+    "group":"",
+    "keywords": ["google play services"],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/M3Udfu6qidk/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Google Play Services 7.3",
+    "category":"",
+    "summary":"This update brings the ability to connect multiple wearables simultaneously to a single phone. There are also some great new updates to Google Fit, including nutrition types, and to Location.",
+    "url":"https://www.youtube.com/watch?v=FOn64iqlphk&list=PLWz5rJ2EKKc9Qk1_iCZNbBp6adYnJf9Vf",
+    "group":"",
+    "keywords": ["google play services"],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/FOn64iqlphk/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Google Play Services 6.5",
+    "category":"",
+    "summary":"Google Play services 6.5 includes new features in Google Maps, Google Drive and Google Wallet as well as the recently launched Google Fit API. ",
+    "url":"https://www.youtube.com/watch?v=fvtMtfCuEpw&list=PLWz5rJ2EKKc9Qk1_iCZNbBp6adYnJf9Vf",
+    "group":"",
+    "keywords": ["google play services"],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/fvtMtfCuEpw/maxresdefault.jpg",
+    "type":"video"
+  },
+    {
+    "title":"Google Play Services 7.0",
+    "category":"",
+    "summary":"Google Play services 7.0 is here! we've added the Places API, made enhancements to Location and Google Fit, and you can also remote control your Android TV through the new Nearby Connections API.",
+    "url":"https://www.youtube.com/watch?v=F0Kh_RnSM0w&list=PLWz5rJ2EKKc9Qk1_iCZNbBp6adYnJf9Vf",
+    "group":"",
+    "keywords": ["google play services"],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/F0Kh_RnSM0w/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Running a Successful Games Business with Google",
+    "category":"",
+    "summary":"Sure, we all want to make the next great gaming masterpiece. But we also want to feed our families and/or dogs. Join Bob Meese from the Google Play team as he gives you some key pointers on how to make sure you're best taking advantage of Google Play and running a successful games business.",
+    "url":"https://www.youtube.com/watch?v=tDmnGNkTtlE",
+    "group":"",
+    "keywords": [],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/tDmnGNkTtlE/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Introduction to Android TV",
+    "category":"",
+    "summary":"Android TV brings the Android platform to the living room with rich content and entertaining app experiences. In this video, Timothy introduces the design philosophy and developer components that make building TV experiences easier than ever before.",
+    "url":"https://www.youtube.com/watch?v=6K_jxccHv5M&index=1&list=PLOU2XLYxmsILFBfx66ens76VMLMEPJAB0",
+    "group":"",
+    "keywords": ["tv"],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/6K_jxccHv5M/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Introduction to Android Auto",
+    "category":"",
+    "summary":"Android Auto brings the Android platform to the car in a way that's optimized for the driving experience. It's the same platform you already use for phones, tablets, televisions, wearables, and more. ",
+    "url":"https://www.youtube.com/watch?v=ctiaVxgclsg&list=PLWz5rJ2EKKc9BdE_PSLNIGjXXr3h_orXM",
+    "group":"",
+    "keywords": ["auto"],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/ctiaVxgclsg/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Debugging and testing in Android Studio",
+    "titleFriendly":"",
+    "summary":"This video introduces the state of unit testing support in Studio and Google’s new Android Testing Support Library for functional UI testing and running instrumented tests on a device.",
+    "url":"https://www.youtube.com/watch?v=2I6fuD20qlY",
+    "group":"",
+    "keywords": ["testing"],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/2I6fuD20qlY/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"Android Testing (Android Dev Summit 2015)",
+    "titleFriendly":"",
+    "summary":"Overview of the testing tools and frameworks provided by Google and how they can help you to iterate more quickly and maintain a more healthy codebase.",
+    "url":"https://www.youtube.com/watch?v=vdasFFfXKOY",
+    "group":"",
+    "keywords": ["testing"],
+    "tags": [
+    ],
+    "image":"https://i1.ytimg.com/vi/vdasFFfXKOY/maxresdefault.jpg",
+    "type":"video"
+  },
+  {
+    "title":"dumpsys",
+    "titleFriendly":"",
+    "summary":"A tool that runs on the device and provides information about the status of system services.",
+    "url":"https://source.android.com/devices/tech/debug/dumpsys.html",
+    "group":"",
+    "keywords": ["testing"],
+    "tags": [
+    ],
+    "image":"",
+    "type":"google"
+  },
+  {
+    "title":"Android Testing Samples",
+    "titleFriendly":"",
+    "summary":"A collection of samples demonstrating different frameworks and techniques for automated testing.",
+    "url":"https://github.com/googlesamples/android-testing",
+    "group":"",
+    "keywords": ["testing"],
+    "tags": [
+    ],
+    "image":"images/testing/testing-icon.png",
+    "type":"Samples"
+  },
+  {
+    "title":"Android Testing Templates",
+    "titleFriendly":"",
+    "summary":"A collection of Google's Android testing tools and frameworks, all integrated in a single application project.",
+    "url":"https://github.com/googlesamples/android-testing-templates",
+    "group":"",
+    "keywords": ["testing"],
+    "tags": [
+    ],
+    "image":"images/testing/testing-icon.png",
+    "type":"Samples"
+  },
+   {
+    "title":"Android Testing Support Library (GitHub)",
+    "titleFriendly":"",
+    "summary":"A resource page on GitHub for the Android Testing Support Library.",
+    "url":"https://google.github.io/android-testing-support-library",
+    "group":"",
+    "keywords": ["testing"],
+    "tags": [
+    ],
+    "image":"images/testing/testing-icon.png",
+    "type":"Samples"
+  },
+  {
+    "title":"Android Testing Codelab",
+    "titleFriendly":"",
+    "summary":"This codelab shows how to build an Android app from the ground up in Android Studio, using a Model View Presenter architecture, Unit Tests and Instrumentation Tests.",
+    "url":"https://codelabs.developers.google.com/codelabs/android-testing/index.html",
+    "group":"",
+    "keywords": ["testing"],
+    "tags": [
+    ],
+    "image":"images/testing/testing-icon.png",
+    "type":"google"
+  },
+  {
+    "title":"Developer Registration",
+    "category":"google play",
+    "summary":"Additional information about the registration process.",
+    "url":"https://support.google.com/googleplay/android-developer/answer/113468",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/cards/google-play_2x.png",
+    "type":"distribute"
+  },
+  {
+    "title": "Google Play Distribution and Seller Countries",
+    "category":"google play",
+    "summary": "List of countries and territories where you can distribute your apps in Google Play.",
+    "url":"https://support.google.com/googleplay/android-developer/answer/138294",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/cards/google-play_2x.png",
+    "type":"distribute"
+  },
+  {
+    "title":"Google Play Content Policies",
+    "category":"google play",
+    "summary":"Details on policies relating to your developer account and app distribution is governed.",
+    "url":"https://support.google.com/googleplay/android-developer/topic/3453577",
+    "group":"",
+    "keywords": [],
+    "tags": ["#developersupport"],
+    "image":"images/cards/google-play_2x.png",
+    "type":"distribute"
+  },
+  {
+    "title":"Google Play Badge Generator",
+    "category":"google play",
+    "summary":"Build badges for your app in just a few clicks, or download hi-res badge assets localized for a variety of languages.",
+    "url":"https://play.google.com/intl/en_us/badges/",
+    "group":"",
+    "keywords": [],
+    "tags": ["#developersupport"],
+    "image":"images/gp-badges-set.png",
+    "type":"distribute"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": ["#developersupport #termsandpolicies"],
+    "url": "https://support.google.com/googleplay/android-developer/answer/4407611",
+    "timestamp": 1194884220000,
+    "image": 'images/play_dev.jpg',
+    "title": "Google Play Terms and Policies",
+    "summary": "Developer terms and policies that apply when you distribute apps in Google Play.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "title":"Google Play Policy Center",
+    "category":"google play",
+    "summary":"A central resource for you to learn about Google Play policies and guidelines.",
+    "url":"https://support.google.com/googleplay/android-developer/answer/4430948",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"https://storage.googleapis.com/support-kms-prod/SNP_712EA2784949DDF085C46E3BE7B1DC618A09_4389397_en_v0",
+    "type":"distribute"
+  },
+  {
+    "title":"Developer Help Center",
+    "category":"Support",
+    "summary":"Complete details on getting started, publishing, troubleshooting, and more.",
+    "url":"https://support.google.com/googleplay/android-developer",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/cards/google-play_2x.png",
+    "type":"distribute"
+  },
+  {
+    "title":"Google for Education",
+    "category":"google play",
+    "summary":"Find out more about how Google can support your work with apps and tablets.",
+    "url":"https://www.google.com/edu/tablets/",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"distribute/images/gp-edu-apps-image.jpg",
+    "type":"distribute"
+  },
+  {
+    "title":"Google Play Game Services",
+    "category":"google",
+    "summary":"Make your games social with Google Play game services. Add achievements, leaderboards, real-time multiplayer, and other popular features using the Google Play game services SDK.",
+    "url":"https://developers.google.com/games/services/",
+    "group":"",
+    "keywords": ["games","play games"],
+    "tags": [],
+    "image":"images/google/gps-play_games_logo.png",
+    "type":"distribute"
+  },
+  {
+    "title":"Get Started with Analytics",
+    "category":"google",
+    "summary":"Get advanced insight into how players discover and play your games.",
+    "url":"distribute/analyze/start.html",
+    "group":"",
+    "keywords": ["analytics"],
+    "tags": [],
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "type": "distribute"
+  },
+  {
+    "title":"Monetize your apps intelligently",
+    "category":"google",
+    "summary":"Generate revenue from your free games with ads tailored to match your game's look and feel.",
+    "url":"https://www.google.com/admob/",
+    "group":"",
+    "keywords": ["AdMob"],
+    "tags": [],
+    "image":"images/cards/admob-analytics_2x.png",
+    "type": "distribute"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [
+      "versions", "blog", "googleplay"
+    ],
+    "url": "https://android-developers.blogspot.com/",
+    "timestamp": 1004884220000,
+    "image": "images/blog.jpg",
+    "title": "Android Developers Blog",
+    "summary": "Follow the latest news on Android design, development, and distribution.",
+    "keywords": [],
+    "type": "blog",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Making Android Apps that Play Nice",
+    "summary": "Audio lifecycle and expected audio behaviors for Android apps.",
+    "keywords": [],
+    "type": "blog",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://android-developers.blogspot.com/2010/07/multithreading-for-performance.html",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Multithreading for Performance",
+    "summary": "Ways to improve performance through multi-threading.",
+    "keywords": [],
+    "type": "blog",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://play.google.com/about/developer-content-policy.html",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Developer Program Policies",
+    "summary": "Guidelines acceptable content in Google Play. Please read and understand the policies before publishing.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/188189",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Rating your application content for Google Play",
+    "summary": "How to choose the appropriate content ratings level for your apps.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "Support"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": ["devices", "nexus", "testing"],
+    "url": "https://developers.google.com/android/nexus/images",
+    "timestamp": 1194884220000,
+    "image": "images/cards/card-download_16-9_2x.png",
+    "title": "Factory Images for Nexus Devices",
+    "summary": "System image files for Android 6.0 and other Android releases.",
+    "keywords": ["nexus, downloads"],
+    "type": "develop",
+    "category": "Tools"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://android-developers.blogspot.com/2011/10/android-market-featured-image.html",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Google Play Featured Image Guidelines",
+    "summary": "How to create attractive, effective Featured Images for your apps.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+{
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/113477",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Supporting your users",
+    "summary": "Options for supporting users.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "Support"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "guide/practices/screens_support.html#ConfigurationExamples",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Configuration examples",
+    "summary": "How to declare layouts and other resources for specific screen sizes.",
+    "keywords": [],
+    "type": "develop",
+    "category": "guide"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "training/design-navigation/multiple-sizes.html",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Planning for Multiple Touchscreen Sizes",
+    "summary": "",
+    "keywords": [],
+    "type": "develop",
+    "category": "guide"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "training/multiscreen/index.html",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Designing for Multiple Screens",
+    "summary": "Designing an intuitive, effective navigation for tablets and other devices.",
+    "keywords": [],
+    "type": "develop",
+    "category": "guide"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "guide/topics/resources/providing-resources.html",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Providing Resources",
+    "summary": "Layouts and drawable resources for specific ranges of device screens.",
+    "keywords": [],
+    "type": "develop",
+    "category": "guide"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "training/basics/supporting-devices/screens.html",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Supporting Different Screens",
+    "summary": "Optimizing the user experience for different screen sizes and densities.",
+    "keywords": [],
+    "type": "develop",
+    "category": "guide"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "guide/topics/appwidgets/index.html#MetaData",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Adding the AppWidgetProviderInfo Metadata",
+    "summary": "How to set the height and width dimensions of a widget.",
+    "keywords": [],
+    "type": "develop",
+    "category": "guide"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "guide/topics/manifest/uses-sdk-element.html#ApiLevels",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Android API Levels",
+    "summary": "Introduction to API levels and how they relate to compatibility.",
+    "keywords": [],
+    "type": "develop",
+    "category": "compatibility"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "guide/practices/screens_support.html#DeclaringScreenSizeSupport",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Declaring screen size support",
+    "summary": "How to declare support for screen sizes in your app\'s manifest.",
+    "keywords": [],
+    "type": "develop",
+    "category": "compatibility"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "guide/topics/manifest/uses-feature-element.html#testing",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Checking for hardware feature requirements",
+    "summary": "Determining an app’s hardware and software requirements.",
+    "keywords": [],
+    "type": "develop",
+    "category": "compatibility"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://play.google.com/apps/publish/",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Google Play Developer Console",
+    "summary": "The tools console for publishing your app.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "Google Play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://youtu.be/SkHHPf3EdzE",
+    "timestamp": 1194884220000,
+    "image": "https://i1.ytimg.com/vi/SkHHPf3EdzE/maxresdefault.jpg",
+    "title": "Level Up Your Android Game",
+    "summary": "Learn how to take your game to the next level on Google Play.",
+    "keywords": [],
+    "type": "video",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/+/mobile/android/share/interactive-post",
+    "timestamp": 1194884220000,
+    "image": 'images/google/gps-googleplus.png',
+    "title": "Sharing interactive posts to Google+ from your Android app",
+    "summary": "Interactive posts provide an easy and prominent way to allow users to share your site or app with their friends and invite them to take a specific action.",
+    "keywords": ["Interactive", "Google+"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://play.google.com/about/developer-distribution-agreement.html",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Developer Distribution Agreement",
+    "summary": "Terms for distributing and selling apps and in-app products in Google Play.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/113417",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Inappropriate content in comments and applications",
+    "summary": "More details on what content is appropriate.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/legal/troubleshooter/1114905",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Removing content from Google",
+    "summary": "Find how how to request the removal of content that infringes on your trademark.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://play.google.com/about/developer-distribution-agreement-addendum.html",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Google Play for Education Addendum",
+    "summary": "Review the education-specific requirements.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://android-developers.blogspot.com/2013/03/native-rtl-support-in-android-42.html",
+    "timestamp": null,
+    "image": null,
+    "title": "Native RTL Support in Android 4.2",
+    "summary": "Blog post that explains how to support RTL in your UI.",
+    "keywords": [],
+    "type": "blog",
+    "category": "Localization"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "guide/topics/resources/string-resource.html#Plurals",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Quantity Strings (Plurals)",
+    "summary": "How to work with string plurals according to rules of grammar in a given locale.",
+    "keywords": [],
+    "type": "develop",
+    "category": "Localization"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "reference/java/util/Locale.html",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Locale",
+    "summary": "Determine what CLDR data or version of the Unicode spec a particular Android platform version uses.",
+    "keywords": [],
+    "type": "develop",
+    "category": "Localization"
+  },
+    {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "guide/topics/resources/string-resource.html",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "String Resources",
+    "summary": "Explains how to use string resources in your UI.",
+    "keywords": ["localization"],
+    "type": "develop",
+    "category": "guide"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "distribute/tools/localization-checklist.html#strings",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Manage strings for localization",
+    "summary": "Guidance on having your strings translation ready.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "localization"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "distribute/googleplay/policies/index.html",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Google Play Policies and Guidelines",
+    "summary": "An overview of Google Play policies for spam, intellectual property, and ads, with examples of common problems.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play "
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/topic/2364761",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Policy and Best Practices",
+    "summary": "Help Center document describing various content policies and processes.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/wallet/instant-buy/",
+    "timestamp": 1194884220000,
+    "image": "",
+    "title": "Android Pay APIs",
+    "summary": "Developer documentation describing Instant Buy and how to support it in your apps.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/1169947",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Selling Apps in Multiple Currencies",
+    "summary": "Help Center document describing how pricing works in Google Play.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/138412",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Prices and supported currencies",
+    "summary": "Help Center document listing supported currencies for pricing your apps.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/112622",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Transaction Fees",
+    "summary": "Help Center document describing transaction fees for priced apps and in-app products.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/138000",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Specifying tax rates",
+    "summary": "Help Center document describing how to set tax rates for different countries.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "guide/topics/resources/localization.html",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Localizing with Resources",
+    "summary": "Developer guide to localizing resources in your app.",
+    "keywords": [],
+    "type": "develop",
+    "category": "localization"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/113475",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Category types",
+    "summary": "Help Center document listing available categories for apps.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/113476",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Updates",
+    "summary": "Requirements for app updates in Google Play.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/1153479",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "In-app Billing",
+    "summary": "Help Center document describing how to correctly set up In-app Billing.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [
+      "#gpfe",
+      "#googleplay"
+    ],
+    "url": "https://youtu.be/vzvpcEffvaE",
+    "timestamp": 1383243492000,
+    "image": "https://i1.ytimg.com/vi/vzvpcEffvaE/maxresdefault.jpg",
+    "title": "Introducing Tablets with Google Play for Education",
+    "summary": "Schools in Hillsborough, New Jersey were among the first to try out Nexus 7 tablets with Google Play for Education. See the difference it made for students, teachers, and administrators.",
+    "keywords": [],
+    "type": "video",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [
+      "#engagement",
+    ],
+    "url": "https://www.youtube.com/yt/dev/",
+    "timestamp": 1383243492000,
+    "image": "https://www.youtube.com/yt/dev/media/images/yt-dev-home-hero.jpg",
+    "title": "YouTube for Developers",
+    "summary": "The YouTube APIs and Tools enable you to integrate YouTube's video content and functionality into your website, app, or device.",
+    "keywords": [],
+    "type": "video",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [
+      "#engagement",
+    ],
+    "url": "https://www.google.com/analytics/mobile/",
+    "timestamp": 1383243492000,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Mobile App Analytics",
+    "summary": "Mobile App Analytics measures what matters most at all key stages: from first discovery and download to in-app purchases. ",
+    "keywords": ["analytics,user behavior"],
+    "type": "distribute",
+    "category": "google"
+  },
+
+
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [
+      "#gcm",
+    ],
+    "url": "https://www.youtube.com/watch?v=y76rjidm8cU",
+    "timestamp": 1383243492000,
+    "image": "https://1.bp.blogspot.com/-IF-1-1kA0sg/UYwTidxdi3I/AAAAAAAAAEU/ellLeQ-E1vs/s800/google-io-lockup-2.png",
+    "title": "Google Cloud Messaging at I/O 2013",
+    "summary": "Google Cloud Messaging allows your services to efficiently send data to applications on Android devices. See what's new, and learn how to use GCM to make your apps more efficient.",
+    "keywords": ["gcm"],
+    "type": "youtube",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [
+      "#gcm",
+    ],
+    "url": "https://developer.chrome.com/apps/cloudMessagingV2",
+    "timestamp": 1383243492000,
+    "image": "images/kk-chromium-icon.png",
+    "title": "Google Cloud Messaging for Chrome",
+    "summary": "Google Cloud Messaging for Chrome (GCM) is a service for signed-in Chrome users that helps developers send message data from servers to their Chrome apps and extensions.",
+    "keywords": ["gcm"],
+    "type": "distribute",
+    "category": "google"
+  },
+
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [
+      "#sdkupdates"
+    ],
+    "url": "https://android-developers.blogspot.com/2013/07/making-beautiful-android-app-icons.html",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Make Beautiful Android App Icons",
+    "summary": "Follow these in-depth launcher icon tips on the Android Developers blog.",
+    "keywords": [],
+    "type": "blog",
+    "category": ""
+  },
+     {
+    "lang": "en",
+    "group": "",
+    "tags": [
+      "#sdkupdates"
+    ],
+    "url": "https://android-developers.blogspot.com/2012/12/localize-your-promotional-graphics-on.html",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Localize Your Promotional Graphics",
+    "summary": "Learn how to capitalise on international audiences.",
+    "keywords": [],
+    "type": "blog",
+    "category": ""
+  },
+   {
+    "lang": "en",
+    "group": "",
+    "tags": [
+      "#sdkupdates"
+    ],
+    "url": "https://android-developers.blogspot.com/2013/10/making-your-app-content-more-accessible.html",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Make your App Content more Accessible with App Linking",
+    "summary": "About using search and deep linking to get more users.",
+    "keywords": [],
+    "type": "blog",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/+/mobile/android/share/interactive-post",
+    "timestamp": 1194884220000,
+    "image": 'images/google/gps-googleplus.png',
+    "title": "Sharing interactive posts to Google+ from your Android app",
+    "summary": "Interactive posts provide an easy and prominent way to allow users to share your site or app with their friends and invite them to take a specific action.",
+    "keywords": ["Interactive", "Google+"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/+/mobile/android/",
+    "timestamp": 1194884220000,
+    "image": 'images/google/gps-googleplus.png',
+    "title": "Google+ Platform",
+    "summary": "Find out about features such as interactive posts, Hangouts, accessing basic user details and their social graphs to make your app more personal.",
+    "keywords": ["Google+"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/2528691",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "How to add multiple user accounts to your Developer Console for testing and more.",
+    "summary": "",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "google/play/licensing/index.html",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Application Licensing",
+    "summary": "Information on the features of Google Play to protect your apps’ licences.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "design/style/writing.html",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Writing Style",
+    "summary": "Design guidelines for voice and style in your UI.",
+    "keywords": [],
+    "type": "design",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://en.wikipedia.org/wiki/XLIFF",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "XML Localisation Interchange File Format (XLIFF)",
+    "summary": "Background information on XLIFF.",
+    "keywords": [],
+    "type": "develop",
+    "category": "localization"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/1078870",
+    "timestamp": 1194884220000,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Graphic Assets for your Application",
+    "summary": "Details about the graphics you can add to your product listing.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/payments/answer/2741495",
+    "timestamp": null,
+    "image": null,
+    "title": "Issuing Refunds",
+    "summary": "Help Center document describing how to issue refunds.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://android-developers.blogspot.com/2013/11/bring-your-apps-into-classroom-with.html",
+    "timestamp": null,
+    "image": "distribute/images/gp-edu-apps-image.jpg",
+    "title": "Google play for education",
+    "summary": " ",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": ["localization", "pricing", "developer support"],
+    "url": "https://support.google.com/googleplay/android-developer/table/3541286",
+    "timestamp": null,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Supported locations for distributing your apps in Google Play",
+    "summary": "Countries and regions where you can distribute your app in Google Play.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": ["games", "localization", "quality"],
+    "url": "https://www.youtube.com/watch?v=SkHHPf3EdzE",
+    "timestamp": null,
+    "image": "https://developers.google.com/apps/images/io_2013/google-io-logo.png",
+    "title": "Level Up Your Android Game",
+    "summary": "Learn how to take your game to the next level in this Google I/O session.",
+    "keywords": [],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": ["support"],
+    "url": "https://support.google.com/plus/topic/2888488",
+    "timestamp": null,
+    "image": null,
+    "title": "Google+ Communities",
+    "summary": "Host a Google+ community for testers or users.",
+    "keywords": [],
+    "type": "distribute",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": ["monetize", "ads"],
+    "url": "https://www.google.com/doubleclick/publishers/small-business/index.html",
+    "timestamp": null,
+    "image": "https://www.google.com/doubleclick/publishers/small-business/images/define_ad.png",
+    "title": "DoubleClick for Publishers",
+    "summary": "A free ad management solution that helps growing publishers sell, schedule, deliver, and measure all of their digital ad inventory.",
+    "keywords": ["ads"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": ["monetize", "ads"],
+    "url": "https://support.google.com/googleplay/android-developer/topic/2985714",
+    "timestamp": null,
+    "image":"images/cards/google-play_2x.png",
+    "title": "Policy Center: Ads",
+    "summary": "Introduction to ads and system interference policies in Google Play.",
+    "keywords": ["ads"],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/analytics/answer/2611404",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Create Audience lists in Google Analytics",
+    "summary": "Find out how to use your analytics data to discover high value users and create remarketing audiences to use in AdMob.",
+    "keywords": ["ads, analytics, monetize"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://admob.blogspot.com/",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Inside Admob",
+    "summary": "Google’s official blog for news, tips, and information on the AdMob developer platform.",
+    "keywords": ["ads, analytics, monetize"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/admob/answer/3111064",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "AdMob in-app conversion tracking",
+    "summary": "Use in-app conversion tracking to attribute revenue back to your IAP promotion campaigns and determine which ones earn you the most.",
+    "keywords": ["ads, analytics, conversions"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": ["monetize", "giftcards"],
+    "url": "https://play.google.com/about/giftcards/",
+    "timestamp": null,
+    "image": "images/gp-balance.png",
+    "title": "Google Play Gift Cards",
+    "summary": "Buy Google Play gift cards online or at a variety of retail stores.",
+    "keywords": ["gift card"],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": ["monetize", "paymentmethods"],
+    "url": "https://support.google.com/googleplay/answer/2651410",
+    "timestamp": null,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Google Play Accepted Payment Methods",
+    "summary": "Support details on the payment methods supported in Google Play.",
+    "keywords": ["gift card"],
+    "type": "distribute",
+    "category": "google play"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": ["plus", "social"],
+    "url": "https://plus.google.com/+AndroidDevelopers/",
+    "timestamp": null,
+    "image": "images/plus.jpg",
+    "title": "+Android Developers",
+    "summary": "Sharing news, ideas, and techniques for success.",
+    "keywords": ["+AndroidDevelopers"],
+    "type": "develop",
+    "category": "Social"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": ["plus", "social"],
+    "url": "https://plus.google.com/+GooglePlay",
+    "timestamp": null,
+    "image": "images/cards/google-play_2x.png",
+    "title": "+Google Play",
+    "summary": "News and discussion about Google Play, apps, and other content in Google+.",
+    "keywords": ["+GooglePlay"],
+    "type": "distribute",
+    "category": "Social"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/analytics/devguides/collection/android/",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Mobile App Analytics SDK",
+    "summary": "Measure everything about your app. Get started with the Google Analytics SDK for Android.",
+    "keywords": ["analytics, user behavior"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/edu/guidelines",
+    "timestamp": null,
+    "image": "https://developer.android.com/distribute/images/edu-guidelines.jpg",
+    "title": "Education Guidelines",
+    "summary": "These guidelines and requirements help you develop great apps for students, which offer compelling content and an intuitive user experience on Android tablets.",
+    "keywords": [],
+    "type": "",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/edu/faq",
+    "timestamp": null,
+    "image": "https://developer.android.com/distribute/images/gpfe-faq.jpg",
+    "title": "Education FAQ",
+    "summary": "Answers to common questions you might have about Google Play for Education.",
+    "keywords": [],
+    "type": "",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/edu/",
+    "timestamp": null,
+    "image": "https://developers.google.com/edu/images/home-android.png",
+    "title": "Chrome Apps in Google Play for Education",
+    "summary": "Find out more about Chrome apps in Google Play for Education.",
+    "keywords": [],
+    "type": "",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/edu/tablets/#tablets-family",
+    "timestamp": null,
+    "image": "https://www.google.com/edu/images/tablets/big-tablet.png",
+    "title": "Google Play for Education Tablets",
+    "summary": "Google Play for Education leverages a diverse set up tablets approved for the classroom which may help inform you how to build educational apps.",
+    "keywords": [],
+    "type": "",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_Deerhunter2014_gpgs.pdf",
+    "timestamp": null,
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_Deerhunter2014_gpgs.png",
+    "title": "Deer Hunter 2014 by Glu &mdash; Sign-in",
+    "summary": "Glu finds that Google Play Game Services helps improve the user experience which leads to increased player happiness. They also find that Play Games Services signed in users tend to play longer and have a higher lifetime value.",
+    "keywords": ["stories"],
+    "type": "Case Study Deck",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/ConcreteSoftware_PBABowling_gpgs.pdf",
+    "timestamp": null,
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/ConcreteSoftware_PBABowling_gpgs.png",
+    "title": "PBA® Bowling Challenge by Concrete Software &mdash; Quests",
+    "summary": "Concrete Software finds that Google Play Game Services' quests are a great way to create new content for users that leads to higher engagement.",
+    "keywords": ["stories"],
+    "type": "Case Study Deck",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Dragonplay_DragonplaySlots_gpgs.pdf",
+    "timestamp": null,
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Dragonplay_DragonplaySlots_gpgs.png",
+    "title": "Dragonplay Slots by Dragonplay &mdash; Sign-in",
+    "summary": "Dragonplay finds that players who sign in with Google Play Games services tend to be high quality users who were highly engaged. They also tend to be easier to convert to paying users.",
+    "keywords": ["stories"],
+    "type": "Case Study Deck",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Gameloft_Asphalt8_gpgs.pdf",
+    "timestamp": null,
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Gameloft_Asphalt8_gpgs.png",
+    "title": "Asphalt 8 by Gameloft &mdash; Friends invitations",
+    "summary": "Gameloft finds that Google Play Game Services users are more engaged than the average Android user and more likely to convert to paying players.",
+    "keywords": ["stories"],
+    "type": "Case Study Deck",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_EternityWarriors3_gpgs.pdf",
+    "timestamp": null,
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_EternityWarriors3_gpgs.png",
+    "title": "Eternity Warriors 3 by Glu &mdash; Gifting",
+    "summary": "Glu finds that Google Play Game Services gifting outperforms other implementations (including those with incentives) because of its seamless flow and consistent performance.",
+    "keywords": ["stories"],
+    "type": "Case Study Deck",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/HotheadGames_RivalsatWar_gpgs.pdf",
+    "timestamp": null,
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/HotheadGames_RivalsatWar_gpgs.jpg",
+    "title": "Rivals at War: Firefight by Hothead Games &mdash; Leaderboards",
+    "summary": "Hothead Games is planning to include Google Play Game Services features in all their games going forwards after seeing that players that signed in with Play Games Services tend to show higher retention and a higher average revenue.",
+    "keywords": ["stories"],
+    "type": "Case Study Deck",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/TMSOFT_Compulsive_gpgs.pdf",
+    "timestamp": null,
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/TMSOFT_Compulsive_gpgs.png",
+    "title": "Compulsive by TMSOFT &mdash; Cross-platform",
+    "summary": "TMSOFT finds that users who authenticate with Play Games Services on Android and iOS play Compulsive twice as much and purchase in-app products over four times as much.",
+    "keywords": ["stories"],
+    "type": "Case Study Deck",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Noodlecake_SuperStickmanGolf2_gpgs.pdf",
+    "timestamp": null,
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Noodlecake_SuperStickmanGolf2_gpgs.png",
+    "title": "Super Stickman Golf 2 by Noodlecake Studios &mdash; Multiplayer",
+    "summary": "Noodlecake Studios finds that Google Play Game Services’ multiplayer feature helps reduce attrition.",
+    "keywords": ["stories"],
+    "type": "Case Study Deck",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/TinyRebel_DoctorWhoLegacy_gpgs.pdf",
+    "timestamp": null,
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/TinyRebelGames_DrWhoLegacy_pgps.png",
+    "title": "Dr. Doctor Who: Legacy by Tiny Rebel Games &mdash; Achievements",
+    "summary": "After integrating achievements and cloud services from Google Play Game Services, Tiny Rebel Games saw a dramatic increase in daily revenues as a result of an increase in daily installs and an increase in the average revenue per install.",
+    "keywords": ["stories"],
+    "type": "Case Study Deck",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Senri_LeosFortune_gpgs.pdf",
+    "timestamp": null,
+    "image": "https://storage.googleapis.com/androiddevelopers/shareables/stories/Senri_LeosFortune_gpgs.png",
+    "title": "Leo’s Fortune by 1337 &amp; Senri &mdash; Saved games",
+    "summary": "1337 + Senri finds that Google Play Game Services is easy to integrate and provides essential game functions like cloud saved games, achievements and leaderboards which have a very large adoption rate amongst players.",
+    "keywords": ["stories"],
+    "type": "Case Study Deck",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "shareables/auto/AndroidAuto-audio-apps.pdf",
+    "timestamp": null,
+    "image": "auto/images/assets/icons/media_app_playback.png",
+    "title": "Android Auto Audio Apps UI Guidelines",
+    "summary": "Guidelines for designing audio apps that work with Auto. ",
+    "keywords": ["design", "Auto", "Automotive"],
+    "type": "Design",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "shareables/auto/AndroidAuto-messaging-apps.pdf",
+    "timestamp": null,
+    "image": "auto/images/assets/icons/messaging_app_notifications.png",
+    "title": "Android Auto Messaging Apps UI Guidelines",
+    "summary": "Guidelines for designing messaging apps that work with Auto. ",
+    "keywords": ["design", "Auto", "Automotive"],
+    "type": "Design",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "shareables/auto/AndroidAuto-custom-colors.pdf",
+    "timestamp": null,
+    "image": "auto/images/ui/gearhead_generic_UI.png",
+    "title": "Android Auto Color Customization UI Guidelines",
+    "summary": "Guidelines for color-customizing apps that work with Auto. ",
+    "keywords": ["design", "Auto", "Automotive"],
+    "type": "Design",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/analytics/solutions/mobile-implementation-guide",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Mobile Analytics Implementation Guide",
+    "summary": "Learn how you can implement additional Google Analytics features to better understand your users and their behavior.",
+    "keywords": ["analytics", "Play", "users"],
+    "type": "distribute",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/tagmanager/",
+    "timestamp": null,
+    "image": "https://www.google.com/tagmanager/images/gtm-hero-illustration-small.png",
+    "title": "Google Tag Manager",
+    "summary": "Google Tag Manager enables you to change configuration values in your mobile apps using the Google Tag Manager interface, without having to rebuild and resubmit application binaries to app marketplaces.",
+    "keywords": ["analytics", "tagmanager"],
+    "type": "distribute",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://analyticsacademy.withgoogle.com/course04",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Mobile App Analytics Fundamentals",
+    "summary": "This self-paced online course on mobile app measurement shows you how Google Analytics data can help you make your app more discoverable and profitable.",
+    "keywords": ["analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://github.com/googleanalytics/google-analytics-plugin-for-unity",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Analytics Plugin for Unity",
+    "summary": "If you're building games with Unity, you can now implement Analytics once and ship it on multiple platforms automatically.",
+    "keywords": ["analytics", "unity"],
+    "type": "Open Source Project",
+    "category": ""
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/analytics/devguides/collection/android/v4/enhanced-ecommerce",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "In-App Purchases & Ecommerce",
+    "summary": "If your app sells virtual or real goods, ecommerce tracking can help you understand what behaviors lead to purchases.",
+    "keywords": ["analytics, ecommerce"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/analytics/answer/1032415",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Goals",
+    "summary": "Track important actions in your app as goals and measure performance against your objectives.",
+    "keywords": ["analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/analytics/answer/2568874?ref_topic=6012392",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Active Users",
+    "summary": "The active user report displays your 1-day, 7-day, 14-day and 30-day trailing active users next to each other, to help you analyze performance over time.",
+    "keywords": ["analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/analytics/devguides/collection/android/v4/events",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Events",
+    "summary": "Events let you measure granular in-app activities and understand user journeys.",
+    "keywords": ["analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/analytics/devguides/collection/android/v4/customdimsmets",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Custom Dimensions",
+    "summary": "Custom dimensions enable the association of metadata with hits, users, and sessions in Google Analytics.",
+    "keywords": ["analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/analytics/devguides/collection/android/v4/user-id",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "User ID",
+    "summary": "The User ID feature enables Google Analytics to measure user activities that span across devices.",
+    "keywords": ["analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/analytics/devguides/collection/android/v4/display-features",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Demographic Reporting",
+    "summary": "By enabling display features, you can see just how different user segments engage and monetize.",
+    "keywords": ["analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/analytics/answer/3123906",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "User Segmentation",
+    "summary": "Segments let you compare metrics for different subsets of users to identify trends and opportunities for your apps.",
+    "keywords": ["analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/analytics/devguides/collection/android/v4/campaigns",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Campaign Tracking",
+    "summary": "Measuring campaigns in Google Analytics enables the attribution of campaigns and traffic sources to user activity within your app.",
+    "keywords": ["analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/analytics/answer/2956981",
+    "timestamp": null,
+    "image": "images/cards/google-play_2x.png",
+    "title": "Google Play Integration",
+    "summary": "By linking Analytics and the Play Developer Console, you can gain additional insights into the acquisition flow.",
+    "keywords": ["play, analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/analytics/answer/1033961",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "AdWords Integration",
+    "summary": "Link Analytics and AdWords to see the entire picture of customer behavior, from ad click or impression through your site to conversion. ",
+    "keywords": ["adwords, analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#google-play-url-builder",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Campaign URL builder for Google Play",
+    "summary": "Easily create your URLs to track install campaigns.",
+    "keywords": ["play, analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/tagmanager/answer/6003007",
+    "timestamp": null,
+    "image": "https://www.google.com/tagmanager/images/gtm-hero-illustration-small.png",
+    "title": "In-App A/B Testing",
+    "summary": "With content experiments in Google Tag Manager you can test multiple variations of your app to find which works best.",
+    "keywords": ["tagmanager"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/analytics/answer/2785577",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Behavior Flow",
+    "summary": "The Behavior Flow report visualizes the path users traveled from one Screen or Event to the next. This report can help you discover what content keeps users engaged with your app.",
+    "keywords": ["analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/analytics/answer/1151300",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Custom Reports",
+    "summary": "Custom Reports let you create your own reports in your Google Analytics account.",
+    "keywords": ["analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/analytics/answer/2611268",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Audience Lists &amp; Remarketing",
+    "summary": "Remarketing with Google Analytics lets you deliver targeted ads to users who've already been to your site or app. You can even base those ads on the behavior those users displayed during their sessions.",
+    "keywords": ["analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/admob/answer/3508177",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "AdMob Integration",
+    "summary": "With Google Analytics in AdMob, you can view Google Analytics data for your linked apps from within your AdMob account.",
+    "keywords": ["analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/analytics/solutions/mobile-campaign-deep-link",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Deep-Linking",
+    "summary": "Google Analytics gives you a full view of how returning users are interacting with your app, for a holistic view beyond the install.",
+    "keywords": ["analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/admob/answer/3508177",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "AdMob Integration",
+    "summary": "With Google Analytics in AdMob, you can view Google Analytics data for your linked apps from within your AdMob account.",
+    "keywords": ["analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/analytics/answer/2568874",
+    "timestamp": null,
+    "image": "images/cards/analytics-mobile_2x.jpg",
+    "title": "Active User Report",
+    "summary": "Active user report displays your 1-day, 7-day, 14-day and 30-day trailing active users next to each other, to help you run benchmark analyses of their performance over time.",
+    "keywords": ["analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/animation/",
+    "timestamp": null,
+    "image": "images/cards/material-animation_2x.png",
+    "title": "Animation",
+    "summary": "",
+    "keywords": [],
+    "type": "design",
+    "category": "material design"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/style/",
+    "timestamp": null,
+    "image": "images/cards/material-style_2x.jpg",
+    "title": "Style",
+    "summary": "",
+    "keywords": [],
+    "type": "design",
+    "category": "material design"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/layout/",
+    "timestamp": null,
+    "image": "images/cards/material-layout_2x.png",
+    "title": "Layout",
+    "summary": "",
+    "keywords": [],
+    "type": "design",
+    "category": "material design"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/components/",
+    "timestamp": null,
+    "image": "images/cards/material-components_2x.jpg",
+    "title": "Components",
+    "summary": "",
+    "keywords": [],
+    "type": "design",
+    "category": "material design"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/patterns/",
+    "timestamp": null,
+    "image": "images/cards/material-patterns_2x.png",
+    "title": "Patterns",
+    "summary": "",
+    "keywords": [],
+    "type": "design",
+    "category": "material design"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/usability/",
+    "timestamp": null,
+    "image": "images/cards/material-usability_2x.png",
+    "title": "Usability",
+    "summary": "",
+    "keywords": [],
+    "type": "design",
+    "category": "material design"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/resources/color-palettes.html",
+    "timestamp": null,
+    "image": "images/cards/material-color-palette_2x.jpg",
+    "title": "Color Palettes",
+    "summary": "",
+    "keywords": [],
+    "type": "design",
+    "category": "material design"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/resources/layout-templates.html",
+    "timestamp": null,
+    "image": "images/cards/material-layout-template_2x.jpg",
+    "title": "Layout Templates",
+    "summary": "",
+    "keywords": [],
+    "type": "design",
+    "category": "material design"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/resources/sticker-sheets-icons.html",
+    "timestamp": null,
+    "image": "images/cards/material-sticker-sheet_2x.jpg",
+    "title": "Sticker Sheets & Icons",
+    "summary": "",
+    "keywords": [],
+    "type": "design",
+    "category": "material design"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://www.google.com/design/spec/resources/roboto-noto-fonts.html",
+    "timestamp": null,
+    "image": "images/cards/material-typography_2x.jpg",
+    "title": "Typography: Roboto and Noto Sans fonts",
+    "summary": "",
+    "keywords": [],
+    "type": "design",
+    "category": "material design"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [
+      "icons",
+      "material",
+      "iconography"
+    ],
+    "url": "https://www.google.com/design/icons/index.html",
+    "timestamp": null,
+    "image": "images/cards/card-material-icons-16x9_2x.jpg",
+    "title": "Material icon collection",
+    "summary": "",
+    "keywords": ["icons"],
+    "type": "design",
+    "category": "material design"
+  },
+
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/adwords/answer/6032059",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "Setting up Mobile App Install Ads",
+    "summary": "With Mobile app installs campaigns on the Search and Display Networks, and TrueView for mobile app promotion on YouTube, you can create custom app install ads that run exclusively on phones and tablets.",
+    "keywords": ["marketing", "admob"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/adwords/answer/6167164",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "Best practices for Mobile App Engagement",
+    "summary": "Learn how to market to your user base to drive re-engagement with your app. ",
+    "keywords": ["marketing", "admob"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [
+      "marketing",
+      "engagement",
+      "adwords1"
+    ],
+    "url": "https://support.google.com/adwords/answer/6032073",
+    "timestamp": null,
+    "image": "https://www.gstatic.com/images/icons/material/product/2x/adwords_64dp.png",
+    "title": "Setting up Mobile App Engagement Ads",
+    "summary": "Mobile app engagement campaigns are a great choice for advertisers focused on connecting with people who already have their app.",
+    "keywords": [
+      "marketing",
+      "engagement",
+      "adwords"
+    ],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [
+      "marketing",
+      "engagement"
+    ],
+    "url": "https://support.google.com/adwords/answer/6167162",
+    "timestamp": null,
+    "image": "https://www.gstatic.com/images/icons/material/product/2x/adwords_64dp.png",
+    "title": "Best Practices for Mobile App Installs",
+    "summary": "Getting your mobile app discovered can be challenging. Learn how to drive downloads of your app and grow a valuable user base.",
+    "keywords": ["marketing", "adwords"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/admob/topic/2784623",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "Set up your AdMob account",
+    "summary": "Setting up your AdMob account in the right way will help you get the most value, check out the Setup and Basics guide.",
+    "keywords": ["marketing", "admob"],
+    "type": "distribute",
+    "category": "google"
+    },
+    {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://analyticsacademy.withgoogle.com/mobile-app",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "Analytics Academy for Mobile Apps",
+    "summary": "Learn how to use Google Analytics to make your app more discoverable and profitable.",
+    "keywords": ["marketing", "analytics"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/mobile-ads-sdk/download",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "Admob Ads",
+    "summary": "Use the Mobile Ads SDK to start showing AdMob ads in your apps.",
+    "keywords": ["marketing", "adwords"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/admob/",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "AdMob Help Center",
+    "summary": "For setup assistance, general info, and fixes for specific problems check out the AdMob Help Center.",
+    "keywords": ["admob"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/admob/answer/2753860",
+    "timestamp": null,
+    "image": "distribute/images/advertising.jpg",
+    "title": "AdMob Policy Guidelines",
+    "summary": "Learn about best practices for displaying AdMob ads in your apps to maximize revenue.",
+    "keywords": ["admob"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/app-invites/",
+    "timestamp": 1383243492000,
+    "image": "images/cards/google-search_2x.png",
+    "title": "Set up App Invites",
+    "summary": "Bring new users to your apps with personal recommendations, incentives, and offers.",
+    "keywords": ["invites", "appinvites", "engagement", "getusers"],
+    "type": "distribute",
+    "category": "google"
+  },
+
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/app-indexing/",
+    "timestamp": 1383243492000,
+    "image": "images/cards/google-search_2x.png",
+    "title": "Set Up App Indexing",
+    "summary": "Surface your app content in Google seaerch. Deep link direct to your apps.",
+    "keywords": ["search", "appindexing", "engagement", "getusers"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/app-indexing/webmasters/details",
+    "timestamp": null,
+    "image": "images/cards/google-search_2x.png",
+    "title": "Index your app",
+    "summary": "Index your app today by adding deep links and verifying its official web site to ensure it starts appearing in Google Search results. ",
+    "keywords": ["appindexing","search","getusers"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/identity/sign-in/android/people",
+    "timestamp": 1383243492000,
+    "image": "images/cards/google-sign-in_2x.png",
+    "title": "Get user profile details",
+    "summary": "After users sign-in with Google, you can access their age range, language, and public profile information.",
+    "keywords": ["signin", "identity", "google"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/identity/sign-in/android/",
+    "timestamp": "",
+    "image": "images/cards/google-sign-in_2x.png",
+    "title": "Google Sign-In",
+    "summary": "Discover how you can enhance user experiences on your website or in your app using information provided by their Google identity.",
+    "keywords": ["signin", "identity", "google"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/+/features/play-installs",
+    "timestamp": 1383243492000,
+    "image": "images/cards/google-sign-in_2x.png",
+    "title": "Over-the-air installs",
+    "summary": "Follow this step-by-step guide to quickly add Google Sign-in and over-the-air app installs to your website.",
+    "keywords": ["signin", "google", "installs"],
+    "type": "distribute",
+    "category": "google"
+  },
+  {
+    "lang": "en",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/+/features/analytics",
+    "timestamp": 1383243492000,
+    "image": 'images/google/gps-googleplus.png',
+    "title": "Google+ Insights",
+    "summary": "Measure impressions of the over-the-air install prompt, resulting installs, and success rate by day, week, and month.",
+    "keywords": ["signin", "identity"],
+    "type": "distribute",
+    "category": "google"
+  },
+
+ // Online courses
+
+ {
+    "title":"UX Design for Mobile Developers",
+    "category":"online course",
+    "summary":"Learn how to design a 5-star app.",
+    "url":"https://www.udacity.com/course/ud849",
+    "group":"",
+    "keywords": ["mobile","ux","design"],
+    "tags": ["courses, start"],
+    "image":"images/cards/courses/mobile_ux_course.jpg",
+    "lang":"en",
+    "type":"design"
+  },
+  {
+    "title":"Developing Android Apps",
+    "category":"online course",
+    "summary":"Learn Android and build an app!",
+    "url":"https://www.udacity.com/course/ud853",
+    "group":"",
+    "keywords": ["android", "start","firstapp","sdk"],
+    "tags": ["courses, start"],
+    "image":"images/cards/courses/android_fundamentals_course.jpg",
+    "lang":"en",
+    "type":"develop"
+  },
+  {
+    "title":"Android Performance",
+    "category":"online course",
+    "summary":"Optimize your apps for speed and usability.",
+    "url":"https://www.udacity.com/course/ud825",
+    "group":"",
+    "keywords": ["android, performance","battery"],
+    "tags": ["courses, performance"],
+    "image":"images/cards/courses/android_performance_course.jpg",
+    "lang":"en",
+    "type":"develop"
+  },
+  {
+    "title":"Enroll in the Android Nanodegree",
+    "category":"online course",
+    "summary":"Enroll in the Android Nanodegree to build the skills to work as an Android developer.",
+    "url":"https://www.udacity.com/android",
+    "group":"",
+    "keywords": ["android, nanodegree"],
+    "tags": ["courses"],
+    "image":"images/cards/courses/android_nanodegree.png",
+    "lang":"en",
+    "type":"develop"
+  },
+  {
+    "title":"Advanced Android App Development",
+    "category":"online course",
+    "summary":"Productionize and publish your apps.",
+    "url":"https://www.udacity.com/course/ud855",
+    "group":"",
+    "keywords": ["android, experts"],
+    "tags": ["courses, expert"],
+    "image":"images/cards/courses/advanced_android_course.jpg",
+    "lang":"en",
+    "type":"develop"
+  },
+  {
+    "title":"Material Design for Android Developers",
+    "category":"online course",
+    "summary":"Learn how to make your apps material.",
+    "url":"https://www.udacity.com/course/ud862",
+    "group":"",
+    "keywords": ["android, design, pure, material"],
+    "tags": ["courses, start, material"],
+    "image":"images/cards/courses/android_design_course.jpg",
+    "lang":"en",
+    "type":"design"
+  },
+  {
+    "title":"Android for Beginners",
+    "category":"online course",
+    "summary":"Make your first Android app, even if you don't write code.",
+    "url":"https://www.udacity.com/course/ud837",
+    "group":"",
+    "keywords": ["android, sdk, firstapp"],
+    "tags": ["courses, start"],
+    "image":"images/cards/courses/beginning_android_course.jpg",
+    "lang":"en",
+    "type":"develop"
+  },
+  {
+    "title":"Gradle for Android and Java",
+    "category":"online course",
+    "summary":"Build better apps through automation",
+    "url":"https://www.udacity.com/course/ud867",
+    "group":"",
+    "keywords": ["gradle","studio", "sdk"],
+    "tags": ["courses, gradle, sdk"],
+    "image":"images/cards/courses/gradle_course.jpg",
+    "lang":"en",
+    "type":"develop"
+  },
+  {
+    "title":"Add Location and Context to your app",
+    "category":"online course",
+    "summary":"Make Your Android App Location Aware.",
+    "url":"https://www.udacity.com/course/ud876-1",
+    "group":"",
+    "keywords": ["google services, context, location"],
+    "tags": ["courses, google, location, context"],
+    "image":"images/cards/courses/android_location_course.png",
+    "lang":"en",
+    "type":"develop"
+  },
+  {
+    "title":"Analytics and Tag Manager for Android",
+    "category":"online course",
+    "summary":"Use Analytics and Tag Manager in Your Apps.",
+    "url":"https://www.udacity.com/course/ud876-2",
+    "group":"",
+    "keywords": ["google services, analytics, tag manager"],
+    "tags": ["courses, google, analytics"],
+    "image":"images/cards/courses/android_analytics_course.png",
+    "lang":"en",
+    "type":"distribute"
+  },
+  {
+    "title":"AdMob for Android",
+    "category":"online course",
+    "summary":"Monetize Your App by Displaying Ads.",
+    "url":"https://www.udacity.com/course/ud876-3",
+    "group":"",
+    "keywords": ["monetize, google services, ads, admob"],
+    "tags": ["courses, google, ads, admob"],
+    "image":"images/cards/courses/admob_course.png",
+    "lang":"en",
+    "type":"distribute"
+  },
+  {
+    "title":"Add Maps to your Android app",
+    "category":"online course",
+    "summary":"Use maps, cameras, markers and more in your app.",
+    "url":"https://www.udacity.com/course/ud876-4",
+    "group":"",
+    "keywords": ["google, maps, marker, camera"],
+    "tags": ["courses, google, maps"],
+    "image":"images/cards/courses/android_maps_course.png",
+    "lang":"en",
+    "type":"develop"
+  },
+  {
+    "title":"Add Sign-in to your Android app",
+    "category":"online course",
+    "summary":"Build a Seamless Sign-In Experience.",
+    "url":"https://www.udacity.com/course/ud876-5",
+    "group":"",
+    "keywords": ["google services, signin, authorization"],
+    "tags": ["courses, google, auth"],
+    "image":"images/cards/courses/android_identity_course.png",
+    "lang":"en",
+    "type":"develop"
+  },
+  {
+    "title":"Android Wear Development",
+    "category":"online course",
+    "summary":"Extend your Apps to Android Smartwatches.",
+    "url":"https://www.udacity.com/course/ud875A",
+    "group":"",
+    "keywords": ["wear, wearables, smartwatch"],
+    "tags": ["courses, wear, wearable"],
+    "image":"images/cards/courses/android_wear_course.jpg",
+    "lang":"en",
+    "type":"develop"
+  },
+  {
+    "title":"Android TV and Google Cast Development",
+    "category":"online course",
+    "summary":"Extend your Apps to the Big Screen.",
+    "url":"https://www.udacity.com/course/ud875B",
+    "group":"",
+    "keywords": ["cast, living room"],
+    "tags": ["courses, cast, tv"],
+    "image":"images/cards/courses/android_tv_cast_course.jpg",
+    "lang":"en",
+    "type":"develop"
+  },
+  {
+    "title":"Android Auto Development",
+    "category":"online course",
+    "summary":"Put your apps in the driver's seat.",
+    "url":"https://www.udacity.com/course/ud875C",
+    "group":"",
+    "keywords": ["auto"],
+    "tags": ["courses, auto"],
+    "image":"images/cards/courses/android_auto_course.jpg",
+    "lang":"en",
+    "type":"develop"
+  },
+
+
+ // TODO remove this?
+  {
+    "title":"Android Wear Materials",
+    "category":"design",
+    "summary":"Drag and drop your way to beautifully designed Android Wear apps.",
+    "url":"design/downloads/index.html#Wear",
+    "group":"",
+    "keywords": ["icons","stencils","color swatches"],
+    "tags": ["icons","stencils","colorswatches"],
+    "image":"images/cards/android-wear-materials_2x.jpg",
+    "lang":"en",
+    "type":"video"
+  },
+  {
+    "title":"Watch Faces for Android Wear",
+    "category":"design",
+    "summary":"Watch faces let you customize the most prominent UI feature of Android wearables. The API is simple enough for rapid development and flexible enough to build something awesome.",
+    "url":"https://www.youtube.com/watch?v=AK38PJZmIW8&list=PLWz5rJ2EKKc-kIrPiq098QH9dOle-fLef",
+    "group":"",
+    "keywords": ["wear", "wearable", "watch face"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/AK38PJZmIW8/maxresdefault.jpg",
+    "lang":"en",
+    "type":"video"
+  },
+  {
+    "title":"Android Support Library",
+    "category":"Tools",
+    "summary":"These essential components help you build a great app that works on the huge variety of Android devices, faster.",
+    "url":"https://www.youtube.com/watch?v=3PIc-DuEU2s&list=PLWz5rJ2EKKc9e0d55YHgJFHXNZbGHEXJX",
+    "group":"",
+    "keywords": ["support", "compatibility"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/3PIc-DuEU2s/maxresdefault.jpg",
+    "lang":"en",
+    "type":"video"
+  },
+  {
+    "title":"Consistent Design with the AppCompat Support Library",
+    "category":"design",
+    "summary":"Getting a great looking app doesn't have to be hard: AppCompat, part of the Android Support Library, gives you a consistent design baseline that works on all Android 2.1 or higher devices.",
+    "url":"https://www.youtube.com/watch?v=5Be2mJzP-Uw&list=PLWz5rJ2EKKc9e0d55YHgJFHXNZbGHEXJX",
+    "group":"",
+    "keywords": ["support", "compatibility","design-code"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/5Be2mJzP-Uw/maxresdefault.jpg",
+    "lang":"en",
+    "type":"video"
+  },
+  {
+    "title":"Introducing Gradle",
+    "category":"tools",
+    "summary":"Android Studio uses an entirely new and flexible Gradle-based build system. You will be able to create multiple build variants for a single project, manage library dependencies and always be sure that your application builds correctly across different environments.",
+    "url":"https://www.youtube.com/watch?v=cD7NPxuuXYY&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
+    "group":"",
+    "keywords": ["tools", "studio","gradle"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/cD7NPxuuXYY/maxresdefault.jpg",
+    "lang":"en",
+    "type":"video"
+  },
+  {
+    "title":"Android Studio Layout Editor",
+    "category":"tools",
+    "summary":"Android Studio includes a rich, visual layout editor that helps developers create better user interfaces. It eliminates the need to deploy the APK on a real device with each change, making iterations faster and helping eliminate common errors earlier in the development process.",
+    "url":"https://www.youtube.com/watch?v=JLLnhwtDoHw&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
+    "group":"",
+    "keywords": ["tools", "studio","layout"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/JLLnhwtDoHw/maxresdefault.jpg",
+    "lang":"en",
+    "type":"video"
+  },
+  {
+    "title":"Debugging and testing in Android Studio",
+    "category":"tools",
+    "summary":"Learn about new debugger features in Android Studio 1.2: value inlining, quick access to referring objects and a Java .class decompiler, just to name a few. See some new tools and views that let you monitor the CPU and memory performance of your app from within the IDE. ",
+    "url":"https://www.youtube.com/watch?v=2I6fuD20qlY&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
+    "group":"",
+    "keywords": ["tools", "studio","debugging","profiling","performance"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/2I6fuD20qlY/maxresdefault.jpg",
+    "lang":"en",
+    "type":"video"
+  },
+  {
+    "title":"Scale with Google Cloud Platform",
+    "category":"google",
+    "summary":"Build, test, and deploy applications on Google's highly-scalable and reliable infrastructure for your web, mobile and backend solutions.",
+    "url":"https://cloud.google.com/docs/",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/cards/cloud-platform_2x.png",
+    "lang":"en",
+    "type":"distribute"
+  },
+  {
+    "title":"Opportunities & Programs",
+    "category":"Google Play",
+    "summary":"Take advantage of the many ways you can distribute your app to consumers, students, and businesses through Google Play.",
+    "url":"distribute/googleplay/index.html#opportunities",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/cards/program-edu_2x.jpg",
+    "lang":"en",
+    "type":"distribute"
+  },
+  {
+    "title":"Android for Work",
+    "category":"Enterprise",
+    "summary":"Learn more about how Android for Work makes your favorite phones and tablets the perfect business tools.",
+    "url":"https://www.android.com/work/",
+    "group":"",
+    "keywords": ["work", "enterprise", "emm"],
+    "tags": [],
+    "image":"images/cards/card-android-work_2x.png",
+    "lang":"en",
+    "type":"about"
+  },
+  {
+    "title":"Android for Work DevBytes",
+    "category":"Enterprise",
+    "summary":"Watch the videos in this playlist to understand more about Android for Work and get tips on developing enterprise apps.",
+    "url":"https://www.youtube.com/watch?v=jQWB_-o1kz4&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
+    "group":"",
+    "keywords": ["work", "enterprise", "emm"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/jQWB_-o1kz4/maxresdefault.jpg",
+    "lang":"en",
+    "type":"video"
+  },
+  {
+    "title":"App Configurations, Testing and Launchers",
+    "category":"Enterprise",
+    "summary":"With Android for Work you can make your apps remotely configurable. We also cover how to test your app in a managed environment.",
+    "url":"https://www.youtube.com/watch?v=39NkpWkaH8M&index=2&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
+    "group":"",
+    "keywords": ["work", "enterprise", "emm"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/39NkpWkaH8M/maxresdefault.jpg",
+    "lang":"en",
+    "type":"video"
+  },
+  {
+    "title":"Building an enterprise ready app",
+    "category":"Enterprise",
+    "summary":"A holistic view of Android for Work for developers.",
+    "url":"https://www.youtube.com/watch?v=dH41OutAMNM",
+    "group":"",
+    "keywords": ["work", "enterprise", "emm"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/dH41OutAMNM/maxresdefault.jpg",
+    "lang":"en",
+    "type":"video"
+  },
+  {
+    "title":"Android for Work: Single Use Devices",
+    "category":"Enterprise",
+    "summary":"Single-purpose computers are everywhere, and Android can meet that need.",
+    "url":"https://www.youtube.com/watch?v=j3QC6hcpy90",
+    "group":"",
+    "keywords": ["work", "enterprise", "emm"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/j3QC6hcpy90/maxresdefault.jpg",
+    "lang":"en",
+    "type":"video"
+  },
+  {
+    "title":"Discover YouTube cards",
+    "category":"google",
+    "summary":"Find out more about YouTube cards, the options available, and how to use them to get the most from your YouTube content.",
+    "url":"https://support.google.com/youtube/answer/6140493",
+    "group":"",
+    "keywords": ["youtube", "video", "users", "installs"],
+    "tags": [],
+    "image":"images/cards/card-youtube_2x.png",
+    "lang":"en",
+    "type":"distribute"
+  },
+    {
+    "title":"What is YouTube account good standing?",
+    "category":"Google",
+    "summary":"Learn what it means for an account to be in good standing from the YouTube Help Center.",
+    "url":"https://support.google.com/youtube/answer/2797387",
+    "group":"",
+    "keywords": ["youtube", "video", "users", "installs"],
+    "tags": [],
+    "image":"images/cards/card-youtube_2x.png",
+    "lang":"en",
+    "type":"distribute"
+  },
+  {
+    "title":"Developing for Android 6.0 (Marshmallow)",
+    "category":"",
+    "summary":"This video covers how to get started with the preview, important APIs to test and how to provide feedback on the preview.",
+    "url":"https://www.youtube.com/watch?v=yYU4DHLwoRk",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/yYU4DHLwoRk/maxresdefault.jpg",
+    "lang":"en",
+    "type":"video"
+  },
+  {
+    "title":"Google I/O 2015 - What's new in Android",
+    "category":"",
+    "summary":"This session will highlight the most exciting new developer features of the Android platform.",
+    "url":"https://www.youtube.com/watch?v=ndBdf1_oOGA",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/ndBdf1_oOGA/maxresdefault.jpg",
+    "lang":"en",
+    "type":"video"
+  },
+  {
+    "title":"Fingerprint and payments APIs",
+    "category":"",
+    "summary":"New fingerprint and payments APIs are introduced in M, to enable enhanced UX and security for online purchasing, banking, and retail payments.",
+    "url":"https://www.youtube.com/watch?v=VOn7VrTRlA4",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/VOn7VrTRlA4/maxresdefault.jpg",
+    "lang":"en",
+    "type":"video"
+  },
+  {
+    "title":"Introduction to Voice Interaction API",
+    "category":"",
+    "summary":"This video covers how to use the Voice Interaction API to support system or custom voice actions.",
+    "url":"https://www.youtube.com/watch?v=OW1A4XFRuyc",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/OW1A4XFRuyc/maxresdefault.jpg",
+    "lang":"en",
+    "type":"video"
+  },
+  {
+    "title":"Android Auto Backup for Apps",
+    "category":"",
+    "summary":"Android Backup is the automatic, cloud-based backup and restore of users’ apps when they set up a new device.",
+    "url":"https://www.youtube.com/watch?v=HXacyy0HSW0",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/HXacyy0HSW0/maxresdefault.jpg",
+    "lang":"en",
+    "type":"video"
+  },
+  {
+    "title":"New APIs in M for Android for Work",
+    "category":"",
+    "summary":"Android M extends Android for Work functionality with a new set of APIs for Enterprise Mobility Management providers to offer new features and policy controls to IT Departments.",
+    "url":"https://www.youtube.com/watch?v=vcSj8ln-BlE",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/vcSj8ln-BlE/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Android for Work: Single Use Devices",
+    "category":"",
+    "summary":"Android M is bringing the power of Android to all kinds of workplaces.",
+    "url":"https://www.youtube.com/watch?v=j3QC6hcpy90",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/j3QC6hcpy90/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Runtime Permissions in Android 6.0 Marshmallow",
+    "category":"",
+    "summary":"Learn how to integrate runtime permissions into your Android app.",
+    "url":"https://www.youtube.com/watch?v=C8lUdPVSzDk",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/C8lUdPVSzDk/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Introduction to Doze",
+    "category":"",
+    "summary":"An overview of Doze and how to make sure that your app behaves as expected both in and out of Doze mode. ",
+    "url":"https://youtu.be/N72ksDKrX6c",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/N72ksDKrX6c/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"The Nexus 5X, Nexus 6P and Android Marshmallow",
+    "category":"",
+    "summary":"The new Nexus 5X and Nexus 6P along with some of the most significant developer features in the latest Android release,.",
+    "url":"https://youtu.be/U9tw5ypqEN0",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/U9tw5ypqEN0/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Asking For Permission",
+    "category":"",
+    "summary":"Picking the right way and time to ask for a permission is critical to it being granted. ",
+    "url":"https://youtu.be/iZqDdvhTZj0",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/iZqDdvhTZj0/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Data Binding Library",
+    "category":"",
+    "summary":"Data Binding Library is a way to write declarative layouts and minimize the glue code necessary to bind your application logic and layouts. ",
+    "url":"https://youtu.be/5sCQjeGoE7M",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/5sCQjeGoE7M/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"App Links",
+    "category":"",
+    "summary":"App Links is a new feature of Android Marshmallow that brings a faster way of opening website links for domains that you own.",
+    "url":"https://youtu.be/LQoohRwojmw",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/LQoohRwojmw/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "title":"Android M Permissions",
+    "category":"",
+    "summary":"An introduction to Android M runtime permissions in Android M from Google I/O 2015. ",
+    "url":"https://www.youtube.com/watch?v=f17qe9vZ8RM",
+    "group":"",
+    "keywords": ["Marshmallow"],
+    "tags": [],
+    "image":"https://i1.ytimg.com/vi/f17qe9vZ8RM/maxresdefault.jpg",
+    "lang":"en",
+    "type":"Video"
+  },
+  {
+    "url":"https://www.youtube.com/watch?v=QDM52bblwlg",
+    "image": "images/distribute/hero-family-discovery.jpg",
+    "title": "Introducing the new family discovery experience on Google Play",
+    "summary": "Help families create little moments on Google Play. Opt-in your apps now.",
+    "tags":["families","googleplay"],
+    "type":"video"
+  },
+  {
+    "url":"https://www.youtube.com/watch?v=wcjqBSei3a0&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
+    "image": "https://i1.ytimg.com/vi/wcjqBSei3a0/maxresdefault.jpg",
+    "title": "Developers connecting the world through Google Play",
+    "summary": "The mobile ecosystem is empowering developers to make good on the dream of connecting the world through technology to improve people's lives.",
+    "tags":["io15","googleplay"],
+    "keywords":["Google I/O 2015","io"],
+    "type":"video"
+  },
+  {
+    "url":"https://www.youtube.com/watch?v=B6ydLpkhq04&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
+    "image": "https://i1.ytimg.com/vi/B6ydLpkhq04/maxresdefault.jpg",
+    "title": "Store Listing Experiments for Google Play",
+    "summary": "Learn how to use Google Play’s new store listing optimization feature to get more installs of your app, and how to test different graphics and text to find out which options perform the best. ",
+    "tags":["io15","googleplay","store listing"],
+    "tags":["google i/o","google play","store listing"],
+    "type":"video"
+  },
+  {
+    "url":"https://www.youtube.com/watch?v=jyO3-rF4Mu0&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
+    "image": "https://i1.ytimg.com/vi/jyO3-rF4Mu0/maxresdefault.jpg",
+    "title": "Growing games with Google",
+    "summary": "The games industry has never been more promising and full of opportunities. This talk covers how Google is helping developers across a broad range of existing and emerging platforms.",
+    "tags":["io15","android", "googleplay","games"],
+    "keywords":["Google I/O","google play","games"],
+    "type":"video"
+  },
+  {
+    "url":"https://www.youtube.com/watch?v=yJisuP94lHU",
+    "image": "images/distribute/hero-playtime-opener.jpg",
+    "title": "Playtime 2015: Innovation happens everywhere",
+    "type":"Video",
+    "tags":["googleplay"],
+    "summary": "Watch the opening video from Google Play's annual event series, Playtime, which celebrates inspirational developers who are changing the world around them.",
+  },
+  {
+    "url":"https://www.youtube.com/watch?v=JrR6o5tYMWQ",
+    "image": "images/distribute/hero-acquisition-devbyte.jpg",
+    "title": "User acquisition and tracking on Google Play",
+    "type" : "Video",
+    "tags" : "users,googleplay,googleio",
+    "summary": "Learn how to get new users, using Universal app campaigns directly within the Google Play Developer Console to increase your installs from ads, and find out how your acquisition channels perform.",
+  },
+  {
+    "url":"panel1",
+    "image": "",
+    "title": "",
+    "type" : "",
+    "tags" : "",
+    "summary": "",
+  },
+  {
+    "url":"panel2",
+    "image": "",
+    "title": "",
+    "type" : "",
+    "tags" : "",
+    "summary": "",
+  },
+  {
+    "url":"panel3",
+    "image": "",
+    "title": "",
+    "type" : "",
+    "tags" : "",
+    "summary": "",
+  },
+  {
+    "url":"panel4",
+    "image": "",
+    "title": "",
+    "type" : "",
+    "tags" : "",
+    "summary": "",
+  }
+]);
+
+/**
+ * Metadata overrides for carousels/heros.
+ */
+METADATA['en'].carousel = {
+  "panel2": {
+    "image": "images/tools/and-studio_shortcuts-included_2x.png",
+    "title": "Shortcuts included",
+    "type":"Android Studio",
+    "heroColor": "#fff",
+    "url":"",
+    "summary": "No need to start from scratch, Android Studio includes prebuilt template patterns &nbsp; from navigation drawers to view pagers and GitHub integration to help guide you along quickly.",
+  },
+  "panel4": {
+    "image": "images/tools/and-studio_feat-gradle_2x.png",
+    "title": "Evolved Android builds, with Gradle",
+    "type":"Android Studio",
+    "heroColor": "#fff",
+    "summary": "Create multiple APKs for your Android app with different features using the same project. Manage app dependencies with Maven. Build APKs from Android Studio or the command line.",
+  },
+  "panel1": {
+    "image": "images/tools/codeeditor-low.gif",
+    "title": "Fast, intelligent coding",
+    "type":"Android Studio",
+    "heroColor": "#fff",
+    "summary": "Advanced code completion, refactoring and code analysis in an environment that’s purpose-built for Android, the powerful code editor helps you be a more productive Android app developer.",
+  },
+  "panel3": {
+    "image": "images/tools/studio-hero-screens_2x.png",
+    "title": " All shapes, sizes and scenarios",
+    "type":"Android Studio",
+    "heroColor": "#fff",
+    "summary": "Create multiple APKs for your Android app with different features using the same project. Manage app dependencies with Maven. Build APKs from Android Studio or the command line.",
+  },
+  "distribute/googleplay/guide.html": {
+    "image": "images/distribute/hero-secrets-to-app-success.jpg",
+    "title": "Secrets to App Success on Google Play",
+    "summary": "Get the updated guide full of useful features, tips, and best practices that will help you grow a successful app or game business on Google Play.",
+  },
+  "about/versions/lollipop.html": {
+    "image": "images/home/hero-lollipop_2x.png",
+    "heroColor": "#263238",
+    "heroInvert": true,
+    "title": "Android 5.0 Lollipop",
+    "summary": "The Android 5.0 update adds a variety of new features for your apps, such as notifications on the lock screen, an all-new camera API, OpenGL ES 3.1, the new naterial design interface, and much more.",
+  },
+  "http://www.youtube.com/watch?v=Pms0pcyPbAM": {
+    "url":"https://www.youtube.com/watch?v=Pms0pcyPbAM&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c]",
+    "image": "images/distribute/hero-carousel-giftedmom.jpg",
+    "title": "Gifted Mom reaches more mothers across Africa with Android",
+    "type":"youtube",
+    "summary": "Gifted Mom is an app developed in Cameroon which provides users with critical information about pregnancy, breastfeeding and child vaccinations. Hear the creators explain how they built their business and launched on Google Play.",
+  },
+  "http://www.youtube.com/watch?v=9m6MoBM-sFI": {
+    "url":"https://www.youtube.com/watch?v=9m6MoBM-sFI&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c&index=3",
+    "image": "images/distribute/hero-carousel-sgn.jpg",
+    "title": "SGN increases installs with Store Listing Experiments",
+    "type" : "youtube",
+    "summary": "Watch mobile game developer SGN talk about how using Store Listing Experiments to test multiple variants across their portfolio of games helped improve their ROI, conversion rates and gamer retention.",
+  },
+  "http://www.youtube.com/watch?v=e7t3svG9PTk": {
+    "url":"https://www.youtube.com/watch?v=e7t3svG9PTk&index=2&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c",
+    "image": "images/distribute/hero-carousel-djit.jpg",
+    "title": "DJiT builds higher quality experiences on Android",
+    "type" : "youtube",
+    "summary": "Learn how Music app developer DJiT create higher quality apps with improved latency on Android Marshmallow, as well as other Android and Google Play features.",
+  },
+  "http://www.youtube.com/watch?v=J3IvOfvH1ys": {
+    "url":"https://www.youtube.com/watch?v=J3IvOfvH1ys&list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c&index=1",
+    "image": "images/distribute/hero-carousel-wego.jpg",
+    "title": "Wego increases user retention with material design",
+    "type" : "youtube",
+    "summary": "Hear how online travel marketplace Wego, increased monthly user retention by 300% and reduced uninstall rates by up to 25% with material design.",
+  },
+  "https://www.youtube.com/watch?v=QDM52bblwlg": {
+    "url":"distribute/googleplay/families/about.html",
+    "image": "images/distribute/hero-family-discovery.jpg",
+    "title": "Designed for families",
+    "summary": "Introducing the new family discovery experience in Google Play. Your apps can benefit from enhanced discoverability and maintain their existing categories, rankings, and reviews elsewhere in the store. Opt-in your apps today.",
+    "type":"distribute",
+  },
+  "https://www.youtube.com/watch?v=wcjqBSei3a0&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS": {
+    "url":"https://www.youtube.com/watch?v=wcjqBSei3a0&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
+    "image": "images/distribute/hero-IO15-google-play.jpg",
+    "title": "Connecting the world through Google Play",
+    "tags":["io15"],
+    "summary": "In this this Google I/O talk, hear how the mobile ecosystem is empowering developers to connect the world through technology and improve people's lives.",
+  },
+  "https://www.youtube.com/watch?v=B6ydLpkhq04&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS": {
+    "image": "images/distribute/hero-store-listing-experience.jpg",
+    "title": "Using Google Play store listing experiments",
+    "tags":["io15"],
+    "summary": "Learn how to use Google Play store listing experiments to get more installs in this Google I/O talk. Test different graphics and text to find out which options perform the best. ",
+  },
+  "https://www.youtube.com/watch?v=jyO3-rF4Mu0&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS": {
+    "image": "images/distribute/hero-IO15-growing-games.jpg",
+    "title": "Growing games with Google",
+    "tags":["io15"],
+    "summary": "The games industry has never been more promising and full of opportunities. This talk from Google I/O 2015 covers how Google is helping developers across a broad range of existing and emerging platforms.",
+  },
+};
+
+/**
+ * Static metadata collections.
+ */
+METADATA['en'].collections = {
+  "index/carousel": {
+    "title": "",
+    "resources": [
+      "about/versions/lollipop.html"
+    ]
+  },
+  "index/primary": {
+    "title": "",
+    "resources": [
+      "training/building-wearables.html",
+      "training/material/index.html",
+      "sdk/index.html"
+    ]
+  },
+  "index/secondary/carousel": {
+    "title": "",
+    "resources": [
+      "http://www.youtube.com/watch?v=Pms0pcyPbAM",
+      "http://www.youtube.com/watch?v=9m6MoBM-sFI",
+      "http://www.youtube.com/watch?v=e7t3svG9PTk",
+      "http://www.youtube.com/watch?v=J3IvOfvH1ys"
+    ]
+  },
+  "index/multiscreen": {
+    "title": "",
+    "resources": [
+      "wear/index.html",
+      "tv/index.html",
+      "auto/index.html"
+    ]
+  },
+  "design/landing/latest": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/watch?v=p4gmvHyuZzw",
+      "https://www.youtube.com/watch?v=YaG_ljfzeUw",
+      "https://www.youtube.com/watch?v=XOcCOBe8PTc"
+    ]
+  },
+  "design/landing/materialdesign": {
+    "title": "",
+    "resources": [
+      "https://www.google.com/design/spec/animation/",
+      "https://www.google.com/design/spec/style/",
+      "https://www.google.com/design/spec/layout/",
+      "https://www.google.com/design/spec/components/",
+      "https://www.google.com/design/spec/patterns/",
+      "https://www.google.com/design/spec/usability/"
+    ]
+  },
+  "design/landing/pureandroid": {
+    "title": "",
+    "resources": [
+      "design/get-started/creative-vision.html",
+      "design/material/index.html",
+      "training/material/index.html",
+      "design/patterns/pure-android.html",
+      "design/patterns/new.html",
+      "design/devices.html"
+    ]
+  },
+  "design/landing/resources": {
+    "title": "",
+    "resources": [
+      "https://www.google.com/design/spec/resources/color-palettes.html",
+      "https://www.google.com/design/spec/resources/layout-templates.html",
+      "https://www.google.com/design/spec/resources/sticker-sheets-icons.html",
+      "https://www.google.com/design/spec/resources/roboto-noto-fonts.html",
+      "https://www.google.com/design/icons/index.html",
+      "design/downloads/index.html#Wear"
+    ]
+  },
+  "develop/landing/mainlinks": {
+    "title": "",
+    "resources": [
+      "tools/studio/index.html",
+      "samples/new/index.html",
+      "tools/projects/templates.html"
+    ]
+  },
+  "develop/landing/latest": {
+    "title": "",
+    "resources": [
+      "https://android-developers.blogspot.com/2015/04/new-android-code-samples.html",
+      "https://android-developers.blogspot.com/2015/04/android-support-library-221.html",
+      "https://android-developers.blogspot.com/2015/03/a-new-reference-app-for-multi-device.html"
+    ]
+  },
+  "develop/landing/devpatterns": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/watch?v=kmUGLURRPkI",
+      "https://www.youtube.com/watch?v=HGElAW224dE",
+      "https://www.youtube.com/watch?v=zQekzaAgIlQ"
+    ]
+  },
+  "develop/landing/performance": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/watch?v=fEEulSk1kNY",
+      "https://www.youtube.com/watch?v=-3ry8PxcJJA",
+      "https://www.youtube.com/watch?v=_kKTGK-Cb_4"
+    ]
+  },
+  "develop/landing/buildwithgoogle": {
+    "title": "",
+    "resources": [
+    ]
+  },
+  "develop/landing/ubicomp": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/watch?v=AK38PJZmIW8&list=PLWz5rJ2EKKc-kIrPiq098QH9dOle-fLef",
+      "https://www.youtube.com/watch?v=6K_jxccHv5M&index=1&list=PLOU2XLYxmsILFBfx66ens76VMLMEPJAB0",
+      "https://www.youtube.com/watch?v=ctiaVxgclsg&list=PLWz5rJ2EKKc9BdE_PSLNIGjXXr3h_orXM"
+    ]
+  },
+  "develop/landing/tools": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/watch?v=K2dodTXARqc&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
+      "https://www.youtube.com/watch?v=3PIc-DuEU2s&list=PLWz5rJ2EKKc9e0d55YHgJFHXNZbGHEXJX",
+      "https://www.youtube.com/watch?v=cD7NPxuuXYY&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
+      "https://www.youtube.com/watch?v=JLLnhwtDoHw&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
+      "https://www.youtube.com/watch?v=2I6fuD20qlY&list=PLWz5rJ2EKKc8I9gHTMh5yKkwRRGE8BjbQ",
+      "https://www.youtube.com/watch?v=5Be2mJzP-Uw&list=PLWz5rJ2EKKc9e0d55YHgJFHXNZbGHEXJX"
+    ]
+  },
+  "google/landing/services": {
+    "title": "",
+    "resources": [
+      "https://developers.google.com/analytics/devguides/collection/android/",
+      "https://developers.google.com/maps/documentation/android/",
+      "https://developers.google.com/identity/sign-in/android/",
+      "https://developers.google.com/mobile-ads-sdk/download",
+      "https://developers.google.com/cloud-messaging/gcm",
+      "https://developers.google.com/app-indexing/"
+    ]
+  },
+  "google/landing/videos": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/watch?v=M3Udfu6qidk&list=PLWz5rJ2EKKc9Qk1_iCZNbBp6adYnJf9Vf",
+      "https://www.youtube.com/watch?v=FOn64iqlphk&list=PLWz5rJ2EKKc9Qk1_iCZNbBp6adYnJf9Vf",
+      "https://www.youtube.com/watch?v=F0Kh_RnSM0w&list=PLWz5rJ2EKKc9Qk1_iCZNbBp6adYnJf9Vf",
+      "https://www.youtube.com/watch?v=fvtMtfCuEpw&list=PLWz5rJ2EKKc9Qk1_iCZNbBp6adYnJf9Vf"
+    ]
+  },
+  "google/landing/googleplay": {
+    "title": "",
+    "resources": [
+      "google/play/billing/index.html",
+      "google/play/billing/billing_subscriptions.html",
+      "google/play/developer-api.html"
+    ]
+  },
+  "develop/landing/courses": {
+    "title": "",
+    "resources": [
+      "https://www.udacity.com/course/ud849",
+      "https://www.udacity.com/course/ud853",
+      "https://www.udacity.com/course/ud825",
+      "https://www.udacity.com/android",
+      "https://www.udacity.com/course/ud855",
+      "https://www.udacity.com/course/ud875A",
+      "https://www.udacity.com/course/ud875B",
+      "https://www.udacity.com/course/ud875C",
+      "https://www.udacity.com/course/ud876--1",
+      "https://www.udacity.com/course/ud876--2",
+      "https://www.udacity.com/course/ud876--3",
+      "https://www.udacity.com/course/ud876--4",
+      "https://www.udacity.com/course/ud876--5",
+      "https://www.udacity.com/course/ud862",
+      "https://www.udacity.com/course/ud837",
+      "https://www.udacity.com/course/ud867"
+    ]
+  },
+  "distribute/landing/carousel": {
+    "title": "",
+    "resources": [
+    "distribute/googleplay/guide.html",
+    "https://www.youtube.com/watch?v=JrR6o5tYMWQ",
+    "https://www.youtube.com/watch?v=B6ydLpkhq04&list=PLOU2XLYxmsIKLNUPiFCWVtcO7mZRZ9MmS",
+    "https://www.youtube.com/watch?v=yJisuP94lHU",
+    ]
+  },
+  "distribute/landing/googleplay": {
+    "title": "",
+    "resources": [
+      "distribute/googleplay/about.html",
+      "distribute/googleplay/developer-console.html",
+      "distribute/googleplay/index.html#opportunities"
+    ]
+  },
+  "distribute/landing/more": {
+    "title": "",
+    "resources": [
+      "distribute/users/promote-with-ads.html",
+      "distribute/monetize/ads.html",
+      "distribute/analyze/index.html",
+      "distribute/engage/deep-linking.html",
+      "distribute/engage/easy-signin.html",
+      "https://cloud.google.com/docs/"
+    ]
+  },
+  "distribute/edu/videos/stories": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/watch?v=Idu7VcTTXfk",
+      "https://www.youtube.com/watch?v=iokH4SAIfRw"
+    ]
+  },
+  "distribute/edu/videos/bestpractices": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/watch?v=iulXz8QTD1g",
+      "https://www.youtube.com/watch?v=IKhU180eJMo",
+      "https://www.youtube.com/watch?v=_AZ6UcPz-_g",
+      "https://www.youtube.com/watch?v=Eh2adsAyTKc"
+    ]
+  },
+  "distribute/edu/videos/experience": {
+    "title": "",
+    "resources": [
+      "https://youtu.be/vzvpcEffvaE"
+    ]
+  },
+  "distribute/gp/gplanding": {
+    "resources": [
+      "distribute/googleplay/about.html",
+      "distribute/googleplay/start.html",
+      "distribute/googleplay/developer-console.html"
+    ]
+  },
+  "distribute/gp/gpfelanding": {
+    "resources": [
+      "distribute/googleplay/wear.html",
+      "distribute/googleplay/tv.html",
+      "distribute/googleplay/auto.html",
+      "distribute/googleplay/families/about.html",
+      "distribute/googleplay/work/about.html",
+      "distribute/googleplay/edu/about.html",
+      "distribute/googleplay/cast.html",
+      "distribute/googleplay/cardboard.html",
+      "distribute/googleplay/guide.html"
+    ]
+  },
+  "distribute/googleplay/gpfw": {
+    "resources": [
+      "https://www.android.com/work/",
+      "https://www.youtube.com/watch?v=jQWB_-o1kz4&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
+      "training/enterprise/index.html"
+    ]
+  },
+  "distribute/essentials": {
+    "resources": [
+      "distribute/essentials/quality/core.html",
+      "distribute/essentials/quality/tablets.html",
+      "distribute/essentials/quality/tv.html",
+      "distribute/essentials/quality/wear.html",
+      "distribute/essentials/quality/auto.html",
+      "https://developers.google.com/edu/guidelines"
+    ]
+  },
+  "distribute/users": {
+    "title": "",
+    "resources": [
+      "distribute/users/your-listing.html",
+      "distribute/users/promote-with-ads.html",
+      "distribute/googleplay/index.html#opportunities",
+      "distribute/analyze/improve-roi.html",
+      "distribute/users/expand-to-new-markets.html",
+      "distribute/users/promote-with-ads.html",
+      "distribute/analyze/index.html",
+      "distribute/users/app-invites.html",
+      "distribute/users/ota-installs.html",
+      "distribute/users/youtube.html",
+      "distribute/users/house-ads.html",
+      "distribute/users/experiments.html",
+      "distribute/users/user-acquisition.html",
+      "distribute/users/banners.html",
+      "distribute/users/beta.html"
+    ]
+  },
+  "distribute/engagelanding": {
+    "resources": [
+      "distribute/engage/intents.html",
+      "distribute/engage/widgets.html",
+      "distribute/engage/notifications.html",
+      "distribute/engage/deep-linking.html",
+      "distribute/engage/ads.html",
+      "distribute/engage/game-services.html",
+      "distribute/engage/easy-signin.html",
+      "distribute/analyze/build-better-apps.html",
+      "distribute/engage/gcm.html",
+      "distribute/engage/beta.html"
+    ]
+  },
+  "distribute/monetize": {
+    "resources": [
+      "distribute/monetize/premium.html",
+      "distribute/monetize/freemium.html",
+      "distribute/monetize/subscriptions.html",
+      "distribute/monetize/ads.html",
+      "distribute/monetize/ecommerce.html",
+      "distribute/monetize/payments.html",
+      "distribute/analyze/understand-user-value.html",
+    ]
+  },
+  "distribute/analyzelanding": {
+    "resources": [
+      "distribute/analyze/start.html",
+      "distribute/analyze/measure.html",
+      "distribute/analyze/understand-user-value.html",
+      "distribute/analyze/improve-roi.html",
+      "distribute/analyze/build-better-apps.html",
+      "distribute/analyze/google-services.html"
+    ]
+  },
+  "distribute/analyzestart": {
+    "resources": [
+      "https://analyticsacademy.withgoogle.com/course04",
+      "google/play-services/index.html",
+      "https://developers.google.com/analytics/solutions/mobile-implementation-guide",
+      "https://developers.google.com/analytics/devguides/collection/android/",
+      "https://www.google.com/tagmanager/",
+      "https://github.com/googleanalytics/google-analytics-plugin-for-unity"
+    ]
+  },
+  "distribute/analyzemeasure": {
+    "resources": [
+
+      "https://developers.google.com/analytics/solutions/mobile-implementation-guide",
+      "https://developers.google.com/analytics/devguides/collection/android/v4/enhanced-ecommerce",
+      "https://support.google.com/analytics/answer/1032415",
+      "https://developers.google.com/analytics/devguides/collection/android/v4/events",
+      "https://developers.google.com/analytics/devguides/collection/android/v4/customdimsmets",
+      "https://developers.google.com/analytics/devguides/collection/android/v4/user-id"
+    ]
+  },
+  "distribute/analyzeunderstand": {
+    "resources": [
+      "https://developers.google.com/analytics/devguides/collection/android/v4/display-features",
+      "https://support.google.com/analytics/answer/3123906",
+      "https://support.google.com/analytics/answer/2568874?ref_topic=6012392",
+      "https://developers.google.com/analytics/devguides/collection/android/v4/enhanced-ecommerce",
+      "https://support.google.com/analytics/answer/1032415",
+    ]
+  },
+  "distribute/analyzeimprove": {
+    "resources": [
+
+      "https://developers.google.com/analytics/devguides/collection/android/v4/campaigns",
+      "https://support.google.com/analytics/answer/2956981",
+      "https://support.google.com/analytics/answer/1033961",
+      "https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#google-play-url-builder",
+      "https://developers.google.com/analytics/solutions/mobile-campaign-deep-link"
+    ]
+  },
+  "distribute/analyzebuild": {
+    "resources": [
+      "https://support.google.com/tagmanager/answer/6003007",
+      "https://support.google.com/analytics/answer/2785577",
+      "https://support.google.com/analytics/answer/1151300"
+    ]
+  },
+  "distribute/analyzeact": {
+    "resources": [
+      "https://support.google.com/analytics/answer/2611268",
+      "https://support.google.com/analytics/answer/1033961",
+      "https://support.google.com/admob/answer/3508177",
+      "https://support.google.com/analytics/answer/2956981",
+      "https://support.google.com/tagmanager/answer/6003007"
+    ]
+  },
+  "distribute/essentials/guidelines": {
+    "title": "",
+    "resources": [
+      "distribute/essentials/quality/core.html",
+      "distribute/essentials/quality/tablets.html",
+      "distribute/essentials/quality/wear.html",
+      "distribute/essentials/quality/tv.html",
+      "distribute/essentials/quality/auto.html",
+      "https://developers.google.com/edu/guidelines"
+    ]
+  },
+  "distribute/essentials/tools": {
+    "title": "",
+    "resources": [
+      "distribute/tools/launch-checklist.html",
+      "distribute/tools/localization-checklist.html",
+      "https://support.google.com/googleplay/android-developer",
+      "distribute/tools/promote/brand.html",
+      "distribute/tools/promote/device-art.html",
+      "https://play.google.com/intl/en_us/badges/",
+      "distribute/tools/promote/linking.html",
+      "distribute/tools/open-distribution.html",
+      "about/dashboards/index.html"
+    ]
+  },
+  "distribute/tools/checklists": {
+    "title": "",
+    "resources": [
+      "distribute/tools/launch-checklist.html",
+      "distribute/tools/localization-checklist.html"
+    ]
+  },
+  "distribute/tools/promote": {
+    "resources": [
+      "distribute/tools/promote/device-art.html",
+      "https://play.google.com/intl/en_us/badges/",
+      "distribute/tools/promote/linking.html"
+    ]
+  },
+  "distribute/tools/support": {
+    "title": "Google Play",
+    "resources": [
+      "https://support.google.com/googleplay/android-developer",
+      "https://support.google.com/googleplay/android-developer/answer/4430948",
+      "support.html"
+    ]
+  },
+  "distribute/tools/news": {
+    "title": "",
+    "resources": [
+      "https://android-developers.blogspot.com/",
+      "https://plus.google.com/+AndroidDevelopers/"
+    ]
+  },
+  "distribute/tools/more": {
+    "title": "Google Play",
+    "resources": [
+      "distribute/tools/promote/brand.html",
+      "distribute/tools/open-distribution.html",
+      "about/dashboards/index.html"
+    ]
+  },
+  "distribute/googleplay": {
+    "title": "Google Play",
+    "resources": [
+      "distribute/googleplay/developer-console.html",
+      "distribute/essentials/best-practices/apps.html",
+      "distribute/tools/launch-checklist.html",
+      "distribute/essentials/best-practices/games.html",
+    ]
+  },
+  "distribute/googleplay/gettingstarted": {
+    "title": "Get Started",
+    "resources": [
+      "distribute/googleplay/developer-console.html",
+      "https://support.google.com/googleplay/android-developer/answer/113468",
+      "https://support.google.com/googleplay/android-developer/answer/138294",
+      "https://support.google.com/googleplay/android-developer"
+    ]
+  },
+  "distribute/googleplay/developerconsole/related": {
+    "title": "Developer Console",
+    "resources": [
+      "google/play/billing/index.html",
+      "https://support.google.com/googleplay/android-developer/answer/138294"
+    ]
+  },
+  "distribute/googleplay/developerconsole": {
+    "title": "Developer Console",
+    "resources": [
+      "google/play/billing/index.html",
+      "https://support.google.com/googleplay/android-developer/answer/138294"
+    ]
+  },
+  "distribute/googleplay/beta": {
+    "title": "Alpha and Beta Testing",
+    "resources": [
+      "https://support.google.com/googleplay/android-developer/answer/3131213",
+      "https://support.google.com/googleplay/android-developer/answer/3131213#games",
+      "distribute/googleplay/experiments.html"
+    ]
+  },
+  "distribute/googleplay/experiments/successes": {
+    "title": "Store Listing Experiment successes",
+    "resources": [
+    ]
+  },
+  "distribute/googleplay/experiments/related": {
+    "title": "Store Listing Experiments",
+    "resources": [
+      "https://support.google.com/googleplay/android-developer/answer/6227309",
+      "https://www.youtube.com/watch?v=B6ydLpkhq04",
+      "https://support.google.com/tagmanager/answer/6003007"
+    ]
+  },
+  "distribute/googleplay/banners/related": {
+    "title": "App Install Banners",
+    "resources": [
+      "https://developers.google.com/web/updates/2015/03/increasing-engagement-with-app-install-banners-in-chrome-for-android#native"
+    ]
+  },
+  "distribute/googleplay/useracquisition/related": {
+    "title": "User Acquisition",
+    "resources": [
+      "https://support.google.com/googleplay/android-developer/answer/6263332"
+    ]
+  },
+  "distribute/googleplay/cast": {
+    "title": "Google Cast",
+    "resources": [
+      "https://developers.google.com/cast/docs/ux_guidelines",
+      "https://developers.google.com/cast/docs/android_sender",
+      "https://www.github.com/googlecast"
+    ]
+  },
+  "distribute/googleplay/cardboard": {
+    "title": "Google Cast",
+    "resources": [
+      "https://www.google.com/get/cardboard/get-cardboard/",
+      "https://developers.google.com/cardboard/android/download",
+      "https://www.google.com/design/spec-vr"
+    ]
+  },
+  "distribute/googleplay/gpfe/highlight": {
+    "title": "About Google Play for Education",
+    "resources": [
+      "https://youtu.be/vzvpcEffvaE"
+    ]
+  },
+  "distribute/googleplay/gpfe/dev/about": {
+    "title": "About Google Play for Education / Developers",
+    "resources": [
+      "distribute/googleplay/edu/start.html",
+      "https://developers.google.com/edu/guidelines",
+      "https://developers.google.com/edu/faq",
+      "distribute/essentials/quality/tablets.html",
+      "https://developers.google.com/edu/",
+      "https://www.google.com/edu/tablets/#tablets-family"
+    ]
+  },
+  "distribute/googleplay/gpfe/dev": {
+    "title": "About Google Play for Education / Developers",
+    "resources": [
+      "distribute/googleplay/edu/about.html",
+      "https://developers.google.com/edu/guidelines",
+      "distribute/essentials/quality/tablets.html",
+      "distribute/googleplay/developer-console.html",
+      "https://play.google.com/about/developer-distribution-agreement-addendum.html",
+    ]
+  },
+  "distribute/googleplay/aboutgpfe/educators/about": {
+    "title": "About Google Play for Education / Educators",
+    "resources": [
+      "https://www.google.com/edu/tablets/",
+      "https://www.youtube.com/watch?v=haEmsMo0f3w"
+    ]
+  },
+  "distribute/googleplay/aboutgpfe/educators": {
+    "title": "About Google Play for Education / Educators",
+    "resources": [
+      "https://www.google.com/edu/tablets/",
+      "https://youtu.be/vzvpcEffvaE"
+    ]
+  },
+  "distribute/googleplay/gettingstartedgpfe/educators": {
+    "title": "About Google Play for Education / Educators",
+    "resources": [
+      "https://www.google.com/edu/tablets/",
+      "https://youtu.be/vzvpcEffvaE"
+    ]
+  },
+  "distribute/essentials/eduessentials/developers": {
+    "title": "",
+    "resources": [
+      "distribute/googleplay/developer-console.html",
+      "distribute/googleplay/edu/start.html",
+      "https://developers.google.com/edu/faq"
+    ]
+  },
+  "distribute/essentials/eduessentials/educators": {
+    "title": "",
+    "resources": [
+      "https://www.google.com/edu/tablets/",
+      "distribute/essentials/quality/tablets.html",
+    ]
+  },
+  "distribute/essentials/optimizing": {
+    "title": "Optimizing Your App",
+    "resources": [
+      "design/index.html",
+      "training/articles/perf-anr.html",
+      "https://android-developers.blogspot.com/2013/10/improved-app-insight-by-linking-google.html"
+    ]
+  },
+  "distribute/users/appinvites": {
+    "title": "",
+    "resources": [
+      "https://developers.google.com/app-invites/",
+      "https://developers.google.com/identity/sign-in/android/",
+      "https://developers.google.com/app-indexing/"
+    ]
+  },
+  "distribute/users/promotewithads": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/adwords/answer/6032059",
+      "https://support.google.com/adwords/answer/6032073",
+      "https://support.google.com/adwords/answer/6167164",
+      "https://support.google.com/adwords/answer/6167162"
+    ]
+  },
+  "distribute/users/buildbuzz": {
+    "title": "",
+    "resources": [
+      "https://play.google.com/intl/en_us/badges/",
+      "distribute/tools/promote/linking.html",
+      "distribute/tools/promote/device-art.html",
+      "https://plus.google.com/+GooglePlay"
+    ]
+  },
+  "distribute/users/createagreatlisting": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/googleplay/android-developer/answer/1078870",
+      "https://android-developers.blogspot.com/2011/10/android-market-featured-image.html",
+      "distribute/tools/launch-checklist.html",
+      "https://android-developers.blogspot.com/2013/07/making-beautiful-android-app-icons.html",
+      "https://android-developers.blogspot.com/2012/12/localize-your-promotional-graphics-on.html",
+      "https://android-developers.blogspot.com/2013/10/making-your-app-content-more-accessible.html"
+    ]
+  },
+  "distribute/users/appindexing": {
+    "title": "",
+    "resources": [
+      "https://developers.google.com/app-indexing/",
+      "https://developers.google.com/app-indexing/webmasters/details",
+      "distribute/engage/deep-linking.html",
+      "training/app-indexing/index.html"
+    ]
+  },
+  "distribute/users/otas": {
+    "title": "",
+    "resources": [
+      "https://developers.google.com/identity/sign-in/android/",
+      "https://developers.google.com/+/features/play-installs",
+      "https://developers.google.com/+/features/analytics"
+    ]
+  },
+  "distribute/users/houseads": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/admob/topic/2784623",
+      "https://developers.google.com/mobile-ads-sdk/download",
+      "https://support.google.com/googleplay/android-developer/topic/2985714",
+      "https://analyticsacademy.withgoogle.com/mobile-app",
+      "https://support.google.com/analytics/answer/2611404",
+      "https://support.google.com/admob/answer/3111064"
+    ]
+  },
+  "distribute/users/youtube": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/youtube/answer/6140493",
+      "https://support.google.com/youtube/answer/2797387"
+    ]
+  },
+  "distribute/toolsreference/bestpractices/apps": {
+    "title": "",
+    "resources": [
+      "distribute/googleplay/developer-console.html",
+      "https://android-developers.blogspot.com/"
+    ]
+  },
+  "distribute/toolsreference/bestpractices/games": {
+    "title": "",
+    "resources": [
+      "google/play-services/games.html",
+      "https://android-developers.blogspot.com/",
+      "distribute/googleplay/developer-console.html",
+      "https://www.youtube.com/watch?v=1RIz-cmTQB4"
+    ]
+  },
+  "distribute/essentials/corequalityguidelines/visualdesign": {
+    "title": "",
+    "resources": [
+      "design/index.html",
+      "design/patterns/navigation.html",
+      "design/patterns/actionbar.html",
+      "design/style/iconography.html",
+      "design/patterns/notifications.html"
+    ]
+  },
+  "distribute/essentials/corequalityguidelines/functionality": {
+    "title": "",
+    "resources": [
+      "https://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html",
+      "guide/components/tasks-and-back-stack.html",
+      "training/basics/activity-lifecycle/recreating.html"
+    ]
+  },
+  "distribute/essentials/tvqualityguidelines/visualdesign": {
+    "title": "",
+    "resources": [
+      "design/tv/index.html",
+      "training/tv/start/index.html"
+    ]
+  },
+  "distribute/essentials/tvqualityguidelines/functionality": {
+    "title": "",
+    "resources": [
+      "training/tv/start/hardware.html",
+      "training/tv/games/index.html"
+    ]
+  },
+  "distribute/essentials/wearqualityguidelines/visualdesign": {
+    "title": "",
+    "resources": [
+      "design/wear/index.html",
+      "training/building-wearables.html",
+      "training/wearables/ui/index.html"
+    ]
+  },
+  "distribute/essentials/wearqualityguidelines/functionality": {
+    "title": "",
+    "resources": [
+      "training/wearables/notifications/index.html",
+      "training/wearables/apps/index.html",
+      "training/wearables/notifications/voice-input.html"
+    ]
+  },
+  "distribute/essentials/autoqualityguidelines/visualdesign": {
+    "title": "",
+    "resources": [
+      "training/auto/messaging/index.html",
+      "training/auto/start/index.html"
+    ]
+  },
+  "distribute/essentials/core/performance": {
+    "title": "",
+    "resources": [
+      "https://android-developers.blogspot.com/2010/12/new-gingerbread-api-strictmode.html",
+      "training/articles/perf-anr.html",
+      "https://android-developers.blogspot.com/2010/07/multithreading-for-performance.html"
+    ]
+  },
+  "distribute/essentials/core/play": {
+    "title": "",
+    "resources": [
+      "distribute/tools/launch-checklist.html",
+      "https://play.google.com/about/developer-content-policy.html",
+      "https://support.google.com/googleplay/android-developer/answer/188189",
+      "https://support.google.com/googleplay/android-developer/answer/1078870",
+      "https://android-developers.blogspot.com/2011/10/android-market-featured-image.html",
+      "https://support.google.com/googleplay/android-developer/answer/113477"
+    ]
+  },
+  "distribute/essentials/tabletguidelines/optimize": {
+    "title": "",
+    "resources": [
+      "design/style/metrics-grids.html",
+      "design/style/devices-displays.html",
+      "guide/practices/screens_support.html",
+    ]
+  },
+  "distribute/essentials/tabletguidelines/extrascreen": {
+    "title": "",
+    "resources": [
+      "design/patterns/multi-pane-layouts.html",
+      "training/design-navigation/multiple-sizes.html",
+      "training/multiscreen/index.html",
+    ]
+  },
+  "distribute/essentials/tabletguidelines/assets": {
+    "title": "",
+    "resources": [
+      "design/style/iconography.html",
+      "guide/topics/resources/providing-resources.html",
+      "guide/practices/screens_support.html",
+      "training/basics/supporting-devices/screens.html"
+    ]
+  },
+  "distribute/essentials/tabletguidelines/fonts": {
+    "title": "",
+    "resources": [
+      "design/style/metrics-grids.html",
+      "design/style/typography.html",
+      "guide/practices/screens_support.html",
+      "training/multiscreen/screendensities.html"
+    ]
+  },
+  "distribute/essentials/tabletguidelines/widgets": {
+    "title": "",
+    "resources": [
+      "guide/topics/appwidgets/index.html#MetaData",
+      "guide/topics/appwidgets/index.html",
+      "design/patterns/widgets.html"
+    ]
+  },
+  "distribute/essentials/tabletguidelines/versions": {
+    "title": "",
+    "resources": [
+      "guide/topics/manifest/uses-sdk-element.html#ApiLevels",
+      "guide/topics/manifest/uses-sdk-element.html",
+      "training/basics/supporting-devices/platforms.html"
+    ]
+  },
+  "distribute/essentials/tabletguidelines/hardware": {
+    "title": "",
+    "resources": [
+      "guide/topics/manifest/uses-feature-element.html",
+      "guide/topics/manifest/uses-feature-element.html#testing"
+    ]
+  },
+  "distribute/essentials/tabletguidelines/tabletscreens": {
+    "title": "",
+    "resources": [
+      "guide/practices/screens_support.html#DeclaringScreenSizeSupport",
+      "guide/practices/screens_support.html"
+    ]
+  },
+  "distribute/essentials/tabletguidelines/showcase": {
+    "title": "",
+    "resources": [
+      "distribute/tools/launch-checklist.html",
+      "https://play.google.com/apps/publish/",
+      "https://play.google.com/intl/en_us/badges/",
+      "distribute/tools/promote/device-art.html"
+    ]
+  },
+  "distribute/essentials/tabletguidelines/googleplay": {
+    "title": "",
+    "resources": [
+      "https://android-developers.blogspot.com/2013/10/more-visibility-for-tablet-apps-in.html",
+      "google/play/filters.html"
+    ]
+  },
+  "distribute/essentials/tabletguidelines": {
+    "title": "",
+    "resources": [
+      "distribute/essentials/quality/core.html",
+      "https://android-developers.blogspot.com/2013/10/more-visibility-for-tablet-apps-in.html",
+      "distribute/tools/launch-checklist.html",
+      "distribute/tools/promote/device-art.html"
+    ]
+  },
+  "distribute/getusers/notifications": {
+    "title": "",
+    "resources": [
+      "design/patterns/notifications.html",
+      "distribute/engage/gcm.html",
+      "https://play.google.com/about/developer-content-policy.html"
+    ]
+  },
+  "distribute/engage/analytics": {
+    "title": "",
+    "resources": [
+      "https://www.google.com/analytics/mobile/",
+      "https://android-developers.blogspot.com/2013/10/improved-app-insight-by-linking-google.html",
+      "https://developers.google.com/analytics/devguides/collection/android/"
+    ]
+  },
+  "distribute/engage/widgets": {
+    "title": "",
+    "resources": [
+      "design/patterns/widgets.html",
+      "guide/topics/appwidgets/index.html"
+    ]
+  },
+  "distribute/engage/reengage": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/adwords/answer/6032073",
+      "distribute/engage/deep-linking.html",
+      "https://support.google.com/adwords/answer/6167162",
+      "distribute/users/promote-with-ads.html"
+    ]
+  },
+  "distribute/engage/appindexing": {
+    "title": "",
+    "resources": [
+      "distribute/engage/intents.html",
+      "distribute/engage/deep-linking.html",
+      "training/app-indexing/index.html"
+    ]
+  },
+  "distribute/engage/intents": {
+    "title": "",
+    "resources": [
+      "guide/components/intents-filters.html",
+      "distribute/engage/deep-linking.html",
+      "distribute/engage/ads.html"
+    ]
+  },
+  "distribute/getusers/expandnewmarkets": {
+    "title": "",
+    "resources": [
+      "distribute/tools/localization-checklist.html",
+      "https://support.google.com/googleplay/android-developer/table/3541286",
+      "distribute/stories/localization.html",
+      "https://play.google.com/intl/en_us/badges/",
+      "distribute/tools/promote/device-art.html",
+      "https://www.youtube.com/watch?v=SkHHPf3EdzE"
+    ]
+  },
+  "distribute/engage/gcm": {
+    "title": "",
+    "resources": [
+      "https://developers.google.com/cloud-messaging/gcm",
+      "https://developers.google.com/cloud-messaging/android/client",
+    ]
+  },
+  "distribute/engage/gamesservices/related": {
+    "title": "",
+    "resources": [
+      "https://developers.google.com/games/services/",
+      "distribute/analyze/start.html",
+      "distribute/googleplay/cardboard.html",
+      "https://www.google.com/admob/"
+    ]
+  },
+  "distribute/engage/googleplaygames": {
+    "title": "",
+    "resources": [
+      "https://developers.google.com/games/services/",
+      "distribute/analyze/start.html",
+      "distribute/googleplay/cardboard.html",
+      "https://www.google.com/admob/"
+    ]
+  },
+  "distribute/engage/gplus": {
+    "title": "",
+    "resources": [
+      "distribute/users/ota-installs.html",
+      "https://developers.google.com/identity/sign-in/android/people",
+      "https://developers.google.com/+/mobile/android/"
+    ]
+  },
+  "distribute/engage/community": {
+    "title": "",
+    "resources": [
+      "distribute/users/build-community.html",
+      "distribute/engage/video.html"
+    ]
+  },
+  "distribute/engage/deeplinks": {
+    "title": "",
+    "resources": [
+      "distribute/engage/easy-signin.html",
+      "https://developers.google.com/app-indexing/",
+      "https://developers.google.com/+/mobile/android/share/interactive-post"
+    ]
+  },
+  "distribute/engage/appupdates": {
+    "title": "",
+    "resources": [
+      "distribute/essentials/optimizing-your-app.html",
+      "distribute/tools/launch-checklist.html",
+      "distribute/googleplay/developer-console.html",
+      "design/patterns/notifications.html"
+    ]
+  },
+  "distribute/engage/video/more": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/yt/dev/",
+      "distribute/essentials/best-practices/games.html",
+      "https://www.youtube.com/watch?v=RRelFvc6Czo"
+    ]
+  },
+  "distribute/engage/community": {
+    "title": "",
+    "resources": [
+      "distribute/users/build-community.html",
+      "distribute/engage/video.html"
+    ]
+  },
+  "distribute/engage/kiwi": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/watch?v=WWArLD6nqrk"
+    ]
+  },
+  "distribute/toolsreference/gpfefaq": {
+    "title": "",
+    "resources": [
+      "https://www.google.com/edu/tablets/",
+      "distribute/googleplay/edu/start.html",
+      "https://play.google.com/about/developer-distribution-agreement-addendum.html",
+      "distribute/essentials/quality/core.html",
+      "distribute/essentials/quality/tablets.html"
+    ]
+  },
+  "distribute/toolsreference/localizationchecklist/identifylocales": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/googleplay/android-developer/answer/138294"
+    ]
+  },
+  "distribute/tools/loc/designforloc": {
+    "title": "",
+    "resources": [
+      "https://android-developers.blogspot.com/2013/03/native-rtl-support-in-android-42.html",
+      "guide/topics/resources/string-resource.html#Plurals",
+      "guide/topics/resources/string-resource.html",
+      "reference/java/util/Locale.html"
+    ]
+  },
+  "distribute/toolsreference/localizationchecklist/managestrings": {
+    "title": "",
+    "resources": [
+      "guide/topics/resources/string-resource.html",
+      "design/style/writing.html",
+      "https://en.wikipedia.org/wiki/XLIFF"
+    ]
+  },
+  "distribute/toolsreference/localizationchecklist/translatestrings": {
+    "title": "",
+    "resources": [
+      "distribute/stories/localization.html",
+    ]
+  },
+  "distribute/toolsreference/localizationchecklist/preplaunch": {
+    "title": "",
+    "resources": [
+      "https://play.google.com/intl/en_us/badges/",
+      "distribute/tools/promote/device-art.html"
+    ]
+  },
+  "distribute/toolsreference/localizationchecklist/supportlaunch": {
+    "title": "",
+    "resources": [
+      "distribute/tools/launch-checklist.html",
+    ]
+  },
+  "distribute/toolsreference/launchchecklist/understanding": {
+    "title": "",
+    "resources": [
+      "tools/publishing/publishing_overview.html",
+      "tools/publishing/preparing.html"
+    ]
+  },
+  "distribute/toolsreference/launchchecklist/policies": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/googleplay/android-developer/answer/4430948",
+      "https://support.google.com/googleplay/android-developer/topic/2364761",
+      "https://support.google.com/googleplay/android-developer"
+    ]
+  },
+  "distribute/toolsreference/launchchecklist/quality": {
+    "title": "",
+    "resources": [
+      "distribute/essentials/quality/core.html",
+      "distribute/essentials/quality/tablets.html",
+      "https://developers.google.com/edu/guidelines"
+    ]
+  },
+  "distribute/toolsreference/launchchecklist/rating": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/googleplay/android-developer/answer/188189",
+    ]
+  },
+  "distribute/toolsreference/launchchecklist/country": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/googleplay/android-developer/answer/138294"
+    ]
+  },
+  "distribute/toolsreference/launchchecklist/size": {
+    "title": "",
+    "resources": [
+      "google/play/expansion-files.html",
+      "tools/help/proguard.html"
+    ]
+  },
+  "distribute/toolsreference/launchchecklist/platform": {
+    "title": "",
+    "resources": [
+      "guide/practices/screens_support.html",
+      "about/dashboards/index.html",
+      "guide/topics/manifest/uses-sdk-element.html"
+    ]
+  },
+  "distribute/toolsreference/launchchecklist/price": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/googleplay/android-developer/table/3541286",
+    ]
+  },
+  "distribute/toolsreference/launchchecklist/purchasemethod": {
+    "title": "",
+    "resources": [
+      "google/play/billing/index.html",
+      "google/play/billing/billing_subscriptions.html"
+    ]
+  },
+  "distribute/toolsreference/launchchecklist/setprice": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/googleplay/android-developer/answer/1169947",
+      "https://support.google.com/googleplay/android-developer/answer/138412",
+      "https://support.google.com/googleplay/android-developer/answer/112622",
+      "https://support.google.com/googleplay/android-developer/answer/138000"
+    ]
+  },
+  "distribute/toolsreference/launchchecklist/localization": {
+    "title": "",
+    "resources": [
+      "distribute/tools/localization-checklist.html",
+      "guide/topics/resources/localization.html",
+    ]
+  },
+  "distribute/toolsreference/launchchecklist/graphics": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/googleplay/android-developer/answer/1078870",
+      "https://android-developers.blogspot.com/2011/10/android-market-featured-image.html"
+    ]
+  },
+  "distribute/toolsreference/launchchecklist/productdetails": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/googleplay/android-developer/answer/113475",
+      "https://support.google.com/googleplay/android-developer/answer/1078870"
+    ]
+  },
+  "distribute/toolsreference/launchchecklist/badges": {
+    "title": "",
+    "resources": [
+      "https://play.google.com/intl/en_us/badges/",
+      "distribute/tools/promote/linking.html"
+    ]
+  },
+  "distribute/toolsreference/launchchecklist/finalchecks": {
+    "title": "",
+    "resources": [
+      "https://play.google.com/about/developer-content-policy.html",
+      "https://support.google.com/googleplay/android-developer/answer/113476",
+      "support.html"
+    ]
+  },
+  "distribute/toolsreference/launchchecklist/afterlaunch": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/googleplay/android-developer/answer/113477",
+      "https://support.google.com/googleplay/android-developer/answer/1153479",
+      "https://support.google.com/payments/answer/2741495",
+      "distribute/essentials/optimizing-your-app.html"
+    ]
+  },
+  "distribute/monetize/premium": {
+    "title": "",
+    "resources": [
+      "google/play/billing/index.html",
+      "https://support.google.com/googleplay/android-developer/answer/4407611"
+    ]
+  },
+  "distribute/monetize/freemium": {
+    "title": "",
+    "resources": [
+      "google/play/billing/index.html",
+      "https://support.google.com/googleplay/android-developer/answer/4407611"
+    ]
+  },
+  "distribute/monetize/subscriptions": {
+    "title": "",
+    "resources": [
+      "google/play/billing/billing_subscriptions.html",
+      "https://support.google.com/googleplay/android-developer/answer/4407611"
+    ]
+  },
+  "distribute/monetize/ecommerce": {
+    "title": "",
+    "resources": [
+      "https://developers.google.com/wallet/instant-buy/",
+      "https://support.google.com/googleplay/android-developer/answer/4407611"
+    ]
+  },
+  "distribute/monetize/advertising": {
+    "title": "",
+    "resources": [
+      "https://www.google.com/ads/admob/#subid=us-en-et-dac",
+      "https://www.google.com/doubleclick/publishers/small-business/index.html",
+      "https://support.google.com/googleplay/android-developer/topic/2985714",
+      "training/monetization/ads-and-ux.html"
+    ]
+  },
+  "distribute/monetize/admob": {
+    "title": "",
+    "resources": [
+      "https://support.google.com/admob/topic/2784623",
+      "https://admob.blogspot.com/",
+      "https://analyticsacademy.withgoogle.com/mobile-app",
+    ]
+  },
+  "distribute/monetize/paymentmethods": {
+    "title": "",
+    "resources": [
+      "https://play.google.com/about/giftcards/",
+      "https://support.google.com/googleplay/answer/2651410"
+    ]
+  },
+  "autolanding": {
+    "title": "",
+    "resources": [
+      "auto/index.html",
+      "design/auto/index.html",
+      "training/auto/index.html"
+    ]
+  },
+  "tvlanding": {
+    "title": "",
+    "resources": [
+      "tv/index.html",
+      "design/tv/index.html",
+      "training/tv/index.html"
+    ]
+  },
+  "wearlanding": {
+    "title": "",
+    "resources": [
+      "design/wear/index.html",
+      "training/building-wearables.html",
+      "training/wearables/ui/index.html"
+    ]
+  },
+  "design/auto/auto_ui_guidelines": {
+    "title": "",
+    "resources": [
+      "shareables/auto/AndroidAuto-audio-apps.pdf",
+      "shareables/auto/AndroidAuto-messaging-apps.pdf",
+      "shareables/auto/AndroidAuto-custom-colors.pdf"
+    ]
+  },
+  "training/auto/overview": {
+    "title": "",
+    "resources": [
+      "training/auto/start/index.html",
+      "design/auto/index.html",
+      "shareables/auto/AndroidAuto-custom-colors.pdf"
+    ]
+  },
+  "training/auto/messaging": {
+    "title": "",
+    "resources": [
+      "training/auto/messaging/index.html",
+      "shareables/auto/AndroidAuto-messaging-apps.pdf",
+      "samples/MessagingService/index.html"
+    ]
+  },
+  "training/auto/media": {
+    "title": "",
+    "resources": [
+      "training/auto/audio/index.html",
+      "shareables/auto/AndroidAuto-audio-apps.pdf",
+      "samples/MediaBrowserService/index.html"
+    ]
+  },
+  "training/auto/distribute": {
+    "title": "",
+    "resources": [
+      "distribute/essentials/quality/auto.html",
+      "distribute/googleplay/auto.html"
+    ]
+  },
+  "distribute/stories/games": {
+    "title": "",
+    "resources": [
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_Deerhunter2014_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/ConcreteSoftware_PBABowling_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/Dragonplay_DragonplaySlots_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/Gameloft_Asphalt8_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/Glu_EternityWarriors3_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/HotheadGames_RivalsatWar_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/TMSOFT_Compulsive_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/Noodlecake_SuperStickmanGolf2_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/TinyRebel_DoctorWhoLegacy_gpgs.pdf",
+      "https://storage.googleapis.com/androiddevelopers/shareables/stories/Senri_LeosFortune_gpgs.pdf"
+    ]
+  },
+  "training/testing/overview": {
+    "title": "",
+    "resources": [
+      "training/testing/start/index.html",
+      "tools/testing/testing_android.html",
+      "https://www.youtube.com/watch?v=vdasFFfXKOY"
+    ]
+  },
+  "training/testing/tools": {
+    "title": "",
+    "resources": [
+      "tools/testing-support-library/index.html",
+      "tools/help/monkey.html",
+      "tools/help/monkeyrunner_concepts.html",
+      "tools/testing/testing_otheride.html",
+      "https://source.android.com/devices/tech/debug/dumpsys.html"
+    ]
+  },
+  "training/testing/techniques": {
+    "title": "",
+    "resources": [
+      "training/testing/ui-testing/index.html",
+      "training/testing/unit-testing/index.html",
+      "training/testing/performance.html"
+    ]
+  },
+  "training/testing/resources": {
+    "title": "",
+    "resources": [
+      "https://github.com/googlesamples/android-testing",
+      "https://www.youtube.com/watch?v=2I6fuD20qlY",
+      "https://codelabs.developers.google.com/codelabs/android-testing/index.html",
+      "https://github.com/googlesamples/android-testing-templates",
+      "https://google.github.io/android-testing-support-library"
+    ]
+  },
+  "overview/1": {
+    "title": "",
+    "resources": [
+      "distribute/essentials/quality/core.html",
+      "distribute/essentials/quality/tablets.html",
+      "distribute/tools/launch-checklist.html",
+      "tools/publishing/publishing_overview.html",
+      "distribute/tools/localization-checklist.html"
+    ]
+  },
+  "overview/2": {
+    "title": "",
+    "resources": [
+      "google/play/billing/index.html",
+      "google/play/billing/api.html",
+      "google/play/billing/billing_admin.html",
+      "google/play/billing/billing_testing.html",
+      "google/play/billing/billing_best_practices.html"
+    ]
+  },
+  "overview/3": {
+    "title": "",
+    "resources": [
+      "https://play.google.com/intl/en_us/badges/",
+      "distribute/tools/promote/device-art.html",
+      "distribute/tools/promote/linking.html",
+      "distribute/tools/promote/brand.html",
+      "tools/help/proguard.html"
+    ]
+  },
+  "overview/4": {
+    "title": "",
+    "resources": [
+      "design/style/writing.html",
+      "training/basics/fragments/fragment-ui.html",
+      "training/multiscreen/index.html",
+      "training/monitoring-device-state/index.html"
+    ]
+  },
+  "training/work/apps": {
+    "title": "",
+    "resources": [
+      "training/enterprise/app-compatibility.html",
+      "training/enterprise/app-restrictions.html",
+      "https://www.youtube.com/watch?v=39NkpWkaH8M&index=2&list=PLOU2XLYxmsIKAK2Bhv19H2THwF-22O5WX",
+      "samples/AppRestrictionSchema/index.html",
+      "samples/AppRestrictionEnforcer/index.html",
+      "https://www.youtube.com/watch?v=dH41OutAMNM"
+    ]
+  },
+  "training/work/admin": {
+    "title": "",
+    "resources": [
+      "training/enterprise/work-policy-ctrl.html",
+      "samples/BasicManagedProfile/index.html",
+      "https://www.youtube.com/watch?v=j3QC6hcpy90"
+    ]
+  },
+  "tools/performance/rendering": {
+    "title": "",
+    "resources": [
+      "tools/performance/debug-gpu-overdraw/index.html",
+      "tools/performance/profile-gpu-rendering/index.html",
+      "tools/performance/hierarchy-viewer/setup.html",
+      "tools/performance/hierarchy-viewer/index.html",
+      "tools/performance/hierarchy-viewer/profiling.html"
+    ]
+  },
+  "tools/performance/memory": {
+    "title": "",
+    "resources": [
+      "tools/performance/memory-monitor/index.html",
+      "tools/performance/heap-viewer/index.html",
+      "tools/performance/allocation-tracker/index.html",
+      "tools/performance/comparison.html"
+    ]
+  },
+  "tools/performance/cpu": {
+    "title": "",
+    "resources": [
+      "tools/performance/traceview/index.html",
+      "tools/performance/systrace/index.html"
+    ]
+  },
+  "tools/performance/battery": {
+    "title": "",
+    "resources": [
+      "tools/performance/batterystats-battery-historian/index.html",
+      "tools/performance/batterystats-battery-historian/charts.html"
+    ]
+  },
+  "marshmallow/landing/resources": {
+    "title": "",
+    "resources": [
+      "about/versions/marshmallow/android-6.0-changes.html",
+      "about/versions/marshmallow/android-6.0.html",
+      "about/versions/marshmallow/samples.html"
+    ]
+  },
+  "marshmallow/landing/videos": {
+    "title": "",
+    "resources": [
+      "https://youtu.be/U9tw5ypqEN0",
+      "https://youtu.be/N72ksDKrX6c",
+      "https://youtu.be/iZqDdvhTZj0",
+      "https://www.youtube.com/watch?v=vcSj8ln-BlE",
+      "https://youtu.be/LQoohRwojmw",
+      "https://www.youtube.com/watch?v=VOn7VrTRlA4",
+      "https://youtu.be/5sCQjeGoE7M",
+      "https://www.youtube.com/watch?v=C8lUdPVSzDk",
+      "https://www.youtube.com/watch?v=HXacyy0HSW0",
+      "https://www.youtube.com/watch?v=OW1A4XFRuyc",
+      "https://www.youtube.com/watch?v=j3QC6hcpy90",
+      "https://www.youtube.com/watch?v=f17qe9vZ8RM",
+      "https://www.youtube.com/watch?v=ndBdf1_oOGA"
+    ]
+  },
+  "marshmallow/landing/more": {
+    "title": "",
+    "resources": [
+      "training/permissions/requesting.html",
+      "training/backup/autosyncapi.html",
+      "training/monitoring-device-state/doze-standby.html",
+      "training/app-links/index.html",
+      "training/articles/assistant.html",
+      "training/testing/performance.html",
+      "https://developers.google.com/android/nexus/images"
+    ]
+  },
+  "tools/landing/carousel": {
+    "title": "",
+    "resources": [
+    "panel1",
+    "panel2",
+    "panel3",
+    "panel4",
+    ]
+  },
+  "tools/landing/resources": {
+    "title": "",
+    "resources": [
+    "tools/studio/index.html",
+    "tools/studio/studio-features.html",
+    "sdk/installing/studio-tips.html",
+    ]
+  },
+  "preview/landing/resources": {
+    "title": "",
+    "resources": [
+      "preview/overview.html",
+      "preview/api-overview.html",
+      "preview/behavior-changes.html",
+      "preview/setup-sdk.html",
+      "preview/samples.html",
+      "preview/support.html"
+    ]
+  },
+  "preview/landing/more": {
+    "title": "",
+    "resources": [
+      "preview/features/multi-window.html",
+      "preview/features/notification-updates.html",
+      "preview/features/background-optimization.html",
+      "preview/features/data-saver.html",
+      "preview/features/direct-boot.html",
+      "preview/features/icu4j-framework.html",
+      "preview/features/multilingual-support.html",
+      "preview/features/scoped-folder-access.html",
+      "preview/features/picture-in-picture.html",
+      "preview/features/tv-recording-api.html"
+    ]
+  }
+};
+
+/**
+ * Static search results.
+ */
+METADATA['en'].searchHeroCollections = {
+  "material": {
+    "title":"Material Design for Android",
+    "category":"",
+    "summary":"Material design is a comprehensive guide for visual, motion, and interaction design across platforms and devices. Android now includes support for material design apps.",
+    "url":"design/material/index.html",
+    "group":"",
+    "keywords": ["material","design"],
+    "tags": ["material","design"],
+    "image":"images/cards/design-material-for-android_2x.jpg",
+    "lang":"en",
+    "type":"design"
+  }
+};
diff --git a/docs/html/jd_extras_es.js b/docs/html/jd_extras_es.js
new file mode 100644
index 0000000..7ced259
--- /dev/null
+++ b/docs/html/jd_extras_es.js
@@ -0,0 +1,13 @@
+
+//must use intl/nn to override translated resources
+METADATA['es'].carousel = {
+  "intl/es/distribute/googleplay/guide.html": {
+    "image": "images/distribute/hero-secrets-to-app-success.jpg",
+  },
+};
+
+/**
+ * Static metadata collections for this language.
+ */
+METADATA['es'].collections = {
+};
\ No newline at end of file
diff --git a/docs/html/jd_extras_ja.js b/docs/html/jd_extras_ja.js
new file mode 100644
index 0000000..390c23c
--- /dev/null
+++ b/docs/html/jd_extras_ja.js
@@ -0,0 +1,185 @@
+/* Metadata represendations of resources that are outside of the autogenerated
+   local resource lists, or that override local resource representations.
+
+   Resources listed here are referenced from sitemap sections and collections,
+   matched by url string if there is no resource existing in ALL_RESOURCES.
+
+   Currently, these articles can override only the generated resources
+   in DISTRIBUTE_RESOURCES. A representation defined here will not be applied
+   when a collection or section specifies a url that's not in DISTRIBUTE_RESOURCEs.
+   Also
+   So if a section url refers to a static doc that's
+   not in a distribute section, you need to create an item for
+   it in this file. Fix is to compare across
+   ALL_RESOURCES_BY_URL.  */
+
+METADATA['ja'].extras = METADATA['ja'].extras.concat([
+ /* TODO Remove standard resources from here, such as below
+ */
+  {
+    "lang": "ja",
+    "title": "Gaming Everywhere",
+    "category": "",
+    "summary": "東京ゲームショウ 2014 の基調講演より。",
+    "url": "https://www.youtube.com/watch?v=xelYnWcYkuE",
+    "group": "",
+    "keywords": [],
+    "tags": [],
+    "image": "https://img.youtube.com/vi/xelYnWcYkuE/hqdefault.jpg",
+    "type": "youtube"
+  },
+  {
+    "lang": "ja",
+    "title": "Playtime Tokyo",
+    "category": "",
+    "summary": "アプリビジネスのノウハウを各担当者が講演しました。",
+    "url": "https://www.youtube.com/playlist?list=PLCOC_kP3nqGIHEgwm9mybvA04Vn4Cg9nn",
+    "group": "",
+    "keywords": [],
+    "tags": [],
+    "image": "https://img.youtube.com/vi/lJdjY3z6-LY/hqdefault.jpg",
+    "type": "youtube"
+  },
+  {
+    "lang": "ja",
+    "title": "Android Wear 関連の動画に日本語字幕が付きました",
+    "category": "",
+    "summary": "",
+    "url": "https://googledevjp.blogspot.jp/2014/12/android-wear.html",
+    "group": "",
+    "keywords": [],
+    "tags": [],
+    "image": "https://i1.ytimg.com/vi/4JcDYkgqksY/maxresdefault.jpg",
+    "type": "blog"
+  },
+  {
+    "lang": "ja",
+    "title": "Android Studio 1.0 をリリースしました",
+    "category": "",
+    "summary": "",
+    "url": "https://googledevjp.blogspot.jp/2014/12/android-studio-10.html",
+    "group": "",
+    "keywords": [],
+    "tags": [],
+    "image": "https://3.bp.blogspot.com/-1hV3sD1At74/VIaQSWBasUI/AAAAAAAABAU/9vYLJMsmMuQ/s1600/studio-logo.png",
+    "type": "blog"
+  },
+  {
+    "lang": "ja",
+    "title": "Google Play 開発者サービス 6.5 のご紹介",
+    "category": "",
+    "summary": "",
+    "url": "https://googledevjp.blogspot.jp/2014/12/google-play-65.html",
+    "group": "",
+    "keywords": [],
+    "tags": [],
+    "image": "https://1.bp.blogspot.com/-4BNREC0Jojo/VGo7ahW35wI/AAAAAAAABAc/9thZl94F6fY/s1600/GMS%2B-%2BRelease%2BBlog%2BNacho%2B-%2BMap%2BToolbar.png",
+    "type": "blog"
+  },
+  {
+    "lang": "ja",
+    "title": "Alpha and Beta Testing",
+    "category": "",
+    "summary": "アプリのローンチにまつわるリスクを最小限にするために必須のツールです。[英語コンテンツ]",
+    "url": "intl/ja/distribute/googleplay/developer-console.html#alpha-beta",
+    "group": "",
+    "keywords": [],
+    "tags": [],
+    "image": "images/gp-dc-ab.png",
+    "type": "distribute"
+  },
+  {
+    "lang": "ja",
+    "title": "Finding Success on Google Play",
+    "category": "",
+    "summary": "Google Play での成功の秘訣がこの一冊に。[英語コンテンツ]",
+    "url": "intl/ja/distribute/googleplay/guide.html",
+    "group": "",
+    "keywords": [],
+    "tags": [],
+    "image": "distribute/images/play_dev_guide_b.jpg",
+    "type": "distribute"
+  },
+  {
+    "lang": "ja",
+    "title": "Google Play アプリ ポリシー センター",
+    "category": "",
+    "summary": "",
+    "url": "https://support.google.com/googleplay/android-developer/answer/4430948?hl=ja",
+    "group": "",
+    "keywords": [],
+    "tags": [],
+    "image": "https://storage.googleapis.com/support-kms-prod/SNP_712EA2784949DDF085C46E3BE7B1DC618A09_4389356_en_v0",
+    "type": "distribute"
+  },
+  {
+    "lang": "ja",
+    "title": "Wear App Quality",
+    "category": "",
+    "summary": "いよいよウェアラブルの時代が到来。[英語コンテンツ]",
+    "url": "intl/ja/distribute/essentials/quality/wear.html",
+    "group": "",
+    "keywords": [],
+    "tags": [],
+    "image": "distribute/images/gp-wear-quality.png",
+    "type": "distribute"
+  },
+  {
+    "lang": "ja",
+    "title": "Google Cloud Platform が支える、新感覚リアルタイム RPG ユニゾンリーグ - 株式会社エイチームの GCP 導入事例",
+    "category": "",
+    "summary": "スケーラブルなバックエンドを実現する Google Cloud Platform の最新導入事例。",
+    "url": "https://googleforwork-japan.blogspot.jp/2014/12/gcp-google-cloud-platform-rpg-gcp.html",
+    "group": "",
+    "keywords": [],
+    "tags": [],
+    "image": "https://3.bp.blogspot.com/-xp7KoPkbne4/VI_PfoFil3I/AAAAAAAAA3U/-k1UZ0zjCBc/s1600/unison-league.jpeg",
+    "type": "distribute"
+  },
+  {
+    "lang": "ja",
+    "title": "Monetize with Ads",
+    "category": "",
+    "summary": "アプリ内広告成功のコツがここに。[英語コンテンツ]",
+    "url": "intl/ja/distribute/monetize/ads.html",
+    "group": "",
+    "keywords": [],
+    "tags": [],
+    "image": "distribute/images/advertising.jpg",
+    "type": "distribute"
+  },
+]);
+
+//must use intl/nn url to override a translated resource
+METADATA['ja'].carousel = {
+  "intl/ja/distribute/googleplay/guide.html": {
+    "image": "images/distribute/hero-secrets-to-app-success.jpg",
+    "title": "Secrets to App Success on Google Play",
+    "summary": "Get the updated guide full of useful features, tips, and best practices that will help you grow a successful app or game business on Google Play.",
+  },
+};
+
+/**
+ * Static metadata collections.
+ */
+METADATA['ja'].collections = {
+  "launch/static/ja": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/watch?v=xelYnWcYkuE",
+      "https://www.youtube.com/playlist?list=PLCOC_kP3nqGIHEgwm9mybvA04Vn4Cg9nn",
+      "https://googledevjp.blogspot.jp/2014/12/android-wear.html",
+      "https://googledevjp.blogspot.jp/2014/12/android-studio-10.html",
+      "https://googledevjp.blogspot.jp/2014/12/google-play-65.html",
+      "distribute/googleplay/developer-console.html#alpha-beta",
+      "distribute/googleplay/guide.html",
+      "distribute/essentials/quality/core.html",
+      "https://support.google.com/googleplay/android-developer/answer/4430948?hl=ja",
+      "support.html",
+      "distribute/essentials/quality/wear.html",
+      "training/tv/start/index.html",
+      "https://googleforwork-japan.blogspot.jp/2014/12/gcp-google-cloud-platform-rpg-gcp.html",
+      "distribute/monetize/ads.html"
+    ]
+  },
+};
\ No newline at end of file
diff --git a/docs/html/jd_extras_ko.js b/docs/html/jd_extras_ko.js
new file mode 100644
index 0000000..8d9059c
--- /dev/null
+++ b/docs/html/jd_extras_ko.js
@@ -0,0 +1,120 @@
+/* Metadata represendations of resources that are outside of the autogenerated
+   local resource lists, or that override local resource representations.
+
+   Resources listed here are referenced from sitemap sections and collections,
+   matched by url string if there is no resource existing in ALL_RESOURCES.
+
+   Currently, these articles can override only the generated resources
+   in DISTRIBUTE_RESOURCES. A representation defined here will not be applied
+   when a collection or section specifies a url that's not in DISTRIBUTE_RESOURCEs.
+   Also
+   So if a section url refers to a static doc that's
+   not in a distribute section, you need to create an item for
+   it in this file. Fix is to compare across
+   ALL_RESOURCES_BY_URL.  */
+
+METADATA['ko'].extras = METADATA['ko'].extras.concat([
+ /* TODO Remove standard resources from here, such as below
+ */
+  {
+    "lang": "ko",
+    "title": "구글 플레이 2015년 비전",
+    "category": "",
+    "summary": "G-Star 구글 컨퍼런스",
+    "url": "https://www.youtube.com/watch?v=7X9Ue0Nfdh4&index=2&list=PL_WJkTbDHdBksDBRoqfeyLchEQqBAOlNl",
+    "group": "",
+    "keywords": [],
+    "tags": [],
+    "image": "https://img.youtube.com/vi/7X9Ue0Nfdh4/hqdefault.jpg",
+    "type": "youtube"
+  },
+  {
+    "lang": "ko",
+    "title": "구글 플레이 게임",
+    "category": "",
+    "summary": "게임 프로필, 퀘스트, 세이브드 게임 등의 신기능 소개",
+    "url": "https://www.youtube.com/watch?v=83FpwuschCQ",
+    "group": "",
+    "keywords": [],
+    "tags": [],
+    "image": "https://img.youtube.com/vi/83FpwuschCQ/hqdefault.jpg",
+    "type": "youtube"
+  },
+  {
+    "lang": "ko",
+    "title": "안드로이드 5.0 롤리팝을 맞이하는 개발자를 위한 안내서",
+    "category": "",
+    "summary": "",
+    "url": "https://googledevkr.blogspot.com/2014/11/android50guidefordevelopers.html",
+    "group": "",
+    "keywords": [],
+    "tags": [],
+    "image": "https://lh5.googleusercontent.com/0Gx4Ob_WvIgNOMv3hVMuUm4O7KuSWyxCEFIvy39_6fgXh2q2azqjZf3bpZoEk-LMW-K8GwYMfyYfMUAwp38hhPQ6WFNnddhN2E2_GF3-XBQI_qjhISviz10h_mGgDWsZKA",
+    "type": "blog"
+  },
+  {
+    "lang": "ko",
+    "title": "안드로이드 앱을 위한 머티리얼 디자인 체크 리스트",
+    "category": "",
+    "summary": "",
+    "url": "https://googledevkr.blogspot.com/2014/10/material-design-on-android-checklist.html",
+    "group": "",
+    "keywords": [],
+    "tags": [],
+    "image": "https://lh4.googleusercontent.com/JKoxeDdmsj6gYHV8rmp96U1jHj7FKeMzGBaaFu35kXp5EpJR9Ei9MQFAYghjwJoycdgydw-FZTuFNY8pDx63MWhy37rKC96ajoDXEMzvo9W0sj5yC2-uSYJdhpazVOP2cA",
+    "type": "blog"
+  },
+  {
+    "lang": "ko",
+    "title": "App Compat 라이브러리",
+    "category": "",
+    "summary": "",
+    "url": "https://googledevkr.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html",
+    "group": "",
+    "keywords": [],
+    "tags": [],
+    "image": "https://2.bp.blogspot.com/-7fF9ayZ6PgI/U9iFpk5FNEI/AAAAAAAAAs0/4P4SCvdB_4M/s640/image00.png",
+    "type": "blog"
+  },
+  {
+    "lang": "ko",
+    "title": "구글 플레이 게임 서비스",
+    "category": "",
+    "summary": "다양한 구글 플레이 게임 서비스 기능 알아보기 [영문]",
+    "url": "intl/ko/google/play-services/games.html",
+    "group": "",
+    "keywords": [],
+    "tags": [],
+    "image": "https://developers.google.com/games/services/images/gamescreen3.jpg",
+    "type": "distribute"
+  },
+]);
+
+//must use intl/nn to override translated resources
+METADATA['ko'].carousel = {
+};
+
+/**
+ * Static metadata collections.
+ */
+METADATA['ko'].collections = {
+  "launch/static/ko": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/watch?v=7X9Ue0Nfdh4&index=2&list=PL_WJkTbDHdBksDBRoqfeyLchEQqBAOlNl",
+      "https://www.youtube.com/watch?v=83FpwuschCQ",
+      "https://googledevkr.blogspot.com/2014/11/android50guidefordevelopers.html",
+      "https://googledevkr.blogspot.com/2014/10/material-design-on-android-checklist.html",
+      "https://googledevkr.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html",
+      "distribute/googleplay/developer-console.html#alpha-beta",
+      "distribute/googleplay/guide.html",
+      "distribute/essentials/quality/core.html",
+      "https://support.google.com/googleplay/android-developer/answer/4430948?hl=ko",
+      "support.html",
+      "distribute/essentials/quality/wear.html",
+      "tv/index.html",
+      "google/play-services/games.html",
+      "distribute/monetize/ads.html"
+    ]
+  },
+};
\ No newline at end of file
diff --git a/docs/html/jd_extras_ru.js b/docs/html/jd_extras_ru.js
new file mode 100644
index 0000000..d6c873c
--- /dev/null
+++ b/docs/html/jd_extras_ru.js
@@ -0,0 +1,13 @@
+
+//must use intl/nn to override translated resources
+METADATA['ru'].carousel = {
+  "intl/ru/distribute/googleplay/guide.html": {
+    "image": "images/distribute/hero-secrets-to-app-success.jpg",
+  },
+};
+
+/**
+ * Static metadata collections for this language.
+ */
+METADATA['ru'].collections = {
+};
\ No newline at end of file
diff --git a/docs/html/jd_extras_zh-cn.js b/docs/html/jd_extras_zh-cn.js
new file mode 100644
index 0000000..cb1ccb7
--- /dev/null
+++ b/docs/html/jd_extras_zh-cn.js
@@ -0,0 +1,291 @@
+/* Metadata represendations of resources that are outside of the autogenerated
+ local resource lists, or that override local resource representations.
+
+ Resources listed here are referenced from sitemap sections and collections,
+ matched by url string if there is no resource existing in ALL_RESOURCES.
+
+ Currently, these articles can override only the generated resources
+ in DISTRIBUTE_RESOURCES. A representation defined here will not be applied
+ when a collection or section specifies a url that's not in DISTRIBUTE_RESOURCEs.
+ Also
+ So if a section url refers to a static doc that's
+ not in a distribute section, you need to create an item for
+ it in this file. Fix is to compare across
+ ALL_RESOURCES_BY_URL.  */
+
+
+
+METADATA['zh-cn'].extras = METADATA['zh-cn'].extras.concat([
+  {
+    "title":"Google Play应用政策中心",
+    "category":"google play",
+    "summary":"一个方便你了解Google Play政策和指南的中心资源。",
+    "url":"https://support.google.com/googleplay/android-developer/answer/4430948?hl=zh-Hans",
+    "group":"",
+    "lang":"zh-cn",
+    "keywords": [],
+    "tags": [],
+    "image":"http://storage.googleapis.com/support-kms-prod/SNP_712EA2784949DDF085C46E3BE7B1DC618A09_4389397_en_v0",
+    "type":"distribute"
+  },
+  {
+    "lang": "zh-cn",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/1169947?hl=zh-Hans",
+    "timestamp": 1194884220000,
+    "image": "images/play_dev.jpg",
+    "title": "以多种货币销售应用",
+    "summary": "如何在Google Play为应用定价",
+    "keywords": [],
+    "type": "distribute",
+    "category": "guide"
+  },
+  {
+    "title": "支持向Google Play用户发布应用的地区",
+    "lang": "zh-cn",
+    "category":"",
+    "summary": "支持向Google Play用户发布应用的国家/地区。",
+    "url":"https://support.google.com/googleplay/android-developer/answer/138294?hl=zh-Hans",
+    "group":"",
+    "keywords": [],
+    "tags": [],
+    "image":"images/play_dev.jpg",
+    "type":"google"
+  },
+  {
+    "lang": "zh-cn",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/188189?hl=zh-Hans",
+    "timestamp": 1194884220000,
+    "image": "images/play_dev.jpg",
+    "title": "针对Google Play为你的应用内容分级",
+    "summary": "如何为你的应用内容分级。",
+    "keywords": [],
+    "type": "support",
+    "category": ""
+  },
+  {
+    "lang": "zh-cn",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/113477?hl=zh-Hans",
+    "timestamp": 1194884220000,
+    "image": "images/play_dev.jpg",
+    "title": "为用户提供支持",
+    "summary": "为用户提供支持的各种选择。",
+    "keywords": [],
+    "type": "support",
+    "category": ""
+  },
+  {
+    "lang": "zh-cn",
+    "group": "",
+    "tags": [],
+    "url": "https://play.google.com/apps/publish/?hl=zh-Hans",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "Google Play 开发者控制台",
+    "summary": "发布应用的开发者控制台",
+    "keywords": [],
+    "type": "guide",
+    "category": ""
+  },
+  {
+    "lang": "zh-cn",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/topic/2364761?hl=zh-Hans",
+    "timestamp": 1194884220000,
+    "image": "images/play_dev.jpg",
+    "title": "政策和最佳做法",
+    "summary": "内容政策和流程",
+    "keywords": [],
+    "type": "distribute",
+    "category": ""
+  },
+  {
+    "lang": "zh-cn",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/138412?hl=zh-Hans",
+    "timestamp": 1194884220000,
+    "image": "images/play_dev.jpg",
+    "title": "各国家/地区获许定价范围和货币",
+    "summary": "各国家/地区获许定价范围和货币列表",
+    "keywords": [],
+    "type": "guide",
+    "category": ""
+  },
+  {
+    "lang": "zh-cn",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/112622?hl=zh-Hans",
+    "timestamp": 1194884220000,
+    "image": "images/play_dev.jpg",
+    "title": "交易费用",
+    "summary": "销售的应用和应用内产品的交易费。",
+    "keywords": [],
+    "type": "guide",
+    "category": ""
+  },
+  {
+    "lang": "zh-cn",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/138000?hl=zh-Hans",
+    "timestamp": 1194884220000,
+    "image": "images/play_dev.jpg",
+    "title": "税率",
+    "summary": "如何设置不同国家/地区的税率",
+    "keywords": [],
+    "type": "guide",
+    "category": ""
+  },
+  {
+    "lang": "zh-cn",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/113475?hl=zh-Hans",
+    "timestamp": 1194884220000,
+    "image": "images/play_dev.jpg",
+    "title": "类别",
+    "summary": "应用的类别列表。",
+    "keywords": [],
+    "type": "guide",
+    "category": ""
+  },
+  {
+    "lang": "zh-cn",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/113476?hl=zh-Hans",
+    "timestamp": 1194884220000,
+    "image": "images/play_dev.jpg",
+    "title": "更新应用",
+    "summary": "更新Google Play应用的要求。",
+    "keywords": [],
+    "type": "guide",
+    "category": ""
+  },
+  {
+    "lang": "zh-cn",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/1153479?hl=zh-Hans",
+    "timestamp": 1194884220000,
+    "image": null,
+    "title": "应用内结算",
+    "summary": "如何正确设置应用内商品和订阅结算。",
+    "keywords": [],
+    "type": "guide",
+    "category": ""
+  },
+  {
+    "lang": "zh-cn",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/googleplay/android-developer/answer/1078870?hl=zh-Hans",
+    "timestamp": 1194884220000,
+    "image": "images/play_dev.jpg",
+    "title": "为你的应用的图片资源",
+    "summary": "如何在你的应用的商品详情页面上添加图片资源。",
+    "keywords": [],
+    "type": "guide",
+    "category": ""
+  },
+  {
+    "lang": "zh-cn",
+    "group": "",
+    "tags": [],
+    "url": "https://support.google.com/payments/answer/2741495?hl=zh-Hans",
+    "timestamp": null,
+    "image": null,
+    "title": "退回訂單款項",
+    "summary": "如何退还已收取的订单款项。",
+    "keywords": [],
+    "type": "guide",
+    "category": ""
+  },
+  {
+    "lang": "zh-cn",
+    "group": "",
+    "tags": ["localization", "pricing", "developer support"],
+    "url": "https://support.google.com/googleplay/android-developer/table/3541286?hl=zh-Hans",
+    "timestamp": null,
+    "image": "images/play_dev.jpg",
+    "title": "支持向Google Play用户发布应用的地区",
+    "summary": "支持向Google Play用户发布应用的国家/地区。",
+    "keywords": [],
+    "type": "distribute",
+    "category": ""
+  },
+  {
+    "lang": "zh-cn",
+    "group": "",
+    "tags": [],
+    "url": "https://developers.google.com/edu/guidelines?hl=zh-Hans",
+    "timestamp": null,
+    "image": "https://developer.android.com/distribute/images/edu-guidelines.jpg",
+    "title": "Education Guidelines",
+    "summary": "These guidelines and requirements help you develop great apps for students, which offer compelling content and an intuitive user experience on Android tablets.",
+    "keywords": [],
+    "type": "",
+    "category": ""
+  },
+]);
+
+/**
+ * Static metadata collections.
+ */
+METADATA['zh-cn'].collections = {
+  "overview/zhcn/1": {
+    "title": "",
+    "resources": [
+      "intl/zh-cn/distribute/essentials/quality/core.html",
+      "intl/zh-cn/distribute/essentials/quality/tablets.html",
+      "intl/zh-cn/distribute/tools/launch-checklist.html",
+      "intl/zh-cn/tools/publishing/publishing_overview.html",
+      "intl/zh-cn/distribute/tools/localization-checklist.html"
+    ]
+  },
+  "overview/zhcn/2": {
+    "title": "",
+    "resources": [
+      "intl/zh-cn/google/play/billing/index.html",
+      "intl/zh-cn/google/play/billing/api.html",
+      "intl/zh-cn/google/play/billing/billing_admin.html",
+      "intl/zh-cn/google/play/billing/billing_testing.html",
+      "intl/zh-cn/google/play/billing/billing_best_practices.html"
+    ]
+  },
+  "overview/zhcn/3": {
+    "title": "",
+    "resources": [
+      "https://play.google.com/intl/en_us/badges/",
+      "intl/zh-cn/distribute/tools/promote/device-art.html",
+      "intl/zh-cn/distribute/tools/promote/linking.html",
+      "intl/zh-cn/distribute/tools/promote/brand.html",
+      "intl/zh-cn/tools/help/proguard.html"
+    ]
+  },
+  "overview/zhcn/4": {
+    "title": "",
+    "resources": [
+      "intl/zh-cn/design/style/writing.html",
+      "intl/zh-cn/training/basics/fragments/fragment-ui.html",
+      "intl/zh-cn/training/multiscreen/index.html",
+      "intl/zh-cn/training/monitoring-device-state/index.html"
+    ]
+  },
+  "overview/carousel/zhcn": {
+    "title": "",
+    "resources": [
+      "https://www.youtube.com/watch?v=vGV7FHGzpFU",
+      "https://www.youtube.com/watch?v=aqc3ZOTzpdk",
+      "https://www.youtube.com/watch?v=jaNrJ8uyLSc"
+    ]
+  },
+};
\ No newline at end of file
diff --git a/docs/html/jd_extras_zh-tw.js b/docs/html/jd_extras_zh-tw.js
new file mode 100644
index 0000000..f41598e
--- /dev/null
+++ b/docs/html/jd_extras_zh-tw.js
@@ -0,0 +1,13 @@
+
+//must use intl/nn to override translated resources
+METADATA['zh-tw'].carousel = {
+  "intl/zh-tw/distribute/googleplay/guide.html": {
+    "image": "images/distribute/hero-secrets-to-app-success.jpg",
+  },
+};
+
+/**
+ * Static metadata collections for this language.
+ */
+METADATA['zh-tw'].collections = {
+};
\ No newline at end of file
diff --git a/docs/html/jd_tag_helpers.js b/docs/html/jd_tag_helpers.js
index f03b1d7..3ad3633 100644
--- a/docs/html/jd_tag_helpers.js
+++ b/docs/html/jd_tag_helpers.js
@@ -13,11 +13,11 @@
   GOOGLE_RESOURCES,
   GUIDE_RESOURCES,
   SAMPLES_RESOURCES,
-  PREVIEW_RESOURCES,
   TOOLS_RESOURCES,
   TRAINING_RESOURCES,
   YOUTUBE_RESOURCES,
-  BLOGGER_RESOURCES
+  BLOGGER_RESOURCES,
+  PREVIEW_RESOURCES
 );
 
 for (var i = 0; i < ALL_RESOURCES.length; i++) {
@@ -71,9 +71,9 @@
   'google': GOOGLE_RESOURCES,
   'guide': GUIDE_RESOURCES,
   'samples': SAMPLES_RESOURCES,
-  'preview': PREVIEW_RESOURCES,
   'tools': TOOLS_RESOURCES,
   'training': TRAINING_RESOURCES,
+  'preview': PREVIEW_RESOURCES,
   'youtube': YOUTUBE_RESOURCES,
   'blog': BLOGGER_RESOURCES
 };
@@ -88,7 +88,6 @@
   {map:GOOGLE_BY_TAG,arr:GOOGLE_RESOURCES},
   {map:GUIDE_BY_TAG,arr:GUIDE_RESOURCES},
   {map:SAMPLES_BY_TAG,arr:SAMPLES_RESOURCES},
-  {map:PREVIEW_BY_TAG,arr:PREVIEW_RESOURCES},
   {map:TOOLS_BY_TAG,arr:TOOLS_RESOURCES},
   {map:TRAINING_BY_TAG,arr:TRAINING_RESOURCES},
   {map:YOUTUBE_BY_TAG,arr:YOUTUBE_RESOURCES},
diff --git a/docs/html/legal.jd b/docs/html/legal.jd
old mode 100644
new mode 100755
index 5ee6b5c..0a68508
--- a/docs/html/legal.jd
+++ b/docs/html/legal.jd
@@ -70,12 +70,10 @@
 restrictions. Such services include:</p>
 
 <dl>
-  <dt>Eclipse Android Developer Tools Plugin</dt>
-    <dd>If you're developing apps with the Eclipse IDE, we offer a free plugin called the
-<a href="{@docRoot}tools/sdk/eclipse-adt.html">Android Developer Tools</a> (ADT) to speed up your
-development and debugging. Certain code within the ADT plugin and other packages available
-from the SDK Manager require that you agree to terms and conditions for use, reproduction and
-distribution upon installation.</dd>
+  <dt>Android Studio</dt>
+    <dd>Android Studio and other packages available from the SDK manager require that you agree
+to terms and conditions
+for use, reproduction and distribution upon installation.</dd>
 
   <dt>Google Play</dt>
     <dd>Google Play is a publicly available service through which you can distribute your apps for
diff --git a/docs/html/ndk/downloads/_book.yaml b/docs/html/ndk/downloads/_book.yaml
new file mode 100644
index 0000000..a5e92ce
--- /dev/null
+++ b/docs/html/ndk/downloads/_book.yaml
@@ -0,0 +1,6 @@
+toc:
+- title: Downloads
+  path: /ndk/downloads/index.html
+
+- title: Revision History
+  path: /ndk/downloads/revision_history.html
diff --git a/docs/html/ndk/downloads/index.jd b/docs/html/ndk/downloads/index.jd
index 94e9ae9..47d3113 100644
--- a/docs/html/ndk/downloads/index.jd
+++ b/docs/html/ndk/downloads/index.jd
@@ -1,104 +1,95 @@
 ndk=true
 page.template=sdk
-
-
-ndk.mac64_download=android-ndk-r10e-darwin-x86_64.bin
-ndk.mac64_bytes=388937326
-ndk.mac64_checksum=2cb8893a5701603519d38a7e04c50e81
-
-ndk.linux64_download=android-ndk-r10e-linux-x86_64.bin
-ndk.linux64_bytes=401522849
-ndk.linux64_checksum=19af543b068bdb7f27787c2bc69aba7f
-
-ndk.linux32_download=android-ndk-r10e-linux-x86.bin
-ndk.linux32_bytes=394281908
-ndk.linux32_checksum=c3edd3273029da1cbd2f62c48249e978
-
-ndk.win64_download=android-ndk-r10e-windows-x86_64.exe
-ndk.win64_bytes=419616132
-ndk.win64_checksum=8412bb4991a95e08fda50b5a44d95df7
-
-ndk.win32_download=android-ndk-r10e-windows-x86.exe
-ndk.win32_bytes=396563176
-ndk.win32_checksum=1a82445baaf62aec3a46386ab1e5772c
-
-
-
 page.title=NDK Downloads
+
 @jd:body
 
 
-<div id="tos" style="display:none;width:760px;height:0;margin:0 auto">
-
-<div id="download" class="ndk" style="
-z-index: 99;
-width: 720px;
-position: absolute;
-margin: -70px 0;
-padding: 14px;
-background: white;
-border: 1px solid #999;
-box-shadow: -10px 10px 50px #888;
--moz-box-shadow: -10px 10px 50px #888;
--webkit-box-shadow: -10px 10px 50px #888;">
-<p>Before installing the Android NDK, you must agree to the following terms and conditions.</p>
+<!-- start studio download modal -->
+<div data-modal="ndk_tos" class="dac-modal" id="ndk_tos">
+  <div class="dac-modal-container">
+    <div class="dac-modal-window">
+      <header class="dac-modal-header">
+        <div class="dac-modal-header-actions">
+          <button class="dac-modal-header-close" data-modal-toggle></button>
+        </div>
+        <section class="dac-swap-section dac-active dac-down">
+          <h2 class="norule dac-modal-header-title" id="tos-header">Download the Android NDK</h2>
+        </section>
+      </header>
+      <section class="dac-swap-section dac-active dac-left">
+          <section class="dac-modal-content">
+            <fieldset class="dac-form-fieldset">
+              <div class="cols">
+                <div class="col-2of2 tos-leftCol">
+                  <p class="sdk-terms-intro">Before installing the Android
+                  NDK,
+                  you must agree to the following terms
+                  and conditions.</p>
+                </div>
 <div class="sdk-terms" style="width:auto" onfocus="this.blur()">
 <h2 class="norule">Terms and Conditions</h2>
 This is the Android Software Development Kit License Agreement
 
 <h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in this License Agreement as the "SDK" and
+1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and
 specifically including the Android system files, packaged APIs, and Google APIs add-ons) is
-licensed to you subject to the terms of this License Agreement. This License Agreement forms a
+licensed to you subject to the terms of the License Agreement. The License Agreement forms a
 legally binding contract between you and Google in relation to your use of the SDK.
 
-1.2 “Android” means the Android software stack for devices, as made available under the Android
+1.2 "Android" means the Android software stack for devices, as made available under the Android
 Open Source Project, which is located at the following URL: http://source.android.com/, as updated
 from time to time.
 
-1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android
+Compatibility Definition document, which can be found at the Android compatibility website
+(http://source.android.com/compatibility) and which may be updated from time to time; and (ii)
+successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600
 Amphitheatre Parkway, Mountain View, CA 94043, United States.
 
 
 <h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use the
-SDK if you do not accept this License Agreement.
+2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK
+if you do not accept the License Agreement.
 
-2.2 By clicking to accept, you hereby agree to the terms of this License Agreement.
+2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
 
 2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred
-from receiving the SDK under the laws of the United States or other countries including the country
-in which you are resident or from which you use the SDK.
+from receiving the SDK under the laws of the United States or other countries, including the
+country in which you are resident or from which you use the SDK.
 
-2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or other
+2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other
 entity, you represent and warrant that you have full legal authority to bind your employer or such
-entity to this License Agreement. If you do not have the requisite authority, you may not accept
-the License Agreement or use the SDK on behalf of your employer or other entity.
+entity to the License Agreement. If you do not have the requisite authority, you may not accept the
+License Agreement or use the SDK on behalf of your employer or other entity.
 
 
 <h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide,
-royalty-free, non-assignable and non-exclusive license to use the SDK solely to develop
-applications to run on the Android platform.
+3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide,
+royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to
+develop applications for compatible implementations of Android.
 
-3.2 You agree that Google or third parties own all legal right, title and interest in and to the
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible
+implementations of Android) or to develop another SDK. You are of course free to develop
+applications for other platforms, including non-compatible implementations of Android, provided
+that this SDK is not used for that purpose.
+
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the
 SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property
 Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law,
 and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
 
-3.3 You may not use the SDK for any purpose not expressly permitted by this License Agreement.
+3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.
 Except to the extent required by applicable third party licenses, you may not: (a) copy (except for
 backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create
 derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile
 handset or any other hardware device except a personal computer, combine any part of the SDK with
 other software, or distribute any software or device incorporating a part of the SDK.
 
-3.4 You agree that you will not take any actions that may cause or result in the fragmentation of
-Android, including but not limited to distributing, participating in the creation of, or promoting
-in any way a software development kit derived from the SDK.
-
 3.5 Use, reproduction and distribution of components of the SDK licensed under an open source
-software license are governed solely by the terms of that open source software license and not this
+software license are governed solely by the terms of that open source software license and not the
 License Agreement.
 
 3.6 You agree that the form and nature of the SDK that Google provides may change without prior
@@ -107,7 +98,7 @@
 providing the SDK (or any features within the SDK) to you or to users generally at Google's sole
 discretion, without prior notice to you.
 
-3.7 Nothing in this License Agreement gives you a right to use any of Google's trade names,
+3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names,
 trademarks, service marks, logos, domain names, or other distinctive brand features.
 
 3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including
@@ -116,11 +107,11 @@
 
 <h3>4. Use of the SDK by You</h3>
 4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under
-this License Agreement in or to any software applications that you develop using the SDK, including
+the License Agreement in or to any software applications that you develop using the SDK, including
 any intellectual property rights that subsist in those applications.
 
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a)
-this License Agreement and (b) any applicable law, regulation or generally accepted practices or
+4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the
+License Agreement and (b) any applicable law, regulation or generally accepted practices or
 guidelines in the relevant jurisdictions (including any laws regarding the export of data or
 software to and from the United States or other relevant countries).
 
@@ -145,7 +136,7 @@
 (including any loss or damage which Google may suffer) by doing so.
 
 4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or
-to any third party for) any breach of your obligations under this License Agreement, any applicable
+to any third party for) any breach of your obligations under the License Agreement, any applicable
 third party contract or Terms of Service, or any applicable law or regulation, and for the
 consequences (including any loss or damage which Google or any third party may suffer) of any such
 breach.
@@ -185,7 +176,7 @@
 or in part) unless you have been specifically given permission to do so by the relevant owners.
 
 7.3 You acknowledge that your use of such third party applications, data, content, or resources may
-be subject to separate terms between you and the relevant third party. In that case, this License
+be subject to separate terms between you and the relevant third party. In that case, the License
 Agreement does not affect your legal relationship with these third parties.
 
 
@@ -205,14 +196,14 @@
 
 
 <h3>9. Terminating this License Agreement</h3>
-9.1 This License Agreement will continue to apply until terminated by either you or Google as set
+9.1 The License Agreement will continue to apply until terminated by either you or Google as set
 out below.
 
-9.2 If you want to terminate this License Agreement, you may do so by ceasing your use of the SDK
+9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK
 and any relevant developer credentials.
 
-9.3 Google may at any time, terminate this License Agreement with you if:
-(A) you have breached any provision of this License Agreement; or
+9.3 Google may at any time, terminate the License Agreement with you if:
+(A) you have breached any provision of the License Agreement; or
 (B) Google is required to do so by law; or
 (C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated
 its relationship with Google or ceased to offer certain parts of the SDK to you; or
@@ -220,9 +211,9 @@
 in which you are resident or from which you use the service, or the provision of the SDK or certain
 SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
 
-9.4 When this License Agreement comes to an end, all of the legal rights, obligations and
+9.4 When the License Agreement comes to an end, all of the legal rights, obligations and
 liabilities that you and Google have benefited from, been subject to (or which have accrued over
-time whilst this License Agreement has been in force) or which are expressed to continue
+time whilst the License Agreement has been in force) or which are expressed to continue
 indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall
 continue to apply to such rights, obligations and liabilities indefinitely.
 
@@ -256,7 +247,7 @@
 accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes
 any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of
 any person or defames any person or violates their rights of publicity or privacy, and (c) any
-non-compliance by you with this License Agreement.
+non-compliance by you with the License Agreement.
 
 
 <h3>13. Changes to the License Agreement</h3>
@@ -266,45 +257,44 @@
 
 
 <h3>14. General Legal Terms</h3>
-14.1 This License Agreement constitutes the whole legal agreement between you and Google and
-governs your use of the SDK (excluding any services which Google may provide to you under a
-separate written agreement), and completely replaces any prior agreements between you and Google in
-relation to the SDK.
+14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs
+your use of the SDK (excluding any services which Google may provide to you under a separate
+written agreement), and completely replaces any prior agreements between you and Google in relation
+to the SDK.
 
 14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is
-contained in this License Agreement (or which Google has the benefit of under any applicable law),
+contained in the License Agreement (or which Google has the benefit of under any applicable law),
 this will not be taken to be a formal waiver of Google's rights and that those rights or remedies
 will still be available to Google.
 
 14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any
-provision of this License Agreement is invalid, then that provision will be removed from this
-License Agreement without affecting the rest of this License Agreement. The remaining provisions of
-this License Agreement will continue to be valid and enforceable.
+provision of the License Agreement is invalid, then that provision will be removed from the License
+Agreement without affecting the rest of the License Agreement. The remaining provisions of the
+License Agreement will continue to be valid and enforceable.
 
 14.4 You acknowledge and agree that each member of the group of companies of which Google is the
-parent shall be third party beneficiaries to this License Agreement and that such other companies
-shall be entitled to directly enforce, and rely upon, any provision of this License Agreement that
+parent shall be third party beneficiaries to the License Agreement and that such other companies
+shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that
 confers a benefit on (or rights in favor of) them. Other than this, no other person or company
-shall be third party beneficiaries to this License Agreement.
+shall be third party beneficiaries to the License Agreement.
 
 14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST
 COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE
 LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
 
-14.6 The rights granted in this License Agreement may not be assigned or transferred by either you
+14.6 The rights granted in the License Agreement may not be assigned or transferred by either you
 or Google without the prior written approval of the other party. Neither you nor Google shall be
-permitted to delegate their responsibilities or obligations under this License Agreement without
-the prior written approval of the other party.
+permitted to delegate their responsibilities or obligations under the License Agreement without the
+prior written approval of the other party.
 
-14.7 This License Agreement, and your relationship with Google under this License Agreement, shall
-be governed by the laws of the State of California without regard to its conflict of laws
-provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located
-within the county of Santa Clara, California to resolve any legal matter arising from this License
-Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for
-injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be
+governed by the laws of the State of California without regard to its conflict of laws provisions.
+You and Google agree to submit to the exclusive jurisdiction of the courts located within the
+county of Santa Clara, California to resolve any legal matter arising from the License Agreement.
+Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies
+(or an equivalent type of urgent legal relief) in any jurisdiction.
 
-
-<em>November 13, 2012</em>
+<em>November 20, 2015</em>
 </div>
 
 
@@ -314,221 +304,63 @@
 <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
 <label id="agreeLabel" for="agree">I have read and agree with the above terms and conditions</label>
 </p>
-<p><a href="" class="button disabled ndk" id="downloadForRealz" onclick="return onDownloadNdkForRealz(this);"></a></p>
+<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
 </div>
 
-
-
-</div>
-</div>
-
- <div id="qv-wrapper">
-
+                </div>
+              </div>
+            </fieldset>
+          </section>
+        </form>
+      </section>
+    </div>
   </div>
+</div>
+<!-- end ndk_tos modal -->
 
-  <p>Select, from the table below, the NDK package for your development platform. For information
+
+  <p>Select, from the table above, the NDK package for your development platform. For information
   about the changes in the newest version of the NDK, see <a href="#rel">Release Notes</a>. For
   information about earlier revisions, see <a href="{@docRoot}ndk/downloads/revision_history.html">
   NDK Revision History.</a></p>
 
 
-<h2 id="Downloads">Downloading</h2>
-
-
 <script>
 $('#Downloads').after($('#download-table'));
 </script>
 
-  <h2 id="extract">Extraction</h2>
-  <p>The NDK package is a self-extracting binary. To unpack it, follow the procedure for your
-  development platform:</p>
-       <ul>
-       <li>On Linux and Mac OS X (Darwin):
-          <ul>
-          <ol>
-          <li>Download the appropriate package from this page.</li>
-          <li>Open a terminal window.</li>
-          <li>Go to the directory to which you downloaded the package.</li>
-          <li>Run <code>chmod a+x</code> on the downloaded package.</li>
-          <li>Execute the package. For example:
-          <pre class="no-pretty-print">
-ndk$ chmod a+x android-ndk-r10c-darwin-x86_64.bin
-ndk$ ./android-ndk-r10c-darwin-x86_64.bin
-          </pre></li>
-          <p>The folder containing the NDK extracts itself.</p>
-          <p>You can also use a program like 7z to extract the package.</p>
-          </ol>
-          </ul>
-       </li>
-    <li>On Windows:</li>
-       <ul>
-       <ol>
-       <li>Download the appropriate package from this page.</li>
-       <li>Navigate to the folder to which you downloaded the package.</li>
-       <li>Double-click the downloaded file. The folder containing the NDK extracts itself.</li>
-       </ol>
-       </ul>
-     </ul>When uncompressed, the NDK files are contained in a directory called
-    <code>android-ndk-&lt;version&gt;</code>. You can rename the NDK directory if necessary and you
-    can move it to any location on your computer. This documentation refers to the NDK directory as
-    <code>&lt;ndk&gt;</code>.
-
-
-  <p>You are now ready to start working with the NDK.</p>
-
 <h2 id="rel">Release Notes</h2>
 
- <p>Android NDK, Revision 10e</a> <em>(May 2015)</em></p>
-    <dl>
-      <dt>Important changes:</dt>
-      <dd>
-      <ul>
-        <li>Integrated the workaround for Cortex-A53 Erratum 843419 into the
-        {@code aarch64-linux-android-4.9} linker. For more information on this workaround, see
-        <a href="https://sourceware.org/ml/binutils/2015-03/msg00446.html">Workaround for cortex-a53
-        erratum 843419.</a></li>
+<p>
+  Android NDK, Revision 11c <em>(March 2016)</em>
+</p>
 
-         <li>Added Clang 3.6; {@code NDK_TOOLCHAIN_VERSION=clang} now picks that version
-         of Clang by default.</li>
+<dl>
+  <dt>
+    NDK
+  </dt>
 
-         <li>Removed Clang 3.4.</li>
-
-         <li>Removed GCC 4.6.</li>
-
-         <li>Implemented multithreading support in {@code ld.gold} for all architectures. It can
-         now link with or without support for multithreading; the default is to do it without.
-            <ul>
-            <li>To compile with multithreading, use the {@code --threads} option.</li>
-            <li>To compile without multithreading, use the {@code --no-threads} option.</li>
-            </ul>
-            </li>
-
-         <li>Upgraded GDB/gdbserver to 7.7 for all architectures.</li>
-
-         <li>Removed the NDK package for 32-bit Darwin.</li>
-      </ul>
-      </dd>
-   <dl>
-
-
-     <dt>Important bug fixes:</dt>
-     <dd>
-     <ul>
-        <li>Fixed a crash that occurred when there were OpenMP loops outside of the main thread.</li>
-
-        <li>Fixed a GCC 4.9 internal compiler error (<i>ICE</i>) that occured when the user declared
-        {@code #pragma GCC optimize ("O0")}, but had a different level of optimization specified
-        on the command line. The {@code pragma} takes precedence.</li>
-
-        <li>Fixed an error that used to produce a crash with the following error message:
-<pre>
-in add_stores, at var-tracking.c:6000
-</pre>
-        </li>
-
-        <li>Implemented a workaround for a Clang 3.5 issue in which LLVM auto-vectorization
-        generates {@code llvm.cttz.v2i64()}, an instruction with no counterpart in the ARM
-        instruction set.</li>
-     </ul>
-     </dd>
-
-     <dt>Other bug fixes:</dt>
-     <dd>
-     <ul>
-        <li>Made the following header and library fixes:</li>
-           <ul>
-           <li>Fixed {@code PROPERTY_*} in {@code media/NdkMediaDrm.h}.</li>
-           <li>Fixed {@code sys/ucontext.h} for {@code mips64}.</li>
-           <li>Dropped the Clang version check for {@code __builtin_isnan} and
-           {@code __builtin_isinf}.</li>
-           <li>Added {@code android-21/arch-mips/usr/include/asm/reg.h}
-           and {@code android-21/arch-mips64/usr/include/asm/reg.h}.</li>
-           </ul>
-           </li>
-
-        <li>Fixed a spurious array-bounds warning that GCC 4.9 produced for x86, and reenabled the
-        array bounds warning that GCC 4.9 had produced for ARM. The warning for ARM had
-        previously been unconditionally disabled.</li>
-
-        <li>Fixed Clang 3.5 for {@code mips} and {@code mips64} to create a writable
-            {@code .gcc_except_table} section, thus matching GCC behavior. This change allows you
-            to avoid the following linker warning:
-
-<pre>
-.../ld: warning: creating a DT_TEXTREL in a shared object
-</pre>
-            </li>
-
-        <li>Backported a fix for {@code compiler-rt} issues that were causing crashes when Clang
-        compiled for {@code mips64}. For more information, see LLVM Issue
-        <a href="http://llvm.org/bugs/show_bug.cgi?id=20098">20098</a>.</li>
-
-        <li>Fixed Clang 3.5 crashes that occurred on non-ASCII comments. (Issue
-        <a href="https://code.google.com/p/android/issues/detail?id=81440">81440</a>)</li>
-
-        <li>Fixed {@code stlport collate::compare} to return {@code -1} and {@code 1}. Previously,
-        it had returned arbitrary signed numbers.</li>
-
-        <li>Fixed {@code ndk-gdb} for 64-bit ABIs. (Issue
-        <a href="https://code.google.com/p/android/issues/detail?id=118300">118300</a>)</li>
-
-        <li>Fixed the crash that the HelloComputeNDK sample for RenderScript was producing on
-        Android 4.4 (Android API level 19). For more information, see
-        <a href="http://stackoverflow.com/questions/28057049/targeting-pre-lollipop-devices-using-renderscript-from-ndk-c">this page</a>.</li>
-
-        <li>Fixed {@code libc++ __wrap_iter} for GCC. For more information, see LLVM Issue
-        <a href="http://llvm.org/bugs/show_bug.cgi?id=22355">22355</a>.</li>
-
-        <li>Fixed {@code .asm} support for ABI {@code x86_64}.</li>
-
-        <li>Implemented a workaround for the GCC 4.8 {@code stlport} issue. (Issue
-        <a href="https://android-review.googlesource.com/#/c/127773">127773</a>)</li>
-
-        <li>Removed the trailing directory separator {@code \\} from the project path in Windows.
-        (Issue <a href="https://code.google.com/p/android/issues/detail?id=160584">160584</a>)
-        </li>
-
-        <li>Fixed a {@code no rule to make target} error that occurred when compiling a single
-        {@code .c} file by executing the {@code ndk-build.cmd} command from {@code gradle}. (Issue
-        <a href="https://code.google.com/p/android/issues/detail?id=66937">66937</a>)</li>
-
-        <li>Added the {@code libatomic.a} and {@code libgomp.a} libraries that had been missing from
-        the following host toolchains:
+  <dd>
+    <ul>
+      <li>Changes
         <ul>
-           <li>{@code aarch64-linux-android-4.9}</li>
-           <li>{@code mips64el-linux-android-4.9}</li>
-           <li>{@code mipsel-linux-android-4.9}</li>
-           <li>{@code x86_64-4.9}</li>
+          <li>Applied additional fixes to the {@code ndk-gdb.py} script.
+          </li>
+          <li>Added an optional package name argument to the {@code ndk-gdb}
+            command {@code --attach} option.
+            (<a href="https://github.com/android-ndk/ndk/issues/13">Issue 13</a>)
+          </li>
+          <li>Fixed invalid toolchain paths for 32-bit Windows platform.
+            (<a href="https://github.com/android-ndk/ndk/issues/45">Issue 45</a>)
+          </li>
+          <li>Fixed the relative path for the {@code ndk-which} command.
+            (<a href="https://github.com/android-ndk/ndk/issues/29">Issue 29</a>)
+          </li>
+          <li>Fixed use of cygpath for the libgcc compiler.
+            (Android <a href="http://b.android.com/195486">Issue 195486</a>)
+          </li>
         </ul>
-     </ul>
-     </dd>
-
-     <dt>Other changes:</dt>
-     <dd>
-       <ul>
-       <li>Added {@code ld.gold} for {@code aarch64}. The default linker remains {@code ld.bfd}.
-       To explicitly enable {@code ld.gold}, add {@code -fuse-ld=gold} to the
-       {@code LOCAL_LDFLAGS} or {@code APP_LDFLAGS} variable.</li>
-
-       <li>Built the MIPS and MIPS64 toolchains with {@code binutils-2.25}, which provides improved
-       R6 support.</li>
-
-       <li>Made {@code -fstandalone-debug} (full debug info) a default option for Clang.</li>
-
-       <li>Replaced {@code -fstack-protector} with {@code -fstack-protector-strong} for
-       the ARM, AArch64, X86, and X86_64 toolchains for GCC 4.9, Clang 3.5, and
-       Clang 3.6.</li>
-
-       <li>Added the {@code --package} command-line switch to {@code ndk-gdb} to allow the build
-       system to override the package name. (Issue
-       <a href="https://code.google.com/p/android/issues/detail?id=56189">56189</a>)</li>
-
-       <li> Deprecated {@code -mno-ldc1-stc1} for MIPS.  This option may not work with the new
-       {@code -fpxx} and {@code -mno-odd-spreg} options, or with the FPXX ABI.</li>
-
-       <li>Added MIPS MSA and R6 detection to {@code cpu-features}.</li>
-
-     </ul>
-     </dd>
-
-   </dl>
+      </li>
+    </ul>
+  </dd>
+</dl>
\ No newline at end of file
diff --git a/docs/html/ndk/downloads/revision_history.jd b/docs/html/ndk/downloads/revision_history.jd
index 95bfe7c..c5a0d48 100644
--- a/docs/html/ndk/downloads/revision_history.jd
+++ b/docs/html/ndk/downloads/revision_history.jd
@@ -4,11 +4,502 @@
 <p>This page provides information on previous releases of the NDK, enumerating the changes that
 took place in each new version.</p>
 
+
+<div class="toggle-content closed">
+<a name="11b"></a>
+ <p>
+   <a href="#" onclick="return toggleContent(this)"> <img
+     src="/assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
+   >Android NDK, Revision 11b</a> <em>(March 2016)</em>
+ </p>
+ <div class="toggle-content-toggleme">
+
+    <dl>
+      <dt>NDK</dt>
+      <dd>
+      <ul>
+      <li>Important announcements
+      <ul>
+         <li>We’ve moved our bug tracker to <a href="https://github.com/android-ndk/ndk/issues">
+         GitHub.</a></li>
+     </ul>
+     </li>
+
+     <li>Changes
+        <ul>
+         <li>{@code ndk-gdb.py} is fixed. It had
+               <a href="https://github.com/android-ndk/ndk/issues/3">regressed entirely</a>
+               in r11.</li>
+               <li>{@code ndk-gdb} for Mac <a href="https://github.com/android-ndk/ndk/issues/2">
+               is fixed</a>.</li>
+               <li>Added more top-level shortcuts for command line tools:
+                  <ul>
+                     <li>{@code ndk-depends}.</li>
+                     <li>{@code ndk-gdb}.</li>
+                     <li>{@code ndk-stack}.</li>
+                     <li>{@code ndk-which}. This command had been entirely absent from previous
+                     releases.</li>
+                  </ul>
+               </li>
+               <li>Fixed standalone toolchains for libc++, which had been missing
+               {@code __cxxabi_config.h}.</li>
+               <li>Fixed help documentation for {@code --toolchain} in
+               {@code make-standalone-toolchain.sh}.</li>
+         </li>
+       </ul>
+      </dd>
+
+      <dt>Clang</dt>
+      <dd>
+      <ul>
+      <li>Errata</li>
+          <ul>
+             <li>Contrary to what we reported in the r11 Release Notes, {@code __thread}
+             does not work. This is because the version of Clang we ship is missing a bug fix for
+             emulated TLS support.</li>
+          </ul>
+      </ul>
+      </dd>
+   </dl>
+
+
+ </div>
+</div>
+
+<div class="toggle-content closed">
+<a name="11"></a>
+ <p>
+   <a href="#" onclick="return toggleContent(this)"> <img
+     src="/assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
+   >Android NDK, Revision 11</a> <em>(March 2016)</em>
+ </p>
+ <div class="toggle-content-toggleme">
+    <dl>
+      <dt>Clang</dt>
+      <dd>
+      <ul>
+      <li>Important announcements
+      <ul>
+         <li>We strongly recommend switching to Clang.
+            <ul>
+                 <li>If you experience problems with Clang, file bugs
+         <a href="https://github.com/android-ndk/ndk/issues">here</a> for issues
+         specific to Clang in the NDK. For more general Clang issues,
+         file bugs by following the instructions on
+         <a href="http://llvm.org/docs/HowToSubmitABug.html">this page</a>.</li>
+            </ul>
+         </li>
+         <li>Clang has been updated to 3.8svn (r243773, build 2481030).
+            <ul>
+               <li>This version is a nearly pure upstream Clang.</li>
+               <li>The Windows 64-bit downloadable NDK package contains a 32-bit
+               version of Clang.</li>
+            </ul>
+         </li>
+     </ul>
+     </li>
+
+     <li>Additions
+        <ul>
+         <li>Clang now provides support for emulated TLS.
+            <ul>
+               <li>The compiler now supports {@code __thread} by emulating
+               ELF TLS with pthread thread-specific data.</li>
+               <li>C++11 {@code thread_local} works in some cases, but not
+               for data with non-trivial destructors, because those cases
+               require support from libc. This limitation does not
+               apply when running on Android 6.0 (API level 23) or newer.</li>
+               <li>Emulated TLS does not yet work with Aarch64 when
+               TLS variables are accessed from a shared library.</li>
+            </ul>
+         </li>
+       </ul>
+      </dd>
+   </dl>
+
+    <dl>
+      <dt>GCC</dt>
+      <dd>
+      <ul>
+      <li>Important announcements</li>
+          <ul>
+             <li>GCC in the NDK is now deprecated in favor of Clang.
+            <ul>
+               <li>The NDK will neither be upgrading to 5.x, nor accept
+               non-critical backports.</li>
+               <li>Maintenance for miscompiles and internal compiler errors
+               in 4.9 will be handled on a case by case basis.</li>
+            </ul>
+            </li>
+          </ul>
+      <li>Removals
+         <ul>
+         <li>Removed GCC 4.8. All targets now use GCC 4.9.</li>
+         </ul>
+       </li>
+      <li>Other changes
+         <ul>
+         <li>Synchronized google/gcc-4_9 to r224707. Previously, it had been
+         synchronized with r214835.</li>
+         </ul>
+       </li>
+       </ul>
+      </dd>
+   </dl>
+    <dl>
+      <dt>NDK</dt>
+      <dd>
+      <ul>
+      <li>Important announcements
+         <ul>
+            <li>The samples are no longer included in the NDK package.
+            They are instead available on
+            <a href="https://github.com/googlesamples/android-ndk">GitHub.</a>
+            </li>
+            <li>The documentation is no longer included in the NDK package.
+            Instead, it is on the <a href="{@docRoot}ndk/index.html">Android
+            developer website.</a></li>
+         </ul>
+      </li>
+
+      <li>Additions
+          <ul>
+         <li>Added a native tracing API to {@code android-23}.</li>
+         <li>Added a native multinetwork API to {@code android-23}.</li>
+         <li>Enabled libc, m, and dl to provide versioned symbols, starting
+         from API level 21.</li>
+         <li>Added Vulkan headers and library to API level N.</li>
+          </ul>
+       </li>
+
+      <li>Removals
+          <ul>
+         <li>Removed support for {@code _WCHAR_IS_8BIT}.</li>
+         <li>Removed sed.</li>
+         <li>Removed mclinker.</li>
+         <li>Removed Perl.</li>
+         <li>Removed from all versions of NDK libc, m, and dl all symbols which
+         the platform versions of those libs do not support.</li>
+         <li>Partially removed support for mips64r2. The rest will be removed
+         in the future.</li>
+          </ul>
+       </li>
+
+      <li>Other changes
+          <ul>
+            <li>Changed ARM standalone toolchains to default to arm7.
+               <ul>
+                  <li>You can restore the old behavior by passing specifying the
+                  {@code -target} option as {@code armv5te-linux-androideabi}.
+                  </li>
+               </ul>
+            </li>
+         <li>Changed the build system to use {@code -isystem} for platform
+         includes.
+            <ul>
+               <li>Warnings that bionic causes no longer break app builds.</li>
+            </ul>
+         </li>
+         <li>Fixed a segfault that occurred when a binary threw exceptions
+         via gabi++. (Issue <a href="http://b.android.com/179410">179410</a>)
+         </li>
+         <li>Changed libc++’s inline namespace to {@code std::__ndk1}
+         to prevent ODR issues with platform libc++.</li>
+
+         <li>All libc++ libraries are now built with libc++abi.
+         <li>Bumped default {@code APP_PLATFORM} to Gingerbread.
+            <ul>
+               <li>Expect support for Froyo and older to be dropped in a
+               future release.</ul>
+            </ul>
+         <li>Updated gabi++ {@code _Unwind_Exception} struct for 64 bits.
+         <li>Added the following capabilities to cpufeatures:
+            <ul>
+            <li>Detect SSE4.1 and SSE4.2.</li>
+            <li>Detect cpu features on x86_64.</li>
+            </ul>
+        </li>
+         <li>Updated libc++abi to upstream
+         <a href="http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20150302/124603.html">
+         r231075</a>.
+         <li>Updated {@code byteswap.h}, {@code endian.h}, {@code sys/procfs.h},
+         {@code sys/ucontext.h}, {@code sys/user.h}, and {@code uchar.h} from
+         ToT Bionic.
+         <li>Synchronized {@code sys/cdefs.h} across all API levels.
+
+         <li>Fixed {@code fegetenv and fesetenv} for arm.
+         <li>Fix end pointer size/alignment of {@code crtend_*} for mips64
+         and x86_64.
+          </ul>
+       </li>
+      </ul>
+      </ul>
+      </dd>
+   <dl>
+    <dl>
+      <dt>Binutils</dt>
+      <dd>
+      <ul>
+      <li>Additions
+         <ul>
+         <li>Added a new option: {@code --pic-veneer}.</li>
+         </ul>
+       </li>
+
+      <li>Removals
+         <ul>
+         <li>The 32-bit Windows package no longer contains ld.gold.
+         You can instead get ld.gold from the 64-bit Windows package.</li>
+         </ul>
+       </li>
+
+      <li>Changes
+          <ul>
+             <li>Unified binutils source between Android and ChromiumOS.
+             For more information on this change, see the comments
+             <a href="https://android-review.googlesource.com/#/c/182865/">
+             here.</a></li>
+             <li>Improved reliability of Gold for aarch64. Use
+             {@code -fuse-ld=gold} at link time to use gold instead of bfd.
+             The default will likely switch in the next release.</li>
+             <li>Improved linking time for huge binaries for Gold ARM back end
+             (up to 50% linking time reduction for debuggable Chrome Browser).
+             </li>
+          </ul>
+     </li>
+       </ul>
+      </dd>
+         <dl>
+    <dl>
+      <dt>GDB</dt>
+      <dd>
+      <ul>
+
+      <li>Removals
+         <ul>
+         <li>Removed ndk-gdb in favor of ndk-gdb.py.</li>
+         </ul>
+       </li>
+
+      <li>Changes
+          <ul>
+              <li>Updated gdb to version 7.10.</li>
+              <li>Improved performance.</li>
+              <li>Improved error messages.</li>
+              <li>Fixed relative project paths.</li>
+              <li>Stopped Ctrl-C from killing the backgrounded gdbserver.</li>
+              <li>Improved Windows support.</li>
+          </ul>
+     </li>
+       </ul>
+      </dd>
+
+               <dl>
+    <dl>
+      <dt>YASM</dt>
+      <dd>
+      <ul>
+
+      <li>Changes
+          <ul>
+              <li>Updated YASM to version 1.3.0.</li>
+          </ul>
+     </li>
+       </ul>
+      </dd>
+
+        <dl>
+    <dl>
+      <dt>Known issues</dt>
+      <dd>
+      <ul>
+      <li>x86 ASAN does not currently work. For more information, see the
+      discussion <a href="https://android-review.googlesource.com/#/c/186276/">
+      here.</a></li>
+      <li>The combination of Clang, x86, stlport_static, and optimization
+      levels higher than {@code -O0} causes test failures with
+      {@code dynamic_cast}. For more information, see the comments
+      <a href="https://android-review.googlesource.com/#/c/185920">here</a>.
+      </li>
+      <li>Exception handling often fails with c++_shared on ARM32. The root
+      cause is incompatibility between the LLVM unwinder that libc++abi uses
+      for ARM32 and libgcc. This behavior is not a regression from r10e.</li>
+     </ul>
+     </dd>
+   </dl>
+
+ </div>
+</div>
+
+<div class="toggle-content closed">
+<a name="10e"></a>
+ <p>
+   <a href="#" onclick="return toggleContent(this)"> <img
+     src="/assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
+   >Android NDK, Revision 10e</a> <em>(May 2015)</em>
+ </p>
+ <div class="toggle-content-toggleme">
+    <dl>
+      <dt>Important changes:</dt>
+      <dd>
+      <ul>
+        <li>Integrated the workaround for Cortex-A53 Erratum 843419 into the
+        {@code aarch64-linux-android-4.9} linker. For more information on this workaround, see
+        <a href="https://sourceware.org/ml/binutils/2015-03/msg00446.html">Workaround for cortex-a53
+        erratum 843419.</a></li>
+
+         <li>Added Clang 3.6; {@code NDK_TOOLCHAIN_VERSION=clang} now picks that version
+         of Clang by default.</li>
+
+         <li>Removed Clang 3.4.</li>
+
+         <li>Removed GCC 4.6.</li>
+
+         <li>Implemented multithreading support in {@code ld.gold} for all architectures. It can
+         now link with or without support for multithreading; the default is to do it without.
+            <ul>
+            <li>To compile with multithreading, use the {@code --threads} option.</li>
+            <li>To compile without multithreading, use the {@code --no-threads} option.</li>
+            </ul>
+            </li>
+
+         <li>Upgraded GDB/gdbserver to 7.7 for all architectures.</li>
+
+         <li>Removed the NDK package for 32-bit Darwin.</li>
+      </ul>
+      </dd>
+   <dl>
+
+
+     <dt>Important bug fixes:</dt>
+     <dd>
+     <ul>
+        <li>Fixed a crash that occurred when there were OpenMP loops outside of the main thread.</li>
+
+        <li>Fixed a GCC 4.9 internal compiler error (<i>ICE</i>) that occured when the user declared
+        {@code #pragma GCC optimize ("O0")}, but had a different level of optimization specified
+        on the command line. The {@code pragma} takes precedence.</li>
+
+        <li>Fixed an error that used to produce a crash with the following error message:
+<pre>
+in add_stores, at var-tracking.c:6000
+</pre>
+        </li>
+
+        <li>Implemented a workaround for a Clang 3.5 issue in which LLVM auto-vectorization
+        generates {@code llvm.cttz.v2i64()}, an instruction with no counterpart in the ARM
+        instruction set.</li>
+     </ul>
+     </dd>
+
+     <dt>Other bug fixes:</dt>
+     <dd>
+     <ul>
+        <li>Made the following header and library fixes:</li>
+           <ul>
+           <li>Fixed {@code PROPERTY_*} in {@code media/NdkMediaDrm.h}.</li>
+           <li>Fixed {@code sys/ucontext.h} for {@code mips64}.</li>
+           <li>Dropped the Clang version check for {@code __builtin_isnan} and
+           {@code __builtin_isinf}.</li>
+           <li>Added {@code android-21/arch-mips/usr/include/asm/reg.h}
+           and {@code android-21/arch-mips64/usr/include/asm/reg.h}.</li>
+           </ul>
+           </li>
+
+        <li>Fixed a spurious array-bounds warning that GCC 4.9 produced for x86, and reenabled the
+        array bounds warning that GCC 4.9 had produced for ARM. The warning for ARM had
+        previously been unconditionally disabled.</li>
+
+        <li>Fixed Clang 3.5 for {@code mips} and {@code mips64} to create a writable
+            {@code .gcc_except_table} section, thus matching GCC behavior. This change allows you
+            to avoid the following linker warning:
+
+<pre>
+.../ld: warning: creating a DT_TEXTREL in a shared object
+</pre>
+            </li>
+
+        <li>Backported a fix for {@code compiler-rt} issues that were causing crashes when Clang
+        compiled for {@code mips64}. For more information, see LLVM Issue
+        <a href="http://llvm.org/bugs/show_bug.cgi?id=20098">20098</a>.</li>
+
+        <li>Fixed Clang 3.5 crashes that occurred on non-ASCII comments. (Issue
+        <a href="https://code.google.com/p/android/issues/detail?id=81440">81440</a>)</li>
+
+        <li>Fixed {@code stlport collate::compare} to return {@code -1} and {@code 1}. Previously,
+        it had returned arbitrary signed numbers.</li>
+
+        <li>Fixed {@code ndk-gdb} for 64-bit ABIs. (Issue
+        <a href="https://code.google.com/p/android/issues/detail?id=118300">118300</a>)</li>
+
+        <li>Fixed the crash that the HelloComputeNDK sample for RenderScript was producing on
+        Android 4.4 (Android API level 19). For more information, see
+        <a href="http://stackoverflow.com/questions/28057049/targeting-pre-lollipop-devices-using-renderscript-from-ndk-c">this page</a>.</li>
+
+        <li>Fixed {@code libc++ __wrap_iter} for GCC. For more information, see LLVM Issue
+        <a href="http://llvm.org/bugs/show_bug.cgi?id=22355">22355</a>.</li>
+
+        <li>Fixed {@code .asm} support for ABI {@code x86_64}.</li>
+
+        <li>Implemented a workaround for the GCC 4.8 {@code stlport} issue. (Issue
+        <a href="https://android-review.googlesource.com/#/c/127773">127773</a>)</li>
+
+        <li>Removed the trailing directory separator {@code \\} from the project path in Windows.
+        (Issue <a href="https://code.google.com/p/android/issues/detail?id=160584">160584</a>)
+        </li>
+
+        <li>Fixed a {@code no rule to make target} error that occurred when compiling a single
+        {@code .c} file by executing the {@code ndk-build.cmd} command from {@code gradle}. (Issue
+        <a href="https://code.google.com/p/android/issues/detail?id=66937">66937</a>)</li>
+
+        <li>Added the {@code libatomic.a} and {@code libgomp.a} libraries that had been missing from
+        the following host toolchains:
+        <ul>
+           <li>{@code aarch64-linux-android-4.9}</li>
+           <li>{@code mips64el-linux-android-4.9}</li>
+           <li>{@code mipsel-linux-android-4.9}</li>
+           <li>{@code x86_64-4.9}</li>
+        </ul>
+     </ul>
+     </dd>
+
+     <dt>Other changes:</dt>
+     <dd>
+       <ul>
+       <li>Added {@code ld.gold} for {@code aarch64}. The default linker remains {@code ld.bfd}.
+       To explicitly enable {@code ld.gold}, add {@code -fuse-ld=gold} to the
+       {@code LOCAL_LDFLAGS} or {@code APP_LDFLAGS} variable.</li>
+
+       <li>Built the MIPS and MIPS64 toolchains with {@code binutils-2.25}, which provides improved
+       R6 support.</li>
+
+       <li>Made {@code -fstandalone-debug} (full debug info) a default option for Clang.</li>
+
+       <li>Replaced {@code -fstack-protector} with {@code -fstack-protector-strong} for
+       the ARM, AArch64, X86, and X86_64 toolchains for GCC 4.9, Clang 3.5, and
+       Clang 3.6.</li>
+
+       <li>Added the {@code --package} command-line switch to {@code ndk-gdb} to allow the build
+       system to override the package name. (Issue
+       <a href="https://code.google.com/p/android/issues/detail?id=56189">56189</a>)</li>
+
+       <li> Deprecated {@code -mno-ldc1-stc1} for MIPS.  This option may not work with the new
+       {@code -fpxx} and {@code -mno-odd-spreg} options, or with the FPXX ABI.</li>
+
+       <li>Added MIPS MSA and R6 detection to {@code cpu-features}.</li>
+
+     </ul>
+     </dd>
+   </dl>
+
+ </div>
+</div>
+
 <div class="toggle-content closed">
 <a name="10d"></a>
  <p>
    <a href="#" onclick="return toggleContent(this)"> <img
-     src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+     src="/assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
    >Android NDK, Revision 10d</a> <em>(December 2014)</em>
  </p>
  <div class="toggle-content-toggleme">
@@ -136,7 +627,7 @@
 <a name="10c"></a>
  <p>
    <a href="#" onclick="return toggleContent(this)"> <img
-     src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+     src="/assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
    >Android NDK, Revision 10c</a> <em>(October 2014)</em>
  </p>
  <div class="toggle-content-toggleme">
@@ -323,7 +814,7 @@
 <a name="10b"></a>
  <p>
    <a href="#" onclick="return toggleContent(this)"> <img
-     src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+     src="/assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
    >Android NDK, Revision 10b</a> <em>(September 2014)</em>
  </p>
  <div class="toggle-content-toggleme">
@@ -394,7 +885,7 @@
 <a name="10"></a>
  <p>
    <a href="#" onclick="return toggleContent(this)"> <img
-     src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+     src="/assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
    >Android NDK, Revision 10</a> <em>(July 2014)</em>
  </p>
  <div class="toggle-content-toggleme">
@@ -571,7 +1062,7 @@
 <a name="9d"></a>
  <p>
    <a href="#" onclick="return toggleContent(this)"> <img
-     src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+     src="/assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
    >Android NDK, Revision 9d</a> <em>(March 2014)</em>
  </p>
  <div class="toggle-content-toggleme">
@@ -758,7 +1249,7 @@
 <a name="9c"></a>
  <p>
    <a href="#" onclick="return toggleContent(this)"> <img
-     src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+     src="/assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
    >Android NDK, Revision 9c</a> <em>(December 2013)</em>
  </p>
  <div class="toggle-content-toggleme">
@@ -882,7 +1373,7 @@
 <a name="9b"></a>
   <p>
     <a href="#" onclick="return toggleContent(this)"> <img
-      src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+      src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
     >Android NDK, Revision 9b</a> <em>(October 2013)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -1045,7 +1536,7 @@
 <a name="9"></a>
   <p>
     <a href="#" onclick="return toggleContent(this)"> <img
-      src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+      src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
     >Android NDK, Revision 9</a> <em>(July 2013)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -1321,7 +1812,7 @@
 <div class="toggle-content closed">
 <a name="lower"></a>
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt="">Android NDK, Revision 8e</a> <em>(March 2013)</em>
   </p>
 
@@ -1540,7 +2031,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt="">Android NDK, Revision 8d</a> <em>(December 2012)</em>
   </p>
 
@@ -1706,7 +2197,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt="">Android NDK, Revision 8c</a> <em>(November 2012)</em>
   </p>
 
@@ -2019,7 +2510,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt="">Android NDK, Revision 8b</a> <em>(July 2012)</em>
   </p>
 
@@ -2214,7 +2705,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt="">Android NDK, Revision 8</a> <em>(May 2012)</em>
   </p>
 
@@ -2287,7 +2778,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt="">Android NDK, Revision 7c</a> <em>(April 2012)</em>
   </p>
 
@@ -2341,7 +2832,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt="">Android NDK, Revision 7b</a> <em>(February 2012)</em>
   </p>
 
@@ -2452,7 +2943,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt="">Android NDK, Revision 7</a> <em>(November 2011)</em>
   </p>
 
@@ -2756,7 +3247,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt="">Android NDK, Revision 6b</a> <em>(August 2011)</em>
   </p>
 
@@ -2790,7 +3281,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt="">Android NDK, Revision 6</a> <em>(July 2011)</em>
   </p>
 
@@ -2844,7 +3335,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt="">Android NDK, Revision 5c</a> <em>(June 2011)</em>
   </p>
 
@@ -2930,7 +3421,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt="">Android NDK, Revision 5b</a> <em>(January 2011)</em>
   </p>
 
@@ -2991,7 +3482,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt="">Android NDK, Revision 5</a> <em>(December 2010)</em>
   </p>
 
@@ -3082,7 +3573,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt="">Android NDK, Revision 4b</a> <em>(June 2010)</em>
   </p>
 
@@ -3155,7 +3646,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt="">Android NDK, Revision 3</a> <em>(March 2010)</em>
   </p>
 
@@ -3182,7 +3673,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt="">Android NDK, Revision 2</a> <em>(September 2009)</em>
   </p>
 
@@ -3207,7 +3698,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt="">Android NDK, Revision 1</a> <em>(June 2009)</em>
   </p>
 
diff --git a/docs/html/ndk/guides/_book.yaml b/docs/html/ndk/guides/_book.yaml
new file mode 100644
index 0000000..fdcfe46
--- /dev/null
+++ b/docs/html/ndk/guides/_book.yaml
@@ -0,0 +1,65 @@
+toc:
+- title: Getting Started
+  path: /ndk/guides/index.html
+  section:
+  - title: Setup
+    path: /ndk/guides/setup.html
+  - title: Concepts
+    path: /ndk/guides/concepts.html
+
+- title: Building
+  path: /ndk/guides/build.html
+  section:
+  - title: Android.mk
+    path: /ndk/guides/android_mk.html
+  - title: Application.mk
+    path: /ndk/guides/application_mk.html
+  - title: ndk-build
+    path: /ndk/guides/ndk-build.html
+  - title: Standalone Toolchain
+    path: /ndk/guides/standalone_toolchain.html
+
+- title: Architectures and CPUs
+  path: /ndk/guides/arch.html
+  section:
+  - title: ABI Management
+    path: /ndk/guides/abis.html
+  - title: NEON
+    path: /ndk/guides/cpu-arm-neon.html
+  - title: x86
+    path: /ndk/guides/x86.html
+  - title: x86-64
+    path: /ndk/guides/x86-64.html
+  - title: MIPS
+    path: /ndk/guides/mips.html
+  - title: The cpufeatures Library
+    path: /ndk/guides/cpu-features.html
+
+- title: Debugging
+  path: /ndk/guides/debug.html
+  section:
+  - title: ndk-gdb
+    path: /ndk/guides/ndk-gdb.html
+  - title: ndk-stack
+    path: /ndk/guides/ndk-stack.html
+
+- title: Libraries
+  path: /ndk/guides/libs.html
+  section:
+  - title: Prebuilt Libraries
+    path: /ndk/guides/prebuilts.html
+  - title: C++ Support
+    path: /ndk/guides/cpp-support.html
+  - title: Stable APIs
+    path: /ndk/guides/stable_apis.html
+
+- title: Audio
+  path: /ndk/guides/audio/index.html
+  section:
+  - title: Basics
+    path: /ndk/guides/audio/basics.html
+  - title: OpenSL ES for Android
+    path: /ndk/guides/audio/opensl-for-android.html
+
+- title: Graphics
+  path: /ndk/guides/graphics/index.html
diff --git a/docs/html/ndk/guides/abis.jd b/docs/html/ndk/guides/abis.jd
index 7b1a7ad..e5c65ef 100644
--- a/docs/html/ndk/guides/abis.jd
+++ b/docs/html/ndk/guides/abis.jd
@@ -364,16 +364,17 @@
 ABI</a></li>
 </ul>
 
-<p>The MIPS-specific documentation is available
-<a href="http://www.imgtec.com/mips/architectures/mips32.asp">here</a>, with
-further information
-<a href="https://sourcery.mentor.com/sgpp/lite/mips/portal/target_arch?@action=faq&amp;target_arch=MIPS">here</a>.</p>
+<p>For more specific details, see
+<a href="http://www.imgtec.com/mips/architectures/mips32/">MIPS32 Architecture</a>.
+Answers to common questions are in the
+<a href="https://sourcery.mentor.com/sgpp/lite/mips/portal/target_arch?@action=faq&amp;target_arch=MIPS">MIPS FAQ</a>.
+</p>
 </li>
 </ul>
 
 <h3 id="mips64">mips64</h3>
 <p>This ABI is for MIPS64 R6. For more information, see
-<a href="http://www.imgtec.com/mips/architectures/mips64.asp">MIPS64 Architecture</a>.</p>
+<a href="http://www.imgtec.com/mips/architectures/mips64/">MIPS64 Architecture</a>.</p>
 
 <h2 id="gc">Generating Code for a Specific ABI</h2>
 <p>By default, the NDK generates machine code for the armeabi ABI. You can
diff --git a/docs/html/ndk/guides/audio/basics.jd b/docs/html/ndk/guides/audio/basics.jd
new file mode 100644
index 0000000..a5f0ff5
--- /dev/null
+++ b/docs/html/ndk/guides/audio/basics.jd
@@ -0,0 +1,125 @@
+page.title=OpenSL ES™ Basics
+@jd:body
+
+<div id="qv-wrapper">
+    <div id="qv">
+      <h2>On this page</h2>
+
+      <ol>
+        <li><a href="#adding">Adding OpenSL ES to Your App</a></li>
+        <li><a href="#building">Building and Debugging</a></li>
+        <li><a href="#samples">Samples</a></li>
+      </ol>
+    </div>
+  </div>
+
+
+<p>
+The Khronos Group's OpenSL ES standard exposes audio features
+similar to those in the {@link android.media.MediaPlayer} and {@link android.media.MediaRecorder}
+APIs in the Android Java framework. OpenSL ES provides a C language interface as well as
+C++ bindings, allowing you to call it from code written in either language.
+</p>
+
+<p>
+This page describes how to add these audio APIs into your app's source code, and how to incorporate
+them into the build process.
+</p>
+
+<h2 id="adding">Adding OpenSL ES to your App</h2>
+
+<p>
+You can call OpenSL ES from both C and C++ code. To add the core OpenSL ES
+feature set to your app, include the {@code OpenSLES.h} header file:
+
+</p>
+<pre>
+#include &lt;SLES/OpenSLES.h&gt;
+</pre>
+
+<p>
+To add the OpenSL ES <a href="{@docRoot}ndk/guides/audio/opensl-for-android.html#ae">
+Android extensions</a> as well, include the {@code OpenSLES_Android.h} header file:
+</p>
+<pre>
+#include &lt;SLES/OpenSLES_Android.h&gt;
+</pre>
+
+
+<h2 id="building">Building and Debugging</h2>
+
+<p>
+You can incorporate OpenSL ES into your build by specifying it in the
+<a href="{@docRoot}ndk/guides/android_mk.html">{@code Android.mk}</a> file that serves as one of the
+NDK build system's makefiles. Add the following line to
+<a href="{@docRoot}ndk/guides/android_mk.html">{@code Android.mk}</a>:
+</p>
+
+<pre>
+LOCAL_LDLIBS += -lOpenSLES
+</pre>
+
+<p>
+For robust debugging, we recommend that you examine the {@code SLresult} value that most of
+the OpenSL ES APIs return. You can use
+<a class="external-link" href="http://en.wikipedia.org/wiki/Assertion_(computing)">asserts</a>
+or more advanced error-handling logic for debugging; neither offers
+an inherent advantage for working with OpenSL ES, although one or the other might be more suitable
+for a given use case.
+</p>
+
+<p>
+We use asserts in our <a href="https://github.com/googlesamples/android-ndk">examples</a>, because
+they help catch unrealistic conditions that would indicate a coding error. We have used explicit
+error handling for other conditions more likely to occur in production.
+</p>
+
+<p>
+Many API errors result in a log entry, in addition to a non-zero result code. Such log entries
+can provide additional detail that proves especially useful for relatively complex APIs such as
+<a class="external-link" href="https://www.khronos.org/registry/sles/specs/OpenSL_ES_Specification_1.1.pdf">
+{@code Engine::CreateAudioPlayer}</a>.
+</p>
+
+<p>
+You can view the log either from the command line or from Android Studio. To examine the log from
+the command line, type the following:
+</p>
+
+<pre class="no-pretty-print">
+$ adb logcat
+</pre>
+
+<p>
+To examine the log from Android Studio, either click the <em>Logcat</em> tab in the
+<a href="{@docRoot}tools/debugging/debugging-studio.html#runDebug"><em>Debug</em></a>
+window, or click the <em>Devices | logcat</em> tab in the
+<a href="{@docRoot}tools/debugging/debugging-studio.html#systemLogView"><em>Android DDMS</em></a>
+window.
+</p>
+
+<h2 id="samples">Samples</h2>
+
+<p>
+Supported and tested example code that you can use as a model for your own code resides both locally
+and on GitHub. The local examples are located in
+{@code platforms/android-9/samples/native-audio/}, under your NDK root installation directory.
+On GitHub, they are available from the
+<a class="external-link" href="https://github.com/googlesamples/android-ndk">{@code android-ndk}</a>
+repository, in the
+<a class="external-link" href="https://github.com/googlesamples/android-ndk/tree/master/audio-echo">
+{@code audio-echo}</a> and
+<a class="external-link" href="https://github.com/googlesamples/android-ndk/tree/master/native-audio">
+{@code native-audio}</a> directories.
+</p>
+<p>The Android NDK implementation of OpenSL ES differs
+from the reference specification for OpenSL ES 1.0.1 in a number of respects.
+These differences are an important reason as to why sample code that
+you copy directly from the OpenSL ES reference specification may not work in your
+Android app.
+</p>
+<p>
+For more information on differences between the reference specification and the
+Android implementation, see
+<a href="{@docRoot}ndk/guides/audio/opensl-for-android.html">
+OpenSL ES™ for Android</a>.
diff --git a/docs/html/ndk/guides/audio/index.jd b/docs/html/ndk/guides/audio/index.jd
new file mode 100644
index 0000000..ac6e539
--- /dev/null
+++ b/docs/html/ndk/guides/audio/index.jd
@@ -0,0 +1,15 @@
+page.title=NDK Audio: OpenSL ES&#8482
+@jd:body
+
+<p>The NDK package includes an Android-specific implementation of the
+<a href="https://www.khronos.org/opensles/">OpenSL ES</a> API
+specification from the <a href="https://www.khronos.org">Khronos Group</a>. This library
+allows you to use C or C++ to implement high-performance, low-latency audio in your game or other
+demanding app.</p>
+
+<p>This section begins by providing some
+<a href="{@docRoot}ndk/guides/audio/basics.html">basic information</a> about the API, including how
+to incorporate it into your app. It then explains what you need to know about the
+<a href="{@docRoot}ndk/guides/audio/opensl-for-android.html">Android-specific implementation</a>
+of OpenSL ES, focusing on differences between this implementation and the reference specification.
+</p>
diff --git a/docs/html/ndk/guides/audio/opensl-for-android.jd b/docs/html/ndk/guides/audio/opensl-for-android.jd
new file mode 100644
index 0000000..763da5a
--- /dev/null
+++ b/docs/html/ndk/guides/audio/opensl-for-android.jd
@@ -0,0 +1,881 @@
+page.title=Native Audio: OpenSL ES&#8482; for Android
+@jd:body
+
+<div id="qv-wrapper">
+    <div id="qv">
+      <h2>On this page</h2>
+
+      <ol>
+        <li><a href="#inherited">Features Inherited from the Reference Specification</a></li>
+        <li><a href="#ae">Android Extensions</a></li>
+      </ol>
+    </div>
+  </div>
+
+<p>
+This page provides details about how the NDK implementation of OpenSL ES™ differs
+from the reference specification for OpenSL ES 1.0.1. When using sample code from the
+specification, you may need to modify it to work on Android.
+</p>
+
+<h2 id="inherited">Features Inherited from the Reference Specification</h2>
+
+<p>
+The Android NDK implementation of OpenSL ES inherits much of the feature set from
+the reference specification, although with certain limitations.
+</p>
+
+<h3>Global entry points</h3>
+
+<p>
+OpenSL ES for Android supports all of the global entry points in the Android specification.
+These entry points include:
+</p>
+
+<ul>
+<li>{@code slCreateEngine}
+</li>
+<li>{@code slQueryNumSupportedEngineInterfaces}</code>
+</li>
+<li>{@code slQuerySupportedEngineInterfaces}</code>
+</li>
+</ul>
+
+<h3>Objects and interfaces</h3>
+
+<p>
+Table 1 shows which objects and interfaces the Android NDK implementation of
+OpenSL ES supports. Green cells indicate features available in this implementation.
+</p>
+
+<p class="table-caption" id="Objects-and-interfaces">
+  <strong>Table 1.</strong> Android NDK support for objects and interfaces.</p>
+<table>
+  <tr>
+    <th scope="col">Feature</th>
+    <th scope="col">Audio player</th>
+    <th scope="col">Audio recorder</th>
+    <th scope="col">Engine</th>
+    <th scope="col">Output mix</th>
+  </tr>
+  <tr>
+    <td>Bass boost</td>
+    <td>Yes</td>
+    <td>No</td>
+    <td>No</td>
+    <td>Yes</td>
+  </tr>
+  <tr>
+    <td>Buffer queue</td>
+    <td>Yes</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Dynamic interface management</td>
+    <td>Yes</td>
+    <td>Yes</td>
+    <td>Yes</td>
+    <td>Yes</td>
+  </tr>
+  <tr>
+    <td>Effect send</td>
+    <td>Yes</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Engine</td>
+    <td>No</td>
+    <td>No</td>
+    <td>Yes</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Environmental reverb</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+    <td>Yes</td>
+  </tr>
+  <tr>
+    <td>Equalizer</td>
+    <td>Yes</td>
+    <td>No</td>
+    <td>No</td>
+    <td>Yes</td>
+  </tr>
+  <tr>
+    <td>Metadata extraction</td>
+    <td>Yes: Decode to PCM</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Mute solo</td>
+    <td>Yes</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Object</td>
+    <td>Yes</td>
+    <td>Yes</td>
+    <td>Yes</td>
+    <td>Yes</td>
+  </tr>
+  <tr>
+    <td>Play</td>
+    <td>Yes</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Playback rate</td>
+    <td>Yes</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Prefetch status</td>
+    <td>Yes</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Preset reverb</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+    <td>Yes</td>
+  </tr>
+  <tr>
+    <td>Record</td>
+    <td>No</td>
+    <td>Yes</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Seek</td>
+    <td>Yes</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Virtualizer</td>
+    <td>Yes</td>
+    <td>No</td>
+    <td>No</td>
+    <td>Yes</td>
+  </tr>
+  <tr>
+    <td>Volume</td>
+    <td>Yes</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Buffer queue data locator</td>
+    <td>Yes: Source</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>I/O device data locator</td>
+    <td>No</td>
+    <td>Yes: Source</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Output mix locator</td>
+    <td>Yes: Sink</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>URI data locator</td>
+    <td>Yes: Source</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  </table>
+
+The next section explains limitations of some of these features.
+
+<h3>Limitations</h3>
+
+<p>
+Certain limitations apply to the features in Table 1. These limitations
+represent differences from the reference specification. The rest of this section provides
+information about these differences.</p>
+
+<h4>Dynamic interface management</h4>
+
+<p>
+OpenSL ES for Android does not support {@code RemoveInterface} or
+{@code ResumeInterface}.
+</p>
+
+<h4>Effect combinations: environment reverb and preset reverb</h4>
+
+<p>
+You cannot have both environmental reverb and preset reverb on the same output mix.
+</p>
+<p>
+The platform might ignore effect requests if it estimates that the
+CPU load would be too high.
+</p>
+
+<h4>Effect send</h4>
+
+<p>
+<code>SetSendLevel()</code> supports a single send level per audio player.
+</p>
+
+<h4>Environmental reverb</h4>
+
+<p>
+Environmental reverb does not support the <code>reflectionsDelay</code>,
+<code>reflectionsLevel</code>, or <code>reverbDelay</code> fields of
+the <code>SLEnvironmentalReverbSettings</code> struct.
+</p>
+
+<h4>MIME data format</h4>
+
+<p>
+You can use the MIME data format only with the URI data locator, and only for an audio
+player. You cannot use this data format for an audio recorder.
+</p>
+<p>
+The Android implementation of OpenSL ES requires you to initialize <code>mimeType</code>
+to either <code>NULL</code> or a valid UTF-8 string. You must also initialize
+<code>containerType</code> to a valid value.
+In the absence of other considerations, such as portability to other
+implementations, or content format that an app cannot identify by header,
+we recommend that you
+set <code>mimeType</code> to <code>NULL</code> and <code>containerType</code>
+to <code>SL_CONTAINERTYPE_UNSPECIFIED</code>.
+</p>
+<p>
+OpenSL ES for Android supports the following audio formats, so long as the
+Android platform supports them as well:</p>
+
+<ul>
+<li>WAV PCM</li>
+<li>WAV alaw</li>
+<li>WAV ulaw</li>
+<li>MP3 Ogg Vorbis</li>
+<li>AAC LC</li>
+<li>HE-AACv1 (AAC+)</li>
+<li>HE-AACv2 (enhanced AAC+)</li>
+<li>AMR</li>
+<li>FLAC</li>
+</ul>
+
+<p>
+For a list of audio formats that Android supports, see
+<a href="{@docRoot}guide/appendix/media-formats.html">Supported Media Formats</a>.
+</p>
+
+<p>
+The following limitations apply to handling of these and other formats in this
+implementation of OpenSL ES:
+</p>
+
+<ul>
+<li>AAC formats must be reside within an MP4 or ADTS container.</li>
+<li>OpenSL ES for Android does not support MIDI.</li>
+<li>WMA is not part of <a class="external-link" href="https://source.android.com/">AOSP</a>, and we
+have not verified its compatibility with OpenSL ES for Android.</li>
+<li>The Android NDK implementation of OpenSL ES does not support direct
+playback of DRM or encrypted content. To play back protected audio content, you must
+decrypt it in your application before playing, with your app enforcing any DRM
+restrictions.</li>
+</ul>
+
+<h4>Object-related methods</h4>
+
+<p>
+OpenSL ES for Android does not support the following methods for manipulating objects:
+</p>
+
+<ul>
+<li>{@code Resume()}</li>
+<li>{@code RegisterCallback()}</li>
+<li>{@code AbortAsyncOperation()}</li>
+<li>{@code SetPriority()}</li>
+<li>{@code GetPriority()}</li>
+<li>{@code SetLossOfControlInterfaces()}</li>
+</ul>
+
+<h4>PCM data format</h4>
+
+<p>
+PCM is the only data format you can use with buffer queues. Supported PCM
+playback configurations have the following characteristics:
+</p>
+
+<ul>
+<li>8-bit unsigned or 16-bit signed.</li>
+<li>Mono or stereo.</li>
+<li>Little-endian byte ordering.</li>
+<li>Sample rates of: 8,000, 11,025, 12,000, 16,000, 22,050, 24,000, 32,000, 44,100, or
+48,000 Hz.</li>
+</ul>
+
+<p>
+The configurations that OpenSL ES for Android supports for recording are
+device-dependent; usually, 16,000 Hz mono 16-bit signed is available regardless of device.
+</p>
+<p>
+The value of the <code>samplesPerSec</code> field is in units of milliHz, despite the misleading
+name. To avoid accidentally using the wrong value, we recommend that you initialize this field using
+one of the symbolic constants defined for this purpose, such as {@code SL_SAMPLINGRATE_44_1}.
+</p>
+<p>
+Android 5.0 (API level 21) and above support <a href="#fp">floating-point data</a>.
+</p>
+
+<h4>Playback rate</h4>
+
+<p>
+An OpenSL ES <i>playback rate</i> indicates the speed at which an
+object presents data, expressed in thousandths of normal speed, or <i>per mille</i>. For example,
+a playback rate of 1,000 per mille is 1,000/1,000, or normal speed.
+A <i>rate range</i> is a closed interval that expresses possible rate ranges.
+</p>
+
+<p>
+Support for playback-rate ranges and other capabilities may vary depending
+on the platform version and implementation. Your app can determine these capabilities at runtime by
+using <code>PlaybackRate::GetRateRange()</code> or
+<code>PlaybackRate::GetCapabilitiesOfRate()</code> to query the device.
+</p>
+
+<p>
+A device typically supports the same rate range for a data source in PCM format, and a unity rate
+range of 1000 per mille to 1000 per mille for other formats: that is, the unity rate range is
+effectively a single value.
+</p>
+
+<h4>Record</h4>
+
+<p>
+OpenSL ES for Android does not support the <code>SL_RECORDEVENT_HEADATLIMIT</code>
+or <code>SL_RECORDEVENT_HEADMOVING</code> events.
+</p>
+
+<h4>Seek</h4>
+
+<p>
+The <code>SetLoop()</code> method enables whole-file looping. To enable looping,
+set the <code>startPos</code> parameter to 0, and the value of the <code>endPos</code> parameter
+to <code>SL_TIME_UNKNOWN</code>.
+</p>
+
+<h4>Buffer queue data locator</h4>
+
+<p>
+An audio player or recorder with a data locator for a buffer queue supports PCM data format only.
+</p>
+
+<h4>I/O Device data locator</h4>
+
+<p>
+OpenSL ES for Android only supports use of an I/O device data locator when you have
+specified the locator as the data source for <code>Engine::CreateAudioRecorder()</code>.
+Initialize the device data locator using the values contained in the following code snippet.
+</p>
+
+<pre>
+SLDataLocator_IODevice loc_dev =
+  {SL_DATALOCATOR_IODEVICE, SL_IODEVICE_AUDIOINPUT,
+  SL_DEFAULTDEVICEID_AUDIOINPUT, NULL};
+</pre>
+
+<h4>URI data locator</h4>
+
+<p>
+OpenSL ES for Android can only use the URI data locator with MIME data format,
+and only for an audio player. You cannot use this data format for an audio recorder. It supports
+{@code http:} and {@code file:} schemes. It does not support other schemes, such as {@code https:},
+{@code ftp:}, or
+{@code content:}.
+</p>
+
+<p>
+We have not verified support for {@code rtsp:} with audio on the Android platform.
+</p>
+
+<h2 id="ae">Android Extensions</h2>
+
+<p>
+OpenSL ES for Android extends the reference OpenSL ES specification to make it compatible with
+Android, and to take advantage of the power and flexibility of the Android platform.
+</p>
+
+<p>
+The definition of the API for the Android extensions resides in <code>OpenSLES_Android.h</code>
+and the header files that it includes. Consult {@code OpenSLES_Android.h}
+for details about these extensions. This file is located under your installation root, in the
+{@code platforms/android-&lt;version&gt;/&lt;abi&gt;/include/SLES} directory. Unless otherwise
+noted, all interfaces are explicit.
+</p>
+
+<p>
+These extensions limit your application's portability to
+other OpenSL ES implementations, because they are Android-specific. You can mitigate this issue by
+avoiding use of the extensions or by using {@code #ifdef} to exclude them at compile time.
+</p>
+
+<p>
+Table 2 shows the Android-specific interfaces and data locators that Android OpenSL ES supports
+for each object type. Green cells indicate interfaces and data locators available for each
+object type.
+</p>
+
+<p class="table-caption" id="Android-extensions">
+  <strong>Table 2.</strong> Interfaces and data locators, by object type.</p>
+<table>
+  <tr>
+    <th scope="col">Feature</th>
+    <th scope="col">Audio player</th>
+    <th scope="col">Audio recorder</th>
+    <th scope="col">Engine</th>
+    <th scope="col">Output mix</th>
+  </tr>
+  <tr>
+    <td>Android buffer queue</td>
+    <td>Yes: Source (decode)</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Android configuration</td>
+    <td>Yes</td>
+    <td>Yes</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Android effect</td>
+    <td>Yes</td>
+    <td>No</td>
+    <td>No</td>
+    <td>Yes</td>
+  </tr>
+  <tr>
+    <td>Android effect capabilities</td>
+    <td>No</td>
+    <td>No</td>
+    <td>Yes</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Android effect send</td>
+    <td>Yes</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Android simple buffer queue</td>
+    <td>Yes: Source (playback) or sink (decode)</td>
+    <td>Yes</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Android buffer queue data locator</td>
+    <td>Yes: Source (decode)</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Android file descriptor data locator</td>
+    <td>Yes: Source</td>
+    <td>No</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+  <tr>
+    <td>Android simple buffer queue data locator</td>
+    <td>Yes: Source (playback) or sink (decode)</td>
+    <td>Yes: Sink</td>
+    <td>No</td>
+    <td>No</td>
+  </tr>
+</table>
+
+<h3>Android configuration interface</h3>
+
+<p>
+The Android configuration interface provides a means to set
+platform-specific parameters for objects. This interface is different from other OpenSL ES
+1.0.1 interfaces in that your app can use it before instantiating the corresponding object; thus,
+you can configure the object before instantiating it. The
+{@code OpenSLES_AndroidConfiguration.h} header file</code>, which resides at
+{@code platforms/android-&lt;version&gt;/&lt;abi&gt;/include/SLES},
+documents the following available configuration keys and values:
+</p>
+
+<ul>
+<li>Stream type for audio players (default <code>SL_ANDROID_STREAM_MEDIA</code>).</li>
+<li>Record profile for audio recorders (default <code>SL_ANDROID_RECORDING_PRESET_GENERIC</code>).
+</li>
+</ul>
+
+<p>
+The following code snippet shows an example of how to set the Android audio stream type on an audio
+player:
+</p>
+
+<pre>
+// CreateAudioPlayer and specify SL_IID_ANDROIDCONFIGURATION
+// in the required interface ID array. Do not realize player yet.
+// ...
+SLAndroidConfigurationItf playerConfig;
+result = (*playerObject)-&gt;GetInterface(playerObject,
+    SL_IID_ANDROIDCONFIGURATION, &amp;playerConfig);
+assert(SL_RESULT_SUCCESS == result);
+SLint32 streamType = SL_ANDROID_STREAM_ALARM;
+result = (*playerConfig)-&gt;SetConfiguration(playerConfig,
+    SL_ANDROID_KEY_STREAM_TYPE, &amp;streamType, sizeof(SLint32));
+assert(SL_RESULT_SUCCESS == result);
+// ...
+// Now realize the player here.
+</pre>
+
+<p>
+You can use similar code to configure the preset for an audio recorder:
+</p>
+<pre>
+// ... obtain the configuration interface as the first four lines above, then:
+SLuint32 presetValue = SL_ANDROID_RECORDING_PRESET_VOICE_RECOGNITION;
+result = (*playerConfig)-&gt;SetConfiguration(playerConfig,
+    RECORDING_PRESET, &amp;presetValue, sizeof(SLuint32));
+</pre>
+
+<h3>Android effects interfaces</h3>
+
+<p>
+Android's effect, effect send, and effect capabilities interfaces provide
+a generic mechanism for an application to query and use device-specific
+audio effects. Device manufacturers should document any available device-specific audio effects
+that they provide.
+</p>
+
+<h3>Android file descriptor data locator</h3>
+
+<p>
+The Android file descriptor data locator permits you to specify the source for an
+audio player as an open file descriptor with read access. The data format must be MIME.
+</p>
+<p>
+This extension is especially useful in conjunction with the native asset manager, because
+the app reads assets from the APK via a file descriptor.
+</p>
+
+<h3 id="simple">Android simple buffer queue data locator and interface</h3>
+
+<p>
+The Android simple buffer queue data locator and interface are
+identical to those in the OpenSL ES 1.0.1 reference specification, with two exceptions: You
+can also use Android simple buffer queues with both audio players and audio recorders.  Also, PCM
+is the only data format you can use with these queues.
+In the reference specification, buffer queues are for audio players only, but
+compatible with data formats beyond PCM.
+</p>
+<p>
+For recording, your app should enqueue empty buffers. When a registered callback sends
+notification that the system has finished writing data to the buffer, the app can
+read the buffer.
+</p>
+<p>
+Playback works in the same way. For future source code
+compatibility, however, we suggest that applications use Android simple
+buffer queues instead of OpenSL ES 1.0.1 buffer queues.
+</p>
+
+<h3>Dynamic interfaces at object creation</h3>
+
+<p>
+For convenience, the Android implementation of OpenSL ES 1.0.1
+permits your app to specify dynamic interfaces when it instantiates an object.
+This is an alternative to using <code>DynamicInterfaceManagement::AddInterface()</code>
+to add these interfaces after instantiation.
+</p>
+
+<h3>Buffer queue behavior</h3>
+
+<p>
+The Android implementation does not include the
+reference specification's requirement that the play cursor return to the beginning
+of the currently playing buffer when playback enters the {@code SL_PLAYSTATE_STOPPED}
+state. This implementation can conform to that behavior, or it can leave the location of the play
+cursor unchanged.
+</p>
+
+<p>
+As a result, your app cannot assume that either behavior occurs. Therefore,
+you should explicitly call the <code>BufferQueue::Clear()</code> method after a transition to
+<code>SL_PLAYSTATE_STOPPED</code>. Doing so sets the buffer queue to a known state.
+</p>
+
+<p>
+Similarly, there is no specification governing whether the trigger for a buffer queue callback must
+be a transition to <code>SL_PLAYSTATE_STOPPED</code> or execution of
+<code>BufferQueue::Clear()</code>. Therefore, we recommend against creating a dependency on
+one or the other; instead, your app should be able to handle both.
+</p>
+
+<h3>Reporting of extensions</h3>
+<p>
+There are three methods for querying whether the platform supports the Android extensions. These
+methods are:
+</p>
+
+<ul>
+<li><code>Engine::QueryNumSupportedExtensions()</code></li>
+<li><code>Engine::QuerySupportedExtension()</code></li>
+<li><code>Engine::IsExtensionSupported()</code></li>
+</ul>
+
+<p>
+Any of these methods returns <code>ANDROID_SDK_LEVEL_&lt;API-level&gt;</code>,
+where {@code API-level} is the platform API level; for example, {@code ANDROID_SDK_LEVEL_23}.
+A platform API level of 9 or higher means that the platform supports the extensions.
+</p>
+
+
+<h3 id="da">Decode audio to PCM</h3>
+
+<p>
+This section describes a deprecated Android-specific extension to OpenSL ES 1.0.1
+for decoding an encoded stream to PCM without immediate playback.
+The table below gives recommendations for use of this extension and alternatives.
+</p>
+
+<table>
+<tr>
+  <th>API level</th>
+  <th>Alternatives</th>
+</tr>
+<tr>
+  <td>13 and below</td>
+  <td>An open-source codec with a suitable license.</td>
+</tr>
+<tr>
+  <td>14 to 15</td>
+  <td>An open-source codec with a suitable license.</td>
+</tr>
+<tr>
+  <td>16 to 20</td>
+  <td>
+    The {@link android.media.MediaCodec} class or an open-source codec with a suitable license.
+  </td>
+</tr>
+<tr>
+  <td>21 and above</td>
+  <td>
+    NDK MediaCodec in the {@code &lt;media/NdkMedia*.h&gt;} header files, the
+    {@link android.media.MediaCodec} class, or an open-source codec with a suitable license.
+  </td>
+</tr>
+</table>
+
+<p>
+A standard audio player plays back to an audio device, specifying the output mix as the data sink.
+The Android extension differs in that an audio player instead
+acts as a decoder if the app has specified the data source either as a URI or as an Android
+file descriptor data locator described in MIME data format. In such a case, the data sink is
+an Android simple buffer queue data locator with PCM data format.
+</p>
+
+<p>
+This feature is primarily intended for games to pre-load their audio assets when changing to a
+new game level, similar to the functionality that the {@link android.media.SoundPool} class
+provides.
+</p>
+
+<p>
+The application should initially enqueue a set of empty buffers in the Android simple
+buffer queue. After that, the app fills the buffers with with PCM data. The Android simple
+buffer queue callback fires after each buffer is filled. The callback handler processes
+the PCM data, re-enqueues the now-empty buffer, and then returns. The application is responsible for
+keeping track of decoded buffers; the callback parameter list does not include
+sufficient information to indicate which buffer contains data or which buffer to enqueue next.
+</p>
+
+<p>
+The data source implicitly reports the end of stream (EOS) by delivering a
+<code>SL_PLAYEVENT_HEADATEND</code> event at the end of the stream. After the app has decoded
+all of the data it received, it makes no further calls to the Android simple buffer queue callback.
+</p>
+<p>
+The sink's PCM data format typically matches that of the encoded data source
+with respect to sample rate, channel count, and bit depth. However, you can decode to a different
+sample rate, channel count, or bit depth.
+For information about a provision to detect the actual PCM format, see <a href="#meta">
+Determining the format of decoded PCM data via metadata</a>.
+</p>
+<p>
+OpenSL ES for Android's PCM decoding feature supports pause and initial seek; it does not support
+volume control, effects, looping, or playback rate.
+</p>
+<p>
+Depending on the platform implementation, decoding may require resources
+that cannot be left idle.  Therefore, we recommend that you make sure to provide
+sufficient numbers of empty PCM buffers; otherwise, the decoder starves. This may happen,
+for example, if your app returns from the Android simple buffer queue callback without
+enqueueing another empty buffer.  The result of decoder starvation is
+unspecified, but may include: dropping the decoded
+PCM data, pausing the decoding process, or terminating the decoder outright.
+</p>
+
+<p class="note"><strong>Note: </strong>
+To decode an encoded stream to PCM but not play back immediately, for apps running on
+Android 4.x (API levels 16&ndash;20), we recommend using the {@link android.media.MediaCodec} class.
+For new applications running on Android 5.0 (API level 21) or higher, we recommend using the NDK
+equivalent, {@code &lt;NdkMedia*.h&gt;}. These header files reside under
+the {@code media/} directory, under your installation root.
+</p>
+
+<h3>Decode streaming ADTS AAC to PCM</h3>
+
+<p>
+An audio player acts as a streaming decoder if the data source is an
+Android buffer queue data locator with MIME data format, and the data
+sink is an Android simple buffer queue data locator with PCM data format.
+Configure the MIME data format as follows:
+</p>
+
+<ul>
+<li>Container: {@code SL_CONTAINERTYPE_RAW}</li>
+<li>MIME type string: {@code SL_ANDROID_MIME_AACADTS}</li>
+</ul>
+
+<p>
+This feature is primarily intended for streaming media applications that
+deal with AAC audio but need to perform custom audio processing
+prior to playback.  Most applications that need to decode audio to PCM
+should use the method that <a href="#da">Decode audio to PCM</a> describes,
+as that method is simpler and handles more audio formats.  The technique described
+here is a more specialized approach, to be used only if both of these
+conditions apply:
+</p>
+
+<ul>
+<li>The compressed audio source is a stream of AAC frames contained in ADTS headers.
+</li>
+<li>The application manages this stream. The data is <em>not</em> located within
+a network resource whose identifier is a URI or within a local file whose identifier is
+a file descriptor.
+</li>
+</ul>
+
+<p>
+The application should initially enqueue a set of filled buffers in the Android buffer queue.
+Each buffer contains one or more complete ADTS AAC frames.
+The Android buffer queue callback fires after each buffer is emptied.
+The callback handler should refill and re-enqueue the buffer, and then return.
+The application need not keep track of encoded buffers; the callback parameter
+list includes sufficient information to indicate which buffer to enqueue next.
+The end of stream is explicitly marked by enqueuing an EOS item.
+After EOS, no more enqueues are permitted.
+</p>
+
+<p>
+We recommend that you make sure to provide full
+ADTS AAC buffers, to avoid starving the decoder. This may happen, for example, if your app
+returns from the Android buffer queue callback without enqueueing another full buffer.
+The result of decoder starvation is unspecified.
+</p>
+
+<p>
+In all respects except for the data source, the streaming decode method is the same as
+the one that <a href="#da">Decode audio to PCM</a> describes.
+</p>
+<p>
+Despite the similarity in names, an Android buffer queue is <em>not</em>
+the same as an <a href="#simple">Android simple buffer queue</a>. The streaming decoder
+uses both kinds of buffer queues: an Android buffer queue for the ADTS
+AAC data source, and an Android simple buffer queue for the PCM data
+sink.  For more information about the Android simple buffer queue API, see <a href="#simple">Android
+simple buffer queue data locator and interface</a>.
+For more information about the Android buffer queue API, see the {@code index.html} file in
+the {@code docs/Additional_library_docs/openmaxal/} directory under the installation root.
+</p>
+
+<h3 id="meta">Determining the format of decoded PCM data via metadata</h3>
+
+<p>
+The <code>SLMetadataExtractionItf</code> interface is part of the reference specification.
+However, the metadata keys that indicate the actual format of decoded PCM data are specific to
+Android. The <code>OpenSLES_AndroidMetadata.h</code> header file defines these metadata keys.
+This header file resides under your installation root, in the
+{@code platforms/android-&lt;version&gt;/&lt;abi&gt;/include/SLES} directory.
+</p>
+
+<p>
+The metadata key indices are available immediately after
+the <code>Object::Realize()</code> method finishes executing. However, the associated values are not
+available until after the app decodes the first encoded data.  A good
+practice is to query for the key indices in the main thread after calling the {@code
+Object::Realize} method, and to read the PCM format metadata values in the Android simple
+buffer queue callback handler when calling it for the first time. Consult the
+<a href="https://github.com/googlesamples/android-ndk">example code in the NDK package</a>
+for examples of working with this interface.
+</p>
+
+<p>
+Metadata key names are stable, but the key indices are not documented,
+and are subject to change.  An application should not assume that indices
+are persistent across different execution runs, and should not assume that
+multiple object instances share indices within the same run.
+</p>
+
+<h3 id="fp">Floating-point data</h3>
+
+<p>
+An app running on Android 5.0 (API level 21) and higher can supply data to an AudioPlayer in
+single-precision, floating-point format.
+</p>
+<p>
+In following example code, the {@code Engine::CreateAudioPlayer} method creates an audio player
+that uses floating-point data:
+</p>
+
+<pre>
+#include &lt;SLES/OpenSLES_Android.h&gt;
+...
+SLAndroidDataFormat_PCM_EX pcm;
+pcm.formatType = SL_ANDROID_DATAFORMAT_PCM_EX;
+pcm.numChannels = 2;
+pcm.sampleRate = SL_SAMPLINGRATE_44_1;
+pcm.bitsPerSample = 32;
+pcm.containerSize = 32;
+pcm.channelMask = SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT;
+pcm.endianness = SL_BYTEORDER_LITTLEENDIAN;
+pcm.representation = SL_ANDROID_PCM_REPRESENTATION_FLOAT;
+...
+SLDataSource audiosrc;
+audiosrc.pLocator = ...
+audiosrc.pFormat = &amp;pcm;
+</pre>
diff --git a/docs/html/ndk/guides/concepts.jd b/docs/html/ndk/guides/concepts.jd
old mode 100644
new mode 100755
index 9f2b22a..7879219
--- a/docs/html/ndk/guides/concepts.jd
+++ b/docs/html/ndk/guides/concepts.jd
@@ -18,12 +18,9 @@
 
 <h2 id="bb">Before Beginning</h2>
 
-<p>This guide assumes that you are:</p>
-<ul>
-<li>Already familiar with concepts inherent in native programming and in
-<a href="{@docRoot}">Android development</a>.</li>
-<li>Working in <a href="{@docRoot}sdk/index.html">Eclipse, and using the Android
-Development Tools (ADT)</a>, except where otherwise noted.</li>
+<p>This guide assumes that you are already familiar with concepts inherent in native programming and 
+in <a href="{@docRoot}developer/index.html">Android development</a>.</p>
+
 </ul>
 <h2 id="intro">Introduction</h2>
 
@@ -151,15 +148,13 @@
 <p class="note"><strong>Note:</strong> While it is possible to completely avoid Java, you are likely
 to find the Android Java framework useful for tasks including controlling the display and UI.</p>
 </li>
-
-<li>Create an Android app Project in Eclipse as you would for any other Android project.</li>
+<li>Create an Android app Project as you would for any other Android project.</li>
 <li>If you are writing a native-only app, declare the {@link android.app.NativeActivity} class in
-{@code AndroidManifest.xml}. You can do so from the Eclipse/ADT Android Manifest Editor, or by
-hand-editing the file. For more information, see the <a href="#naa">Native Activities and
+{@code AndroidManifest.xml}. For more information, see the <a href="#naa">Native Activities and
 Applications</a>.
 </li>
 <li>Create an {@code Android.mk} file describing the native library, including name, flags, linked
-libraries, and source files to be compiled in the ‘JNI’ directory.</li>
+libraries, and source files to be compiled in the "JNI" directory.</li>
 <li>Optionally, you can create an {@code Application.mk} file configuring the target ABIs,
 toolchain, release/debug mode, and STL. For any of these that you do not specify, the following
 default values are used, respectively:
@@ -184,7 +179,6 @@
 needed for your app to run.
 </ol>
 
-<p>Note that Eclipse can perform steps 7. through 9. in a single operation.</p>
 
 <h2 id="naa">Native Activities and Applications</h2>
 
@@ -300,7 +294,7 @@
 $ &lt;ndk&gt;/ndk-build
 </pre>
 
-<li>Build and install your Android project as usual, using Ant or Eclipse. If your native code is in
+<li>Build and install your Android project as usual. If your native code is in
 the {@code jni/} directory, the build script automatically packages the {@code .so} file(s) built
 from it into the APK.</li>
 </ol>
diff --git a/docs/html/ndk/guides/graphics/index.jd b/docs/html/ndk/guides/graphics/index.jd
new file mode 100644
index 0000000..f3cf9dc
--- /dev/null
+++ b/docs/html/ndk/guides/graphics/index.jd
@@ -0,0 +1,22 @@
+page.title=Vulkan Graphics API
+@jd:body
+
+<p>
+<a class="external-link" href="https://www.khronos.org/vulkan/">Vulkan</a> is a
+low-overhead, cross-platform API for high-performance, 3D graphics. Like OpenGL
+ES, Vulkan provides tools for creating high-quality, real-time graphics in
+applications. Vulkan also provides advantages such as reducing
+CPU overhead and providing support for the
+<a class="external-link" href="https://www.khronos.org/spir">SPIR-V Binary
+Intermediate language</a>.
+</p>
+
+<p>
+For general information about this cross-platform API specification, see
+Khronos's
+<a class="external-link" href="http://khr.io/vulkanlaunchoverview">
+Vulkan Overview</a>.
+You can also keep up with the latest Vulkan-related developments at the
+Vulkan
+<a class="external-link" href="https://www.khronos.org/#slider_vulkan">news page</a>.
+</p>
diff --git a/docs/html/ndk/guides/guides_toc.cs b/docs/html/ndk/guides/guides_toc.cs
index 981eb51..2f31b4b 100644
--- a/docs/html/ndk/guides/guides_toc.cs
+++ b/docs/html/ndk/guides/guides_toc.cs
@@ -63,6 +63,23 @@
       </ul>
    </li>
 
+      <li class="nav-section">
+      <div class="nav-section-header"><a href="<?cs var:toroot ?>ndk/guides/audio/index.html">
+      <span class="en">Audio</span></a></div>
+      <ul>
+      <li><a href="<?cs var:toroot ?>ndk/guides/audio/basics.html">Basics</a></li>
+      <li><a href="<?cs var:toroot ?>ndk/guides/audio/opensl-for-android.html">OpenSL ES for
+      Android</a></li>
+      </ul>
+   </li>
+
+      <li class="nav-section">
+      <div class="nav-section-header empty">
+      <a href="<?cs var:toroot ?>ndk/guides/graphics/index.html">
+      <span class="en">Graphics</span></a></div>
+   </li>
+
+
 </ul>
 
 
diff --git a/docs/html/ndk/guides/mips.jd b/docs/html/ndk/guides/mips.jd
old mode 100644
new mode 100755
index 2b4eea4..d104ffe
--- a/docs/html/ndk/guides/mips.jd
+++ b/docs/html/ndk/guides/mips.jd
@@ -40,4 +40,4 @@
 <h2 id="comp">Compatibility</h2>
 <p>MIPS support requires, at minimum, Android 2.3 (Android API level 9). If your project files
 target an older API level, but include MIPS as a targeted platform, the NDK build script
-automatically selects the right set of native platform headers/libraries for you.</p>
\ No newline at end of file
+automatically selects the right set of native platform headers/libraries for you.</p>
diff --git a/docs/html/ndk/guides/ndk-build.jd b/docs/html/ndk/guides/ndk-build.jd
old mode 100644
new mode 100755
index e8f6fc5..e653bf5
--- a/docs/html/ndk/guides/ndk-build.jd
+++ b/docs/html/ndk/guides/ndk-build.jd
@@ -8,7 +8,6 @@
       <ol>
         <li><a href="#int">Internals</a></li>
          <li><a href="#ifc">Invoking from the Command Line</a></li>
-         <li><a href="#ife">Invoking from Eclipse</a></li>
          <li><a href="#6432">64-Bit and 32-Bit Toolchains</a></li>
          <li><a href="#req">Requirements</a></li>
           </ol>
@@ -85,29 +84,6 @@
   don't want to {@code cd} to it in your terminal.</dd>
 </dl>
 
-<h2 id="ife">Invoking from Eclipse</h2>
-<p>To build from Eclipse, make sure that you have configured it as described in
-<a href="{@docRoot}ndk/guides/setup.html#configure">Setup</a>. If you
-wish to build using the default <code>ndk-build</code> command, with no
-options, you can just build your project just as you would any Android project.
-To get Eclipse to add any of the options described above, follow these steps:</p>
-<ol type="1">
-<li>In the <em>Project Explorer</em> pane, right-click your project name.</li>
-<li>Select <strong>Properties</strong>.</li>
-<li>Click <strong>C/C++ Build</strong>.</li>
-<li>Under the <em>Builder Settings</em> tab, uncheck <strong>Use default build command</strong>.</li>
-<li>In the <em>Build command</em> field, enter the entire build string as if you were typing it on
-the command line.</li>
-<li>Click <strong>OK</strong>.</li>
-</ol>
-Figure 1 shows an example of an entered string.<br>
-<br>
-<img src="./images/NDK_build_string.png"
-    srcset="./images/NDK_build_string@2x.png 2x"
-    alt="enter the build string next to 'Build command'"
-    height="152" width="501">
-<p style="clear:both"><b>Figure 1.</b> Specifying a debug build from within
-Eclipse</p>
 <p><a class="anchor" id="dvr"></a> </p>
 <h3>Debuggable versus Release builds</h3>
 <p>Use the <code>NDK_DEBUG</code> option and, in certain cases,
diff --git a/docs/html/ndk/guides/ndk-gdb.jd b/docs/html/ndk/guides/ndk-gdb.jd
old mode 100644
new mode 100755
index 5e2b751..1a990f0
--- a/docs/html/ndk/guides/ndk-gdb.jd
+++ b/docs/html/ndk/guides/ndk-gdb.jd
@@ -27,15 +27,13 @@
 {@code <application>} element that sets the {@code android:debuggable} attribute to {@code
 true}.</li>
 <li>Build your app to run on Android 2.2 (Android API level 8) or higher.</li>
-<li>Debug on a device or emulator running Android 2.2 or higher. For debugging purposes, the target
+<li>Debug on a device or emulator running Android 2.2 or higher.
+ For debugging purposes, the target
 API level that you declare in your {@code AndroidManifest.xml} file does not matter.</li>
 <li>Develop your app in a Unix shell. On Windows, use <a href="https://www.cygwin.com/">Cygwin</a>
 or the experimental {@code ndk-gdb-py} <a href="https://www.python.org/">Python</a>
 implementation.</li>
-<li>Use GNU Make 3.81 or higher.</li>
-<li>If you are building your app from
-<a href="{@docRoot}sdk/installing/installing-adt.html">Eclipse</a>, build it
-using version 0.9.7 or higher of the ADT plug-in.</li>
+<li>Use GNU Make 3.81 or higher.</li></ul>
 
 <h2 id="use">Usage</h2>
   To invoke the {@code ndk-gdb} script, change into the application directory or any directory under
@@ -224,14 +222,6 @@
 cannot debug native threads properly. The debugger can only debug the main thread, abd completely
 ignores the execution of other threads.</p>
 
-<p>Using a version of Android prior to 2.3 causes {@code ndk-gdb} to display the following message
-prior to showing the GDB prompt:</p>
-
-<pre class="no-pretty-print">
-Thread debugging is unsupported on this Android platform!
-</pre>
-
-
 <p>If you place a breakpoint on a function executed on a non-main thread, the program exits, and
 GDB displays the following message:</p>
 
diff --git a/docs/html/ndk/guides/standalone_toolchain.jd b/docs/html/ndk/guides/standalone_toolchain.jd
old mode 100644
new mode 100755
index aec7073..7a6f906
--- a/docs/html/ndk/guides/standalone_toolchain.jd
+++ b/docs/html/ndk/guides/standalone_toolchain.jd
@@ -17,7 +17,7 @@
   </div>
 
 <p>You can use the toolchains provided with the Android NDK independently, or as plug-ins
-with an existing IDE, such as Eclipse. This flexibility
+with an existing IDE. This flexibility
 can be useful if you already have your own build system, and only need the ability to invoke the
 cross-compiler in order to add support to Android for it.</p>
 
diff --git a/docs/html/ndk/index.jd b/docs/html/ndk/index.jd
index a88c15d..fc1c595 100644
--- a/docs/html/ndk/index.jd
+++ b/docs/html/ndk/index.jd
@@ -40,11 +40,12 @@
     <i class="dac-sprite dac-arrow-down-gray"></i>
   </a>
 </div>
-<section class="dac-section dac-gray dac-small dac-invert" id="latest"><div class="wrap">
+<section class="dac-section dac-gray dac-small" id="latest"><div class="wrap">
   <h2 class="norule">Latest</h2>
   <div class="resource-widget resource-flow-layout col-16"
        data-query="type:blog+tag:ndk"
        data-cardSizes="6x6"
        data-maxResults="9"
+       data-items-per-page="6"
        data-initial-results="3"></div>
 </div></section>
diff --git a/docs/html/ndk/reference/_book.yaml b/docs/html/ndk/reference/_book.yaml
new file mode 100644
index 0000000..ab8b8f9
--- /dev/null
+++ b/docs/html/ndk/reference/_book.yaml
@@ -0,0 +1,60 @@
+toc:
+- title: Asset Manager
+  path: /ndk/reference/group___asset.html
+  section:
+  - title: asset_manager.h
+    path: /ndk/reference/asset__manager_8h.html
+  - title: asset_manager_jni.h
+    path: /ndk/reference/asset__manager__jni_8h.html
+
+- title: Bitmap
+  path: /ndk/reference/group___bitmap.html
+  section:
+  - title: bitmap.h
+    path: /ndk/reference/bitmap_8h.html
+
+- title: Configuration
+  path: /ndk/reference/group___configuration.html
+  section:
+  - title: configuration.h
+    path: /ndk/reference/configuration_8h.html
+
+- title: Input
+  path: /ndk/reference/group___input.html
+  section:
+  - title: input.h
+    path: /ndk/reference/input_8h.html
+  - title: keycodes.h
+    path: /ndk/reference/keycodes_8h.html
+
+- title: Looper
+  path: /ndk/reference/group___looper.html
+  section:
+  - title: looper.h
+    path: /ndk/reference/looper_8h.html
+
+- title: Native Activity and Window
+  path: /ndk/reference/group___native_activity.html
+  section:
+  - title: native_activity.h
+    path: /ndk/reference/native__activity_8h.html
+  - title: native_window.h
+    path: /ndk/reference/native__window_8h.html
+  - title: native_window.h
+    path: /ndk/reference/native__window__jni_8h.html
+  - title: rect.h
+    path: /ndk/reference/rect_8h.html
+
+- title: Sensor
+  path: /ndk/reference/group___sensor.html
+  section:
+  - title: sensor.h
+    path: /ndk/reference/sensor_8h.html
+
+- title: Storage Manager
+  path: /ndk/reference/group___storage.html
+  section:
+  - title: storage_manager.h
+    path: /ndk/reference/storage__manager_8h.html
+  - title: obb.h
+    path: /ndk/reference/obb_8h.html
diff --git a/docs/html/ndk/samples/_book.yaml b/docs/html/ndk/samples/_book.yaml
new file mode 100644
index 0000000..3665f5a
--- /dev/null
+++ b/docs/html/ndk/samples/_book.yaml
@@ -0,0 +1,13 @@
+toc:
+- title: Overview
+  path: /ndk/samples/index.html
+
+- title: Walkthroughs
+  path: /ndk/samples/walkthroughs.html
+  section:
+  - title: hello-jni
+    path: /ndk/samples/sample_hellojni.html
+  - title: native-activity
+    path: /ndk/samples/sample_na.html
+  - title: Teapot
+    path: /ndk/samples/sample_teapot.html
diff --git a/docs/html/preview/_book.yaml b/docs/html/preview/_book.yaml
new file mode 100644
index 0000000..e4f1aba
--- /dev/null
+++ b/docs/html/preview/_book.yaml
@@ -0,0 +1,94 @@
+toc:
+- title: Program Overview
+  path: /preview/overview.html
+  custom_link_attributes:
+  - es-lang="Información general del programa"
+  - ja-lang="プログラム概要"
+  - ko-lang="프로그램 개요"
+  - pt-br-lang="Visão geral do programa"
+  - ru-lang="Обзор программы"
+  - zh-cn-lang="计划概览"
+  - zh-tw-lang="程式總覽"
+
+- title: Support and Release Notes
+  path: /preview/support.html
+
+- title: Set Up to Develop
+  path: /preview/setup-sdk.html
+  custom_link_attributes:
+  - es-lang="Configurar el SDK de la versión preliminar"
+  - ja-lang="Preview SDK のセットアップ"
+  - ko-lang="미리 보기 SDK 설정하기"
+  - pt-br-lang="Configuração do Preview SDK"
+  - ru-lang="Настройка пакета SDK Preview"
+  - zh-cn-lang="设置预览版 SDK"
+  - zh-tw-lang="設定預覽版 SDK"
+
+- title: Test on a Device
+  path: /preview/download.html
+
+- title: Behavior Changes
+  path: /preview/behavior-changes.html
+  custom_link_attributes:
+  - es-lang="Cambios en los comportamientos"
+  - ja-lang="動作の変更点"
+  - ko-lang="동작 변경"
+  - pt-br-lang="Mudanças de comportamento"
+  - ru-lang="Изменения в работе"
+  - zh-cn-lang="行为变更"
+  - zh-tw-lang="行為變更"
+  section:
+  - title: Background Optimizations
+    path: /preview/features/background-optimization.html
+  - title: Language and Locale
+    path: /preview/features/multilingual-support.html
+
+- title: Android N for Developers
+  path: /preview/api-overview.html
+  custom_link_attributes:
+  - es-lang="Información general de la API"
+  - ja-lang="API の概要"
+  - ko-lang="API 개요"
+  - pt-br-lang="Visão geral da API"
+  - ru-lang="Обзор API-интерфейсов"
+  - zh-cn-lang="API 概览"
+  - zh-tw-lang="API 總覽"
+  section:
+  - title: Multi-Window Support
+    path: /preview/features/multi-window.html
+  - title: Notifications
+    path: /preview/features/notification-updates.html
+  - title: Data Saver
+    path: /preview/features/data-saver.html
+  - title: TV Recording
+    path: /preview/features/tv-recording-api.html
+  - title: Network Security Configuration
+    path: /preview/features/security-config.html
+  - title: ICU4J Support
+    path: /preview/features/icu4j-framework.html
+  - title: Java 8 Language Features
+    path: /preview/j8-jack.html
+  - title: Android for Work Updates
+    path: /preview/features/afw.html
+
+- title: Samples
+  path: /preview/samples.html
+  custom_link_attributes:
+  - es-lang="Ejemplos"
+  - ja-lang="サンプル"
+  - ko-lang="샘플"
+  - pt-br-lang="Exemplos"
+  - ru-lang="Примеры"
+  - zh-cn-lang="示例"
+  - zh-tw-lang="範例"
+
+- title: License Agreement
+  path: /preview/license.html
+  custom_link_attributes:
+  - es-lang="Contrato de licencia"
+  - ja-lang="使用許諾契約"
+  - ko-lang="라이선스 계약"
+  - pt-br-lang="Contrato de licença"
+  - ru-lang="Лицензионное соглашение"
+  - zh-cn-lang="许可协议"
+  - zh-tw-lang="授權協議"
diff --git a/docs/html/preview/api-overview.jd b/docs/html/preview/api-overview.jd
index 599dc1e..478f068 100644
--- a/docs/html/preview/api-overview.jd
+++ b/docs/html/preview/api-overview.jd
@@ -1,569 +1,703 @@
-page.title=API Overview
-page.keywords=preview,sdk,compatibility
-page.tags=previewresources, androidm
-sdk.platform.apiLevel=22-mnc
-page.image=images/cards/card-api-overview_16-9_2x.png
+page.title=Android N for Developers
+meta.tags="preview", "androidn"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-apis_2x.png
 @jd:body
 
 
+
+
 <div id="qv-wrapper">
 <div id="qv">
-
-<h2>In this document
-    <a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
-        <span class="more">show more</span>
-        <span class="less" style="display:none">show less</span></a></h2>
-
-<ol id="toc44" class="hide-nested">
-  <li><a href="#app-linking">App Linking</a></li>
-  <li><a href="#backup">Auto Backup for Apps</a></li>
-  <li><a href="#authentication">Authentication</a>
-    <ol>
-      <li><a href="#fingerprint-authentication">Fingerprint Authentication</a></li>
-      <li><a href="#confirm-credential">Confirm Credential</a></li>
-    </ol>
-  </li>
-  <li><a href="#direct-share">Direct Share</a></li>
-  <li><a href="#voice-interactions">Voice Interactions</a></li>
-  <li><a href="#assist">Assist API</a></li>
-  <li><a href="#notifications">Notifications</a></li>
-  <li><a href="#bluetooth-stylus">Bluetooth Stylus Support</a></li>
-  <li><a href="#ble-scanning">Improved Bluetooth Low Energy Scanning</a></li>
-  <li><a href="#hotspot">Hotspot 2.0 Release 1 Support</a></li>
-  <li><a href="#4K-display">4K Display Mode</a></li>
-  <li><a href="#behavior-themeable-colorstatelists">Themeable ColorStateLists</a></li>
-  <li><a href="#audio">Audio Features</a></li>
-  <li><a href="#video">Video Features</a></li>
-  <li><a href="#camera">Camera Features</a>
-    <ol>
-      <li><a href="#flashlight">Flashlight API</a></li>
-      <li><a href="#reprocessing">Camera Reprocessing</a></li>
-    </ol>
-  </li>
-  <li><a href="#afw">Android for Work Features</a></li>
-</ol>
-
-<h2>API Differences</h2>
-<ol>
-<li><a href="{@docRoot}sdk/api_diff/23/changes.html">API level 22 to 23 (Preview 3) &raquo;</a> </li>
-</ol>
-
+  <h2>Key developer features</h2>
+  <ol>
+      <ul style="list-style-type:none;">
+        <li><a href="#multi-window_support">Multi-window support</a></li>
+        <li><a href="#notification_enhancements">Notifications</a></li>
+        <li><a href="#jit_aot">JIT/AOT compilation</a></li>
+        <li><a href="#quick_path_to_app_install">Quick path to app install</a></li>
+        <li><a href="#doze_on_the_go">Doze on the go</a></li>
+        <li><a href="#background_optimizations">Background optimizations</a></li>
+        <li><a href="#data_saver">Data Saver</a></li>
+        <li><a href="#tile_api">Quick Settings Tile API</a></li>
+        <li><a href="#number-blocking">Number-blocking</a></li>
+        <li><a href="#call_screening">Call screening</a></li>
+        <li><a href="#multi-locale_languages">Locales and languages</a></li>
+        <li><a href="#icu4">ICU4J APIs in Android</a></li>
+        <li><a href="#gles_32">OpenGL ES 3.2 API</a></li>
+        <li><a href="#android_tv_recording">Android TV recording</a></li>
+        <li><a href="#android_for_work">Android for Work</a></li>
+        <li><a href="#accessibility_enhancements">Accessibility</a></li>
+        <li><a href="#direct_boot">Direct Boot</a></li>
+        <li><a href="#key_attestation">Key Attestation</a></li>
+        <li><a href="#network_security_config">Network Security Config</a></li>
+        <li><a href="#default_trusted_ca">Default Trusted CA</a></li>
+        <li><a href="apk_signature_v2">APK signature scheme v2</a></li>
+        <li><a href="#scoped_directory_access">Scoped directory access</a></li>
+      </ol>
 </div>
 </div>
 
-<p>The M Developer Preview gives you an advance look at the upcoming release
-for the Android platform, which offers new features for users and app
-developers. This document provides an introduction to the most notable APIs.</p>
+
+
+<p>Android N is still in active development, but you can try it
+now as part of the N Developer Preview. The sections below highlight some of
+the new features for developers. </p>
 
 <p>
-  The M Developer Preview 3 release includes the <strong>final APIs for Android 6.0 (API level
-  23)</strong>. If you are preparing an app for use on Android 6.0,
-  <a href="{@docRoot}preview/setup-sdk.html">download the latest SDK</a> and to complete your
-  final updates and release testing. You can review the final APIs in the
-  <a href="{@docRoot}reference/packages.html">API Reference</a> and see the API differences in
-  the <a href="{@docRoot}sdk/api_diff/23/changes.html">Android API Differences Report</a>.
+  Make sure to check out the <a href=
+  "{@docRoot}preview/behavior-changes.html">Behavior Changes</a> to learn about
+  areas where platform changes may affect your apps, take a look at the
+  developer guides to learn more about key features, and download the <a href=
+  "{@docRoot}preview/setup-sdk.html#docs-dl">API Reference</a> for details on
+  new APIs.
 </p>
 
-</p>
+<h2 id="multi-window_support">Multi-window support</h2>
 
-<p class="caution"><strong>Important:</strong>
-  You may now publish apps that target Android 6.0 (API level 23) to the Google Play store.
-</p>
 
-<p class="note"><strong>Note:</strong>
-  If you have been working with previous preview releases and want to see the differences
-  between the final API and previous preview versions, download the additional difference
-  reports included in the <a href="{@docRoot}preview/download.html#docs">preview docs
-  reference</a>.
-</p>
+<p>In Android N, we're introducing a new and much-requested multitasking feature
+into the platform &mdash; multi-window support. </p>
 
-<h3>Important behavior changes</h3>
-
-<p>If you have previously published an app for Android, be aware that your app might be affected
-by changes in the platform.</p>
-
-<p>Please see <a href="behavior-changes.html">Behavior Changes</a> for complete information.</p>
-
-<h2 id="app-linking">App Linking</h2>
-<p>This preview enhances Android’s intent system by providing more powerful app linking.
-This feature allows you to associate an app with a web domain you own. Based on this
-association, the platform can determine the default app to use to handle a particular
-web link and skip prompting users to select an app. To learn how to implement this feature, see
-<a href="{@docRoot}preview/features/app-linking.html">App Linking</a>.
-
-<h2 id="backup">Auto Backup for Apps</h2>
-<p>The system now performs automatic full data backup and restore for apps. For the
-duration of the <a href="{@docRoot}preview/overview.html">M Developer Preview program</a>, all
-apps are backed up, independent of which SDK version they target. After the final M SDK release,
-your app must target M to enable this behavior; you do not need to add any additional code. If users
-delete their Google accounts, their backup data is deleted as well. To learn how this feature
-works and how to configure what to back up on the file system, see
-<a href="{@docRoot}preview/backup/index.html">Auto Backup for Apps</a>.</p>
-
-<h2 id="authentication">Authentication</h2>
-<p>This preview offers new APIs to let you authenticate users by using their fingerprint scans on
-supported devices, and check how recently the user was last authenticated using a device unlocking
-mechanism (such as a lockscreen password). Use these APIs in conjunction with
-the <a href="{@docRoot}training/articles/keystore.html">Android Keystore system</a>.</p>
-
-<h3 id="fingerprint-authentication">Fingerprint Authentication</h3>
-
-<p>To authenticate users via fingerprint scan, get an instance of the new
-{@link android.hardware.fingerprint.FingerprintManager} class and call the
-{@link android.hardware.fingerprint.FingerprintManager#authenticate(android.hardware.fingerprint.FingerprintManager.CryptoObject, android.os.CancellationSignal, int, android.hardware.fingerprint.FingerprintManager.AuthenticationCallback, android.os.Handler) authenticate()}
-method. Your app must be running on a compatible
-device with a fingerprint sensor. You must implement the user interface for the fingerprint
-authentication flow on your app, and use the standard Android fingerprint icon in your UI.
-The Android fingerprint icon ({@code c_fp_40px.png}) is included in the
-<a href="https://github.com/googlesamples/android-FingerprintDialog"
-class="external-link">sample app</a>. If you are developing multiple apps that use fingerprint
-authentication, note that each app must authenticate the user’s fingerprint independently.
-</p>
-
-<p>To use this feature in your app, first add the
-  {@link android.Manifest.permission#USE_FINGERPRINT} permission in your manifest.</p>
-
-<pre>
-&lt;uses-permission
-        android:name="android.permission.USE_FINGERPRINT" /&gt;
-</pre>
-<img src="{@docRoot}preview/images/fingerprint-screen.png"
-srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x"
-style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-
-<p>To see an app implementation of fingerprint authentication, refer to the
-<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">
-  Fingerprint Dialog sample</a>. For a demonstration of how you can use these authentication
-  APIs in conjunction with other Android APIs, see the video
-  <a class="video-shadowbox-button" href="https://www.youtube.com/watch?v=VOn7VrTRlA4">
-  Fingerprint and Payment APIs</a>.</p>
-
-<p>If you are testing this feature, follow these steps:</p>
-<ol>
-<li>Install Android SDK Tools Revision 24.3, if you have not done so.</li>
-<li>Enroll a new fingerprint in the emulator by going to
-<strong>Settings > Security > Fingerprint</strong>, then follow the enrollment instructions.</li>
-<li>Use an emulator to emulate fingerprint touch events with the
-following command. Use the same command to emulate fingerprint touch events on the lockscreen or
-in your app.
-<pre class="no-prettyprint">
-adb -e emu finger touch &lt;finger_id&gt;
-</pre>
-<p>On Windows, you may have to run {@code telnet 127.0.0.1 <emulator-id>} followed by
-  {@code finger touch <finger_id>}.
-</p>
-</li>
-</ol>
-
-<h3 id="confirm-credential">Confirm Credential</h3>
-<p>Your app can authenticate users based on how recently they last unlocked their device. This
-feature frees users from having to remember additional app-specific passwords, and avoids the need
-for you to implement your own authentication user interface. Your app should use this feature in
-conjunction with a public or secret key implementation for user authentication.</p>
-
-<p>To set the timeout duration for which the same key can be re-used after a user is successfully
-authenticated, call the new
-{@link android.security.keystore.KeyGenParameterSpec.Builder#setUserAuthenticationValidityDurationSeconds(int) setUserAuthenticationValidityDurationSeconds()}
-method when you set up a {@link javax.crypto.KeyGenerator} or
-{@link java.security.KeyPairGenerator}.</p>
-
-<p>Avoid showing the re-authentication dialog excessively -- your apps should try using the
-cryptographic object first and if the the timeout expires, use the
-{@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()}
-method to re-authenticate the user within your app.
-</p>
-
-<p>To see an app implementation of this feature, refer to the
-<a href="https://github.com/googlesamples/android-ConfirmCredential" class="external-link">
-  Confirm Credential sample</a>.</p>
-
-<h2 id="direct-share">Direct Share</h2>
-
-<img src="{@docRoot}preview/images/direct-share-screen.png"
-srcset="{@docRoot}preview/images/direct-share-screen.png 1x, {@docRoot}preview/images/direct-share-screen_2x.png 2x"
-style="float:right; margin:0 0 20px 30px" width="312" height="329" />
-
-<p>This preview provides you with APIs to make sharing intuitive and quick for users. You can now
-define <em>direct share targets</em> that launch a specific activity in your app. These direct share
-targets are exposed to users via the <em>Share</em> menu. This feature allows users to share
-content to targets, such as contacts, within other apps. For example, the direct share target might
-launch an activity in another social network app, which lets the user share content directly to a
-specific friend or community in that app.</p>
-
-<p>To enable direct share targets you must define a class that extends the
-{@link android.service.chooser.ChooserTargetService} class. Declare your
-service in the manifest. Within that declaration, specify the
-{@link android.Manifest.permission#BIND_CHOOSER_TARGET_SERVICE} permission and an
-intent filter using the
-{@link android.service.chooser.ChooserTargetService#SERVICE_INTERFACE SERVICE_INTERFACE} action.</p>
-<p>The following example shows how you might declare the
-{@link android.service.chooser.ChooserTargetService} in your manifest.</p>
-<pre>
-&lt;service android:name=".ChooserTargetService"
-        android:label="&#64;string/service_name"
-        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"&gt;
-    &lt;intent-filter&gt;
-        &lt;action android:name="android.service.chooser.ChooserTargetService" /&gt;
-    &lt;/intent-filter&gt;
-&lt;/service&gt;
-</pre>
-
-<p>For each activity that you want to expose to
-{@link android.service.chooser.ChooserTargetService}, add a
-{@code <meta-data>} element with the name
-{@code "android.service.chooser.chooser_target_service"} in your app manifest.
-</p>
-
-<pre>
-&lt;activity android:name=".MyShareActivity”
-        android:label="&#64;string/share_activity_label"&gt;
-    &lt;intent-filter>
-        &lt;action android:name="android.intent.action.SEND" /&gt;
-    &lt;/intent-filter>
-&lt;meta-data
-        android:name="android.service.chooser.chooser_target_service"
-        android:value=".ChooserTargetService" /&gt;
-&lt;/activity>
-</pre>
-
-<h2 id="voice-interactions">Voice Interactions</h2>
-<p>
-This preview provides a new voice interaction API which, together with
-<a href="https://developers.google.com/voice-actions/" class="external-link">Voice Actions</a>,
-allows you to build conversational voice experiences into your apps. Call the
-{@link android.app.Activity#isVoiceInteraction()} method to determine if a voice action triggered
-your activity. If so, your app can use the
-{@link android.app.VoiceInteractor} class to request a voice confirmation from the user, select
-from a list of options, and more.</p>
-
-<p>Most voice interactions originate from a user voice action. A voice interaction activity can
-also, however, start without user input. For example, another app launched through a voice
-interaction can also send an intent to launch a voice interaction. To determine if your activity
-launched from a user voice query or from another voice interaction app, call the
-{@link android.app.Activity#isVoiceInteractionRoot()} method. If another app launched your
-activity, the method returns {@code false}. Your app may then prompt the user to confirm that
-they intended this action.</p>
-
-<p>To learn more about implementing voice actions, see the
-<a href="https://developers.google.com/voice-actions/interaction/"
-class="external-link">Voice Actions developer site</a>.
-</p>
-
-<h2 id="assist">Assist API</h2>
-<p>
-This preview offers a new way for users to engage with your apps through an assistant. To use this
-feature, the user must enable the assistant to use the current context. Once enabled, the user
-can summon the assistant within any app, by long-pressing on the <strong>Home</strong> button.</p>
-<p>Your app can elect to not share the current context with the assistant by setting the
-{@link android.view.WindowManager.LayoutParams#FLAG_SECURE} flag. In addition to the
-standard set of information that the platform passes to the assistant, your app can share
-additional information by using the new {@link android.app.assist.AssistContent} class.</p>
-
-<p>To provide the assistant with additional context from your app, follow these steps:</p>
-
-<ol>
-<li>Implement the {@link android.app.Application.OnProvideAssistDataListener} interface.</li>
-<li>Register this listener by using
-{@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()}.</li>
-<li>In order to provide activity-specific contextual information, override the
-{@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()}
-callback and, optionally, the new
-{@link android.app.Activity#onProvideAssistContent(android.app.assist.AssistContent) onProvideAssistContent()}
-callback.
-</ol>
-
-<h2 id="notifications">Notifications</h2>
-<p>This preview adds the following API changes for notifications:</p>
-<ul>
-  <li>New {@link android.app.NotificationManager#INTERRUPTION_FILTER_ALARMS} filter level that
-    corresponds to the new <em>Alarms only</em> do not disturb mode.</li>
-  <li>New {@link android.app.Notification#CATEGORY_REMINDER} category value that is used to
-  distinguish user-scheduled reminders from other events
-  ({@link android.app.Notification#CATEGORY_EVENT}) and alarms
-  ({@link android.app.Notification#CATEGORY_ALARM}).</li>
-  <li>New {@link android.graphics.drawable.Icon} class that you can attach to your notifications
-  via the
-  {@link android.app.Notification.Builder#setSmallIcon(android.graphics.drawable.Icon) setSmallIcon()}
-  and {@link android.app.Notification.Builder#setLargeIcon(android.graphics.drawable.Icon) setLargeIcon()}
-  methods. Similarly, the
-  {@link android.app.Notification.Builder#addAction(int, java.lang.CharSequence, android.app.PendingIntent)
-  addAction()} method now accepts an {@link android.graphics.drawable.Icon} object instead of a
-  drawable resource ID.</li>
-  <li>New {@link android.app.NotificationManager#getActiveNotifications()} method that allows your
-  apps to find out which of their notifications are currently alive. To see an app implementation
-  that uses this feature, see the <a href="https://github.com/googlesamples/android-ActiveNotifications"
-  class="external-link">Active Notifications sample</a>.</li>
-</ul>
-
-<h2 id="bluetooth-stylus">Bluetooth Stylus Support</h2>
-<p>This preview provides improved support for user input using a Bluetooth stylus. Users can pair
-and connect a compatible Bluetooth stylus with their phone or tablet.  While connected, position
-information from the touch screen is fused with pressure and button information from the stylus to
-provide a greater range of expression than with the touch screen alone. Your app can listen for
-stylus button presses and perform secondary actions, by registering
-{@link android.view.View.OnContextClickListener} and
-{@link android.view.GestureDetector.OnContextClickListener} objects in your activity.</p>
-
-<p>Use the {@link android.view.MotionEvent} methods and constants to detect stylus button
-interactions:</p>
-<ul>
-<li>If the user touches a stylus with a button on the screen of your app, the
-{@link android.view.MotionEvent#getToolType(int) getTooltype()} method returns
-{@link android.view.MotionEvent#TOOL_TYPE_STYLUS}.</li>
-<li>For apps targeting M Preview, the
-{@link android.view.MotionEvent#getButtonState() getButtonState()}
-method returns {@link android.view.MotionEvent#BUTTON_STYLUS_PRIMARY} when the user
-presses the primary stylus button. If the stylus has a second button, the same method returns
-{@link android.view.MotionEvent#BUTTON_STYLUS_SECONDARY} when the user presses it. If the user presses
-both buttons simultaneously, the method returns both values OR'ed together
-({@link android.view.MotionEvent#BUTTON_STYLUS_PRIMARY}|{@link android.view.MotionEvent#BUTTON_STYLUS_SECONDARY}).</li>
-<li>
-For apps targeting a lower platform version, the
-{@link android.view.MotionEvent#getButtonState() getButtonState()} method returns
-{@link android.view.MotionEvent#BUTTON_SECONDARY} (for primary stylus button press),
-{@link android.view.MotionEvent#BUTTON_TERTIARY} (for secondary stylus button press), or both.
-</li>
-</ul>
-
-<h2 id="ble-scanning">Improved Bluetooth Low Energy Scanning</h2>
-<p>
-If your app performs performs Bluetooth Low Energy scans, use the new
-{@link android.bluetooth.le.ScanSettings.Builder#setCallbackType(int) setCallbackType()}
-method to specify that you want the system to notify callbacks when it first finds, or sees after a
-long time, an advertisement packet matching the set {@link android.bluetooth.le.ScanFilter}. This
-approach to scanning is more power-efficient than what’s provided in the previous platform version.
-</p>
-
-<h2 id="hotspot">Hotspot 2.0 Release 1 Support</h2>
-<p>
-This preview adds support for the Hotspot 2.0 Release 1 spec on Nexus 6 and Nexus 9 devices. To
-provision Hotspot 2.0 credentials in your app, use the new methods of the
-{@link android.net.wifi.WifiEnterpriseConfig} class, such as
-{@link android.net.wifi.WifiEnterpriseConfig#setPlmn(java.lang.String) setPlmn()} and
-{@link android.net.wifi.WifiEnterpriseConfig#setRealm(java.lang.String) setRealm()}. In the
-{@link android.net.wifi.WifiConfiguration} object, you can set the
-{@link android.net.wifi.WifiConfiguration#FQDN} and the
-{@link android.net.wifi.WifiConfiguration#providerFriendlyName} fields.
-The new {@link android.net.wifi.ScanResult#isPasspointNetwork()} method indicates if a detected
-network represents a Hotspot 2.0 access point.
-</p>
-
-<h2 id="4K-display">4K Display Mode</h2>
-<p>The platform now allows apps to request that the display resolution be upgraded to 4K rendering
-on compatible hardware. To query the current physical resolution, use the new
-{@link android.view.Display.Mode} APIs. If the UI is drawn at a lower logical resolution and is
-upscaled to a larger physical resolution, be aware that the physical resolution the
-{@link android.view.Display.Mode#getPhysicalWidth()} method returns may differ from the logical
-resolution reported by {@link android.view.Display#getSize(android.graphics.Point) getSize()}.</p>
-
-<p>You can request the system to change the physical resolution in your app as it runs, by setting
-the {@link android.view.WindowManager.LayoutParams#preferredDisplayModeId} property of your app’s
-window.  This feature is useful if you want to switch to 4K display resolution. While in 4K display
-mode, the UI continues to be rendered at the original resolution (such as 1080p) and is upscaled to
-4K, but {@link android.view.SurfaceView} objects may show content at the native resolution.</p>
-
-<h2 id="behavior-themeable-colorstatelists">Themeable ColorStateLists</h2>
-<p>Theme attributes are now supported in
-{@link android.content.res.ColorStateList} for devices running the M Preview. The
-{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} and
-{@link android.content.res.Resources#getColor(int) getColor()} methods have been deprecated. If
-you are calling these APIs, call the new
-{@link android.content.Context#getColorStateList(int) getColorStateList()} or
-{@link android.content.Context#getColor(int) getColor()} methods instead. These methods are also
-available in the v4 appcompat library via {@link android.support.v4.content.ContextCompat}.</p>
-
-<h2 id="audio">Audio Features</h2>
-
-<p>This preview adds enhancements to audio processing on Android, including: </p>
-<ul>
-  <li>Support for the <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a>
-protocol, with the new {@link android.media.midi} APIs. Use these APIs to send and receive MIDI
-events.</li>
-  <li>New {@link android.media.AudioRecord.Builder} and {@link android.media.AudioTrack.Builder}
-classes to create digital audio capture and playback objects respectively, and configure audio
-source and sink properties to override the system defaults.</li>
-  <li>API hooks for associating audio and input devices. This is particularly useful if your app
-allows users to start a voice search from a game controller or remote control connected to Android
-TV. The system invokes the new
-{@link android.app.Activity#onSearchRequested(android.view.SearchEvent) onSearchRequested()}
-callback when the user starts a search. To determine if the user's input device has a built-in
-microphone, retrieve the {@link android.view.InputDevice} object from that callback, then call the
-new {@link android.view.InputDevice#hasMicrophone()} method.</li>
-  <li>New {@link android.media.AudioManager#getDevices(int) getDevices()} method which lets you
-retrieve a list of all audio devices currently connected to the system. You can also register an
-{@link android.media.AudioDeviceCallback} object if you want the system to notify your app
-when an audio device connects or disconnects.</li>
-</ul>
-
-<h2 id="video">Video Features</h2>
-<p>This preview adds new capabilities to the video processing APIs, including:</p>
-<ul>
-<li>New {@link android.media.MediaSync} class which helps applications to synchronously render
-audio and video streams. The audio buffers are submitted in non-blocking fashion and are
-returned via a callback. It also supports dynamic playback rate.
-</li>
-<li>New {@link android.media.MediaDrm#EVENT_SESSION_RECLAIMED} event, which indicates that a
-session opened by the app has been reclaimed by the resource manager. If your app uses DRM sessions,
-you should handle this event and make sure not to use a reclaimed session.
-</li>
-<li>New {@link android.media.MediaCodec.CodecException#ERROR_RECLAIMED} error code, which indicates
-that the resource manager reclaimed the media resource used by the codec. With this exception, the
-codec must be released, as it has moved to terminal state.
-</li>
-<li>New {@link android.media.MediaCodecInfo.CodecCapabilities#getMaxSupportedInstances()
-getMaxSupportedInstances()} interface to get a hint for the max number of the supported
-concurrent codec instances.
-</li>
-<li>New {@link android.media.MediaPlayer#setPlaybackParams(android.media.PlaybackParams)
-setPlaybackParams()} method to set the media playback rate for fast or
-slow motion playback. It also stretches or speeds up the audio playback automatically in
-conjunction with the video.</li>
-</ul>
-
-<h2 id="camera">Camera Features</h2>
-<p>This preview includes the following new APIs for accessing the camera’s flashlight and for
-camera reprocessing of images:</p>
-
-<h3 id="flashlight">Flashlight API</h3>
-<p>If a camera device has a flash unit, you can call the
-{@link android.hardware.camera2.CameraManager#setTorchMode(java.lang.String, boolean) setTorchMode()}
-method to switch the flash unit’s torch mode on or off without opening the camera device. The app
-does not have exclusive ownership of the flash unit or the camera device. The torch mode is turned
-off and becomes unavailable whenever the camera device becomes unavailable, or when other camera
-resources keeping the torch on become unavailable. Other apps can also call
-{@link android.hardware.camera2.CameraManager#setTorchMode(java.lang.String, boolean) setTorchMode()}
-to turn off the torch mode. When the last app that turned on the torch mode is closed, the torch
-mode is turned off.</p>
-
-<p>You can register a callback to be notified about torch mode status by calling the
-{@link android.hardware.camera2.CameraManager#registerTorchCallback(android.hardware.camera2.CameraManager.TorchCallback, android.os.Handler) registerTorchCallback()}
-method. The first time the callback is registered, it is immediately called with the torch mode
-status of all currently known camera devices with a flash unit. If the torch mode is turned on or
-off successfully, the
-{@link android.hardware.camera2.CameraManager.TorchCallback#onTorchModeChanged(java.lang.String, boolean) onTorchModeChanged()}
-method is invoked.</p>
-
-<h3 id="reprocessing">Reprocessing API</h3>
-<p>The {@link android.hardware.camera2 Camera2} API is extended to support YUV and private
-opaque format image reprocessing. To determine if these reprocessing capabilities are available,
-call {@link android.hardware.camera2.CameraManager#getCameraCharacteristics(java.lang.String)
-getCameraCharacteristics()} and check for the
-{@link android.hardware.camera2.CameraCharacteristics#REPROCESS_MAX_CAPTURE_STALL} key. If a
-device supports reprocessing, you can create a reprocessable camera capture session by calling
-<a href="/reference/android/hardware/camera2/CameraDevice.html#createReprocessableCaptureSession(android.hardware.camera2.params.InputConfiguration, java.util.List<android.view.Surface>, android.hardware.camera2.CameraCaptureSession.StateCallback, android.os.Handler)"><code>createReprocessableCaptureSession()</code></a>,
-and create requests for input buffer reprocessing.</p>
-
-<p>Use the {@link android.media.ImageWriter} class to connect the input buffer flow to the camera
-reprocessing input. To get an empty buffer, follow this programming model:</p>
-
-<ol>
-<li>Call the {@link android.media.ImageWriter#dequeueInputImage()} method.</li>
-<li>Fill the data into the input buffer.</li>
-<li>Send the buffer to the  camera by calling the
-{@link android.media.ImageWriter#queueInputImage(android.media.Image) queueInputImage()} method.</li>
-</ol>
-
-<p>If you are using a {@link android.media.ImageWriter} object together with an
-{@link android.graphics.ImageFormat#PRIVATE} image, your app cannot access the image
-data directly. Instead, pass the {@link android.graphics.ImageFormat#PRIVATE} image directly to the
-{@link android.media.ImageWriter} by calling the
-{@link android.media.ImageWriter#queueInputImage(android.media.Image) queueInputImage()} method
-without any buffer copy.</p>
-
-<p>The {@link android.media.ImageReader} class now supports
-{@link android.graphics.ImageFormat#PRIVATE} format image streams. This support allows your app to
-maintain a circular image queue of {@link android.media.ImageReader} output images, select one or
-more images, and send them to the {@link android.media.ImageWriter} for camera reprocessing.</p>
-
-<h2 id="afw">Android for Work Features</h2>
-<p>This preview includes the following new APIs for Android for Work:</p>
-<ul>
-  <li><strong>Enhanced controls for Corporate-Owned, Single-Use devices:</strong> The Device Owner
-can now control the following settings to improve management of
-Corporate-Owned, Single-Use (COSU) devices:
+  <p>Users can now pop open two apps on the screen at once. </p>
   <ul>
-    <li>Disable or re-enable the keyguard with the
-{@link android.app.admin.DevicePolicyManager#setKeyguardDisabled(android.content.ComponentName, boolean)
-setKeyguardDisabled()} method.</li>
-    <li>Disable or re-enable the status bar (including quick settings, notifications, and the
-navigation swipe-up gesture that launches Google Now) with the
-{@link android.app.admin.DevicePolicyManager#setStatusBarDisabled(android.content.ComponentName, boolean) setStatusBarDisabled()}
-method.</li>
-    <li>Disable or re-enable safe boot with the {@link android.os.UserManager} constant
-{@link android.os.UserManager#DISALLOW_SAFE_BOOT}.</li>
-    <li>Prevent the screen from turning off while plugged in with the
-  {@link android.provider.Settings.Global#STAY_ON_WHILE_PLUGGED_IN} constant.</li>
+  <li>On phones and tablets
+running Android N, users can run two apps side-by-side or
+one-above-the-other in splitscreen mode. Users can resize the apps by dragging
+the divider between them. </li>
+
+<li>On Android TV devices, apps can put themselves in <a
+href="{@docRoot}preview/features/picture-in-picture.html">picture-in-picture
+mode</a>, allowing them to continue showing content while the user browses or
+interacts with other apps.</li>
   </ul>
-  </li>
-  <li><strong>Silent install and uninstall of apps by Device Owner:</strong> A Device Owner can now
-silently install and uninstall applications using the {@link android.content.pm.PackageInstaller}
-APIs, independent of Google Play for Work. You can now provision devices through a Device Owner that
-fetches and installs apps without user interaction. This feature is useful for enabling one-touch
-provisioning of kiosks or other such devices without activating a Google account.</li>
-<li><strong>Silent enterprise certificate access: </strong> When an app calls
-{@link android.security.KeyChain#choosePrivateKeyAlias(android.app.Activity,android.security.KeyChainAliasCallback,java.lang.String[],java.security.Principal[],java.lang.String,int,java.lang.String) choosePrivateKeyAlias()},
-prior to the user being prompted to select a certificate, the Profile or Device Owner can now call
-the {@link android.app.admin.DeviceAdminReceiver#onChoosePrivateKeyAlias(android.content.Context, android.content.Intent, int, android.net.Uri, java.lang.String) onChoosePrivateKeyAlias()}
-method to provide the alias silently to the requesting application. This feature lets you grant
-managed apps access to certificates without user interaction.</li>
-<li><strong>Auto-acceptance of system updates.</strong> By setting a system update policy with
-{@link android.app.admin.DevicePolicyManager#setSystemUpdatePolicy(android.content.ComponentName, android.app.admin.SystemUpdatePolicy) setSystemUpdatePolicy()},
-a Device Owner can now auto-accept a system
-update, for instance in the case of a kiosk device, or postpone the update and prevent it being
-taken by the user for up to 30 days. Furthermore, an administrator can set a daily time window in
-which an update must be taken, for example during the hours when a kiosk device is not in use. When
-a system update is available, the system checks if the Work Policy Controller app has set a system
-update policy, and behaves accordingly.
-</li>
-<li>
-<strong>Delegated certificate installation:</strong> A Profile or Device Owner can now grant a
-third-party app the ability to call these {@link android.app.admin.DevicePolicyManager} certificate
-management APIs:
+
+<div class="col-4of10">
+<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;"
+    id="img-split-screen" />
+<p class="img-caption">
+  <strong>Figure 1.</strong> Apps running in split-screen mode.
+</p>
+  </div>
+
+<p>Especially on tablets and other larger-screen devices, multi-window support
+gives you new ways to engage users. You can even enable drag-and-drop in
+your app to let users conveniently drag content to or from your app &mdash; a great
+way to enhance your user experience. </p>
+
+<p>It's straightforward to add multi-window support to your app and configure how it
+handles multi-window display. For example, you can specify your activity's
+minimum allowable dimensions, preventing users from resizing the activity below
+that size. You can also disable multi-window display for your app, which
+  ensures that the system will only show your app in full-screen mode.</p>
+
+<p>
+  For more information, see the <a href=
+  "{@docRoot}preview/features/multi-window.html">Multi-Window Support</a>
+  developer documentation.
+</p>
+
+<h2 id="notification_enhancements">Notification enhancements</h2>
+
+<p>In Android N we've redesigned notifications to make them easier and faster to
+use. Some of the changes include:</p>
+
 <ul>
-  <li>{@link android.app.admin.DevicePolicyManager#getInstalledCaCerts(android.content.ComponentName)
-getInstalledCaCerts()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#hasCaCertInstalled(android.content.ComponentName,byte[])
-hasCaCertInstalled()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#installCaCert(android.content.ComponentName,byte[])
-installCaCert()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#uninstallCaCert(android.content.ComponentName,byte[])
-uninstallCaCert()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#uninstallAllUserCaCerts(android.content.ComponentName)
-uninstallAllUserCaCerts()}</li>
-  <li>{@link android.app.admin.DevicePolicyManager#installKeyPair(android.content.ComponentName,java.security.PrivateKey,java.security.cert.Certificate,java.lang.String)
-installKeyPair()}</li>
-</ul>
-</li>
-<img src="{@docRoot}preview/images/work-profile-screen.png"
-srcset="{@docRoot}preview/images/work-profile-screen.png 1x, {@docRoot}preview/images/work-profile-screen_2x.png 2x"
-style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-<li><strong>Data usage tracking.</strong> A Profile or Device Owner can now query for the
-data usage statistics visible in <strong>Settings > Data</strong> usage by using the new
-{@link android.app.usage.NetworkStatsManager} methods. Profile Owners are automatically granted
-permission to query data on the profile they manage, while Device Owners get access to usage data
-of the managed primary user.</li>
-<li><strong>Runtime permission management:</strong>
-<p>A Profile or Device Owner can set a permission policy
-for all runtime requests of all applications using
-{@link android.app.admin.DevicePolicyManager#setPermissionPolicy(android.content.ComponentName, int)
-setPermissionPolicy()}, to either prompt the user to grant the permission or automatically grant or
-deny the permission silently. If the latter policy is set, the user cannot
-modify the selection made by the Profile or Device Owner within the app’s permissions screen in
-<strong>Settings</strong>.</p></li>
-<li><strong>VPN in Settings:</strong> VPN apps are now visible in
-    <strong>Settings > More > VPN</strong>.
-Additionally, the notifications that accompany VPN usage are now specific to how that VPN is
-configured. For Profile Owner, the notifications are specific to whether the VPN is configured
-for a managed profile, a personal profile, or both. For a Device Owner, the notifications are
-specific to whether the VPN is configured for the entire device.</li>
-<li><strong>Work status notification:</strong> A status bar briefcase icon now appears whenever
-an app from the managed profile has an activity in the foreground. Furthermore, if the device is
-unlocked directly to the activity of an app in the managed profile, a toast is displayed notifying
-the user that they are within the work profile.
-</li>
+  <li>
+    <strong>Template updates</strong>: We're updating notification templates to
+    put a new emphasis on hero image and avatar. Developers will be able to
+    take advantage of the new templates with minimal adjustments in their code.
+  </li>
+
+  <li>
+    <strong>Bundled notifications</strong>: The system can group messages
+    together, for example by message topic, and display the group. A user can
+    take actions, such as Dismiss or Archive, on them in place. If you’ve
+    implemented notifications for Android Wear, you’ll already be familiar with
+    this model.
+  </li>
+
+  <li>
+    <strong>Direct reply</strong>: For real-time communication apps, the
+    Android system supports inline replies so that users can quickly respond to
+    an SMS or text message directly within the notification interface.
+  </li>
+
+  <li>
+    <strong>Custom views</strong>: Two new APIs enable you to leverage system
+    decorations, such as notification headers and actions, when using custom
+    views in notifications.
+  </li>
 </ul>
 
-<p class="note">
-  For a detailed view of all API changes in the M Developer Preview, see the <a href=
-  "{@docRoot}preview/download.html">API Differences Report</a>.
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-1.png" alt=""
+  style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-3.png" alt=""
+  style="padding:.5em;max-width:226px">
+</div>
+
+<div class="col-4of12">
+  <img src="{@docRoot}preview/images/notifications-2.png" alt=""
+  style="padding:.5em;max-width:226px">
+</div>
+
+
+<p class="img-caption">
+  <strong>Figure 2.</strong> Bundled notifications and direct reply.
 </p>
+
+<p>To learn how to implement the new features, see the
+  <a href="{@docRoot}preview/features/notification-updates.html">Notifications</a>
+  guide.</p>
+
+
+
+<h2 id="jit_aot">Profile-guided JIT/AOT compilation</h2>
+
+<p>In Android N, we've added a Just in Time (JIT) compiler with code profiling to
+ART, which lets it constantly improve the performance of Android apps as they
+run. The JIT compiler complements ART's current Ahead of Time (AOT) compiler
+and helps improve runtime performance, save storage space, and speed up app
+updates and system updates.</p>
+
+<p>Profile-guided compilation lets ART manage the AOT/JIT compilation for each app
+according to its actual usage, as well as conditions on the device. For
+example, ART maintains a profile of each app's hot methods and can precompile
+and cache those methods for best performance. It leaves other parts of the app
+uncompiled until they are actually used.</p>
+
+<p>Besides improving performance for key parts of the app, profile-guided
+compilation helps reduce an app's overall RAM footprint, including associated
+binaries. This feature is especially important on low-memory devices.</p>
+
+<p>ART manages profile-guided compilation in a way that minimizes impact on the
+device battery. It does precompilation only when then the device is idle and
+charging, saving time and battery by doing that work in advance.</p>
+
+<h2 id="quick_path_to_app_install">Quick path to app install</h2>
+
+<p>One of the most tangible benefits of ART's JIT compiler is the speed of app
+installs and system updates. Even large apps that required several minutes to
+optimize and install in Android 6.0 can now install in just a matter of
+seconds. System updates are also faster, since there's no more optimizing step. </p>
+
+<h2 id="doze_on_the_go">Doze on the go...</h2>
+
+<p>Android 6.0 introduced Doze, a system mode that saves battery by deferring
+apps' CPU and network activities when the device is idle, such as when it's
+sitting on a table or in a drawer. </p>
+
+<p>Now in Android N, Doze takes a step further and saves battery while on the go.
+Any time the screen is off for a period of time and the device is unplugged,
+Doze applies a subset of the familiar CPU and network restrictions to apps.
+This means users can save battery even when carrying their devices in their
+pockets.</p>
+
+
+<img src="/preview/images/doze-diagram-1.png"
+  alt="" id="figure1" />
+<p class="img-caption">
+  <strong>Figure 3.</strong> Doze now applies
+  restrictions to improve battery life even when the device is not stationary.
+</p>
+
+
+<p>A short time after the screen turns off while the device is on battery, Doze
+restricts network access and defers jobs and syncs. During brief maintenance
+windows, applications are allowed network access and any of their deferred
+jobs/syncs are executed. Turning the screen on or plugging in the device brings
+the device out of Doze.</p>
+
+<p>When the device is stationary again, with screen off and on battery for a
+period of time, Doze applies the full CPU and network restrictions on {@link
+android.os.PowerManager.WakeLock}, {@link android.app.AlarmManager} alarms, and
+GPS/Wi-Fi scans.</p>
+
+<p>The best practices for adapting your app to Doze are the same whether the
+device is moving or not, so if you already updated your app to gracefully
+handle Doze, you're all set. If not, start <a
+href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">adapting
+your app to Doze</a> now.</p>
+
+<h2 id="background_optimizations">Project Svelte: Background optimizations</h2>
+
+<p>Project Svelte is an ongoing effort to minimize RAM use by system and apps
+across the range of Android devices in the ecosystem. In Android N, Project
+Svelte is focused on optimizing the way apps run in the background. </p>
+
+<p>Background processing is an essential part of most apps. When handled right, it
+can make your user experience amazing &mdash; immediate, fast, and context-aware.
+When not handled right, background processing can needlessly consume RAM (and
+battery) and affect system performance for other apps. </p>
+
+<p>Since Android 5.0, {@link android.app.job.JobScheduler} has been the
+preferred way of performing background work in a way that's good
+for users. Apps can schedule jobs while letting the system optimize based on
+memory, power, and connectivity conditions. JobScheduler offers control and
+simplicity, and we want all apps to use it. </p>
+
+<p>
+  Another good option is <a href=
+  "https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  <code>GCMNetworkManager</code></a>, part of Google Play Services, which
+  offers similar job scheduling with compatibility across legacy versions of
+  Android.
+</p>
+
+<p>We're continuing to extend <code>JobScheduler</code> and
+<code>GCMNetworkManager</code> to meet more of
+your use cases &mdash; for example, in Android N you can now schedule background
+work based on changes in Content Providers. At the same time we're starting to
+deprecate some of the older patterns that can reduce system performance,
+especially on low-memory devices.</p>
+
+<p>In Android N we're removing three commonly-used implicit broadcasts &mdash;
+ {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE}, and {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} &mdash; since those can wake the
+background processes of multiple apps at once and strain memory and battery. If
+your app is receiving these, take advantage of the N Developer Preview to
+  migrate to <code>JobScheduler</code> and related APIs instead. </p>
+
+<p>
+  Take a look at the <a href=
+  "{@docRoot}preview/features/background-optimization.html">Background
+  Optimizations</a> documentation for details.
+</p>
+
+
+<h2 id="data_saver">Data Saver</h2>
+
+<div class="col-5of12" style="margin-right:1.5em;">
+<img src="{@docRoot}preview/images/datasaver.png" style="border:2px solid #ddd">
+
+<p class="img-caption" style="padding-right:2em;">
+  <strong>Figure 4.</strong> Data Saver in Settings.
+</p>
+  </div>
+
+<p>Over the life of a mobile device, the cost of a cellular data plan typically
+exceeds the cost of the device itself. For many users, cellular data is an
+expensive resource that they want to conserve. </p>
+
+<p>Android N introduces Data Saver mode, a new system service that helps reduce
+cellular data use by apps, whether roaming, near the end of the billing cycle,
+or on a small prepaid data pack. Data Saver gives users control over how apps
+use cellular data and lets developers provide more efficient service when Data
+Saver is on. </p>
+
+<p>When a user enables Data Saver in <strong>Settings</strong> and the device is
+on a metered network, the system blocks background data usage and signals apps
+to use less data in the foreground wherever possible &mdash; such as by limiting
+bit rate for streaming, reducing image quality, deferring optimistic precaching,
+and so on. Users can whitelist specific apps to allow background metered data
+usage even when Data Saver is turned on.</p>
+
+<p>Android N extends the {@link android.net.ConnectivityManager} to provide apps a
+way to <a href="{@docRoot}preview/features/data-saver.html#status">retrieve the
+user's Data Saver preferences</a> and <a
+href="{@docRoot}preview/features/data-saver.html#monitor-changes">monitor
+preference changes</a>. All apps should check whether the user has enabled Data
+Saver and make an effort to limit foreground and background data usage.</p>
+
+
+<h2 id="tile_api">Quick Settings Tile API</h2>
+
+
+<div style="float:right;max-width:320px">
+<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
+
+<p class="img-caption" style="padding-left:2em;">
+  <strong>Figure 5.</strong> Quick Settings tiles in the notification shade.
+</p>
+
+
+  </div><p>Quick Settings is a popular and simple way to expose key settings and actions,
+directly from the notification shade. In Android N, we've expanded the scope of
+Quick Settings to make it even more useful and convenient. </p>
+
+<p>We've added more room for additional Quick Settings tiles, which users can
+access across a paginated display area by swiping left or right. We've also
+given users control over what Quick Settings tiles appear and where they are
+displayed &mdash; users can add or move tiles just by dragging and dropping them. </p>
+
+<p>For developers, Android N also adds a new API that lets you define your own
+  Quick Settings tiles to give users easy access to key controls and actions in your app.</p>
+
+<p>
+  Quick Settings tiles are reserved for controls or actions that are either
+  urgently required or frequently used, and should not be used as shortcuts to
+  launching an app.
+</p>
+
+<p>
+  Once you’ve defined your tiles, you can surface them to users, who can add
+  them to Quick Settings just by drag and drop.
+</p>
+
+<p>
+  For information about creating an app tile, see the
+  <code>android.service.quicksettings.Tile</code> in the downloadable <a href=
+  "{@docRoot}preview/setup-sdk.html#docs-dl">API Reference</a>.
+</p>
+
+
+
+<h2 id="number-blocking">Number-blocking</h2>
+
+<p>Android N now supports number-blocking in the platform and provides a
+framework API to let service providers maintain a blocked-number list. The
+default SMS app, the default phone app, and carrier apps can read from and
+write to the blocked-number list. The list is not accessible to other apps.</p>
+
+<p>By making number-blocking a standard feature of the platform, Android provides
+a consistent way for apps to support number-blocking across a wide range of
+devices. Among the other benefits that apps can take advantage of are:</p>
+
+<ul>
+  <li> Numbers blocked on calls are also blocked on texts
+  <li> Blocked numbers can persist across resets and devices through the Backup &amp;
+Restore feature
+  <li> Multiple apps can use the same blocked numbers list
+</ul>
+
+<p>Additionally, carrier app integration through Android means that carriers can
+read the blocked numbers list on the device and perform service-side blocking
+for the user in order to stop unwanted calls and texts from reaching the user
+through any medium, such as a VOIP endpoint or forwarding phones.</p>
+
+<p>
+  For more information, see <code>android.provider.BlockedNumberContract</code>
+  in the downloadable <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API
+  Reference</a>.
+</p>
+
+<h2 id="call_screening">Call screening</h2>
+
+<p>
+  Android N allows the default phone app to screen incoming calls. The phone
+  app does this by implementing the new <code>CallScreeningService</code>,
+  which allows the phone app to perform a number of actions based on an
+  incoming call's {@link android.telecom.Call.Details Call.Details}, such as:
+</p>
+
+<ul>
+  <li> Reject the incoming call
+  <li> Do not allow the call to the call log
+  <li> Do not show the user a notification for the call
+</ul>
+
+<p>
+  For more information, see <code>android.telecom.CallScreeningService</code>
+  in the downloadable <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API
+  Reference</a>.
+</p>
+
+
+<h2 id="multi-locale_languages">Multi-locale support, more languages</h2>
+
+
+<p>Android N now lets users select <strong>multiple locales</strong> in Settings,
+to better support bilingual use-cases. Apps can use
+a new API to get the user's selected locales and then offer more sophisticated
+user experiences for multi-locale users &mdash; such as showing search results in
+multiple languages and not offering to translate webpages in a language the
+user already knows.</p>
+
+<p>Along with multi-locale support, Android N also expands the range of languages
+available to users. It offers more than 25 variants each for commonly used
+languages such as English, Spanish, French, and Arabic. It also adds partial
+support for more than 100 new languages.</p>
+
+<p>Apps can get the list of locales set by the user by calling <code>LocaleList.GetDefault()</code>.  To support the expanded number of locales, Android N is changing the way
+that it resolves resources. Make sure that you test and verify that your apps
+working as expected with the new resource resolution logic.</p>
+
+<p>To learn about the new resource-resolution behavior and the best practices you
+should follow, see <a href="{@docRoot}preview/features/multilingual-support.html"
+>Multilingual Support</a>.</p>
+
+<h2 id="icu4">ICU4J APIs in Android</h2>
+
+<p>
+  Android N now offers a subset of <a href=
+  "http://site.icu-project.org/">ICU4J</a> APIs in the Android framework under
+  the <code>android.icu</code> package. Migration is easy, and mostly entails
+  simply changing from the <code>com.java.icu</code> namespace to
+  <code>android.icu</code>. If you are already using an ICU4J bundle in your
+  apps, switching to the <code>android.icu</code> APIs provided in the Android
+  framework can produce substantial savings in APK size.
+</p>
+
+<p>
+  To learn more about the Android ICU4J APIs, see <a href=
+  "{@docRoot}preview/features/icu4j-framework.html">ICU4J Support</a>.
+</p>
+
+
+
+<h2 id="gles_32">OpenGL&trade; ES 3.2 API</h2>
+
+<p>Android N adds framework interfaces and platform support for OpenGL ES 3.2, including:</p>
+
+<ul>
+  <li> All extensions from the <a class="external-link"
+href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">Android Extension Pack</a></a> (AEP) except for <code>EXT_texture_sRGB_decode</code>.
+  <li> Floating-point framebuffers for HDR and deferred shading.
+  <li> BaseVertex draw calls to enable better batching and streaming.
+  <li> Robust buffer access control to reduce WebGL overhead.
+</ul>
+
+<p>The framework API for OpenGL ES 3.2 on Android N is provided with the
+<code>GLES32</code> class. When using OpenGL ES 3.2, be sure to declare the
+requirement in your manifest file, using the <code>&lt;uses-feature&gt;</code> tag and
+the <code>android:glEsVersion</code> attribute. </p>
+
+<p>For information about using OpenGL ES, including how to check a device's
+supported OpenGL ES version at runtime, see the <a
+href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL ES API guide</a>.</p>
+
+
+<h2 id="android_tv_recording">Android TV recording</h2>
+
+<p>Android N adds the ability to record and playback content from Android TV input
+services via new recording APIs.  Building on top of existing time-shifting
+APIs, TV input services can control what channel data can be recorded, how
+recorded sessions are saved, and manage user interaction with recorded content. </p>
+
+<p>For more information, see <a
+href="{@docRoot}preview/features/tv-recording-api.html">Android TV Recording APIs</a>.</p>
+
+
+<h2 id="android_for_work">Android for Work</h2>
+
+<p>Android for Work adds many new features and APIs for devices running Android N.
+Some highlights are below &mdash; for a complete list of changes, see
+<a href="{@docRoot}preview/features/afw.html">Android for Work Updates</a>.</p>
+
+<h3 id="work_profile_security_challenge">Work profile security challenge </h3>
+
+<p>
+  Profile owners can specify a separate security challenge for apps running in
+  the work profile. The work challenge is shown when a user attempts to open
+  any work apps. Successful completion of the security challenge unlocks the
+  work profile and decrypts it if necessary. For profile owners,
+  <code>ACTION_SET_NEW_PASSWORD</code> prompts the user to set a work
+  challenge, and <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> prompts
+  the user to set a device lock.
+</p>
+
+<p>
+  Profile owners can set distinct password policies for the work challenge
+  (such as how long the PIN needs to be, or whether a fingerprint can be used
+  to unlock the profile) using the <code>setPasswordQuality()</code>,
+  <code>setPasswordMinimumLength()</code> and related methods. The profile
+  owner can also set the device lock using the <code>DevicePolicyManager</code>
+  instance returned by the new <code>getParentProfileInstance()</code> method.
+  Additionally, profile owners can customize the credentials screen for the
+  work challenge using the new <code>setOrganizationColor()</code> and
+  <code>setOrganizationName()</code> methods.
+</p>
+<h3 id="turn_off_work">Turn off work </h3>
+
+<p>On a device with a work profile, users can toggle work mode. When work mode is
+off the managed user is temporarily shut down, which disables work profile
+apps, background sync, and notifications. This includes the profile owner
+application. When work mode is off, the system displays a persistent status
+icon to remind the user that they can't launch work apps. The launcher
+indicates that work apps and widgets are not accessible. </p>
+
+<h3 id="always_on_vpn">Always on VPN </h3>
+
+<p>Device owners and profile owners can ensure that work apps always connect
+through a specified VPN. The system automatically starts that VPN after the
+device boots.</p>
+
+<p>
+  New <code>DevicePolicyManager</code> methods are
+  <code>setAlwaysOnVpnPackage()</code> and
+  <code>getAlwaysOnVpnPackage()</code>.
+</p>
+
+<p>Because VPN services can be bound directly by the system without app
+interaction, VPN clients need to handle new entry points for Always on VPN. As
+before, services are indicated to the system by an intent filter matching
+action <code>android.net.VpnService</code>. </p>
+
+<p>
+  Users can also manually set Always on VPN clients that implement
+  <code>VPNService</code> methods in the primary user using
+  <strong>Settings&gt;More&gt;Vpn</strong>.
+</p>
+
+<h2 id="accessibility_enhancements">Accessibility enhancements</h2>
+
+<p>Android N now offers Vision Settings directly on the Welcome screen for new
+device setup. This makes it much easier for users to discover and configure
+accessibility features on their devices, including magnification gesture, font
+size, display size, and TalkBack. </p>
+
+<p>With these accessibility features getting more prominent placement, your users
+are more likely to try your app with them enabled. Make sure you test your apps
+early with these settings enabled. You can enable them from Settings >
+Accessibility.</p>
+
+<p>Also in Android N, accessibility services can now help users with motor
+impairments to touch the screen. The new API allows building services with
+features such as face-tracking, eye-tracking, point scanning, and so on, to
+meet the needs of those users.</p>
+
+<p>For more information, see <code>android.accessibilityservice.GestureDescription</code>
+	in the downloadable <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API Reference</a>.</p>
+
+
+<h2 id="direct_boot">Direct boot</h2>
+
+<p>Direct boot improves device startup times and lets registered
+apps have limited functionality even after an unexpected reboot.
+For example, if an encrypted device reboots while the user is sleeping,
+registered alarms, messages and incoming calls can now continue notify
+the user as normal. This also means accessibility services can also be
+  available immediately after a restart.</p>
+
+<p>Direct boot takes advantage of file based encryption in Android N
+to enable fine grained encryption policies for both system and app data.
+The system uses a device-encrypted store for select system data and explicitly
+registered app data. By default a credential-encrypted store is used for all
+  other system data, user data, apps, and app data. </p>
+
+<p>At boot, the system starts in a restricted mode with access to
+device-encrypted data only, and without general access to apps or data.
+If you have components that you want to run in this mode, you can register
+them by setting a flag in the manifest. After restart, the system activates
+registered components by broadcasting the <code>LOCKED_BOOT_COMPLETED</code>
+intent. The system ensures registered device-encrypted app data is available
+before unlock. All other data is unavailable until the User confirms their lock
+  screen credentials to decrypt it. </p>
+
+For more information, see <a href="{@docRoot}preview/features/direct-boot.html">Direct Boot</a>.</p>
+</p>
+
+
+<h2 id="key_attestation">Key Attestation</h2>
+
+<p>Hardware-backed keystores provide a much safer method to create, store,
+and use cryptographic keys on Android devices. They protect keys from the
+Linux kernel, potential Android vulnerabilities, and extraction
+from rooted devices.</p>
+
+<p>To make it easier and more secure to use hardware-backed keystores,
+Android N introduces Key Attestation. Apps and off-devices can use Key
+Attestation to strongly determine whether an RSA or EC key pair is
+hardware-backed, what the properties of the key pair are, and what
+  constraints are applied to its usage and validity. </p>
+
+<p>Apps and off-device services can request information about a key pair
+through an X.509 attestation certificate which must be signed by a valid
+attestation key. The attestation key is an ECDSA signing key which is
+injected into the device’s hardware-backed keystore at the factory.
+Therefore, an attestation certificate signed by a valid attestation
+key confirms the existence of a hardware-backed keystore, along with
+  details of key pairs in that keystore.</p>
+
+<p>To ensure that the device is using a secure, official Android factory
+image, Key Attestation requires that the device <a
+class="external-link"
+href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">bootloader</a>
+provide the following information to the <a class="external-link"
+href="https://source.android.com/security/trusty/index.html">Trusted
+Execution Environment (TEE)</a>:</p>
+
+<ul>
+<li>The OS version and patch level installed on the device</li>
+<li>The <a href="https://source.android.com/security/verifiedboot/index.html"
+class="external-link" >Verified Boot</a> public key and lock status</li>
+  </ul>
+
+<p>For more information about the hardware-backed keystore feature,
+see the guide for <a href="https://source.android.com/security/keystore/"
+class="external-link">Hardware-backed Keystore</a>.</p>
+
+<p>In addition to Key Attestation, Android N also introduces
+  fingerprint-bound keys that are not revoked on fingerprint enrollment.</p>
+
+<h2 id="network_security_config">Network Security Config</h2>
+
+<p>In Android N, apps can customize the behavior of their secure (HTTPS, TLS)
+connections safely, without any code modification, by using the declarative
+<em>Network Security Config</em> instead of using the conventional
+error-prone programmatic APIs (e.g. X509TrustManager).</p>
+
+  <p>Supported features:</p>
+<ul>
+<li><b>Custom trust anchors.</b> Lets an application customize which
+Certificate Authorities (CA) are trusted for its secure connections. For
+example, trusting particular self-signed certificates or a restricted set of public CAs.
+</li>
+<li><b>Debug-only overrides.</b> Lets an application developer safely debug
+secure connections of their application without added risk to the installed
+base.
+</li>
+<li><b>Cleartext traffic opt-out.</b> Lets an application protect itself from
+accidental usage of cleartext traffic.</li>
+<li><b>Certificate pinning.</b> An advanced feature that lets an application
+  limit which server keys are trusted for secure connections.</li>
+</ul>
+
+<p>For more information, see <a
+href="{@docRoot}preview/features/security-config.html">Network Security
+Config</a>.</p>
+
+<h2 id="default_trusted_ca">Default Trusted Certificate Authority</h2>
+
+<p>By default, apps that target Android N only trust system-provided certificates
+and no longer trust user-added Certificate Authorities (CA). Apps targeting Android
+N that wish to trust user-added CAs should use the
+<a href="{@docRoot}preview/features/security-config.html">Network Security Config</a> to
+specify how user CAs should be trusted.</p>
+
+<h2 id="apk_signature_v2">APK signature scheme v2</h2>
+
+<p>The PackageManager class now supports verifying apps using the APK
+signature scheme v2. The APK signature scheme v2 is a whole-file signature scheme
+that significantly improves verification speed and strengthens integrity
+  guarantees by detecting any unauthorized changes to APK files.</p>
+
+<p>To maintain backward-compatibility, an APK must be signed with the v1 signature
+scheme (JAR signature scheme) before being signed with the v2 signature scheme.
+With the v2 signature scheme, verification fails if you sign the APK with an
+  additional certificate after signing with the v2 scheme. </p>
+
+<p>APK signature scheme v2 support will be available later in the N Developer
+Preview.</p>
+
+<h2 id="scoped_directory_access">Scoped directory access</h2>
+
+<p>In Android N, apps can use new APIs to request access to specific <a
+href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">external
+storage</a> directories, including directories on removable media such as SD
+cards. The new APIs greatly simplify how your application accesses standard
+external storage directories, such as the <code>Pictures</code> directory. Apps
+like photo apps can use these APIs instead of using
+<code>READ_EXTERNAL_STORAGE</code>, which grants access to all storage
+directories, or the Storage Access Framework, which makes the user navigate to
+the directory.</p>
+
+<p>Additionally, the new APIs simplify the steps a user takes to grant external
+storage access to your app. When you use the new APIs, the system uses a simple
+permissions UI that clearly details what directory the application is
+requesting access to.</p>
+
+<p>For more information, see the
+<a href="{@docRoot}preview/features/scoped-folder-access.html">Scoped
+Directory Access</a> developer documentation.</p>
+
+
+
+
+
+
diff --git a/docs/html/preview/backup/index.jd b/docs/html/preview/backup/index.jd
deleted file mode 100644
index 6735379..0000000
--- a/docs/html/preview/backup/index.jd
+++ /dev/null
@@ -1,327 +0,0 @@
-page.title=Auto Backup for Apps
-page.tags=backup, previewresources, androidm
-page.keywords=backup, autobackup, preview
-page.image=images/cards/card-auto-backup_2x.png
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>In this document</h2>
-      <ol>
-        <li><a href="#overview">Overview</a></li>
-        <li><a href="#configuring">Configuring Data Backup</a></li>
-        <li><a href="#testing">Testing Backup Configuration</a></li>
-        <li><a href="#issues">Known Issues</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  Users often invest significant time and effort creating data and setting preferences within
-  apps. Preserving that data for users if they replace a broken device or upgrade to a new one is
-  an important part of ensuring a great user experience. Devices running the Android M Preview
-  system help ensure a good experience for users in these circumstances by automatically backing up
-  app data to Google Drive. The app data is automatically restored if a user changes or upgrades a
-  device.
-</p>
-
-<p>
-  Automatic backups are enabled for all apps installed on devices running the Android M Preview. No
-  additional app code is required. The system provides users with the ability to opt out of
-  automatic data backups. You can also choose to limit what data from your app is backed up.
-</p>
-
-<p>
-  This document describes the new system behavior and how to specify what data is backed up for
-  your app.
-</p>
-
-<h2 id="overview">Overview</h2>
-
-<p>
-  The automatic backup feature preserves the data your app creates on a user device by uploading it
-  to the user’s Google Drive account and encrypting it. There is no charge to you or the user for
-  data storage and the saved data does not count towards the user's personal Drive quota. During
-  the M Preview period, users can store up to 25MB per Android app.
-</p>
-
-<p>
-  Automatic backups occur every 24 hours, when the device is idle, charging, and connected to a
-  Wi-Fi network. When these conditions are met, the Backup Manager service uploads all available
-  backup data to the cloud. When the user transitions to a new device, or uninstalls and reinstalls
-  the backed up app, a restore operation copies the backed up data into the newly installed
-  app’s data directory.
-</p>
-
-<p class="note">
-  <strong>Note:</strong> If your app uses the legacy
-  <a href="{@docRoot}google/backup/index.html">Android Backup service</a>, this new behavior
-  does not apply and the existing backup behavior works as usual.
-</p>
-
-
-<h3 id="auto-exclude">Automatically Excluded Data Files</h3>
-
-<p>
-  Not all app data should be backed up, such as temporary files and caches, so the automatic backup
-  service excludes certain data files by default:
-</p>
-
-<ul>
-  <li>Files in the directories referred to by the {@link android.content.Context#getCacheDir
-    getCacheDir()} and {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()}
-    methods.
-  </li>
-
-  <li>Files located on external storage, unless they reside in the directory referred to by the
-    {@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
-  method.
-  </li>
-
-  <li>Files located in the directory referred to by the
-    {@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()} method.
-  </li>
-</ul>
-
-<h2 id="configuring">Configuring Data Backup</h2>
-
-<p>
-  The data created by any app installed on an M Preview device is backed up, except for the
-  automatically excluded files listed in the previous section. You can further limit and configure
-  what data gets backed up from your app using settings in your app manifest.
-</p>
-
-<h3 id="include-exclude">Including or Excluding Data</h3>
-
-<p>
-  Depending on what data your app needs and how you save it, you may need to set specific
-  rules for including or excluding certain files or directories. The automatic backup service
-  supports setting these backup rules through use of an XML configuration file and the app
-  manifest. In the app manifest, you can specify a backup scheme configuration file as shown in the
-  following example:
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:tools="http://schemas.android.com/tools"
-        package="com.my.appexample"&gt;
-    &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
-    &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
-    &lt;app ...
-<strong>        android:fullBackupContent="&#64;xml/mybackupscheme"&gt;</strong>
-    &lt;/app&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
-
-<p>
-  In this example code, the <code>android:fullBackupContent</code> attribute specifies an XML file,
-  located in the <code>res/xml/</code> directory of your app development project, named
-  <code>mybackupscheme.xml</code>. This configuration file includes rules for what files are backed
-  up. The following example code shows a configuration file that excludes a specific file from
-  backups:
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;full-backup-content&gt;
-    &lt;exclude domain="database" path="device_info.db"/&gt;
-&lt;/full-backup-content&gt;
-</pre>
-
-<p>
-  This example backup configuration only excludes a specific database file from being backed up.
-  All other files are backed up.
-</p>
-
-<h4>Backup Configuration Syntax</h4>
-
-<p>
-  The backup service configuration allows you to specify what files to include or exclude from
-  backup. The syntax for the data backup configuration xml file is as follows:
-</p>
-
-<pre>
-&lt;full-backup-content&gt;
-    &lt;include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
-    &lt;exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /&gt;
-&lt;/full-backup-content&gt;
-</pre>
-
-<p>
-  The following elements and attributes allow you to specify the files to include and exclude from
-  backup:
-</p>
-
-<ul>
-  <li>
-  <code>&lt;include&gt;</code>. Use this element if you want to specify a set of resources to
-  back up, instead of having the system back up all data in your app by default. When you specify
-  an <code>&lt;include&gt;</code> tag, the system backs up <em>only the resources specified</em>
-  with this element.
-  </li>
-
-  <li>
-  <code>&lt;exclude&gt;</code>. Use this element to specify a set of resources to exclude from
-  backup. The system backs up all data in your app, except for resources specified with this
-  element.
-  </li>
-
-  <li>
-  <code>domain.</code> The type of resource you want to include or exclude from backup. The valid
-  values you can specify for this attribute include:
-  </li>
-
-  <li style="list-style: none">
-  <ul>
-    <li>
-    <code>root</code>. Specifies that the resource is in the app’s root directory.
-    </li>
-
-    <li>
-    <code>file</code>. Corresponds to a resource in the directory returned by the
-    {@link android.content.Context#getFilesDir getFilesDir()} method.
-    </li>
-
-    <li>
-    <code>database</code>. Corresponds to a database returned by the
-    {@link android.content.Context#getDatabasePath getDatabasePath()} method or by using the
-    {@link android.database.sqlite.SQLiteOpenHelper} class.
-    </li>
-
-    <li>
-    <code>sharedpref</code>. Corresponds to a {@link android.content.SharedPreferences} object
-    returned by the {@link android.content.Context#getSharedPreferences getSharedPreferences()}
-    method.
-    </li>
-
-    <li>
-    <code>external</code>. Specifies that the resource is in external storage, and corresponds
-    to a file in the directory returned by the
-    {@link android.content.Context#getExternalFilesDir getExternalFilesDir()} method.
-    </li>
-
-    <li>
-    <code>path</code>. The file path to a resource that you want to include or exclude from
-    backup.
-    </li>
-  </ul>
-  </li>
-</ul>
-
-
-<h3 id="prohibit">Prohibiting Data Backups</h3>
-
-<p>
-  You can choose to prevent automatic backups of any of your app data by setting the
-  <code>android:allowBackup</code> attribute to <code>false</code> in the app element of
-  your manifest. This setting is illustrated in the following example code:
-</p>
-
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:tools="http://schemas.android.com/tools"
-        package="com.my.appexample"&gt;
-    &lt;uses-sdk android:minSdkVersion="MNC"/&gt;
-    &lt;uses-sdk android:targetSdkVersion="MNC"/&gt;
-    &lt;app ...
-<strong>        android:allowBackup="false"&gt;</strong>
-    &lt;/app&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
-
-
-<h2 id="testing">Testing Backup Configuration</h2>
-
-<p>
-  Once you have created a backup configuration, you should test it to make sure your app saves data
-  and can be restored properly.
-</p>
-
-
-<h4>Enabling Backup Logging</h4>
-
-<p>
-  To help determine how the backup feature is parsing your XML file, enable logging before
-  performing a test backup:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
-</pre>
-
-<h4>Testing Backup</h4>
-
-<p>To manually run a backup, first you must initialize the Backup Manager by calling the following
-  command:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr run
-</pre>
-
-<p>
-  Next, you manually backup your application using the following command, specifying the package
-  name for your app as the <code>&lt;PACKAGE&gt;</code> parameter:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr fullbackup &lt;PACKAGE&gt;</pre>
-
-
-<h4>Testing Restore</h4>
-
-<p>
-  To manually initiate a restore after your app data is backed up, call the following command,
-  specifying the package name for your app as the <code>&lt;PACKAGE&gt;</code> parameter:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr restore &lt;PACKAGE&gt;
-</pre>
-
-<p class="warning">
-  <b>Warning:</b> This action stops your app and wipes its data before performing the restore
-  operation.
-</p>
-
-<p>
-  You initiate the restore process for your app by uninstalling and reinstalling your app. The app
-  data is automatically restored from the cloud once the app installation is complete.
-</p>
-
-
-<h4>Troubleshooting Backups</h4>
-
-<p>
-  If you run into issues, you can clear the backup data and associated metadata by turning backup
-  off and on in the <strong>Settings &gt; Backup</strong>, factory resetting the device, or by
-  calling this command:
-</p>
-
-<pre>$ adb shell bmgr wipe &lt;TRANSPORT&gt; &lt;PACKAGE&gt;</pre>
-
-<p>
-  The <code>&lt;TRANSPORT&gt;</code> value must be prefixed by <code>com.google.android.gms</code>.
-  To get the list of transports, call the following command:
-</p>
-
-<pre>$ adb shell bmgr list transports</pre>
-
-<h2 id="issues">Known Issues</h2>
-
-<p>The following are known issues with the automatic backup service:</p>
-
-<ul>
-  <li><strong>Google Cloud Messaging</strong> -
-  For apps that use Google Cloud Messaging for push notifications, there is a known issue where
-  backing up the registration ID returned by Google Cloud Messaging registration can break push
-  notifications for the restored app. It is important to query the API for a new
-  registration ID after being installed on a new device, which is not be the case if the old
-  registration ID was backed up. To avoid this, exclude the registration id from the set of backed
-  up files.
-  </li>
-</ul>
diff --git a/docs/html/preview/behavior-changes.jd b/docs/html/preview/behavior-changes.jd
index 264e741..245fa88 100644
--- a/docs/html/preview/behavior-changes.jd
+++ b/docs/html/preview/behavior-changes.jd
@@ -1,442 +1,529 @@
 page.title=Behavior Changes
 page.keywords=preview,sdk,compatibility
-sdk.platform.apiLevel=MNC
+meta.tags="preview", "compatibility"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-changes_2x.png
 @jd:body
 
+
 <div id="qv-wrapper">
 <div id="qv">
 
 <h2>In this document</h2>
 
-<ol id="toc44" class="hide-nested">
-    <li><a href="#behavior-runtime-permissions">Runtime Permissions</a></li>
-    <li><a href="#behavior-power">Power-Saving Optimizations</a></li>
-    <li><a href="#behavior-adoptable-storage">Adoptable Storage Devices</a></li>
-    <li><a href="#behavior-apache-http-client">Apache HTTP Client Removal</a></li>
-    <li><a href="#behavior-audiomanager-Changes">AudioManager Changes</a></li>
-    <li><a href="#behavior-notifications">Notifications</a></li>
-    <li><a href="#behavior-test-selection">Text Selection</a></li>
-    <li><a href="#behavior-keystore">Android Keystore Changes</a></li>
-    <li><a href="#behavior-network">Wi-Fi and Networking Changes</a></li>
-    <li><a href="#behavior-camera">Camera Service Changes</a></li>
-    <li><a href="#behavior-runtime">Runtime</a></li>
-    <li><a href="#behavior-hardware-id">Access to Hardware Identifier</a></li>
-    <li><a href="#behavior-apk-validation">APK Validation</a></li>
-    <li><a href="#behavior-usb">USB Connection</a></li>
-    <li><a href="#behavior-afw">Android for Work Changes</a></li>
-</ol>
-
-<h2>API Differences</h2>
 <ol>
-<li><a href="{@docRoot}preview/download.html">API level 22 to M Preview &raquo;</a> </li>
+  <li><a href="#perf">Performance Improvements</a>
+    <ol>
+      <li><a href="#doze">Doze</a></li>
+      <li><a href="#bg-opt">Background Optimizations</a></li>
+    </ol>
+  </li>
+  <li><a href="#perm">Permissions Changes</a>
+    <ol>
+      <li><a href="#permfilesys">File System Permission Changes</a></li>
+    </ol>
+  </li>
+  <li><a href="#accessibility">Accessibility Improvements</a>
+    <ol>
+      <li><a href="#screen-zoom">Screen Zoom</a></li>
+      <li><a href="#vision-settings">Vision Settings in Setup Wizard</a></li>
+    </ol>
+  </li>
+  <li><a href="#ndk">NDK Apps Linking to Platform Libraries</a></li>
+  <li><a href="#afw">Android for Work</a></li>
 </ol>
 
-
 <h2>See Also</h2>
 <ol>
-<li><a href="{@docRoot}preview/api-overview.html">M Developer Preview API Overview</a> </li>
+  <li><a href="{@docRoot}preview/api-overview.html">
+    Android N API Overview</a></li>
 </ol>
 
 </div>
 </div>
 
-<p>Along with new features and capabilities, the M Developer Preview includes a variety of
-system changes and API behavior changes. This document highlights
-some of the key changes that you should understand and account for in your apps.</p>
 
-<p>If you have previously published an app for Android, be aware that these changes in the
-platform affect your app.</p>
-
-<h2 id="behavior-runtime-permissions">Runtime Permissions</h1>
-<p>This preview introduces a new permissions model, where users can now directly manage
-app permissions at runtime. This model gives users improved visibility and control over
-permissions, while streamlining the installation and auto-update processes for app developers.
-Users can grant or revoke permissions individually for installed apps. </p>
-
-<p>On your apps that target the M Preview release or higher, make sure to check for and request
-permissions at runtime. To determine if your app has been granted a permission, call the
-new {@link android.content.Context#checkSelfPermission(java.lang.String) checkSelfPermission()}
-method. To request a permission, call the new
-{@link android.app.Activity#requestPermissions(java.lang.String[], int) requestPermissions()}
-method. Even if your app is not targeting the M Preview release, you should test your app under
-the new permissions model.</p>
-
-<p>For details on supporting the new permissions model in your app, see the
-<a href="{@docRoot}preview/features/runtime-permissions.html">
-Permissions</a> developer preview page. For tips on how to assess the impact on your app,
-see the <a href="{@docRoot}preview/testing/guide.html#runtime-permissions">Testing Guide</a></p>
-
-<h2 id="behavior-power">Power-Saving Optimizations</h2>
-<p>This preview introduces new power-saving optimizations for idle devices and apps.</p>
-<ul>
-<li><strong>Doze</strong>: If a user unplugs a device and leaves it stationary, with its screen off,
-for a period of time, the device goes into <em>Doze</em> mode, where it attempts to keep the system
-in a sleep state. In this mode, devices periodically resume normal operations for brief periods of
-time so that app syncing can occur and the system can perform any pending operations.
-<li><strong>App Standby</strong>: App Standby allows the system to determine that an app is idle
-when the user is not actively using it. The system makes this determination when the user does not
-touch the app for a certain period of time. If the device is unplugged, the system disables network
-access and suspends syncs and jobs for the apps it deems idle.</li>
-</ul>
-
-<p>To learn more about these power-saving changes, see
-<a href="{@docRoot}preview/features/power-mgmt.html">Power-Saving Optimizations</a>.</p>
-
-<h2 id="behavior-adoptable-storage">Adoptable Storage Devices</h2>
 <p>
-With this preview, users can <em>adopt</em> external storage devices such as SD cards. Adopting an
-external storage device encrypts and formats the device to behave like internal storage. This
-feature allows users to move both apps and private data of those apps between storage devices. When
-moving apps, the system respects the
-<a href="{@docRoot}guide/topics/manifest/manifest-element.html#install">{@code android:installLocation}</a>
-preference in the manifest.</p>
+  Along with new features and capabilities, Android N
+  includes a variety of system and API behavior changes. This document
+  highlights some of the key changes that you should understand and account for
+  in your apps.
+</p>
 
-<p>If your app accesses the following APIs or fields, be aware that the file paths they return
-will dynamically change when the app is moved between internal and external storage devices.
-When building file paths, it is strongly recommended that you always call these APIs dynamically.
-Don’t use hardcoded file paths or persist fully-qualified file paths that were built previously.</p>
+<p>
+  If you have previously published an app for Android, be aware that your app
+  might be affected by these changes in the platform.
+</p>
+
+
+<h2 id="perf">Performance Improvements</h2>
+
+<p>
+  Android N contains system behavior changes aimed at improving the battery
+  life of devices, RAM usage, and app performance. These changes can impact the
+  availability of system resources and system notifications to your app. You
+  should review these changes and evaluate how your app may need to adjust to
+  them.
+</p>
+
+<h3 id="doze">Doze</h3>
+
+<p>
+  Introduced in Android 6.0 (API level 23), Doze improves battery life by
+  deferring CPU and network activities when a user leaves a device unplugged,
+  stationary, and with the screen turned off. Android N brings further
+  enhancements to Doze by applying a subset of CPU and network restrictions
+  while the device is unplugged with the screen turned off, but not necessarily
+  stationary, for example, when a handset is traveling in a user’s pocket.
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-1.png"
+  alt="" height="251px" id="figure1" />
+<p class="img-caption">
+  <strong>Figure 1.</strong> Illustration of how Doze applies a first level of
+  system activity restrictions to improve battery life.
+</p>
+
+<p>
+  When a device is on battery power, and the screen has been off for a certain
+  time, the device enters Doze and applies the first subset of restrictions: It
+  shuts off app network access, and defers jobs and syncs. If the device is
+  stationary for a certain time after entering Doze, the system applies the
+  rest of the Doze restrictions to {@link android.os.PowerManager.WakeLock},
+  {@link android.app.AlarmManager} alarms, GPS, and Wi-Fi scans. Regardless of
+  whether some or all Doze restrictions are being applied, the system wakes the
+  device for brief maintenance windows, during which applications are allowed
+  network access and can execute any deferred jobs/syncs.
+</p>
+
+
+<img src="{@docRoot}preview/images/doze-diagram-2.png"
+  alt="" id="figure2" />
+<p class="img-caption">
+  <strong>Figure 2.</strong> Illustration of how Doze applies a second level of
+  system activity restrictions after the device is stationary for a certain time.
+</p>
+
+<p>
+  Note that activating the screen on or plugging in the device exits Doze and
+  removes these processing restrictions. The additional behavior does not
+  affect recommendations and best practices in adapting your app to the prior
+  version of Doze introduced in Android 6.0 (API level 23), as discussed in
+  <a href="{@docRoot}training/monitoring-device-state/doze-standby.html">
+  Optimizing for Doze and App Standby</a>. You should still
+  follow those recommendations, such as using Google Cloud Messaging (GCM) to
+  send and receive messages, and start planning updates to accomodate the
+  additional Doze behavior.
+</p>
+
+
+<h3 id="bg-opt">Project Svelte: Background Optimizations</h3>
+
+<p>
+  Android N removes three implicit broadcasts in order to help optimize both
+  memory use and power consumption. This change is necessary because implicit
+  broadcasts frequently start apps that have registered to listen for them in
+  the background. Removing these broadcasts can substantially benefit device
+  performance and user experience.
+</p>
+
+<p>
+  Mobile devices experience frequent connectivity changes, such as when moving
+  between Wi-Fi and mobile data. Currently, apps can monitor for changes in
+  connectivity by registering a receiver for the implicit {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} broadcast in their
+  manifest. Since many apps register to receive this broadcast, a single
+  network switch can cause them all to wake up and process the broadcast at
+  once.
+</p>
+
+<p>
+  Similarly, apps can register to receive implicit {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} and {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} broadcasts from other apps, such as
+  Camera. When a user takes a picture with the Camera app, these apps wake up
+  to process the broadcast.
+</p>
+
+<p>
+  To alleviate these issues, Android N applies the following
+  optimizations:
+</p>
 
 <ul>
-<li>{@link android.content.Context} methods:
-    <ul>
-        <li>{@link android.content.Context#getFilesDir() getFilesDir()}</li>
-        <li>{@link android.content.Context#getCacheDir() getCacheDir()}</li>
-        <li>{@link android.content.Context#getCodeCacheDir() getCodeCacheDir()}</li>
-        <li>{@link android.content.Context#getDatabasePath(java.lang.String) getDatabasePath()}</li>
-        <li>{@link android.content.Context#getDir(java.lang.String,int) getDir()}</li>
-        <li>{@link android.content.Context#getNoBackupFilesDir() getNoBackupFilesDir()}</li>
-        <li>{@link android.content.Context#getFileStreamPath(java.lang.String) getFileStreamPath()}</li>
-        <li>{@link android.content.Context#getPackageCodePath() getPackageCodePath()}</li>
-        <li>{@link android.content.Context#getPackageResourcePath() getPackageResourcePath()}</li>
-    </ul>
-</li>
-<li>{@link android.content.pm.ApplicationInfo} fields:
-    <ul>
-        <li>{@link android.content.pm.ApplicationInfo#dataDir dataDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#sourceDir sourceDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#nativeLibraryDir nativeLibraryDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#publicSourceDir publicSourceDir}</li>
-        <li>{@link android.content.pm.ApplicationInfo#splitSourceDirs splitSourceDirs}</li>
-        <li>{@link android.content.pm.ApplicationInfo#splitPublicSourceDirs splitPublicSourceDirs}</li>
-    </ul>
-</li>
+  <li>Apps targeting Android N do not receive {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} broadcasts, even if they
+  have manifest entries to request notification of these events. Apps running
+  in the foreground can still listen for {@code CONNECTIVITY_CHANGE} on their
+  main thread if they request notification with a {@link
+  android.content.BroadcastReceiver}.
+  </li>
+
+  <li>Apps cannot send or receive {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} or {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} broadcasts. This optimization
+  affects all apps, not only those targeting Android N.
+  </li>
 </ul>
 
-<p>To debug this feature in the developer preview, you can enable adoption of a USB drive that is
-connected to an Android device through a USB On-The-Go (OTG) cable, by running this command:</p>
+<p>If your app uses any of these intents, you should remove dependencies
+  on them as soon as possible so that you can target Android N devices properly.
+  The Android framework provides several solutions to mitigate the need for
+  these implicit broadcasts. For example, the {@link
+  android.app.job.JobScheduler} API provides a robust mechanism to schedule
+  network operations when specified conditions, such as connection to an
+  unmetered network, are met. You can even use {@link
+  android.app.job.JobScheduler} to react to changes to content providers.
+</p>
 
-<pre class="no-prettyprint">
-$ adb shell sm set-force-adoptable true
+<p>
+  For more information about background optimizations in N and how to adapt your app,
+  see <a href=
+  "{@docRoot}preview/features/background-optimization.html">Background
+  Optimizations</a>.
+</p>
+
+
+<h2 id="perm">Permissions Changes</h2>
+
+<p>
+  Android N includes changes to permissions that may affect your app,
+  including user accounts permissions and a new permission for writing to
+  external storage. Here is a summary of the permissions that have changed in
+  the preview:
+</p>
+
+<ul>
+  <li>{@code GET_ACCOUNTS} (Deprecated)
+    <p>
+      The GET_ACCOUNTS permission is now deprecated. The system ignores this
+      permission for apps that target Android N.
+    </p>
+  </li>
+
+</ul>
+
+<h3 id="permfilesys">File system permission changes</h3>
+
+<p>
+  In order to improve the security of private files, the private directory of
+  apps targeting Android N or higher has restricted access (0700). This prevents
+  leakage of metadata of private files, such as their size or existence. This
+  has multiple side effects:
+</p>
+
+<ul>
+  <li>
+    Private files’ file permissions can no longer be relaxed by the owner, and
+    an attempt to do so using
+    {@link android.content.Context#MODE_WORLD_READABLE} and/or
+    {@link android.content.Context#MODE_WORLD_WRITEABLE}, will trigger a
+    {@link java.lang.SecurityException}.
+  </li>
+  <li>
+    Passing <code>file://</code> URIs outside the package domain may leave the
+    receiver with an unaccessible path. Therefore, attempts to pass a
+    <code>file://</code> URI trigger a
+    <code>FileUriExposedException</code>. The recommended way to share the
+    content of a private file is using the {@link
+    android.support.v4.content.FileProvider}.
+  </li>
+  <li>
+    The {@link android.app.DownloadManager} can no longer share privately
+    stored files by filename. Legacy applications may end up with an
+    unaccessible path when accessing {@link
+    android.app.DownloadManager#COLUMN_LOCAL_FILENAME}. Apps targeting
+    Android N or higher trigger a {@link java.lang.SecurityException} when
+    attempting to access
+    {@link android.app.DownloadManager#COLUMN_LOCAL_FILENAME}.
+    Legacy applications that set the download location to a public location by
+    using
+    {@link
+    android.app.DownloadManager.Request#setDestinationInExternalFilesDir} or
+    {@link
+    android.app.DownloadManager.Request#setDestinationInExternalPublicDir}
+    can still access the path in
+    {@link android.app.DownloadManager#COLUMN_LOCAL_FILENAME}, however, this
+    method is strongly discouraged. The preferred way of accessing a file
+    exposed by the {@link android.app.DownloadManager} is using
+    {@link android.content.ContentResolver#openFileDescriptor}.
+  </li>
+</ul>
+
+<h2 id="accessibility">Accessibility Improvements</h2>
+
+<p>
+  Android N includes changes intended to improve the usability of the
+  platform for users with low or impaired vision. These changes should
+  generally not require code changes in your app, however you should review
+  these feature and test them with your app to assess potential impacts to user
+  experience.
+</p>
+
+
+<h3 id="screen-zoom">Screen Zoom</h3>
+
+<p>
+  Android N enables users to set <strong>Display size</strong>which magnifies
+  or shrinks all elements on the screen, thereby improving device accessibility
+  for users with low vision. Users cannot zoom the screen past a minimum screen
+  width of <a href=
+  "http://developer.android.com/guide/topics/resources/providing-resources.html">
+  sw320dp</a>, which is the width of a Nexus 4, a common medium-sized phone.
+</p>
+
+<div class="cols">
+
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
+</div>
+<div class="col-6">
+  <img src="{@docRoot}preview/images/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
+</div>
+
+</div> <!-- end cols -->
+<p class="img-caption">
+  <strong>Figure 3.</strong> The screen on the right shows the effect of
+  increasing the Display size of a device running an Android N system image.
+</p>
+
+
+<p>
+  When the device density changes, the system notifies running apps in the
+  following ways:
+</p>
+
+<ul>
+  <li>If an app targets API level 23 or lower, the system automatically kills
+  all its background processes. This means that if a user switches away from
+  such an app to open the <em>Settings</em> screen and changes the
+  <strong>Display size</strong> setting, the system kills the app in the same
+  manner that it would in a low-memory situation. If the app has any foreground
+  processes, the system notifies those processes of the configuration change as
+  described in <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Handling
+  Runtime Changes</a>, just as if the device's orientation had changed.
+  </li>
+
+  <li>If an app targets Android N, all of its processes
+  (foreground and background) are notified of the configuration change as
+  described in <a href=
+  "{@docRoot}guide/topics/resources/runtime-changes.html">Handling
+  Runtime Changes</a>.
+  </li>
+</ul>
+
+<p>
+  Most apps do not need to make any changes to support this feature, provided
+  the apps follow Android best practices. Specific things to check for:
+</p>
+
+<ul>
+  <li>Test your app on a device with screen width <code><a href=
+  "{@docRoot}guide/topics/resources/providing-resources.html">sw320dp</a></code>
+  and be sure it performs adequately.
+  </li>
+
+  <li>When the device configuration changes, update any density-dependent
+  cached information, such as cached bitmaps or resources loaded from the
+  network. Check for configuration changes when the app resumes from the paused
+  state.
+    <p class="note">
+      <strong>Note:</strong> If you cache configuration-dependent data, it's a
+      good idea to include relevant metadata such as the appropriate screen
+      size or pixel density for that data. Saving this metadata allows you to
+      decide whether you need to refresh the cached data after a configuration
+      change.
+    </p>
+  </li>
+
+  <li>Avoid specifying dimensions with px units, since they do not scale with
+  screen density. Instead, specify dimensions with <a href=
+  "{@docRoot}guide/practices/screens_support.html">density-independent
+  pixel</a> (<code>dp</code>) units.
+  </li>
+</ul>
+
+<h3 id="vision-settings">Vision Settings in Setup Wizard</h3>
+
+<p>
+  Android N includes Vision Settings on the Welcome screen, where users can
+  set up the following accessibility settings on a new device:
+  <strong>Magnification gesture</strong>, <strong>Font size</strong>,
+  <strong>Display size</strong> and <strong>TalkBack</strong>. This change
+  increases the visibility of bugs related to different screen settings. To
+  assess the impact of this feature, you should test your apps with these
+  settings enabled. You can find the settings under <strong>Settings &gt;
+  Accessibility</strong>.
+</p>
+
+<h2 id="ndk">NDK Apps Linking to Platform Libraries</h2>
+
+<p>
+  Android N includes namespace changes to prevent loading of non-public APIs.
+  If you use the NDK, you should only be using public APIs from the Android
+  platform. Using non-public APIs in the next official release of Android
+  can cause your app to crash.
+</p>
+
+<p>
+  In order to alert you to use of non-public APIs, apps running on an Android N
+  device generate an error in logcat output when an app calls a non-public API.
+  This error is also displayed on the device screen as a message to help
+  raise awareness of this situation. You should review your app code to
+  remove use of non-public platform APIs and thoroughly test your apps using
+  a preview device or emulator.
+</p>
+
+<p>
+  If your app depends on platform libraries, see the NDK documentation for
+  typical fixes for replacing common private APIs with public API equivalents.
+  You may also be linking to platform libraries without realizing it,
+  especially if your app uses a library that is part of the platform (such as
+  <code>libpng</code>), but is not part of the NDK. In that case, ensure that
+  your APK contains all the .so files you intended to link against.
+</p>
+
+<p class="caution">
+  <strong>Caution:</strong> Some third-party libraries may link to non-public
+  APIs. If your app uses these libraries, your app may crash when running
+  on the next official release of Android.
+</p>
+
+<p>
+  Apps should not depend on or use native libraries that are not included in
+  the NDK, because they may change, or be removed from one Android release to
+  another. The switch from OpenSSL to BoringSSL is an example of such a change.
+  Also, different devices may offer different levels of compatibility, because
+  there are no compatibility requirements for platform libraries not included
+  in the NDK. If you must access non-NDK libraries on older devices, make the
+  loading dependent on the Android API level.
+</p>
+
+<p>
+  To help you diagnose these types problems here are some example Java and NDK
+  errors you might encounter when attempting to build your app with Android N:
+</p>
+
+<p>Example Java error:</p>
+<pre class="no-pretty-print">
+java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libcutils.so"
+    is not accessible for the namespace "classloader-namespace"
 </pre>
 
-<h2 id="behavior-apache-http-client">Apache HTTP Client Removal</h2>
-<p>This preview removes support for the Apache HTTP client. If your app is using this client and
-targets Android 2.3 (API level 9) or higher, use the {@link java.net.HttpURLConnection} class
-instead. This API is more efficient because it reduces network use through transparent compression
-and response caching, and minimizes power consumption. To continue using the Apache HTTP APIs, you
-must first declare the following compile-time dependency in your {@code build.gradle} file:
+<p>Example NDK error:</p>
+<pre class="no-pretty-print">
+dlopen failed: cannot locate symbol "__system_property_get" referenced by ...
+</pre>
+
+
+<p>
+  Here are some typical fixes for apps encountering these types of errors:
 </p>
+
+<ul>
+  <li>Use of getJavaVM and getJNIEnv from libandroid_runtime.so can be replaced
+  with standard JNI functions:
+<pre class="no-pretty-print">
+AndroidRuntime::getJavaVM -&gt; GetJavaVM from &lt;jni.h&gt;
+AndroidRuntime::getJNIEnv -&gt; JavaVM::GetEnv or
+JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
+</pre>
+  </li>
+
+  <li>Use of {@code property_get} symbol from {@code libcutils.so} can be
+    replaced with the public {@code alternative __system_property_get}.
+   To do this, use {@code __system_property_get} with the following include:
 <pre>
-android {
-    useLibrary 'org.apache.http.legacy'
-}
+#include &lt;sys/system_properties.h&gt;
 </pre>
-<p>Android is moving away from OpenSSL to the
-<a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a>
-library. If you’re using the Android NDK in your app, don't link against cryptographic libraries
-that are not a part of the NDK API, such as {@code libcrypto.so} and {@code libssl.so}. These
-libraries are not public APIs, and may change or break without notice across releases and devices.
-In addition, you may expose yourself to security vulnerabilities. Instead, modify your
-native code to call the Java cryptography APIs via JNI or to statically link against a
-cryptography library of your choice.</p>
+  </li>
 
-<h2 id="behavior-audiomanager-Changes">AudioManager Changes</h2>
-<p>Setting the volume directly or muting specific streams via the {@link android.media.AudioManager}
-class is no longer supported. The {@link android.media.AudioManager#setStreamSolo(int,boolean)
-setStreamSolo()} method is deprecated, and you should call the
-{@link android.media.AudioManager#requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, int, int) requestAudioFocus()}
-method instead. Similarly, the
-{@link android.media.AudioManager#setStreamMute(int,boolean) setStreamMute()} method is
-deprecated; instead, call the {@link android.media.AudioManager#adjustStreamVolume(int, int, int)
-adjustStreamVolume()} method and pass in the direction value
-{@link android.media.AudioManager#ADJUST_MUTE} or
-{@link android.media.AudioManager#ADJUST_UNMUTE}.</p>
+  <li>Use of {@code SSL_ctrl} symbol from {@code libcrypto.so} should be
+  replaced with an app local version. For example, you should statically link
+  {@code libcyrpto.a} in your {@code .so} file or include your own dynamically
+  {@code libcrypto.so} from BoringSSL or OpenSSL in your app.
+  </li>
+</ul>
 
-<h2 id="behavior-notifications">Notifications</h2>
+<h2 id="afw">Android for Work</h2>
 <p>
-This release removes the {@code Notification.setLatestEventInfo()} method. Use the
-{@link android.app.Notification.Builder} class instead to construct notifications. To update a
-notification repeatedly, reuse the {@link android.app.Notification.Builder} instance. Call the
-{@link android.app.Notification.Builder#build()} method to get
-updated {@link android.app.Notification} instances.
+  Android N contains changes for apps that target Android for Work, including
+  changes to certificate installation, password resetting, secondary user
+  management, and access to device identifiers. If you are building apps for
+  Android for Work environments, you should review these changes and modify
+  your app accordingly.
 </p>
-<p>The {@code adb shell dumpsys notification} command no longer prints out your notification text.
-Use the {@code adb shell dumpsys notification --noredact} command instead to print out the text
-in a notification object.</p>
 
-<h2 id="behavior-test-selection">Text Selection</h2>
-
-<img src="{@docRoot}preview/images/text-selection.gif"
-style="float:right; margin:0 0 20px 30px" width="360" height="640" />
-
-<p>When users select text in your app, you can now display text selection actions such as
-<em>Cut</em>, <em>Copy</em>, and <em>Paste</em> in a
-<a href="http://www.google.com/design/spec/patterns/selection.html#selection-text-selection"
-class="external-link">floating toolbar</a>. The user interaction implementation is similar to that
-for the contextual action bar, as described in
-<a href="{@docRoot}guide/topics/ui/menus.html#CABforViews">
-Enabling the contextual action mode for individual views</a>.</p>
-
-<p>To implement a floating toolbar for text selection, make the following changes in your existing
-apps:</p>
-<ol>
-<li>In your {@link android.view.View} or {@link android.app.Activity} object, change your
-{@link android.view.ActionMode} calls from
-{@code startActionMode(Callback)} to {@code startActionMode(Callback, ActionMode.TYPE_FLOATING)}.</li>
-<li>Take your existing implementation of {@code ActionMode.Callback} and make it extend
-{@link android.view.ActionMode.Callback2} instead.</li>
-<li>Override the
-{@link android.view.ActionMode.Callback2#onGetContentRect(android.view.ActionMode, android.view.View, android.graphics.Rect) onGetContentRect()}
-method to provide the coordinates of the content {@link android.graphics.Rect} object
-(such as a text selection rectangle) in the view.</li>
-<li>If the rectangle positioning is no longer valid, and this is the only element to be invalidated,
-call the {@link android.view.ActionMode#invalidateContentRect() invalidateContentRect()} method.</li>
-</ol>
-
-<p>If you are using <a href="{@docRoot}tools/support-library/index.html">
-Android Support Library</a> revision 22.2, be aware that floating toolbars are not
-backward-compatible and appcompat takes control over {@link android.view.ActionMode} objects by
-default. This prevents floating toolbars from being displayed. To enable
-{@link android.view.ActionMode} support in an
-{@link android.support.v7.app.AppCompatActivity}, call
-{@link android.support.v7.app.AppCompatActivity#getDelegate()}, then call
-{@link android.support.v7.app.AppCompatDelegate#setHandleNativeActionModesEnabled(boolean)
-setHandleNativeActionModesEnabled()} on the returned
-{@link android.support.v7.app.AppCompatDelegate} object and set the input
-parameter to {@code false}. This call returns control of {@link android.view.ActionMode} objects to
-the framework. In devices running the M Preview, that allows the framework to support
-{@link android.support.v7.app.ActionBar} or floating toolbar modes, while on pre-M Preview devices,
-only the {@link android.support.v7.app.ActionBar} modes are supported.</p>
-
-<h2 id="behavior-keystore">Android Keystore Changes</h2>
-<p>With this preview, the
-<a href="{@docRoot}training/articles/keystore.html">Android Keystore provider</a> no longer supports
-DSA. ECDSA is still supported.</p>
-
-<p>Keys which do not require encryption at rest will no longer be deleted when secure lock screen
-is disabled or reset (for example, by the user or a Device Administrator). Keys which require
-encryption at rest will be deleted during these events.</p>
-
-<h2 id="behavior-network">Wi-Fi and Networking Changes</h2>
-
-<p>This preview introduces the following behavior changes to the Wi-Fi and networking APIs.</p>
 <ul>
-<li>Your apps can now change the state of {@link android.net.wifi.WifiConfiguration} objects only
-if you created these objects. You are not permitted to modify or delete
-{@link android.net.wifi.WifiConfiguration} objects created by the user or by other apps.
+  <li>You must install a delegated certificate installer before the DPC can set
+  it. For both profile and device-owner apps targeting the N SDK, you should
+  install the delegated certificate installer before the device policy
+  controller (DPC) calls
+  <code>DevicePolicyManager.setCertInstallerPackage()</code>. If the installer
+  is not already installed, the system throws an
+  <code>IllegalArgumentException</code>.
+  </li>
+
+  <li>Reset password restrictions for device admins now apply to profile
+  owners. Device admins can no longer use
+  <code>DevicePolicyManager.resetPassword()</code> to clear passwords or change
+  ones that are already set. Device admins can still set a password, but only
+  when the device has no password, PIN, or pattern.
+  </li>
+
+  <li>Device and profile owners can manage accounts even if restrictions are
+  set. Device owners and profile owners can call the Account Management APIs
+  even if <code>DISALLOW_MODIFY_ACCOUNTS</code> user restrictions are in place.
+  </li>
+
+  <li>Device owners can manage secondary users more easily. When a device is
+  running in device owner mode, the <code>DISALLOW_ADD_USER</code> restriction
+  is automatically set. This prevents users from creating unmanaged secondary
+  users. In addition, the <code>CreateUser()</code> and
+  <code>createAndInitial()</code> methods are deprecated; the new
+  <code>DevicePolicyManager.createAndManageUser()</code> method replaces them.
+  </li>
+
+  <li>Device owners can access device identifiers. A Device owner can access the
+  Wi-Fi MAC address of a device, using
+  <code>DevicePolicyManagewr.getWifiMacAddress()</code>. If Wi-Fi has never
+  been enabled on the device, this method returns a value of {@code null}.
+  </li>
+</ul>
+
+<p>
+  For more information about changes to Android for Work in Android N, see
+  <a href="{@docRoot}preview/features/afw.html">Android for Work Updates</a>.
+</p>
+
+<h2 id="other">Other important points</h2>
+
+<ul>
+<li>When an app is running on Android N, but targets a lower API level,
+and the user changes display size, the app process is killed. The app
+must be able to gracefully handle this scenario. Otherwise, it crashes
+when the user restores it from Recents.
+
+<p>
+You should test your app to ensure
+that this behavior does not occur.
+You can do so by causing an identical crash
+when killing the app manually via DDMS.
+</p>
+
+<p>
+Apps targeting N and above are not automatically killed on density changes;
+however, they may still respond poorly to configuration changes.
+</p>
 </li>
+
 <li>
-Previously, if an app forced the device to connect to a specific Wi-Fi network by using
-{@link android.net.wifi.WifiManager#enableNetwork(int,boolean) enableNetwork()} with the
-{@code disableAllOthers=true} setting, the device disconnected from other networks such as
-cellular data. In this preview, the device no longer disconnects from such other networks. If
-your app’s {@code targetSdkVersion} is {@code “20”} or lower, it is pinned to the selected
-Wi-Fi network. If your app’s {@code targetSdkVersion} is {@code “21”} or higher, use the
-multinetwork APIs (such as
-{@link android.net.Network#openConnection(java.net.URL) openConnection()},
-{@link android.net.Network#bindSocket(java.net.Socket) bindSocket()}, and the new
-{@link android.net.ConnectivityManager#bindProcessToNetwork(android.net.Network)
-bindProcessToNetwork()} method) to ensure that its network traffic is sent on the selected network.</li>
-</ul>
-
-<h2 id="behavior-camera">Camera Service Changes</h2>
-<p>In this preview, the model for accessing shared resources in the camera service has been changed
-from the previous “first come, first serve” access model to an access model where high-priority
-processes are favored.  Changes to the service behavior include:</p>
-<ul>
-<li>Access to camera subsystem resources, including opening and configuring a camera device, is
-awarded based on the “priority” of the client application process. Application processes with
-user-visible or foreground activities are generally given a higher-priority, making camera resource
-acquisition and use more dependable.</li>
-<li>Active camera clients for lower priority apps may be “evicted” when a higher priority
-application attempts to use the camera.  In the deprecated {@link android.hardware.Camera} API,
-this results in
-{@link android.hardware.Camera.ErrorCallback#onError(int,android.hardware.Camera) onError()} being
-called for the evicted client. In the {@link android.hardware.camera2 Camera2} API, it results in
-{@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected(android.hardware.camera2.CameraDevice) onDisconnected()}
-being called for the evicted client.</li>
-<li>On devices with appropriate camera hardware, separate application processes are able to
-independently open and use separate camera devices simultaneously. However, multi-process use
-cases, where simultaneous access causes significant degradation of performance or capabilities of
-any of the open camera devices, are now detected and disallowed by the camera service. This change
-may result in “evictions” for lower priority clients even when no other app is directly
-attempting to access the same camera device.
-</li>
-<li>
-Changing the current user causes active camera clients in apps owned by the previous user account
-to be evicted.  Access to the camera is limited to user profiles owned by the current device user.
-In practice, this means that a “Guest” account, for example, will not be able to leave running
-processes that use the camera subsystem when the user has switched to a different account.
+Apps on Android N should be able to gracefully handle configuration changes,
+and should not crash on subsequent starts. You can verify app behavior
+by changing font size (<strong>Setting</strong> >
+<strong>Display</strong> > <strong>Font size</strong>), and then restoring
+the app from Recents.
 </li>
 </ul>
 
-<h2 id="behavior-runtime">Runtime</h2>
-<p>The ART runtime now properly implements access rules for the
-{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} method. This
-change fixes a problem where Dalvik was checking access rules incorrectly in previous versions.
-If your app uses the
-{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} method and you
-want to override access checks, call the
-{@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()} method with the input
-parameter set to {@code true}. If your app uses the
-<a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7 appcompat library</a> or the
-<a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">v7 recyclerview library</a>,
-you must update your app to use to the latest versions of these libraries. Otherwise, make sure that
-any custom classes referenced from XML are updated so that their class constructors are accessible.</p>
-
-<p>This preview updates the behavior of the dynamic linker. The dynamic linker now understands the
-difference between a library’s {@code soname} and its path
-(<a href="https://code.google.com/p/android/issues/detail?id=6670" class="external-link">
-public bug 6670</a>), and search by {@code soname} is now
-implemented. Apps which previously worked that have bad {@code DT_NEEDED} entries
-(usually absolute paths on the build machine’s file system) may fail when loaded.</p>
-
-<p>The {@code dlopen(3) RTLD_LOCAL} flag is now correctly implemented. Note that
-{@code RTLD_LOCAL} is the default, so calls to {@code dlopen(3)} that didn’t explicitly use
-{@code RTLD_LOCAL} will be affected (unless your app explicitly used {@code RTLD_GLOBAL}). With
-{@code RTLD_LOCAL}, symbols will not be made available to libraries loaded by later calls to
-{@code dlopen(3)} (as opposed to being referenced by {@code DT_NEEDED} entries).</p>
-</p>
-
-<h2 id="behavior-hardware-id">Access to Hardware Identifier</h2>
-<p>To provide users with greater data protection, starting in this release, Android
-removes programmatic access to the device’s local hardware identifier for
-apps using the Wi-Fi and Bluetooth APIs. The
-{@link android.net.wifi.WifiInfo#getMacAddress() WifiInfo.getMacAddress()} and the
-{@link android.bluetooth.BluetoothAdapter#getAddress() BluetoothAdapter.getAddress()} methods
-now return a constant value of {@code 02:00:00:00:00:00}.</p>
-
-<p>To access the hardware identifiers of nearby external devices via Bluetooth and Wi-Fi scans,
-your app must now have the following permissions:</p>
-<ul>
-<li>{@link android.net.wifi.WifiManager#getScanResults() WifiManager.getScanResults()}:
-Your app must have {@link android.Manifest.permission#ACCESS_FINE_LOCATION} or
-{@link android.Manifest.permission#ACCESS_COARSE_LOCATION} permission.</li>
-<li>{@link android.bluetooth.BluetoothDevice#ACTION_FOUND BluetoothDevice.ACTION_FOUND}:
-Your app must have {@link android.Manifest.permission#ACCESS_COARSE_LOCATION} permission.</li>
-<li>{@link android.bluetooth.le.BluetoothLeScanner#startScan(android.bluetooth.le.ScanCallback)
-BluetoothLeScanner.startScan()}: Your app must have
-{@link android.Manifest.permission#ACCESS_FINE_LOCATION} or
-{@link android.Manifest.permission#ACCESS_COARSE_LOCATION} permission.</li>
-</ul>
-
-<p class="note"><strong>Note</strong>: When a device running M Developer Preview initiates a
-background Wi-Fi or Bluetooth scan, the operation is visible to external devices as
-originating from a randomized MAC address.</p>
-
-<h2 id="behavior-apk-validation">APK Validation</h2>
-<p>The platform now performs stricter validation of APKs. An APK is considered corrupt if a file is
-declared in the manifest but not present in the APK itself. An APK must be re-signed if any of the
-contents are removed.</p>
-
-<h2 id="behavior-usb">USB Connection</h2>
-<p>Device connections through the USB port are now set to charge-only mode by default. To access
-the device and its content over a USB connection, users must explicitly grant permission for such
-interactions. If your app supports user interactions with the device over a USB port, take into
-consideration that the interaction must be explicitly enabled.
-</p>
-
-<h2 id="behavior-afw">Android for Work Changes</h2>
-<p>This preview includes the following behavior changes for Android for Work:</p>
-<ul>
-  <li><strong>Work contacts in personal contexts.</strong> The Google Dialer
-Call Log now displays work contacts when the user views past calls.
-Setting
-{@link android.app.admin.DevicePolicyManager#setCrossProfileCallerIdDisabled(android.content.ComponentName, boolean) setCrossProfileCallerIdDisabled()}
-to {@code true} hides the work profile contacts in the Google Dialer Call Log. Work contacts can be
-displayed along with personal contacts to devices over Bluetooth only if
-you set {@link android.app.admin.DevicePolicyManager#setBluetoothContactSharingDisabled(android.content.ComponentName, boolean)
-setBluetoothContactSharingDisabled()} to {@code false}. By default, it is set to {@code true}.
-  </li>
-  <li><strong>Wi-Fi configuration removal:</strong> Wi-Fi configurations added by a Profile Owner
-(for example, through calls to the
-{@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration)
-addNetwork()} method) are now removed if that work profile is deleted.
-  </li>
-  <li><strong>Wi-Fi configuration lockdown:</strong> Any Wi-Fi configuration created by
-  an active Device Owner can no longer be modified or deleted by the user if
-  {@link android.provider.Settings.Global#WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN} is non-zero.
-  The user can still create and modify their own Wi-Fi configurations. Active Device
-  Owners have the privilege of editing or removing any Wi-Fi configurations, including
-  those not created by them.
-  </li>
-<li><strong>Download Work Policy Controller via Google account addition:</strong> When a Google
-account that requires management via a Work Policy Controller (WPC) app is added to a device
-outside of a managed context, the add account flow now prompts the user to install the
-appropriate WPC. This behavior also applies to accounts added via
-<strong>Settings > Accounts</strong> and in the initial device setup wizard.</li>
-<li><strong>Changes to specific {@link android.app.admin.DevicePolicyManager} API behaviors:</strong>
-  <ul>
-  <li>Calling the
-{@link android.app.admin.DevicePolicyManager#setCameraDisabled(android.content.ComponentName,boolean) setCameraDisabled()}
-method affects the camera for the calling user only; calling it from the managed profile doesn’t
-affect camera apps running on the primary user.</li>
-  <li>In addition, the
-{@link android.app.admin.DevicePolicyManager#setKeyguardDisabledFeatures(android.content.ComponentName,int) setKeyguardDisabledFeatures()}
-    method is now available for Profile Owners, as well as to Device Owners. </li>
-  <li>A Profile Owner can set these keyguard restrictions:
-    <ul>
-    <li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_TRUST_AGENTS} and
-    {@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_FINGERPRINT}, which affect the
-    keyguard settings for the profile’s parent user.</li>
-    <li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS}, which
-    only affects notifications generated by applications in the managed profile.</li>
-    </ul>
-  </li>
-  <li>The {@link android.app.admin.DevicePolicyManager#createAndManageUser(android.content.ComponentName, java.lang.String, android.content.ComponentName, android.os.PersistableBundle, int) createAndManageUser()} method replaces createAndInitializeUser(), which has been removed.</li>
-  <li>The {@link android.app.admin.DevicePolicyManager#setScreenCaptureDisabled(android.content.ComponentName, boolean) setScreenCaptureDisabled()}
-method now also blocks the assist structure when an app of the given user is in the foreground. </li>
-  <li>{@link android.app.admin.DevicePolicyManager#EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM}
-now defaults to SHA-256. SHA-1 is still supported for backwards compatibility but will be removed
-in future.
-{@link android.app.admin.DevicePolicyManager#EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM}
-now only accepts SHA-256.</li>
-  <li>Device initializer APIs which existed in the M Developer Preview are now removed.</li>
-    <li><code>EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS</code> is removed so NFC bump
-provisioning cannot programmatically unlock a factory reset protected device.</li>
-<li>You can now use the {@link android.app.admin.DevicePolicyManager#EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE}
-extra to pass data to the device owner app during NFC provisioning of the managed device.</li>
-    <li>Android for Work APIs are optimized for M runtime permissions, including Work profiles,
-assist layer, and others. New {@link android.app.admin.DevicePolicyManager} permission APIs don't
-affect pre-M apps.</li>
-<li>When users back out of the synchronous part of the setup flow initiated through an
-{@link android.app.admin.DevicePolicyManager#ACTION_PROVISION_MANAGED_PROFILE} or
-{@link android.app.admin.DevicePolicyManager#ACTION_PROVISION_MANAGED_DEVICE} intent, the system
-now returns a {@link android.app.Activity#RESULT_CANCELED} result code.</li>
-    </ul></li>
-
-<li><strong>Changes to other APIs</strong>:
-<ul>
-    <li>Data Usage: The {@code android.app.usage.NetworkUsageStats} class has been renamed
-{@link android.app.usage.NetworkStats}.</li>
-</ul>
-    </li>
-
-    <li><strong>Changes to global settings</strong>:
-    <ul>
-    <li>These settings can no longer be set via {@link android.app.admin.DevicePolicyManager#setGlobalSetting(android.content.ComponentName, java.lang.String, java.lang.String) setGlobalSettings()}</code>:
-<ul>
-    <li><code>BLUETOOTH_ON</code></li>
-    <li><code>DEVELOPMENT_SETTINGS_ENABLED</code></li>
-    <li><code>MODE_RINGER</code></li>
-    <li><code>NETWORK_PREFERENCE</code></li>
-    <li><code>WIFI_ON</code></li>
-</ul>
-    </li>
-    <li>These global settings can now be set via {@link android.app.admin.DevicePolicyManager#setGlobalSetting(android.content.ComponentName, java.lang.String, java.lang.String) setGlobalSettings()}:
-    <ul>
-    <li>{@link android.provider.Settings.Global#WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN}</li>
-    </ul>
-    </li>
-    </ul>
-</ul>
diff --git a/docs/html/preview/download-ota.jd b/docs/html/preview/download-ota.jd
new file mode 100644
index 0000000..d52a9771
--- /dev/null
+++ b/docs/html/preview/download-ota.jd
@@ -0,0 +1,323 @@
+page.title=Applying a Device OTA Image
+
+@jd:body
+
+<div style="position:relative; min-height:600px">
+
+  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
+
+    <p class="sdk-terms-intro">Before downloading and installing components of
+      the Android Preview SDK, you must agree to the following terms and
+      conditions.</p>
+
+    <h2 class="norule">Terms and Conditions</h2>
+
+    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
+This is the Android SDK Preview License Agreement (the “License Agreement”).
+
+1. Introduction
+
+1.1 The Android SDK Preview (referred to in the License Agreement as the “Preview” and specifically including the Android system files, packaged APIs, and Preview library files, if and when they are made available) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the Preview.
+
+1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
+
+1.3 “Android-compatible” means any Android implemation that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+
+2. Accepting the License Agreement
+
+2.1 In order to use the Preview, you must first agree to the License Agreement. You may not use the Preview if you do not accept the License Agreement.
+
+2.2 By clicking to accept and/or using the Preview, you hereby agree to the terms of the License Agreement.
+
+2.3 You may not use the Preview and may not accept the License Agreement if you are a person barred from receiving the Preview under the laws of the United States or other countries including the country in which you are resident or from which you use the Preview.
+
+2.4 If you will use the Preview internally within your company or organization you agree to be bound by the License Agreement on behalf of your employer or other entity, and you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the Preview on behalf of your employer or other entity.
+
+3. Preview License from Google
+
+3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the Preview solely to develop applications for compatible implementations of Android.
+
+3.2 You may not use this Preview to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this Preview is not used for that purpose.
+
+3.3 You agree that Google or third parties owns all legal right, title and interest in and to the Preview, including any Intellectual Property Rights that subsist in the Preview. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+
+3.4 You may not use the Preview for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the Preview or any part of the Preview; or (b) load any part of the Preview onto a mobile handset or any other hardware device except a personal computer, combine any part of the Preview with other software, or distribute any software or device incorporating a part of the Preview.
+
+3.5 Use, reproduction and distribution of components of the Preview licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement. You agree to remain a licensee in good standing in regard to such open source software licenses under all the rights granted and to refrain from any actions that may terminate, suspend, or breach such rights.
+
+3.6 You agree that the form and nature of the Preview that Google provides may change without prior notice to you and that future versions of the Preview may be incompatible with applications developed on previous versions of the Preview. You agree that Google may stop (permanently or temporarily) providing the Preview (or any features within the Preview) to you or to users generally at Google's sole discretion, without prior notice to you.
+
+3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+
+3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the Preview.
+
+4. Use of the Preview by You
+
+4.1 Google agrees that nothing in the License Agreement gives Google any right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the Preview, including any intellectual property rights that subsist in those applications.
+
+4.2 You agree to use the Preview and write applications only for purposes that are permitted by (a) the License Agreement, and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
+
+4.3 You agree that if you use the Preview to develop applications, you will protect the privacy and legal rights of users. If users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If users provide you with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, each user has given you permission to do so.
+
+4.4 You agree that you will not engage in any activity with the Preview, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of Google or any third party.
+
+4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
+
+4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
+
+4.7 The Preview is in development, and your testing and feedback are an important part of the development process. By using the Preview, you acknowledge that implementation of some features are still under development and that you should not rely on the Preview having the full functionality of a stable release. You agree not to publicly distribute or ship any application using this Preview as this Preview will no longer be supported after the official Android SDK is released.
+
+5. Your Developer Credentials
+
+5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
+
+6. Privacy and Information
+
+6.1 In order to continually innovate and improve the Preview, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the Preview are being used and how they are being used. Before any of this information is collected, the Preview will notify you and seek your consent. If you withhold consent, the information will not be collected.
+
+6.2 The data collected is examined in the aggregate to improve the Preview and is maintained in accordance with Google's Privacy Policy located at http://www.google.com/policies/privacy/.
+
+7. Third Party Applications
+
+7.1 If you use the Preview to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
+
+7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
+
+7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party.
+
+8. Using Google APIs
+
+8.1 Google APIs
+
+8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
+
+8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
+
+9. Terminating the License Agreement
+
+9.1 the License Agreement will continue to apply until terminated by either you or Google as set out below.
+
+9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the Preview and any relevant developer credentials.
+
+9.3 Google may at any time, terminate the License Agreement, with or without cause, upon notice to you.
+
+9.4 The License Agreement will automatically terminate without notice or other action upon the earlier of:
+(A) when Google ceases to provide the Preview or certain parts of the Preview to users in the country in which you are resident or from which you use the service; and
+(B) Google issues a final release version of the Android SDK.
+
+9.5 When the License Agreement is terminated, the license granted to you in the License Agreement will terminate, you will immediately cease all use of the Preview, and the provisions of paragraphs 10, 11, 12 and 14 shall survive indefinitely.
+
+10. DISCLAIMERS
+
+10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE PREVIEW IS AT YOUR SOLE RISK AND THAT THE PREVIEW IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+
+10.2 YOUR USE OF THE PREVIEW AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE PREVIEW IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE. WITHOUT LIMITING THE FOREGOING, YOU UNDERSTAND THAT THE PREVIEW IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
+
+10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+
+11. LIMITATION OF LIABILITY
+
+11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
+12. Indemnification
+
+12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys’ fees) arising out of or accruing from (a) your use of the Preview, (b) any application you develop on the Preview that infringes any Intellectual Property Rights of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you of the License Agreement.
+
+13. Changes to the License Agreement
+
+13.1 Google may make changes to the License Agreement as it distributes new versions of the Preview. When these changes are made, Google will make a new version of the License Agreement available on the website where the Preview is made available.
+
+14. General Legal Terms
+
+14.1 the License Agreement constitutes the whole legal agreement between you and Google and governs your use of the Preview (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the Preview.
+
+14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
+
+14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
+
+14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
+
+14.5 EXPORT RESTRICTIONS. THE PREVIEW IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE PREVIEW. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
+
+14.6 The License Agreement may not be assigned or transferred by you without the prior written approval of Google, and any attempted assignment without such approval will be void. You shall not delegate your responsibilities or obligations under the License Agreement without the prior written approval of Google.
+
+14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+  </div><!-- sdk terms -->
+
+
+
+    <div id="sdk-terms-form">
+      <p>
+        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+        <label id="agreeLabel" for="agree">I have read and agree with the above terms and conditions</label>
+      </p>
+      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+    </div>
+
+
+  </div><!-- end TOS -->
+
+
+  <div id="landing">
+
+<p>
+  This page provides links to over-the-air (OTA) device images and describes
+  how to manually apply an OTA update to a device. This procedure may be useful
+  in recovering devices that received OTA updates through the Android Beta
+  Program and do not start up after the update is installed.
+</p>
+
+<h2 id="install-ota">Installing OTA Images</h2>
+
+<p></p>
+
+<p>To install an OTA package to a device:</p>
+
+<ol>
+  <li>Download an OTA device image from the table below.</li>
+  <li>Reboot the device into Recovery mode. For more information on putting
+    Nexus devices in this mode, see
+    <a href="https://support.google.com/nexus/answer/4596836">Reset your Nexus
+      device to factory settings</a>.
+  </li>
+  <li>On the device, select <strong>ADB sideload</strong>.</li>
+  <li>Connect the device to a computer with the Android development environment
+    loaded and the Android Debug Bridge (adb) tool installed.</li>
+  <li>Run the following command:
+    <pre>adb sideload <em>&lt;ota-package&gt;</em></pre>
+  </li>
+</ol>
+
+
+
+<h2 id="ota-images">Device OTA Images</h2>
+
+<table>
+  <tr>
+    <th scope="col">Device</th>
+    <th scope="col">Download / Checksums</th>
+  </tr>
+
+  <tr id="bullhead">
+    <td>Nexus 5X <br>"bullhead"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >bullhead-ota-2659757-4fab1a6f.zip</a><br>
+      MD5: 2a3263bb4935cdc7a326298f2cf13535<br>
+      SHA-1: 4fab1a6f1a68d94c02500d7acb15503192455f20
+    </td>
+  </tr>
+
+  <tr id="shamu">
+    <td>Nexus 6 <br>"shamu"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >shamu-ota-2659757-073c33ae.zip</a><br>
+      MD5: c201a9ccdfa5afdd2f1a9967e462098f<br>
+      SHA-1: 073c33aef3ecc5961e0ba92c5611b98f7750fa94
+    </td>
+  </tr>
+
+  <tr id="angler">
+    <td>Nexus 6P <br>"angler"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >angler-ota-2659757-938ecff3.zip</a><br>
+      MD5: 3363c343fafe03b118776738a37623a8<br>
+      SHA-1: 938ecff398f896c21c03615942727493aeae3556
+    </td>
+  </tr>
+
+  <tr id="volantis">
+    <td>Nexus 9 <br>"volantis"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantis-ota-NPC56X-2-3fa71d1a.zip</a><br>
+      MD5: 7221f249ab2a48faf7ca4dc275d8f79c<br>
+      SHA-1: 3fa71d1af634db140267133e220038a63e3d1749
+    </td>
+  </tr>
+
+  <tr id="volantisg">
+    <td>Nexus 9G <br>"volantisg"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantisg-ota-NPC56X-2-2edd174f.zip</a><br>
+      MD5: aff8190e0522c386d6b2e66908671377<br>
+      SHA-1: 2edd174f9a4d10ba3ed75643aa16a3f635451631
+    </td>
+  </tr>
+
+  <tr id="fugu">
+    <td>Nexus Player <br>"fugu"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >fugu-ota-2665432-f0f8fea4.zip</a><br>
+      MD5: 4403af764b57502d89111fd68ecb7da5<br>
+      SHA-1: f0f8fea49ea3874b751cf67462ecc5d8e039875e
+    </td>
+  </tr>
+
+  <tr id="ryu">
+    <td>Pixel C <br>"ryu"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >ryu-ota-2659757-1e496acd.zip</a><br>
+      MD5: 1ebd7fddb52cba59b7f686a972e023db<br>
+      SHA-1: 1e496acd67b8fdbee7b5c6ef721746f8e98e704f
+    </td>
+  </tr>
+
+</table>
+
+
+  </div><!-- landing -->
+
+</div><!-- relative wrapper -->
+
+
+
+<script>
+  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/ota/";
+  function onDownload(link) {
+
+    $("#downloadForRealz").html("Download " + $(link).text());
+    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
+
+    $("#tos").fadeIn('fast');
+    $("#landing").fadeOut('fast');
+
+    return true;
+  }
+
+
+  function onAgreeChecked() {
+    /* verify that the TOS is agreed */
+    if ($("input#agree").is(":checked")) {
+      /* reveal the download button */
+      $("a#downloadForRealz").removeClass('disabled');
+    } else {
+      $("a#downloadForRealz").addClass('disabled');
+    }
+  }
+
+  function onDownloadForRealz(link) {
+    if ($("input#agree").is(':checked')) {
+    /*
+      $("#tos").fadeOut('fast');
+      $("#landing").fadeIn('fast');
+    */
+
+      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
+
+    /*
+      location.hash = "";
+    */
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  $(window).hashchange( function(){
+    if (location.hash == "") {
+      location.reload();
+    }
+  });
+
+</script>
diff --git a/docs/html/preview/download.jd b/docs/html/preview/download.jd
index d00f90cbf..59b1cf7 100644
--- a/docs/html/preview/download.jd
+++ b/docs/html/preview/download.jd
@@ -1,5 +1,7 @@
-page.title=Downloads
-page.image=images/cards/card-download_16-9_2x.png
+page.title=Test on a Device
+meta.tags="preview", "nexus","system image"
+page.tags="preview", "androidn"
+page.image=images/cards/card-n-downloads_2x.png
 
 @jd:body
 
@@ -7,8 +9,9 @@
 
   <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
 
-    <p class="sdk-terms-intro">Before downloading and installing components of the Android Preview
-      SDK, you must agree to the following terms and conditions.</p>
+    <p class="sdk-terms-intro">Before downloading and installing components of
+      the Android Preview SDK, you must agree to the following terms and
+      conditions.</p>
 
     <h2 class="norule">Terms and Conditions</h2>
 
@@ -21,7 +24,9 @@
 
 1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
 
-1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+1.3 “Android-compatible” means any Android implemation that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
 
 2. Accepting the License Agreement
 
@@ -35,13 +40,13 @@
 
 3. Preview License from Google
 
-3.1 Subject to the terms of the License Agreement, Google grants you a royalty-free, non-assignable, non-exclusive, non-sublicensable, limited, revocable license to use the Preview, personally or internally within your company or organization, solely to develop applications to run on the Android platform.
+3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the Preview solely to develop applications for compatible implementations of Android.
 
-3.2 You agree that Google or third parties owns all legal right, title and interest in and to the Preview, including any Intellectual Property Rights that subsist in the Preview. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+3.2 You may not use this Preview to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this Preview is not used for that purpose.
 
-3.3 You may not use the Preview for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the Preview or any part of the Preview; or (b) load any part of the Preview onto a mobile handset or any other hardware device except a personal computer, combine any part of the Preview with other software, or distribute any software or device incorporating a part of the Preview.
+3.3 You agree that Google or third parties owns all legal right, title and interest in and to the Preview, including any Intellectual Property Rights that subsist in the Preview. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
 
-3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the Preview.
+3.4 You may not use the Preview for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the Preview or any part of the Preview; or (b) load any part of the Preview onto a mobile handset or any other hardware device except a personal computer, combine any part of the Preview with other software, or distribute any software or device incorporating a part of the Preview.
 
 3.5 Use, reproduction and distribution of components of the Preview licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement. You agree to remain a licensee in good standing in regard to such open source software licenses under all the rights granted and to refrain from any actions that may terminate, suspend, or breach such rights.
 
@@ -164,79 +169,128 @@
   <div id="qv">
     <h2>In this document</h2>
       <ol>
-        <li><a href="#sdk">Android 6.0 SDK</a></li>
-        <li><a href="#docs">Developer Documentation</a></li>
-        <li><a href="#images">Hardware System Images</a></li>
+        <li><a href="#device-preview">Set up a hardware device</a>
+          <ol>
+            <li><a href="#ota">Get over-the-air updates</a></li>
+            <li><a href="#flash">Manually flash a device</a></li>
+            <li><a href="#revertDevice">Uninstalling</a></li>
+          </ol>
+        </li>
+        <li><a href="#setupAVD">Set up an emulator</a></li>
       </ol>
-
-     <h2>Legacy downloads</h2>
-        <ol>
-           <li><a href="{@docRoot}preview/download_mp1.html">Developer Preview Archive</a></li>
-        </ol>
   </div>
 </div>
 
+<p>
+  To run and test your app on the new platform you need to set up an Android N
+  runtime environment. You can do that in either of these ways:
+</p>
+
+<ul>
+  <li>Install Android N on a supported hardware device, or</li>
+  <li>Set up an Android emulator running Android N</li>
+</ul>
 
 <p>
-  The Android M Preview SDK includes development tools, Android system images, and library files to
-  help you test your app and the new APIs coming in the next release of the platform. This document
-  describes how to get the downloadable components of the preview for testing your app.
+  If you want an environment for basic compatibility testing of your app on the
+  new platform, all you need is your current APK and a hardware device or
+  emulator. You don't necessarily need to update your full development
+  environment to do basic testing.
+</p>
+
+<p>
+  If you want to modify your app to target Android N or use new Android N APIs,
+  you need to set up a development environment that's updated to support
+  Android N. <a href="{@docRoot}preview/setup-sdk.html">Set Up to Develop for
+  Android N</a> has details.
 </p>
 
 
-<h2 id="sdk">Android 6.0 SDK</h2>
+<h2 id="device-preview">Set up a hardware device</h2>
 
 <p>
-  With Developer Preview 3, the official Android 6.0 SDK is now available for download through the <a href=
-  "{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>. For more information on
-  downloading and configuring the SDK, see <a href=
-  "{@docRoot}preview/setup-sdk.html#downloadSdk">Set Up the SDK</a>.
+  The N Developer Preview offers system updates for a range of hardware devices
+  that you can use for testing your app, from phones to tablets and TV.
 </p>
 
-
-<h2 id="docs">Developer Documentation</h2>
-
 <p>
-  The developer documentation for Developer Preview 3 is released as Android 6.0 (API level 23) and
-  is available online, including the <a href="{@docRoot}reference/packages.html">API level 23
-  reference</a> and <a href="{@docRoot}sdk/api_diff/23/changes.html">diff report</a>. The following
-  developer documentation download package provides additional, incremental difference reports
-  between the preview releases.
+  If you have access to a supported device, you can update it to a Developer
+  Preview milestone build in one of these ways:
 </p>
 
-<table>
-  <tr>
-    <th scope="col">Description</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="docs-dl">
-    <td>Android M Preview 3<br>Developer Docs</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >m-preview-3-developer-docs.zip</a><br>
-      MD5: d99b14b0c06d31c8dfecb25072654ca3<br>
-      SHA-1: 9cefeeda07676130da606a1796e1c00fffc667c1
-    </td>
-  </tr>
-<table>
+<ul>
+  <li><strong>Enroll the device in automatic OTA system updates</strong> through the
+  <a href="https://g.co/androidbeta">Android Beta Program</a>. Once enrolled, your device will receive regular
+  over-the-air (OTA) updates of all milestone builds in the N Developer Preview. This
+  approach is recommended because it lets you seamlessly transition from your current
+  environment through the various releases of the N Developer Preview.</li>
+  <li><strong>Download a Developer Preview system image and flash the device</strong>.
+  OTA updates are not provided automatically for devices that you flash manually, but
+  you can enroll those devices in Android Beta Program to get OTA updates. </li>
+</ul>
 
-
-<h2 id="images">Hardware System Images</h2>
+<h3 id="ota">Enroll the device in automatic OTA updates</h3>
 
 <p>
-  These system images allow you to install a preview version of the platform on a physical device for
-  testing. By configuring a device with one of these images, you can install and test your app to
-  see how it performs on the next version of the platform. The process of installing a system image
-  on a device <em>removes all data from the device</em>, so you should backup your data before
-  installing a system image.
+  If you have access to a supported device (see the list in the Downloads
+  table), you can receive over-the-air updates to preview versions of Android
+  by enrolling that device in the <a href="https://g.co/androidbeta">Android Beta Program</a>. These updates are
+  automatically downloaded and will update your device just like official
+  system updates.
 </p>
 
-<p class="warning">
-  <b>Warning:</b> The following Android system images are previews and are subject to change. Your
-  use of these system images is governed by the Android SDK Preview License Agreement. The Android
-  preview system images are not stable releases, and may contain errors and defects that can result
-  in damage to your computer systems, devices, and data. The preview Android system images are not
-  subject to the same testing as the factory OS and can cause your phone and installed services and
-  applications to stop working.
+<p>
+  You can un-enroll a device at any time. The device will receive an OTA update
+  to the most recent production version of Android available for that device
+  (for example, Android 6.0 Marshmallow). The update requires a full device
+  reset, so user data on the device will be removed. Make sure to <strong>back
+  up important data</strong> before un-enrolling a device.
+</p>
+
+<p>
+  For more information and to enroll your device, see
+  the <a href="https://g.co/androidbeta">Android Beta Program</a> web site.
+</p>
+
+<p class="note"><strong>Note:</strong>
+  Un-enrolling requires a full device reset. Back up
+  important data first.
+</p>
+
+<h3 id="flash">Flashing a device manually</h3>
+
+<p>
+  At any time you can download the latest Developer Preview system image and
+  manually flash it to your device. See the table below to download the system
+  image for your test device. Manually flashing a device is useful if you need
+  precise control over the test environment or need to reinstall frequently,
+  such as for automated testing.
+</p>
+
+<!-- You can flash by ota or system image --><p>
+  Installing a system image on a device <strong>removes all data from the
+  device</strong>, so you should back up your data first.
+</p>
+
+<p>
+  After you back up your device data and download the system image below that
+  matches your device, follow the instructions at <a href=
+  "https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
+  to flash the image onto your device.
+</p>
+
+<p>
+  Manually flashed system images <strong>do not
+  automatically receive OTA updates</strong> to later Developer Preview
+  milestone builds. Make sure to keep your environment up-to-date and flash a
+  new system image at each Developer Preview milestone.
+</p>
+
+<p>
+  If you decide you want to get OTA updates after manually flashing a device,
+  all you need to do is enroll the device in the <a href="https://g.co/androidbeta">Android
+  Beta Program</a>. You can enroll the device at any time to receive the next Preview
+  update over the air.
 </p>
 
 <table>
@@ -244,76 +298,203 @@
     <th scope="col">Device</th>
     <th scope="col">Download / Checksums</th>
   </tr>
-  <tr id="hammerhead">
-    <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
+
+  <tr id="bullhead">
+    <td>Nexus 5X <br>"bullhead"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >hammerhead-MPA44I-preview-2ebbc049.tgz</a><br>
-      MD5: 91a924fb0c9f8e716e3b4c9954fd0dbb<br>
-      SHA-1: 2ebbc049b68c4da8baeee3e42bb94d7a965ba4a3
+      >bullhead-npc56w-preview-d86c7559.tgz</a><br>
+      MD5: d84b6c31a7754e505149594887b3481a<br>
+      SHA-1: d86c7559c93724cca6af91040b012c48529f2c94
     </td>
   </tr>
+
   <tr id="shamu">
     <td>Nexus 6 <br>"shamu"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >shamu-MPA44I-preview-62b9c486.tgz</a><br>
-      MD5: ac6e58da86125073d9c395257fd42664<br>
-      SHA-1: 62b9c486fd7a5020e228d53ca5acd5c1857e48ff
+      >shamu-npc56p-preview-54b13c67.tgz</a><br>
+      MD5: af183638cf34e0eb944a1957d7696f60<br>
+      SHA-1: 54b13c6703d369cc79a8fd8728fe4103c6343973
     </td>
   </tr>
+
+  <tr id="angler">
+    <td>Nexus 6P <br>"angler"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >angler-npc56w-preview-2834ca3c.tgz</a><br>
+      MD5: fd5c74f256cf82262779513854869570<br>
+      SHA-1: 2834ca3c425d7a61f5dfabb9d8dd108aec1ab58b
+    </td>
+  </tr>
+
   <tr id="volantis">
     <td>Nexus 9 <br>"volantis"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >volantis-MPA44I-preview-5c30a6e2.tgz</a><br>
-      MD5: 7f83768757913d3fea945a661020d185<br>
-      SHA-1: 5c30a6e2acd11a81f4105b12d23ff654f534f699
+      >volantis-npc56x-preview-5c323abd.tgz</a><br>
+      MD5: 474a13915e22d683cab5cf59ed868157<br>
+      SHA-1: 5c323abdec121b2f07fdabaa3d70d12106e450ad
+    </td>
+  </tr>
+
+  <tr id="volantisg">
+    <td>Nexus 9G <br>"volantisg"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >volantisg-npc56x-preview-41ae398c.tgz</a><br>
+      MD5: 5a145a546a4a9f68c2b8e2624cf9832b<br>
+      SHA-1: 41ae398c30536a2d96b04d61b9ef97a043bf59cf
     </td>
   </tr>
 
   <tr id="fugu">
     <td>Nexus Player <br>"fugu"</td>
     <td><a href="#top" onclick="onDownload(this)"
-      >fugu-MPA44I-preview-2860040a.tgz</a><br>
-      MD5: 438da8d37da9e341a69cfb16a4001ac5<br>
-      SHA-1: 2860040a326582f1ff5f702bf9a1ef002717fc98
+      >fugu-npc56r-preview-7027d5b6.tgz</a><br>
+      MD5: f5d3d8f75836ccfe4c70e8162e498be4<br>
+      SHA-1: 7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
+    </td>
+  </tr>
+
+  <tr id="ryu">
+    <td>Pixel C <br>"ryu"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >ryu-npc56p-preview-335a86a4.tgz</a><br>
+      MD5: 4e21fb183bbbf467bee91598d587fd2e<br>
+      SHA-1: 335a86a435ee51f18464de343ad2e071c38f0e92
+    </td>
+  </tr>
+  <tr id="seed">
+    <td>General Mobile 4G (Android One) <br>"seed"</td>
+    <td><a href="#top" onclick="onDownload(this)"
+      >seed_l8150-npc56p-preview-82472ebc.tgz</a><br>
+      MD5: 983e083bc7cd0c4a2d39d6ebaa20202a<br>
+      SHA-1: 82472ebc9a6054a103f53cb400a1351913c95127
     </td>
   </tr>
 
 </table>
 
-<h3 id="install-image">Install an Image to a Device</h3>
+<h3 id="revertDevice">Uninstalling the Preview from a device</h3>
 
 <p>
-  In order to use a device image for testing, you must install it on a compatible device. Follow
-  the instructions below to install a system image:
+  If you want to uninstall the preview from a device, you can do so in one of
+  these ways: </p>
+  <ul>
+    <li><strong>Obtain a factory spec system image</strong> and then manually
+    flash it to the device.
+      <ul>
+          <li>For <strong>Nexus devices and Pixel C devices</strong>, see
+        the <a href="http://developers.google.com/android/nexus/images">Factory Images
+        for Nexus Devices</a> page for downloads. </li>
+        <li>For <strong>other devices</strong>, please contact the device manufacturer
+        directly. Alternatively, if the device is supported
+        in the Android Beta Program, you can enroll the device in the
+        program and then un-enroll it (see below).</li>
+      </ul>
+    </li>
+    <li><strong>Un-enroll the device from Android Beta Program</strong>. If the
+    device is enrolled in the <a href="https://g.co/androidbeta">Android Beta
+    Program</a>, regardless of device, you can simply un-enroll it from the program.
+  <p>
+    The device will receive an OTA update to the most recent production version
+    of Android available for that device (for example, Android 6.0 Marshmallow).
+    The update requires a full device reset, so user data on the device will be
+    removed. Make sure to <strong>back up important data</strong> before
+    un-enrolling a device.
+  </p>
+  </li>
+</ul>
+
+<p class="note"><strong>Note:</strong>
+  Uninstalling a Developer Preview system image prior to
+  the end of the program requires a full device reset and removes all user data
+  on the device.
 </p>
 
+
+<h2 id="setupAVD">Set up an emulator</h2>
+
+<p>To use the Android Emulator to run the Android N Preview, you need to
+download the Android N Preview SDK and create a virtual device for the
+emulator.</p>
+
+<p>First, download the Android N Preview SDK as follows (if you
+already got it while <a href="{@docRoot}preview/setup-sdk.html">setting up
+to develop for Android N</a>, you can skip this part):
+
 <ol>
-  <li>Download and uncompress one of the system image packages listed here.</li>
-  <li>Backup any data you want to preserve from the device.</li>
-  <li>Follow the instructions at
-  <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
-  to flash the image onto your device.</li>
+  <li>In Android Studio, open the Settings dialog
+    (<strong>File &gt; Settings</strong> on Windows/Linux, or
+    <strong>Android Studio &gt; Preferences</strong> on Mac). In the left
+    panel, select <strong>Appearance &amp; Behavior &gt;
+  System Settings &gt; Android SDK</strong>.
+
+  <li>Click the <strong>SDK Platforms</strong> tab, then select the
+  <strong>Android N Preview</strong> check box.</li>
+
+  <li>Click the <strong>SDK Tools</strong> tab, then select the
+    <strong>Android SDK Build Tools</strong>, <strong>Android SDK
+    Platform-Tools</strong>, and <strong>Android SDK Tools</strong> check
+    boxes.
+  </li>
+
+  <li>Click <strong>OK</strong> and accept the license
+    agreements for any packages to be installed.
+  </li>
 </ol>
 
-<h3 id="update-image">Updating a Device with the Preview</h3>
+<p>You should now have <strong>Android SDK Built-Tools 24.0 0 rc1</strong>,
+<strong>Platform-Tools 24.0.0 rc1</strong>, and <strong>SDK Tools
+25.0.9</strong>. If you do not update the SDK Tools to 25.0.9, then you won't
+be able to run the x86_64 system images for Android N.</p>
+
+
+<p>Now create a virtual device with the Android N system image:</p>
+
+<ol>
+  <li>Open the AVD Manager by selecting <strong>Tools > Android >
+    AVD Manager</strong>.</li>
+  <li>Click <strong>Create Virtual Device</strong>.</li>
+  <li>Select a device such as Nexus 5X, Nexus 6P, Nexus 9, or Android TV,
+    then click <strong>Next</strong>.</li>
+  <li>Select the <strong>N</strong> system image (with the
+    <strong>x86</strong> ABI), then click <strong>Next</strong>.
+    (Only x86 system images are currently supported with the Android Emulator
+for the Android N Preview.)
+  <li>Complete the rest of the AVD configuration and click
+    <strong>Finish</strong>.</li>
+</ol>
+
+<p>You can now launch the Android Emulator with the Android N Preview AVD.</p>
 
 <p>
-  Once you have installed a preview system image on a development device, the device is upgraded
-  automatically with the next preview release through over-the-air (OTA) updates. When the update
-  is available, the device displays notification that an update is available and allows you to
-  install it. You can also manually install the next preview image by repeating the procedure in
-  the previous section.
+For the best experience in the Android Emulator, install
+Android Studio 2.1 Preview, which supports the <a
+href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0 Beta</a>
+with much faster performance compared to the Emulator in
+Android Studio 1.5.</p>
+
+<p class="note"><strong>Note:</strong>
+  If you're currently using Android Studio 2.0 Beta, there's a known issue
+  that prevents you from creating AVDs with the N Preview system images, so
+  you currently need to use the Android Studio 2.1 preview to create AVDs.
 </p>
 
-<h3 id="revertDevice">Revert a Device to Factory Specifications</h3>
-
-<p>
-  If you want to uninstall the preview and revert the device to factory specifications, go to
-  <a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a> and
-  download the image you want to flash to for your device. Follow the instructions on that page to
-  flash the image to your device.
+<p>For more information about creating virtual devices, see <a href=
+  "{@docRoot}tools/devices/index.html">Managing Virtual Devices</a>.
 </p>
 
+
+
+
+
+
+
+
+
+
+
+
+
+
   </div><!-- landing -->
 
 </div><!-- relative wrapper -->
diff --git a/docs/html/preview/download_mp1.jd b/docs/html/preview/download_mp1.jd
deleted file mode 100644
index 5838f20..0000000
--- a/docs/html/preview/download_mp1.jd
+++ /dev/null
@@ -1,355 +0,0 @@
-page.title=Developer Preview 1 Archive
-page.image=images/cards/card-download_16-9_2x.png
-
-@jd:body
-
-<div style="position:relative; min-height:600px">
-
-  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
-    <p class="sdk-terms-intro">Before downloading and installing components of the Android Preview
-      SDK, you must agree to the following terms and conditions.</p>
-
-    <h2 class="norule">Terms and Conditions</h2>
-
-    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-This is the Android SDK Preview License Agreement (the “License Agreement”).
-
-1. Introduction
-
-1.1 The Android SDK Preview (referred to in the License Agreement as the “Preview” and specifically including the Android system files, packaged APIs, and Preview library files, if and when they are made available) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the Preview.
-
-1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-
-1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-2. Accepting the License Agreement
-
-2.1 In order to use the Preview, you must first agree to the License Agreement. You may not use the Preview if you do not accept the License Agreement.
-
-2.2 By clicking to accept and/or using the Preview, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the Preview and may not accept the License Agreement if you are a person barred from receiving the Preview under the laws of the United States or other countries including the country in which you are resident or from which you use the Preview.
-
-2.4 If you will use the Preview internally within your company or organization you agree to be bound by the License Agreement on behalf of your employer or other entity, and you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the Preview on behalf of your employer or other entity.
-
-3. Preview License from Google
-
-3.1 Subject to the terms of the License Agreement, Google grants you a royalty-free, non-assignable, non-exclusive, non-sublicensable, limited, revocable license to use the Preview, personally or internally within your company or organization, solely to develop applications to run on the Android platform.
-
-3.2 You agree that Google or third parties owns all legal right, title and interest in and to the Preview, including any Intellectual Property Rights that subsist in the Preview. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.3 You may not use the Preview for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the Preview or any part of the Preview; or (b) load any part of the Preview onto a mobile handset or any other hardware device except a personal computer, combine any part of the Preview with other software, or distribute any software or device incorporating a part of the Preview.
-
-3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the Preview.
-
-3.5 Use, reproduction and distribution of components of the Preview licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement. You agree to remain a licensee in good standing in regard to such open source software licenses under all the rights granted and to refrain from any actions that may terminate, suspend, or breach such rights.
-
-3.6 You agree that the form and nature of the Preview that Google provides may change without prior notice to you and that future versions of the Preview may be incompatible with applications developed on previous versions of the Preview. You agree that Google may stop (permanently or temporarily) providing the Preview (or any features within the Preview) to you or to users generally at Google's sole discretion, without prior notice to you.
-
-3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the Preview.
-
-4. Use of the Preview by You
-
-4.1 Google agrees that nothing in the License Agreement gives Google any right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the Preview, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the Preview and write applications only for purposes that are permitted by (a) the License Agreement, and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the Preview to develop applications, you will protect the privacy and legal rights of users. If users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If users provide you with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, each user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the Preview, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of Google or any third party.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-
-4.7 The Preview is in development, and your testing and feedback are an important part of the development process. By using the Preview, you acknowledge that implementation of some features are still under development and that you should not rely on the Preview having the full functionality of a stable release. You agree not to publicly distribute or ship any application using this Preview as this Preview will no longer be supported after the official Android SDK is released.
-
-5. Your Developer Credentials
-
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-
-6. Privacy and Information
-
-6.1 In order to continually innovate and improve the Preview, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the Preview are being used and how they are being used. Before any of this information is collected, the Preview will notify you and seek your consent. If you withhold consent, the information will not be collected.
-
-6.2 The data collected is examined in the aggregate to improve the Preview and is maintained in accordance with Google's Privacy Policy located at http://www.google.com/policies/privacy/.
-
-7. Third Party Applications
-
-7.1 If you use the Preview to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party.
-
-8. Using Google APIs
-
-8.1 Google APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
-
-9. Terminating the License Agreement
-
-9.1 the License Agreement will continue to apply until terminated by either you or Google as set out below.
-
-9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the Preview and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement, with or without cause, upon notice to you.
-
-9.4 The License Agreement will automatically terminate without notice or other action upon the earlier of:
-(A) when Google ceases to provide the Preview or certain parts of the Preview to users in the country in which you are resident or from which you use the service; and
-(B) Google issues a final release version of the Android SDK.
-
-9.5 When the License Agreement is terminated, the license granted to you in the License Agreement will terminate, you will immediately cease all use of the Preview, and the provisions of paragraphs 10, 11, 12 and 14 shall survive indefinitely.
-
-10. DISCLAIMERS
-
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE PREVIEW IS AT YOUR SOLE RISK AND THAT THE PREVIEW IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE PREVIEW AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE PREVIEW IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE. WITHOUT LIMITING THE FOREGOING, YOU UNDERSTAND THAT THE PREVIEW IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-11. LIMITATION OF LIABILITY
-
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-12. Indemnification
-
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys’ fees) arising out of or accruing from (a) your use of the Preview, (b) any application you develop on the Preview that infringes any Intellectual Property Rights of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you of the License Agreement.
-
-13. Changes to the License Agreement
-
-13.1 Google may make changes to the License Agreement as it distributes new versions of the Preview. When these changes are made, Google will make a new version of the License Agreement available on the website where the Preview is made available.
-
-14. General Legal Terms
-
-14.1 the License Agreement constitutes the whole legal agreement between you and Google and governs your use of the Preview (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the Preview.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE PREVIEW IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE PREVIEW. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The License Agreement may not be assigned or transferred by you without the prior written approval of Google, and any attempted assignment without such approval will be void. You shall not delegate your responsibilities or obligations under the License Agreement without the prior written approval of Google.
-
-14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-  </div><!-- sdk terms -->
-
-
-
-    <div id="sdk-terms-form">
-      <p>
-        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-        <label id="agreeLabel" for="agree">I have read and agree with the above terms and conditions</label>
-      </p>
-      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-    </div>
-
-
-  </div><!-- end TOS -->
-
-
-  <div id="landing">
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>In this document</h2>
-      <ol>
-        <li><a href="#sdk">Developer Preview 1 SDK</a></li>
-        <li><a href="#docs">Developer Documentation</a></li>
-        <li><a href="#images">Hardware System Images</a></li>
-      </ol>
-  </div>
-</div>
-
-
-<p>
-  The Android M Preview SDK includes development tools, Android system files, and library files to
-  help you test your app and the new APIs coming in the next release of the platform. This document
-  describes how to get the downloadable components of the preview for testing your app.
-</p>
-
-
-<h2 id="sdk">Developer Preview 1 SDK</h2>
-
-<p>
-  The Preview SDK is available for download through the <a href=
-  "{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>. For more information on
-  downloading and configuring the Preview SDK, see <a href=
-  "{@docRoot}preview/setup-sdk.html#downloadSdk">Set Up the Preview SDK</a>.
-</p>
-
-
-<h2 id="docs">Developer Documentation</h2>
-
-<p>
-  The developer documentation download package provides detailed API reference information and an API difference report for the preview.
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Description</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="docs-dl">
-    <td>Android M Preview 1<br>Developer Docs</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >m-preview-1-developer-docs.zip</a><br>
-      MD5: b65201b0d35416f5a1b7a071b52854a7<br>
-      SHA-1: d47e856aa65e06897e6edd902ad8d2b1f05ac3ec
-    </td>
-  </tr>
-<table>
-
-
-<h2 id="images">Hardware System Images</h2>
-
-<p>
-  These system images allow you to install a preview version of the platform on a physical device for
-  testing. By configuring a device with one of these images, you can install and test your app to
-  see how it performs on the next version of the platform. The process of installing a system image
-  on a device <em>removes all data from the device</em>, so you should backup your data before
-  installing a system image.
-</p>
-
-<p class="warning">
-  <b>Warning:</b> The following Android system images are previews and are subject to change. Your
-  use of these system images is governed by the Android SDK Preview License Agreement. The Android
-  preview system images are not stable releases, and may contain errors and defects that can result
-  in damage to your computer systems, devices, and data. The preview Android system images are not
-  subject to the same testing as the factory OS and can cause your phone and installed services and
-  applications to stop working.
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Device</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="hammerhead">
-    <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >hammerhead-MPZ44Q-preview-55d76d3a.tgz</a><br>
-      MD5: 9e2631b06c6525e401ceaae3677ff320<br>
-      SHA-1: 55d76d3a379b18f3363f28d8a462c236ab96fc36
-    </td>
-  </tr>
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-MPZ44Q-preview-c1d6506a.tgz</a><br>
-      MD5: 307cbf9dab0a38df4ab2639d02be12aa<br>
-      SHA-1: c1d6506a74094bdb2f4b8677c7fe4967334f9ea8
-    </td>
-  </tr>
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-MPZ44Q-preview-d15ad483.tgz</a><br>
-      MD5: fae40377fd999d2b09128665c915264d<br>
-      SHA-1: 7ab05f96093b2cb370b226f65931202714cbc2ca
-    </td>
-  </tr>
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-MPZ44Q-preview-2406ba05.tgz</a><br>
-      MD5: 815902141a85cc65e7725f005cad31d5<br>
-      SHA-1: 2406ba0598dea1e69110497ac0bc8e16789bc8fb
-    </td>
-  </tr>
-</table>
-
-<h3 id="install-image">Install an Image to a Device</h3>
-
-<p>
-  In order to use a device image for testing, you must install it on a compatible device. Follow
-  the instructions below to install a system image:
-</p>
-
-<ol>
-  <li>Download and uncompress one of the system image packages listed here.</li>
-  <li>Backup any data you want to preserve from the device.</li>
-  <li>Follow the instructions at
-  <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
-  to flash the image onto your device.</li>
-</ol>
-
-<p class="note">
-  <strong>Note:</strong> Once you have flashed a development device the preview system image,
-  it is upgraded automatically with the next preview release through over-the-air (OTA) updates.
-</p>
-
-<h3 id="revertDevice">Revert a Device to Factory Specifications</h3>
-
-<p>
-  If you want to uninstall the preview and revert the device to factory specifications, go to
-  <a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a> and
-  download the image you want to flash to for your device. Follow the instructions on that page to
-  flash the image to your device.
-</p>
-
-  </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
-  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
-  function onDownload(link) {
-
-    $("#downloadForRealz").html("Download " + $(link).text());
-    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
-    $("#tos").fadeIn('fast');
-    $("#landing").fadeOut('fast');
-
-    return true;
-  }
-
-
-  function onAgreeChecked() {
-    /* verify that the TOS is agreed */
-    if ($("input#agree").is(":checked")) {
-      /* reveal the download button */
-      $("a#downloadForRealz").removeClass('disabled');
-    } else {
-      $("a#downloadForRealz").addClass('disabled');
-    }
-  }
-
-  function onDownloadForRealz(link) {
-    if ($("input#agree").is(':checked')) {
-    /*
-      $("#tos").fadeOut('fast');
-      $("#landing").fadeIn('fast');
-    */
-
-      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
-
-    /*
-      location.hash = "";
-    */
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  $(window).hashchange( function(){
-    if (location.hash == "") {
-      location.reload();
-    }
-  });
-
-</script>
diff --git a/docs/html/preview/download_mp2.jd b/docs/html/preview/download_mp2.jd
deleted file mode 100644
index 0208b5e..0000000
--- a/docs/html/preview/download_mp2.jd
+++ /dev/null
@@ -1,367 +0,0 @@
-page.title=Developer Preview 2 Archive
-page.image=images/cards/card-download_16-9_2x.png
-
-@jd:body
-
-<div style="position:relative; min-height:600px">
-
-  <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
-    <p class="sdk-terms-intro">Before downloading and installing components of the Android Preview
-      SDK, you must agree to the following terms and conditions.</p>
-
-    <h2 class="norule">Terms and Conditions</h2>
-
-    <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-This is the Android SDK Preview License Agreement (the “License Agreement”).
-
-1. Introduction
-
-1.1 The Android SDK Preview (referred to in the License Agreement as the “Preview” and specifically including the Android system files, packaged APIs, and Preview library files, if and when they are made available) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the Preview.
-
-1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-
-1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-2. Accepting the License Agreement
-
-2.1 In order to use the Preview, you must first agree to the License Agreement. You may not use the Preview if you do not accept the License Agreement.
-
-2.2 By clicking to accept and/or using the Preview, you hereby agree to the terms of the License Agreement.
-
-2.3 You may not use the Preview and may not accept the License Agreement if you are a person barred from receiving the Preview under the laws of the United States or other countries including the country in which you are resident or from which you use the Preview.
-
-2.4 If you will use the Preview internally within your company or organization you agree to be bound by the License Agreement on behalf of your employer or other entity, and you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the Preview on behalf of your employer or other entity.
-
-3. Preview License from Google
-
-3.1 Subject to the terms of the License Agreement, Google grants you a royalty-free, non-assignable, non-exclusive, non-sublicensable, limited, revocable license to use the Preview, personally or internally within your company or organization, solely to develop applications to run on the Android platform.
-
-3.2 You agree that Google or third parties owns all legal right, title and interest in and to the Preview, including any Intellectual Property Rights that subsist in the Preview. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.3 You may not use the Preview for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the Preview or any part of the Preview; or (b) load any part of the Preview onto a mobile handset or any other hardware device except a personal computer, combine any part of the Preview with other software, or distribute any software or device incorporating a part of the Preview.
-
-3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the Preview.
-
-3.5 Use, reproduction and distribution of components of the Preview licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement. You agree to remain a licensee in good standing in regard to such open source software licenses under all the rights granted and to refrain from any actions that may terminate, suspend, or breach such rights.
-
-3.6 You agree that the form and nature of the Preview that Google provides may change without prior notice to you and that future versions of the Preview may be incompatible with applications developed on previous versions of the Preview. You agree that Google may stop (permanently or temporarily) providing the Preview (or any features within the Preview) to you or to users generally at Google's sole discretion, without prior notice to you.
-
-3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the Preview.
-
-4. Use of the Preview by You
-
-4.1 Google agrees that nothing in the License Agreement gives Google any right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the Preview, including any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the Preview and write applications only for purposes that are permitted by (a) the License Agreement, and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the Preview to develop applications, you will protect the privacy and legal rights of users. If users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If users provide you with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, each user has given you permission to do so.
-
-4.4 You agree that you will not engage in any activity with the Preview, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of Google or any third party.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-
-4.7 The Preview is in development, and your testing and feedback are an important part of the development process. By using the Preview, you acknowledge that implementation of some features are still under development and that you should not rely on the Preview having the full functionality of a stable release. You agree not to publicly distribute or ship any application using this Preview as this Preview will no longer be supported after the official Android SDK is released.
-
-5. Your Developer Credentials
-
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-
-6. Privacy and Information
-
-6.1 In order to continually innovate and improve the Preview, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the Preview are being used and how they are being used. Before any of this information is collected, the Preview will notify you and seek your consent. If you withhold consent, the information will not be collected.
-
-6.2 The data collected is examined in the aggregate to improve the Preview and is maintained in accordance with Google's Privacy Policy located at http://www.google.com/policies/privacy/.
-
-7. Third Party Applications
-
-7.1 If you use the Preview to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party.
-
-8. Using Google APIs
-
-8.1 Google APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
-
-9. Terminating the License Agreement
-
-9.1 the License Agreement will continue to apply until terminated by either you or Google as set out below.
-
-9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the Preview and any relevant developer credentials.
-
-9.3 Google may at any time, terminate the License Agreement, with or without cause, upon notice to you.
-
-9.4 The License Agreement will automatically terminate without notice or other action upon the earlier of:
-(A) when Google ceases to provide the Preview or certain parts of the Preview to users in the country in which you are resident or from which you use the service; and
-(B) Google issues a final release version of the Android SDK.
-
-9.5 When the License Agreement is terminated, the license granted to you in the License Agreement will terminate, you will immediately cease all use of the Preview, and the provisions of paragraphs 10, 11, 12 and 14 shall survive indefinitely.
-
-10. DISCLAIMERS
-
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE PREVIEW IS AT YOUR SOLE RISK AND THAT THE PREVIEW IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE PREVIEW AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE PREVIEW IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE. WITHOUT LIMITING THE FOREGOING, YOU UNDERSTAND THAT THE PREVIEW IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-11. LIMITATION OF LIABILITY
-
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-12. Indemnification
-
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys’ fees) arising out of or accruing from (a) your use of the Preview, (b) any application you develop on the Preview that infringes any Intellectual Property Rights of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you of the License Agreement.
-
-13. Changes to the License Agreement
-
-13.1 Google may make changes to the License Agreement as it distributes new versions of the Preview. When these changes are made, Google will make a new version of the License Agreement available on the website where the Preview is made available.
-
-14. General Legal Terms
-
-14.1 the License Agreement constitutes the whole legal agreement between you and Google and governs your use of the Preview (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the Preview.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE PREVIEW IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE PREVIEW. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The License Agreement may not be assigned or transferred by you without the prior written approval of Google, and any attempted assignment without such approval will be void. You shall not delegate your responsibilities or obligations under the License Agreement without the prior written approval of Google.
-
-14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-  </div><!-- sdk terms -->
-
-
-
-    <div id="sdk-terms-form">
-      <p>
-        <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
-        <label id="agreeLabel" for="agree">I have read and agree with the above terms and conditions</label>
-      </p>
-      <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
-    </div>
-
-
-  </div><!-- end TOS -->
-
-
-  <div id="landing">
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>In this document</h2>
-      <ol>
-        <li><a href="#sdk">Developer Preview 2 SDK</a></li>
-        <li><a href="#docs">Developer Documentation</a></li>
-        <li><a href="#images">Hardware System Images</a></li>
-      </ol>
-
-     <h2>Legacy downloads</h2>
-        <ol>
-           <li><a href="{@docRoot}preview/download_mp1.html">Developer Preview Archive</a></li>
-        </ol>
-  </div>
-</div>
-
-
-<p>
-  The Android M Preview SDK includes development tools, Android system files, and library files to
-  help you test your app and the new APIs coming in the next release of the platform. This document
-  describes how to get the downloadable components of the preview for testing your app.
-</p>
-
-
-<h2 id="sdk">Developer Preview 2 SDK</h2>
-
-<p>
-  The Preview SDK is available for download through the <a href=
-  "{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>. For more information on
-  downloading and configuring the Preview SDK, see <a href=
-  "{@docRoot}preview/setup-sdk.html#downloadSdk">Set Up the Preview SDK</a>.
-</p>
-
-
-<h2 id="docs">Developer Documentation</h2>
-
-<p>
-  The developer documentation download package provides detailed API reference information and an API difference report for the preview.
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Description</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="docs-dl">
-    <td>Android M Preview 2<br>Developer Docs</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >m-preview-2-developer-docs.zip</a><br>
-      MD5: 1db6fff9c722b0339757e1cdf43663a8<br>
-      SHA-1: 5a4ae88d644e63824d21b0e18f8e3977a7665157
-    </td>
-  </tr>
-<table>
-
-
-<h2 id="images">Hardware System Images</h2>
-
-<p>
-  These system images allow you to install a preview version of the platform on a physical device for
-  testing. By configuring a device with one of these images, you can install and test your app to
-  see how it performs on the next version of the platform. The process of installing a system image
-  on a device <em>removes all data from the device</em>, so you should backup your data before
-  installing a system image.
-</p>
-
-<p class="warning">
-  <b>Warning:</b> The following Android system images are previews and are subject to change. Your
-  use of these system images is governed by the Android SDK Preview License Agreement. The Android
-  preview system images are not stable releases, and may contain errors and defects that can result
-  in damage to your computer systems, devices, and data. The preview Android system images are not
-  subject to the same testing as the factory OS and can cause your phone and installed services and
-  applications to stop working.
-</p>
-
-<table>
-  <tr>
-    <th scope="col">Device</th>
-    <th scope="col">Download / Checksums</th>
-  </tr>
-  <tr id="hammerhead">
-    <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >hammerhead-MPZ79M-preview-b1f4bde4.tgz</a><br>
-      MD5: 2ca9f18bf47a061b339bab52647ceb0d<br>
-      SHA-1: b1f4bde447eccbf8ce5d9b8b8ba954e3eac8e939
-    </td>
-  </tr>
-  <tr id="shamu">
-    <td>Nexus 6 <br>"shamu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >shamu-MPZ79M-preview-e1024040.tgz</a><br>
-      MD5: 24a2118da340b9afedfbdfc026f6ff81<br>
-      SHA-1: e10240408859d5188c4aae140e1c539130ba614b
-    </td>
-  </tr>
-  <tr id="volantis">
-    <td>Nexus 9 <br>"volantis"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >volantis-MPZ79M-preview-9f305342.tgz</a><br>
-      MD5: 9edabf0a4c61b247f1cbb9dfdc0a899e<br>
-      SHA-1: 9f30534216f10899a6a75495fc7e92408ea333a7
-    </td>
-  </tr>
-
-  <tr id="fugu">
-    <td>Nexus Player <br>"fugu"</td>
-    <td><a href="#top" onclick="onDownload(this)"
-      >fugu-MPZ79N-preview-fb63af98.tgz</a><br>
-      MD5: e8d081137a20b66df595ee69523314b5<br>
-      SHA-1: fb63af98302dd97be8de9313734d389ccdcce250
-    </td>
-  </tr>
-
-</table>
-
-<h3 id="install-image">Install an Image to a Device</h3>
-
-<p>
-  In order to use a device image for testing, you must install it on a compatible device. Follow
-  the instructions below to install a system image:
-</p>
-
-<ol>
-  <li>Download and uncompress one of the system image packages listed here.</li>
-  <li>Backup any data you want to preserve from the device.</li>
-  <li>Follow the instructions at
-  <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
-  to flash the image onto your device.</li>
-</ol>
-
-<h3 id="update-image">Updating a Device with the Preview</h3>
-
-<p>
-  Once you have installed a preview system image on a development device, the device is upgraded
-  automatically with the next preview release through over-the-air (OTA) updates. When the update
-  is available, the device displays notification that an update is available and allows you to
-  install it. You can also manually install the next preview image by repeating the procedure in
-  the previous section.
-</p>
-
-<h3 id="revertDevice">Revert a Device to Factory Specifications</h3>
-
-<p>
-  If you want to uninstall the preview and revert the device to factory specifications, go to
-  <a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a> and
-  download the image you want to flash to for your device. Follow the instructions on that page to
-  flash the image to your device.
-</p>
-
-  </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
-  var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
-  function onDownload(link) {
-
-    $("#downloadForRealz").html("Download " + $(link).text());
-    $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
-    $("#tos").fadeIn('fast');
-    $("#landing").fadeOut('fast');
-
-    return true;
-  }
-
-
-  function onAgreeChecked() {
-    /* verify that the TOS is agreed */
-    if ($("input#agree").is(":checked")) {
-      /* reveal the download button */
-      $("a#downloadForRealz").removeClass('disabled');
-    } else {
-      $("a#downloadForRealz").addClass('disabled');
-    }
-  }
-
-  function onDownloadForRealz(link) {
-    if ($("input#agree").is(':checked')) {
-    /*
-      $("#tos").fadeOut('fast');
-      $("#landing").fadeIn('fast');
-    */
-
-      ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
-
-    /*
-      location.hash = "";
-    */
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  $(window).hashchange( function(){
-    if (location.hash == "") {
-      location.reload();
-    }
-  });
-
-</script>
diff --git a/docs/html/preview/features/afw.jd b/docs/html/preview/features/afw.jd
new file mode 100644
index 0000000..24f67ef
--- /dev/null
+++ b/docs/html/preview/features/afw.jd
@@ -0,0 +1,543 @@
+page.title=Android for Work Updates
+page.metaDescription=New Android for Work APIs and features in Android N.
+page.keywords="android for work", "android N", "enterprise", "QR code"
+
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+      <ol>
+        <li><a href="#qr">QR Code Provisioning
+                </a></li>
+
+        <li><a href="#sec-challenge">Work Profile Security Challenge
+                </a></li>
+
+        <li><a href="#suspend">Disable Access to Apps
+                </a></li>
+
+        <li><a href="#toggle-work">Toggle Work Mode
+                </a></li>
+
+        <li><a href="#always-on-vpn">Always-On VPN
+                </a></li>
+
+        <li><a href="#contacts">Contacts Integration with Work Profile
+                </a></li>
+
+        <li><a href="#remote-reboot">Remote Reboot
+                </a></li>
+
+        <li><a href="#disable-roaming">Disable Data Roaming
+                </a></li>
+
+        <li><a href="#process-logging">Enterprise Process Logging
+                </a></li>
+
+        <li><a href="#bug-reports">Remote Bug Reports
+                </a></li>
+
+        <li><a href="#remove-cert">Remove a Client Certificate
+                </a></li>
+
+        <li><a href="#grant-cert-on-install">Grant Access to Client Certificate
+                on Installation</a></li>
+
+        <li><a href="#ui-policy">System UI Policy Transparency
+                </a></li>
+
+        <li><a href="#restrictions-mgmt">App Restrictions Management Enhancements
+                </a></li>
+
+        <li><a href="#location-off">Location Off Switch
+                </a></li>
+
+        <li><a href="#custom-provisioning">Customized Provisioning
+                </a></li>
+
+        <li><a href="#multi-wifi-ca">Multiple Wi-Fi CA Certificates
+                </a></li>
+
+        <li><a href="#custom-lock">Customized Lockscreen Message
+                </a></li>
+
+        <li><a href="#work-connectionservice">Work Profile ConnectionService
+                </a></li>
+
+        <li><a href="#lock-wp">Lock Down Wallpaper
+                </a></li>
+
+        <li><a href="#lock-user-icon">Lock Down User Icon
+                </a></li>
+
+        <li><a href="#health-monitoring">Device Health Monitoring
+                </a></li>
+
+      </ol>
+
+    <h2>See Also</h2>
+    <ul>
+      <li><a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK
+            Reference</a></li>
+    </ul>
+  </div>
+</div>
+
+<p>This document describes the new Android for Work features provided in
+Android N.</p>
+
+<h2 id="qr">QR Code Provisioning</h2>
+
+<p>
+  Android for Work now supports using QR codes to provision corporate-liable
+  devices. The setup wizard now allows you to scan a QR code to provision
+  the device.
+</p>
+
+<h2 id="sec-challenge">Work Profile Security Challenge</h2>
+
+<p>
+  Profile owners can require users to specify a security challenge for apps
+  running in the work profile. The system shows the security challenge when the
+  user attempts to open any work apps. If the user successfully completes the
+  security challenge, the system unlocks the work profile and decrypts it if
+  necessary.
+</p>
+
+<p>
+  If a profile owner sends an {@link
+  android.app.admin.DevicePolicyManager#ACTION_SET_NEW_PASSWORD} intent, the
+  system prompts a user to set up a security challenge. The profile owner can
+  also send an <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> intent to
+  prompt the user to set a device lock.
+</p>
+
+<p>
+  Profile owners can choose to set the password policies for the work challenge
+  differently from the policies for other device passwords. For example, the
+  minimum length for the device challenge response can be different from the
+  length required for other passwords. Profile owners set the challenge
+  policies using the usual {@link android.app.admin.DevicePolicyManager}
+  methods, such as {@link
+  android.app.admin.DevicePolicyManager#setPasswordQuality
+  setPasswordQuality()} and {@link
+  android.app.admin.DevicePolicyManager#setPasswordMinimumLength
+  setPasswordMinimumLength()}. The profile owner can also set the device lock,
+  by using the {@link android.app.admin.DevicePolicyManager} instance returned
+  by the new <code>DevicePolicyManager.getParentProfileInstance()</code>
+  method. Additionally, profile owners can customize the credentials screen for
+  the work challenge by using the {@link android.app.admin.DevicePolicyManager}
+  class's new <code>setOrganizationColor()</code> and
+  <code>setOrganizationName()</code> methods.
+</p>
+
+<p>
+  For details on the new methods and constants, see the
+  <code>DevicePolicyManager</code> reference page in the <a
+  href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK Reference</a>.
+</p>
+
+<h2 id="suspend">Disable Access to Apps</h2>
+
+<p>
+  Device owners and profile owners can temporarily suspend access to packages
+  by calling the new <code>DevicePolicyManager.getPackagesSuspended()</code>
+  method.Owners can use the same method to re-enable those packages.
+</p>
+
+<p>
+  While a package is suspended, it cannot start activities, and notifications
+  to the package are suppressed. Suspended packages do not show in the <a href=
+  "{@docRoot}guide/components/recents.html">overview screen</a>, and they
+  cannot show dialogs (including toasts and snackbars). They also cannot play
+  audio or vibrate the device.
+</p>
+
+<p>
+  Launchers should apply a distinctive UI to suspended apps to show that the
+  apps aren't currently available; for example, they might render the app icon
+  in gray. Launchers can find out which apps are suspended by calling the new
+  <code>DevicePolicyManager.getPackagesSuspended()</code> method.
+</p>
+
+<h2 id="toggle-work">Toggle Work Mode</h2>
+
+<p>On dual-profile devices, users can toggle work mode on and off. While work
+  mode is turned off, the managed profile is temporarily shut down. Work profile apps, background sync, and notifications are all disabled, including the profile
+  owner app. While the work profile is disabled, the system  displays a persistent status icon to remind users that they can't launch work apps. The system launcher
+  indicates that work apps and widgets are not accessible.
+</p>
+
+
+<h2 id="always-on-vpn">Always-On VPN</h2>
+
+<p>
+  Device owners and profile owners can require that work apps always connect to
+  the network through a specified VPN. If owners set this requirement, the
+  device automatically starts that VPN at boot time.
+</p>
+
+<p>
+  Owners can require use of a VPN by calling the new
+  <code>DevicePolicyManager.setAlwaysOnVpnPackage()</code> method. To find out
+  if the owner has set a VPN requirement, call the new
+  <code>DevicePolicyManager.GetAlwaysOnVpnPackage()</code> method.
+</p>
+
+<p>
+  Because the system can directly bind VPN services without app interaction,
+  VPN clients need to handle new entry points for always-on VPN. As before, you
+  can find active services by using an intent filter that matches the action
+  {@link android.net.VpnService android.net.VpnService}.
+</p>
+
+<p>
+  Users can manually set an always-on VPN client that implement {@link
+  android.net.VpnService} by using the <strong>Settings &gt; More &gt;
+  VPN</strong> screen.
+</p>
+
+<h2 id="contacts">Contacts Integration with Work Profile</h2>
+
+<p>
+  Profile owners can allow local search and directory lookup of work contacts
+  from the primary user. For example, a user can access both personal and work
+  directory contacts from their personal dialer or contacts application (if
+  permitted by their profile administrator).
+</p>
+
+<p>
+  Developers that leverage the Contact Provider can use the Enterprise Contacts
+  API to access work profile directory entries from the primary user if allowed
+  by policy:
+</p>
+
+<ul>
+  <li><code>ContactsContract.Contacts.ENTERPRISE_CONTENT_FILTER_URI</code>
+  </li>
+
+  <li><code>ContactsContract.Phone.ENTERPRISE_CONTENT_FILTER_URI</code>
+  </li>
+
+  <li><code>ContactsContract.Email.ENTERPRISE_CONTENT_FILTER_URI</code>
+  </li>
+
+  <li><code>ContactsContract.Callable.ENTERPRISE_CONTENT_FILTER_URI</code>
+  </li>
+
+  <li><code>ContactsContract.Directory.ENTERPRISE_CONTENT_URI</code>
+  </li>
+
+  <li><code>ContactsContract.Directory.isEntepriseDirectoryId()</code>
+  </li>
+</ul>
+
+<p>
+  Profile owners can control the visibility of work contacts in the primary
+  user using the following new methods:
+</p>
+
+<ul>
+  <li>
+    <code>DevicePolicyManager.setCrossProfileContactsSearchDisabled()</code>
+  </li>
+
+  <li>
+    <code>DevicePolicyManager.getCrossProfileContactsSearchDisabled()</code>
+  </li>
+</ul>
+
+<h2 id="remote-reboot">Remote Reboot</h2>
+
+<p>
+  Device owners can remotely reboot devices. In some cases, devices deployed in
+  public places inside enclosures can prevent access to the power button. If a
+  device needs to be rebooted, administrators can do so using the new
+  <code>DevicePolicyManager.reboot()</code> method.
+</p>
+
+<h2 id="disable-roaming">Disable Data Roaming</h2>
+
+<p>
+  Device owners can disable data roaming using the new {@link
+  android.os.UserManager} user restriction <code>DISALLOW_DATA_ROAMING</code>.
+</p>
+
+<h2 id="process-logging">Enterprise Process Logging</h2>
+
+<p>
+  Device owners can identify suspicious activity by remotely tracking device
+  activity, including app launches, adb activity, and screen unlocks. Process
+  logs don’t require user consent. To retrieve logs, device owners enable
+  device logging using <code>setDeviceLoggingEnabled()</code>.
+</p>
+
+<p>
+  The new <code>android.auditing.SecurityLog</code> class includes these
+  methods:
+</p>
+
+<ul>
+  <li>
+    <code>void DevicePolicyManager.setDeviceLoggingEnabled()</code>
+  </li>
+
+  <li>
+    <code>boolean DevicePolicyManager.getDeviceLoggingEnabled()</code>
+  </li>
+
+  <li>
+    <code>List DevicePolicyManager.retrieveDeviceLogs()</code>
+  </li>
+
+  <li>
+    <code>List DevicePolicyManager.retrievePreviousDeviceLogs()</code>
+  </li>
+
+  <li>
+    <code>void DeviceAdminReceiver.onSecurityLogsAvailable()</code>
+  </li>
+</ul>
+
+<h2 id="bug-reports">Remote Bug Reports</h2>
+
+<p>
+  Device owners can remotely trigger and retrieve a bug report that contains a
+  device state dump file, which allows forensic investigation of a known
+  incident or compromised device. Due to the detailed nature of the bug report,
+  user consent is required.
+</p>
+
+<p>
+  Android N includes the following API additions to support this feature. For
+  details, see the <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK
+  Reference</a>.
+</p>
+
+<ul>
+  <li>
+    <code>DevicePolicyManager.requestBugreport()</code>
+  </li>
+
+  <li>
+    <code>DeviceAdminReceiver.onBugreportFailed()</code>
+  </li>
+
+  <li>
+    <code>DeviceAdminReceiver.onBugreportShared()</code>
+  </li>
+
+  <li>
+    <code>DeviceAdminReceiver.onBugreportSharingDeclined()</code>
+  </li>
+
+  <li>
+    <code>DeviceAdminReceiver.BUGREPORT_FAILURE_FAILED_COMPLETING</code>
+  </li>
+
+  <li>
+    <code>DeviceAdminReceiver.BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE</code>
+  </li>
+</ul>
+
+<h2 id="remove-cert">Remove a Client Certificate</h2>
+
+<p>
+  Profile owners and device owners can now remove client certificates that were
+  installed through {@link android.app.admin.DevicePolicyManager#installKeyPair
+  installKeyPair()} by calling the new method
+  <code>DevicePolicyManager.removeKeyPair()</code>.
+</p>
+
+<h2 id="grant-cert-on-install">Grant Access to Client Certificate on
+  Installation</h2>
+
+<p>
+  If a profile owner or device owner grants a third-party app the ability to
+  manage certificates, the app can grant itself access to certificates it
+  installs without any intervention by the owner.
+</p>
+
+<p>
+  The existing API for managing certificates is extended to include:
+</p>
+
+<ul>
+  <li><code>DevicePolicyManager.installKeyPair()</code>
+  </li>
+</ul>
+
+<h2 id="ui-policy">System UI Policy Transparency</h2>
+
+<p>
+  Policies that affect the user experience or restrict user Settings are fully
+  disclosed to the user, and profile owners and device owners can attribute the
+  policy to their company’s IT department. In addition to a consistent “Action
+  not allowed” message in Settings, IT administrators can set an
+  organization-specific support message in device settings with the following
+  new {@link android.app.admin.DevicePolicyManager} methods:
+</p>
+
+<ul>
+  <li>
+    <code>DevicePolicyManager.setShortSupportMessage()</code>
+  </li>
+
+  <li>
+    <code>DevicePolicyManager.setLongSupportMessage()</code>
+  </li>
+</ul>
+
+<h2 id="restrictions-mgmt">App Restrictions Management Enhancements</h2>
+
+<p>
+  The device or profile owner can enable another application to manage app
+  restrictions via the new
+  <code>DevicePolicyManager.setApplicationRestrictionsManagingPackage()</code>
+  method. The nominated application can check whether this permission has been
+  granted by calling
+  <code>DevicePolicyManager.isCallerApplicationRestrictionsManagingPackage()</code>.
+</p>
+
+<p>
+  An application nominated to manage app restrictions can call {@link
+  android.app.admin.DevicePolicyManager#setApplicationRestrictions
+  setApplicationRestrictions()} and {@link
+  android.app.admin.DevicePolicyManager#getApplicationRestrictions
+  getApplicationRestrictions()} for any packages within that user or profile.
+</p>
+
+<h2 id="location-off">Location Off Switch</h2>
+
+<p>
+  Users can disable location permissions for work apps while continuing to
+  access location information in their personal apps. A separate location
+  access switch in Location Settings allows users to deny location updates or
+  last-location queries for apps running in the work profile.
+</p>
+
+<p>
+  The top level location off switch disables location access for both the
+  primary profile and the managed profile.
+</p>
+
+<h2 id="custom-provisioning">Customized Provisioning</h2>
+
+<p>
+  An application can customize the profile owner and device owner provisioning
+  flows with corporate colors and logos.
+</p>
+
+<dl>
+  <dt>
+    <code>DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR</code>
+  </dt>
+
+  <dd>
+    Customizes flow color.
+  </dd>
+
+  <dt>
+    <code>DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI</code>
+  </dt>
+
+  <dd>
+    Customizes the flow with a corporate logo.
+  </dd>
+</dl>
+
+<h2 id="multi-wifi-ca">Multiple Wi-Fi CA Certificates</h2>
+
+<p>
+  Profile owners and device owners can set multiple CA certificates for a given
+  Wi-Fi configuration. When corporate Wi-Fi networks have separate CAs for
+  separate access points with the same SSID, IT administrators can include all
+  relevant CAs in the Wi-Fi configuration using the new method
+  <code>setCaCertificates()</code>.
+</p>
+
+<p>
+  APIs added are:
+</p>
+
+<ul>
+  <li>
+    <code>WifiEnterpriseConfig.setCaCertificates()</code>
+  </li>
+
+  <li>
+    <code>WifiEnterpriseConfig.getCaCertificates()</code>
+  </li>
+</ul>
+
+<h2 id="custom-lock">Customized Lockscreen Message</h2>
+
+<p>
+  Device owners can provide owner information to be shownon the lockscreen.
+  This information takes precedence the user lock screen message (if one is
+  set). New {@link android.app.admin.DevicePolicyManager} methods are:
+</p>
+
+<ul>
+  <li>
+    <code>setDeviceOwnerLockScreenInfo()</code>
+  </li>
+
+  <li>
+    <code>getDeviceOwnerLockScreenInfo()</code>
+  </li>
+</ul>
+
+<h2 id="work-connectionservice">Work Profile ConnectionService</h2>
+
+<p>
+  Profile owners can specify a work dialer application that uses a
+  work-specific {@link android.telecom.ConnectionService} for the calling
+  backend (calling accounts). The work dialer maintains a work-only call log
+  and relies on work contacts only. Users have a consistent in-call UI
+  experience regardless of dialing application. Incoming work calls to the work
+  calling accounts are distinguished from personal incoming calls to the
+  personal calling accounts.
+</p>
+
+<p>
+  The dialer should check for the new flag
+  <code>android.telecom.Call.PROPERTY_WORK_CALL</code> to determine if a call
+  is a work call. If a call is a work call, the dialer should indicate this,
+  such as by adding a work badge.
+</p>
+
+<h2 id="lock-wp">Lock Down Wallpaper</h2>
+
+<p>
+  A new user restriction (<code>DISALLOW_SET_WALLPAPER</code>) prevents the
+  user from changing their wallpaper. The device owner or profile owner can
+  still change the wallpaper, but they can only change the wallpaper for the
+  user or profile they control. For example, a profile owner can’t change the
+  wallpaper of the parent user, but a profile owner in the primary profile or
+  device owner can. A profile owner or device owner that wants to change the
+  wallpaper should check whether the the user or profile they manage has a
+  wallpaper ({@link android.app.WallpaperManager#isWallpaperSupported
+  isWallpaperSupported()}) and whether they are allowed to change it (with the
+  new method <code>WallpaperManager.isWallpaperSettingAllowed()</code>)
+</p>
+
+<h2 id="lock-user-icon">Lock Down User Icon</h2>
+
+<p>
+  A new user restriction (<code>DISALLOW_SET_USER_ICON</code>) prevents the
+  user from changing their user icon. The user’s device owner or profile owner
+  can still change the icon. However, a profile owner can only change the user
+  icon for the profile it controls.
+</p>
+
+<h2 id="health-monitoring">Device Health Monitoring</h2>
+
+<p>
+  A device owner or profile owner can use the new
+  <code>HardwarePropertiesManager</code> interface to retrieve information
+  about device health, such as CPU or GPU temperatures and CPU usage. The new
+  monitoring interface is especially useful for monitoring unattended devices
+  running in a remote location.
+</p>
diff --git a/docs/html/preview/features/app-linking.jd b/docs/html/preview/features/app-linking.jd
deleted file mode 100644
index b8fb300..0000000
--- a/docs/html/preview/features/app-linking.jd
+++ /dev/null
@@ -1,571 +0,0 @@
-page.title=App Links
-page.image=images/cards/card-app-linking_2x.png
-page.keywords=applinking, deeplinks, intents
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>In this document</h2>
-      <ol>
-        <li><a href="#url-handling">Understanding URL Request Handling</a> </li>
-        <li><a href="#intent-handler">Create an Intent Handler for URLs</a></li>
-        <li><a href="#request-verify">Request App Links Verification</a></li>
-        <li><a href="#web-assoc">Declare Website Associations</a></li>
-        <li><a href="#testing">Testing App Links</a></li>
-      </ol>
-  </div>
-</div>
-
-
-<p>
-  The M Developer Preview introduces a new option for handling web site links, allowing clicked
-  links to go directly to the website's official app, instead of asking the user to chose how to
-  handle the link. This feature saves the user time and helps developers deliver a better
-  experience. Users can also select whether an app should always open specific types of links
-  automatically or prompt the user each time.
-</p>
-
-<p>
-  Handling links automatically requires the cooperation of app developers and website owners.
-  Developers must configure their apps to declare connections with websites and request
-  verification. Website owners can publish a
-  Digital Asset Links file
-  to allow Android to verify the association of apps with their sites. The general steps for
-  creating verified app links are as follows:
-</p>
-
-<ol>
-  <li>Create intent filters within your app for your website URLs</li>
-  <li>Configure your app to request verification of app links</li>
-  <li>Publish a Digital Asset Links JSON file on your websites</li>
-</ol>
-
-<h2 id="url-handling">Understanding URL Request Handling</h2>
-
-<p>
-  The app links feature allows your app to become the default handler for your website URLs, as
-  long as the user has not already chosen an app to handle that URL pattern. When a web URI intent
-  is invoked through a clicked link or programatic request, the Android system determines what app
-  is used to handle the intent. The system use these criteria, in order, to determine how to handle
-  the request:
-</p>
-
-<ol>
-  <li>
-    <strong>User has set app link associations</strong>: If the user has designated an app to
-    handle app links, the system passes the web URI request to that app. Users set this association
-    by opening <strong>Settings &gt; Apps &gt; Configure apps (gear icon) &gt; App links</strong>,
-    then selecting an app to use and configuring it's <strong>App links</strong> property to the
-    <em>Open in this app</em> option.
-  </li>
-
-  <li>
-    <strong>No association set by user and a single supporting app</strong>: If the user
-    has not set a preference that matches the web URI request, and there is only one app declaring
-    support for the intent’s URI pattern, the system passes the request to that app.
-  </li>
-
-  <li>
-    <strong>No association set by user and multiple supporting apps</strong>: If there is
-    no explicit user preference and there are multiple apps declaring support for the web URI
-    pattern, the system prompts the user to select one of the available apps
-  </li>
-</ol>
-
-<p>
-  In case #2 (no user setting and no other app handlers), if an app is newly installed and verified
-  as a handler for this type of link, the system sets it as the default handler. In the other two
-  cases, the system behavior is the same, regardless of the presence of a verified app link
-  handler.
-</p>
-
-
-<h2 id="intent-handler">Create an Intent Handler for URLs</h2>
-
-<p>
-  App links are based on the <a href="{@docRoot}guide/components/intents-filters.html">Intent</a>
-  framework, which enables apps to handle requests from the system or other apps. Multiple apps may
-  declare matching web link URI patterns in their intent filters. When a user clicks on a web link
-  that does not have a default launch handler, the platform selects an app to handle the request,
-  based on the criteria described in the previous section.
-</p>
-
-<p>
-  To enable your app to handle links, use intent filters in your app manifest to declare the URI
-  patterns to be handled by your app. The following sample code shows an intent filter that can
-  handle links to {@code http://www.android.com} and {@code https://www.android.com}:
-</p>
-
-<pre>
-  &lt;activity ...&gt;
-      &lt;intent-filter&gt;
-          &lt;action android:name="android.intent.action.VIEW" /&gt;
-          &lt;category android:name="android.intent.category.DEFAULT" /&gt;
-          &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
-          &lt;data android:scheme="http" /&gt;
-          &lt;data android:scheme="https" /&gt;
-          &lt;data android:host="www.android.com" /&gt;
-      &lt;/intent-filter&gt;
-  &lt;/activity&gt;
-</pre>
-
-<p>
-  As shown in the example above, intent filters for app links must declare an {@code android:scheme}
-  value of either {@code http} or {@code https}, or both. The filter should not declare
-  any other schemes. The filter must also include the {@code android.intent.action.VIEW}; and
-  {@code android.intent.category.BROWSABLE} category names.
-</p>
-
-<p>
-  This manifest declaration defines the connection between your app and a website. However, in
-  order to have the system treat your app as the default handler for a set of URLs, you must
-  also request that the system verify this connection, which is explained in the next section.
-</p>
-
-
-<h2 id="request-verify">Request App Links Verification</h2>
-
-<p>
-  In addition to declaring an association between your app and a web site using intent filters,
-  your app must also request automatic verification with an additional manifest declaration. When
-  this declaration is set, the Android system attempts to verify your app after it is installed.
-  If the verification succeeds, and the user has not set a preference for your website URLs, the
-  system automatically routes those URL requests to your app.
-</p>
-
-<p>
-  The system performs app link verifications by comparing the host names in the data elements of
-  the app’s intent filters against the Digital Asset Links files ({@code assetlinks.json}) hosted
-  on the respective web domains. To enable the system to verify a host, make sure that your intent
-  filter declarations include the {@code android.intent.action.VIEW} intent action and {@code
-  android.intent.category.BROWSABLE} intent category.
-</p>
-
-
-<h3 id="config-verify">Enabling automatic verification</h3>
-
-<p>
-  To enable link handling verification for your app, set the {@code android:autoVerify} attribute to
-  {@code true} on at least one of the web URI intent filters in your app manifest, as shown in the
-  following manifest code snippet:
-</p>
-
-<pre>
-&lt;activity ...&gt;
-
-    &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
-        &lt;action android:name="android.intent.action.VIEW" /&gt;
-        &lt;category android:name="android.intent.category.DEFAULT"gt;
-        &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
-        &lt;data android:scheme="http" android:host="www.android.com" /&gt;
-        &lt;data android:scheme="https" android:host="www.android.com" /&gt;
-    &lt;/intent-filter&gt;
-
-&lt;/activity&gt;
-</pre>
-
-<p>
-  When the {@code android:autoVerify} attribute is set, the system attempts to verify all hosts
-  associated with web URI’s in all of your app's intent filters when the app is installed. The
-  system treats your app as the default handler for the specified URI pattern only if it
-  successfully verifies <em>all</em> app link patterns declared in your manifest.
-</p>
-
-
-<h3 id="multi-host">Supporting app linking for multiple hosts</h3>
-
-<p>
-  The system must be able to verify each host specified in the app’s web URI intent filters’ data
-  elements against the Digital Asset Links files hosted on the respective web domains. If any
-  verification fails, the app is not verified to be a default handler for any of the web URL
-  patterns defined in its intent filters. For example, an app with the following intent filters
-  would fail verification if an {@code assetlinks.json} file were not found at both
-  {@code https://www.domain1.com/.well-known/assetlinks.json} and
-  {@code https://www.domain2.com/.well-known/assetlinks.json}:
-</p>
-
-<pre>
-&lt;application&gt;
-
-  &lt;activity android:name=”MainActivity”&gt;
-    &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
-      &lt;action android:name="android.intent.action.VIEW" /&gt;
-      &lt;category android:name="android.intent.category.DEFAULT" /&gt;
-      &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
-      &lt;data android:scheme="http" android:host="www.domain1.com" /&gt;
-      &lt;data android:scheme="https" android:host="www.domain1.com" /&gt;
-    &lt;/intent-filter&gt;
-  &lt;/activity&gt;
-  &lt;activity android:name=”SecondActivity”&gt;
-    &lt;intent-filter&gt;
-      &lt;action android:name="android.intent.action.VIEW" /&gt;
-      &lt;category android:name="android.intent.category.DEFAULT" /&gt;
-      &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
-      &lt;data android:scheme="https" android:host="www.domain2.com" /&gt;
-    &lt;/intent-filter&gt;
-  &lt;/activity&gt;
-
-&lt;/application
-</pre>
-
-
-<h3 id="multi-subdomain">Supporting app linking for multiple subdomains</h3>
-
-<p>
-  The Digital Asset Links protocol treats subdomains as unique, separate hosts. If your intent
-  filter lists both the {@code www.example.com} and {@code mobile.example.com} subdomains as
-  schemes, you must host separate {@code assetlink.json} file on each subdomain. For example, an
-  app with the following intent filter declaration would pass verification only if the website
-  owner published valid {@code assetlinks.json} files at both
-  {@code https://www.example.com/.well-known/assetlinks.json} and
-  {@code https://mobile.example.com/.well-known/assetlinks.json}:
-</p>
-
-<pre>
-&lt;application&gt;
-  &lt;activity android:name=”MainActivity”&gt;
-    &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
-      &lt;action android:name="android.intent.action.VIEW" /&gt;
-      &lt;category android:name="android.intent.category.DEFAULT" /&gt;
-      &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
-      &lt;data android:scheme="http" android:host="www.example.com" /&gt;
-      &lt;data android:scheme="https" android:host="mobile.example.com" /&gt;
-    &lt;/intent-filter&gt;
-  &lt;/activity&gt;
-&lt;/application&gt;
-</pre>
-
-
-<h2 id="web-assoc">Declare Website Associations</h2>
-
-<p>
-  For app link verification to be successful, website owners must declare associations
-  with apps. A site owner declares the relationship to an app by hosting a Digital Asset Links JSON
-  file, with the name {@code assetlinks.json}, at the following well-known location on the domain:
-</p>
-
-<pre>
-  https://<em>domain</em>[:<em>optional_port</em>]/.well-known/assetlinks.json
-</pre>
-
-<p class="note">
-  <strong>Important:</strong> With M Preview 3 and the Android 6.0 (API level 23) release, the JSON
-  file is verified via the encrypted HTTPS protocol. Make sure that your hosted file can be
-  accessed over an HTTPS connection, regardless of whether your app's intent filter declares an
-  {@code android:scheme} setting of {@code http}, {@code https} or both.
-</p>
-
-<p>
-  A Digital Asset Links JSON file indicates the Android apps that are associated with the web site.
-  The JSON file identifies associated apps with the following fields:
-</p>
-
-<ul>
-  <li>{@code package_name}: The package name declared in the app's manifest.</li>
-
-  <li>{@code sha256_cert_fingerprints}: The SHA256 fingerprints of your app’s signing certificate.
-    You can use the Java keytool to generate the fingerprint using the following command:
-    <pre>keytool -list -v -keystore my-release-key.keystore</pre>
-    This field supports multiple fingerprints, which can be used to support different versions
-    of your app, such as debug and production builds.
-  </li>
-</ul>
-
-<p>
-  The following example {@code assetlinks.json} file grants link opening rights to a
-  {@code com.example} Android application:
-</p>
-
-<pre>
-  [{
-    "relation": ["delegate_permission/common.handle_all_urls"],
-    "target": {
-      "namespace": "android_app",
-      "package_name": "com.example",
-      "sha256_cert_fingerprints":
-      ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
-    }
-  }]
-</pre>
-
-
-<h3 id="multiple-apps">Associating a website with multiple apps</h3>
-
-<p>
-  A website can declare associations with multiple apps within the same {@code assetlinks.json}
-  file. The following file listing shows an example of a statement file that declares association
-  with two, separate apps and is hosted at
-  <code>https://www.example.com/.well-known/assetlinks.json</code>:
-</p>
-
-<pre>
-[{
-  "relation": ["delegate_permission/common.handle_all_urls"],
-  "target": {
-    "namespace": "android_app",
-    "package_name": <strong>"example.com.puppies.app"</strong>,
-    "sha256_cert_fingerprints":
-    ["<strong>14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5</strong>"]
-  }
-  },
-  {
-  "relation": ["delegate_permission/common.handle_all_urls"],
-  "target": {
-    "namespace": "android_app",
-    "package_name": "<strong>example.com.monkeys.app</strong>",
-    "sha256_cert_fingerprints":
-    ["<strong>14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5</strong>"]
-  }
-}]
-</pre>
-
-<p>
-  When multiple apps handle links to the same host, the system determines which one to use for
-  a given link based on the intent filters defined in each app’s manifest. Different apps may
-  handle links for different resources under the same web host. For example, app1 may
-  declare an intent filter for {@code https://example.com/articles}, and app2 may declare
-  an intent filter for {@code https://example.com/videos}.
-</p>
-
-<p class="note">
-  <strong>Note:</strong> Multiple apps associated with a domain may be signed with the same or
-  different certificates.
-</p>
-
-
-<h3 id="multi-site">Associating multiple websites with a single app</h3>
-
-<p>
-  Multiple websites can declare associations with the same app in their respective {@code
-  assetlinks.json} files. The following file listings show an example of how to declare the
-  association of domain1 and domain2 with app1:
-</p>
-
-<pre>
-https://www.domain1.com/.well-known/assetlinks.json
-
-[{
-  "relation": ["delegate_permission/common.handle_all_urls"],
-  "target": {
-    "namespace": "android_app",
-    "package_name": "<strong>com.mycompany.app1</strong>",
-    "sha256_cert_fingerprints":
-    ["<strong>14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5</strong>"]
-  }
-}]
-</pre>
-
-<pre>
-https://www.domain2.com/.well-known/assetlinks.json
-
-[{
-  "relation": ["delegate_permission/common.handle_all_urls"],
-  "target": {
-    "namespace": "android_app",
-    "package_name": "<strong>com.mycompany.app1</strong>",
-    "sha256_cert_fingerprints":
-    ["<strong>14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5</strong>"]
-  }
-}]
-</pre>
-
-
-
-<h2 id="testing">Testing App Links</h2>
-
-<p>
-  When implementing the app linking feature, you should test the linking functionality to
-  make your app can be successfully associated with your websites and handle URL requests
-  as you expect.
-</p>
-
-
-<h3 id="test-hosts">Confirm the list of hosts to verify</h3>
-
-<p>
-  When testing, you should confirm the list of associated hosts that the system should verify
-  for your app. Make a list of all web URI’s in intent-filters in your manifest that
-  includes the following:
-</p>
-
-<ul>
-  <li>{@code android:scheme} attribute with a value of {@code http} or {@code https}
-  </li>
-  <li>{@code android:host} attribute with a domain URI pattern
-  </li>
-  <li>{@code android.intent.action.VIEW} category element
-  </li>
-  <li>{@code android.intent.category.BROWSABLE} category element
-  </li>
-</ul>
-
-<p>
-  Use this list to check that a Digital Asset Links JSON file is provided on each named host
-  and subdomain.
-</p>
-
-
-<h3 id="test-dal-files">Confirm the Digital Asset Links files</h3>
-
-<p>
-  For each website, confirm that the Digital Asset Links JSON file is properly hosted and
-  defined by using the Digital Asset Links API:
-</p>
-
-<pre>
-https://digitalassetlinks.googleapis.com/v1/statements:list?
-   source.web.site=https://<strong>&lt;domain1&gt;:&lt;port&gt;</strong>&amp;
-   relation=delegate_permission/common.handle_all_urls
-</pre>
-
-
-<h3 id="test-intent">Testing a web URI intent</h3>
-
-<p>
-  Once you have confirmed the list of websites to associate with your app, and you have confirmed
-  that the hosted JSON file is valid, install the app on your device. Wait at least 20 seconds for
-  the asynchronous verification process to complete. Use the following command to check
-  if the system verified your app and set the correct link handling policies:
-</p>
-
-<pre>
-adb shell am start -a android.intent.action.VIEW \
-    -c android.intent.category.BROWSABLE \
-    -d "http://&lt;domain1&gt;:&lt;port&gt;"
-</pre>
-
-
-<h3 id="check-link-policies">Check link policies</h3>
-
-<p>
-  As part of your testing process, you can check the current system settings for link handling.
-  Use the following command to get a listing of link-handling policies for all applications:
-</p>
-
-<pre>
-  adb shell dumpsys package domain-preferred-apps
-  --or--
-  adb shell dumpsys package d
-</pre>
-
-<p class="note">
-  <strong>Note:</strong> Make sure you wait at least 20 seconds after installation of your app to
-  allow for the system to complete the verification process.
-</p>
-
-<p>
-  The command returns a listing of each user or profile defined on the device,
-  indicated by a header in the following format:
-</p>
-
-<pre>
-App linkages for user 0:
-</pre>
-
-<p>
-  Following this heading, the output lists the link-handling settings for that user in this format:
-</p>
-
-<pre>
-Package: com.android.vending
-Domains: play.google.com market.android.com
-Status: always : 200000002
-</pre>
-
-<p>This listing indicates the what apps are associated with what domains for that user, as
-  described below:</p>
-
-<ul>
-  <li>{@code Package} - Identifies an app by its package name, as declared in its manifest.
-  </li>
-  <li>{@code Domains} - Shows the full list of hosts whose web links this app handles.
-  </li>
-  <li>{@code Status} - Shows the current link-handling setting for this app. An app that set {@code
-  android:autoVerify="true"} value and passed verification is shown with a status of {@code
-  always}. The hexadecimal number after this status is related to the Android system's record of
-  the user’s app linkage preferences. This value is not relevant for interpreting whether the
-  verification operation passed.
-  </li>
-</ul>
-
-<p class="note">
-  <strong>Note:</strong>It is possible for a user to change the app link settings for an app
-  before the verification operation has completed. If this
-  situation occurs, you may see a false positive for a successful verification, even though
-  verification has failed. However, the user has already explicitly enabled the app to open
-  supported links without asking. In this case, no dialog is shown and the link goes directly to
-  your app, but only because explicit user preferences take precedence.
-</p>
-
-
-
-<h3 id="test-example">Test example</h3>
-
-<p>
-  For app link verification to succeed, the system must be able to verify your app with all of
-  the websites referenced in your app’s intent filters, that meet the criteria for app links.
-  The following example manifest snippet shows app configuration with several app links defined:
-</p>
-
-<pre>
-  &lt;application&gt;
-
-      &lt;activity android:name=”MainActivity”&gt;
-          &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
-              &lt;action android:name="android.intent.action.VIEW" /&gt;
-              &lt;category android:name="android.intent.category.DEFAULT" /&gt;
-              &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
-              &lt;data android:scheme="http" android:host="www.example.com" /&gt;
-              &lt;data android:scheme="https" android:host="mobile.example.com" /&gt;
-          &lt;/intent-filter&gt;
-          &lt;intent-filter&gt;
-              &lt;action android:name="android.intent.action.VIEW" /&gt;
-              &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
-              &lt;data android:scheme="http" android:host="www.example2.com" /&gt;
-          &lt;/intent-filter&gt;
-      &lt;/activity&gt;
-
-      &lt;activity android:name=”SecondActivity”&gt;
-          &lt;intent-filter&gt;
-              &lt;action android:name="android.intent.action.VIEW" /&gt;
-              &lt;category android:name="android.intent.category.DEFAULT" /&gt;
-              &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
-              &lt;data android:scheme="http" android:host="account.example.com" /&gt;
-          &lt;/intent-filter&gt;
-      &lt;/activity&gt;
-
-      &lt;activity android:name=”ThirdActivity”&gt;
-        &lt;intent-filter&gt;
-            &lt;action android:name="android.intent.action.VIEW" /&gt;
-            &lt;category android:name="android.intent.category.DEFAULT" /&gt;
-            &lt;data android:scheme="http" android:host="map.example.com" /&gt;
-        &lt;/intent-filter&gt;
-        &lt;intent-filter&gt;
-            &lt;action android:name="android.intent.action.VIEW" /&gt;
-            &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
-            &lt;data android:scheme="market" android:host="example.com" /&gt;
-        &lt;/intent-filter&gt;
-      &lt;/activity&gt;
-
-  &lt;/application&gt;
-</pre>
-
-<p>
-  The list of hosts that the platform would attempt to verify from the above manifest is:
-</p>
-
-<pre>
-  www.example.com
-  mobile.example.com
-  www.example2.com
-  account.example.com
-</pre>
-
-<p>
-  The list of hosts that the platform would not attempt to verify from the above manifest is:
-</p>
-
-<pre>
-  map.example.com (it does not have android.intent.category.BROWSABLE)
-  market://example.com (it does not have either an “http” or “https” scheme)
-</pre>
diff --git a/docs/html/preview/features/background-optimization.jd b/docs/html/preview/features/background-optimization.jd
new file mode 100644
index 0000000..e415bd3
--- /dev/null
+++ b/docs/html/preview/features/background-optimization.jd
@@ -0,0 +1,394 @@
+page.title=Background Optimizations
+page.metaDescription=New restrictions to implicit broadcasts.
+page.keywords="android N", "implicit broadcasts", "job scheduler"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>
+      In this document
+    </h2>
+
+    <ol>
+      <li>
+        <a href="#connectivity-action">Restrictions on CONNECTIVITY_ACTION</a>
+      </li>
+
+      <li>
+        <a href="#sched-jobs">Scheduling Network Jobs on Unmetered
+        Connections</a>
+      </li>
+
+      <li>
+        <a href="#monitor-conn">Monitoring Network Connectivity While the App
+        is Running</a>
+      </li>
+
+      <li>
+        <a href="#media-broadcasts">Restrictions on NEW_PICTURE and
+        NEW_VIDEO</a>
+      </li>
+
+      <li>
+        <a href="#new-jobinfo">New JobInfo methods</a>
+      </li>
+
+      <li>
+        <a href="#new-jobparam">New JobParameter Methods</a>
+      </li>
+
+      <li>
+        <a href="#further-optimization">Further Optimizing Your App</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  Background processes can be memory- and battery-intensive. For example, an
+  implicit broadcast may start many background processes that have registered
+  to listen for it, even if those processes may not do much work. This can have
+  a substantial impact on both device performance and user experience.
+</p>
+
+<p>
+  To alleviate this issue, Android N applies the following
+  restrictions:
+</p>
+
+<ul>
+  <li>Apps targeting the Preview do not receive {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} broadcasts if they
+  register to receive them in their manifest. Apps running in the foreground
+  can still listen for {@code CONNECTIVITY_CHANGE} on their main thread by
+  registering a {@link android.content.BroadcastReceiver} with {@link
+  android.content.Context#registerReceiver Context.registerReceiver()}.
+  </li>
+
+  <li>Apps cannot send or receive {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} or {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} broadcasts. This optimization
+  affects all apps, not only those targeting the Preview.
+  </li>
+</ul>
+
+<p>
+  If your app uses any of these intents, you should remove dependencies on
+  them as soon as possible so that you can target Android N devices properly.
+  The Android framework provides several solutions to mitigate the need for
+  these implicit broadcasts. For example, {@link android.app.job.JobScheduler}
+  and <a href=
+  "https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  {@code GcmNetworkManager}</a> provide robust mechanisms to schedule network
+  operations when specified conditions, such as a connection to an unmetered
+  network, are met. You can now also use {@link android.app.job.JobScheduler}
+  to react to changes to content providers. {@link android.app.job.JobInfo}
+  objects encapsulate the parameters that {@link android.app.job.JobScheduler}
+  uses to schedule your job. When the conditions of the job are met, the system
+  executes this job on your app's {@link android.app.job.JobService}.
+</p>
+
+<p>
+  In this document, we will learn how to use alternative methods, such as
+  {@link android.app.job.JobScheduler}, to adapt your app to these new
+  restrictions.
+</p>
+
+<h2 id="connectivity-action">
+  Restrictions on CONNECTIVITY_ACTION
+</h2>
+
+<p>
+  Apps targeting the Android N do not receive {@link
+  android.net.ConnectivityManager#CONNECTIVITY_ACTION} broadcasts if they
+  register to receive them in their manifest, and processes that depend on this
+  broadcast will not start. This could pose a problem for apps that want
+  to listen for network changes or perform bulk network activities when the
+  device connects to an unmetered network. Several solutions to get around this
+  restriction already exist in the Android framework, but choosing the right
+  one depends on what you want your app to accomplish.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> A {@link android.content.BroadcastReceiver} registered with
+  {@link android.content.Context#registerReceiver Context.registerReceiver()}
+  continues to receive these broadcasts while the app is in the foreground.
+</p>
+
+<h3 id="sched-jobs">
+  Scheduling Network Jobs on Unmetered Connections
+</h3>
+
+<p>
+  When using the {@link android.app.job.JobInfo.Builder JobInfo.Builder} class
+  to build your {@link android.app.job.JobInfo} object, apply the {@link
+  android.app.job.JobInfo.Builder#setRequiredNetworkType
+  setRequiredNetworkType()} method and pass {@link android.app.job.JobInfo
+  JobInfo.NETWORK_TYPE_UNMETERED} as a job parameter. The following code sample
+  schedules a service to run when the device connects to an unmetered
+  network and is charging:
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+      (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo job = new JobInfo.Builder(
+    MY_BACKGROUND_JOB,
+    new ComponentName(context, MyJobService.class))
+      .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
+      .setRequiresCharging(true)
+      .build();
+  js.schedule(job);
+}
+</pre>
+
+<p>
+  When the conditions for your job are met, your app receives a callback to run
+  the {@link android.app.job.JobService#onStartJob onStartJob()} method in the
+  specified {@code JobService.class}. To see more examples of {@link
+  android.app.job.JobScheduler} implementation, see the <a href=
+  "{@docRoot}samples/JobScheduler/index.html">JobScheduler sample app</a>.
+</p>
+
+<p>
+  Applications that use GMSCore services, and target Android 5.0 (API level 21)
+  or lower, can use <a href=
+  "https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
+  {@code GcmNetworkManager}</a> and specify {@code Task.NETWORK_STATE_UNMETERED}.
+</p>
+
+<h3 id="monitor-conn">
+  Monitoring Network Connectivity While the App is Running
+</h3>
+
+<p>
+  Apps running in the foreground can still listen for {@code
+  CONNECTIVITY_CHANGE} with a registered {@link
+  android.content.BroadcastReceiver}. However, the {@link
+  android.net.ConnectivityManager} API provides a more robust method to request
+  a callback only when specified network conditions are met.
+</p>
+
+<p>
+  {@link android.net.NetworkRequest} objects define the parameters of the
+  network callback in terms of {@link android.net.NetworkCapabilities}. You
+  create {@link android.net.NetworkRequest} objects with the {@link
+  android.net.NetworkRequest.Builder NetworkRequest.Builder} class. {@link
+  android.net.ConnectivityManager#registerNetworkCallback(android.net.NetworkRequest,
+  android.net.ConnectivityManager.NetworkCallback) registerNetworkCallback()}
+  then passes the {@link android.net.NetworkRequest} object to the system. When
+  the network conditions are met, the app receives a callback to execute the
+  {@link android.net.ConnectivityManager.NetworkCallback#onAvailable
+  onAvailable()} method defined in its {@link
+  android.net.ConnectivityManager.NetworkCallback} class.
+</p>
+
+<p>
+  The app continues to receive callbacks until either the app exits or it calls
+  {@link android.net.ConnectivityManager#unregisterNetworkCallback
+  unregisterNetworkCallback()}.
+</p>
+
+<h2 id="media-broadcasts">
+  Restrictions on NEW_PICTURE and NEW_VIDEO
+</h2>
+
+<p>
+  In the Android N, apps are not able to send or receive {@link
+  android.hardware.Camera#ACTION_NEW_PICTURE} or {@link
+  android.hardware.Camera#ACTION_NEW_VIDEO} broadcasts. This restriction helps
+  alleviate the performance and user experience impacts when several apps must
+  wake up in order to process a new image or video. Android N
+  extends {@link android.app.job.JobInfo} and {@link
+  android.app.job.JobParameters} to provide an alternative solution.
+</p>
+
+<h3 id="new-jobinfo">
+  New JobInfo methods
+</h3>
+
+<p>
+  To trigger jobs on content URI changes, Android N extends
+  the {@link android.app.job.JobInfo} API with the following methods:
+</p>
+
+<dl>
+  <dt>
+    {@code JobInfo.TriggerContentUri()}
+  </dt>
+
+  <dd>
+    Encapsulates parameters required to trigger a job on content URI changes.
+  </dd>
+
+  <dt>
+    {@code JobInfo.Builder.addTriggerContentUri()}
+  </dt>
+
+  <dd>
+    Passes a {@code TriggerContentUri} object to {@link
+    android.app.job.JobInfo}. A {@link android.database.ContentObserver}
+    monitors the encapsulated content URI. If there are multiple {@code
+    TriggerContentUri} objects associated with a job, the system provides a
+    callback even if it reports a change in only one of the content URIs.
+  </dd>
+
+  <dd>
+    Add the {@code TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS} flag to
+    trigger the job if any descendants of the given URI change. This flag
+    corresponds to the {@code notifyForDescendants} parameter passed to {@link
+    android.content.ContentResolver#registerContentObserver
+    registerContentObserver()}.
+  </dd>
+</dl>
+
+<p class="note">
+  <strong>Note:</strong> {@code TriggerContentUri()} cannot be used in
+  combination with {@link android.app.job.JobInfo.Builder#setPeriodic
+  setPeriodic()} or {@link android.app.job.JobInfo.Builder#setPersisted
+  setPersisted()}. To continually monitor for content changes, schedule a new
+  {@link android.app.job.JobInfo} before the app’s {@link
+  android.app.job.JobService} finishes handling the most recent callback.
+</p>
+
+<p>
+  The following sample code schedules a job to trigger when the system reports
+  a change to the content URI, {@code MEDIA_URI}:
+</p>
+
+<pre>
+public static final int MY_BACKGROUND_JOB = 0;
+...
+public static void scheduleJob(Context context) {
+  JobScheduler js =
+          (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+  JobInfo.Builder builder = new JobInfo.Builder(
+          MY_BACKGROUND_JOB,
+          new ComponentName(context, MediaContentJob.class));
+  builder.addTriggerContentUri(
+          new JobInfo.TriggerContentUri(MEDIA_URI,
+          JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS));
+  js.schedule(builder.build());
+}
+</pre>
+<p>
+  When the system reports a change in the specified content URI(s), your app
+  receives a callback and a {@link android.app.job.JobParameters} object is
+  passed to the {@link android.app.job.JobService#onStartJob onStartJob()}
+  method in {@code MediaContentJob.class}.
+</p>
+
+<h3 id="new-jobparam">
+  New JobParameter Methods
+</h3>
+
+<p>
+  Android N also extends {@link android.app.job.JobParameters} to
+  allow your app to receive useful information about what content authorities
+  and URIs triggered the job:
+</p>
+
+<dl>
+  <dt>
+    {@code Uri[] getTriggeredContentUris()}
+  </dt>
+
+  <dd>
+    Returns an array of URIs that have triggered the job. This will be {@code
+    null} if either no URIs have triggered the job (for example, the job was
+    triggered due to a deadline or some other reason), or the number of changed
+    URIs is greater than 50.
+  </dd>
+
+  <dt>
+    {@code String[] getTriggeredContentAuthorities()}
+  </dt>
+
+  <dd>
+    Returns a string array of content authorities that have triggered the job.
+    If the returned array is not {@code null}, use {@code getTriggeredContentUris()}
+    to retrieve the details of which URIs have changed.
+  </dd>
+</dl>
+
+<p>
+  The following sample code overrides the {@link
+  android.app.job.JobService#onStartJob JobService.onStartJob()} method and
+  records the content authorities and URIs that have triggered the job:
+</p>
+
+<pre>
+&#64;Override
+public boolean onStartJob(JobParameters params) {
+  StringBuilder sb = new StringBuilder();
+  sb.append("Media content has changed:\n");
+  if (params.getTriggeredContentAuthorities() != null) {
+      sb.append("Authorities: ");
+      boolean first = true;
+      for (String auth :
+          params.getTriggeredContentAuthorities()) {
+          if (first) {
+              first = false;
+          } else {
+             sb.append(", ");
+          }
+           sb.append(auth);
+      }
+      if (params.getTriggeredContentUris() != null) {
+          for (Uri uri : params.getTriggeredContentUris()) {
+              sb.append("\n");
+              sb.append(uri);
+          }
+      }
+  } else {
+      sb.append("(No content)");
+  }
+  Log.i(TAG, sb.toString());
+  return true;
+}
+</pre>
+
+<h2 id="further-optimization">
+  Further Optimizing Your App
+</h2>
+
+<p>
+  Optimizing your apps to run on low-memory devices, or in low-memory
+  conditions, can improve performance and user experience. Removing
+  dependencies on background services and statically-registered implicit
+  broadcast receivers can help your app run better on such devices. Although
+  Android N takes steps to reduce some of these issues, it is
+  recommended that you optimize your app to run without the use of these
+  background processes entirely.
+</p>
+
+<p>
+  Android N introduces some additional <a href=
+  "{@docRoot}tools/help/adb.html">Android Debug Bridge (ADB)</a> commands that
+  you can use to test app behavior with those background processes disabled:
+</p>
+
+<ul>
+  <li>To simulate conditions where implicit broadcasts and background services
+  are unavailable, enter the following command:
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND ignore}
+</pre>
+  </li>
+
+  <li>To re-enable implicit broadcasts and background services, enter the
+  following command:
+  </li>
+
+  <li style="list-style: none; display: inline">
+<pre class="no-pretty-print">
+{@code $ adb shell cmd appops set RUN_IN_BACKGROUND allow}
+</pre>
+  </li>
+</ul>
\ No newline at end of file
diff --git a/docs/html/preview/features/data-saver.jd b/docs/html/preview/features/data-saver.jd
new file mode 100644
index 0000000..ba8f165
--- /dev/null
+++ b/docs/html/preview/features/data-saver.jd
@@ -0,0 +1,207 @@
+page.title=Data Saver
+metaDescription=User-enabled data usage optimization.
+page.keywords="android N", "data usage", "metered network"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>
+      In this document
+    </h2>
+
+    <ol>
+      <li>
+        <a href="#status">Checking Data Saver Preferences</a>
+      </li>
+
+      <li>
+        <a href="#monitor-changes">Monitoring Changes to Data Saver Preferences</a>
+      </li>
+
+      <li>
+        <a href="#testing">Testing with Android Debug Bridge Commands</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  Over the life of a smartphone, the cost of a cellular data plan can easily
+  exceed the cost of the device itself. In the N Developer Preview, users can
+  enable Data Saver on a device-wide basis in order to use less data, whether
+  roaming, near the end of the billing cycle, or on a small prepaid data pack.
+</p>
+
+<p>
+  When a user enables Data Saver in <strong>Settings</strong> and the device is
+  on a metered network, the system blocks background data usage and signals
+  apps to use less data in the foreground wherever possible. Users can
+  whitelist specific apps to allow background metered data usage even when Data
+  Saver is turned on.
+</p>
+
+<p>
+  The N Developer Preview extends the {@link android.net.ConnectivityManager}
+  API to provide apps with a way to <a href="#status">retrieve the user’s Data
+  Saver preferences</a> and <a href="#monitor-changes">monitor preference
+  changes</a>. It is considered good practice for apps to check whether the
+  user has enabled Data Saver and make an effort to limit foreground and
+  background data usage.
+</p>
+
+<h2 id="status">
+  Checking Data Saver Preferences
+</h2>
+
+<p>
+  In the N Developer Preview, apps can use the {@link
+  android.net.ConnectivityManager} API to determine what data usage
+  restrictions are being applied. The {@code getRestrictBackgroundStatus()}
+  method returns one of the following values:
+</p>
+
+<dl>
+  <dt>
+    {@code RESTRICT_BACKGROUND_STATUS_DISABLED}
+  </dt>
+
+  <dd>
+    Data Saver is disabled.
+  </dd>
+
+  <dt>
+    {@code RESTRICT_BACKGROUND_STATUS_ENABLED}
+  </dt>
+
+  <dd>
+    The user has enabled Data Saver for this app. Apps should make an effort to limit data
+    usage in the foreground and gracefully handle restrictions to background
+    data usage.
+  </dd>
+
+  <dt>
+    {@code RESTRICT_BACKGROUND_STATUS_WHITELISTED}
+  </dt>
+
+  <dd>
+    The user has enabled Data Saver but the app is whitelisted. Apps should
+    still make an effort to limit foreground and background data usage.
+  </dd>
+</dl>
+
+<p>
+  It is considered good practice to limit data usage whenever the device is
+  connected to a metered network, even if Data Saver is disabled or the app
+  is whitelisted. The following sample code uses {@link
+  android.net.ConnectivityManager#isActiveNetworkMetered
+  ConnectivityManager.isActiveNetworkMetered()} and {@code
+  ConnectivityManager.getRestrictBackgroundStatus()} to determine how much data
+  the app should use:
+</p>
+
+<pre>
+ConnectivityManager connMgr = (ConnectivityManager)
+        getSystemService(Context.CONNECTIVITY_SERVICE);
+// Checks if the device is on a metered network
+if (connMgr.isActiveNetworkMetered()) {
+  // Checks user’s Data Saver settings.
+  switch (connMgr.getRestrictBackgroundStatus()) {
+    case RESTRICT_BACKGROUND_STATUS_ENABLED:
+    // Background data usage is blocked for this app. Wherever possible,
+    // the app should also use less data in the foreground.
+
+    case RESTRICT_BACKGROUND_STATUS_WHITELISTED:
+    // The app is whitelisted. Wherever possible,
+    // the app should use less data in the foreground and background.
+
+    case RESTRICT_BACKGROUND_STATUS_DISABLED:
+    // Data Saver is disabled. Since the device is connected to a
+    // metered network, the app should use less data wherever possible.
+  }
+} else {
+  // The device is not on a metered network.
+  // Use data as required to perform syncs, downloads, and updates.
+}
+</pre>
+
+<h2 id="monitor-changes">
+  Monitoring Changes to Data Saver Preferences
+</h2>
+
+<p>
+  Apps can monitor changes to Data Saver preferences by creating a {@link
+  android.content.BroadcastReceiver} to listen for {@code
+  ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED} ({@code
+  "android.net.conn.RESTRICT_BACKGROUND_CHANGED"}) and dynamically registering
+  the receiver with {@link android.content.Context#registerReceiver
+  Context.registerReceiver()}. When an app receives this broadcast, it should
+  <a href="#status">check if the new Data Saver preferences affect its
+  permissions</a> by calling {@code
+  ConnectivityManager.getRestrictBackgroundStatus()}.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> The system only sends this broadcast to apps that
+  dynamically register for them with {@link
+  android.content.Context#registerReceiver Context.registerReceiver()}. Apps
+  that register to receive this broadcast in their manifest will not receive
+  them.
+</p>
+
+<h2 id="testing">
+  Testing with Android Debug Bridge Commands
+</h2>
+
+The <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (ADB)</a>
+provides a few commands that you can use to check and configure network
+permissions:
+
+<dl>
+  <dt>
+    <code>$ adb shell dumpsys netpolicy</code>
+  </dt>
+
+  <dd>
+    Generates a report that includes the current global background network
+    restriction setting, package UIDs currently on a whitelist, and the network
+    permissions of other known packages.
+  </dd>
+
+  <dt>
+    <code>$ adb shell cmd netpolicy</code>
+  </dt>
+
+  <dd>
+    Displays a full list of Network Policy Manager (netpolicy) commands.
+  </dd>
+
+  <dt>
+    <code>$ adb shell cmd netpolicy set restrict-background
+    &lt;boolean&gt;</code>
+  </dt>
+
+  <dd>
+    Enables or disables Data Saver mode when passing <code>true</code> or
+    <code>false</code>, respectively.
+  </dd>
+
+  <dt>
+    <code>$ adb shell cmd netpolicy add restrict-background-whitelist
+    &lt;UID&gt;</code>
+  </dt>
+
+  <dd>
+    Adds the specified package UID to the whitelist to allow background metered
+    data usage.
+  </dd>
+
+  <dt>
+    <code>$ adb shell cmd netpolicy remove restrict-background-whitelist
+    &lt;UID&gt;</code>
+  </dt>
+
+  <dd>
+    Removes the specified package UID from the whitelist to block background
+    metered data usage while Data Saver is enabled.
+  </dd>
+</dl>
\ No newline at end of file
diff --git a/docs/html/preview/features/direct-boot.jd b/docs/html/preview/features/direct-boot.jd
new file mode 100644
index 0000000..aefa4dc
--- /dev/null
+++ b/docs/html/preview/features/direct-boot.jd
@@ -0,0 +1,180 @@
+page.title=Direct Boot
+page.keywords=preview,sdk,direct boot
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>In this document</h2>
+  <ol>
+    <li><a href="#run">Requesting Access to Run During Direct Boot</a></li>
+    <li><a href="#access">Accessing Device Encrypted Storage</a></li>
+    <li><a href="#notification">Getting Notified of User Unlock</a></li>
+    <li><a href="#migrating">Migrating Existing Data</a></li>
+    <li><a href="#testing">Testing Your Encryption Aware App</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Android N runs in a secure, <i>Direct Boot</i> mode
+when the device has been powered on but the user has not unlocked the
+device. To support this, the system provides two storage locations for data:</p>
+
+<ul>
+<li><i>Credential encrypted storage</i>, which is the default storage location
+and only available after the user has unlocked the device.</li>
+<li><i>Device encrypted storage</i>, which is a storage location available both
+during Direct Boot mode and after the user has unlocked the device.</li>
+</ul>
+
+<p>By default, apps do not run during Direct Boot mode.
+If your app needs to take action during Direct Boot mode, you can register
+app components that should be run during this mode. Some common use cases
+for apps needing to run during Direct Boot mode include:</p>
+
+<ul>
+<li>Apps that have scheduled notifications, such as alarm clock
+apps.</li>
+<li>Apps that provide important user notifications, like SMS apps.</li>
+<li>Apps that provide accessibility services, like Talkback.</li>
+</ul>
+
+<p>If your app needs to access data while running in Direct Boot mode, use
+device encrypted storage. Device encrypted storage contains data
+encrypted with a key that is only available after a device has performed a
+successful verified boot.</p>
+
+<p>For data that should be encrypted with a key associated with user
+credentials, such as a PIN or password, use credential encrypted storage.
+Credential encrypted storage is only available after the user has successfully
+unlocked the device, up until when the user restarts the device again. If the
+user enables the lock screen after unlocking the device, this doesn't lock
+credential encrypted storage.</p>
+
+<h2 id="run">Requesting Access to Run During Direct Boot</h2>
+
+<p>Apps must register their components with the system before they
+can run during Direct Boot mode or access device encrypted
+storage. Apps register with the system by marking components as
+<i>encryption aware</i>. To mark your component as encryption aware, set the
+<code>android:encryptionAware</code> attribute to true in your manifest.<p>
+
+<p>Encryption aware components can register to receive a
+<code>LOCKED_BOOT_COMPLETED</code> broadcast message from the
+system when the device has been restarted. At this point device encrypted
+storage is available, and your component can execute tasks that need to be
+run during Direct Boot mode, such as triggering a scheduled alarm.</p>
+
+<p>The following code snippet is an example of how to register a
+{@link android.content.BroadcastReceiver} as encryption aware, and add an
+intent filter for <code>LOCKED_BOOT_COMPLETED</code>, in the app manifest:</p>
+
+<pre>
+&lt;receiever
+  android:encryptionAware="true" &gt;
+  ...
+  &lt;intent-filter&gt;
+    &lt;action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /&gt;
+  &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>Once the user has unlocked the device, all components can access both the
+device encrypted storage as well as credential encrypted storage.</p>
+
+<h2 id="access">Accessing Device Encrypted Storage</h2>
+
+<p>To access device encrypted storage, create a second
+{@link android.content.Context} instance by calling
+<code>Context.createDeviceEncryptedStorageContext()</code>. All storage API
+calls made using this context access the device encrypted storage. The
+following example accesses the device encrypted storage and opens an existing
+app data file:</p>
+
+<pre>
+Context directBootContext = Context.createDeviceEncryptedStorageContext();
+// Access appDataFilename that lives in device encrypted storage
+FileInputStream inStream = directBootContext.openFileInput(appDataFilename);
+// Use inStream to read content...
+</pre>
+
+<p>Use device encrypted storage only for
+information that must be accessible during Direct Boot mode.
+Don't use device encrypted storage as a general-purpose encrypted store.
+For private user information, or encrypted data that isn't needed during
+Direct Boot mode, use credential encrypted storage.</p>
+
+<h2 id="notification">Getting Notified of User Unlock</h2>
+
+<p>Once the user unlocks the device after restart, your app can switch to
+accessing credential encrypted storage and use regular system services that
+depend on user credentials.</p>
+
+<p>To get notified when the user unlocks the device after a reboot,
+register a {@link android.content.BroadcastReceiver} from a running component
+to listen for the <code>ACTION_USER_UNLOCKED</code> message. Or, you can
+receive the existing {@link android.content.Intent#ACTION_BOOT_COMPLETED
+ACTION_BOOT_COMPLETED} message, which now indicates the device has booted and
+the user has unlocked the device.</p>
+
+<p>You can directly query if the user has unlocked the device by calling
+<code>UserManager.isUserUnlocked()</code>.</p>
+
+<h2 id="migrating">Migrating Existing Data</h2>
+
+<p>If a user updates their device to use Direct Boot mode, you might have
+existing data that needs to get migrated to device encrypted storage. Use
+<code>Context.migrateSharedPreferencesFrom()</code> and
+<code>Context.migrateDatabaseFrom()</code> to migrate preference and database
+data between credential encrypted storage and device encrypted storage.</p>
+
+<p>Use your best judgment when deciding what data to migrate from credential
+encrypted storage to device encrypted storage. You should not migrate
+private user information, such as passwords or authorization tokens, to
+device encrypted storage. In some scenarios, you might need to manage
+separate sets of data in the two encrypted stores.</p>
+
+<h2 id="testing">Testing Your Encryption Aware App</h2>
+
+<p>Test your encryption aware app using the new Direct Boot mode. There are
+two ways to enable Direct Boot.</p>
+
+<p class="caution"><strong>Caution:</strong> Enabling Direct Boot
+wipes all user data on the device.</p>
+
+<p>On supported devices with Android N installed, enable
+Direct Boot by doing one of the following:</p>
+
+<ul>
+<li>On the device, enable <b>Developer options</b> if you haven't already by
+going to <b>Settings &gt; About phone</b>, and tapping <b>Build number</b>
+seven times. Once the developer options screen is available, go to
+<b>Settings &gt; Developer options</b> and select
+<b>Convert to file encryption</b>.</li>
+<li>Use the following adb shell commands to enable Direct Boot mode:
+<pre class="no-pretty-print">
+$ adb reboot-bootloader
+$ fastboot --wipe-and-use-fbe
+</pre>
+</li>
+</ul>
+
+<p>An emulated Direct Boot mode is also available, in case you need to switch
+modes on your test devices. Emulated mode should only be used during
+development and may cause data loss. To enable emulated Direct Boot mode,
+set a lock pattern on the device, choose "No thanks" if prompted for a
+secure start-up screen when setting a lock pattern, and then use the
+following adb shell command:</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe true
+</pre>
+
+<p>To turn off emulated Direct Boot mode, use the following command:</p>
+
+<pre class="no-pretty-print">
+$ adb shell sm set-emulate-fbe false
+</pre>
+
+<p>Using these commands causes the device to reboot.</p>
diff --git a/docs/html/preview/features/icu4j-framework.jd b/docs/html/preview/features/icu4j-framework.jd
new file mode 100644
index 0000000..6698194
--- /dev/null
+++ b/docs/html/preview/features/icu4j-framework.jd
@@ -0,0 +1,162 @@
+page.title=ICU4J Android Framework APIs
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document:</h2>
+<ol>
+    <li><a href="#relation">Relationship to ICU4J</a></li>
+    <li><a href="#migration">Migrating to android.icu APIs from ICU4J </a></li>
+    <li><a href="#licence">Licensing</a></li>
+</ol>
+
+<h2>See Also</h2>
+<ol>
+  <li>
+    <a class="external-link" href=
+    "http://userguide.icu-project.org">Documentation for ICU4J</a>
+  </li>
+
+  <li>
+    <a class="external-link" href=
+    "http://site.icu-project.org/#TOC-What-is-ICU-">Latest standards supported
+    by ICU4J</a>
+  </li>
+</ol>
+</div>
+</div>
+
+<p>
+  ICU4J is an open-source, widely used set of Java libraries providing Unicode
+  and globalization support for software applications. Android N
+  exposes a subset of the ICU4J APIs in the Android framework for app developers
+  to use under the {@code android.icu} package. These APIs use
+  localization data present on the device. As a result, you can reduce your APK
+  footprint by not compiling the ICU4J libraries into your APK; instead, you can
+  simply call out to them in the framework. (In this case, you may want to provide
+  <a href="{@docRoot}google/play/publishing/multiple-apks.html">multiple versions
+  of your APK</a>, so users running versions of Android lower than Android N
+  can download a version of the app that contains the ICU4J libraries.)
+</p>
+
+<p>
+  This document begins by providing some basic information on the minimum
+  Android API levels required to support these libraries. It then explains what
+  you need to know about the Android-specific implementation of ICU4J. Finally,
+  it tells you how to use the ICU4J APIs in the Android framework.
+</p>
+
+<h2 id="relation">Relationship to ICU4J</h2>
+
+<p>
+  Android N exposes a subset of the ICU4J APIs via the
+  <code>android.icu</code> package, rather than <code>com.ibm.icu</code>. The
+  Android framework may choose not to
+  expose ICU4J APIs for various reasons; for example, Android N does not expose
+  some deprecated APIs or those that the ICU team have not yet declared as
+  stable. As the ICU team deprecates APIs in the future, Android will also mark
+  them as deprecated but will continue to include them.
+</p>
+
+<p class="table-caption"><strong>Table 1.</strong> ICU and CLDR versions used
+  in Android N.</p>
+<table>
+<tr>
+<th>Android API level</th>
+<th>ICU version</th>
+<th>CLDR version</th>
+</tr>
+<tr>
+<td>Android N</td>
+<td>56</td>
+<td>28</td>
+</tr>
+</table>
+
+<p>Here are a few important things to note:</p>
+
+<ul>
+<li>The ICU4J Android framework APIs do not include all the ICU4J APIs.</li>
+<li>NDK developers should know that Android ICU4C is not supported.</li>
+<li>The APIs in the Android framework do not replace Android’s support for
+<a href="{@docRoot}guide/topics/resources/localization.html">localizing with
+resources</a>.</li>
+</ul>
+
+<h2 id="migration">Migrating to the android.icu package from com.ibm.icu</h2>
+
+<p>
+  If you are already using the ICU4J APIs in your app, and the
+  <code>android.icu</code> APIs meet your requirements, then migrating to
+  the framework APIs requires you to change your Java imports
+  from <code>com.ibm.icu</code> to <code>android.icu</code>. You may then
+  remove your own copy of ICU4J files from the APK.
+</p>
+
+<p class="note">
+  <b>Note</b>: The ICU4J framework APIs use the {@code android.icu}
+  namespace instead of {@code com.ibm.icu}. This is to avoid namespace
+  conflicts in APKs that contain their own {@code com.ibm.icu} libraries.
+</p>
+
+<h3 id="migrate-from-android">
+  Migrating to android.icu APIs from other Android SDK APIs
+</h3>
+
+<p>
+  Some classes in the <code>java</code> and<code>android</code> packages have
+  equivalents to those found in ICU4J. However, ICU4J often provides broader
+  support for standards and languages.
+</p>
+<p>Here are some examples to get you started:</p>
+<table>
+<tr>
+<th>Class</th>
+<th>Alternatives</th>
+</tr>
+<tr>
+<td><code>java.lang.Character</code> </td>
+<td><code>android.icu.lang.UCharacter</code> </td>
+</tr>
+<tr>
+<td><code>java.text.BreakIterator</code> </td>
+<td><code>android.icu.text.BreakIterator</code> </td>
+</tr>
+<tr>
+<td><code>java.text.DecimalFormat</code> </td>
+<td><code>android.icu.text.DecimalFormat</code> </td>
+</tr>
+<tr>
+<td><code>java.util.Calendar</code></td>
+<td>
+<code>android.icu.util.Calendar</code></td>
+</tr>
+<tr>
+<td><code>android.text.BidiFormatter</code>
+ </td>
+<td><code>android.icu.text.Bidi</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateFormat</code>
+ </td>
+<td><code>android.icu.text.DateFormat</code>
+ </td>
+</tr>
+<tr>
+<td><code>android.text.format.DateUtils</code> </td>
+<td><code>android.icu.text.DateFormat</code>
+<code>android.icu.text.RelativeDateTimeFormatter</code>
+</td>
+</tr>
+</table>
+
+<h2 id="licence">Licensing</h2>
+
+<p>
+  ICU4J is released under the ICU license. For details, see the <a class=
+  "external-link" href=
+  "http://userguide.icu-project.org/icufaq#TOC-How-is-the-ICU-licensed-">ICU
+  User Guide.</a>
+</p>
diff --git a/docs/html/preview/features/images/app-permissions-screen.png b/docs/html/preview/features/images/app-permissions-screen.png
deleted file mode 100644
index 679b7ad..0000000
--- a/docs/html/preview/features/images/app-permissions-screen.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/preview/features/images/app-permissions-screen_2x.png b/docs/html/preview/features/images/app-permissions-screen_2x.png
deleted file mode 100644
index e3eb13f..0000000
--- a/docs/html/preview/features/images/app-permissions-screen_2x.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/preview/features/multi-window.jd b/docs/html/preview/features/multi-window.jd
new file mode 100644
index 0000000..0fe5ecf
--- /dev/null
+++ b/docs/html/preview/features/multi-window.jd
@@ -0,0 +1,595 @@
+page.title=Multi-Window Support
+page.metaDescription=New support in Android N for showing more than one app at a time.
+page.keywords="multi-window", "android N", "split screen", "free-form"
+
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+      <ol>
+        <li><a href="#overview">Overview</a></li>
+        <li><a href="#lifecycle">Multi-Window Lifecycle</a></li>
+        <li><a href="#configuring">Configuring Your App for Multi-Window
+              Mode</a></li>
+        <li><a href="#running">Running Your App in Multi-Window Mode</a></li>
+        <li><a href="#testing">Testing Your App's Multi-Window Support</a></li>
+      </ol>
+    <h2>See Also</h2>
+      <ol>
+        <li><a class="external-link"
+          href="https://github.com/googlesamples/android-MultiWindowPlayground">Multi-Window
+          Playground sample app</a></li>
+        <li><a class="external-link"
+          href="https://medium.com/google-developers/5-tips-for-preparing-for-multi-window-in-android-n-7bed803dda64"
+          >Five Tips for Preparing for Multi-Window in Android N</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  Android N adds support for displaying more than one app at the
+  same time. On handheld devices, two apps can run side-by-side or
+  one-above-the-other in <em>split-screen</em> mode. On TV devices, apps can
+  use <em>picture-in-picture</em> mode to continue video playback while users
+  are interacting with another app.
+</p>
+
+<p>
+  If you build your app with the N Preview SDK, you can configure how your app
+  handles multi-window display. For example, you can specify your activity's
+  minimum allowable dimensions. You can also disable multi-window display for
+  your app, ensuring that the system only shows your app in full-screen
+  mode.
+</p>
+
+<h2 id="overview">Overview</h2>
+
+<p>
+  Android N allows several apps to share the screen at once. For
+  example, a user could split the screen, viewing a web page on the left side
+  while composing an email on the right side. The user experience depends on
+  the device:
+</p>
+
+<ul>
+  <li>Handheld devices running Android N offer split-screen
+  mode. In this mode, the system fills the screen with two apps, showing them
+  either side-by-side or one-above-the-other. The user can drag the dividing
+  line separating the two to make one app larger and the other smaller.
+  </li>
+
+  <li>On Nexus Player running Android N, apps can put themselves
+  in <a href="picture-in-picture.html">picture-in-picture mode</a>, allowing
+  them to continue showing content while the user browses or interacts with
+  other apps.
+  </li>
+
+  <li>Manufacturers of larger devices can choose to enable freeform
+  mode, in which the user can freely resize each activity. If the
+  manufacturer enables this feature, the device offers freeform mode in addition
+  to split-screen mode.
+  </li>
+</ul>
+
+<img src="{@docRoot}preview/images/mw-splitscreen.png" alt="" width="650"
+    srcset="{@docRoot}preview/images/mw-splitscreen.png 1x,
+    {@docRoot}preview/images/mw-splitscreen_2x.png 2x,"
+    id="img-split-screen" />
+<p class="img-caption">
+  <strong>Figure 1.</strong> Two apps running side-by-side in split-screen mode.
+</p>
+
+<p>
+  The user can switch into multi-window mode in the following ways:
+</p>
+
+<ul>
+  <li>If the user opens the <a href="{@docRoot}guide/components/recents.html">Overview
+  screen</a> and performs a long press on an
+  activity title, they can drag that activity to a highlighted portion of the
+  screen to put the activity in multi-window mode.
+  </li>
+
+  <li>If the user performs a long press on the Overview button, the device puts
+  the current activity in multi-window mode, and opens the Overview screen to
+  let the user choose another activity to share the screen.
+  </li>
+</ul>
+
+<p>
+  Users can <a href="{@docRoot}guide/topics/ui/drag-drop.html">drag and
+  drop</a> data from one activity to another while the activities are sharing
+  the screen. (Previously, users could only drag and drop data within a single
+  activity.)
+</p>
+
+<h2 id="lifecycle">Multi-Window Lifecycle</h2>
+
+<p>
+  Multi-window mode does not change the <a href=
+  "{@docRoot}training/basics/activity-lifecycle/index.html">activity
+  lifecycle</a>.
+</p>
+
+<p>
+  In multi-window mode, only the activity the user has most recently interacted
+  with is active at a given time. This activity is considered <em>topmost</em>.
+  All other activities are in the paused state, even if they are visible.
+  However, the system gives these paused-but-visible activities higher priority
+  than activities that are not visible. If the user interacts with one of the
+  paused activities, that activity is resumed, and the previously topmost
+  activity is paused.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> In multi-window mode, an app can be in the paused
+  state and still be visible to the user. An app might need to continue its
+  activities even while paused. For example, a video-playing app that is in
+  paused mode but is visible should continue showing its video. For this
+  reason, we recommend that activities that play video <em>not</em> pause the
+  video in their {@link android.app.Activity#onPause onPause()} handlers.
+  Instead, they should pause video in {@link android.app.Activity#onStop
+  onStop()}, and resume playback in {@link android.app.Activity#onStart
+  onStart()}.
+</p>
+
+<p>
+  When the user puts an app into multi-window mode, the system notifies the
+  activity of a configuration change, as specified in <a href=
+  "{@docRoot}guide/topics/resources/runtime-changes.html">Handling Runtime
+  Changes</a>. Essentially, this change has the same activity-lifecycle
+  implications as when the system notifies the app that the device has switched
+  from portrait to landscape mode, except that the device dimensions are
+  changed instead of just being swapped. As discussed in <a href=
+  "{@docRoot}guide/topics/resources/runtime-changes.html">Handling Runtime
+  Changes</a>, your activity can handle the configuration change itself, or it
+  can allow the system to destroy the activity and recreate it with the new
+  dimensions.
+</p>
+
+<p>
+  If the user is resizing a window and makes it larger in either dimension, the
+  system resizes the activity to match the user action and issues <a href=
+  "{@docRoot}guide/topics/resources/runtime-changes.html">runtime changes</a>
+  as needed. If the app lags behind in drawing in newly-exposed areas, the
+  system temporarily fills those areas with the color specified by the {@link
+  android.R.attr#windowBackground windowBackground} attribute or by the default
+  <code>windowBackgroundFallback</code> style attribute.
+</p>
+
+<h2 id="configuring">Configuring Your App for Multi-Window Mode</h2>
+
+<p>
+  If your app targets Android N, you can configure how and
+  whether your app's activities support multi-window display. You can set
+  attributes in your manifest to control both size and layout.
+  A root activity's attribute settings apply to all activities
+  within its task stack. For example, if the root activity has
+  <code>android:resizeableActivity</code> set to true, then all activities
+  in the task stack are resizeable.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> If you build a multi-orientation app with a version of the
+  SDK lower than Android N, and the user uses the app in
+  multi-window mode, the system forcibly resizes the app. The system presents a
+  dialog box warning the user that the app may behave unexpectedly. The system
+  does <em>not</em> resize fixed-orientation apps; if
+  the user attempts to open a fixed-orientation app under multi-window mode,
+  the app takes over the whole screen.
+</p>
+
+<h4 id="resizeableActivity">android:resizeableActivity</h4>
+<p>
+  Set this attribute in your manifest's <code>&lt;activity&gt;</code> or
+  <code>&lt;application&gt;</code> node to enable or disable multi-window
+  display:
+</p>
+
+<pre>
+android:resizeableActivity=["true" | "false"]
+</pre>
+
+<p>
+  If this attribute is set to true, the activity can be launched in
+  split-screen and freeform modes. If the attribute is set to false, the
+  activity does not support multi-window mode. If this value is false, and the
+  user attempts to launch the activity in multi-window mode, the activity takes
+  over the full screen.
+</p>
+
+<p>
+  If your app targets Android N, but you do not specify a value
+  for this attribute, the attribute's value defaults to true.
+</p>
+
+<h4 id="supportsPictureInPicture">android:supportsPictureInPicture</h4>
+
+<p>
+  Set this attribute in your manifest's <code>&lt;activity&gt;</code> node to
+  indicate whether the activity supports picture-in-picture display. This
+  attribute is ignored if <code>android:resizeableActivity</code> is false.
+</p>
+
+<pre>
+android:supportsPictureInPicture=["true" | "false"]
+</pre>
+
+<h3 id="layout">Layout attributes</h3>
+
+<p>
+  With Android N, the <code>&lt;layout&gt;</code> manifest element
+  supports several attributes that affect how an activity behaves in
+  multi-window mode:
+</p>
+
+<dl>
+  <dt>
+    <code>android:defaultWidth</code>
+  </dt>
+
+  <dd>
+    Default width of the activity when launched in freeform mode.
+  </dd>
+
+  <dt>
+    <code>android:defaultHeight</code>
+  </dt>
+
+  <dd>
+    Default height of the activity when launched in freeform mode.
+  </dd>
+
+  <dt>
+    <code>android:gravity</code>
+  </dt>
+
+  <dd>
+    Initial placement of the activity when launched in freeform mode. See the
+    {@link android.view.Gravity} reference for suitable values.
+  </dd>
+
+  <dt>
+    <code>android:minimalSize</code>
+  </dt>
+
+  <dd>
+    Minimum height and minimum width for the activity in both split-screen
+    and freeform modes. If the user moves the divider in split-screen mode
+    to make an activity smaller than the specified minimum, the system crops
+    the activity to the size the user requests.
+  </dd>
+</dl>
+
+<p>
+  For example, the following code shows how to specify an activity's default
+  size and location, and its minimum size, when the activity is displayed in
+  freeform mode:
+</p>
+
+<pre>
+&lt;activity android:name=".MyActivity"&gt;
+    &lt;layout android:defaultHeight="500dp"
+          android:defaultWidth="600dp"
+          android:gravity="top|end"
+          android:minimalSize="450dp" /&gt;
+&lt;/activity&gt;
+</pre>
+
+<h2 id="running">Running Your App in Multi-Window Mode</h2>
+
+<p>
+  Android N offers new functionality to support apps that can run
+  in multi-window mode.
+</p>
+
+<h3 id="disabled-features">Disabled features in multi-window mode</h3>
+
+<p>
+  Certain features are disabled or ignored when a device is in multi-window
+  mode, because they don’t make sense for an activity which may be sharing the
+  device screen with other activities or apps. Such features include:
+
+<ul>
+  <li>Some <a href="{@docRoot}training/system-ui/index.html">System UI</a>
+  customization options are disabled; for example, apps cannot hide the status
+  bar if they are not running in full-screen mode.
+  </li>
+
+  <li>The system ignores changes to the <code><a href=
+  "{@docRoot}guide/topics/manifest/activity-element.html#screen"
+  >android:screenOrientation</a></code> attribute.
+  </li>
+</ul>
+
+<h3 id="change-notification">Multi-window change notification and querying</h3>
+
+<p>
+  The following new methods have been added to the {@link android.app.Activity}
+  class to support multi-window display. For details on each method, see the
+  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK Reference</a>.
+</p>
+
+<dl>
+  <dt>
+    <code>Activity.inMultiWindow()</code>
+  </dt>
+
+  <dd>
+    Call to find out if the activity is in multi-window mode.
+  </dd>
+
+  <dt>
+    <code>Activity.inPictureInPicture()</code>
+  </dt>
+
+  <dd>
+    Call to find out if the activity is in picture-in-picture mode.
+
+    <p class="note">
+      <strong>Note:</strong> Picture-in-picture mode is a special case of
+      multi-window mode. If <code>myActivity.inPictureInPicture()</code>
+      returns true, then <code>myActivity.inMultiWindow()</code> also returns
+      true.
+    </p>
+  </dd>
+
+  <dt>
+    <code>Activity.onMultiWindowChanged()</code>
+  </dt>
+
+  <dd>
+    The system calls this method whenever the activity goes into or out of
+    multi-window mode. The system passes the method a value of true if the
+    activity is entering multi-window mode, and false if the activity is
+    leaving multi-window mode.
+  </dd>
+
+  <dt>
+    <code>Activity.onPictureInPictureChanged()</code>
+  </dt>
+
+  <dd>
+    The system calls this method whenever the activity goes into or out of
+    picture-in-picture mode. The system passes the method a value of true if
+    the activity is entering picture-in-picture mode, and false if the activity
+    is leaving picture-in-picture mode.
+  </dd>
+</dl>
+
+<p>
+  There are also {@link android.app.Fragment} versions of each of these
+  methods, for example <code>Fragment.inMultiWindow()</code>.
+</p>
+
+<h3 id="entering-pip">Entering picture-in-picture mode</h3>
+
+<p>
+  To put an activity in picture-in-picture mode, call the new method
+  <code>Activity.enterPictureInPicture()</code>. This method has no effect if
+  the device does not support picture-in-picture mode. For more information,
+  see the <a href="picture-in-picture.html">Picture-in-Picture</a> documentation.
+</p>
+
+<h3 id="launch">Launch New Activities in Multi-Window Mode</h3>
+
+<p>
+  When you launch a new activity, you can hint to the system that the new
+  activity should be displayed adjacent to the current one, if possible. To do
+  this, use the flag
+  <code>Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT</code>. Passing
+  this flag requests the following behavior:
+</p>
+
+<ul>
+  <li>If the device is in split-screen mode, the system attempts to create the
+  new activity next to the activity that launched it, so the two activities
+  share the screen. The system is not guaranteed to be able to do this, but it
+  makes the activities adjacent if possible.
+  </li>
+
+  <li>If the device is not in split-screen mode, this flag has no effect.
+  </li>
+</ul>
+
+<p>
+  If a device is in freeform mode and you are launching a new activity, you can
+  specify the new activity's dimensions and screen location by calling
+  <code>ActivityOptions.setLaunchBounds()</code>. This method has no effect if
+  the device is not in multi-window mode.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> If you launch an activity within a task stack, the
+  activity replaces the activity on the screen, inheriting all of its
+  multi-window properties. If you want to launch the new activity as a separate
+  window in multi-window mode, you must launch it in a new task stack.
+</p>
+
+<h3 id="dnd">Supporting drag and drop</h3>
+
+<p>
+  Users can <a href="{@docRoot}guide/topics/ui/drag-drop.html">drag and
+  drop</a> data from one activity to another while the two activities are
+  sharing the screen. (Previously, users could only drag and drop data within a
+  single activity.) For this reason, you may want to add drag and drop
+  functionality to your app if your app does not currently support it.
+</p>
+
+<p>
+  The N Preview SDK extends the <a href=
+  "{@docRoot}reference/android/view/package-summary.html"><code>android.view</code></a>
+  package to support cross-app drag and drop. For details on the following
+  classes and methods, see the <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N
+  Preview SDK Reference</a>.
+</p>
+
+<dl>
+  <dt>
+    <code>android.view.DropPermissions</code>
+  </dt>
+
+  <dd>
+    Token object responsible for specifying the permissions granted to the app
+    that receives a drop.
+  </dd>
+
+  <dt>
+    <code>View.startDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    New alias for {@link android.view.View#startDrag View.startDrag()}. To
+    enable cross-activity drag and drop, pass the new flag
+    <code>View.DRAG_FLAG_GLOBAL</code>. If you need to give URI permissions to
+    the recipient activity, pass the new flags
+    <code>View.DRAG_FLAG_GLOBAL_URI_READ</code> or
+    <code>View.DRAG_FLAG_GLOBAL_URI_WRITE</code>, as appropriate.
+  </dd>
+
+  <dt>
+    <code>View.cancelDragAndDrop()</code>
+  </dt>
+
+  <dd>
+    Cancels a drag operation currently in progress. Can only be called by the
+    app that originated the drag operation.
+  </dd>
+
+  <dt>
+    <code>View.updateDragShadow()</code>
+  </dt>
+
+  <dd>
+    Replaces the drag shadow for a drag operation currently in progress. Can
+    only be called by the app that originated the drag operation.
+  </dd>
+
+  <dt>
+    <code>Activity.requestDropPermissions()</code>
+  </dt>
+
+  <dd>
+    Requests the permissions for the content URIs passed with the {@link
+    android.content.ClipData} contained in a {@link android.view.DragEvent}.
+  </dd>
+</dl>
+
+<h2 id="testing">Testing Your App's Multi-Window Support</h2>
+
+<p>
+  Whether or not you update your app for Android N, you should
+  verify how it behaves in multi-window mode in case a user tries to launch it
+  in multiwindow mode on a device running Android N.
+</p>
+
+<h3 id="configuring">Configuring a Test Device</h3>
+
+<p>
+  If you install Android N on a device, split-screen mode is
+  automatically supported.
+</p>
+
+<h3 id="test-non-n">If your app was not built with the N Preview SDK</h3>
+
+<p>
+  If you did not build your app with the N Preview SDK and the user attempts to use
+  the app in multi-window mode, the system forcibly resizes the app unless the app
+  declares a fixed orientation.
+</p>
+
+<p>
+  If your app does not declare a fixed orientation, you should launch your app
+  on a device running Android N and attempt to put the app in
+  split-screen mode. Verify that the user experience is
+  acceptable when the app is forcibly resized.
+</p>
+
+<p>
+  If the app declares a fixed orientation, you should attempt to put the app in
+  multi-window mode. Verify that when you do so, the app remains
+  in full-screen mode.
+</p>
+
+<h3 id="test-mw">If you support multi-window mode</h3>
+
+<p>
+  If you built your app with the N Preview SDK and have not disabled
+  multi-window support, verify the following behavior under both split-screen
+  and freeform modes.
+</p>
+
+<ul>
+  <li>Launch the app in full-screen mode, then switch to multi-window mode by
+  long-pressing the Overview button. Verify that the app switches properly.
+  </li>
+
+  <li>Launch the app directly in multi-window mode, and verify that the app
+  launches properly. You can launch an app in multi-window mode by pressing the
+  Overview button, then long-pressing the title bar of your app and dragging it
+  to one of the highlighted areas on the screen.
+  </li>
+
+  <li>Resize your app in split-screen mode by dragging the divider line.
+  Verify that the app resizes without crashing, and that necessary UI elements
+  are visible.
+  </li>
+
+  <li>If you have specified minimum dimensions for your app, attempt to resize
+  the app below those dimensions. Verify that you cannot resize the app to be
+  smaller than the specified minimum.
+  </li>
+
+  <li>Through all tests, verify that your app's performance is acceptable. For
+  example, verify that there is not too long a lag to update the UI after the
+  app is resized.
+  </li>
+</ul>
+
+<h4 id="test-checklist">Testing checklist</h4>
+
+<p>
+  To verify your app's performance in multi-window mode, try the following
+  operations. You should try these operations in both split-screen and
+  multi-window mode, except where otherwise noted.
+</p>
+
+<ul>
+  <li>Enter and leave multi-window mode.
+  </li>
+
+  <li>Switch from your app to another app, and verify that the app behaves
+  properly while it is visible but not active. For example, if your app is
+  playing video, verify that the video continues to play while the user is
+  interacting with another app.
+  </li>
+
+  <li>In split-screen mode, try moving the dividing bar to make your app both
+  larger and smaller. Try these operations in both side-by-side and
+  one-above-the-other configurations. Verify that the app does not crash,
+  essential functionality is visible, and the resize operation doesn't take too
+  long.
+  </li>
+
+  <li>Perform several resize operations in rapid succession. Verify that your
+  app doesn't crash or leak memory. For information about checking your app's
+  memory usage, see <a href="{@docRoot}tools/debugging/debugging-memory.html">
+  Investigating Your RAM Usage</a>.
+  </li>
+
+  <li>Use your app normally in a number of different window configurations, and
+  verify that the app behaves properly. Verify that text is readable, and that
+  UI elements aren't too small to interact with.
+  </li>
+</ul>
+
+<h3 id="test-disabled-mw">If you have disabled multi-window support</h3>
+
+<p>
+  If you disabled multi-window support by setting
+  <code>android:resizableActivity="false"</code>, you should launch your app on
+  a device running Android N and attempt to put the app in
+  freeform and split-screen modes. Verify that when you do so, the app remains
+  in full-screen mode.
+</p>
diff --git a/docs/html/preview/features/multilingual-support.jd b/docs/html/preview/features/multilingual-support.jd
new file mode 100644
index 0000000..ac96452
--- /dev/null
+++ b/docs/html/preview/features/multilingual-support.jd
@@ -0,0 +1,218 @@
+page.title=Language and Locale
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+<h2>In this document:</h2>
+<ol>
+	  <li><a href="#preN">Challenges in Resolving Language Resources</a></li>
+    <li><a href="#postN">Improvements to Resource-Resolution Strategy</a></li>
+    <li><a href="#design">Designing your App to Support Additional
+      Locales</a></li>
+
+</ol>
+
+</div>
+</div>
+
+<p>Android N provides enhanced support for multilingual users,
+allowing them to select multiple locales in settings. Android N
+provides this capability by greatly expanding the number of locales supported
+and changing the way the system resolves resources. The new method of resolving
+resources is more robust and designed to be compatible with existing APKs, but
+you should take extra care to spot any unexpected behavior. For example, you
+should test to make sure that your app defaults to the expected language. Also,
+if your app supports multiple languages, you should ensure that this support works as
+intended. Finally, you should try to ensure that your app gracefully handles
+languages that you didn't explicitly design it to support.</p>
+
+<p>This document starts by explaining the resource resolution strategy prior to
+Android N. Next, it describes Android N's improved
+resource-resolution strategy. Last, it explains how to take advantage of
+the expanded number of locales to support more multilingual users.</p>
+
+<h2 id="preN">Challenges in Resolving Language Resources</h2>
+
+<p>Prior to Android N, Android could not always successfully
+ match app and system locales.</p>
+
+ <p>For example, assume that you have the following situation:</p>
+ <ul>
+ <li>Your app's default language is {@code en_US} (US English), and it also has
+  Spanish strings localized in {@code es_ES}
+  resource files.</li>
+ <li> A device is set to {@code es_MX} </li>
+
+<p>When your Java code refers to strings, the system would load
+strings from the default ({@code en_US}) resource file, even if the app has
+Spanish resources localized under {@code es_ES}. This is because when the system
+ cannot find an exact match, it continues to look for resources by stripping the
+ country code off the locale. Finally, if no match is found, the system falls
+ back to the default, which is {@code en_US}. </p>
+
+
+<p>The system would also default to {@code en_US} if the user chose a language that
+the app didn't support at all, like French. For example:</p>
+
+<p class="table-caption" id="t-resource-res">
+<strong>Table 1.</strong> Resource resolution without an exact locale match.
+</p>
+<table>
+<tbody>
+<tr>
+<th>User Settings</th>
+<th>App Resources</th>
+<th>Resource Resolution</th>
+</tr>
+<tr>
+<td>fr_CH</td>
+<td>
+default (en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+ <td>
+Try fr_CH =&gt; Fail<br>
+Try fr =&gt; Fail<br>
+Use default (en)
+</td>
+ </tr>
+ </tbody>
+</table>
+
+
+<p>In this example, the system displays English strings without
+knowing whether the user can understand English. This behavior is pretty common
+today. Android N should substantially reduce the frequency
+of outcomes like this one.</p>
+
+<h2 id="postN">Improvements to Resource-Resolution Strategy</h2>
+<p>Android N brings more robust resource resolution, and
+finds better fallbacks automatically. However, to speed up resolution and improve
+ maintainability, you should store resources in the most common parent dialect.
+ For example, if you were storing Spanish resources in the {@code es-US} directory
+ before, move them into the {@code es-419} directory, which contains Latin American Spanish.
+ Similarly, if you have resource strings in a folder named {@code en-GB}, rename
+ the folder to {@code en-001} (international English), because the most common
+ parent for <code>en-GB</code> strings is {@code en-001}.
+ The following examples explain why these practices improve performance and
+reliability of resource resolution.</p>
+
+<h3>Resource resolution examples</h3>
+
+<p>With Android N, the case described in <strong>Table 1</strong> is resolved
+differently:</p>
+
+<p class="table-caption" id="t-improved-res">
+<strong>Table 2.</strong> An improved resolution strategy for when there is no
+exact locale match.</p>
+<table>
+<tr>
+<th>User Settings</th>
+<th>App Resources</th>
+<th>Resource Resolution</th>
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+</ol>
+</td>
+<td>
+default (en)<br>
+de_DE<br>
+es_ES<br>
+fr_FR<br>
+it_IT<br>
+</td>
+<td>
+Try fr_CH =&gt; Fail<br>
+Try fr =&gt; Fail<br>
+Try children of fr =&gt; fr_FR<br>
+Use fr_FR
+</td>
+</tr>
+
+</table>
+
+
+<p>Now the user gets French resources instead of English. This example also shows
+ why you should store French strings in {@code fr} rather than {@code fr_FR}
+ for Android N. Here the course of action is to match the closest parent dialect,
+ making resolution faster and more predictable.</p>
+
+<p>In addition to this improved resolution logic, Android now offers more
+ user languages to choose from. Let’s try the above example again with Italian
+ specified as an additional user language, but without app support for French.  </p>
+
+<p class="table-caption" id="t-2d-choice">
+<strong>Table 3.</strong> Resource resolution when the app only matches the
+user's second-preferred locale setting.</p>
+<table>
+<tr>
+<th>User Settings</th>
+<th>App Resources</th>
+<th>Resource Resolution</th>
+
+</tr>
+<tr>
+<td><ol>
+<li> fr_CH</li>
+<li> it_CH</li>
+</ol>
+</td>
+<td>
+default (en)<br>
+de_DE<br>
+es_ES<br>
+it_IT<br>
+</td>
+<td>
+Try fr_CH =&gt; Fail<br>
+Try fr =&gt; Fail<br>
+Try children of fr =&gt; Fail<br>
+Try it_CH =&gt; Fail<br>
+Try it =&gt; Fail<br>
+Try children of it =&gt; it_IT<br>
+Use it_IT
+</td>
+
+</tr>
+
+</table>
+<p>The user still gets a language they understand, even though the app doesn’t
+support French.</p>
+
+
+<h2 id="design">Designing your App to Support Additional Locales</h2>
+<h3>LocaleList API</h3>
+
+<p>Android N adds a new API {@code LocaleList.GetDefault()}
+that lets apps directly query the list of languages a user has specified. This API
+allows you to create more sophisticated
+ app behavior and better-optimized display of content. For example, Search
+  can show results in multiple languages based on user’s settings.  Browser apps
+  can avoid offering to translate pages in a language the user already knows,
+  and keyboard apps can auto-enable all appropriate layouts. </p>
+
+<h3>Formatters</h3>
+
+<p>Up through Android 6.0 (API level 23), Android supported only one or two locales
+ for many common languages
+(en, es, ar, fr, ru). Because there were only a few variants of each language,
+apps could get away with storing some numbers and dates as hard coded strings
+in resource files.  However, with Android's broadened set of supported locales,
+there can be
+significant differences in formats for dates, times, currencies, and similar
+information even within a single locale. Hard-coding your formats can produce a
+confusing experience for end users.  Therefore, when developing for Android N
+make sure to use formatters instead of hard coding numbers and date strings.</p>
+
+<p>A prime example is Arabic, whose support Android N expands from
+one {@code ar_EG} to 27 Arabic locales. These locales can share most resources,
+but some prefer ASCII digits, while others prefer native digits. For example,
+when you want to create a sentence with a digit variable, such as
+"Choose a 4 digit pin", use formatters as shown below:</p>
+
+<pre> format(locale, "Choose a %d-digit PIN", 4)</pre>
diff --git a/docs/html/preview/features/notification-updates.jd b/docs/html/preview/features/notification-updates.jd
new file mode 100644
index 0000000..d3042ad
--- /dev/null
+++ b/docs/html/preview/features/notification-updates.jd
@@ -0,0 +1,334 @@
+page.title=Notifications
+page.tags=notifications
+helpoutsWidget=true
+page.image=/preview/images/notifications-card.png
+
+trainingnavtop=true
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<!-- table of contents -->
+<h2>This document includes</h2>
+<ol>
+  <li><a href="#direct">Direct Reply</a></li>
+  <li><a href="#bundle">Bundled Notifications</a></li>
+  <li><a href="#custom">Custom Views</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>Android N introduces several new APIs that allow apps to post
+notifications that are highly visible and interactive.</p>
+
+<p>Android N extends the existing {@link android.support.v4.app.RemoteInput}
+notification API to support inline replies on handsets. This feature allows users
+ to quickly respond from the notification shade without visiting your app.</p>
+
+<p>
+  Android N also allows you to bundle similar notifications to
+  appear as a single notification. To make this possible, Android N uses the existing {@link
+  android.support.v4.app.NotificationCompat.Builder#setGroup
+  NotificationCompat.Builder.setGroup()} method. Users can expand each of the
+  notifications, and perform actions such as reply and dismiss on each of the
+  notifications, individually from the notification shade.
+</p>
+
+<p>Last, Android N also adds new APIs that allow you to leverage system
+decorations in your app’s customized notification views. These APIs help
+ensure that the notification views share a consistent presentation with
+standard templates.</p>
+
+<p>This document highlights some of the key changes that you should take into
+ account when using the new notification features in your apps.</p>
+
+<h2 id="direct">Direct Reply</h2>
+
+<p>With the Direct Reply feature in Android N, users can quickly
+respond to text messages or update task lists directly within the notification
+interface. On a handheld, the inline reply action appears as an additional button
+ attached to the notification. When a user replies via keyboard, the system attaches
+  the text response to the intent
+    you had specified for the notification action and sends the intent to your
+     handheld app.
+
+
+<img id="fig-reply-button" src="{@docRoot}preview/images/inline-reply.png"
+  srcset="{@docRoot}preview/images/inline-reply.png 1x,
+  {@docRoot}preview/images/inline-reply_2x.png 2x"
+  width="400">
+<p class="img-caption">
+  <strong>Figure 1.</strong> Android N adds the <strong>Reply</strong>
+  action button.
+</p>
+
+<h3>Adding inline reply actions</h3>
+
+<p>To create a notification action that supports direct reply:
+</p>
+
+<ol>
+<li>Create an instance of {@link android.support.v4.app.RemoteInput.Builder}
+  that you can add to your notification
+action. This class's constructor accepts a string that the system uses as the key
+ for the text input. Later, your handheld app uses that key to retrieve the text
+  of the input.
+
+<pre>
+// Key for the string that's delivered in the action's intent
+private static final String KEY_TEXT_REPLY = "key_text_reply";
+String replyLabel = getResources().getString(R.string.reply_label);
+RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
+        .setLabel(replyLabel)
+        .build();
+</pre>
+</li>
+<li>Attach the {@link android.support.v4.app.RemoteInput}
+ object to an action using <code>addRemoteInput()</code>.
+
+<pre>
+// Create the reply action and add the remote input
+Notification.Action action =
+        new Notification.Action.Builder(R.drawable.ic_reply_icon,
+                getString(R.string.label), replyPendingIntent)
+                .addRemoteInput(remoteInput)
+                .build();
+</pre>
+</li>
+
+<li>Apply the action to a notification and issue the notification.
+
+<pre>
+// Build the notification and add the action
+Notification notification =
+        new Notification.Builder(mContext)
+                .setSmallIcon(R.drawable.ic_message)
+                .setContentTitle(getString(R.string.title))
+                .setContentText(getString(R.string.content))
+                .addAction(action))
+                .build();
+
+// Issue the notification
+NotificationManager notificationManager =
+        NotificationManager.from(mContext);
+notificationManager.notify(notificationId, notification);
+
+</pre>
+</li>
+
+</ol>
+
+
+<p> The system prompts the user to input a response when they trigger the
+notification action. </p>
+
+<img id="fig-user-input" src="{@docRoot}preview/images/inline-type-reply.png"
+    srcset="{@docRoot}preview/images/inline-type-reply.png 1x,
+    {@docRoot}preview/images/inline-type-reply_2x.png 2x"
+    width="300">
+<p class="img-caption">
+  <strong>Figure 2.</strong> The user inputs text from the notification shade.
+</p>
+
+<h3>Retrieving user input from the inline reply</h3>
+
+<p>To receive user input from the notification interface to the activity you
+declared in the reply action's intent:</p>
+<ol>
+<li> Call {@link android.support.v4.app.RemoteInput#getResultsFromIntent
+  getResultsFromIntent()} by passing the notification action’s intent as
+ the input parameter. This method returns a {@link android.os.Bundle} that
+ contains the text response.
+</li>
+
+<pre>
+Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+</pre>
+
+<li>Query the bundle using the result key (provided to the {@link
+  android.support.v4.app.RemoteInput.Builder} constructor).
+</li>
+</ol>
+
+<p>The following code snippet illustrates how a method retrieves the input text
+from a bundle:</p>
+
+<pre>
+// Obtain the intent that started this activity by calling
+// Activity.getIntent() and pass it into this method to
+// get the associated string.
+
+private CharSequence getMessageText(Intent intent) {
+    Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+    if (remoteInput != null) {
+            return remoteInput.getCharSequence(KEY_TEXT_REPLY);
+            }
+    return null;
+ }
+</pre>
+
+<p>Apps can apply logic to decide what actions to take on the retrieved
+text.
+For interactive apps (like chats), provide more context in the notification itself
+ (for example, multiple lines of chat history, including the user’s own messages)
+  so that the user can respond appropriately.
+When the user responds via {@link android.support.v4.app.RemoteInput},
+ include the text in the reply history with the {@code setRemoteInputHistory()}
+ method.</p>
+
+<h2 id="bundle">Bundled Notifications</h2>
+
+<p>Android N provides developers with a new way to represent
+ a queue of notifications: <i>bundled notifications</i>. This is similar to the
+  <a href="{@docRoot}training/wearables/notifications/stacks.html">Notification
+  Stacks</a> feature in Android Wear. For example, if your app creates notifications
+  for received messages, when more than one message is received, bundle the
+ notifications together as a single group. You can
+ use the existing {@link android.support.v4.app.NotificationCompat.Builder#setGroup
+Builder.setGroup()} method to bundle similar notifications.</p>
+
+<p>
+  A notification group imposes a hierarchy on the notifications comprising it.
+  At the top of that hierarchy is a parent notification that displays summary
+  information for the group. The user can progressively
+  expand the notification group, and the system shows more information as the
+  user drills deeper. When the user expands the bundle, the system reveals more
+  information for all its child notifications; when the user
+  expands one of those notifications, the system reveals its entire content.
+</p>
+
+<img id="fig-bundles" src="{@docRoot}preview/images/bundles.png"
+  srcset="{@docRoot}preview/images/bundles.png 1x,
+          {@docRoot}preview/images/bundles_2x.png 2x"
+  width="300">
+<p class="img-caption">
+  <strong>Figure 3.</strong> The user can progressively expand the notification
+  group.
+</p>
+
+<p>To learn how to add notifications to a group, see
+<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">Add
+Each Notification to a Group</a>.</p>
+
+
+<h3 id="best-practices">Best practices for bundled notifications</h3>
+<p>This section provides guidelines about when to use notification groups instead
+of the {@link android.app.Notification.InboxStyle InboxStyle}
+notifications that have been available in earlier versions of the
+Android platform.</p>
+
+<h3>When to use bundled notifications</h3>
+
+<p>You should use notification groups only if all of the following conditions are
+true for your use case:</p>
+
+<ul>
+  <li>The child notifications are complete notifications and can be displayed
+   individually without the need for a group summary.</li>
+  <li>There is a benefit to surfacing the child notifications individually. For
+  example:
+  </li>
+  <ul>
+    <li>They are actionable, with actions specific to each child.</li>
+    <li>There is more information to the child that the user wants to read.</li>
+  </ul>
+</ul>
+
+<p>Examples of good use cases for notification groups include: a messaging app
+displaying a list of incoming messages, or an email app displaying a list of
+received emails.</p>
+
+<p>
+Examples of cases where a single notification is preferable
+ include individual messages from a single person, or a list representation of
+ single-line text items. You can use
+({@link android.app.Notification.InboxStyle InboxStyle} or
+{@link android.app.Notification.BigTextStyle BigTextStyle}) to accomplish
+this.
+</p>
+
+<h3 id ="post">Displaying bundled notifications</h3>
+
+<p>
+  The app should always post a group summary, even if the group contains just a
+  single child. The system will suppress the summary and directly display the
+  child notification if it only contains a single notification. This ensures
+  that the system can provide a consistent experience when the user swipes away
+  children of a group.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> This version of Android N does not yet
+  suppress the summary for notification groups containing a single child. This
+  functionality will be added in a later version of Android N.
+</p>
+
+<h3>Peeking notifications</h3>
+
+<p>While the system usually displays child notifications as a group, you can set
+ them to temporarily appear as
+ <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html#Heads-up">
+ heads-up notifications</a>. This feature is especially useful because it allows
+  immediate access to the most recent child and the actions associated with it.
+</p>
+
+
+<h3>Backwards compatibility</h3>
+
+<p>
+  Both notification groups and remote input have been a part of the {@link
+  android.app.Notification} API since Android 5.0 (API level 21) to support
+  Android Wear devices. If you've already built notifications with these APIs,
+  the only action you must take is to verify that the app behavior corresponds
+  to the guidelines described above, and to consider implementing {@code
+  setRemoteInputHistory()}.
+</p>
+
+<p>
+  In order to support backward compatibility, the same APIs are available with
+  the support library's {@link android.support.v4.app.NotificationCompat}
+  class, allowing you to build notifications that works on earlier Android
+  versions. On handhelds and tablets, users only see the summary notification,
+  so an app should still have an inbox style or an equivalent notification
+  representative for the whole information content of the group. As Android
+  Wear devices allow users to see all child notifications even on older
+  platform levels, you should build child notifications regardless of API
+  level.
+</p>
+
+<h2 id="custom"> Custom Views</h2>
+<p>Starting from Android N, you can customize notification views and
+still obtain system decorations like notification headers, actions, and
+expandable layouts.</p>
+
+<p>To enable this capability, Android N adds the following APIs to style your
+  custom view:</p>
+
+<dl>
+<dt>
+{@code DecoratedCustomViewStyle()}</dt>
+<dd> Styles notifications other than media
+notifications.</dd>
+<dt>
+{@code DecoratedMediaCustomViewStyle()}</dt>
+<dd> Styles media notifications.</dd>
+</dl>
+
+<p>To use this new API, call the {@code setStyle()} method, passing to it
+the desired custom view style.</p>
+
+<p>This snippet shows how to construct a custom notification object with the
+{@code DecoratedCustomViewStyle()} method.</p>
+
+<pre>
+Notification noti = new Notification.Builder()
+           .setSmallIcon(R.drawable.ic_stat_player)
+           .setLargeIcon(albumArtBitmap))
+           .setCustomContentView(contentView);
+           .setStyle(new Notification.DecoratedCustomViewStyle())
+           .build();
+
+</pre>
diff --git a/docs/html/preview/features/picture-in-picture.jd b/docs/html/preview/features/picture-in-picture.jd
new file mode 100644
index 0000000..106ad8b
--- /dev/null
+++ b/docs/html/preview/features/picture-in-picture.jd
@@ -0,0 +1,213 @@
+page.title=Picture-in-picture
+page.keywords=preview,sdk,PIP,Picture-in-picture
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>In this document</h2>
+<ol>
+  <li><a href="#declaring">Declaring Your Activity Supports
+Picture-in-picture</a></li>
+  <li><a href="#pip_button">Switching Your Activity to Picture-in-picture</a>
+</li>
+  <li><a href="#handling_ui">Handling UI During Picture-in-picture</a>
+</li>
+  <li><a href="#continuing_playback">Continuing Video Playback While in
+Picture-in-picture</a></li>
+  <li><a href="#single_playback">Using a Single Playback Activity for
+Picture-in-picture</a></li>
+  <li><a href="#best">Best Practices</a></li>
+</ol>
+
+<h2>See Also</h2>
+<ol>
+  <li><a href="{@docRoot}preview/features/multi-window.html">Multi-Window
+Support</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>In Android N, Android TV users can now watch a video
+in a pinned window in a corner of the screen when navigating within
+apps. Picture-in-picture (PIP) mode lets apps run a video
+activity in the pinned window while another activity continues in the
+background. The PIP window lets users multitask while using your app, which
+helps users be more productive.</p>
+
+<p>Your app can decide when to trigger PIP mode. Here are some examples of
+when to enter PIP mode:</p>
+
+<ul>
+<li>Your app can move a video into PIP mode when the user navigates
+back from the video to browse other content.</li>
+<li>Your app can switch a video into PIP mode while a user watches the end
+of an episode of content. The main screen displays promotional or summary
+information about the next episode in the series.</li>
+<li>Your app can provide a way for users to queue up additional content while
+they watch a video. The video continues playing in PIP mode while the main
+screen displays a content selection activity.</li>
+</ul>
+
+<p>The PIP window is 240x135 dp and is shown at the top-most layer in one of
+the four corners of the screen, chosen by the system. The user can bring up a
+PIP menu that lets them toggle the PIP window to full-screen, or close the PIP
+window, by holding down the <b>Home</b> button on the remote. If another
+video starts playing on the main screen, the PIP window is automatically
+closed. Users can also close the PIP window through Recents.</p>
+
+<img src="{@docRoot}preview/images/pip-active.png" />
+<p class="img-caption"><strong>Figure 1.</strong> A Picture-in-picture
+video visible in a corner of the screen while the user browses content
+on the main screen.</p>
+
+<p>PIP leverages the multi-window APIs available in Android N to
+provide the pinned video overlay window. To add PIP to your app, you need to
+register your activities that support PIP, switch your activity to PIP mode as
+needed, and make sure UI elements are hidden and video playback continues when
+the activity is in PIP mode.</p>
+
+<h2 id="declaring">Declaring Your Activity Supports Picture-in-picture</h2>
+
+<p>By default, the system does not automatically support PIP for apps.
+If you want support PIP in your app, register your video
+activity in your manifest by setting
+<code>android:supportsPictureInPicture</code> and
+<code>android:resizeableActivity</code> to <code>true</code>. Also, specify
+that your activity handles layout configuration changes so that your activity
+doesn't relaunch when layout changes occur during PIP mode transitions.</p>
+
+<pre>
+&lt;activity android:name="VideoActivity"
+    android:resizeableActivity="true"
+    android:supportsPictureInPicture="true"
+    android:configChanges=
+        "screenSize|smallestScreenSize|screenLayout|orientation"
+    ...
+</pre>
+
+<p>When registering your activity, keep in mind that in PIP mode, your
+activity is shown in a small overlay window on a TV screen. Video playback
+activities with minimal UI provide the best user experience. Activities that
+contain small UI elements might not provide a good user experience
+when switched to PIP mode, because users can't see details of the UI elements
+in the PIP window.</p>
+
+<h2 id="pip_button">Switching Your Activity to Picture-in-picture</h2>
+
+When you need to switch your activity into PIP mode, call
+<code>Activity.enterPictureInPicture()</code>. The following example switches
+to PIP mode when the user selects a dedicated PIP button on a media control
+bar:</p>
+
+<pre>
+&#64;Override
+public void onActionClicked(Action action) {
+    if (action.getId() == R.id.lb_control_picture_in_picture) {
+        getActivity().enterPictureInPicture();
+        return;
+    }
+    ...
+</pre>
+
+<p>Adding a PIP button to your media control bar lets your user easily switch
+to PIP mode while controlling video playback.</p>
+
+<img src="{@docRoot}preview/images/pip-button.png" />
+<p class="img-caption"><strong>Figure 1.</strong> A Picture-in-picture
+button on a media control bar.</p>
+
+<p>Android N includes a new
+<code>PlaybackControlsRow.PictureInPictureAction</code> class which defines
+control bar PIP actions and uses the PIP icon.</p>
+
+<h2 id="handling_ui">Handling UI During Picture-in-picture</h2>
+
+<p>When your activity enters PIP mode, your activity should only show video
+playback. Remove UI elements before your activity enters PIP,
+and restore these elements when your activity becomes full-screen again.
+Override <code>Activity.onPictureInPictureChanged()</code> or
+<code>Fragment.onPictureInPictureChanged()</code> and enable or
+disable your UI elements as needed, for example:</p>
+
+<pre>
+&#64;Override
+public void onPictureInPictureChanged(boolean inPictureInPicture) {
+    if (inPictureInPicture) {
+        // Hide the controls in picture-in-picture mode.
+        ...
+    } else {
+        // Restore the playback UI based on the playback status.
+        ...
+    }
+}
+</pre>
+
+<h2 id="continuing_playback">Continuing Video Playback While in
+Picture-in-picture</h2>
+
+<p>When your activity switches to PIP, the system considers the activity in a
+paused state, and calls your activity's <code>onPause()</code> method. Video
+playback should not be paused and should continue playing if the activity is
+paused due to PIP mode. Check for PIP in your activity's
+<code>onPause()</code> method and handle playback appropriately, for
+example:</p>
+
+<pre>
+&#64;Override
+public void onPause() {
+    // If called due to PIP, do not pause playback
+    if (inPictureInPicture()) {
+        // Continue playback
+        ...
+    }
+    // If paused but not in PIP, pause playback if necessary
+    ...
+}
+</pre>
+
+<p>When your activity switches out of PIP mode back to full-screen mode, the
+system resumes your activity and calls your <code>onResume()</code> method.</p>
+
+<h2 id="single_playback">Using a Single Playback Activity for
+Picture-in-picture</h2>
+
+<p>In your app, a user might select a new video when browsing for content on
+the main screen, while a video playback activity is in PIP mode. Play the new
+video in the existing playback activity in full screen mode, instead of
+launching a new activity that might confuse the user.</p>
+
+<p>To ensure a single activity is used for video playback requests and
+switched into or out of PIP mode as needed, set the activity's
+<code>android:launchMode</code> to <code>singleTask</code> in your manifest:
+</p>
+
+<pre>
+&lt;activity android:name="VideoActivity"
+    ...
+    android:supportsPictureInPicture="true"
+    android:launchMode="singleTask"
+    ...
+</pre>
+
+<p>In your activity, override {@link android.app.Activity#onNewIntent
+Activity.onNewIntent()} and handle the new video, stopping any existing video
+playback if needed.</p>
+
+<h2 id="best">Best Practices</h2>
+
+<p>PIP is intended for activities that play full-screen video. When switching
+your activity into PIP mode, avoid showing anything except video content.
+Track when your activity enters PIP mode and hide UI elements, as described
+in <a href="#handling_ui">Handling UI During Picture-in-picture</a>.</p>
+
+<p>Since the PIP window is shown as a floating window in the corner of the
+screen, you should avoid showing critical information in the main screen
+in any area that can be obscured by the PIP window.</p>
+
+<p>When an activity is in PIP mode, by default it doesn't get input focus. To
+receive input events while in PIP mode, use
+<code>MediaSession.setMediaButtonReceiver()</code>.</p>
diff --git a/docs/html/preview/features/power-mgmt.jd b/docs/html/preview/features/power-mgmt.jd
deleted file mode 100644
index da66181..0000000
--- a/docs/html/preview/features/power-mgmt.jd
+++ /dev/null
@@ -1,121 +0,0 @@
-page.title=Power-Saving Optimizations
-page.keywords=preview,sdk,compatibility
-sdk.platform.apiLevel=MNC
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>In this document</h2>
-
-<ol  class="hide-nested">
-    <li><a href="#behavior-doze">Doze</a></li>
-    <li><a href="#behavior-app-standby">App Standby</a></li>
-</ol>
-
-<h2>API Differences</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">API level 22 to M Preview &raquo;</a> </li>
-</ol>
-
-
-<h2>See Also</h2>
-<ol>
-<li><a href="{@docRoot}preview/api-overview.html">M Developer Preview API Overview</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>Android M Preview helps prolong battery life by introducing new power-saving optimizations:
-<em>Doze</em> mode improves the sleep efficiency of idle devices. <em>App Standby</em> prevents apps
-from eating up power while idle.</p>
-
-<h2 id="behavior-doze">Doze</h2>
-<p>If a user leaves a device unplugged and stationary for a period of time, with the screen off,
-the device enters Doze mode. Doze attempts to keep the system in a sleep state as long as the
-device remains undisturbed. In this mode, devices periodically resume normal operations for brief periods of time so that the system can perform app syncing and any other pending operations.</p>
-
-<p>The following restrictions apply to your apps while in Doze:</p>
-<ul>
-<li>Network access is disabled, unless your app receives a high-priority
-<a href="https://developers.google.com/cloud-messaging/" class="external-link">
-Google Cloud Messaging</a> tickle.</li>
-<li>The system ignores <a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">
-Wake locks</a>.</li>
-<li>Alarms scheduled using the {@link android.app.AlarmManager} class are deferred, unless you have
-exempted them using the
-{@link android.app.AlarmManager#setAndAllowWhileIdle setAndAllowWhileIdle()} method.</li>
-<li>The system does not perform Wi-Fi scans.</li>
-<li>The system does not permit syncs or jobs for your sync adapters.</li>
-<li>The system does not allow {@link android.app.job.JobScheduler} to run.</li>
-</ul>
-</p>
-<p>When the device exits Doze mode, it executes any jobs and syncs that are pending.</p>
-
-<h3>Testing apps with Doze</h3>
-
-<p>You can test Doze mode by connecting your development host to a device running the M Preview,
-and calling the following commands:
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-<p class="note"><strong>Note</strong>: As of M Preview 3 release,
-<a href="https://developers.google.com/cloud-messaging/" class="external-link">
-Google Cloud Messaging</a> (GCM) lets you designate
-<a href="https://developers.google.com/cloud-messaging/downstream#setting-the-priority-of-a-message">
-high-priority messages</a>. If your app receives a high-priority GCM message</a>, the system grants
-brief network access even when the device is dozing.
-</p>
-
-<p>See the
-<a href="{@docRoot}preview/testing/guide.html#doze-standby">Testing Guide</a> for tips on how
-to test Doze in your apps. </p>
-
-<h2 id="behavior-app-standby">App Standby</h2>
-<p>App Standby allows the system to determine that an app is idle when the user is not actively
-using it. The system makes this determination when the user does not touch the app for a certain
-period of time, and none of the following conditions applies:</p>
-
-<ul>
-<li>The user explicitly launches the app.</li>
-<li>The app has a process currently in the foreground (either as an activity or foreground service,
-or in use by another activity or foreground service).</li>
-<li>The app generates a notification that users see on the lock screen or in the
-notification tray.</li>
-<li>The user explicitly asks for the app to be exempt from optimizations,
-via the Settings app.</li>
-</ul>
-
-<p>When the user plugs the device into a power supply, the system releases apps from the standby
-state, allowing them to freely access the network and to execute any pending jobs and syncs. If the
-device is idle for long periods of time, the system allows idle apps network access around once a
-day.</p>
-
-<h3>Testing apps with App Standby</h3>
-<p>You can test App Standby by connecting your development host to a device running the M Preview,
-and calling the following commands:
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell am set-idle &lt;packageName&gt; true
-$ adb shell am set-idle &lt;packageName&gt; false
-$ adb shell am get-idle &lt;packageName&gt;
-</pre>
-
-<p class="note"><strong>Note</strong>:
-As of M Preview 3 release,
-<a href="https://developers.google.com/cloud-messaging/" class="external-link">
-Google Cloud Messaging</a> (GCM) lets you
-designate
-<a href="https://developers.google.com/cloud-messaging/downstream#setting-the-priority-of-a-message">
-high-priority messages</a>. If your app receives high-priority GCM messages, the system grants
-brief network access even when the app is idle.
-</p>
-
-<p>See the
-<a href="{@docRoot}preview/testing/guide.html#doze-standby">Testing Guide</a> for tips on how
-to test App Standby in your apps. </p>
diff --git a/docs/html/preview/features/runtime-permissions.jd b/docs/html/preview/features/runtime-permissions.jd
deleted file mode 100644
index 62e49b9..0000000
--- a/docs/html/preview/features/runtime-permissions.jd
+++ /dev/null
@@ -1,1081 +0,0 @@
-page.title=Permissions
-page.tags=previewresources, androidm
-page.keywords=permissions, runtime, preview
-page.image=images/permissions_check.png
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>Quickview</h2>
-    <ul>
-      <li>If your app targets the M Preview SDK, it prompts users to grant
-        permissions at runtime, instead of install time.</li>
-      <li>Users can revoke permissions at any time from the app Settings
-        screen.</li>
-      <li>Your app needs to check that it has the permissions it needs every
-        time it runs.</li>
-    </ul>
-
-    <h2>In this document</h2>
-    <ol>
-      <li><a href="#overview">Overview</a></li>
-      <li><a href="#coding">Coding for Runtime Permissions</a></li>
-      <li><a href="#testing">Testing Runtime Permissions</a></li>
-      <li><a href="#best-practices">Best Practices and Usage Notes</a></li>
-    </ol>
-
-<!--
-  <h2>Related Samples</h2>
-  <ol>
-    <li></li>
-  </ol>
--->
-
-<!--
-  <h2>See also</h2>
-  <ol>
-    <li>
-    </li>
-  </ol>
--->
-
-  </div> <!-- qv -->
-</div> <!-- qv-wrapper -->
-
-<!-- video box -->
-<a class="notice-developers-video"
-    href="https://www.youtube.com/watch?v=f17qe9vZ8RM">
-<div>
-    <h3>Video</h3>
-    <p>Google I/O 2015—Android M Permissions: Best Practices for
-      Developers</p>
-</div>
-</a>
-
-<p>
-  The M Developer Preview introduces a new app permissions model which
-  streamlines the process for users to install and upgrade apps. If an app
-  running on the M Preview supports the new permissions model, the user does not have to
-  grant any permissions when they install or upgrade the app. Instead, the app
-  requests permissions as it needs them, and the system shows a dialog to the
-  user asking for the permission.
-</p>
-
-<p>
-  If an app supports the new permissions model, it can still be installed and
-  run on devices running older versions of Android, using the old permissions
-  model on those devices.
-</p>
-
-<h2 id="overview">
-  Overview
-</h2>
-
-<p>
-  With the M Developer Preview, the platform introduces a new app permissions
-  model. Here's a summary of the key components of this new model:
-</p>
-
-<ul>
-  <li>
-    <strong>Declaring Permissions:</strong> The app declares all the
-    permissions it needs in the manifest, as in earlier Android platforms.
-  </li>
-
-  <li>
-    <strong>Permission Groups:</strong> Permissions are divided into
-    <em>permission groups</em>, based on their functionality. For example, the
-    <code>CONTACTS</code> permission group contains permissions to read and
-    write the user's contacts and profile information.
-  </li>
-
-  <li>
-    <p><strong>Limited Permissions Granted at Install Time:</strong> When the
-    user installs or updates the app, the system grants the app all
-    permissions listed in the manifest that fall under {@link
-    android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}.
-    For example, alarm clock and internet permissions fall under {@link
-    android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}, so
-    they are automatically granted at install time. For more information about
-    how normal permissions are handled, see <a href="#normal">Normal
-    Permissions</a>.
-    </p>
-
-    <p>The system may also grant the app signature permissions, as
-    described in <a href="#system-apps">System components and signature
-    permissions</a>. The user is <em>not</em> prompted to grant any permissions
-    at install time.</p>
-  </li>
-
-  <li>
-    <strong>User Grants Permissions at Run-Time:</strong> When the app requests
-    a permission, the system shows a dialog to the user, then calls the app's
-    callback function to notify it whether the user granted the permission.
-  </li>
-
-</ul>
-
-<p>
-  This permission model changes the way your app behaves for features that
-  require permissions. Here's a summary of the development practices you should
-  follow to adjust to this model:
-</p>
-
-<ul>
-
-  <li>
-    <strong>Always Check for Permissions:</strong> When the app needs to
-    perform any action that requires a permission, it should first check
-    whether it has that permission already. If it does not, it requests to be
-    granted that permission. You do not need to check for permissions that
-    fall under {@link
-    android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}.
-  </li>
-
-  <li>
-    <strong>Handle Lack of Permissions Gracefully:</strong> If the app is not
-    granted an appropriate permission, it should handle the failure cleanly.
-    For example, if the permission is just needed for an added feature, the app
-    can disable that feature. If the permission is essential for the app to
-    function, the app might disable all its functionality and inform the user
-    that they need to grant that permission.
-  </li>
-
-  <div class="figure" style="width:220px" id="fig-perms-screen">
-    <img src="images/app-permissions-screen_2x.png"
-    srcset="images/app-permissions-screen.png 1x, images/app-permissions-screen_2x.png 2x"
-    alt="" width="220">
-    <p class="img-caption">
-      <strong>Figure 1.</strong> Permission screen in the app's Settings.
-    </p>
-  </div>
-
-  <li>
-    <strong>Permissions are Revocable:</strong> Users can revoke an app's
-    permissions at any time. If a user turns off an app's permissions, the app
-    is <em>not</em> notified. Once again, your app should verify that it has
-    needed permissions before performing any restricted actions.
-  </li>
-</ul>
-
-<p class="note">
-  <strong>Note:</strong> If an app targets the M Developer Preview, it
-  <em>must</em> use the new permissions model.
-</p>
-
-<p>
-  As of the launch of the M Developer Preview, not all Google apps fully
-  implement the new permissions model. Google is updating these apps over
-  the course of the M Developer Preview to properly respect Permissions toggle
-  settings.
-</p>
-
-<p class="note">
-  <strong>Note:</strong> If your app has its own API surface, do not proxy
-  permissions without first ensuring the caller has the requisite permissions
-  to access that data.
-</p>
-
-<h3 id="perm-groups">Permission groups</h3>
-
-<p>
-  Related permissions are divided into <em>permission groups</em> to allow
-  users to grant related permissions to an app in a single action. The user
-  only has to grant permission once per app for each permission group. If the
-  app subsequently requests a permission from the same permission group, the
-  system automatically grants the permission without any action from the user.
-  The system calls your app's {@link
-  android.app.Activity#onRequestPermissionsResult onRequestPermissionsResult()}
-  method just as if the user had granted permission through the dialog box.
-</p>
-
-<p>
-  For example, suppose an app lists in its manifest that it needs the
-  <code>SEND_SMS</code> and <code>RECEIVE_SMS</code> permissions, which both
-  belong to <code>android.permission-group.SMS</code>. When the app needs to
-  send a message, it requests the <code>SEND_SMS</code> permission. The system
-  shows the user a dialog box asking if the app can have access to SMS. If the
-  user agrees, the system grants the app the <code>SEND_SMS</code> permission it
-  requested. Later, the app requests <code>RECEIVE_SMS</code>. The
-  system automatically grants this permission, since the user had already
-  approved a permission in the same permission group.
-</p>
-
-<h3 id="system-apps">
-  System components and signature permissions
-</h3>
-
-<p>
-  Ordinarily, when the user installs an app, the system only grants the app the
-  permissions listed in the manifest that fall under
-  {@link android.content.pm.PermissionInfo#PROTECTION_NORMAL
-  PROTECTION_NORMAL}. However, under some circumstances the system grants the
-  app more permissions:
-</p>
-
-<ul>
-  <li>System components automatically receive all
-  the permissions listed in their manifests.
-  </li>
-
-  <li>If the app requests permissions in the manifest that fall under {@link
-  android.content.pm.PermissionInfo#PROTECTION_SIGNATURE PROTECTION_SIGNATURE},
-  and the app is signed with the same certificate as the app that declared
-  those permissions, the system grants the requesting app those permissions on
-  installation. Apps cannot request signature permissions at runtime.</li>
-</ul>
-
-<h3 id="compatibility">
-  Forwards and backwards compatibility
-</h3>
-
-<p>
-  If an app does not target the M Developer Preview, the app continues to use
-  the old permissions model even on M Preview devices. When the user installs
-  the app, the system asks the user to grant all permissions listed in the
-  app's manifest.
-</p>
-
-<p class="note">
-  <strong>Note:</strong> On devices running the M Developer Preview, a user can
-  turn off permissions for any app (including legacy apps) from the app's
-  Settings screen. If a user turns off permissions for a legacy app, the system
-  silently disables the appropriate functionality. When the app attempts to
-  perform an operation that requires that permission, the operation will not
-  necessarily cause an exception. Instead, it might return an empty data set,
-  signal an error, or otherwise exhibit unexpected behavior. For example, if you
-  query a calendar without permission, the method returns an empty data set.
-</p>
-
-<p>
-  If you install an app using the new permissions model on a device that is not
-  running the M Preview,
-  the system treats it the same as any other app: the system asks
-  the user to grant all declared permissions at install time.
-</p>
-
-<p class="note">
-  <strong>Note:</strong> For the preview release, you must set the minimum SDK
-  version to the M Preview SDK to compile with the preview SDK. This means you
-  will not be able to test such apps on older platforms during the developer
-  preview.
-</p>
-
-<h3 id="perms-vs-intents">Permissions versus intents</h3>
-
-<p>
-  In many cases, you can choose between two ways for your app to perform a
-  task. You can have your app ask for permission to perform the operation
-  itself. Alternatively, you can have the app use an intent to have another app
-  perform the task.
-</p>
-
-<p>
-  For example, suppose your app needs to be able to take pictures with the
-  device camera. Your app can request the
-  <code>android.permission.CAMERA</code> permission, which allows your app to
-  access the camera directly. Your app would then use the camera APIs
-  to control the camera and take a picture. This approach gives your app full
-  control over the photography process, and lets you incorporate the camera UI
-  into your app.
-</p>
-
-<p>
-  However, if you don't need such control, you can just use an {@link
-  android.provider.MediaStore#ACTION_IMAGE_CAPTURE ACTION_IMAGE_CAPTURE} intent
-  to request an image. When you start the intent, the user is prompted to
-  choose a camera app (if there isn't already a default camera app), and that
-  app takes the picture. The camera app returns the picture to your app's {@link
-  android.app.Activity#onActivityResult onActivityResult()} method.
-</p>
-
-<p>
-  Similarly, if you need to make a phone call, access the user's contacts, and
-  so on, you can do that by creating an appropriate intent, or you can request
-  the permission and access the appropriate objects directly. There are
-  advantages and disadvantages to each approach.
-</p>
-
-<p>
-  If you use permissions:
-</p>
-
-<ul>
-  <li>Your app has full control over the user experience when you perform the
-  operation. However, such broad control adds to the complexity of your task,
-  since you need to design an appropriate UI.
-  </li>
-
-  <li>The user is prompted to give permission once, the first time you perform
-  the operation. After that, your app can perform the operation without
-  requiring additional interaction from the user. However, if the user doesn't
-  grant the permission (or revokes it later on), your app becomes unable to
-  perform the operation at all.
-  </li>
-</ul>
-
-<p>
-  If you use an intent:
-</p>
-
-<ul>
-  <li>You do not have to design the UI for the operation. The app that handles
-  the intent provides the UI. However, this means you have
-  no control over the user experience. The user could be interacting with an
-  app you've never seen.
-  </li>
-
-  <li>If the user does not have a default app for the operation, the system
-  prompts the user to choose an app. If the user does not designate a default
-  handler, they may have to go
-  through an extra dialog every time they perform the operation.
-  </li>
-</ul>
-
-<h2 id="coding">Coding for Runtime Permissions</h2>
-
-<p>
-  If your app targets the new M Developer Preview, you must use the new
-  permissions model. This means that in addition to declaring your needed
-  permissions in the manifest, you must also check to see if you have the
-  permissions at run time, and request the permissions if you do not already
-  have them.
-</p>
-
-<h3 id="enabling">
-  Enabling the new permissions model
-</h3>
-
-<p>
-  To enable the new M Developer Preview permissions model, set the app's
-  <code>targetSdkVersion</code> attribute to <code>"MNC"</code>, and
-  <code>compileSdkVersion</code> to <code>"android-MNC"</code>. Doing so
-  enables all the new permissions features.
-</p>
-
-<p>
-  For the preview release, you must set <code>minSdkVersion</code> to
-  <code>"MNC"</code> to compile with the preview SDK.
-</p>
-
-<h3 id="m-only-perm">
-  Designating a permission for the M Preview only
-</h3>
-
-<p>
-  You can use the new <code>&lt;uses-permission-sdk-m&gt;</code> element in the app manifest
-  to indicate that a permission is only needed on the M Developer Preview. If
-  you declare a permission this way, then whenever the app is installed on an
-  older device, the system does not prompt the user or grant the
-  permission to the app. By using the <code>&lt;uses-permission-sdk-m&gt;</code>
-  element, you can add new permissions
-  to updated versions of your app without forcing users to grant permissions
-  when they install the update.
-</p>
-
-<p>
-  If the app is running on a device with the M Developer Preview,
-  <code>&lt;uses-permission-sdk-m&gt;</code> behaves the same as
-  <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html"
-      >&lt;uses-permission&gt;</a></code>.
-  The system does not prompt the user to grant any permissions when they install
-  the app, and the app requests permissions as they are needed.
-</p>
-
-<h3 id="prompting">
-  Prompting for permissions
-</h3>
-
-<p>
-  If your app uses the new M Developer Preview permissions model, the user is
-  not asked to grant all permissions when the app is first launched on a device
-  running the M Preview. Instead, your app requests permissions as they are
-  needed. When your app requests a permission, the system shows a dialog to the
-  user.
-</p>
-
-<p>
-  If your app runs on a device that has SDK 22 or lower, the app uses the old
-  permissions model. When the user installs the app, they are prompted to grant
-  all the permissions your app requests in its manifest, except for those
-  permissions which are labeled with <code>&lt;uses-permission-sdk-m&gt;</code>.
-</p>
-
-<h4 id="check-platform">Check what platform the app is running on</h4>
-
-<p>
-  This permissions model is only supported on devices running the M Developer
-  Preview. Before calling any of these methods, the app should verify
-  what platform it's running on
-  by checking the value of {@link android.os.Build.VERSION#CODENAME
-  Build.VERSION.CODENAME}. If the device is running the M Developer Preview,
-  {@link android.os.Build.VERSION#CODENAME CODENAME} is <code>"MNC"</code>.
-</p>
-
-<p>
-  Alternatively, you can use the new methods introduced with revision 23 of the
-  v4 and v13 support libraries. The support library methods behave
-  appropriately whether or not the app is running on the M Developer Preview.
-  For more information, see <a href="#support-lib">Support library methods for
-  handling permissions</a>.
-</p>
-
-<h4 id="check-for-permission">Check if the app has the needed permission</h4>
-
-<p>
-  When the user tries to do something that requires a permission, the app
-  checks to see if it currently has permission to perform this operation. To do
-  this, the app calls {@link android.content.Context#checkSelfPermission
-  checkSelfPermission()}. The app should perform this check even if it knows
-  the user has already granted that permission, since the user can revoke an
-  app's permissions at any time. For example, if a user wants to use an app to
-  take a picture, the app calls
-  <code>Context.checkSelfPermission(Manifest.permission.CAMERA)</code>.
-</p>
-
-<p class="table-caption" id="permission-groups">
-  <strong>Table 1.</strong> Permissions and permission groups.</p>
-<table>
-  <tr>
-    <th scope="col">Permission Group</th>
-    <th scope="col">Permissions</th>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CALENDAR</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_CALENDAR</code>
-        </li>
-      </ul>
-      <ul>
-        <li>
-          <code>android.permission.WRITE_CALENDAR</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CAMERA</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.CAMERA</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.CONTACTS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_CONTACTS</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_CONTACTS</code>
-        </li>
-        <li>
-          <code>android.permission.GET_ACCOUNTS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.LOCATION</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.ACCESS_FINE_LOCATION</code>
-        </li>
-        <li>
-          <code>android.permission.ACCESS_COARSE_LOCATION</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.MICROPHONE</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.RECORD_AUDIO</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.PHONE</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_PHONE_STATE</code>
-        </li>
-        <li>
-          <code>android.permission.CALL_PHONE</code>
-        </li>
-        <li>
-          <code>android.permission.READ_CALL_LOG</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_CALL_LOG</code>
-        </li>
-        <li>
-          <code>com.android.voicemail.permission.ADD_VOICEMAIL</code>
-        </li>
-        <li>
-          <code>android.permission.USE_SIP</code>
-        </li>
-        <li>
-          <code>android.permission.PROCESS_OUTGOING_CALLS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.SENSORS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.BODY_SENSORS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td><code>android.permission-group.SMS</code></td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.SEND_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_SMS</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_WAP_PUSH</code>
-        </li>
-        <li>
-          <code>android.permission.RECEIVE_MMS</code>
-        </li>
-        <li>
-          <code>android.permission.READ_CELL_BROADCASTS</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-  <tr>
-    <td>
-      <code>android.permission-group.STORAGE</code>
-    </td>
-    <td>
-      <ul>
-        <li>
-          <code>android.permission.READ_EXTERNAL_STORAGE</code>
-        </li>
-        <li>
-          <code>android.permission.WRITE_EXTERNAL_STORAGE</code>
-        </li>
-      </ul>
-    </td>
-  </tr>
-
-</table>
-
-<h4 id="explain-need">Explain why the app needs permissions</h4>
-
-<p>
-  In some circumstances, you might want to help the user understand why your
-  app needs a permission. For example, if a user launches a photography app,
-  the user probably won't be surprised that the app asks for permission to use
-  the camera. But if the user turns down that permission request, then launches
-  the photography app again, that might indicate that the user needs some help
-  understanding why the permission is needed.
-</p>
-
-<p>
-  To help find the situations where you need to provide extra explanation, the
-  system provides the {@link
-  android.app.Activity#shouldShowRequestPermissionRationale
-  shouldShowRequestPermissionRationale()} method. This method returns
-  <code>true</code> if the app has requested this permission previously and the
-  user denied the request. That indicates that you should probably explain to
-  the user why you need the permission.
-</p>
-
-<p>
-  If the user turned down the permission request in the past and chose the
-  <em>Don't ask again</em> option in the permission request system dialog, this
-  method returns <code>false</code>. The method also returns <code>false</code>
-  if the device policy prohibits the app from having that permission.
-</p>
-
-
-
-<h4 id="request-permissions">Request permissions if necessary</h4>
-
-<p>If the app doesn't already have the permission it needs, the app calls the
-  {@link android.app.Activity#requestPermissions requestPermissions()} method to
-  request the appropriate permission or permissions. The app passes the
-  permission or permissions it wants, and also an integer "request code".
-  This method functions asynchronously: it returns right away, and after
-  the user responds to the dialog box, the system calls the app's callback
-  method with the results, passing the same "request code" that the app passed
-  to {@link android.app.Activity#requestPermissions requestPermissions()}.</p>
-
-  <p>The following code code checks if the app has permission to read the
-    user's contacts, and requests the permission if necessary:</p>
-
-<pre>
-if (checkSelfPermission(Manifest.permission.READ_CONTACTS)
-        != PackageManager.PERMISSION_GRANTED) {
-
-    // Should we show an explanation?
-    if (shouldShowRequestPermissionRationale(
-            Manifest.permission.READ_CONTACTS)) {
-        // Explain to the user why we need to read the contacts
-    }
-
-    requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
-            MY_PERMISSIONS_REQUEST_READ_CONTACTS);
-
-    // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
-    // app-defined int constant
-
-    return;
-}
-</pre>
-
-<p class="note">
-  <strong>Note:</strong> When your app calls the framework's {@link
-  android.app.Activity#requestPermissions requestPermissions()} method, the
-  system shows a standard dialog box to the user. Your app <em>cannot</em>
-  configure or alter that dialog box. If you need to provide any information or
-  explanation to the user, you should do that <em>before</em> you call {@link
-  android.app.Activity#requestPermissions requestPermissions()}, as described
-  in <a href="#explain-need">Explain why the app needs permissions</a>.
-</p>
-
-<h4 id="handle-response">Handle the permissions request response</h4>
-
-<p>
-  When an app requests permissions, the system presents a dialog box to the
-  user. When the user responds, the system invokes your app's {@link
-  android.app.Activity#onRequestPermissionsResult} passing it the user
-  response. Your app needs to override that method. The callback is passed the
-  same request code you passed to {@link
-  android.app.Activity#requestPermissions requestPermissions()}. For example,
-  if an app requests <code>READ_CONTACTS</code> access it might have the
-  following callback method:
-</p>
-
-<pre>
-&#64;Override
-public void onRequestPermissionsResult(int requestCode,
-        String permissions[], int[] grantResults) {
-    switch (requestCode) {
-        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
-            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-
-                // permission was granted, yay! do the
-                // calendar task you need to do.
-
-            } else {
-
-                // permission denied, boo! Disable the
-                // functionality that depends on this permission.
-            }
-            return;
-        }
-
-        // other 'switch' lines to check for other
-        // permissions this app might request
-    }
-}
-</pre>
-
-<p>
-  If the user denies a permission request, your app should take appropriate
-  action. For example, your app might show a dialog explaining why it could not
-  perform the user's original request.
-</p>
-
-<p>
-  When the system asks the user to grant a permission, the user has the option
-  of telling the system not to ask for that permission again. In that case,
-  when an app uses {@link android.app.Activity#requestPermissions
-  requestPermissions()} to ask for that permission, the system immediately
-  denies the request. In this case, the system calls your {@link
-  android.app.Activity#onRequestPermissionsResult onRequestPermissionsResult()}
-  the same way it would if the user had explicitly rejected your request again.
-  For this reason, your app cannot assume that any direct interaction with the
-  user has taken place.
-</p>
-
-<h2 id="testing">Testing Runtime Permissions</h2>
-
-<p>
-  If your app targets the M Developer Preview, you must test that it
-  handles permissions properly. You cannot assume that your app has any
-  particular permissions when it runs. When the app is first launched, it is
-  likely to have no permissions, and the user can revoke or restore permissions
-  at any time.
-</p>
-
-<p>
-  You should test your app to make sure it behaves properly under all
-  permission situations. With the M Preview SDK, we have provided new
-  <a href="{@docRoot}tools/help/adb.html">Android
-  Debug Bridge (adb)</a> commands to enable you to test your app with whatever
-  permissions settings you need to try.
-</p>
-
-<h3>
-  New adb commands and options
-</h3>
-
-<p>
-  The M Preview SDK Platform-tools provides several new commands to let you test
-  how your app handles permissions.
-</p>
-
-<h4>
-  Install with permissions
-</h4>
-
-<p>
-  You can use the <a href="{@docRoot}tools/help/adb.html#move"><code>adb
-  install</code></a> command's new <code>-g</code> option, which installs the
-  app and grants all permissions listed in its manifest:
-</p>
-
-<pre class="no-pretty-print">
-$ adb install -g &lt;path_to_apk&gt;
-</pre>
-
-<h4>
-  Grant and revoke permissions
-</h4>
-
-<p>
-  You can use new ADB <a href="{@docRoot}tools/help/adb.html#pm">package manager
-  (pm)</a> commands to grant and revoke permissions to an installed app.
-  This functionality can be useful for automated testing.
-</p>
-
-<p>
-  To grant a permission, use the package manager's <code>grant</code> command:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant &lt;package_name&gt; &lt;permission_name&gt;
-</pre>
-
-<p>
-  For example, to grant the com.example.myapp package permission to record
-  audio, use this command:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant com.example.myapp android.permission.RECORD_AUDIO
-</pre>
-
-<p>
-  To revoke a permission, use the package manager's <code>revoke</code> command:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm revoke &lt;package_name&gt; &lt;permission_name&gt;
-</pre>
-
-<h2 id="best-practices">Best Practices and Usage Notes</h2>
-
-<p>
-  The new permissions model gives users a smoother experience, and makes it
-  easier for them to install apps and feel comfortable with what the apps are
-  doing. We recommend the following best practices to take full advantage of
-  the new model.
-</p>
-
-
-<h3 id="bp-what-you-need">Only ask for permissions you need</h3>
-
-<p>
-  Every time you ask for a permission, you force the user to make a decision.
-  If the user turns down the request, that reduces your app's functionality.
-  You should minimize the number of times you make these requests.
-</p>
-
-<p>
-  For example, quite often your app can get needed functionality by using an
-  <a href="{@docRoot}guide/components/intents-filters.html">intent</a> instead
-  of asking for permissions. If your app needs to take pictures with the
-  phone's camera, your app can use a {@link
-  android.provider.MediaStore#ACTION_IMAGE_CAPTURE
-  MediaStore.ACTION_IMAGE_CAPTURE} intent. When your app executes the intent, the
-  system prompts the user to choose an already-installed camera app to take the
-  picture.
-</p>
-
-<h3 id="bp-dont-overwhelm">
-  Don't overwhelm the user
-</h3>
-
-<p>
-  If you confront the user with a lot of requests for permissions at once, you may
-  overwhelm the user and cause them to quit your app. Instead, you should ask
-  for permissions as you need them.
-</p>
-
-<p>
-  In some cases, one or more permissions might be absolutely essential to your
-  app. In that case, it might make sense to ask for all the permissions as soon
-  as the app launches. For example, if you make a photography app, the app
-  would need access to the device camera. When the user launches the app for
-  the first time, they won't be surprised to be asked for permission to use
-  the camera. But if the same app also had a feature to share photos with the
-  user's contacts, you probably should <em>not</em> ask for that permission at
-  first launch. Instead, wait until the user tries to use the "sharing" feature
-  and ask for the permission then.
-</p>
-
-<p>
-  If your app provides a tutorial, it may make sense to request the app's essential
-  permissions at the end of the tutorial sequence.
-</p>
-
-<h3 id="bp-explain">
-  Explain why you need permissions
-</h3>
-
-<p>
-  The permissions dialog shown by the system when you call {@link
-  android.app.Activity#requestPermissions requestPermissions()} says what
-  permission your app wants, but doesn't say why. In some cases, the user may
-  find that puzzling. It's a good idea to explain to the user why your app
-  wants the permissions before calling {@link
-  android.app.Activity#requestPermissions requestPermissions()}.
-</p>
-
-<p>
-  For example, a photography app might want to use location services, so it can
-  geotag the photos. A typical user might not understand that a photo can
-  contain location information, and would be puzzled why their photography app
-  wanted to know the location. So in this case, it's a good idea for the app to
-  tell the user about this feature <em>before</em> calling
-  {@link android.app.Activity#requestPermissions requestPermissions()}.
-</p>
-
-<p>
-  One way to do this is to incorporate these requests into an app tutorial. The
-  tutorial can show each of the app's features in turn, and as it does this, it
-  can explain what permissions are needed. For example, the photography app's
-  tutorial can demonstrate its "share photos with your contacts" feature, then
-  tell the user that they need to give permission for the app to see the user's
-  contacts. The app can then call {@link
-  android.app.Activity#requestPermissions requestPermissions()} to ask the user
-  for that access. Of course, not every user is going to follow the tutorial,
-  so you still need to check for and request permissions during the app's
-  normal operation.
-</p>
-
-<h3 id="support-lib">Support library methods for handling permissions</h3>
-
-<p>
-  Revision 23 of the v4 and v13 support libraries provide several new methods
-  for managing permissions. The support library methods work properly on any
-  device that can use those libraries. Thus, if you use the support library
-  methods, you do not need to check whether your app is running on a device
-  with the M Developer Preview. If an app is installed on a device running the
-  M Preview, the support library methods behave the same as their framework
-  equivalents. If the device is running an earlier version of Android, the
-  methods behave appropriately, as described below.
-</p>
-
-<p>
-  The v4 support library provides the following permissions methods:
-</p>
-
-<dl>
-  <dt>
-    {@link android.support.v4.content.ContextCompat#checkSelfPermission
-    ContextCompat.checkSelfPermission()}
-  </dt>
-
-  <dd>
-    Returns {@link android.content.pm.PackageManager#PERMISSION_GRANTED
-    PERMISSION_GRANTED} if the app has the specified permission, whether
-    or not the device is using the M Preview. If the app does not have the
-    specified permission, returns {@link
-    android.content.pm.PackageManager#PERMISSION_DENIED PERMISSION_DENIED}.
-  </dd>
-
-  <dt>
-    {@link android.support.v4.app.ActivityCompat#requestPermissions
-    ActivityCompat.requestPermissions()}
-  </dt>
-
-  <dd>
-    If the device is not running the M Preview, invokes the callback
-    method in {@link
-    android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback}.
-    Passes {@link android.content.pm.PackageManager#PERMISSION_GRANTED
-    PERMISSION_GRANTED} if the app already has the specified permission, or
-    {@link android.content.pm.PackageManager#PERMISSION_DENIED
-    PERMISSION_DENIED} if it does not.
-  </dd>
-
-  <dt>
-    {@link
-    android.support.v4.app.ActivityCompat#shouldShowRequestPermissionRationale
-    ActivityCompat.shouldShowRequestPermissionRationale()}
-  </dt>
-
-  <dd>
-    If the device is not running the M Preview, always returns
-    <code>false</code>.
-  </dd>
-</dl>
-
-<p>
-  The v4 support library also contains the
-  {@link android.support.v4.content.PermissionChecker}
-  class, which provides several static utility methods for apps that use IPC to
-  provide services for other apps. For example,
-  {@link android.support.v4.content.PermissionChecker#checkCallingPermission
-  PermissionChecker.checkCallingPermission()}
-  checks whether an IPC
-  made by a particular package has a specified permission.
-</p>
-
-<p class="note">
-  <strong>Note:</strong> If your app acts on behalf of third-party apps to call
-  platform methods that require runtime permissions on behalf of a third-party
-  app, you should use the appropriate {@link
-  android.support.v4.content.PermissionChecker} methods to ensure that the
-  other app is allowed to perform the operation. The platform has a
-  compatibility mode that allows users to revoke a legacy app's access to
-  permission-protected methods. If the user revokes access in compatibility
-  mode the app's permissions are not actually revoked; instead, access to the
-  APIs is restricted. The {@link android.support.v4.content.PermissionChecker}
-  methods verify app permissions in both normal and legacy modes.
-</p>
-
-<p>
-  The v13 support library provides the following permissions methods:
-</p>
-
-<dl>
-  <dt>
-    {@link android.support.v13.app.FragmentCompat#requestPermissions
-    FragmentCompat.requestPermissions()}
-  </dt>
-
-  <dd>
-    If the device is not running the M Preview, invokes the callback
-    method in <code>FragmentCompat.OnRequestPermissionsResultCallback</code>.
-    Passes {@link android.content.pm.PackageManager#PERMISSION_GRANTED
-    PERMISSION_GRANTED} if the app already has the specified permission, or
-    {@link android.content.pm.PackageManager#PERMISSION_DENIED
-    PERMISSION_DENIED} if it does not.
-  </dd>
-
-  <dt>
-    {@link
-    android.support.v13.app.FragmentCompat#shouldShowRequestPermissionRationale
-    FragmentCompat.shouldShowRequestPermissionRationale()}
-  </dt>
-
-  <dd>
-    If the device is not running the M Preview, always returns
-    <code>false</code>.
-  </dd>
-</dl>
-
-<h3 id="normal">Normal permissions</h3>
-
-<p>
-  Many permissions are designated as {@link
-  android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL},
-  which indicates that
-  there's no great risk to the user's privacy or security in letting apps have
-  those permissions. For example, users would reasonably want to know whether
-  an app can read their contact information, so users have to grant this
-  permission explicitly. By contrast, there's no great risk in allowing an app
-  to vibrate the device, so that permission is designated as <em>normal.</em>
-</p>
-
-<p>
-  If an app declares in its
-  manifest that it needs a normal permission, the system automatically grants
-  the app
-  that permission at install time. The system does not prompt the user
-  to grant normal
-  permissions, and users cannot revoke these permissions.
-</p>
-
-<p>
-  If your app declares that it needs normal permissions, the app does not need
-  to call {@link android.content.Context#checkSelfPermission
-  checkSelfPermission()} or {@link android.app.Activity#requestPermissions
-  requestPermissions()} for those permissions. Since you declared the
-  permissions in the manifest, you can be sure your app was granted those
-  permissions at install time.
-</p>
-
-<p>Currently, the following permissions are classified as {@link
-    android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}:</p>
-
-<ul>
-  <li><code>android.permission.ACCESS_LOCATION_EXTRA_COMMANDS</code></li>
-  <li><code>android.permission.ACCESS_NETWORK_STATE</code></li>
-  <li><code>android.permission.ACCESS_NOTIFICATION_POLICY</code></li>
-  <li><code>android.permission.ACCESS_WIFI_STATE</code></li>
-  <li><code>android.permission.ACCESS_WIMAX_STATE</code></li>
-  <li><code>android.permission.BLUETOOTH</code></li>
-  <li><code>android.permission.BLUETOOTH_ADMIN</code></li>
-  <li><code>android.permission.BROADCAST_STICKY</code></li>
-  <li><code>android.permission.CHANGE_NETWORK_STATE</code></li>
-  <li><code>android.permission.CHANGE_WIFI_MULTICAST_STATE</code></li>
-  <li><code>android.permission.CHANGE_WIFI_STATE</code></li>
-  <li><code>android.permission.CHANGE_WIMAX_STATE</code></li>
-  <li><code>android.permission.DISABLE_KEYGUARD</code></li>
-  <li><code>android.permission.EXPAND_STATUS_BAR</code></li>
-  <li><code>android.permission.FLASHLIGHT</code></li>
-  <li><code>android.permission.GET_ACCOUNTS</code></li>
-  <li><code>android.permission.GET_PACKAGE_SIZE</code></li>
-  <li><code>android.permission.INTERNET</code></li>
-  <li><code>android.permission.KILL_BACKGROUND_PROCESSES</code></li>
-  <li><code>android.permission.MODIFY_AUDIO_SETTINGS</code></li>
-  <li><code>android.permission.NFC</code></li>
-  <li><code>android.permission.READ_SYNC_SETTINGS</code></li>
-  <li><code>android.permission.READ_SYNC_STATS</code></li>
-  <li><code>android.permission.RECEIVE_BOOT_COMPLETED</code></li>
-  <li><code>android.permission.REORDER_TASKS</code></li>
-  <li><code>android.permission.REQUEST_INSTALL_PACKAGES</code></li>
-  <li><code>android.permission.SET_TIME_ZONE</code></li>
-  <li><code>android.permission.SET_WALLPAPER</code></li>
-  <li><code>android.permission.SET_WALLPAPER_HINTS</code></li>
-  <li><code>android.permission.SUBSCRIBED_FEEDS_READ</code></li>
-  <li><code>android.permission.TRANSMIT_IR</code></li>
-  <li><code>android.permission.USE_FINGERPRINT</code></li>
-  <li><code>android.permission.VIBRATE</code></li>
-  <li><code>android.permission.WAKE_LOCK</code></li>
-  <li><code>android.permission.WRITE_SYNC_SETTINGS</code></li>
-  <li><code>com.android.alarm.permission.SET_ALARM</code></li>
-  <li><code>com.android.launcher.permission.INSTALL_SHORTCUT</code></li>
-  <li><code>com.android.launcher.permission.UNINSTALL_SHORTCUT</code></li>
-</ul>
diff --git a/docs/html/preview/features/scoped-folder-access.jd b/docs/html/preview/features/scoped-folder-access.jd
new file mode 100644
index 0000000..932d8a9
--- /dev/null
+++ b/docs/html/preview/features/scoped-folder-access.jd
@@ -0,0 +1,125 @@
+page.title=Scoped Directory Access
+page.keywords=preview,sdk,scoped directory access
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>In this document</h2>
+  <ol>
+    <li><a href="#accessing">Accessing an External Storage Directory</a></li>
+    <li><a href="#removable">Accessing a Directory on Removable Media</a></li>
+    <li><a href="#best">Best Practices</a></li>
+  </ol>
+</div>
+</div>
+
+<p>Apps such as photo apps usually just need access to specific directories in
+external storage, such as the <code>Pictures</code> directory. Existing
+approaches to accessing external storage aren't designed to easily provide
+targeted directory access for these types of apps. For example:</p>
+
+<ul>
+<li>Requesting {@link android.Manifest.permission#READ_EXTERNAL_STORAGE}
+or {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} in your manifest
+allows access to all public directories on external storage, which might be
+more access than what your app needs.</li>
+<li>Using the
+<a href="{@docRoot}guide/topics/providers/document-provider.html">Storage
+Access Framework</a> usually makes your user pick directories
+via a system UI, which is unnecessary if your app always accesses the same
+external directory.</li>
+</ul>
+
+<p>Android N provides a new simplified API to access
+common external storage directories. </p>
+
+<h2 id="accessing">Accessing an External Storage Directory</h2>
+
+<p>Use the <code>StorageManager</code> class to get the appropriate
+<code>StorageVolume</code> instance. Then, create an intent by calling the
+<code>StorageVolume.createAccessIntent()</code> method of that instance.
+Use this intent to access external storage directories. To get a list of
+all available volumes, including removable media volumes, use
+<code>StorageManager.getVolumesList()</code>.</p>
+
+<p>The following code snippet is an example of how to open the
+<code>Pictures</code> directory in the primary shared storage:</p>
+
+<pre>
+StorageManager sm = (StorageManager)getSystemService(Context.STORAGE_SERVICE);
+StorageVolume volume = sm.getPrimaryVolume();
+Intent intent = volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<p>The system attempts to grant access to the external directory, and if
+necessary confirms access with the user using a simplified UI:</p>
+
+<img src="{@docRoot}preview/images/scoped-folder-access-framed.png"
+srcset="{@docRoot}preview/images/scoped-folder-access-framed.png 1x,
+{@docRoot}preview/images/scoped-folder-access-framed_2x.png 2x" />
+<p class="img-caption"><strong>Figure 1.</strong> An application requesting
+access to the Pictures directory.</p>
+
+<p>If the user grants access, the system calls your
+<code>onActivityResult()</code> override with a result code of
+<code>Activity.RESULT_OK</code>, and intent data that contains the URI. Use
+the provided URI to access directory information, similar to using URIs
+returned by the
+<a href="{@docRoot}guide/topics/providers/document-provider.html">Storage
+Access Framework</a>.</p>
+
+<p>If the user doesn't grant access, the system calls your
+<code>onActivityResult()</code> override with a result code of
+<code>Activity.RESULT_CANCELED</code>, and null intent data.</p>
+
+<p class="note"><b>Note</b>: Getting access to a specific external directory
+also gains access to subdirectories within that directory.</p>
+
+<h2 id="removable">Accessing a Directory on Removable Media</h2>
+
+<p>To use Scoped Directory Access to access directories on removable media,
+first add a {@link android.content.BroadcastReceiver} that listens for the
+{@link android.os.Environment#MEDIA_MOUNTED} notification, for example:</p>
+
+<pre>
+&lt;receiver
+    android:name=".MediaMountedReceiver"
+    android:enabled="true"
+    android:exported="true" &gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.MEDIA_MOUNTED" /&gt;
+        &lt;data android:scheme="file" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/receiver&gt;
+</pre>
+
+<p>When the user mounts removable media, like an SD card, the system sends a
+{@link android.os.Environment#MEDIA_MOUNTED} notification. This notification
+provides a <code>StorageVolume</code> object in the intent data that you can
+use to access directories on the removable media. The following example
+accesses the <code>Pictures</code> directory on removable media:</p>
+
+<pre>
+// BroadcastReceiver has already cached the MEDIA_MOUNTED
+// notification Intent in mediaMountedIntent
+StorageVolume volume = (StorageVolume)
+    mediaMountedIntent.getParcelableExtra(StorageVolume.EXTRA_STORAGE_VOLUME);
+volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
+startActivityForResult(intent, request_code);
+</pre>
+
+<h2 id="best">Best Practices</h2>
+
+<p>Where possible, persist the external directory access URI so you don't have
+to repeatedly ask the user for access. Once the user has granted access, call
+<code>getContentResolver().takePersistableUriPermssion()</code> with the
+directory access URI. The system will persist the URI and subsequent access
+requests will return <code>RESULT_OK</code> and not show confirmation UI to the
+user.</p>
+
+<p>If the user denies access to an external directory, do not immediately
+request access again. Repeatedly insisting on access results in a poor user
+experience.</p>
diff --git a/docs/html/preview/features/security-config.jd b/docs/html/preview/features/security-config.jd
new file mode 100644
index 0000000..607e8f3
--- /dev/null
+++ b/docs/html/preview/features/security-config.jd
@@ -0,0 +1,749 @@
+page.title=Network Security Configuration
+page.keywords=preview,security,network
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>In this document</h2>
+<ol>
+  <li><a href="#manifest">Adding a Security Configuration File</a></li>
+  <li><a href="#CustomTrust">Customizing Trusted CAs</a>
+      <ol>
+      <li><a href="#ConfigCustom">Configuring a Trusted Custom CA</a></li>
+      <li><a href="#LimitingCas">Limiting the Set of Trusted CAs</a></li>
+      <li><a href="#TrustingAdditionalCas">Trusting Additional CAs</a></li>
+      </ol>
+  </li>
+  <li><a href="#TrustingDebugCa">Debugging-only CAs</a></li>
+  <li><a href="#UsesCleartextTraffic">Opting Out of Cleartext Traffic</a></li>
+  <li><a href="#CertificatePinning">Pinning Certificates</a></li>
+  <li><a href="#ConfigInheritance">Configuration Inheritance Behavior</a></li>
+  <li><a href="#FileFormat">Configuration File Format</a></li>
+</ol>
+</div>
+</div>
+
+
+<p>
+  Android N includes a Network Security Configuration
+  feature that lets apps customize their network security settings in a safe,
+  declarative configuration file without modifying app code. These settings can
+  be configured for specific domains and for a specific app. The key
+  capabilities of this feature are as follows:
+</p>
+
+<ul>
+  <li>
+    <b>Custom trust anchors:</b> Customize which Certificate Authorities (CA)
+    are trusted for an app's secure connections. For
+    example, trusting particular self-signed certificates or restricting the
+    set of public CAs that the app trusts.
+  </li>
+
+  <li>
+    <b>Debug-only overrides:</b> Safely debug secure connections in an app
+    without added risk to the installed base.
+  </li>
+
+  <li>
+    <b>Cleartext traffic opt-out:</b> Protect apps from from
+    accidental usage of cleartext traffic.
+  </li>
+
+  <li>
+    <b>Certificate pinning:</b> Restrict an app's secure connection to
+    particular certificates.
+  </li>
+</ul>
+
+
+<h2 id="manifest">Adding a Security Configuration File</h2>
+
+<p>
+  The Network Security Configuration feature uses an XML file where you specify
+  the settings for your app. You must include an entry in the manifest of your
+  app to point to this file. The following code excerpt from a manifest
+  demonstrates how to create this entry:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+...
+&lt;application ...&gt;
+    &lt;meta-data android:name="android.security.net.config"
+               android:resource="@xml/network_security_config" /&gt;
+    ...
+&lt;/application&gt;
+</pre>
+
+<h2 id="CustomTrust">Customizing Trusted CAs</h2>
+
+<p>
+  An app may want to trust a custom set of CAs instead of the platform
+  default. The most common reasons of this are:
+</p>
+
+<ul>
+  <li>Connecting to a host with a custom certificate authority(self-signed,
+  issued by an internal corporate CA, etc).
+  </li>
+
+  <li>Limiting the set of CAs to only the CAs you trust instead of every
+  preinstalled CA.
+  </li>
+
+  <li>Trusting additional CAs not included in the system.
+  </li>
+</ul>
+
+<p>
+  By default secure (e.g. TLS, HTTPS) connections from all apps trust
+  the pre-installed system CAs, and apps targeting API level 23
+  (Android M) and below also trust the user-added CA store by default. An
+  app can customize its own connections using {@code base-config} (for
+  app-wide customization) or {@code domain-config} (for per-domain
+  customization).
+</p>
+
+
+<h3 id="ConfigCustom">Configuring a Custom CA</h3>
+
+<p>
+  Assume you want to connect to your host which uses a self-signed SSL
+  certificate or to a host whose SSL certificate is issued by a non-public CA
+  which you trust, such as your company's internal CA.
+</p>
+
+<p>
+  <code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  Add the self-signed or non-public CA certificate, in PEM or DER format, to
+  {@code res/raw/my_ca}.
+</p>
+
+
+<h3 id="LimitingCas">Limiting the Set of Trusted CAs</h3>
+
+<p>
+  An app that does not want to trust all CAs trusted by system can
+  instead specify its own reduced set of CAs to trust. This protects the
+  app from fradulent certificates issued by any of the other CAs.
+</p>
+
+<p>
+  The config to limit the set of trusted CAs is similar to <a href=
+  "#TrustingACustomCa">trusting a custom CA</a> for a specific domain except
+  that multiple CAs are provided in the resource.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;domain includeSubdomains="true"&gt;cdn.example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/trusted_roots"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+<p>
+  Add the trusted CAs, in PEM or DER format, to {@code res/raw/trusted_roots}.
+  Note that if using PEM format the file must contain <em>only</em> PEM data
+  and no extra text. You can also provide multiple
+  <a href="#certificates"><code>&lt;certificates&gt;</code></a>
+elements instead of one.
+</p>
+
+
+<h3 id="TrustingAdditionalCas">
+  Trusting Additional CAs
+</h3>
+
+<p>
+  An app may want to trust additional CAs not trusted by the system,
+  this could be due to the system not yet including the CA or a CA that does
+  not meet the requirements for inclusion into the Android system. An
+  app can do this by specifying multiple certificate sources for a
+  configuration.
+</p>
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/extracas"/&gt;
+            &lt;certificates src="system"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="TrustingDebugCa">Configuring CAs for Debugging</h2>
+
+<p>
+  When debugging an app that connects over HTTPS you may want to
+  connect to a local development server, which does not have the SSL
+  certificate for your production server. In order to support this without any
+  modification to your app's code you can specify debug-only CAs that
+  are <i>only</i> trusted when <a href=
+  "{@docRoot}guide/topics/manifest/application-element.html#debug">
+android:debuggable</a>
+  is {@code true} by using {@code debug-overrides}. Normally IDEs and build
+  tools set this flag automatically for non-release builds.
+</p>
+
+<p>
+  This is safer than the usual conditional code because, as a security
+  precaution, app stores do not accept apps which are marked
+  debuggable.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/debug_cas"/&gt;
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="UsesCleartextTraffic">Opting Out of Cleartext Traffic</h2>
+
+<p>
+  Applications intending to connect to destinations using only secure
+  connections can opt-out of supporting cleartext (using unencrypted HTTP
+  protocol instead of HTTPS) to those destinations. This option helps prevent
+  accidental regressions in apps due to changes in URLs provided by external
+  sources such as backend servers.
+  See {@link android.security.NetworkSecurityPolicy#isCleartextTrafficPermitted
+  NetworkSecurityPolicy.isCleartextTrafficPermitted()} for more details.
+</p>
+
+<p>
+  For example, an app may want to ensure that all connections to {@code
+  secure.example.com} are always done over HTTPS to protect sensitive traffic
+  from hostile networks.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config usesCleartextTraffic="false"&gt;
+        &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="CertificatePinning">Pinning Certificates</h2>
+
+<p>
+  Normally an app trusts all preinstalled CAs. If any of these CAs were
+  to issue a fradulent certificate the app would be at risk from a MiTM
+  attack. Some apps choose to limit the set of certificates they accept
+  by either limiting the set of CAs they trust or by certificate pinning.
+</p>
+
+<p>
+  Certificate pinning is done by providing a set of certificates by hash of the
+  public key (SubjectPublicKeyInfo of the X.509 certificate). A certificate
+  chain is then only valid if the certificate chain contains at least one of
+  the pinned public keys.
+</p>
+
+<p>
+  Note that when using certificate pinning you should always include a backup
+  key so that if you are forced to switch to new keys, or change CAs (when
+  pinning to a CA certificate or an intermediate of that CA), your
+  app's connectivity is unaffected. Otherwise you must to push out
+  an update to the app to restore connectivity.
+</p>
+
+<p>
+  Additionally it is possible to set an expiration time for pins after which
+  pinning is not performed. This helps prevent connectivity issues in
+  apps which have not been updated. However, setting an expiration time
+  on pins may enable pinning bypass.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;pin-set expiration="2018-01-01"&gt;
+            &lt;pin digest="SHA-256"&gt;7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=&lt;/pin&gt;
+            &lt;!-- backup pin --&gt
+            &lt;pin digest="SHA-256"&gt;fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=&lt;/pin&gt;
+        &lt;/pin-set&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="ConfigInheritance">Configuration Inheritance Behavior</h2>
+
+<p>
+  Values not set in a specific config are inherited. This behavior allows more
+  complex configurations while keeping the configuration file readable.
+</p>
+
+<p>
+  If a value is not set in a specific entry then value from the next more
+  general entry is used. Values not set in a {@code domain-config} is
+  taken from the parent {@code domain-config}, if nested, or from the {@code
+  base-config} if not. Values not set in the {@code base-config} uses the
+  platform default values.
+</p>
+
+<p>
+  For example consider, where all connections to subdomains of {@code
+  example.com} must use a custom set of CAs. Additonally cleartext traffic to
+  these domains is permitted <em>except</em> when connecting to {@code
+  secure.example.com}. By nesting the configuration for {@code
+  secure.example.com} inside the configuration for {@code example.com} the
+  {@code trust-anchors} does not need to be duplicated.
+</p>
+
+<p>
+<code>res/xml/network_security_config.xml</code>:
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;domain-config&gt;
+        &lt;domain includeSubdomains="true"&gt;example.com&lt;/domain&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="@raw/my_ca"/&gt;
+        &lt;/trust-anchors&gt;
+        &lt;domain-config cleartextTrafficPermitted="false"&gt;
+            &lt;domain includeSubdomains="true"&gt;secure.example.com&lt;/domain&gt;
+        &lt;/domain-config&gt;
+    &lt;/domain-config&gt;
+&lt;/network-security-config&gt;
+</pre>
+</p>
+
+
+<h2 id="FileFormat">Configuration File Format</h2>
+
+<p>
+  The Network Security Configuration feature uses an XML file format.
+  The overall structure of the file is shown in the following code sample:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;network-security-config&gt;
+    &lt;base-config&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/base-config&gt;
+
+    &lt;domain-config&gt;
+        &lt;domain&gt;android.com&lt;/domain&gt;
+        ...
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+        &lt;pin-set&gt;
+            &lt;pin digest="..."&gt;...&lt;/pin&gt;
+            ...
+        &lt;/pin-set&gt;
+    &lt;/domain-config&gt;
+    ...
+    &lt;debug-overrides&gt;
+        &lt;trust-anchors&gt;
+            &lt;certificates src="..."/&gt;
+            ...
+        &lt;/trust-anchors&gt;
+    &lt;/debug-overrides&gt;
+&lt;/network-security-config&gt;
+</pre>
+
+<p>
+  The following sections describe the syntax and other details of the file
+  format.
+</p>
+
+<h3 id="network-security-config">
+  &lt;network-security-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    can contain:
+  </dt>
+
+  <dd>
+    0 or 1 of <code><a href="#base-config">&lt;base-config&gt;</a></code><br>
+    Any number of <code><a href=
+    "#domain-config">&lt;domain-config&gt;</a></code><br>
+    0 or 1 of <code><a href="#debug-overrides">&lt;debug-overrides&gt;</a></code>
+  </dd>
+</dl>
+
+<h3 id="base-config">
+  &lt;base-config&gt;
+</h3>
+
+<dl class="xml">
+  <dt>
+    syntax:
+  </dt>
+</dl>
+
+<pre class="stx">
+&lt;base-config <a href=
+"#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/base-config&gt;
+</pre>
+<dl class="xml">
+  <dt>
+    can contain:
+  </dt>
+
+  <dd>
+    <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    description:
+  </dt>
+
+  <dd>
+    The default configuration used by all connections whose destination is not
+    covered by a <a href="#domain-config"><code>domain-config</code></a>.
+
+<p>
+  Any values that are not set use the platform default values. The default
+  configuration for apps targeting above API level 24 and above:
+</p>
+
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+The default configuration for apps targeting API level 23 and below is:
+<pre>
+&lt;base-config usesCleartextTraffic="true"&gt;
+    &lt;trust-anchors&gt;
+        &lt;certificates src="system" /&gt;
+        &lt;certificates src="user" /&gt;
+    &lt;/trust-anchors&gt;
+&lt;/base-config&gt;
+</pre>
+
+  </dd>
+</dl>
+
+<h3 id="domain-config">&lt;domain-config&gt;</h3>
+<dl class="xml">
+<dt>syntax:</dt>
+<dd>
+<pre class="stx">&lt;domain-config <a href="#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]&gt;
+    ...
+&lt;/domain-config&gt;</pre>
+</dd>
+
+<dt>Can Contain:</dt>
+
+<dd>
+1 or more <code><a href="#domain">&lt;domain&gt;</a></code>
+<br/>0 or 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+<br/>0 or 1 <code><a href="#pin-set">&lt;pin-set&gt;</code></a>
+<br/>Any number of nested <code>&lt;domain-config&gt;</code></dd>
+
+<dt>Description</dt>
+<dd>Configuration used for connections to specific destinations as the defined by {@code domain} elements.
+
+<p>Note that if multiple {@code domain-config} elements cover a destination the config with the most specific (longest)
+matching domain rule is used.</p></dd>
+</dl>
+
+
+<h3 id="domain">&lt;domain&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    syntax:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;domain includeSubdomains=["true" | "false"]&gt;example.com&lt;/domain&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Attributes:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code includeSubdomains}
+      </dt>
+
+      <dd>
+        If {@code "true"} then this domain rule matches the domain and all
+        subdomains, including subdomains of subdomains, otherwise the rule only
+        applies to exact matches.
+      </dd>
+    </dl>
+  </dd>
+
+  <dt>
+    Description:
+  </dt>
+</dl>
+
+<h3 id="debug-overrides">&lt;debug-overrides&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    syntax:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;debug-overrides&gt;
+    ...
+&lt;/debug-overrides&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Can Contain:
+  </dt>
+
+  <dd>
+    0 or 1 <code><a href="#trust-anchors">&lt;trust-anchors&gt;</a></code>
+  </dd>
+
+  <dt>
+    Description:
+  </dt>
+
+  <dd>
+    Overrides to be applied when <a href=
+    "{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+    is {@code "true"} which is normally the case for non-release builds
+    generated by IDEs and build tools. Trust anchors specified in {@code
+    debug-overrides} are added to all other configurations and certificate
+    pinning is not performed when the server's certificate chain uses one of
+    these debug-only trust anchors. If <a href=
+    "{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
+    is {@code "false"} then this section is completely ignored.
+  </dd>
+</dl>
+
+<h3 id="trust-anchors">&lt;trust-anchors&gt;</h3>
+<dl class="xml">
+  <dt>
+    syntax:
+  </dt>
+
+  <dd>
+    <pre class="stx">
+&lt;trust-anchors&gt;
+...
+&lt;/trust-anchors&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Can Contain:
+  </dt>
+
+  <dd>
+    Any number of <code><a href="#certificates">&lt;certificates&gt;</a></code>
+  </dd>
+
+  <dt>
+    Description:
+  </dt>
+
+  <dd>
+    Set of trust anchors for secure connections.
+  </dd>
+</dl>
+
+
+<h3 id="certificates">&lt;certificates&gt;</h3>
+<dl class="xml">
+<dt>syntax:</dt>
+<dd><pre class="stx">&lt;certificates src=["system" | "user" | "<i>raw resource</i>"]
+              overridePins=["true" | "false"] /&gt;
+</pre></dd>
+<dt>description:</dt>
+<dd>Set of X.509 certificates for {@code trust-anchors} elements.</dd>
+
+<dt>attributes:</dt>
+<dd><dl class="attr">
+<dt>{@code src}</dt>
+<dd>
+The source of CA certificates, can be one of
+<ul>
+  <li>a raw resource id pointing to a file containing X.509 certificates.
+  Certificates must be encoded in DER or PEM format. In the case of PEM
+  certificates the file <em>must not</em> contain extra non-PEM data such as
+  comments.
+  </li>
+
+  <li>{@code "system"} for the pre-installed system CA certificates
+  </li>
+
+  <li>{@code "user"} for user-added CA certificates
+  </li>
+</ul>
+</dd>
+
+<dt>{@code overridePins}</dt>
+<dd>
+  <p>
+    Specifies if the CAs from this source bypass certificate pinning. If {@code
+    "true"} then certificate chains which chain through one of the CAs from this
+    source then pinning is not be performed. This can be useful for debug CAs
+    or to support letting the user MiTM your app's secure traffic.
+  </p>
+
+  <p>
+    Default is {@code "false"} unless specified in a {@code debug-overrides}
+    element, in which case the default is {@code "true"}.
+  </p>
+</dd>
+</dl>
+</dd>
+
+
+<h3 id="pin-set">&lt;pin-set&gt;</h3>
+
+<dl class="xml">
+  <dt>
+    syntax:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin-set expiration="date"&gt;
+...
+&lt;/pin-set&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Can Contain:
+  </dt>
+
+  <dd>
+    Any number of <code><a href="#pin">&lt;pin&gt;</a></code>
+  </dd>
+
+  <dt>
+    Description:
+  </dt>
+
+  <dd>
+    A set of public key pins. For a secure connection to be trusted, one of the
+    public keys in the chain of trust must be in the set of pins. See
+    <code><a href="#pin">&lt;pin&gt;</a></code> for the format of pins.
+  </dd>
+
+  <dt>
+    Attributes:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code expiration}
+      </dt>
+
+      <dd>
+        The date, in {@code yyyy-MM-dd} format, at and after which the pins
+        expire, thus disabling pinning. If the attribute is not set then the
+        pins do not expire.
+        <p>
+          Expiration helps prevent connectivity issues in apps which do
+          not get updates to their pin set, for example because the user
+          disabled app updates.
+        </p>
+      </dd>
+    </dl>
+  </dd>
+</dl>
+
+<h3 id="pin">&lt;pin&gt;</h3>
+<dl class="xml">
+  <dt>
+    syntax:
+  </dt>
+
+  <dd>
+<pre class="stx">
+&lt;pin digest=["SHA-256"]&gt;base64 encoded digest of X.509
+    SubjectPublicKeyInfo (SPKI)&lt;/pin&gt;
+</pre>
+  </dd>
+
+  <dt>
+    Attributes:
+  </dt>
+
+  <dd>
+    <dl class="attr">
+      <dt>
+        {@code digest}
+      </dt>
+
+      <dd>
+        The digest algorithm used to generate the pin. Currently only
+        {@code "SHA-256"} is supported.
+      </dd>
+    </dl>
+  </dd>
+</dl>
diff --git a/docs/html/preview/features/tv-recording-api.jd b/docs/html/preview/features/tv-recording-api.jd
new file mode 100644
index 0000000..b62dd46
--- /dev/null
+++ b/docs/html/preview/features/tv-recording-api.jd
@@ -0,0 +1,125 @@
+page.title=TV Recording
+page.keywords=preview,sdk,tv,recording
+page.tags=androidn
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>In this document</h2>
+  <ol>
+    <li><a href="#supporting">Indicating Support for Recording</a></li>
+    <li><a href="#recording">Recording a Session</a></li>
+    <li><a href="#errors">Handling Recording Errors</a></li>
+    <li><a href="#sessions">Managing Recorded Sessions</a></li>
+    <li><a href="#best">Best Practices</a></li>
+  </ol>
+</div>
+</div>
+
+<p>TV input services let the user pause and resume channel playback via
+time-shifting APIs. Android N expands on time-shifting
+by letting the user save multiple recorded sessions.</p>
+
+<p>Users can schedule recordings in advance, or start a recording as they watch
+a program. Once the system has saved a recording, the user can browse, manage,
+and play back the recording using the system TV app.</p>
+
+<p>If you want to provide recording functionality for your TV input service,
+you must indicate to the system that your app supports recording, implement
+the ability to record programs, handle and communicate any errors that occur
+during recording, and manage your recorded sessions.</p>
+
+<p class="note"><strong>Note:</strong> The Live Channels app does not yet
+provide a way for users to create or access recordings. Until changes are
+made to the Live Channels app, it may be difficult to fully test the recording
+experience for your TV input service.</p>
+
+<h2 id="supporting">Indicating Support for Recording</h2>
+
+<p>To tell the system that your TV input service supports recording, follow
+these steps:</p>
+
+<ol>
+<li>In your <code>TvInputService.onCreate()</code> method, create a new
+<code>TvInputInfo</code> object using the <code>TvInputInfo.Builder</code>
+class.</li>
+<li>When creating the new <code>TvInputInfo</code> object, call
+<code>setCanRecord(true)</code> before calling <code>build()</code> to
+indicate your service supports recording.</li>
+<li>Register your <code>TvInputInfo</code> object with the system by calling
+<code>TvInputService.updateTvInputInfo()</code>.</li>
+</ol>
+
+<h2 id="recording">Recording a Session</h2>
+
+<p>After your TV input service registers that it supports recording
+functionality, the system calls your
+<code>TvInputService.onCreateRecordingSession()</code> when it needs to access
+your app's recording implementation. Implement your own
+<code>TvInputService.RecordingSession</code> subclass and return it
+when the <code>onCreateRecordingSession()</code> callback
+fires. This subclass is responsible for switching to the correct channel data,
+recording the requested data, and communicating recording status and errors to
+the system.</p>
+
+<p>When the system calls <code>RecordingSession.onTune()</code>, passing in a
+channel URI, tune to the channel that the URI specifies. Notify the system that
+your app has tuned to the desired channel by calling <code>notifyTuned()</code>,
+or, if your app could not tune to the proper channel, call
+<code>notifyError()</code>.</p>
+
+<p>The system next invokes the <code>RecordingSession.onStartRecording()</code>
+callback. Your app must start recording immediately. When the system invokes
+this callback, it may provide a URI that contains information about the program
+that is about to be recorded. When the recording is done, you need to copy this
+data to the <code>RecordedPrograms</code> data table.</p>
+
+<p>Finally, the system calls <code>RecordingSession.onStopRecording()</code>.
+At this point, your app must stop recording immediately. You also need to
+create an entry in the <code>RecordedPrograms</code> table. This entry should
+include the recorded session data URI in the
+<code>RecordedPrograms.COLUMN_RECORDING_DATA_URI</code> column, and any program
+information that the system provided in the initial call to
+<code>onStartRecording()</code>.</p>
+
+<p>For more details on how to access the <code>RecordedPrograms</code> table
+see <a href="#sessions">Managing Recorded Sessions</a>.</p>
+
+<h2 id="errors">Handling Recording Errors</h2>
+
+<p>If an error occurs during recording, rendering the recorded data unusable,
+notify the system by calling <code>RecordingSession.notifyError()</code>.
+Similarly, you can call <code>notifyError()</code> after a recording session is
+created to let the system know that your app can no longer record sessions.</p>
+
+<p>If an error occurs during recording, but you'd like to provide a usable
+partial recording to users for playback, call
+<code>RecordingSession.notifyRecordingStopped()</code> to enable the system to
+use the partial session.</p>
+
+<h2 id="sessions">Managing Recorded Sessions</h2>
+
+<p>The system maintains information for all recorded sessions from all
+recording-capable channel apps in the <code>TvContract.RecordedPrograms</code>
+content provider table. This information is accessible via the
+<code>RecordedPrograms.Uri</code> content URI. Use content provider APIs to
+read, add, and delete entries from this table.</p>
+
+<p>For more information on working with content provider data see
+<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
+Content Provider Basics</a> .</p>
+
+<h2 id="best">Best Practices</h2>
+
+<p>TV devices may have limited storage, so use your best judgment when
+allocating storage to save recorded sessions. Use
+<code>RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE)</code> when
+there isn't enough space to save a recorded session.</p>
+
+<p>When the user initiates recording, you should start recording data as soon
+as possible. To facilitate this, complete any up-front time-consuming tasks,
+like accessing and allocating storage space, when the system invokes the
+<code>onCreateRecordingSession()</code> callback. Doing so lets you start
+recording immediately when the <code>onStartRecording()</code> callback
+fires.</p>
diff --git a/docs/html/preview/guide.jd b/docs/html/preview/guide.jd
new file mode 100644
index 0000000..28c0fe9
--- /dev/null
+++ b/docs/html/preview/guide.jd
@@ -0,0 +1,190 @@
+page.title=Testing Guide
+page.image=images/cards/card-n-guide_2x.png
+meta.tags="preview", "testing"
+page.tags="preview", "developer preview"
+
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+      <ol>
+        <li><a href="#runtime-permissions">Testing Permissions</a></li>
+        <li><a href="#doze-standby">Testing Doze and App Standby</a></li>
+        <li><a href="#ids">Auto Backup and Device Identifiers</a></li>
+      </ol>
+  </div>
+</div>
+
+<p>
+  Android N gives you an opportunity to ensure your apps work with the next
+  version of the platform. This preview includes a number of APIs and behavior changes that can
+  impact your app, as described in the <a href="{@docRoot}preview/api-overview.html">API
+  Overview</a> and <a href="{@docRoot}preview/behavior-changes.html">Behavior Changes</a>. In testing
+  your app with the preview, there are some specific system changes that you should focus on to
+  ensure that users have a good experience.
+</p>
+
+<p>
+  This guide describes the what and how to test preview features with your app. You should
+  prioritize testing of these specific preview features, due to their high potential impact on your
+  app's behavior:
+</p>
+
+<ul>
+  <li><a href="#runtime-permissions">Permissions</a>
+  </li>
+  <li><a href="#doze-standby">Doze and App Standby</a>
+  </li>
+  <li><a href="#ids">Auto Backup and Device Identifiers</a></li>
+</ul>
+
+<p>
+  For more information about how to set up devices or virtual devices with a preview system image
+  for testing, see <a href="{@docRoot}preview/setup-sdk.html">Set up
+the Android N SDK</a>.
+</p>
+
+
+<h2 id="runtime-permissions">Testing Permissions</h2>
+
+<p>
+  The new <a href="{@docRoot}preview/features/runtime-permissions.html">Permissions</a> model
+  changes the way that permissions are allocated to your app by the user. Instead of granting all
+  permissions during the install procedure, your app must ask the user for individual permissions
+  at runtime. For users this behavior provides more granular control over each app’s activities, as
+  well as better context for understanding why the app is requesting a specific permission. Users
+  can grant or revoke the permissions granted to an app individually at any time. This feature of
+  the preview is most likely to have an impact on your app's behavior and may prevent some of your
+  app features from working, or they may work in a degraded state.
+</p>
+
+<p class="caution">
+  This change affects all apps running on the new platform, even those not targeting the new
+  platform version. The platform provides a limited compatibility behavior for legacy apps, but you
+  should begin planning your app’s migration to the new permissions model now, with a goal of
+  publishing an updated version of your app at the official platform launch.
+</p>
+
+
+<h3 id="permission-test-tips">Test tips</h3>
+
+<p>
+  Use the following test tips to help you plan and execute testing of your app with the new
+  permissions behavior.
+</p>
+
+<ul>
+  <li>Identify your app’s current permissions and the related code paths.</li>
+  <li>Test user flows across permission-protected services and data.</li>
+  <li>Test with various combinations of granted/revoked permission.</li>
+  <li>Use the {@code adb} tool to manage permssions from the command line:
+    <ul>
+      <li>List permissions and status by group:
+        <pre>adb shell pm list permissions -d -g</pre>
+      </li>
+      <li>Grant or revoke one or more permissions using the following syntax:<br>
+        <pre>adb shell pm [grant|revoke] &lt;permission.name&gt; ...</pre>
+      </li>
+    </ul>
+  </li>
+  <li>Analyze your app for services that use permissions.</li>
+</ul>
+
+<h3 id="permission-test-strategy">Test strategy</h3>
+
+<p>
+  The permissions change affects the structure and design of your app, as well as
+  the user experience and flows you provide to users. You should assess your app’s current
+  permissions use and start planning for the new flows you want to offer. The official release of
+  the platform provides compatibility behavior, but you should plan on updating your app and not
+  rely on these behaviors.
+</p>
+
+<p>
+  Identify the permissions that your app actually needs and uses, and then find the various code
+  paths that use the permission-protected services. You can do this through a combination of
+  testing on the new platform and code analysis. In testing, you should focus on opting in to
+  runtime permissions by changing the app’s {@code targetSdkVersion} to the preview version. For
+  more information, see <a href="{@docRoot}preview/setup-sdk.html#">Set up
+the Android N SDK</a>.
+</p>
+
+<p>
+  Test with various combinations of permissions revoked and added, to highlight the user flows that
+  depend on permissions. Where a dependency is not obvious or logical you should consider
+  refactoring or compartmentalizing that flow to eliminate the dependency or make it clear why the
+  permission is needed.
+</p>
+
+<p>
+  For more information on the behavior of runtime permissions, testing, and best practices, see the
+  <a href="{@docRoot}preview/features/runtime-permissions.html">Permissions</a> developer
+  preview page.
+</p>
+
+
+<h2 id="doze-standby">Testing Doze and App Standby</h2>
+
+<p>
+  The power saving features of Doze and App Standby limit the amount of background processing that
+  your app can perform when a device is in an idle state or while your app is not in focus. The
+  restrictions the system may impose on apps include limited or no network access,
+  suspended background tasks, suspended Notifications, ignored wake requests, and alarms. To ensure
+  that your app behaves properly with these power saving optimizations, you should test your app by
+  simulating these low power states.
+</p>
+
+<h4 id="doze">Testing your app with Doze</h4>
+
+<p>To test Doze with your app:</p>
+
+<ol>
+<li>Configure a hardware device or virtual device with an Android N system image.</li>
+<li>Connect the device to your development machine and install your app.</li>
+<li>Run your app and leave it active.</li>
+<li>Simulate the device going into Doze mode by running the following commands:
+
+<pre>
+$ adb shell dumpsys battery unplug
+$ adb shell dumpsys deviceidle step
+$ adb shell dumpsys deviceidle -h
+</pre>
+
+  </li>
+  <li>Observe the behavior of your app when the device is re-activated. Make sure it
+    recovers gracefully when the device exits Doze.</li>
+</ol>
+
+
+<h4 id="standby">Testing apps with App Standby</h4>
+
+<p>To test the App Standby mode with your app:</p>
+
+<ol>
+  <li>Configure a hardware device or virtual device with an Android N system image.</li>
+  <li>Connect the device to your development machine and install your app.</li>
+  <li>Run your app and leave it active.</li>
+  <li>Simulate the app going into standby mode by running the following commands:
+
+<pre>
+$ adb shell am broadcast -a android.os.action.DISCHARGING
+$ adb shell am set-idle &lt;packageName&gt; true
+</pre>
+
+  </li>
+  <li>Simulate waking your app using the following command:
+    <pre>$ adb shell am set-idle &lt;packageName&gt; false</pre>
+  </li>
+  <li>Observe the behavior of your app when it is woken. Make sure it recovers gracefully
+    from standby mode. In particular, you should check if your app's Notifications and background
+    jobs continue to function as expected.</li>
+</ol>
+
+<h2 id="ids">Auto Backup for Apps and Device-Specific Identifiers</h2>
+
+<p>If your app is persisting any device-specific identifiers, such as Google
+Cloud Messaging registration ID, in internal storage,
+make sure to follow best practices to exclude the storage
+location from auto-backup, as described in <a href="{@docRoot}preview/backup/index.html">Auto
+Backup for Apps</a>. </p>
diff --git a/docs/html/preview/images/bundles.png b/docs/html/preview/images/bundles.png
new file mode 100644
index 0000000..8b022b1
--- /dev/null
+++ b/docs/html/preview/images/bundles.png
Binary files differ
diff --git a/docs/html/preview/images/bundles_2x.png b/docs/html/preview/images/bundles_2x.png
new file mode 100644
index 0000000..4669096
--- /dev/null
+++ b/docs/html/preview/images/bundles_2x.png
Binary files differ
diff --git a/docs/html/preview/images/datasaver.png b/docs/html/preview/images/datasaver.png
new file mode 100644
index 0000000..c5a58fb
--- /dev/null
+++ b/docs/html/preview/images/datasaver.png
Binary files differ
diff --git a/docs/html/preview/images/doze-diagram-1.png b/docs/html/preview/images/doze-diagram-1.png
new file mode 100644
index 0000000..0814447
--- /dev/null
+++ b/docs/html/preview/images/doze-diagram-1.png
Binary files differ
diff --git a/docs/html/preview/images/doze-diagram-2.png b/docs/html/preview/images/doze-diagram-2.png
new file mode 100644
index 0000000..c20c6cb
--- /dev/null
+++ b/docs/html/preview/images/doze-diagram-2.png
Binary files differ
diff --git a/docs/html/preview/images/inline-reply.png b/docs/html/preview/images/inline-reply.png
new file mode 100644
index 0000000..79a1a72
--- /dev/null
+++ b/docs/html/preview/images/inline-reply.png
Binary files differ
diff --git a/docs/html/preview/images/inline-reply_2x.png b/docs/html/preview/images/inline-reply_2x.png
new file mode 100644
index 0000000..13c6e35
--- /dev/null
+++ b/docs/html/preview/images/inline-reply_2x.png
Binary files differ
diff --git a/docs/html/preview/images/inline-type-reply.png b/docs/html/preview/images/inline-type-reply.png
new file mode 100644
index 0000000..b22aacd
--- /dev/null
+++ b/docs/html/preview/images/inline-type-reply.png
Binary files differ
diff --git a/docs/html/preview/images/inline-type-reply_2x.png b/docs/html/preview/images/inline-type-reply_2x.png
new file mode 100644
index 0000000..6e52a80
--- /dev/null
+++ b/docs/html/preview/images/inline-type-reply_2x.png
Binary files differ
diff --git a/docs/html/preview/images/mw-portrait.png b/docs/html/preview/images/mw-portrait.png
new file mode 100644
index 0000000..e752387
--- /dev/null
+++ b/docs/html/preview/images/mw-portrait.png
Binary files differ
diff --git a/docs/html/preview/images/mw-splitscreen.png b/docs/html/preview/images/mw-splitscreen.png
new file mode 100644
index 0000000..bf71999
--- /dev/null
+++ b/docs/html/preview/images/mw-splitscreen.png
Binary files differ
diff --git a/docs/html/preview/images/mw-splitscreen_2x.png b/docs/html/preview/images/mw-splitscreen_2x.png
new file mode 100644
index 0000000..38114db
--- /dev/null
+++ b/docs/html/preview/images/mw-splitscreen_2x.png
Binary files differ
diff --git a/docs/html/preview/images/n-preview-setup.png b/docs/html/preview/images/n-preview-setup.png
new file mode 100644
index 0000000..612e031
--- /dev/null
+++ b/docs/html/preview/images/n-preview-setup.png
Binary files differ
diff --git a/docs/html/preview/images/notifications-1.png b/docs/html/preview/images/notifications-1.png
new file mode 100644
index 0000000..5712002
--- /dev/null
+++ b/docs/html/preview/images/notifications-1.png
Binary files differ
diff --git a/docs/html/preview/images/notifications-2.png b/docs/html/preview/images/notifications-2.png
new file mode 100644
index 0000000..0d07948
--- /dev/null
+++ b/docs/html/preview/images/notifications-2.png
Binary files differ
diff --git a/docs/html/preview/images/notifications-3.png b/docs/html/preview/images/notifications-3.png
new file mode 100644
index 0000000..261d010
--- /dev/null
+++ b/docs/html/preview/images/notifications-3.png
Binary files differ
diff --git a/docs/html/preview/images/notifications-card.png b/docs/html/preview/images/notifications-card.png
new file mode 100644
index 0000000..d9d0590
--- /dev/null
+++ b/docs/html/preview/images/notifications-card.png
Binary files differ
diff --git a/docs/html/preview/images/pip-active.png b/docs/html/preview/images/pip-active.png
new file mode 100644
index 0000000..a24cb03
--- /dev/null
+++ b/docs/html/preview/images/pip-active.png
Binary files differ
diff --git a/docs/html/preview/images/pip-button.png b/docs/html/preview/images/pip-button.png
new file mode 100644
index 0000000..b876b12
--- /dev/null
+++ b/docs/html/preview/images/pip-button.png
Binary files differ
diff --git a/docs/html/preview/images/quicksettings.png b/docs/html/preview/images/quicksettings.png
new file mode 100644
index 0000000..68e1f74
--- /dev/null
+++ b/docs/html/preview/images/quicksettings.png
Binary files differ
diff --git a/docs/html/preview/images/sample-activenotifications.png b/docs/html/preview/images/sample-activenotifications.png
new file mode 100644
index 0000000..8817469
--- /dev/null
+++ b/docs/html/preview/images/sample-activenotifications.png
Binary files differ
diff --git a/docs/html/preview/images/sample-directboot.png b/docs/html/preview/images/sample-directboot.png
new file mode 100644
index 0000000..cc409d3
--- /dev/null
+++ b/docs/html/preview/images/sample-directboot.png
Binary files differ
diff --git a/docs/html/preview/images/sample-messagingservice.png b/docs/html/preview/images/sample-messagingservice.png
new file mode 100644
index 0000000..0d8fb3e
--- /dev/null
+++ b/docs/html/preview/images/sample-messagingservice.png
Binary files differ
diff --git a/docs/html/preview/images/sample-multiwindow.png b/docs/html/preview/images/sample-multiwindow.png
new file mode 100644
index 0000000..979bf61
--- /dev/null
+++ b/docs/html/preview/images/sample-multiwindow.png
Binary files differ
diff --git a/docs/html/preview/images/sample-scopeddirectoryaccess.png b/docs/html/preview/images/sample-scopeddirectoryaccess.png
new file mode 100644
index 0000000..58515dc
--- /dev/null
+++ b/docs/html/preview/images/sample-scopeddirectoryaccess.png
Binary files differ
diff --git a/docs/html/preview/images/scoped-folder-access-framed.png b/docs/html/preview/images/scoped-folder-access-framed.png
new file mode 100644
index 0000000..0169e41
--- /dev/null
+++ b/docs/html/preview/images/scoped-folder-access-framed.png
Binary files differ
diff --git a/docs/html/preview/images/scoped-folder-access-framed_2x.png b/docs/html/preview/images/scoped-folder-access-framed_2x.png
new file mode 100644
index 0000000..fd59ef1
--- /dev/null
+++ b/docs/html/preview/images/scoped-folder-access-framed_2x.png
Binary files differ
diff --git a/docs/html/preview/images/screen-zoom-1.png b/docs/html/preview/images/screen-zoom-1.png
new file mode 100644
index 0000000..f62d04e
--- /dev/null
+++ b/docs/html/preview/images/screen-zoom-1.png
Binary files differ
diff --git a/docs/html/preview/images/screen-zoom-2.png b/docs/html/preview/images/screen-zoom-2.png
new file mode 100644
index 0000000..172b5b3
--- /dev/null
+++ b/docs/html/preview/images/screen-zoom-2.png
Binary files differ
diff --git a/docs/html/preview/images/studio-jdk-location.jpg b/docs/html/preview/images/studio-jdk-location.jpg
new file mode 100644
index 0000000..1b1ba23
--- /dev/null
+++ b/docs/html/preview/images/studio-jdk-location.jpg
Binary files differ
diff --git a/docs/html/preview/index.jd b/docs/html/preview/index.jd
index db9a957..bce5dec 100644
--- a/docs/html/preview/index.jd
+++ b/docs/html/preview/index.jd
@@ -1,38 +1,49 @@
-page.title=Android M Developer Preview
-page.tags="preview",
-meta.tags="preview, M preview", androidm
+page.title=Android N Developer Preview
+page.tags="preview","developer"
+meta.tags="preview", "android"
 fullpage=true
-section.landing=true
+forcelocalnav=true
 header.hide=1
 footer.hide=1
 @jd:body
 
-<section class="dac-expand dac-hero dac-light" >
-  <div class="wrap">
-    <div class="cols dac-hero-content">
-      <div class="col-9of16 col-push-7of16 dac-hero-figure">
-        <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png"
-             srcset="{@docRoot}images/home/devices-hero_620px.png 1x,
-             {@docRoot}images/home/devices-hero_620px_2x.png 2x">
-      </div>
-      <div class="col-7of16 col-pull-9of16">
-        <h1 class="dac-hero-title">Android M Developer Preview</h1>
+<script>
+  $(document).ready(function() {
+    if (useUpdatedTemplates) {
+      $("#useUpdatedTemplates").css("display","block");
+    } else {
+      $("#useOldTemplates").css("display","block");
+    }
+  })
+</script>
+
+<section class="dac-expand dac-hero dac-light" style="background-color:#B2DFDB">
+  <div class="wrap" style="max-width:1100px;margin-top:0">
+    <div class="cols dac-hero-content" style="padding-bottom:1em;">
+
+      <div class="col-7of16 col-push-9of16" style="padding-left:2em">
+        <h1 class="dac-hero-title">Android N Developer Preview</h1>
         <p class="dac-hero-description">
-          <strong>The official Android 6.0 SDK is now available!</strong>
-          Get your apps ready for the next version of Android. Test on Nexus 5, 6, 9, and
-          Player. Explore what's new &mdash; <strong>runtime permissions</strong>,
-          <strong>Doze</strong> and <strong>App Standby</strong> power-saving features, new
-          <strong>assist technology</strong>, and more.
+          Get ready for Android N!
+          <strong>Test your apps</strong> on Nexus and other devices. Support new system
+          behaviors to <strong>save power and memory</strong>.
+          Extend your apps with <strong>multi-window UI</strong>,
+          <strong>direct reply notifications</strong> and more.
         </p>
 
         <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
           <span class="dac-sprite dac-auto-chevron"></span>
           Get started
-        </a><br>
+        </a><!--<br>
         <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
           <span class="dac-sprite dac-auto-chevron"></span>
-          Update to Developer Preview 3 (final SDK)
-        </a><br>
+          Update to Android N (final SDK)
+        </a><br>-->
+      </div>
+      <div class="col-9of16 col-pull-7of16 dac-hero-figure" style="margin-top:1.5em;padding-right:1.5em;">
+        <img class="dac-hero-image" src="{@docRoot}images/home/n-preview-hero.png"
+             srcset="{@docRoot}images/home/n-preview-hero.png 1x,
+             {@docRoot}images/home/n-preview-hero_2x.png 2x">
       </div>
     </div>
     <div class="dac-section dac-small">
@@ -44,30 +55,67 @@
   </div>
 </section>
 
-<section class="dac-section dac-gray"><div class="wrap">
+<div id="useUpdatedTemplates" style="display:none" class="dac-section dac-slim dac-gray dac-expand">
+  <div class="wrap dac-offset-parent">
+    <a class="dac-fab dac-scroll-button" data-scroll-button href="#build-apps">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="https://developer.android.com/preview/bug">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Report an issue
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/support.html">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          See release notes
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="{@docRoot}preview/dev-community">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Join dev community
+        </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end .dac-actions -->
+
+<div id="useOldTemplates" style="display:none;color:black" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+
+    <div class="actions">
+      <div><a href="https://developer.android.com/preview/bug">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Report an issue
+      </a></div>
+      <div><a href="{@docRoot}preview/support.html">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        See release notes
+      </a></div>
+      <div><a href="{@docRoot}preview/dev-community">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Join dev community
+      </a></div>
+    </div><!-- end .actions -->
+  </div><!-- end .wrap -->
+</div>
+
+<section class="dac-section dac-light"><div class="wrap">
   <h1 class="dac-section-title">Resources</h1>
   <div class="dac-section-subtitle">
-    Essential information to help you get your apps ready for Android M.
+    Essential information to help you get your apps ready for Android N.
   </div>
 
   <div class="resource-widget resource-flow-layout col-16"
        data-query="collection:preview/landing/more"
        data-cardSizes="6x6"
-       data-maxResults="16"></div>
+       data-items-per-page="6"
+       data-maxResults="15"
+       data-initial-results="6"></div>
 
-    <ul class="dac-section-links">
-      <li class="dac-section-link">
-        <a href="https://code.google.com/p/android-developer-preview/">
-          <span class="dac-sprite dac-auto-chevron"></span>
-          Report Issues
-        </a>
-      </li>
-      <li class="dac-section-link"><a href="http://g.co/dev/AndroidMDevPreview">
-        <span class="dac-sprite dac-auto-chevron"></span>
-        Join G+ Community
-        </a>
-      </li>
-    </ul>
   </div>
 </section>
 
diff --git a/docs/html/preview/j8-jack.jd b/docs/html/preview/j8-jack.jd
new file mode 100644
index 0000000..78252f0
--- /dev/null
+++ b/docs/html/preview/j8-jack.jd
@@ -0,0 +1,196 @@
+page.title=Java 8 Language Features
+page.keywords="android N", "Java 8", "Jack"
+@jd:body
+
+<div id="qv-wrapper">
+  <div id="qv">
+    <ol>
+      <li>
+        <a href="#supported-features">Supported Java 8 Language Features and APIs</a>
+      </li>
+      <li>
+        <a href="#configuration">Enabling Java 8 Features and the Jack Toolchain</a>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>Android N introduces support for Java 8 language features
+  that you can use when developing apps that target Android N.
+  This page describes the new language features supported in the Android N
+  Preview, how to properly set up your project to use them, and any known
+  issues you may encounter.
+</p>
+
+<p>To start using these features, you need to download and set up Android
+Studio 2.1 (preview) and the Android N Preview SDK, which includes the required
+Jack toolchain and updated Android Plugin for Gradle. If you haven't yet
+installed the Android N Preview SDK, see <a href=
+"{@docRoot}preview/setup-sdk.html">Set Up to Develop for Android N</a>.</p>
+
+
+
+<p class="note">
+  <strong>Note:</strong> Using the new Java 8 language features is not a
+  requirement for developing apps that target the Android N platform. If you
+  don't want to write code with Java 8 language features, you can keep your
+  project's source and target compatibility values set to Java 7, but you still
+  must compile with JDK 8 to build against the Android N platform.
+</p>
+
+<h2 id="supported-features">
+  Supported Java 8 Language Features and APIs
+</h2>
+
+<p>
+  Android does not currently support all Java 8 language features. However, the
+  following features are now available when developing apps targeting the
+  Android N Preview:
+</p>
+
+<ul>
+  <li>
+    <a class="external-link" href=
+    "https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html">Default
+    and static interface methods</a>
+  </li>
+
+  <li>
+    <a class="external-link" href=
+    "https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html">
+    Lambda expressions</a>
+  </li>
+
+  <li>
+    <a class="external-link" href=
+    "https://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">Repeatable
+    annotations</a>
+  </li>
+</ul>
+
+
+<p>
+  Additionally, the following Java 8 language feature APIs are now available:
+</p>
+
+<ul>
+  <li>Reflection and language-related APIs:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.lang.FunctionalInterface}
+      </li>
+
+      <li>{@code java.lang.annotation.Repeatable}
+      </li>
+
+      <li>{@code java.lang.reflect.Method.isDefault()}
+      </li>
+
+      <li>and Reflection APIs associated with repeatable annotations, such as
+      {@code AnnotatedElement.getAnnotationsByType(Class)}
+      </li>
+    </ul>
+  </li>
+  <li>Utility APIs:
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>{@code java.util.function}
+      </li>
+    </ul>
+  </li>
+</ul>
+
+<p class="note">
+  <strong>Note:</strong> The Android N bases its implementation of
+  lambda expressions on anonymous classes. This approach allows them to be
+  backwards compatible and executable on earlier versions of Android. To test
+  lambda expressions on earlier versions, remember to go to your {@code
+  build.gradle} file, and set {@code compileSdkVersion} and {@code
+  targetSdkVersion} to 23 or lower.
+</p>
+
+<h2 id="configuration">
+  Enabling Java 8 Features and the Jack Toolchain
+</h2>
+
+<p>
+  In order to use the new Java 8 language features, you need to also use the
+  new <a class="external-link" href=
+  "https://source.android.com/source/jack.html">Jack toolchain</a>. This new
+  Android toolchain compiles Java language source into Android-readable dex
+  bytecode, has its own {@code .jack} library format, and provides most toolchain
+  features as part of a single tool: repackaging, shrinking, obfuscation and
+  multidex.
+</p>
+
+<p>Here is a comparison of the two toolchains used to build Android DEX files:</p>
+<ul>
+  <li>Legacy javac toolchain:<br>
+  <b>javac</b> ({@code .java} --&gt; {@code .class}) --&gt; <b>dx</b> ({@code
+  .class} --&gt; {@code .dex})
+  </li>
+
+  <li>New Jack toolchain:<br>
+  <b>Jack</b> ({@code .java} --&gt; {@code .jack} --&gt; {@code .dex})
+  </li>
+</ul>
+
+<h3>
+  Configuring Gradle
+</h3>
+
+<p>
+  To enable the Java 8 language features and Jack for your project, enter the
+  following in your module-specific {@code build.gradle} file:
+</p>
+
+<pre>
+android {
+  ...
+  defaultConfig {
+    ...
+    jackOptions {
+      enabled true
+    }
+  }
+  compileOptions {
+    sourceCompatibility JavaVersion.VERSION_1_8
+    targetCompatibility JavaVersion.VERSION_1_8
+  }
+}
+</pre>
+
+<h3>
+  Known Issues
+</h3>
+
+<p>
+  Instant Run, introduced in Android Studio 2.0 (Beta), does not currently work
+  with Jack and will be disabled while using the new toolchain.
+</p>
+
+<p>Because Jack does not generate intermediate class files when compiling an
+app, tools that depend on these files do not currently work with Jack. Some
+examples of these tools are:</p>
+
+<ul>
+  <li>Lint detectors that operate on class files
+  </li>
+
+  <li>Tools and libraries that require the app’s class files (such as
+  instrumentation tests with JaCoCo)
+  </li>
+</ul>
+
+<p>
+  Calls to an interface's default method on a <a class="external-link" href=
+  "https://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Proxy.html"><code>
+  Proxy</code></a> instance fail with an exception.
+</p>
+
+<p>If you find other problems while using Jack, <a href=
+"http://tools.android.com/filing-bugs">please report bugs</a>.</p>
\ No newline at end of file
diff --git a/docs/html/preview/license.jd b/docs/html/preview/license.jd
index 5ff52ba..ae02aae 100644
--- a/docs/html/preview/license.jd
+++ b/docs/html/preview/license.jd
@@ -3,7 +3,7 @@
 @jd:body
 
 <p>
-To get started with the Android SDK Preview, you must agree to the following terms and conditions. 
+To get started with the Android SDK Preview, you must agree to the following terms and conditions.
 As described below, please note that this is a preview version of the Android SDK, subject to change, that you use at your own risk.  The Android SDK Preview is not a stable release, and may contain errors and defects that can result in serious damage to your computer systems, devices and data.
 </p>
 
@@ -17,7 +17,9 @@
 
 1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
 
-1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+1.3 “Android-compatible” means any Android implemation that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
 
 2. Accepting the License Agreement
 
@@ -31,13 +33,13 @@
 
 3. Preview License from Google
 
-3.1 Subject to the terms of the License Agreement, Google grants you a royalty-free, non-assignable, non-exclusive, non-sublicensable, limited, revocable license to use the Preview, personally or internally within your company or organization, solely to develop applications to run on the Android platform.
+3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the Preview solely to develop applications for compatible implementations of Android.
 
-3.2 You agree that Google or third parties owns all legal right, title and interest in and to the Preview, including any Intellectual Property Rights that subsist in the Preview. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+3.2 You may not use this Preview to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this Preview is not used for that purpose.
 
-3.3 You may not use the Preview for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the Preview or any part of the Preview; or (b) load any part of the Preview onto a mobile handset or any other hardware device except a personal computer, combine any part of the Preview with other software, or distribute any software or device incorporating a part of the Preview.
+3.3 You agree that Google or third parties owns all legal right, title and interest in and to the Preview, including any Intellectual Property Rights that subsist in the Preview. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
 
-3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the Preview.
+3.4 You may not use the Preview for any purpose not expressly permitted by the License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the Preview or any part of the Preview; or (b) load any part of the Preview onto a mobile handset or any other hardware device except a personal computer, combine any part of the Preview with other software, or distribute any software or device incorporating a part of the Preview.
 
 3.5 Use, reproduction and distribution of components of the Preview licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement. You agree to remain a licensee in good standing in regard to such open source software licenses under all the rights granted and to refrain from any actions that may terminate, suspend, or breach such rights.
 
@@ -51,7 +53,7 @@
 
 4.1 Google agrees that nothing in the License Agreement gives Google any right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the Preview, including any intellectual property rights that subsist in those applications.
 
-4.2 You agree to use the Preview and write applications only for purposes that are permitted by (a) the License Agreement, and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries). 
+4.2 You agree to use the Preview and write applications only for purposes that are permitted by (a) the License Agreement, and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
 
 4.3 You agree that if you use the Preview to develop applications, you will protect the privacy and legal rights of users. If users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If users provide you with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, each user has given you permission to do so.
 
diff --git a/docs/html/preview/overview.jd b/docs/html/preview/overview.jd
index fb2e266..935eb1a 100644
--- a/docs/html/preview/overview.jd
+++ b/docs/html/preview/overview.jd
@@ -1,10 +1,11 @@
 page.title=Program Overview
-page.metaDescription=Welcome to the Android M Developer Preview, a program that gives you everything you need to test and optimize your apps for the next version of Android.
-page.image=images/cards/card-preview_16-9_2x.png
+page.metaDescription=Get your apps ready for the next version of Android.
+page.image=images/cards/card-n-overview_2x.png
+meta.tags="preview", "developer", "android"
 page.tags="preview", "developer", "android"
 
 @jd:body
-
+<!--
 <div class="cols" style=
 "background-color:#f2daf5; padding: 5px 0;margin-bottom:1em; text-align:center;">
 <h3>
@@ -33,25 +34,32 @@
   </ul>
   </div>
 </div>
+-->
 
 <p>
-  Welcome to the <strong>Android M Developer Preview</strong>, a program that gives you
-  everything you need to test and optimize your apps for the next version of
-  Android. It's free, and you can get started right away just by downloading
-  the M Developer Preview tools.
+  Welcome to the <strong>Android N Developer Preview</strong>, a program that
+  gives you everything you need to test and optimize your apps for the next
+  version of Android. It's free, and you can get started right away just by
+  downloading the N Developer Preview tools.
 </p>
 
+
+
+
+
+
+
 <div style="background-color:#eceff1;padding:1em;">
 <div class="wrap">
   <div class="cols">
     <div class="col-4of12">
       <h5>
-        Hardware and emulator system images
+        Hardware and emulator images
       </h5>
 
       <p>
-        Run and test your apps on Nexus 5, 6, 9, and Player (for TV), as well
-        as emulator.
+        Run and test your apps on a range of devices or on an emulator.
+
       </p>
     </div>
 
@@ -61,21 +69,21 @@
       </h5>
 
       <p>
-        We’ll provide multiple updates during the Preview, so you’ll be testing
-        against the latest platform changes.
+        We’ll provide monthly updates during the Preview, so you’ll be testing against the latest platform changes.
       </p>
     </div>
 
     <div class="col-4of12">
       <h5>
-        Updates delivered by OTA
+        Priority for developer issues
       </h5>
 
       <p>
-        You  can get updates over-the-air, once you’ve flashed a
-        device to the initial preview.
+        During the first several weeks we’ll give priority to developer-reported
+        issues, so test and give feedback as soon as possible.
       </p>
     </div>
+
   </div>
 
   <div class="cols">
@@ -87,19 +95,18 @@
       </h5>
 
       <p>
-        Start work early to support new platform behaviors such as
-        the new runtime permissions model and power-saving features.
+        Start work early to support new platform behaviors and develop with new features.
       </p>
     </div>
 
     <div class="col-4of12">
-      <h5>
-        Priority window for developer-reported issues
+        <h5>
+        Updates delivered by OTA
       </h5>
 
       <p>
-        During the first several weeks we’ll give priority to developer-reported
-        issues, so test and give feedback as soon as possible.
+        Seamless over-the-air updates for any supported device through the
+        Android Beta Program. No flashing is needed.
       </p>
     </div>
 
@@ -109,11 +116,10 @@
       </h5>
 
       <p>
-        Report issues and give us feedback using our <a href=
-        "https://code.google.com/p/android-developer-preview/">issue tracker</a>.
-        Connect with other developers in the <a
-        href="http://g.co/dev/AndroidMDevPreview">M&nbsp;Developer Community</a>.
-
+        Report issues and give us feedback using our
+        <a href="{@docRoot}preview/bug">issue tracker</a>. Connect with other
+        developers in the
+        <a href="{@docRoot}preview/dev-community">N&nbsp;Developer Community</a>.
       </p>
     </div>
   </div>
@@ -121,269 +127,320 @@
 </div>
 
 <!--
-<p>
-  With the M Developer Preview, you'll get an early start on testing your apps,
-  with enough time to make adjustments before the public platform release later
-  in the year. We'll provide several updates to the Preview tools in the weeks
-  ahead, so you can keep in sync with the latest changes as the platform moves
-  toward launch.
-</p>
-<img src="{@docRoot}preview/images/m-preview-timeline.png" alt=
-"Preview program timeline" id="timeline">
-<p>
-  You can help us improve the platform by <a href=
-  "https://code.google.com/p/android-developer-preview/">reporting issues</a>
-  through our feedback channels. This is especially
-  critical in the first month of the preview, when we’ll be giving priority to
-  developer-reported issues and feedback.
-</p> -->
+<p>New in the Android N Developer Preview: </p>
 
+<ul>
+  <li> Accompanying Android Beta Program for consumers, starting later in the preview</li>
+  <li> More supported devices, including devices from OEM partners</li>
+  <li> Seamless OTAs for your devices, from initial release to final N release without flashing</li>
+</ul>
+-->
 
-<h2 id="timeline">
-  Timeline and updates
-</h2>
-<img src="{@docRoot}preview/images/m-preview-timeline-crop.png" alt=
-"Preview program timeline" id="timeline">
+<h2 id="timeline">Timeline and updates</h2>
+<img src="{@docRoot}images/n-preview-updates_2x.png">
+
 <p>
-  The M Developer Preview runs from May 28 until the final Android M public release planned for Q3
-  2015.
+  The N Developer Preview runs from 9 March 2016 until the final Android N
+  public release to AOSP and OEMs, planned for Q3 2016.
 </p>
 
 <p>
-  At key development milestones, we’ll deliver updates for your test devices.
-  The milestones are
+  At key development milestones, we’ll deliver updates for your development and
+  testing environment. In general you can expect an update each month (4 to 6
+  week interval). The milestones are listed below.
 </p>
 
 <ul>
-  <li>
-    <strong><a href="{@docRoot}preview/download_mp1.html">Preview&nbsp;1</a></strong> (available).
-  </li>
-
-  <li>
-    <strong><a href="{@docRoot}preview/download_mp2.html">Preview&nbsp;2</a></strong> (available).
-  </li>
-
-  <li>
-  <strong><a href="{@docRoot}preview/download.html">Preview&nbsp;3</a></strong>
-    (final APIs and official Android 6.0 SDK, available).
-  </li>
+  <li><strong><a href="{@docRoot}preview/support.html">Preview 1</a></strong> (initial release, alpha)</li>
+  <li><strong>Preview 2</strong> (incremental update, beta)</li>
+  <li><strong>Preview 3</strong> (incremental update, beta)</li>
+  <li><strong>Preview 4</strong> (final APIs and official SDK, Play publishing)</li>
+  <li><strong>Preview 5</strong> (near-final system images for final testing)</li>
+  <li><strong>Final release</strong> to AOSP and ecosystem</li>
 </ul>
 
 <p>
-  These updates culminate in the <strong>official Android 6.0 SDK</strong> (now available),
-  which lets you build with the final APIs for the new version of Android, as well as
-  near-final system images to let you test system behaviors and features.
+  Each update includes SDK tools, preview system images, emulators, reference
+  documentation, and API diffs.
 </p>
 
 <p>
-  As you test and develop on Android M, we strongly recommend <strong>keeping
-  your development environment up-to-date</strong> as Preview updates are released.
-  To make the process easier, we'll deliver <strong>updates over-the-air
-  (OTA)</strong> to devices already flashed to a Preview build, as well as
-  providing system images that you can download and flash manually.
-</p>
-<p class="note">
-  <strong>Note:</strong> Developer Preview 3 includes final APIs and near-final
-  system images available by both download and OTA. At the full public release of
-  Android M later in Q3, final system images will be available by download only,
-  so you'll need to <strong>flash manually</strong> to
-  your test devices.</strong>
+  The <strong>first three preview milestones</strong> provide an <strong>early
+  test and development environment</strong> that help you identify
+  compatibility issues in your current apps and plan migration or feature work
+  needed to target the new platform. This is the priority period in which to
+  give us your feedback on features and APIs and file compatibility issues
+  &mdash; for all of these, please use the <a href="{@docRoot}preview/bug">issue
+  tracker</a>. You can expect some API changes across these updates.
 </p>
 
 <p>
-  We’ll notify you when Preview updates are available via the <a href=
+  At <strong>previews 4 and 5</strong> you’ll have access to the <strong>final
+  N APIs and SDK</strong> to develop with, as well as near-final system images
+  to test system behaviors and features. Android N will provide a standard API
+  level at this time. You can begin final compatibility testing of your legacy
+  apps and refine any new code that is using the N APIs or features.
+</p>
+
+<p>
+  Also starting in preview 4, you’ll be able to <strong>publish apps to
+  devices</strong> running Android N at the official API level, such as
+  consumer devices that have opted into the Android Beta program. You can
+  publish into the Google Play alpha and beta channels first, so you can test
+  your apps with Android Beta consumers before distributing broadly on the
+  store.
+</p>
+
+<p>
+  As you test and develop on Android N, we strongly recommend <strong>keeping
+  your development environment up-to-date</strong> as preview updates are
+  released. To make the process easier, you can enroll your test devices in the
+  Android Beta program and get <strong>updates over-the-air (OTA)</strong> at
+  each milestone. Alternatively, updated preview images are available that you
+  download and flash manually.
+</p>
+
+<p>
+  We’ll notify you when preview updates are available via the <a href=
   "http://android-developers.blogspot.com/">Android Developers Blog</a>, as
-  well as this site and the
-  <a href="http://g.co/dev/AndroidMDevPreview">Android M Developer Community</a>.
+  well as this site and the <a href="{@docRoot}preview/dev-community">Android
+  N Developer Community</a>.
 </p>
 
-<h2 id="preview_tools">
-  What’s in the Preview?
-</h2>
+
+<h2 id="preview_tools">What's in the N Developer Preview?</h2>
 
 <p>
-  The M Developer Preview includes everything you need to test your existing
+  The N Developer Preview includes everything you need to test your existing
   apps on a variety of screen sizes, network technologies, CPU/GPU chipsets,
   and hardware architectures.
 </p>
 
-<h4>
-  SDK tools
-</h4>
+<h3 id="sdk_tools">SDK tools</h3>
 
-<p>
-  You can download these components through the SDK Manager in <a href=
-  "{@docRoot}sdk/installing/adding-packages.html">Android Studio</a>:
-</p>
+<p>You can download these components through the SDK Manager in <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a>:</p>
 
 <ul>
-  <li><strong>Official Android 6.0 SDK and tools</strong>
-  </li>
-
-  <li>M Developer Preview <strong>emulator system image</strong> (32-bit &amp;
-  64-bit)
-  </li>
-
-  <li>M Developer Preview <strong>emulator system Image for Android TV</strong>
-  (32-bit)
-  </li>
+  <li> N Developer Preview <strong>SDK and tools</strong>
+  <li> N Developer Preview <strong>emulator system image</strong> (32-bit & 64-bit)
+  <li> N Developer Preview <strong>emulator system Image for Android TV</strong> (32-bit)
+  <li> N Developer Preview support libraries (for new app templates)
 </ul>
 
-<h4>
-  Hardware system images
-</h4>
-
 <p>
-  You can download these hardware system images for Nexus devices from the
-  <a href="download.html">Downloads page</a>:
+  We’ll provide updates to these development tools at each milestone as needed.
 </p>
 
-<ul>
-  <li>
-    <strong>Nexus 5</strong> (GSM/LTE) “hammerhead” device system image
-  </li>
-
-  <li>
-    <strong>Nexus 6</strong> “shamu” device system image
-  </li>
-
-  <li>
-    <strong>Nexus 9</strong> (Wi-Fi) “volantis” device system image
-  </li>
-
-  <li>
-    <strong>Nexus Player</strong> (Android TV) “fugu” device system image
-  </li>
-</ul>
-
-<h4>
-  Documentation and sample code
-</h4>
+<h3 id="hardware_system_images">Hardware system images</h3>
 
 <p>
-  These documentation resources help you learn about the Preview:
+  The N Developer Preview includes Nexus and other hardware system images that you can use when
+  testing and developing on physical devices. See the <a href=
+  "{@docRoot}preview/download.html">Device Images</a> page for the full list
+  of hardware images.
 </p>
 
-<ul>
-  <li>
-    <a href="setup-sdk.html">Set Up the SDK</a> has step-by-step instructions
-    for getting started.
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/testing/guide.html">Testing Guide</a> and <a href=
-    "behavior-changes.html">Behavior Changes</a> point you to key areas to test.
-  </li>
-
-  <li>Documentation of new APIs, including an <a href="api-overview.html">API Overview</a>,
-  downloadable <a href="{@docRoot}preview/download.html#docs">API Reference</a>, and detailed developer guides on
-  key features such as
-  <a href="{@docRoot}preview/features/runtime-permissions.html">permissions</a>,
-  <a href="{@docRoot}preview/backup/index.html">app backup</a>, and others.
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/samples.html">Sample code</a> that demonstrates how to support
-    permissions and other new features.
-  </li>
-
-  <li>
-    <a href="{@docRoot}preview/support.html#release-notes">Release notes</a> for the current version
-    of the M Developer Preview, including change notes and diff reports.
-  </li>
-</ul>
-
-<h4>
-  Support resources
-</h4>
-
 <p>
-  Use these support resources as you test and develop on the M
-  Developer Preview:
+  We’ll deliver updated system images for these devices at each milestone. You
+  can download and flash the updated system images to your test devices
+  manually, as frequently as you need. This is especially useful for automated
+  testing environments where you might need to reflash your device multiple
+  times.
 </p>
 
-<ul>
-  <li><a href="https://code.google.com/p/android-developer-preview/">M
-  Developer Preview Issue Tracker</a> is your <strong>primary feedback
-  channel.</strong> You can report bugs, performance issues, and general
-  feedback through the issue tracker. You can also check for <a
-  href="https://code.google.com/p/android-developer-preview/wiki/KnownIssues">known issues</a>
-  and find workaround steps.
-  </li>
+<p class="note"><strong>Note</strong>:
+  <strong>Devices flashed manually will not get OTA updates</strong> like in
+  last year’s preview. This year, you can get OTAs by enrolling devices in the
+  Android Beta Program &mdash; see details in the next section.
+</p>
 
-  <li>The <a href="http://g.co/dev/AndroidMDevPreview">Android M Developer
-  Community</a> is a Google+ community where you can <strong>connect with
-  other developers</strong> working with Android M. You can share
-  observations or ideas or find answers to questions about Android M.
-  </li>
-</ul>
-
-
-<h2 id="preview_apis_and_publishing">
-  Final SDK, targeting, and publishing
-</h2>
+<h3 id="android_beta">OTA Updates through Android Beta Program</h3>
 
 <p>
-   <p>With Developer Preview 3, the platform APIs are now official (API level 23) and the
-   <strong>official Android 6.0 SDK is now available</strong>.  We recommend updating your environment
-   right away through Android Studio. Once you've updated your environment, you can target
-   the new API level, compile against the new platform, and publish at your convenience
-   to Google Play (including alpha, beta, or release channels).
-
-  <p>If you want to opt out
-  of compatibility behaviors (which is strongly recommended),
-  you can target the Android 6.0 platform by setting your app's <code><a href=
-  "/guide/topics/manifest/uses-sdk-element.html">targetSdkVersion</a></code>
-  to <code>“23”</code>.
+  New for Android N is an Over-the-Air (OTA) update program that automatically
+  delivers the latest preview updates of Android N directly to devices enrolled
+  in the program. The program is free, and it’s open to anyone who has a
+  supported device that’s registered to their Google account.
 </p>
 
-  <p>Before releasing an app that targets API level 23, we strongly
-  recommend distributing it to a group of testers through the new <a
-  href="http://android-developers.blogspot.com/2015/07/iterate-faster-on-google-play-with.html"> 
-  beta testing features available in the Google Play Developer Console. See the
-  <a href="https://support.google.com/googleplay/android-developer/answer/3131213">Help
-  Center article</a> for more information. 
-</p>
-
-<h2 id="get_started">
-  How to get started
-</h2>
-
 <p>
-  To get started testing your app with Android M:
+  To enroll in the program visit the <a href="https://g.co/androidbeta">Android
+  Beta Program</a> site. You’ll
+  see all of the devices registered to your account that are eligible to enroll
+  in Android Beta.
 </p>
 
 <ol>
-  <li>Review the <a href="{@docRoot}preview/api-overview.html">API Overview</a>
-    and <a href="{@docRoot}preview/behavior-changes.html">Behavior Changes</a> to get an
-    idea of what's new and how it affects your apps. In particular, learn about
-    the new <a href="{@docRoot}preview/features/runtime-permissions.html">runtime
-    permissions</a> model, power-saving features, and auto backup.
-  </li>
-
-  <li>Set up your environment by following the instructions for
-    <a href="{@docRoot}preview/setup-sdk.html">Setting up the Preview SDK</a>
-    and configuring test devices.
-  </li>
-
-  <li>Follow the <a href="https://developers.google.com/android/nexus/images">
-    flashing instructions</a> to flash the latest M developer preview system image
-    for Nexus 5, 6, 9, and Player. Once you've flashed your development device,
-    Preview updates will be delivered through over-the-air (OTA) updates.</a>
-  </li>
-
-  <li>Review the <a href="{@docRoot}reference/packages.html">API
-  Reference</a> and <a href="{@docRoot}preview/samples.html">M Preview
-  samples</a> to gain more insight into new API features and how to use them in
-  your app.
-  </li>
-
-  <li>Join the <a href="http://g.co/dev/AndroidMDevPreview">Android M
-  Developer Community</a> to get the latest news and connect with other
-  developers working with the new platform.
-  </li>
+  <li> Choose the devices you want to receive the Android N updates
+  <li> Click Enroll, read and agree to the terms of service, and then click OK
 </ol>
 
 <p>
-  Thank you for your participation in the Android M Developer Preview program!
+  Once you’ve enrolled, your device will soon receive an update. In most cases,
+  you will not need to do a full reset of your data to move to Android N, but
+  it’s recommended that you back up any data you don’t want to lose before
+  enrolling the device.
+</p>
+
+<p>
+  As updates are delivered to your device, we recommend downloading and
+  installing them as soon as possible. You’ll want to stay current with the
+  latest changes in system UI, behavior, APIs, and features.
+</p>
+
+<p>
+  At the conclusion of the Developer Preview, your enrolled devices will
+  receive an update to the official Android N release.
+</p>
+
+<p>
+  You can un-enroll your devices from the Android Beta program at any time from
+  the Android Beta site. Before un-enrolling, make sure to back-up your data on
+  the device.
+</p>
+
+  <p class="note"><strong>Note</strong>:
+  When you un-enroll, <strong>your device will be factory reset</strong>
+  to the latest version
+  of Android 6.0 Marshmallow (not necessarily the version that you had
+  installed prior to enrolling the device). To ensure a clean installation,
+  your data will be erased from the device, including contacts, messages,
+  photos, and so on.
+</p>
+
+<h3 id="documentation_and_sample_code">Documentation and sample code</h3>
+
+<p>
+  These documentation resources are available on the Developer Preview site to
+  help you learn about the Android&nbsp;N:
+</p>
+
+<ul>
+  <li> <a href="{@docRoot}preview/setup-sdk.html">Set Up to Develop for
+Android N</a> has
+  step-by-step instructions for getting started.</li>
+  <li> <a href="{@docRoot}preview/behavior-changes.html">Behavior
+  Changes</a> points you to key areas to test.</li>
+  <li> Documentation of new APIs, including an <a
+  href="{@docRoot}preview/api-overview.html">API Overview</a>, downloadable
+  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API
+  Reference</a>, and detailed developer guides on key features such as
+  multi-window support, bundled notifications, multi-locale support, and others.
+  <li> <a href="{@docRoot}preview/samples.html">Sample code</a> that
+  demonstrates how to support permissions and other new features.
+  <li> <a href="{@docRoot}preview/support.html#release-notes">Release notes</a>
+  for the current version of the N Developer Preview, including change notes and
+  diff reports.
+</ul>
+
+<h4 id="reference">Downloadable API Reference</h4>
+
+<p>
+  During the early preview updates, you can download the latest
+  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API Reference
+  for the Android N platform</a> as a separate zip archive. The reference
+  download also includes a diff report that helps you identify API changes from
+  API 23 and the previous update.
+</p>
+
+<p>
+  When the Android N APIs are final and an official API level is assigned,
+  we’ll provide the API reference to you online at <a href=
+  "https://developer.android.com">https://developer.android.com</a>.
+</p>
+
+<h3 id="support_resources">
+  Support resources
+</h3>
+
+<p>
+  As you test and develop on the N Developer Preview, please use these channels
+  to report issues and give feedback.
+</p>
+
+<ul>
+  <li> <a href="https://code.google.com/p/android-developer-preview/">N Developer Preview Issue
+    Tracker</a> is your <strong>primary feedback channel.</strong> You can report bugs, performance
+    issues, and general feedback through the issue tracker. You can also check for
+<a href="{@docRoot}preview/bug">known issues</a> and
+    find workaround steps. We’ll keep you updated on your issue as it’s triaged and sent to
+    the Android engineering team for review. </li>
+  <li> The <a href="{@docRoot}preview/dev-community">Android N Developer Community</a> is
+    a Google+ community where you can <strong>connect with other developers</strong>working with
+    Android N. You can share observations or ideas or find answers to
+    questions about Android N. We’ll moderate the community and provide answers and
+    guidance as needed.</li>
+</ul>
+
+<h3 id="targeting">Targeting, preview APIs, and publishing</h3>
+
+<p>
+  The N Developer Preview provides a development-only system and Android
+  library that <strong>does not have a standard API level</strong>. If you want
+  to opt out of compatibility behaviors to test your app (which is strongly
+  recommended), you can target the preview version of Android N by setting your
+  app's <code><a href=
+  "{@docRoot}preview/setup-sdk.html#create-update">targetSdkVersion</a></code>
+  to <code>“N”</code>.
+</p>
+
+<p>
+  The Android N Developer Preview delivers <strong>preview APIs</strong>
+  &mdash; the APIs will not be official until the final SDK is released,
+  currently planned for the third quarter of 2016. This means that you can
+  <strong>expect minor API changes</strong> over time, especially during
+  initial weeks of the program. We’ll provide a summary of changes to you with
+  each update of the Android N Developer Preview.
+</p>
+
+<p class="note">
+  <strong>Note</strong>: Although preview APIs may change, underlying
+  system behaviors are stable and ready for testing against
+  right away.
+</p>
+
+<p>
+  Google Play <strong>prevents publishing of apps targeting the N Developer
+  Preview</strong>. When the Android N final SDK is available, you’ll be able
+  to target the official Android N API level and publish your app to Google
+  Play via the alpha and beta release channels. Meanwhile, if you want to
+  distribute an app targeting Android N to testers, you can do so via email or
+  by direct download from your site.
+</p>
+
+<p>
+  At the full release of Android N to AOSP and OEMs, planned for Q3 2016,
+  you’ll be able to publish your apps targeting Android N to the public release
+  channel in Google Play.
+</p>
+
+
+<h2 id="how_to_get_started">How to get started</h2>
+
+<p>
+  To get started testing your app with Android N:
+</p>
+
+<ol>
+  <li> Review the <a href="{@docRoot}preview/api-overview.html">API Overview</a>
+  and <a href="{@docRoot}preview/behavior-changes.html">Behavior Changes</a> to
+  get an idea of what's new and how it affects your apps. In particular,
+  learn about the new <a href="{@docRoot}preview/features/notification-updates.html"
+  >notifications</a> features and
+  <a href="{@docRoot}preview/features/multi-window.html">multi-window support</a>.</li>
+  <li> Set up your environment by following the instructions for <a
+  href="{@docRoot}preview/setup-sdk.html">Setting up the Preview SDK</a>
+  and configuring test devices.</li>
+  <li> Follow the <a href="https://developers.google.com/android/nexus/images">flashing
+  instructions</a> to flash the latest Android N system image for your device. </li>
+  <li> Review the <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API Reference</a>
+  and <a href="{@docRoot}preview/samples.html">Android N samples</a> to gain more
+  insight into new API features and how to use them in your app.
+  <li> Join the <a href="{@docRoot}preview/dev-community">Android N
+  Developer Community</a> to get the latest news and connect with other
+  developers working with the new platform.</li>
+</ol>
+
+<p>
+  Thank you for your participation in the Android N Developer Preview program!
 </p>
diff --git a/docs/html/preview/preview_toc.cs b/docs/html/preview/preview_toc.cs
index 90df59e..f96bf1f 100644
--- a/docs/html/preview/preview_toc.cs
+++ b/docs/html/preview/preview_toc.cs
@@ -14,17 +14,10 @@
 
 
   <li class="nav-section">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/download.html"
-      es-lang="Descargas"
-      ja-lang="ダウンロード"
-      ko-lang="다운로드"
-      pt-br-lang="Downloads"
-      ru-lang="Загрузки"
-      zh-cn-lang="下载"
-      zh-tw-lang="下載">
-      Downloads</a></div>
+    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/support.html">
+      Support and Release Notes</a></div>
   </li>
-
+  
   <li class="nav-section">
     <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/setup-sdk.html"
       es-lang="Configurar el SDK de la versión preliminar"
@@ -34,29 +27,29 @@
       ru-lang="Настройка пакета SDK Preview"
       zh-cn-lang="设置预览版 SDK"
       zh-tw-lang="設定預覽版 SDK">
-      Set up the SDK</a></div>
+      Set Up to Develop</a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/download.html">
+      Test on a Device</a></div>
   </li>
 
+
   <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot ?>preview/testing/guide.html"
-      es-lang="Guía de prueba"
-      ja-lang="テストガイド"
-      ko-lang="테스트 가이드"
-      pt-br-lang="Guia de teste"
-      ru-lang="Руководство по тестированию"
-      zh-cn-lang="测试指南"
-      zh-tw-lang="測試指南">
-      Testing Guide</a></div>
+    <div class="nav-section-header"><a href="<?cs var:toroot ?>preview/behavior-changes.html"
+      es-lang="Cambios en los comportamientos"
+      ja-lang="動作の変更点"
+      ko-lang="동작 변경"
+      pt-br-lang="Mudanças de comportamento"
+      ru-lang="Изменения в работе"
+      zh-cn-lang="行为变更"
+      zh-tw-lang="行為變更">Behavior Changes
+       </a></div>
       <ul>
-        <li><a href="<?cs var:toroot ?>preview/testing/performance.html"
-      es-lang="Prueba de rendimiento de video"
-      ja-lang="表示パフォーマンスのテスト"
-      ko-lang="표시 성능 테스트"
-      pt-br-lang="Teste de desempenho de exibição"
-      ru-lang="Тестирование скорости отображения"
-      zh-cn-lang="测试显示性能"
-      zh-tw-lang="測試顯示效能">
-      Performance Testing</a></li>
+        <li><a href="<?cs var:toroot ?>preview/features/background-optimization.html"
+        >Background Optimizations</a></li>
+        <li><a href="<?cs var:toroot ?>preview/features/multilingual-support.html"
+        >Language and Locale</a></li>
       </ul>
   </li>
 
@@ -68,59 +61,50 @@
       pt-br-lang="Visão geral da API"
       ru-lang="Обзор API-интерфейсов"
       zh-cn-lang="API 概览"
-      zh-tw-lang="API 總覽">API Overview
+      zh-tw-lang="API 總覽">Android N for Developers
       </a></div>
       <ul>
-        <li><a href="<?cs var:toroot ?>preview/features/runtime-permissions.html"
-      es-lang="Permisos"
-      ja-lang="パーミッション"
-      ko-lang="권한"
-      pt-br-lang="Permissões"
-      ru-lang="Разрешения"
-      zh-cn-lang="权限"
-      zh-tw-lang="權限">Permissions
-          </a></li>
-        <li><a href="<?cs var:toroot ?>preview/features/app-linking.html"
-      es-lang="Vínculos de la aplicación"
-      ja-lang="App Links"
-      ko-lang="앱 링크"
-      pt-br-lang="Links de aplicativos"
-      ru-lang="Связи приложений"
-      zh-cn-lang="应用链接"
-      zh-tw-lang="應用程式連結">
-      App Links</a></li>
-        <li><a href="<?cs var:toroot ?>preview/backup/index.html"
-      es-lang="Copia de seguridad automática para aplicaciones"
-      ja-lang="アプリの自動バックアップ"
-      ko-lang="앱용 자동 백업"
-      pt-br-lang="Backup automático para aplicativos"
-      ru-lang="Автоматическое резервное копирование для приложений"
-      zh-cn-lang="自动备份应用"
-      zh-tw-lang="針對應用程式進行自動備份">
-          Auto Backup for Apps</a></li>
-        <li><a href="<?cs var:toroot ?>preview/features/power-mgmt.html"
-      es-lang="Optimizaciones de ahorro de energía"
-      ja-lang="省電力の最適化"
-      ko-lang="절전 최적화"
-      pt-br-lang="Otimizações de economia de energia"
-      ru-lang="Оптимизация экономии энергии"
-      zh-cn-lang="节能优化"
-      zh-tw-lang="省電最佳化">
-      Power-Saving Optimizations</a></li>
+
+        <li><a href="<?cs var:toroot ?>preview/features/multi-window.html"
+        >Multi-Window Support</a></li>
+
+        <li><a href="<?cs var:toroot ?>preview/features/notification-updates.html"
+        >Notifications</a></li>
+
+        <li><a href="<?cs var:toroot ?>preview/features/data-saver.html"
+        >Data Saver</a></li>
+
+        <li><a href="<?cs var:toroot ?>preview/features/tv-recording-api.html"
+        >TV Recording</a></li>
+
+        <li><a href="<?cs var:toroot ?>preview/features/security-config.html"
+        >Network Security Configuration</a></li>
+
+        <li><a href="<?cs var:toroot ?>preview/features/icu4j-framework.html"
+        >ICU4J Support</a></li>
+        
+        <li><a href="<?cs var:toroot ?>preview/j8-jack.html"
+        >Java 8 Language Features</a></li>
+
+        <li><a href="<?cs var:toroot ?>preview/features/afw.html"
+        >Android for Work Updates</a></li>
       </ul>
   </li>
 
-  <li class="nav-section">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/behavior-changes.html"
-      es-lang="Cambios en los comportamientos"
-      ja-lang="動作の変更点"
-      ko-lang="동작 변경"
-      pt-br-lang="Mudanças de comportamento"
-      ru-lang="Изменения в работе"
-      zh-cn-lang="行为变更"
-      zh-tw-lang="行為變更">Behavior Changes
-       </a></div>
-  </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
   <li class="nav-section">
     <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/samples.html"
       es-lang="Ejemplos"
@@ -134,11 +118,6 @@
   </li>
 
   <li class="nav-section">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/support.html">
-      Support & Release Notes</a></div>
-  </li>
-
-  <li class="nav-section">
     <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/license.html"
       es-lang="Contrato de licencia"
       ja-lang="使用許諾契約"
diff --git a/docs/html/preview/samples.jd b/docs/html/preview/samples.jd
index 7d47e0e..1544d9c 100644
--- a/docs/html/preview/samples.jd
+++ b/docs/html/preview/samples.jd
@@ -1,10 +1,12 @@
 page.title=Samples
-page.image=images/cards/samples-new_2x.png
+page.tags="preview", "samples", "android"
+page.image=images/cards/card-n-samples_2x.png
 @jd:body
 
 <p>
-  The following code samples are provided for the M Developer Preview. To download
-  the samples in Android Studio, select the <b>File > Import Samples</b> menu option.
+  The following code samples are provided for Android N. To
+  download the samples in Android Studio, select the <b>File &gt; Import
+  Samples</b> menu option.
 </p>
 
 <p class="note">
@@ -13,58 +15,71 @@
 </p>
 
 
-<h3 id="RuntimePermissions">Runtime Permissions</h3>
-
+<h3 id="mw">Multi-Window Playground</h3>
+<img src="{@docRoot}preview/images/sample-multiwindow.png" style="float: left; padding-right: 0.5em" height="250" width="156"/>
 <p>
- Android M changes the way system permissions work. Users are asked to approve permission
- requests at runtime instead of during installation. This sample shows how to request these
- permissions.
+  This sample demonstrates how to take advantage of multiple window
+  user interfaces with your app.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MultiWindowPlayground">
+  Get it on GitHub</a>
 </p>
 
-<p><a href="https://github.com/googlesamples/android-RuntimePermissions">Get it on GitHub</a></p>
-
-<h3 id="ConfirmCredentials">Confirm Credential</h3>
-
+<div style="clear: both;"></div>
+<h3 id="an">Active Notifications</h3>
+<img src="{@docRoot}preview/images/sample-activenotifications.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
- This sample demonstrates how to use device credentials as an authentication method in your app.
+  This is a pre-existing sample which shows a simple service that sends
+  notifications using NotificationCompat. Each unread conversation from a user
+  is sent as a distinct notification.
+</p>
+<p>
+  This sample has been updated to take advantage of new notification features
+  available in Android N.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-ActiveNotifications">
+  Get it on GitHub</a>
 </p>
 
-<p><a href="https://github.com/googlesamples/android-ConfirmCredential">Get it on
-GitHub</a></p>
-
-<h3 id="FingerprintDialog">Fingerprint Dialog</h3>
-
+<div style="clear: both;"></div>
+<h3 id="ms">Messaging Service</h3>
+<img src="{@docRoot}preview/images/sample-messagingservice.png" style="float: left; padding-right: 0.5em" height="250" width="150" />
 <p>
- This sample demonstrates how to recognize registered fingerprints to authenticate the user
- in your app.
+  This is a pre-existing sample which demonstrates how to use
+  NotificationManager to tell how many notifications an application is currently
+  showing.
+</p>
+<p>
+  This sample has been updated to take advantage of new notification features
+  available in Android N.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-MessagingService">
+  Get it on GitHub</a>
 </p>
 
-<p><a href="https://github.com/googlesamples/android-FingerprintDialog">Get it on GitHub</a></p>
-
-<h3 id="AutomaticBackup">Auto Backup for Apps</h3>
-
+<div style="clear: both;"></div>
+<h3 id="fbe">Direct Boot</h3>
+<img src="{@docRoot}preview/images/sample-directboot.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
- Android M introduces automatic backup for app settings. This sample demonstrates how to add
- filtering rules to an app in order to manage settings backup.
+  This sample demonstrates how to store and access data in a device encrypted
+  storage which is always available while the device is booted.
+</p>
+<p>
+  <a href="https://github.com/googlesamples/android-DirectBoot">
+  Get it on GitHub</a>
 </p>
 
-<p><a href="https://github.com/googlesamples/android-AutoBackupForApps">Get it on GitHub</a></p>
-
-<h3 id="CameraRaw">Camera 2 Raw</h3>
-
+<div style="clear: both;"></div>
+<h3 id="sda">Scoped Directory Access</h3>
+<img src="{@docRoot}preview/images/sample-scopeddirectoryaccess.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
 <p>
-  Demonstrates how to use the <code>Camera2</code> API to capture RAW camera buffers and save
-  them as <code>DNG</code> files.
+  This sample demonstrates how to read and write data from specific
+  directories, while requiring fewer permissions.
 </p>
-
-<p><a href="https://github.com/googlesamples/android-Camera2Raw">Get it on GitHub</a></p>
-
-<h3 id="ActiveNotification">Active Notification</h3>
-
 <p>
-  This sample demonstrates how the
-  <a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a>
-  can tell you how many notifications your app is currently showing.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ActiveNotifications">Get it on GitHub</a></p>
+  <a href="https://github.com/googlesamples/android-ScopedDirectoryAccess">
+  Get it on GitHub</a>
+</p>
\ No newline at end of file
diff --git a/docs/html/preview/setup-sdk.jd b/docs/html/preview/setup-sdk.jd
index 7a2a666..bc40ebd 100644
--- a/docs/html/preview/setup-sdk.jd
+++ b/docs/html/preview/setup-sdk.jd
@@ -1,178 +1,232 @@
-page.title=Set Up the SDK
-page.image=images/cards/card-set-up_16-9_2x.png
+page.title=Set Up the Preview
+meta.keywords="preview", "android"
+page.tags="preview", "developer preview"
+page.image=images/cards/card-n-sdk_2x.png
 
 @jd:body
 
 
 <div id="qv-wrapper">
   <div id="qv">
-    <h2>In this document</h2>
-      <ol>
-        <li><a href="#get-as13">Get Android Studio 1.3</a></li>
-        <li><a href="#get-sdk">Get the Android 6.0 SDK</a></li>
-        <li><a href="#create-update">Create or Update a Project</a></li>
-        <li><a href="#setup-test">Set Up for Testing</a></li>
-      </ol>
+<ol>
+  <li><a href="#get-as13">Get Android Studio 2.1</a></li>
+  <li><a href="#get-sdk">Get the Android N SDK</a>
+    <ol>
+      <li><a href="#docs-dl">Reference documentation</a>
+    </ol>
+  </li>
+  <li><a href="#java8">Get the Java 8 JDK and JRE</a></li>
+  <li><a href="#create-update">Update or Create a Project</a></li>
+  <li><a href="#next">Next Steps</a></li>
+</ol>
   </div>
 </div>
 
-<p>With Developer Preview 3, the <strong>official Android 6.0 SDK is now available</strong> from the Android SDK
-Manager. This document assumes that you are familiar with Android app development, such
-as using the Android SDK Manager and creating projects. If you are new to
-Android, see <a href="{@docRoot}training/basics/firstapp/index.html">Building Your First
-App</a> training lesson first.</p>
+<p>To develop apps for the Android N Preview, you need to make some updates
+to your developer environment, as described on this page.</p>
+
+<p>To simply test your app's compatibility on the
+Android N system image, follow the guide to <a
+href="{@docRoot}preview/download.html">Test on an Android N Device</a>.</p>
+
+<img src="{@docRoot}preview/images/n-preview-setup.png" width="700" alt="" />
 
 
-<h2 id="get-as13">Get Android Studio 1.3</h2>
+<h2 id="get-as13">Get Android Studio 2.1 (preview)</h2>
 
-<p>
-  It is highly recommended that you install the Android Studio 1.3 to work best with
-  the Android 6.0 SDK. Please update your Android Studio installation to version 1.3 or
-  higher, or follow the instructions for
-  <a href="{@docRoot}sdk/installing/index.html?pkg=studio">Installing Android Studio</a>.
+<p>The Android N platform adds support for <a
+href="{@docRoot}preview/j8-jack.html">Java 8 language features</a>,
+which require a new compiler called Jack. The latest version of Jack
+is currently supported only in Android Studio 2.1. So if you want to
+use Java 8 language features, you need to use Android Studio 2.1 to
+build your app. Otherwise, you don't need to use the Jack compiler, but you
+still need to update to JDK 8 to compile against the Android N platform,
+as described below.
 </p>
 
+<iframe width="400" height="225" src="//www.youtube.com/embed/SBbWGxXCMqQ?autohide=1&amp;showinfo=0" frameborder="0" allowfullscreen="" style="float: right; margin: 0 0 20px 20px;"></iframe>
 
-<h2 id="get-sdk">Get the Android 6.0 SDK</h2>
+<p>Android Studio 2.1 is currently available as a preview in the canary
+release channel. If you already
+have Android Studio and don't want to update to the canary channel, you can
+download Android Studio 2.1 as a separate installation and use it
+for development with Android N, leaving your primary Android Studio
+environment unaffected.</p>
 
-<p>To add the Android 6.0 SDK components to your development environment:</p>
+<p>To download Android Studio 2.1 as a separate installation, follow these
+steps (or if you want to receive Android Studio 2.1 as an update to your
+existing installation, skip to step 4):</p>
 
 <ol>
-  <li>Launch Android Studio 1.3 or higher.
+  <li>Edit the name of your
+  existing Android Studio installation and append the version number. This way,
+  when you install the new version, it will not override the existing one.</li>
+  <li>Download the appropriate ZIP file for your operating system from the
+    <a href="http://tools.android.com/download/studio/canary/latest"
+    >canary channel download page</a>.
   </li>
-
-  <li>Open the <strong>Settings</strong> window (on Windows, you can do this
-  by choosing <strong>File &gt; Settings</strong>). Choose the
-  <strong>Appearance &amp; Behavior &gt; System
-  Settings &gt; Updates</strong> panel.
-
-    <p class="aside">On Mac OS X, you can find the <strong>Appearance &amp;
-    Behavior</strong> panel
-    in Android Studio's <strong>Preferences</strong> window.</p>
+  <li>Unzip the package and move the Android Studio 2.1 contents to the
+    appropriate location for applications on your system, then launch it.</li>
+  <li>Open the Settings dialog
+    (<strong>File &gt; Settings</strong> on Windows/Linux, or
+    <strong>Android Studio &gt; Preferences</strong> on Mac). In the left
+    panel, select <strong>Appearance &amp; Behavior &gt; System Settings &gt;
+    Updates</strong>.
   </li>
-
-  <li>On the <strong>Updates</strong> panel, choose the option for
-  <strong>Automatically check updates for Android SDK: Preview Channel</strong>.
-  </li>
-
-  <li>Launch the <strong>Android SDK Manager</strong>. (With Android Studio 1.3,
-  the SDK Manager is integrated into Android Studio instead of being a
-  standalone application.)
-  </li>
-
-  <li>Under the <strong>Platforms</strong> section, select <strong>Android 6.0</strong>.
-  </li>
-
-  <li>In the <strong>Tools</strong> section, select the latest Android <strong>
-    SDK Tools</strong>, <strong>Platform-tools</strong>, and
-    <strong>Build-tools</strong>.
-  </li>
-
-  <li>Click <strong>Install packages</strong> and accept the licensing
-    agreement for all of the packages.
-  </li>
-
-  <li>Verify that the Android 6.0 SDK is installed by opening the <strong>
-    Settings</strong> window and choosing the <strong>Appearance &amp; Behavior
-    &gt; System Settings &gt; Android SDK</strong> panel.</li>
-
-  <li>On the <strong>Android SDK</strong> panel, choose
-    the <strong>SDK Platforms</strong> tab. <strong>Android 6.0</strong> should be listed as <em>Installed</em>. Also, open the
-    <strong>SDK Tools</strong> tab to verify that the latest tools are
-    installed.
+  <li>On the Updates panel, select the <strong>Automatically
+    check updates for</strong> check box and select
+    <strong>Canary Channel</strong> from the drop-down list.
   </li>
 </ol>
-<p>After completing these steps, the preview components are available in your development
-  environment. </p>
+
+<p>Keep this settings window open for the next step.</p>
 
 
-<h2 id="create-update">Create or Update a Project</h2>
+<h2 id="get-sdk">Get the N Preview SDK</h2>
+
+<p>To start developing with Android N APIs, you need to install the
+Android N Preview SDK in Android Studio as follows:</p>
+
+<ol>
+  <li>While still viewing the Updates panel (step 4 from above),
+  select the <strong>Automatically
+    check updates for Android SDK</strong> check box and select
+    <strong>Preview Channel</strong> from the drop-down list.
+  </li>
+  <li>Click <strong>Check Now</strong>.</li>
+
+  <li>In the left panel, select <strong>Appearance &amp; Behavior &gt;
+  System Settings &gt; Android SDK</strong>.
+
+  <li>Click the <strong>SDK Platforms</strong> tab, then select the
+  <strong>Android N Preview</strong> check box.</li>
+
+  <li>Click the <strong>SDK Tools</strong> tab, then select the
+    <strong>Android SDK Build Tools</strong>, <strong>Android SDK
+    Platform-Tools</strong>, and <strong>Android SDK Tools</strong> check
+    boxes.
+  </li>
+
+  <li>Click <strong>OK</strong>, then accept the licensing
+    agreements for any packages that need to be installed.
+  </li>
+</ol>
+
+<h3 id="docs-dl">Get the N Preview reference documentation</h3>
 
 <p>
-  In order to use the preview APIs, you must create or update a development project to use
-  the preview components.
+  Detailed information about the Android N APIs is available in the N Preview
+  reference documentation, which you can download from the following table.
+  This package contains an abridged, offline version of the Android developer
+  web site, and includes an updated API reference for the Android N APIs and an
+  API difference report.
 </p>
 
+<table>
+  <tr>
+    <th scope="col">Documentation</th>
+    <th scope="col">Checksums</th>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap">
+    <a href="{@docRoot}shareables/preview/n-preview-1-docs.zip"
+      >n-preview-1-docs.zip</a></td>
+    <td width="100%">
+      MD5: 4ab33ccbe698f46f125cc5b807cf9c2f<br>
+      SHA-1: 6a3880b3ccd19614daae5a4d0698ea6ae11c20a5
+    </td>
+  </tr>
+<table>
 
-<h3 id="create">Create a new project</h3>
+
+
+<h2 id="java8">Get the Java 8 JDK and JRE</h2>
+
+<p>To compile your app against the Android N platform, you need to use
+the Java 8 Developer Kit (JDK 8), and in order to use some tools with Android
+Studio 2.1, you need to install the Java 8 Runtime Environment (JRE 8). So, if
+you don't have the latest version of each already, download JDK 8 and JRE 8
+now.</p>
+
+<p>Then set the JDK version in Android Studio as follows:</p>
+
+<ol>
+  <li>Open an Android project in Android Studio, then open the
+    Project Structure dialog by selecting <strong>File &gt;
+        Project Structure</strong>. (Alternatively, you can set the default
+        for all projects by selecting <strong>File &gt; Other Settings &gt;
+        Default Project Structure</strong>.)
+   </li>
+   <li>In the left panel of the dialog, click <strong>SDK Location</strong>.
+   </li>
+   <li>In the <strong>JDK Location</strong> field, enter the location of the
+    Java 8 JDK (click the button on the right
+    to browse your files), then click <strong>OK</strong>.
+   </li>
+</ol>
+
+<img src="{@docRoot}preview/images/studio-jdk-location.jpg" width="700"
+  alt="" />
+
+
+<h2 id="create-update">Update or Create a Project</h2>
 
 <p>
-  We recommend using Android Studio to create a project with the preview. Follow the steps
-  described in <a href="{@docRoot}sdk/installing/create-project.html">Creating a Project</a>
-  until you arrive at the <em>Form Factors</em> screen in the project wizard. Then perform
-  the following steps to create a project configured for the preview.
+  To use the Android N APIs, your project must be configured appropriately.
 </p>
 
-<ul>
-  <li>Check <strong>Phone and Tablet</strong>.</li>
-  <li>Select <strong>API 23: Android 6.0 (Marshmallow)</strong> in <strong>Minimum
-    SDK</strong>.</li>
-</ul>
+<p>If you plan to use Java 8 language features, you should also read
+<a href="{@docRoot}preview/j8-jack.html">Java 8 Language Features</a>
+for information about the supported Java 8 features and
+how to configure your project with the Jack compiler.</p>
 
 
 <h3 id="update">Update an existing project</h3>
 
-<p>
-  For existing projects, if you are using Android 6.0 APIs (API level 23) you must
-  modify the project configuration. In your development environment, open the
-  <code>build.gradle</code> file for your module and
-  set these values as follows:
+<p>Open the
+  <code>build.gradle</code> file for your module and update the values as
+  follows:
 </p>
 
-<ul>
-  <li><code>compileSdkVersion</code> is set to <code>'23'</code></li>
-  <li><code>targetSdkVersion</code> is set to <code>'23'</code></li>
-</ul>
+<pre>
+android {
+  compileSdkVersion <strong>'android-N'</strong>
+  buildToolsVersion <strong>'24.0.0-rc1'</strong>
+  ...
+
+  defaultConfig {
+     minSdkVersion <strong>'N'</strong>
+     targetSdkVersion <strong>'N'</strong>
+     ...
+  }
+  ...
+}</pre>
 
 
-<h2 id="setup-test">Set Up for Testing</h2>
+<h3 id="create">Create a new project</h3>
 
-<p>
-  Testing an app with the preview requires that you have a device or virtual device configured with
-  the preview version of the platform. If you have a compatible device, you can install the preview
-  platform for testing. Otherwise, you can configure a virtual device for testing.
-</p>
 
-<h3 id="setup-device">Set up a physical device</h3>
-
-<p>
-  If you have a Nexus 5, Nexus 6, Nexus 9, or Android TV, you can install a preview
-  system image on these devices for testing your app.
-  You can set up a virtual device with the preview version of the platform from within Android Studio
-  using the Android Virtual Device Manager tool.
-</p>
-
-<p class="caution">
-  <strong>Important:</strong> Installing a preview image on a device <em>removes all data from
-  it</em>, so you should backup any data before installing a preview image.
-</p>
-
-<h3 id="setupAVD">Set up a virtual device</h3>
-
-<p>
-  You can set up virtual device with the preview version of the platform from within Android Studio
-  using the Android Virtual Device Manager tool.
-</p>
-
-<p>To create an AVD with the AVD Manager:</p>
+<p>To create a new project for development with the Android N Preview SDK:</p>
 
 <ol>
-  <li>Install the Preview SDK in your development environment, as described
-      in <a href="{@docRoot}preview/setup-sdk.html">Setting Up the Preview
-      SDK.</a></li>
-  <li>Follow the steps in
-      <a href="{@docRoot}tools/devices/managing-avds.html">Managing AVDs with AVD
-      Manager</a>. Use the following settings:
-    <ul>
-      <li><strong>Device:</strong> Nexus 5, Nexus 6, Nexus 9, or Android TV</li>
-      <li><strong>Target:</strong>
-       Android M (Preview) - API Level M</li>
-      <li><strong>ABI:</strong> x86</li>
-    </ul>
+  <li>Click <strong>File > New Project</strong>. and follow the steps until
+  you reach the Target Android Devices page.
   </li>
+  <li>On this page, select <strong>Phone and Tablet</strong> option.</li>
+  <li>Under <strong>Phone and Tablet</strong> option, in the <strong>Minimum
+    SDK</strong> option list, select
+    <strong>N: Android API 23, N Preview (Preview)</strong>.</li>
 </ol>
 
-<p>
-  For more information about creating virtual devices for testing, see <a href=
-  "{@docRoot}tools/devices/index.html">Managing Virtual Devices</a>.
-</p>
+
+<h2 id="next">Next Steps</h2>
+
+<ul>
+  <li>Follow the guide to <a
+href="{@docRoot}preview/download.html">Test on an Android N Device</a>.</li>
+  <li>Learn more about the Android N platform with
+<a href="{@docRoot}preview/behavior-changes.html">Behavior Changes</a>
+and <a href="{@docRoot}preview/api-overview.html">Android N APIs
+and Features</a>.</li>
+</ul>
+
diff --git a/docs/html/preview/support.jd b/docs/html/preview/support.jd
index cfd9467..3945ecd 100644
--- a/docs/html/preview/support.jd
+++ b/docs/html/preview/support.jd
@@ -1,533 +1,382 @@
 page.title=Support and Release Notes
+meta.keywords="preview", "android"
 page.tags="preview", "developer preview"
-page.image=images/cards/card-support_16-9_2x.png
+page.image=images/cards/card-n-support_2x.png
 
 @jd:body
 
-<div class="cols" style=
-"background-color:#f2daf5; padding: 5px 0;margin-bottom:1em; text-align:center;">
-<h3>
-    Developer Preview 3 is now available
-  </h3>
-  <p>Includes final SDK and near-final system images</p>
-   <div style="margin:auto 1em">
- <ul class="dac-section-links">
-    <li class="dac-section-link">
-      <a href="#preview3-notes">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Read the Notes</a>
-    </li>
-
-    <li class="dac-section-link">
-      <a href="#preview3-get">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Get the Update</a>
-    </li>
-
-    <li class="dac-section-link">
-      <a href="https://code.google.com/p/android-developer-preview/">
-      <span class="dac-sprite dac-auto-chevron"></span>
-      Report Issues</a>
-    </li>
-  </ul>
-  </div>
-</div>
-
 <p>
   Two primary support channels are available to you when developing and testing
-  with the Android M Developer Preview. If you've encountered bugs or have
-  feedback about the M Developer Preview, you can <a href=
-  "https://code.google.com/p/android-developer-preview/">create an issue</a> on
-  our issue tracker. We'll triage the issue for further review and provide
-  updates as needed.
+  with the Android N Developer Preview: Please file bugs at <a href=
+  "https://developer.android.com/preview/bug">https://developer.android.com/preview/bug</a> for
+  device-specific, system, and Google App bugs. For issues in other apps,
+  please contact the developer directly.
 </p>
 
-<p>
-  To discuss issues or ideas with other developers working with Android M, join
-  the <a href="http://g.co/dev/AndroidMDevPreview">M Developer Preview Google+
-  community</a>.
-</p>
+<p>To discuss issues or ideas with other developers working with Android N, join the
+<a href="{@docRoot}preview/dev-community">Developer Preview Google+ community</a>.</p>
 
-<h2 id="preview3-notes">
-  Developer Preview 3
-</h2>
 
-<div class="wrap">
-  <div class="cols">
-    <div class="col-9of16">
-      <p>
-        <em>Date: August 2015<br>
-        Build: MPA44I<br>
-        Hardware support: Nexus 5, 6, 9, Player<br>
-        Emulator support: x86 &amp; ARM 32/64-bit<br>
-        Google Play services: 7.8</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<p>
-  Developer Preview 3 is the <strong>final incremental update</strong>
-  to the Android M preview platform that was originally released in May 2015.
-  The update includes <strong>final APIs and the official Android 6.0 SDK</strong>,
-  as well as near-final system images for testing your apps. The
-  updated system images bring a variety of fixes and enhancements across
-  the system, including those related to issues reported by developers
-  through the external issue tracker.
-</p>
-
-<p>
-  If you are currently developing or testing on Android M, you should <strong>update
-  your environment</strong> as soon as possible, so that
-  you can begin <strong>final compatibility testing</strong> in preparation for
-  the public release to device manufacturers later this year.</p>
-
-<p class="important">Updating to the Android 6.0 SDK and the latest
-   system images 3 ensures that you are building against final
-   platform APIs in <strong>API level 23</strong> and testing
-   against final behaviors. If you are just getting started,
-   follow the instructions in <a href=
-  "/preview/setup-sdk.html">Set up the Preview SDK</a>.
-</p>
-
-<h3>
-  What's included
-</h3>
-
-<p>
-  Developer Preview 3 includes the official Android 6.0
-  SDK as well as updated preview system images, documentation,
-  and samples for developing against the Android 6.0
-  development platform.
-</p>
-
-<ul>
-  <li>
-    <strong>SDK platform</strong> and <strong>system images</strong> (Nexus and
-    emulator) for building and testing. You can download the Android 6.0 SDK and tools from
-    the SDK Manager, and the system images are available by over-the-air (OTA)
-    update or download (see below).
-  </li>
-
-  <li>
-    <strong>Updated documentation</strong>. The <a href=
-    "{@docRoot}preview/behavior-changes.html">Behavior Changes</a>, <a href=
-    "{@docRoot}preview/api-overview.html">API Overview</a>, and <a href=
-    "{@docRoot}preview/features/runtime-permissions.html">Permissions</a> documents have
-    been updated to reflect the latest changes in the platform. An updated
-    <a href="/preview/download.html">Developer Documentation download
-    package</a> is available, including full reference docs and API diff
-    reports. Reference documentation is also now <a
-    href="{@docRoot}reference/packages.html">available online</a>.
-  </li>
-
-  <li>
-    <strong>Translations</strong> of the documentation are available. Use
-    the language selector at the bottom right corner of any page to switch
-    languages. Note that some of the translated docs are not yet updated for
-    Developer Preview 3.
-  </li>
-
-  <li>The <a href="{@docRoot}preview/samples.html">Android M code samples</a> are also
-  updated to account for API and behavior changes:
-    <ul>
-      <li>
-        <a href=
-        "https://github.com/googlesamples/android-RuntimePermissions">RuntimePermissions</a>
-        and <a href=
-        "https://github.com/googlesamples/android-RuntimePermissionsBasic">RuntimePermissionsBasic</a>
-        are updated to reflect latest permissions API changes, including
-        <code>shouldShowRequestPermissionRationale()</code>.
-      </li>
-      <li>
-        Other samples are updated to support runtime permissions.
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h3 id="changes">
-  Key changes
-</h3>
-<ul>
-  <li>General
-    <ul>
-      <li>Updated the Fingerprint API to enables better error reporting,
-        better fingerprint enrollment experience, and enumeration support for greater
-        reliability.</li>
-      <li>Modified app access to BLE and Wi-Fi scans to require the location permisssion when they
-        target Android 6.0 (API level 23) or higher. Apps targeting API 22 or earlier can
-        still perform BTLE and WiFi scans, but only when they are in the foreground. While in the background, those apps will get no results from BTLE and WiFi scans.</li>
-    </ul>
-  </li>
-  <li>Permission changes
-    <ul>
-      <li>Updated the user interface for permissions and enhanced some of the permissions
-        behaviors.</li>
-      <li>The {@link android.Manifest.permission#GET_ACCOUNTS} permission is now a member of the
-        {@link android.Manifest.permission_group#CONTACTS} permission group and it has a
-        {@code android:protectionLevel} of {@code dangerous}. This change means that when
-        targeting Android 6.0 (API level 23), you must check for and request this permission if
-        your app requires it.
-      </li>
-
-      <li>The {@code android.permission.READ_PROFILE} and {@code android.permission.WRITE_PROFILE}
-       permissions have been removed from the {@link android.Manifest.permission_group#CONTACTS}
-       permission group.
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<p>
-  For a complete list of changes, including renamed and removed APIs, see the API Diff report for
-  <a href="{@docRoot}sdk/api_diff/23/changes.html">API level 22 to 23</a>.
-</p>
-
-<h3 id="ki">
-  Known issues
-</h3>
-
-<ul>
-  <li>General issues:
-    <ul>
-      <li>On LTE devices, including Nexus 9, GPS is not functioning properly, which may
-        interfere with navigation services.
-      </li>
-      <li>During Hangouts calls, users may experience distorted or low audio on some devices.
-      </li>
-      <li>The Google Apps Device Policy app bundled with MPA44G is unable to set up an Android for
-Work Profile, so you cannot create a new Work Profile with that version of the app. This issue is
-resolved in the Google Apps Device Policy app bundled with MPA44I. Other apps that provide Android
-for Work functionality remain unaffected on either build.
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<p>
-  For a complete list of reported issues, please refer to the <a href=
-  "https://code.google.com/p/android/issues/list">open issues list</a> on the
-  Developer Preview <a href=
-  "https://code.google.com/p/android-developer-preview/">issue tracker</a>.
-</p>
-
-<h3 id="preview3-get">
-  Get Developer Preview 3
-</h3>
-
-<p>
-  You can download the official Android 6.0 SDK platform and
-  Developer Preview 3 emulator images from the SDK Manager.
-</p>
-
-<p>
-  Developer Preview 3 system images for supported Nexus devices are available
-  by download and by over-the-air (OTA) update. The OTA update is available
-  only to supported devices that are currently running a Developer Preview build.
-  If your device is running a Developer Preview build, you should automatically receive
-  the OTA update within a few days of availability.
-</p>
-
-<p>
-  For instructions on how to download and flash your device to the latest Developer
-  Preview, see the links and instructions on the <a href=
-  "{@docRoot}preview/download.html">Downloads</a> page.
-</p>
-
-<p>
-  For instructions on how to start developing and testing with Android 6.0
-  Marshmallow, read <a href="{@docRoot}preview/setup-sdk.html">Setting
-  up the SDK</a>.
-</p>
-
-<h2 id="preview2-notes">
-  Developer Preview 2
-</h2>
-
-<div class="wrap">
-  <div class="cols">
-    <div class="col-9of16">
-      <p>
-        <em>Date: July 2015<br>
-        Builds: MPZ79M (Nexus 5, 6, 9), MPZ79N (Nexus Player)<br>
-        Hardware support: Nexus 5, 6, 9, Player<br>
-        Emulator support: x86 &amp; ARM 32/64-bit<br>
-        Google Play services: 7.6</em>
-      </p>
-    </div>
-  </div>
-</div>
-
-<p>
-  Android M Developer Preview 2 is an <strong>incremental update</strong> to
-  the Android M preview platform that was originally released in May 2015. The
-  update includes a variety of enhancements and bug fixes made across the
-  system, including those related to issues reported by developers through the
-  external issue tracker.
-</p>
-
-<p>
-  If you are currently developing or testing on Android M, you should
-  <strong>update your environment</strong> to Developer Preview 2 as soon as
-  possible. This ensures that you are building with the latest platform APIs
-  and testing against the latest behaviors. If you are just getting started
-  with the Android M Developer Preview SDK, follow the instructions in <a href=
-  "{@docRoot}preview/setup-sdk.html">Set up the Preview SDK</a>, then update your
-  environment for Developer Preview 2.
-</p>
-
-<h3>
-  What's included
-</h3>
-
-<p>
-  Developer Preview 2 includes an updated SDK with system images,
-  documentation, and samples for developing against the latest Android M
-  platform.
-</p>
-
-<ul>
-  <li>
-    <strong>SDK platform</strong> and <strong>system images</strong> (Nexus and
-    emulator) for building and testing. You can download the updated tools from
-    the SDK Manager, and the system images are available by over-the-air (OTA)
-    update or download (see below).
-  </li>
-
-  <li>
-    <strong>Updated documentation</strong>. The <a href=
-    "{@docRoot}preview/behavior-changes.html">Behavior Changes</a>, <a href=
-    "{@docRoot}preview/api-overview.html">API Overview</a>, and <a href=
-    "{@docRoot}preview/features/runtime-permissions.html">Permissions</a> documents have
-    been updated to reflect the latest changes in the platform. An updated
-    <a href="{@docRoot}preview/download.html">Developer Documentation download
-    package</a> is available, including full reference docs and API diff
-    reports.
-  </li>
-
-  <li>
-    <strong>Translations</strong> of the documentation are now available. Use
-    the language selector at the bottom right corner of any page to switch
-    languages. Note that some of the translated docs are not yet updated for
-    Developer Preview 2 (coming soon).
-  </li>
-
-  <li>The <a href="{@docRoot}preview/samples.html">Android M code samples</a> are also
-  updated to account for API and behavior changes:
-    <ul>
-      <li>
-        <a href=
-        "https://github.com/googlesamples/android-RuntimePermissions">RuntimePermissions</a>
-        / <a href=
-        "https://github.com/googlesamples/android-RuntimePermissionsBasic">RuntimePermissionsBasic</a>
-        are updated to reflect latest permissions API changes, including
-        <code>shouldShowRequestPermissionRationale()</code>.
-      </li>
-      <li>
-        <a href=
-        "https://github.com/googlesamples/android-FingerprintDialog">FingerprintDialog</a>
-        adds a flow to ask for passwords when new fingerprints are added as
-        well as a preference if the app will use fingerprints as a method of
-        authentication.
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<h3 id="changes-p2">
-  Key changes
-</h3>
-
-<ul>
-  <li>Permissions changes
-    <ul>
-      <li>The <code>android.permission.USE_FINGERPRINT</code> permission now
-      has "normal" protection level, so it is no longer necessary to request
-      this permission directly from the user. The <code>USE_FINGERPRINT</code>
-      permission enables fingerprints to be enabled for authentication, but
-      does not give the requesting app access to the enrollment/fingerprint
-      administration flow.
-      </li>
-
-      <li>The <code>android.permission.WRITE_EXTERNAL_STORAGE</code> permission
-      has protection level "dangerous", meaning that apps wanting to write to
-      external storage will need to request permission from the user at
-      runtime. Both <code>READ_EXTERNAL_STORAGE</code> and
-      <code>WRITE_EXTERNAL_STORAGE</code> are members of the
-      <code>STORAGE</code> permission group.
-      </li>
-
-      <li>Remote Bluetooth/Wi-Fi MAC's now require either the
-      <code>android.permission.ACCESS_COARSE_LOCATION</code> or
-      <code>android.permission.ACCESS_FINE_LOCATION</code> permission.
-      </li>
-
-      <li>Some accounts and identity permissions are moved to
-      <code>CONTACTS</code> permissions group and others are removed or granted
-      based on account type. In particular,
-      <code>android.permission.USE_CREDENTIALS</code>,
-      <code>android.permission.MANAGE_ACCOUNTS</code>, and
-      <code>android.permission.AUTHENTICATE_ACCOUNTS</code> are ungrouped
-      pending further changes in a later release.
-      </li>
-
-      <li>The Wi-Fi permissions
-      <code>android.permission.CHANGE_WIFI_STATE</code>,
-      <code>android.permission.CHANGE_WIMAX_STATE</code>, and
-      <code>android.permission.CHANGE_WIFI_MULTICAST_STATE</code> now have
-      protection level "normal".
-      </li>
-
-      <li>The Bluetooth permissions <code>android.permission.BLUETOOTH</code>
-      and <code>android.permission.BLUETOOTH_ADMIN</code> now have protection
-      level "normal".
-      </li>
-
-      <li>Bookmarks and subscribed feeds permissions are removed.
-      </li>
-
-      <li>Apps included in the system image are no longer granted dangerous
-      permissions automatically. All apps should check for and request
-      permissions at runtime.
-      </li>
-
-      <li>Introduces the utility method
-      <code>Activity.shouldShowRequestPermissionRationale(String)</code>, which
-      lets your app see whether users have previously rejected a permission
-      request. This lets you know that your app should explain the the user why
-      it needs that permission. For more information see the <a href=
-      "{@docRoot}preview/features/runtime-permissions.html#explain-need">Permissions</a>
-      developer guide.
-      </li>
-    </ul>
-  </li>
-
-  <li>Other changes
-    <ul>
-      <li>The <code>android.app.AssistContent</code> and
-      <code>android.app.AssistStructure</code> classes are moved into a new
-      package, <code>android.app.assist</code>.
-      </li>
-
-      <li>Bluetooth Stylus APIs are updated and include new callback events.
-      The <code>View.OnStylusButtonPressListener</code> class is renamed to
-      <code>View.OnContextClickListener</code> and
-      <code>GestureDetector.OnStylusButtonPressListener</code> class to <code>
-        GestureDetector.OnContextClickListener</code>.
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<p>
-  For a complete list of changes, including renamed and removed APIs, please
-  refer to the API Diff Reports included in the <a href=
-  "{@docRoot}preview/download.html#docs">Developer Documentation download package</a>.
-</p>
-
-<h3 id="ki-p2">
-  Known issues
-</h3>
-
-<ul>
-  <li>General issues:
-    <ul>
-      <li>The system Messenger app crashes on the 64-bit emulator.</li>
-      <li>After updating to Developer Preview 2, Contacts sync experiences
-      intermittent issues. The workaround is to clear and re-sync Contact Storage
-      data after update. To clear data, go to <strong>Settings &gt; Apps &gt; Show
-      system &gt; Contacts Storage</strong>. Select "Storage" and then
-      <strong>Clear data</strong>.</li>
-      <li>In YouTube app, it's not possible to share a video. The share window is
-      blank.</li>
-      <li>The bundled Google Apps Device Policy app included in Developer Preview 2 is unable to
-      properly set up an Android for Work Profile, so you cannot create a new Work Profile with this
-      app after you update. This issue is specific to the Google Apps Device Policy app, and not the
-      Android for Work platform (or our partner EMM providers). As a workaround for users of the
-      Google Apps Device Policy app, be sure to create a Work Profile in Developer Preview 1 before
-      updating to Developer Preview 2.
-      </li>
-    </ul>
-  </li>
-  <li>Issues specific to MPZ79N on Nexus Player:
-    <ul>
-      <li>Bluetooth share crashes after clearing data. Please <strong>do not
-      clear app data for system services</strong>, otherwise you will need to Factory
-      Reset your device</li>
-      <li>Remote control can experience intermittent connectivity issues. </li>
-      <li>Movies show black screen with some ANRs on exiting the video.</li>
-      <li>In YouTube app, lower-resolution videos have a green bar at the top
-      and some color-ghosting</li>
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<p>
-  For a complete list of reported issues, please refer to the <a href=
-  "https://code.google.com/p/android/issues/list">open issues list</a> on the
-  Developer Preview <a href=
-  "https://code.google.com/p/android-developer-preview/">issue tracker</a>.
-</p>
-
-<h3 id="preview2-get">
-  Get Developer Preview 2
-</h3>
-
-<p>
-  You can download the Developer Preview 2 platform and emulator images from
-  the SDK Manager.
-</p>
-
-<p>
-  Developer Preview 2 system images for supported Nexus devices are available
-  by download and by over-the-air (OTA) update. The OTA update is available
-  only to supported devices that are currently running Developer Preview 1. If
-  your devices are running Developer Preview 1, you should automatically receive
-  the OTA update within a few days of availability.
-</p>
-
-<p>
-  If you are just getting started with Android M Developer Preview, and want
-  to receive Developer Preview 2 via OTA, download the appropriate
-  Developer Preview 1 <a href="{@docRoot}preview/download_mp1.html#images">
-  system image</a>, and flash it to your device. Then,
-  leave the device powered on for several hours. It registers with the
-  OTA service, and receives Developer Preview 2 by OTA.
-</p>
-
-<p>
-  For instructions on how to download and flash your device to the Developer
-  Preview, see the links and instructions on the <a href=
-  "{@docRoot}preview/download.html">Downloads</a> page.
-</p>
-
-<p>
-  For instructions on how to start developing and testing with Android M, read
-  <a href="{@docRoot}preview/setup-sdk.html">Setting up the SDK</a>.
-</p>
-
-<h2 id="preview1-notes">
-  Developer Preview 1
-</h2>
+<h2 id="dp1">Developer Preview 1</h2>
 
 <div class="wrap">
   <div class="cols">
     <div class="col-6of12">
       <p>
-        <em>Date: May 2015<br>
-        Build: MPZ44Q<br>
-        Hardware support: Nexus 5, 6, 9, Player<br>
+        <em>Date: March 2016<br>
+        Builds: NPC56P, NPC56R, updated: NPC56W, NPC56X<br>
         Emulator support: x86 &amp; ARM (32/64-bit)<br>
-        Google Play services: 7.5</em>
+        Google Play services: 8.4</em>
       </p>
     </div>
   </div>
 </div>
 
-<p>
-  Initial release.
-</p>
+<h3 id="general">General advisories</h3>
 
+<p>
+  This Developer Preview release is for app developers only and is designed for
+  use in compatibility testing and early development only. Please be aware of
+  these general notes about the release:
+</p>
+<ul>
+  <li>This release has various stability and performance issues on all devices
+  that make it <em>not suitable for daily use on phone or tablet</em>,
+  especially for non-developers.
+  </li>
+
+  <li>System and app performance is known to be <strong>periodically slow /
+  janky</strong>, and device may become occasionally unresponsive. These
+  problems may become more acute with prolonged use.
+  </li>
+
+  <li>Battery life may be regressed in this release for screen-on and
+  screen-off use cases.
+  </li>
+
+  <li>Some apps may not function normally on Developer Preview 1. This includes
+  Google’s apps as well as other apps.
+  </li>
+
+  <li>This early build is not Compatibility Test Suite (CTS) approved. Apps
+  that depend on CTS approved builds (Android Pay for example) won’t work.
+  </li>
+
+  <li>This preview release supports the following devices: Nexus 5X, Nexus 6,
+  Nexus 6P, Nexus 9, Nexus Player, and Pixel C, as well as General Mobile 4G
+  (Android One).
+  </li>
+</ul>
+
+<h3 id="platform">Platform Issues</h3>
+
+<h4 id="performance">Performance and battery</h4>
+
+<ul>
+  <li>System and app performance is known to be <strong>periodically slow /
+  janky</strong>, and device may become occasionally unresponsive. These
+  problems may become more acute with prolonged use.
+  </li>
+
+  <li>Battery life may be regressed in this release for screen-on and
+  screen-off use cases.
+  </li>
+</ul>
+<h4 id="dialer">Dialer</h4>
+
+<ul>
+  <li>Dialer app does not support Direct boot. This will be addressed later in
+  N Developer Preview.
+  </li>
+
+  <li>Voicemail playback does not work.
+  </li>
+</ul>
+
+<h4 id="microphone">Microphone</h4>
+
+<ul>
+   <li>The system may incorrect persists the microphone mute state across apps and reboots. If you mute the microphone in an app and the state is persisted, open any app that has microphone mute controls and unmute the microphone.</li>
+</ul>
+
+<h4 id="ui">System UI</h4>
+
+<ul>
+  <li>Some new or modified strings in the system UI are not translated to all
+  languages.
+  </li>
+
+  <li>Overview UI is still in development, and subject to change. For example,
+  we intend to remove the timer that appears when the user switches between
+  apps.
+  </li>
+
+  <li>Settings controls and toggles may be slow or appear to be unresponsive.
+  </li>
+
+  <li>Visual design of notifications is subject to change.
+  </li>
+
+  <li>In the Gmail app, direct archiving of emails included in a notification
+  bundle does not work properly.
+  </li>
+</ul>
+
+<h4 id="afw">Android for Work</h4>
+
+<ul>
+  <li>Work Security Challenge
+    <ul>
+      <li>After migration to N, or after the user creates work profiles, work
+      profiles can't create keys in the keystore until the user changes their
+      pattern, PIN, or password, or sets up a Work Challenge.
+      </li>
+
+      <li>In Direct boot mode, applying the passcode restrictions to the device
+      causes the work profile to be unlocked, even though the device is locked.
+      This makes the work profile accessible even though it should be protected
+      by the device lock screen.
+      </li>
+
+      <li>When the user enters a wrong password and pin, the system does not
+      display any informational message; instead, it only clears the input
+      field. This issue does not affect pattern or fingerprint input.
+      </li>
+
+      <li>On a tablet, the background displayed with the work challenge is
+      disproportionately small.
+      </li>
+
+      <li>The version of <a href=
+      "https://play.google.com/store/apps/details?id=com.google.android.apps.enterprise.dmagent">
+        Google Apps Device Policy</a> that is bundled with N Developer Preview
+        does not yet support the Work Profile Security Challenge feature.
+        Developers should instead use <a href=
+        "https://play.google.com/store/apps/details?id=com.afwsamples.testdpc">TestDPC</a>
+        to test this feature.
+      </li>
+    </ul>
+  </li>
+
+  <li>Always On VPN
+    <ul>
+      <li>If Always On VPN mode is turned on, but VPN is not available, apps
+      not specified as exceptions to the Always On policy connect over the
+      ordinary network. Unless specified as exceptions to Always On VPN policy,
+      apps should be offline if they have no VPN connection available.
+        <ul>
+          <li>When Always On mode is on, a VPN connection is not established
+          after a device reboots into Direct boot mode, even after the user
+          unlocks the secure lock screen.
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </li>
+
+  <li>Improved Contacts
+    <ul>
+      <li>Bluetooth PBAP/MAP devices do not display Caller ID for work
+      contacts. The next release of Preview resolves this issue.
+      </li>
+    </ul>
+  </li>
+
+  <li>Work Mode
+    <ul>
+      <li>The Google Now Launcher does not display whether Work Mode is on or
+      off. The Launcher also does not show app suspension state.
+      </li>
+
+      <li>After the user turns Work Mode off and on, the system no longer shows
+      Work profile app widgets, such as Calendar.
+      </li>
+    </ul>
+  </li>
+
+  <li>Suspend Packages
+  </li>
+
+  <li>Device admins can suspend critical system packages, which may lead to
+  unexpected behavior, such as placing calls despite the Telephone disabled
+  dialog’s being displayed.
+  </li>
+
+  <li>Other
+    <ul>
+      <li>The Settings app crashes on launch if {@link
+      android.os.UserManager#DISALLOW_MOUNT_PHYSICAL_MEDIA} is set to true when
+      the user inserts physical media such as an SD card.
+      </li>
+
+      <li>The {@code DPM.setPackagesSuspended} state does not persist when the
+      user uninstalls and then reinstalls an app. Either the app should remain
+      suspended after uninstall/reinstall, or suspended apps should not be
+      uninstallable
+      </li>
+
+      <li>The first check-in in a Work Profile takes several minutes to
+      complete. This may cause the device to take longer than normal to be
+      visible in the Play EMM API.
+      </li>
+
+      <li>Notifications from Work Profile apps are not visible to notification
+      listeners installed in the personal profile. As a result, the system does
+      not display Notifications as expected.
+      </li>
+
+      <li>The version of Google Apps Device Policy that is bundled with N
+      Developer Preview does not yet support the Work Profile Security
+      Challenge feature. Developers should instead use TestDPC to test this
+      feature.
+      </li>
+    </ul>
+  </li>
+</ul>
+
+<h4 id="keyboard">Keyboard</h4>
+
+<ul>
+<li>Bluetooth pairing between keyboards and Android devices may be unstable. </li>
+</ul>
+
+<h4 id="video">Video</h4>
+
+<ul>
+<li>Video playback may lag and show interruptions.</li>
+</ul>
+
+<h4 id="wifi">Wi-Fi</h4>
+
+<ul>
+  <li>Wi-Fi has undergone some refactoring which may change API corner case
+  behavior. Specifically, applications which attempt to connect to specific
+  networks, or attempt to reconnect to networks should retest.
+  </li>
+
+  <li>The legacy DHCP client has been removed from the platform. The only DHCP
+  client that the platform supports is the DHCP client introduced in M.
+  </li>
+</ul>
+
+<h4 id="direct">Direct boot</h4>
+
+<ul>
+  <li>NFC doesn't function until first unlock.
+    <ul>
+      <li>When a phone with Bluetooth enabled is restarted, Bluetooth does not
+      turn on automatically. You must manually re-enable Bluetooth.
+      </li>
+
+      <li>Under some circumstances, the default ringtone may not sound for
+      phone calls and messages. This behavior is fixed in the next N Preview
+      release, with one exception (and workaround):
+      </li>
+
+      <li>On a device that is not freshly wiped--one that has been booted at
+      least once since being set to direct boot mode--the default notification
+      ringtone does not sound. The user can work around this issue by manually
+      selecting a ringtone from Settings.
+      </li>
+
+      <li>Direct boot is not enabled by default on devices running an N
+      Developer Preview build. To enable direct boot for testing and
+      development, go to Developer Options and tap Convert to File Encryption.
+      In this dev preview, this requires a factory reset to repartition and
+      reformat your device for File-based Encryption.
+      </li>
+    </ul>
+  </li>
+</ul>
+
+<h4 id="pip">Picture-in-picture for Android TV</h4>
+
+<ul>
+  <li>The PIP integration in the Recents UI is not finalized, and is subject to
+  change.
+    <ul>
+      <li>The animation of the PIP window is not smooth. Future releases of the
+      Preview will improve this.
+      </li>
+    </ul>
+  </li>
+
+  <li style="list-style: none">Future releases of the Preview will improve upon
+  the visual design and layout alignment of PIP.
+  </li>
+</ul>
+
+<h4 id="bugs">Bug reports</h4>
+
+<ul>
+  <li>Bug reports do not always complete successfully (as a workaround,
+  sometimes they can still be accessed through the bug report document provider
+  in internal storage).
+  </li>
+</ul>
+
+<h4 id="split">Split-screen Multi-window</h4>
+
+<ul>
+  <li>Apps may experience crashes and unexpected UI behavior when put into
+  split-screen mode. These are app issues that must be fixed by the app
+  developer.
+  </li>
+
+  <li>When an app targets a version of the Android platform earlier than N, the
+  App may not work with split-screen toast may appear multiple times.
+  </li>
+
+  <li>Long-pressing the Overview button while using an app with a fixed
+  orientation may produce unexpected app behavior.
+  </li>
+
+  <li>Apps may flicker while resizing.
+  </li>
+
+  <li>Animations are not yet final.
+  </li>
+</ul>
+
+<h4 id="ime">Input method</h4>
+
+<ul>
+  <li>Google Keyboard unexpectedly falls back to the generic Google keyboard
+  when <b>Use system language</b>, but Google Keyboard doesn’t support any of
+  the languages selected in the system-language preferences. It should fall
+  back to American English.
+    <p>
+      You can work around this problem by adding at least one language that
+      Google Keyboard supports.
+    </p>
+  </li>
+</ul>
+
+
+<h4 id="accessibility">Accessibility</h4>
+
+<ul>
+   <li>TalkBack exhibits issues with features including Notifications, Quick Settings Tiles and Multi-window display that may cause system crashing or lack of spoken feedback from TalkBack. Future releases of the preview will address these issues.</li>
+</ul>
+
+<h3 id="device-sp">Device-Specific Notes and Issues</h3>
+
+<h4 id="player">Nexus Player</h4>
+<ul>
+<li>Video playback, app compatibility and stability issues are expected on Nexus Player in this release of the Preview.</li>
+</ul>
+
+<h4 id="pixelc">Pixel C</h4>
+<ul>
+<li>Multi-window resizing may cause crashing.</li>
+</ul>
+
+<h4 id="n9">Nexus 9</h4>
+<ul>
+<li>Nexus 9 devices may not start after receiving an over-the-air (OTA) update
+  via the Android Beta Program. To recover from this issue, you can try
+  to manually install the OTA image. For more information, see
+  <a href="{@docRoot}preview/download-ota.html">Applying a Device OTA Image</a>.
+</li>
+</ul>
 
diff --git a/docs/html/preview/testing/guide.jd b/docs/html/preview/testing/guide.jd
deleted file mode 100644
index 56bb4d9..0000000
--- a/docs/html/preview/testing/guide.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=Testing Guide
-page.image=images/cards/card-build_16x9_2x.png
-page.keywords=previewresources,androidm,testing,permissions
-
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>In this document</h2>
-      <ol>
-        <li><a href="#runtime-permissions">Testing Permissions</a></li>
-        <li><a href="#doze-standby">Testing Doze and App Standby</a></li>
-        <li><a href="#ids">Auto Backup and Device Identifiers</a></li>
-      </ol>
-  </div>
-</div>
-
-<p>
-  The Android M Developer Preview gives you an opportunity to ensure your apps work with the next
-  version of the platform. This preview includes a number of APIs and behavior changes that can
-  impact your app, as described in the <a href="{@docRoot}preview/api-overview.html">API
-  Overview</a> and <a href="{@docRoot}preview/behavior-changes.html">Behavior Changes</a>. In testing
-  your app with the preview, there are some specific system changes that you should focus on to
-  ensure that users have a good experience.
-</p>
-
-<p>
-  This guide describes the what and how to test preview features with your app. You should
-  prioritize testing of these specific preview features, due to their high potential impact on your
-  app's behavior:
-</p>
-
-<ul>
-  <li><a href="#runtime-permissions">Permissions</a>
-  </li>
-  <li><a href="#doze-standby">Doze and App Standby</a>
-  </li>
-  <li><a href="#ids">Auto Backup and Device Identifiers</a></li>
-</ul>
-
-<p>
-  For more information about how to set up devices or virtual devices with a preview system image
-  for testing, see <a href="{@docRoot}preview/setup-sdk.html">Set up the Preview SDK</a>.
-</p>
-
-
-<h2 id="runtime-permissions">Testing Permissions</h2>
-
-<p>
-  The new <a href="{@docRoot}preview/features/runtime-permissions.html">Permissions</a> model
-  changes the way that permissions are allocated to your app by the user. Instead of granting all
-  permissions during the install procedure, your app must ask the user for individual permissions
-  at runtime. For users this behavior provides more granular control over each app’s activities, as
-  well as better context for understanding why the app is requesting a specific permission. Users
-  can grant or revoke the permissions granted to an app individually at any time. This feature of
-  the preview is most likely to have an impact on your app's behavior and may prevent some of your
-  app features from working, or they may work in a degraded state.
-</p>
-
-<p class="caution">
-  This change affects all apps running on the new platform, even those not targeting the new
-  platform version. The platform provides a limited compatibility behavior for legacy apps, but you
-  should begin planning your app’s migration to the new permissions model now, with a goal of
-  publishing an updated version of your app at the official platform launch.
-</p>
-
-
-<h3 id="permission-test-tips">Test tips</h3>
-
-<p>
-  Use the following test tips to help you plan and execute testing of your app with the new
-  permissions behavior.
-</p>
-
-<ul>
-  <li>Identify your app’s current permissions and the related code paths.</li>
-  <li>Test user flows across permission-protected services and data.</li>
-  <li>Test with various combinations of granted/revoked permission.</li>
-  <li>Use the {@code adb} tool to manage permssions from the command line:
-    <ul>
-      <li>List permissions and status by group:
-        <pre>adb shell pm list permissions -d -g</pre>
-      </li>
-      <li>Grant or revoke one or more permissions using the following syntax:<br>
-        <pre>adb shell pm [grant|revoke] &lt;permission.name&gt; ...</pre>
-      </li>
-    </ul>
-  </li>
-  <li>Analyze your app for services that use permissions.</li>
-</ul>
-
-<h3 id="permission-test-strategy">Test strategy</h3>
-
-<p>
-  The permissions change affects the structure and design of your app, as well as
-  the user experience and flows you provide to users. You should assess your app’s current
-  permissions use and start planning for the new flows you want to offer. The official release of
-  the platform provides compatibility behavior, but you should plan on updating your app and not
-  rely on these behaviors.
-</p>
-
-<p>
-  Identify the permissions that your app actually needs and uses, and then find the various code
-  paths that use the permission-protected services. You can do this through a combination of
-  testing on the new platform and code analysis. In testing, you should focus on opting in to
-  runtime permissions by changing the app’s {@code targetSdkVersion} to the preview version. For
-  more information, see <a href="{@docRoot}preview/setup-sdk.html#">Set up the Preview SDK</a>.
-</p>
-
-<p>
-  Test with various combinations of permissions revoked and added, to highlight the user flows that
-  depend on permissions. Where a dependency is not obvious or logical you should consider
-  refactoring or compartmentalizing that flow to eliminate the dependency or make it clear why the
-  permission is needed.
-</p>
-
-<p>
-  For more information on the behavior of runtime permissions, testing, and best practices, see the
-  <a href="{@docRoot}preview/features/runtime-permissions.html">Permissions</a> developer
-  preview page.
-</p>
-
-
-<h2 id="doze-standby">Testing Doze and App Standby</h2>
-
-<p>
-  The power saving features of Doze and App Standby limit the amount of background processing that
-  your app can perform when a device is in an idle state or while your app is not in focus. The
-  restrictions the system may impose on apps include limited or no network access,
-  suspended background tasks, suspended Notifications, ignored wake requests, and alarms. To ensure
-  that your app behaves properly with these power saving optimizations, you should test your app by
-  simulating these low power states.
-</p>
-
-<h4 id="doze">Testing your app with Doze</h4>
-
-<p>To test Doze with your app:</p>
-
-<ol>
-<li>Configure a hardware device or virtual device with a M Preview system image.</li>
-<li>Connect the device to your development machine and install your app.</li>
-<li>Run your app and leave it active.</li>
-<li>Simulate the device going into Doze mode by running the following commands:
-
-<pre>
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-
-  </li>
-  <li>Observe the behavior of your app when the device is re-activated. Make sure it
-    recovers gracefully when the device exits Doze.</li>
-</ol>
-
-
-<h4 id="standby">Testing apps with App Standby</h4>
-
-<p>To test the App Standby mode with your app:</p>
-
-<ol>
-  <li>Configure a hardware device or virtual device with a M Preview system image.</li>
-  <li>Connect the device to your development machine and install your app.</li>
-  <li>Run your app and leave it active.</li>
-  <li>Simulate the app going into standby mode by running the following commands:
-
-<pre>
-$ adb shell am broadcast -a android.os.action.DISCHARGING
-$ adb shell am set-idle &lt;packageName&gt; true
-</pre>
-
-  </li>
-  <li>Simulate waking your app using the following command:
-    <pre>$ adb shell am set-idle &lt;packageName&gt; false</pre>
-  </li>
-  <li>Observe the behavior of your app when it is woken. Make sure it recovers gracefully
-    from standby mode. In particular, you should check if your app's Notifications and background
-    jobs continue to function as expected.</li>
-</ol>
-
-<h2 id="ids">Auto Backup for Apps and Device-Specific Identifiers</h2>
-
-<p>If your app is persisting any device-specific identifiers, such as Google
-Cloud Messaging registration ID, in internal storage,
-make sure to follow best practices to exclude the storage
-location from auto-backup, as described in <a href="{@docRoot}preview/backup/index.html">Auto
-Backup for Apps</a>. </p>
diff --git a/docs/html/preview/testing/performance.jd b/docs/html/preview/testing/performance.jd
deleted file mode 100644
index 6f0a5f1..0000000
--- a/docs/html/preview/testing/performance.jd
+++ /dev/null
@@ -1,684 +0,0 @@
-page.title=Testing Display Performance
-page.image=images/cards/card-test-performance_2x.png
-page.keywords=performance, fps, tools
-
-@jd:body
-
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>In this document</h2>
-      <ol>
-        <li><a href="#measure">Measuring UI Performance</a>
-          <ul>
-            <li><a href="#aggregate">Aggregate frame stats</a></li>
-            <li><a href="#timing-info">Precise frame timing info</a></li>
-            <li><a href="#timing-dump">Simple frame timing dump</a></li>
-            <li><a href="#collection-window">Controlling the window of stat collection</a></li>
-            <li><a href="#diagnose">Diagnosing performance regressions</a></li>
-            <li><a href="#resources">Additional resources</a></li>
-          </ul>
-        </li>
-        <li><a href="#automate">Automating UI Perfomance Tests</a>
-          <ul>
-            <li><a href="#ui-tests">Setting up UI tests</a></li>
-            <li><a href="#automated-tests">Setting up automated UI testing</a></li>
-            <li><a href="#triage">Triaging and fixing observed problems</a></li>
-          </ul>
-        </li>
-      </ol>
-  </div>
-</div>
-
-
-<p>
-  User interface (UI) performance testing ensures that your app not only meets its functional
-  requirements, but that user interactions with your app are buttery smooth, running at a
-  consistent 60 frames per second (<a href=
-  "https://www.youtube.com/watch?v=CaMTIgxCSqU&amp;index=25&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">why
-  60fps?</a>), without any dropped or delayed frames, or as we like to call it, <em>jank</em>. This
-  document explains tools available to measure UI performance, and lays out an approach to
-  integrate UI performance measurements into your testing practices.
-</p>
-
-
-<h2 id="measure">Measuring UI Performance</h2>
-
-<p>
-  In order to improve performance you first need the ability to measure the performance of
-  your system, and then diagnose and identify problems that may arrive from various parts of your
-  pipeline.
-</p>
-
-<p>
-  <em><a href="https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></em> is an
-  Android tool that runs on the device and dumps interesting information about the status of system
-  services. Passing the <em>gfxinfo</em> command to dumpsys provides an output in logcat with
-  performance information relating to frames of animation that are occurring during the recording
-  phase.
-</p>
-
-<pre>
-&gt; adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt;
-</pre>
-
-<p>
-  This command can produce multiple different variants of frame timing data.
-</p>
-
-<h3 id="aggregate">Aggregate frame stats</h3>
-
-<p>
-  With the M Preview the command prints out aggregated analysis of frame data to logcat, collected
-  across the entire lifetime of the process. For example:
-</p>
-
-<pre class="noprettyprint">
-Stats since: 752958278148ns
-Total frames rendered: 82189
-Janky frames: 35335 (42.99%)
-90th percentile: 34ms
-95th percentile: 42ms
-99th percentile: 69ms
-Number Missed Vsync: 4706
-Number High input latency: 142
-Number Slow UI thread: 17270
-Number Slow bitmap uploads: 1542
-Number Slow draw: 23342
-</pre>
-
-<p>
-  These high level statistics convey at a high level the rendering performance of the app, as well
-  as its stability across many frames.
-</p>
-
-
-<h3 id="timing-info">Precise frame timing info</h3>
-
-<p>
-  With the M Preview comes a new command for gfxinfo, and that’s <em>framestats</em> which provides
-  extremely detailed frame timing information from recent frames, so that you can track down and
-  debug problems more accurately.
-</p>
-
-<pre>
-&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; framestats
-</pre>
-
-<p>
-  This command prints out frame timing information, with nanosecond timestamps, from the last 120
-  frames produced by the app. Below is example raw output from adb dumpsys gfxinfo
-  &lt;PACKAGE_NAME&gt; framestats:
-</p>
-
-<pre class="noprettyprint">
-0,27965466202353,27965466202353,27965449758000,27965461202353,27965467153286,27965471442505,27965471925682,27965474025318,27965474588547,27965474860786,27965475078599,27965479796151,27965480589068,
-0,27965482993342,27965482993342,27965465835000,27965477993342,27965483807401,27965486875630,27965487288443,27965489520682,27965490184380,27965490568703,27965491408078,27965496119641,27965496619641,
-0,27965499784331,27965499784331,27965481404000,27965494784331,27965500785318,27965503736099,27965504201151,27965506776568,27965507298443,27965507515005,27965508405474,27965513495318,27965514061984,
-0,27965516575320,27965516575320,27965497155000,27965511575320,27965517697349,27965521276151,27965521734797,27965524350474,27965524884536,27965525160578,27965526020891,27965531371203,27965532114484,
-</pre>
-
-<p>
-  Each line of this output represents a frame produced by the app. Each line has a fixed number of
-  columns describing time spent in each stage of the frame-producing pipeline. The next section
-  describes this format in detail, including what each column represents.
-</p>
-
-
-<h4 id="fs-data-format">Framestats data format</h4>
-
-<p>
-  Since the block of data is output in CSV format, it's very straightforward to paste it to your
-  spreadsheet tool of choice, or collect and parse with a script. The following table explains the
-  format of the output data columns. All timestamps are in nanoseconds.
-</p>
-
-<ul>
-  <li>FLAGS
-    <ul>
-      <li>Rows with a ‘0’ for the FLAGS column can have their total frame time computed by
-      subtracting the INTENDED_VSYNC column from the FRAME_COMPLETED column.
-      </li>
-
-      <li>If this is non-zero the row should be ignored, as the frame has been determined as being
-      an outlier from normal performance, where it is expected that layout &amp; draw take longer
-      than 16ms. Here are a few reasons this could occur:
-        <ul>
-          <li>The window layout changed (such as the first frame of the application or after a
-          rotation)
-          </li>
-
-          <li>It is also possible the frame was skipped in which case some of the values will have
-          garbage timestamps. A frame can be skipped if for example it is out-running 60fps or if
-          nothing on-screen ended up being dirty, this is not necessarily a sign of a problem in
-          the app.
-          </li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-
-  <li>INTENDED_VSYNC
-    <ul>
-      <li>The intended start point for the frame. If this value is different from VSYNC, there
-      was work occurring on the UI thread that prevented it from responding to the vsync signal
-      in a timely fashion.
-      </li>
-    </ul>
-  </li>
-
-  <li>VSYNC
-    <ul>
-      <li>The time value that was used in all the vsync listeners and drawing for the frame
-      (Choreographer frame callbacks, animations, View.getDrawingTime(), etc…)
-      </li>
-
-      <li>To understand more about VSYNC and how it influences your application, check out the
-      <a href=
-      "https://www.youtube.com/watch?v=1iaHxmfZGGc&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=23">
-        Understanding VSYNC</a> video.
-      </li>
-    </ul>
-  </li>
-
-  <li>OLDEST_INPUT_EVENT
-    <ul>
-      <li>The timestamp of the oldest input event in the input queue, or Long.MAX_VALUE if
-      there were no input events for the frame.
-      </li>
-
-      <li>This value is primarily intended for platform work and has limited usefulness to app
-      developers.
-      </li>
-    </ul>
-  </li>
-
-  <li>NEWEST_INPUT_EVENT
-    <ul>
-      <li>The timestamp of the newest input event in the input queue, or 0 if there were no
-      input events for the frame.
-      </li>
-
-      <li>This value is primarily intended for platform work and has limited usefulness to app
-      developers.
-      </li>
-
-      <li>However it’s possible to get a rough idea of how much latency the app is adding by
-      looking at (FRAME_COMPLETED - NEWEST_INPUT_EVENT).
-      </li>
-    </ul>
-  </li>
-
-  <li>HANDLE_INPUT_START
-    <ul>
-      <li>The timestamp at which input events were dispatched to the application.
-      </li>
-
-      <li>By looking at the time between this and ANIMATION_START it is possible to measure how
-      long the application spent handling input events.
-      </li>
-
-      <li>If this number is high (&gt;2ms), this indicates the app is spending an unusually
-      long time processing input events, such as View.onTouchEvent(), which may indicate this
-      work needs to be optimized, or offloaded to a different thread. Note that there are some
-      scenarios, such as click events that launch new activities or similar, where it is
-      expected and acceptable that this number is large.
-      </li>
-    </ul>
-  </li>
-
-  <li>ANIMATION_START
-    <ul>
-      <li>The timestamp at which animations registered with Choreographer were run.
-      </li>
-
-      <li>By looking at the time between this and PERFORM_TRANVERSALS_START it is possible to
-      determine how long it took to evaluate all the animators (ObjectAnimator,
-      ViewPropertyAnimator, and Transitions being the common ones) that are running.
-      </li>
-
-      <li>If this number is high (&gt;2ms), check to see if your app has written any custom
-      animators or what fields ObjectAnimators are animating and ensure they are appropriate
-      for an animation.
-      </li>
-
-      <li>To learn more about Choreographer, check out the <a href=
-      "https://developers.google.com/events/io/sessions/325418001">For Butter or Worse</a>
-      video.
-      </li>
-    </ul>
-  </li>
-
-  <li>PERFORM_TRAVERSALS_START
-    <ul>
-      <li>If you subtract out DRAW_START from this value, you can extract how long the layout
-      &amp; measure phases took to complete. (note, during a scroll, or animation, you would
-      hope this should be close to zero..)
-      </li>
-
-      <li>To learn more about the measure &amp; layout phases of the rendering pipeline, check
-      out the <a href=
-      "https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">
-        Invalidations, Layouts and Performance</a> video
-      </li>
-    </ul>
-  </li>
-
-  <li>DRAW_START
-    <ul>
-      <li>The time at which the draw phase of performTraversals started. This is the start
-      point of recording the display lists of any views that were invalidated.
-      </li>
-
-      <li>The time between this and SYNC_START is how long it took to call View.draw() on all
-      the invalidated views in the tree.
-      </li>
-
-      <li>For more information on the drawing model, see <a href=
-      "{@docRoot}guide/topics/graphics/hardware-accel.html#hardware-model">Hardware Acceleration</a>
-      or the <a href=
-      "https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">
-        Invalidations, Layouts and Performance</a> video
-      </li>
-    </ul>
-  </li>
-
-  <li>SYNC_QUEUED
-    <ul>
-      <li>The time at which a sync request was sent to the RenderThread.
-      </li>
-
-      <li>This marks the point at which a message to start the sync
-      phase was sent to the RenderThread. If the time between this and
-      SYNC_START is substantial (&gt;0.1ms or so), it means that
-      the RenderThread was busy working on a different frame. Internally
-      this is used to differentiate between the frame doing too much work
-      and exceeding the 16ms budget and the frame being stalled due to
-      the previous frame exceeding the 16ms budget.
-      </li>
-    </ul>
-  </li>
-
-  <li>SYNC_START
-    <ul>
-      <li>The time at which the sync phase of the drawing started.
-      </li>
-
-      <li>If the time between this and ISSUE_DRAW_COMMANDS_START is substantial (&gt;0.4ms or
-      so), it typically indicates a lot of new Bitmaps were drawn which must be uploaded to the
-      GPU.
-      </li>
-
-      <li>To understand more about the sync phase, check out the <a href=
-      "https://www.youtube.com/watch?v=VzYkVL1n4M8&amp;index=24&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">
-        Profile GPU Rendering</a> video
-      </li>
-    </ul>
-  </li>
-
-  <li>ISSUE_DRAW_COMMANDS_START
-    <ul>
-      <li>The time at which the hardware renderer started issuing drawing commands to the GPU.
-      </li>
-
-      <li>The time between this and FRAME_COMPLETED gives a rough idea of how much GPU work the
-      app is producing. Problems like too much overdraw or inefficient rendering effects show
-      up here.
-      </li>
-    </ul>
-  </li>
-
-  <li>SWAP_BUFFERS
-    <ul>
-      <li>The time at which eglSwapBuffers was called, relatively uninteresting outside of
-      platform work.
-      </li>
-    </ul>
-  </li>
-
-  <li>FRAME_COMPLETED
-    <ul>
-      <li>All done! The total time spent working on this frame can be computed by doing
-      FRAME_COMPLETED - INTENDED_VSYNC.
-      </li>
-    </ul>
-  </li>
-
-</ul>
-
-<p>
-  You can use this data in different ways. One simple but useful visualization is a
-  histogram showing the distribution of frames times (FRAME_COMPLETED - INTENDED_VSYNC) in
-  different latency buckets, see figure below. This graph tells us at a glance that most
-  frames were very good - well below the 16ms deadline (depicted in red), but a few frames
-  were significantly over the deadline. We can look at changes in this histogram over time
-  to see wholesale shifts or new outliers being created. You can also graph input latency,
-  time spent in layout, or other similar interesting metrics based on the many timestamps
-  in the data.
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-framestats.png">
-
-
-<h3 id="timing-dump">Simple frame timing dump</h3>
-
-<p>
-  If <strong>Profile GPU rendering</strong> is set to <strong>In adb shell dumpsys gfxinfo</strong>
-  in Developer Options, the <code>adb shell dumpsys gfxinfo</code> command prints out timing
-  information for the most recent 120 frames, broken into a few different categories with
-  tab-separated-values. This data can be useful for indicating which parts of the drawing pipeline
-  may be slow at a high level.
-</p>
-
-<p>
-  Similar to <a href="#fs-data-format">framestats</a> above, it's very
-  straightforward to paste it to your spreadsheet tool of choice, or collect and parse with
-  a script. The following graph shows a breakdown of where many frames produced by the app
-  were spending their time.
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-frame-latency.png">
-
-<p>
-  The result of running gfxinfo, copying the output, pasting it into a spreadsheet
-  application, and graphing the data as stacked bars.
-</p>
-
-<p>
-  Each vertical bar represents one frame of animation; its height represents the number of
-  milliseconds it took to compute that frame of animation. Each colored segment of the bar
-  represents a different stage of the rendering pipeline, so that you can see what parts of
-  your application may be creating a bottleneck. For more information on understanding the
-  rendering pipeline, and how to optimize for it, see the <a href=
-  "https://www.youtube.com/watch?v=we6poP0kw6E&amp;index=27&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">
-  Invalidations Layouts and Performance</a> video.
-</p>
-
-
-<h3 id="collection-window">Controlling the window of stat collection</h3>
-
-<p>
-  Both the framestats and simple frame timings gather data over a very short window - about
-  two seconds worth of rendering. In order to precisely control this window of time - for
-  example, to constrain the data to a particular animation - you can reset all counters,
-  and aggregate statistics gathered.
-</p>
-
-<pre>
-&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; reset
-</pre>
-
-<p>
-  This can also be used in conjunction with the dumping commands themselves to collect and
-  reset at a regular cadence, capturing less-than-two-second windows of frames
-  continuously.
-</p>
-
-
-<h3 id="diagnose">Diagnosing performance regressions</h3>
-
-<p>
-  Identification of regressions is a good first step to tracking down problems, and
-  maintaining high application health. However, dumpsys just identifies the existence and
-  relative severity of problems. You still need to diagnose the particular cause of the
-  performance problems, and find appropriate ways to fix them. For that, it’s highly
-  recommended to use the <a href="{@docRoot}tools/help/systrace.html">systrace</a> tool.
-</p>
-
-
-<h3 id="resources">Additional resources</h3>
-
-<p>
-  For more information on how Android’s rendering pipeline works, common problems that you
-  can find there, and how to fix them, some of the following resources may be useful to
-  you:
-</p>
-
-<ul>
-  <li>Rendering Performance 101
-  </li>
-  <li>Why 60fps?
-  </li>
-  <li>Android UI and the GPU
-  </li>
-  <li>Invalidations Layouts and performance
-  </li>
-  <li>Analyzing UI Performance with Systrace
-  </li>
-</ul>
-
-
-<h2 id="automate">Automating UI Perfomance Tests</h2>
-
-<p>
-  One approach to UI Performance testing is to simply have a human tester perform a set of
-  user operations on the target app, and either visually look for jank, or spend an very
-  large amount of time using a tool-driven approach to find it. But this manual approach is
-  fraught with peril - human ability to perceive frame rate changes varies tremendously,
-  and this is also time consuming, tedious, and error prone.
-</p>
-
-<p>
-  A more efficient approach is to log and analyze key performance metrics from automated UI
-  tests. The Android M developer preview includes new logging capabilities which make it
-  easy to determine the amount and severity of jank in your application’s animations, and
-  that can be used to build a rigorous process to determine your current performance and
-  track future performance objectives.
-</p>
-
-<p>
-  This article walks you through a recommended approach to using that data to automate your
-  performance testing.
-</p>
-
-<p>
-  This is mostly broken down into two key actions. Firstly, identifying what you're
-  testing, and how you’re testing it. and Secondly, setting up, and maintaining an
-  automated testing environment.
-</p>
-
-
-<h3 id="ui-tests">Setting up UI tests</h3>
-
-<p>
-  Before you can get started with automated testing, it’s important to determine a few high
-  level decisions, in order to properly understand your test space, and needs you may have.
-</p>
-
-<h4>
-  Identify key animations / flows to test
-</h4>
-
-<p>
-  Remember that bad performance is most visible to users when it interrupts a smooth
-  animation. As such, when identifying what types of UI actions to test for, it’s useful to
-  focus on the key animations that users see most, or are most important to their
-  experience. For example, here are some common scenarios that may be useful to identify:
-</p>
-
-<ul>
-  <li>Scrolling a primary ListView or RecyclerView
-  </li>
-
-  <li>Animations during async wait cycles
-  </li>
-
-  <li>Any animation that may have bitmap loading / manipulation in it
-  </li>
-
-  <li>Animations including Alpha Blending
-  </li>
-
-  <li>Custom View drawing with Canvas
-  </li>
-</ul>
-
-<p>
-  Work with engineers, designers, and product managers on your team to prioritize these key
-  product animations for test coverage.
-</p>
-
-<h4>
-  Define your future objectives and track against them
-</h4>
-
-<p>
-  From a high-level, it may be critical to identify your specific performance goals, and
-  focus on writing tests, and collecting data around them. For example:
-</p>
-
-<ul>
-  <li>Do you just want to begin tracking UI performance for the first time to learn more?
-  </li>
-
-  <li>Do you want to prevent regressions that might be introduced in the future?
-  </li>
-
-  <li>Are you at 90% of smooth frames today and want to get to 98% this quarter?
-  </li>
-
-  <li>Are you at 98% smooth frames and don’t want to regress?
-  </li>
-
-  <li>Is your goal to improve performance on low end devices?
-  </li>
-</ul>
-
-<p>
-  In all of these cases, you’ll want historical tracking which shows performance across
-  multiple versions of your application.
-</p>
-
-<h4>
-  Identify devices to test on
-</h4>
-
-<p>
-  Application performance varies depending on the device it's running on. Some devices may
-  contain less memory, less powerful GPUs, or slower CPU chips. This means that animations
-  which may perform well on one set of hardware, may not on others, and worse, may be a
-  result of a bottleneck in a different part of the pipeline. So, to account for this
-  variation in what a user might see, pick a range of devices to execute tests on, both
-  current high end devices, low end devices, tablets, etc. Look for variation in CPU
-  performance, RAM, screen density, size, and so on. Tests that pass on a high end device
-  may fail on a low end device.
-</p>
-
-<h4>
-  Basic frameworks for UI Testing
-</h4>
-
-<p>
-  Tool suites, like <a href=
-  "{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a> and
-  <a href="{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a>, are
-  built to help automate the action of a user moving through your application. These are simple
-  frameworks which mimic user interaction with your device. To use these frameworks, you
-  effectively create unique scripts, which run through a set of user-actions, and play them
-  out on the device itself.
-</p>
-
-<p>
-  By combining these automated tests, alongside <code>dumpsys gfxinfo</code> you can quickly
-  create a reproducible system that allows you to execute a test, and measure the
-  performance information of that particular condition.
-</p>
-
-
-<h3 id="automated-tests">Setting up automated UI testing</h3>
-
-<p>
-  Once you have the ability to execute a UI test, and a pipeline to gather the data from a
-  single test, the next important step is to embrace a framework which can execute that
-  test multiple times, across multiple devices, and aggregate the resulting performance
-  data for further analysis by your development team.
-</p>
-
-<h4>
-  A framework for test automation
-</h4>
-
-<p>
-  It’s worth noting that UI testing frameworks (like <a href=
-  "{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>)
-  run on the target device/emulator directly. While performance gathering information done
-  by <em>dumpsys gfxinfo</em> is driven by a host machine, sending commands over ADB. To
-  help bridge the automation of these separate entities, <a href=
-  "{@docRoot}tools/help/monkeyrunner_concepts.html">MonkeyRunner</a> framework was
-  developed; A scripting system that runs on your host machine, which can issue commands to
-  a set of connected devices, as well as receive data from them.
-</p>
-
-<p>
-  Building a set of scripts for proper automation of UI Performance testing, at a minimum,
-  should be able to utilize monkeyRunner to accomplish the following tasks:
-</p>
-
-<ul>
-  <li>Load &amp; Launch a desired APK to a target device, devices, or emulator.
-  </li>
-
-  <li>Launch a UI Automator UI test, and allow it to be executed
-  </li>
-
-  <li>Collect performance information through <em>dumpsys gfxinfo</em><em>.</em>
-  </li>
-
-  <li>Aggregate information and display it back in a useful fashion to the developer.
-  </li>
-</ul>
-
-
-<h3 id="triage">Triaging and fixing observed problems</h3>
-
-<p>
-  Once problem patterns or regressions are identified, the next step is identifying and
-  applying the fix. If your automated test framework preserves precise timing breakdowns
-  for frames, it can help you scrutinize recent suspicious code/layout changes (in the case
-  of regression), or narrow down the part of the system you’re analyzing when you switch to
-  manual investigation. For manual investigation, <a href=
-  "{@docRoot}tools/help/systrace.html">systrace</a> is a great place to start, showing
-  precise timing information about every stage of the rendering pipeline, every thread and
-  core in the system, as well as any custom event markers you define.
-</p>
-
-<h4>
-  Properly profiling temporal timings
-</h4>
-
-<p>
-  It is important to note the difficulties in obtaining and measuring timings that come from
-  rendering performance. These numbers are, by nature, non deterministic, and often
-  fluctuate depending on the state of the system, amount of memory available, thermal
-  throttling, and the last time a sun flare hit your area of the earth. The point is that
-  you can run the same test, twice and get slightly different numbers that may be close to
-  each other, but not exact.
-</p>
-
-<p>
-  Properly gathering and profiling data in this manner means running the same test,
-  multiple times, and accumulating the results as an average, or median value. (for the
-  sake of simplicity, let’s call this a ‘batch’) This gives you the rough approximation of
-  the performance of the test, while not needing exact timings.
-</p>
-
-<p>
-  Batches can be used between code changes to see the relative impact of those changes on
-  performance. If the average frame rate for the pre-change Batch is larger than the
-  post-change batch, then you generally have an overall win wrt performance for that
-  particular change.
-</p>
-
-<p>
-  This means that any Automated UI testing you do should take this concept into
-  consideration, and also account for any anomalies that might occur during a test. For
-  example, if your application performance suddenly dips, due to some device issue (that
-  isn’t caused by your application) then you may want to re-run the batch in order to get
-  less chaotic timings.
-</p>
-
-<p>
-  So, how many times should you run a test, before the measurements become meaningful? 10
-  times should be the minimum, with higher numbers like 50 or 100 yielding more accurate
-  results (of course, you’re now trading off time for accuracy)
-</p>
diff --git a/docs/html/reference/android/support/test/InstrumentationRegistry.html b/docs/html/reference/android/support/test/InstrumentationRegistry.html
index 586129a..b4c4559 100644
--- a/docs/html/reference/android/support/test/InstrumentationRegistry.html
+++ b/docs/html/reference/android/support/test/InstrumentationRegistry.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -858,7 +860,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../assets/images/triangle-closed.png"
+          src="../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1371,6 +1373,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/annotation/Beta.html b/docs/html/reference/android/support/test/annotation/Beta.html
index e25dbec..a5addc0 100644
--- a/docs/html/reference/android/support/test/annotation/Beta.html
+++ b/docs/html/reference/android/support/test/annotation/Beta.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -725,7 +727,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.annotation.Annotation" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.annotation.Annotation-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -910,6 +912,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/annotation/UiThreadTest.html b/docs/html/reference/android/support/test/annotation/UiThreadTest.html
index e9306f3..ad5c3d5 100644
--- a/docs/html/reference/android/support/test/annotation/UiThreadTest.html
+++ b/docs/html/reference/android/support/test/annotation/UiThreadTest.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -733,7 +735,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.annotation.Annotation" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.annotation.Annotation-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -918,6 +920,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/annotation/package-summary.html b/docs/html/reference/android/support/test/annotation/package-summary.html
index d82a183..94e5e13 100644
--- a/docs/html/reference/android/support/test/annotation/package-summary.html
+++ b/docs/html/reference/android/support/test/annotation/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -687,6 +689,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/AmbiguousViewMatcherException.Builder.html b/docs/html/reference/android/support/test/espresso/AmbiguousViewMatcherException.Builder.html
index d24dc6d..c10bf16 100644
--- a/docs/html/reference/android/support/test/espresso/AmbiguousViewMatcherException.Builder.html
+++ b/docs/html/reference/android/support/test/espresso/AmbiguousViewMatcherException.Builder.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -931,7 +933,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1528,6 +1530,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/AmbiguousViewMatcherException.html b/docs/html/reference/android/support/test/espresso/AmbiguousViewMatcherException.html
index 7e6b4c8..ba5f8b0 100644
--- a/docs/html/reference/android/support/test/espresso/AmbiguousViewMatcherException.html
+++ b/docs/html/reference/android/support/test/espresso/AmbiguousViewMatcherException.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -889,7 +891,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Throwable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Throwable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1123,7 +1125,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1424,6 +1426,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/AppNotIdleException.html b/docs/html/reference/android/support/test/espresso/AppNotIdleException.html
index 04e853e..0bfd996 100644
--- a/docs/html/reference/android/support/test/espresso/AppNotIdleException.html
+++ b/docs/html/reference/android/support/test/espresso/AppNotIdleException.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -848,7 +850,7 @@
             <a href="../../../../../reference/android/support/test/espresso/AppNotIdleException.html">AppNotIdleException</a></nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="../../../../../reference/android/support/test/espresso/AppNotIdleException.html#create(java.util.List<java.lang.String>, int, int)">create</a></span>(List&lt;String&gt; idleConditions, int loopCount, int seconds)</nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/test/espresso/AppNotIdleException.html#create(java.util.List<java.lang.String>, java.lang.String)">create</a></span>(List&lt;String&gt; idleConditions, String message)</nobr>
 
         <div class="jd-descrdiv">
           Creates a new AppNotIdleException suitable for erroring out a test case.
@@ -861,6 +863,32 @@
 
 
 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            <a href="../../../../../reference/android/support/test/espresso/AppNotIdleException.html">AppNotIdleException</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/test/espresso/AppNotIdleException.html#create(java.util.List<java.lang.String>, int, int)">create</a></span>(List&lt;String&gt; idleConditions, int loopCount, int seconds)</nobr>
+
+        <div class="jd-descrdiv">
+          <em>
+      This method is deprecated.
+    use <code><a href="../../../../../reference/android/support/test/espresso/AppNotIdleException.html#create(java.util.List<java.lang.String>, java.lang.String)">create(List, String)</a></code> instead
+</em>
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
 </table>
 
 
@@ -883,7 +911,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Throwable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Throwable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1117,7 +1145,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1360,6 +1388,59 @@
 
 
 
+<A NAME="create(java.util.List<java.lang.String>, java.lang.String)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+
+
+
+        <a href="../../../../../reference/android/support/test/espresso/AppNotIdleException.html">AppNotIdleException</a>
+      </span>
+      <span class="sympad">create</span>
+      <span class="normal">(List&lt;String&gt; idleConditions, String message)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Creates a new AppNotIdleException suitable for erroring out a test case.
+
+ <p>This should be called only from the main thread if the app does not idle out within the
+ specified duration.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>idleConditions</td>
+          <td>list of idleConditions that failed to become idle.</td>
+        </tr>
+        <tr>
+          <th>message</td>
+          <td>a message about the failure.</td>
+        </tr>
+      </table>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>a AppNotIdleException suitable to be thrown on the instrumentation thread.
+</li></ul>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="create(java.util.List<java.lang.String>, int, int)"></A>
 
 <div class="jd-details api apilevel-">
@@ -1385,10 +1466,15 @@
 
 
 
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    use <code><a href="../../../../../reference/android/support/test/espresso/AppNotIdleException.html#create(java.util.List<java.lang.String>, java.lang.String)">create(List, String)</a></code> instead
 
+  </p>
   <div class="jd-tagdata jd-tagdescr"><p>Creates a new AppNotIdleException suitable for erroring out a test case.
 
- This should be called only from the main thread if the app does not idle out within the
+ <p>This should be called only from the main thread if the app does not idle out within the
  specified duration.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
@@ -1409,8 +1495,7 @@
   </div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>a AppNotIdleException suitable to be thrown on the instrumentation thread.
-</li></ul>
+      <ul class="nolist"><li>a AppNotIdleException suitable to be thrown on the instrumentation thread.</li></ul>
   </div>
 
     </div>
@@ -1480,6 +1565,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/BaseLayerComponent.html b/docs/html/reference/android/support/test/espresso/BaseLayerComponent.html
index ebd35ee..4a21f81 100644
--- a/docs/html/reference/android/support/test/espresso/BaseLayerComponent.html
+++ b/docs/html/reference/android/support/test/espresso/BaseLayerComponent.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1066,6 +1068,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/DataInteraction.html b/docs/html/reference/android/support/test/espresso/DataInteraction.html
index 5ba5b27..a0aa432 100644
--- a/docs/html/reference/android/support/test/espresso/DataInteraction.html
+++ b/docs/html/reference/android/support/test/espresso/DataInteraction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -963,7 +965,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1508,6 +1510,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/Espresso.html b/docs/html/reference/android/support/test/espresso/Espresso.html
index bd32991..3074910 100644
--- a/docs/html/reference/android/support/test/espresso/Espresso.html
+++ b/docs/html/reference/android/support/test/espresso/Espresso.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1053,7 +1055,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1836,6 +1838,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/EspressoException.html b/docs/html/reference/android/support/test/espresso/EspressoException.html
index 2f57347..f3827c1 100644
--- a/docs/html/reference/android/support/test/espresso/EspressoException.html
+++ b/docs/html/reference/android/support/test/espresso/EspressoException.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -670,7 +672,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
@@ -945,6 +947,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/FailureHandler.html b/docs/html/reference/android/support/test/espresso/FailureHandler.html
index 56782a7..9c3cbfd 100644
--- a/docs/html/reference/android/support/test/espresso/FailureHandler.html
+++ b/docs/html/reference/android/support/test/espresso/FailureHandler.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -673,7 +675,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
@@ -945,6 +947,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/GraphHolder.html b/docs/html/reference/android/support/test/espresso/GraphHolder.html
index 5d3e2af..21899aa 100644
--- a/docs/html/reference/android/support/test/espresso/GraphHolder.html
+++ b/docs/html/reference/android/support/test/espresso/GraphHolder.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -764,7 +766,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1061,6 +1063,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/IdlingPolicies.html b/docs/html/reference/android/support/test/espresso/IdlingPolicies.html
index 2749d24..706ee8d 100644
--- a/docs/html/reference/android/support/test/espresso/IdlingPolicies.html
+++ b/docs/html/reference/android/support/test/espresso/IdlingPolicies.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -876,7 +878,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1367,6 +1369,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/IdlingPolicy.html b/docs/html/reference/android/support/test/espresso/IdlingPolicy.html
index cbc1731..a4b3cfe 100644
--- a/docs/html/reference/android/support/test/espresso/IdlingPolicy.html
+++ b/docs/html/reference/android/support/test/espresso/IdlingPolicy.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -845,7 +847,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1259,6 +1261,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/IdlingResource.ResourceCallback.html b/docs/html/reference/android/support/test/espresso/IdlingResource.ResourceCallback.html
index 32091cf..907790b 100644
--- a/docs/html/reference/android/support/test/espresso/IdlingResource.ResourceCallback.html
+++ b/docs/html/reference/android/support/test/espresso/IdlingResource.ResourceCallback.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -882,6 +884,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/IdlingResource.html b/docs/html/reference/android/support/test/espresso/IdlingResource.html
index 62770e00..ed5d651 100644
--- a/docs/html/reference/android/support/test/espresso/IdlingResource.html
+++ b/docs/html/reference/android/support/test/espresso/IdlingResource.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -676,7 +678,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
@@ -1101,6 +1103,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/IdlingResourceTimeoutException.html b/docs/html/reference/android/support/test/espresso/IdlingResourceTimeoutException.html
index b5aa67c..f0384e4 100644
--- a/docs/html/reference/android/support/test/espresso/IdlingResourceTimeoutException.html
+++ b/docs/html/reference/android/support/test/espresso/IdlingResourceTimeoutException.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -881,7 +883,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Throwable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Throwable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1115,7 +1117,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1455,6 +1457,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/InjectEventSecurityException.html b/docs/html/reference/android/support/test/espresso/InjectEventSecurityException.html
index 12e820f..c5341a5 100644
--- a/docs/html/reference/android/support/test/espresso/InjectEventSecurityException.html
+++ b/docs/html/reference/android/support/test/espresso/InjectEventSecurityException.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -884,7 +886,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Throwable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Throwable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1118,7 +1120,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1522,6 +1524,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/NoActivityResumedException.html b/docs/html/reference/android/support/test/espresso/NoActivityResumedException.html
index f03138d..1846c14 100644
--- a/docs/html/reference/android/support/test/espresso/NoActivityResumedException.html
+++ b/docs/html/reference/android/support/test/espresso/NoActivityResumedException.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -892,7 +894,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Throwable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Throwable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1126,7 +1128,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1498,6 +1500,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/NoMatchingRootException.html b/docs/html/reference/android/support/test/espresso/NoMatchingRootException.html
index bc9e7cb..9cd9bbc 100644
--- a/docs/html/reference/android/support/test/espresso/NoMatchingRootException.html
+++ b/docs/html/reference/android/support/test/espresso/NoMatchingRootException.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -877,7 +879,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Throwable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Throwable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1111,7 +1113,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1449,6 +1451,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/NoMatchingViewException.Builder.html b/docs/html/reference/android/support/test/espresso/NoMatchingViewException.Builder.html
index 1931ae8..70bdf58 100644
--- a/docs/html/reference/android/support/test/espresso/NoMatchingViewException.Builder.html
+++ b/docs/html/reference/android/support/test/espresso/NoMatchingViewException.Builder.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -915,7 +917,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1480,6 +1482,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/NoMatchingViewException.html b/docs/html/reference/android/support/test/espresso/NoMatchingViewException.html
index 3e8bf88..111c2c8 100644
--- a/docs/html/reference/android/support/test/espresso/NoMatchingViewException.html
+++ b/docs/html/reference/android/support/test/espresso/NoMatchingViewException.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -924,7 +926,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Throwable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Throwable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1158,7 +1160,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1498,6 +1500,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/PerformException.Builder.html b/docs/html/reference/android/support/test/espresso/PerformException.Builder.html
index 6876db2..0ecef9c 100644
--- a/docs/html/reference/android/support/test/espresso/PerformException.Builder.html
+++ b/docs/html/reference/android/support/test/espresso/PerformException.Builder.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -884,7 +886,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1385,6 +1387,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/PerformException.html b/docs/html/reference/android/support/test/espresso/PerformException.html
index 7e088ad..458a966 100644
--- a/docs/html/reference/android/support/test/espresso/PerformException.html
+++ b/docs/html/reference/android/support/test/espresso/PerformException.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -926,7 +928,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Throwable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Throwable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1160,7 +1162,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1530,6 +1532,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/Root.Builder.html b/docs/html/reference/android/support/test/espresso/Root.Builder.html
index 01ffe32..f1392e9 100644
--- a/docs/html/reference/android/support/test/espresso/Root.Builder.html
+++ b/docs/html/reference/android/support/test/espresso/Root.Builder.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -848,7 +850,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1285,6 +1287,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/Root.html b/docs/html/reference/android/support/test/espresso/Root.html
index cd14806..d03b558 100644
--- a/docs/html/reference/android/support/test/espresso/Root.html
+++ b/docs/html/reference/android/support/test/espresso/Root.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -856,7 +858,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1254,6 +1256,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/UiController.html b/docs/html/reference/android/support/test/espresso/UiController.html
index 23553c3..d159045 100644
--- a/docs/html/reference/android/support/test/espresso/UiController.html
+++ b/docs/html/reference/android/support/test/espresso/UiController.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1200,6 +1202,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/ViewAction.html b/docs/html/reference/android/support/test/espresso/ViewAction.html
index 65375d8..46cccc5 100644
--- a/docs/html/reference/android/support/test/espresso/ViewAction.html
+++ b/docs/html/reference/android/support/test/espresso/ViewAction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -673,7 +675,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
@@ -1251,6 +1253,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/ViewAssertion.html b/docs/html/reference/android/support/test/espresso/ViewAssertion.html
index 406b4d9..225af1d 100644
--- a/docs/html/reference/android/support/test/espresso/ViewAssertion.html
+++ b/docs/html/reference/android/support/test/espresso/ViewAssertion.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -912,6 +914,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/ViewFinder.html b/docs/html/reference/android/support/test/espresso/ViewFinder.html
index 5b38324..bdc2193 100644
--- a/docs/html/reference/android/support/test/espresso/ViewFinder.html
+++ b/docs/html/reference/android/support/test/espresso/ViewFinder.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -673,7 +675,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
@@ -961,6 +963,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/ViewInteraction.html b/docs/html/reference/android/support/test/espresso/ViewInteraction.html
index b86ff05..cc4fc2b 100644
--- a/docs/html/reference/android/support/test/espresso/ViewInteraction.html
+++ b/docs/html/reference/android/support/test/espresso/ViewInteraction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -874,7 +876,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1350,6 +1352,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/ViewInteractionComponent.html b/docs/html/reference/android/support/test/espresso/ViewInteractionComponent.html
index 57a042f..e47a2c7 100644
--- a/docs/html/reference/android/support/test/espresso/ViewInteractionComponent.html
+++ b/docs/html/reference/android/support/test/espresso/ViewInteractionComponent.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -874,6 +876,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/AdapterDataLoaderAction.html b/docs/html/reference/android/support/test/espresso/action/AdapterDataLoaderAction.html
index 07b841b..87d0833 100644
--- a/docs/html/reference/android/support/test/espresso/action/AdapterDataLoaderAction.html
+++ b/docs/html/reference/android/support/test/espresso/action/AdapterDataLoaderAction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -904,7 +906,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1106,7 +1108,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.ViewAction" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.ViewAction-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1494,6 +1496,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocol.AdaptedData.Builder.html b/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocol.AdaptedData.Builder.html
index d7f4fc3..525d869 100644
--- a/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocol.AdaptedData.Builder.html
+++ b/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocol.AdaptedData.Builder.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -865,7 +867,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1334,6 +1336,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocol.AdaptedData.html b/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocol.AdaptedData.html
index 2b6f07e..a83e524 100644
--- a/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocol.AdaptedData.html
+++ b/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocol.AdaptedData.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -887,7 +889,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1330,6 +1332,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocol.DataFunction.html b/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocol.DataFunction.html
index 8c17f09..01cd848 100644
--- a/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocol.DataFunction.html
+++ b/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocol.DataFunction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -879,6 +881,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocol.html b/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocol.html
index f6d2df5..29f924d 100644
--- a/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocol.html
+++ b/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocol.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1254,6 +1256,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocols.html b/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocols.html
index fb3948d..8abdd3e 100644
--- a/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocols.html
+++ b/docs/html/reference/android/support/test/espresso/action/AdapterViewProtocols.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -802,7 +804,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1139,6 +1141,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/CloseKeyboardAction.html b/docs/html/reference/android/support/test/espresso/action/CloseKeyboardAction.html
index f602400..0cb2a96 100644
--- a/docs/html/reference/android/support/test/espresso/action/CloseKeyboardAction.html
+++ b/docs/html/reference/android/support/test/espresso/action/CloseKeyboardAction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -886,7 +888,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1088,7 +1090,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.ViewAction" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.ViewAction-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1444,6 +1446,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/CoordinatesProvider.html b/docs/html/reference/android/support/test/espresso/action/CoordinatesProvider.html
index ad1b9cf..43c1c07 100644
--- a/docs/html/reference/android/support/test/espresso/action/CoordinatesProvider.html
+++ b/docs/html/reference/android/support/test/espresso/action/CoordinatesProvider.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -674,7 +676,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
@@ -956,6 +958,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/EditorAction.html b/docs/html/reference/android/support/test/espresso/action/EditorAction.html
index 23ae19d..3d5f2126 100644
--- a/docs/html/reference/android/support/test/espresso/action/EditorAction.html
+++ b/docs/html/reference/android/support/test/espresso/action/EditorAction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -886,7 +888,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1088,7 +1090,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.ViewAction" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.ViewAction-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1444,6 +1446,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/EspressoKey.Builder.html b/docs/html/reference/android/support/test/espresso/action/EspressoKey.Builder.html
index ac6e524..c66f60f 100644
--- a/docs/html/reference/android/support/test/espresso/action/EspressoKey.Builder.html
+++ b/docs/html/reference/android/support/test/espresso/action/EspressoKey.Builder.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -906,7 +908,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1411,6 +1413,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/EspressoKey.html b/docs/html/reference/android/support/test/espresso/action/EspressoKey.html
index 15d0e9f..bb56e78 100644
--- a/docs/html/reference/android/support/test/espresso/action/EspressoKey.html
+++ b/docs/html/reference/android/support/test/espresso/action/EspressoKey.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -853,7 +855,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1251,6 +1253,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/GeneralClickAction.html b/docs/html/reference/android/support/test/espresso/action/GeneralClickAction.html
index 963fbb9c..36b63e5 100644
--- a/docs/html/reference/android/support/test/espresso/action/GeneralClickAction.html
+++ b/docs/html/reference/android/support/test/espresso/action/GeneralClickAction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -902,7 +904,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1104,7 +1106,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.ViewAction" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.ViewAction-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1492,6 +1494,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/GeneralLocation.html b/docs/html/reference/android/support/test/espresso/action/GeneralLocation.html
index abbd5c6..c62721b 100644
--- a/docs/html/reference/android/support/test/espresso/action/GeneralLocation.html
+++ b/docs/html/reference/android/support/test/espresso/action/GeneralLocation.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -983,7 +985,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Enum" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Enum-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1185,7 +1187,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1387,7 +1389,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.action.CoordinatesProvider" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.action.CoordinatesProvider-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1438,7 +1440,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Comparable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Comparable-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1961,6 +1963,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/GeneralSwipeAction.html b/docs/html/reference/android/support/test/espresso/action/GeneralSwipeAction.html
index c1a056f..85ef9f6 100644
--- a/docs/html/reference/android/support/test/espresso/action/GeneralSwipeAction.html
+++ b/docs/html/reference/android/support/test/espresso/action/GeneralSwipeAction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -886,7 +888,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1088,7 +1090,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.ViewAction" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.ViewAction-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1444,6 +1446,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/KeyEventAction.html b/docs/html/reference/android/support/test/espresso/action/KeyEventAction.html
index b5fa7db..4a7bf4a 100644
--- a/docs/html/reference/android/support/test/espresso/action/KeyEventAction.html
+++ b/docs/html/reference/android/support/test/espresso/action/KeyEventAction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -620,11 +622,14 @@
 
 
 
+  <a href="#constants">Constants</a>
 
 
 
 
-  <a href="#pubctors">Ctors</a>
+
+
+  &#124; <a href="#pubctors">Ctors</a>
 
 
 
@@ -754,6 +759,51 @@
 
 
 
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="../../../../../../reference/android/support/test/espresso/action/KeyEventAction.html#BACK_ACTIVITY_TRANSITION_MILLIS_DELAY">BACK_ACTIVITY_TRANSITION_MILLIS_DELAY</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="../../../../../../reference/android/support/test/espresso/action/KeyEventAction.html#CLEAR_TRANSITIONING_ACTIVITIES_ATTEMPTS">CLEAR_TRANSITIONING_ACTIVITIES_ATTEMPTS</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="../../../../../../reference/android/support/test/espresso/action/KeyEventAction.html#CLEAR_TRANSITIONING_ACTIVITIES_MILLIS_DELAY">CLEAR_TRANSITIONING_ACTIVITIES_MILLIS_DELAY</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+
+</table>
+
+
 
 
 
@@ -886,7 +936,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1088,7 +1138,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.ViewAction" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.ViewAction-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1201,6 +1251,136 @@
 <!-- Constants -->
 
 
+<!-- ========= ENUM CONSTANTS DETAIL ======== -->
+<h2>Constants</h2>
+
+
+
+
+<A NAME="BACK_ACTIVITY_TRANSITION_MILLIS_DELAY"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        BACK_ACTIVITY_TRANSITION_MILLIS_DELAY
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                150
+                (0x00000096)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="CLEAR_TRANSITIONING_ACTIVITIES_ATTEMPTS"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        CLEAR_TRANSITIONING_ACTIVITIES_ATTEMPTS
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                4
+                (0x00000004)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="CLEAR_TRANSITIONING_ACTIVITIES_MILLIS_DELAY"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        CLEAR_TRANSITIONING_ACTIVITIES_MILLIS_DELAY
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                150
+                (0x00000096)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+
 <!-- Fields -->
 
 
@@ -1444,6 +1624,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/MotionEvents.DownResultHolder.html b/docs/html/reference/android/support/test/espresso/action/MotionEvents.DownResultHolder.html
index 92ed2a4..b167845 100644
--- a/docs/html/reference/android/support/test/espresso/action/MotionEvents.DownResultHolder.html
+++ b/docs/html/reference/android/support/test/espresso/action/MotionEvents.DownResultHolder.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -809,7 +811,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1175,6 +1177,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/MotionEvents.html b/docs/html/reference/android/support/test/espresso/action/MotionEvents.html
index b4d0fba..ac84b8b 100644
--- a/docs/html/reference/android/support/test/espresso/action/MotionEvents.html
+++ b/docs/html/reference/android/support/test/espresso/action/MotionEvents.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -885,7 +887,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1347,6 +1349,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/OpenLinkAction.html b/docs/html/reference/android/support/test/espresso/action/OpenLinkAction.html
index c98627b..db3af22 100644
--- a/docs/html/reference/android/support/test/espresso/action/OpenLinkAction.html
+++ b/docs/html/reference/android/support/test/espresso/action/OpenLinkAction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -888,7 +890,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1090,7 +1092,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.ViewAction" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.ViewAction-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1446,6 +1448,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/PrecisionDescriber.html b/docs/html/reference/android/support/test/espresso/action/PrecisionDescriber.html
index 4beb36a..a73878d 100644
--- a/docs/html/reference/android/support/test/espresso/action/PrecisionDescriber.html
+++ b/docs/html/reference/android/support/test/espresso/action/PrecisionDescriber.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -674,7 +676,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
@@ -947,6 +949,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/Press.html b/docs/html/reference/android/support/test/espresso/action/Press.html
index 254d83c..f027a7b 100644
--- a/docs/html/reference/android/support/test/espresso/action/Press.html
+++ b/docs/html/reference/android/support/test/espresso/action/Press.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -899,7 +901,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Enum" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Enum-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1101,7 +1103,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1303,7 +1305,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.action.PrecisionDescriber" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.action.PrecisionDescriber-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1354,7 +1356,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Comparable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Comparable-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1660,6 +1662,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/ReplaceTextAction.html b/docs/html/reference/android/support/test/espresso/action/ReplaceTextAction.html
index 0142ec7..3f1d4e3 100644
--- a/docs/html/reference/android/support/test/espresso/action/ReplaceTextAction.html
+++ b/docs/html/reference/android/support/test/espresso/action/ReplaceTextAction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -886,7 +888,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1088,7 +1090,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.ViewAction" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.ViewAction-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1444,6 +1446,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/ScrollToAction.html b/docs/html/reference/android/support/test/espresso/action/ScrollToAction.html
index f634987..63061cf 100644
--- a/docs/html/reference/android/support/test/espresso/action/ScrollToAction.html
+++ b/docs/html/reference/android/support/test/espresso/action/ScrollToAction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -886,7 +888,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1088,7 +1090,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.ViewAction" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.ViewAction-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1444,6 +1446,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/Swipe.html b/docs/html/reference/android/support/test/espresso/action/Swipe.html
index 60545a1..c03b3d6 100644
--- a/docs/html/reference/android/support/test/espresso/action/Swipe.html
+++ b/docs/html/reference/android/support/test/espresso/action/Swipe.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -887,7 +889,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Enum" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Enum-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1089,7 +1091,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1291,7 +1293,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.action.Swiper" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.action.Swiper-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1343,7 +1345,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Comparable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Comparable-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1618,6 +1620,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/Swiper.Status.html b/docs/html/reference/android/support/test/espresso/action/Swiper.Status.html
index c682799..ecd0666 100644
--- a/docs/html/reference/android/support/test/espresso/action/Swiper.Status.html
+++ b/docs/html/reference/android/support/test/espresso/action/Swiper.Status.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -875,7 +877,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Enum" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Enum-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1077,7 +1079,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1281,7 +1283,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Comparable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Comparable-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1558,6 +1560,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/Swiper.html b/docs/html/reference/android/support/test/espresso/action/Swiper.html
index 469285f..b10ef30 100644
--- a/docs/html/reference/android/support/test/espresso/action/Swiper.html
+++ b/docs/html/reference/android/support/test/espresso/action/Swiper.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -677,7 +679,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
@@ -998,6 +1000,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/Tap.html b/docs/html/reference/android/support/test/espresso/action/Tap.html
index c9355ea..ce5392c 100644
--- a/docs/html/reference/android/support/test/espresso/action/Tap.html
+++ b/docs/html/reference/android/support/test/espresso/action/Tap.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -899,7 +901,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Enum" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Enum-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1101,7 +1103,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1303,7 +1305,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.action.Tapper" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.action.Tapper-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1354,7 +1356,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Comparable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Comparable-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1660,6 +1662,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/Tapper.Status.html b/docs/html/reference/android/support/test/espresso/action/Tapper.Status.html
index f30ebbc..76d8420 100644
--- a/docs/html/reference/android/support/test/espresso/action/Tapper.Status.html
+++ b/docs/html/reference/android/support/test/espresso/action/Tapper.Status.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -888,7 +890,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Enum" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Enum-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1090,7 +1092,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1294,7 +1296,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Comparable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Comparable-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1605,6 +1607,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/Tapper.html b/docs/html/reference/android/support/test/espresso/action/Tapper.html
index 34f527d..36b742a 100644
--- a/docs/html/reference/android/support/test/espresso/action/Tapper.html
+++ b/docs/html/reference/android/support/test/espresso/action/Tapper.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -677,7 +679,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
@@ -992,6 +994,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/TypeTextAction.html b/docs/html/reference/android/support/test/espresso/action/TypeTextAction.html
index d682c34..87af578 100644
--- a/docs/html/reference/android/support/test/espresso/action/TypeTextAction.html
+++ b/docs/html/reference/android/support/test/espresso/action/TypeTextAction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -916,7 +918,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1118,7 +1120,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.ViewAction" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.ViewAction-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1533,6 +1535,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/ViewActions.html b/docs/html/reference/android/support/test/espresso/action/ViewActions.html
index 23bf927..303ea32 100644
--- a/docs/html/reference/android/support/test/espresso/action/ViewActions.html
+++ b/docs/html/reference/android/support/test/espresso/action/ViewActions.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1424,7 +1426,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2811,6 +2813,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/action/package-summary.html b/docs/html/reference/android/support/test/espresso/action/package-summary.html
index 17135b1..58447bf 100644
--- a/docs/html/reference/android/support/test/espresso/action/package-summary.html
+++ b/docs/html/reference/android/support/test/espresso/action/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1052,6 +1054,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/assertion/LayoutAssertions.html b/docs/html/reference/android/support/test/espresso/assertion/LayoutAssertions.html
index 4ecab33..73bfe57 100644
--- a/docs/html/reference/android/support/test/espresso/assertion/LayoutAssertions.html
+++ b/docs/html/reference/android/support/test/espresso/assertion/LayoutAssertions.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -838,7 +840,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1280,6 +1282,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/assertion/PositionAssertions.html b/docs/html/reference/android/support/test/espresso/assertion/PositionAssertions.html
index 79acb7e..c54c361 100644
--- a/docs/html/reference/android/support/test/espresso/assertion/PositionAssertions.html
+++ b/docs/html/reference/android/support/test/espresso/assertion/PositionAssertions.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -934,7 +936,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1656,6 +1658,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/assertion/ViewAssertions.html b/docs/html/reference/android/support/test/espresso/assertion/ViewAssertions.html
index c211906..b22bcd7 100644
--- a/docs/html/reference/android/support/test/espresso/assertion/ViewAssertions.html
+++ b/docs/html/reference/android/support/test/espresso/assertion/ViewAssertions.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -814,7 +816,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1221,6 +1223,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/assertion/package-summary.html b/docs/html/reference/android/support/test/espresso/assertion/package-summary.html
index 9b84ad7..708e955 100644
--- a/docs/html/reference/android/support/test/espresso/assertion/package-summary.html
+++ b/docs/html/reference/android/support/test/espresso/assertion/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -697,6 +699,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/base/ActiveRootLister.html b/docs/html/reference/android/support/test/espresso/base/ActiveRootLister.html
index d1b2293..768e6f1 100644
--- a/docs/html/reference/android/support/test/espresso/base/ActiveRootLister.html
+++ b/docs/html/reference/android/support/test/espresso/base/ActiveRootLister.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -876,6 +878,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/base/BaseLayerModule.FailureHandlerHolder.html b/docs/html/reference/android/support/test/espresso/base/BaseLayerModule.FailureHandlerHolder.html
index 9c3c6b0..e2ab59e 100644
--- a/docs/html/reference/android/support/test/espresso/base/BaseLayerModule.FailureHandlerHolder.html
+++ b/docs/html/reference/android/support/test/espresso/base/BaseLayerModule.FailureHandlerHolder.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -817,7 +819,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1222,6 +1224,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/base/BaseLayerModule.html b/docs/html/reference/android/support/test/espresso/base/BaseLayerModule.html
index d4a322d..0ed54af 100644
--- a/docs/html/reference/android/support/test/espresso/base/BaseLayerModule.html
+++ b/docs/html/reference/android/support/test/espresso/base/BaseLayerModule.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -957,7 +959,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1586,6 +1588,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/base/Default.html b/docs/html/reference/android/support/test/espresso/base/Default.html
index 8a27cbc..d19184c 100644
--- a/docs/html/reference/android/support/test/espresso/base/Default.html
+++ b/docs/html/reference/android/support/test/espresso/base/Default.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -736,7 +738,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.annotation.Annotation" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.annotation.Annotation-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -921,6 +923,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/base/DefaultFailureHandler.html b/docs/html/reference/android/support/test/espresso/base/DefaultFailureHandler.html
index ff1755f..cd58415 100644
--- a/docs/html/reference/android/support/test/espresso/base/DefaultFailureHandler.html
+++ b/docs/html/reference/android/support/test/espresso/base/DefaultFailureHandler.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -822,7 +824,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1024,7 +1026,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.FailureHandler" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.FailureHandler-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1248,6 +1250,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/base/IdlingResourceRegistry.html b/docs/html/reference/android/support/test/espresso/base/IdlingResourceRegistry.html
index ae3cc2f..f2b24b9 100644
--- a/docs/html/reference/android/support/test/espresso/base/IdlingResourceRegistry.html
+++ b/docs/html/reference/android/support/test/espresso/base/IdlingResourceRegistry.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -870,7 +872,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1357,6 +1359,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/base/MainThread.html b/docs/html/reference/android/support/test/espresso/base/MainThread.html
index 7dfb18d..f5eb0b1 100644
--- a/docs/html/reference/android/support/test/espresso/base/MainThread.html
+++ b/docs/html/reference/android/support/test/espresso/base/MainThread.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -736,7 +738,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.annotation.Annotation" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.annotation.Annotation-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -921,6 +923,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/base/RootViewPicker.html b/docs/html/reference/android/support/test/espresso/base/RootViewPicker.html
index 4638edb..902e6ab 100644
--- a/docs/html/reference/android/support/test/espresso/base/RootViewPicker.html
+++ b/docs/html/reference/android/support/test/espresso/base/RootViewPicker.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -788,7 +790,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -990,7 +992,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-javax.inject.Provider" class="jd-expando-trigger closed"
           ><img id="inherited-methods-javax.inject.Provider-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1164,6 +1166,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/base/UiControllerModule.html b/docs/html/reference/android/support/test/espresso/base/UiControllerModule.html
index c2af7bd..080a129 100644
--- a/docs/html/reference/android/support/test/espresso/base/UiControllerModule.html
+++ b/docs/html/reference/android/support/test/espresso/base/UiControllerModule.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -801,7 +803,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1174,6 +1176,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/base/ViewFinderImpl.html b/docs/html/reference/android/support/test/espresso/base/ViewFinderImpl.html
index 3c8fb58..75720eb 100644
--- a/docs/html/reference/android/support/test/espresso/base/ViewFinderImpl.html
+++ b/docs/html/reference/android/support/test/espresso/base/ViewFinderImpl.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -792,7 +794,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -994,7 +996,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.ViewFinder" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.ViewFinder-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1194,6 +1196,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/base/package-summary.html b/docs/html/reference/android/support/test/espresso/base/package-summary.html
index 40788b4..7762c8a 100644
--- a/docs/html/reference/android/support/test/espresso/base/package-summary.html
+++ b/docs/html/reference/android/support/test/espresso/base/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -810,6 +812,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/contrib/AccessibilityChecks.html b/docs/html/reference/android/support/test/espresso/contrib/AccessibilityChecks.html
index 77597b3..ffe9828 100644
--- a/docs/html/reference/android/support/test/espresso/contrib/AccessibilityChecks.html
+++ b/docs/html/reference/android/support/test/espresso/contrib/AccessibilityChecks.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -791,7 +793,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1168,6 +1170,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/contrib/CountingIdlingResource.html b/docs/html/reference/android/support/test/espresso/contrib/CountingIdlingResource.html
index 525865e..c5fef67 100644
--- a/docs/html/reference/android/support/test/espresso/contrib/CountingIdlingResource.html
+++ b/docs/html/reference/android/support/test/espresso/contrib/CountingIdlingResource.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1018,7 +1020,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1220,7 +1222,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.IdlingResource" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.IdlingResource-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1732,6 +1734,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/contrib/DrawerActions.html b/docs/html/reference/android/support/test/espresso/contrib/DrawerActions.html
index 649be75..0f5adc1 100644
--- a/docs/html/reference/android/support/test/espresso/contrib/DrawerActions.html
+++ b/docs/html/reference/android/support/test/espresso/contrib/DrawerActions.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -744,13 +746,63 @@
 
             static
 
+            <a href="../../../../../../reference/android/support/test/espresso/ViewAction.html">ViewAction</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../../reference/android/support/test/espresso/contrib/DrawerActions.html#close(int)">close</a></span>(int gravity)</nobr>
+
+        <div class="jd-descrdiv">
+          Creates an action which closes the <code><a href="../../../../../../reference/android/support/v4/widget/DrawerLayout.html">DrawerLayout</a></code> with the gravity.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            <a href="../../../../../../reference/android/support/test/espresso/ViewAction.html">ViewAction</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../../reference/android/support/test/espresso/contrib/DrawerActions.html#close()">close</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Creates an action which closes the <code><a href="../../../../../../reference/android/support/v4/widget/DrawerLayout.html">DrawerLayout</a></code> with gravity START.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../../reference/android/support/test/espresso/contrib/DrawerActions.html#closeDrawer(int)">closeDrawer</a></span>(int drawerLayoutId)</nobr>
 
         <div class="jd-descrdiv">
-          Closes the <code><a href="../../../../../../reference/android/support/v4/widget/DrawerLayout.html">DrawerLayout</a></code> with the given id and gravity START.
+          <em>
+      This method is deprecated.
+    Use <code><a href="../../../../../../reference/android/support/test/espresso/contrib/DrawerActions.html#close()">close()</a></code> with <code>perform</code> after matching a view. This method will
+ be removed in the next release.
+</em>
 
 
 
@@ -773,7 +825,57 @@
         <span class="sympad"><a href="../../../../../../reference/android/support/test/espresso/contrib/DrawerActions.html#closeDrawer(int, int)">closeDrawer</a></span>(int drawerLayoutId, int gravity)</nobr>
 
         <div class="jd-descrdiv">
-          Closes the <code><a href="../../../../../../reference/android/support/v4/widget/DrawerLayout.html">DrawerLayout</a></code> with the given id and gravity.
+          <em>
+      This method is deprecated.
+    Use <code><a href="../../../../../../reference/android/support/test/espresso/contrib/DrawerActions.html#open(int)">open(int)</a></code> with <code>perform</code> after matching a view. This method will
+ be removed in the next release.
+</em>
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            <a href="../../../../../../reference/android/support/test/espresso/ViewAction.html">ViewAction</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../../reference/android/support/test/espresso/contrib/DrawerActions.html#open(int)">open</a></span>(int gravity)</nobr>
+
+        <div class="jd-descrdiv">
+          Creates an action which opens the <code><a href="../../../../../../reference/android/support/v4/widget/DrawerLayout.html">DrawerLayout</a></code> drawer with the gravity.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            <a href="../../../../../../reference/android/support/test/espresso/ViewAction.html">ViewAction</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../../reference/android/support/test/espresso/contrib/DrawerActions.html#open()">open</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Creates an action which opens the <code><a href="../../../../../../reference/android/support/v4/widget/DrawerLayout.html">DrawerLayout</a></code> drawer with gravity START.
 
 
 
@@ -796,7 +898,11 @@
         <span class="sympad"><a href="../../../../../../reference/android/support/test/espresso/contrib/DrawerActions.html#openDrawer(int, int)">openDrawer</a></span>(int drawerLayoutId, int gravity)</nobr>
 
         <div class="jd-descrdiv">
-          Opens the <code><a href="../../../../../../reference/android/support/v4/widget/DrawerLayout.html">DrawerLayout</a></code> with the given id and gravity.
+          <em>
+      This method is deprecated.
+    Use <code><a href="../../../../../../reference/android/support/test/espresso/contrib/DrawerActions.html#open(int)">open(int)</a></code> with <code>perform</code> after matching a view. This method will
+ be removed in the next release.
+</em>
 
 
 
@@ -819,7 +925,11 @@
         <span class="sympad"><a href="../../../../../../reference/android/support/test/espresso/contrib/DrawerActions.html#openDrawer(int)">openDrawer</a></span>(int drawerLayoutId)</nobr>
 
         <div class="jd-descrdiv">
-          Opens the <code><a href="../../../../../../reference/android/support/v4/widget/DrawerLayout.html">DrawerLayout</a></code> with the given id and gravity START.
+          <em>
+      This method is deprecated.
+    Use <code><a href="../../../../../../reference/android/support/test/espresso/contrib/DrawerActions.html#open()">open()</a></code> with <code>perform</code> after matching a view. This method will
+ be removed in the next release.
+</em>
 
 
 
@@ -847,7 +957,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1086,6 +1196,74 @@
 
 
 
+<A NAME="close(int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+
+
+
+        <a href="../../../../../../reference/android/support/test/espresso/ViewAction.html">ViewAction</a>
+      </span>
+      <span class="sympad">close</span>
+      <span class="normal">(int gravity)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Creates an action which closes the <code><a href="../../../../../../reference/android/support/v4/widget/DrawerLayout.html">DrawerLayout</a></code> with the gravity. This method
+ blocks until the drawer is fully closed. No operation if the drawer is already closed.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="close()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+
+
+
+        <a href="../../../../../../reference/android/support/test/espresso/ViewAction.html">ViewAction</a>
+      </span>
+      <span class="sympad">close</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Creates an action which closes the <code><a href="../../../../../../reference/android/support/v4/widget/DrawerLayout.html">DrawerLayout</a></code> with gravity START. This method
+ blocks until the drawer is fully closed. No operation if the drawer is already closed.
+</p></div>
+
+    </div>
+</div>
+
+
 <A NAME="closeDrawer(int)"></A>
 
 <div class="jd-details api apilevel-">
@@ -1111,11 +1289,14 @@
 
 
 
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    Use <code><a href="../../../../../../reference/android/support/test/espresso/contrib/DrawerActions.html#close()">close()</a></code> with <code>perform</code> after matching a view. This method will
+ be removed in the next release.
 
-  <div class="jd-tagdata jd-tagdescr"><p>Closes the <code><a href="../../../../../../reference/android/support/v4/widget/DrawerLayout.html">DrawerLayout</a></code> with the given id and gravity START. This method blocks until
- the drawer is fully closed. This method will throw an exception if the drawer is already
- closed.
-</p></div>
+  </p>
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
 </div>
@@ -1146,9 +1327,81 @@
 
 
 
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    Use <code><a href="../../../../../../reference/android/support/test/espresso/contrib/DrawerActions.html#open(int)">open(int)</a></code> with <code>perform</code> after matching a view. This method will
+ be removed in the next release.
 
-  <div class="jd-tagdata jd-tagdescr"><p>Closes the <code><a href="../../../../../../reference/android/support/v4/widget/DrawerLayout.html">DrawerLayout</a></code> with the given id and gravity. This method blocks until the
- drawer is fully closed. This method will throw an exception if the drawer is already closed.
+  </p>
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="open(int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+
+
+
+        <a href="../../../../../../reference/android/support/test/espresso/ViewAction.html">ViewAction</a>
+      </span>
+      <span class="sympad">open</span>
+      <span class="normal">(int gravity)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Creates an action which opens the <code><a href="../../../../../../reference/android/support/v4/widget/DrawerLayout.html">DrawerLayout</a></code> drawer with the gravity. This method
+ blocks until the drawer is fully open. No operation if the drawer is already open.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="open()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+
+
+
+        <a href="../../../../../../reference/android/support/test/espresso/ViewAction.html">ViewAction</a>
+      </span>
+      <span class="sympad">open</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Creates an action which opens the <code><a href="../../../../../../reference/android/support/v4/widget/DrawerLayout.html">DrawerLayout</a></code> drawer with gravity START. This method
+ blocks until the drawer is fully open. No operation if the drawer is already open.
 </p></div>
 
     </div>
@@ -1180,10 +1433,14 @@
 
 
 
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    Use <code><a href="../../../../../../reference/android/support/test/espresso/contrib/DrawerActions.html#open(int)">open(int)</a></code> with <code>perform</code> after matching a view. This method will
+ be removed in the next release.
 
-  <div class="jd-tagdata jd-tagdescr"><p>Opens the <code><a href="../../../../../../reference/android/support/v4/widget/DrawerLayout.html">DrawerLayout</a></code> with the given id and gravity. This method blocks until the
- drawer is fully open. No operation if the drawer is already open.
-</p></div>
+  </p>
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
 </div>
@@ -1214,10 +1471,14 @@
 
 
 
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    Use <code><a href="../../../../../../reference/android/support/test/espresso/contrib/DrawerActions.html#open()">open()</a></code> with <code>perform</code> after matching a view. This method will
+ be removed in the next release.
 
-  <div class="jd-tagdata jd-tagdescr"><p>Opens the <code><a href="../../../../../../reference/android/support/v4/widget/DrawerLayout.html">DrawerLayout</a></code> with the given id and gravity START. This method blocks until
- the drawer is fully open. No operation if the drawer is already open.
-</p></div>
+  </p>
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
 </div>
@@ -1286,6 +1547,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/contrib/DrawerMatchers.html b/docs/html/reference/android/support/test/espresso/contrib/DrawerMatchers.html
index 5e18a7f..54822bd 100644
--- a/docs/html/reference/android/support/test/espresso/contrib/DrawerMatchers.html
+++ b/docs/html/reference/android/support/test/espresso/contrib/DrawerMatchers.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -842,7 +844,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1282,6 +1284,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/contrib/PickerActions.html b/docs/html/reference/android/support/test/espresso/contrib/PickerActions.html
index 78430ae..f090b22 100644
--- a/docs/html/reference/android/support/test/espresso/contrib/PickerActions.html
+++ b/docs/html/reference/android/support/test/espresso/contrib/PickerActions.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -802,7 +804,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1170,6 +1172,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/contrib/RecyclerViewActions.PositionableRecyclerViewAction.html b/docs/html/reference/android/support/test/espresso/contrib/RecyclerViewActions.PositionableRecyclerViewAction.html
index 38e6e529..acebfec 100644
--- a/docs/html/reference/android/support/test/espresso/contrib/RecyclerViewActions.PositionableRecyclerViewAction.html
+++ b/docs/html/reference/android/support/test/espresso/contrib/RecyclerViewActions.PositionableRecyclerViewAction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -771,7 +773,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.ViewAction" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.ViewAction-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1022,6 +1024,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/contrib/RecyclerViewActions.html b/docs/html/reference/android/support/test/espresso/contrib/RecyclerViewActions.html
index 270cdcf..5343364 100644
--- a/docs/html/reference/android/support/test/espresso/contrib/RecyclerViewActions.html
+++ b/docs/html/reference/android/support/test/espresso/contrib/RecyclerViewActions.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -928,7 +930,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1274,7 +1276,7 @@
         </tr>
         <tr>
           <th>viewAction</td>
-          <td>the action that is performed on the view matched by viewHolderMatcher</td>
+          <td>the action that is performed on the view matched by itemViewMatcher</td>
         </tr>
       </table>
   </div>
@@ -1572,6 +1574,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/contrib/package-summary.html b/docs/html/reference/android/support/test/espresso/contrib/package-summary.html
index 63a373c..e61f302 100644
--- a/docs/html/reference/android/support/test/espresso/contrib/package-summary.html
+++ b/docs/html/reference/android/support/test/espresso/contrib/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -762,6 +764,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/intent/Checks.html b/docs/html/reference/android/support/test/espresso/intent/Checks.html
index 9f81dd8..ecbb224 100644
--- a/docs/html/reference/android/support/test/espresso/intent/Checks.html
+++ b/docs/html/reference/android/support/test/espresso/intent/Checks.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -864,7 +866,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1390,6 +1392,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/intent/Intents.html b/docs/html/reference/android/support/test/espresso/intent/Intents.html
index f2a2e64..c517775 100644
--- a/docs/html/reference/android/support/test/espresso/intent/Intents.html
+++ b/docs/html/reference/android/support/test/espresso/intent/Intents.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -952,7 +954,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1561,6 +1563,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/intent/OngoingStubbing.html b/docs/html/reference/android/support/test/espresso/intent/OngoingStubbing.html
index c3abec5..b2d6f11 100644
--- a/docs/html/reference/android/support/test/espresso/intent/OngoingStubbing.html
+++ b/docs/html/reference/android/support/test/espresso/intent/OngoingStubbing.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -775,7 +777,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1110,6 +1112,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/intent/ResettingStubber.html b/docs/html/reference/android/support/test/espresso/intent/ResettingStubber.html
index dbeb5cf..e61b13b 100644
--- a/docs/html/reference/android/support/test/espresso/intent/ResettingStubber.html
+++ b/docs/html/reference/android/support/test/espresso/intent/ResettingStubber.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -663,7 +665,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
@@ -873,7 +875,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.runner.intent.IntentStubber" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.runner.intent.IntentStubber-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1163,6 +1165,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/intent/ResettingStubberImpl.html b/docs/html/reference/android/support/test/espresso/intent/ResettingStubberImpl.html
index c2d59c2..3e5d98f 100644
--- a/docs/html/reference/android/support/test/espresso/intent/ResettingStubberImpl.html
+++ b/docs/html/reference/android/support/test/espresso/intent/ResettingStubberImpl.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -909,7 +911,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1111,7 +1113,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.intent.ResettingStubber" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.intent.ResettingStubber-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1223,7 +1225,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.runner.intent.IntentStubber" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.runner.intent.IntentStubber-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1585,6 +1587,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/intent/ResolvedIntent.html b/docs/html/reference/android/support/test/espresso/intent/ResolvedIntent.html
index 28778b5..0bf2ffa 100644
--- a/docs/html/reference/android/support/test/espresso/intent/ResolvedIntent.html
+++ b/docs/html/reference/android/support/test/espresso/intent/ResolvedIntent.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -649,7 +651,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
@@ -976,6 +978,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/intent/VerifiableIntent.html b/docs/html/reference/android/support/test/espresso/intent/VerifiableIntent.html
index 33e4646..113655b 100644
--- a/docs/html/reference/android/support/test/espresso/intent/VerifiableIntent.html
+++ b/docs/html/reference/android/support/test/espresso/intent/VerifiableIntent.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -789,7 +791,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.intent.ResolvedIntent" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.intent.ResolvedIntent-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1028,6 +1030,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/intent/VerificationMode.html b/docs/html/reference/android/support/test/espresso/intent/VerificationMode.html
index 9944b58..0d16d38 100644
--- a/docs/html/reference/android/support/test/espresso/intent/VerificationMode.html
+++ b/docs/html/reference/android/support/test/espresso/intent/VerificationMode.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -859,6 +861,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/intent/VerificationModes.html b/docs/html/reference/android/support/test/espresso/intent/VerificationModes.html
index 5f68f2e..5488c26 100644
--- a/docs/html/reference/android/support/test/espresso/intent/VerificationModes.html
+++ b/docs/html/reference/android/support/test/espresso/intent/VerificationModes.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -799,7 +801,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1168,6 +1170,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/intent/matcher/BundleMatchers.html b/docs/html/reference/android/support/test/espresso/intent/matcher/BundleMatchers.html
index 78651df..a2481fc 100644
--- a/docs/html/reference/android/support/test/espresso/intent/matcher/BundleMatchers.html
+++ b/docs/html/reference/android/support/test/espresso/intent/matcher/BundleMatchers.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -855,7 +857,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1381,6 +1383,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/intent/matcher/ComponentNameMatchers.html b/docs/html/reference/android/support/test/espresso/intent/matcher/ComponentNameMatchers.html
index 419bee2..1d6d21d 100644
--- a/docs/html/reference/android/support/test/espresso/intent/matcher/ComponentNameMatchers.html
+++ b/docs/html/reference/android/support/test/espresso/intent/matcher/ComponentNameMatchers.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -863,7 +865,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1391,6 +1393,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/intent/matcher/IntentMatchers.html b/docs/html/reference/android/support/test/espresso/intent/matcher/IntentMatchers.html
index 4e58504..ce18381 100644
--- a/docs/html/reference/android/support/test/espresso/intent/matcher/IntentMatchers.html
+++ b/docs/html/reference/android/support/test/espresso/intent/matcher/IntentMatchers.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1181,7 +1183,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2338,6 +2340,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/intent/matcher/UriMatchers.html b/docs/html/reference/android/support/test/espresso/intent/matcher/UriMatchers.html
index 8366f1b..aacd7c7 100644
--- a/docs/html/reference/android/support/test/espresso/intent/matcher/UriMatchers.html
+++ b/docs/html/reference/android/support/test/espresso/intent/matcher/UriMatchers.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -936,7 +938,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1622,6 +1624,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/intent/matcher/package-summary.html b/docs/html/reference/android/support/test/espresso/intent/matcher/package-summary.html
index 63f6d52..686bc63 100644
--- a/docs/html/reference/android/support/test/espresso/intent/matcher/package-summary.html
+++ b/docs/html/reference/android/support/test/espresso/intent/matcher/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -710,6 +712,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/intent/package-summary.html b/docs/html/reference/android/support/test/espresso/intent/package-summary.html
index 4b6c926..8f2ac36 100644
--- a/docs/html/reference/android/support/test/espresso/intent/package-summary.html
+++ b/docs/html/reference/android/support/test/espresso/intent/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -784,6 +786,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/intent/rule/IntentsTestRule.html b/docs/html/reference/android/support/test/espresso/intent/rule/IntentsTestRule.html
index c4f4625..c51c711 100644
--- a/docs/html/reference/android/support/test/espresso/intent/rule/IntentsTestRule.html
+++ b/docs/html/reference/android/support/test/espresso/intent/rule/IntentsTestRule.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -725,8 +727,8 @@
  <p>
  Espresso-Intents APIs can be used in two ways:
  <ul>
- <li>Intent Verification, using the <code><a href="../../../../../../../reference/android/support/test/espresso/intent/Intents.html#intended(org.hamcrest.Matcher<android.content.Intent>)">intended(Matcher)</a></code> API</li>
- <li>Intent Stubbing, using the <code><a href="../../../../../../../reference/android/support/test/espresso/intent/Intents.html#intending(org.hamcrest.Matcher<android.content.Intent>)">intending(Matcher)</a></code> API</li>
+ <li>Intent Verification, using the <code><a href="../../../../../../../reference/android/support/test/espresso/intent/Intents.html#intended(org.hamcrest.Matcher<android.content.Intent>)">intended(Matcher)</a></code> API<li/>
+ <li>Intent Stubbing, using the <code><a href="../../../../../../../reference/android/support/test/espresso/intent/Intents.html#intending(org.hamcrest.Matcher<android.content.Intent>)">intending(Matcher)</a></code> API<li/>
  </ul></p>
 
 
@@ -815,6 +817,22 @@
 
 
 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            </nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../../../reference/android/support/test/espresso/intent/rule/IntentsTestRule.html#IntentsTestRule(java.lang.Class<T>, boolean, boolean)">IntentsTestRule</a></span>(Class&lt;T&gt; activityClass, boolean initialTouchMode, boolean launchActivity)</nobr>
+
+  </td></tr>
+
+
+
 </table>
 
 
@@ -895,7 +913,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.rule.ActivityTestRule" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.rule.ActivityTestRule-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1073,7 +1091,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.rule.UiThreadTestRule" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.rule.UiThreadTestRule-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1154,7 +1172,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1356,7 +1374,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.junit.rules.TestRule" class="jd-expando-trigger closed"
           ><img id="inherited-methods-org.junit.rules.TestRule-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1491,6 +1509,38 @@
 </div>
 
 
+<A NAME="IntentsTestRule(java.lang.Class<T>, boolean, boolean)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+
+      </span>
+      <span class="sympad">IntentsTestRule</span>
+      <span class="normal">(Class&lt;T&gt; activityClass, boolean initialTouchMode, boolean launchActivity)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
 
 
 
@@ -1646,6 +1696,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/intent/rule/package-summary.html b/docs/html/reference/android/support/test/espresso/intent/rule/package-summary.html
index d5dd04a..543f4423 100644
--- a/docs/html/reference/android/support/test/espresso/intent/rule/package-summary.html
+++ b/docs/html/reference/android/support/test/espresso/intent/rule/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -673,6 +675,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/matcher/BoundedMatcher.html b/docs/html/reference/android/support/test/espresso/matcher/BoundedMatcher.html
index ab0a98d..796063d 100644
--- a/docs/html/reference/android/support/test/espresso/matcher/BoundedMatcher.html
+++ b/docs/html/reference/android/support/test/espresso/matcher/BoundedMatcher.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -710,7 +712,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-direct" class="jd-expando-trigger closed"
           ><img id="subclasses-direct-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Direct Subclasses
 
   <div id="subclasses-direct">
@@ -915,7 +917,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.hamcrest.BaseMatcher" class="jd-expando-trigger closed"
           ><img id="inherited-methods-org.hamcrest.BaseMatcher-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -989,7 +991,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1191,7 +1193,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.hamcrest.Matcher" class="jd-expando-trigger closed"
           ><img id="inherited-methods-org.hamcrest.Matcher-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1265,7 +1267,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.hamcrest.SelfDescribing" class="jd-expando-trigger closed"
           ><img id="inherited-methods-org.hamcrest.SelfDescribing-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1547,6 +1549,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/matcher/CursorMatchers.CursorMatcher.html b/docs/html/reference/android/support/test/espresso/matcher/CursorMatchers.CursorMatcher.html
index 21cc23d..2972f62 100644
--- a/docs/html/reference/android/support/test/espresso/matcher/CursorMatchers.CursorMatcher.html
+++ b/docs/html/reference/android/support/test/espresso/matcher/CursorMatchers.CursorMatcher.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -865,7 +867,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.matcher.BoundedMatcher" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.matcher.BoundedMatcher-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -923,7 +925,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.hamcrest.BaseMatcher" class="jd-expando-trigger closed"
           ><img id="inherited-methods-org.hamcrest.BaseMatcher-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -997,7 +999,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1199,7 +1201,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.hamcrest.Matcher" class="jd-expando-trigger closed"
           ><img id="inherited-methods-org.hamcrest.Matcher-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1273,7 +1275,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.hamcrest.SelfDescribing" class="jd-expando-trigger closed"
           ><img id="inherited-methods-org.hamcrest.SelfDescribing-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1515,6 +1517,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/matcher/CursorMatchers.html b/docs/html/reference/android/support/test/espresso/matcher/CursorMatchers.html
index 6d5c7fb..fad8f56 100644
--- a/docs/html/reference/android/support/test/espresso/matcher/CursorMatchers.html
+++ b/docs/html/reference/android/support/test/espresso/matcher/CursorMatchers.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1630,7 +1632,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -3668,6 +3670,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/matcher/LayoutMatchers.html b/docs/html/reference/android/support/test/espresso/matcher/LayoutMatchers.html
index 77d4d0f..7fc0419 100644
--- a/docs/html/reference/android/support/test/espresso/matcher/LayoutMatchers.html
+++ b/docs/html/reference/android/support/test/espresso/matcher/LayoutMatchers.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -797,7 +799,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1168,6 +1170,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/matcher/PreferenceMatchers.html b/docs/html/reference/android/support/test/espresso/matcher/PreferenceMatchers.html
index 299fdb0..ce1268c 100644
--- a/docs/html/reference/android/support/test/espresso/matcher/PreferenceMatchers.html
+++ b/docs/html/reference/android/support/test/espresso/matcher/PreferenceMatchers.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -895,7 +897,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1485,6 +1487,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/matcher/RootMatchers.html b/docs/html/reference/android/support/test/espresso/matcher/RootMatchers.html
index feefcda..e55797e 100644
--- a/docs/html/reference/android/support/test/espresso/matcher/RootMatchers.html
+++ b/docs/html/reference/android/support/test/espresso/matcher/RootMatchers.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -894,7 +896,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1401,6 +1403,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/matcher/ViewMatchers.Visibility.html b/docs/html/reference/android/support/test/espresso/matcher/ViewMatchers.Visibility.html
index 88cffcc..65b46a7 100644
--- a/docs/html/reference/android/support/test/espresso/matcher/ViewMatchers.Visibility.html
+++ b/docs/html/reference/android/support/test/espresso/matcher/ViewMatchers.Visibility.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -877,7 +879,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Enum" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Enum-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1079,7 +1081,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1283,7 +1285,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Comparable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Comparable-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1621,6 +1623,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/matcher/ViewMatchers.html b/docs/html/reference/android/support/test/espresso/matcher/ViewMatchers.html
index d7e98bd..53d3d1e 100644
--- a/docs/html/reference/android/support/test/espresso/matcher/ViewMatchers.html
+++ b/docs/html/reference/android/support/test/espresso/matcher/ViewMatchers.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -865,6 +867,52 @@
             Matcher&lt;View&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../../reference/android/support/test/espresso/matcher/ViewMatchers.html#hasErrorText(java.lang.String)">hasErrorText</a></span>(String expectedError)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns a matcher that matches <code><a href="../../../../../../reference/android/widget/EditText.html">EditText</a></code> based on edit text error string value.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            Matcher&lt;View&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../../reference/android/support/test/espresso/matcher/ViewMatchers.html#hasErrorText(org.hamcrest.Matcher<java.lang.String>)">hasErrorText</a></span>(Matcher&lt;String&gt; stringMatcher)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns a matcher that matches <code><a href="../../../../../../reference/android/widget/EditText.html">EditText</a></code> based on edit text error string value.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            Matcher&lt;View&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../../reference/android/support/test/espresso/matcher/ViewMatchers.html#hasFocus()">hasFocus</a></span>()</nobr>
 
         <div class="jd-descrdiv">
@@ -1572,6 +1620,29 @@
             Matcher&lt;View&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../../reference/android/support/test/espresso/matcher/ViewMatchers.html#withInputType(int)">withInputType</a></span>(int inputType)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns a matcher that matches <code><a href="../../../../../../reference/android/text/InputType.html">InputType</a></code>.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            Matcher&lt;View&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../../reference/android/support/test/espresso/matcher/ViewMatchers.html#withParent(org.hamcrest.Matcher<android.view.View>)">withParent</a></span>(Matcher&lt;View&gt; parentMatcher)</nobr>
 
         <div class="jd-descrdiv">
@@ -1586,7 +1657,7 @@
 
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1609,7 +1680,7 @@
 
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1633,7 +1704,7 @@
 
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1656,7 +1727,7 @@
 
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1679,7 +1750,7 @@
 
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1702,7 +1773,7 @@
 
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1725,7 +1796,7 @@
 
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1748,7 +1819,7 @@
 
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1771,7 +1842,7 @@
 
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1813,7 +1884,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2225,6 +2296,74 @@
 </div>
 
 
+<A NAME="hasErrorText(java.lang.String)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+
+
+
+        Matcher&lt;View&gt;
+      </span>
+      <span class="sympad">hasErrorText</span>
+      <span class="normal">(String expectedError)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns a matcher that matches <code><a href="../../../../../../reference/android/widget/EditText.html">EditText</a></code> based on edit text error string value.
+ <p>
+ Note: Sugar for hasErrorText(is("string")).
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="hasErrorText(org.hamcrest.Matcher<java.lang.String>)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+
+
+
+        Matcher&lt;View&gt;
+      </span>
+      <span class="sympad">hasErrorText</span>
+      <span class="normal">(Matcher&lt;String&gt; stringMatcher)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns a matcher that matches <code><a href="../../../../../../reference/android/widget/EditText.html">EditText</a></code> based on edit text error string value.
+</p></div>
+
+    </div>
+</div>
+
+
 <A NAME="hasFocus()"></A>
 
 <div class="jd-details api apilevel-">
@@ -3397,6 +3536,39 @@
 </div>
 
 
+<A NAME="withInputType(int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+
+
+
+        Matcher&lt;View&gt;
+      </span>
+      <span class="sympad">withInputType</span>
+      <span class="normal">(int inputType)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns a matcher that matches <code><a href="../../../../../../reference/android/text/InputType.html">InputType</a></code>.
+</p></div>
+
+    </div>
+</div>
+
+
 <A NAME="withParent(org.hamcrest.Matcher<android.view.View>)"></A>
 
 <div class="jd-details api apilevel-">
@@ -3884,6 +4056,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/matcher/package-summary.html b/docs/html/reference/android/support/test/espresso/matcher/package-summary.html
index c189041..8c87e68 100644
--- a/docs/html/reference/android/support/test/espresso/matcher/package-summary.html
+++ b/docs/html/reference/android/support/test/espresso/matcher/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -772,6 +774,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/package-summary.html b/docs/html/reference/android/support/test/espresso/package-summary.html
index 1f789e2..4519810 100644
--- a/docs/html/reference/android/support/test/espresso/package-summary.html
+++ b/docs/html/reference/android/support/test/espresso/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1044,6 +1046,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/util/ActivityLifecycles.html b/docs/html/reference/android/support/test/espresso/util/ActivityLifecycles.html
index bb8bdca..95a6b3e 100644
--- a/docs/html/reference/android/support/test/espresso/util/ActivityLifecycles.html
+++ b/docs/html/reference/android/support/test/espresso/util/ActivityLifecycles.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -758,6 +760,30 @@
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../../reference/android/support/test/espresso/util/ActivityLifecycles.html#hasTransitioningActivities(android.support.test.runner.lifecycle.ActivityLifecycleMonitor)">hasTransitioningActivities</a></span>(<a href="../../../../../../reference/android/support/test/runner/lifecycle/ActivityLifecycleMonitor.html">ActivityLifecycleMonitor</a> monitor)</nobr>
+
+        <div class="jd-descrdiv">
+          Indicates whether or not an Activity, not in the foreground, exists in our app within the
+ "Visible Lifetime" state.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../../reference/android/support/test/espresso/util/ActivityLifecycles.html#hasVisibleActivities(android.support.test.runner.lifecycle.ActivityLifecycleMonitor)">hasVisibleActivities</a></span>(<a href="../../../../../../reference/android/support/test/runner/lifecycle/ActivityLifecycleMonitor.html">ActivityLifecycleMonitor</a> monitor)</nobr>
 
         <div class="jd-descrdiv">
@@ -789,7 +815,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1080,6 +1106,64 @@
 </div>
 
 
+<A NAME="hasTransitioningActivities(android.support.test.runner.lifecycle.ActivityLifecycleMonitor)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+
+
+
+        boolean
+      </span>
+      <span class="sympad">hasTransitioningActivities</span>
+      <span class="normal">(<a href="../../../../../../reference/android/support/test/runner/lifecycle/ActivityLifecycleMonitor.html">ActivityLifecycleMonitor</a> monitor)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Indicates whether or not an Activity, not in the foreground, exists in our app within the
+ "Visible Lifetime" state.
+
+ <p>The "Visible Lifetime" is defined as an activity where the onStart() method has been called
+ but where the onStop() method has not been called.
+
+ <p>During this time, the Activity may be visible to the user, and it may be receiving input
+ from the user. This time is a superset of the "Foreground lifetime" of the activity.
+
+ <p>It may be the case that an application has activities in the "visible lifetime" but none in
+ the "Foreground lifetime." It may be the case that without user input an activity will shortly
+ transition into the "Foreground lifetime" in this state, however it also may not transition
+ without further user interaction.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>monitor</td>
+          <td>the ActivityLifecycleMonitor to use</td>
+        </tr>
+      </table>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>true if any activity exists with a transitioning stage.
+</li></ul>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="hasVisibleActivities(android.support.test.runner.lifecycle.ActivityLifecycleMonitor)"></A>
 
 <div class="jd-details api apilevel-">
@@ -1108,11 +1192,11 @@
 
   <div class="jd-tagdata jd-tagdescr"><p>Indicates whether or not an Activity exists in our app within the "Visible Lifetime" state.
 
- <p>The "Visible Lifetime" is defined as an activity who's onStart() method has been called but
- who's onStop() method has not been called.
+ <p>The "Visible Lifetime" is defined as an activity where the onStart() method has been called
+ but where the onStop() method has not been called.
 
  <p>During this time, the Activity may be visible to the user, and it may be receiving input
- from the user. This time is a superset of the "Foreground lifetime' of the activity.
+ from the user. This time is a superset of the "Foreground lifetime" of the activity.
 
  <p>It may be the case that an application has activities in the "visible lifetime" but none in
  the "Foreground lifetime." It may be the case that without user input an activity will shortly
@@ -1200,6 +1284,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/util/HumanReadables.html b/docs/html/reference/android/support/test/espresso/util/HumanReadables.html
index 188dce1..fe73d80 100644
--- a/docs/html/reference/android/support/test/espresso/util/HumanReadables.html
+++ b/docs/html/reference/android/support/test/espresso/util/HumanReadables.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -805,7 +807,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1246,6 +1248,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/util/TreeIterables.ViewAndDistance.html b/docs/html/reference/android/support/test/espresso/util/TreeIterables.ViewAndDistance.html
index 6bf3846..f544d58 100644
--- a/docs/html/reference/android/support/test/espresso/util/TreeIterables.ViewAndDistance.html
+++ b/docs/html/reference/android/support/test/espresso/util/TreeIterables.ViewAndDistance.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -775,7 +777,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1141,6 +1143,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/util/TreeIterables.html b/docs/html/reference/android/support/test/espresso/util/TreeIterables.html
index 623b937..bc1e582 100644
--- a/docs/html/reference/android/support/test/espresso/util/TreeIterables.html
+++ b/docs/html/reference/android/support/test/espresso/util/TreeIterables.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -850,7 +852,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1299,6 +1301,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/util/package-summary.html b/docs/html/reference/android/support/test/espresso/util/package-summary.html
index 0acea32..89faa8d 100644
--- a/docs/html/reference/android/support/test/espresso/util/package-summary.html
+++ b/docs/html/reference/android/support/test/espresso/util/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -709,6 +711,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/action/AtomAction.html b/docs/html/reference/android/support/test/espresso/web/action/AtomAction.html
index 83b052a..807c098 100644
--- a/docs/html/reference/android/support/test/espresso/web/action/AtomAction.html
+++ b/docs/html/reference/android/support/test/espresso/web/action/AtomAction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -937,7 +939,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1139,7 +1141,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.ViewAction" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.ViewAction-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1644,6 +1646,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/action/EnableJavascriptAction.html b/docs/html/reference/android/support/test/espresso/web/action/EnableJavascriptAction.html
index 2ec7760..290094d 100644
--- a/docs/html/reference/android/support/test/espresso/web/action/EnableJavascriptAction.html
+++ b/docs/html/reference/android/support/test/espresso/web/action/EnableJavascriptAction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -857,7 +859,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1059,7 +1061,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.ViewAction" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.ViewAction-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1415,6 +1417,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/action/package-summary.html b/docs/html/reference/android/support/test/espresso/web/action/package-summary.html
index 4416655..2d8d14997 100644
--- a/docs/html/reference/android/support/test/espresso/web/action/package-summary.html
+++ b/docs/html/reference/android/support/test/espresso/web/action/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -685,6 +687,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/assertion/TagSoupDocumentParser.html b/docs/html/reference/android/support/test/espresso/web/assertion/TagSoupDocumentParser.html
index abc588f..c095b81 100644
--- a/docs/html/reference/android/support/test/espresso/web/assertion/TagSoupDocumentParser.html
+++ b/docs/html/reference/android/support/test/espresso/web/assertion/TagSoupDocumentParser.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -786,7 +788,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1179,6 +1181,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/assertion/WebAssertion.html b/docs/html/reference/android/support/test/espresso/web/assertion/WebAssertion.html
index 4ecb6ba..894e603 100644
--- a/docs/html/reference/android/support/test/espresso/web/assertion/WebAssertion.html
+++ b/docs/html/reference/android/support/test/espresso/web/assertion/WebAssertion.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -842,7 +844,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1298,6 +1300,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/assertion/WebViewAssertions.ResultDescriber.html b/docs/html/reference/android/support/test/espresso/web/assertion/WebViewAssertions.ResultDescriber.html
index f2e0de5..c562ef4 100644
--- a/docs/html/reference/android/support/test/espresso/web/assertion/WebViewAssertions.ResultDescriber.html
+++ b/docs/html/reference/android/support/test/espresso/web/assertion/WebViewAssertions.ResultDescriber.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -844,6 +846,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/assertion/WebViewAssertions.html b/docs/html/reference/android/support/test/espresso/web/assertion/WebViewAssertions.html
index a6bbfe1..af52ddc 100644
--- a/docs/html/reference/android/support/test/espresso/web/assertion/WebViewAssertions.html
+++ b/docs/html/reference/android/support/test/espresso/web/assertion/WebViewAssertions.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -844,7 +846,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1275,6 +1277,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/assertion/package-summary.html b/docs/html/reference/android/support/test/espresso/web/assertion/package-summary.html
index 833db0e..fed18ca 100644
--- a/docs/html/reference/android/support/test/espresso/web/assertion/package-summary.html
+++ b/docs/html/reference/android/support/test/espresso/web/assertion/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -724,6 +726,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/bridge/Conduit.html b/docs/html/reference/android/support/test/espresso/web/bridge/Conduit.html
index 75d0f2b..05ef71c 100644
--- a/docs/html/reference/android/support/test/espresso/web/bridge/Conduit.html
+++ b/docs/html/reference/android/support/test/espresso/web/bridge/Conduit.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -819,7 +821,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1235,6 +1237,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/bridge/JavaScriptBridge.html b/docs/html/reference/android/support/test/espresso/web/bridge/JavaScriptBridge.html
index 38c87a1..76fbfd6 100644
--- a/docs/html/reference/android/support/test/espresso/web/bridge/JavaScriptBridge.html
+++ b/docs/html/reference/android/support/test/espresso/web/bridge/JavaScriptBridge.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -816,7 +818,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1232,6 +1234,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/bridge/package-summary.html b/docs/html/reference/android/support/test/espresso/web/bridge/package-summary.html
index 7fc3939..ebfb305 100644
--- a/docs/html/reference/android/support/test/espresso/web/bridge/package-summary.html
+++ b/docs/html/reference/android/support/test/espresso/web/bridge/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -685,6 +687,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/matcher/AmbiguousElementMatcherException.html b/docs/html/reference/android/support/test/espresso/web/matcher/AmbiguousElementMatcherException.html
index d7207b5..ed0b7b3 100644
--- a/docs/html/reference/android/support/test/espresso/web/matcher/AmbiguousElementMatcherException.html
+++ b/docs/html/reference/android/support/test/espresso/web/matcher/AmbiguousElementMatcherException.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -846,7 +848,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Throwable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Throwable-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1080,7 +1082,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1420,6 +1422,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/matcher/DomMatchers.html b/docs/html/reference/android/support/test/espresso/web/matcher/DomMatchers.html
index ccaf9ec..ae850d9 100644
--- a/docs/html/reference/android/support/test/espresso/web/matcher/DomMatchers.html
+++ b/docs/html/reference/android/support/test/espresso/web/matcher/DomMatchers.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -935,7 +937,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1507,6 +1509,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/matcher/package-summary.html b/docs/html/reference/android/support/test/espresso/web/matcher/package-summary.html
index 5fd0c05..594cf7e 100644
--- a/docs/html/reference/android/support/test/espresso/web/matcher/package-summary.html
+++ b/docs/html/reference/android/support/test/espresso/web/matcher/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -701,6 +703,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/model/Atom.html b/docs/html/reference/android/support/test/espresso/web/model/Atom.html
index 01b3916..1eb87e0 100644
--- a/docs/html/reference/android/support/test/espresso/web/model/Atom.html
+++ b/docs/html/reference/android/support/test/espresso/web/model/Atom.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -656,7 +658,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
@@ -1068,6 +1070,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/model/Atoms.html b/docs/html/reference/android/support/test/espresso/web/model/Atoms.html
index fa0ae80..fe4c2e3 100644
--- a/docs/html/reference/android/support/test/espresso/web/model/Atoms.html
+++ b/docs/html/reference/android/support/test/espresso/web/model/Atoms.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -922,7 +924,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1457,6 +1459,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/model/ElementReference.html b/docs/html/reference/android/support/test/espresso/web/model/ElementReference.html
index 1929fd0..bb72bdb 100644
--- a/docs/html/reference/android/support/test/espresso/web/model/ElementReference.html
+++ b/docs/html/reference/android/support/test/espresso/web/model/ElementReference.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -841,7 +843,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1043,7 +1045,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.web.model.JSONAble" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.web.model.JSONAble-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1313,6 +1315,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/model/Evaluation.html b/docs/html/reference/android/support/test/espresso/web/model/Evaluation.html
index 7905489..959cd53 100644
--- a/docs/html/reference/android/support/test/espresso/web/model/Evaluation.html
+++ b/docs/html/reference/android/support/test/espresso/web/model/Evaluation.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -899,7 +901,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1101,7 +1103,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.web.model.JSONAble" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.web.model.JSONAble-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1499,6 +1501,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/model/JSONAble.DeJSONFactory.html b/docs/html/reference/android/support/test/espresso/web/model/JSONAble.DeJSONFactory.html
index 506c367..ee7b44c 100644
--- a/docs/html/reference/android/support/test/espresso/web/model/JSONAble.DeJSONFactory.html
+++ b/docs/html/reference/android/support/test/espresso/web/model/JSONAble.DeJSONFactory.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -879,6 +881,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/model/JSONAble.html b/docs/html/reference/android/support/test/espresso/web/model/JSONAble.html
index 778bea2..adb1d8a 100644
--- a/docs/html/reference/android/support/test/espresso/web/model/JSONAble.html
+++ b/docs/html/reference/android/support/test/espresso/web/model/JSONAble.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -659,7 +661,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
@@ -972,6 +974,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/model/ModelCodec.html b/docs/html/reference/android/support/test/espresso/web/model/ModelCodec.html
index e1fbea7..1dde64e 100644
--- a/docs/html/reference/android/support/test/espresso/web/model/ModelCodec.html
+++ b/docs/html/reference/android/support/test/espresso/web/model/ModelCodec.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -851,7 +853,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1285,6 +1287,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/model/SimpleAtom.ElementReferencePlacement.html b/docs/html/reference/android/support/test/espresso/web/model/SimpleAtom.ElementReferencePlacement.html
index f9d08ef..24a874a 100644
--- a/docs/html/reference/android/support/test/espresso/web/model/SimpleAtom.ElementReferencePlacement.html
+++ b/docs/html/reference/android/support/test/espresso/web/model/SimpleAtom.ElementReferencePlacement.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -857,7 +859,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Enum" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Enum-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1059,7 +1061,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1263,7 +1265,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Comparable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Comparable-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1538,6 +1540,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/model/SimpleAtom.html b/docs/html/reference/android/support/test/espresso/web/model/SimpleAtom.html
index 3fe4905..8d67f05 100644
--- a/docs/html/reference/android/support/test/espresso/web/model/SimpleAtom.html
+++ b/docs/html/reference/android/support/test/espresso/web/model/SimpleAtom.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1010,7 +1012,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1212,7 +1214,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.web.model.Atom" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.web.model.Atom-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1731,6 +1733,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/model/TransformingAtom.Transformer.html b/docs/html/reference/android/support/test/espresso/web/model/TransformingAtom.Transformer.html
index 63ca64f..648e1d5 100644
--- a/docs/html/reference/android/support/test/espresso/web/model/TransformingAtom.Transformer.html
+++ b/docs/html/reference/android/support/test/espresso/web/model/TransformingAtom.Transformer.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -857,6 +859,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/model/TransformingAtom.html b/docs/html/reference/android/support/test/espresso/web/model/TransformingAtom.html
index 51560ce..6e9006d 100644
--- a/docs/html/reference/android/support/test/espresso/web/model/TransformingAtom.html
+++ b/docs/html/reference/android/support/test/espresso/web/model/TransformingAtom.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -895,7 +897,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1097,7 +1099,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.web.model.Atom" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.web.model.Atom-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1444,6 +1446,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/model/WindowReference.html b/docs/html/reference/android/support/test/espresso/web/model/WindowReference.html
index c500a21..cf7d54e 100644
--- a/docs/html/reference/android/support/test/espresso/web/model/WindowReference.html
+++ b/docs/html/reference/android/support/test/espresso/web/model/WindowReference.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -841,7 +843,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1043,7 +1045,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.espresso.web.model.JSONAble" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.espresso.web.model.JSONAble-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1313,6 +1315,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/model/package-summary.html b/docs/html/reference/android/support/test/espresso/web/model/package-summary.html
index 38ffd2d..19a4939 100644
--- a/docs/html/reference/android/support/test/espresso/web/model/package-summary.html
+++ b/docs/html/reference/android/support/test/espresso/web/model/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -834,6 +836,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/sugar/Web.WebInteraction.html b/docs/html/reference/android/support/test/espresso/web/sugar/Web.WebInteraction.html
index a56f27e..db6f8a2 100644
--- a/docs/html/reference/android/support/test/espresso/web/sugar/Web.WebInteraction.html
+++ b/docs/html/reference/android/support/test/espresso/web/sugar/Web.WebInteraction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1021,7 +1023,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1802,6 +1804,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/sugar/Web.html b/docs/html/reference/android/support/test/espresso/web/sugar/Web.html
index 16e5a09..d495700 100644
--- a/docs/html/reference/android/support/test/espresso/web/sugar/Web.html
+++ b/docs/html/reference/android/support/test/espresso/web/sugar/Web.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -839,7 +841,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1244,6 +1246,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/sugar/package-summary.html b/docs/html/reference/android/support/test/espresso/web/sugar/package-summary.html
index 22860ac..a5567f7 100644
--- a/docs/html/reference/android/support/test/espresso/web/sugar/package-summary.html
+++ b/docs/html/reference/android/support/test/espresso/web/sugar/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -686,6 +688,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/webdriver/DriverAtoms.html b/docs/html/reference/android/support/test/espresso/web/webdriver/DriverAtoms.html
index a06562a..b2dedb5 100644
--- a/docs/html/reference/android/support/test/espresso/web/webdriver/DriverAtoms.html
+++ b/docs/html/reference/android/support/test/espresso/web/webdriver/DriverAtoms.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -998,7 +1000,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1663,6 +1665,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/webdriver/Locator.html b/docs/html/reference/android/support/test/espresso/web/webdriver/Locator.html
index 6cf71cc..e9e033a 100644
--- a/docs/html/reference/android/support/test/espresso/web/webdriver/Locator.html
+++ b/docs/html/reference/android/support/test/espresso/web/webdriver/Locator.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -931,7 +933,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Enum" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Enum-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1133,7 +1135,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1337,7 +1339,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Comparable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Comparable-trigger"
-          src="../../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1830,6 +1832,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/espresso/web/webdriver/package-summary.html b/docs/html/reference/android/support/test/espresso/web/webdriver/package-summary.html
index 205dbf3..5f93e59 100644
--- a/docs/html/reference/android/support/test/espresso/web/webdriver/package-summary.html
+++ b/docs/html/reference/android/support/test/espresso/web/webdriver/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -699,6 +701,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/filters/FlakyTest.html b/docs/html/reference/android/support/test/filters/FlakyTest.html
index 2057648..498f8dd 100644
--- a/docs/html/reference/android/support/test/filters/FlakyTest.html
+++ b/docs/html/reference/android/support/test/filters/FlakyTest.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="selected api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -724,7 +726,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.annotation.Annotation" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.annotation.Annotation-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -909,6 +911,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/filters/RequiresDevice.html b/docs/html/reference/android/support/test/filters/RequiresDevice.html
index 162fb84..b88bebe 100644
--- a/docs/html/reference/android/support/test/filters/RequiresDevice.html
+++ b/docs/html/reference/android/support/test/filters/RequiresDevice.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="selected api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -723,7 +725,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.annotation.Annotation" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.annotation.Annotation-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -908,6 +910,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/filters/SdkSuppress.html b/docs/html/reference/android/support/test/filters/SdkSuppress.html
index a6249ba..e8661dc 100644
--- a/docs/html/reference/android/support/test/filters/SdkSuppress.html
+++ b/docs/html/reference/android/support/test/filters/SdkSuppress.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="selected api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -723,7 +725,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.annotation.Annotation" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.annotation.Annotation-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -908,6 +910,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/filters/package-summary.html b/docs/html/reference/android/support/test/filters/package-summary.html
index cd467b0..2ccc69a 100644
--- a/docs/html/reference/android/support/test/filters/package-summary.html
+++ b/docs/html/reference/android/support/test/filters/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="selected api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -697,6 +699,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/jank/GfxMonitor.html b/docs/html/reference/android/support/test/jank/GfxMonitor.html
new file mode 100644
index 0000000..f0b531f
--- /dev/null
+++ b/docs/html/reference/android/support/test/jank/GfxMonitor.html
@@ -0,0 +1,2005 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta content="IE=edge" http-equiv="X-UA-Compatible">
+
+<link rel="shortcut icon" type="image/x-icon" href="../../../../../favicon.ico" />
+<title>GfxMonitor | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="http://fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+
+<link href="../../../../../assets/css/default.css?v=7" rel="stylesheet" type="text/css">
+
+
+<!-- FULLSCREEN STYLESHEET -->
+<link href="../../../../../assets/css/fullscreen.css" rel="stylesheet" class="fullscreen"
+type="text/css">
+
+
+<!-- JAVASCRIPT -->
+<script src="http://www.google.com/jsapi" type="text/javascript"></script>
+<script src="../../../../../assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "../../../../../";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div class="dac-header" id="header">
+
+
+
+
+      <div class="dac-header-inner">
+        <a class="dac-nav-toggle" data-dac-toggle-nav href="javascript:;" title="Open navigation">
+          <span class="dac-nav-hamburger">
+            <span class="dac-nav-hamburger-top"></span>
+            <span class="dac-nav-hamburger-mid"></span>
+            <span class="dac-nav-hamburger-bot"></span>
+          </span>
+        </a>
+        <a class="dac-header-logo" href="../../../../../index.html">
+          <img class="dac-header-logo-image" src="../../../../../assets/images/android_logo.png"
+              srcset="../../../../../assets/images/android_logo@2x.png 2x"
+              width="32" height="36" alt="Android" /> Developers
+          </a>
+
+        <ul class="dac-header-crumbs">
+
+          <li class="dac-header-crumbs-item"><span class="dac-header-crumbs-link current ">GfxMonitor</a></li>
+        </ul>
+
+
+
+
+  <div class="dac-header-search" id="search-container">
+    <div class="dac-header-search-inner">
+      <div class="dac-sprite dac-search dac-header-search-btn" id="search-btn"></div>
+      <form class="dac-header-search-form" onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '../../../../../')"
+          onkeyup="return search_changed(event, false, '../../../../../')"
+          class="dac-header-search-input" placeholder="Search" />
+          <a class="dac-header-search-close hide" id="search-close">close</a>
+      </form>
+    </div><!-- end dac-header-search-inner -->
+  </div><!-- end dac-header-search -->
+
+  <div class="search_filtered_wrapper">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+
+
+        <a class="dac-header-console-btn" href="https://play.google.com/apps/publish/">
+          <span class="dac-sprite dac-google-play"></span>
+          <span class="dac-visible-desktop-inline">Developer</span>
+          Console
+        </a>
+
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+
+  <!-- Navigation-->
+  <nav class="dac-nav">
+    <div class="dac-nav-dimmer" data-dac-toggle-nav></div>
+
+    <ul class="dac-nav-list" data-dac-nav>
+      <li class="dac-nav-item dac-nav-head">
+        <a class="dac-nav-link dac-nav-logo" data-dac-toggle-nav href="javascript:;" title="Close navigation">
+          <img class="dac-logo-image" src="../../../../../assets/images/android_logo.png"
+               srcset="../../../../../assets/images/android_logo@2x.png 2x"
+               width="32" height="36" alt="Android" /> Developers
+        </a>
+      </li>
+      <li class="dac-nav-item home">
+        <a class="dac-nav-link dac-visible-mobile-block" href="../../../../../index.html">Home</a>
+        <ul class="dac-nav-secondary about">
+          <li class="dac-nav-item about">
+            <a class="dac-nav-link" href="../../../../../about/index.html">Android</a>
+          </li>
+          <li class="dac-nav-item wear">
+            <a class="dac-nav-link" href="../../../../../wear/index.html">Wear</a>
+          </li>
+          <li class="dac-nav-item tv">
+            <a class="dac-nav-link" href="../../../../../tv/index.html">TV</a>
+          </li>
+          <li class="dac-nav-item auto">
+            <a class="dac-nav-link" href="../../../../../auto/index.html">Auto</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item design">
+        <a class="dac-nav-link" href="../../../../../design/index.html"
+           zh-tw-lang="設計"
+           zh-cn-lang="设计"
+           ru-lang="Проектирование"
+           ko-lang="디자인"
+           ja-lang="設計"
+           es-lang="Diseñar">Design</a>
+      </li>
+      <li class="dac-nav-item develop">
+        <a class="dac-nav-link" href="../../../../../develop/index.html"
+           zh-tw-lang="開發"
+           zh-cn-lang="开发"
+           ru-lang="Разработка"
+           ko-lang="개발"
+           ja-lang="開発"
+           es-lang="Desarrollar">Develop</a>
+        <ul class="dac-nav-secondary develop">
+          <li class="dac-nav-item training">
+            <a class="dac-nav-link" href="../../../../../training/index.html"
+               zh-tw-lang="訓練課程"
+               zh-cn-lang="培训"
+               ru-lang="Курсы"
+               ko-lang="교육"
+               ja-lang="トレーニング"
+               es-lang="Capacitación">Training</a>
+          </li>
+          <li class="dac-nav-item guide">
+            <a class="dac-nav-link" href="../../../../../guide/index.html"
+               zh-tw-lang="API 指南"
+               zh-cn-lang="API 指南"
+               ru-lang="Руководства по API"
+               ko-lang="API 가이드"
+               ja-lang="API ガイド"
+               es-lang="Guías de la API">API Guides</a>
+          </li>
+          <li class="dac-nav-item reference">
+            <a class="dac-nav-link" href="../../../../../reference/packages.html"
+               zh-tw-lang="參考資源"
+               zh-cn-lang="参考"
+               ru-lang="Справочник"
+               ko-lang="참조문서"
+               ja-lang="リファレンス"
+               es-lang="Referencia">Reference</a>
+          </li>
+          <li class="dac-nav-item tools">
+            <a class="dac-nav-link" href="../../../../../sdk/index.html"
+               zh-tw-lang="相關工具"
+               zh-cn-lang="工具"
+               ru-lang="Инструменты"
+               ko-lang="도구"
+               ja-lang="ツール"
+               es-lang="Herramientas">Tools</a></li>
+          <li class="dac-nav-item google">
+            <a class="dac-nav-link" href="../../../../../google/index.html">Google Services</a>
+          </li>
+
+          <li class="dac-nav-item preview">
+            <a class="dac-nav-link" href="../../../../../preview/index.html">Preview</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item distribute">
+        <a class="dac-nav-link" href="../../../../../distribute/index.html"
+           zh-tw-lang="發佈"
+           zh-cn-lang="分发"
+           ru-lang="Распространение"
+           ko-lang="배포"
+           ja-lang="配布"
+           es-lang="Distribuir">Distribute</a>
+        <ul class="dac-nav-secondary distribute">
+          <li class="dac-nav-item googleplay">
+            <a class="dac-nav-link" href="../../../../../distribute/googleplay/index.html">Google Play</a></li>
+          <li class="dac-nav-item essentials">
+            <a class="dac-nav-link" href="../../../../../distribute/essentials/index.html">Essentials</a></li>
+          <li class="dac-nav-item users">
+            <a class="dac-nav-link" href="../../../../../distribute/users/index.html">Get Users</a></li>
+          <li class="dac-nav-item engage">
+            <a class="dac-nav-link" href="../../../../../distribute/engage/index.html">Engage &amp; Retain</a></li>
+          <li class="dac-nav-item monetize">
+            <a class="dac-nav-link" href="../../../../../distribute/monetize/index.html">Earn</a>
+          </li>
+          <li class="dac-nav-item analyze">
+            <a class="dac-nav-link" href="../../../../../distribute/analyze/index.html">Analyze</a>
+          </li>
+          <li class="dac-nav-item stories">
+            <a class="dac-nav-link" href="../../../../../distribute/stories/index.html">Stories</a>
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </nav>
+  <!-- end navigation-->
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content"><div class="cols">
+    <div class="col-4 dac-hidden-mobile" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav">
+      <div id="api-nav-header">
+        <div id="api-level-toggle">
+          <label for="apiLevelCheckbox" class="disabled"
+            title="Select your target API level to dim unavailable APIs">API level: </label>
+          <div class="select-wrapper">
+            <select id="apiLevelSelector">
+              <!-- option elements added by buildApiLevelSelector() -->
+            </select>
+          </div>
+        </div><!-- end toggle -->
+        <div id="api-nav-title">Android APIs</div>
+        </div><!-- end nav header -->
+      <script>
+        var SINCE_DATA = [  ];
+        buildApiLevelSelector();
+      </script>
+
+      <div id="swapper">
+        <div id="nav-panels">
+          <div id="resize-packages-nav">
+            <div id="packages-nav" class="scroll-pane">
+
+              <ul>
+
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/package-summary.html">android.support.test</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/annotation/package-summary.html">android.support.test.annotation</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/package-summary.html">android.support.test.espresso</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/action/package-summary.html">android.support.test.espresso.action</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/assertion/package-summary.html">android.support.test.espresso.assertion</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/base/package-summary.html">android.support.test.espresso.base</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/contrib/package-summary.html">android.support.test.espresso.contrib</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/intent/package-summary.html">android.support.test.espresso.intent</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/intent/matcher/package-summary.html">android.support.test.espresso.intent.matcher</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/intent/rule/package-summary.html">android.support.test.espresso.intent.rule</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/matcher/package-summary.html">android.support.test.espresso.matcher</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/util/package-summary.html">android.support.test.espresso.util</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/action/package-summary.html">android.support.test.espresso.web.action</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/assertion/package-summary.html">android.support.test.espresso.web.assertion</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/bridge/package-summary.html">android.support.test.espresso.web.bridge</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/matcher/package-summary.html">android.support.test.espresso.web.matcher</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/model/package-summary.html">android.support.test.espresso.web.model</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/sugar/package-summary.html">android.support.test.espresso.web.sugar</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/webdriver/package-summary.html">android.support.test.espresso.web.webdriver</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
+    <li class="selected api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/runner/intent/package-summary.html">android.support.test.runner.intent</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/runner/lifecycle/package-summary.html">android.support.test.runner.lifecycle</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/uiautomator/package-summary.html">android.support.test.uiautomator</a></li>
+              </ul><br/>
+
+            </div> <!-- end packages-nav -->
+          </div> <!-- end resize-packages -->
+          <div id="classes-nav" class="scroll-pane">
+
+
+
+            <ul>
+
+    <li><h2>Annotations</h2>
+      <ul>
+          <li class="selected api apilevel-"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html">GfxMonitor</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/test/jank/JankTest.html">JankTest</a></li>
+      </ul>
+    </li>
+
+
+    <li><h2>Classes</h2>
+      <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/test/jank/JankTestBase.html">JankTestBase</a></li>
+      </ul>
+    </li>
+
+
+
+            </ul><br/>
+
+
+          </div><!-- end classes -->
+        </div><!-- end nav-panels -->
+        <div id="nav-tree" style="display:none" class="scroll-pane">
+          <div id="tree-list"></div>
+        </div><!-- end nav-tree -->
+      </div><!-- end swapper -->
+      <div id="nav-swap">
+      <a class="fullscreen">fullscreen</a>
+      <a href='#' onclick='swapNav();return false;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>
+      </div>
+    </div> <!-- end devdoc-nav -->
+    </div> <!-- end side-nav -->
+    <script type="text/javascript">
+      // init fullscreen based on user pref
+      var fullscreen = readCookie("fullscreen");
+      if (fullscreen != 0) {
+        if (fullscreen == "false") {
+          toggleFullscreen(false);
+        } else {
+          toggleFullscreen(true);
+        }
+      }
+      // init nav version for mobile
+      if (isMobile) {
+        swapNav(); // tree view should be used on mobile
+        $('#nav-swap').hide();
+      } else {
+        chooseDefaultNav();
+        if ($("#nav-tree").is(':visible')) {
+          init_default_navtree("../../../../../");
+        }
+      }
+      // scroll the selected page into view
+      $(document).ready(function() {
+        scrollIntoView("packages-nav");
+        scrollIntoView("classes-nav");
+        });
+    </script>
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+  <a href="#constants">Constants</a>
+
+
+
+
+
+
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+
+
+    abstract
+    @interface
+<h1 itemprop="name">GfxMonitor</h1>
+
+
+
+
+
+      implements
+
+        Annotation
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">android.support.test.jank.GfxMonitor</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Annotation used to configure a gfx monitor. </p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_AVG_FRAME_TIME_90TH_PERCENTILE">KEY_AVG_FRAME_TIME_90TH_PERCENTILE</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_AVG_FRAME_TIME_95TH_PERCENTILE">KEY_AVG_FRAME_TIME_95TH_PERCENTILE</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_AVG_FRAME_TIME_99TH_PERCENTILE">KEY_AVG_FRAME_TIME_99TH_PERCENTILE</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_AVG_HIGH_INPUT_LATENCY">KEY_AVG_HIGH_INPUT_LATENCY</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_AVG_MISSED_VSYNC">KEY_AVG_MISSED_VSYNC</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_AVG_NUM_JANKY">KEY_AVG_NUM_JANKY</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_AVG_SLOW_BITMAP_UPLOADS">KEY_AVG_SLOW_BITMAP_UPLOADS</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_AVG_SLOW_DRAW">KEY_AVG_SLOW_DRAW</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_AVG_SLOW_UI_THREAD">KEY_AVG_SLOW_UI_THREAD</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_MAX_FRAME_TIME_90TH_PERCENTILE">KEY_MAX_FRAME_TIME_90TH_PERCENTILE</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_MAX_FRAME_TIME_95TH_PERCENTILE">KEY_MAX_FRAME_TIME_95TH_PERCENTILE</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_MAX_FRAME_TIME_99TH_PERCENTILE">KEY_MAX_FRAME_TIME_99TH_PERCENTILE</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_MAX_HIGH_INPUT_LATENCY">KEY_MAX_HIGH_INPUT_LATENCY</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_MAX_MISSED_VSYNC">KEY_MAX_MISSED_VSYNC</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_MAX_NUM_JANKY">KEY_MAX_NUM_JANKY</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_MAX_SLOW_BITMAP_UPLOADS">KEY_MAX_SLOW_BITMAP_UPLOADS</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_MAX_SLOW_DRAW">KEY_MAX_SLOW_DRAW</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html#KEY_MAX_SLOW_UI_THREAD">KEY_MAX_SLOW_UI_THREAD</a></td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.annotation.Annotation" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.annotation.Annotation-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  java.lang.annotation.Annotation
+
+<div id="inherited-methods-java.lang.annotation.Annotation">
+  <div id="inherited-methods-java.lang.annotation.Annotation-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.annotation.Annotation-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            Class&lt;?&nbsp;extends&nbsp;Annotation&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">annotationType</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- ========= ENUM CONSTANTS DETAIL ======== -->
+<h2>Constants</h2>
+
+
+
+
+<A NAME="KEY_AVG_FRAME_TIME_90TH_PERCENTILE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_AVG_FRAME_TIME_90TH_PERCENTILE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-avg-frame-time-90"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="KEY_AVG_FRAME_TIME_95TH_PERCENTILE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_AVG_FRAME_TIME_95TH_PERCENTILE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-avg-frame-time-95"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="KEY_AVG_FRAME_TIME_99TH_PERCENTILE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_AVG_FRAME_TIME_99TH_PERCENTILE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-avg-frame-time-99"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="KEY_AVG_HIGH_INPUT_LATENCY"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_AVG_HIGH_INPUT_LATENCY
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-avg-high-input-latency"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="KEY_AVG_MISSED_VSYNC"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_AVG_MISSED_VSYNC
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-avg-missed-vsync"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="KEY_AVG_NUM_JANKY"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_AVG_NUM_JANKY
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-avg-jank"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="KEY_AVG_SLOW_BITMAP_UPLOADS"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_AVG_SLOW_BITMAP_UPLOADS
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-avg-slow-bitmap-uploads"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="KEY_AVG_SLOW_DRAW"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_AVG_SLOW_DRAW
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-avg-slow-draw"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="KEY_AVG_SLOW_UI_THREAD"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_AVG_SLOW_UI_THREAD
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-avg-slow-ui-thread"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="KEY_MAX_FRAME_TIME_90TH_PERCENTILE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_MAX_FRAME_TIME_90TH_PERCENTILE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-max-frame-time-90"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="KEY_MAX_FRAME_TIME_95TH_PERCENTILE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_MAX_FRAME_TIME_95TH_PERCENTILE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-max-frame-time-95"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="KEY_MAX_FRAME_TIME_99TH_PERCENTILE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_MAX_FRAME_TIME_99TH_PERCENTILE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-max-frame-time-99"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="KEY_MAX_HIGH_INPUT_LATENCY"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_MAX_HIGH_INPUT_LATENCY
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-max-high-input-latency"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="KEY_MAX_MISSED_VSYNC"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_MAX_MISSED_VSYNC
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-max-missed-vsync"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="KEY_MAX_NUM_JANKY"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_MAX_NUM_JANKY
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-max-jank"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="KEY_MAX_SLOW_BITMAP_UPLOADS"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_MAX_SLOW_BITMAP_UPLOADS
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-max-slow-bitmap-uploads"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="KEY_MAX_SLOW_DRAW"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_MAX_SLOW_DRAW
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-max-slow-draw"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="KEY_MAX_SLOW_UI_THREAD"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        KEY_MAX_SLOW_UI_THREAD
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "gfx-max-slow-ui-thread"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+</div> <!-- jd-content -->
+
+<div class="wrap">
+  <div class="dac-footer">
+    <div class="cols dac-footer-main">
+      <div class="col-1of2">
+        <a class="dac-footer-getnews" data-modal-toggle="newsletter" href="javascript:;">Get news &amp; tips <span
+          class="dac-fab dac-primary"><i class="dac-sprite dac-mail"></i></span></a>
+      </div>
+      <div class="col-1of2 dac-footer-reachout">
+        <div class="dac-footer-contact">
+          <a class="dac-footer-contact-link" href="http://android-developers.blogspot.com/">Blog</a>
+          <a class="dac-footer-contact-link" href="/support.html">Support</a>
+        </div>
+        <div class="dac-footer-social">
+          <a class="dac-fab dac-footer-social-link" href="https://www.youtube.com/user/androiddevelopers"><i class="dac-sprite dac-youtube"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://plus.google.com/+AndroidDevelopers"><i class="dac-sprite dac-gplus"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://twitter.com/AndroidDev"><i class="dac-sprite dac-twitter"></i></a>
+        </div>
+      </div>
+    </div>
+
+    <hr class="dac-footer-separator"/>
+
+
+      <p class="dac-footer-copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="../../../../../license.html">
+  Content License</a>.
+      </p>
+      <p class="dac-footer-build">
+
+    Android &nbsp;r &mdash;
+<script src="../../../../../timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+      </p>
+
+
+    <p class="dac-footer-links">
+      <a href="/about/index.html">About Android</a>
+      <a href="/auto/index.html">Auto</a>
+      <a href="/tv/index.html">TV</a>
+      <a href="/wear/index.html">Wear</a>
+      <a href="/legal.html">Legal</a>
+
+      <span id="language" class="locales">
+        <select name="language" onchange="changeLangPref(this.value, true)">
+          <option value="en" selected="selected">English</option>
+          <option value="es">Español</option>
+          <option value="ja">日本語</option>
+          <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
+          <option value="ru">Русский</option>
+          <option value="zh-cn">中文(简体)</option>
+          <option value="zh-tw">中文(繁體)</option>
+        </select>
+      </span>
+    </p>
+  </div>
+</div> <!-- end footer -->
+
+<div data-modal="newsletter" data-newsletter data-swap class="dac-modal newsletter">
+  <div class="dac-modal-container">
+    <div class="dac-modal-window">
+      <header class="dac-modal-header">
+        <button class="dac-modal-header-close" data-modal-toggle><i class="dac-sprite dac-close"></i></button>
+        <div class="dac-swap" data-swap-container>
+          <section class="dac-swap-section dac-active dac-down">
+            <h2 class="norule dac-modal-header-title">Get the latest Android developer news and tips that will help you find success on Google Play.</h2>
+            <p class="dac-modal-header-subtitle">&#42; Required Fields</p>
+          </section>
+          <section class="dac-swap-section dac-up">
+            <h2 class="norule dac-modal-header-title">Hooray!</h2>
+          </section>
+        </div>
+      </header>
+      <div class="dac-swap" data-swap-container>
+        <section class="dac-swap-section dac-active dac-left">
+          <form action="https://docs.google.com/forms/d/1QgnkzbEJIDu9lMEea0mxqWrXUJu0oBCLD7ar23V0Yys/formResponse" class="dac-form" method="post" target="dac-newsletter-iframe">
+            <section class="dac-modal-content">
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-full-name" class="dac-form-floatlabel">Full name</label>
+                      <input type="text" class="dac-form-input" name="entry.1357890476" id="newsletter-full-name" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-email" class="dac-form-floatlabel">Email address</label>
+                      <input type="email" class="dac-form-input" name="entry.472100832" id="newsletter-email" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-company" class="dac-form-floatlabel">Company / developer name</label>
+                      <input type="text" class="dac-form-input" name="entry.1664780309" id="newsletter-company">
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-play-store" class="dac-form-floatlabel">One of your Play Store app URLs</label>
+                      <input type="url" class="dac-form-input" name="entry.47013838" id="newsletter-play-store" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <legend class="dac-form-legend">Which best describes your business:<span class="dac-form-required">*</span>
+                    </legend>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-app" required>
+                      <label for="newsletter-business-type-app" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-app" class="dac-form-label">Apps</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-games" required>
+                      <label for="newsletter-business-type-games" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-games" class="dac-form-label">Games</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps and Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-appsgames" required>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-label">Apps &amp; Games</label>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol newsletter-checkboxes">
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.732309842" id="newsletter-add" required value="Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.">
+                          <label for="newsletter-add" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-add" class="dac-form-label dac-form-aside">Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.2045036090" id="newsletter-terms" required value="I acknowledge that the information provided in this form will be subject to Google's privacy policy (https://www.google.com/policies/privacy/).">
+                          <label for="newsletter-terms" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-terms" class="dac-form-label dac-form-aside">I acknowledge that the information provided in this form will be subject to <a href="https://www.google.com/policies/privacy/">Google's privacy policy</a>.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+            </section>
+            <footer class="dac-modal-footer">
+              <div class="cols">
+                <div class="col-2of5">
+                </div>
+              </div>
+              <button type="submit" value="Submit" class="dac-fab dac-primary dac-large dac-modal-action"><i class="dac-sprite dac-arrow-right"></i></button>
+            </footer>
+          </form>
+        </section>
+        <section class="dac-swap-section dac-right">
+          <div class="dac-modal-content">
+            <p class="newsletter-success-message">
+              You have successfully signed up for the latest Android developer news and tips.
+            </p>
+          </div>
+        </section>
+      </div>
+    </div>
+  </div>
+</div> <!-- end footer -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end .cols -->
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/android/support/test/jank/JankTest.html b/docs/html/reference/android/support/test/jank/JankTest.html
new file mode 100644
index 0000000..c824c13e
--- /dev/null
+++ b/docs/html/reference/android/support/test/jank/JankTest.html
@@ -0,0 +1,1050 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta content="IE=edge" http-equiv="X-UA-Compatible">
+
+<link rel="shortcut icon" type="image/x-icon" href="../../../../../favicon.ico" />
+<title>JankTest | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="http://fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+
+<link href="../../../../../assets/css/default.css?v=7" rel="stylesheet" type="text/css">
+
+
+<!-- FULLSCREEN STYLESHEET -->
+<link href="../../../../../assets/css/fullscreen.css" rel="stylesheet" class="fullscreen"
+type="text/css">
+
+
+<!-- JAVASCRIPT -->
+<script src="http://www.google.com/jsapi" type="text/javascript"></script>
+<script src="../../../../../assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "../../../../../";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div class="dac-header" id="header">
+
+
+
+
+      <div class="dac-header-inner">
+        <a class="dac-nav-toggle" data-dac-toggle-nav href="javascript:;" title="Open navigation">
+          <span class="dac-nav-hamburger">
+            <span class="dac-nav-hamburger-top"></span>
+            <span class="dac-nav-hamburger-mid"></span>
+            <span class="dac-nav-hamburger-bot"></span>
+          </span>
+        </a>
+        <a class="dac-header-logo" href="../../../../../index.html">
+          <img class="dac-header-logo-image" src="../../../../../assets/images/android_logo.png"
+              srcset="../../../../../assets/images/android_logo@2x.png 2x"
+              width="32" height="36" alt="Android" /> Developers
+          </a>
+
+        <ul class="dac-header-crumbs">
+
+          <li class="dac-header-crumbs-item"><span class="dac-header-crumbs-link current ">JankTest</a></li>
+        </ul>
+
+
+
+
+  <div class="dac-header-search" id="search-container">
+    <div class="dac-header-search-inner">
+      <div class="dac-sprite dac-search dac-header-search-btn" id="search-btn"></div>
+      <form class="dac-header-search-form" onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '../../../../../')"
+          onkeyup="return search_changed(event, false, '../../../../../')"
+          class="dac-header-search-input" placeholder="Search" />
+          <a class="dac-header-search-close hide" id="search-close">close</a>
+      </form>
+    </div><!-- end dac-header-search-inner -->
+  </div><!-- end dac-header-search -->
+
+  <div class="search_filtered_wrapper">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+
+
+        <a class="dac-header-console-btn" href="https://play.google.com/apps/publish/">
+          <span class="dac-sprite dac-google-play"></span>
+          <span class="dac-visible-desktop-inline">Developer</span>
+          Console
+        </a>
+
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+
+  <!-- Navigation-->
+  <nav class="dac-nav">
+    <div class="dac-nav-dimmer" data-dac-toggle-nav></div>
+
+    <ul class="dac-nav-list" data-dac-nav>
+      <li class="dac-nav-item dac-nav-head">
+        <a class="dac-nav-link dac-nav-logo" data-dac-toggle-nav href="javascript:;" title="Close navigation">
+          <img class="dac-logo-image" src="../../../../../assets/images/android_logo.png"
+               srcset="../../../../../assets/images/android_logo@2x.png 2x"
+               width="32" height="36" alt="Android" /> Developers
+        </a>
+      </li>
+      <li class="dac-nav-item home">
+        <a class="dac-nav-link dac-visible-mobile-block" href="../../../../../index.html">Home</a>
+        <ul class="dac-nav-secondary about">
+          <li class="dac-nav-item about">
+            <a class="dac-nav-link" href="../../../../../about/index.html">Android</a>
+          </li>
+          <li class="dac-nav-item wear">
+            <a class="dac-nav-link" href="../../../../../wear/index.html">Wear</a>
+          </li>
+          <li class="dac-nav-item tv">
+            <a class="dac-nav-link" href="../../../../../tv/index.html">TV</a>
+          </li>
+          <li class="dac-nav-item auto">
+            <a class="dac-nav-link" href="../../../../../auto/index.html">Auto</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item design">
+        <a class="dac-nav-link" href="../../../../../design/index.html"
+           zh-tw-lang="設計"
+           zh-cn-lang="设计"
+           ru-lang="Проектирование"
+           ko-lang="디자인"
+           ja-lang="設計"
+           es-lang="Diseñar">Design</a>
+      </li>
+      <li class="dac-nav-item develop">
+        <a class="dac-nav-link" href="../../../../../develop/index.html"
+           zh-tw-lang="開發"
+           zh-cn-lang="开发"
+           ru-lang="Разработка"
+           ko-lang="개발"
+           ja-lang="開発"
+           es-lang="Desarrollar">Develop</a>
+        <ul class="dac-nav-secondary develop">
+          <li class="dac-nav-item training">
+            <a class="dac-nav-link" href="../../../../../training/index.html"
+               zh-tw-lang="訓練課程"
+               zh-cn-lang="培训"
+               ru-lang="Курсы"
+               ko-lang="교육"
+               ja-lang="トレーニング"
+               es-lang="Capacitación">Training</a>
+          </li>
+          <li class="dac-nav-item guide">
+            <a class="dac-nav-link" href="../../../../../guide/index.html"
+               zh-tw-lang="API 指南"
+               zh-cn-lang="API 指南"
+               ru-lang="Руководства по API"
+               ko-lang="API 가이드"
+               ja-lang="API ガイド"
+               es-lang="Guías de la API">API Guides</a>
+          </li>
+          <li class="dac-nav-item reference">
+            <a class="dac-nav-link" href="../../../../../reference/packages.html"
+               zh-tw-lang="參考資源"
+               zh-cn-lang="参考"
+               ru-lang="Справочник"
+               ko-lang="참조문서"
+               ja-lang="リファレンス"
+               es-lang="Referencia">Reference</a>
+          </li>
+          <li class="dac-nav-item tools">
+            <a class="dac-nav-link" href="../../../../../sdk/index.html"
+               zh-tw-lang="相關工具"
+               zh-cn-lang="工具"
+               ru-lang="Инструменты"
+               ko-lang="도구"
+               ja-lang="ツール"
+               es-lang="Herramientas">Tools</a></li>
+          <li class="dac-nav-item google">
+            <a class="dac-nav-link" href="../../../../../google/index.html">Google Services</a>
+          </li>
+
+          <li class="dac-nav-item preview">
+            <a class="dac-nav-link" href="../../../../../preview/index.html">Preview</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item distribute">
+        <a class="dac-nav-link" href="../../../../../distribute/index.html"
+           zh-tw-lang="發佈"
+           zh-cn-lang="分发"
+           ru-lang="Распространение"
+           ko-lang="배포"
+           ja-lang="配布"
+           es-lang="Distribuir">Distribute</a>
+        <ul class="dac-nav-secondary distribute">
+          <li class="dac-nav-item googleplay">
+            <a class="dac-nav-link" href="../../../../../distribute/googleplay/index.html">Google Play</a></li>
+          <li class="dac-nav-item essentials">
+            <a class="dac-nav-link" href="../../../../../distribute/essentials/index.html">Essentials</a></li>
+          <li class="dac-nav-item users">
+            <a class="dac-nav-link" href="../../../../../distribute/users/index.html">Get Users</a></li>
+          <li class="dac-nav-item engage">
+            <a class="dac-nav-link" href="../../../../../distribute/engage/index.html">Engage &amp; Retain</a></li>
+          <li class="dac-nav-item monetize">
+            <a class="dac-nav-link" href="../../../../../distribute/monetize/index.html">Earn</a>
+          </li>
+          <li class="dac-nav-item analyze">
+            <a class="dac-nav-link" href="../../../../../distribute/analyze/index.html">Analyze</a>
+          </li>
+          <li class="dac-nav-item stories">
+            <a class="dac-nav-link" href="../../../../../distribute/stories/index.html">Stories</a>
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </nav>
+  <!-- end navigation-->
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content"><div class="cols">
+    <div class="col-4 dac-hidden-mobile" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav">
+      <div id="api-nav-header">
+        <div id="api-level-toggle">
+          <label for="apiLevelCheckbox" class="disabled"
+            title="Select your target API level to dim unavailable APIs">API level: </label>
+          <div class="select-wrapper">
+            <select id="apiLevelSelector">
+              <!-- option elements added by buildApiLevelSelector() -->
+            </select>
+          </div>
+        </div><!-- end toggle -->
+        <div id="api-nav-title">Android APIs</div>
+        </div><!-- end nav header -->
+      <script>
+        var SINCE_DATA = [  ];
+        buildApiLevelSelector();
+      </script>
+
+      <div id="swapper">
+        <div id="nav-panels">
+          <div id="resize-packages-nav">
+            <div id="packages-nav" class="scroll-pane">
+
+              <ul>
+
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/package-summary.html">android.support.test</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/annotation/package-summary.html">android.support.test.annotation</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/package-summary.html">android.support.test.espresso</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/action/package-summary.html">android.support.test.espresso.action</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/assertion/package-summary.html">android.support.test.espresso.assertion</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/base/package-summary.html">android.support.test.espresso.base</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/contrib/package-summary.html">android.support.test.espresso.contrib</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/intent/package-summary.html">android.support.test.espresso.intent</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/intent/matcher/package-summary.html">android.support.test.espresso.intent.matcher</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/intent/rule/package-summary.html">android.support.test.espresso.intent.rule</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/matcher/package-summary.html">android.support.test.espresso.matcher</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/util/package-summary.html">android.support.test.espresso.util</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/action/package-summary.html">android.support.test.espresso.web.action</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/assertion/package-summary.html">android.support.test.espresso.web.assertion</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/bridge/package-summary.html">android.support.test.espresso.web.bridge</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/matcher/package-summary.html">android.support.test.espresso.web.matcher</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/model/package-summary.html">android.support.test.espresso.web.model</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/sugar/package-summary.html">android.support.test.espresso.web.sugar</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/webdriver/package-summary.html">android.support.test.espresso.web.webdriver</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
+    <li class="selected api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/runner/intent/package-summary.html">android.support.test.runner.intent</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/runner/lifecycle/package-summary.html">android.support.test.runner.lifecycle</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/uiautomator/package-summary.html">android.support.test.uiautomator</a></li>
+              </ul><br/>
+
+            </div> <!-- end packages-nav -->
+          </div> <!-- end resize-packages -->
+          <div id="classes-nav" class="scroll-pane">
+
+
+
+            <ul>
+
+    <li><h2>Annotations</h2>
+      <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html">GfxMonitor</a></li>
+          <li class="selected api apilevel-"><a href="../../../../../reference/android/support/test/jank/JankTest.html">JankTest</a></li>
+      </ul>
+    </li>
+
+
+    <li><h2>Classes</h2>
+      <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/test/jank/JankTestBase.html">JankTestBase</a></li>
+      </ul>
+    </li>
+
+
+
+            </ul><br/>
+
+
+          </div><!-- end classes -->
+        </div><!-- end nav-panels -->
+        <div id="nav-tree" style="display:none" class="scroll-pane">
+          <div id="tree-list"></div>
+        </div><!-- end nav-tree -->
+      </div><!-- end swapper -->
+      <div id="nav-swap">
+      <a class="fullscreen">fullscreen</a>
+      <a href='#' onclick='swapNav();return false;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>
+      </div>
+    </div> <!-- end devdoc-nav -->
+    </div> <!-- end side-nav -->
+    <script type="text/javascript">
+      // init fullscreen based on user pref
+      var fullscreen = readCookie("fullscreen");
+      if (fullscreen != 0) {
+        if (fullscreen == "false") {
+          toggleFullscreen(false);
+        } else {
+          toggleFullscreen(true);
+        }
+      }
+      // init nav version for mobile
+      if (isMobile) {
+        swapNav(); // tree view should be used on mobile
+        $('#nav-swap').hide();
+      } else {
+        chooseDefaultNav();
+        if ($("#nav-tree").is(':visible')) {
+          init_default_navtree("../../../../../");
+        }
+      }
+      // scroll the selected page into view
+      $(document).ready(function() {
+        scrollIntoView("packages-nav");
+        scrollIntoView("classes-nav");
+        });
+    </script>
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+
+
+
+
+
+
+  <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+
+
+    abstract
+    @interface
+<h1 itemprop="name">JankTest</h1>
+
+
+
+
+
+      implements
+
+        Annotation
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">android.support.test.jank.JankTest</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Annotation used to configure a jank test method. </p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.annotation.Annotation" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.annotation.Annotation-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  java.lang.annotation.Annotation
+
+<div id="inherited-methods-java.lang.annotation.Annotation">
+  <div id="inherited-methods-java.lang.annotation.Annotation-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.annotation.Annotation-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            Class&lt;?&nbsp;extends&nbsp;Annotation&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">annotationType</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+</div> <!-- jd-content -->
+
+<div class="wrap">
+  <div class="dac-footer">
+    <div class="cols dac-footer-main">
+      <div class="col-1of2">
+        <a class="dac-footer-getnews" data-modal-toggle="newsletter" href="javascript:;">Get news &amp; tips <span
+          class="dac-fab dac-primary"><i class="dac-sprite dac-mail"></i></span></a>
+      </div>
+      <div class="col-1of2 dac-footer-reachout">
+        <div class="dac-footer-contact">
+          <a class="dac-footer-contact-link" href="http://android-developers.blogspot.com/">Blog</a>
+          <a class="dac-footer-contact-link" href="/support.html">Support</a>
+        </div>
+        <div class="dac-footer-social">
+          <a class="dac-fab dac-footer-social-link" href="https://www.youtube.com/user/androiddevelopers"><i class="dac-sprite dac-youtube"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://plus.google.com/+AndroidDevelopers"><i class="dac-sprite dac-gplus"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://twitter.com/AndroidDev"><i class="dac-sprite dac-twitter"></i></a>
+        </div>
+      </div>
+    </div>
+
+    <hr class="dac-footer-separator"/>
+
+
+      <p class="dac-footer-copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="../../../../../license.html">
+  Content License</a>.
+      </p>
+      <p class="dac-footer-build">
+
+    Android &nbsp;r &mdash;
+<script src="../../../../../timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+      </p>
+
+
+    <p class="dac-footer-links">
+      <a href="/about/index.html">About Android</a>
+      <a href="/auto/index.html">Auto</a>
+      <a href="/tv/index.html">TV</a>
+      <a href="/wear/index.html">Wear</a>
+      <a href="/legal.html">Legal</a>
+
+      <span id="language" class="locales">
+        <select name="language" onchange="changeLangPref(this.value, true)">
+          <option value="en" selected="selected">English</option>
+          <option value="es">Español</option>
+          <option value="ja">日本語</option>
+          <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
+          <option value="ru">Русский</option>
+          <option value="zh-cn">中文(简体)</option>
+          <option value="zh-tw">中文(繁體)</option>
+        </select>
+      </span>
+    </p>
+  </div>
+</div> <!-- end footer -->
+
+<div data-modal="newsletter" data-newsletter data-swap class="dac-modal newsletter">
+  <div class="dac-modal-container">
+    <div class="dac-modal-window">
+      <header class="dac-modal-header">
+        <button class="dac-modal-header-close" data-modal-toggle><i class="dac-sprite dac-close"></i></button>
+        <div class="dac-swap" data-swap-container>
+          <section class="dac-swap-section dac-active dac-down">
+            <h2 class="norule dac-modal-header-title">Get the latest Android developer news and tips that will help you find success on Google Play.</h2>
+            <p class="dac-modal-header-subtitle">&#42; Required Fields</p>
+          </section>
+          <section class="dac-swap-section dac-up">
+            <h2 class="norule dac-modal-header-title">Hooray!</h2>
+          </section>
+        </div>
+      </header>
+      <div class="dac-swap" data-swap-container>
+        <section class="dac-swap-section dac-active dac-left">
+          <form action="https://docs.google.com/forms/d/1QgnkzbEJIDu9lMEea0mxqWrXUJu0oBCLD7ar23V0Yys/formResponse" class="dac-form" method="post" target="dac-newsletter-iframe">
+            <section class="dac-modal-content">
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-full-name" class="dac-form-floatlabel">Full name</label>
+                      <input type="text" class="dac-form-input" name="entry.1357890476" id="newsletter-full-name" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-email" class="dac-form-floatlabel">Email address</label>
+                      <input type="email" class="dac-form-input" name="entry.472100832" id="newsletter-email" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-company" class="dac-form-floatlabel">Company / developer name</label>
+                      <input type="text" class="dac-form-input" name="entry.1664780309" id="newsletter-company">
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-play-store" class="dac-form-floatlabel">One of your Play Store app URLs</label>
+                      <input type="url" class="dac-form-input" name="entry.47013838" id="newsletter-play-store" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <legend class="dac-form-legend">Which best describes your business:<span class="dac-form-required">*</span>
+                    </legend>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-app" required>
+                      <label for="newsletter-business-type-app" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-app" class="dac-form-label">Apps</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-games" required>
+                      <label for="newsletter-business-type-games" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-games" class="dac-form-label">Games</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps and Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-appsgames" required>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-label">Apps &amp; Games</label>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol newsletter-checkboxes">
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.732309842" id="newsletter-add" required value="Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.">
+                          <label for="newsletter-add" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-add" class="dac-form-label dac-form-aside">Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.2045036090" id="newsletter-terms" required value="I acknowledge that the information provided in this form will be subject to Google's privacy policy (https://www.google.com/policies/privacy/).">
+                          <label for="newsletter-terms" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-terms" class="dac-form-label dac-form-aside">I acknowledge that the information provided in this form will be subject to <a href="https://www.google.com/policies/privacy/">Google's privacy policy</a>.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+            </section>
+            <footer class="dac-modal-footer">
+              <div class="cols">
+                <div class="col-2of5">
+                </div>
+              </div>
+              <button type="submit" value="Submit" class="dac-fab dac-primary dac-large dac-modal-action"><i class="dac-sprite dac-arrow-right"></i></button>
+            </footer>
+          </form>
+        </section>
+        <section class="dac-swap-section dac-right">
+          <div class="dac-modal-content">
+            <p class="newsletter-success-message">
+              You have successfully signed up for the latest Android developer news and tips.
+            </p>
+          </div>
+        </section>
+      </div>
+    </div>
+  </div>
+</div> <!-- end footer -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end .cols -->
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/android/support/test/jank/JankTestBase.html b/docs/html/reference/android/support/test/jank/JankTestBase.html
new file mode 100644
index 0000000..9214f1d
--- /dev/null
+++ b/docs/html/reference/android/support/test/jank/JankTestBase.html
@@ -0,0 +1,2889 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta content="IE=edge" http-equiv="X-UA-Compatible">
+
+<link rel="shortcut icon" type="image/x-icon" href="../../../../../favicon.ico" />
+<title>JankTestBase | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="http://fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+
+<link href="../../../../../assets/css/default.css?v=7" rel="stylesheet" type="text/css">
+
+
+<!-- FULLSCREEN STYLESHEET -->
+<link href="../../../../../assets/css/fullscreen.css" rel="stylesheet" class="fullscreen"
+type="text/css">
+
+
+<!-- JAVASCRIPT -->
+<script src="http://www.google.com/jsapi" type="text/javascript"></script>
+<script src="../../../../../assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "../../../../../";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div class="dac-header" id="header">
+
+
+
+
+      <div class="dac-header-inner">
+        <a class="dac-nav-toggle" data-dac-toggle-nav href="javascript:;" title="Open navigation">
+          <span class="dac-nav-hamburger">
+            <span class="dac-nav-hamburger-top"></span>
+            <span class="dac-nav-hamburger-mid"></span>
+            <span class="dac-nav-hamburger-bot"></span>
+          </span>
+        </a>
+        <a class="dac-header-logo" href="../../../../../index.html">
+          <img class="dac-header-logo-image" src="../../../../../assets/images/android_logo.png"
+              srcset="../../../../../assets/images/android_logo@2x.png 2x"
+              width="32" height="36" alt="Android" /> Developers
+          </a>
+
+        <ul class="dac-header-crumbs">
+
+          <li class="dac-header-crumbs-item"><span class="dac-header-crumbs-link current ">JankTestBase</a></li>
+        </ul>
+
+
+
+
+  <div class="dac-header-search" id="search-container">
+    <div class="dac-header-search-inner">
+      <div class="dac-sprite dac-search dac-header-search-btn" id="search-btn"></div>
+      <form class="dac-header-search-form" onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '../../../../../')"
+          onkeyup="return search_changed(event, false, '../../../../../')"
+          class="dac-header-search-input" placeholder="Search" />
+          <a class="dac-header-search-close hide" id="search-close">close</a>
+      </form>
+    </div><!-- end dac-header-search-inner -->
+  </div><!-- end dac-header-search -->
+
+  <div class="search_filtered_wrapper">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+
+
+        <a class="dac-header-console-btn" href="https://play.google.com/apps/publish/">
+          <span class="dac-sprite dac-google-play"></span>
+          <span class="dac-visible-desktop-inline">Developer</span>
+          Console
+        </a>
+
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+
+  <!-- Navigation-->
+  <nav class="dac-nav">
+    <div class="dac-nav-dimmer" data-dac-toggle-nav></div>
+
+    <ul class="dac-nav-list" data-dac-nav>
+      <li class="dac-nav-item dac-nav-head">
+        <a class="dac-nav-link dac-nav-logo" data-dac-toggle-nav href="javascript:;" title="Close navigation">
+          <img class="dac-logo-image" src="../../../../../assets/images/android_logo.png"
+               srcset="../../../../../assets/images/android_logo@2x.png 2x"
+               width="32" height="36" alt="Android" /> Developers
+        </a>
+      </li>
+      <li class="dac-nav-item home">
+        <a class="dac-nav-link dac-visible-mobile-block" href="../../../../../index.html">Home</a>
+        <ul class="dac-nav-secondary about">
+          <li class="dac-nav-item about">
+            <a class="dac-nav-link" href="../../../../../about/index.html">Android</a>
+          </li>
+          <li class="dac-nav-item wear">
+            <a class="dac-nav-link" href="../../../../../wear/index.html">Wear</a>
+          </li>
+          <li class="dac-nav-item tv">
+            <a class="dac-nav-link" href="../../../../../tv/index.html">TV</a>
+          </li>
+          <li class="dac-nav-item auto">
+            <a class="dac-nav-link" href="../../../../../auto/index.html">Auto</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item design">
+        <a class="dac-nav-link" href="../../../../../design/index.html"
+           zh-tw-lang="設計"
+           zh-cn-lang="设计"
+           ru-lang="Проектирование"
+           ko-lang="디자인"
+           ja-lang="設計"
+           es-lang="Diseñar">Design</a>
+      </li>
+      <li class="dac-nav-item develop">
+        <a class="dac-nav-link" href="../../../../../develop/index.html"
+           zh-tw-lang="開發"
+           zh-cn-lang="开发"
+           ru-lang="Разработка"
+           ko-lang="개발"
+           ja-lang="開発"
+           es-lang="Desarrollar">Develop</a>
+        <ul class="dac-nav-secondary develop">
+          <li class="dac-nav-item training">
+            <a class="dac-nav-link" href="../../../../../training/index.html"
+               zh-tw-lang="訓練課程"
+               zh-cn-lang="培训"
+               ru-lang="Курсы"
+               ko-lang="교육"
+               ja-lang="トレーニング"
+               es-lang="Capacitación">Training</a>
+          </li>
+          <li class="dac-nav-item guide">
+            <a class="dac-nav-link" href="../../../../../guide/index.html"
+               zh-tw-lang="API 指南"
+               zh-cn-lang="API 指南"
+               ru-lang="Руководства по API"
+               ko-lang="API 가이드"
+               ja-lang="API ガイド"
+               es-lang="Guías de la API">API Guides</a>
+          </li>
+          <li class="dac-nav-item reference">
+            <a class="dac-nav-link" href="../../../../../reference/packages.html"
+               zh-tw-lang="參考資源"
+               zh-cn-lang="参考"
+               ru-lang="Справочник"
+               ko-lang="참조문서"
+               ja-lang="リファレンス"
+               es-lang="Referencia">Reference</a>
+          </li>
+          <li class="dac-nav-item tools">
+            <a class="dac-nav-link" href="../../../../../sdk/index.html"
+               zh-tw-lang="相關工具"
+               zh-cn-lang="工具"
+               ru-lang="Инструменты"
+               ko-lang="도구"
+               ja-lang="ツール"
+               es-lang="Herramientas">Tools</a></li>
+          <li class="dac-nav-item google">
+            <a class="dac-nav-link" href="../../../../../google/index.html">Google Services</a>
+          </li>
+
+          <li class="dac-nav-item preview">
+            <a class="dac-nav-link" href="../../../../../preview/index.html">Preview</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item distribute">
+        <a class="dac-nav-link" href="../../../../../distribute/index.html"
+           zh-tw-lang="發佈"
+           zh-cn-lang="分发"
+           ru-lang="Распространение"
+           ko-lang="배포"
+           ja-lang="配布"
+           es-lang="Distribuir">Distribute</a>
+        <ul class="dac-nav-secondary distribute">
+          <li class="dac-nav-item googleplay">
+            <a class="dac-nav-link" href="../../../../../distribute/googleplay/index.html">Google Play</a></li>
+          <li class="dac-nav-item essentials">
+            <a class="dac-nav-link" href="../../../../../distribute/essentials/index.html">Essentials</a></li>
+          <li class="dac-nav-item users">
+            <a class="dac-nav-link" href="../../../../../distribute/users/index.html">Get Users</a></li>
+          <li class="dac-nav-item engage">
+            <a class="dac-nav-link" href="../../../../../distribute/engage/index.html">Engage &amp; Retain</a></li>
+          <li class="dac-nav-item monetize">
+            <a class="dac-nav-link" href="../../../../../distribute/monetize/index.html">Earn</a>
+          </li>
+          <li class="dac-nav-item analyze">
+            <a class="dac-nav-link" href="../../../../../distribute/analyze/index.html">Analyze</a>
+          </li>
+          <li class="dac-nav-item stories">
+            <a class="dac-nav-link" href="../../../../../distribute/stories/index.html">Stories</a>
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </nav>
+  <!-- end navigation-->
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content"><div class="cols">
+    <div class="col-4 dac-hidden-mobile" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav">
+      <div id="api-nav-header">
+        <div id="api-level-toggle">
+          <label for="apiLevelCheckbox" class="disabled"
+            title="Select your target API level to dim unavailable APIs">API level: </label>
+          <div class="select-wrapper">
+            <select id="apiLevelSelector">
+              <!-- option elements added by buildApiLevelSelector() -->
+            </select>
+          </div>
+        </div><!-- end toggle -->
+        <div id="api-nav-title">Android APIs</div>
+        </div><!-- end nav header -->
+      <script>
+        var SINCE_DATA = [  ];
+        buildApiLevelSelector();
+      </script>
+
+      <div id="swapper">
+        <div id="nav-panels">
+          <div id="resize-packages-nav">
+            <div id="packages-nav" class="scroll-pane">
+
+              <ul>
+
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/package-summary.html">android.support.test</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/annotation/package-summary.html">android.support.test.annotation</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/package-summary.html">android.support.test.espresso</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/action/package-summary.html">android.support.test.espresso.action</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/assertion/package-summary.html">android.support.test.espresso.assertion</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/base/package-summary.html">android.support.test.espresso.base</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/contrib/package-summary.html">android.support.test.espresso.contrib</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/intent/package-summary.html">android.support.test.espresso.intent</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/intent/matcher/package-summary.html">android.support.test.espresso.intent.matcher</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/intent/rule/package-summary.html">android.support.test.espresso.intent.rule</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/matcher/package-summary.html">android.support.test.espresso.matcher</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/util/package-summary.html">android.support.test.espresso.util</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/action/package-summary.html">android.support.test.espresso.web.action</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/assertion/package-summary.html">android.support.test.espresso.web.assertion</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/bridge/package-summary.html">android.support.test.espresso.web.bridge</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/matcher/package-summary.html">android.support.test.espresso.web.matcher</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/model/package-summary.html">android.support.test.espresso.web.model</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/sugar/package-summary.html">android.support.test.espresso.web.sugar</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/webdriver/package-summary.html">android.support.test.espresso.web.webdriver</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
+    <li class="selected api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/runner/intent/package-summary.html">android.support.test.runner.intent</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/runner/lifecycle/package-summary.html">android.support.test.runner.lifecycle</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/uiautomator/package-summary.html">android.support.test.uiautomator</a></li>
+              </ul><br/>
+
+            </div> <!-- end packages-nav -->
+          </div> <!-- end resize-packages -->
+          <div id="classes-nav" class="scroll-pane">
+
+
+
+            <ul>
+
+    <li><h2>Annotations</h2>
+      <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html">GfxMonitor</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/test/jank/JankTest.html">JankTest</a></li>
+      </ul>
+    </li>
+
+
+    <li><h2>Classes</h2>
+      <ul>
+          <li class="selected api apilevel-"><a href="../../../../../reference/android/support/test/jank/JankTestBase.html">JankTestBase</a></li>
+      </ul>
+    </li>
+
+
+
+            </ul><br/>
+
+
+          </div><!-- end classes -->
+        </div><!-- end nav-panels -->
+        <div id="nav-tree" style="display:none" class="scroll-pane">
+          <div id="tree-list"></div>
+        </div><!-- end nav-tree -->
+      </div><!-- end swapper -->
+      <div id="nav-swap">
+      <a class="fullscreen">fullscreen</a>
+      <a href='#' onclick='swapNav();return false;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>
+      </div>
+    </div> <!-- end devdoc-nav -->
+    </div> <!-- end side-nav -->
+    <script type="text/javascript">
+      // init fullscreen based on user pref
+      var fullscreen = readCookie("fullscreen");
+      if (fullscreen != 0) {
+        if (fullscreen == "false") {
+          toggleFullscreen(false);
+        } else {
+          toggleFullscreen(true);
+        }
+      }
+      // init nav version for mobile
+      if (isMobile) {
+        swapNav(); // tree view should be used on mobile
+        $('#nav-swap').hide();
+      } else {
+        chooseDefaultNav();
+        if ($("#nav-tree").is(':visible')) {
+          init_default_navtree("../../../../../");
+        }
+      }
+      // scroll the selected page into view
+      $(document).ready(function() {
+        scrollIntoView("packages-nav");
+        scrollIntoView("classes-nav");
+        });
+    </script>
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+
+
+  <a href="#pubctors">Ctors</a>
+
+
+
+
+  &#124; <a href="#pubmethods">Methods</a>
+
+
+
+  &#124; <a href="#promethods">Protected Methods</a>
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+
+
+
+    class
+<h1 itemprop="name">JankTestBase</h1>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    extends InstrumentationTestCase<br/>
+
+
+
+
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="5" class="jd-inheritance-class-cell">java.lang.Object</td>
+    </tr>
+
+
+    <tr>
+
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+
+        <td colspan="4" class="jd-inheritance-class-cell">junit.framework.Assert</td>
+    </tr>
+
+
+    <tr>
+
+            <td class="jd-inheritance-space">&nbsp;</td>
+
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+
+        <td colspan="3" class="jd-inheritance-class-cell">junit.framework.TestCase</td>
+    </tr>
+
+
+    <tr>
+
+            <td class="jd-inheritance-space">&nbsp;</td>
+
+            <td class="jd-inheritance-space">&nbsp;</td>
+
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+
+        <td colspan="2" class="jd-inheritance-class-cell">android.test.InstrumentationTestCase</td>
+    </tr>
+
+
+    <tr>
+
+            <td class="jd-inheritance-space">&nbsp;</td>
+
+            <td class="jd-inheritance-space">&nbsp;</td>
+
+            <td class="jd-inheritance-space">&nbsp;</td>
+
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+
+        <td colspan="1" class="jd-inheritance-class-cell">android.support.test.jank.JankTestBase</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Base test class for measuring Jank.
+
+ This test class automatically monitors jank while executing each test method. Each test method is
+ executed several times in a loop, according to the 'iterations' command line parameter.
+
+ To perform additional setup / tear down steps for each iteration, subclasses can optionally
+ override <code><a href="../../../../../reference/android/support/test/jank/JankTestBase.html#beforeLoop()">beforeLoop()</a></code> and <code><a href="../../../../../reference/android/support/test/jank/JankTestBase.html#afterLoop()">afterLoop()</a></code> methods.
+
+ Test methods must be configured with the <code><a href="../../../../../reference/android/support/test/jank/JankTest.html">JankTest</a></code> annotation. At minimum, the type of
+ jank to measure and the number of expected frames must be specified.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            </nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/test/jank/JankTestBase.html#JankTestBase()">JankTestBase</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/test/jank/JankTestBase.html#afterLoop()">afterLoop</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Called after each iteration of the test method.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/test/jank/JankTestBase.html#afterTest(android.os.Bundle)">afterTest</a></span>(Bundle metrics)</nobr>
+
+        <div class="jd-descrdiv">
+          Called once after all iterations have completed.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/test/jank/JankTestBase.html#beforeLoop()">beforeLoop</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Called before each iteration of the test method.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/test/jank/JankTestBase.html#beforeTest()">beforeTest</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Called once before executing a test method.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/test/jank/JankTestBase.html#getCurrentIteration()">getCurrentIteration</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Return the index of the currently executing iteration.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="promethods" class="jd-sumtable"><tr><th colspan="12">Protected Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            Bundle</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/test/jank/JankTestBase.html#getArguments()">getArguments</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns a <code><a href="../../../../../reference/android/os/Bundle.html">Bundle</a></code> containing the command line parameters.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/test/jank/JankTestBase.html#runTest()">runTest</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+
+
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.test.InstrumentationTestCase" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.test.InstrumentationTestCase-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  android.test.InstrumentationTestCase
+
+<div id="inherited-methods-android.test.InstrumentationTestCase">
+  <div id="inherited-methods-android.test.InstrumentationTestCase-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.test.InstrumentationTestCase-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Instrumentation</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getInstrumentation</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">injectInsrumentation</span>(Instrumentation arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">injectInstrumentation</span>(Instrumentation arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+            &lt;T&nbsp;extends&nbsp;Activity&gt;
+            T</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">launchActivity</span>(String arg0, Class&lt;T&gt; arg1, Bundle arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+            &lt;T&nbsp;extends&nbsp;Activity&gt;
+            T</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">launchActivityWithIntent</span>(String arg0, Class&lt;T&gt; arg1, Intent arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">runTest</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">runTestOnUiThread</span>(Runnable arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">sendKeys</span>(String arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">sendKeys</span>(int... arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">sendRepeatedKeys</span>(int... arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">tearDown</span>()</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-junit.framework.TestCase" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-junit.framework.TestCase-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  junit.framework.TestCase
+
+<div id="inherited-methods-junit.framework.TestCase">
+  <div id="inherited-methods-junit.framework.TestCase-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-junit.framework.TestCase-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">countTestCases</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            TestResult</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">createResult</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getName</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            TestResult</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">run</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">run</span>(TestResult arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">runBare</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">runTest</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setName</span>(String arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setUp</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">tearDown</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-junit.framework.Assert" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-junit.framework.Assert-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  junit.framework.Assert
+
+<div id="inherited-methods-junit.framework.Assert">
+  <div id="inherited-methods-junit.framework.Assert-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-junit.framework.Assert-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(short arg0, short arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(String arg0, int arg1, int arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(String arg0, short arg1, short arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(char arg0, char arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(String arg0, String arg1, String arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(int arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(String arg0, double arg1, double arg2, double arg3)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(String arg0, long arg1, long arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(byte arg0, byte arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(Object arg0, Object arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(boolean arg0, boolean arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(String arg0, float arg1, float arg2, float arg3)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(String arg0, boolean arg1, boolean arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(String arg0, String arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(float arg0, float arg1, float arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(String arg0, byte arg1, byte arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(double arg0, double arg1, double arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(String arg0, char arg1, char arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(String arg0, Object arg1, Object arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertEquals</span>(long arg0, long arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertFalse</span>(String arg0, boolean arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertFalse</span>(boolean arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertNotNull</span>(String arg0, Object arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertNotNull</span>(Object arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertNotSame</span>(Object arg0, Object arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertNotSame</span>(String arg0, Object arg1, Object arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertNull</span>(Object arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertNull</span>(String arg0, Object arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertSame</span>(Object arg0, Object arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertSame</span>(String arg0, Object arg1, Object arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertTrue</span>(String arg0, boolean arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">assertTrue</span>(boolean arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">fail</span>(String arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">fail</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">failNotEquals</span>(String arg0, Object arg1, Object arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">failNotSame</span>(String arg0, Object arg1, Object arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">failSame</span>(String arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">format</span>(String arg0, Object arg1, Object arg2)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.Object-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  java.lang.Object
+
+<div id="inherited-methods-java.lang.Object">
+  <div id="inherited-methods-java.lang.Object-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clone</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">finalize</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            Class&lt;?&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClass</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notify</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notifyAll</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-junit.framework.Test" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-junit.framework.Test-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  junit.framework.Test
+
+<div id="inherited-methods-junit.framework.Test">
+  <div id="inherited-methods-junit.framework.Test-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-junit.framework.Test-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">countTestCases</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">run</span>(TestResult arg0)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<h2>Public Constructors</h2>
+
+
+
+<A NAME="JankTestBase()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+
+      </span>
+      <span class="sympad">JankTestBase</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="afterLoop()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">afterLoop</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Called after each iteration of the test method. </p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Throws</h5>
+      <table class="jd-tagtable">
+        <tr>
+            <th>Exception</td>
+            <td></td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="afterTest(android.os.Bundle)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">afterTest</span>
+      <span class="normal">(Bundle metrics)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Called once after all iterations have completed.
+ <p>Note: default implementation reports the aggregated jank metrics via
+ <code><a href="../../../../../reference/android/app/Instrumentation.html#sendStatus(int, android.os.Bundle)">sendStatus(int, Bundle)</a></code></p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>metrics</td>
+          <td>the aggregated jank metrics after looped execution
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="beforeLoop()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">beforeLoop</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Called before each iteration of the test method. </p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Throws</h5>
+      <table class="jd-tagtable">
+        <tr>
+            <th>Exception</td>
+            <td></td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="beforeTest()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">beforeTest</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Called once before executing a test method. </p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Throws</h5>
+      <table class="jd-tagtable">
+        <tr>
+            <th>Exception</td>
+            <td></td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="getCurrentIteration()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+        final
+
+
+        int
+      </span>
+      <span class="sympad">getCurrentIteration</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Return the index of the currently executing iteration. </p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+<h2>Protected Methods</h2>
+
+
+
+<A NAME="getArguments()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        protected
+
+        final
+
+
+        Bundle
+      </span>
+      <span class="sympad">getArguments</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns a <code><a href="../../../../../reference/android/os/Bundle.html">Bundle</a></code> containing the command line parameters. </p></div>
+
+    </div>
+</div>
+
+
+<A NAME="runTest()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        protected
+
+
+
+
+        void
+      </span>
+      <span class="sympad">runTest</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>
+</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Throws</h5>
+      <table class="jd-tagtable">
+        <tr>
+            <th>Throwable</td>
+            <td></td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+</div> <!-- jd-content -->
+
+<div class="wrap">
+  <div class="dac-footer">
+    <div class="cols dac-footer-main">
+      <div class="col-1of2">
+        <a class="dac-footer-getnews" data-modal-toggle="newsletter" href="javascript:;">Get news &amp; tips <span
+          class="dac-fab dac-primary"><i class="dac-sprite dac-mail"></i></span></a>
+      </div>
+      <div class="col-1of2 dac-footer-reachout">
+        <div class="dac-footer-contact">
+          <a class="dac-footer-contact-link" href="http://android-developers.blogspot.com/">Blog</a>
+          <a class="dac-footer-contact-link" href="/support.html">Support</a>
+        </div>
+        <div class="dac-footer-social">
+          <a class="dac-fab dac-footer-social-link" href="https://www.youtube.com/user/androiddevelopers"><i class="dac-sprite dac-youtube"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://plus.google.com/+AndroidDevelopers"><i class="dac-sprite dac-gplus"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://twitter.com/AndroidDev"><i class="dac-sprite dac-twitter"></i></a>
+        </div>
+      </div>
+    </div>
+
+    <hr class="dac-footer-separator"/>
+
+
+      <p class="dac-footer-copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="../../../../../license.html">
+  Content License</a>.
+      </p>
+      <p class="dac-footer-build">
+
+    Android &nbsp;r &mdash;
+<script src="../../../../../timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+      </p>
+
+
+    <p class="dac-footer-links">
+      <a href="/about/index.html">About Android</a>
+      <a href="/auto/index.html">Auto</a>
+      <a href="/tv/index.html">TV</a>
+      <a href="/wear/index.html">Wear</a>
+      <a href="/legal.html">Legal</a>
+
+      <span id="language" class="locales">
+        <select name="language" onchange="changeLangPref(this.value, true)">
+          <option value="en" selected="selected">English</option>
+          <option value="es">Español</option>
+          <option value="ja">日本語</option>
+          <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
+          <option value="ru">Русский</option>
+          <option value="zh-cn">中文(简体)</option>
+          <option value="zh-tw">中文(繁體)</option>
+        </select>
+      </span>
+    </p>
+  </div>
+</div> <!-- end footer -->
+
+<div data-modal="newsletter" data-newsletter data-swap class="dac-modal newsletter">
+  <div class="dac-modal-container">
+    <div class="dac-modal-window">
+      <header class="dac-modal-header">
+        <button class="dac-modal-header-close" data-modal-toggle><i class="dac-sprite dac-close"></i></button>
+        <div class="dac-swap" data-swap-container>
+          <section class="dac-swap-section dac-active dac-down">
+            <h2 class="norule dac-modal-header-title">Get the latest Android developer news and tips that will help you find success on Google Play.</h2>
+            <p class="dac-modal-header-subtitle">&#42; Required Fields</p>
+          </section>
+          <section class="dac-swap-section dac-up">
+            <h2 class="norule dac-modal-header-title">Hooray!</h2>
+          </section>
+        </div>
+      </header>
+      <div class="dac-swap" data-swap-container>
+        <section class="dac-swap-section dac-active dac-left">
+          <form action="https://docs.google.com/forms/d/1QgnkzbEJIDu9lMEea0mxqWrXUJu0oBCLD7ar23V0Yys/formResponse" class="dac-form" method="post" target="dac-newsletter-iframe">
+            <section class="dac-modal-content">
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-full-name" class="dac-form-floatlabel">Full name</label>
+                      <input type="text" class="dac-form-input" name="entry.1357890476" id="newsletter-full-name" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-email" class="dac-form-floatlabel">Email address</label>
+                      <input type="email" class="dac-form-input" name="entry.472100832" id="newsletter-email" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-company" class="dac-form-floatlabel">Company / developer name</label>
+                      <input type="text" class="dac-form-input" name="entry.1664780309" id="newsletter-company">
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-play-store" class="dac-form-floatlabel">One of your Play Store app URLs</label>
+                      <input type="url" class="dac-form-input" name="entry.47013838" id="newsletter-play-store" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <legend class="dac-form-legend">Which best describes your business:<span class="dac-form-required">*</span>
+                    </legend>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-app" required>
+                      <label for="newsletter-business-type-app" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-app" class="dac-form-label">Apps</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-games" required>
+                      <label for="newsletter-business-type-games" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-games" class="dac-form-label">Games</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps and Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-appsgames" required>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-label">Apps &amp; Games</label>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol newsletter-checkboxes">
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.732309842" id="newsletter-add" required value="Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.">
+                          <label for="newsletter-add" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-add" class="dac-form-label dac-form-aside">Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.2045036090" id="newsletter-terms" required value="I acknowledge that the information provided in this form will be subject to Google's privacy policy (https://www.google.com/policies/privacy/).">
+                          <label for="newsletter-terms" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-terms" class="dac-form-label dac-form-aside">I acknowledge that the information provided in this form will be subject to <a href="https://www.google.com/policies/privacy/">Google's privacy policy</a>.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+            </section>
+            <footer class="dac-modal-footer">
+              <div class="cols">
+                <div class="col-2of5">
+                </div>
+              </div>
+              <button type="submit" value="Submit" class="dac-fab dac-primary dac-large dac-modal-action"><i class="dac-sprite dac-arrow-right"></i></button>
+            </footer>
+          </form>
+        </section>
+        <section class="dac-swap-section dac-right">
+          <div class="dac-modal-content">
+            <p class="newsletter-success-message">
+              You have successfully signed up for the latest Android developer news and tips.
+            </p>
+          </div>
+        </section>
+      </div>
+    </div>
+  </div>
+</div> <!-- end footer -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end .cols -->
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/android/support/test/jank/package-summary.html b/docs/html/reference/android/support/test/jank/package-summary.html
new file mode 100644
index 0000000..2444aa8
--- /dev/null
+++ b/docs/html/reference/android/support/test/jank/package-summary.html
@@ -0,0 +1,852 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta content="IE=edge" http-equiv="X-UA-Compatible">
+
+<link rel="shortcut icon" type="image/x-icon" href="../../../../../favicon.ico" />
+<title>android.support.test.jank | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="http://fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+
+<link href="../../../../../assets/css/default.css?v=7" rel="stylesheet" type="text/css">
+
+
+<!-- FULLSCREEN STYLESHEET -->
+<link href="../../../../../assets/css/fullscreen.css" rel="stylesheet" class="fullscreen"
+type="text/css">
+
+
+<!-- JAVASCRIPT -->
+<script src="http://www.google.com/jsapi" type="text/javascript"></script>
+<script src="../../../../../assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "../../../../../";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+
+<body class="gc-documentation
+  develop reference">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div class="dac-header" id="header">
+
+
+
+
+      <div class="dac-header-inner">
+        <a class="dac-nav-toggle" data-dac-toggle-nav href="javascript:;" title="Open navigation">
+          <span class="dac-nav-hamburger">
+            <span class="dac-nav-hamburger-top"></span>
+            <span class="dac-nav-hamburger-mid"></span>
+            <span class="dac-nav-hamburger-bot"></span>
+          </span>
+        </a>
+        <a class="dac-header-logo" href="../../../../../index.html">
+          <img class="dac-header-logo-image" src="../../../../../assets/images/android_logo.png"
+              srcset="../../../../../assets/images/android_logo@2x.png 2x"
+              width="32" height="36" alt="Android" /> Developers
+          </a>
+
+        <ul class="dac-header-crumbs">
+
+          <li class="dac-header-crumbs-item"><span class="dac-header-crumbs-link current ">android.support.test.jank</a></li>
+        </ul>
+
+
+
+
+  <div class="dac-header-search" id="search-container">
+    <div class="dac-header-search-inner">
+      <div class="dac-sprite dac-search dac-header-search-btn" id="search-btn"></div>
+      <form class="dac-header-search-form" onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '../../../../../')"
+          onkeyup="return search_changed(event, false, '../../../../../')"
+          class="dac-header-search-input" placeholder="Search" />
+          <a class="dac-header-search-close hide" id="search-close">close</a>
+      </form>
+    </div><!-- end dac-header-search-inner -->
+  </div><!-- end dac-header-search -->
+
+  <div class="search_filtered_wrapper">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+
+
+        <a class="dac-header-console-btn" href="https://play.google.com/apps/publish/">
+          <span class="dac-sprite dac-google-play"></span>
+          <span class="dac-visible-desktop-inline">Developer</span>
+          Console
+        </a>
+
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+
+  <!-- Navigation-->
+  <nav class="dac-nav">
+    <div class="dac-nav-dimmer" data-dac-toggle-nav></div>
+
+    <ul class="dac-nav-list" data-dac-nav>
+      <li class="dac-nav-item dac-nav-head">
+        <a class="dac-nav-link dac-nav-logo" data-dac-toggle-nav href="javascript:;" title="Close navigation">
+          <img class="dac-logo-image" src="../../../../../assets/images/android_logo.png"
+               srcset="../../../../../assets/images/android_logo@2x.png 2x"
+               width="32" height="36" alt="Android" /> Developers
+        </a>
+      </li>
+      <li class="dac-nav-item home">
+        <a class="dac-nav-link dac-visible-mobile-block" href="../../../../../index.html">Home</a>
+        <ul class="dac-nav-secondary about">
+          <li class="dac-nav-item about">
+            <a class="dac-nav-link" href="../../../../../about/index.html">Android</a>
+          </li>
+          <li class="dac-nav-item wear">
+            <a class="dac-nav-link" href="../../../../../wear/index.html">Wear</a>
+          </li>
+          <li class="dac-nav-item tv">
+            <a class="dac-nav-link" href="../../../../../tv/index.html">TV</a>
+          </li>
+          <li class="dac-nav-item auto">
+            <a class="dac-nav-link" href="../../../../../auto/index.html">Auto</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item design">
+        <a class="dac-nav-link" href="../../../../../design/index.html"
+           zh-tw-lang="設計"
+           zh-cn-lang="设计"
+           ru-lang="Проектирование"
+           ko-lang="디자인"
+           ja-lang="設計"
+           es-lang="Diseñar">Design</a>
+      </li>
+      <li class="dac-nav-item develop">
+        <a class="dac-nav-link" href="../../../../../develop/index.html"
+           zh-tw-lang="開發"
+           zh-cn-lang="开发"
+           ru-lang="Разработка"
+           ko-lang="개발"
+           ja-lang="開発"
+           es-lang="Desarrollar">Develop</a>
+        <ul class="dac-nav-secondary develop">
+          <li class="dac-nav-item training">
+            <a class="dac-nav-link" href="../../../../../training/index.html"
+               zh-tw-lang="訓練課程"
+               zh-cn-lang="培训"
+               ru-lang="Курсы"
+               ko-lang="교육"
+               ja-lang="トレーニング"
+               es-lang="Capacitación">Training</a>
+          </li>
+          <li class="dac-nav-item guide">
+            <a class="dac-nav-link" href="../../../../../guide/index.html"
+               zh-tw-lang="API 指南"
+               zh-cn-lang="API 指南"
+               ru-lang="Руководства по API"
+               ko-lang="API 가이드"
+               ja-lang="API ガイド"
+               es-lang="Guías de la API">API Guides</a>
+          </li>
+          <li class="dac-nav-item reference">
+            <a class="dac-nav-link" href="../../../../../reference/packages.html"
+               zh-tw-lang="參考資源"
+               zh-cn-lang="参考"
+               ru-lang="Справочник"
+               ko-lang="참조문서"
+               ja-lang="リファレンス"
+               es-lang="Referencia">Reference</a>
+          </li>
+          <li class="dac-nav-item tools">
+            <a class="dac-nav-link" href="../../../../../sdk/index.html"
+               zh-tw-lang="相關工具"
+               zh-cn-lang="工具"
+               ru-lang="Инструменты"
+               ko-lang="도구"
+               ja-lang="ツール"
+               es-lang="Herramientas">Tools</a></li>
+          <li class="dac-nav-item google">
+            <a class="dac-nav-link" href="../../../../../google/index.html">Google Services</a>
+          </li>
+
+          <li class="dac-nav-item preview">
+            <a class="dac-nav-link" href="../../../../../preview/index.html">Preview</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item distribute">
+        <a class="dac-nav-link" href="../../../../../distribute/index.html"
+           zh-tw-lang="發佈"
+           zh-cn-lang="分发"
+           ru-lang="Распространение"
+           ko-lang="배포"
+           ja-lang="配布"
+           es-lang="Distribuir">Distribute</a>
+        <ul class="dac-nav-secondary distribute">
+          <li class="dac-nav-item googleplay">
+            <a class="dac-nav-link" href="../../../../../distribute/googleplay/index.html">Google Play</a></li>
+          <li class="dac-nav-item essentials">
+            <a class="dac-nav-link" href="../../../../../distribute/essentials/index.html">Essentials</a></li>
+          <li class="dac-nav-item users">
+            <a class="dac-nav-link" href="../../../../../distribute/users/index.html">Get Users</a></li>
+          <li class="dac-nav-item engage">
+            <a class="dac-nav-link" href="../../../../../distribute/engage/index.html">Engage &amp; Retain</a></li>
+          <li class="dac-nav-item monetize">
+            <a class="dac-nav-link" href="../../../../../distribute/monetize/index.html">Earn</a>
+          </li>
+          <li class="dac-nav-item analyze">
+            <a class="dac-nav-link" href="../../../../../distribute/analyze/index.html">Analyze</a>
+          </li>
+          <li class="dac-nav-item stories">
+            <a class="dac-nav-link" href="../../../../../distribute/stories/index.html">Stories</a>
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </nav>
+  <!-- end navigation-->
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content"><div class="cols">
+    <div class="col-4 dac-hidden-mobile" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav">
+      <div id="api-nav-header">
+        <div id="api-level-toggle">
+          <label for="apiLevelCheckbox" class="disabled"
+            title="Select your target API level to dim unavailable APIs">API level: </label>
+          <div class="select-wrapper">
+            <select id="apiLevelSelector">
+              <!-- option elements added by buildApiLevelSelector() -->
+            </select>
+          </div>
+        </div><!-- end toggle -->
+        <div id="api-nav-title">Android APIs</div>
+        </div><!-- end nav header -->
+      <script>
+        var SINCE_DATA = [  ];
+        buildApiLevelSelector();
+      </script>
+
+      <div id="swapper">
+        <div id="nav-panels">
+          <div id="resize-packages-nav">
+            <div id="packages-nav" class="scroll-pane">
+
+              <ul>
+
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/package-summary.html">android.support.test</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/annotation/package-summary.html">android.support.test.annotation</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/package-summary.html">android.support.test.espresso</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/action/package-summary.html">android.support.test.espresso.action</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/assertion/package-summary.html">android.support.test.espresso.assertion</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/base/package-summary.html">android.support.test.espresso.base</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/contrib/package-summary.html">android.support.test.espresso.contrib</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/intent/package-summary.html">android.support.test.espresso.intent</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/intent/matcher/package-summary.html">android.support.test.espresso.intent.matcher</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/intent/rule/package-summary.html">android.support.test.espresso.intent.rule</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/matcher/package-summary.html">android.support.test.espresso.matcher</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/util/package-summary.html">android.support.test.espresso.util</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/action/package-summary.html">android.support.test.espresso.web.action</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/assertion/package-summary.html">android.support.test.espresso.web.assertion</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/bridge/package-summary.html">android.support.test.espresso.web.bridge</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/matcher/package-summary.html">android.support.test.espresso.web.matcher</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/model/package-summary.html">android.support.test.espresso.web.model</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/sugar/package-summary.html">android.support.test.espresso.web.sugar</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/espresso/web/webdriver/package-summary.html">android.support.test.espresso.web.webdriver</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
+    <li class="selected api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/runner/intent/package-summary.html">android.support.test.runner.intent</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/runner/lifecycle/package-summary.html">android.support.test.runner.lifecycle</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/uiautomator/package-summary.html">android.support.test.uiautomator</a></li>
+              </ul><br/>
+
+            </div> <!-- end packages-nav -->
+          </div> <!-- end resize-packages -->
+          <div id="classes-nav" class="scroll-pane">
+
+
+
+            <ul>
+
+    <li><h2>Annotations</h2>
+      <ul>
+        <li class="api apilevel-"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html">GfxMonitor</a></li>
+        <li class="api apilevel-"><a href="../../../../../reference/android/support/test/jank/JankTest.html">JankTest</a></li>
+      </ul>
+    </li>
+
+
+    <li><h2>Classes</h2>
+      <ul>
+        <li class="api apilevel-"><a href="../../../../../reference/android/support/test/jank/JankTestBase.html">JankTestBase</a></li>
+      </ul>
+    </li>
+
+
+
+            </ul><br/>
+
+
+          </div><!-- end classes -->
+        </div><!-- end nav-panels -->
+        <div id="nav-tree" style="display:none" class="scroll-pane">
+          <div id="tree-list"></div>
+        </div><!-- end nav-tree -->
+      </div><!-- end swapper -->
+      <div id="nav-swap">
+      <a class="fullscreen">fullscreen</a>
+      <a href='#' onclick='swapNav();return false;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>
+      </div>
+    </div> <!-- end devdoc-nav -->
+    </div> <!-- end side-nav -->
+    <script type="text/javascript">
+      // init fullscreen based on user pref
+      var fullscreen = readCookie("fullscreen");
+      if (fullscreen != 0) {
+        if (fullscreen == "false") {
+          toggleFullscreen(false);
+        } else {
+          toggleFullscreen(true);
+        }
+      }
+      // init nav version for mobile
+      if (isMobile) {
+        swapNav(); // tree view should be used on mobile
+        $('#nav-swap').hide();
+      } else {
+        chooseDefaultNav();
+        if ($("#nav-tree").is(':visible')) {
+          init_default_navtree("../../../../../");
+        }
+      }
+      // scroll the selected page into view
+      $(document).ready(function() {
+        scrollIntoView("packages-nav");
+        scrollIntoView("classes-nav");
+        });
+    </script>
+
+
+
+
+
+<div class="col-12" id="doc-col">
+
+<div id="api-info-block">
+<div class="api-level">
+
+
+
+
+</div>
+</div>
+
+<div id="jd-header">
+  package
+  <h1>android.support.test.jank</h1>
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+
+
+
+
+
+
+
+    <h2>Annotations</h2>
+    <div class="jd-sumtable">
+
+
+  <table class="jd-sumtable-expando">
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/GfxMonitor.html">GfxMonitor</a></td>
+        <td class="jd-descrcol" width="100%">
+          Annotation used to configure a gfx monitor.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/JankTest.html">JankTest</a></td>
+        <td class="jd-descrcol" width="100%">
+          Annotation used to configure a jank test method.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+  </table>
+
+    </div>
+
+
+
+
+
+
+
+    <h2>Classes</h2>
+    <div class="jd-sumtable">
+
+
+  <table class="jd-sumtable-expando">
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/test/jank/JankTestBase.html">JankTestBase</a></td>
+        <td class="jd-descrcol" width="100%">
+          Base test class for measuring Jank.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+  </table>
+
+    </div>
+
+
+
+
+
+
+
+
+
+
+
+
+</div><!-- end jd-content -->
+
+<div class="wrap">
+  <div class="dac-footer">
+    <div class="cols dac-footer-main">
+      <div class="col-1of2">
+        <a class="dac-footer-getnews" data-modal-toggle="newsletter" href="javascript:;">Get news &amp; tips <span
+          class="dac-fab dac-primary"><i class="dac-sprite dac-mail"></i></span></a>
+      </div>
+      <div class="col-1of2 dac-footer-reachout">
+        <div class="dac-footer-contact">
+          <a class="dac-footer-contact-link" href="http://android-developers.blogspot.com/">Blog</a>
+          <a class="dac-footer-contact-link" href="/support.html">Support</a>
+        </div>
+        <div class="dac-footer-social">
+          <a class="dac-fab dac-footer-social-link" href="https://www.youtube.com/user/androiddevelopers"><i class="dac-sprite dac-youtube"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://plus.google.com/+AndroidDevelopers"><i class="dac-sprite dac-gplus"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://twitter.com/AndroidDev"><i class="dac-sprite dac-twitter"></i></a>
+        </div>
+      </div>
+    </div>
+
+    <hr class="dac-footer-separator"/>
+
+
+      <p class="dac-footer-copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="../../../../../license.html">
+  Content License</a>.
+      </p>
+      <p class="dac-footer-build">
+
+    Android &nbsp;r &mdash;
+<script src="../../../../../timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+      </p>
+
+
+    <p class="dac-footer-links">
+      <a href="/about/index.html">About Android</a>
+      <a href="/auto/index.html">Auto</a>
+      <a href="/tv/index.html">TV</a>
+      <a href="/wear/index.html">Wear</a>
+      <a href="/legal.html">Legal</a>
+
+      <span id="language" class="locales">
+        <select name="language" onchange="changeLangPref(this.value, true)">
+          <option value="en" selected="selected">English</option>
+          <option value="es">Español</option>
+          <option value="ja">日本語</option>
+          <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
+          <option value="ru">Русский</option>
+          <option value="zh-cn">中文(简体)</option>
+          <option value="zh-tw">中文(繁體)</option>
+        </select>
+      </span>
+    </p>
+  </div>
+</div> <!-- end footer -->
+
+<div data-modal="newsletter" data-newsletter data-swap class="dac-modal newsletter">
+  <div class="dac-modal-container">
+    <div class="dac-modal-window">
+      <header class="dac-modal-header">
+        <button class="dac-modal-header-close" data-modal-toggle><i class="dac-sprite dac-close"></i></button>
+        <div class="dac-swap" data-swap-container>
+          <section class="dac-swap-section dac-active dac-down">
+            <h2 class="norule dac-modal-header-title">Get the latest Android developer news and tips that will help you find success on Google Play.</h2>
+            <p class="dac-modal-header-subtitle">&#42; Required Fields</p>
+          </section>
+          <section class="dac-swap-section dac-up">
+            <h2 class="norule dac-modal-header-title">Hooray!</h2>
+          </section>
+        </div>
+      </header>
+      <div class="dac-swap" data-swap-container>
+        <section class="dac-swap-section dac-active dac-left">
+          <form action="https://docs.google.com/forms/d/1QgnkzbEJIDu9lMEea0mxqWrXUJu0oBCLD7ar23V0Yys/formResponse" class="dac-form" method="post" target="dac-newsletter-iframe">
+            <section class="dac-modal-content">
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-full-name" class="dac-form-floatlabel">Full name</label>
+                      <input type="text" class="dac-form-input" name="entry.1357890476" id="newsletter-full-name" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-email" class="dac-form-floatlabel">Email address</label>
+                      <input type="email" class="dac-form-input" name="entry.472100832" id="newsletter-email" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-company" class="dac-form-floatlabel">Company / developer name</label>
+                      <input type="text" class="dac-form-input" name="entry.1664780309" id="newsletter-company">
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-play-store" class="dac-form-floatlabel">One of your Play Store app URLs</label>
+                      <input type="url" class="dac-form-input" name="entry.47013838" id="newsletter-play-store" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <legend class="dac-form-legend">Which best describes your business:<span class="dac-form-required">*</span>
+                    </legend>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-app" required>
+                      <label for="newsletter-business-type-app" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-app" class="dac-form-label">Apps</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-games" required>
+                      <label for="newsletter-business-type-games" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-games" class="dac-form-label">Games</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps and Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-appsgames" required>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-label">Apps &amp; Games</label>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol newsletter-checkboxes">
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.732309842" id="newsletter-add" required value="Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.">
+                          <label for="newsletter-add" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-add" class="dac-form-label dac-form-aside">Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.2045036090" id="newsletter-terms" required value="I acknowledge that the information provided in this form will be subject to Google's privacy policy (https://www.google.com/policies/privacy/).">
+                          <label for="newsletter-terms" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-terms" class="dac-form-label dac-form-aside">I acknowledge that the information provided in this form will be subject to <a href="https://www.google.com/policies/privacy/">Google's privacy policy</a>.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+            </section>
+            <footer class="dac-modal-footer">
+              <div class="cols">
+                <div class="col-2of5">
+                </div>
+              </div>
+              <button type="submit" value="Submit" class="dac-fab dac-primary dac-large dac-modal-action"><i class="dac-sprite dac-arrow-right"></i></button>
+            </footer>
+          </form>
+        </section>
+        <section class="dac-swap-section dac-right">
+          <div class="dac-modal-content">
+            <p class="newsletter-success-message">
+              You have successfully signed up for the latest Android developer news and tips.
+            </p>
+          </div>
+        </section>
+      </div>
+    </div>
+  </div>
+</div> <!-- end footer -->
+
+</div><!-- doc-content -->
+
+</div> <!-- end .cols -->
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/android/support/test/package-summary.html b/docs/html/reference/android/support/test/package-summary.html
index 0ba0e26..8b61541 100644
--- a/docs/html/reference/android/support/test/package-summary.html
+++ b/docs/html/reference/android/support/test/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -674,6 +676,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/rule/ActivityTestRule.html b/docs/html/reference/android/support/test/rule/ActivityTestRule.html
index 6a26bf0..f34e3e9 100644
--- a/docs/html/reference/android/support/test/rule/ActivityTestRule.html
+++ b/docs/html/reference/android/support/test/rule/ActivityTestRule.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -478,6 +478,8 @@
   <a href="../../../../../reference/android/support/test/espresso/web/webdriver/package-summary.html">android.support.test.espresso.web.webdriver</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
     <li class="selected api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
@@ -695,7 +697,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-direct" class="jd-expando-trigger closed"
           ><img id="subclasses-direct-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Direct Subclasses
 
   <div id="subclasses-direct">
@@ -1065,7 +1067,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.rule.UiThreadTestRule" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.rule.UiThreadTestRule-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1146,7 +1148,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1348,7 +1350,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.junit.rules.TestRule" class="jd-expando-trigger closed"
           ><img id="inherited-methods-org.junit.rules.TestRule-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1954,6 +1956,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/rule/DisableOnAndroidDebug.html b/docs/html/reference/android/support/test/rule/DisableOnAndroidDebug.html
index 2ca22ce..a981fe9 100644
--- a/docs/html/reference/android/support/test/rule/DisableOnAndroidDebug.html
+++ b/docs/html/reference/android/support/test/rule/DisableOnAndroidDebug.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -478,6 +478,8 @@
   <a href="../../../../../reference/android/support/test/espresso/web/webdriver/package-summary.html">android.support.test.espresso.web.webdriver</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
     <li class="selected api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
@@ -683,12 +685,10 @@
  disabled when debugging.
  <p>
  The most illustrative use case is for tests that make use of the
- <a href="http://junit.org/apidocs/org/junit/rules/Timeout.html"><code>Timeout</code></a>
- rule, when ran in debug mode the test may terminate on
+ <code><a href="../../../../../reference/org/junit/rules/Timeout.html">Timeout</a></code> rule, when ran in debug mode the test may terminate on
  timeout abruptly during debugging. Developers may disable the timeout, or
  increase the timeout by making a code change on tests that need debugging and
- remember revert the change afterwards or rules such as
- <a href="http://junit.org/apidocs/org/junit/rules/Timeout.html"><code>Timeout</code></a> that
+ remember revert the change afterwards or rules such as <code><a href="../../../../../reference/org/junit/rules/Timeout.html">Timeout</a></code> that
  may be disabled during debugging may be wrapped in a <code>DisableOnDebug</code>.
  <p>
  The important benefit of this feature is that you can disable such rules
@@ -870,7 +870,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1072,7 +1072,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.junit.rules.TestRule" class="jd-expando-trigger closed"
           ><img id="inherited-methods-org.junit.rules.TestRule-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1335,6 +1335,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/rule/ServiceTestRule.html b/docs/html/reference/android/support/test/rule/ServiceTestRule.html
index 185f12b..bbe0c8d 100644
--- a/docs/html/reference/android/support/test/rule/ServiceTestRule.html
+++ b/docs/html/reference/android/support/test/rule/ServiceTestRule.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -478,6 +478,8 @@
   <a href="../../../../../reference/android/support/test/espresso/web/webdriver/package-summary.html">android.support.test.espresso.web.webdriver</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
     <li class="selected api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
@@ -998,7 +1000,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1200,7 +1202,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.junit.rules.TestRule" class="jd-expando-trigger closed"
           ><img id="inherited-methods-org.junit.rules.TestRule-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1737,6 +1739,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/rule/UiThreadTestRule.html b/docs/html/reference/android/support/test/rule/UiThreadTestRule.html
index 8fb3ca0..e58ef8f 100644
--- a/docs/html/reference/android/support/test/rule/UiThreadTestRule.html
+++ b/docs/html/reference/android/support/test/rule/UiThreadTestRule.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -478,6 +478,8 @@
   <a href="../../../../../reference/android/support/test/espresso/web/webdriver/package-summary.html">android.support.test.espresso.web.webdriver</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
     <li class="selected api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
@@ -679,7 +681,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-direct" class="jd-expando-trigger closed"
           ><img id="subclasses-direct-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Direct Subclasses
 
   <div id="subclasses-direct">
@@ -722,7 +724,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
@@ -942,7 +944,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1144,7 +1146,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.junit.rules.TestRule" class="jd-expando-trigger closed"
           ><img id="inherited-methods-org.junit.rules.TestRule-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1457,6 +1459,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/rule/package-summary.html b/docs/html/reference/android/support/test/rule/package-summary.html
index 193c9dd..c0b52a2 100644
--- a/docs/html/reference/android/support/test/rule/package-summary.html
+++ b/docs/html/reference/android/support/test/rule/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
   <a href="../../../../../reference/android/support/test/espresso/web/webdriver/package-summary.html">android.support.test.espresso.web.webdriver</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
     <li class="selected api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
@@ -712,6 +714,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/AndroidJUnit4.html b/docs/html/reference/android/support/test/runner/AndroidJUnit4.html
index e8327c3..79c3c9a 100644
--- a/docs/html/reference/android/support/test/runner/AndroidJUnit4.html
+++ b/docs/html/reference/android/support/test/runner/AndroidJUnit4.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="selected api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -896,7 +898,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.junit.runners.BlockJUnit4ClassRunner" class="jd-expando-trigger closed"
           ><img id="inherited-methods-org.junit.runners.BlockJUnit4ClassRunner-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1338,7 +1340,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.junit.runners.ParentRunner" class="jd-expando-trigger closed"
           ><img id="inherited-methods-org.junit.runners.ParentRunner-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1700,7 +1702,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.junit.runner.Runner" class="jd-expando-trigger closed"
           ><img id="inherited-methods-org.junit.runner.Runner-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1774,7 +1776,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1976,7 +1978,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.junit.runner.Describable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-org.junit.runner.Describable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -2018,7 +2020,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.junit.runner.manipulation.Filterable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-org.junit.runner.manipulation.Filterable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -2060,7 +2062,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.junit.runner.manipulation.Sortable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-org.junit.runner.manipulation.Sortable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -2286,6 +2288,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/AndroidJUnitRunner.html b/docs/html/reference/android/support/test/runner/AndroidJUnitRunner.html
index b52ba0b..f7f4fd3 100644
--- a/docs/html/reference/android/support/test/runner/AndroidJUnitRunner.html
+++ b/docs/html/reference/android/support/test/runner/AndroidJUnitRunner.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="selected api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -751,6 +753,14 @@
  -e class com.android.foo.FooTest,com.android.foo.TooTest
  com.android.foo/android.support.test.runner.AndroidJUnitRunner
  <p/>
+ <b>Running all tests except those in a particular class:</b> adb shell am instrument -w
+ -e notClass com.android.foo.FooTest
+ com.android.foo/android.support.test.runner.AndroidJUnitRunner
+ <p/>
+ <b>Running all but a single test:</b> adb shell am instrument -w
+ -e notClass com.android.foo.FooTest#testFoo
+ com.android.foo/android.support.test.runner.AndroidJUnitRunner
+ <p/>
  <b>Running all tests listed in a file:</b> adb shell am instrument -w
  -e testFile /sdcard/tmp/testFile.txt com.android.foo/com.android.test.runner.AndroidJUnitRunner
  The file should contain a list of line separated test classes and optionally methods (expected
@@ -759,6 +769,10 @@
  <b>Running all tests in a java package:</b> adb shell am instrument -w
  -e package com.android.foo.bar
  com.android.foo/android.support.test.runner.AndroidJUnitRunner
+ <p/>
+ <b>Running all tests except a particular package:</b> adb shell am instrument -w
+ -e notPackage com.android.foo.bar
+ com.android.foo/android.support.test.runner.AndroidJUnitRunner
  <b>To debug your tests, set a break point in your code and pass:</b>
  -e debug true
  <p/>
@@ -802,11 +816,11 @@
  test execution. Useful for quickly obtaining info on the tests to be executed by an
  instrumentation command.
  <p/>
- <b>To generate EMMA code coverage:</b>
+ <b>To generate code coverage files (*.ec) that can be used by EMMA or JaCoCo:</b>
  -e coverage true
- Note: this requires an emma instrumented build. By default, the code coverage results file
- will be saved in a /data/<app>/coverage.ec file, unless overridden by coverageFile flag (see
- below)
+ Note: For this to work, your classes have to be instrumented offline (i.e. at build time) by
+ EMMA/JaCoCo. By default, the code coverage results file will be saved in a
+ /data/data/<app>/files/coverage.ec file, unless overridden by coverageFile flag (see below)
  <p/>
  <b> To specify EMMA code coverage results file path:</b>
  -e coverageFile /sdcard/myFile.ec
@@ -900,7 +914,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.app.Instrumentation" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.app.Instrumentation-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.app.Instrumentation
 <div id="inherited-constants-android.app.Instrumentation">
@@ -1094,7 +1108,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.runner.MonitoringInstrumentation" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.runner.MonitoringInstrumentation-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1534,7 +1548,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.app.Instrumentation" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.app.Instrumentation-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2552,7 +2566,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -3039,6 +3053,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/MonitoringInstrumentation.ActivityFinisher.html b/docs/html/reference/android/support/test/runner/MonitoringInstrumentation.ActivityFinisher.html
index 00ee37e..5eff533 100644
--- a/docs/html/reference/android/support/test/runner/MonitoringInstrumentation.ActivityFinisher.html
+++ b/docs/html/reference/android/support/test/runner/MonitoringInstrumentation.ActivityFinisher.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="selected api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -800,7 +802,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1002,7 +1004,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Runnable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Runnable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1215,6 +1217,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/MonitoringInstrumentation.html b/docs/html/reference/android/support/test/runner/MonitoringInstrumentation.html
index f125789..ed587c3 100644
--- a/docs/html/reference/android/support/test/runner/MonitoringInstrumentation.html
+++ b/docs/html/reference/android/support/test/runner/MonitoringInstrumentation.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="selected api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -696,7 +698,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-direct" class="jd-expando-trigger closed"
           ><img id="subclasses-direct-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Direct Subclasses
 
   <div id="subclasses-direct">
@@ -838,7 +840,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.app.Instrumentation" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.app.Instrumentation-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.app.Instrumentation
 <div id="inherited-constants-android.app.Instrumentation">
@@ -1368,7 +1370,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.app.Instrumentation" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.app.Instrumentation-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2386,7 +2388,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -3480,6 +3482,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/intent/IntentCallback.html b/docs/html/reference/android/support/test/runner/intent/IntentCallback.html
index ac4ed99..f0cdd1f 100644
--- a/docs/html/reference/android/support/test/runner/intent/IntentCallback.html
+++ b/docs/html/reference/android/support/test/runner/intent/IntentCallback.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -856,6 +858,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/intent/IntentMonitor.html b/docs/html/reference/android/support/test/runner/intent/IntentMonitor.html
index 2806bfc..82ab88a 100644
--- a/docs/html/reference/android/support/test/runner/intent/IntentMonitor.html
+++ b/docs/html/reference/android/support/test/runner/intent/IntentMonitor.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -918,6 +920,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/intent/IntentMonitorRegistry.html b/docs/html/reference/android/support/test/runner/intent/IntentMonitorRegistry.html
index 1b27d33..b57307a 100644
--- a/docs/html/reference/android/support/test/runner/intent/IntentMonitorRegistry.html
+++ b/docs/html/reference/android/support/test/runner/intent/IntentMonitorRegistry.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -794,7 +796,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1173,6 +1175,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/intent/IntentStubber.html b/docs/html/reference/android/support/test/runner/intent/IntentStubber.html
index a3b435d..88afd27 100644
--- a/docs/html/reference/android/support/test/runner/intent/IntentStubber.html
+++ b/docs/html/reference/android/support/test/runner/intent/IntentStubber.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -645,7 +647,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
@@ -940,6 +942,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/intent/IntentStubberRegistry.html b/docs/html/reference/android/support/test/runner/intent/IntentStubberRegistry.html
index 674ca2f..f82ddec 100644
--- a/docs/html/reference/android/support/test/runner/intent/IntentStubberRegistry.html
+++ b/docs/html/reference/android/support/test/runner/intent/IntentStubberRegistry.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -833,7 +835,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1290,6 +1292,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/intent/package-summary.html b/docs/html/reference/android/support/test/runner/intent/package-summary.html
index 7e894ff..3a2e149 100644
--- a/docs/html/reference/android/support/test/runner/intent/package-summary.html
+++ b/docs/html/reference/android/support/test/runner/intent/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -737,6 +739,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/lifecycle/ActivityLifecycleCallback.html b/docs/html/reference/android/support/test/runner/lifecycle/ActivityLifecycleCallback.html
index c02e42a..9532bbc 100644
--- a/docs/html/reference/android/support/test/runner/lifecycle/ActivityLifecycleCallback.html
+++ b/docs/html/reference/android/support/test/runner/lifecycle/ActivityLifecycleCallback.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -877,6 +879,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/lifecycle/ActivityLifecycleMonitor.html b/docs/html/reference/android/support/test/runner/lifecycle/ActivityLifecycleMonitor.html
index 8f29fc3..21337f8 100644
--- a/docs/html/reference/android/support/test/runner/lifecycle/ActivityLifecycleMonitor.html
+++ b/docs/html/reference/android/support/test/runner/lifecycle/ActivityLifecycleMonitor.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1139,6 +1141,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/lifecycle/ActivityLifecycleMonitorRegistry.html b/docs/html/reference/android/support/test/runner/lifecycle/ActivityLifecycleMonitorRegistry.html
index a0493ab..def3bc2 100644
--- a/docs/html/reference/android/support/test/runner/lifecycle/ActivityLifecycleMonitorRegistry.html
+++ b/docs/html/reference/android/support/test/runner/lifecycle/ActivityLifecycleMonitorRegistry.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -802,7 +804,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1197,6 +1199,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/lifecycle/ApplicationLifecycleCallback.html b/docs/html/reference/android/support/test/runner/lifecycle/ApplicationLifecycleCallback.html
index 82b5542..a9b859c 100644
--- a/docs/html/reference/android/support/test/runner/lifecycle/ApplicationLifecycleCallback.html
+++ b/docs/html/reference/android/support/test/runner/lifecycle/ApplicationLifecycleCallback.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -880,6 +882,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/lifecycle/ApplicationLifecycleMonitor.html b/docs/html/reference/android/support/test/runner/lifecycle/ApplicationLifecycleMonitor.html
index 98e932d..36e5892 100644
--- a/docs/html/reference/android/support/test/runner/lifecycle/ApplicationLifecycleMonitor.html
+++ b/docs/html/reference/android/support/test/runner/lifecycle/ApplicationLifecycleMonitor.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -942,6 +944,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/lifecycle/ApplicationLifecycleMonitorRegistry.html b/docs/html/reference/android/support/test/runner/lifecycle/ApplicationLifecycleMonitorRegistry.html
index 6e82179..0107635 100644
--- a/docs/html/reference/android/support/test/runner/lifecycle/ApplicationLifecycleMonitorRegistry.html
+++ b/docs/html/reference/android/support/test/runner/lifecycle/ApplicationLifecycleMonitorRegistry.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -802,7 +804,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1197,6 +1199,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/lifecycle/ApplicationStage.html b/docs/html/reference/android/support/test/runner/lifecycle/ApplicationStage.html
index a80c044..5250cc1 100644
--- a/docs/html/reference/android/support/test/runner/lifecycle/ApplicationStage.html
+++ b/docs/html/reference/android/support/test/runner/lifecycle/ApplicationStage.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -856,7 +858,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Enum" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Enum-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1058,7 +1060,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1262,7 +1264,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Comparable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Comparable-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1537,6 +1539,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/lifecycle/Stage.html b/docs/html/reference/android/support/test/runner/lifecycle/Stage.html
index 5063050..8f5fd55 100644
--- a/docs/html/reference/android/support/test/runner/lifecycle/Stage.html
+++ b/docs/html/reference/android/support/test/runner/lifecycle/Stage.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -928,7 +930,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Enum" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Enum-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1130,7 +1132,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1334,7 +1336,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Comparable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Comparable-trigger"
-          src="../../../../../../assets/images/triangle-closed.png"
+          src="../../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1795,6 +1797,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/lifecycle/package-summary.html b/docs/html/reference/android/support/test/runner/lifecycle/package-summary.html
index ddd3255..c8542f3 100644
--- a/docs/html/reference/android/support/test/runner/lifecycle/package-summary.html
+++ b/docs/html/reference/android/support/test/runner/lifecycle/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -787,6 +789,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/runner/package-summary.html b/docs/html/reference/android/support/test/runner/package-summary.html
index 03b1a19..4279c01 100644
--- a/docs/html/reference/android/support/test/runner/package-summary.html
+++ b/docs/html/reference/android/support/test/runner/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="selected api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -712,6 +714,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/By.html b/docs/html/reference/android/support/test/uiautomator/By.html
index e19ca08..9d73c605 100644
--- a/docs/html/reference/android/support/test/uiautomator/By.html
+++ b/docs/html/reference/android/support/test/uiautomator/By.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1536,7 +1538,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -3051,6 +3053,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/BySelector.html b/docs/html/reference/android/support/test/uiautomator/BySelector.html
index 827fedd..2f07225 100644
--- a/docs/html/reference/android/support/test/uiautomator/BySelector.html
+++ b/docs/html/reference/android/support/test/uiautomator/BySelector.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1600,7 +1602,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -3556,6 +3558,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/Configurator.html b/docs/html/reference/android/support/test/uiautomator/Configurator.html
index f14da63..47ffa48 100644
--- a/docs/html/reference/android/support/test/uiautomator/Configurator.html
+++ b/docs/html/reference/android/support/test/uiautomator/Configurator.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1038,7 +1040,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1835,6 +1837,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/Direction.html b/docs/html/reference/android/support/test/uiautomator/Direction.html
index 4046692..6e51748 100644
--- a/docs/html/reference/android/support/test/uiautomator/Direction.html
+++ b/docs/html/reference/android/support/test/uiautomator/Direction.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -915,7 +917,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Enum" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Enum-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1117,7 +1119,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1321,7 +1323,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Comparable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Comparable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -1690,6 +1692,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/EventCondition.html b/docs/html/reference/android/support/test/uiautomator/EventCondition.html
index 9bc1f2d..257e9a9 100644
--- a/docs/html/reference/android/support/test/uiautomator/EventCondition.html
+++ b/docs/html/reference/android/support/test/uiautomator/EventCondition.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -788,7 +790,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1124,6 +1126,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/IAutomationSupport.html b/docs/html/reference/android/support/test/uiautomator/IAutomationSupport.html
index 5aa680c..946be47 100644
--- a/docs/html/reference/android/support/test/uiautomator/IAutomationSupport.html
+++ b/docs/html/reference/android/support/test/uiautomator/IAutomationSupport.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -884,6 +886,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/SearchCondition.html b/docs/html/reference/android/support/test/uiautomator/SearchCondition.html
index 8cb2795..3d31e02 100644
--- a/docs/html/reference/android/support/test/uiautomator/SearchCondition.html
+++ b/docs/html/reference/android/support/test/uiautomator/SearchCondition.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -786,7 +788,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1122,6 +1124,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/StaleObjectException.html b/docs/html/reference/android/support/test/uiautomator/StaleObjectException.html
index 7071ea2..d552032 100644
--- a/docs/html/reference/android/support/test/uiautomator/StaleObjectException.html
+++ b/docs/html/reference/android/support/test/uiautomator/StaleObjectException.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -863,7 +865,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Throwable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Throwable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1097,7 +1099,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1435,6 +1437,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/UiAutomatorInstrumentationTestRunner.html b/docs/html/reference/android/support/test/uiautomator/UiAutomatorInstrumentationTestRunner.html
index 0c9816f..43dd410 100644
--- a/docs/html/reference/android/support/test/uiautomator/UiAutomatorInstrumentationTestRunner.html
+++ b/docs/html/reference/android/support/test/uiautomator/UiAutomatorInstrumentationTestRunner.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -812,7 +814,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.test.InstrumentationTestRunner" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.test.InstrumentationTestRunner-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.test.InstrumentationTestRunner
 <div id="inherited-constants-android.test.InstrumentationTestRunner">
@@ -956,7 +958,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.app.Instrumentation" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.app.Instrumentation-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.app.Instrumentation
 <div id="inherited-constants-android.app.Instrumentation">
@@ -1129,7 +1131,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.test.InstrumentationTestRunner" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.test.InstrumentationTestRunner-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1267,7 +1269,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.app.Instrumentation" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.app.Instrumentation-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2285,7 +2287,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2487,7 +2489,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.test.TestSuiteProvider" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.test.TestSuiteProvider-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -2780,6 +2782,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/UiAutomatorTestCase.html b/docs/html/reference/android/support/test/uiautomator/UiAutomatorTestCase.html
index 20a778f..166e174 100644
--- a/docs/html/reference/android/support/test/uiautomator/UiAutomatorTestCase.html
+++ b/docs/html/reference/android/support/test/uiautomator/UiAutomatorTestCase.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -979,7 +981,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.test.InstrumentationTestCase" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.test.InstrumentationTestCase-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1181,7 +1183,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-junit.framework.TestCase" class="jd-expando-trigger closed"
           ><img id="inherited-methods-junit.framework.TestCase-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1383,7 +1385,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-junit.framework.Assert" class="jd-expando-trigger closed"
           ><img id="inherited-methods-junit.framework.Assert-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2017,7 +2019,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2219,7 +2221,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-junit.framework.Test" class="jd-expando-trigger closed"
           ><img id="inherited-methods-junit.framework.Test-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -2570,6 +2572,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/UiCollection.html b/docs/html/reference/android/support/test/uiautomator/UiCollection.html
index 0604215..5f489d0 100644
--- a/docs/html/reference/android/support/test/uiautomator/UiCollection.html
+++ b/docs/html/reference/android/support/test/uiautomator/UiCollection.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -718,7 +720,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-direct" class="jd-expando-trigger closed"
           ><img id="subclasses-direct-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Direct Subclasses
 
   <div id="subclasses-direct">
@@ -818,7 +820,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.support.test.uiautomator.UiObject" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.support.test.uiautomator.UiObject-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 <a href="../../../../../reference/android/support/test/uiautomator/UiObject.html">android.support.test.uiautomator.UiObject</a>
 <div id="inherited-constants-android.support.test.uiautomator.UiObject">
@@ -1082,7 +1084,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.uiautomator.UiObject" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.uiautomator.UiObject-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2105,7 +2107,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2696,6 +2698,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/UiDevice.html b/docs/html/reference/android/support/test/uiautomator/UiDevice.html
index e110d93..3685972 100644
--- a/docs/html/reference/android/support/test/uiautomator/UiDevice.html
+++ b/docs/html/reference/android/support/test/uiautomator/UiDevice.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -2223,7 +2225,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -5098,6 +5100,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/UiObject.html b/docs/html/reference/android/support/test/uiautomator/UiObject.html
index 42b29d9..f1149dd 100644
--- a/docs/html/reference/android/support/test/uiautomator/UiObject.html
+++ b/docs/html/reference/android/support/test/uiautomator/UiObject.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -698,7 +700,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-direct" class="jd-expando-trigger closed"
           ><img id="subclasses-direct-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Direct Subclasses
 
   <div id="subclasses-direct">
@@ -742,7 +744,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
@@ -1995,7 +1997,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -4925,6 +4927,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/UiObject2.html b/docs/html/reference/android/support/test/uiautomator/UiObject2.html
index 1f7d013..b2195bd 100644
--- a/docs/html/reference/android/support/test/uiautomator/UiObject2.html
+++ b/docs/html/reference/android/support/test/uiautomator/UiObject2.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1833,7 +1835,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -3822,6 +3824,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/UiObject2Condition.html b/docs/html/reference/android/support/test/uiautomator/UiObject2Condition.html
index bcfed1c..99efb28 100644
--- a/docs/html/reference/android/support/test/uiautomator/UiObject2Condition.html
+++ b/docs/html/reference/android/support/test/uiautomator/UiObject2Condition.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -788,7 +790,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1124,6 +1126,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/UiObjectNotFoundException.html b/docs/html/reference/android/support/test/uiautomator/UiObjectNotFoundException.html
index 96bf21d..4548cb8 100644
--- a/docs/html/reference/android/support/test/uiautomator/UiObjectNotFoundException.html
+++ b/docs/html/reference/android/support/test/uiautomator/UiObjectNotFoundException.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -868,7 +870,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Throwable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Throwable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1102,7 +1104,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1504,6 +1506,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/UiScrollable.html b/docs/html/reference/android/support/test/uiautomator/UiScrollable.html
index 669016d..a4a5973 100644
--- a/docs/html/reference/android/support/test/uiautomator/UiScrollable.html
+++ b/docs/html/reference/android/support/test/uiautomator/UiScrollable.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -805,7 +807,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.support.test.uiautomator.UiObject" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.support.test.uiautomator.UiObject-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 <a href="../../../../../reference/android/support/test/uiautomator/UiObject.html">android.support.test.uiautomator.UiObject</a>
 <div id="inherited-constants-android.support.test.uiautomator.UiObject">
@@ -1638,7 +1640,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.uiautomator.UiCollection" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.uiautomator.UiCollection-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1760,7 +1762,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.test.uiautomator.UiObject" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.test.uiautomator.UiObject-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2783,7 +2785,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -4616,6 +4618,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/UiSelector.html b/docs/html/reference/android/support/test/uiautomator/UiSelector.html
index 0268dce..9670a8b 100644
--- a/docs/html/reference/android/support/test/uiautomator/UiSelector.html
+++ b/docs/html/reference/android/support/test/uiautomator/UiSelector.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1508,7 +1510,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -3321,6 +3323,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/UiWatcher.html b/docs/html/reference/android/support/test/uiautomator/UiWatcher.html
index f2edeb6..bd11626 100644
--- a/docs/html/reference/android/support/test/uiautomator/UiWatcher.html
+++ b/docs/html/reference/android/support/test/uiautomator/UiWatcher.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -902,6 +904,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/Until.html b/docs/html/reference/android/support/test/uiautomator/Until.html
index ab45eed..8af2f96 100644
--- a/docs/html/reference/android/support/test/uiautomator/Until.html
+++ b/docs/html/reference/android/support/test/uiautomator/Until.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -479,6 +479,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -1450,7 +1452,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2817,6 +2819,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/test/uiautomator/package-summary.html b/docs/html/reference/android/support/test/uiautomator/package-summary.html
index ed1f728..6ea3ad1 100644
--- a/docs/html/reference/android/support/test/uiautomator/package-summary.html
+++ b/docs/html/reference/android/support/test/uiautomator/package-summary.html
@@ -126,7 +126,7 @@
   var metaTags = [];
   var devsite = false;
 </script>
-<script src="../../../../../assets/js/docs.js?v=5" type="text/javascript"></script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
 
 
 
@@ -480,6 +480,8 @@
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
     <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/test/jank/package-summary.html">android.support.test.jank</a></li>
+    <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
@@ -959,6 +961,7 @@
           <option value="es">Español</option>
           <option value="ja">日本語</option>
           <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
           <option value="ru">Русский</option>
           <option value="zh-cn">中文(简体)</option>
           <option value="zh-tw">中文(繁體)</option>
diff --git a/docs/html/reference/android/support/wearable/R.anim.html b/docs/html/reference/android/support/wearable/R.anim.html
index 8976afe..b1ccafd 100644
--- a/docs/html/reference/android/support/wearable/R.anim.html
+++ b/docs/html/reference/android/support/wearable/R.anim.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -475,10 +480,12 @@
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.animator.html">R.animator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.array.html">R.array</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.attr.html">R.attr</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.layout.html">R.layout</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.string.html">R.string</a></li>
@@ -825,7 +832,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../assets/images/triangle-closed.png"
+          src="../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/R.animator.html b/docs/html/reference/android/support/wearable/R.animator.html
index 7ab63f2..66ee11a 100644
--- a/docs/html/reference/android/support/wearable/R.animator.html
+++ b/docs/html/reference/android/support/wearable/R.animator.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -475,10 +480,12 @@
           <li class="selected api apilevel-"><a href="../../../../reference/android/support/wearable/R.animator.html">R.animator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.array.html">R.array</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.attr.html">R.attr</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.layout.html">R.layout</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.string.html">R.string</a></li>
@@ -761,7 +768,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../assets/images/triangle-closed.png"
+          src="../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/R.array.html b/docs/html/reference/android/support/wearable/R.array.html
new file mode 100644
index 0000000..9ae1f1c
--- /dev/null
+++ b/docs/html/reference/android/support/wearable/R.array.html
@@ -0,0 +1,1281 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta content="IE=edge" http-equiv="X-UA-Compatible">
+
+<link rel="shortcut icon" type="image/x-icon" href="../../../../favicon.ico" />
+<title>R.array | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="http://fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+
+<link href="../../../../assets/css/default.css?v=7" rel="stylesheet" type="text/css">
+
+
+<!-- FULLSCREEN STYLESHEET -->
+<link href="../../../../assets/css/fullscreen.css" rel="stylesheet" class="fullscreen"
+type="text/css">
+
+
+<!-- JAVASCRIPT -->
+<script src="http://www.google.com/jsapi" type="text/javascript"></script>
+<script src="../../../../assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "../../../../";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation 
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div class="dac-header" id="header">
+
+
+
+
+      <div class="dac-header-inner">
+        <a class="dac-nav-toggle" data-dac-toggle-nav href="javascript:;" title="Open navigation">
+          <span class="dac-nav-hamburger">
+            <span class="dac-nav-hamburger-top"></span>
+            <span class="dac-nav-hamburger-mid"></span>
+            <span class="dac-nav-hamburger-bot"></span>
+          </span>
+        </a>
+        <a class="dac-header-logo" href="../../../../index.html">
+          <img class="dac-header-logo-image" src="../../../../assets/images/android_logo.png"
+              srcset="../../../../assets/images/android_logo@2x.png 2x"
+              width="32" height="36" alt="Android" /> Developers
+          </a>
+
+        <ul class="dac-header-crumbs">
+          
+          <li class="dac-header-crumbs-item"><span class="dac-header-crumbs-link current ">R.array</a></li>
+        </ul>
+
+        
+        
+        
+  <div class="dac-header-search" id="search-container">
+    <div class="dac-header-search-inner">
+      <div class="dac-sprite dac-search dac-header-search-btn" id="search-btn"></div>
+      <form class="dac-header-search-form" onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '../../../../')"
+          onkeyup="return search_changed(event, false, '../../../../')"
+          class="dac-header-search-input" placeholder="Search" />
+          <a class="dac-header-search-close hide" id="search-close">close</a>
+      </form>
+    </div><!-- end dac-header-search-inner -->
+  </div><!-- end dac-header-search -->
+
+  <div class="search_filtered_wrapper">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+        
+
+        <a class="dac-header-console-btn" href="https://play.google.com/apps/publish/">
+          <span class="dac-sprite dac-google-play"></span>
+          <span class="dac-visible-desktop-inline">Developer</span>
+          Console
+        </a>
+
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  
+  <!-- Navigation-->
+  <nav class="dac-nav">
+    <div class="dac-nav-dimmer" data-dac-toggle-nav></div>
+
+    <ul class="dac-nav-list" data-dac-nav>
+      <li class="dac-nav-item dac-nav-head">
+        <a class="dac-nav-link dac-nav-logo" data-dac-toggle-nav href="javascript:;" title="Close navigation">
+          <img class="dac-logo-image" src="../../../../assets/images/android_logo.png"
+               srcset="../../../../assets/images/android_logo@2x.png 2x"
+               width="32" height="36" alt="Android" /> Developers
+        </a>
+      </li>
+      <li class="dac-nav-item home">
+        <a class="dac-nav-link dac-visible-mobile-block" href="../../../../index.html">Home</a>
+        <ul class="dac-nav-secondary about">
+          <li class="dac-nav-item about">
+            <a class="dac-nav-link" href="../../../../about/index.html">Android</a>
+          </li>
+          <li class="dac-nav-item wear">
+            <a class="dac-nav-link" href="../../../../wear/index.html">Wear</a>
+          </li>
+          <li class="dac-nav-item tv">
+            <a class="dac-nav-link" href="../../../../tv/index.html">TV</a>
+          </li>
+          <li class="dac-nav-item auto">
+            <a class="dac-nav-link" href="../../../../auto/index.html">Auto</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item design">
+        <a class="dac-nav-link" href="../../../../design/index.html"
+           zh-tw-lang="設計"
+           zh-cn-lang="设计"
+           ru-lang="Проектирование"
+           ko-lang="디자인"
+           ja-lang="設計"
+           es-lang="Diseñar">Design</a>
+      </li>
+      <li class="dac-nav-item develop">
+        <a class="dac-nav-link" href="../../../../develop/index.html"
+           zh-tw-lang="開發"
+           zh-cn-lang="开发"
+           ru-lang="Разработка"
+           ko-lang="개발"
+           ja-lang="開発"
+           es-lang="Desarrollar">Develop</a>
+        <ul class="dac-nav-secondary develop">
+          <li class="dac-nav-item training">
+            <a class="dac-nav-link" href="../../../../training/index.html"
+               zh-tw-lang="訓練課程"
+               zh-cn-lang="培训"
+               ru-lang="Курсы"
+               ko-lang="교육"
+               ja-lang="トレーニング"
+               es-lang="Capacitación">Training</a>
+          </li>
+          <li class="dac-nav-item guide">
+            <a class="dac-nav-link" href="../../../../guide/index.html"
+               zh-tw-lang="API 指南"
+               zh-cn-lang="API 指南"
+               ru-lang="Руководства по API"
+               ko-lang="API 가이드"
+               ja-lang="API ガイド"
+               es-lang="Guías de la API">API Guides</a>
+          </li>
+          <li class="dac-nav-item reference">
+            <a class="dac-nav-link" href="../../../../reference/packages.html"
+               zh-tw-lang="參考資源"
+               zh-cn-lang="参考"
+               ru-lang="Справочник"
+               ko-lang="참조문서"
+               ja-lang="リファレンス"
+               es-lang="Referencia">Reference</a>
+          </li>
+          <li class="dac-nav-item tools">
+            <a class="dac-nav-link" href="../../../../sdk/index.html"
+               zh-tw-lang="相關工具"
+               zh-cn-lang="工具"
+               ru-lang="Инструменты"
+               ko-lang="도구"
+               ja-lang="ツール"
+               es-lang="Herramientas">Tools</a></li>
+          <li class="dac-nav-item google">
+            <a class="dac-nav-link" href="../../../../google/index.html">Google Services</a>
+          </li>
+          
+          <li class="dac-nav-item preview">
+            <a class="dac-nav-link" href="../../../../preview/index.html">Preview</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item distribute">
+        <a class="dac-nav-link" href="../../../../distribute/googleplay/index.html"
+           zh-tw-lang="發佈"
+           zh-cn-lang="分发"
+           ru-lang="Распространение"
+           ko-lang="배포"
+           ja-lang="配布"
+           es-lang="Distribuir">Distribute</a>
+        <ul class="dac-nav-secondary distribute">
+          <li class="dac-nav-item googleplay">
+            <a class="dac-nav-link" href="../../../../distribute/googleplay/index.html">Google Play</a></li>
+          <li class="dac-nav-item essentials">
+            <a class="dac-nav-link" href="../../../../distribute/essentials/index.html">Essentials</a></li>
+          <li class="dac-nav-item users">
+            <a class="dac-nav-link" href="../../../../distribute/users/index.html">Get Users</a></li>
+          <li class="dac-nav-item engage">
+            <a class="dac-nav-link" href="../../../../distribute/engage/index.html">Engage &amp; Retain</a></li>
+          <li class="dac-nav-item monetize">
+            <a class="dac-nav-link" href="../../../../distribute/monetize/index.html">Earn</a>
+          </li>
+          <li class="dac-nav-item analyze">
+            <a class="dac-nav-link" href="../../../../distribute/analyze/index.html">Analyze</a>
+          </li>
+          <li class="dac-nav-item stories">
+            <a class="dac-nav-link" href="../../../../distribute/stories/index.html">Stories</a>
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </nav>
+  <!-- end navigation-->
+  
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content"><div class="cols">
+    <div class="col-4 dac-hidden-mobile" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav">
+      <div id="api-nav-header">
+        <div id="api-level-toggle">
+          <label for="apiLevelCheckbox" class="disabled"
+            title="Select your target API level to dim unavailable APIs">API level: </label>
+          <div class="select-wrapper">
+            <select id="apiLevelSelector">
+              <!-- option elements added by buildApiLevelSelector() -->
+            </select>
+          </div>
+        </div><!-- end toggle -->
+        <div id="api-nav-title">Android APIs</div>
+        </div><!-- end nav header -->
+      <script>
+        var SINCE_DATA = [  ];
+        buildApiLevelSelector();
+      </script>
+
+      <div id="swapper">
+        <div id="nav-panels">
+          <div id="resize-packages-nav">
+            <div id="packages-nav" class="scroll-pane">
+
+              <ul>
+                
+    <li class="selected api apilevel-">
+  <a href="../../../../reference/android/support/wearable/package-summary.html">android.support.wearable</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/activity/package-summary.html">android.support.wearable.activity</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/companion/package-summary.html">android.support.wearable.companion</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/input/package-summary.html">android.support.wearable.input</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/media/package-summary.html">android.support.wearable.media</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/provider/package-summary.html">android.support.wearable.provider</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/view/package-summary.html">android.support.wearable.view</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/watchface/package-summary.html">android.support.wearable.watchface</a></li>
+              </ul><br/>
+
+            </div> <!-- end packages-nav -->
+          </div> <!-- end resize-packages -->
+          <div id="classes-nav" class="scroll-pane">
+
+
+
+            <ul>
+              
+              
+              
+    <li><h2>Classes</h2>
+      <ul>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.html">R</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.anim.html">R.anim</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.animator.html">R.animator</a></li>
+          <li class="selected api apilevel-"><a href="../../../../reference/android/support/wearable/R.array.html">R.array</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.attr.html">R.attr</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.layout.html">R.layout</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.string.html">R.string</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.style.html">R.style</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.styleable.html">R.styleable</a></li>
+      </ul>
+    </li>
+              
+              
+              
+            </ul><br/>
+
+
+          </div><!-- end classes -->
+        </div><!-- end nav-panels -->
+        <div id="nav-tree" style="display:none" class="scroll-pane">
+          <div id="tree-list"></div>
+        </div><!-- end nav-tree -->
+      </div><!-- end swapper -->
+      <div id="nav-swap">
+      <a class="fullscreen">fullscreen</a>
+      <a href='#' onclick='swapNav();return false;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>
+      </div>
+    </div> <!-- end devdoc-nav -->
+    </div> <!-- end side-nav -->
+    <script type="text/javascript">
+      // init fullscreen based on user pref
+      var fullscreen = readCookie("fullscreen");
+      if (fullscreen != 0) {
+        if (fullscreen == "false") {
+          toggleFullscreen(false);
+        } else {
+          toggleFullscreen(true);
+        }
+      }
+      // init nav version for mobile
+      if (isMobile) {
+        swapNav(); // tree view should be used on mobile
+        $('#nav-swap').hide();
+      } else {
+        chooseDefaultNav();
+        if ($("#nav-tree").is(':visible')) {
+          init_default_navtree("../../../../");
+        }
+      }
+      // scroll the selected page into view
+      $(document).ready(function() {
+        scrollIntoView("packages-nav");
+        scrollIntoView("classes-nav");
+        });
+    </script>
+
+     
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+  
+   
+  
+  
+  
+  
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+  <a href="#lfields">Fields</a>
+  
+
+
+
+  &#124; <a href="#pubctors">Ctors</a>
+  
+
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+  
+  
+  
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static 
+    final 
+    
+    class
+<h1 itemprop="name">R.array</h1>
+
+
+
+  
+    extends Object<br/>
+  
+  
+  
+
+  
+  
+  
+
+
+    
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+         	
+        <td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
+    </tr>
+    
+
+    <tr>
+        
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+         	
+        <td colspan="1" class="jd-inheritance-class-cell">android.support.wearable.R.array</td>
+    </tr>
+    
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
+
+
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.array.html#progress_spinner_sequence">progress_spinner_sequence</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+
+</table>
+
+
+
+
+
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
+
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            </nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../reference/android/support/wearable/R.array.html#R.array()">R.array</a></span>()</nobr>
+        
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.Object-trigger"
+          src="../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  java.lang.Object
+
+<div id="inherited-methods-java.lang.Object">
+  <div id="inherited-methods-java.lang.Object-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clone</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">finalize</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            Class&lt;?&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClass</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notify</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notifyAll</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0)</nobr>
+        
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- ========= FIELD DETAIL ======== -->
+<h2>Fields</h2>
+
+
+
+
+<A NAME="progress_spinner_sequence"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        progress_spinner_sequence
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
+
+<!-- Public ctors -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<h2>Public Constructors</h2>
+
+
+
+<A NAME="R.array()"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        
+      </span>
+      <span class="sympad">R.array</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+</div> <!-- jd-content -->
+
+<div class="wrap">
+  <div class="dac-footer">
+    <div class="cols dac-footer-main">
+      <div class="col-1of2">
+        <a class="dac-footer-getnews" data-modal-toggle="newsletter" href="javascript:;">Get news &amp; tips <span
+          class="dac-fab dac-primary"><i class="dac-sprite dac-mail"></i></span></a>
+      </div>
+      <div class="col-1of2 dac-footer-reachout">
+        <div class="dac-footer-contact">
+          <a class="dac-footer-contact-link" href="http://android-developers.blogspot.com/">Blog</a>
+          <a class="dac-footer-contact-link" href="/support.html">Support</a>
+        </div>
+        <div class="dac-footer-social">
+          <a class="dac-fab dac-footer-social-link" href="https://www.youtube.com/user/androiddevelopers"><i class="dac-sprite dac-youtube"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://plus.google.com/+AndroidDevelopers"><i class="dac-sprite dac-gplus"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://twitter.com/AndroidDev"><i class="dac-sprite dac-twitter"></i></a>
+        </div>
+      </div>
+    </div>
+
+    <hr class="dac-footer-separator"/>
+
+    
+      <p class="dac-footer-copyright">
+        
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="../../../../license.html">
+  Content License</a>.
+      </p>
+      <p class="dac-footer-build">
+        
+    Android Wearable Support&nbsp;r &mdash; 
+<script src="../../../../timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+      </p>
+    
+
+    <p class="dac-footer-links">
+      <a href="/about/index.html">About Android</a>
+      <a href="/auto/index.html">Auto</a>
+      <a href="/tv/index.html">TV</a>
+      <a href="/wear/index.html">Wear</a>
+      <a href="/legal.html">Legal</a>
+
+      <span id="language" class="locales">
+        <select name="language" onchange="changeLangPref(this.value, true)">
+          <option value="en" selected="selected">English</option>
+          <option value="es">Español</option>
+          <option value="ja">日本語</option>
+          <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
+          <option value="ru">Русский</option>
+          <option value="zh-cn">中文(简体)</option>
+          <option value="zh-tw">中文(繁體)</option>
+        </select>
+      </span>
+    </p>
+  </div>
+</div> <!-- end footer -->
+
+<div data-modal="newsletter" data-newsletter data-swap class="dac-modal newsletter">
+  <div class="dac-modal-container">
+    <div class="dac-modal-window">
+      <header class="dac-modal-header">
+        <button class="dac-modal-header-close" data-modal-toggle><i class="dac-sprite dac-close"></i></button>
+        <div class="dac-swap" data-swap-container>
+          <section class="dac-swap-section dac-active dac-down">
+            <h2 class="norule dac-modal-header-title">Get the latest Android developer news and tips that will help you find success on Google Play.</h2>
+            <p class="dac-modal-header-subtitle">&#42; Required Fields</p>
+          </section>
+          <section class="dac-swap-section dac-up">
+            <h2 class="norule dac-modal-header-title">Hooray!</h2>
+          </section>
+        </div>
+      </header>
+      <div class="dac-swap" data-swap-container>
+        <section class="dac-swap-section dac-active dac-left">
+          <form action="https://docs.google.com/forms/d/1QgnkzbEJIDu9lMEea0mxqWrXUJu0oBCLD7ar23V0Yys/formResponse" class="dac-form" method="post" target="dac-newsletter-iframe">
+            <section class="dac-modal-content">
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-full-name" class="dac-form-floatlabel">Full name</label>
+                      <input type="text" class="dac-form-input" name="entry.1357890476" id="newsletter-full-name" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-email" class="dac-form-floatlabel">Email address</label>
+                      <input type="email" class="dac-form-input" name="entry.472100832" id="newsletter-email" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-company" class="dac-form-floatlabel">Company / developer name</label>
+                      <input type="text" class="dac-form-input" name="entry.1664780309" id="newsletter-company">
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-play-store" class="dac-form-floatlabel">One of your Play Store app URLs</label>
+                      <input type="url" class="dac-form-input" name="entry.47013838" id="newsletter-play-store" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <legend class="dac-form-legend">Which best describes your business:<span class="dac-form-required">*</span>
+                    </legend>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-app" required>
+                      <label for="newsletter-business-type-app" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-app" class="dac-form-label">Apps</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-games" required>
+                      <label for="newsletter-business-type-games" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-games" class="dac-form-label">Games</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps and Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-appsgames" required>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-label">Apps &amp; Games</label>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol newsletter-checkboxes">
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.732309842" id="newsletter-add" required value="Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.">
+                          <label for="newsletter-add" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-add" class="dac-form-label dac-form-aside">Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.2045036090" id="newsletter-terms" required value="I acknowledge that the information provided in this form will be subject to Google's privacy policy (https://www.google.com/policies/privacy/).">
+                          <label for="newsletter-terms" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-terms" class="dac-form-label dac-form-aside">I acknowledge that the information provided in this form will be subject to <a href="https://www.google.com/policies/privacy/">Google's privacy policy</a>.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+            </section>
+            <footer class="dac-modal-footer">
+              <div class="cols">
+                <div class="col-2of5">
+                </div>
+              </div>
+              <button type="submit" value="Submit" class="dac-fab dac-primary dac-large dac-modal-action"><i class="dac-sprite dac-arrow-right"></i></button>
+            </footer>
+          </form>
+        </section>
+        <section class="dac-swap-section dac-right">
+          <div class="dac-modal-content">
+            <p class="newsletter-success-message">
+              You have successfully signed up for the latest Android developer news and tips.
+            </p>
+          </div>
+        </section>
+      </div>
+    </div>
+  </div>
+</div> <!-- end footer -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end .cols --> 
+</div> <!-- end body-content --> 
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/android/support/wearable/R.attr.html b/docs/html/reference/android/support/wearable/R.attr.html
index 099c981..7c378e0 100644
--- a/docs/html/reference/android/support/wearable/R.attr.html
+++ b/docs/html/reference/android/support/wearable/R.attr.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -475,10 +480,12 @@
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.animator.html">R.animator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.array.html">R.array</a></li>
           <li class="selected api apilevel-"><a href="../../../../reference/android/support/wearable/R.attr.html">R.attr</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.layout.html">R.layout</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.string.html">R.string</a></li>
@@ -797,6 +804,22 @@
           static
           
           int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.attr.html#circle_radius_percent">circle_radius_percent</a></td>
+          <td class="jd-descrcol" width="100%">
+            <p>Must be a fractional value, which is a floating point number appended with either % or %p, such as "<code>14.5%</code>".
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
           <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.attr.html#circle_radius_pressed">circle_radius_pressed</a></td>
           <td class="jd-descrcol" width="100%">
             <p>Must be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
@@ -807,6 +830,22 @@
       </tr>
       
     
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.attr.html#circle_radius_pressed_percent">circle_radius_pressed_percent</a></td>
+          <td class="jd-descrcol" width="100%">
+            <p>Must be a fractional value, which is a floating point number appended with either % or %p, such as "<code>14.5%</code>".
+            
+    
+
+          </td>
+      </tr>
+      
+    
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -1138,6 +1177,22 @@
           static
           
           int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.attr.html#layoutManager">layoutManager</a></td>
+          <td class="jd-descrcol" width="100%">
+            <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
           <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.attr.html#layout_box">layout_box</a></td>
           <td class="jd-descrcol" width="100%">
             <p>Must be one or more (separated by '|') of the following constant values.
@@ -1148,7 +1203,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1164,7 +1219,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1180,7 +1235,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1196,7 +1251,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1212,7 +1267,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1228,7 +1283,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1244,7 +1299,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1260,7 +1315,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1276,7 +1331,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1292,7 +1347,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1308,7 +1363,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1324,7 +1379,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1341,6 +1396,22 @@
       </tr>
       
     
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.attr.html#reverseLayout">reverseLayout</a></td>
+          <td class="jd-descrcol" width="100%">
+            <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
+            
+    
+
+          </td>
+      </tr>
+      
+    
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -1380,6 +1451,54 @@
           static
           
           int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.attr.html#spanCount">spanCount</a></td>
+          <td class="jd-descrcol" width="100%">
+            <p>Must be an integer value, such as "<code>100</code>".
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.attr.html#square_dimen">square_dimen</a></td>
+          <td class="jd-descrcol" width="100%">
+            <p>Must be one of the following constant values.
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.attr.html#stackFromEnd">stackFromEnd</a></td>
+          <td class="jd-descrcol" width="100%">
+            <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
           <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.attr.html#update_interval">update_interval</a></td>
           <td class="jd-descrcol" width="100%">
             <p>Must be an integer value, such as "<code>100</code>".
@@ -1443,7 +1562,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../assets/images/triangle-closed.png"
+          src="../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1900,6 +2019,45 @@
 
 
 
+<A NAME="circle_radius_percent"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        circle_radius_percent
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p><p>Must be a fractional value, which is a floating point number appended with either % or %p, such as "<code>14.5%</code>".
+The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to
+some parent container.
+<p>This may also be a reference to a resource (in the form
+"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
+theme attribute (in the form
+"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
+containing a value of this type.
+</p></div>
+
+    
+    </div>
+</div>
+
+
+
 <A NAME="circle_radius_pressed"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -1939,6 +2097,45 @@
 
 
 
+<A NAME="circle_radius_pressed_percent"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        circle_radius_pressed_percent
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p><p>Must be a fractional value, which is a floating point number appended with either % or %p, such as "<code>14.5%</code>".
+The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to
+some parent container.
+<p>This may also be a reference to a resource (in the form
+"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
+theme attribute (in the form
+"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
+containing a value of this type.
+</p></div>
+
+    
+    </div>
+</div>
+
+
+
 <A NAME="circular_layout_gravity"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -2710,6 +2907,43 @@
 
 
 
+<A NAME="layoutManager"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        layoutManager
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p><p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
+<p>This may also be a reference to a resource (in the form
+"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
+theme attribute (in the form
+"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
+containing a value of this type.
+</p></div>
+
+    
+    </div>
+</div>
+
+
+
 <A NAME="layout_box"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -3228,6 +3462,43 @@
 
 
 
+<A NAME="reverseLayout"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        reverseLayout
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p><p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
+<p>This may also be a reference to a resource (in the form
+"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
+theme attribute (in the form
+"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
+containing a value of this type.
+</p></div>
+
+    
+    </div>
+</div>
+
+
+
 <A NAME="roundLayout"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -3300,6 +3571,121 @@
 
 
 
+<A NAME="spanCount"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        spanCount
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p><p>Must be an integer value, such as "<code>100</code>".
+<p>This may also be a reference to a resource (in the form
+"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
+theme attribute (in the form
+"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
+containing a value of this type.
+</p></div>
+
+    
+    </div>
+</div>
+
+
+
+<A NAME="square_dimen"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        square_dimen
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p><p>Must be one of the following constant values.</p>
+<table>
+<colgroup align="left" />
+<colgroup align="left" />
+<colgroup align="left" />
+<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
+<tr><td><code>none</code></td><td>0</td><td></td></tr>
+<tr><td><code>height</code></td><td>1</td><td></td></tr>
+<tr><td><code>width</code></td><td>2</td><td></td></tr>
+</table>
+</p></div>
+
+    
+    </div>
+</div>
+
+
+
+<A NAME="stackFromEnd"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        stackFromEnd
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p><p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
+<p>This may also be a reference to a resource (in the form
+"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
+theme attribute (in the form
+"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
+containing a value of this type.
+</p></div>
+
+    
+    </div>
+</div>
+
+
+
 <A NAME="update_interval"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/android/support/wearable/R.bool.html b/docs/html/reference/android/support/wearable/R.bool.html
new file mode 100644
index 0000000..dfcf900
--- /dev/null
+++ b/docs/html/reference/android/support/wearable/R.bool.html
@@ -0,0 +1,1281 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta content="IE=edge" http-equiv="X-UA-Compatible">
+
+<link rel="shortcut icon" type="image/x-icon" href="../../../../favicon.ico" />
+<title>R.bool | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="http://fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+
+<link href="../../../../assets/css/default.css?v=7" rel="stylesheet" type="text/css">
+
+
+<!-- FULLSCREEN STYLESHEET -->
+<link href="../../../../assets/css/fullscreen.css" rel="stylesheet" class="fullscreen"
+type="text/css">
+
+
+<!-- JAVASCRIPT -->
+<script src="http://www.google.com/jsapi" type="text/javascript"></script>
+<script src="../../../../assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "../../../../";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation 
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div class="dac-header" id="header">
+
+
+
+
+      <div class="dac-header-inner">
+        <a class="dac-nav-toggle" data-dac-toggle-nav href="javascript:;" title="Open navigation">
+          <span class="dac-nav-hamburger">
+            <span class="dac-nav-hamburger-top"></span>
+            <span class="dac-nav-hamburger-mid"></span>
+            <span class="dac-nav-hamburger-bot"></span>
+          </span>
+        </a>
+        <a class="dac-header-logo" href="../../../../index.html">
+          <img class="dac-header-logo-image" src="../../../../assets/images/android_logo.png"
+              srcset="../../../../assets/images/android_logo@2x.png 2x"
+              width="32" height="36" alt="Android" /> Developers
+          </a>
+
+        <ul class="dac-header-crumbs">
+          
+          <li class="dac-header-crumbs-item"><span class="dac-header-crumbs-link current ">R.bool</a></li>
+        </ul>
+
+        
+        
+        
+  <div class="dac-header-search" id="search-container">
+    <div class="dac-header-search-inner">
+      <div class="dac-sprite dac-search dac-header-search-btn" id="search-btn"></div>
+      <form class="dac-header-search-form" onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '../../../../')"
+          onkeyup="return search_changed(event, false, '../../../../')"
+          class="dac-header-search-input" placeholder="Search" />
+          <a class="dac-header-search-close hide" id="search-close">close</a>
+      </form>
+    </div><!-- end dac-header-search-inner -->
+  </div><!-- end dac-header-search -->
+
+  <div class="search_filtered_wrapper">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+        
+
+        <a class="dac-header-console-btn" href="https://play.google.com/apps/publish/">
+          <span class="dac-sprite dac-google-play"></span>
+          <span class="dac-visible-desktop-inline">Developer</span>
+          Console
+        </a>
+
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  
+  <!-- Navigation-->
+  <nav class="dac-nav">
+    <div class="dac-nav-dimmer" data-dac-toggle-nav></div>
+
+    <ul class="dac-nav-list" data-dac-nav>
+      <li class="dac-nav-item dac-nav-head">
+        <a class="dac-nav-link dac-nav-logo" data-dac-toggle-nav href="javascript:;" title="Close navigation">
+          <img class="dac-logo-image" src="../../../../assets/images/android_logo.png"
+               srcset="../../../../assets/images/android_logo@2x.png 2x"
+               width="32" height="36" alt="Android" /> Developers
+        </a>
+      </li>
+      <li class="dac-nav-item home">
+        <a class="dac-nav-link dac-visible-mobile-block" href="../../../../index.html">Home</a>
+        <ul class="dac-nav-secondary about">
+          <li class="dac-nav-item about">
+            <a class="dac-nav-link" href="../../../../about/index.html">Android</a>
+          </li>
+          <li class="dac-nav-item wear">
+            <a class="dac-nav-link" href="../../../../wear/index.html">Wear</a>
+          </li>
+          <li class="dac-nav-item tv">
+            <a class="dac-nav-link" href="../../../../tv/index.html">TV</a>
+          </li>
+          <li class="dac-nav-item auto">
+            <a class="dac-nav-link" href="../../../../auto/index.html">Auto</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item design">
+        <a class="dac-nav-link" href="../../../../design/index.html"
+           zh-tw-lang="設計"
+           zh-cn-lang="设计"
+           ru-lang="Проектирование"
+           ko-lang="디자인"
+           ja-lang="設計"
+           es-lang="Diseñar">Design</a>
+      </li>
+      <li class="dac-nav-item develop">
+        <a class="dac-nav-link" href="../../../../develop/index.html"
+           zh-tw-lang="開發"
+           zh-cn-lang="开发"
+           ru-lang="Разработка"
+           ko-lang="개발"
+           ja-lang="開発"
+           es-lang="Desarrollar">Develop</a>
+        <ul class="dac-nav-secondary develop">
+          <li class="dac-nav-item training">
+            <a class="dac-nav-link" href="../../../../training/index.html"
+               zh-tw-lang="訓練課程"
+               zh-cn-lang="培训"
+               ru-lang="Курсы"
+               ko-lang="교육"
+               ja-lang="トレーニング"
+               es-lang="Capacitación">Training</a>
+          </li>
+          <li class="dac-nav-item guide">
+            <a class="dac-nav-link" href="../../../../guide/index.html"
+               zh-tw-lang="API 指南"
+               zh-cn-lang="API 指南"
+               ru-lang="Руководства по API"
+               ko-lang="API 가이드"
+               ja-lang="API ガイド"
+               es-lang="Guías de la API">API Guides</a>
+          </li>
+          <li class="dac-nav-item reference">
+            <a class="dac-nav-link" href="../../../../reference/packages.html"
+               zh-tw-lang="參考資源"
+               zh-cn-lang="参考"
+               ru-lang="Справочник"
+               ko-lang="참조문서"
+               ja-lang="リファレンス"
+               es-lang="Referencia">Reference</a>
+          </li>
+          <li class="dac-nav-item tools">
+            <a class="dac-nav-link" href="../../../../sdk/index.html"
+               zh-tw-lang="相關工具"
+               zh-cn-lang="工具"
+               ru-lang="Инструменты"
+               ko-lang="도구"
+               ja-lang="ツール"
+               es-lang="Herramientas">Tools</a></li>
+          <li class="dac-nav-item google">
+            <a class="dac-nav-link" href="../../../../google/index.html">Google Services</a>
+          </li>
+          
+          <li class="dac-nav-item preview">
+            <a class="dac-nav-link" href="../../../../preview/index.html">Preview</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item distribute">
+        <a class="dac-nav-link" href="../../../../distribute/googleplay/index.html"
+           zh-tw-lang="發佈"
+           zh-cn-lang="分发"
+           ru-lang="Распространение"
+           ko-lang="배포"
+           ja-lang="配布"
+           es-lang="Distribuir">Distribute</a>
+        <ul class="dac-nav-secondary distribute">
+          <li class="dac-nav-item googleplay">
+            <a class="dac-nav-link" href="../../../../distribute/googleplay/index.html">Google Play</a></li>
+          <li class="dac-nav-item essentials">
+            <a class="dac-nav-link" href="../../../../distribute/essentials/index.html">Essentials</a></li>
+          <li class="dac-nav-item users">
+            <a class="dac-nav-link" href="../../../../distribute/users/index.html">Get Users</a></li>
+          <li class="dac-nav-item engage">
+            <a class="dac-nav-link" href="../../../../distribute/engage/index.html">Engage &amp; Retain</a></li>
+          <li class="dac-nav-item monetize">
+            <a class="dac-nav-link" href="../../../../distribute/monetize/index.html">Earn</a>
+          </li>
+          <li class="dac-nav-item analyze">
+            <a class="dac-nav-link" href="../../../../distribute/analyze/index.html">Analyze</a>
+          </li>
+          <li class="dac-nav-item stories">
+            <a class="dac-nav-link" href="../../../../distribute/stories/index.html">Stories</a>
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </nav>
+  <!-- end navigation-->
+  
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content"><div class="cols">
+    <div class="col-4 dac-hidden-mobile" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav">
+      <div id="api-nav-header">
+        <div id="api-level-toggle">
+          <label for="apiLevelCheckbox" class="disabled"
+            title="Select your target API level to dim unavailable APIs">API level: </label>
+          <div class="select-wrapper">
+            <select id="apiLevelSelector">
+              <!-- option elements added by buildApiLevelSelector() -->
+            </select>
+          </div>
+        </div><!-- end toggle -->
+        <div id="api-nav-title">Android APIs</div>
+        </div><!-- end nav header -->
+      <script>
+        var SINCE_DATA = [  ];
+        buildApiLevelSelector();
+      </script>
+
+      <div id="swapper">
+        <div id="nav-panels">
+          <div id="resize-packages-nav">
+            <div id="packages-nav" class="scroll-pane">
+
+              <ul>
+                
+    <li class="selected api apilevel-">
+  <a href="../../../../reference/android/support/wearable/package-summary.html">android.support.wearable</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/activity/package-summary.html">android.support.wearable.activity</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/companion/package-summary.html">android.support.wearable.companion</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/input/package-summary.html">android.support.wearable.input</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/media/package-summary.html">android.support.wearable.media</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/provider/package-summary.html">android.support.wearable.provider</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/view/package-summary.html">android.support.wearable.view</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/watchface/package-summary.html">android.support.wearable.watchface</a></li>
+              </ul><br/>
+
+            </div> <!-- end packages-nav -->
+          </div> <!-- end resize-packages -->
+          <div id="classes-nav" class="scroll-pane">
+
+
+
+            <ul>
+              
+              
+              
+    <li><h2>Classes</h2>
+      <ul>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.html">R</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.anim.html">R.anim</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.animator.html">R.animator</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.array.html">R.array</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.attr.html">R.attr</a></li>
+          <li class="selected api apilevel-"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.layout.html">R.layout</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.string.html">R.string</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.style.html">R.style</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.styleable.html">R.styleable</a></li>
+      </ul>
+    </li>
+              
+              
+              
+            </ul><br/>
+
+
+          </div><!-- end classes -->
+        </div><!-- end nav-panels -->
+        <div id="nav-tree" style="display:none" class="scroll-pane">
+          <div id="tree-list"></div>
+        </div><!-- end nav-tree -->
+      </div><!-- end swapper -->
+      <div id="nav-swap">
+      <a class="fullscreen">fullscreen</a>
+      <a href='#' onclick='swapNav();return false;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>
+      </div>
+    </div> <!-- end devdoc-nav -->
+    </div> <!-- end side-nav -->
+    <script type="text/javascript">
+      // init fullscreen based on user pref
+      var fullscreen = readCookie("fullscreen");
+      if (fullscreen != 0) {
+        if (fullscreen == "false") {
+          toggleFullscreen(false);
+        } else {
+          toggleFullscreen(true);
+        }
+      }
+      // init nav version for mobile
+      if (isMobile) {
+        swapNav(); // tree view should be used on mobile
+        $('#nav-swap').hide();
+      } else {
+        chooseDefaultNav();
+        if ($("#nav-tree").is(':visible')) {
+          init_default_navtree("../../../../");
+        }
+      }
+      // scroll the selected page into view
+      $(document).ready(function() {
+        scrollIntoView("packages-nav");
+        scrollIntoView("classes-nav");
+        });
+    </script>
+
+     
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+  
+   
+  
+  
+  
+  
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+  <a href="#lfields">Fields</a>
+  
+
+
+
+  &#124; <a href="#pubctors">Ctors</a>
+  
+
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+  
+  
+  
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static 
+    final 
+    
+    class
+<h1 itemprop="name">R.bool</h1>
+
+
+
+  
+    extends Object<br/>
+  
+  
+  
+
+  
+  
+  
+
+
+    
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+         	
+        <td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
+    </tr>
+    
+
+    <tr>
+        
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+         	
+        <td colspan="1" class="jd-inheritance-class-cell">android.support.wearable.R.bool</td>
+    </tr>
+    
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
+
+
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.bool.html#action_choose_expand_selected">action_choose_expand_selected</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+
+</table>
+
+
+
+
+
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
+
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            </nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../reference/android/support/wearable/R.bool.html#R.bool()">R.bool</a></span>()</nobr>
+        
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.Object-trigger"
+          src="../../../../assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  java.lang.Object
+
+<div id="inherited-methods-java.lang.Object">
+  <div id="inherited-methods-java.lang.Object-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clone</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">finalize</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            Class&lt;?&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClass</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notify</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notifyAll</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0)</nobr>
+        
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- ========= FIELD DETAIL ======== -->
+<h2>Fields</h2>
+
+
+
+
+<A NAME="action_choose_expand_selected"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        action_choose_expand_selected
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
+
+<!-- Public ctors -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<h2>Public Constructors</h2>
+
+
+
+<A NAME="R.bool()"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        
+      </span>
+      <span class="sympad">R.bool</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+</div> <!-- jd-content -->
+
+<div class="wrap">
+  <div class="dac-footer">
+    <div class="cols dac-footer-main">
+      <div class="col-1of2">
+        <a class="dac-footer-getnews" data-modal-toggle="newsletter" href="javascript:;">Get news &amp; tips <span
+          class="dac-fab dac-primary"><i class="dac-sprite dac-mail"></i></span></a>
+      </div>
+      <div class="col-1of2 dac-footer-reachout">
+        <div class="dac-footer-contact">
+          <a class="dac-footer-contact-link" href="http://android-developers.blogspot.com/">Blog</a>
+          <a class="dac-footer-contact-link" href="/support.html">Support</a>
+        </div>
+        <div class="dac-footer-social">
+          <a class="dac-fab dac-footer-social-link" href="https://www.youtube.com/user/androiddevelopers"><i class="dac-sprite dac-youtube"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://plus.google.com/+AndroidDevelopers"><i class="dac-sprite dac-gplus"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://twitter.com/AndroidDev"><i class="dac-sprite dac-twitter"></i></a>
+        </div>
+      </div>
+    </div>
+
+    <hr class="dac-footer-separator"/>
+
+    
+      <p class="dac-footer-copyright">
+        
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="../../../../license.html">
+  Content License</a>.
+      </p>
+      <p class="dac-footer-build">
+        
+    Android Wearable Support&nbsp;r &mdash; 
+<script src="../../../../timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+      </p>
+    
+
+    <p class="dac-footer-links">
+      <a href="/about/index.html">About Android</a>
+      <a href="/auto/index.html">Auto</a>
+      <a href="/tv/index.html">TV</a>
+      <a href="/wear/index.html">Wear</a>
+      <a href="/legal.html">Legal</a>
+
+      <span id="language" class="locales">
+        <select name="language" onchange="changeLangPref(this.value, true)">
+          <option value="en" selected="selected">English</option>
+          <option value="es">Español</option>
+          <option value="ja">日本語</option>
+          <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
+          <option value="ru">Русский</option>
+          <option value="zh-cn">中文(简体)</option>
+          <option value="zh-tw">中文(繁體)</option>
+        </select>
+      </span>
+    </p>
+  </div>
+</div> <!-- end footer -->
+
+<div data-modal="newsletter" data-newsletter data-swap class="dac-modal newsletter">
+  <div class="dac-modal-container">
+    <div class="dac-modal-window">
+      <header class="dac-modal-header">
+        <button class="dac-modal-header-close" data-modal-toggle><i class="dac-sprite dac-close"></i></button>
+        <div class="dac-swap" data-swap-container>
+          <section class="dac-swap-section dac-active dac-down">
+            <h2 class="norule dac-modal-header-title">Get the latest Android developer news and tips that will help you find success on Google Play.</h2>
+            <p class="dac-modal-header-subtitle">&#42; Required Fields</p>
+          </section>
+          <section class="dac-swap-section dac-up">
+            <h2 class="norule dac-modal-header-title">Hooray!</h2>
+          </section>
+        </div>
+      </header>
+      <div class="dac-swap" data-swap-container>
+        <section class="dac-swap-section dac-active dac-left">
+          <form action="https://docs.google.com/forms/d/1QgnkzbEJIDu9lMEea0mxqWrXUJu0oBCLD7ar23V0Yys/formResponse" class="dac-form" method="post" target="dac-newsletter-iframe">
+            <section class="dac-modal-content">
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-full-name" class="dac-form-floatlabel">Full name</label>
+                      <input type="text" class="dac-form-input" name="entry.1357890476" id="newsletter-full-name" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-email" class="dac-form-floatlabel">Email address</label>
+                      <input type="email" class="dac-form-input" name="entry.472100832" id="newsletter-email" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-company" class="dac-form-floatlabel">Company / developer name</label>
+                      <input type="text" class="dac-form-input" name="entry.1664780309" id="newsletter-company">
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-play-store" class="dac-form-floatlabel">One of your Play Store app URLs</label>
+                      <input type="url" class="dac-form-input" name="entry.47013838" id="newsletter-play-store" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <legend class="dac-form-legend">Which best describes your business:<span class="dac-form-required">*</span>
+                    </legend>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-app" required>
+                      <label for="newsletter-business-type-app" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-app" class="dac-form-label">Apps</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-games" required>
+                      <label for="newsletter-business-type-games" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-games" class="dac-form-label">Games</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps and Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-appsgames" required>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-label">Apps &amp; Games</label>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol newsletter-checkboxes">
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.732309842" id="newsletter-add" required value="Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.">
+                          <label for="newsletter-add" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-add" class="dac-form-label dac-form-aside">Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.2045036090" id="newsletter-terms" required value="I acknowledge that the information provided in this form will be subject to Google's privacy policy (https://www.google.com/policies/privacy/).">
+                          <label for="newsletter-terms" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-terms" class="dac-form-label dac-form-aside">I acknowledge that the information provided in this form will be subject to <a href="https://www.google.com/policies/privacy/">Google's privacy policy</a>.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+            </section>
+            <footer class="dac-modal-footer">
+              <div class="cols">
+                <div class="col-2of5">
+                </div>
+              </div>
+              <button type="submit" value="Submit" class="dac-fab dac-primary dac-large dac-modal-action"><i class="dac-sprite dac-arrow-right"></i></button>
+            </footer>
+          </form>
+        </section>
+        <section class="dac-swap-section dac-right">
+          <div class="dac-modal-content">
+            <p class="newsletter-success-message">
+              You have successfully signed up for the latest Android developer news and tips.
+            </p>
+          </div>
+        </section>
+      </div>
+    </div>
+  </div>
+</div> <!-- end footer -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end .cols --> 
+</div> <!-- end body-content --> 
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/android/support/wearable/R.color.html b/docs/html/reference/android/support/wearable/R.color.html
index 07b5e0c..e88a8be 100644
--- a/docs/html/reference/android/support/wearable/R.color.html
+++ b/docs/html/reference/android/support/wearable/R.color.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -475,10 +480,12 @@
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.animator.html">R.animator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.array.html">R.array</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.attr.html">R.attr</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></li>
           <li class="selected api apilevel-"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.layout.html">R.layout</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.string.html">R.string</a></li>
@@ -714,7 +721,7 @@
           static
           
           int</nobr></td>
-          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.color.html#black">black</a></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.color.html#ambient_mode_text">ambient_mode_text</a></td>
           <td class="jd-descrcol" width="100%">
             
             
@@ -730,6 +737,22 @@
           static
           
           int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.color.html#black">black</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
           <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.color.html#black_54p">black_54p</a></td>
           <td class="jd-descrcol" width="100%">
             
@@ -740,7 +763,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -756,7 +779,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -772,7 +795,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -788,12 +811,44 @@
       </tr>
       
     
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.color.html#card_grey_text_color">card_grey_text_color</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
           
           int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.color.html#card_text_color">card_text_color</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
           <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.color.html#circular_button">circular_button</a></td>
           <td class="jd-descrcol" width="100%">
             
@@ -804,7 +859,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -820,7 +875,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -836,7 +891,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -852,7 +907,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -868,7 +923,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -884,7 +939,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -900,7 +955,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -916,7 +971,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -932,7 +987,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -948,7 +1003,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -964,7 +1019,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -980,7 +1035,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -996,7 +1051,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1012,7 +1067,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1028,7 +1083,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1044,7 +1099,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1060,7 +1115,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1076,7 +1131,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1092,7 +1147,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1108,7 +1163,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1124,7 +1179,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1140,7 +1195,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1209,7 +1264,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../assets/images/triangle-closed.png"
+          src="../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1469,6 +1524,37 @@
 
 
 
+<A NAME="ambient_mode_text"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        ambient_mode_text
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
 <A NAME="black"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -1624,6 +1710,68 @@
 
 
 
+<A NAME="card_grey_text_color"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        card_grey_text_color
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
+<A NAME="card_text_color"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        card_text_color
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
 <A NAME="circular_button"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/android/support/wearable/R.dimen.html b/docs/html/reference/android/support/wearable/R.dimen.html
index 215b2b3..4b666e5 100644
--- a/docs/html/reference/android/support/wearable/R.dimen.html
+++ b/docs/html/reference/android/support/wearable/R.dimen.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -475,10 +480,12 @@
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.animator.html">R.animator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.array.html">R.array</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.attr.html">R.attr</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></li>
           <li class="selected api apilevel-"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.layout.html">R.layout</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.string.html">R.string</a></li>
@@ -698,6 +705,102 @@
           static
           
           int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.dimen.html#action_chooser_base_radius_percent">action_chooser_base_radius_percent</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.dimen.html#action_chooser_bounce_in_percent">action_chooser_bounce_in_percent</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.dimen.html#action_chooser_icon_height_percent">action_chooser_icon_height_percent</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.dimen.html#action_chooser_max_radius_percent">action_chooser_max_radius_percent</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.dimen.html#action_chooser_min_drag_select_percent">action_chooser_min_drag_select_percent</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.dimen.html#action_chooser_min_swipe_select_percent">action_chooser_min_swipe_select_percent</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
           <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.dimen.html#card_content_padding_rect_top">card_content_padding_rect_top</a></td>
           <td class="jd-descrcol" width="100%">
             
@@ -948,6 +1051,22 @@
       </tr>
       
     
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.dimen.html#item_touch_helper_max_drag_scroll_per_frame">item_touch_helper_max_drag_scroll_per_frame</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
 
 </table>
 
@@ -1001,7 +1120,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../assets/images/triangle-closed.png"
+          src="../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1230,6 +1349,192 @@
 
 
 
+<A NAME="action_chooser_base_radius_percent"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        action_chooser_base_radius_percent
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
+<A NAME="action_chooser_bounce_in_percent"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        action_chooser_bounce_in_percent
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
+<A NAME="action_chooser_icon_height_percent"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        action_chooser_icon_height_percent
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
+<A NAME="action_chooser_max_radius_percent"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        action_chooser_max_radius_percent
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
+<A NAME="action_chooser_min_drag_select_percent"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        action_chooser_min_drag_select_percent
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
+<A NAME="action_chooser_min_swipe_select_percent"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        action_chooser_min_swipe_select_percent
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
 <A NAME="card_content_padding_rect_top"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -1726,6 +2031,37 @@
 
 
 
+<A NAME="item_touch_helper_max_drag_scroll_per_frame"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        item_touch_helper_max_drag_scroll_per_frame
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
 
 <!-- Public ctors -->
 
diff --git a/docs/html/reference/android/support/wearable/R.drawable.html b/docs/html/reference/android/support/wearable/R.drawable.html
index c83cd2e..3f10f14 100644
--- a/docs/html/reference/android/support/wearable/R.drawable.html
+++ b/docs/html/reference/android/support/wearable/R.drawable.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -475,10 +480,12 @@
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.animator.html">R.animator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.array.html">R.array</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.attr.html">R.attr</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></li>
           <li class="selected api apilevel-"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.layout.html">R.layout</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.string.html">R.string</a></li>
@@ -905,7 +912,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../assets/images/triangle-closed.png"
+          src="../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/R.html b/docs/html/reference/android/support/wearable/R.html
index 714f287..699c861 100644
--- a/docs/html/reference/android/support/wearable/R.html
+++ b/docs/html/reference/android/support/wearable/R.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -475,10 +480,12 @@
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.animator.html">R.animator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.array.html">R.array</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.attr.html">R.attr</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.layout.html">R.layout</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.string.html">R.string</a></li>
@@ -752,7 +759,7 @@
          
         
         class</nobr></td>
-      <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></td>
+      <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></td>
       <td class="jd-descrcol" width="100%">
         &nbsp;
         
@@ -769,7 +776,7 @@
          
         
         class</nobr></td>
-      <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></td>
+      <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></td>
       <td class="jd-descrcol" width="100%">
         &nbsp;
         
@@ -786,7 +793,7 @@
          
         
         class</nobr></td>
-      <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></td>
+      <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></td>
       <td class="jd-descrcol" width="100%">
         &nbsp;
         
@@ -803,6 +810,23 @@
          
         
         class</nobr></td>
+      <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></td>
+      <td class="jd-descrcol" width="100%">
+        &nbsp;
+        
+    
+
+      </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+      <td class="jd-typecol"><nobr>
+        
+         
+         
+        
+        class</nobr></td>
       <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></td>
       <td class="jd-descrcol" width="100%">
         &nbsp;
@@ -813,6 +837,23 @@
     </tr>
     
     
+    <tr class=" api apilevel-" >
+      <td class="jd-typecol"><nobr>
+        
+         
+         
+        
+        class</nobr></td>
+      <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></td>
+      <td class="jd-descrcol" width="100%">
+        &nbsp;
+        
+    
+
+      </td>
+    </tr>
+    
+    
     <tr class="alt-color api apilevel-" >
       <td class="jd-typecol"><nobr>
         
@@ -965,7 +1006,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../assets/images/triangle-closed.png"
+          src="../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/R.id.html b/docs/html/reference/android/support/wearable/R.id.html
index c6bad3b..0c8180e 100644
--- a/docs/html/reference/android/support/wearable/R.id.html
+++ b/docs/html/reference/android/support/wearable/R.id.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -475,10 +480,12 @@
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.animator.html">R.animator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.array.html">R.array</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.attr.html">R.attr</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></li>
           <li class="selected api apilevel-"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.layout.html">R.layout</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.string.html">R.string</a></li>
@@ -970,6 +977,38 @@
           static
           
           int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.id.html#height">height</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.id.html#item_touch_helper_previous_elevation">item_touch_helper_previous_elevation</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
           <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.id.html#left">left</a></td>
           <td class="jd-descrcol" width="100%">
             
@@ -1002,7 +1041,7 @@
           static
           
           int</nobr></td>
-          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.id.html#parentPanel">parentPanel</a></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.id.html#none">none</a></td>
           <td class="jd-descrcol" width="100%">
             
             
@@ -1018,6 +1057,22 @@
           static
           
           int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.id.html#parentPanel">parentPanel</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
           <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.id.html#right">right</a></td>
           <td class="jd-descrcol" width="100%">
             
@@ -1028,7 +1083,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1044,7 +1099,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1060,7 +1115,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1076,7 +1131,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1092,6 +1147,22 @@
       </tr>
       
     
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.id.html#width">width</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
 
 </table>
 
@@ -1145,7 +1216,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../assets/images/triangle-closed.png"
+          src="../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1901,6 +1972,68 @@
 
 
 
+<A NAME="height"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        height
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
+<A NAME="item_touch_helper_previous_elevation"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        item_touch_helper_previous_elevation
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
 <A NAME="left"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -1963,6 +2096,37 @@
 
 
 
+<A NAME="none"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        none
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
 <A NAME="parentPanel"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -2149,6 +2313,37 @@
 
 
 
+<A NAME="width"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        width
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
 
 <!-- Public ctors -->
 
diff --git a/docs/html/reference/android/support/wearable/R.integer.html b/docs/html/reference/android/support/wearable/R.integer.html
new file mode 100644
index 0000000..0760a16
--- /dev/null
+++ b/docs/html/reference/android/support/wearable/R.integer.html
@@ -0,0 +1,1422 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta content="IE=edge" http-equiv="X-UA-Compatible">
+
+<link rel="shortcut icon" type="image/x-icon" href="../../../../favicon.ico" />
+<title>R.integer | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="http://fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+
+<link href="../../../../assets/css/default.css?v=7" rel="stylesheet" type="text/css">
+
+
+<!-- FULLSCREEN STYLESHEET -->
+<link href="../../../../assets/css/fullscreen.css" rel="stylesheet" class="fullscreen"
+type="text/css">
+
+
+<!-- JAVASCRIPT -->
+<script src="http://www.google.com/jsapi" type="text/javascript"></script>
+<script src="../../../../assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "../../../../";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation 
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div class="dac-header" id="header">
+
+
+
+
+      <div class="dac-header-inner">
+        <a class="dac-nav-toggle" data-dac-toggle-nav href="javascript:;" title="Open navigation">
+          <span class="dac-nav-hamburger">
+            <span class="dac-nav-hamburger-top"></span>
+            <span class="dac-nav-hamburger-mid"></span>
+            <span class="dac-nav-hamburger-bot"></span>
+          </span>
+        </a>
+        <a class="dac-header-logo" href="../../../../index.html">
+          <img class="dac-header-logo-image" src="../../../../assets/images/android_logo.png"
+              srcset="../../../../assets/images/android_logo@2x.png 2x"
+              width="32" height="36" alt="Android" /> Developers
+          </a>
+
+        <ul class="dac-header-crumbs">
+          
+          <li class="dac-header-crumbs-item"><span class="dac-header-crumbs-link current ">R.integer</a></li>
+        </ul>
+
+        
+        
+        
+  <div class="dac-header-search" id="search-container">
+    <div class="dac-header-search-inner">
+      <div class="dac-sprite dac-search dac-header-search-btn" id="search-btn"></div>
+      <form class="dac-header-search-form" onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '../../../../')"
+          onkeyup="return search_changed(event, false, '../../../../')"
+          class="dac-header-search-input" placeholder="Search" />
+          <a class="dac-header-search-close hide" id="search-close">close</a>
+      </form>
+    </div><!-- end dac-header-search-inner -->
+  </div><!-- end dac-header-search -->
+
+  <div class="search_filtered_wrapper">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+        
+
+        <a class="dac-header-console-btn" href="https://play.google.com/apps/publish/">
+          <span class="dac-sprite dac-google-play"></span>
+          <span class="dac-visible-desktop-inline">Developer</span>
+          Console
+        </a>
+
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  
+  <!-- Navigation-->
+  <nav class="dac-nav">
+    <div class="dac-nav-dimmer" data-dac-toggle-nav></div>
+
+    <ul class="dac-nav-list" data-dac-nav>
+      <li class="dac-nav-item dac-nav-head">
+        <a class="dac-nav-link dac-nav-logo" data-dac-toggle-nav href="javascript:;" title="Close navigation">
+          <img class="dac-logo-image" src="../../../../assets/images/android_logo.png"
+               srcset="../../../../assets/images/android_logo@2x.png 2x"
+               width="32" height="36" alt="Android" /> Developers
+        </a>
+      </li>
+      <li class="dac-nav-item home">
+        <a class="dac-nav-link dac-visible-mobile-block" href="../../../../index.html">Home</a>
+        <ul class="dac-nav-secondary about">
+          <li class="dac-nav-item about">
+            <a class="dac-nav-link" href="../../../../about/index.html">Android</a>
+          </li>
+          <li class="dac-nav-item wear">
+            <a class="dac-nav-link" href="../../../../wear/index.html">Wear</a>
+          </li>
+          <li class="dac-nav-item tv">
+            <a class="dac-nav-link" href="../../../../tv/index.html">TV</a>
+          </li>
+          <li class="dac-nav-item auto">
+            <a class="dac-nav-link" href="../../../../auto/index.html">Auto</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item design">
+        <a class="dac-nav-link" href="../../../../design/index.html"
+           zh-tw-lang="設計"
+           zh-cn-lang="设计"
+           ru-lang="Проектирование"
+           ko-lang="디자인"
+           ja-lang="設計"
+           es-lang="Diseñar">Design</a>
+      </li>
+      <li class="dac-nav-item develop">
+        <a class="dac-nav-link" href="../../../../develop/index.html"
+           zh-tw-lang="開發"
+           zh-cn-lang="开发"
+           ru-lang="Разработка"
+           ko-lang="개발"
+           ja-lang="開発"
+           es-lang="Desarrollar">Develop</a>
+        <ul class="dac-nav-secondary develop">
+          <li class="dac-nav-item training">
+            <a class="dac-nav-link" href="../../../../training/index.html"
+               zh-tw-lang="訓練課程"
+               zh-cn-lang="培训"
+               ru-lang="Курсы"
+               ko-lang="교육"
+               ja-lang="トレーニング"
+               es-lang="Capacitación">Training</a>
+          </li>
+          <li class="dac-nav-item guide">
+            <a class="dac-nav-link" href="../../../../guide/index.html"
+               zh-tw-lang="API 指南"
+               zh-cn-lang="API 指南"
+               ru-lang="Руководства по API"
+               ko-lang="API 가이드"
+               ja-lang="API ガイド"
+               es-lang="Guías de la API">API Guides</a>
+          </li>
+          <li class="dac-nav-item reference">
+            <a class="dac-nav-link" href="../../../../reference/packages.html"
+               zh-tw-lang="參考資源"
+               zh-cn-lang="参考"
+               ru-lang="Справочник"
+               ko-lang="참조문서"
+               ja-lang="リファレンス"
+               es-lang="Referencia">Reference</a>
+          </li>
+          <li class="dac-nav-item tools">
+            <a class="dac-nav-link" href="../../../../sdk/index.html"
+               zh-tw-lang="相關工具"
+               zh-cn-lang="工具"
+               ru-lang="Инструменты"
+               ko-lang="도구"
+               ja-lang="ツール"
+               es-lang="Herramientas">Tools</a></li>
+          <li class="dac-nav-item google">
+            <a class="dac-nav-link" href="../../../../google/index.html">Google Services</a>
+          </li>
+          
+          <li class="dac-nav-item preview">
+            <a class="dac-nav-link" href="../../../../preview/index.html">Preview</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item distribute">
+        <a class="dac-nav-link" href="../../../../distribute/googleplay/index.html"
+           zh-tw-lang="發佈"
+           zh-cn-lang="分发"
+           ru-lang="Распространение"
+           ko-lang="배포"
+           ja-lang="配布"
+           es-lang="Distribuir">Distribute</a>
+        <ul class="dac-nav-secondary distribute">
+          <li class="dac-nav-item googleplay">
+            <a class="dac-nav-link" href="../../../../distribute/googleplay/index.html">Google Play</a></li>
+          <li class="dac-nav-item essentials">
+            <a class="dac-nav-link" href="../../../../distribute/essentials/index.html">Essentials</a></li>
+          <li class="dac-nav-item users">
+            <a class="dac-nav-link" href="../../../../distribute/users/index.html">Get Users</a></li>
+          <li class="dac-nav-item engage">
+            <a class="dac-nav-link" href="../../../../distribute/engage/index.html">Engage &amp; Retain</a></li>
+          <li class="dac-nav-item monetize">
+            <a class="dac-nav-link" href="../../../../distribute/monetize/index.html">Earn</a>
+          </li>
+          <li class="dac-nav-item analyze">
+            <a class="dac-nav-link" href="../../../../distribute/analyze/index.html">Analyze</a>
+          </li>
+          <li class="dac-nav-item stories">
+            <a class="dac-nav-link" href="../../../../distribute/stories/index.html">Stories</a>
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </nav>
+  <!-- end navigation-->
+  
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content"><div class="cols">
+    <div class="col-4 dac-hidden-mobile" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav">
+      <div id="api-nav-header">
+        <div id="api-level-toggle">
+          <label for="apiLevelCheckbox" class="disabled"
+            title="Select your target API level to dim unavailable APIs">API level: </label>
+          <div class="select-wrapper">
+            <select id="apiLevelSelector">
+              <!-- option elements added by buildApiLevelSelector() -->
+            </select>
+          </div>
+        </div><!-- end toggle -->
+        <div id="api-nav-title">Android APIs</div>
+        </div><!-- end nav header -->
+      <script>
+        var SINCE_DATA = [  ];
+        buildApiLevelSelector();
+      </script>
+
+      <div id="swapper">
+        <div id="nav-panels">
+          <div id="resize-packages-nav">
+            <div id="packages-nav" class="scroll-pane">
+
+              <ul>
+                
+    <li class="selected api apilevel-">
+  <a href="../../../../reference/android/support/wearable/package-summary.html">android.support.wearable</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/activity/package-summary.html">android.support.wearable.activity</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/companion/package-summary.html">android.support.wearable.companion</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/input/package-summary.html">android.support.wearable.input</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/media/package-summary.html">android.support.wearable.media</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/provider/package-summary.html">android.support.wearable.provider</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/view/package-summary.html">android.support.wearable.view</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../reference/android/support/wearable/watchface/package-summary.html">android.support.wearable.watchface</a></li>
+              </ul><br/>
+
+            </div> <!-- end packages-nav -->
+          </div> <!-- end resize-packages -->
+          <div id="classes-nav" class="scroll-pane">
+
+
+
+            <ul>
+              
+              
+              
+    <li><h2>Classes</h2>
+      <ul>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.html">R</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.anim.html">R.anim</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.animator.html">R.animator</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.array.html">R.array</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.attr.html">R.attr</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></li>
+          <li class="selected api apilevel-"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.layout.html">R.layout</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.string.html">R.string</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.style.html">R.style</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.styleable.html">R.styleable</a></li>
+      </ul>
+    </li>
+              
+              
+              
+            </ul><br/>
+
+
+          </div><!-- end classes -->
+        </div><!-- end nav-panels -->
+        <div id="nav-tree" style="display:none" class="scroll-pane">
+          <div id="tree-list"></div>
+        </div><!-- end nav-tree -->
+      </div><!-- end swapper -->
+      <div id="nav-swap">
+      <a class="fullscreen">fullscreen</a>
+      <a href='#' onclick='swapNav();return false;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>
+      </div>
+    </div> <!-- end devdoc-nav -->
+    </div> <!-- end side-nav -->
+    <script type="text/javascript">
+      // init fullscreen based on user pref
+      var fullscreen = readCookie("fullscreen");
+      if (fullscreen != 0) {
+        if (fullscreen == "false") {
+          toggleFullscreen(false);
+        } else {
+          toggleFullscreen(true);
+        }
+      }
+      // init nav version for mobile
+      if (isMobile) {
+        swapNav(); // tree view should be used on mobile
+        $('#nav-swap').hide();
+      } else {
+        chooseDefaultNav();
+        if ($("#nav-tree").is(':visible')) {
+          init_default_navtree("../../../../");
+        }
+      }
+      // scroll the selected page into view
+      $(document).ready(function() {
+        scrollIntoView("packages-nav");
+        scrollIntoView("classes-nav");
+        });
+    </script>
+
+     
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+  
+   
+  
+  
+  
+  
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+  <a href="#lfields">Fields</a>
+  
+
+
+
+  &#124; <a href="#pubctors">Ctors</a>
+  
+
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+  
+  
+  
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static 
+    final 
+    
+    class
+<h1 itemprop="name">R.integer</h1>
+
+
+
+  
+    extends Object<br/>
+  
+  
+  
+
+  
+  
+  
+
+
+    
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+         	
+        <td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
+    </tr>
+    
+
+    <tr>
+        
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+         	
+        <td colspan="1" class="jd-inheritance-class-cell">android.support.wearable.R.integer</td>
+    </tr>
+    
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
+
+
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.integer.html#action_choose_expand_full_duration">action_choose_expand_full_duration</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.integer.html#action_chooser_anim_duration">action_chooser_anim_duration</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.integer.html#action_chooser_bounce_delay">action_chooser_bounce_delay</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.integer.html#action_chooser_confirmation_duration">action_chooser_confirmation_duration</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+
+</table>
+
+
+
+
+
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
+
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            </nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../reference/android/support/wearable/R.integer.html#R.integer()">R.integer</a></span>()</nobr>
+        
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.Object-trigger"
+          src="../../../../assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  java.lang.Object
+
+<div id="inherited-methods-java.lang.Object">
+  <div id="inherited-methods-java.lang.Object-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clone</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">finalize</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            Class&lt;?&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClass</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notify</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notifyAll</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0)</nobr>
+        
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- ========= FIELD DETAIL ======== -->
+<h2>Fields</h2>
+
+
+
+
+<A NAME="action_choose_expand_full_duration"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        action_choose_expand_full_duration
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
+<A NAME="action_chooser_anim_duration"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        action_chooser_anim_duration
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
+<A NAME="action_chooser_bounce_delay"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        action_chooser_bounce_delay
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
+<A NAME="action_chooser_confirmation_duration"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        action_chooser_confirmation_duration
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
+
+<!-- Public ctors -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<h2>Public Constructors</h2>
+
+
+
+<A NAME="R.integer()"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        
+      </span>
+      <span class="sympad">R.integer</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+</div> <!-- jd-content -->
+
+<div class="wrap">
+  <div class="dac-footer">
+    <div class="cols dac-footer-main">
+      <div class="col-1of2">
+        <a class="dac-footer-getnews" data-modal-toggle="newsletter" href="javascript:;">Get news &amp; tips <span
+          class="dac-fab dac-primary"><i class="dac-sprite dac-mail"></i></span></a>
+      </div>
+      <div class="col-1of2 dac-footer-reachout">
+        <div class="dac-footer-contact">
+          <a class="dac-footer-contact-link" href="http://android-developers.blogspot.com/">Blog</a>
+          <a class="dac-footer-contact-link" href="/support.html">Support</a>
+        </div>
+        <div class="dac-footer-social">
+          <a class="dac-fab dac-footer-social-link" href="https://www.youtube.com/user/androiddevelopers"><i class="dac-sprite dac-youtube"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://plus.google.com/+AndroidDevelopers"><i class="dac-sprite dac-gplus"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://twitter.com/AndroidDev"><i class="dac-sprite dac-twitter"></i></a>
+        </div>
+      </div>
+    </div>
+
+    <hr class="dac-footer-separator"/>
+
+    
+      <p class="dac-footer-copyright">
+        
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="../../../../license.html">
+  Content License</a>.
+      </p>
+      <p class="dac-footer-build">
+        
+    Android Wearable Support&nbsp;r &mdash; 
+<script src="../../../../timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+      </p>
+    
+
+    <p class="dac-footer-links">
+      <a href="/about/index.html">About Android</a>
+      <a href="/auto/index.html">Auto</a>
+      <a href="/tv/index.html">TV</a>
+      <a href="/wear/index.html">Wear</a>
+      <a href="/legal.html">Legal</a>
+
+      <span id="language" class="locales">
+        <select name="language" onchange="changeLangPref(this.value, true)">
+          <option value="en" selected="selected">English</option>
+          <option value="es">Español</option>
+          <option value="ja">日本語</option>
+          <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
+          <option value="ru">Русский</option>
+          <option value="zh-cn">中文(简体)</option>
+          <option value="zh-tw">中文(繁體)</option>
+        </select>
+      </span>
+    </p>
+  </div>
+</div> <!-- end footer -->
+
+<div data-modal="newsletter" data-newsletter data-swap class="dac-modal newsletter">
+  <div class="dac-modal-container">
+    <div class="dac-modal-window">
+      <header class="dac-modal-header">
+        <button class="dac-modal-header-close" data-modal-toggle><i class="dac-sprite dac-close"></i></button>
+        <div class="dac-swap" data-swap-container>
+          <section class="dac-swap-section dac-active dac-down">
+            <h2 class="norule dac-modal-header-title">Get the latest Android developer news and tips that will help you find success on Google Play.</h2>
+            <p class="dac-modal-header-subtitle">&#42; Required Fields</p>
+          </section>
+          <section class="dac-swap-section dac-up">
+            <h2 class="norule dac-modal-header-title">Hooray!</h2>
+          </section>
+        </div>
+      </header>
+      <div class="dac-swap" data-swap-container>
+        <section class="dac-swap-section dac-active dac-left">
+          <form action="https://docs.google.com/forms/d/1QgnkzbEJIDu9lMEea0mxqWrXUJu0oBCLD7ar23V0Yys/formResponse" class="dac-form" method="post" target="dac-newsletter-iframe">
+            <section class="dac-modal-content">
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-full-name" class="dac-form-floatlabel">Full name</label>
+                      <input type="text" class="dac-form-input" name="entry.1357890476" id="newsletter-full-name" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-email" class="dac-form-floatlabel">Email address</label>
+                      <input type="email" class="dac-form-input" name="entry.472100832" id="newsletter-email" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-company" class="dac-form-floatlabel">Company / developer name</label>
+                      <input type="text" class="dac-form-input" name="entry.1664780309" id="newsletter-company">
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-play-store" class="dac-form-floatlabel">One of your Play Store app URLs</label>
+                      <input type="url" class="dac-form-input" name="entry.47013838" id="newsletter-play-store" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <legend class="dac-form-legend">Which best describes your business:<span class="dac-form-required">*</span>
+                    </legend>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-app" required>
+                      <label for="newsletter-business-type-app" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-app" class="dac-form-label">Apps</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-games" required>
+                      <label for="newsletter-business-type-games" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-games" class="dac-form-label">Games</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps and Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-appsgames" required>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-label">Apps &amp; Games</label>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol newsletter-checkboxes">
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.732309842" id="newsletter-add" required value="Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.">
+                          <label for="newsletter-add" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-add" class="dac-form-label dac-form-aside">Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.2045036090" id="newsletter-terms" required value="I acknowledge that the information provided in this form will be subject to Google's privacy policy (https://www.google.com/policies/privacy/).">
+                          <label for="newsletter-terms" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-terms" class="dac-form-label dac-form-aside">I acknowledge that the information provided in this form will be subject to <a href="https://www.google.com/policies/privacy/">Google's privacy policy</a>.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+            </section>
+            <footer class="dac-modal-footer">
+              <div class="cols">
+                <div class="col-2of5">
+                </div>
+              </div>
+              <button type="submit" value="Submit" class="dac-fab dac-primary dac-large dac-modal-action"><i class="dac-sprite dac-arrow-right"></i></button>
+            </footer>
+          </form>
+        </section>
+        <section class="dac-swap-section dac-right">
+          <div class="dac-modal-content">
+            <p class="newsletter-success-message">
+              You have successfully signed up for the latest Android developer news and tips.
+            </p>
+          </div>
+        </section>
+      </div>
+    </div>
+  </div>
+</div> <!-- end footer -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end .cols --> 
+</div> <!-- end body-content --> 
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/android/support/wearable/R.interpolator.html b/docs/html/reference/android/support/wearable/R.interpolator.html
index 01391a8..5d7904e 100644
--- a/docs/html/reference/android/support/wearable/R.interpolator.html
+++ b/docs/html/reference/android/support/wearable/R.interpolator.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -475,10 +480,12 @@
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.animator.html">R.animator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.array.html">R.array</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.attr.html">R.attr</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></li>
           <li class="selected api apilevel-"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.layout.html">R.layout</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.string.html">R.string</a></li>
@@ -841,7 +848,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../assets/images/triangle-closed.png"
+          src="../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/R.layout.html b/docs/html/reference/android/support/wearable/R.layout.html
index 4987ba7..d9446c5 100644
--- a/docs/html/reference/android/support/wearable/R.layout.html
+++ b/docs/html/reference/android/support/wearable/R.layout.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -475,10 +480,12 @@
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.animator.html">R.animator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.array.html">R.array</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.attr.html">R.attr</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></li>
           <li class="selected api apilevel-"><a href="../../../../reference/android/support/wearable/R.layout.html">R.layout</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.string.html">R.string</a></li>
@@ -809,7 +816,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../assets/images/triangle-closed.png"
+          src="../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/R.string.html b/docs/html/reference/android/support/wearable/R.string.html
index c8707ef..493b855 100644
--- a/docs/html/reference/android/support/wearable/R.string.html
+++ b/docs/html/reference/android/support/wearable/R.string.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -475,10 +480,12 @@
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.animator.html">R.animator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.array.html">R.array</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.attr.html">R.attr</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.layout.html">R.layout</a></li>
           <li class="selected api apilevel-"><a href="../../../../reference/android/support/wearable/R.string.html">R.string</a></li>
@@ -761,7 +768,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../assets/images/triangle-closed.png"
+          src="../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/R.style.html b/docs/html/reference/android/support/wearable/R.style.html
index 38ce308..ace43f1 100644
--- a/docs/html/reference/android/support/wearable/R.style.html
+++ b/docs/html/reference/android/support/wearable/R.style.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -475,10 +480,12 @@
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.animator.html">R.animator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.array.html">R.array</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.attr.html">R.attr</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.layout.html">R.layout</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.string.html">R.string</a></li>
@@ -714,6 +721,22 @@
           static
           
           int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.style.html#CardTextBase">CardTextBase</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
           <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.style.html#CardTitle">CardTitle</a></td>
           <td class="jd-descrcol" width="100%">
             
@@ -724,6 +747,22 @@
       </tr>
       
     
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.style.html#CardTitleBase">CardTitleBase</a></td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -1145,7 +1184,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../assets/images/triangle-closed.png"
+          src="../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1405,6 +1444,37 @@
 
 
 
+<A NAME="CardTextBase"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        CardTextBase
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
 <A NAME="CardTitle"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -1436,6 +1506,37 @@
 
 
 
+<A NAME="CardTitleBase"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        CardTitleBase
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    
+    </div>
+</div>
+
+
+
 <A NAME="DismissOverlayText"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/android/support/wearable/R.styleable.html b/docs/html/reference/android/support/wearable/R.styleable.html
index e43e070..5e6db9c 100644
--- a/docs/html/reference/android/support/wearable/R.styleable.html
+++ b/docs/html/reference/android/support/wearable/R.styleable.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -475,10 +480,12 @@
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.animator.html">R.animator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.array.html">R.array</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.attr.html">R.attr</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></li>
+          <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.layout.html">R.layout</a></li>
           <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.string.html">R.string</a></li>
@@ -1374,6 +1381,23 @@
           static
           
           int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_radius_percent">CircledImageView_circle_radius_percent</a></td>
+          <td class="jd-descrcol" width="100%">
+            <p>This symbol is the offset where the <code><a href="../../../../reference/android/support/wearable/R.attr.html#circle_radius_percent">circle_radius_percent</a></code>
+          attribute's value can be found in the <code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView">CircledImageView</a></code> array.
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
           <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_radius_pressed">CircledImageView_circle_radius_pressed</a></td>
           <td class="jd-descrcol" width="100%">
             <p>This symbol is the offset where the <code><a href="../../../../reference/android/support/wearable/R.attr.html#circle_radius_pressed">circle_radius_pressed</a></code>
@@ -1385,6 +1409,23 @@
       </tr>
       
     
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_radius_pressed_percent">CircledImageView_circle_radius_pressed_percent</a></td>
+          <td class="jd-descrcol" width="100%">
+            <p>This symbol is the offset where the <code><a href="../../../../reference/android/support/wearable/R.attr.html#circle_radius_pressed_percent">circle_radius_pressed_percent</a></code>
+          attribute's value can be found in the <code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView">CircledImageView</a></code> array.
+            
+    
+
+          </td>
+      </tr>
+      
+    
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -1457,6 +1498,23 @@
           <td class="jd-typecol"><nobr>
           public
           static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_square_dimen">CircledImageView_square_dimen</a></td>
+          <td class="jd-descrcol" width="100%">
+            <p>This symbol is the offset where the <code><a href="../../../../reference/android/support/wearable/R.attr.html#square_dimen">square_dimen</a></code>
+          attribute's value can be found in the <code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView">CircledImageView</a></code> array.
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
           final
           int[]</nobr></td>
           <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.styleable.html#CircularButton">CircularButton</a></td>
@@ -1469,7 +1527,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1486,7 +1544,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1503,7 +1561,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1520,7 +1578,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1537,7 +1595,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1554,7 +1612,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1571,7 +1629,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1588,7 +1646,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1604,7 +1662,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1621,7 +1679,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1637,7 +1695,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1654,7 +1712,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1671,7 +1729,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1688,7 +1746,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1705,7 +1763,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1722,7 +1780,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1739,7 +1797,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1756,7 +1814,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1773,7 +1831,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1790,7 +1848,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1807,7 +1865,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1824,7 +1882,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1841,7 +1899,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1858,7 +1916,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1874,7 +1932,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1891,10 +1949,111 @@
       </tr>
       
     
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView">RecyclerView</a></td>
+          <td class="jd-descrcol" width="100%">
+            Attributes that can be used with a RecyclerView.
+            
+    
+
+          </td>
+      </tr>
+      
+    
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView_android_orientation">RecyclerView_android_orientation</a></td>
+          <td class="jd-descrcol" width="100%">
+            <p>This symbol is the offset where the <code><a href="../../../../reference/android/R.attr.html#orientation">orientation</a></code>
+          attribute's value can be found in the <code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView">RecyclerView</a></code> array.
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView_layoutManager">RecyclerView_layoutManager</a></td>
+          <td class="jd-descrcol" width="100%">
+            <p>This symbol is the offset where the <code><a href="../../../../reference/android/support/wearable/R.attr.html#layoutManager">layoutManager</a></code>
+          attribute's value can be found in the <code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView">RecyclerView</a></code> array.
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView_reverseLayout">RecyclerView_reverseLayout</a></td>
+          <td class="jd-descrcol" width="100%">
+            <p>This symbol is the offset where the <code><a href="../../../../reference/android/support/wearable/R.attr.html#reverseLayout">reverseLayout</a></code>
+          attribute's value can be found in the <code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView">RecyclerView</a></code> array.
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView_spanCount">RecyclerView_spanCount</a></td>
+          <td class="jd-descrcol" width="100%">
+            <p>This symbol is the offset where the <code><a href="../../../../reference/android/support/wearable/R.attr.html#spanCount">spanCount</a></code>
+          attribute's value can be found in the <code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView">RecyclerView</a></code> array.
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          
+          int</nobr></td>
+          <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView_stackFromEnd">RecyclerView_stackFromEnd</a></td>
+          <td class="jd-descrcol" width="100%">
+            <p>This symbol is the offset where the <code><a href="../../../../reference/android/support/wearable/R.attr.html#stackFromEnd">stackFromEnd</a></code>
+          attribute's value can be found in the <code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView">RecyclerView</a></code> array.
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
           final
           int[]</nobr></td>
           <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.styleable.html#WatchViewStub">WatchViewStub</a></td>
@@ -1907,7 +2066,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1924,7 +2083,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1941,7 +2100,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1957,7 +2116,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1974,7 +2133,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1991,7 +2150,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -2008,7 +2167,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -2025,7 +2184,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -2042,7 +2201,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -2059,7 +2218,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -2076,7 +2235,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -2093,7 +2252,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -2110,7 +2269,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -2127,7 +2286,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -2144,7 +2303,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -2161,7 +2320,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -2177,7 +2336,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -2194,7 +2353,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -2264,7 +2423,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../assets/images/triangle-closed.png"
+          src="../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -3725,15 +3884,18 @@
            <tr><td><code><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_color">android.support.wearable:circle_color</a></code></code></td><td></td></tr>
            <tr><td><code><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_padding">android.support.wearable:circle_padding</a></code></code></td><td></td></tr>
            <tr><td><code><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_radius">android.support.wearable:circle_radius</a></code></code></td><td></td></tr>
+           <tr><td><code><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_radius_percent">android.support.wearable:circle_radius_percent</a></code></code></td><td></td></tr>
            <tr><td><code><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_radius_pressed">android.support.wearable:circle_radius_pressed</a></code></code></td><td></td></tr>
+           <tr><td><code><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_radius_pressed_percent">android.support.wearable:circle_radius_pressed_percent</a></code></code></td><td></td></tr>
            <tr><td><code><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_image_circle_percentage">android.support.wearable:image_circle_percentage</a></code></code></td><td></td></tr>
            <tr><td><code><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_image_horizontal_offcenter_percentage">android.support.wearable:image_horizontal_offcenter_percentage</a></code></code></td><td></td></tr>
            <tr><td><code><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_image_tint">android.support.wearable:image_tint</a></code></code></td><td></td></tr>
            <tr><td><code><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_shadow_width">android.support.wearable:shadow_width</a></code></code></td><td></td></tr>
+           <tr><td><code><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_square_dimen">android.support.wearable:square_dimen</a></code></code></td><td></td></tr>
            </table></p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">See Also</h5>
-      <ul class="nolist"><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_android_src">CircledImageView_android_src</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_border_color">CircledImageView_circle_border_color</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_border_width">CircledImageView_circle_border_width</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_color">CircledImageView_circle_color</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_padding">CircledImageView_circle_padding</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_radius">CircledImageView_circle_radius</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_radius_pressed">CircledImageView_circle_radius_pressed</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_image_circle_percentage">CircledImageView_image_circle_percentage</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_image_horizontal_offcenter_percentage">CircledImageView_image_horizontal_offcenter_percentage</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_image_tint">CircledImageView_image_tint</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_shadow_width">CircledImageView_shadow_width</a></code></li>
+      <ul class="nolist"><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_android_src">CircledImageView_android_src</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_border_color">CircledImageView_circle_border_color</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_border_width">CircledImageView_circle_border_width</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_color">CircledImageView_circle_color</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_padding">CircledImageView_circle_padding</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_radius">CircledImageView_circle_radius</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_radius_percent">CircledImageView_circle_radius_percent</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_radius_pressed">CircledImageView_circle_radius_pressed</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_circle_radius_pressed_percent">CircledImageView_circle_radius_pressed_percent</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_image_circle_percentage">CircledImageView_image_circle_percentage</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_image_horizontal_offcenter_percentage">CircledImageView_image_horizontal_offcenter_percentage</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_image_tint">CircledImageView_image_tint</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_shadow_width">CircledImageView_shadow_width</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView_square_dimen">CircledImageView_square_dimen</a></code></li>
       </ul>
   </div>
 
@@ -3983,6 +4145,48 @@
 
 
 
+<A NAME="CircledImageView_circle_radius_percent"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        CircledImageView_circle_radius_percent
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="../../../../reference/android/support/wearable/R.attr.html#circle_radius_percent">circle_radius_percent</a></code>
+          attribute's value can be found in the <code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView">CircledImageView</a></code> array.
+
+
+          <p>Must be a fractional value, which is a floating point number appended with either % or %p, such as "<code>14.5%</code>".
+The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to
+some parent container.
+<p>This may also be a reference to a resource (in the form
+"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
+theme attribute (in the form
+"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
+containing a value of this type.</p></div>
+
+    
+    </div>
+</div>
+
+
+
 <A NAME="CircledImageView_circle_radius_pressed"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -4025,6 +4229,48 @@
 
 
 
+<A NAME="CircledImageView_circle_radius_pressed_percent"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        CircledImageView_circle_radius_pressed_percent
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="../../../../reference/android/support/wearable/R.attr.html#circle_radius_pressed_percent">circle_radius_pressed_percent</a></code>
+          attribute's value can be found in the <code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView">CircledImageView</a></code> array.
+
+
+          <p>Must be a fractional value, which is a floating point number appended with either % or %p, such as "<code>14.5%</code>".
+The % suffix always means a percentage of the base size; the optional %p suffix provides a size relative to
+some parent container.
+<p>This may also be a reference to a resource (in the form
+"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
+theme attribute (in the form
+"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
+containing a value of this type.</p></div>
+
+    
+    </div>
+</div>
+
+
+
 <A NAME="CircledImageView_image_circle_percentage"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -4192,6 +4438,50 @@
 
 
 
+<A NAME="CircledImageView_square_dimen"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        CircledImageView_square_dimen
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="../../../../reference/android/support/wearable/R.attr.html#square_dimen">square_dimen</a></code>
+          attribute's value can be found in the <code><a href="../../../../reference/android/support/wearable/R.styleable.html#CircledImageView">CircledImageView</a></code> array.
+
+
+          <p>Must be one of the following constant values.</p>
+<table>
+<colgroup align="left" />
+<colgroup align="left" />
+<colgroup align="left" />
+<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
+<tr><td><code>none</code></td><td>0</td><td></td></tr>
+<tr><td><code>height</code></td><td>1</td><td></td></tr>
+<tr><td><code>width</code></td><td>2</td><td></td></tr>
+</table></p></div>
+
+    
+    </div>
+</div>
+
+
+
 <A NAME="CircularButton"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -5246,6 +5536,245 @@
 
 
 
+<A NAME="RecyclerView"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+        final 
+        int[]
+      </span>
+        RecyclerView
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Attributes that can be used with a RecyclerView.
+           <p>Includes the following attributes:</p>
+           <table>
+           <colgroup align="left" />
+           <colgroup align="left" />
+           <tr><th>Attribute</th><th>Description</th></tr>
+           <tr><td><code><code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView_android_orientation">android:orientation</a></code></code></td><td></td></tr>
+           <tr><td><code><code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView_layoutManager">android.support.wearable:layoutManager</a></code></code></td><td></td></tr>
+           <tr><td><code><code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView_reverseLayout">android.support.wearable:reverseLayout</a></code></code></td><td></td></tr>
+           <tr><td><code><code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView_spanCount">android.support.wearable:spanCount</a></code></code></td><td></td></tr>
+           <tr><td><code><code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView_stackFromEnd">android.support.wearable:stackFromEnd</a></code></code></td><td></td></tr>
+           </table></p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">See Also</h5>
+      <ul class="nolist"><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView_android_orientation">RecyclerView_android_orientation</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView_layoutManager">RecyclerView_layoutManager</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView_reverseLayout">RecyclerView_reverseLayout</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView_spanCount">RecyclerView_spanCount</a></code></li><li><code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView_stackFromEnd">RecyclerView_stackFromEnd</a></code></li>
+      </ul>
+  </div>
+
+    
+    </div>
+</div>
+
+
+
+<A NAME="RecyclerView_android_orientation"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        RecyclerView_android_orientation
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="../../../../reference/android/R.attr.html#orientation">orientation</a></code>
+          attribute's value can be found in the <code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView">RecyclerView</a></code> array.</p></div>
+
+    
+    </div>
+</div>
+
+
+
+<A NAME="RecyclerView_layoutManager"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        RecyclerView_layoutManager
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="../../../../reference/android/support/wearable/R.attr.html#layoutManager">layoutManager</a></code>
+          attribute's value can be found in the <code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView">RecyclerView</a></code> array.
+
+
+          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
+<p>This may also be a reference to a resource (in the form
+"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
+theme attribute (in the form
+"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
+containing a value of this type.</p></div>
+
+    
+    </div>
+</div>
+
+
+
+<A NAME="RecyclerView_reverseLayout"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        RecyclerView_reverseLayout
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="../../../../reference/android/support/wearable/R.attr.html#reverseLayout">reverseLayout</a></code>
+          attribute's value can be found in the <code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView">RecyclerView</a></code> array.
+
+
+          <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
+<p>This may also be a reference to a resource (in the form
+"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
+theme attribute (in the form
+"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
+containing a value of this type.</p></div>
+
+    
+    </div>
+</div>
+
+
+
+<A NAME="RecyclerView_spanCount"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        RecyclerView_spanCount
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="../../../../reference/android/support/wearable/R.attr.html#spanCount">spanCount</a></code>
+          attribute's value can be found in the <code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView">RecyclerView</a></code> array.
+
+
+          <p>Must be an integer value, such as "<code>100</code>".
+<p>This may also be a reference to a resource (in the form
+"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
+theme attribute (in the form
+"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
+containing a value of this type.</p></div>
+
+    
+    </div>
+</div>
+
+
+
+<A NAME="RecyclerView_stackFromEnd"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+         
+        int
+      </span>
+        RecyclerView_stackFromEnd
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="../../../../reference/android/support/wearable/R.attr.html#stackFromEnd">stackFromEnd</a></code>
+          attribute's value can be found in the <code><a href="../../../../reference/android/support/wearable/R.styleable.html#RecyclerView">RecyclerView</a></code> array.
+
+
+          <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
+<p>This may also be a reference to a resource (in the form
+"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
+theme attribute (in the form
+"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
+containing a value of this type.</p></div>
+
+    
+    </div>
+</div>
+
+
+
 <A NAME="WatchViewStub"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/android/support/wearable/activity/ConfirmationActivity.html b/docs/html/reference/android/support/wearable/activity/ConfirmationActivity.html
index 92bfeca..74941ee 100644
--- a/docs/html/reference/android/support/wearable/activity/ConfirmationActivity.html
+++ b/docs/html/reference/android/support/wearable/activity/ConfirmationActivity.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -940,7 +945,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.app.Activity" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.app.Activity-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.app.Activity
 <div id="inherited-constants-android.app.Activity">
@@ -1064,7 +1069,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.content.Context" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.content.Context-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.content.Context
 <div id="inherited-constants-android.content.Context">
@@ -1306,7 +1311,7 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
-        <td class="jd-linkcol">CLIPBOARD_SERVICE</td>
+        <td class="jd-linkcol">CARRIER_CONFIG_SERVICE</td>
         <td class="jd-descrcol" width="100%">
           
           
@@ -1318,6 +1323,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">CLIPBOARD_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
         <td class="jd-linkcol">CONNECTIVITY_SERVICE</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1328,7 +1345,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">CONSUMER_IR_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1340,7 +1357,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CONTEXT_IGNORE_SECURITY</td>
         <td class="jd-descrcol" width="100%">
@@ -1352,7 +1369,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CONTEXT_INCLUDE_CODE</td>
         <td class="jd-descrcol" width="100%">
@@ -1364,7 +1381,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CONTEXT_RESTRICTED</td>
         <td class="jd-descrcol" width="100%">
@@ -1376,7 +1393,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DEVICE_POLICY_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1388,7 +1405,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DISPLAY_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1400,7 +1417,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DOWNLOAD_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1412,7 +1429,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DROPBOX_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1424,6 +1441,18 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">FINGERPRINT_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">INPUT_METHOD_SERVICE</td>
@@ -1545,6 +1574,18 @@
     
     
     <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">MIDI_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_APPEND</td>
         <td class="jd-descrcol" width="100%">
@@ -1556,7 +1597,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_ENABLE_WRITE_AHEAD_LOGGING</td>
         <td class="jd-descrcol" width="100%">
@@ -1568,7 +1609,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_MULTI_PROCESS</td>
         <td class="jd-descrcol" width="100%">
@@ -1580,7 +1621,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_PRIVATE</td>
         <td class="jd-descrcol" width="100%">
@@ -1592,7 +1633,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_WORLD_READABLE</td>
         <td class="jd-descrcol" width="100%">
@@ -1604,7 +1645,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_WORLD_WRITEABLE</td>
         <td class="jd-descrcol" width="100%">
@@ -1616,6 +1657,18 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">NETWORK_STATS_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">NFC_SERVICE</td>
@@ -1914,7 +1967,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.content.ComponentCallbacks2" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.content.ComponentCallbacks2-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From interface
 android.content.ComponentCallbacks2
 <div id="inherited-constants-android.content.ComponentCallbacks2">
@@ -2039,7 +2092,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.app.Activity" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.app.Activity-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.app.Activity
 <div id="inherited-fields-android.app.Activity">
@@ -2169,7 +2222,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.app.Activity" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.app.Activity-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2861,6 +2914,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            final
+            
+            
+            SearchEvent</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSearchEvent</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             
             
             
@@ -2873,7 +2942,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2889,7 +2958,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2905,7 +2974,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2921,6 +2990,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            VoiceInteractor</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getVoiceInteractor</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -3101,6 +3186,38 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isVoiceInteraction</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isVoiceInteractionRoot</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -4019,7 +4136,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onProvideAssistData</span>(Bundle arg0)</nobr>
+        <span class="sympad">onProvideAssistContent</span>(AssistContent arg0)</nobr>
         
   </td></tr>
 
@@ -4035,13 +4152,61 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideAssistData</span>(Bundle arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Uri</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideReferrer</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onRequestPermissionsResult</span>(int arg0, String[] arg1, int[] arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRestart</span>()</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4057,7 +4222,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4073,7 +4238,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4089,7 +4254,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4105,7 +4270,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4121,7 +4286,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4137,7 +4302,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4153,6 +4318,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onSearchRequested</span>(SearchEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -4179,7 +4360,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onStop</span>()</nobr>
+        <span class="sympad">onStateNotSaved</span>()</nobr>
         
   </td></tr>
 
@@ -4195,13 +4376,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onStop</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onTitleChanged</span>(CharSequence arg0, int arg1)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4217,7 +4414,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4233,7 +4430,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4249,7 +4446,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4265,7 +4462,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4281,7 +4478,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4297,7 +4494,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4313,7 +4510,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4329,6 +4526,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onWindowStartingActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -4493,6 +4706,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestPermissions</span>(String[] arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             
             
             
@@ -4505,7 +4734,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4521,7 +4750,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4537,7 +4766,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4553,7 +4782,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4569,7 +4798,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4585,7 +4814,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4601,7 +4830,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4617,7 +4846,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4633,7 +4862,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4649,7 +4878,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4665,7 +4894,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4681,7 +4910,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4697,7 +4926,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4713,7 +4942,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4729,7 +4958,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4745,7 +4974,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4761,7 +4990,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4777,7 +5006,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4793,7 +5022,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4809,7 +5038,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4825,7 +5054,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4841,7 +5070,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4857,7 +5086,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4873,7 +5102,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4889,7 +5118,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4905,7 +5134,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4921,7 +5150,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4937,7 +5166,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4953,7 +5182,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4969,7 +5198,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4985,7 +5214,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5001,7 +5230,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5017,6 +5246,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">shouldShowRequestPermissionRationale</span>(String arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -5037,13 +5282,13 @@
         <td class="jd-typecol"><nobr>
             
             
-            final
+            
             
             
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">showDialog</span>(int arg0, Bundle arg1)</nobr>
+        <span class="sympad">showAssist</span>(Bundle arg0)</nobr>
         
   </td></tr>
 
@@ -5056,6 +5301,22 @@
             final
             
             
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">showDialog</span>(int arg0, Bundle arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -5065,6 +5326,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">showLockTaskEscapeMessage</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -5088,6 +5365,22 @@
             
             
             
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -5097,7 +5390,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5113,7 +5406,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5129,7 +5422,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5145,7 +5438,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5161,7 +5454,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5177,7 +5470,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5193,7 +5486,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5209,7 +5502,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5225,7 +5518,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5241,7 +5534,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5257,7 +5550,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5273,7 +5566,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5289,7 +5582,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5305,7 +5598,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5321,7 +5614,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5337,7 +5630,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5353,7 +5646,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5369,7 +5662,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5385,7 +5678,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5401,7 +5694,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5417,7 +5710,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5433,7 +5726,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5449,7 +5742,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5465,7 +5758,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5481,7 +5774,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5497,7 +5790,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5513,7 +5806,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5529,7 +5822,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5555,7 +5848,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ContextThemeWrapper" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ContextThemeWrapper-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -5693,7 +5986,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ContextWrapper" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ContextWrapper-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -5831,7 +6124,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
+        <span class="sympad">checkSelfPermission</span>(String arg0)</nobr>
         
   </td></tr>
 
@@ -5847,7 +6140,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
         
   </td></tr>
 
@@ -5860,6 +6153,22 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -5869,7 +6178,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5885,7 +6194,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5901,7 +6210,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5917,7 +6226,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5933,7 +6242,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5949,7 +6258,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5965,7 +6274,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5981,7 +6290,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5997,7 +6306,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6013,7 +6322,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6029,7 +6338,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6045,7 +6354,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6061,7 +6370,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6077,7 +6386,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6093,7 +6402,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6109,7 +6418,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6125,7 +6434,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6141,7 +6450,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6157,7 +6466,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6173,7 +6482,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6189,7 +6498,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6205,7 +6514,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6221,7 +6530,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6237,7 +6546,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6253,7 +6562,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6269,7 +6578,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6285,7 +6594,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6301,7 +6610,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6317,7 +6626,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6333,7 +6642,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6349,7 +6658,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6365,7 +6674,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6381,7 +6690,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6397,7 +6706,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6413,7 +6722,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6429,7 +6738,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6445,7 +6754,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6461,7 +6770,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6477,7 +6786,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6493,7 +6802,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6509,7 +6818,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6525,7 +6834,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6541,6 +6850,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSystemServiceName</span>(Class&lt;?&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -7207,7 +7532,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.Context" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.Context-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -7329,7 +7654,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
+        <span class="sympad">checkSelfPermission</span>(String arg0)</nobr>
         
   </td></tr>
 
@@ -7345,7 +7670,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
         
   </td></tr>
 
@@ -7358,6 +7683,22 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -7367,7 +7708,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7383,7 +7724,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7399,7 +7740,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7415,7 +7756,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7431,7 +7772,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7447,7 +7788,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7463,7 +7804,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7479,7 +7820,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7495,7 +7836,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7511,7 +7852,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7527,7 +7868,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7543,7 +7884,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7559,7 +7900,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7575,7 +7916,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7591,7 +7932,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7607,7 +7948,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7623,7 +7964,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7639,7 +7980,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7655,7 +7996,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7671,7 +8012,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7687,8 +8028,40 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getColorStateList</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
             abstract
             
             
@@ -7703,7 +8076,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7719,7 +8092,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7735,7 +8108,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7751,7 +8124,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7767,7 +8140,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7783,7 +8156,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7799,7 +8172,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7815,7 +8188,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7831,7 +8204,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7847,7 +8220,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7863,7 +8236,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7879,7 +8252,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7895,7 +8268,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7911,7 +8284,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7927,7 +8300,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7943,7 +8316,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7959,7 +8332,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7975,7 +8348,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7991,7 +8364,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8007,7 +8380,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8023,7 +8396,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8039,7 +8412,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8055,6 +8428,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            &lt;T&gt;
+            T</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSystemService</span>(Class&lt;T&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
@@ -8073,6 +8462,22 @@
 	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSystemServiceName</span>(Class&lt;?&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
             
             
             final
@@ -8087,7 +8492,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8103,7 +8508,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8119,7 +8524,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8135,7 +8540,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8151,7 +8556,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8167,7 +8572,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8183,7 +8588,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8199,7 +8604,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8215,7 +8620,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8231,7 +8636,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8247,7 +8652,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8263,7 +8668,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8279,7 +8684,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8295,7 +8700,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8311,7 +8716,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8327,7 +8732,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8343,7 +8748,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8359,7 +8764,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8375,7 +8780,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8391,7 +8796,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8407,7 +8812,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8423,7 +8828,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8439,7 +8844,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8455,7 +8860,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8471,7 +8876,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8487,7 +8892,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8503,7 +8908,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8519,7 +8924,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8535,7 +8940,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8551,7 +8956,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8567,7 +8972,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8583,7 +8988,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8599,7 +9004,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8615,7 +9020,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8631,7 +9036,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8647,7 +9052,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8663,7 +9068,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8679,7 +9084,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8695,7 +9100,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8711,7 +9116,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8727,7 +9132,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8743,7 +9148,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8759,7 +9164,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8775,7 +9180,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8791,7 +9196,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8807,7 +9212,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8823,7 +9228,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8849,7 +9254,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -9051,7 +9456,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.LayoutInflater.Factory2" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.LayoutInflater.Factory2-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -9093,7 +9498,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.Window.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.Window.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -9404,10 +9809,10 @@
             
             
             
-            void</nobr>
+            boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onWindowAttributesChanged</span>(WindowManager.LayoutParams arg0)</nobr>
+        <span class="sympad">onSearchRequested</span>(SearchEvent arg0)</nobr>
         
   </td></tr>
 
@@ -9423,12 +9828,44 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onWindowAttributesChanged</span>(WindowManager.LayoutParams arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onWindowFocusChanged</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onWindowStartingActionMode</span>(ActionMode.Callback arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
@@ -9439,7 +9876,7 @@
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onWindowStartingActionMode</span>(ActionMode.Callback arg0)</nobr>
+        <span class="sympad">onWindowStartingActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
         
   </td></tr>
 
@@ -9455,7 +9892,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -9545,7 +9982,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View.OnCreateContextMenuListener" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.View.OnCreateContextMenuListener-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -9587,7 +10024,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ComponentCallbacks2" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ComponentCallbacks2-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -9629,7 +10066,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.LayoutInflater.Factory" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.LayoutInflater.Factory-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -9671,7 +10108,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ComponentCallbacks" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ComponentCallbacks-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
diff --git a/docs/html/reference/android/support/wearable/activity/WearableActivity.html b/docs/html/reference/android/support/wearable/activity/WearableActivity.html
index 6f70f74..777e2ca 100644
--- a/docs/html/reference/android/support/wearable/activity/WearableActivity.html
+++ b/docs/html/reference/android/support/wearable/activity/WearableActivity.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -899,7 +904,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.app.Activity" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.app.Activity-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.app.Activity
 <div id="inherited-constants-android.app.Activity">
@@ -1023,7 +1028,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.content.Context" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.content.Context-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.content.Context
 <div id="inherited-constants-android.content.Context">
@@ -1265,7 +1270,7 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
-        <td class="jd-linkcol">CLIPBOARD_SERVICE</td>
+        <td class="jd-linkcol">CARRIER_CONFIG_SERVICE</td>
         <td class="jd-descrcol" width="100%">
           
           
@@ -1277,6 +1282,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">CLIPBOARD_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
         <td class="jd-linkcol">CONNECTIVITY_SERVICE</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1287,7 +1304,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">CONSUMER_IR_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1299,7 +1316,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CONTEXT_IGNORE_SECURITY</td>
         <td class="jd-descrcol" width="100%">
@@ -1311,7 +1328,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CONTEXT_INCLUDE_CODE</td>
         <td class="jd-descrcol" width="100%">
@@ -1323,7 +1340,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CONTEXT_RESTRICTED</td>
         <td class="jd-descrcol" width="100%">
@@ -1335,7 +1352,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DEVICE_POLICY_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1347,7 +1364,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DISPLAY_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1359,7 +1376,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DOWNLOAD_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1371,7 +1388,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DROPBOX_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1383,6 +1400,18 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">FINGERPRINT_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">INPUT_METHOD_SERVICE</td>
@@ -1504,6 +1533,18 @@
     
     
     <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">MIDI_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_APPEND</td>
         <td class="jd-descrcol" width="100%">
@@ -1515,7 +1556,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_ENABLE_WRITE_AHEAD_LOGGING</td>
         <td class="jd-descrcol" width="100%">
@@ -1527,7 +1568,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_MULTI_PROCESS</td>
         <td class="jd-descrcol" width="100%">
@@ -1539,7 +1580,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_PRIVATE</td>
         <td class="jd-descrcol" width="100%">
@@ -1551,7 +1592,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_WORLD_READABLE</td>
         <td class="jd-descrcol" width="100%">
@@ -1563,7 +1604,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_WORLD_WRITEABLE</td>
         <td class="jd-descrcol" width="100%">
@@ -1575,6 +1616,18 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">NETWORK_STATS_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">NFC_SERVICE</td>
@@ -1873,7 +1926,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.content.ComponentCallbacks2" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.content.ComponentCallbacks2-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From interface
 android.content.ComponentCallbacks2
 <div id="inherited-constants-android.content.ComponentCallbacks2">
@@ -1998,7 +2051,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.app.Activity" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.app.Activity-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.app.Activity
 <div id="inherited-fields-android.app.Activity">
@@ -2325,7 +2378,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.app.Activity" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.app.Activity-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -3017,6 +3070,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            final
+            
+            
+            SearchEvent</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSearchEvent</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             
             
             
@@ -3029,7 +3098,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3045,7 +3114,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3061,7 +3130,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3077,6 +3146,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            VoiceInteractor</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getVoiceInteractor</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -3257,6 +3342,38 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isVoiceInteraction</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isVoiceInteractionRoot</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -4175,7 +4292,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onProvideAssistData</span>(Bundle arg0)</nobr>
+        <span class="sympad">onProvideAssistContent</span>(AssistContent arg0)</nobr>
         
   </td></tr>
 
@@ -4191,13 +4308,61 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideAssistData</span>(Bundle arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Uri</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideReferrer</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onRequestPermissionsResult</span>(int arg0, String[] arg1, int[] arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRestart</span>()</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4213,7 +4378,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4229,7 +4394,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4245,7 +4410,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4261,7 +4426,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4277,7 +4442,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4293,7 +4458,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4309,6 +4474,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onSearchRequested</span>(SearchEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -4335,7 +4516,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onStop</span>()</nobr>
+        <span class="sympad">onStateNotSaved</span>()</nobr>
         
   </td></tr>
 
@@ -4351,13 +4532,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onStop</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onTitleChanged</span>(CharSequence arg0, int arg1)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4373,7 +4570,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4389,7 +4586,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4405,7 +4602,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4421,7 +4618,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4437,7 +4634,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4453,7 +4650,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4469,7 +4666,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4485,6 +4682,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onWindowStartingActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -4649,6 +4862,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestPermissions</span>(String[] arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             
             
             
@@ -4661,7 +4890,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4677,7 +4906,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4693,7 +4922,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4709,7 +4938,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4725,7 +4954,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4741,7 +4970,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4757,7 +4986,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4773,7 +5002,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4789,7 +5018,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4805,7 +5034,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4821,7 +5050,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4837,7 +5066,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4853,7 +5082,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4869,7 +5098,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4885,7 +5114,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4901,7 +5130,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4917,7 +5146,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4933,7 +5162,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4949,7 +5178,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4965,7 +5194,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4981,7 +5210,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4997,7 +5226,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5013,7 +5242,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5029,7 +5258,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5045,7 +5274,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5061,7 +5290,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5077,7 +5306,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5093,7 +5322,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5109,7 +5338,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5125,7 +5354,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5141,7 +5370,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5157,7 +5386,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5173,6 +5402,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">shouldShowRequestPermissionRationale</span>(String arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -5193,13 +5438,13 @@
         <td class="jd-typecol"><nobr>
             
             
-            final
+            
             
             
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">showDialog</span>(int arg0, Bundle arg1)</nobr>
+        <span class="sympad">showAssist</span>(Bundle arg0)</nobr>
         
   </td></tr>
 
@@ -5212,6 +5457,22 @@
             final
             
             
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">showDialog</span>(int arg0, Bundle arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -5221,6 +5482,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">showLockTaskEscapeMessage</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -5244,6 +5521,22 @@
             
             
             
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -5253,7 +5546,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5269,7 +5562,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5285,7 +5578,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5301,7 +5594,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5317,7 +5610,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5333,7 +5626,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5349,7 +5642,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5365,7 +5658,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5381,7 +5674,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5397,7 +5690,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5413,7 +5706,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5429,7 +5722,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5445,7 +5738,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5461,7 +5754,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5477,7 +5770,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5493,7 +5786,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5509,7 +5802,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5525,7 +5818,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5541,7 +5834,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5557,7 +5850,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5573,7 +5866,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5589,7 +5882,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5605,7 +5898,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5621,7 +5914,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5637,7 +5930,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5653,7 +5946,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5669,7 +5962,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5685,7 +5978,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5711,7 +6004,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ContextThemeWrapper" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ContextThemeWrapper-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -5849,7 +6142,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ContextWrapper" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ContextWrapper-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -5987,7 +6280,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
+        <span class="sympad">checkSelfPermission</span>(String arg0)</nobr>
         
   </td></tr>
 
@@ -6003,7 +6296,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
         
   </td></tr>
 
@@ -6016,6 +6309,22 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -6025,7 +6334,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6041,7 +6350,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6057,7 +6366,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6073,7 +6382,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6089,7 +6398,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6105,7 +6414,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6121,7 +6430,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6137,7 +6446,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6153,7 +6462,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6169,7 +6478,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6185,7 +6494,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6201,7 +6510,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6217,7 +6526,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6233,7 +6542,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6249,7 +6558,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6265,7 +6574,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6281,7 +6590,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6297,7 +6606,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6313,7 +6622,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6329,7 +6638,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6345,7 +6654,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6361,7 +6670,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6377,7 +6686,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6393,7 +6702,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6409,7 +6718,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6425,7 +6734,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6441,7 +6750,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6457,7 +6766,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6473,7 +6782,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6489,7 +6798,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6505,7 +6814,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6521,7 +6830,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6537,7 +6846,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6553,7 +6862,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6569,7 +6878,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6585,7 +6894,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6601,7 +6910,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6617,7 +6926,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6633,7 +6942,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6649,7 +6958,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6665,7 +6974,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6681,7 +6990,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6697,6 +7006,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSystemServiceName</span>(Class&lt;?&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -7363,7 +7688,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.Context" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.Context-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -7485,7 +7810,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
+        <span class="sympad">checkSelfPermission</span>(String arg0)</nobr>
         
   </td></tr>
 
@@ -7501,7 +7826,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
         
   </td></tr>
 
@@ -7514,6 +7839,22 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -7523,7 +7864,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7539,7 +7880,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7555,7 +7896,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7571,7 +7912,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7587,7 +7928,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7603,7 +7944,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7619,7 +7960,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7635,7 +7976,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7651,7 +7992,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7667,7 +8008,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7683,7 +8024,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7699,7 +8040,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7715,7 +8056,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7731,7 +8072,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7747,7 +8088,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7763,7 +8104,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7779,7 +8120,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7795,7 +8136,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7811,7 +8152,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7827,7 +8168,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7843,8 +8184,40 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getColorStateList</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
             abstract
             
             
@@ -7859,7 +8232,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7875,7 +8248,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7891,7 +8264,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7907,7 +8280,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7923,7 +8296,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7939,7 +8312,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7955,7 +8328,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7971,7 +8344,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -7987,7 +8360,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8003,7 +8376,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8019,7 +8392,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8035,7 +8408,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8051,7 +8424,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8067,7 +8440,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8083,7 +8456,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8099,7 +8472,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8115,7 +8488,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8131,7 +8504,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8147,7 +8520,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8163,7 +8536,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8179,7 +8552,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8195,7 +8568,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8211,6 +8584,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            &lt;T&gt;
+            T</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSystemService</span>(Class&lt;T&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
@@ -8229,6 +8618,22 @@
 	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSystemServiceName</span>(Class&lt;?&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
             
             
             final
@@ -8243,7 +8648,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8259,7 +8664,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8275,7 +8680,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8291,7 +8696,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8307,7 +8712,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8323,7 +8728,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8339,7 +8744,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8355,7 +8760,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8371,7 +8776,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8387,7 +8792,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8403,7 +8808,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8419,7 +8824,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8435,7 +8840,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8451,7 +8856,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8467,7 +8872,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8483,7 +8888,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8499,7 +8904,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8515,7 +8920,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8531,7 +8936,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8547,7 +8952,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8563,7 +8968,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8579,7 +8984,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8595,7 +9000,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8611,7 +9016,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8627,7 +9032,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8643,7 +9048,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8659,7 +9064,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8675,7 +9080,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8691,7 +9096,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8707,7 +9112,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8723,7 +9128,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8739,7 +9144,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8755,7 +9160,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8771,7 +9176,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8787,7 +9192,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8803,7 +9208,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8819,7 +9224,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8835,7 +9240,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8851,7 +9256,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8867,7 +9272,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8883,7 +9288,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8899,7 +9304,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8915,7 +9320,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8931,7 +9336,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8947,7 +9352,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -8963,7 +9368,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8979,7 +9384,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -9005,7 +9410,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -9207,7 +9612,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.LayoutInflater.Factory2" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.LayoutInflater.Factory2-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -9249,7 +9654,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.Window.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.Window.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -9560,10 +9965,10 @@
             
             
             
-            void</nobr>
+            boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onWindowAttributesChanged</span>(WindowManager.LayoutParams arg0)</nobr>
+        <span class="sympad">onSearchRequested</span>(SearchEvent arg0)</nobr>
         
   </td></tr>
 
@@ -9579,12 +9984,44 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onWindowAttributesChanged</span>(WindowManager.LayoutParams arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onWindowFocusChanged</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onWindowStartingActionMode</span>(ActionMode.Callback arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
@@ -9595,7 +10032,7 @@
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onWindowStartingActionMode</span>(ActionMode.Callback arg0)</nobr>
+        <span class="sympad">onWindowStartingActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
         
   </td></tr>
 
@@ -9611,7 +10048,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -9701,7 +10138,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View.OnCreateContextMenuListener" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.View.OnCreateContextMenuListener-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -9743,7 +10180,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ComponentCallbacks2" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ComponentCallbacks2-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -9785,7 +10222,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.LayoutInflater.Factory" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.LayoutInflater.Factory-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -9827,7 +10264,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ComponentCallbacks" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ComponentCallbacks-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
diff --git a/docs/html/reference/android/support/wearable/activity/package-summary.html b/docs/html/reference/android/support/wearable/activity/package-summary.html
index e3a691a..edcac1d 100644
--- a/docs/html/reference/android/support/wearable/activity/package-summary.html
+++ b/docs/html/reference/android/support/wearable/activity/package-summary.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
diff --git a/docs/html/reference/android/support/wearable/companion/WatchFaceCompanion.html b/docs/html/reference/android/support/wearable/companion/WatchFaceCompanion.html
index 8174777..6abe04a 100644
--- a/docs/html/reference/android/support/wearable/companion/WatchFaceCompanion.html
+++ b/docs/html/reference/android/support/wearable/companion/WatchFaceCompanion.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -631,7 +636,7 @@
 <h2>Class Overview</h2>
 <p itemprop="articleBody">Constants for use by watch face configuration activities.
 
- <p>To register a configuration activity for a watch face, add a <code>&lt;meta-data&gt;</code>
+ <p>To register a configuration activity for a watch face, add a <code><meta-data></code>
  entry to the watch face component in its Android Manifest file with an intent action to be
  fired to start the activity. The following meta-data will register the
  <code>com.example.watchface.CONFIG_DIGITAL</code> action to be started when configuring a watch
@@ -770,7 +775,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/companion/package-summary.html b/docs/html/reference/android/support/wearable/companion/package-summary.html
index 7404dcd..0bd0819 100644
--- a/docs/html/reference/android/support/wearable/companion/package-summary.html
+++ b/docs/html/reference/android/support/wearable/companion/package-summary.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
diff --git a/docs/html/reference/android/support/wearable/input/RemoteInputConstants.html b/docs/html/reference/android/support/wearable/input/RemoteInputConstants.html
index 35fe2d5..99b3248 100644
--- a/docs/html/reference/android/support/wearable/input/RemoteInputConstants.html
+++ b/docs/html/reference/android/support/wearable/input/RemoteInputConstants.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -762,7 +767,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/input/RemoteInputIntent.html b/docs/html/reference/android/support/wearable/input/RemoteInputIntent.html
index 34ae2d5..efd64aa 100644
--- a/docs/html/reference/android/support/wearable/input/RemoteInputIntent.html
+++ b/docs/html/reference/android/support/wearable/input/RemoteInputIntent.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -851,7 +856,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/input/package-summary.html b/docs/html/reference/android/support/wearable/input/package-summary.html
index 314838d..997b5eb 100644
--- a/docs/html/reference/android/support/wearable/input/package-summary.html
+++ b/docs/html/reference/android/support/wearable/input/package-summary.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
diff --git a/docs/html/reference/android/support/wearable/media/MediaControlConstants.html b/docs/html/reference/android/support/wearable/media/MediaControlConstants.html
index 30ddc45..718bc84 100644
--- a/docs/html/reference/android/support/wearable/media/MediaControlConstants.html
+++ b/docs/html/reference/android/support/wearable/media/MediaControlConstants.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -818,7 +823,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1077,8 +1082,9 @@
 
  <p>For example, the following can be added to the application's manifest to use a specific
  theme for the media controls:
- <pre><code><meta-data android:name="com.google.android.wearable.media.theme"
-         android:resource="@style/MediaTheme"/></code></pre>
+ <pre class="prettyprint">
+ &lt;meta-data android:name="com.google.android.wearable.media.theme"
+         android:resource="@style/MediaTheme"/&gt;</pre>
  <p>The color used will be <code>colorPrimaryDark</code> for the given theme.
 
  <p>If this extra is not present, or has a value other than true, the color of the media
diff --git a/docs/html/reference/android/support/wearable/media/package-summary.html b/docs/html/reference/android/support/wearable/media/package-summary.html
index 72dce84..3970fdd 100644
--- a/docs/html/reference/android/support/wearable/media/package-summary.html
+++ b/docs/html/reference/android/support/wearable/media/package-summary.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
diff --git a/docs/html/reference/android/support/wearable/package-summary.html b/docs/html/reference/android/support/wearable/package-summary.html
index a4ef376..6001af3 100644
--- a/docs/html/reference/android/support/wearable/package-summary.html
+++ b/docs/html/reference/android/support/wearable/package-summary.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -476,10 +481,12 @@
         <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.animator.html">R.animator</a></li>
         <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.array.html">R.array</a></li>
         <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.attr.html">R.attr</a></li>
+        <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></li>
         <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></li>
         <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></li>
         <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></li>
         <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></li>
+        <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></li>
         <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></li>
         <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.layout.html">R.layout</a></li>
         <li class="api apilevel-"><a href="../../../../reference/android/support/wearable/R.string.html">R.string</a></li>
@@ -630,6 +637,17 @@
       
     
       <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.bool.html">R.bool</a></td>
+        <td class="jd-descrcol" width="100%">
+          &nbsp;
+          
+    
+
+        </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.color.html">R.color</a></td>
         <td class="jd-descrcol" width="100%">
           &nbsp;
@@ -640,7 +658,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.dimen.html">R.dimen</a></td>
         <td class="jd-descrcol" width="100%">
           &nbsp;
@@ -651,7 +669,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.drawable.html">R.drawable</a></td>
         <td class="jd-descrcol" width="100%">
           &nbsp;
@@ -662,7 +680,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.id.html">R.id</a></td>
         <td class="jd-descrcol" width="100%">
           &nbsp;
@@ -673,6 +691,17 @@
       </tr>
       
     
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.integer.html">R.integer</a></td>
+        <td class="jd-descrcol" width="100%">
+          &nbsp;
+          
+    
+
+        </td>
+      </tr>
+      
+    
       <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../reference/android/support/wearable/R.interpolator.html">R.interpolator</a></td>
         <td class="jd-descrcol" width="100%">
diff --git a/docs/html/reference/android/support/wearable/provider/WearableCalendarContract.Attendees.html b/docs/html/reference/android/support/wearable/provider/WearableCalendarContract.Attendees.html
index 794973f..d36dec3 100644
--- a/docs/html/reference/android/support/wearable/provider/WearableCalendarContract.Attendees.html
+++ b/docs/html/reference/android/support/wearable/provider/WearableCalendarContract.Attendees.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -728,7 +733,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/provider/WearableCalendarContract.Instances.html b/docs/html/reference/android/support/wearable/provider/WearableCalendarContract.Instances.html
index 77c3c67..8afd1f1 100644
--- a/docs/html/reference/android/support/wearable/provider/WearableCalendarContract.Instances.html
+++ b/docs/html/reference/android/support/wearable/provider/WearableCalendarContract.Instances.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -728,7 +733,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/provider/WearableCalendarContract.Reminders.html b/docs/html/reference/android/support/wearable/provider/WearableCalendarContract.Reminders.html
index 9dfd7f7..2ed5880 100644
--- a/docs/html/reference/android/support/wearable/provider/WearableCalendarContract.Reminders.html
+++ b/docs/html/reference/android/support/wearable/provider/WearableCalendarContract.Reminders.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -728,7 +733,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/provider/WearableCalendarContract.html b/docs/html/reference/android/support/wearable/provider/WearableCalendarContract.html
index 588ae71..b0abda3 100644
--- a/docs/html/reference/android/support/wearable/provider/WearableCalendarContract.html
+++ b/docs/html/reference/android/support/wearable/provider/WearableCalendarContract.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -843,7 +848,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/provider/package-summary.html b/docs/html/reference/android/support/wearable/provider/package-summary.html
index bb4c581..f6849e1 100644
--- a/docs/html/reference/android/support/wearable/provider/package-summary.html
+++ b/docs/html/reference/android/support/wearable/provider/package-summary.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
diff --git a/docs/html/reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html b/docs/html/reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html
new file mode 100644
index 0000000..166c846
--- /dev/null
+++ b/docs/html/reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html
@@ -0,0 +1,1072 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta content="IE=edge" http-equiv="X-UA-Compatible">
+
+<link rel="shortcut icon" type="image/x-icon" href="../../../../../favicon.ico" />
+<title>ActionChooserView.ActionChooserListener | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="http://fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+
+<link href="../../../../../assets/css/default.css?v=7" rel="stylesheet" type="text/css">
+
+
+<!-- FULLSCREEN STYLESHEET -->
+<link href="../../../../../assets/css/fullscreen.css" rel="stylesheet" class="fullscreen"
+type="text/css">
+
+
+<!-- JAVASCRIPT -->
+<script src="http://www.google.com/jsapi" type="text/javascript"></script>
+<script src="../../../../../assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "../../../../../";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation 
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div class="dac-header" id="header">
+
+
+
+
+      <div class="dac-header-inner">
+        <a class="dac-nav-toggle" data-dac-toggle-nav href="javascript:;" title="Open navigation">
+          <span class="dac-nav-hamburger">
+            <span class="dac-nav-hamburger-top"></span>
+            <span class="dac-nav-hamburger-mid"></span>
+            <span class="dac-nav-hamburger-bot"></span>
+          </span>
+        </a>
+        <a class="dac-header-logo" href="../../../../../index.html">
+          <img class="dac-header-logo-image" src="../../../../../assets/images/android_logo.png"
+              srcset="../../../../../assets/images/android_logo@2x.png 2x"
+              width="32" height="36" alt="Android" /> Developers
+          </a>
+
+        <ul class="dac-header-crumbs">
+          
+          <li class="dac-header-crumbs-item"><span class="dac-header-crumbs-link current ">ActionChooserView.ActionChooserListener</a></li>
+        </ul>
+
+        
+        
+        
+  <div class="dac-header-search" id="search-container">
+    <div class="dac-header-search-inner">
+      <div class="dac-sprite dac-search dac-header-search-btn" id="search-btn"></div>
+      <form class="dac-header-search-form" onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '../../../../../')"
+          onkeyup="return search_changed(event, false, '../../../../../')"
+          class="dac-header-search-input" placeholder="Search" />
+          <a class="dac-header-search-close hide" id="search-close">close</a>
+      </form>
+    </div><!-- end dac-header-search-inner -->
+  </div><!-- end dac-header-search -->
+
+  <div class="search_filtered_wrapper">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+        
+
+        <a class="dac-header-console-btn" href="https://play.google.com/apps/publish/">
+          <span class="dac-sprite dac-google-play"></span>
+          <span class="dac-visible-desktop-inline">Developer</span>
+          Console
+        </a>
+
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  
+  <!-- Navigation-->
+  <nav class="dac-nav">
+    <div class="dac-nav-dimmer" data-dac-toggle-nav></div>
+
+    <ul class="dac-nav-list" data-dac-nav>
+      <li class="dac-nav-item dac-nav-head">
+        <a class="dac-nav-link dac-nav-logo" data-dac-toggle-nav href="javascript:;" title="Close navigation">
+          <img class="dac-logo-image" src="../../../../../assets/images/android_logo.png"
+               srcset="../../../../../assets/images/android_logo@2x.png 2x"
+               width="32" height="36" alt="Android" /> Developers
+        </a>
+      </li>
+      <li class="dac-nav-item home">
+        <a class="dac-nav-link dac-visible-mobile-block" href="../../../../../index.html">Home</a>
+        <ul class="dac-nav-secondary about">
+          <li class="dac-nav-item about">
+            <a class="dac-nav-link" href="../../../../../about/index.html">Android</a>
+          </li>
+          <li class="dac-nav-item wear">
+            <a class="dac-nav-link" href="../../../../../wear/index.html">Wear</a>
+          </li>
+          <li class="dac-nav-item tv">
+            <a class="dac-nav-link" href="../../../../../tv/index.html">TV</a>
+          </li>
+          <li class="dac-nav-item auto">
+            <a class="dac-nav-link" href="../../../../../auto/index.html">Auto</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item design">
+        <a class="dac-nav-link" href="../../../../../design/index.html"
+           zh-tw-lang="設計"
+           zh-cn-lang="设计"
+           ru-lang="Проектирование"
+           ko-lang="디자인"
+           ja-lang="設計"
+           es-lang="Diseñar">Design</a>
+      </li>
+      <li class="dac-nav-item develop">
+        <a class="dac-nav-link" href="../../../../../develop/index.html"
+           zh-tw-lang="開發"
+           zh-cn-lang="开发"
+           ru-lang="Разработка"
+           ko-lang="개발"
+           ja-lang="開発"
+           es-lang="Desarrollar">Develop</a>
+        <ul class="dac-nav-secondary develop">
+          <li class="dac-nav-item training">
+            <a class="dac-nav-link" href="../../../../../training/index.html"
+               zh-tw-lang="訓練課程"
+               zh-cn-lang="培训"
+               ru-lang="Курсы"
+               ko-lang="교육"
+               ja-lang="トレーニング"
+               es-lang="Capacitación">Training</a>
+          </li>
+          <li class="dac-nav-item guide">
+            <a class="dac-nav-link" href="../../../../../guide/index.html"
+               zh-tw-lang="API 指南"
+               zh-cn-lang="API 指南"
+               ru-lang="Руководства по API"
+               ko-lang="API 가이드"
+               ja-lang="API ガイド"
+               es-lang="Guías de la API">API Guides</a>
+          </li>
+          <li class="dac-nav-item reference">
+            <a class="dac-nav-link" href="../../../../../reference/packages.html"
+               zh-tw-lang="參考資源"
+               zh-cn-lang="参考"
+               ru-lang="Справочник"
+               ko-lang="참조문서"
+               ja-lang="リファレンス"
+               es-lang="Referencia">Reference</a>
+          </li>
+          <li class="dac-nav-item tools">
+            <a class="dac-nav-link" href="../../../../../sdk/index.html"
+               zh-tw-lang="相關工具"
+               zh-cn-lang="工具"
+               ru-lang="Инструменты"
+               ko-lang="도구"
+               ja-lang="ツール"
+               es-lang="Herramientas">Tools</a></li>
+          <li class="dac-nav-item google">
+            <a class="dac-nav-link" href="../../../../../google/index.html">Google Services</a>
+          </li>
+          
+          <li class="dac-nav-item preview">
+            <a class="dac-nav-link" href="../../../../../preview/index.html">Preview</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item distribute">
+        <a class="dac-nav-link" href="../../../../../distribute/googleplay/index.html"
+           zh-tw-lang="發佈"
+           zh-cn-lang="分发"
+           ru-lang="Распространение"
+           ko-lang="배포"
+           ja-lang="配布"
+           es-lang="Distribuir">Distribute</a>
+        <ul class="dac-nav-secondary distribute">
+          <li class="dac-nav-item googleplay">
+            <a class="dac-nav-link" href="../../../../../distribute/googleplay/index.html">Google Play</a></li>
+          <li class="dac-nav-item essentials">
+            <a class="dac-nav-link" href="../../../../../distribute/essentials/index.html">Essentials</a></li>
+          <li class="dac-nav-item users">
+            <a class="dac-nav-link" href="../../../../../distribute/users/index.html">Get Users</a></li>
+          <li class="dac-nav-item engage">
+            <a class="dac-nav-link" href="../../../../../distribute/engage/index.html">Engage &amp; Retain</a></li>
+          <li class="dac-nav-item monetize">
+            <a class="dac-nav-link" href="../../../../../distribute/monetize/index.html">Earn</a>
+          </li>
+          <li class="dac-nav-item analyze">
+            <a class="dac-nav-link" href="../../../../../distribute/analyze/index.html">Analyze</a>
+          </li>
+          <li class="dac-nav-item stories">
+            <a class="dac-nav-link" href="../../../../../distribute/stories/index.html">Stories</a>
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </nav>
+  <!-- end navigation-->
+  
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content"><div class="cols">
+    <div class="col-4 dac-hidden-mobile" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav">
+      <div id="api-nav-header">
+        <div id="api-level-toggle">
+          <label for="apiLevelCheckbox" class="disabled"
+            title="Select your target API level to dim unavailable APIs">API level: </label>
+          <div class="select-wrapper">
+            <select id="apiLevelSelector">
+              <!-- option elements added by buildApiLevelSelector() -->
+            </select>
+          </div>
+        </div><!-- end toggle -->
+        <div id="api-nav-title">Android APIs</div>
+        </div><!-- end nav header -->
+      <script>
+        var SINCE_DATA = [  ];
+        buildApiLevelSelector();
+      </script>
+
+      <div id="swapper">
+        <div id="nav-panels">
+          <div id="resize-packages-nav">
+            <div id="packages-nav" class="scroll-pane">
+
+              <ul>
+                
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/package-summary.html">android.support.wearable</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/activity/package-summary.html">android.support.wearable.activity</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/companion/package-summary.html">android.support.wearable.companion</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/input/package-summary.html">android.support.wearable.input</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/media/package-summary.html">android.support.wearable.media</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/provider/package-summary.html">android.support.wearable.provider</a></li>
+    <li class="selected api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/view/package-summary.html">android.support.wearable.view</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/watchface/package-summary.html">android.support.wearable.watchface</a></li>
+              </ul><br/>
+
+            </div> <!-- end packages-nav -->
+          </div> <!-- end resize-packages -->
+          <div id="classes-nav" class="scroll-pane">
+
+
+
+            <ul>
+              
+              
+    <li><h2>Interfaces</h2>
+      <ul>
+          <li class="selected api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridViewPager.OnAdapterChangeListener.html">GridViewPager.OnAdapterChangeListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridViewPager.OnPageChangeListener.html">GridViewPager.OnPageChangeListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.OnLayoutInflatedListener.html">WatchViewStub.OnLayoutInflatedListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.ClickListener.html">WearableListView.ClickListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnCenterProximityListener.html">WearableListView.OnCenterProximityListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnCentralPositionChangedListener.html">WearableListView.OnCentralPositionChangedListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnScrollListener.html">WearableListView.OnScrollListener</a></li>
+      </ul>
+    </li>
+              
+    <li><h2>Classes</h2>
+      <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.LayoutParams.html">BoxInsetLayout.LayoutParams</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CardFragment.html">CardFragment</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CardFrame.html">CardFrame</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html">CardScrollView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html">CircledImageView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CircularButton.html">CircularButton</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CrossfadeDrawable.html">CrossfadeDrawable</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.html">DelayedConfirmationView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DismissOverlayView.html">DismissOverlayView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DotsPageIndicator.html">DotsPageIndicator</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/FragmentGridPagerAdapter.html">FragmentGridPagerAdapter</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPagerAdapter.html">GridPagerAdapter</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridViewPager.html">GridViewPager</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridViewPager.LayoutParams.html">GridViewPager.LayoutParams</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ProgressSpinner.html">ProgressSpinner</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/SimpleAnimatorListener.html">SimpleAnimatorListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.html">WatchViewStub</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableFrameLayout.html">WearableFrameLayout</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableFrameLayout.LayoutParams.html">WearableFrameLayout.LayoutParams</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html">WearableListView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.Adapter.html">WearableListView.Adapter</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.ViewHolder.html">WearableListView.ViewHolder</a></li>
+      </ul>
+    </li>
+              
+              
+              
+            </ul><br/>
+
+
+          </div><!-- end classes -->
+        </div><!-- end nav-panels -->
+        <div id="nav-tree" style="display:none" class="scroll-pane">
+          <div id="tree-list"></div>
+        </div><!-- end nav-tree -->
+      </div><!-- end swapper -->
+      <div id="nav-swap">
+      <a class="fullscreen">fullscreen</a>
+      <a href='#' onclick='swapNav();return false;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>
+      </div>
+    </div> <!-- end devdoc-nav -->
+    </div> <!-- end side-nav -->
+    <script type="text/javascript">
+      // init fullscreen based on user pref
+      var fullscreen = readCookie("fullscreen");
+      if (fullscreen != 0) {
+        if (fullscreen == "false") {
+          toggleFullscreen(false);
+        } else {
+          toggleFullscreen(true);
+        }
+      }
+      // init nav version for mobile
+      if (isMobile) {
+        swapNav(); // tree view should be used on mobile
+        $('#nav-swap').hide();
+      } else {
+        chooseDefaultNav();
+        if ($("#nav-tree").is(':visible')) {
+          init_default_navtree("../../../../../");
+        }
+      }
+      // scroll the selected page into view
+      $(document).ready(function() {
+        scrollIntoView("packages-nav");
+        scrollIntoView("classes-nav");
+        });
+    </script>
+
+     
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+<div class="sum-details-links">
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+  
+  
+  
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static 
+     
+    
+    interface
+<h1 itemprop="name">ActionChooserView.ActionChooserListener</h1>
+
+
+
+  
+  
+  
+
+
+    
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+         	
+        <td colspan="1" class="jd-inheritance-class-cell">android.support.wearable.view.ActionChooserView.ActionChooserListener</td>
+    </tr>
+    
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Interface for receiving callbacks about options chosen from an <code><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></code>.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html#onOptionChosen(int)">onOptionChosen</a></span>(int option)</nobr>
+        
+        <div class="jd-descrdiv">
+          Called when an option has been chosen.
+          
+    
+
+        </div>
+  
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html#onOptionProgress(float)">onOptionProgress</a></span>(float percent)</nobr>
+        
+        <div class="jd-descrdiv">
+          Called to update the percentage an item has been selected
+          
+    
+
+        </div>
+  
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="onOptionChosen(int)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+        abstract 
+         
+        void
+      </span>
+      <span class="sympad">onOptionChosen</span>
+      <span class="normal">(int option)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Called when an option has been chosen.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>option</td>
+          <td>the option chosen. see <code><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#OPTION_START">OPTION_START</a></code> and <code><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#OPTION_END">OPTION_END</a></code>.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="onOptionProgress(float)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+        abstract 
+         
+        void
+      </span>
+      <span class="sympad">onOptionProgress</span>
+      <span class="normal">(float percent)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Called to update the percentage an item has been selected</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>percent</td>
+          <td>the progress of an item being selected, ranging from 0 to 1.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+</div> <!-- jd-content -->
+
+<div class="wrap">
+  <div class="dac-footer">
+    <div class="cols dac-footer-main">
+      <div class="col-1of2">
+        <a class="dac-footer-getnews" data-modal-toggle="newsletter" href="javascript:;">Get news &amp; tips <span
+          class="dac-fab dac-primary"><i class="dac-sprite dac-mail"></i></span></a>
+      </div>
+      <div class="col-1of2 dac-footer-reachout">
+        <div class="dac-footer-contact">
+          <a class="dac-footer-contact-link" href="http://android-developers.blogspot.com/">Blog</a>
+          <a class="dac-footer-contact-link" href="/support.html">Support</a>
+        </div>
+        <div class="dac-footer-social">
+          <a class="dac-fab dac-footer-social-link" href="https://www.youtube.com/user/androiddevelopers"><i class="dac-sprite dac-youtube"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://plus.google.com/+AndroidDevelopers"><i class="dac-sprite dac-gplus"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://twitter.com/AndroidDev"><i class="dac-sprite dac-twitter"></i></a>
+        </div>
+      </div>
+    </div>
+
+    <hr class="dac-footer-separator"/>
+
+    
+      <p class="dac-footer-copyright">
+        
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="../../../../../license.html">
+  Content License</a>.
+      </p>
+      <p class="dac-footer-build">
+        
+    Android Wearable Support&nbsp;r &mdash; 
+<script src="../../../../../timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+      </p>
+    
+
+    <p class="dac-footer-links">
+      <a href="/about/index.html">About Android</a>
+      <a href="/auto/index.html">Auto</a>
+      <a href="/tv/index.html">TV</a>
+      <a href="/wear/index.html">Wear</a>
+      <a href="/legal.html">Legal</a>
+
+      <span id="language" class="locales">
+        <select name="language" onchange="changeLangPref(this.value, true)">
+          <option value="en" selected="selected">English</option>
+          <option value="es">Español</option>
+          <option value="ja">日本語</option>
+          <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
+          <option value="ru">Русский</option>
+          <option value="zh-cn">中文(简体)</option>
+          <option value="zh-tw">中文(繁體)</option>
+        </select>
+      </span>
+    </p>
+  </div>
+</div> <!-- end footer -->
+
+<div data-modal="newsletter" data-newsletter data-swap class="dac-modal newsletter">
+  <div class="dac-modal-container">
+    <div class="dac-modal-window">
+      <header class="dac-modal-header">
+        <button class="dac-modal-header-close" data-modal-toggle><i class="dac-sprite dac-close"></i></button>
+        <div class="dac-swap" data-swap-container>
+          <section class="dac-swap-section dac-active dac-down">
+            <h2 class="norule dac-modal-header-title">Get the latest Android developer news and tips that will help you find success on Google Play.</h2>
+            <p class="dac-modal-header-subtitle">&#42; Required Fields</p>
+          </section>
+          <section class="dac-swap-section dac-up">
+            <h2 class="norule dac-modal-header-title">Hooray!</h2>
+          </section>
+        </div>
+      </header>
+      <div class="dac-swap" data-swap-container>
+        <section class="dac-swap-section dac-active dac-left">
+          <form action="https://docs.google.com/forms/d/1QgnkzbEJIDu9lMEea0mxqWrXUJu0oBCLD7ar23V0Yys/formResponse" class="dac-form" method="post" target="dac-newsletter-iframe">
+            <section class="dac-modal-content">
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-full-name" class="dac-form-floatlabel">Full name</label>
+                      <input type="text" class="dac-form-input" name="entry.1357890476" id="newsletter-full-name" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-email" class="dac-form-floatlabel">Email address</label>
+                      <input type="email" class="dac-form-input" name="entry.472100832" id="newsletter-email" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-company" class="dac-form-floatlabel">Company / developer name</label>
+                      <input type="text" class="dac-form-input" name="entry.1664780309" id="newsletter-company">
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-play-store" class="dac-form-floatlabel">One of your Play Store app URLs</label>
+                      <input type="url" class="dac-form-input" name="entry.47013838" id="newsletter-play-store" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <legend class="dac-form-legend">Which best describes your business:<span class="dac-form-required">*</span>
+                    </legend>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-app" required>
+                      <label for="newsletter-business-type-app" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-app" class="dac-form-label">Apps</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-games" required>
+                      <label for="newsletter-business-type-games" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-games" class="dac-form-label">Games</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps and Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-appsgames" required>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-label">Apps &amp; Games</label>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol newsletter-checkboxes">
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.732309842" id="newsletter-add" required value="Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.">
+                          <label for="newsletter-add" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-add" class="dac-form-label dac-form-aside">Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.2045036090" id="newsletter-terms" required value="I acknowledge that the information provided in this form will be subject to Google's privacy policy (https://www.google.com/policies/privacy/).">
+                          <label for="newsletter-terms" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-terms" class="dac-form-label dac-form-aside">I acknowledge that the information provided in this form will be subject to <a href="https://www.google.com/policies/privacy/">Google's privacy policy</a>.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+            </section>
+            <footer class="dac-modal-footer">
+              <div class="cols">
+                <div class="col-2of5">
+                </div>
+              </div>
+              <button type="submit" value="Submit" class="dac-fab dac-primary dac-large dac-modal-action"><i class="dac-sprite dac-arrow-right"></i></button>
+            </footer>
+          </form>
+        </section>
+        <section class="dac-swap-section dac-right">
+          <div class="dac-modal-content">
+            <p class="newsletter-success-message">
+              You have successfully signed up for the latest Android developer news and tips.
+            </p>
+          </div>
+        </section>
+      </div>
+    </div>
+  </div>
+</div> <!-- end footer -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end .cols --> 
+</div> <!-- end body-content --> 
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/android/support/wearable/view/ActionChooserView.html b/docs/html/reference/android/support/wearable/view/ActionChooserView.html
new file mode 100644
index 0000000..7aa900f
--- /dev/null
+++ b/docs/html/reference/android/support/wearable/view/ActionChooserView.html
@@ -0,0 +1,12391 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta content="IE=edge" http-equiv="X-UA-Compatible">
+
+<link rel="shortcut icon" type="image/x-icon" href="../../../../../favicon.ico" />
+<title>ActionChooserView | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="http://fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+
+<link href="../../../../../assets/css/default.css?v=7" rel="stylesheet" type="text/css">
+
+
+<!-- FULLSCREEN STYLESHEET -->
+<link href="../../../../../assets/css/fullscreen.css" rel="stylesheet" class="fullscreen"
+type="text/css">
+
+
+<!-- JAVASCRIPT -->
+<script src="http://www.google.com/jsapi" type="text/javascript"></script>
+<script src="../../../../../assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "../../../../../";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation 
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div class="dac-header" id="header">
+
+
+
+
+      <div class="dac-header-inner">
+        <a class="dac-nav-toggle" data-dac-toggle-nav href="javascript:;" title="Open navigation">
+          <span class="dac-nav-hamburger">
+            <span class="dac-nav-hamburger-top"></span>
+            <span class="dac-nav-hamburger-mid"></span>
+            <span class="dac-nav-hamburger-bot"></span>
+          </span>
+        </a>
+        <a class="dac-header-logo" href="../../../../../index.html">
+          <img class="dac-header-logo-image" src="../../../../../assets/images/android_logo.png"
+              srcset="../../../../../assets/images/android_logo@2x.png 2x"
+              width="32" height="36" alt="Android" /> Developers
+          </a>
+
+        <ul class="dac-header-crumbs">
+          
+          <li class="dac-header-crumbs-item"><span class="dac-header-crumbs-link current ">ActionChooserView</a></li>
+        </ul>
+
+        
+        
+        
+  <div class="dac-header-search" id="search-container">
+    <div class="dac-header-search-inner">
+      <div class="dac-sprite dac-search dac-header-search-btn" id="search-btn"></div>
+      <form class="dac-header-search-form" onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '../../../../../')"
+          onkeyup="return search_changed(event, false, '../../../../../')"
+          class="dac-header-search-input" placeholder="Search" />
+          <a class="dac-header-search-close hide" id="search-close">close</a>
+      </form>
+    </div><!-- end dac-header-search-inner -->
+  </div><!-- end dac-header-search -->
+
+  <div class="search_filtered_wrapper">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+        
+
+        <a class="dac-header-console-btn" href="https://play.google.com/apps/publish/">
+          <span class="dac-sprite dac-google-play"></span>
+          <span class="dac-visible-desktop-inline">Developer</span>
+          Console
+        </a>
+
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  
+  <!-- Navigation-->
+  <nav class="dac-nav">
+    <div class="dac-nav-dimmer" data-dac-toggle-nav></div>
+
+    <ul class="dac-nav-list" data-dac-nav>
+      <li class="dac-nav-item dac-nav-head">
+        <a class="dac-nav-link dac-nav-logo" data-dac-toggle-nav href="javascript:;" title="Close navigation">
+          <img class="dac-logo-image" src="../../../../../assets/images/android_logo.png"
+               srcset="../../../../../assets/images/android_logo@2x.png 2x"
+               width="32" height="36" alt="Android" /> Developers
+        </a>
+      </li>
+      <li class="dac-nav-item home">
+        <a class="dac-nav-link dac-visible-mobile-block" href="../../../../../index.html">Home</a>
+        <ul class="dac-nav-secondary about">
+          <li class="dac-nav-item about">
+            <a class="dac-nav-link" href="../../../../../about/index.html">Android</a>
+          </li>
+          <li class="dac-nav-item wear">
+            <a class="dac-nav-link" href="../../../../../wear/index.html">Wear</a>
+          </li>
+          <li class="dac-nav-item tv">
+            <a class="dac-nav-link" href="../../../../../tv/index.html">TV</a>
+          </li>
+          <li class="dac-nav-item auto">
+            <a class="dac-nav-link" href="../../../../../auto/index.html">Auto</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item design">
+        <a class="dac-nav-link" href="../../../../../design/index.html"
+           zh-tw-lang="設計"
+           zh-cn-lang="设计"
+           ru-lang="Проектирование"
+           ko-lang="디자인"
+           ja-lang="設計"
+           es-lang="Diseñar">Design</a>
+      </li>
+      <li class="dac-nav-item develop">
+        <a class="dac-nav-link" href="../../../../../develop/index.html"
+           zh-tw-lang="開發"
+           zh-cn-lang="开发"
+           ru-lang="Разработка"
+           ko-lang="개발"
+           ja-lang="開発"
+           es-lang="Desarrollar">Develop</a>
+        <ul class="dac-nav-secondary develop">
+          <li class="dac-nav-item training">
+            <a class="dac-nav-link" href="../../../../../training/index.html"
+               zh-tw-lang="訓練課程"
+               zh-cn-lang="培训"
+               ru-lang="Курсы"
+               ko-lang="교육"
+               ja-lang="トレーニング"
+               es-lang="Capacitación">Training</a>
+          </li>
+          <li class="dac-nav-item guide">
+            <a class="dac-nav-link" href="../../../../../guide/index.html"
+               zh-tw-lang="API 指南"
+               zh-cn-lang="API 指南"
+               ru-lang="Руководства по API"
+               ko-lang="API 가이드"
+               ja-lang="API ガイド"
+               es-lang="Guías de la API">API Guides</a>
+          </li>
+          <li class="dac-nav-item reference">
+            <a class="dac-nav-link" href="../../../../../reference/packages.html"
+               zh-tw-lang="參考資源"
+               zh-cn-lang="参考"
+               ru-lang="Справочник"
+               ko-lang="참조문서"
+               ja-lang="リファレンス"
+               es-lang="Referencia">Reference</a>
+          </li>
+          <li class="dac-nav-item tools">
+            <a class="dac-nav-link" href="../../../../../sdk/index.html"
+               zh-tw-lang="相關工具"
+               zh-cn-lang="工具"
+               ru-lang="Инструменты"
+               ko-lang="도구"
+               ja-lang="ツール"
+               es-lang="Herramientas">Tools</a></li>
+          <li class="dac-nav-item google">
+            <a class="dac-nav-link" href="../../../../../google/index.html">Google Services</a>
+          </li>
+          
+          <li class="dac-nav-item preview">
+            <a class="dac-nav-link" href="../../../../../preview/index.html">Preview</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item distribute">
+        <a class="dac-nav-link" href="../../../../../distribute/googleplay/index.html"
+           zh-tw-lang="發佈"
+           zh-cn-lang="分发"
+           ru-lang="Распространение"
+           ko-lang="배포"
+           ja-lang="配布"
+           es-lang="Distribuir">Distribute</a>
+        <ul class="dac-nav-secondary distribute">
+          <li class="dac-nav-item googleplay">
+            <a class="dac-nav-link" href="../../../../../distribute/googleplay/index.html">Google Play</a></li>
+          <li class="dac-nav-item essentials">
+            <a class="dac-nav-link" href="../../../../../distribute/essentials/index.html">Essentials</a></li>
+          <li class="dac-nav-item users">
+            <a class="dac-nav-link" href="../../../../../distribute/users/index.html">Get Users</a></li>
+          <li class="dac-nav-item engage">
+            <a class="dac-nav-link" href="../../../../../distribute/engage/index.html">Engage &amp; Retain</a></li>
+          <li class="dac-nav-item monetize">
+            <a class="dac-nav-link" href="../../../../../distribute/monetize/index.html">Earn</a>
+          </li>
+          <li class="dac-nav-item analyze">
+            <a class="dac-nav-link" href="../../../../../distribute/analyze/index.html">Analyze</a>
+          </li>
+          <li class="dac-nav-item stories">
+            <a class="dac-nav-link" href="../../../../../distribute/stories/index.html">Stories</a>
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </nav>
+  <!-- end navigation-->
+  
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content"><div class="cols">
+    <div class="col-4 dac-hidden-mobile" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav">
+      <div id="api-nav-header">
+        <div id="api-level-toggle">
+          <label for="apiLevelCheckbox" class="disabled"
+            title="Select your target API level to dim unavailable APIs">API level: </label>
+          <div class="select-wrapper">
+            <select id="apiLevelSelector">
+              <!-- option elements added by buildApiLevelSelector() -->
+            </select>
+          </div>
+        </div><!-- end toggle -->
+        <div id="api-nav-title">Android APIs</div>
+        </div><!-- end nav header -->
+      <script>
+        var SINCE_DATA = [  ];
+        buildApiLevelSelector();
+      </script>
+
+      <div id="swapper">
+        <div id="nav-panels">
+          <div id="resize-packages-nav">
+            <div id="packages-nav" class="scroll-pane">
+
+              <ul>
+                
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/package-summary.html">android.support.wearable</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/activity/package-summary.html">android.support.wearable.activity</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/companion/package-summary.html">android.support.wearable.companion</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/input/package-summary.html">android.support.wearable.input</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/media/package-summary.html">android.support.wearable.media</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/provider/package-summary.html">android.support.wearable.provider</a></li>
+    <li class="selected api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/view/package-summary.html">android.support.wearable.view</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/watchface/package-summary.html">android.support.wearable.watchface</a></li>
+              </ul><br/>
+
+            </div> <!-- end packages-nav -->
+          </div> <!-- end resize-packages -->
+          <div id="classes-nav" class="scroll-pane">
+
+
+
+            <ul>
+              
+              
+    <li><h2>Interfaces</h2>
+      <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridViewPager.OnAdapterChangeListener.html">GridViewPager.OnAdapterChangeListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridViewPager.OnPageChangeListener.html">GridViewPager.OnPageChangeListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.OnLayoutInflatedListener.html">WatchViewStub.OnLayoutInflatedListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.ClickListener.html">WearableListView.ClickListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnCenterProximityListener.html">WearableListView.OnCenterProximityListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnCentralPositionChangedListener.html">WearableListView.OnCentralPositionChangedListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnScrollListener.html">WearableListView.OnScrollListener</a></li>
+      </ul>
+    </li>
+              
+    <li><h2>Classes</h2>
+      <ul>
+          <li class="selected api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.LayoutParams.html">BoxInsetLayout.LayoutParams</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CardFragment.html">CardFragment</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CardFrame.html">CardFrame</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html">CardScrollView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html">CircledImageView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CircularButton.html">CircularButton</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CrossfadeDrawable.html">CrossfadeDrawable</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.html">DelayedConfirmationView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DismissOverlayView.html">DismissOverlayView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DotsPageIndicator.html">DotsPageIndicator</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/FragmentGridPagerAdapter.html">FragmentGridPagerAdapter</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPagerAdapter.html">GridPagerAdapter</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridViewPager.html">GridViewPager</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridViewPager.LayoutParams.html">GridViewPager.LayoutParams</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ProgressSpinner.html">ProgressSpinner</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/SimpleAnimatorListener.html">SimpleAnimatorListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.html">WatchViewStub</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableFrameLayout.html">WearableFrameLayout</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableFrameLayout.LayoutParams.html">WearableFrameLayout.LayoutParams</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html">WearableListView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.Adapter.html">WearableListView.Adapter</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.ViewHolder.html">WearableListView.ViewHolder</a></li>
+      </ul>
+    </li>
+              
+              
+              
+            </ul><br/>
+
+
+          </div><!-- end classes -->
+        </div><!-- end nav-panels -->
+        <div id="nav-tree" style="display:none" class="scroll-pane">
+          <div id="tree-list"></div>
+        </div><!-- end nav-tree -->
+      </div><!-- end swapper -->
+      <div id="nav-swap">
+      <a class="fullscreen">fullscreen</a>
+      <a href='#' onclick='swapNav();return false;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>
+      </div>
+    </div> <!-- end devdoc-nav -->
+    </div> <!-- end side-nav -->
+    <script type="text/javascript">
+      // init fullscreen based on user pref
+      var fullscreen = readCookie("fullscreen");
+      if (fullscreen != 0) {
+        if (fullscreen == "false") {
+          toggleFullscreen(false);
+        } else {
+          toggleFullscreen(true);
+        }
+      }
+      // init nav version for mobile
+      if (isMobile) {
+        swapNav(); // tree view should be used on mobile
+        $('#nav-swap').hide();
+      } else {
+        chooseDefaultNav();
+        if ($("#nav-tree").is(':visible')) {
+          init_default_navtree("../../../../../");
+        }
+      }
+      // scroll the selected page into view
+      $(document).ready(function() {
+        scrollIntoView("packages-nav");
+        scrollIntoView("classes-nav");
+        });
+    </script>
+
+     
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+  
+   
+  
+  
+   
+  
+  
+   
+  
+  
+
+  
+   
+  
+  
+  
+  
+
+  
+   
+  
+  
+  
+  
+
+  
+   
+  
+  
+  
+  
+
+  
+   
+  
+  
+  
+  
+
+
+<div class="sum-details-links">
+
+Summary:
+
+  <a href="#nestedclasses">Nested Classes</a>
+  
+
+
+
+
+
+  &#124; <a href="#constants">Constants</a>
+  
+
+
+  &#124; <a href="#inhconstants">Inherited Constants</a>
+  
+
+
+
+  &#124; <a href="#inhfields">Inherited Fields</a>
+  
+
+
+  &#124; <a href="#pubctors">Ctors</a>
+  
+
+
+
+  &#124; <a href="#pubmethods">Methods</a>
+  
+
+
+  &#124; <a href="#promethods">Protected Methods</a>
+  
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+  
+  
+  
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+     
+     
+    
+    class
+<h1 itemprop="name">ActionChooserView</h1>
+
+
+
+  
+  
+  
+
+  
+    extends View<br/>
+  
+  
+  
+
+  
+  
+  
+
+
+    
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+         	
+        <td colspan="3" class="jd-inheritance-class-cell">java.lang.Object</td>
+    </tr>
+    
+
+    <tr>
+        
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+         	
+        <td colspan="2" class="jd-inheritance-class-cell">android.view.View</td>
+    </tr>
+    
+
+    <tr>
+        
+            <td class="jd-inheritance-space">&nbsp;</td>
+        
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+         	
+        <td colspan="1" class="jd-inheritance-class-cell">android.support.wearable.view.ActionChooserView</td>
+    </tr>
+    
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">The action chooser view allows the user to select from two options that are presented in the
+ sides of the view. The view background is transparent so that it may be populated by the
+ containing parent.
+ <p>
+ You can add this view to your layout as follows:
+ <pre>
+     &lt;android.support.wearable.view.ActionChooserView
+          android:id="@+id/actions"
+          android:layout_width="match_parent"
+          android:layout_height="match_parent" /&gt;
+ </pre>
+ <p>
+ To set the properties of either option, you can call <code><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#setOption(int, android.graphics.drawable.Drawable, int)">setOption(int, Drawable, int)</a></code>,
+ specifying <code><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#OPTION_START">OPTION_START</a></code> for the option at the start and <code><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#OPTION_END">OPTION_END</a></code> for the
+ option at the end:
+ <p>
+ mChooserView.setOption(ActionChooserView.OPTION_START, acceptIcon, getResources().getColor(
+       R.color.option_color));
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<table id="nestedclasses" class="jd-sumtable"><tr><th colspan="12">Nested Classes</th></tr>
+
+
+  
+    <tr class="alt-color api apilevel-" >
+      <td class="jd-typecol"><nobr>
+        
+         
+         
+        
+        interface</nobr></td>
+      <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></td>
+      <td class="jd-descrcol" width="100%">
+        Interface for receiving callbacks about options chosen from an <code><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></code>.&nbsp;
+        
+    
+
+      </td>
+    </tr>
+    
+    
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr>
+
+
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#OPTION_END">OPTION_END</a></td>
+        <td class="jd-descrcol" width="100%">
+          The option that appears at the end of the chooser.
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#OPTION_START">OPTION_START</a></td>
+        <td class="jd-descrcol" width="100%">
+          The option that appears at the start of the chooser.
+          
+    
+
+        </td>
+    </tr>
+    
+    
+
+</table>
+
+
+
+
+
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<table id="inhconstants" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Constants</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.View" class="jd-expando-trigger closed"
+          ><img id="inherited-constants-android.view.View-trigger"
+          src="../../../../../assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>From class
+android.view.View
+<div id="inherited-constants-android.view.View">
+  <div id="inherited-constants-android.view.View-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-constants-android.view.View-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_ASSERTIVE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_NONE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_POLITE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">DRAWING_CACHE_QUALITY_AUTO</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">DRAWING_CACHE_QUALITY_HIGH</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">DRAWING_CACHE_QUALITY_LOW</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FIND_VIEWS_WITH_CONTENT_DESCRIPTION</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FIND_VIEWS_WITH_TEXT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FOCUSABLES_ALL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FOCUSABLES_TOUCH_MODE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FOCUS_BACKWARD</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FOCUS_DOWN</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FOCUS_FORWARD</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FOCUS_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FOCUS_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FOCUS_UP</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">GONE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">HAPTIC_FEEDBACK_ENABLED</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_AUTO</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_NO</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_YES</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">INVISIBLE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">KEEP_SCREEN_ON</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">LAYER_TYPE_HARDWARE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">LAYER_TYPE_NONE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">LAYER_TYPE_SOFTWARE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">LAYOUT_DIRECTION_INHERIT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">LAYOUT_DIRECTION_LOCALE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">LAYOUT_DIRECTION_LTR</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">LAYOUT_DIRECTION_RTL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">MEASURED_HEIGHT_STATE_SHIFT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">MEASURED_SIZE_MASK</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">MEASURED_STATE_MASK</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">MEASURED_STATE_TOO_SMALL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">NO_ID</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">OVER_SCROLL_ALWAYS</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">OVER_SCROLL_IF_CONTENT_SCROLLS</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">OVER_SCROLL_NEVER</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCREEN_STATE_OFF</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCREEN_STATE_ON</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLLBARS_INSIDE_INSET</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLLBARS_INSIDE_OVERLAY</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLLBARS_OUTSIDE_INSET</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLLBARS_OUTSIDE_OVERLAY</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLLBAR_POSITION_DEFAULT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLLBAR_POSITION_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLLBAR_POSITION_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_AXIS_HORIZONTAL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_AXIS_NONE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_AXIS_VERTICAL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_BOTTOM</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_END</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_START</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_TOP</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SOUND_EFFECTS_ENABLED</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">STATUS_BAR_HIDDEN</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">STATUS_BAR_VISIBLE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_FULLSCREEN</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_HIDE_NAVIGATION</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_IMMERSIVE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_IMMERSIVE_STICKY</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_STABLE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LIGHT_STATUS_BAR</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_VISIBLE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_LAYOUT_FLAGS</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_ALIGNMENT_CENTER</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_ALIGNMENT_GRAVITY</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_ALIGNMENT_INHERIT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_END</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_START</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_END</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_START</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_ANY_RTL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_LTR</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_RTL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_INHERIT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_LOCALE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_LTR</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_RTL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">VIEW_LOG_TAG</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">VISIBLE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+
+
+
+
+
+
+
+</table>
+
+
+
+
+
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+<table id="inhfields" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Fields</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.View" class="jd-expando-trigger closed"
+          ><img id="inherited-fields-android.view.View-trigger"
+          src="../../../../../assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>From class
+android.view.View
+<div id="inherited-fields-android.view.View">
+  <div id="inherited-fields-android.view.View-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-fields-android.view.View-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">ALPHA</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">EMPTY_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">ENABLED_FOCUSED_SELECTED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">ENABLED_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">ENABLED_SELECTED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">ENABLED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">ENABLED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">FOCUSED_SELECTED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_ENABLED_SELECTED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_ENABLED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_FOCUSED_SELECTED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_SELECTED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">ROTATION</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">ROTATION_X</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">ROTATION_Y</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">SCALE_X</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">SCALE_Y</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">SELECTED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">SELECTED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">TRANSLATION_X</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">TRANSLATION_Y</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">TRANSLATION_Z</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">X</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">Y</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">Z</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+
+
+
+
+
+
+
+</table>
+
+
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
+
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            </nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#ActionChooserView(android.content.Context)">ActionChooserView</a></span>(Context context)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            </nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#ActionChooserView(android.content.Context, android.util.AttributeSet)">ActionChooserView</a></span>(Context context, AttributeSet attrs)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            </nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#ActionChooserView(android.content.Context, android.util.AttributeSet, int)">ActionChooserView</a></span>(Context context, AttributeSet attrs, int defStyleAttr)</nobr>
+        
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#addListener(android.support.wearable.view.ActionChooserView.ActionChooserListener)">addListener</a></span>(<a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a> listener)</nobr>
+        
+        <div class="jd-descrdiv">
+          Adds a listener to be notified when an option is chosen.
+          
+    
+
+        </div>
+  
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#canScrollHorizontally(int)">canScrollHorizontally</a></span>(int direction)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#onTouchEvent(android.view.MotionEvent)">onTouchEvent</a></span>(MotionEvent event)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#performSelectOption(int)">performSelectOption</a></span>(int option)</nobr>
+        
+        <div class="jd-descrdiv">
+          Selects the provided option, animating the option's icon to the center of the view and
+ triggering the appropriate callbacks.
+          
+    
+
+        </div>
+  
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#removeListener(android.support.wearable.view.ActionChooserView.ActionChooserListener)">removeListener</a></span>(<a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a> listener)</nobr>
+        
+        <div class="jd-descrdiv">
+          Removes a listener from receiving any future callbacks when an option is chosen.
+          
+    
+
+        </div>
+  
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#setEnabled(boolean)">setEnabled</a></span>(boolean enabled)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#setOption(int, android.graphics.drawable.Drawable, int)">setOption</a></span>(int option, Drawable drawable, int color)</nobr>
+        
+        <div class="jd-descrdiv">
+          Sets the characteristics of one of the predefined options, such as the option circle's
+ color and the <code><a href="../../../../../reference/android/graphics/drawable/Drawable.html">Drawable</a></code> to be drawn in the middle.
+          
+    
+
+        </div>
+  
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="promethods" class="jd-sumtable"><tr><th colspan="12">Protected Methods</th></tr>
+
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#onAttachedToWindow()">onAttachedToWindow</a></span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#onDetachedFromWindow()">onDetachedFromWindow</a></span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#onDraw(android.graphics.Canvas)">onDraw</a></span>(Canvas canvas)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#onLayout(boolean, int, int, int, int)">onLayout</a></span>(boolean changed, int left, int top, int right, int bottom)</nobr>
+        
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.view.View-trigger"
+          src="../../../../../assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  android.view.View
+
+<div id="inherited-methods-android.view.View">
+  <div id="inherited-methods-android.view.View-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.view.View-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">addChildrenForAccessibility</span>(ArrayList&lt;View&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1, int arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">addOnAttachStateChangeListener</span>(View.OnAttachStateChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">addOnLayoutChangeListener</span>(View.OnLayoutChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">addTouchables</span>(ArrayList&lt;View&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ViewPropertyAnimator</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">animate</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">announceForAccessibility</span>(CharSequence arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">awakenScrollBars</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">awakenScrollBars</span>(int arg0, boolean arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">awakenScrollBars</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">bringToFront</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">buildDrawingCache</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">buildDrawingCache</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">buildLayer</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">callOnClick</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">canResolveLayoutDirection</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">canResolveTextAlignment</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">canResolveTextDirection</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">canScrollHorizontally</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">canScrollVertically</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">cancelLongPress</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">cancelPendingInputEvents</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">checkInputConnectionProxy</span>(View arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clearAnimation</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clearFocus</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            static
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">combineMeasuredStates</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeHorizontalScrollExtent</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeHorizontalScrollOffset</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeHorizontalScrollRange</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeScroll</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeSystemWindowInsets</span>(WindowInsets arg0, Rect arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeVerticalScrollExtent</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeVerticalScrollOffset</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeVerticalScrollRange</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            AccessibilityNodeInfo</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">createAccessibilityNodeInfo</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">createContextMenu</span>(ContextMenu arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">destroyDrawingCache</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchApplyWindowInsets</span>(WindowInsets arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchConfigurationChanged</span>(Configuration arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchDisplayHint</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchDragEvent</span>(DragEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchDraw</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchDrawableHotspotChanged</span>(float arg0, float arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchGenericFocusedEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchGenericMotionEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchGenericPointerEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchHoverEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchKeyEvent</span>(KeyEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchKeyEventPreIme</span>(KeyEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchKeyShortcutEvent</span>(KeyEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedFling</span>(float arg0, float arg1, boolean arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedPreFling</span>(float arg0, float arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedPrePerformAccessibilityAction</span>(int arg0, Bundle arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedPreScroll</span>(int arg0, int arg1, int[] arg2, int[] arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedScroll</span>(int arg0, int arg1, int arg2, int arg3, int[] arg4)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchPopulateAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchSetActivated</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchSetPressed</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchSetSelected</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchSystemUiVisibilityChanged</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchTouchEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchTrackballEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchUnhandledMove</span>(View arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchVisibilityChanged</span>(View arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchWindowFocusChanged</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchWindowSystemUiVisiblityChanged</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchWindowVisibilityChanged</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">draw</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">drawableHotspotChanged</span>(float arg0, float arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">drawableStateChanged</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            View</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">findFocus</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            View</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">findViewById</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            View</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">findViewWithTag</span>(Object arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">findViewsWithText</span>(ArrayList&lt;View&gt; arg0, CharSequence arg1, int arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">fitSystemWindows</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            View</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">focusSearch</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">forceLayout</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            static
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">generateViewId</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityLiveRegion</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            AccessibilityNodeProvider</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityNodeProvider</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityTraversalAfter</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityTraversalBefore</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAlpha</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Animation</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAnimation</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            IBinder</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getApplicationWindowToken</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getBackground</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getBackgroundTintList</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getBackgroundTintMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getBaseline</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getBottom</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getBottomFadingEdgeStrength</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getBottomPaddingOffset</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getCameraDistance</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Rect</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipToOutline</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getContentDescription</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            Context</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getContext</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ContextMenu.ContextMenuInfo</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getContextMenuInfo</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            static
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDefaultSize</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Display</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDisplay</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int[]</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDrawableState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Bitmap</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDrawingCache</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Bitmap</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDrawingCache</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDrawingCacheBackgroundColor</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDrawingCacheQuality</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDrawingRect</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            long</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDrawingTime</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getElevation</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getFilterTouchesWhenObscured</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getFitsSystemWindows</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ArrayList&lt;View&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getFocusables</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getFocusedRect</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForeground</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundGravity</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintList</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getGlobalVisibleRect</span>(Rect arg0, Point arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getGlobalVisibleRect</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Handler</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getHandler</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getHeight</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getHitRect</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getHorizontalFadingEdgeLength</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getHorizontalScrollbarHeight</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getId</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getImportantForAccessibility</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getKeepScreenOn</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            KeyEvent.DispatcherState</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getKeyDispatcherState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLabelFor</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLayerType</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLayoutDirection</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ViewGroup.LayoutParams</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLayoutParams</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLeft</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLeftFadingEdgeStrength</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLeftPaddingOffset</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLocalVisibleRect</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLocationInWindow</span>(int[] arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLocationOnScreen</span>(int[] arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Matrix</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMatrix</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMeasuredHeight</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMeasuredHeightAndState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMeasuredState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMeasuredWidth</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMeasuredWidthAndState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMinimumHeight</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMinimumWidth</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getNextFocusDownId</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getNextFocusForwardId</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getNextFocusLeftId</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getNextFocusRightId</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getNextFocusUpId</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            View.OnFocusChangeListener</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getOnFocusChangeListener</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ViewOutlineProvider</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getOutlineProvider</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getOverScrollMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ViewOverlay</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getOverlay</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getPaddingBottom</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getPaddingEnd</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getPaddingLeft</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getPaddingRight</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getPaddingStart</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getPaddingTop</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            ViewParent</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getParent</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ViewParent</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getParentForAccessibility</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getPivotX</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getPivotY</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Resources</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getResources</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRight</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRightFadingEdgeStrength</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRightPaddingOffset</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            View</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootView</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootWindowInsets</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRotation</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRotationX</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRotationY</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScaleX</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScaleY</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollBarDefaultDelayBeforeFade</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollBarFadeDuration</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollBarSize</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollBarStyle</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollIndicators</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollX</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollY</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSolidColor</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            StateListAnimator</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getStateListAnimator</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSuggestedMinimumHeight</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSuggestedMinimumWidth</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSystemUiVisibility</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTag</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTag</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTextAlignment</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTextDirection</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTop</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTopFadingEdgeStrength</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTopPaddingOffset</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            TouchDelegate</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTouchDelegate</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ArrayList&lt;View&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTouchables</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTransitionName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTranslationX</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTranslationY</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTranslationZ</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getVerticalFadingEdgeLength</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getVerticalScrollbarPosition</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getVerticalScrollbarWidth</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ViewTreeObserver</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getViewTreeObserver</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getVisibility</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getWidth</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getWindowAttachCount</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowId</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getWindowId</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getWindowSystemUiVisibility</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            IBinder</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getWindowToken</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getWindowVisibility</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getWindowVisibleDisplayFrame</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getX</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getY</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getZ</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hasFocus</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hasFocusable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hasNestedScrollingParent</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hasOnClickListeners</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hasOverlappingRendering</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hasTransientState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hasWindowFocus</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            static
+            
+            View</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">inflate</span>(Context arg0, int arg1, ViewGroup arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">invalidate</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">invalidate</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">invalidate</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">invalidateDrawable</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">invalidateOutline</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isAccessibilityFocused</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isActivated</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isAttachedToWindow</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isClickable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isContextClickable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isDirty</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isDrawingCacheEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isDuplicateParentStateEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isFocusable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isFocusableInTouchMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isFocused</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isHapticFeedbackEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isHardwareAccelerated</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isHorizontalFadingEdgeEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isHorizontalScrollBarEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isHovered</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isImportantForAccessibility</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isInEditMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isInLayout</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isInTouchMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isLaidOut</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isLayoutDirectionResolved</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isLayoutRequested</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isLongClickable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isNestedScrollingEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isOpaque</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isPaddingOffsetRequired</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isPaddingRelative</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isPressed</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isSaveEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isSaveFromParentEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isScrollContainer</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isScrollbarFadingEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isSelected</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isShown</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isSoundEffectsEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isTextAlignmentResolved</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isTextDirectionResolved</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isVerticalFadingEdgeEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isVerticalScrollBarEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">jumpDrawablesToCurrentState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">layout</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">measure</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            static
+            
+            int[]</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">mergeDrawableStates</span>(int[] arg0, int[] arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">offsetLeftAndRight</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">offsetTopAndBottom</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onAnimationEnd</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onAnimationStart</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onApplyWindowInsets</span>(WindowInsets arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onAttachedToWindow</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onCancelPendingInputEvents</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onCheckIsTextEditor</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onConfigurationChanged</span>(Configuration arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onCreateContextMenu</span>(ContextMenu arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int[]</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onCreateDrawableState</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            InputConnection</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onCreateInputConnection</span>(EditorInfo arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDetachedFromWindow</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDisplayHint</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDragEvent</span>(DragEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDraw</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawForeground</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawScrollBars</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onFilterTouchEventForSecurity</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onFinishInflate</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onFinishTemporaryDetach</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onFocusChanged</span>(boolean arg0, int arg1, Rect arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onGenericMotionEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onHoverChanged</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onHoverEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onInitializeAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onInitializeAccessibilityNodeInfo</span>(AccessibilityNodeInfo arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyDown</span>(int arg0, KeyEvent arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyLongPress</span>(int arg0, KeyEvent arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyMultiple</span>(int arg0, int arg1, KeyEvent arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyPreIme</span>(int arg0, KeyEvent arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyShortcut</span>(int arg0, KeyEvent arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyUp</span>(int arg0, KeyEvent arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onLayout</span>(boolean arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onMeasure</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onOverScrolled</span>(int arg0, int arg1, boolean arg2, boolean arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onPopulateAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideVirtualStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onRtlPropertiesChanged</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Parcelable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onSaveInstanceState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onScreenStateChanged</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onScrollChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onSetAlpha</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onSizeChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onStartTemporaryDetach</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onTouchEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onTrackballEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onVisibilityChanged</span>(View arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onWindowFocusChanged</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onWindowSystemUiVisibilityChanged</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onWindowVisibilityChanged</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">overScrollBy</span>(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, boolean arg8)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performAccessibilityAction</span>(int arg0, Bundle arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performClick</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performContextClick</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performHapticFeedback</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performHapticFeedback</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performLongClick</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">playSoundEffect</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">post</span>(Runnable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postDelayed</span>(Runnable arg0, long arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postInvalidate</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postInvalidate</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postInvalidateDelayed</span>(long arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postInvalidateDelayed</span>(long arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postInvalidateOnAnimation</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postInvalidateOnAnimation</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postOnAnimation</span>(Runnable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postOnAnimationDelayed</span>(Runnable arg0, long arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">refreshDrawableState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">removeCallbacks</span>(Runnable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">removeOnAttachStateChangeListener</span>(View.OnAttachStateChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">removeOnLayoutChangeListener</span>(View.OnLayoutChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestApplyInsets</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestFitSystemWindows</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestFocus</span>(int arg0, Rect arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestFocus</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestFocus</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestFocusFromTouch</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestLayout</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestRectangleOnScreen</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestRectangleOnScreen</span>(Rect arg0, boolean arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestUnbufferedDispatch</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            static
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">resolveSize</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            static
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">resolveSizeAndState</span>(int arg0, int arg1, int arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">restoreHierarchyState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">saveHierarchyState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">scheduleDrawable</span>(Drawable arg0, Runnable arg1, long arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">scrollBy</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">scrollTo</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">sendAccessibilityEvent</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">sendAccessibilityEventUnchecked</span>(AccessibilityEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setAccessibilityDelegate</span>(View.AccessibilityDelegate arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setAccessibilityLiveRegion</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setAccessibilityTraversalAfter</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setAccessibilityTraversalBefore</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setActivated</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setAlpha</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setAnimation</span>(Animation arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setBackground</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setBackgroundColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setBackgroundDrawable</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setBackgroundResource</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setBackgroundTintList</span>(ColorStateList arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setBackgroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setBottom</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setCameraDistance</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setClickable</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setClipBounds</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setClipToOutline</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setContentDescription</span>(CharSequence arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setContextClickable</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setDrawingCacheEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setDrawingCacheQuality</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setDuplicateParentStateEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setElevation</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setFadingEdgeLength</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setFilterTouchesWhenObscured</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setFitsSystemWindows</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setFocusable</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setFocusableInTouchMode</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setHapticFeedbackEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setHasTransientState</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setHorizontalFadingEdgeEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setHorizontalScrollBarEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setHovered</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setId</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setImportantForAccessibility</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setKeepScreenOn</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setLabelFor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setLayerPaint</span>(Paint arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setLayerType</span>(int arg0, Paint arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setLayoutDirection</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setLeft</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setLongClickable</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setMeasuredDimension</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setMinimumHeight</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setMinimumWidth</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setNestedScrollingEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setNextFocusDownId</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setNextFocusForwardId</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setNextFocusLeftId</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setNextFocusRightId</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setNextFocusUpId</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnApplyWindowInsetsListener</span>(View.OnApplyWindowInsetsListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnClickListener</span>(View.OnClickListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnContextClickListener</span>(View.OnContextClickListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnCreateContextMenuListener</span>(View.OnCreateContextMenuListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnDragListener</span>(View.OnDragListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnFocusChangeListener</span>(View.OnFocusChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnGenericMotionListener</span>(View.OnGenericMotionListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnHoverListener</span>(View.OnHoverListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnKeyListener</span>(View.OnKeyListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnLongClickListener</span>(View.OnLongClickListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnScrollChangeListener</span>(View.OnScrollChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnTouchListener</span>(View.OnTouchListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOutlineProvider</span>(ViewOutlineProvider arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOverScrollMode</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setPadding</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setPaddingRelative</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setPivotX</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setPivotY</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setPressed</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setRight</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setRotation</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setRotationX</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setRotationY</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setSaveEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setSaveFromParentEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScaleX</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScaleY</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollBarDefaultDelayBeforeFade</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollBarFadeDuration</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollBarSize</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollBarStyle</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollContainer</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollX</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollY</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollbarFadingEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setSelected</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setSoundEffectsEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setStateListAnimator</span>(StateListAnimator arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setSystemUiVisibility</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTag</span>(int arg0, Object arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTag</span>(Object arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTextAlignment</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTextDirection</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTop</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTouchDelegate</span>(TouchDelegate arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTransitionName</span>(String arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTranslationX</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTranslationY</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTranslationZ</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setVerticalFadingEdgeEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setVerticalScrollBarEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setVerticalScrollbarPosition</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setVisibility</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setWillNotCacheDrawing</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setWillNotDraw</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setX</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setY</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setZ</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">showContextMenu</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startAnimation</span>(Animation arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startDrag</span>(ClipData arg0, View.DragShadowBuilder arg1, Object arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startNestedScroll</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">stopNestedScroll</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">unscheduleDrawable</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">unscheduleDrawable</span>(Drawable arg0, Runnable arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">verifyDrawable</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">willNotCacheDrawing</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">willNotDraw</span>()</nobr>
+        
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.Object-trigger"
+          src="../../../../../assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  java.lang.Object
+
+<div id="inherited-methods-java.lang.Object">
+  <div id="inherited-methods-java.lang.Object-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clone</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">finalize</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            Class&lt;?&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClass</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notify</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notifyAll</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0)</nobr>
+        
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable.Callback" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.graphics.drawable.Drawable.Callback-trigger"
+          src="../../../../../assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  android.graphics.drawable.Drawable.Callback
+
+<div id="inherited-methods-android.graphics.drawable.Drawable.Callback">
+  <div id="inherited-methods-android.graphics.drawable.Drawable.Callback-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.graphics.drawable.Drawable.Callback-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">invalidateDrawable</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">scheduleDrawable</span>(Drawable arg0, Runnable arg1, long arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">unscheduleDrawable</span>(Drawable arg0, Runnable arg1)</nobr>
+        
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
+          src="../../../../../assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  android.view.KeyEvent.Callback
+
+<div id="inherited-methods-android.view.KeyEvent.Callback">
+  <div id="inherited-methods-android.view.KeyEvent.Callback-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.view.KeyEvent.Callback-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyDown</span>(int arg0, KeyEvent arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyLongPress</span>(int arg0, KeyEvent arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyMultiple</span>(int arg0, int arg1, KeyEvent arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyUp</span>(int arg0, KeyEvent arg1)</nobr>
+        
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.accessibility.AccessibilityEventSource" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.view.accessibility.AccessibilityEventSource-trigger"
+          src="../../../../../assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  android.view.accessibility.AccessibilityEventSource
+
+<div id="inherited-methods-android.view.accessibility.AccessibilityEventSource">
+  <div id="inherited-methods-android.view.accessibility.AccessibilityEventSource-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.view.accessibility.AccessibilityEventSource-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">sendAccessibilityEvent</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">sendAccessibilityEventUnchecked</span>(AccessibilityEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- ========= ENUM CONSTANTS DETAIL ======== -->
+<h2>Constants</h2>
+
+
+
+
+<A NAME="OPTION_END"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+        final 
+        int
+      </span>
+        OPTION_END
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>The option that appears at the end of the chooser.
+</p></div>
+
+    
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+            
+                2
+                (0x00000002)
+            
+        </span>
+        </div>
+    
+    </div>
+</div>
+
+
+
+<A NAME="OPTION_START"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+        final 
+        int
+      </span>
+        OPTION_START
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>The option that appears at the start of the chooser.
+</p></div>
+
+    
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+            
+                1
+                (0x00000001)
+            
+        </span>
+        </div>
+    
+    </div>
+</div>
+
+
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<h2>Public Constructors</h2>
+
+
+
+<A NAME="ActionChooserView(android.content.Context)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        
+      </span>
+      <span class="sympad">ActionChooserView</span>
+      <span class="normal">(Context context)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="ActionChooserView(android.content.Context, android.util.AttributeSet)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        
+      </span>
+      <span class="sympad">ActionChooserView</span>
+      <span class="normal">(Context context, AttributeSet attrs)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="ActionChooserView(android.content.Context, android.util.AttributeSet, int)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        
+      </span>
+      <span class="sympad">ActionChooserView</span>
+      <span class="normal">(Context context, AttributeSet attrs, int defStyleAttr)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="addListener(android.support.wearable.view.ActionChooserView.ActionChooserListener)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">addListener</span>
+      <span class="normal">(<a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a> listener)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Adds a listener to be notified when an option is chosen.
+ see <code><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html#onOptionChosen(int)">onOptionChosen(int)</a></code></p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>listener</td>
+          <td>The listener to add.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="canScrollHorizontally(int)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        boolean
+      </span>
+      <span class="sympad">canScrollHorizontally</span>
+      <span class="normal">(int direction)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="onTouchEvent(android.view.MotionEvent)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        boolean
+      </span>
+      <span class="sympad">onTouchEvent</span>
+      <span class="normal">(MotionEvent event)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="performSelectOption(int)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">performSelectOption</span>
+      <span class="normal">(int option)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Selects the provided option, animating the option's icon to the center of the view and
+ triggering the appropriate callbacks.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>option</td>
+          <td>The option to select, either <code><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#OPTION_START">OPTION_START</a></code> or <code><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#OPTION_END">OPTION_END</a></code>.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="removeListener(android.support.wearable.view.ActionChooserView.ActionChooserListener)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">removeListener</span>
+      <span class="normal">(<a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a> listener)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Removes a listener from receiving any future callbacks when an option is chosen.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>listener</td>
+          <td>The listener to remove.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="setEnabled(boolean)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">setEnabled</span>
+      <span class="normal">(boolean enabled)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="setOption(int, android.graphics.drawable.Drawable, int)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">setOption</span>
+      <span class="normal">(int option, Drawable drawable, int color)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Sets the characteristics of one of the predefined options, such as the option circle's
+ color and the <code><a href="../../../../../reference/android/graphics/drawable/Drawable.html">Drawable</a></code> to be drawn in the middle.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>option</td>
+          <td>The option to set, either <code><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#OPTION_START">OPTION_START</a></code> or <code><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html#OPTION_END">OPTION_END</a></code>.</td>
+        </tr>
+        <tr>
+          <th>drawable</td>
+          <td>The drawable to draw in the center of the option circle.</td>
+        </tr>
+        <tr>
+          <th>color</td>
+          <td>The color of the option circle.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+<h2>Protected Methods</h2>
+
+
+
+<A NAME="onAttachedToWindow()"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        protected 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">onAttachedToWindow</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="onDetachedFromWindow()"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        protected 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">onDetachedFromWindow</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="onDraw(android.graphics.Canvas)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        protected 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">onDraw</span>
+      <span class="normal">(Canvas canvas)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="onLayout(boolean, int, int, int, int)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        protected 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">onLayout</span>
+      <span class="normal">(boolean changed, int left, int top, int right, int bottom)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+</div> <!-- jd-content -->
+
+<div class="wrap">
+  <div class="dac-footer">
+    <div class="cols dac-footer-main">
+      <div class="col-1of2">
+        <a class="dac-footer-getnews" data-modal-toggle="newsletter" href="javascript:;">Get news &amp; tips <span
+          class="dac-fab dac-primary"><i class="dac-sprite dac-mail"></i></span></a>
+      </div>
+      <div class="col-1of2 dac-footer-reachout">
+        <div class="dac-footer-contact">
+          <a class="dac-footer-contact-link" href="http://android-developers.blogspot.com/">Blog</a>
+          <a class="dac-footer-contact-link" href="/support.html">Support</a>
+        </div>
+        <div class="dac-footer-social">
+          <a class="dac-fab dac-footer-social-link" href="https://www.youtube.com/user/androiddevelopers"><i class="dac-sprite dac-youtube"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://plus.google.com/+AndroidDevelopers"><i class="dac-sprite dac-gplus"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://twitter.com/AndroidDev"><i class="dac-sprite dac-twitter"></i></a>
+        </div>
+      </div>
+    </div>
+
+    <hr class="dac-footer-separator"/>
+
+    
+      <p class="dac-footer-copyright">
+        
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="../../../../../license.html">
+  Content License</a>.
+      </p>
+      <p class="dac-footer-build">
+        
+    Android Wearable Support&nbsp;r &mdash; 
+<script src="../../../../../timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+      </p>
+    
+
+    <p class="dac-footer-links">
+      <a href="/about/index.html">About Android</a>
+      <a href="/auto/index.html">Auto</a>
+      <a href="/tv/index.html">TV</a>
+      <a href="/wear/index.html">Wear</a>
+      <a href="/legal.html">Legal</a>
+
+      <span id="language" class="locales">
+        <select name="language" onchange="changeLangPref(this.value, true)">
+          <option value="en" selected="selected">English</option>
+          <option value="es">Español</option>
+          <option value="ja">日本語</option>
+          <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
+          <option value="ru">Русский</option>
+          <option value="zh-cn">中文(简体)</option>
+          <option value="zh-tw">中文(繁體)</option>
+        </select>
+      </span>
+    </p>
+  </div>
+</div> <!-- end footer -->
+
+<div data-modal="newsletter" data-newsletter data-swap class="dac-modal newsletter">
+  <div class="dac-modal-container">
+    <div class="dac-modal-window">
+      <header class="dac-modal-header">
+        <button class="dac-modal-header-close" data-modal-toggle><i class="dac-sprite dac-close"></i></button>
+        <div class="dac-swap" data-swap-container>
+          <section class="dac-swap-section dac-active dac-down">
+            <h2 class="norule dac-modal-header-title">Get the latest Android developer news and tips that will help you find success on Google Play.</h2>
+            <p class="dac-modal-header-subtitle">&#42; Required Fields</p>
+          </section>
+          <section class="dac-swap-section dac-up">
+            <h2 class="norule dac-modal-header-title">Hooray!</h2>
+          </section>
+        </div>
+      </header>
+      <div class="dac-swap" data-swap-container>
+        <section class="dac-swap-section dac-active dac-left">
+          <form action="https://docs.google.com/forms/d/1QgnkzbEJIDu9lMEea0mxqWrXUJu0oBCLD7ar23V0Yys/formResponse" class="dac-form" method="post" target="dac-newsletter-iframe">
+            <section class="dac-modal-content">
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-full-name" class="dac-form-floatlabel">Full name</label>
+                      <input type="text" class="dac-form-input" name="entry.1357890476" id="newsletter-full-name" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-email" class="dac-form-floatlabel">Email address</label>
+                      <input type="email" class="dac-form-input" name="entry.472100832" id="newsletter-email" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-company" class="dac-form-floatlabel">Company / developer name</label>
+                      <input type="text" class="dac-form-input" name="entry.1664780309" id="newsletter-company">
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-play-store" class="dac-form-floatlabel">One of your Play Store app URLs</label>
+                      <input type="url" class="dac-form-input" name="entry.47013838" id="newsletter-play-store" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <legend class="dac-form-legend">Which best describes your business:<span class="dac-form-required">*</span>
+                    </legend>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-app" required>
+                      <label for="newsletter-business-type-app" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-app" class="dac-form-label">Apps</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-games" required>
+                      <label for="newsletter-business-type-games" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-games" class="dac-form-label">Games</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps and Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-appsgames" required>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-label">Apps &amp; Games</label>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol newsletter-checkboxes">
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.732309842" id="newsletter-add" required value="Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.">
+                          <label for="newsletter-add" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-add" class="dac-form-label dac-form-aside">Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.2045036090" id="newsletter-terms" required value="I acknowledge that the information provided in this form will be subject to Google's privacy policy (https://www.google.com/policies/privacy/).">
+                          <label for="newsletter-terms" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-terms" class="dac-form-label dac-form-aside">I acknowledge that the information provided in this form will be subject to <a href="https://www.google.com/policies/privacy/">Google's privacy policy</a>.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+            </section>
+            <footer class="dac-modal-footer">
+              <div class="cols">
+                <div class="col-2of5">
+                </div>
+              </div>
+              <button type="submit" value="Submit" class="dac-fab dac-primary dac-large dac-modal-action"><i class="dac-sprite dac-arrow-right"></i></button>
+            </footer>
+          </form>
+        </section>
+        <section class="dac-swap-section dac-right">
+          <div class="dac-modal-content">
+            <p class="newsletter-success-message">
+              You have successfully signed up for the latest Android developer news and tips.
+            </p>
+          </div>
+        </section>
+      </div>
+    </div>
+  </div>
+</div> <!-- end footer -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end .cols --> 
+</div> <!-- end body-content --> 
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/android/support/wearable/view/ActionLabel.html b/docs/html/reference/android/support/wearable/view/ActionLabel.html
index f8cb733..cb974e8 100644
--- a/docs/html/reference/android/support/wearable/view/ActionLabel.html
+++ b/docs/html/reference/android/support/wearable/view/ActionLabel.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="selected api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -805,7 +812,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-constants-android.view.View">
@@ -1431,6 +1438,78 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_BOTTOM</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_END</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_START</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_TOP</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SOUND_EFFECTS_ENABLED</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1551,7 +1630,7 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
-        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LIGHT_STATUS_BAR</td>
         <td class="jd-descrcol" width="100%">
           
           
@@ -1563,6 +1642,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1573,7 +1664,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_LAYOUT_FLAGS</td>
         <td class="jd-descrcol" width="100%">
@@ -1585,7 +1676,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_CENTER</td>
         <td class="jd-descrcol" width="100%">
@@ -1597,7 +1688,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_GRAVITY</td>
         <td class="jd-descrcol" width="100%">
@@ -1609,7 +1700,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_INHERIT</td>
         <td class="jd-descrcol" width="100%">
@@ -1621,7 +1712,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1633,7 +1724,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1645,7 +1736,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1657,7 +1748,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1669,7 +1760,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_ANY_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -1681,7 +1772,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG</td>
         <td class="jd-descrcol" width="100%">
@@ -1693,8 +1784,32 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_LTR</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_RTL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1705,7 +1820,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
@@ -1717,7 +1832,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
@@ -1729,7 +1844,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -1741,7 +1856,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">VIEW_LOG_TAG</td>
         <td class="jd-descrcol" width="100%">
@@ -1753,7 +1868,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">VISIBLE</td>
         <td class="jd-descrcol" width="100%">
@@ -1798,7 +1913,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-fields-android.view.View">
@@ -3134,7 +3249,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -4072,7 +4187,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
         
   </td></tr>
 
@@ -4088,13 +4203,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4110,7 +4241,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4126,7 +4257,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4142,7 +4273,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4158,7 +4289,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4174,7 +4305,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4190,7 +4321,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4206,7 +4337,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4222,7 +4353,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4238,7 +4369,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4254,7 +4385,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4270,7 +4401,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4286,7 +4417,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4302,7 +4433,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4318,7 +4449,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4334,7 +4465,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4350,7 +4481,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4366,7 +4497,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4382,7 +4513,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4398,7 +4529,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4414,7 +4545,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4430,7 +4561,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4446,6 +4577,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -4706,6 +4853,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -4718,7 +4881,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4734,7 +4897,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4750,7 +4913,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4766,7 +4929,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4782,7 +4945,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4798,7 +4961,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4814,7 +4977,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4830,7 +4993,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4846,7 +5009,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4862,7 +5025,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4878,7 +5041,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4894,7 +5057,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4910,7 +5073,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4926,7 +5089,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4942,7 +5105,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4958,7 +5121,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4974,7 +5137,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4990,6 +5153,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForeground</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -4997,6 +5176,54 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundGravity</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintList</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -5006,7 +5233,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5022,7 +5249,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5038,7 +5265,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5054,7 +5281,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5070,7 +5297,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5086,7 +5313,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5102,7 +5329,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5118,7 +5345,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5134,7 +5361,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5150,7 +5377,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5166,7 +5393,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5182,7 +5409,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5198,7 +5425,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5214,7 +5441,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5230,7 +5457,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5246,7 +5473,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5262,7 +5489,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5278,7 +5505,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5294,7 +5521,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5310,7 +5537,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5326,7 +5553,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5342,7 +5569,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5358,7 +5585,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5374,7 +5601,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5390,7 +5617,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5406,7 +5633,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5422,7 +5649,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5438,7 +5665,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5454,7 +5681,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5470,7 +5697,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5486,7 +5713,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5502,7 +5729,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5518,7 +5745,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5534,7 +5761,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5550,7 +5777,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5566,7 +5793,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5582,7 +5809,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5598,7 +5825,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5614,7 +5841,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5630,7 +5857,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5646,7 +5873,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5662,7 +5889,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5678,7 +5905,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5694,7 +5921,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5710,7 +5937,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5726,7 +5953,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5742,7 +5969,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5758,7 +5985,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5774,7 +6001,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5790,7 +6017,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5806,7 +6033,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5822,7 +6049,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5838,6 +6065,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootWindowInsets</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -5986,6 +6229,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollIndicators</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -5998,7 +6257,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6014,7 +6273,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6030,7 +6289,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6046,7 +6305,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6062,7 +6321,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6078,7 +6337,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6094,7 +6353,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6110,7 +6369,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6126,7 +6385,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6142,7 +6401,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6158,7 +6417,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6174,7 +6433,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6190,7 +6449,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6206,7 +6465,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6222,7 +6481,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6238,7 +6497,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6254,7 +6513,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6270,7 +6529,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6286,7 +6545,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6302,7 +6561,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6318,7 +6577,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6334,7 +6593,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6350,7 +6609,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6366,7 +6625,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6382,7 +6641,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6398,7 +6657,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6414,7 +6673,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6430,7 +6689,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6446,7 +6705,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6462,7 +6721,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6478,7 +6737,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6494,7 +6753,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6510,7 +6769,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6526,7 +6785,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6542,7 +6801,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6558,7 +6817,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6574,7 +6833,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6590,7 +6849,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6606,7 +6865,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6622,7 +6881,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6638,7 +6897,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6654,7 +6913,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6670,7 +6929,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6686,7 +6945,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6702,7 +6961,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6718,7 +6977,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6734,7 +6993,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6750,7 +7009,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6766,7 +7025,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6782,7 +7041,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6798,7 +7057,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6814,6 +7073,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isContextClickable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -7714,6 +7989,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawForeground</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -7726,7 +8017,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7742,7 +8033,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7758,7 +8049,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7774,7 +8065,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7790,7 +8081,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7806,7 +8097,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7822,7 +8113,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7838,7 +8129,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7854,7 +8145,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7870,7 +8161,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7886,7 +8177,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7902,7 +8193,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7918,7 +8209,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7934,7 +8225,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7950,7 +8241,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7966,7 +8257,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7982,7 +8273,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7998,7 +8289,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8014,7 +8305,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8030,6 +8321,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -8040,13 +8347,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideVirtualStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8062,7 +8385,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8078,7 +8401,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8094,7 +8417,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8110,7 +8433,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8126,7 +8449,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8142,7 +8465,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8158,7 +8481,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8174,7 +8497,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8190,7 +8513,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8206,7 +8529,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8222,7 +8545,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8238,7 +8561,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8254,7 +8577,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8270,7 +8593,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8286,7 +8609,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8302,6 +8625,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performContextClick</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -9208,7 +9547,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        <span class="sympad">setContextClickable</span>(boolean arg0)</nobr>
         
   </td></tr>
 
@@ -9224,13 +9563,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9246,7 +9601,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9262,7 +9617,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9278,7 +9633,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9294,7 +9649,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9310,7 +9665,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9326,7 +9681,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9342,7 +9697,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9358,7 +9713,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9374,6 +9729,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -9384,13 +9755,61 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHapticFeedbackEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9406,7 +9825,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9422,7 +9841,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9438,7 +9857,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9454,7 +9873,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9470,7 +9889,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9486,7 +9905,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9502,7 +9921,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9518,7 +9937,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9534,7 +9953,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9550,7 +9969,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9566,7 +9985,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9582,7 +10001,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9598,7 +10017,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9614,7 +10033,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9630,7 +10049,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9646,7 +10065,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9662,7 +10081,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9678,7 +10097,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9694,7 +10113,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9710,7 +10129,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9726,7 +10145,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9742,7 +10161,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9758,7 +10177,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9774,7 +10193,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9790,6 +10209,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnContextClickListener</span>(View.OnContextClickListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -9912,7 +10347,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        <span class="sympad">setOnScrollChangeListener</span>(View.OnScrollChangeListener arg0)</nobr>
         
   </td></tr>
 
@@ -9928,13 +10363,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnTouchListener</span>(View.OnTouchListener arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9950,7 +10401,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9966,7 +10417,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9982,7 +10433,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9998,7 +10449,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10014,7 +10465,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10030,7 +10481,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10046,7 +10497,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10062,7 +10513,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10078,7 +10529,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10094,7 +10545,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10110,7 +10561,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10126,7 +10577,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10142,7 +10593,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10158,7 +10609,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10174,7 +10625,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10190,7 +10641,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10206,7 +10657,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10222,7 +10673,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10238,7 +10689,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10254,6 +10705,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -10264,13 +10731,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollX</span>(int arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10286,7 +10769,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10302,7 +10785,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10318,7 +10801,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10334,7 +10817,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10350,7 +10833,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10366,7 +10849,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10382,7 +10865,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10398,7 +10881,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10414,7 +10897,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10430,7 +10913,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10446,7 +10929,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10462,7 +10945,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10478,7 +10961,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10494,7 +10977,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10510,7 +10993,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10526,7 +11009,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10542,7 +11025,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10558,7 +11041,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10574,7 +11057,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10590,7 +11073,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10606,7 +11089,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10622,7 +11105,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10638,7 +11121,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10654,7 +11137,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10670,7 +11153,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10686,6 +11169,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -10872,7 +11371,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -11074,7 +11573,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.graphics.drawable.Drawable.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -11148,7 +11647,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -11238,7 +11737,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.accessibility.AccessibilityEventSource" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.accessibility.AccessibilityEventSource-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
diff --git a/docs/html/reference/android/support/wearable/view/ActionPage.html b/docs/html/reference/android/support/wearable/view/ActionPage.html
index 69c4dfb..fb5b88a 100644
--- a/docs/html/reference/android/support/wearable/view/ActionPage.html
+++ b/docs/html/reference/android/support/wearable/view/ActionPage.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="selected api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -829,7 +836,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.ViewGroup" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.ViewGroup-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup
 <div id="inherited-constants-android.view.ViewGroup">
@@ -973,7 +980,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-constants-android.view.View">
@@ -1599,6 +1606,78 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_BOTTOM</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_END</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_START</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_TOP</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SOUND_EFFECTS_ENABLED</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1719,7 +1798,7 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
-        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LIGHT_STATUS_BAR</td>
         <td class="jd-descrcol" width="100%">
           
           
@@ -1731,6 +1810,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1741,7 +1832,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_LAYOUT_FLAGS</td>
         <td class="jd-descrcol" width="100%">
@@ -1753,7 +1844,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_CENTER</td>
         <td class="jd-descrcol" width="100%">
@@ -1765,7 +1856,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_GRAVITY</td>
         <td class="jd-descrcol" width="100%">
@@ -1777,7 +1868,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_INHERIT</td>
         <td class="jd-descrcol" width="100%">
@@ -1789,7 +1880,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1801,7 +1892,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1813,7 +1904,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1825,7 +1916,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1837,7 +1928,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_ANY_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -1849,7 +1940,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG</td>
         <td class="jd-descrcol" width="100%">
@@ -1861,8 +1952,32 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_LTR</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_RTL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1873,7 +1988,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
@@ -1885,7 +2000,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
@@ -1897,7 +2012,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -1909,7 +2024,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">VIEW_LOG_TAG</td>
         <td class="jd-descrcol" width="100%">
@@ -1921,7 +2036,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">VISIBLE</td>
         <td class="jd-descrcol" width="100%">
@@ -2013,7 +2128,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-fields-android.view.View">
@@ -3133,7 +3248,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewGroup" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewGroup-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -3799,7 +3914,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
         
   </td></tr>
 
@@ -3815,13 +3930,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3837,7 +3968,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3853,7 +3984,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3869,7 +4000,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3885,7 +4016,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3901,7 +4032,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3917,7 +4048,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3933,7 +4064,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3949,7 +4080,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3965,7 +4096,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3981,7 +4112,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3997,7 +4128,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4013,7 +4144,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4029,7 +4160,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4045,7 +4176,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4061,7 +4192,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4077,7 +4208,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4093,7 +4224,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4109,7 +4240,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4125,7 +4256,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4141,7 +4272,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4157,7 +4288,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4173,7 +4304,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4189,6 +4320,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -4807,38 +4954,6 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationEnd</span>()</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationStart</span>()</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAttachedToWindow</span>()</nobr>
         
   </td></tr>
@@ -5095,6 +5210,38 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewAdded</span>(View arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewRemoved</span>(View arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">recomputeViewAttributes</span>(View arg0)</nobr>
         
   </td></tr>
@@ -5700,10 +5847,10 @@
             
             
             
-            void</nobr>
+            ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">startLayoutAnimation</span>()</nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
         
   </td></tr>
 
@@ -5719,7 +5866,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">startViewTransition</span>(View arg0)</nobr>
+        <span class="sympad">startLayoutAnimation</span>()</nobr>
         
   </td></tr>
 
@@ -5735,6 +5882,22 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startViewTransition</span>(View arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">updateViewLayout</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
         
   </td></tr>
@@ -5751,7 +5914,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -6689,7 +6852,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
         
   </td></tr>
 
@@ -6705,13 +6868,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6727,7 +6906,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6743,7 +6922,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6759,7 +6938,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6775,7 +6954,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6791,7 +6970,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6807,7 +6986,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6823,7 +7002,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6839,7 +7018,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6855,7 +7034,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6871,7 +7050,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6887,7 +7066,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6903,7 +7082,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6919,7 +7098,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6935,7 +7114,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6951,7 +7130,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6967,7 +7146,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6983,7 +7162,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6999,7 +7178,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7015,7 +7194,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7031,7 +7210,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7047,7 +7226,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7063,6 +7242,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -7323,6 +7518,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -7335,7 +7546,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7351,7 +7562,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7367,7 +7578,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7383,7 +7594,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7399,7 +7610,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7415,7 +7626,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7431,7 +7642,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7447,7 +7658,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7463,7 +7674,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7479,7 +7690,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7495,7 +7706,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7511,7 +7722,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7527,7 +7738,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7543,7 +7754,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7559,7 +7770,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7575,7 +7786,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7591,7 +7802,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7607,6 +7818,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForeground</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -7614,6 +7841,54 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundGravity</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintList</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -7623,7 +7898,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7639,7 +7914,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7655,7 +7930,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7671,7 +7946,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7687,7 +7962,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7703,7 +7978,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7719,7 +7994,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7735,7 +8010,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7751,7 +8026,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7767,7 +8042,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7783,7 +8058,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7799,7 +8074,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7815,7 +8090,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7831,7 +8106,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7847,7 +8122,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7863,7 +8138,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7879,7 +8154,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7895,7 +8170,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7911,7 +8186,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7927,7 +8202,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7943,7 +8218,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7959,7 +8234,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7975,7 +8250,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7991,7 +8266,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8007,7 +8282,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8023,7 +8298,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8039,7 +8314,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8055,7 +8330,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8071,7 +8346,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8087,7 +8362,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8103,7 +8378,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8119,7 +8394,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8135,7 +8410,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8151,7 +8426,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8167,7 +8442,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8183,7 +8458,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8199,7 +8474,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8215,7 +8490,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8231,7 +8506,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8247,7 +8522,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8263,7 +8538,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8279,7 +8554,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8295,7 +8570,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8311,7 +8586,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8327,7 +8602,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8343,7 +8618,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8359,7 +8634,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8375,7 +8650,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8391,7 +8666,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8407,7 +8682,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8423,7 +8698,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8439,7 +8714,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8455,6 +8730,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootWindowInsets</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -8603,6 +8894,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollIndicators</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -8615,7 +8922,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8631,7 +8938,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8647,7 +8954,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8663,7 +8970,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8679,7 +8986,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8695,7 +9002,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8711,7 +9018,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8727,7 +9034,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8743,7 +9050,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8759,7 +9066,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8775,7 +9082,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8791,7 +9098,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8807,7 +9114,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8823,7 +9130,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8839,7 +9146,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8855,7 +9162,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8871,7 +9178,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8887,7 +9194,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8903,7 +9210,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8919,7 +9226,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8935,7 +9242,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8951,7 +9258,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8967,7 +9274,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8983,7 +9290,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8999,7 +9306,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9015,7 +9322,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9031,7 +9338,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9047,7 +9354,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9063,7 +9370,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9079,7 +9386,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9095,7 +9402,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9111,7 +9418,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9127,7 +9434,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9143,7 +9450,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9159,7 +9466,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9175,7 +9482,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9191,7 +9498,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9207,7 +9514,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9223,7 +9530,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9239,7 +9546,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9255,7 +9562,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9271,7 +9578,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9287,7 +9594,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9303,7 +9610,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9319,7 +9626,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9335,7 +9642,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9351,7 +9658,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9367,7 +9674,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9383,7 +9690,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9399,7 +9706,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9415,7 +9722,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9431,6 +9738,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isContextClickable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -10331,6 +10654,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawForeground</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -10343,7 +10682,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10359,7 +10698,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10375,7 +10714,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10391,7 +10730,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10407,7 +10746,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10423,7 +10762,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10439,7 +10778,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10455,7 +10794,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10471,7 +10810,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10487,7 +10826,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10503,7 +10842,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10519,7 +10858,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10535,7 +10874,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10551,7 +10890,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10567,7 +10906,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10583,7 +10922,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10599,7 +10938,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10615,7 +10954,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10631,7 +10970,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10647,6 +10986,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -10657,13 +11012,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideVirtualStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10679,7 +11050,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10695,7 +11066,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10711,7 +11082,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10727,7 +11098,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10743,7 +11114,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10759,7 +11130,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10775,7 +11146,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10791,7 +11162,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10807,7 +11178,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10823,7 +11194,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10839,7 +11210,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10855,7 +11226,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10871,7 +11242,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10887,7 +11258,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10903,7 +11274,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10919,6 +11290,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performContextClick</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -11825,7 +12212,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        <span class="sympad">setContextClickable</span>(boolean arg0)</nobr>
         
   </td></tr>
 
@@ -11841,13 +12228,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11863,7 +12266,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11879,7 +12282,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11895,7 +12298,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11911,7 +12314,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11927,7 +12330,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11943,7 +12346,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11959,7 +12362,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11975,7 +12378,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11991,6 +12394,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -12001,13 +12420,61 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHapticFeedbackEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12023,7 +12490,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12039,7 +12506,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12055,7 +12522,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12071,7 +12538,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12087,7 +12554,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12103,7 +12570,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12119,7 +12586,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12135,7 +12602,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12151,7 +12618,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12167,7 +12634,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12183,7 +12650,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12199,7 +12666,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12215,7 +12682,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12231,7 +12698,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12247,7 +12714,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12263,7 +12730,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12279,7 +12746,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12295,7 +12762,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12311,7 +12778,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12327,7 +12794,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12343,7 +12810,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12359,7 +12826,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12375,7 +12842,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12391,7 +12858,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12407,6 +12874,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnContextClickListener</span>(View.OnContextClickListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -12529,7 +13012,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        <span class="sympad">setOnScrollChangeListener</span>(View.OnScrollChangeListener arg0)</nobr>
         
   </td></tr>
 
@@ -12545,13 +13028,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnTouchListener</span>(View.OnTouchListener arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12567,7 +13066,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12583,7 +13082,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12599,7 +13098,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12615,7 +13114,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12631,7 +13130,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12647,7 +13146,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12663,7 +13162,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12679,7 +13178,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12695,7 +13194,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12711,7 +13210,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12727,7 +13226,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12743,7 +13242,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12759,7 +13258,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12775,7 +13274,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12791,7 +13290,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12807,7 +13306,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12823,7 +13322,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12839,7 +13338,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12855,7 +13354,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12871,6 +13370,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -12881,13 +13396,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollX</span>(int arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12903,7 +13434,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12919,7 +13450,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12935,7 +13466,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12951,7 +13482,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12967,7 +13498,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12983,7 +13514,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12999,7 +13530,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13015,7 +13546,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13031,7 +13562,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13047,7 +13578,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13063,7 +13594,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13079,7 +13610,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13095,7 +13626,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13111,7 +13642,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13127,7 +13658,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13143,7 +13674,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13159,7 +13690,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13175,7 +13706,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13191,7 +13722,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13207,7 +13738,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13223,7 +13754,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13239,7 +13770,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13255,7 +13786,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13271,7 +13802,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13287,7 +13818,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13303,6 +13834,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -13489,7 +14036,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -13691,7 +14238,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewParent" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewParent-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14357,6 +14904,22 @@
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1)</nobr>
         
   </td></tr>
@@ -14373,7 +14936,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewManager" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewManager-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14447,7 +15010,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.graphics.drawable.Drawable.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14521,7 +15084,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14611,7 +15174,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.accessibility.AccessibilityEventSource" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.accessibility.AccessibilityEventSource-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
diff --git a/docs/html/reference/android/support/wearable/view/BoxInsetLayout.LayoutParams.html b/docs/html/reference/android/support/wearable/view/BoxInsetLayout.LayoutParams.html
index d716836..e6a117b 100644
--- a/docs/html/reference/android/support/wearable/view/BoxInsetLayout.LayoutParams.html
+++ b/docs/html/reference/android/support/wearable/view/BoxInsetLayout.LayoutParams.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -894,7 +901,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.ViewGroup.LayoutParams" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.ViewGroup.LayoutParams-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup.LayoutParams
 <div id="inherited-constants-android.view.ViewGroup.LayoutParams">
@@ -994,7 +1001,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.widget.FrameLayout.LayoutParams" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.widget.FrameLayout.LayoutParams-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.widget.FrameLayout.LayoutParams
 <div id="inherited-fields-android.widget.FrameLayout.LayoutParams">
@@ -1034,7 +1041,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.ViewGroup.MarginLayoutParams" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.ViewGroup.MarginLayoutParams-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup.MarginLayoutParams
 <div id="inherited-fields-android.view.ViewGroup.MarginLayoutParams">
@@ -1122,7 +1129,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.ViewGroup.LayoutParams" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.ViewGroup.LayoutParams-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup.LayoutParams
 <div id="inherited-fields-android.view.ViewGroup.LayoutParams">
@@ -1353,7 +1360,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewGroup.MarginLayoutParams" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewGroup.MarginLayoutParams-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1523,7 +1530,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewGroup.LayoutParams" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewGroup.LayoutParams-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1581,7 +1588,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/view/BoxInsetLayout.html b/docs/html/reference/android/support/wearable/view/BoxInsetLayout.html
index d315135..64b6b34 100644
--- a/docs/html/reference/android/support/wearable/view/BoxInsetLayout.html
+++ b/docs/html/reference/android/support/wearable/view/BoxInsetLayout.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -146,7 +151,7 @@
 
 </head>
 
-<body class="gc-documentation 
+<body class="gc-documentation
   develop reference" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
@@ -221,13 +226,13 @@
           </a>
 
         <ul class="dac-header-crumbs">
-          
+
           <li class="dac-header-crumbs-item"><span class="dac-header-crumbs-link current ">BoxInsetLayout</a></li>
         </ul>
 
-        
-        
-        
+
+
+
   <div class="dac-header-search" id="search-container">
     <div class="dac-header-search-inner">
       <div class="dac-sprite dac-search dac-header-search-btn" id="search-btn"></div>
@@ -267,7 +272,7 @@
     </div>
   </div>
 
-        
+
 
         <a class="dac-header-console-btn" href="https://play.google.com/apps/publish/">
           <span class="dac-sprite dac-google-play"></span>
@@ -284,7 +289,7 @@
     </div>
   </div> <!--end header-wrapper -->
 
-  
+
   <!-- Navigation-->
   <nav class="dac-nav">
     <div class="dac-nav-dimmer" data-dac-toggle-nav></div>
@@ -370,7 +375,7 @@
           <li class="dac-nav-item google">
             <a class="dac-nav-link" href="../../../../../google/index.html">Google Services</a>
           </li>
-          
+
           <li class="dac-nav-item preview">
             <a class="dac-nav-link" href="../../../../../preview/index.html">Preview</a>
           </li>
@@ -407,7 +412,7 @@
     </ul>
   </nav>
   <!-- end navigation-->
-  
+
 
 
 
@@ -439,7 +444,7 @@
             <div id="packages-nav" class="scroll-pane">
 
               <ul>
-                
+
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/wearable/package-summary.html">android.support.wearable</a></li>
     <li class="api apilevel-">
@@ -465,10 +470,11 @@
 
 
             <ul>
-              
-              
+
+
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -481,9 +487,10 @@
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnScrollListener.html">WearableListView.OnScrollListener</a></li>
       </ul>
     </li>
-              
+
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="selected api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -511,9 +518,9 @@
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.ViewHolder.html">WearableListView.ViewHolder</a></li>
       </ul>
     </li>
-              
-              
-              
+
+
+
             </ul><br/>
 
 
@@ -556,7 +563,7 @@
         });
     </script>
 
-     
+
 
 
 
@@ -566,74 +573,74 @@
 
 
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-   
-  
-  
-  
 
-  
-   
-  
-  
-   
-  
-  
-   
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 <div class="sum-details-links">
@@ -641,7 +648,7 @@
 Summary:
 
   <a href="#nestedclasses">Nested Classes</a>
-  
+
 
 
 
@@ -649,25 +656,25 @@
 
 
   &#124; <a href="#inhconstants">Inherited Constants</a>
-  
+
 
 
 
   &#124; <a href="#inhfields">Inherited Fields</a>
-  
+
 
 
   &#124; <a href="#pubctors">Ctors</a>
-  
+
 
 
 
   &#124; <a href="#pubmethods">Methods</a>
-  
+
 
 
   &#124; <a href="#promethods">Protected Methods</a>
-  
+
 
 
   &#124; <a href="#inhmethods">Inherited Methods</a>
@@ -676,9 +683,9 @@
 
 </div><!-- end sum-details-links -->
 <div class="api-level">
-  
-  
-  
+
+
+
 
 </div>
 </div><!-- end api-info-block -->
@@ -688,38 +695,38 @@
 
 <div id="jd-header">
     public
-     
-     
-    
+
+
+
     class
 <h1 itemprop="name">BoxInsetLayout</h1>
 
 
 
-  
-  
-  
 
-  
-  
-  
 
-  
-  
-  
 
-  
+
+
+
+
+
+
+
+
+
+
     extends FrameLayout<br/>
-  
-  
-  
-
-  
-  
-  
 
 
-    
+
+
+
+
+
+
+
+
 
 
 </div><!-- end header -->
@@ -731,54 +738,54 @@
 
 
     <tr>
-         	
+
         <td colspan="5" class="jd-inheritance-class-cell">java.lang.Object</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="4" class="jd-inheritance-class-cell">android.view.View</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="3" class="jd-inheritance-class-cell">android.view.ViewGroup</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="2" class="jd-inheritance-class-cell">android.widget.FrameLayout</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="1" class="jd-inheritance-class-cell">android.support.wearable.view.BoxInsetLayout</td>
     </tr>
-    
+
 
 </table>
 
@@ -833,25 +840,25 @@
 <table id="nestedclasses" class="jd-sumtable"><tr><th colspan="12">Nested Classes</th></tr>
 
 
-  
+
     <tr class="alt-color api apilevel-" >
       <td class="jd-typecol"><nobr>
-        
-         
-         
-        
+
+
+
+
         class</nobr></td>
       <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.LayoutParams.html">BoxInsetLayout.LayoutParams</a></td>
       <td class="jd-descrcol" width="100%">
         adds <code>layout_box</code> attribute to layout parameters
 &nbsp;
-        
-    
+
+
 
       </td>
     </tr>
-    
-    
+
+
 
 
 
@@ -881,7 +888,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.ViewGroup" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.ViewGroup-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup
 <div id="inherited-constants-android.view.ViewGroup">
@@ -890,129 +897,129 @@
   </div>
   <div id="inherited-constants-android.view.ViewGroup-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CLIP_TO_PADDING_MASK</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_AFTER_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_BEFORE_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_BLOCK_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_MODE_CLIP_BOUNDS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_MODE_OPTICAL_BOUNDS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_ALL_CACHES</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_ANIMATION_CACHE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_NO_CACHE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_SCROLLING_CACHE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
 </table>
   </div>
 </div>
@@ -1025,7 +1032,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-constants-android.view.View">
@@ -1034,957 +1041,1065 @@
   </div>
   <div id="inherited-constants-android.view.View-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_ASSERTIVE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_NONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_POLITE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">DRAWING_CACHE_QUALITY_AUTO</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">DRAWING_CACHE_QUALITY_HIGH</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">DRAWING_CACHE_QUALITY_LOW</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FIND_VIEWS_WITH_CONTENT_DESCRIPTION</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FIND_VIEWS_WITH_TEXT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUSABLES_ALL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUSABLES_TOUCH_MODE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_BACKWARD</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_DOWN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_FORWARD</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_LEFT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_RIGHT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_UP</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">GONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">HAPTIC_FEEDBACK_ENABLED</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_AUTO</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_NO</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_YES</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">INVISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">KEEP_SCREEN_ON</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYER_TYPE_HARDWARE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYER_TYPE_NONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYER_TYPE_SOFTWARE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_HEIGHT_STATE_SHIFT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_SIZE_MASK</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_STATE_MASK</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_STATE_TOO_SMALL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">NO_ID</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">OVER_SCROLL_ALWAYS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">OVER_SCROLL_IF_CONTENT_SCROLLS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">OVER_SCROLL_NEVER</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCREEN_STATE_OFF</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCREEN_STATE_ON</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_INSIDE_INSET</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_INSIDE_OVERLAY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_OUTSIDE_INSET</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_OUTSIDE_OVERLAY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBAR_POSITION_DEFAULT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBAR_POSITION_LEFT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBAR_POSITION_RIGHT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_AXIS_HORIZONTAL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_AXIS_NONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_AXIS_VERTICAL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_BOTTOM</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_END</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_START</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_TOP</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SOUND_EFFECTS_ENABLED</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">STATUS_BAR_HIDDEN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">STATUS_BAR_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_FULLSCREEN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_HIDE_NAVIGATION</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_IMMERSIVE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_IMMERSIVE_STICKY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_STABLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LIGHT_STATUS_BAR</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_LAYOUT_FLAGS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_CENTER</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_GRAVITY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_INHERIT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_END</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_START</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_END</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_START</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_ANY_RTL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_LTR</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_RTL</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">VIEW_LOG_TAG</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">VISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
 </table>
   </div>
 </div>
@@ -2026,7 +2141,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-fields-android.view.View">
@@ -2035,9 +2150,9 @@
   </div>
   <div id="inherited-fields-android.view.View-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2046,14 +2161,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ALPHA</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2062,14 +2177,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">EMPTY_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2078,14 +2193,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2094,14 +2209,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2110,14 +2225,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2126,14 +2241,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2142,14 +2257,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2158,14 +2273,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2174,14 +2289,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2190,14 +2305,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2206,14 +2321,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2222,14 +2337,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2238,14 +2353,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2254,14 +2369,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2270,14 +2385,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2286,14 +2401,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2302,14 +2417,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2318,14 +2433,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2334,14 +2449,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2350,14 +2465,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2366,14 +2481,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2382,14 +2497,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2398,14 +2513,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2414,14 +2529,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2430,14 +2545,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2446,14 +2561,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2462,14 +2577,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2478,14 +2593,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2494,14 +2609,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2510,14 +2625,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2526,14 +2641,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ROTATION</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2542,14 +2657,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ROTATION_X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2558,14 +2673,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ROTATION_Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2574,14 +2689,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">SCALE_X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2590,14 +2705,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">SCALE_Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2606,14 +2721,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2622,14 +2737,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2638,14 +2753,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">TRANSLATION_X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2654,14 +2769,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">TRANSLATION_Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2670,14 +2785,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">TRANSLATION_Z</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2686,14 +2801,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2702,14 +2817,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2718,14 +2833,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2734,14 +2849,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">Z</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
 </table>
   </div>
 </div>
@@ -2770,51 +2885,51 @@
 
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             </nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html#BoxInsetLayout(android.content.Context)">BoxInsetLayout</a></span>(Context context)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             </nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html#BoxInsetLayout(android.content.Context, android.util.AttributeSet)">BoxInsetLayout</a></span>(Context context, AttributeSet attrs)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             </nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html#BoxInsetLayout(android.content.Context, android.util.AttributeSet, int)">BoxInsetLayout</a></span>(Context context, AttributeSet attrs, int defStyle)</nobr>
-        
+
   </td></tr>
 
 
@@ -2831,90 +2946,90 @@
 
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             <a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.LayoutParams.html">BoxInsetLayout.LayoutParams</a></nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html#generateLayoutParams(android.util.AttributeSet)">generateLayoutParams</a></span>(AttributeSet attrs)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Rect</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html#getInsets()">getInsets</a></span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html#isRound()">isRound</a></span>()</nobr>
-        
+
         <div class="jd-descrdiv">
           determine screen shape
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html#onApplyWindowInsets(android.view.WindowInsets)">onApplyWindowInsets</a></span>(WindowInsets insets)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html#setForeground(android.graphics.drawable.Drawable)">setForeground</a></span>(Drawable drawable)</nobr>
-        
+
   </td></tr>
 
 
@@ -2929,83 +3044,83 @@
 
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html#checkLayoutParams(android.view.ViewGroup.LayoutParams)">checkLayoutParams</a></span>(ViewGroup.LayoutParams p)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html#generateLayoutParams(android.view.ViewGroup.LayoutParams)">generateLayoutParams</a></span>(ViewGroup.LayoutParams p)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html#onAttachedToWindow()">onAttachedToWindow</a></span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html#onLayout(boolean, int, int, int, int)">onLayout</a></span>(boolean changed, int left, int top, int right, int bottom)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html#onMeasure(int, int)">onMeasure</a></span>(int widthMeasureSpec, int heightMeasureSpec)</nobr>
-        
+
   </td></tr>
 
 
@@ -3026,7 +3141,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.widget.FrameLayout" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.widget.FrameLayout-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -3038,454 +3153,198 @@
   </div>
   <div id="inherited-methods-android.widget.FrameLayout-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">checkLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">draw</span>(Canvas arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">drawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">drawableStateChanged</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">gatherTransparentRegion</span>(Region arg0)</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateDefaultLayoutParams</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(AttributeSet arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getConsiderGoneChildrenWhenMeasuring</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            Drawable</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getForeground</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getForegroundGravity</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            ColorStateList</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getForegroundTintList</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            PorterDuff.Mode</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getForegroundTintMode</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasureAllChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">jumpDrawablesToCurrentState</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onInitializeAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onInitializeAccessibilityNodeInfo</span>(AccessibilityNodeInfo arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onLayout</span>(boolean arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onMeasure</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onSizeChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMeasureAllChildren</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setVisibility</span>(int arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">shouldDelayChildPressedState</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">verifyDrawable</span>(Drawable arg0)</nobr>
-        
   </td></tr>
 
 
@@ -3512,2598 +3371,2646 @@
   </div>
   <div id="inherited-methods-android.view.ViewGroup-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addChildrenForAccessibility</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addStatesFromChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addTouchables</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addViewInLayout</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addViewInLayout</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">attachLayoutAnimationParameters</span>(View arg0, ViewGroup.LayoutParams arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">attachViewToParent</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">bringChildToFront</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canAnimate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">checkLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childDrawableStateChanged</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childHasTransientStateChanged</span>(View arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">cleanupLayoutState</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearChildFocus</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearDisappearingChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">debug</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachAllViewsFromParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachViewFromParent</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachViewFromParent</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachViewsFromParent</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchApplyWindowInsets</span>(WindowInsets arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchConfigurationChanged</span>(Configuration arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDisplayHint</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDragEvent</span>(DragEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDraw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDrawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchFreezeSelfOnly</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericFocusedEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericPointerEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEventPreIme</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyShortcutEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetActivated</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetPressed</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetSelected</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSystemUiVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchThawSelfOnly</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTrackballEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchUnhandledMove</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchVisibilityChanged</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowFocusChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowSystemUiVisiblityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawChild</span>(Canvas arg0, View arg1, long arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawableStateChanged</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">endViewTransition</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewsWithText</span>(ArrayList&lt;View&gt; arg0, CharSequence arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusSearch</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusableViewAvailable</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">gatherTransparentRegion</span>(Region arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateDefaultLayoutParams</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(AttributeSet arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildAt</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildCount</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildDrawingOrder</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildMeasureSpec</span>(int arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildStaticTransformation</span>(View arg0, Transformation arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildVisibleRect</span>(View arg0, Rect arg1, Point arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipToPadding</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDescendantFocusability</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFocusedChild</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             LayoutAnimationController</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Animation.AnimationListener</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutAnimationListener</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             LayoutTransition</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutTransition</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNestedScrollAxes</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewOverlay</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOverlay</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPersistentDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTouchscreenBlocksFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocusable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasTransientState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">indexOfChild</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChild</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChildInParent</span>(int[] arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAlwaysDrawnWithCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAnimationCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isChildrenDrawingOrderEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isChildrenDrawnWithCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isMotionEventSplittingEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTransitionGroup</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">jumpDrawablesToCurrentState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">layout</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measureChild</span>(View arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measureChildWithMargins</span>(View arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measureChildren</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notifySubtreeAccessibilityStateChanged</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetDescendantRectToMyCoords</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetRectIntoDescendantCoords</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationEnd</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationStart</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAttachedToWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateDrawableState</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDetachedFromWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInterceptHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInterceptTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onLayout</span>(boolean arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedFling</span>(View arg0, float arg1, float arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreFling</span>(View arg0, float arg1, float arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPrePerformAccessibilityAction</span>(View arg0, int arg1, Bundle arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreScroll</span>(View arg0, int arg1, int arg2, int[] arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScroll</span>(View arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScrollAccepted</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRequestFocusInDescendants</span>(int arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRequestSendAccessibilityEvent</span>(View arg0, AccessibilityEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStartNestedScroll</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStopNestedScroll</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewAdded</span>(View arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewRemoved</span>(View arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">recomputeViewAttributes</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeAllViews</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeAllViewsInLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeDetachedView</span>(View arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeView</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViewAt</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViewInLayout</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViews</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViewsInLayout</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildFocus</span>(View arg0, View arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildRectangleOnScreen</span>(View arg0, Rect arg1, boolean arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestDisallowInterceptTouchEvent</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>(int arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestSendAccessibilityEvent</span>(View arg0, AccessibilityEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestTransparentRegion</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scheduleLayoutAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAddStatesFromChildren</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAlwaysDrawnWithCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAnimationCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setChildrenDrawingCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setChildrenDrawingOrderEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setChildrenDrawnWithCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipChildren</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipToPadding</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDescendantFocusability</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutAnimation</span>(LayoutAnimationController arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutAnimationListener</span>(Animation.AnimationListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutMode</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutTransition</span>(LayoutTransition arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMotionEventSplittingEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnHierarchyChangeListener</span>(ViewGroup.OnHierarchyChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPersistentDrawingCache</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setStaticTransformationsEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTouchscreenBlocksFocus</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTransitionGroup</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">shouldDelayChildPressedState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">showContextMenuForChild</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startLayoutAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startViewTransition</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">updateViewLayout</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -6118,7 +6025,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -6130,7718 +6037,8102 @@
   </div>
   <div id="inherited-methods-android.view.View-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addChildrenForAccessibility</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addOnAttachStateChangeListener</span>(View.OnAttachStateChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addOnLayoutChangeListener</span>(View.OnLayoutChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addTouchables</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewPropertyAnimator</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">animate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">announceForAccessibility</span>(CharSequence arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">awakenScrollBars</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">awakenScrollBars</span>(int arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">awakenScrollBars</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">bringToFront</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">buildDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">buildDrawingCache</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">buildLayer</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">callOnClick</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canScrollHorizontally</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canScrollVertically</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">cancelLongPress</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">cancelPendingInputEvents</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">checkInputConnectionProxy</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">combineMeasuredStates</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollExtent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollRange</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeScroll</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeSystemWindowInsets</span>(WindowInsets arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollExtent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollRange</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             AccessibilityNodeInfo</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">createAccessibilityNodeInfo</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">createContextMenu</span>(ContextMenu arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">destroyDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchApplyWindowInsets</span>(WindowInsets arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchConfigurationChanged</span>(Configuration arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDisplayHint</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDragEvent</span>(DragEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDraw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDrawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericFocusedEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericMotionEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericPointerEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEventPreIme</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyShortcutEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedFling</span>(float arg0, float arg1, boolean arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedPreFling</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedPrePerformAccessibilityAction</span>(int arg0, Bundle arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedPreScroll</span>(int arg0, int arg1, int[] arg2, int[] arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedScroll</span>(int arg0, int arg1, int arg2, int arg3, int[] arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchPopulateAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetActivated</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetPressed</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetSelected</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSystemUiVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTrackballEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchUnhandledMove</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchVisibilityChanged</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowFocusChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowSystemUiVisiblityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">draw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawableStateChanged</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewById</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewWithTag</span>(Object arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewsWithText</span>(ArrayList&lt;View&gt; arg0, CharSequence arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">fitSystemWindows</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusSearch</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">forceLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateViewId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityLiveRegion</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             AccessibilityNodeProvider</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityNodeProvider</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityTraversalAfter</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityTraversalBefore</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAlpha</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Animation</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             IBinder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getApplicationWindowToken</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Drawable</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBackground</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ColorStateList</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBackgroundTintList</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             PorterDuff.Mode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBackgroundTintMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBaseline</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBottom</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBottomFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBottomPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getCameraDistance</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Rect</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipBounds</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>(Rect arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipToOutline</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             CharSequence</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getContentDescription</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             Context</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getContext</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ContextMenu.ContextMenuInfo</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getContextMenuInfo</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDefaultSize</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Display</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDisplay</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawableState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Bitmap</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCache</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Bitmap</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCacheBackgroundColor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCacheQuality</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             long</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingTime</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getElevation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFilterTouchesWhenObscured</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFitsSystemWindows</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ArrayList&lt;View&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFocusables</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFocusedRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForeground</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundGravity</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintList</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintMode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getGlobalVisibleRect</span>(Rect arg0, Point arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getGlobalVisibleRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Handler</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHandler</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHitRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHorizontalFadingEdgeLength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHorizontalScrollbarHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getImportantForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getKeepScreenOn</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             KeyEvent.DispatcherState</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getKeyDispatcherState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLabelFor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayerType</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutParams</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLeft</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLeftFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLeftPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLocalVisibleRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLocationInWindow</span>(int[] arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLocationOnScreen</span>(int[] arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Matrix</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMatrix</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredHeightAndState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredWidthAndState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMinimumHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMinimumWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusDownId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusForwardId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusLeftId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusRightId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusUpId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View.OnFocusChangeListener</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOnFocusChangeListener</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewOutlineProvider</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOutlineProvider</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOverScrollMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewOverlay</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOverlay</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingBottom</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingEnd</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingLeft</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingRight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingStart</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingTop</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParentForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPivotX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPivotY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Resources</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getResources</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRightFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRightPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRootView</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootWindowInsets</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRotation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRotationX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRotationY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScaleX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScaleY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarDefaultDelayBeforeFade</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarFadeDuration</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarSize</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarStyle</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollIndicators</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSolidColor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             StateListAnimator</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getStateListAnimator</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSuggestedMinimumHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSuggestedMinimumWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSystemUiVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Object</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTag</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Object</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTag</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTop</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTopFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTopPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             TouchDelegate</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTouchDelegate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ArrayList&lt;View&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTouchables</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTransitionName</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTranslationX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTranslationY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTranslationZ</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVerticalFadingEdgeLength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVerticalScrollbarPosition</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVerticalScrollbarWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewTreeObserver</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getViewTreeObserver</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowAttachCount</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowId</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowSystemUiVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             IBinder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowToken</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowVisibleDisplayFrame</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getZ</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocusable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasNestedScrollingParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasOnClickListeners</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasOverlappingRendering</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasTransientState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasWindowFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">inflate</span>(Context arg0, int arg1, ViewGroup arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidate</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidate</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateOutline</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAccessibilityFocused</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isActivated</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAttachedToWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isClickable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isContextClickable</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isDirty</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isDrawingCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isDuplicateParentStateEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isFocusable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isFocusableInTouchMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isFocused</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHapticFeedbackEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHardwareAccelerated</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHorizontalFadingEdgeEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHorizontalScrollBarEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHovered</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isImportantForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isInEditMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isInLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isInTouchMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLaidOut</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutRequested</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLongClickable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isNestedScrollingEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isOpaque</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isPaddingOffsetRequired</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isPaddingRelative</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isPressed</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSaveEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSaveFromParentEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isScrollContainer</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isScrollbarFadingEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSelected</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isShown</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSoundEffectsEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextAlignmentResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isVerticalFadingEdgeEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isVerticalScrollBarEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">jumpDrawablesToCurrentState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">layout</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measure</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">mergeDrawableStates</span>(int[] arg0, int[] arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetLeftAndRight</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetTopAndBottom</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAnimationEnd</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAnimationStart</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onApplyWindowInsets</span>(WindowInsets arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAttachedToWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCancelPendingInputEvents</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCheckIsTextEditor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onConfigurationChanged</span>(Configuration arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateContextMenu</span>(ContextMenu arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateDrawableState</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             InputConnection</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateInputConnection</span>(EditorInfo arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDetachedFromWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDisplayHint</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDragEvent</span>(DragEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDraw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawForeground</span>(Canvas arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDrawScrollBars</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFilterTouchEventForSecurity</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFinishInflate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFinishTemporaryDetach</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFocusChanged</span>(boolean arg0, int arg1, Rect arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onGenericMotionEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onHoverChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInitializeAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInitializeAccessibilityNodeInfo</span>(AccessibilityNodeInfo arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyDown</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyLongPress</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyMultiple</span>(int arg0, int arg1, KeyEvent arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyPreIme</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyShortcut</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyUp</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onLayout</span>(boolean arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onMeasure</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onOverScrolled</span>(int arg0, int arg1, boolean arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onPopulateAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideVirtualStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRtlPropertiesChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Parcelable</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSaveInstanceState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onScreenStateChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onScrollChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSetAlpha</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSizeChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStartTemporaryDetach</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onTrackballEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onVisibilityChanged</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onWindowFocusChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onWindowSystemUiVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onWindowVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">overScrollBy</span>(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, boolean arg8)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performAccessibilityAction</span>(int arg0, Bundle arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performClick</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performContextClick</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performHapticFeedback</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performHapticFeedback</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performLongClick</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">playSoundEffect</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">post</span>(Runnable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postDelayed</span>(Runnable arg0, long arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidate</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateDelayed</span>(long arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateDelayed</span>(long arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateOnAnimation</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateOnAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postOnAnimation</span>(Runnable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postOnAnimationDelayed</span>(Runnable arg0, long arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">refreshDrawableState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeCallbacks</span>(Runnable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeOnAttachStateChangeListener</span>(View.OnAttachStateChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeOnLayoutChangeListener</span>(View.OnLayoutChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestApplyInsets</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFitSystemWindows</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>(int arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocusFromTouch</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestRectangleOnScreen</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestRectangleOnScreen</span>(Rect arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestUnbufferedDispatch</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">resolveSize</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">resolveSizeAndState</span>(int arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">restoreHierarchyState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">saveHierarchyState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scheduleDrawable</span>(Drawable arg0, Runnable arg1, long arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scrollBy</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scrollTo</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEvent</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEventUnchecked</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityDelegate</span>(View.AccessibilityDelegate arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityLiveRegion</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityTraversalAfter</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityTraversalBefore</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setActivated</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAlpha</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAnimation</span>(Animation arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackground</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundColor</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundResource</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundTintList</span>(ColorStateList arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBottom</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setCameraDistance</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClickable</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipBounds</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipToOutline</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setContentDescription</span>(CharSequence arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setContextClickable</span>(boolean arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheQuality</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDuplicateParentStateEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setElevation</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFadingEdgeLength</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFilterTouchesWhenObscured</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFitsSystemWindows</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFocusable</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFocusableInTouchMode</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHapticFeedbackEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHasTransientState</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHorizontalFadingEdgeEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHorizontalScrollBarEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHovered</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setImportantForAccessibility</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setKeepScreenOn</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLabelFor</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayerPaint</span>(Paint arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayerType</span>(int arg0, Paint arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutDirection</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLeft</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLongClickable</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMeasuredDimension</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMinimumHeight</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMinimumWidth</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNestedScrollingEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusDownId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusForwardId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusLeftId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusRightId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusUpId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnApplyWindowInsetsListener</span>(View.OnApplyWindowInsetsListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnClickListener</span>(View.OnClickListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnContextClickListener</span>(View.OnContextClickListener arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnCreateContextMenuListener</span>(View.OnCreateContextMenuListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnDragListener</span>(View.OnDragListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnFocusChangeListener</span>(View.OnFocusChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnGenericMotionListener</span>(View.OnGenericMotionListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnHoverListener</span>(View.OnHoverListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnKeyListener</span>(View.OnKeyListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnLongClickListener</span>(View.OnLongClickListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnScrollChangeListener</span>(View.OnScrollChangeListener arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnTouchListener</span>(View.OnTouchListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOutlineProvider</span>(ViewOutlineProvider arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOverScrollMode</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPadding</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPaddingRelative</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPivotX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPivotY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPressed</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRight</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRotation</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRotationX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRotationY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSaveEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSaveFromParentEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScaleX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScaleY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarDefaultDelayBeforeFade</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarFadeDuration</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarSize</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarStyle</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollContainer</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollX</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollY</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollbarFadingEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSelected</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSoundEffectsEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setStateListAnimator</span>(StateListAnimator arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSystemUiVisibility</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTag</span>(int arg0, Object arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTag</span>(Object arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTextAlignment</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTextDirection</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTop</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTouchDelegate</span>(TouchDelegate arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTransitionName</span>(String arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTranslationX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTranslationY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTranslationZ</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVerticalFadingEdgeEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVerticalScrollBarEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVerticalScrollbarPosition</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVisibility</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setWillNotCacheDrawing</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setWillNotDraw</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setZ</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">showContextMenu</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionMode</span>(ActionMode.Callback arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startAnimation</span>(Animation arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startDrag</span>(ClipData arg0, View.DragShadowBuilder arg1, Object arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startNestedScroll</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">stopNestedScroll</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">toString</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">unscheduleDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">unscheduleDrawable</span>(Drawable arg0, Runnable arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">verifyDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">willNotCacheDrawing</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">willNotDraw</span>()</nobr>
-        
+
   </td></tr>
 
 
@@ -13856,7 +14147,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -13868,182 +14159,182 @@
   </div>
   <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Object</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clone</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">equals</span>(Object arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">finalize</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             Class&lt;?&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClass</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hashCode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notify</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notifyAll</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">toString</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>(long arg0)</nobr>
-        
+
   </td></tr>
 
 
@@ -14058,7 +14349,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewParent" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewParent-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14070,662 +14361,678 @@
   </div>
   <div id="inherited-methods-android.view.ViewParent-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">bringChildToFront</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childDrawableStateChanged</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childHasTransientStateChanged</span>(View arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearChildFocus</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">createContextMenu</span>(ContextMenu arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusSearch</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusableViewAvailable</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildVisibleRect</span>(View arg0, Rect arg1, Point arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParentForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChild</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChildInParent</span>(int[] arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutRequested</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextAlignmentResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notifySubtreeAccessibilityStateChanged</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedFling</span>(View arg0, float arg1, float arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreFling</span>(View arg0, float arg1, float arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPrePerformAccessibilityAction</span>(View arg0, int arg1, Bundle arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreScroll</span>(View arg0, int arg1, int arg2, int[] arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScroll</span>(View arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScrollAccepted</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStartNestedScroll</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStopNestedScroll</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">recomputeViewAttributes</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildFocus</span>(View arg0, View arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildRectangleOnScreen</span>(View arg0, Rect arg1, boolean arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestDisallowInterceptTouchEvent</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFitSystemWindows</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestSendAccessibilityEvent</span>(View arg0, AccessibilityEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestTransparentRegion</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">showContextMenuForChild</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -14740,7 +15047,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewManager" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewManager-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14752,54 +15059,54 @@
   </div>
   <div id="inherited-methods-android.view.ViewManager-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeView</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">updateViewLayout</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -14814,7 +15121,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.graphics.drawable.Drawable.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14826,54 +15133,54 @@
   </div>
   <div id="inherited-methods-android.graphics.drawable.Drawable.Callback-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scheduleDrawable</span>(Drawable arg0, Runnable arg1, long arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">unscheduleDrawable</span>(Drawable arg0, Runnable arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -14888,7 +15195,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14900,70 +15207,70 @@
   </div>
   <div id="inherited-methods-android.view.KeyEvent.Callback-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyDown</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyLongPress</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyMultiple</span>(int arg0, int arg1, KeyEvent arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyUp</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -14978,7 +15285,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.accessibility.AccessibilityEventSource" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.accessibility.AccessibilityEventSource-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14990,38 +15297,38 @@
   </div>
   <div id="inherited-methods-android.view.accessibility.AccessibilityEventSource-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEvent</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEventUnchecked</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
@@ -15067,30 +15374,30 @@
 
 <A NAME="BoxInsetLayout(android.content.Context)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
-        
+        public
+
+
+
+
+
       </span>
       <span class="sympad">BoxInsetLayout</span>
       <span class="normal">(Context context)</span>
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15099,30 +15406,30 @@
 
 <A NAME="BoxInsetLayout(android.content.Context, android.util.AttributeSet)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
-        
+        public
+
+
+
+
+
       </span>
       <span class="sympad">BoxInsetLayout</span>
       <span class="normal">(Context context, AttributeSet attrs)</span>
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15131,30 +15438,30 @@
 
 <A NAME="BoxInsetLayout(android.content.Context, android.util.AttributeSet, int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
-        
+        public
+
+
+
+
+
       </span>
       <span class="sympad">BoxInsetLayout</span>
       <span class="normal">(Context context, AttributeSet attrs, int defStyle)</span>
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15178,14 +15485,14 @@
 
 <A NAME="generateLayoutParams(android.util.AttributeSet)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         <a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.LayoutParams.html">BoxInsetLayout.LayoutParams</a>
       </span>
       <span class="sympad">generateLayoutParams</span>
@@ -15193,15 +15500,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15210,14 +15517,14 @@
 
 <A NAME="getInsets()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         Rect
       </span>
       <span class="sympad">getInsets</span>
@@ -15225,15 +15532,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Returns</h5>
@@ -15247,14 +15554,14 @@
 
 <A NAME="isRound()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         boolean
       </span>
       <span class="sympad">isRound</span>
@@ -15262,15 +15569,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>determine screen shape</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Returns</h5>
@@ -15284,14 +15591,14 @@
 
 <A NAME="onApplyWindowInsets(android.view.WindowInsets)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         WindowInsets
       </span>
       <span class="sympad">onApplyWindowInsets</span>
@@ -15299,15 +15606,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15316,14 +15623,14 @@
 
 <A NAME="setForeground(android.graphics.drawable.Drawable)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">setForeground</span>
@@ -15331,15 +15638,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15357,14 +15664,14 @@
 
 <A NAME="checkLayoutParams(android.view.ViewGroup.LayoutParams)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        protected 
-         
-         
-         
-         
+        protected
+
+
+
+
         boolean
       </span>
       <span class="sympad">checkLayoutParams</span>
@@ -15372,15 +15679,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15389,14 +15696,14 @@
 
 <A NAME="generateLayoutParams(android.view.ViewGroup.LayoutParams)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        protected 
-         
-         
-         
-         
+        protected
+
+
+
+
         ViewGroup.LayoutParams
       </span>
       <span class="sympad">generateLayoutParams</span>
@@ -15404,15 +15711,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15421,14 +15728,14 @@
 
 <A NAME="onAttachedToWindow()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        protected 
-         
-         
-         
-         
+        protected
+
+
+
+
         void
       </span>
       <span class="sympad">onAttachedToWindow</span>
@@ -15436,15 +15743,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15453,14 +15760,14 @@
 
 <A NAME="onLayout(boolean, int, int, int, int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        protected 
-         
-         
-         
-         
+        protected
+
+
+
+
         void
       </span>
       <span class="sympad">onLayout</span>
@@ -15468,15 +15775,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15485,14 +15792,14 @@
 
 <A NAME="onMeasure(int, int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        protected 
-         
-         
-         
-         
+        protected
+
+
+
+
         void
       </span>
       <span class="sympad">onMeasure</span>
@@ -15500,15 +15807,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15544,22 +15851,22 @@
 
     <hr class="dac-footer-separator"/>
 
-    
+
       <p class="dac-footer-copyright">
-        
+
   Except as noted, this content is licensed under <a
   href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
   For details and restrictions, see the <a href="../../../../../license.html">
   Content License</a>.
       </p>
       <p class="dac-footer-build">
-        
-    Android Wearable Support&nbsp;r &mdash; 
+
+    Android Wearable Support&nbsp;r &mdash;
 <script src="../../../../../timestamp.js" type="text/javascript"></script>
 <script>document.write(BUILD_TIMESTAMP)</script>
 
       </p>
-    
+
 
     <p class="dac-footer-links">
       <a href="/about/index.html">About Android</a>
@@ -15701,8 +16008,8 @@
 
 </div><!-- end doc-content -->
 
-</div> <!-- end .cols --> 
-</div> <!-- end body-content --> 
+</div> <!-- end .cols -->
+</div> <!-- end body-content -->
 
 
 
diff --git a/docs/html/reference/android/support/wearable/view/CardFragment.html b/docs/html/reference/android/support/wearable/view/CardFragment.html
index b73c6ca..9553e22 100644
--- a/docs/html/reference/android/support/wearable/view/CardFragment.html
+++ b/docs/html/reference/android/support/wearable/view/CardFragment.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -857,7 +864,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.content.ComponentCallbacks2" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.content.ComponentCallbacks2-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From interface
 android.content.ComponentCallbacks2
 <div id="inherited-constants-android.content.ComponentCallbacks2">
@@ -1627,7 +1634,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.app.Fragment" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.app.Fragment-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1762,10 +1769,10 @@
             
             
             
-            Transition</nobr>
+            Context</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getEnterTransition</span>()</nobr>
+        <span class="sympad">getContext</span>()</nobr>
         
   </td></tr>
 
@@ -1781,12 +1788,44 @@
             Transition</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getEnterTransition</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Transition</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getExitTransition</span>()</nobr>
         
   </td></tr>
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            FragmentManager</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getFragmentManager</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -1794,10 +1833,10 @@
             final
             
             
-            FragmentManager</nobr>
+            Object</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getFragmentManager</span>()</nobr>
+        <span class="sympad">getHost</span>()</nobr>
         
   </td></tr>
 
@@ -2277,7 +2316,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAttach</span>(Activity arg0)</nobr>
+        <span class="sympad">onAttach</span>(Context arg0)</nobr>
         
   </td></tr>
 
@@ -2293,13 +2332,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onAttach</span>(Activity arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onConfigurationChanged</span>(Configuration arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2315,7 +2370,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2331,7 +2386,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2347,7 +2402,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2363,7 +2418,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2379,7 +2434,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2395,7 +2450,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2411,7 +2466,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2427,7 +2482,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2443,7 +2498,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2459,7 +2514,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2475,6 +2530,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onInflate</span>(Context arg0, AttributeSet arg1, Bundle arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -2597,7 +2668,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onResume</span>()</nobr>
+        <span class="sympad">onRequestPermissionsResult</span>(int arg0, String[] arg1, int[] arg2)</nobr>
         
   </td></tr>
 
@@ -2613,13 +2684,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onResume</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSaveInstanceState</span>(Bundle arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2635,7 +2722,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2651,7 +2738,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2667,7 +2754,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2683,7 +2770,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2699,7 +2786,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2715,6 +2802,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestPermissions</span>(String[] arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -2994,6 +3097,22 @@
             
             
             
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">shouldShowRequestPermissionRationale</span>(String arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -3003,7 +3122,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3019,7 +3138,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3035,7 +3154,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3051,7 +3170,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3067,7 +3186,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3093,7 +3212,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -3295,7 +3414,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ComponentCallbacks2" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ComponentCallbacks2-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -3337,7 +3456,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View.OnCreateContextMenuListener" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.View.OnCreateContextMenuListener-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -3379,7 +3498,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ComponentCallbacks" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ComponentCallbacks-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
diff --git a/docs/html/reference/android/support/wearable/view/CardFrame.html b/docs/html/reference/android/support/wearable/view/CardFrame.html
index 32224d5..31a9225 100644
--- a/docs/html/reference/android/support/wearable/view/CardFrame.html
+++ b/docs/html/reference/android/support/wearable/view/CardFrame.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -873,7 +880,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.ViewGroup" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.ViewGroup-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup
 <div id="inherited-constants-android.view.ViewGroup">
@@ -1017,7 +1024,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-constants-android.view.View">
@@ -1643,6 +1650,78 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_BOTTOM</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_END</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_START</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_TOP</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SOUND_EFFECTS_ENABLED</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1763,7 +1842,7 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
-        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LIGHT_STATUS_BAR</td>
         <td class="jd-descrcol" width="100%">
           
           
@@ -1775,6 +1854,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1785,7 +1876,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_LAYOUT_FLAGS</td>
         <td class="jd-descrcol" width="100%">
@@ -1797,7 +1888,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_CENTER</td>
         <td class="jd-descrcol" width="100%">
@@ -1809,7 +1900,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_GRAVITY</td>
         <td class="jd-descrcol" width="100%">
@@ -1821,7 +1912,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_INHERIT</td>
         <td class="jd-descrcol" width="100%">
@@ -1833,7 +1924,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1845,7 +1936,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1857,7 +1948,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1869,7 +1960,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1881,7 +1972,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_ANY_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -1893,7 +1984,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG</td>
         <td class="jd-descrcol" width="100%">
@@ -1905,8 +1996,32 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_LTR</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_RTL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1917,7 +2032,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
@@ -1929,7 +2044,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
@@ -1941,7 +2056,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -1953,7 +2068,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">VIEW_LOG_TAG</td>
         <td class="jd-descrcol" width="100%">
@@ -1965,7 +2080,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">VISIBLE</td>
         <td class="jd-descrcol" width="100%">
@@ -2016,7 +2131,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-fields-android.view.View">
@@ -3300,7 +3415,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewGroup" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewGroup-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -3966,7 +4081,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
         
   </td></tr>
 
@@ -3982,13 +4097,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4004,7 +4135,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4020,7 +4151,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4036,7 +4167,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4052,7 +4183,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4068,7 +4199,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4084,7 +4215,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4100,7 +4231,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4116,7 +4247,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4132,7 +4263,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4148,7 +4279,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4164,7 +4295,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4180,7 +4311,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4196,7 +4327,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4212,7 +4343,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4228,7 +4359,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4244,7 +4375,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4260,7 +4391,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4276,7 +4407,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4292,7 +4423,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4308,7 +4439,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4324,7 +4455,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4340,7 +4471,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4356,6 +4487,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -4974,38 +5121,6 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationEnd</span>()</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationStart</span>()</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAttachedToWindow</span>()</nobr>
         
   </td></tr>
@@ -5262,6 +5377,38 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewAdded</span>(View arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewRemoved</span>(View arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">recomputeViewAttributes</span>(View arg0)</nobr>
         
   </td></tr>
@@ -5867,10 +6014,10 @@
             
             
             
-            void</nobr>
+            ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">startLayoutAnimation</span>()</nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
         
   </td></tr>
 
@@ -5886,7 +6033,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">startViewTransition</span>(View arg0)</nobr>
+        <span class="sympad">startLayoutAnimation</span>()</nobr>
         
   </td></tr>
 
@@ -5902,6 +6049,22 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startViewTransition</span>(View arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">updateViewLayout</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
         
   </td></tr>
@@ -5918,7 +6081,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -6856,7 +7019,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
         
   </td></tr>
 
@@ -6872,13 +7035,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6894,7 +7073,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6910,7 +7089,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6926,7 +7105,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6942,7 +7121,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6958,7 +7137,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6974,7 +7153,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6990,7 +7169,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7006,7 +7185,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7022,7 +7201,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7038,7 +7217,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7054,7 +7233,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7070,7 +7249,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7086,7 +7265,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7102,7 +7281,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7118,7 +7297,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7134,7 +7313,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7150,7 +7329,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7166,7 +7345,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7182,7 +7361,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7198,7 +7377,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7214,7 +7393,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7230,6 +7409,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -7490,6 +7685,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -7502,7 +7713,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7518,7 +7729,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7534,7 +7745,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7550,7 +7761,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7566,7 +7777,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7582,7 +7793,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7598,7 +7809,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7614,7 +7825,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7630,7 +7841,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7646,7 +7857,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7662,7 +7873,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7678,7 +7889,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7694,7 +7905,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7710,7 +7921,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7726,7 +7937,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7742,7 +7953,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7758,7 +7969,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7774,6 +7985,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForeground</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -7781,6 +8008,54 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundGravity</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintList</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -7790,7 +8065,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7806,7 +8081,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7822,7 +8097,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7838,7 +8113,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7854,7 +8129,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7870,7 +8145,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7886,7 +8161,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7902,7 +8177,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7918,7 +8193,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7934,7 +8209,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7950,7 +8225,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7966,7 +8241,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7982,7 +8257,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7998,7 +8273,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8014,7 +8289,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8030,7 +8305,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8046,7 +8321,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8062,7 +8337,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8078,7 +8353,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8094,7 +8369,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8110,7 +8385,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8126,7 +8401,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8142,7 +8417,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8158,7 +8433,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8174,7 +8449,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8190,7 +8465,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8206,7 +8481,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8222,7 +8497,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8238,7 +8513,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8254,7 +8529,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8270,7 +8545,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8286,7 +8561,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8302,7 +8577,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8318,7 +8593,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8334,7 +8609,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8350,7 +8625,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8366,7 +8641,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8382,7 +8657,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8398,7 +8673,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8414,7 +8689,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8430,7 +8705,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8446,7 +8721,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8462,7 +8737,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8478,7 +8753,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8494,7 +8769,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8510,7 +8785,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8526,7 +8801,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8542,7 +8817,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8558,7 +8833,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8574,7 +8849,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8590,7 +8865,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8606,7 +8881,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8622,6 +8897,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootWindowInsets</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -8770,6 +9061,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollIndicators</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -8782,7 +9089,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8798,7 +9105,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8814,7 +9121,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8830,7 +9137,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8846,7 +9153,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8862,7 +9169,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8878,7 +9185,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8894,7 +9201,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8910,7 +9217,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8926,7 +9233,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8942,7 +9249,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8958,7 +9265,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8974,7 +9281,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8990,7 +9297,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9006,7 +9313,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9022,7 +9329,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9038,7 +9345,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9054,7 +9361,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9070,7 +9377,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9086,7 +9393,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9102,7 +9409,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9118,7 +9425,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9134,7 +9441,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9150,7 +9457,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9166,7 +9473,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9182,7 +9489,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9198,7 +9505,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9214,7 +9521,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9230,7 +9537,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9246,7 +9553,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9262,7 +9569,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9278,7 +9585,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9294,7 +9601,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9310,7 +9617,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9326,7 +9633,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9342,7 +9649,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9358,7 +9665,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9374,7 +9681,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9390,7 +9697,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9406,7 +9713,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9422,7 +9729,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9438,7 +9745,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9454,7 +9761,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9470,7 +9777,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9486,7 +9793,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9502,7 +9809,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9518,7 +9825,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9534,7 +9841,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9550,7 +9857,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9566,7 +9873,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9582,7 +9889,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9598,6 +9905,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isContextClickable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -10498,6 +10821,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawForeground</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -10510,7 +10849,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10526,7 +10865,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10542,7 +10881,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10558,7 +10897,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10574,7 +10913,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10590,7 +10929,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10606,7 +10945,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10622,7 +10961,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10638,7 +10977,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10654,7 +10993,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10670,7 +11009,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10686,7 +11025,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10702,7 +11041,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10718,7 +11057,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10734,7 +11073,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10750,7 +11089,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10766,7 +11105,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10782,7 +11121,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10798,7 +11137,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10814,6 +11153,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -10824,13 +11179,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideVirtualStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10846,7 +11217,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10862,7 +11233,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10878,7 +11249,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10894,7 +11265,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10910,7 +11281,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10926,7 +11297,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10942,7 +11313,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10958,7 +11329,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10974,7 +11345,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10990,7 +11361,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11006,7 +11377,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11022,7 +11393,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11038,7 +11409,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11054,7 +11425,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11070,7 +11441,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11086,6 +11457,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performContextClick</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -11992,7 +12379,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        <span class="sympad">setContextClickable</span>(boolean arg0)</nobr>
         
   </td></tr>
 
@@ -12008,13 +12395,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12030,7 +12433,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12046,7 +12449,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12062,7 +12465,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12078,7 +12481,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12094,7 +12497,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12110,7 +12513,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12126,7 +12529,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12142,7 +12545,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12158,6 +12561,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -12168,13 +12587,61 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHapticFeedbackEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12190,7 +12657,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12206,7 +12673,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12222,7 +12689,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12238,7 +12705,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12254,7 +12721,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12270,7 +12737,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12286,7 +12753,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12302,7 +12769,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12318,7 +12785,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12334,7 +12801,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12350,7 +12817,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12366,7 +12833,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12382,7 +12849,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12398,7 +12865,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12414,7 +12881,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12430,7 +12897,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12446,7 +12913,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12462,7 +12929,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12478,7 +12945,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12494,7 +12961,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12510,7 +12977,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12526,7 +12993,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12542,7 +13009,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12558,7 +13025,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12574,6 +13041,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnContextClickListener</span>(View.OnContextClickListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -12696,7 +13179,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        <span class="sympad">setOnScrollChangeListener</span>(View.OnScrollChangeListener arg0)</nobr>
         
   </td></tr>
 
@@ -12712,13 +13195,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnTouchListener</span>(View.OnTouchListener arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12734,7 +13233,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12750,7 +13249,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12766,7 +13265,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12782,7 +13281,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12798,7 +13297,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12814,7 +13313,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12830,7 +13329,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12846,7 +13345,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12862,7 +13361,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12878,7 +13377,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12894,7 +13393,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12910,7 +13409,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12926,7 +13425,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12942,7 +13441,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12958,7 +13457,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12974,7 +13473,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12990,7 +13489,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13006,7 +13505,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13022,7 +13521,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13038,6 +13537,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -13048,13 +13563,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollX</span>(int arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13070,7 +13601,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13086,7 +13617,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13102,7 +13633,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13118,7 +13649,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13134,7 +13665,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13150,7 +13681,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13166,7 +13697,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13182,7 +13713,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13198,7 +13729,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13214,7 +13745,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13230,7 +13761,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13246,7 +13777,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13262,7 +13793,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13278,7 +13809,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13294,7 +13825,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13310,7 +13841,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13326,7 +13857,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13342,7 +13873,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13358,7 +13889,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13374,7 +13905,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13390,7 +13921,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13406,7 +13937,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13422,7 +13953,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13438,7 +13969,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13454,7 +13985,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13470,6 +14001,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -13656,7 +14203,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -13858,7 +14405,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewParent" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewParent-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14524,6 +15071,22 @@
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1)</nobr>
         
   </td></tr>
@@ -14540,7 +15103,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewManager" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewManager-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14614,7 +15177,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.graphics.drawable.Drawable.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14688,7 +15251,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14778,7 +15341,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.accessibility.AccessibilityEventSource" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.accessibility.AccessibilityEventSource-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
diff --git a/docs/html/reference/android/support/wearable/view/CardScrollView.html b/docs/html/reference/android/support/wearable/view/CardScrollView.html
index a361847..4c9bdc1 100644
--- a/docs/html/reference/android/support/wearable/view/CardScrollView.html
+++ b/docs/html/reference/android/support/wearable/view/CardScrollView.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -146,7 +151,7 @@
 
 </head>
 
-<body class="gc-documentation 
+<body class="gc-documentation
   develop reference" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
@@ -221,13 +226,13 @@
           </a>
 
         <ul class="dac-header-crumbs">
-          
+
           <li class="dac-header-crumbs-item"><span class="dac-header-crumbs-link current ">CardScrollView</a></li>
         </ul>
 
-        
-        
-        
+
+
+
   <div class="dac-header-search" id="search-container">
     <div class="dac-header-search-inner">
       <div class="dac-sprite dac-search dac-header-search-btn" id="search-btn"></div>
@@ -267,7 +272,7 @@
     </div>
   </div>
 
-        
+
 
         <a class="dac-header-console-btn" href="https://play.google.com/apps/publish/">
           <span class="dac-sprite dac-google-play"></span>
@@ -284,7 +289,7 @@
     </div>
   </div> <!--end header-wrapper -->
 
-  
+
   <!-- Navigation-->
   <nav class="dac-nav">
     <div class="dac-nav-dimmer" data-dac-toggle-nav></div>
@@ -370,7 +375,7 @@
           <li class="dac-nav-item google">
             <a class="dac-nav-link" href="../../../../../google/index.html">Google Services</a>
           </li>
-          
+
           <li class="dac-nav-item preview">
             <a class="dac-nav-link" href="../../../../../preview/index.html">Preview</a>
           </li>
@@ -407,7 +412,7 @@
     </ul>
   </nav>
   <!-- end navigation-->
-  
+
 
 
 
@@ -439,7 +444,7 @@
             <div id="packages-nav" class="scroll-pane">
 
               <ul>
-                
+
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/wearable/package-summary.html">android.support.wearable</a></li>
     <li class="api apilevel-">
@@ -465,10 +470,11 @@
 
 
             <ul>
-              
-              
+
+
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -481,9 +487,10 @@
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnScrollListener.html">WearableListView.OnScrollListener</a></li>
       </ul>
     </li>
-              
+
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -511,9 +518,9 @@
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.ViewHolder.html">WearableListView.ViewHolder</a></li>
       </ul>
     </li>
-              
-              
-              
+
+
+
             </ul><br/>
 
 
@@ -556,7 +563,7 @@
         });
     </script>
 
-     
+
 
 
 
@@ -566,74 +573,74 @@
 
 
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-   
-  
-  
-  
 
-  
-   
-  
-  
-   
-  
-  
-   
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 <div class="sum-details-links">
@@ -646,25 +653,25 @@
 
 
   <a href="#inhconstants">Inherited Constants</a>
-  
+
 
 
 
   &#124; <a href="#inhfields">Inherited Fields</a>
-  
+
 
 
   &#124; <a href="#pubctors">Ctors</a>
-  
+
 
 
 
   &#124; <a href="#pubmethods">Methods</a>
-  
+
 
 
   &#124; <a href="#promethods">Protected Methods</a>
-  
+
 
 
   &#124; <a href="#inhmethods">Inherited Methods</a>
@@ -673,9 +680,9 @@
 
 </div><!-- end sum-details-links -->
 <div class="api-level">
-  
-  
-  
+
+
+
 
 </div>
 </div><!-- end api-info-block -->
@@ -685,38 +692,38 @@
 
 <div id="jd-header">
     public
-     
-     
-    
+
+
+
     class
 <h1 itemprop="name">CardScrollView</h1>
 
 
 
-  
-  
-  
 
-  
-  
-  
 
-  
-  
-  
 
-  
+
+
+
+
+
+
+
+
+
+
     extends FrameLayout<br/>
-  
-  
-  
-
-  
-  
-  
 
 
-    
+
+
+
+
+
+
+
+
 
 
 </div><!-- end header -->
@@ -728,54 +735,54 @@
 
 
     <tr>
-         	
+
         <td colspan="5" class="jd-inheritance-class-cell">java.lang.Object</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="4" class="jd-inheritance-class-cell">android.view.View</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="3" class="jd-inheritance-class-cell">android.view.ViewGroup</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="2" class="jd-inheritance-class-cell">android.widget.FrameLayout</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="1" class="jd-inheritance-class-cell">android.support.wearable.view.CardScrollView</td>
     </tr>
-    
+
 
 </table>
 
@@ -847,7 +854,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.ViewGroup" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.ViewGroup-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup
 <div id="inherited-constants-android.view.ViewGroup">
@@ -856,129 +863,129 @@
   </div>
   <div id="inherited-constants-android.view.ViewGroup-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CLIP_TO_PADDING_MASK</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_AFTER_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_BEFORE_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_BLOCK_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_MODE_CLIP_BOUNDS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_MODE_OPTICAL_BOUNDS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_ALL_CACHES</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_ANIMATION_CACHE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_NO_CACHE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_SCROLLING_CACHE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
 </table>
   </div>
 </div>
@@ -991,7 +998,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-constants-android.view.View">
@@ -1000,957 +1007,1065 @@
   </div>
   <div id="inherited-constants-android.view.View-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_ASSERTIVE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_NONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_POLITE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">DRAWING_CACHE_QUALITY_AUTO</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">DRAWING_CACHE_QUALITY_HIGH</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">DRAWING_CACHE_QUALITY_LOW</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FIND_VIEWS_WITH_CONTENT_DESCRIPTION</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FIND_VIEWS_WITH_TEXT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUSABLES_ALL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUSABLES_TOUCH_MODE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_BACKWARD</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_DOWN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_FORWARD</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_LEFT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_RIGHT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_UP</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">GONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">HAPTIC_FEEDBACK_ENABLED</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_AUTO</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_NO</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_YES</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">INVISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">KEEP_SCREEN_ON</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYER_TYPE_HARDWARE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYER_TYPE_NONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYER_TYPE_SOFTWARE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_HEIGHT_STATE_SHIFT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_SIZE_MASK</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_STATE_MASK</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_STATE_TOO_SMALL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">NO_ID</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">OVER_SCROLL_ALWAYS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">OVER_SCROLL_IF_CONTENT_SCROLLS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">OVER_SCROLL_NEVER</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCREEN_STATE_OFF</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCREEN_STATE_ON</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_INSIDE_INSET</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_INSIDE_OVERLAY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_OUTSIDE_INSET</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_OUTSIDE_OVERLAY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBAR_POSITION_DEFAULT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBAR_POSITION_LEFT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBAR_POSITION_RIGHT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_AXIS_HORIZONTAL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_AXIS_NONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_AXIS_VERTICAL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_BOTTOM</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_END</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_START</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_TOP</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SOUND_EFFECTS_ENABLED</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">STATUS_BAR_HIDDEN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">STATUS_BAR_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_FULLSCREEN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_HIDE_NAVIGATION</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_IMMERSIVE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_IMMERSIVE_STICKY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_STABLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LIGHT_STATUS_BAR</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_LAYOUT_FLAGS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_CENTER</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_GRAVITY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_INHERIT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_END</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_START</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_END</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_START</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_ANY_RTL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_LTR</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_RTL</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">VIEW_LOG_TAG</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">VISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
 </table>
   </div>
 </div>
@@ -1992,7 +2107,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-fields-android.view.View">
@@ -2001,9 +2116,9 @@
   </div>
   <div id="inherited-fields-android.view.View-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2012,14 +2127,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ALPHA</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2028,14 +2143,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">EMPTY_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2044,14 +2159,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2060,14 +2175,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2076,14 +2191,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2092,14 +2207,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2108,14 +2223,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2124,14 +2239,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2140,14 +2255,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2156,14 +2271,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2172,14 +2287,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2188,14 +2303,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2204,14 +2319,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2220,14 +2335,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2236,14 +2351,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2252,14 +2367,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2268,14 +2383,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2284,14 +2399,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2300,14 +2415,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2316,14 +2431,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2332,14 +2447,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2348,14 +2463,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2364,14 +2479,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2380,14 +2495,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2396,14 +2511,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2412,14 +2527,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2428,14 +2543,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2444,14 +2559,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2460,14 +2575,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2476,14 +2591,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2492,14 +2607,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ROTATION</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2508,14 +2623,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ROTATION_X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2524,14 +2639,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ROTATION_Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2540,14 +2655,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">SCALE_X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2556,14 +2671,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">SCALE_Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2572,14 +2687,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2588,14 +2703,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2604,14 +2719,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">TRANSLATION_X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2620,14 +2735,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">TRANSLATION_Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2636,14 +2751,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">TRANSLATION_Z</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2652,14 +2767,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2668,14 +2783,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2684,14 +2799,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2700,14 +2815,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">Z</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
 </table>
   </div>
 </div>
@@ -2736,35 +2851,35 @@
 
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             </nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#CardScrollView(android.content.Context)">CardScrollView</a></span>(Context context)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             </nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#CardScrollView(android.content.Context, android.util.AttributeSet)">CardScrollView</a></span>(Context context, AttributeSet attrs)</nobr>
-        
+
   </td></tr>
 
 
@@ -2781,259 +2896,259 @@
 
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#addView(android.view.View, int, android.view.ViewGroup.LayoutParams)">addView</a></span>(View child, int index, ViewGroup.LayoutParams params)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#canScrollHorizontally(int)">canScrollHorizontally</a></span>(int direction)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#getAvailableScrollDelta(int)">getAvailableScrollDelta</a></span>(int direction)</nobr>
-        
+
         <div class="jd-descrdiv">
           Indicates how far the container may be vertically scrolled in the given direction.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#getCardGravity()">getCardGravity</a></span>()</nobr>
-        
+
         <div class="jd-descrdiv">
           Returns the current layout gravity for contained card frame.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#getExpansionDirection()">getExpansionDirection</a></span>()</nobr>
-        
+
         <div class="jd-descrdiv">
           Returns the current expansion direction for the contained CardFrame.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#getExpansionFactor()">getExpansionFactor</a></span>()</nobr>
-        
+
         <div class="jd-descrdiv">
           Returns the current expansion factor for the contained CardFrame.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#isExpansionEnabled()">isExpansionEnabled</a></span>()</nobr>
-        
+
         <div class="jd-descrdiv">
           Indicates if expansion is enabled.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#onApplyWindowInsets(android.view.WindowInsets)">onApplyWindowInsets</a></span>(WindowInsets insets)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#setCardGravity(int)">setCardGravity</a></span>(int gravity)</nobr>
-        
+
         <div class="jd-descrdiv">
           Applies gravity to adjust the vertical alignment of the contained card frame when it's
  shorter than the containing view.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#setExpansionDirection(int)">setExpansionDirection</a></span>(int direction)</nobr>
-        
+
         <div class="jd-descrdiv">
           Control which direction expansion occurs.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#setExpansionEnabled(boolean)">setExpansionEnabled</a></span>(boolean enableExpansion)</nobr>
-        
+
         <div class="jd-descrdiv">
           Whether the height of the card is permitted to increase beyond the card layout bounds.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#setExpansionFactor(float)">setExpansionFactor</a></span>(float expansionFactor)</nobr>
-        
+
         <div class="jd-descrdiv">
           Changes the expansion factor for the contained CardFrame.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
@@ -3048,67 +3163,67 @@
 
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#onAttachedToWindow()">onAttachedToWindow</a></span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#onFinishInflate()">onFinishInflate</a></span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#onLayout(boolean, int, int, int, int)">onLayout</a></span>(boolean changed, int left, int top, int right, int bottom)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html#onMeasure(int, int)">onMeasure</a></span>(int widthMeasureSpec, int heightMeasureSpec)</nobr>
-        
+
   </td></tr>
 
 
@@ -3129,7 +3244,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.widget.FrameLayout" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.widget.FrameLayout-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -3141,454 +3256,198 @@
   </div>
   <div id="inherited-methods-android.widget.FrameLayout-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">checkLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">draw</span>(Canvas arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">drawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">drawableStateChanged</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">gatherTransparentRegion</span>(Region arg0)</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateDefaultLayoutParams</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(AttributeSet arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getConsiderGoneChildrenWhenMeasuring</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            Drawable</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getForeground</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getForegroundGravity</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            ColorStateList</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getForegroundTintList</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            PorterDuff.Mode</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getForegroundTintMode</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasureAllChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">jumpDrawablesToCurrentState</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onInitializeAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onInitializeAccessibilityNodeInfo</span>(AccessibilityNodeInfo arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onLayout</span>(boolean arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onMeasure</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onSizeChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMeasureAllChildren</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setVisibility</span>(int arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">shouldDelayChildPressedState</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">verifyDrawable</span>(Drawable arg0)</nobr>
-        
   </td></tr>
 
 
@@ -3615,2598 +3474,2647 @@
   </div>
   <div id="inherited-methods-android.view.ViewGroup-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addChildrenForAccessibility</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addStatesFromChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addTouchables</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addViewInLayout</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addViewInLayout</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">attachLayoutAnimationParameters</span>(View arg0, ViewGroup.LayoutParams arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">attachViewToParent</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">bringChildToFront</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canAnimate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+
         <span class="sympad">checkLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childDrawableStateChanged</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childHasTransientStateChanged</span>(View arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">cleanupLayoutState</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearChildFocus</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearDisappearingChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">debug</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachAllViewsFromParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachViewFromParent</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachViewFromParent</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachViewsFromParent</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchApplyWindowInsets</span>(WindowInsets arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchConfigurationChanged</span>(Configuration arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDisplayHint</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDragEvent</span>(DragEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDraw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDrawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchFreezeSelfOnly</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericFocusedEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericPointerEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEventPreIme</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyShortcutEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetActivated</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetPressed</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetSelected</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSystemUiVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchThawSelfOnly</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTrackballEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchUnhandledMove</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchVisibilityChanged</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowFocusChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowSystemUiVisiblityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawChild</span>(Canvas arg0, View arg1, long arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawableStateChanged</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">endViewTransition</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewsWithText</span>(ArrayList&lt;View&gt; arg0, CharSequence arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusSearch</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusableViewAvailable</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">gatherTransparentRegion</span>(Region arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateDefaultLayoutParams</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(AttributeSet arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildAt</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildCount</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildDrawingOrder</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildMeasureSpec</span>(int arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildStaticTransformation</span>(View arg0, Transformation arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildVisibleRect</span>(View arg0, Rect arg1, Point arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipToPadding</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDescendantFocusability</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFocusedChild</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             LayoutAnimationController</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Animation.AnimationListener</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutAnimationListener</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             LayoutTransition</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutTransition</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNestedScrollAxes</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewOverlay</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOverlay</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPersistentDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTouchscreenBlocksFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocusable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasTransientState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">indexOfChild</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChild</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChildInParent</span>(int[] arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAlwaysDrawnWithCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAnimationCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isChildrenDrawingOrderEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isChildrenDrawnWithCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isMotionEventSplittingEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTransitionGroup</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">jumpDrawablesToCurrentState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">layout</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measureChild</span>(View arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measureChildWithMargins</span>(View arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measureChildren</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notifySubtreeAccessibilityStateChanged</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetDescendantRectToMyCoords</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetRectIntoDescendantCoords</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationEnd</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationStart</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAttachedToWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateDrawableState</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDetachedFromWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInterceptHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInterceptTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onLayout</span>(boolean arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedFling</span>(View arg0, float arg1, float arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreFling</span>(View arg0, float arg1, float arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPrePerformAccessibilityAction</span>(View arg0, int arg1, Bundle arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreScroll</span>(View arg0, int arg1, int arg2, int[] arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScroll</span>(View arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScrollAccepted</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRequestFocusInDescendants</span>(int arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRequestSendAccessibilityEvent</span>(View arg0, AccessibilityEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStartNestedScroll</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStopNestedScroll</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewAdded</span>(View arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewRemoved</span>(View arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">recomputeViewAttributes</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeAllViews</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeAllViewsInLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeDetachedView</span>(View arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeView</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViewAt</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViewInLayout</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViews</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViewsInLayout</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildFocus</span>(View arg0, View arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildRectangleOnScreen</span>(View arg0, Rect arg1, boolean arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestDisallowInterceptTouchEvent</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>(int arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestSendAccessibilityEvent</span>(View arg0, AccessibilityEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestTransparentRegion</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scheduleLayoutAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAddStatesFromChildren</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAlwaysDrawnWithCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAnimationCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setChildrenDrawingCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setChildrenDrawingOrderEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setChildrenDrawnWithCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipChildren</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipToPadding</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDescendantFocusability</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutAnimation</span>(LayoutAnimationController arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutAnimationListener</span>(Animation.AnimationListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutMode</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutTransition</span>(LayoutTransition arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMotionEventSplittingEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnHierarchyChangeListener</span>(ViewGroup.OnHierarchyChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPersistentDrawingCache</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setStaticTransformationsEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTouchscreenBlocksFocus</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTransitionGroup</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">shouldDelayChildPressedState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">showContextMenuForChild</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startLayoutAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startViewTransition</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">updateViewLayout</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -6221,7 +6129,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -6233,7718 +6141,8102 @@
   </div>
   <div id="inherited-methods-android.view.View-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addChildrenForAccessibility</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addOnAttachStateChangeListener</span>(View.OnAttachStateChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addOnLayoutChangeListener</span>(View.OnLayoutChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addTouchables</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewPropertyAnimator</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">animate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">announceForAccessibility</span>(CharSequence arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">awakenScrollBars</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">awakenScrollBars</span>(int arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">awakenScrollBars</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">bringToFront</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">buildDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">buildDrawingCache</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">buildLayer</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">callOnClick</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canScrollHorizontally</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canScrollVertically</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">cancelLongPress</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">cancelPendingInputEvents</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">checkInputConnectionProxy</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">combineMeasuredStates</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollExtent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollRange</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeScroll</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeSystemWindowInsets</span>(WindowInsets arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollExtent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollRange</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             AccessibilityNodeInfo</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">createAccessibilityNodeInfo</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">createContextMenu</span>(ContextMenu arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">destroyDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchApplyWindowInsets</span>(WindowInsets arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchConfigurationChanged</span>(Configuration arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDisplayHint</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDragEvent</span>(DragEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDraw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDrawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericFocusedEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericMotionEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericPointerEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEventPreIme</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyShortcutEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedFling</span>(float arg0, float arg1, boolean arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedPreFling</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedPrePerformAccessibilityAction</span>(int arg0, Bundle arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedPreScroll</span>(int arg0, int arg1, int[] arg2, int[] arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedScroll</span>(int arg0, int arg1, int arg2, int arg3, int[] arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchPopulateAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetActivated</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetPressed</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetSelected</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSystemUiVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTrackballEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchUnhandledMove</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchVisibilityChanged</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowFocusChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowSystemUiVisiblityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">draw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawableStateChanged</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewById</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewWithTag</span>(Object arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewsWithText</span>(ArrayList&lt;View&gt; arg0, CharSequence arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">fitSystemWindows</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusSearch</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">forceLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateViewId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityLiveRegion</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             AccessibilityNodeProvider</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityNodeProvider</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityTraversalAfter</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityTraversalBefore</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAlpha</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Animation</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             IBinder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getApplicationWindowToken</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Drawable</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBackground</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ColorStateList</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBackgroundTintList</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             PorterDuff.Mode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBackgroundTintMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBaseline</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBottom</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBottomFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBottomPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getCameraDistance</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Rect</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipBounds</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>(Rect arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipToOutline</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             CharSequence</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getContentDescription</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             Context</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getContext</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ContextMenu.ContextMenuInfo</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getContextMenuInfo</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDefaultSize</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Display</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDisplay</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawableState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Bitmap</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCache</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Bitmap</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCacheBackgroundColor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCacheQuality</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             long</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingTime</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getElevation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFilterTouchesWhenObscured</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFitsSystemWindows</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ArrayList&lt;View&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFocusables</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFocusedRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForeground</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundGravity</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintList</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintMode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getGlobalVisibleRect</span>(Rect arg0, Point arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getGlobalVisibleRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Handler</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHandler</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHitRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHorizontalFadingEdgeLength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHorizontalScrollbarHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getImportantForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getKeepScreenOn</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             KeyEvent.DispatcherState</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getKeyDispatcherState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLabelFor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayerType</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutParams</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLeft</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLeftFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLeftPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLocalVisibleRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLocationInWindow</span>(int[] arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLocationOnScreen</span>(int[] arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Matrix</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMatrix</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredHeightAndState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredWidthAndState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMinimumHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMinimumWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusDownId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusForwardId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusLeftId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusRightId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusUpId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View.OnFocusChangeListener</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOnFocusChangeListener</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewOutlineProvider</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOutlineProvider</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOverScrollMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewOverlay</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOverlay</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingBottom</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingEnd</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingLeft</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingRight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingStart</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingTop</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParentForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPivotX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPivotY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Resources</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getResources</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRightFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRightPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRootView</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootWindowInsets</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRotation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRotationX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRotationY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScaleX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScaleY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarDefaultDelayBeforeFade</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarFadeDuration</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarSize</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarStyle</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollIndicators</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSolidColor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             StateListAnimator</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getStateListAnimator</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSuggestedMinimumHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSuggestedMinimumWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSystemUiVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Object</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTag</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Object</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTag</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTop</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTopFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTopPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             TouchDelegate</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTouchDelegate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ArrayList&lt;View&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTouchables</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTransitionName</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTranslationX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTranslationY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTranslationZ</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVerticalFadingEdgeLength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVerticalScrollbarPosition</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVerticalScrollbarWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewTreeObserver</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getViewTreeObserver</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowAttachCount</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowId</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowSystemUiVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             IBinder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowToken</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowVisibleDisplayFrame</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getZ</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocusable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasNestedScrollingParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasOnClickListeners</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasOverlappingRendering</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasTransientState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasWindowFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">inflate</span>(Context arg0, int arg1, ViewGroup arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidate</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidate</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateOutline</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAccessibilityFocused</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isActivated</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAttachedToWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isClickable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isContextClickable</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isDirty</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isDrawingCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isDuplicateParentStateEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isFocusable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isFocusableInTouchMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isFocused</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHapticFeedbackEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHardwareAccelerated</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHorizontalFadingEdgeEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHorizontalScrollBarEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHovered</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isImportantForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isInEditMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isInLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isInTouchMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLaidOut</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutRequested</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLongClickable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isNestedScrollingEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isOpaque</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isPaddingOffsetRequired</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isPaddingRelative</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isPressed</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSaveEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSaveFromParentEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isScrollContainer</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isScrollbarFadingEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSelected</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isShown</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSoundEffectsEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextAlignmentResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isVerticalFadingEdgeEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isVerticalScrollBarEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">jumpDrawablesToCurrentState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">layout</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measure</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">mergeDrawableStates</span>(int[] arg0, int[] arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetLeftAndRight</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetTopAndBottom</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAnimationEnd</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAnimationStart</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onApplyWindowInsets</span>(WindowInsets arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAttachedToWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCancelPendingInputEvents</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCheckIsTextEditor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onConfigurationChanged</span>(Configuration arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateContextMenu</span>(ContextMenu arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateDrawableState</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             InputConnection</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateInputConnection</span>(EditorInfo arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDetachedFromWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDisplayHint</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDragEvent</span>(DragEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDraw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawForeground</span>(Canvas arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDrawScrollBars</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFilterTouchEventForSecurity</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFinishInflate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFinishTemporaryDetach</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFocusChanged</span>(boolean arg0, int arg1, Rect arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onGenericMotionEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onHoverChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInitializeAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInitializeAccessibilityNodeInfo</span>(AccessibilityNodeInfo arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyDown</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyLongPress</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyMultiple</span>(int arg0, int arg1, KeyEvent arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyPreIme</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyShortcut</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyUp</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onLayout</span>(boolean arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onMeasure</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onOverScrolled</span>(int arg0, int arg1, boolean arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onPopulateAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideVirtualStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRtlPropertiesChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Parcelable</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSaveInstanceState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onScreenStateChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onScrollChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSetAlpha</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSizeChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStartTemporaryDetach</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onTrackballEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onVisibilityChanged</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onWindowFocusChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onWindowSystemUiVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onWindowVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">overScrollBy</span>(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, boolean arg8)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performAccessibilityAction</span>(int arg0, Bundle arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performClick</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performContextClick</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performHapticFeedback</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performHapticFeedback</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performLongClick</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">playSoundEffect</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">post</span>(Runnable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postDelayed</span>(Runnable arg0, long arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidate</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateDelayed</span>(long arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateDelayed</span>(long arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateOnAnimation</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateOnAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postOnAnimation</span>(Runnable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postOnAnimationDelayed</span>(Runnable arg0, long arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">refreshDrawableState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeCallbacks</span>(Runnable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeOnAttachStateChangeListener</span>(View.OnAttachStateChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeOnLayoutChangeListener</span>(View.OnLayoutChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestApplyInsets</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFitSystemWindows</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>(int arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocusFromTouch</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestRectangleOnScreen</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestRectangleOnScreen</span>(Rect arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestUnbufferedDispatch</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">resolveSize</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">resolveSizeAndState</span>(int arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">restoreHierarchyState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">saveHierarchyState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scheduleDrawable</span>(Drawable arg0, Runnable arg1, long arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scrollBy</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scrollTo</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEvent</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEventUnchecked</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityDelegate</span>(View.AccessibilityDelegate arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityLiveRegion</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityTraversalAfter</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityTraversalBefore</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setActivated</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAlpha</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAnimation</span>(Animation arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackground</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundColor</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundResource</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundTintList</span>(ColorStateList arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBottom</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setCameraDistance</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClickable</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipBounds</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipToOutline</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setContentDescription</span>(CharSequence arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setContextClickable</span>(boolean arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheQuality</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDuplicateParentStateEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setElevation</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFadingEdgeLength</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFilterTouchesWhenObscured</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFitsSystemWindows</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFocusable</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFocusableInTouchMode</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHapticFeedbackEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHasTransientState</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHorizontalFadingEdgeEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHorizontalScrollBarEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHovered</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setImportantForAccessibility</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setKeepScreenOn</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLabelFor</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayerPaint</span>(Paint arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayerType</span>(int arg0, Paint arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutDirection</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLeft</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLongClickable</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMeasuredDimension</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMinimumHeight</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMinimumWidth</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNestedScrollingEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusDownId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusForwardId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusLeftId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusRightId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusUpId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnApplyWindowInsetsListener</span>(View.OnApplyWindowInsetsListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnClickListener</span>(View.OnClickListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnContextClickListener</span>(View.OnContextClickListener arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnCreateContextMenuListener</span>(View.OnCreateContextMenuListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnDragListener</span>(View.OnDragListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnFocusChangeListener</span>(View.OnFocusChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnGenericMotionListener</span>(View.OnGenericMotionListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnHoverListener</span>(View.OnHoverListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnKeyListener</span>(View.OnKeyListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnLongClickListener</span>(View.OnLongClickListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnScrollChangeListener</span>(View.OnScrollChangeListener arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnTouchListener</span>(View.OnTouchListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOutlineProvider</span>(ViewOutlineProvider arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOverScrollMode</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPadding</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPaddingRelative</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPivotX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPivotY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPressed</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRight</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRotation</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRotationX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRotationY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSaveEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSaveFromParentEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScaleX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScaleY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarDefaultDelayBeforeFade</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarFadeDuration</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarSize</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarStyle</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollContainer</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollX</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollY</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollbarFadingEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSelected</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSoundEffectsEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setStateListAnimator</span>(StateListAnimator arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSystemUiVisibility</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTag</span>(int arg0, Object arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTag</span>(Object arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTextAlignment</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTextDirection</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTop</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTouchDelegate</span>(TouchDelegate arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTransitionName</span>(String arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTranslationX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTranslationY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTranslationZ</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVerticalFadingEdgeEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVerticalScrollBarEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVerticalScrollbarPosition</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVisibility</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setWillNotCacheDrawing</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setWillNotDraw</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setZ</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">showContextMenu</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionMode</span>(ActionMode.Callback arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startAnimation</span>(Animation arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startDrag</span>(ClipData arg0, View.DragShadowBuilder arg1, Object arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startNestedScroll</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">stopNestedScroll</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">toString</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">unscheduleDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">unscheduleDrawable</span>(Drawable arg0, Runnable arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">verifyDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">willNotCacheDrawing</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">willNotDraw</span>()</nobr>
-        
+
   </td></tr>
 
 
@@ -13959,7 +14251,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -13971,182 +14263,182 @@
   </div>
   <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Object</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clone</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">equals</span>(Object arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">finalize</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             Class&lt;?&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClass</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hashCode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notify</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notifyAll</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">toString</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>(long arg0)</nobr>
-        
+
   </td></tr>
 
 
@@ -14161,7 +14453,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewParent" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewParent-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14173,662 +14465,678 @@
   </div>
   <div id="inherited-methods-android.view.ViewParent-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">bringChildToFront</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childDrawableStateChanged</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childHasTransientStateChanged</span>(View arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearChildFocus</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">createContextMenu</span>(ContextMenu arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusSearch</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusableViewAvailable</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildVisibleRect</span>(View arg0, Rect arg1, Point arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParentForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChild</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChildInParent</span>(int[] arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutRequested</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextAlignmentResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notifySubtreeAccessibilityStateChanged</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedFling</span>(View arg0, float arg1, float arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreFling</span>(View arg0, float arg1, float arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPrePerformAccessibilityAction</span>(View arg0, int arg1, Bundle arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreScroll</span>(View arg0, int arg1, int arg2, int[] arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScroll</span>(View arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScrollAccepted</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStartNestedScroll</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStopNestedScroll</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">recomputeViewAttributes</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildFocus</span>(View arg0, View arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildRectangleOnScreen</span>(View arg0, Rect arg1, boolean arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestDisallowInterceptTouchEvent</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFitSystemWindows</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestSendAccessibilityEvent</span>(View arg0, AccessibilityEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestTransparentRegion</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">showContextMenuForChild</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -14843,7 +15151,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewManager" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewManager-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14855,54 +15163,54 @@
   </div>
   <div id="inherited-methods-android.view.ViewManager-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeView</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">updateViewLayout</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -14917,7 +15225,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.graphics.drawable.Drawable.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14929,54 +15237,54 @@
   </div>
   <div id="inherited-methods-android.graphics.drawable.Drawable.Callback-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scheduleDrawable</span>(Drawable arg0, Runnable arg1, long arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">unscheduleDrawable</span>(Drawable arg0, Runnable arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -14991,7 +15299,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -15003,70 +15311,70 @@
   </div>
   <div id="inherited-methods-android.view.KeyEvent.Callback-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyDown</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyLongPress</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyMultiple</span>(int arg0, int arg1, KeyEvent arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyUp</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -15081,7 +15389,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.accessibility.AccessibilityEventSource" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.accessibility.AccessibilityEventSource-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -15093,38 +15401,38 @@
   </div>
   <div id="inherited-methods-android.view.accessibility.AccessibilityEventSource-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEvent</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEventUnchecked</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
@@ -15170,30 +15478,30 @@
 
 <A NAME="CardScrollView(android.content.Context)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
-        
+        public
+
+
+
+
+
       </span>
       <span class="sympad">CardScrollView</span>
       <span class="normal">(Context context)</span>
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15202,30 +15510,30 @@
 
 <A NAME="CardScrollView(android.content.Context, android.util.AttributeSet)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
-        
+        public
+
+
+
+
+
       </span>
       <span class="sympad">CardScrollView</span>
       <span class="normal">(Context context, AttributeSet attrs)</span>
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15249,14 +15557,14 @@
 
 <A NAME="addView(android.view.View, int, android.view.ViewGroup.LayoutParams)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">addView</span>
@@ -15264,15 +15572,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15281,14 +15589,14 @@
 
 <A NAME="canScrollHorizontally(int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         boolean
       </span>
       <span class="sympad">canScrollHorizontally</span>
@@ -15296,15 +15604,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15313,14 +15621,14 @@
 
 <A NAME="getAvailableScrollDelta(int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         int
       </span>
       <span class="sympad">getAvailableScrollDelta</span>
@@ -15328,15 +15636,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Indicates how far the container may be vertically scrolled in the given direction.
  <p>
  When providing a positive direction value, the return value indicates the available increase
@@ -15360,14 +15668,14 @@
 
 <A NAME="getCardGravity()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         int
       </span>
       <span class="sympad">getCardGravity</span>
@@ -15375,15 +15683,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Returns the current layout gravity for contained card frame.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">See Also</h5>
@@ -15397,14 +15705,14 @@
 
 <A NAME="getExpansionDirection()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         int
       </span>
       <span class="sympad">getExpansionDirection</span>
@@ -15412,15 +15720,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Returns the current expansion direction for the contained CardFrame.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">See Also</h5>
@@ -15434,14 +15742,14 @@
 
 <A NAME="getExpansionFactor()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         float
       </span>
       <span class="sympad">getExpansionFactor</span>
@@ -15449,15 +15757,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Returns the current expansion factor for the contained CardFrame.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">See Also</h5>
@@ -15471,14 +15779,14 @@
 
 <A NAME="isExpansionEnabled()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         boolean
       </span>
       <span class="sympad">isExpansionEnabled</span>
@@ -15486,15 +15794,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Indicates if expansion is enabled.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">See Also</h5>
@@ -15508,14 +15816,14 @@
 
 <A NAME="onApplyWindowInsets(android.view.WindowInsets)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         WindowInsets
       </span>
       <span class="sympad">onApplyWindowInsets</span>
@@ -15523,15 +15831,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15540,14 +15848,14 @@
 
 <A NAME="setCardGravity(int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">setCardGravity</span>
@@ -15555,15 +15863,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Applies gravity to adjust the vertical alignment of the contained card frame when it's
  shorter than the containing view.
  <p>
@@ -15576,14 +15884,14 @@
 
 <A NAME="setExpansionDirection(int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">setExpansionDirection</span>
@@ -15591,15 +15899,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Control which direction expansion occurs. When content is taller than this container, this
  edge will fade to indicate expansion is possible. If expansion is disabled, this edge will
  simply be clipped. If the card is smaller than this layout, this setting has no effect.</p></div>
@@ -15620,14 +15928,14 @@
 
 <A NAME="setExpansionEnabled(boolean)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">setExpansionEnabled</span>
@@ -15635,15 +15943,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Whether the height of the card is permitted to increase beyond the card layout bounds. If
  enabled, content will expand the card up to the current expansion level. If taller, a fading
  edge will indicate that more expansion is possible.</p></div>
@@ -15668,14 +15976,14 @@
 
 <A NAME="setExpansionFactor(float)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">setExpansionFactor</span>
@@ -15683,15 +15991,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Changes the expansion factor for the contained CardFrame.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">See Also</h5>
@@ -15714,14 +16022,14 @@
 
 <A NAME="onAttachedToWindow()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        protected 
-         
-         
-         
-         
+        protected
+
+
+
+
         void
       </span>
       <span class="sympad">onAttachedToWindow</span>
@@ -15729,15 +16037,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15746,14 +16054,14 @@
 
 <A NAME="onFinishInflate()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        protected 
-         
-         
-         
-         
+        protected
+
+
+
+
         void
       </span>
       <span class="sympad">onFinishInflate</span>
@@ -15761,15 +16069,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15778,14 +16086,14 @@
 
 <A NAME="onLayout(boolean, int, int, int, int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        protected 
-         
-         
-         
-         
+        protected
+
+
+
+
         void
       </span>
       <span class="sympad">onLayout</span>
@@ -15793,15 +16101,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15810,14 +16118,14 @@
 
 <A NAME="onMeasure(int, int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        protected 
-         
-         
-         
-         
+        protected
+
+
+
+
         void
       </span>
       <span class="sympad">onMeasure</span>
@@ -15825,15 +16133,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15869,22 +16177,22 @@
 
     <hr class="dac-footer-separator"/>
 
-    
+
       <p class="dac-footer-copyright">
-        
+
   Except as noted, this content is licensed under <a
   href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
   For details and restrictions, see the <a href="../../../../../license.html">
   Content License</a>.
       </p>
       <p class="dac-footer-build">
-        
-    Android Wearable Support&nbsp;r &mdash; 
+
+    Android Wearable Support&nbsp;r &mdash;
 <script src="../../../../../timestamp.js" type="text/javascript"></script>
 <script>document.write(BUILD_TIMESTAMP)</script>
 
       </p>
-    
+
 
     <p class="dac-footer-links">
       <a href="/about/index.html">About Android</a>
@@ -16026,8 +16334,8 @@
 
 </div><!-- end doc-content -->
 
-</div> <!-- end .cols --> 
-</div> <!-- end body-content --> 
+</div> <!-- end .cols -->
+</div> <!-- end body-content -->
 
 
 
diff --git a/docs/html/reference/android/support/wearable/view/CircledImageView.html b/docs/html/reference/android/support/wearable/view/CircledImageView.html
index a2ba3f7..320c517 100644
--- a/docs/html/reference/android/support/wearable/view/CircledImageView.html
+++ b/docs/html/reference/android/support/wearable/view/CircledImageView.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -722,7 +729,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-direct" class="jd-expando-trigger closed"
           ><img id="subclasses-direct-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Direct Subclasses
 
   <div id="subclasses-direct">
@@ -822,7 +829,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-constants-android.view.View">
@@ -1448,6 +1455,78 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_BOTTOM</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_END</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_START</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_TOP</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SOUND_EFFECTS_ENABLED</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1568,7 +1647,7 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
-        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LIGHT_STATUS_BAR</td>
         <td class="jd-descrcol" width="100%">
           
           
@@ -1580,6 +1659,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1590,7 +1681,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_LAYOUT_FLAGS</td>
         <td class="jd-descrcol" width="100%">
@@ -1602,7 +1693,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_CENTER</td>
         <td class="jd-descrcol" width="100%">
@@ -1614,7 +1705,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_GRAVITY</td>
         <td class="jd-descrcol" width="100%">
@@ -1626,7 +1717,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_INHERIT</td>
         <td class="jd-descrcol" width="100%">
@@ -1638,7 +1729,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1650,7 +1741,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1662,7 +1753,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1674,7 +1765,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1686,7 +1777,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_ANY_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -1698,7 +1789,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG</td>
         <td class="jd-descrcol" width="100%">
@@ -1710,8 +1801,32 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_LTR</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_RTL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1722,7 +1837,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
@@ -1734,7 +1849,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
@@ -1746,7 +1861,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -1758,7 +1873,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">VIEW_LOG_TAG</td>
         <td class="jd-descrcol" width="100%">
@@ -1770,7 +1885,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">VISIBLE</td>
         <td class="jd-descrcol" width="100%">
@@ -1815,7 +1930,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-fields-android.view.View">
@@ -2656,42 +2771,10 @@
             
             
             
-            long</nobr>
+            float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getColorChangeAnimationDuration()">getColorChangeAnimationDuration</a></span>()</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getDefaultCircleColor()">getDefaultCircleColor</a></span>()</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            Drawable</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getImageDrawable()">getImageDrawable</a></span>()</nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getCircleRadiusPercent()">getCircleRadiusPercent</a></span>()</nobr>
         
   </td></tr>
 
@@ -2707,7 +2790,7 @@
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getInitialCircleRadius()">getInitialCircleRadius</a></span>()</nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getCircleRadiusPressed()">getCircleRadiusPressed</a></span>()</nobr>
         
   </td></tr>
 
@@ -2720,6 +2803,86 @@
             
             
             
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getCircleRadiusPressedPercent()">getCircleRadiusPressedPercent</a></span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            long</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getColorChangeAnimationDuration()">getColorChangeAnimationDuration</a></span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getDefaultCircleColor()">getDefaultCircleColor</a></span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getImageDrawable()">getImageDrawable</a></span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getInitialCircleRadius()">getInitialCircleRadius</a></span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -2729,7 +2892,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2752,7 +2915,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2768,7 +2931,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2784,7 +2947,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2800,7 +2963,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2816,6 +2979,29 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#setCircleRadiusPercent(float)">setCircleRadiusPercent</a></span>(float circleRadiusPercent)</nobr>
+        
+        <div class="jd-descrdiv">
+          Sets the radius of the circle to be a percentage of the largest dimension of the view.
+          
+    
+
+        </div>
+  
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -2842,13 +3028,37 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#setCircleRadiusPressedPercent(float)">setCircleRadiusPressedPercent</a></span>(float circleRadiusPressedPercent)</nobr>
+        
+        <div class="jd-descrdiv">
+          Sets the radius of the circle to be a percentage of the largest dimension of the view when
+ pressed.
+          
+    
+
+        </div>
+  
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#setColorChangeAnimationDuration(long)">setColorChangeAnimationDuration</a></span>(long mColorChangeAnimationDurationMs)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2864,7 +3074,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2880,7 +3090,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2896,7 +3106,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2912,7 +3122,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2928,7 +3138,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2944,7 +3154,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2960,7 +3170,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2983,7 +3193,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3129,7 +3339,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -4067,7 +4277,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
         
   </td></tr>
 
@@ -4083,13 +4293,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4105,7 +4331,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4121,7 +4347,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4137,7 +4363,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4153,7 +4379,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4169,7 +4395,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4185,7 +4411,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4201,7 +4427,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4217,7 +4443,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4233,7 +4459,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4249,7 +4475,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4265,7 +4491,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4281,7 +4507,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4297,7 +4523,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4313,7 +4539,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4329,7 +4555,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4345,7 +4571,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4361,7 +4587,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4377,7 +4603,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4393,7 +4619,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4409,7 +4635,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4425,7 +4651,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4441,6 +4667,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -4701,6 +4943,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -4713,7 +4971,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4729,7 +4987,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4745,7 +5003,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4761,7 +5019,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4777,7 +5035,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4793,7 +5051,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4809,7 +5067,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4825,7 +5083,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4841,7 +5099,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4857,7 +5115,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4873,7 +5131,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4889,7 +5147,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4905,7 +5163,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4921,7 +5179,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4937,7 +5195,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4953,7 +5211,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4969,7 +5227,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4985,6 +5243,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForeground</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -4992,6 +5266,54 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundGravity</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintList</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -5001,7 +5323,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5017,7 +5339,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5033,7 +5355,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5049,7 +5371,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5065,7 +5387,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5081,7 +5403,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5097,7 +5419,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5113,7 +5435,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5129,7 +5451,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5145,7 +5467,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5161,7 +5483,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5177,7 +5499,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5193,7 +5515,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5209,7 +5531,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5225,7 +5547,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5241,7 +5563,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5257,7 +5579,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5273,7 +5595,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5289,7 +5611,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5305,7 +5627,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5321,7 +5643,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5337,7 +5659,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5353,7 +5675,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5369,7 +5691,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5385,7 +5707,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5401,7 +5723,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5417,7 +5739,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5433,7 +5755,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5449,7 +5771,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5465,7 +5787,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5481,7 +5803,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5497,7 +5819,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5513,7 +5835,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5529,7 +5851,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5545,7 +5867,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5561,7 +5883,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5577,7 +5899,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5593,7 +5915,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5609,7 +5931,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5625,7 +5947,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5641,7 +5963,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5657,7 +5979,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5673,7 +5995,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5689,7 +6011,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5705,7 +6027,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5721,7 +6043,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5737,7 +6059,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5753,7 +6075,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5769,7 +6091,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5785,7 +6107,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5801,7 +6123,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5817,7 +6139,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5833,6 +6155,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootWindowInsets</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -5981,6 +6319,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollIndicators</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -5993,7 +6347,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6009,7 +6363,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6025,7 +6379,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6041,7 +6395,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6057,7 +6411,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6073,7 +6427,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6089,7 +6443,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6105,7 +6459,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6121,7 +6475,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6137,7 +6491,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6153,7 +6507,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6169,7 +6523,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6185,7 +6539,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6201,7 +6555,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6217,7 +6571,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6233,7 +6587,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6249,7 +6603,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6265,7 +6619,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6281,7 +6635,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6297,7 +6651,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6313,7 +6667,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6329,7 +6683,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6345,7 +6699,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6361,7 +6715,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6377,7 +6731,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6393,7 +6747,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6409,7 +6763,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6425,7 +6779,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6441,7 +6795,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6457,7 +6811,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6473,7 +6827,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6489,7 +6843,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6505,7 +6859,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6521,7 +6875,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6537,7 +6891,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6553,7 +6907,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6569,7 +6923,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6585,7 +6939,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6601,7 +6955,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6617,7 +6971,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6633,7 +6987,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6649,7 +7003,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6665,7 +7019,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6681,7 +7035,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6697,7 +7051,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6713,7 +7067,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6729,7 +7083,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6745,7 +7099,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6761,7 +7115,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6777,7 +7131,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6793,7 +7147,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6809,6 +7163,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isContextClickable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -7709,6 +8079,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawForeground</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -7721,7 +8107,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7737,7 +8123,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7753,7 +8139,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7769,7 +8155,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7785,7 +8171,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7801,7 +8187,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7817,7 +8203,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7833,7 +8219,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7849,7 +8235,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7865,7 +8251,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7881,7 +8267,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7897,7 +8283,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7913,7 +8299,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7929,7 +8315,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7945,7 +8331,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7961,7 +8347,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7977,7 +8363,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7993,7 +8379,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8009,7 +8395,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8025,6 +8411,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -8035,13 +8437,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideVirtualStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8057,7 +8475,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8073,7 +8491,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8089,7 +8507,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8105,7 +8523,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8121,7 +8539,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8137,7 +8555,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8153,7 +8571,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8169,7 +8587,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8185,7 +8603,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8201,7 +8619,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8217,7 +8635,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8233,7 +8651,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8249,7 +8667,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8265,7 +8683,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8281,7 +8699,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8297,6 +8715,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performContextClick</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -9203,7 +9637,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        <span class="sympad">setContextClickable</span>(boolean arg0)</nobr>
         
   </td></tr>
 
@@ -9219,13 +9653,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9241,7 +9691,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9257,7 +9707,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9273,7 +9723,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9289,7 +9739,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9305,7 +9755,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9321,7 +9771,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9337,7 +9787,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9353,7 +9803,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9369,6 +9819,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -9379,13 +9845,61 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHapticFeedbackEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9401,7 +9915,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9417,7 +9931,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9433,7 +9947,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9449,7 +9963,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9465,7 +9979,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9481,7 +9995,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9497,7 +10011,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9513,7 +10027,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9529,7 +10043,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9545,7 +10059,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9561,7 +10075,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9577,7 +10091,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9593,7 +10107,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9609,7 +10123,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9625,7 +10139,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9641,7 +10155,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9657,7 +10171,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9673,7 +10187,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9689,7 +10203,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9705,7 +10219,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9721,7 +10235,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9737,7 +10251,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9753,7 +10267,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9769,7 +10283,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9785,6 +10299,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnContextClickListener</span>(View.OnContextClickListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -9907,7 +10437,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        <span class="sympad">setOnScrollChangeListener</span>(View.OnScrollChangeListener arg0)</nobr>
         
   </td></tr>
 
@@ -9923,13 +10453,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnTouchListener</span>(View.OnTouchListener arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9945,7 +10491,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9961,7 +10507,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9977,7 +10523,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9993,7 +10539,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10009,7 +10555,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10025,7 +10571,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10041,7 +10587,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10057,7 +10603,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10073,7 +10619,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10089,7 +10635,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10105,7 +10651,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10121,7 +10667,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10137,7 +10683,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10153,7 +10699,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10169,7 +10715,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10185,7 +10731,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10201,7 +10747,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10217,7 +10763,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10233,7 +10779,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10249,6 +10795,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -10259,13 +10821,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollX</span>(int arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10281,7 +10859,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10297,7 +10875,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10313,7 +10891,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10329,7 +10907,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10345,7 +10923,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10361,7 +10939,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10377,7 +10955,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10393,7 +10971,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10409,7 +10987,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10425,7 +11003,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10441,7 +11019,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10457,7 +11035,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10473,7 +11051,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10489,7 +11067,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10505,7 +11083,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10521,7 +11099,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10537,7 +11115,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10553,7 +11131,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10569,7 +11147,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10585,7 +11163,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10601,7 +11179,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10617,7 +11195,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10633,7 +11211,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10649,7 +11227,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10665,7 +11243,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10681,6 +11259,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -10867,7 +11461,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -11069,7 +11663,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.graphics.drawable.Drawable.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -11143,7 +11737,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -11233,7 +11827,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.accessibility.AccessibilityEventSource" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.accessibility.AccessibilityEventSource-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -11495,6 +12089,102 @@
 </div>
 
 
+<A NAME="getCircleRadiusPercent()"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        float
+      </span>
+      <span class="sympad">getCircleRadiusPercent</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="getCircleRadiusPressed()"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        float
+      </span>
+      <span class="sympad">getCircleRadiusPressed</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="getCircleRadiusPressedPercent()"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        float
+      </span>
+      <span class="sympad">getCircleRadiusPressedPercent</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
 <A NAME="getColorChangeAnimationDuration()"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -11830,6 +12520,48 @@
 </div>
 
 
+<A NAME="setCircleRadiusPercent(float)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">setCircleRadiusPercent</span>
+      <span class="normal">(float circleRadiusPercent)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Sets the radius of the circle to be a percentage of the largest dimension of the view.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>circleRadiusPercent</td>
+          <td>A <code>float</code> from 0 to 1 representing the radius percentage.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="setCircleRadiusPressed(float)"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -11862,6 +12594,50 @@
 </div>
 
 
+<A NAME="setCircleRadiusPressedPercent(float)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">setCircleRadiusPressedPercent</span>
+      <span class="normal">(float circleRadiusPressedPercent)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Sets the radius of the circle to be a percentage of the largest dimension of the view when
+ pressed.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>circleRadiusPressedPercent</td>
+          <td>A <code>float</code> from 0 to 1 representing the radius
+                                   percentage.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="setColorChangeAnimationDuration(long)"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/android/support/wearable/view/CircularButton.html b/docs/html/reference/android/support/wearable/view/CircularButton.html
index ff626ce..30c0a43 100644
--- a/docs/html/reference/android/support/wearable/view/CircularButton.html
+++ b/docs/html/reference/android/support/wearable/view/CircularButton.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -818,7 +825,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-constants-android.view.View">
@@ -1444,6 +1451,78 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_BOTTOM</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_END</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_START</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_TOP</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SOUND_EFFECTS_ENABLED</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1564,7 +1643,7 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
-        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LIGHT_STATUS_BAR</td>
         <td class="jd-descrcol" width="100%">
           
           
@@ -1576,6 +1655,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1586,7 +1677,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_LAYOUT_FLAGS</td>
         <td class="jd-descrcol" width="100%">
@@ -1598,7 +1689,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_CENTER</td>
         <td class="jd-descrcol" width="100%">
@@ -1610,7 +1701,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_GRAVITY</td>
         <td class="jd-descrcol" width="100%">
@@ -1622,7 +1713,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_INHERIT</td>
         <td class="jd-descrcol" width="100%">
@@ -1634,7 +1725,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1646,7 +1737,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1658,7 +1749,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1670,7 +1761,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1682,7 +1773,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_ANY_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -1694,7 +1785,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG</td>
         <td class="jd-descrcol" width="100%">
@@ -1706,8 +1797,32 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_LTR</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_RTL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1718,7 +1833,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
@@ -1730,7 +1845,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
@@ -1742,7 +1857,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -1754,7 +1869,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">VIEW_LOG_TAG</td>
         <td class="jd-descrcol" width="100%">
@@ -1766,7 +1881,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">VISIBLE</td>
         <td class="jd-descrcol" width="100%">
@@ -1811,7 +1926,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-fields-android.view.View">
@@ -2961,7 +3076,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -3899,7 +4014,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
         
   </td></tr>
 
@@ -3915,13 +4030,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3937,7 +4068,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3953,7 +4084,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3969,7 +4100,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3985,7 +4116,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4001,7 +4132,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4017,7 +4148,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4033,7 +4164,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4049,7 +4180,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4065,7 +4196,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4081,7 +4212,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4097,7 +4228,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4113,7 +4244,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4129,7 +4260,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4145,7 +4276,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4161,7 +4292,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4177,7 +4308,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4193,7 +4324,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4209,7 +4340,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4225,7 +4356,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4241,7 +4372,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4257,7 +4388,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4273,6 +4404,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -4533,6 +4680,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -4545,7 +4708,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4561,7 +4724,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4577,7 +4740,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4593,7 +4756,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4609,7 +4772,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4625,7 +4788,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4641,7 +4804,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4657,7 +4820,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4673,7 +4836,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4689,7 +4852,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4705,7 +4868,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4721,7 +4884,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4737,7 +4900,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4753,7 +4916,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4769,7 +4932,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4785,7 +4948,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4801,7 +4964,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4817,6 +4980,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForeground</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -4824,6 +5003,54 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundGravity</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintList</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -4833,7 +5060,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4849,7 +5076,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4865,7 +5092,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4881,7 +5108,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4897,7 +5124,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4913,7 +5140,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4929,7 +5156,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4945,7 +5172,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4961,7 +5188,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4977,7 +5204,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4993,7 +5220,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5009,7 +5236,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5025,7 +5252,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5041,7 +5268,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5057,7 +5284,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5073,7 +5300,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5089,7 +5316,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5105,7 +5332,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5121,7 +5348,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5137,7 +5364,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5153,7 +5380,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5169,7 +5396,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5185,7 +5412,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5201,7 +5428,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5217,7 +5444,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5233,7 +5460,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5249,7 +5476,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5265,7 +5492,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5281,7 +5508,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5297,7 +5524,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5313,7 +5540,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5329,7 +5556,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5345,7 +5572,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5361,7 +5588,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5377,7 +5604,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5393,7 +5620,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5409,7 +5636,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5425,7 +5652,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5441,7 +5668,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5457,7 +5684,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5473,7 +5700,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5489,7 +5716,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5505,7 +5732,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5521,7 +5748,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5537,7 +5764,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5553,7 +5780,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5569,7 +5796,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5585,7 +5812,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5601,7 +5828,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5617,7 +5844,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5633,7 +5860,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5649,7 +5876,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5665,6 +5892,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootWindowInsets</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -5813,6 +6056,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollIndicators</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -5825,7 +6084,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5841,7 +6100,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5857,7 +6116,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5873,7 +6132,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5889,7 +6148,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5905,7 +6164,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5921,7 +6180,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5937,7 +6196,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5953,7 +6212,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5969,7 +6228,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5985,7 +6244,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6001,7 +6260,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6017,7 +6276,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6033,7 +6292,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6049,7 +6308,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6065,7 +6324,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6081,7 +6340,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6097,7 +6356,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6113,7 +6372,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6129,7 +6388,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6145,7 +6404,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6161,7 +6420,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6177,7 +6436,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6193,7 +6452,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6209,7 +6468,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6225,7 +6484,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6241,7 +6500,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6257,7 +6516,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6273,7 +6532,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6289,7 +6548,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6305,7 +6564,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6321,7 +6580,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6337,7 +6596,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6353,7 +6612,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6369,7 +6628,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6385,7 +6644,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6401,7 +6660,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6417,7 +6676,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6433,7 +6692,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6449,7 +6708,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6465,7 +6724,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6481,7 +6740,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6497,7 +6756,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6513,7 +6772,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6529,7 +6788,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6545,7 +6804,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6561,7 +6820,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6577,7 +6836,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6593,7 +6852,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6609,7 +6868,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6625,7 +6884,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6641,6 +6900,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isContextClickable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -7541,6 +7816,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawForeground</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -7553,7 +7844,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7569,7 +7860,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7585,7 +7876,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7601,7 +7892,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7617,7 +7908,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7633,7 +7924,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7649,7 +7940,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7665,7 +7956,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7681,7 +7972,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7697,7 +7988,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7713,7 +8004,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7729,7 +8020,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7745,7 +8036,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7761,7 +8052,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7777,7 +8068,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7793,7 +8084,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7809,7 +8100,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7825,7 +8116,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7841,7 +8132,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7857,6 +8148,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -7867,13 +8174,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideVirtualStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7889,7 +8212,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7905,7 +8228,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7921,7 +8244,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7937,7 +8260,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7953,7 +8276,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7969,7 +8292,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7985,7 +8308,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8001,7 +8324,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8017,7 +8340,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8033,7 +8356,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8049,7 +8372,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8065,7 +8388,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8081,7 +8404,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8097,7 +8420,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8113,7 +8436,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8129,6 +8452,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performContextClick</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -9035,7 +9374,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        <span class="sympad">setContextClickable</span>(boolean arg0)</nobr>
         
   </td></tr>
 
@@ -9051,13 +9390,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9073,7 +9428,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9089,7 +9444,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9105,7 +9460,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9121,7 +9476,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9137,7 +9492,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9153,7 +9508,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9169,7 +9524,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9185,7 +9540,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9201,6 +9556,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -9211,13 +9582,61 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHapticFeedbackEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9233,7 +9652,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9249,7 +9668,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9265,7 +9684,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9281,7 +9700,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9297,7 +9716,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9313,7 +9732,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9329,7 +9748,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9345,7 +9764,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9361,7 +9780,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9377,7 +9796,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9393,7 +9812,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9409,7 +9828,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9425,7 +9844,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9441,7 +9860,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9457,7 +9876,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9473,7 +9892,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9489,7 +9908,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9505,7 +9924,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9521,7 +9940,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9537,7 +9956,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9553,7 +9972,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9569,7 +9988,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9585,7 +10004,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9601,7 +10020,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9617,6 +10036,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnContextClickListener</span>(View.OnContextClickListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -9739,7 +10174,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        <span class="sympad">setOnScrollChangeListener</span>(View.OnScrollChangeListener arg0)</nobr>
         
   </td></tr>
 
@@ -9755,13 +10190,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnTouchListener</span>(View.OnTouchListener arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9777,7 +10228,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9793,7 +10244,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9809,7 +10260,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9825,7 +10276,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9841,7 +10292,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9857,7 +10308,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9873,7 +10324,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9889,7 +10340,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9905,7 +10356,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9921,7 +10372,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9937,7 +10388,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9953,7 +10404,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9969,7 +10420,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9985,7 +10436,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10001,7 +10452,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10017,7 +10468,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10033,7 +10484,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10049,7 +10500,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10065,7 +10516,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10081,6 +10532,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -10091,13 +10558,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollX</span>(int arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10113,7 +10596,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10129,7 +10612,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10145,7 +10628,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10161,7 +10644,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10177,7 +10660,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10193,7 +10676,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10209,7 +10692,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10225,7 +10708,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10241,7 +10724,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10257,7 +10740,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10273,7 +10756,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10289,7 +10772,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10305,7 +10788,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10321,7 +10804,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10337,7 +10820,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10353,7 +10836,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10369,7 +10852,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10385,7 +10868,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10401,7 +10884,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10417,7 +10900,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10433,7 +10916,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10449,7 +10932,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10465,7 +10948,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10481,7 +10964,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10497,7 +10980,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10513,6 +10996,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -10699,7 +11198,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -10901,7 +11400,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.graphics.drawable.Drawable.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -10975,7 +11474,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -11065,7 +11564,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.accessibility.AccessibilityEventSource" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.accessibility.AccessibilityEventSource-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
diff --git a/docs/html/reference/android/support/wearable/view/CrossfadeDrawable.html b/docs/html/reference/android/support/wearable/view/CrossfadeDrawable.html
index 176e532..70ae597 100644
--- a/docs/html/reference/android/support/wearable/view/CrossfadeDrawable.html
+++ b/docs/html/reference/android/support/wearable/view/CrossfadeDrawable.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -1256,7 +1263,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.graphics.drawable.Drawable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1631,10 +1638,10 @@
             
             
             
-            int</nobr>
+            void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getIntrinsicHeight</span>()</nobr>
+        <span class="sympad">getHotspotBounds</span>(Rect arg0)</nobr>
         
   </td></tr>
 
@@ -1650,12 +1657,44 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getIntrinsicHeight</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getIntrinsicWidth</span>()</nobr>
         
   </td></tr>
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLayoutDirection</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -1858,7 +1897,7 @@
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">isStateful</span>()</nobr>
+        <span class="sympad">isFilterBitmap</span>()</nobr>
         
   </td></tr>
 
@@ -1868,6 +1907,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isStateful</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -1880,7 +1935,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1896,7 +1951,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1912,7 +1967,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1928,6 +1983,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onLayoutDirectionChanged</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -2194,7 +2265,7 @@
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setLevel</span>(int arg0)</nobr>
+        <span class="sympad">setLayoutDirection</span>(int arg0)</nobr>
         
   </td></tr>
 
@@ -2204,6 +2275,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setLevel</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             
             
             
@@ -2216,7 +2303,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2232,7 +2319,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2248,7 +2335,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2264,7 +2351,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2280,7 +2367,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2306,7 +2393,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2508,7 +2595,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.graphics.drawable.Drawable.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
diff --git a/docs/html/reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html b/docs/html/reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html
index 459b683..620d30c 100644
--- a/docs/html/reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html
+++ b/docs/html/reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="selected api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
diff --git a/docs/html/reference/android/support/wearable/view/DelayedConfirmationView.html b/docs/html/reference/android/support/wearable/view/DelayedConfirmationView.html
index 10e10b9..2e8a7c1 100644
--- a/docs/html/reference/android/support/wearable/view/DelayedConfirmationView.html
+++ b/docs/html/reference/android/support/wearable/view/DelayedConfirmationView.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -841,7 +848,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-constants-android.view.View">
@@ -1467,6 +1474,78 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_BOTTOM</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_END</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_START</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_TOP</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SOUND_EFFECTS_ENABLED</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1587,7 +1666,7 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
-        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LIGHT_STATUS_BAR</td>
         <td class="jd-descrcol" width="100%">
           
           
@@ -1599,6 +1678,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1609,7 +1700,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_LAYOUT_FLAGS</td>
         <td class="jd-descrcol" width="100%">
@@ -1621,7 +1712,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_CENTER</td>
         <td class="jd-descrcol" width="100%">
@@ -1633,7 +1724,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_GRAVITY</td>
         <td class="jd-descrcol" width="100%">
@@ -1645,7 +1736,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_INHERIT</td>
         <td class="jd-descrcol" width="100%">
@@ -1657,7 +1748,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1669,7 +1760,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1681,7 +1772,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1693,7 +1784,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1705,7 +1796,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_ANY_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -1717,7 +1808,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG</td>
         <td class="jd-descrcol" width="100%">
@@ -1729,8 +1820,32 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_LTR</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_RTL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1741,7 +1856,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
@@ -1753,7 +1868,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
@@ -1765,7 +1880,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -1777,7 +1892,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">VIEW_LOG_TAG</td>
         <td class="jd-descrcol" width="100%">
@@ -1789,7 +1904,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">VISIBLE</td>
         <td class="jd-descrcol" width="100%">
@@ -1836,7 +1951,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-fields-android.view.View">
@@ -2812,7 +2927,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.wearable.view.CircledImageView" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.wearable.view.CircledImageView-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2883,42 +2998,10 @@
             
             
             
-            long</nobr>
+            float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getColorChangeAnimationDuration()">getColorChangeAnimationDuration</a></span>()</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getDefaultCircleColor()">getDefaultCircleColor</a></span>()</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            Drawable</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getImageDrawable()">getImageDrawable</a></span>()</nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getCircleRadiusPercent()">getCircleRadiusPercent</a></span>()</nobr>
         
   </td></tr>
 
@@ -2934,7 +3017,7 @@
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getInitialCircleRadius()">getInitialCircleRadius</a></span>()</nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getCircleRadiusPressed()">getCircleRadiusPressed</a></span>()</nobr>
         
   </td></tr>
 
@@ -2947,6 +3030,86 @@
             
             
             
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getCircleRadiusPressedPercent()">getCircleRadiusPressedPercent</a></span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            long</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getColorChangeAnimationDuration()">getColorChangeAnimationDuration</a></span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getDefaultCircleColor()">getDefaultCircleColor</a></span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getImageDrawable()">getImageDrawable</a></span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#getInitialCircleRadius()">getInitialCircleRadius</a></span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -2956,7 +3119,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2972,7 +3135,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2988,7 +3151,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3004,7 +3167,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3020,7 +3183,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3036,7 +3199,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3059,7 +3222,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3075,7 +3238,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3091,7 +3254,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3107,7 +3270,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3123,6 +3286,29 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#setCircleRadiusPercent(float)">setCircleRadiusPercent</a></span>(float circleRadiusPercent)</nobr>
+        
+        <div class="jd-descrdiv">
+          Sets the radius of the circle to be a percentage of the largest dimension of the view.
+          
+    
+
+        </div>
+  
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -3149,13 +3335,37 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#setCircleRadiusPressedPercent(float)">setCircleRadiusPressedPercent</a></span>(float circleRadiusPressedPercent)</nobr>
+        
+        <div class="jd-descrdiv">
+          Sets the radius of the circle to be a percentage of the largest dimension of the view when
+ pressed.
+          
+    
+
+        </div>
+  
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html#setColorChangeAnimationDuration(long)">setColorChangeAnimationDuration</a></span>(long mColorChangeAnimationDurationMs)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3171,7 +3381,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3187,7 +3397,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3203,7 +3413,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3219,7 +3429,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3235,7 +3445,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3251,7 +3461,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3267,7 +3477,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3290,7 +3500,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3323,7 +3533,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -4261,7 +4471,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
         
   </td></tr>
 
@@ -4277,13 +4487,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4299,7 +4525,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4315,7 +4541,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4331,7 +4557,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4347,7 +4573,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4363,7 +4589,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4379,7 +4605,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4395,7 +4621,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4411,7 +4637,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4427,7 +4653,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4443,7 +4669,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4459,7 +4685,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4475,7 +4701,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4491,7 +4717,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4507,7 +4733,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4523,7 +4749,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4539,7 +4765,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4555,7 +4781,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4571,7 +4797,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4587,7 +4813,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4603,7 +4829,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4619,7 +4845,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4635,6 +4861,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -4895,6 +5137,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -4907,7 +5165,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4923,7 +5181,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4939,7 +5197,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4955,7 +5213,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4971,7 +5229,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4987,7 +5245,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5003,7 +5261,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5019,7 +5277,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5035,7 +5293,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5051,7 +5309,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5067,7 +5325,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5083,7 +5341,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5099,7 +5357,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5115,7 +5373,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5131,7 +5389,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5147,7 +5405,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5163,7 +5421,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5179,6 +5437,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForeground</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -5186,6 +5460,54 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundGravity</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintList</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -5195,7 +5517,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5211,7 +5533,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5227,7 +5549,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5243,7 +5565,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5259,7 +5581,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5275,7 +5597,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5291,7 +5613,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5307,7 +5629,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5323,7 +5645,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5339,7 +5661,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5355,7 +5677,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5371,7 +5693,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5387,7 +5709,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5403,7 +5725,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5419,7 +5741,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5435,7 +5757,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5451,7 +5773,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5467,7 +5789,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5483,7 +5805,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5499,7 +5821,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5515,7 +5837,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5531,7 +5853,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5547,7 +5869,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5563,7 +5885,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5579,7 +5901,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5595,7 +5917,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5611,7 +5933,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5627,7 +5949,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5643,7 +5965,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5659,7 +5981,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5675,7 +5997,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5691,7 +6013,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5707,7 +6029,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5723,7 +6045,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5739,7 +6061,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5755,7 +6077,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5771,7 +6093,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5787,7 +6109,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5803,7 +6125,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5819,7 +6141,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5835,7 +6157,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5851,7 +6173,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5867,7 +6189,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5883,7 +6205,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5899,7 +6221,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5915,7 +6237,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5931,7 +6253,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5947,7 +6269,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5963,7 +6285,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5979,7 +6301,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5995,7 +6317,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6011,7 +6333,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6027,6 +6349,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootWindowInsets</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -6175,6 +6513,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollIndicators</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -6187,7 +6541,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6203,7 +6557,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6219,7 +6573,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6235,7 +6589,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6251,7 +6605,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6267,7 +6621,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6283,7 +6637,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6299,7 +6653,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6315,7 +6669,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6331,7 +6685,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6347,7 +6701,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6363,7 +6717,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6379,7 +6733,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6395,7 +6749,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6411,7 +6765,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6427,7 +6781,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6443,7 +6797,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6459,7 +6813,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6475,7 +6829,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6491,7 +6845,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6507,7 +6861,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6523,7 +6877,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6539,7 +6893,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6555,7 +6909,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6571,7 +6925,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6587,7 +6941,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6603,7 +6957,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6619,7 +6973,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6635,7 +6989,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6651,7 +7005,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6667,7 +7021,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6683,7 +7037,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6699,7 +7053,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6715,7 +7069,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6731,7 +7085,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6747,7 +7101,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6763,7 +7117,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6779,7 +7133,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6795,7 +7149,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6811,7 +7165,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6827,7 +7181,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6843,7 +7197,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6859,7 +7213,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6875,7 +7229,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6891,7 +7245,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6907,7 +7261,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6923,7 +7277,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6939,7 +7293,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6955,7 +7309,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6971,7 +7325,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6987,7 +7341,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7003,6 +7357,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isContextClickable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -7903,6 +8273,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawForeground</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -7915,7 +8301,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7931,7 +8317,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7947,7 +8333,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7963,7 +8349,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7979,7 +8365,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7995,7 +8381,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8011,7 +8397,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8027,7 +8413,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8043,7 +8429,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8059,7 +8445,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8075,7 +8461,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8091,7 +8477,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8107,7 +8493,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8123,7 +8509,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8139,7 +8525,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8155,7 +8541,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8171,7 +8557,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8187,7 +8573,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8203,7 +8589,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8219,6 +8605,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -8229,13 +8631,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideVirtualStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8251,7 +8669,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8267,7 +8685,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8283,7 +8701,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8299,7 +8717,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8315,7 +8733,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8331,7 +8749,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8347,7 +8765,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8363,7 +8781,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8379,7 +8797,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8395,7 +8813,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8411,7 +8829,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8427,7 +8845,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8443,7 +8861,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8459,7 +8877,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8475,7 +8893,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8491,6 +8909,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performContextClick</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -9397,7 +9831,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        <span class="sympad">setContextClickable</span>(boolean arg0)</nobr>
         
   </td></tr>
 
@@ -9413,13 +9847,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9435,7 +9885,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9451,7 +9901,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9467,7 +9917,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9483,7 +9933,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9499,7 +9949,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9515,7 +9965,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9531,7 +9981,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9547,7 +9997,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9563,6 +10013,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -9573,13 +10039,61 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHapticFeedbackEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9595,7 +10109,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9611,7 +10125,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9627,7 +10141,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9643,7 +10157,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9659,7 +10173,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9675,7 +10189,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9691,7 +10205,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9707,7 +10221,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9723,7 +10237,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9739,7 +10253,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9755,7 +10269,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9771,7 +10285,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9787,7 +10301,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9803,7 +10317,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9819,7 +10333,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9835,7 +10349,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9851,7 +10365,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9867,7 +10381,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9883,7 +10397,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9899,7 +10413,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9915,7 +10429,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9931,7 +10445,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9947,7 +10461,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9963,7 +10477,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9979,6 +10493,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnContextClickListener</span>(View.OnContextClickListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -10101,7 +10631,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        <span class="sympad">setOnScrollChangeListener</span>(View.OnScrollChangeListener arg0)</nobr>
         
   </td></tr>
 
@@ -10117,13 +10647,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnTouchListener</span>(View.OnTouchListener arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10139,7 +10685,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10155,7 +10701,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10171,7 +10717,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10187,7 +10733,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10203,7 +10749,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10219,7 +10765,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10235,7 +10781,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10251,7 +10797,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10267,7 +10813,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10283,7 +10829,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10299,7 +10845,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10315,7 +10861,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10331,7 +10877,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10347,7 +10893,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10363,7 +10909,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10379,7 +10925,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10395,7 +10941,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10411,7 +10957,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10427,7 +10973,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10443,6 +10989,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -10453,13 +11015,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollX</span>(int arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10475,7 +11053,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10491,7 +11069,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10507,7 +11085,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10523,7 +11101,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10539,7 +11117,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10555,7 +11133,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10571,7 +11149,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10587,7 +11165,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10603,7 +11181,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10619,7 +11197,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10635,7 +11213,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10651,7 +11229,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10667,7 +11245,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10683,7 +11261,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10699,7 +11277,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10715,7 +11293,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10731,7 +11309,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10747,7 +11325,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10763,7 +11341,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10779,7 +11357,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10795,7 +11373,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10811,7 +11389,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10827,7 +11405,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10843,7 +11421,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10859,7 +11437,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10875,6 +11453,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -11061,7 +11655,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -11263,7 +11857,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.graphics.drawable.Drawable.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -11337,7 +11931,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -11427,7 +12021,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.accessibility.AccessibilityEventSource" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.accessibility.AccessibilityEventSource-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
diff --git a/docs/html/reference/android/support/wearable/view/DismissOverlayView.html b/docs/html/reference/android/support/wearable/view/DismissOverlayView.html
index f146daf..ed4a66e 100644
--- a/docs/html/reference/android/support/wearable/view/DismissOverlayView.html
+++ b/docs/html/reference/android/support/wearable/view/DismissOverlayView.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -146,7 +151,7 @@
 
 </head>
 
-<body class="gc-documentation 
+<body class="gc-documentation
   develop reference" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
@@ -221,13 +226,13 @@
           </a>
 
         <ul class="dac-header-crumbs">
-          
+
           <li class="dac-header-crumbs-item"><span class="dac-header-crumbs-link current ">DismissOverlayView</a></li>
         </ul>
 
-        
-        
-        
+
+
+
   <div class="dac-header-search" id="search-container">
     <div class="dac-header-search-inner">
       <div class="dac-sprite dac-search dac-header-search-btn" id="search-btn"></div>
@@ -267,7 +272,7 @@
     </div>
   </div>
 
-        
+
 
         <a class="dac-header-console-btn" href="https://play.google.com/apps/publish/">
           <span class="dac-sprite dac-google-play"></span>
@@ -284,7 +289,7 @@
     </div>
   </div> <!--end header-wrapper -->
 
-  
+
   <!-- Navigation-->
   <nav class="dac-nav">
     <div class="dac-nav-dimmer" data-dac-toggle-nav></div>
@@ -370,7 +375,7 @@
           <li class="dac-nav-item google">
             <a class="dac-nav-link" href="../../../../../google/index.html">Google Services</a>
           </li>
-          
+
           <li class="dac-nav-item preview">
             <a class="dac-nav-link" href="../../../../../preview/index.html">Preview</a>
           </li>
@@ -407,7 +412,7 @@
     </ul>
   </nav>
   <!-- end navigation-->
-  
+
 
 
 
@@ -439,7 +444,7 @@
             <div id="packages-nav" class="scroll-pane">
 
               <ul>
-                
+
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/wearable/package-summary.html">android.support.wearable</a></li>
     <li class="api apilevel-">
@@ -465,10 +470,11 @@
 
 
             <ul>
-              
-              
+
+
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -481,9 +487,10 @@
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnScrollListener.html">WearableListView.OnScrollListener</a></li>
       </ul>
     </li>
-              
+
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -511,9 +518,9 @@
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.ViewHolder.html">WearableListView.ViewHolder</a></li>
       </ul>
     </li>
-              
-              
-              
+
+
+
             </ul><br/>
 
 
@@ -556,7 +563,7 @@
         });
     </script>
 
-     
+
 
 
 
@@ -566,74 +573,74 @@
 
 
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-   
-  
-  
-  
 
-  
-   
-  
-  
-   
-  
-  
-   
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 <div class="sum-details-links">
@@ -646,21 +653,21 @@
 
 
   <a href="#inhconstants">Inherited Constants</a>
-  
+
 
 
 
   &#124; <a href="#inhfields">Inherited Fields</a>
-  
+
 
 
   &#124; <a href="#pubctors">Ctors</a>
-  
+
 
 
 
   &#124; <a href="#pubmethods">Methods</a>
-  
+
 
 
 
@@ -670,9 +677,9 @@
 
 </div><!-- end sum-details-links -->
 <div class="api-level">
-  
-  
-  
+
+
+
 
 </div>
 </div><!-- end api-info-block -->
@@ -682,38 +689,38 @@
 
 <div id="jd-header">
     public
-     
-     
-    
+
+
+
     class
 <h1 itemprop="name">DismissOverlayView</h1>
 
 
 
-  
-  
-  
 
-  
-  
-  
 
-  
-  
-  
 
-  
+
+
+
+
+
+
+
+
+
+
     extends FrameLayout<br/>
-  
-  
-  
-
-  
-  
-  
 
 
-    
+
+
+
+
+
+
+
+
 
 
 </div><!-- end header -->
@@ -725,54 +732,54 @@
 
 
     <tr>
-         	
+
         <td colspan="5" class="jd-inheritance-class-cell">java.lang.Object</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="4" class="jd-inheritance-class-cell">android.view.View</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="3" class="jd-inheritance-class-cell">android.view.ViewGroup</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="2" class="jd-inheritance-class-cell">android.widget.FrameLayout</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="1" class="jd-inheritance-class-cell">android.support.wearable.view.DismissOverlayView</td>
     </tr>
-    
+
 
 </table>
 
@@ -853,7 +860,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.ViewGroup" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.ViewGroup-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup
 <div id="inherited-constants-android.view.ViewGroup">
@@ -862,129 +869,129 @@
   </div>
   <div id="inherited-constants-android.view.ViewGroup-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CLIP_TO_PADDING_MASK</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_AFTER_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_BEFORE_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_BLOCK_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_MODE_CLIP_BOUNDS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_MODE_OPTICAL_BOUNDS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_ALL_CACHES</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_ANIMATION_CACHE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_NO_CACHE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_SCROLLING_CACHE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
 </table>
   </div>
 </div>
@@ -997,7 +1004,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-constants-android.view.View">
@@ -1006,957 +1013,1065 @@
   </div>
   <div id="inherited-constants-android.view.View-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_ASSERTIVE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_NONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_POLITE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">DRAWING_CACHE_QUALITY_AUTO</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">DRAWING_CACHE_QUALITY_HIGH</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">DRAWING_CACHE_QUALITY_LOW</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FIND_VIEWS_WITH_CONTENT_DESCRIPTION</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FIND_VIEWS_WITH_TEXT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUSABLES_ALL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUSABLES_TOUCH_MODE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_BACKWARD</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_DOWN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_FORWARD</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_LEFT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_RIGHT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_UP</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">GONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">HAPTIC_FEEDBACK_ENABLED</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_AUTO</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_NO</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_YES</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">INVISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">KEEP_SCREEN_ON</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYER_TYPE_HARDWARE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYER_TYPE_NONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYER_TYPE_SOFTWARE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_HEIGHT_STATE_SHIFT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_SIZE_MASK</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_STATE_MASK</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_STATE_TOO_SMALL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">NO_ID</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">OVER_SCROLL_ALWAYS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">OVER_SCROLL_IF_CONTENT_SCROLLS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">OVER_SCROLL_NEVER</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCREEN_STATE_OFF</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCREEN_STATE_ON</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_INSIDE_INSET</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_INSIDE_OVERLAY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_OUTSIDE_INSET</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_OUTSIDE_OVERLAY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBAR_POSITION_DEFAULT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBAR_POSITION_LEFT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBAR_POSITION_RIGHT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_AXIS_HORIZONTAL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_AXIS_NONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_AXIS_VERTICAL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_BOTTOM</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_END</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_START</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_TOP</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SOUND_EFFECTS_ENABLED</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">STATUS_BAR_HIDDEN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">STATUS_BAR_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_FULLSCREEN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_HIDE_NAVIGATION</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_IMMERSIVE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_IMMERSIVE_STICKY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_STABLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LIGHT_STATUS_BAR</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_LAYOUT_FLAGS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_CENTER</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_GRAVITY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_INHERIT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_END</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_START</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_END</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_START</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_ANY_RTL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_LTR</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_RTL</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">VIEW_LOG_TAG</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">VISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
 </table>
   </div>
 </div>
@@ -1998,7 +2113,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-fields-android.view.View">
@@ -2007,9 +2122,9 @@
   </div>
   <div id="inherited-fields-android.view.View-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2018,14 +2133,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ALPHA</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2034,14 +2149,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">EMPTY_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2050,14 +2165,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2066,14 +2181,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2082,14 +2197,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2098,14 +2213,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2114,14 +2229,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2130,14 +2245,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2146,14 +2261,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2162,14 +2277,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2178,14 +2293,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2194,14 +2309,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2210,14 +2325,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2226,14 +2341,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2242,14 +2357,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2258,14 +2373,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2274,14 +2389,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2290,14 +2405,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2306,14 +2421,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2322,14 +2437,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2338,14 +2453,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2354,14 +2469,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2370,14 +2485,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2386,14 +2501,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2402,14 +2517,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2418,14 +2533,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2434,14 +2549,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2450,14 +2565,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2466,14 +2581,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2482,14 +2597,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2498,14 +2613,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ROTATION</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2514,14 +2629,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ROTATION_X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2530,14 +2645,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ROTATION_Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2546,14 +2661,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">SCALE_X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2562,14 +2677,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">SCALE_Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2578,14 +2693,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2594,14 +2709,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2610,14 +2725,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">TRANSLATION_X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2626,14 +2741,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">TRANSLATION_Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2642,14 +2757,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">TRANSLATION_Z</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2658,14 +2773,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2674,14 +2789,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2690,14 +2805,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2706,14 +2821,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">Z</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
 </table>
   </div>
 </div>
@@ -2742,51 +2857,51 @@
 
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             </nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/DismissOverlayView.html#DismissOverlayView(android.content.Context)">DismissOverlayView</a></span>(Context context)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             </nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/DismissOverlayView.html#DismissOverlayView(android.content.Context, android.util.AttributeSet)">DismissOverlayView</a></span>(Context context, AttributeSet attrs)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             </nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/DismissOverlayView.html#DismissOverlayView(android.content.Context, android.util.AttributeSet, int)">DismissOverlayView</a></span>(Context context, AttributeSet attrs, int defStyle)</nobr>
-        
+
   </td></tr>
 
 
@@ -2803,111 +2918,111 @@
 
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/DismissOverlayView.html#performClick()">performClick</a></span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/DismissOverlayView.html#setIntroText(int)">setIntroText</a></span>(int textResId)</nobr>
-        
+
         <div class="jd-descrdiv">
           Set the intro text.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/DismissOverlayView.html#setIntroText(java.lang.CharSequence)">setIntroText</a></span>(CharSequence str)</nobr>
-        
+
         <div class="jd-descrdiv">
           Set the intro text.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/DismissOverlayView.html#show()">show</a></span>()</nobr>
-        
+
         <div class="jd-descrdiv">
           Show the exit button.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/DismissOverlayView.html#showIntroIfNecessary()">showIntroIfNecessary</a></span>()</nobr>
-        
+
         <div class="jd-descrdiv">
           Displays the intro overlay over your app if necessary.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
@@ -2930,7 +3045,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.widget.FrameLayout" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.widget.FrameLayout-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2942,454 +3057,198 @@
   </div>
   <div id="inherited-methods-android.widget.FrameLayout-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">checkLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">draw</span>(Canvas arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">drawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">drawableStateChanged</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">gatherTransparentRegion</span>(Region arg0)</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateDefaultLayoutParams</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(AttributeSet arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getConsiderGoneChildrenWhenMeasuring</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            Drawable</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getForeground</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getForegroundGravity</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            ColorStateList</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getForegroundTintList</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            PorterDuff.Mode</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getForegroundTintMode</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasureAllChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">jumpDrawablesToCurrentState</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onInitializeAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onInitializeAccessibilityNodeInfo</span>(AccessibilityNodeInfo arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onLayout</span>(boolean arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onMeasure</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onSizeChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMeasureAllChildren</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setVisibility</span>(int arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">shouldDelayChildPressedState</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">verifyDrawable</span>(Drawable arg0)</nobr>
-        
   </td></tr>
 
 
@@ -3416,2598 +3275,2647 @@
   </div>
   <div id="inherited-methods-android.view.ViewGroup-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addChildrenForAccessibility</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addStatesFromChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addTouchables</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addViewInLayout</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addViewInLayout</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">attachLayoutAnimationParameters</span>(View arg0, ViewGroup.LayoutParams arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">attachViewToParent</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">bringChildToFront</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canAnimate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+
         <span class="sympad">checkLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childDrawableStateChanged</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childHasTransientStateChanged</span>(View arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">cleanupLayoutState</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearChildFocus</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearDisappearingChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">debug</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachAllViewsFromParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachViewFromParent</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachViewFromParent</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachViewsFromParent</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchApplyWindowInsets</span>(WindowInsets arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchConfigurationChanged</span>(Configuration arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDisplayHint</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDragEvent</span>(DragEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDraw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDrawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchFreezeSelfOnly</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericFocusedEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericPointerEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEventPreIme</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyShortcutEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetActivated</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetPressed</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetSelected</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSystemUiVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchThawSelfOnly</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTrackballEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchUnhandledMove</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchVisibilityChanged</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowFocusChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowSystemUiVisiblityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawChild</span>(Canvas arg0, View arg1, long arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawableStateChanged</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">endViewTransition</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewsWithText</span>(ArrayList&lt;View&gt; arg0, CharSequence arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusSearch</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusableViewAvailable</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">gatherTransparentRegion</span>(Region arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateDefaultLayoutParams</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(AttributeSet arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildAt</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildCount</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildDrawingOrder</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildMeasureSpec</span>(int arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildStaticTransformation</span>(View arg0, Transformation arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildVisibleRect</span>(View arg0, Rect arg1, Point arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipToPadding</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDescendantFocusability</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFocusedChild</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             LayoutAnimationController</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Animation.AnimationListener</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutAnimationListener</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             LayoutTransition</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutTransition</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNestedScrollAxes</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewOverlay</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOverlay</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPersistentDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTouchscreenBlocksFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocusable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasTransientState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">indexOfChild</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChild</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChildInParent</span>(int[] arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAlwaysDrawnWithCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAnimationCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isChildrenDrawingOrderEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isChildrenDrawnWithCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isMotionEventSplittingEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTransitionGroup</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">jumpDrawablesToCurrentState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">layout</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measureChild</span>(View arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measureChildWithMargins</span>(View arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measureChildren</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notifySubtreeAccessibilityStateChanged</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetDescendantRectToMyCoords</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetRectIntoDescendantCoords</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationEnd</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationStart</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAttachedToWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateDrawableState</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDetachedFromWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInterceptHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInterceptTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onLayout</span>(boolean arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedFling</span>(View arg0, float arg1, float arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreFling</span>(View arg0, float arg1, float arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPrePerformAccessibilityAction</span>(View arg0, int arg1, Bundle arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreScroll</span>(View arg0, int arg1, int arg2, int[] arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScroll</span>(View arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScrollAccepted</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRequestFocusInDescendants</span>(int arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRequestSendAccessibilityEvent</span>(View arg0, AccessibilityEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStartNestedScroll</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStopNestedScroll</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewAdded</span>(View arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewRemoved</span>(View arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">recomputeViewAttributes</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeAllViews</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeAllViewsInLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeDetachedView</span>(View arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeView</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViewAt</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViewInLayout</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViews</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViewsInLayout</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildFocus</span>(View arg0, View arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildRectangleOnScreen</span>(View arg0, Rect arg1, boolean arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestDisallowInterceptTouchEvent</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>(int arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestSendAccessibilityEvent</span>(View arg0, AccessibilityEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestTransparentRegion</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scheduleLayoutAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAddStatesFromChildren</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAlwaysDrawnWithCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAnimationCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setChildrenDrawingCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setChildrenDrawingOrderEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setChildrenDrawnWithCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipChildren</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipToPadding</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDescendantFocusability</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutAnimation</span>(LayoutAnimationController arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutAnimationListener</span>(Animation.AnimationListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutMode</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutTransition</span>(LayoutTransition arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMotionEventSplittingEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnHierarchyChangeListener</span>(ViewGroup.OnHierarchyChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPersistentDrawingCache</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setStaticTransformationsEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTouchscreenBlocksFocus</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTransitionGroup</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">shouldDelayChildPressedState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">showContextMenuForChild</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startLayoutAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startViewTransition</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">updateViewLayout</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -6022,7 +5930,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -6034,7718 +5942,8102 @@
   </div>
   <div id="inherited-methods-android.view.View-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addChildrenForAccessibility</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addOnAttachStateChangeListener</span>(View.OnAttachStateChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addOnLayoutChangeListener</span>(View.OnLayoutChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addTouchables</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewPropertyAnimator</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">animate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">announceForAccessibility</span>(CharSequence arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">awakenScrollBars</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">awakenScrollBars</span>(int arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">awakenScrollBars</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">bringToFront</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">buildDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">buildDrawingCache</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">buildLayer</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">callOnClick</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canScrollHorizontally</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canScrollVertically</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">cancelLongPress</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">cancelPendingInputEvents</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">checkInputConnectionProxy</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">combineMeasuredStates</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollExtent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollRange</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeScroll</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeSystemWindowInsets</span>(WindowInsets arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollExtent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollRange</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             AccessibilityNodeInfo</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">createAccessibilityNodeInfo</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">createContextMenu</span>(ContextMenu arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">destroyDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchApplyWindowInsets</span>(WindowInsets arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchConfigurationChanged</span>(Configuration arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDisplayHint</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDragEvent</span>(DragEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDraw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDrawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericFocusedEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericMotionEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericPointerEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEventPreIme</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyShortcutEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedFling</span>(float arg0, float arg1, boolean arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedPreFling</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedPrePerformAccessibilityAction</span>(int arg0, Bundle arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedPreScroll</span>(int arg0, int arg1, int[] arg2, int[] arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedScroll</span>(int arg0, int arg1, int arg2, int arg3, int[] arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchPopulateAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetActivated</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetPressed</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetSelected</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSystemUiVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTrackballEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchUnhandledMove</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchVisibilityChanged</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowFocusChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowSystemUiVisiblityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">draw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawableStateChanged</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewById</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewWithTag</span>(Object arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewsWithText</span>(ArrayList&lt;View&gt; arg0, CharSequence arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">fitSystemWindows</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusSearch</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">forceLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateViewId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityLiveRegion</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             AccessibilityNodeProvider</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityNodeProvider</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityTraversalAfter</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityTraversalBefore</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAlpha</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Animation</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             IBinder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getApplicationWindowToken</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Drawable</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBackground</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ColorStateList</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBackgroundTintList</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             PorterDuff.Mode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBackgroundTintMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBaseline</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBottom</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBottomFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBottomPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getCameraDistance</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Rect</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipBounds</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>(Rect arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipToOutline</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             CharSequence</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getContentDescription</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             Context</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getContext</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ContextMenu.ContextMenuInfo</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getContextMenuInfo</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDefaultSize</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Display</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDisplay</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawableState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Bitmap</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCache</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Bitmap</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCacheBackgroundColor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCacheQuality</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             long</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingTime</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getElevation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFilterTouchesWhenObscured</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFitsSystemWindows</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ArrayList&lt;View&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFocusables</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFocusedRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForeground</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundGravity</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintList</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintMode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getGlobalVisibleRect</span>(Rect arg0, Point arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getGlobalVisibleRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Handler</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHandler</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHitRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHorizontalFadingEdgeLength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHorizontalScrollbarHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getImportantForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getKeepScreenOn</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             KeyEvent.DispatcherState</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getKeyDispatcherState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLabelFor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayerType</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutParams</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLeft</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLeftFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLeftPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLocalVisibleRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLocationInWindow</span>(int[] arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLocationOnScreen</span>(int[] arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Matrix</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMatrix</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredHeightAndState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredWidthAndState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMinimumHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMinimumWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusDownId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusForwardId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusLeftId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusRightId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusUpId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View.OnFocusChangeListener</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOnFocusChangeListener</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewOutlineProvider</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOutlineProvider</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOverScrollMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewOverlay</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOverlay</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingBottom</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingEnd</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingLeft</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingRight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingStart</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingTop</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParentForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPivotX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPivotY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Resources</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getResources</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRightFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRightPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRootView</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootWindowInsets</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRotation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRotationX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRotationY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScaleX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScaleY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarDefaultDelayBeforeFade</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarFadeDuration</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarSize</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarStyle</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollIndicators</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSolidColor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             StateListAnimator</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getStateListAnimator</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSuggestedMinimumHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSuggestedMinimumWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSystemUiVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Object</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTag</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Object</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTag</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTop</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTopFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTopPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             TouchDelegate</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTouchDelegate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ArrayList&lt;View&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTouchables</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTransitionName</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTranslationX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTranslationY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTranslationZ</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVerticalFadingEdgeLength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVerticalScrollbarPosition</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVerticalScrollbarWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewTreeObserver</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getViewTreeObserver</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowAttachCount</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowId</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowSystemUiVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             IBinder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowToken</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowVisibleDisplayFrame</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getZ</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocusable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasNestedScrollingParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasOnClickListeners</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasOverlappingRendering</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasTransientState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasWindowFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">inflate</span>(Context arg0, int arg1, ViewGroup arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidate</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidate</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateOutline</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAccessibilityFocused</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isActivated</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAttachedToWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isClickable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isContextClickable</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isDirty</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isDrawingCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isDuplicateParentStateEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isFocusable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isFocusableInTouchMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isFocused</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHapticFeedbackEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHardwareAccelerated</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHorizontalFadingEdgeEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHorizontalScrollBarEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHovered</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isImportantForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isInEditMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isInLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isInTouchMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLaidOut</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutRequested</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLongClickable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isNestedScrollingEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isOpaque</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isPaddingOffsetRequired</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isPaddingRelative</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isPressed</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSaveEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSaveFromParentEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isScrollContainer</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isScrollbarFadingEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSelected</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isShown</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSoundEffectsEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextAlignmentResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isVerticalFadingEdgeEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isVerticalScrollBarEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">jumpDrawablesToCurrentState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">layout</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measure</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">mergeDrawableStates</span>(int[] arg0, int[] arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetLeftAndRight</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetTopAndBottom</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAnimationEnd</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAnimationStart</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onApplyWindowInsets</span>(WindowInsets arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAttachedToWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCancelPendingInputEvents</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCheckIsTextEditor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onConfigurationChanged</span>(Configuration arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateContextMenu</span>(ContextMenu arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateDrawableState</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             InputConnection</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateInputConnection</span>(EditorInfo arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDetachedFromWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDisplayHint</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDragEvent</span>(DragEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDraw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawForeground</span>(Canvas arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDrawScrollBars</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFilterTouchEventForSecurity</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFinishInflate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFinishTemporaryDetach</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFocusChanged</span>(boolean arg0, int arg1, Rect arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onGenericMotionEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onHoverChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInitializeAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInitializeAccessibilityNodeInfo</span>(AccessibilityNodeInfo arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyDown</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyLongPress</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyMultiple</span>(int arg0, int arg1, KeyEvent arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyPreIme</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyShortcut</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyUp</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onLayout</span>(boolean arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onMeasure</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onOverScrolled</span>(int arg0, int arg1, boolean arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onPopulateAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideVirtualStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRtlPropertiesChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Parcelable</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSaveInstanceState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onScreenStateChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onScrollChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSetAlpha</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSizeChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStartTemporaryDetach</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onTrackballEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onVisibilityChanged</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onWindowFocusChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onWindowSystemUiVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onWindowVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">overScrollBy</span>(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, boolean arg8)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performAccessibilityAction</span>(int arg0, Bundle arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performClick</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performContextClick</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performHapticFeedback</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performHapticFeedback</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performLongClick</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">playSoundEffect</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">post</span>(Runnable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postDelayed</span>(Runnable arg0, long arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidate</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateDelayed</span>(long arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateDelayed</span>(long arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateOnAnimation</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateOnAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postOnAnimation</span>(Runnable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postOnAnimationDelayed</span>(Runnable arg0, long arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">refreshDrawableState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeCallbacks</span>(Runnable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeOnAttachStateChangeListener</span>(View.OnAttachStateChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeOnLayoutChangeListener</span>(View.OnLayoutChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestApplyInsets</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFitSystemWindows</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>(int arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocusFromTouch</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestRectangleOnScreen</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestRectangleOnScreen</span>(Rect arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestUnbufferedDispatch</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">resolveSize</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">resolveSizeAndState</span>(int arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">restoreHierarchyState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">saveHierarchyState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scheduleDrawable</span>(Drawable arg0, Runnable arg1, long arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scrollBy</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scrollTo</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEvent</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEventUnchecked</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityDelegate</span>(View.AccessibilityDelegate arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityLiveRegion</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityTraversalAfter</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityTraversalBefore</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setActivated</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAlpha</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAnimation</span>(Animation arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackground</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundColor</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundResource</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundTintList</span>(ColorStateList arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBottom</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setCameraDistance</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClickable</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipBounds</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipToOutline</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setContentDescription</span>(CharSequence arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setContextClickable</span>(boolean arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheQuality</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDuplicateParentStateEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setElevation</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFadingEdgeLength</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFilterTouchesWhenObscured</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFitsSystemWindows</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFocusable</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFocusableInTouchMode</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHapticFeedbackEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHasTransientState</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHorizontalFadingEdgeEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHorizontalScrollBarEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHovered</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setImportantForAccessibility</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setKeepScreenOn</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLabelFor</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayerPaint</span>(Paint arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayerType</span>(int arg0, Paint arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutDirection</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLeft</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLongClickable</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMeasuredDimension</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMinimumHeight</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMinimumWidth</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNestedScrollingEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusDownId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusForwardId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusLeftId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusRightId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusUpId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnApplyWindowInsetsListener</span>(View.OnApplyWindowInsetsListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnClickListener</span>(View.OnClickListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnContextClickListener</span>(View.OnContextClickListener arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnCreateContextMenuListener</span>(View.OnCreateContextMenuListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnDragListener</span>(View.OnDragListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnFocusChangeListener</span>(View.OnFocusChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnGenericMotionListener</span>(View.OnGenericMotionListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnHoverListener</span>(View.OnHoverListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnKeyListener</span>(View.OnKeyListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnLongClickListener</span>(View.OnLongClickListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnScrollChangeListener</span>(View.OnScrollChangeListener arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnTouchListener</span>(View.OnTouchListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOutlineProvider</span>(ViewOutlineProvider arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOverScrollMode</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPadding</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPaddingRelative</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPivotX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPivotY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPressed</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRight</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRotation</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRotationX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRotationY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSaveEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSaveFromParentEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScaleX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScaleY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarDefaultDelayBeforeFade</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarFadeDuration</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarSize</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarStyle</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollContainer</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollX</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollY</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollbarFadingEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSelected</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSoundEffectsEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setStateListAnimator</span>(StateListAnimator arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSystemUiVisibility</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTag</span>(int arg0, Object arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTag</span>(Object arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTextAlignment</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTextDirection</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTop</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTouchDelegate</span>(TouchDelegate arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTransitionName</span>(String arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTranslationX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTranslationY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTranslationZ</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVerticalFadingEdgeEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVerticalScrollBarEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVerticalScrollbarPosition</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVisibility</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setWillNotCacheDrawing</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setWillNotDraw</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setZ</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">showContextMenu</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionMode</span>(ActionMode.Callback arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startAnimation</span>(Animation arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startDrag</span>(ClipData arg0, View.DragShadowBuilder arg1, Object arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startNestedScroll</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">stopNestedScroll</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">toString</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">unscheduleDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">unscheduleDrawable</span>(Drawable arg0, Runnable arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">verifyDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">willNotCacheDrawing</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">willNotDraw</span>()</nobr>
-        
+
   </td></tr>
 
 
@@ -13760,7 +14052,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -13772,182 +14064,182 @@
   </div>
   <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Object</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clone</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">equals</span>(Object arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">finalize</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             Class&lt;?&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClass</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hashCode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notify</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notifyAll</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">toString</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>(long arg0)</nobr>
-        
+
   </td></tr>
 
 
@@ -13962,7 +14254,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewParent" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewParent-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -13974,662 +14266,678 @@
   </div>
   <div id="inherited-methods-android.view.ViewParent-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">bringChildToFront</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childDrawableStateChanged</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childHasTransientStateChanged</span>(View arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearChildFocus</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">createContextMenu</span>(ContextMenu arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusSearch</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusableViewAvailable</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildVisibleRect</span>(View arg0, Rect arg1, Point arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParentForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChild</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChildInParent</span>(int[] arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutRequested</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextAlignmentResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notifySubtreeAccessibilityStateChanged</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedFling</span>(View arg0, float arg1, float arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreFling</span>(View arg0, float arg1, float arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPrePerformAccessibilityAction</span>(View arg0, int arg1, Bundle arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreScroll</span>(View arg0, int arg1, int arg2, int[] arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScroll</span>(View arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScrollAccepted</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStartNestedScroll</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStopNestedScroll</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">recomputeViewAttributes</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildFocus</span>(View arg0, View arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildRectangleOnScreen</span>(View arg0, Rect arg1, boolean arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestDisallowInterceptTouchEvent</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFitSystemWindows</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestSendAccessibilityEvent</span>(View arg0, AccessibilityEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestTransparentRegion</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">showContextMenuForChild</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -14644,7 +14952,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewManager" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewManager-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14656,54 +14964,54 @@
   </div>
   <div id="inherited-methods-android.view.ViewManager-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeView</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">updateViewLayout</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -14718,7 +15026,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.graphics.drawable.Drawable.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14730,54 +15038,54 @@
   </div>
   <div id="inherited-methods-android.graphics.drawable.Drawable.Callback-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scheduleDrawable</span>(Drawable arg0, Runnable arg1, long arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">unscheduleDrawable</span>(Drawable arg0, Runnable arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -14792,7 +15100,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14804,70 +15112,70 @@
   </div>
   <div id="inherited-methods-android.view.KeyEvent.Callback-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyDown</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyLongPress</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyMultiple</span>(int arg0, int arg1, KeyEvent arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyUp</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -14882,7 +15190,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.accessibility.AccessibilityEventSource" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.accessibility.AccessibilityEventSource-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14894,38 +15202,38 @@
   </div>
   <div id="inherited-methods-android.view.accessibility.AccessibilityEventSource-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEvent</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEventUnchecked</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
@@ -14971,30 +15279,30 @@
 
 <A NAME="DismissOverlayView(android.content.Context)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
-        
+        public
+
+
+
+
+
       </span>
       <span class="sympad">DismissOverlayView</span>
       <span class="normal">(Context context)</span>
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15003,30 +15311,30 @@
 
 <A NAME="DismissOverlayView(android.content.Context, android.util.AttributeSet)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
-        
+        public
+
+
+
+
+
       </span>
       <span class="sympad">DismissOverlayView</span>
       <span class="normal">(Context context, AttributeSet attrs)</span>
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15035,30 +15343,30 @@
 
 <A NAME="DismissOverlayView(android.content.Context, android.util.AttributeSet, int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
-        
+        public
+
+
+
+
+
       </span>
       <span class="sympad">DismissOverlayView</span>
       <span class="normal">(Context context, AttributeSet attrs, int defStyle)</span>
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15082,14 +15390,14 @@
 
 <A NAME="performClick()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         boolean
       </span>
       <span class="sympad">performClick</span>
@@ -15097,15 +15405,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15114,14 +15422,14 @@
 
 <A NAME="setIntroText(int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">setIntroText</span>
@@ -15129,15 +15437,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Set the intro text.
 
  The intro text is the text displayed when the app is run for the first time, as an overlay
@@ -15150,14 +15458,14 @@
 
 <A NAME="setIntroText(java.lang.CharSequence)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">setIntroText</span>
@@ -15165,15 +15473,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Set the intro text.
 
  The intro text is the text displayed when the app is run for the first time, as an overlay
@@ -15186,14 +15494,14 @@
 
 <A NAME="show()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">show</span>
@@ -15201,15 +15509,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Show the exit button.
 
  This should be called from a long-press listener.
@@ -15221,14 +15529,14 @@
 
 <A NAME="showIntroIfNecessary()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">showIntroIfNecessary</span>
@@ -15236,15 +15544,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Displays the intro overlay over your app if necessary.
 
  This does nothing if no intro text has been set, or if this is not the first time
@@ -15288,22 +15596,22 @@
 
     <hr class="dac-footer-separator"/>
 
-    
+
       <p class="dac-footer-copyright">
-        
+
   Except as noted, this content is licensed under <a
   href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
   For details and restrictions, see the <a href="../../../../../license.html">
   Content License</a>.
       </p>
       <p class="dac-footer-build">
-        
-    Android Wearable Support&nbsp;r &mdash; 
+
+    Android Wearable Support&nbsp;r &mdash;
 <script src="../../../../../timestamp.js" type="text/javascript"></script>
 <script>document.write(BUILD_TIMESTAMP)</script>
 
       </p>
-    
+
 
     <p class="dac-footer-links">
       <a href="/about/index.html">About Android</a>
@@ -15445,8 +15753,8 @@
 
 </div><!-- end doc-content -->
 
-</div> <!-- end .cols --> 
-</div> <!-- end body-content --> 
+</div> <!-- end .cols -->
+</div> <!-- end body-content -->
 
 
 
diff --git a/docs/html/reference/android/support/wearable/view/DotsPageIndicator.html b/docs/html/reference/android/support/wearable/view/DotsPageIndicator.html
index 634cf95..58aeed8 100644
--- a/docs/html/reference/android/support/wearable/view/DotsPageIndicator.html
+++ b/docs/html/reference/android/support/wearable/view/DotsPageIndicator.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -808,7 +815,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-constants-android.view.View">
@@ -1434,6 +1441,78 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_BOTTOM</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_END</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_START</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_TOP</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SOUND_EFFECTS_ENABLED</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1554,7 +1633,7 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
-        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LIGHT_STATUS_BAR</td>
         <td class="jd-descrcol" width="100%">
           
           
@@ -1566,6 +1645,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1576,7 +1667,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_LAYOUT_FLAGS</td>
         <td class="jd-descrcol" width="100%">
@@ -1588,7 +1679,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_CENTER</td>
         <td class="jd-descrcol" width="100%">
@@ -1600,7 +1691,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_GRAVITY</td>
         <td class="jd-descrcol" width="100%">
@@ -1612,7 +1703,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_INHERIT</td>
         <td class="jd-descrcol" width="100%">
@@ -1624,7 +1715,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1636,7 +1727,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1648,7 +1739,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1660,7 +1751,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1672,7 +1763,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_ANY_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -1684,7 +1775,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG</td>
         <td class="jd-descrcol" width="100%">
@@ -1696,8 +1787,32 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_LTR</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_RTL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1708,7 +1823,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
@@ -1720,7 +1835,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
@@ -1732,7 +1847,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -1744,7 +1859,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">VIEW_LOG_TAG</td>
         <td class="jd-descrcol" width="100%">
@@ -1756,7 +1871,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">VISIBLE</td>
         <td class="jd-descrcol" width="100%">
@@ -1805,7 +1920,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-fields-android.view.View">
@@ -3456,7 +3571,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -4394,7 +4509,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
         
   </td></tr>
 
@@ -4410,13 +4525,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4432,7 +4563,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4448,7 +4579,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4464,7 +4595,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4480,7 +4611,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4496,7 +4627,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4512,7 +4643,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4528,7 +4659,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4544,7 +4675,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4560,7 +4691,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4576,7 +4707,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4592,7 +4723,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4608,7 +4739,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4624,7 +4755,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4640,7 +4771,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4656,7 +4787,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4672,7 +4803,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4688,7 +4819,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4704,7 +4835,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4720,7 +4851,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4736,7 +4867,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4752,7 +4883,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4768,6 +4899,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -5028,6 +5175,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -5040,7 +5203,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5056,7 +5219,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5072,7 +5235,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5088,7 +5251,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5104,7 +5267,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5120,7 +5283,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5136,7 +5299,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5152,7 +5315,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5168,7 +5331,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5184,7 +5347,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5200,7 +5363,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5216,7 +5379,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5232,7 +5395,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5248,7 +5411,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5264,7 +5427,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5280,7 +5443,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5296,7 +5459,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5312,6 +5475,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForeground</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -5319,6 +5498,54 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundGravity</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintList</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -5328,7 +5555,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5344,7 +5571,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5360,7 +5587,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5376,7 +5603,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5392,7 +5619,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5408,7 +5635,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5424,7 +5651,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5440,7 +5667,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5456,7 +5683,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5472,7 +5699,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5488,7 +5715,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5504,7 +5731,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5520,7 +5747,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5536,7 +5763,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5552,7 +5779,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5568,7 +5795,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5584,7 +5811,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5600,7 +5827,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5616,7 +5843,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5632,7 +5859,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5648,7 +5875,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5664,7 +5891,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5680,7 +5907,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5696,7 +5923,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5712,7 +5939,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5728,7 +5955,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5744,7 +5971,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5760,7 +5987,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5776,7 +6003,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5792,7 +6019,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5808,7 +6035,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5824,7 +6051,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5840,7 +6067,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5856,7 +6083,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5872,7 +6099,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5888,7 +6115,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5904,7 +6131,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5920,7 +6147,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5936,7 +6163,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5952,7 +6179,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5968,7 +6195,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5984,7 +6211,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6000,7 +6227,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6016,7 +6243,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6032,7 +6259,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6048,7 +6275,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6064,7 +6291,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6080,7 +6307,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6096,7 +6323,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6112,7 +6339,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6128,7 +6355,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6144,7 +6371,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6160,6 +6387,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootWindowInsets</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -6308,6 +6551,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollIndicators</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -6320,7 +6579,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6336,7 +6595,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6352,7 +6611,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6368,7 +6627,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6384,7 +6643,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6400,7 +6659,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6416,7 +6675,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6432,7 +6691,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6448,7 +6707,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6464,7 +6723,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6480,7 +6739,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6496,7 +6755,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6512,7 +6771,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6528,7 +6787,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6544,7 +6803,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6560,7 +6819,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6576,7 +6835,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6592,7 +6851,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6608,7 +6867,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6624,7 +6883,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6640,7 +6899,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6656,7 +6915,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6672,7 +6931,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6688,7 +6947,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6704,7 +6963,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6720,7 +6979,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6736,7 +6995,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6752,7 +7011,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6768,7 +7027,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6784,7 +7043,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6800,7 +7059,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6816,7 +7075,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6832,7 +7091,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6848,7 +7107,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6864,7 +7123,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6880,7 +7139,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6896,7 +7155,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6912,7 +7171,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6928,7 +7187,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6944,7 +7203,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6960,7 +7219,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6976,7 +7235,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -6992,7 +7251,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7008,7 +7267,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7024,7 +7283,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7040,7 +7299,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7056,7 +7315,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7072,7 +7331,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7088,7 +7347,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7104,7 +7363,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7120,7 +7379,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7136,6 +7395,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isContextClickable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -8036,6 +8311,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawForeground</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -8048,7 +8339,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8064,7 +8355,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8080,7 +8371,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8096,7 +8387,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8112,7 +8403,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8128,7 +8419,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8144,7 +8435,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8160,7 +8451,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8176,7 +8467,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8192,7 +8483,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8208,7 +8499,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8224,7 +8515,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8240,7 +8531,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8256,7 +8547,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8272,7 +8563,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8288,7 +8579,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8304,7 +8595,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8320,7 +8611,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8336,7 +8627,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8352,6 +8643,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -8362,13 +8669,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideVirtualStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8384,7 +8707,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8400,7 +8723,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8416,7 +8739,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8432,7 +8755,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8448,7 +8771,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8464,7 +8787,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8480,7 +8803,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8496,7 +8819,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8512,7 +8835,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8528,7 +8851,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8544,7 +8867,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8560,7 +8883,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8576,7 +8899,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8592,7 +8915,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8608,7 +8931,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8624,6 +8947,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performContextClick</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -9530,7 +9869,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        <span class="sympad">setContextClickable</span>(boolean arg0)</nobr>
         
   </td></tr>
 
@@ -9546,13 +9885,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9568,7 +9923,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9584,7 +9939,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9600,7 +9955,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9616,7 +9971,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9632,7 +9987,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9648,7 +10003,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9664,7 +10019,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9680,7 +10035,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9696,6 +10051,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -9706,13 +10077,61 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHapticFeedbackEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9728,7 +10147,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9744,7 +10163,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9760,7 +10179,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9776,7 +10195,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9792,7 +10211,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9808,7 +10227,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9824,7 +10243,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9840,7 +10259,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9856,7 +10275,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9872,7 +10291,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9888,7 +10307,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9904,7 +10323,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9920,7 +10339,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9936,7 +10355,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9952,7 +10371,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9968,7 +10387,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9984,7 +10403,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10000,7 +10419,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10016,7 +10435,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10032,7 +10451,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10048,7 +10467,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10064,7 +10483,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10080,7 +10499,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10096,7 +10515,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10112,6 +10531,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnContextClickListener</span>(View.OnContextClickListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -10234,7 +10669,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        <span class="sympad">setOnScrollChangeListener</span>(View.OnScrollChangeListener arg0)</nobr>
         
   </td></tr>
 
@@ -10250,13 +10685,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnTouchListener</span>(View.OnTouchListener arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10272,7 +10723,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10288,7 +10739,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10304,7 +10755,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10320,7 +10771,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10336,7 +10787,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10352,7 +10803,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10368,7 +10819,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10384,7 +10835,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10400,7 +10851,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10416,7 +10867,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10432,7 +10883,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10448,7 +10899,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10464,7 +10915,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10480,7 +10931,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10496,7 +10947,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10512,7 +10963,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10528,7 +10979,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10544,7 +10995,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10560,7 +11011,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10576,6 +11027,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -10586,13 +11053,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollX</span>(int arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10608,7 +11091,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10624,7 +11107,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10640,7 +11123,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10656,7 +11139,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10672,7 +11155,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10688,7 +11171,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10704,7 +11187,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10720,7 +11203,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10736,7 +11219,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10752,7 +11235,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10768,7 +11251,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10784,7 +11267,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10800,7 +11283,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10816,7 +11299,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10832,7 +11315,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10848,7 +11331,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10864,7 +11347,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10880,7 +11363,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10896,7 +11379,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10912,7 +11395,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10928,7 +11411,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10944,7 +11427,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10960,7 +11443,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10976,7 +11459,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10992,7 +11475,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11008,6 +11491,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -11194,7 +11693,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -11396,7 +11895,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.graphics.drawable.Drawable.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -11470,7 +11969,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -11560,7 +12059,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.accessibility.AccessibilityEventSource" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.accessibility.AccessibilityEventSource-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -11618,7 +12117,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.wearable.view.GridViewPager.OnPageChangeListener" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.wearable.view.GridViewPager.OnPageChangeListener-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -11714,7 +12213,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.wearable.view.GridViewPager.OnAdapterChangeListener" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.wearable.view.GridViewPager.OnAdapterChangeListener-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
diff --git a/docs/html/reference/android/support/wearable/view/FragmentGridPagerAdapter.html b/docs/html/reference/android/support/wearable/view/FragmentGridPagerAdapter.html
index ed7fecd..a8a4781 100644
--- a/docs/html/reference/android/support/wearable/view/FragmentGridPagerAdapter.html
+++ b/docs/html/reference/android/support/wearable/view/FragmentGridPagerAdapter.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -768,7 +775,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.support.wearable.view.GridPagerAdapter" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.support.wearable.view.GridPagerAdapter-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 <a href="../../../../../reference/android/support/wearable/view/GridPagerAdapter.html">android.support.wearable.view.GridPagerAdapter</a>
 <div id="inherited-constants-android.support.wearable.view.GridPagerAdapter">
@@ -831,7 +838,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.support.wearable.view.GridPagerAdapter" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.support.wearable.view.GridPagerAdapter-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 <a href="../../../../../reference/android/support/wearable/view/GridPagerAdapter.html">android.support.wearable.view.GridPagerAdapter</a>
 <div id="inherited-fields-android.support.wearable.view.GridPagerAdapter">
@@ -1224,7 +1231,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.wearable.view.GridPagerAdapter" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.wearable.view.GridPagerAdapter-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1738,7 +1745,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html b/docs/html/reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html
index 1e066c1..175073b 100644
--- a/docs/html/reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html
+++ b/docs/html/reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="selected api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
diff --git a/docs/html/reference/android/support/wearable/view/GridPageOptions.html b/docs/html/reference/android/support/wearable/view/GridPageOptions.html
index 8c22582..66db3e5 100644
--- a/docs/html/reference/android/support/wearable/view/GridPageOptions.html
+++ b/docs/html/reference/android/support/wearable/view/GridPageOptions.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="selected api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
diff --git a/docs/html/reference/android/support/wearable/view/GridPagerAdapter.html b/docs/html/reference/android/support/wearable/view/GridPagerAdapter.html
index b157c39..d40ff0b 100644
--- a/docs/html/reference/android/support/wearable/view/GridPagerAdapter.html
+++ b/docs/html/reference/android/support/wearable/view/GridPagerAdapter.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -676,7 +683,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-direct" class="jd-expando-trigger closed"
           ><img id="subclasses-direct-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Direct Subclasses
 
   <div id="subclasses-direct">
@@ -1419,7 +1426,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/view/GridViewPager.LayoutParams.html b/docs/html/reference/android/support/wearable/view/GridViewPager.LayoutParams.html
index c4d63e22..9702ae8 100644
--- a/docs/html/reference/android/support/wearable/view/GridViewPager.LayoutParams.html
+++ b/docs/html/reference/android/support/wearable/view/GridViewPager.LayoutParams.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -783,7 +790,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.ViewGroup.LayoutParams" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.ViewGroup.LayoutParams-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup.LayoutParams
 <div id="inherited-constants-android.view.ViewGroup.LayoutParams">
@@ -900,7 +907,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.ViewGroup.MarginLayoutParams" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.ViewGroup.MarginLayoutParams-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup.MarginLayoutParams
 <div id="inherited-fields-android.view.ViewGroup.MarginLayoutParams">
@@ -988,7 +995,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.ViewGroup.LayoutParams" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.ViewGroup.LayoutParams-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup.LayoutParams
 <div id="inherited-fields-android.view.ViewGroup.LayoutParams">
@@ -1121,7 +1128,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewGroup.MarginLayoutParams" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewGroup.MarginLayoutParams-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1291,7 +1298,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewGroup.LayoutParams" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewGroup.LayoutParams-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1349,7 +1356,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/view/GridViewPager.OnAdapterChangeListener.html b/docs/html/reference/android/support/wearable/view/GridViewPager.OnAdapterChangeListener.html
index fcd6a3d..a79e1ee 100644
--- a/docs/html/reference/android/support/wearable/view/GridViewPager.OnAdapterChangeListener.html
+++ b/docs/html/reference/android/support/wearable/view/GridViewPager.OnAdapterChangeListener.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -643,7 +650,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
diff --git a/docs/html/reference/android/support/wearable/view/GridViewPager.OnPageChangeListener.html b/docs/html/reference/android/support/wearable/view/GridViewPager.OnPageChangeListener.html
index 072f6c5..671da66 100644
--- a/docs/html/reference/android/support/wearable/view/GridViewPager.OnPageChangeListener.html
+++ b/docs/html/reference/android/support/wearable/view/GridViewPager.OnPageChangeListener.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -643,7 +650,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
           ><img id="subclasses-indirect-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
 
   <div id="subclasses-indirect">
diff --git a/docs/html/reference/android/support/wearable/view/GridViewPager.html b/docs/html/reference/android/support/wearable/view/GridViewPager.html
index 3e2179d..027892b 100644
--- a/docs/html/reference/android/support/wearable/view/GridViewPager.html
+++ b/docs/html/reference/android/support/wearable/view/GridViewPager.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -943,7 +950,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.ViewGroup" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.ViewGroup-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup
 <div id="inherited-constants-android.view.ViewGroup">
@@ -1087,7 +1094,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-constants-android.view.View">
@@ -1713,6 +1720,78 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_BOTTOM</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_END</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_START</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_TOP</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SOUND_EFFECTS_ENABLED</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1833,7 +1912,7 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
-        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LIGHT_STATUS_BAR</td>
         <td class="jd-descrcol" width="100%">
           
           
@@ -1845,6 +1924,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1855,7 +1946,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_LAYOUT_FLAGS</td>
         <td class="jd-descrcol" width="100%">
@@ -1867,7 +1958,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_CENTER</td>
         <td class="jd-descrcol" width="100%">
@@ -1879,7 +1970,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_GRAVITY</td>
         <td class="jd-descrcol" width="100%">
@@ -1891,7 +1982,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_INHERIT</td>
         <td class="jd-descrcol" width="100%">
@@ -1903,7 +1994,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1915,7 +2006,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1927,7 +2018,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1939,7 +2030,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1951,7 +2042,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_ANY_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -1963,7 +2054,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG</td>
         <td class="jd-descrcol" width="100%">
@@ -1975,8 +2066,32 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_LTR</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_RTL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1987,7 +2102,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
@@ -1999,7 +2114,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
@@ -2011,7 +2126,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -2023,7 +2138,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">VIEW_LOG_TAG</td>
         <td class="jd-descrcol" width="100%">
@@ -2035,7 +2150,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">VISIBLE</td>
         <td class="jd-descrcol" width="100%">
@@ -2086,7 +2201,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-fields-android.view.View">
@@ -3608,7 +3723,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewGroup" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewGroup-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -4274,7 +4389,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
         
   </td></tr>
 
@@ -4290,13 +4405,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4312,7 +4443,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4328,7 +4459,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4344,7 +4475,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4360,7 +4491,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4376,7 +4507,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4392,7 +4523,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4408,7 +4539,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4424,7 +4555,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4440,7 +4571,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4456,7 +4587,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4472,7 +4603,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4488,7 +4619,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4504,7 +4635,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4520,7 +4651,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4536,7 +4667,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4552,7 +4683,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4568,7 +4699,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4584,7 +4715,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4600,7 +4731,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4616,7 +4747,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4632,7 +4763,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4648,7 +4779,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4664,6 +4795,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -5282,38 +5429,6 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationEnd</span>()</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationStart</span>()</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAttachedToWindow</span>()</nobr>
         
   </td></tr>
@@ -5570,6 +5685,38 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewAdded</span>(View arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewRemoved</span>(View arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">recomputeViewAttributes</span>(View arg0)</nobr>
         
   </td></tr>
@@ -6175,10 +6322,10 @@
             
             
             
-            void</nobr>
+            ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">startLayoutAnimation</span>()</nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
         
   </td></tr>
 
@@ -6194,7 +6341,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">startViewTransition</span>(View arg0)</nobr>
+        <span class="sympad">startLayoutAnimation</span>()</nobr>
         
   </td></tr>
 
@@ -6210,6 +6357,22 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startViewTransition</span>(View arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">updateViewLayout</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
         
   </td></tr>
@@ -6226,7 +6389,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -7164,7 +7327,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
         
   </td></tr>
 
@@ -7180,13 +7343,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7202,7 +7381,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7218,7 +7397,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7234,7 +7413,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7250,7 +7429,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7266,7 +7445,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7282,7 +7461,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7298,7 +7477,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7314,7 +7493,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7330,7 +7509,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7346,7 +7525,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7362,7 +7541,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7378,7 +7557,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7394,7 +7573,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7410,7 +7589,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7426,7 +7605,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7442,7 +7621,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7458,7 +7637,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7474,7 +7653,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7490,7 +7669,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7506,7 +7685,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7522,7 +7701,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7538,6 +7717,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -7798,6 +7993,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -7810,7 +8021,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7826,7 +8037,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7842,7 +8053,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7858,7 +8069,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7874,7 +8085,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7890,7 +8101,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7906,7 +8117,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7922,7 +8133,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7938,7 +8149,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7954,7 +8165,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7970,7 +8181,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7986,7 +8197,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8002,7 +8213,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8018,7 +8229,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8034,7 +8245,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8050,7 +8261,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8066,7 +8277,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8082,6 +8293,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForeground</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -8089,6 +8316,54 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundGravity</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintList</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -8098,7 +8373,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8114,7 +8389,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8130,7 +8405,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8146,7 +8421,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8162,7 +8437,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8178,7 +8453,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8194,7 +8469,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8210,7 +8485,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8226,7 +8501,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8242,7 +8517,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8258,7 +8533,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8274,7 +8549,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8290,7 +8565,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8306,7 +8581,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8322,7 +8597,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8338,7 +8613,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8354,7 +8629,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8370,7 +8645,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8386,7 +8661,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8402,7 +8677,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8418,7 +8693,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8434,7 +8709,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8450,7 +8725,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8466,7 +8741,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8482,7 +8757,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8498,7 +8773,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8514,7 +8789,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8530,7 +8805,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8546,7 +8821,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8562,7 +8837,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8578,7 +8853,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8594,7 +8869,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8610,7 +8885,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8626,7 +8901,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8642,7 +8917,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8658,7 +8933,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8674,7 +8949,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8690,7 +8965,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8706,7 +8981,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8722,7 +8997,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8738,7 +9013,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8754,7 +9029,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8770,7 +9045,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8786,7 +9061,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8802,7 +9077,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8818,7 +9093,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8834,7 +9109,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8850,7 +9125,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8866,7 +9141,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8882,7 +9157,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8898,7 +9173,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8914,7 +9189,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8930,6 +9205,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootWindowInsets</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -9078,6 +9369,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollIndicators</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -9090,7 +9397,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9106,7 +9413,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9122,7 +9429,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9138,7 +9445,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9154,7 +9461,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9170,7 +9477,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9186,7 +9493,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9202,7 +9509,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9218,7 +9525,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9234,7 +9541,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9250,7 +9557,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9266,7 +9573,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9282,7 +9589,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9298,7 +9605,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9314,7 +9621,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9330,7 +9637,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9346,7 +9653,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9362,7 +9669,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9378,7 +9685,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9394,7 +9701,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9410,7 +9717,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9426,7 +9733,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9442,7 +9749,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9458,7 +9765,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9474,7 +9781,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9490,7 +9797,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9506,7 +9813,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9522,7 +9829,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9538,7 +9845,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9554,7 +9861,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9570,7 +9877,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9586,7 +9893,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9602,7 +9909,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9618,7 +9925,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9634,7 +9941,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9650,7 +9957,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9666,7 +9973,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9682,7 +9989,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9698,7 +10005,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9714,7 +10021,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9730,7 +10037,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9746,7 +10053,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9762,7 +10069,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9778,7 +10085,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9794,7 +10101,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9810,7 +10117,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9826,7 +10133,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9842,7 +10149,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9858,7 +10165,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9874,7 +10181,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9890,7 +10197,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9906,6 +10213,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isContextClickable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -10806,6 +11129,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawForeground</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -10818,7 +11157,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10834,7 +11173,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10850,7 +11189,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10866,7 +11205,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10882,7 +11221,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10898,7 +11237,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10914,7 +11253,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10930,7 +11269,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10946,7 +11285,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10962,7 +11301,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10978,7 +11317,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10994,7 +11333,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11010,7 +11349,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11026,7 +11365,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11042,7 +11381,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11058,7 +11397,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11074,7 +11413,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11090,7 +11429,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11106,7 +11445,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11122,6 +11461,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -11132,13 +11487,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideVirtualStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11154,7 +11525,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11170,7 +11541,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11186,7 +11557,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11202,7 +11573,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11218,7 +11589,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11234,7 +11605,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11250,7 +11621,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11266,7 +11637,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11282,7 +11653,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11298,7 +11669,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11314,7 +11685,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11330,7 +11701,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11346,7 +11717,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11362,7 +11733,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11378,7 +11749,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11394,6 +11765,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performContextClick</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -12300,7 +12687,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        <span class="sympad">setContextClickable</span>(boolean arg0)</nobr>
         
   </td></tr>
 
@@ -12316,13 +12703,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12338,7 +12741,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12354,7 +12757,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12370,7 +12773,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12386,7 +12789,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12402,7 +12805,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12418,7 +12821,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12434,7 +12837,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12450,7 +12853,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12466,6 +12869,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -12476,13 +12895,61 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHapticFeedbackEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12498,7 +12965,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12514,7 +12981,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12530,7 +12997,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12546,7 +13013,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12562,7 +13029,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12578,7 +13045,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12594,7 +13061,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12610,7 +13077,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12626,7 +13093,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12642,7 +13109,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12658,7 +13125,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12674,7 +13141,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12690,7 +13157,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12706,7 +13173,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12722,7 +13189,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12738,7 +13205,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12754,7 +13221,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12770,7 +13237,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12786,7 +13253,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12802,7 +13269,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12818,7 +13285,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12834,7 +13301,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12850,7 +13317,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12866,7 +13333,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12882,6 +13349,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnContextClickListener</span>(View.OnContextClickListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -13004,7 +13487,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        <span class="sympad">setOnScrollChangeListener</span>(View.OnScrollChangeListener arg0)</nobr>
         
   </td></tr>
 
@@ -13020,13 +13503,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnTouchListener</span>(View.OnTouchListener arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13042,7 +13541,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13058,7 +13557,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13074,7 +13573,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13090,7 +13589,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13106,7 +13605,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13122,7 +13621,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13138,7 +13637,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13154,7 +13653,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13170,7 +13669,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13186,7 +13685,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13202,7 +13701,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13218,7 +13717,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13234,7 +13733,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13250,7 +13749,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13266,7 +13765,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13282,7 +13781,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13298,7 +13797,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13314,7 +13813,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13330,7 +13829,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13346,6 +13845,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -13356,13 +13871,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollX</span>(int arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13378,7 +13909,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13394,7 +13925,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13410,7 +13941,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13426,7 +13957,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13442,7 +13973,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13458,7 +13989,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13474,7 +14005,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13490,7 +14021,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13506,7 +14037,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13522,7 +14053,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13538,7 +14069,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13554,7 +14085,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13570,7 +14101,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13586,7 +14117,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13602,7 +14133,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13618,7 +14149,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13634,7 +14165,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13650,7 +14181,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13666,7 +14197,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13682,7 +14213,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13698,7 +14229,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13714,7 +14245,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13730,7 +14261,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13746,7 +14277,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13762,7 +14293,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13778,6 +14309,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -13964,7 +14511,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -14166,7 +14713,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewParent" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewParent-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14832,6 +15379,22 @@
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1)</nobr>
         
   </td></tr>
@@ -14848,7 +15411,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewManager" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewManager-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14922,7 +15485,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.graphics.drawable.Drawable.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14996,7 +15559,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -15086,7 +15649,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.accessibility.AccessibilityEventSource" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.accessibility.AccessibilityEventSource-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
diff --git a/docs/html/reference/android/support/wearable/view/ProgressSpinner.html b/docs/html/reference/android/support/wearable/view/ProgressSpinner.html
new file mode 100644
index 0000000..584c60e
--- /dev/null
+++ b/docs/html/reference/android/support/wearable/view/ProgressSpinner.html
@@ -0,0 +1,12916 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta content="IE=edge" http-equiv="X-UA-Compatible">
+
+<link rel="shortcut icon" type="image/x-icon" href="../../../../../favicon.ico" />
+<title>ProgressSpinner | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="http://fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+
+<link href="../../../../../assets/css/default.css?v=7" rel="stylesheet" type="text/css">
+
+
+<!-- FULLSCREEN STYLESHEET -->
+<link href="../../../../../assets/css/fullscreen.css" rel="stylesheet" class="fullscreen"
+type="text/css">
+
+
+<!-- JAVASCRIPT -->
+<script src="http://www.google.com/jsapi" type="text/javascript"></script>
+<script src="../../../../../assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "../../../../../";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation 
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div class="dac-header" id="header">
+
+
+
+
+      <div class="dac-header-inner">
+        <a class="dac-nav-toggle" data-dac-toggle-nav href="javascript:;" title="Open navigation">
+          <span class="dac-nav-hamburger">
+            <span class="dac-nav-hamburger-top"></span>
+            <span class="dac-nav-hamburger-mid"></span>
+            <span class="dac-nav-hamburger-bot"></span>
+          </span>
+        </a>
+        <a class="dac-header-logo" href="../../../../../index.html">
+          <img class="dac-header-logo-image" src="../../../../../assets/images/android_logo.png"
+              srcset="../../../../../assets/images/android_logo@2x.png 2x"
+              width="32" height="36" alt="Android" /> Developers
+          </a>
+
+        <ul class="dac-header-crumbs">
+          
+          <li class="dac-header-crumbs-item"><span class="dac-header-crumbs-link current ">ProgressSpinner</a></li>
+        </ul>
+
+        
+        
+        
+  <div class="dac-header-search" id="search-container">
+    <div class="dac-header-search-inner">
+      <div class="dac-sprite dac-search dac-header-search-btn" id="search-btn"></div>
+      <form class="dac-header-search-form" onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '../../../../../')"
+          onkeyup="return search_changed(event, false, '../../../../../')"
+          class="dac-header-search-input" placeholder="Search" />
+          <a class="dac-header-search-close hide" id="search-close">close</a>
+      </form>
+    </div><!-- end dac-header-search-inner -->
+  </div><!-- end dac-header-search -->
+
+  <div class="search_filtered_wrapper">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+        
+
+        <a class="dac-header-console-btn" href="https://play.google.com/apps/publish/">
+          <span class="dac-sprite dac-google-play"></span>
+          <span class="dac-visible-desktop-inline">Developer</span>
+          Console
+        </a>
+
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  
+  <!-- Navigation-->
+  <nav class="dac-nav">
+    <div class="dac-nav-dimmer" data-dac-toggle-nav></div>
+
+    <ul class="dac-nav-list" data-dac-nav>
+      <li class="dac-nav-item dac-nav-head">
+        <a class="dac-nav-link dac-nav-logo" data-dac-toggle-nav href="javascript:;" title="Close navigation">
+          <img class="dac-logo-image" src="../../../../../assets/images/android_logo.png"
+               srcset="../../../../../assets/images/android_logo@2x.png 2x"
+               width="32" height="36" alt="Android" /> Developers
+        </a>
+      </li>
+      <li class="dac-nav-item home">
+        <a class="dac-nav-link dac-visible-mobile-block" href="../../../../../index.html">Home</a>
+        <ul class="dac-nav-secondary about">
+          <li class="dac-nav-item about">
+            <a class="dac-nav-link" href="../../../../../about/index.html">Android</a>
+          </li>
+          <li class="dac-nav-item wear">
+            <a class="dac-nav-link" href="../../../../../wear/index.html">Wear</a>
+          </li>
+          <li class="dac-nav-item tv">
+            <a class="dac-nav-link" href="../../../../../tv/index.html">TV</a>
+          </li>
+          <li class="dac-nav-item auto">
+            <a class="dac-nav-link" href="../../../../../auto/index.html">Auto</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item design">
+        <a class="dac-nav-link" href="../../../../../design/index.html"
+           zh-tw-lang="設計"
+           zh-cn-lang="设计"
+           ru-lang="Проектирование"
+           ko-lang="디자인"
+           ja-lang="設計"
+           es-lang="Diseñar">Design</a>
+      </li>
+      <li class="dac-nav-item develop">
+        <a class="dac-nav-link" href="../../../../../develop/index.html"
+           zh-tw-lang="開發"
+           zh-cn-lang="开发"
+           ru-lang="Разработка"
+           ko-lang="개발"
+           ja-lang="開発"
+           es-lang="Desarrollar">Develop</a>
+        <ul class="dac-nav-secondary develop">
+          <li class="dac-nav-item training">
+            <a class="dac-nav-link" href="../../../../../training/index.html"
+               zh-tw-lang="訓練課程"
+               zh-cn-lang="培训"
+               ru-lang="Курсы"
+               ko-lang="교육"
+               ja-lang="トレーニング"
+               es-lang="Capacitación">Training</a>
+          </li>
+          <li class="dac-nav-item guide">
+            <a class="dac-nav-link" href="../../../../../guide/index.html"
+               zh-tw-lang="API 指南"
+               zh-cn-lang="API 指南"
+               ru-lang="Руководства по API"
+               ko-lang="API 가이드"
+               ja-lang="API ガイド"
+               es-lang="Guías de la API">API Guides</a>
+          </li>
+          <li class="dac-nav-item reference">
+            <a class="dac-nav-link" href="../../../../../reference/packages.html"
+               zh-tw-lang="參考資源"
+               zh-cn-lang="参考"
+               ru-lang="Справочник"
+               ko-lang="참조문서"
+               ja-lang="リファレンス"
+               es-lang="Referencia">Reference</a>
+          </li>
+          <li class="dac-nav-item tools">
+            <a class="dac-nav-link" href="../../../../../sdk/index.html"
+               zh-tw-lang="相關工具"
+               zh-cn-lang="工具"
+               ru-lang="Инструменты"
+               ko-lang="도구"
+               ja-lang="ツール"
+               es-lang="Herramientas">Tools</a></li>
+          <li class="dac-nav-item google">
+            <a class="dac-nav-link" href="../../../../../google/index.html">Google Services</a>
+          </li>
+          
+          <li class="dac-nav-item preview">
+            <a class="dac-nav-link" href="../../../../../preview/index.html">Preview</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item distribute">
+        <a class="dac-nav-link" href="../../../../../distribute/googleplay/index.html"
+           zh-tw-lang="發佈"
+           zh-cn-lang="分发"
+           ru-lang="Распространение"
+           ko-lang="배포"
+           ja-lang="配布"
+           es-lang="Distribuir">Distribute</a>
+        <ul class="dac-nav-secondary distribute">
+          <li class="dac-nav-item googleplay">
+            <a class="dac-nav-link" href="../../../../../distribute/googleplay/index.html">Google Play</a></li>
+          <li class="dac-nav-item essentials">
+            <a class="dac-nav-link" href="../../../../../distribute/essentials/index.html">Essentials</a></li>
+          <li class="dac-nav-item users">
+            <a class="dac-nav-link" href="../../../../../distribute/users/index.html">Get Users</a></li>
+          <li class="dac-nav-item engage">
+            <a class="dac-nav-link" href="../../../../../distribute/engage/index.html">Engage &amp; Retain</a></li>
+          <li class="dac-nav-item monetize">
+            <a class="dac-nav-link" href="../../../../../distribute/monetize/index.html">Earn</a>
+          </li>
+          <li class="dac-nav-item analyze">
+            <a class="dac-nav-link" href="../../../../../distribute/analyze/index.html">Analyze</a>
+          </li>
+          <li class="dac-nav-item stories">
+            <a class="dac-nav-link" href="../../../../../distribute/stories/index.html">Stories</a>
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </nav>
+  <!-- end navigation-->
+  
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content"><div class="cols">
+    <div class="col-4 dac-hidden-mobile" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav">
+      <div id="api-nav-header">
+        <div id="api-level-toggle">
+          <label for="apiLevelCheckbox" class="disabled"
+            title="Select your target API level to dim unavailable APIs">API level: </label>
+          <div class="select-wrapper">
+            <select id="apiLevelSelector">
+              <!-- option elements added by buildApiLevelSelector() -->
+            </select>
+          </div>
+        </div><!-- end toggle -->
+        <div id="api-nav-title">Android APIs</div>
+        </div><!-- end nav header -->
+      <script>
+        var SINCE_DATA = [  ];
+        buildApiLevelSelector();
+      </script>
+
+      <div id="swapper">
+        <div id="nav-panels">
+          <div id="resize-packages-nav">
+            <div id="packages-nav" class="scroll-pane">
+
+              <ul>
+                
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/package-summary.html">android.support.wearable</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/activity/package-summary.html">android.support.wearable.activity</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/companion/package-summary.html">android.support.wearable.companion</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/input/package-summary.html">android.support.wearable.input</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/media/package-summary.html">android.support.wearable.media</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/provider/package-summary.html">android.support.wearable.provider</a></li>
+    <li class="selected api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/view/package-summary.html">android.support.wearable.view</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/watchface/package-summary.html">android.support.wearable.watchface</a></li>
+              </ul><br/>
+
+            </div> <!-- end packages-nav -->
+          </div> <!-- end resize-packages -->
+          <div id="classes-nav" class="scroll-pane">
+
+
+
+            <ul>
+              
+              
+    <li><h2>Interfaces</h2>
+      <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridViewPager.OnAdapterChangeListener.html">GridViewPager.OnAdapterChangeListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridViewPager.OnPageChangeListener.html">GridViewPager.OnPageChangeListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.OnLayoutInflatedListener.html">WatchViewStub.OnLayoutInflatedListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.ClickListener.html">WearableListView.ClickListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnCenterProximityListener.html">WearableListView.OnCenterProximityListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnCentralPositionChangedListener.html">WearableListView.OnCentralPositionChangedListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnScrollListener.html">WearableListView.OnScrollListener</a></li>
+      </ul>
+    </li>
+              
+    <li><h2>Classes</h2>
+      <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.LayoutParams.html">BoxInsetLayout.LayoutParams</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CardFragment.html">CardFragment</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CardFrame.html">CardFrame</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html">CardScrollView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html">CircledImageView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CircularButton.html">CircularButton</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/CrossfadeDrawable.html">CrossfadeDrawable</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.html">DelayedConfirmationView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DismissOverlayView.html">DismissOverlayView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DotsPageIndicator.html">DotsPageIndicator</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/FragmentGridPagerAdapter.html">FragmentGridPagerAdapter</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPagerAdapter.html">GridPagerAdapter</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridViewPager.html">GridViewPager</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridViewPager.LayoutParams.html">GridViewPager.LayoutParams</a></li>
+          <li class="selected api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ProgressSpinner.html">ProgressSpinner</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/SimpleAnimatorListener.html">SimpleAnimatorListener</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.html">WatchViewStub</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableFrameLayout.html">WearableFrameLayout</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableFrameLayout.LayoutParams.html">WearableFrameLayout.LayoutParams</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html">WearableListView</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.Adapter.html">WearableListView.Adapter</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.ViewHolder.html">WearableListView.ViewHolder</a></li>
+      </ul>
+    </li>
+              
+              
+              
+            </ul><br/>
+
+
+          </div><!-- end classes -->
+        </div><!-- end nav-panels -->
+        <div id="nav-tree" style="display:none" class="scroll-pane">
+          <div id="tree-list"></div>
+        </div><!-- end nav-tree -->
+      </div><!-- end swapper -->
+      <div id="nav-swap">
+      <a class="fullscreen">fullscreen</a>
+      <a href='#' onclick='swapNav();return false;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>
+      </div>
+    </div> <!-- end devdoc-nav -->
+    </div> <!-- end side-nav -->
+    <script type="text/javascript">
+      // init fullscreen based on user pref
+      var fullscreen = readCookie("fullscreen");
+      if (fullscreen != 0) {
+        if (fullscreen == "false") {
+          toggleFullscreen(false);
+        } else {
+          toggleFullscreen(true);
+        }
+      }
+      // init nav version for mobile
+      if (isMobile) {
+        swapNav(); // tree view should be used on mobile
+        $('#nav-swap').hide();
+      } else {
+        chooseDefaultNav();
+        if ($("#nav-tree").is(':visible')) {
+          init_default_navtree("../../../../../");
+        }
+      }
+      // scroll the selected page into view
+      $(document).ready(function() {
+        scrollIntoView("packages-nav");
+        scrollIntoView("classes-nav");
+        });
+    </script>
+
+     
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+  
+   
+  
+  
+  
+  
+
+  
+   
+  
+  
+   
+  
+  
+   
+  
+  
+
+  
+   
+  
+  
+  
+  
+
+  
+   
+  
+  
+  
+  
+
+  
+   
+  
+  
+  
+  
+
+  
+   
+  
+  
+  
+  
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+  <a href="#inhconstants">Inherited Constants</a>
+  
+
+
+
+  &#124; <a href="#inhfields">Inherited Fields</a>
+  
+
+
+  &#124; <a href="#pubctors">Ctors</a>
+  
+
+
+
+  &#124; <a href="#pubmethods">Methods</a>
+  
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+  
+  
+  
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+     
+     
+    
+    class
+<h1 itemprop="name">ProgressSpinner</h1>
+
+
+
+  
+  
+  
+
+  
+  
+  
+
+  
+    extends ProgressBar<br/>
+  
+  
+  
+
+  
+  
+  
+
+
+    
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+         	
+        <td colspan="4" class="jd-inheritance-class-cell">java.lang.Object</td>
+    </tr>
+    
+
+    <tr>
+        
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+         	
+        <td colspan="3" class="jd-inheritance-class-cell">android.view.View</td>
+    </tr>
+    
+
+    <tr>
+        
+            <td class="jd-inheritance-space">&nbsp;</td>
+        
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+         	
+        <td colspan="2" class="jd-inheritance-class-cell">android.widget.ProgressBar</td>
+    </tr>
+    
+
+    <tr>
+        
+            <td class="jd-inheritance-space">&nbsp;</td>
+        
+            <td class="jd-inheritance-space">&nbsp;</td>
+        
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+         	
+        <td colspan="1" class="jd-inheritance-class-cell">android.support.wearable.view.ProgressSpinner</td>
+    </tr>
+    
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">An indeterminate progress spinner designed for wearables which cycles through colors.
+ There are four valid ways for colors to be set.
+ <ul>
+     <li>Do nothing. The defaults will be used.</li>
+     <li>Specify an array containing colors in the colors attribute</li>
+     <li>Specify a single color in the colors attribute</li>
+     <li>Call setColors(int[]) with the ARGB color values</li>
+ </ul>
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<table id="inhconstants" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Constants</div></th></tr>
+
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.View" class="jd-expando-trigger closed"
+          ><img id="inherited-constants-android.view.View-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>From class
+android.view.View
+<div id="inherited-constants-android.view.View">
+  <div id="inherited-constants-android.view.View-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-constants-android.view.View-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_ASSERTIVE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_NONE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_POLITE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">DRAWING_CACHE_QUALITY_AUTO</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">DRAWING_CACHE_QUALITY_HIGH</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">DRAWING_CACHE_QUALITY_LOW</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FIND_VIEWS_WITH_CONTENT_DESCRIPTION</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FIND_VIEWS_WITH_TEXT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FOCUSABLES_ALL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FOCUSABLES_TOUCH_MODE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FOCUS_BACKWARD</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FOCUS_DOWN</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FOCUS_FORWARD</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FOCUS_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FOCUS_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">FOCUS_UP</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">GONE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">HAPTIC_FEEDBACK_ENABLED</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_AUTO</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_NO</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_YES</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">INVISIBLE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">KEEP_SCREEN_ON</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">LAYER_TYPE_HARDWARE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">LAYER_TYPE_NONE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">LAYER_TYPE_SOFTWARE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">LAYOUT_DIRECTION_INHERIT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">LAYOUT_DIRECTION_LOCALE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">LAYOUT_DIRECTION_LTR</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">LAYOUT_DIRECTION_RTL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">MEASURED_HEIGHT_STATE_SHIFT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">MEASURED_SIZE_MASK</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">MEASURED_STATE_MASK</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">MEASURED_STATE_TOO_SMALL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">NO_ID</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">OVER_SCROLL_ALWAYS</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">OVER_SCROLL_IF_CONTENT_SCROLLS</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">OVER_SCROLL_NEVER</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCREEN_STATE_OFF</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCREEN_STATE_ON</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLLBARS_INSIDE_INSET</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLLBARS_INSIDE_OVERLAY</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLLBARS_OUTSIDE_INSET</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLLBARS_OUTSIDE_OVERLAY</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLLBAR_POSITION_DEFAULT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLLBAR_POSITION_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLLBAR_POSITION_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_AXIS_HORIZONTAL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_AXIS_NONE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_AXIS_VERTICAL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_BOTTOM</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_END</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_START</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_TOP</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SOUND_EFFECTS_ENABLED</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">STATUS_BAR_HIDDEN</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">STATUS_BAR_VISIBLE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_FULLSCREEN</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_HIDE_NAVIGATION</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_IMMERSIVE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_IMMERSIVE_STICKY</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_STABLE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LIGHT_STATUS_BAR</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_VISIBLE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_LAYOUT_FLAGS</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_ALIGNMENT_CENTER</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_ALIGNMENT_GRAVITY</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_ALIGNMENT_INHERIT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_END</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_START</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_END</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_START</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_ANY_RTL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_LTR</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_RTL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_INHERIT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_LOCALE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_LTR</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_RTL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">VIEW_LOG_TAG</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">VISIBLE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+
+
+
+
+
+
+
+</table>
+
+
+
+
+
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+<table id="inhfields" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Fields</div></th></tr>
+
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.View" class="jd-expando-trigger closed"
+          ><img id="inherited-fields-android.view.View-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>From class
+android.view.View
+<div id="inherited-fields-android.view.View">
+  <div id="inherited-fields-android.view.View-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-fields-android.view.View-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">ALPHA</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">EMPTY_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">ENABLED_FOCUSED_SELECTED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">ENABLED_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">ENABLED_SELECTED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">ENABLED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">ENABLED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">FOCUSED_SELECTED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_ENABLED_SELECTED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_ENABLED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_FOCUSED_SELECTED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_SELECTED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">PRESSED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">ROTATION</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">ROTATION_X</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">ROTATION_Y</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">SCALE_X</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">SCALE_Y</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">SELECTED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">SELECTED_WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">TRANSLATION_X</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">TRANSLATION_Y</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">TRANSLATION_Z</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          protected
+          static
+          final
+          int[]</nobr></td>
+          <td class="jd-linkcol">WINDOW_FOCUSED_STATE_SET</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">X</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">Y</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          Property&lt;View,&nbsp;Float&gt;</nobr></td>
+          <td class="jd-linkcol">Z</td>
+          <td class="jd-descrcol" width="100%">
+            
+            
+    
+
+          </td>
+      </tr>
+      
+    
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+
+
+
+
+
+
+
+</table>
+
+
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
+
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            </nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ProgressSpinner.html#ProgressSpinner(android.content.Context)">ProgressSpinner</a></span>(Context context)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            </nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ProgressSpinner.html#ProgressSpinner(android.content.Context, android.util.AttributeSet)">ProgressSpinner</a></span>(Context context, AttributeSet attrs)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            </nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ProgressSpinner.html#ProgressSpinner(android.content.Context, android.util.AttributeSet, int)">ProgressSpinner</a></span>(Context context, AttributeSet attrs, int defStyle)</nobr>
+        
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ProgressSpinner.html#hide()">hide</a></span>()</nobr>
+        
+        <div class="jd-descrdiv">
+          Stops the animation and hides the view.
+          
+    
+
+        </div>
+  
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ProgressSpinner.html#hideWithAnimation(android.animation.AnimatorListenerAdapter)">hideWithAnimation</a></span>(AnimatorListenerAdapter listener)</nobr>
+        
+        <div class="jd-descrdiv">
+          Hides the spinner with an animation.
+          
+    
+
+        </div>
+  
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ProgressSpinner.html#hideWithAnimation()">hideWithAnimation</a></span>()</nobr>
+        
+        <div class="jd-descrdiv">
+          Hides the spinner with an animation.
+          
+    
+
+        </div>
+  
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ProgressSpinner.html#setColors(int[])">setColors</a></span>(int[] colors)</nobr>
+        
+        <div class="jd-descrdiv">
+          Sets the color(s) to be used in the spinner.
+          
+    
+
+        </div>
+  
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ProgressSpinner.html#showWithAnimation(long, android.animation.AnimatorListenerAdapter)">showWithAnimation</a></span>(long delayMs, AnimatorListenerAdapter listener)</nobr>
+        
+        <div class="jd-descrdiv">
+          Shows the spinner with an animation and delay.
+          
+    
+
+        </div>
+  
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ProgressSpinner.html#showWithAnimation()">showWithAnimation</a></span>()</nobr>
+        
+        <div class="jd-descrdiv">
+          Shows the spinner with an animation.
+          
+    
+
+        </div>
+  
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/ProgressSpinner.html#showWithAnimation(long)">showWithAnimation</a></span>(long delayMs)</nobr>
+        
+        <div class="jd-descrdiv">
+          Shows the spinner with an animation.
+          
+    
+
+        </div>
+  
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.widget.ProgressBar" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.widget.ProgressBar-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  android.widget.ProgressBar
+
+<div id="inherited-methods-android.widget.ProgressBar">
+  <div id="inherited-methods-android.widget.ProgressBar-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.widget.ProgressBar-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">drawableHotspotChanged</span>(float arg0, float arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">drawableStateChanged</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getIndeterminateDrawable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getIndeterminateTintList</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getIndeterminateTintMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Interpolator</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getInterpolator</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            synchronized
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMax</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            synchronized
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getProgress</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getProgressBackgroundTintList</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getProgressBackgroundTintMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getProgressDrawable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getProgressTintList</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getProgressTintMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            synchronized
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSecondaryProgress</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSecondaryProgressTintList</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSecondaryProgressTintMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            synchronized
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">incrementProgressBy</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            synchronized
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">incrementSecondaryProgressBy</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">invalidateDrawable</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            synchronized
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isIndeterminate</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">jumpDrawablesToCurrentState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onAttachedToWindow</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDetachedFromWindow</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            synchronized
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDraw</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            synchronized
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onMeasure</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Parcelable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onSaveInstanceState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onSizeChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onVisibilityChanged</span>(View arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postInvalidate</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            synchronized
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setIndeterminate</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setIndeterminateDrawable</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setIndeterminateDrawableTiled</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setIndeterminateTintList</span>(ColorStateList arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setIndeterminateTintMode</span>(PorterDuff.Mode arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setInterpolator</span>(Context arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setInterpolator</span>(Interpolator arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            synchronized
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setMax</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            synchronized
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setProgress</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setProgressBackgroundTintList</span>(ColorStateList arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setProgressBackgroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setProgressDrawable</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setProgressDrawableTiled</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setProgressTintList</span>(ColorStateList arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setProgressTintMode</span>(PorterDuff.Mode arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            synchronized
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setSecondaryProgress</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setSecondaryProgressTintList</span>(ColorStateList arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setSecondaryProgressTintMode</span>(PorterDuff.Mode arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setVisibility</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">verifyDrawable</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.view.View-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  android.view.View
+
+<div id="inherited-methods-android.view.View">
+  <div id="inherited-methods-android.view.View-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.view.View-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">addChildrenForAccessibility</span>(ArrayList&lt;View&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1, int arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">addOnAttachStateChangeListener</span>(View.OnAttachStateChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">addOnLayoutChangeListener</span>(View.OnLayoutChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">addTouchables</span>(ArrayList&lt;View&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ViewPropertyAnimator</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">animate</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">announceForAccessibility</span>(CharSequence arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">awakenScrollBars</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">awakenScrollBars</span>(int arg0, boolean arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">awakenScrollBars</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">bringToFront</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">buildDrawingCache</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">buildDrawingCache</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">buildLayer</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">callOnClick</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">canResolveLayoutDirection</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">canResolveTextAlignment</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">canResolveTextDirection</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">canScrollHorizontally</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">canScrollVertically</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">cancelLongPress</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">cancelPendingInputEvents</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">checkInputConnectionProxy</span>(View arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clearAnimation</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clearFocus</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            static
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">combineMeasuredStates</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeHorizontalScrollExtent</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeHorizontalScrollOffset</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeHorizontalScrollRange</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeScroll</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeSystemWindowInsets</span>(WindowInsets arg0, Rect arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeVerticalScrollExtent</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeVerticalScrollOffset</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeVerticalScrollRange</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            AccessibilityNodeInfo</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">createAccessibilityNodeInfo</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">createContextMenu</span>(ContextMenu arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">destroyDrawingCache</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchApplyWindowInsets</span>(WindowInsets arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchConfigurationChanged</span>(Configuration arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchDisplayHint</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchDragEvent</span>(DragEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchDraw</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchDrawableHotspotChanged</span>(float arg0, float arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchGenericFocusedEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchGenericMotionEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchGenericPointerEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchHoverEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchKeyEvent</span>(KeyEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchKeyEventPreIme</span>(KeyEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchKeyShortcutEvent</span>(KeyEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedFling</span>(float arg0, float arg1, boolean arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedPreFling</span>(float arg0, float arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedPrePerformAccessibilityAction</span>(int arg0, Bundle arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedPreScroll</span>(int arg0, int arg1, int[] arg2, int[] arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedScroll</span>(int arg0, int arg1, int arg2, int arg3, int[] arg4)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchPopulateAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchSetActivated</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchSetPressed</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchSetSelected</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchSystemUiVisibilityChanged</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchTouchEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchTrackballEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchUnhandledMove</span>(View arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchVisibilityChanged</span>(View arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchWindowFocusChanged</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchWindowSystemUiVisiblityChanged</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchWindowVisibilityChanged</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">draw</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">drawableHotspotChanged</span>(float arg0, float arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">drawableStateChanged</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            View</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">findFocus</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            View</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">findViewById</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            View</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">findViewWithTag</span>(Object arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">findViewsWithText</span>(ArrayList&lt;View&gt; arg0, CharSequence arg1, int arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">fitSystemWindows</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            View</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">focusSearch</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">forceLayout</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            static
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">generateViewId</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityLiveRegion</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            AccessibilityNodeProvider</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityNodeProvider</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityTraversalAfter</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityTraversalBefore</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAlpha</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Animation</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAnimation</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            IBinder</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getApplicationWindowToken</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getBackground</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getBackgroundTintList</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getBackgroundTintMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getBaseline</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getBottom</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getBottomFadingEdgeStrength</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getBottomPaddingOffset</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getCameraDistance</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Rect</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipToOutline</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getContentDescription</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            Context</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getContext</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ContextMenu.ContextMenuInfo</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getContextMenuInfo</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            static
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDefaultSize</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Display</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDisplay</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int[]</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDrawableState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Bitmap</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDrawingCache</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Bitmap</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDrawingCache</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDrawingCacheBackgroundColor</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDrawingCacheQuality</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDrawingRect</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            long</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getDrawingTime</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getElevation</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getFilterTouchesWhenObscured</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getFitsSystemWindows</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ArrayList&lt;View&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getFocusables</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getFocusedRect</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForeground</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundGravity</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintList</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getGlobalVisibleRect</span>(Rect arg0, Point arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getGlobalVisibleRect</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Handler</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getHandler</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getHeight</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getHitRect</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getHorizontalFadingEdgeLength</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getHorizontalScrollbarHeight</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getId</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getImportantForAccessibility</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getKeepScreenOn</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            KeyEvent.DispatcherState</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getKeyDispatcherState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLabelFor</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLayerType</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLayoutDirection</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ViewGroup.LayoutParams</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLayoutParams</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLeft</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLeftFadingEdgeStrength</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLeftPaddingOffset</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLocalVisibleRect</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLocationInWindow</span>(int[] arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLocationOnScreen</span>(int[] arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Matrix</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMatrix</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMeasuredHeight</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMeasuredHeightAndState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMeasuredState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMeasuredWidth</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMeasuredWidthAndState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMinimumHeight</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMinimumWidth</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getNextFocusDownId</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getNextFocusForwardId</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getNextFocusLeftId</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getNextFocusRightId</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getNextFocusUpId</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            View.OnFocusChangeListener</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getOnFocusChangeListener</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ViewOutlineProvider</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getOutlineProvider</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getOverScrollMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ViewOverlay</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getOverlay</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getPaddingBottom</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getPaddingEnd</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getPaddingLeft</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getPaddingRight</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getPaddingStart</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getPaddingTop</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            ViewParent</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getParent</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ViewParent</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getParentForAccessibility</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getPivotX</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getPivotY</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Resources</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getResources</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRight</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRightFadingEdgeStrength</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRightPaddingOffset</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            View</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootView</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootWindowInsets</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRotation</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRotationX</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRotationY</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScaleX</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScaleY</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollBarDefaultDelayBeforeFade</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollBarFadeDuration</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollBarSize</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollBarStyle</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollIndicators</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollX</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollY</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSolidColor</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            StateListAnimator</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getStateListAnimator</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSuggestedMinimumHeight</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSuggestedMinimumWidth</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSystemUiVisibility</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTag</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTag</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTextAlignment</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTextDirection</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTop</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTopFadingEdgeStrength</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTopPaddingOffset</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            TouchDelegate</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTouchDelegate</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ArrayList&lt;View&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTouchables</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTransitionName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTranslationX</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTranslationY</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getTranslationZ</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getVerticalFadingEdgeLength</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getVerticalScrollbarPosition</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getVerticalScrollbarWidth</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ViewTreeObserver</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getViewTreeObserver</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getVisibility</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getWidth</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getWindowAttachCount</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowId</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getWindowId</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getWindowSystemUiVisibility</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            IBinder</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getWindowToken</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getWindowVisibility</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getWindowVisibleDisplayFrame</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getX</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getY</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getZ</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hasFocus</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hasFocusable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hasNestedScrollingParent</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hasOnClickListeners</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hasOverlappingRendering</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hasTransientState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hasWindowFocus</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            static
+            
+            View</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">inflate</span>(Context arg0, int arg1, ViewGroup arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">invalidate</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">invalidate</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">invalidate</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">invalidateDrawable</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">invalidateOutline</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isAccessibilityFocused</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isActivated</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isAttachedToWindow</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isClickable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isContextClickable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isDirty</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isDrawingCacheEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isDuplicateParentStateEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isFocusable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isFocusableInTouchMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isFocused</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isHapticFeedbackEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isHardwareAccelerated</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isHorizontalFadingEdgeEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isHorizontalScrollBarEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isHovered</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isImportantForAccessibility</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isInEditMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isInLayout</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isInTouchMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isLaidOut</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isLayoutDirectionResolved</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isLayoutRequested</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isLongClickable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isNestedScrollingEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isOpaque</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isPaddingOffsetRequired</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isPaddingRelative</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isPressed</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isSaveEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isSaveFromParentEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isScrollContainer</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isScrollbarFadingEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isSelected</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isShown</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isSoundEffectsEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isTextAlignmentResolved</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isTextDirectionResolved</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isVerticalFadingEdgeEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isVerticalScrollBarEnabled</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">jumpDrawablesToCurrentState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">layout</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">measure</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            static
+            
+            int[]</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">mergeDrawableStates</span>(int[] arg0, int[] arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">offsetLeftAndRight</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">offsetTopAndBottom</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onAnimationEnd</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onAnimationStart</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onApplyWindowInsets</span>(WindowInsets arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onAttachedToWindow</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onCancelPendingInputEvents</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onCheckIsTextEditor</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onConfigurationChanged</span>(Configuration arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onCreateContextMenu</span>(ContextMenu arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int[]</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onCreateDrawableState</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            InputConnection</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onCreateInputConnection</span>(EditorInfo arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDetachedFromWindow</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDisplayHint</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDragEvent</span>(DragEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDraw</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawForeground</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawScrollBars</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onFilterTouchEventForSecurity</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onFinishInflate</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onFinishTemporaryDetach</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onFocusChanged</span>(boolean arg0, int arg1, Rect arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onGenericMotionEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onHoverChanged</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onHoverEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onInitializeAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onInitializeAccessibilityNodeInfo</span>(AccessibilityNodeInfo arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyDown</span>(int arg0, KeyEvent arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyLongPress</span>(int arg0, KeyEvent arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyMultiple</span>(int arg0, int arg1, KeyEvent arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyPreIme</span>(int arg0, KeyEvent arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyShortcut</span>(int arg0, KeyEvent arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyUp</span>(int arg0, KeyEvent arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onLayout</span>(boolean arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onMeasure</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onOverScrolled</span>(int arg0, int arg1, boolean arg2, boolean arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onPopulateAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideVirtualStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onRtlPropertiesChanged</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Parcelable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onSaveInstanceState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onScreenStateChanged</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onScrollChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onSetAlpha</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onSizeChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onStartTemporaryDetach</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onTouchEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onTrackballEvent</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onVisibilityChanged</span>(View arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onWindowFocusChanged</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onWindowSystemUiVisibilityChanged</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onWindowVisibilityChanged</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">overScrollBy</span>(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, boolean arg8)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performAccessibilityAction</span>(int arg0, Bundle arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performClick</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performContextClick</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performHapticFeedback</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performHapticFeedback</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performLongClick</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">playSoundEffect</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">post</span>(Runnable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postDelayed</span>(Runnable arg0, long arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postInvalidate</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postInvalidate</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postInvalidateDelayed</span>(long arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postInvalidateDelayed</span>(long arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postInvalidateOnAnimation</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postInvalidateOnAnimation</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postOnAnimation</span>(Runnable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">postOnAnimationDelayed</span>(Runnable arg0, long arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">refreshDrawableState</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">removeCallbacks</span>(Runnable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">removeOnAttachStateChangeListener</span>(View.OnAttachStateChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">removeOnLayoutChangeListener</span>(View.OnLayoutChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestApplyInsets</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestFitSystemWindows</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestFocus</span>(int arg0, Rect arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestFocus</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestFocus</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestFocusFromTouch</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestLayout</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestRectangleOnScreen</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestRectangleOnScreen</span>(Rect arg0, boolean arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestUnbufferedDispatch</span>(MotionEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            static
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">resolveSize</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            static
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">resolveSizeAndState</span>(int arg0, int arg1, int arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">restoreHierarchyState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">saveHierarchyState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">scheduleDrawable</span>(Drawable arg0, Runnable arg1, long arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">scrollBy</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">scrollTo</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">sendAccessibilityEvent</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">sendAccessibilityEventUnchecked</span>(AccessibilityEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setAccessibilityDelegate</span>(View.AccessibilityDelegate arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setAccessibilityLiveRegion</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setAccessibilityTraversalAfter</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setAccessibilityTraversalBefore</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setActivated</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setAlpha</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setAnimation</span>(Animation arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setBackground</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setBackgroundColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setBackgroundDrawable</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setBackgroundResource</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setBackgroundTintList</span>(ColorStateList arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setBackgroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setBottom</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setCameraDistance</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setClickable</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setClipBounds</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setClipToOutline</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setContentDescription</span>(CharSequence arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setContextClickable</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setDrawingCacheEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setDrawingCacheQuality</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setDuplicateParentStateEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setElevation</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setFadingEdgeLength</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setFilterTouchesWhenObscured</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setFitsSystemWindows</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setFocusable</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setFocusableInTouchMode</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setHapticFeedbackEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setHasTransientState</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setHorizontalFadingEdgeEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setHorizontalScrollBarEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setHovered</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setId</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setImportantForAccessibility</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setKeepScreenOn</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setLabelFor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setLayerPaint</span>(Paint arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setLayerType</span>(int arg0, Paint arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setLayoutDirection</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setLeft</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setLongClickable</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setMeasuredDimension</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setMinimumHeight</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setMinimumWidth</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setNestedScrollingEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setNextFocusDownId</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setNextFocusForwardId</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setNextFocusLeftId</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setNextFocusRightId</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setNextFocusUpId</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnApplyWindowInsetsListener</span>(View.OnApplyWindowInsetsListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnClickListener</span>(View.OnClickListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnContextClickListener</span>(View.OnContextClickListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnCreateContextMenuListener</span>(View.OnCreateContextMenuListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnDragListener</span>(View.OnDragListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnFocusChangeListener</span>(View.OnFocusChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnGenericMotionListener</span>(View.OnGenericMotionListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnHoverListener</span>(View.OnHoverListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnKeyListener</span>(View.OnKeyListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnLongClickListener</span>(View.OnLongClickListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnScrollChangeListener</span>(View.OnScrollChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnTouchListener</span>(View.OnTouchListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOutlineProvider</span>(ViewOutlineProvider arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOverScrollMode</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setPadding</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setPaddingRelative</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setPivotX</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setPivotY</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setPressed</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setRight</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setRotation</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setRotationX</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setRotationY</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setSaveEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setSaveFromParentEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScaleX</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScaleY</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollBarDefaultDelayBeforeFade</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollBarFadeDuration</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollBarSize</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollBarStyle</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollContainer</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollX</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollY</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollbarFadingEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setSelected</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setSoundEffectsEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setStateListAnimator</span>(StateListAnimator arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setSystemUiVisibility</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTag</span>(int arg0, Object arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTag</span>(Object arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTextAlignment</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTextDirection</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTop</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTouchDelegate</span>(TouchDelegate arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTransitionName</span>(String arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTranslationX</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTranslationY</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setTranslationZ</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setVerticalFadingEdgeEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setVerticalScrollBarEnabled</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setVerticalScrollbarPosition</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setVisibility</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setWillNotCacheDrawing</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setWillNotDraw</span>(boolean arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setX</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setY</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setZ</span>(float arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">showContextMenu</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startAnimation</span>(Animation arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startDrag</span>(ClipData arg0, View.DragShadowBuilder arg1, Object arg2, int arg3)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startNestedScroll</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">stopNestedScroll</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">unscheduleDrawable</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">unscheduleDrawable</span>(Drawable arg0, Runnable arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">verifyDrawable</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">willNotCacheDrawing</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">willNotDraw</span>()</nobr>
+        
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.Object-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  java.lang.Object
+
+<div id="inherited-methods-java.lang.Object">
+  <div id="inherited-methods-java.lang.Object-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clone</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">finalize</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            Class&lt;?&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClass</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notify</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notifyAll</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0)</nobr>
+        
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable.Callback" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.graphics.drawable.Drawable.Callback-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  android.graphics.drawable.Drawable.Callback
+
+<div id="inherited-methods-android.graphics.drawable.Drawable.Callback">
+  <div id="inherited-methods-android.graphics.drawable.Drawable.Callback-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.graphics.drawable.Drawable.Callback-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">invalidateDrawable</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">scheduleDrawable</span>(Drawable arg0, Runnable arg1, long arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">unscheduleDrawable</span>(Drawable arg0, Runnable arg1)</nobr>
+        
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  android.view.KeyEvent.Callback
+
+<div id="inherited-methods-android.view.KeyEvent.Callback">
+  <div id="inherited-methods-android.view.KeyEvent.Callback-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.view.KeyEvent.Callback-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyDown</span>(int arg0, KeyEvent arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyLongPress</span>(int arg0, KeyEvent arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyMultiple</span>(int arg0, int arg1, KeyEvent arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onKeyUp</span>(int arg0, KeyEvent arg1)</nobr>
+        
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.accessibility.AccessibilityEventSource" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.view.accessibility.AccessibilityEventSource-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  android.view.accessibility.AccessibilityEventSource
+
+<div id="inherited-methods-android.view.accessibility.AccessibilityEventSource">
+  <div id="inherited-methods-android.view.accessibility.AccessibilityEventSource-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.view.accessibility.AccessibilityEventSource-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">sendAccessibilityEvent</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">sendAccessibilityEventUnchecked</span>(AccessibilityEvent arg0)</nobr>
+        
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<h2>Public Constructors</h2>
+
+
+
+<A NAME="ProgressSpinner(android.content.Context)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        
+      </span>
+      <span class="sympad">ProgressSpinner</span>
+      <span class="normal">(Context context)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="ProgressSpinner(android.content.Context, android.util.AttributeSet)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        
+      </span>
+      <span class="sympad">ProgressSpinner</span>
+      <span class="normal">(Context context, AttributeSet attrs)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="ProgressSpinner(android.content.Context, android.util.AttributeSet, int)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        
+      </span>
+      <span class="sympad">ProgressSpinner</span>
+      <span class="normal">(Context context, AttributeSet attrs, int defStyle)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="hide()"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">hide</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Stops the animation and hides the view.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="hideWithAnimation(android.animation.AnimatorListenerAdapter)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">hideWithAnimation</span>
+      <span class="normal">(AnimatorListenerAdapter listener)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Hides the spinner with an animation.
+
+ <p>Will always cancel all other animations for this spinner instance regardless of whether
+ the hide animation will actually run.
+
+ <p>If the hide animation will not run because of the existing visible state of the
+ spinner, the listener onAnimationEnd() method will be called immediately with a null
+ Animation.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>listener</td>
+          <td>listener to receive animation callbacks while hiding spinner
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="hideWithAnimation()"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">hideWithAnimation</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Hides the spinner with an animation.
+
+ <p>Will always cancel all other animations for this spinner instance regardless of whether
+ the hide animation will actually run.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="setColors(int[])"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">setColors</span>
+      <span class="normal">(int[] colors)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Sets the color(s) to be used in the spinner. They will be shown repeatedly and sequentially.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>colors</td>
+          <td>Array of one or more integers representing colors in ARGB format.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="showWithAnimation(long, android.animation.AnimatorListenerAdapter)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">showWithAnimation</span>
+      <span class="normal">(long delayMs, AnimatorListenerAdapter listener)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Shows the spinner with an animation and delay.
+
+ <p>Will always cancel all other animations for this spinner instance.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>delayMs</td>
+          <td>delay before starting the animation in milliseconds</td>
+        </tr>
+        <tr>
+          <th>listener</td>
+          <td>listener to receive animation callbacks while showing spinner
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="showWithAnimation()"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">showWithAnimation</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Shows the spinner with an animation. This is equivalent to calling
+ <code><a href="../../../../../reference/android/support/wearable/view/ProgressSpinner.html#showWithAnimation(long)">showWithAnimation(long)</a></code> with a delay of 0.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="showWithAnimation(long)"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">showWithAnimation</span>
+      <span class="normal">(long delayMs)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Shows the spinner with an animation.
+
+ <p>Will always cancel all other animations for this spinner instance.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>delayMs</td>
+          <td>delay before starting the animation in milliseconds
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+</div> <!-- jd-content -->
+
+<div class="wrap">
+  <div class="dac-footer">
+    <div class="cols dac-footer-main">
+      <div class="col-1of2">
+        <a class="dac-footer-getnews" data-modal-toggle="newsletter" href="javascript:;">Get news &amp; tips <span
+          class="dac-fab dac-primary"><i class="dac-sprite dac-mail"></i></span></a>
+      </div>
+      <div class="col-1of2 dac-footer-reachout">
+        <div class="dac-footer-contact">
+          <a class="dac-footer-contact-link" href="http://android-developers.blogspot.com/">Blog</a>
+          <a class="dac-footer-contact-link" href="/support.html">Support</a>
+        </div>
+        <div class="dac-footer-social">
+          <a class="dac-fab dac-footer-social-link" href="https://www.youtube.com/user/androiddevelopers"><i class="dac-sprite dac-youtube"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://plus.google.com/+AndroidDevelopers"><i class="dac-sprite dac-gplus"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://twitter.com/AndroidDev"><i class="dac-sprite dac-twitter"></i></a>
+        </div>
+      </div>
+    </div>
+
+    <hr class="dac-footer-separator"/>
+
+    
+      <p class="dac-footer-copyright">
+        
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="../../../../../license.html">
+  Content License</a>.
+      </p>
+      <p class="dac-footer-build">
+        
+    Android Wearable Support&nbsp;r &mdash; 
+<script src="../../../../../timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+      </p>
+    
+
+    <p class="dac-footer-links">
+      <a href="/about/index.html">About Android</a>
+      <a href="/auto/index.html">Auto</a>
+      <a href="/tv/index.html">TV</a>
+      <a href="/wear/index.html">Wear</a>
+      <a href="/legal.html">Legal</a>
+
+      <span id="language" class="locales">
+        <select name="language" onchange="changeLangPref(this.value, true)">
+          <option value="en" selected="selected">English</option>
+          <option value="es">Español</option>
+          <option value="ja">日本語</option>
+          <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
+          <option value="ru">Русский</option>
+          <option value="zh-cn">中文(简体)</option>
+          <option value="zh-tw">中文(繁體)</option>
+        </select>
+      </span>
+    </p>
+  </div>
+</div> <!-- end footer -->
+
+<div data-modal="newsletter" data-newsletter data-swap class="dac-modal newsletter">
+  <div class="dac-modal-container">
+    <div class="dac-modal-window">
+      <header class="dac-modal-header">
+        <button class="dac-modal-header-close" data-modal-toggle><i class="dac-sprite dac-close"></i></button>
+        <div class="dac-swap" data-swap-container>
+          <section class="dac-swap-section dac-active dac-down">
+            <h2 class="norule dac-modal-header-title">Get the latest Android developer news and tips that will help you find success on Google Play.</h2>
+            <p class="dac-modal-header-subtitle">&#42; Required Fields</p>
+          </section>
+          <section class="dac-swap-section dac-up">
+            <h2 class="norule dac-modal-header-title">Hooray!</h2>
+          </section>
+        </div>
+      </header>
+      <div class="dac-swap" data-swap-container>
+        <section class="dac-swap-section dac-active dac-left">
+          <form action="https://docs.google.com/forms/d/1QgnkzbEJIDu9lMEea0mxqWrXUJu0oBCLD7ar23V0Yys/formResponse" class="dac-form" method="post" target="dac-newsletter-iframe">
+            <section class="dac-modal-content">
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-full-name" class="dac-form-floatlabel">Full name</label>
+                      <input type="text" class="dac-form-input" name="entry.1357890476" id="newsletter-full-name" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-email" class="dac-form-floatlabel">Email address</label>
+                      <input type="email" class="dac-form-input" name="entry.472100832" id="newsletter-email" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-company" class="dac-form-floatlabel">Company / developer name</label>
+                      <input type="text" class="dac-form-input" name="entry.1664780309" id="newsletter-company">
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-play-store" class="dac-form-floatlabel">One of your Play Store app URLs</label>
+                      <input type="url" class="dac-form-input" name="entry.47013838" id="newsletter-play-store" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <legend class="dac-form-legend">Which best describes your business:<span class="dac-form-required">*</span>
+                    </legend>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-app" required>
+                      <label for="newsletter-business-type-app" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-app" class="dac-form-label">Apps</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-games" required>
+                      <label for="newsletter-business-type-games" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-games" class="dac-form-label">Games</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps and Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-appsgames" required>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-label">Apps &amp; Games</label>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol newsletter-checkboxes">
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.732309842" id="newsletter-add" required value="Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.">
+                          <label for="newsletter-add" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-add" class="dac-form-label dac-form-aside">Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.2045036090" id="newsletter-terms" required value="I acknowledge that the information provided in this form will be subject to Google's privacy policy (https://www.google.com/policies/privacy/).">
+                          <label for="newsletter-terms" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-terms" class="dac-form-label dac-form-aside">I acknowledge that the information provided in this form will be subject to <a href="https://www.google.com/policies/privacy/">Google's privacy policy</a>.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+            </section>
+            <footer class="dac-modal-footer">
+              <div class="cols">
+                <div class="col-2of5">
+                </div>
+              </div>
+              <button type="submit" value="Submit" class="dac-fab dac-primary dac-large dac-modal-action"><i class="dac-sprite dac-arrow-right"></i></button>
+            </footer>
+          </form>
+        </section>
+        <section class="dac-swap-section dac-right">
+          <div class="dac-modal-content">
+            <p class="newsletter-success-message">
+              You have successfully signed up for the latest Android developer news and tips.
+            </p>
+          </div>
+        </section>
+      </div>
+    </div>
+  </div>
+</div> <!-- end footer -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end .cols --> 
+</div> <!-- end body-content --> 
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/android/support/wearable/view/SimpleAnimatorListener.html b/docs/html/reference/android/support/wearable/view/SimpleAnimatorListener.html
index 9940f3b..4908df6 100644
--- a/docs/html/reference/android/support/wearable/view/SimpleAnimatorListener.html
+++ b/docs/html/reference/android/support/wearable/view/SimpleAnimatorListener.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -897,7 +904,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1099,7 +1106,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.animation.Animator.AnimatorListener" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.animation.Animator.AnimatorListener-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
diff --git a/docs/html/reference/android/support/wearable/view/WatchViewStub.OnLayoutInflatedListener.html b/docs/html/reference/android/support/wearable/view/WatchViewStub.OnLayoutInflatedListener.html
index 9492429..2cf210d 100644
--- a/docs/html/reference/android/support/wearable/view/WatchViewStub.OnLayoutInflatedListener.html
+++ b/docs/html/reference/android/support/wearable/view/WatchViewStub.OnLayoutInflatedListener.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
diff --git a/docs/html/reference/android/support/wearable/view/WatchViewStub.html b/docs/html/reference/android/support/wearable/view/WatchViewStub.html
index 170a165..9b191bb 100644
--- a/docs/html/reference/android/support/wearable/view/WatchViewStub.html
+++ b/docs/html/reference/android/support/wearable/view/WatchViewStub.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -146,7 +151,7 @@
 
 </head>
 
-<body class="gc-documentation 
+<body class="gc-documentation
   develop reference" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
@@ -221,13 +226,13 @@
           </a>
 
         <ul class="dac-header-crumbs">
-          
+
           <li class="dac-header-crumbs-item"><span class="dac-header-crumbs-link current ">WatchViewStub</a></li>
         </ul>
 
-        
-        
-        
+
+
+
   <div class="dac-header-search" id="search-container">
     <div class="dac-header-search-inner">
       <div class="dac-sprite dac-search dac-header-search-btn" id="search-btn"></div>
@@ -267,7 +272,7 @@
     </div>
   </div>
 
-        
+
 
         <a class="dac-header-console-btn" href="https://play.google.com/apps/publish/">
           <span class="dac-sprite dac-google-play"></span>
@@ -284,7 +289,7 @@
     </div>
   </div> <!--end header-wrapper -->
 
-  
+
   <!-- Navigation-->
   <nav class="dac-nav">
     <div class="dac-nav-dimmer" data-dac-toggle-nav></div>
@@ -370,7 +375,7 @@
           <li class="dac-nav-item google">
             <a class="dac-nav-link" href="../../../../../google/index.html">Google Services</a>
           </li>
-          
+
           <li class="dac-nav-item preview">
             <a class="dac-nav-link" href="../../../../../preview/index.html">Preview</a>
           </li>
@@ -407,7 +412,7 @@
     </ul>
   </nav>
   <!-- end navigation-->
-  
+
 
 
 
@@ -439,7 +444,7 @@
             <div id="packages-nav" class="scroll-pane">
 
               <ul>
-                
+
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/wearable/package-summary.html">android.support.wearable</a></li>
     <li class="api apilevel-">
@@ -465,10 +470,11 @@
 
 
             <ul>
-              
-              
+
+
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -481,9 +487,10 @@
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnScrollListener.html">WearableListView.OnScrollListener</a></li>
       </ul>
     </li>
-              
+
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -511,9 +518,9 @@
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.ViewHolder.html">WearableListView.ViewHolder</a></li>
       </ul>
     </li>
-              
-              
-              
+
+
+
             </ul><br/>
 
 
@@ -556,7 +563,7 @@
         });
     </script>
 
-     
+
 
 
 
@@ -566,74 +573,74 @@
 
 
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-   
-  
-  
-  
 
-  
-   
-  
-  
-   
-  
-  
-   
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 <div class="sum-details-links">
@@ -641,7 +648,7 @@
 Summary:
 
   <a href="#nestedclasses">Nested Classes</a>
-  
+
 
 
 
@@ -649,25 +656,25 @@
 
 
   &#124; <a href="#inhconstants">Inherited Constants</a>
-  
+
 
 
 
   &#124; <a href="#inhfields">Inherited Fields</a>
-  
+
 
 
   &#124; <a href="#pubctors">Ctors</a>
-  
+
 
 
 
   &#124; <a href="#pubmethods">Methods</a>
-  
+
 
 
   &#124; <a href="#promethods">Protected Methods</a>
-  
+
 
 
   &#124; <a href="#inhmethods">Inherited Methods</a>
@@ -676,9 +683,9 @@
 
 </div><!-- end sum-details-links -->
 <div class="api-level">
-  
-  
-  
+
+
+
 
 </div>
 </div><!-- end api-info-block -->
@@ -688,38 +695,38 @@
 
 <div id="jd-header">
     public
-     
-     
-    
+
+
+
     class
 <h1 itemprop="name">WatchViewStub</h1>
 
 
 
-  
-  
-  
 
-  
-  
-  
 
-  
-  
-  
 
-  
+
+
+
+
+
+
+
+
+
+
     extends FrameLayout<br/>
-  
-  
-  
-
-  
-  
-  
 
 
-    
+
+
+
+
+
+
+
+
 
 
 </div><!-- end header -->
@@ -731,54 +738,54 @@
 
 
     <tr>
-         	
+
         <td colspan="5" class="jd-inheritance-class-cell">java.lang.Object</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="4" class="jd-inheritance-class-cell">android.view.View</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="3" class="jd-inheritance-class-cell">android.view.ViewGroup</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="2" class="jd-inheritance-class-cell">android.widget.FrameLayout</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="1" class="jd-inheritance-class-cell">android.support.wearable.view.WatchViewStub</td>
     </tr>
-    
+
 
 </table>
 
@@ -830,24 +837,24 @@
 <table id="nestedclasses" class="jd-sumtable"><tr><th colspan="12">Nested Classes</th></tr>
 
 
-  
+
     <tr class="alt-color api apilevel-" >
       <td class="jd-typecol"><nobr>
-        
-         
-         
-        
+
+
+
+
         interface</nobr></td>
       <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.OnLayoutInflatedListener.html">WatchViewStub.OnLayoutInflatedListener</a></td>
       <td class="jd-descrcol" width="100%">
         Listener for detecting when internal layout inflation has completed.&nbsp;
-        
-    
+
+
 
       </td>
     </tr>
-    
-    
+
+
 
 
 
@@ -877,7 +884,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.ViewGroup" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.ViewGroup-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup
 <div id="inherited-constants-android.view.ViewGroup">
@@ -886,129 +893,129 @@
   </div>
   <div id="inherited-constants-android.view.ViewGroup-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CLIP_TO_PADDING_MASK</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_AFTER_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_BEFORE_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_BLOCK_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_MODE_CLIP_BOUNDS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_MODE_OPTICAL_BOUNDS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_ALL_CACHES</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_ANIMATION_CACHE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_NO_CACHE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_SCROLLING_CACHE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
 </table>
   </div>
 </div>
@@ -1021,7 +1028,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-constants-android.view.View">
@@ -1030,957 +1037,1065 @@
   </div>
   <div id="inherited-constants-android.view.View-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_ASSERTIVE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_NONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_POLITE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">DRAWING_CACHE_QUALITY_AUTO</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">DRAWING_CACHE_QUALITY_HIGH</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">DRAWING_CACHE_QUALITY_LOW</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FIND_VIEWS_WITH_CONTENT_DESCRIPTION</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FIND_VIEWS_WITH_TEXT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUSABLES_ALL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUSABLES_TOUCH_MODE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_BACKWARD</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_DOWN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_FORWARD</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_LEFT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_RIGHT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_UP</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">GONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">HAPTIC_FEEDBACK_ENABLED</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_AUTO</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_NO</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_YES</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">INVISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">KEEP_SCREEN_ON</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYER_TYPE_HARDWARE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYER_TYPE_NONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYER_TYPE_SOFTWARE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_HEIGHT_STATE_SHIFT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_SIZE_MASK</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_STATE_MASK</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_STATE_TOO_SMALL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">NO_ID</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">OVER_SCROLL_ALWAYS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">OVER_SCROLL_IF_CONTENT_SCROLLS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">OVER_SCROLL_NEVER</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCREEN_STATE_OFF</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCREEN_STATE_ON</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_INSIDE_INSET</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_INSIDE_OVERLAY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_OUTSIDE_INSET</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_OUTSIDE_OVERLAY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBAR_POSITION_DEFAULT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBAR_POSITION_LEFT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBAR_POSITION_RIGHT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_AXIS_HORIZONTAL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_AXIS_NONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_AXIS_VERTICAL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_BOTTOM</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_END</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_START</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_TOP</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SOUND_EFFECTS_ENABLED</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">STATUS_BAR_HIDDEN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">STATUS_BAR_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_FULLSCREEN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_HIDE_NAVIGATION</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_IMMERSIVE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_IMMERSIVE_STICKY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_STABLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LIGHT_STATUS_BAR</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_LAYOUT_FLAGS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_CENTER</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_GRAVITY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_INHERIT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_END</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_START</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_END</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_START</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_ANY_RTL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_LTR</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_RTL</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">VIEW_LOG_TAG</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">VISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
 </table>
   </div>
 </div>
@@ -2022,7 +2137,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-fields-android.view.View">
@@ -2031,9 +2146,9 @@
   </div>
   <div id="inherited-fields-android.view.View-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2042,14 +2157,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ALPHA</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2058,14 +2173,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">EMPTY_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2074,14 +2189,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2090,14 +2205,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2106,14 +2221,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2122,14 +2237,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2138,14 +2253,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2154,14 +2269,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2170,14 +2285,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2186,14 +2301,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2202,14 +2317,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2218,14 +2333,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2234,14 +2349,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2250,14 +2365,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2266,14 +2381,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2282,14 +2397,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2298,14 +2413,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2314,14 +2429,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2330,14 +2445,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2346,14 +2461,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2362,14 +2477,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2378,14 +2493,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2394,14 +2509,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2410,14 +2525,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2426,14 +2541,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2442,14 +2557,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2458,14 +2573,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2474,14 +2589,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2490,14 +2605,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2506,14 +2621,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2522,14 +2637,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ROTATION</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2538,14 +2653,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ROTATION_X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2554,14 +2669,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ROTATION_Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2570,14 +2685,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">SCALE_X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2586,14 +2701,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">SCALE_Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2602,14 +2717,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2618,14 +2733,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2634,14 +2749,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">TRANSLATION_X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2650,14 +2765,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">TRANSLATION_Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2666,14 +2781,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">TRANSLATION_Z</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2682,14 +2797,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2698,14 +2813,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2714,14 +2829,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2730,14 +2845,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">Z</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
 </table>
   </div>
 </div>
@@ -2766,51 +2881,51 @@
 
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             </nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.html#WatchViewStub(android.content.Context)">WatchViewStub</a></span>(Context context)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             </nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.html#WatchViewStub(android.content.Context, android.util.AttributeSet)">WatchViewStub</a></span>(Context context, AttributeSet attrs)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             </nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.html#WatchViewStub(android.content.Context, android.util.AttributeSet, int)">WatchViewStub</a></span>(Context context, AttributeSet attrs, int defStyle)</nobr>
-        
+
   </td></tr>
 
 
@@ -2827,105 +2942,105 @@
 
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.html#onApplyWindowInsets(android.view.WindowInsets)">onApplyWindowInsets</a></span>(WindowInsets insets)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.html#onMeasure(int, int)">onMeasure</a></span>(int widthMeasureSpec, int heightMeasureSpec)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.html#setOnLayoutInflatedListener(android.support.wearable.view.WatchViewStub.OnLayoutInflatedListener)">setOnLayoutInflatedListener</a></span>(<a href="../../../../../reference/android/support/wearable/view/WatchViewStub.OnLayoutInflatedListener.html">WatchViewStub.OnLayoutInflatedListener</a> listener)</nobr>
-        
+
         <div class="jd-descrdiv">
           Set a listener to be notified when one of the specified sub-layouts is inflated into
  this stub container.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.html#setRectLayout(int)">setRectLayout</a></span>(int resId)</nobr>
-        
+
         <div class="jd-descrdiv">
           Set a layout resource to be inflated when this stub is within a rectangular container.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.html#setRoundLayout(int)">setRoundLayout</a></span>(int resId)</nobr>
-        
+
         <div class="jd-descrdiv">
           Set a layout resource to be inflated when this stub is within a round container.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
@@ -2940,35 +3055,35 @@
 
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.html#onAttachedToWindow()">onAttachedToWindow</a></span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.html#onLayout(boolean, int, int, int, int)">onLayout</a></span>(boolean changed, int left, int top, int right, int bottom)</nobr>
-        
+
   </td></tr>
 
 
@@ -2989,7 +3104,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.widget.FrameLayout" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.widget.FrameLayout-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -3001,454 +3116,198 @@
   </div>
   <div id="inherited-methods-android.widget.FrameLayout-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">checkLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">draw</span>(Canvas arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">drawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">drawableStateChanged</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">gatherTransparentRegion</span>(Region arg0)</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateDefaultLayoutParams</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(AttributeSet arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getConsiderGoneChildrenWhenMeasuring</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            Drawable</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getForeground</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getForegroundGravity</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            ColorStateList</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getForegroundTintList</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            PorterDuff.Mode</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">getForegroundTintMode</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasureAllChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">jumpDrawablesToCurrentState</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onInitializeAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onInitializeAccessibilityNodeInfo</span>(AccessibilityNodeInfo arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onLayout</span>(boolean arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onMeasure</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onSizeChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMeasureAllChildren</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setVisibility</span>(int arg0)</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">shouldDelayChildPressedState</span>()</nobr>
-        
-  </td></tr>
 
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            boolean</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">verifyDrawable</span>(Drawable arg0)</nobr>
-        
   </td></tr>
 
 
@@ -3475,2598 +3334,2647 @@
   </div>
   <div id="inherited-methods-android.view.ViewGroup-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addChildrenForAccessibility</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addStatesFromChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addTouchables</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addViewInLayout</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addViewInLayout</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">attachLayoutAnimationParameters</span>(View arg0, ViewGroup.LayoutParams arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">attachViewToParent</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">bringChildToFront</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canAnimate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+
         <span class="sympad">checkLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childDrawableStateChanged</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childHasTransientStateChanged</span>(View arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">cleanupLayoutState</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearChildFocus</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearDisappearingChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">debug</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachAllViewsFromParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachViewFromParent</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachViewFromParent</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachViewsFromParent</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchApplyWindowInsets</span>(WindowInsets arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchConfigurationChanged</span>(Configuration arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDisplayHint</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDragEvent</span>(DragEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDraw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDrawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchFreezeSelfOnly</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericFocusedEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericPointerEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEventPreIme</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyShortcutEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetActivated</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetPressed</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetSelected</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSystemUiVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchThawSelfOnly</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTrackballEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchUnhandledMove</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchVisibilityChanged</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowFocusChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowSystemUiVisiblityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawChild</span>(Canvas arg0, View arg1, long arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawableStateChanged</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">endViewTransition</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewsWithText</span>(ArrayList&lt;View&gt; arg0, CharSequence arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusSearch</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusableViewAvailable</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">gatherTransparentRegion</span>(Region arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateDefaultLayoutParams</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(AttributeSet arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildAt</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildCount</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildDrawingOrder</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildMeasureSpec</span>(int arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildStaticTransformation</span>(View arg0, Transformation arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildVisibleRect</span>(View arg0, Rect arg1, Point arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipToPadding</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDescendantFocusability</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFocusedChild</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             LayoutAnimationController</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Animation.AnimationListener</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutAnimationListener</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             LayoutTransition</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutTransition</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNestedScrollAxes</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewOverlay</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOverlay</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPersistentDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTouchscreenBlocksFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocusable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasTransientState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">indexOfChild</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChild</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChildInParent</span>(int[] arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAlwaysDrawnWithCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAnimationCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isChildrenDrawingOrderEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isChildrenDrawnWithCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isMotionEventSplittingEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTransitionGroup</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">jumpDrawablesToCurrentState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">layout</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measureChild</span>(View arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measureChildWithMargins</span>(View arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measureChildren</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notifySubtreeAccessibilityStateChanged</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetDescendantRectToMyCoords</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetRectIntoDescendantCoords</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationEnd</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationStart</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAttachedToWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateDrawableState</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDetachedFromWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInterceptHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInterceptTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onLayout</span>(boolean arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedFling</span>(View arg0, float arg1, float arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreFling</span>(View arg0, float arg1, float arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPrePerformAccessibilityAction</span>(View arg0, int arg1, Bundle arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreScroll</span>(View arg0, int arg1, int arg2, int[] arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScroll</span>(View arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScrollAccepted</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRequestFocusInDescendants</span>(int arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRequestSendAccessibilityEvent</span>(View arg0, AccessibilityEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStartNestedScroll</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStopNestedScroll</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewAdded</span>(View arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewRemoved</span>(View arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">recomputeViewAttributes</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeAllViews</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeAllViewsInLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeDetachedView</span>(View arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeView</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViewAt</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViewInLayout</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViews</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViewsInLayout</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildFocus</span>(View arg0, View arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildRectangleOnScreen</span>(View arg0, Rect arg1, boolean arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestDisallowInterceptTouchEvent</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>(int arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestSendAccessibilityEvent</span>(View arg0, AccessibilityEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestTransparentRegion</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scheduleLayoutAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAddStatesFromChildren</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAlwaysDrawnWithCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAnimationCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setChildrenDrawingCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setChildrenDrawingOrderEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setChildrenDrawnWithCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipChildren</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipToPadding</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDescendantFocusability</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutAnimation</span>(LayoutAnimationController arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutAnimationListener</span>(Animation.AnimationListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutMode</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutTransition</span>(LayoutTransition arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMotionEventSplittingEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnHierarchyChangeListener</span>(ViewGroup.OnHierarchyChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPersistentDrawingCache</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setStaticTransformationsEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTouchscreenBlocksFocus</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTransitionGroup</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">shouldDelayChildPressedState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">showContextMenuForChild</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startLayoutAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startViewTransition</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">updateViewLayout</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -6081,7 +5989,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -6093,7718 +6001,8102 @@
   </div>
   <div id="inherited-methods-android.view.View-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addChildrenForAccessibility</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addOnAttachStateChangeListener</span>(View.OnAttachStateChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addOnLayoutChangeListener</span>(View.OnLayoutChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addTouchables</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewPropertyAnimator</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">animate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">announceForAccessibility</span>(CharSequence arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">awakenScrollBars</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">awakenScrollBars</span>(int arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">awakenScrollBars</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">bringToFront</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">buildDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">buildDrawingCache</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">buildLayer</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">callOnClick</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canScrollHorizontally</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canScrollVertically</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">cancelLongPress</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">cancelPendingInputEvents</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">checkInputConnectionProxy</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">combineMeasuredStates</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollExtent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollRange</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeScroll</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeSystemWindowInsets</span>(WindowInsets arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollExtent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollRange</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             AccessibilityNodeInfo</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">createAccessibilityNodeInfo</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">createContextMenu</span>(ContextMenu arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">destroyDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchApplyWindowInsets</span>(WindowInsets arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchConfigurationChanged</span>(Configuration arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDisplayHint</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDragEvent</span>(DragEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDraw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDrawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericFocusedEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericMotionEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericPointerEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEventPreIme</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyShortcutEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedFling</span>(float arg0, float arg1, boolean arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedPreFling</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedPrePerformAccessibilityAction</span>(int arg0, Bundle arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedPreScroll</span>(int arg0, int arg1, int[] arg2, int[] arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedScroll</span>(int arg0, int arg1, int arg2, int arg3, int[] arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchPopulateAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetActivated</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetPressed</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetSelected</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSystemUiVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTrackballEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchUnhandledMove</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchVisibilityChanged</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowFocusChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowSystemUiVisiblityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">draw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawableStateChanged</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewById</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewWithTag</span>(Object arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewsWithText</span>(ArrayList&lt;View&gt; arg0, CharSequence arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">fitSystemWindows</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusSearch</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">forceLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateViewId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityLiveRegion</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             AccessibilityNodeProvider</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityNodeProvider</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityTraversalAfter</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityTraversalBefore</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAlpha</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Animation</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             IBinder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getApplicationWindowToken</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Drawable</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBackground</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ColorStateList</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBackgroundTintList</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             PorterDuff.Mode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBackgroundTintMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBaseline</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBottom</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBottomFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBottomPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getCameraDistance</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Rect</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipBounds</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>(Rect arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipToOutline</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             CharSequence</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getContentDescription</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             Context</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getContext</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ContextMenu.ContextMenuInfo</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getContextMenuInfo</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDefaultSize</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Display</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDisplay</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawableState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Bitmap</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCache</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Bitmap</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCacheBackgroundColor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCacheQuality</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             long</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingTime</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getElevation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFilterTouchesWhenObscured</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFitsSystemWindows</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ArrayList&lt;View&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFocusables</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFocusedRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForeground</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundGravity</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintList</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintMode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getGlobalVisibleRect</span>(Rect arg0, Point arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getGlobalVisibleRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Handler</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHandler</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHitRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHorizontalFadingEdgeLength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHorizontalScrollbarHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getImportantForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getKeepScreenOn</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             KeyEvent.DispatcherState</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getKeyDispatcherState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLabelFor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayerType</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutParams</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLeft</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLeftFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLeftPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLocalVisibleRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLocationInWindow</span>(int[] arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLocationOnScreen</span>(int[] arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Matrix</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMatrix</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredHeightAndState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredWidthAndState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMinimumHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMinimumWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusDownId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusForwardId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusLeftId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusRightId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusUpId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View.OnFocusChangeListener</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOnFocusChangeListener</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewOutlineProvider</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOutlineProvider</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOverScrollMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewOverlay</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOverlay</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingBottom</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingEnd</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingLeft</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingRight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingStart</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingTop</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParentForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPivotX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPivotY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Resources</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getResources</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRightFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRightPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRootView</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootWindowInsets</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRotation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRotationX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRotationY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScaleX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScaleY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarDefaultDelayBeforeFade</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarFadeDuration</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarSize</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarStyle</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollIndicators</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSolidColor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             StateListAnimator</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getStateListAnimator</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSuggestedMinimumHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSuggestedMinimumWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSystemUiVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Object</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTag</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Object</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTag</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTop</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTopFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTopPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             TouchDelegate</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTouchDelegate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ArrayList&lt;View&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTouchables</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTransitionName</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTranslationX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTranslationY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTranslationZ</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVerticalFadingEdgeLength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVerticalScrollbarPosition</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVerticalScrollbarWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewTreeObserver</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getViewTreeObserver</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowAttachCount</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowId</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowSystemUiVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             IBinder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowToken</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowVisibleDisplayFrame</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getZ</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocusable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasNestedScrollingParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasOnClickListeners</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasOverlappingRendering</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasTransientState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasWindowFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">inflate</span>(Context arg0, int arg1, ViewGroup arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidate</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidate</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateOutline</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAccessibilityFocused</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isActivated</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAttachedToWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isClickable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isContextClickable</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isDirty</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isDrawingCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isDuplicateParentStateEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isFocusable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isFocusableInTouchMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isFocused</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHapticFeedbackEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHardwareAccelerated</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHorizontalFadingEdgeEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHorizontalScrollBarEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHovered</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isImportantForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isInEditMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isInLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isInTouchMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLaidOut</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutRequested</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLongClickable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isNestedScrollingEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isOpaque</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isPaddingOffsetRequired</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isPaddingRelative</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isPressed</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSaveEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSaveFromParentEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isScrollContainer</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isScrollbarFadingEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSelected</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isShown</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSoundEffectsEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextAlignmentResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isVerticalFadingEdgeEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isVerticalScrollBarEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">jumpDrawablesToCurrentState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">layout</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measure</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">mergeDrawableStates</span>(int[] arg0, int[] arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetLeftAndRight</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetTopAndBottom</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAnimationEnd</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAnimationStart</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onApplyWindowInsets</span>(WindowInsets arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAttachedToWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCancelPendingInputEvents</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCheckIsTextEditor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onConfigurationChanged</span>(Configuration arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateContextMenu</span>(ContextMenu arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateDrawableState</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             InputConnection</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateInputConnection</span>(EditorInfo arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDetachedFromWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDisplayHint</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDragEvent</span>(DragEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDraw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawForeground</span>(Canvas arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDrawScrollBars</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFilterTouchEventForSecurity</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFinishInflate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFinishTemporaryDetach</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFocusChanged</span>(boolean arg0, int arg1, Rect arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onGenericMotionEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onHoverChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInitializeAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInitializeAccessibilityNodeInfo</span>(AccessibilityNodeInfo arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyDown</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyLongPress</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyMultiple</span>(int arg0, int arg1, KeyEvent arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyPreIme</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyShortcut</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyUp</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onLayout</span>(boolean arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onMeasure</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onOverScrolled</span>(int arg0, int arg1, boolean arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onPopulateAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideVirtualStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRtlPropertiesChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Parcelable</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSaveInstanceState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onScreenStateChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onScrollChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSetAlpha</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSizeChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStartTemporaryDetach</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onTrackballEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onVisibilityChanged</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onWindowFocusChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onWindowSystemUiVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onWindowVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">overScrollBy</span>(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, boolean arg8)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performAccessibilityAction</span>(int arg0, Bundle arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performClick</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performContextClick</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performHapticFeedback</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performHapticFeedback</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performLongClick</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">playSoundEffect</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">post</span>(Runnable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postDelayed</span>(Runnable arg0, long arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidate</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateDelayed</span>(long arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateDelayed</span>(long arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateOnAnimation</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateOnAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postOnAnimation</span>(Runnable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postOnAnimationDelayed</span>(Runnable arg0, long arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">refreshDrawableState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeCallbacks</span>(Runnable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeOnAttachStateChangeListener</span>(View.OnAttachStateChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeOnLayoutChangeListener</span>(View.OnLayoutChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestApplyInsets</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFitSystemWindows</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>(int arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocusFromTouch</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestRectangleOnScreen</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestRectangleOnScreen</span>(Rect arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestUnbufferedDispatch</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">resolveSize</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">resolveSizeAndState</span>(int arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">restoreHierarchyState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">saveHierarchyState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scheduleDrawable</span>(Drawable arg0, Runnable arg1, long arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scrollBy</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scrollTo</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEvent</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEventUnchecked</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityDelegate</span>(View.AccessibilityDelegate arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityLiveRegion</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityTraversalAfter</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityTraversalBefore</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setActivated</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAlpha</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAnimation</span>(Animation arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackground</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundColor</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundResource</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundTintList</span>(ColorStateList arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBottom</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setCameraDistance</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClickable</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipBounds</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipToOutline</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setContentDescription</span>(CharSequence arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setContextClickable</span>(boolean arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheQuality</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDuplicateParentStateEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setElevation</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFadingEdgeLength</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFilterTouchesWhenObscured</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFitsSystemWindows</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFocusable</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFocusableInTouchMode</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHapticFeedbackEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHasTransientState</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHorizontalFadingEdgeEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHorizontalScrollBarEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHovered</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setImportantForAccessibility</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setKeepScreenOn</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLabelFor</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayerPaint</span>(Paint arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayerType</span>(int arg0, Paint arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutDirection</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLeft</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLongClickable</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMeasuredDimension</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMinimumHeight</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMinimumWidth</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNestedScrollingEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusDownId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusForwardId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusLeftId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusRightId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusUpId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnApplyWindowInsetsListener</span>(View.OnApplyWindowInsetsListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnClickListener</span>(View.OnClickListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnContextClickListener</span>(View.OnContextClickListener arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnCreateContextMenuListener</span>(View.OnCreateContextMenuListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnDragListener</span>(View.OnDragListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnFocusChangeListener</span>(View.OnFocusChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnGenericMotionListener</span>(View.OnGenericMotionListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnHoverListener</span>(View.OnHoverListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnKeyListener</span>(View.OnKeyListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnLongClickListener</span>(View.OnLongClickListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnScrollChangeListener</span>(View.OnScrollChangeListener arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnTouchListener</span>(View.OnTouchListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOutlineProvider</span>(ViewOutlineProvider arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOverScrollMode</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPadding</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPaddingRelative</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPivotX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPivotY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPressed</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRight</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRotation</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRotationX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRotationY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSaveEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSaveFromParentEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScaleX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScaleY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarDefaultDelayBeforeFade</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarFadeDuration</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarSize</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarStyle</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollContainer</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollX</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollY</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollbarFadingEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSelected</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSoundEffectsEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setStateListAnimator</span>(StateListAnimator arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSystemUiVisibility</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTag</span>(int arg0, Object arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTag</span>(Object arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTextAlignment</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTextDirection</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTop</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTouchDelegate</span>(TouchDelegate arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTransitionName</span>(String arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTranslationX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTranslationY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTranslationZ</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVerticalFadingEdgeEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVerticalScrollBarEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVerticalScrollbarPosition</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVisibility</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setWillNotCacheDrawing</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setWillNotDraw</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setZ</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">showContextMenu</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionMode</span>(ActionMode.Callback arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startAnimation</span>(Animation arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startDrag</span>(ClipData arg0, View.DragShadowBuilder arg1, Object arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startNestedScroll</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">stopNestedScroll</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">toString</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">unscheduleDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">unscheduleDrawable</span>(Drawable arg0, Runnable arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">verifyDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">willNotCacheDrawing</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">willNotDraw</span>()</nobr>
-        
+
   </td></tr>
 
 
@@ -13819,7 +14111,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -13831,182 +14123,182 @@
   </div>
   <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Object</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clone</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">equals</span>(Object arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">finalize</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             Class&lt;?&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClass</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hashCode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notify</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notifyAll</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">toString</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>(long arg0)</nobr>
-        
+
   </td></tr>
 
 
@@ -14021,7 +14313,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewParent" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewParent-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14033,662 +14325,678 @@
   </div>
   <div id="inherited-methods-android.view.ViewParent-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">bringChildToFront</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childDrawableStateChanged</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childHasTransientStateChanged</span>(View arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearChildFocus</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">createContextMenu</span>(ContextMenu arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusSearch</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusableViewAvailable</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildVisibleRect</span>(View arg0, Rect arg1, Point arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParentForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChild</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChildInParent</span>(int[] arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutRequested</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextAlignmentResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notifySubtreeAccessibilityStateChanged</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedFling</span>(View arg0, float arg1, float arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreFling</span>(View arg0, float arg1, float arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPrePerformAccessibilityAction</span>(View arg0, int arg1, Bundle arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreScroll</span>(View arg0, int arg1, int arg2, int[] arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScroll</span>(View arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScrollAccepted</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStartNestedScroll</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStopNestedScroll</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">recomputeViewAttributes</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildFocus</span>(View arg0, View arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildRectangleOnScreen</span>(View arg0, Rect arg1, boolean arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestDisallowInterceptTouchEvent</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFitSystemWindows</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestSendAccessibilityEvent</span>(View arg0, AccessibilityEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestTransparentRegion</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">showContextMenuForChild</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -14703,7 +15011,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewManager" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewManager-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14715,54 +15023,54 @@
   </div>
   <div id="inherited-methods-android.view.ViewManager-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeView</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">updateViewLayout</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -14777,7 +15085,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.graphics.drawable.Drawable.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14789,54 +15097,54 @@
   </div>
   <div id="inherited-methods-android.graphics.drawable.Drawable.Callback-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scheduleDrawable</span>(Drawable arg0, Runnable arg1, long arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">unscheduleDrawable</span>(Drawable arg0, Runnable arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -14851,7 +15159,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14863,70 +15171,70 @@
   </div>
   <div id="inherited-methods-android.view.KeyEvent.Callback-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyDown</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyLongPress</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyMultiple</span>(int arg0, int arg1, KeyEvent arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyUp</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -14941,7 +15249,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.accessibility.AccessibilityEventSource" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.accessibility.AccessibilityEventSource-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14953,38 +15261,38 @@
   </div>
   <div id="inherited-methods-android.view.accessibility.AccessibilityEventSource-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEvent</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEventUnchecked</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
@@ -15030,30 +15338,30 @@
 
 <A NAME="WatchViewStub(android.content.Context)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
-        
+        public
+
+
+
+
+
       </span>
       <span class="sympad">WatchViewStub</span>
       <span class="normal">(Context context)</span>
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15062,30 +15370,30 @@
 
 <A NAME="WatchViewStub(android.content.Context, android.util.AttributeSet)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
-        
+        public
+
+
+
+
+
       </span>
       <span class="sympad">WatchViewStub</span>
       <span class="normal">(Context context, AttributeSet attrs)</span>
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15094,30 +15402,30 @@
 
 <A NAME="WatchViewStub(android.content.Context, android.util.AttributeSet, int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
-        
+        public
+
+
+
+
+
       </span>
       <span class="sympad">WatchViewStub</span>
       <span class="normal">(Context context, AttributeSet attrs, int defStyle)</span>
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15141,14 +15449,14 @@
 
 <A NAME="onApplyWindowInsets(android.view.WindowInsets)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         WindowInsets
       </span>
       <span class="sympad">onApplyWindowInsets</span>
@@ -15156,15 +15464,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15173,14 +15481,14 @@
 
 <A NAME="onMeasure(int, int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">onMeasure</span>
@@ -15188,15 +15496,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15205,14 +15513,14 @@
 
 <A NAME="setOnLayoutInflatedListener(android.support.wearable.view.WatchViewStub.OnLayoutInflatedListener)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">setOnLayoutInflatedListener</span>
@@ -15220,15 +15528,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Set a listener to be notified when one of the specified sub-layouts is inflated into
  this stub container.
 
@@ -15252,14 +15560,14 @@
 
 <A NAME="setRectLayout(int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">setRectLayout</span>
@@ -15267,15 +15575,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Set a layout resource to be inflated when this stub is within a rectangular container.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
@@ -15294,14 +15602,14 @@
 
 <A NAME="setRoundLayout(int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">setRoundLayout</span>
@@ -15309,15 +15617,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Set a layout resource to be inflated when this stub is within a round container.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
@@ -15345,14 +15653,14 @@
 
 <A NAME="onAttachedToWindow()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        protected 
-         
-         
-         
-         
+        protected
+
+
+
+
         void
       </span>
       <span class="sympad">onAttachedToWindow</span>
@@ -15360,15 +15668,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15377,14 +15685,14 @@
 
 <A NAME="onLayout(boolean, int, int, int, int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        protected 
-         
-         
-         
-         
+        protected
+
+
+
+
         void
       </span>
       <span class="sympad">onLayout</span>
@@ -15392,15 +15700,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -15436,22 +15744,22 @@
 
     <hr class="dac-footer-separator"/>
 
-    
+
       <p class="dac-footer-copyright">
-        
+
   Except as noted, this content is licensed under <a
   href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
   For details and restrictions, see the <a href="../../../../../license.html">
   Content License</a>.
       </p>
       <p class="dac-footer-build">
-        
-    Android Wearable Support&nbsp;r &mdash; 
+
+    Android Wearable Support&nbsp;r &mdash;
 <script src="../../../../../timestamp.js" type="text/javascript"></script>
 <script>document.write(BUILD_TIMESTAMP)</script>
 
       </p>
-    
+
 
     <p class="dac-footer-links">
       <a href="/about/index.html">About Android</a>
@@ -15593,8 +15901,8 @@
 
 </div><!-- end doc-content -->
 
-</div> <!-- end .cols --> 
-</div> <!-- end body-content --> 
+</div> <!-- end .cols -->
+</div> <!-- end body-content -->
 
 
 
diff --git a/docs/html/reference/android/support/wearable/view/WearableFrameLayout.LayoutParams.html b/docs/html/reference/android/support/wearable/view/WearableFrameLayout.LayoutParams.html
index fb54c95..255df70 100644
--- a/docs/html/reference/android/support/wearable/view/WearableFrameLayout.LayoutParams.html
+++ b/docs/html/reference/android/support/wearable/view/WearableFrameLayout.LayoutParams.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -810,7 +817,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.ViewGroup.LayoutParams" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.ViewGroup.LayoutParams-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup.LayoutParams
 <div id="inherited-constants-android.view.ViewGroup.LayoutParams">
@@ -1007,7 +1014,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.widget.FrameLayout.LayoutParams" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.widget.FrameLayout.LayoutParams-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.widget.FrameLayout.LayoutParams
 <div id="inherited-fields-android.widget.FrameLayout.LayoutParams">
@@ -1047,7 +1054,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.ViewGroup.MarginLayoutParams" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.ViewGroup.MarginLayoutParams-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup.MarginLayoutParams
 <div id="inherited-fields-android.view.ViewGroup.MarginLayoutParams">
@@ -1135,7 +1142,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.ViewGroup.LayoutParams" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.ViewGroup.LayoutParams-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup.LayoutParams
 <div id="inherited-fields-android.view.ViewGroup.LayoutParams">
@@ -1358,7 +1365,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewGroup.MarginLayoutParams" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewGroup.MarginLayoutParams-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1528,7 +1535,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewGroup.LayoutParams" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewGroup.LayoutParams-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1586,7 +1593,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/view/WearableFrameLayout.html b/docs/html/reference/android/support/wearable/view/WearableFrameLayout.html
index e269ab8..3192f03 100644
--- a/docs/html/reference/android/support/wearable/view/WearableFrameLayout.html
+++ b/docs/html/reference/android/support/wearable/view/WearableFrameLayout.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -878,7 +885,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.ViewGroup" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.ViewGroup-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup
 <div id="inherited-constants-android.view.ViewGroup">
@@ -1022,7 +1029,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-constants-android.view.View">
@@ -1648,6 +1655,78 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_BOTTOM</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_END</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_START</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_TOP</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SOUND_EFFECTS_ENABLED</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1768,7 +1847,7 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
-        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LIGHT_STATUS_BAR</td>
         <td class="jd-descrcol" width="100%">
           
           
@@ -1780,6 +1859,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1790,7 +1881,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_LAYOUT_FLAGS</td>
         <td class="jd-descrcol" width="100%">
@@ -1802,7 +1893,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_CENTER</td>
         <td class="jd-descrcol" width="100%">
@@ -1814,7 +1905,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_GRAVITY</td>
         <td class="jd-descrcol" width="100%">
@@ -1826,7 +1917,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_INHERIT</td>
         <td class="jd-descrcol" width="100%">
@@ -1838,7 +1929,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1850,7 +1941,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1862,7 +1953,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_END</td>
         <td class="jd-descrcol" width="100%">
@@ -1874,7 +1965,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_START</td>
         <td class="jd-descrcol" width="100%">
@@ -1886,7 +1977,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_ANY_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -1898,7 +1989,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG</td>
         <td class="jd-descrcol" width="100%">
@@ -1910,8 +2001,32 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_LTR</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_RTL</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1922,7 +2037,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
@@ -1934,7 +2049,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
@@ -1946,7 +2061,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
@@ -1958,7 +2073,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">VIEW_LOG_TAG</td>
         <td class="jd-descrcol" width="100%">
@@ -1970,7 +2085,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">VISIBLE</td>
         <td class="jd-descrcol" width="100%">
@@ -2021,7 +2136,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-fields-android.view.View">
@@ -3490,7 +3605,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewGroup" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewGroup-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -4156,7 +4271,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
         
   </td></tr>
 
@@ -4172,13 +4287,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4194,7 +4325,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4210,7 +4341,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4226,7 +4357,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4242,7 +4373,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4258,7 +4389,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4274,7 +4405,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4290,7 +4421,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4306,7 +4437,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4322,7 +4453,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4338,7 +4469,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4354,7 +4485,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4370,7 +4501,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4386,7 +4517,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4402,7 +4533,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4418,7 +4549,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4434,7 +4565,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4450,7 +4581,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4466,7 +4597,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4482,7 +4613,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4498,7 +4629,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4514,7 +4645,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4530,7 +4661,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4546,6 +4677,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -5164,38 +5311,6 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationEnd</span>()</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationStart</span>()</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAttachedToWindow</span>()</nobr>
         
   </td></tr>
@@ -5452,6 +5567,38 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewAdded</span>(View arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewRemoved</span>(View arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">recomputeViewAttributes</span>(View arg0)</nobr>
         
   </td></tr>
@@ -6057,10 +6204,10 @@
             
             
             
-            void</nobr>
+            ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">startLayoutAnimation</span>()</nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
         
   </td></tr>
 
@@ -6076,7 +6223,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">startViewTransition</span>(View arg0)</nobr>
+        <span class="sympad">startLayoutAnimation</span>()</nobr>
         
   </td></tr>
 
@@ -6092,6 +6239,22 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startViewTransition</span>(View arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">updateViewLayout</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
         
   </td></tr>
@@ -6108,7 +6271,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -7046,7 +7209,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
         
   </td></tr>
 
@@ -7062,13 +7225,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7084,7 +7263,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7100,7 +7279,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7116,7 +7295,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7132,7 +7311,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7148,7 +7327,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7164,7 +7343,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7180,7 +7359,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7196,7 +7375,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7212,7 +7391,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7228,7 +7407,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7244,7 +7423,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7260,7 +7439,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7276,7 +7455,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7292,7 +7471,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7308,7 +7487,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7324,7 +7503,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7340,7 +7519,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7356,7 +7535,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7372,7 +7551,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7388,7 +7567,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7404,7 +7583,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7420,6 +7599,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -7680,6 +7875,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>(Rect arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -7692,7 +7903,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7708,7 +7919,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7724,7 +7935,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7740,7 +7951,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7756,7 +7967,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7772,7 +7983,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7788,7 +7999,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7804,7 +8015,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7820,7 +8031,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7836,7 +8047,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7852,7 +8063,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7868,7 +8079,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7884,7 +8095,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7900,7 +8111,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7916,7 +8127,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7932,7 +8143,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7948,7 +8159,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7964,6 +8175,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForeground</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -7971,6 +8198,54 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundGravity</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintList</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintMode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -7980,7 +8255,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -7996,7 +8271,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8012,7 +8287,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8028,7 +8303,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8044,7 +8319,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8060,7 +8335,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8076,7 +8351,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8092,7 +8367,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8108,7 +8383,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8124,7 +8399,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8140,7 +8415,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8156,7 +8431,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8172,7 +8447,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8188,7 +8463,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8204,7 +8479,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8220,7 +8495,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8236,7 +8511,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8252,7 +8527,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8268,7 +8543,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8284,7 +8559,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8300,7 +8575,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8316,7 +8591,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8332,7 +8607,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8348,7 +8623,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8364,7 +8639,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8380,7 +8655,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8396,7 +8671,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8412,7 +8687,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8428,7 +8703,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8444,7 +8719,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8460,7 +8735,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8476,7 +8751,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8492,7 +8767,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8508,7 +8783,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8524,7 +8799,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8540,7 +8815,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8556,7 +8831,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8572,7 +8847,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8588,7 +8863,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8604,7 +8879,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8620,7 +8895,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8636,7 +8911,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8652,7 +8927,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8668,7 +8943,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8684,7 +8959,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8700,7 +8975,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8716,7 +8991,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8732,7 +9007,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8748,7 +9023,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8764,7 +9039,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8780,7 +9055,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8796,7 +9071,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8812,6 +9087,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootWindowInsets</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -8960,6 +9251,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollIndicators</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -8972,7 +9279,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -8988,7 +9295,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9004,7 +9311,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9020,7 +9327,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9036,7 +9343,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9052,7 +9359,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9068,7 +9375,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9084,7 +9391,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9100,7 +9407,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9116,7 +9423,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9132,7 +9439,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9148,7 +9455,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9164,7 +9471,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9180,7 +9487,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9196,7 +9503,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9212,7 +9519,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9228,7 +9535,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9244,7 +9551,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9260,7 +9567,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9276,7 +9583,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9292,7 +9599,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9308,7 +9615,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9324,7 +9631,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9340,7 +9647,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9356,7 +9663,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9372,7 +9679,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9388,7 +9695,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9404,7 +9711,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9420,7 +9727,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9436,7 +9743,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9452,7 +9759,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9468,7 +9775,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9484,7 +9791,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9500,7 +9807,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9516,7 +9823,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9532,7 +9839,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9548,7 +9855,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9564,7 +9871,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9580,7 +9887,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9596,7 +9903,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9612,7 +9919,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9628,7 +9935,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9644,7 +9951,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9660,7 +9967,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9676,7 +9983,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9692,7 +9999,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9708,7 +10015,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9724,7 +10031,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9740,7 +10047,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9756,7 +10063,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9772,7 +10079,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -9788,6 +10095,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isContextClickable</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -10688,6 +11011,22 @@
         <td class="jd-typecol"><nobr>
             
             
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawForeground</span>(Canvas arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
             final
             
             
@@ -10700,7 +11039,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10716,7 +11055,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10732,7 +11071,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10748,7 +11087,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10764,7 +11103,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10780,7 +11119,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10796,7 +11135,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10812,7 +11151,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10828,7 +11167,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10844,7 +11183,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10860,7 +11199,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10876,7 +11215,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10892,7 +11231,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10908,7 +11247,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10924,7 +11263,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10940,7 +11279,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10956,7 +11295,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10972,7 +11311,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -10988,7 +11327,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11004,6 +11343,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -11014,13 +11369,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideVirtualStructure</span>(ViewStructure arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11036,7 +11407,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11052,7 +11423,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11068,7 +11439,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11084,7 +11455,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11100,7 +11471,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11116,7 +11487,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11132,7 +11503,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11148,7 +11519,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11164,7 +11535,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11180,7 +11551,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11196,7 +11567,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11212,7 +11583,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11228,7 +11599,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11244,7 +11615,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11260,7 +11631,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -11276,6 +11647,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performContextClick</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -12182,7 +12569,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        <span class="sympad">setContextClickable</span>(boolean arg0)</nobr>
         
   </td></tr>
 
@@ -12198,13 +12585,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12220,7 +12623,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12236,7 +12639,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12252,7 +12655,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12268,7 +12671,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12284,7 +12687,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12300,7 +12703,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12316,7 +12719,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12332,7 +12735,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12348,6 +12751,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -12358,13 +12777,61 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHapticFeedbackEnabled</span>(boolean arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12380,7 +12847,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12396,7 +12863,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12412,7 +12879,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12428,7 +12895,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12444,7 +12911,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12460,7 +12927,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12476,7 +12943,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12492,7 +12959,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12508,7 +12975,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12524,7 +12991,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12540,7 +13007,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12556,7 +13023,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12572,7 +13039,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12588,7 +13055,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12604,7 +13071,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12620,7 +13087,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12636,7 +13103,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12652,7 +13119,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12668,7 +13135,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12684,7 +13151,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12700,7 +13167,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12716,7 +13183,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12732,7 +13199,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12748,7 +13215,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12764,6 +13231,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnContextClickListener</span>(View.OnContextClickListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -12886,7 +13369,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        <span class="sympad">setOnScrollChangeListener</span>(View.OnScrollChangeListener arg0)</nobr>
         
   </td></tr>
 
@@ -12902,13 +13385,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnTouchListener</span>(View.OnTouchListener arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12924,7 +13423,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12940,7 +13439,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12956,7 +13455,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12972,7 +13471,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -12988,7 +13487,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13004,7 +13503,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13020,7 +13519,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13036,7 +13535,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13052,7 +13551,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13068,7 +13567,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13084,7 +13583,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13100,7 +13599,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13116,7 +13615,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13132,7 +13631,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13148,7 +13647,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13164,7 +13663,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13180,7 +13679,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13196,7 +13695,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13212,7 +13711,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13228,6 +13727,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -13238,13 +13753,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollX</span>(int arg0)</nobr>
         
   </td></tr>
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13260,7 +13791,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13276,7 +13807,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13292,7 +13823,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13308,7 +13839,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13324,7 +13855,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13340,7 +13871,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13356,7 +13887,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13372,7 +13903,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13388,7 +13919,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13404,7 +13935,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13420,7 +13951,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13436,7 +13967,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13452,7 +13983,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13468,7 +13999,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13484,7 +14015,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13500,7 +14031,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13516,7 +14047,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13532,7 +14063,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13548,7 +14079,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13564,7 +14095,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13580,7 +14111,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13596,7 +14127,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13612,7 +14143,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13628,7 +14159,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13644,7 +14175,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -13660,6 +14191,22 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -13846,7 +14393,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -14048,7 +14595,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewParent" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewParent-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14714,6 +15261,22 @@
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1)</nobr>
         
   </td></tr>
@@ -14730,7 +15293,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewManager" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewManager-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14804,7 +15367,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.graphics.drawable.Drawable.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14878,7 +15441,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -14968,7 +15531,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.accessibility.AccessibilityEventSource" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.accessibility.AccessibilityEventSource-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
diff --git a/docs/html/reference/android/support/wearable/view/WearableListView.Adapter.html b/docs/html/reference/android/support/wearable/view/WearableListView.Adapter.html
index 0686ff2..34466c1 100644
--- a/docs/html/reference/android/support/wearable/view/WearableListView.Adapter.html
+++ b/docs/html/reference/android/support/wearable/view/WearableListView.Adapter.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -784,7 +791,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.v7.widget.RecyclerView.Adapter" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.v7.widget.RecyclerView.Adapter-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -954,7 +961,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">notifyItemInserted</span>(int arg0)</nobr>
+        <span class="sympad">notifyItemChanged</span>(int arg0, Object arg1)</nobr>
         
   </td></tr>
 
@@ -970,7 +977,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">notifyItemMoved</span>(int arg0, int arg1)</nobr>
+        <span class="sympad">notifyItemInserted</span>(int arg0)</nobr>
         
   </td></tr>
 
@@ -986,12 +993,44 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notifyItemMoved</span>(int arg0, int arg1)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notifyItemRangeChanged</span>(int arg0, int arg1)</nobr>
         
   </td></tr>
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notifyItemRangeChanged</span>(int arg0, int arg1, Object arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -1058,6 +1097,22 @@
 	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onBindViewHolder</span>(<a href="../../../../../reference/android/support/wearable/view/WearableListView.ViewHolder.html">WearableListView.ViewHolder</a> arg0, int arg1, List&lt;Object&gt; arg2)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
             abstract
             
             
@@ -1072,7 +1127,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -1088,7 +1143,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1104,7 +1159,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1120,7 +1175,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1136,7 +1191,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1152,7 +1207,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1168,7 +1223,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1184,7 +1239,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1200,7 +1255,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1226,7 +1281,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/view/WearableListView.ClickListener.html b/docs/html/reference/android/support/wearable/view/WearableListView.ClickListener.html
index 17431c4..bf87a1f 100644
--- a/docs/html/reference/android/support/wearable/view/WearableListView.ClickListener.html
+++ b/docs/html/reference/android/support/wearable/view/WearableListView.ClickListener.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
diff --git a/docs/html/reference/android/support/wearable/view/WearableListView.OnCenterProximityListener.html b/docs/html/reference/android/support/wearable/view/WearableListView.OnCenterProximityListener.html
index 936a163..9e21953 100644
--- a/docs/html/reference/android/support/wearable/view/WearableListView.OnCenterProximityListener.html
+++ b/docs/html/reference/android/support/wearable/view/WearableListView.OnCenterProximityListener.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
diff --git a/docs/html/reference/android/support/wearable/view/WearableListView.OnCentralPositionChangedListener.html b/docs/html/reference/android/support/wearable/view/WearableListView.OnCentralPositionChangedListener.html
index c49bbcc..f1331fa 100644
--- a/docs/html/reference/android/support/wearable/view/WearableListView.OnCentralPositionChangedListener.html
+++ b/docs/html/reference/android/support/wearable/view/WearableListView.OnCentralPositionChangedListener.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
diff --git a/docs/html/reference/android/support/wearable/view/WearableListView.OnScrollListener.html b/docs/html/reference/android/support/wearable/view/WearableListView.OnScrollListener.html
index 2871600..c9d45bf 100644
--- a/docs/html/reference/android/support/wearable/view/WearableListView.OnScrollListener.html
+++ b/docs/html/reference/android/support/wearable/view/WearableListView.OnScrollListener.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
diff --git a/docs/html/reference/android/support/wearable/view/WearableListView.ViewHolder.html b/docs/html/reference/android/support/wearable/view/WearableListView.ViewHolder.html
index 270d8d8..da41c81 100644
--- a/docs/html/reference/android/support/wearable/view/WearableListView.ViewHolder.html
+++ b/docs/html/reference/android/support/wearable/view/WearableListView.ViewHolder.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -469,6 +474,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -484,6 +490,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -756,7 +763,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.support.v7.widget.RecyclerView.ViewHolder" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.support.v7.widget.RecyclerView.ViewHolder-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.support.v7.widget.RecyclerView.ViewHolder
 <div id="inherited-fields-android.support.v7.widget.RecyclerView.ViewHolder">
@@ -841,7 +848,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.v7.widget.RecyclerView.ViewHolder" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.v7.widget.RecyclerView.ViewHolder-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1011,7 +1018,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/view/WearableListView.html b/docs/html/reference/android/support/wearable/view/WearableListView.html
index 7fb9565..5f42201 100644
--- a/docs/html/reference/android/support/wearable/view/WearableListView.html
+++ b/docs/html/reference/android/support/wearable/view/WearableListView.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -146,7 +151,7 @@
 
 </head>
 
-<body class="gc-documentation 
+<body class="gc-documentation
   develop reference" itemscope itemtype="http://schema.org/Article">
   <div id="doc-api-level" class="" style="display:none"></div>
   <a name="top"></a>
@@ -221,13 +226,13 @@
           </a>
 
         <ul class="dac-header-crumbs">
-          
+
           <li class="dac-header-crumbs-item"><span class="dac-header-crumbs-link current ">WearableListView</a></li>
         </ul>
 
-        
-        
-        
+
+
+
   <div class="dac-header-search" id="search-container">
     <div class="dac-header-search-inner">
       <div class="dac-sprite dac-search dac-header-search-btn" id="search-btn"></div>
@@ -267,7 +272,7 @@
     </div>
   </div>
 
-        
+
 
         <a class="dac-header-console-btn" href="https://play.google.com/apps/publish/">
           <span class="dac-sprite dac-google-play"></span>
@@ -284,7 +289,7 @@
     </div>
   </div> <!--end header-wrapper -->
 
-  
+
   <!-- Navigation-->
   <nav class="dac-nav">
     <div class="dac-nav-dimmer" data-dac-toggle-nav></div>
@@ -370,7 +375,7 @@
           <li class="dac-nav-item google">
             <a class="dac-nav-link" href="../../../../../google/index.html">Google Services</a>
           </li>
-          
+
           <li class="dac-nav-item preview">
             <a class="dac-nav-link" href="../../../../../preview/index.html">Preview</a>
           </li>
@@ -407,7 +412,7 @@
     </ul>
   </nav>
   <!-- end navigation-->
-  
+
 
 
 
@@ -439,7 +444,7 @@
             <div id="packages-nav" class="scroll-pane">
 
               <ul>
-                
+
     <li class="api apilevel-">
   <a href="../../../../../reference/android/support/wearable/package-summary.html">android.support.wearable</a></li>
     <li class="api apilevel-">
@@ -465,10 +470,11 @@
 
 
             <ul>
-              
-              
+
+
     <li><h2>Interfaces</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -481,9 +487,10 @@
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnScrollListener.html">WearableListView.OnScrollListener</a></li>
       </ul>
     </li>
-              
+
     <li><h2>Classes</h2>
       <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -511,9 +518,9 @@
           <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/WearableListView.ViewHolder.html">WearableListView.ViewHolder</a></li>
       </ul>
     </li>
-              
-              
-              
+
+
+
             </ul><br/>
 
 
@@ -556,7 +563,7 @@
         });
     </script>
 
-     
+
 
 
 
@@ -566,76 +573,90 @@
 
 
 
-  
-   
-  
-  
-   
-  
-  
-  
 
-  
-   
-  
-  
-   
-  
-  
-  
 
-  
-   
-  
-  
-   
-  
-  
-   
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-  
-  
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 <div class="sum-details-links">
@@ -643,7 +664,7 @@
 Summary:
 
   <a href="#nestedclasses">Nested Classes</a>
-  
+
 
 
 
@@ -651,21 +672,24 @@
 
 
   &#124; <a href="#inhconstants">Inherited Constants</a>
-  
+
 
 
 
   &#124; <a href="#inhfields">Inherited Fields</a>
-  
+
 
 
   &#124; <a href="#pubctors">Ctors</a>
-  
+
 
 
 
   &#124; <a href="#pubmethods">Methods</a>
-  
+
+
+
+  &#124; <a href="#promethods">Protected Methods</a>
 
 
 
@@ -675,9 +699,9 @@
 
 </div><!-- end sum-details-links -->
 <div class="api-level">
-  
-  
-  
+
+
+
 
 </div>
 </div><!-- end api-info-block -->
@@ -687,38 +711,38 @@
 
 <div id="jd-header">
     public
-     
-     
-    
+
+
+
     class
 <h1 itemprop="name">WearableListView</h1>
 
 
 
-  
-  
-  
 
-  
-  
-  
 
-  
-  
-  
 
-  
+
+
+
+
+
+
+
+
+
+
     extends RecyclerView<br/>
-  
-  
-  
-
-  
-  
-  
 
 
-    
+
+
+
+
+
+
+
+
 
 
 </div><!-- end header -->
@@ -730,54 +754,54 @@
 
 
     <tr>
-         	
+
         <td colspan="5" class="jd-inheritance-class-cell">java.lang.Object</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="4" class="jd-inheritance-class-cell">android.view.View</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="3" class="jd-inheritance-class-cell">android.view.ViewGroup</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="2" class="jd-inheritance-class-cell">android.support.v7.widget.RecyclerView</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;</td>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="1" class="jd-inheritance-class-cell">android.support.wearable.view.WearableListView</td>
     </tr>
-    
+
 
 </table>
 
@@ -835,111 +859,111 @@
 <table id="nestedclasses" class="jd-sumtable"><tr><th colspan="12">Nested Classes</th></tr>
 
 
-  
+
     <tr class="alt-color api apilevel-" >
       <td class="jd-typecol"><nobr>
-        
-         
-         
-        
+
+
+
+
         class</nobr></td>
       <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WearableListView.Adapter.html">WearableListView.Adapter</a></td>
       <td class="jd-descrcol" width="100%">
         Base class for adapters providing data for the WearableListView.&nbsp;
-        
-    
+
+
 
       </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
       <td class="jd-typecol"><nobr>
-        
-         
-         
-        
+
+
+
+
         interface</nobr></td>
       <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WearableListView.ClickListener.html">WearableListView.ClickListener</a></td>
       <td class="jd-descrcol" width="100%">
         Interface for listening for click events on WearableListView.&nbsp;
-        
-    
+
+
 
       </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
       <td class="jd-typecol"><nobr>
-        
-         
-         
-        
+
+
+
+
         interface</nobr></td>
       <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnCenterProximityListener.html">WearableListView.OnCenterProximityListener</a></td>
       <td class="jd-descrcol" width="100%">
         Interface for receiving callbacks when WearableListView children become or cease to be the
  central item.&nbsp;
-        
-    
+
+
 
       </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
       <td class="jd-typecol"><nobr>
-        
-         
-         
-        
+
+
+
+
         interface</nobr></td>
       <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnCentralPositionChangedListener.html">WearableListView.OnCentralPositionChangedListener</a></td>
       <td class="jd-descrcol" width="100%">
         A listener interface that can be added to the WearableListView to get notified when the
  central item is changed.&nbsp;
-        
-    
+
+
 
       </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
       <td class="jd-typecol"><nobr>
-        
-         
-         
-        
+
+
+
+
         interface</nobr></td>
       <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnScrollListener.html">WearableListView.OnScrollListener</a></td>
       <td class="jd-descrcol" width="100%">
         Interface for listening to WearableListView content scrolling.&nbsp;
-        
-    
+
+
 
       </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
       <td class="jd-typecol"><nobr>
-        
-         
-         
-        
+
+
+
+
         class</nobr></td>
       <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WearableListView.ViewHolder.html">WearableListView.ViewHolder</a></td>
       <td class="jd-descrcol" width="100%">
         Wrapper around items displayed in the list view.&nbsp;
-        
-    
+
+
 
       </td>
     </tr>
-    
-    
+
+
 
 
 
@@ -967,7 +991,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.support.v7.widget.RecyclerView" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.support.v7.widget.RecyclerView-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.support.v7.widget.RecyclerView
 <div id="inherited-constants-android.support.v7.widget.RecyclerView">
@@ -976,129 +1000,129 @@
   </div>
   <div id="inherited-constants-android.support.v7.widget.RecyclerView-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">HORIZONTAL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">INVALID_TYPE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">long</td>
         <td class="jd-linkcol">NO_ID</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">NO_POSITION</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_STATE_DRAGGING</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_STATE_IDLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_STATE_SETTLING</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TOUCH_SLOP_DEFAULT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TOUCH_SLOP_PAGING</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">VERTICAL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
 </table>
   </div>
 </div>
@@ -1111,7 +1135,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.ViewGroup" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.ViewGroup-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.ViewGroup
 <div id="inherited-constants-android.view.ViewGroup">
@@ -1120,129 +1144,129 @@
   </div>
   <div id="inherited-constants-android.view.ViewGroup-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CLIP_TO_PADDING_MASK</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_AFTER_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_BEFORE_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_BLOCK_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_MODE_CLIP_BOUNDS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_MODE_OPTICAL_BOUNDS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_ALL_CACHES</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_ANIMATION_CACHE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_NO_CACHE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PERSISTENT_SCROLLING_CACHE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
 </table>
   </div>
 </div>
@@ -1255,7 +1279,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-constants-android.view.View">
@@ -1264,957 +1288,1065 @@
   </div>
   <div id="inherited-constants-android.view.View-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_ASSERTIVE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_NONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">ACCESSIBILITY_LIVE_REGION_POLITE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">DRAWING_CACHE_QUALITY_AUTO</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">DRAWING_CACHE_QUALITY_HIGH</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">DRAWING_CACHE_QUALITY_LOW</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FIND_VIEWS_WITH_CONTENT_DESCRIPTION</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FIND_VIEWS_WITH_TEXT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUSABLES_ALL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUSABLES_TOUCH_MODE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_BACKWARD</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_DOWN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_FORWARD</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_LEFT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_RIGHT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">FOCUS_UP</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">GONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">HAPTIC_FEEDBACK_ENABLED</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_AUTO</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_NO</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">IMPORTANT_FOR_ACCESSIBILITY_YES</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">INVISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">KEEP_SCREEN_ON</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYER_TYPE_HARDWARE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYER_TYPE_NONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYER_TYPE_SOFTWARE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">LAYOUT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_HEIGHT_STATE_SHIFT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_SIZE_MASK</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_STATE_MASK</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MEASURED_STATE_TOO_SMALL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">NO_ID</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">OVER_SCROLL_ALWAYS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">OVER_SCROLL_IF_CONTENT_SCROLLS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">OVER_SCROLL_NEVER</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCREEN_STATE_OFF</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCREEN_STATE_ON</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_INSIDE_INSET</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_INSIDE_OVERLAY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_OUTSIDE_INSET</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBARS_OUTSIDE_OVERLAY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBAR_POSITION_DEFAULT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBAR_POSITION_LEFT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLLBAR_POSITION_RIGHT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_AXIS_HORIZONTAL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_AXIS_NONE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SCROLL_AXIS_VERTICAL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_BOTTOM</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_END</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_LEFT</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_RIGHT</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_START</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SCROLL_INDICATOR_TOP</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SOUND_EFFECTS_ENABLED</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">STATUS_BAR_HIDDEN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">STATUS_BAR_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_FULLSCREEN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_HIDE_NAVIGATION</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_IMMERSIVE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_IMMERSIVE_STICKY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LAYOUT_STABLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">SYSTEM_UI_FLAG_LIGHT_STATUS_BAR</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_LOW_PROFILE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_FLAG_VISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">SYSTEM_UI_LAYOUT_FLAGS</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_CENTER</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_GRAVITY</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_INHERIT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_END</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_TEXT_START</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_END</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_ALIGNMENT_VIEW_START</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_ANY_RTL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_LTR</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">TEXT_DIRECTION_FIRST_STRONG_RTL</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_INHERIT</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LOCALE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_LTR</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">TEXT_DIRECTION_RTL</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class=" api apilevel-" >
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">VIEW_LOG_TAG</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
-    <tr class="alt-color api apilevel-" >
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">VISIBLE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
 </table>
   </div>
 </div>
@@ -2233,6 +2365,10 @@
 
 
 
+
+
+
+
 </table>
 
 
@@ -2256,7 +2392,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-fields-android.view.View" class="jd-expando-trigger closed"
           ><img id="inherited-fields-android.view.View-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.view.View
 <div id="inherited-fields-android.view.View">
@@ -2265,9 +2401,9 @@
   </div>
   <div id="inherited-fields-android.view.View-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2276,14 +2412,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ALPHA</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2292,14 +2428,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">EMPTY_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2308,14 +2444,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2324,14 +2460,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2340,14 +2476,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2356,14 +2492,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2372,14 +2508,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2388,14 +2524,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2404,14 +2540,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2420,14 +2556,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">ENABLED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2436,14 +2572,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2452,14 +2588,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2468,14 +2604,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2484,14 +2620,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2500,14 +2636,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2516,14 +2652,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2532,14 +2668,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2548,14 +2684,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2564,14 +2700,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2580,14 +2716,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2596,14 +2732,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2612,14 +2748,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2628,14 +2764,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2644,14 +2780,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2660,14 +2796,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2676,14 +2812,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2692,14 +2828,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2708,14 +2844,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2724,14 +2860,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2740,14 +2876,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">PRESSED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2756,14 +2892,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ROTATION</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2772,14 +2908,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ROTATION_X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2788,14 +2924,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">ROTATION_Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2804,14 +2940,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">SCALE_X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2820,14 +2956,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">SCALE_Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2836,14 +2972,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">SELECTED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2852,14 +2988,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">SELECTED_WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2868,14 +3004,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">TRANSLATION_X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2884,14 +3020,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">TRANSLATION_Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2900,14 +3036,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">TRANSLATION_Z</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           protected
@@ -2916,14 +3052,14 @@
           int[]</nobr></td>
           <td class="jd-linkcol">WINDOW_FOCUSED_STATE_SET</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2932,14 +3068,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">X</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2948,14 +3084,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">Y</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -2964,14 +3100,14 @@
           Property&lt;View,&nbsp;Float&gt;</nobr></td>
           <td class="jd-linkcol">Z</td>
           <td class="jd-descrcol" width="100%">
-            
-            
-    
+
+
+
 
           </td>
       </tr>
-      
-    
+
+
 </table>
   </div>
 </div>
@@ -2990,6 +3126,10 @@
 
 
 
+
+
+
+
 </table>
 
 
@@ -3000,51 +3140,51 @@
 
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             </nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#WearableListView(android.content.Context)">WearableListView</a></span>(Context context)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             </nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#WearableListView(android.content.Context, android.util.AttributeSet)">WearableListView</a></span>(Context context, AttributeSet attrs)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             </nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#WearableListView(android.content.Context, android.util.AttributeSet, int)">WearableListView</a></span>(Context context, AttributeSet attrs, int defStyleAttr)</nobr>
-        
+
   </td></tr>
 
 
@@ -3061,411 +3201,473 @@
 
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#addOnCentralPositionChangedListener(android.support.wearable.view.WearableListView.OnCentralPositionChangedListener)">addOnCentralPositionChangedListener</a></span>(<a href="../../../../../reference/android/support/wearable/view/WearableListView.OnCentralPositionChangedListener.html">WearableListView.OnCentralPositionChangedListener</a> listener)</nobr>
-        
+
         <div class="jd-descrdiv">
           Adds a listener that will be called when the central item of the list changes.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#addOnScrollListener(android.support.wearable.view.WearableListView.OnScrollListener)">addOnScrollListener</a></span>(<a href="../../../../../reference/android/support/wearable/view/WearableListView.OnScrollListener.html">WearableListView.OnScrollListener</a> listener)</nobr>
-        
+
         <div class="jd-descrdiv">
           Adds a listener that will be called when the content of the list view is scrolled.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#animateToCenter()">animateToCenter</a></span>()</nobr>
-        
+
         <div class="jd-descrdiv">
           Automatically starts an animation that snaps the list to center on the element closest to the
  middle.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#fling(int, int)">fling</a></span>(int velocityX, int velocityY)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#getBaseline()">getBaseline</a></span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#getCentralViewTop()">getCentralViewTop</a></span>()</nobr>
-        
+
         <div class="jd-descrdiv">
           Returns top of the central <code>View</code> in the list when such view is fully centered.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             <a href="../../../../../reference/android/support/wearable/view/WearableListView.ViewHolder.html">WearableListView.ViewHolder</a></nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#getChildViewHolder(android.view.View)">getChildViewHolder</a></span>(View child)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#getMaximizeSingleItem()">getMaximizeSingleItem</a></span>()</nobr>
-        
+
         <div class="jd-descrdiv">
           Determines if, when there is only one item in the WearableListView, that the single item
  is laid out so that it's height fills the entire WearableListView.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#isAtTop()">isAtTop</a></span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#isGestureNavigationEnabled()">isGestureNavigationEnabled</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Determines if navigation of list with wrist gestures is enabled.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#onInterceptTouchEvent(android.view.MotionEvent)">onInterceptTouchEvent</a></span>(MotionEvent event)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#onKeyDown(int, android.view.KeyEvent)">onKeyDown</a></span>(int keyCode, KeyEvent event)</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#onTouchEvent(android.view.MotionEvent)">onTouchEvent</a></span>(MotionEvent event)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#removeOnCentralPositionChangedListener(android.support.wearable.view.WearableListView.OnCentralPositionChangedListener)">removeOnCentralPositionChangedListener</a></span>(<a href="../../../../../reference/android/support/wearable/view/WearableListView.OnCentralPositionChangedListener.html">WearableListView.OnCentralPositionChangedListener</a> listener)</nobr>
-        
+
         <div class="jd-descrdiv">
           Removes a listener that would be called when the central item of the list changes.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#removeOnScrollListener(android.support.wearable.view.WearableListView.OnScrollListener)">removeOnScrollListener</a></span>(<a href="../../../../../reference/android/support/wearable/view/WearableListView.OnScrollListener.html">WearableListView.OnScrollListener</a> listener)</nobr>
-        
+
         <div class="jd-descrdiv">
           Removes listener for scroll events.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#resetLayoutManager()">resetLayoutManager</a></span>()</nobr>
-        
+
         <div class="jd-descrdiv">
           Clears the state of the layout manager that positions list items.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#setAdapter(android.support.v7.widget.RecyclerView.Adapter)">setAdapter</a></span>(Adapter adapter)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#setClickListener(android.support.wearable.view.WearableListView.ClickListener)">setClickListener</a></span>(<a href="../../../../../reference/android/support/wearable/view/WearableListView.ClickListener.html">WearableListView.ClickListener</a> clickListener)</nobr>
-        
+
         <div class="jd-descrdiv">
           Adds a listener that will be called when the user taps on the WearableListView or its items.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#setEnableGestureNavigation(boolean)">setEnableGestureNavigation</a></span>(boolean enabled)</nobr>
+
+        <div class="jd-descrdiv">
+          Sets whether navigation of list with wrist gestures is enabled.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#setGreedyTouchMode(boolean)">setGreedyTouchMode</a></span>(boolean greedy)</nobr>
-        
+
         <div class="jd-descrdiv">
           Controls whether WearableListView should intercept all touch events and also prevent the
  parent from receiving them.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#setInitialOffset(int)">setInitialOffset</a></span>(int top)</nobr>
-        
+
         <div class="jd-descrdiv">
           By default the first element of the list is initially positioned in the center of the screen.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#setMaximizeSingleItem(boolean)">setMaximizeSingleItem</a></span>(boolean maximizeSingleItem)</nobr>
-        
+
         <div class="jd-descrdiv">
           When set to true, if there is only one item in the WearableListView, it will fill the entire
  WearableListView.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#smoothScrollToPosition(int, android.support.v7.widget.RecyclerView.SmoothScroller)">smoothScrollToPosition</a></span>(int position, RecyclerView.SmoothScroller smoothScroller)</nobr>
-        
+
   </td></tr>
 
 
@@ -3475,6 +3677,49 @@
 
 
 
+<!-- ========== METHOD SUMMARY =========== -->
+
+<table id="promethods" class="jd-sumtable"><tr><th colspan="12">Protected Methods</th></tr>
+
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#onAttachedToWindow()">onAttachedToWindow</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html#onDetachedFromWindow()">onDetachedFromWindow</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+</table>
+
+
 
 
 
@@ -3500,1190 +3745,1763 @@
   </div>
   <div id="inherited-methods-android.support.v7.widget.RecyclerView-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addItemDecoration</span>(RecyclerView.ItemDecoration arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addItemDecoration</span>(RecyclerView.ItemDecoration arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">addOnChildAttachStateChangeListener</span>(RecyclerView.OnChildAttachStateChangeListener arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addOnItemTouchListener</span>(RecyclerView.OnItemTouchListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">addOnScrollListener</span>(RecyclerView.OnScrollListener arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">checkLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clearOnChildAttachStateChangeListeners</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clearOnScrollListeners</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollExtent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollRange</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollExtent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollRange</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedFling</span>(float arg0, float arg1, boolean arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedPreFling</span>(float arg0, float arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedPreScroll</span>(int arg0, int arg1, int[] arg2, int[] arg3)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedScroll</span>(int arg0, int arg1, int arg2, int arg3, int[] arg4)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">draw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">drawChild</span>(Canvas arg0, View arg1, long arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findChildViewUnder</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             RecyclerView.ViewHolder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewHolderForAdapterPosition</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             RecyclerView.ViewHolder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewHolderForItemId</span>(long arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             RecyclerView.ViewHolder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewHolderForLayoutPosition</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             RecyclerView.ViewHolder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewHolderForPosition</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">fling</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusSearch</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateDefaultLayoutParams</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(AttributeSet arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Adapter</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAdapter</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getBaseline</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildAdapterPosition</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getChildDrawingOrder</span>(int arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             long</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildItemId</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildLayoutPosition</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildPosition</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             RecyclerView.ViewHolder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildViewHolder</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             RecyclerViewAccessibilityDelegate</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getCompatAccessibilityDelegate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             RecyclerView.ItemAnimator</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getItemAnimator</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             RecyclerView.LayoutManager</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutManager</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMaxFlingVelocity</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMinFlingVelocity</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             RecyclerView.RecycledViewPool</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRecycledViewPool</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFixedSize</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hasNestedScrollingParent</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hasPendingAdapterUpdates</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateItemDecorations</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isAnimating</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isAttachedToWindow</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isComputingLayout</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isLayoutFrozen</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isNestedScrollingEnabled</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetChildrenHorizontal</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetChildrenVertical</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAttachedToWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onChildAttachedToWindow</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onChildDetachedFromWindow</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDetachedFromWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDraw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onGenericMotionEvent</span>(MotionEvent arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInterceptTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onLayout</span>(boolean arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onMeasure</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Parcelable</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSaveInstanceState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onScrollStateChanged</span>(int arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onScrolled</span>(int arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+<<<<<<< HEAD
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewGroup" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.view.ViewGroup-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  android.view.ViewGroup
+
+<div id="inherited-methods-android.view.ViewGroup">
+  <div id="inherited-methods-android.view.ViewGroup-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.view.ViewGroup-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+=======
+>>>>>>> b60df1f... docs: Updated API changes for Dinar wearable support.
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSizeChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeDetachedView</span>(View arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeItemDecoration</span>(RecyclerView.ItemDecoration arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">removeOnChildAttachStateChangeListener</span>(RecyclerView.OnChildAttachStateChangeListener arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeOnItemTouchListener</span>(RecyclerView.OnItemTouchListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">removeOnScrollListener</span>(RecyclerView.OnScrollListener arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildFocus</span>(View arg0, View arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildRectangleOnScreen</span>(View arg0, Rect arg1, boolean arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">requestDisallowInterceptTouchEvent</span>(boolean arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scrollBy</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scrollTo</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scrollToPosition</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">sendAccessibilityEventUnchecked</span>(AccessibilityEvent arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityDelegateCompat</span>(RecyclerViewAccessibilityDelegate arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAdapter</span>(Adapter arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setChildDrawingOrderCallback</span>(RecyclerView.ChildDrawingOrderCallback arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipToPadding</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHasFixedSize</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setItemAnimator</span>(RecyclerView.ItemAnimator arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setItemViewCacheSize</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setLayoutFrozen</span>(boolean arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutManager</span>(RecyclerView.LayoutManager arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setNestedScrollingEnabled</span>(boolean arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnScrollListener</span>(RecyclerView.OnScrollListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRecycledViewPool</span>(RecyclerView.RecycledViewPool arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRecyclerListener</span>(RecyclerView.RecyclerListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollingTouchSlop</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setViewCacheExtension</span>(RecyclerView.ViewCacheExtension arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">smoothScrollBy</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">smoothScrollToPosition</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startNestedScroll</span>(int arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">stopNestedScroll</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">stopScroll</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">swapAdapter</span>(Adapter arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -4710,2598 +5528,2675 @@
   </div>
   <div id="inherited-methods-android.view.ViewGroup-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addChildrenForAccessibility</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addStatesFromChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addTouchables</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addViewInLayout</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addViewInLayout</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">attachLayoutAnimationParameters</span>(View arg0, ViewGroup.LayoutParams arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">attachViewToParent</span>(View arg0, int arg1, ViewGroup.LayoutParams arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">bringChildToFront</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canAnimate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">checkLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childDrawableStateChanged</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childHasTransientStateChanged</span>(View arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">cleanupLayoutState</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearChildFocus</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearDisappearingChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">debug</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachAllViewsFromParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachViewFromParent</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachViewFromParent</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">detachViewsFromParent</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchApplyWindowInsets</span>(WindowInsets arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchConfigurationChanged</span>(Configuration arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDisplayHint</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDragEvent</span>(DragEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDraw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDrawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchFreezeSelfOnly</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericFocusedEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericPointerEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEventPreIme</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyShortcutEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetActivated</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetPressed</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetSelected</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSystemUiVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchThawSelfOnly</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTrackballEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchUnhandledMove</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchVisibilityChanged</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowFocusChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowSystemUiVisiblityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawChild</span>(Canvas arg0, View arg1, long arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawableStateChanged</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">endViewTransition</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewsWithText</span>(ArrayList&lt;View&gt; arg0, CharSequence arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusSearch</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusableViewAvailable</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">gatherTransparentRegion</span>(Region arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateDefaultLayoutParams</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(AttributeSet arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildAt</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildCount</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildDrawingOrder</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildMeasureSpec</span>(int arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildStaticTransformation</span>(View arg0, Transformation arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildVisibleRect</span>(View arg0, Rect arg1, Point arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipChildren</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipToPadding</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDescendantFocusability</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFocusedChild</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             LayoutAnimationController</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Animation.AnimationListener</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutAnimationListener</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             LayoutTransition</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutTransition</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNestedScrollAxes</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewOverlay</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOverlay</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPersistentDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTouchscreenBlocksFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocusable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasTransientState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">indexOfChild</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChild</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChildInParent</span>(int[] arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAlwaysDrawnWithCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAnimationCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isChildrenDrawingOrderEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isChildrenDrawnWithCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isMotionEventSplittingEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTransitionGroup</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">jumpDrawablesToCurrentState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">layout</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measureChild</span>(View arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measureChildWithMargins</span>(View arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measureChildren</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notifySubtreeAccessibilityStateChanged</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetDescendantRectToMyCoords</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetRectIntoDescendantCoords</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationEnd</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onAnimationStart</span>()</nobr>
-        
-  </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAttachedToWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateDrawableState</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDetachedFromWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInterceptHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInterceptTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onLayout</span>(boolean arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedFling</span>(View arg0, float arg1, float arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreFling</span>(View arg0, float arg1, float arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPrePerformAccessibilityAction</span>(View arg0, int arg1, Bundle arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreScroll</span>(View arg0, int arg1, int arg2, int[] arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScroll</span>(View arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScrollAccepted</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRequestFocusInDescendants</span>(int arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRequestSendAccessibilityEvent</span>(View arg0, AccessibilityEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStartNestedScroll</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStopNestedScroll</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewAdded</span>(View arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onViewRemoved</span>(View arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">recomputeViewAttributes</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeAllViews</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeAllViewsInLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+<<<<<<< HEAD
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.View" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.view.View-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  android.view.View
+
+<div id="inherited-methods-android.view.View">
+  <div id="inherited-methods-android.view.View-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.view.View-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+=======
+>>>>>>> b60df1f... docs: Updated API changes for Dinar wearable support.
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeDetachedView</span>(View arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeView</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViewAt</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViewInLayout</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViews</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeViewsInLayout</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildFocus</span>(View arg0, View arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildRectangleOnScreen</span>(View arg0, Rect arg1, boolean arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestDisallowInterceptTouchEvent</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>(int arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestSendAccessibilityEvent</span>(View arg0, AccessibilityEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestTransparentRegion</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scheduleLayoutAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAddStatesFromChildren</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAlwaysDrawnWithCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAnimationCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setChildrenDrawingCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setChildrenDrawingOrderEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setChildrenDrawnWithCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipChildren</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipToPadding</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDescendantFocusability</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutAnimation</span>(LayoutAnimationController arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutAnimationListener</span>(Animation.AnimationListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutMode</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutTransition</span>(LayoutTransition arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMotionEventSplittingEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnHierarchyChangeListener</span>(ViewGroup.OnHierarchyChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPersistentDrawingCache</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setStaticTransformationsEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTouchscreenBlocksFocus</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTransitionGroup</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">shouldDelayChildPressedState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">showContextMenuForChild</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startLayoutAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startViewTransition</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">updateViewLayout</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -7328,7718 +8223,8102 @@
   </div>
   <div id="inherited-methods-android.view.View-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addChildrenForAccessibility</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addFocusables</span>(ArrayList&lt;View&gt; arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addOnAttachStateChangeListener</span>(View.OnAttachStateChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addOnLayoutChangeListener</span>(View.OnLayoutChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addTouchables</span>(ArrayList&lt;View&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewPropertyAnimator</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">animate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">announceForAccessibility</span>(CharSequence arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">awakenScrollBars</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">awakenScrollBars</span>(int arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">awakenScrollBars</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">bringToFront</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">buildDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">buildDrawingCache</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">buildLayer</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">callOnClick</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canScrollHorizontally</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canScrollVertically</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">cancelLongPress</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">cancelPendingInputEvents</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">checkInputConnectionProxy</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">combineMeasuredStates</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollExtent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeHorizontalScrollRange</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeScroll</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeSystemWindowInsets</span>(WindowInsets arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollExtent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">computeVerticalScrollRange</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             AccessibilityNodeInfo</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">createAccessibilityNodeInfo</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">createContextMenu</span>(ContextMenu arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">destroyDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchApplyWindowInsets</span>(WindowInsets arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchConfigurationChanged</span>(Configuration arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDisplayHint</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDragEvent</span>(DragEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDraw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchDrawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericFocusedEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericMotionEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchGenericPointerEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyEventPreIme</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchKeyShortcutEvent</span>(KeyEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedFling</span>(float arg0, float arg1, boolean arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedPreFling</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedPrePerformAccessibilityAction</span>(int arg0, Bundle arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedPreScroll</span>(int arg0, int arg1, int[] arg2, int[] arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchNestedScroll</span>(int arg0, int arg1, int arg2, int arg3, int[] arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchPopulateAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchProvideStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchRestoreInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSaveInstanceState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetActivated</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetPressed</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSetSelected</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchSystemUiVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchTrackballEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchUnhandledMove</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchVisibilityChanged</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowFocusChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowSystemUiVisiblityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">dispatchWindowVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">draw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawableHotspotChanged</span>(float arg0, float arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">drawableStateChanged</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewById</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewWithTag</span>(Object arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">findViewsWithText</span>(ArrayList&lt;View&gt; arg0, CharSequence arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">fitSystemWindows</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusSearch</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">forceLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">generateViewId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getAccessibilityClassName</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityLiveRegion</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             AccessibilityNodeProvider</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityNodeProvider</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityTraversalAfter</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAccessibilityTraversalBefore</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAlpha</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Animation</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             IBinder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getApplicationWindowToken</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Drawable</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBackground</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ColorStateList</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBackgroundTintList</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             PorterDuff.Mode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBackgroundTintMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBaseline</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBottom</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBottomFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getBottomPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getCameraDistance</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Rect</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipBounds</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClipBounds</span>(Rect arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClipToOutline</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             CharSequence</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getContentDescription</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             Context</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getContext</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ContextMenu.ContextMenuInfo</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getContextMenuInfo</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDefaultSize</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Display</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDisplay</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawableState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Bitmap</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCache</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Bitmap</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCache</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCacheBackgroundColor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingCacheQuality</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             long</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getDrawingTime</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getElevation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFilterTouchesWhenObscured</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFitsSystemWindows</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ArrayList&lt;View&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFocusables</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getFocusedRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Drawable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForeground</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundGravity</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintList</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            PorterDuff.Mode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getForegroundTintMode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getGlobalVisibleRect</span>(Rect arg0, Point arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getGlobalVisibleRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Handler</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHandler</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHitRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHorizontalFadingEdgeLength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getHorizontalScrollbarHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getImportantForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getKeepScreenOn</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             KeyEvent.DispatcherState</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getKeyDispatcherState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLabelFor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayerType</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewGroup.LayoutParams</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutParams</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLeft</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLeftFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLeftPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLocalVisibleRect</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLocationInWindow</span>(int[] arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLocationOnScreen</span>(int[] arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Matrix</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMatrix</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredHeightAndState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMeasuredWidthAndState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMinimumHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getMinimumWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusDownId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusForwardId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusLeftId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusRightId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getNextFocusUpId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View.OnFocusChangeListener</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOnFocusChangeListener</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewOutlineProvider</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOutlineProvider</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOverScrollMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewOverlay</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getOverlay</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingBottom</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingEnd</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingLeft</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingRight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingStart</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPaddingTop</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParentForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPivotX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getPivotY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Resources</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getResources</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRightFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRightPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRootView</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            WindowInsets</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getRootWindowInsets</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRotation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRotationX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getRotationY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScaleX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScaleY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarDefaultDelayBeforeFade</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarFadeDuration</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarSize</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollBarStyle</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getScrollIndicators</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getScrollY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSolidColor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             StateListAnimator</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getStateListAnimator</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSuggestedMinimumHeight</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSuggestedMinimumWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getSystemUiVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Object</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTag</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Object</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTag</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTop</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTopFadingEdgeStrength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTopPaddingOffset</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             TouchDelegate</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTouchDelegate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ArrayList&lt;View&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTouchables</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTransitionName</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTranslationX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTranslationY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTranslationZ</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVerticalFadingEdgeLength</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVerticalScrollbarPosition</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVerticalScrollbarWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ViewTreeObserver</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getViewTreeObserver</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWidth</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowAttachCount</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowId</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowId</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowSystemUiVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             IBinder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowToken</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowVisibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getWindowVisibleDisplayFrame</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getX</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getY</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             float</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getZ</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasFocusable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasNestedScrollingParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasOnClickListeners</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasOverlappingRendering</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasTransientState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hasWindowFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">inflate</span>(Context arg0, int arg1, ViewGroup arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidate</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidate</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateOutline</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAccessibilityFocused</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isActivated</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isAttachedToWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isClickable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isContextClickable</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isDirty</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isDrawingCacheEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isDuplicateParentStateEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isFocusable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isFocusableInTouchMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isFocused</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHapticFeedbackEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHardwareAccelerated</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHorizontalFadingEdgeEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHorizontalScrollBarEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isHovered</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isImportantForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isInEditMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isInLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isInTouchMode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLaidOut</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutRequested</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLongClickable</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isNestedScrollingEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isOpaque</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isPaddingOffsetRequired</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isPaddingRelative</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isPressed</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSaveEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSaveFromParentEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isScrollContainer</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isScrollbarFadingEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSelected</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isShown</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isSoundEffectsEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextAlignmentResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isVerticalFadingEdgeEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isVerticalScrollBarEnabled</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">jumpDrawablesToCurrentState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">layout</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">measure</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">mergeDrawableStates</span>(int[] arg0, int[] arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetLeftAndRight</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">offsetTopAndBottom</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAnimationEnd</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAnimationStart</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             WindowInsets</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onApplyWindowInsets</span>(WindowInsets arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onAttachedToWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCancelPendingInputEvents</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCheckIsTextEditor</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onConfigurationChanged</span>(Configuration arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateContextMenu</span>(ContextMenu arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int[]</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateDrawableState</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             InputConnection</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onCreateInputConnection</span>(EditorInfo arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDetachedFromWindow</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDisplayHint</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDragEvent</span>(DragEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDraw</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onDrawForeground</span>(Canvas arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onDrawScrollBars</span>(Canvas arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFilterTouchEventForSecurity</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFinishInflate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFinishTemporaryDetach</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onFocusChanged</span>(boolean arg0, int arg1, Rect arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onGenericMotionEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onHoverChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onHoverEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInitializeAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onInitializeAccessibilityNodeInfo</span>(AccessibilityNodeInfo arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyDown</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyLongPress</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyMultiple</span>(int arg0, int arg1, KeyEvent arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyPreIme</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyShortcut</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyUp</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onLayout</span>(boolean arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onMeasure</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onOverScrolled</span>(int arg0, int arg1, boolean arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onPopulateAccessibilityEvent</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">onProvideVirtualStructure</span>(ViewStructure arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRestoreInstanceState</span>(Parcelable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onRtlPropertiesChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Parcelable</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSaveInstanceState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onScreenStateChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onScrollChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSetAlpha</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onSizeChanged</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStartTemporaryDetach</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onTouchEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onTrackballEvent</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onVisibilityChanged</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onWindowFocusChanged</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onWindowSystemUiVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onWindowVisibilityChanged</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">overScrollBy</span>(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, boolean arg8)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performAccessibilityAction</span>(int arg0, Bundle arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performClick</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">performContextClick</span>()</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performHapticFeedback</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performHapticFeedback</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">performLongClick</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">playSoundEffect</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">post</span>(Runnable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postDelayed</span>(Runnable arg0, long arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidate</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidate</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateDelayed</span>(long arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateDelayed</span>(long arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateOnAnimation</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postInvalidateOnAnimation</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postOnAnimation</span>(Runnable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">postOnAnimationDelayed</span>(Runnable arg0, long arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">refreshDrawableState</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeCallbacks</span>(Runnable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeOnAttachStateChangeListener</span>(View.OnAttachStateChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeOnLayoutChangeListener</span>(View.OnLayoutChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestApplyInsets</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFitSystemWindows</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>(int arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocus</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFocusFromTouch</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestRectangleOnScreen</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestRectangleOnScreen</span>(Rect arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestUnbufferedDispatch</span>(MotionEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">resolveSize</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
+
+
+
             static
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">resolveSizeAndState</span>(int arg0, int arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">restoreHierarchyState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">saveHierarchyState</span>(SparseArray&lt;Parcelable&gt; arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scheduleDrawable</span>(Drawable arg0, Runnable arg1, long arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scrollBy</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scrollTo</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEvent</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEventUnchecked</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityDelegate</span>(View.AccessibilityDelegate arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityLiveRegion</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityTraversalAfter</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAccessibilityTraversalBefore</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setActivated</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAlpha</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setAnimation</span>(Animation arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackground</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundColor</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundResource</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundTintList</span>(ColorStateList arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBackgroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setBottom</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setCameraDistance</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClickable</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipBounds</span>(Rect arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setClipToOutline</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setContentDescription</span>(CharSequence arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setContextClickable</span>(boolean arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheBackgroundColor</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDrawingCacheQuality</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setDuplicateParentStateEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setElevation</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFadingEdgeLength</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFilterTouchesWhenObscured</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFitsSystemWindows</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFocusable</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setFocusableInTouchMode</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForeground</span>(Drawable arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundGravity</span>(int arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintList</span>(ColorStateList arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setForegroundTintMode</span>(PorterDuff.Mode arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHapticFeedbackEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHasTransientState</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHorizontalFadingEdgeEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHorizontalScrollBarEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setHovered</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setImportantForAccessibility</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setKeepScreenOn</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLabelFor</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayerPaint</span>(Paint arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayerType</span>(int arg0, Paint arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutDirection</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLayoutParams</span>(ViewGroup.LayoutParams arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLeft</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setLongClickable</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMeasuredDimension</span>(int arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMinimumHeight</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setMinimumWidth</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNestedScrollingEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusDownId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusForwardId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusLeftId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusRightId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setNextFocusUpId</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnApplyWindowInsetsListener</span>(View.OnApplyWindowInsetsListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnClickListener</span>(View.OnClickListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnContextClickListener</span>(View.OnContextClickListener arg0)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnCreateContextMenuListener</span>(View.OnCreateContextMenuListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnDragListener</span>(View.OnDragListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnFocusChangeListener</span>(View.OnFocusChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnGenericMotionListener</span>(View.OnGenericMotionListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnHoverListener</span>(View.OnHoverListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnKeyListener</span>(View.OnKeyListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnLongClickListener</span>(View.OnLongClickListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setOnScrollChangeListener</span>(View.OnScrollChangeListener arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnSystemUiVisibilityChangeListener</span>(View.OnSystemUiVisibilityChangeListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOnTouchListener</span>(View.OnTouchListener arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOutlineProvider</span>(ViewOutlineProvider arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setOverScrollMode</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPadding</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPaddingRelative</span>(int arg0, int arg1, int arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPivotX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPivotY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setPressed</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRight</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRotation</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRotationX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setRotationY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSaveEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSaveFromParentEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScaleX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScaleY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarDefaultDelayBeforeFade</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarFadeDuration</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarSize</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollBarStyle</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollContainer</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setScrollIndicators</span>(int arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollX</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollY</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setScrollbarFadingEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSelected</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSoundEffectsEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setStateListAnimator</span>(StateListAnimator arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setSystemUiVisibility</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTag</span>(int arg0, Object arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTag</span>(Object arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTextAlignment</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTextDirection</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTop</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTouchDelegate</span>(TouchDelegate arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTransitionName</span>(String arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTranslationX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTranslationY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setTranslationZ</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVerticalFadingEdgeEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVerticalScrollBarEnabled</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVerticalScrollbarPosition</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setVisibility</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setWillNotCacheDrawing</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setWillNotDraw</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setX</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setY</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class=" api apilevel-" >
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">setZ</span>(float arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">showContextMenu</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionMode</span>(ActionMode.Callback arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionMode</span>(ActionMode.Callback arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startAnimation</span>(Animation arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startDrag</span>(ClipData arg0, View.DragShadowBuilder arg1, Object arg2, int arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startNestedScroll</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">stopNestedScroll</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">toString</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">unscheduleDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">unscheduleDrawable</span>(Drawable arg0, Runnable arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">verifyDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">willNotCacheDrawing</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">willNotDraw</span>()</nobr>
-        
+
   </td></tr>
 
 
@@ -15054,7 +16333,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -15066,182 +16345,474 @@
   </div>
   <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Object</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clone</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">equals</span>(Object arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">finalize</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             Class&lt;?&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClass</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hashCode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notify</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notifyAll</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">toString</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>(long arg0)</nobr>
-        
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.v4.view.ScrollingView" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.support.v4.view.ScrollingView-trigger"
+          src="../../../../../assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  android.support.v4.view.ScrollingView
+
+<div id="inherited-methods-android.support.v4.view.ScrollingView">
+  <div id="inherited-methods-android.support.v4.view.ScrollingView-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.support.v4.view.ScrollingView-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeHorizontalScrollExtent</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeHorizontalScrollOffset</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeHorizontalScrollRange</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeVerticalScrollExtent</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeVerticalScrollOffset</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">computeVerticalScrollRange</span>()</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.v4.view.NestedScrollingChild" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.support.v4.view.NestedScrollingChild-trigger"
+          src="../../../../../assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  android.support.v4.view.NestedScrollingChild
+
+<div id="inherited-methods-android.support.v4.view.NestedScrollingChild">
+  <div id="inherited-methods-android.support.v4.view.NestedScrollingChild-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.support.v4.view.NestedScrollingChild-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedFling</span>(float arg0, float arg1, boolean arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedPreFling</span>(float arg0, float arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedPreScroll</span>(int arg0, int arg1, int[] arg2, int[] arg3)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">dispatchNestedScroll</span>(int arg0, int arg1, int arg2, int arg3, int[] arg4)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hasNestedScrollingParent</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">isNestedScrollingEnabled</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setNestedScrollingEnabled</span>(boolean arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startNestedScroll</span>(int arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">stopNestedScroll</span>()</nobr>
+
   </td></tr>
 
 
@@ -15256,7 +16827,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewParent" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewParent-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -15268,662 +16839,678 @@
   </div>
   <div id="inherited-methods-android.view.ViewParent-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">bringChildToFront</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">canResolveTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childDrawableStateChanged</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">childHasTransientStateChanged</span>(View arg0, boolean arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clearChildFocus</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">createContextMenu</span>(ContextMenu arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             View</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusSearch</span>(View arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">focusableViewAvailable</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getChildVisibleRect</span>(View arg0, Rect arg1, Point arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getLayoutDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParent</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getParentForAccessibility</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextAlignment</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getTextDirection</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChild</span>(View arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             ViewParent</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateChildInParent</span>(int[] arg0, Rect arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isLayoutRequested</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextAlignmentResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">isTextDirectionResolved</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notifySubtreeAccessibilityStateChanged</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedFling</span>(View arg0, float arg1, float arg2, boolean arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreFling</span>(View arg0, float arg1, float arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPrePerformAccessibilityAction</span>(View arg0, int arg1, Bundle arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedPreScroll</span>(View arg0, int arg1, int arg2, int[] arg3)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScroll</span>(View arg0, int arg1, int arg2, int arg3, int arg4)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onNestedScrollAccepted</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStartNestedScroll</span>(View arg0, View arg1, int arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onStopNestedScroll</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">recomputeViewAttributes</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildFocus</span>(View arg0, View arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestChildRectangleOnScreen</span>(View arg0, Rect arg1, boolean arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestDisallowInterceptTouchEvent</span>(boolean arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestFitSystemWindows</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestLayout</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestSendAccessibilityEvent</span>(View arg0, AccessibilityEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">requestTransparentRegion</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">showContextMenuForChild</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
+            ActionMode</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1, int arg2)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
             ActionMode</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">startActionModeForChild</span>(View arg0, ActionMode.Callback arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -15938,7 +17525,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.ViewManager" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.ViewManager-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -15950,54 +17537,54 @@
   </div>
   <div id="inherited-methods-android.view.ViewManager-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">addView</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">removeView</span>(View arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">updateViewLayout</span>(View arg0, ViewGroup.LayoutParams arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -16012,7 +17599,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.graphics.drawable.Drawable.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.graphics.drawable.Drawable.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -16024,54 +17611,54 @@
   </div>
   <div id="inherited-methods-android.graphics.drawable.Drawable.Callback-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">invalidateDrawable</span>(Drawable arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">scheduleDrawable</span>(Drawable arg0, Runnable arg1, long arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">unscheduleDrawable</span>(Drawable arg0, Runnable arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -16086,7 +17673,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.KeyEvent.Callback" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.KeyEvent.Callback-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -16098,70 +17685,70 @@
   </div>
   <div id="inherited-methods-android.view.KeyEvent.Callback-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyDown</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyLongPress</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyMultiple</span>(int arg0, int arg1, KeyEvent arg2)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">onKeyUp</span>(int arg0, KeyEvent arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -16176,7 +17763,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.view.accessibility.AccessibilityEventSource" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.view.accessibility.AccessibilityEventSource-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -16188,38 +17775,38 @@
   </div>
   <div id="inherited-methods-android.view.accessibility.AccessibilityEventSource-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEvent</span>(int arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">sendAccessibilityEventUnchecked</span>(AccessibilityEvent arg0)</nobr>
-        
+
   </td></tr>
 
 
@@ -16265,30 +17852,30 @@
 
 <A NAME="WearableListView(android.content.Context)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
-        
+        public
+
+
+
+
+
       </span>
       <span class="sympad">WearableListView</span>
       <span class="normal">(Context context)</span>
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -16297,30 +17884,30 @@
 
 <A NAME="WearableListView(android.content.Context, android.util.AttributeSet)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
-        
+        public
+
+
+
+
+
       </span>
       <span class="sympad">WearableListView</span>
       <span class="normal">(Context context, AttributeSet attrs)</span>
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -16329,30 +17916,30 @@
 
 <A NAME="WearableListView(android.content.Context, android.util.AttributeSet, int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
-        
+        public
+
+
+
+
+
       </span>
       <span class="sympad">WearableListView</span>
       <span class="normal">(Context context, AttributeSet attrs, int defStyleAttr)</span>
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -16376,14 +17963,14 @@
 
 <A NAME="addOnCentralPositionChangedListener(android.support.wearable.view.WearableListView.OnCentralPositionChangedListener)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">addOnCentralPositionChangedListener</span>
@@ -16391,15 +17978,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Adds a listener that will be called when the central item of the list changes.
 </p></div>
 
@@ -16409,14 +17996,14 @@
 
 <A NAME="addOnScrollListener(android.support.wearable.view.WearableListView.OnScrollListener)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">addOnScrollListener</span>
@@ -16424,15 +18011,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Adds a listener that will be called when the content of the list view is scrolled.
 </p></div>
 
@@ -16442,14 +18029,14 @@
 
 <A NAME="animateToCenter()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">animateToCenter</span>
@@ -16457,15 +18044,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Automatically starts an animation that snaps the list to center on the element closest to the
  middle.
 </p></div>
@@ -16476,14 +18063,14 @@
 
 <A NAME="fling(int, int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         boolean
       </span>
       <span class="sympad">fling</span>
@@ -16491,15 +18078,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -16508,14 +18095,14 @@
 
 <A NAME="getBaseline()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         int
       </span>
       <span class="sympad">getBaseline</span>
@@ -16523,15 +18110,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Returns</h5>
@@ -16546,14 +18133,14 @@
 
 <A NAME="getCentralViewTop()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         int
       </span>
       <span class="sympad">getCentralViewTop</span>
@@ -16561,15 +18148,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Returns top of the central <code>View</code> in the list when such view is fully centered.
 
  This is a more or a less a static value that you can use to align other views with the
@@ -16582,14 +18169,14 @@
 
 <A NAME="getChildViewHolder(android.view.View)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         <a href="../../../../../reference/android/support/wearable/view/WearableListView.ViewHolder.html">WearableListView.ViewHolder</a>
       </span>
       <span class="sympad">getChildViewHolder</span>
@@ -16597,15 +18184,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -16614,14 +18201,14 @@
 
 <A NAME="getMaximizeSingleItem()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         boolean
       </span>
       <span class="sympad">getMaximizeSingleItem</span>
@@ -16629,15 +18216,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Determines if, when there is only one item in the WearableListView, that the single item
  is laid out so that it's height fills the entire WearableListView.
 </p></div>
@@ -16648,14 +18235,14 @@
 
 <A NAME="isAtTop()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         boolean
       </span>
       <span class="sympad">isAtTop</span>
@@ -16663,15 +18250,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Returns</h5>
@@ -16683,16 +18270,49 @@
 </div>
 
 
-<A NAME="onInterceptTouchEvent(android.view.MotionEvent)"></A>
+<A NAME="isGestureNavigationEnabled()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
+        boolean
+      </span>
+      <span class="sympad">isGestureNavigationEnabled</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Determines if navigation of list with wrist gestures is enabled.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="onInterceptTouchEvent(android.view.MotionEvent)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
         boolean
       </span>
       <span class="sympad">onInterceptTouchEvent</span>
@@ -16700,15 +18320,47 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="onKeyDown(int, android.view.KeyEvent)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        boolean
+      </span>
+      <span class="sympad">onKeyDown</span>
+      <span class="normal">(int keyCode, KeyEvent event)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -16717,14 +18369,14 @@
 
 <A NAME="onTouchEvent(android.view.MotionEvent)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         boolean
       </span>
       <span class="sympad">onTouchEvent</span>
@@ -16732,15 +18384,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -16749,14 +18401,14 @@
 
 <A NAME="removeOnCentralPositionChangedListener(android.support.wearable.view.WearableListView.OnCentralPositionChangedListener)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">removeOnCentralPositionChangedListener</span>
@@ -16764,15 +18416,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Removes a listener that would be called when the central item of the list changes.
 </p></div>
 
@@ -16782,14 +18434,14 @@
 
 <A NAME="removeOnScrollListener(android.support.wearable.view.WearableListView.OnScrollListener)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">removeOnScrollListener</span>
@@ -16797,15 +18449,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Removes listener for scroll events.
 </p></div>
 
@@ -16815,14 +18467,14 @@
 
 <A NAME="resetLayoutManager()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">resetLayoutManager</span>
@@ -16830,15 +18482,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Clears the state of the layout manager that positions list items.
 </p></div>
 
@@ -16848,14 +18500,14 @@
 
 <A NAME="setAdapter(android.support.v7.widget.RecyclerView.Adapter)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">setAdapter</span>
@@ -16863,15 +18515,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -16880,14 +18532,14 @@
 
 <A NAME="setClickListener(android.support.wearable.view.WearableListView.ClickListener)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">setClickListener</span>
@@ -16895,15 +18547,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Adds a listener that will be called when the user taps on the WearableListView or its items.
 </p></div>
 
@@ -16911,16 +18563,49 @@
 </div>
 
 
+<A NAME="setEnableGestureNavigation(boolean)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">setEnableGestureNavigation</span>
+      <span class="normal">(boolean enabled)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Sets whether navigation of list with wrist gestures is enabled.
+</p></div>
+
+    </div>
+</div>
+
+
 <A NAME="setGreedyTouchMode(boolean)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">setGreedyTouchMode</span>
@@ -16928,15 +18613,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Controls whether WearableListView should intercept all touch events and also prevent the
  parent from receiving them.</p></div>
   <div class="jd-tagdata">
@@ -16956,14 +18641,14 @@
 
 <A NAME="setInitialOffset(int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">setInitialOffset</span>
@@ -16971,15 +18656,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>By default the first element of the list is initially positioned in the center of the screen.
  This method allows the developer to specify a different offset, e.g. to hide the
  WearableListView before the user is allowed to use it.</p></div>
@@ -17000,14 +18685,14 @@
 
 <A NAME="setMaximizeSingleItem(boolean)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">setMaximizeSingleItem</span>
@@ -17015,15 +18700,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>When set to true, if there is only one item in the WearableListView, it will fill the entire
  WearableListView. When set to false, the default behavior will be used and the single item
  will fill only a third of the screen.
@@ -17035,14 +18720,14 @@
 
 <A NAME="smoothScrollToPosition(int, android.support.v7.widget.RecyclerView.SmoothScroller)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">smoothScrollToPosition</span>
@@ -17050,15 +18735,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -17070,6 +18755,75 @@
 
 <!-- ========= METHOD DETAIL ======== -->
 
+<h2>Protected Methods</h2>
+
+
+
+<A NAME="onAttachedToWindow()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        protected
+
+
+
+
+        void
+      </span>
+      <span class="sympad">onAttachedToWindow</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="onDetachedFromWindow()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        protected
+
+
+
+
+        void
+      </span>
+      <span class="sympad">onDetachedFromWindow</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
 
 
 <!-- ========= END OF CLASS DATA ========= -->
@@ -17098,22 +18852,22 @@
 
     <hr class="dac-footer-separator"/>
 
-    
+
       <p class="dac-footer-copyright">
-        
+
   Except as noted, this content is licensed under <a
   href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
   For details and restrictions, see the <a href="../../../../../license.html">
   Content License</a>.
       </p>
       <p class="dac-footer-build">
-        
-    Android Wearable Support&nbsp;r &mdash; 
+
+    Android Wearable Support&nbsp;r &mdash;
 <script src="../../../../../timestamp.js" type="text/javascript"></script>
 <script>document.write(BUILD_TIMESTAMP)</script>
 
       </p>
-    
+
 
     <p class="dac-footer-links">
       <a href="/about/index.html">About Android</a>
@@ -17255,8 +19009,8 @@
 
 </div><!-- end doc-content -->
 
-</div> <!-- end .cols --> 
-</div> <!-- end body-content --> 
+</div> <!-- end .cols -->
+</div> <!-- end body-content -->
 
 
 
diff --git a/docs/html/reference/android/support/wearable/view/package-summary.html b/docs/html/reference/android/support/wearable/view/package-summary.html
index f76e378..09a98c8 100644
--- a/docs/html/reference/android/support/wearable/view/package-summary.html
+++ b/docs/html/reference/android/support/wearable/view/package-summary.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -470,6 +475,7 @@
               
     <li><h2>Interfaces</h2>
       <ul>
+        <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></li>
         <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></li>
         <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></li>
         <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></li>
@@ -485,6 +491,7 @@
               
     <li><h2>Classes</h2>
       <ul>
+        <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></li>
         <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></li>
         <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></li>
         <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></li>
@@ -597,6 +604,17 @@
   <table class="jd-sumtable-expando">
     
       <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.ActionChooserListener.html">ActionChooserView.ActionChooserListener</a></td>
+        <td class="jd-descrcol" width="100%">
+          Interface for receiving callbacks about options chosen from an <code><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></code>.&nbsp;
+          
+    
+
+        </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.DelayedConfirmationListener.html">DelayedConfirmationView.DelayedConfirmationListener</a></td>
         <td class="jd-descrcol" width="100%">
           Implement this interface to receive callbacks when the timer is finished and when the user
@@ -608,7 +626,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.html">GridPageOptions</a></td>
         <td class="jd-descrcol" width="100%">
           An optional interface for a Fragment within a GridViewPager which provides additional
@@ -620,7 +638,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/GridPageOptions.BackgroundListener.html">GridPageOptions.BackgroundListener</a></td>
         <td class="jd-descrcol" width="100%">
           Interface for communicating background changes to a listener.&nbsp;
@@ -631,7 +649,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/GridViewPager.OnAdapterChangeListener.html">GridViewPager.OnAdapterChangeListener</a></td>
         <td class="jd-descrcol" width="100%">
           Callback interface for responding to a replaced or removed adapter.&nbsp;
@@ -642,7 +660,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/GridViewPager.OnPageChangeListener.html">GridViewPager.OnPageChangeListener</a></td>
         <td class="jd-descrcol" width="100%">
           Callback interface for responding to changing state of the selected page.&nbsp;
@@ -653,7 +671,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.OnLayoutInflatedListener.html">WatchViewStub.OnLayoutInflatedListener</a></td>
         <td class="jd-descrcol" width="100%">
           Listener for detecting when internal layout inflation has completed.&nbsp;
@@ -664,7 +682,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WearableListView.ClickListener.html">WearableListView.ClickListener</a></td>
         <td class="jd-descrcol" width="100%">
           Interface for listening for click events on WearableListView.&nbsp;
@@ -675,7 +693,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnCenterProximityListener.html">WearableListView.OnCenterProximityListener</a></td>
         <td class="jd-descrcol" width="100%">
           Interface for receiving callbacks when WearableListView children become or cease to be the
@@ -687,7 +705,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnCentralPositionChangedListener.html">WearableListView.OnCentralPositionChangedListener</a></td>
         <td class="jd-descrcol" width="100%">
           A listener interface that can be added to the WearableListView to get notified when the
@@ -699,7 +717,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WearableListView.OnScrollListener.html">WearableListView.OnScrollListener</a></td>
         <td class="jd-descrcol" width="100%">
           Interface for listening to WearableListView content scrolling.&nbsp;
@@ -724,6 +742,18 @@
   <table class="jd-sumtable-expando">
     
       <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/ActionChooserView.html">ActionChooserView</a></td>
+        <td class="jd-descrcol" width="100%">
+          The action chooser view allows the user to select from two options that are presented in the
+ sides of the view.&nbsp;
+          
+    
+
+        </td>
+      </tr>
+      
+    
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/ActionLabel.html">ActionLabel</a></td>
         <td class="jd-descrcol" width="100%">
           ActionLabel is a specialized text display widget.&nbsp;
@@ -734,7 +764,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/ActionPage.html">ActionPage</a></td>
         <td class="jd-descrcol" width="100%">
           Displays a circular button, with an optional image to perform an action.&nbsp;
@@ -745,7 +775,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.html">BoxInsetLayout</a></td>
         <td class="jd-descrcol" width="100%">
           BoxInsetLayout is a screen shape-aware FrameLayout that can box its children
@@ -758,7 +788,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/BoxInsetLayout.LayoutParams.html">BoxInsetLayout.LayoutParams</a></td>
         <td class="jd-descrcol" width="100%">
           adds <code>layout_box</code> attribute to layout parameters
@@ -770,7 +800,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/CardFragment.html">CardFragment</a></td>
         <td class="jd-descrcol" width="100%">
           Presents content within an expandable, vertically scrollable card.&nbsp;
@@ -781,7 +811,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/CardFrame.html">CardFrame</a></td>
         <td class="jd-descrcol" width="100%">
           Wraps a view in a card-styled frame with a white background, rounded corners and a light
@@ -793,7 +823,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/CardScrollView.html">CardScrollView</a></td>
         <td class="jd-descrcol" width="100%">
           Designed to host a CardFrame and provides special support for scrolling with expansion in both
@@ -805,7 +835,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/CircledImageView.html">CircledImageView</a></td>
         <td class="jd-descrcol" width="100%">
           An image view surrounded by a circle.&nbsp;
@@ -816,7 +846,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/CircularButton.html">CircularButton</a></td>
         <td class="jd-descrcol" width="100%">
           A circular button in the style of a <a
@@ -829,7 +859,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/CrossfadeDrawable.html">CrossfadeDrawable</a></td>
         <td class="jd-descrcol" width="100%">
           Contains two child drawables and provides methods to directly adjust the blend between the two.&nbsp;
@@ -840,7 +870,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/DelayedConfirmationView.html">DelayedConfirmationView</a></td>
         <td class="jd-descrcol" width="100%">
           <code>DelayedConfirmationView</code> provides a circular countdown timer, typically used to
@@ -852,7 +882,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/DismissOverlayView.html">DismissOverlayView</a></td>
         <td class="jd-descrcol" width="100%">
           A view for implementing long-press-to-dismiss in an app.&nbsp;
@@ -863,7 +893,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/DotsPageIndicator.html">DotsPageIndicator</a></td>
         <td class="jd-descrcol" width="100%">
           A page indicator for <code><a href="../../../../../reference/android/support/wearable/view/GridViewPager.html">GridViewPager</a></code> which identifies the current page in relation to all
@@ -875,7 +905,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/FragmentGridPagerAdapter.html">FragmentGridPagerAdapter</a></td>
         <td class="jd-descrcol" width="100%">
           An implementation of GridPagerAdapter which represents each page as a <code><a href="../../../../../reference/android/app/Fragment.html">Fragment</a></code>.&nbsp;
@@ -886,7 +916,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/GridPagerAdapter.html">GridPagerAdapter</a></td>
         <td class="jd-descrcol" width="100%">
           This component is responsible for providing views requested by a <code><a href="../../../../../reference/android/support/wearable/view/GridViewPager.html">GridViewPager</a></code>.&nbsp;
@@ -897,7 +927,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/GridViewPager.html">GridViewPager</a></td>
         <td class="jd-descrcol" width="100%">
           Layout manager that allows the user to navigate both vertically and horizontally through pages of
@@ -909,7 +939,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/GridViewPager.LayoutParams.html">GridViewPager.LayoutParams</a></td>
         <td class="jd-descrcol" width="100%">
           Layout parameters that should be supplied for views added to a ViewPager.&nbsp;
@@ -920,7 +950,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/ProgressSpinner.html">ProgressSpinner</a></td>
         <td class="jd-descrcol" width="100%">
           An indeterminate progress spinner designed for wearables which cycles through colors.&nbsp;
@@ -931,7 +961,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/SimpleAnimatorListener.html">SimpleAnimatorListener</a></td>
         <td class="jd-descrcol" width="100%">
           Convenience class for listening for Animator events that implements the AnimatorListener
@@ -943,7 +973,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WatchViewStub.html">WatchViewStub</a></td>
         <td class="jd-descrcol" width="100%">
           A WatchViewStub allows for the use of different sub-layouts depending on the
@@ -956,7 +986,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WearableFrameLayout.html">WearableFrameLayout</a></td>
         <td class="jd-descrcol" width="100%">
           WearableFrameLayout works exactly like FrameLayout, except it can have overrides for a round
@@ -968,7 +998,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WearableFrameLayout.LayoutParams.html">WearableFrameLayout.LayoutParams</a></td>
         <td class="jd-descrcol" width="100%">
           Per-child layout information for layouts on wearable devices.&nbsp;
@@ -979,7 +1009,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WearableListView.html">WearableListView</a></td>
         <td class="jd-descrcol" width="100%">
           An alternative version of ListView that is optimized for ease of use on small screen wearable
@@ -991,7 +1021,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WearableListView.Adapter.html">WearableListView.Adapter</a></td>
         <td class="jd-descrcol" width="100%">
           Base class for adapters providing data for the WearableListView.&nbsp;
@@ -1002,7 +1032,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/view/WearableListView.ViewHolder.html">WearableListView.ViewHolder</a></td>
         <td class="jd-descrcol" width="100%">
           Wrapper around items displayed in the list view.&nbsp;
diff --git a/docs/html/reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html b/docs/html/reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html
index 1a7aa76..44b539d 100644
--- a/docs/html/reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html
+++ b/docs/html/reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -927,7 +932,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.wearable.watchface.WatchFaceService.Engine" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.wearable.watchface.WatchFaceService.Engine-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1346,7 +1351,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.service.wallpaper.WallpaperService.Engine" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.service.wallpaper.WallpaperService.Engine-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1692,7 +1697,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/watchface/CanvasWatchFaceService.html b/docs/html/reference/android/support/wearable/watchface/CanvasWatchFaceService.html
index aee337f..9f3bf6c 100644
--- a/docs/html/reference/android/support/wearable/watchface/CanvasWatchFaceService.html
+++ b/docs/html/reference/android/support/wearable/watchface/CanvasWatchFaceService.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -880,7 +885,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.support.wearable.watchface.WatchFaceService" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.support.wearable.watchface.WatchFaceService-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 <a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html">android.support.wearable.watchface.WatchFaceService</a>
 <div id="inherited-constants-android.support.wearable.watchface.WatchFaceService">
@@ -894,7 +899,7 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
-        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_ALL">INTERRUPTION_FILTER_ALL</a></td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_ALARMS">INTERRUPTION_FILTER_ALARMS</a></td>
         <td class="jd-descrcol" width="100%">
           Returned by <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getInterruptionFilter()">getInterruptionFilter()</a></code> and passed to
  <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#onInterruptionFilterChanged(int)">onInterruptionFilterChanged(int)</a></code>.
@@ -907,7 +912,7 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
-        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_NONE">INTERRUPTION_FILTER_NONE</a></td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_ALL">INTERRUPTION_FILTER_ALL</a></td>
         <td class="jd-descrcol" width="100%">
           Returned by <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getInterruptionFilter()">getInterruptionFilter()</a></code> and passed to
  <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#onInterruptionFilterChanged(int)">onInterruptionFilterChanged(int)</a></code>.
@@ -920,6 +925,19 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_NONE">INTERRUPTION_FILTER_NONE</a></td>
+        <td class="jd-descrcol" width="100%">
+          Returned by <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getInterruptionFilter()">getInterruptionFilter()</a></code> and passed to
+ <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#onInterruptionFilterChanged(int)">onInterruptionFilterChanged(int)</a></code>.
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_PRIORITY">INTERRUPTION_FILTER_PRIORITY</a></td>
         <td class="jd-descrcol" width="100%">
           Returned by <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getInterruptionFilter()">getInterruptionFilter()</a></code> and passed to
@@ -931,6 +949,19 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_UNKNOWN">INTERRUPTION_FILTER_UNKNOWN</a></td>
+        <td class="jd-descrcol" width="100%">
+          Returned by <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getInterruptionFilter()">getInterruptionFilter()</a></code> and passed to
+ <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#onInterruptionFilterChanged(int)">onInterruptionFilterChanged(int)</a></code>.
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#PROPERTY_BURN_IN_PROTECTION">PROPERTY_BURN_IN_PROTECTION</a></td>
@@ -1007,7 +1038,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.service.wallpaper.WallpaperService" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.service.wallpaper.WallpaperService-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.service.wallpaper.WallpaperService
 <div id="inherited-constants-android.service.wallpaper.WallpaperService">
@@ -1055,7 +1086,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.app.Service" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.app.Service-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.app.Service
 <div id="inherited-constants-android.app.Service">
@@ -1165,7 +1196,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.content.Context" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.content.Context-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.content.Context
 <div id="inherited-constants-android.content.Context">
@@ -1407,7 +1438,7 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
-        <td class="jd-linkcol">CLIPBOARD_SERVICE</td>
+        <td class="jd-linkcol">CARRIER_CONFIG_SERVICE</td>
         <td class="jd-descrcol" width="100%">
           
           
@@ -1419,6 +1450,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">CLIPBOARD_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
         <td class="jd-linkcol">CONNECTIVITY_SERVICE</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1429,7 +1472,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">CONSUMER_IR_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1441,7 +1484,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CONTEXT_IGNORE_SECURITY</td>
         <td class="jd-descrcol" width="100%">
@@ -1453,7 +1496,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CONTEXT_INCLUDE_CODE</td>
         <td class="jd-descrcol" width="100%">
@@ -1465,7 +1508,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CONTEXT_RESTRICTED</td>
         <td class="jd-descrcol" width="100%">
@@ -1477,7 +1520,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DEVICE_POLICY_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1489,7 +1532,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DISPLAY_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1501,7 +1544,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DOWNLOAD_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1513,7 +1556,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DROPBOX_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1525,6 +1568,18 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">FINGERPRINT_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">INPUT_METHOD_SERVICE</td>
@@ -1646,6 +1701,18 @@
     
     
     <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">MIDI_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_APPEND</td>
         <td class="jd-descrcol" width="100%">
@@ -1657,7 +1724,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_ENABLE_WRITE_AHEAD_LOGGING</td>
         <td class="jd-descrcol" width="100%">
@@ -1669,7 +1736,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_MULTI_PROCESS</td>
         <td class="jd-descrcol" width="100%">
@@ -1681,7 +1748,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_PRIVATE</td>
         <td class="jd-descrcol" width="100%">
@@ -1693,7 +1760,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_WORLD_READABLE</td>
         <td class="jd-descrcol" width="100%">
@@ -1705,7 +1772,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_WORLD_WRITEABLE</td>
         <td class="jd-descrcol" width="100%">
@@ -1717,6 +1784,18 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">NETWORK_STATS_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">NFC_SERVICE</td>
@@ -2007,7 +2086,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.content.ComponentCallbacks2" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.content.ComponentCallbacks2-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From interface
 android.content.ComponentCallbacks2
 <div id="inherited-constants-android.content.ComponentCallbacks2">
@@ -2190,7 +2269,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.wearable.watchface.WatchFaceService" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.wearable.watchface.WatchFaceService-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2232,7 +2311,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.service.wallpaper.WallpaperService" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.service.wallpaper.WallpaperService-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2338,7 +2417,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.app.Service" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.app.Service-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2652,7 +2731,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ContextWrapper" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ContextWrapper-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2790,7 +2869,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
+        <span class="sympad">checkSelfPermission</span>(String arg0)</nobr>
         
   </td></tr>
 
@@ -2806,7 +2885,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
         
   </td></tr>
 
@@ -2819,6 +2898,22 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -2828,7 +2923,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2844,7 +2939,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2860,7 +2955,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2876,7 +2971,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2892,7 +2987,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2908,7 +3003,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2924,7 +3019,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2940,7 +3035,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2956,7 +3051,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2972,7 +3067,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2988,7 +3083,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3004,7 +3099,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3020,7 +3115,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3036,7 +3131,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3052,7 +3147,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3068,7 +3163,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3084,7 +3179,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3100,7 +3195,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3116,7 +3211,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3132,7 +3227,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3148,7 +3243,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3164,7 +3259,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3180,7 +3275,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3196,7 +3291,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3212,7 +3307,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3228,7 +3323,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3244,7 +3339,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3260,7 +3355,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3276,7 +3371,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3292,7 +3387,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3308,7 +3403,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3324,7 +3419,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3340,7 +3435,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3356,7 +3451,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3372,7 +3467,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3388,7 +3483,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3404,7 +3499,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3420,7 +3515,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3436,7 +3531,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3452,7 +3547,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3468,7 +3563,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3484,7 +3579,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3500,6 +3595,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSystemServiceName</span>(Class&lt;?&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -4166,7 +4277,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.Context" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.Context-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -4288,7 +4399,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
+        <span class="sympad">checkSelfPermission</span>(String arg0)</nobr>
         
   </td></tr>
 
@@ -4304,7 +4415,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
         
   </td></tr>
 
@@ -4317,6 +4428,22 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -4326,7 +4453,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4342,7 +4469,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4358,7 +4485,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4374,7 +4501,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4390,7 +4517,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4406,7 +4533,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4422,7 +4549,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4438,7 +4565,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4454,7 +4581,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4470,7 +4597,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4486,7 +4613,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4502,7 +4629,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4518,7 +4645,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4534,7 +4661,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4550,7 +4677,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4566,7 +4693,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4582,7 +4709,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4598,7 +4725,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4614,7 +4741,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4630,7 +4757,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4646,8 +4773,40 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getColorStateList</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
             abstract
             
             
@@ -4662,7 +4821,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4678,7 +4837,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4694,7 +4853,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4710,7 +4869,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4726,7 +4885,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4742,7 +4901,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4758,7 +4917,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4774,7 +4933,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4790,7 +4949,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4806,7 +4965,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4822,7 +4981,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4838,7 +4997,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4854,7 +5013,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4870,7 +5029,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4886,7 +5045,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4902,7 +5061,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4918,7 +5077,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4934,7 +5093,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4950,7 +5109,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4966,7 +5125,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4982,7 +5141,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4998,7 +5157,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5014,6 +5173,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            &lt;T&gt;
+            T</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSystemService</span>(Class&lt;T&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
@@ -5032,6 +5207,22 @@
 	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSystemServiceName</span>(Class&lt;?&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
             
             
             final
@@ -5046,7 +5237,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5062,7 +5253,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5078,7 +5269,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5094,7 +5285,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5110,7 +5301,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5126,7 +5317,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5142,7 +5333,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5158,7 +5349,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5174,7 +5365,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5190,7 +5381,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5206,7 +5397,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5222,7 +5413,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5238,7 +5429,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5254,7 +5445,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5270,7 +5461,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5286,7 +5477,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5302,7 +5493,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5318,7 +5509,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5334,7 +5525,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5350,7 +5541,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5366,7 +5557,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5382,7 +5573,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5398,7 +5589,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5414,7 +5605,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5430,7 +5621,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5446,7 +5637,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5462,7 +5653,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5478,7 +5669,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5494,7 +5685,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5510,7 +5701,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5526,7 +5717,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5542,7 +5733,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5558,7 +5749,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5574,7 +5765,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5590,7 +5781,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5606,7 +5797,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5622,7 +5813,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5638,7 +5829,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5654,7 +5845,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5670,7 +5861,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5686,7 +5877,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5702,7 +5893,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5718,7 +5909,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5734,7 +5925,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5750,7 +5941,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5766,7 +5957,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5782,7 +5973,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5808,7 +5999,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -6010,7 +6201,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ComponentCallbacks2" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ComponentCallbacks2-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -6052,7 +6243,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ComponentCallbacks" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ComponentCallbacks-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
diff --git a/docs/html/reference/android/support/wearable/watchface/Gles2WatchFaceService.Engine.html b/docs/html/reference/android/support/wearable/watchface/Gles2WatchFaceService.Engine.html
index aba23a6..2b2c846 100644
--- a/docs/html/reference/android/support/wearable/watchface/Gles2WatchFaceService.Engine.html
+++ b/docs/html/reference/android/support/wearable/watchface/Gles2WatchFaceService.Engine.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -1097,7 +1102,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.wearable.watchface.WatchFaceService.Engine" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.wearable.watchface.WatchFaceService.Engine-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1516,7 +1521,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.service.wallpaper.WallpaperService.Engine" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.service.wallpaper.WallpaperService.Engine-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1862,7 +1867,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/watchface/Gles2WatchFaceService.html b/docs/html/reference/android/support/wearable/watchface/Gles2WatchFaceService.html
index 1dcc7dd..67939cbf 100644
--- a/docs/html/reference/android/support/wearable/watchface/Gles2WatchFaceService.html
+++ b/docs/html/reference/android/support/wearable/watchface/Gles2WatchFaceService.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -883,7 +888,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.support.wearable.watchface.WatchFaceService" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.support.wearable.watchface.WatchFaceService-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 <a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html">android.support.wearable.watchface.WatchFaceService</a>
 <div id="inherited-constants-android.support.wearable.watchface.WatchFaceService">
@@ -897,7 +902,7 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
-        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_ALL">INTERRUPTION_FILTER_ALL</a></td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_ALARMS">INTERRUPTION_FILTER_ALARMS</a></td>
         <td class="jd-descrcol" width="100%">
           Returned by <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getInterruptionFilter()">getInterruptionFilter()</a></code> and passed to
  <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#onInterruptionFilterChanged(int)">onInterruptionFilterChanged(int)</a></code>.
@@ -910,7 +915,7 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
-        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_NONE">INTERRUPTION_FILTER_NONE</a></td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_ALL">INTERRUPTION_FILTER_ALL</a></td>
         <td class="jd-descrcol" width="100%">
           Returned by <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getInterruptionFilter()">getInterruptionFilter()</a></code> and passed to
  <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#onInterruptionFilterChanged(int)">onInterruptionFilterChanged(int)</a></code>.
@@ -923,6 +928,19 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_NONE">INTERRUPTION_FILTER_NONE</a></td>
+        <td class="jd-descrcol" width="100%">
+          Returned by <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getInterruptionFilter()">getInterruptionFilter()</a></code> and passed to
+ <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#onInterruptionFilterChanged(int)">onInterruptionFilterChanged(int)</a></code>.
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_PRIORITY">INTERRUPTION_FILTER_PRIORITY</a></td>
         <td class="jd-descrcol" width="100%">
           Returned by <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getInterruptionFilter()">getInterruptionFilter()</a></code> and passed to
@@ -934,6 +952,19 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_UNKNOWN">INTERRUPTION_FILTER_UNKNOWN</a></td>
+        <td class="jd-descrcol" width="100%">
+          Returned by <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getInterruptionFilter()">getInterruptionFilter()</a></code> and passed to
+ <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#onInterruptionFilterChanged(int)">onInterruptionFilterChanged(int)</a></code>.
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#PROPERTY_BURN_IN_PROTECTION">PROPERTY_BURN_IN_PROTECTION</a></td>
@@ -1010,7 +1041,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.service.wallpaper.WallpaperService" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.service.wallpaper.WallpaperService-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.service.wallpaper.WallpaperService
 <div id="inherited-constants-android.service.wallpaper.WallpaperService">
@@ -1058,7 +1089,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.app.Service" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.app.Service-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.app.Service
 <div id="inherited-constants-android.app.Service">
@@ -1168,7 +1199,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.content.Context" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.content.Context-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.content.Context
 <div id="inherited-constants-android.content.Context">
@@ -1410,7 +1441,7 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
-        <td class="jd-linkcol">CLIPBOARD_SERVICE</td>
+        <td class="jd-linkcol">CARRIER_CONFIG_SERVICE</td>
         <td class="jd-descrcol" width="100%">
           
           
@@ -1422,6 +1453,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">CLIPBOARD_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
         <td class="jd-linkcol">CONNECTIVITY_SERVICE</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1432,7 +1475,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">CONSUMER_IR_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1444,7 +1487,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CONTEXT_IGNORE_SECURITY</td>
         <td class="jd-descrcol" width="100%">
@@ -1456,7 +1499,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CONTEXT_INCLUDE_CODE</td>
         <td class="jd-descrcol" width="100%">
@@ -1468,7 +1511,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CONTEXT_RESTRICTED</td>
         <td class="jd-descrcol" width="100%">
@@ -1480,7 +1523,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DEVICE_POLICY_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1492,7 +1535,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DISPLAY_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1504,7 +1547,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DOWNLOAD_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1516,7 +1559,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DROPBOX_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1528,6 +1571,18 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">FINGERPRINT_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">INPUT_METHOD_SERVICE</td>
@@ -1649,6 +1704,18 @@
     
     
     <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">MIDI_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_APPEND</td>
         <td class="jd-descrcol" width="100%">
@@ -1660,7 +1727,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_ENABLE_WRITE_AHEAD_LOGGING</td>
         <td class="jd-descrcol" width="100%">
@@ -1672,7 +1739,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_MULTI_PROCESS</td>
         <td class="jd-descrcol" width="100%">
@@ -1684,7 +1751,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_PRIVATE</td>
         <td class="jd-descrcol" width="100%">
@@ -1696,7 +1763,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_WORLD_READABLE</td>
         <td class="jd-descrcol" width="100%">
@@ -1708,7 +1775,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_WORLD_WRITEABLE</td>
         <td class="jd-descrcol" width="100%">
@@ -1720,6 +1787,18 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">NETWORK_STATS_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">NFC_SERVICE</td>
@@ -2010,7 +2089,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.content.ComponentCallbacks2" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.content.ComponentCallbacks2-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From interface
 android.content.ComponentCallbacks2
 <div id="inherited-constants-android.content.ComponentCallbacks2">
@@ -2193,7 +2272,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.support.wearable.watchface.WatchFaceService" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.support.wearable.watchface.WatchFaceService-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2235,7 +2314,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.service.wallpaper.WallpaperService" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.service.wallpaper.WallpaperService-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2341,7 +2420,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.app.Service" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.app.Service-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2655,7 +2734,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ContextWrapper" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ContextWrapper-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2793,7 +2872,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
+        <span class="sympad">checkSelfPermission</span>(String arg0)</nobr>
         
   </td></tr>
 
@@ -2809,7 +2888,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
         
   </td></tr>
 
@@ -2822,6 +2901,22 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -2831,7 +2926,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2847,7 +2942,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2863,7 +2958,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2879,7 +2974,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2895,7 +2990,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2911,7 +3006,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2927,7 +3022,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2943,7 +3038,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2959,7 +3054,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2975,7 +3070,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2991,7 +3086,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3007,7 +3102,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3023,7 +3118,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3039,7 +3134,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3055,7 +3150,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3071,7 +3166,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3087,7 +3182,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3103,7 +3198,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3119,7 +3214,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3135,7 +3230,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3151,7 +3246,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3167,7 +3262,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3183,7 +3278,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3199,7 +3294,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3215,7 +3310,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3231,7 +3326,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3247,7 +3342,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3263,7 +3358,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3279,7 +3374,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3295,7 +3390,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3311,7 +3406,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3327,7 +3422,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3343,7 +3438,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3359,7 +3454,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3375,7 +3470,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3391,7 +3486,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3407,7 +3502,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3423,7 +3518,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3439,7 +3534,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3455,7 +3550,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3471,7 +3566,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3487,7 +3582,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3503,6 +3598,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSystemServiceName</span>(Class&lt;?&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -4169,7 +4280,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.Context" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.Context-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -4291,7 +4402,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
+        <span class="sympad">checkSelfPermission</span>(String arg0)</nobr>
         
   </td></tr>
 
@@ -4307,7 +4418,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
         
   </td></tr>
 
@@ -4320,6 +4431,22 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -4329,7 +4456,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4345,7 +4472,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4361,7 +4488,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4377,7 +4504,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4393,7 +4520,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4409,7 +4536,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4425,7 +4552,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4441,7 +4568,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4457,7 +4584,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4473,7 +4600,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4489,7 +4616,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4505,7 +4632,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4521,7 +4648,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4537,7 +4664,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4553,7 +4680,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4569,7 +4696,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4585,7 +4712,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4601,7 +4728,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4617,7 +4744,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4633,7 +4760,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4649,8 +4776,40 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getColorStateList</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
             abstract
             
             
@@ -4665,7 +4824,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4681,7 +4840,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4697,7 +4856,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4713,7 +4872,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4729,7 +4888,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4745,7 +4904,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4761,7 +4920,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4777,7 +4936,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4793,7 +4952,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4809,7 +4968,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4825,7 +4984,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4841,7 +5000,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4857,7 +5016,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4873,7 +5032,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4889,7 +5048,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4905,7 +5064,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4921,7 +5080,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4937,7 +5096,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4953,7 +5112,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4969,7 +5128,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4985,7 +5144,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5001,7 +5160,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5017,6 +5176,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            &lt;T&gt;
+            T</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSystemService</span>(Class&lt;T&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
@@ -5035,6 +5210,22 @@
 	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSystemServiceName</span>(Class&lt;?&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
             
             
             final
@@ -5049,7 +5240,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5065,7 +5256,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5081,7 +5272,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5097,7 +5288,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5113,7 +5304,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5129,7 +5320,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5145,7 +5336,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5161,7 +5352,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5177,7 +5368,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5193,7 +5384,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5209,7 +5400,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5225,7 +5416,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5241,7 +5432,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5257,7 +5448,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5273,7 +5464,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5289,7 +5480,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5305,7 +5496,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5321,7 +5512,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5337,7 +5528,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5353,7 +5544,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5369,7 +5560,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5385,7 +5576,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5401,7 +5592,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5417,7 +5608,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5433,7 +5624,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5449,7 +5640,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5465,7 +5656,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5481,7 +5672,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5497,7 +5688,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5513,7 +5704,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5529,7 +5720,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5545,7 +5736,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5561,7 +5752,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5577,7 +5768,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5593,7 +5784,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5609,7 +5800,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5625,7 +5816,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5641,7 +5832,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5657,7 +5848,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5673,7 +5864,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5689,7 +5880,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5705,7 +5896,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5721,7 +5912,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5737,7 +5928,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5753,7 +5944,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5769,7 +5960,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5785,7 +5976,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5811,7 +6002,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -6013,7 +6204,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ComponentCallbacks2" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ComponentCallbacks2-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -6055,7 +6246,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ComponentCallbacks" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ComponentCallbacks-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
diff --git a/docs/html/reference/android/support/wearable/watchface/WatchFaceService.Engine.html b/docs/html/reference/android/support/wearable/watchface/WatchFaceService.Engine.html
index ad6cc2c..23f17e1 100644
--- a/docs/html/reference/android/support/wearable/watchface/WatchFaceService.Engine.html
+++ b/docs/html/reference/android/support/wearable/watchface/WatchFaceService.Engine.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -662,7 +667,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-direct" class="jd-expando-trigger closed"
           ><img id="subclasses-direct-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Direct Subclasses
 
   <div id="subclasses-direct">
@@ -1217,7 +1222,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.service.wallpaper.WallpaperService.Engine" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.service.wallpaper.WallpaperService.Engine-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1563,7 +1568,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1870,8 +1875,9 @@
   <div class="jd-tagdata jd-tagdescr"><p>Returns interruption filter selected by the user.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li><code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_NONE">INTERRUPTION_FILTER_NONE</a></code>, <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_PRIORITY">INTERRUPTION_FILTER_PRIORITY</a></code> or
-         <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_ALL">INTERRUPTION_FILTER_ALL</a></code>
+      <ul class="nolist"><li><code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_NONE">INTERRUPTION_FILTER_NONE</a></code>, <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_PRIORITY">INTERRUPTION_FILTER_PRIORITY</a></code>,
+         <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_ALL">INTERRUPTION_FILTER_ALL</a></code>, <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_ALARMS">INTERRUPTION_FILTER_ALARMS</a></code>,
+         or <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_UNKNOWN">INTERRUPTION_FILTER_UNKNOWN</a></code>.
 </li></ul>
   </div>
 
@@ -2174,8 +2180,9 @@
   <div class="jd-tagdata jd-tagdescr"><p>Called when the user changes interruption filter. The watch face should adjust the
  amount of information it displays. For example, if it displays the
  number of pending emails, it should hide it if interruptionFilter is equal to <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_NONE">INTERRUPTION_FILTER_NONE</a></code>. <code>interruptionFilter</code> can be
- <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_NONE">INTERRUPTION_FILTER_NONE</a></code>, <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_PRIORITY">INTERRUPTION_FILTER_PRIORITY</a></code> or
- <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_ALL">INTERRUPTION_FILTER_ALL</a></code>.
+ <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_NONE">INTERRUPTION_FILTER_NONE</a></code>, <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_PRIORITY">INTERRUPTION_FILTER_PRIORITY</a></code>,
+ <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_ALL">INTERRUPTION_FILTER_ALL</a></code>, <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_ALARMS">INTERRUPTION_FILTER_ALARMS</a></code>,
+ or <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_UNKNOWN">INTERRUPTION_FILTER_UNKNOWN</a></code>.
 </p></div>
 
     </div>
diff --git a/docs/html/reference/android/support/wearable/watchface/WatchFaceService.TapType.html b/docs/html/reference/android/support/wearable/watchface/WatchFaceService.TapType.html
new file mode 100644
index 0000000..6ae7176
--- /dev/null
+++ b/docs/html/reference/android/support/wearable/watchface/WatchFaceService.TapType.html
@@ -0,0 +1,1024 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta content="IE=edge" http-equiv="X-UA-Compatible">
+
+<link rel="shortcut icon" type="image/x-icon" href="../../../../../favicon.ico" />
+<title>WatchFaceService.TapType | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="http://fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+
+<link href="../../../../../assets/css/default.css?v=7" rel="stylesheet" type="text/css">
+
+
+<!-- FULLSCREEN STYLESHEET -->
+<link href="../../../../../assets/css/fullscreen.css" rel="stylesheet" class="fullscreen"
+type="text/css">
+
+
+<!-- JAVASCRIPT -->
+<script src="http://www.google.com/jsapi" type="text/javascript"></script>
+<script src="../../../../../assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "../../../../../";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="../../../../../assets/js/docs.js?v=6" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation 
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div class="dac-header" id="header">
+
+
+
+
+      <div class="dac-header-inner">
+        <a class="dac-nav-toggle" data-dac-toggle-nav href="javascript:;" title="Open navigation">
+          <span class="dac-nav-hamburger">
+            <span class="dac-nav-hamburger-top"></span>
+            <span class="dac-nav-hamburger-mid"></span>
+            <span class="dac-nav-hamburger-bot"></span>
+          </span>
+        </a>
+        <a class="dac-header-logo" href="../../../../../index.html">
+          <img class="dac-header-logo-image" src="../../../../../assets/images/android_logo.png"
+              srcset="../../../../../assets/images/android_logo@2x.png 2x"
+              width="32" height="36" alt="Android" /> Developers
+          </a>
+
+        <ul class="dac-header-crumbs">
+          
+          <li class="dac-header-crumbs-item"><span class="dac-header-crumbs-link current ">WatchFaceService.TapType</a></li>
+        </ul>
+
+        
+        
+        
+  <div class="dac-header-search" id="search-container">
+    <div class="dac-header-search-inner">
+      <div class="dac-sprite dac-search dac-header-search-btn" id="search-btn"></div>
+      <form class="dac-header-search-form" onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '../../../../../')"
+          onkeyup="return search_changed(event, false, '../../../../../')"
+          class="dac-header-search-input" placeholder="Search" />
+          <a class="dac-header-search-close hide" id="search-close">close</a>
+      </form>
+    </div><!-- end dac-header-search-inner -->
+  </div><!-- end dac-header-search -->
+
+  <div class="search_filtered_wrapper">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+        
+
+        <a class="dac-header-console-btn" href="https://play.google.com/apps/publish/">
+          <span class="dac-sprite dac-google-play"></span>
+          <span class="dac-visible-desktop-inline">Developer</span>
+          Console
+        </a>
+
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  
+  <!-- Navigation-->
+  <nav class="dac-nav">
+    <div class="dac-nav-dimmer" data-dac-toggle-nav></div>
+
+    <ul class="dac-nav-list" data-dac-nav>
+      <li class="dac-nav-item dac-nav-head">
+        <a class="dac-nav-link dac-nav-logo" data-dac-toggle-nav href="javascript:;" title="Close navigation">
+          <img class="dac-logo-image" src="../../../../../assets/images/android_logo.png"
+               srcset="../../../../../assets/images/android_logo@2x.png 2x"
+               width="32" height="36" alt="Android" /> Developers
+        </a>
+      </li>
+      <li class="dac-nav-item home">
+        <a class="dac-nav-link dac-visible-mobile-block" href="../../../../../index.html">Home</a>
+        <ul class="dac-nav-secondary about">
+          <li class="dac-nav-item about">
+            <a class="dac-nav-link" href="../../../../../about/index.html">Android</a>
+          </li>
+          <li class="dac-nav-item wear">
+            <a class="dac-nav-link" href="../../../../../wear/index.html">Wear</a>
+          </li>
+          <li class="dac-nav-item tv">
+            <a class="dac-nav-link" href="../../../../../tv/index.html">TV</a>
+          </li>
+          <li class="dac-nav-item auto">
+            <a class="dac-nav-link" href="../../../../../auto/index.html">Auto</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item design">
+        <a class="dac-nav-link" href="../../../../../design/index.html"
+           zh-tw-lang="設計"
+           zh-cn-lang="设计"
+           ru-lang="Проектирование"
+           ko-lang="디자인"
+           ja-lang="設計"
+           es-lang="Diseñar">Design</a>
+      </li>
+      <li class="dac-nav-item develop">
+        <a class="dac-nav-link" href="../../../../../develop/index.html"
+           zh-tw-lang="開發"
+           zh-cn-lang="开发"
+           ru-lang="Разработка"
+           ko-lang="개발"
+           ja-lang="開発"
+           es-lang="Desarrollar">Develop</a>
+        <ul class="dac-nav-secondary develop">
+          <li class="dac-nav-item training">
+            <a class="dac-nav-link" href="../../../../../training/index.html"
+               zh-tw-lang="訓練課程"
+               zh-cn-lang="培训"
+               ru-lang="Курсы"
+               ko-lang="교육"
+               ja-lang="トレーニング"
+               es-lang="Capacitación">Training</a>
+          </li>
+          <li class="dac-nav-item guide">
+            <a class="dac-nav-link" href="../../../../../guide/index.html"
+               zh-tw-lang="API 指南"
+               zh-cn-lang="API 指南"
+               ru-lang="Руководства по API"
+               ko-lang="API 가이드"
+               ja-lang="API ガイド"
+               es-lang="Guías de la API">API Guides</a>
+          </li>
+          <li class="dac-nav-item reference">
+            <a class="dac-nav-link" href="../../../../../reference/packages.html"
+               zh-tw-lang="參考資源"
+               zh-cn-lang="参考"
+               ru-lang="Справочник"
+               ko-lang="참조문서"
+               ja-lang="リファレンス"
+               es-lang="Referencia">Reference</a>
+          </li>
+          <li class="dac-nav-item tools">
+            <a class="dac-nav-link" href="../../../../../sdk/index.html"
+               zh-tw-lang="相關工具"
+               zh-cn-lang="工具"
+               ru-lang="Инструменты"
+               ko-lang="도구"
+               ja-lang="ツール"
+               es-lang="Herramientas">Tools</a></li>
+          <li class="dac-nav-item google">
+            <a class="dac-nav-link" href="../../../../../google/index.html">Google Services</a>
+          </li>
+          
+          <li class="dac-nav-item preview">
+            <a class="dac-nav-link" href="../../../../../preview/index.html">Preview</a>
+          </li>
+        </ul>
+      </li>
+      <li class="dac-nav-item distribute">
+        <a class="dac-nav-link" href="../../../../../distribute/googleplay/index.html"
+           zh-tw-lang="發佈"
+           zh-cn-lang="分发"
+           ru-lang="Распространение"
+           ko-lang="배포"
+           ja-lang="配布"
+           es-lang="Distribuir">Distribute</a>
+        <ul class="dac-nav-secondary distribute">
+          <li class="dac-nav-item googleplay">
+            <a class="dac-nav-link" href="../../../../../distribute/googleplay/index.html">Google Play</a></li>
+          <li class="dac-nav-item essentials">
+            <a class="dac-nav-link" href="../../../../../distribute/essentials/index.html">Essentials</a></li>
+          <li class="dac-nav-item users">
+            <a class="dac-nav-link" href="../../../../../distribute/users/index.html">Get Users</a></li>
+          <li class="dac-nav-item engage">
+            <a class="dac-nav-link" href="../../../../../distribute/engage/index.html">Engage &amp; Retain</a></li>
+          <li class="dac-nav-item monetize">
+            <a class="dac-nav-link" href="../../../../../distribute/monetize/index.html">Earn</a>
+          </li>
+          <li class="dac-nav-item analyze">
+            <a class="dac-nav-link" href="../../../../../distribute/analyze/index.html">Analyze</a>
+          </li>
+          <li class="dac-nav-item stories">
+            <a class="dac-nav-link" href="../../../../../distribute/stories/index.html">Stories</a>
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </nav>
+  <!-- end navigation-->
+  
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content"><div class="cols">
+    <div class="col-4 dac-hidden-mobile" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav">
+      <div id="api-nav-header">
+        <div id="api-level-toggle">
+          <label for="apiLevelCheckbox" class="disabled"
+            title="Select your target API level to dim unavailable APIs">API level: </label>
+          <div class="select-wrapper">
+            <select id="apiLevelSelector">
+              <!-- option elements added by buildApiLevelSelector() -->
+            </select>
+          </div>
+        </div><!-- end toggle -->
+        <div id="api-nav-title">Android APIs</div>
+        </div><!-- end nav header -->
+      <script>
+        var SINCE_DATA = [  ];
+        buildApiLevelSelector();
+      </script>
+
+      <div id="swapper">
+        <div id="nav-panels">
+          <div id="resize-packages-nav">
+            <div id="packages-nav" class="scroll-pane">
+
+              <ul>
+                
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/package-summary.html">android.support.wearable</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/activity/package-summary.html">android.support.wearable.activity</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/companion/package-summary.html">android.support.wearable.companion</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/input/package-summary.html">android.support.wearable.input</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/media/package-summary.html">android.support.wearable.media</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/provider/package-summary.html">android.support.wearable.provider</a></li>
+    <li class="api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/view/package-summary.html">android.support.wearable.view</a></li>
+    <li class="selected api apilevel-">
+  <a href="../../../../../reference/android/support/wearable/watchface/package-summary.html">android.support.wearable.watchface</a></li>
+              </ul><br/>
+
+            </div> <!-- end packages-nav -->
+          </div> <!-- end resize-packages -->
+          <div id="classes-nav" class="scroll-pane">
+
+
+
+            <ul>
+              
+    <li><h2>Annotations</h2>
+      <ul>
+          <li class="selected api apilevel-"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.TapType.html">WatchFaceService.TapType</a></li>
+      </ul>
+    </li>
+              
+              
+    <li><h2>Classes</h2>
+      <ul>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/watchface/CanvasWatchFaceService.html">CanvasWatchFaceService</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html">CanvasWatchFaceService.Engine</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/watchface/Gles2WatchFaceService.html">Gles2WatchFaceService</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/watchface/Gles2WatchFaceService.Engine.html">Gles2WatchFaceService.Engine</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html">WatchFaceService</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html">WatchFaceService.Engine</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceStyle.html">WatchFaceStyle</a></li>
+          <li class="api apilevel-"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceStyle.Builder.html">WatchFaceStyle.Builder</a></li>
+      </ul>
+    </li>
+              
+              
+              
+            </ul><br/>
+
+
+          </div><!-- end classes -->
+        </div><!-- end nav-panels -->
+        <div id="nav-tree" style="display:none" class="scroll-pane">
+          <div id="tree-list"></div>
+        </div><!-- end nav-tree -->
+      </div><!-- end swapper -->
+      <div id="nav-swap">
+      <a class="fullscreen">fullscreen</a>
+      <a href='#' onclick='swapNav();return false;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>
+      </div>
+    </div> <!-- end devdoc-nav -->
+    </div> <!-- end side-nav -->
+    <script type="text/javascript">
+      // init fullscreen based on user pref
+      var fullscreen = readCookie("fullscreen");
+      if (fullscreen != 0) {
+        if (fullscreen == "false") {
+          toggleFullscreen(false);
+        } else {
+          toggleFullscreen(true);
+        }
+      }
+      // init nav version for mobile
+      if (isMobile) {
+        swapNav(); // tree view should be used on mobile
+        $('#nav-swap').hide();
+      } else {
+        chooseDefaultNav();
+        if ($("#nav-tree").is(':visible')) {
+          init_default_navtree("../../../../../");
+        }
+      }
+      // scroll the selected page into view
+      $(document).ready(function() {
+        scrollIntoView("packages-nav");
+        scrollIntoView("classes-nav");
+        });
+    </script>
+
+     
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+  
+   
+  
+  
+  
+  
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+
+
+
+
+
+
+  <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+  
+  
+  
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static 
+     
+    abstract
+    @interface
+<h1 itemprop="name">WatchFaceService.TapType</h1>
+
+
+
+  
+  
+      implements 
+      
+        Annotation 
+      
+  
+  
+
+
+    
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+         	
+        <td colspan="1" class="jd-inheritance-class-cell">android.support.wearable.watchface.WatchFaceService.TapType</td>
+    </tr>
+    
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.annotation.Annotation" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.annotation.Annotation-trigger"
+          src="../../../../../assets/images/styles/disclosure_down.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  java.lang.annotation.Annotation
+
+<div id="inherited-methods-java.lang.annotation.Annotation">
+  <div id="inherited-methods-java.lang.annotation.Annotation-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.annotation.Annotation-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+    
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            Class&lt;?&nbsp;extends&nbsp;Annotation&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">annotationType</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+        
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+</div> <!-- jd-content -->
+
+<div class="wrap">
+  <div class="dac-footer">
+    <div class="cols dac-footer-main">
+      <div class="col-1of2">
+        <a class="dac-footer-getnews" data-modal-toggle="newsletter" href="javascript:;">Get news &amp; tips <span
+          class="dac-fab dac-primary"><i class="dac-sprite dac-mail"></i></span></a>
+      </div>
+      <div class="col-1of2 dac-footer-reachout">
+        <div class="dac-footer-contact">
+          <a class="dac-footer-contact-link" href="http://android-developers.blogspot.com/">Blog</a>
+          <a class="dac-footer-contact-link" href="/support.html">Support</a>
+        </div>
+        <div class="dac-footer-social">
+          <a class="dac-fab dac-footer-social-link" href="https://www.youtube.com/user/androiddevelopers"><i class="dac-sprite dac-youtube"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://plus.google.com/+AndroidDevelopers"><i class="dac-sprite dac-gplus"></i></a>
+          <a class="dac-fab dac-footer-social-link" href="https://twitter.com/AndroidDev"><i class="dac-sprite dac-twitter"></i></a>
+        </div>
+      </div>
+    </div>
+
+    <hr class="dac-footer-separator"/>
+
+    
+      <p class="dac-footer-copyright">
+        
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="../../../../../license.html">
+  Content License</a>.
+      </p>
+      <p class="dac-footer-build">
+        
+    Android Wearable Support&nbsp;r &mdash; 
+<script src="../../../../../timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+      </p>
+    
+
+    <p class="dac-footer-links">
+      <a href="/about/index.html">About Android</a>
+      <a href="/auto/index.html">Auto</a>
+      <a href="/tv/index.html">TV</a>
+      <a href="/wear/index.html">Wear</a>
+      <a href="/legal.html">Legal</a>
+
+      <span id="language" class="locales">
+        <select name="language" onchange="changeLangPref(this.value, true)">
+          <option value="en" selected="selected">English</option>
+          <option value="es">Español</option>
+          <option value="ja">日本語</option>
+          <option value="ko">한국어</option>
+          <option value="pt-br">Português Brasileiro</option>
+          <option value="ru">Русский</option>
+          <option value="zh-cn">中文(简体)</option>
+          <option value="zh-tw">中文(繁體)</option>
+        </select>
+      </span>
+    </p>
+  </div>
+</div> <!-- end footer -->
+
+<div data-modal="newsletter" data-newsletter data-swap class="dac-modal newsletter">
+  <div class="dac-modal-container">
+    <div class="dac-modal-window">
+      <header class="dac-modal-header">
+        <button class="dac-modal-header-close" data-modal-toggle><i class="dac-sprite dac-close"></i></button>
+        <div class="dac-swap" data-swap-container>
+          <section class="dac-swap-section dac-active dac-down">
+            <h2 class="norule dac-modal-header-title">Get the latest Android developer news and tips that will help you find success on Google Play.</h2>
+            <p class="dac-modal-header-subtitle">&#42; Required Fields</p>
+          </section>
+          <section class="dac-swap-section dac-up">
+            <h2 class="norule dac-modal-header-title">Hooray!</h2>
+          </section>
+        </div>
+      </header>
+      <div class="dac-swap" data-swap-container>
+        <section class="dac-swap-section dac-active dac-left">
+          <form action="https://docs.google.com/forms/d/1QgnkzbEJIDu9lMEea0mxqWrXUJu0oBCLD7ar23V0Yys/formResponse" class="dac-form" method="post" target="dac-newsletter-iframe">
+            <section class="dac-modal-content">
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-full-name" class="dac-form-floatlabel">Full name</label>
+                      <input type="text" class="dac-form-input" name="entry.1357890476" id="newsletter-full-name" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-email" class="dac-form-floatlabel">Email address</label>
+                      <input type="email" class="dac-form-input" name="entry.472100832" id="newsletter-email" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol">
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-company" class="dac-form-floatlabel">Company / developer name</label>
+                      <input type="text" class="dac-form-input" name="entry.1664780309" id="newsletter-company">
+                    </div>
+                    <div class="dac-form-input-group">
+                      <label for="newsletter-play-store" class="dac-form-floatlabel">One of your Play Store app URLs</label>
+                      <input type="url" class="dac-form-input" name="entry.47013838" id="newsletter-play-store" required>
+                      <span class="dac-form-required">*</span>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+              <fieldset class="dac-form-fieldset">
+                <div class="cols">
+                  <div class="col-1of2 newsletter-leftCol">
+                    <legend class="dac-form-legend">Which best describes your business:<span class="dac-form-required">*</span>
+                    </legend>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-app" required>
+                      <label for="newsletter-business-type-app" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-app" class="dac-form-label">Apps</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-games" required>
+                      <label for="newsletter-business-type-games" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-games" class="dac-form-label">Games</label>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <input type="radio" value="Apps and Games" class="dac-form-radio" name="entry.1796324055" id="newsletter-business-type-appsgames" required>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-radio-button"></label>
+                      <label for="newsletter-business-type-appsgames" class="dac-form-label">Apps &amp; Games</label>
+                    </div>
+                  </div>
+                  <div class="col-1of2 newsletter-rightCol newsletter-checkboxes">
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.732309842" id="newsletter-add" required value="Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.">
+                          <label for="newsletter-add" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-add" class="dac-form-label dac-form-aside">Add me to the mailing list for the monthly newsletter and occasional emails about development and Google Play opportunities.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                    <div class="dac-form-radio-group">
+                      <div class="dac-media">
+                        <div class="dac-media-figure">
+                          <input type="checkbox" class="dac-form-checkbox" name="entry.2045036090" id="newsletter-terms" required value="I acknowledge that the information provided in this form will be subject to Google's privacy policy (https://www.google.com/policies/privacy/).">
+                          <label for="newsletter-terms" class="dac-form-checkbox-button"></label>
+                        </div>
+                        <div class="dac-media-body">
+                          <label for="newsletter-terms" class="dac-form-label dac-form-aside">I acknowledge that the information provided in this form will be subject to <a href="https://www.google.com/policies/privacy/">Google's privacy policy</a>.<span class="dac-form-required">*</span></label>
+                        </div>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </fieldset>
+            </section>
+            <footer class="dac-modal-footer">
+              <div class="cols">
+                <div class="col-2of5">
+                </div>
+              </div>
+              <button type="submit" value="Submit" class="dac-fab dac-primary dac-large dac-modal-action"><i class="dac-sprite dac-arrow-right"></i></button>
+            </footer>
+          </form>
+        </section>
+        <section class="dac-swap-section dac-right">
+          <div class="dac-modal-content">
+            <p class="newsletter-success-message">
+              You have successfully signed up for the latest Android developer news and tips.
+            </p>
+          </div>
+        </section>
+      </div>
+    </div>
+  </div>
+</div> <!-- end footer -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end .cols --> 
+</div> <!-- end body-content --> 
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/android/support/wearable/watchface/WatchFaceService.html b/docs/html/reference/android/support/wearable/watchface/WatchFaceService.html
index 40cf0a3..ef29440 100644
--- a/docs/html/reference/android/support/wearable/watchface/WatchFaceService.html
+++ b/docs/html/reference/android/support/wearable/watchface/WatchFaceService.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -768,7 +773,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-direct" class="jd-expando-trigger closed"
           ><img id="subclasses-direct-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>Known Direct Subclasses
 
   <div id="subclasses-direct">
@@ -844,10 +849,9 @@
  sleep until the watch face finishes drawing.
 
  <p>Registering watch faces in your application works similarly to registering wallpapers with
- several additional steps. First, watch faces require two permissions:
+ several additional steps. First, watch faces require the wake lock permission:
 
  <pre class="prettyprint">
- &lt;uses-permission android:name="com.google.android.permission.PROVIDE_BACKGROUND" /&gt;
  &lt;uses-permission android:name="android.permission.WAKE_LOCK" /&gt;
  </pre>
 
@@ -964,7 +968,7 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
-        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_ALL">INTERRUPTION_FILTER_ALL</a></td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_ALARMS">INTERRUPTION_FILTER_ALARMS</a></td>
         <td class="jd-descrcol" width="100%">
           Returned by <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getInterruptionFilter()">getInterruptionFilter()</a></code> and passed to
  <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#onInterruptionFilterChanged(int)">onInterruptionFilterChanged(int)</a></code>.
@@ -977,7 +981,7 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
-        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_NONE">INTERRUPTION_FILTER_NONE</a></td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_ALL">INTERRUPTION_FILTER_ALL</a></td>
         <td class="jd-descrcol" width="100%">
           Returned by <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getInterruptionFilter()">getInterruptionFilter()</a></code> and passed to
  <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#onInterruptionFilterChanged(int)">onInterruptionFilterChanged(int)</a></code>.
@@ -990,6 +994,19 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_NONE">INTERRUPTION_FILTER_NONE</a></td>
+        <td class="jd-descrcol" width="100%">
+          Returned by <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getInterruptionFilter()">getInterruptionFilter()</a></code> and passed to
+ <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#onInterruptionFilterChanged(int)">onInterruptionFilterChanged(int)</a></code>.
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_PRIORITY">INTERRUPTION_FILTER_PRIORITY</a></td>
         <td class="jd-descrcol" width="100%">
           Returned by <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getInterruptionFilter()">getInterruptionFilter()</a></code> and passed to
@@ -1001,6 +1018,19 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#INTERRUPTION_FILTER_UNKNOWN">INTERRUPTION_FILTER_UNKNOWN</a></td>
+        <td class="jd-descrcol" width="100%">
+          Returned by <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getInterruptionFilter()">getInterruptionFilter()</a></code> and passed to
+ <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#onInterruptionFilterChanged(int)">onInterruptionFilterChanged(int)</a></code>.
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol"><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.html#PROPERTY_BURN_IN_PROTECTION">PROPERTY_BURN_IN_PROTECTION</a></td>
@@ -1083,7 +1113,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.service.wallpaper.WallpaperService" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.service.wallpaper.WallpaperService-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.service.wallpaper.WallpaperService
 <div id="inherited-constants-android.service.wallpaper.WallpaperService">
@@ -1131,7 +1161,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.app.Service" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.app.Service-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.app.Service
 <div id="inherited-constants-android.app.Service">
@@ -1241,7 +1271,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.content.Context" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.content.Context-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 android.content.Context
 <div id="inherited-constants-android.content.Context">
@@ -1483,7 +1513,7 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
-        <td class="jd-linkcol">CLIPBOARD_SERVICE</td>
+        <td class="jd-linkcol">CARRIER_CONFIG_SERVICE</td>
         <td class="jd-descrcol" width="100%">
           
           
@@ -1495,6 +1525,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">CLIPBOARD_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
         <td class="jd-linkcol">CONNECTIVITY_SERVICE</td>
         <td class="jd-descrcol" width="100%">
           
@@ -1505,7 +1547,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">CONSUMER_IR_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1517,7 +1559,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CONTEXT_IGNORE_SECURITY</td>
         <td class="jd-descrcol" width="100%">
@@ -1529,7 +1571,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CONTEXT_INCLUDE_CODE</td>
         <td class="jd-descrcol" width="100%">
@@ -1541,7 +1583,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CONTEXT_RESTRICTED</td>
         <td class="jd-descrcol" width="100%">
@@ -1553,7 +1595,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DEVICE_POLICY_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1565,7 +1607,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DISPLAY_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1577,7 +1619,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DOWNLOAD_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1589,7 +1631,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">DROPBOX_SERVICE</td>
         <td class="jd-descrcol" width="100%">
@@ -1601,6 +1643,18 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">FINGERPRINT_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">INPUT_METHOD_SERVICE</td>
@@ -1722,6 +1776,18 @@
     
     
     <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">MIDI_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_APPEND</td>
         <td class="jd-descrcol" width="100%">
@@ -1733,7 +1799,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_ENABLE_WRITE_AHEAD_LOGGING</td>
         <td class="jd-descrcol" width="100%">
@@ -1745,7 +1811,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_MULTI_PROCESS</td>
         <td class="jd-descrcol" width="100%">
@@ -1757,7 +1823,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_PRIVATE</td>
         <td class="jd-descrcol" width="100%">
@@ -1769,7 +1835,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_WORLD_READABLE</td>
         <td class="jd-descrcol" width="100%">
@@ -1781,7 +1847,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">MODE_WORLD_WRITEABLE</td>
         <td class="jd-descrcol" width="100%">
@@ -1793,6 +1859,18 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol">NETWORK_STATS_SERVICE</td>
+        <td class="jd-descrcol" width="100%">
+          
+          
+    
+
+        </td>
+    </tr>
+    
+    
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol">NFC_SERVICE</td>
@@ -2083,7 +2161,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.content.ComponentCallbacks2" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.content.ComponentCallbacks2-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From interface
 android.content.ComponentCallbacks2
 <div id="inherited-constants-android.content.ComponentCallbacks2">
@@ -2266,7 +2344,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.service.wallpaper.WallpaperService" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.service.wallpaper.WallpaperService-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2372,7 +2450,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.app.Service" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.app.Service-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2686,7 +2764,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ContextWrapper" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ContextWrapper-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -2824,7 +2902,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
+        <span class="sympad">checkSelfPermission</span>(String arg0)</nobr>
         
   </td></tr>
 
@@ -2840,7 +2918,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
         
   </td></tr>
 
@@ -2853,6 +2931,22 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -2862,7 +2956,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2878,7 +2972,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2894,7 +2988,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2910,7 +3004,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2926,7 +3020,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2942,7 +3036,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2958,7 +3052,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2974,7 +3068,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2990,7 +3084,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3006,7 +3100,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3022,7 +3116,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3038,7 +3132,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3054,7 +3148,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3070,7 +3164,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3086,7 +3180,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3102,7 +3196,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3118,7 +3212,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3134,7 +3228,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3150,7 +3244,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3166,7 +3260,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3182,7 +3276,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3198,7 +3292,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3214,7 +3308,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3230,7 +3324,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3246,7 +3340,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3262,7 +3356,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3278,7 +3372,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3294,7 +3388,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3310,7 +3404,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3326,7 +3420,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3342,7 +3436,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3358,7 +3452,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3374,7 +3468,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3390,7 +3484,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3406,7 +3500,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3422,7 +3516,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3438,7 +3532,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3454,7 +3548,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3470,7 +3564,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3486,7 +3580,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3502,7 +3596,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3518,7 +3612,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -3534,6 +3628,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSystemServiceName</span>(Class&lt;?&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -4200,7 +4310,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.Context" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.Context-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -4322,7 +4432,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
+        <span class="sympad">checkSelfPermission</span>(String arg0)</nobr>
         
   </td></tr>
 
@@ -4338,7 +4448,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, int arg1, int arg2, int arg3)</nobr>
         
   </td></tr>
 
@@ -4351,6 +4461,22 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">checkUriPermission</span>(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -4360,7 +4486,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4376,7 +4502,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4392,7 +4518,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4408,7 +4534,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4424,7 +4550,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4440,7 +4566,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4456,7 +4582,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4472,7 +4598,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4488,7 +4614,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4504,7 +4630,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4520,7 +4646,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4536,7 +4662,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4552,7 +4678,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4568,7 +4694,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4584,7 +4710,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4600,7 +4726,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4616,7 +4742,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4632,7 +4758,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4648,7 +4774,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4664,7 +4790,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4680,8 +4806,40 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getColor</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            
+            ColorStateList</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getColorStateList</span>(int arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
             abstract
             
             
@@ -4696,7 +4854,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4712,7 +4870,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4728,7 +4886,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -4744,7 +4902,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4760,7 +4918,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4776,7 +4934,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4792,7 +4950,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4808,7 +4966,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4824,7 +4982,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4840,7 +4998,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4856,7 +5014,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4872,7 +5030,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4888,7 +5046,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4904,7 +5062,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4920,7 +5078,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4936,7 +5094,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4952,7 +5110,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4968,7 +5126,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -4984,7 +5142,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5000,7 +5158,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5016,7 +5174,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5032,7 +5190,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5048,6 +5206,22 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            
+            
+            final
+            
+            &lt;T&gt;
+            T</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSystemService</span>(Class&lt;T&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
@@ -5066,6 +5240,22 @@
 	 
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
+            abstract
+            
+            
+            
+            
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSystemServiceName</span>(Class&lt;?&gt; arg0)</nobr>
+        
+  </td></tr>
+
+
+	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
             
             
             final
@@ -5080,7 +5270,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5096,7 +5286,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5112,7 +5302,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5128,7 +5318,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5144,7 +5334,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5160,7 +5350,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5176,7 +5366,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5192,7 +5382,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5208,7 +5398,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5224,7 +5414,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5240,7 +5430,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5256,7 +5446,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5272,7 +5462,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5288,7 +5478,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5304,7 +5494,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5320,7 +5510,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5336,7 +5526,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5352,7 +5542,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5368,7 +5558,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5384,7 +5574,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5400,7 +5590,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5416,7 +5606,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5432,7 +5622,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5448,7 +5638,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5464,7 +5654,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5480,7 +5670,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5496,7 +5686,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5512,7 +5702,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5528,7 +5718,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5544,7 +5734,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5560,7 +5750,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5576,7 +5766,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5592,7 +5782,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5608,7 +5798,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5624,7 +5814,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5640,7 +5830,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5656,7 +5846,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5672,7 +5862,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5688,7 +5878,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5704,7 +5894,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5720,7 +5910,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5736,7 +5926,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5752,7 +5942,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5768,7 +5958,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5784,7 +5974,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5800,7 +5990,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -5816,7 +6006,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -5842,7 +6032,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -6044,7 +6234,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ComponentCallbacks2" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ComponentCallbacks2-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -6086,7 +6276,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ComponentCallbacks" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ComponentCallbacks-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
@@ -6168,6 +6358,50 @@
 
 
 
+<A NAME="INTERRUPTION_FILTER_ALARMS"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+        final 
+        int
+      </span>
+        INTERRUPTION_FILTER_ALARMS
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Returned by <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getInterruptionFilter()">getInterruptionFilter()</a></code> and passed to
+ <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#onInterruptionFilterChanged(int)">onInterruptionFilterChanged(int)</a></code>. This value means that the user requested to
+ only be interrupted by alarms.
+</p></div>
+
+    
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+            
+                4
+                (0x00000004)
+            
+        </span>
+        </div>
+    
+    </div>
+</div>
+
+
+
 <A NAME="INTERRUPTION_FILTER_ALL"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -6300,6 +6534,50 @@
 
 
 
+<A NAME="INTERRUPTION_FILTER_UNKNOWN"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+        final 
+        int
+      </span>
+        INTERRUPTION_FILTER_UNKNOWN
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>Returned by <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#getInterruptionFilter()">getInterruptionFilter()</a></code> and passed to
+ <code><a href="../../../../../reference/android/support/wearable/watchface/WatchFaceService.Engine.html#onInterruptionFilterChanged(int)">onInterruptionFilterChanged(int)</a></code>. This value means the interruption filter is
+ unavailable.
+</p></div>
+
+    
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+            
+                0
+                (0x00000000)
+            
+        </span>
+        </div>
+    
+    </div>
+</div>
+
+
+
 <A NAME="PROPERTY_BURN_IN_PROTECTION"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/android/support/wearable/watchface/WatchFaceStyle.Builder.html b/docs/html/reference/android/support/wearable/watchface/WatchFaceStyle.Builder.html
index a5401e5..11aac1e 100644
--- a/docs/html/reference/android/support/wearable/watchface/WatchFaceStyle.Builder.html
+++ b/docs/html/reference/android/support/wearable/watchface/WatchFaceStyle.Builder.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -1029,7 +1034,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/reference/android/support/wearable/watchface/WatchFaceStyle.html b/docs/html/reference/android/support/wearable/watchface/WatchFaceStyle.html
index 70c3851..606ed35 100644
--- a/docs/html/reference/android/support/wearable/watchface/WatchFaceStyle.html
+++ b/docs/html/reference/android/support/wearable/watchface/WatchFaceStyle.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
@@ -901,7 +906,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.os.Parcelable" class="jd-expando-trigger closed"
           ><img id="inherited-constants-android.os.Parcelable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From interface
 android.os.Parcelable
 <div id="inherited-constants-android.os.Parcelable">
@@ -1341,7 +1346,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1543,7 +1548,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.os.Parcelable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.os.Parcelable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
diff --git a/docs/html/reference/android/support/wearable/watchface/package-summary.html b/docs/html/reference/android/support/wearable/watchface/package-summary.html
index a654b13..fab3583 100644
--- a/docs/html/reference/android/support/wearable/watchface/package-summary.html
+++ b/docs/html/reference/android/support/wearable/watchface/package-summary.html
@@ -95,6 +95,11 @@
 
 
 
+
+
+
+
+
 <html>
 <head>
 
diff --git a/docs/html/samples/_book.yaml b/docs/html/samples/_book.yaml
new file mode 100644
index 0000000..3fe0d19
--- /dev/null
+++ b/docs/html/samples/_book.yaml
@@ -0,0 +1,6 @@
+toc:
+- title: About the Samples
+  path: /samples/index.html
+
+- title: What's New
+  path: /samples/new/index.html
diff --git a/docs/html/samples/new/index.jd b/docs/html/samples/new/index.jd
index 80765c7..a7ffa8c 100644
--- a/docs/html/samples/new/index.jd
+++ b/docs/html/samples/new/index.jd
@@ -4,8 +4,8 @@
 @jd:body
 
 <p>The following code samples were recently published. You can
-download them in the Android SDK Manager under the <b>SDK Samples</b> component
-for API 21.</p>
+download them in the Android SDK Manager under the <b>Samples for SDK</b>
+component for Android 6.0 (API 23).</p>
 
 <p class="note">
   <strong>Note:</strong> The downloadable projects are designed
@@ -14,342 +14,115 @@
 
 <!-- NOTE TO EDITORS: add most recent samples first -->
 
-<h3 id="MediaBrowserService"><a href="/samples/MediaBrowserService/index.html">Media Browser Service</a></h3>
+<h3 id="ActiveNotification">
+  <a href="{@docRoot}samples/ActiveNotifications/index.html">Active
+  Notification</a>
+</h3>
 
 <p>
-This sample is a simple audio media app that exposes its media
-library and provides metadata and playback controls through the new
-MediaBrowserService and MediaSession APIs from API 21.
-The sample is compatible with Android Auto and also provides a basic UI
-when not connected to a car.
+  This sample demonstrates how to use the {@link
+  android.app.NotificationManager} to tell you how many notifications your app
+  is currently showing.
 </p>
 
-<p class="note">
-  <strong>Note:</strong> This sample is compatible with <a
-  href="http://android.com/auto">Android Auto</a>.
-</p>
-
-
-<h3 id="MessagingService"><a href="/samples/MessagingService/index.html">Messaging Service</a></h3>
+<h3 id="AutomaticBackup">
+  <a href="{@docRoot}samples/AutoBackupForApps/index.html">Auto Backup for
+  Apps</a>
+</h3>
 
 <p>
-This sample shows a simple service that sends notifications using
-NotificationCompat. In addition to sending a notification, it also extends
-the notification with a CarExtender to make it compatible with Android Auto.
-Each unread conversation from a user is sent as a distinct notification.
+  Android 6.0 (API level 23) introduces automatic backup for app settings. This
+  sample demonstrates how to add filtering rules to an app to manage settings
+  backup.
 </p>
 
-<p class="note">
-  <strong>Note:</strong> This sample is compatible with <a
-  href="http://android.com/auto">Android Auto</a>.
+<h3 id="Camera2Raw">
+  <a href="{@docRoot}samples/Camera2Raw/index.html">Camera 2 Raw</a>
+</h3>
+
+<p>
+  This sample demonstrates how to use the
+  <a href="{@docRoot}reference/android/hardware/camera2/package-summary.html">
+  <code>Camera2</code></a> API to capture RAW camera buffers and save them as
+  DNG files.
 </p>
 
-
-<h3 id="SpeedTracker"><a href="/samples/SpeedTracker/index.html">Speed Tracker (Wear)</a></h3>
+<h3 id="ConfirmCredential">
+  <a href="{@docRoot}samples/ConfirmCredential/index.html">Confirm
+  Credential</a>
+</h3>
 
 <p>
-This sample uses the FusedLocation APIs of Google Play Services on Android Wear 
-devices that have a hardware GPS built in. In those cases, this sample provides
-a simple screen that shows the current speed of the wearable device. User can
-set a speed limit and if the speed approaches that limit, it changes the color
-to yellow and if it exceeds the limit, it turns red. User can also enable
-recording of coordinates and when it pairs back with the phone, this data
-is synced with the phone component of the app and user can see a track
-made of those coordinates on a map on the phone.
+ This sample demonstrates how to use device credentials as an authentication method in your app.
 </p>
 
-
-<h3 id="AppRestrictionSchema"><a href="/samples/AppRestrictionSchema/index.html">AppRestrictionSchema</a></h3>
+<h3 id="DeviceOwner">
+  <a href="{@docRoot}samples/DeviceOwner/index.html">Device Owner</a>
+</h3>
 
 <p>
-This sample shows how to use app restrictions. This application has one boolean
-restriction with a key "can_say_hello" that defines whether the only feature of this
-app (press the button to show "Hello" message) is enabled or disabled. Use
-AppRestrictionEnforcer sample to toggle the restriction.
+  This sample demonstrates how to use the device owner features to manage and
+  configure a device.
 </p>
 
-
-<h3 id="AppRestrictionEnforcer"><a href="/samples/AppRestrictionEnforcer/index.html">AppRestrictionEnforcer</a></h3>
+<h3 id="DirectShare">
+  <a href="{@docRoot}samples/DirectShare/index.html">Direct Share</a>
+</h3>
 
 <p>
-This sample demonstrates how to set restrictions to other apps as a profile owner.
-Use AppRestrictionSchema sample as a app with available restrictions.
+  This sample demonstrates how to provide the
+  <a href="{@docRoot}about/versions/marshmallow/android-6.0.html#direct-share">Direct
+  Share</a> feature. The app shows some options directly in the list of share
+  intent candidates.
 </p>
 
-
-<h3 id="DocumentCentricRelinquishIdentity"><a href="/samples/DocumentCentricRelinquishIdentity/index.html">DocumentCentricRelinquishIdentity</a></h3>
+<h3 id="FingerprintDialog">
+  <a href="{@docRoot}samples/FingerprintDialog/index.html">Fingerprint
+  Dialog</a>
+</h3>
 
 <p>
-This sample shows how to relinquish identity to activities above it in the task stack.
+  This sample demonstrates how to recognize registered fingerprints to
+  authenticate your app's user.
 </p>
 
-
-<h3 id="DocumentCentricApps"><a href="/samples/DocumentCentricApps/index.html">DocumentCentricApps</a></h3>
+<h3 id="MidiScope">
+  <a href="{@docRoot}samples/MidiScope/index.html">MidiScope</a>
+</h3>
 
 <p>
-This sample shows the basic usage of the new "Document Centric Apps" API.
-It let's you create new documents in the system overview menu and persists its
-state through reboots. If "Task per document" is checked a new task will be
-created for every new document in the overview menu.
+  This sample demonstrates how to use the <a href=
+  "{@docRoot}reference/android/media/midi/package-summary.html">MIDI API</a> to
+  receive and process MIDI signals coming from an attached input device.
 </p>
 
-
-<h3 id="HdrViewfinder"><a href="/samples/HdrViewfinder/index.html">HdrViewfinder</a></h3>
+<h3 id="MidiSynth">
+  <a href="{@docRoot}samples/MidiSynth/index.html">MidiSynth</a>
+</h3>
 
 <p>
-This demo implements a real-time high-dynamic-range camera viewfinder, by alternating
-the sensor's exposure time between two exposure values on even and odd frames, and then
-compositing together the latest two frames whenever a new frame is captured.
+  This sample demonstrates how to use the <a href=
+  "{@docRoot}reference/android/media/midi/package-summary.html">MIDI API</a> to
+  receive and play MIDI messages coming from an attached input device.
 </p>
 
-
-<h3 id="Interpolator"><a href="/samples/Interpolator/index.html">Interpolator</a></h3>
+<h3 id="NfcProvisioning">
+  <a href="{@docRoot}samples/NfcProvisioning/index.html">NFC Provisioning</a>
+</h3>
 
 <p>
-This sample demonstrates the use of animation interpolators and path animations for
-Material Design. It shows how an ObjectAnimator is used to animate two properties of a
-view (scale X and Y) along a path.
+  This sample demonstrates how to use NFC to provision other devices with a
+  specific device owner.
 </p>
 
-
-<h3 id="DrawableTinting"><a href="/samples/DrawableTinting/index.html">DrawableTinting</a></h3>
-
-<p>Sample that shows applying tinting and color filters to Drawables both programmatically
-and as Drawable resources in XML.</p>
-<p>Tinting is set on a nine-patch drawable through the "tint" and "tintMode" parameters.
-A color state list is referenced as the tint color, which defines colors for different
-states of a View (for example disabled/enabled, focused, pressed or selected).</p>
-<p>Programmatically, tinting is applied to a Drawable through its "setColorFilter" method,
-with a reference to a color and a PorterDuff blend mode. The color and blend mode can be
-changed from the UI to see the effect of different options.</p>
-
-
-<h3 id="LNotifications"><a href="/samples/LNotifications/index.html">LNotifications</a></h3>
+<h3 id="RuntimePermissions">
+  <a href=
+  "{@docRoot}samples/RuntimePermissions/index.html">RuntimePermissions</a>
+</h3>
 
 <p>
-This sample demonstrates how new features for notifications introduced in Android 5.0
-are used such as Heads-Up notifications, visibility, people, category and priority
-metadata. </p>
-
-
-<h3 id="CardView"><a href="/samples/CardView/index.html">CardView</a></h3>
-
-<p>
-This sample demonstrates how to use the CardView UI widget introduced in Android 5.0, using the support library for backward compatibility.
+  This sample shows runtime permissions available in Android 6.0 (API level 23)
+  and higher. Display the log on screen to follow the execution. If executed on
+  an Android 6.0 device, the app displays an additional option to access
+  contacts using an 6.0-only optional permission.
 </p>
-
-
-<h3 id="RecyclerView"><a href="/samples/RecyclerView/index.html">RecyclerView</a></h3>
-
-<p>
-Demonstration of using RecyclerView with a LayoutManager to create a vertical ListView.
-</p>
-
-
-<h3 id="RevealEffectBasic"><a href="/samples/RevealEffectBasic/index.html">RevealEffectBasic</a></h3>
-
-<p>
-A sample demonstrating how to perform a reveal effect for UI elements within the Material Design framework.
-</p>
-
-
-<h3 id="FloatingActionButtonBasic"><a href="/samples/FloatingActionButtonBasic/index.html">FloatingActionButtonBasic</a></h3>
-
-<p>
-This sample shows the two sizes of Floating Action Buttons and how to interact with
-them.
-</p>
-
-
-<!--
-<h3 id="">SampleName</h3>
-
-<div class="figure" style="width:220px">
-  <img src="" srcset="@2x.png 2x" alt="" height="375" />
-  <p class="img-caption">
-    <strong>Figure n.</strong> Single sentence summarizing the figure.
-  </p>
-</div>
-
-<p>
-**description**
-</p>
--->
-
-<h3 id="JobSchedulerSample"><a href="/samples/JobScheduler/index.html">JobScheduler</a></h3>
-
-<p>
-This sample app allows the user to schedule jobs through the UI, and shows
-visual cues when the jobs are executed.
-</p>
-
-
-<h3 id="AndroidTVLeanbackSample"><a href="https://github.com/googlesamples/androidtv-leanback">AndroidTVLeanbackSample</a></h3>
-<!--
-<div class="figure" style="width:220px">
-  <img src="" srcset="@2x.png 2x" alt="" height="375" />
-  <p class="img-caption">
-    <strong>Figure n.</strong> Single sentence summarizing the figure.
-  </p>
-</div>
--->
-
-<p>
-This sample demonstrates use of the Android TV Leanback Support Library.
-</p>
-
-<h3 id="Visual-Game-Controller"><a href="https://github.com/googlesamples/androidtv-VisualGameController">Visual-Game-Controller</a></h3>
-<!--
-<div class="figure" style="width:220px">
-  <img src="" srcset="@2x.png 2x" alt="" height="375" />
-  <p class="img-caption">
-    <strong>Figure n.</strong> Single sentence summarizing the figure.
-  </p>
-</div>
--->
-
-<p>
-This sample displays events received from a game controller shown on the screen.
-</p>
-
-
-<h3 id="GameControllerSample"><a href="https://github.com/googlesamples/androidtv-GameController/">GameControllerSample</a></h3>
-<!--
-<div class="figure" style="width:220px">
-  <img src="" srcset="@2x.png 2x" alt="" height="375" />
-  <p class="img-caption">
-    <strong>Figure n.</strong> Single sentence summarizing the figure.
-  </p>
-</div>
--->
-
-<p>
-This sample implements a multi-player game, demonstrating game controller input
-handling.
-</p>
-
-
-<h3 id="ClippingBasic"><a href="/samples/ClippingBasic/index.html">ClippingBasic</a></h3>
-<!--
-<div class="figure" style="width:220px">
-  <img src="" srcset="@2x.png 2x" alt="" height="375" />
-  <p class="img-caption">
-    <strong>Figure n.</strong> Single sentence summarizing the figure.
-  </p>
-</div>
--->
-
-<p>
-This sample demonstrates clipping on a {@link android.view.View}.
-</p>
-
-<div class="figure" style="width:220px">
-  <img src="{@docRoot}samples/images/JobSchedulerSample.png"
-      srcset="{@docRoot}samples/images/JobSchedulerSample@2x.png 2x"
-      alt="" height="375" />
-  <p class="img-caption">
-    <strong>Figure 1.</strong> The JobSchedulerSample sample app.
-  </p>
-</div>
-
-
-<h3 id="ElevationDrag"><a href="/samples/ElevationDrag/index.html">ElevationDrag</a></h3>
-<!--
-<div class="figure" style="width:220px">
-  <img src="" srcset="@2x.png 2x" alt="" height="375" />
-  <p class="img-caption">
-    <strong>Figure n.</strong> Single sentence summarizing the figure.
-  </p>
-</div>
--->
-
-<p>This sample demonstrates a drag and drop action on different shapes.
-Elevation and z-translation are used to render the shadows. The views are
-clipped using different outlines.</p>
-
-
-<h3 id="ElevationBasic"><a href="/samples/ElevationBasic/index.html">ElevationBasic</a></h3>
-<!--
-<div class="figure" style="width:220px">
-<img src="" srcset="@2x.png 2x" alt="" height="375" />
-    <p class="img-caption">
-    <strong>Figure n.</strong> Single sentence summarizing the figure.
-  </p>
-</div>
--->
-
-<p>
-This sample demonstrates two alternative ways to move a view in the z-axis:</p>
-
-<ul>
-  <li>With a fixed elevation, using XML.</li>
-  <li>Raising the elevation when the user taps on it, using
-      <code>setTranslationZ()</code>.</li>
-</ul>
-
-
-<h3 id="ActivitySceneTransitionBasic"><a href="/samples/ActivitySceneTransitionBasic/index.html">ActivitySceneTransitionBasic</a></h3>
-<div class="figure" style="width:220px">
-  <img src="{@docRoot}samples/images/ActivitySceneTransitionBasic.png"
-      srcset="{@docRoot}samples/images/ActivitySceneTransitionBasic@2x.png 2x"
-      alt="" height="375" />
-  <p class="img-caption">
-    <strong>Figure 2.</strong> The ActivitySceneTransitionBasic sample app.
-  </p>
-  </div>
-
-<p> This sample demonstrates how to the use {@link android.app.Activity} scene
-transitions when transitioning from one activity to another. Uses a combination
-of <code>moveImage</code> and <code>changeBounds</code> to nicely transition
-from a grid of images to an activity with a large image and detail text. </p>
-
-
-<h3 id="Camera2Video"><a href="/samples/Camera2Video/index.html">Camera2Video</a></h3>
-<!--
-<div class="figure" style="width:220px">
-<img src="" srcset="@2x.png 2x" alt="" height="375" />
-    <p class="img-caption">
-    <strong>Figure n.</strong> Single sentence summarizing the figure.
-  </p>
-</div>
--->
-
-<p>This sample demonstrates how to record video using the Camera2 API.</p>
-
-
-<h3 id="Camera2Basic"><a href="/samples/Camera2Basic/index.html">Camera2Basic</a></h3>
-
-<!--
-<div class="figure" style="width:220px">
-  <img src="" srcset="@2x.png 2x" alt="" height="375" />
-  <p class="img-caption">
-    <strong>Figure n.</strong> Single sentence summarizing the figure.
-  </p>
-</div>
--->
-
-<p>This sample demonstrates the basic use of the Camera2 API. The sample code
-demonstrates how you can display camera preview and take pictures.</p>
-
-
-<h3 id="BasicManagedProfile"><a href="/samples/BasicManagedProfile/index.html">BasicManagedProfile</a></h3>
-<div class="figure" style="width:220px">
-  <img src="{@docRoot}samples/images/BasicManagedProfile.png"
-     srcset="{@docRoot}samples/images/BasicManagedProfile@2x.png 2x"
-     alt="" height="375" />
-  <p class="img-caption">
-    <strong>Figure 3.</strong> The BasicManagedProfile sample app.
-  </p>
-</div>
-
-<p>This sample demonstrates how to create a managed profile. You can also:</p>
-<ul>
-  <li>Enable or disable other apps, and set restrictions on them.</li>
-  <li>Configure intents to be forwarded between the primary account and the
-   managed profile.</li>
-  <li>Wipe all the data associated with the managed profile.</li>
-</ul>
-
-<p class="note"><strong>Note:</strong> There can be only one managed profile on
-  a device at a time.</p>
-
diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
index 39822e5..0250c1e 100644
--- a/docs/html/sdk/index.jd
+++ b/docs/html/sdk/index.jd
@@ -1,153 +1,127 @@
 page.title=Download Android Studio and SDK Tools
 page.tags=sdk, android studio
 page.template=sdk
-page.image=images/cards/android-studio_2x.png
+section.landing=true
 header.hide=1
+nonavpage=true
+fullpage=true
+page.image=images/cards/android-studio_2x.png
 page.metaDescription=Download the official Android IDE and developer tools to build apps for Android phones, tablets, wearables, TVs, and more.
 
-studio.version=1.3.2.0
-
-studio.linux_bundle_download=android-studio-ide-141.2178183-linux.zip
-studio.linux_bundle_bytes=352010593
-studio.linux_bundle_checksum=cf780413f8c8223eb348bd27c19a9c04b75eaeb2
-
-studio.mac_bundle_download=android-studio-ide-141.2178183-mac.dmg
-studio.mac_bundle_bytes=368335367
-studio.mac_bundle_checksum=75b67eb15a34a152a40e7189484ab0ebc375b877
-
-studio.win_bundle_download=android-studio-ide-141.2178183-windows.zip
-studio.win_bundle_bytes=344424713
-studio.win_bundle_checksum=3134f226b5f3c3f74d4fc2d9cff03a4458f01d69
-
-
-studio.win_bundle_exe_download=android-studio-bundle-141.2178183-windows.exe
-studio.win_bundle_exe_bytes=1136982712
-studio.win_bundle_exe_checksum=c7d39c529dd434489da9d086ff689d34dc791526
-
-studio.win_notools_exe_download=android-studio-ide-141.2178183-windows.exe
-studio.win_notools_exe_bytes=321810248
-studio.win_notools_exe_checksum=b5d1aaa000729c03a3cf980add79d1b93121c56d
-
-
-
-
-sdk.linux_download=android-sdk_r24.3.4-linux.tgz
-sdk.linux_bytes=309138331
-sdk.linux_checksum=fb293d7bca42e05580be56b1adc22055d46603dd
-
-sdk.mac_download=android-sdk_r24.3.4-macosx.zip
-sdk.mac_bytes=98340900
-sdk.mac_checksum=128f10fba668ea490cc94a08e505a48a608879b9
-
-sdk.win_download=android-sdk_r24.3.4-windows.zip
-sdk.win_bytes=187496897
-sdk.win_checksum=4a8718fb4a2bf2128d34b92f23ddd79fc65839e7
-
-
-sdk.win_installer=installer_r24.3.4-windows.exe
-sdk.win_installer_bytes=139477985
-sdk.win_installer_checksum=094dd45f98a31f839feae898b48f23704f2878dd
-
-
-
-
-
-
 @jd:body
 
-<style type="text/css">
-  .offline {display:none;}
-  h2.feature {
-    padding-top:30px;
-    margin-top:0;
-    clear:both;
-  }
-  .feature-blurb {
-  margin:0px; font-size:16px; font-weight:300;
-  padding-top:40px;
-  }
-
-  .landing-button .small {
-    font-size: 12px;
-    font-weight: normal;
-    line-height: 12px;
-    display: block;
-  }
-
-  h1.studio-logo {
-    width:226px;
-    height:78px;
-    display:block;
-    padding:0;
-    white-space: nowrap;
-    text-indent: -10000px;
-    font-size:0px;
-    background: url(../images/tools/studio-logo.png);
-    background-image: -webkit-image-set(url(../images/tools/studio-logo.png) 1x, url(../images/tools/studio-logo_2x.png) 2x);
-    background-size: 226px 78px;
-  }
-
+<style>
+.download-bundle-button {line-height:18px;}
+.download-bundle-button .small {font-size: 12px; opacity: 0.7;}
 </style>
 
+ <section class="dac-expand dac-hero dac-light">
+  <div class="wrap">
+    <div class="cols dac-hero-content">
+      <div class="col-1of2 col-push-1of2 dac-hero-figure">
+        <img class="dac-hero-image" src="/images/develop/hero_image_studio5_2x.png" srcset="/images/develop/hero_image_studio5.png 1x, /images/develop/hero_image_studio5_2x.png 2x">
+      </div>
+      <div class="col-1of2 col-pull-1of2" style="margin-bottom:40px">
+<h1 class="dac-hero-title">Android Studio<br>
+<span style="font-size: 65%;">The Official IDE for Android</span></h1>
+
+<p class="dac-hero-description">Android Studio provides the fastest tools for
+building apps on every type of Android device.</p>
+
+<p class="dac-hero-description">World-class code editing, debugging,
+performance tooling, a flexible build system, and an instant build/deploy
+system all allow you to focus on building unique and high quality apps.</p>
+
+<p style="margin-top:24px">
+  <a class="landing-button green download-bundle-button"
+    data-modal-toggle="studio_tos">Download Android Studio 2.0<br>
+  <span class="small"></span></a>
+</p>
+
+<p style="margin:24px 0 0">
+  <a class="dac-hero-cta" href="{@docRoot}tools/studio/index.html">
+  <span class="dac-sprite dac-auto-chevron"></span>
+  Read the docs</a>
+  <a class="dac-hero-cta" href="{@docRoot}tools/revisions/studio.html">
+  <span class="dac-sprite dac-auto-chevron"></span>
+  See the release notes</a>
+</p>
+      </div>
+    </div>
+  </div>
+</section>
 
 
 
 
-<div style="position:relative;">
-
-
-<div class="wrap" id="tos" style="display:none;width:inherit;height:650px">
-<div class="col-13" style="margin:0;">&nbsp;</div><!-- provides top margin for content -->
-
-<h1 id="tos-header" style="margin-top:0">Download</h1>
-
-<p class="sdk-terms-intro">Before installing Android Studio or the standalone SDK tools,
-you must agree to the following terms and conditions.</p>
+<!-- start studio download modal -->
+<div data-modal="studio_tos" class="dac-modal" id="langform">
+  <div class="dac-modal-container">
+    <div class="dac-modal-window">
+      <header class="dac-modal-header">
+        <div class="dac-modal-header-actions">
+          <button class="dac-modal-header-close" data-modal-toggle></button>
+        </div>
+        <section class="dac-swap-section dac-active dac-down">
+          <h2 class="norule dac-modal-header-title" id="tos-header">Download Android Studio</h2>
+        </section>
+      </header>
+      <section class="dac-swap-section dac-active dac-left">
+          <section class="dac-modal-content">
+            <fieldset class="dac-form-fieldset">
+              <div class="cols">
+                <div class="col-2of2 tos-leftCol">
+                  <p class="sdk-terms-intro">Before downloading,
+                  you must agree to the following terms
+                  and conditions.</p>
+                </div>
 
 <div class="sdk-terms" onfocus="this.blur()">
 <h2 class="norule">Terms and Conditions</h2>
 This is the Android Software Development Kit License Agreement
 
 <h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in this License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of this License Agreement. This License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
+1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
 
 1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
 
-1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
 
 
 <h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use the SDK if you do not accept this License Agreement.
+2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
 
-2.2 By clicking to accept, you hereby agree to the terms of this License Agreement.
+2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
 
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries including the country in which you are resident or from which you use the SDK.
+2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
 
-2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to this License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
+2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
 
 
 <h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable and non-exclusive license to use the SDK solely to develop applications to run on the Android platform.
+3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
 
-3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
 
-3.3 You may not use the SDK for any purpose not expressly permitted by this License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
 
-3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.
+3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
 
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not this License Agreement.
+3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
 
 3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
 
-3.7 Nothing in this License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
 
 3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
 
 
 <h3>4. Use of the SDK by You</h3>
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under this License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
+4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
 
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) this License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
+4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
 
 4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
 
@@ -155,7 +129,7 @@
 
 4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
 
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under this License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
+4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
 
 
 <h3>5. Your Developer Credentials</h3>
@@ -173,7 +147,7 @@
 
 7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
 
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, this License Agreement does not affect your legal relationship with these third parties.
+7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
 
 
 <h3>8. Using Android APIs</h3>
@@ -185,17 +159,17 @@
 
 
 <h3>9. Terminating this License Agreement</h3>
-9.1 This License Agreement will continue to apply until terminated by either you or Google as set out below.
+9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
 
-9.2 If you want to terminate this License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
+9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
 
-9.3 Google may at any time, terminate this License Agreement with you if:
-(A) you have breached any provision of this License Agreement; or
+9.3 Google may at any time, terminate the License Agreement with you if:
+(A) you have breached any provision of the License Agreement; or
 (B) Google is required to do so by law; or
 (C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
 (D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
 
-9.4 When this License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst this License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
+9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
 
 
 <h3>10. DISCLAIMER OF WARRANTIES</h3>
@@ -211,7 +185,7 @@
 
 
 <h3>12. Indemnification</h3>
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with this License Agreement.
+12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
 
 
 <h3>13. Changes to the License Agreement</h3>
@@ -219,25 +193,22 @@
 
 
 <h3>14. General Legal Terms</h3>
-14.1 This License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
+14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
 
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in this License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
+14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
 
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of this License Agreement is invalid, then that provision will be removed from this License Agreement without affecting the rest of this License Agreement. The remaining provisions of this License Agreement will continue to be valid and enforceable.
+14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
 
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to this License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of this License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to this License Agreement.
+14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
 
 14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
 
-14.6 The rights granted in this License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under this License Agreement without the prior written approval of the other party.
+14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
 
-14.7 This License Agreement, and your relationship with Google under this License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from this License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
 
-
-<em>December 8, 2014</em>
-</div>
-
-
+<em>November 20, 2015</em>
+</div><!-- close sdk-terms -->
 
 
 
@@ -245,243 +216,314 @@
   <p>You're just a few steps away from building apps for Android!</p>
   <p>In a moment, you'll be redirected to
   <a id="next-link" href="{@docRoot}sdk/installing/index.html">Installing the Android SDK</a>.</p>
-
 </div><!-- end next-steps -->
 
-
-
 <div id="sdk-terms-form">
 <p>
 <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
 <label id="agreeLabel" for="agree">I have read and agree with the above terms and conditions</label>
 </p>
-<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+<p><a href="" class="dac-button dac-raised dac-primary disabled ndk" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+</div><!-- end sdk-terms-form -->
+
+
+</div><!-- end cols -->
+
+            </fieldset>
+          </section>
+      </section>
+    </div><!-- end dac-modal-window -->
+  </div><!-- end dac-modal-container -->
+</div><!-- end #langform, .dac-modal -->
+<!-- end studio_tos modal -->
+
+<div id="useOldTemplates" class="actions-bar dac-expand dac-invert">
+  <div class="wrap dac-offset-parent">
+    <a class="dac-fab dac-scroll-button" data-scroll-button="" href="#features">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
+    <div class="actions">
+      <div><a href="#features">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Features
+      </a></div>
+      <div><a href="#latest">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Latest
+      </a></div>
+      <div><a href="#resources">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Resources
+      </a></div>
+      <div><a href="#videos">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Videos
+      </a></div>
+      <div><a href="#downloads">
+        <span class="dac-sprite dac-auto-chevron-large"></span>
+        Download Options
+      </a></div>
+    </div><!-- end .actions -->
+  </div><!-- end .wrap -->
 </div>
 
 
-</div><!-- end TOS -->
+<div id="useUpdatedTemplates" style="display:none" class="dac-section dac-slim dac-gray dac-expand">
+  <div class="wrap dac-offset-parent">
+    <a class="dac-fab dac-scroll-button" data-scroll-button href="#features">
+      <i class="dac-sprite dac-arrow-down-gray"></i>
+    </a>
+    <ul class="dac-actions">
+      <li class="dac-action">
+        <a class="dac-action-link" href="#features">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Features
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="#latest">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Latest
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="#resources">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Resources
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="#videos">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Videos
+        </a>
+      </li>
+      <li class="dac-action">
+        <a class="dac-action-link" href="#downloads">
+          <i class="dac-action-sprite dac-sprite dac-auto-chevron-large"></i>
+          Download Options
+        </a>
+      </li>
+    </ul>
+  </div><!-- end .wrap -->
+</div><!-- end new templates -->
 
 
 
+<section id="features" class="dac-section dac-small">
+<div class="dac-toggle">
 
-
-
-<div id="landing">
-
-<div class="col-13">&nbsp;</div><!-- provides top margin for content -->
-
-<img src="{@docRoot}images/tools/studio-hero.png"
-srcset="{@docRoot}images/tools/studio-hero_2x.png 2x, {@docRoot}images/tools/studio-hero.png 1x"
-width="760" alt="" />
-
-<div style="color: #fff; width:226px; height:0; overflow:visible; position:absolute; top:40px; left:25px">
-
-<h1 class="studio-logo" style="margin:0 0 35px !important">Android Studio</h1>
-
-<p style="font-size: 16px; color:#bbb; position: absolute;left: 297px; top: 5px; display: block;
-width: 400px;text-align: center;">The official Android IDE</p>
-
-<ul style="font-size:12px;line-height:19px;">
-<li>Android Studio IDE</li>
-<li>Android SDK tools</li>
-<li>Android 5.0 (Lollipop) Platform</li>
-<li>Android 5.0 emulator system image with Google APIs</li>
-</ul>
-
-<a class="online landing-button green download-bundle-button"
-href="#Other" >Download Android Studio<br/><span class='small'></span></a>
-
-<!-- this appears when viewing the offline docs -->
-<p class="offline">
-To get Android Studio or stand-alone SDK tools, visit <a
-href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
-</p>
+<div class="wrap feature">
+  <div class="cols dac-hero-content">
+    <div class="col-1of2 col-push-1of2 dac-hero-figure">
+      <img src="/images/tools/studio/studio-feature-instant-run_2x.png">
+    </div>
+    <div class="col-1of2 col-pull-1of2">
+      <div class="dac-hero-tag"></div>
+      <h1 class="dac-hero-title">Instant Run</h1>
+<p class="dac-hero-description">Push code and resource
+changes to your app running on a device or emulator and see the
+changes instantly come to life.</p>
+<p class="dac-hero-description">Instant Run dramatically speeds up your edit,
+build, and run cycles, keeping you "in the flow."</p>
+      <a class="dac-hero-cta"
+        href="/tools/building/building-studio.html#instant-run">
+        <span class="dac-sprite dac-auto-chevron"></span>
+        Learn more</a>
+    </div>
+  </div>
 </div>
 
-<ul>
-  <li><a href="#Requirements">System Requirements</a></li>
-  <li><a href="#Other">Other Download Options</a></li>
-  <li><a href="{@docRoot}sdk/installing/migrate.html">Migrating to Android Studio</a></li>
-  <li><a href="https://docs.google.com/a/google.com/forms/d/1mjsyfzv3HAnDY-_Kfj-3QJKdpuksyMFs9e73CRwmT6Q/viewform"
-target="_blank">Take a Survey</a></li>
-</ul>
+<div class="wrap feature">
+  <div class="cols dac-hero-content">
+    <div class="col-1of2 dac-hero-figure">
+      <img src="/images/tools/codeeditor-low.gif" >
+    </div>
+    <div class="col-1of2">
+      <div class="dac-hero-tag"></div>
+      <h1 class="dac-hero-title">Intelligent code editor</h1>
+<p class="dac-hero-description">Write better code, work faster, and be more productive with an intelligent code editor that helps you each step of the way.</p>
+<p class="dac-hero-description">Android Studio is built on IntelliJ and is capable of advanced code completion, refactoring, and code analysis.</p>
+    </div>
+  </div>
+</div>
+
+<div class="wrap feature">
+  <div class="cols dac-hero-content">
+    <div class="col-1of2 col-push-1of2 dac-hero-figure">
+      <img src="/images/tools/studio/studio-feature-emulator_2x.jpg">
+    </div>
+    <div class="col-1of2 col-pull-1of2">
+      <div class="dac-hero-tag"></div>
+      <h1 class="dac-hero-title">Fast and feature-rich emulator</h1>
+<p class="dac-hero-description">Install and run your apps faster than with a physical device and test your app on virtually any Android device configuration: Android phones, Android tablets, Android Wear, and Android TV devices.</p>
+<p class="dac-hero-description">The new Android Emulator 2.0 is faster than ever and allows you to dynamically resize the emulator and access a suite of sensor controls.</p>
+      <a class="dac-hero-cta"
+        href="/tools/devices/emulator.html">
+        <span class="dac-sprite dac-auto-chevron"></span>
+        Learn more</a>
+    </div>
+  </div>
+</div>
+
+<div class="wrap feature">
+  <div class="cols dac-hero-content">
+    <div class="col-1of2 dac-hero-figure">
+      <img src="/images/tools/studio/studio-feature-gradle_2x.png">
+    </div>
+    <div class="col-1of2">
+      <div class="dac-hero-tag"></div>
+      <h1 class="dac-hero-title">Robust and flexible build system</h1>
+<p class="dac-hero-description">Easily configure your project to include code libraries and generate multiple build variants from a single project.</p>
+<p class="dac-hero-description">With Gradle, Android Studio offers high-performance build automation, robust dependency management, and customizable build configurations.</p>
+      <a class="dac-hero-cta"
+        href="/tools/building/plugin-for-gradle.html">
+        <span class="dac-sprite dac-auto-chevron"></span>
+        Learn more</a>
+    </div>
+  </div>
+</div>
+
+<div class="dac-toggle-content clearfix">
+
+<div class="wrap feature">
+  <div class="cols dac-hero-content">
+    <div class="col-1of2 col-push-1of2 dac-hero-figure">
+      <img src="/images/tools/studio/studio-feature-devices_2x.png">
+    </div>
+    <div class="col-1of2 col-pull-1of2">
+      <div class="dac-hero-tag"></div>
+      <h1 class="dac-hero-title">Develop for all&nbsp;<wbr>Android&nbsp;devices</h1>
+<p class="dac-hero-description">Target multiple form factors with a single
+project to easily share code among your different versions of your app.</p>
+<p class="dac-hero-description">Android Studio provides a unified environment
+to develop apps for Android phones, tablets, Android Wear, Android TV, and
+Android Auto.</p>
+
+      <a class="dac-hero-cta"
+        href="/tools/building/configuring-gradle.html#workBuildVariants">
+        <span class="dac-sprite dac-auto-chevron"></span>
+        Learn more</a>
+    </div>
+  </div>
+</div>
+
+<div class="wrap feature">
+  <div class="cols dac-hero-content">
+    <div class="col-1of2 dac-hero-figure">
+      <img src="/images/tools/studio/studio-feature-github_2x.png">
+    </div>
+    <div class="col-1of2">
+      <div class="dac-hero-tag"></div>
+      <h1 class="dac-hero-title">Code templates and GitHub integration</h1>
+      <p class="dac-hero-description">Start projects with code templates for patterns such as navigation drawer and view pagers, or import Google code samples from GitHub.</p>
+      <p class="dac-hero-description">Android Studio's project wizards make it easier than ever to add code in a new project.</p>
+    </div>
+  </div>
+</div>
+
+</div><!-- end dac-toggle-content -->
+
+<div class="dac-section-links dac-text-center feature-more">
+  <div class="dac-section-link" data-toggle="section">
+    <span class="dac-toggle-expand">More
+      <i class="dac-sprite dac-auto-unfold-more"></i>
+    </span>
+    <span class="dac-toggle-collapse">Less
+      <i class="dac-sprite dac-auto-unfold-less"></i>
+    </span>
+  </div>
+</div>
+
+</div>
+</section><!-- end features -->
 
 
 
+<section id="latest" class="dac-section dac-light dac-small"><div class="wrap">
+  <h1 class="dac-section-title">Latest News</h1>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:tools/landing/latest"
+       data-cardSizes="6x6"
+       data-items-per-page="3"
+       data-initial-results="3"
+       data-maxResults="3"></div>
+  </div>
+</section>
+
+<section id="resources" class="dac-section dac-small"><div class="wrap">
+  <h1 class="dac-section-title">Resources</h1>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:tools/landing/resources"
+       data-cardSizes="6x6"
+       data-initial-results="3"
+       data-items-per-page="3"
+       data-maxResults="3"></div>
+  </div>
+</section>
+
+<section class="dac-section dac-light dac-small dac-gray" id="videos"><div class="wrap">
+  <h1 class="dac-section-title">Videos</h1>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:develop/landing/tools"
+       data-sortOrder="-timestamp"
+       data-cardSizes="6x6"
+       data-maxResults="3"></div>
+  </div>
+</section>
+
+
+
+<section id="Requirements" class="dac-section dac-light dac-small">
+<div class="wrap">
+
+<h2 class="norule">System Requirements</h2>
 
 <div class="cols">
-<h2 class="feature norule col-13">Intelligent code editor</h2>
 
-<div class="col-9">
-  <img src="{@docRoot}images/tools/studio-hero-code.png"
-srcset="{@docRoot}images/tools/studio-hero-code_2x.png 2x, {@docRoot}images/tools/studio-hero-code.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
-  <p>At the core of Android Studio is an intelligent code editor capable of advanced
-  code completion, refactoring, and code analysis.</p>
-  <p>The powerful code editor helps you be a more productive Android app developer.</p>
-</div>
-
-
-
-
-
-<h2 class="feature norule col-13">Code templates and GitHub integration</h2>
-
-<div class="col-9">
-  <img src="{@docRoot}images/tools/studio-hero-import.png"
-srcset="{@docRoot}images/tools/studio-hero-import_2x.png 2x, {@docRoot}images/tools/studio-hero-import.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
-  <p>New project wizards make it easier than ever to start a new project.</p>
-
-  <p>Start projects using template code for patterns such as navigation drawer and view pagers,
-  and even import Google code samples from GitHub.</p>
-</div>
-
-
-
-
-<h2 class="feature norule col-13">Multi-screen app development</h2>
-
-<div class="col-9">
-  <img src="{@docRoot}images/tools/studio-hero-screens.png"
-srcset="{@docRoot}images/tools/studio-hero-screens_2x.png 2x, {@docRoot}images/tools/studio-hero-screens.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
-  <p>Build apps for Android phones, tablets, Android Wear,
-  Android TV, Android Auto and Google Glass.</p>
-  <p>With the new Android Project View and module support in Android Studio, it's easier
-  to manage app projects and resources.
-</div>
-
-
-
-
-<h2 class="feature norule col-13">Virtual devices for all shapes and sizes</h2>
-
-<div class="col-9">
-  <img src="{@docRoot}images/tools/studio-hero-avds.png"
-srcset="{@docRoot}images/tools/studio-hero-avds_2x.png 2x, {@docRoot}images/tools/studio-hero-avds.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
-  <p>Android Studio comes pre-configured with an optimized emulator image.</p>
-  <p>The updated and streamlined Virtual Device Manager provides
-  pre-defined device profiles for common Android devices.</p>
-</div>
-
-
-
-
-<h2 class="feature norule col-13">
-Android builds evolved, with Gradle</h2>
-
-<div class="col-9">
-  <img src="{@docRoot}images/tools/studio-hero-gradle.png"
-srcset="{@docRoot}images/tools/studio-hero-gradle_2x.png 2x, {@docRoot}images/tools/studio-hero-gradle.png 1x" width="520" />
-</div><!-- end col-9 (left column) -->
-
-<div class="col-4 feature-blurb">
-  <p>Create multiple APKs for your Android app with different features using the same project.</p>
-  <p>Manage app dependencies with Maven.</p>
-  <p>Build APKs from Android Studio or the command line.</p>
-</div>
-
-</div>
-
-<h2 class="feature norule">More about Android Studio</h2>
-<div style="background:#424242;padding:30px; color:#fff;margin:0 0 15px;">
-
-<a class="online landing-button green download-bundle-button"
-style="margin:0 0 40px 60px;float:right"
-href="" >Download Android Studio</a>
-
-  <ul>
-  <li>Built on IntelliJ IDEA Community Edition, the popular Java IDE by JetBrains.</li>
-  <li>Flexible Gradle-based build system.</li>
-  <li>Build variants and multiple APK generation.</li>
-  <li>Expanded template support for Google Services and various device types.</li>
-  <li>Rich layout editor with support for theme editing.</li>
-  <li>Lint tools to catch performance, usability, version compatibility, and other problems.</li>
-  <li>ProGuard and app-signing capabilities.</li>
-  <li>Built-in support for Google Cloud Platform, making it easy to integrate Google Cloud
-  Messaging and App Engine.</li>
-  </ul>
-
-<p style="margin:0">
-For more details about features available in Android Studio,
-read the overview at <a href="{@docRoot}tools/studio/index.html">Android Studio</a>.</p>
-</div>
-
-
-<p>If you have been using Eclipse with ADT, be aware that Android Studio is now the official IDE
-for Android, so you should migrate to Android Studio to receive all the
-latest IDE updates. For help moving projects,
-see <a href="{@docRoot}sdk/installing/migrate.html">Migrating to Android
-Studio</a>.</p>
-
-
-
-
-
-
-
-<h2 id="Requirements">System Requirements</h2>
-
-<h3>Windows</h3>
-
+<div class="col-2of6">
+<h4>Windows</h4>
 <ul>
-<li>Microsoft&reg;  Windows&reg;  8/7/Vista/2003 (32 or 64-bit)</li>
-<li>2 GB RAM minimum, 4 GB RAM recommended</li>
-<li>400 MB hard disk space</li>
-<li>At least 1 GB for Android SDK, emulator system images, and caches</li>
+<li>Microsoft&reg;  Windows&reg;  7/8/10 (32 or 64-bit)</li>
+<li>2 GB RAM minimum, 8 GB RAM recommended</li>
+<li>2 GB of available disk space minimum (500 MB for IDE + 1.5 GB for
+Android SDK and emulator system image). 4 GB Recommended.</li>
 <li>1280 x 800  minimum screen resolution</li>
-<li>Java Development Kit (JDK) 7 </li>
-<li>Optional for accelerated emulator: Intel® processor with support for Intel® VT-x, Intel® EM64T
-(Intel® 64), and Execute Disable (XD) Bit functionality</li>
+<li>Java Development Kit (JDK) 8</li>
+<li>Optional for accelerated emulator: Intel® processor with support for Intel®
+VT-x, Intel® EM64T (Intel® 64), and Execute Disable (XD) Bit functionality</li>
 </ul>
+</div>
 
-
-<h3>Mac OS X</h3>
-
+<div class="col-2of6">
+<h4>Mac</h4>
 <ul>
-<li>Mac&reg;  OS X&reg;  10.8.5 or higher, up to 10.9 (Mavericks)</li>
-<li>2 GB RAM minimum, 4 GB RAM recommended</li>
-<li>400 MB hard disk space</li>
-<li>At least 1 GB for Android SDK, emulator system images, and caches</li>
+<li>Mac&reg;  OS X&reg;  10.8.5 or higher, up to 10.11.4 (El Capitan)</li>
+<li>2 GB RAM minimum, 8 GB RAM recommended</li>
+<li>2 GB of available disk space minimum (500 MB for IDE + 1.5 GB for
+Android SDK and emulator system image). 4 GB Recommended.</li>
 <li>1280 x 800 minimum screen resolution</li>
-<li>Java Runtime Environment (JRE) 6</li>
-<li>Java Development Kit (JDK) 7</li>
-<li>Optional for accelerated emulator: Intel® processor with support for Intel® VT-x, Intel® EM64T
-(Intel® 64), and Execute Disable (XD) Bit functionality</li>
+<li>Java Development Kit (JDK) 8</li>
 </ul>
+</div>
 
-<p>On Mac OS, run Android Studio with Java Runtime Environment (JRE) 6 for optimized font
-rendering. You can then configure your project to use Java Development Kit (JDK) 6 or JDK 7.</p>
-
-
-
-<h3>Linux</h3>
-
+<div class="col-2of6">
+<h4>Linux</h4>
 <ul>
-<li>GNOME or KDE desktop</li>
-<li>GNU C Library (glibc) 2.15 or later</li>
-<li>2 GB RAM minimum, 4 GB RAM recommended</li>
-<li>400 MB hard disk space</li>
-<li>At least 1 GB for Android SDK, emulator system images, and caches</li>
+<li>GNOME or KDE desktop
+<p><i>Tested on Ubuntu®  12.04, Precise Pangolin (64-bit distribution
+capable of running 32-bit applications)</i></li>
+<li>GNU C Library (glibc) 2.11 or later</li>
+<li>2 GB RAM minimum, 8 GB RAM recommended</li>
+<li>2 GB of available disk space minimum (500 MB for IDE + 1.5 GB for
+Android SDK and emulator system image). 4 GB Recommended.</li>
 <li>1280 x 800 minimum screen resolution</li>
-<li>Oracle&reg;  Java Development Kit (JDK) 7 </li>
+<li>Java Development Kit (JDK) 8</li>
 </ul>
-<p>Tested on Ubuntu&reg;  14.04, Trusty Tahr (64-bit distribution capable of running
-32-bit applications).</p>
+</div>
 
+</div>
+</div>
 
+</section>
 
-
-<h2 id="Other" style="clear:left">Other Download Options</h2>
-
-<!-- alternative SDK options follows -->
diff --git a/docs/html/sdk/installing/adding-packages.jd b/docs/html/sdk/installing/adding-packages.jd
deleted file mode 100644
index 88619bd..0000000
--- a/docs/html/sdk/installing/adding-packages.jd
+++ /dev/null
@@ -1,229 +0,0 @@
-page.title=Adding SDK Packages
-
-page.tags=sdk manager
-helpoutsWidget=true
-
-@jd:body
-
-<style>
-ol.large {
-  margin-left:0;
-}
-ol.large > li {
-  list-style-position: inside;
-  list-style-type:none;
-  margin:30px 0 0 0;
-  padding:30px 20px;
-  background:#eee;
-}
-ol.large > li:nth-child(odd) {
-}
-ol.large > li:before {
-  display:inline;
-  left:-40px;
-  float:left;
-  width:20px;
-  font-size:20px;
-  line-height:20px;
-}
-ol.large > li > h2 {
-  font-size:20px;
-  line-height:20px;
-  padding:0 0 0 20px;
-  margin:0 0 20px 0;
-  display:inline-block;
-  font-weight:normal;
-}
-ol.large > li:nth-child(1):before {
-  content:"1. ";
-}
-ol.large > li:nth-child(2):before {
-  content:"2. ";
-}
-ol.large > li:nth-child(3):before {
-  content:"3. ";
-}
-ol.large > li:nth-child(4):before {
-  content:"4. ";
-}
-ol.large > li:nth-child(5):before {
-  content:"5. ";
-}
-ol.large > li:nth-child(6):before {
-  content:"6. ";
-}
-</style>
-
-
-<p>
-By default, the Android SDK does not include everything you need to start developing.
-The SDK separates tools, platforms, and other components into packages you can
-download as needed using the
-<a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>.
-So before you can start, there are a few packages you should add to your Android SDK.</p>
-
-<p>To start adding packages, launch the Android SDK Manager in one of the following ways:</p>
-<ul>
-  <li>In Android Studio, click <strong>SDK Manager</strong>
-<img src="{@docRoot}images/tools/sdk-manager-studio.png"
-style="vertical-align:bottom;margin:0;height:17px" /> in the toolbar.</li>
-  <li>If you're not using Android Studio:
-    <ul>
-      <li>Windows: Double-click the <code>SDK Manager.exe</code> file at the root of the Android
-  SDK directory.</li>
-      <li>Mac/Linux: Open a terminal and navigate to the <code>tools/</code> directory in the
-      location where the Android SDK was installed, then execute <code>android sdk</code>.</li>
-    </ul>
-  </li>
-</ul>
-
-<p>When you open the SDK Manager for the first time, several packages are selected by
-default. Leave these selected, but be sure you have everything you need
-to get started by following these steps:</p>
-
-
-<ol class="large">
-<li>
-  <h2 id="GetTools" class="norule">Get the latest SDK tools</h2>
-
-<img src="/images/sdk_manager_packages.png" alt="" width="350" style="float:right;margin-left:20px" />
-
-  <p>As a minimum when setting up the Android SDK,
-  you should download the latest tools and Android platform:</p>
-  <ol>
-   <li>Open the Tools directory and select:
-     <ul>
-       <li><strong>Android SDK Tools</strong></li>
-       <li><strong>Android SDK Platform-tools</strong></li>
-       <li><strong>Android SDK Build-tools</strong> (highest version)</li>
-     </ul>
-   </li>
-   <li>Open the first Android X.X folder (the latest version) and select:
-     <ul>
-      <li><strong>SDK Platform</strong></li>
-      <li>A system image for the emulator, such as <br>
-      <strong>ARM EABI v7a System Image</strong></li>
-     </ul>
-   </li>
-  </ol>
-</li>
-
-<li>
-  <h2 id="GetSupportLib" class="norule">Get the support library for additional APIs</h2>
-
-  <div class="sidebox">
-    <p>The support library is required for:</p>
-    <ul>
-      <li><a href="{@docRoot}wear/index.html">Android Wear</a></li>
-      <li><a href="{@docRoot}tv/index.html">Android TV</a></li>
-      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
-    </ul>
-
-    <p>It also provides these popular APIs:</p>
-    <ul>
-      <li><a href="{@docRoot}reference/android/support/v4/widget/DrawerLayout.html">Navigation
-      drawer</a></li>
-      <li><a href="{@docRoot}reference/android/support/v4/view/ViewPager.html">Swipe views</a></li>
-      <li><a href="{@docRoot}reference/android/support/v7/app/ActionBar.html">Backward-compatible
-      action bar</a></li>
-    </ul>
-  </div>
-
-  <p>The <a href="{@docRoot}tools/support-library/features.html">Android Support Library</a>
-  provides an extended set of APIs that are compatible with most versions of Android.</p>
-
-  <p>Open the <strong>Extras</strong> directory and select:</p>
-     <ul>
-       <li><strong>Android Support Repository</strong></li>
-       <li><strong>Android Support Library</strong></li>
-     </ul>
-
-  <p>&nbsp;</p>
-  <p>&nbsp;</p>
-
-</li>
-
-
-<li>
-  <h2 id="GetGoogle" class="norule">Get Google Play services for even more APIs</h2>
-
-  <div class="sidebox">
-
-    <p>The Google Play services APIs provide a variety of features and services for your Android
-    apps, such as:</p>
-    <ul>
-      <li><a href="{@docRoot}google/play-services/plus.html">User authentication</a></li>
-      <li><a href="{@docRoot}google/play-services/maps.html">Google Maps</a></li>
-      <li><a href="{@docRoot}google/play-services/cast.html">Google Cast</a></li>
-      <li><a href="{@docRoot}google/play-services/games.html">Games achievements and
-      leaderboards</a></li>
-      <li><a href="{@docRoot}google/play-services/index.html">And much more</a></li>
-    </ul>
-  </div>
-
-  <p>To develop with Google APIs, you need the Google Play services package:</p>
-  <p>Open the <strong>Extras</strong> directory and select:</p>
-     <ul>
-       <li><strong>Google Repository</strong></li>
-       <li><strong>Google Play services</strong></li>
-     </ul>
-
-  <p class="note"><strong>Note:</strong> Google Play services APIs are not available on all
-  Android-powered devices, but are available on all devices with Google Play Store. To use these
-  APIs in the Android emulator, you must also install the the <strong>Google APIs</strong>
-  system image from the latest Android X.X directory in the SDK Manager.</p>
-</li>
-
-
-<li>
-  <h2 id="Install" class="norule">Install the packages</h2>
-  <p>Once you've selected all the desired packages, continue to install:</p>
-  <ol>
-   <li>Click <strong>Install X packages</strong>.</li>
-   <li>In the next window, double-click each package name on the left
-   to accept the license agreement for each.</li>
-   <li>Click <strong>Install</strong>.</li>
-  </ol>
-  <p>The download progress is shown at the bottom of the SDK Manager window.
-  <strong>Do not exit the SDK Manager</strong> or it will cancel the download.</p>
-</li>
-
-<li>
-  <h2 id="Build" class="norule">Build something!</h2>
-
-<p>With the above packages now in your Android SDK, you're ready to build apps
-for Android. As new tools and other APIs become available, simply launch the SDK Manager
-  to download the new packages for your SDK.</p>
-
-<p>Here are a few options for how you should proceed:</p>
-
-<div class="cols" style="padding:10px 0">
-<div class="col-4">
-<h3>Get started</h3>
-<p>If you're new to Android development, learn the basics of Android apps by following
-the guide to <strong><a href="{@docRoot}training/basics/firstapp/index.html"
->Building Your First App</a></strong>.</p>
-
-</div>
-<div class="col-4 box">
-<h3>Build for wearables</h3>
-<p>If you're ready to start building apps for Android wearables, see the guide to
-<strong><a href="{@docRoot}wear/preview/start.html">Building Apps for Android Wear</a></strong>.</p>
-
-</div>
-<div class="col-4 box">
-<h3>Use Google APIs</h3>
-<p>To start using Google APIs, such as Maps or
-Play Game services, see the guide to
-<strong><a href="{@docRoot}google/play-services/setup.html">Setting Up Google Play
-Services</a></strong>.</p>
-
-</div>
-</div><!-- end cols -->
-
-
-</li>
-
-</ol>
-
-
diff --git a/docs/html/sdk/installing/create-project.jd b/docs/html/sdk/installing/create-project.jd
index 68fd572..a4de85c 100644
--- a/docs/html/sdk/installing/create-project.jd
+++ b/docs/html/sdk/installing/create-project.jd
@@ -1,4 +1,4 @@
-page.title=Managing Projects from Android Studio
+page.title=Managing Projects with Android Studio
 
 @jd:body
 
@@ -8,13 +8,6 @@
 
       <ol>
         <li><a href="#CreatingAProject">Creating an Android Project</a></li>
-        <ol>
-          <li><a href="#Step1CreatingAProject">Create a New Project</a> </li>
-          <li><a href="#Step2SelectFormFactor">Select Form Factors and API Level</a> </li>
-          <li><a href="#Step3AddActivity">Add an Activity</a> </li>
-          <li><a href="#Step4ConfigureActivity">Configure Your App</a> </li>
-          <li><a href="#Step5DevelopYourApp">Develop Your App</a> </li>
-        </ol>
 
         <li><a href="#CreatingAModule">Creating an Android Module</a></li>
 
@@ -190,8 +183,8 @@
         <li>Select a <strong>Theme</strong>. This setting specifies which standard Android
         <a href="{@docRoot}design/style/themes.html">visual style</a> is applied to your
         application. Select activity template. For more information about Android code templates, see
-        <a href="{@docRoot}tools/projects/templates.html">Using Code Templates</a>Leave the <strong>
-        Create activity</strong> option checked so you can start your
+        <a href="{@docRoot}tools/projects/templates.html">Using Code Templates</a>. Leave the
+        <strong>Create activity</strong> option checked so you can start your
         application with some essential components. </li>
 
         <li>Click the check box for the required Support Libraries then click <strong>Next</strong>.</li>
@@ -359,10 +352,6 @@
 per resource type.</li>
 </ul>
 
-
-
-<h2 id="enable-view">Use the Android Project View</h2>
-
 <p>The <em>Android</em> project view is enabled by default and shows all the build files at
 the top level of the project hierarchy under <strong>Gradle Scripts</strong>. The project module
 appears as a folder at the top level of the project hierarchy and contains these three elements
@@ -386,12 +375,3 @@
 &nbsp;&nbsp;&nbsp;
 <img src="{@docRoot}images/tools/projectview-p2.png" alt="" style="width:240px" " />
 <p class="img-caption"><strong>Figure 10:</strong> Android and Traditional project view </p>
-
-
-
-
-
-
-
-
-
diff --git a/docs/html/sdk/installing/index.jd b/docs/html/sdk/installing/index.jd
index 0375a2f..f776c9a 100644
--- a/docs/html/sdk/installing/index.jd
+++ b/docs/html/sdk/installing/index.jd
@@ -1,379 +1,199 @@
-page.title=Installing the Android SDK
+page.title=Install Android Studio
 excludeFromSuggestions=true
 
 page.tags=sdk tools
-helpoutsWidget=true
 
 @jd:body
 
-<style>
-p.paging-links {
-  margin:0 0 40px;
-}
-.paging-links .next-page-link {
-  right:initial;
-}
-.procedure-box {
-  padding:20px 20px 5px;
-  margin-bottom:1em;
-  background:#eee;
-}
-.landing-button {
-  min-width: 155px;
-  text-align: center;
-}
-</style>
 
-
-
-<!-- ################    STUDIO    ##################### -->
-<div id="studio" heading="Installing Android Studio" style="display:none">
-
-<p>Android Studio provides everything you need to start developing apps for Android, including
-the Android Studio IDE and the Android SDK tools.</p>
-
-<p>If you didn't download Android Studio, go <a href="{@docRoot}sdk/index.html"
-><b>download Android Studio now</b></a>, or switch to the
-<a href="{@docRoot}sdk/installing/index.html?pkg=tools">stand-alone SDK Tools
-install</a> instructions.</p>
-
-
-<p>Before you set up Android Studio, be sure you have installed
-JDK 6 or higher (the JRE alone is not sufficient)&mdash;JDK 7 is required when
-developing for Android 5.0 and higher. To check if you
-have JDK installed (and which version), open a terminal and type <code>javac -version</code>.
-If the JDK is not available or the version is lower than version 6, download the 
-<a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html" class="external-link"
->Java SE Development Kit 7</a>.</p>
-
-
-<div class="procedure-box">
-
-<p id="instructions-toggle"
-style="float:right;font-size:13px"><a href='' onclick='showAll();return false;'
->[ Show instructions for all platforms ]</a></p>
-
-<div class="win docs" style="display:none">
-
-<p><b>To set up Android Studio on Windows:</b></p>
-  <ol>
-    <li>Launch the <code>.exe</code> file you just downloaded.</li>
-    <li>Follow the setup wizard to install Android Studio and any necessary SDK tools.
-
-    <p>On some Windows systems, the launcher script does not find where Java is installed.
-      If you encounter this problem,
-      you need to set an environment variable indicating the correct location.</p>
-      <p>Select <strong>Start menu > Computer > System Properties >
-      Advanced System Properties</strong>. Then open <strong>Advanced tab > Environment
-      Variables</strong> and add a new system variable <code>JAVA_HOME</code> that points to
-      your JDK folder, for example <code>C:\Program Files\Java\jdk1.7.0_21</code>.</p>
-    </p>
-    </li>
-
-  </ol>
-
-
-<p>The individual tools and other SDK packages are saved outside the Android Studio application
-directory. If you need to access the tools directly, use a terminal to navigate to the location
-where they are installed. For example:</p>
-<p><code>\Users\&lt;user&gt;\sdk\</code></p>
-
-
-
-</div><!-- end windows -->
-
-
-<div class="mac docs" style="display:none">
-
-<p><b>To set up Android Studio on Mac OSX:</b></p>
-  <ol>
-    <li>Launch the {@code .dmg} file you just downloaded.</li>
-    <li>Drag and drop Android Studio into the Applications folder.
-    <li>Open Android Studio and follow the setup wizard to install any necessary SDK tools.
-      <p>
-      Depending on your security settings, when you attempt to open Android Studio, you might
-      see a warning that says the package is damaged and should be moved to the trash. If this
-      happens, go to <strong>System Preferences > Security &amp; Privacy</strong> and under
-      <strong>Allow applications downloaded from</strong>, select <strong>Anywhere</strong>.
-      Then open Android Studio again.</p>
-    </li>
-  </ol>
-
-<p>If you need use the Android SDK tools from a command line,
-you can access them at:</p>
-<p><code>/Users/&lt;user>/Library/Android/sdk/</code></p>
-
-
-</div><!-- end mac -->
-
-
-<div class="linux docs" style="display:none">
-
-<p><b>To set up Android Studio on Linux:</b></p>
-
-  <ol>
-    <li>Unpack the downloaded ZIP file into an
-        appropriate location for your applications.
-    <li>To launch Android Studio, navigate to the {@code android-studio/bin/} directory
-    in a terminal and execute {@code studio.sh}.
-      <p>You may want to add {@code android-studio/bin/} to your PATH environmental
-      variable so that you can start Android Studio from any directory.</p>
-    </li>
-    <li>If the SDK is not already installed, follow the setup wizard to install the SDK and any
-    necessary SDK tools.
-    <p class="note"><strong>Note:</strong> You may also need to install the ia32-libs,
-    lib32ncurses5-dev, and lib32stdc++6 packages. These packages are required to support 32-bit apps
-    on a 64-bit machine. </p>
-    </li>
-  </ol>
-
-</div><!-- end linux -->
-</div><!-- end procedure box -->
-
-<p>Android Studio is now ready and loaded with the Android developer tools, but there are still a
-couple packages you should add to make your Android SDK complete.</p>
-
-<p class="paging-links">
-<a href="{@docRoot}sdk/installing/adding-packages.html" class="next-page-link">
-Continue: Adding SDK Packages</a></p>
-
-
+<div style="float:right;margin:0 0 20px 20px;border:1px solid #ccc;padding:10px">
+<p><strong>Instructions for</strong></p>
+<select id="instructions-option" onchange="showInstructions(this.value)" style="padding:4px">
+  <option value="windows">Windows</option>
+  <option value="mac">Mac</option>
+  <option value="linux">Linux</option>
+</select> 
 </div>
-<!-- ################    END STUDIO    ##################### -->
+
+<p>Setting up Android Studio takes just a few clicks.</p>
+
+<p>While the <a href="{@docRoot}sdk/index.html">Android Studio download</a>
+completes, make sure you have JDK 8 or higher installed. To check which version
+you have, open a command line and type <code>javac -version</code>. If the JDK
+is not available or the version is lower than 1.8, download the <a href=
+"http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html"
+class="external-link">Java SE Development Kit 8</a>.</p>
 
 
+<div id="system-windows" style="display:none">
 
-
-
-
-
-
-
-<!-- ################    JUST SDK TOOLS    ##################### -->
-<div id="tools" heading="Installing the Stand-alone SDK Tools" style="display:none">
-
-
-<p>The stand-alone SDK Tools package does not include a complete Android development environment.
-It includes only the core SDK tools, which you can access from a command line or with a plugin
-for your favorite IDE (if available).</p>
-
-<p>If you didn't download the SDK tools, go <a href="{@docRoot}sdk/index.html#Other"
-><b>download the SDK now</b></a>,
-or switch to the <a href="{@docRoot}sdk/installing/index.html?pkg=studio">Android Studio
-install</a> instructions.</p>
-
-
-<div class="procedure-box">
-<p id="instructions-toggle"
-style="float:right;font-size:13px"><a href='' onclick='showAll();return false;'
->[ Show instructions for all platforms ]</a></p>
-
-<div class="win docs" style="display:none">
-
-<p><b>To get started on Windows:</b></p>
-
-<p>Your download package is an executable file that starts an installer. The installer checks your machine
-  for required tools, such as the proper Java SE Development Kit (JDK) and installs it if necessary.
-  The installer then saves the Android SDK Tools to a specified the location outside of the Android
-  Studio directories.</p>
-
+<p>To install Android Studio on Windows, proceed as follows:</p>
 <ol>
-<li>Double-click the executable ({@code .exe} file) to start the install.</li>
-<li>Make a note of the name and location where you save the SDK on your system&mdash;you will need to
-refer to the SDK directory later when using
-the SDK tools from the command line.</li>
-<li>Once the installation completes, the installer starts the Android SDK Manager.
-</li>
+  <li>Launch the <code>.exe</code> file you downloaded.</li>
+  <li>Follow the setup wizard to install Android Studio and any necessary SDK tools.
+
+  <p>On some Windows systems, the launcher script does not find where the JDK is installed.
+    If you encounter this problem,
+    you need to set an environment variable indicating the correct location.</p>
+    <p>Select <strong>Start menu > Computer > System Properties >
+    Advanced System Properties</strong>. Then open <strong>Advanced tab > Environment
+    Variables</strong> and add a new system variable <code>JAVA_HOME</code> that points to
+    your JDK folder, for example <code>C:\Program Files\Java\jdk1.7.0_21</code>.</p>
+  </p>
+  </li>
 </ol>
 
-</div>
+<p>That's it!
+The following video shows each step of the recommended setup procedure.</p>
 
+<video controls style="margin:20px 0" onclick="this.play()">
+  <source src="https://storage.googleapis.com/androiddevelopers/videos/studio-install-windows.mp4" type="video/mp4">
+</video>
 
+<p>As new tools and other APIs become available, Android Studio will tell you
+with a pop-up, or you can check yourself by clicking <strong>Help &gt;
+Check for Update</strong>.</p>
 
-<div class="mac docs" style="display:none">
-
-<p><b>To get started on Mac OSX:</b></p>
-
-<p>Unpack the ZIP file you've downloaded. By default, it's unpacked
-into a directory named <code>android-sdk-mac_x86</code>. Move it to an appropriate location on your
-machine, such as a "Development" directory in your home directory.</p>
-
-<p>Make a note of the name and location of the SDK directory on your system&mdash;you will need to
-refer to the SDK directory later when using
-the SDK tools from the command line.</p>
 
 </div>
+<!-- end windows -->
 
 
 
+<!-- #### MAC INSTRUCTIONS #### -->
 
-<div class="linux docs" style="display:none">
+<div id="system-mac" style="display:none">
 
-<p><b>To get started on Linux:</b></p>
+<p>To install Android Studio on your Mac, proceed as follows:</p>
 
-<p>Unpack the {@code .zip} file you've downloaded. The SDK files are download separately to a
-user-specified directory. </p>
+<ol>
+  <li>Launch the Android Studio DMG file.</li>
+  <li>Drag and drop Android Studio into the Applications folder, then launch
+    Android Studio.</li>
+  <li>Select whether you want to import previous Android Studio settings,
+    then click <strong>OK</strong>.</li>
+  <li>The Android Studio Setup Wizard will guide you though the rest of the
+    setup procedures in just a few clicks,
+    which includes downloading various Android SDK components
+    that are required for development.</li>
+</ol>
 
-<p>Make a note of the name and location of the SDK directory on your system&mdash;you will need to
-refer to the SDK directory later when using
-the SDK tools from the command line.</p>
+<p>That's it!
+The following video shows each step of the recommended setup procedure.</p>
+
+<video controls style="margin:20px 0" onclick="this.play()">
+  <source src="https://storage.googleapis.com/androiddevelopers/videos/studio-install-mac.mp4" type="video/mp4">
+</video>
+
+<p>
+As new tools and other APIs become available, Android Studio will tell you
+with a pop-up, or you can check yourself by clicking <strong>Android Studio &gt;
+Check for Updates</strong>.</p>
+
+</div>
+<!-- end mac -->
 
 
-<h5 id="Troubleshooting" style="margin-bottom:15px"><a href='' class="expandable"
-  onclick="toggleExpandable(this,'#UbuntuTrouble');return false;"
-  >Troubleshooting Ubuntu</a></h5>
 
-<div id="UbuntuTrouble" style="display:none">
-<ul>
-  <li>If you need help installing and configuring Java on your
-    development machine, you might find these resources helpful:
-    <ul>
-      <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/Java </a></li>
-      <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/JavaInstallation</a></li>
-    </ul>
+<!-- #### LINUX INSTRUCTIONS #### -->
+
+<div id="system-linux" style="display:none">
+
+
+<p>To install Android Studio on Linux, proceed as follows:</p>
+
+<ol>
+  <li>Unpack the <code>.zip</code> file you downloaded to an
+      appropriate location for your applications, such as within
+      <code>/usr/local/</code> for your user profile, or <code>/opt/</code>
+      for shared users.
+  <li>To launch Android Studio, open a terminal,
+    navigate to the <code>android-studio/bin/</code> directory,
+   and execute <code>studio.sh</code>.
+    <p><strong>Tip:</strong>
+    Add <code>android-studio/bin/</code> to your <code>PATH</code> environment
+    variable so you can start Android Studio from any directory.</p>
   </li>
-  <li>Here are the steps to install Java:
-    <ol>
-      <li><p>If you are running a 64-bit distribution on your development
-      machine, you need to install additional packages first. For Ubuntu 13.10 (Saucy Salamander)
-      and above, install the <code>libncurses5:i386</code>, <code>libstdc++6:i386</code>, and
-      <code>zlib1g:i386</code> packages using <code>apt-get</code>:</p>
-      <pre class="no-pretty-print">sudo dpkg --add-architecture i386
-sudo apt-get update
-sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386</pre>
-      <p>For earlier versions of Ubuntu, install the <code>ia32-libs</code> package using
-      <code>apt-get</code>:</p>
-      <pre class="no-pretty-print">apt-get install ia32-libs</pre>
-      </li>
-      <li>Next, install Java: <pre class="no-pretty-print">apt-get install sun-java6-jdk</pre></li>
-    </ol>
+  <li>Select whether you want to import previous Android Studio settings
+    or not, then click <strong>OK</strong>.</li>
+  <li>The Android Studio Setup Wizard will guide you though the rest of the
+    setup procedures in just a few clicks,
+    which includes downloading various Android SDK components
+    that are required for development.</li>
   </li>
-</ul>
-</div><!-- end ubuntu trouble -->
+</ol>
 
+<p>That's it!
+The following video shows each step of the recommended setup procedure.</p>
+
+<video controls style="margin:20px 0" onclick="this.play()">
+  <source src="https://storage.googleapis.com/androiddevelopers/videos/studio-install-linux.mp4" type="video/mp4">
+</video>
+
+<p>As new tools and other APIs become available, Android Studio will tell you
+with a pop-up, or you can check yourself by clicking <strong>Help &gt;
+Check for Update</strong>.</p>
+
+  <p class="note"><strong>Note:</strong> To support 32-bit apps
+  on a 64-bit machine, you will need to install the ia32-libs,
+  lib32ncurses5-dev, and lib32stdc++6 packages.</p>
 
 </div><!-- end linux -->
-</div><!-- end procedure box -->
 
 
-<p>The Android SDK tools are now ready to begin developing apps, but there are still a
-couple packages you should add to make your Android SDK complete.</p>
 
-<p class="paging-links">
-<a href="{@docRoot}sdk/installing/adding-packages.html" class="next-page-link">
-Continue: Adding SDK Packages</a></p>
 
+<h2>Start building apps</h2>
+
+<div class="cols" style="padding:10px 0">
+<div class="col-2of6">
+<img src="{@docRoot}images/tools/studio/ic_devices_grey.png"
+  style="width:100%;background:#eee;margin:0" />
+<h3>Build your first app</h3>
+<p>Get started quickly and learn the basics of Android by following
+the guide to <strong><a href="{@docRoot}training/basics/firstapp/index.html"
+>Building Your First App</a></strong>.</p>
 
 </div>
-<!-- ################    END JUST TOOLS    ##################### -->
-
-
-
-
-
-
-
-
-
-
-<!-- ################    DEFAULT    ##################### -->
-
-
-<div id="default" style="display:none">
-
-<p>If you haven't already, <b><a href="{@docRoot}sdk/index.html">download
-the Android SDK bundle for Android Studio</a></b> or the
-<a href="{@docRoot}sdk/index.html#Other">stand-alone SDK Tools</a>. </p>
-
-<p>Then, select which SDK bundle you want to install:</p>
-
-<div class="cols" style="margin:30px 0 60px">
-
-<div class="col-4">
-<a href="{@docRoot}sdk/installing/index.html?pkg=studio" class="landing-button landing-secondary">
-Android Studio
-</a>
-</div>
-
-<div class="col-4">
-<a href="{@docRoot}sdk/installing/index.html?pkg=tools" class="landing-button landing-secondary">
-Stand-alone SDK Tools
-</a>
-</div>
-</div>
-
-<p></p>
-
-<div>
-<p></p>
+<div class="col-2of6">
+<img src="{@docRoot}images/tools/studio/ic_school_grey.png"
+  style="width:100%;background:#eee;margin:0" />
+<h3>Learn with Udacity</h3>
+<p>Ramp up on Android with interactive video training in the
+<strong><a href="https://www.udacity.com/course/developing-android-apps--ud853">Android Fundamentals Udacity course</a></strong>.</p>
 
 </div>
+<div class="col-2of6">
+<img src="{@docRoot}images/tools/studio/ic_explore_grey.png"
+  style="width:100%;background:#eee;margin:0" />
+<h3>Explore Studio</h3>
+<p>Discover powerful Android Studio features and developer strategies in the
+<strong><a href="{@docRoot}tools/studio/index.html">Android Studio Introduction</a></strong>.</p>
 
 </div>
-<!-- ################    END DEFAULT    ##################### -->
-
-
-
-
+</div><!-- end cols -->
 
 
 <script>
-
-// Show proper instructions based on downloaded SDK package
-var package = getUrlParam("pkg");
-if (package == "tools") {
-  // Show the SDK Tools (other IDE) instructions
-  $("h1").text($("#tools").attr('heading'));
-  $("#tools").show();
-} else if (package == "studio") {
-  // Show the Android Studio instructions
-  $("h1").text($("#studio").attr('heading'));
-  $("#studio").show();
-} else {
-  // Show the default page content so user can select their setup
-  $("#default").show();
-}
-
-// Show the proper instructions based on machine OS
-var $osDocs;
-if (navigator.appVersion.indexOf("Win")!=-1) {
-  $osDocs = $('.win');
-} else if (navigator.appVersion.indexOf("Mac")!=-1) {
-  $osDocs = $('.mac');
-} else if (navigator.appVersion.indexOf("Linux")!=-1) {
-  $osDocs = $('.linux');
-}
-
-if ($osDocs.length) {
-  // reveal only the docs for this OS
-  $osDocs.show();
-} else {
-  // not running a compatible OS, so just show all the docs
-  $('.docs').show();
-}
-
-
-/* Shows all the machine OS instructions */
-function showAll() {
-  $('.docs').show();
-  $("#instructions-toggle").hide();
-}
-
-/* Returns the value for the given URL parameter */
-function getUrlParam(param) {
-  var url = window.location.search.substring(1);
-  var variables = url.split('&');
-  for (var i = 0; i < variables.length; i++) {
-    var paramName = variables[i].split('=');
-    if (escape(paramName[0]) == param) {
-      return escape(paramName[1]);
-    }
+/** Show the appropriate instructions for user **/
+function showInstructions(system) {
+  $("[id^=system-]").hide(); // hide all of them first
+  if (system == "linux") {
+    $("#system-linux").show();
+  } else if (system == "mac") {
+    $("#system-mac").show();
+  } else {
+    $("#system-windows").show();
   }
+  $("select#instructions-option").val(system);
 }
 
-/* direct link to ubuntu troubleshooting */
-if ( document.location.href.indexOf('#UbuntuTrouble') > -1 ) {
-  $(".linux.docs").show();
-  toggleExpandable(this,'#UbuntuTrouble');
+// Get operating system based on the user agent, default windows
+var os = "windows";
+if (navigator.appVersion.indexOf("Linux")!=-1) {
+  os = "linux";
+} else if (navigator.appVersion.indexOf("Mac")!=-1) {
+  os = "mac";
 }
+showInstructions(os);
 </script>
diff --git a/docs/html/sdk/installing/installing-adt.jd b/docs/html/sdk/installing/installing-adt.jd
deleted file mode 100644
index b89c068..0000000
--- a/docs/html/sdk/installing/installing-adt.jd
+++ /dev/null
@@ -1,160 +0,0 @@
-page.title=Installing the Eclipse Plugin
-adt.zip.version=23.0.6
-adt.zip.download=ADT-23.0.6.zip
-adt.zip.bytes=103344298
-adt.zip.checksum=f64b7e50c84799f41c642218c35f1bbe
-
-@jd:body
-
-
-<p class="caution">
-  <strong>Important:</strong> Support for the Android Developer Tools (ADT) in Eclipse is ending,
-  per our <a href=
-  "http://android-developers.blogspot.com/2015/06/an-update-on-eclipse-android-developer.html"
-  class="external-link">announcement</a>. You should migrate your app development projects to
-  Android Studio as soon as possible. For more information on transitioning to Android Studio, see
-  <a href="{@docRoot}sdk/installing/migrate.html">Migrating to Android Studio</a>.
-</p>
-
-<p>Android offers a custom plugin for the Eclipse IDE, called Android
-Development Tools (ADT). This plugin provides a powerful, integrated
-environment in which to develop Android apps. It extends the capabilities
-of Eclipse to let you quickly set up new Android projects, build an app
-UI, debug your app, and export signed (or unsigned) app packages (APKs) for distribution.
-</p>
-
-<p>You should install the ADT plugin
-only if you already have an Eclipse installation that you want to continue using.
-Your existing Eclipse installation must meet these requirements:</p>
-    <ul>
-      <li><a href="http://eclipse.org/mobile/">Eclipse</a> 3.7.2 (Indigo) or greater
-<p class="note"><strong>Note:</strong> Eclipse 3.6 (Helios) is no longer
-supported with the latest version of ADT.</p></li>
-      <li>Eclipse <a href="http://www.eclipse.org/jdt">JDT</a> plugin (included
-in most Eclipse IDE packages) </li>
-      <li><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">JDK 6</a>
-        (JRE alone is not sufficient)</li>
-      <li><strong>Not</strong> compatible with GNU Compiler for Java (gcj)</li>
-    </ul>
-
-
-<h2 id="Download">Download the ADT Plugin</h2>
-
-<p>To add the ADT plugin to Eclipse:</p>
-<ol>
-    <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Install New
-Software</strong>.</li>
-    <li>Click <strong>Add</strong>, in the top-right corner.</li>
-    <li>In the Add Repository dialog that appears, enter "ADT Plugin" for the <em>Name</em> and the
-following URL for the <em>Location</em>:
-      <pre>https://dl-ssl.google.com/android/eclipse/</pre>
-      <p class="note"><strong>Note:</strong> The Android Developer Tools update site requires
-      a secure connection. Make sure the update site URL you enter starts with HTTPS.</p>
-    </li>
-    <li>Click <strong>OK</strong>.</li>
-    <li>In the Available Software dialog, select the checkbox next to Developer Tools and click
-<strong>Next</strong>.</li>
-    <li>In the next window, you'll see a list of the tools to be downloaded. Click
-<strong>Next</strong>. </li>
-    <li>Read and accept the license agreements, then click <strong>Finish</strong>.
-      <p>If you get a security warning saying that the authenticity or validity of
-the software can't be established, click <strong>OK</strong>.</p></li>
-    <li>When the installation completes, restart Eclipse. </li>
-</ol>
-
-
-
-<h2 id="Configure">Configure the ADT Plugin</h2>
-
-<p>Once Eclipse restarts, you
-  must specify the location of your Android SDK directory:</p>
-
-<ol>
-    <li>In the "Welcome to Android Development" window that appears, select <strong>Use
-existing SDKs</strong>.</li>
-    <li>Browse and select the location of the Android SDK directory you recently
-downloaded and unpacked.</li>
-    <li>Click <strong>Next</strong>.</li>
-</ol>
-
-<p>Your Eclipse IDE is now set up to develop Android apps, but you need to add
-the latest SDK platform tools and an Android platform to your environment.
-To get these packages for your SDK, continue to
-<a href="{@docRoot}sdk/installing/adding-packages.html">Adding Platforms and Packages</a>.</p>
-
-
-<h2 id="Troubleshooting">Troubleshooting ADT Installation</h2>
-
-<p>If you are having trouble downloading the ADT plugin after following the
-steps above and you are behind a firewall (such as a corporate firewall), make sure that
-you have properly configured your proxy settings in Eclipse. In Eclipse,
-you can configure proxy information from the main Eclipse menu in
-<strong>Window</strong> (on Mac OS X, <strong>Eclipse</strong>) &gt;
-<strong>Preferences</strong> &gt; <strong>General</strong> &gt; <strong>Network
-Connections</strong>.
-</p>
-
-<p>If you are still unable to use Eclipse to download the ADT plugin as a
-remote update site, you can download the ADT zip file to your local machine and
-manually install it:</p>
-
-<ol>
-  <li>Download the ADT Plugin zip file (do not unpack it):
-
-  <table class="download">
-    <tr>
-      <th>Package</th>
-      <th>Size</th>
-      <th>MD5 Checksum</th>
-  </tr>
-  <tr>
-    <td>
-      <a href="https://dl.google.com/android/{@adtZipDownload}">{@adtZipDownload}</a>
-    </td>
-    <td>{@adtZipBytes} bytes</td>
-    <td>{@adtZipChecksum}</td>
-  </tr>
-</table>
-</li>
-
-</li>
-  <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Install New
-Software</strong>.</li>
-  <li>Click <strong>Add</strong>, in the top-right corner.</li>
-  <li>In the Add Repository dialog, click <strong>Archive</strong>.</li>
-  <li>Select the downloaded {@adtZipDownload} file and click <strong>OK</strong>.</li>
-  <li>Enter "ADT Plugin" for the name and click <strong>OK</strong>.
-  <li>In the Available Software dialog, select the checkbox next to Developer Tools and click
-<strong>Next</strong>.</li>
-  <li>In the next window, you'll see a list of the tools to be downloaded. Click
-<strong>Next</strong>. </li>
-  <li>Read and accept the license agreements, then click <strong>Finish</strong>.
-    <p>If you get a security warning saying that the authenticity or validity of
-the software can't be established, click <strong>OK</strong>.</p></li>
-  <li>When the installation completes, restart Eclipse. </li>
-</ol>
-
-<p>To update your plugin once you've installed using the zip file, you will have
-to follow these steps again instead of the default update instructions.</p>
-
-<h4>Other install errors</h4>
-
-<p>Note that there are features of ADT that require some optional
-Eclipse packages (for example, WST). If you encounter an error when
-installing ADT, your Eclipse installation might not include these packages.
-For information about how to quickly add the necessary packages to your
-Eclipse installation, see the troubleshooting topic
-<a href="{@docRoot}resources/faq/troubleshooting.html#installeclipsecomponents">ADT
-Installation Error: "requires plug-in org.eclipse.wst.sse.ui"</a>.</p>
-
-<h4>For Linux users</h4>
-<p>If you encounter this error when installing the ADT Plugin for Eclipse:
-<pre>
-An error occurred during provisioning.
-Cannot connect to keystore.
-JKS</pre>
-<p>
-...then your development machine lacks a suitable Java VM. Installing Sun
-Java 6 will resolve this issue and you can then reinstall the ADT
-Plugin.</p>
-
diff --git a/docs/html/sdk/installing/migrate.jd b/docs/html/sdk/installing/migrate.jd
index 6dedad6..61e6798 100644
--- a/docs/html/sdk/installing/migrate.jd
+++ b/docs/html/sdk/installing/migrate.jd
@@ -1,4 +1,4 @@
-page.title=Migrating to Android Studio
+page.title=Migrating from Eclipse ADT
 
 @jd:body
 
diff --git a/docs/html/sdk/installing/studio-build.jd b/docs/html/sdk/installing/studio-build.jd
old mode 100644
new mode 100755
index b68b176..a486817
--- a/docs/html/sdk/installing/studio-build.jd
+++ b/docs/html/sdk/installing/studio-build.jd
@@ -13,7 +13,6 @@
    <li><a href="{@docRoot}sdk/installing/studio.html">
    Getting Started with Android Studio</a></li>
    <li><a href="{@docRoot}tools/studio/index.html">Android Studio Basics</a></li>
-   <li><a href="{@docRoot}sdk/installing/migrate.html">Migrating from Eclipse</a></li>
 </div>
 </div>
 
@@ -85,7 +84,7 @@
     usage when the application is -running on a device.</li>
   </ul>
 
-<p class="note"><b>Note:</b> Apps are limited to a 64K method reference limit. If your app reaches
+<p class="note"><b>Note:</b> Apps are limited to a 65K method reference limit. If your app reaches
 this limit, the build process outputs the following error message:
 
 <pre>Unable to execute dex: method ID not in [0, 0xffff]: 65536.</pre>
diff --git a/docs/html/sdk/installing/studio-layout.jd b/docs/html/sdk/installing/studio-layout.jd
index f0e5d59..60cbcb3 100644
--- a/docs/html/sdk/installing/studio-layout.jd
+++ b/docs/html/sdk/installing/studio-layout.jd
@@ -132,6 +132,15 @@
 <p>Within the graphical editor, you can rearrange your app's UI by dragging widgets to
 the desired location.</p>
 
+<h3>Multi-API Version Rendering</h3>
+
+<p>Android Studio supports multi-API version rendering. When you click the Android version icon <img src="{@docRoot}images/tools/as-api-level-preview.png" style="vertical-align:bottom;margin:0;height:19px" /> in the <b>Design</b> view,
+Android Studio allows you to preview your Android layouts across multiple Android API levels.
+</p>
+
+<p><img src="{@docRoot}images/tools/studio-api-version-rendering.png" /></p>
+    <p class="img-caption"><strong>Figure 7.</strong> Multi-API version rendering.</p>
+
 <h3>Taking a snapshot</h3>
 
 <p>When you run your app on a connected device, you can take a snapshot of it by clicking
diff --git a/docs/html/sdk/installing/studio-tips.jd b/docs/html/sdk/installing/studio-tips.jd
index b8511a4..4cd6f8c 100644
--- a/docs/html/sdk/installing/studio-tips.jd
+++ b/docs/html/sdk/installing/studio-tips.jd
@@ -1,4 +1,8 @@
 page.title=Android Studio Tips and Tricks
+page.image=images/tools/studio-previewall.png
+page.metaDescription=Tips to help you get started with Android Studio's most common tasks and productivity enhancements.
+page.tags=studio,tips
+meta.tags="studio", "tools"
 @jd:body
 
 <div id="qv-wrapper">
@@ -204,7 +208,7 @@
 <p>With language injection, the Android Studio IDE allows you to work with islands of different
 languages embedded in the source code. This extends the syntax, error highlighting and coding
 assistance to the embedded language. This can be especially useful for checking regular expression
-values inline, and validating XML and SQL statements.</p>
+values inline and validating XML.</p>
 
 
 <h3>Code folding</h3>
diff --git a/docs/html/sdk/sdk_vars.cs b/docs/html/sdk/sdk_vars.cs
new file mode 100644
index 0000000..449935e
--- /dev/null
+++ b/docs/html/sdk/sdk_vars.cs
@@ -0,0 +1,62 @@
+<?cs
+set:studio.version='1.5.1.0' ?><?cs
+set:studio.release.date='April 4, 2016' ?><?cs
+
+
+set:studio.linux_bundle_download='android-studio-ide-141.2456560-linux.zip' ?><?cs
+set:studio.linux_bundle_bytes='380943097' ?><?cs
+set:studio.linux_bundle_checksum='b8460a2197abe26979d88e3b01b3c8bfd80a37db' ?><?cs
+
+set:studio.mac_bundle_download='android-studio-ide-141.2456560-mac.dmg' ?><?cs
+set:studio.mac_bundle_bytes='367456698' ?><?cs
+set:studio.mac_bundle_checksum='d0807423985757195ad5ae4717d580deeba1dbd8' ?><?cs
+
+set:studio.win_bundle_download='android-studio-ide-141.2456560-windows.zip' ?><?cs
+set:studio.win_bundle_bytes='375635150' ?><?cs
+set:studio.win_bundle_checksum='64882fb967f960f2142de239200104cdc9b4c75b' ?><?cs
+
+set:studio.win_bundle_exe_download='android-studio-bundle-141.2456560-windows.exe' ?><?cs
+set:studio.win_bundle_exe_bytes='1209163328' ?><?cs
+set:studio.win_bundle_exe_checksum='6ffe608b1dd39041a578019eb3fedb5ee62ba545' ?><?cs
+
+set:studio.win_notools_exe_download='android-studio-ide-141.2456560-windows.exe' ?><?cs
+set:studio.win_notools_exe_bytes='351419656' ?><?cs
+set:studio.win_notools_exe_checksum='8d016b90bf04ebac6ce548b1976b0c8a4f46b5f9' ?><?cs
+
+
+set:sdk.linux_download='android-sdk_r24.4.1-linux.tgz' ?><?cs
+set:sdk.linux_bytes='326412652' ?><?cs
+set:sdk.linux_checksum='725bb360f0f7d04eaccff5a2d57abdd49061326d' ?><?cs
+
+set:sdk.mac_download='android-sdk_r24.4.1-macosx.zip' ?><?cs
+set:sdk.mac_bytes='102781947' ?><?cs
+set:sdk.mac_checksum='85a9cccb0b1f9e6f1f616335c5f07107553840cd' ?><?cs
+
+set:sdk.win_download='android-sdk_r24.4.1-windows.zip' ?><?cs
+set:sdk.win_bytes='199701062' ?><?cs
+set:sdk.win_checksum='66b6a6433053c152b22bf8cab19c0f3fef4eba49' ?><?cs
+set:sdk.win_installer='installer_r24.4.1-windows.exe' ?><?cs
+set:sdk.win_installer_bytes='151659917' ?><?cs
+set:sdk.win_installer_checksum='f9b59d72413649d31e633207e31f456443e7ea0b' ?><?cs
+
+
+set:ndk.mac64_download='android-ndk-r11c-darwin-x86_64.zip' ?><?cs
+set:ndk.mac64_bytes='772428792' ?><?cs
+set:ndk.mac64_checksum='4ce8e7ed8dfe08c5fe58aedf7f46be2a97564696' ?><?cs
+
+set:ndk.linux64_download='android-ndk-r11c-linux-x86_64.zip' ?><?cs
+set:ndk.linux64_bytes='794135138' ?><?cs
+set:ndk.linux64_checksum='de5ce9bddeee16fb6af2b9117e9566352aa7e279' ?><?cs
+
+set:ndk.win64_download='android-ndk-r11c-windows-x86_64.zip' ?><?cs
+set:ndk.win64_bytes='771407642' ?><?cs
+set:ndk.win64_checksum='3d89deb97b3191c7e5555f1313ad35059479f071' ?><?cs
+set:ndk.win32_download='android-ndk-r11c-windows-x86.zip' ?><?cs
+set:ndk.win32_bytes='728899082' ?><?cs
+set:ndk.win32_checksum='ff939bde6cd374eecbd2c3b2ad218697f9a5038c'
+?>
+<?cs
+def:size_in_mb(bytes)
+  ?><?cs set:mb = bytes / 1024 / 1024
+  ?><?cs var:mb ?><?cs
+/def ?>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes.html b/docs/html/sdk/support_api_diff/23.1.0/changes.html
new file mode 100644
index 0000000..49f3552
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes.html
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<!-- on Thu Oct 15 12:23:06 BST 2015 -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Support&nbsp;Library&nbsp;API&nbsp;Differences&nbsp;Report
+</TITLE>
+<link href="../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</head>
+<frameset cols="242,**" framespacing="1" frameborder="yes" border="1" bordercolor="#e9e9e9"> 
+<frameset rows="174,**" framespacing="1" frameborder="yes"  border="1" bordercolor="#e9e9e9">
+    <frame src="changes/jdiff_topleftframe.html" scrolling="no" name="topleftframe" frameborder="1">
+    <frame src="changes/alldiffs_index_all.html" scrolling="auto" name="bottomleftframe" frameborder="1">
+  </frameset>
+  <frame src="changes/changes-summary.html" scrolling="auto" name="rightframe" frameborder="1">
+</frameset>
+<noframes>
+<h2>
+Frame Alert
+</h2>
+
+<p>
+This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+<br>
+Link to <a href="changes/changes-summary.html" target="_top">Non-frame version.</A>
+</noframes>
+</html>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_additions.html b/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_additions.html
new file mode 100644
index 0000000..5495f89
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_additions.html
@@ -0,0 +1,1118 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+All Additions Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for All Differences" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="alldiffs_index_all.html" xclass="hiddenlink">All Differences</a>
+  <br>
+<A HREF="alldiffs_index_removals.html" xclass="hiddenlink">Removals</A>
+  <br>
+<b>Additions</b>
+  <br>
+<A HREF="alldiffs_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<!-- Field abc_alert_dialog_button_bar_material -->
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.layout.html#android.support.v7.appcompat.R.layout.abc_alert_dialog_button_bar_material" class="hiddenlink" target="rightframe">abc_alert_dialog_button_bar_material</A>
+</nobr><br>
+<!-- Field abc_allow_stacked_button_bar -->
+<nobr><A HREF="android.support.v7.appcompat.R.bool.html#android.support.v7.appcompat.R.bool.abc_allow_stacked_button_bar" class="hiddenlink" target="rightframe">abc_allow_stacked_button_bar</A>
+</nobr><br>
+<!-- Field abc_btn_default_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_default_material" class="hiddenlink" target="rightframe">abc_btn_default_material</A>
+</nobr><br>
+<!-- Field abc_capital_off -->
+<nobr><A HREF="android.support.v7.appcompat.R.string.html#android.support.v7.appcompat.R.string.abc_capital_off" class="hiddenlink" target="rightframe">abc_capital_off</A>
+</nobr><br>
+<!-- Field abc_capital_on -->
+<nobr><A HREF="android.support.v7.appcompat.R.string.html#android.support.v7.appcompat.R.string.abc_capital_on" class="hiddenlink" target="rightframe">abc_capital_on</A>
+</nobr><br>
+<!-- Field abc_dialog_fixed_height_major -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_dialog_fixed_height_major" class="hiddenlink" target="rightframe">abc_dialog_fixed_height_major</A>
+</nobr><br>
+<!-- Field abc_dialog_fixed_height_minor -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_dialog_fixed_height_minor" class="hiddenlink" target="rightframe">abc_dialog_fixed_height_minor</A>
+</nobr><br>
+<!-- Field abc_dialog_fixed_width_major -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_dialog_fixed_width_major" class="hiddenlink" target="rightframe">abc_dialog_fixed_width_major</A>
+</nobr><br>
+<!-- Field abc_dialog_fixed_width_minor -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_dialog_fixed_width_minor" class="hiddenlink" target="rightframe">abc_dialog_fixed_width_minor</A>
+</nobr><br>
+<!-- Field abc_scrubber_control_off_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_control_off_mtrl_alpha" class="hiddenlink" target="rightframe">abc_scrubber_control_off_mtrl_alpha</A>
+</nobr><br>
+<!-- Field abc_scrubber_control_to_pressed_mtrl_000 -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_control_to_pressed_mtrl_000" class="hiddenlink" target="rightframe">abc_scrubber_control_to_pressed_mtrl_000</A>
+</nobr><br>
+<!-- Field abc_scrubber_control_to_pressed_mtrl_005 -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_control_to_pressed_mtrl_005" class="hiddenlink" target="rightframe">abc_scrubber_control_to_pressed_mtrl_005</A>
+</nobr><br>
+<!-- Field abc_scrubber_primary_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_primary_mtrl_alpha" class="hiddenlink" target="rightframe">abc_scrubber_primary_mtrl_alpha</A>
+</nobr><br>
+<!-- Field abc_scrubber_track_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_track_mtrl_alpha" class="hiddenlink" target="rightframe">abc_scrubber_track_mtrl_alpha</A>
+</nobr><br>
+<!-- Field abc_seekbar_thumb_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_seekbar_thumb_material" class="hiddenlink" target="rightframe">abc_seekbar_thumb_material</A>
+</nobr><br>
+<!-- Field abc_seekbar_track_background_height_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_seekbar_track_background_height_material" class="hiddenlink" target="rightframe">abc_seekbar_track_background_height_material</A>
+</nobr><br>
+<!-- Field abc_seekbar_track_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_seekbar_track_material" class="hiddenlink" target="rightframe">abc_seekbar_track_material</A>
+</nobr><br>
+<!-- Field abc_seekbar_track_progress_height_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_seekbar_track_progress_height_material" class="hiddenlink" target="rightframe">abc_seekbar_track_progress_height_material</A>
+</nobr><br>
+<!-- Field abc_select_dialog_padding_start_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_select_dialog_padding_start_material" class="hiddenlink" target="rightframe">abc_select_dialog_padding_start_material</A>
+</nobr><br>
+<!-- Method add -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.add_added(android.app.FragmentManager, android.support.v17.leanback.app.GuidedStepFragment, int)" class="hiddenlink" target="rightframe"><b>add</b>
+(<code>FragmentManager, GuidedStepFragment, int</code>)</A></nobr><br>
+<!-- Method addAsRoot -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.addAsRoot_added(android.app.Activity, android.support.v17.leanback.app.GuidedStepFragment, int)" class="hiddenlink" target="rightframe"><b>addAsRoot</b>
+(<code>Activity, GuidedStepFragment, int</code>)</A></nobr><br>
+<!-- Method addGroupMemberId -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.addGroupMemberId_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>addGroupMemberId</b>
+(<code>String</code>)</A></nobr><br>
+<!-- Method addGroupMemberIds -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.addGroupMemberIds_added(java.util.Collection<java.lang.String>)" class="hiddenlink" target="rightframe"><b>addGroupMemberIds</b>
+(<code>Collection&lt;String&gt;</code>)</A></nobr><br>
+<!-- Field allowStacking -->
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.allowStacking" class="hiddenlink" target="rightframe">allowStacking</A>
+</nobr><br>
+<!-- Class AppBarLayout.Behavior.DragCallback -->
+<A HREF="pkg_android.support.design.widget.html#AppBarLayout.Behavior.DragCallback" class="hiddenlink" target="rightframe"><b>AppBarLayout.Behavior.DragCallback</b></A><br>
+<!-- Constructor AppBarLayout.Behavior.SavedState -->
+<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.SavedState.html#android.support.design.widget.AppBarLayout.Behavior.SavedState.ctor_added(android.os.Parcel, java.lang.ClassLoader)" class="hiddenlink" target="rightframe"><b>AppBarLayout.Behavior.SavedState</b>
+(<code>Parcel, ClassLoader</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Field aspectRatio -->
+<nobr><A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html#android.support.percent.PercentLayoutHelper.PercentLayoutInfo.aspectRatio" class="hiddenlink" target="rightframe">aspectRatio</A>
+</nobr><br>
+<!-- Field Base_Widget_AppCompat_ImageButton -->
+<A NAME="B"></A>
+<br><font size="+2">B</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Base_Widget_AppCompat_ImageButton" class="hiddenlink" target="rightframe">Base_Widget_AppCompat_ImageButton</A>
+</nobr><br>
+<!-- Field Base_Widget_AppCompat_SeekBar -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Base_Widget_AppCompat_SeekBar" class="hiddenlink" target="rightframe">Base_Widget_AppCompat_SeekBar</A>
+</nobr><br>
+<!-- Class BundleCompat -->
+<A HREF="pkg_android.support.v4.app.html#BundleCompat" class="hiddenlink" target="rightframe"><b>BundleCompat</b></A><br>
+<!-- Field ButtonBarLayout_allowStacking -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.ButtonBarLayout_allowStacking" class="hiddenlink" target="rightframe">ButtonBarLayout_allowStacking</A>
+</nobr><br>
+<!-- Field CARD_TYPE_FLAG_CONTENT -->
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_CONTENT" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_CONTENT</A>
+</nobr><br>
+<!-- Field CARD_TYPE_FLAG_ICON_LEFT -->
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_ICON_LEFT" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_ICON_LEFT</A>
+</nobr><br>
+<!-- Field CARD_TYPE_FLAG_ICON_RIGHT -->
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_ICON_RIGHT" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_ICON_RIGHT</A>
+</nobr><br>
+<!-- Field CARD_TYPE_FLAG_IMAGE_ONLY -->
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_IMAGE_ONLY" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_IMAGE_ONLY</A>
+</nobr><br>
+<!-- Field CARD_TYPE_FLAG_TITLE -->
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_TITLE" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_TITLE</A>
+</nobr><br>
+<!-- Method clearRegion -->
+<nobr><A HREF="android.support.v7.graphics.Palette.Builder.html#android.support.v7.graphics.Palette.Builder.clearRegion_added()" class="hiddenlink" target="rightframe"><b>clearRegion</b>
+()</A></nobr><br>
+<!-- Field CONNECTION_STATE_CONNECTED -->
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.CONNECTION_STATE_CONNECTED" class="hiddenlink" target="rightframe">CONNECTION_STATE_CONNECTED</A>
+</nobr><br>
+<!-- Field CONNECTION_STATE_CONNECTING -->
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.CONNECTION_STATE_CONNECTING" class="hiddenlink" target="rightframe">CONNECTION_STATE_CONNECTING</A>
+</nobr><br>
+<!-- Field CONNECTION_STATE_DISCONNECTED -->
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.CONNECTION_STATE_DISCONNECTED" class="hiddenlink" target="rightframe">CONNECTION_STATE_DISCONNECTED</A>
+</nobr><br>
+<!-- Constructor CoordinatorLayout.SavedState -->
+<nobr><A HREF="android.support.design.widget.CoordinatorLayout.SavedState.html#android.support.design.widget.CoordinatorLayout.SavedState.ctor_added(android.os.Parcel, java.lang.ClassLoader)" class="hiddenlink" target="rightframe"><b>CoordinatorLayout.SavedState</b>
+(<code>Parcel, ClassLoader</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Method createEntranceTransition -->
+<i>createEntranceTransition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method createEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method createEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+<!-- Method createEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<!-- Method createEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+<!-- Method createEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridSupportFragment
+</A></nobr><br>
+<!-- Method createShadowOverlayOptions -->
+<i>createShadowOverlayOptions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.ListRowPresenter.html#android.support.v17.leanback.widget.ListRowPresenter.createShadowOverlayOptions_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.ListRowPresenter
+</A></nobr><br>
+<!-- Method createShadowOverlayOptions -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html#android.support.v17.leanback.widget.VerticalGridPresenter.createShadowOverlayOptions_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.VerticalGridPresenter
+</A></nobr><br>
+<!-- Field DEVICE_TYPE_SPEAKER -->
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.DEVICE_TYPE_SPEAKER" class="hiddenlink" target="rightframe">DEVICE_TYPE_SPEAKER</A>
+</nobr><br>
+<!-- Field DEVICE_TYPE_TV -->
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.DEVICE_TYPE_TV" class="hiddenlink" target="rightframe">DEVICE_TYPE_TV</A>
+</nobr><br>
+<!-- Method displayCompletions -->
+<i>displayCompletions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.SearchFragment.html#android.support.v17.leanback.app.SearchFragment.displayCompletions_added(android.view.inputmethod.CompletionInfo[])" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>CompletionInfo[]</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.SearchFragment
+</A></nobr><br>
+<!-- Method displayCompletions -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.SearchSupportFragment.html#android.support.v17.leanback.app.SearchSupportFragment.displayCompletions_added(android.view.inputmethod.CompletionInfo[])" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>CompletionInfo[]</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.SearchSupportFragment
+</A></nobr><br>
+<!-- Method displayCompletions -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.SearchBar.html#android.support.v17.leanback.widget.SearchBar.displayCompletions_added(android.view.inputmethod.CompletionInfo[])" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>CompletionInfo[]</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.SearchBar
+</A></nobr><br>
+<!-- Method editable -->
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.editable_added(boolean)" class="hiddenlink" target="rightframe"><b>editable</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method editTitle -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.editTitle_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>editTitle</b>
+(<code>String</code>)</A></nobr><br>
+<!-- Method enableUrlBarHiding -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.Builder.html#android.support.customtabs.CustomTabsIntent.Builder.enableUrlBarHiding_added()" class="hiddenlink" target="rightframe"><b>enableUrlBarHiding</b>
+()</A></nobr><br>
+<!-- Field EXTRA_ENABLE_URLBAR_HIDING -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.EXTRA_ENABLE_URLBAR_HIDING" class="hiddenlink" target="rightframe">EXTRA_ENABLE_URLBAR_HIDING</A>
+</nobr><br>
+<!-- Field EXTRA_TINT_ACTION_BUTTON -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.EXTRA_TINT_ACTION_BUTTON" class="hiddenlink" target="rightframe">EXTRA_TINT_ACTION_BUTTON</A>
+</nobr><br>
+<!-- Field EXTRA_UI_STYLE -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.EXTRA_UI_STYLE" class="hiddenlink" target="rightframe">EXTRA_UI_STYLE</A>
+</nobr><br>
+<!-- Class FloatingActionButton.OnVisibilityChangedListener -->
+<A NAME="F"></A>
+<br><font size="+2">F</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.design.widget.html#FloatingActionButton.OnVisibilityChangedListener" class="hiddenlink" target="rightframe"><b>FloatingActionButton.OnVisibilityChangedListener</b></A><br>
+<!-- Method getCollapsedTitleTypeface -->
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.getCollapsedTitleTypeface_added()" class="hiddenlink" target="rightframe"><b>getCollapsedTitleTypeface</b>
+()</A></nobr><br>
+<!-- Method getColor -->
+<nobr><A HREF="android.support.v4.content.res.ResourcesCompat.html#android.support.v4.content.res.ResourcesCompat.getColor_added(android.content.res.Resources, int, android.content.res.Resources.Theme)" class="hiddenlink" target="rightframe"><b>getColor</b>
+(<code>Resources, int, Theme</code>)</A></nobr><br>
+<!-- Method getColorStateList -->
+<nobr><A HREF="android.support.v4.content.res.ResourcesCompat.html#android.support.v4.content.res.ResourcesCompat.getColorStateList_added(android.content.res.Resources, int, android.content.res.Resources.Theme)" class="hiddenlink" target="rightframe"><b>getColorStateList</b>
+(<code>Resources, int, Theme</code>)</A></nobr><br>
+<!-- Method getConnectionState -->
+<i>getConnectionState</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getConnectionState_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouteDescriptor
+</A></nobr><br>
+<!-- Method getConnectionState -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.getConnectionState_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouter.RouteInfo
+</A></nobr><br>
+<!-- Method getContainerIdForBackground -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getContainerIdForBackground_added()" class="hiddenlink" target="rightframe"><b>getContainerIdForBackground</b>
+()</A></nobr><br>
+<!-- Method getCounterMaxLength -->
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.getCounterMaxLength_added()" class="hiddenlink" target="rightframe"><b>getCounterMaxLength</b>
+()</A></nobr><br>
+<!-- Method getDeviceType -->
+<i>getDeviceType</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getDeviceType_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouteDescriptor
+</A></nobr><br>
+<!-- Method getDeviceType -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.getDeviceType_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouter.RouteInfo
+</A></nobr><br>
+<!-- Method getEditableTitleView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.getEditableTitleView_added()" class="hiddenlink" target="rightframe"><b>getEditableTitleView</b>
+()</A></nobr><br>
+<!-- Method getEditTitle -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.getEditTitle_added()" class="hiddenlink" target="rightframe"><b>getEditTitle</b>
+()</A></nobr><br>
+<!-- Method getExpandedTitleTypeface -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.getExpandedTitleTypeface_added()" class="hiddenlink" target="rightframe"><b>getExpandedTitleTypeface</b>
+()</A></nobr><br>
+<!-- Method getGroupMemberIds -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getGroupMemberIds_added()" class="hiddenlink" target="rightframe"><b>getGroupMemberIds</b>
+()</A></nobr><br>
+<!-- Method getIconUri -->
+<i>getIconUri</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getIconUri_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouteDescriptor
+</A></nobr><br>
+<!-- Method getIconUri -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.getIconUri_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouter.RouteInfo
+</A></nobr><br>
+<!-- Method getKeepChildForeground -->
+<nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html#android.support.v17.leanback.widget.VerticalGridPresenter.getKeepChildForeground_added()" class="hiddenlink" target="rightframe"><b>getKeepChildForeground</b>
+()</A></nobr><br>
+<!-- Method getMaxLines -->
+<nobr><A HREF="android.support.v4.widget.TextViewCompat.html#android.support.v4.widget.TextViewCompat.getMaxLines_added(android.widget.TextView)" class="hiddenlink" target="rightframe"><b>getMaxLines</b>
+(<code>TextView</code>)</A></nobr><br>
+<!-- Method getMinLines -->
+<nobr><A HREF="android.support.v4.widget.TextViewCompat.html#android.support.v4.widget.TextViewCompat.getMinLines_added(android.widget.TextView)" class="hiddenlink" target="rightframe"><b>getMinLines</b>
+(<code>TextView</code>)</A></nobr><br>
+<!-- Method getPaint -->
+<nobr><A HREF="android.support.v7.graphics.drawable.DrawerArrowDrawable.html#android.support.v7.graphics.drawable.DrawerArrowDrawable.getPaint_added()" class="hiddenlink" target="rightframe"><b>getPaint</b>
+()</A></nobr><br>
+<!-- Method getScrollIndicators -->
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.getScrollIndicators_added(android.view.View)" class="hiddenlink" target="rightframe"><b>getScrollIndicators</b>
+(<code>View</code>)</A></nobr><br>
+<!-- Method getSessionTokenFromIntent -->
+<nobr><A HREF="android.support.customtabs.CustomTabsSessionToken.html#android.support.customtabs.CustomTabsSessionToken.getSessionTokenFromIntent_added(android.content.Intent)" class="hiddenlink" target="rightframe"><b>getSessionTokenFromIntent</b>
+(<code>Intent</code>)</A></nobr><br>
+<!-- Method getSupportMediaController -->
+<nobr><A HREF="android.support.v4.app.FragmentActivity.html#android.support.v4.app.FragmentActivity.getSupportMediaController_added()" class="hiddenlink" target="rightframe"><b>getSupportMediaController</b>
+()</A></nobr><br>
+<!-- Method getTypeface -->
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.getTypeface_added()" class="hiddenlink" target="rightframe"><b>getTypeface</b>
+()</A></nobr><br>
+<!-- Method getUiStyle -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getUiStyle_added()" class="hiddenlink" target="rightframe"><b>getUiStyle</b>
+()</A></nobr><br>
+<!-- Class GuidedActionEditText -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#GuidedActionEditText" class="hiddenlink" target="rightframe"><b>GuidedActionEditText</b></A><br>
+<!-- Class GuidedStepFragment.GuidedStepBackgroundFragment -->
+<A HREF="pkg_android.support.v17.leanback.app.html#GuidedStepFragment.GuidedStepBackgroundFragment" class="hiddenlink" target="rightframe"><b>GuidedStepFragment.GuidedStepBackgroundFragment</b></A><br>
+<!-- Class GuidedStepSupportFragment -->
+<A HREF="pkg_android.support.v17.leanback.app.html#GuidedStepSupportFragment" class="hiddenlink" target="rightframe"><b>GuidedStepSupportFragment</b></A><br>
+<!-- Class GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment -->
+<A HREF="pkg_android.support.v17.leanback.app.html#GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment" class="hiddenlink" target="rightframe"><b>GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment</b></A><br>
+<!-- Method hasOnClickListeners -->
+<A NAME="H"></A>
+<br><font size="+2">H</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.hasOnClickListeners_added(android.view.View)" class="hiddenlink" target="rightframe"><b>hasOnClickListeners</b>
+(<code>View</code>)</A></nobr><br>
+<!-- Class HeaderBehavior -->
+<A HREF="pkg_android.support.design.widget.html#HeaderBehavior" class="hiddenlink" target="rightframe"><b>HeaderBehavior</b></A><br>
+<!-- Class HeaderScrollingViewBehavior -->
+<A HREF="pkg_android.support.design.widget.html#HeaderScrollingViewBehavior" class="hiddenlink" target="rightframe"><b>HeaderScrollingViewBehavior</b></A><br>
+<!-- Method hide -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.hide_added(android.support.design.widget.FloatingActionButton.OnVisibilityChangedListener)" class="hiddenlink" target="rightframe"><b>hide</b>
+(<code>OnVisibilityChangedListener</code>)</A></nobr><br>
+<!-- Field imageButtonStyle -->
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.imageButtonStyle" class="hiddenlink" target="rightframe">imageButtonStyle</A>
+</nobr><br>
+<!-- Constructor ImageCardView -->
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.ctor_added(android.content.Context, int)" class="hiddenlink" target="rightframe"><b>ImageCardView</b>
+(<code>Context, int</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Class ImeKeyMonitor -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#ImeKeyMonitor" class="hiddenlink" target="rightframe"><b><i>ImeKeyMonitor</i></b></A><br>
+<!-- Class ImeKeyMonitor.ImeKeyListener -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#ImeKeyMonitor.ImeKeyListener" class="hiddenlink" target="rightframe"><b><i>ImeKeyMonitor.ImeKeyListener</i></b></A><br>
+<!-- Method isEditable -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.isEditable_added()" class="hiddenlink" target="rightframe"><b>isEditable</b>
+()</A></nobr><br>
+<!-- Method isEditTitleUsed -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.isEditTitleUsed_added()" class="hiddenlink" target="rightframe"><b>isEditTitleUsed</b>
+()</A></nobr><br>
+<!-- Method isKeepChildForeground -->
+<nobr><A HREF="android.support.v17.leanback.widget.ListRowPresenter.html#android.support.v17.leanback.widget.ListRowPresenter.isKeepChildForeground_added()" class="hiddenlink" target="rightframe"><b>isKeepChildForeground</b>
+()</A></nobr><br>
+<!-- Method isShownOrQueued -->
+<nobr><A HREF="android.support.design.widget.Snackbar.html#android.support.design.widget.Snackbar.isShownOrQueued_added()" class="hiddenlink" target="rightframe"><b>isShownOrQueued</b>
+()</A></nobr><br>
+<!-- Class ItemBridgeAdapterShadowOverlayWrapper -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#ItemBridgeAdapterShadowOverlayWrapper" class="hiddenlink" target="rightframe"><b>ItemBridgeAdapterShadowOverlayWrapper</b></A><br>
+<!-- Class MediaButtonReceiver -->
+<A NAME="M"></A>
+<br><font size="+2">M</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.v4.media.session.html#MediaButtonReceiver" class="hiddenlink" target="rightframe"><b>MediaButtonReceiver</b></A><br>
+<!-- Class MediaRouter.RouteGroup -->
+<A HREF="pkg_android.support.v7.media.html#MediaRouter.RouteGroup" class="hiddenlink" target="rightframe"><b>MediaRouter.RouteGroup</b></A><br>
+<!-- Constructor MediaSessionCompat -->
+<nobr><A HREF="android.support.v4.media.session.MediaSessionCompat.html#android.support.v4.media.session.MediaSessionCompat.ctor_added(android.content.Context, java.lang.String)" class="hiddenlink" target="rightframe"><b>MediaSessionCompat</b>
+(<code>Context, String</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Constructor NavigationView.SavedState -->
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.NavigationView.SavedState.html#android.support.design.widget.NavigationView.SavedState.ctor_added(android.os.Parcel, java.lang.ClassLoader)" class="hiddenlink" target="rightframe"><b>NavigationView.SavedState</b>
+(<code>Parcel, ClassLoader</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Class NestedScrollView.OnScrollChangeListener -->
+<A HREF="pkg_android.support.v4.widget.html#NestedScrollView.OnScrollChangeListener" class="hiddenlink" target="rightframe"><b><i>NestedScrollView.OnScrollChangeListener</i></b></A><br>
+<!-- Method onDestroyView -->
+<A NAME="O"></A>
+<br><font size="+2">O</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>onDestroyView</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlayFragment.html#android.support.v17.leanback.app.PlaybackOverlayFragment.onDestroyView_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.PlaybackOverlayFragment
+</A></nobr><br>
+<!-- Method onDestroyView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html#android.support.v17.leanback.app.PlaybackOverlaySupportFragment.onDestroyView_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.PlaybackOverlaySupportFragment
+</A></nobr><br>
+<!-- Method onDestroyView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.onDestroyView_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionEnd -->
+<i>onEntranceTransitionEnd</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onEntranceTransitionEnd_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionEnd -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onEntranceTransitionEnd_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionEnd -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.onEntranceTransitionEnd_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionEnd -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.onEntranceTransitionEnd_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionPrepare -->
+<i>onEntranceTransitionPrepare</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onEntranceTransitionPrepare_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionPrepare -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onEntranceTransitionPrepare_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionPrepare -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.onEntranceTransitionPrepare_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionPrepare -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.onEntranceTransitionPrepare_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionStart -->
+<i>onEntranceTransitionStart</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onEntranceTransitionStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionStart -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onEntranceTransitionStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionStart -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.onEntranceTransitionStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionStart -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.onEntranceTransitionStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<!-- Method onGuidedActionEdited -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onGuidedActionEdited_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe"><b>onGuidedActionEdited</b>
+(<code>GuidedAction</code>)</A></nobr><br>
+<!-- Method onImeAppearing -->
+<i>onImeAppearing</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onImeAppearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+<!-- Method onImeAppearing -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onImeAppearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onImeAppearing -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onImeAppearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onImeDisappearing -->
+<i>onImeDisappearing</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onImeDisappearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+<!-- Method onImeDisappearing -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onImeDisappearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onImeDisappearing -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onImeDisappearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onLayoutChild -->
+<nobr><A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html#android.support.design.widget.AppBarLayout.ScrollingViewBehavior.onLayoutChild_added(android.support.design.widget.CoordinatorLayout, android.view.View, int)" class="hiddenlink" target="rightframe"><b>onLayoutChild</b>
+(<code>CoordinatorLayout, View, int</code>)</A></nobr><br>
+<!-- Method onProvideBackgroundFragment -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onProvideBackgroundFragment_added()" class="hiddenlink" target="rightframe"><b>onProvideBackgroundFragment</b>
+()</A></nobr><br>
+<!-- Method onProvideFragmentTransitions -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onProvideFragmentTransitions_added()" class="hiddenlink" target="rightframe"><b>onProvideFragmentTransitions</b>
+()</A></nobr><br>
+<!-- Method onResume -->
+<i>onResume</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlayFragment.html#android.support.v17.leanback.app.PlaybackOverlayFragment.onResume_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.PlaybackOverlayFragment
+</A></nobr><br>
+<!-- Method onResume -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html#android.support.v17.leanback.app.PlaybackOverlaySupportFragment.onResume_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.PlaybackOverlaySupportFragment
+</A></nobr><br>
+<!-- Method onSaveInstanceState -->
+<i>onSaveInstanceState</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onSaveInstanceState_added(android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method onSaveInstanceState -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onSaveInstanceState_added(android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method onStart -->
+<i>onStart</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method onStart -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method onStart -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+<!-- Method onStart -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<!-- Method onStart -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+<!-- Method onViewCreated -->
+<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.onViewCreated_added(android.view.View, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>onViewCreated</b>
+(<code>View, Bundle</code>)</A></nobr><br>
+<!-- Class ParallelExecutorCompat -->
+<A NAME="P"></A>
+<br><font size="+2">P</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.v4.content.html#ParallelExecutorCompat" class="hiddenlink" target="rightframe"><b>ParallelExecutorCompat</b></A><br>
+<!-- Class PlaybackControlSupportGlue -->
+<A HREF="pkg_android.support.v17.leanback.app.html#PlaybackControlSupportGlue" class="hiddenlink" target="rightframe"><b>PlaybackControlSupportGlue</b></A><br>
+<!-- Field RtlUnderlay_Widget_AppCompat_ActionButton -->
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.RtlUnderlay_Widget_AppCompat_ActionButton" class="hiddenlink" target="rightframe">RtlUnderlay_Widget_AppCompat_ActionButton</A>
+</nobr><br>
+<!-- Field RtlUnderlay_Widget_AppCompat_ActionButton_Overflow -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.RtlUnderlay_Widget_AppCompat_ActionButton_Overflow" class="hiddenlink" target="rightframe">RtlUnderlay_Widget_AppCompat_ActionButton_Overflow</A>
+</nobr><br>
+<!-- Method runEntranceTransition -->
+<i>runEntranceTransition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method runEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method runEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+<!-- Method runEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<!-- Method runEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+<!-- Method runEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridSupportFragment
+</A></nobr><br>
+<!-- Field SCROLL_FLAG_SNAP -->
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.AppBarLayout.LayoutParams.html#android.support.design.widget.AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP" class="hiddenlink" target="rightframe">SCROLL_FLAG_SNAP</A>
+</nobr><br>
+<!-- Field SCROLL_INDICATOR_BOTTOM -->
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_BOTTOM" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_BOTTOM</A>
+</nobr><br>
+<!-- Field SCROLL_INDICATOR_END -->
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_END" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_END</A>
+</nobr><br>
+<!-- Field SCROLL_INDICATOR_LEFT -->
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_LEFT" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_LEFT</A>
+</nobr><br>
+<!-- Field SCROLL_INDICATOR_RIGHT -->
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_RIGHT" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_RIGHT</A>
+</nobr><br>
+<!-- Field SCROLL_INDICATOR_START -->
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_START" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_START</A>
+</nobr><br>
+<!-- Field SCROLL_INDICATOR_TOP -->
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_TOP" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_TOP</A>
+</nobr><br>
+<!-- Field scrollIndicatorDown -->
+<nobr><A HREF="android.support.v7.appcompat.R.id.html#android.support.v7.appcompat.R.id.scrollIndicatorDown" class="hiddenlink" target="rightframe">scrollIndicatorDown</A>
+</nobr><br>
+<!-- Field scrollIndicatorUp -->
+<nobr><A HREF="android.support.v7.appcompat.R.id.html#android.support.v7.appcompat.R.id.scrollIndicatorUp" class="hiddenlink" target="rightframe">scrollIndicatorUp</A>
+</nobr><br>
+<!-- Field seekBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.seekBarStyle" class="hiddenlink" target="rightframe">seekBarStyle</A>
+</nobr><br>
+<!-- Method setActionButton -->
+<i>setActionButton</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.customtabs.CustomTabsIntent.Builder.html#android.support.customtabs.CustomTabsIntent.Builder.setActionButton_added(android.graphics.Bitmap, java.lang.String, android.app.PendingIntent, boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bitmap, String, PendingIntent, boolean</code>)</b>&nbsp;in&nbsp;android.support.customtabs.CustomTabsIntent.Builder
+</A></nobr><br>
+<!-- Method setActionButton -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.customtabs.CustomTabsSession.html#android.support.customtabs.CustomTabsSession.setActionButton_added(android.graphics.Bitmap, java.lang.String)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bitmap, String</code>)</b>&nbsp;in&nbsp;android.support.customtabs.CustomTabsSession
+</A></nobr><br>
+<!-- Method setCollapsedTitleTypeface -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setCollapsedTitleTypeface_added(android.graphics.Typeface)" class="hiddenlink" target="rightframe"><b>setCollapsedTitleTypeface</b>
+(<code>Typeface</code>)</A></nobr><br>
+<!-- Method setConnectionState -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.setConnectionState_added(int)" class="hiddenlink" target="rightframe"><b>setConnectionState</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setCounterEnabled -->
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.setCounterEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setCounterEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setCounterMaxLength -->
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.setCounterMaxLength_added(int)" class="hiddenlink" target="rightframe"><b>setCounterMaxLength</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setDescription -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setDescription_added(java.lang.CharSequence)" class="hiddenlink" target="rightframe"><b>setDescription</b>
+(<code>CharSequence</code>)</A></nobr><br>
+<!-- Method setDeviceType -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.setDeviceType_added(int)" class="hiddenlink" target="rightframe"><b>setDeviceType</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setDragCallback -->
+<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.html#android.support.design.widget.AppBarLayout.Behavior.setDragCallback_added(android.support.design.widget.AppBarLayout.Behavior.DragCallback)" class="hiddenlink" target="rightframe"><b>setDragCallback</b>
+(<code>DragCallback</code>)</A></nobr><br>
+<!-- Method setEditTitle -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setEditTitle_added(java.lang.CharSequence)" class="hiddenlink" target="rightframe"><b>setEditTitle</b>
+(<code>CharSequence</code>)</A></nobr><br>
+<!-- Method setEntranceTransitionState -->
+<nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html#android.support.v17.leanback.widget.VerticalGridPresenter.setEntranceTransitionState_added(android.support.v17.leanback.widget.VerticalGridPresenter.ViewHolder, boolean)" class="hiddenlink" target="rightframe"><b>setEntranceTransitionState</b>
+(<code>ViewHolder, boolean</code>)</A></nobr><br>
+<!-- Method setExpandedTitleTypeface -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleTypeface_added(android.graphics.Typeface)" class="hiddenlink" target="rightframe"><b>setExpandedTitleTypeface</b>
+(<code>Typeface</code>)</A></nobr><br>
+<!-- Method setIconUri -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.setIconUri_added(android.net.Uri)" class="hiddenlink" target="rightframe"><b>setIconUri</b>
+(<code>Uri</code>)</A></nobr><br>
+<!-- Method setKeepChildForeground -->
+<i>setKeepChildForeground</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.ListRowPresenter.html#android.support.v17.leanback.widget.ListRowPresenter.setKeepChildForeground_added(boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>boolean</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.ListRowPresenter
+</A></nobr><br>
+<!-- Method setKeepChildForeground -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html#android.support.v17.leanback.widget.VerticalGridPresenter.setKeepChildForeground_added(boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>boolean</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.VerticalGridPresenter
+</A></nobr><br>
+<!-- Method setOnScrollChangeListener -->
+<nobr><A HREF="android.support.v4.widget.NestedScrollView.html#android.support.v4.widget.NestedScrollView.setOnScrollChangeListener_added(android.support.v4.widget.NestedScrollView.OnScrollChangeListener)" class="hiddenlink" target="rightframe"><b>setOnScrollChangeListener</b>
+(<code>OnScrollChangeListener</code>)</A></nobr><br>
+<!-- Method setRegion -->
+<nobr><A HREF="android.support.v7.graphics.Palette.Builder.html#android.support.v7.graphics.Palette.Builder.setRegion_added(int, int, int, int)" class="hiddenlink" target="rightframe"><b>setRegion</b>
+(<code>int, int, int, int</code>)</A></nobr><br>
+<!-- Method setScrimsShown -->
+<i>setScrimsShown</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setScrimsShown_added(boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>boolean</code>)</b>&nbsp;in&nbsp;android.support.design.widget.CollapsingToolbarLayout
+</A></nobr><br>
+<!-- Method setScrimsShown -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setScrimsShown_added(boolean, boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>boolean, boolean</code>)</b>&nbsp;in&nbsp;android.support.design.widget.CollapsingToolbarLayout
+</A></nobr><br>
+<!-- Method setScrollIndicators -->
+<i>setScrollIndicators</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.setScrollIndicators_added(android.view.View, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>View, int</code>)</b>&nbsp;in&nbsp;android.support.v4.view.ViewCompat
+</A></nobr><br>
+<!-- Method setScrollIndicators -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.setScrollIndicators_added(android.view.View, int, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>View, int, int</code>)</b>&nbsp;in&nbsp;android.support.v4.view.ViewCompat
+</A></nobr><br>
+<!-- Method setSupportMediaController -->
+<nobr><A HREF="android.support.v4.app.FragmentActivity.html#android.support.v4.app.FragmentActivity.setSupportMediaController_added(android.support.v4.media.session.MediaControllerCompat)" class="hiddenlink" target="rightframe"><b>setSupportMediaController</b>
+(<code>MediaControllerCompat</code>)</A></nobr><br>
+<!-- Method setTitle -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setTitle_added(java.lang.CharSequence)" class="hiddenlink" target="rightframe"><b>setTitle</b>
+(<code>CharSequence</code>)</A></nobr><br>
+<!-- Method setUiStyle -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.setUiStyle_added(int)" class="hiddenlink" target="rightframe"><b>setUiStyle</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Class ShadowOverlayHelper -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#ShadowOverlayHelper" class="hiddenlink" target="rightframe"><b>ShadowOverlayHelper</b></A><br>
+<!-- Class ShadowOverlayHelper.Builder -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#ShadowOverlayHelper.Builder" class="hiddenlink" target="rightframe"><b>ShadowOverlayHelper.Builder</b></A><br>
+<!-- Class ShadowOverlayHelper.Options -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#ShadowOverlayHelper.Options" class="hiddenlink" target="rightframe"><b>ShadowOverlayHelper.Options</b></A><br>
+<!-- Method show -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.show_added(android.support.design.widget.FloatingActionButton.OnVisibilityChangedListener)" class="hiddenlink" target="rightframe"><b>show</b>
+(<code>OnVisibilityChangedListener</code>)</A></nobr><br>
+<!-- Field spacer -->
+<nobr><A HREF="android.support.v7.appcompat.R.id.html#android.support.v7.appcompat.R.id.spacer" class="hiddenlink" target="rightframe">spacer</A>
+</nobr><br>
+<!-- Method springBack -->
+<nobr><A HREF="android.support.v4.widget.ScrollerCompat.html#android.support.v4.widget.ScrollerCompat.springBack_added(int, int, int, int, int, int)" class="hiddenlink" target="rightframe"><b>springBack</b>
+(<code>int, int, int, int, int, int</code>)</A></nobr><br>
+<!-- Field TAB_HIDDEN -->
+<A NAME="T"></A>
+<br><font size="+2">T</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.customtabs.CustomTabsCallback.html#android.support.customtabs.CustomTabsCallback.TAB_HIDDEN" class="hiddenlink" target="rightframe">TAB_HIDDEN</A>
+</nobr><br>
+<!-- Field TAB_SHOWN -->
+<nobr><A HREF="android.support.customtabs.CustomTabsCallback.html#android.support.customtabs.CustomTabsCallback.TAB_SHOWN" class="hiddenlink" target="rightframe">TAB_SHOWN</A>
+</nobr><br>
+<!-- Field TextAppearance_android_shadowColor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowColor" class="hiddenlink" target="rightframe">TextAppearance_android_shadowColor</A>
+</nobr><br>
+<!-- Field TextAppearance_android_shadowDx -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowDx" class="hiddenlink" target="rightframe">TextAppearance_android_shadowDx</A>
+</nobr><br>
+<!-- Field TextAppearance_android_shadowDy -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowDy" class="hiddenlink" target="rightframe">TextAppearance_android_shadowDy</A>
+</nobr><br>
+<!-- Field TextAppearance_android_shadowRadius -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowRadius" class="hiddenlink" target="rightframe">TextAppearance_android_shadowRadius</A>
+</nobr><br>
+<!-- Field Theme_imageButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_imageButtonStyle" class="hiddenlink" target="rightframe">Theme_imageButtonStyle</A>
+</nobr><br>
+<!-- Field Theme_seekBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_seekBarStyle" class="hiddenlink" target="rightframe">Theme_seekBarStyle</A>
+</nobr><br>
+<!-- Field UI_STYLE_ACTIVITY_ROOT -->
+<A NAME="U"></A>
+<br><font size="+2">U</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_ACTIVITY_ROOT" class="hiddenlink" target="rightframe">UI_STYLE_ACTIVITY_ROOT</A>
+</nobr><br>
+<!-- Field UI_STYLE_DEFAULT -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_DEFAULT" class="hiddenlink" target="rightframe">UI_STYLE_DEFAULT</A>
+</nobr><br>
+<!-- Field UI_STYLE_ENTRANCE -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_ENTRANCE" class="hiddenlink" target="rightframe">UI_STYLE_ENTRANCE</A>
+</nobr><br>
+<!-- Method updateVisuals -->
+<nobr><A HREF="android.support.customtabs.CustomTabsService.html#android.support.customtabs.CustomTabsService.updateVisuals_added(android.support.customtabs.CustomTabsSessionToken, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>updateVisuals</b>
+(<code>CustomTabsSessionToken, Bundle</code>)</A></nobr><br>
+<!-- Field Widget_AppCompat_ImageButton -->
+<A NAME="W"></A>
+<br><font size="+2">W</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_ImageButton" class="hiddenlink" target="rightframe">Widget_AppCompat_ImageButton</A>
+</nobr><br>
+<!-- Field Widget_AppCompat_SeekBar -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_SeekBar" class="hiddenlink" target="rightframe">Widget_AppCompat_SeekBar</A>
+</nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_all.html b/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_all.html
new file mode 100644
index 0000000..575ee95
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_all.html
@@ -0,0 +1,1525 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+All Differences Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for All Differences" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<b>All Differences</b>
+  <br>
+<A HREF="alldiffs_index_removals.html" xclass="hiddenlink">Removals</A>
+  <br>
+<A HREF="alldiffs_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="alldiffs_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<!-- Field abc_alert_dialog_button_bar_material -->
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.layout.html#android.support.v7.appcompat.R.layout.abc_alert_dialog_button_bar_material" class="hiddenlink" target="rightframe">abc_alert_dialog_button_bar_material</A>
+</nobr><br>
+<!-- Field abc_allow_stacked_button_bar -->
+<nobr><A HREF="android.support.v7.appcompat.R.bool.html#android.support.v7.appcompat.R.bool.abc_allow_stacked_button_bar" class="hiddenlink" target="rightframe">abc_allow_stacked_button_bar</A>
+</nobr><br>
+<!-- Field abc_btn_default_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_default_material" class="hiddenlink" target="rightframe">abc_btn_default_material</A>
+</nobr><br>
+<!-- Field abc_capital_off -->
+<nobr><A HREF="android.support.v7.appcompat.R.string.html#android.support.v7.appcompat.R.string.abc_capital_off" class="hiddenlink" target="rightframe">abc_capital_off</A>
+</nobr><br>
+<!-- Field abc_capital_on -->
+<nobr><A HREF="android.support.v7.appcompat.R.string.html#android.support.v7.appcompat.R.string.abc_capital_on" class="hiddenlink" target="rightframe">abc_capital_on</A>
+</nobr><br>
+<!-- Field abc_dialog_fixed_height_major -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_dialog_fixed_height_major" class="hiddenlink" target="rightframe">abc_dialog_fixed_height_major</A>
+</nobr><br>
+<!-- Field abc_dialog_fixed_height_minor -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_dialog_fixed_height_minor" class="hiddenlink" target="rightframe">abc_dialog_fixed_height_minor</A>
+</nobr><br>
+<!-- Field abc_dialog_fixed_width_major -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_dialog_fixed_width_major" class="hiddenlink" target="rightframe">abc_dialog_fixed_width_major</A>
+</nobr><br>
+<!-- Field abc_dialog_fixed_width_minor -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_dialog_fixed_width_minor" class="hiddenlink" target="rightframe">abc_dialog_fixed_width_minor</A>
+</nobr><br>
+<!-- Field abc_scrubber_control_off_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_control_off_mtrl_alpha" class="hiddenlink" target="rightframe">abc_scrubber_control_off_mtrl_alpha</A>
+</nobr><br>
+<!-- Field abc_scrubber_control_to_pressed_mtrl_000 -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_control_to_pressed_mtrl_000" class="hiddenlink" target="rightframe">abc_scrubber_control_to_pressed_mtrl_000</A>
+</nobr><br>
+<!-- Field abc_scrubber_control_to_pressed_mtrl_005 -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_control_to_pressed_mtrl_005" class="hiddenlink" target="rightframe">abc_scrubber_control_to_pressed_mtrl_005</A>
+</nobr><br>
+<!-- Field abc_scrubber_primary_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_primary_mtrl_alpha" class="hiddenlink" target="rightframe">abc_scrubber_primary_mtrl_alpha</A>
+</nobr><br>
+<!-- Field abc_scrubber_track_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_track_mtrl_alpha" class="hiddenlink" target="rightframe">abc_scrubber_track_mtrl_alpha</A>
+</nobr><br>
+<!-- Field abc_seekbar_thumb_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_seekbar_thumb_material" class="hiddenlink" target="rightframe">abc_seekbar_thumb_material</A>
+</nobr><br>
+<!-- Field abc_seekbar_track_background_height_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_seekbar_track_background_height_material" class="hiddenlink" target="rightframe">abc_seekbar_track_background_height_material</A>
+</nobr><br>
+<!-- Field abc_seekbar_track_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_seekbar_track_material" class="hiddenlink" target="rightframe">abc_seekbar_track_material</A>
+</nobr><br>
+<!-- Field abc_seekbar_track_progress_height_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_seekbar_track_progress_height_material" class="hiddenlink" target="rightframe">abc_seekbar_track_progress_height_material</A>
+</nobr><br>
+<!-- Field abc_select_dialog_padding_start_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_select_dialog_padding_start_material" class="hiddenlink" target="rightframe">abc_select_dialog_padding_start_material</A>
+</nobr><br>
+<!-- Method add -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.add_added(android.app.FragmentManager, android.support.v17.leanback.app.GuidedStepFragment, int)" class="hiddenlink" target="rightframe"><b>add</b>
+(<code>FragmentManager, GuidedStepFragment, int</code>)</A></nobr><br>
+<!-- Method addAsRoot -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.addAsRoot_added(android.app.Activity, android.support.v17.leanback.app.GuidedStepFragment, int)" class="hiddenlink" target="rightframe"><b>addAsRoot</b>
+(<code>Activity, GuidedStepFragment, int</code>)</A></nobr><br>
+<!-- Method addGroupMemberId -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.addGroupMemberId_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>addGroupMemberId</b>
+(<code>String</code>)</A></nobr><br>
+<!-- Method addGroupMemberIds -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.addGroupMemberIds_added(java.util.Collection<java.lang.String>)" class="hiddenlink" target="rightframe"><b>addGroupMemberIds</b>
+(<code>Collection&lt;String&gt;</code>)</A></nobr><br>
+<!-- Field allowStacking -->
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.allowStacking" class="hiddenlink" target="rightframe">allowStacking</A>
+</nobr><br>
+<!-- Package android.support.customtabs -->
+<A HREF="pkg_android.support.customtabs.html" class="hiddenlink" target="rightframe">android.support.customtabs</A><br>
+<!-- Package android.support.design.widget -->
+<A HREF="pkg_android.support.design.widget.html" class="hiddenlink" target="rightframe">android.support.design.widget</A><br>
+<!-- Package android.support.percent -->
+<A HREF="pkg_android.support.percent.html" class="hiddenlink" target="rightframe">android.support.percent</A><br>
+<!-- Package android.support.v14.preference -->
+<A HREF="pkg_android.support.v14.preference.html" class="hiddenlink" target="rightframe">android.support.v14.preference</A><br>
+<!-- Package android.support.v17.leanback.app -->
+<A HREF="pkg_android.support.v17.leanback.app.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.app</A><br>
+<!-- Package android.support.v17.leanback.widget -->
+<A HREF="pkg_android.support.v17.leanback.widget.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.widget</A><br>
+<!-- Package android.support.v4.app -->
+<A HREF="pkg_android.support.v4.app.html" class="hiddenlink" target="rightframe">android.support.v4.app</A><br>
+<!-- Package android.support.v4.content -->
+<A HREF="pkg_android.support.v4.content.html" class="hiddenlink" target="rightframe">android.support.v4.content</A><br>
+<!-- Package android.support.v4.content.res -->
+<A HREF="pkg_android.support.v4.content.res.html" class="hiddenlink" target="rightframe">android.support.v4.content.res</A><br>
+<!-- Package android.support.v4.media.session -->
+<A HREF="pkg_android.support.v4.media.session.html" class="hiddenlink" target="rightframe">android.support.v4.media.session</A><br>
+<!-- Package android.support.v4.view -->
+<A HREF="pkg_android.support.v4.view.html" class="hiddenlink" target="rightframe">android.support.v4.view</A><br>
+<!-- Package android.support.v4.widget -->
+<A HREF="pkg_android.support.v4.widget.html" class="hiddenlink" target="rightframe">android.support.v4.widget</A><br>
+<!-- Package android.support.v7.appcompat -->
+<A HREF="pkg_android.support.v7.appcompat.html" class="hiddenlink" target="rightframe">android.support.v7.appcompat</A><br>
+<!-- Package android.support.v7.graphics -->
+<A HREF="pkg_android.support.v7.graphics.html" class="hiddenlink" target="rightframe">android.support.v7.graphics</A><br>
+<!-- Package android.support.v7.graphics.drawable -->
+<A HREF="pkg_android.support.v7.graphics.drawable.html" class="hiddenlink" target="rightframe">android.support.v7.graphics.drawable</A><br>
+<!-- Package android.support.v7.media -->
+<A HREF="pkg_android.support.v7.media.html" class="hiddenlink" target="rightframe">android.support.v7.media</A><br>
+<!-- Package android.support.v7.preference -->
+<A HREF="pkg_android.support.v7.preference.html" class="hiddenlink" target="rightframe">android.support.v7.preference</A><br>
+<!-- Class AppBarLayout.Behavior -->
+<A HREF="android.support.design.widget.AppBarLayout.Behavior.html" class="hiddenlink" target="rightframe">AppBarLayout.Behavior</A><br>
+<!-- Class AppBarLayout.Behavior.DragCallback -->
+<A HREF="pkg_android.support.design.widget.html#AppBarLayout.Behavior.DragCallback" class="hiddenlink" target="rightframe"><b>AppBarLayout.Behavior.DragCallback</b></A><br>
+<!-- Class AppBarLayout.Behavior.SavedState -->
+<i>AppBarLayout.Behavior.SavedState</i><br>
+&nbsp;&nbsp;<A HREF="android.support.design.widget.AppBarLayout.Behavior.SavedState.html" class="hiddenlink" target="rightframe">android.support.design.widget</A><br>
+<!-- Constructor AppBarLayout.Behavior.SavedState -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.SavedState.html#android.support.design.widget.AppBarLayout.Behavior.SavedState.ctor_removed(android.os.Parcel)" class="hiddenlink" target="rightframe"><strike>AppBarLayout.Behavior.SavedState</strike>
+(<code>Parcel</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Constructor AppBarLayout.Behavior.SavedState -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.SavedState.html#android.support.design.widget.AppBarLayout.Behavior.SavedState.ctor_added(android.os.Parcel, java.lang.ClassLoader)" class="hiddenlink" target="rightframe"><b>AppBarLayout.Behavior.SavedState</b>
+(<code>Parcel, ClassLoader</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Class AppBarLayout.LayoutParams -->
+<A HREF="android.support.design.widget.AppBarLayout.LayoutParams.html" class="hiddenlink" target="rightframe">AppBarLayout.LayoutParams</A><br>
+<!-- Class AppBarLayout.ScrollingViewBehavior -->
+<A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html" class="hiddenlink" target="rightframe">AppBarLayout.ScrollingViewBehavior</A><br>
+<!-- Field aspectRatio -->
+<nobr><A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html#android.support.percent.PercentLayoutHelper.PercentLayoutInfo.aspectRatio" class="hiddenlink" target="rightframe">aspectRatio</A>
+</nobr><br>
+<!-- Field Base_Widget_AppCompat_ImageButton -->
+<A NAME="B"></A>
+<br><font size="+2">B</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Base_Widget_AppCompat_ImageButton" class="hiddenlink" target="rightframe">Base_Widget_AppCompat_ImageButton</A>
+</nobr><br>
+<!-- Field Base_Widget_AppCompat_SeekBar -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Base_Widget_AppCompat_SeekBar" class="hiddenlink" target="rightframe">Base_Widget_AppCompat_SeekBar</A>
+</nobr><br>
+<!-- Class BrowseFragment -->
+<A HREF="android.support.v17.leanback.app.BrowseFragment.html" class="hiddenlink" target="rightframe">BrowseFragment</A><br>
+<!-- Class BrowseSupportFragment -->
+<A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html" class="hiddenlink" target="rightframe">BrowseSupportFragment</A><br>
+<!-- Class BundleCompat -->
+<A HREF="pkg_android.support.v4.app.html#BundleCompat" class="hiddenlink" target="rightframe"><b>BundleCompat</b></A><br>
+<!-- Field ButtonBarLayout_allowStacking -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.ButtonBarLayout_allowStacking" class="hiddenlink" target="rightframe">ButtonBarLayout_allowStacking</A>
+</nobr><br>
+<!-- Method canDrawOutOfBounds -->
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.RowPresenter.html#android.support.v17.leanback.widget.RowPresenter.canDrawOutOfBounds_removed()" class="hiddenlink" target="rightframe"><strike>canDrawOutOfBounds</strike>
+()</A></nobr><br>
+<!-- Field CARD_TYPE_FLAG_CONTENT -->
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_CONTENT" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_CONTENT</A>
+</nobr><br>
+<!-- Field CARD_TYPE_FLAG_ICON_LEFT -->
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_ICON_LEFT" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_ICON_LEFT</A>
+</nobr><br>
+<!-- Field CARD_TYPE_FLAG_ICON_RIGHT -->
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_ICON_RIGHT" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_ICON_RIGHT</A>
+</nobr><br>
+<!-- Field CARD_TYPE_FLAG_IMAGE_ONLY -->
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_IMAGE_ONLY" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_IMAGE_ONLY</A>
+</nobr><br>
+<!-- Field CARD_TYPE_FLAG_TITLE -->
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_TITLE" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_TITLE</A>
+</nobr><br>
+<!-- Method clearRegion -->
+<nobr><A HREF="android.support.v7.graphics.Palette.Builder.html#android.support.v7.graphics.Palette.Builder.clearRegion_added()" class="hiddenlink" target="rightframe"><b>clearRegion</b>
+()</A></nobr><br>
+<!-- Class CollapsingToolbarLayout -->
+<A HREF="android.support.design.widget.CollapsingToolbarLayout.html" class="hiddenlink" target="rightframe">CollapsingToolbarLayout</A><br>
+<!-- Field CONNECTION_STATE_CONNECTED -->
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.CONNECTION_STATE_CONNECTED" class="hiddenlink" target="rightframe">CONNECTION_STATE_CONNECTED</A>
+</nobr><br>
+<!-- Field CONNECTION_STATE_CONNECTING -->
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.CONNECTION_STATE_CONNECTING" class="hiddenlink" target="rightframe">CONNECTION_STATE_CONNECTING</A>
+</nobr><br>
+<!-- Field CONNECTION_STATE_DISCONNECTED -->
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.CONNECTION_STATE_DISCONNECTED" class="hiddenlink" target="rightframe">CONNECTION_STATE_DISCONNECTED</A>
+</nobr><br>
+<!-- Class CoordinatorLayout.SavedState -->
+<i>CoordinatorLayout.SavedState</i><br>
+&nbsp;&nbsp;<A HREF="android.support.design.widget.CoordinatorLayout.SavedState.html" class="hiddenlink" target="rightframe">android.support.design.widget</A><br>
+<!-- Constructor CoordinatorLayout.SavedState -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.CoordinatorLayout.SavedState.html#android.support.design.widget.CoordinatorLayout.SavedState.ctor_removed(android.os.Parcel)" class="hiddenlink" target="rightframe"><strike>CoordinatorLayout.SavedState</strike>
+(<code>Parcel</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Constructor CoordinatorLayout.SavedState -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.CoordinatorLayout.SavedState.html#android.support.design.widget.CoordinatorLayout.SavedState.ctor_added(android.os.Parcel, java.lang.ClassLoader)" class="hiddenlink" target="rightframe"><b>CoordinatorLayout.SavedState</b>
+(<code>Parcel, ClassLoader</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Method createEntranceTransition -->
+<i>createEntranceTransition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method createEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method createEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+<!-- Method createEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<!-- Method createEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+<!-- Method createEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridSupportFragment
+</A></nobr><br>
+<!-- Method createShadowOverlayOptions -->
+<i>createShadowOverlayOptions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.ListRowPresenter.html#android.support.v17.leanback.widget.ListRowPresenter.createShadowOverlayOptions_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.ListRowPresenter
+</A></nobr><br>
+<!-- Method createShadowOverlayOptions -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html#android.support.v17.leanback.widget.VerticalGridPresenter.createShadowOverlayOptions_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.VerticalGridPresenter
+</A></nobr><br>
+<!-- Class CustomTabsCallback -->
+<A HREF="android.support.customtabs.CustomTabsCallback.html" class="hiddenlink" target="rightframe">CustomTabsCallback</A><br>
+<!-- Class CustomTabsIntent -->
+<A HREF="android.support.customtabs.CustomTabsIntent.html" class="hiddenlink" target="rightframe">CustomTabsIntent</A><br>
+<!-- Class CustomTabsIntent.Builder -->
+<A HREF="android.support.customtabs.CustomTabsIntent.Builder.html" class="hiddenlink" target="rightframe">CustomTabsIntent.Builder</A><br>
+<!-- Class CustomTabsService -->
+<A HREF="android.support.customtabs.CustomTabsService.html" class="hiddenlink" target="rightframe">CustomTabsService</A><br>
+<!-- Class CustomTabsSession -->
+<A HREF="android.support.customtabs.CustomTabsSession.html" class="hiddenlink" target="rightframe">CustomTabsSession</A><br>
+<!-- Class CustomTabsSessionToken -->
+<A HREF="android.support.customtabs.CustomTabsSessionToken.html" class="hiddenlink" target="rightframe">CustomTabsSessionToken</A><br>
+<!-- Class DetailsFragment -->
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.app.DetailsFragment.html" class="hiddenlink" target="rightframe">DetailsFragment</A><br>
+<!-- Class DetailsSupportFragment -->
+<A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html" class="hiddenlink" target="rightframe">DetailsSupportFragment</A><br>
+<!-- Field DEVICE_TYPE_SPEAKER -->
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.DEVICE_TYPE_SPEAKER" class="hiddenlink" target="rightframe">DEVICE_TYPE_SPEAKER</A>
+</nobr><br>
+<!-- Field DEVICE_TYPE_TV -->
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.DEVICE_TYPE_TV" class="hiddenlink" target="rightframe">DEVICE_TYPE_TV</A>
+</nobr><br>
+<!-- Field dialog_fixed_height_major -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.dialog_fixed_height_major" class="hiddenlink" target="rightframe"><strike>dialog_fixed_height_major</strike></A>
+</nobr><br>
+<!-- Field dialog_fixed_height_minor -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.dialog_fixed_height_minor" class="hiddenlink" target="rightframe"><strike>dialog_fixed_height_minor</strike></A>
+</nobr><br>
+<!-- Field dialog_fixed_width_major -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.dialog_fixed_width_major" class="hiddenlink" target="rightframe"><strike>dialog_fixed_width_major</strike></A>
+</nobr><br>
+<!-- Field dialog_fixed_width_minor -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.dialog_fixed_width_minor" class="hiddenlink" target="rightframe"><strike>dialog_fixed_width_minor</strike></A>
+</nobr><br>
+<!-- Method displayCompletions -->
+<i>displayCompletions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.SearchFragment.html#android.support.v17.leanback.app.SearchFragment.displayCompletions_added(android.view.inputmethod.CompletionInfo[])" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>CompletionInfo[]</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.SearchFragment
+</A></nobr><br>
+<!-- Method displayCompletions -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.SearchSupportFragment.html#android.support.v17.leanback.app.SearchSupportFragment.displayCompletions_added(android.view.inputmethod.CompletionInfo[])" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>CompletionInfo[]</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.SearchSupportFragment
+</A></nobr><br>
+<!-- Method displayCompletions -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.SearchBar.html#android.support.v17.leanback.widget.SearchBar.displayCompletions_added(android.view.inputmethod.CompletionInfo[])" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>CompletionInfo[]</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.SearchBar
+</A></nobr><br>
+<!-- Class DrawerArrowDrawable -->
+<A HREF="android.support.v7.graphics.drawable.DrawerArrowDrawable.html" class="hiddenlink" target="rightframe">DrawerArrowDrawable</A><br>
+<!-- Method editable -->
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.editable_added(boolean)" class="hiddenlink" target="rightframe"><b>editable</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Class EditTextPreferenceDialogFragment -->
+<A HREF="android.support.v14.preference.EditTextPreferenceDialogFragment.html" class="hiddenlink" target="rightframe">EditTextPreferenceDialogFragment</A><br>
+<!-- Class EditTextPreferenceDialogFragmentCompat -->
+<A HREF="android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.html" class="hiddenlink" target="rightframe">EditTextPreferenceDialogFragmentCompat</A><br>
+<!-- Method editTitle -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.editTitle_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>editTitle</b>
+(<code>String</code>)</A></nobr><br>
+<!-- Method enableUrlBarHiding -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.Builder.html#android.support.customtabs.CustomTabsIntent.Builder.enableUrlBarHiding_added()" class="hiddenlink" target="rightframe"><b>enableUrlBarHiding</b>
+()</A></nobr><br>
+<!-- Field EXTRA_ENABLE_URLBAR_HIDING -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.EXTRA_ENABLE_URLBAR_HIDING" class="hiddenlink" target="rightframe">EXTRA_ENABLE_URLBAR_HIDING</A>
+</nobr><br>
+<!-- Field EXTRA_TINT_ACTION_BUTTON -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.EXTRA_TINT_ACTION_BUTTON" class="hiddenlink" target="rightframe">EXTRA_TINT_ACTION_BUTTON</A>
+</nobr><br>
+<!-- Field EXTRA_UI_STYLE -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.EXTRA_UI_STYLE" class="hiddenlink" target="rightframe">EXTRA_UI_STYLE</A>
+</nobr><br>
+<!-- Class FloatingActionButton -->
+<A NAME="F"></A>
+<br><font size="+2">F</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.design.widget.FloatingActionButton.html" class="hiddenlink" target="rightframe">FloatingActionButton</A><br>
+<!-- Class FloatingActionButton.Behavior -->
+<A HREF="android.support.design.widget.FloatingActionButton.Behavior.html" class="hiddenlink" target="rightframe">FloatingActionButton.Behavior</A><br>
+<!-- Class FloatingActionButton.OnVisibilityChangedListener -->
+<A HREF="pkg_android.support.design.widget.html#FloatingActionButton.OnVisibilityChangedListener" class="hiddenlink" target="rightframe"><b>FloatingActionButton.OnVisibilityChangedListener</b></A><br>
+<!-- Class FragmentActivity -->
+<A HREF="android.support.v4.app.FragmentActivity.html" class="hiddenlink" target="rightframe">FragmentActivity</A><br>
+<!-- Class FragmentAnimationProvider -->
+<A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html" class="hiddenlink" target="rightframe"><i>FragmentAnimationProvider</i></A><br>
+<!-- Method getCollapsedTitleTypeface -->
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.getCollapsedTitleTypeface_added()" class="hiddenlink" target="rightframe"><b>getCollapsedTitleTypeface</b>
+()</A></nobr><br>
+<!-- Method getColor -->
+<nobr><A HREF="android.support.v4.content.res.ResourcesCompat.html#android.support.v4.content.res.ResourcesCompat.getColor_added(android.content.res.Resources, int, android.content.res.Resources.Theme)" class="hiddenlink" target="rightframe"><b>getColor</b>
+(<code>Resources, int, Theme</code>)</A></nobr><br>
+<!-- Method getColorStateList -->
+<nobr><A HREF="android.support.v4.content.res.ResourcesCompat.html#android.support.v4.content.res.ResourcesCompat.getColorStateList_added(android.content.res.Resources, int, android.content.res.Resources.Theme)" class="hiddenlink" target="rightframe"><b>getColorStateList</b>
+(<code>Resources, int, Theme</code>)</A></nobr><br>
+<!-- Method getConnectionState -->
+<i>getConnectionState</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getConnectionState_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouteDescriptor
+</A></nobr><br>
+<!-- Method getConnectionState -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.getConnectionState_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouter.RouteInfo
+</A></nobr><br>
+<!-- Method getContainerIdForBackground -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getContainerIdForBackground_added()" class="hiddenlink" target="rightframe"><b>getContainerIdForBackground</b>
+()</A></nobr><br>
+<!-- Method getCounterMaxLength -->
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.getCounterMaxLength_added()" class="hiddenlink" target="rightframe"><b>getCounterMaxLength</b>
+()</A></nobr><br>
+<!-- Method getDeviceType -->
+<i>getDeviceType</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getDeviceType_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouteDescriptor
+</A></nobr><br>
+<!-- Method getDeviceType -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.getDeviceType_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouter.RouteInfo
+</A></nobr><br>
+<!-- Method getEditableTitleView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.getEditableTitleView_added()" class="hiddenlink" target="rightframe"><b>getEditableTitleView</b>
+()</A></nobr><br>
+<!-- Method getEditTitle -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.getEditTitle_added()" class="hiddenlink" target="rightframe"><b>getEditTitle</b>
+()</A></nobr><br>
+<!-- Method getExpandedTitleTypeface -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.getExpandedTitleTypeface_added()" class="hiddenlink" target="rightframe"><b>getExpandedTitleTypeface</b>
+()</A></nobr><br>
+<!-- Method getGroupMemberIds -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getGroupMemberIds_added()" class="hiddenlink" target="rightframe"><b>getGroupMemberIds</b>
+()</A></nobr><br>
+<!-- Method getIconUri -->
+<i>getIconUri</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getIconUri_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouteDescriptor
+</A></nobr><br>
+<!-- Method getIconUri -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.getIconUri_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouter.RouteInfo
+</A></nobr><br>
+<!-- Method getKeepChildForeground -->
+<nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html#android.support.v17.leanback.widget.VerticalGridPresenter.getKeepChildForeground_added()" class="hiddenlink" target="rightframe"><b>getKeepChildForeground</b>
+()</A></nobr><br>
+<!-- Method getMaxLines -->
+<nobr><A HREF="android.support.v4.widget.TextViewCompat.html#android.support.v4.widget.TextViewCompat.getMaxLines_added(android.widget.TextView)" class="hiddenlink" target="rightframe"><b>getMaxLines</b>
+(<code>TextView</code>)</A></nobr><br>
+<!-- Method getMinLines -->
+<nobr><A HREF="android.support.v4.widget.TextViewCompat.html#android.support.v4.widget.TextViewCompat.getMinLines_added(android.widget.TextView)" class="hiddenlink" target="rightframe"><b>getMinLines</b>
+(<code>TextView</code>)</A></nobr><br>
+<!-- Method getPaint -->
+<nobr><A HREF="android.support.v7.graphics.drawable.DrawerArrowDrawable.html#android.support.v7.graphics.drawable.DrawerArrowDrawable.getPaint_added()" class="hiddenlink" target="rightframe"><b>getPaint</b>
+()</A></nobr><br>
+<!-- Method getScrollIndicators -->
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.getScrollIndicators_added(android.view.View)" class="hiddenlink" target="rightframe"><b>getScrollIndicators</b>
+(<code>View</code>)</A></nobr><br>
+<!-- Method getSessionTokenFromIntent -->
+<nobr><A HREF="android.support.customtabs.CustomTabsSessionToken.html#android.support.customtabs.CustomTabsSessionToken.getSessionTokenFromIntent_added(android.content.Intent)" class="hiddenlink" target="rightframe"><b>getSessionTokenFromIntent</b>
+(<code>Intent</code>)</A></nobr><br>
+<!-- Method getSupportMediaController -->
+<nobr><A HREF="android.support.v4.app.FragmentActivity.html#android.support.v4.app.FragmentActivity.getSupportMediaController_added()" class="hiddenlink" target="rightframe"><b>getSupportMediaController</b>
+()</A></nobr><br>
+<!-- Method getTypeface -->
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.getTypeface_added()" class="hiddenlink" target="rightframe"><b>getTypeface</b>
+()</A></nobr><br>
+<!-- Method getUiStyle -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getUiStyle_added()" class="hiddenlink" target="rightframe"><b>getUiStyle</b>
+()</A></nobr><br>
+<!-- Class GuidanceStylist -->
+<A HREF="android.support.v17.leanback.widget.GuidanceStylist.html" class="hiddenlink" target="rightframe">GuidanceStylist</A><br>
+<!-- Class GuidedAction -->
+<A HREF="android.support.v17.leanback.widget.GuidedAction.html" class="hiddenlink" target="rightframe">GuidedAction</A><br>
+<!-- Class GuidedAction.Builder -->
+<A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html" class="hiddenlink" target="rightframe">GuidedAction.Builder</A><br>
+<!-- Class GuidedActionEditText -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#GuidedActionEditText" class="hiddenlink" target="rightframe"><b>GuidedActionEditText</b></A><br>
+<!-- Class GuidedActionsStylist -->
+<A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html" class="hiddenlink" target="rightframe">GuidedActionsStylist</A><br>
+<!-- Class GuidedActionsStylist.ViewHolder -->
+<A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html" class="hiddenlink" target="rightframe">GuidedActionsStylist.ViewHolder</A><br>
+<!-- Class GuidedStepFragment -->
+<A HREF="android.support.v17.leanback.app.GuidedStepFragment.html" class="hiddenlink" target="rightframe">GuidedStepFragment</A><br>
+<!-- Class GuidedStepFragment.GuidedStepBackgroundFragment -->
+<A HREF="pkg_android.support.v17.leanback.app.html#GuidedStepFragment.GuidedStepBackgroundFragment" class="hiddenlink" target="rightframe"><b>GuidedStepFragment.GuidedStepBackgroundFragment</b></A><br>
+<!-- Class GuidedStepSupportFragment -->
+<A HREF="pkg_android.support.v17.leanback.app.html#GuidedStepSupportFragment" class="hiddenlink" target="rightframe"><b>GuidedStepSupportFragment</b></A><br>
+<!-- Class GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment -->
+<A HREF="pkg_android.support.v17.leanback.app.html#GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment" class="hiddenlink" target="rightframe"><b>GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment</b></A><br>
+<!-- Method hasOnClickListeners -->
+<A NAME="H"></A>
+<br><font size="+2">H</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.hasOnClickListeners_added(android.view.View)" class="hiddenlink" target="rightframe"><b>hasOnClickListeners</b>
+(<code>View</code>)</A></nobr><br>
+<!-- Class HeaderBehavior -->
+<A HREF="pkg_android.support.design.widget.html#HeaderBehavior" class="hiddenlink" target="rightframe"><b>HeaderBehavior</b></A><br>
+<!-- Class HeaderScrollingViewBehavior -->
+<A HREF="pkg_android.support.design.widget.html#HeaderScrollingViewBehavior" class="hiddenlink" target="rightframe"><b>HeaderScrollingViewBehavior</b></A><br>
+<!-- Method hide -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.hide_added(android.support.design.widget.FloatingActionButton.OnVisibilityChangedListener)" class="hiddenlink" target="rightframe"><b>hide</b>
+(<code>OnVisibilityChangedListener</code>)</A></nobr><br>
+<!-- Field imageButtonStyle -->
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.imageButtonStyle" class="hiddenlink" target="rightframe">imageButtonStyle</A>
+</nobr><br>
+<!-- Class ImageCardView -->
+<i>ImageCardView</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v17.leanback.widget.ImageCardView.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.widget</A><br>
+<!-- Constructor ImageCardView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.ctor_added(android.content.Context, int)" class="hiddenlink" target="rightframe"><b>ImageCardView</b>
+(<code>Context, int</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Class ImeKeyMonitor -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#ImeKeyMonitor" class="hiddenlink" target="rightframe"><b><i>ImeKeyMonitor</i></b></A><br>
+<!-- Class ImeKeyMonitor.ImeKeyListener -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#ImeKeyMonitor.ImeKeyListener" class="hiddenlink" target="rightframe"><b><i>ImeKeyMonitor.ImeKeyListener</i></b></A><br>
+<!-- Method initialize -->
+<nobr><A HREF="android.support.v17.leanback.widget.ShadowOverlayContainer.html#android.support.v17.leanback.widget.ShadowOverlayContainer.initialize_changed(boolean, boolean, boolean)" class="hiddenlink" target="rightframe">initialize
+(<code>boolean, boolean, boolean</code>)</A></nobr><br>
+<!-- Method isConnecting -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.isConnecting_changed()" class="hiddenlink" target="rightframe">isConnecting
+()</A></nobr><br>
+<!-- Method isEditable -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.isEditable_added()" class="hiddenlink" target="rightframe"><b>isEditable</b>
+()</A></nobr><br>
+<!-- Method isEditTitleUsed -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.isEditTitleUsed_added()" class="hiddenlink" target="rightframe"><b>isEditTitleUsed</b>
+()</A></nobr><br>
+<!-- Method isEntryTransitionEnabled -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.isEntryTransitionEnabled_removed()" class="hiddenlink" target="rightframe"><strike>isEntryTransitionEnabled</strike>
+()</A></nobr><br>
+<!-- Method isKeepChildForeground -->
+<nobr><A HREF="android.support.v17.leanback.widget.ListRowPresenter.html#android.support.v17.leanback.widget.ListRowPresenter.isKeepChildForeground_added()" class="hiddenlink" target="rightframe"><b>isKeepChildForeground</b>
+()</A></nobr><br>
+<!-- Method isShownOrQueued -->
+<nobr><A HREF="android.support.design.widget.Snackbar.html#android.support.design.widget.Snackbar.isShownOrQueued_added()" class="hiddenlink" target="rightframe"><b>isShownOrQueued</b>
+()</A></nobr><br>
+<!-- Class ItemBridgeAdapterShadowOverlayWrapper -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#ItemBridgeAdapterShadowOverlayWrapper" class="hiddenlink" target="rightframe"><b>ItemBridgeAdapterShadowOverlayWrapper</b></A><br>
+<!-- Class ListRowPresenter -->
+<A NAME="L"></A>
+<br><font size="+2">L</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.widget.ListRowPresenter.html" class="hiddenlink" target="rightframe">ListRowPresenter</A><br>
+<!-- Class MediaButtonReceiver -->
+<A NAME="M"></A>
+<br><font size="+2">M</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.v4.media.session.html#MediaButtonReceiver" class="hiddenlink" target="rightframe"><b>MediaButtonReceiver</b></A><br>
+<!-- Class MediaRouteDescriptor -->
+<A HREF="android.support.v7.media.MediaRouteDescriptor.html" class="hiddenlink" target="rightframe">MediaRouteDescriptor</A><br>
+<!-- Class MediaRouteDescriptor.Builder -->
+<A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html" class="hiddenlink" target="rightframe">MediaRouteDescriptor.Builder</A><br>
+<!-- Class MediaRouter.RouteGroup -->
+<A HREF="pkg_android.support.v7.media.html#MediaRouter.RouteGroup" class="hiddenlink" target="rightframe"><b>MediaRouter.RouteGroup</b></A><br>
+<!-- Class MediaRouter.RouteInfo -->
+<A HREF="android.support.v7.media.MediaRouter.RouteInfo.html" class="hiddenlink" target="rightframe">MediaRouter.RouteInfo</A><br>
+<!-- Class MediaSessionCompat -->
+<i>MediaSessionCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.media.session.MediaSessionCompat.html" class="hiddenlink" target="rightframe">android.support.v4.media.session</A><br>
+<!-- Constructor MediaSessionCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.media.session.MediaSessionCompat.html#android.support.v4.media.session.MediaSessionCompat.ctor_added(android.content.Context, java.lang.String)" class="hiddenlink" target="rightframe"><b>MediaSessionCompat</b>
+(<code>Context, String</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Class NavigationView.SavedState -->
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>NavigationView.SavedState</i><br>
+&nbsp;&nbsp;<A HREF="android.support.design.widget.NavigationView.SavedState.html" class="hiddenlink" target="rightframe">android.support.design.widget</A><br>
+<!-- Constructor NavigationView.SavedState -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.NavigationView.SavedState.html#android.support.design.widget.NavigationView.SavedState.ctor_removed(android.os.Parcel)" class="hiddenlink" target="rightframe"><strike>NavigationView.SavedState</strike>
+(<code>Parcel</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Constructor NavigationView.SavedState -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.NavigationView.SavedState.html#android.support.design.widget.NavigationView.SavedState.ctor_added(android.os.Parcel, java.lang.ClassLoader)" class="hiddenlink" target="rightframe"><b>NavigationView.SavedState</b>
+(<code>Parcel, ClassLoader</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Class NestedScrollView -->
+<A HREF="android.support.v4.widget.NestedScrollView.html" class="hiddenlink" target="rightframe">NestedScrollView</A><br>
+<!-- Class NestedScrollView.OnScrollChangeListener -->
+<A HREF="pkg_android.support.v4.widget.html#NestedScrollView.OnScrollChangeListener" class="hiddenlink" target="rightframe"><b><i>NestedScrollView.OnScrollChangeListener</i></b></A><br>
+<!-- Method onActivityEnter -->
+<A NAME="O"></A>
+<br><font size="+2">O</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>onActivityEnter</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onActivityEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+<!-- Method onActivityEnter -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onActivityEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onActivityEnter -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onActivityEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onActivityExit -->
+<i>onActivityExit</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onActivityExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+<!-- Method onActivityExit -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onActivityExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onActivityExit -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onActivityExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onAddEditTextToDialogView -->
+<i>onAddEditTextToDialogView</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v14.preference.EditTextPreferenceDialogFragment.html#android.support.v14.preference.EditTextPreferenceDialogFragment.onAddEditTextToDialogView_removed(android.view.View, android.widget.EditText)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>View, EditText</code>)</strike>&nbsp;in&nbsp;android.support.v14.preference.EditTextPreferenceDialogFragment
+</A></nobr><br>
+<!-- Method onAddEditTextToDialogView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.html#android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.onAddEditTextToDialogView_removed(android.view.View, android.widget.EditText)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>View, EditText</code>)</strike>&nbsp;in&nbsp;android.support.v7.preference.EditTextPreferenceDialogFragmentCompat
+</A></nobr><br>
+<!-- Method onDependentViewRemoved -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.Behavior.html#android.support.design.widget.FloatingActionButton.Behavior.onDependentViewRemoved_removed(android.support.design.widget.CoordinatorLayout, android.support.design.widget.FloatingActionButton, android.view.View)" class="hiddenlink" target="rightframe"><strike>onDependentViewRemoved</strike>
+(<code>CoordinatorLayout, FloatingActionButton, View</code>)</A></nobr><br>
+<!-- Method onDestroyView -->
+<i>onDestroyView</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlayFragment.html#android.support.v17.leanback.app.PlaybackOverlayFragment.onDestroyView_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.PlaybackOverlayFragment
+</A></nobr><br>
+<!-- Method onDestroyView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html#android.support.v17.leanback.app.PlaybackOverlaySupportFragment.onDestroyView_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.PlaybackOverlaySupportFragment
+</A></nobr><br>
+<!-- Method onDestroyView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.onDestroyView_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+<!-- Method onDestroyView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.onDestroyView_changed()" class="hiddenlink" target="rightframe">type&nbsp;
+()&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridSupportFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionEnd -->
+<i>onEntranceTransitionEnd</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onEntranceTransitionEnd_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionEnd -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onEntranceTransitionEnd_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionEnd -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.onEntranceTransitionEnd_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionEnd -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.onEntranceTransitionEnd_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionPrepare -->
+<i>onEntranceTransitionPrepare</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onEntranceTransitionPrepare_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionPrepare -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onEntranceTransitionPrepare_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionPrepare -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.onEntranceTransitionPrepare_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionPrepare -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.onEntranceTransitionPrepare_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionStart -->
+<i>onEntranceTransitionStart</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onEntranceTransitionStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionStart -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onEntranceTransitionStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionStart -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.onEntranceTransitionStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+<!-- Method onEntranceTransitionStart -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.onEntranceTransitionStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<!-- Method onFragmentEnter -->
+<i>onFragmentEnter</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+<!-- Method onFragmentEnter -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onFragmentEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onFragmentEnter -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onFragmentExit -->
+<i>onFragmentExit</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+<!-- Method onFragmentExit -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onFragmentExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onFragmentExit -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onFragmentReenter -->
+<i>onFragmentReenter</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentReenter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+<!-- Method onFragmentReenter -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onFragmentReenter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onFragmentReenter -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentReenter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onFragmentReturn -->
+<i>onFragmentReturn</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentReturn_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+<!-- Method onFragmentReturn -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onFragmentReturn_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onFragmentReturn -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentReturn_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onGuidedActionEdited -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onGuidedActionEdited_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe"><b>onGuidedActionEdited</b>
+(<code>GuidedAction</code>)</A></nobr><br>
+<!-- Method onImeAppearing -->
+<i>onImeAppearing</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onImeAppearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+<!-- Method onImeAppearing -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onImeAppearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onImeAppearing -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onImeAppearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onImeDisappearing -->
+<i>onImeDisappearing</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onImeDisappearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+<!-- Method onImeDisappearing -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onImeDisappearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onImeDisappearing -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onImeDisappearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onInterceptTouchEvent -->
+<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.html#android.support.design.widget.AppBarLayout.Behavior.onInterceptTouchEvent_removed(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, android.view.MotionEvent)" class="hiddenlink" target="rightframe"><strike>onInterceptTouchEvent</strike>
+(<code>CoordinatorLayout, AppBarLayout, MotionEvent</code>)</A></nobr><br>
+<!-- Method onLayout -->
+<nobr><A HREF="android.support.v17.leanback.widget.ShadowOverlayContainer.html#android.support.v17.leanback.widget.ShadowOverlayContainer.onLayout_removed(boolean, int, int, int, int)" class="hiddenlink" target="rightframe"><strike>onLayout</strike>
+(<code>boolean, int, int, int, int</code>)</A></nobr><br>
+<!-- Method onLayoutChild -->
+<nobr><A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html#android.support.design.widget.AppBarLayout.ScrollingViewBehavior.onLayoutChild_added(android.support.design.widget.CoordinatorLayout, android.view.View, int)" class="hiddenlink" target="rightframe"><b>onLayoutChild</b>
+(<code>CoordinatorLayout, View, int</code>)</A></nobr><br>
+<!-- Method onMeasureChild -->
+<nobr><A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html#android.support.design.widget.AppBarLayout.ScrollingViewBehavior.onMeasureChild_removed(android.support.design.widget.CoordinatorLayout, android.view.View, int, int, int, int)" class="hiddenlink" target="rightframe"><strike>onMeasureChild</strike>
+(<code>CoordinatorLayout, View, int, int, int, int</code>)</A></nobr><br>
+<!-- Method onProvideBackgroundFragment -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onProvideBackgroundFragment_added()" class="hiddenlink" target="rightframe"><b>onProvideBackgroundFragment</b>
+()</A></nobr><br>
+<!-- Method onProvideFragmentTransitions -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onProvideFragmentTransitions_added()" class="hiddenlink" target="rightframe"><b>onProvideFragmentTransitions</b>
+()</A></nobr><br>
+<!-- Method onResume -->
+<i>onResume</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlayFragment.html#android.support.v17.leanback.app.PlaybackOverlayFragment.onResume_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.PlaybackOverlayFragment
+</A></nobr><br>
+<!-- Method onResume -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html#android.support.v17.leanback.app.PlaybackOverlaySupportFragment.onResume_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.PlaybackOverlaySupportFragment
+</A></nobr><br>
+<!-- Method onSaveInstanceState -->
+<i>onSaveInstanceState</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onSaveInstanceState_added(android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method onSaveInstanceState -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onSaveInstanceState_added(android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method onStart -->
+<i>onStart</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method onStart -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method onStart -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+<!-- Method onStart -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<!-- Method onStart -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+<!-- Method onStart -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.onStart_changed()" class="hiddenlink" target="rightframe">type&nbsp;
+()&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridSupportFragment
+</A></nobr><br>
+<!-- Method onTouchEvent -->
+<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.html#android.support.design.widget.AppBarLayout.Behavior.onTouchEvent_removed(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, android.view.MotionEvent)" class="hiddenlink" target="rightframe"><strike>onTouchEvent</strike>
+(<code>CoordinatorLayout, AppBarLayout, MotionEvent</code>)</A></nobr><br>
+<!-- Method onViewCreated -->
+<i>onViewCreated</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.onViewCreated_added(android.view.View, android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>View, Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+<!-- Method onViewCreated -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.onViewCreated_changed(android.view.View, android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;
+(<code>View, Bundle</code>)&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridSupportFragment
+</A></nobr><br>
+<!-- Class Palette.Builder -->
+<A NAME="P"></A>
+<br><font size="+2">P</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v7.graphics.Palette.Builder.html" class="hiddenlink" target="rightframe">Palette.Builder</A><br>
+<!-- Class ParallelExecutorCompat -->
+<A HREF="pkg_android.support.v4.content.html#ParallelExecutorCompat" class="hiddenlink" target="rightframe"><b>ParallelExecutorCompat</b></A><br>
+<!-- Class PercentLayoutHelper.PercentLayoutInfo -->
+<A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html" class="hiddenlink" target="rightframe">PercentLayoutHelper.PercentLayoutInfo</A><br>
+<!-- Class PlaybackControlSupportGlue -->
+<A HREF="pkg_android.support.v17.leanback.app.html#PlaybackControlSupportGlue" class="hiddenlink" target="rightframe"><b>PlaybackControlSupportGlue</b></A><br>
+<!-- Class PlaybackOverlayFragment -->
+<A HREF="android.support.v17.leanback.app.PlaybackOverlayFragment.html" class="hiddenlink" target="rightframe">PlaybackOverlayFragment</A><br>
+<!-- Class PlaybackOverlaySupportFragment -->
+<A HREF="android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html" class="hiddenlink" target="rightframe">PlaybackOverlaySupportFragment</A><br>
+<!-- Class R.attr -->
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v7.appcompat.R.attr.html" class="hiddenlink" target="rightframe">R.attr</A><br>
+<!-- Class R.bool -->
+<A HREF="android.support.v7.appcompat.R.bool.html" class="hiddenlink" target="rightframe">R.bool</A><br>
+<!-- Class R.dimen -->
+<A HREF="android.support.v7.appcompat.R.dimen.html" class="hiddenlink" target="rightframe">R.dimen</A><br>
+<!-- Class R.drawable -->
+<A HREF="android.support.v7.appcompat.R.drawable.html" class="hiddenlink" target="rightframe">R.drawable</A><br>
+<!-- Class R.id -->
+<A HREF="android.support.v7.appcompat.R.id.html" class="hiddenlink" target="rightframe">R.id</A><br>
+<!-- Class R.layout -->
+<A HREF="android.support.v7.appcompat.R.layout.html" class="hiddenlink" target="rightframe">R.layout</A><br>
+<!-- Class R.string -->
+<A HREF="android.support.v7.appcompat.R.string.html" class="hiddenlink" target="rightframe">R.string</A><br>
+<!-- Class R.style -->
+<A HREF="android.support.v7.appcompat.R.style.html" class="hiddenlink" target="rightframe">R.style</A><br>
+<!-- Class R.styleable -->
+<A HREF="android.support.v7.appcompat.R.styleable.html" class="hiddenlink" target="rightframe">R.styleable</A><br>
+<!-- Class ResourcesCompat -->
+<A HREF="android.support.v4.content.res.ResourcesCompat.html" class="hiddenlink" target="rightframe">ResourcesCompat</A><br>
+<!-- Class RowPresenter -->
+<A HREF="android.support.v17.leanback.widget.RowPresenter.html" class="hiddenlink" target="rightframe">RowPresenter</A><br>
+<!-- Field RtlOverlay_Widget_AppCompat_ActionButton_Overflow -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.RtlOverlay_Widget_AppCompat_ActionButton_Overflow" class="hiddenlink" target="rightframe"><strike>RtlOverlay_Widget_AppCompat_ActionButton_Overflow</strike></A>
+</nobr><br>
+<!-- Field RtlUnderlay_Widget_AppCompat_ActionButton -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.RtlUnderlay_Widget_AppCompat_ActionButton" class="hiddenlink" target="rightframe">RtlUnderlay_Widget_AppCompat_ActionButton</A>
+</nobr><br>
+<!-- Field RtlUnderlay_Widget_AppCompat_ActionButton_Overflow -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.RtlUnderlay_Widget_AppCompat_ActionButton_Overflow" class="hiddenlink" target="rightframe">RtlUnderlay_Widget_AppCompat_ActionButton_Overflow</A>
+</nobr><br>
+<!-- Method runEntranceTransition -->
+<i>runEntranceTransition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method runEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method runEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+<!-- Method runEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<!-- Method runEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+<!-- Method runEntranceTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridSupportFragment
+</A></nobr><br>
+<!-- Field SCROLL_FLAG_SNAP -->
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.AppBarLayout.LayoutParams.html#android.support.design.widget.AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP" class="hiddenlink" target="rightframe">SCROLL_FLAG_SNAP</A>
+</nobr><br>
+<!-- Field SCROLL_INDICATOR_BOTTOM -->
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_BOTTOM" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_BOTTOM</A>
+</nobr><br>
+<!-- Field SCROLL_INDICATOR_END -->
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_END" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_END</A>
+</nobr><br>
+<!-- Field SCROLL_INDICATOR_LEFT -->
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_LEFT" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_LEFT</A>
+</nobr><br>
+<!-- Field SCROLL_INDICATOR_RIGHT -->
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_RIGHT" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_RIGHT</A>
+</nobr><br>
+<!-- Field SCROLL_INDICATOR_START -->
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_START" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_START</A>
+</nobr><br>
+<!-- Field SCROLL_INDICATOR_TOP -->
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_TOP" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_TOP</A>
+</nobr><br>
+<!-- Class ScrollerCompat -->
+<A HREF="android.support.v4.widget.ScrollerCompat.html" class="hiddenlink" target="rightframe">ScrollerCompat</A><br>
+<!-- Field scrollIndicatorDown -->
+<nobr><A HREF="android.support.v7.appcompat.R.id.html#android.support.v7.appcompat.R.id.scrollIndicatorDown" class="hiddenlink" target="rightframe">scrollIndicatorDown</A>
+</nobr><br>
+<!-- Field scrollIndicatorUp -->
+<nobr><A HREF="android.support.v7.appcompat.R.id.html#android.support.v7.appcompat.R.id.scrollIndicatorUp" class="hiddenlink" target="rightframe">scrollIndicatorUp</A>
+</nobr><br>
+<!-- Class SearchBar -->
+<A HREF="android.support.v17.leanback.widget.SearchBar.html" class="hiddenlink" target="rightframe">SearchBar</A><br>
+<!-- Class SearchFragment -->
+<A HREF="android.support.v17.leanback.app.SearchFragment.html" class="hiddenlink" target="rightframe">SearchFragment</A><br>
+<!-- Class SearchSupportFragment -->
+<A HREF="android.support.v17.leanback.app.SearchSupportFragment.html" class="hiddenlink" target="rightframe">SearchSupportFragment</A><br>
+<!-- Field seekBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.seekBarStyle" class="hiddenlink" target="rightframe">seekBarStyle</A>
+</nobr><br>
+<!-- Method setActionButton -->
+<i>setActionButton</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.customtabs.CustomTabsIntent.Builder.html#android.support.customtabs.CustomTabsIntent.Builder.setActionButton_added(android.graphics.Bitmap, java.lang.String, android.app.PendingIntent, boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bitmap, String, PendingIntent, boolean</code>)</b>&nbsp;in&nbsp;android.support.customtabs.CustomTabsIntent.Builder
+</A></nobr><br>
+<!-- Method setActionButton -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.customtabs.CustomTabsSession.html#android.support.customtabs.CustomTabsSession.setActionButton_added(android.graphics.Bitmap, java.lang.String)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bitmap, String</code>)</b>&nbsp;in&nbsp;android.support.customtabs.CustomTabsSession
+</A></nobr><br>
+<!-- Method setCollapsedTitleTypeface -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setCollapsedTitleTypeface_added(android.graphics.Typeface)" class="hiddenlink" target="rightframe"><b>setCollapsedTitleTypeface</b>
+(<code>Typeface</code>)</A></nobr><br>
+<!-- Method setConnecting -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.setConnecting_changed(boolean)" class="hiddenlink" target="rightframe">setConnecting
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setConnectionState -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.setConnectionState_added(int)" class="hiddenlink" target="rightframe"><b>setConnectionState</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setCounterEnabled -->
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.setCounterEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setCounterEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setCounterMaxLength -->
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.setCounterMaxLength_added(int)" class="hiddenlink" target="rightframe"><b>setCounterMaxLength</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setDescription -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setDescription_added(java.lang.CharSequence)" class="hiddenlink" target="rightframe"><b>setDescription</b>
+(<code>CharSequence</code>)</A></nobr><br>
+<!-- Method setDeviceType -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.setDeviceType_added(int)" class="hiddenlink" target="rightframe"><b>setDeviceType</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setDragCallback -->
+<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.html#android.support.design.widget.AppBarLayout.Behavior.setDragCallback_added(android.support.design.widget.AppBarLayout.Behavior.DragCallback)" class="hiddenlink" target="rightframe"><b>setDragCallback</b>
+(<code>DragCallback</code>)</A></nobr><br>
+<!-- Method setEditTitle -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setEditTitle_added(java.lang.CharSequence)" class="hiddenlink" target="rightframe"><b>setEditTitle</b>
+(<code>CharSequence</code>)</A></nobr><br>
+<!-- Method setEntranceTransitionState -->
+<nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html#android.support.v17.leanback.widget.VerticalGridPresenter.setEntranceTransitionState_added(android.support.v17.leanback.widget.VerticalGridPresenter.ViewHolder, boolean)" class="hiddenlink" target="rightframe"><b>setEntranceTransitionState</b>
+(<code>ViewHolder, boolean</code>)</A></nobr><br>
+<!-- Method setEntryTransitionEnabled -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.setEntryTransitionEnabled_removed(boolean)" class="hiddenlink" target="rightframe"><strike>setEntryTransitionEnabled</strike>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setExpandedTitleTypeface -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleTypeface_added(android.graphics.Typeface)" class="hiddenlink" target="rightframe"><b>setExpandedTitleTypeface</b>
+(<code>Typeface</code>)</A></nobr><br>
+<!-- Method setIconUri -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.setIconUri_added(android.net.Uri)" class="hiddenlink" target="rightframe"><b>setIconUri</b>
+(<code>Uri</code>)</A></nobr><br>
+<!-- Method setKeepChildForeground -->
+<i>setKeepChildForeground</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.ListRowPresenter.html#android.support.v17.leanback.widget.ListRowPresenter.setKeepChildForeground_added(boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>boolean</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.ListRowPresenter
+</A></nobr><br>
+<!-- Method setKeepChildForeground -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html#android.support.v17.leanback.widget.VerticalGridPresenter.setKeepChildForeground_added(boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>boolean</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.VerticalGridPresenter
+</A></nobr><br>
+<!-- Method setOnScrollChangeListener -->
+<nobr><A HREF="android.support.v4.widget.NestedScrollView.html#android.support.v4.widget.NestedScrollView.setOnScrollChangeListener_added(android.support.v4.widget.NestedScrollView.OnScrollChangeListener)" class="hiddenlink" target="rightframe"><b>setOnScrollChangeListener</b>
+(<code>OnScrollChangeListener</code>)</A></nobr><br>
+<!-- Method setRegion -->
+<nobr><A HREF="android.support.v7.graphics.Palette.Builder.html#android.support.v7.graphics.Palette.Builder.setRegion_added(int, int, int, int)" class="hiddenlink" target="rightframe"><b>setRegion</b>
+(<code>int, int, int, int</code>)</A></nobr><br>
+<!-- Method setScrimsShown -->
+<i>setScrimsShown</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setScrimsShown_added(boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>boolean</code>)</b>&nbsp;in&nbsp;android.support.design.widget.CollapsingToolbarLayout
+</A></nobr><br>
+<!-- Method setScrimsShown -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setScrimsShown_added(boolean, boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>boolean, boolean</code>)</b>&nbsp;in&nbsp;android.support.design.widget.CollapsingToolbarLayout
+</A></nobr><br>
+<!-- Method setScrollIndicators -->
+<i>setScrollIndicators</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.setScrollIndicators_added(android.view.View, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>View, int</code>)</b>&nbsp;in&nbsp;android.support.v4.view.ViewCompat
+</A></nobr><br>
+<!-- Method setScrollIndicators -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.setScrollIndicators_added(android.view.View, int, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>View, int, int</code>)</b>&nbsp;in&nbsp;android.support.v4.view.ViewCompat
+</A></nobr><br>
+<!-- Method setSupportMediaController -->
+<nobr><A HREF="android.support.v4.app.FragmentActivity.html#android.support.v4.app.FragmentActivity.setSupportMediaController_added(android.support.v4.media.session.MediaControllerCompat)" class="hiddenlink" target="rightframe"><b>setSupportMediaController</b>
+(<code>MediaControllerCompat</code>)</A></nobr><br>
+<!-- Method setTitle -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setTitle_added(java.lang.CharSequence)" class="hiddenlink" target="rightframe"><b>setTitle</b>
+(<code>CharSequence</code>)</A></nobr><br>
+<!-- Method setUiStyle -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.setUiStyle_added(int)" class="hiddenlink" target="rightframe"><b>setUiStyle</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Class ShadowOverlayContainer -->
+<A HREF="android.support.v17.leanback.widget.ShadowOverlayContainer.html" class="hiddenlink" target="rightframe">ShadowOverlayContainer</A><br>
+<!-- Class ShadowOverlayHelper -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#ShadowOverlayHelper" class="hiddenlink" target="rightframe"><b>ShadowOverlayHelper</b></A><br>
+<!-- Class ShadowOverlayHelper.Builder -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#ShadowOverlayHelper.Builder" class="hiddenlink" target="rightframe"><b>ShadowOverlayHelper.Builder</b></A><br>
+<!-- Class ShadowOverlayHelper.Options -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#ShadowOverlayHelper.Options" class="hiddenlink" target="rightframe"><b>ShadowOverlayHelper.Options</b></A><br>
+<!-- Method show -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.show_added(android.support.design.widget.FloatingActionButton.OnVisibilityChangedListener)" class="hiddenlink" target="rightframe"><b>show</b>
+(<code>OnVisibilityChangedListener</code>)</A></nobr><br>
+<!-- Class Snackbar -->
+<A HREF="android.support.design.widget.Snackbar.html" class="hiddenlink" target="rightframe">Snackbar</A><br>
+<!-- Field spacer -->
+<nobr><A HREF="android.support.v7.appcompat.R.id.html#android.support.v7.appcompat.R.id.spacer" class="hiddenlink" target="rightframe">spacer</A>
+</nobr><br>
+<!-- Method springBack -->
+<nobr><A HREF="android.support.v4.widget.ScrollerCompat.html#android.support.v4.widget.ScrollerCompat.springBack_added(int, int, int, int, int, int)" class="hiddenlink" target="rightframe"><b>springBack</b>
+(<code>int, int, int, int, int, int</code>)</A></nobr><br>
+<!-- Field TAB_HIDDEN -->
+<A NAME="T"></A>
+<br><font size="+2">T</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.customtabs.CustomTabsCallback.html#android.support.customtabs.CustomTabsCallback.TAB_HIDDEN" class="hiddenlink" target="rightframe">TAB_HIDDEN</A>
+</nobr><br>
+<!-- Field TAB_SHOWN -->
+<nobr><A HREF="android.support.customtabs.CustomTabsCallback.html#android.support.customtabs.CustomTabsCallback.TAB_SHOWN" class="hiddenlink" target="rightframe">TAB_SHOWN</A>
+</nobr><br>
+<!-- Field TextAppearance_android_shadowColor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowColor" class="hiddenlink" target="rightframe">TextAppearance_android_shadowColor</A>
+</nobr><br>
+<!-- Field TextAppearance_android_shadowDx -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowDx" class="hiddenlink" target="rightframe">TextAppearance_android_shadowDx</A>
+</nobr><br>
+<!-- Field TextAppearance_android_shadowDy -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowDy" class="hiddenlink" target="rightframe">TextAppearance_android_shadowDy</A>
+</nobr><br>
+<!-- Field TextAppearance_android_shadowRadius -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowRadius" class="hiddenlink" target="rightframe">TextAppearance_android_shadowRadius</A>
+</nobr><br>
+<!-- Class TextInputLayout -->
+<A HREF="android.support.design.widget.TextInputLayout.html" class="hiddenlink" target="rightframe">TextInputLayout</A><br>
+<!-- Class TextViewCompat -->
+<A HREF="android.support.v4.widget.TextViewCompat.html" class="hiddenlink" target="rightframe">TextViewCompat</A><br>
+<!-- Field Theme_imageButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_imageButtonStyle" class="hiddenlink" target="rightframe">Theme_imageButtonStyle</A>
+</nobr><br>
+<!-- Field Theme_seekBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_seekBarStyle" class="hiddenlink" target="rightframe">Theme_seekBarStyle</A>
+</nobr><br>
+<!-- Field UI_STYLE_ACTIVITY_ROOT -->
+<A NAME="U"></A>
+<br><font size="+2">U</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_ACTIVITY_ROOT" class="hiddenlink" target="rightframe">UI_STYLE_ACTIVITY_ROOT</A>
+</nobr><br>
+<!-- Field UI_STYLE_DEFAULT -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_DEFAULT" class="hiddenlink" target="rightframe">UI_STYLE_DEFAULT</A>
+</nobr><br>
+<!-- Field UI_STYLE_ENTRANCE -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_ENTRANCE" class="hiddenlink" target="rightframe">UI_STYLE_ENTRANCE</A>
+</nobr><br>
+<!-- Method updateVisuals -->
+<nobr><A HREF="android.support.customtabs.CustomTabsService.html#android.support.customtabs.CustomTabsService.updateVisuals_added(android.support.customtabs.CustomTabsSessionToken, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>updateVisuals</b>
+(<code>CustomTabsSessionToken, Bundle</code>)</A></nobr><br>
+<!-- Class VerticalGridFragment -->
+<A NAME="V"></A>
+<br><font size="+2">V</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.app.VerticalGridFragment.html" class="hiddenlink" target="rightframe">VerticalGridFragment</A><br>
+<!-- Class VerticalGridPresenter -->
+<A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html" class="hiddenlink" target="rightframe">VerticalGridPresenter</A><br>
+<!-- Class VerticalGridSupportFragment -->
+<A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html" class="hiddenlink" target="rightframe">VerticalGridSupportFragment</A><br>
+<!-- Class ViewCompat -->
+<A HREF="android.support.v4.view.ViewCompat.html" class="hiddenlink" target="rightframe">ViewCompat</A><br>
+<!-- Field Widget_AppCompat_ImageButton -->
+<A NAME="W"></A>
+<br><font size="+2">W</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_ImageButton" class="hiddenlink" target="rightframe">Widget_AppCompat_ImageButton</A>
+</nobr><br>
+<!-- Field Widget_AppCompat_SeekBar -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_SeekBar" class="hiddenlink" target="rightframe">Widget_AppCompat_SeekBar</A>
+</nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_changes.html b/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_changes.html
new file mode 100644
index 0000000..d7ebd36
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_changes.html
@@ -0,0 +1,562 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+All Changes Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for All Differences" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="alldiffs_index_all.html" xclass="hiddenlink">All Differences</a>
+  <br>
+<A HREF="alldiffs_index_removals.html" xclass="hiddenlink">Removals</A>
+  <br>
+<A HREF="alldiffs_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<b>Changes</b>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<!-- Package android.support.customtabs -->
+<A NAME="A"></A>
+<A HREF="pkg_android.support.customtabs.html" class="hiddenlink" target="rightframe">android.support.customtabs</A><br>
+<!-- Package android.support.design.widget -->
+<A HREF="pkg_android.support.design.widget.html" class="hiddenlink" target="rightframe">android.support.design.widget</A><br>
+<!-- Package android.support.percent -->
+<A HREF="pkg_android.support.percent.html" class="hiddenlink" target="rightframe">android.support.percent</A><br>
+<!-- Package android.support.v14.preference -->
+<A HREF="pkg_android.support.v14.preference.html" class="hiddenlink" target="rightframe">android.support.v14.preference</A><br>
+<!-- Package android.support.v17.leanback.app -->
+<A HREF="pkg_android.support.v17.leanback.app.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.app</A><br>
+<!-- Package android.support.v17.leanback.widget -->
+<A HREF="pkg_android.support.v17.leanback.widget.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.widget</A><br>
+<!-- Package android.support.v4.app -->
+<A HREF="pkg_android.support.v4.app.html" class="hiddenlink" target="rightframe">android.support.v4.app</A><br>
+<!-- Package android.support.v4.content -->
+<A HREF="pkg_android.support.v4.content.html" class="hiddenlink" target="rightframe">android.support.v4.content</A><br>
+<!-- Package android.support.v4.content.res -->
+<A HREF="pkg_android.support.v4.content.res.html" class="hiddenlink" target="rightframe">android.support.v4.content.res</A><br>
+<!-- Package android.support.v4.media.session -->
+<A HREF="pkg_android.support.v4.media.session.html" class="hiddenlink" target="rightframe">android.support.v4.media.session</A><br>
+<!-- Package android.support.v4.view -->
+<A HREF="pkg_android.support.v4.view.html" class="hiddenlink" target="rightframe">android.support.v4.view</A><br>
+<!-- Package android.support.v4.widget -->
+<A HREF="pkg_android.support.v4.widget.html" class="hiddenlink" target="rightframe">android.support.v4.widget</A><br>
+<!-- Package android.support.v7.appcompat -->
+<A HREF="pkg_android.support.v7.appcompat.html" class="hiddenlink" target="rightframe">android.support.v7.appcompat</A><br>
+<!-- Package android.support.v7.graphics -->
+<A HREF="pkg_android.support.v7.graphics.html" class="hiddenlink" target="rightframe">android.support.v7.graphics</A><br>
+<!-- Package android.support.v7.graphics.drawable -->
+<A HREF="pkg_android.support.v7.graphics.drawable.html" class="hiddenlink" target="rightframe">android.support.v7.graphics.drawable</A><br>
+<!-- Package android.support.v7.media -->
+<A HREF="pkg_android.support.v7.media.html" class="hiddenlink" target="rightframe">android.support.v7.media</A><br>
+<!-- Package android.support.v7.preference -->
+<A HREF="pkg_android.support.v7.preference.html" class="hiddenlink" target="rightframe">android.support.v7.preference</A><br>
+<!-- Class AppBarLayout.Behavior -->
+<A HREF="android.support.design.widget.AppBarLayout.Behavior.html" class="hiddenlink" target="rightframe">AppBarLayout.Behavior</A><br>
+<!-- Class AppBarLayout.Behavior.SavedState -->
+<A HREF="android.support.design.widget.AppBarLayout.Behavior.SavedState.html" class="hiddenlink" target="rightframe">AppBarLayout.Behavior.SavedState</A><br>
+<!-- Class AppBarLayout.LayoutParams -->
+<A HREF="android.support.design.widget.AppBarLayout.LayoutParams.html" class="hiddenlink" target="rightframe">AppBarLayout.LayoutParams</A><br>
+<!-- Class AppBarLayout.ScrollingViewBehavior -->
+<A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html" class="hiddenlink" target="rightframe">AppBarLayout.ScrollingViewBehavior</A><br>
+<!-- Class BrowseFragment -->
+<A NAME="B"></A>
+<br><font size="+2">B</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.app.BrowseFragment.html" class="hiddenlink" target="rightframe">BrowseFragment</A><br>
+<!-- Class BrowseSupportFragment -->
+<A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html" class="hiddenlink" target="rightframe">BrowseSupportFragment</A><br>
+<!-- Class CollapsingToolbarLayout -->
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.design.widget.CollapsingToolbarLayout.html" class="hiddenlink" target="rightframe">CollapsingToolbarLayout</A><br>
+<!-- Class CoordinatorLayout.SavedState -->
+<A HREF="android.support.design.widget.CoordinatorLayout.SavedState.html" class="hiddenlink" target="rightframe">CoordinatorLayout.SavedState</A><br>
+<!-- Class CustomTabsCallback -->
+<A HREF="android.support.customtabs.CustomTabsCallback.html" class="hiddenlink" target="rightframe">CustomTabsCallback</A><br>
+<!-- Class CustomTabsIntent -->
+<A HREF="android.support.customtabs.CustomTabsIntent.html" class="hiddenlink" target="rightframe">CustomTabsIntent</A><br>
+<!-- Class CustomTabsIntent.Builder -->
+<A HREF="android.support.customtabs.CustomTabsIntent.Builder.html" class="hiddenlink" target="rightframe">CustomTabsIntent.Builder</A><br>
+<!-- Class CustomTabsService -->
+<A HREF="android.support.customtabs.CustomTabsService.html" class="hiddenlink" target="rightframe">CustomTabsService</A><br>
+<!-- Class CustomTabsSession -->
+<A HREF="android.support.customtabs.CustomTabsSession.html" class="hiddenlink" target="rightframe">CustomTabsSession</A><br>
+<!-- Class CustomTabsSessionToken -->
+<A HREF="android.support.customtabs.CustomTabsSessionToken.html" class="hiddenlink" target="rightframe">CustomTabsSessionToken</A><br>
+<!-- Class DetailsFragment -->
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.app.DetailsFragment.html" class="hiddenlink" target="rightframe">DetailsFragment</A><br>
+<!-- Class DetailsSupportFragment -->
+<A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html" class="hiddenlink" target="rightframe">DetailsSupportFragment</A><br>
+<!-- Class DrawerArrowDrawable -->
+<A HREF="android.support.v7.graphics.drawable.DrawerArrowDrawable.html" class="hiddenlink" target="rightframe">DrawerArrowDrawable</A><br>
+<!-- Class EditTextPreferenceDialogFragment -->
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v14.preference.EditTextPreferenceDialogFragment.html" class="hiddenlink" target="rightframe">EditTextPreferenceDialogFragment</A><br>
+<!-- Class EditTextPreferenceDialogFragmentCompat -->
+<A HREF="android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.html" class="hiddenlink" target="rightframe">EditTextPreferenceDialogFragmentCompat</A><br>
+<!-- Class FloatingActionButton -->
+<A NAME="F"></A>
+<br><font size="+2">F</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.design.widget.FloatingActionButton.html" class="hiddenlink" target="rightframe">FloatingActionButton</A><br>
+<!-- Class FloatingActionButton.Behavior -->
+<A HREF="android.support.design.widget.FloatingActionButton.Behavior.html" class="hiddenlink" target="rightframe">FloatingActionButton.Behavior</A><br>
+<!-- Class FragmentActivity -->
+<A HREF="android.support.v4.app.FragmentActivity.html" class="hiddenlink" target="rightframe">FragmentActivity</A><br>
+<!-- Class FragmentAnimationProvider -->
+<A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html" class="hiddenlink" target="rightframe"><i>FragmentAnimationProvider</i></A><br>
+<!-- Class GuidanceStylist -->
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.widget.GuidanceStylist.html" class="hiddenlink" target="rightframe">GuidanceStylist</A><br>
+<!-- Class GuidedAction -->
+<A HREF="android.support.v17.leanback.widget.GuidedAction.html" class="hiddenlink" target="rightframe">GuidedAction</A><br>
+<!-- Class GuidedAction.Builder -->
+<A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html" class="hiddenlink" target="rightframe">GuidedAction.Builder</A><br>
+<!-- Class GuidedActionsStylist -->
+<A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html" class="hiddenlink" target="rightframe">GuidedActionsStylist</A><br>
+<!-- Class GuidedActionsStylist.ViewHolder -->
+<A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html" class="hiddenlink" target="rightframe">GuidedActionsStylist.ViewHolder</A><br>
+<!-- Class GuidedStepFragment -->
+<A HREF="android.support.v17.leanback.app.GuidedStepFragment.html" class="hiddenlink" target="rightframe">GuidedStepFragment</A><br>
+<!-- Class ImageCardView -->
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.widget.ImageCardView.html" class="hiddenlink" target="rightframe">ImageCardView</A><br>
+<!-- Method initialize -->
+<nobr><A HREF="android.support.v17.leanback.widget.ShadowOverlayContainer.html#android.support.v17.leanback.widget.ShadowOverlayContainer.initialize_changed(boolean, boolean, boolean)" class="hiddenlink" target="rightframe">initialize
+(<code>boolean, boolean, boolean</code>)</A></nobr><br>
+<!-- Method isConnecting -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.isConnecting_changed()" class="hiddenlink" target="rightframe">isConnecting
+()</A></nobr><br>
+<!-- Class ListRowPresenter -->
+<A NAME="L"></A>
+<br><font size="+2">L</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.widget.ListRowPresenter.html" class="hiddenlink" target="rightframe">ListRowPresenter</A><br>
+<!-- Class MediaRouteDescriptor -->
+<A NAME="M"></A>
+<br><font size="+2">M</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v7.media.MediaRouteDescriptor.html" class="hiddenlink" target="rightframe">MediaRouteDescriptor</A><br>
+<!-- Class MediaRouteDescriptor.Builder -->
+<A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html" class="hiddenlink" target="rightframe">MediaRouteDescriptor.Builder</A><br>
+<!-- Class MediaRouter.RouteInfo -->
+<A HREF="android.support.v7.media.MediaRouter.RouteInfo.html" class="hiddenlink" target="rightframe">MediaRouter.RouteInfo</A><br>
+<!-- Class MediaSessionCompat -->
+<A HREF="android.support.v4.media.session.MediaSessionCompat.html" class="hiddenlink" target="rightframe">MediaSessionCompat</A><br>
+<!-- Class NavigationView.SavedState -->
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.design.widget.NavigationView.SavedState.html" class="hiddenlink" target="rightframe">NavigationView.SavedState</A><br>
+<!-- Class NestedScrollView -->
+<A HREF="android.support.v4.widget.NestedScrollView.html" class="hiddenlink" target="rightframe">NestedScrollView</A><br>
+<!-- Method onDestroyView -->
+<A NAME="O"></A>
+<br><font size="+2">O</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.onDestroyView_changed()" class="hiddenlink" target="rightframe">onDestroyView
+()</A></nobr><br>
+<!-- Method onStart -->
+<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.onStart_changed()" class="hiddenlink" target="rightframe">onStart
+()</A></nobr><br>
+<!-- Method onViewCreated -->
+<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.onViewCreated_changed(android.view.View, android.os.Bundle)" class="hiddenlink" target="rightframe">onViewCreated
+(<code>View, Bundle</code>)</A></nobr><br>
+<!-- Class Palette.Builder -->
+<A NAME="P"></A>
+<br><font size="+2">P</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v7.graphics.Palette.Builder.html" class="hiddenlink" target="rightframe">Palette.Builder</A><br>
+<!-- Class PercentLayoutHelper.PercentLayoutInfo -->
+<A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html" class="hiddenlink" target="rightframe">PercentLayoutHelper.PercentLayoutInfo</A><br>
+<!-- Class PlaybackOverlayFragment -->
+<A HREF="android.support.v17.leanback.app.PlaybackOverlayFragment.html" class="hiddenlink" target="rightframe">PlaybackOverlayFragment</A><br>
+<!-- Class PlaybackOverlaySupportFragment -->
+<A HREF="android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html" class="hiddenlink" target="rightframe">PlaybackOverlaySupportFragment</A><br>
+<!-- Class R.attr -->
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v7.appcompat.R.attr.html" class="hiddenlink" target="rightframe">R.attr</A><br>
+<!-- Class R.bool -->
+<A HREF="android.support.v7.appcompat.R.bool.html" class="hiddenlink" target="rightframe">R.bool</A><br>
+<!-- Class R.dimen -->
+<A HREF="android.support.v7.appcompat.R.dimen.html" class="hiddenlink" target="rightframe">R.dimen</A><br>
+<!-- Class R.drawable -->
+<A HREF="android.support.v7.appcompat.R.drawable.html" class="hiddenlink" target="rightframe">R.drawable</A><br>
+<!-- Class R.id -->
+<A HREF="android.support.v7.appcompat.R.id.html" class="hiddenlink" target="rightframe">R.id</A><br>
+<!-- Class R.layout -->
+<A HREF="android.support.v7.appcompat.R.layout.html" class="hiddenlink" target="rightframe">R.layout</A><br>
+<!-- Class R.string -->
+<A HREF="android.support.v7.appcompat.R.string.html" class="hiddenlink" target="rightframe">R.string</A><br>
+<!-- Class R.style -->
+<A HREF="android.support.v7.appcompat.R.style.html" class="hiddenlink" target="rightframe">R.style</A><br>
+<!-- Class R.styleable -->
+<A HREF="android.support.v7.appcompat.R.styleable.html" class="hiddenlink" target="rightframe">R.styleable</A><br>
+<!-- Class ResourcesCompat -->
+<A HREF="android.support.v4.content.res.ResourcesCompat.html" class="hiddenlink" target="rightframe">ResourcesCompat</A><br>
+<!-- Class RowPresenter -->
+<A HREF="android.support.v17.leanback.widget.RowPresenter.html" class="hiddenlink" target="rightframe">RowPresenter</A><br>
+<!-- Class ScrollerCompat -->
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.widget.ScrollerCompat.html" class="hiddenlink" target="rightframe">ScrollerCompat</A><br>
+<!-- Class SearchBar -->
+<A HREF="android.support.v17.leanback.widget.SearchBar.html" class="hiddenlink" target="rightframe">SearchBar</A><br>
+<!-- Class SearchFragment -->
+<A HREF="android.support.v17.leanback.app.SearchFragment.html" class="hiddenlink" target="rightframe">SearchFragment</A><br>
+<!-- Class SearchSupportFragment -->
+<A HREF="android.support.v17.leanback.app.SearchSupportFragment.html" class="hiddenlink" target="rightframe">SearchSupportFragment</A><br>
+<!-- Method setConnecting -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.setConnecting_changed(boolean)" class="hiddenlink" target="rightframe">setConnecting
+(<code>boolean</code>)</A></nobr><br>
+<!-- Class ShadowOverlayContainer -->
+<A HREF="android.support.v17.leanback.widget.ShadowOverlayContainer.html" class="hiddenlink" target="rightframe">ShadowOverlayContainer</A><br>
+<!-- Class Snackbar -->
+<A HREF="android.support.design.widget.Snackbar.html" class="hiddenlink" target="rightframe">Snackbar</A><br>
+<!-- Class TextInputLayout -->
+<A NAME="T"></A>
+<br><font size="+2">T</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.design.widget.TextInputLayout.html" class="hiddenlink" target="rightframe">TextInputLayout</A><br>
+<!-- Class TextViewCompat -->
+<A HREF="android.support.v4.widget.TextViewCompat.html" class="hiddenlink" target="rightframe">TextViewCompat</A><br>
+<!-- Class VerticalGridFragment -->
+<A NAME="V"></A>
+<br><font size="+2">V</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.app.VerticalGridFragment.html" class="hiddenlink" target="rightframe">VerticalGridFragment</A><br>
+<!-- Class VerticalGridPresenter -->
+<A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html" class="hiddenlink" target="rightframe">VerticalGridPresenter</A><br>
+<!-- Class VerticalGridSupportFragment -->
+<A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html" class="hiddenlink" target="rightframe">VerticalGridSupportFragment</A><br>
+<!-- Class ViewCompat -->
+<A HREF="android.support.v4.view.ViewCompat.html" class="hiddenlink" target="rightframe">ViewCompat</A><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_removals.html b/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_removals.html
new file mode 100644
index 0000000..0d7da0f
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/alldiffs_index_removals.html
@@ -0,0 +1,284 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+All Removals Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for All Differences" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="alldiffs_index_all.html" xclass="hiddenlink">All Differences</a>
+  <br>
+<b>Removals</b>
+  <br>
+<A HREF="alldiffs_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="alldiffs_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<!-- Constructor AppBarLayout.Behavior.SavedState -->
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.SavedState.html#android.support.design.widget.AppBarLayout.Behavior.SavedState.ctor_removed(android.os.Parcel)" class="hiddenlink" target="rightframe"><strike>AppBarLayout.Behavior.SavedState</strike>
+(<code>Parcel</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Method canDrawOutOfBounds -->
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.RowPresenter.html#android.support.v17.leanback.widget.RowPresenter.canDrawOutOfBounds_removed()" class="hiddenlink" target="rightframe"><strike>canDrawOutOfBounds</strike>
+()</A></nobr><br>
+<!-- Constructor CoordinatorLayout.SavedState -->
+<nobr><A HREF="android.support.design.widget.CoordinatorLayout.SavedState.html#android.support.design.widget.CoordinatorLayout.SavedState.ctor_removed(android.os.Parcel)" class="hiddenlink" target="rightframe"><strike>CoordinatorLayout.SavedState</strike>
+(<code>Parcel</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Field dialog_fixed_height_major -->
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.dialog_fixed_height_major" class="hiddenlink" target="rightframe"><strike>dialog_fixed_height_major</strike></A>
+</nobr><br>
+<!-- Field dialog_fixed_height_minor -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.dialog_fixed_height_minor" class="hiddenlink" target="rightframe"><strike>dialog_fixed_height_minor</strike></A>
+</nobr><br>
+<!-- Field dialog_fixed_width_major -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.dialog_fixed_width_major" class="hiddenlink" target="rightframe"><strike>dialog_fixed_width_major</strike></A>
+</nobr><br>
+<!-- Field dialog_fixed_width_minor -->
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.dialog_fixed_width_minor" class="hiddenlink" target="rightframe"><strike>dialog_fixed_width_minor</strike></A>
+</nobr><br>
+<!-- Method isEntryTransitionEnabled -->
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.isEntryTransitionEnabled_removed()" class="hiddenlink" target="rightframe"><strike>isEntryTransitionEnabled</strike>
+()</A></nobr><br>
+<!-- Constructor NavigationView.SavedState -->
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.NavigationView.SavedState.html#android.support.design.widget.NavigationView.SavedState.ctor_removed(android.os.Parcel)" class="hiddenlink" target="rightframe"><strike>NavigationView.SavedState</strike>
+(<code>Parcel</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Method onActivityEnter -->
+<A NAME="O"></A>
+<br><font size="+2">O</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>onActivityEnter</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onActivityEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+<!-- Method onActivityEnter -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onActivityEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onActivityEnter -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onActivityEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onActivityExit -->
+<i>onActivityExit</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onActivityExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+<!-- Method onActivityExit -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onActivityExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onActivityExit -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onActivityExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onAddEditTextToDialogView -->
+<i>onAddEditTextToDialogView</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v14.preference.EditTextPreferenceDialogFragment.html#android.support.v14.preference.EditTextPreferenceDialogFragment.onAddEditTextToDialogView_removed(android.view.View, android.widget.EditText)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>View, EditText</code>)</strike>&nbsp;in&nbsp;android.support.v14.preference.EditTextPreferenceDialogFragment
+</A></nobr><br>
+<!-- Method onAddEditTextToDialogView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.html#android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.onAddEditTextToDialogView_removed(android.view.View, android.widget.EditText)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>View, EditText</code>)</strike>&nbsp;in&nbsp;android.support.v7.preference.EditTextPreferenceDialogFragmentCompat
+</A></nobr><br>
+<!-- Method onDependentViewRemoved -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.Behavior.html#android.support.design.widget.FloatingActionButton.Behavior.onDependentViewRemoved_removed(android.support.design.widget.CoordinatorLayout, android.support.design.widget.FloatingActionButton, android.view.View)" class="hiddenlink" target="rightframe"><strike>onDependentViewRemoved</strike>
+(<code>CoordinatorLayout, FloatingActionButton, View</code>)</A></nobr><br>
+<!-- Method onFragmentEnter -->
+<i>onFragmentEnter</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+<!-- Method onFragmentEnter -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onFragmentEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onFragmentEnter -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onFragmentExit -->
+<i>onFragmentExit</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+<!-- Method onFragmentExit -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onFragmentExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onFragmentExit -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onFragmentReenter -->
+<i>onFragmentReenter</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentReenter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+<!-- Method onFragmentReenter -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onFragmentReenter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onFragmentReenter -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentReenter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onFragmentReturn -->
+<i>onFragmentReturn</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentReturn_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+<!-- Method onFragmentReturn -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onFragmentReturn_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onFragmentReturn -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentReturn_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onInterceptTouchEvent -->
+<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.html#android.support.design.widget.AppBarLayout.Behavior.onInterceptTouchEvent_removed(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, android.view.MotionEvent)" class="hiddenlink" target="rightframe"><strike>onInterceptTouchEvent</strike>
+(<code>CoordinatorLayout, AppBarLayout, MotionEvent</code>)</A></nobr><br>
+<!-- Method onLayout -->
+<nobr><A HREF="android.support.v17.leanback.widget.ShadowOverlayContainer.html#android.support.v17.leanback.widget.ShadowOverlayContainer.onLayout_removed(boolean, int, int, int, int)" class="hiddenlink" target="rightframe"><strike>onLayout</strike>
+(<code>boolean, int, int, int, int</code>)</A></nobr><br>
+<!-- Method onMeasureChild -->
+<nobr><A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html#android.support.design.widget.AppBarLayout.ScrollingViewBehavior.onMeasureChild_removed(android.support.design.widget.CoordinatorLayout, android.view.View, int, int, int, int)" class="hiddenlink" target="rightframe"><strike>onMeasureChild</strike>
+(<code>CoordinatorLayout, View, int, int, int, int</code>)</A></nobr><br>
+<!-- Method onTouchEvent -->
+<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.html#android.support.design.widget.AppBarLayout.Behavior.onTouchEvent_removed(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, android.view.MotionEvent)" class="hiddenlink" target="rightframe"><strike>onTouchEvent</strike>
+(<code>CoordinatorLayout, AppBarLayout, MotionEvent</code>)</A></nobr><br>
+<!-- Field RtlOverlay_Widget_AppCompat_ActionButton_Overflow -->
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.RtlOverlay_Widget_AppCompat_ActionButton_Overflow" class="hiddenlink" target="rightframe"><strike>RtlOverlay_Widget_AppCompat_ActionButton_Overflow</strike></A>
+</nobr><br>
+<!-- Method setEntryTransitionEnabled -->
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.setEntryTransitionEnabled_removed(boolean)" class="hiddenlink" target="rightframe"><strike>setEntryTransitionEnabled</strike>
+(<code>boolean</code>)</A></nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsCallback.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsCallback.html
new file mode 100644
index 0000000..0466d5d
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsCallback.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.customtabs.CustomTabsCallback
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.customtabs.<A HREF="../../../../reference/android/support/customtabs/CustomTabsCallback.html" target="_top"><font size="+2"><code>CustomTabsCallback</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsCallback.TAB_HIDDEN"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsCallback.html#TAB_HIDDEN" target="_top"><code>TAB_HIDDEN</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsCallback.TAB_SHOWN"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsCallback.html#TAB_SHOWN" target="_top"><code>TAB_SHOWN</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html
new file mode 100644
index 0000000..e3aefb5
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.customtabs.CustomTabsIntent.Builder
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.customtabs.<A HREF="../../../../reference/android/support/customtabs/CustomTabsIntent.Builder.html" target="_top"><font size="+2"><code>CustomTabsIntent.Builder</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsIntent.Builder.enableUrlBarHiding_added()"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsIntent.Builder.html#enableUrlBarHiding()" target="_top"><code>enableUrlBarHiding</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsIntent.Builder.setActionButton_added(android.graphics.Bitmap, java.lang.String, android.app.PendingIntent, boolean)"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsIntent.Builder.html#setActionButton(android.graphics.Bitmap, java.lang.String, android.app.PendingIntent, boolean)" target="_top"><code>setActionButton</code></A>(<code>Bitmap,</nobr> String<nobr>,</nobr> PendingIntent<nobr>,</nobr> boolean<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsIntent.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsIntent.html
new file mode 100644
index 0000000..9312755
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsIntent.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.customtabs.CustomTabsIntent
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.customtabs.<A HREF="../../../../reference/android/support/customtabs/CustomTabsIntent.html" target="_top"><font size="+2"><code>CustomTabsIntent</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsIntent.EXTRA_ENABLE_URLBAR_HIDING"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsIntent.html#EXTRA_ENABLE_URLBAR_HIDING" target="_top"><code>EXTRA_ENABLE_URLBAR_HIDING</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsIntent.EXTRA_TINT_ACTION_BUTTON"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsIntent.html#EXTRA_TINT_ACTION_BUTTON" target="_top"><code>EXTRA_TINT_ACTION_BUTTON</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsService.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsService.html
new file mode 100644
index 0000000..2a0fd18
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsService.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.customtabs.CustomTabsService
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.customtabs.<A HREF="../../../../reference/android/support/customtabs/CustomTabsService.html" target="_top"><font size="+2"><code>CustomTabsService</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsService.updateVisuals_added(android.support.customtabs.CustomTabsSessionToken, android.os.Bundle)"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsService.html#updateVisuals(android.support.customtabs.CustomTabsSessionToken, android.os.Bundle)" target="_top"><code>updateVisuals</code></A>(<code>CustomTabsSessionToken,</nobr> Bundle<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsSession.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsSession.html
new file mode 100644
index 0000000..6b70224
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsSession.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.customtabs.CustomTabsSession
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.customtabs.<A HREF="../../../../reference/android/support/customtabs/CustomTabsSession.html" target="_top"><font size="+2"><code>CustomTabsSession</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsSession.setActionButton_added(android.graphics.Bitmap, java.lang.String)"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsSession.html#setActionButton(android.graphics.Bitmap, java.lang.String)" target="_top"><code>setActionButton</code></A>(<code>Bitmap,</nobr> String<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsSessionToken.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsSessionToken.html
new file mode 100644
index 0000000..2bdb42e
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.customtabs.CustomTabsSessionToken.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.customtabs.CustomTabsSessionToken
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.customtabs.<A HREF="../../../../reference/android/support/customtabs/CustomTabsSessionToken.html" target="_top"><font size="+2"><code>CustomTabsSessionToken</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsSessionToken.getSessionTokenFromIntent_added(android.content.Intent)"></A>
+  <nobr><code>CustomTabsSessionToken</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsSessionToken.html#getSessionTokenFromIntent(android.content.Intent)" target="_top"><code>getSessionTokenFromIntent</code></A>(<code>Intent</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.Behavior.SavedState.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.Behavior.SavedState.html
new file mode 100644
index 0000000..bb89bbd
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.Behavior.SavedState.html
@@ -0,0 +1,137 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.AppBarLayout.Behavior.SavedState
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/AppBarLayout.Behavior.SavedState.html" target="_top"><font size="+2"><code>AppBarLayout.Behavior.SavedState</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.AppBarLayout.Behavior.SavedState.ctor_removed(android.os.Parcel)"></A>
+  <nobr>AppBarLayout.Behavior.SavedState(<code>Parcel</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.AppBarLayout.Behavior.SavedState.ctor_added(android.os.Parcel, java.lang.ClassLoader)"></A>
+  <nobr><A HREF="../../../../reference/android/support/design/widget/AppBarLayout.Behavior.SavedState.html#AppBarLayout.Behavior.SavedState(android.os.Parcel, java.lang.ClassLoader)" target="_top"><code>AppBarLayout.Behavior.<br>SavedState</code></A>(<code>Parcel,</nobr> ClassLoader<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.Behavior.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.Behavior.html
new file mode 100644
index 0000000..b538999a
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.Behavior.html
@@ -0,0 +1,145 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.AppBarLayout.Behavior
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/AppBarLayout.Behavior.html" target="_top"><font size="+2"><code>AppBarLayout.Behavior</code></font></A>
+</H2>
+<p><font xsize="+1">The superclass changed from <code>android.support.design.widget.ViewOffsetBehavior</code> to <code>android.support.design.widget.HeaderBehavior</code>.<br></font>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.AppBarLayout.Behavior.onInterceptTouchEvent_removed(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, android.view.MotionEvent)"></A>
+  <nobr><code>boolean</code>&nbsp;onInterceptTouchEvent(<code>CoordinatorLayout,</nobr> AppBarLayout<nobr>,</nobr> MotionEvent<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.AppBarLayout.Behavior.onTouchEvent_removed(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, android.view.MotionEvent)"></A>
+  <nobr><code>boolean</code>&nbsp;onTouchEvent(<code>CoordinatorLayout,</nobr> AppBarLayout<nobr>,</nobr> MotionEvent<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.AppBarLayout.Behavior.setDragCallback_added(android.support.design.widget.AppBarLayout.Behavior.DragCallback)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/AppBarLayout.Behavior.html#setDragCallback(android.support.design.widget.AppBarLayout.Behavior.DragCallback)" target="_top"><code>setDragCallback</code></A>(<code>DragCallback</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.LayoutParams.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.LayoutParams.html
new file mode 100644
index 0000000..6d19d36
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.LayoutParams.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.AppBarLayout.LayoutParams
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/AppBarLayout.LayoutParams.html" target="_top"><font size="+2"><code>AppBarLayout.LayoutParams</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/AppBarLayout.LayoutParams.html#SCROLL_FLAG_SNAP" target="_top"><code>SCROLL_FLAG_SNAP</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html
new file mode 100644
index 0000000..c089db3
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.AppBarLayout.ScrollingViewBehavior
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior.html" target="_top"><font size="+2"><code>AppBarLayout.ScrollingViewBehavior</code></font></A>
+</H2>
+<p><font xsize="+1">The superclass changed from <code>android.support.design.widget.ViewOffsetBehavior</code> to <code>android.support.design.widget.HeaderScrollingViewBehavior</code>.<br></font>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.onMeasureChild_removed(android.support.design.widget.CoordinatorLayout, android.view.View, int, int, int, int)"></A>
+  <nobr><code>boolean</code>&nbsp;onMeasureChild(<code>CoordinatorLayout,</nobr> View<nobr>,</nobr> int<nobr>,</nobr> int<nobr>,</nobr> int<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.onLayoutChild_added(android.support.design.widget.CoordinatorLayout, android.view.View, int)"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior.html#onLayoutChild(android.support.design.widget.CoordinatorLayout, android.view.View, int)" target="_top"><code>onLayoutChild</code></A>(<code>CoordinatorLayout,</nobr> View<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.CollapsingToolbarLayout.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.CollapsingToolbarLayout.html
new file mode 100644
index 0000000..49d92737
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.CollapsingToolbarLayout.html
@@ -0,0 +1,157 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.CollapsingToolbarLayout
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/CollapsingToolbarLayout.html" target="_top"><font size="+2"><code>CollapsingToolbarLayout</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CollapsingToolbarLayout.getCollapsedTitleTypeface_added()"></A>
+  <nobr><code>Typeface</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/CollapsingToolbarLayout.html#getCollapsedTitleTypeface()" target="_top"><code>getCollapsedTitleTypeface</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CollapsingToolbarLayout.getExpandedTitleTypeface_added()"></A>
+  <nobr><code>Typeface</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/CollapsingToolbarLayout.html#getExpandedTitleTypeface()" target="_top"><code>getExpandedTitleTypeface</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CollapsingToolbarLayout.setCollapsedTitleTypeface_added(android.graphics.Typeface)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/CollapsingToolbarLayout.html#setCollapsedTitleTypeface(android.graphics.Typeface)" target="_top"><code>setCollapsedTitleTypeface</code></A>(<code>Typeface</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleTypeface_added(android.graphics.Typeface)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/CollapsingToolbarLayout.html#setExpandedTitleTypeface(android.graphics.Typeface)" target="_top"><code>setExpandedTitleTypeface</code></A>(<code>Typeface</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CollapsingToolbarLayout.setScrimsShown_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/CollapsingToolbarLayout.html#setScrimsShown(boolean)" target="_top"><code>setScrimsShown</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CollapsingToolbarLayout.setScrimsShown_added(boolean, boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/CollapsingToolbarLayout.html#setScrimsShown(boolean, boolean)" target="_top"><code>setScrimsShown</code></A>(<code>boolean,</nobr> boolean<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.CoordinatorLayout.SavedState.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.CoordinatorLayout.SavedState.html
new file mode 100644
index 0000000..f92babd
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.CoordinatorLayout.SavedState.html
@@ -0,0 +1,137 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.CoordinatorLayout.SavedState
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/CoordinatorLayout.SavedState.html" target="_top"><font size="+2"><code>CoordinatorLayout.SavedState</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CoordinatorLayout.SavedState.ctor_removed(android.os.Parcel)"></A>
+  <nobr>CoordinatorLayout.SavedState(<code>Parcel</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CoordinatorLayout.SavedState.ctor_added(android.os.Parcel, java.lang.ClassLoader)"></A>
+  <nobr><A HREF="../../../../reference/android/support/design/widget/CoordinatorLayout.SavedState.html#CoordinatorLayout.SavedState(android.os.Parcel, java.lang.ClassLoader)" target="_top"><code>CoordinatorLayout.SavedState</code></A>(<code>Parcel,</nobr> ClassLoader<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.FloatingActionButton.Behavior.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.FloatingActionButton.Behavior.html
new file mode 100644
index 0000000..07fdda1
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.FloatingActionButton.Behavior.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.FloatingActionButton.Behavior
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/FloatingActionButton.Behavior.html" target="_top"><font size="+2"><code>FloatingActionButton.Behavior</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.FloatingActionButton.Behavior.onDependentViewRemoved_removed(android.support.design.widget.CoordinatorLayout, android.support.design.widget.FloatingActionButton, android.view.View)"></A>
+  <nobr><code>void</code>&nbsp;onDependentViewRemoved(<code>CoordinatorLayout,</nobr> FloatingActionButton<nobr>,</nobr> View<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.FloatingActionButton.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.FloatingActionButton.html
new file mode 100644
index 0000000..90553fa
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.FloatingActionButton.html
@@ -0,0 +1,130 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.FloatingActionButton
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/FloatingActionButton.html" target="_top"><font size="+2"><code>FloatingActionButton</code></font></A>
+</H2>
+<p><font xsize="+1">The superclass changed from <code>android.widget.ImageView</code> to <code>android.widget.ImageButton</code>.<br></font>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.FloatingActionButton.hide_added(android.support.design.widget.FloatingActionButton.OnVisibilityChangedListener)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/FloatingActionButton.html#hide(android.support.design.widget.FloatingActionButton.OnVisibilityChangedListener)" target="_top"><code>hide</code></A>(<code>OnVisibilityChangedListener</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.FloatingActionButton.show_added(android.support.design.widget.FloatingActionButton.OnVisibilityChangedListener)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/FloatingActionButton.html#show(android.support.design.widget.FloatingActionButton.OnVisibilityChangedListener)" target="_top"><code>show</code></A>(<code>OnVisibilityChangedListener</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.NavigationView.SavedState.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.NavigationView.SavedState.html
new file mode 100644
index 0000000..8a9ae80
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.NavigationView.SavedState.html
@@ -0,0 +1,137 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.NavigationView.SavedState
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/NavigationView.SavedState.html" target="_top"><font size="+2"><code>NavigationView.SavedState</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.NavigationView.SavedState.ctor_removed(android.os.Parcel)"></A>
+  <nobr>NavigationView.SavedState(<code>Parcel</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.NavigationView.SavedState.ctor_added(android.os.Parcel, java.lang.ClassLoader)"></A>
+  <nobr><A HREF="../../../../reference/android/support/design/widget/NavigationView.SavedState.html#NavigationView.SavedState(android.os.Parcel, java.lang.ClassLoader)" target="_top"><code>NavigationView.SavedState</code></A>(<code>Parcel,</nobr> ClassLoader<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.Snackbar.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.Snackbar.html
new file mode 100644
index 0000000..d741863
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.Snackbar.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.Snackbar
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/Snackbar.html" target="_top"><font size="+2"><code>Snackbar</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.Snackbar.isShownOrQueued_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/Snackbar.html#isShownOrQueued()" target="_top"><code>isShownOrQueued</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.TextInputLayout.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.TextInputLayout.html
new file mode 100644
index 0000000..30d0dd6
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.design.widget.TextInputLayout.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.TextInputLayout
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/TextInputLayout.html" target="_top"><font size="+2"><code>TextInputLayout</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.TextInputLayout.getCounterMaxLength_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/TextInputLayout.html#getCounterMaxLength()" target="_top"><code>getCounterMaxLength</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.TextInputLayout.getTypeface_added()"></A>
+  <nobr><code>Typeface</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/TextInputLayout.html#getTypeface()" target="_top"><code>getTypeface</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.TextInputLayout.setCounterEnabled_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/TextInputLayout.html#setCounterEnabled(boolean)" target="_top"><code>setCounterEnabled</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.TextInputLayout.setCounterMaxLength_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/TextInputLayout.html#setCounterMaxLength(int)" target="_top"><code>setCounterMaxLength</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html
new file mode 100644
index 0000000..b6f2e48
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.percent.PercentLayoutHelper.PercentLayoutInfo
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.percent.<A HREF="../../../../reference/android/support/percent/PercentLayoutHelper.PercentLayoutInfo.html" target="_top"><font size="+2"><code>PercentLayoutHelper.PercentLayoutInfo</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.aspectRatio"></A>
+  <nobr><code>float</code>&nbsp;<A HREF="../../../../reference/android/support/percent/PercentLayoutHelper.PercentLayoutInfo.html#aspectRatio" target="_top"><code>aspectRatio</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v14.preference.EditTextPreferenceDialogFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v14.preference.EditTextPreferenceDialogFragment.html
new file mode 100644
index 0000000..30f22a8
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v14.preference.EditTextPreferenceDialogFragment.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v14.preference.EditTextPreferenceDialogFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v14.preference.<A HREF="../../../../reference/android/support/v14/preference/EditTextPreferenceDialogFragment.html" target="_top"><font size="+2"><code>EditTextPreferenceDialogFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v14.preference.EditTextPreferenceDialogFragment.onAddEditTextToDialogView_removed(android.view.View, android.widget.EditText)"></A>
+  <nobr><code>void</code>&nbsp;onAddEditTextToDialogView(<code>View,</nobr> EditText<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.BrowseFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.BrowseFragment.html
new file mode 100644
index 0000000..f4d77bf
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.BrowseFragment.html
@@ -0,0 +1,164 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.BrowseFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseFragment.html" target="_top"><font size="+2"><code>BrowseFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseFragment.createEntranceTransition_added()"></A>
+  <nobr><code>Object</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseFragment.html#createEntranceTransition()" target="_top"><code>createEntranceTransition</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseFragment.onEntranceTransitionEnd_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseFragment.html#onEntranceTransitionEnd()" target="_top"><code>onEntranceTransitionEnd</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseFragment.onEntranceTransitionPrepare_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseFragment.html#onEntranceTransitionPrepare()" target="_top"><code>onEntranceTransitionPrepare</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseFragment.onEntranceTransitionStart_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseFragment.html#onEntranceTransitionStart()" target="_top"><code>onEntranceTransitionStart</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseFragment.onSaveInstanceState_added(android.os.Bundle)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseFragment.html#onSaveInstanceState(android.os.Bundle)" target="_top"><code>onSaveInstanceState</code></A>(<code>Bundle</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseFragment.onStart_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseFragment.html#onStart()" target="_top"><code>onStart</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseFragment.runEntranceTransition_added(java.lang.Object)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseFragment.html#runEntranceTransition(java.lang.Object)" target="_top"><code>runEntranceTransition</code></A>(<code>Object</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.BrowseSupportFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.BrowseSupportFragment.html
new file mode 100644
index 0000000..a48ea3b
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.BrowseSupportFragment.html
@@ -0,0 +1,164 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.BrowseSupportFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseSupportFragment.html" target="_top"><font size="+2"><code>BrowseSupportFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseSupportFragment.createEntranceTransition_added()"></A>
+  <nobr><code>Object</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseSupportFragment.html#createEntranceTransition()" target="_top"><code>createEntranceTransition</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseSupportFragment.onEntranceTransitionEnd_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseSupportFragment.html#onEntranceTransitionEnd()" target="_top"><code>onEntranceTransitionEnd</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseSupportFragment.onEntranceTransitionPrepare_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseSupportFragment.html#onEntranceTransitionPrepare()" target="_top"><code>onEntranceTransitionPrepare</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseSupportFragment.onEntranceTransitionStart_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseSupportFragment.html#onEntranceTransitionStart()" target="_top"><code>onEntranceTransitionStart</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseSupportFragment.onSaveInstanceState_added(android.os.Bundle)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseSupportFragment.html#onSaveInstanceState(android.os.Bundle)" target="_top"><code>onSaveInstanceState</code></A>(<code>Bundle</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseSupportFragment.onStart_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseSupportFragment.html#onStart()" target="_top"><code>onStart</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseSupportFragment.runEntranceTransition_added(java.lang.Object)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseSupportFragment.html#runEntranceTransition(java.lang.Object)" target="_top"><code>runEntranceTransition</code></A>(<code>Object</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.DetailsFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.DetailsFragment.html
new file mode 100644
index 0000000..d38127c
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.DetailsFragment.html
@@ -0,0 +1,157 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.DetailsFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsFragment.html" target="_top"><font size="+2"><code>DetailsFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.DetailsFragment.createEntranceTransition_added()"></A>
+  <nobr><code>Object</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsFragment.html#createEntranceTransition()" target="_top"><code>createEntranceTransition</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.DetailsFragment.onEntranceTransitionEnd_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsFragment.html#onEntranceTransitionEnd()" target="_top"><code>onEntranceTransitionEnd</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.DetailsFragment.onEntranceTransitionPrepare_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsFragment.html#onEntranceTransitionPrepare()" target="_top"><code>onEntranceTransitionPrepare</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.DetailsFragment.onEntranceTransitionStart_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsFragment.html#onEntranceTransitionStart()" target="_top"><code>onEntranceTransitionStart</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.DetailsFragment.onStart_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsFragment.html#onStart()" target="_top"><code>onStart</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.DetailsFragment.runEntranceTransition_added(java.lang.Object)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsFragment.html#runEntranceTransition(java.lang.Object)" target="_top"><code>runEntranceTransition</code></A>(<code>Object</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.DetailsSupportFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.DetailsSupportFragment.html
new file mode 100644
index 0000000..a02b8f3
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.DetailsSupportFragment.html
@@ -0,0 +1,157 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.DetailsSupportFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsSupportFragment.html" target="_top"><font size="+2"><code>DetailsSupportFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.DetailsSupportFragment.createEntranceTransition_added()"></A>
+  <nobr><code>Object</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsSupportFragment.html#createEntranceTransition()" target="_top"><code>createEntranceTransition</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.DetailsSupportFragment.onEntranceTransitionEnd_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsSupportFragment.html#onEntranceTransitionEnd()" target="_top"><code>onEntranceTransitionEnd</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.DetailsSupportFragment.onEntranceTransitionPrepare_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsSupportFragment.html#onEntranceTransitionPrepare()" target="_top"><code>onEntranceTransitionPrepare</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.DetailsSupportFragment.onEntranceTransitionStart_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsSupportFragment.html#onEntranceTransitionStart()" target="_top"><code>onEntranceTransitionStart</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.DetailsSupportFragment.onStart_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsSupportFragment.html#onStart()" target="_top"><code>onStart</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.DetailsSupportFragment.runEntranceTransition_added(java.lang.Object)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsSupportFragment.html#runEntranceTransition(java.lang.Object)" target="_top"><code>runEntranceTransition</code></A>(<code>Object</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.GuidedStepFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.GuidedStepFragment.html
new file mode 100644
index 0000000..725281a
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.GuidedStepFragment.html
@@ -0,0 +1,229 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.GuidedStepFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html" target="_top"><font size="+2"><code>GuidedStepFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.isEntryTransitionEnabled_removed()"></A>
+  <nobr><code>boolean</code>&nbsp;isEntryTransitionEnabled()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.setEntryTransitionEnabled_removed(boolean)"></A>
+  <nobr><code>void</code>&nbsp;setEntryTransitionEnabled(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.add_added(android.app.FragmentManager, android.support.v17.leanback.app.GuidedStepFragment, int)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#add(android.app.FragmentManager, android.support.v17.leanback.app.GuidedStepFragment, int)" target="_top"><code>add</code></A>(<code>FragmentManager,</nobr> GuidedStepFragment<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.addAsRoot_added(android.app.Activity, android.support.v17.leanback.app.GuidedStepFragment, int)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#addAsRoot(android.app.Activity, android.support.v17.leanback.app.GuidedStepFragment, int)" target="_top"><code>addAsRoot</code></A>(<code>Activity,</nobr> GuidedStepFragment<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.getContainerIdForBackground_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#getContainerIdForBackground()" target="_top"><code>getContainerIdForBackground</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.getUiStyle_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#getUiStyle()" target="_top"><code>getUiStyle</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.onGuidedActionEdited_added(android.support.v17.leanback.widget.GuidedAction)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#onGuidedActionEdited(android.support.v17.leanback.widget.GuidedAction)" target="_top"><code>onGuidedActionEdited</code></A>(<code>GuidedAction</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.onProvideBackgroundFragment_added()"></A>
+  <nobr><code>Fragment</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#onProvideBackgroundFragment()" target="_top"><code>onProvideBackgroundFragment</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.onProvideFragmentTransitions_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#onProvideFragmentTransitions()" target="_top"><code>onProvideFragmentTransitions</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.setUiStyle_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#setUiStyle(int)" target="_top"><code>setUiStyle</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.EXTRA_UI_STYLE"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#EXTRA_UI_STYLE" target="_top"><code>EXTRA_UI_STYLE</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_ACTIVITY_ROOT"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#UI_STYLE_ACTIVITY_ROOT" target="_top"><code>UI_STYLE_ACTIVITY_ROOT</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_DEFAULT"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#UI_STYLE_DEFAULT" target="_top"><code>UI_STYLE_DEFAULT</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_ENTRANCE"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#UI_STYLE_ENTRANCE" target="_top"><code>UI_STYLE_ENTRANCE</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.PlaybackOverlayFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.PlaybackOverlayFragment.html
new file mode 100644
index 0000000..71e230b
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.PlaybackOverlayFragment.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.PlaybackOverlayFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/PlaybackOverlayFragment.html" target="_top"><font size="+2"><code>PlaybackOverlayFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.PlaybackOverlayFragment.onDestroyView_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/PlaybackOverlayFragment.html#onDestroyView()" target="_top"><code>onDestroyView</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.PlaybackOverlayFragment.onResume_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/PlaybackOverlayFragment.html#onResume()" target="_top"><code>onResume</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html
new file mode 100644
index 0000000..a794f14
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.PlaybackOverlaySupportFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/PlaybackOverlaySupportFragment.html" target="_top"><font size="+2"><code>PlaybackOverlaySupportFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.PlaybackOverlaySupportFragment.onDestroyView_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/PlaybackOverlaySupportFragment.html#onDestroyView()" target="_top"><code>onDestroyView</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.PlaybackOverlaySupportFragment.onResume_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/PlaybackOverlaySupportFragment.html#onResume()" target="_top"><code>onResume</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.SearchFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.SearchFragment.html
new file mode 100644
index 0000000..827f46b
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.SearchFragment.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.SearchFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/SearchFragment.html" target="_top"><font size="+2"><code>SearchFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.SearchFragment.displayCompletions_added(android.view.inputmethod.CompletionInfo[])"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/SearchFragment.html#displayCompletions(android.view.inputmethod.CompletionInfo[])" target="_top"><code>displayCompletions</code></A>(<code>CompletionInfo[]</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.SearchSupportFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.SearchSupportFragment.html
new file mode 100644
index 0000000..f1e2826
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.SearchSupportFragment.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.SearchSupportFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/SearchSupportFragment.html" target="_top"><font size="+2"><code>SearchSupportFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.SearchSupportFragment.displayCompletions_added(android.view.inputmethod.CompletionInfo[])"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/SearchSupportFragment.html#displayCompletions(android.view.inputmethod.CompletionInfo[])" target="_top"><code>displayCompletions</code></A>(<code>CompletionInfo[]</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.VerticalGridFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.VerticalGridFragment.html
new file mode 100644
index 0000000..01bb4de
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.VerticalGridFragment.html
@@ -0,0 +1,151 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.VerticalGridFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/VerticalGridFragment.html" target="_top"><font size="+2"><code>VerticalGridFragment</code></font></A>
+</H2>
+<p><font xsize="+1">The superclass changed from <code>android.app.Fragment</code> to <code>android.support.v17.leanback.app.BrandedFragment</code>.<br></font>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.VerticalGridFragment.createEntranceTransition_added()"></A>
+  <nobr><code>Object</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/VerticalGridFragment.html#createEntranceTransition()" target="_top"><code>createEntranceTransition</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.VerticalGridFragment.onDestroyView_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/VerticalGridFragment.html#onDestroyView()" target="_top"><code>onDestroyView</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.VerticalGridFragment.onStart_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/VerticalGridFragment.html#onStart()" target="_top"><code>onStart</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.VerticalGridFragment.onViewCreated_added(android.view.View, android.os.Bundle)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/VerticalGridFragment.html#onViewCreated(android.view.View, android.os.Bundle)" target="_top"><code>onViewCreated</code></A>(<code>View,</nobr> Bundle<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.VerticalGridFragment.runEntranceTransition_added(java.lang.Object)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/VerticalGridFragment.html#runEntranceTransition(java.lang.Object)" target="_top"><code>runEntranceTransition</code></A>(<code>Object</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.VerticalGridSupportFragment.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.VerticalGridSupportFragment.html
new file mode 100644
index 0000000..a818a79
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.app.VerticalGridSupportFragment.html
@@ -0,0 +1,168 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.VerticalGridSupportFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/VerticalGridSupportFragment.html" target="_top"><font size="+2"><code>VerticalGridSupportFragment</code></font></A>
+</H2>
+<p><font xsize="+1">The superclass changed from <code>android.support.v4.app.Fragment</code> to <code>android.support.v17.leanback.app.BrandedSupportFragment</code>.<br></font>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.VerticalGridSupportFragment.createEntranceTransition_added()"></A>
+  <nobr><code>Object</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/VerticalGridSupportFragment.html#createEntranceTransition()" target="_top"><code>createEntranceTransition</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.VerticalGridSupportFragment.runEntranceTransition_added(java.lang.Object)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/VerticalGridSupportFragment.html#runEntranceTransition(java.lang.Object)" target="_top"><code>runEntranceTransition</code></A>(<code>Object</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.VerticalGridSupportFragment.onDestroyView_changed()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/VerticalGridSupportFragment.html#onDestroyView()" target="_top"><code>onDestroyView</code></A>()  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Method was inherited from <code>android.support.v4.app.Fragment</code>, but is now defined locally.
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.VerticalGridSupportFragment.onStart_changed()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/VerticalGridSupportFragment.html#onStart()" target="_top"><code>onStart</code></A>()  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Method was inherited from <code>android.support.v4.app.Fragment</code>, but is now defined locally.
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.VerticalGridSupportFragment.onViewCreated_changed(android.view.View, android.os.Bundle)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/VerticalGridSupportFragment.html#onViewCreated(android.view.View, android.os.Bundle)" target="_top"><code>onViewCreated</code></A>(<code>View,</nobr> Bundle<nobr><nobr></code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Method was inherited from <code>android.support.v4.app.Fragment</code>, but is now defined locally.
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.FragmentAnimationProvider.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.FragmentAnimationProvider.html
new file mode 100644
index 0000000..1cf004d
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.FragmentAnimationProvider.html
@@ -0,0 +1,179 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.FragmentAnimationProvider
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Interface android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/FragmentAnimationProvider.html" target="_top"><font size="+2"><code>FragmentAnimationProvider</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.FragmentAnimationProvider.onActivityEnter_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onActivityEnter(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.FragmentAnimationProvider.onActivityExit_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onActivityExit(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentEnter_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onFragmentEnter(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentExit_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onFragmentExit(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentReenter_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onFragmentReenter(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentReturn_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onFragmentReturn(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.FragmentAnimationProvider.onImeAppearing_added(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/FragmentAnimationProvider.html#onImeAppearing(java.util.List<android.animation.Animator>)" target="_top"><code>onImeAppearing</code></A>(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.FragmentAnimationProvider.onImeDisappearing_added(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/FragmentAnimationProvider.html#onImeDisappearing(java.util.List<android.animation.Animator>)" target="_top"><code>onImeDisappearing</code></A>(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidanceStylist.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidanceStylist.html
new file mode 100644
index 0000000..e0b94bc
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidanceStylist.html
@@ -0,0 +1,179 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.GuidanceStylist
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidanceStylist.html" target="_top"><font size="+2"><code>GuidanceStylist</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidanceStylist.onActivityEnter_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onActivityEnter(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidanceStylist.onActivityExit_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onActivityExit(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidanceStylist.onFragmentEnter_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onFragmentEnter(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidanceStylist.onFragmentExit_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onFragmentExit(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidanceStylist.onFragmentReenter_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onFragmentReenter(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidanceStylist.onFragmentReturn_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onFragmentReturn(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidanceStylist.onImeAppearing_added(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidanceStylist.html#onImeAppearing(java.util.List<android.animation.Animator>)" target="_top"><code>onImeAppearing</code></A>(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidanceStylist.onImeDisappearing_added(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidanceStylist.html#onImeDisappearing(java.util.List<android.animation.Animator>)" target="_top"><code>onImeDisappearing</code></A>(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedAction.Builder.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedAction.Builder.html
new file mode 100644
index 0000000..96d30a4
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedAction.Builder.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.GuidedAction.Builder
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.Builder.html" target="_top"><font size="+2"><code>GuidedAction.Builder</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.editTitle_added(java.lang.String)"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.Builder.html#editTitle(java.lang.String)" target="_top"><code>editTitle</code></A>(<code>String</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.editable_added(boolean)"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.Builder.html#editable(boolean)" target="_top"><code>editable</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedAction.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedAction.html
new file mode 100644
index 0000000..84b93bf
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedAction.html
@@ -0,0 +1,157 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.GuidedAction
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html" target="_top"><font size="+2"><code>GuidedAction</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.getEditTitle_added()"></A>
+  <nobr><code>CharSequence</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#getEditTitle()" target="_top"><code>getEditTitle</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.isEditTitleUsed_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#isEditTitleUsed()" target="_top"><code>isEditTitleUsed</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.isEditable_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#isEditable()" target="_top"><code>isEditable</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.setDescription_added(java.lang.CharSequence)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#setDescription(java.lang.CharSequence)" target="_top"><code>setDescription</code></A>(<code>CharSequence</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.setEditTitle_added(java.lang.CharSequence)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#setEditTitle(java.lang.CharSequence)" target="_top"><code>setEditTitle</code></A>(<code>CharSequence</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.setTitle_added(java.lang.CharSequence)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#setTitle(java.lang.CharSequence)" target="_top"><code>setTitle</code></A>(<code>CharSequence</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html
new file mode 100644
index 0000000..38e83b4
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.ViewHolder.html" target="_top"><font size="+2"><code>GuidedActionsStylist.ViewHolder</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.getEditableTitleView_added()"></A>
+  <nobr><code>EditText</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.ViewHolder.html#getEditableTitleView()" target="_top"><code>getEditableTitleView</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.html
new file mode 100644
index 0000000..104f325
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.html
@@ -0,0 +1,179 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.GuidedActionsStylist
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html" target="_top"><font size="+2"><code>GuidedActionsStylist</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onActivityEnter_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onActivityEnter(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onActivityExit_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onActivityExit(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentEnter_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onFragmentEnter(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentExit_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onFragmentExit(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentReenter_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onFragmentReenter(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentReturn_removed(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;onFragmentReturn(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onImeAppearing_added(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#onImeAppearing(java.util.List<android.animation.Animator>)" target="_top"><code>onImeAppearing</code></A>(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onImeDisappearing_added(java.util.List<android.animation.Animator>)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#onImeDisappearing(java.util.List<android.animation.Animator>)" target="_top"><code>onImeDisappearing</code></A>(<code>List&lt;Animator&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ImageCardView.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ImageCardView.html
new file mode 100644
index 0000000..1535ca0
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ImageCardView.html
@@ -0,0 +1,165 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.ImageCardView
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/ImageCardView.html" target="_top"><font size="+2"><code>ImageCardView</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.ImageCardView.ctor_added(android.content.Context, int)"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/widget/ImageCardView.html#ImageCardView(android.content.Context, int)" target="_top"><code>ImageCardView</code></A>(<code>Context,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_CONTENT"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/ImageCardView.html#CARD_TYPE_FLAG_CONTENT" target="_top"><code>CARD_TYPE_FLAG_CONTENT</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_ICON_LEFT"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/ImageCardView.html#CARD_TYPE_FLAG_ICON_LEFT" target="_top"><code>CARD_TYPE_FLAG_ICON_LEFT</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_ICON_RIGHT"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/ImageCardView.html#CARD_TYPE_FLAG_ICON_RIGHT" target="_top"><code>CARD_TYPE_FLAG_ICON_RIGHT</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_IMAGE_ONLY"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/ImageCardView.html#CARD_TYPE_FLAG_IMAGE_ONLY" target="_top"><code>CARD_TYPE_FLAG_IMAGE_ONLY</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_TITLE"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/ImageCardView.html#CARD_TYPE_FLAG_TITLE" target="_top"><code>CARD_TYPE_FLAG_TITLE</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ListRowPresenter.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ListRowPresenter.html
new file mode 100644
index 0000000..f536d92
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ListRowPresenter.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.ListRowPresenter
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/ListRowPresenter.html" target="_top"><font size="+2"><code>ListRowPresenter</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.ListRowPresenter.createShadowOverlayOptions_added()"></A>
+  <nobr><code>Options</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/ListRowPresenter.html#createShadowOverlayOptions()" target="_top"><code>createShadowOverlayOptions</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.ListRowPresenter.isKeepChildForeground_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/ListRowPresenter.html#isKeepChildForeground()" target="_top"><code>isKeepChildForeground</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.ListRowPresenter.setKeepChildForeground_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/ListRowPresenter.html#setKeepChildForeground(boolean)" target="_top"><code>setKeepChildForeground</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.RowPresenter.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.RowPresenter.html
new file mode 100644
index 0000000..3f10b29
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.RowPresenter.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.RowPresenter
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/RowPresenter.html" target="_top"><font size="+2"><code>RowPresenter</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.RowPresenter.canDrawOutOfBounds_removed()"></A>
+  <nobr><code>boolean</code>&nbsp;canDrawOutOfBounds()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.SearchBar.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.SearchBar.html
new file mode 100644
index 0000000..2965c15
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.SearchBar.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.SearchBar
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/SearchBar.html" target="_top"><font size="+2"><code>SearchBar</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.SearchBar.displayCompletions_added(android.view.inputmethod.CompletionInfo[])"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/SearchBar.html#displayCompletions(android.view.inputmethod.CompletionInfo[])" target="_top"><code>displayCompletions</code></A>(<code>CompletionInfo[]</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ShadowOverlayContainer.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ShadowOverlayContainer.html
new file mode 100644
index 0000000..761fd92
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.ShadowOverlayContainer.html
@@ -0,0 +1,141 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.ShadowOverlayContainer
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/ShadowOverlayContainer.html" target="_top"><font size="+2"><code>ShadowOverlayContainer</code></font></A>
+</H2>
+<p><font xsize="+1">The superclass changed from <code>android.view.ViewGroup</code> to <code>android.widget.FrameLayout</code>.<br></font>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.ShadowOverlayContainer.onLayout_removed(boolean, int, int, int, int)"></A>
+  <nobr><code>void</code>&nbsp;onLayout(<code>boolean,</nobr> int<nobr>,</nobr> int<nobr>,</nobr> int<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.ShadowOverlayContainer.initialize_changed(boolean, boolean, boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/ShadowOverlayContainer.html#initialize(boolean, boolean, boolean)" target="_top"><code>initialize</code></A>(<code>boolean,</nobr> boolean<nobr>,</nobr> boolean<nobr><nobr></code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+<b>Now deprecated</b>.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.VerticalGridPresenter.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.VerticalGridPresenter.html
new file mode 100644
index 0000000..e999838
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v17.leanback.widget.VerticalGridPresenter.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.VerticalGridPresenter
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/VerticalGridPresenter.html" target="_top"><font size="+2"><code>VerticalGridPresenter</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.VerticalGridPresenter.createShadowOverlayOptions_added()"></A>
+  <nobr><code>Options</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/VerticalGridPresenter.html#createShadowOverlayOptions()" target="_top"><code>createShadowOverlayOptions</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.VerticalGridPresenter.getKeepChildForeground_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/VerticalGridPresenter.html#getKeepChildForeground()" target="_top"><code>getKeepChildForeground</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.VerticalGridPresenter.setEntranceTransitionState_added(android.support.v17.leanback.widget.VerticalGridPresenter.ViewHolder, boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/VerticalGridPresenter.html#setEntranceTransitionState(android.support.v17.leanback.widget.VerticalGridPresenter.ViewHolder, boolean)" target="_top"><code>setEntranceTransitionState</code></A>(<code>ViewHolder,</nobr> boolean<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.VerticalGridPresenter.setKeepChildForeground_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/VerticalGridPresenter.html#setKeepChildForeground(boolean)" target="_top"><code>setKeepChildForeground</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.app.FragmentActivity.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.app.FragmentActivity.html
new file mode 100644
index 0000000..c68356c
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.app.FragmentActivity.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.app.FragmentActivity
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.app.<A HREF="../../../../reference/android/support/v4/app/FragmentActivity.html" target="_top"><font size="+2"><code>FragmentActivity</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.app.FragmentActivity.getSupportMediaController_added()"></A>
+  <nobr><code>MediaControllerCompat</code>&nbsp;<A HREF="../../../../reference/android/support/v4/app/FragmentActivity.html#getSupportMediaController()" target="_top"><code>getSupportMediaController</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.app.FragmentActivity.setSupportMediaController_added(android.support.v4.media.session.MediaControllerCompat)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/app/FragmentActivity.html#setSupportMediaController(android.support.v4.media.session.MediaControllerCompat)" target="_top"><code>setSupportMediaController</code></A>(<code>MediaControllerCompat</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.content.res.ResourcesCompat.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.content.res.ResourcesCompat.html
new file mode 100644
index 0000000..9bdd4f7
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.content.res.ResourcesCompat.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.content.res.ResourcesCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.content.res.<A HREF="../../../../reference/android/support/v4/content/res/ResourcesCompat.html" target="_top"><font size="+2"><code>ResourcesCompat</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.content.res.ResourcesCompat.getColor_added(android.content.res.Resources, int, android.content.res.Resources.Theme)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v4/content/res/ResourcesCompat.html#getColor(android.content.res.Resources, int, android.content.res.Resources.Theme)" target="_top"><code>getColor</code></A>(<code>Resources,</nobr> int<nobr>,</nobr> Theme<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.content.res.ResourcesCompat.getColorStateList_added(android.content.res.Resources, int, android.content.res.Resources.Theme)"></A>
+  <nobr><code>ColorStateList</code>&nbsp;<A HREF="../../../../reference/android/support/v4/content/res/ResourcesCompat.html#getColorStateList(android.content.res.Resources, int, android.content.res.Resources.Theme)" target="_top"><code>getColorStateList</code></A>(<code>Resources,</nobr> int<nobr>,</nobr> Theme<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.media.session.MediaSessionCompat.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.media.session.MediaSessionCompat.html
new file mode 100644
index 0000000..5b5f1e3
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.media.session.MediaSessionCompat.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.media.session.MediaSessionCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.media.session.<A HREF="../../../../reference/android/support/v4/media/session/MediaSessionCompat.html" target="_top"><font size="+2"><code>MediaSessionCompat</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.media.session.MediaSessionCompat.ctor_added(android.content.Context, java.lang.String)"></A>
+  <nobr><A HREF="../../../../reference/android/support/v4/media/session/MediaSessionCompat.html#MediaSessionCompat(android.content.Context, java.lang.String)" target="_top"><code>MediaSessionCompat</code></A>(<code>Context,</nobr> String<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.view.ViewCompat.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.view.ViewCompat.html
new file mode 100644
index 0000000..2e39745
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.view.ViewCompat.html
@@ -0,0 +1,193 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.ViewCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/ViewCompat.html" target="_top"><font size="+2"><code>ViewCompat</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.ViewCompat.getScrollIndicators_added(android.view.View)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v4/view/ViewCompat.html#getScrollIndicators(android.view.View)" target="_top"><code>getScrollIndicators</code></A>(<code>View</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.ViewCompat.hasOnClickListeners_added(android.view.View)"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v4/view/ViewCompat.html#hasOnClickListeners(android.view.View)" target="_top"><code>hasOnClickListeners</code></A>(<code>View</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.ViewCompat.setScrollIndicators_added(android.view.View, int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/view/ViewCompat.html#setScrollIndicators(android.view.View, int)" target="_top"><code>setScrollIndicators</code></A>(<code>View,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.ViewCompat.setScrollIndicators_added(android.view.View, int, int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/view/ViewCompat.html#setScrollIndicators(android.view.View, int, int)" target="_top"><code>setScrollIndicators</code></A>(<code>View,</nobr> int<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.ViewCompat.SCROLL_INDICATOR_BOTTOM"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v4/view/ViewCompat.html#SCROLL_INDICATOR_BOTTOM" target="_top"><code>SCROLL_INDICATOR_BOTTOM</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.ViewCompat.SCROLL_INDICATOR_END"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v4/view/ViewCompat.html#SCROLL_INDICATOR_END" target="_top"><code>SCROLL_INDICATOR_END</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.ViewCompat.SCROLL_INDICATOR_LEFT"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v4/view/ViewCompat.html#SCROLL_INDICATOR_LEFT" target="_top"><code>SCROLL_INDICATOR_LEFT</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.ViewCompat.SCROLL_INDICATOR_RIGHT"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v4/view/ViewCompat.html#SCROLL_INDICATOR_RIGHT" target="_top"><code>SCROLL_INDICATOR_RIGHT</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.ViewCompat.SCROLL_INDICATOR_START"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v4/view/ViewCompat.html#SCROLL_INDICATOR_START" target="_top"><code>SCROLL_INDICATOR_START</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.ViewCompat.SCROLL_INDICATOR_TOP"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v4/view/ViewCompat.html#SCROLL_INDICATOR_TOP" target="_top"><code>SCROLL_INDICATOR_TOP</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.NestedScrollView.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.NestedScrollView.html
new file mode 100644
index 0000000..8d4cbaa
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.NestedScrollView.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.widget.NestedScrollView
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.widget.<A HREF="../../../../reference/android/support/v4/widget/NestedScrollView.html" target="_top"><font size="+2"><code>NestedScrollView</code></font></A>
+</H2>
+<p><font xsize="+1">Added interface <code>android.support.v4.view.ScrollingView</code>.<br></font>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.widget.NestedScrollView.setOnScrollChangeListener_added(android.support.v4.widget.NestedScrollView.OnScrollChangeListener)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/widget/NestedScrollView.html#setOnScrollChangeListener(android.support.v4.widget.NestedScrollView.OnScrollChangeListener)" target="_top"><code>setOnScrollChangeListener</code></A>(<code>OnScrollChangeListener</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.ScrollerCompat.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.ScrollerCompat.html
new file mode 100644
index 0000000..7f47eae
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.ScrollerCompat.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.widget.ScrollerCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.widget.<A HREF="../../../../reference/android/support/v4/widget/ScrollerCompat.html" target="_top"><font size="+2"><code>ScrollerCompat</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.widget.ScrollerCompat.springBack_added(int, int, int, int, int, int)"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v4/widget/ScrollerCompat.html#springBack(int, int, int, int, int, int)" target="_top"><code>springBack</code></A>(<code>int,</nobr> int<nobr>,</nobr> int<nobr>,</nobr> int<nobr>,</nobr> int<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.TextViewCompat.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.TextViewCompat.html
new file mode 100644
index 0000000..3641625
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v4.widget.TextViewCompat.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.widget.TextViewCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.widget.<A HREF="../../../../reference/android/support/v4/widget/TextViewCompat.html" target="_top"><font size="+2"><code>TextViewCompat</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.widget.TextViewCompat.getMaxLines_added(android.widget.TextView)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v4/widget/TextViewCompat.html#getMaxLines(android.widget.TextView)" target="_top"><code>getMaxLines</code></A>(<code>TextView</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.widget.TextViewCompat.getMinLines_added(android.widget.TextView)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v4/widget/TextViewCompat.html#getMinLines(android.widget.TextView)" target="_top"><code>getMinLines</code></A>(<code>TextView</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.attr.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.attr.html
new file mode 100644
index 0000000..dc6fce2
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.attr.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.appcompat.R.attr
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.appcompat.<A HREF="../../../../reference/android/support/v7/appcompat/R.attr.html" target="_top"><font size="+2"><code>R.attr</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.attr.allowStacking"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.attr.html#allowStacking" target="_top"><code>allowStacking</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.attr.imageButtonStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.attr.html#imageButtonStyle" target="_top"><code>imageButtonStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.attr.seekBarStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.attr.html#seekBarStyle" target="_top"><code>seekBarStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.bool.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.bool.html
new file mode 100644
index 0000000..973cf83
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.bool.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.appcompat.R.bool
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.appcompat.<A HREF="../../../../reference/android/support/v7/appcompat/R.bool.html" target="_top"><font size="+2"><code>R.bool</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.bool.abc_allow_stacked_button_bar"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.bool.html#abc_allow_stacked_button_bar" target="_top"><code>abc_allow_stacked_button_bar</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.dimen.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.dimen.html
new file mode 100644
index 0000000..ca5fec2
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.dimen.html
@@ -0,0 +1,200 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.appcompat.R.dimen
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.appcompat.<A HREF="../../../../reference/android/support/v7/appcompat/R.dimen.html" target="_top"><font size="+2"><code>R.dimen</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.dimen.dialog_fixed_height_major"></A>
+  <code>int</code>&nbsp;dialog_fixed_height_major
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.dimen.dialog_fixed_height_minor"></A>
+  <code>int</code>&nbsp;dialog_fixed_height_minor
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.dimen.dialog_fixed_width_major"></A>
+  <code>int</code>&nbsp;dialog_fixed_width_major
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.dimen.dialog_fixed_width_minor"></A>
+  <code>int</code>&nbsp;dialog_fixed_width_minor
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.dimen.abc_dialog_fixed_height_major"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.dimen.html#abc_dialog_fixed_height_major" target="_top"><code>abc_dialog_fixed_height_major</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.dimen.abc_dialog_fixed_height_minor"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.dimen.html#abc_dialog_fixed_height_minor" target="_top"><code>abc_dialog_fixed_height_minor</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.dimen.abc_dialog_fixed_width_major"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.dimen.html#abc_dialog_fixed_width_major" target="_top"><code>abc_dialog_fixed_width_major</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.dimen.abc_dialog_fixed_width_minor"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.dimen.html#abc_dialog_fixed_width_minor" target="_top"><code>abc_dialog_fixed_width_minor</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.dimen.abc_seekbar_track_background_height_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.dimen.html#abc_seekbar_track_background_height_material" target="_top"><code>abc_seekbar_track_background_height_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.dimen.abc_seekbar_track_progress_height_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.dimen.html#abc_seekbar_track_progress_height_material" target="_top"><code>abc_seekbar_track_progress_height_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.dimen.abc_select_dialog_padding_start_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.dimen.html#abc_select_dialog_padding_start_material" target="_top"><code>abc_select_dialog_padding_start_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.drawable.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.drawable.html
new file mode 100644
index 0000000..3cfba65
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.drawable.html
@@ -0,0 +1,171 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.appcompat.R.drawable
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.appcompat.<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html" target="_top"><font size="+2"><code>R.drawable</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_btn_default_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_btn_default_material" target="_top"><code>abc_btn_default_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_scrubber_control_off_mtrl_alpha"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_scrubber_control_off_mtrl_alpha" target="_top"><code>abc_scrubber_control_off_mtrl_alpha</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_scrubber_control_to_pressed_mtrl_000"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_scrubber_control_to_pressed_mtrl_000" target="_top"><code>abc_scrubber_control_to_pressed_mtrl_000</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_scrubber_control_to_pressed_mtrl_005"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_scrubber_control_to_pressed_mtrl_005" target="_top"><code>abc_scrubber_control_to_pressed_mtrl_005</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_scrubber_primary_mtrl_alpha"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_scrubber_primary_mtrl_alpha" target="_top"><code>abc_scrubber_primary_mtrl_alpha</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_scrubber_track_mtrl_alpha"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_scrubber_track_mtrl_alpha" target="_top"><code>abc_scrubber_track_mtrl_alpha</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_seekbar_thumb_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_seekbar_thumb_material" target="_top"><code>abc_seekbar_thumb_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_seekbar_track_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_seekbar_track_material" target="_top"><code>abc_seekbar_track_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.id.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.id.html
new file mode 100644
index 0000000..a25139d
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.id.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.appcompat.R.id
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.appcompat.<A HREF="../../../../reference/android/support/v7/appcompat/R.id.html" target="_top"><font size="+2"><code>R.id</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.id.scrollIndicatorDown"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.id.html#scrollIndicatorDown" target="_top"><code>scrollIndicatorDown</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.id.scrollIndicatorUp"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.id.html#scrollIndicatorUp" target="_top"><code>scrollIndicatorUp</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.id.spacer"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.id.html#spacer" target="_top"><code>spacer</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.layout.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.layout.html
new file mode 100644
index 0000000..0b485ea
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.layout.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.appcompat.R.layout
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.appcompat.<A HREF="../../../../reference/android/support/v7/appcompat/R.layout.html" target="_top"><font size="+2"><code>R.layout</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.layout.abc_alert_dialog_button_bar_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.layout.html#abc_alert_dialog_button_bar_material" target="_top"><code>abc_alert_dialog_button_bar_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.string.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.string.html
new file mode 100644
index 0000000..b5b32c7
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.string.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.appcompat.R.string
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.appcompat.<A HREF="../../../../reference/android/support/v7/appcompat/R.string.html" target="_top"><font size="+2"><code>R.string</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.string.abc_capital_off"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.string.html#abc_capital_off" target="_top"><code>abc_capital_off</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.string.abc_capital_on"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.string.html#abc_capital_on" target="_top"><code>abc_capital_on</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.style.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.style.html
new file mode 100644
index 0000000..a7b4e2d
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.style.html
@@ -0,0 +1,172 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.appcompat.R.style
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.appcompat.<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html" target="_top"><font size="+2"><code>R.style</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.RtlOverlay_Widget_AppCompat_ActionButton_Overflow"></A>
+  <code>int</code>&nbsp;RtlOverlay_Widget_AppCompat_ActionButton_Overflow
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.Base_Widget_AppCompat_ImageButton"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html#Base_Widget_AppCompat_ImageButton" target="_top"><code>Base_Widget_AppCompat_ImageButton</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.Base_Widget_AppCompat_SeekBar"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html#Base_Widget_AppCompat_SeekBar" target="_top"><code>Base_Widget_AppCompat_SeekBar</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.RtlUnderlay_Widget_AppCompat_ActionButton"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html#RtlUnderlay_Widget_AppCompat_ActionButton" target="_top"><code>RtlUnderlay_Widget_AppCompat_ActionButton</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.RtlUnderlay_Widget_AppCompat_ActionButton_Overflow"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html#RtlUnderlay_Widget_AppCompat_ActionButton_Overflow" target="_top"><code>RtlUnderlay_Widget_AppCompat_ActionButton_Overflow</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.Widget_AppCompat_ImageButton"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html#Widget_AppCompat_ImageButton" target="_top"><code>Widget_AppCompat_ImageButton</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.Widget_AppCompat_SeekBar"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html#Widget_AppCompat_SeekBar" target="_top"><code>Widget_AppCompat_SeekBar</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.styleable.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.styleable.html
new file mode 100644
index 0000000..3f6d157
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.appcompat.R.styleable.html
@@ -0,0 +1,164 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.appcompat.R.styleable
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.appcompat.<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html" target="_top"><font size="+2"><code>R.styleable</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.ButtonBarLayout_allowStacking"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#ButtonBarLayout_allowStacking" target="_top"><code>ButtonBarLayout_allowStacking</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowColor"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#TextAppearance_android_shadowColor" target="_top"><code>TextAppearance_android_shadowColor</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowDx"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#TextAppearance_android_shadowDx" target="_top"><code>TextAppearance_android_shadowDx</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowDy"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#TextAppearance_android_shadowDy" target="_top"><code>TextAppearance_android_shadowDy</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowRadius"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#TextAppearance_android_shadowRadius" target="_top"><code>TextAppearance_android_shadowRadius</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_imageButtonStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#Theme_imageButtonStyle" target="_top"><code>Theme_imageButtonStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_seekBarStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#Theme_seekBarStyle" target="_top"><code>Theme_seekBarStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.graphics.Palette.Builder.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.graphics.Palette.Builder.html
new file mode 100644
index 0000000..03171fb
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.graphics.Palette.Builder.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.graphics.Palette.Builder
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.graphics.<A HREF="../../../../reference/android/support/v7/graphics/Palette.Builder.html" target="_top"><font size="+2"><code>Palette.Builder</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.graphics.Palette.Builder.clearRegion_added()"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/v7/graphics/Palette.Builder.html#clearRegion()" target="_top"><code>clearRegion</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.graphics.Palette.Builder.setRegion_added(int, int, int, int)"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/v7/graphics/Palette.Builder.html#setRegion(int, int, int, int)" target="_top"><code>setRegion</code></A>(<code>int,</nobr> int<nobr>,</nobr> int<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.graphics.drawable.DrawerArrowDrawable.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.graphics.drawable.DrawerArrowDrawable.html
new file mode 100644
index 0000000..ec3cb15
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.graphics.drawable.DrawerArrowDrawable.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.graphics.drawable.DrawerArrowDrawable
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.graphics.drawable.<A HREF="../../../../reference/android/support/v7/graphics/drawable/DrawerArrowDrawable.html" target="_top"><font size="+2"><code>DrawerArrowDrawable</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.graphics.drawable.DrawerArrowDrawable.getPaint_added()"></A>
+  <nobr><code>Paint</code>&nbsp;<A HREF="../../../../reference/android/support/v7/graphics/drawable/DrawerArrowDrawable.html#getPaint()" target="_top"><code>getPaint</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouteDescriptor.Builder.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouteDescriptor.Builder.html
new file mode 100644
index 0000000..aec06c0
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouteDescriptor.Builder.html
@@ -0,0 +1,168 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.media.MediaRouteDescriptor.Builder
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.media.<A HREF="../../../../reference/android/support/v7/media/MediaRouteDescriptor.Builder.html" target="_top"><font size="+2"><code>MediaRouteDescriptor.Builder</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouteDescriptor.Builder.addGroupMemberId_added(java.lang.String)"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouteDescriptor.Builder.html#addGroupMemberId(java.lang.String)" target="_top"><code>addGroupMemberId</code></A>(<code>String</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouteDescriptor.Builder.addGroupMemberIds_added(java.util.Collection<java.lang.String>)"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouteDescriptor.Builder.html#addGroupMemberIds(java.util.Collection<java.lang.String>)" target="_top"><code>addGroupMemberIds</code></A>(<code>Collection&lt;String&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouteDescriptor.Builder.setConnectionState_added(int)"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouteDescriptor.Builder.html#setConnectionState(int)" target="_top"><code>setConnectionState</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouteDescriptor.Builder.setDeviceType_added(int)"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouteDescriptor.Builder.html#setDeviceType(int)" target="_top"><code>setDeviceType</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouteDescriptor.Builder.setIconUri_added(android.net.Uri)"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouteDescriptor.Builder.html#setIconUri(android.net.Uri)" target="_top"><code>setIconUri</code></A>(<code>Uri</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouteDescriptor.Builder.setConnecting_changed(boolean)"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouteDescriptor.Builder.html#setConnecting(boolean)" target="_top"><code>setConnecting</code></A>(<code>boolean</code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+<b>Now deprecated</b>.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouteDescriptor.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouteDescriptor.html
new file mode 100644
index 0000000..381eb20
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouteDescriptor.html
@@ -0,0 +1,161 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.media.MediaRouteDescriptor
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.media.<A HREF="../../../../reference/android/support/v7/media/MediaRouteDescriptor.html" target="_top"><font size="+2"><code>MediaRouteDescriptor</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouteDescriptor.getConnectionState_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouteDescriptor.html#getConnectionState()" target="_top"><code>getConnectionState</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouteDescriptor.getDeviceType_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouteDescriptor.html#getDeviceType()" target="_top"><code>getDeviceType</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouteDescriptor.getGroupMemberIds_added()"></A>
+  <nobr><code>List&lt;String&gt;</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouteDescriptor.html#getGroupMemberIds()" target="_top"><code>getGroupMemberIds</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouteDescriptor.getIconUri_added()"></A>
+  <nobr><code>Uri</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouteDescriptor.html#getIconUri()" target="_top"><code>getIconUri</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouteDescriptor.isConnecting_changed()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouteDescriptor.html#isConnecting()" target="_top"><code>isConnecting</code></A>()  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+<b>Now deprecated</b>.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouter.RouteInfo.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouter.RouteInfo.html
new file mode 100644
index 0000000..239341d
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.media.MediaRouter.RouteInfo.html
@@ -0,0 +1,180 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.media.MediaRouter.RouteInfo
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.media.<A HREF="../../../../reference/android/support/v7/media/MediaRouter.RouteInfo.html" target="_top"><font size="+2"><code>MediaRouter.RouteInfo</code></font></A>
+</H2>
+<p>Change from final to non-final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouter.RouteInfo.getConnectionState_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouter.RouteInfo.html#getConnectionState()" target="_top"><code>getConnectionState</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouter.RouteInfo.getDeviceType_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouter.RouteInfo.html#getDeviceType()" target="_top"><code>getDeviceType</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouter.RouteInfo.getIconUri_added()"></A>
+  <nobr><code>Uri</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouter.RouteInfo.html#getIconUri()" target="_top"><code>getIconUri</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouter.RouteInfo.CONNECTION_STATE_CONNECTED"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouter.RouteInfo.html#CONNECTION_STATE_CONNECTED" target="_top"><code>CONNECTION_STATE_CONNECTED</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouter.RouteInfo.CONNECTION_STATE_CONNECTING"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouter.RouteInfo.html#CONNECTION_STATE_CONNECTING" target="_top"><code>CONNECTION_STATE_CONNECTING</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouter.RouteInfo.CONNECTION_STATE_DISCONNECTED"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouter.RouteInfo.html#CONNECTION_STATE_DISCONNECTED" target="_top"><code>CONNECTION_STATE_DISCONNECTED</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouter.RouteInfo.DEVICE_TYPE_SPEAKER"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouter.RouteInfo.html#DEVICE_TYPE_SPEAKER" target="_top"><code>DEVICE_TYPE_SPEAKER</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouter.RouteInfo.DEVICE_TYPE_TV"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouter.RouteInfo.html#DEVICE_TYPE_TV" target="_top"><code>DEVICE_TYPE_TV</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.html b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.html
new file mode 100644
index 0000000..05b65ff
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.preference.EditTextPreferenceDialogFragmentCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.preference.<A HREF="../../../../reference/android/support/v7/preference/EditTextPreferenceDialogFragmentCompat.html" target="_top"><font size="+2"><code>EditTextPreferenceDialogFragmentCompat</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.onAddEditTextToDialogView_removed(android.view.View, android.widget.EditText)"></A>
+  <nobr><code>void</code>&nbsp;onAddEditTextToDialogView(<code>View,</nobr> EditText<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/changes-summary.html b/docs/html/sdk/support_api_diff/23.1.0/changes/changes-summary.html
new file mode 100644
index 0000000..728ade1
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/changes-summary.html
@@ -0,0 +1,246 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Support&nbsp;Library&nbsp;API&nbsp;Differences&nbsp;Report
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<body class="gc-documentation">
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+    <div id="docTitleContainer">
+    <h1>Support&nbsp;Library&nbsp;API&nbsp;Differences&nbsp;Report</h1>
+<p>This report details the changes in the Android Support Library API between two versions. 
+It shows additions, modifications, and removals for packages, classes, methods, and fields. 
+The report also includes general statistics that characterize the extent and type of the differences.</p>
+<p>This report is based a comparison of the Support Library API specifications 
+whose version level identifiers are given in the upper-right corner of this page. It compares a 
+newer "to" version's API to an older "from" version's API, noting all changes relative to the 
+older API. So, for example, API elements marked as removed are no longer present in the "to" 
+API specification.</p>
+<p>To navigate the report, use the "Select a Diffs Index" and "Filter the Index" 
+controls on the left. The report uses text formatting to indicate <em>interface names</em>, 
+<a href= ><code>links to reference documentation</code></a>, and <a href= >links to change 
+description</a>. The statistics are accessible from the "Statistics" link in the upper-right corner.</p>
+<p>For more information about the Android API and SDK, 
+see the <a href="http://developer.android.com/index.html" target="_top">Android Developers site</a>.</p>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Packages" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Packages</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs"></A>
+  <nobr><A HREF="pkg_android.support.customtabs.html">android.support.customtabs</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget"></A>
+  <nobr><A HREF="pkg_android.support.design.widget.html">android.support.design.widget</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.percent"></A>
+  <nobr><A HREF="pkg_android.support.percent.html">android.support.percent</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v14.preference"></A>
+  <nobr><A HREF="pkg_android.support.v14.preference.html">android.support.v14.preference</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app"></A>
+  <nobr><A HREF="pkg_android.support.v17.leanback.app.html">android.support.v17.leanback.app</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget"></A>
+  <nobr><A HREF="pkg_android.support.v17.leanback.widget.html">android.support.v17.leanback.widget</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.app"></A>
+  <nobr><A HREF="pkg_android.support.v4.app.html">android.support.v4.app</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.content"></A>
+  <nobr><A HREF="pkg_android.support.v4.content.html">android.support.v4.content</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.content.res"></A>
+  <nobr><A HREF="pkg_android.support.v4.content.res.html">android.support.v4.content.res</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.media.session"></A>
+  <nobr><A HREF="pkg_android.support.v4.media.session.html">android.support.v4.media.session</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view"></A>
+  <nobr><A HREF="pkg_android.support.v4.view.html">android.support.v4.view</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.widget"></A>
+  <nobr><A HREF="pkg_android.support.v4.widget.html">android.support.v4.widget</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat"></A>
+  <nobr><A HREF="pkg_android.support.v7.appcompat.html">android.support.v7.appcompat</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.graphics"></A>
+  <nobr><A HREF="pkg_android.support.v7.graphics.html">android.support.v7.graphics</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.graphics.drawable"></A>
+  <nobr><A HREF="pkg_android.support.v7.graphics.drawable.html">android.support.v7.graphics.drawable</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media"></A>
+  <nobr><A HREF="pkg_android.support.v7.media.html">android.support.v7.media</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.preference"></A>
+  <nobr><A HREF="pkg_android.support.v7.preference.html">android.support.v7.preference</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- End of API section -->
+<!-- Start of packages section -->
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_additions.html b/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_additions.html
new file mode 100644
index 0000000..c0022c9
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_additions.html
@@ -0,0 +1,211 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Class Additions Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Classes" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="classes_index_all.html" class="staysblack">All Classes</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<b>Additions</b>
+  <br>
+<A HREF="classes_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.design.widget.html#AppBarLayout.Behavior.DragCallback" class="hiddenlink" target="rightframe"><b>AppBarLayout.Behavior.DragCallback</b></A><br>
+<A NAME="B"></A>
+<br><font size="+2">B</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.v4.app.html#BundleCompat" class="hiddenlink" target="rightframe"><b>BundleCompat</b></A><br>
+<A NAME="F"></A>
+<br><font size="+2">F</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.design.widget.html#FloatingActionButton.OnVisibilityChangedListener" class="hiddenlink" target="rightframe"><b>FloatingActionButton.OnVisibilityChangedListener</b></A><br>
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.v17.leanback.widget.html#GuidedActionEditText" class="hiddenlink" target="rightframe"><b>GuidedActionEditText</b></A><br>
+<A HREF="pkg_android.support.v17.leanback.app.html#GuidedStepFragment.GuidedStepBackgroundFragment" class="hiddenlink" target="rightframe"><b>GuidedStepFragment.GuidedStepBackgroundFragment</b></A><br>
+<A HREF="pkg_android.support.v17.leanback.app.html#GuidedStepSupportFragment" class="hiddenlink" target="rightframe"><b>GuidedStepSupportFragment</b></A><br>
+<A HREF="pkg_android.support.v17.leanback.app.html#GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment" class="hiddenlink" target="rightframe"><b>GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment</b></A><br>
+<A NAME="H"></A>
+<br><font size="+2">H</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.design.widget.html#HeaderBehavior" class="hiddenlink" target="rightframe"><b>HeaderBehavior</b></A><br>
+<A HREF="pkg_android.support.design.widget.html#HeaderScrollingViewBehavior" class="hiddenlink" target="rightframe"><b>HeaderScrollingViewBehavior</b></A><br>
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.v17.leanback.widget.html#ImeKeyMonitor" class="hiddenlink" target="rightframe"><b><i>ImeKeyMonitor</i></b></A><br>
+<A HREF="pkg_android.support.v17.leanback.widget.html#ImeKeyMonitor.ImeKeyListener" class="hiddenlink" target="rightframe"><b><i>ImeKeyMonitor.ImeKeyListener</i></b></A><br>
+<A HREF="pkg_android.support.v17.leanback.widget.html#ItemBridgeAdapterShadowOverlayWrapper" class="hiddenlink" target="rightframe"><b>ItemBridgeAdapterShadowOverlayWrapper</b></A><br>
+<A NAME="M"></A>
+<br><font size="+2">M</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.v4.media.session.html#MediaButtonReceiver" class="hiddenlink" target="rightframe"><b>MediaButtonReceiver</b></A><br>
+<A HREF="pkg_android.support.v7.media.html#MediaRouter.RouteGroup" class="hiddenlink" target="rightframe"><b>MediaRouter.RouteGroup</b></A><br>
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.v4.widget.html#NestedScrollView.OnScrollChangeListener" class="hiddenlink" target="rightframe"><b><i>NestedScrollView.OnScrollChangeListener</i></b></A><br>
+<A NAME="P"></A>
+<br><font size="+2">P</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.v4.content.html#ParallelExecutorCompat" class="hiddenlink" target="rightframe"><b>ParallelExecutorCompat</b></A><br>
+<A HREF="pkg_android.support.v17.leanback.app.html#PlaybackControlSupportGlue" class="hiddenlink" target="rightframe"><b>PlaybackControlSupportGlue</b></A><br>
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.v17.leanback.widget.html#ShadowOverlayHelper" class="hiddenlink" target="rightframe"><b>ShadowOverlayHelper</b></A><br>
+<A HREF="pkg_android.support.v17.leanback.widget.html#ShadowOverlayHelper.Builder" class="hiddenlink" target="rightframe"><b>ShadowOverlayHelper.Builder</b></A><br>
+<A HREF="pkg_android.support.v17.leanback.widget.html#ShadowOverlayHelper.Options" class="hiddenlink" target="rightframe"><b>ShadowOverlayHelper.Options</b></A><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_all.html b/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_all.html
new file mode 100644
index 0000000..05f83b8
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_all.html
@@ -0,0 +1,485 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Class Differences Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Classes" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<b>Classes</b>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="classes_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="classes_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.design.widget.AppBarLayout.Behavior.html" class="hiddenlink" target="rightframe">AppBarLayout.Behavior</A><br>
+<A HREF="pkg_android.support.design.widget.html#AppBarLayout.Behavior.DragCallback" class="hiddenlink" target="rightframe"><b>AppBarLayout.Behavior.DragCallback</b></A><br>
+<A HREF="android.support.design.widget.AppBarLayout.Behavior.SavedState.html" class="hiddenlink" target="rightframe">AppBarLayout.Behavior.SavedState</A><br>
+<A HREF="android.support.design.widget.AppBarLayout.LayoutParams.html" class="hiddenlink" target="rightframe">AppBarLayout.LayoutParams</A><br>
+<A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html" class="hiddenlink" target="rightframe">AppBarLayout.ScrollingViewBehavior</A><br>
+<A NAME="B"></A>
+<br><font size="+2">B</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.app.BrowseFragment.html" class="hiddenlink" target="rightframe">BrowseFragment</A><br>
+<A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html" class="hiddenlink" target="rightframe">BrowseSupportFragment</A><br>
+<A HREF="pkg_android.support.v4.app.html#BundleCompat" class="hiddenlink" target="rightframe"><b>BundleCompat</b></A><br>
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.design.widget.CollapsingToolbarLayout.html" class="hiddenlink" target="rightframe">CollapsingToolbarLayout</A><br>
+<A HREF="android.support.design.widget.CoordinatorLayout.SavedState.html" class="hiddenlink" target="rightframe">CoordinatorLayout.SavedState</A><br>
+<A HREF="android.support.customtabs.CustomTabsCallback.html" class="hiddenlink" target="rightframe">CustomTabsCallback</A><br>
+<A HREF="android.support.customtabs.CustomTabsIntent.html" class="hiddenlink" target="rightframe">CustomTabsIntent</A><br>
+<A HREF="android.support.customtabs.CustomTabsIntent.Builder.html" class="hiddenlink" target="rightframe">CustomTabsIntent.Builder</A><br>
+<A HREF="android.support.customtabs.CustomTabsService.html" class="hiddenlink" target="rightframe">CustomTabsService</A><br>
+<A HREF="android.support.customtabs.CustomTabsSession.html" class="hiddenlink" target="rightframe">CustomTabsSession</A><br>
+<A HREF="android.support.customtabs.CustomTabsSessionToken.html" class="hiddenlink" target="rightframe">CustomTabsSessionToken</A><br>
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.app.DetailsFragment.html" class="hiddenlink" target="rightframe">DetailsFragment</A><br>
+<A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html" class="hiddenlink" target="rightframe">DetailsSupportFragment</A><br>
+<A HREF="android.support.v7.graphics.drawable.DrawerArrowDrawable.html" class="hiddenlink" target="rightframe">DrawerArrowDrawable</A><br>
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v14.preference.EditTextPreferenceDialogFragment.html" class="hiddenlink" target="rightframe">EditTextPreferenceDialogFragment</A><br>
+<A HREF="android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.html" class="hiddenlink" target="rightframe">EditTextPreferenceDialogFragmentCompat</A><br>
+<A NAME="F"></A>
+<br><font size="+2">F</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.design.widget.FloatingActionButton.html" class="hiddenlink" target="rightframe">FloatingActionButton</A><br>
+<A HREF="android.support.design.widget.FloatingActionButton.Behavior.html" class="hiddenlink" target="rightframe">FloatingActionButton.Behavior</A><br>
+<A HREF="pkg_android.support.design.widget.html#FloatingActionButton.OnVisibilityChangedListener" class="hiddenlink" target="rightframe"><b>FloatingActionButton.OnVisibilityChangedListener</b></A><br>
+<A HREF="android.support.v4.app.FragmentActivity.html" class="hiddenlink" target="rightframe">FragmentActivity</A><br>
+<A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html" class="hiddenlink" target="rightframe"><i>FragmentAnimationProvider</i></A><br>
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.widget.GuidanceStylist.html" class="hiddenlink" target="rightframe">GuidanceStylist</A><br>
+<A HREF="android.support.v17.leanback.widget.GuidedAction.html" class="hiddenlink" target="rightframe">GuidedAction</A><br>
+<A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html" class="hiddenlink" target="rightframe">GuidedAction.Builder</A><br>
+<A HREF="pkg_android.support.v17.leanback.widget.html#GuidedActionEditText" class="hiddenlink" target="rightframe"><b>GuidedActionEditText</b></A><br>
+<A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html" class="hiddenlink" target="rightframe">GuidedActionsStylist</A><br>
+<A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html" class="hiddenlink" target="rightframe">GuidedActionsStylist.ViewHolder</A><br>
+<A HREF="android.support.v17.leanback.app.GuidedStepFragment.html" class="hiddenlink" target="rightframe">GuidedStepFragment</A><br>
+<A HREF="pkg_android.support.v17.leanback.app.html#GuidedStepFragment.GuidedStepBackgroundFragment" class="hiddenlink" target="rightframe"><b>GuidedStepFragment.GuidedStepBackgroundFragment</b></A><br>
+<A HREF="pkg_android.support.v17.leanback.app.html#GuidedStepSupportFragment" class="hiddenlink" target="rightframe"><b>GuidedStepSupportFragment</b></A><br>
+<A HREF="pkg_android.support.v17.leanback.app.html#GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment" class="hiddenlink" target="rightframe"><b>GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment</b></A><br>
+<A NAME="H"></A>
+<br><font size="+2">H</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.design.widget.html#HeaderBehavior" class="hiddenlink" target="rightframe"><b>HeaderBehavior</b></A><br>
+<A HREF="pkg_android.support.design.widget.html#HeaderScrollingViewBehavior" class="hiddenlink" target="rightframe"><b>HeaderScrollingViewBehavior</b></A><br>
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.widget.ImageCardView.html" class="hiddenlink" target="rightframe">ImageCardView</A><br>
+<A HREF="pkg_android.support.v17.leanback.widget.html#ImeKeyMonitor" class="hiddenlink" target="rightframe"><b><i>ImeKeyMonitor</i></b></A><br>
+<A HREF="pkg_android.support.v17.leanback.widget.html#ImeKeyMonitor.ImeKeyListener" class="hiddenlink" target="rightframe"><b><i>ImeKeyMonitor.ImeKeyListener</i></b></A><br>
+<A HREF="pkg_android.support.v17.leanback.widget.html#ItemBridgeAdapterShadowOverlayWrapper" class="hiddenlink" target="rightframe"><b>ItemBridgeAdapterShadowOverlayWrapper</b></A><br>
+<A NAME="L"></A>
+<br><font size="+2">L</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.widget.ListRowPresenter.html" class="hiddenlink" target="rightframe">ListRowPresenter</A><br>
+<A NAME="M"></A>
+<br><font size="+2">M</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.v4.media.session.html#MediaButtonReceiver" class="hiddenlink" target="rightframe"><b>MediaButtonReceiver</b></A><br>
+<A HREF="android.support.v7.media.MediaRouteDescriptor.html" class="hiddenlink" target="rightframe">MediaRouteDescriptor</A><br>
+<A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html" class="hiddenlink" target="rightframe">MediaRouteDescriptor.Builder</A><br>
+<A HREF="pkg_android.support.v7.media.html#MediaRouter.RouteGroup" class="hiddenlink" target="rightframe"><b>MediaRouter.RouteGroup</b></A><br>
+<A HREF="android.support.v7.media.MediaRouter.RouteInfo.html" class="hiddenlink" target="rightframe">MediaRouter.RouteInfo</A><br>
+<A HREF="android.support.v4.media.session.MediaSessionCompat.html" class="hiddenlink" target="rightframe">MediaSessionCompat</A><br>
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.design.widget.NavigationView.SavedState.html" class="hiddenlink" target="rightframe">NavigationView.SavedState</A><br>
+<A HREF="android.support.v4.widget.NestedScrollView.html" class="hiddenlink" target="rightframe">NestedScrollView</A><br>
+<A HREF="pkg_android.support.v4.widget.html#NestedScrollView.OnScrollChangeListener" class="hiddenlink" target="rightframe"><b><i>NestedScrollView.OnScrollChangeListener</i></b></A><br>
+<A NAME="P"></A>
+<br><font size="+2">P</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v7.graphics.Palette.Builder.html" class="hiddenlink" target="rightframe">Palette.Builder</A><br>
+<A HREF="pkg_android.support.v4.content.html#ParallelExecutorCompat" class="hiddenlink" target="rightframe"><b>ParallelExecutorCompat</b></A><br>
+<A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html" class="hiddenlink" target="rightframe">PercentLayoutHelper.PercentLayoutInfo</A><br>
+<A HREF="pkg_android.support.v17.leanback.app.html#PlaybackControlSupportGlue" class="hiddenlink" target="rightframe"><b>PlaybackControlSupportGlue</b></A><br>
+<A HREF="android.support.v17.leanback.app.PlaybackOverlayFragment.html" class="hiddenlink" target="rightframe">PlaybackOverlayFragment</A><br>
+<A HREF="android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html" class="hiddenlink" target="rightframe">PlaybackOverlaySupportFragment</A><br>
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v7.appcompat.R.attr.html" class="hiddenlink" target="rightframe">R.attr</A><br>
+<A HREF="android.support.v7.appcompat.R.bool.html" class="hiddenlink" target="rightframe">R.bool</A><br>
+<A HREF="android.support.v7.appcompat.R.dimen.html" class="hiddenlink" target="rightframe">R.dimen</A><br>
+<A HREF="android.support.v7.appcompat.R.drawable.html" class="hiddenlink" target="rightframe">R.drawable</A><br>
+<A HREF="android.support.v7.appcompat.R.id.html" class="hiddenlink" target="rightframe">R.id</A><br>
+<A HREF="android.support.v7.appcompat.R.layout.html" class="hiddenlink" target="rightframe">R.layout</A><br>
+<A HREF="android.support.v7.appcompat.R.string.html" class="hiddenlink" target="rightframe">R.string</A><br>
+<A HREF="android.support.v7.appcompat.R.style.html" class="hiddenlink" target="rightframe">R.style</A><br>
+<A HREF="android.support.v7.appcompat.R.styleable.html" class="hiddenlink" target="rightframe">R.styleable</A><br>
+<A HREF="android.support.v4.content.res.ResourcesCompat.html" class="hiddenlink" target="rightframe">ResourcesCompat</A><br>
+<A HREF="android.support.v17.leanback.widget.RowPresenter.html" class="hiddenlink" target="rightframe">RowPresenter</A><br>
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.widget.ScrollerCompat.html" class="hiddenlink" target="rightframe">ScrollerCompat</A><br>
+<A HREF="android.support.v17.leanback.widget.SearchBar.html" class="hiddenlink" target="rightframe">SearchBar</A><br>
+<A HREF="android.support.v17.leanback.app.SearchFragment.html" class="hiddenlink" target="rightframe">SearchFragment</A><br>
+<A HREF="android.support.v17.leanback.app.SearchSupportFragment.html" class="hiddenlink" target="rightframe">SearchSupportFragment</A><br>
+<A HREF="android.support.v17.leanback.widget.ShadowOverlayContainer.html" class="hiddenlink" target="rightframe">ShadowOverlayContainer</A><br>
+<A HREF="pkg_android.support.v17.leanback.widget.html#ShadowOverlayHelper" class="hiddenlink" target="rightframe"><b>ShadowOverlayHelper</b></A><br>
+<A HREF="pkg_android.support.v17.leanback.widget.html#ShadowOverlayHelper.Builder" class="hiddenlink" target="rightframe"><b>ShadowOverlayHelper.Builder</b></A><br>
+<A HREF="pkg_android.support.v17.leanback.widget.html#ShadowOverlayHelper.Options" class="hiddenlink" target="rightframe"><b>ShadowOverlayHelper.Options</b></A><br>
+<A HREF="android.support.design.widget.Snackbar.html" class="hiddenlink" target="rightframe">Snackbar</A><br>
+<A NAME="T"></A>
+<br><font size="+2">T</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.design.widget.TextInputLayout.html" class="hiddenlink" target="rightframe">TextInputLayout</A><br>
+<A HREF="android.support.v4.widget.TextViewCompat.html" class="hiddenlink" target="rightframe">TextViewCompat</A><br>
+<A NAME="V"></A>
+<br><font size="+2">V</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.app.VerticalGridFragment.html" class="hiddenlink" target="rightframe">VerticalGridFragment</A><br>
+<A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html" class="hiddenlink" target="rightframe">VerticalGridPresenter</A><br>
+<A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html" class="hiddenlink" target="rightframe">VerticalGridSupportFragment</A><br>
+<A HREF="android.support.v4.view.ViewCompat.html" class="hiddenlink" target="rightframe">ViewCompat</A><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_changes.html b/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_changes.html
new file mode 100644
index 0000000..b1ee972
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_changes.html
@@ -0,0 +1,429 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Class Changes Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Classes" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="classes_index_all.html" class="staysblack">All Classes</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="classes_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<b>Changes</b>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.design.widget.AppBarLayout.Behavior.html" class="hiddenlink" target="rightframe">AppBarLayout.Behavior</A><br>
+<A HREF="android.support.design.widget.AppBarLayout.Behavior.SavedState.html" class="hiddenlink" target="rightframe">AppBarLayout.Behavior.SavedState</A><br>
+<A HREF="android.support.design.widget.AppBarLayout.LayoutParams.html" class="hiddenlink" target="rightframe">AppBarLayout.LayoutParams</A><br>
+<A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html" class="hiddenlink" target="rightframe">AppBarLayout.ScrollingViewBehavior</A><br>
+<A NAME="B"></A>
+<br><font size="+2">B</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.app.BrowseFragment.html" class="hiddenlink" target="rightframe">BrowseFragment</A><br>
+<A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html" class="hiddenlink" target="rightframe">BrowseSupportFragment</A><br>
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.design.widget.CollapsingToolbarLayout.html" class="hiddenlink" target="rightframe">CollapsingToolbarLayout</A><br>
+<A HREF="android.support.design.widget.CoordinatorLayout.SavedState.html" class="hiddenlink" target="rightframe">CoordinatorLayout.SavedState</A><br>
+<A HREF="android.support.customtabs.CustomTabsCallback.html" class="hiddenlink" target="rightframe">CustomTabsCallback</A><br>
+<A HREF="android.support.customtabs.CustomTabsIntent.html" class="hiddenlink" target="rightframe">CustomTabsIntent</A><br>
+<A HREF="android.support.customtabs.CustomTabsIntent.Builder.html" class="hiddenlink" target="rightframe">CustomTabsIntent.Builder</A><br>
+<A HREF="android.support.customtabs.CustomTabsService.html" class="hiddenlink" target="rightframe">CustomTabsService</A><br>
+<A HREF="android.support.customtabs.CustomTabsSession.html" class="hiddenlink" target="rightframe">CustomTabsSession</A><br>
+<A HREF="android.support.customtabs.CustomTabsSessionToken.html" class="hiddenlink" target="rightframe">CustomTabsSessionToken</A><br>
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.app.DetailsFragment.html" class="hiddenlink" target="rightframe">DetailsFragment</A><br>
+<A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html" class="hiddenlink" target="rightframe">DetailsSupportFragment</A><br>
+<A HREF="android.support.v7.graphics.drawable.DrawerArrowDrawable.html" class="hiddenlink" target="rightframe">DrawerArrowDrawable</A><br>
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v14.preference.EditTextPreferenceDialogFragment.html" class="hiddenlink" target="rightframe">EditTextPreferenceDialogFragment</A><br>
+<A HREF="android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.html" class="hiddenlink" target="rightframe">EditTextPreferenceDialogFragmentCompat</A><br>
+<A NAME="F"></A>
+<br><font size="+2">F</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.design.widget.FloatingActionButton.html" class="hiddenlink" target="rightframe">FloatingActionButton</A><br>
+<A HREF="android.support.design.widget.FloatingActionButton.Behavior.html" class="hiddenlink" target="rightframe">FloatingActionButton.Behavior</A><br>
+<A HREF="android.support.v4.app.FragmentActivity.html" class="hiddenlink" target="rightframe">FragmentActivity</A><br>
+<A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html" class="hiddenlink" target="rightframe"><i>FragmentAnimationProvider</i></A><br>
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.widget.GuidanceStylist.html" class="hiddenlink" target="rightframe">GuidanceStylist</A><br>
+<A HREF="android.support.v17.leanback.widget.GuidedAction.html" class="hiddenlink" target="rightframe">GuidedAction</A><br>
+<A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html" class="hiddenlink" target="rightframe">GuidedAction.Builder</A><br>
+<A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html" class="hiddenlink" target="rightframe">GuidedActionsStylist</A><br>
+<A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html" class="hiddenlink" target="rightframe">GuidedActionsStylist.ViewHolder</A><br>
+<A HREF="android.support.v17.leanback.app.GuidedStepFragment.html" class="hiddenlink" target="rightframe">GuidedStepFragment</A><br>
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.widget.ImageCardView.html" class="hiddenlink" target="rightframe">ImageCardView</A><br>
+<A NAME="L"></A>
+<br><font size="+2">L</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.widget.ListRowPresenter.html" class="hiddenlink" target="rightframe">ListRowPresenter</A><br>
+<A NAME="M"></A>
+<br><font size="+2">M</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v7.media.MediaRouteDescriptor.html" class="hiddenlink" target="rightframe">MediaRouteDescriptor</A><br>
+<A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html" class="hiddenlink" target="rightframe">MediaRouteDescriptor.Builder</A><br>
+<A HREF="android.support.v7.media.MediaRouter.RouteInfo.html" class="hiddenlink" target="rightframe">MediaRouter.RouteInfo</A><br>
+<A HREF="android.support.v4.media.session.MediaSessionCompat.html" class="hiddenlink" target="rightframe">MediaSessionCompat</A><br>
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.design.widget.NavigationView.SavedState.html" class="hiddenlink" target="rightframe">NavigationView.SavedState</A><br>
+<A HREF="android.support.v4.widget.NestedScrollView.html" class="hiddenlink" target="rightframe">NestedScrollView</A><br>
+<A NAME="P"></A>
+<br><font size="+2">P</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v7.graphics.Palette.Builder.html" class="hiddenlink" target="rightframe">Palette.Builder</A><br>
+<A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html" class="hiddenlink" target="rightframe">PercentLayoutHelper.PercentLayoutInfo</A><br>
+<A HREF="android.support.v17.leanback.app.PlaybackOverlayFragment.html" class="hiddenlink" target="rightframe">PlaybackOverlayFragment</A><br>
+<A HREF="android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html" class="hiddenlink" target="rightframe">PlaybackOverlaySupportFragment</A><br>
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v7.appcompat.R.attr.html" class="hiddenlink" target="rightframe">R.attr</A><br>
+<A HREF="android.support.v7.appcompat.R.bool.html" class="hiddenlink" target="rightframe">R.bool</A><br>
+<A HREF="android.support.v7.appcompat.R.dimen.html" class="hiddenlink" target="rightframe">R.dimen</A><br>
+<A HREF="android.support.v7.appcompat.R.drawable.html" class="hiddenlink" target="rightframe">R.drawable</A><br>
+<A HREF="android.support.v7.appcompat.R.id.html" class="hiddenlink" target="rightframe">R.id</A><br>
+<A HREF="android.support.v7.appcompat.R.layout.html" class="hiddenlink" target="rightframe">R.layout</A><br>
+<A HREF="android.support.v7.appcompat.R.string.html" class="hiddenlink" target="rightframe">R.string</A><br>
+<A HREF="android.support.v7.appcompat.R.style.html" class="hiddenlink" target="rightframe">R.style</A><br>
+<A HREF="android.support.v7.appcompat.R.styleable.html" class="hiddenlink" target="rightframe">R.styleable</A><br>
+<A HREF="android.support.v4.content.res.ResourcesCompat.html" class="hiddenlink" target="rightframe">ResourcesCompat</A><br>
+<A HREF="android.support.v17.leanback.widget.RowPresenter.html" class="hiddenlink" target="rightframe">RowPresenter</A><br>
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.widget.ScrollerCompat.html" class="hiddenlink" target="rightframe">ScrollerCompat</A><br>
+<A HREF="android.support.v17.leanback.widget.SearchBar.html" class="hiddenlink" target="rightframe">SearchBar</A><br>
+<A HREF="android.support.v17.leanback.app.SearchFragment.html" class="hiddenlink" target="rightframe">SearchFragment</A><br>
+<A HREF="android.support.v17.leanback.app.SearchSupportFragment.html" class="hiddenlink" target="rightframe">SearchSupportFragment</A><br>
+<A HREF="android.support.v17.leanback.widget.ShadowOverlayContainer.html" class="hiddenlink" target="rightframe">ShadowOverlayContainer</A><br>
+<A HREF="android.support.design.widget.Snackbar.html" class="hiddenlink" target="rightframe">Snackbar</A><br>
+<A NAME="T"></A>
+<br><font size="+2">T</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.design.widget.TextInputLayout.html" class="hiddenlink" target="rightframe">TextInputLayout</A><br>
+<A HREF="android.support.v4.widget.TextViewCompat.html" class="hiddenlink" target="rightframe">TextViewCompat</A><br>
+<A NAME="V"></A>
+<br><font size="+2">V</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.app.VerticalGridFragment.html" class="hiddenlink" target="rightframe">VerticalGridFragment</A><br>
+<A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html" class="hiddenlink" target="rightframe">VerticalGridPresenter</A><br>
+<A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html" class="hiddenlink" target="rightframe">VerticalGridSupportFragment</A><br>
+<A HREF="android.support.v4.view.ViewCompat.html" class="hiddenlink" target="rightframe">ViewCompat</A><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_removals.html b/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_removals.html
new file mode 100644
index 0000000..e6da73f
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/classes_index_removals.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Class Removals Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Classes" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="classes_index_all.html" class="staysblack">All Classes</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<A HREF="classes_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="classes_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_additions.html b/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_additions.html
new file mode 100644
index 0000000..3bf8178
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_additions.html
@@ -0,0 +1,111 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Constructor Additions Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Constructors" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="constructors_index_all.html" class="staysblack">All Constructors</a>
+  <br>
+<A HREF="constructors_index_removals.html" xclass="hiddenlink">Removals</A>
+  <br>
+<b>Additions</b>
+  <br>
+<font color="#999999">Changes</font>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.SavedState.html#android.support.design.widget.AppBarLayout.Behavior.SavedState.ctor_added(android.os.Parcel, java.lang.ClassLoader)" class="hiddenlink" target="rightframe"><b>AppBarLayout.Behavior.SavedState</b>
+(<code>Parcel, ClassLoader</code>)</A></nobr>&nbsp;constructor<br>
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.CoordinatorLayout.SavedState.html#android.support.design.widget.CoordinatorLayout.SavedState.ctor_added(android.os.Parcel, java.lang.ClassLoader)" class="hiddenlink" target="rightframe"><b>CoordinatorLayout.SavedState</b>
+(<code>Parcel, ClassLoader</code>)</A></nobr>&nbsp;constructor<br>
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.ctor_added(android.content.Context, int)" class="hiddenlink" target="rightframe"><b>ImageCardView</b>
+(<code>Context, int</code>)</A></nobr>&nbsp;constructor<br>
+<A NAME="M"></A>
+<br><font size="+2">M</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.media.session.MediaSessionCompat.html#android.support.v4.media.session.MediaSessionCompat.ctor_added(android.content.Context, java.lang.String)" class="hiddenlink" target="rightframe"><b>MediaSessionCompat</b>
+(<code>Context, String</code>)</A></nobr>&nbsp;constructor<br>
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.NavigationView.SavedState.html#android.support.design.widget.NavigationView.SavedState.ctor_added(android.os.Parcel, java.lang.ClassLoader)" class="hiddenlink" target="rightframe"><b>NavigationView.SavedState</b>
+(<code>Parcel, ClassLoader</code>)</A></nobr>&nbsp;constructor<br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_all.html b/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_all.html
new file mode 100644
index 0000000..546eae8
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_all.html
@@ -0,0 +1,120 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Constructor Differences Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Constructors" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<b>Constructors</b>
+  <br>
+<A HREF="constructors_index_removals.html" xclass="hiddenlink">Removals</A>
+  <br>
+<A HREF="constructors_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<font color="#999999">Changes</font>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>AppBarLayout.Behavior.SavedState</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.SavedState.html#android.support.design.widget.AppBarLayout.Behavior.SavedState.ctor_removed(android.os.Parcel)" class="hiddenlink" target="rightframe"><strike>AppBarLayout.Behavior.SavedState</strike>
+(<code>Parcel</code>)</A></nobr>&nbsp;constructor<br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.SavedState.html#android.support.design.widget.AppBarLayout.Behavior.SavedState.ctor_added(android.os.Parcel, java.lang.ClassLoader)" class="hiddenlink" target="rightframe"><b>AppBarLayout.Behavior.SavedState</b>
+(<code>Parcel, ClassLoader</code>)</A></nobr>&nbsp;constructor<br>
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>CoordinatorLayout.SavedState</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.CoordinatorLayout.SavedState.html#android.support.design.widget.CoordinatorLayout.SavedState.ctor_removed(android.os.Parcel)" class="hiddenlink" target="rightframe"><strike>CoordinatorLayout.SavedState</strike>
+(<code>Parcel</code>)</A></nobr>&nbsp;constructor<br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.CoordinatorLayout.SavedState.html#android.support.design.widget.CoordinatorLayout.SavedState.ctor_added(android.os.Parcel, java.lang.ClassLoader)" class="hiddenlink" target="rightframe"><b>CoordinatorLayout.SavedState</b>
+(<code>Parcel, ClassLoader</code>)</A></nobr>&nbsp;constructor<br>
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.ctor_added(android.content.Context, int)" class="hiddenlink" target="rightframe"><b>ImageCardView</b>
+(<code>Context, int</code>)</A></nobr>&nbsp;constructor<br>
+<A NAME="M"></A>
+<br><font size="+2">M</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.media.session.MediaSessionCompat.html#android.support.v4.media.session.MediaSessionCompat.ctor_added(android.content.Context, java.lang.String)" class="hiddenlink" target="rightframe"><b>MediaSessionCompat</b>
+(<code>Context, String</code>)</A></nobr>&nbsp;constructor<br>
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>NavigationView.SavedState</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.NavigationView.SavedState.html#android.support.design.widget.NavigationView.SavedState.ctor_removed(android.os.Parcel)" class="hiddenlink" target="rightframe"><strike>NavigationView.SavedState</strike>
+(<code>Parcel</code>)</A></nobr>&nbsp;constructor<br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.NavigationView.SavedState.html#android.support.design.widget.NavigationView.SavedState.ctor_added(android.os.Parcel, java.lang.ClassLoader)" class="hiddenlink" target="rightframe"><b>NavigationView.SavedState</b>
+(<code>Parcel, ClassLoader</code>)</A></nobr>&nbsp;constructor<br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_changes.html b/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_changes.html
new file mode 100644
index 0000000..52c8b49
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_changes.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Constructor Changes Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Constructors" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="constructors_index_all.html" class="staysblack">All Constructors</a>
+  <br>
+<A HREF="constructors_index_removals.html" xclass="hiddenlink">Removals</A>
+  <br>
+<A HREF="constructors_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<font color="#999999">Changes</font>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_removals.html b/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_removals.html
new file mode 100644
index 0000000..337274d
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/constructors_index_removals.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Constructor Removals Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Constructors" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="constructors_index_all.html" class="staysblack">All Constructors</a>
+  <br>
+<b>Removals</b>
+  <br>
+<A HREF="constructors_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<font color="#999999">Changes</font>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.SavedState.html#android.support.design.widget.AppBarLayout.Behavior.SavedState.ctor_removed(android.os.Parcel)" class="hiddenlink" target="rightframe"><strike>AppBarLayout.Behavior.SavedState</strike>
+(<code>Parcel</code>)</A></nobr>&nbsp;constructor<br>
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.CoordinatorLayout.SavedState.html#android.support.design.widget.CoordinatorLayout.SavedState.ctor_removed(android.os.Parcel)" class="hiddenlink" target="rightframe"><strike>CoordinatorLayout.SavedState</strike>
+(<code>Parcel</code>)</A></nobr>&nbsp;constructor<br>
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.NavigationView.SavedState.html#android.support.design.widget.NavigationView.SavedState.ctor_removed(android.os.Parcel)" class="hiddenlink" target="rightframe"><strike>NavigationView.SavedState</strike>
+(<code>Parcel</code>)</A></nobr>&nbsp;constructor<br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_additions.html b/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_additions.html
new file mode 100644
index 0000000..d1ef3ac
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_additions.html
@@ -0,0 +1,343 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Field Additions Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Fields" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="fields_index_all.html" class="staysblack">All Fields</a>
+  <br>
+<A HREF="fields_index_removals.html" xclass="hiddenlink">Removals</A>
+  <br>
+<b>Additions</b>
+  <br>
+<font color="#999999">Changes</font>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.layout.html#android.support.v7.appcompat.R.layout.abc_alert_dialog_button_bar_material" class="hiddenlink" target="rightframe">abc_alert_dialog_button_bar_material</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.bool.html#android.support.v7.appcompat.R.bool.abc_allow_stacked_button_bar" class="hiddenlink" target="rightframe">abc_allow_stacked_button_bar</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_default_material" class="hiddenlink" target="rightframe">abc_btn_default_material</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.string.html#android.support.v7.appcompat.R.string.abc_capital_off" class="hiddenlink" target="rightframe">abc_capital_off</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.string.html#android.support.v7.appcompat.R.string.abc_capital_on" class="hiddenlink" target="rightframe">abc_capital_on</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_dialog_fixed_height_major" class="hiddenlink" target="rightframe">abc_dialog_fixed_height_major</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_dialog_fixed_height_minor" class="hiddenlink" target="rightframe">abc_dialog_fixed_height_minor</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_dialog_fixed_width_major" class="hiddenlink" target="rightframe">abc_dialog_fixed_width_major</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_dialog_fixed_width_minor" class="hiddenlink" target="rightframe">abc_dialog_fixed_width_minor</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_control_off_mtrl_alpha" class="hiddenlink" target="rightframe">abc_scrubber_control_off_mtrl_alpha</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_control_to_pressed_mtrl_000" class="hiddenlink" target="rightframe">abc_scrubber_control_to_pressed_mtrl_000</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_control_to_pressed_mtrl_005" class="hiddenlink" target="rightframe">abc_scrubber_control_to_pressed_mtrl_005</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_primary_mtrl_alpha" class="hiddenlink" target="rightframe">abc_scrubber_primary_mtrl_alpha</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_track_mtrl_alpha" class="hiddenlink" target="rightframe">abc_scrubber_track_mtrl_alpha</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_seekbar_thumb_material" class="hiddenlink" target="rightframe">abc_seekbar_thumb_material</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_seekbar_track_background_height_material" class="hiddenlink" target="rightframe">abc_seekbar_track_background_height_material</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_seekbar_track_material" class="hiddenlink" target="rightframe">abc_seekbar_track_material</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_seekbar_track_progress_height_material" class="hiddenlink" target="rightframe">abc_seekbar_track_progress_height_material</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_select_dialog_padding_start_material" class="hiddenlink" target="rightframe">abc_select_dialog_padding_start_material</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.allowStacking" class="hiddenlink" target="rightframe">allowStacking</A>
+</nobr><br>
+<nobr><A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html#android.support.percent.PercentLayoutHelper.PercentLayoutInfo.aspectRatio" class="hiddenlink" target="rightframe">aspectRatio</A>
+</nobr><br>
+<A NAME="B"></A>
+<br><font size="+2">B</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Base_Widget_AppCompat_ImageButton" class="hiddenlink" target="rightframe">Base_Widget_AppCompat_ImageButton</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Base_Widget_AppCompat_SeekBar" class="hiddenlink" target="rightframe">Base_Widget_AppCompat_SeekBar</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.ButtonBarLayout_allowStacking" class="hiddenlink" target="rightframe">ButtonBarLayout_allowStacking</A>
+</nobr><br>
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_CONTENT" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_CONTENT</A>
+</nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_ICON_LEFT" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_ICON_LEFT</A>
+</nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_ICON_RIGHT" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_ICON_RIGHT</A>
+</nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_IMAGE_ONLY" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_IMAGE_ONLY</A>
+</nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_TITLE" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_TITLE</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.CONNECTION_STATE_CONNECTED" class="hiddenlink" target="rightframe">CONNECTION_STATE_CONNECTED</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.CONNECTION_STATE_CONNECTING" class="hiddenlink" target="rightframe">CONNECTION_STATE_CONNECTING</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.CONNECTION_STATE_DISCONNECTED" class="hiddenlink" target="rightframe">CONNECTION_STATE_DISCONNECTED</A>
+</nobr><br>
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.DEVICE_TYPE_SPEAKER" class="hiddenlink" target="rightframe">DEVICE_TYPE_SPEAKER</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.DEVICE_TYPE_TV" class="hiddenlink" target="rightframe">DEVICE_TYPE_TV</A>
+</nobr><br>
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.EXTRA_ENABLE_URLBAR_HIDING" class="hiddenlink" target="rightframe">EXTRA_ENABLE_URLBAR_HIDING</A>
+</nobr><br>
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.EXTRA_TINT_ACTION_BUTTON" class="hiddenlink" target="rightframe">EXTRA_TINT_ACTION_BUTTON</A>
+</nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.EXTRA_UI_STYLE" class="hiddenlink" target="rightframe">EXTRA_UI_STYLE</A>
+</nobr><br>
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.imageButtonStyle" class="hiddenlink" target="rightframe">imageButtonStyle</A>
+</nobr><br>
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.RtlUnderlay_Widget_AppCompat_ActionButton" class="hiddenlink" target="rightframe">RtlUnderlay_Widget_AppCompat_ActionButton</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.RtlUnderlay_Widget_AppCompat_ActionButton_Overflow" class="hiddenlink" target="rightframe">RtlUnderlay_Widget_AppCompat_ActionButton_Overflow</A>
+</nobr><br>
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.AppBarLayout.LayoutParams.html#android.support.design.widget.AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP" class="hiddenlink" target="rightframe">SCROLL_FLAG_SNAP</A>
+</nobr><br>
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_BOTTOM" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_BOTTOM</A>
+</nobr><br>
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_END" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_END</A>
+</nobr><br>
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_LEFT" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_LEFT</A>
+</nobr><br>
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_RIGHT" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_RIGHT</A>
+</nobr><br>
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_START" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_START</A>
+</nobr><br>
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_TOP" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_TOP</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.id.html#android.support.v7.appcompat.R.id.scrollIndicatorDown" class="hiddenlink" target="rightframe">scrollIndicatorDown</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.id.html#android.support.v7.appcompat.R.id.scrollIndicatorUp" class="hiddenlink" target="rightframe">scrollIndicatorUp</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.seekBarStyle" class="hiddenlink" target="rightframe">seekBarStyle</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.id.html#android.support.v7.appcompat.R.id.spacer" class="hiddenlink" target="rightframe">spacer</A>
+</nobr><br>
+<A NAME="T"></A>
+<br><font size="+2">T</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.customtabs.CustomTabsCallback.html#android.support.customtabs.CustomTabsCallback.TAB_HIDDEN" class="hiddenlink" target="rightframe">TAB_HIDDEN</A>
+</nobr><br>
+<nobr><A HREF="android.support.customtabs.CustomTabsCallback.html#android.support.customtabs.CustomTabsCallback.TAB_SHOWN" class="hiddenlink" target="rightframe">TAB_SHOWN</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowColor" class="hiddenlink" target="rightframe">TextAppearance_android_shadowColor</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowDx" class="hiddenlink" target="rightframe">TextAppearance_android_shadowDx</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowDy" class="hiddenlink" target="rightframe">TextAppearance_android_shadowDy</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowRadius" class="hiddenlink" target="rightframe">TextAppearance_android_shadowRadius</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_imageButtonStyle" class="hiddenlink" target="rightframe">Theme_imageButtonStyle</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_seekBarStyle" class="hiddenlink" target="rightframe">Theme_seekBarStyle</A>
+</nobr><br>
+<A NAME="U"></A>
+<br><font size="+2">U</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_ACTIVITY_ROOT" class="hiddenlink" target="rightframe">UI_STYLE_ACTIVITY_ROOT</A>
+</nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_DEFAULT" class="hiddenlink" target="rightframe">UI_STYLE_DEFAULT</A>
+</nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_ENTRANCE" class="hiddenlink" target="rightframe">UI_STYLE_ENTRANCE</A>
+</nobr><br>
+<A NAME="W"></A>
+<br><font size="+2">W</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_ImageButton" class="hiddenlink" target="rightframe">Widget_AppCompat_ImageButton</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_SeekBar" class="hiddenlink" target="rightframe">Widget_AppCompat_SeekBar</A>
+</nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_all.html b/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_all.html
new file mode 100644
index 0000000..697f16a
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_all.html
@@ -0,0 +1,353 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Field Differences Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Fields" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<b>Fields</b>
+  <br>
+<A HREF="fields_index_removals.html" xclass="hiddenlink">Removals</A>
+  <br>
+<A HREF="fields_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<font color="#999999">Changes</font>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.layout.html#android.support.v7.appcompat.R.layout.abc_alert_dialog_button_bar_material" class="hiddenlink" target="rightframe">abc_alert_dialog_button_bar_material</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.bool.html#android.support.v7.appcompat.R.bool.abc_allow_stacked_button_bar" class="hiddenlink" target="rightframe">abc_allow_stacked_button_bar</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_default_material" class="hiddenlink" target="rightframe">abc_btn_default_material</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.string.html#android.support.v7.appcompat.R.string.abc_capital_off" class="hiddenlink" target="rightframe">abc_capital_off</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.string.html#android.support.v7.appcompat.R.string.abc_capital_on" class="hiddenlink" target="rightframe">abc_capital_on</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_dialog_fixed_height_major" class="hiddenlink" target="rightframe">abc_dialog_fixed_height_major</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_dialog_fixed_height_minor" class="hiddenlink" target="rightframe">abc_dialog_fixed_height_minor</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_dialog_fixed_width_major" class="hiddenlink" target="rightframe">abc_dialog_fixed_width_major</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_dialog_fixed_width_minor" class="hiddenlink" target="rightframe">abc_dialog_fixed_width_minor</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_control_off_mtrl_alpha" class="hiddenlink" target="rightframe">abc_scrubber_control_off_mtrl_alpha</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_control_to_pressed_mtrl_000" class="hiddenlink" target="rightframe">abc_scrubber_control_to_pressed_mtrl_000</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_control_to_pressed_mtrl_005" class="hiddenlink" target="rightframe">abc_scrubber_control_to_pressed_mtrl_005</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_primary_mtrl_alpha" class="hiddenlink" target="rightframe">abc_scrubber_primary_mtrl_alpha</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_scrubber_track_mtrl_alpha" class="hiddenlink" target="rightframe">abc_scrubber_track_mtrl_alpha</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_seekbar_thumb_material" class="hiddenlink" target="rightframe">abc_seekbar_thumb_material</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_seekbar_track_background_height_material" class="hiddenlink" target="rightframe">abc_seekbar_track_background_height_material</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_seekbar_track_material" class="hiddenlink" target="rightframe">abc_seekbar_track_material</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_seekbar_track_progress_height_material" class="hiddenlink" target="rightframe">abc_seekbar_track_progress_height_material</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.abc_select_dialog_padding_start_material" class="hiddenlink" target="rightframe">abc_select_dialog_padding_start_material</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.allowStacking" class="hiddenlink" target="rightframe">allowStacking</A>
+</nobr><br>
+<nobr><A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html#android.support.percent.PercentLayoutHelper.PercentLayoutInfo.aspectRatio" class="hiddenlink" target="rightframe">aspectRatio</A>
+</nobr><br>
+<A NAME="B"></A>
+<br><font size="+2">B</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Base_Widget_AppCompat_ImageButton" class="hiddenlink" target="rightframe">Base_Widget_AppCompat_ImageButton</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Base_Widget_AppCompat_SeekBar" class="hiddenlink" target="rightframe">Base_Widget_AppCompat_SeekBar</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.ButtonBarLayout_allowStacking" class="hiddenlink" target="rightframe">ButtonBarLayout_allowStacking</A>
+</nobr><br>
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_CONTENT" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_CONTENT</A>
+</nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_ICON_LEFT" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_ICON_LEFT</A>
+</nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_ICON_RIGHT" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_ICON_RIGHT</A>
+</nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_IMAGE_ONLY" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_IMAGE_ONLY</A>
+</nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.CARD_TYPE_FLAG_TITLE" class="hiddenlink" target="rightframe">CARD_TYPE_FLAG_TITLE</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.CONNECTION_STATE_CONNECTED" class="hiddenlink" target="rightframe">CONNECTION_STATE_CONNECTED</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.CONNECTION_STATE_CONNECTING" class="hiddenlink" target="rightframe">CONNECTION_STATE_CONNECTING</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.CONNECTION_STATE_DISCONNECTED" class="hiddenlink" target="rightframe">CONNECTION_STATE_DISCONNECTED</A>
+</nobr><br>
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.DEVICE_TYPE_SPEAKER" class="hiddenlink" target="rightframe">DEVICE_TYPE_SPEAKER</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.DEVICE_TYPE_TV" class="hiddenlink" target="rightframe">DEVICE_TYPE_TV</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.dialog_fixed_height_major" class="hiddenlink" target="rightframe"><strike>dialog_fixed_height_major</strike></A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.dialog_fixed_height_minor" class="hiddenlink" target="rightframe"><strike>dialog_fixed_height_minor</strike></A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.dialog_fixed_width_major" class="hiddenlink" target="rightframe"><strike>dialog_fixed_width_major</strike></A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.dialog_fixed_width_minor" class="hiddenlink" target="rightframe"><strike>dialog_fixed_width_minor</strike></A>
+</nobr><br>
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.EXTRA_ENABLE_URLBAR_HIDING" class="hiddenlink" target="rightframe">EXTRA_ENABLE_URLBAR_HIDING</A>
+</nobr><br>
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.EXTRA_TINT_ACTION_BUTTON" class="hiddenlink" target="rightframe">EXTRA_TINT_ACTION_BUTTON</A>
+</nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.EXTRA_UI_STYLE" class="hiddenlink" target="rightframe">EXTRA_UI_STYLE</A>
+</nobr><br>
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.imageButtonStyle" class="hiddenlink" target="rightframe">imageButtonStyle</A>
+</nobr><br>
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.RtlOverlay_Widget_AppCompat_ActionButton_Overflow" class="hiddenlink" target="rightframe"><strike>RtlOverlay_Widget_AppCompat_ActionButton_Overflow</strike></A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.RtlUnderlay_Widget_AppCompat_ActionButton" class="hiddenlink" target="rightframe">RtlUnderlay_Widget_AppCompat_ActionButton</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.RtlUnderlay_Widget_AppCompat_ActionButton_Overflow" class="hiddenlink" target="rightframe">RtlUnderlay_Widget_AppCompat_ActionButton_Overflow</A>
+</nobr><br>
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.AppBarLayout.LayoutParams.html#android.support.design.widget.AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP" class="hiddenlink" target="rightframe">SCROLL_FLAG_SNAP</A>
+</nobr><br>
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_BOTTOM" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_BOTTOM</A>
+</nobr><br>
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_END" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_END</A>
+</nobr><br>
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_LEFT" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_LEFT</A>
+</nobr><br>
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_RIGHT" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_RIGHT</A>
+</nobr><br>
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_START" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_START</A>
+</nobr><br>
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.SCROLL_INDICATOR_TOP" class="hiddenlink" target="rightframe">SCROLL_INDICATOR_TOP</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.id.html#android.support.v7.appcompat.R.id.scrollIndicatorDown" class="hiddenlink" target="rightframe">scrollIndicatorDown</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.id.html#android.support.v7.appcompat.R.id.scrollIndicatorUp" class="hiddenlink" target="rightframe">scrollIndicatorUp</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.seekBarStyle" class="hiddenlink" target="rightframe">seekBarStyle</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.id.html#android.support.v7.appcompat.R.id.spacer" class="hiddenlink" target="rightframe">spacer</A>
+</nobr><br>
+<A NAME="T"></A>
+<br><font size="+2">T</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.customtabs.CustomTabsCallback.html#android.support.customtabs.CustomTabsCallback.TAB_HIDDEN" class="hiddenlink" target="rightframe">TAB_HIDDEN</A>
+</nobr><br>
+<nobr><A HREF="android.support.customtabs.CustomTabsCallback.html#android.support.customtabs.CustomTabsCallback.TAB_SHOWN" class="hiddenlink" target="rightframe">TAB_SHOWN</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowColor" class="hiddenlink" target="rightframe">TextAppearance_android_shadowColor</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowDx" class="hiddenlink" target="rightframe">TextAppearance_android_shadowDx</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowDy" class="hiddenlink" target="rightframe">TextAppearance_android_shadowDy</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.TextAppearance_android_shadowRadius" class="hiddenlink" target="rightframe">TextAppearance_android_shadowRadius</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_imageButtonStyle" class="hiddenlink" target="rightframe">Theme_imageButtonStyle</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_seekBarStyle" class="hiddenlink" target="rightframe">Theme_seekBarStyle</A>
+</nobr><br>
+<A NAME="U"></A>
+<br><font size="+2">U</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_ACTIVITY_ROOT" class="hiddenlink" target="rightframe">UI_STYLE_ACTIVITY_ROOT</A>
+</nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_DEFAULT" class="hiddenlink" target="rightframe">UI_STYLE_DEFAULT</A>
+</nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_ENTRANCE" class="hiddenlink" target="rightframe">UI_STYLE_ENTRANCE</A>
+</nobr><br>
+<A NAME="W"></A>
+<br><font size="+2">W</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_ImageButton" class="hiddenlink" target="rightframe">Widget_AppCompat_ImageButton</A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_SeekBar" class="hiddenlink" target="rightframe">Widget_AppCompat_SeekBar</A>
+</nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_changes.html b/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_changes.html
new file mode 100644
index 0000000..0e2ccff
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_changes.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Field Changes Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Fields" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="fields_index_all.html" class="staysblack">All Fields</a>
+  <br>
+<A HREF="fields_index_removals.html" xclass="hiddenlink">Removals</A>
+  <br>
+<A HREF="fields_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<font color="#999999">Changes</font>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_removals.html b/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_removals.html
new file mode 100644
index 0000000..93bcdc3
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/fields_index_removals.html
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Field Removals Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Fields" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="fields_index_all.html" class="staysblack">All Fields</a>
+  <br>
+<b>Removals</b>
+  <br>
+<A HREF="fields_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<font color="#999999">Changes</font>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#R"><font size="-2">R</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.dialog_fixed_height_major" class="hiddenlink" target="rightframe"><strike>dialog_fixed_height_major</strike></A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.dialog_fixed_height_minor" class="hiddenlink" target="rightframe"><strike>dialog_fixed_height_minor</strike></A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.dialog_fixed_width_major" class="hiddenlink" target="rightframe"><strike>dialog_fixed_width_major</strike></A>
+</nobr><br>
+<nobr><A HREF="android.support.v7.appcompat.R.dimen.html#android.support.v7.appcompat.R.dimen.dialog_fixed_width_minor" class="hiddenlink" target="rightframe"><strike>dialog_fixed_width_minor</strike></A>
+</nobr><br>
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#D"><font size="-2">D</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.RtlOverlay_Widget_AppCompat_ActionButton_Overflow" class="hiddenlink" target="rightframe"><strike>RtlOverlay_Widget_AppCompat_ActionButton_Overflow</strike></A>
+</nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_help.html b/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_help.html
new file mode 100644
index 0000000..b03b763
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_help.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+JDiff Help
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<TABLE summary="Navigation bar" BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
+<TR>
+<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+  <TABLE summary="Navigation bar" BORDER="0" CELLPADDING="0" CELLSPACING="3">
+    <TR ALIGN="center" VALIGN="top">
+      <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../reference/index.html" target="_top"><FONT CLASS="NavBarFont1"><B><code>23.1.0</code></B></FONT></A>&nbsp;</TD>
+      <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="changes-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
+      <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> &nbsp;<FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
+      <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"> &nbsp;<FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
+      <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="jdiff_statistics.html"><FONT CLASS="NavBarFont1"><B>Statistics</B></FONT></A>&nbsp;</TD>
+      <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
+    </TR>
+  </TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM><b>Generated by<br><a href="http://www.jdiff.org" class="staysblack" target="_top">JDiff</a></b></EM></TD>
+</TR>
+<TR>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell2"><FONT SIZE="-2"></FONT>
+</TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../changes.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
+  &nbsp;<A HREF="jdiff_help.html" TARGET="_top"><B>NO FRAMES</B></A></FONT></TD>
+</TR>
+</TABLE>
+<HR>
+<!-- End of nav bar -->
+<center>
+<H1>JDiff Documentation</H1>
+</center>
+<BLOCKQUOTE>
+JDiff is a <a href="http://java.sun.com/j2se/javadoc/" target="_top">Javadoc</a> doclet which generates a report of the API differences between two versions of a product. It does not report changes in Javadoc comments, or changes in what a class or method does. 
+This help page describes the different parts of the output from JDiff.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+ See the reference page in the <a href="http://www.jdiff.org">source for JDiff</a> for information about how to generate a report like this one.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+The indexes shown in the top-left frame help show each type of change in more detail. The index "All Differences" contains all the differences between the APIs, in alphabetical order. 
+These indexes all use the same format:
+<ul>
+<li>Removed packages, classes, constructors, methods and fields are <strike>struck through</strike>.</li>
+<li>Added packages, classes, constructors, methods and fields appear in <b>bold</b>.</li>
+<li>Changed packages, classes, constructors, methods and fields appear in normal text.</li>
+</ul>
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+You can always tell when you are reading a JDiff page, rather than a Javadoc page, by the color of the index bar and the color of the background. 
+Links which take you to a Javadoc page are always in a <code>typewriter</code> font. 
+Just like Javadoc, all interface names are in <i>italic</i>, and class names are not italicized. Where there are multiple entries in an index with the same name, the heading for them is also in italics, but is not a link.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3><b><code>Javadoc</code></b></H3>
+This is a link to the <a href="../../../../reference/index.html" target="_top">top-level</a> Javadoc page for the new version of the product.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3>Overview</H3>
+The <a href="changes-summary.html">overview</a> is the top-level summary of what was removed, added and changed between versions.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3>Package</H3>
+This is a link to the package containing the current changed class or interface.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3>Class</H3>
+This is highlighted when you are looking at the changed class or interface.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3>Text Changes</H3>
+This is a link to the top-level index of all documentation changes for the current package or class. 
+If it is not present, then there are no documentation changes for the current package or class. 
+This link can be removed entirely by not using the <code>-docchanges</code> option.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3>Statistics</H3>
+This is a link to a page which shows statistics about the changes between the two APIs.
+This link can be removed entirely by not using the <code>-stats</code> option.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3>Help</H3>
+A link to this Help page for JDiff.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3>Prev/Next</H3>
+These links take you to the previous  and next changed package or class.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H3>Frames/No Frames</H3>
+These links show and hide the HTML frames. All pages are available with or without frames.
+</BLOCKQUOTE>
+<BLOCKQUOTE>
+<H2>Complex Changes</H2>
+There are some complex changes which can occur between versions, for example, when two or more methods with the same name change simultaneously, or when a method or field is moved into or from a superclass. 
+In these cases, the change will be seen as a removal and an addition, rather than as a change. Unexpected removals or additions are often part of one of these type of changes. 
+</BLOCKQUOTE>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_statistics.html b/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_statistics.html
new file mode 100644
index 0000000..bdda25f
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_statistics.html
@@ -0,0 +1,581 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+API Change Statistics
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<body class="gc-documentation">
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;xborder-bottom:none;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="../changes.html" target="_top">Top of Report</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<h1>API&nbsp;Change&nbsp;Statistics</h1>
+<p>The overall difference between API Levels 23.0.0 and 23.1.0 is approximately <span style="color:222;font-weight:bold;">1.81%</span>.
+</p>
+<br>
+<a name="numbers"></a>
+<h2>Total of Differences, by Number and Type</h2>
+<p>
+The table below lists the numbers of program elements (packages, classes, constructors, methods, and fields) that were added, changed, or removed. The table includes only the highest-level program elements &mdash; that is, if a class with two methods was added, the number of methods added does not include those two methods, but the number of classes added does include that class.
+</p>
+<TABLE summary="Number of differences" WIDTH="100%">
+<TR>
+  <th>Type</th>
+  <TH ALIGN="center"><b>Additions</b></TH>
+  <TH ALIGN="center"><b>Changes</b></TH>
+  <TH ALIGN="center">Removals</TH>
+  <TH ALIGN="center"><b>Total</b></TH>
+</TR>
+<TR>
+  <TD>Packages</TD>
+  <TD ALIGN="right">0</TD>
+  <TD ALIGN="right">17</TD>
+  <TD ALIGN="right">0</TD>
+  <TD ALIGN="right">17</TD>
+</TR>
+<TR>
+  <TD>Classes and <i>Interfaces</i></TD>
+  <TD ALIGN="right">20</TD>
+  <TD ALIGN="right">64</TD>
+  <TD ALIGN="right">0</TD>
+  <TD ALIGN="right">84</TD>
+</TR>
+<TR>
+  <TD>Constructors</TD>
+  <TD ALIGN="right">5</TD>
+  <TD ALIGN="right">0</TD>
+  <TD ALIGN="right">3</TD>
+  <TD ALIGN="right">8</TD>
+</TR>
+<TR>
+  <TD>Methods</TD>
+  <TD ALIGN="right">117</TD>
+  <TD ALIGN="right">6</TD>
+  <TD ALIGN="right">28</TD>
+  <TD ALIGN="right">151</TD>
+</TR>
+<TR>
+  <TD>Fields</TD>
+  <TD ALIGN="right">64</TD>
+  <TD ALIGN="right">0</TD>
+  <TD ALIGN="right">5</TD>
+  <TD ALIGN="right">69</TD>
+</TR>
+<TR>
+  <TD style="background-color:#FAFAFA"><b>Total</b></TD>
+  <TD  style="background-color:#FAFAFA" ALIGN="right"><strong>206</strong></TD>
+  <TD  style="background-color:#FAFAFA" ALIGN="right"><strong>87</strong></TD>
+  <TD  style="background-color:#FAFAFA" ALIGN="right"><strong>36</strong></TD>
+  <TD  style="background-color:#FAFAFA" ALIGN="right"><strong>329</strong></TD>
+</TR>
+</TABLE>
+<br>
+<a name="packages"></a>
+<h2>Changed Packages, Sorted by Percentage Difference</h2>
+<TABLE summary="Packages sorted by percentage difference" WIDTH="100%">
+<TR>
+  <TH  WIDTH="10%">Percentage Difference*</TH>
+  <TH>Package</TH>
+</TR>
+<TR>
+  <TD ALIGN="center">25</TD>
+  <TD><A HREF="pkg_android.support.v4.content.res.html">android.support.v4.content.res</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">12</TD>
+  <TD><A HREF="pkg_android.support.customtabs.html">android.support.customtabs</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">12</TD>
+  <TD><A HREF="pkg_android.support.design.widget.html">android.support.design.widget</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">9</TD>
+  <TD><A HREF="pkg_android.support.v17.leanback.app.html">android.support.v17.leanback.app</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">5</TD>
+  <TD><A HREF="pkg_android.support.v17.leanback.widget.html">android.support.v17.leanback.widget</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">3</TD>
+  <TD><A HREF="pkg_android.support.v4.media.session.html">android.support.v4.media.session</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">3</TD>
+  <TD><A HREF="pkg_android.support.v7.media.html">android.support.v7.media</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">3</TD>
+  <TD><A HREF="pkg_android.support.v4.content.html">android.support.v4.content</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">2</TD>
+  <TD><A HREF="pkg_android.support.v4.widget.html">android.support.v4.widget</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">2</TD>
+  <TD><A HREF="pkg_android.support.v7.appcompat.html">android.support.v7.appcompat</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">2</TD>
+  <TD><A HREF="pkg_android.support.v7.graphics.html">android.support.v7.graphics</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">1</TD>
+  <TD><A HREF="pkg_android.support.v7.graphics.drawable.html">android.support.v7.graphics.drawable</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">1</TD>
+  <TD><A HREF="pkg_android.support.v14.preference.html">android.support.v14.preference</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">&lt;1</TD>
+  <TD><A HREF="pkg_android.support.v4.app.html">android.support.v4.app</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">&lt;1</TD>
+  <TD><A HREF="pkg_android.support.v7.preference.html">android.support.v7.preference</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">&lt;1</TD>
+  <TD><A HREF="pkg_android.support.percent.html">android.support.percent</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">&lt;1</TD>
+  <TD><A HREF="pkg_android.support.v4.view.html">android.support.v4.view</A></TD>
+</TR>
+</TABLE>
+<p style="font-size:10px">* See <a href="#calculation">Calculation of Change Percentages</a>, below.</p>
+<br>
+<a name="classes"></a>
+<h2>Changed Classes and <i>Interfaces</i>, Sorted by Percentage Difference</h2>
+<TABLE summary="Classes sorted by percentage difference" WIDTH="100%">
+<TR WIDTH="20%">
+  <TH WIDTH="10%">Percentage<br>Difference*</TH>
+  <TH><b>Class or <i>Interface</i></b></TH>
+</TR>
+<TR>
+  <TD ALIGN="center">100</TD>
+  <TD><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html">
+<i>android.support.v17.leanback.widget.FragmentAnimationProvider</i></A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">36</TD>
+  <TD><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html">
+android.support.v17.leanback.widget.GuidanceStylist</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">33</TD>
+  <TD><A HREF="android.support.customtabs.CustomTabsSession.html">
+android.support.customtabs.CustomTabsSession</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">33</TD>
+  <TD><A HREF="android.support.customtabs.CustomTabsSessionToken.html">
+android.support.customtabs.CustomTabsSessionToken</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">33</TD>
+  <TD><A HREF="android.support.design.widget.AppBarLayout.Behavior.SavedState.html">
+android.support.design.widget.AppBarLayout.Behavior.SavedState</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">33</TD>
+  <TD><A HREF="android.support.design.widget.CoordinatorLayout.SavedState.html">
+android.support.design.widget.CoordinatorLayout.SavedState</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">29</TD>
+  <TD><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html">
+android.support.v17.leanback.app.GuidedStepFragment</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">25</TD>
+  <TD><A HREF="android.support.design.widget.NavigationView.SavedState.html">
+android.support.design.widget.NavigationView.SavedState</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">25</TD>
+  <TD><A HREF="android.support.v4.content.res.ResourcesCompat.html">
+android.support.v4.content.res.ResourcesCompat</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">25</TD>
+  <TD><A HREF="android.support.v4.widget.TextViewCompat.html">
+android.support.v4.widget.TextViewCompat</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">23</TD>
+  <TD><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html">
+android.support.v17.leanback.widget.GuidedActionsStylist</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">21</TD>
+  <TD><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html">
+android.support.v17.leanback.app.VerticalGridFragment</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">21</TD>
+  <TD><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html">
+android.support.v17.leanback.app.VerticalGridSupportFragment</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">18</TD>
+  <TD><A HREF="android.support.v17.leanback.app.DetailsFragment.html">
+android.support.v17.leanback.app.DetailsFragment</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">18</TD>
+  <TD><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html">
+android.support.v17.leanback.app.DetailsSupportFragment</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">17</TD>
+  <TD><A HREF="android.support.v17.leanback.widget.GuidedAction.html">
+android.support.v17.leanback.widget.GuidedAction</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">14</TD>
+  <TD><A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html">
+android.support.design.widget.AppBarLayout.ScrollingViewBehavior</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">14</TD>
+  <TD><A HREF="android.support.design.widget.FloatingActionButton.html">
+android.support.design.widget.FloatingActionButton</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">14</TD>
+  <TD><A HREF="android.support.v14.preference.EditTextPreferenceDialogFragment.html">
+android.support.v14.preference.EditTextPreferenceDialogFragment</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">14</TD>
+  <TD><A HREF="android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.html">
+android.support.v7.preference.EditTextPreferenceDialogFragmentCompat</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">13</TD>
+  <TD><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html">
+android.support.v7.media.MediaRouteDescriptor.Builder</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">13</TD>
+  <TD><A HREF="android.support.v17.leanback.widget.ImageCardView.html">
+android.support.v17.leanback.widget.ImageCardView</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">13</TD>
+  <TD><A HREF="android.support.design.widget.AppBarLayout.Behavior.html">
+android.support.design.widget.AppBarLayout.Behavior</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">12</TD>
+  <TD><A HREF="android.support.customtabs.CustomTabsCallback.html">
+android.support.customtabs.CustomTabsCallback</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">12</TD>
+  <TD><A HREF="android.support.design.widget.TextInputLayout.html">
+android.support.design.widget.TextInputLayout</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">12</TD>
+  <TD><A HREF="android.support.v7.media.MediaRouteDescriptor.html">
+android.support.v7.media.MediaRouteDescriptor</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">12</TD>
+  <TD><A HREF="android.support.v17.leanback.app.BrowseFragment.html">
+android.support.v17.leanback.app.BrowseFragment</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">12</TD>
+  <TD><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html">
+android.support.v17.leanback.app.BrowseSupportFragment</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">11</TD>
+  <TD><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html">
+android.support.v7.media.MediaRouter.RouteInfo</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">11</TD>
+  <TD><A HREF="android.support.design.widget.CollapsingToolbarLayout.html">
+android.support.design.widget.CollapsingToolbarLayout</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">11</TD>
+  <TD><A HREF="android.support.design.widget.FloatingActionButton.Behavior.html">
+android.support.design.widget.FloatingActionButton.Behavior</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">11</TD>
+  <TD><A HREF="android.support.v7.graphics.Palette.Builder.html">
+android.support.v7.graphics.Palette.Builder</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">9</TD>
+  <TD><A HREF="android.support.customtabs.CustomTabsIntent.Builder.html">
+android.support.customtabs.CustomTabsIntent.Builder</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">8</TD>
+  <TD><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html">
+android.support.v17.leanback.widget.VerticalGridPresenter</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">7</TD>
+  <TD><A HREF="android.support.v17.leanback.widget.ShadowOverlayContainer.html">
+android.support.v17.leanback.widget.ShadowOverlayContainer</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">7</TD>
+  <TD><A HREF="android.support.v7.appcompat.R.dimen.html">
+android.support.v7.appcompat.R.dimen</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">7</TD>
+  <TD><A HREF="android.support.v17.leanback.app.PlaybackOverlayFragment.html">
+android.support.v17.leanback.app.PlaybackOverlayFragment</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">7</TD>
+  <TD><A HREF="android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html">
+android.support.v17.leanback.app.PlaybackOverlaySupportFragment</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">6</TD>
+  <TD><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html">
+android.support.v17.leanback.widget.GuidedAction.Builder</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">6</TD>
+  <TD><A HREF="android.support.v17.leanback.widget.ListRowPresenter.html">
+android.support.v17.leanback.widget.ListRowPresenter</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">5</TD>
+  <TD><A HREF="android.support.customtabs.CustomTabsIntent.html">
+android.support.customtabs.CustomTabsIntent</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">5</TD>
+  <TD><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html">
+android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">5</TD>
+  <TD><A HREF="android.support.v4.app.FragmentActivity.html">
+android.support.v4.app.FragmentActivity</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">5</TD>
+  <TD><A HREF="android.support.v7.appcompat.R.bool.html">
+android.support.v7.appcompat.R.bool</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">5</TD>
+  <TD><A HREF="android.support.v7.appcompat.R.drawable.html">
+android.support.v7.appcompat.R.drawable</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">5</TD>
+  <TD><A HREF="android.support.customtabs.CustomTabsService.html">
+android.support.customtabs.CustomTabsService</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">5</TD>
+  <TD><A HREF="android.support.v7.appcompat.R.string.html">
+android.support.v7.appcompat.R.string</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">3</TD>
+  <TD><A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html">
+android.support.percent.PercentLayoutHelper.PercentLayoutInfo</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">3</TD>
+  <TD><A HREF="android.support.v4.view.ViewCompat.html">
+android.support.v4.view.ViewCompat</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">3</TD>
+  <TD><A HREF="android.support.design.widget.AppBarLayout.LayoutParams.html">
+android.support.design.widget.AppBarLayout.LayoutParams</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">3</TD>
+  <TD><A HREF="android.support.v17.leanback.widget.SearchBar.html">
+android.support.v17.leanback.widget.SearchBar</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">2</TD>
+  <TD><A HREF="android.support.v17.leanback.app.SearchFragment.html">
+android.support.v17.leanback.app.SearchFragment</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">2</TD>
+  <TD><A HREF="android.support.v17.leanback.app.SearchSupportFragment.html">
+android.support.v17.leanback.app.SearchSupportFragment</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">2</TD>
+  <TD><A HREF="android.support.v4.widget.NestedScrollView.html">
+android.support.v4.widget.NestedScrollView</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">2</TD>
+  <TD><A HREF="android.support.v4.widget.ScrollerCompat.html">
+android.support.v4.widget.ScrollerCompat</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">2</TD>
+  <TD><A HREF="android.support.design.widget.Snackbar.html">
+android.support.design.widget.Snackbar</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">1</TD>
+  <TD><A HREF="android.support.v4.media.session.MediaSessionCompat.html">
+android.support.v4.media.session.MediaSessionCompat</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">1</TD>
+  <TD><A HREF="android.support.v7.graphics.drawable.DrawerArrowDrawable.html">
+android.support.v7.graphics.drawable.DrawerArrowDrawable</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">1</TD>
+  <TD><A HREF="android.support.v7.appcompat.R.id.html">
+android.support.v7.appcompat.R.id</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">1</TD>
+  <TD><A HREF="android.support.v17.leanback.widget.RowPresenter.html">
+android.support.v17.leanback.widget.RowPresenter</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">1</TD>
+  <TD><A HREF="android.support.v7.appcompat.R.layout.html">
+android.support.v7.appcompat.R.layout</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">1</TD>
+  <TD><A HREF="android.support.v7.appcompat.R.style.html">
+android.support.v7.appcompat.R.style</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">1</TD>
+  <TD><A HREF="android.support.v7.appcompat.R.styleable.html">
+android.support.v7.appcompat.R.styleable</A></TD>
+</TR>
+<TR>
+  <TD ALIGN="center">&lt;1</TD>
+  <TD><A HREF="android.support.v7.appcompat.R.attr.html">
+android.support.v7.appcompat.R.attr</A></TD>
+</TR>
+</TABLE>
+<p style="font-size:10px">* See <a href="#calculation">Calculation of Change Percentages</a>, below.</p>
+<br>
+<h2 id="calculation">Calculation of Change Percentages</h2>
+<p>
+The percent change statistic reported for all elements in the &quot;to&quot; API Level specification is defined recursively as follows:</p>
+<pre>
+Percentage difference = 100 * (added + removed + 2*changed)
+                        -----------------------------------
+                        sum of public elements in BOTH APIs
+</pre>
+<p>where <code>added</code> is the number of packages added, <code>removed</code> is the number of packages removed, and <code>changed</code> is the number of packages changed.
+This definition is applied recursively for the classes and their program elements, so the value for a changed package will be less than 1, unless every class in that package has changed.
+The definition ensures that if all packages are removed and all new packages are
+added, the change will be 100%.</p>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY></HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_topleftframe.html b/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_topleftframe.html
new file mode 100644
index 0000000..36f9836
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/jdiff_topleftframe.html
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Android API Version Differences
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<table class="jdiffIndex" summary="Links to diff index files" BORDER="0" WIDTH="100%" cellspacing="0" cellpadding="0" style="margin:0">
+<TR>
+  <th class="indexHeader" nowrap>
+  Select a Diffs Index:</th>
+</TR>
+<TR>
+  <TD><FONT CLASS="indexText" size="-2"><A HREF="alldiffs_index_all.html" TARGET="bottomleftframe">All Differences</A></FONT><br></TD>
+</TR>
+<TR>
+  <TD NOWRAP><FONT CLASS="indexText" size="-2"><A HREF="packages_index_all.html" TARGET="bottomleftframe">By Package</A></FONT><br></TD>
+</TR>
+<TR>
+  <TD NOWRAP><FONT CLASS="indexText" size="-2"><A HREF="classes_index_all.html" TARGET="bottomleftframe">By Class</A></FONT><br></TD>
+</TR>
+<TR>
+  <TD NOWRAP><FONT CLASS="indexText" size="-2"><A HREF="constructors_index_all.html" TARGET="bottomleftframe">By Constructor</A></FONT><br></TD>
+</TR>
+<TR>
+  <TD NOWRAP><FONT CLASS="indexText" size="-2"><A HREF="methods_index_all.html" TARGET="bottomleftframe">By Method</A></FONT><br></TD>
+</TR>
+<TR>
+  <TD NOWRAP><FONT CLASS="indexText" size="-2"><A HREF="fields_index_all.html" TARGET="bottomleftframe">By Field</A></FONT><br></TD>
+</TR>
+</TABLE>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_additions.html b/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_additions.html
new file mode 100644
index 0000000..9b4eab3
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_additions.html
@@ -0,0 +1,530 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Method Additions Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Methods" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="methods_index_all.html" class="staysblack">All Methods</a>
+  <br>
+<A HREF="methods_index_removals.html" xclass="hiddenlink">Removals</A>
+  <br>
+<b>Additions</b>
+  <br>
+<A HREF="methods_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.add_added(android.app.FragmentManager, android.support.v17.leanback.app.GuidedStepFragment, int)" class="hiddenlink" target="rightframe"><b>add</b>
+(<code>FragmentManager, GuidedStepFragment, int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.addAsRoot_added(android.app.Activity, android.support.v17.leanback.app.GuidedStepFragment, int)" class="hiddenlink" target="rightframe"><b>addAsRoot</b>
+(<code>Activity, GuidedStepFragment, int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.addGroupMemberId_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>addGroupMemberId</b>
+(<code>String</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.addGroupMemberIds_added(java.util.Collection<java.lang.String>)" class="hiddenlink" target="rightframe"><b>addGroupMemberIds</b>
+(<code>Collection&lt;String&gt;</code>)</A></nobr><br>
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.graphics.Palette.Builder.html#android.support.v7.graphics.Palette.Builder.clearRegion_added()" class="hiddenlink" target="rightframe"><b>clearRegion</b>
+()</A></nobr><br>
+<i>createEntranceTransition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridSupportFragment
+</A></nobr><br>
+<i>createShadowOverlayOptions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.ListRowPresenter.html#android.support.v17.leanback.widget.ListRowPresenter.createShadowOverlayOptions_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.ListRowPresenter
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html#android.support.v17.leanback.widget.VerticalGridPresenter.createShadowOverlayOptions_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.VerticalGridPresenter
+</A></nobr><br>
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>displayCompletions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.SearchFragment.html#android.support.v17.leanback.app.SearchFragment.displayCompletions_added(android.view.inputmethod.CompletionInfo[])" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>CompletionInfo[]</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.SearchFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.SearchSupportFragment.html#android.support.v17.leanback.app.SearchSupportFragment.displayCompletions_added(android.view.inputmethod.CompletionInfo[])" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>CompletionInfo[]</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.SearchSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.SearchBar.html#android.support.v17.leanback.widget.SearchBar.displayCompletions_added(android.view.inputmethod.CompletionInfo[])" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>CompletionInfo[]</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.SearchBar
+</A></nobr><br>
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.editable_added(boolean)" class="hiddenlink" target="rightframe"><b>editable</b>
+(<code>boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.editTitle_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>editTitle</b>
+(<code>String</code>)</A></nobr><br>
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.Builder.html#android.support.customtabs.CustomTabsIntent.Builder.enableUrlBarHiding_added()" class="hiddenlink" target="rightframe"><b>enableUrlBarHiding</b>
+()</A></nobr><br>
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.getCollapsedTitleTypeface_added()" class="hiddenlink" target="rightframe"><b>getCollapsedTitleTypeface</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v4.content.res.ResourcesCompat.html#android.support.v4.content.res.ResourcesCompat.getColor_added(android.content.res.Resources, int, android.content.res.Resources.Theme)" class="hiddenlink" target="rightframe"><b>getColor</b>
+(<code>Resources, int, Theme</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v4.content.res.ResourcesCompat.html#android.support.v4.content.res.ResourcesCompat.getColorStateList_added(android.content.res.Resources, int, android.content.res.Resources.Theme)" class="hiddenlink" target="rightframe"><b>getColorStateList</b>
+(<code>Resources, int, Theme</code>)</A></nobr><br>
+<i>getConnectionState</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getConnectionState_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouteDescriptor
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.getConnectionState_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouter.RouteInfo
+</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getContainerIdForBackground_added()" class="hiddenlink" target="rightframe"><b>getContainerIdForBackground</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.getCounterMaxLength_added()" class="hiddenlink" target="rightframe"><b>getCounterMaxLength</b>
+()</A></nobr><br>
+<i>getDeviceType</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getDeviceType_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouteDescriptor
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.getDeviceType_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouter.RouteInfo
+</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.getEditableTitleView_added()" class="hiddenlink" target="rightframe"><b>getEditableTitleView</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.getEditTitle_added()" class="hiddenlink" target="rightframe"><b>getEditTitle</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.getExpandedTitleTypeface_added()" class="hiddenlink" target="rightframe"><b>getExpandedTitleTypeface</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getGroupMemberIds_added()" class="hiddenlink" target="rightframe"><b>getGroupMemberIds</b>
+()</A></nobr><br>
+<i>getIconUri</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getIconUri_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouteDescriptor
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.getIconUri_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouter.RouteInfo
+</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html#android.support.v17.leanback.widget.VerticalGridPresenter.getKeepChildForeground_added()" class="hiddenlink" target="rightframe"><b>getKeepChildForeground</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v4.widget.TextViewCompat.html#android.support.v4.widget.TextViewCompat.getMaxLines_added(android.widget.TextView)" class="hiddenlink" target="rightframe"><b>getMaxLines</b>
+(<code>TextView</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v4.widget.TextViewCompat.html#android.support.v4.widget.TextViewCompat.getMinLines_added(android.widget.TextView)" class="hiddenlink" target="rightframe"><b>getMinLines</b>
+(<code>TextView</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v7.graphics.drawable.DrawerArrowDrawable.html#android.support.v7.graphics.drawable.DrawerArrowDrawable.getPaint_added()" class="hiddenlink" target="rightframe"><b>getPaint</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.getScrollIndicators_added(android.view.View)" class="hiddenlink" target="rightframe"><b>getScrollIndicators</b>
+(<code>View</code>)</A></nobr><br>
+<nobr><A HREF="android.support.customtabs.CustomTabsSessionToken.html#android.support.customtabs.CustomTabsSessionToken.getSessionTokenFromIntent_added(android.content.Intent)" class="hiddenlink" target="rightframe"><b>getSessionTokenFromIntent</b>
+(<code>Intent</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v4.app.FragmentActivity.html#android.support.v4.app.FragmentActivity.getSupportMediaController_added()" class="hiddenlink" target="rightframe"><b>getSupportMediaController</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.getTypeface_added()" class="hiddenlink" target="rightframe"><b>getTypeface</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getUiStyle_added()" class="hiddenlink" target="rightframe"><b>getUiStyle</b>
+()</A></nobr><br>
+<A NAME="H"></A>
+<br><font size="+2">H</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.hasOnClickListeners_added(android.view.View)" class="hiddenlink" target="rightframe"><b>hasOnClickListeners</b>
+(<code>View</code>)</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.hide_added(android.support.design.widget.FloatingActionButton.OnVisibilityChangedListener)" class="hiddenlink" target="rightframe"><b>hide</b>
+(<code>OnVisibilityChangedListener</code>)</A></nobr><br>
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.isEditable_added()" class="hiddenlink" target="rightframe"><b>isEditable</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.isEditTitleUsed_added()" class="hiddenlink" target="rightframe"><b>isEditTitleUsed</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.ListRowPresenter.html#android.support.v17.leanback.widget.ListRowPresenter.isKeepChildForeground_added()" class="hiddenlink" target="rightframe"><b>isKeepChildForeground</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.Snackbar.html#android.support.design.widget.Snackbar.isShownOrQueued_added()" class="hiddenlink" target="rightframe"><b>isShownOrQueued</b>
+()</A></nobr><br>
+<A NAME="O"></A>
+<br><font size="+2">O</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>onDestroyView</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlayFragment.html#android.support.v17.leanback.app.PlaybackOverlayFragment.onDestroyView_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.PlaybackOverlayFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html#android.support.v17.leanback.app.PlaybackOverlaySupportFragment.onDestroyView_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.PlaybackOverlaySupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.onDestroyView_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+<i>onEntranceTransitionEnd</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onEntranceTransitionEnd_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onEntranceTransitionEnd_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.onEntranceTransitionEnd_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.onEntranceTransitionEnd_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<i>onEntranceTransitionPrepare</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onEntranceTransitionPrepare_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onEntranceTransitionPrepare_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.onEntranceTransitionPrepare_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.onEntranceTransitionPrepare_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<i>onEntranceTransitionStart</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onEntranceTransitionStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onEntranceTransitionStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.onEntranceTransitionStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.onEntranceTransitionStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onGuidedActionEdited_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe"><b>onGuidedActionEdited</b>
+(<code>GuidedAction</code>)</A></nobr><br>
+<i>onImeAppearing</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onImeAppearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onImeAppearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onImeAppearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<i>onImeDisappearing</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onImeDisappearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onImeDisappearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onImeDisappearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html#android.support.design.widget.AppBarLayout.ScrollingViewBehavior.onLayoutChild_added(android.support.design.widget.CoordinatorLayout, android.view.View, int)" class="hiddenlink" target="rightframe"><b>onLayoutChild</b>
+(<code>CoordinatorLayout, View, int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onProvideBackgroundFragment_added()" class="hiddenlink" target="rightframe"><b>onProvideBackgroundFragment</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onProvideFragmentTransitions_added()" class="hiddenlink" target="rightframe"><b>onProvideFragmentTransitions</b>
+()</A></nobr><br>
+<i>onResume</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlayFragment.html#android.support.v17.leanback.app.PlaybackOverlayFragment.onResume_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.PlaybackOverlayFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html#android.support.v17.leanback.app.PlaybackOverlaySupportFragment.onResume_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.PlaybackOverlaySupportFragment
+</A></nobr><br>
+<i>onSaveInstanceState</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onSaveInstanceState_added(android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onSaveInstanceState_added(android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<i>onStart</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.onViewCreated_added(android.view.View, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>onViewCreated</b>
+(<code>View, Bundle</code>)</A></nobr><br>
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>runEntranceTransition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridSupportFragment
+</A></nobr><br>
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>setActionButton</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.customtabs.CustomTabsIntent.Builder.html#android.support.customtabs.CustomTabsIntent.Builder.setActionButton_added(android.graphics.Bitmap, java.lang.String, android.app.PendingIntent, boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bitmap, String, PendingIntent, boolean</code>)</b>&nbsp;in&nbsp;android.support.customtabs.CustomTabsIntent.Builder
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.customtabs.CustomTabsSession.html#android.support.customtabs.CustomTabsSession.setActionButton_added(android.graphics.Bitmap, java.lang.String)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bitmap, String</code>)</b>&nbsp;in&nbsp;android.support.customtabs.CustomTabsSession
+</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setCollapsedTitleTypeface_added(android.graphics.Typeface)" class="hiddenlink" target="rightframe"><b>setCollapsedTitleTypeface</b>
+(<code>Typeface</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.setConnectionState_added(int)" class="hiddenlink" target="rightframe"><b>setConnectionState</b>
+(<code>int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.setCounterEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setCounterEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.setCounterMaxLength_added(int)" class="hiddenlink" target="rightframe"><b>setCounterMaxLength</b>
+(<code>int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setDescription_added(java.lang.CharSequence)" class="hiddenlink" target="rightframe"><b>setDescription</b>
+(<code>CharSequence</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.setDeviceType_added(int)" class="hiddenlink" target="rightframe"><b>setDeviceType</b>
+(<code>int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.html#android.support.design.widget.AppBarLayout.Behavior.setDragCallback_added(android.support.design.widget.AppBarLayout.Behavior.DragCallback)" class="hiddenlink" target="rightframe"><b>setDragCallback</b>
+(<code>DragCallback</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setEditTitle_added(java.lang.CharSequence)" class="hiddenlink" target="rightframe"><b>setEditTitle</b>
+(<code>CharSequence</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html#android.support.v17.leanback.widget.VerticalGridPresenter.setEntranceTransitionState_added(android.support.v17.leanback.widget.VerticalGridPresenter.ViewHolder, boolean)" class="hiddenlink" target="rightframe"><b>setEntranceTransitionState</b>
+(<code>ViewHolder, boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleTypeface_added(android.graphics.Typeface)" class="hiddenlink" target="rightframe"><b>setExpandedTitleTypeface</b>
+(<code>Typeface</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.setIconUri_added(android.net.Uri)" class="hiddenlink" target="rightframe"><b>setIconUri</b>
+(<code>Uri</code>)</A></nobr><br>
+<i>setKeepChildForeground</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.ListRowPresenter.html#android.support.v17.leanback.widget.ListRowPresenter.setKeepChildForeground_added(boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>boolean</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.ListRowPresenter
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html#android.support.v17.leanback.widget.VerticalGridPresenter.setKeepChildForeground_added(boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>boolean</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.VerticalGridPresenter
+</A></nobr><br>
+<nobr><A HREF="android.support.v4.widget.NestedScrollView.html#android.support.v4.widget.NestedScrollView.setOnScrollChangeListener_added(android.support.v4.widget.NestedScrollView.OnScrollChangeListener)" class="hiddenlink" target="rightframe"><b>setOnScrollChangeListener</b>
+(<code>OnScrollChangeListener</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v7.graphics.Palette.Builder.html#android.support.v7.graphics.Palette.Builder.setRegion_added(int, int, int, int)" class="hiddenlink" target="rightframe"><b>setRegion</b>
+(<code>int, int, int, int</code>)</A></nobr><br>
+<i>setScrimsShown</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setScrimsShown_added(boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>boolean</code>)</b>&nbsp;in&nbsp;android.support.design.widget.CollapsingToolbarLayout
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setScrimsShown_added(boolean, boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>boolean, boolean</code>)</b>&nbsp;in&nbsp;android.support.design.widget.CollapsingToolbarLayout
+</A></nobr><br>
+<i>setScrollIndicators</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.setScrollIndicators_added(android.view.View, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>View, int</code>)</b>&nbsp;in&nbsp;android.support.v4.view.ViewCompat
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.setScrollIndicators_added(android.view.View, int, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>View, int, int</code>)</b>&nbsp;in&nbsp;android.support.v4.view.ViewCompat
+</A></nobr><br>
+<nobr><A HREF="android.support.v4.app.FragmentActivity.html#android.support.v4.app.FragmentActivity.setSupportMediaController_added(android.support.v4.media.session.MediaControllerCompat)" class="hiddenlink" target="rightframe"><b>setSupportMediaController</b>
+(<code>MediaControllerCompat</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setTitle_added(java.lang.CharSequence)" class="hiddenlink" target="rightframe"><b>setTitle</b>
+(<code>CharSequence</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.setUiStyle_added(int)" class="hiddenlink" target="rightframe"><b>setUiStyle</b>
+(<code>int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.show_added(android.support.design.widget.FloatingActionButton.OnVisibilityChangedListener)" class="hiddenlink" target="rightframe"><b>show</b>
+(<code>OnVisibilityChangedListener</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v4.widget.ScrollerCompat.html#android.support.v4.widget.ScrollerCompat.springBack_added(int, int, int, int, int, int)" class="hiddenlink" target="rightframe"><b>springBack</b>
+(<code>int, int, int, int, int, int</code>)</A></nobr><br>
+<A NAME="U"></A>
+<br><font size="+2">U</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.customtabs.CustomTabsService.html#android.support.customtabs.CustomTabsService.updateVisuals_added(android.support.customtabs.CustomTabsSessionToken, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>updateVisuals</b>
+(<code>CustomTabsSessionToken, Bundle</code>)</A></nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_all.html b/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_all.html
new file mode 100644
index 0000000..d63656c
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_all.html
@@ -0,0 +1,630 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Method Differences Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Methods" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<b>Methods</b>
+  <br>
+<A HREF="methods_index_removals.html" xclass="hiddenlink">Removals</A>
+  <br>
+<A HREF="methods_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="methods_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.add_added(android.app.FragmentManager, android.support.v17.leanback.app.GuidedStepFragment, int)" class="hiddenlink" target="rightframe"><b>add</b>
+(<code>FragmentManager, GuidedStepFragment, int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.addAsRoot_added(android.app.Activity, android.support.v17.leanback.app.GuidedStepFragment, int)" class="hiddenlink" target="rightframe"><b>addAsRoot</b>
+(<code>Activity, GuidedStepFragment, int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.addGroupMemberId_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>addGroupMemberId</b>
+(<code>String</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.addGroupMemberIds_added(java.util.Collection<java.lang.String>)" class="hiddenlink" target="rightframe"><b>addGroupMemberIds</b>
+(<code>Collection&lt;String&gt;</code>)</A></nobr><br>
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.RowPresenter.html#android.support.v17.leanback.widget.RowPresenter.canDrawOutOfBounds_removed()" class="hiddenlink" target="rightframe"><strike>canDrawOutOfBounds</strike>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v7.graphics.Palette.Builder.html#android.support.v7.graphics.Palette.Builder.clearRegion_added()" class="hiddenlink" target="rightframe"><b>clearRegion</b>
+()</A></nobr><br>
+<i>createEntranceTransition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.createEntranceTransition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridSupportFragment
+</A></nobr><br>
+<i>createShadowOverlayOptions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.ListRowPresenter.html#android.support.v17.leanback.widget.ListRowPresenter.createShadowOverlayOptions_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.ListRowPresenter
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html#android.support.v17.leanback.widget.VerticalGridPresenter.createShadowOverlayOptions_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.VerticalGridPresenter
+</A></nobr><br>
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>displayCompletions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.SearchFragment.html#android.support.v17.leanback.app.SearchFragment.displayCompletions_added(android.view.inputmethod.CompletionInfo[])" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>CompletionInfo[]</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.SearchFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.SearchSupportFragment.html#android.support.v17.leanback.app.SearchSupportFragment.displayCompletions_added(android.view.inputmethod.CompletionInfo[])" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>CompletionInfo[]</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.SearchSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.SearchBar.html#android.support.v17.leanback.widget.SearchBar.displayCompletions_added(android.view.inputmethod.CompletionInfo[])" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>CompletionInfo[]</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.SearchBar
+</A></nobr><br>
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.editable_added(boolean)" class="hiddenlink" target="rightframe"><b>editable</b>
+(<code>boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.editTitle_added(java.lang.String)" class="hiddenlink" target="rightframe"><b>editTitle</b>
+(<code>String</code>)</A></nobr><br>
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.Builder.html#android.support.customtabs.CustomTabsIntent.Builder.enableUrlBarHiding_added()" class="hiddenlink" target="rightframe"><b>enableUrlBarHiding</b>
+()</A></nobr><br>
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.getCollapsedTitleTypeface_added()" class="hiddenlink" target="rightframe"><b>getCollapsedTitleTypeface</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v4.content.res.ResourcesCompat.html#android.support.v4.content.res.ResourcesCompat.getColor_added(android.content.res.Resources, int, android.content.res.Resources.Theme)" class="hiddenlink" target="rightframe"><b>getColor</b>
+(<code>Resources, int, Theme</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v4.content.res.ResourcesCompat.html#android.support.v4.content.res.ResourcesCompat.getColorStateList_added(android.content.res.Resources, int, android.content.res.Resources.Theme)" class="hiddenlink" target="rightframe"><b>getColorStateList</b>
+(<code>Resources, int, Theme</code>)</A></nobr><br>
+<i>getConnectionState</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getConnectionState_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouteDescriptor
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.getConnectionState_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouter.RouteInfo
+</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getContainerIdForBackground_added()" class="hiddenlink" target="rightframe"><b>getContainerIdForBackground</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.getCounterMaxLength_added()" class="hiddenlink" target="rightframe"><b>getCounterMaxLength</b>
+()</A></nobr><br>
+<i>getDeviceType</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getDeviceType_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouteDescriptor
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.getDeviceType_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouter.RouteInfo
+</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.getEditableTitleView_added()" class="hiddenlink" target="rightframe"><b>getEditableTitleView</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.getEditTitle_added()" class="hiddenlink" target="rightframe"><b>getEditTitle</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.getExpandedTitleTypeface_added()" class="hiddenlink" target="rightframe"><b>getExpandedTitleTypeface</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getGroupMemberIds_added()" class="hiddenlink" target="rightframe"><b>getGroupMemberIds</b>
+()</A></nobr><br>
+<i>getIconUri</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getIconUri_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouteDescriptor
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html#android.support.v7.media.MediaRouter.RouteInfo.getIconUri_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v7.media.MediaRouter.RouteInfo
+</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html#android.support.v17.leanback.widget.VerticalGridPresenter.getKeepChildForeground_added()" class="hiddenlink" target="rightframe"><b>getKeepChildForeground</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v4.widget.TextViewCompat.html#android.support.v4.widget.TextViewCompat.getMaxLines_added(android.widget.TextView)" class="hiddenlink" target="rightframe"><b>getMaxLines</b>
+(<code>TextView</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v4.widget.TextViewCompat.html#android.support.v4.widget.TextViewCompat.getMinLines_added(android.widget.TextView)" class="hiddenlink" target="rightframe"><b>getMinLines</b>
+(<code>TextView</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v7.graphics.drawable.DrawerArrowDrawable.html#android.support.v7.graphics.drawable.DrawerArrowDrawable.getPaint_added()" class="hiddenlink" target="rightframe"><b>getPaint</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.getScrollIndicators_added(android.view.View)" class="hiddenlink" target="rightframe"><b>getScrollIndicators</b>
+(<code>View</code>)</A></nobr><br>
+<nobr><A HREF="android.support.customtabs.CustomTabsSessionToken.html#android.support.customtabs.CustomTabsSessionToken.getSessionTokenFromIntent_added(android.content.Intent)" class="hiddenlink" target="rightframe"><b>getSessionTokenFromIntent</b>
+(<code>Intent</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v4.app.FragmentActivity.html#android.support.v4.app.FragmentActivity.getSupportMediaController_added()" class="hiddenlink" target="rightframe"><b>getSupportMediaController</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.getTypeface_added()" class="hiddenlink" target="rightframe"><b>getTypeface</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getUiStyle_added()" class="hiddenlink" target="rightframe"><b>getUiStyle</b>
+()</A></nobr><br>
+<A NAME="H"></A>
+<br><font size="+2">H</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.hasOnClickListeners_added(android.view.View)" class="hiddenlink" target="rightframe"><b>hasOnClickListeners</b>
+(<code>View</code>)</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.hide_added(android.support.design.widget.FloatingActionButton.OnVisibilityChangedListener)" class="hiddenlink" target="rightframe"><b>hide</b>
+(<code>OnVisibilityChangedListener</code>)</A></nobr><br>
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.ShadowOverlayContainer.html#android.support.v17.leanback.widget.ShadowOverlayContainer.initialize_changed(boolean, boolean, boolean)" class="hiddenlink" target="rightframe">initialize
+(<code>boolean, boolean, boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.isConnecting_changed()" class="hiddenlink" target="rightframe">isConnecting
+()</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.isEditable_added()" class="hiddenlink" target="rightframe"><b>isEditable</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.isEditTitleUsed_added()" class="hiddenlink" target="rightframe"><b>isEditTitleUsed</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.isEntryTransitionEnabled_removed()" class="hiddenlink" target="rightframe"><strike>isEntryTransitionEnabled</strike>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.ListRowPresenter.html#android.support.v17.leanback.widget.ListRowPresenter.isKeepChildForeground_added()" class="hiddenlink" target="rightframe"><b>isKeepChildForeground</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.Snackbar.html#android.support.design.widget.Snackbar.isShownOrQueued_added()" class="hiddenlink" target="rightframe"><b>isShownOrQueued</b>
+()</A></nobr><br>
+<A NAME="O"></A>
+<br><font size="+2">O</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>onActivityEnter</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onActivityEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onActivityEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onActivityEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<i>onActivityExit</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onActivityExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onActivityExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onActivityExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<i>onAddEditTextToDialogView</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v14.preference.EditTextPreferenceDialogFragment.html#android.support.v14.preference.EditTextPreferenceDialogFragment.onAddEditTextToDialogView_removed(android.view.View, android.widget.EditText)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>View, EditText</code>)</strike>&nbsp;in&nbsp;android.support.v14.preference.EditTextPreferenceDialogFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.html#android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.onAddEditTextToDialogView_removed(android.view.View, android.widget.EditText)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>View, EditText</code>)</strike>&nbsp;in&nbsp;android.support.v7.preference.EditTextPreferenceDialogFragmentCompat
+</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.Behavior.html#android.support.design.widget.FloatingActionButton.Behavior.onDependentViewRemoved_removed(android.support.design.widget.CoordinatorLayout, android.support.design.widget.FloatingActionButton, android.view.View)" class="hiddenlink" target="rightframe"><strike>onDependentViewRemoved</strike>
+(<code>CoordinatorLayout, FloatingActionButton, View</code>)</A></nobr><br>
+<i>onDestroyView</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlayFragment.html#android.support.v17.leanback.app.PlaybackOverlayFragment.onDestroyView_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.PlaybackOverlayFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html#android.support.v17.leanback.app.PlaybackOverlaySupportFragment.onDestroyView_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.PlaybackOverlaySupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.onDestroyView_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.onDestroyView_changed()" class="hiddenlink" target="rightframe">type&nbsp;
+()&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridSupportFragment
+</A></nobr><br>
+<i>onEntranceTransitionEnd</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onEntranceTransitionEnd_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onEntranceTransitionEnd_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.onEntranceTransitionEnd_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.onEntranceTransitionEnd_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<i>onEntranceTransitionPrepare</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onEntranceTransitionPrepare_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onEntranceTransitionPrepare_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.onEntranceTransitionPrepare_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.onEntranceTransitionPrepare_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<i>onEntranceTransitionStart</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onEntranceTransitionStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onEntranceTransitionStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.onEntranceTransitionStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.onEntranceTransitionStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<i>onFragmentEnter</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onFragmentEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<i>onFragmentExit</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onFragmentExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<i>onFragmentReenter</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentReenter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onFragmentReenter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentReenter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<i>onFragmentReturn</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentReturn_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onFragmentReturn_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentReturn_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onGuidedActionEdited_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe"><b>onGuidedActionEdited</b>
+(<code>GuidedAction</code>)</A></nobr><br>
+<i>onImeAppearing</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onImeAppearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onImeAppearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onImeAppearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<i>onImeDisappearing</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onImeDisappearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onImeDisappearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onImeDisappearing_added(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;Animator&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.html#android.support.design.widget.AppBarLayout.Behavior.onInterceptTouchEvent_removed(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, android.view.MotionEvent)" class="hiddenlink" target="rightframe"><strike>onInterceptTouchEvent</strike>
+(<code>CoordinatorLayout, AppBarLayout, MotionEvent</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.ShadowOverlayContainer.html#android.support.v17.leanback.widget.ShadowOverlayContainer.onLayout_removed(boolean, int, int, int, int)" class="hiddenlink" target="rightframe"><strike>onLayout</strike>
+(<code>boolean, int, int, int, int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html#android.support.design.widget.AppBarLayout.ScrollingViewBehavior.onLayoutChild_added(android.support.design.widget.CoordinatorLayout, android.view.View, int)" class="hiddenlink" target="rightframe"><b>onLayoutChild</b>
+(<code>CoordinatorLayout, View, int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html#android.support.design.widget.AppBarLayout.ScrollingViewBehavior.onMeasureChild_removed(android.support.design.widget.CoordinatorLayout, android.view.View, int, int, int, int)" class="hiddenlink" target="rightframe"><strike>onMeasureChild</strike>
+(<code>CoordinatorLayout, View, int, int, int, int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onProvideBackgroundFragment_added()" class="hiddenlink" target="rightframe"><b>onProvideBackgroundFragment</b>
+()</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onProvideFragmentTransitions_added()" class="hiddenlink" target="rightframe"><b>onProvideFragmentTransitions</b>
+()</A></nobr><br>
+<i>onResume</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlayFragment.html#android.support.v17.leanback.app.PlaybackOverlayFragment.onResume_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.PlaybackOverlayFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html#android.support.v17.leanback.app.PlaybackOverlaySupportFragment.onResume_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.PlaybackOverlaySupportFragment
+</A></nobr><br>
+<i>onSaveInstanceState</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onSaveInstanceState_added(android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onSaveInstanceState_added(android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<i>onStart</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.onStart_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.onStart_changed()" class="hiddenlink" target="rightframe">type&nbsp;
+()&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridSupportFragment
+</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.html#android.support.design.widget.AppBarLayout.Behavior.onTouchEvent_removed(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, android.view.MotionEvent)" class="hiddenlink" target="rightframe"><strike>onTouchEvent</strike>
+(<code>CoordinatorLayout, AppBarLayout, MotionEvent</code>)</A></nobr><br>
+<i>onViewCreated</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.onViewCreated_added(android.view.View, android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>View, Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.onViewCreated_changed(android.view.View, android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;
+(<code>View, Bundle</code>)&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridSupportFragment
+</A></nobr><br>
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>runEntranceTransition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html#android.support.v17.leanback.app.VerticalGridFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.runEntranceTransition_added(java.lang.Object)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Object</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.VerticalGridSupportFragment
+</A></nobr><br>
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>setActionButton</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.customtabs.CustomTabsIntent.Builder.html#android.support.customtabs.CustomTabsIntent.Builder.setActionButton_added(android.graphics.Bitmap, java.lang.String, android.app.PendingIntent, boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bitmap, String, PendingIntent, boolean</code>)</b>&nbsp;in&nbsp;android.support.customtabs.CustomTabsIntent.Builder
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.customtabs.CustomTabsSession.html#android.support.customtabs.CustomTabsSession.setActionButton_added(android.graphics.Bitmap, java.lang.String)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bitmap, String</code>)</b>&nbsp;in&nbsp;android.support.customtabs.CustomTabsSession
+</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setCollapsedTitleTypeface_added(android.graphics.Typeface)" class="hiddenlink" target="rightframe"><b>setCollapsedTitleTypeface</b>
+(<code>Typeface</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.setConnecting_changed(boolean)" class="hiddenlink" target="rightframe">setConnecting
+(<code>boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.setConnectionState_added(int)" class="hiddenlink" target="rightframe"><b>setConnectionState</b>
+(<code>int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.setCounterEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setCounterEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.setCounterMaxLength_added(int)" class="hiddenlink" target="rightframe"><b>setCounterMaxLength</b>
+(<code>int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setDescription_added(java.lang.CharSequence)" class="hiddenlink" target="rightframe"><b>setDescription</b>
+(<code>CharSequence</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.setDeviceType_added(int)" class="hiddenlink" target="rightframe"><b>setDeviceType</b>
+(<code>int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.html#android.support.design.widget.AppBarLayout.Behavior.setDragCallback_added(android.support.design.widget.AppBarLayout.Behavior.DragCallback)" class="hiddenlink" target="rightframe"><b>setDragCallback</b>
+(<code>DragCallback</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setEditTitle_added(java.lang.CharSequence)" class="hiddenlink" target="rightframe"><b>setEditTitle</b>
+(<code>CharSequence</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html#android.support.v17.leanback.widget.VerticalGridPresenter.setEntranceTransitionState_added(android.support.v17.leanback.widget.VerticalGridPresenter.ViewHolder, boolean)" class="hiddenlink" target="rightframe"><b>setEntranceTransitionState</b>
+(<code>ViewHolder, boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.setEntryTransitionEnabled_removed(boolean)" class="hiddenlink" target="rightframe"><strike>setEntryTransitionEnabled</strike>
+(<code>boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleTypeface_added(android.graphics.Typeface)" class="hiddenlink" target="rightframe"><b>setExpandedTitleTypeface</b>
+(<code>Typeface</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.setIconUri_added(android.net.Uri)" class="hiddenlink" target="rightframe"><b>setIconUri</b>
+(<code>Uri</code>)</A></nobr><br>
+<i>setKeepChildForeground</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.ListRowPresenter.html#android.support.v17.leanback.widget.ListRowPresenter.setKeepChildForeground_added(boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>boolean</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.ListRowPresenter
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html#android.support.v17.leanback.widget.VerticalGridPresenter.setKeepChildForeground_added(boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>boolean</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.VerticalGridPresenter
+</A></nobr><br>
+<nobr><A HREF="android.support.v4.widget.NestedScrollView.html#android.support.v4.widget.NestedScrollView.setOnScrollChangeListener_added(android.support.v4.widget.NestedScrollView.OnScrollChangeListener)" class="hiddenlink" target="rightframe"><b>setOnScrollChangeListener</b>
+(<code>OnScrollChangeListener</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v7.graphics.Palette.Builder.html#android.support.v7.graphics.Palette.Builder.setRegion_added(int, int, int, int)" class="hiddenlink" target="rightframe"><b>setRegion</b>
+(<code>int, int, int, int</code>)</A></nobr><br>
+<i>setScrimsShown</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setScrimsShown_added(boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>boolean</code>)</b>&nbsp;in&nbsp;android.support.design.widget.CollapsingToolbarLayout
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setScrimsShown_added(boolean, boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>boolean, boolean</code>)</b>&nbsp;in&nbsp;android.support.design.widget.CollapsingToolbarLayout
+</A></nobr><br>
+<i>setScrollIndicators</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.setScrollIndicators_added(android.view.View, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>View, int</code>)</b>&nbsp;in&nbsp;android.support.v4.view.ViewCompat
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.setScrollIndicators_added(android.view.View, int, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>View, int, int</code>)</b>&nbsp;in&nbsp;android.support.v4.view.ViewCompat
+</A></nobr><br>
+<nobr><A HREF="android.support.v4.app.FragmentActivity.html#android.support.v4.app.FragmentActivity.setSupportMediaController_added(android.support.v4.media.session.MediaControllerCompat)" class="hiddenlink" target="rightframe"><b>setSupportMediaController</b>
+(<code>MediaControllerCompat</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setTitle_added(java.lang.CharSequence)" class="hiddenlink" target="rightframe"><b>setTitle</b>
+(<code>CharSequence</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.setUiStyle_added(int)" class="hiddenlink" target="rightframe"><b>setUiStyle</b>
+(<code>int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.show_added(android.support.design.widget.FloatingActionButton.OnVisibilityChangedListener)" class="hiddenlink" target="rightframe"><b>show</b>
+(<code>OnVisibilityChangedListener</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v4.widget.ScrollerCompat.html#android.support.v4.widget.ScrollerCompat.springBack_added(int, int, int, int, int, int)" class="hiddenlink" target="rightframe"><b>springBack</b>
+(<code>int, int, int, int, int, int</code>)</A></nobr><br>
+<A NAME="U"></A>
+<br><font size="+2">U</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.customtabs.CustomTabsService.html#android.support.customtabs.CustomTabsService.updateVisuals_added(android.support.customtabs.CustomTabsSessionToken, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>updateVisuals</b>
+(<code>CustomTabsSessionToken, Bundle</code>)</A></nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_changes.html b/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_changes.html
new file mode 100644
index 0000000..8271b35
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_changes.html
@@ -0,0 +1,91 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Method Changes Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Methods" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="methods_index_all.html" class="staysblack">All Methods</a>
+  <br>
+<A HREF="methods_index_removals.html" xclass="hiddenlink">Removals</A>
+  <br>
+<A HREF="methods_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<b>Changes</b>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.ShadowOverlayContainer.html#android.support.v17.leanback.widget.ShadowOverlayContainer.initialize_changed(boolean, boolean, boolean)" class="hiddenlink" target="rightframe">initialize
+(<code>boolean, boolean, boolean</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.isConnecting_changed()" class="hiddenlink" target="rightframe">isConnecting
+()</A></nobr><br>
+<A NAME="O"></A>
+<br><font size="+2">O</font>&nbsp;
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.onDestroyView_changed()" class="hiddenlink" target="rightframe">onDestroyView
+()</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.onStart_changed()" class="hiddenlink" target="rightframe">onStart
+()</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html#android.support.v17.leanback.app.VerticalGridSupportFragment.onViewCreated_changed(android.view.View, android.os.Bundle)" class="hiddenlink" target="rightframe">onViewCreated
+(<code>View, Bundle</code>)</A></nobr><br>
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.setConnecting_changed(boolean)" class="hiddenlink" target="rightframe">setConnecting
+(<code>boolean</code>)</A></nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_removals.html b/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_removals.html
new file mode 100644
index 0000000..7250505
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/methods_index_removals.html
@@ -0,0 +1,172 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Method Removals Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Methods" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="methods_index_all.html" class="staysblack">All Methods</a>
+  <br>
+<b>Removals</b>
+  <br>
+<A HREF="methods_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="methods_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.RowPresenter.html#android.support.v17.leanback.widget.RowPresenter.canDrawOutOfBounds_removed()" class="hiddenlink" target="rightframe"><strike>canDrawOutOfBounds</strike>
+()</A></nobr><br>
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.isEntryTransitionEnabled_removed()" class="hiddenlink" target="rightframe"><strike>isEntryTransitionEnabled</strike>
+()</A></nobr><br>
+<A NAME="O"></A>
+<br><font size="+2">O</font>&nbsp;
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>onActivityEnter</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onActivityEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onActivityEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onActivityEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<i>onActivityExit</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onActivityExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onActivityExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onActivityExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<i>onAddEditTextToDialogView</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v14.preference.EditTextPreferenceDialogFragment.html#android.support.v14.preference.EditTextPreferenceDialogFragment.onAddEditTextToDialogView_removed(android.view.View, android.widget.EditText)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>View, EditText</code>)</strike>&nbsp;in&nbsp;android.support.v14.preference.EditTextPreferenceDialogFragment
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.html#android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.onAddEditTextToDialogView_removed(android.view.View, android.widget.EditText)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>View, EditText</code>)</strike>&nbsp;in&nbsp;android.support.v7.preference.EditTextPreferenceDialogFragmentCompat
+</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.Behavior.html#android.support.design.widget.FloatingActionButton.Behavior.onDependentViewRemoved_removed(android.support.design.widget.CoordinatorLayout, android.support.design.widget.FloatingActionButton, android.view.View)" class="hiddenlink" target="rightframe"><strike>onDependentViewRemoved</strike>
+(<code>CoordinatorLayout, FloatingActionButton, View</code>)</A></nobr><br>
+<i>onFragmentEnter</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onFragmentEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentEnter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<i>onFragmentExit</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onFragmentExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentExit_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<i>onFragmentReenter</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentReenter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onFragmentReenter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentReenter_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<i>onFragmentReturn</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html#android.support.v17.leanback.widget.FragmentAnimationProvider.onFragmentReturn_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.FragmentAnimationProvider
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onFragmentReturn_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onFragmentReturn_removed(java.util.List<android.animation.Animator>)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>List&lt;Animator&gt;</code>)</strike>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.html#android.support.design.widget.AppBarLayout.Behavior.onInterceptTouchEvent_removed(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, android.view.MotionEvent)" class="hiddenlink" target="rightframe"><strike>onInterceptTouchEvent</strike>
+(<code>CoordinatorLayout, AppBarLayout, MotionEvent</code>)</A></nobr><br>
+<nobr><A HREF="android.support.v17.leanback.widget.ShadowOverlayContainer.html#android.support.v17.leanback.widget.ShadowOverlayContainer.onLayout_removed(boolean, int, int, int, int)" class="hiddenlink" target="rightframe"><strike>onLayout</strike>
+(<code>boolean, int, int, int, int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html#android.support.design.widget.AppBarLayout.ScrollingViewBehavior.onMeasureChild_removed(android.support.design.widget.CoordinatorLayout, android.view.View, int, int, int, int)" class="hiddenlink" target="rightframe"><strike>onMeasureChild</strike>
+(<code>CoordinatorLayout, View, int, int, int, int</code>)</A></nobr><br>
+<nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.html#android.support.design.widget.AppBarLayout.Behavior.onTouchEvent_removed(android.support.design.widget.CoordinatorLayout, android.support.design.widget.AppBarLayout, android.view.MotionEvent)" class="hiddenlink" target="rightframe"><strike>onTouchEvent</strike>
+(<code>CoordinatorLayout, AppBarLayout, MotionEvent</code>)</A></nobr><br>
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.setEntryTransitionEnabled_removed(boolean)" class="hiddenlink" target="rightframe"><strike>setEntryTransitionEnabled</strike>
+(<code>boolean</code>)</A></nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_additions.html b/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_additions.html
new file mode 100644
index 0000000..1776064
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_additions.html
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Package Additions Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Packages" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="packages_index_all.html" class="staysblack">All Packages</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<font color="#999999">Additions</font>
+  <br>
+<A HREF="packages_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<br>
+<div id="indexTableEntries">
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_all.html b/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_all.html
new file mode 100644
index 0000000..2bf0974
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_all.html
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Package Differences Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Packages" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<b>Packages</b>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<font color="#999999">Additions</font>
+  <br>
+<A HREF="packages_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<br>
+<div id="indexTableEntries">
+<A NAME="A"></A>
+<A HREF="pkg_android.support.customtabs.html" class="hiddenlink" target="rightframe">android.support.customtabs</A><br>
+<A HREF="pkg_android.support.design.widget.html" class="hiddenlink" target="rightframe">android.support.design.widget</A><br>
+<A HREF="pkg_android.support.percent.html" class="hiddenlink" target="rightframe">android.support.percent</A><br>
+<A HREF="pkg_android.support.v14.preference.html" class="hiddenlink" target="rightframe">android.support.v14.preference</A><br>
+<A HREF="pkg_android.support.v17.leanback.app.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.app</A><br>
+<A HREF="pkg_android.support.v17.leanback.widget.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.widget</A><br>
+<A HREF="pkg_android.support.v4.app.html" class="hiddenlink" target="rightframe">android.support.v4.app</A><br>
+<A HREF="pkg_android.support.v4.content.html" class="hiddenlink" target="rightframe">android.support.v4.content</A><br>
+<A HREF="pkg_android.support.v4.content.res.html" class="hiddenlink" target="rightframe">android.support.v4.content.res</A><br>
+<A HREF="pkg_android.support.v4.media.session.html" class="hiddenlink" target="rightframe">android.support.v4.media.session</A><br>
+<A HREF="pkg_android.support.v4.view.html" class="hiddenlink" target="rightframe">android.support.v4.view</A><br>
+<A HREF="pkg_android.support.v4.widget.html" class="hiddenlink" target="rightframe">android.support.v4.widget</A><br>
+<A HREF="pkg_android.support.v7.appcompat.html" class="hiddenlink" target="rightframe">android.support.v7.appcompat</A><br>
+<A HREF="pkg_android.support.v7.graphics.html" class="hiddenlink" target="rightframe">android.support.v7.graphics</A><br>
+<A HREF="pkg_android.support.v7.graphics.drawable.html" class="hiddenlink" target="rightframe">android.support.v7.graphics.drawable</A><br>
+<A HREF="pkg_android.support.v7.media.html" class="hiddenlink" target="rightframe">android.support.v7.media</A><br>
+<A HREF="pkg_android.support.v7.preference.html" class="hiddenlink" target="rightframe">android.support.v7.preference</A><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_changes.html b/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_changes.html
new file mode 100644
index 0000000..519e9aa
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_changes.html
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Package Changes Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Packages" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="packages_index_all.html" class="staysblack">All Packages</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<font color="#999999">Additions</font>
+  <br>
+<b>Changes</b>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<br>
+<div id="indexTableEntries">
+<A NAME="A"></A>
+<A HREF="pkg_android.support.customtabs.html" class="hiddenlink" target="rightframe">android.support.customtabs</A><br>
+<A HREF="pkg_android.support.design.widget.html" class="hiddenlink" target="rightframe">android.support.design.widget</A><br>
+<A HREF="pkg_android.support.percent.html" class="hiddenlink" target="rightframe">android.support.percent</A><br>
+<A HREF="pkg_android.support.v14.preference.html" class="hiddenlink" target="rightframe">android.support.v14.preference</A><br>
+<A HREF="pkg_android.support.v17.leanback.app.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.app</A><br>
+<A HREF="pkg_android.support.v17.leanback.widget.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.widget</A><br>
+<A HREF="pkg_android.support.v4.app.html" class="hiddenlink" target="rightframe">android.support.v4.app</A><br>
+<A HREF="pkg_android.support.v4.content.html" class="hiddenlink" target="rightframe">android.support.v4.content</A><br>
+<A HREF="pkg_android.support.v4.content.res.html" class="hiddenlink" target="rightframe">android.support.v4.content.res</A><br>
+<A HREF="pkg_android.support.v4.media.session.html" class="hiddenlink" target="rightframe">android.support.v4.media.session</A><br>
+<A HREF="pkg_android.support.v4.view.html" class="hiddenlink" target="rightframe">android.support.v4.view</A><br>
+<A HREF="pkg_android.support.v4.widget.html" class="hiddenlink" target="rightframe">android.support.v4.widget</A><br>
+<A HREF="pkg_android.support.v7.appcompat.html" class="hiddenlink" target="rightframe">android.support.v7.appcompat</A><br>
+<A HREF="pkg_android.support.v7.graphics.html" class="hiddenlink" target="rightframe">android.support.v7.graphics</A><br>
+<A HREF="pkg_android.support.v7.graphics.drawable.html" class="hiddenlink" target="rightframe">android.support.v7.graphics.drawable</A><br>
+<A HREF="pkg_android.support.v7.media.html" class="hiddenlink" target="rightframe">android.support.v7.media</A><br>
+<A HREF="pkg_android.support.v7.preference.html" class="hiddenlink" target="rightframe">android.support.v7.preference</A><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_removals.html b/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_removals.html
new file mode 100644
index 0000000..9fd0f7e
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/packages_index_removals.html
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Package Removals Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Packages" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="packages_index_all.html" class="staysblack">All Packages</a>
+  <br>
+<font color="#999999">Removals</font>
+  <br>
+<font color="#999999">Additions</font>
+  <br>
+<A HREF="packages_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<br>
+<div id="indexTableEntries">
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.customtabs.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.customtabs.html
new file mode 100644
index 0000000..d85f3f8
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.customtabs.html
@@ -0,0 +1,154 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.customtabs
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/support/customtabs/package-summary.html" target="_top"><font size="+1"><code>android.support.customtabs</code></font></A>
+</H2>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="CustomTabsCallback"></A>
+  <nobr><A HREF="android.support.customtabs.CustomTabsCallback.html">CustomTabsCallback</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="CustomTabsIntent"></A>
+  <nobr><A HREF="android.support.customtabs.CustomTabsIntent.html">CustomTabsIntent</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="CustomTabsIntent.Builder"></A>
+  <nobr><A HREF="android.support.customtabs.CustomTabsIntent.Builder.html">CustomTabsIntent.Builder</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="CustomTabsService"></A>
+  <nobr><A HREF="android.support.customtabs.CustomTabsService.html">CustomTabsService</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="CustomTabsSession"></A>
+  <nobr><A HREF="android.support.customtabs.CustomTabsSession.html">CustomTabsSession</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="CustomTabsSessionToken"></A>
+  <nobr><A HREF="android.support.customtabs.CustomTabsSessionToken.html">CustomTabsSessionToken</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.design.widget.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.design.widget.html
new file mode 100644
index 0000000..449afa6
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.design.widget.html
@@ -0,0 +1,225 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/support/design/widget/package-summary.html" target="_top"><font size="+1"><code>android.support.design.widget</code></font></A>
+</H2>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="AppBarLayout.Behavior.DragCallback"></A>
+  <nobr><A HREF="../../../../reference/android/support/design/widget/AppBarLayout.Behavior.DragCallback.html" target="_top"><code>AppBarLayout.Behavior.<br>DragCallback</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="FloatingActionButton.OnVisibilityChangedListener"></A>
+  <nobr><A HREF="../../../../reference/android/support/design/widget/FloatingActionButton.OnVisibilityChangedListener.html" target="_top"><code>FloatingActionButton.<br>OnVisibilityChangedListener</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="HeaderBehavior"></A>
+  <nobr><A HREF="../../../../reference/android/support/design/widget/HeaderBehavior.html" target="_top"><code>HeaderBehavior</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="HeaderScrollingViewBehavior"></A>
+  <nobr><A HREF="../../../../reference/android/support/design/widget/HeaderScrollingViewBehavior.html" target="_top"><code>HeaderScrollingViewBehavior</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="AppBarLayout.Behavior"></A>
+  <nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.html">AppBarLayout.Behavior</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="AppBarLayout.Behavior.SavedState"></A>
+  <nobr><A HREF="android.support.design.widget.AppBarLayout.Behavior.SavedState.html">AppBarLayout.Behavior.<br>SavedState</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="AppBarLayout.LayoutParams"></A>
+  <nobr><A HREF="android.support.design.widget.AppBarLayout.LayoutParams.html">AppBarLayout.LayoutParams</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="AppBarLayout.ScrollingViewBehavior"></A>
+  <nobr><A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html">AppBarLayout.ScrollingViewBehavior</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="CollapsingToolbarLayout"></A>
+  <nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html">CollapsingToolbarLayout</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="CoordinatorLayout.SavedState"></A>
+  <nobr><A HREF="android.support.design.widget.CoordinatorLayout.SavedState.html">CoordinatorLayout.SavedState</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="FloatingActionButton"></A>
+  <nobr><A HREF="android.support.design.widget.FloatingActionButton.html">FloatingActionButton</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="FloatingActionButton.Behavior"></A>
+  <nobr><A HREF="android.support.design.widget.FloatingActionButton.Behavior.html">FloatingActionButton.Behavior</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="NavigationView.SavedState"></A>
+  <nobr><A HREF="android.support.design.widget.NavigationView.SavedState.html">NavigationView.SavedState</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="Snackbar"></A>
+  <nobr><A HREF="android.support.design.widget.Snackbar.html">Snackbar</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="TextInputLayout"></A>
+  <nobr><A HREF="android.support.design.widget.TextInputLayout.html">TextInputLayout</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.percent.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.percent.html
new file mode 100644
index 0000000..53b92a9
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.percent.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.percent
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/support/percent/package-summary.html" target="_top"><font size="+1"><code>android.support.percent</code></font></A>
+</H2>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="PercentLayoutHelper.PercentLayoutInfo"></A>
+  <nobr><A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html">PercentLayoutHelper.PercentLayoutInfo</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v14.preference.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v14.preference.html
new file mode 100644
index 0000000..3ef0a0f
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v14.preference.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v14.preference
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/support/v14/preference/package-summary.html" target="_top"><font size="+1"><code>android.support.v14.preference</code></font></A>
+</H2>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="EditTextPreferenceDialogFragment"></A>
+  <nobr><A HREF="android.support.v14.preference.EditTextPreferenceDialogFragment.html">EditTextPreferenceDialogFragment</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v17.leanback.app.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v17.leanback.app.html
new file mode 100644
index 0000000..49ee52f
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v17.leanback.app.html
@@ -0,0 +1,225 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/support/v17/leanback/app/package-summary.html" target="_top"><font size="+1"><code>android.support.v17.leanback.app</code></font></A>
+</H2>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="GuidedStepFragment.GuidedStepBackgroundFragment"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.GuidedStepBackgroundFragment.html" target="_top"><code>GuidedStepFragment.GuidedStepBackgroundFragment</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="GuidedStepSupportFragment"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html" target="_top"><code>GuidedStepSupportFragment</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment.html" target="_top"><code>GuidedStepSupportFragment.<br>GuidedStepBackgroundSupportFragment</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="PlaybackControlSupportGlue"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/app/PlaybackControlSupportGlue.html" target="_top"><code>PlaybackControlSupportGlue</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="BrowseFragment"></A>
+  <nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html">BrowseFragment</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="BrowseSupportFragment"></A>
+  <nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html">BrowseSupportFragment</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="DetailsFragment"></A>
+  <nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html">DetailsFragment</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="DetailsSupportFragment"></A>
+  <nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html">DetailsSupportFragment</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="GuidedStepFragment"></A>
+  <nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html">GuidedStepFragment</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="PlaybackOverlayFragment"></A>
+  <nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlayFragment.html">PlaybackOverlayFragment</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="PlaybackOverlaySupportFragment"></A>
+  <nobr><A HREF="android.support.v17.leanback.app.PlaybackOverlaySupportFragment.html">PlaybackOverlaySupportFragment</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="SearchFragment"></A>
+  <nobr><A HREF="android.support.v17.leanback.app.SearchFragment.html">SearchFragment</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="SearchSupportFragment"></A>
+  <nobr><A HREF="android.support.v17.leanback.app.SearchSupportFragment.html">SearchSupportFragment</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="VerticalGridFragment"></A>
+  <nobr><A HREF="android.support.v17.leanback.app.VerticalGridFragment.html">VerticalGridFragment</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="VerticalGridSupportFragment"></A>
+  <nobr><A HREF="android.support.v17.leanback.app.VerticalGridSupportFragment.html">VerticalGridSupportFragment</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v17.leanback.widget.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v17.leanback.widget.html
new file mode 100644
index 0000000..73d5050
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v17.leanback.widget.html
@@ -0,0 +1,253 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/support/v17/leanback/widget/package-summary.html" target="_top"><font size="+1"><code>android.support.v17.leanback.widget</code></font></A>
+</H2>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Classes and Interfaces" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Classes and Interfaces</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="GuidedActionEditText"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionEditText.html" target="_top"><code>GuidedActionEditText</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="ImeKeyMonitor"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/widget/ImeKeyMonitor.html" target="_top"><code><I>ImeKeyMonitor</I></code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="ImeKeyMonitor.ImeKeyListener"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/widget/ImeKeyMonitor.ImeKeyListener.html" target="_top"><code><I>ImeKeyMonitor.ImeKeyListener</I></code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="ItemBridgeAdapterShadowOverlayWrapper"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/widget/ItemBridgeAdapterShadowOverlayWrapper.html" target="_top"><code>ItemBridgeAdapterShadowOverlayWrapper</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="ShadowOverlayHelper"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/widget/ShadowOverlayHelper.html" target="_top"><code>ShadowOverlayHelper</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="ShadowOverlayHelper.Builder"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/widget/ShadowOverlayHelper.Builder.html" target="_top"><code>ShadowOverlayHelper.Builder</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="ShadowOverlayHelper.Options"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/widget/ShadowOverlayHelper.Options.html" target="_top"><code>ShadowOverlayHelper.Options</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes and Interfaces" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes and Interfaces</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="FragmentAnimationProvider"></A>
+  <nobr><A HREF="android.support.v17.leanback.widget.FragmentAnimationProvider.html"><I>FragmentAnimationProvider</I></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="GuidanceStylist"></A>
+  <nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html">GuidanceStylist</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="GuidedAction"></A>
+  <nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html">GuidedAction</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="GuidedAction.Builder"></A>
+  <nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html">GuidedAction.Builder</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="GuidedActionsStylist"></A>
+  <nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html">GuidedActionsStylist</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="GuidedActionsStylist.ViewHolder"></A>
+  <nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html">GuidedActionsStylist.<br>ViewHolder</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="ImageCardView"></A>
+  <nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html">ImageCardView</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="ListRowPresenter"></A>
+  <nobr><A HREF="android.support.v17.leanback.widget.ListRowPresenter.html">ListRowPresenter</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="RowPresenter"></A>
+  <nobr><A HREF="android.support.v17.leanback.widget.RowPresenter.html">RowPresenter</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="SearchBar"></A>
+  <nobr><A HREF="android.support.v17.leanback.widget.SearchBar.html">SearchBar</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="ShadowOverlayContainer"></A>
+  <nobr><A HREF="android.support.v17.leanback.widget.ShadowOverlayContainer.html">ShadowOverlayContainer</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="VerticalGridPresenter"></A>
+  <nobr><A HREF="android.support.v17.leanback.widget.VerticalGridPresenter.html">VerticalGridPresenter</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.app.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.app.html
new file mode 100644
index 0000000..b1645a6
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.app.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.app
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/support/v4/app/package-summary.html" target="_top"><font size="+1"><code>android.support.v4.app</code></font></A>
+</H2>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="BundleCompat"></A>
+  <nobr><A HREF="../../../../reference/android/support/v4/app/BundleCompat.html" target="_top"><code>BundleCompat</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="FragmentActivity"></A>
+  <nobr><A HREF="android.support.v4.app.FragmentActivity.html">FragmentActivity</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.content.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.content.html
new file mode 100644
index 0000000..efc62c9
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.content.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.content
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/support/v4/content/package-summary.html" target="_top"><font size="+1"><code>android.support.v4.content</code></font></A>
+</H2>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="ParallelExecutorCompat"></A>
+  <nobr><A HREF="../../../../reference/android/support/v4/content/ParallelExecutorCompat.html" target="_top"><code>ParallelExecutorCompat</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.content.res.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.content.res.html
new file mode 100644
index 0000000..fd9c9f8
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.content.res.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.content.res
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/support/v4/content/res/package-summary.html" target="_top"><font size="+1"><code>android.support.v4.content.res</code></font></A>
+</H2>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="ResourcesCompat"></A>
+  <nobr><A HREF="android.support.v4.content.res.ResourcesCompat.html">ResourcesCompat</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.media.session.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.media.session.html
new file mode 100644
index 0000000..afd23b1
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.media.session.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.media.session
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/support/v4/media/session/package-summary.html" target="_top"><font size="+1"><code>android.support.v4.media.session</code></font></A>
+</H2>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="MediaButtonReceiver"></A>
+  <nobr><A HREF="../../../../reference/android/support/v4/media/session/MediaButtonReceiver.html" target="_top"><code>MediaButtonReceiver</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="MediaSessionCompat"></A>
+  <nobr><A HREF="android.support.v4.media.session.MediaSessionCompat.html">MediaSessionCompat</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.view.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.view.html
new file mode 100644
index 0000000..7d74c82
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.view.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/support/v4/view/package-summary.html" target="_top"><font size="+1"><code>android.support.v4.view</code></font></A>
+</H2>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="ViewCompat"></A>
+  <nobr><A HREF="android.support.v4.view.ViewCompat.html">ViewCompat</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.widget.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.widget.html
new file mode 100644
index 0000000..4ca7874
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v4.widget.html
@@ -0,0 +1,148 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.widget
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/support/v4/widget/package-summary.html" target="_top"><font size="+1"><code>android.support.v4.widget</code></font></A>
+</H2>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Interfaces" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Interfaces</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="NestedScrollView.OnScrollChangeListener"></A>
+  <nobr><A HREF="../../../../reference/android/support/v4/widget/NestedScrollView.OnScrollChangeListener.html" target="_top"><code><I>NestedScrollView.OnScrollChangeListener</I></code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="NestedScrollView"></A>
+  <nobr><A HREF="android.support.v4.widget.NestedScrollView.html">NestedScrollView</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="ScrollerCompat"></A>
+  <nobr><A HREF="android.support.v4.widget.ScrollerCompat.html">ScrollerCompat</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="TextViewCompat"></A>
+  <nobr><A HREF="android.support.v4.widget.TextViewCompat.html">TextViewCompat</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.appcompat.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.appcompat.html
new file mode 100644
index 0000000..553bdf2
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.appcompat.html
@@ -0,0 +1,175 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.appcompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/support/v7/appcompat/package-summary.html" target="_top"><font size="+1"><code>android.support.v7.appcompat</code></font></A>
+</H2>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="R.attr"></A>
+  <nobr><A HREF="android.support.v7.appcompat.R.attr.html">R.attr</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="R.bool"></A>
+  <nobr><A HREF="android.support.v7.appcompat.R.bool.html">R.bool</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="R.dimen"></A>
+  <nobr><A HREF="android.support.v7.appcompat.R.dimen.html">R.dimen</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="R.drawable"></A>
+  <nobr><A HREF="android.support.v7.appcompat.R.drawable.html">R.drawable</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="R.id"></A>
+  <nobr><A HREF="android.support.v7.appcompat.R.id.html">R.id</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="R.layout"></A>
+  <nobr><A HREF="android.support.v7.appcompat.R.layout.html">R.layout</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="R.string"></A>
+  <nobr><A HREF="android.support.v7.appcompat.R.string.html">R.string</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="R.style"></A>
+  <nobr><A HREF="android.support.v7.appcompat.R.style.html">R.style</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="R.styleable"></A>
+  <nobr><A HREF="android.support.v7.appcompat.R.styleable.html">R.styleable</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.graphics.drawable.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.graphics.drawable.html
new file mode 100644
index 0000000..e9d5cd9
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.graphics.drawable.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.graphics.drawable
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/support/v7/graphics/drawable/package-summary.html" target="_top"><font size="+1"><code>android.support.v7.graphics.drawable</code></font></A>
+</H2>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="DrawerArrowDrawable"></A>
+  <nobr><A HREF="android.support.v7.graphics.drawable.DrawerArrowDrawable.html">DrawerArrowDrawable</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.graphics.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.graphics.html
new file mode 100644
index 0000000..ba9a092
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.graphics.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.graphics
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/support/v7/graphics/package-summary.html" target="_top"><font size="+1"><code>android.support.v7.graphics</code></font></A>
+</H2>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="Palette.Builder"></A>
+  <nobr><A HREF="android.support.v7.graphics.Palette.Builder.html">Palette.Builder</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.media.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.media.html
new file mode 100644
index 0000000..7892bf9
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.media.html
@@ -0,0 +1,148 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.media
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/support/v7/media/package-summary.html" target="_top"><font size="+1"><code>android.support.v7.media</code></font></A>
+</H2>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="MediaRouter.RouteGroup"></A>
+  <nobr><A HREF="../../../../reference/android/support/v7/media/MediaRouter.RouteGroup.html" target="_top"><code>MediaRouter.RouteGroup</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="MediaRouteDescriptor"></A>
+  <nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html">MediaRouteDescriptor</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="MediaRouteDescriptor.Builder"></A>
+  <nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html">MediaRouteDescriptor.Builder</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="MediaRouter.RouteInfo"></A>
+  <nobr><A HREF="android.support.v7.media.MediaRouter.RouteInfo.html">MediaRouter.RouteInfo</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.preference.html b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.preference.html
new file mode 100644
index 0000000..ced3a90
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/changes/pkg_android.support.v7.preference.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.preference
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.1.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.0.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2015.10.15 12:23</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Package <A HREF="../../../../reference/android/support/v7/preference/package-summary.html" target="_top"><font size="+1"><code>android.support.v7.preference</code></font></A>
+</H2>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Classes" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Changed Classes</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="EditTextPreferenceDialogFragmentCompat"></A>
+  <nobr><A HREF="android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.html">EditTextPreferenceDialogFragmentCompat</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.1.0/stylesheet-jdiff.css b/docs/html/sdk/support_api_diff/23.1.0/stylesheet-jdiff.css
new file mode 100644
index 0000000..edafaa3
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.1.0/stylesheet-jdiff.css
@@ -0,0 +1,44 @@
+
+/* (http://www.jdiff.org) */
+
+div.and-diff-id {border: 1px solid #eee;position:relative;float:right;clear:both;padding:0px;}
+table.diffspectable {border:1px;padding:0px;margin:0px;}
+.diffspechead {background-color:#eee;}
+.diffspectable tr {border:0px;padding:0px;}
+.diffspectable td  {background-color:eee;border:0px;font-size:90%;font-weight:normal;padding:0px;padding-left:1px;padding-right:1px;text-align:center;color:777;}
+td.diffvalueold {color:orange;background-color:white;border:0px;font-size:80%;font-style:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;}
+td.diffvaluenew {color:green;background-color:white;border:0px;font-size:80%;font-weight:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;}
+td.diffvalue {color:444;background-color:white;border:0px;font-size:80%;font-weight:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;}
+td.diffspec {background-color:white;border:0px;font-size:80%;font-weight:normal;padding:1px;color:444;text-align:right;padding-right:.5em;line-height:.95em;}
+tt {font-size:11pt;font-family:monospace;}
+.indexHeader {
+  font-size:96%;
+  line-height:.8em;}
+.jdiffIndex td {
+  font-size:96%;
+  xline-height:.8em;
+  padding:2px;
+  padding-left:1em;}
+.indexText {
+  font-size:100%;
+  padding-left:1em;}
+#indexTableCaption {
+  font-size:96%;
+  margin-top:.25em;
+  margin-bottom:0;
+  }
+.hiddenlink {
+  font-size:96%;
+  line-height:.8em;
+  text-decoration:none;}
+a {
+  text-decoration:none;}
+a:hover {
+  text-decoration:underline;}
+.indexBox {
+  border: 1px solid red;
+  margin:1em 0 0 0;}
+.letterIndexHead {
+  font-size: 1.5em;font-weight:9;
+  margin:0 0 0em 0;
+  border: 1px solid red;}
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes.html b/docs/html/sdk/support_api_diff/23.2.0/changes.html
new file mode 100644
index 0000000..fbe0de5
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes.html
@@ -0,0 +1,45 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<!-- on Tue Feb 23 13:25:04 PST 2016 -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Support&nbsp;Library&nbsp;API&nbsp;Differences&nbsp;Report
+</TITLE>
+<link href="../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</head>
+<frameset cols="242,**" framespacing="1" frameborder="yes" border="1" bordercolor="#e9e9e9"> 
+<frameset rows="174,**" framespacing="1" frameborder="yes"  border="1" bordercolor="#e9e9e9">
+    <frame src="changes/jdiff_topleftframe.html" scrolling="no" name="topleftframe" frameborder="1">
+    <frame src="changes/alldiffs_index_all.html" scrolling="auto" name="bottomleftframe" frameborder="1">
+  </frameset>
+  <frame src="changes/changes-summary.html" scrolling="auto" name="rightframe" frameborder="1">
+</frameset>
+<noframes>
+<h2>
+Frame Alert
+</h2>
+
+<p>
+This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+<br>
+Link to <a href="changes/changes-summary.html" target="_top">Non-frame version.</A>
+</noframes>
+</html>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_additions.html b/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_additions.html
new file mode 100644
index 0000000..09ec1eb
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_additions.html
@@ -0,0 +1,1969 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+All Additions Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for All Differences" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="alldiffs_index_all.html" xclass="hiddenlink">All Differences</a>
+  <br>
+<A HREF="alldiffs_index_removals.html" xclass="hiddenlink">Removals</A>
+  <br>
+<b>Additions</b>
+  <br>
+<A HREF="alldiffs_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<!-- Field abc_btn_checkbox_checked_mtrl -->
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_checkbox_checked_mtrl" class="hiddenlink" target="rightframe">abc_btn_checkbox_checked_mtrl</A>
+</nobr><br>
+<!-- Field abc_btn_checkbox_unchecked_mtrl -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_checkbox_unchecked_mtrl" class="hiddenlink" target="rightframe">abc_btn_checkbox_unchecked_mtrl</A>
+</nobr><br>
+<!-- Field abc_btn_radio_off_mtrl -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_radio_off_mtrl" class="hiddenlink" target="rightframe">abc_btn_radio_off_mtrl</A>
+</nobr><br>
+<!-- Field abc_btn_radio_on_mtrl -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_radio_on_mtrl" class="hiddenlink" target="rightframe">abc_btn_radio_on_mtrl</A>
+</nobr><br>
+<!-- Field abc_ic_ab_back_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_ab_back_material" class="hiddenlink" target="rightframe">abc_ic_ab_back_material</A>
+</nobr><br>
+<!-- Field abc_ic_clear_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_clear_material" class="hiddenlink" target="rightframe">abc_ic_clear_material</A>
+</nobr><br>
+<!-- Field abc_ic_go_search_api_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_go_search_api_material" class="hiddenlink" target="rightframe">abc_ic_go_search_api_material</A>
+</nobr><br>
+<!-- Field abc_ic_menu_copy_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_copy_material" class="hiddenlink" target="rightframe">abc_ic_menu_copy_material</A>
+</nobr><br>
+<!-- Field abc_ic_menu_cut_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_cut_material" class="hiddenlink" target="rightframe">abc_ic_menu_cut_material</A>
+</nobr><br>
+<!-- Field abc_ic_menu_overflow_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_overflow_material" class="hiddenlink" target="rightframe">abc_ic_menu_overflow_material</A>
+</nobr><br>
+<!-- Field abc_ic_menu_paste_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_paste_material" class="hiddenlink" target="rightframe">abc_ic_menu_paste_material</A>
+</nobr><br>
+<!-- Field abc_ic_menu_selectall_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_selectall_material" class="hiddenlink" target="rightframe">abc_ic_menu_selectall_material</A>
+</nobr><br>
+<!-- Field abc_ic_menu_share_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_share_material" class="hiddenlink" target="rightframe">abc_ic_menu_share_material</A>
+</nobr><br>
+<!-- Field abc_ic_star_black_16dp -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_star_black_16dp" class="hiddenlink" target="rightframe">abc_ic_star_black_16dp</A>
+</nobr><br>
+<!-- Field abc_ic_star_black_36dp -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_star_black_36dp" class="hiddenlink" target="rightframe">abc_ic_star_black_36dp</A>
+</nobr><br>
+<!-- Field abc_ic_star_half_black_16dp -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_star_half_black_16dp" class="hiddenlink" target="rightframe">abc_ic_star_half_black_16dp</A>
+</nobr><br>
+<!-- Field abc_ic_star_half_black_36dp -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_star_half_black_36dp" class="hiddenlink" target="rightframe">abc_ic_star_half_black_36dp</A>
+</nobr><br>
+<!-- Field abc_ic_voice_search_api_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_voice_search_api_material" class="hiddenlink" target="rightframe">abc_ic_voice_search_api_material</A>
+</nobr><br>
+<!-- Field abc_ratingbar_indicator_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ratingbar_indicator_material" class="hiddenlink" target="rightframe">abc_ratingbar_indicator_material</A>
+</nobr><br>
+<!-- Field abc_ratingbar_small_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ratingbar_small_material" class="hiddenlink" target="rightframe">abc_ratingbar_small_material</A>
+</nobr><br>
+<!-- Field ACTION_ID_CANCEL -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ACTION_ID_CANCEL" class="hiddenlink" target="rightframe">ACTION_ID_CANCEL</A>
+</nobr><br>
+<!-- Field ACTION_ID_CONTINUE -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ACTION_ID_CONTINUE" class="hiddenlink" target="rightframe">ACTION_ID_CONTINUE</A>
+</nobr><br>
+<!-- Field ACTION_ID_CURRENT -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ACTION_ID_CURRENT" class="hiddenlink" target="rightframe">ACTION_ID_CURRENT</A>
+</nobr><br>
+<!-- Field ACTION_ID_FINISH -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ACTION_ID_FINISH" class="hiddenlink" target="rightframe">ACTION_ID_FINISH</A>
+</nobr><br>
+<!-- Field ACTION_ID_NEXT -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ACTION_ID_NEXT" class="hiddenlink" target="rightframe">ACTION_ID_NEXT</A>
+</nobr><br>
+<!-- Field ACTION_ID_NO -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ACTION_ID_NO" class="hiddenlink" target="rightframe">ACTION_ID_NO</A>
+</nobr><br>
+<!-- Field ACTION_ID_OK -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ACTION_ID_OK" class="hiddenlink" target="rightframe">ACTION_ID_OK</A>
+</nobr><br>
+<!-- Field ACTION_ID_YES -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ACTION_ID_YES" class="hiddenlink" target="rightframe">ACTION_ID_YES</A>
+</nobr><br>
+<!-- Method addDefaultShareMenuItem -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.Builder.html#android.support.customtabs.CustomTabsIntent.Builder.addDefaultShareMenuItem_added()" class="hiddenlink" target="rightframe"><b>addDefaultShareMenuItem</b>
+()</A></nobr><br>
+<!-- Method addDrawerListener -->
+<nobr><A HREF="android.support.v4.widget.DrawerLayout.html#android.support.v4.widget.DrawerLayout.addDrawerListener_added(android.support.v4.widget.DrawerLayout.DrawerListener)" class="hiddenlink" target="rightframe"><b>addDrawerListener</b>
+(<code>DrawerListener</code>)</A></nobr><br>
+<!-- Method addTarget -->
+<nobr><A HREF="android.support.v7.graphics.Palette.Builder.html#android.support.v7.graphics.Palette.Builder.addTarget_added(android.support.v7.graphics.Target)" class="hiddenlink" target="rightframe"><b>addTarget</b>
+(<code>Target</code>)</A></nobr><br>
+<!-- Method addToolbarItem -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.Builder.html#android.support.customtabs.CustomTabsIntent.Builder.addToolbarItem_added(int, android.graphics.Bitmap, java.lang.String, android.app.PendingIntent)" class="hiddenlink" target="rightframe"><b>addToolbarItem</b>
+(<code>int, Bitmap, String, PendingIntent</code>)</A></nobr><br>
+<!-- Package android.support.graphics.drawable -->
+<A HREF="changes-summary.html#android.support.graphics.drawable" class="hiddenlink" target="rightframe"><b>android.support.graphics.drawable</b></A><br>
+<!-- Package android.support.v17.leanback.widget.picker -->
+<A HREF="changes-summary.html#android.support.v17.leanback.widget.picker" class="hiddenlink" target="rightframe"><b>android.support.v17.leanback.widget.picker</b></A><br>
+<!-- Field AppCompatImageView -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatImageView" class="hiddenlink" target="rightframe">AppCompatImageView</A>
+</nobr><br>
+<!-- Field AppCompatImageView_android_src -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatImageView_android_src" class="hiddenlink" target="rightframe">AppCompatImageView_android_src</A>
+</nobr><br>
+<!-- Field AppCompatImageView_srcCompat -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatImageView_srcCompat" class="hiddenlink" target="rightframe">AppCompatImageView_srcCompat</A>
+</nobr><br>
+<!-- Field AppCompatTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme" class="hiddenlink" target="rightframe">AppCompatTheme</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarDivider -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarDivider" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarDivider</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarItemBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarItemBackground" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarItemBackground</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarPopupTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarPopupTheme" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarPopupTheme</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarSize -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarSize" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarSize</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarSplitStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarSplitStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarSplitStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarTabBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarTabBarStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarTabBarStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarTabStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarTabStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarTabStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarTabTextStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarTabTextStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarTabTextStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarTheme" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarTheme</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarWidgetTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarWidgetTheme" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarWidgetTheme</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionDropDownStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionDropDownStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionDropDownStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionMenuTextAppearance -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionMenuTextAppearance" class="hiddenlink" target="rightframe">AppCompatTheme_actionMenuTextAppearance</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionMenuTextColor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionMenuTextColor" class="hiddenlink" target="rightframe">AppCompatTheme_actionMenuTextColor</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeBackground" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeBackground</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeCloseButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeCloseButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeCloseButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeCloseDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeCloseDrawable" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeCloseDrawable</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeCopyDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeCopyDrawable" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeCopyDrawable</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeCutDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeCutDrawable" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeCutDrawable</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeFindDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeFindDrawable" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeFindDrawable</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModePasteDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModePasteDrawable" class="hiddenlink" target="rightframe">AppCompatTheme_actionModePasteDrawable</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModePopupWindowStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModePopupWindowStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionModePopupWindowStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeSelectAllDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeSelectAllDrawable" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeSelectAllDrawable</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeShareDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeShareDrawable" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeShareDrawable</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeSplitBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeSplitBackground" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeSplitBackground</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeWebSearchDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeWebSearchDrawable" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeWebSearchDrawable</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionOverflowButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionOverflowButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionOverflowButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionOverflowMenuStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionOverflowMenuStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionOverflowMenuStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_activityChooserViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_activityChooserViewStyle" class="hiddenlink" target="rightframe">AppCompatTheme_activityChooserViewStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_alertDialogButtonGroupStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_alertDialogButtonGroupStyle" class="hiddenlink" target="rightframe">AppCompatTheme_alertDialogButtonGroupStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_alertDialogCenterButtons -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_alertDialogCenterButtons" class="hiddenlink" target="rightframe">AppCompatTheme_alertDialogCenterButtons</A>
+</nobr><br>
+<!-- Field AppCompatTheme_alertDialogStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_alertDialogStyle" class="hiddenlink" target="rightframe">AppCompatTheme_alertDialogStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_alertDialogTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_alertDialogTheme" class="hiddenlink" target="rightframe">AppCompatTheme_alertDialogTheme</A>
+</nobr><br>
+<!-- Field AppCompatTheme_android_windowAnimationStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_android_windowAnimationStyle" class="hiddenlink" target="rightframe">AppCompatTheme_android_windowAnimationStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_android_windowIsFloating -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_android_windowIsFloating" class="hiddenlink" target="rightframe">AppCompatTheme_android_windowIsFloating</A>
+</nobr><br>
+<!-- Field AppCompatTheme_autoCompleteTextViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_autoCompleteTextViewStyle" class="hiddenlink" target="rightframe">AppCompatTheme_autoCompleteTextViewStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_borderlessButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_borderlessButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_borderlessButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_buttonBarButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonBarButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_buttonBarButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_buttonBarNegativeButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonBarNegativeButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_buttonBarNegativeButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_buttonBarNeutralButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonBarNeutralButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_buttonBarNeutralButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_buttonBarPositiveButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonBarPositiveButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_buttonBarPositiveButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_buttonBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonBarStyle" class="hiddenlink" target="rightframe">AppCompatTheme_buttonBarStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_buttonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_buttonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_buttonStyleSmall -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonStyleSmall" class="hiddenlink" target="rightframe">AppCompatTheme_buttonStyleSmall</A>
+</nobr><br>
+<!-- Field AppCompatTheme_checkboxStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_checkboxStyle" class="hiddenlink" target="rightframe">AppCompatTheme_checkboxStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_checkedTextViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_checkedTextViewStyle" class="hiddenlink" target="rightframe">AppCompatTheme_checkedTextViewStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_colorAccent -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_colorAccent" class="hiddenlink" target="rightframe">AppCompatTheme_colorAccent</A>
+</nobr><br>
+<!-- Field AppCompatTheme_colorButtonNormal -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_colorButtonNormal" class="hiddenlink" target="rightframe">AppCompatTheme_colorButtonNormal</A>
+</nobr><br>
+<!-- Field AppCompatTheme_colorControlActivated -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_colorControlActivated" class="hiddenlink" target="rightframe">AppCompatTheme_colorControlActivated</A>
+</nobr><br>
+<!-- Field AppCompatTheme_colorControlHighlight -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_colorControlHighlight" class="hiddenlink" target="rightframe">AppCompatTheme_colorControlHighlight</A>
+</nobr><br>
+<!-- Field AppCompatTheme_colorControlNormal -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_colorControlNormal" class="hiddenlink" target="rightframe">AppCompatTheme_colorControlNormal</A>
+</nobr><br>
+<!-- Field AppCompatTheme_colorPrimary -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_colorPrimary" class="hiddenlink" target="rightframe">AppCompatTheme_colorPrimary</A>
+</nobr><br>
+<!-- Field AppCompatTheme_colorPrimaryDark -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_colorPrimaryDark" class="hiddenlink" target="rightframe">AppCompatTheme_colorPrimaryDark</A>
+</nobr><br>
+<!-- Field AppCompatTheme_colorSwitchThumbNormal -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_colorSwitchThumbNormal" class="hiddenlink" target="rightframe">AppCompatTheme_colorSwitchThumbNormal</A>
+</nobr><br>
+<!-- Field AppCompatTheme_controlBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_controlBackground" class="hiddenlink" target="rightframe">AppCompatTheme_controlBackground</A>
+</nobr><br>
+<!-- Field AppCompatTheme_dialogPreferredPadding -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_dialogPreferredPadding" class="hiddenlink" target="rightframe">AppCompatTheme_dialogPreferredPadding</A>
+</nobr><br>
+<!-- Field AppCompatTheme_dialogTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_dialogTheme" class="hiddenlink" target="rightframe">AppCompatTheme_dialogTheme</A>
+</nobr><br>
+<!-- Field AppCompatTheme_dividerHorizontal -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_dividerHorizontal" class="hiddenlink" target="rightframe">AppCompatTheme_dividerHorizontal</A>
+</nobr><br>
+<!-- Field AppCompatTheme_dividerVertical -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_dividerVertical" class="hiddenlink" target="rightframe">AppCompatTheme_dividerVertical</A>
+</nobr><br>
+<!-- Field AppCompatTheme_dropdownListPreferredItemHeight -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_dropdownListPreferredItemHeight" class="hiddenlink" target="rightframe">AppCompatTheme_dropdownListPreferredItemHeight</A>
+</nobr><br>
+<!-- Field AppCompatTheme_dropDownListViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_dropDownListViewStyle" class="hiddenlink" target="rightframe">AppCompatTheme_dropDownListViewStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_editTextBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_editTextBackground" class="hiddenlink" target="rightframe">AppCompatTheme_editTextBackground</A>
+</nobr><br>
+<!-- Field AppCompatTheme_editTextColor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_editTextColor" class="hiddenlink" target="rightframe">AppCompatTheme_editTextColor</A>
+</nobr><br>
+<!-- Field AppCompatTheme_editTextStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_editTextStyle" class="hiddenlink" target="rightframe">AppCompatTheme_editTextStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_homeAsUpIndicator -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_homeAsUpIndicator" class="hiddenlink" target="rightframe">AppCompatTheme_homeAsUpIndicator</A>
+</nobr><br>
+<!-- Field AppCompatTheme_imageButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_imageButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_imageButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_listChoiceBackgroundIndicator -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_listChoiceBackgroundIndicator" class="hiddenlink" target="rightframe">AppCompatTheme_listChoiceBackgroundIndicator</A>
+</nobr><br>
+<!-- Field AppCompatTheme_listDividerAlertDialog -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_listDividerAlertDialog" class="hiddenlink" target="rightframe">AppCompatTheme_listDividerAlertDialog</A>
+</nobr><br>
+<!-- Field AppCompatTheme_listPopupWindowStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_listPopupWindowStyle" class="hiddenlink" target="rightframe">AppCompatTheme_listPopupWindowStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_listPreferredItemHeight -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_listPreferredItemHeight" class="hiddenlink" target="rightframe">AppCompatTheme_listPreferredItemHeight</A>
+</nobr><br>
+<!-- Field AppCompatTheme_listPreferredItemHeightLarge -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_listPreferredItemHeightLarge" class="hiddenlink" target="rightframe">AppCompatTheme_listPreferredItemHeightLarge</A>
+</nobr><br>
+<!-- Field AppCompatTheme_listPreferredItemHeightSmall -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_listPreferredItemHeightSmall" class="hiddenlink" target="rightframe">AppCompatTheme_listPreferredItemHeightSmall</A>
+</nobr><br>
+<!-- Field AppCompatTheme_listPreferredItemPaddingLeft -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_listPreferredItemPaddingLeft" class="hiddenlink" target="rightframe">AppCompatTheme_listPreferredItemPaddingLeft</A>
+</nobr><br>
+<!-- Field AppCompatTheme_listPreferredItemPaddingRight -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_listPreferredItemPaddingRight" class="hiddenlink" target="rightframe">AppCompatTheme_listPreferredItemPaddingRight</A>
+</nobr><br>
+<!-- Field AppCompatTheme_panelBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_panelBackground" class="hiddenlink" target="rightframe">AppCompatTheme_panelBackground</A>
+</nobr><br>
+<!-- Field AppCompatTheme_panelMenuListTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_panelMenuListTheme" class="hiddenlink" target="rightframe">AppCompatTheme_panelMenuListTheme</A>
+</nobr><br>
+<!-- Field AppCompatTheme_panelMenuListWidth -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_panelMenuListWidth" class="hiddenlink" target="rightframe">AppCompatTheme_panelMenuListWidth</A>
+</nobr><br>
+<!-- Field AppCompatTheme_popupMenuStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_popupMenuStyle" class="hiddenlink" target="rightframe">AppCompatTheme_popupMenuStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_popupWindowStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_popupWindowStyle" class="hiddenlink" target="rightframe">AppCompatTheme_popupWindowStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_radioButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_radioButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_radioButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_ratingBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_ratingBarStyle" class="hiddenlink" target="rightframe">AppCompatTheme_ratingBarStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_ratingBarStyleIndicator -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_ratingBarStyleIndicator" class="hiddenlink" target="rightframe">AppCompatTheme_ratingBarStyleIndicator</A>
+</nobr><br>
+<!-- Field AppCompatTheme_ratingBarStyleSmall -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_ratingBarStyleSmall" class="hiddenlink" target="rightframe">AppCompatTheme_ratingBarStyleSmall</A>
+</nobr><br>
+<!-- Field AppCompatTheme_searchViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_searchViewStyle" class="hiddenlink" target="rightframe">AppCompatTheme_searchViewStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_seekBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_seekBarStyle" class="hiddenlink" target="rightframe">AppCompatTheme_seekBarStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_selectableItemBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_selectableItemBackground" class="hiddenlink" target="rightframe">AppCompatTheme_selectableItemBackground</A>
+</nobr><br>
+<!-- Field AppCompatTheme_selectableItemBackgroundBorderless -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_selectableItemBackgroundBorderless" class="hiddenlink" target="rightframe">AppCompatTheme_selectableItemBackgroundBorderless</A>
+</nobr><br>
+<!-- Field AppCompatTheme_spinnerDropDownItemStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_spinnerDropDownItemStyle" class="hiddenlink" target="rightframe">AppCompatTheme_spinnerDropDownItemStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_spinnerStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_spinnerStyle" class="hiddenlink" target="rightframe">AppCompatTheme_spinnerStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_switchStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_switchStyle" class="hiddenlink" target="rightframe">AppCompatTheme_switchStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_textAppearanceLargePopupMenu -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceLargePopupMenu" class="hiddenlink" target="rightframe">AppCompatTheme_textAppearanceLargePopupMenu</A>
+</nobr><br>
+<!-- Field AppCompatTheme_textAppearanceListItem -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceListItem" class="hiddenlink" target="rightframe">AppCompatTheme_textAppearanceListItem</A>
+</nobr><br>
+<!-- Field AppCompatTheme_textAppearanceListItemSmall -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceListItemSmall" class="hiddenlink" target="rightframe">AppCompatTheme_textAppearanceListItemSmall</A>
+</nobr><br>
+<!-- Field AppCompatTheme_textAppearanceSearchResultSubtitle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceSearchResultSubtitle" class="hiddenlink" target="rightframe">AppCompatTheme_textAppearanceSearchResultSubtitle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_textAppearanceSearchResultTitle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceSearchResultTitle" class="hiddenlink" target="rightframe">AppCompatTheme_textAppearanceSearchResultTitle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_textAppearanceSmallPopupMenu -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceSmallPopupMenu" class="hiddenlink" target="rightframe">AppCompatTheme_textAppearanceSmallPopupMenu</A>
+</nobr><br>
+<!-- Field AppCompatTheme_textColorAlertDialogListItem -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_textColorAlertDialogListItem" class="hiddenlink" target="rightframe">AppCompatTheme_textColorAlertDialogListItem</A>
+</nobr><br>
+<!-- Field AppCompatTheme_textColorSearchUrl -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_textColorSearchUrl" class="hiddenlink" target="rightframe">AppCompatTheme_textColorSearchUrl</A>
+</nobr><br>
+<!-- Field AppCompatTheme_toolbarNavigationButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_toolbarNavigationButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_toolbarNavigationButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_toolbarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_toolbarStyle" class="hiddenlink" target="rightframe">AppCompatTheme_toolbarStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowActionBar -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowActionBar" class="hiddenlink" target="rightframe">AppCompatTheme_windowActionBar</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowActionBarOverlay -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowActionBarOverlay" class="hiddenlink" target="rightframe">AppCompatTheme_windowActionBarOverlay</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowActionModeOverlay -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowActionModeOverlay" class="hiddenlink" target="rightframe">AppCompatTheme_windowActionModeOverlay</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowFixedHeightMajor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowFixedHeightMajor" class="hiddenlink" target="rightframe">AppCompatTheme_windowFixedHeightMajor</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowFixedHeightMinor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowFixedHeightMinor" class="hiddenlink" target="rightframe">AppCompatTheme_windowFixedHeightMinor</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowFixedWidthMajor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowFixedWidthMajor" class="hiddenlink" target="rightframe">AppCompatTheme_windowFixedWidthMajor</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowFixedWidthMinor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowFixedWidthMinor" class="hiddenlink" target="rightframe">AppCompatTheme_windowFixedWidthMinor</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowMinWidthMajor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowMinWidthMajor" class="hiddenlink" target="rightframe">AppCompatTheme_windowMinWidthMajor</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowMinWidthMinor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowMinWidthMinor" class="hiddenlink" target="rightframe">AppCompatTheme_windowMinWidthMinor</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowNoTitle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowNoTitle" class="hiddenlink" target="rightframe">AppCompatTheme_windowNoTitle</A>
+</nobr><br>
+<!-- Method applyDayNight -->
+<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.applyDayNight_added()" class="hiddenlink" target="rightframe"><b>applyDayNight</b>
+()</A></nobr><br>
+<!-- Method applyTheme -->
+<nobr><A HREF="android.support.v4.graphics.drawable.DrawableCompat.html#android.support.v4.graphics.drawable.DrawableCompat.applyTheme_added(android.graphics.drawable.Drawable, android.content.res.Resources.Theme)" class="hiddenlink" target="rightframe"><b>applyTheme</b>
+(<code>Drawable, Theme</code>)</A></nobr><br>
+<!-- Field Base_Widget_AppCompat_RatingBar_Indicator -->
+<A NAME="B"></A>
+<br><font size="+2">B</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Base_Widget_AppCompat_RatingBar_Indicator" class="hiddenlink" target="rightframe">Base_Widget_AppCompat_RatingBar_Indicator</A>
+</nobr><br>
+<!-- Field Base_Widget_AppCompat_RatingBar_Small -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Base_Widget_AppCompat_RatingBar_Small" class="hiddenlink" target="rightframe">Base_Widget_AppCompat_RatingBar_Small</A>
+</nobr><br>
+<!-- Method blendARGB -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.blendARGB_added(int, int, float)" class="hiddenlink" target="rightframe"><b>blendARGB</b>
+(<code>int, int, float</code>)</A></nobr><br>
+<!-- Method blendHSL -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.blendHSL_added(float[], float[], float, float[])" class="hiddenlink" target="rightframe"><b>blendHSL</b>
+(<code>float[], float[], float, float[]</code>)</A></nobr><br>
+<!-- Method blendLAB -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.blendLAB_added(double[], double[], double, double[])" class="hiddenlink" target="rightframe"><b>blendLAB</b>
+(<code>double[], double[], double, double[]</code>)</A></nobr><br>
+<!-- Class BottomSheetBehavior -->
+<A HREF="pkg_android.support.design.widget.html#BottomSheetBehavior" class="hiddenlink" target="rightframe"><b>BottomSheetBehavior</b></A><br>
+<!-- Class BottomSheetBehavior.BottomSheetCallback -->
+<A HREF="pkg_android.support.design.widget.html#BottomSheetBehavior.BottomSheetCallback" class="hiddenlink" target="rightframe"><b>BottomSheetBehavior.BottomSheetCallback</b></A><br>
+<!-- Class BottomSheetBehavior.SavedState -->
+<A HREF="pkg_android.support.design.widget.html#BottomSheetBehavior.SavedState" class="hiddenlink" target="rightframe"><b>BottomSheetBehavior.SavedState</b></A><br>
+<!-- Class BottomSheetDialog -->
+<A HREF="pkg_android.support.design.widget.html#BottomSheetDialog" class="hiddenlink" target="rightframe"><b>BottomSheetDialog</b></A><br>
+<!-- Class BottomSheetDialogFragment -->
+<A HREF="pkg_android.support.design.widget.html#BottomSheetDialogFragment" class="hiddenlink" target="rightframe"><b>BottomSheetDialogFragment</b></A><br>
+<!-- Method canApplyTheme -->
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.graphics.drawable.DrawableCompat.html#android.support.v4.graphics.drawable.DrawableCompat.canApplyTheme_added(android.graphics.drawable.Drawable)" class="hiddenlink" target="rightframe"><b>canApplyTheme</b>
+(<code>Drawable</code>)</A></nobr><br>
+<!-- Method canReuseUpdatedViewHolder -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.ItemAnimator.html#android.support.v7.widget.RecyclerView.ItemAnimator.canReuseUpdatedViewHolder_added(android.support.v7.widget.RecyclerView.ViewHolder, java.util.List<java.lang.Object>)" class="hiddenlink" target="rightframe"><b>canReuseUpdatedViewHolder</b>
+(<code>ViewHolder, List&lt;Object&gt;</code>)</A></nobr><br>
+<!-- Field CHECKBOX_CHECK_SET_ID -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.CHECKBOX_CHECK_SET_ID" class="hiddenlink" target="rightframe">CHECKBOX_CHECK_SET_ID</A>
+</nobr><br>
+<!-- Method chooseSize -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.chooseSize_added(int, int, int)" class="hiddenlink" target="rightframe"><b>chooseSize</b>
+(<code>int, int, int</code>)</A></nobr><br>
+<!-- Method clearTargets -->
+<nobr><A HREF="android.support.v7.graphics.Palette.Builder.html#android.support.v7.graphics.Palette.Builder.clearTargets_added()" class="hiddenlink" target="rightframe"><b>clearTargets</b>
+()</A></nobr><br>
+<!-- Method collapseSubActions -->
+<i>collapseSubActions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.collapseSubActions_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method collapseSubActions -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.collapseSubActions_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method colorToLAB -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.colorToLAB_added(int, double[])" class="hiddenlink" target="rightframe"><b>colorToLAB</b>
+(<code>int, double[]</code>)</A></nobr><br>
+<!-- Method colorToXYZ -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.colorToXYZ_added(int, double[])" class="hiddenlink" target="rightframe"><b>colorToXYZ</b>
+(<code>int, double[]</code>)</A></nobr><br>
+<!-- Method distanceEuclidean -->
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.distanceEuclidean_added(double[], double[])" class="hiddenlink" target="rightframe"><b>distanceEuclidean</b>
+(<code>double[], double[]</code>)</A></nobr><br>
+<!-- Method expandSubActions -->
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>expandSubActions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.expandSubActions_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>GuidedAction</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method expandSubActions -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.expandSubActions_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>GuidedAction</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Field EXTRA_DEFAULT_SHARE_MENU_ITEM -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.EXTRA_DEFAULT_SHARE_MENU_ITEM" class="hiddenlink" target="rightframe">EXTRA_DEFAULT_SHARE_MENU_ITEM</A>
+</nobr><br>
+<!-- Field EXTRA_SECONDARY_TOOLBAR_COLOR -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.EXTRA_SECONDARY_TOOLBAR_COLOR" class="hiddenlink" target="rightframe">EXTRA_SECONDARY_TOOLBAR_COLOR</A>
+</nobr><br>
+<!-- Field EXTRA_TOOLBAR_ITEMS -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.EXTRA_TOOLBAR_ITEMS" class="hiddenlink" target="rightframe">EXTRA_TOOLBAR_ITEMS</A>
+</nobr><br>
+<!-- Method fillMarginLayoutParams -->
+<A NAME="F"></A>
+<br><font size="+2">F</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>fillMarginLayoutParams</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html#android.support.percent.PercentLayoutHelper.PercentLayoutInfo.fillMarginLayoutParams_added(android.view.View, android.view.ViewGroup.MarginLayoutParams, int, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>View, MarginLayoutParams, int, int</code>)</b>&nbsp;in&nbsp;android.support.percent.PercentLayoutHelper.PercentLayoutInfo
+</A></nobr><br>
+<!-- Method fillMarginLayoutParams -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html#android.support.percent.PercentLayoutHelper.PercentLayoutInfo.fillMarginLayoutParams_added(android.view.ViewGroup.MarginLayoutParams, int, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>MarginLayoutParams, int, int</code>)</b>&nbsp;in&nbsp;android.support.percent.PercentLayoutHelper.PercentLayoutInfo
+</A></nobr><br>
+<!-- Method findActionById -->
+<i>findActionById</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.findActionById_added(long)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>long</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method findActionById -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.findActionById_added(long)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>long</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method findActionPositionById -->
+<i>findActionPositionById</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.findActionPositionById_added(long)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>long</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method findActionPositionById -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.findActionPositionById_added(long)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>long</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method findButtonActionById -->
+<i>findButtonActionById</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.findButtonActionById_added(long)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>long</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method findButtonActionById -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.findButtonActionById_added(long)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>long</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method findButtonActionPositionById -->
+<i>findButtonActionPositionById</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.findButtonActionPositionById_added(long)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>long</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method findButtonActionPositionById -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.findButtonActionPositionById_added(long)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>long</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method findContainingItemView -->
+<i>findContainingItemView</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.widget.RecyclerView.html#android.support.v7.widget.RecyclerView.findContainingItemView_added(android.view.View)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>View</code>)</b>&nbsp;in&nbsp;android.support.v7.widget.RecyclerView
+</A></nobr><br>
+<!-- Method findContainingItemView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.findContainingItemView_added(android.view.View)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>View</code>)</b>&nbsp;in&nbsp;android.support.v7.widget.RecyclerView.LayoutManager
+</A></nobr><br>
+<!-- Method findContainingViewHolder -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.html#android.support.v7.widget.RecyclerView.findContainingViewHolder_added(android.view.View)" class="hiddenlink" target="rightframe"><b>findContainingViewHolder</b>
+(<code>View</code>)</A></nobr><br>
+<!-- Method finishGuidedStepFragments -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.finishGuidedStepFragments_added()" class="hiddenlink" target="rightframe"><b>finishGuidedStepFragments</b>
+()</A></nobr><br>
+<!-- Method finishGuidedStepSupportFragments -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.finishGuidedStepSupportFragments_added()" class="hiddenlink" target="rightframe"><b>finishGuidedStepSupportFragments</b>
+()</A></nobr><br>
+<!-- Method getAction -->
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.getAction_added()" class="hiddenlink" target="rightframe"><b>getAction</b>
+()</A></nobr><br>
+<!-- Method getAlpha -->
+<nobr><A HREF="android.support.v4.graphics.drawable.DrawableCompat.html#android.support.v4.graphics.drawable.DrawableCompat.getAlpha_added(android.graphics.drawable.Drawable)" class="hiddenlink" target="rightframe"><b>getAlpha</b>
+(<code>Drawable</code>)</A></nobr><br>
+<!-- Method getButtonActionItemView -->
+<i>getButtonActionItemView</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getButtonActionItemView_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method getButtonActionItemView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.getButtonActionItemView_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method getButtonActions -->
+<i>getButtonActions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getButtonActions_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method getButtonActions -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.getButtonActions_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method getChildMeasureSpec -->
+<i>getChildMeasureSpec</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.getChildMeasureSpec_added(int, int, int, int, boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int, int, int, int, boolean</code>)</b>&nbsp;in&nbsp;android.support.v7.widget.RecyclerView.LayoutManager
+</A></nobr><br>
+<!-- Method getChildMeasureSpec -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.getChildMeasureSpec_added(int, int, int, boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int, int, int, boolean</code>)</b>&nbsp;in&nbsp;android.support.v7.widget.RecyclerView.LayoutManager
+</A></nobr><br>
+<!-- Method getColorFilter -->
+<nobr><A HREF="android.support.v4.graphics.drawable.DrawableCompat.html#android.support.v4.graphics.drawable.DrawableCompat.getColorFilter_added(android.graphics.drawable.Drawable)" class="hiddenlink" target="rightframe"><b>getColorFilter</b>
+(<code>Drawable</code>)</A></nobr><br>
+<!-- Method getColorForTarget -->
+<nobr><A HREF="android.support.v7.graphics.Palette.html#android.support.v7.graphics.Palette.getColorForTarget_added(android.support.v7.graphics.Target, int)" class="hiddenlink" target="rightframe"><b>getColorForTarget</b>
+(<code>Target, int</code>)</A></nobr><br>
+<!-- Method getCompatElevation -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.getCompatElevation_added()" class="hiddenlink" target="rightframe"><b>getCompatElevation</b>
+()</A></nobr><br>
+<!-- Method getContentBackground -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.getContentBackground_added()" class="hiddenlink" target="rightframe"><b>getContentBackground</b>
+()</A></nobr><br>
+<!-- Method getContentRect -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.getContentRect_added(android.graphics.Rect)" class="hiddenlink" target="rightframe"><b>getContentRect</b>
+(<code>Rect</code>)</A></nobr><br>
+<!-- Method getDefaultNightMode -->
+<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.getDefaultNightMode_added()" class="hiddenlink" target="rightframe"><b>getDefaultNightMode</b>
+()</A></nobr><br>
+<!-- Method getDescriptionEditInputType -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.getDescriptionEditInputType_added()" class="hiddenlink" target="rightframe"><b>getDescriptionEditInputType</b>
+()</A></nobr><br>
+<!-- Method getDescriptionInputType -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.getDescriptionInputType_added()" class="hiddenlink" target="rightframe"><b>getDescriptionInputType</b>
+()</A></nobr><br>
+<!-- Method getEditableDescriptionView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.getEditableDescriptionView_added()" class="hiddenlink" target="rightframe"><b>getEditableDescriptionView</b>
+()</A></nobr><br>
+<!-- Method getEditDescription -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.getEditDescription_added()" class="hiddenlink" target="rightframe"><b>getEditDescription</b>
+()</A></nobr><br>
+<!-- Method getEditingView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.getEditingView_added()" class="hiddenlink" target="rightframe"><b>getEditingView</b>
+()</A></nobr><br>
+<!-- Method getEditInputType -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.getEditInputType_added()" class="hiddenlink" target="rightframe"><b>getEditInputType</b>
+()</A></nobr><br>
+<!-- Method getExpandedAction -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.getExpandedAction_added()" class="hiddenlink" target="rightframe"><b>getExpandedAction</b>
+()</A></nobr><br>
+<!-- Method getExpandedTitleMarginBottom -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.getExpandedTitleMarginBottom_added()" class="hiddenlink" target="rightframe"><b>getExpandedTitleMarginBottom</b>
+()</A></nobr><br>
+<!-- Method getExpandedTitleMarginEnd -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.getExpandedTitleMarginEnd_added()" class="hiddenlink" target="rightframe"><b>getExpandedTitleMarginEnd</b>
+()</A></nobr><br>
+<!-- Method getExpandedTitleMarginStart -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.getExpandedTitleMarginStart_added()" class="hiddenlink" target="rightframe"><b>getExpandedTitleMarginStart</b>
+()</A></nobr><br>
+<!-- Method getExpandedTitleMarginTop -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.getExpandedTitleMarginTop_added()" class="hiddenlink" target="rightframe"><b>getExpandedTitleMarginTop</b>
+()</A></nobr><br>
+<!-- Method getFactory -->
+<nobr><A HREF="android.support.v4.view.LayoutInflaterCompat.html#android.support.v4.view.LayoutInflaterCompat.getFactory_added(android.view.LayoutInflater)" class="hiddenlink" target="rightframe"><b>getFactory</b>
+(<code>LayoutInflater</code>)</A></nobr><br>
+<!-- Method getGuidedButtonActionsStylist -->
+<i>getGuidedButtonActionsStylist</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getGuidedButtonActionsStylist_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method getGuidedButtonActionsStylist -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.getGuidedButtonActionsStylist_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method getHeadersFragment -->
+<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.getHeadersFragment_added()" class="hiddenlink" target="rightframe"><b>getHeadersFragment</b>
+()</A></nobr><br>
+<!-- Method getHeadersSupportFragment -->
+<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.getHeadersSupportFragment_added()" class="hiddenlink" target="rightframe"><b>getHeadersSupportFragment</b>
+()</A></nobr><br>
+<!-- Method getHeightMode -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.getHeightMode_added()" class="hiddenlink" target="rightframe"><b>getHeightMode</b>
+()</A></nobr><br>
+<!-- Method getInputType -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.getInputType_added()" class="hiddenlink" target="rightframe"><b>getInputType</b>
+()</A></nobr><br>
+<!-- Method getItemViewHolder -->
+<nobr><A HREF="android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.html#android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.getItemViewHolder_added(int)" class="hiddenlink" target="rightframe"><b>getItemViewHolder</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method getItemViewType -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.getItemViewType_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe"><b>getItemViewType</b>
+(<code>GuidedAction</code>)</A></nobr><br>
+<!-- Method getMaxToolbarItems -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.getMaxToolbarItems_added()" class="hiddenlink" target="rightframe"><b>getMaxToolbarItems</b>
+()</A></nobr><br>
+<!-- Method getMode -->
+<nobr><A HREF="android.support.v7.widget.OrientationHelper.html#android.support.v7.widget.OrientationHelper.getMode_added()" class="hiddenlink" target="rightframe"><b>getMode</b>
+()</A></nobr><br>
+<!-- Method getModeInOther -->
+<nobr><A HREF="android.support.v7.widget.OrientationHelper.html#android.support.v7.widget.OrientationHelper.getModeInOther_added()" class="hiddenlink" target="rightframe"><b>getModeInOther</b>
+()</A></nobr><br>
+<!-- Method getOverlayTop -->
+<nobr><A HREF="android.support.design.widget.HeaderScrollingViewBehavior.html#android.support.design.widget.HeaderScrollingViewBehavior.getOverlayTop_added()" class="hiddenlink" target="rightframe"><b>getOverlayTop</b>
+()</A></nobr><br>
+<!-- Method getParentPresenter -->
+<nobr><A HREF="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.html#android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.getParentPresenter_added()" class="hiddenlink" target="rightframe"><b>getParentPresenter</b>
+()</A></nobr><br>
+<!-- Method getParentViewHolder -->
+<nobr><A HREF="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.html#android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.getParentViewHolder_added()" class="hiddenlink" target="rightframe"><b>getParentViewHolder</b>
+()</A></nobr><br>
+<!-- Method getRowsFragment -->
+<i>getRowsFragment</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.getRowsFragment_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method getRowsFragment -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.getRowsFragment_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+<!-- Method getRowsSupportFragment -->
+<i>getRowsSupportFragment</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.getRowsSupportFragment_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method getRowsSupportFragment -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.getRowsSupportFragment_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<!-- Method getRowViewHolder -->
+<i>getRowViewHolder</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.RowsFragment.html#android.support.v17.leanback.app.RowsFragment.getRowViewHolder_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.RowsFragment
+</A></nobr><br>
+<!-- Method getRowViewHolder -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.RowsSupportFragment.html#android.support.v17.leanback.app.RowsSupportFragment.getRowViewHolder_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.RowsSupportFragment
+</A></nobr><br>
+<!-- Method getSelectedButtonActionPosition -->
+<i>getSelectedButtonActionPosition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getSelectedButtonActionPosition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method getSelectedButtonActionPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.getSelectedButtonActionPosition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method getSelectedPosition -->
+<i>getSelectedPosition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BaseRowFragment.html#android.support.v17.leanback.app.BaseRowFragment.getSelectedPosition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BaseRowFragment
+</A></nobr><br>
+<!-- Method getSelectedPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BaseRowSupportFragment.html#android.support.v17.leanback.app.BaseRowSupportFragment.getSelectedPosition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BaseRowSupportFragment
+</A></nobr><br>
+<!-- Method getSelectedPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.getSelectedPosition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method getSelectedPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.getSelectedPosition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method getSelectedPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.html#android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.getSelectedPosition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.ListRowPresenter.ViewHolder
+</A></nobr><br>
+<!-- Method getSubActions -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.getSubActions_added()" class="hiddenlink" target="rightframe"><b>getSubActions</b>
+()</A></nobr><br>
+<!-- Method getSubActionsGridView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.getSubActionsGridView_added()" class="hiddenlink" target="rightframe"><b>getSubActionsGridView</b>
+()</A></nobr><br>
+<!-- Method getSwatchForTarget -->
+<nobr><A HREF="android.support.v7.graphics.Palette.html#android.support.v7.graphics.Palette.getSwatchForTarget_added(android.support.v7.graphics.Target)" class="hiddenlink" target="rightframe"><b>getSwatchForTarget</b>
+(<code>Target</code>)</A></nobr><br>
+<!-- Method getSwipeEscapeVelocity -->
+<nobr><A HREF="android.support.v7.widget.helper.ItemTouchHelper.Callback.html#android.support.v7.widget.helper.ItemTouchHelper.Callback.getSwipeEscapeVelocity_added(float)" class="hiddenlink" target="rightframe"><b>getSwipeEscapeVelocity</b>
+(<code>float</code>)</A></nobr><br>
+<!-- Method getSwipeVelocityThreshold -->
+<nobr><A HREF="android.support.v7.widget.helper.ItemTouchHelper.Callback.html#android.support.v7.widget.helper.ItemTouchHelper.Callback.getSwipeVelocityThreshold_added(float)" class="hiddenlink" target="rightframe"><b>getSwipeVelocityThreshold</b>
+(<code>float</code>)</A></nobr><br>
+<!-- Method getTargets -->
+<nobr><A HREF="android.support.v7.graphics.Palette.html#android.support.v7.graphics.Palette.getTargets_added()" class="hiddenlink" target="rightframe"><b>getTargets</b>
+()</A></nobr><br>
+<!-- Method getUseCompatPadding -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.getUseCompatPadding_added()" class="hiddenlink" target="rightframe"><b>getUseCompatPadding</b>
+()</A></nobr><br>
+<!-- Method getWidthMode -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.getWidthMode_added()" class="hiddenlink" target="rightframe"><b>getWidthMode</b>
+()</A></nobr><br>
+<!-- Constructor GuidedAction -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ctor_added()" class="hiddenlink" target="rightframe"><b>GuidedAction</b>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor GuidedAction.Builder -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.ctor_added(android.content.Context)" class="hiddenlink" target="rightframe"><b>GuidedAction.Builder</b>
+(<code>Context</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Class GuidedAction.BuilderBase -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#GuidedAction.BuilderBase" class="hiddenlink" target="rightframe"><b>GuidedAction.BuilderBase</b></A><br>
+<!-- Constructor GuidedActionsStylist.ViewHolder -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.ctor_added(android.view.View, boolean)" class="hiddenlink" target="rightframe"><b>GuidedActionsStylist.ViewHolder</b>
+(<code>View, boolean</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Class GuidedDatePickerAction -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#GuidedDatePickerAction" class="hiddenlink" target="rightframe"><b>GuidedDatePickerAction</b></A><br>
+<!-- Class GuidedDatePickerAction.Builder -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#GuidedDatePickerAction.Builder" class="hiddenlink" target="rightframe"><b>GuidedDatePickerAction.Builder</b></A><br>
+<!-- Class GuidedDatePickerAction.BuilderBase -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#GuidedDatePickerAction.BuilderBase" class="hiddenlink" target="rightframe"><b>GuidedDatePickerAction.BuilderBase</b></A><br>
+<!-- Method hasEditableActivatorView -->
+<A NAME="H"></A>
+<br><font size="+2">H</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.hasEditableActivatorView_added()" class="hiddenlink" target="rightframe"><b>hasEditableActivatorView</b>
+()</A></nobr><br>
+<!-- Method hasSubActions -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.hasSubActions_added()" class="hiddenlink" target="rightframe"><b>hasSubActions</b>
+()</A></nobr><br>
+<!-- Method hasTextEditable -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.hasTextEditable_added()" class="hiddenlink" target="rightframe"><b>hasTextEditable</b>
+()</A></nobr><br>
+<!-- Method inflate -->
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.graphics.drawable.DrawableCompat.html#android.support.v4.graphics.drawable.DrawableCompat.inflate_added(android.graphics.drawable.Drawable, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme)" class="hiddenlink" target="rightframe"><b>inflate</b>
+(<code>Drawable, Resources, XmlPullParser, AttributeSet, Theme</code>)</A></nobr><br>
+<!-- Method isAutoMeasureEnabled -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.isAutoMeasureEnabled_added()" class="hiddenlink" target="rightframe"><b>isAutoMeasureEnabled</b>
+()</A></nobr><br>
+<!-- Method isButtonActions -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.isButtonActions_added()" class="hiddenlink" target="rightframe"><b>isButtonActions</b>
+()</A></nobr><br>
+<!-- Method isCounterEnabled -->
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.isCounterEnabled_added()" class="hiddenlink" target="rightframe"><b>isCounterEnabled</b>
+()</A></nobr><br>
+<!-- Method isDescriptionEditable -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.isDescriptionEditable_added()" class="hiddenlink" target="rightframe"><b>isDescriptionEditable</b>
+()</A></nobr><br>
+<!-- Method isDividerAllowedAbove -->
+<nobr><A HREF="android.support.v7.preference.PreferenceViewHolder.html#android.support.v7.preference.PreferenceViewHolder.isDividerAllowedAbove_added()" class="hiddenlink" target="rightframe"><b>isDividerAllowedAbove</b>
+()</A></nobr><br>
+<!-- Method isDividerAllowedBelow -->
+<nobr><A HREF="android.support.v7.preference.PreferenceViewHolder.html#android.support.v7.preference.PreferenceViewHolder.isDividerAllowedBelow_added()" class="hiddenlink" target="rightframe"><b>isDividerAllowedBelow</b>
+()</A></nobr><br>
+<!-- Method isExpandTransitionSupported -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.isExpandTransitionSupported_added()" class="hiddenlink" target="rightframe"><b>isExpandTransitionSupported</b>
+()</A></nobr><br>
+<!-- Method isFocusable -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.isFocusable_added()" class="hiddenlink" target="rightframe"><b>isFocusable</b>
+()</A></nobr><br>
+<!-- Method isFocusOutEndAllowed -->
+<i>isFocusOutEndAllowed</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.isFocusOutEndAllowed_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method isFocusOutEndAllowed -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.isFocusOutEndAllowed_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method isFocusOutStartAllowed -->
+<i>isFocusOutStartAllowed</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.isFocusOutStartAllowed_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method isFocusOutStartAllowed -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.isFocusOutStartAllowed_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method isHintEnabled -->
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.isHintEnabled_added()" class="hiddenlink" target="rightframe"><b>isHintEnabled</b>
+()</A></nobr><br>
+<!-- Method isInEditing -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isInEditing_added()" class="hiddenlink" target="rightframe"><b>isInEditing</b>
+()</A></nobr><br>
+<!-- Method isInEditingActivatorView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isInEditingActivatorView_added()" class="hiddenlink" target="rightframe"><b>isInEditingActivatorView</b>
+()</A></nobr><br>
+<!-- Method isInEditingDescription -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isInEditingDescription_added()" class="hiddenlink" target="rightframe"><b>isInEditingDescription</b>
+()</A></nobr><br>
+<!-- Method isInEditingText -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isInEditingText_added()" class="hiddenlink" target="rightframe"><b>isInEditingText</b>
+()</A></nobr><br>
+<!-- Method isInEditingTitle -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isInEditingTitle_added()" class="hiddenlink" target="rightframe"><b>isInEditingTitle</b>
+()</A></nobr><br>
+<!-- Method isInExpandTransition -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.isInExpandTransition_added()" class="hiddenlink" target="rightframe"><b>isInExpandTransition</b>
+()</A></nobr><br>
+<!-- Method isMeasurementCacheEnabled -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.isMeasurementCacheEnabled_added()" class="hiddenlink" target="rightframe"><b>isMeasurementCacheEnabled</b>
+()</A></nobr><br>
+<!-- Method isMeasuring -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.State.html#android.support.v7.widget.RecyclerView.State.isMeasuring_added()" class="hiddenlink" target="rightframe"><b>isMeasuring</b>
+()</A></nobr><br>
+<!-- Method isSizeFromDrawableIntrinsic -->
+<nobr><A HREF="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.html#android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.isSizeFromDrawableIntrinsic_added()" class="hiddenlink" target="rightframe"><b>isSizeFromDrawableIntrinsic</b>
+()</A></nobr><br>
+<!-- Method isSubAction -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isSubAction_added()" class="hiddenlink" target="rightframe"><b>isSubAction</b>
+()</A></nobr><br>
+<!-- Method isSubActionsExpanded -->
+<i>isSubActionsExpanded</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.isSubActionsExpanded_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method isSubActionsExpanded -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.isSubActionsExpanded_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method isSubActionsExpanded -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.isSubActionsExpanded_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Field item_touch_helper_swipe_escape_max_velocity -->
+<nobr><A HREF="android.support.v7.recyclerview.R.dimen.html#android.support.v7.recyclerview.R.dimen.item_touch_helper_swipe_escape_max_velocity" class="hiddenlink" target="rightframe">item_touch_helper_swipe_escape_max_velocity</A>
+</nobr><br>
+<!-- Field item_touch_helper_swipe_escape_velocity -->
+<nobr><A HREF="android.support.v7.recyclerview.R.dimen.html#android.support.v7.recyclerview.R.dimen.item_touch_helper_swipe_escape_velocity" class="hiddenlink" target="rightframe">item_touch_helper_swipe_escape_velocity</A>
+</nobr><br>
+<!-- Field KEY_ID -->
+<A NAME="K"></A>
+<br><font size="+2">K</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.KEY_ID" class="hiddenlink" target="rightframe">KEY_ID</A>
+</nobr><br>
+<!-- Method LABToColor -->
+<A NAME="L"></A>
+<br><font size="+2">L</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.LABToColor_added(double, double, double)" class="hiddenlink" target="rightframe"><b>LABToColor</b>
+(<code>double, double, double</code>)</A></nobr><br>
+<!-- Method LABToXYZ -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.LABToXYZ_added(double, double, double, double[])" class="hiddenlink" target="rightframe"><b>LABToXYZ</b>
+(<code>double, double, double, double[]</code>)</A></nobr><br>
+<!-- Method layoutChild -->
+<i>layoutChild</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.HeaderScrollingViewBehavior.html#android.support.design.widget.HeaderScrollingViewBehavior.layoutChild_added(android.support.design.widget.CoordinatorLayout, android.view.View, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>CoordinatorLayout, View, int</code>)</b>&nbsp;in&nbsp;android.support.design.widget.HeaderScrollingViewBehavior
+</A></nobr><br>
+<!-- Method layoutChild -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.ViewOffsetBehavior.html#android.support.design.widget.ViewOffsetBehavior.layoutChild_added(android.support.design.widget.CoordinatorLayout, V, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>CoordinatorLayout, V, int</code>)</b>&nbsp;in&nbsp;android.support.design.widget.ViewOffsetBehavior
+</A></nobr><br>
+<!-- Class ListRowPresenter.SelectItemViewHolderTask -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#ListRowPresenter.SelectItemViewHolderTask" class="hiddenlink" target="rightframe"><b>ListRowPresenter.SelectItemViewHolderTask</b></A><br>
+<!-- Class ListViewCompat -->
+<A HREF="pkg_android.support.v4.widget.html#ListViewCompat" class="hiddenlink" target="rightframe"><b>ListViewCompat</b></A><br>
+<!-- Field LOCK_MODE_UNDEFINED -->
+<nobr><A HREF="android.support.v4.widget.DrawerLayout.html#android.support.v4.widget.DrawerLayout.LOCK_MODE_UNDEFINED" class="hiddenlink" target="rightframe">LOCK_MODE_UNDEFINED</A>
+</nobr><br>
+<!-- Class MediaBrowserCompat -->
+<A NAME="M"></A>
+<br><font size="+2">M</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserCompat" class="hiddenlink" target="rightframe"><b>MediaBrowserCompat</b></A><br>
+<!-- Class MediaBrowserCompat.ConnectionCallback -->
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserCompat.ConnectionCallback" class="hiddenlink" target="rightframe"><b>MediaBrowserCompat.ConnectionCallback</b></A><br>
+<!-- Class MediaBrowserCompat.ItemCallback -->
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserCompat.ItemCallback" class="hiddenlink" target="rightframe"><b>MediaBrowserCompat.ItemCallback</b></A><br>
+<!-- Class MediaBrowserCompat.MediaItem -->
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserCompat.MediaItem" class="hiddenlink" target="rightframe"><b>MediaBrowserCompat.MediaItem</b></A><br>
+<!-- Class MediaBrowserCompat.SubscriptionCallback -->
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserCompat.SubscriptionCallback" class="hiddenlink" target="rightframe"><b>MediaBrowserCompat.SubscriptionCallback</b></A><br>
+<!-- Class MediaBrowserServiceCompat -->
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserServiceCompat" class="hiddenlink" target="rightframe"><b>MediaBrowserServiceCompat</b></A><br>
+<!-- Class MediaBrowserServiceCompat.BrowserRoot -->
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserServiceCompat.BrowserRoot" class="hiddenlink" target="rightframe"><b>MediaBrowserServiceCompat.BrowserRoot</b></A><br>
+<!-- Class MediaBrowserServiceCompat.Result -->
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserServiceCompat.Result" class="hiddenlink" target="rightframe"><b>MediaBrowserServiceCompat.Result</b></A><br>
+<!-- Field MODE_NIGHT_AUTO -->
+<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.MODE_NIGHT_AUTO" class="hiddenlink" target="rightframe">MODE_NIGHT_AUTO</A>
+</nobr><br>
+<!-- Field MODE_NIGHT_FOLLOW_SYSTEM -->
+<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM" class="hiddenlink" target="rightframe">MODE_NIGHT_FOLLOW_SYSTEM</A>
+</nobr><br>
+<!-- Field MODE_NIGHT_NO -->
+<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.MODE_NIGHT_NO" class="hiddenlink" target="rightframe">MODE_NIGHT_NO</A>
+</nobr><br>
+<!-- Field MODE_NIGHT_YES -->
+<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.MODE_NIGHT_YES" class="hiddenlink" target="rightframe">MODE_NIGHT_YES</A>
+</nobr><br>
+<!-- Method notifyActionChanged -->
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>notifyActionChanged</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.notifyActionChanged_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method notifyActionChanged -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.notifyActionChanged_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method notifyButtonActionChanged -->
+<i>notifyButtonActionChanged</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.notifyButtonActionChanged_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method notifyButtonActionChanged -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.notifyButtonActionChanged_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method onAddSharedElementTransition -->
+<A NAME="O"></A>
+<br><font size="+2">O</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>onAddSharedElementTransition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onAddSharedElementTransition_added(android.app.FragmentTransaction, android.support.v17.leanback.app.GuidedStepFragment)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>FragmentTransaction, GuidedStepFragment</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method onAddSharedElementTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.onAddSharedElementTransition_added(android.support.v4.app.FragmentTransaction, android.support.v17.leanback.app.GuidedStepSupportFragment)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>FragmentTransaction, GuidedStepSupportFragment</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method onAnimateItemPressedCancelled -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onAnimateItemPressedCancelled_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder)" class="hiddenlink" target="rightframe"><b>onAnimateItemPressedCancelled</b>
+(<code>ViewHolder</code>)</A></nobr><br>
+<!-- Method onBindActivatorView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onBindActivatorView_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe"><b>onBindActivatorView</b>
+(<code>ViewHolder, GuidedAction</code>)</A></nobr><br>
+<!-- Method onBindCheckMarkView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onBindCheckMarkView_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe"><b>onBindCheckMarkView</b>
+(<code>ViewHolder, GuidedAction</code>)</A></nobr><br>
+<!-- Method onBindChevronView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onBindChevronView_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe"><b>onBindChevronView</b>
+(<code>ViewHolder, GuidedAction</code>)</A></nobr><br>
+<!-- Method onCreateBackgroundView -->
+<i>onCreateBackgroundView</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onCreateBackgroundView_added(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>LayoutInflater, ViewGroup, Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method onCreateBackgroundView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.onCreateBackgroundView_added(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>LayoutInflater, ViewGroup, Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method onCreateButtonActions -->
+<i>onCreateButtonActions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onCreateButtonActions_added(java.util.List<android.support.v17.leanback.widget.GuidedAction>, android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;GuidedAction&gt;, Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method onCreateButtonActions -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.onCreateButtonActions_added(java.util.List<android.support.v17.leanback.widget.GuidedAction>, android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;GuidedAction&gt;, Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method onCreateButtonActionsStylist -->
+<i>onCreateButtonActionsStylist</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onCreateButtonActionsStylist_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method onCreateButtonActionsStylist -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.onCreateButtonActionsStylist_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method onCreateView -->
+<nobr><A HREF="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.html#android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.onCreateView_added(android.view.ViewGroup)" class="hiddenlink" target="rightframe"><b>onCreateView</b>
+(<code>ViewGroup</code>)</A></nobr><br>
+<!-- Method onCreateViewHolder -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onCreateViewHolder_added(android.view.ViewGroup, int)" class="hiddenlink" target="rightframe"><b>onCreateViewHolder</b>
+(<code>ViewGroup, int</code>)</A></nobr><br>
+<!-- Method onDestroyView -->
+<i>onDestroyView</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onDestroyView_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onDestroyView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onDestroyView_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onEditingModeChange -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onEditingModeChange_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction, boolean)" class="hiddenlink" target="rightframe"><b>onEditingModeChange</b>
+(<code>ViewHolder, GuidedAction, boolean</code>)</A></nobr><br>
+<!-- Method onGuidedActionEditedAndProceed -->
+<i>onGuidedActionEditedAndProceed</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onGuidedActionEditedAndProceed_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>GuidedAction</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method onGuidedActionEditedAndProceed -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.onGuidedActionEditedAndProceed_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>GuidedAction</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method onProvideItemLayoutId -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onProvideItemLayoutId_added(int)" class="hiddenlink" target="rightframe"><b>onProvideItemLayoutId</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method onRouteUnselected -->
+<nobr><A HREF="android.support.v7.media.MediaRouter.Callback.html#android.support.v7.media.MediaRouter.Callback.onRouteUnselected_added(android.support.v7.media.MediaRouter, android.support.v7.media.MediaRouter.RouteInfo, int)" class="hiddenlink" target="rightframe"><b>onRouteUnselected</b>
+(<code>MediaRouter, RouteInfo, int</code>)</A></nobr><br>
+<!-- Method onSaveInstanceState -->
+<i>onSaveInstanceState</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.onSaveInstanceState_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.design.widget.TextInputLayout
+</A></nobr><br>
+<!-- Method onSaveInstanceState -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.onSaveInstanceState_added(android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bundle</code>)</b>&nbsp;in&nbsp;android.support.v7.app.AppCompatDelegate
+</A></nobr><br>
+<!-- Method onStartActivityFromFragment -->
+<nobr><A HREF="android.support.v4.app.FragmentHostCallback.html#android.support.v4.app.FragmentHostCallback.onStartActivityFromFragment_added(android.support.v4.app.Fragment, android.content.Intent, int, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>onStartActivityFromFragment</b>
+(<code>Fragment, Intent, int, Bundle</code>)</A></nobr><br>
+<!-- Method onSubGuidedActionClicked -->
+<i>onSubGuidedActionClicked</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onSubGuidedActionClicked_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>GuidedAction</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method onSubGuidedActionClicked -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.onSubGuidedActionClicked_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>GuidedAction</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method onUpdateActivatorView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onUpdateActivatorView_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe"><b>onUpdateActivatorView</b>
+(<code>ViewHolder, GuidedAction</code>)</A></nobr><br>
+<!-- Method onUpdateExpandedViewHolder -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onUpdateExpandedViewHolder_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder)" class="hiddenlink" target="rightframe"><b>onUpdateExpandedViewHolder</b>
+(<code>ViewHolder</code>)</A></nobr><br>
+<!-- Method popBackStackToGuidedStepFragment -->
+<A NAME="P"></A>
+<br><font size="+2">P</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.popBackStackToGuidedStepFragment_added(java.lang.Class, int)" class="hiddenlink" target="rightframe"><b>popBackStackToGuidedStepFragment</b>
+(<code>Class, int</code>)</A></nobr><br>
+<!-- Method popBackStackToGuidedStepSupportFragment -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.popBackStackToGuidedStepSupportFragment_added(java.lang.Class, int)" class="hiddenlink" target="rightframe"><b>popBackStackToGuidedStepSupportFragment</b>
+(<code>Class, int</code>)</A></nobr><br>
+<!-- Class Presenter.ViewHolderTask -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#Presenter.ViewHolderTask" class="hiddenlink" target="rightframe"><b>Presenter.ViewHolderTask</b></A><br>
+<!-- Field ratingBarStyleIndicator -->
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.ratingBarStyleIndicator" class="hiddenlink" target="rightframe">ratingBarStyleIndicator</A>
+</nobr><br>
+<!-- Field ratingBarStyleSmall -->
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.ratingBarStyleSmall" class="hiddenlink" target="rightframe">ratingBarStyleSmall</A>
+</nobr><br>
+<!-- Method removeDrawerListener -->
+<nobr><A HREF="android.support.v4.widget.DrawerLayout.html#android.support.v4.widget.DrawerLayout.removeDrawerListener_added(android.support.v4.widget.DrawerLayout.DrawerListener)" class="hiddenlink" target="rightframe"><b>removeDrawerListener</b>
+(<code>DrawerListener</code>)</A></nobr><br>
+<!-- Method resizeBitmapArea -->
+<nobr><A HREF="android.support.v7.graphics.Palette.Builder.html#android.support.v7.graphics.Palette.Builder.resizeBitmapArea_added(int)" class="hiddenlink" target="rightframe"><b>resizeBitmapArea</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method RGBToLAB -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.RGBToLAB_added(int, int, int, double[])" class="hiddenlink" target="rightframe"><b>RGBToLAB</b>
+(<code>int, int, int, double[]</code>)</A></nobr><br>
+<!-- Method RGBToXYZ -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.RGBToXYZ_added(int, int, int, double[])" class="hiddenlink" target="rightframe"><b>RGBToXYZ</b>
+(<code>int, int, int, double[]</code>)</A></nobr><br>
+<!-- Method setAsButtonActions -->
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.setAsButtonActions_added()" class="hiddenlink" target="rightframe"><b>setAsButtonActions</b>
+()</A></nobr><br>
+<!-- Method setAutoMeasureEnabled -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.setAutoMeasureEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setAutoMeasureEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setButtonActions -->
+<i>setButtonActions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.setButtonActions_added(java.util.List<android.support.v17.leanback.widget.GuidedAction>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;GuidedAction&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method setButtonActions -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.setButtonActions_added(java.util.List<android.support.v17.leanback.widget.GuidedAction>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;GuidedAction&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method setCompatElevation -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.setCompatElevation_added(float)" class="hiddenlink" target="rightframe"><b>setCompatElevation</b>
+(<code>float</code>)</A></nobr><br>
+<!-- Method setDefaultNightMode -->
+<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.setDefaultNightMode_added(int)" class="hiddenlink" target="rightframe"><b>setDefaultNightMode</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setDivider -->
+<i>setDivider</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v14.preference.PreferenceFragment.html#android.support.v14.preference.PreferenceFragment.setDivider_added(android.graphics.drawable.Drawable)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Drawable</code>)</b>&nbsp;in&nbsp;android.support.v14.preference.PreferenceFragment
+</A></nobr><br>
+<!-- Method setDivider -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.preference.PreferenceFragmentCompat.html#android.support.v7.preference.PreferenceFragmentCompat.setDivider_added(android.graphics.drawable.Drawable)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Drawable</code>)</b>&nbsp;in&nbsp;android.support.v7.preference.PreferenceFragmentCompat
+</A></nobr><br>
+<!-- Method setDividerAllowedAbove -->
+<nobr><A HREF="android.support.v7.preference.PreferenceViewHolder.html#android.support.v7.preference.PreferenceViewHolder.setDividerAllowedAbove_added(boolean)" class="hiddenlink" target="rightframe"><b>setDividerAllowedAbove</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setDividerAllowedBelow -->
+<nobr><A HREF="android.support.v7.preference.PreferenceViewHolder.html#android.support.v7.preference.PreferenceViewHolder.setDividerAllowedBelow_added(boolean)" class="hiddenlink" target="rightframe"><b>setDividerAllowedBelow</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setDividerHeight -->
+<i>setDividerHeight</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v14.preference.PreferenceFragment.html#android.support.v14.preference.PreferenceFragment.setDividerHeight_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v14.preference.PreferenceFragment
+</A></nobr><br>
+<!-- Method setDividerHeight -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.preference.PreferenceFragmentCompat.html#android.support.v7.preference.PreferenceFragmentCompat.setDividerHeight_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v7.preference.PreferenceFragmentCompat
+</A></nobr><br>
+<!-- Method setEditDescription -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setEditDescription_added(java.lang.CharSequence)" class="hiddenlink" target="rightframe"><b>setEditDescription</b>
+(<code>CharSequence</code>)</A></nobr><br>
+<!-- Method setEditingMode -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.setEditingMode_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction, boolean)" class="hiddenlink" target="rightframe"><b>setEditingMode</b>
+(<code>ViewHolder, GuidedAction, boolean</code>)</A></nobr><br>
+<!-- Method setExpandedTitleMargin -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleMargin_added(int, int, int, int)" class="hiddenlink" target="rightframe"><b>setExpandedTitleMargin</b>
+(<code>int, int, int, int</code>)</A></nobr><br>
+<!-- Method setExpandedTitleMarginBottom -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleMarginBottom_added(int)" class="hiddenlink" target="rightframe"><b>setExpandedTitleMarginBottom</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setExpandedTitleMarginEnd -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleMarginEnd_added(int)" class="hiddenlink" target="rightframe"><b>setExpandedTitleMarginEnd</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setExpandedTitleMarginStart -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleMarginStart_added(int)" class="hiddenlink" target="rightframe"><b>setExpandedTitleMarginStart</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setExpandedTitleMarginTop -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleMarginTop_added(int)" class="hiddenlink" target="rightframe"><b>setExpandedTitleMarginTop</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setExpandedViewHolder -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.setExpandedViewHolder_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder)" class="hiddenlink" target="rightframe"><b>setExpandedViewHolder</b>
+(<code>ViewHolder</code>)</A></nobr><br>
+<!-- Method setFocusable -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setFocusable_added(boolean)" class="hiddenlink" target="rightframe"><b>setFocusable</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setHintEnabled -->
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.setHintEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setHintEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setIntent -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setIntent_added(android.content.Intent)" class="hiddenlink" target="rightframe"><b>setIntent</b>
+(<code>Intent</code>)</A></nobr><br>
+<!-- Method setLocalNightMode -->
+<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.setLocalNightMode_added(int)" class="hiddenlink" target="rightframe"><b>setLocalNightMode</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setMeasuredDimension -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.setMeasuredDimension_added(android.graphics.Rect, int, int)" class="hiddenlink" target="rightframe"><b>setMeasuredDimension</b>
+(<code>Rect, int, int</code>)</A></nobr><br>
+<!-- Method setMeasurementCacheEnabled -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.setMeasurementCacheEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setMeasurementCacheEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setOverlayTop -->
+<nobr><A HREF="android.support.design.widget.HeaderScrollingViewBehavior.html#android.support.design.widget.HeaderScrollingViewBehavior.setOverlayTop_added(int)" class="hiddenlink" target="rightframe"><b>setOverlayTop</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setSecondaryToolbarColor -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.Builder.html#android.support.customtabs.CustomTabsIntent.Builder.setSecondaryToolbarColor_added(int)" class="hiddenlink" target="rightframe"><b>setSecondaryToolbarColor</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setSelectedButtonActionPosition -->
+<i>setSelectedButtonActionPosition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.setSelectedButtonActionPosition_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method setSelectedButtonActionPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.setSelectedButtonActionPosition_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method setSelectedPosition -->
+<i>setSelectedPosition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.setSelectedPosition_added(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int, boolean, ViewHolderTask</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method setSelectedPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.setSelectedPosition_added(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int, boolean, ViewHolderTask</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method setSelectedPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.RowsFragment.html#android.support.v17.leanback.app.RowsFragment.setSelectedPosition_added(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int, boolean, ViewHolderTask</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.RowsFragment
+</A></nobr><br>
+<!-- Method setSelectedPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.RowsSupportFragment.html#android.support.v17.leanback.app.RowsSupportFragment.setSelectedPosition_added(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int, boolean, ViewHolderTask</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.RowsSupportFragment
+</A></nobr><br>
+<!-- Method setShouldUseGeneratedIds -->
+<nobr><A HREF="android.support.v7.preference.PreferenceScreen.html#android.support.v7.preference.PreferenceScreen.setShouldUseGeneratedIds_added(boolean)" class="hiddenlink" target="rightframe"><b>setShouldUseGeneratedIds</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setSizeFromDrawableIntrinsic -->
+<nobr><A HREF="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.html#android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.setSizeFromDrawableIntrinsic_added(boolean)" class="hiddenlink" target="rightframe"><b>setSizeFromDrawableIntrinsic</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setSubActions -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setSubActions_added(java.util.List<android.support.v17.leanback.widget.GuidedAction>)" class="hiddenlink" target="rightframe"><b>setSubActions</b>
+(<code>List&lt;GuidedAction&gt;</code>)</A></nobr><br>
+<!-- Method setTextAppearance -->
+<nobr><A HREF="android.support.v4.widget.TextViewCompat.html#android.support.v4.widget.TextViewCompat.setTextAppearance_added(android.widget.TextView, int)" class="hiddenlink" target="rightframe"><b>setTextAppearance</b>
+(<code>TextView, int</code>)</A></nobr><br>
+<!-- Method setToolbarItem -->
+<nobr><A HREF="android.support.customtabs.CustomTabsSession.html#android.support.customtabs.CustomTabsSession.setToolbarItem_added(int, android.graphics.Bitmap, java.lang.String)" class="hiddenlink" target="rightframe"><b>setToolbarItem</b>
+(<code>int, Bitmap, String</code>)</A></nobr><br>
+<!-- Method setupImeOptions -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.setupImeOptions_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe"><b>setupImeOptions</b>
+(<code>ViewHolder, GuidedAction</code>)</A></nobr><br>
+<!-- Method setUseCompatPadding -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.setUseCompatPadding_added(boolean)" class="hiddenlink" target="rightframe"><b>setUseCompatPadding</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method shouldUseGeneratedIds -->
+<nobr><A HREF="android.support.v7.preference.PreferenceScreen.html#android.support.v7.preference.PreferenceScreen.shouldUseGeneratedIds_added()" class="hiddenlink" target="rightframe"><b>shouldUseGeneratedIds</b>
+()</A></nobr><br>
+<!-- Field Spinner_android_entries -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Spinner_android_entries" class="hiddenlink" target="rightframe">Spinner_android_entries</A>
+</nobr><br>
+<!-- Field srcCompat -->
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.srcCompat" class="hiddenlink" target="rightframe">srcCompat</A>
+</nobr><br>
+<!-- Method startActivity -->
+<nobr><A HREF="android.support.v4.app.Fragment.html#android.support.v4.app.Fragment.startActivity_added(android.content.Intent, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>startActivity</b>
+(<code>Intent, Bundle</code>)</A></nobr><br>
+<!-- Method startActivityForResult -->
+<nobr><A HREF="android.support.v4.app.Fragment.html#android.support.v4.app.Fragment.startActivityForResult_added(android.content.Intent, int, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>startActivityForResult</b>
+(<code>Intent, int, Bundle</code>)</A></nobr><br>
+<!-- Method startActivityFromFragment -->
+<nobr><A HREF="android.support.v4.app.FragmentActivity.html#android.support.v4.app.FragmentActivity.startActivityFromFragment_added(android.support.v4.app.Fragment, android.content.Intent, int, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>startActivityFromFragment</b>
+(<code>Fragment, Intent, int, Bundle</code>)</A></nobr><br>
+<!-- Method startExpandedTransition -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.startExpandedTransition_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder)" class="hiddenlink" target="rightframe"><b>startExpandedTransition</b>
+(<code>ViewHolder</code>)</A></nobr><br>
+<!-- Class TabItem -->
+<A NAME="T"></A>
+<br><font size="+2">T</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.design.widget.html#TabItem" class="hiddenlink" target="rightframe"><b>TabItem</b></A><br>
+<!-- Class Target -->
+<A HREF="pkg_android.support.v7.graphics.html#Target" class="hiddenlink" target="rightframe"><b>Target</b></A><br>
+<!-- Class Target.Builder -->
+<A HREF="pkg_android.support.v7.graphics.html#Target.Builder" class="hiddenlink" target="rightframe"><b>Target.Builder</b></A><br>
+<!-- Class TextInputEditText -->
+<A HREF="pkg_android.support.design.widget.html#TextInputEditText" class="hiddenlink" target="rightframe"><b>TextInputEditText</b></A><br>
+<!-- Field Theme_AppCompat_DayNight -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight" class="hiddenlink" target="rightframe">Theme_AppCompat_DayNight</A>
+</nobr><br>
+<!-- Field Theme_AppCompat_DayNight_DarkActionBar -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_DarkActionBar" class="hiddenlink" target="rightframe">Theme_AppCompat_DayNight_DarkActionBar</A>
+</nobr><br>
+<!-- Field Theme_AppCompat_DayNight_Dialog -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_Dialog" class="hiddenlink" target="rightframe">Theme_AppCompat_DayNight_Dialog</A>
+</nobr><br>
+<!-- Field Theme_AppCompat_DayNight_Dialog_Alert -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_Dialog_Alert" class="hiddenlink" target="rightframe">Theme_AppCompat_DayNight_Dialog_Alert</A>
+</nobr><br>
+<!-- Field Theme_AppCompat_DayNight_Dialog_MinWidth -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_Dialog_MinWidth" class="hiddenlink" target="rightframe">Theme_AppCompat_DayNight_Dialog_MinWidth</A>
+</nobr><br>
+<!-- Field Theme_AppCompat_DayNight_DialogWhenLarge -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_DialogWhenLarge" class="hiddenlink" target="rightframe">Theme_AppCompat_DayNight_DialogWhenLarge</A>
+</nobr><br>
+<!-- Field Theme_AppCompat_DayNight_NoActionBar -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_NoActionBar" class="hiddenlink" target="rightframe">Theme_AppCompat_DayNight_NoActionBar</A>
+</nobr><br>
+<!-- Field TOOLBAR_ACTION_BUTTON_ID -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.TOOLBAR_ACTION_BUTTON_ID" class="hiddenlink" target="rightframe">TOOLBAR_ACTION_BUTTON_ID</A>
+</nobr><br>
+<!-- Field UI_STYLE_REPLACE -->
+<A NAME="U"></A>
+<br><font size="+2">U</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>UI_STYLE_REPLACE</i><br>
+<nobr>&nbsp;in&nbsp;
+<A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_REPLACE" class="hiddenlink" target="rightframe">android.support.v17.leanback.app.GuidedStepFragment</A>
+</nobr><br>
+<!-- Field UI_STYLE_REPLACE -->
+<nobr>&nbsp;in&nbsp;
+<A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.UI_STYLE_REPLACE" class="hiddenlink" target="rightframe">android.support.v17.leanback.app.GuidedStepSupportFragment</A>
+</nobr><br>
+<!-- Field VIEW_TYPE_DATE_PICKER -->
+<A NAME="V"></A>
+<br><font size="+2">V</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.VIEW_TYPE_DATE_PICKER" class="hiddenlink" target="rightframe">VIEW_TYPE_DATE_PICKER</A>
+</nobr><br>
+<!-- Field VIEW_TYPE_DEFAULT -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.VIEW_TYPE_DEFAULT" class="hiddenlink" target="rightframe">VIEW_TYPE_DEFAULT</A>
+</nobr><br>
+<!-- Class ViewHolderTask -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#ViewHolderTask" class="hiddenlink" target="rightframe"><b><i>ViewHolderTask</i></b></A><br>
+<!-- Class VisibilityAwareImageButton -->
+<A HREF="pkg_android.support.design.widget.html#VisibilityAwareImageButton" class="hiddenlink" target="rightframe"><b>VisibilityAwareImageButton</b></A><br>
+<!-- Field Widget_AppCompat_RatingBar_Indicator -->
+<A NAME="W"></A>
+<br><font size="+2">W</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_RatingBar_Indicator" class="hiddenlink" target="rightframe">Widget_AppCompat_RatingBar_Indicator</A>
+</nobr><br>
+<!-- Field Widget_AppCompat_RatingBar_Small -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_RatingBar_Small" class="hiddenlink" target="rightframe">Widget_AppCompat_RatingBar_Small</A>
+</nobr><br>
+<!-- Method XYZToColor -->
+<A NAME="X"></A>
+<br><font size="+2">X</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.XYZToColor_added(double, double, double)" class="hiddenlink" target="rightframe"><b>XYZToColor</b>
+(<code>double, double, double</code>)</A></nobr><br>
+<!-- Method XYZToLAB -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.XYZToLAB_added(double, double, double, double[])" class="hiddenlink" target="rightframe"><b>XYZToLAB</b>
+(<code>double, double, double, double[]</code>)</A></nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_all.html b/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_all.html
new file mode 100644
index 0000000..770d615
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_all.html
@@ -0,0 +1,2928 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+All Differences Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for All Differences" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<b>All Differences</b>
+  <br>
+<A HREF="alldiffs_index_removals.html" xclass="hiddenlink">Removals</A>
+  <br>
+<A HREF="alldiffs_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="alldiffs_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<!-- Field abc_btn_check_to_on_mtrl_000 -->
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_check_to_on_mtrl_000" class="hiddenlink" target="rightframe"><strike>abc_btn_check_to_on_mtrl_000</strike></A>
+</nobr><br>
+<!-- Field abc_btn_check_to_on_mtrl_015 -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_check_to_on_mtrl_015" class="hiddenlink" target="rightframe"><strike>abc_btn_check_to_on_mtrl_015</strike></A>
+</nobr><br>
+<!-- Field abc_btn_checkbox_checked_mtrl -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_checkbox_checked_mtrl" class="hiddenlink" target="rightframe">abc_btn_checkbox_checked_mtrl</A>
+</nobr><br>
+<!-- Field abc_btn_checkbox_unchecked_mtrl -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_checkbox_unchecked_mtrl" class="hiddenlink" target="rightframe">abc_btn_checkbox_unchecked_mtrl</A>
+</nobr><br>
+<!-- Field abc_btn_radio_off_mtrl -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_radio_off_mtrl" class="hiddenlink" target="rightframe">abc_btn_radio_off_mtrl</A>
+</nobr><br>
+<!-- Field abc_btn_radio_on_mtrl -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_radio_on_mtrl" class="hiddenlink" target="rightframe">abc_btn_radio_on_mtrl</A>
+</nobr><br>
+<!-- Field abc_btn_radio_to_on_mtrl_000 -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_radio_to_on_mtrl_000" class="hiddenlink" target="rightframe"><strike>abc_btn_radio_to_on_mtrl_000</strike></A>
+</nobr><br>
+<!-- Field abc_btn_radio_to_on_mtrl_015 -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_radio_to_on_mtrl_015" class="hiddenlink" target="rightframe"><strike>abc_btn_radio_to_on_mtrl_015</strike></A>
+</nobr><br>
+<!-- Field abc_ic_ab_back_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_ab_back_material" class="hiddenlink" target="rightframe">abc_ic_ab_back_material</A>
+</nobr><br>
+<!-- Field abc_ic_ab_back_mtrl_am_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_ab_back_mtrl_am_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_ab_back_mtrl_am_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_clear_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_clear_material" class="hiddenlink" target="rightframe">abc_ic_clear_material</A>
+</nobr><br>
+<!-- Field abc_ic_clear_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_clear_mtrl_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_clear_mtrl_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_go_search_api_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_go_search_api_material" class="hiddenlink" target="rightframe">abc_ic_go_search_api_material</A>
+</nobr><br>
+<!-- Field abc_ic_go_search_api_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_go_search_api_mtrl_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_go_search_api_mtrl_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_menu_copy_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_copy_material" class="hiddenlink" target="rightframe">abc_ic_menu_copy_material</A>
+</nobr><br>
+<!-- Field abc_ic_menu_copy_mtrl_am_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_copy_mtrl_am_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_menu_copy_mtrl_am_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_menu_cut_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_cut_material" class="hiddenlink" target="rightframe">abc_ic_menu_cut_material</A>
+</nobr><br>
+<!-- Field abc_ic_menu_cut_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_cut_mtrl_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_menu_cut_mtrl_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_menu_moreoverflow_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_moreoverflow_mtrl_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_menu_moreoverflow_mtrl_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_menu_overflow_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_overflow_material" class="hiddenlink" target="rightframe">abc_ic_menu_overflow_material</A>
+</nobr><br>
+<!-- Field abc_ic_menu_paste_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_paste_material" class="hiddenlink" target="rightframe">abc_ic_menu_paste_material</A>
+</nobr><br>
+<!-- Field abc_ic_menu_paste_mtrl_am_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_paste_mtrl_am_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_menu_paste_mtrl_am_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_menu_selectall_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_selectall_material" class="hiddenlink" target="rightframe">abc_ic_menu_selectall_material</A>
+</nobr><br>
+<!-- Field abc_ic_menu_selectall_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_selectall_mtrl_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_menu_selectall_mtrl_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_menu_share_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_share_material" class="hiddenlink" target="rightframe">abc_ic_menu_share_material</A>
+</nobr><br>
+<!-- Field abc_ic_menu_share_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_share_mtrl_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_menu_share_mtrl_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_star_black_16dp -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_star_black_16dp" class="hiddenlink" target="rightframe">abc_ic_star_black_16dp</A>
+</nobr><br>
+<!-- Field abc_ic_star_black_36dp -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_star_black_36dp" class="hiddenlink" target="rightframe">abc_ic_star_black_36dp</A>
+</nobr><br>
+<!-- Field abc_ic_star_half_black_16dp -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_star_half_black_16dp" class="hiddenlink" target="rightframe">abc_ic_star_half_black_16dp</A>
+</nobr><br>
+<!-- Field abc_ic_star_half_black_36dp -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_star_half_black_36dp" class="hiddenlink" target="rightframe">abc_ic_star_half_black_36dp</A>
+</nobr><br>
+<!-- Field abc_ic_voice_search_api_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_voice_search_api_material" class="hiddenlink" target="rightframe">abc_ic_voice_search_api_material</A>
+</nobr><br>
+<!-- Field abc_ic_voice_search_api_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_voice_search_api_mtrl_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_voice_search_api_mtrl_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ratingbar_indicator_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ratingbar_indicator_material" class="hiddenlink" target="rightframe">abc_ratingbar_indicator_material</A>
+</nobr><br>
+<!-- Field abc_ratingbar_small_material -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ratingbar_small_material" class="hiddenlink" target="rightframe">abc_ratingbar_small_material</A>
+</nobr><br>
+<!-- Class AccessibilityEventCompat -->
+<A HREF="android.support.v4.view.accessibility.AccessibilityEventCompat.html" class="hiddenlink" target="rightframe">AccessibilityEventCompat</A><br>
+<!-- Class AccessibilityManagerCompat -->
+<i>AccessibilityManagerCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.view.accessibility.AccessibilityManagerCompat.html" class="hiddenlink" target="rightframe">android.support.v4.view.accessibility</A><br>
+<!-- Constructor AccessibilityManagerCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.accessibility.AccessibilityManagerCompat.html#android.support.v4.view.accessibility.AccessibilityManagerCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>AccessibilityManagerCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class AccessibilityServiceInfoCompat -->
+<A HREF="android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat.html" class="hiddenlink" target="rightframe">AccessibilityServiceInfoCompat</A><br>
+<!-- Field ACTION_ID_CANCEL -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ACTION_ID_CANCEL" class="hiddenlink" target="rightframe">ACTION_ID_CANCEL</A>
+</nobr><br>
+<!-- Field ACTION_ID_CONTINUE -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ACTION_ID_CONTINUE" class="hiddenlink" target="rightframe">ACTION_ID_CONTINUE</A>
+</nobr><br>
+<!-- Field ACTION_ID_CURRENT -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ACTION_ID_CURRENT" class="hiddenlink" target="rightframe">ACTION_ID_CURRENT</A>
+</nobr><br>
+<!-- Field ACTION_ID_FINISH -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ACTION_ID_FINISH" class="hiddenlink" target="rightframe">ACTION_ID_FINISH</A>
+</nobr><br>
+<!-- Field ACTION_ID_NEXT -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ACTION_ID_NEXT" class="hiddenlink" target="rightframe">ACTION_ID_NEXT</A>
+</nobr><br>
+<!-- Field ACTION_ID_NO -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ACTION_ID_NO" class="hiddenlink" target="rightframe">ACTION_ID_NO</A>
+</nobr><br>
+<!-- Field ACTION_ID_OK -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ACTION_ID_OK" class="hiddenlink" target="rightframe">ACTION_ID_OK</A>
+</nobr><br>
+<!-- Field ACTION_ID_YES -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ACTION_ID_YES" class="hiddenlink" target="rightframe">ACTION_ID_YES</A>
+</nobr><br>
+<!-- Class ActivityInfoCompat -->
+<A HREF="android.support.v4.content.pm.ActivityInfoCompat.html" class="hiddenlink" target="rightframe">ActivityInfoCompat</A><br>
+<!-- Method addDefaultShareMenuItem -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.Builder.html#android.support.customtabs.CustomTabsIntent.Builder.addDefaultShareMenuItem_added()" class="hiddenlink" target="rightframe"><b>addDefaultShareMenuItem</b>
+()</A></nobr><br>
+<!-- Method addDrawerListener -->
+<nobr><A HREF="android.support.v4.widget.DrawerLayout.html#android.support.v4.widget.DrawerLayout.addDrawerListener_added(android.support.v4.widget.DrawerLayout.DrawerListener)" class="hiddenlink" target="rightframe"><b>addDrawerListener</b>
+(<code>DrawerListener</code>)</A></nobr><br>
+<!-- Method addGroupMemberId -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.addGroupMemberId_removed(java.lang.String)" class="hiddenlink" target="rightframe"><strike>addGroupMemberId</strike>
+(<code>String</code>)</A></nobr><br>
+<!-- Method addGroupMemberIds -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.addGroupMemberIds_removed(java.util.Collection<java.lang.String>)" class="hiddenlink" target="rightframe"><strike>addGroupMemberIds</strike>
+(<code>Collection&lt;String&gt;</code>)</A></nobr><br>
+<!-- Method addTarget -->
+<nobr><A HREF="android.support.v7.graphics.Palette.Builder.html#android.support.v7.graphics.Palette.Builder.addTarget_added(android.support.v7.graphics.Target)" class="hiddenlink" target="rightframe"><b>addTarget</b>
+(<code>Target</code>)</A></nobr><br>
+<!-- Method addToolbarItem -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.Builder.html#android.support.customtabs.CustomTabsIntent.Builder.addToolbarItem_added(int, android.graphics.Bitmap, java.lang.String, android.app.PendingIntent)" class="hiddenlink" target="rightframe"><b>addToolbarItem</b>
+(<code>int, Bitmap, String, PendingIntent</code>)</A></nobr><br>
+<!-- Package android.support.customtabs -->
+<A HREF="pkg_android.support.customtabs.html" class="hiddenlink" target="rightframe">android.support.customtabs</A><br>
+<!-- Package android.support.design.widget -->
+<A HREF="pkg_android.support.design.widget.html" class="hiddenlink" target="rightframe">android.support.design.widget</A><br>
+<!-- Package android.support.graphics.drawable -->
+<A HREF="changes-summary.html#android.support.graphics.drawable" class="hiddenlink" target="rightframe"><b>android.support.graphics.drawable</b></A><br>
+<!-- Package android.support.percent -->
+<A HREF="pkg_android.support.percent.html" class="hiddenlink" target="rightframe">android.support.percent</A><br>
+<!-- Package android.support.v14.preference -->
+<A HREF="pkg_android.support.v14.preference.html" class="hiddenlink" target="rightframe">android.support.v14.preference</A><br>
+<!-- Package android.support.v17.leanback.app -->
+<A HREF="pkg_android.support.v17.leanback.app.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.app</A><br>
+<!-- Package android.support.v17.leanback.widget -->
+<A HREF="pkg_android.support.v17.leanback.widget.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.widget</A><br>
+<!-- Package android.support.v17.leanback.widget.picker -->
+<A HREF="changes-summary.html#android.support.v17.leanback.widget.picker" class="hiddenlink" target="rightframe"><b>android.support.v17.leanback.widget.picker</b></A><br>
+<!-- Package android.support.v4.accessibilityservice -->
+<A HREF="pkg_android.support.v4.accessibilityservice.html" class="hiddenlink" target="rightframe">android.support.v4.accessibilityservice</A><br>
+<!-- Package android.support.v4.app -->
+<A HREF="pkg_android.support.v4.app.html" class="hiddenlink" target="rightframe">android.support.v4.app</A><br>
+<!-- Package android.support.v4.content -->
+<A HREF="pkg_android.support.v4.content.html" class="hiddenlink" target="rightframe">android.support.v4.content</A><br>
+<!-- Package android.support.v4.content.pm -->
+<A HREF="pkg_android.support.v4.content.pm.html" class="hiddenlink" target="rightframe">android.support.v4.content.pm</A><br>
+<!-- Package android.support.v4.content.res -->
+<A HREF="pkg_android.support.v4.content.res.html" class="hiddenlink" target="rightframe">android.support.v4.content.res</A><br>
+<!-- Package android.support.v4.database -->
+<A HREF="pkg_android.support.v4.database.html" class="hiddenlink" target="rightframe">android.support.v4.database</A><br>
+<!-- Package android.support.v4.graphics -->
+<A HREF="pkg_android.support.v4.graphics.html" class="hiddenlink" target="rightframe">android.support.v4.graphics</A><br>
+<!-- Package android.support.v4.graphics.drawable -->
+<A HREF="pkg_android.support.v4.graphics.drawable.html" class="hiddenlink" target="rightframe">android.support.v4.graphics.drawable</A><br>
+<!-- Package android.support.v4.hardware.fingerprint -->
+<A HREF="pkg_android.support.v4.hardware.fingerprint.html" class="hiddenlink" target="rightframe">android.support.v4.hardware.fingerprint</A><br>
+<!-- Package android.support.v4.media -->
+<A HREF="pkg_android.support.v4.media.html" class="hiddenlink" target="rightframe">android.support.v4.media</A><br>
+<!-- Package android.support.v4.net -->
+<A HREF="pkg_android.support.v4.net.html" class="hiddenlink" target="rightframe">android.support.v4.net</A><br>
+<!-- Package android.support.v4.os -->
+<A HREF="pkg_android.support.v4.os.html" class="hiddenlink" target="rightframe">android.support.v4.os</A><br>
+<!-- Package android.support.v4.text -->
+<A HREF="pkg_android.support.v4.text.html" class="hiddenlink" target="rightframe">android.support.v4.text</A><br>
+<!-- Package android.support.v4.view -->
+<A HREF="pkg_android.support.v4.view.html" class="hiddenlink" target="rightframe">android.support.v4.view</A><br>
+<!-- Package android.support.v4.view.accessibility -->
+<A HREF="pkg_android.support.v4.view.accessibility.html" class="hiddenlink" target="rightframe">android.support.v4.view.accessibility</A><br>
+<!-- Package android.support.v4.view.animation -->
+<A HREF="pkg_android.support.v4.view.animation.html" class="hiddenlink" target="rightframe">android.support.v4.view.animation</A><br>
+<!-- Package android.support.v4.widget -->
+<A HREF="pkg_android.support.v4.widget.html" class="hiddenlink" target="rightframe">android.support.v4.widget</A><br>
+<!-- Package android.support.v7.app -->
+<A HREF="pkg_android.support.v7.app.html" class="hiddenlink" target="rightframe">android.support.v7.app</A><br>
+<!-- Package android.support.v7.appcompat -->
+<A HREF="pkg_android.support.v7.appcompat.html" class="hiddenlink" target="rightframe">android.support.v7.appcompat</A><br>
+<!-- Package android.support.v7.graphics -->
+<A HREF="pkg_android.support.v7.graphics.html" class="hiddenlink" target="rightframe">android.support.v7.graphics</A><br>
+<!-- Package android.support.v7.media -->
+<A HREF="pkg_android.support.v7.media.html" class="hiddenlink" target="rightframe">android.support.v7.media</A><br>
+<!-- Package android.support.v7.preference -->
+<A HREF="pkg_android.support.v7.preference.html" class="hiddenlink" target="rightframe">android.support.v7.preference</A><br>
+<!-- Package android.support.v7.recyclerview -->
+<A HREF="pkg_android.support.v7.recyclerview.html" class="hiddenlink" target="rightframe">android.support.v7.recyclerview</A><br>
+<!-- Package android.support.v7.widget -->
+<A HREF="pkg_android.support.v7.widget.html" class="hiddenlink" target="rightframe">android.support.v7.widget</A><br>
+<!-- Package android.support.v7.widget.helper -->
+<A HREF="pkg_android.support.v7.widget.helper.html" class="hiddenlink" target="rightframe">android.support.v7.widget.helper</A><br>
+<!-- Class AppBarLayout.ScrollingViewBehavior -->
+<A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html" class="hiddenlink" target="rightframe">AppBarLayout.ScrollingViewBehavior</A><br>
+<!-- Class AppCompatDelegate -->
+<A HREF="android.support.v7.app.AppCompatDelegate.html" class="hiddenlink" target="rightframe">AppCompatDelegate</A><br>
+<!-- Field AppCompatImageView -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatImageView" class="hiddenlink" target="rightframe">AppCompatImageView</A>
+</nobr><br>
+<!-- Field AppCompatImageView_android_src -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatImageView_android_src" class="hiddenlink" target="rightframe">AppCompatImageView_android_src</A>
+</nobr><br>
+<!-- Field AppCompatImageView_srcCompat -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatImageView_srcCompat" class="hiddenlink" target="rightframe">AppCompatImageView_srcCompat</A>
+</nobr><br>
+<!-- Field AppCompatTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme" class="hiddenlink" target="rightframe">AppCompatTheme</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarDivider -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarDivider" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarDivider</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarItemBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarItemBackground" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarItemBackground</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarPopupTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarPopupTheme" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarPopupTheme</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarSize -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarSize" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarSize</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarSplitStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarSplitStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarSplitStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarTabBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarTabBarStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarTabBarStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarTabStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarTabStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarTabStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarTabTextStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarTabTextStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarTabTextStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarTheme" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarTheme</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionBarWidgetTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarWidgetTheme" class="hiddenlink" target="rightframe">AppCompatTheme_actionBarWidgetTheme</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionDropDownStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionDropDownStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionDropDownStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionMenuTextAppearance -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionMenuTextAppearance" class="hiddenlink" target="rightframe">AppCompatTheme_actionMenuTextAppearance</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionMenuTextColor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionMenuTextColor" class="hiddenlink" target="rightframe">AppCompatTheme_actionMenuTextColor</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeBackground" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeBackground</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeCloseButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeCloseButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeCloseButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeCloseDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeCloseDrawable" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeCloseDrawable</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeCopyDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeCopyDrawable" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeCopyDrawable</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeCutDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeCutDrawable" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeCutDrawable</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeFindDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeFindDrawable" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeFindDrawable</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModePasteDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModePasteDrawable" class="hiddenlink" target="rightframe">AppCompatTheme_actionModePasteDrawable</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModePopupWindowStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModePopupWindowStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionModePopupWindowStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeSelectAllDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeSelectAllDrawable" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeSelectAllDrawable</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeShareDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeShareDrawable" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeShareDrawable</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeSplitBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeSplitBackground" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeSplitBackground</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionModeWebSearchDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeWebSearchDrawable" class="hiddenlink" target="rightframe">AppCompatTheme_actionModeWebSearchDrawable</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionOverflowButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionOverflowButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionOverflowButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_actionOverflowMenuStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_actionOverflowMenuStyle" class="hiddenlink" target="rightframe">AppCompatTheme_actionOverflowMenuStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_activityChooserViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_activityChooserViewStyle" class="hiddenlink" target="rightframe">AppCompatTheme_activityChooserViewStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_alertDialogButtonGroupStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_alertDialogButtonGroupStyle" class="hiddenlink" target="rightframe">AppCompatTheme_alertDialogButtonGroupStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_alertDialogCenterButtons -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_alertDialogCenterButtons" class="hiddenlink" target="rightframe">AppCompatTheme_alertDialogCenterButtons</A>
+</nobr><br>
+<!-- Field AppCompatTheme_alertDialogStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_alertDialogStyle" class="hiddenlink" target="rightframe">AppCompatTheme_alertDialogStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_alertDialogTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_alertDialogTheme" class="hiddenlink" target="rightframe">AppCompatTheme_alertDialogTheme</A>
+</nobr><br>
+<!-- Field AppCompatTheme_android_windowAnimationStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_android_windowAnimationStyle" class="hiddenlink" target="rightframe">AppCompatTheme_android_windowAnimationStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_android_windowIsFloating -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_android_windowIsFloating" class="hiddenlink" target="rightframe">AppCompatTheme_android_windowIsFloating</A>
+</nobr><br>
+<!-- Field AppCompatTheme_autoCompleteTextViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_autoCompleteTextViewStyle" class="hiddenlink" target="rightframe">AppCompatTheme_autoCompleteTextViewStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_borderlessButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_borderlessButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_borderlessButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_buttonBarButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonBarButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_buttonBarButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_buttonBarNegativeButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonBarNegativeButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_buttonBarNegativeButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_buttonBarNeutralButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonBarNeutralButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_buttonBarNeutralButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_buttonBarPositiveButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonBarPositiveButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_buttonBarPositiveButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_buttonBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonBarStyle" class="hiddenlink" target="rightframe">AppCompatTheme_buttonBarStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_buttonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_buttonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_buttonStyleSmall -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonStyleSmall" class="hiddenlink" target="rightframe">AppCompatTheme_buttonStyleSmall</A>
+</nobr><br>
+<!-- Field AppCompatTheme_checkboxStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_checkboxStyle" class="hiddenlink" target="rightframe">AppCompatTheme_checkboxStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_checkedTextViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_checkedTextViewStyle" class="hiddenlink" target="rightframe">AppCompatTheme_checkedTextViewStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_colorAccent -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_colorAccent" class="hiddenlink" target="rightframe">AppCompatTheme_colorAccent</A>
+</nobr><br>
+<!-- Field AppCompatTheme_colorButtonNormal -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_colorButtonNormal" class="hiddenlink" target="rightframe">AppCompatTheme_colorButtonNormal</A>
+</nobr><br>
+<!-- Field AppCompatTheme_colorControlActivated -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_colorControlActivated" class="hiddenlink" target="rightframe">AppCompatTheme_colorControlActivated</A>
+</nobr><br>
+<!-- Field AppCompatTheme_colorControlHighlight -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_colorControlHighlight" class="hiddenlink" target="rightframe">AppCompatTheme_colorControlHighlight</A>
+</nobr><br>
+<!-- Field AppCompatTheme_colorControlNormal -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_colorControlNormal" class="hiddenlink" target="rightframe">AppCompatTheme_colorControlNormal</A>
+</nobr><br>
+<!-- Field AppCompatTheme_colorPrimary -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_colorPrimary" class="hiddenlink" target="rightframe">AppCompatTheme_colorPrimary</A>
+</nobr><br>
+<!-- Field AppCompatTheme_colorPrimaryDark -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_colorPrimaryDark" class="hiddenlink" target="rightframe">AppCompatTheme_colorPrimaryDark</A>
+</nobr><br>
+<!-- Field AppCompatTheme_colorSwitchThumbNormal -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_colorSwitchThumbNormal" class="hiddenlink" target="rightframe">AppCompatTheme_colorSwitchThumbNormal</A>
+</nobr><br>
+<!-- Field AppCompatTheme_controlBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_controlBackground" class="hiddenlink" target="rightframe">AppCompatTheme_controlBackground</A>
+</nobr><br>
+<!-- Field AppCompatTheme_dialogPreferredPadding -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_dialogPreferredPadding" class="hiddenlink" target="rightframe">AppCompatTheme_dialogPreferredPadding</A>
+</nobr><br>
+<!-- Field AppCompatTheme_dialogTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_dialogTheme" class="hiddenlink" target="rightframe">AppCompatTheme_dialogTheme</A>
+</nobr><br>
+<!-- Field AppCompatTheme_dividerHorizontal -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_dividerHorizontal" class="hiddenlink" target="rightframe">AppCompatTheme_dividerHorizontal</A>
+</nobr><br>
+<!-- Field AppCompatTheme_dividerVertical -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_dividerVertical" class="hiddenlink" target="rightframe">AppCompatTheme_dividerVertical</A>
+</nobr><br>
+<!-- Field AppCompatTheme_dropdownListPreferredItemHeight -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_dropdownListPreferredItemHeight" class="hiddenlink" target="rightframe">AppCompatTheme_dropdownListPreferredItemHeight</A>
+</nobr><br>
+<!-- Field AppCompatTheme_dropDownListViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_dropDownListViewStyle" class="hiddenlink" target="rightframe">AppCompatTheme_dropDownListViewStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_editTextBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_editTextBackground" class="hiddenlink" target="rightframe">AppCompatTheme_editTextBackground</A>
+</nobr><br>
+<!-- Field AppCompatTheme_editTextColor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_editTextColor" class="hiddenlink" target="rightframe">AppCompatTheme_editTextColor</A>
+</nobr><br>
+<!-- Field AppCompatTheme_editTextStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_editTextStyle" class="hiddenlink" target="rightframe">AppCompatTheme_editTextStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_homeAsUpIndicator -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_homeAsUpIndicator" class="hiddenlink" target="rightframe">AppCompatTheme_homeAsUpIndicator</A>
+</nobr><br>
+<!-- Field AppCompatTheme_imageButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_imageButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_imageButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_listChoiceBackgroundIndicator -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_listChoiceBackgroundIndicator" class="hiddenlink" target="rightframe">AppCompatTheme_listChoiceBackgroundIndicator</A>
+</nobr><br>
+<!-- Field AppCompatTheme_listDividerAlertDialog -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_listDividerAlertDialog" class="hiddenlink" target="rightframe">AppCompatTheme_listDividerAlertDialog</A>
+</nobr><br>
+<!-- Field AppCompatTheme_listPopupWindowStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_listPopupWindowStyle" class="hiddenlink" target="rightframe">AppCompatTheme_listPopupWindowStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_listPreferredItemHeight -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_listPreferredItemHeight" class="hiddenlink" target="rightframe">AppCompatTheme_listPreferredItemHeight</A>
+</nobr><br>
+<!-- Field AppCompatTheme_listPreferredItemHeightLarge -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_listPreferredItemHeightLarge" class="hiddenlink" target="rightframe">AppCompatTheme_listPreferredItemHeightLarge</A>
+</nobr><br>
+<!-- Field AppCompatTheme_listPreferredItemHeightSmall -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_listPreferredItemHeightSmall" class="hiddenlink" target="rightframe">AppCompatTheme_listPreferredItemHeightSmall</A>
+</nobr><br>
+<!-- Field AppCompatTheme_listPreferredItemPaddingLeft -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_listPreferredItemPaddingLeft" class="hiddenlink" target="rightframe">AppCompatTheme_listPreferredItemPaddingLeft</A>
+</nobr><br>
+<!-- Field AppCompatTheme_listPreferredItemPaddingRight -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_listPreferredItemPaddingRight" class="hiddenlink" target="rightframe">AppCompatTheme_listPreferredItemPaddingRight</A>
+</nobr><br>
+<!-- Field AppCompatTheme_panelBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_panelBackground" class="hiddenlink" target="rightframe">AppCompatTheme_panelBackground</A>
+</nobr><br>
+<!-- Field AppCompatTheme_panelMenuListTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_panelMenuListTheme" class="hiddenlink" target="rightframe">AppCompatTheme_panelMenuListTheme</A>
+</nobr><br>
+<!-- Field AppCompatTheme_panelMenuListWidth -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_panelMenuListWidth" class="hiddenlink" target="rightframe">AppCompatTheme_panelMenuListWidth</A>
+</nobr><br>
+<!-- Field AppCompatTheme_popupMenuStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_popupMenuStyle" class="hiddenlink" target="rightframe">AppCompatTheme_popupMenuStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_popupWindowStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_popupWindowStyle" class="hiddenlink" target="rightframe">AppCompatTheme_popupWindowStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_radioButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_radioButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_radioButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_ratingBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_ratingBarStyle" class="hiddenlink" target="rightframe">AppCompatTheme_ratingBarStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_ratingBarStyleIndicator -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_ratingBarStyleIndicator" class="hiddenlink" target="rightframe">AppCompatTheme_ratingBarStyleIndicator</A>
+</nobr><br>
+<!-- Field AppCompatTheme_ratingBarStyleSmall -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_ratingBarStyleSmall" class="hiddenlink" target="rightframe">AppCompatTheme_ratingBarStyleSmall</A>
+</nobr><br>
+<!-- Field AppCompatTheme_searchViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_searchViewStyle" class="hiddenlink" target="rightframe">AppCompatTheme_searchViewStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_seekBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_seekBarStyle" class="hiddenlink" target="rightframe">AppCompatTheme_seekBarStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_selectableItemBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_selectableItemBackground" class="hiddenlink" target="rightframe">AppCompatTheme_selectableItemBackground</A>
+</nobr><br>
+<!-- Field AppCompatTheme_selectableItemBackgroundBorderless -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_selectableItemBackgroundBorderless" class="hiddenlink" target="rightframe">AppCompatTheme_selectableItemBackgroundBorderless</A>
+</nobr><br>
+<!-- Field AppCompatTheme_spinnerDropDownItemStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_spinnerDropDownItemStyle" class="hiddenlink" target="rightframe">AppCompatTheme_spinnerDropDownItemStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_spinnerStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_spinnerStyle" class="hiddenlink" target="rightframe">AppCompatTheme_spinnerStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_switchStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_switchStyle" class="hiddenlink" target="rightframe">AppCompatTheme_switchStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_textAppearanceLargePopupMenu -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceLargePopupMenu" class="hiddenlink" target="rightframe">AppCompatTheme_textAppearanceLargePopupMenu</A>
+</nobr><br>
+<!-- Field AppCompatTheme_textAppearanceListItem -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceListItem" class="hiddenlink" target="rightframe">AppCompatTheme_textAppearanceListItem</A>
+</nobr><br>
+<!-- Field AppCompatTheme_textAppearanceListItemSmall -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceListItemSmall" class="hiddenlink" target="rightframe">AppCompatTheme_textAppearanceListItemSmall</A>
+</nobr><br>
+<!-- Field AppCompatTheme_textAppearanceSearchResultSubtitle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceSearchResultSubtitle" class="hiddenlink" target="rightframe">AppCompatTheme_textAppearanceSearchResultSubtitle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_textAppearanceSearchResultTitle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceSearchResultTitle" class="hiddenlink" target="rightframe">AppCompatTheme_textAppearanceSearchResultTitle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_textAppearanceSmallPopupMenu -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceSmallPopupMenu" class="hiddenlink" target="rightframe">AppCompatTheme_textAppearanceSmallPopupMenu</A>
+</nobr><br>
+<!-- Field AppCompatTheme_textColorAlertDialogListItem -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_textColorAlertDialogListItem" class="hiddenlink" target="rightframe">AppCompatTheme_textColorAlertDialogListItem</A>
+</nobr><br>
+<!-- Field AppCompatTheme_textColorSearchUrl -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_textColorSearchUrl" class="hiddenlink" target="rightframe">AppCompatTheme_textColorSearchUrl</A>
+</nobr><br>
+<!-- Field AppCompatTheme_toolbarNavigationButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_toolbarNavigationButtonStyle" class="hiddenlink" target="rightframe">AppCompatTheme_toolbarNavigationButtonStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_toolbarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_toolbarStyle" class="hiddenlink" target="rightframe">AppCompatTheme_toolbarStyle</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowActionBar -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowActionBar" class="hiddenlink" target="rightframe">AppCompatTheme_windowActionBar</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowActionBarOverlay -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowActionBarOverlay" class="hiddenlink" target="rightframe">AppCompatTheme_windowActionBarOverlay</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowActionModeOverlay -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowActionModeOverlay" class="hiddenlink" target="rightframe">AppCompatTheme_windowActionModeOverlay</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowFixedHeightMajor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowFixedHeightMajor" class="hiddenlink" target="rightframe">AppCompatTheme_windowFixedHeightMajor</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowFixedHeightMinor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowFixedHeightMinor" class="hiddenlink" target="rightframe">AppCompatTheme_windowFixedHeightMinor</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowFixedWidthMajor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowFixedWidthMajor" class="hiddenlink" target="rightframe">AppCompatTheme_windowFixedWidthMajor</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowFixedWidthMinor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowFixedWidthMinor" class="hiddenlink" target="rightframe">AppCompatTheme_windowFixedWidthMinor</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowMinWidthMajor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowMinWidthMajor" class="hiddenlink" target="rightframe">AppCompatTheme_windowMinWidthMajor</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowMinWidthMinor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowMinWidthMinor" class="hiddenlink" target="rightframe">AppCompatTheme_windowMinWidthMinor</A>
+</nobr><br>
+<!-- Field AppCompatTheme_windowNoTitle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.AppCompatTheme_windowNoTitle" class="hiddenlink" target="rightframe">AppCompatTheme_windowNoTitle</A>
+</nobr><br>
+<!-- Method applyDayNight -->
+<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.applyDayNight_added()" class="hiddenlink" target="rightframe"><b>applyDayNight</b>
+()</A></nobr><br>
+<!-- Method applyTheme -->
+<nobr><A HREF="android.support.v4.graphics.drawable.DrawableCompat.html#android.support.v4.graphics.drawable.DrawableCompat.applyTheme_added(android.graphics.drawable.Drawable, android.content.res.Resources.Theme)" class="hiddenlink" target="rightframe"><b>applyTheme</b>
+(<code>Drawable, Theme</code>)</A></nobr><br>
+<!-- Class AppOpsManagerCompat -->
+<i>AppOpsManagerCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.app.AppOpsManagerCompat.html" class="hiddenlink" target="rightframe">android.support.v4.app</A><br>
+<!-- Constructor AppOpsManagerCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.app.AppOpsManagerCompat.html#android.support.v4.app.AppOpsManagerCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>AppOpsManagerCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class AsyncTaskCompat -->
+<i>AsyncTaskCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.os.AsyncTaskCompat.html" class="hiddenlink" target="rightframe">android.support.v4.os</A><br>
+<!-- Constructor AsyncTaskCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.os.AsyncTaskCompat.html#android.support.v4.os.AsyncTaskCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>AsyncTaskCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Field Base_Widget_AppCompat_RatingBar_Indicator -->
+<A NAME="B"></A>
+<br><font size="+2">B</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Base_Widget_AppCompat_RatingBar_Indicator" class="hiddenlink" target="rightframe">Base_Widget_AppCompat_RatingBar_Indicator</A>
+</nobr><br>
+<!-- Field Base_Widget_AppCompat_RatingBar_Small -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Base_Widget_AppCompat_RatingBar_Small" class="hiddenlink" target="rightframe">Base_Widget_AppCompat_RatingBar_Small</A>
+</nobr><br>
+<!-- Class BaseRowFragment -->
+<A HREF="android.support.v17.leanback.app.BaseRowFragment.html" class="hiddenlink" target="rightframe">BaseRowFragment</A><br>
+<!-- Class BaseRowSupportFragment -->
+<A HREF="android.support.v17.leanback.app.BaseRowSupportFragment.html" class="hiddenlink" target="rightframe">BaseRowSupportFragment</A><br>
+<!-- Class BitmapCompat -->
+<i>BitmapCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.graphics.BitmapCompat.html" class="hiddenlink" target="rightframe">android.support.v4.graphics</A><br>
+<!-- Constructor BitmapCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.graphics.BitmapCompat.html#android.support.v4.graphics.BitmapCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>BitmapCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Method blendARGB -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.blendARGB_added(int, int, float)" class="hiddenlink" target="rightframe"><b>blendARGB</b>
+(<code>int, int, float</code>)</A></nobr><br>
+<!-- Method blendHSL -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.blendHSL_added(float[], float[], float, float[])" class="hiddenlink" target="rightframe"><b>blendHSL</b>
+(<code>float[], float[], float, float[]</code>)</A></nobr><br>
+<!-- Method blendLAB -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.blendLAB_added(double[], double[], double, double[])" class="hiddenlink" target="rightframe"><b>blendLAB</b>
+(<code>double[], double[], double, double[]</code>)</A></nobr><br>
+<!-- Class BottomSheetBehavior -->
+<A HREF="pkg_android.support.design.widget.html#BottomSheetBehavior" class="hiddenlink" target="rightframe"><b>BottomSheetBehavior</b></A><br>
+<!-- Class BottomSheetBehavior.BottomSheetCallback -->
+<A HREF="pkg_android.support.design.widget.html#BottomSheetBehavior.BottomSheetCallback" class="hiddenlink" target="rightframe"><b>BottomSheetBehavior.BottomSheetCallback</b></A><br>
+<!-- Class BottomSheetBehavior.SavedState -->
+<A HREF="pkg_android.support.design.widget.html#BottomSheetBehavior.SavedState" class="hiddenlink" target="rightframe"><b>BottomSheetBehavior.SavedState</b></A><br>
+<!-- Class BottomSheetDialog -->
+<A HREF="pkg_android.support.design.widget.html#BottomSheetDialog" class="hiddenlink" target="rightframe"><b>BottomSheetDialog</b></A><br>
+<!-- Class BottomSheetDialogFragment -->
+<A HREF="pkg_android.support.design.widget.html#BottomSheetDialogFragment" class="hiddenlink" target="rightframe"><b>BottomSheetDialogFragment</b></A><br>
+<!-- Class BrowseFragment -->
+<A HREF="android.support.v17.leanback.app.BrowseFragment.html" class="hiddenlink" target="rightframe">BrowseFragment</A><br>
+<!-- Class BrowseSupportFragment -->
+<A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html" class="hiddenlink" target="rightframe">BrowseSupportFragment</A><br>
+<!-- Class BundleCompat -->
+<i>BundleCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.app.BundleCompat.html" class="hiddenlink" target="rightframe">android.support.v4.app</A><br>
+<!-- Constructor BundleCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.app.BundleCompat.html#android.support.v4.app.BundleCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>BundleCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Method canApplyTheme -->
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.graphics.drawable.DrawableCompat.html#android.support.v4.graphics.drawable.DrawableCompat.canApplyTheme_added(android.graphics.drawable.Drawable)" class="hiddenlink" target="rightframe"><b>canApplyTheme</b>
+(<code>Drawable</code>)</A></nobr><br>
+<!-- Method canReuseUpdatedViewHolder -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.ItemAnimator.html#android.support.v7.widget.RecyclerView.ItemAnimator.canReuseUpdatedViewHolder_added(android.support.v7.widget.RecyclerView.ViewHolder, java.util.List<java.lang.Object>)" class="hiddenlink" target="rightframe"><b>canReuseUpdatedViewHolder</b>
+(<code>ViewHolder, List&lt;Object&gt;</code>)</A></nobr><br>
+<!-- Field CHECKBOX_CHECK_SET_ID -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.CHECKBOX_CHECK_SET_ID" class="hiddenlink" target="rightframe">CHECKBOX_CHECK_SET_ID</A>
+</nobr><br>
+<!-- Method checked -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.checked_changed(boolean)" class="hiddenlink" target="rightframe">checked
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method checkSetId -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.checkSetId_changed(int)" class="hiddenlink" target="rightframe">checkSetId
+(<code>int</code>)</A></nobr><br>
+<!-- Method chooseSize -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.chooseSize_added(int, int, int)" class="hiddenlink" target="rightframe"><b>chooseSize</b>
+(<code>int, int, int</code>)</A></nobr><br>
+<!-- Method clearTargets -->
+<nobr><A HREF="android.support.v7.graphics.Palette.Builder.html#android.support.v7.graphics.Palette.Builder.clearTargets_added()" class="hiddenlink" target="rightframe"><b>clearTargets</b>
+()</A></nobr><br>
+<!-- Method collapseSubActions -->
+<i>collapseSubActions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.collapseSubActions_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method collapseSubActions -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.collapseSubActions_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Class CollapsingToolbarLayout -->
+<A HREF="android.support.design.widget.CollapsingToolbarLayout.html" class="hiddenlink" target="rightframe">CollapsingToolbarLayout</A><br>
+<!-- Method colorToLAB -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.colorToLAB_added(int, double[])" class="hiddenlink" target="rightframe"><b>colorToLAB</b>
+(<code>int, double[]</code>)</A></nobr><br>
+<!-- Method colorToXYZ -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.colorToXYZ_added(int, double[])" class="hiddenlink" target="rightframe"><b>colorToXYZ</b>
+(<code>int, double[]</code>)</A></nobr><br>
+<!-- Class ColorUtils -->
+<A HREF="android.support.v4.graphics.ColorUtils.html" class="hiddenlink" target="rightframe">ColorUtils</A><br>
+<!-- Class ConnectivityManagerCompat -->
+<i>ConnectivityManagerCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.net.ConnectivityManagerCompat.html" class="hiddenlink" target="rightframe">android.support.v4.net</A><br>
+<!-- Constructor ConnectivityManagerCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.net.ConnectivityManagerCompat.html#android.support.v4.net.ConnectivityManagerCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>ConnectivityManagerCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class ContentResolverCompat -->
+<A HREF="android.support.v4.content.ContentResolverCompat.html" class="hiddenlink" target="rightframe">ContentResolverCompat</A><br>
+<!-- Class ContextCompat -->
+<A HREF="android.support.v4.content.ContextCompat.html" class="hiddenlink" target="rightframe">ContextCompat</A><br>
+<!-- Class CoordinatorLayout.Behavior -->
+<A HREF="android.support.design.widget.CoordinatorLayout.Behavior.html" class="hiddenlink" target="rightframe">CoordinatorLayout.Behavior</A><br>
+<!-- Class CustomTabsIntent -->
+<A HREF="android.support.customtabs.CustomTabsIntent.html" class="hiddenlink" target="rightframe">CustomTabsIntent</A><br>
+<!-- Class CustomTabsIntent.Builder -->
+<A HREF="android.support.customtabs.CustomTabsIntent.Builder.html" class="hiddenlink" target="rightframe">CustomTabsIntent.Builder</A><br>
+<!-- Class CustomTabsSession -->
+<A HREF="android.support.customtabs.CustomTabsSession.html" class="hiddenlink" target="rightframe">CustomTabsSession</A><br>
+<!-- Class DatabaseUtilsCompat -->
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.database.DatabaseUtilsCompat.html" class="hiddenlink" target="rightframe">DatabaseUtilsCompat</A><br>
+<!-- Method description -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.description_removed(java.lang.String)" class="hiddenlink" target="rightframe"><strike>description</strike>
+(<code>String</code>)</A></nobr><br>
+<!-- Class DetailsFragment -->
+<A HREF="android.support.v17.leanback.app.DetailsFragment.html" class="hiddenlink" target="rightframe">DetailsFragment</A><br>
+<!-- Class DetailsOverviewLogoPresenter -->
+<A HREF="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.html" class="hiddenlink" target="rightframe">DetailsOverviewLogoPresenter</A><br>
+<!-- Class DetailsOverviewLogoPresenter.ViewHolder -->
+<A HREF="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.html" class="hiddenlink" target="rightframe">DetailsOverviewLogoPresenter.ViewHolder</A><br>
+<!-- Class DetailsSupportFragment -->
+<A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html" class="hiddenlink" target="rightframe">DetailsSupportFragment</A><br>
+<!-- Method distanceEuclidean -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.distanceEuclidean_added(double[], double[])" class="hiddenlink" target="rightframe"><b>distanceEuclidean</b>
+(<code>double[], double[]</code>)</A></nobr><br>
+<!-- Class DrawableCompat -->
+<i>DrawableCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.graphics.drawable.DrawableCompat.html" class="hiddenlink" target="rightframe">android.support.v4.graphics.drawable</A><br>
+<!-- Constructor DrawableCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.graphics.drawable.DrawableCompat.html#android.support.v4.graphics.drawable.DrawableCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>DrawableCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class DrawerLayout -->
+<A HREF="android.support.v4.widget.DrawerLayout.html" class="hiddenlink" target="rightframe">DrawerLayout</A><br>
+<!-- Class EdgeEffectCompat -->
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.widget.EdgeEffectCompat.html" class="hiddenlink" target="rightframe">EdgeEffectCompat</A><br>
+<!-- Method editable -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.editable_changed(boolean)" class="hiddenlink" target="rightframe">editable
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method editTitle -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.editTitle_removed(java.lang.String)" class="hiddenlink" target="rightframe"><strike>editTitle</strike>
+(<code>String</code>)</A></nobr><br>
+<!-- Method enabled -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.enabled_changed(boolean)" class="hiddenlink" target="rightframe">enabled
+(<code>boolean</code>)</A></nobr><br>
+<!-- Class EnvironmentCompat -->
+<i>EnvironmentCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.os.EnvironmentCompat.html" class="hiddenlink" target="rightframe">android.support.v4.os</A><br>
+<!-- Constructor EnvironmentCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.os.EnvironmentCompat.html#android.support.v4.os.EnvironmentCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>EnvironmentCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Method expandSubActions -->
+<i>expandSubActions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.expandSubActions_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>GuidedAction</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method expandSubActions -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.expandSubActions_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>GuidedAction</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Field EXTRA_DEFAULT_SHARE_MENU_ITEM -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.EXTRA_DEFAULT_SHARE_MENU_ITEM" class="hiddenlink" target="rightframe">EXTRA_DEFAULT_SHARE_MENU_ITEM</A>
+</nobr><br>
+<!-- Field EXTRA_SECONDARY_TOOLBAR_COLOR -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.EXTRA_SECONDARY_TOOLBAR_COLOR" class="hiddenlink" target="rightframe">EXTRA_SECONDARY_TOOLBAR_COLOR</A>
+</nobr><br>
+<!-- Field EXTRA_TOOLBAR_ITEMS -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.EXTRA_TOOLBAR_ITEMS" class="hiddenlink" target="rightframe">EXTRA_TOOLBAR_ITEMS</A>
+</nobr><br>
+<!-- Method fillMarginLayoutParams -->
+<A NAME="F"></A>
+<br><font size="+2">F</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>fillMarginLayoutParams</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html#android.support.percent.PercentLayoutHelper.PercentLayoutInfo.fillMarginLayoutParams_removed(android.view.ViewGroup.MarginLayoutParams, int, int)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>MarginLayoutParams, int, int</code>)</strike>&nbsp;in&nbsp;android.support.percent.PercentLayoutHelper.PercentLayoutInfo
+</A></nobr><br>
+<!-- Method fillMarginLayoutParams -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html#android.support.percent.PercentLayoutHelper.PercentLayoutInfo.fillMarginLayoutParams_added(android.view.View, android.view.ViewGroup.MarginLayoutParams, int, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>View, MarginLayoutParams, int, int</code>)</b>&nbsp;in&nbsp;android.support.percent.PercentLayoutHelper.PercentLayoutInfo
+</A></nobr><br>
+<!-- Method fillMarginLayoutParams -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html#android.support.percent.PercentLayoutHelper.PercentLayoutInfo.fillMarginLayoutParams_added(android.view.ViewGroup.MarginLayoutParams, int, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>MarginLayoutParams, int, int</code>)</b>&nbsp;in&nbsp;android.support.percent.PercentLayoutHelper.PercentLayoutInfo
+</A></nobr><br>
+<!-- Method findActionById -->
+<i>findActionById</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.findActionById_added(long)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>long</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method findActionById -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.findActionById_added(long)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>long</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method findActionPositionById -->
+<i>findActionPositionById</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.findActionPositionById_added(long)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>long</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method findActionPositionById -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.findActionPositionById_added(long)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>long</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method findButtonActionById -->
+<i>findButtonActionById</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.findButtonActionById_added(long)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>long</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method findButtonActionById -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.findButtonActionById_added(long)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>long</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method findButtonActionPositionById -->
+<i>findButtonActionPositionById</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.findButtonActionPositionById_added(long)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>long</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method findButtonActionPositionById -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.findButtonActionPositionById_added(long)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>long</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method findContainingItemView -->
+<i>findContainingItemView</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.widget.RecyclerView.html#android.support.v7.widget.RecyclerView.findContainingItemView_added(android.view.View)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>View</code>)</b>&nbsp;in&nbsp;android.support.v7.widget.RecyclerView
+</A></nobr><br>
+<!-- Method findContainingItemView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.findContainingItemView_added(android.view.View)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>View</code>)</b>&nbsp;in&nbsp;android.support.v7.widget.RecyclerView.LayoutManager
+</A></nobr><br>
+<!-- Method findContainingViewHolder -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.html#android.support.v7.widget.RecyclerView.findContainingViewHolder_added(android.view.View)" class="hiddenlink" target="rightframe"><b>findContainingViewHolder</b>
+(<code>View</code>)</A></nobr><br>
+<!-- Class FingerprintManagerCompat -->
+<A HREF="android.support.v4.hardware.fingerprint.FingerprintManagerCompat.html" class="hiddenlink" target="rightframe">FingerprintManagerCompat</A><br>
+<!-- Method finishGuidedStepFragments -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.finishGuidedStepFragments_added()" class="hiddenlink" target="rightframe"><b>finishGuidedStepFragments</b>
+()</A></nobr><br>
+<!-- Method finishGuidedStepSupportFragments -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.finishGuidedStepSupportFragments_added()" class="hiddenlink" target="rightframe"><b>finishGuidedStepSupportFragments</b>
+()</A></nobr><br>
+<!-- Class FloatingActionButton -->
+<A HREF="android.support.design.widget.FloatingActionButton.html" class="hiddenlink" target="rightframe">FloatingActionButton</A><br>
+<!-- Class Fragment -->
+<A HREF="android.support.v4.app.Fragment.html" class="hiddenlink" target="rightframe">Fragment</A><br>
+<!-- Class FragmentActivity -->
+<A HREF="android.support.v4.app.FragmentActivity.html" class="hiddenlink" target="rightframe">FragmentActivity</A><br>
+<!-- Class FragmentHostCallback -->
+<A HREF="android.support.v4.app.FragmentHostCallback.html" class="hiddenlink" target="rightframe">FragmentHostCallback</A><br>
+<!-- Class GestureDetectorCompat -->
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.view.GestureDetectorCompat.html" class="hiddenlink" target="rightframe">GestureDetectorCompat</A><br>
+<!-- Method getAction -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.getAction_added()" class="hiddenlink" target="rightframe"><b>getAction</b>
+()</A></nobr><br>
+<!-- Method getAlpha -->
+<nobr><A HREF="android.support.v4.graphics.drawable.DrawableCompat.html#android.support.v4.graphics.drawable.DrawableCompat.getAlpha_added(android.graphics.drawable.Drawable)" class="hiddenlink" target="rightframe"><b>getAlpha</b>
+(<code>Drawable</code>)</A></nobr><br>
+<!-- Method getButtonActionItemView -->
+<i>getButtonActionItemView</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getButtonActionItemView_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method getButtonActionItemView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.getButtonActionItemView_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method getButtonActions -->
+<i>getButtonActions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getButtonActions_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method getButtonActions -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.getButtonActions_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method getChildMeasureSpec -->
+<i>getChildMeasureSpec</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.getChildMeasureSpec_removed(int, int, int, boolean)" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+(<code>int, int, int, boolean</code>)</strike>&nbsp;in&nbsp;android.support.v7.widget.RecyclerView.LayoutManager
+</A></nobr><br>
+<!-- Method getChildMeasureSpec -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.getChildMeasureSpec_added(int, int, int, int, boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int, int, int, int, boolean</code>)</b>&nbsp;in&nbsp;android.support.v7.widget.RecyclerView.LayoutManager
+</A></nobr><br>
+<!-- Method getChildMeasureSpec -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.getChildMeasureSpec_added(int, int, int, boolean)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int, int, int, boolean</code>)</b>&nbsp;in&nbsp;android.support.v7.widget.RecyclerView.LayoutManager
+</A></nobr><br>
+<!-- Method getCodeCacheDir -->
+<nobr><A HREF="android.support.v4.content.ContextCompat.html#android.support.v4.content.ContextCompat.getCodeCacheDir_changed(android.content.Context)" class="hiddenlink" target="rightframe">getCodeCacheDir
+(<code>Context</code>)</A></nobr><br>
+<!-- Method getColor -->
+<nobr><A HREF="android.support.v4.content.res.ResourcesCompat.html#android.support.v4.content.res.ResourcesCompat.getColor_changed(android.content.res.Resources, int, android.content.res.Resources.Theme)" class="hiddenlink" target="rightframe">getColor
+(<code>Resources, int, Theme</code>)</A></nobr><br>
+<!-- Method getColorFilter -->
+<nobr><A HREF="android.support.v4.graphics.drawable.DrawableCompat.html#android.support.v4.graphics.drawable.DrawableCompat.getColorFilter_added(android.graphics.drawable.Drawable)" class="hiddenlink" target="rightframe"><b>getColorFilter</b>
+(<code>Drawable</code>)</A></nobr><br>
+<!-- Method getColorForTarget -->
+<nobr><A HREF="android.support.v7.graphics.Palette.html#android.support.v7.graphics.Palette.getColorForTarget_added(android.support.v7.graphics.Target, int)" class="hiddenlink" target="rightframe"><b>getColorForTarget</b>
+(<code>Target, int</code>)</A></nobr><br>
+<!-- Method getColorStateList -->
+<nobr><A HREF="android.support.v4.content.res.ResourcesCompat.html#android.support.v4.content.res.ResourcesCompat.getColorStateList_changed(android.content.res.Resources, int, android.content.res.Resources.Theme)" class="hiddenlink" target="rightframe">getColorStateList
+(<code>Resources, int, Theme</code>)</A></nobr><br>
+<!-- Method getCompatElevation -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.getCompatElevation_added()" class="hiddenlink" target="rightframe"><b>getCompatElevation</b>
+()</A></nobr><br>
+<!-- Method getContainerIdForBackground -->
+<i>getContainerIdForBackground</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getContainerIdForBackground_removed()" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+()</strike>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method getContainerIdForBackground -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.getContainerIdForBackground_removed()" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+()</strike>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method getContentBackground -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.getContentBackground_added()" class="hiddenlink" target="rightframe"><b>getContentBackground</b>
+()</A></nobr><br>
+<!-- Method getContentRect -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.getContentRect_added(android.graphics.Rect)" class="hiddenlink" target="rightframe"><b>getContentRect</b>
+(<code>Rect</code>)</A></nobr><br>
+<!-- Method getDefaultNightMode -->
+<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.getDefaultNightMode_added()" class="hiddenlink" target="rightframe"><b>getDefaultNightMode</b>
+()</A></nobr><br>
+<!-- Method getDescriptionEditInputType -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.getDescriptionEditInputType_added()" class="hiddenlink" target="rightframe"><b>getDescriptionEditInputType</b>
+()</A></nobr><br>
+<!-- Method getDescriptionInputType -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.getDescriptionInputType_added()" class="hiddenlink" target="rightframe"><b>getDescriptionInputType</b>
+()</A></nobr><br>
+<!-- Method getEditableDescriptionView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.getEditableDescriptionView_added()" class="hiddenlink" target="rightframe"><b>getEditableDescriptionView</b>
+()</A></nobr><br>
+<!-- Method getEditDescription -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.getEditDescription_added()" class="hiddenlink" target="rightframe"><b>getEditDescription</b>
+()</A></nobr><br>
+<!-- Method getEditingView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.getEditingView_added()" class="hiddenlink" target="rightframe"><b>getEditingView</b>
+()</A></nobr><br>
+<!-- Method getEditInputType -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.getEditInputType_added()" class="hiddenlink" target="rightframe"><b>getEditInputType</b>
+()</A></nobr><br>
+<!-- Method getExpandedAction -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.getExpandedAction_added()" class="hiddenlink" target="rightframe"><b>getExpandedAction</b>
+()</A></nobr><br>
+<!-- Method getExpandedTitleMarginBottom -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.getExpandedTitleMarginBottom_added()" class="hiddenlink" target="rightframe"><b>getExpandedTitleMarginBottom</b>
+()</A></nobr><br>
+<!-- Method getExpandedTitleMarginEnd -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.getExpandedTitleMarginEnd_added()" class="hiddenlink" target="rightframe"><b>getExpandedTitleMarginEnd</b>
+()</A></nobr><br>
+<!-- Method getExpandedTitleMarginStart -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.getExpandedTitleMarginStart_added()" class="hiddenlink" target="rightframe"><b>getExpandedTitleMarginStart</b>
+()</A></nobr><br>
+<!-- Method getExpandedTitleMarginTop -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.getExpandedTitleMarginTop_added()" class="hiddenlink" target="rightframe"><b>getExpandedTitleMarginTop</b>
+()</A></nobr><br>
+<!-- Method getFactory -->
+<nobr><A HREF="android.support.v4.view.LayoutInflaterCompat.html#android.support.v4.view.LayoutInflaterCompat.getFactory_added(android.view.LayoutInflater)" class="hiddenlink" target="rightframe"><b>getFactory</b>
+(<code>LayoutInflater</code>)</A></nobr><br>
+<!-- Method getGroupMemberIds -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getGroupMemberIds_removed()" class="hiddenlink" target="rightframe"><strike>getGroupMemberIds</strike>
+()</A></nobr><br>
+<!-- Method getGuidedButtonActionsStylist -->
+<i>getGuidedButtonActionsStylist</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getGuidedButtonActionsStylist_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method getGuidedButtonActionsStylist -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.getGuidedButtonActionsStylist_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method getHeadersFragment -->
+<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.getHeadersFragment_added()" class="hiddenlink" target="rightframe"><b>getHeadersFragment</b>
+()</A></nobr><br>
+<!-- Method getHeadersSupportFragment -->
+<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.getHeadersSupportFragment_added()" class="hiddenlink" target="rightframe"><b>getHeadersSupportFragment</b>
+()</A></nobr><br>
+<!-- Method getHeightMode -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.getHeightMode_added()" class="hiddenlink" target="rightframe"><b>getHeightMode</b>
+()</A></nobr><br>
+<!-- Method getInputType -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.getInputType_added()" class="hiddenlink" target="rightframe"><b>getInputType</b>
+()</A></nobr><br>
+<!-- Method getItemViewHolder -->
+<nobr><A HREF="android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.html#android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.getItemViewHolder_added(int)" class="hiddenlink" target="rightframe"><b>getItemViewHolder</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method getItemViewType -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.getItemViewType_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe"><b>getItemViewType</b>
+(<code>GuidedAction</code>)</A></nobr><br>
+<!-- Method getMaxToolbarItems -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.getMaxToolbarItems_added()" class="hiddenlink" target="rightframe"><b>getMaxToolbarItems</b>
+()</A></nobr><br>
+<!-- Method getMode -->
+<nobr><A HREF="android.support.v7.widget.OrientationHelper.html#android.support.v7.widget.OrientationHelper.getMode_added()" class="hiddenlink" target="rightframe"><b>getMode</b>
+()</A></nobr><br>
+<!-- Method getModeInOther -->
+<nobr><A HREF="android.support.v7.widget.OrientationHelper.html#android.support.v7.widget.OrientationHelper.getModeInOther_added()" class="hiddenlink" target="rightframe"><b>getModeInOther</b>
+()</A></nobr><br>
+<!-- Method getOverlayTop -->
+<i>getOverlayTop</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html#android.support.design.widget.AppBarLayout.ScrollingViewBehavior.getOverlayTop_changed()" class="hiddenlink" target="rightframe">type&nbsp;
+()&nbsp;in&nbsp;android.support.design.widget.AppBarLayout.ScrollingViewBehavior
+</A></nobr><br>
+<!-- Method getOverlayTop -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.HeaderScrollingViewBehavior.html#android.support.design.widget.HeaderScrollingViewBehavior.getOverlayTop_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.design.widget.HeaderScrollingViewBehavior
+</A></nobr><br>
+<!-- Method getParentPresenter -->
+<nobr><A HREF="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.html#android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.getParentPresenter_added()" class="hiddenlink" target="rightframe"><b>getParentPresenter</b>
+()</A></nobr><br>
+<!-- Method getParentViewHolder -->
+<nobr><A HREF="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.html#android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.getParentViewHolder_added()" class="hiddenlink" target="rightframe"><b>getParentViewHolder</b>
+()</A></nobr><br>
+<!-- Method getRowsFragment -->
+<i>getRowsFragment</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.getRowsFragment_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method getRowsFragment -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsFragment.html#android.support.v17.leanback.app.DetailsFragment.getRowsFragment_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsFragment
+</A></nobr><br>
+<!-- Method getRowsSupportFragment -->
+<i>getRowsSupportFragment</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.getRowsSupportFragment_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method getRowsSupportFragment -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html#android.support.v17.leanback.app.DetailsSupportFragment.getRowsSupportFragment_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.DetailsSupportFragment
+</A></nobr><br>
+<!-- Method getRowViewHolder -->
+<i>getRowViewHolder</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.RowsFragment.html#android.support.v17.leanback.app.RowsFragment.getRowViewHolder_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.RowsFragment
+</A></nobr><br>
+<!-- Method getRowViewHolder -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.RowsSupportFragment.html#android.support.v17.leanback.app.RowsSupportFragment.getRowViewHolder_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.RowsSupportFragment
+</A></nobr><br>
+<!-- Method getScrimColor -->
+<nobr><A HREF="android.support.design.widget.CoordinatorLayout.Behavior.html#android.support.design.widget.CoordinatorLayout.Behavior.getScrimColor_changed(android.support.design.widget.CoordinatorLayout, V)" class="hiddenlink" target="rightframe">getScrimColor
+(<code>CoordinatorLayout, V</code>)</A></nobr><br>
+<!-- Method getScrimOpacity -->
+<nobr><A HREF="android.support.design.widget.CoordinatorLayout.Behavior.html#android.support.design.widget.CoordinatorLayout.Behavior.getScrimOpacity_changed(android.support.design.widget.CoordinatorLayout, V)" class="hiddenlink" target="rightframe">getScrimOpacity
+(<code>CoordinatorLayout, V</code>)</A></nobr><br>
+<!-- Method getSelectedButtonActionPosition -->
+<i>getSelectedButtonActionPosition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getSelectedButtonActionPosition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method getSelectedButtonActionPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.getSelectedButtonActionPosition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method getSelectedPosition -->
+<i>getSelectedPosition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BaseRowFragment.html#android.support.v17.leanback.app.BaseRowFragment.getSelectedPosition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BaseRowFragment
+</A></nobr><br>
+<!-- Method getSelectedPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BaseRowSupportFragment.html#android.support.v17.leanback.app.BaseRowSupportFragment.getSelectedPosition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BaseRowSupportFragment
+</A></nobr><br>
+<!-- Method getSelectedPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.getSelectedPosition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method getSelectedPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.getSelectedPosition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method getSelectedPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.html#android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.getSelectedPosition_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.ListRowPresenter.ViewHolder
+</A></nobr><br>
+<!-- Method getSubActions -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.getSubActions_added()" class="hiddenlink" target="rightframe"><b>getSubActions</b>
+()</A></nobr><br>
+<!-- Method getSubActionsGridView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.getSubActionsGridView_added()" class="hiddenlink" target="rightframe"><b>getSubActionsGridView</b>
+()</A></nobr><br>
+<!-- Method getSwatchForTarget -->
+<nobr><A HREF="android.support.v7.graphics.Palette.html#android.support.v7.graphics.Palette.getSwatchForTarget_added(android.support.v7.graphics.Target)" class="hiddenlink" target="rightframe"><b>getSwatchForTarget</b>
+(<code>Target</code>)</A></nobr><br>
+<!-- Method getSwipeEscapeVelocity -->
+<nobr><A HREF="android.support.v7.widget.helper.ItemTouchHelper.Callback.html#android.support.v7.widget.helper.ItemTouchHelper.Callback.getSwipeEscapeVelocity_added(float)" class="hiddenlink" target="rightframe"><b>getSwipeEscapeVelocity</b>
+(<code>float</code>)</A></nobr><br>
+<!-- Method getSwipeVelocityThreshold -->
+<nobr><A HREF="android.support.v7.widget.helper.ItemTouchHelper.Callback.html#android.support.v7.widget.helper.ItemTouchHelper.Callback.getSwipeVelocityThreshold_added(float)" class="hiddenlink" target="rightframe"><b>getSwipeVelocityThreshold</b>
+(<code>float</code>)</A></nobr><br>
+<!-- Method getTargets -->
+<nobr><A HREF="android.support.v7.graphics.Palette.html#android.support.v7.graphics.Palette.getTargets_added()" class="hiddenlink" target="rightframe"><b>getTargets</b>
+()</A></nobr><br>
+<!-- Method getUseCompatPadding -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.getUseCompatPadding_added()" class="hiddenlink" target="rightframe"><b>getUseCompatPadding</b>
+()</A></nobr><br>
+<!-- Method getWidthMode -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.getWidthMode_added()" class="hiddenlink" target="rightframe"><b>getWidthMode</b>
+()</A></nobr><br>
+<!-- Class GravityCompat -->
+<i>GravityCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.view.GravityCompat.html" class="hiddenlink" target="rightframe">android.support.v4.view</A><br>
+<!-- Constructor GravityCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.GravityCompat.html#android.support.v4.view.GravityCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>GravityCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class GuidanceStylist -->
+<A HREF="android.support.v17.leanback.widget.GuidanceStylist.html" class="hiddenlink" target="rightframe">GuidanceStylist</A><br>
+<!-- Class GuidedAction -->
+<i>GuidedAction</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v17.leanback.widget.GuidedAction.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.widget</A><br>
+<!-- Constructor GuidedAction -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.ctor_added()" class="hiddenlink" target="rightframe"><b>GuidedAction</b>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class GuidedAction.Builder -->
+<i>GuidedAction.Builder</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.widget</A><br>
+<!-- Constructor GuidedAction.Builder -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.ctor_added(android.content.Context)" class="hiddenlink" target="rightframe"><b>GuidedAction.Builder</b>
+(<code>Context</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Constructor GuidedAction.Builder -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.ctor_changed()" class="hiddenlink" target="rightframe">GuidedAction.Builder
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class GuidedAction.BuilderBase -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#GuidedAction.BuilderBase" class="hiddenlink" target="rightframe"><b>GuidedAction.BuilderBase</b></A><br>
+<!-- Class GuidedActionsStylist -->
+<A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html" class="hiddenlink" target="rightframe">GuidedActionsStylist</A><br>
+<!-- Class GuidedActionsStylist.ViewHolder -->
+<i>GuidedActionsStylist.ViewHolder</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.widget</A><br>
+<!-- Constructor GuidedActionsStylist.ViewHolder -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.ctor_added(android.view.View, boolean)" class="hiddenlink" target="rightframe"><b>GuidedActionsStylist.ViewHolder</b>
+(<code>View, boolean</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Class GuidedDatePickerAction -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#GuidedDatePickerAction" class="hiddenlink" target="rightframe"><b>GuidedDatePickerAction</b></A><br>
+<!-- Class GuidedDatePickerAction.Builder -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#GuidedDatePickerAction.Builder" class="hiddenlink" target="rightframe"><b>GuidedDatePickerAction.Builder</b></A><br>
+<!-- Class GuidedDatePickerAction.BuilderBase -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#GuidedDatePickerAction.BuilderBase" class="hiddenlink" target="rightframe"><b>GuidedDatePickerAction.BuilderBase</b></A><br>
+<!-- Class GuidedStepFragment -->
+<A HREF="android.support.v17.leanback.app.GuidedStepFragment.html" class="hiddenlink" target="rightframe">GuidedStepFragment</A><br>
+<!-- Class GuidedStepFragment.GuidedStepBackgroundFragment -->
+<A HREF="pkg_android.support.v17.leanback.app.html#GuidedStepFragment.GuidedStepBackgroundFragment" class="hiddenlink" target="rightframe"><strike>GuidedStepFragment.GuidedStepBackgroundFragment</strike></A><br>
+<!-- Class GuidedStepSupportFragment -->
+<A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html" class="hiddenlink" target="rightframe">GuidedStepSupportFragment</A><br>
+<!-- Class GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment -->
+<A HREF="pkg_android.support.v17.leanback.app.html#GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment" class="hiddenlink" target="rightframe"><strike>GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment</strike></A><br>
+<!-- Method hasEditableActivatorView -->
+<A NAME="H"></A>
+<br><font size="+2">H</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.hasEditableActivatorView_added()" class="hiddenlink" target="rightframe"><b>hasEditableActivatorView</b>
+()</A></nobr><br>
+<!-- Method hasNext -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.hasNext_changed(boolean)" class="hiddenlink" target="rightframe">hasNext
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method hasSubActions -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.hasSubActions_added()" class="hiddenlink" target="rightframe"><b>hasSubActions</b>
+()</A></nobr><br>
+<!-- Method hasTextEditable -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.hasTextEditable_added()" class="hiddenlink" target="rightframe"><b>hasTextEditable</b>
+()</A></nobr><br>
+<!-- Class HeaderScrollingViewBehavior -->
+<A HREF="android.support.design.widget.HeaderScrollingViewBehavior.html" class="hiddenlink" target="rightframe">HeaderScrollingViewBehavior</A><br>
+<!-- Class HeadersFragment.OnHeaderClickedListener -->
+<A HREF="android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener.html" class="hiddenlink" target="rightframe"><i>HeadersFragment.OnHeaderClickedListener</i></A><br>
+<!-- Class HeadersFragment.OnHeaderViewSelectedListener -->
+<A HREF="android.support.v17.leanback.app.HeadersFragment.OnHeaderViewSelectedListener.html" class="hiddenlink" target="rightframe"><i>HeadersFragment.OnHeaderViewSelectedListener</i></A><br>
+<!-- Class HeadersSupportFragment.OnHeaderClickedListener -->
+<A HREF="android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener.html" class="hiddenlink" target="rightframe"><i>HeadersSupportFragment.OnHeaderClickedListener</i></A><br>
+<!-- Class HeadersSupportFragment.OnHeaderViewSelectedListener -->
+<A HREF="android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderViewSelectedListener.html" class="hiddenlink" target="rightframe"><i>HeadersSupportFragment.OnHeaderViewSelectedListener</i></A><br>
+<!-- Method icon -->
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.icon_removed(android.graphics.drawable.Drawable)" class="hiddenlink" target="rightframe"><strike>icon</strike>
+(<code>Drawable</code>)</A></nobr><br>
+<!-- Method iconResourceId -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.iconResourceId_changed(int, android.content.Context)" class="hiddenlink" target="rightframe">iconResourceId
+(<code>int, Context</code>)</A></nobr><br>
+<!-- Class ICUCompat -->
+<i>ICUCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.text.ICUCompat.html" class="hiddenlink" target="rightframe">android.support.v4.text</A><br>
+<!-- Constructor ICUCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.text.ICUCompat.html#android.support.v4.text.ICUCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>ICUCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Method id -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.id_changed(long)" class="hiddenlink" target="rightframe">id
+(<code>long</code>)</A></nobr><br>
+<!-- Class ImageCardView -->
+<i>ImageCardView</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v17.leanback.widget.ImageCardView.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.widget</A><br>
+<!-- Constructor ImageCardView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.ctor_changed(android.content.Context, int)" class="hiddenlink" target="rightframe">ImageCardView
+(<code>Context, int</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Method inflate -->
+<nobr><A HREF="android.support.v4.graphics.drawable.DrawableCompat.html#android.support.v4.graphics.drawable.DrawableCompat.inflate_added(android.graphics.drawable.Drawable, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme)" class="hiddenlink" target="rightframe"><b>inflate</b>
+(<code>Drawable, Resources, XmlPullParser, AttributeSet, Theme</code>)</A></nobr><br>
+<!-- Method infoOnly -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.infoOnly_changed(boolean)" class="hiddenlink" target="rightframe">infoOnly
+(<code>boolean</code>)</A></nobr><br>
+<!-- Class InputDeviceCompat -->
+<i>InputDeviceCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.view.InputDeviceCompat.html" class="hiddenlink" target="rightframe">android.support.v4.view</A><br>
+<!-- Constructor InputDeviceCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.InputDeviceCompat.html#android.support.v4.view.InputDeviceCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>InputDeviceCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Method intent -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.intent_changed(android.content.Intent)" class="hiddenlink" target="rightframe">intent
+(<code>Intent</code>)</A></nobr><br>
+<!-- Class IntentCompat -->
+<A HREF="android.support.v4.content.IntentCompat.html" class="hiddenlink" target="rightframe">IntentCompat</A><br>
+<!-- Method isAutoMeasureEnabled -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.isAutoMeasureEnabled_added()" class="hiddenlink" target="rightframe"><b>isAutoMeasureEnabled</b>
+()</A></nobr><br>
+<!-- Method isButtonActions -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.isButtonActions_added()" class="hiddenlink" target="rightframe"><b>isButtonActions</b>
+()</A></nobr><br>
+<!-- Method isCounterEnabled -->
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.isCounterEnabled_added()" class="hiddenlink" target="rightframe"><b>isCounterEnabled</b>
+()</A></nobr><br>
+<!-- Method isDescriptionEditable -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.isDescriptionEditable_added()" class="hiddenlink" target="rightframe"><b>isDescriptionEditable</b>
+()</A></nobr><br>
+<!-- Method isDividerAllowedAbove -->
+<nobr><A HREF="android.support.v7.preference.PreferenceViewHolder.html#android.support.v7.preference.PreferenceViewHolder.isDividerAllowedAbove_added()" class="hiddenlink" target="rightframe"><b>isDividerAllowedAbove</b>
+()</A></nobr><br>
+<!-- Method isDividerAllowedBelow -->
+<nobr><A HREF="android.support.v7.preference.PreferenceViewHolder.html#android.support.v7.preference.PreferenceViewHolder.isDividerAllowedBelow_added()" class="hiddenlink" target="rightframe"><b>isDividerAllowedBelow</b>
+()</A></nobr><br>
+<!-- Method isExpandTransitionSupported -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.isExpandTransitionSupported_added()" class="hiddenlink" target="rightframe"><b>isExpandTransitionSupported</b>
+()</A></nobr><br>
+<!-- Method isFocusable -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.isFocusable_added()" class="hiddenlink" target="rightframe"><b>isFocusable</b>
+()</A></nobr><br>
+<!-- Method isFocusOutEndAllowed -->
+<i>isFocusOutEndAllowed</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.isFocusOutEndAllowed_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method isFocusOutEndAllowed -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.isFocusOutEndAllowed_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method isFocusOutStartAllowed -->
+<i>isFocusOutStartAllowed</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.isFocusOutStartAllowed_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method isFocusOutStartAllowed -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.isFocusOutStartAllowed_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method isHintEnabled -->
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.isHintEnabled_added()" class="hiddenlink" target="rightframe"><b>isHintEnabled</b>
+()</A></nobr><br>
+<!-- Method isInEditing -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isInEditing_added()" class="hiddenlink" target="rightframe"><b>isInEditing</b>
+()</A></nobr><br>
+<!-- Method isInEditingActivatorView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isInEditingActivatorView_added()" class="hiddenlink" target="rightframe"><b>isInEditingActivatorView</b>
+()</A></nobr><br>
+<!-- Method isInEditingDescription -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isInEditingDescription_added()" class="hiddenlink" target="rightframe"><b>isInEditingDescription</b>
+()</A></nobr><br>
+<!-- Method isInEditingText -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isInEditingText_added()" class="hiddenlink" target="rightframe"><b>isInEditingText</b>
+()</A></nobr><br>
+<!-- Method isInEditingTitle -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isInEditingTitle_added()" class="hiddenlink" target="rightframe"><b>isInEditingTitle</b>
+()</A></nobr><br>
+<!-- Method isInExpandTransition -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.isInExpandTransition_added()" class="hiddenlink" target="rightframe"><b>isInExpandTransition</b>
+()</A></nobr><br>
+<!-- Method isMeasurementCacheEnabled -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.isMeasurementCacheEnabled_added()" class="hiddenlink" target="rightframe"><b>isMeasurementCacheEnabled</b>
+()</A></nobr><br>
+<!-- Method isMeasuring -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.State.html#android.support.v7.widget.RecyclerView.State.isMeasuring_added()" class="hiddenlink" target="rightframe"><b>isMeasuring</b>
+()</A></nobr><br>
+<!-- Method isSizeFromDrawableIntrinsic -->
+<nobr><A HREF="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.html#android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.isSizeFromDrawableIntrinsic_added()" class="hiddenlink" target="rightframe"><b>isSizeFromDrawableIntrinsic</b>
+()</A></nobr><br>
+<!-- Method isSubAction -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isSubAction_added()" class="hiddenlink" target="rightframe"><b>isSubAction</b>
+()</A></nobr><br>
+<!-- Method isSubActionsExpanded -->
+<i>isSubActionsExpanded</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.isSubActionsExpanded_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method isSubActionsExpanded -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.isSubActionsExpanded_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method isSubActionsExpanded -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.isSubActionsExpanded_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Field item_touch_helper_swipe_escape_max_velocity -->
+<nobr><A HREF="android.support.v7.recyclerview.R.dimen.html#android.support.v7.recyclerview.R.dimen.item_touch_helper_swipe_escape_max_velocity" class="hiddenlink" target="rightframe">item_touch_helper_swipe_escape_max_velocity</A>
+</nobr><br>
+<!-- Field item_touch_helper_swipe_escape_velocity -->
+<nobr><A HREF="android.support.v7.recyclerview.R.dimen.html#android.support.v7.recyclerview.R.dimen.item_touch_helper_swipe_escape_velocity" class="hiddenlink" target="rightframe">item_touch_helper_swipe_escape_velocity</A>
+</nobr><br>
+<!-- Class ItemTouchHelper.Callback -->
+<A HREF="android.support.v7.widget.helper.ItemTouchHelper.Callback.html" class="hiddenlink" target="rightframe">ItemTouchHelper.Callback</A><br>
+<!-- Field KEY_ID -->
+<A NAME="K"></A>
+<br><font size="+2">K</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.KEY_ID" class="hiddenlink" target="rightframe">KEY_ID</A>
+</nobr><br>
+<!-- Class KeyEventCompat -->
+<i>KeyEventCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.view.KeyEventCompat.html" class="hiddenlink" target="rightframe">android.support.v4.view</A><br>
+<!-- Constructor KeyEventCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.KeyEventCompat.html#android.support.v4.view.KeyEventCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>KeyEventCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Method LABToColor -->
+<A NAME="L"></A>
+<br><font size="+2">L</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.LABToColor_added(double, double, double)" class="hiddenlink" target="rightframe"><b>LABToColor</b>
+(<code>double, double, double</code>)</A></nobr><br>
+<!-- Method LABToXYZ -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.LABToXYZ_added(double, double, double, double[])" class="hiddenlink" target="rightframe"><b>LABToXYZ</b>
+(<code>double, double, double, double[]</code>)</A></nobr><br>
+<!-- Method layoutChild -->
+<i>layoutChild</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.HeaderScrollingViewBehavior.html#android.support.design.widget.HeaderScrollingViewBehavior.layoutChild_added(android.support.design.widget.CoordinatorLayout, android.view.View, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>CoordinatorLayout, View, int</code>)</b>&nbsp;in&nbsp;android.support.design.widget.HeaderScrollingViewBehavior
+</A></nobr><br>
+<!-- Method layoutChild -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.ViewOffsetBehavior.html#android.support.design.widget.ViewOffsetBehavior.layoutChild_added(android.support.design.widget.CoordinatorLayout, V, int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>CoordinatorLayout, V, int</code>)</b>&nbsp;in&nbsp;android.support.design.widget.ViewOffsetBehavior
+</A></nobr><br>
+<!-- Class LayoutInflaterCompat -->
+<A HREF="android.support.v4.view.LayoutInflaterCompat.html" class="hiddenlink" target="rightframe">LayoutInflaterCompat</A><br>
+<!-- Class ListPopupWindowCompat -->
+<A HREF="android.support.v4.widget.ListPopupWindowCompat.html" class="hiddenlink" target="rightframe">ListPopupWindowCompat</A><br>
+<!-- Class ListRowPresenter.SelectItemViewHolderTask -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#ListRowPresenter.SelectItemViewHolderTask" class="hiddenlink" target="rightframe"><b>ListRowPresenter.SelectItemViewHolderTask</b></A><br>
+<!-- Class ListRowPresenter.ViewHolder -->
+<A HREF="android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.html" class="hiddenlink" target="rightframe">ListRowPresenter.ViewHolder</A><br>
+<!-- Class ListViewCompat -->
+<A HREF="pkg_android.support.v4.widget.html#ListViewCompat" class="hiddenlink" target="rightframe"><b>ListViewCompat</b></A><br>
+<!-- Class LocalBroadcastManager -->
+<A HREF="android.support.v4.content.LocalBroadcastManager.html" class="hiddenlink" target="rightframe">LocalBroadcastManager</A><br>
+<!-- Field LOCK_MODE_UNDEFINED -->
+<nobr><A HREF="android.support.v4.widget.DrawerLayout.html#android.support.v4.widget.DrawerLayout.LOCK_MODE_UNDEFINED" class="hiddenlink" target="rightframe">LOCK_MODE_UNDEFINED</A>
+</nobr><br>
+<!-- Field mActionsGridView -->
+<A NAME="M"></A>
+<br><font size="+2">M</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.mActionsGridView" class="hiddenlink" target="rightframe"><strike>mActionsGridView</strike></A>
+</nobr><br>
+<!-- Class MarginLayoutParamsCompat -->
+<i>MarginLayoutParamsCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.view.MarginLayoutParamsCompat.html" class="hiddenlink" target="rightframe">android.support.v4.view</A><br>
+<!-- Constructor MarginLayoutParamsCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.MarginLayoutParamsCompat.html#android.support.v4.view.MarginLayoutParamsCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>MarginLayoutParamsCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class MediaBrowserCompat -->
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserCompat" class="hiddenlink" target="rightframe"><b>MediaBrowserCompat</b></A><br>
+<!-- Class MediaBrowserCompat.ConnectionCallback -->
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserCompat.ConnectionCallback" class="hiddenlink" target="rightframe"><b>MediaBrowserCompat.ConnectionCallback</b></A><br>
+<!-- Class MediaBrowserCompat.ItemCallback -->
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserCompat.ItemCallback" class="hiddenlink" target="rightframe"><b>MediaBrowserCompat.ItemCallback</b></A><br>
+<!-- Class MediaBrowserCompat.MediaItem -->
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserCompat.MediaItem" class="hiddenlink" target="rightframe"><b>MediaBrowserCompat.MediaItem</b></A><br>
+<!-- Class MediaBrowserCompat.SubscriptionCallback -->
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserCompat.SubscriptionCallback" class="hiddenlink" target="rightframe"><b>MediaBrowserCompat.SubscriptionCallback</b></A><br>
+<!-- Class MediaBrowserServiceCompat -->
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserServiceCompat" class="hiddenlink" target="rightframe"><b>MediaBrowserServiceCompat</b></A><br>
+<!-- Class MediaBrowserServiceCompat.BrowserRoot -->
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserServiceCompat.BrowserRoot" class="hiddenlink" target="rightframe"><b>MediaBrowserServiceCompat.BrowserRoot</b></A><br>
+<!-- Class MediaBrowserServiceCompat.Result -->
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserServiceCompat.Result" class="hiddenlink" target="rightframe"><b>MediaBrowserServiceCompat.Result</b></A><br>
+<!-- Class MediaRouteDescriptor -->
+<A HREF="android.support.v7.media.MediaRouteDescriptor.html" class="hiddenlink" target="rightframe">MediaRouteDescriptor</A><br>
+<!-- Class MediaRouteDescriptor.Builder -->
+<A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html" class="hiddenlink" target="rightframe">MediaRouteDescriptor.Builder</A><br>
+<!-- Class MediaRouter.Callback -->
+<A HREF="android.support.v7.media.MediaRouter.Callback.html" class="hiddenlink" target="rightframe">MediaRouter.Callback</A><br>
+<!-- Class MediaRouter.RouteGroup -->
+<A HREF="pkg_android.support.v7.media.html#MediaRouter.RouteGroup" class="hiddenlink" target="rightframe"><strike>MediaRouter.RouteGroup</strike></A><br>
+<!-- Class MenuCompat -->
+<i>MenuCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.view.MenuCompat.html" class="hiddenlink" target="rightframe">android.support.v4.view</A><br>
+<!-- Constructor MenuCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.MenuCompat.html#android.support.v4.view.MenuCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>MenuCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class MenuItemCompat -->
+<i>MenuItemCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.view.MenuItemCompat.html" class="hiddenlink" target="rightframe">android.support.v4.view</A><br>
+<!-- Constructor MenuItemCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.MenuItemCompat.html#android.support.v4.view.MenuItemCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>MenuItemCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Field mMainView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.mMainView" class="hiddenlink" target="rightframe"><strike>mMainView</strike></A>
+</nobr><br>
+<!-- Field MODE_NIGHT_AUTO -->
+<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.MODE_NIGHT_AUTO" class="hiddenlink" target="rightframe">MODE_NIGHT_AUTO</A>
+</nobr><br>
+<!-- Field MODE_NIGHT_FOLLOW_SYSTEM -->
+<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM" class="hiddenlink" target="rightframe">MODE_NIGHT_FOLLOW_SYSTEM</A>
+</nobr><br>
+<!-- Field MODE_NIGHT_NO -->
+<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.MODE_NIGHT_NO" class="hiddenlink" target="rightframe">MODE_NIGHT_NO</A>
+</nobr><br>
+<!-- Field MODE_NIGHT_YES -->
+<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.MODE_NIGHT_YES" class="hiddenlink" target="rightframe">MODE_NIGHT_YES</A>
+</nobr><br>
+<!-- Class MotionEventCompat -->
+<i>MotionEventCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.view.MotionEventCompat.html" class="hiddenlink" target="rightframe">android.support.v4.view</A><br>
+<!-- Constructor MotionEventCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.MotionEventCompat.html#android.support.v4.view.MotionEventCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>MotionEventCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Field mSelectorView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.mSelectorView" class="hiddenlink" target="rightframe"><strike>mSelectorView</strike></A>
+</nobr><br>
+<!-- Method multilineDescription -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.multilineDescription_changed(boolean)" class="hiddenlink" target="rightframe">multilineDescription
+(<code>boolean</code>)</A></nobr><br>
+<!-- Class NavUtils -->
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.app.NavUtils.html" class="hiddenlink" target="rightframe">NavUtils</A><br>
+<!-- Field NO_DRAWABLE -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.NO_DRAWABLE" class="hiddenlink" target="rightframe"><strike>NO_DRAWABLE</strike></A>
+</nobr><br>
+<!-- Class NotificationManagerCompat -->
+<A HREF="android.support.v4.app.NotificationManagerCompat.html" class="hiddenlink" target="rightframe">NotificationManagerCompat</A><br>
+<!-- Method notifyActionChanged -->
+<i>notifyActionChanged</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.notifyActionChanged_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method notifyActionChanged -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.notifyActionChanged_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method notifyButtonActionChanged -->
+<i>notifyButtonActionChanged</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.notifyButtonActionChanged_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method notifyButtonActionChanged -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.notifyButtonActionChanged_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method onAddSharedElementTransition -->
+<A NAME="O"></A>
+<br><font size="+2">O</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>onAddSharedElementTransition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onAddSharedElementTransition_added(android.app.FragmentTransaction, android.support.v17.leanback.app.GuidedStepFragment)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>FragmentTransaction, GuidedStepFragment</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method onAddSharedElementTransition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.onAddSharedElementTransition_added(android.support.v4.app.FragmentTransaction, android.support.v17.leanback.app.GuidedStepSupportFragment)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>FragmentTransaction, GuidedStepSupportFragment</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method onAnimateItemPressedCancelled -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onAnimateItemPressedCancelled_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder)" class="hiddenlink" target="rightframe"><b>onAnimateItemPressedCancelled</b>
+(<code>ViewHolder</code>)</A></nobr><br>
+<!-- Method onBindActivatorView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onBindActivatorView_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe"><b>onBindActivatorView</b>
+(<code>ViewHolder, GuidedAction</code>)</A></nobr><br>
+<!-- Method onBindCheckMarkView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onBindCheckMarkView_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe"><b>onBindCheckMarkView</b>
+(<code>ViewHolder, GuidedAction</code>)</A></nobr><br>
+<!-- Method onBindChevronView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onBindChevronView_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe"><b>onBindChevronView</b>
+(<code>ViewHolder, GuidedAction</code>)</A></nobr><br>
+<!-- Method onCreateBackgroundView -->
+<i>onCreateBackgroundView</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onCreateBackgroundView_added(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>LayoutInflater, ViewGroup, Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method onCreateBackgroundView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.onCreateBackgroundView_added(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>LayoutInflater, ViewGroup, Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method onCreateButtonActions -->
+<i>onCreateButtonActions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onCreateButtonActions_added(java.util.List<android.support.v17.leanback.widget.GuidedAction>, android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;GuidedAction&gt;, Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method onCreateButtonActions -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.onCreateButtonActions_added(java.util.List<android.support.v17.leanback.widget.GuidedAction>, android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;GuidedAction&gt;, Bundle</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method onCreateButtonActionsStylist -->
+<i>onCreateButtonActionsStylist</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onCreateButtonActionsStylist_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method onCreateButtonActionsStylist -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.onCreateButtonActionsStylist_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method onCreateView -->
+<nobr><A HREF="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.html#android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.onCreateView_added(android.view.ViewGroup)" class="hiddenlink" target="rightframe"><b>onCreateView</b>
+(<code>ViewGroup</code>)</A></nobr><br>
+<!-- Method onCreateViewHolder -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onCreateViewHolder_added(android.view.ViewGroup, int)" class="hiddenlink" target="rightframe"><b>onCreateViewHolder</b>
+(<code>ViewGroup, int</code>)</A></nobr><br>
+<!-- Method onDestroyView -->
+<i>onDestroyView</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidanceStylist.html#android.support.v17.leanback.widget.GuidanceStylist.onDestroyView_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidanceStylist
+</A></nobr><br>
+<!-- Method onDestroyView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onDestroyView_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.v17.leanback.widget.GuidedActionsStylist
+</A></nobr><br>
+<!-- Method onEditingModeChange -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onEditingModeChange_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction, boolean)" class="hiddenlink" target="rightframe"><b>onEditingModeChange</b>
+(<code>ViewHolder, GuidedAction, boolean</code>)</A></nobr><br>
+<!-- Method onGuidedActionEditedAndProceed -->
+<i>onGuidedActionEditedAndProceed</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onGuidedActionEditedAndProceed_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>GuidedAction</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method onGuidedActionEditedAndProceed -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.onGuidedActionEditedAndProceed_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>GuidedAction</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method onHeaderClicked -->
+<i>onHeaderClicked</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener.html#android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener.onHeaderClicked_changed(android.support.v17.leanback.widget.RowHeaderPresenter.ViewHolder, android.support.v17.leanback.widget.Row)" class="hiddenlink" target="rightframe">type&nbsp;
+(<code>ViewHolder, Row</code>)&nbsp;in&nbsp;android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener
+</A></nobr><br>
+<!-- Method onHeaderClicked -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener.html#android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener.onHeaderClicked_changed(android.support.v17.leanback.widget.RowHeaderPresenter.ViewHolder, android.support.v17.leanback.widget.Row)" class="hiddenlink" target="rightframe">type&nbsp;
+(<code>ViewHolder, Row</code>)&nbsp;in&nbsp;android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener
+</A></nobr><br>
+<!-- Method onLayoutChild -->
+<nobr><A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html#android.support.design.widget.AppBarLayout.ScrollingViewBehavior.onLayoutChild_removed(android.support.design.widget.CoordinatorLayout, android.view.View, int)" class="hiddenlink" target="rightframe"><strike>onLayoutChild</strike>
+(<code>CoordinatorLayout, View, int</code>)</A></nobr><br>
+<!-- Method onProvideBackgroundFragment -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onProvideBackgroundFragment_removed()" class="hiddenlink" target="rightframe"><strike>onProvideBackgroundFragment</strike>
+()</A></nobr><br>
+<!-- Method onProvideBackgroundSupportFragment -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.onProvideBackgroundSupportFragment_removed()" class="hiddenlink" target="rightframe"><strike>onProvideBackgroundSupportFragment</strike>
+()</A></nobr><br>
+<!-- Method onProvideItemLayoutId -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onProvideItemLayoutId_added(int)" class="hiddenlink" target="rightframe"><b>onProvideItemLayoutId</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method onRouteUnselected -->
+<nobr><A HREF="android.support.v7.media.MediaRouter.Callback.html#android.support.v7.media.MediaRouter.Callback.onRouteUnselected_added(android.support.v7.media.MediaRouter, android.support.v7.media.MediaRouter.RouteInfo, int)" class="hiddenlink" target="rightframe"><b>onRouteUnselected</b>
+(<code>MediaRouter, RouteInfo, int</code>)</A></nobr><br>
+<!-- Method onSaveInstanceState -->
+<i>onSaveInstanceState</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.onSaveInstanceState_added()" class="hiddenlink" target="rightframe">type&nbsp;<b>
+()</b>&nbsp;in&nbsp;android.support.design.widget.TextInputLayout
+</A></nobr><br>
+<!-- Method onSaveInstanceState -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.onSaveInstanceState_added(android.os.Bundle)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Bundle</code>)</b>&nbsp;in&nbsp;android.support.v7.app.AppCompatDelegate
+</A></nobr><br>
+<!-- Method onStartActivityFromFragment -->
+<nobr><A HREF="android.support.v4.app.FragmentHostCallback.html#android.support.v4.app.FragmentHostCallback.onStartActivityFromFragment_added(android.support.v4.app.Fragment, android.content.Intent, int, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>onStartActivityFromFragment</b>
+(<code>Fragment, Intent, int, Bundle</code>)</A></nobr><br>
+<!-- Method onSubGuidedActionClicked -->
+<i>onSubGuidedActionClicked</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onSubGuidedActionClicked_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>GuidedAction</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method onSubGuidedActionClicked -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.onSubGuidedActionClicked_added(android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>GuidedAction</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method onUpdateActivatorView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onUpdateActivatorView_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe"><b>onUpdateActivatorView</b>
+(<code>ViewHolder, GuidedAction</code>)</A></nobr><br>
+<!-- Method onUpdateExpandedViewHolder -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.onUpdateExpandedViewHolder_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder)" class="hiddenlink" target="rightframe"><b>onUpdateExpandedViewHolder</b>
+(<code>ViewHolder</code>)</A></nobr><br>
+<!-- Class OrientationHelper -->
+<A HREF="android.support.v7.widget.OrientationHelper.html" class="hiddenlink" target="rightframe">OrientationHelper</A><br>
+<!-- Class Palette -->
+<A NAME="P"></A>
+<br><font size="+2">P</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v7.graphics.Palette.html" class="hiddenlink" target="rightframe">Palette</A><br>
+<!-- Class Palette.Builder -->
+<A HREF="android.support.v7.graphics.Palette.Builder.html" class="hiddenlink" target="rightframe">Palette.Builder</A><br>
+<!-- Class ParallelExecutorCompat -->
+<i>ParallelExecutorCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.content.ParallelExecutorCompat.html" class="hiddenlink" target="rightframe">android.support.v4.content</A><br>
+<!-- Constructor ParallelExecutorCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.content.ParallelExecutorCompat.html#android.support.v4.content.ParallelExecutorCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>ParallelExecutorCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class ParcelableCompat -->
+<i>ParcelableCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.os.ParcelableCompat.html" class="hiddenlink" target="rightframe">android.support.v4.os</A><br>
+<!-- Constructor ParcelableCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.os.ParcelableCompat.html#android.support.v4.os.ParcelableCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>ParcelableCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class PathInterpolatorCompat -->
+<A HREF="android.support.v4.view.animation.PathInterpolatorCompat.html" class="hiddenlink" target="rightframe">PathInterpolatorCompat</A><br>
+<!-- Class PercentLayoutHelper.PercentLayoutInfo -->
+<A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html" class="hiddenlink" target="rightframe">PercentLayoutHelper.PercentLayoutInfo</A><br>
+<!-- Method popBackStackToGuidedStepFragment -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.popBackStackToGuidedStepFragment_added(java.lang.Class, int)" class="hiddenlink" target="rightframe"><b>popBackStackToGuidedStepFragment</b>
+(<code>Class, int</code>)</A></nobr><br>
+<!-- Method popBackStackToGuidedStepSupportFragment -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.popBackStackToGuidedStepSupportFragment_added(java.lang.Class, int)" class="hiddenlink" target="rightframe"><b>popBackStackToGuidedStepSupportFragment</b>
+(<code>Class, int</code>)</A></nobr><br>
+<!-- Class PopupMenuCompat -->
+<A HREF="android.support.v4.widget.PopupMenuCompat.html" class="hiddenlink" target="rightframe">PopupMenuCompat</A><br>
+<!-- Class PopupWindowCompat -->
+<A HREF="android.support.v4.widget.PopupWindowCompat.html" class="hiddenlink" target="rightframe">PopupWindowCompat</A><br>
+<!-- Class PreferenceFragment -->
+<A HREF="android.support.v14.preference.PreferenceFragment.html" class="hiddenlink" target="rightframe">PreferenceFragment</A><br>
+<!-- Class PreferenceFragmentCompat -->
+<A HREF="android.support.v7.preference.PreferenceFragmentCompat.html" class="hiddenlink" target="rightframe">PreferenceFragmentCompat</A><br>
+<!-- Class PreferenceScreen -->
+<A HREF="android.support.v7.preference.PreferenceScreen.html" class="hiddenlink" target="rightframe">PreferenceScreen</A><br>
+<!-- Class PreferenceViewHolder -->
+<A HREF="android.support.v7.preference.PreferenceViewHolder.html" class="hiddenlink" target="rightframe">PreferenceViewHolder</A><br>
+<!-- Class Presenter.ViewHolderTask -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#Presenter.ViewHolderTask" class="hiddenlink" target="rightframe"><b>Presenter.ViewHolderTask</b></A><br>
+<!-- Class R.attr -->
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v7.appcompat.R.attr.html" class="hiddenlink" target="rightframe">R.attr</A><br>
+<!-- Class R.dimen -->
+<A HREF="android.support.v7.recyclerview.R.dimen.html" class="hiddenlink" target="rightframe">R.dimen</A><br>
+<!-- Class R.drawable -->
+<A HREF="android.support.v7.appcompat.R.drawable.html" class="hiddenlink" target="rightframe">R.drawable</A><br>
+<!-- Class R.style -->
+<A HREF="android.support.v7.appcompat.R.style.html" class="hiddenlink" target="rightframe">R.style</A><br>
+<!-- Class R.styleable -->
+<A HREF="android.support.v7.appcompat.R.styleable.html" class="hiddenlink" target="rightframe">R.styleable</A><br>
+<!-- Field ratingBarStyleIndicator -->
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.ratingBarStyleIndicator" class="hiddenlink" target="rightframe">ratingBarStyleIndicator</A>
+</nobr><br>
+<!-- Field ratingBarStyleSmall -->
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.ratingBarStyleSmall" class="hiddenlink" target="rightframe">ratingBarStyleSmall</A>
+</nobr><br>
+<!-- Class RecyclerView -->
+<A HREF="android.support.v7.widget.RecyclerView.html" class="hiddenlink" target="rightframe">RecyclerView</A><br>
+<!-- Class RecyclerView.ItemAnimator -->
+<A HREF="android.support.v7.widget.RecyclerView.ItemAnimator.html" class="hiddenlink" target="rightframe">RecyclerView.ItemAnimator</A><br>
+<!-- Class RecyclerView.LayoutManager -->
+<A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html" class="hiddenlink" target="rightframe">RecyclerView.LayoutManager</A><br>
+<!-- Class RecyclerView.State -->
+<A HREF="android.support.v7.widget.RecyclerView.State.html" class="hiddenlink" target="rightframe">RecyclerView.State</A><br>
+<!-- Class RemoteInput -->
+<A HREF="android.support.v4.app.RemoteInput.html" class="hiddenlink" target="rightframe">RemoteInput</A><br>
+<!-- Method removeDrawerListener -->
+<nobr><A HREF="android.support.v4.widget.DrawerLayout.html#android.support.v4.widget.DrawerLayout.removeDrawerListener_added(android.support.v4.widget.DrawerLayout.DrawerListener)" class="hiddenlink" target="rightframe"><b>removeDrawerListener</b>
+(<code>DrawerListener</code>)</A></nobr><br>
+<!-- Method resizeBitmapArea -->
+<nobr><A HREF="android.support.v7.graphics.Palette.Builder.html#android.support.v7.graphics.Palette.Builder.resizeBitmapArea_added(int)" class="hiddenlink" target="rightframe"><b>resizeBitmapArea</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method resizeBitmapSize -->
+<nobr><A HREF="android.support.v7.graphics.Palette.Builder.html#android.support.v7.graphics.Palette.Builder.resizeBitmapSize_changed(int)" class="hiddenlink" target="rightframe">resizeBitmapSize
+(<code>int</code>)</A></nobr><br>
+<!-- Class ResourcesCompat -->
+<i>ResourcesCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.content.res.ResourcesCompat.html" class="hiddenlink" target="rightframe">android.support.v4.content.res</A><br>
+<!-- Constructor ResourcesCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.content.res.ResourcesCompat.html#android.support.v4.content.res.ResourcesCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>ResourcesCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Method RGBToLAB -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.RGBToLAB_added(int, int, int, double[])" class="hiddenlink" target="rightframe"><b>RGBToLAB</b>
+(<code>int, int, int, double[]</code>)</A></nobr><br>
+<!-- Method RGBToXYZ -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.RGBToXYZ_added(int, int, int, double[])" class="hiddenlink" target="rightframe"><b>RGBToXYZ</b>
+(<code>int, int, int, double[]</code>)</A></nobr><br>
+<!-- Class RoundedBitmapDrawableFactory -->
+<i>RoundedBitmapDrawableFactory</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory.html" class="hiddenlink" target="rightframe">android.support.v4.graphics.drawable</A><br>
+<!-- Constructor RoundedBitmapDrawableFactory -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory.html#android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory.ctor_removed()" class="hiddenlink" target="rightframe"><strike>RoundedBitmapDrawableFactory</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class RowsFragment -->
+<A HREF="android.support.v17.leanback.app.RowsFragment.html" class="hiddenlink" target="rightframe">RowsFragment</A><br>
+<!-- Class RowsSupportFragment -->
+<A HREF="android.support.v17.leanback.app.RowsSupportFragment.html" class="hiddenlink" target="rightframe">RowsSupportFragment</A><br>
+<!-- Class ScaleGestureDetectorCompat -->
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.view.ScaleGestureDetectorCompat.html" class="hiddenlink" target="rightframe">ScaleGestureDetectorCompat</A><br>
+<!-- Class ScrollerCompat -->
+<A HREF="android.support.v4.widget.ScrollerCompat.html" class="hiddenlink" target="rightframe">ScrollerCompat</A><br>
+<!-- Class SearchViewCompat -->
+<A HREF="android.support.v4.widget.SearchViewCompat.html" class="hiddenlink" target="rightframe">SearchViewCompat</A><br>
+<!-- Class ServiceCompat -->
+<A HREF="android.support.v4.app.ServiceCompat.html" class="hiddenlink" target="rightframe">ServiceCompat</A><br>
+<!-- Method setAsButtonActions -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.setAsButtonActions_added()" class="hiddenlink" target="rightframe"><b>setAsButtonActions</b>
+()</A></nobr><br>
+<!-- Method setAutoMeasureEnabled -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.setAutoMeasureEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setAutoMeasureEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setButtonActions -->
+<i>setButtonActions</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.setButtonActions_added(java.util.List<android.support.v17.leanback.widget.GuidedAction>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;GuidedAction&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method setButtonActions -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.setButtonActions_added(java.util.List<android.support.v17.leanback.widget.GuidedAction>)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>List&lt;GuidedAction&gt;</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method setCompatElevation -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.setCompatElevation_added(float)" class="hiddenlink" target="rightframe"><b>setCompatElevation</b>
+(<code>float</code>)</A></nobr><br>
+<!-- Method setDefaultNightMode -->
+<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.setDefaultNightMode_added(int)" class="hiddenlink" target="rightframe"><b>setDefaultNightMode</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setDivider -->
+<i>setDivider</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v14.preference.PreferenceFragment.html#android.support.v14.preference.PreferenceFragment.setDivider_added(android.graphics.drawable.Drawable)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Drawable</code>)</b>&nbsp;in&nbsp;android.support.v14.preference.PreferenceFragment
+</A></nobr><br>
+<!-- Method setDivider -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.preference.PreferenceFragmentCompat.html#android.support.v7.preference.PreferenceFragmentCompat.setDivider_added(android.graphics.drawable.Drawable)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>Drawable</code>)</b>&nbsp;in&nbsp;android.support.v7.preference.PreferenceFragmentCompat
+</A></nobr><br>
+<!-- Method setDividerAllowedAbove -->
+<nobr><A HREF="android.support.v7.preference.PreferenceViewHolder.html#android.support.v7.preference.PreferenceViewHolder.setDividerAllowedAbove_added(boolean)" class="hiddenlink" target="rightframe"><b>setDividerAllowedAbove</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setDividerAllowedBelow -->
+<nobr><A HREF="android.support.v7.preference.PreferenceViewHolder.html#android.support.v7.preference.PreferenceViewHolder.setDividerAllowedBelow_added(boolean)" class="hiddenlink" target="rightframe"><b>setDividerAllowedBelow</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setDividerHeight -->
+<i>setDividerHeight</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v14.preference.PreferenceFragment.html#android.support.v14.preference.PreferenceFragment.setDividerHeight_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v14.preference.PreferenceFragment
+</A></nobr><br>
+<!-- Method setDividerHeight -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v7.preference.PreferenceFragmentCompat.html#android.support.v7.preference.PreferenceFragmentCompat.setDividerHeight_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v7.preference.PreferenceFragmentCompat
+</A></nobr><br>
+<!-- Method setDrawerListener -->
+<nobr><A HREF="android.support.v4.widget.DrawerLayout.html#android.support.v4.widget.DrawerLayout.setDrawerListener_changed(android.support.v4.widget.DrawerLayout.DrawerListener)" class="hiddenlink" target="rightframe">setDrawerListener
+(<code>DrawerListener</code>)</A></nobr><br>
+<!-- Method setEditDescription -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setEditDescription_added(java.lang.CharSequence)" class="hiddenlink" target="rightframe"><b>setEditDescription</b>
+(<code>CharSequence</code>)</A></nobr><br>
+<!-- Method setEditingMode -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.setEditingMode_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction, boolean)" class="hiddenlink" target="rightframe"><b>setEditingMode</b>
+(<code>ViewHolder, GuidedAction, boolean</code>)</A></nobr><br>
+<!-- Method setExpandedTitleMargin -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleMargin_added(int, int, int, int)" class="hiddenlink" target="rightframe"><b>setExpandedTitleMargin</b>
+(<code>int, int, int, int</code>)</A></nobr><br>
+<!-- Method setExpandedTitleMarginBottom -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleMarginBottom_added(int)" class="hiddenlink" target="rightframe"><b>setExpandedTitleMarginBottom</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setExpandedTitleMarginEnd -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleMarginEnd_added(int)" class="hiddenlink" target="rightframe"><b>setExpandedTitleMarginEnd</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setExpandedTitleMarginStart -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleMarginStart_added(int)" class="hiddenlink" target="rightframe"><b>setExpandedTitleMarginStart</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setExpandedTitleMarginTop -->
+<nobr><A HREF="android.support.design.widget.CollapsingToolbarLayout.html#android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleMarginTop_added(int)" class="hiddenlink" target="rightframe"><b>setExpandedTitleMarginTop</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setExpandedViewHolder -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.setExpandedViewHolder_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder)" class="hiddenlink" target="rightframe"><b>setExpandedViewHolder</b>
+(<code>ViewHolder</code>)</A></nobr><br>
+<!-- Method setFocusable -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setFocusable_added(boolean)" class="hiddenlink" target="rightframe"><b>setFocusable</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setHintEnabled -->
+<nobr><A HREF="android.support.design.widget.TextInputLayout.html#android.support.design.widget.TextInputLayout.setHintEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setHintEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setIntent -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setIntent_added(android.content.Intent)" class="hiddenlink" target="rightframe"><b>setIntent</b>
+(<code>Intent</code>)</A></nobr><br>
+<!-- Method setLocalNightMode -->
+<nobr><A HREF="android.support.v7.app.AppCompatDelegate.html#android.support.v7.app.AppCompatDelegate.setLocalNightMode_added(int)" class="hiddenlink" target="rightframe"><b>setLocalNightMode</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setMeasuredDimension -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.setMeasuredDimension_added(android.graphics.Rect, int, int)" class="hiddenlink" target="rightframe"><b>setMeasuredDimension</b>
+(<code>Rect, int, int</code>)</A></nobr><br>
+<!-- Method setMeasurementCacheEnabled -->
+<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.setMeasurementCacheEnabled_added(boolean)" class="hiddenlink" target="rightframe"><b>setMeasurementCacheEnabled</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setOverlayTop -->
+<i>setOverlayTop</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html#android.support.design.widget.AppBarLayout.ScrollingViewBehavior.setOverlayTop_changed(int)" class="hiddenlink" target="rightframe">type&nbsp;
+(<code>int</code>)&nbsp;in&nbsp;android.support.design.widget.AppBarLayout.ScrollingViewBehavior
+</A></nobr><br>
+<!-- Method setOverlayTop -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.design.widget.HeaderScrollingViewBehavior.html#android.support.design.widget.HeaderScrollingViewBehavior.setOverlayTop_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.design.widget.HeaderScrollingViewBehavior
+</A></nobr><br>
+<!-- Method setSecondaryToolbarColor -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.Builder.html#android.support.customtabs.CustomTabsIntent.Builder.setSecondaryToolbarColor_added(int)" class="hiddenlink" target="rightframe"><b>setSecondaryToolbarColor</b>
+(<code>int</code>)</A></nobr><br>
+<!-- Method setSelectedButtonActionPosition -->
+<i>setSelectedButtonActionPosition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.setSelectedButtonActionPosition_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method setSelectedButtonActionPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.setSelectedButtonActionPosition_added(int)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method setSelectedPosition -->
+<i>setSelectedPosition</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseFragment.html#android.support.v17.leanback.app.BrowseFragment.setSelectedPosition_added(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int, boolean, ViewHolderTask</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseFragment
+</A></nobr><br>
+<!-- Method setSelectedPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html#android.support.v17.leanback.app.BrowseSupportFragment.setSelectedPosition_added(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int, boolean, ViewHolderTask</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.BrowseSupportFragment
+</A></nobr><br>
+<!-- Method setSelectedPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.RowsFragment.html#android.support.v17.leanback.app.RowsFragment.setSelectedPosition_added(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int, boolean, ViewHolderTask</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.RowsFragment
+</A></nobr><br>
+<!-- Method setSelectedPosition -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.RowsSupportFragment.html#android.support.v17.leanback.app.RowsSupportFragment.setSelectedPosition_added(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask)" class="hiddenlink" target="rightframe">type&nbsp;<b>
+(<code>int, boolean, ViewHolderTask</code>)</b>&nbsp;in&nbsp;android.support.v17.leanback.app.RowsSupportFragment
+</A></nobr><br>
+<!-- Method setShouldUseGeneratedIds -->
+<nobr><A HREF="android.support.v7.preference.PreferenceScreen.html#android.support.v7.preference.PreferenceScreen.setShouldUseGeneratedIds_added(boolean)" class="hiddenlink" target="rightframe"><b>setShouldUseGeneratedIds</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setSizeFromDrawableIntrinsic -->
+<nobr><A HREF="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.html#android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.setSizeFromDrawableIntrinsic_added(boolean)" class="hiddenlink" target="rightframe"><b>setSizeFromDrawableIntrinsic</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method setSubActions -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.setSubActions_added(java.util.List<android.support.v17.leanback.widget.GuidedAction>)" class="hiddenlink" target="rightframe"><b>setSubActions</b>
+(<code>List&lt;GuidedAction&gt;</code>)</A></nobr><br>
+<!-- Method setTabsFromPagerAdapter -->
+<nobr><A HREF="android.support.design.widget.TabLayout.html#android.support.design.widget.TabLayout.setTabsFromPagerAdapter_changed(android.support.v4.view.PagerAdapter)" class="hiddenlink" target="rightframe">setTabsFromPagerAdapter
+(<code>PagerAdapter</code>)</A></nobr><br>
+<!-- Method setTextAppearance -->
+<nobr><A HREF="android.support.v4.widget.TextViewCompat.html#android.support.v4.widget.TextViewCompat.setTextAppearance_added(android.widget.TextView, int)" class="hiddenlink" target="rightframe"><b>setTextAppearance</b>
+(<code>TextView, int</code>)</A></nobr><br>
+<!-- Method setToolbarItem -->
+<nobr><A HREF="android.support.customtabs.CustomTabsSession.html#android.support.customtabs.CustomTabsSession.setToolbarItem_added(int, android.graphics.Bitmap, java.lang.String)" class="hiddenlink" target="rightframe"><b>setToolbarItem</b>
+(<code>int, Bitmap, String</code>)</A></nobr><br>
+<!-- Method setupImeOptions -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.setupImeOptions_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)" class="hiddenlink" target="rightframe"><b>setupImeOptions</b>
+(<code>ViewHolder, GuidedAction</code>)</A></nobr><br>
+<!-- Method setUseCompatPadding -->
+<nobr><A HREF="android.support.design.widget.FloatingActionButton.html#android.support.design.widget.FloatingActionButton.setUseCompatPadding_added(boolean)" class="hiddenlink" target="rightframe"><b>setUseCompatPadding</b>
+(<code>boolean</code>)</A></nobr><br>
+<!-- Class ShareCompat -->
+<i>ShareCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.app.ShareCompat.html" class="hiddenlink" target="rightframe">android.support.v4.app</A><br>
+<!-- Constructor ShareCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.app.ShareCompat.html#android.support.v4.app.ShareCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>ShareCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class SharedPreferencesCompat -->
+<i>SharedPreferencesCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.content.SharedPreferencesCompat.html" class="hiddenlink" target="rightframe">android.support.v4.content</A><br>
+<!-- Constructor SharedPreferencesCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.content.SharedPreferencesCompat.html#android.support.v4.content.SharedPreferencesCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>SharedPreferencesCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class SharedPreferencesCompat.EditorCompat -->
+<A HREF="android.support.v4.content.SharedPreferencesCompat.EditorCompat.html" class="hiddenlink" target="rightframe">SharedPreferencesCompat.EditorCompat</A><br>
+<!-- Method shouldUseGeneratedIds -->
+<nobr><A HREF="android.support.v7.preference.PreferenceScreen.html#android.support.v7.preference.PreferenceScreen.shouldUseGeneratedIds_added()" class="hiddenlink" target="rightframe"><b>shouldUseGeneratedIds</b>
+()</A></nobr><br>
+<!-- Field Spinner_android_entries -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Spinner_android_entries" class="hiddenlink" target="rightframe">Spinner_android_entries</A>
+</nobr><br>
+<!-- Field srcCompat -->
+<nobr><A HREF="android.support.v7.appcompat.R.attr.html#android.support.v7.appcompat.R.attr.srcCompat" class="hiddenlink" target="rightframe">srcCompat</A>
+</nobr><br>
+<!-- Method startActivity -->
+<nobr><A HREF="android.support.v4.app.Fragment.html#android.support.v4.app.Fragment.startActivity_added(android.content.Intent, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>startActivity</b>
+(<code>Intent, Bundle</code>)</A></nobr><br>
+<!-- Method startActivityForResult -->
+<nobr><A HREF="android.support.v4.app.Fragment.html#android.support.v4.app.Fragment.startActivityForResult_added(android.content.Intent, int, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>startActivityForResult</b>
+(<code>Intent, int, Bundle</code>)</A></nobr><br>
+<!-- Method startActivityFromFragment -->
+<nobr><A HREF="android.support.v4.app.FragmentActivity.html#android.support.v4.app.FragmentActivity.startActivityFromFragment_added(android.support.v4.app.Fragment, android.content.Intent, int, android.os.Bundle)" class="hiddenlink" target="rightframe"><b>startActivityFromFragment</b>
+(<code>Fragment, Intent, int, Bundle</code>)</A></nobr><br>
+<!-- Method startExpandedTransition -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.startExpandedTransition_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder)" class="hiddenlink" target="rightframe"><b>startExpandedTransition</b>
+(<code>ViewHolder</code>)</A></nobr><br>
+<!-- Class TabItem -->
+<A NAME="T"></A>
+<br><font size="+2">T</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.design.widget.html#TabItem" class="hiddenlink" target="rightframe"><b>TabItem</b></A><br>
+<!-- Class TabLayout -->
+<A HREF="android.support.design.widget.TabLayout.html" class="hiddenlink" target="rightframe">TabLayout</A><br>
+<!-- Class Target -->
+<A HREF="pkg_android.support.v7.graphics.html#Target" class="hiddenlink" target="rightframe"><b>Target</b></A><br>
+<!-- Class Target.Builder -->
+<A HREF="pkg_android.support.v7.graphics.html#Target.Builder" class="hiddenlink" target="rightframe"><b>Target.Builder</b></A><br>
+<!-- Class TaskStackBuilder -->
+<A HREF="android.support.v4.app.TaskStackBuilder.html" class="hiddenlink" target="rightframe">TaskStackBuilder</A><br>
+<!-- Class TextDirectionHeuristicsCompat -->
+<i>TextDirectionHeuristicsCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.text.TextDirectionHeuristicsCompat.html" class="hiddenlink" target="rightframe">android.support.v4.text</A><br>
+<!-- Constructor TextDirectionHeuristicsCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.text.TextDirectionHeuristicsCompat.html#android.support.v4.text.TextDirectionHeuristicsCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>TextDirectionHeuristicsCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class TextInputEditText -->
+<A HREF="pkg_android.support.design.widget.html#TextInputEditText" class="hiddenlink" target="rightframe"><b>TextInputEditText</b></A><br>
+<!-- Class TextInputLayout -->
+<A HREF="android.support.design.widget.TextInputLayout.html" class="hiddenlink" target="rightframe">TextInputLayout</A><br>
+<!-- Class TextUtilsCompat -->
+<i>TextUtilsCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.text.TextUtilsCompat.html" class="hiddenlink" target="rightframe">android.support.v4.text</A><br>
+<!-- Constructor TextUtilsCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.text.TextUtilsCompat.html#android.support.v4.text.TextUtilsCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>TextUtilsCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class TextViewCompat -->
+<A HREF="android.support.v4.widget.TextViewCompat.html" class="hiddenlink" target="rightframe">TextViewCompat</A><br>
+<!-- Field Theme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme" class="hiddenlink" target="rightframe"><strike>Theme</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarDivider -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarDivider" class="hiddenlink" target="rightframe"><strike>Theme_actionBarDivider</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarItemBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarItemBackground" class="hiddenlink" target="rightframe"><strike>Theme_actionBarItemBackground</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarPopupTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarPopupTheme" class="hiddenlink" target="rightframe"><strike>Theme_actionBarPopupTheme</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarSize -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarSize" class="hiddenlink" target="rightframe"><strike>Theme_actionBarSize</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarSplitStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarSplitStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionBarSplitStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionBarStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarTabBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarTabBarStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionBarTabBarStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarTabStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarTabStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionBarTabStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarTabTextStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarTabTextStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionBarTabTextStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarTheme" class="hiddenlink" target="rightframe"><strike>Theme_actionBarTheme</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarWidgetTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarWidgetTheme" class="hiddenlink" target="rightframe"><strike>Theme_actionBarWidgetTheme</strike></A>
+</nobr><br>
+<!-- Field Theme_actionButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionDropDownStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionDropDownStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionDropDownStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionMenuTextAppearance -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionMenuTextAppearance" class="hiddenlink" target="rightframe"><strike>Theme_actionMenuTextAppearance</strike></A>
+</nobr><br>
+<!-- Field Theme_actionMenuTextColor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionMenuTextColor" class="hiddenlink" target="rightframe"><strike>Theme_actionMenuTextColor</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeBackground" class="hiddenlink" target="rightframe"><strike>Theme_actionModeBackground</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeCloseButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeCloseButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionModeCloseButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeCloseDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeCloseDrawable" class="hiddenlink" target="rightframe"><strike>Theme_actionModeCloseDrawable</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeCopyDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeCopyDrawable" class="hiddenlink" target="rightframe"><strike>Theme_actionModeCopyDrawable</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeCutDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeCutDrawable" class="hiddenlink" target="rightframe"><strike>Theme_actionModeCutDrawable</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeFindDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeFindDrawable" class="hiddenlink" target="rightframe"><strike>Theme_actionModeFindDrawable</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModePasteDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModePasteDrawable" class="hiddenlink" target="rightframe"><strike>Theme_actionModePasteDrawable</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModePopupWindowStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModePopupWindowStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionModePopupWindowStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeSelectAllDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeSelectAllDrawable" class="hiddenlink" target="rightframe"><strike>Theme_actionModeSelectAllDrawable</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeShareDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeShareDrawable" class="hiddenlink" target="rightframe"><strike>Theme_actionModeShareDrawable</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeSplitBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeSplitBackground" class="hiddenlink" target="rightframe"><strike>Theme_actionModeSplitBackground</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionModeStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeWebSearchDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeWebSearchDrawable" class="hiddenlink" target="rightframe"><strike>Theme_actionModeWebSearchDrawable</strike></A>
+</nobr><br>
+<!-- Field Theme_actionOverflowButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionOverflowButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionOverflowButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionOverflowMenuStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionOverflowMenuStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionOverflowMenuStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_activityChooserViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_activityChooserViewStyle" class="hiddenlink" target="rightframe"><strike>Theme_activityChooserViewStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_alertDialogButtonGroupStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_alertDialogButtonGroupStyle" class="hiddenlink" target="rightframe"><strike>Theme_alertDialogButtonGroupStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_alertDialogCenterButtons -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_alertDialogCenterButtons" class="hiddenlink" target="rightframe"><strike>Theme_alertDialogCenterButtons</strike></A>
+</nobr><br>
+<!-- Field Theme_alertDialogStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_alertDialogStyle" class="hiddenlink" target="rightframe"><strike>Theme_alertDialogStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_alertDialogTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_alertDialogTheme" class="hiddenlink" target="rightframe"><strike>Theme_alertDialogTheme</strike></A>
+</nobr><br>
+<!-- Field Theme_android_windowAnimationStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_android_windowAnimationStyle" class="hiddenlink" target="rightframe"><strike>Theme_android_windowAnimationStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_android_windowIsFloating -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_android_windowIsFloating" class="hiddenlink" target="rightframe"><strike>Theme_android_windowIsFloating</strike></A>
+</nobr><br>
+<!-- Field Theme_AppCompat_DayNight -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight" class="hiddenlink" target="rightframe">Theme_AppCompat_DayNight</A>
+</nobr><br>
+<!-- Field Theme_AppCompat_DayNight_DarkActionBar -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_DarkActionBar" class="hiddenlink" target="rightframe">Theme_AppCompat_DayNight_DarkActionBar</A>
+</nobr><br>
+<!-- Field Theme_AppCompat_DayNight_Dialog -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_Dialog" class="hiddenlink" target="rightframe">Theme_AppCompat_DayNight_Dialog</A>
+</nobr><br>
+<!-- Field Theme_AppCompat_DayNight_Dialog_Alert -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_Dialog_Alert" class="hiddenlink" target="rightframe">Theme_AppCompat_DayNight_Dialog_Alert</A>
+</nobr><br>
+<!-- Field Theme_AppCompat_DayNight_Dialog_MinWidth -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_Dialog_MinWidth" class="hiddenlink" target="rightframe">Theme_AppCompat_DayNight_Dialog_MinWidth</A>
+</nobr><br>
+<!-- Field Theme_AppCompat_DayNight_DialogWhenLarge -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_DialogWhenLarge" class="hiddenlink" target="rightframe">Theme_AppCompat_DayNight_DialogWhenLarge</A>
+</nobr><br>
+<!-- Field Theme_AppCompat_DayNight_NoActionBar -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_NoActionBar" class="hiddenlink" target="rightframe">Theme_AppCompat_DayNight_NoActionBar</A>
+</nobr><br>
+<!-- Field Theme_autoCompleteTextViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_autoCompleteTextViewStyle" class="hiddenlink" target="rightframe"><strike>Theme_autoCompleteTextViewStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_borderlessButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_borderlessButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_borderlessButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_buttonBarButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_buttonBarButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_buttonBarButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_buttonBarNegativeButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_buttonBarNegativeButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_buttonBarNegativeButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_buttonBarNeutralButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_buttonBarNeutralButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_buttonBarNeutralButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_buttonBarPositiveButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_buttonBarPositiveButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_buttonBarPositiveButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_buttonBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_buttonBarStyle" class="hiddenlink" target="rightframe"><strike>Theme_buttonBarStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_buttonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_buttonStyle" class="hiddenlink" target="rightframe"><strike>Theme_buttonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_buttonStyleSmall -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_buttonStyleSmall" class="hiddenlink" target="rightframe"><strike>Theme_buttonStyleSmall</strike></A>
+</nobr><br>
+<!-- Field Theme_checkboxStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_checkboxStyle" class="hiddenlink" target="rightframe"><strike>Theme_checkboxStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_checkedTextViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_checkedTextViewStyle" class="hiddenlink" target="rightframe"><strike>Theme_checkedTextViewStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_colorAccent -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_colorAccent" class="hiddenlink" target="rightframe"><strike>Theme_colorAccent</strike></A>
+</nobr><br>
+<!-- Field Theme_colorButtonNormal -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_colorButtonNormal" class="hiddenlink" target="rightframe"><strike>Theme_colorButtonNormal</strike></A>
+</nobr><br>
+<!-- Field Theme_colorControlActivated -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_colorControlActivated" class="hiddenlink" target="rightframe"><strike>Theme_colorControlActivated</strike></A>
+</nobr><br>
+<!-- Field Theme_colorControlHighlight -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_colorControlHighlight" class="hiddenlink" target="rightframe"><strike>Theme_colorControlHighlight</strike></A>
+</nobr><br>
+<!-- Field Theme_colorControlNormal -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_colorControlNormal" class="hiddenlink" target="rightframe"><strike>Theme_colorControlNormal</strike></A>
+</nobr><br>
+<!-- Field Theme_colorPrimary -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_colorPrimary" class="hiddenlink" target="rightframe"><strike>Theme_colorPrimary</strike></A>
+</nobr><br>
+<!-- Field Theme_colorPrimaryDark -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_colorPrimaryDark" class="hiddenlink" target="rightframe"><strike>Theme_colorPrimaryDark</strike></A>
+</nobr><br>
+<!-- Field Theme_colorSwitchThumbNormal -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_colorSwitchThumbNormal" class="hiddenlink" target="rightframe"><strike>Theme_colorSwitchThumbNormal</strike></A>
+</nobr><br>
+<!-- Field Theme_controlBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_controlBackground" class="hiddenlink" target="rightframe"><strike>Theme_controlBackground</strike></A>
+</nobr><br>
+<!-- Field Theme_dialogPreferredPadding -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_dialogPreferredPadding" class="hiddenlink" target="rightframe"><strike>Theme_dialogPreferredPadding</strike></A>
+</nobr><br>
+<!-- Field Theme_dialogTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_dialogTheme" class="hiddenlink" target="rightframe"><strike>Theme_dialogTheme</strike></A>
+</nobr><br>
+<!-- Field Theme_dividerHorizontal -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_dividerHorizontal" class="hiddenlink" target="rightframe"><strike>Theme_dividerHorizontal</strike></A>
+</nobr><br>
+<!-- Field Theme_dividerVertical -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_dividerVertical" class="hiddenlink" target="rightframe"><strike>Theme_dividerVertical</strike></A>
+</nobr><br>
+<!-- Field Theme_dropdownListPreferredItemHeight -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_dropdownListPreferredItemHeight" class="hiddenlink" target="rightframe"><strike>Theme_dropdownListPreferredItemHeight</strike></A>
+</nobr><br>
+<!-- Field Theme_dropDownListViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_dropDownListViewStyle" class="hiddenlink" target="rightframe"><strike>Theme_dropDownListViewStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_editTextBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_editTextBackground" class="hiddenlink" target="rightframe"><strike>Theme_editTextBackground</strike></A>
+</nobr><br>
+<!-- Field Theme_editTextColor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_editTextColor" class="hiddenlink" target="rightframe"><strike>Theme_editTextColor</strike></A>
+</nobr><br>
+<!-- Field Theme_editTextStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_editTextStyle" class="hiddenlink" target="rightframe"><strike>Theme_editTextStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_homeAsUpIndicator -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_homeAsUpIndicator" class="hiddenlink" target="rightframe"><strike>Theme_homeAsUpIndicator</strike></A>
+</nobr><br>
+<!-- Field Theme_imageButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_imageButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_imageButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_listChoiceBackgroundIndicator -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_listChoiceBackgroundIndicator" class="hiddenlink" target="rightframe"><strike>Theme_listChoiceBackgroundIndicator</strike></A>
+</nobr><br>
+<!-- Field Theme_listDividerAlertDialog -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_listDividerAlertDialog" class="hiddenlink" target="rightframe"><strike>Theme_listDividerAlertDialog</strike></A>
+</nobr><br>
+<!-- Field Theme_listPopupWindowStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_listPopupWindowStyle" class="hiddenlink" target="rightframe"><strike>Theme_listPopupWindowStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_listPreferredItemHeight -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_listPreferredItemHeight" class="hiddenlink" target="rightframe"><strike>Theme_listPreferredItemHeight</strike></A>
+</nobr><br>
+<!-- Field Theme_listPreferredItemHeightLarge -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_listPreferredItemHeightLarge" class="hiddenlink" target="rightframe"><strike>Theme_listPreferredItemHeightLarge</strike></A>
+</nobr><br>
+<!-- Field Theme_listPreferredItemHeightSmall -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_listPreferredItemHeightSmall" class="hiddenlink" target="rightframe"><strike>Theme_listPreferredItemHeightSmall</strike></A>
+</nobr><br>
+<!-- Field Theme_listPreferredItemPaddingLeft -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_listPreferredItemPaddingLeft" class="hiddenlink" target="rightframe"><strike>Theme_listPreferredItemPaddingLeft</strike></A>
+</nobr><br>
+<!-- Field Theme_listPreferredItemPaddingRight -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_listPreferredItemPaddingRight" class="hiddenlink" target="rightframe"><strike>Theme_listPreferredItemPaddingRight</strike></A>
+</nobr><br>
+<!-- Field Theme_panelBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_panelBackground" class="hiddenlink" target="rightframe"><strike>Theme_panelBackground</strike></A>
+</nobr><br>
+<!-- Field Theme_panelMenuListTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_panelMenuListTheme" class="hiddenlink" target="rightframe"><strike>Theme_panelMenuListTheme</strike></A>
+</nobr><br>
+<!-- Field Theme_panelMenuListWidth -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_panelMenuListWidth" class="hiddenlink" target="rightframe"><strike>Theme_panelMenuListWidth</strike></A>
+</nobr><br>
+<!-- Field Theme_popupMenuStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_popupMenuStyle" class="hiddenlink" target="rightframe"><strike>Theme_popupMenuStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_popupWindowStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_popupWindowStyle" class="hiddenlink" target="rightframe"><strike>Theme_popupWindowStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_radioButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_radioButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_radioButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_ratingBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_ratingBarStyle" class="hiddenlink" target="rightframe"><strike>Theme_ratingBarStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_searchViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_searchViewStyle" class="hiddenlink" target="rightframe"><strike>Theme_searchViewStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_seekBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_seekBarStyle" class="hiddenlink" target="rightframe"><strike>Theme_seekBarStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_selectableItemBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_selectableItemBackground" class="hiddenlink" target="rightframe"><strike>Theme_selectableItemBackground</strike></A>
+</nobr><br>
+<!-- Field Theme_selectableItemBackgroundBorderless -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_selectableItemBackgroundBorderless" class="hiddenlink" target="rightframe"><strike>Theme_selectableItemBackgroundBorderless</strike></A>
+</nobr><br>
+<!-- Field Theme_spinnerDropDownItemStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_spinnerDropDownItemStyle" class="hiddenlink" target="rightframe"><strike>Theme_spinnerDropDownItemStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_spinnerStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_spinnerStyle" class="hiddenlink" target="rightframe"><strike>Theme_spinnerStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_switchStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_switchStyle" class="hiddenlink" target="rightframe"><strike>Theme_switchStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_textAppearanceLargePopupMenu -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_textAppearanceLargePopupMenu" class="hiddenlink" target="rightframe"><strike>Theme_textAppearanceLargePopupMenu</strike></A>
+</nobr><br>
+<!-- Field Theme_textAppearanceListItem -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_textAppearanceListItem" class="hiddenlink" target="rightframe"><strike>Theme_textAppearanceListItem</strike></A>
+</nobr><br>
+<!-- Field Theme_textAppearanceListItemSmall -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_textAppearanceListItemSmall" class="hiddenlink" target="rightframe"><strike>Theme_textAppearanceListItemSmall</strike></A>
+</nobr><br>
+<!-- Field Theme_textAppearanceSearchResultSubtitle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_textAppearanceSearchResultSubtitle" class="hiddenlink" target="rightframe"><strike>Theme_textAppearanceSearchResultSubtitle</strike></A>
+</nobr><br>
+<!-- Field Theme_textAppearanceSearchResultTitle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_textAppearanceSearchResultTitle" class="hiddenlink" target="rightframe"><strike>Theme_textAppearanceSearchResultTitle</strike></A>
+</nobr><br>
+<!-- Field Theme_textAppearanceSmallPopupMenu -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_textAppearanceSmallPopupMenu" class="hiddenlink" target="rightframe"><strike>Theme_textAppearanceSmallPopupMenu</strike></A>
+</nobr><br>
+<!-- Field Theme_textColorAlertDialogListItem -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_textColorAlertDialogListItem" class="hiddenlink" target="rightframe"><strike>Theme_textColorAlertDialogListItem</strike></A>
+</nobr><br>
+<!-- Field Theme_textColorSearchUrl -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_textColorSearchUrl" class="hiddenlink" target="rightframe"><strike>Theme_textColorSearchUrl</strike></A>
+</nobr><br>
+<!-- Field Theme_toolbarNavigationButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_toolbarNavigationButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_toolbarNavigationButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_toolbarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_toolbarStyle" class="hiddenlink" target="rightframe"><strike>Theme_toolbarStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_windowActionBar -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowActionBar" class="hiddenlink" target="rightframe"><strike>Theme_windowActionBar</strike></A>
+</nobr><br>
+<!-- Field Theme_windowActionBarOverlay -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowActionBarOverlay" class="hiddenlink" target="rightframe"><strike>Theme_windowActionBarOverlay</strike></A>
+</nobr><br>
+<!-- Field Theme_windowActionModeOverlay -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowActionModeOverlay" class="hiddenlink" target="rightframe"><strike>Theme_windowActionModeOverlay</strike></A>
+</nobr><br>
+<!-- Field Theme_windowFixedHeightMajor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowFixedHeightMajor" class="hiddenlink" target="rightframe"><strike>Theme_windowFixedHeightMajor</strike></A>
+</nobr><br>
+<!-- Field Theme_windowFixedHeightMinor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowFixedHeightMinor" class="hiddenlink" target="rightframe"><strike>Theme_windowFixedHeightMinor</strike></A>
+</nobr><br>
+<!-- Field Theme_windowFixedWidthMajor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowFixedWidthMajor" class="hiddenlink" target="rightframe"><strike>Theme_windowFixedWidthMajor</strike></A>
+</nobr><br>
+<!-- Field Theme_windowFixedWidthMinor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowFixedWidthMinor" class="hiddenlink" target="rightframe"><strike>Theme_windowFixedWidthMinor</strike></A>
+</nobr><br>
+<!-- Field Theme_windowMinWidthMajor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowMinWidthMajor" class="hiddenlink" target="rightframe"><strike>Theme_windowMinWidthMajor</strike></A>
+</nobr><br>
+<!-- Field Theme_windowMinWidthMinor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowMinWidthMinor" class="hiddenlink" target="rightframe"><strike>Theme_windowMinWidthMinor</strike></A>
+</nobr><br>
+<!-- Field Theme_windowNoTitle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowNoTitle" class="hiddenlink" target="rightframe"><strike>Theme_windowNoTitle</strike></A>
+</nobr><br>
+<!-- Method title -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.title_removed(java.lang.String)" class="hiddenlink" target="rightframe"><strike>title</strike>
+(<code>String</code>)</A></nobr><br>
+<!-- Field TOOLBAR_ACTION_BUTTON_ID -->
+<nobr><A HREF="android.support.customtabs.CustomTabsIntent.html#android.support.customtabs.CustomTabsIntent.TOOLBAR_ACTION_BUTTON_ID" class="hiddenlink" target="rightframe">TOOLBAR_ACTION_BUTTON_ID</A>
+</nobr><br>
+<!-- Class TraceCompat -->
+<i>TraceCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.os.TraceCompat.html" class="hiddenlink" target="rightframe">android.support.v4.os</A><br>
+<!-- Constructor TraceCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.os.TraceCompat.html#android.support.v4.os.TraceCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>TraceCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class TrafficStatsCompat -->
+<i>TrafficStatsCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.net.TrafficStatsCompat.html" class="hiddenlink" target="rightframe">android.support.v4.net</A><br>
+<!-- Constructor TrafficStatsCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.net.TrafficStatsCompat.html#android.support.v4.net.TrafficStatsCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>TrafficStatsCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Field UI_STYLE_DEFAULT -->
+<A NAME="U"></A>
+<br><font size="+2">U</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>UI_STYLE_DEFAULT</i><br>
+<nobr>&nbsp;in&nbsp;
+<A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_DEFAULT" class="hiddenlink" target="rightframe">android.support.v17.leanback.app.GuidedStepFragment</A>
+</nobr><br>
+<!-- Field UI_STYLE_DEFAULT -->
+<nobr>&nbsp;in&nbsp;
+<A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.UI_STYLE_DEFAULT" class="hiddenlink" target="rightframe">android.support.v17.leanback.app.GuidedStepSupportFragment</A>
+</nobr><br>
+<!-- Field UI_STYLE_REPLACE -->
+<i>UI_STYLE_REPLACE</i><br>
+<nobr>&nbsp;in&nbsp;
+<A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_REPLACE" class="hiddenlink" target="rightframe">android.support.v17.leanback.app.GuidedStepFragment</A>
+</nobr><br>
+<!-- Field UI_STYLE_REPLACE -->
+<nobr>&nbsp;in&nbsp;
+<A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.UI_STYLE_REPLACE" class="hiddenlink" target="rightframe">android.support.v17.leanback.app.GuidedStepSupportFragment</A>
+</nobr><br>
+<!-- Class VelocityTrackerCompat -->
+<A NAME="V"></A>
+<br><font size="+2">V</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>VelocityTrackerCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.view.VelocityTrackerCompat.html" class="hiddenlink" target="rightframe">android.support.v4.view</A><br>
+<!-- Constructor VelocityTrackerCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.VelocityTrackerCompat.html#android.support.v4.view.VelocityTrackerCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>VelocityTrackerCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Field view -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.view" class="hiddenlink" target="rightframe"><strike>view</strike></A>
+</nobr><br>
+<!-- Field VIEW_TYPE_DATE_PICKER -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.VIEW_TYPE_DATE_PICKER" class="hiddenlink" target="rightframe">VIEW_TYPE_DATE_PICKER</A>
+</nobr><br>
+<!-- Field VIEW_TYPE_DEFAULT -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.VIEW_TYPE_DEFAULT" class="hiddenlink" target="rightframe">VIEW_TYPE_DEFAULT</A>
+</nobr><br>
+<!-- Class ViewCompat -->
+<i>ViewCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.view.ViewCompat.html" class="hiddenlink" target="rightframe">android.support.v4.view</A><br>
+<!-- Constructor ViewCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>ViewCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class ViewConfigurationCompat -->
+<i>ViewConfigurationCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.view.ViewConfigurationCompat.html" class="hiddenlink" target="rightframe">android.support.v4.view</A><br>
+<!-- Constructor ViewConfigurationCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.ViewConfigurationCompat.html#android.support.v4.view.ViewConfigurationCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>ViewConfigurationCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class ViewGroupCompat -->
+<A HREF="android.support.v4.view.ViewGroupCompat.html" class="hiddenlink" target="rightframe">ViewGroupCompat</A><br>
+<!-- Class ViewHolderTask -->
+<A HREF="pkg_android.support.v17.leanback.widget.html#ViewHolderTask" class="hiddenlink" target="rightframe"><b><i>ViewHolderTask</i></b></A><br>
+<!-- Class ViewOffsetBehavior -->
+<A HREF="android.support.design.widget.ViewOffsetBehavior.html" class="hiddenlink" target="rightframe">ViewOffsetBehavior</A><br>
+<!-- Class ViewParentCompat -->
+<A HREF="android.support.v4.view.ViewParentCompat.html" class="hiddenlink" target="rightframe">ViewParentCompat</A><br>
+<!-- Class ViewPropertyAnimatorCompat -->
+<A HREF="android.support.v4.view.ViewPropertyAnimatorCompat.html" class="hiddenlink" target="rightframe">ViewPropertyAnimatorCompat</A><br>
+<!-- Class VisibilityAwareImageButton -->
+<A HREF="pkg_android.support.design.widget.html#VisibilityAwareImageButton" class="hiddenlink" target="rightframe"><b>VisibilityAwareImageButton</b></A><br>
+<!-- Field Widget_AppCompat_RatingBar_Indicator -->
+<A NAME="W"></A>
+<br><font size="+2">W</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#X"><font size="-2">X</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_RatingBar_Indicator" class="hiddenlink" target="rightframe">Widget_AppCompat_RatingBar_Indicator</A>
+</nobr><br>
+<!-- Field Widget_AppCompat_RatingBar_Small -->
+<nobr><A HREF="android.support.v7.appcompat.R.style.html#android.support.v7.appcompat.R.style.Widget_AppCompat_RatingBar_Small" class="hiddenlink" target="rightframe">Widget_AppCompat_RatingBar_Small</A>
+</nobr><br>
+<!-- Class WindowCompat -->
+<i>WindowCompat</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v4.view.WindowCompat.html" class="hiddenlink" target="rightframe">android.support.v4.view</A><br>
+<!-- Constructor WindowCompat -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v4.view.WindowCompat.html#android.support.v4.view.WindowCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>WindowCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Method XYZToColor -->
+<A NAME="X"></A>
+<br><font size="+2">X</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.XYZToColor_added(double, double, double)" class="hiddenlink" target="rightframe"><b>XYZToColor</b>
+(<code>double, double, double</code>)</A></nobr><br>
+<!-- Method XYZToLAB -->
+<nobr><A HREF="android.support.v4.graphics.ColorUtils.html#android.support.v4.graphics.ColorUtils.XYZToLAB_added(double, double, double, double[])" class="hiddenlink" target="rightframe"><b>XYZToLAB</b>
+(<code>double, double, double, double[]</code>)</A></nobr><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_changes.html b/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_changes.html
new file mode 100644
index 0000000..134580d
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_changes.html
@@ -0,0 +1,953 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+All Changes Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for All Differences" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="alldiffs_index_all.html" xclass="hiddenlink">All Differences</a>
+  <br>
+<A HREF="alldiffs_index_removals.html" xclass="hiddenlink">Removals</A>
+  <br>
+<A HREF="alldiffs_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<b>Changes</b>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<!-- Class AccessibilityEventCompat -->
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.view.accessibility.AccessibilityEventCompat.html" class="hiddenlink" target="rightframe">AccessibilityEventCompat</A><br>
+<!-- Class AccessibilityManagerCompat -->
+<A HREF="android.support.v4.view.accessibility.AccessibilityManagerCompat.html" class="hiddenlink" target="rightframe">AccessibilityManagerCompat</A><br>
+<!-- Class AccessibilityServiceInfoCompat -->
+<A HREF="android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat.html" class="hiddenlink" target="rightframe">AccessibilityServiceInfoCompat</A><br>
+<!-- Class ActivityInfoCompat -->
+<A HREF="android.support.v4.content.pm.ActivityInfoCompat.html" class="hiddenlink" target="rightframe">ActivityInfoCompat</A><br>
+<!-- Package android.support.customtabs -->
+<A HREF="pkg_android.support.customtabs.html" class="hiddenlink" target="rightframe">android.support.customtabs</A><br>
+<!-- Package android.support.design.widget -->
+<A HREF="pkg_android.support.design.widget.html" class="hiddenlink" target="rightframe">android.support.design.widget</A><br>
+<!-- Package android.support.percent -->
+<A HREF="pkg_android.support.percent.html" class="hiddenlink" target="rightframe">android.support.percent</A><br>
+<!-- Package android.support.v14.preference -->
+<A HREF="pkg_android.support.v14.preference.html" class="hiddenlink" target="rightframe">android.support.v14.preference</A><br>
+<!-- Package android.support.v17.leanback.app -->
+<A HREF="pkg_android.support.v17.leanback.app.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.app</A><br>
+<!-- Package android.support.v17.leanback.widget -->
+<A HREF="pkg_android.support.v17.leanback.widget.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.widget</A><br>
+<!-- Package android.support.v4.accessibilityservice -->
+<A HREF="pkg_android.support.v4.accessibilityservice.html" class="hiddenlink" target="rightframe">android.support.v4.accessibilityservice</A><br>
+<!-- Package android.support.v4.app -->
+<A HREF="pkg_android.support.v4.app.html" class="hiddenlink" target="rightframe">android.support.v4.app</A><br>
+<!-- Package android.support.v4.content -->
+<A HREF="pkg_android.support.v4.content.html" class="hiddenlink" target="rightframe">android.support.v4.content</A><br>
+<!-- Package android.support.v4.content.pm -->
+<A HREF="pkg_android.support.v4.content.pm.html" class="hiddenlink" target="rightframe">android.support.v4.content.pm</A><br>
+<!-- Package android.support.v4.content.res -->
+<A HREF="pkg_android.support.v4.content.res.html" class="hiddenlink" target="rightframe">android.support.v4.content.res</A><br>
+<!-- Package android.support.v4.database -->
+<A HREF="pkg_android.support.v4.database.html" class="hiddenlink" target="rightframe">android.support.v4.database</A><br>
+<!-- Package android.support.v4.graphics -->
+<A HREF="pkg_android.support.v4.graphics.html" class="hiddenlink" target="rightframe">android.support.v4.graphics</A><br>
+<!-- Package android.support.v4.graphics.drawable -->
+<A HREF="pkg_android.support.v4.graphics.drawable.html" class="hiddenlink" target="rightframe">android.support.v4.graphics.drawable</A><br>
+<!-- Package android.support.v4.hardware.fingerprint -->
+<A HREF="pkg_android.support.v4.hardware.fingerprint.html" class="hiddenlink" target="rightframe">android.support.v4.hardware.fingerprint</A><br>
+<!-- Package android.support.v4.media -->
+<A HREF="pkg_android.support.v4.media.html" class="hiddenlink" target="rightframe">android.support.v4.media</A><br>
+<!-- Package android.support.v4.net -->
+<A HREF="pkg_android.support.v4.net.html" class="hiddenlink" target="rightframe">android.support.v4.net</A><br>
+<!-- Package android.support.v4.os -->
+<A HREF="pkg_android.support.v4.os.html" class="hiddenlink" target="rightframe">android.support.v4.os</A><br>
+<!-- Package android.support.v4.text -->
+<A HREF="pkg_android.support.v4.text.html" class="hiddenlink" target="rightframe">android.support.v4.text</A><br>
+<!-- Package android.support.v4.view -->
+<A HREF="pkg_android.support.v4.view.html" class="hiddenlink" target="rightframe">android.support.v4.view</A><br>
+<!-- Package android.support.v4.view.accessibility -->
+<A HREF="pkg_android.support.v4.view.accessibility.html" class="hiddenlink" target="rightframe">android.support.v4.view.accessibility</A><br>
+<!-- Package android.support.v4.view.animation -->
+<A HREF="pkg_android.support.v4.view.animation.html" class="hiddenlink" target="rightframe">android.support.v4.view.animation</A><br>
+<!-- Package android.support.v4.widget -->
+<A HREF="pkg_android.support.v4.widget.html" class="hiddenlink" target="rightframe">android.support.v4.widget</A><br>
+<!-- Package android.support.v7.app -->
+<A HREF="pkg_android.support.v7.app.html" class="hiddenlink" target="rightframe">android.support.v7.app</A><br>
+<!-- Package android.support.v7.appcompat -->
+<A HREF="pkg_android.support.v7.appcompat.html" class="hiddenlink" target="rightframe">android.support.v7.appcompat</A><br>
+<!-- Package android.support.v7.graphics -->
+<A HREF="pkg_android.support.v7.graphics.html" class="hiddenlink" target="rightframe">android.support.v7.graphics</A><br>
+<!-- Package android.support.v7.media -->
+<A HREF="pkg_android.support.v7.media.html" class="hiddenlink" target="rightframe">android.support.v7.media</A><br>
+<!-- Package android.support.v7.preference -->
+<A HREF="pkg_android.support.v7.preference.html" class="hiddenlink" target="rightframe">android.support.v7.preference</A><br>
+<!-- Package android.support.v7.recyclerview -->
+<A HREF="pkg_android.support.v7.recyclerview.html" class="hiddenlink" target="rightframe">android.support.v7.recyclerview</A><br>
+<!-- Package android.support.v7.widget -->
+<A HREF="pkg_android.support.v7.widget.html" class="hiddenlink" target="rightframe">android.support.v7.widget</A><br>
+<!-- Package android.support.v7.widget.helper -->
+<A HREF="pkg_android.support.v7.widget.helper.html" class="hiddenlink" target="rightframe">android.support.v7.widget.helper</A><br>
+<!-- Class AppBarLayout.ScrollingViewBehavior -->
+<A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html" class="hiddenlink" target="rightframe">AppBarLayout.ScrollingViewBehavior</A><br>
+<!-- Class AppCompatDelegate -->
+<A HREF="android.support.v7.app.AppCompatDelegate.html" class="hiddenlink" target="rightframe">AppCompatDelegate</A><br>
+<!-- Class AppOpsManagerCompat -->
+<A HREF="android.support.v4.app.AppOpsManagerCompat.html" class="hiddenlink" target="rightframe">AppOpsManagerCompat</A><br>
+<!-- Class AsyncTaskCompat -->
+<A HREF="android.support.v4.os.AsyncTaskCompat.html" class="hiddenlink" target="rightframe">AsyncTaskCompat</A><br>
+<!-- Class BaseRowFragment -->
+<A NAME="B"></A>
+<br><font size="+2">B</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v17.leanback.app.BaseRowFragment.html" class="hiddenlink" target="rightframe">BaseRowFragment</A><br>
+<!-- Class BaseRowSupportFragment -->
+<A HREF="android.support.v17.leanback.app.BaseRowSupportFragment.html" class="hiddenlink" target="rightframe">BaseRowSupportFragment</A><br>
+<!-- Class BitmapCompat -->
+<A HREF="android.support.v4.graphics.BitmapCompat.html" class="hiddenlink" target="rightframe">BitmapCompat</A><br>
+<!-- Class BrowseFragment -->
+<A HREF="android.support.v17.leanback.app.BrowseFragment.html" class="hiddenlink" target="rightframe">BrowseFragment</A><br>
+<!-- Class BrowseSupportFragment -->
+<A HREF="android.support.v17.leanback.app.BrowseSupportFragment.html" class="hiddenlink" target="rightframe">BrowseSupportFragment</A><br>
+<!-- Class BundleCompat -->
+<A HREF="android.support.v4.app.BundleCompat.html" class="hiddenlink" target="rightframe">BundleCompat</A><br>
+<!-- Method checked -->
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.checked_changed(boolean)" class="hiddenlink" target="rightframe">checked
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method checkSetId -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.checkSetId_changed(int)" class="hiddenlink" target="rightframe">checkSetId
+(<code>int</code>)</A></nobr><br>
+<!-- Class CollapsingToolbarLayout -->
+<A HREF="android.support.design.widget.CollapsingToolbarLayout.html" class="hiddenlink" target="rightframe">CollapsingToolbarLayout</A><br>
+<!-- Class ColorUtils -->
+<A HREF="android.support.v4.graphics.ColorUtils.html" class="hiddenlink" target="rightframe">ColorUtils</A><br>
+<!-- Class ConnectivityManagerCompat -->
+<A HREF="android.support.v4.net.ConnectivityManagerCompat.html" class="hiddenlink" target="rightframe">ConnectivityManagerCompat</A><br>
+<!-- Class ContentResolverCompat -->
+<A HREF="android.support.v4.content.ContentResolverCompat.html" class="hiddenlink" target="rightframe">ContentResolverCompat</A><br>
+<!-- Class ContextCompat -->
+<A HREF="android.support.v4.content.ContextCompat.html" class="hiddenlink" target="rightframe">ContextCompat</A><br>
+<!-- Class CoordinatorLayout.Behavior -->
+<A HREF="android.support.design.widget.CoordinatorLayout.Behavior.html" class="hiddenlink" target="rightframe">CoordinatorLayout.Behavior</A><br>
+<!-- Class CustomTabsIntent -->
+<A HREF="android.support.customtabs.CustomTabsIntent.html" class="hiddenlink" target="rightframe">CustomTabsIntent</A><br>
+<!-- Class CustomTabsIntent.Builder -->
+<A HREF="android.support.customtabs.CustomTabsIntent.Builder.html" class="hiddenlink" target="rightframe">CustomTabsIntent.Builder</A><br>
+<!-- Class CustomTabsSession -->
+<A HREF="android.support.customtabs.CustomTabsSession.html" class="hiddenlink" target="rightframe">CustomTabsSession</A><br>
+<!-- Class DatabaseUtilsCompat -->
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.database.DatabaseUtilsCompat.html" class="hiddenlink" target="rightframe">DatabaseUtilsCompat</A><br>
+<!-- Class DetailsFragment -->
+<A HREF="android.support.v17.leanback.app.DetailsFragment.html" class="hiddenlink" target="rightframe">DetailsFragment</A><br>
+<!-- Class DetailsOverviewLogoPresenter -->
+<A HREF="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.html" class="hiddenlink" target="rightframe">DetailsOverviewLogoPresenter</A><br>
+<!-- Class DetailsOverviewLogoPresenter.ViewHolder -->
+<A HREF="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.html" class="hiddenlink" target="rightframe">DetailsOverviewLogoPresenter.ViewHolder</A><br>
+<!-- Class DetailsSupportFragment -->
+<A HREF="android.support.v17.leanback.app.DetailsSupportFragment.html" class="hiddenlink" target="rightframe">DetailsSupportFragment</A><br>
+<!-- Class DrawableCompat -->
+<A HREF="android.support.v4.graphics.drawable.DrawableCompat.html" class="hiddenlink" target="rightframe">DrawableCompat</A><br>
+<!-- Class DrawerLayout -->
+<A HREF="android.support.v4.widget.DrawerLayout.html" class="hiddenlink" target="rightframe">DrawerLayout</A><br>
+<!-- Class EdgeEffectCompat -->
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.widget.EdgeEffectCompat.html" class="hiddenlink" target="rightframe">EdgeEffectCompat</A><br>
+<!-- Method editable -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.editable_changed(boolean)" class="hiddenlink" target="rightframe">editable
+(<code>boolean</code>)</A></nobr><br>
+<!-- Method enabled -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.enabled_changed(boolean)" class="hiddenlink" target="rightframe">enabled
+(<code>boolean</code>)</A></nobr><br>
+<!-- Class EnvironmentCompat -->
+<A HREF="android.support.v4.os.EnvironmentCompat.html" class="hiddenlink" target="rightframe">EnvironmentCompat</A><br>
+<!-- Class FingerprintManagerCompat -->
+<A NAME="F"></A>
+<br><font size="+2">F</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.hardware.fingerprint.FingerprintManagerCompat.html" class="hiddenlink" target="rightframe">FingerprintManagerCompat</A><br>
+<!-- Class FloatingActionButton -->
+<A HREF="android.support.design.widget.FloatingActionButton.html" class="hiddenlink" target="rightframe">FloatingActionButton</A><br>
+<!-- Class Fragment -->
+<A HREF="android.support.v4.app.Fragment.html" class="hiddenlink" target="rightframe">Fragment</A><br>
+<!-- Class FragmentActivity -->
+<A HREF="android.support.v4.app.FragmentActivity.html" class="hiddenlink" target="rightframe">FragmentActivity</A><br>
+<!-- Class FragmentHostCallback -->
+<A HREF="android.support.v4.app.FragmentHostCallback.html" class="hiddenlink" target="rightframe">FragmentHostCallback</A><br>
+<!-- Class GestureDetectorCompat -->
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.view.GestureDetectorCompat.html" class="hiddenlink" target="rightframe">GestureDetectorCompat</A><br>
+<!-- Method getCodeCacheDir -->
+<nobr><A HREF="android.support.v4.content.ContextCompat.html#android.support.v4.content.ContextCompat.getCodeCacheDir_changed(android.content.Context)" class="hiddenlink" target="rightframe">getCodeCacheDir
+(<code>Context</code>)</A></nobr><br>
+<!-- Method getColor -->
+<nobr><A HREF="android.support.v4.content.res.ResourcesCompat.html#android.support.v4.content.res.ResourcesCompat.getColor_changed(android.content.res.Resources, int, android.content.res.Resources.Theme)" class="hiddenlink" target="rightframe">getColor
+(<code>Resources, int, Theme</code>)</A></nobr><br>
+<!-- Method getColorStateList -->
+<nobr><A HREF="android.support.v4.content.res.ResourcesCompat.html#android.support.v4.content.res.ResourcesCompat.getColorStateList_changed(android.content.res.Resources, int, android.content.res.Resources.Theme)" class="hiddenlink" target="rightframe">getColorStateList
+(<code>Resources, int, Theme</code>)</A></nobr><br>
+<!-- Method getOverlayTop -->
+<nobr><A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html#android.support.design.widget.AppBarLayout.ScrollingViewBehavior.getOverlayTop_changed()" class="hiddenlink" target="rightframe">getOverlayTop
+()</A></nobr><br>
+<!-- Method getScrimColor -->
+<nobr><A HREF="android.support.design.widget.CoordinatorLayout.Behavior.html#android.support.design.widget.CoordinatorLayout.Behavior.getScrimColor_changed(android.support.design.widget.CoordinatorLayout, V)" class="hiddenlink" target="rightframe">getScrimColor
+(<code>CoordinatorLayout, V</code>)</A></nobr><br>
+<!-- Method getScrimOpacity -->
+<nobr><A HREF="android.support.design.widget.CoordinatorLayout.Behavior.html#android.support.design.widget.CoordinatorLayout.Behavior.getScrimOpacity_changed(android.support.design.widget.CoordinatorLayout, V)" class="hiddenlink" target="rightframe">getScrimOpacity
+(<code>CoordinatorLayout, V</code>)</A></nobr><br>
+<!-- Class GravityCompat -->
+<A HREF="android.support.v4.view.GravityCompat.html" class="hiddenlink" target="rightframe">GravityCompat</A><br>
+<!-- Class GuidanceStylist -->
+<A HREF="android.support.v17.leanback.widget.GuidanceStylist.html" class="hiddenlink" target="rightframe">GuidanceStylist</A><br>
+<!-- Class GuidedAction -->
+<A HREF="android.support.v17.leanback.widget.GuidedAction.html" class="hiddenlink" target="rightframe">GuidedAction</A><br>
+<!-- Class GuidedAction.Builder -->
+<i>GuidedAction.Builder</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.widget</A><br>
+<!-- Constructor GuidedAction.Builder -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.ctor_changed()" class="hiddenlink" target="rightframe">GuidedAction.Builder
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class GuidedActionsStylist -->
+<A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html" class="hiddenlink" target="rightframe">GuidedActionsStylist</A><br>
+<!-- Class GuidedActionsStylist.ViewHolder -->
+<A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html" class="hiddenlink" target="rightframe">GuidedActionsStylist.ViewHolder</A><br>
+<!-- Class GuidedStepFragment -->
+<A HREF="android.support.v17.leanback.app.GuidedStepFragment.html" class="hiddenlink" target="rightframe">GuidedStepFragment</A><br>
+<!-- Class GuidedStepSupportFragment -->
+<A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html" class="hiddenlink" target="rightframe">GuidedStepSupportFragment</A><br>
+<!-- Method hasNext -->
+<A NAME="H"></A>
+<br><font size="+2">H</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.hasNext_changed(boolean)" class="hiddenlink" target="rightframe">hasNext
+(<code>boolean</code>)</A></nobr><br>
+<!-- Class HeaderScrollingViewBehavior -->
+<A HREF="android.support.design.widget.HeaderScrollingViewBehavior.html" class="hiddenlink" target="rightframe">HeaderScrollingViewBehavior</A><br>
+<!-- Class HeadersFragment.OnHeaderClickedListener -->
+<A HREF="android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener.html" class="hiddenlink" target="rightframe"><i>HeadersFragment.OnHeaderClickedListener</i></A><br>
+<!-- Class HeadersFragment.OnHeaderViewSelectedListener -->
+<A HREF="android.support.v17.leanback.app.HeadersFragment.OnHeaderViewSelectedListener.html" class="hiddenlink" target="rightframe"><i>HeadersFragment.OnHeaderViewSelectedListener</i></A><br>
+<!-- Class HeadersSupportFragment.OnHeaderClickedListener -->
+<A HREF="android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener.html" class="hiddenlink" target="rightframe"><i>HeadersSupportFragment.OnHeaderClickedListener</i></A><br>
+<!-- Class HeadersSupportFragment.OnHeaderViewSelectedListener -->
+<A HREF="android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderViewSelectedListener.html" class="hiddenlink" target="rightframe"><i>HeadersSupportFragment.OnHeaderViewSelectedListener</i></A><br>
+<!-- Method iconResourceId -->
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.iconResourceId_changed(int, android.content.Context)" class="hiddenlink" target="rightframe">iconResourceId
+(<code>int, Context</code>)</A></nobr><br>
+<!-- Class ICUCompat -->
+<A HREF="android.support.v4.text.ICUCompat.html" class="hiddenlink" target="rightframe">ICUCompat</A><br>
+<!-- Method id -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.id_changed(long)" class="hiddenlink" target="rightframe">id
+(<code>long</code>)</A></nobr><br>
+<!-- Class ImageCardView -->
+<i>ImageCardView</i><br>
+&nbsp;&nbsp;<A HREF="android.support.v17.leanback.widget.ImageCardView.html" class="hiddenlink" target="rightframe">android.support.v17.leanback.widget</A><br>
+<!-- Constructor ImageCardView -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.widget.ImageCardView.html#android.support.v17.leanback.widget.ImageCardView.ctor_changed(android.content.Context, int)" class="hiddenlink" target="rightframe">ImageCardView
+(<code>Context, int</code>)</A></nobr>&nbsp;constructor<br>
+<!-- Method infoOnly -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.infoOnly_changed(boolean)" class="hiddenlink" target="rightframe">infoOnly
+(<code>boolean</code>)</A></nobr><br>
+<!-- Class InputDeviceCompat -->
+<A HREF="android.support.v4.view.InputDeviceCompat.html" class="hiddenlink" target="rightframe">InputDeviceCompat</A><br>
+<!-- Method intent -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.intent_changed(android.content.Intent)" class="hiddenlink" target="rightframe">intent
+(<code>Intent</code>)</A></nobr><br>
+<!-- Class IntentCompat -->
+<A HREF="android.support.v4.content.IntentCompat.html" class="hiddenlink" target="rightframe">IntentCompat</A><br>
+<!-- Class ItemTouchHelper.Callback -->
+<A HREF="android.support.v7.widget.helper.ItemTouchHelper.Callback.html" class="hiddenlink" target="rightframe">ItemTouchHelper.Callback</A><br>
+<!-- Class KeyEventCompat -->
+<A NAME="K"></A>
+<br><font size="+2">K</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.view.KeyEventCompat.html" class="hiddenlink" target="rightframe">KeyEventCompat</A><br>
+<!-- Class LayoutInflaterCompat -->
+<A NAME="L"></A>
+<br><font size="+2">L</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.view.LayoutInflaterCompat.html" class="hiddenlink" target="rightframe">LayoutInflaterCompat</A><br>
+<!-- Class ListPopupWindowCompat -->
+<A HREF="android.support.v4.widget.ListPopupWindowCompat.html" class="hiddenlink" target="rightframe">ListPopupWindowCompat</A><br>
+<!-- Class ListRowPresenter.ViewHolder -->
+<A HREF="android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.html" class="hiddenlink" target="rightframe">ListRowPresenter.ViewHolder</A><br>
+<!-- Class LocalBroadcastManager -->
+<A HREF="android.support.v4.content.LocalBroadcastManager.html" class="hiddenlink" target="rightframe">LocalBroadcastManager</A><br>
+<!-- Class MarginLayoutParamsCompat -->
+<A NAME="M"></A>
+<br><font size="+2">M</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.view.MarginLayoutParamsCompat.html" class="hiddenlink" target="rightframe">MarginLayoutParamsCompat</A><br>
+<!-- Class MediaRouteDescriptor -->
+<A HREF="android.support.v7.media.MediaRouteDescriptor.html" class="hiddenlink" target="rightframe">MediaRouteDescriptor</A><br>
+<!-- Class MediaRouteDescriptor.Builder -->
+<A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html" class="hiddenlink" target="rightframe">MediaRouteDescriptor.Builder</A><br>
+<!-- Class MediaRouter.Callback -->
+<A HREF="android.support.v7.media.MediaRouter.Callback.html" class="hiddenlink" target="rightframe">MediaRouter.Callback</A><br>
+<!-- Class MenuCompat -->
+<A HREF="android.support.v4.view.MenuCompat.html" class="hiddenlink" target="rightframe">MenuCompat</A><br>
+<!-- Class MenuItemCompat -->
+<A HREF="android.support.v4.view.MenuItemCompat.html" class="hiddenlink" target="rightframe">MenuItemCompat</A><br>
+<!-- Class MotionEventCompat -->
+<A HREF="android.support.v4.view.MotionEventCompat.html" class="hiddenlink" target="rightframe">MotionEventCompat</A><br>
+<!-- Method multilineDescription -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.multilineDescription_changed(boolean)" class="hiddenlink" target="rightframe">multilineDescription
+(<code>boolean</code>)</A></nobr><br>
+<!-- Class NavUtils -->
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.app.NavUtils.html" class="hiddenlink" target="rightframe">NavUtils</A><br>
+<!-- Class NotificationManagerCompat -->
+<A HREF="android.support.v4.app.NotificationManagerCompat.html" class="hiddenlink" target="rightframe">NotificationManagerCompat</A><br>
+<!-- Method onHeaderClicked -->
+<A NAME="O"></A>
+<br><font size="+2">O</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>onHeaderClicked</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener.html#android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener.onHeaderClicked_changed(android.support.v17.leanback.widget.RowHeaderPresenter.ViewHolder, android.support.v17.leanback.widget.Row)" class="hiddenlink" target="rightframe">type&nbsp;
+(<code>ViewHolder, Row</code>)&nbsp;in&nbsp;android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener
+</A></nobr><br>
+<!-- Method onHeaderClicked -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener.html#android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener.onHeaderClicked_changed(android.support.v17.leanback.widget.RowHeaderPresenter.ViewHolder, android.support.v17.leanback.widget.Row)" class="hiddenlink" target="rightframe">type&nbsp;
+(<code>ViewHolder, Row</code>)&nbsp;in&nbsp;android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener
+</A></nobr><br>
+<!-- Class OrientationHelper -->
+<A HREF="android.support.v7.widget.OrientationHelper.html" class="hiddenlink" target="rightframe">OrientationHelper</A><br>
+<!-- Class Palette -->
+<A NAME="P"></A>
+<br><font size="+2">P</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v7.graphics.Palette.html" class="hiddenlink" target="rightframe">Palette</A><br>
+<!-- Class Palette.Builder -->
+<A HREF="android.support.v7.graphics.Palette.Builder.html" class="hiddenlink" target="rightframe">Palette.Builder</A><br>
+<!-- Class ParallelExecutorCompat -->
+<A HREF="android.support.v4.content.ParallelExecutorCompat.html" class="hiddenlink" target="rightframe">ParallelExecutorCompat</A><br>
+<!-- Class ParcelableCompat -->
+<A HREF="android.support.v4.os.ParcelableCompat.html" class="hiddenlink" target="rightframe">ParcelableCompat</A><br>
+<!-- Class PathInterpolatorCompat -->
+<A HREF="android.support.v4.view.animation.PathInterpolatorCompat.html" class="hiddenlink" target="rightframe">PathInterpolatorCompat</A><br>
+<!-- Class PercentLayoutHelper.PercentLayoutInfo -->
+<A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html" class="hiddenlink" target="rightframe">PercentLayoutHelper.PercentLayoutInfo</A><br>
+<!-- Class PopupMenuCompat -->
+<A HREF="android.support.v4.widget.PopupMenuCompat.html" class="hiddenlink" target="rightframe">PopupMenuCompat</A><br>
+<!-- Class PopupWindowCompat -->
+<A HREF="android.support.v4.widget.PopupWindowCompat.html" class="hiddenlink" target="rightframe">PopupWindowCompat</A><br>
+<!-- Class PreferenceFragment -->
+<A HREF="android.support.v14.preference.PreferenceFragment.html" class="hiddenlink" target="rightframe">PreferenceFragment</A><br>
+<!-- Class PreferenceFragmentCompat -->
+<A HREF="android.support.v7.preference.PreferenceFragmentCompat.html" class="hiddenlink" target="rightframe">PreferenceFragmentCompat</A><br>
+<!-- Class PreferenceScreen -->
+<A HREF="android.support.v7.preference.PreferenceScreen.html" class="hiddenlink" target="rightframe">PreferenceScreen</A><br>
+<!-- Class PreferenceViewHolder -->
+<A HREF="android.support.v7.preference.PreferenceViewHolder.html" class="hiddenlink" target="rightframe">PreferenceViewHolder</A><br>
+<!-- Class R.attr -->
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v7.appcompat.R.attr.html" class="hiddenlink" target="rightframe">R.attr</A><br>
+<!-- Class R.dimen -->
+<A HREF="android.support.v7.recyclerview.R.dimen.html" class="hiddenlink" target="rightframe">R.dimen</A><br>
+<!-- Class R.drawable -->
+<A HREF="android.support.v7.appcompat.R.drawable.html" class="hiddenlink" target="rightframe">R.drawable</A><br>
+<!-- Class R.style -->
+<A HREF="android.support.v7.appcompat.R.style.html" class="hiddenlink" target="rightframe">R.style</A><br>
+<!-- Class R.styleable -->
+<A HREF="android.support.v7.appcompat.R.styleable.html" class="hiddenlink" target="rightframe">R.styleable</A><br>
+<!-- Class RecyclerView -->
+<A HREF="android.support.v7.widget.RecyclerView.html" class="hiddenlink" target="rightframe">RecyclerView</A><br>
+<!-- Class RecyclerView.ItemAnimator -->
+<A HREF="android.support.v7.widget.RecyclerView.ItemAnimator.html" class="hiddenlink" target="rightframe">RecyclerView.ItemAnimator</A><br>
+<!-- Class RecyclerView.LayoutManager -->
+<A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html" class="hiddenlink" target="rightframe">RecyclerView.LayoutManager</A><br>
+<!-- Class RecyclerView.State -->
+<A HREF="android.support.v7.widget.RecyclerView.State.html" class="hiddenlink" target="rightframe">RecyclerView.State</A><br>
+<!-- Class RemoteInput -->
+<A HREF="android.support.v4.app.RemoteInput.html" class="hiddenlink" target="rightframe">RemoteInput</A><br>
+<!-- Method resizeBitmapSize -->
+<nobr><A HREF="android.support.v7.graphics.Palette.Builder.html#android.support.v7.graphics.Palette.Builder.resizeBitmapSize_changed(int)" class="hiddenlink" target="rightframe">resizeBitmapSize
+(<code>int</code>)</A></nobr><br>
+<!-- Class ResourcesCompat -->
+<A HREF="android.support.v4.content.res.ResourcesCompat.html" class="hiddenlink" target="rightframe">ResourcesCompat</A><br>
+<!-- Class RoundedBitmapDrawableFactory -->
+<A HREF="android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory.html" class="hiddenlink" target="rightframe">RoundedBitmapDrawableFactory</A><br>
+<!-- Class RowsFragment -->
+<A HREF="android.support.v17.leanback.app.RowsFragment.html" class="hiddenlink" target="rightframe">RowsFragment</A><br>
+<!-- Class RowsSupportFragment -->
+<A HREF="android.support.v17.leanback.app.RowsSupportFragment.html" class="hiddenlink" target="rightframe">RowsSupportFragment</A><br>
+<!-- Class ScaleGestureDetectorCompat -->
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.view.ScaleGestureDetectorCompat.html" class="hiddenlink" target="rightframe">ScaleGestureDetectorCompat</A><br>
+<!-- Class ScrollerCompat -->
+<A HREF="android.support.v4.widget.ScrollerCompat.html" class="hiddenlink" target="rightframe">ScrollerCompat</A><br>
+<!-- Class SearchViewCompat -->
+<A HREF="android.support.v4.widget.SearchViewCompat.html" class="hiddenlink" target="rightframe">SearchViewCompat</A><br>
+<!-- Class ServiceCompat -->
+<A HREF="android.support.v4.app.ServiceCompat.html" class="hiddenlink" target="rightframe">ServiceCompat</A><br>
+<!-- Method setDrawerListener -->
+<nobr><A HREF="android.support.v4.widget.DrawerLayout.html#android.support.v4.widget.DrawerLayout.setDrawerListener_changed(android.support.v4.widget.DrawerLayout.DrawerListener)" class="hiddenlink" target="rightframe">setDrawerListener
+(<code>DrawerListener</code>)</A></nobr><br>
+<!-- Method setOverlayTop -->
+<nobr><A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html#android.support.design.widget.AppBarLayout.ScrollingViewBehavior.setOverlayTop_changed(int)" class="hiddenlink" target="rightframe">setOverlayTop
+(<code>int</code>)</A></nobr><br>
+<!-- Method setTabsFromPagerAdapter -->
+<nobr><A HREF="android.support.design.widget.TabLayout.html#android.support.design.widget.TabLayout.setTabsFromPagerAdapter_changed(android.support.v4.view.PagerAdapter)" class="hiddenlink" target="rightframe">setTabsFromPagerAdapter
+(<code>PagerAdapter</code>)</A></nobr><br>
+<!-- Class ShareCompat -->
+<A HREF="android.support.v4.app.ShareCompat.html" class="hiddenlink" target="rightframe">ShareCompat</A><br>
+<!-- Class SharedPreferencesCompat -->
+<A HREF="android.support.v4.content.SharedPreferencesCompat.html" class="hiddenlink" target="rightframe">SharedPreferencesCompat</A><br>
+<!-- Class SharedPreferencesCompat.EditorCompat -->
+<A HREF="android.support.v4.content.SharedPreferencesCompat.EditorCompat.html" class="hiddenlink" target="rightframe">SharedPreferencesCompat.EditorCompat</A><br>
+<!-- Class TabLayout -->
+<A NAME="T"></A>
+<br><font size="+2">T</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.design.widget.TabLayout.html" class="hiddenlink" target="rightframe">TabLayout</A><br>
+<!-- Class TaskStackBuilder -->
+<A HREF="android.support.v4.app.TaskStackBuilder.html" class="hiddenlink" target="rightframe">TaskStackBuilder</A><br>
+<!-- Class TextDirectionHeuristicsCompat -->
+<A HREF="android.support.v4.text.TextDirectionHeuristicsCompat.html" class="hiddenlink" target="rightframe">TextDirectionHeuristicsCompat</A><br>
+<!-- Class TextInputLayout -->
+<A HREF="android.support.design.widget.TextInputLayout.html" class="hiddenlink" target="rightframe">TextInputLayout</A><br>
+<!-- Class TextUtilsCompat -->
+<A HREF="android.support.v4.text.TextUtilsCompat.html" class="hiddenlink" target="rightframe">TextUtilsCompat</A><br>
+<!-- Class TextViewCompat -->
+<A HREF="android.support.v4.widget.TextViewCompat.html" class="hiddenlink" target="rightframe">TextViewCompat</A><br>
+<!-- Class TraceCompat -->
+<A HREF="android.support.v4.os.TraceCompat.html" class="hiddenlink" target="rightframe">TraceCompat</A><br>
+<!-- Class TrafficStatsCompat -->
+<A HREF="android.support.v4.net.TrafficStatsCompat.html" class="hiddenlink" target="rightframe">TrafficStatsCompat</A><br>
+<!-- Field UI_STYLE_DEFAULT -->
+<A NAME="U"></A>
+<br><font size="+2">U</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<i>UI_STYLE_DEFAULT</i><br>
+<nobr>&nbsp;in&nbsp;
+<A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_DEFAULT" class="hiddenlink" target="rightframe">android.support.v17.leanback.app.GuidedStepFragment</A>
+</nobr><br>
+<!-- Field UI_STYLE_DEFAULT -->
+<nobr>&nbsp;in&nbsp;
+<A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.UI_STYLE_DEFAULT" class="hiddenlink" target="rightframe">android.support.v17.leanback.app.GuidedStepSupportFragment</A>
+</nobr><br>
+<!-- Class VelocityTrackerCompat -->
+<A NAME="V"></A>
+<br><font size="+2">V</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.view.VelocityTrackerCompat.html" class="hiddenlink" target="rightframe">VelocityTrackerCompat</A><br>
+<!-- Class ViewCompat -->
+<A HREF="android.support.v4.view.ViewCompat.html" class="hiddenlink" target="rightframe">ViewCompat</A><br>
+<!-- Class ViewConfigurationCompat -->
+<A HREF="android.support.v4.view.ViewConfigurationCompat.html" class="hiddenlink" target="rightframe">ViewConfigurationCompat</A><br>
+<!-- Class ViewGroupCompat -->
+<A HREF="android.support.v4.view.ViewGroupCompat.html" class="hiddenlink" target="rightframe">ViewGroupCompat</A><br>
+<!-- Class ViewOffsetBehavior -->
+<A HREF="android.support.design.widget.ViewOffsetBehavior.html" class="hiddenlink" target="rightframe">ViewOffsetBehavior</A><br>
+<!-- Class ViewParentCompat -->
+<A HREF="android.support.v4.view.ViewParentCompat.html" class="hiddenlink" target="rightframe">ViewParentCompat</A><br>
+<!-- Class ViewPropertyAnimatorCompat -->
+<A HREF="android.support.v4.view.ViewPropertyAnimatorCompat.html" class="hiddenlink" target="rightframe">ViewPropertyAnimatorCompat</A><br>
+<!-- Class WindowCompat -->
+<A NAME="W"></A>
+<br><font size="+2">W</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#H"><font size="-2">H</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#U"><font size="-2">U</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="android.support.v4.view.WindowCompat.html" class="hiddenlink" target="rightframe">WindowCompat</A><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_removals.html b/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_removals.html
new file mode 100644
index 0000000..a60b244
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/alldiffs_index_removals.html
@@ -0,0 +1,970 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+All Removals Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for All Differences" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="alldiffs_index_all.html" xclass="hiddenlink">All Differences</a>
+  <br>
+<b>Removals</b>
+  <br>
+<A HREF="alldiffs_index_additions.html"xclass="hiddenlink">Additions</A>
+  <br>
+<A HREF="alldiffs_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<!-- Field abc_btn_check_to_on_mtrl_000 -->
+<A NAME="A"></A>
+<br><font size="+2">A</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_check_to_on_mtrl_000" class="hiddenlink" target="rightframe"><strike>abc_btn_check_to_on_mtrl_000</strike></A>
+</nobr><br>
+<!-- Field abc_btn_check_to_on_mtrl_015 -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_check_to_on_mtrl_015" class="hiddenlink" target="rightframe"><strike>abc_btn_check_to_on_mtrl_015</strike></A>
+</nobr><br>
+<!-- Field abc_btn_radio_to_on_mtrl_000 -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_radio_to_on_mtrl_000" class="hiddenlink" target="rightframe"><strike>abc_btn_radio_to_on_mtrl_000</strike></A>
+</nobr><br>
+<!-- Field abc_btn_radio_to_on_mtrl_015 -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_btn_radio_to_on_mtrl_015" class="hiddenlink" target="rightframe"><strike>abc_btn_radio_to_on_mtrl_015</strike></A>
+</nobr><br>
+<!-- Field abc_ic_ab_back_mtrl_am_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_ab_back_mtrl_am_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_ab_back_mtrl_am_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_clear_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_clear_mtrl_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_clear_mtrl_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_go_search_api_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_go_search_api_mtrl_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_go_search_api_mtrl_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_menu_copy_mtrl_am_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_copy_mtrl_am_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_menu_copy_mtrl_am_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_menu_cut_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_cut_mtrl_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_menu_cut_mtrl_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_menu_moreoverflow_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_moreoverflow_mtrl_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_menu_moreoverflow_mtrl_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_menu_paste_mtrl_am_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_paste_mtrl_am_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_menu_paste_mtrl_am_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_menu_selectall_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_selectall_mtrl_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_menu_selectall_mtrl_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_menu_share_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_menu_share_mtrl_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_menu_share_mtrl_alpha</strike></A>
+</nobr><br>
+<!-- Field abc_ic_voice_search_api_mtrl_alpha -->
+<nobr><A HREF="android.support.v7.appcompat.R.drawable.html#android.support.v7.appcompat.R.drawable.abc_ic_voice_search_api_mtrl_alpha" class="hiddenlink" target="rightframe"><strike>abc_ic_voice_search_api_mtrl_alpha</strike></A>
+</nobr><br>
+<!-- Constructor AccessibilityManagerCompat -->
+<nobr><A HREF="android.support.v4.view.accessibility.AccessibilityManagerCompat.html#android.support.v4.view.accessibility.AccessibilityManagerCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>AccessibilityManagerCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Method addGroupMemberId -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.addGroupMemberId_removed(java.lang.String)" class="hiddenlink" target="rightframe"><strike>addGroupMemberId</strike>
+(<code>String</code>)</A></nobr><br>
+<!-- Method addGroupMemberIds -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.Builder.html#android.support.v7.media.MediaRouteDescriptor.Builder.addGroupMemberIds_removed(java.util.Collection<java.lang.String>)" class="hiddenlink" target="rightframe"><strike>addGroupMemberIds</strike>
+(<code>Collection&lt;String&gt;</code>)</A></nobr><br>
+<!-- Constructor AppOpsManagerCompat -->
+<nobr><A HREF="android.support.v4.app.AppOpsManagerCompat.html#android.support.v4.app.AppOpsManagerCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>AppOpsManagerCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor AsyncTaskCompat -->
+<nobr><A HREF="android.support.v4.os.AsyncTaskCompat.html#android.support.v4.os.AsyncTaskCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>AsyncTaskCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor BitmapCompat -->
+<A NAME="B"></A>
+<br><font size="+2">B</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.graphics.BitmapCompat.html#android.support.v4.graphics.BitmapCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>BitmapCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor BundleCompat -->
+<nobr><A HREF="android.support.v4.app.BundleCompat.html#android.support.v4.app.BundleCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>BundleCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor ConnectivityManagerCompat -->
+<A NAME="C"></A>
+<br><font size="+2">C</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.net.ConnectivityManagerCompat.html#android.support.v4.net.ConnectivityManagerCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>ConnectivityManagerCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Method description -->
+<A NAME="D"></A>
+<br><font size="+2">D</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.description_removed(java.lang.String)" class="hiddenlink" target="rightframe"><strike>description</strike>
+(<code>String</code>)</A></nobr><br>
+<!-- Constructor DrawableCompat -->
+<nobr><A HREF="android.support.v4.graphics.drawable.DrawableCompat.html#android.support.v4.graphics.drawable.DrawableCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>DrawableCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Method editTitle -->
+<A NAME="E"></A>
+<br><font size="+2">E</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.editTitle_removed(java.lang.String)" class="hiddenlink" target="rightframe"><strike>editTitle</strike>
+(<code>String</code>)</A></nobr><br>
+<!-- Constructor EnvironmentCompat -->
+<nobr><A HREF="android.support.v4.os.EnvironmentCompat.html#android.support.v4.os.EnvironmentCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>EnvironmentCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Method fillMarginLayoutParams -->
+<A NAME="F"></A>
+<br><font size="+2">F</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html#android.support.percent.PercentLayoutHelper.PercentLayoutInfo.fillMarginLayoutParams_removed(android.view.ViewGroup.MarginLayoutParams, int, int)" class="hiddenlink" target="rightframe"><strike>fillMarginLayoutParams</strike>
+(<code>MarginLayoutParams, int, int</code>)</A></nobr><br>
+<!-- Method getChildMeasureSpec -->
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v7.widget.RecyclerView.LayoutManager.html#android.support.v7.widget.RecyclerView.LayoutManager.getChildMeasureSpec_removed(int, int, int, boolean)" class="hiddenlink" target="rightframe"><strike>getChildMeasureSpec</strike>
+(<code>int, int, int, boolean</code>)</A></nobr><br>
+<!-- Method getContainerIdForBackground -->
+<i>getContainerIdForBackground</i><br>
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.getContainerIdForBackground_removed()" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+()</strike>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepFragment
+</A></nobr><br>
+<!-- Method getContainerIdForBackground -->
+&nbsp;&nbsp;<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.getContainerIdForBackground_removed()" class="hiddenlink" target="rightframe">type&nbsp;<strike>
+()</strike>&nbsp;in&nbsp;android.support.v17.leanback.app.GuidedStepSupportFragment
+</A></nobr><br>
+<!-- Method getGroupMemberIds -->
+<nobr><A HREF="android.support.v7.media.MediaRouteDescriptor.html#android.support.v7.media.MediaRouteDescriptor.getGroupMemberIds_removed()" class="hiddenlink" target="rightframe"><strike>getGroupMemberIds</strike>
+()</A></nobr><br>
+<!-- Constructor GravityCompat -->
+<nobr><A HREF="android.support.v4.view.GravityCompat.html#android.support.v4.view.GravityCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>GravityCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class GuidedStepFragment.GuidedStepBackgroundFragment -->
+<A HREF="pkg_android.support.v17.leanback.app.html#GuidedStepFragment.GuidedStepBackgroundFragment" class="hiddenlink" target="rightframe"><strike>GuidedStepFragment.GuidedStepBackgroundFragment</strike></A><br>
+<!-- Class GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment -->
+<A HREF="pkg_android.support.v17.leanback.app.html#GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment" class="hiddenlink" target="rightframe"><strike>GuidedStepSupportFragment.GuidedStepBackgroundSupportFragment</strike></A><br>
+<!-- Method icon -->
+<A NAME="I"></A>
+<br><font size="+2">I</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.icon_removed(android.graphics.drawable.Drawable)" class="hiddenlink" target="rightframe"><strike>icon</strike>
+(<code>Drawable</code>)</A></nobr><br>
+<!-- Constructor ICUCompat -->
+<nobr><A HREF="android.support.v4.text.ICUCompat.html#android.support.v4.text.ICUCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>ICUCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor InputDeviceCompat -->
+<nobr><A HREF="android.support.v4.view.InputDeviceCompat.html#android.support.v4.view.InputDeviceCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>InputDeviceCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor KeyEventCompat -->
+<A NAME="K"></A>
+<br><font size="+2">K</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.view.KeyEventCompat.html#android.support.v4.view.KeyEventCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>KeyEventCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Field mActionsGridView -->
+<A NAME="M"></A>
+<br><font size="+2">M</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.mActionsGridView" class="hiddenlink" target="rightframe"><strike>mActionsGridView</strike></A>
+</nobr><br>
+<!-- Constructor MarginLayoutParamsCompat -->
+<nobr><A HREF="android.support.v4.view.MarginLayoutParamsCompat.html#android.support.v4.view.MarginLayoutParamsCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>MarginLayoutParamsCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Class MediaRouter.RouteGroup -->
+<A HREF="pkg_android.support.v7.media.html#MediaRouter.RouteGroup" class="hiddenlink" target="rightframe"><strike>MediaRouter.RouteGroup</strike></A><br>
+<!-- Constructor MenuCompat -->
+<nobr><A HREF="android.support.v4.view.MenuCompat.html#android.support.v4.view.MenuCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>MenuCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor MenuItemCompat -->
+<nobr><A HREF="android.support.v4.view.MenuItemCompat.html#android.support.v4.view.MenuItemCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>MenuItemCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Field mMainView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.mMainView" class="hiddenlink" target="rightframe"><strike>mMainView</strike></A>
+</nobr><br>
+<!-- Constructor MotionEventCompat -->
+<nobr><A HREF="android.support.v4.view.MotionEventCompat.html#android.support.v4.view.MotionEventCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>MotionEventCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Field mSelectorView -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.html#android.support.v17.leanback.widget.GuidedActionsStylist.mSelectorView" class="hiddenlink" target="rightframe"><strike>mSelectorView</strike></A>
+</nobr><br>
+<!-- Field NO_DRAWABLE -->
+<A NAME="N"></A>
+<br><font size="+2">N</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.html#android.support.v17.leanback.widget.GuidedAction.NO_DRAWABLE" class="hiddenlink" target="rightframe"><strike>NO_DRAWABLE</strike></A>
+</nobr><br>
+<!-- Method onLayoutChild -->
+<A NAME="O"></A>
+<br><font size="+2">O</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html#android.support.design.widget.AppBarLayout.ScrollingViewBehavior.onLayoutChild_removed(android.support.design.widget.CoordinatorLayout, android.view.View, int)" class="hiddenlink" target="rightframe"><strike>onLayoutChild</strike>
+(<code>CoordinatorLayout, View, int</code>)</A></nobr><br>
+<!-- Method onProvideBackgroundFragment -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepFragment.html#android.support.v17.leanback.app.GuidedStepFragment.onProvideBackgroundFragment_removed()" class="hiddenlink" target="rightframe"><strike>onProvideBackgroundFragment</strike>
+()</A></nobr><br>
+<!-- Method onProvideBackgroundSupportFragment -->
+<nobr><A HREF="android.support.v17.leanback.app.GuidedStepSupportFragment.html#android.support.v17.leanback.app.GuidedStepSupportFragment.onProvideBackgroundSupportFragment_removed()" class="hiddenlink" target="rightframe"><strike>onProvideBackgroundSupportFragment</strike>
+()</A></nobr><br>
+<!-- Constructor ParallelExecutorCompat -->
+<A NAME="P"></A>
+<br><font size="+2">P</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.content.ParallelExecutorCompat.html#android.support.v4.content.ParallelExecutorCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>ParallelExecutorCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor ParcelableCompat -->
+<nobr><A HREF="android.support.v4.os.ParcelableCompat.html#android.support.v4.os.ParcelableCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>ParcelableCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor ResourcesCompat -->
+<A NAME="R"></A>
+<br><font size="+2">R</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.content.res.ResourcesCompat.html#android.support.v4.content.res.ResourcesCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>ResourcesCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor RoundedBitmapDrawableFactory -->
+<nobr><A HREF="android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory.html#android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory.ctor_removed()" class="hiddenlink" target="rightframe"><strike>RoundedBitmapDrawableFactory</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor ShareCompat -->
+<A NAME="S"></A>
+<br><font size="+2">S</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.app.ShareCompat.html#android.support.v4.app.ShareCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>ShareCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor SharedPreferencesCompat -->
+<nobr><A HREF="android.support.v4.content.SharedPreferencesCompat.html#android.support.v4.content.SharedPreferencesCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>SharedPreferencesCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor TextDirectionHeuristicsCompat -->
+<A NAME="T"></A>
+<br><font size="+2">T</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.text.TextDirectionHeuristicsCompat.html#android.support.v4.text.TextDirectionHeuristicsCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>TextDirectionHeuristicsCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor TextUtilsCompat -->
+<nobr><A HREF="android.support.v4.text.TextUtilsCompat.html#android.support.v4.text.TextUtilsCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>TextUtilsCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Field Theme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme" class="hiddenlink" target="rightframe"><strike>Theme</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarDivider -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarDivider" class="hiddenlink" target="rightframe"><strike>Theme_actionBarDivider</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarItemBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarItemBackground" class="hiddenlink" target="rightframe"><strike>Theme_actionBarItemBackground</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarPopupTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarPopupTheme" class="hiddenlink" target="rightframe"><strike>Theme_actionBarPopupTheme</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarSize -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarSize" class="hiddenlink" target="rightframe"><strike>Theme_actionBarSize</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarSplitStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarSplitStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionBarSplitStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionBarStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarTabBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarTabBarStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionBarTabBarStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarTabStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarTabStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionBarTabStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarTabTextStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarTabTextStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionBarTabTextStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarTheme" class="hiddenlink" target="rightframe"><strike>Theme_actionBarTheme</strike></A>
+</nobr><br>
+<!-- Field Theme_actionBarWidgetTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionBarWidgetTheme" class="hiddenlink" target="rightframe"><strike>Theme_actionBarWidgetTheme</strike></A>
+</nobr><br>
+<!-- Field Theme_actionButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionDropDownStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionDropDownStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionDropDownStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionMenuTextAppearance -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionMenuTextAppearance" class="hiddenlink" target="rightframe"><strike>Theme_actionMenuTextAppearance</strike></A>
+</nobr><br>
+<!-- Field Theme_actionMenuTextColor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionMenuTextColor" class="hiddenlink" target="rightframe"><strike>Theme_actionMenuTextColor</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeBackground" class="hiddenlink" target="rightframe"><strike>Theme_actionModeBackground</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeCloseButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeCloseButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionModeCloseButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeCloseDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeCloseDrawable" class="hiddenlink" target="rightframe"><strike>Theme_actionModeCloseDrawable</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeCopyDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeCopyDrawable" class="hiddenlink" target="rightframe"><strike>Theme_actionModeCopyDrawable</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeCutDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeCutDrawable" class="hiddenlink" target="rightframe"><strike>Theme_actionModeCutDrawable</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeFindDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeFindDrawable" class="hiddenlink" target="rightframe"><strike>Theme_actionModeFindDrawable</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModePasteDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModePasteDrawable" class="hiddenlink" target="rightframe"><strike>Theme_actionModePasteDrawable</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModePopupWindowStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModePopupWindowStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionModePopupWindowStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeSelectAllDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeSelectAllDrawable" class="hiddenlink" target="rightframe"><strike>Theme_actionModeSelectAllDrawable</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeShareDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeShareDrawable" class="hiddenlink" target="rightframe"><strike>Theme_actionModeShareDrawable</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeSplitBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeSplitBackground" class="hiddenlink" target="rightframe"><strike>Theme_actionModeSplitBackground</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionModeStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionModeWebSearchDrawable -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionModeWebSearchDrawable" class="hiddenlink" target="rightframe"><strike>Theme_actionModeWebSearchDrawable</strike></A>
+</nobr><br>
+<!-- Field Theme_actionOverflowButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionOverflowButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionOverflowButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_actionOverflowMenuStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_actionOverflowMenuStyle" class="hiddenlink" target="rightframe"><strike>Theme_actionOverflowMenuStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_activityChooserViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_activityChooserViewStyle" class="hiddenlink" target="rightframe"><strike>Theme_activityChooserViewStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_alertDialogButtonGroupStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_alertDialogButtonGroupStyle" class="hiddenlink" target="rightframe"><strike>Theme_alertDialogButtonGroupStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_alertDialogCenterButtons -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_alertDialogCenterButtons" class="hiddenlink" target="rightframe"><strike>Theme_alertDialogCenterButtons</strike></A>
+</nobr><br>
+<!-- Field Theme_alertDialogStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_alertDialogStyle" class="hiddenlink" target="rightframe"><strike>Theme_alertDialogStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_alertDialogTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_alertDialogTheme" class="hiddenlink" target="rightframe"><strike>Theme_alertDialogTheme</strike></A>
+</nobr><br>
+<!-- Field Theme_android_windowAnimationStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_android_windowAnimationStyle" class="hiddenlink" target="rightframe"><strike>Theme_android_windowAnimationStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_android_windowIsFloating -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_android_windowIsFloating" class="hiddenlink" target="rightframe"><strike>Theme_android_windowIsFloating</strike></A>
+</nobr><br>
+<!-- Field Theme_autoCompleteTextViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_autoCompleteTextViewStyle" class="hiddenlink" target="rightframe"><strike>Theme_autoCompleteTextViewStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_borderlessButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_borderlessButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_borderlessButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_buttonBarButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_buttonBarButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_buttonBarButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_buttonBarNegativeButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_buttonBarNegativeButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_buttonBarNegativeButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_buttonBarNeutralButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_buttonBarNeutralButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_buttonBarNeutralButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_buttonBarPositiveButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_buttonBarPositiveButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_buttonBarPositiveButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_buttonBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_buttonBarStyle" class="hiddenlink" target="rightframe"><strike>Theme_buttonBarStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_buttonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_buttonStyle" class="hiddenlink" target="rightframe"><strike>Theme_buttonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_buttonStyleSmall -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_buttonStyleSmall" class="hiddenlink" target="rightframe"><strike>Theme_buttonStyleSmall</strike></A>
+</nobr><br>
+<!-- Field Theme_checkboxStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_checkboxStyle" class="hiddenlink" target="rightframe"><strike>Theme_checkboxStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_checkedTextViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_checkedTextViewStyle" class="hiddenlink" target="rightframe"><strike>Theme_checkedTextViewStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_colorAccent -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_colorAccent" class="hiddenlink" target="rightframe"><strike>Theme_colorAccent</strike></A>
+</nobr><br>
+<!-- Field Theme_colorButtonNormal -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_colorButtonNormal" class="hiddenlink" target="rightframe"><strike>Theme_colorButtonNormal</strike></A>
+</nobr><br>
+<!-- Field Theme_colorControlActivated -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_colorControlActivated" class="hiddenlink" target="rightframe"><strike>Theme_colorControlActivated</strike></A>
+</nobr><br>
+<!-- Field Theme_colorControlHighlight -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_colorControlHighlight" class="hiddenlink" target="rightframe"><strike>Theme_colorControlHighlight</strike></A>
+</nobr><br>
+<!-- Field Theme_colorControlNormal -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_colorControlNormal" class="hiddenlink" target="rightframe"><strike>Theme_colorControlNormal</strike></A>
+</nobr><br>
+<!-- Field Theme_colorPrimary -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_colorPrimary" class="hiddenlink" target="rightframe"><strike>Theme_colorPrimary</strike></A>
+</nobr><br>
+<!-- Field Theme_colorPrimaryDark -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_colorPrimaryDark" class="hiddenlink" target="rightframe"><strike>Theme_colorPrimaryDark</strike></A>
+</nobr><br>
+<!-- Field Theme_colorSwitchThumbNormal -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_colorSwitchThumbNormal" class="hiddenlink" target="rightframe"><strike>Theme_colorSwitchThumbNormal</strike></A>
+</nobr><br>
+<!-- Field Theme_controlBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_controlBackground" class="hiddenlink" target="rightframe"><strike>Theme_controlBackground</strike></A>
+</nobr><br>
+<!-- Field Theme_dialogPreferredPadding -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_dialogPreferredPadding" class="hiddenlink" target="rightframe"><strike>Theme_dialogPreferredPadding</strike></A>
+</nobr><br>
+<!-- Field Theme_dialogTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_dialogTheme" class="hiddenlink" target="rightframe"><strike>Theme_dialogTheme</strike></A>
+</nobr><br>
+<!-- Field Theme_dividerHorizontal -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_dividerHorizontal" class="hiddenlink" target="rightframe"><strike>Theme_dividerHorizontal</strike></A>
+</nobr><br>
+<!-- Field Theme_dividerVertical -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_dividerVertical" class="hiddenlink" target="rightframe"><strike>Theme_dividerVertical</strike></A>
+</nobr><br>
+<!-- Field Theme_dropdownListPreferredItemHeight -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_dropdownListPreferredItemHeight" class="hiddenlink" target="rightframe"><strike>Theme_dropdownListPreferredItemHeight</strike></A>
+</nobr><br>
+<!-- Field Theme_dropDownListViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_dropDownListViewStyle" class="hiddenlink" target="rightframe"><strike>Theme_dropDownListViewStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_editTextBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_editTextBackground" class="hiddenlink" target="rightframe"><strike>Theme_editTextBackground</strike></A>
+</nobr><br>
+<!-- Field Theme_editTextColor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_editTextColor" class="hiddenlink" target="rightframe"><strike>Theme_editTextColor</strike></A>
+</nobr><br>
+<!-- Field Theme_editTextStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_editTextStyle" class="hiddenlink" target="rightframe"><strike>Theme_editTextStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_homeAsUpIndicator -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_homeAsUpIndicator" class="hiddenlink" target="rightframe"><strike>Theme_homeAsUpIndicator</strike></A>
+</nobr><br>
+<!-- Field Theme_imageButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_imageButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_imageButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_listChoiceBackgroundIndicator -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_listChoiceBackgroundIndicator" class="hiddenlink" target="rightframe"><strike>Theme_listChoiceBackgroundIndicator</strike></A>
+</nobr><br>
+<!-- Field Theme_listDividerAlertDialog -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_listDividerAlertDialog" class="hiddenlink" target="rightframe"><strike>Theme_listDividerAlertDialog</strike></A>
+</nobr><br>
+<!-- Field Theme_listPopupWindowStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_listPopupWindowStyle" class="hiddenlink" target="rightframe"><strike>Theme_listPopupWindowStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_listPreferredItemHeight -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_listPreferredItemHeight" class="hiddenlink" target="rightframe"><strike>Theme_listPreferredItemHeight</strike></A>
+</nobr><br>
+<!-- Field Theme_listPreferredItemHeightLarge -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_listPreferredItemHeightLarge" class="hiddenlink" target="rightframe"><strike>Theme_listPreferredItemHeightLarge</strike></A>
+</nobr><br>
+<!-- Field Theme_listPreferredItemHeightSmall -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_listPreferredItemHeightSmall" class="hiddenlink" target="rightframe"><strike>Theme_listPreferredItemHeightSmall</strike></A>
+</nobr><br>
+<!-- Field Theme_listPreferredItemPaddingLeft -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_listPreferredItemPaddingLeft" class="hiddenlink" target="rightframe"><strike>Theme_listPreferredItemPaddingLeft</strike></A>
+</nobr><br>
+<!-- Field Theme_listPreferredItemPaddingRight -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_listPreferredItemPaddingRight" class="hiddenlink" target="rightframe"><strike>Theme_listPreferredItemPaddingRight</strike></A>
+</nobr><br>
+<!-- Field Theme_panelBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_panelBackground" class="hiddenlink" target="rightframe"><strike>Theme_panelBackground</strike></A>
+</nobr><br>
+<!-- Field Theme_panelMenuListTheme -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_panelMenuListTheme" class="hiddenlink" target="rightframe"><strike>Theme_panelMenuListTheme</strike></A>
+</nobr><br>
+<!-- Field Theme_panelMenuListWidth -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_panelMenuListWidth" class="hiddenlink" target="rightframe"><strike>Theme_panelMenuListWidth</strike></A>
+</nobr><br>
+<!-- Field Theme_popupMenuStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_popupMenuStyle" class="hiddenlink" target="rightframe"><strike>Theme_popupMenuStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_popupWindowStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_popupWindowStyle" class="hiddenlink" target="rightframe"><strike>Theme_popupWindowStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_radioButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_radioButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_radioButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_ratingBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_ratingBarStyle" class="hiddenlink" target="rightframe"><strike>Theme_ratingBarStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_searchViewStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_searchViewStyle" class="hiddenlink" target="rightframe"><strike>Theme_searchViewStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_seekBarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_seekBarStyle" class="hiddenlink" target="rightframe"><strike>Theme_seekBarStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_selectableItemBackground -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_selectableItemBackground" class="hiddenlink" target="rightframe"><strike>Theme_selectableItemBackground</strike></A>
+</nobr><br>
+<!-- Field Theme_selectableItemBackgroundBorderless -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_selectableItemBackgroundBorderless" class="hiddenlink" target="rightframe"><strike>Theme_selectableItemBackgroundBorderless</strike></A>
+</nobr><br>
+<!-- Field Theme_spinnerDropDownItemStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_spinnerDropDownItemStyle" class="hiddenlink" target="rightframe"><strike>Theme_spinnerDropDownItemStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_spinnerStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_spinnerStyle" class="hiddenlink" target="rightframe"><strike>Theme_spinnerStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_switchStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_switchStyle" class="hiddenlink" target="rightframe"><strike>Theme_switchStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_textAppearanceLargePopupMenu -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_textAppearanceLargePopupMenu" class="hiddenlink" target="rightframe"><strike>Theme_textAppearanceLargePopupMenu</strike></A>
+</nobr><br>
+<!-- Field Theme_textAppearanceListItem -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_textAppearanceListItem" class="hiddenlink" target="rightframe"><strike>Theme_textAppearanceListItem</strike></A>
+</nobr><br>
+<!-- Field Theme_textAppearanceListItemSmall -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_textAppearanceListItemSmall" class="hiddenlink" target="rightframe"><strike>Theme_textAppearanceListItemSmall</strike></A>
+</nobr><br>
+<!-- Field Theme_textAppearanceSearchResultSubtitle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_textAppearanceSearchResultSubtitle" class="hiddenlink" target="rightframe"><strike>Theme_textAppearanceSearchResultSubtitle</strike></A>
+</nobr><br>
+<!-- Field Theme_textAppearanceSearchResultTitle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_textAppearanceSearchResultTitle" class="hiddenlink" target="rightframe"><strike>Theme_textAppearanceSearchResultTitle</strike></A>
+</nobr><br>
+<!-- Field Theme_textAppearanceSmallPopupMenu -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_textAppearanceSmallPopupMenu" class="hiddenlink" target="rightframe"><strike>Theme_textAppearanceSmallPopupMenu</strike></A>
+</nobr><br>
+<!-- Field Theme_textColorAlertDialogListItem -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_textColorAlertDialogListItem" class="hiddenlink" target="rightframe"><strike>Theme_textColorAlertDialogListItem</strike></A>
+</nobr><br>
+<!-- Field Theme_textColorSearchUrl -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_textColorSearchUrl" class="hiddenlink" target="rightframe"><strike>Theme_textColorSearchUrl</strike></A>
+</nobr><br>
+<!-- Field Theme_toolbarNavigationButtonStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_toolbarNavigationButtonStyle" class="hiddenlink" target="rightframe"><strike>Theme_toolbarNavigationButtonStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_toolbarStyle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_toolbarStyle" class="hiddenlink" target="rightframe"><strike>Theme_toolbarStyle</strike></A>
+</nobr><br>
+<!-- Field Theme_windowActionBar -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowActionBar" class="hiddenlink" target="rightframe"><strike>Theme_windowActionBar</strike></A>
+</nobr><br>
+<!-- Field Theme_windowActionBarOverlay -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowActionBarOverlay" class="hiddenlink" target="rightframe"><strike>Theme_windowActionBarOverlay</strike></A>
+</nobr><br>
+<!-- Field Theme_windowActionModeOverlay -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowActionModeOverlay" class="hiddenlink" target="rightframe"><strike>Theme_windowActionModeOverlay</strike></A>
+</nobr><br>
+<!-- Field Theme_windowFixedHeightMajor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowFixedHeightMajor" class="hiddenlink" target="rightframe"><strike>Theme_windowFixedHeightMajor</strike></A>
+</nobr><br>
+<!-- Field Theme_windowFixedHeightMinor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowFixedHeightMinor" class="hiddenlink" target="rightframe"><strike>Theme_windowFixedHeightMinor</strike></A>
+</nobr><br>
+<!-- Field Theme_windowFixedWidthMajor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowFixedWidthMajor" class="hiddenlink" target="rightframe"><strike>Theme_windowFixedWidthMajor</strike></A>
+</nobr><br>
+<!-- Field Theme_windowFixedWidthMinor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowFixedWidthMinor" class="hiddenlink" target="rightframe"><strike>Theme_windowFixedWidthMinor</strike></A>
+</nobr><br>
+<!-- Field Theme_windowMinWidthMajor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowMinWidthMajor" class="hiddenlink" target="rightframe"><strike>Theme_windowMinWidthMajor</strike></A>
+</nobr><br>
+<!-- Field Theme_windowMinWidthMinor -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowMinWidthMinor" class="hiddenlink" target="rightframe"><strike>Theme_windowMinWidthMinor</strike></A>
+</nobr><br>
+<!-- Field Theme_windowNoTitle -->
+<nobr><A HREF="android.support.v7.appcompat.R.styleable.html#android.support.v7.appcompat.R.styleable.Theme_windowNoTitle" class="hiddenlink" target="rightframe"><strike>Theme_windowNoTitle</strike></A>
+</nobr><br>
+<!-- Method title -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedAction.Builder.html#android.support.v17.leanback.widget.GuidedAction.Builder.title_removed(java.lang.String)" class="hiddenlink" target="rightframe"><strike>title</strike>
+(<code>String</code>)</A></nobr><br>
+<!-- Constructor TraceCompat -->
+<nobr><A HREF="android.support.v4.os.TraceCompat.html#android.support.v4.os.TraceCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>TraceCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor TrafficStatsCompat -->
+<nobr><A HREF="android.support.v4.net.TrafficStatsCompat.html#android.support.v4.net.TrafficStatsCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>TrafficStatsCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor VelocityTrackerCompat -->
+<A NAME="V"></A>
+<br><font size="+2">V</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#W"><font size="-2">W</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.view.VelocityTrackerCompat.html#android.support.v4.view.VelocityTrackerCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>VelocityTrackerCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Field view -->
+<nobr><A HREF="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html#android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.view" class="hiddenlink" target="rightframe"><strike>view</strike></A>
+</nobr><br>
+<!-- Constructor ViewCompat -->
+<nobr><A HREF="android.support.v4.view.ViewCompat.html#android.support.v4.view.ViewCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>ViewCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor ViewConfigurationCompat -->
+<nobr><A HREF="android.support.v4.view.ViewConfigurationCompat.html#android.support.v4.view.ViewConfigurationCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>ViewConfigurationCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<!-- Constructor WindowCompat -->
+<A NAME="W"></A>
+<br><font size="+2">W</font>&nbsp;
+<a href="#A"><font size="-2">A</font></a> 
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#C"><font size="-2">C</font></a> 
+<a href="#D"><font size="-2">D</font></a> 
+<a href="#E"><font size="-2">E</font></a> 
+<a href="#F"><font size="-2">F</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#I"><font size="-2">I</font></a> 
+<a href="#K"><font size="-2">K</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#N"><font size="-2">N</font></a> 
+<a href="#O"><font size="-2">O</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#R"><font size="-2">R</font></a> 
+<a href="#S"><font size="-2">S</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<nobr><A HREF="android.support.v4.view.WindowCompat.html#android.support.v4.view.WindowCompat.ctor_removed()" class="hiddenlink" target="rightframe"><strike>WindowCompat</strike>
+()</A></nobr>&nbsp;constructor<br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html
new file mode 100644
index 0000000..46a0548
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsIntent.Builder.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.customtabs.CustomTabsIntent.Builder
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.customtabs.<A HREF="../../../../reference/android/support/customtabs/CustomTabsIntent.Builder.html" target="_top"><font size="+2"><code>CustomTabsIntent.Builder</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsIntent.Builder.addDefaultShareMenuItem_added()"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsIntent.Builder.html#addDefaultShareMenuItem()" target="_top"><code>addDefaultShareMenuItem</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsIntent.Builder.addToolbarItem_added(int, android.graphics.Bitmap, java.lang.String, android.app.PendingIntent)"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsIntent.Builder.html#addToolbarItem(int, android.graphics.Bitmap, java.lang.String, android.app.PendingIntent)" target="_top"><code>addToolbarItem</code></A>(<code>int,</nobr> Bitmap<nobr>,</nobr> String<nobr>,</nobr> PendingIntent<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsIntent.Builder.setSecondaryToolbarColor_added(int)"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsIntent.Builder.html#setSecondaryToolbarColor(int)" target="_top"><code>setSecondaryToolbarColor</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsIntent.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsIntent.html
new file mode 100644
index 0000000..7987724
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsIntent.html
@@ -0,0 +1,165 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.customtabs.CustomTabsIntent
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.customtabs.<A HREF="../../../../reference/android/support/customtabs/CustomTabsIntent.html" target="_top"><font size="+2"><code>CustomTabsIntent</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsIntent.getMaxToolbarItems_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsIntent.html#getMaxToolbarItems()" target="_top"><code>getMaxToolbarItems</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsIntent.EXTRA_DEFAULT_SHARE_MENU_ITEM"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsIntent.html#EXTRA_DEFAULT_SHARE_MENU_ITEM" target="_top"><code>EXTRA_DEFAULT_SHARE_MENU_ITEM</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsIntent.EXTRA_SECONDARY_TOOLBAR_COLOR"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsIntent.html#EXTRA_SECONDARY_TOOLBAR_COLOR" target="_top"><code>EXTRA_SECONDARY_TOOLBAR_COLOR</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsIntent.EXTRA_TOOLBAR_ITEMS"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsIntent.html#EXTRA_TOOLBAR_ITEMS" target="_top"><code>EXTRA_TOOLBAR_ITEMS</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsIntent.KEY_ID"></A>
+  <nobr><code>String</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsIntent.html#KEY_ID" target="_top"><code>KEY_ID</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsIntent.TOOLBAR_ACTION_BUTTON_ID"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsIntent.html#TOOLBAR_ACTION_BUTTON_ID" target="_top"><code>TOOLBAR_ACTION_BUTTON_ID</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsSession.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsSession.html
new file mode 100644
index 0000000..1296d4c
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.customtabs.CustomTabsSession.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.customtabs.CustomTabsSession
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.customtabs.<A HREF="../../../../reference/android/support/customtabs/CustomTabsSession.html" target="_top"><font size="+2"><code>CustomTabsSession</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs.CustomTabsSession.setToolbarItem_added(int, android.graphics.Bitmap, java.lang.String)"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/customtabs/CustomTabsSession.html#setToolbarItem(int, android.graphics.Bitmap, java.lang.String)" target="_top"><code>setToolbarItem</code></A>(<code>int,</nobr> Bitmap<nobr>,</nobr> String<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html
new file mode 100644
index 0000000..d539481
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.AppBarLayout.ScrollingViewBehavior.html
@@ -0,0 +1,150 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.AppBarLayout.ScrollingViewBehavior
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior.html" target="_top"><font size="+2"><code>AppBarLayout.ScrollingViewBehavior</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.onLayoutChild_removed(android.support.design.widget.CoordinatorLayout, android.view.View, int)"></A>
+  <nobr><code>boolean</code>&nbsp;onLayoutChild(<code>CoordinatorLayout,</nobr> View<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.getOverlayTop_changed()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior.html#getOverlayTop()" target="_top"><code>getOverlayTop</code></A>()  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Method was locally defined, but is now inherited from <a href="../../../../reference/android/support/design/widget/HeaderScrollingViewBehavior.html#getOverlayTop()" target="_top"><code>HeaderScrollingViewBehavior</code></a>. Change from non-final to final.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.AppBarLayout.ScrollingViewBehavior.setOverlayTop_changed(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/AppBarLayout.ScrollingViewBehavior.html#setOverlayTop(int)" target="_top"><code>setOverlayTop</code></A>(<code>int</code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Method was locally defined, but is now inherited from <a href="../../../../reference/android/support/design/widget/HeaderScrollingViewBehavior.html#setOverlayTop(int)" target="_top"><code>HeaderScrollingViewBehavior</code></a>. Change from non-final to final.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.CollapsingToolbarLayout.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.CollapsingToolbarLayout.html
new file mode 100644
index 0000000..e47f317
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.CollapsingToolbarLayout.html
@@ -0,0 +1,178 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.CollapsingToolbarLayout
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/CollapsingToolbarLayout.html" target="_top"><font size="+2"><code>CollapsingToolbarLayout</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CollapsingToolbarLayout.getExpandedTitleMarginBottom_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/CollapsingToolbarLayout.html#getExpandedTitleMarginBottom()" target="_top"><code>getExpandedTitleMarginBottom</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CollapsingToolbarLayout.getExpandedTitleMarginEnd_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/CollapsingToolbarLayout.html#getExpandedTitleMarginEnd()" target="_top"><code>getExpandedTitleMarginEnd</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CollapsingToolbarLayout.getExpandedTitleMarginStart_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/CollapsingToolbarLayout.html#getExpandedTitleMarginStart()" target="_top"><code>getExpandedTitleMarginStart</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CollapsingToolbarLayout.getExpandedTitleMarginTop_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/CollapsingToolbarLayout.html#getExpandedTitleMarginTop()" target="_top"><code>getExpandedTitleMarginTop</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleMargin_added(int, int, int, int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/CollapsingToolbarLayout.html#setExpandedTitleMargin(int, int, int, int)" target="_top"><code>setExpandedTitleMargin</code></A>(<code>int,</nobr> int<nobr>,</nobr> int<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleMarginBottom_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/CollapsingToolbarLayout.html#setExpandedTitleMarginBottom(int)" target="_top"><code>setExpandedTitleMarginBottom</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleMarginEnd_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/CollapsingToolbarLayout.html#setExpandedTitleMarginEnd(int)" target="_top"><code>setExpandedTitleMarginEnd</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleMarginStart_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/CollapsingToolbarLayout.html#setExpandedTitleMarginStart(int)" target="_top"><code>setExpandedTitleMarginStart</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CollapsingToolbarLayout.setExpandedTitleMarginTop_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/CollapsingToolbarLayout.html#setExpandedTitleMarginTop(int)" target="_top"><code>setExpandedTitleMarginTop</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.CoordinatorLayout.Behavior.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.CoordinatorLayout.Behavior.html
new file mode 100644
index 0000000..04efe89
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.CoordinatorLayout.Behavior.html
@@ -0,0 +1,135 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.CoordinatorLayout.Behavior
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/CoordinatorLayout.Behavior.html" target="_top"><font size="+2"><code>CoordinatorLayout.Behavior</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CoordinatorLayout.Behavior.getScrimColor_changed(android.support.design.widget.CoordinatorLayout, V)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/CoordinatorLayout.Behavior.html#getScrimColor(android.support.design.widget.CoordinatorLayout, V)" target="_top"><code>getScrimColor</code></A>(<code>CoordinatorLayout,</nobr> V<nobr><nobr></code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Change from final to non-final.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.CoordinatorLayout.Behavior.getScrimOpacity_changed(android.support.design.widget.CoordinatorLayout, V)"></A>
+  <nobr><code>float</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/CoordinatorLayout.Behavior.html#getScrimOpacity(android.support.design.widget.CoordinatorLayout, V)" target="_top"><code>getScrimOpacity</code></A>(<code>CoordinatorLayout,</nobr> V<nobr><nobr></code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Change from final to non-final.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.FloatingActionButton.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.FloatingActionButton.html
new file mode 100644
index 0000000..985adba
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.FloatingActionButton.html
@@ -0,0 +1,158 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.FloatingActionButton
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/FloatingActionButton.html" target="_top"><font size="+2"><code>FloatingActionButton</code></font></A>
+</H2>
+<p><font xsize="+1">The superclass changed from <code>android.widget.ImageButton</code> to <code>android.support.design.widget.VisibilityAwareImageButton</code>.<br></font>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.FloatingActionButton.getCompatElevation_added()"></A>
+  <nobr><code>float</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/FloatingActionButton.html#getCompatElevation()" target="_top"><code>getCompatElevation</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.FloatingActionButton.getContentBackground_added()"></A>
+  <nobr><code>Drawable</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/FloatingActionButton.html#getContentBackground()" target="_top"><code>getContentBackground</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.FloatingActionButton.getContentRect_added(android.graphics.Rect)"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/FloatingActionButton.html#getContentRect(android.graphics.Rect)" target="_top"><code>getContentRect</code></A>(<code>Rect</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.FloatingActionButton.getUseCompatPadding_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/FloatingActionButton.html#getUseCompatPadding()" target="_top"><code>getUseCompatPadding</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.FloatingActionButton.setCompatElevation_added(float)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/FloatingActionButton.html#setCompatElevation(float)" target="_top"><code>setCompatElevation</code></A>(<code>float</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.FloatingActionButton.setUseCompatPadding_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/FloatingActionButton.html#setUseCompatPadding(boolean)" target="_top"><code>setUseCompatPadding</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.HeaderScrollingViewBehavior.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.HeaderScrollingViewBehavior.html
new file mode 100644
index 0000000..7021ba2
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.HeaderScrollingViewBehavior.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.HeaderScrollingViewBehavior
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/HeaderScrollingViewBehavior.html" target="_top"><font size="+2"><code>HeaderScrollingViewBehavior</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.HeaderScrollingViewBehavior.getOverlayTop_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/HeaderScrollingViewBehavior.html#getOverlayTop()" target="_top"><code>getOverlayTop</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.HeaderScrollingViewBehavior.layoutChild_added(android.support.design.widget.CoordinatorLayout, android.view.View, int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/HeaderScrollingViewBehavior.html#layoutChild(android.support.design.widget.CoordinatorLayout, android.view.View, int)" target="_top"><code>layoutChild</code></A>(<code>CoordinatorLayout,</nobr> View<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.HeaderScrollingViewBehavior.setOverlayTop_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/HeaderScrollingViewBehavior.html#setOverlayTop(int)" target="_top"><code>setOverlayTop</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.TabLayout.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.TabLayout.html
new file mode 100644
index 0000000..9224ddb
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.TabLayout.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.TabLayout
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/TabLayout.html" target="_top"><font size="+2"><code>TabLayout</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.TabLayout.setTabsFromPagerAdapter_changed(android.support.v4.view.PagerAdapter)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/TabLayout.html#setTabsFromPagerAdapter(android.support.v4.view.PagerAdapter)" target="_top"><code>setTabsFromPagerAdapter</code></A>(<code>PagerAdapter</code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+<b>Now deprecated</b>.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.TextInputLayout.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.TextInputLayout.html
new file mode 100644
index 0000000..b0f5d63
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.TextInputLayout.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.TextInputLayout
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/TextInputLayout.html" target="_top"><font size="+2"><code>TextInputLayout</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.TextInputLayout.isCounterEnabled_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/TextInputLayout.html#isCounterEnabled()" target="_top"><code>isCounterEnabled</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.TextInputLayout.isHintEnabled_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/TextInputLayout.html#isHintEnabled()" target="_top"><code>isHintEnabled</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.TextInputLayout.onSaveInstanceState_added()"></A>
+  <nobr><code>Parcelable</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/TextInputLayout.html#onSaveInstanceState()" target="_top"><code>onSaveInstanceState</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.TextInputLayout.setHintEnabled_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/TextInputLayout.html#setHintEnabled(boolean)" target="_top"><code>setHintEnabled</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.ViewOffsetBehavior.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.ViewOffsetBehavior.html
new file mode 100644
index 0000000..1b4625f
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.design.widget.ViewOffsetBehavior.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.design.widget.ViewOffsetBehavior
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.design.widget.<A HREF="../../../../reference/android/support/design/widget/ViewOffsetBehavior.html" target="_top"><font size="+2"><code>ViewOffsetBehavior</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget.ViewOffsetBehavior.layoutChild_added(android.support.design.widget.CoordinatorLayout, V, int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/design/widget/ViewOffsetBehavior.html#layoutChild(android.support.design.widget.CoordinatorLayout, V, int)" target="_top"><code>layoutChild</code></A>(<code>CoordinatorLayout,</nobr> V<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html
new file mode 100644
index 0000000..c13de02
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.percent.PercentLayoutHelper.PercentLayoutInfo.html
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.percent.PercentLayoutHelper.PercentLayoutInfo
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.percent.<A HREF="../../../../reference/android/support/percent/PercentLayoutHelper.PercentLayoutInfo.html" target="_top"><font size="+2"><code>PercentLayoutHelper.PercentLayoutInfo</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.fillMarginLayoutParams_removed(android.view.ViewGroup.MarginLayoutParams, int, int)"></A>
+  <nobr><code>void</code>&nbsp;fillMarginLayoutParams(<code>MarginLayoutParams,</nobr> int<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.fillMarginLayoutParams_added(android.view.View, android.view.ViewGroup.MarginLayoutParams, int, int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/percent/PercentLayoutHelper.PercentLayoutInfo.html#fillMarginLayoutParams(android.view.View, android.view.ViewGroup.MarginLayoutParams, int, int)" target="_top"><code>fillMarginLayoutParams</code></A>(<code>View,</nobr> MarginLayoutParams<nobr>,</nobr> int<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.percent.PercentLayoutHelper.PercentLayoutInfo.fillMarginLayoutParams_added(android.view.ViewGroup.MarginLayoutParams, int, int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/percent/PercentLayoutHelper.PercentLayoutInfo.html#fillMarginLayoutParams(android.view.ViewGroup.MarginLayoutParams, int, int)" target="_top"><code>fillMarginLayoutParams</code></A>(<code>MarginLayoutParams,</nobr> int<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v14.preference.PreferenceFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v14.preference.PreferenceFragment.html
new file mode 100644
index 0000000..3a910d0
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v14.preference.PreferenceFragment.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v14.preference.PreferenceFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v14.preference.<A HREF="../../../../reference/android/support/v14/preference/PreferenceFragment.html" target="_top"><font size="+2"><code>PreferenceFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v14.preference.PreferenceFragment.setDivider_added(android.graphics.drawable.Drawable)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v14/preference/PreferenceFragment.html#setDivider(android.graphics.drawable.Drawable)" target="_top"><code>setDivider</code></A>(<code>Drawable</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v14.preference.PreferenceFragment.setDividerHeight_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v14/preference/PreferenceFragment.html#setDividerHeight(int)" target="_top"><code>setDividerHeight</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BaseRowFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BaseRowFragment.html
new file mode 100644
index 0000000..003f04b
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BaseRowFragment.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.BaseRowFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/BaseRowFragment.html" target="_top"><font size="+2"><code>BaseRowFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BaseRowFragment.getSelectedPosition_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BaseRowFragment.html#getSelectedPosition()" target="_top"><code>getSelectedPosition</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BaseRowSupportFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BaseRowSupportFragment.html
new file mode 100644
index 0000000..6a30cc3
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BaseRowSupportFragment.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.BaseRowSupportFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/BaseRowSupportFragment.html" target="_top"><font size="+2"><code>BaseRowSupportFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BaseRowSupportFragment.getSelectedPosition_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BaseRowSupportFragment.html#getSelectedPosition()" target="_top"><code>getSelectedPosition</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BrowseFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BrowseFragment.html
new file mode 100644
index 0000000..74cb151
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BrowseFragment.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.BrowseFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseFragment.html" target="_top"><font size="+2"><code>BrowseFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseFragment.getHeadersFragment_added()"></A>
+  <nobr><code>HeadersFragment</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseFragment.html#getHeadersFragment()" target="_top"><code>getHeadersFragment</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseFragment.getRowsFragment_added()"></A>
+  <nobr><code>RowsFragment</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseFragment.html#getRowsFragment()" target="_top"><code>getRowsFragment</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseFragment.getSelectedPosition_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseFragment.html#getSelectedPosition()" target="_top"><code>getSelectedPosition</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseFragment.setSelectedPosition_added(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseFragment.html#setSelectedPosition(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask)" target="_top"><code>setSelectedPosition</code></A>(<code>int,</nobr> boolean<nobr>,</nobr> ViewHolderTask<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BrowseSupportFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BrowseSupportFragment.html
new file mode 100644
index 0000000..a46a8ed
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.BrowseSupportFragment.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.BrowseSupportFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseSupportFragment.html" target="_top"><font size="+2"><code>BrowseSupportFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseSupportFragment.getHeadersSupportFragment_added()"></A>
+  <nobr><code>HeadersSupportFragment</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseSupportFragment.html#getHeadersSupportFragment()" target="_top"><code>getHeadersSupportFragment</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseSupportFragment.getRowsSupportFragment_added()"></A>
+  <nobr><code>RowsSupportFragment</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseSupportFragment.html#getRowsSupportFragment()" target="_top"><code>getRowsSupportFragment</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseSupportFragment.getSelectedPosition_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseSupportFragment.html#getSelectedPosition()" target="_top"><code>getSelectedPosition</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.BrowseSupportFragment.setSelectedPosition_added(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/BrowseSupportFragment.html#setSelectedPosition(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask)" target="_top"><code>setSelectedPosition</code></A>(<code>int,</nobr> boolean<nobr>,</nobr> ViewHolderTask<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.DetailsFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.DetailsFragment.html
new file mode 100644
index 0000000..34875c3
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.DetailsFragment.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.DetailsFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsFragment.html" target="_top"><font size="+2"><code>DetailsFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.DetailsFragment.getRowsFragment_added()"></A>
+  <nobr><code>RowsFragment</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsFragment.html#getRowsFragment()" target="_top"><code>getRowsFragment</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.DetailsSupportFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.DetailsSupportFragment.html
new file mode 100644
index 0000000..4cd41ed
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.DetailsSupportFragment.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.DetailsSupportFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsSupportFragment.html" target="_top"><font size="+2"><code>DetailsSupportFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.DetailsSupportFragment.getRowsSupportFragment_added()"></A>
+  <nobr><code>RowsSupportFragment</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/DetailsSupportFragment.html#getRowsSupportFragment()" target="_top"><code>getRowsSupportFragment</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.GuidedStepFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.GuidedStepFragment.html
new file mode 100644
index 0000000..0962be7
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.GuidedStepFragment.html
@@ -0,0 +1,344 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.GuidedStepFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html" target="_top"><font size="+2"><code>GuidedStepFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.getContainerIdForBackground_removed()"></A>
+  <nobr><code>int</code>&nbsp;getContainerIdForBackground()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.onProvideBackgroundFragment_removed()"></A>
+  <nobr><code>Fragment</code>&nbsp;onProvideBackgroundFragment()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.collapseSubActions_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#collapseSubActions()" target="_top"><code>collapseSubActions</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.expandSubActions_added(android.support.v17.leanback.widget.GuidedAction)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#expandSubActions(android.support.v17.leanback.widget.GuidedAction)" target="_top"><code>expandSubActions</code></A>(<code>GuidedAction</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.findActionById_added(long)"></A>
+  <nobr><code>GuidedAction</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#findActionById(long)" target="_top"><code>findActionById</code></A>(<code>long</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.findActionPositionById_added(long)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#findActionPositionById(long)" target="_top"><code>findActionPositionById</code></A>(<code>long</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.findButtonActionById_added(long)"></A>
+  <nobr><code>GuidedAction</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#findButtonActionById(long)" target="_top"><code>findButtonActionById</code></A>(<code>long</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.findButtonActionPositionById_added(long)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#findButtonActionPositionById(long)" target="_top"><code>findButtonActionPositionById</code></A>(<code>long</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.finishGuidedStepFragments_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#finishGuidedStepFragments()" target="_top"><code>finishGuidedStepFragments</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.getButtonActionItemView_added(int)"></A>
+  <nobr><code>View</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#getButtonActionItemView(int)" target="_top"><code>getButtonActionItemView</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.getButtonActions_added()"></A>
+  <nobr><code>List&lt;GuidedAction&gt;</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#getButtonActions()" target="_top"><code>getButtonActions</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.getGuidedButtonActionsStylist_added()"></A>
+  <nobr><code>GuidedActionsStylist</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#getGuidedButtonActionsStylist()" target="_top"><code>getGuidedButtonActionsStylist</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.getSelectedButtonActionPosition_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#getSelectedButtonActionPosition()" target="_top"><code>getSelectedButtonActionPosition</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.isFocusOutEndAllowed_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#isFocusOutEndAllowed()" target="_top"><code>isFocusOutEndAllowed</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.isFocusOutStartAllowed_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#isFocusOutStartAllowed()" target="_top"><code>isFocusOutStartAllowed</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.isSubActionsExpanded_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#isSubActionsExpanded()" target="_top"><code>isSubActionsExpanded</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.notifyActionChanged_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#notifyActionChanged(int)" target="_top"><code>notifyActionChanged</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.notifyButtonActionChanged_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#notifyButtonActionChanged(int)" target="_top"><code>notifyButtonActionChanged</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.onAddSharedElementTransition_added(android.app.FragmentTransaction, android.support.v17.leanback.app.GuidedStepFragment)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#onAddSharedElementTransition(android.app.FragmentTransaction, android.support.v17.leanback.app.GuidedStepFragment)" target="_top"><code>onAddSharedElementTransition</code></A>(<code>FragmentTransaction,</nobr> GuidedStepFragment<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.onCreateBackgroundView_added(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)"></A>
+  <nobr><code>View</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)" target="_top"><code>onCreateBackgroundView</code></A>(<code>LayoutInflater,</nobr> ViewGroup<nobr>,</nobr> Bundle<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.onCreateButtonActions_added(java.util.List<android.support.v17.leanback.widget.GuidedAction>, android.os.Bundle)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#onCreateButtonActions(java.util.List<android.support.v17.leanback.widget.GuidedAction>, android.os.Bundle)" target="_top"><code>onCreateButtonActions</code></A>(<code>List&lt;GuidedAction&gt;,</nobr> Bundle<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.onCreateButtonActionsStylist_added()"></A>
+  <nobr><code>GuidedActionsStylist</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#onCreateButtonActionsStylist()" target="_top"><code>onCreateButtonActionsStylist</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.onGuidedActionEditedAndProceed_added(android.support.v17.leanback.widget.GuidedAction)"></A>
+  <nobr><code>long</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#onGuidedActionEditedAndProceed(android.support.v17.leanback.widget.GuidedAction)" target="_top"><code>onGuidedActionEditedAndProceed</code></A>(<code>GuidedAction</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.onSubGuidedActionClicked_added(android.support.v17.leanback.widget.GuidedAction)"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#onSubGuidedActionClicked(android.support.v17.leanback.widget.GuidedAction)" target="_top"><code>onSubGuidedActionClicked</code></A>(<code>GuidedAction</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.popBackStackToGuidedStepFragment_added(java.lang.Class, int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#popBackStackToGuidedStepFragment(java.lang.Class, int)" target="_top"><code>popBackStackToGuidedStepFragment</code></A>(<code>Class,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.setButtonActions_added(java.util.List<android.support.v17.leanback.widget.GuidedAction>)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#setButtonActions(java.util.List<android.support.v17.leanback.widget.GuidedAction>)" target="_top"><code>setButtonActions</code></A>(<code>List&lt;GuidedAction&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.setSelectedButtonActionPosition_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#setSelectedButtonActionPosition(int)" target="_top"><code>setSelectedButtonActionPosition</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_REPLACE"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#UI_STYLE_REPLACE" target="_top"><code>UI_STYLE_REPLACE</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepFragment.UI_STYLE_DEFAULT"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepFragment.html#UI_STYLE_DEFAULT" target="_top"><code>UI_STYLE_DEFAULT</code></font></A></nobr>  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+<b>Now deprecated</b>.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.GuidedStepSupportFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.GuidedStepSupportFragment.html
new file mode 100644
index 0000000..b464afa
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.GuidedStepSupportFragment.html
@@ -0,0 +1,344 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.GuidedStepSupportFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html" target="_top"><font size="+2"><code>GuidedStepSupportFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.getContainerIdForBackground_removed()"></A>
+  <nobr><code>int</code>&nbsp;getContainerIdForBackground()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.onProvideBackgroundSupportFragment_removed()"></A>
+  <nobr><code>Fragment</code>&nbsp;onProvideBackgroundSupportFragment()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.collapseSubActions_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#collapseSubActions()" target="_top"><code>collapseSubActions</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.expandSubActions_added(android.support.v17.leanback.widget.GuidedAction)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#expandSubActions(android.support.v17.leanback.widget.GuidedAction)" target="_top"><code>expandSubActions</code></A>(<code>GuidedAction</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.findActionById_added(long)"></A>
+  <nobr><code>GuidedAction</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#findActionById(long)" target="_top"><code>findActionById</code></A>(<code>long</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.findActionPositionById_added(long)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#findActionPositionById(long)" target="_top"><code>findActionPositionById</code></A>(<code>long</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.findButtonActionById_added(long)"></A>
+  <nobr><code>GuidedAction</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#findButtonActionById(long)" target="_top"><code>findButtonActionById</code></A>(<code>long</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.findButtonActionPositionById_added(long)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#findButtonActionPositionById(long)" target="_top"><code>findButtonActionPositionById</code></A>(<code>long</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.finishGuidedStepSupportFragments_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#finishGuidedStepSupportFragments()" target="_top"><code>finishGuidedStepSupportFragments</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.getButtonActionItemView_added(int)"></A>
+  <nobr><code>View</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#getButtonActionItemView(int)" target="_top"><code>getButtonActionItemView</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.getButtonActions_added()"></A>
+  <nobr><code>List&lt;GuidedAction&gt;</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#getButtonActions()" target="_top"><code>getButtonActions</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.getGuidedButtonActionsStylist_added()"></A>
+  <nobr><code>GuidedActionsStylist</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#getGuidedButtonActionsStylist()" target="_top"><code>getGuidedButtonActionsStylist</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.getSelectedButtonActionPosition_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#getSelectedButtonActionPosition()" target="_top"><code>getSelectedButtonActionPosition</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.isFocusOutEndAllowed_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#isFocusOutEndAllowed()" target="_top"><code>isFocusOutEndAllowed</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.isFocusOutStartAllowed_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#isFocusOutStartAllowed()" target="_top"><code>isFocusOutStartAllowed</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.isSubActionsExpanded_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#isSubActionsExpanded()" target="_top"><code>isSubActionsExpanded</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.notifyActionChanged_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#notifyActionChanged(int)" target="_top"><code>notifyActionChanged</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.notifyButtonActionChanged_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#notifyButtonActionChanged(int)" target="_top"><code>notifyButtonActionChanged</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.onAddSharedElementTransition_added(android.support.v4.app.FragmentTransaction, android.support.v17.leanback.app.GuidedStepSupportFragment)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#onAddSharedElementTransition(android.support.v4.app.FragmentTransaction, android.support.v17.leanback.app.GuidedStepSupportFragment)" target="_top"><code>onAddSharedElementTransition</code></A>(<code>FragmentTransaction,</nobr> GuidedStepSupportFragment<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.onCreateBackgroundView_added(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)"></A>
+  <nobr><code>View</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#onCreateBackgroundView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)" target="_top"><code>onCreateBackgroundView</code></A>(<code>LayoutInflater,</nobr> ViewGroup<nobr>,</nobr> Bundle<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.onCreateButtonActions_added(java.util.List<android.support.v17.leanback.widget.GuidedAction>, android.os.Bundle)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#onCreateButtonActions(java.util.List<android.support.v17.leanback.widget.GuidedAction>, android.os.Bundle)" target="_top"><code>onCreateButtonActions</code></A>(<code>List&lt;GuidedAction&gt;,</nobr> Bundle<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.onCreateButtonActionsStylist_added()"></A>
+  <nobr><code>GuidedActionsStylist</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#onCreateButtonActionsStylist()" target="_top"><code>onCreateButtonActionsStylist</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.onGuidedActionEditedAndProceed_added(android.support.v17.leanback.widget.GuidedAction)"></A>
+  <nobr><code>long</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#onGuidedActionEditedAndProceed(android.support.v17.leanback.widget.GuidedAction)" target="_top"><code>onGuidedActionEditedAndProceed</code></A>(<code>GuidedAction</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.onSubGuidedActionClicked_added(android.support.v17.leanback.widget.GuidedAction)"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#onSubGuidedActionClicked(android.support.v17.leanback.widget.GuidedAction)" target="_top"><code>onSubGuidedActionClicked</code></A>(<code>GuidedAction</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.popBackStackToGuidedStepSupportFragment_added(java.lang.Class, int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#popBackStackToGuidedStepSupportFragment(java.lang.Class, int)" target="_top"><code>popBackStackToGuidedStepSupportFragment</code></A>(<code>Class,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.setButtonActions_added(java.util.List<android.support.v17.leanback.widget.GuidedAction>)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#setButtonActions(java.util.List<android.support.v17.leanback.widget.GuidedAction>)" target="_top"><code>setButtonActions</code></A>(<code>List&lt;GuidedAction&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.setSelectedButtonActionPosition_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#setSelectedButtonActionPosition(int)" target="_top"><code>setSelectedButtonActionPosition</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.UI_STYLE_REPLACE"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#UI_STYLE_REPLACE" target="_top"><code>UI_STYLE_REPLACE</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.GuidedStepSupportFragment.UI_STYLE_DEFAULT"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/GuidedStepSupportFragment.html#UI_STYLE_DEFAULT" target="_top"><code>UI_STYLE_DEFAULT</code></font></A></nobr>  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+<b>Now deprecated</b>.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener.html
new file mode 100644
index 0000000..0df02c4
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Interface android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/HeadersFragment.OnHeaderClickedListener.html" target="_top"><font size="+2"><code>HeadersFragment.OnHeaderClickedListener</code></font></A>
+</H2>
+<p>Change of visibility from  to public.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.HeadersFragment.OnHeaderClickedListener.onHeaderClicked_changed(android.support.v17.leanback.widget.RowHeaderPresenter.ViewHolder, android.support.v17.leanback.widget.Row)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/HeadersFragment.OnHeaderClickedListener.html#onHeaderClicked(android.support.v17.leanback.widget.RowHeaderPresenter.ViewHolder, android.support.v17.leanback.widget.Row)" target="_top"><code>onHeaderClicked</code></A>(<code>ViewHolder,</nobr> Row<nobr><nobr></code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Change in signature from <code>void</code> to (<code>ViewHolder, Row</code>).<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersFragment.OnHeaderViewSelectedListener.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersFragment.OnHeaderViewSelectedListener.html
new file mode 100644
index 0000000..cc2eeda
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersFragment.OnHeaderViewSelectedListener.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.HeadersFragment.OnHeaderViewSelectedListener
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Interface android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/HeadersFragment.OnHeaderViewSelectedListener.html" target="_top"><font size="+2"><code>HeadersFragment.OnHeaderViewSelectedListener</code></font></A>
+</H2>
+<p>Change of visibility from  to public.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener.html
new file mode 100644
index 0000000..0c59abd
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener.html
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Interface android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/HeadersSupportFragment.OnHeaderClickedListener.html" target="_top"><font size="+2"><code>HeadersSupportFragment.OnHeaderClickedListener</code></font></A>
+</H2>
+<p>Change of visibility from  to public.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderClickedListener.onHeaderClicked_changed(android.support.v17.leanback.widget.RowHeaderPresenter.ViewHolder, android.support.v17.leanback.widget.Row)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/HeadersSupportFragment.OnHeaderClickedListener.html#onHeaderClicked(android.support.v17.leanback.widget.RowHeaderPresenter.ViewHolder, android.support.v17.leanback.widget.Row)" target="_top"><code>onHeaderClicked</code></A>(<code>ViewHolder,</nobr> Row<nobr><nobr></code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Change in signature from <code>void</code> to (<code>ViewHolder, Row</code>).<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderViewSelectedListener.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderViewSelectedListener.html
new file mode 100644
index 0000000..ee27726
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderViewSelectedListener.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.HeadersSupportFragment.OnHeaderViewSelectedListener
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Interface android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/HeadersSupportFragment.OnHeaderViewSelectedListener.html" target="_top"><font size="+2"><code>HeadersSupportFragment.OnHeaderViewSelectedListener</code></font></A>
+</H2>
+<p>Change of visibility from  to public.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.RowsFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.RowsFragment.html
new file mode 100644
index 0000000..612c05a
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.RowsFragment.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.RowsFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/RowsFragment.html" target="_top"><font size="+2"><code>RowsFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.RowsFragment.getRowViewHolder_added(int)"></A>
+  <nobr><code>ViewHolder</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/RowsFragment.html#getRowViewHolder(int)" target="_top"><code>getRowViewHolder</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.RowsFragment.setSelectedPosition_added(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/RowsFragment.html#setSelectedPosition(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask)" target="_top"><code>setSelectedPosition</code></A>(<code>int,</nobr> boolean<nobr>,</nobr> ViewHolderTask<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.RowsSupportFragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.RowsSupportFragment.html
new file mode 100644
index 0000000..7cbdf0c
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.app.RowsSupportFragment.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.app.RowsSupportFragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.app.<A HREF="../../../../reference/android/support/v17/leanback/app/RowsSupportFragment.html" target="_top"><font size="+2"><code>RowsSupportFragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.RowsSupportFragment.getRowViewHolder_added(int)"></A>
+  <nobr><code>ViewHolder</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/RowsSupportFragment.html#getRowViewHolder(int)" target="_top"><code>getRowViewHolder</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app.RowsSupportFragment.setSelectedPosition_added(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/app/RowsSupportFragment.html#setSelectedPosition(int, boolean, android.support.v17.leanback.widget.Presenter.ViewHolderTask)" target="_top"><code>setSelectedPosition</code></A>(<code>int,</nobr> boolean<nobr>,</nobr> ViewHolderTask<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.html
new file mode 100644
index 0000000..674231e
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/DetailsOverviewLogoPresenter.ViewHolder.html" target="_top"><font size="+2"><code>DetailsOverviewLogoPresenter.ViewHolder</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.getParentPresenter_added()"></A>
+  <nobr><code>FullWidthDetailsOverviewRowPresenter</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/DetailsOverviewLogoPresenter.ViewHolder.html#getParentPresenter()" target="_top"><code>getParentPresenter</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.getParentViewHolder_added()"></A>
+  <nobr><code>ViewHolder</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/DetailsOverviewLogoPresenter.ViewHolder.html#getParentViewHolder()" target="_top"><code>getParentViewHolder</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.isSizeFromDrawableIntrinsic_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/DetailsOverviewLogoPresenter.ViewHolder.html#isSizeFromDrawableIntrinsic()" target="_top"><code>isSizeFromDrawableIntrinsic</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.ViewHolder.setSizeFromDrawableIntrinsic_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/DetailsOverviewLogoPresenter.ViewHolder.html#setSizeFromDrawableIntrinsic(boolean)" target="_top"><code>setSizeFromDrawableIntrinsic</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.html
new file mode 100644
index 0000000..74e170c
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.DetailsOverviewLogoPresenter
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/DetailsOverviewLogoPresenter.html" target="_top"><font size="+2"><code>DetailsOverviewLogoPresenter</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.DetailsOverviewLogoPresenter.onCreateView_added(android.view.ViewGroup)"></A>
+  <nobr><code>View</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/DetailsOverviewLogoPresenter.html#onCreateView(android.view.ViewGroup)" target="_top"><code>onCreateView</code></A>(<code>ViewGroup</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidanceStylist.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidanceStylist.html
new file mode 100644
index 0000000..0a20eb4
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidanceStylist.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.GuidanceStylist
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidanceStylist.html" target="_top"><font size="+2"><code>GuidanceStylist</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidanceStylist.onDestroyView_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidanceStylist.html#onDestroyView()" target="_top"><code>onDestroyView</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedAction.Builder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedAction.Builder.html
new file mode 100644
index 0000000..b77684b
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedAction.Builder.html
@@ -0,0 +1,295 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.GuidedAction.Builder
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.Builder.html" target="_top"><font size="+2"><code>GuidedAction.Builder</code></font></A>
+</H2>
+<p><font xsize="+1">The superclass changed from <code>java.lang.Object</code> to <code>android.support.v17.leanback.widget.GuidedAction.BuilderBase</code>.<br></font>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.ctor_added(android.content.Context)"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.Builder.html#GuidedAction.Builder(android.content.Context)" target="_top"><code>GuidedAction.Builder</code></A>(<code>Context</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.ctor_changed()"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.Builder.html#GuidedAction.Builder()" target="_top"><code>GuidedAction.Builder</code></A>()  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+<b>Now deprecated</b>.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.description_removed(java.lang.String)"></A>
+  <nobr><code>Builder</code>&nbsp;description(<code>String</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.editTitle_removed(java.lang.String)"></A>
+  <nobr><code>Builder</code>&nbsp;editTitle(<code>String</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.icon_removed(android.graphics.drawable.Drawable)"></A>
+  <nobr><code>Builder</code>&nbsp;icon(<code>Drawable</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.title_removed(java.lang.String)"></A>
+  <nobr><code>Builder</code>&nbsp;title(<code>String</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.checkSetId_changed(int)"></A>
+  <nobr><code>B</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.Builder.html#checkSetId(int)" target="_top"><code>checkSetId</code></A>(<code>int</code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Change in return type from <code>Builder</code> to <code>B</code>.<br>
+ Method was locally defined, but is now inherited from <a href="../../../../reference/android/support/v17/leanback/widget/GuidedAction.BuilderBase.html#checkSetId(int)" target="_top"><code>GuidedAction.BuilderBase</code></a>.
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.checked_changed(boolean)"></A>
+  <nobr><code>B</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.Builder.html#checked(boolean)" target="_top"><code>checked</code></A>(<code>boolean</code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Change in return type from <code>Builder</code> to <code>B</code>.<br>
+ Method was locally defined, but is now inherited from <a href="../../../../reference/android/support/v17/leanback/widget/GuidedAction.BuilderBase.html#checked(boolean)" target="_top"><code>GuidedAction.BuilderBase</code></a>.
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.editable_changed(boolean)"></A>
+  <nobr><code>B</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.Builder.html#editable(boolean)" target="_top"><code>editable</code></A>(<code>boolean</code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Change in return type from <code>Builder</code> to <code>B</code>.<br>
+ Method was locally defined, but is now inherited from <a href="../../../../reference/android/support/v17/leanback/widget/GuidedAction.BuilderBase.html#editable(boolean)" target="_top"><code>GuidedAction.BuilderBase</code></a>.
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.enabled_changed(boolean)"></A>
+  <nobr><code>B</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.Builder.html#enabled(boolean)" target="_top"><code>enabled</code></A>(<code>boolean</code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Change in return type from <code>Builder</code> to <code>B</code>.<br>
+ Method was locally defined, but is now inherited from <a href="../../../../reference/android/support/v17/leanback/widget/GuidedAction.BuilderBase.html#enabled(boolean)" target="_top"><code>GuidedAction.BuilderBase</code></a>.
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.hasNext_changed(boolean)"></A>
+  <nobr><code>B</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.Builder.html#hasNext(boolean)" target="_top"><code>hasNext</code></A>(<code>boolean</code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Change in return type from <code>Builder</code> to <code>B</code>.<br>
+ Method was locally defined, but is now inherited from <a href="../../../../reference/android/support/v17/leanback/widget/GuidedAction.BuilderBase.html#hasNext(boolean)" target="_top"><code>GuidedAction.BuilderBase</code></a>.
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.iconResourceId_changed(int, android.content.Context)"></A>
+  <nobr><code>B</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.Builder.html#iconResourceId(int, android.content.Context)" target="_top"><code>iconResourceId</code></A>(<code>int,</nobr> Context<nobr><nobr></code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Change in return type from <code>Builder</code> to <code>B</code>.<br>
+ Method was locally defined, but is now inherited from <a href="../../../../reference/android/support/v17/leanback/widget/GuidedAction.BuilderBase.html#iconResourceId(int, android.content.Context)" target="_top"><code>GuidedAction.BuilderBase</code></a>. <b>Now deprecated</b>.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.id_changed(long)"></A>
+  <nobr><code>B</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.Builder.html#id(long)" target="_top"><code>id</code></A>(<code>long</code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Change in return type from <code>Builder</code> to <code>B</code>.<br>
+ Method was locally defined, but is now inherited from <a href="../../../../reference/android/support/v17/leanback/widget/GuidedAction.BuilderBase.html#id(long)" target="_top"><code>GuidedAction.BuilderBase</code></a>.
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.infoOnly_changed(boolean)"></A>
+  <nobr><code>B</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.Builder.html#infoOnly(boolean)" target="_top"><code>infoOnly</code></A>(<code>boolean</code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Change in return type from <code>Builder</code> to <code>B</code>.<br>
+ Method was locally defined, but is now inherited from <a href="../../../../reference/android/support/v17/leanback/widget/GuidedAction.BuilderBase.html#infoOnly(boolean)" target="_top"><code>GuidedAction.BuilderBase</code></a>.
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.intent_changed(android.content.Intent)"></A>
+  <nobr><code>B</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.Builder.html#intent(android.content.Intent)" target="_top"><code>intent</code></A>(<code>Intent</code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Change in return type from <code>Builder</code> to <code>B</code>.<br>
+ Method was locally defined, but is now inherited from <a href="../../../../reference/android/support/v17/leanback/widget/GuidedAction.BuilderBase.html#intent(android.content.Intent)" target="_top"><code>GuidedAction.BuilderBase</code></a>.
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.Builder.multilineDescription_changed(boolean)"></A>
+  <nobr><code>B</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.Builder.html#multilineDescription(boolean)" target="_top"><code>multilineDescription</code></A>(<code>boolean</code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Change in return type from <code>Builder</code> to <code>B</code>.<br>
+ Method was locally defined, but is now inherited from <a href="../../../../reference/android/support/v17/leanback/widget/GuidedAction.BuilderBase.html#multilineDescription(boolean)" target="_top"><code>GuidedAction.BuilderBase</code></a>.
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedAction.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedAction.html
new file mode 100644
index 0000000..20165c7
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedAction.html
@@ -0,0 +1,321 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.GuidedAction
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html" target="_top"><font size="+2"><code>GuidedAction</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.ctor_added()"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#GuidedAction()" target="_top"><code>GuidedAction</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.getDescriptionEditInputType_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#getDescriptionEditInputType()" target="_top"><code>getDescriptionEditInputType</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.getDescriptionInputType_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#getDescriptionInputType()" target="_top"><code>getDescriptionInputType</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.getEditDescription_added()"></A>
+  <nobr><code>CharSequence</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#getEditDescription()" target="_top"><code>getEditDescription</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.getEditInputType_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#getEditInputType()" target="_top"><code>getEditInputType</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.getInputType_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#getInputType()" target="_top"><code>getInputType</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.getSubActions_added()"></A>
+  <nobr><code>List&lt;GuidedAction&gt;</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#getSubActions()" target="_top"><code>getSubActions</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.hasEditableActivatorView_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#hasEditableActivatorView()" target="_top"><code>hasEditableActivatorView</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.hasSubActions_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#hasSubActions()" target="_top"><code>hasSubActions</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.hasTextEditable_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#hasTextEditable()" target="_top"><code>hasTextEditable</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.isDescriptionEditable_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#isDescriptionEditable()" target="_top"><code>isDescriptionEditable</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.isFocusable_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#isFocusable()" target="_top"><code>isFocusable</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.setEditDescription_added(java.lang.CharSequence)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#setEditDescription(java.lang.CharSequence)" target="_top"><code>setEditDescription</code></A>(<code>CharSequence</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.setFocusable_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#setFocusable(boolean)" target="_top"><code>setFocusable</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.setIntent_added(android.content.Intent)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#setIntent(android.content.Intent)" target="_top"><code>setIntent</code></A>(<code>Intent</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.setSubActions_added(java.util.List<android.support.v17.leanback.widget.GuidedAction>)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#setSubActions(java.util.List<android.support.v17.leanback.widget.GuidedAction>)" target="_top"><code>setSubActions</code></A>(<code>List&lt;GuidedAction&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.NO_DRAWABLE"></A>
+  <code>int</code>&nbsp;NO_DRAWABLE
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.ACTION_ID_CANCEL"></A>
+  <nobr><code>long</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#ACTION_ID_CANCEL" target="_top"><code>ACTION_ID_CANCEL</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.ACTION_ID_CONTINUE"></A>
+  <nobr><code>long</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#ACTION_ID_CONTINUE" target="_top"><code>ACTION_ID_CONTINUE</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.ACTION_ID_CURRENT"></A>
+  <nobr><code>long</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#ACTION_ID_CURRENT" target="_top"><code>ACTION_ID_CURRENT</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.ACTION_ID_FINISH"></A>
+  <nobr><code>long</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#ACTION_ID_FINISH" target="_top"><code>ACTION_ID_FINISH</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.ACTION_ID_NEXT"></A>
+  <nobr><code>long</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#ACTION_ID_NEXT" target="_top"><code>ACTION_ID_NEXT</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.ACTION_ID_NO"></A>
+  <nobr><code>long</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#ACTION_ID_NO" target="_top"><code>ACTION_ID_NO</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.ACTION_ID_OK"></A>
+  <nobr><code>long</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#ACTION_ID_OK" target="_top"><code>ACTION_ID_OK</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.ACTION_ID_YES"></A>
+  <nobr><code>long</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#ACTION_ID_YES" target="_top"><code>ACTION_ID_YES</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedAction.CHECKBOX_CHECK_SET_ID"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedAction.html#CHECKBOX_CHECK_SET_ID" target="_top"><code>CHECKBOX_CHECK_SET_ID</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html
new file mode 100644
index 0000000..0849383
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.html
@@ -0,0 +1,209 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.ViewHolder.html" target="_top"><font size="+2"><code>GuidedActionsStylist.ViewHolder</code></font></A>
+</H2>
+<p><font xsize="+1">The superclass changed from <code>java.lang.Object</code> to <code>android.support.v7.widget.RecyclerView.ViewHolder</code>.<br></font>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.ctor_added(android.view.View, boolean)"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.ViewHolder.html#GuidedActionsStylist.ViewHolder(android.view.View, boolean)" target="_top"><code>GuidedActionsStylist.<br>ViewHolder</code></A>(<code>View,</nobr> boolean<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.getAction_added()"></A>
+  <nobr><code>GuidedAction</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.ViewHolder.html#getAction()" target="_top"><code>getAction</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.getEditableDescriptionView_added()"></A>
+  <nobr><code>EditText</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.ViewHolder.html#getEditableDescriptionView()" target="_top"><code>getEditableDescriptionView</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.getEditingView_added()"></A>
+  <nobr><code>View</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.ViewHolder.html#getEditingView()" target="_top"><code>getEditingView</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isInEditing_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.ViewHolder.html#isInEditing()" target="_top"><code>isInEditing</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isInEditingActivatorView_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.ViewHolder.html#isInEditingActivatorView()" target="_top"><code>isInEditingActivatorView</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isInEditingDescription_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.ViewHolder.html#isInEditingDescription()" target="_top"><code>isInEditingDescription</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isInEditingText_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.ViewHolder.html#isInEditingText()" target="_top"><code>isInEditingText</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isInEditingTitle_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.ViewHolder.html#isInEditingTitle()" target="_top"><code>isInEditingTitle</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.isSubAction_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.ViewHolder.html#isSubAction()" target="_top"><code>isSubAction</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder.view"></A>
+  <code>View</code>&nbsp;view
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.html
new file mode 100644
index 0000000..a8dff6f
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.GuidedActionsStylist.html
@@ -0,0 +1,320 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.GuidedActionsStylist
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html" target="_top"><font size="+2"><code>GuidedActionsStylist</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.getExpandedAction_added()"></A>
+  <nobr><code>GuidedAction</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#getExpandedAction()" target="_top"><code>getExpandedAction</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.getItemViewType_added(android.support.v17.leanback.widget.GuidedAction)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#getItemViewType(android.support.v17.leanback.widget.GuidedAction)" target="_top"><code>getItemViewType</code></A>(<code>GuidedAction</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.getSubActionsGridView_added()"></A>
+  <nobr><code>VerticalGridView</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#getSubActionsGridView()" target="_top"><code>getSubActionsGridView</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.isButtonActions_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#isButtonActions()" target="_top"><code>isButtonActions</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.isExpandTransitionSupported_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#isExpandTransitionSupported()" target="_top"><code>isExpandTransitionSupported</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.isInExpandTransition_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#isInExpandTransition()" target="_top"><code>isInExpandTransition</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.isSubActionsExpanded_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#isSubActionsExpanded()" target="_top"><code>isSubActionsExpanded</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onAnimateItemPressedCancelled_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#onAnimateItemPressedCancelled(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder)" target="_top"><code>onAnimateItemPressedCancelled</code></A>(<code>ViewHolder</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onBindActivatorView_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#onBindActivatorView(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)" target="_top"><code>onBindActivatorView</code></A>(<code>ViewHolder,</nobr> GuidedAction<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onBindCheckMarkView_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#onBindCheckMarkView(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)" target="_top"><code>onBindCheckMarkView</code></A>(<code>ViewHolder,</nobr> GuidedAction<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onBindChevronView_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#onBindChevronView(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)" target="_top"><code>onBindChevronView</code></A>(<code>ViewHolder,</nobr> GuidedAction<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onCreateViewHolder_added(android.view.ViewGroup, int)"></A>
+  <nobr><code>ViewHolder</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#onCreateViewHolder(android.view.ViewGroup, int)" target="_top"><code>onCreateViewHolder</code></A>(<code>ViewGroup,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onDestroyView_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#onDestroyView()" target="_top"><code>onDestroyView</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onEditingModeChange_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction, boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#onEditingModeChange(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction, boolean)" target="_top"><code>onEditingModeChange</code></A>(<code>ViewHolder,</nobr> GuidedAction<nobr>,</nobr> boolean<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onProvideItemLayoutId_added(int)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#onProvideItemLayoutId(int)" target="_top"><code>onProvideItemLayoutId</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onUpdateActivatorView_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#onUpdateActivatorView(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)" target="_top"><code>onUpdateActivatorView</code></A>(<code>ViewHolder,</nobr> GuidedAction<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.onUpdateExpandedViewHolder_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#onUpdateExpandedViewHolder(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder)" target="_top"><code>onUpdateExpandedViewHolder</code></A>(<code>ViewHolder</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.setAsButtonActions_added()"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#setAsButtonActions()" target="_top"><code>setAsButtonActions</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.setEditingMode_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction, boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#setEditingMode(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction, boolean)" target="_top"><code>setEditingMode</code></A>(<code>ViewHolder,</nobr> GuidedAction<nobr>,</nobr> boolean<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.setExpandedViewHolder_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#setExpandedViewHolder(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder)" target="_top"><code>setExpandedViewHolder</code></A>(<code>ViewHolder</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.setupImeOptions_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#setupImeOptions(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder, android.support.v17.leanback.widget.GuidedAction)" target="_top"><code>setupImeOptions</code></A>(<code>ViewHolder,</nobr> GuidedAction<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.startExpandedTransition_added(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#startExpandedTransition(android.support.v17.leanback.widget.GuidedActionsStylist.ViewHolder)" target="_top"><code>startExpandedTransition</code></A>(<code>ViewHolder</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.mActionsGridView"></A>
+  <code>VerticalGridView</code>&nbsp;mActionsGridView
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.mMainView"></A>
+  <code>View</code>&nbsp;mMainView
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.mSelectorView"></A>
+  <code>View</code>&nbsp;mSelectorView
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.VIEW_TYPE_DATE_PICKER"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#VIEW_TYPE_DATE_PICKER" target="_top"><code>VIEW_TYPE_DATE_PICKER</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.GuidedActionsStylist.VIEW_TYPE_DEFAULT"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/GuidedActionsStylist.html#VIEW_TYPE_DEFAULT" target="_top"><code>VIEW_TYPE_DEFAULT</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.ImageCardView.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.ImageCardView.html
new file mode 100644
index 0000000..f110a16
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.ImageCardView.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.ImageCardView
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/ImageCardView.html" target="_top"><font size="+2"><code>ImageCardView</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.ImageCardView.ctor_changed(android.content.Context, int)"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/widget/ImageCardView.html#ImageCardView(android.content.Context, int)" target="_top"><code>ImageCardView</code></A>(<code>Context,</nobr> int<nobr><nobr></code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+<b>Now deprecated</b>.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.html
new file mode 100644
index 0000000..2207a6d
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v17.leanback.widget.ListRowPresenter.ViewHolder
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v17.leanback.widget.<A HREF="../../../../reference/android/support/v17/leanback/widget/ListRowPresenter.ViewHolder.html" target="_top"><font size="+2"><code>ListRowPresenter.ViewHolder</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.getItemViewHolder_added(int)"></A>
+  <nobr><code>ViewHolder</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/ListRowPresenter.ViewHolder.html#getItemViewHolder(int)" target="_top"><code>getItemViewHolder</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.ListRowPresenter.ViewHolder.getSelectedPosition_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v17/leanback/widget/ListRowPresenter.ViewHolder.html#getSelectedPosition()" target="_top"><code>getSelectedPosition</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat.html
new file mode 100644
index 0000000..2479a86
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.accessibilityservice.<A HREF="../../../../reference/android/support/v4/accessibilityservice/AccessibilityServiceInfoCompat.html" target="_top"><font size="+2"><code>AccessibilityServiceInfoCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.AppOpsManagerCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.AppOpsManagerCompat.html
new file mode 100644
index 0000000..15ddb44
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.AppOpsManagerCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.app.AppOpsManagerCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.app.<A HREF="../../../../reference/android/support/v4/app/AppOpsManagerCompat.html" target="_top"><font size="+2"><code>AppOpsManagerCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.app.AppOpsManagerCompat.ctor_removed()"></A>
+  <nobr>AppOpsManagerCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.BundleCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.BundleCompat.html
new file mode 100644
index 0000000..63ecf79
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.BundleCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.app.BundleCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.app.<A HREF="../../../../reference/android/support/v4/app/BundleCompat.html" target="_top"><font size="+2"><code>BundleCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.app.BundleCompat.ctor_removed()"></A>
+  <nobr>BundleCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.Fragment.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.Fragment.html
new file mode 100644
index 0000000..d6c9e88
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.Fragment.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.app.Fragment
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.app.<A HREF="../../../../reference/android/support/v4/app/Fragment.html" target="_top"><font size="+2"><code>Fragment</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.app.Fragment.startActivity_added(android.content.Intent, android.os.Bundle)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/app/Fragment.html#startActivity(android.content.Intent, android.os.Bundle)" target="_top"><code>startActivity</code></A>(<code>Intent,</nobr> Bundle<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.app.Fragment.startActivityForResult_added(android.content.Intent, int, android.os.Bundle)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/app/Fragment.html#startActivityForResult(android.content.Intent, int, android.os.Bundle)" target="_top"><code>startActivityForResult</code></A>(<code>Intent,</nobr> int<nobr>,</nobr> Bundle<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.FragmentActivity.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.FragmentActivity.html
new file mode 100644
index 0000000..72bd4de
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.FragmentActivity.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.app.FragmentActivity
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.app.<A HREF="../../../../reference/android/support/v4/app/FragmentActivity.html" target="_top"><font size="+2"><code>FragmentActivity</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.app.FragmentActivity.startActivityFromFragment_added(android.support.v4.app.Fragment, android.content.Intent, int, android.os.Bundle)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/app/FragmentActivity.html#startActivityFromFragment(android.support.v4.app.Fragment, android.content.Intent, int, android.os.Bundle)" target="_top"><code>startActivityFromFragment</code></A>(<code>Fragment,</nobr> Intent<nobr>,</nobr> int<nobr>,</nobr> Bundle<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.FragmentHostCallback.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.FragmentHostCallback.html
new file mode 100644
index 0000000..fcb311f
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.FragmentHostCallback.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.app.FragmentHostCallback
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.app.<A HREF="../../../../reference/android/support/v4/app/FragmentHostCallback.html" target="_top"><font size="+2"><code>FragmentHostCallback</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.app.FragmentHostCallback.onStartActivityFromFragment_added(android.support.v4.app.Fragment, android.content.Intent, int, android.os.Bundle)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/app/FragmentHostCallback.html#onStartActivityFromFragment(android.support.v4.app.Fragment, android.content.Intent, int, android.os.Bundle)" target="_top"><code>onStartActivityFromFragment</code></A>(<code>Fragment,</nobr> Intent<nobr>,</nobr> int<nobr>,</nobr> Bundle<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.NavUtils.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.NavUtils.html
new file mode 100644
index 0000000..e4fb7fa
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.NavUtils.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.app.NavUtils
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.app.<A HREF="../../../../reference/android/support/v4/app/NavUtils.html" target="_top"><font size="+2"><code>NavUtils</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.NotificationManagerCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.NotificationManagerCompat.html
new file mode 100644
index 0000000..be48aac
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.NotificationManagerCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.app.NotificationManagerCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.app.<A HREF="../../../../reference/android/support/v4/app/NotificationManagerCompat.html" target="_top"><font size="+2"><code>NotificationManagerCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.RemoteInput.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.RemoteInput.html
new file mode 100644
index 0000000..a6a2a2d
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.RemoteInput.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.app.RemoteInput
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.app.<A HREF="../../../../reference/android/support/v4/app/RemoteInput.html" target="_top"><font size="+2"><code>RemoteInput</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.ServiceCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.ServiceCompat.html
new file mode 100644
index 0000000..c038e52
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.ServiceCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.app.ServiceCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.app.<A HREF="../../../../reference/android/support/v4/app/ServiceCompat.html" target="_top"><font size="+2"><code>ServiceCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.ShareCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.ShareCompat.html
new file mode 100644
index 0000000..8e9c945
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.ShareCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.app.ShareCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.app.<A HREF="../../../../reference/android/support/v4/app/ShareCompat.html" target="_top"><font size="+2"><code>ShareCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.app.ShareCompat.ctor_removed()"></A>
+  <nobr>ShareCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.TaskStackBuilder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.TaskStackBuilder.html
new file mode 100644
index 0000000..8a8a3c7
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.app.TaskStackBuilder.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.app.TaskStackBuilder
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.app.<A HREF="../../../../reference/android/support/v4/app/TaskStackBuilder.html" target="_top"><font size="+2"><code>TaskStackBuilder</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ContentResolverCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ContentResolverCompat.html
new file mode 100644
index 0000000..6abd31a
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ContentResolverCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.content.ContentResolverCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.content.<A HREF="../../../../reference/android/support/v4/content/ContentResolverCompat.html" target="_top"><font size="+2"><code>ContentResolverCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ContextCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ContextCompat.html
new file mode 100644
index 0000000..c0abad2
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ContextCompat.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.content.ContextCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.content.<A HREF="../../../../reference/android/support/v4/content/ContextCompat.html" target="_top"><font size="+2"><code>ContextCompat</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.content.ContextCompat.getCodeCacheDir_changed(android.content.Context)"></A>
+  <nobr><code>File</code>&nbsp;<A HREF="../../../../reference/android/support/v4/content/ContextCompat.html#getCodeCacheDir(android.content.Context)" target="_top"><code>getCodeCacheDir</code></A>(<code>Context</code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Change from non-static to static.<br> Change from final to non-final.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.IntentCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.IntentCompat.html
new file mode 100644
index 0000000..707b2de
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.IntentCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.content.IntentCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.content.<A HREF="../../../../reference/android/support/v4/content/IntentCompat.html" target="_top"><font size="+2"><code>IntentCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.LocalBroadcastManager.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.LocalBroadcastManager.html
new file mode 100644
index 0000000..fb0f8eb
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.LocalBroadcastManager.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.content.LocalBroadcastManager
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.content.<A HREF="../../../../reference/android/support/v4/content/LocalBroadcastManager.html" target="_top"><font size="+2"><code>LocalBroadcastManager</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ParallelExecutorCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ParallelExecutorCompat.html
new file mode 100644
index 0000000..135c65a
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.ParallelExecutorCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.content.ParallelExecutorCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.content.<A HREF="../../../../reference/android/support/v4/content/ParallelExecutorCompat.html" target="_top"><font size="+2"><code>ParallelExecutorCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.content.ParallelExecutorCompat.ctor_removed()"></A>
+  <nobr>ParallelExecutorCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.SharedPreferencesCompat.EditorCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.SharedPreferencesCompat.EditorCompat.html
new file mode 100644
index 0000000..2a46cc87
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.SharedPreferencesCompat.EditorCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.content.SharedPreferencesCompat.EditorCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.content.<A HREF="../../../../reference/android/support/v4/content/SharedPreferencesCompat.EditorCompat.html" target="_top"><font size="+2"><code>SharedPreferencesCompat.EditorCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.SharedPreferencesCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.SharedPreferencesCompat.html
new file mode 100644
index 0000000..99e7e84
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.SharedPreferencesCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.content.SharedPreferencesCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.content.<A HREF="../../../../reference/android/support/v4/content/SharedPreferencesCompat.html" target="_top"><font size="+2"><code>SharedPreferencesCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.content.SharedPreferencesCompat.ctor_removed()"></A>
+  <nobr>SharedPreferencesCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.pm.ActivityInfoCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.pm.ActivityInfoCompat.html
new file mode 100644
index 0000000..201f6e2
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.pm.ActivityInfoCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.content.pm.ActivityInfoCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.content.pm.<A HREF="../../../../reference/android/support/v4/content/pm/ActivityInfoCompat.html" target="_top"><font size="+2"><code>ActivityInfoCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.res.ResourcesCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.res.ResourcesCompat.html
new file mode 100644
index 0000000..497d73b
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.content.res.ResourcesCompat.html
@@ -0,0 +1,151 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.content.res.ResourcesCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.content.res.<A HREF="../../../../reference/android/support/v4/content/res/ResourcesCompat.html" target="_top"><font size="+2"><code>ResourcesCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.content.res.ResourcesCompat.ctor_removed()"></A>
+  <nobr>ResourcesCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.content.res.ResourcesCompat.getColor_changed(android.content.res.Resources, int, android.content.res.Resources.Theme)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v4/content/res/ResourcesCompat.html#getColor(android.content.res.Resources, int, android.content.res.Resources.Theme)" target="_top"><code>getColor</code></A>(<code>Resources,</nobr> int<nobr>,</nobr> Theme<nobr><nobr></code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Change from non-static to static.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.content.res.ResourcesCompat.getColorStateList_changed(android.content.res.Resources, int, android.content.res.Resources.Theme)"></A>
+  <nobr><code>ColorStateList</code>&nbsp;<A HREF="../../../../reference/android/support/v4/content/res/ResourcesCompat.html#getColorStateList(android.content.res.Resources, int, android.content.res.Resources.Theme)" target="_top"><code>getColorStateList</code></A>(<code>Resources,</nobr> int<nobr>,</nobr> Theme<nobr><nobr></code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+Change from non-static to static.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.database.DatabaseUtilsCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.database.DatabaseUtilsCompat.html
new file mode 100644
index 0000000..0feb04b
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.database.DatabaseUtilsCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.database.DatabaseUtilsCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.database.<A HREF="../../../../reference/android/support/v4/database/DatabaseUtilsCompat.html" target="_top"><font size="+2"><code>DatabaseUtilsCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.BitmapCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.BitmapCompat.html
new file mode 100644
index 0000000..3b50f8e
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.BitmapCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.graphics.BitmapCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.graphics.<A HREF="../../../../reference/android/support/v4/graphics/BitmapCompat.html" target="_top"><font size="+2"><code>BitmapCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.BitmapCompat.ctor_removed()"></A>
+  <nobr>BitmapCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.ColorUtils.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.ColorUtils.html
new file mode 100644
index 0000000..68c2dce
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.ColorUtils.html
@@ -0,0 +1,200 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.graphics.ColorUtils
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.graphics.<A HREF="../../../../reference/android/support/v4/graphics/ColorUtils.html" target="_top"><font size="+2"><code>ColorUtils</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.ColorUtils.LABToColor_added(double, double, double)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v4/graphics/ColorUtils.html#LABToColor(double, double, double)" target="_top"><code>LABToColor</code></A>(<code>double,</nobr> double<nobr>,</nobr> double<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.ColorUtils.LABToXYZ_added(double, double, double, double[])"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/graphics/ColorUtils.html#LABToXYZ(double, double, double, double[])" target="_top"><code>LABToXYZ</code></A>(<code>double,</nobr> double<nobr>,</nobr> double<nobr>,</nobr> double[]<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.ColorUtils.RGBToLAB_added(int, int, int, double[])"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/graphics/ColorUtils.html#RGBToLAB(int, int, int, double[])" target="_top"><code>RGBToLAB</code></A>(<code>int,</nobr> int<nobr>,</nobr> int<nobr>,</nobr> double[]<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.ColorUtils.RGBToXYZ_added(int, int, int, double[])"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/graphics/ColorUtils.html#RGBToXYZ(int, int, int, double[])" target="_top"><code>RGBToXYZ</code></A>(<code>int,</nobr> int<nobr>,</nobr> int<nobr>,</nobr> double[]<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.ColorUtils.XYZToColor_added(double, double, double)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v4/graphics/ColorUtils.html#XYZToColor(double, double, double)" target="_top"><code>XYZToColor</code></A>(<code>double,</nobr> double<nobr>,</nobr> double<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.ColorUtils.XYZToLAB_added(double, double, double, double[])"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/graphics/ColorUtils.html#XYZToLAB(double, double, double, double[])" target="_top"><code>XYZToLAB</code></A>(<code>double,</nobr> double<nobr>,</nobr> double<nobr>,</nobr> double[]<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.ColorUtils.blendARGB_added(int, int, float)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v4/graphics/ColorUtils.html#blendARGB(int, int, float)" target="_top"><code>blendARGB</code></A>(<code>int,</nobr> int<nobr>,</nobr> float<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.ColorUtils.blendHSL_added(float[], float[], float, float[])"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/graphics/ColorUtils.html#blendHSL(float[], float[], float, float[])" target="_top"><code>blendHSL</code></A>(<code>float[],</nobr> float[]<nobr>,</nobr> float<nobr>,</nobr> float[]<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.ColorUtils.blendLAB_added(double[], double[], double, double[])"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/graphics/ColorUtils.html#blendLAB(double[], double[], double, double[])" target="_top"><code>blendLAB</code></A>(<code>double[],</nobr> double[]<nobr>,</nobr> double<nobr>,</nobr> double[]<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.ColorUtils.colorToLAB_added(int, double[])"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/graphics/ColorUtils.html#colorToLAB(int, double[])" target="_top"><code>colorToLAB</code></A>(<code>int,</nobr> double[]<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.ColorUtils.colorToXYZ_added(int, double[])"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/graphics/ColorUtils.html#colorToXYZ(int, double[])" target="_top"><code>colorToXYZ</code></A>(<code>int,</nobr> double[]<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.ColorUtils.distanceEuclidean_added(double[], double[])"></A>
+  <nobr><code>double</code>&nbsp;<A HREF="../../../../reference/android/support/v4/graphics/ColorUtils.html#distanceEuclidean(double[], double[])" target="_top"><code>distanceEuclidean</code></A>(<code>double[],</nobr> double[]<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.drawable.DrawableCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.drawable.DrawableCompat.html
new file mode 100644
index 0000000..735909e
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.drawable.DrawableCompat.html
@@ -0,0 +1,166 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.graphics.drawable.DrawableCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.graphics.drawable.<A HREF="../../../../reference/android/support/v4/graphics/drawable/DrawableCompat.html" target="_top"><font size="+2"><code>DrawableCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.drawable.DrawableCompat.ctor_removed()"></A>
+  <nobr>DrawableCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.drawable.DrawableCompat.applyTheme_added(android.graphics.drawable.Drawable, android.content.res.Resources.Theme)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/graphics/drawable/DrawableCompat.html#applyTheme(android.graphics.drawable.Drawable, android.content.res.Resources.Theme)" target="_top"><code>applyTheme</code></A>(<code>Drawable,</nobr> Theme<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.drawable.DrawableCompat.canApplyTheme_added(android.graphics.drawable.Drawable)"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v4/graphics/drawable/DrawableCompat.html#canApplyTheme(android.graphics.drawable.Drawable)" target="_top"><code>canApplyTheme</code></A>(<code>Drawable</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.drawable.DrawableCompat.getAlpha_added(android.graphics.drawable.Drawable)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v4/graphics/drawable/DrawableCompat.html#getAlpha(android.graphics.drawable.Drawable)" target="_top"><code>getAlpha</code></A>(<code>Drawable</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.drawable.DrawableCompat.getColorFilter_added(android.graphics.drawable.Drawable)"></A>
+  <nobr><code>ColorFilter</code>&nbsp;<A HREF="../../../../reference/android/support/v4/graphics/drawable/DrawableCompat.html#getColorFilter(android.graphics.drawable.Drawable)" target="_top"><code>getColorFilter</code></A>(<code>Drawable</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.drawable.DrawableCompat.inflate_added(android.graphics.drawable.Drawable, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/graphics/drawable/DrawableCompat.html#inflate(android.graphics.drawable.Drawable, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme)" target="_top"><code>inflate</code></A>(<code>Drawable,</nobr> Resources<nobr>,</nobr> XmlPullParser<nobr>,</nobr> AttributeSet<nobr>,</nobr> Theme<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory.html
new file mode 100644
index 0000000..f0e4cbf
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.graphics.drawable.<A HREF="../../../../reference/android/support/v4/graphics/drawable/RoundedBitmapDrawableFactory.html" target="_top"><font size="+2"><code>RoundedBitmapDrawableFactory</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory.ctor_removed()"></A>
+  <nobr>RoundedBitmapDrawableFactory()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.hardware.fingerprint.FingerprintManagerCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.hardware.fingerprint.FingerprintManagerCompat.html
new file mode 100644
index 0000000..3c5e74d
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.hardware.fingerprint.FingerprintManagerCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.hardware.fingerprint.FingerprintManagerCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.hardware.fingerprint.<A HREF="../../../../reference/android/support/v4/hardware/fingerprint/FingerprintManagerCompat.html" target="_top"><font size="+2"><code>FingerprintManagerCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.net.ConnectivityManagerCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.net.ConnectivityManagerCompat.html
new file mode 100644
index 0000000..585fbe1
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.net.ConnectivityManagerCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.net.ConnectivityManagerCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.net.<A HREF="../../../../reference/android/support/v4/net/ConnectivityManagerCompat.html" target="_top"><font size="+2"><code>ConnectivityManagerCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.net.ConnectivityManagerCompat.ctor_removed()"></A>
+  <nobr>ConnectivityManagerCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.net.TrafficStatsCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.net.TrafficStatsCompat.html
new file mode 100644
index 0000000..d8d8d74
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.net.TrafficStatsCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.net.TrafficStatsCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.net.<A HREF="../../../../reference/android/support/v4/net/TrafficStatsCompat.html" target="_top"><font size="+2"><code>TrafficStatsCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.net.TrafficStatsCompat.ctor_removed()"></A>
+  <nobr>TrafficStatsCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.AsyncTaskCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.AsyncTaskCompat.html
new file mode 100644
index 0000000..0ea4b47
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.AsyncTaskCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.os.AsyncTaskCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.os.<A HREF="../../../../reference/android/support/v4/os/AsyncTaskCompat.html" target="_top"><font size="+2"><code>AsyncTaskCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.os.AsyncTaskCompat.ctor_removed()"></A>
+  <nobr>AsyncTaskCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.EnvironmentCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.EnvironmentCompat.html
new file mode 100644
index 0000000..4d625b1
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.EnvironmentCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.os.EnvironmentCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.os.<A HREF="../../../../reference/android/support/v4/os/EnvironmentCompat.html" target="_top"><font size="+2"><code>EnvironmentCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.os.EnvironmentCompat.ctor_removed()"></A>
+  <nobr>EnvironmentCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.ParcelableCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.ParcelableCompat.html
new file mode 100644
index 0000000..0192ed6
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.ParcelableCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.os.ParcelableCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.os.<A HREF="../../../../reference/android/support/v4/os/ParcelableCompat.html" target="_top"><font size="+2"><code>ParcelableCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.os.ParcelableCompat.ctor_removed()"></A>
+  <nobr>ParcelableCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.TraceCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.TraceCompat.html
new file mode 100644
index 0000000..3f490ba
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.os.TraceCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.os.TraceCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.os.<A HREF="../../../../reference/android/support/v4/os/TraceCompat.html" target="_top"><font size="+2"><code>TraceCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.os.TraceCompat.ctor_removed()"></A>
+  <nobr>TraceCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.ICUCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.ICUCompat.html
new file mode 100644
index 0000000..2b97440
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.ICUCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.text.ICUCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.text.<A HREF="../../../../reference/android/support/v4/text/ICUCompat.html" target="_top"><font size="+2"><code>ICUCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.text.ICUCompat.ctor_removed()"></A>
+  <nobr>ICUCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.TextDirectionHeuristicsCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.TextDirectionHeuristicsCompat.html
new file mode 100644
index 0000000..45557e1
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.TextDirectionHeuristicsCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.text.TextDirectionHeuristicsCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.text.<A HREF="../../../../reference/android/support/v4/text/TextDirectionHeuristicsCompat.html" target="_top"><font size="+2"><code>TextDirectionHeuristicsCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.text.TextDirectionHeuristicsCompat.ctor_removed()"></A>
+  <nobr>TextDirectionHeuristicsCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.TextUtilsCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.TextUtilsCompat.html
new file mode 100644
index 0000000..16d0835
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.text.TextUtilsCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.text.TextUtilsCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.text.<A HREF="../../../../reference/android/support/v4/text/TextUtilsCompat.html" target="_top"><font size="+2"><code>TextUtilsCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.text.TextUtilsCompat.ctor_removed()"></A>
+  <nobr>TextUtilsCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.GestureDetectorCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.GestureDetectorCompat.html
new file mode 100644
index 0000000..5c0463d
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.GestureDetectorCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.GestureDetectorCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/GestureDetectorCompat.html" target="_top"><font size="+2"><code>GestureDetectorCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.GravityCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.GravityCompat.html
new file mode 100644
index 0000000..9ee14c5
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.GravityCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.GravityCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/GravityCompat.html" target="_top"><font size="+2"><code>GravityCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.GravityCompat.ctor_removed()"></A>
+  <nobr>GravityCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.InputDeviceCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.InputDeviceCompat.html
new file mode 100644
index 0000000..4a7f385
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.InputDeviceCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.InputDeviceCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/InputDeviceCompat.html" target="_top"><font size="+2"><code>InputDeviceCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.InputDeviceCompat.ctor_removed()"></A>
+  <nobr>InputDeviceCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.KeyEventCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.KeyEventCompat.html
new file mode 100644
index 0000000..49526ab
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.KeyEventCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.KeyEventCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/KeyEventCompat.html" target="_top"><font size="+2"><code>KeyEventCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.KeyEventCompat.ctor_removed()"></A>
+  <nobr>KeyEventCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.LayoutInflaterCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.LayoutInflaterCompat.html
new file mode 100644
index 0000000..7329ff7
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.LayoutInflaterCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.LayoutInflaterCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/LayoutInflaterCompat.html" target="_top"><font size="+2"><code>LayoutInflaterCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.LayoutInflaterCompat.getFactory_added(android.view.LayoutInflater)"></A>
+  <nobr><code>LayoutInflaterFactory</code>&nbsp;<A HREF="../../../../reference/android/support/v4/view/LayoutInflaterCompat.html#getFactory(android.view.LayoutInflater)" target="_top"><code>getFactory</code></A>(<code>LayoutInflater</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MarginLayoutParamsCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MarginLayoutParamsCompat.html
new file mode 100644
index 0000000..86a7b57
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MarginLayoutParamsCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.MarginLayoutParamsCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/MarginLayoutParamsCompat.html" target="_top"><font size="+2"><code>MarginLayoutParamsCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.MarginLayoutParamsCompat.ctor_removed()"></A>
+  <nobr>MarginLayoutParamsCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MenuCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MenuCompat.html
new file mode 100644
index 0000000..22ead5ec
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MenuCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.MenuCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/MenuCompat.html" target="_top"><font size="+2"><code>MenuCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.MenuCompat.ctor_removed()"></A>
+  <nobr>MenuCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MenuItemCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MenuItemCompat.html
new file mode 100644
index 0000000..a321ac3
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MenuItemCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.MenuItemCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/MenuItemCompat.html" target="_top"><font size="+2"><code>MenuItemCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.MenuItemCompat.ctor_removed()"></A>
+  <nobr>MenuItemCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MotionEventCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MotionEventCompat.html
new file mode 100644
index 0000000..cb8895d
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.MotionEventCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.MotionEventCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/MotionEventCompat.html" target="_top"><font size="+2"><code>MotionEventCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.MotionEventCompat.ctor_removed()"></A>
+  <nobr>MotionEventCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ScaleGestureDetectorCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ScaleGestureDetectorCompat.html
new file mode 100644
index 0000000..23f8718
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ScaleGestureDetectorCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.ScaleGestureDetectorCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/ScaleGestureDetectorCompat.html" target="_top"><font size="+2"><code>ScaleGestureDetectorCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.VelocityTrackerCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.VelocityTrackerCompat.html
new file mode 100644
index 0000000..31a2b66
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.VelocityTrackerCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.VelocityTrackerCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/VelocityTrackerCompat.html" target="_top"><font size="+2"><code>VelocityTrackerCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.VelocityTrackerCompat.ctor_removed()"></A>
+  <nobr>VelocityTrackerCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewCompat.html
new file mode 100644
index 0000000..bbfebc1
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.ViewCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/ViewCompat.html" target="_top"><font size="+2"><code>ViewCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.ViewCompat.ctor_removed()"></A>
+  <nobr>ViewCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewConfigurationCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewConfigurationCompat.html
new file mode 100644
index 0000000..3deb282
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewConfigurationCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.ViewConfigurationCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/ViewConfigurationCompat.html" target="_top"><font size="+2"><code>ViewConfigurationCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.ViewConfigurationCompat.ctor_removed()"></A>
+  <nobr>ViewConfigurationCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewGroupCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewGroupCompat.html
new file mode 100644
index 0000000..973f25d
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewGroupCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.ViewGroupCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/ViewGroupCompat.html" target="_top"><font size="+2"><code>ViewGroupCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewParentCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewParentCompat.html
new file mode 100644
index 0000000..0ff6977
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewParentCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.ViewParentCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/ViewParentCompat.html" target="_top"><font size="+2"><code>ViewParentCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewPropertyAnimatorCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewPropertyAnimatorCompat.html
new file mode 100644
index 0000000..dcb75fc
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.ViewPropertyAnimatorCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.ViewPropertyAnimatorCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/ViewPropertyAnimatorCompat.html" target="_top"><font size="+2"><code>ViewPropertyAnimatorCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.WindowCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.WindowCompat.html
new file mode 100644
index 0000000..a9711fa
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.WindowCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.WindowCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.<A HREF="../../../../reference/android/support/v4/view/WindowCompat.html" target="_top"><font size="+2"><code>WindowCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.WindowCompat.ctor_removed()"></A>
+  <nobr>WindowCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.accessibility.AccessibilityEventCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.accessibility.AccessibilityEventCompat.html
new file mode 100644
index 0000000..e2045d7
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.accessibility.AccessibilityEventCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.accessibility.AccessibilityEventCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.accessibility.<A HREF="../../../../reference/android/support/v4/view/accessibility/AccessibilityEventCompat.html" target="_top"><font size="+2"><code>AccessibilityEventCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.accessibility.AccessibilityManagerCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.accessibility.AccessibilityManagerCompat.html
new file mode 100644
index 0000000..d74f936
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.accessibility.AccessibilityManagerCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.accessibility.AccessibilityManagerCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.accessibility.<A HREF="../../../../reference/android/support/v4/view/accessibility/AccessibilityManagerCompat.html" target="_top"><font size="+2"><code>AccessibilityManagerCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Constructors" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Constructors</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.accessibility.AccessibilityManagerCompat.ctor_removed()"></A>
+  <nobr>AccessibilityManagerCompat()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.animation.PathInterpolatorCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.animation.PathInterpolatorCompat.html
new file mode 100644
index 0000000..6701f77
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.view.animation.PathInterpolatorCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.view.animation.PathInterpolatorCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.view.animation.<A HREF="../../../../reference/android/support/v4/view/animation/PathInterpolatorCompat.html" target="_top"><font size="+2"><code>PathInterpolatorCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.DrawerLayout.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.DrawerLayout.html
new file mode 100644
index 0000000..c2e7c83
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.DrawerLayout.html
@@ -0,0 +1,162 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.widget.DrawerLayout
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.widget.<A HREF="../../../../reference/android/support/v4/widget/DrawerLayout.html" target="_top"><font size="+2"><code>DrawerLayout</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.widget.DrawerLayout.addDrawerListener_added(android.support.v4.widget.DrawerLayout.DrawerListener)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/widget/DrawerLayout.html#addDrawerListener(android.support.v4.widget.DrawerLayout.DrawerListener)" target="_top"><code>addDrawerListener</code></A>(<code>DrawerListener</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.widget.DrawerLayout.removeDrawerListener_added(android.support.v4.widget.DrawerLayout.DrawerListener)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/widget/DrawerLayout.html#removeDrawerListener(android.support.v4.widget.DrawerLayout.DrawerListener)" target="_top"><code>removeDrawerListener</code></A>(<code>DrawerListener</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.widget.DrawerLayout.setDrawerListener_changed(android.support.v4.widget.DrawerLayout.DrawerListener)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/widget/DrawerLayout.html#setDrawerListener(android.support.v4.widget.DrawerLayout.DrawerListener)" target="_top"><code>setDrawerListener</code></A>(<code>DrawerListener</code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+<b>Now deprecated</b>.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.widget.DrawerLayout.LOCK_MODE_UNDEFINED"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v4/widget/DrawerLayout.html#LOCK_MODE_UNDEFINED" target="_top"><code>LOCK_MODE_UNDEFINED</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.EdgeEffectCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.EdgeEffectCompat.html
new file mode 100644
index 0000000..6993bec
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.EdgeEffectCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.widget.EdgeEffectCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.widget.<A HREF="../../../../reference/android/support/v4/widget/EdgeEffectCompat.html" target="_top"><font size="+2"><code>EdgeEffectCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.ListPopupWindowCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.ListPopupWindowCompat.html
new file mode 100644
index 0000000..fc5ed8d
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.ListPopupWindowCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.widget.ListPopupWindowCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.widget.<A HREF="../../../../reference/android/support/v4/widget/ListPopupWindowCompat.html" target="_top"><font size="+2"><code>ListPopupWindowCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.PopupMenuCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.PopupMenuCompat.html
new file mode 100644
index 0000000..1d55628
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.PopupMenuCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.widget.PopupMenuCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.widget.<A HREF="../../../../reference/android/support/v4/widget/PopupMenuCompat.html" target="_top"><font size="+2"><code>PopupMenuCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.PopupWindowCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.PopupWindowCompat.html
new file mode 100644
index 0000000..215118c
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.PopupWindowCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.widget.PopupWindowCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.widget.<A HREF="../../../../reference/android/support/v4/widget/PopupWindowCompat.html" target="_top"><font size="+2"><code>PopupWindowCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.ScrollerCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.ScrollerCompat.html
new file mode 100644
index 0000000..ea76c92
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.ScrollerCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.widget.ScrollerCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.widget.<A HREF="../../../../reference/android/support/v4/widget/ScrollerCompat.html" target="_top"><font size="+2"><code>ScrollerCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.SearchViewCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.SearchViewCompat.html
new file mode 100644
index 0000000..ce5abd3
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.SearchViewCompat.html
@@ -0,0 +1,108 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.widget.SearchViewCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.widget.<A HREF="../../../../reference/android/support/v4/widget/SearchViewCompat.html" target="_top"><font size="+2"><code>SearchViewCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.TextViewCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.TextViewCompat.html
new file mode 100644
index 0000000..e2078f4
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v4.widget.TextViewCompat.html
@@ -0,0 +1,123 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v4.widget.TextViewCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v4.widget.<A HREF="../../../../reference/android/support/v4/widget/TextViewCompat.html" target="_top"><font size="+2"><code>TextViewCompat</code></font></A>
+</H2>
+<p>Change from non-final to final.<br>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.widget.TextViewCompat.setTextAppearance_added(android.widget.TextView, int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v4/widget/TextViewCompat.html#setTextAppearance(android.widget.TextView, int)" target="_top"><code>setTextAppearance</code></A>(<code>TextView,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.app.AppCompatDelegate.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.app.AppCompatDelegate.html
new file mode 100644
index 0000000..6fd286c
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.app.AppCompatDelegate.html
@@ -0,0 +1,186 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.app.AppCompatDelegate
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.app.<A HREF="../../../../reference/android/support/v7/app/AppCompatDelegate.html" target="_top"><font size="+2"><code>AppCompatDelegate</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.app.AppCompatDelegate.applyDayNight_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v7/app/AppCompatDelegate.html#applyDayNight()" target="_top"><code>applyDayNight</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.app.AppCompatDelegate.getDefaultNightMode_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/app/AppCompatDelegate.html#getDefaultNightMode()" target="_top"><code>getDefaultNightMode</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.app.AppCompatDelegate.onSaveInstanceState_added(android.os.Bundle)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v7/app/AppCompatDelegate.html#onSaveInstanceState(android.os.Bundle)" target="_top"><code>onSaveInstanceState</code></A>(<code>Bundle</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.app.AppCompatDelegate.setDefaultNightMode_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v7/app/AppCompatDelegate.html#setDefaultNightMode(int)" target="_top"><code>setDefaultNightMode</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.app.AppCompatDelegate.setLocalNightMode_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v7/app/AppCompatDelegate.html#setLocalNightMode(int)" target="_top"><code>setLocalNightMode</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.app.AppCompatDelegate.MODE_NIGHT_AUTO"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/app/AppCompatDelegate.html#MODE_NIGHT_AUTO" target="_top"><code>MODE_NIGHT_AUTO</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.app.AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/app/AppCompatDelegate.html#MODE_NIGHT_FOLLOW_SYSTEM" target="_top"><code>MODE_NIGHT_FOLLOW_SYSTEM</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.app.AppCompatDelegate.MODE_NIGHT_NO"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/app/AppCompatDelegate.html#MODE_NIGHT_NO" target="_top"><code>MODE_NIGHT_NO</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.app.AppCompatDelegate.MODE_NIGHT_YES"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/app/AppCompatDelegate.html#MODE_NIGHT_YES" target="_top"><code>MODE_NIGHT_YES</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.attr.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.attr.html
new file mode 100644
index 0000000..c399a8a
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.attr.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.appcompat.R.attr
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.appcompat.<A HREF="../../../../reference/android/support/v7/appcompat/R.attr.html" target="_top"><font size="+2"><code>R.attr</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.attr.ratingBarStyleIndicator"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.attr.html#ratingBarStyleIndicator" target="_top"><code>ratingBarStyleIndicator</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.attr.ratingBarStyleSmall"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.attr.html#ratingBarStyleSmall" target="_top"><code>ratingBarStyleSmall</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.attr.srcCompat"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.attr.html#srcCompat" target="_top"><code>srcCompat</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.drawable.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.drawable.html
new file mode 100644
index 0000000..ec1ee38
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.drawable.html
@@ -0,0 +1,361 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.appcompat.R.drawable
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.appcompat.<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html" target="_top"><font size="+2"><code>R.drawable</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_btn_check_to_on_mtrl_000"></A>
+  <code>int</code>&nbsp;abc_btn_check_to_on_mtrl_000
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_btn_check_to_on_mtrl_015"></A>
+  <code>int</code>&nbsp;abc_btn_check_to_on_mtrl_015
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_btn_radio_to_on_mtrl_000"></A>
+  <code>int</code>&nbsp;abc_btn_radio_to_on_mtrl_000
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_btn_radio_to_on_mtrl_015"></A>
+  <code>int</code>&nbsp;abc_btn_radio_to_on_mtrl_015
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_ab_back_mtrl_am_alpha"></A>
+  <code>int</code>&nbsp;abc_ic_ab_back_mtrl_am_alpha
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_clear_mtrl_alpha"></A>
+  <code>int</code>&nbsp;abc_ic_clear_mtrl_alpha
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_go_search_api_mtrl_alpha"></A>
+  <code>int</code>&nbsp;abc_ic_go_search_api_mtrl_alpha
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_menu_copy_mtrl_am_alpha"></A>
+  <code>int</code>&nbsp;abc_ic_menu_copy_mtrl_am_alpha
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_menu_cut_mtrl_alpha"></A>
+  <code>int</code>&nbsp;abc_ic_menu_cut_mtrl_alpha
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_menu_moreoverflow_mtrl_alpha"></A>
+  <code>int</code>&nbsp;abc_ic_menu_moreoverflow_mtrl_alpha
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_menu_paste_mtrl_am_alpha"></A>
+  <code>int</code>&nbsp;abc_ic_menu_paste_mtrl_am_alpha
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_menu_selectall_mtrl_alpha"></A>
+  <code>int</code>&nbsp;abc_ic_menu_selectall_mtrl_alpha
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_menu_share_mtrl_alpha"></A>
+  <code>int</code>&nbsp;abc_ic_menu_share_mtrl_alpha
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_voice_search_api_mtrl_alpha"></A>
+  <code>int</code>&nbsp;abc_ic_voice_search_api_mtrl_alpha
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_btn_checkbox_checked_mtrl"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_btn_checkbox_checked_mtrl" target="_top"><code>abc_btn_checkbox_checked_mtrl</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_btn_checkbox_unchecked_mtrl"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_btn_checkbox_unchecked_mtrl" target="_top"><code>abc_btn_checkbox_unchecked_mtrl</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_btn_radio_off_mtrl"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_btn_radio_off_mtrl" target="_top"><code>abc_btn_radio_off_mtrl</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_btn_radio_on_mtrl"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_btn_radio_on_mtrl" target="_top"><code>abc_btn_radio_on_mtrl</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_ab_back_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_ic_ab_back_material" target="_top"><code>abc_ic_ab_back_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_clear_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_ic_clear_material" target="_top"><code>abc_ic_clear_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_go_search_api_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_ic_go_search_api_material" target="_top"><code>abc_ic_go_search_api_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_menu_copy_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_ic_menu_copy_material" target="_top"><code>abc_ic_menu_copy_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_menu_cut_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_ic_menu_cut_material" target="_top"><code>abc_ic_menu_cut_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_menu_overflow_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_ic_menu_overflow_material" target="_top"><code>abc_ic_menu_overflow_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_menu_paste_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_ic_menu_paste_material" target="_top"><code>abc_ic_menu_paste_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_menu_selectall_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_ic_menu_selectall_material" target="_top"><code>abc_ic_menu_selectall_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_menu_share_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_ic_menu_share_material" target="_top"><code>abc_ic_menu_share_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_star_black_16dp"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_ic_star_black_16dp" target="_top"><code>abc_ic_star_black_16dp</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_star_black_36dp"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_ic_star_black_36dp" target="_top"><code>abc_ic_star_black_36dp</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_star_half_black_16dp"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_ic_star_half_black_16dp" target="_top"><code>abc_ic_star_half_black_16dp</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_star_half_black_36dp"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_ic_star_half_black_36dp" target="_top"><code>abc_ic_star_half_black_36dp</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ic_voice_search_api_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_ic_voice_search_api_material" target="_top"><code>abc_ic_voice_search_api_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ratingbar_indicator_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_ratingbar_indicator_material" target="_top"><code>abc_ratingbar_indicator_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.drawable.abc_ratingbar_small_material"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.drawable.html#abc_ratingbar_small_material" target="_top"><code>abc_ratingbar_small_material</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.style.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.style.html
new file mode 100644
index 0000000..478d333
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.style.html
@@ -0,0 +1,192 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.appcompat.R.style
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.appcompat.<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html" target="_top"><font size="+2"><code>R.style</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.Base_Widget_AppCompat_RatingBar_Indicator"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html#Base_Widget_AppCompat_RatingBar_Indicator" target="_top"><code>Base_Widget_AppCompat_RatingBar_Indicator</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.Base_Widget_AppCompat_RatingBar_Small"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html#Base_Widget_AppCompat_RatingBar_Small" target="_top"><code>Base_Widget_AppCompat_RatingBar_Small</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html#Theme_AppCompat_DayNight" target="_top"><code>Theme_AppCompat_DayNight</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_DarkActionBar"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html#Theme_AppCompat_DayNight_DarkActionBar" target="_top"><code>Theme_AppCompat_DayNight_DarkActionBar</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_Dialog"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html#Theme_AppCompat_DayNight_Dialog" target="_top"><code>Theme_AppCompat_DayNight_Dialog</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_DialogWhenLarge"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html#Theme_AppCompat_DayNight_DialogWhenLarge" target="_top"><code>Theme_AppCompat_DayNight_DialogWhenLarge</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_Dialog_Alert"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html#Theme_AppCompat_DayNight_Dialog_Alert" target="_top"><code>Theme_AppCompat_DayNight_Dialog_Alert</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_Dialog_MinWidth"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html#Theme_AppCompat_DayNight_Dialog_MinWidth" target="_top"><code>Theme_AppCompat_DayNight_Dialog_MinWidth</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.Theme_AppCompat_DayNight_NoActionBar"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html#Theme_AppCompat_DayNight_NoActionBar" target="_top"><code>Theme_AppCompat_DayNight_NoActionBar</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.Widget_AppCompat_RatingBar_Indicator"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html#Widget_AppCompat_RatingBar_Indicator" target="_top"><code>Widget_AppCompat_RatingBar_Indicator</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.style.Widget_AppCompat_RatingBar_Small"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.style.html#Widget_AppCompat_RatingBar_Small" target="_top"><code>Widget_AppCompat_RatingBar_Small</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.styleable.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.styleable.html
new file mode 100644
index 0000000..498ec51
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.styleable.html
@@ -0,0 +1,1719 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.appcompat.R.styleable
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.appcompat.<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html" target="_top"><font size="+2"><code>R.styleable</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme"></A>
+  <code>int[]</code>&nbsp;Theme
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionBarDivider"></A>
+  <code>int</code>&nbsp;Theme_actionBarDivider
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionBarItemBackground"></A>
+  <code>int</code>&nbsp;Theme_actionBarItemBackground
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionBarPopupTheme"></A>
+  <code>int</code>&nbsp;Theme_actionBarPopupTheme
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionBarSize"></A>
+  <code>int</code>&nbsp;Theme_actionBarSize
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionBarSplitStyle"></A>
+  <code>int</code>&nbsp;Theme_actionBarSplitStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionBarStyle"></A>
+  <code>int</code>&nbsp;Theme_actionBarStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionBarTabBarStyle"></A>
+  <code>int</code>&nbsp;Theme_actionBarTabBarStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionBarTabStyle"></A>
+  <code>int</code>&nbsp;Theme_actionBarTabStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionBarTabTextStyle"></A>
+  <code>int</code>&nbsp;Theme_actionBarTabTextStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionBarTheme"></A>
+  <code>int</code>&nbsp;Theme_actionBarTheme
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionBarWidgetTheme"></A>
+  <code>int</code>&nbsp;Theme_actionBarWidgetTheme
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionButtonStyle"></A>
+  <code>int</code>&nbsp;Theme_actionButtonStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionDropDownStyle"></A>
+  <code>int</code>&nbsp;Theme_actionDropDownStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionMenuTextAppearance"></A>
+  <code>int</code>&nbsp;Theme_actionMenuTextAppearance
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionMenuTextColor"></A>
+  <code>int</code>&nbsp;Theme_actionMenuTextColor
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionModeBackground"></A>
+  <code>int</code>&nbsp;Theme_actionModeBackground
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionModeCloseButtonStyle"></A>
+  <code>int</code>&nbsp;Theme_actionModeCloseButtonStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionModeCloseDrawable"></A>
+  <code>int</code>&nbsp;Theme_actionModeCloseDrawable
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionModeCopyDrawable"></A>
+  <code>int</code>&nbsp;Theme_actionModeCopyDrawable
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionModeCutDrawable"></A>
+  <code>int</code>&nbsp;Theme_actionModeCutDrawable
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionModeFindDrawable"></A>
+  <code>int</code>&nbsp;Theme_actionModeFindDrawable
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionModePasteDrawable"></A>
+  <code>int</code>&nbsp;Theme_actionModePasteDrawable
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionModePopupWindowStyle"></A>
+  <code>int</code>&nbsp;Theme_actionModePopupWindowStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionModeSelectAllDrawable"></A>
+  <code>int</code>&nbsp;Theme_actionModeSelectAllDrawable
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionModeShareDrawable"></A>
+  <code>int</code>&nbsp;Theme_actionModeShareDrawable
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionModeSplitBackground"></A>
+  <code>int</code>&nbsp;Theme_actionModeSplitBackground
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionModeStyle"></A>
+  <code>int</code>&nbsp;Theme_actionModeStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionModeWebSearchDrawable"></A>
+  <code>int</code>&nbsp;Theme_actionModeWebSearchDrawable
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionOverflowButtonStyle"></A>
+  <code>int</code>&nbsp;Theme_actionOverflowButtonStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_actionOverflowMenuStyle"></A>
+  <code>int</code>&nbsp;Theme_actionOverflowMenuStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_activityChooserViewStyle"></A>
+  <code>int</code>&nbsp;Theme_activityChooserViewStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_alertDialogButtonGroupStyle"></A>
+  <code>int</code>&nbsp;Theme_alertDialogButtonGroupStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_alertDialogCenterButtons"></A>
+  <code>int</code>&nbsp;Theme_alertDialogCenterButtons
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_alertDialogStyle"></A>
+  <code>int</code>&nbsp;Theme_alertDialogStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_alertDialogTheme"></A>
+  <code>int</code>&nbsp;Theme_alertDialogTheme
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_android_windowAnimationStyle"></A>
+  <code>int</code>&nbsp;Theme_android_windowAnimationStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_android_windowIsFloating"></A>
+  <code>int</code>&nbsp;Theme_android_windowIsFloating
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_autoCompleteTextViewStyle"></A>
+  <code>int</code>&nbsp;Theme_autoCompleteTextViewStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_borderlessButtonStyle"></A>
+  <code>int</code>&nbsp;Theme_borderlessButtonStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_buttonBarButtonStyle"></A>
+  <code>int</code>&nbsp;Theme_buttonBarButtonStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_buttonBarNegativeButtonStyle"></A>
+  <code>int</code>&nbsp;Theme_buttonBarNegativeButtonStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_buttonBarNeutralButtonStyle"></A>
+  <code>int</code>&nbsp;Theme_buttonBarNeutralButtonStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_buttonBarPositiveButtonStyle"></A>
+  <code>int</code>&nbsp;Theme_buttonBarPositiveButtonStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_buttonBarStyle"></A>
+  <code>int</code>&nbsp;Theme_buttonBarStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_buttonStyle"></A>
+  <code>int</code>&nbsp;Theme_buttonStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_buttonStyleSmall"></A>
+  <code>int</code>&nbsp;Theme_buttonStyleSmall
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_checkboxStyle"></A>
+  <code>int</code>&nbsp;Theme_checkboxStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_checkedTextViewStyle"></A>
+  <code>int</code>&nbsp;Theme_checkedTextViewStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_colorAccent"></A>
+  <code>int</code>&nbsp;Theme_colorAccent
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_colorButtonNormal"></A>
+  <code>int</code>&nbsp;Theme_colorButtonNormal
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_colorControlActivated"></A>
+  <code>int</code>&nbsp;Theme_colorControlActivated
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_colorControlHighlight"></A>
+  <code>int</code>&nbsp;Theme_colorControlHighlight
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_colorControlNormal"></A>
+  <code>int</code>&nbsp;Theme_colorControlNormal
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_colorPrimary"></A>
+  <code>int</code>&nbsp;Theme_colorPrimary
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_colorPrimaryDark"></A>
+  <code>int</code>&nbsp;Theme_colorPrimaryDark
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_colorSwitchThumbNormal"></A>
+  <code>int</code>&nbsp;Theme_colorSwitchThumbNormal
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_controlBackground"></A>
+  <code>int</code>&nbsp;Theme_controlBackground
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_dialogPreferredPadding"></A>
+  <code>int</code>&nbsp;Theme_dialogPreferredPadding
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_dialogTheme"></A>
+  <code>int</code>&nbsp;Theme_dialogTheme
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_dividerHorizontal"></A>
+  <code>int</code>&nbsp;Theme_dividerHorizontal
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_dividerVertical"></A>
+  <code>int</code>&nbsp;Theme_dividerVertical
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_dropDownListViewStyle"></A>
+  <code>int</code>&nbsp;Theme_dropDownListViewStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_dropdownListPreferredItemHeight"></A>
+  <code>int</code>&nbsp;Theme_dropdownListPreferredItemHeight
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_editTextBackground"></A>
+  <code>int</code>&nbsp;Theme_editTextBackground
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_editTextColor"></A>
+  <code>int</code>&nbsp;Theme_editTextColor
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_editTextStyle"></A>
+  <code>int</code>&nbsp;Theme_editTextStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_homeAsUpIndicator"></A>
+  <code>int</code>&nbsp;Theme_homeAsUpIndicator
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_imageButtonStyle"></A>
+  <code>int</code>&nbsp;Theme_imageButtonStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_listChoiceBackgroundIndicator"></A>
+  <code>int</code>&nbsp;Theme_listChoiceBackgroundIndicator
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_listDividerAlertDialog"></A>
+  <code>int</code>&nbsp;Theme_listDividerAlertDialog
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_listPopupWindowStyle"></A>
+  <code>int</code>&nbsp;Theme_listPopupWindowStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_listPreferredItemHeight"></A>
+  <code>int</code>&nbsp;Theme_listPreferredItemHeight
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_listPreferredItemHeightLarge"></A>
+  <code>int</code>&nbsp;Theme_listPreferredItemHeightLarge
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_listPreferredItemHeightSmall"></A>
+  <code>int</code>&nbsp;Theme_listPreferredItemHeightSmall
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_listPreferredItemPaddingLeft"></A>
+  <code>int</code>&nbsp;Theme_listPreferredItemPaddingLeft
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_listPreferredItemPaddingRight"></A>
+  <code>int</code>&nbsp;Theme_listPreferredItemPaddingRight
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_panelBackground"></A>
+  <code>int</code>&nbsp;Theme_panelBackground
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_panelMenuListTheme"></A>
+  <code>int</code>&nbsp;Theme_panelMenuListTheme
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_panelMenuListWidth"></A>
+  <code>int</code>&nbsp;Theme_panelMenuListWidth
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_popupMenuStyle"></A>
+  <code>int</code>&nbsp;Theme_popupMenuStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_popupWindowStyle"></A>
+  <code>int</code>&nbsp;Theme_popupWindowStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_radioButtonStyle"></A>
+  <code>int</code>&nbsp;Theme_radioButtonStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_ratingBarStyle"></A>
+  <code>int</code>&nbsp;Theme_ratingBarStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_searchViewStyle"></A>
+  <code>int</code>&nbsp;Theme_searchViewStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_seekBarStyle"></A>
+  <code>int</code>&nbsp;Theme_seekBarStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_selectableItemBackground"></A>
+  <code>int</code>&nbsp;Theme_selectableItemBackground
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_selectableItemBackgroundBorderless"></A>
+  <code>int</code>&nbsp;Theme_selectableItemBackgroundBorderless
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_spinnerDropDownItemStyle"></A>
+  <code>int</code>&nbsp;Theme_spinnerDropDownItemStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_spinnerStyle"></A>
+  <code>int</code>&nbsp;Theme_spinnerStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_switchStyle"></A>
+  <code>int</code>&nbsp;Theme_switchStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_textAppearanceLargePopupMenu"></A>
+  <code>int</code>&nbsp;Theme_textAppearanceLargePopupMenu
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_textAppearanceListItem"></A>
+  <code>int</code>&nbsp;Theme_textAppearanceListItem
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_textAppearanceListItemSmall"></A>
+  <code>int</code>&nbsp;Theme_textAppearanceListItemSmall
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_textAppearanceSearchResultSubtitle"></A>
+  <code>int</code>&nbsp;Theme_textAppearanceSearchResultSubtitle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_textAppearanceSearchResultTitle"></A>
+  <code>int</code>&nbsp;Theme_textAppearanceSearchResultTitle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_textAppearanceSmallPopupMenu"></A>
+  <code>int</code>&nbsp;Theme_textAppearanceSmallPopupMenu
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_textColorAlertDialogListItem"></A>
+  <code>int</code>&nbsp;Theme_textColorAlertDialogListItem
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_textColorSearchUrl"></A>
+  <code>int</code>&nbsp;Theme_textColorSearchUrl
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_toolbarNavigationButtonStyle"></A>
+  <code>int</code>&nbsp;Theme_toolbarNavigationButtonStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_toolbarStyle"></A>
+  <code>int</code>&nbsp;Theme_toolbarStyle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_windowActionBar"></A>
+  <code>int</code>&nbsp;Theme_windowActionBar
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_windowActionBarOverlay"></A>
+  <code>int</code>&nbsp;Theme_windowActionBarOverlay
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_windowActionModeOverlay"></A>
+  <code>int</code>&nbsp;Theme_windowActionModeOverlay
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_windowFixedHeightMajor"></A>
+  <code>int</code>&nbsp;Theme_windowFixedHeightMajor
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_windowFixedHeightMinor"></A>
+  <code>int</code>&nbsp;Theme_windowFixedHeightMinor
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_windowFixedWidthMajor"></A>
+  <code>int</code>&nbsp;Theme_windowFixedWidthMajor
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_windowFixedWidthMinor"></A>
+  <code>int</code>&nbsp;Theme_windowFixedWidthMinor
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_windowMinWidthMajor"></A>
+  <code>int</code>&nbsp;Theme_windowMinWidthMajor
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_windowMinWidthMinor"></A>
+  <code>int</code>&nbsp;Theme_windowMinWidthMinor
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Theme_windowNoTitle"></A>
+  <code>int</code>&nbsp;Theme_windowNoTitle
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatImageView"></A>
+  <nobr><code>int[]</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatImageView" target="_top"><code>AppCompatImageView</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatImageView_android_src"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatImageView_android_src" target="_top"><code>AppCompatImageView_android_src</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatImageView_srcCompat"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatImageView_srcCompat" target="_top"><code>AppCompatImageView_srcCompat</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme"></A>
+  <nobr><code>int[]</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme" target="_top"><code>AppCompatTheme</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarDivider"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionBarDivider" target="_top"><code>AppCompatTheme_actionBarDivider</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarItemBackground"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionBarItemBackground" target="_top"><code>AppCompatTheme_actionBarItemBackground</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarPopupTheme"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionBarPopupTheme" target="_top"><code>AppCompatTheme_actionBarPopupTheme</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarSize"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionBarSize" target="_top"><code>AppCompatTheme_actionBarSize</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarSplitStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionBarSplitStyle" target="_top"><code>AppCompatTheme_actionBarSplitStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionBarStyle" target="_top"><code>AppCompatTheme_actionBarStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarTabBarStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionBarTabBarStyle" target="_top"><code>AppCompatTheme_actionBarTabBarStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarTabStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionBarTabStyle" target="_top"><code>AppCompatTheme_actionBarTabStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarTabTextStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionBarTabTextStyle" target="_top"><code>AppCompatTheme_actionBarTabTextStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarTheme"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionBarTheme" target="_top"><code>AppCompatTheme_actionBarTheme</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionBarWidgetTheme"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionBarWidgetTheme" target="_top"><code>AppCompatTheme_actionBarWidgetTheme</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionButtonStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionButtonStyle" target="_top"><code>AppCompatTheme_actionButtonStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionDropDownStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionDropDownStyle" target="_top"><code>AppCompatTheme_actionDropDownStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionMenuTextAppearance"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionMenuTextAppearance" target="_top"><code>AppCompatTheme_actionMenuTextAppearance</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionMenuTextColor"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionMenuTextColor" target="_top"><code>AppCompatTheme_actionMenuTextColor</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeBackground"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionModeBackground" target="_top"><code>AppCompatTheme_actionModeBackground</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeCloseButtonStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionModeCloseButtonStyle" target="_top"><code>AppCompatTheme_actionModeCloseButtonStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeCloseDrawable"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionModeCloseDrawable" target="_top"><code>AppCompatTheme_actionModeCloseDrawable</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeCopyDrawable"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionModeCopyDrawable" target="_top"><code>AppCompatTheme_actionModeCopyDrawable</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeCutDrawable"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionModeCutDrawable" target="_top"><code>AppCompatTheme_actionModeCutDrawable</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeFindDrawable"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionModeFindDrawable" target="_top"><code>AppCompatTheme_actionModeFindDrawable</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModePasteDrawable"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionModePasteDrawable" target="_top"><code>AppCompatTheme_actionModePasteDrawable</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModePopupWindowStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionModePopupWindowStyle" target="_top"><code>AppCompatTheme_actionModePopupWindowStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeSelectAllDrawable"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionModeSelectAllDrawable" target="_top"><code>AppCompatTheme_actionModeSelectAllDrawable</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeShareDrawable"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionModeShareDrawable" target="_top"><code>AppCompatTheme_actionModeShareDrawable</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeSplitBackground"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionModeSplitBackground" target="_top"><code>AppCompatTheme_actionModeSplitBackground</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionModeStyle" target="_top"><code>AppCompatTheme_actionModeStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionModeWebSearchDrawable"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionModeWebSearchDrawable" target="_top"><code>AppCompatTheme_actionModeWebSearchDrawable</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionOverflowButtonStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionOverflowButtonStyle" target="_top"><code>AppCompatTheme_actionOverflowButtonStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_actionOverflowMenuStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_actionOverflowMenuStyle" target="_top"><code>AppCompatTheme_actionOverflowMenuStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_activityChooserViewStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_activityChooserViewStyle" target="_top"><code>AppCompatTheme_activityChooserViewStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_alertDialogButtonGroupStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_alertDialogButtonGroupStyle" target="_top"><code>AppCompatTheme_alertDialogButtonGroupStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_alertDialogCenterButtons"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_alertDialogCenterButtons" target="_top"><code>AppCompatTheme_alertDialogCenterButtons</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_alertDialogStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_alertDialogStyle" target="_top"><code>AppCompatTheme_alertDialogStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_alertDialogTheme"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_alertDialogTheme" target="_top"><code>AppCompatTheme_alertDialogTheme</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_android_windowAnimationStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_android_windowAnimationStyle" target="_top"><code>AppCompatTheme_android_windowAnimationStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_android_windowIsFloating"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_android_windowIsFloating" target="_top"><code>AppCompatTheme_android_windowIsFloating</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_autoCompleteTextViewStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_autoCompleteTextViewStyle" target="_top"><code>AppCompatTheme_autoCompleteTextViewStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_borderlessButtonStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_borderlessButtonStyle" target="_top"><code>AppCompatTheme_borderlessButtonStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonBarButtonStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_buttonBarButtonStyle" target="_top"><code>AppCompatTheme_buttonBarButtonStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonBarNegativeButtonStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_buttonBarNegativeButtonStyle" target="_top"><code>AppCompatTheme_buttonBarNegativeButtonStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonBarNeutralButtonStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_buttonBarNeutralButtonStyle" target="_top"><code>AppCompatTheme_buttonBarNeutralButtonStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonBarPositiveButtonStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_buttonBarPositiveButtonStyle" target="_top"><code>AppCompatTheme_buttonBarPositiveButtonStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonBarStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_buttonBarStyle" target="_top"><code>AppCompatTheme_buttonBarStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_buttonStyle" target="_top"><code>AppCompatTheme_buttonStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_buttonStyleSmall"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_buttonStyleSmall" target="_top"><code>AppCompatTheme_buttonStyleSmall</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_checkboxStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_checkboxStyle" target="_top"><code>AppCompatTheme_checkboxStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_checkedTextViewStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_checkedTextViewStyle" target="_top"><code>AppCompatTheme_checkedTextViewStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_colorAccent"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_colorAccent" target="_top"><code>AppCompatTheme_colorAccent</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_colorButtonNormal"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_colorButtonNormal" target="_top"><code>AppCompatTheme_colorButtonNormal</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_colorControlActivated"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_colorControlActivated" target="_top"><code>AppCompatTheme_colorControlActivated</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_colorControlHighlight"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_colorControlHighlight" target="_top"><code>AppCompatTheme_colorControlHighlight</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_colorControlNormal"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_colorControlNormal" target="_top"><code>AppCompatTheme_colorControlNormal</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_colorPrimary"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_colorPrimary" target="_top"><code>AppCompatTheme_colorPrimary</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_colorPrimaryDark"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_colorPrimaryDark" target="_top"><code>AppCompatTheme_colorPrimaryDark</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_colorSwitchThumbNormal"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_colorSwitchThumbNormal" target="_top"><code>AppCompatTheme_colorSwitchThumbNormal</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_controlBackground"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_controlBackground" target="_top"><code>AppCompatTheme_controlBackground</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_dialogPreferredPadding"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_dialogPreferredPadding" target="_top"><code>AppCompatTheme_dialogPreferredPadding</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_dialogTheme"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_dialogTheme" target="_top"><code>AppCompatTheme_dialogTheme</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_dividerHorizontal"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_dividerHorizontal" target="_top"><code>AppCompatTheme_dividerHorizontal</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_dividerVertical"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_dividerVertical" target="_top"><code>AppCompatTheme_dividerVertical</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_dropDownListViewStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_dropDownListViewStyle" target="_top"><code>AppCompatTheme_dropDownListViewStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_dropdownListPreferredItemHeight"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_dropdownListPreferredItemHeight" target="_top"><code>AppCompatTheme_dropdownListPreferredItemHeight</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_editTextBackground"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_editTextBackground" target="_top"><code>AppCompatTheme_editTextBackground</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_editTextColor"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_editTextColor" target="_top"><code>AppCompatTheme_editTextColor</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_editTextStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_editTextStyle" target="_top"><code>AppCompatTheme_editTextStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_homeAsUpIndicator"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_homeAsUpIndicator" target="_top"><code>AppCompatTheme_homeAsUpIndicator</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_imageButtonStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_imageButtonStyle" target="_top"><code>AppCompatTheme_imageButtonStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_listChoiceBackgroundIndicator"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_listChoiceBackgroundIndicator" target="_top"><code>AppCompatTheme_listChoiceBackgroundIndicator</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_listDividerAlertDialog"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_listDividerAlertDialog" target="_top"><code>AppCompatTheme_listDividerAlertDialog</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_listPopupWindowStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_listPopupWindowStyle" target="_top"><code>AppCompatTheme_listPopupWindowStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_listPreferredItemHeight"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_listPreferredItemHeight" target="_top"><code>AppCompatTheme_listPreferredItemHeight</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_listPreferredItemHeightLarge"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_listPreferredItemHeightLarge" target="_top"><code>AppCompatTheme_listPreferredItemHeightLarge</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_listPreferredItemHeightSmall"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_listPreferredItemHeightSmall" target="_top"><code>AppCompatTheme_listPreferredItemHeightSmall</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_listPreferredItemPaddingLeft"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_listPreferredItemPaddingLeft" target="_top"><code>AppCompatTheme_listPreferredItemPaddingLeft</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_listPreferredItemPaddingRight"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_listPreferredItemPaddingRight" target="_top"><code>AppCompatTheme_listPreferredItemPaddingRight</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_panelBackground"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_panelBackground" target="_top"><code>AppCompatTheme_panelBackground</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_panelMenuListTheme"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_panelMenuListTheme" target="_top"><code>AppCompatTheme_panelMenuListTheme</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_panelMenuListWidth"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_panelMenuListWidth" target="_top"><code>AppCompatTheme_panelMenuListWidth</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_popupMenuStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_popupMenuStyle" target="_top"><code>AppCompatTheme_popupMenuStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_popupWindowStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_popupWindowStyle" target="_top"><code>AppCompatTheme_popupWindowStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_radioButtonStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_radioButtonStyle" target="_top"><code>AppCompatTheme_radioButtonStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_ratingBarStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_ratingBarStyle" target="_top"><code>AppCompatTheme_ratingBarStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_ratingBarStyleIndicator"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_ratingBarStyleIndicator" target="_top"><code>AppCompatTheme_ratingBarStyleIndicator</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_ratingBarStyleSmall"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_ratingBarStyleSmall" target="_top"><code>AppCompatTheme_ratingBarStyleSmall</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_searchViewStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_searchViewStyle" target="_top"><code>AppCompatTheme_searchViewStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_seekBarStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_seekBarStyle" target="_top"><code>AppCompatTheme_seekBarStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_selectableItemBackground"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_selectableItemBackground" target="_top"><code>AppCompatTheme_selectableItemBackground</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_selectableItemBackgroundBorderless"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_selectableItemBackgroundBorderless" target="_top"><code>AppCompatTheme_selectableItemBackgroundBorderless</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_spinnerDropDownItemStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_spinnerDropDownItemStyle" target="_top"><code>AppCompatTheme_spinnerDropDownItemStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_spinnerStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_spinnerStyle" target="_top"><code>AppCompatTheme_spinnerStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_switchStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_switchStyle" target="_top"><code>AppCompatTheme_switchStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceLargePopupMenu"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_textAppearanceLargePopupMenu" target="_top"><code>AppCompatTheme_textAppearanceLargePopupMenu</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceListItem"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_textAppearanceListItem" target="_top"><code>AppCompatTheme_textAppearanceListItem</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceListItemSmall"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_textAppearanceListItemSmall" target="_top"><code>AppCompatTheme_textAppearanceListItemSmall</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceSearchResultSubtitle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_textAppearanceSearchResultSubtitle" target="_top"><code>AppCompatTheme_textAppearanceSearchResultSubtitle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceSearchResultTitle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_textAppearanceSearchResultTitle" target="_top"><code>AppCompatTheme_textAppearanceSearchResultTitle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_textAppearanceSmallPopupMenu"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_textAppearanceSmallPopupMenu" target="_top"><code>AppCompatTheme_textAppearanceSmallPopupMenu</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_textColorAlertDialogListItem"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_textColorAlertDialogListItem" target="_top"><code>AppCompatTheme_textColorAlertDialogListItem</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_textColorSearchUrl"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_textColorSearchUrl" target="_top"><code>AppCompatTheme_textColorSearchUrl</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_toolbarNavigationButtonStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_toolbarNavigationButtonStyle" target="_top"><code>AppCompatTheme_toolbarNavigationButtonStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_toolbarStyle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_toolbarStyle" target="_top"><code>AppCompatTheme_toolbarStyle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_windowActionBar"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_windowActionBar" target="_top"><code>AppCompatTheme_windowActionBar</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_windowActionBarOverlay"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_windowActionBarOverlay" target="_top"><code>AppCompatTheme_windowActionBarOverlay</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_windowActionModeOverlay"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_windowActionModeOverlay" target="_top"><code>AppCompatTheme_windowActionModeOverlay</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_windowFixedHeightMajor"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_windowFixedHeightMajor" target="_top"><code>AppCompatTheme_windowFixedHeightMajor</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_windowFixedHeightMinor"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_windowFixedHeightMinor" target="_top"><code>AppCompatTheme_windowFixedHeightMinor</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_windowFixedWidthMajor"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_windowFixedWidthMajor" target="_top"><code>AppCompatTheme_windowFixedWidthMajor</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_windowFixedWidthMinor"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_windowFixedWidthMinor" target="_top"><code>AppCompatTheme_windowFixedWidthMinor</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_windowMinWidthMajor"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_windowMinWidthMajor" target="_top"><code>AppCompatTheme_windowMinWidthMajor</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_windowMinWidthMinor"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_windowMinWidthMinor" target="_top"><code>AppCompatTheme_windowMinWidthMinor</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.AppCompatTheme_windowNoTitle"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#AppCompatTheme_windowNoTitle" target="_top"><code>AppCompatTheme_windowNoTitle</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat.R.styleable.Spinner_android_entries"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/appcompat/R.styleable.html#Spinner_android_entries" target="_top"><code>Spinner_android_entries</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.graphics.Palette.Builder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.graphics.Palette.Builder.html
new file mode 100644
index 0000000..83f441b
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.graphics.Palette.Builder.html
@@ -0,0 +1,154 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.graphics.Palette.Builder
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.graphics.<A HREF="../../../../reference/android/support/v7/graphics/Palette.Builder.html" target="_top"><font size="+2"><code>Palette.Builder</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.graphics.Palette.Builder.addTarget_added(android.support.v7.graphics.Target)"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/v7/graphics/Palette.Builder.html#addTarget(android.support.v7.graphics.Target)" target="_top"><code>addTarget</code></A>(<code>Target</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.graphics.Palette.Builder.clearTargets_added()"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/v7/graphics/Palette.Builder.html#clearTargets()" target="_top"><code>clearTargets</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.graphics.Palette.Builder.resizeBitmapArea_added(int)"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/v7/graphics/Palette.Builder.html#resizeBitmapArea(int)" target="_top"><code>resizeBitmapArea</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.graphics.Palette.Builder.resizeBitmapSize_changed(int)"></A>
+  <nobr><code>Builder</code>&nbsp;<A HREF="../../../../reference/android/support/v7/graphics/Palette.Builder.html#resizeBitmapSize(int)" target="_top"><code>resizeBitmapSize</code></A>(<code>int</code>)  </nobr>
+  </TD>
+  <TD VALIGN="TOP" WIDTH="30%">
+<b>Now deprecated</b>.<br>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.graphics.Palette.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.graphics.Palette.html
new file mode 100644
index 0000000..be157a7
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.graphics.Palette.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.graphics.Palette
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.graphics.<A HREF="../../../../reference/android/support/v7/graphics/Palette.html" target="_top"><font size="+2"><code>Palette</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.graphics.Palette.getColorForTarget_added(android.support.v7.graphics.Target, int)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/graphics/Palette.html#getColorForTarget(android.support.v7.graphics.Target, int)" target="_top"><code>getColorForTarget</code></A>(<code>Target,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.graphics.Palette.getSwatchForTarget_added(android.support.v7.graphics.Target)"></A>
+  <nobr><code>Swatch</code>&nbsp;<A HREF="../../../../reference/android/support/v7/graphics/Palette.html#getSwatchForTarget(android.support.v7.graphics.Target)" target="_top"><code>getSwatchForTarget</code></A>(<code>Target</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.graphics.Palette.getTargets_added()"></A>
+  <nobr><code>List&lt;Target&gt;</code>&nbsp;<A HREF="../../../../reference/android/support/v7/graphics/Palette.html#getTargets()" target="_top"><code>getTargets</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouteDescriptor.Builder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouteDescriptor.Builder.html
new file mode 100644
index 0000000..7db6666
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouteDescriptor.Builder.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.media.MediaRouteDescriptor.Builder
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.media.<A HREF="../../../../reference/android/support/v7/media/MediaRouteDescriptor.Builder.html" target="_top"><font size="+2"><code>MediaRouteDescriptor.Builder</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouteDescriptor.Builder.addGroupMemberId_removed(java.lang.String)"></A>
+  <nobr><code>Builder</code>&nbsp;addGroupMemberId(<code>String</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouteDescriptor.Builder.addGroupMemberIds_removed(java.util.Collection<java.lang.String>)"></A>
+  <nobr><code>Builder</code>&nbsp;addGroupMemberIds(<code>Collection&lt;String&gt;</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouteDescriptor.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouteDescriptor.html
new file mode 100644
index 0000000..315ba3d
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouteDescriptor.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.media.MediaRouteDescriptor
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.media.<A HREF="../../../../reference/android/support/v7/media/MediaRouteDescriptor.html" target="_top"><font size="+2"><code>MediaRouteDescriptor</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouteDescriptor.getGroupMemberIds_removed()"></A>
+  <nobr><code>List&lt;String&gt;</code>&nbsp;getGroupMemberIds()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouter.Callback.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouter.Callback.html
new file mode 100644
index 0000000..66be68d
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.media.MediaRouter.Callback.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.media.MediaRouter.Callback
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.media.<A HREF="../../../../reference/android/support/v7/media/MediaRouter.Callback.html" target="_top"><font size="+2"><code>MediaRouter.Callback</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media.MediaRouter.Callback.onRouteUnselected_added(android.support.v7.media.MediaRouter, android.support.v7.media.MediaRouter.RouteInfo, int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v7/media/MediaRouter.Callback.html#onRouteUnselected(android.support.v7.media.MediaRouter, android.support.v7.media.MediaRouter.RouteInfo, int)" target="_top"><code>onRouteUnselected</code></A>(<code>MediaRouter,</nobr> RouteInfo<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceFragmentCompat.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceFragmentCompat.html
new file mode 100644
index 0000000..68aa733
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceFragmentCompat.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.preference.PreferenceFragmentCompat
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.preference.<A HREF="../../../../reference/android/support/v7/preference/PreferenceFragmentCompat.html" target="_top"><font size="+2"><code>PreferenceFragmentCompat</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.preference.PreferenceFragmentCompat.setDivider_added(android.graphics.drawable.Drawable)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v7/preference/PreferenceFragmentCompat.html#setDivider(android.graphics.drawable.Drawable)" target="_top"><code>setDivider</code></A>(<code>Drawable</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.preference.PreferenceFragmentCompat.setDividerHeight_added(int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v7/preference/PreferenceFragmentCompat.html#setDividerHeight(int)" target="_top"><code>setDividerHeight</code></A>(<code>int</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceScreen.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceScreen.html
new file mode 100644
index 0000000..12de78c
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceScreen.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.preference.PreferenceScreen
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.preference.<A HREF="../../../../reference/android/support/v7/preference/PreferenceScreen.html" target="_top"><font size="+2"><code>PreferenceScreen</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.preference.PreferenceScreen.setShouldUseGeneratedIds_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v7/preference/PreferenceScreen.html#setShouldUseGeneratedIds(boolean)" target="_top"><code>setShouldUseGeneratedIds</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.preference.PreferenceScreen.shouldUseGeneratedIds_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v7/preference/PreferenceScreen.html#shouldUseGeneratedIds()" target="_top"><code>shouldUseGeneratedIds</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceViewHolder.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceViewHolder.html
new file mode 100644
index 0000000..b27e66c
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.preference.PreferenceViewHolder.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.preference.PreferenceViewHolder
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.preference.<A HREF="../../../../reference/android/support/v7/preference/PreferenceViewHolder.html" target="_top"><font size="+2"><code>PreferenceViewHolder</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.preference.PreferenceViewHolder.isDividerAllowedAbove_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v7/preference/PreferenceViewHolder.html#isDividerAllowedAbove()" target="_top"><code>isDividerAllowedAbove</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.preference.PreferenceViewHolder.isDividerAllowedBelow_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v7/preference/PreferenceViewHolder.html#isDividerAllowedBelow()" target="_top"><code>isDividerAllowedBelow</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.preference.PreferenceViewHolder.setDividerAllowedAbove_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v7/preference/PreferenceViewHolder.html#setDividerAllowedAbove(boolean)" target="_top"><code>setDividerAllowedAbove</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.preference.PreferenceViewHolder.setDividerAllowedBelow_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v7/preference/PreferenceViewHolder.html#setDividerAllowedBelow(boolean)" target="_top"><code>setDividerAllowedBelow</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.recyclerview.R.dimen.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.recyclerview.R.dimen.html
new file mode 100644
index 0000000..b38c6dc
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.recyclerview.R.dimen.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.recyclerview.R.dimen
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.recyclerview.<A HREF="../../../../reference/android/support/v7/recyclerview/R.dimen.html" target="_top"><font size="+2"><code>R.dimen</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<a NAME="fields"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Fields" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.recyclerview.R.dimen.item_touch_helper_swipe_escape_max_velocity"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/recyclerview/R.dimen.html#item_touch_helper_swipe_escape_max_velocity" target="_top"><code>item_touch_helper_swipe_escape_max_velocity</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.recyclerview.R.dimen.item_touch_helper_swipe_escape_velocity"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/recyclerview/R.dimen.html#item_touch_helper_swipe_escape_velocity" target="_top"><code>item_touch_helper_swipe_escape_velocity</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.OrientationHelper.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.OrientationHelper.html
new file mode 100644
index 0000000..6a2a9b3
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.OrientationHelper.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.widget.OrientationHelper
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.widget.<A HREF="../../../../reference/android/support/v7/widget/OrientationHelper.html" target="_top"><font size="+2"><code>OrientationHelper</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.OrientationHelper.getMode_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/OrientationHelper.html#getMode()" target="_top"><code>getMode</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.OrientationHelper.getModeInOther_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/OrientationHelper.html#getModeInOther()" target="_top"><code>getModeInOther</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.ItemAnimator.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.ItemAnimator.html
new file mode 100644
index 0000000..95e642e
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.ItemAnimator.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.widget.RecyclerView.ItemAnimator
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.widget.<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.ItemAnimator.html" target="_top"><font size="+2"><code>RecyclerView.ItemAnimator</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.RecyclerView.ItemAnimator.canReuseUpdatedViewHolder_added(android.support.v7.widget.RecyclerView.ViewHolder, java.util.List<java.lang.Object>)"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.ItemAnimator.html#canReuseUpdatedViewHolder(android.support.v7.widget.RecyclerView.ViewHolder, java.util.List<java.lang.Object>)" target="_top"><code>canReuseUpdatedViewHolder</code></A>(<code>ViewHolder,</nobr> List&lt;Object&gt;<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.LayoutManager.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.LayoutManager.html
new file mode 100644
index 0000000..30b0a78
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.LayoutManager.html
@@ -0,0 +1,207 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.widget.RecyclerView.LayoutManager
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.widget.<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.LayoutManager.html" target="_top"><font size="+2"><code>RecyclerView.LayoutManager</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Removed"></a>
+<TABLE summary="Removed Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Removed Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.RecyclerView.LayoutManager.getChildMeasureSpec_removed(int, int, int, boolean)"></A>
+  <nobr><code>int</code>&nbsp;getChildMeasureSpec(<code>int,</nobr> int<nobr>,</nobr> int<nobr>,</nobr> boolean<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.RecyclerView.LayoutManager.chooseSize_added(int, int, int)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.LayoutManager.html#chooseSize(int, int, int)" target="_top"><code>chooseSize</code></A>(<code>int,</nobr> int<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.RecyclerView.LayoutManager.findContainingItemView_added(android.view.View)"></A>
+  <nobr><code>View</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.LayoutManager.html#findContainingItemView(android.view.View)" target="_top"><code>findContainingItemView</code></A>(<code>View</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.RecyclerView.LayoutManager.getChildMeasureSpec_added(int, int, int, int, boolean)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.LayoutManager.html#getChildMeasureSpec(int, int, int, int, boolean)" target="_top"><code>getChildMeasureSpec</code></A>(<code>int,</nobr> int<nobr>,</nobr> int<nobr>,</nobr> int<nobr>,</nobr> boolean<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.RecyclerView.LayoutManager.getChildMeasureSpec_added(int, int, int, boolean)"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.LayoutManager.html#getChildMeasureSpec(int, int, int, boolean)" target="_top"><code>getChildMeasureSpec</code></A>(<code>int,</nobr> int<nobr>,</nobr> int<nobr>,</nobr> boolean<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.RecyclerView.LayoutManager.getHeightMode_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.LayoutManager.html#getHeightMode()" target="_top"><code>getHeightMode</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.RecyclerView.LayoutManager.getWidthMode_added()"></A>
+  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.LayoutManager.html#getWidthMode()" target="_top"><code>getWidthMode</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.RecyclerView.LayoutManager.isAutoMeasureEnabled_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.LayoutManager.html#isAutoMeasureEnabled()" target="_top"><code>isAutoMeasureEnabled</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.RecyclerView.LayoutManager.isMeasurementCacheEnabled_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.LayoutManager.html#isMeasurementCacheEnabled()" target="_top"><code>isMeasurementCacheEnabled</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.RecyclerView.LayoutManager.setAutoMeasureEnabled_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.LayoutManager.html#setAutoMeasureEnabled(boolean)" target="_top"><code>setAutoMeasureEnabled</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.RecyclerView.LayoutManager.setMeasuredDimension_added(android.graphics.Rect, int, int)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.LayoutManager.html#setMeasuredDimension(android.graphics.Rect, int, int)" target="_top"><code>setMeasuredDimension</code></A>(<code>Rect,</nobr> int<nobr>,</nobr> int<nobr><nobr></code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.RecyclerView.LayoutManager.setMeasurementCacheEnabled_added(boolean)"></A>
+  <nobr><code>void</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.LayoutManager.html#setMeasurementCacheEnabled(boolean)" target="_top"><code>setMeasurementCacheEnabled</code></A>(<code>boolean</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.State.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.State.html
new file mode 100644
index 0000000..2b3ac61
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.State.html
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.widget.RecyclerView.State
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.widget.<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.State.html" target="_top"><font size="+2"><code>RecyclerView.State</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.RecyclerView.State.isMeasuring_added()"></A>
+  <nobr><code>boolean</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.State.html#isMeasuring()" target="_top"><code>isMeasuring</code></A>()</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.html
new file mode 100644
index 0000000..5cdc7a0
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.RecyclerView.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.widget.RecyclerView
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.widget.<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.html" target="_top"><font size="+2"><code>RecyclerView</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.RecyclerView.findContainingItemView_added(android.view.View)"></A>
+  <nobr><code>View</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.html#findContainingItemView(android.view.View)" target="_top"><code>findContainingItemView</code></A>(<code>View</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.RecyclerView.findContainingViewHolder_added(android.view.View)"></A>
+  <nobr><code>ViewHolder</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/RecyclerView.html#findContainingViewHolder(android.view.View)" target="_top"><code>findContainingViewHolder</code></A>(<code>View</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.helper.ItemTouchHelper.Callback.html b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.helper.ItemTouchHelper.Callback.html
new file mode 100644
index 0000000..1237408
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/android.support.v7.widget.helper.ItemTouchHelper.Callback.html
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+android.support.v7.widget.helper.ItemTouchHelper.Callback
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY>
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+<H2>
+Class android.support.v7.widget.helper.<A HREF="../../../../reference/android/support/v7/widget/helper/ItemTouchHelper.Callback.html" target="_top"><font size="+2"><code>ItemTouchHelper.Callback</code></font></A>
+</H2>
+<a NAME="constructors"></a>
+<a NAME="methods"></a>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Methods" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Methods</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.helper.ItemTouchHelper.Callback.getSwipeEscapeVelocity_added(float)"></A>
+  <nobr><code>float</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/helper/ItemTouchHelper.Callback.html#getSwipeEscapeVelocity(float)" target="_top"><code>getSwipeEscapeVelocity</code></A>(<code>float</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.helper.ItemTouchHelper.Callback.getSwipeVelocityThreshold_added(float)"></A>
+  <nobr><code>float</code>&nbsp;<A HREF="../../../../reference/android/support/v7/widget/helper/ItemTouchHelper.Callback.html#getSwipeVelocityThreshold(float)" target="_top"><code>getSwipeVelocityThreshold</code></A>(<code>float</code>)</nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<a NAME="fields"></a>
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/changes-summary.html b/docs/html/sdk/support_api_diff/23.2.0/changes/changes-summary.html
new file mode 100644
index 0000000..d41ec1f
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/changes-summary.html
@@ -0,0 +1,366 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Support&nbsp;Library&nbsp;API&nbsp;Differences&nbsp;Report
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<body class="gc-documentation">
+<!-- Start of nav bar -->
+<a name="top"></a>
+<div id="header" style="margin-bottom:0;padding-bottom:0;">
+<div id="headerLeft">
+<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
+</div>
+  <div id="headerRight">
+  <div id="headerLinks">
+<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
+<span class="text">
+<!-- &nbsp;<a href="#">English</a> | -->
+<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
+</span>
+</div>
+  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td colspan="2" class="diffspechead">API Diff Specification</td>
+      </tr>
+      <tr>
+        <td class="diffspec" style="padding-top:.25em">To Level:</td>
+        <td class="diffvaluenew" style="padding-top:.25em">23.2.0</td>
+      </tr>
+      <tr>
+        <td class="diffspec">From Level:</td>
+        <td class="diffvalueold">23.1.1</td>
+      </tr>
+      <tr>
+        <td class="diffspec">Generated</td>
+        <td class="diffvalue">2016.02.23 13:25</td>
+      </tr>
+    </table>
+    </div><!-- End and-diff-id -->
+  <div class="and-diff-id" style="margin-right:8px;">
+    <table class="diffspectable">
+      <tr>
+        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
+      </tr>
+    </table>
+  </div> <!-- End and-diff-id -->
+  </div> <!-- End headerRight -->
+  </div> <!-- End header -->
+<div id="body-content" xstyle="padding:12px;padding-right:18px;">
+<div id="doc-content" style="position:relative;">
+<div id="mainBodyFluid">
+    <div id="docTitleContainer">
+    <h1>Support&nbsp;Library&nbsp;API&nbsp;Differences&nbsp;Report</h1>
+<p>This report details the changes in the Android Support Library API between two versions. 
+It shows additions, modifications, and removals for packages, classes, methods, and fields. 
+The report also includes general statistics that characterize the extent and type of the differences.</p>
+<p>This report is based a comparison of the Support Library API specifications 
+whose version level identifiers are given in the upper-right corner of this page. It compares a 
+newer "to" version's API to an older "from" version's API, noting all changes relative to the 
+older API. So, for example, API elements marked as removed are no longer present in the "to" 
+API specification.</p>
+<p>To navigate the report, use the "Select a Diffs Index" and "Filter the Index" 
+controls on the left. The report uses text formatting to indicate <em>interface names</em>, 
+<a href= ><code>links to reference documentation</code></a>, and <a href= >links to change 
+description</a>. The statistics are accessible from the "Statistics" link in the upper-right corner.</p>
+<p>For more information about the Android API and SDK, 
+see the <a href="http://developer.android.com/index.html" target="_top">Android Developers site</a>.</p>
+<p>
+<a NAME="Added"></a>
+<TABLE summary="Added Packages" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=2>Added Packages</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.graphics.drawable"></A>
+  <nobr><A HREF="../../../../reference/android/support/graphics/drawable/package-summary.html" target="_top"><code>android.support.graphics.drawable</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget.picker"></A>
+  <nobr><A HREF="../../../../reference/android/support/v17/leanback/widget/picker/package-summary.html" target="_top"><code>android.support.v17.leanback.widget.picker</code></A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<p>
+<a NAME="Changed"></a>
+<TABLE summary="Changed Packages" WIDTH="100%">
+<TR>
+  <TH VALIGN="TOP" COLSPAN=3>Changed Packages</FONT></TD>
+</TH>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.customtabs"></A>
+  <nobr><A HREF="pkg_android.support.customtabs.html">android.support.customtabs</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.design.widget"></A>
+  <nobr><A HREF="pkg_android.support.design.widget.html">android.support.design.widget</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.percent"></A>
+  <nobr><A HREF="pkg_android.support.percent.html">android.support.percent</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v14.preference"></A>
+  <nobr><A HREF="pkg_android.support.v14.preference.html">android.support.v14.preference</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.app"></A>
+  <nobr><A HREF="pkg_android.support.v17.leanback.app.html">android.support.v17.leanback.app</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v17.leanback.widget"></A>
+  <nobr><A HREF="pkg_android.support.v17.leanback.widget.html">android.support.v17.leanback.widget</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.accessibilityservice"></A>
+  <nobr><A HREF="pkg_android.support.v4.accessibilityservice.html">android.support.v4.accessibilityservice</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.app"></A>
+  <nobr><A HREF="pkg_android.support.v4.app.html">android.support.v4.app</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.content"></A>
+  <nobr><A HREF="pkg_android.support.v4.content.html">android.support.v4.content</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.content.pm"></A>
+  <nobr><A HREF="pkg_android.support.v4.content.pm.html">android.support.v4.content.pm</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.content.res"></A>
+  <nobr><A HREF="pkg_android.support.v4.content.res.html">android.support.v4.content.res</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.database"></A>
+  <nobr><A HREF="pkg_android.support.v4.database.html">android.support.v4.database</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics"></A>
+  <nobr><A HREF="pkg_android.support.v4.graphics.html">android.support.v4.graphics</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.graphics.drawable"></A>
+  <nobr><A HREF="pkg_android.support.v4.graphics.drawable.html">android.support.v4.graphics.drawable</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.hardware.fingerprint"></A>
+  <nobr><A HREF="pkg_android.support.v4.hardware.fingerprint.html">android.support.v4.hardware.fingerprint</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.media"></A>
+  <nobr><A HREF="pkg_android.support.v4.media.html">android.support.v4.media</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.net"></A>
+  <nobr><A HREF="pkg_android.support.v4.net.html">android.support.v4.net</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.os"></A>
+  <nobr><A HREF="pkg_android.support.v4.os.html">android.support.v4.os</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.text"></A>
+  <nobr><A HREF="pkg_android.support.v4.text.html">android.support.v4.text</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view"></A>
+  <nobr><A HREF="pkg_android.support.v4.view.html">android.support.v4.view</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.accessibility"></A>
+  <nobr><A HREF="pkg_android.support.v4.view.accessibility.html">android.support.v4.view.accessibility</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.view.animation"></A>
+  <nobr><A HREF="pkg_android.support.v4.view.animation.html">android.support.v4.view.animation</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v4.widget"></A>
+  <nobr><A HREF="pkg_android.support.v4.widget.html">android.support.v4.widget</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.app"></A>
+  <nobr><A HREF="pkg_android.support.v7.app.html">android.support.v7.app</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.appcompat"></A>
+  <nobr><A HREF="pkg_android.support.v7.appcompat.html">android.support.v7.appcompat</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.graphics"></A>
+  <nobr><A HREF="pkg_android.support.v7.graphics.html">android.support.v7.graphics</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.media"></A>
+  <nobr><A HREF="pkg_android.support.v7.media.html">android.support.v7.media</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.preference"></A>
+  <nobr><A HREF="pkg_android.support.v7.preference.html">android.support.v7.preference</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.recyclerview"></A>
+  <nobr><A HREF="pkg_android.support.v7.recyclerview.html">android.support.v7.recyclerview</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget"></A>
+  <nobr><A HREF="pkg_android.support.v7.widget.html">android.support.v7.widget</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
+  <TD VALIGN="TOP" WIDTH="25%">
+  <A NAME="android.support.v7.widget.helper"></A>
+  <nobr><A HREF="pkg_android.support.v7.widget.helper.html">android.support.v7.widget.helper</A></nobr>
+  </TD>
+  <TD>&nbsp;</TD>
+</TR>
+</TABLE>
+&nbsp;
+<!-- End of API section -->
+<!-- Start of packages section -->
+      </div>	
+      <div id="footer">
+        <div id="copyright">
+        Except as noted, this content is licensed under 
+        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
+        For details and restrictions, see the <a href="/license.html">Content License</a>.
+        </div>
+      <div id="footerlinks">
+      <p>
+        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
+        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
+        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
+      </p>
+    </div>
+    </div> <!-- end footer -->
+    </div><!-- end doc-content -->
+    </div> <!-- end body-content --> 
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/changes/classes_index_additions.html b/docs/html/sdk/support_api_diff/23.2.0/changes/classes_index_additions.html
new file mode 100644
index 0000000..a2e1d44
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/changes/classes_index_additions.html
@@ -0,0 +1,157 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<HTML style="overflow:auto;">
+<HEAD>
+<meta name="generator" content="JDiff v1.1.0">
+<!-- Generated by the JDiff Javadoc doclet -->
+<!-- (http://www.jdiff.org) -->
+<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
+<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
+<TITLE>
+Class Additions Index
+</TITLE>
+<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
+<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
+<noscript>
+<style type="text/css">
+body{overflow:auto;}
+#body-content{position:relative; top:0;}
+#doc-content{overflow:visible;border-left:3px solid #666;}
+#side-nav{padding:0;}
+#side-nav .toggle-list ul {display:block;}
+#resize-packages-nav{border-bottom:3px solid #666;}
+</style>
+</noscript>
+<style type="text/css">
+</style>
+</HEAD>
+<BODY class="gc-documentation" style="padding:12px;">
+<a NAME="topheader"></a>
+<table summary="Index for Classes" width="100%" class="jdiffIndex" border="0" cellspacing="0" cellpadding="0" style="padding-bottom:0;margin-bottom:0;">
+  <tr>
+  <th class="indexHeader">
+    Filter the Index:
+  </th>
+  </tr>
+  <tr>
+  <td class="indexText" style="line-height:1.3em;padding-left:2em;">
+<a href="classes_index_all.html" class="staysblack">All Classes</a>
+  <br>
+<A HREF="classes_index_removals.html" xclass="hiddenlink">Removals</A>
+  <br>
+<b>Additions</b>
+  <br>
+<A HREF="classes_index_changes.html"xclass="hiddenlink">Changes</A>
+  </td>
+  </tr>
+</table>
+<div id="indexTableCaption" style="background-color:#eee;padding:0 4px 0 4px;font-size:11px;margin-bottom:1em;">
+Listed as: <span style="color:#069"><strong>Added</strong></span>,  <span style="color:#069"><strike>Removed</strike></span>,  <span style="color:#069">Changed</span></font>
+</div>
+<A NAME="B"></A>
+<br><font size="+2">B</font>&nbsp;
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.design.widget.html#BottomSheetBehavior" class="hiddenlink" target="rightframe"><b>BottomSheetBehavior</b></A><br>
+<A HREF="pkg_android.support.design.widget.html#BottomSheetBehavior.BottomSheetCallback" class="hiddenlink" target="rightframe"><b>BottomSheetBehavior.BottomSheetCallback</b></A><br>
+<A HREF="pkg_android.support.design.widget.html#BottomSheetBehavior.SavedState" class="hiddenlink" target="rightframe"><b>BottomSheetBehavior.SavedState</b></A><br>
+<A HREF="pkg_android.support.design.widget.html#BottomSheetDialog" class="hiddenlink" target="rightframe"><b>BottomSheetDialog</b></A><br>
+<A HREF="pkg_android.support.design.widget.html#BottomSheetDialogFragment" class="hiddenlink" target="rightframe"><b>BottomSheetDialogFragment</b></A><br>
+<A NAME="G"></A>
+<br><font size="+2">G</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.v17.leanback.widget.html#GuidedAction.BuilderBase" class="hiddenlink" target="rightframe"><b>GuidedAction.BuilderBase</b></A><br>
+<A HREF="pkg_android.support.v17.leanback.widget.html#GuidedDatePickerAction" class="hiddenlink" target="rightframe"><b>GuidedDatePickerAction</b></A><br>
+<A HREF="pkg_android.support.v17.leanback.widget.html#GuidedDatePickerAction.Builder" class="hiddenlink" target="rightframe"><b>GuidedDatePickerAction.Builder</b></A><br>
+<A HREF="pkg_android.support.v17.leanback.widget.html#GuidedDatePickerAction.BuilderBase" class="hiddenlink" target="rightframe"><b>GuidedDatePickerAction.BuilderBase</b></A><br>
+<A NAME="L"></A>
+<br><font size="+2">L</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.v17.leanback.widget.html#ListRowPresenter.SelectItemViewHolderTask" class="hiddenlink" target="rightframe"><b>ListRowPresenter.SelectItemViewHolderTask</b></A><br>
+<A HREF="pkg_android.support.v4.widget.html#ListViewCompat" class="hiddenlink" target="rightframe"><b>ListViewCompat</b></A><br>
+<A NAME="M"></A>
+<br><font size="+2">M</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserCompat" class="hiddenlink" target="rightframe"><b>MediaBrowserCompat</b></A><br>
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserCompat.ConnectionCallback" class="hiddenlink" target="rightframe"><b>MediaBrowserCompat.ConnectionCallback</b></A><br>
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserCompat.ItemCallback" class="hiddenlink" target="rightframe"><b>MediaBrowserCompat.ItemCallback</b></A><br>
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserCompat.MediaItem" class="hiddenlink" target="rightframe"><b>MediaBrowserCompat.MediaItem</b></A><br>
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserCompat.SubscriptionCallback" class="hiddenlink" target="rightframe"><b>MediaBrowserCompat.SubscriptionCallback</b></A><br>
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserServiceCompat" class="hiddenlink" target="rightframe"><b>MediaBrowserServiceCompat</b></A><br>
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserServiceCompat.BrowserRoot" class="hiddenlink" target="rightframe"><b>MediaBrowserServiceCompat.BrowserRoot</b></A><br>
+<A HREF="pkg_android.support.v4.media.html#MediaBrowserServiceCompat.Result" class="hiddenlink" target="rightframe"><b>MediaBrowserServiceCompat.Result</b></A><br>
+<A NAME="P"></A>
+<br><font size="+2">P</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.v17.leanback.widget.html#Presenter.ViewHolderTask" class="hiddenlink" target="rightframe"><b>Presenter.ViewHolderTask</b></A><br>
+<A NAME="T"></A>
+<br><font size="+2">T</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#V"><font size="-2">V</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.design.widget.html#TabItem" class="hiddenlink" target="rightframe"><b>TabItem</b></A><br>
+<A HREF="pkg_android.support.v7.graphics.html#Target" class="hiddenlink" target="rightframe"><b>Target</b></A><br>
+<A HREF="pkg_android.support.v7.graphics.html#Target.Builder" class="hiddenlink" target="rightframe"><b>Target.Builder</b></A><br>
+<A HREF="pkg_android.support.design.widget.html#TextInputEditText" class="hiddenlink" target="rightframe"><b>TextInputEditText</b></A><br>
+<A NAME="V"></A>
+<br><font size="+2">V</font>&nbsp;
+<a href="#B"><font size="-2">B</font></a> 
+<a href="#G"><font size="-2">G</font></a> 
+<a href="#L"><font size="-2">L</font></a> 
+<a href="#M"><font size="-2">M</font></a> 
+<a href="#P"><font size="-2">P</font></a> 
+<a href="#T"><font size="-2">T</font></a> 
+ <a href="#topheader"><font size="-2">TOP</font></a>
+<p><div style="line-height:1.5em;color:black">
+<A HREF="pkg_android.support.v17.leanback.widget.html#ViewHolderTask" class="hiddenlink" target="rightframe"><b><i>ViewHolderTask</i></b></A><br>
+<A HREF="pkg_android.support.design.widget.html#VisibilityAwareImageButton" class="hiddenlink" target="rightframe"><b>VisibilityAwareImageButton</b></A><br>
+<script src="http://www.google-analytics.com/ga.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+  try {
+    var pageTracker = _gat._getTracker("UA-5831155-1");
+    pageTracker._setAllowAnchor(true);
+    pageTracker._initData();
+    pageTracker._trackPageview();
+  } catch(e) {}
+</script>
+</BODY>
+</HTML>
diff --git a/docs/html/sdk/support_api_diff/23.2.0/stylesheet-jdiff.css b/docs/html/sdk/support_api_diff/23.2.0/stylesheet-jdiff.css
new file mode 100644
index 0000000..edafaa3
--- /dev/null
+++ b/docs/html/sdk/support_api_diff/23.2.0/stylesheet-jdiff.css
@@ -0,0 +1,44 @@
+
+/* (http://www.jdiff.org) */
+
+div.and-diff-id {border: 1px solid #eee;position:relative;float:right;clear:both;padding:0px;}
+table.diffspectable {border:1px;padding:0px;margin:0px;}
+.diffspechead {background-color:#eee;}
+.diffspectable tr {border:0px;padding:0px;}
+.diffspectable td  {background-color:eee;border:0px;font-size:90%;font-weight:normal;padding:0px;padding-left:1px;padding-right:1px;text-align:center;color:777;}
+td.diffvalueold {color:orange;background-color:white;border:0px;font-size:80%;font-style:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;}
+td.diffvaluenew {color:green;background-color:white;border:0px;font-size:80%;font-weight:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;}
+td.diffvalue {color:444;background-color:white;border:0px;font-size:80%;font-weight:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;}
+td.diffspec {background-color:white;border:0px;font-size:80%;font-weight:normal;padding:1px;color:444;text-align:right;padding-right:.5em;line-height:.95em;}
+tt {font-size:11pt;font-family:monospace;}
+.indexHeader {
+  font-size:96%;
+  line-height:.8em;}
+.jdiffIndex td {
+  font-size:96%;
+  xline-height:.8em;
+  padding:2px;
+  padding-left:1em;}
+.indexText {
+  font-size:100%;
+  padding-left:1em;}
+#indexTableCaption {
+  font-size:96%;
+  margin-top:.25em;
+  margin-bottom:0;
+  }
+.hiddenlink {
+  font-size:96%;
+  line-height:.8em;
+  text-decoration:none;}
+a {
+  text-decoration:none;}
+a:hover {
+  text-decoration:underline;}
+.indexBox {
+  border: 1px solid red;
+  margin:1em 0 0 0;}
+.letterIndexHead {
+  font-size: 1.5em;font-weight:9;
+  margin:0 0 0em 0;
+  border: 1px solid red;}
diff --git a/docs/html/sdk/terms.jd b/docs/html/sdk/terms.jd
index 74e5254..149c243 100644
--- a/docs/html/sdk/terms.jd
+++ b/docs/html/sdk/terms.jd
@@ -11,45 +11,47 @@
 This is the Android Software Development Kit License Agreement
 
 <h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in this License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of this License Agreement. This License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
+1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
 
-1.2 “Android” means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
+1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
 
-1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
 
 
 <h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use the SDK if you do not accept this License Agreement.
+2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
 
-2.2 By clicking to accept, you hereby agree to the terms of this License Agreement.
+2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
 
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries including the country in which you are resident or from which you use the SDK.
+2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
 
-2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to this License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
+2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
 
 
 <h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable and non-exclusive license to use the SDK solely to develop applications to run on the Android platform.
+3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
 
-3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
 
-3.3 You may not use the SDK for any purpose not expressly permitted by this License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
 
-3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.
+3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
 
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not this License Agreement.
+3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
 
 3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
 
-3.7 Nothing in this License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
 
 3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
 
 
 <h3>4. Use of the SDK by You</h3>
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under this License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
+4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
 
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) this License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
+4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
 
 4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
 
@@ -57,7 +59,7 @@
 
 4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
 
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under this License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
+4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
 
 
 <h3>5. Your Developer Credentials</h3>
@@ -75,7 +77,7 @@
 
 7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
 
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, this License Agreement does not affect your legal relationship with these third parties.
+7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
 
 
 <h3>8. Using Android APIs</h3>
@@ -87,17 +89,17 @@
 
 
 <h3>9. Terminating this License Agreement</h3>
-9.1 This License Agreement will continue to apply until terminated by either you or Google as set out below.
+9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
 
-9.2 If you want to terminate this License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
+9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
 
-9.3 Google may at any time, terminate this License Agreement with you if:
-(A) you have breached any provision of this License Agreement; or
+9.3 Google may at any time, terminate the License Agreement with you if:
+(A) you have breached any provision of the License Agreement; or
 (B) Google is required to do so by law; or
 (C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
 (D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
 
-9.4 When this License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst this License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
+9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
 
 
 <h3>10. DISCLAIMER OF WARRANTIES</h3>
@@ -113,7 +115,7 @@
 
 
 <h3>12. Indemnification</h3>
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with this License Agreement.
+12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
 
 
 <h3>13. Changes to the License Agreement</h3>
@@ -121,22 +123,22 @@
 
 
 <h3>14. General Legal Terms</h3>
-14.1 This License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
+14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
 
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in this License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
+14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
 
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of this License Agreement is invalid, then that provision will be removed from this License Agreement without affecting the rest of this License Agreement. The remaining provisions of this License Agreement will continue to be valid and enforceable.
+14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
 
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to this License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of this License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to this License Agreement.
+14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
 
 14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
 
-14.6 The rights granted in this License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under this License Agreement without the prior written approval of the other party.
+14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
 
-14.7 This License Agreement, and your relationship with Google under this License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from this License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
 
 
-<em>November 13, 2012</em>
+<em>November 20, 2015</em>
 </div>
 
 </div>
\ No newline at end of file
diff --git a/docs/html/sdk/terms_body.html b/docs/html/sdk/terms_body.html
index 35e1655..95404f3 100644
--- a/docs/html/sdk/terms_body.html
+++ b/docs/html/sdk/terms_body.html
@@ -1,337 +1,408 @@
 
 
- 
-<p>This is the Android Software Development Kit License Agreement.</p> 
- 
-<h2> 
-	1. Introduction
-</h2> 
-<p> 
-	1.1 The Android Software Development Kit (referred to in this License Agreement as the "SDK"
-and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is
-licensed to you subject to the terms of this License Agreement. This License Agreement forms a
-legally binding contract between you and Google in relation to your use of the SDK.
- 
-</p> 
-<p> 
-	1.2 "Google" means Google Inc., a Delaware corporation with principal place of business at
-1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-</p> 
-<h2> 
-	2. Accepting this License Agreement
-</h2> 
-<p> 
-	2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use
-the SDK if you do not accept this License Agreement.
-</p> 
-<p> 
-	2.2 You can accept this License Agreement by:
-</p> 
-<p> 
-	(A) clicking to accept or agree to this License Agreement, where this option is made
-available to you; or
-</p> 
-<p> 
-	(B) by actually using the SDK. In this case, you agree that use of the SDK constitutes
-acceptance of the Licensing Agreement from that point onwards.
-</p> 
-<p> 
-	2.3 You may not use the SDK and may not accept the Licensing Agreement if you are a person
-barred from receiving the SDK under the laws of the United States or other countries including the
-country in which you are resident or from which you use the SDK.
-</p> 
-<p> 
-	2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or
-other entity, you represent and warrant that you have full legal authority to bind your employer or
-such entity to this License Agreement. If you do not have the requisite authority, you may not
-accept the Licensing Agreement or use the SDK on behalf of your employer or other entity.
-</p> 
-<h2> 
-	3. SDK License from Google
-</h2> 
-<p> 
-	3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide,
-royalty-free, non- assignable and non-exclusive license to use the SDK solely to develop
-applications to run on the Android platform.
-</p> 
-<p> 
-	3.2 You agree that Google or third parties own all legal right, title and interest in and to
-the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property
-Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law,
-and any and all other proprietary rights. Google reserves all rights not expressly granted to you. 
- 
-</p> 
-<p> 
-	3.3 Except to the extent required by applicable third party licenses, you may not copy
-(except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble,
-or create derivative works of the SDK or any part of the SDK. Except to the extent required by
-applicable third party licenses, you may not load any part of the SDK onto a mobile handset or any
-other hardware device except a personal computer, combine any part of the SDK with other software,
-or distribute any software or device incorporating a part of the SDK. 
-</p> 
-<p> 
-	3.4 Use, reproduction and distribution of components of the SDK licensed under an open
-source software license are governed solely by the terms of that open source software license and
-not this License Agreement.
-</p> 
-<p> 
-	3.5 You agree that the form and nature of the SDK that Google provides may change without
-prior notice to you and that future versions of the SDK may be incompatible with applications
-developed on previous versions of the SDK. You agree that Google may stop (permanently or
-temporarily) providing the SDK (or any features within the SDK) to you or to users generally at
-Google's sole discretion, without prior notice to you.
-</p> 
-<p> 
-	3.6 Nothing in this License Agreement gives you a right to use any of Google's trade names,
-trademarks, service marks, logos, domain names, or other distinctive brand features.
-</p> 
-<p> 
-	3.7 You agree that you will not remove, obscure, or alter any proprietary rights notices
-(including copyright and trademark notices) that may be affixed to or contained within the SDK.
-</p> 
-<h2> 
-	4. Use of the SDK by You
-</h2> 
-<p> 
-	4.1 Google agrees that it obtains no right, title or interest from you (or your licensors)
-under this License Agreement in or to any software applications that you develop using the SDK,
-including any intellectual property rights that subsist in those applications. 
-</p> 
-<p> 
-	4.2 You agree to use the SDK and write applications only for purposes that are permitted by
-(a) this License Agreement and (b) any applicable law, regulation or generally accepted practices or
-guidelines in the relevant jurisdictions (including any laws regarding the export of data or
-software to and from the United States or other relevant countries).
-</p> 
-<p> 
-	4.3 You agree that if you use the SDK to develop applications for general public users, you
-will protect the privacy and legal rights of those users. If the users provide you with user names,
-passwords, or other login information or personal information, your must make the users aware that
-the information will be available to your application, and you must provide legally adequate privacy
-notice and protection for those users. If your application stores personal or sensitive information
-provided by users, it must do so securely. If the user provides your application with Google Account
-information, your application may only use that information to access the user's Google Account
-when, and for the limited purposes for which, the user has given you permission to do so.
-</p> 
-<p> 
-	4.4 You agree that you will not engage in any activity with the SDK, including the
-development or distribution of an application, that interferes with, disrupts, damages, or accesses
-in an unauthorized manner the servers, networks, or other properties or services of any third party
-including, but not limited to, Google or any mobile communications carrier.
-</p> 
-<p> 
-	4.5 You agree that you are solely responsible for (and that Google has no responsibility to
-you or to any third party for) any data, content, or resources that you create, transmit or display
-through the Android platform and/or applications for the Android platform, and for the consequences
-of your actions (including any loss or damage which Google may suffer) by doing so.
-</p> 
-<p> 
-	4.6 You agree that you are solely responsible for (and that Google has no responsibility to
-you or to any third party for) any breach of your obligations under this License Agreement, any
-applicable third party contract or Terms of Service, or any applicable law or regulation, and for
-the consequences (including any loss or damage which Google or any third party may suffer) of any
-such breach.
-</p> 
-<h2> 
-	5. Your Developer Credentials
-</h2> 
-<p> 
-	5.1 You agree that you are responsible for maintaining the confidentiality of any developer
-credentials that may be issued to you by Google or which you may choose yourself and that you will
-be solely responsible for all applications that are developed under your developer credentials.
-</p> 
-<h2> 
-	6. Privacy and Information
-</h2> 
-<p> 
-	6.1 In order to continually innovate and improve the SDK, Google may collect certain usage
-statistics from the software including but not limited to a unique identifier, associated IP
-address, version number of the software, and information on which tools and/or services in the SDK
-are being used and how they are being used. Before any of this information is collected, the SDK
-will notify you and seek your consent. If you withhold consent, the information will not be
-collected.
-</p> 
-<p> 
-	6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in
-accordance with Google's Privacy Policy.
-</p> 
-<h2> 
-	7. Third Party Applications for the Android Platform
-</h2> 
-<p> 
-	7.1 If you use the SDK to run applications developed by a third party or that access data,
-content or resources provided by a third party, you agree that Google is not responsible for those
-applications, data, content, or resources. You understand that all data, content or resources which
-you may access through such third party applications are the sole responsibility of the person from
-which they originated and that Google is not liable for any loss or damage that you may experience
-as a result of the use or access of any of those third party applications, data, content, or
-resources.
-</p> 
-<p> 
-	7.2 You should be aware the data, content, and resources presented to you through such a
-third party application may be protected by intellectual property rights which are owned by the
-providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan,
-sell, distribute or create derivative works based on these data, content, or resources (either in
-whole or in part) unless you have been specifically given permission to do so by the relevant
-owners.
-</p> 
-<p> 
-	7.3 You acknowledge that your use of such third party applications, data, content, or
-resources may be subject to separate terms between you and the relevant third party. In that case,
-this License Agreement does not affect your legal relationship with these third parties.
-</p> 
-<h2> 
-	8. Using Android APIs
-</h2> 
-<p> 
-	8.1 Google Data APIs
-</p> 
-<p> 
-	8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be
-protected by intellectual property rights which are owned by Google or those parties that provide
-the data (or by other persons or companies on their behalf). Your use of any such API may be subject
-to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create
-derivative works based on this data (either in whole or in part) unless allowed by the relevant
-Terms of Service.
-</p> 
-<p> 
-	8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree
-that you shall retrieve data only with the user's explicit consent and only when, and for the
-limited purposes for which, the user has given you permission to do so. 
- 
-</p> 
-<h2> 
-	9. Terminating this License Agreement
-</h2> 
-<p> 
-	9.1 This License Agreement will continue to apply until terminated by either you or Google
-as set out below.
-</p> 
-<p> 
-	9.2 If you want to terminate this License Agreement, you may do so by ceasing your use of
-the SDK and any relevant developer credentials.
-</p> 
-<p> 
-	9.3 Google may at any time, terminate this License Agreement with you if:
-</p> 
-<p> 
-	(A) you have breached any provision of this License Agreement; or
-</p> 
-<p> 
-	(B) Google is required to do so by law; or
-</p> 
-<p> 
-	(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has
-terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-</p> 
-<p> 
-	(D) Google decides to no longer providing the SDK or certain parts of the SDK to users in
-the country in which you are resident or from which you use the service, or the provision of the SDK
-or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially
-viable.
-</p> 
-<p> 
-	9.4 When this License Agreement comes to an end, all of the legal rights, obligations and
-liabilities that you and Google have benefited from, been subject to (or which have accrued over
-time whilst this License Agreement has been in force) or which are expressed to continue
-indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall
-continue to apply to such rights, obligations and liabilities indefinitely.
-</p> 
-<h2> 
-	10. DISCLAIMER OF WARRANTIES
-</h2> 
-<p> 
-	10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND
-THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-</p> 
-<p> 
-	10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE
-OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR
-COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-</p> 
-<p> 
-	10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER
-EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-</p> 
-<h2> 
-	11. LIMITATION OF LIABILITY
-</h2> 
-<p> 
-	11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND
-ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY
-LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN
-AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-</p> 
-<h2> 
-	12. Indemnification
-</h2> 
-<p> 
-	12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold
-harmless Google, its affiliates and their respective directors, officers, employees and agents from
-and against any and all claims, actions, suits or proceedings, as well as any and all losses,
-liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or
-accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any
-copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any
-person or defames any person or violates their rights of publicity or privacy, and (c) any
-non-compliance by you with this License Agreement.
-</p> 
-<h2> 
-	13. Changes to the License Agreement
-</h2> 
-<p> 
-	13.1 Google may make changes to the License Agreement as it distributes new versions of the
-SDK. When these changes are made, Google will make a new version of the License Agreement available
-on the website where the SDK is made available.
-</p> 
-<h2> 
-	14. General Legal Terms
-</h2> 
-<p> 
-	14.1 This License Agreement constitute the whole legal agreement between you and Google and
-govern your use of the SDK (excluding any services which Google may provide to you under a separate
-written agreement), and completely replace any prior agreements between you and Google in relation
-to the SDK.
-</p> 
-<p> 
-	14.2 You agree that if Google does not exercise or enforce any legal right or remedy which
-is contained in this License Agreement (or which Google has the benefit of under any applicable
-law), this will not be taken to be a formal waiver of Google's rights and that those rights or
-remedies will still be available to Google.
-</p> 
-<p> 
-	14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any
-provision of this License Agreement is invalid, then that provision will be removed from this
-License Agreement without affecting the rest of this License Agreement. The remaining provisions of
-this License Agreement will continue to be valid and enforceable.
-</p> 
-<p> 
-	14.4 You acknowledge and agree that each member of the group of companies of which Google is
-the parent shall be third party beneficiaries to this License Agreement and that such other
-companies shall be entitled to directly enforce, and rely upon, any provision of this License
-Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person
-or company shall be third party beneficiaries to this License Agreement.
-</p> 
-<p> 
-	14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS.
-YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE
-SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-</p> 
-<p> 
-	14.6 The rights granted in this License Agreement may not be assigned or transferred by
-either you or Google without the prior written approval of the other party. Neither you nor Google
-shall be permitted to delegate their responsibilities or obligations under this License Agreement
-without the prior written approval of the other party.
-</p> 
-<p> 
-	14.7 This License Agreement, and your relationship with Google under this License Agreement,
-shall be governed by the laws of the State of California without regard to its conflict of laws
-provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located
-within the county of Santa Clara, California to resolve any legal matter arising from this License
-Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for
-injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-</p> 
-<p> 
-	<em>April 10, 2009</em> 
-</p> 
\ No newline at end of file
+
+<p>This is the Android Software Development Kit License Agreement.</p>
+
+<h2>
+  1. Introduction
+</h2>
+
+<p>
+  1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and
+  specifically including the Android system files, packaged APIs, and Google APIs add-ons) is
+  licensed to you subject to the terms of the License Agreement. The License Agreement forms a
+  legally binding contract between you and Google in relation to your use of the SDK.
+</p>
+
+<p>
+  1.2 "Android" means the Android software stack for devices, as made available under the Android
+  Open Source Project, which is located at the following URL: http://source.android.com/, as
+  updated from time to time.
+</p>
+
+<p>
+  1.3 A "compatible implementation" means any Android device that (i) complies with the Android
+  Compatibility Definition document, which can be found at the Android compatibility website
+  (http://source.android.com/compatibility) and which may be updated from time to time; and (ii)
+  successfully passes the Android Compatibility Test Suite (CTS).
+</p>
+
+<p>
+  1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600
+  Amphitheatre Parkway, Mountain View, CA 94043, United States.
+</p>
+
+<h2>
+  2. Accepting this License Agreement
+</h2>
+
+<p>
+  2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the
+  SDK if you do not accept the License Agreement.
+</p>
+
+<p>
+  2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
+</p>
+
+<p>
+  2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred
+  from receiving the SDK under the laws of the United States or other countries, including the
+  country in which you are resident or from which you use the SDK.
+</p>
+
+<p>
+  2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other
+  entity, you represent and warrant that you have full legal authority to bind your employer or
+  such entity to the License Agreement. If you do not have the requisite authority, you may not
+  accept the License Agreement or use the SDK on behalf of your employer or other entity.
+</p>
+
+<h2>
+  3. SDK License from Google
+</h2>
+
+<p>
+  3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide,
+  royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely
+  to develop applications for compatible implementations of Android.
+</p>
+
+<p>
+  3.2 You may not use this SDK to develop applications for other platforms (including
+  non-compatible implementations of Android) or to develop another SDK. You are of course free to
+  develop applications for other platforms, including non-compatible implementations of Android,
+  provided that this SDK is not used for that purpose.
+</p>
+
+<p>
+  3.3 You agree that Google or third parties own all legal right, title and interest in and to the
+  SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property
+  Rights" means any and all rights under patent law, copyright law, trade secret law, trademark
+  law, and any and all other proprietary rights. Google reserves all rights not expressly granted
+  to you.
+</p>
+
+<p>
+  3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.
+  Except to the extent required by applicable third party licenses, you may not: (a) copy (except
+  for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or
+  create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a
+  mobile handset or any other hardware device except a personal computer, combine any part of the
+  SDK with other software, or distribute any software or device incorporating a part of the SDK.
+</p>
+
+<p>
+  3.5 Use, reproduction and distribution of components of the SDK licensed under an open source
+  software license are governed solely by the terms of that open source software license and not
+  the License Agreement.
+</p>
+
+<p>
+  3.6 You agree that the form and nature of the SDK that Google provides may change without prior
+  notice to you and that future versions of the SDK may be incompatible with applications developed
+  on previous versions of the SDK. You agree that Google may stop (permanently or temporarily)
+  providing the SDK (or any features within the SDK) to you or to users generally at Google's sole
+  discretion, without prior notice to you.
+</p>
+
+<p>
+  3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names,
+  trademarks, service marks, logos, domain names, or other distinctive brand features.
+</p>
+
+<p>
+  3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices
+  (including copyright and trademark notices) that may be affixed to or contained within the SDK.
+</p>
+
+<h2>
+  4. Use of the SDK by You
+</h2>
+
+<p>
+  4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under
+  the License Agreement in or to any software applications that you develop using the SDK,
+  including any intellectual property rights that subsist in those applications.
+</p>
+
+<p>
+  4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a)
+  the License Agreement and (b) any applicable law, regulation or generally accepted practices or
+  guidelines in the relevant jurisdictions (including any laws regarding the export of data or
+  software to and from the United States or other relevant countries).
+</p>
+
+<p>
+  4.3 You agree that if you use the SDK to develop applications for general public users, you will
+  protect the privacy and legal rights of those users. If the users provide you with user names,
+  passwords, or other login information or personal information, you must make the users aware that
+  the information will be available to your application, and you must provide legally adequate
+  privacy notice and protection for those users. If your application stores personal or sensitive
+  information provided by users, it must do so securely. If the user provides your application with
+  Google Account information, your application may only use that information to access the user's
+  Google Account when, and for the limited purposes for which, the user has given you permission to
+  do so.
+</p>
+
+<p>
+  4.4 You agree that you will not engage in any activity with the SDK, including the development or
+  distribution of an application, that interferes with, disrupts, damages, or accesses in an
+  unauthorized manner the servers, networks, or other properties or services of any third party
+  including, but not limited to, Google or any mobile communications carrier.
+</p>
+
+<p>
+  4.5 You agree that you are solely responsible for (and that Google has no responsibility to you
+  or to any third party for) any data, content, or resources that you create, transmit or display
+  through Android and/or applications for Android, and for the consequences of your actions
+  (including any loss or damage which Google may suffer) by doing so.
+</p>
+
+<p>
+  4.6 You agree that you are solely responsible for (and that Google has no responsibility to you
+  or to any third party for) any breach of your obligations under the License Agreement, any
+  applicable third party contract or Terms of Service, or any applicable law or regulation, and for
+  the consequences (including any loss or damage which Google or any third party may suffer) of any
+  such breach.
+</p>
+
+<h2>
+  5. Your Developer Credentials
+</h2>
+
+<p>
+  5.1 You agree that you are responsible for maintaining the confidentiality of any developer
+  credentials that may be issued to you by Google or which you may choose yourself and that you
+  will be solely responsible for all applications that are developed under your developer
+  credentials.
+</p>
+
+<h2>
+  6. Privacy and Information
+</h2>
+
+<p>
+  6.1 In order to continually innovate and improve the SDK, Google may collect certain usage
+  statistics from the software including but not limited to a unique identifier, associated IP
+  address, version number of the software, and information on which tools and/or services in the
+  SDK are being used and how they are being used. Before any of this information is collected, the
+  SDK will notify you and seek your consent. If you withhold consent, the information will not be
+  collected.
+</p>
+
+<p>
+  6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in
+  accordance with Google's Privacy Policy.
+</p>
+
+<h2>
+  7. Third Party Applications
+</h2>
+
+<p>
+  7.1 If you use the SDK to run applications developed by a third party or that access data,
+  content or resources provided by a third party, you agree that Google is not responsible for
+  those applications, data, content, or resources. You understand that all data, content or
+  resources which you may access through such third party applications are the sole responsibility
+  of the person from which they originated and that Google is not liable for any loss or damage
+  that you may experience as a result of the use or access of any of those third party
+  applications, data, content, or resources.
+</p>
+
+<p>
+  7.2 You should be aware the data, content, and resources presented to you through such a third
+  party application may be protected by intellectual property rights which are owned by the
+  providers (or by other persons or companies on their behalf). You may not modify, rent, lease,
+  loan, sell, distribute or create derivative works based on these data, content, or resources
+  (either in whole or in part) unless you have been specifically given permission to do so by the
+  relevant owners.
+</p>
+
+<p>
+  7.3 You acknowledge that your use of such third party applications, data, content, or resources
+  may be subject to separate terms between you and the relevant third party. In that case, the
+  License Agreement does not affect your legal relationship with these third parties.
+</p>
+
+<h2>
+  8. Using Android APIs
+</h2>
+
+<p>
+  8.1 Google Data APIs
+</p>
+
+<p>
+  8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be
+  protected by intellectual property rights which are owned by Google or those parties that provide
+  the data (or by other persons or companies on their behalf). Your use of any such API may be
+  subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute
+  or create derivative works based on this data (either in whole or in part) unless allowed by the
+  relevant Terms of Service.
+</p>
+
+<p>
+  8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that
+  you shall retrieve data only with the user's explicit consent and only when, and for the limited
+  purposes for which, the user has given you permission to do so.
+</p>
+
+<h2>
+  9. Terminating this License Agreement
+</h2>
+
+<p>
+  9.1 The License Agreement will continue to apply until terminated by either you or Google as set
+  out below.
+</p>
+
+<p>
+  9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK
+  and any relevant developer credentials.
+</p>
+
+<p>
+  9.3 Google may at any time, terminate the License Agreement with you if:
+</p>
+
+<p>
+  (A) you have breached any provision of the License Agreement; or
+</p>
+
+<p>
+  (B) Google is required to do so by law; or
+</p>
+
+<p>
+  (C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has
+  terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
+</p>
+
+<p>
+  (D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the
+  country in which you are resident or from which you use the service, or the provision of the SDK
+  or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially
+  viable.
+</p>
+
+<p>
+  9.4 When the License Agreement comes to an end, all of the legal rights, obligations and
+  liabilities that you and Google have benefited from, been subject to (or which have accrued over
+  time whilst the License Agreement has been in force) or which are expressed to continue
+  indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall
+  continue to apply to such rights, obligations and liabilities indefinitely.
+</p>
+
+<h2>
+  10. DISCLAIMER OF WARRANTIES
+</h2>
+
+<p>
+  10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT
+  THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+</p>
+
+<p>
+  10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE
+  SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR
+  COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
+</p>
+
+<p>
+  10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER
+  EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+</p>
+
+<h2>
+  11. LIMITATION OF LIABILITY
+</h2>
+
+<p>
+  11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS
+  LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT,
+  INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING
+  ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD
+  HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+</p>
+
+<h2>
+  12. Indemnification
+</h2>
+
+<p>
+  12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless
+  Google, its affiliates and their respective directors, officers, employees and agents from and
+  against any and all claims, actions, suits or proceedings, as well as any and all losses,
+  liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or
+  accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes
+  any copyright, trademark, trade secret, trade dress, patent or other intellectual property right
+  of any person or defames any person or violates their rights of publicity or privacy, and (c) any
+  non-compliance by you with the License Agreement.
+</p>
+
+<h2>
+  13. Changes to the License Agreement
+</h2>
+13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK.
+When these changes are made, Google will make a new version of the License Agreement available on
+the website where the SDK is made available.
+<h2>
+  14. General Legal Terms
+</h2>
+
+<p>
+  14.1 The License Agreement constitutes the whole legal agreement between you and Google and
+  governs your use of the SDK (excluding any services which Google may provide to you under a
+  separate written agreement), and completely replaces any prior agreements between you and Google
+  in relation to the SDK.
+</p>
+
+<p>
+  14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is
+  contained in the License Agreement (or which Google has the benefit of under any applicable law),
+  this will not be taken to be a formal waiver of Google's rights and that those rights or remedies
+  will still be available to Google.
+</p>
+
+<p>
+  14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any
+  provision of the License Agreement is invalid, then that provision will be removed from the
+  License Agreement without affecting the rest of the License Agreement. The remaining provisions
+  of the License Agreement will continue to be valid and enforceable.
+</p>
+
+<p>
+  14.4 You acknowledge and agree that each member of the group of companies of which Google is the
+  parent shall be third party beneficiaries to the License Agreement and that such other companies
+  shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that
+  confers a benefit on (or rights in favor of) them. Other than this, no other person or company
+  shall be third party beneficiaries to the License Agreement.
+</p>
+
+<p>
+  14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU
+  MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE
+  SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
+</p>
+
+<p>
+  14.6 The rights granted in the License Agreement may not be assigned or transferred by either you
+  or Google without the prior written approval of the other party. Neither you nor Google shall be
+  permitted to delegate their responsibilities or obligations under the License Agreement without
+  the prior written approval of the other party.
+</p>
+
+<p>
+  14.7 The License Agreement, and your relationship with Google under the License Agreement, shall
+  be governed by the laws of the State of California without regard to its conflict of laws
+  provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located
+  within the county of Santa Clara, California to resolve any legal matter arising from the License
+  Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for
+  injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+</p>
+
+<p>
+  <em>November 20, 2015</em>
+</p>
\ No newline at end of file
diff --git a/docs/html/sdk/win-usb.jd b/docs/html/sdk/win-usb.jd
index c287a0c..d4948eb 100644
--- a/docs/html/sdk/win-usb.jd
+++ b/docs/html/sdk/win-usb.jd
@@ -19,45 +19,47 @@
 This is the Android Software Development Kit License Agreement
 
 <h3>1. Introduction</h3>
-1.1 The Android Software Development Kit (referred to in this License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of this License Agreement. This License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
+1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
 
 1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
 
-1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
 
 
 <h3>2. Accepting this License Agreement</h3>
-2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use the SDK if you do not accept this License Agreement.
+2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
 
-2.2 By clicking to accept, you hereby agree to the terms of this License Agreement.
+2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
 
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries including the country in which you are resident or from which you use the SDK.
+2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
 
-2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to this License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
+2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
 
 
 <h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable and non-exclusive license to use the SDK solely to develop applications to run on the Android platform.
+3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
 
-3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
 
-3.3 You may not use the SDK for any purpose not expressly permitted by this License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
 
-3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.
+3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
 
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not this License Agreement.
+3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
 
 3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
 
-3.7 Nothing in this License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
 
 3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
 
 
 <h3>4. Use of the SDK by You</h3>
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under this License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
+4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
 
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) this License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
+4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
 
 4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
 
@@ -65,7 +67,7 @@
 
 4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
 
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under this License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
+4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
 
 
 <h3>5. Your Developer Credentials</h3>
@@ -83,7 +85,7 @@
 
 7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
 
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, this License Agreement does not affect your legal relationship with these third parties.
+7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
 
 
 <h3>8. Using Android APIs</h3>
@@ -95,17 +97,17 @@
 
 
 <h3>9. Terminating this License Agreement</h3>
-9.1 This License Agreement will continue to apply until terminated by either you or Google as set out below.
+9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
 
-9.2 If you want to terminate this License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
+9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
 
-9.3 Google may at any time, terminate this License Agreement with you if:
-(A) you have breached any provision of this License Agreement; or
+9.3 Google may at any time, terminate the License Agreement with you if:
+(A) you have breached any provision of the License Agreement; or
 (B) Google is required to do so by law; or
 (C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
 (D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
 
-9.4 When this License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst this License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
+9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
 
 
 <h3>10. DISCLAIMER OF WARRANTIES</h3>
@@ -121,7 +123,7 @@
 
 
 <h3>12. Indemnification</h3>
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with this License Agreement.
+12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
 
 
 <h3>13. Changes to the License Agreement</h3>
@@ -129,22 +131,21 @@
 
 
 <h3>14. General Legal Terms</h3>
-14.1 This License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
+14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
 
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in this License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
+14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
 
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of this License Agreement is invalid, then that provision will be removed from this License Agreement without affecting the rest of this License Agreement. The remaining provisions of this License Agreement will continue to be valid and enforceable.
+14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
 
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to this License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of this License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to this License Agreement.
+14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
 
 14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
 
-14.6 The rights granted in this License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under this License Agreement without the prior written approval of the other party.
+14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
 
-14.7 This License Agreement, and your relationship with Google under this License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from this License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
 
-
-<em>November 13, 2012</em>
+<em>November 20, 2015</em>
 </div><!-- thin wrapper around tos doc -->
 
 
@@ -153,7 +154,7 @@
 <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
 <label id="agreeLabel" for="agree">I have read and agree with the above terms and conditions</label>
 </p>
-<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+<p><a href="" class="dac-button dac-raised dac-primary disabled ndk" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
 </div>
 
 
diff --git a/docs/html/support.jd b/docs/html/support.jd
index 94d6478..0d87961 100644
--- a/docs/html/support.jd
+++ b/docs/html/support.jd
@@ -1,8 +1,7 @@
-page.title=Developer Support
+page.title=Developer Support Resources
 page.type=about
 fullpage=1
-page.metaDescription=Resources available to help you report and resolve issues while you are developing apps for Android.
-page.image=/images/android-support-card.png
+page.metaDescription=Links to community and support resources for Android developers.
 
 @jd:body
 
@@ -42,8 +41,6 @@
   <p>
     <a href="http://code.google.com/p/android/issues/entry?template=Developer%20Documentation">
       Report documentation bug</a><br />
-    <a href="https://code.google.com/p/android/issues/entry?template=User%20bug%20report">
-      Report device bug</a><br />
     <a href="https://code.google.com/p/android/issues/entry?template=Developer%20bug%20report">
       Report platform bug</a><br />
   </p>
diff --git a/docs/html/tools/_book.yaml b/docs/html/tools/_book.yaml
new file mode 100644
index 0000000..1006e6a
--- /dev/null
+++ b/docs/html/tools/_book.yaml
@@ -0,0 +1,280 @@
+toc:
+- title: Download
+  path: /sdk/index.html
+  section:
+  - title: Installing the SDK
+    path: /sdk/installing/index.html
+  - title: Adding SDK Packages
+    path: /sdk/installing/adding-packages.html
+
+- title: Workflow
+  path: /tools/workflow/index.html
+  section:
+  - title: Projects
+    path: /tools/projects/index.html
+  - title: Build and Run
+    path: /tools/building/index.html
+  - title: Virtual Devices
+    path: /tools/devices/index.html
+  - title: Hardware Devices
+    path: /tools/device.html
+    section:
+    - title: USB Drivers
+      path: /tools/extras/oem-usb.html
+  - title: Testing
+    path: /tools/testing/index.html
+  - title: Debugging
+    path: /tools/debugging/index.html
+  - title: Publishing
+    path: /tools/publishing/publishing_overview.html
+    custom_link_attributes:
+    - zh-cn-lang="发布概述"
+    section:
+    - title: Preparing for Release
+      path: /tools/publishing/preparing.html
+      custom_link_attributes:
+      - zh-cn-lang="准备发布"
+    - title: Versioning Your Apps
+      path: /tools/publishing/versioning.html
+    - title: Signing Your Apps
+      path: /tools/publishing/app-signing.html
+
+- title: Android Studio
+  path: /tools/studio/index.html
+  section:
+  - title: Features
+    path: /tools/studio/studio-features.html
+  - title: Configuration
+    path: /tools/studio/studio-config.html
+    section:
+    - title: SDK Manager
+      path: /tools/help/sdk-manager.html
+  - title: Project Tools
+    path: /sdk/installing/create-project.html
+    section:
+    - title: Project Structure Management
+      path: /tools/help/project-mgmt.html
+    - title: Using Code Templates
+      path: /tools/projects/templates.html
+    - title: Building and Running
+      path: /tools/building/building-studio.html
+  - title: Code Tools
+    path: /tools/studio/code-tools.html
+    section:
+    - title: Improving Your Code with lint
+      path: /tools/debugging/improving-w-lint.html
+    - title: Improving Code Inspection with Annotations
+      path: /tools/debugging/annotations.html
+    - title: Deep Link and App Indexing API Support
+      path: /tools/help/app-link-indexing.html
+  - title: UI Tools
+    path: /tools/studio/ui-tools.html
+    section:
+    - title: Layout Editor
+      path: /sdk/installing/studio-layout.html
+    - title: Theme Editor
+      path: /tools/help/theme-editor.html
+    - title: Translations Editor
+      path: /tools/help/translations-editor.html
+    - title: Vector Asset Studio
+      path: /tools/help/vector-asset-studio.html
+    - title: Image Asset Studio
+      path: /tools/help/image-asset-studio.html
+  - title: AVD Manager
+    path: /tools/devices/managing-avds.html
+  - title: Debugging Tools
+    path: /tools/debugging/debugging-studio.html
+    section:
+    - title: DDMS
+      path: /tools/debugging/ddms.html
+  - title: Android Monitor
+    path: /tools/help/android-monitor.html
+    section:
+    - title: logcat Monitor
+      path: /tools/help/am-logcat.html
+    - title: Memory Monitor
+      path: /tools/help/am-memory.html
+    - title: CPU Monitor
+      path: /tools/help/am-cpu.html
+    - title: GPU Monitor
+      path: /tools/help/am-gpu.html
+    - title: Network Monitor
+      path: /tools/help/am-network.html
+  - title: Tips and Tricks
+    path: /sdk/installing/studio-tips.html
+  - title: Migrating from Eclipse ADT
+    path: /sdk/installing/migrate.html
+    section:
+    - title: Transition Guide
+      path: /tools/studio/eclipse-transition-guide.html
+
+- title: Tools Help
+  path: /tools/help/index.html
+  section:
+  - title: adb
+    path: /tools/help/adb.html
+  - title: android
+    path: /tools/help/android.html
+    section:
+    - title: Managing AVDs
+      path: /tools/devices/managing-avds-cmdline.html
+    - title: Managing Projects
+      path: /tools/projects/projects-cmdline.html
+  - title: AVD Manager
+    path: /tools/help/avd-manager.html
+  - title: bmgr
+    path: /tools/help/bmgr.html
+  - title: Desktop Head Unit
+    path: /tools/help/desktop-head-unit.html
+  - title: Device Monitor
+    path: /tools/help/monitor.html
+  - title: dmtracedump
+    path: /tools/help/dmtracedump.html
+  - title: Draw 9-Patch
+    path: /tools/help/draw9patch.html
+  - title: etc1tool
+    path: /tools/help/etc1tool.html
+  - title: Hierarchy Viewer
+    path: /tools/help/hierarchy-viewer.html
+    section:
+    - title: Optimizing your UI
+      path: /tools/debugging/debugging-ui.html
+  - title: hprof-conv
+    path: /tools/help/hprof-conv.html
+  - title: jobb
+    path: /tools/help/jobb.html
+  - title: lint
+    path: /tools/help/lint.html
+  - title: logcat
+    path: /tools/help/logcat.html
+    section:
+    - title: Reading and Writing Logs
+      path: /tools/debugging/debugging-log.html
+  - title: mksdcard
+    path: /tools/help/mksdcard.html
+  - title: ProGuard
+    path: /tools/help/proguard.html
+  - title: Tracer for OpenGL ES
+    path: /tools/help/gltracer.html
+  - title: Virtual Device Emulator
+    path: /tools/devices/emulator.html
+    section:
+    - title: Command Reference
+      path: /tools/help/emulator.html
+  - title: zipalign
+    path: /tools/help/zipalign.html
+
+- title: Build System
+  path: /sdk/installing/studio-build.html
+  section:
+  - title: Running Gradle Builds
+    path: /tools/building/building-cmdline.html
+  - title: Configuring Gradle Builds
+    path: /tools/building/configuring-gradle.html
+  - title: Android Plugin for Gradle
+    path: /tools/building/plugin-for-gradle.html
+  - title: Manifest Merging
+    path: /tools/building/manifest-merge.html
+  - title: Apps Over 65K Methods
+    path: /tools/building/multidex.html
+
+- title: Performance Tools
+  path: /tools/performance/index.html
+  section:
+  - title: Overdraw Debugger
+    path: /tools/performance/debug-gpu-overdraw/index.html
+  - title: Rendering Profiler
+    path: /tools/performance/profile-gpu-rendering/index.html
+  - title: Hierarchy Viewer
+    path: /tools/performance/hierarchy-viewer/index.html
+    section:
+    - title: Setup
+      path: /tools/performance/hierarchy-viewer/setup.html
+    - title: Profiling
+      path: /tools/performance/hierarchy-viewer/profiling.html
+  - title: Memory Profilers
+    path: /tools/performance/comparison.html
+    section:
+    - title: Memory Monitor
+      path: /tools/performance/memory-monitor/index.html
+    - title: Heap Viewer
+      path: /tools/performance/heap-viewer/index.html
+    - title: Allocation Tracker
+      path: /tools/performance/allocation-tracker/index.html
+    - title: Investigating Your RAM Usage
+      path: /tools/debugging/debugging-memory.html
+  - title: Traceview
+    path: /tools/debugging/debugging-tracing.html
+    section:
+    - title: Walkthrough
+      path: /tools/performance/traceview/index.html
+    - title: Command Reference
+      path: /tools/help/traceview.html
+  - title: Systrace
+    path: /tools/debugging/systrace.html
+    section:
+    - title: Walkthrough
+      path: /tools/performance/systrace/index.html
+    - title: Command Reference
+      path: /tools/help/systrace.html
+  - title: Battery Profilers
+    path: /tools/performance/batterystats-battery-historian/index.html
+    section:
+    - title: Historian Charts
+      path: /tools/performance/batterystats-battery-historian/charts.html
+
+- title: Testing Tools
+  path: /tools/testing/testing-tools.html
+  section:
+  - title: Testing Concepts
+    path: /tools/testing/testing_android.html
+  - title: Testing Support Library
+    path: /tools/testing-support-library/index.html
+    section:
+    - title: API Reference
+      path: /reference/android/support/test/package-summary.html
+  - title: Testing with Android Studio
+    path: /training/testing/start/index.html
+  - title: Testing from the Command-Line
+    path: /tools/testing/testing_otheride.html
+  - title: monkey
+    path: /tools/help/monkey.html
+  - title: monkeyrunner
+    path: /tools/help/monkeyrunner_concepts.html
+    section:
+    - title: MonkeyDevice
+      path: /tools/help/MonkeyDevice.html
+    - title: MonkeyImage
+      path: /tools/help/MonkeyImage.html
+    - title: MonkeyRunner
+      path: /tools/help/MonkeyRunner.html
+
+- title: Support Library
+  path: /tools/support-library/index.html
+  section:
+  - title: Features
+    path: /tools/support-library/features.html
+  - title: Setup
+    path: /tools/support-library/setup.html
+
+- title: Data Binding Library
+  path: /tools/data-binding/guide.html
+
+- title: Revisions
+  path: /tools/revisions/index.html
+  section:
+  - title: Android Studio
+    path: /tools/revisions/studio.html
+  - title: SDK Tools
+    path: /tools/sdk/tools-notes.html
+  - title: SDK Build Tools
+    path: /tools/revisions/build-tools.html
+  - title: Android Plugin for Gradle
+    path: /tools/revisions/gradle-plugin.html
+  - title: SDK Platforms
+    path: /tools/revisions/platforms.html
+  - title: ADT Plugin
+    path: /tools/sdk/eclipse-adt.html
+
+- title: NDK
+  path: /tools/sdk/ndk/index.html
diff --git a/docs/html/tools/adk/adk.jd b/docs/html/tools/adk/adk.jd
old mode 100644
new mode 100755
index 3f45c3c..d602497
--- a/docs/html/tools/adk/adk.jd
+++ b/docs/html/tools/adk/adk.jd
@@ -299,46 +299,8 @@
   ADK board. The ADK board receives commands such as lighting up the board's LEDs or sends data
   from the board such as joystick movement and temperature readings.</p>
 
-  <p>To install and run the application in Eclipse:</p>
-
-  <ol>
-    <li><a href="http://code.google.com/android/add-ons/google-apis/installing.html">Install the
-    Google APIs API Level 10 add-on library</a>, which includes the Open Accessory library for
-    2.3.4 devices that support accessory mode. This library is also forward compatible with Android
-    3.1 or newer devices that support accessory mode. If you only care about Android 3.1 or newer
-    devices, all you need is API Level 12. For more information on deciding which API level to use,
-    see the <a href="{@docRoot}guide/topics/connectivity/usb/accessory.html#choosing">USB Accessory</a>
-    documentation.</li>
-
-    <li>Click <strong>File &gt; New &gt; Project...</strong>, then select <strong>Android &gt;
-    Android Project</strong></li>
-
-    <li>In the <strong>Project name:</strong> field, type DemoKit.</li>
-
-    <li>Choose <strong>Create project from existing source</strong>, click <strong>Browse</strong>,
-    select the <code>app</code> directory, click <strong>Open</strong> to close that dialog and then
-    click <strong>Finish</strong>.</li>
-
-    <li>For Build Target, select <strong>Google APIs</strong> (Platform 2.3.3, API Level 10).
-
-      <p class="note"><strong>Note:</strong> Even though the add-on is labeled as
-      <strong>2.3.3</strong>, the newest Google API add-on library for API level 10 adds USB Open
-      Accessory API support for 2.3.4 devices.</p>
-    </li>
-
-    <li>Click <strong>Finish</strong>.</li>
-
-    <li>Install the application to your device.</li>
-
-    <li>Connect the ADK board (USB-A) to your Android-powered device (micro-USB). Ensure that the
-    power cable to the accessory is plugged in or that the micro-USB port on the accessory is
-    connected to your computer for power (this also allows you to <a href="#monitoring">monitor the
-    ADK board</a>). When connected, accept the prompt that asks for whether or not to open the
-    DemoKit application to connect to the accessory. If the prompt does not show up, connect and
-    reconnect the accessory.</li>
-  </ol>
-
-  <p>You can now interact with the ADK board by moving the color LED or servo sliders (make sure
+  <p>After the application is installed, you can interact with the ADK board by moving the color
+  LED or servo sliders (make sure
   the servos are connected) or by pressing the relay buttons in the application. On the ADK shield,
   you can press the buttons and move the joystick to see their outputs displayed in the
   application.</p>
diff --git a/docs/html/tools/building/building-cmdline-ant.jd b/docs/html/tools/building/building-cmdline-ant.jd
deleted file mode 100644
index add6ca2..0000000
--- a/docs/html/tools/building/building-cmdline-ant.jd
+++ /dev/null
@@ -1,389 +0,0 @@
-page.title=Building and Running from the Command Line
-parent.title=Building and Running
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-      <ol>
-        <li><a href="#DebugMode">Building in Debug Mode</a></li>
-        <li><a href="#ReleaseMode">Building in Release Mode</a>
-          <ol>
-            <li><a href="#ManualReleaseMode">Build unsigned</a></li>
-            <li><a href="#AutoReleaseMode">Build signed and aligned</a></li>
-            <li><a href="#OnceBuilt">Once built and signed in release mode</a></li>
-          </ol>
-        </li>
-        <li><a href="#RunningOnEmulator">Running on the Emulator</a></li>
-        <li><a href="#RunningOnDevice">Running on a Device</a></li>
-        <li><a href="#Signing">Application Signing</a></li>
-        <li><a href="#AntReference">Ant Command Reference</a></li>
-      </ol>
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}tools/devices/managing-avds-cmdline.html">Managing AVDs from
-the Command Line</a></li>
-    <li><a href="{@docRoot}tools/devices/emulator.html">Using the Android
-Emulator</a></li>
-    <li><a href="{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a></li>
-  </ol>
-    </div>
-  </div>
-
-<p class="caution">
-  <strong>Important:</strong> Support for Ant as a build tool for Android is ending, per our
-  <a href="http://android-developers.blogspot.com/2015/06/an-update-on-eclipse-android-developer.html"
-  class="external-link">announcement</a>. You should migrate your app development projects to
-  Android Studio and Gradle as soon as possible. For more information on transitioning to these
-  tools, see <a href="{@docRoot}sdk/installing/migrate.html">Migrating to Android Studio</a>.
-</p>
-
-  <p>There are two ways to build your application using the Ant build script: one for
-  testing/debugging your application &mdash; <em>debug mode</em> &mdash; and one for building your
-  final package for release &mdash; <em>release mode</em>. Regardless of which way you build your application,
-  it must be signed before it can install on an emulator or device&mdash;with a debug key when building
-  in debug mode and with your own private key when building in release mode.</p>
-
-  <p>Whether you're building in debug mode or release mode, you need to use the Ant tool to compile
-  and build your project. This will create the .apk file that you can install on an emulator or device.
-  When you build in debug mode, the .apk file is automatically signed by the SDK tools with
-  a debug key, so it's instantly ready for installation onto an emulator or attached
-  development device. You cannot distribute an application that is signed with a debug key.
-  When you build in release mode, the .apk file is <em>unsigned</em>, so you
-  must manually sign it with your own private key, using Keytool and Jarsigner.</p>
-
-  <p>It's important that you read and understand <a href=
-  "{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a>, particularly once
-  you're ready to release your application and share it with end-users. That document describes the
-  procedure for generating a private key and then using it to sign your .apk file. If you're just
-  getting started, however, you can quickly run your applications on an emulator or your own
-  development device by building in debug mode.</p>
-
-  <p>If you don't have Ant, you can obtain it from the <a href="http://ant.apache.org/">Apache Ant
-  home page</a>. Install it and make sure it is in your executable PATH. Before calling Ant, you
-  need to declare the JAVA_HOME environment variable to specify the path to where the JDK is
-  installed.</p>
-
-  <p class="note"><strong>Note:</strong> When installing JDK on Windows, the default is to install
-  in the "Program Files" directory. This location will cause <code>ant</code> to fail, because of
-  the space. To fix the problem, you can specify the JAVA_HOME variable like this:
-  <pre>set JAVA_HOME=c:\Progra~1\Java\&lt;jdkdir&gt;</pre>
-
-  <p>The easiest solution, however, is to install JDK in a non-space directory, for example:</p>
-
-  <pre>c:\java\jdk1.7</pre>
-
-  <h2 id="DebugMode">Building in Debug Mode</h2>
-
-  <p>For immediate application testing and debugging, you can build your application in debug mode
-  and immediately install it on an emulator. In debug mode, the build tools automatically sign your
-  application with a debug key and optimize the package with {@code zipalign}.</p>
-
-  <p>To build in debug mode:</p>
-
-  <ol>
-    <li>Open a command-line and navigate to the root of your project directory.</li>
-    <li>Use Ant to compile your project in debug mode:
-      <pre>
-ant debug
-</pre>
-
-      <p>This creates your debug <code>.apk</code> file inside the project <code>bin/</code> directory, named
-      <code>&lt;your_project_name&gt;-debug.apk</code>. The file is already signed with
-      the debug key and has been aligned with
-      <a href="{@docRoot}tools/help/zipalign.html"><code>zipalign</code></a>.
-      </p>
-    </li>
-  </ol>
-
-  <p>Each time you change a source file or resource, you must run Ant again in order to package up
-  the latest version of the application.</p>
-
-  <p>To install and run your application on an emulator, see the following section about <a href=
-  "#RunningOnEmulator">Running on the Emulator</a>.</p>
-
-  <h2 id="ReleaseMode">Building in Release Mode</h2>
-
-  <p>When you're ready to release and distribute your application to end-users, you must build your
-  application in release mode. Once you have built in release mode, it's a good idea to perform
-  additional testing and debugging with the final .apk.</p>
-
-  <p>Before you start building your application in release mode, be aware that you must sign the
-  resulting application package with your private key, and should then align it using the {@code
-  zipalign} tool. There are two approaches to building in release mode: build an unsigned package
-  in release mode and then manually sign and align the package, or allow the build script to sign
-  and align the package for you.</p>
-
-  <h3 id="ManualReleaseMode">Build unsigned</h3>
-
-  <p>If you build your application <em>unsigned</em>, then you will need to manually sign and align
-  the package.</p>
-
-  <p>To build an <em>unsigned</em> .apk in release mode:</p>
-
-  <ol>
-    <li>Open a command-line and navigate to the root of your project directory.</li>
-
-    <li>Use Ant to compile your project in release mode:
-      <pre>
-ant release
-</pre>
-    </li>
-  </ol>
-
-  <p>This creates your Android application .apk file inside the project <code>bin/</code>
-  directory, named <code><em>&lt;your_project_name&gt;</em>-unsigned.apk</code>.</p>
-
-  <p class="note"><strong>Note:</strong> The .apk file is <em>unsigned</em> at this point and can't
-  be installed until signed with your private key.</p>
-
-  <p>Once you have created the unsigned .apk, your next step is to sign the .apk with your private
-  key and then align it with {@code zipalign}. To complete this procedure, read <a href=
-  "{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a>.</p>
-
-  <p>When your <code>.apk</code> has been signed and aligned, it's ready to be distributed to end-users.
-  You should test the final build on different devices or AVDs to ensure that it
-  runs properly on different platforms.</p>
-
-  <h3 id="AutoReleaseMode">Build signed and aligned</h3>
-
-  <p>If you would like, you can configure the Android build script to automatically sign and align
-  your application package. To do so, you must provide the path to your keystore and the name of
-  your key alias in your project's {@code ant.properties} file. With this information provided,
-  the build script will prompt you for your keystore and alias password when you build in release
-  mode and produce your final application package, which will be ready for distribution.</p>
-
-  <p class="caution"><strong>Caution:</strong> Due to the way Ant handles input, the password that
-  you enter during the build process <strong>will be visible</strong>. If you are concerned about
-  your keystore and alias password being visible on screen, then you may prefer to perform the
-  application signing manually, via Jarsigner (or a similar tool). To instead perform the signing
-  procedure manually, <a href="#ManualReleaseMode">build unsigned</a> and then continue with
-  <a href="{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a>.</p>
-
-  <p>To specify your keystore and alias, open the project {@code ant.properties} file (found in
-  the root of the project directory) and add entries for {@code key.store} and {@code key.alias}.
-  For example:</p>
-  <pre>
-key.store=path/to/my.keystore
-key.alias=mykeystore
-</pre>
-
-  <p>Save your changes. Now you can build a <em>signed</em> .apk in release mode:</p>
-
-  <ol>
-    <li>Open a command-line and navigate to the root of your project directory.</li>
-
-    <li>Use Ant to compile your project in release mode:
-      <pre>
-ant release
-</pre>
-    </li>
-
-    <li>When prompted, enter you keystore and alias passwords.
-
-      <p class="caution"><strong>Caution:</strong> As described above, your password will be
-      visible on the screen.</p>
-    </li>
-  </ol>
-
-  <p>This creates your Android application .apk file inside the project <code>bin/</code>
-  directory, named <code><em>&lt;your_project_name&gt;</em>-release.apk</code>. This .apk file has
-  been signed with the private key specified in {@code ant.properties} and aligned with {@code
-  zipalign}. It's ready for installation and distribution.</p>
-
-  <h3 id="OnceBuilt">Once built and signed in release mode</h3>
-
-  <p>Once you have signed your application with a private key, you can install and run it on an
-  <a href="#RunningOnEmulator">emulator</a> or <a href="#RunningOnDevice">device</a>. You can
-  also try installing it onto a device from a web server. Simply upload the signed .apk to a web
-  site, then load the .apk URL in your Android web browser to download the application and begin
-  installation. (On your device, be sure you have enabled
-  <em>Settings &gt; Applications &gt; Unknown sources</em>.)</p>
-
-  <h2 id="RunningOnEmulator">Running on the Emulator</h2>
-
-  <p>Before you can run your application on the Android Emulator, you must <a href=
-  "{@docRoot}tools/devices/managing-avds.html">create an AVD</a>.</p>
-
-  <p>To run your application:</p>
-
-  <ol>
-    <li>
-      <strong>Open the AVD Manager and launch a virtual device</strong>
-
-      <p>From your SDK's <code>platform-tools/</code> directory, execute the {@code android} tool
-with the <code>avd</code> options:</p>
-      <pre>
-android avd
-</pre>
-
-      <p>In the <em>Virtual Devices</em> view, select an AVD and click <strong>Start</strong>.</p>
-    </li>
-
-    <li>
-      <strong>Install your application</strong>
-
-      <p>From your SDK's <code>tools/</code> directory, install the {@code .apk} on the
-      emulator:</p>
-      <pre>
-adb install <em>&lt;path_to_your_bin&gt;</em>.apk
-</pre>
-
-      <p>Your .apk file (signed with either a release or debug key) is in your project {@code bin/}
-      directory after you build your application.</p>
-
-      <p>If there is more than one emulator running, you must specify the emulator upon which to
-      install the application, by its serial number, with the <code>-s</code> option. For
-      example:</p>
-      <pre>
-adb -s emulator-5554 install <em>path/to/your/app</em>.apk
-</pre>
-
-      <p>To see a list of available device serial numbers, execute {@code adb devices}.</p>
-    </li>
-  </ol>
-
-  <p>If you don't see your application on the emulator, try closing the emulator and launching the
-  virtual device again from the AVD Manager. Sometimes when you install an application for the
-  first time, it won't show up in the application launcher or be accessible by other applications.
-  This is because the package manager usually examines manifests completely only on emulator
-  startup.</p>
-
-  <p>Be certain to create multiple AVDs upon which to test your application. You should have one
-  AVD for each platform and screen type with which your application is compatible. For instance, if
-  your application compiles against the Android 4.0 (API Level 14) platform, you should create an
-  AVD for each platform equal to and greater than 4.0 and an AVD for each <a href=
-  "{@docRoot}guide/practices/screens_support.html">screen type</a> you support, then test your
-  application on each one.</p>
-
-  <p class="note"><strong>Tip:</strong> If you have <em>only one</em> emulator running, you can
-  build your application and install it on the emulator in one simple step. Navigate to the root of
-  your project directory and use Ant to compile the project with <em>install mode</em>: <code>ant
-  install</code>. This will build your application, sign it with the debug key, and install it on
-  the currently running emulator.</p>
-
-  <h2 id="RunningOnDevice">Running on a Device</h2>
-
-  <p>Before you can run your application on a device, you must perform some basic setup for your
-  device:</p>
-
-  <ul>
-    <li>Enable <strong>USB debugging</strong> on your device.
-      <ul>
-        <li>On most devices running Android 3.2 or older, you can find the option under
-          <strong>Settings > Applications > Development</strong>.</li>
-        <li>On Android 4.0 and newer, it's in <strong>Settings > Developer options</strong>.
-          <p class="note"><strong>Note:</strong> On Android 4.2 and newer, <strong>Developer
-          options</strong> is hidden by default. To make it available, go
-          to <strong>Settings > About phone</strong> and tap <strong>Build number</strong>
-          seven times. Return to the previous screen to find <strong>Developer options</strong>.</p>
-        </li>
-      </ul>
-    </li>
-
-    <li>Ensure that your development computer can detect your device when connected via USB</li>
-  </ul>
-
-  <p>Read <a href="{@docRoot}tools/device.html#setting-up">Setting up a Device for
-  Development</a> for more information.</p>
-
-  <p>Once your device is set up and connected via USB, navigate to your SDK's <code>platform-tools/</code>
-  directory and install the <code>.apk</code> on the device:</p>
-  <pre>
-adb -d install <em>path/to/your/app</em>.apk
-</pre>
-
-  <p>The {@code -d} flag specifies that you want to use the attached device (in case you also have
-  an emulator running).</p>
-
-  <p>For more information on the tools used above, please see the following documents:</p>
-
-  <ul>
-    <li><a href="{@docRoot}tools/help/android.html">android Tool</a></li>
-
-    <li><a href="{@docRoot}tools/devices/emulator.html">Android Emulator</a></li>
-
-    <li><a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a> (ADB)</li>
-  </ul>
-
-  <h2 id="Signing">Application Signing</h2>
-
-  <p>As you begin developing Android applications, understand that all Android applications must be
-  digitally signed before the system will install them on an emulator or device. There are two ways
-  to do this: with a <em>debug key</em> (for immediate testing on an emulator or development
-  device) or with a <em>private key</em> (for application distribution).</p>
-
-  <p>The Android build tools help you get started by automatically signing your .apk files with a
-  debug key at build time. This means that you can compile your application and install it on the
-  emulator without having to generate your own private key. However, please note that if you intend
-  to publish your application, you <strong>must</strong> sign the application with your own private
-  key, rather than the debug key generated by the SDK tools.</p>
-
-  <p>The ADT plugin helps you get started quickly by signing your .apk files with a debug key,
-  prior to installing them on an emulator or development device. This means that you can quickly
-  run your application from Eclipse without having to generate your own private key. No specific
-  action on your part is needed, provided ADT has access to Keytool. However, please note that if
-  you intend to publish your application, you <strong>must</strong> sign the application with your
-  own private key, rather than the debug key generated by the SDK tools.</p>
-
-  <p>Please read <a href="{@docRoot}tools/publishing/app-signing.html">Signing Your
-  Applications</a>, which provides a thorough guide to application signing on Android and what it
-  means to you as an Android application developer. The document also includes a guide to exporting
-  and signing your application with the ADT's Export Wizard.</p>
-
-  <h2 id="AntReference">Ant Command Reference</h2>
-  <dt><code>ant clean</code></dt>
-  <dd>Cleans the project. If you include the <code>all</code> target before <code>clean</code>
-(<code>ant all clean</code>), other projects are also cleaned. For instance if you clean a
-test project, the tested project is also cleaned.</dd>
-
-  <dt><code>ant debug</code></dt>
-  <dd>Builds a debug package. Works on application, library, and test projects and compiles
-  dependencies as  needed.</dd>
-
-  <dt id="emma"><code>ant emma debug</code></dt>
-  <dd>Builds a test project while building the tested project with instrumentation turned on.
-  This is used to run tests with code coverage enabled.</dd>
-
-  <dt><code>ant release</code></dt>
-  <dd>Builds a release package.</dd>
-
-  <dt><code>ant instrument</code>
-  </dt>
-  <dd>Builds an instrumented debug package. This is generally called automatically when building a
-  test project with code coverage enabled (with the <code>emma</code>
-  target)</dd>
-
-  <dt><code>ant &lt;build_target&gt; install</code></dt>
-  <dd>Builds and installs a package. Using <code>install</code> by itself fails.</dd>
-
-  <dt><code>ant installd</code></dt>
-  <dd>Installs an already compiled debug package. This fails if the <code>.apk</code> is not
-  already built.</dd>
-
-  <dt><code>ant installr</code></dt>
-  <dd>Installs an already compiled release package. This fails if the <code>.apk</code> is not
-  already built.</dd>
-
-  <dt><code>ant installt</code></dt>
-  <dd>Installs an already compiled test package. Also installs the <code>.apk</code> of the
-  tested application. This fails if the <code>.apk</code> is not already built.</dd>
-
-  <dt><code>ant installi</code></dt>
-  <dd>Installs an already compiled instrumented package. This is generally not used manually as
-  it's called when installing a test package. This fails if the <code>.apk</code> is not already
-  built.</dd>
-
-   <dt><code>ant test</code></dt>
-   <dd>Runs the tests (for test projects). The tested and test <code>.apk</code> files must be
-   previously installed.</dd>
-
-  <dt><code>ant debug installt test</code></dt>
-  <dd>Builds a test project and the tested project, installs both <code>.apk</code> files, and
-  runs the tests.</dd>
-
-  <dt><code>ant emma debug install test</code></dt>
-  <dd>Builds a test project and the tested project, installs both <code>.apk</code> files, and
-  runs the tests with code coverage enabled.</dd>
-
diff --git a/docs/html/tools/building/building-eclipse.jd b/docs/html/tools/building/building-eclipse.jd
deleted file mode 100644
index 89c3e16..0000000
--- a/docs/html/tools/building/building-eclipse.jd
+++ /dev/null
@@ -1,176 +0,0 @@
-page.title=Building and Running from Eclipse with ADT
-parent.title=Building and Running
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#RunningOnEmulatorEclipse">Running on an Emulator</a></li>
-
-        <li><a href="#RunningOnDeviceEclipse">Running on a Device</a></li>
-
-        <li><a href="#RunConfig">Creating a Run Configuration</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>Eclipse and ADT provide an environment where most of the details of the build process are
-  hidden from you. By default, the build process constantly runs in the background as you make
-  changes to your project.</p>
-
-  <p>When Eclipse automatically builds your application, it enables debugging and signs the
-  <code>.apk</code> with a debug key, by default. When you run the application,
-  Eclipse invokes ADB and installs your application to a device or emulator, so you do not have to
-  manually perform these tasks. Since most of the build process is taken care of by Eclipse, the
-  following topics show you how to run an application, which will automatically build your
-  application as well.</p>
-
-  <p>To distribute your application, however, you must build your application in release mode and
-  sign the <code>.apk</code> file with your own private key.</p>
-
-   <p>This document shows you how to run your application on an emulator or a real device
-   from Eclipse&mdash;all of which is done using the debug version of your application.
-   For more information about how to sign your application with a private key for release, see <a href=
-  "{@docRoot}tools/publishing/app-signing.html#ExportWizard">Signing Your Applications</a></p>
-
-  <h2 id="RunningOnEmulatorEclipse">Running on the emulator</h2>
-
-  <p>Before you can run your application on the Android Emulator, you must <a href=
-  "{@docRoot}tools/devices/managing-avds.html">create an AVD</a>.</p>
-
-  <p>To run (or debug) your application, select <strong>Run</strong> &gt; <strong>Run</strong> (or
-  <strong>Run</strong> &gt; <strong>Debug</strong>) from the Eclipse menu bar. The ADT plugin will
-  automatically create a default run configuration for the project. Eclipse will then perform the
-  following:</p>
-
-  <ol>
-    <li>Compile the project (if there have been changes since the last build).</li>
-
-    <li>Create a default run configuration (if one does not already exist for the project).</li>
-
-    <li>Install and start the application on an emulator (or device), based on the Deployment
-    Target defined by the run configuration.
-
-      <p>By default, Android run configurations use an "automatic target" mode for selecting a
-      device target. For information on how automatic target mode selects a deployment target, see
-      <a href="#AutoAndManualTargetModes">Automatic and manual target modes</a> below.</p>
-    </li>
-  </ol>
-
-  <p>If you run the application with the Debug option, the application will start in the "Waiting For Debugger" mode. Once the debugger
-  is attached, Eclipse opens the Debug perspective and starts the application's main activity. Otherwise, if you run the
-  application with the normal Run option, Eclipse installs the application on the device and launches the main activity.</p>
-
-  <p>To set or change the run configuration used for your project, use the run configuration
-  manager. See the section below about <a href="#RunConfig">Creating a Run Configuration</a> for more information.</p>
-
-  <p>Be certain to create multiple AVDs upon which to test your application. You should have one
-  AVD for each platform and screen type with which your application is compatible. For instance, if
-  your application compiles against the Android 4.0 (API Level 14) platform, you should create an
-  AVD for each platform equal to and greater than 4.0 and an AVD for each <a href=
-  "{@docRoot}guide/practices/screens_support.html">screen type</a> you support, then test your
-  application on each one.</p>
-
-  <h2 id="RunningOnDeviceEclipse">Running on a device</h2>
-
-  <p>Before you can run your application on a device, you must perform some basic setup for your
-  device:</p>
-
-  <ul>
-    <li>Ensure that your application is debuggable by setting the
-    <code>android:debuggable</code> attribute of the <code>&lt;application&gt;</code>
-    element to <code>true</code>. As of ADT 8.0, this is done by default when you build in debug mode.</li>
-
-    <li>Enable <strong>USB debugging</strong> on your device.
-      <ul>
-        <li>On most devices running Android 3.2 or older, you can find the option under
-          <strong>Settings > Applications > Development</strong>.</li>
-        <li>On Android 4.0 and newer, it's in <strong>Settings > Developer options</strong>.
-          <p class="note"><strong>Note:</strong> On Android 4.2 and newer, <strong>Developer
-          options</strong> is hidden by default. To make it available, go
-          to <strong>Settings > About phone</strong> and tap <strong>Build number</strong>
-          seven times. Return to the previous screen to find <strong>Developer options</strong>.</p>
-        </li>
-      </ul>
-    </li>
-
-    <li>Ensure that your development computer can detect your device when connected via USB</li>
-  </ul>
-
-  <p>Read <a href="{@docRoot}tools/device.html">Using Hardware Devices</a>
-  for more information.</p>
-
-  <p>Once set up and your device is connected via USB, install your application on the device by
-  selecting <strong>Run</strong> &gt; <strong>Run</strong> (or <strong>Run</strong> &gt;
-  <strong>Debug</strong>) from the Eclipse menu bar.</p>
-
-  <h2 id="RunConfig">Creating a Run Configuration</h2>
-
-  <p>The run configuration specifies the project to run, the Activity to start, the emulator or
-  connected device to use, and so on. When you first run a project as an <em>Android
-  Application</em>, ADT will automatically create a run configuration. The default run
-  configuration will launch the default project Activity and use automatic target mode for device
-  selection (with no preferred AVD). If the default settings don't suit your project, you can
-  customize the run configuration or even create a new one.</p>
-
-  <p>To create or modify a run configuration, refer to the Eclipse documentation on how to create Run configurations.
-  The following steps highlight the important things you need to do for an Android project:</p>
-
-  <ol>
-    <li>Open the run configuration manager from the Run Menu.</li>
-
-    <li>Expand the <strong>Android Application</strong> item and create a new configuration or open
-    an existing one.
-    </li>
-
-    <li>With the Run Configuration selected, adjust your desired run configuration settings:
-      <ul>
-      <li>In the Android tab, specify the Project and Activity to launch.
-      </li>
-      <li><p>In the Target tab, consider whether you'd like to use Manual or Automatic mode when
-      selecting an AVD to run your application. See the following section on <a href=
-      "#AutoAndManualTargetModes">Automatic and manual target modes</a>).</p>
-
-      <p>You can specify any emulator options to the Additional Emulator Command Line Options
-      field. For example, you could add <code>-scale 96dpi</code> to scale the AVD's screen to an
-      accurate size, based on the dpi of your computer monitor. For a full list of emulator
-      options, see the <a href="{@docRoot}tools/help/emulator.html">Android
-      Emulator</a> document.</p>
-      </li>
-      </ul>
-    </li>
-  </ol>
-
-  <h4 id="AutoAndManualTargetModes">Automatic and manual target modes</h4>
-
-  <p>By default, a run configuration uses the <strong>automatic</strong> target mode in order to
-  select an AVD. In this mode, ADT will select an AVD for the application in the following
-  manner:</p>
-
-  <ol>
-    <li>If there's a device or emulator already running and its AVD configuration meets the
-    requirements of the application's build target, the application is installed and run upon
-    it.</li>
-
-    <li>If there's more than one device or emulator running, each of which meets the requirements
-    of the build target, a "device chooser" is shown to let you select which device to use.</li>
-
-    <li>If there are no devices or emulators running that meet the requirements of the build
-    target, ADT looks at the available AVDs. If there is an AVD that matches the build target of the
-    project, ADT chooses that AVD. If the AVD versions are newer than the build target of the project,
-    ADT chooses the oldest possible version of an AVD that meets the project's build target
-    requirement.</li>
-
-    <li>If there are no suitable AVDs, the application is not installed a console error warning tells
-    you that there is no existing AVD that meets the build target requirements.</li>
-  </ol>
-
-  <p>However, if a "preferred AVD" is selected in the run configuration, then the application will
-  <em>always</em> be deployed to that AVD. If it's not already running, then a new emulator will be
-  launched.</p>
-
-  <p>If your run configuration uses <strong>manual</strong> mode, then the "device chooser" is
-  presented every time that your application is run, so that you can select which AVD to use.</p>
diff --git a/docs/html/tools/building/building-studio.jd b/docs/html/tools/building/building-studio.jd
index 4431194..2e3615e 100644
--- a/docs/html/tools/building/building-studio.jd
+++ b/docs/html/tools/building/building-studio.jd
@@ -6,238 +6,182 @@
 <div id="qv-wrapper">
   <div id="qv">
     <h2>In this document</h2>
-  <ol>
-    <li><a href="#buildProject">Building your Project in Android Studio</a>
       <ol>
-        <li><a href="#buildRelease">Build a release version</a> </li>
+        <li><a href="#run-configuration">Changing the run configuration</a> </li>
+        <li><a href="#changing-variant">Changing build variants</a></li>
+        <li><a href="#gradle-console">Monitoring the build process</a></li>
+        <li><a href="#generating-apks">Generating APKs</a></li>
       </ol>
-    </li>
-    <li><a href=id="RunningApp">Running your App</a>
+
+    <h2>See also</h2>
       <ol>
-        <li><a href="#RunConfig">Creating a Run Configuration</a></li>
-        <li><a href="#AutoAndManualTargetModes">Automatic and manual target modes</a></li>
-        <li><a href="#RunningOnEmulatorStudio">Running on an Emulator</a></li>
-        <li><a href="#RunningOnDeviceStudio">Running on a Device</a></li>
+        <li><a href="{@docRoot}sdk/installing/studio-build.html">
+          Build System</a></li>
+        <li><a href="{@docRoot}tools/devices/managing-avds.html">
+          Managing AVDs with AVD Manager</a></li>
+        <li><a href="{@docRoot}tools/devices/emulator.html">
+          Using the Android Emulator</a></li>
+        <li><a href="{@docRoot}tools/device.html">
+          Using Hardware Devices</a></li>
+        <li><a href="{@docRoot}tools/publishing/app-signing.html">
+          Signing Your Applications</a></li>
       </ol>
-    </li>
-  </ol>
-
-  <h2>See also</h2>
-  <ol>
-    <li><a href="{@docRoot}sdk/installing/studio-build.html">
-      Build System</a></li>
-    <li><a href="{@docRoot}tools/devices/managing-avds.html">
-      Managing AVDs with AVD Manager</a></li>
-    <li><a href="{@docRoot}tools/devices/emulator.html">
-      Using the Android Emulator</a></li>
-    <li><a href="{@docRoot}tools/publishing/app-signing.html">
-      Signing Your Applications</a></li>
-  </ol>
-
   </div>
 </div>
 
+<p>
+  By default, Android Studio sets up new projects to deploy to the Emulator or
+  a physical device with just a few clicks.
+</p>
 
-<p>This document shows you how to use Android Studio to build an application <code>.apk</code> for
-testing or release and how to run your application on an emulator or a real device.</p>
+<p>
+  To build and run your app, click <strong>Run 'app'</strong> <img src=
+  "{@docRoot}images/tools/as-run.png" alt="" style=
+  "vertical-align:bottom;margin:0;">. Android Studio builds your app with
+  Gradle, asks you to select a deployment target (an emulator or a connected
+  device), and then deploys your app to it. You can customize some of this
+  default behavior, such as selecting an automatic deployment target, by
+  <a href="#run-configuration">changing the run configuration</a>.
+</p>
 
+<p>
+  If you want to <a href="{@docRoot}tools/devices/emulator.html">use the Android
+  Emulator</a> to run your app, you need to have an Android Virtual Device
+  (AVD) ready. If you haven't already created one, then after you click
+  <strong>Run 'app'</strong>, click <strong>Create New Emulator</strong> in the
+  <strong>Select Deployment Target</strong> dialog. Follow the Virtual Device
+  Configuration wizard to define the type of device you want to emulate. For
+  more information, see <a href=
+  "{@docRoot}tools/devices/managing-avds.html">Managing AVDs with the AVD
+  Manager</a>.
+</p>
 
-<h2 id="buildProject">Build your Project in Android Studio</h2>
+<p>
+  If you're using a physical Android device, you need to enable USB debugging
+  on the device. For more information, see <a href=
+  "{@docRoot}tools/device.html">Using Hardware Devices</a>.
+</p>
 
-<p>To build the project on Android Studio, click <strong>Build</strong> and select
-<strong>Make Project</strong>. The status bar at the bottom of the window shows the current
-progress of the build:</p>
+<p class="note">
+  <strong>Note:</strong> You can also deploy your app in debug mode by clicking
+  <strong>Debug 'app'</strong> <img src=
+  "{@docRoot}images/tools/as-debugbutton.png" alt="" style=
+  "vertical-align:bottom;margin:0;">. Running your app in debug mode
+  allows you to set breakpoints in your code, examine variables and evaluate
+  expressions at run time, and run debugging tools. To learn more, read about
+  <a href="{@docRoot}tools/debugging/debugging-studio.html">Debugging with
+  Android Studio</a>.
+</p>
 
-<p><code>Gradle: Executing tasks: [:app:assembleDebug, :lib:bundleDebug]</code></p>
+<h3 id="run-configuration">
+  Changing the run configuration
+</h3>
 
-<p>Click <img src="{@docRoot}images/tools/as-gradlebutton.png" alt=""
-style="vertical-align:bottom;margin:0;"/> on the bottom
-right part of the window to show the <em>Gradle Console</em>, as shown in figure 1.</p>
+<p>
+  The run configuration specifies the module to run, package to deploy,
+  activity to start, target device, emulator settings, and Logcat options. The
+  default run configuration launches the default project activity and uses the
+  <strong>Device Chooser</strong> for target device selection. If the default
+  settings don't suit your project or module, you can customize the run
+  configuration, or even create a new one, at the project, default, and module
+  levels. To edit a run configuration:
+</p>
 
-<img src="{@docRoot}images/tools/studio-gradle-console.png" alt="" />
-<p class="img-caption"><strong>Figure 1.</strong> The Gradle Console in Android Studio.</p>
+<ol>
+  <li>Select <strong>Run</strong> &gt; <strong>Edit Configurations</strong>.
+  </li>
 
-<p>The Gradle Console shows the build tasks and subtasks that the build system runs for
-Android Studio. If the build fails, you can find more details on the console. To hide the Gradle
-Console, click <img src="{@docRoot}images/tools/as-gradlebutton.png" alt=""
-style="vertical-align:bottom;margin:0;"/> again.</p>
-
-<p class="note">If your project uses product flavors, Android Studio invokes the task for the
-selected build variant. For more information, see the
-<a href="{@docRoot}sdk/installing/studio-build.html">Build System</a> guide.</p>
-
-<p>To view the list of all available build tasks in Android Studio, click <strong>Gradle</strong>
-on the right side of the IDE window. The <em>Gradle tasks</em> panel appears.</p>
-
-
-<h3 id="buildRelease">Build a release version</h3>
-
-<p>You can now use the <strong>Build</strong> menu options to build the release version of your
-application for distribution. </p>
-
-<p>The build generates an APK for each build variant:
-the <code>app/build/apk/</code> directory contains packages named
-<code>app-&lt;flavor>-&lt;buildtype>.apk</code>; for example, <code>app-full-release.apk</code> and
-<code>app-demo-debug.apk</code>.</p>
-
-
-<p>For more build system information, see
-<a href="{@docRoot}sdk/installing/studio-build.html">Build System</a>.</p>
-
-
-  <h2 id="RunningApp">Running your app</h2>
-
-  <p>This section shows you how to run your application on an emulator or a real device
-   from Android Studio&mdash;all of which is done using the debug version of your application.
-   For more information about how to sign your application with a private key for release, see
-   <a href="{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a></p>
-
-
-  <h3 id="RunConfig">Creating a Run Configuration</h3>
-
-  <p>The run configuration specifies the module to run, package to deploy, Activity to start,
-  target device, emulator settings, and Logcat options. Run configuration can be set at the project,
-  default, and module levels. When you first run a module as an <em>Android Application</em>,
-  Android Studio will automatically create a run configuration. The default run
-  configuration will launch the default project Activity and use automatic target mode for device
-  selection (with no preferred AVD). If the default settings don't suit your project or module, you
-  can customize the run configuration or even create a new one.</p>
-
-  <p>To create or modify a run configuration, see the IntelliJ documentation on
-  <a href="https://www.jetbrains.com/idea/webhelp/run-debug-configuration-android-application.html">
-  Run/Debug configurations</a>.</p>
-
-  <p>The following steps highlight the important things you need to do for an Android project:</p>
-
-  <ol>
-    <li>Open <strong>Edit</strong> Configurations from the <strong>Run</strong> Menu.</li>
-
-    <li>Expand the <strong>Android Application</strong> item and create a new configuration or open
-    an existing one.</li>
-
-    <li>With the Run Configuration selected, adjust your desired run configuration settings:
-      <ul>
-      <li>In the General tab, specify the Module settings to launch. In Target tab, consider whether
-      you'd like to use Manual or Automatic mode when selecting an AVD to run your application. See
-      the following section on <a href="#AutoAndManualTargetModes">Automatic and manual target modes</a>).
+  <li>Expand the <strong>Android Application</strong> item and select an
+  existing run configuration.
+    <ul>
+      <li>To create a new run configuration, click the '<strong>+</strong>'
+      button in the top left corner of the dialog box and select
+      <strong>Android Application</strong>.
       </li>
-      <li>In the Emulator tab, specify any emulator options to the Additional Emulator Command Line
-      Options field. For example, you could add <code>-scale 96dpi</code> to scale the AVD's screen
-      to an accurate size, based on the dpi of your computer monitor. For a full list of emulator
-      options, see the <a href="{@docRoot}tools/help/emulator.html">Android
-      Emulator</a> document.</p>
-      </li>
-      <li>In the Logcat tab, set the LogCat options for the application.  </li>
-      </ul>
-    </li>
-  </ol>
+    </ul>
+  </li>
 
+  <li>With a run configuration selected, adjust your desired settings. For
+  example, in the <strong>General</strong> tab, you can specify the APK
+  installation settings, launch options, and deployment target options.
+  </li>
+</ol>
 
-  <h3 id="AutoAndManualTargetModes">Automatic and manual target modes</h3>
+<h3 id="changing-variant">
+  Changing the build variant
+</h3>
 
-  <p>By default, a run configuration uses the <strong>automatic</strong> target mode in order to
-  select an AVD. In this mode, Android Studio will select an AVD for the application in the following
-  manner:</p>
+<p>
+  By default, Android Studio builds the debug version of your app, which is
+  intended only for testing, when you click <strong>Run 'app'</strong>. You
+  need to build the release version when <a href=
+  "{@docRoot}tools/publishing/preparing.html">preparing your app for public
+  release</a>.
+</p>
+<p>
+  To change the build variant Android Studio uses, go to <strong>Build</strong>
+  &gt; <strong>Select Build Variant</strong> and select a different one from
+  the drop-down menu. By default, new projects are set up with a debug and
+  release build variant.
+</p>
 
-  <ol>
-    <li>If there's a device or emulator already running and its AVD configuration meets the
-    requirements of the application's build target, the application is installed and run upon
-    it.</li>
+<p>
+  Using <em>product flavors</em>, you can create additional build variants for
+  different versions of your app, each having different features or device
+  requirements. To learn more about build variants and product flavors, read
+  <a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle
+  Builds</a>.
+</p>
 
-    <li>If there's more than one device or emulator running, each of which meets the requirements
-    of the build target, a device chooser is shown to let you select which device to use.</li>
+<h3 id="gradle-console">
+  Monitoring the build process
+</h3>
 
-    <li>If there are no devices or emulators running that meet the requirements of the build
-    target, Android Studio looks at the available AVDs. If there is an AVD that matches the build
-    target of the project, Android Studio chooses that AVD. If the AVD versions are newer than the
-    build target of the project, Android Studio chooses the oldest possible version of an AVD that
-    meets the project or module build target requirement.</li>
+<p>
+  You can view details about the build process by clicking <em>Gradle
+  Console</em> <img src="{@docRoot}images/tools/as-gradlebutton.png" alt=""
+  style="vertical-align:bottom;margin:0;">. The console displays each
+  task that Gradle executes in order to build your app, as shown in figure 1.
+</p>
 
-    <li>If there are no suitable AVDs, the application is not installed and a console error warning
-    tells you that there is no existing AVD that meets the build target requirements.</li>
-  </ol>
+<img src="{@docRoot}images/tools/studio-gradle-console.png" alt="">
+<p class="img-caption">
+  <strong>Figure 1.</strong> The Gradle Console in Android Studio.
+</p>
 
-  <p>However, if a "preferred" AVD is selected in the run configuration, then the application will
-  <em>always</em> be deployed to that AVD. If it's not already running, then a new emulator will be
-  launched.</p>
+<p>
+  If your build variants use product flavors, Gradle also invokes tasks to
+  build those product flavors. To view the list of all available build tasks,
+  click <strong>Gradle</strong> <img src=
+  "{@docRoot}images/tools/as-gradle.png" alt="" style=
+  "vertical-align:bottom;margin:0;"> on the right side of the IDE
+  window.
+</p>
 
-  <p>If your run configuration uses <strong>manual</strong> mode, then the "device chooser" is
-  presented every time that your application is run, so that you can select which AVD to use.</p>
+<p>
+  If an error occurs during the build process, the <em>Messages</em> window
+  will appear to describe the issue.
+</p>
 
+<h3 id="generating-apks">
+  Generating APKs
+</h3>
 
+<p>
+  When you click <strong>Run 'app'</strong>, Android Studio generates a debug
+  APK and deploys it to your target device. Before you can generate a release
+  version of your app for public distribution, however, you must first learn
+  how to <a href="{@docRoot}tools/publishing/app-signing.html#studio">sign your
+  app</a>. You can then generate multiple signed APKs of your debug or release
+  build variants. To locate the generated APK files, click the link in the
+  pop-up dialog, as shown in figure 2.
+</p>
 
-  <h3 id="RunningOnEmulatorStudio">Running on the emulator</h3>
+<p>
+  <img src="{@docRoot}images/tools/as-find-apk.png" alt="">
+</p>
 
-  <p>Before you can run your application on the Android Emulator, you verify the default AVD or
- <a href="{@docRoot}tools/devices/managing-avds.html">create an AVD</a>.</p>
-
-  <p>To run (or debug) your application, select <strong>Run</strong> &gt; <strong>Run</strong> (or
-  <strong>Run</strong> &gt; <strong>debug</strong>) from the Android Studio menu bar. Android Studio
-  automatically creates a default run configuration for the project. Android Studio will then perform
-  the following:</p>
-
-  <ol>
-    <li>Compile the project (if there have been changes since the last build).</li>
-
-    <li>Create a default run configuration (if one does not already exist for the project).</li>
-
-    <li>Install and start the application on an emulator (or device), based on the Deployment
-    Target defined by the run configuration.
-
-      <p>By default, Android run configurations use an "automatic target" mode for selecting a
-      device target. For information on how automatic target mode selects a deployment target, see
-      <a href="#AutoAndManualTargetModes">Automatic and manual target modes</a> above.</p>
-    </li>
-  </ol>
-
-  <p>If you run the application with <strong>Debug</strong>, the <em>Choose a Device</em> option
-  appears so you can select an attached device or emulator. Once the device or emulator is selected,
-  Android Studio opens the Debug console and starts the application's main activity. Otherwise, if
-  you run the application with the normal Run command, Android Studio installs the application on the
-  device and launches the main activity.</p>
-
-  <p>To set or change the run configuration used for your project or module, select
-  <strong>Run</strong> &gt; <strong>Edit Configurations</strong>. See the section below about
-  <a href="#RunConfig">Creating a Run Configuration</a> for more information.</p>
-
-  <p>Be certain to create multiple AVDs upon which to test your application. You should have one
-  AVD for each platform and screen type with which your application is compatible. For instance, if
-  your application compiles against the Android 4.0 (API Level 14) platform, you should create an
-  AVD for each platform equal to and greater than 4.0 and an AVD for each <a href=
-  "{@docRoot}guide/practices/screens_support.html">screen type</a> you support, then test your
-  application on each one.</p>
-
-  <h3 id="RunningOnDeviceStudio">Running on a device</h3>
-
-  <p>Before you can run your application on a device, you must perform some basic setup for your
-  device:</p>
-
-  <ul>
-    <li>Ensure that your application is debuggable by setting the
-    <code>android:debuggable</code> attribute of the <code>&lt;application&gt;</code>
-    element to <code>true</code> in the build.gradle file. </li>
-
-    <li>Enable <strong>USB debugging</strong> on your device.
-      <ul>
-        <li>On most devices running Android 3.2 or older, you can find the option under
-          <strong>Settings > Applications > Development</strong>.</li>
-        <li>On Android 4.0 and newer, it's in <strong>Settings > Developer options</strong>.
-          <p class="note"><strong>Note:</strong> On Android 4.2 and newer, <strong>Developer
-          options</strong> is hidden by default. To make it available, go
-          to <strong>Settings > About phone</strong> and tap <strong>Build number</strong>
-          seven times. Return to the previous screen to find <strong>Developer options</strong>.</p>
-        </li>
-      </ul>
-    </li>
-
-    <li>Ensure that your development computer can detect your device when connected via USB</li>
-  </ul>
-
-  <p>Read <a href="{@docRoot}tools/device.html">Using Hardware Devices</a>
-  for more information.</p>
-
-  <p>Once set up and your device is connected via USB, install your application on the device by
-  selecting <strong>Run</strong> &gt; <strong>Run</strong> (or <strong>Run</strong> &gt;
-  <strong>Debug</strong>) from the Android Studio menu bar.</p>
-
-
+<p class="img-caption">
+  <strong>Figure 2.</strong> Click the link to locate the generated APK
+  files.
+</p>
\ No newline at end of file
diff --git a/docs/html/tools/building/plugin-for-gradle.jd b/docs/html/tools/building/plugin-for-gradle.jd
index 513153d..aed1af2 100644
--- a/docs/html/tools/building/plugin-for-gradle.jd
+++ b/docs/html/tools/building/plugin-for-gradle.jd
@@ -6,9 +6,22 @@
 <div id="qv">
 <h2>In this document</h2>
 <ol>
-  <li><a href="#workBuildVariants">Work with build variants</a></li>
+  <li><a href="#buildConf">Build Configuration</a></li>
+  <li><a href="#buildConv">Build by Convention</a></li>
+  <li><a href="#projectModules">Project and Module Settings</a></li>
+  <li><a href="#dependencies">Dependencies</a></li>
+  <li><a href="#buildTasks">Build Tasks</a></li>
+  <li><a href="#gradleWrapper">Gradle Wrapper</a></li>
+  <li><a href="#buildVariants">Build Variants</a></li>
 </ol>
 
+<h2>Reference</h2>
+<ul>
+  <li>
+  <a class="external-link" href="http://google.github.io/android-gradle-dsl">
+    Android Plugin DSL</a>
+  </li>
+</ul>
 
 <h2>See also</h2>
 <ul>
@@ -20,13 +33,6 @@
 Building and Running from Android Studio</a></li>
 </ul>
 
-<h2>Download</h2>
-<div class="download-box">
-  <a href="{@docRoot}shareables/sdk-tools/android-gradle-plugin-dsl.zip"
-    class="button">Plugin Language Reference</a>
-  <p class="filename">android-gradle-plugin-dsl.zip</p>
-</div>
-
 </div>
 </div>
 
@@ -34,14 +40,14 @@
 <a href="http://www.gradle.org/">Gradle</a> is an advanced build toolkit that manages
 dependencies and allows you to define custom build logic. Android Studio uses a Gradle wrapper
 to fully integrate the Android plugin for Gradle. The Android plugin for Gradle also runs
-independent of Android Studio. This means that you can build your Android apps from which Android
+independent of Android Studio. This means that you can build your Android apps from within Android
 Studio and from the command line on your machine or on machines where Android Studio is not installed
 (such as continuous integration servers).</p>
 
 <p>The output of the build is the same whether you are building a project from the command line,
 on a remote machine, or using Android Studio.</p>
 
-<h2 id="buildConf">Build configuration</h2>
+<h2 id="buildConf">Build Configuration</h2>
 
 <p>The build configuration for your project is defined inside <code>build.gradle</code> files,
 which are plain text files that use the syntax and options from Gradle and the Android plugin
@@ -80,7 +86,7 @@
 language that you can use to define custom build logic and to interact with the Android-specific
 elements provided by the Android plugin for Gradle.</p>
 
-<h2 id="buildConv">Build by convention</h2>
+<h2 id="buildConv">Build by Convention</h2>
 
 <p>The Android Studio build system assumes <em>sensible defaults</em> for the project structure
 and other build options. If your project adheres to these conventions, your Gradle build files are
@@ -89,7 +95,7 @@
 you need to replace the default source folders in your module directories, you can configure a new
 directory structure in the module's build file. </p>
 
-<h2 id="projectModules">Projects and modules build settings</h2>
+<h2 id="projectModules">Project and Module Settings</h2>
 
 <p>A <em>project</em> in Android Studio represents the top-level Android development structure.
 Android Studio projects contain project files and one or more application modules. A
@@ -99,7 +105,7 @@
 
 <ul>
     <li><em>Android application modules</em> contain application (mobile, TV, Wear, Glass) code and
-         may depend on library modules, although many Android apps consists of only one application
+         may depend on library modules, although many Android apps consist of only one application
          module. The build system generates APK packages for application modules. </li>
     <li><em>Android library modules</em> contain reusable Android-specific code and resources.
         The build system generates an AAR (Android ARchive) package for library modules.</li>
@@ -256,7 +262,7 @@
     </dd>
 </dl>
 
-<h2 id="buildTasks">Build tasks</h2>
+<h2 id="buildTasks">Build Tasks</h2>
 
 <p>The Android Studio build system defines a hierarchical set of build tasks: the top-level or
 anchor tasks invoke dependent tasks to produce their collective build outcomes. The top-level build
@@ -283,7 +289,7 @@
 and <a href="{@docRoot}tools/building/building-cmdline.html">Build the project from
 the command line</a>.</p>
 
-<h2 id="gradleWrapper">The Gradle wrapper</h2>
+<h2 id="gradleWrapper">Gradle Wrapper</h2>
 
 <p>Android Studio projects contain the <em>Gradle wrapper</em>, which consists of:</p>
 
@@ -317,7 +323,7 @@
 scripts and JAR from a trusted source, such as those generated by Android Studio. </p>
 
 
-<h2 id="buildVariants"> Build variants</h2>
+<h2 id="buildVariants">Build Variants</h2>
 
 <p>Each version of your app is represented in the build system by a <em>build variant</em>.
 Build variants are combinations of product flavors and build types. Product flavors represent
diff --git a/docs/html/tools/data-binding/guide.jd b/docs/html/tools/data-binding/guide.jd
index 2de5bc2..b57fba7 100644
--- a/docs/html/tools/data-binding/guide.jd
+++ b/docs/html/tools/data-binding/guide.jd
@@ -131,6 +131,11 @@
           </li>
         </ol>
       </li>
+
+      <li>
+        <a href="#studio_support">Android Studio Support for Data Binding</a>
+      </li>
+
     </ol>
   </div><!-- qv -->
 </div><!-- qv-wrapper -->
@@ -141,49 +146,13 @@
   application logic and layouts.
 </p>
 
-<p>The Data Binding Library offers both flexibility and broad comnpatibility
+<p>The Data Binding Library offers both flexibility and broad compatibility
 &mdash; it's a support library, so you can use it with all Android platform
 versions back to <strong>Android 2.1</strong> (API level 7+).</p>
 
-<p>To use data binding, Android Plugin for Gradle <strong>1.3.0-beta4</strong>
+<p>To use data binding, Android Plugin for Gradle <strong>1.5.0-alpha1</strong>
 or higher is required.</p>
 
-<h4>Beta release</h4>
-
-<div class="caution">
-  <p>Please note that the Data Binding library is a <strong>beta release</strong>.
-  While Data Binding is in beta, developers should be aware of the following
-  caveats:</p>
-  <ul>
-    <li>
-    This is a beta release of the feature intended to generate developer
-    feedback. It might contain bugs, and it might not work for your use case,
-    so use it at your own risk. That said, we do want your feedback! Please
-    let us know what is or isn’t working for you using the <a
-    href="https://code.google.com/p/android-developer-preview/">issue
-    tracker</a>.
-    </li>
-    <li>
-    The Data Binding library beta release is subject to significant changes,
-    including those which are not source code compatible with your app. That is,
-    significant rework may be required to take updates to the library in the future.
-    </li>
-    <li>
-    Developers should feel free to publish apps built with the Data Binding
-    library beta release, with the caveats that the standard Android SDK and
-    Google Play terms of service apply, and it’s always a great idea to test your
-    app thoroughly when adopting new libraries or tools.
-    </li>
-    <li>
-    We’re just getting started with Android Studio support at this time.
-    Further Android Studio support will come in the future.
-    </li>
-    <li>
-    By using the Data Binding library beta release, you acknowledge these
-    caveats.</li>
-  </ul>
-</div>
-
 <h2 id="build_environment">
   Build Environment
 </h2>
@@ -191,53 +160,28 @@
 <p>To get started with Data Binding, download the library from the Support
 repository in the Android SDK manager. </p>
 
-<p>The Data Binding plugin requires Android Plugin for Gradle <strong>1.3.0-beta4
-or higher</strong>, so update your build dependencies (in the top-level
-<code>build.gradle</code> file) as needed.</p>
-
-<p>Also, make sure you are using a compatible version of Android Studio.
-<strong>Android Studio 1.3</strong> adds the code-completion and layout-preview
-support for data binding.</p>
-
 <p>
-  <strong>Setting Up Work Environment:</strong>
+To configure your app to use data binding, add the <code>dataBinding</code> element to your
+<code>build.gradle</code> file in the app module.
 </p>
 
-<p>
-  To set up your application to use data binding, add data binding to the class
-  path of your top-level <code>build.gradle</code> file, right below "android".
-</p>
+ <p>Use the following code snippet to configure data binding: </p>
 
 <pre>
-   dependencies {
-       classpath <strong>"com.android.tools.build:gradle:1.3.0-beta4"</strong>
-       classpath <strong>"com.android.databinding:dataBinder:1.0-rc1"</strong>
-   }
-</pre>
-<p>
-  Then make sure jcenter is in the repositories list for your projects in the top-level
-  <code>build.gradle</code> file.
-</p>
-
-<pre>
-allprojects {
-   repositories {
-       jcenter()
-   }
+android {
+    ....
+    dataBinding {
+        enabled = true
+    }
 }
 </pre>
-<p>
-  In each module you want to use data binding, apply the plugin right after
-  android plugin
-</p>
 
-<pre>
-apply plugin: &apos;com.android.application&apos;
-apply plugin: &apos;com.android.databinding&apos;
-</pre>
-<p>
-  The data binding plugin is going to add necessary <strong>provided</strong>
-  and <strong>compile configuration</strong> dependencies to your project.
+<p>If you have an app module that depends on a library which uses data binding, your app module
+ must configure data binding in its <code>build.gradle</code> file as well.</p>
+
+<p>Also, make sure you are using a compatible version of Android Studio.
+<strong>Android Studio 1.3</strong> and later provides support for data binding as described in
+<a href="#studio_support">Android Studio Support for Data Binding</a>.
 </p>
 
 <h2 id="data_binding_layout_files">
@@ -428,6 +372,36 @@
    &lt;/LinearLayout&gt;
 &lt;/layout&gt;
 </pre>
+
+<p>
+  Some specialized click event handlers exist and they need an attribute other than
+  <code>android:onClick</code> to avoid a conflict. The following attributes have been created
+  to avoid such conflicts:
+</p>
+
+<table>
+  <tr>
+    <th>Class</th>
+    <th>Listener Setter</th>
+    <th>Attribute</th>
+  </tr>
+  <tr>
+    <td>{@link android.widget.SearchView}</td>
+    <td>{@link android.widget.SearchView#setOnSearchClickListener}</td>
+    <td><code>android:onSearchClick</code></td>
+  </tr>
+  <tr>
+    <td>{@link android.widget.ZoomControls}</td>
+    <td>{@link android.widget.ZoomControls#setOnZoomInClickListener}</td>
+    <td><code>android:onZoomIn</code></td>
+  </tr>
+  <tr>
+    <td>{@link android.widget.ZoomControls}</td>
+    <td>{@link android.widget.ZoomControls#setOnZoomOutClickListener}</td>
+    <td><code>android:onZoomOut</code></td>
+  </tr>
+</table>
+
 <h2 id="layout_details">
   Layout Details
 </h2>
@@ -560,6 +534,14 @@
   <code>boolean</code>, etc.
 </p>
 
+<p>
+  A special variable named <code>context</code> is generated for use in binding
+  expressions as needed. The value for <code>context</code> is the
+  <code>Context</code> from the root View's {@link android.view.View#getContext}.
+  The <code>context</code> variable will be overridden by an explicit variable
+  declaration with that name.
+</p>
+
 <h3 id="custom_binding_class_names">
   Custom Binding Class Names
 </h3>
@@ -1669,3 +1651,28 @@
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/&gt;
 </pre>
+
+<h3 id="studio_support">Android Studio Support for Data Binding</h3>
+
+<p>
+Android Studio supports syntax highlighting of data binding expressions, and flags any expression
+language syntax errors in the editor.
+</p>
+<p>
+The Preview pane displays default values for data binding expressions if provided. In the following
+example excerpt of an element from a layout XML file, the Preview pane displays the
+{@code PLACEHOLDER} default text value in the <code>TextView</code>.
+</p>
+
+<pre>
+&lt;TextView android:layout_width="wrap_content"
+   android:layout_height="wrap_content"
+   android:text="&commat;{user.firstName, default=PLACEHOLDER}"/&gt;
+</pre>
+
+<p>
+If you need to display a default value during the design phase of your project, you
+can also use tools attributes instead of default expression values, as described in
+<a class="external-link" href="http://tools.android.com/tips/layout-designtime-attributes">
+Designtime Layout Attributes</a>.
+</p>
\ No newline at end of file
diff --git a/docs/html/tools/debugging/annotations.jd b/docs/html/tools/debugging/annotations.jd
index b0d5a22..fbdb9e4 100644
--- a/docs/html/tools/debugging/annotations.jd
+++ b/docs/html/tools/debugging/annotations.jd
@@ -266,19 +266,17 @@
 public abstract void setWallpaper(Bitmap bitmap) throws IOException;
 </pre>
 
-<p>This example requires the caller of the
-<code>updateVisitedHistory</code> method to have both read and write bookmark history permissions. </p>
-
+<p>This example requires the caller of the {@code copyFile()} method to have both read and write
+permissions to external storage:</p>
 <pre>
 &#64;RequiresPermission(allOf = {
-    Manifest.permission.READ_HISTORY_BOOKMARKS,
-    Manifest.permission.WRITE_HISTORY_BOOKMARKS})
-public static final void updateVisitedHistory(ContentResolver cr, String url, boolean real) {
+    Manifest.permission.READ_EXTERNAL_STORAGE,
+    Manifest.permission.WRITE_EXTERNAL_STORAGE})
+public static final void copyFile(String dest, String source) {
     ...
 }
 </pre>
 
-
 <h2 id="check-result">Adding CheckResults Annotations</h2>
 <p>Use the <code>@CheckResults</code> annotation to
 validate that a method's result or return value is actually used. The following example annotates
diff --git a/docs/html/tools/debugging/debugging-devtools.jd b/docs/html/tools/debugging/debugging-devtools.jd
deleted file mode 100644
index 3a05120..0000000
--- a/docs/html/tools/debugging/debugging-devtools.jd
+++ /dev/null
@@ -1,77 +0,0 @@
-page.title=Using the Dev Tools App
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
-<p>The Dev Tools application is installed by default on all system images included with the SDK,
-  so you can use it with the Android Emulator. With the Dev Tools application, you can enable a
-  number of settings on your device that will make it easier to test and debug your applications.</p>
-
-  <p> The Dev Tools application relies on a number of permissions that are not available for
-  third party applications. If you'd like to install the Dev Tools application
-  on a real development device, you'd have to build a system image for that device and sign
-  the Dev Tools application with the same key as used for the system image.</p>
-
-  <p>To get started, launch the Dev Tools application and select <strong>Development Settings</strong>. This will
-  open the Development Settings page with the following options (among others):</p>
-
-  <dl>
-    <dt><strong>Debug app</strong></dt>
-
-    <dd>
-      Lets you select the application to debug. You do not need to set this to attach a debugger,
-      but setting this value has two effects:
-
-      <ul>
-        <li>It will prevent Android from throwing an error if you pause on a breakpoint for a long
-        time while debugging.</li>
-
-        <li>It will enable you to select the <em>Wait for Debugger</em> option to pause application
-        startup until your debugger attaches (described next).</li>
-      </ul>
-    </dd>
-
-    <dt><strong>Wait for debugger</strong></dt>
-
-    <dd>Blocks the selected application from loading until a debugger attaches. This way you can
-    set a breakpoint in {@link android.app.Activity#onCreate onCreate()}, 
-    which is important to debug the startup process of an Activity.
-    When you change this option, any currently running instances of the selected application will
-    be killed. In order to check this box, you must have selected a debug application as described
-    in the previous option. You can do the same thing by adding {@link
-    android.os.Debug#waitForDebugger()} to your code.</dd>
-
-    <dt><strong>Show screen updates</strong></dt>
-
-    <dd>Flashes a momentary pink rectangle on any screen sections that are being redrawn. This is
-    very useful for discovering unnecessary screen drawing.</dd>
-
-    <dt><strong>Immediately destroy activities</strong></dt>
-
-    <dd>Tells the system to destroy an activity as soon as it is stopped (as if Android had to
-    reclaim memory).&nbsp; This is very useful for testing the {@link
-    android.app.Activity#onSaveInstanceState} / {@link
-    android.app.Activity#onCreate(android.os.Bundle)} code path, which would otherwise be difficult
-    to force. Choosing this option will probably reveal a number of problems in your application
-    due to not saving state. For more information about saving an activity's state, see the
-    <a href="{@docRoot}guide/components/activities.html#SavingActivityState">Activities</a>
-document.</dd>
-
-    <dt><strong>Show CPU usage</strong></dt>
-
-    <dd>Displays CPU meters at the top of the screen, showing how much the CPU is being used. The
-    top red bar shows overall CPU usage, and the green bar underneath it shows the CPU time spent
-    in compositing the screen. 
-    <p class="note">Note: You cannot turn this feature off once it is on, without
-    restarting the emulator.</p></dd>
-
-    <dt><strong>Show background</strong></dt>
-
-    <dd>Displays a background pattern when no activity screens are visible. This typically does not
-    happen, but can happen during debugging.</dd>
-  </dl>
-
-  <p>These settings will be remembered across emulator restarts.</p>
-
-
-
diff --git a/docs/html/tools/debugging/debugging-log.jd b/docs/html/tools/debugging/debugging-log.jd
index e222b2a..f17c4aa 100644
--- a/docs/html/tools/debugging/debugging-log.jd
+++ b/docs/html/tools/debugging/debugging-log.jd
@@ -1,6 +1,5 @@
 page.title=Reading and Writing Logs
-parent.title=Debugging
-parent.link=index.html
+
 @jd:body
 
 <div id="qv-wrapper">
@@ -8,8 +7,6 @@
       <h2>In this document</h2>
 
       <ol>
-        <li><a href="#logClass">The Log class</a></li>
-
         <li><a href="#startingLogcat">Starting LogCat</a></li>
 
         <li><a href="#filteringOutput">Filtering Log Output</a></li>
@@ -20,7 +17,7 @@
 
         <li><a href="#viewingStd">Viewing stdout and stderr</a></li>
 
-        <li><a href="#DebuggingWebPages">Debugging Web Pages</a></li>
+        <li><a href="#logClass">Logging from Code</a></li>
       </ol>
     </div>
   </div>
@@ -31,31 +28,6 @@
   {@link android.util.Log} class. You can run LogCat through ADB or from DDMS, which allows you to
   read the messages in real time.</p>
 
-  <h2 id="logClass">The <code>Log</code> class</h2>
-
-  <p>{@link android.util.Log} is a logging class that you can utilize in your code to print out
-  messages to the LogCat. Common logging methods include:</p>
-
-  <ul>
-    <li>{@link android.util.Log#v(String,String)} (verbose)</li>
-
-    <li>{@link android.util.Log#d(String,String)} (debug)</li>
-
-    <li>{@link android.util.Log#i(String,String)} (information)</li>
-
-    <li>{@link android.util.Log#w(String,String)} (warning)</li>
-
-    <li>{@link android.util.Log#e(String,String)} (error)</li>
-  </ul>For example:
-  <pre class="no-pretty-print">
-Log.i("MyActivity", "MyClass.getView() &mdash; get item number " + position);
-</pre>
-
-  <p>The LogCat will then output something like:</p>
-  <pre class="no-pretty-print">
-I/MyActivity( 1557): MyClass.getView() &mdash; get item number 1
-</pre>
-
   <h2 id="startingLogcat">Using LogCat</h2>
 
   <p>You can use LogCat from within DDMS or call it on an ADB shell. For more information on how to
@@ -192,7 +164,7 @@
 </pre>
 
   <p>The final element in the above expression, <code>*:S</code>, sets the priority level for all
-  tags to "silent", thus ensuring only log messages with "View" and "MyApp" are displayed. Using
+  tags to "silent", thus ensuring only log messages with "ActivityManager" and "MyApp" are displayed. Using
   <code>*:S</code> is an excellent way to ensure that log output is restricted to the filters that
   you have explicitly specified &mdash; it lets your filters serve as a "whitelist" for log
   output.</p>
@@ -287,8 +259,35 @@
   output to <code>/dev/null</code>. (The Java <code>System.out</code> and <code>System.err</code>
   streams go to the log.)
 
-  <h2 id="DebuggingWebPages">Debugging Web Apps</h2>
-  <p>
-  If you're developing a web application for Android, you can debug your JavaScript using the console JavaScript APIs,
-  which output messages to LogCat. For more information, see
-  <a href="{@docRoot}guide/webapps/debugging.html">Debugging Web Apps</a>.</p>
+  <h2 id="logClass">Logging from Code</h2>
+
+  <p>The {@link android.util.Log} class allows you to create log entries in your code that display
+  in the LogCat tool. Common logging methods include:</p>
+
+  <ul>
+    <li>{@link android.util.Log#v(java.lang.String, java.lang.String)
+      Log.v(String, String)} (verbose)</li>
+
+    <li>{@link android.util.Log#d(java.lang.String, java.lang.String)
+      Log.d(String, String)} (debug)</li>
+
+    <li>{@link android.util.Log#i(java.lang.String, java.lang.String)
+      Log.i(String, String)} (information)</li>
+
+    <li>{@link android.util.Log#w(java.lang.String, java.lang.String)
+      Log.w(String, String)} (warning)</li>
+
+    <li>{@link android.util.Log#e(java.lang.String, java.lang.String)
+      Log.e(String, String)} (error)</li>
+  </ul>
+
+  <p>For example, using the following call:</p>
+
+  <pre class="no-pretty-print">
+Log.i("MyActivity", "MyClass.getView() &mdash; get item number " + position);
+</pre>
+
+  <p>The LogCat outputs something like:</p>
+  <pre class="no-pretty-print">
+I/MyActivity( 1557): MyClass.getView() &mdash; get item number 1
+</pre>
diff --git a/docs/html/tools/debugging/debugging-memory.jd b/docs/html/tools/debugging/debugging-memory.jd
old mode 100644
new mode 100755
index fc4f4be..4e2e519
--- a/docs/html/tools/debugging/debugging-memory.jd
+++ b/docs/html/tools/debugging/debugging-memory.jd
@@ -42,7 +42,7 @@
 <p>The simplest place to begin investigating your app’s memory usage is the runtime log messages.
 Sometimes when a GC occurs, a message is printed to
 <a href="{@docRoot}tools/help/logcat.html">logcat</a>. The logcat output is also available in the
-Device Monitor or directly in IDEs such as Eclipse and Android Studio.</p>
+Device Monitor or directly in an IDE such as Android Studio.</p>
 
 <h3 id="DalvikLogMessages">Dalvik Log Messages</h3>
 
@@ -107,7 +107,7 @@
 
 <h3 id="ARTLogMessages">ART Log Messages</h3>
 
-<p>Unlike Dalvik, ART doesn't log messqages for GCs that were not explicitly requested. GCs are only
+<p>Unlike Dalvik, ART doesn't log messages for GCs that were not explicitly requested. GCs are only
 printed when they are they are deemed slow. More precisely, if the GC pause exceeds than 5ms or
 the GC duration exceeds 100ms. If the app is not in a pause perceptible process state,
 then none of its GCs are deemed slow. Explicit GCs are always logged.</p>
@@ -240,7 +240,7 @@
 
 <h3>Memory Monitor in Android Studio</h3>
 <p>Use Android Studio to view your app's memory use: </p>
-<ul>
+<ol>
   <li>Start your app on a connected device or emulator.</li>
   <li>Open the Android run-time window, and view the free and allocated memory in the Memory
     Monitor. </li>
@@ -260,7 +260,7 @@
    </li>
   <li>Identify which actions in your app are likely causing too much allocation and determine where
    in your app you should try to reduce allocations and release resources.
-</ul>
+</ol>
 
 <h3>Device Monitor </h3>
 <ol>
@@ -350,9 +350,9 @@
 
 
 <p class="note"><strong>Note:</strong> You will always see some allocations from {@code
-DdmVmInternal} and else where that come from the allocation tracker itself.</p>
+DdmVmInternal} and elsewhere that come from the allocation tracker itself.</p>
 
-<p>Although it's not necessary (nor possible) to remove all allocations for your performance
+<p>Although it's not necessary (nor possible) to remove all allocations from your performance
 critical code paths, the allocation tracker can help you identify important issues in your code.
 For instance, some apps might create a new {@link android.graphics.Paint} object on every draw.
 Moving that object into a global member is a simple fix that helps improve performance.</p>
@@ -628,7 +628,7 @@
 
 
 <p>To retrieve your heap dump from within Android Studio, use the
-<a href="{@docRoot}tools/studio/index.html#me-cpu">Memory Monitor</a> and
+<a href="{@docRoot}tools/studio/index.html#mem-cpu">Memory Monitor</a> and
 <a href="{@docRoot}tools/studio/index.html#heap-dump">HPROF viewer</a>.  
 
 <p>You can also still perform these procedures in the Android monitor:</p>
@@ -655,10 +655,12 @@
 number of allocations in the Zygote process. But because the Zygote allocations are shared across
 all app processes, they don’t matter very much to your own heap analysis.</p>
 
-<p>To analyze your heap dump, you can use a standard tool like jhat or the <a href=
-"http://www.eclipse.org/mat/downloads.php">Eclipse Memory Analyzer Tool</a> (MAT). However, first
+<p>To analyze your heap dump, you can use <a href=
+"{@docRoot}tools/help/am-memory.html">Memory Monitor</a> in Android Studio. 
+You can also use a standard tool like jhat. However, first
 you'll need to convert the HPROF file from Android's format to the J2SE HPROF format. You can do
-this using the <code>hprof-conv</code> tool provided in the <code>&lt;sdk&gt;/platform-tools/</code>
+this using the <code>hprof-conv</code> tool provided in the 
+<code>&lt;sdk&gt;/platform-tools/</code>
 directory. Simply run the <code>hprof-conv</code> command with two arguments: the original HPROF
 file and the location to write the converted HPROF file. For example:</p>
 
@@ -666,11 +668,9 @@
 hprof-conv heap-original.hprof heap-converted.hprof
 </pre>
 
-<p class="note"><strong>Note:</strong> If you're using the version of DDMS that's integrated into
-Eclipse, you do not need to perform the HPROF conversation—it performs the conversion by
-default.</p>
 
-<p>You can now load the converted file in MAT or another heap analysis tool that understands
+
+<p>You can now load the converted file into a heap analysis tool that understands
 the J2SE HPROF format.</p>
 
 <p>When analyzing your heap, you should look for memory leaks caused by:</p>
@@ -682,77 +682,6 @@
 </ul>
 
 
-<h3 id="EclipseMat">Using the Eclipse Memory Analyzer Tool</h3>
-
-<p>The <a href=
-"http://www.eclipse.org/mat/downloads.php">Eclipse Memory Analyzer Tool</a> (MAT) is just one
-tool that you can use to analyze your heap dump. It's also quite powerful so most of its
-capabilities are beyond the scope of this document, but here are a few tips to get you started.
-
-<p>Once you open your converted HPROF file in MAT, you'll see a pie chart in the Overview,
-showing what your largest objects are. Below this chart, are links to couple of useful features:</p>
-
-<ul>
-  <li>The <strong>Histogram view</strong> shows a list of all classes and how many instances
-  there are of each.
-  <p>You might want to use this view to find extra instances of classes for which you know there
-  should be only a certain number. For example, a common source of leaks is additional instance of
-  your {@link android.app.Activity} class, for which you should usually have only one instance
-  at a time. To find a specific class instance, type the class name into the <em>&lt;Regex></em>
-  field at the top of the list.
-  <p>When you find a class with too many instances, right-click it and select
-  <strong>List objects</strong> &gt; <strong>with incoming references</strong>. In the list that
-  appears, you can determine where an instance is retained by right-clicking it and selecting
-  <strong>Path To GC Roots</strong> &gt; <strong>exclude weak references</strong>.</p>
-  </li>
-
-  <li>The <strong>Dominator tree</strong> shows a list of objects organized by the amount
-  of retained heap.
-  <p>What you should look for is anything that's retaining a portion of heap that's roughly
-  equivalent to the memory size you observed leaking from the <a href="#LogMessages">GC logs</a>,
-  <a href="#ViewHeap">heap updates</a>, or <a href="#TrackAllocations">allocation
-  tracker</a>.
-  <p>When you see something suspicious, right-click on the item and select
-  <strong>Path To GC Roots</strong> &gt; <strong>exclude weak references</strong>. This opens a
-  new tab that traces the references to that object which is causing the alleged leak.</p>
-
-  <p class="note"><strong>Note:</strong> Most apps will show an instance of
-  {@link android.content.res.Resources} near the top with a good chunk of heap, but this is
-  usually expected when your app uses lots of resources from your {@code res/} directory.</p>
-  </li>
-</ul>
-
-
-<img src="{@docRoot}images/tools/mat-histogram@2x.png" width="760" alt="" />
-<p class="img-caption"><strong>Figure 4.</strong> The Eclipse Memory Analyzer Tool (MAT),
-showing the Histogram view and a search for "MainActivity".</p>
-
-<p>For more information about MAT, watch the Google I/O 2011 presentation,
-<a href="http://www.youtube.com/watch?v=_CruQY55HOk">Memory management for Android apps</a>,
-which includes a walkthrough using MAT beginning at about <a href=
-"http://www.youtube.com/watch?v=_CruQY55HOk&amp;feature=player_detailpage#t=1270">21:10</a>.
-Also refer to the <a href="http://wiki.eclipse.org/index.php/MemoryAnalyzer">Eclipse Memory
-Analyzer documentation</a>.</p>
-
-<h4 id="MatCompare">Comparing heap dumps</h4>
-
-<p>You may find it useful to compare your app's heap state at two different points in time in order
-to inspect the changes in memory allocation. To compare two heap dumps using MAT:</p>
-
-<ol>
-  <li>Create two HPROF files as described above, in <a href="#HeapDump">Capturing a Heap Dump</a>.
-  <li>Open the first HPROF file in MAT (<strong>File</strong> > <strong>Open Heap Dump</strong>).
-  <li>In the Navigation History view (if not visible, select <strong>Window</strong> >
-  <strong>Navigation History</strong>), right-click on <strong>Histogram</strong> and select
-  <strong>Add to Compare Basket</strong>.
-  <li>Open the second HPROF file and repeat steps 2 and 3.
-  <li>Switch to the <em>Compare Basket</em> view and click <strong>Compare the Results</strong>
-  (the red "!" icon in the top-right corner of the view).
-</ol>
-
-
-
-
 
 
 <h2 id="TriggerLeaks">Triggering Memory Leaks</h2>
diff --git a/docs/html/tools/debugging/debugging-projects-cmdline.jd b/docs/html/tools/debugging/debugging-projects-cmdline.jd
deleted file mode 100644
index 032d6ce..0000000
--- a/docs/html/tools/debugging/debugging-projects-cmdline.jd
+++ /dev/null
@@ -1,78 +0,0 @@
-page.title=Debugging from Other IDEs
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#start-debugging">Starting a Debugging Environment</a>
-        <ul>
-          <li><a href="#debuggingPort">Configuring Your IDE to Attach to the Debugging Port</a></li>
-        </ul>
-        </li>
-      </ol>
-    </div>
-  </div>
- 
-  <p>If you are not using Android Studio to develop, you can still take advantage of all the tools that
-  the Android SDK provides for debugging. A basic debugging environment consists of:</p>
-
-  <ul>
-    <li><a href="{@docRoot}tools/help/adb.html">ADB</a></li>
-
-    <li><a href="{@docRoot}tools/debugging/ddms.html">DDMS</a></li>
-
-    <li>Java Debugger</li>
-  </ul>
-  
-  <p>You need to obtain a JDWP-compliant Java debugger to properly debug your application.
-  Most Java IDEs will already have one included, or you can use a command line debugger,
-  such as JDB, if you are using a simple text editor to develop applications.</p>
-
-  <h2 id="start-debugging">Starting a debugging environment</h2>
-  <p>A Java Debugger assists you in finding problems with
-  your code by letting you set breakpoints, step through execution of your application, and examine
-  variable values. Since you are not using Android Studio, you have to manually start up the debugging
-  environment yourself by running a few tools that are provided in the Android SDK. To begin
-  debugging your application, follow these general steps:</p>
-
-  <ol>
-    <li>Load an AVD with the Android emulator or connect a device to your computer.</li>
-    
-    <li>Start DDMS from the sdk <code>/tools</code> directory. This also starts ADB if it is 
-    not already started. You should see your device appear in DDMS.</li>
-
-    <li>Install and run your <code>.apk</code> file on the device or emulator. In DDMS, you should
-    see your application running under the device that you installed it to.</li>
-
-    <li>Attach your debugger to the debugging port 8700, or to the specific port shown for the
-    application in DDMS.</li>
-  </ol>
-
-  <h3 id="debuggingPort">Configuring Your IDE to Attach to the Debugging Port</h3>
-
-  <p>DDMS assigns a specific debugging port to every virtual machine that it finds on the
-  emulator. You must either attach your IDE to that port (listed on the Info tab for that VM), or
-  you can use a default port 8700 to connect to whatever application is currently selected on the
-  list of discovered virtual machines.</p>
-
-  <p>Your IDE should attach to your application running on the emulator, showing you its threads
-  and allowing you to suspend them, inspect their state, and set breakpoints. If you selected "Wait
-  for debugger" in the Development settings panel the application will run when Android Studio connects,
-  so you will need to set any breakpoints you want before connecting.</p>
-
-  <p>Changing either the application being debugged or the "Wait for debugger" option causes the
-  system to kill the selected application if it is currently running. You can use this to kill your
-  application if it is in a bad state by simply going to the settings and toggling the
-  checkbox.</p>
-
-
-
-
-
-
-
diff --git a/docs/html/tools/debugging/debugging-projects.jd b/docs/html/tools/debugging/debugging-projects.jd
deleted file mode 100644
index 2283f8b..0000000
--- a/docs/html/tools/debugging/debugging-projects.jd
+++ /dev/null
@@ -1,67 +0,0 @@
-page.title=Debugging from Eclipse with ADT
-parent.title=Debugging
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#tools">The Debug Perspective</a></li>
-
-        <li><a href="#toptips">The DDMS Perspective</a></li>
-      </ol>
-    </div>
-  </div>
-  
-  <p>If you are developing in Eclipse with the ADT plugin, you can use the built-in Java Debugger,
-  along with DDMS, to debug your applications. To access the debugger and
-  DDMS, Eclipse displays the debugger and DDMS features as perspectives, which are customized
-  Eclipse views that display certain tabs and windows depending on the perspective that you are in.
-  Eclipse also takes care of starting the ADB host daemon for you, so you do not have to run this
-  manually.</p>
-
-  <h2>The Debug Perspective in Eclipse</h2>
-
-  <p>The Debug Perspective in Eclipse gives you access to the following tabs:</p>
-
-  <ul>
-    <li>Debug - Displays previously and currently debugged Android applications and its currently
-    running threads</li>
-
-    <li>Variables - When breakpoints are set, displays variable values during code execution</li>
-
-    <li>Breakpoints - Displays a list of the set breakpoints in your application code</li>
-
-    <li>LogCat - Allows you to view system log messages in real time. The LogCat tab is also
-    available in the DDMS perspective.</li>
-  </ul>
-  <p>You can access the Debug Perspective by clicking <strong>Window &gt; Open Perspective &gt;
-  Debug</strong>. Refer to the appropriate documentation for the Eclipse debugger for more
-  information.</p>
-
-  <h2>The DDMS Perspective</h2>
-  <p>The DDMS Perspective in Eclipse lets you access all of the features
-  of DDMS from within the Eclipse IDE. The following sections of DDMS are available to you:</p>
-
-  <ul>
-    <li>Devices - Shows the list of devices and AVDs that are connected to ADB.</li>
-
-    <li>Emulator Control - Lets you carry out device functions.</li>
-
-    <li>LogCat - Lets you view system log messages in real time.</li>
-
-    <li>Threads - Shows currently running threads within a VM.</li>
-
-    <li>Heap - Shows heap usage for a VM.</li>
-
-    <li>Allocation Tracker - Shows the memory allocation of objects.</li>
-
-    <li>File Explorer - Lets you explore the device's file system.</li>
-  </ul>
-  <p>To access the DDMS perspective, go to <strong>Window &gt; Open Perspective &gt;
-  DDMS</strong>. If DDMS does not appear, go to <strong>Window &gt; Open Perspective &gt; Other
-  ...</strong> and select <strong>DDMS</strong> from the Open Perspective window that appears. For
-  more information on using DDMS, see <a href="ddms.html">Using the Dalvik Debug Monitor Server</a>.
-  </p>
\ No newline at end of file
diff --git a/docs/html/tools/debugging/debugging-tracing.jd b/docs/html/tools/debugging/debugging-tracing.jd
index 829c82a..70869da 100644
--- a/docs/html/tools/debugging/debugging-tracing.jd
+++ b/docs/html/tools/debugging/debugging-tracing.jd
@@ -108,7 +108,7 @@
   <ul>
     <li>If you are using the {@link android.os.Debug} class,
      your application must have permission to write to external storage
-     ({@link android.Manifest.permission#READ_EXTERNAL_STORAGE}). </li>
+     ({@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE}). </li>
     <li>If you are using DDMS:
       <ul>
         <li>Android 2.1 and earlier devices must
diff --git a/docs/html/tools/debugging/improving-w-lint.jd b/docs/html/tools/debugging/improving-w-lint.jd
index 8f74f46..3b220b5 100644
--- a/docs/html/tools/debugging/improving-w-lint.jd
+++ b/docs/html/tools/debugging/improving-w-lint.jd
@@ -9,9 +9,9 @@
 
       <ol>
         <li><a href="#overview">Overview</a></li>
-        <li><a href=#studio">Running lint from Android Studio</a></li>
-        <li><a href=#commandline">Running lint from the command-line</a></li>
-         <li><a href=#config">Configuring lint</a>
+        <li><a href="#studio">Running lint from Android Studio</a></li>
+        <li><a href="#commandline">Running lint from the command-line</a></li>
+         <li><a href="#config">Configuring lint</a>
             <ol>
 		<LI><a href="#studio_config">Configuring lint in Android Studio</a></LI>
                 <LI><a href="#pref">Configuring the lint file</a></LI>
@@ -29,12 +29,24 @@
 
 
 <p>
-In addition to testing that your Android application meets its functional requirements, it's important to ensure that your code has no structural problems. Poorly structured code can impact the reliability and efficiency of your Android apps and make your code harder to maintain. For example, if your XML resource files contain unused namespaces, this takes up space and incurs unnecessary processing. Other structural issues, such as use of deprecated elements or API calls that are not supported by the target API versions, might lead to code failing to run correctly.</p>
+In addition to testing that your Android application meets its functional requirements, it's
+important to ensure that your code has no structural problems. Poorly structured code can impact the
+reliability and efficiency of your Android apps and make your code harder to maintain. For example,
+if your XML resource files contain unused namespaces, this takes up space and incurs unnecessary
+processing. Other structural issues, such as use of deprecated elements or API calls that are not
+supported by the target API versions, might lead to code failing to run correctly.</p>
 
 <h2 id="overview">Overview</h2>
 <p>The Android SDK provides a code scanning tool called <a href="{@docRoot}tools/help/lint.html"><code>lint</code></a>
-that can help you to easily identify and correct problems with the structural quality of your code, without having to execute the app or write any test cases. Each problem detected by the tool is reported with a description message and a severity level, so that you can quickly prioritize the critical improvements that need to be made.  You can also configure a problem's severity level to ignore issues that are not relevant for your project, or raise the severity level. The tool has a command-line interface, so you can easily integrate it into your automated testing process.</p>
-<p>The {@code lint} tool checks your Android project source files for potential bugs and optimization improvements for correctness, security, performance, usability, accessibility, and internationalization. You can run {@code lint} from the command-line or from Android Studio.</p>
+that can help you to easily identify and correct problems with the structural quality of your code,
+without having to execute the app or write any test cases. Each problem detected by the tool is
+reported with a description message and a severity level, so that you can quickly prioritize the
+critical improvements that need to be made.  You can also configure a problem's severity level to
+ignore issues that are not relevant for your project, or raise the severity level. The tool has a
+command-line interface, so you can easily integrate it into your automated testing process.</p>
+<p>The {@code lint} tool checks your Android project source files for potential bugs and
+optimization improvements for correctness, security, performance, usability, accessibility, and
+internationalization. You can run {@code lint} from the command-line or from Android Studio.</p>
 
 <p class="note"><strong>Note:</strong> In Android Studio, additional
 <a href="https://www.jetbrains.com/idea/help/inspection-basics.html?search=inspection" class="external-link"
@@ -46,15 +58,23 @@
 <p class="img-caption"><strong>Figure 1.</strong> Code scanning workflow with the {@code lint} tool</p>
 <dl>
 <dt><b>Application source files</b></dt>
-<dd>The source files consist of files that make up your Android project, including Java and XML files, icons, and ProGuard configuration files. </dd>
+<dd>The source files consist of files that make up your Android project, including Java and XML
+files, icons, and ProGuard configuration files. </dd>
 <dt><b>The <code>lint.xml</code> file</b></dt>
-<dd>A configuration file that you can use to specify any {@code lint} checks that you want to exclude and to customize problem severity levels.</dd>
+<dd>A configuration file that you can use to specify any {@code lint} checks that you want to
+exclude and to customize problem severity levels.</dd>
 <dt><b>The {@code lint} tool</b></dt>
-<dd>A static code scanning tool that you can run on your Android project from the command-line or Android Studio.  The {@code lint} tool checks for structural code problems that could affect the quality and performance of your Android application. It is strongly recommended that you correct any errors that {@code lint} detects before publishing your application.</dd>
+<dd>A static code scanning tool that you can run on your Android project from the command-line or
+Android Studio.  The {@code lint} tool checks for structural code problems that could affect the
+quality and performance of your Android application. It is strongly recommended that you correct any
+errors that {@code lint} detects before publishing your application.</dd>
 <dt><b>Results of {@code lint} checking</b></dt>
-<dd>You can view the results from {@code lint} in the console or in the <strong>Event Log</strong> in Android Studio.  Each issue is identified by the location in the source files where it occurred and a description of the issue.</dd>
+<dd>You can view the results from {@code lint} in the console or in the <strong>Event Log</strong>
+in Android Studio.  Each issue is identified by the location in the source files where it occurred
+and a description of the issue.</dd>
 </dl>
-<p>The {@code lint} tool is automatically installed as part of the Android SDK Tools revision 16 or higher.</p>
+<p>The {@code lint} tool is automatically installed as part of the Android SDK Tools revision 16 or
+higher.</p>
 
 
 <h2 id="studio">Running lint in Android Studio</h2>
@@ -101,14 +121,17 @@
 <p>
 To run {@code lint} against a list of files in a project directory:
 <pre>lint [flags] &lt;project directory&gt;</pre>
-<p>For example, you can issue the following command to scan the files under the {@code myproject} directory and its subdirectories. The issue ID  <code>MissingPrefix</code> tells {@code lint} to only scan for XML attributes that are missing the Android namespace prefix.</p>
+<p>For example, you can issue the following command to scan the files under the {@code myproject}
+directory and its subdirectories. The issue ID  <code>MissingPrefix</code> tells {@code lint} to
+only scan for XML attributes that are missing the Android namespace prefix.</p>
 <pre>lint --check MissingPrefix myproject </pre>
 <p>To see the full list of flags and command-line arguments supported by the tool:</p>
 <pre>lint --help</pre>
 </p>
 
 <h3>Example lint output</h3>
-<p>The following example shows the console output when the {@code lint} command is run against a project called Earthquake.  </p>
+<p>The following example shows the console output when the {@code lint} command is run against a
+project called Earthquake.  </p>
 <pre>
 $ lint Earthquake
 
@@ -124,10 +147,17 @@
 res: Warning: Missing density variation folders in res: drawable-xhdpi [IconMissingDensityFolder]
 0 errors, 4 warnings
 </pre>
-<p>The output above lists four warnings and no errors in this project.  Three warnings ({@code ManifestOrder}, {@code UsesMinSdkAttributes}, and {@code UsesMinSdkAttributes}) were found in the project's <code>AndroidManifest.xml</code> file. The remaining warning ({@code IconMissingDensityFolder}) was found in the <code>Preferences.xml</code> layout file.</p>
+<p>The output above lists four warnings and no errors in this project.  Three warnings
+({@code ManifestOrder}, {@code UsesMinSdkAttributes}, and {@code UnusedResources}) were found in
+the project's <code>AndroidManifest.xml</code> file. The remaining warning
+({@code IconMissingDensityFolder}) was found in the <code>Preferences.xml</code> layout file.</p>
 
 <h2 id="config">Configuring lint</h2>
-<p>By default, when you run a {@code lint} scan, the tool checks for all issues that are supported by {@code lint}.  You can also restrict the issues for {@code lint} to check and assign the severity level for those issues. For example, you can disable {@code lint} checking for specific issues that are not relevant to your project and configure {@code lint} to report non-critical issues at a lower severity level.</p>
+<p>By default, when you run a {@code lint} scan, the tool checks for all issues that are supported
+by {@code lint}.  You can also restrict the issues for {@code lint} to check and assign the severity
+level for those issues. For example, you can disable {@code lint} checking for specific issues that
+are not relevant to your project and configure {@code lint} to report non-critical issues at a lower
+severity level.</p>
 <p>You can configure {@code lint} checking at different levels:</p>
 <ul>
 <LI>Globally, for the entire project</LI>
@@ -161,23 +191,33 @@
 
 <h4>Module and file-specific preferences</h4>
 <ol>
-<LI>Run the {@code lint} tool on your module by right-clicking on your module folder or file in the Project View and selecting  <strong>Analyze &gt; Inspect Code</strong>. This displays the {@code lint} inspection results
+<LI>Run the {@code lint} tool on your module by right-clicking on your module folder or file in the
+Project View and selecting  <strong>Analyze &gt; Inspect Code</strong>. This displays the
+{@code lint} inspection results
 with a list of issues that {@code lint} detected in your module.</LI>
-<li>From the <strong>Lint Warnings</strong> view, use the toolbar options to configure {@code lint} preferences for individual modules and files, and set the issue display options.</li>
+<li>From the <strong>Lint Warnings</strong> view, use the toolbar options to configure {@code lint}
+preferences for individual modules and files, and set the issue display options.</li>
 </ol>
 
 
 <h3 id="pref">Configuring the lint file</h3>
-<p>You can specify your {@code lint} checking preferences in the <code>lint.xml</code> file.  If you are creating this file manually, place it in the root directory of your Android project.  If you are configuring {@code lint} preferences in Android Studio, the <code>lint.xml</code> file is automatically created and added to your Android project for you.</p>
-<p>The <code>lint.xml</code> file consists of an enclosing <code>&lt;lint&gt;</code> parent tag that contains one or more children <code>&lt;issue&gt;</code> elements.  Each <code>&lt;issue&gt;</code> is identified by a unique <code>id</code> attribute value, which is defined by {@code lint}.</p>
+<p>You can specify your {@code lint} checking preferences in the <code>lint.xml</code> file.  If you
+are creating this file manually, place it in the root directory of your Android project.  If you are
+configuring {@code lint} preferences in Android Studio, the <code>lint.xml</code> file is
+automatically created and added to your Android project for you.</p>
+<p>The <code>lint.xml</code> file consists of an enclosing <code>&lt;lint&gt;</code> parent tag that
+contains one or more children <code>&lt;issue&gt;</code> elements.  Each <code>&lt;issue&gt;</code>
+is identified by a unique <code>id</code> attribute value, which is defined by {@code lint}.</p>
 <pre>
 &lt;?xml version="1.0" encoding="UTF-8"?&gt;
     &lt;lint&gt;
         &lt;!-- list of issues to configure --&gt;
 &lt;/lint&gt;
 </pre>
-<p>By setting the severity attribute value in the <code>&lt;issue&gt;</code> tag, you can disable {@code lint} checking for an issue or change the severity level for an issue.  </p>
-<p class="note"><strong>Tip: </strong>To see the full list of issues supported by the {@code lint} tool and their corresponding issue IDs, run the <code>lint --list</code> command.</p>
+<p>By setting the severity attribute value in the <code>&lt;issue&gt;</code> tag, you can disable
+{@code lint} checking for an issue or change the severity level for an issue.  </p>
+<p class="note"><strong>Tip: </strong>To see the full list of issues supported by the {@code lint}
+tool and their corresponding issue IDs, run the <code>lint --list</code> command.</p>
 
 <h4>Sample lint.xml file</h4>
 <p>The following example shows the contents of a <code>lint.xml</code> file.</p>
@@ -212,8 +252,11 @@
 </p>
 
 <h4>Configuring lint checking in Java</h4>
-<p>To disable {@code lint} checking specifically for a Java class or method in your Android project, add the <code>&#64;SuppressLint</code> annotation to that Java code. </p>
-<p>The following example shows how you can turn off {@code lint} checking for the {@code NewApi} issue in the <code>onCreate</code> method.  The {@code lint} tool continues to check for the {@code NewApi} issue in other methods of this class.</p>
+<p>To disable {@code lint} checking specifically for a Java class or method in your Android project,
+add the <code>&#64;SuppressLint</code> annotation to that Java code. </p>
+<p>The following example shows how you can turn off {@code lint} checking for the {@code NewApi}
+issue in the <code>onCreate</code> method.  The {@code lint} tool continues to check for the
+{@code NewApi} issue in other methods of this class.</p>
 <pre>
 &#64;SuppressLint("NewApi")
 &#64;Override
@@ -221,22 +264,30 @@
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
 </pre>
-<p>The following example shows how to turn off {@code lint} checking for the {@code ParserError} issue in the <code>FeedProvider</code> class:</p>
+<p>The following example shows how to turn off {@code lint} checking for the {@code ParserError}
+issue in the <code>FeedProvider</code> class:</p>
 <pre>
 &#64;SuppressLint("ParserError")
 public class FeedProvider extends ContentProvider {
 </pre>
-<p>To suppress checking for all {@code lint} issues in the Java file, use the {@code all} keyword, like this:</p>
+<p>To suppress checking for all {@code lint} issues in the Java file, use the {@code all} keyword,
+like this:</p>
 <pre>
 &#64;SuppressLint("all")
 </pre>
 
 <h4>Configuring lint checking in XML</h4>
-<p>You can use the <code>tools:ignore</code> attribute to disable {@code lint} checking for specific sections of your XML files.  In order for this attribute to be recognized by the {@code lint} tool, the following namespace value must be included in your XML file:</p>
+<p>You can use the <code>tools:ignore</code> attribute to disable {@code lint} checking for specific
+sections of your XML files.  In order for this attribute to be recognized by the {@code lint} tool,
+the following namespace value must be included in your XML file:</p>
 <pre>
 namespace xmlns:tools="http://schemas.android.com/tools"
 </pre>
-<p>The following example shows how you can turn off {@code lint} checking for the  {@code UnusedResources} issue for the <code>&lt;LinearLayout&gt;</code> element of an XML layout file.  The <code>ignore</code> attribute is inherited by the children elements of the parent element in which the attribute is declared. In this example, the {@code lint} check is also disabled for the child <code>&lt;TextView&gt;</code> element. </p>
+<p>The following example shows how you can turn off {@code lint} checking for the
+{@code UnusedResources} issue for the <code>&lt;LinearLayout&gt;</code> element of an XML layout
+file.  The <code>ignore</code> attribute is inherited by the children elements of the parent element
+in which the attribute is declared. In this example, the {@code lint} check is also disabled for the
+child <code>&lt;TextView&gt;</code> element. </p>
 <pre>
 &lt;LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android"
@@ -247,11 +298,13 @@
         android:text="&#64;string/auto_update_prompt" /&gt;
 &lt;/LinearLayout&gt;
 </pre>
-<p>To disable more than one issue, list the issues to disable in a comma-separated string.  For example:</p>
+<p>To disable more than one issue, list the issues to disable in a comma-separated string.  For
+example:</p>
 <pre>
 tools:ignore="NewApi,StringFormatInvalid"
 </pre>
-<p>To suppress checking for all {@code lint} issues in the XML element, use the {@code all} keyword, like this:</p>
+<p>To suppress checking for all {@code lint} issues in the XML element, use the {@code all} keyword,
+like this:</p>
 <pre>
 tools:ignore="all"
 </pre>
diff --git a/docs/html/tools/debugging/systrace.jd b/docs/html/tools/debugging/systrace.jd
index 5d2cd89..bdeff12 100644
--- a/docs/html/tools/debugging/systrace.jd
+++ b/docs/html/tools/debugging/systrace.jd
@@ -43,7 +43,7 @@
 systems on an Android device. It puts together system and application thread execution on a common
 timeline. In order to analyze your app with Systrace, you first collect a trace log of your app, and
 the system activity. The generated trace allows you to view highly detailed, interactive reports
-showing everything happening the system for the traced duration.</p>
+showing everything happening in the system for the traced duration.</p>
 
 <img src="{@docRoot}images/systrace/overview.png" alt="Systrace example overview" id="figure1" />
 <p class="img-caption">
diff --git a/docs/html/tools/extras/oem-usb.jd b/docs/html/tools/extras/oem-usb.jd
index eed8a5e..cf15048 100644
--- a/docs/html/tools/extras/oem-usb.jd
+++ b/docs/html/tools/extras/oem-usb.jd
@@ -86,7 +86,7 @@
   <li>Select <strong>Browse my computer for driver software</strong> and click
     <strong>Next</strong>.</li>
   <li>Click <strong>Browse</strong> and locate the USB driver folder. (The Google USB
-Driver is located in {@code <sdk>\extras\google\usb_driver\}.)</li>
+Driver is located in {@code &lt;sdk&gt;\extras\google\usb_driver\}.)</li>
   <li>Click <strong>Next</strong> to install the driver.</li>
 </ol>
 
@@ -109,7 +109,7 @@
 <strong>Search removable media</strong>; and check <strong>Include this location in the
 search</strong>.</li>
   <li>Click <strong>Browse</strong> and locate the USB driver folder. (The Google USB
-Driver is located in {@code <sdk>\extras\google\usb_driver\}.)</li>
+Driver is located in {@code &lt;sdk&gt;\extras\google\usb_driver\}.)</li>
   <li>Click <strong>Next</strong> to upgrade the driver.</li>
 </ol>
 
@@ -127,8 +127,8 @@
   <li>Select <strong>I don't have the disk. Show me other options</strong>.</li>
   <li>Select <strong>Browse my computer for driver software</strong>.</li>
   <li>Click <strong>Browse</strong> and locate the USB driver folder. (The Google USB
-Driver is located in {@code <sdk>\extras\google\usb_driver\}.) As long as you specified the
-exact location of the 
+Driver is located in {@code &lt;sdk&gt;\extras\google\usb_driver\}.) As long as you specified the
+exact location of the
     installation package, you may leave <strong>Include subfolders</strong> checked or
   unchecked&mdash;it doesn't matter.</li>
   <li>Click <strong>Next</strong>. Vista may prompt you to confirm the privilege elevation
@@ -152,7 +152,7 @@
   search for the driver
     software. Select <strong>Browse my computer for driver software</strong>.</li>
   <li>Click <strong>Browse</strong> and locate the USB driver folder. (The Google USB
-Driver is located in {@code <sdk>\extras\google\usb_driver\}.) As long as you specified the
+Driver is located in {@code &lt;sdk&gt;\extras\google\usb_driver\}.) As long as you specified the
 exact location of the
     installation package, you may leave <strong>Include subfolders</strong> checked or
     unchecked&mdash;it doesn't matter.</li>
@@ -161,124 +161,245 @@
   <li>When Vista asks if you'd like to install the Google ADB Interface device,
   click <strong>Install</strong> to upgrade the driver.</li>
 </ol>
-  
+
 
 <h2 id="Drivers">OEM Drivers</h2>
 
 
-<table><tr>
+<table>
+<tr>
     <th>OEM</th>
     <th>Driver URL</th></tr>
-<tr><td>Acer</td>	<td><a
-href="http://www.acer.com/worldwide/support/mobile.html">http://www.acer.com/worldwide/support/mobile.html</a>
-    </td></tr>
-  <tr>
-    <td style="font-variant:small-caps">alcatel one touch</td>
-    <td><a
-href="http://www.alcatelonetouch.com/global-en/support/faq/usbdriver.html">http://www.alcatelonetouch.com/global-en/support/faq/usbdriver.html</a></td>
-  </tr>
-  <tr>
-    <td>Asus</td>
-    <td><a href="http://support.asus.com/download/">http://support.asus.com/download/</a></td>
-  </tr>
-  <tr><td>
-       Dell
-    </td>	<td>
-      <a
-href="http://support.dell.com/support/downloads/index.aspx?c=us&cs=19&l=en&s=dhs&~ck=anavml">http://support.dell.com/support/downloads/index.aspx?c=us&cs=19&l=en&s=dhs&~ck=anavml</a>  </td></tr>
+      <tr>
+        <td>
+          Acer
+        </td>
+        <td>
+          <a href=
+          "http://www.acer.com/worldwide/support/mobile.html">http://www.acer.com/worldwide/support/mobile.html</a>
+        </td>
+      </tr>
 
-<tr><td>Foxconn</td>	<td><a
-href="http://drivers.cmcs.com.tw/">http://drivers.cmcs.com.tw/</a></td>
-</tr>
-  <tr>
-    <td>
-      Fujitsu
-    </td>
-    <td><a
-href="http://www.fmworld.net/product/phone/sp/android/develop/">http://www.fmworld.net/product/phone/sp/android/develop/</a>
-    </td>
-  </tr>
-  <tr><td>
-       Garmin-Asus
-    </td>	<td><a
-href="https://www.garminasus.com/en_US/support/pcsync/">https://www.garminasus.com/en_US/support/pcsync/</a></td>
-</tr>
+      <tr>
+        <td style="font-variant:small-caps">
+          alcatel one touch
+        </td>
+        <td>
+          <a href=
+          "http://www.alcatelonetouch.com/global-en/support/">http://www.alcatelonetouch.com/global-en/support/</a>
+        </td>
+      </tr>
 
-<tr><td>Hisense</td>
-  <td><a
-href="http://app.hismarttv.com/dss/resourcecontent.do?method=viewResourceDetail&resourceId=16&type=5">http://app.hismarttv.com/dss/resourcecontent.do?method=viewResourceDetail&amp;resourceId=16&amp;type=5 </a></td>
-</tr>
+      <tr>
+        <td>
+          Asus
+        </td>
+        <td>
+          <a href="http://support.asus.com/download/">http://support.asus.com/download/</a>
+        </td>
+      </tr>
 
-<tr><td>HTC</td>	<td><a href="http://www.htc.com">http://www.htc.com </a> <br>Click on the
-support tab to select your products/device.  Different regions will have different links.</td>
-</tr>
+      <tr>
+        <td>
+          Blackberry
+        </td>
+        <td>
+          <a href=
+          "https://swdownloads.blackberry.com/Downloads/entry.do?code=4EE0932F46276313B51570F46266A608">
+          https://swdownloads.blackberry.com/Downloads/entry.do?code=4EE0932F46276313B51570F46266A608</a>
+        </td>
+      </tr>
 
-<tr><td>Huawei</td>	<td><a
-href="http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index">http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index</a></td>
-</tr>
+      <tr>
+        <td>
+          Dell
+        </td>
+        <td>
+          <a href=
+          "http://support.dell.com/support/downloads/index.aspx?c=us&amp;cs=19&amp;l=en&amp;s=dhs&amp;~ck=anavml">
+          http://support.dell.com/support/downloads/index.aspx?c=us&amp;cs=19&amp;l=en&amp;s=dhs&amp;~ck=anavml</a>
+        </td>
+      </tr>
 
-<tr><td>Intel</td>	<td><a
-href="http://www.intel.com/software/android">http://www.intel.com/software/android</a></td>
-</tr>
+      <tr>
+        <td>
+          Fujitsu
+        </td>
+        <td>
+          <a href=
+          "http://www.fmworld.net/product/phone/sp/android/develop/">http://www.fmworld.net/product/phone/sp/android/develop/</a>
+        </td>
+      </tr>
 
-<tr><td>KT Tech</td>	<td><a
-href="http://www.kttech.co.kr/cscenter/download05.asp">http://www.kttech.co.kr/cscenter/download05.asp</a> for EV-S100 (Take)</td>
-</tr>
-  <tr>
-    <td>
-      Kyocera
-    </td>
-    <td><a href="http://www.kyocera-wireless.com/support/phone_drivers.htm">http://www.kyocera-wireless.com/support/phone_drivers.htm</a>
-    </td>
-  </tr>
-  <tr>
-    <td>Lenovo</td>
-    <td><a href="http://developer.lenovomm.com/developer/download.jsp"
-        >http://developer.lenovomm.com/developer/download.jsp</a>
-    </td>
-  </tr>
-  <tr><td>LGE</td>	<td><a
-href="http://www.lg.com/us/mobile-phones/mobile-support/mobile-lg-mobile-phone-support.jsp">http://www.lg.com/us/mobile-phones/mobile-support/mobile-lg-mobile-phone-support.jsp</a></td>
-</tr>
-<tr><td>Motorola</td> <td><a
-href="http://developer.motorola.com/docstools/USB_Drivers/">http://developer.motorola.com/docstools/USB_Drivers/</a></td>
-</tr>
-<tr><td>MTK</td> <td><a
-href="http://online.mediatek.com/Public%20Documents/MTK_Android_USB_Driver.zip">http://online.mediatek.com/Public%20Documents/MTK_Android_USB_Driver.zip</a></td>
-</tr>
-<tr><td>Oppo</td> <td><a
-href="http://www.oppo.com/index.php?q=software/view&sw_id=631"
->http://www.oppo.com/index.php?q=software/view&sw_id=631</a></td>
-</tr>
-<tr><td>Pantech</td>	<td><a
-href="http://www.isky.co.kr/cs/software/software.sky?fromUrl=index">http://www.isky.co.kr/cs/software/software.sky?fromUrl=index</a></td>
-</tr><tr><td>Pegatron</td>	<td><a
-href="http://www.pegatroncorp.com/download/New_Duke_PC_Driver_0705.zip">http://www.pegatroncorp.com/download/New_Duke_PC_Driver_0705.zip</a> (ZIP download)</td>
-</tr><tr><td>Samsung</td>	<td><a
-href="http://www.samsung.com/us/support/downloads">http://www.samsung.com/us/support/downloads</a></td>
-</tr><tr><td>Sharp</td>	<td><a
-href="http://k-tai.sharp.co.jp/support/">http://k-tai.sharp.co.jp/support/</a></td>
-</tr><tr><td>SK Telesys</td>	<td><a
-href="http://www.sk-w.com/service/wDownload/wDownload.jsp">http://www.sk-w.com/service/wDownload/wDownload.jsp</a></td></tr><tr>
-<td>Sony Mobile Communications</td>	<td><a
-href="http://developer.sonymobile.com/downloads/drivers/">http://developer.sonymobile.com/downloads/drivers/</a></td></tr>
+      <tr>
+        <td>
+          Hisense
+        </td>
+        <td>
+          <a href=
+          "http://app.hismarttv.com/dss/resourcecontent.do?method=viewResourceDetail&amp;resourceId=16&amp;type=5">
+          http://app.hismarttv.com/dss/resourcecontent.do?method=viewResourceDetail&amp;resourceId=16&amp;type=5</a>
+        </td>
+      </tr>
 
-<tr><td>Teleepoch</td>	<td><a
-href="http://www.teleepoch.com/android.html">http://www.teleepoch.com/android.html</a></td>
-</tr>
+      <tr>
+        <td>
+          HTC
+        </td>
+        <td>
+          <a href="http://www.htc.com">http://www.htc.com</a><br>
+          Click on the support tab to select your products/device. Different regions will have
+          different links.
+        </td>
+      </tr>
 
-<tr><td>Toshiba</td>  <td><a
-href="http://support.toshiba.com/sscontent?docId=4001814">http://support.toshiba.com/sscontent?docId=4001814</a></td>
-</tr>
+      <tr>
+        <td>
+          Huawei
+        </td>
+        <td>
+          <a href=
+          "http://consumer.huawei.com/en/support/index.htm">http://consumer.huawei.com/en/support/index.htm</a>
+        </td>
+      </tr>
 
-<tr><td>Yulong Coolpad</td>	<td><a
-href="http://www.yulong.com/product/product/product/downloadList.html#downListUL">http://www.yulong.com/product/product/product/downloadList.html#downListUL</a></td>
-</tr>
+      <tr>
+        <td>
+          Intel
+        </td>
+        <td>
+          <a href="http://www.intel.com/software/android">http://www.intel.com/software/android</a>
+        </td>
+      </tr>
 
-<tr><td>Xiaomi</td>  <td><a
-href="http://www.xiaomi.com/c/driver/index.html">http://www.xiaomi.com/c/driver/index.html</a></td>
-</tr>
-<tr>
-<td>ZTE</td>	<td><a
-href="http://support.zte.com.cn/support/news/NewsDetail.aspx?newsId=1000442">http://support.zte.com.cn/support/news/NewsDetail.aspx?newsId=1000442</a></td></tr>
-</table>
+      <tr>
+        <td>
+          Kyocera
+        </td>
+        <td>
+          <a href=
+          "http://www.kyocera-wireless.com/support/phone_drivers.htm">http://www.kyocera-wireless.com/support/phone_drivers.htm</a>
+        </td>
+      </tr>
+
+      <tr>
+        <td>
+          Lenovo
+        </td>
+        <td>
+          <a href=
+          "http://support.lenovo.com/us/en/GlobalProductSelector">http://support.lenovo.com/us/en/GlobalProductSelector</a>
+        </td>
+      </tr>
+
+      <tr>
+        <td>
+          LGE
+        </td>
+        <td>
+          <a href=
+          "http://www.lg.com/us/support/software-firmware">http://www.lg.com/us/support/software-firmware</a>
+        </td>
+      </tr>
+
+      <tr>
+        <td>
+          Motorola
+        </td>
+        <td>
+          <a href=
+          "https://motorola-global-portal.custhelp.com/app/answers/detail/a_id/88481">https://motorola-global-portal.custhelp.com/app/answers/detail/a_id/88481/</a>
+        </td>
+      </tr>
+
+      <tr>
+        <td>
+          MTK
+        </td>
+        <td>
+          <a href=
+          "http://online.mediatek.com/Public%20Documents/MTK_Android_USB_Driver.zip">http://online.mediatek.com/Public%20Documents/MTK_Android_USB_Driver.zip</a>
+          (ZIP download)
+        </td>
+      </tr>
+
+      <tr>
+        <td>
+          Oppo
+        </td>
+        <td>
+          <a href=
+          "http://www.oppo.com/index.php?q=software/view&amp;sw_id=631">http://www.oppo.com/index.php?q=software/view&amp;sw_id=631</a>
+        </td>
+      </tr>
+
+      <tr>
+        <td>
+          Pegatron
+        </td>
+        <td>
+          <a href=
+          "http://www.pegatroncorp.com/download/New_Duke_PC_Driver_0705.zip">http://www.pegatroncorp.com/download/New_Duke_PC_Driver_0705.zip</a>
+          (ZIP download)
+        </td>
+      </tr>
+
+      <tr>
+        <td>
+          Samsung
+        </td>
+        <td>
+          <a href=
+          "http://www.samsung.com/us/support/downloads">http://www.samsung.com/us/support/downloads</a>
+        </td>
+      </tr>
+
+      <tr>
+        <td>
+          Sharp
+        </td>
+        <td>
+          <a href="http://k-tai.sharp.co.jp/support/">http://k-tai.sharp.co.jp/support/</a>
+        </td>
+      </tr>
+
+      <tr>
+        <td>
+          Sony Mobile Communications
+        </td>
+        <td>
+          <a href=
+          "http://developer.sonymobile.com/downloads/drivers/">http://developer.sonymobile.com/downloads/drivers/</a>
+        </td>
+      </tr>
+
+      <tr>
+        <td>
+          Toshiba
+        </td>
+        <td>
+          <a href=
+          "http://support.toshiba.com/sscontent?docId=4001814">http://support.toshiba.com/sscontent?docId=4001814</a>
+        </td>
+      </tr>
+
+      <tr>
+        <td>
+          Xiaomi
+        </td>
+        <td>
+          <a href=
+          "http://www.xiaomi.com/c/driver/index.html">http://www.xiaomi.com/c/driver/index.html</a>
+        </td>
+      </tr>
+
+      <tr>
+        <td>
+          ZTE
+        </td>
+        <td>
+          <a href=
+          "http://support.zte.com.cn/support/news/NewsDetail.aspx?newsId=1000442">http://support.zte.com.cn/support/news/NewsDetail.aspx?newsId=1000442</a>
+        </td>
+      </tr>
+</table>
\ No newline at end of file
diff --git a/docs/html/tools/help/adb.jd b/docs/html/tools/help/adb.jd
old mode 100644
new mode 100755
index bcd949a..0340efe
--- a/docs/html/tools/help/adb.jd
+++ b/docs/html/tools/help/adb.jd
@@ -29,7 +29,7 @@
 
 <ul>
   <li>A client, which runs on your development machine. You can invoke a client from a shell
-by issuing an adb command. Other Android tools such as the ADT plugin and DDMS also create
+by issuing an adb command. Other Android tools such as DDMS also create
 adb clients. </li>
   <li>A server, which runs as a background process on your development machine. The server
 manages communication between the client and the adb daemon running on an emulator or device. </li>
@@ -361,7 +361,7 @@
 <p>For more information about how to create an .apk file that you can install on an emulator/device
 instance, see <a href="{@docRoot}tools/building/index.html">Building and Running</a></p>
 
-<p>Note that, if you are using the Eclipse IDE and have the ADT plugin installed, you do not need to use adb (or aapt) directly to install your application on the emulator/device. Instead, the ADT plugin handles the packaging and installation of the application for you. </p>
+<p>Note that, if you are using Android Studio, you do not need to use adb (or aapt) directly to install your application on the emulator/device. Instead, Android Studio handles the packaging and installation of the application for you. </p>
 
 
 
diff --git a/docs/html/tools/help/adt.jd b/docs/html/tools/help/adt.jd
index 0fac62d..7d29d02 100644
--- a/docs/html/tools/help/adt.jd
+++ b/docs/html/tools/help/adt.jd
@@ -2,540 +2,23 @@
 page.tags=adt
 @jd:body
 
-  <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#tools">SDK Tools Integration</a></li>
-
-        <li><a href="#editors">Code Editors</a>
-          <ol>
-            <li><a href="#resource-linking">Resource linking enhancements</a></li>
-          </ol>
-        </li>
-
-        <li><a href="#graphical-editor">Graphical Layout Editor</a>
-          <ol>
-            <li><a href="#canvas">Canvas and outline view</a></li>
-            <li><a href="#palette">Palette</a></li>
-            <li><a href="#config-chooser">Configuration chooser</a></li>
-          </ol>
-        </li>
-
-        <li><a href="#refactoring">Layout Factoring Support</a></li>
-        <li><a href="#Updating">Updating the ADT Plugin</a></li>
-
-      </ol>
-    </div>
-  </div>
-
 <p class="caution">
-  <strong>Important:</strong> Support for the Android Developer Tools (ADT) in Eclipse is ending,
+  <strong>Important:</strong> Support for the Android Developer Tools (ADT) in Eclipse has ended,
   per our <a href=
   "http://android-developers.blogspot.com/2015/06/an-update-on-eclipse-android-developer.html"
   class="external-link">announcement</a>. You should migrate your app development projects to
   Android Studio as soon as possible. For more information on transitioning to Android Studio, see
-  <a href="{@docRoot}sdk/installing/migrate.html">Migrating to Android Studio</a>.
+  <a href="{@docRoot}sdk/installing/migrate.html">Migrating from Eclipse ADT</a>.
 </p>
 
-  <p>Android Developer Tools (ADT) is a plugin for Eclipse that provides a suite of
-  tools that are integrated with the Eclipse IDE. It offers you access to many features that help
-  you develop Android applications. ADT
-  provides GUI access to many of the command line SDK tools as well as a UI design tool for rapid
-  prototyping, designing, and building of your application's user interface.</p>
+  <p>Formerly the official IDE solution for Android development, Android Developer Tools (ADT)
+  is a plugin for Eclipse that provides GUI-based access to many of the command-line SDK tools,
+  along with a UI design tool for rapid prototyping, designing, and building of your app's
+  user interface.</p>
 
-<p>If you still wish to use the ADT plugin for Eclipse, see
-<a href="{@docRoot}sdk/installing/installing-adt.html">Installing Eclipse Plugin.</a>
-</p>
-
-
-  <h2 id="tools">SDK Tools Integration</h2>
-
-  <div class="sidebox-wrapper">
-    <div class="sidebox">
-      <h2>Need help designing icons?</h2>
-  <p>The <a href="http://android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html">Android
-      Asset Studio</a> is a web-based tool that lets you generate icons from existing images,
-    clipart, or text. It also generates the icons with different DPIs for different screen sizes and
-    types.</p>
-
-    </div>
-  </div>
-
-  <p>Many of the tools that you can start or run from the command line are integrated into ADT.
-  They include:</p>
-
-  <ul>
-    <li><a href="{@docRoot}tools/debugging/debugging-tracing.html">Traceview</a>:
-    Allows you to profile your program's execution
-    (<strong>Window &gt; Open Perspective &gt; Traceview</strong>). </li>
-
-    <li><a href="{@docRoot}tools/help/android.html">android</a>: Provides access to
-    the Android SDK Manager and AVD Manager. Other <code>android</code> features such as creating or
-    updating projects (application and library) are integrated throughout the Eclipse IDE. </li>
-
-    <li><a href="{@docRoot}tools/debugging/debugging-ui.html#HierarchyViewer">Hierarchy
-    Viewer</a>: Allows you to visualize your application's view hierarchy to find inefficiencies
-    (<strong>Window &gt; Open Perspective &gt; Hierarchy Viewer</strong>).</li>
-
-    <li><a href="{@docRoot}tools/debugging/debugging-ui.html#pixelperfect">Pixel
-    Perfect</a>: Allows you to closely examine your UI to help with designing and building.
-    (<strong>Window &gt; Open Perspective &gt; Pixel Perfect</strong>).</li>
-
-    <li><a href="{@docRoot}tools/debugging/ddms.html">DDMS</a>: Provides
-    debugging features including: screen capturing, thread and heap information, and logcat
-    (<strong>Window &gt; Open Perspective &gt; DDMS</strong>).</li>
-
-    <li><a href="{@docRoot}tools/help/adb.html">adb</a>: Provides access to
-      a device from your development system. Some features of
-    <code>adb</code> are integrated into ADT such as project installation (Eclipse run menu),
-    file transfer, device enumeration, and logcat (DDMS). You must access the more advanced
-    features of <code>adb</code>, such as shell commands, from the command line.</li>
-
-    <li><a href="{@docRoot}tools/help/proguard.html">ProGuard</a>: Allows code obfuscation,
-    shrinking, and optimization. ADT integrates ProGuard as part of the build, if you <a href=
-    "{@docRoot}tools/help/proguard.html#enabling">enable it</a>.</li>
-  </ul>
-
-<h2 id="editors">Code Editors</h2>
-
-  <p>In addition to Eclipse's standard editor features, ADT provides custom XML editors to help
-  you create and edit Android manifests, resources, menus, and layouts in a form-based or graphical
-  mode. Double-clicking on an XML file in Eclipse's package explorer opens the
-  appropriate XML editor.
-
-    <div class="sidebox-wrapper">
-    <div class="sidebox">
-      <h2>Google I/O Session Video</h2>
-      <p>View the segment on the <a href=
-      "http://www.youtube.com/watch?v=Oq05KqjXTvs#t=30m50s">XML editors</a> for more
-      information.</p>
-    </div>
-  </div>
-
-  <p class="note"><strong>Note:</strong> You can edit Android-specific XML files (such as a layout
-or manifest) in both a graphical mode and also an XML markup mode. You can switch between
-these modes with the pair of tabs at the bottom of each custom XML editor.</p>
-
-  <p>In addition, some special file types that don't have custom editors, such as drawables, animations,
-  and color files offer editing enhancements such as XML tag completion.</p>
-
-<p>ADT provides the following custom, form-based XML editors:</p>
-
-  <dl>
-
-    <dt><strong>Graphical Layout Editor</strong></dt>
-
-    <dd>Edit and design your XML layout files with a drag and drop interface. The layout editor
-    renders your interface as well, offering you a preview as you design your layouts. This editor
-    is invoked when you open an XML file with a view declared (usually declared in
-    <code>res/layout</code>. For more information, see <a href="#graphical-editor">Graphical Layout
-    Editor</a>.</dd>
-
-    <dt><strong>Android Manifest Editor</strong></dt>
-
-    <dd>Edit Android manifests with a simple graphical interface. This editor is invoked
-    when you open an <code>AndroidManifest.xml</code> file.</dd>
-
-    <dt><strong>Menu Editor</strong></dt>
-
-    <dd>Edit menu groups and items with a simple graphical interface. This editor is
-    invoked when you open an XML file with a <code>&lt;menu&gt;</code> declared (usually located in
-    the <code>res/menu</code> folder).</dd>
-
-    <dt><strong>Resources Editor</strong></dt>
-
-    <dd>Edit resources with a simple graphical interface. This editor is invoked when
-    you open an XML file with a <code>&lt;resources&gt;</code> tag declared.</dd>
-
-    <dt><strong>XML Resources Editor</strong></dt>
-
-    <dd>Edit XML resources with a simple graphical interface. This editor is invoked
-    when you open an XML file.</dd>
-  </dl>
-
-
-  <h3 id="resource-linking">Resource linking enhancements</h3>
-  <p>In addition to the normal code editing features of Eclipse, ADT provides enhancements to the Android
-  development experience that allow you to quickly jump to declarations of various types of resources such
-  as strings or layout files. You can access these enhancements by holding down the control key and
-  clicking on the following items:
-
-      <ul>
-
-        <li>A resource identifier, such as <code>R.id.button1</code>, jumps
-        to the XML definition of the view.</li>
-
-        <li>A declaration in the <code>R.java</code> file, such as <code>public
-        static final int Button01=0x7f050000"</code>, jumps to the corresponding XML definition.</li>
-
-        <li>An activity or service definition in your manifest, such as
-        <code>&lt;activity android:name=".TestActivity"&gt;</code>, jumps to the corresponding Java class. You can
-        jump from an activity definition (or service definition) into the corresponding Java class.</li>
-
-        <li>You can jump to any value definition (e.g. <code>@string:foo</code>), regardless of
-which XML file
-        "foo" is defined in.</li>
-
-        <li>Any file-based declaration, such as <code>@layout/bar</code>, opens the file.</li>
-
-        <li>Non-XML resources, such as <code>@drawable/icon</code>, launches
-        Eclipse's default application for the given file type, which in this case is an
-        image.</li>
-
-        <li><code>@android</code> namespace resources opens the resources found in
-        the SDK install area.</li>
-
-        <li>Custom views in XML layouts, such as <code>&lt;foo.bar.MyView&gt;&lt;/foo.bar.MyView&gt;</code>,
-        or <code>&lt;view class="foo.bar.MyView"&gt;</code>) jump to the corresponding custom view classes.</li>
-
-        <li>An XML attribute such as <code>@android:string/ok</code> or <code>android.R.string.id</code> in Java code
-        opens the file that declares the strings. The XML tab opens when doing this, not
-        the form-based editor.</li>
-
-      </ul>
-
-  <h2 id="graphical-editor">Graphical Layout Editor</h2>
-
-  <p>ADT provides many features to allow you to design and build your application's user interface.
-  Many of these features are in the graphical layout editor, which you can access by opening one of
-  your application's XML layout files in Eclipse.
+  <p>As with ADT, support for the <a href="http://ant.apache.org/"
+  class="external-link">Ant</a>
+  tool for building from the command line has ended.
+  <a href="{@docRoot}tools/building/plugin-for-gradle.html">Gradle</a> is now the supported method
+  of building Android apps.
   </p>
-
-  <p>The graphical layout editor is the main screen that you use to visually design and build your
-  UI. It is split up into the following parts:</p>
-
-  <dl>
-    <dt><strong>Canvas</strong></dt>
-
-    <dd>In the middle of the editor is the canvas. It provides the rendered view of your
-    layout and supports dragging and dropping of UI widgets
-    directly from the palette. You can select the platform version used to render the items in
-    the canvas. Each platform version has its own look and feel, which might be the similar to or
-    radically different from another platform version. The canvas renders the appropriate look
-    and feel for the currently selected platform version.
-    This platform version does not need to be the same as the version that your
-    application targets.
-
-    <p>The canvas also provides
-    context-sensitive actions in the layout actions bar, such as adjusting layout margins and
-orientation.
-    The layout actions bar displays available actions depending on the selected UI element in the
-    canvas.</p>
-    </dd>
-
-    <dt><strong>Outline</strong></dt>
-
-    <dd>On the right side of the editor is the outline view. It displays a hierarchical
-    view of your layout where you can do things such as reorder of views. The outline
-    view exposes similar functionality as the canvas but displays your layout in an ordered
-    list instead of a rendered preview.</dd>
-
-    <dt><strong>Palette</strong></dt>
-
-    <dd>On the left side of the editor is the palette. It provides a set of widgets that
-    you can drag onto the canvas. The palette shows rendered previews of the
-    widgets for easy lookup of desired UI widgets.</dd>
-
-    <dt><strong>Configuration Chooser</strong></dt>
-
-    <dd>At the top of the editor is the configuration chooser.
-    It provides options to change a layout's rendering mode or screen type.</dd>
-  </dl>
-
-  <img src="{@docRoot}images/layout_editor.png" alt="graphical layout editor screenshot"
-  height="500" id="layout-editor" name="layout-editor">
-
-  <p class="img-caption"><strong>Figure 1.</strong> Graphical layout editor</p>
-
-  <h3 id="canvas">Canvas and outline view</h3>
-
-  <div class="sidebox-wrapper">
-    <div class="sidebox">
-      <h2>Google I/O Session Video</h2>
-
-      <p>View the segment on the <a href=
-      "http://www.youtube.com/watch?v=Oq05KqjXTvs#t=7m16s">canvas and outline view</a> and the
-      <a href="http://www.youtube.com/watch?v=Oq05KqjXTvs#t=11m43s">layout actions bar</a>
-      for more information.
-      </p>
-    </div>
-  </div>
-
-  <p>The canvas is the area where you can drag and drop UI widgets from the palette to design your
-  layout. The canvas offers a rendered preview of your layout depending on factors such as the
-  selected platform version, screen orientation, and currently selected theme that you specify in
-  the <a href="#configuration-chooser">configuration chooser</a>. You can also drag and drop
-  items into the outline view, which displays your layout in a hierarchical list. The outline view
-  exposes much of the same functionality as the canvas but offers another method of organization
-  that is beneficial for ordering and quickly selecting items. When you right-click a specific item
-  in the canvas or outline view, you can access a context-sensitive menu that lets you modify the
-  following attributes of the layout or view:</p>
-
-  <dl>
-    <dt><strong>View and layout properties</strong></dt>
-
-    <dd>
-      When you right-click a view or layout in the canvas or outline view, it brings up a
-      context-sensitive menu that lets you set things such as:
-
-      <ul>
-        <li>ID of the view or layout</li>
-
-        <li>Text of the view</li>
-
-        <li>Layout width</li>
-
-        <li>Layout height</li>
-
-        <li>Properties such as alpha or clickable</li>
-      </ul>
-    </dd>
-
-    <dt><strong>Animation preview and creation</strong></dt>
-
-    <dd>
-      If your layout or view is animated, you can preview the animation directly in the canvas
-      (when you select Android 3.0 or later as the platform version in the configuration chooser).
-      Right-click an item in the canvas and select <strong>Play Animation</strong>. If
-      animation is not associated with item, an option is available in the menu to create one.
-
-      <p>View the segment on the <a href=
-      "http://www.youtube.com/watch?v=Oq05KqjXTvs#t=28m30s">animation features</a> for more
-      information.</p>
-    </dd>
-
-    <dt><strong>Extract as Include</strong></dt>
-
-    <dd>You can extract parts of a current layout into its own layout file,
-    which you can then include in any layout with a single line of XML. See <a href=
-    "#extract-as-include">Layout Refactoring Support</a> for more information.</dd>
-  </dl>
-
-  <h4>Other canvas features</h4>
-
-  <p>The canvas has additional features not available in the outline view:</p>
-
-  <ul>
-
-    <li>Edit views with the layout actions bar: The context-sensitive layout actions bar allows you to
-    edit how a view is laid out in your UI. The available actions depend on the currently
-    selected view and its parent layout. Some common actions include
-    toggling the fill mode of the view and specifying margins. For instance, if you select a
-    {@link android.widget.Button}
-    in a {@link android.widget.LinearLayout}, you see actions related to the {@link
-android.widget.LinearLayout}, such as a toggle to switch
-    between horizontal and vertical layout, and a toggle to control whether its children are
-    aligned along their text baseline. You will also see toolbar actions to control the individual
-    layout attributes of the child, such as whether the child should stretch out to match its
-    parent's width and height, a dropdown action to set the child's layout gravity, a button to open
-    a margin editor, and a layout weight editor.</li>
-
-    <li>Edit a nested layout in its current context: If you are editing a layout
-    that includes another layout, you can edit the included layout in the layout that included
-    it.</li>
-
-    <li>Preview drag and drop location: When you drag and drop a UI widget onto the canvas, ruler
-    markers appear showing you the approximate location of the UI widget depending on the
-    type of layout, such as {@link android.widget.RelativeLayout} or {@link
-    android.widget.LinearLayout}.</li>
-
-    <li>Preview animations: You can preview view and layout animations when you select Android 2.1
-    or later for the platform version in the configuration bar.</li>
-
-    <li>Render layouts in real-time: Layouts are rendered as accurately as possible according to
-    the platform version, including the appropriate system and action bars.</li>
-
-    <li>Support for fragments: Fragments can be rendered in the same screen as the layout that
-    includes the fragments.</li>
-
-  </ul>
-
-  <img src="{@docRoot}images/canvas.png" alt="screenshot of the canvas" height="553">
-
-  <p class="img-caption"><strong>Figure 2.</strong> Canvas portion of the layout editor showing
-  a rendered preview of an application</p>
-
-  <img src=
-  "{@docRoot}images/layout_outline.png" alt="screenshot of the outline view" height="185">
-
-  <p class="img-caption"><strong>Figure 3.</strong> Outline view showing current layout's structure</p>
-
-  <h3 id="palette">Palette</h3>
-
-  <div class="sidebox-wrapper">
-    <div class="sidebox">
-      <h2>Google I/O Session Video</h2>
-
-      <p>View the segment on the <a href=
-      "http://www.youtube.com/watch?v=Oq05KqjXTvs#t=7m53s">palette</a> for more information.</p>
-    </div>
-  </div>
-
-  <p>The palette contains the UI widgets that you can drag and drop onto the canvas and add to your
-  layout. The pallete categorizes the widgets and shows rendered previews
-  for easier lookup. The main features of the palette include:</p>
-
-  <ul>
-    <li>Different modes of rendered previews include: icons only, icons and text, tiny previews,
-    small previews, and previews (rendered in real size). Previews are only available for layouts
-    rendered with the latest revisions of Android 2.1 (API Level 7) or later.</li>
-
-    <li>Custom views in your project or library projects are added under custom views
-    category.</li>
-
-    <li>Arrange UI widgets alphabetically or by category.</li>
-  </ul>
-  <img src="{@docRoot}images/palette.png" alt="palette screenshot" height="566">
-
-  <p class="img-caption"><strong>Figure 4.</strong> Palette showing available UI widgets</p>
-
-  <h3 id="config-chooser">Configuration chooser</h3>
-
-  <div class="sidebox-wrapper">
-    <div class="sidebox">
-      <h2>Google I/O Session Video</h2>
-
-      <p>View the segment on the <a href=
-      "http://www.youtube.com/watch?v=Oq05KqjXTvs#t=12m51s">configuration chooser</a> for more
-      information.</p>
-    </div>
-  </div>
-
-
-  <p>The configuration chooser allows you to create and configure different configurations of
-  a layout for different situations, such as one for landscape and one for portrait mode. You can
-  set the following options for each configuration of a layout:
-  </p>
-      <ul>
-        <li>Screen type combo box: Predefined screen settings for common device configurations. You
-        can also create your own by selecting <strong>Custom...</strong>.</li>
-
-        <li>Screen orientation combo box: Portrait or Landscape screen orientation.</li>
-
-        <li>Theme combo box: Predefined themes or a custom theme that you have created.</li>
-
-        <li>Platform combo box: Platform version used to render the canvas and palette as well as
-        displaying appropriate themes.</li>
-
-        <li>Custom layout combo boxes: The locale, dock, and time of day combo boxes let you select
-        different versions of the same layout depending on the device's current state. You can
-        create a new version of a layout with the <strong>Create</strong> button.</li>
-      </ul>
-
-      <img src="{@docRoot}images/layout_bar.png" alt=
-  "configuration chooser screenshot" height="50" id="configuration-chooser" name="configuration chooser">
-
-  <p class="img-caption"><strong>Figure 5.</strong> Configuration chooser</p>
-
-  <h2 id="refactoring">Layout Refactoring Support</h2>
-
-  <div class="sidebox-wrapper">
-    <div class="sidebox">
-      <h2>Google I/O Session Video</h2>
-
-      <p>View the segment on <a href=
-      "http://www.youtube.com/watch?v=Oq05KqjXTvs#t=18m00s">refactoring features</a> for a rundown
-of the more important refactoring features.</p>
-
-    </div>
-  </div>
-
-  <p>In both the graphical and XML layout editor, there are many features that help you quickly
-  refactor your layouts. The following list describes the major refactoring support:</p>
-
-  <dl>
-
-    <dt><strong>Change layout</strong></dt>
-    <dd>This lets you change the layout on the fly and re-renders the canvas for you.
-    You can apply this refactoring to any layout and the layout is converted to the new type if
-    possible. In many cases, the opening and closing tags of the layout's XML element are changed
-    along with things such as ID attributes and their references. However, for some supported
-    types, ADT attempts to preserve the layout, such as changing a {@link
-    android.widget.LinearLayout} to a {@link android.widget.RelativeLayout}.</dd>
-
-    <dt><strong>Change widget</strong></dt>
-    <dd>This lets you select one or more widgets and converts them to a new widget type. In
-    addition to changing the element name, it also removes any
-    attributes that are not supported by the new widget type and adds in any mandatory attributes
-    required by the new widget type. If the current ID of a widget includes the
-    current widget type in its ID (such as a <code>&lt;Button&gt;</code> widget named
-    <code>"button1"</code>), then the ID is changed to match the new widget type and all
-    references are updated.</dd>
-
-    <dt id="extract-as-include"><strong>Extract as include</strong></dt>
-    <dd>This lets you extract views inside of an existing layout into their own separate layout
-    file. An <code>include</code> tag that points to the newly created layout file is inserted
-    into the existing layout file. Right-click the view or layout and select <strong>Extract as
-    Include...</strong>.</dd>
-
-    <dt><strong>Extract string</strong></dt>
-    <dd>Extract strings from either XML or Java files into their own separate resource file.</dd>
-
-    <dt><strong>Extract style</strong></dt>
-    <dd>Extract style-related attributes from a layout and define them in a new
-    <code>styles.xml</code> file. You can select multiple views and this refactoring extracts all
-    of the same styles into one style and assigns that style to all the views that use it.</dd>
-
-    <dt><strong>Wrap-in container</strong></dt>
-    <dd>This lets you select one or more sibling elements and wrap them in a new container. This
-    can be applied to the root element as well, in which case the namespace declaration attributes
-    will be transferred to the new root. This refactoring also transfers <code>layout_</code>
-    attribute references to the new root, For example, suppose you have a {@link android.widget.RelativeLayout}.
-    If other widgets have layout constraints pointing to your widget, wrapping the widget causes
-    these constraints to point to the parent instead.</dd>
-
-    <dt><strong>Quick Assistant</strong></dt>
-    <dd>Provides refactoring suggestions depending on the current context. Press
-    <strong>Ctrl-1</strong> (or <strong>Cmd-1</strong> on
-    Mac) in an editor, and Eclipse provides a list of possible refactorings depending on the
-    context. The Quick Assistant provides fast access to all of the above refactorings, where applicable.
-    For example, if you are editing an XML value and decide you want to extract it out
-    as a string, place the text cursor in the string and press Ctrl-1 to see the refactoring context
-    menu.</dd>
-  </dl>
-
-
-
-
-
-<h2 id="Updating">Updating the ADT Plugin</h2>
-
-<p>From time to time, a new revision of the ADT Plugin becomes available, with
-new features and bug fixes. Generally, when a new revision of ADT is available,
-you should update to it as soon as convenient. </p>
-
-<p>In some cases, a new revision of ADT will have a dependency on a specific
-revision of the Android SDK Tools. If such dependencies exist, you will need to
-update the SDK Tools package of the SDK after installing the new revision of
-ADT. To update the SDK Tools package, use the Android SDK Manager, as
-described in <a href="{@docRoot}sdk/installing/adding-packages.html">Adding SDK Packages</a>.</p>
-
-<p>To learn about new features of each ADT revision and also any dependencies on
-the SDK Tools, see the listings in the <a href="{@docRoot}tools/revisions/index.html">Revisions</a>
-section. To determine the version currently installed, open the
-Eclipse Installed Software window using <strong>Help</strong>
-&gt; <strong>Software Updates</strong> and refer to the version listed for
-"Android Development Tools".</p>
-
-<p>Follow the steps below to check whether an update is available and, if so,
-to install it. </p>
-
-<ol>
-    <li>Select <strong>Help</strong> &gt; <strong>Check for Updates</strong>.
-      <p>If there are no updates available, a dialog will say so and you're done.</p></li>
-    <li>If there are updates available, select Android DDMS, Android Development Tools,
-      and Android Hierarchy Viewer, then click <strong>Next</strong>.</li>
-    <li>In the Update Details dialog, click <strong>Next</strong>.</li>
-    <li>Read and accept the license agreement and then click <strong>Finish</strong>.
-      This will download and install the latest version of Android DDMS and
-      Android Development Tools.</li>
-    <li>Restart Eclipse.</li>
-</ol>
-
-
-<p>If you encounter problems during the update, remove the existing ADT plugin from Eclipse, then
-perform a fresh installation, using the instructions for <a
-href="{@docRoot}sdk/installing/installing-adt.html">Installing the ADT
-Plugin</a>.</p>
diff --git a/docs/html/tools/help/am-cpu.jd b/docs/html/tools/help/am-cpu.jd
new file mode 100644
index 0000000..62b3590
--- /dev/null
+++ b/docs/html/tools/help/am-cpu.jd
@@ -0,0 +1,325 @@
+page.title=CPU Monitor
+parent.title=Android Monitor
+parent.link=android-monitor.html
+page.tags=monitor
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>In this document</h2>
+<ol>
+  <li><a href="#running">Displaying a Running App in the CPU Monitor</a></li>
+  <li><a href="#trace">Performing a Method Trace in the CPU Monitor</a></li>
+  <li><a href="#viewtrace">Viewing a Saved Method Trace</a></li>
+  <li><a href="#sorttrace">Sorting Method Trace Data</a></li>
+  <li><a href="#renametrace">Renaming a Method Trace File</a></li>
+  <li><a href="#locatetrace">Locating a Method Trace File on Disk</a></li>
+  <li><a href="#deletetrace">Deleting a Method Trace File</a></li>
+</ol>
+
+ <h2>See also</h2>
+  <ol>
+    <li>
+        <a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a>
+      </li>
+    <li><a href="{@docRoot}tools/help/am-logcat.html">logcat Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-memory.html">Memory Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-gpu.html">GPU Monitor</a>
+      </li>
+
+      <li>
+        <a href="{@docRoot}tools/help/am-network.html">Network Monitor</a>
+      </li>
+  </ol>
+
+
+<h2>
+  Dependencies and Prerequisites
+</h2>
+
+<ul>
+  <li>Make sure your development computer detects your hardware device, which often happens
+  automatically when you connect it to a USB port.
+  </li>
+
+  <li>
+    <a href="{@docRoot}tools/device.html#device-developer-options">Enable</a> <strong><a href=
+    "{@docRoot}tools/device.html#device-developer-options">USB debugging</a></strong> in
+    <strong>Developer Options</strong> on the device or emulator.
+  </li>
+
+  <li>In your app, set the <code>debuggable</code> property to <code>true</code> in the manifest or
+  <code>build.gradle</code> file (it’s initially set by default).
+  </li>
+
+<li>Enable ADB integration through <strong>Tools</strong> &gt; <strong>Android</strong> &gt;
+  <strong>Enable ADB Integration</strong>.
+  </li>
+
+  <li>
+    <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a> can’t be running.
+  </li>
+
+</ul>
+
+</div>
+</div>
+
+
+<p>
+  The CPU Monitor lets you easily monitor the central processing unit (CPU) usage of your app. It
+  displays CPU usage in real time and displays the percentage of total CPU time (including all cores)
+  used by user and kernel mode. In user mode, the code must use system APIs to access hardware or
+  memory, and crashes are usually recoverable. In kernel mode, the code can directly access
+  hardware, including memory addresses; crashes halt the device.
+</p>
+
+<h2 id="running">
+  Displaying a Running App in the CPU Monitor
+</h2>
+
+<p>
+  Follow these steps:
+</p>
+
+<ol>
+  <li>Optionally connect a hardware device.
+  </li>
+
+  <li>
+    <a href="{@docRoot}tools/help/android-monitor.html#displaying">Display Android Monitor</a>.
+  </li>
+
+  <li>Click the <strong>CPU</strong> tab.
+  </li>
+
+  <li>Open an app project and <a href=
+  "{@docRoot}tools/building/building-studio.html#RunningApp">run it</a> on a hardware device or
+  emulator.
+  </li>
+
+  <li>Enable the CPU Monitor by clicking Pause <img src="{@docRoot}images/tools/am-ipause.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> to deselect
+  it.
+  </li>
+
+<p>
+  The CPU Monitor starts to display any CPU usage.
+  In the graph, the y-axis displays the percentage of CPU used. The x-axis records the time elapsed
+  and starts with seconds, and then minutes and seconds, and so on.
+</p>
+<img src="{@docRoot}images/tools/am-cpumon.png" style="vertical-align:sub;margin:0;width:450px" />
+  <li>To stop the CPU Monitor, click Pause <img src="{@docRoot}images/tools/am-ipause.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> again to select
+  it.
+  </li>
+</ol>
+
+
+<h2 id="trace">
+  Performing a Method Trace in the CPU Monitor
+</h2>
+
+<p>
+  Follow these steps:
+</p>
+
+<ol>
+  <li>
+    <a href="{@docRoot}tools/help/android-monitor.html#displaying">Display a running app in the CPU
+    Monitor</a>.
+  </li>
+
+  <li>Start a trace by clicking Start Method Tracing <img src="{@docRoot}images/tools/am-imethodtrace.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="Start Method Tracing icon" /> to
+  select it.
+  </li>
+
+  <li>To stop the trace, click Stop Method Tracing <img src="{@docRoot}images/tools/am-imethodtrace.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="Stop Method Tracing icon" /> to
+  deselect it.
+  </li>
+
+<p>
+  The method trace appears in the Code Editor area:
+</p>
+<img src="{@docRoot}images/tools/am-methodtrace.png" alt="Method Trace" />
+<p>
+  Android Studio creates the method trace file
+  with the filename <code>Trace_<em>yyyy.mm.dd_hh.mm.ss</em>.trace</code>
+  using the year, month, day, hour, minute, and second of the capture, for example,
+  <code>Trace_2015.11.17_14.58.48.trace</code>.
+</p>
+  <li>Specify display options:
+    <ul>
+      <li>Select a <strong>Thread</strong>.
+      </li>
+
+      <li>Select an <strong>x-axis</strong> time for the graphic and the method list:
+      </li>
+
+        <ul>
+          <li>
+            <strong>Wall Clock Time</strong> - Total CPU time elapsed between the method call and
+            return.
+          </li>
+
+          <li>
+            <strong>Thread Time</strong> - Total time during which the JRE scheduled the
+            thread during call processing. It’s less than or equal to the Wall Clock Time: less if
+            the JRE interrupted the thread, and equal if it didn’t.
+            The thread might not run continuously; when it’s not executing, that time is excluded.
+            If threads are interrupted often and it’s not by design, the interruptions affect app
+            performance. However, an example of a by-design use is synchronous operations that take
+            a long time, such as file transfers and reads from disk, where the method could be the
+            asynchronous wrapper for the synchronous reader.
+          </li>
+       </ul>
+
+        <li>
+          Optionally select <strong>Color by inclusive time</strong>.
+        </li>
+        </ul>
+
+        <p>
+          The display shows the following information:
+        </p>
+<table>
+  <tr>
+    <th scope="col">Field</th>
+    <th scope="col">Description</th>
+  </tr>
+
+  <tr>
+    <td><strong>Name</strong></td>
+    <td>The name of the method.</td>
+  </tr>
+
+  <tr>
+    <td><strong>Invocation Count</strong></td>
+    <td>How many times the method was called.</td>
+  </tr>
+
+  <tr>
+    <td><strong>Inclusive Time (microseconds)</strong></td>
+    <td>Time spent in the method and all of its children, either wall clock or thread time,
+          depending on your selection in the <strong>x-axis</strong> menu.</td>
+  </tr>
+
+  <tr>
+    <td><strong>Exclusive Time (microseconds)</strong></td>
+    <td>Time spent just in the method (excluding time spent in its children), either wall clock
+          or thread time, depending on your selection in the <strong>x-axis</strong> menu.</td>
+  </tr>
+</table>
+<p class="note"><strong>Note:</strong> Running the method trace significantly affects CPU timings.
+  Use the method trace to understand the flow of the program, but not for performance timings.</p>
+        <p>
+          The graphic represents the wall clock or thread time for each method. Hover the cursor
+          over the display to receive information about the method. This information also appears
+          in the table.
+        </p>
+</ol>
+        <h2 id="viewtrace">
+          Viewing a Saved Method Trace
+        </h2>
+
+        <p>
+          After you do a method trace, Android Studio automatically stores it so you can view it
+          again. To examine the trace, follow these steps:
+        </p>
+
+        <ol>
+          <li>Click <strong>Captures</strong> in the main window.
+          </li>
+
+        <p>
+          The <em>Captures</em> window appears.
+        </p>
+
+      <li>Open the <strong>Methods Tracing</strong> folder.
+      </li>
+
+      <li>Double-click the file to view it.
+      </li>
+</ol>
+
+<h2 id="sorttrace">
+  Sorting Method Trace Data
+</h2>
+
+<p>
+  You can sort the data by method name, count, inclusive time, and exclusive time. Follow this step:
+</p>
+
+
+<ul>
+  <li>Click a column heading to sort the table by ascending or descending order.
+  </li>
+</ul>
+
+<h2 id="renametrace">
+  Renaming a Method Trace File
+</h2>
+
+<p>
+  Rename a method trace file from within Android Studio so it
+  continues to appear in the <em>Captures</em> window. Follow these steps:
+</p>
+
+<ol>
+  <li>In the <em>Captures</em> window, right-click the file and select <strong>Rename</strong>.
+  </li>
+
+  <li>In the dialog, specify the name of the file and click <strong>OK</strong>.
+  </li>
+</ol>
+
+<h2 id="locatetrace">
+  Locating a Method Trace File on Disk
+</h2>
+
+<p>
+  You can quickly discover where Android Studio stored method trace files on disk. Follow this step:
+</p>
+
+
+
+<ul>
+  <li>In the <em>Captures</em> window, right-click a method trace file and select <strong>Show in
+  files</strong>.
+  </li>
+
+<p>
+  Android Studio opens an operating system file browser displaying the location where the file
+  resides.
+</p>
+</ul>
+<p class="note">
+  <strong>Note:</strong> If you move a method trace file, Android Studio no longer displays the file
+  in the <em>Captures</em> window. To display it, use <strong>File</strong> &gt;
+  <strong>Open</strong>. Also, rename a file from the <em>Captures</em>
+  window and not in the operating system file browser.
+</p>
+
+<h2 id="deletetrace">
+  Deleting a Method Trace File
+</h2>
+
+<p>
+  Follow this step in Android Studio:
+</p>
+
+<ul>
+  <li>In the <em>Captures</em> window, right-click a method trace file and select
+  <strong>Delete</strong>.
+  </li>
+</ul>
+
+<p>
+  Android Studio deletes the file from the <em>Captures</em> dialog and from disk.
+</p>
\ No newline at end of file
diff --git a/docs/html/tools/help/am-gpu.jd b/docs/html/tools/help/am-gpu.jd
new file mode 100644
index 0000000..a244b22
--- /dev/null
+++ b/docs/html/tools/help/am-gpu.jd
@@ -0,0 +1,136 @@
+page.title=GPU Monitor
+parent.title=Android Monitor
+parent.link=android-monitor.html
+page.tags=monitor
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>In this document</h2>
+<ol>
+  <li><a href="#running">Displaying a Running App in the GPU Monitor</a></li>
+</ol>
+
+ <h2>See also</h2>
+  <ol>
+    <li>
+        <a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a>
+      </li>
+    <li><a href="{@docRoot}tools/help/am-logcat.html">logcat Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-memory.html">Memory Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-cpu.html">CPU Monitor</a>
+      </li>
+
+      <li>
+        <a href="{@docRoot}tools/help/am-network.html">Network Monitor</a>
+      </li>
+  </ol>
+
+<h2>
+  Dependencies and Prerequisites
+</h2>
+
+<ul>
+  <li>Make sure your development computer detects your hardware device, which often happens
+  automatically when you connect it to a USB port.
+  </li>
+
+  <li>
+    <a href="{@docRoot}tools/device.html#device-developer-options">Enable</a> <strong><a href=
+    "{@docRoot}tools/device.html#device-developer-options">USB debugging</a></strong> in
+    <strong>Developer Options</strong> on the device or emulator.
+  </li>
+
+  <li>For Android 5.0 (API level 21) and Android 5.1 (API level 22), in <strong>Developer
+  Options</strong> on the device or emulator, set <strong>Profile GPU rendering</strong> to
+  <strong>In adb shell dumpsys gfxinfo</strong>.
+  </li>
+
+  <li>In your app, set the <code>debuggable</code> property to <code>true</code> in the manifest or
+  <code>build.gradle</code> file (it’s initially set by default).
+  </li>
+
+
+  <li>Enable ADB integration through <strong>Tools</strong> &gt; <strong>Android</strong> &gt;
+  <strong>Enable ADB Integration</strong>.
+  </li>
+
+   <li>
+    <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a> can’t be running.
+  </li>
+</ul>
+
+</div>
+</div>
+
+<p>
+  The GPU Monitor gives you a quick visual representation of how much time it takes to render the
+  frames of a UI window. It profiles the amount of time it takes for the render thread to prepare,
+  process, and execute the draw commands. The GPU Monitor can help you to:
+</p>
+
+<ul>
+  <li>Quickly see how a UI window performs.
+  </li>
+
+  <li>Identify whether any part of the rendering pipeline stands out in using processing time.
+  </li>
+
+  <li>Look for spikes in frame rendering time associated with user or program actions.
+  </li>
+</ul>
+
+<p>
+  For example, if displaying a static photo continues to take Graphics Processor Unit
+  (GPU) resources long after it has finished
+  drawing on the screen, that’s a likely candidate for optimization.
+</p>
+
+
+<h2 id="running">
+  Displaying a Running App in the GPU Monitor
+</h2>
+
+<p>
+  Follow these steps:
+</p>
+
+<ol>
+  <li>Optionally connect a hardware device.
+  </li>
+
+  <li>
+    <a href="{@docRoot}tools/help/android-monitor.html#displaying">Display Android Monitor</a>.
+  </li>
+
+  <li>Click the <strong>GPU</strong> tab.
+  </li>
+
+  <li>Open an app project and <a href=
+  "{@docRoot}tools/building/building-studio.html#RunningApp">run it</a> on a hardware device or
+  emulator.
+  </li>
+
+  <li>Enable the GPU Monitor by clicking Pause <img src="{@docRoot}images/tools/am-ipause.png" style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> to deselect
+  it.
+  </li>
+
+  <p>
+  Any GPU usage begins to appear in the GPU Monitor:
+</p>
+  <img src="{@docRoot}images/tools/am-gpumon.png" style="vertical-align:sub;margin:0;width:450px" />
+
+<p>
+  The y-axis is the amount of time it takes the GPU to execute, process, prepare, and draw frames,
+  in milliseconds. The x-axis records the time elapsed; it starts with seconds, and then minutes
+  and seconds, and so on.
+</p>
+
+  <li>To stop the GPU Monitor, click Pause <img src="{@docRoot}images/tools/am-ipause.png" style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> again to select
+  it.
+  </li>
+</ol>
diff --git a/docs/html/tools/help/am-logcat.jd b/docs/html/tools/help/am-logcat.jd
new file mode 100644
index 0000000..57da848
--- /dev/null
+++ b/docs/html/tools/help/am-logcat.jd
@@ -0,0 +1,521 @@
+page.title=logcat Monitor
+parent.title=Android Monitor
+parent.link=android-monitor.html
+page.tags=monitor
+@jd:body
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>
+      In this document
+    </h2>
+
+    <ol>
+      <li>
+        <a href="#format">logcat Message Format</a>
+      </li>
+
+      <li>
+        <a href="#running">Displaying a Running App in the logcat Monitor</a>
+      </li>
+
+      <li>
+        <a href="#level">Setting the Log Level</a>
+      </li>
+
+      <li>
+        <a href="#searching">Searching logcat Messages</a>
+      </li>
+
+      <li>
+        <a href="#filtering">Filtering logcat Messages</a>
+      </li>
+
+      <li>
+        <a href="#logheader">Configuring the logcat Header Display</a>
+      </li>
+
+      <li>
+        <a href="#stack">Moving Up and Down the Stack Trace</a>
+      </li>
+
+      <li>
+        <a href="#logend">Moving to the End of the Log</a>
+      </li>
+
+      <li>
+        <a href="#printing">Printing the Log</a>
+      </li>
+
+      <li>
+        <a href="#clearing">Clearing the Log</a>
+      </li>
+
+      <li>
+        <a href="#restarting">Restarting the Log</a>
+      </li>
+    </ol>
+
+    <h2>
+      See also
+    </h2>
+
+    <ol>
+      <li>
+        <a href="{@docRoot}tools/debugging/debugging-log.html">Reading and Writing Logs</a>
+      </li>
+      <li>
+        <a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-memory.html">Memory Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-cpu.html">CPU Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-gpu.html">GPU Monitor</a>
+      </li>
+
+      <li>
+        <a href="{@docRoot}tools/help/am-network.html">Network Monitor</a>
+      </li>
+    </ol>
+
+    <h2>
+      Dependencies and Prerequisites
+    </h2>
+
+    <ul>
+      <li>Enable ADB integration through <strong>Tools</strong> &gt; <strong>Android</strong> &gt;
+      <strong>Enable ADB Integration</strong>.
+      </li>
+  <li>
+    <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a> can’t be running.
+  </li>
+    </ul>
+  </div>
+</div>
+
+<p>
+  The Android logging system provides a mechanism for collecting and viewing system debug output.
+  logcat Monitor displays messages that you added to your app by using the <a href=
+  "{@docRoot}reference/android/util/Log.html">Log</a> class, as well as system
+  messages, such as stack traces when the emulator throws an error or a garbage collection occurs.
+  The monitor displays messages in real time and also keeps a history so you can view older
+  messages.
+</p>
+
+<p>
+  To display just the information of interest, you can create filters, modify how much information
+  is displayed in messages, set priority levels, display messages produced by app code
+  only, and search the log. By default, logcat Monitor shows the log output related to the running
+  application only.
+</p>
+
+<p>
+  You can traverse the stack trace when your app throws an exception, as well as view the
+  associated code. This feature can help you fix exceptions and improve app operation.
+</p>
+
+<h2 id="format">
+  logcat Message Format
+</h2>
+
+<p>
+  Every Android log message has a tag and a priority associated with it. The tag of a system
+  log message
+  is a short string indicating the system component from which the message originates (for example,
+  <code>ActivityManager</code>). A user-defined tag can be any string that you find helpful, such
+  as the name of the current class (the recommended tag). You define it in a <code>Log</code>
+  method call, for example:
+</p>
+
+<pre>
+Log.d(tag, message);
+</pre>
+<p>
+  The priority is one of the following values:
+</p>
+
+<ul>
+  <li>
+    <strong>V</strong> — Verbose (lowest priority)
+  </li>
+
+  <li>
+    <strong>D</strong> — Debug
+  </li>
+
+  <li>
+    <strong>I</strong> — Info
+  </li>
+
+  <li>
+    <strong>W</strong> — Warning
+  </li>
+
+  <li>
+    <strong>E</strong> — Error
+  </li>
+
+  <li>
+    <strong>A</strong> — Assert
+  </li>
+</ul>
+
+<p>
+  The log message format is:
+</p>
+
+<pre class="no-pretty-print">
+<em>date time PID-TID/package priority/tag: message</em>
+</pre>
+
+<p>
+  For example, the following log message has a priority of <code>V</code> and a tag of
+  <code>AuthZen</code>:
+</p>
+
+<pre class="no-pretty-print">
+12-10 13:02:50.071 1901-4229/com.google.android.gms V/AuthZen: Handling delegate intent.
+</pre>
+<p>
+  PID stands for process identifier and TID is thread identifier; they can be the same if there’s
+  only one thread.
+</p>
+
+<h2 id="running">
+  Displaying a Running App in the logcat Monitor
+</h2>
+
+<p>
+  Follow these steps:
+</p>
+
+<ol>
+  <li>Optionally connect a hardware device.
+  </li>
+
+  <li>
+    <a href="{@docRoot}tools/help/android-monitor.html#displaying">Display Android Monitor</a>.
+  </li>
+
+  <li>Click the <strong>logcat</strong> tab.
+  </li>
+
+  <li>Open an app project and <a href=
+  "{@docRoot}tools/building/building-studio.html#RunningApp">run it</a> on a hardware device or
+  emulator.
+  </li>
+<p>
+  By default, the logcat Monitor displays messages for the app running on the device or emulator:
+</p>
+<img src="{@docRoot}images/tools/am-logcatmon.png" />
+<p>
+  To change this default, see <a href="#filtering">Filtering logcat Messages</a>.
+</p>
+</ol>
+
+<h2 id="level">
+  Setting the Log Level
+</h2>
+
+<p>
+  You can control how many messages appear in logcat Monitor by setting the log level. You can
+  display all messages, or just the messages indicating the most severe conditions.
+</p>
+
+<p>
+  Remember that logcat Monitor continues to collect all messages regardless of the log level setting.
+  The setting just determines what logcat Monitor displays.
+</p>
+
+<p>
+  Follow this step:
+</p>
+
+<ul>
+  <li>In the <strong>Log level</strong> menu, select one of the following values:
+  </li>
+
+    <ul>
+      <li>
+        <strong>Verbose</strong> - Show all log messages (the default).
+      </li>
+
+      <li>
+        <strong>Debug</strong> - Show debug log messages that are useful during development only,
+        as well as the message levels lower in this list.
+      </li>
+
+      <li>
+        <strong>Info</strong> - Show expected log messages for regular usage, as well as the
+        message levels lower in this list.
+      </li>
+
+      <li>
+        <strong>Warn</strong> - Show possible issues that are not yet errors, as well as the
+        message levels lower in this list.
+      </li>
+
+      <li>
+        <strong>Error</strong> - Show issues that have caused errors, as well as the message levels
+        lower in this list.
+      </li>
+
+      <li>
+        <strong>Assert</strong> - Show issues that the developer expects should never happen.
+      </li>
+    </ul>
+
+</ul>
+
+    <h2 id="searching">
+      Searching logcat Messages
+    </h2>
+
+    <p>
+      You can search the messages currently displayed in logcat Monitor. Follow these steps:
+    </p>
+
+    <ol>
+      <li>Optionally select <strong>Regex</strong> if you want to use a regular expression
+      search pattern.
+      </li>
+
+      <li>Type a character sequence in the search field <img src="{@docRoot}images/tools/am-isearch.png"
+        style="vertical-align:sub;margin:0;height:17px" alt="Search icon" />.
+      </li>
+
+    <p>
+      The logcat Monitor display changes accordingly.
+    </p>
+  </li>
+
+  <li>Press <strong>Enter</strong> to store the sequence in the menu during this session.
+  </li>
+
+  <li>To repeat a search, choose it from the search menu. Select or deselect
+  <strong>Regex</strong> as needed (the setting isn’t remembered).
+  </li>
+ </ol>
+
+    <h2 id="filtering">
+      Filtering logcat Messages
+    </h2>
+
+    <p>
+      One way to reduce the log output to a manageable level is to restrict it by using a filter.
+    </p>
+
+    <p class="note">
+      <strong>Note:</strong> The filter applies to your full logcat history, not just those messages
+      currently displayed in logcat Monitor. Make sure your other display options are set
+      appropriately so you can see the filter output you want to examine.
+    </p>
+
+    <p>
+      To define and apply a filter, follow these steps:
+    </p>
+
+    <ol>
+      <li>In the filter menu, select a filter option:
+        <ul>
+          <li>
+            <strong>Show only selected application</strong> - Display the messages produced by the
+            app code only.
+          </li>
+
+          <li>
+            <strong>No Filters</strong> - Apply no filters (the default).
+          </li>
+
+          <li>
+            <strong>Edit Filter Configuration</strong> - Create or modify a custom filter.
+          </li>
+        </ul>
+
+        <p>
+          After you define filters, you can also select them in the menu. To remove them from the
+          menu, delete them.
+        </p>
+
+          <li>If you selected <strong>Edit Filter Configuration</strong>, create or modify a
+          filter.
+            <ol type="a">
+              <li>Specify the filter parameters in the <em>Create New Logcat Filter</em> dialog:
+              </li>
+
+
+            <ul>
+              <li>
+                <strong>Filter Name</strong> - Type the name of a filter you want to define, or
+                select it in the left pane to modify an existing filter. The name can contain
+                lowercase characters, underscores, and digits only.
+              </li>
+
+              <li>
+                <strong>Log Tag</strong> - Optionally specify a tag. For more information, see
+                <a href="#format">logcat Message Format</a>.
+              </li>
+
+              <li>
+                <strong>Log Message</strong> - Optionally specify log message text. For more
+                information, see <a href="#format">logcat Message Format</a>.
+              </li>
+
+              <li>
+                <strong>Package Name</strong> - Optionally specify a package name. For more
+                information, see <a href="#format">logcat Message Format</a>.
+              </li>
+
+              <li>
+                <strong>PID</strong> - Optionally specify a process ID. For more information, see
+                <a href="#format">logcat Message Format</a>.
+              </li>
+
+              <li>
+                <strong>Log Level</strong> - Optionally select a log level. For more information,
+                see <a href="#level">Setting the Log Level</a>.
+              </li>
+
+              <li>
+                <strong>Regex</strong> - Select this option to use regular expression syntax for
+                that parameter.
+              </li>
+            </ul>
+
+            <li>
+              Click <strong>+</strong> to add it to the left pane.
+            </li>
+
+            <p>
+              To remove a filter, select it in the left pane and click <strong>-</strong>.
+            </p>
+
+            <li>
+              When you’re finished, click <strong>OK</strong>. If you click
+              <strong>Cancel</strong>, any filter additions or modifications are lost.
+            </li>
+            </ol>
+            </ol>
+
+            <h2 id="logheader">
+              Configuring the logcat Header Display
+            </h2>
+
+            <p>
+              You can customize the header display to show just the information you’re interested
+              in:
+            </p>
+
+            <ul>
+              <li>Select Use Soft Wraps <img src="{@docRoot}images/tools/am-isoftwraps.png"
+                style="vertical-align:sub;margin:0;height:17px" alt="Use Soft Wraps icon" />
+                to see the entire
+              message and prevent it from running off of the right edge.
+              </li>
+
+              <li>Click Configure Logcat Header <img src="{@docRoot}images/tools/am-igear.png"
+                style="vertical-align:sub;margin:0;height:17px" alt="Configure Logcat header icon" />
+                to specify
+              elements of the messages that you want to show or hide, and then click
+              <strong>OK</strong>.
+              </li>
+            </ul>
+
+            <p>
+              For more information about message elements, see <a href=
+              "#format">logcat Message Format</a>.
+            </p>
+
+            <h2 id="stack">
+              Moving Up and Down the Stack Trace
+            </h2>
+
+            <p>
+              When the app throws an exception, the message includes a stack trace of method calls.
+              logcat
+              Monitor lets you quickly locate stack traces in the log and view the associated code
+              in the Code Editor. If needed (and possible), the decompiler derives source code that
+              you can view.
+            </p>
+
+            <ul>
+              <li>Click Up the Stack Trace <img src="{@docRoot}images/tools/am-iupstack.png"
+                style="vertical-align:sub;margin:0;height:17px" alt="Up the Stack Trace icon" />
+                to move to the
+              previous method in relation to the current position in the log.
+              </li>
+
+              <li>Click Down the Stack Trace <img src="{@docRoot}images/tools/am-idownstack.png"
+                style="vertical-align:sub;margin:0;height:17px" alt="Down the Stack Trace icon" />
+                to move to
+              the next method in relation to the current position in the log.
+              </li>
+            </ul>
+
+            <h2 id="logend">
+              Moving to the End of the Log
+            </h2>
+
+            <p>
+              Clicking a particular message stops the display of messages. You can quickly move to
+              the end of the log to see the real-time message flow.
+            </p>
+
+<ul>
+          <li>Click Scroll to the End <img src="{@docRoot}images/tools/am-iscrollend.png"
+            style="vertical-align:sub;margin:0;height:17px" alt="Scroll to the End icon" />.
+          </li>
+
+          <li>Press the End key.
+          </li>
+
+          <li>Scroll or press the Page Down key until you reach the end.
+</li>
+</ul>
+
+<h2 id="printing">
+  Printing the Log
+</h2>
+<p>
+  Follow these steps:
+</p>
+<ol>
+  <li>Click Print <img src="{@docRoot}images/tools/am-iprint.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="Print icon" />.
+  </li>
+  <li>
+    In the <em>Print</em> dialog, optionally change print parameters, and then click
+    <strong>Print</strong>.
+</ol>
+
+<h2 id="clearing">
+  Clearing the Log
+</h2>
+<p>
+  To clear (flush) the entire log, follow this step:
+</p>
+<ul>
+  <li>Click Clear logcat <img src="{@docRoot}images/tools/am-iclear.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="Clear logcat icon" />.
+  </li>
+</ul>
+
+
+
+<h2 id="restarting">
+  Restarting the Log
+</h2>
+
+<p>
+  If there is a problem and the log is no longer progressing, you can restart the log. Follow this
+  step:
+</p>
+
+<ul>
+  <li>Click Restart <img src="{@docRoot}images/tools/am-irestart.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="Restart icon" />.
+  </li>
+</ul>
\ No newline at end of file
diff --git a/docs/html/tools/help/am-memory.jd b/docs/html/tools/help/am-memory.jd
new file mode 100644
index 0000000..24006cd
--- /dev/null
+++ b/docs/html/tools/help/am-memory.jd
@@ -0,0 +1,916 @@
+page.title=Memory Monitor
+parent.title=Android Monitor
+parent.link=android-monitor.html
+page.tags=monitor
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>In this document</h2>
+<ol>
+  <li><a href="#workflow">Memory Monitor Workflow</a>
+  <ol>
+  <li><a href="#treeroot">Garbage collection roots and dominator trees</a></li>
+  <li><a href="#analysis">Memory leak and use analysis</a></li>
+  <li><a href="#vm">Memory management for different virtual machines</a></li>
+  </ol>
+  </li>
+  <li><a href="#displaying">Displaying a Running App in the Memory Monitor</a></li>
+  <li><a href="#forcing">Forcing a Garbage Collection Event</a></li>
+  <li><a href="#dumping">Dumping and Analyzing the Java Heap</a>
+    <ol>
+      <li><a href="#hprof-snapshot">Taking and displaying a snapshot of the Java heap</a></li>
+      <li><a href="#hprof-diving">Diving into heap dump data in the HPROF Viewer</a></li>
+      <li><a href="#hprof-analyzing">Analyzing heap dump data in the HPROF Analyzer</a></li>
+      <li><a href="#hprof-sorting">Sorting heap dump data</a></li>
+      <li><a href="#hprof-source">Displaying Java source</a></li>
+      <li><a href="#hprof-viewing">Viewing a saved HPROF file</a></li>
+      <li><a href="#hprof-renaming">Renaming an HPROF file</a></li>
+      <li><a href="#hprof-locating">Locating a heap dump file on disk</a></li>
+      <li><a href="#hprof-deleting">Deleting a heap dump file</a></li>
+      <li><a href="#hprof-converting">Converting a heap dump file to standard HPROF format</a></li>
+    </ol>
+    </li>
+  <li><a href="#tracking">Tracking and Analyzing Memory Allocation</a>
+      <ol>
+      <li><a href="#alloc-snapshot">Taking and displaying a snapshot of allocation data</a></li>
+      <li><a href="#alloc-sorting">Sorting allocation data</a></li>
+      <li><a href="#alloc-source">Displaying Java source</a></li>
+      <li><a href="#alloc-viewing">Viewing a saved allocation tracking file</a></li>
+      <li><a href="#alloc-renaming">Renaming an allocation tracking file</a></li>
+      <li><a href="#alloc-locating">Locating an allocation tracking file</a></li>
+      <li><a href="#alloc-deleting">Deleting an allocation tracking file</a></li>
+    </ol>
+    </li>
+</ol>
+
+ <h2>See also</h2>
+  <ol>
+    <li><a href="{@docRoot}training/articles/memory.html">Managing Your App's Memory</a></li>
+    <li><a href="{@docRoot}guide/practices/verifying-apps-art.html#GC_Migration">Addressing Garbage Collection Issues</a></li>
+    <li><a href="{@docRoot}tools/debugging/debugging-memory.html">Investigating Your RAM Usage</a></li>
+
+    <li>
+        <a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a>
+      </li>
+    <li><a href="{@docRoot}tools/help/am-logcat.html">logcat Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-cpu.html">CPU Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-gpu.html">GPU Monitor</a>
+      </li>
+
+      <li>
+        <a href="{@docRoot}tools/help/am-network.html">Network Monitor</a>
+      </li>
+  </ol>
+
+
+<h2>
+  Dependencies and Prerequisites
+</h2>
+
+<ul>
+  <li>
+    Make sure your development computer detects your hardware device, which often happens
+  automatically when you connect it to a USB port.
+  </li>
+<li>
+    <a href="{@docRoot}tools/device.html#device-developer-options">Enable</a> <strong><a href=
+    "{@docRoot}tools/device.html#device-developer-options">USB debugging</a></strong> in
+    <strong>Developer Options</strong> on the device or emulator.
+  </li>
+
+  <li>In your app, set the <code>debuggable</code> property to <code>true</code> in the manifest or
+  <code>build.gradle</code> file (it’s initially set by default).
+  </li>
+
+  <li>Enable ADB integration through <strong>Tools</strong> &gt; <strong>Android</strong> &gt;
+  <strong>Enable ADB Integration</strong>.
+  </li>
+
+   <li>
+    <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a> can’t be running.
+  </li>
+</ul>
+
+</div>
+</div>
+
+<p>
+  Android Studio provides a Memory Monitor so you can more easily monitor app performance and
+  memory usage to find deallocated objects, locate memory leaks, and track the amount of memory the
+  connected device is using. The Memory Monitor reports how your app allocates memory and helps you
+  to visualize the memory your app uses. It lets you:
+</p>
+
+<ul>
+  <li>Show a graph of available and allocated memory over time.
+  </li>
+<li>Show garbage collection (GC) events
+  over time.
+  </li>
+  <li>Initiate garbage collection events.
+  </li>
+
+  <li>Quickly test whether app slowness might be related to excessive garbage collection events.
+  </li>
+
+  <li>Quickly test whether app crashes may be related to running out of memory.
+  </li>
+</ul>
+
+<h2 id="workflow">
+  Memory Monitor Workflow
+</h2>
+
+<p>
+  To profile and optimize memory use, the typical workflow is to run your app and do the following:
+</p>
+
+<ol>
+  <li>Profile the app using the Memory Monitor to find out whether undesirable garbage collection
+  event patterns might be causing performance problems.
+  </li>
+
+  <li>If you see many garbage collection events in a short amount of time, dump the Java heap to
+  identify candidate object types that get or stay allocated unexpectedly or unnecessarily.
+  </li>
+
+  <li>Start allocation tracking to determine where any problems are happening in your code.
+  </li>
+</ol>
+
+<p>
+  The Java heap data shows in real-time what types of objects your application has allocated, how
+  many, and their sizes on the heap. Viewing the heap helps you to:
+</p>
+
+<ul>
+  <li>Get a sense of how your app allocates and frees memory.
+  </li>
+
+  <li>Identify memory leaks.
+  </li>
+</ul>
+
+<p>
+  Allocation tracking records app memory allocations and lists all allocations for the
+  profiling cycle, including the call stack, size, and allocating code. It helps you to:
+</p>
+
+<ul>
+  <li>Identify where many similar object types, from roughly the same call stack, are allocated and
+  deallocated over a very short period of time.
+  </li>
+
+  <li>Find the places in your code that may contribute to inefficient memory use.
+  </li>
+</ul>
+
+<h3 id="treeroot">
+  Garbage collection roots and dominator trees
+</h3>
+
+<p>
+  When you dump the Java heap, the Memory Monitor creates an Android-specific Heap/CPU Profiling
+  (HPROF) file that you can view in the HPROF Viewer. The HPROF Viewer indicates a garbage
+  collection root with the <img src="{@docRoot}images/tools/am-igcroot.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="GC Root icon" /> icon (and a depth of zero)
+  and a
+  dominator with the <img src="{@docRoot}images/tools/am-idom.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Dominator icon" /> icon.
+</p>
+
+<p>
+  There are several kinds of garbage collection roots in Java:
+</p>
+
+<ul>
+<li>references on the stack</li>
+<li>Java Native Interface (JNI) native objects and memory</li>
+<li>static variables and functions</li>
+<li>threads and objects that can be referenced </li>
+<li>classes loaded by the bootstrap loader</li>
+<li>finalizers and unfinalized objects</li>
+<li>busy monitor objects</li>
+</ul>
+
+<p>
+  The HPROF file provides the list of roots to the HPROF Viewer.
+</p>
+
+<p>
+  A dominator tree traces paths to objects created by the app. An object dominates another object
+  if the only way to reach the other object is, directly or indirectly, through the dominator
+  object. When you examine objects and paths created by an app in an effort to optimize memory use,
+  try to remove objects that are no longer needed. You can release a dominator object to
+  release all subordinate objects. For example, in the following figure, if you were to
+  remove object B, that would also release the memory used by the objects it dominates, which are
+  objects C, D, E, and F. In fact, if objects C, D, E, and F were marked for removal, but object B
+  was still referring to them, that could be the reason that they weren’t released.
+</p>
+
+  <img src="{@docRoot}images/tools/am-domtree.png" height="200" />
+
+<h3 id="analysis">
+  Memory leak and use analysis
+</h3>
+
+<p>
+  An app performs better if it uses memory efficiently and releases the memory when it’s no longer
+  needed.
+  Memory leaks that are large or that grow over time are the most important to correct.
+</p>
+
+<p>
+  One way to optimize memory usage is to analyze large arrays. For example, can you reduce the size
+  of individual elements in the array to save memory? Does a dominator object point to
+  an element in the array, preventing it from being garbage-collected? If the dominator object
+  directly points to an element in the array, the dominator is either the contiguous memory
+  representing the underlying data of the array, some part of the array, or the array itself.
+</p>
+
+<p>
+  Another area that deserves attention is objects that the app no longer needs but continues to
+  reference. You can gather heap dumps over different periods of time and compare them to determine
+  if you have a growing memory leak, such as an object type that your code creates multiple times
+  but doesn’t destroy. These objects could be part of a growing array or an object tree, for
+  example. To track down this problem, compare the heap dumps and see if you have a particular
+  object type that continues to have more and more instances over time.
+</p>
+
+<p>
+  Continually growing object trees that contain root or dominator objects can prevent subordinate
+  objects from being garbage-collected. This issue is a common cause of memory leaks, out-of-memory
+  errors,
+  and crashes. Your app could have a small number of objects that are preventing a large number of
+  subordinate objects from being destroyed, so it runs out of memory quickly. To find these issues,
+  get a heap dump and examine the amount of memory held by root and dominator objects. If the
+  memory is substantial, you’ve likely found a good place to start optimizing your memory use.
+</p>
+
+<p>
+  As you start narrowing down memory issues, you should also use the Allocation Tracker to get a
+  better understanding of where your memory-hogging objects are allocated. The Allocation Tracker
+  can be valuable not only for looking at specific uses of memory, but also for analyzing critical
+  code paths, such as loading and scrolling. For example, tracking allocations when flinging a list
+  in your app
+  allows you to see all of the allocations that need to be done for that behavior, what thread they
+  are on, and where they came from. This information is extremely valuable for tightening up these
+  paths to reduce the work they need and improve the overall smoothness of the UI.
+</p>
+
+<p>
+  It’s useful to examine your algorithms for allocations that are unnecessary or that create the
+  same object many times instead of reusing them. For example, do you create temporary objects and
+  variables within recursive loops? If so, try creating an object or variable before
+  the loop for use within the loop. Otherwise, your app might needlessly allocate many objects and
+  variables, depending on the number of recursions.
+</p>
+
+<p>
+  It’s important to perform allocation tests on portions of your code that create the most and
+  largest objects, as those areas offer the most optimization opportunities. In addition to unit
+  tests, you should test your app with production-realistic data loads, especially those algorithms
+  that are data-driven. Also, make sure to account for the app caching and startup phase, which can
+  sometimes be slow; allocation analysis is best done after that phase to produce accurate results.
+</p>
+
+<p>
+  After you optimize code, be sure to test that it worked. You need to test under different load
+  conditions and also without running the Memory Monitor tools. Compare results before and after
+  optimization to make sure that performance has actually improved.
+</p>
+
+<h3 id="vm">
+  Memory management for different virtual machines
+</h3>
+
+<p>
+  Android Monitor uses the Virtual Machine (VM) that the device or emulator uses:
+</p>
+
+<ul>
+  <li>Android 4.3 (API level 18) and lower uses the Dalvik VM.
+  </li>
+
+  <li>In Android 4.4 (API level 19), the Android RunTime (ART) VM is an option, while the Dalvik VM
+  is the default.
+  </li>
+
+  <li>Android 5.0 (API level 21) and higher uses the ART VM.
+  </li>
+</ul>
+
+<p>
+  The VM handles garbage collection. The Dalvik VM uses a mark-and-sweep scheme for garbage
+  collection. The ART VM uses a generational scheme, combined with mark-and-sweep when memory needs
+  a more thorough garbage collection, such as when memory becomes excessively fragmented. The
+  logcat Monitor displays some messages that indicate the type of garbage collection that occurred
+  and why.
+</p>
+
+<p>
+  Memory Monitor results can vary between the different VMs. As a result, if you’re supporting both
+  VMs, you might want to test with both. In addition, the VMs available for different API levels
+  can have different behavior. For example, the Dalvik VM in Android 2.3 (API level 10) and lower
+  uses externally allocated memory while higher versions allocate in the Dalvik heap only.
+</p>
+
+<p>
+  You can’t reconfigure the Dalvik and ART VMs to tune performance. Instead, you should examine
+  your app code to determine how to improve its operation, for example, reducing the size of very
+  large arrays.
+</p>
+
+<p>
+  There are programmatic ways to manipulate when the VM performs garbage collection, although it’s
+  not a best practice. These techniques can be specific to the VM. For more information, see
+  <a href=
+  "{@docRoot}guide/practices/verifying-apps-art.html#GC_Migration">Addressing
+  Garbage Collection (GC) Issues</a> and <a href=
+  "{@docRoot}tools/debugging/debugging-memory.html">Investigating Your RAM
+  Usage</a>.
+</p>
+
+<p>
+  The ART VM adds a number of performance, development, and debugging improvements over the Dalvik
+  VM. For more information, see <a href=
+  "https://source.android.com/devices/tech/dalvik/index.html">ART and Dalvik</a>.
+</p>
+
+<h2 id="displaying">
+  Displaying a Running App in the Memory Monitor
+</h2>
+
+<p>
+  Follow these steps:
+</p>
+
+<ol>
+  <li>Optionally connect a hardware device.
+  </li>
+
+  <li>
+    <a href=
+    "{@docRoot}tools/help/android-monitor.html#displaying">Display Android Monitor</a>.
+  </li>
+
+  <li>Click the <strong>Memory</strong> tab.
+  </li>
+
+  <li>Open an app project and <a href=
+  "{@docRoot}tools/building/building-studio.html#RunningApp">run it</a> on a
+  hardware device or emulator.
+  </li>
+
+  <li>Enable the Memory Monitor by clicking Pause <img src="{@docRoot}images/tools/am-ipause.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> to deselect it.
+  </li>
+
+
+<p>
+  In the graph, the y-axis displays the free and allocated RAM in megabytes. The x-axis shows the
+  time elapsed; it starts with seconds, and then minutes and seconds, and so on. The amount of free
+  memory, measured in megabytes,
+  is shown in a light color, and allocated memory is a darker color. When there’s a sharp drop in
+  allocated memory, that indicates a garbage collection event. </p>
+
+
+
+<p>
+  To force a garbage collection event, click Initiate GC <img src="{@docRoot}images/tools/am-igc.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Initiate GC icon" />.
+</p>
+
+  <p>In the following figure, the VM initiated the first garbage collection event, while the
+    developer forced the second.
+</p>
+<img src="{@docRoot}images/tools/am-gc.png" />
+
+  <li>Interact with your app and watch how it affects memory usage in the Memory Monitor. You can
+  identify garbage collection patterns for your app and determine whether they are healthy and what
+  you expect.
+  </li>
+
+
+<p>
+  The graph can show you potential issues:
+</p>
+
+<ul>
+  <li>Excessive garbage collection events slow down the app.
+  </li>
+
+  <li>The app runs out of memory, which causes it to crash.
+  </li>
+
+  <li>Potential memory leaks.
+  </li>
+</ul>
+
+<p>
+  For example, you might see the following signs of problems:
+</p>
+
+<ul>
+  <li>Your app is static, but you see memory being allocated in the monitor.
+  </li>
+
+  <li>You see spikes of memory allocations in the monitor, but you don’t think there’s any app
+  logic to cause this behavior.
+  </li>
+</ul>
+  <li>To stop the Memory Monitor, click Pause <img src="{@docRoot}images/tools/am-ipause.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> again to select it.
+  </li>
+
+</ol>
+
+<h2 id="forcing">
+  Forcing a Garbage Collection Event
+</h2>
+
+<p>
+  Normally, VMs perform garbage collection only when absolutely needed, since it’s expensive.
+  However, it can be useful to force garbage collection in certain circumstances. For example, when
+  locating memory leaks, if you want to determine whether a large object was successfully released
+  already, you can initiate garbage collection much more aggressively than usual.
+</p>
+
+<p>
+  To force a garbage collection event:
+</p>
+
+<ul>
+  <li>While the <a href="#displaying">Memory Monitor is running</a>, click Initiate GC
+  <img src="{@docRoot}images/tools/am-igc.png" style="vertical-align:sub;margin:0;height:17px"
+  alt="Initiate GC icon" />.
+  </li>
+</ul>
+
+<h2 id="dumping">
+  Dumping and Analyzing the Java Heap
+</h2>
+
+<p>
+  When you're monitoring memory usage in Android Studio you can, at the same time, dump the Java
+  heap to a heap snapshot in an Android-specific HPROF binary format file. The HPROF Viewer
+  displays classes, instances of each class, and a reference tree to help you track memory usage
+  and find memory leaks. HPROF is a heap dump format originally supported by J2SE.
+</p>
+<p>The Java heap display does the following:</p>
+
+<ul>
+  <li>Shows snapshots of a number of objects allocated by type.
+  </li>
+
+  <li>Samples data every time a garbage collection event occurs naturally or is triggered by you.
+  </li>
+
+  <li>Helps identify which object types might be involved in memory leaks.
+  </li>
+</ul>
+
+<p>
+  However, you have to look for changes over time yourself by tracking what's happening in the
+  graph.
+</p>
+
+<p>
+  The HPROF Analyzer finds the following potential issues:
+</p>
+
+<ul>
+  <li>All destroyed activity instances that are reachable from garbage collection roots.
+  </li>
+
+  <li>Where the target program has strings that repeat values.
+  </li>
+</ul>
+
+<p>
+  A dominator is at the top of a tree. If you remove it, you also remove the branches of the tree
+  it dominates, so it’s a potential way to free memory.
+</p>
+
+<h3 id="hprof-snapshot">
+  Taking and displaying a snapshot of the Java heap
+</h3>
+
+<p>
+  To see a snapshot of the Java heap, follow these steps:
+</p>
+
+<ol>
+  <li>While the Memory Monitor is running, click Dump Java Heap
+    <img src="{@docRoot}images/tools/am-idump.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="Dump Java Heap icon" />.
+  </li>
+
+
+<p>
+  When the icon on the Memory Monitor display changes from
+  <img src="{@docRoot}images/tools/am-idumpstart.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Dump Java Heap Start icon" /> to
+  <img src="{@docRoot}images/tools/am-idumpend.png" style="vertical-align:sub;margin:0;height:17px"
+  alt="Dump Java Heap End icon" />, the file is ready. Android Studio creates the heap snapshot
+  file with the
+  filename <code>Snapshot_<em>yyyy.mm.dd_hh.mm.ss</em>.hprof</code> using
+  the year, month, day, hour, minute, and second of the capture, for example,
+  <code>Snapshot_2015.11.17_14.58.48.hprof</code>.
+</p>
+
+  <li>Click <strong>Captures</strong> in the main window.
+  </li>
+
+<p>
+  The <em>Captures</em> window appears.
+</p>
+
+  <li>Double-click the file to view it in the HPROF Viewer.
+  </li>
+
+<p>
+  The HPROF Viewer appears:
+</p>
+<img src="{@docRoot}images/tools/am-hprofviewer.png" />
+<p>
+  The tool displays the following information:
+</p>
+
+<table>
+  <tr>
+    <th scope="col">Column</th>
+    <th scope="col">Description</th>
+  </tr>
+
+  <tr>
+    <td><strong>Class Name</strong></td>
+    <td>The Java class responsible for the memory.</td>
+  </tr>
+
+  <tr>
+    <td><strong>Total Count</strong></td>
+    <td>Total number of instances outstanding.</td>
+  </tr>
+  <tr>
+    <td><strong>Heap Count</strong></td>
+    <td>Number of instances in the selected heap.</td>
+  </tr>
+  <tr>
+    <td><strong>Sizeof</strong></td>
+    <td>Size of the instances (currently, 0 if the size is variable).</td>
+  </tr>
+  <tr>
+    <td><strong>Shallow Size</strong></td>
+    <td>Total size of all instances in this heap.</td>
+  </tr>
+  <tr>
+    <td><strong>Retained Size</strong></td>
+    <td>Size of memory that all instances of this class is dominating.</td>
+  </tr>
+  <tr>
+    <td><strong>Instance</strong></td>
+    <td>A specific instance of the class.</td>
+  </tr>
+  <tr>
+    <td><strong>Reference Tree</strong></td>
+    <td>References that point to the selected instance, as well as references pointing to the
+      references.</td>
+  </tr>
+  <tr>
+    <td><strong>Depth</strong></td>
+    <td>The shortest number of hops from any GC root to the selected instance.</td>
+  </tr>
+  <tr>
+    <td><strong>Shallow Size</strong></td>
+    <td>Size of this instance.</td>
+  </tr>
+  <tr>
+    <td><strong>Dominating Size</strong></td>
+    <td>Size of memory that this instance is dominating.</td>
+  </tr>
+</table>
+
+  <li>Select the Heap menu option you want to display:
+    <ul>
+      <li>
+        <strong>App heap</strong> - The heap used by the current app.
+      </li>
+
+      <li><strong>Image heap</strong> - The memory mapped copy of the
+      current app on disk.
+      </li>
+
+
+  <li>
+    <strong>Zygote heap</strong> - The common set of libraries and runtime classes and data that
+    all apps are forked
+    from. The zygote space is created during device startup and is never allocated into.
+  </li>
+
+    </ul>
+
+      <li>Select the View menu option you want to display:
+        <ul>
+          <li>
+            <strong>Class List View</strong>
+          </li>
+
+              <li>
+                <strong>Package Tree View</strong>
+              </li>
+            </ul>
+    </ol>
+
+
+<h3 id="hprof-diving">
+  Diving into heap dump data in the HPROF Viewer
+</h3>
+<p>The following steps outline the typical workflow:</p>
+<ol>
+<li>In the HPROF viewer, select a class name. </li>
+<li>Select an instance of that class.</li>
+<li>Examine the reference tree.</li>
+<li>Right-click an item to <strong>Jump to source</strong> or <strong>Go to instance</strong>,
+  as needed.</li>
+</ol>
+
+
+
+<h3 id="hprof-analyzing">Analyzing heap dump data in the HPROF Analyzer</h3>
+<p>You can detect leaked activities and find duplicate strings with the HPROF Analyzer.
+  Follow these steps: </p>
+<ol>
+<li>In the <em>Captures</em> window, double-click an <code>.hprof</code> file to display it in the
+  HPROF Viewer. </li>
+<li>Click <strong>Capture Analysis</strong> on the right side of the main Android Studio window.</li>
+
+
+<p>The HPROF Analyzer appears to the right of the HPROF Analyzer, by default: </p>
+
+<img src="{@docRoot}images/tools/am-hprofanalyzer.png" />
+
+<li>In the <strong>Analyzer Tasks</strong> list, select the items you want to find.</li>
+<li>Click Perform Analysis <img src="{@docRoot}images/tools/am-iperformanalysis.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Perform Analysis icon" />.</li>
+<li>Examine the items in <strong>Analysis Results</strong>. Click an item to display it in the
+  HPROF Viewer.</li>
+</ol>
+
+
+
+<h3 id="hprof-sorting">Sorting heap dump data</h3>
+<p>Follow this step:</p>
+<ul>
+<li>In the HPROF Viewer, click a column heading to sort the table by ascending or descending
+  order. </li>
+</ul>
+
+
+<h3 id="hprof-source">Displaying Java source</h3>
+<p>For some items displayed in the HPROF Viewer, you can go straight to its source code.
+  Follow this step:</p>
+<ul>
+<li>In the HPROF Viewer, right-click a class, instance, or item in the reference tree, and then
+  select <strong>Jump to Source</strong>. </li>
+
+
+<p>The source code appears in the Code Editor.</p>
+</ul>
+
+<h3 id="hprof-viewing">Viewing a saved HPROF file</h3>
+<p>After you do a heap dump, Android Studio automatically stores it so you can view it again.
+  Follow these steps:</p>
+
+<ol>
+<li>Click <strong>Captures</strong> in the main window.</li>
+
+<p>The <em>Captures</em> window appears.</p>
+<li>Open the <strong>Heap Snapshot</strong> folder.</li>
+<li>Double-click the file to view it.</li>
+</ol>
+
+
+<h3 id="hprof-renaming">Renaming an HPROF file</h3>
+
+<p>If you rename a file from within Android Studio, it continues to appear in <em>Captures</em>
+  window. Follow these steps:</p>
+<ol>
+<li>In the <em>Captures</em> window, right-click the file and select <strong>Rename</strong>. </li>
+<li>In the dialog, specify the name of the file and click <strong>OK</strong>.</li>
+</ol>
+
+
+<h3 id="hprof-locating">Locating a heap dump file on disk</h3>
+<p>You can quickly discover where Android Studio stored HPROF files on disk.</p>
+
+
+<p>Follow this step in Android Studio: </p>
+<ul>
+<li>In the <em>Captures</em> window, right-click a heap snapshot file and select
+  <strong>Show in files</strong>.</li>
+
+<p>Android Studio opens an operating system file browser displaying the location where the file
+  resides.</p>
+</ul>
+<p class="note"><strong>Note:</strong> If you move an HPROF file, Android Studio no longer
+  displays it in the <em>Captures</em> window. To display it, use
+  <strong>File</strong> &gt; <strong>Open</strong>. Also, if you want to rename the file, do it
+  from the <em>Captures</em> window and not in the operating system file browser. </p>
+
+<h3 id="hprof-deleting">Deleting a heap dump file</h3>
+
+<p>To delete a heap dump file, follow this step: </p>
+<ul>
+<li>In the <em>Captures</em> window, right-click a heap snapshot file and select
+  <strong>Delete</strong>.</li>
+
+<p>Android Studio deletes the file from the <em>Captures</em> dialog and from disk. </p>
+</ul>
+
+<h3 id="hprof-converting">Converting a heap dump file to standard HPROF format</h3>
+<p>You can convert an HPROF file to standard format so you can use it outside of Android Studio with
+  other analysis tools. Follow these steps: </p>
+<ol>
+<li>In the <em>Captures</em> window, right-click a heap snapshot file and select <strong>Export to
+  standard .hprof</strong>.</li>
+<li>In the <em>Convert Android Java Heap Dump</em> dialog, specify a filename and click
+  <strong>OK</strong>.</li>
+
+
+<p>Android Studio creates a binary HPROF file in the location you specified.</p>
+</ol>
+
+<h2 id="tracking">
+  Tracking and Analyzing Memory Allocation
+</h2>
+
+<p>Android Studio allows you to track memory allocation as it monitors memory use. Tracking memory
+  allocation allows you to monitor where objects are being allocated when you perform certain
+  actions. Knowing these allocations enables you to adjust the method calls related to those actions
+  to optimize app performance and memory use.</p>
+
+<p>The Allocation Tracker does the following:</p>
+<ul>
+<li>Shows when and where your code allocates object types, their size, allocating thread, and stack
+  traces.</li>
+<li>Helps recognize memory churn through recurring allocation/deallocation patterns.</li>
+<li>Help you track down memory leaks when used in combination with the HPROF Viewer. For example,
+  if you see a bitmap object resident on the heap, you can find its allocation location with
+  Allocation Tracker.</li>
+</ul>
+
+
+<p>However, it takes time and experience to learn to interpret the output from this tool.</p>
+
+<h3 id="alloc-snapshot">Taking and displaying a snapshot of allocation data</h3>
+
+<p>Follow these steps:</p>
+<ol>
+<li>While the Memory Monitor is running, click Start Allocation Tracking
+  <img src="{@docRoot}images/tools/am-ialloctracking.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Start Allocation Tracking icon" />. </li>
+<li>Click Start Allocation Tracking
+  <img src="{@docRoot}images/tools/am-ialloctracking.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Start Allocation Tracking icon" /> again to
+  deselect it and end the snapshot. </li>
+
+  <p>The Memory Monitor displays the period when it took the snapshot. In the following
+    figure, you can see the snapshot period, as shown on the left. By comparison, when you dump the
+    Java heap, the Memory Monitor displays just the point where the heap snapshot was taken, as
+    shown on the right.</p>
+    <img src="{@docRoot}images/tools/am-dumpalloc.png" />
+
+<p>Android Studio creates the heap snapshot file with the
+  filename <code>Allocations_<em>yyyy.mm.dd_hh.mm.ss</em>.alloc</code> using the year, month, day,
+  hour, minute, and second of the capture, for example,
+  <code>Allocations_2015.11.17_14.58.48.alloc</code>.</p>
+<li>Click <strong>Captures</strong> in the main window.</li>
+
+
+<p>The <em>Captures</em> window appears.</p>
+<li>Double-click the file to view it in the Allocation Tracker. </li>
+<li>Optionally click the graphic icon to display a visual representation of the data.
+  </li>
+<p>
+  The Allocation Tracker appears:
+</p>
+<img src="{@docRoot}images/tools/am-alloctracker.png" />
+<p>
+
+
+<p>The tool displays the following information: </p>
+
+<table>
+  <tr>
+    <th scope="col">Column</th>
+    <th scope="col">Description</th>
+  </tr>
+
+  <tr>
+    <td><strong>Method</strong></td>
+    <td>The Java method responsible for the allocation.</td>
+  </tr>
+  <tr>
+    <td><strong>Count</strong></td>
+    <td>Total number of instances allocated.</td>
+  </tr>
+  <tr>
+    <td><strong>Size</strong></td>
+    <td>The total amount of allocated memory in bytes.</td>
+  </tr>
+
+</table>
+
+
+<li>Select the Group By menu option you want to display: </li>
+<ul>
+<li><strong>Group by Allocator</strong> </li>
+<li><strong>Group by Method</strong></li>
+</ul>
+
+</ol>
+
+
+
+<h3 id="alloc-sorting">Sorting allocation data</h3>
+
+<p>Follow this step:</p>
+<ul>
+<li>In the Allocation Tracker, click a column heading to sort the table by ascending or
+  descending order. </li>
+</ul>
+
+
+<h3 id="alloc-source">Displaying Java source</h3>
+<p>For some items displayed in the Allocation Tracker, you can view the Java source. Follow one of
+  these steps:</p>
+<ul>
+<li>In the Allocation Tracker, right-click a method and then select <strong>Jump to Source</strong>.
+</li>
+<li>In the Allocation Tracker, select a method and then click Jump to Source
+  <img src="{@docRoot}images/tools/am-ijumptosource.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Jump to Source icon" />. </li>
+</ul>
+
+<p>The source code appears in the Code Editor.</p>
+
+<h3 id="alloc-viewing">Viewing a saved allocation tracking file</h3>
+<p>After you monitor allocation tracking, Android Studio automatically stores it so you can view it
+  again. Follow these steps:</p>
+
+
+<ol>
+<li>Click <strong>Captures</strong> in the main window.</li>
+
+
+<p>The <em>Captures</em> window appears.</p>
+<li>Open the <strong>Allocation Tracking</strong> folder.</li>
+<li>Double-click the file to view it.</li>
+</ol>
+
+
+<h3 id="alloc-renaming">Renaming an allocation tracking file</h3>
+
+<p>If you rename a file from within Android Studio, it continues to appear in the <em>Captures</em>
+  window. Follow these steps:</p>
+<ol>
+<li>In the <em>Captures</em> window, right-click the file and select <strong>Rename</strong>.</li>
+<li>In the <em>Rename</em> dialog, specify the name of the file and click <strong>OK</strong>.</li>
+</ol>
+
+
+<h3 id="alloc-locating">Locating an allocation tracking file</h3>
+<p>You can quickly discover where Android Studio stored allocation tracking files on disk.</p>
+
+
+<p>Follow this step in Android Studio: </p>
+<ul>
+<li>In the <em>Captures</em> window, right-click allocation file and select
+  <strong>Show in Files</strong>.</li>
+
+<p>Android Studio opens an operating system file browser displaying the location where the file
+  resides.</p>
+</ul>
+
+<p class="note"><strong>Note:</strong> If you move an allocation tracking file, Android Studio
+  no longer displays it in the <em>Captures</em> window. To display the file, use
+  <strong>File</strong>
+  &gt; <strong>Open</strong>. Also, rename the file from the <em>Captures</em>
+  window and not in the operating system file browser. </p>
+
+<h3 id="alloc-deleting">Deleting an allocation tracking file</h3>
+
+
+<p>Follow this step: </p>
+<ul>
+<li>In the <em>Captures</em> window, right-click an allocation tracking file and select
+  <strong>Delete</strong>.</li>
+
+<p>Android Studio deletes the file from the <em>Captures</em> dialog and from disk. </p>
+</ul>
diff --git a/docs/html/tools/help/am-network.jd b/docs/html/tools/help/am-network.jd
new file mode 100644
index 0000000..ae116ac
--- /dev/null
+++ b/docs/html/tools/help/am-network.jd
@@ -0,0 +1,130 @@
+page.title=Network Monitor
+parent.title=Android Monitor
+parent.link=android-monitor.html
+page.tags=monitor
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>In this document</h2>
+<ol>
+  <li><a href="#running">Displaying a Running App in the Network Monitor</a></li>
+</ol>
+
+ <h2>See also</h2>
+  <ol>
+    <li>
+        <a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a>
+      </li>
+    <li><a href="{@docRoot}tools/help/am-logcat.html">logcat Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-memory.html">Memory Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-cpu.html">CPU Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-gpu.html">GPU Monitor</a>
+      </li>
+  </ol>
+
+<h2>Video</h2>
+  <ol>
+    <li><a href="https://www.youtube.com/watch?v=fEEulSk1kNY"
+      class="external-link">Battery Drain and Networking</a></li>
+  </ol>
+
+<h2>
+  Dependencies and Prerequisites
+</h2>
+
+<ul>
+  <li>
+    <a href="{@docRoot}tools/building/building-studio.html#RunningOnDeviceStudio">Connect a
+    hardware device</a> to your development computer.
+  </li>
+
+  <li>Make sure your development computer detects your hardware device, which often happens
+  automatically when you connect it to a USB port.
+  </li>
+
+  <li>
+    <a href="{@docRoot}tools/device.html#device-developer-options">Enable</a> <strong><a href=
+    "{@docRoot}tools/device.html#device-developer-options">USB debugging</a></strong> in
+    <strong>Developer Options</strong> on the device.
+  </li>
+
+  <li>In your app, set the <code>debuggable</code> property to <code>true</code> in the manifest or
+  <code>build.gradle</code> file (it’s initially set by default).
+  </li>
+
+  <li>Enable ADB integration through <strong>Tools</strong> &gt; <strong>Android</strong> &gt;
+  <strong>Enable ADB Integration</strong>.
+  </li>
+
+  <li>
+    <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a> can’t be running.
+  </li>
+</ul>
+
+</div>
+</div>
+
+<p>
+  The Network Monitor makes it possible to track when your application is making network requests.
+  Using this tool, you can monitor how and when your app transfers data, and optimize the underlying
+  code appropriately.
+</p>
+
+<p>
+  By monitoring the frequency of data transfers, and the amount of data transferred during each
+  connection, you can identify areas of your app that can be made more efficient and use less
+  battery power.
+  Generally, you should look for short spikes that can be delayed, or that could cause a later
+  transfer to be preempted.
+</p>
+
+
+<h2 id="running">
+  Displaying a Running App in the Network Monitor
+</h2>
+
+<p>
+  Follow these steps:
+</p>
+
+<ol>
+  <li>Connect a hardware device.
+  </li>
+
+  <li>
+    <a href="{@docRoot}tools/help/android-monitor.html#displaying">Display Android Monitor</a>.
+  </li>
+
+  <li>Click the <strong>Network</strong> tab.
+  </li>
+
+  <li>Open an app project and <a href=
+  "{@docRoot}tools/building/building-studio.html#RunningApp">run it</a> on the hardware device.
+  </li>
+
+  <li>To start the Network Monitor, click Pause <img src="{@docRoot}images/tools/am-ipause.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> to
+  deselect it.
+  </li>
+<p>
+  Any network traffic begins to appear in the Network Monitor:
+</p>
+  <img src="{@docRoot}images/tools/am-networkmon.png" style="vertical-align:sub;margin:0;width:450px" />
+<p>
+  The Network Monitor adds up the amount of time it takes for the device to transmit and receive
+  kilobytes of data.
+  The y-axis is in kilobytes per second. The x-axis starts with seconds, and then minutes and
+  seconds, and so on.
+</p>
+  <li>To stop the Network Monitor, click Pause <img src="{@docRoot}images/tools/am-ipause.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="Pause icon" /> again to
+  select it.
+  </li>
+</ol>
\ No newline at end of file
diff --git a/docs/html/tools/help/android-monitor.jd b/docs/html/tools/help/android-monitor.jd
new file mode 100644
index 0000000..4c9f80f
--- /dev/null
+++ b/docs/html/tools/help/android-monitor.jd
@@ -0,0 +1,462 @@
+page.title=Android Monitor
+parent.title=Tools
+parent.link=index.html
+page.tags=monitor
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>In this document</h2>
+<ol>
+  <li><a href="#displaying">Displaying Android Monitor</a></li>
+  <li><a href="#profiling">Profiling a Running App in Android Monitor</a></li>
+  <li><a href="#switching">Switching between Devices and Apps</a></li>
+  <li><a href="#screencapture">Taking a Screen Capture of the Device</a></li>
+  <li><a href="#video">Recording a Video from the Screen</a></li>
+  <li><a href="#sysinfo">Examining System Information</a></li>
+  <li><a href="#terminating">Terminating the App</a></li>
+  <li><a href="#rearranging">Rearranging Android Monitor Windows</a></li>
+  <li><a href="#removing">Removing an App from a Device</a></li>
+</ol>
+
+ <h2>See also</h2>
+  <ol>
+    <li><a href="{@docRoot}tools/help/am-logcat.html">logcat Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-memory.html">Memory Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-cpu.html">CPU Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-gpu.html">GPU Monitor</a>
+      </li>
+
+      <li>
+        <a href="{@docRoot}tools/help/am-network.html">Network Monitor</a>
+      </li>
+  </ol>
+
+
+<h2>
+  Dependencies and Prerequisites
+</h2>
+
+<ul>
+  <li>In your app, set the <code>debuggable</code> property to <code>true</code> in the manifest or
+  <code>build.gradle</code> file (it’s initially set by default).
+  </li>
+
+    <li>Enable ADB integration through <strong>Tools</strong> &gt; <strong>Android</strong> &gt;
+  <strong>Enable ADB Integration</strong>.
+    </li>
+
+  <li>Make sure your development computer detects your hardware device, which often happens
+  automatically when you connect it to a USB port.
+  </li>
+ <li>
+    <a href="{@docRoot}tools/device.html#device-developer-options">Enable</a> <strong><a href=
+    "{@docRoot}tools/device.html#device-developer-options">USB debugging</a></strong> in
+    <strong>Developer Options</strong> on the device or emulator.
+  </li>
+
+  <li>
+    <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a> can’t be running.
+  </li>
+</ul>
+
+</div>
+</div>
+
+<p>
+  Android Monitor helps you to profile the performance of your apps so you can optimize, debug, and
+  improve them. It lets you monitor the following aspects of your apps from a hardware device or
+  the Android Studio emulator:
+</p>
+
+<ul>
+  <li>
+    <a href="{@docRoot}reference/android/util/Log.html">Log</a> messages, either
+    system- or user-defined
+  </li>
+
+  <li>Memory, CPU, and GPU usage
+  </li>
+
+  <li>Network traffic (hardware device only)
+  </li>
+</ul>
+
+<p>
+  Android Monitor contains the logcat, Memory, CPU, GPU, and Network Monitors that you can use
+  separately to examine these aspects of your apps.
+</p>
+
+
+<h2 id="displaying">
+  Displaying Android Monitor
+</h2>
+
+<p>
+  Android Monitor is integrated into the Android Studio main window:
+</p>
+
+<ul>
+  <li>To display Android Monitor, click <img src="{@docRoot}images/tools/am-icon.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="Android Monitor icon" />, which by default
+  is at the bottom of the main window.
+  </li>
+
+  <li>To hide Android Monitor, click <img src="{@docRoot}images/tools/am-icon.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="Android Monitor icon" /> again.
+  </li>
+</ul>
+<img src="{@docRoot}images/tools/am-androidmon.png" style="vertical-align:sub;margin:0;width:480px" />
+
+<h2 id="profiling">
+  Profiling a Running App in Android Monitor
+</h2>
+
+<p>
+  Follow these steps:
+</p>
+
+<ol>
+  <li>Optionally connect a hardware device.
+  </li>
+
+  <li>
+    <a href="#displaying">Display Android Monitor</a>.
+  </li>
+
+  <li>Open an app project and <a href=
+  "{@docRoot}tools/building/building-studio.html#RunningApp">run the app</a> on a device or
+  emulator.
+  </li>
+
+  <li>Click the tab for the monitor you want to view and start the monitor, if needed:
+    <ul>
+      <li><a href="{@docRoot}tools/help/am-logcat.html">logcat Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-memory.html">Memory Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-cpu.html">CPU Monitor</a>
+      </li>
+
+      <li><a href="{@docRoot}tools/help/am-gpu.html">GPU Monitor</a>
+      </li>
+
+      <li>
+        <a href="{@docRoot}tools/help/am-network.html">Network Monitor</a>
+      </li>
+    </ul>
+</ol>
+    <h2 id="switching">
+      Switching between Devices and Apps
+    </h2>
+
+    <p>
+      By default, Android Monitor displays data for your most recently run app. You can switch to
+      another device and app as needed. In addition to currently running apps, you can view
+      information about apps that are no longer running so you can continue to view any information
+      about them that you gathered previously.
+    </p>
+
+    <p>
+      At the top of the Android Monitor main window are two menus listing devices and processes. To
+      switch to another device, process, or both, follow these steps:
+    </p>
+
+    <ol>
+      <li>Select the device or emulator.
+      </li>
+
+    <p>
+      The Device menu lists the devices and emulators that are running or have run during your
+      current session. There are various status messages that can appear in the Device menu:
+    </p>
+
+    <ul>
+      <li>
+        <strong>DISCONNECTED</strong> - You closed an emulator or unplugged a device from the
+        computer.
+      </li>
+
+      <li>
+        <strong>UNAUTHORIZED</strong> - A device needs you to accept the incoming computer
+        connection. For example, if the connected device displays an <em>Allow USB Debugging</em>
+        dialog, click <strong>OK</strong> to allow the connection.
+      </li>
+
+      <li>
+        <strong>OFFLINE</strong> - Android Monitor can’t communicate with a device, even though it
+        has detected that device.
+      </li>
+    </ul>
+
+  <li>Select the process.
+  </li>
+</ol>
+
+<p>
+  The Process menu lists the processes that are running or have run during your current session. If
+  a process is no longer running, the menu displays a status of <strong>DEAD</strong>.
+</p>
+
+<h2 id="screencapture">
+  Taking a Screen Capture of the Device
+</h2>
+
+<p>
+  You can take a PNG screenshot of the display on a connected device or the emulator. You can use
+  the images for your marketing materials as well as for debugging, for example.
+</p>
+<p>
+  Follow these steps:
+</p>
+<ol>
+  <li>
+    <a href="{@docRoot}training/basics/firstapp/running-app.html">Run your
+    app</a> from within Android Studio.
+  </li>
+
+  <li>
+    <a href="#switching">Select the device and the process</a> in the Android Monitor
+    menus, if needed.
+  </li>
+
+  <li>Interact with the display on the device or emulator to stage the image you want.
+  </li>
+
+  <li>Click Screen Capture <img src="{@docRoot}images/tools/am-iscreencapture.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="Screen Capture icon" /> in the
+    Android Monitor toolbar.
+  </li>
+  <p>The screenshot appears in a <em>Screenshot Editor</em> window.</p>
+
+  <li>Optionally change the image:
+    <ul>
+      <li>
+        <strong>Reload</strong> - Click to take a new screenshot.
+      </li>
+
+      <li>
+        <strong>Rotate</strong> - Click to rotate the image 90 degrees clockwise.
+      </li>
+
+      <li>
+        <strong>Frame Screenshot</strong> - Select this option and choose a device to add an image
+        of the device to the outside of the screenshot. Select <strong>Drop Shadow</strong>,
+        <strong>Screen Glare</strong>, or both to add these effects to your image.
+      </li>
+
+      <li>
+        <strong>Chessboard</strong> and <strong>Grid</strong> - Select an option to display these
+        behind your image.
+      </li>
+
+      <li>
+        <strong>Zoom In</strong>, <strong>Zoom Out</strong>, or <strong>Actual Size</strong> -
+        Click these options to get different perspectives of your image without changing the image
+        itself.
+      </li>
+    </ul>
+    </li>
+      <li>Click <strong>Save</strong> to save the image.
+      </li>
+</ol>
+
+<h2 id="video">
+  Recording a Video from the Screen
+</h2>
+
+<p>
+  Android Studio lets you record an MP4 video from your hardware device for a maximum of three
+  minutes. You can use the video for your marketing materials as well as for debugging, for
+  example.
+</p>
+<p>
+  Follow these steps:
+</p>
+<ol>
+  <li>
+    <a href="{@docRoot}training/basics/firstapp/running-app.html">Run your
+    app</a> from within Android Studio.
+  </li>
+
+  <li>
+    <a href="#switching">Select the device and the process</a> in the Android Monitor
+    menus, if needed.
+  </li>
+
+  <li>Interact with the display on the device or emulator to stage the start of the video.
+  </li>
+
+  <li>Click Screen Record <img src="{@docRoot}images/tools/am-ivideo.png" style="vertical-align:sub;margin:0;height:17px" alt="Screen Record icon" /> in the Android Monitor toolbar.
+  </li>
+  <p>The screenshot appears in a Screenshot Editor window.</p>
+
+  <li>In the <em>Screen Recorder Options</em> dialog, optionally change the recording options:
+  </li>
+<ul>
+  <li>
+    <strong>Bit Rate</strong> - Type a bit rate. The default is 4 Mbps.
+  </li>
+
+  <li>
+    <strong>Resolution</strong> - Type a width and height value in pixels. The value must be a
+    multiple of 16. The default is the resolution of the device.
+  </li>
+</ul>
+  <li>Click <strong>Start Recording</strong> to start the recording.
+  </li>
+
+  <li>Click <strong>Stop Recording</strong> to stop the recording.
+  </li>
+
+  <li>In the <em>Save As</em> dialog, save the MP4 file.
+  </li>
+
+  <li>In the <em>Screen Recorder</em> dialog, click one of the buttons to show the file location,
+  open the recording in a player, or to dismiss the dialog.
+  </li>
+</ol>
+
+<h2 id="sysinfo">
+  Examining System Information
+</h2>
+<p>
+  You can view <code>dumpsys</code> output from within Android Monitor. Follow these steps:
+</p>
+
+<ol>
+  <li>
+    <a href="{@docRoot}training/basics/firstapp/running-app.html">Run your
+    app</a> from within Android Studio.
+  </li>
+
+  <li>
+    <a href="#switching">Select the device and the process</a> in the Android Monitor
+    menus, if needed.
+  </li>
+
+  <li>Click System Information <img src="{@docRoot}images/tools/am-isysteminfo.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="System Information icon" /> and then a
+    menu item in the Android Monitor
+  toolbar.
+  </li>
+
+<p>
+  The menu items display different types of <code><a href=
+  "https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></code> output:
+</p>
+
+<ul>
+  <li>
+    <strong>Activity Manager State</strong> - <code>dumpsys activity</code>
+  </li>
+
+  <li>
+    <strong>Package Information</strong> - <code>dumpsys package</code>
+  </li>
+
+  <li>
+    <strong>Memory Usage</strong> - <code><a href=
+    "{@docRoot}tools/debugging/debugging-memory.html#ViewingAllocations">dumpsys
+    meminfo</a></code>
+  </li>
+
+  <li>
+    <strong>Memory Use Over Time</strong> - <code><a href=
+    "http://android-developers.blogspot.com/2014/01/process-stats-understanding-how-your.html">dumpsys
+    procstats</a></code>
+  </li>
+
+  <li>
+    <strong>Graphics State</strong> - <code><a href=
+    "{@docRoot}training/testing/performance.html">dumpsys gfxinfo</a></code>
+  </li>
+</ul>
+
+<p>
+  The information appears in an editable text file in the Code Editor.
+</p>
+</ol>
+
+<h2 id="terminating">
+  Terminating the App
+</h2>
+
+<p>
+  If you want to stop an app you’ve run from Android Studio, follow these steps:
+</p>
+
+<ol>
+  <li>
+    <a href="#switching">Select the device and the process</a> in the Android Monitor
+    menus, if needed.
+  </li>
+
+  <li>Click Terminate Application <img src="{@docRoot}images/tools/am-iterminate.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="Terminate App icon" />.
+  </li>
+
+
+<p>
+  The process status changes to <strong>DEAD</strong> in the Processes menu. The emulator or device
+  continues to run, but the app closes. Any running monitors in Android Monitor stop.
+</p>
+</ol>
+
+<h2 id="rearranging">
+  Rearranging Android Monitor Windows
+</h2>
+
+<p>
+  You can rearrange the Android Monitor windows for optimal viewing during your tests:
+</p>
+
+<ul>
+  <li>To reorder the monitors, move the tabs back and forth.
+  </li>
+
+  <li>To move a monitor to a standalone window, grab a tab and move it to a different location on
+  the screen. Or, select <img src="{@docRoot}images/tools/am-igear.png" style="vertical-align:sub;margin:0;height:17px" alt="Gear menu icon" /> &gt; <strong>Floating Mode</strong>.
+  </li>
+
+
+  <li>To dock a standalone window, grab it and move it to the Android Monitor area. Or, select
+  <img src="{@docRoot}images/tools/am-igear.png" style="vertical-align:sub;margin:0;height:17px"
+  alt="Gear menu icon"> &gt; <strong>Floating Mode</strong> to deselect it.
+  </li>
+
+
+  <li>To combine two monitor displays together, grab a tab and move it onto another monitor.
+  </li>
+
+  <li>To hide a monitor, click the <img src="{@docRoot}images/tools/am-ihide.png" style="vertical-align:sub;margin:0;height:17px" alt="Hide icon" /> icon. To make it reappear, click the icon of
+  the monitor on the far right of the row of tabs.
+  </li>
+</ul>
+
+<h2 id="removing">
+  Removing an App from a Device
+</h2>
+
+<p>
+  To remove an app from a device you use for development, use the normal uninstall procedure on the
+  device.
+</p>
+
+<p>
+  If you run a new version of an app from Android Studio that’s been already installed on a
+  hardware device, the device displays an <em>Application Installation Failed</em> dialog. Click
+  <strong>OK</strong> to install the new version of the app.
+</p>
+
+
+
+
diff --git a/docs/html/tools/help/android.jd b/docs/html/tools/help/android.jd
old mode 100644
new mode 100755
index 0d7d2aa..fa359e9
--- a/docs/html/tools/help/android.jd
+++ b/docs/html/tools/help/android.jd
@@ -17,7 +17,7 @@
     "{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>.</li>
   </ul>
 
-<p>If you are using Android Studio or Eclipse, the <code>android</code> tool's features are
+<p>If you are using Android Studio, the <code>android</code> tool's features are
 integrated into the IDE, so you should not need to use this tool directly. </p>
 
   <p class="note"><strong>Note:</strong> The documentation of options below is not exhaustive
diff --git a/docs/html/tools/help/app-link-indexing.jd b/docs/html/tools/help/app-link-indexing.jd
new file mode 100644
index 0000000..611373a
--- /dev/null
+++ b/docs/html/tools/help/app-link-indexing.jd
@@ -0,0 +1,514 @@
+page.title=Deep Link and App Indexing API Support in Android Studio
+parent.title=Tools
+parent.link=index.html
+page.tags=app indexing
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>In this document</h2>
+<ol>
+  <li><a href="#workflow">Typical Workflow</a></li>
+  <li><a href="#intent">Adding an Intent Filter for Deep Linking and Google Search</a></li>
+  <li><a href="#indexing">Adding App Indexing API Skeleton Code to an Activity</a></li>
+  <li><a href="#testintent">Testing a Deep Link</a></li>
+  <li><a href="#testindexing">Viewing App Indexing API Messages in the logcat Monitor</a></li>
+  <li><a href="#lint">Configuring Lint</a></li>
+</ol>
+
+ <h2>See also</h2>
+  <ol>
+    <li><a href="https://developers.google.com/app-indexing/introduction"
+      class="external-link">App Indexing</a></li>
+    <li><a href="{@docRoot}training/app-indexing/index.html"
+      >Making Your App Content Searchable by Google</a></li>
+    <li><a href="{@docRoot}training/app-links/index.html">Handling App Links</a></li>
+    <li><a href="{@docRoot}tools/debugging/improving-w-lint.html"
+      >Improving Your Code with lint</a></li>
+    <li><a href="{@docRoot}tools/help/am-logcat.html">logcat Monitor</a></li>
+    <li><a href="https://www.google.com/webmasters/tools/home"
+      class="external-link">Google Search Console</a></li>
+    <li><a href="https://developers.google.com/android/guides/overview"
+      class="external-link">Google Play Services</a></li>
+  </ol>
+
+  <h2>Video</h2>
+  <ol>
+    <li><a href="https://www.youtube.com/watch?v=aISUYHTkTOU"
+      class="external-link">DevBytes: App Indexing</a></li>
+  </ol>
+
+  <h2>Dependencies and prerequisites</h2>
+  <ul>
+    <li>Android 2.3 (API level 9) or higher</li>
+    <li>Android Studio 1.5 or higher</li>
+    <li>Google Play Services 8.1.0 or higher</li>
+  </ul>
+
+</div>
+</div>
+
+<p>Android Studio helps you add deep links, app indexing, and search functionality to your apps.
+  These features can help to drive more traffic to your
+  app, discover which app content is used most, make it easier for users to find content in an
+  installed app, and attract new users.</p>
+
+<h2 id="workflow">Typical Workflow</h2>
+
+<p>To use Android Studio to add deep link, app indexing, and search features to your app, follow
+  these basic steps:</p>
+
+<ol>
+<li>Add intent filters and code to handle incoming intents.</li>
+<li>Associate a website with your app.</li>
+<li>Add App Indexing API code.</li>
+</ol>
+
+<p>Intent filters and the App Indexing API are ways to implement deep links and app indexing, but
+  there are other possible implementations as well. See
+  <a href="https://developers.google.com/app-indexing/reference/deeplinks"
+  class="external-link">Alternate Android Indexing Methods</a>
+  for more information.</p>
+
+<h3 id="aboutintent">Intent filters for deep links</h3>
+
+<p>Android Studio can create a basic intent filter in your manifest that you can customize to
+  define deep link URLs for your app. You can then write Java code in an activity to handle the
+  intent. This implementation lets users directly open the specified app activity by
+  clicking a deep link. Users can see the deep links in google.com in a browser, in the
+  Google Search app, and in Google Now on Tap. </p>
+
+<h3 id="aboutassociation">Website association with deep links</h3>
+
+<p>After setting up deep links for your app, you can associate your website with your app by using
+  the Google Search Console and Google Play Developer Console. Afterward, Google indexes your app
+  for URLs defined in
+  your intent filters and begins to include them in search results. In addition, you can optionally
+  exclude app content from Google Search. After you associate a website with your app, features
+  such as Now on Tap and enhanced search result display (like including your app icon)
+  become available.</p>
+
+<p>As an alternative to associating your app with a website,
+  for Android 6.0 (API level 23) and higher, you can add
+  <a href="{@docRoot}training/app-links/index.html"
+  >default handlers and verification for deep links</a>
+  instead.</p>
+
+<p>Chrome displaying google.com serves search results with deep links that are accessible to both
+  signed-in users and those who aren't. Google Search app users must be signed in to see deep links
+  in their search results. </p>
+
+<h3 id="aboutapi">App Indexing API code in activities</h3>
+
+<p>Next, if you want to support additional search features, such as autocompletions, you can
+  add App Indexing API code to your app. Android Studio can create skeleton code in an activity
+  that you can then customize to support app indexing. The App Indexing API allows app indexing
+  even if
+  <a href="https://developers.google.com/app-indexing/reference/deeplinks#allow-access-by-googlebot-optional"
+  class="external-link">Googlebot</a>
+  can’t get content from your app.</p>
+
+<h3 id="abouttest">Deep link and App Indexing API testing</h3>
+
+<p>Android Studio helps you test your code with the following features:</p>
+
+<ul>
+<li>Deep link testing helps you verify that a specified deep link can launch an app. </li>
+<li>The logcat Monitor helps you test App Indexing API calls in an activity. </li>
+<li>The Android Lint tool has warnings for certain issues involving deep links and the App Indexing
+  API. These warnings and errors appear in the Code Editor and in Lint inspection results.</li>
+</ul>
+
+<p>The details for implementing deep links and app indexing are described next.
+
+
+<h2 id="intent">Adding an Intent Filter for Deep Linking and Google Search</h2>
+
+<p>To use Android Studio features to add an intent filter defining a deep link, follow these
+  steps:</p>
+
+<ol>
+<li>In the <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>
+  of the <em>Project</em> window, double-click the <code>AndroidManifest.xml</code> file to open it
+  in the Code Editor.</li>
+<li>Insert an intent filter in one of the following ways:</li>
+<ul>
+<li>In an <code>&lt;activity&gt;</code> element, click in the left column so the light bulb
+  <img src="{@docRoot}images/tools/ai-ilightbulb.png"
+    style="vertical-align:sub;margin:0;height:17px" alt="Lightbulb icon" /> appears. Click
+  <img src="{@docRoot}images/tools/ai-ilightbulb.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Lightbulb icon" />
+  and select <strong>Create Deep Link</strong>.</li>
+<li>Right-click in an <code>&lt;activity&gt;</code> element and select <strong>Generate</strong>
+  &gt; <strong>Deep Link</strong>.</li>
+<li>Place your cursor in an activity, and then select <strong>Code</strong> &gt;
+  <strong>Generate</strong> &gt; <strong>Deep Link</strong>.</li>
+</ul>
+
+<p>The Code Editor adds skeleton code using the
+  <a href="https://www.jetbrains.com/idea/help/intention-actions.html"
+  class="external-link">intention action</a> and
+  <a href="https://www.jetbrains.com/idea/help/generating-code.html"
+  class="external-link">generate code</a> mechanisms.</p>
+
+<p>The Code Editor adds an intent filter similar to the following:</p>
+<pre>
+&lt;!-- ATTENTION: This intent was auto-generated. Follow instructions at
+ https://g.co/AppIndexing/AndroidStudio to publish your Android app deep links. --&gt;
+&lt;intent-filter&gt;
+   &lt;action android:name="android.intent.action.VIEW" /&gt;
+
+   &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+   &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+   &lt;!-- ATTENTION: This data URL was auto-generated.
+     We recommend that you use the HTTP scheme.
+     TODO: Change the host or pathPrefix as necessary. --&gt;
+   &lt;data
+       android:host="www.example.com"
+       android:pathPrefix="/gizmos"
+       android:scheme="http" /&gt;
+&lt;/intent-filter&gt;
+</pre>
+
+<li><a href="{@docRoot}training/app-indexing/deep-linking.html#adding-filters">Modify the
+  <code>&lt;data&gt;</code> element</a>
+  and optionally the <code>&lt;category&gt;</code> element, as needed.</li>
+
+
+<p>We recommend that you define a <code>&lt;data&gt;</code> element that supports URLs that you’ll
+  add in the future. In the previous sample code, for example, Google will index any URLs starting
+  with <code>www.example.com/gizmos</code>. Also, remember to
+  include a deep link for your app home screen so it’s included in search results. </p>
+
+<p>Deep link URLs can be the same as the URLs of the comparable pages on your website.</p>
+
+<li>In the corresponding activity,
+  <a href="{@docRoot}training/app-indexing/deep-linking.html#handling-intents">add Java code</a>
+  to read data from the intent filter and direct the app to respond accordingly. </li>
+<li><a href="#testintent">Test your deep link</a>.</li>
+
+</ol>
+
+<p>To support Google Search for your deep links, follow these steps:</p>
+<ol>
+<li><a href="https://developers.google.com/app-indexing/android/app#declare-a-website-association"
+  class="external-link">Define an association</a>
+  between your app and your website.</li>
+<p>Alternatively, for Android 6.0 (API level 23) and higher, add
+  <a href="{@docRoot}training/app-links/index.html">link default handling and verification</a>.</p>
+<li>Optionally
+  <a href="https://developers.google.com/app-indexing/android/app#create-the-noindexxml-file"
+  class="external-link">exclude app URLs</a>
+  from the Google index.</li>
+<li>Optionally <a href="#indexing">add App Indexing API code</a> to support additional search
+  features.</li>
+</ol>
+
+
+<p>To test and debug your links, you can use the following Android Studio features:</p>
+<ul>
+<li><a href="#testintent">Launch your deep link</a> in Android Studio to test that it works.</li>
+<li><a href="#lint">Enable the following Android Lint categories</a>:</li>
+<ul>
+<li><strong>Missing Support for Google App Indexing</strong></li>
+<li><strong>Incorrect Usage of App Link for Google App Indexing</strong></li>
+</ul>
+</ul>
+
+<p>In addition, you can
+  <a href="https://developers.google.com/app-indexing/android/test#preview-your-apk-on-search-console"
+  class="external-link">preview your APK in the Google Search Console</a>
+  to test your deep links, whether the app is associated with a website or not. </p>
+
+
+
+<h2 id="indexing">Adding App Indexing API Skeleton Code to an Activity</h2>
+
+<p>After adding deep links, you can add App Indexing API code to an activity to support additional
+  search features.  </p>
+
+<p>To add App Indexing API code to an activity, follow these steps:</p>
+<ol>
+<li>In <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>
+  in the <em>Project</em> window, double-click the activity Java file to open it in the
+  Code Editor.</li>
+<li>Insert skeleton code in one of the following ways:</li>
+<ul>
+<li>In an activity definition, click in the Java code so the light bulb
+  <img src="{@docRoot}images/tools/ai-ilightbulb.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Lightbulb icon" /> appears.
+  Click <img src="{@docRoot}images/tools/ai-ilightbulb.png"
+  style="vertical-align:sub;margin:0;height:17px" alt="Lightbulb icon" />
+  and select <strong>Insert App Indexing API Code</strong>.</li>
+<li>Right-click in an activity definition and select <strong>Generate</strong> &gt;
+  <strong>App Indexing API Code</strong>.</li>
+<li>Place the cursor in an activity, and then select <strong>Code</strong> &gt;
+  <strong>Generate</strong> &gt;
+  <strong>App Indexing API Code</strong>.</li>
+</ul>
+
+
+<p>The Code Editor adds skeleton code using the
+  <a href="https://www.jetbrains.com/idea/help/intention-actions.html"
+  class="external-link">intention action</a> and
+  <a href="https://www.jetbrains.com/idea/help/generating-code.html"
+  class="external-link">generate code</a>
+  mechanisms.</p>
+
+<p>If you don’t see the <strong>App Indexing API Code</strong> menu item, make sure your cursor is
+  within an activity, and check your code for App Indexing API methods. The Code Editor can insert
+  skeleton Java code into an activity in the following circumstances:</p>
+
+<ul>
+<li>The activity doesn’t have an <code>onStart()</code> method, or the <code>onStart()</code>
+  method doesn’t contain an <code>AppIndexApi.start()</code> or <code>AppIndexApi.view()</code>
+  call.</li>
+<li>The activity doesn’t have an <code>onStop()</code> method, or the <code>onStop()</code>
+  method doesn’t contain an <code>AppIndexApi.end()</code> or <code>AppIndexApi.viewEnd()</code>
+  call.</li>
+</ul>
+
+
+<p>The Code Editor adds Java code similar to the following:</p>
+<pre>
+   /**
+    * ATTENTION: This was auto-generated to implement the App Indexing API.
+    * See https://g.co/AppIndexing/AndroidStudio for more information.
+    */
+   private GoogleApiClient client;
+
+       // ATTENTION: This was auto-generated to implement the App Indexing API.
+       // See https://g.co/AppIndexing/AndroidStudio for more information.
+       client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
+   }
+
+
+   &#64;Override
+   public void onStart() {
+       super.onStart();
+
+       // ATTENTION: This was auto-generated to implement the App Indexing API.
+       // See https://g.co/AppIndexing/AndroidStudio for more information.
+       client.connect();
+       Action viewAction = Action.newAction(
+               Action.TYPE_VIEW, // TODO: choose an action type.
+               "Main Page", // TODO: Define a title for the content shown.
+               // TODO: If you have web page content that matches
+               // this app activity's content,
+               // make sure this auto-generated web page URL is correct.
+               // Otherwise, set the URL to null.
+               Uri.parse("http://host/path"),
+               // TODO: Make sure this auto-generated app deep link URI is correct.
+               Uri.parse("android-app://com.example/http/host/path")
+       );
+       AppIndex.AppIndexApi.start(client, viewAction);
+   }
+
+   &#64;Override
+   public void onStop() {
+       super.onStop();
+
+       // ATTENTION: This was auto-generated to implement the App Indexing API.
+       // See https://g.co/AppIndexing/AndroidStudio for more information.
+       Action viewAction = Action.newAction(
+               Action.TYPE_VIEW, // TODO: choose an action type.
+               "Main Page", // TODO: Define a title for the content shown.
+               // TODO: If you have web page content that matches
+               // this app activity's content,
+               // make sure this auto-generated web page URL is correct.
+               // Otherwise, set the URL to null.
+               Uri.parse("http://host/path"),
+               // TODO: Make sure this auto-generated app deep link URI is correct.
+               Uri.parse("android-app://com.example/http/host/path")
+       );
+       AppIndex.AppIndexApi.end(client, viewAction);
+       client.disconnect();
+   }
+}
+</pre>
+
+<p>For more information about the App Indexing API methods, see
+  <a href="https://developers.google.com/app-indexing/reference/package-summary"
+  class="external-link">Android API for App Indexing</a>.
+  For information about the action types, see the
+  <a href="https://developers.google.com/android/reference/com/google/android/gms/appindexing/Action#constant-summary"
+  class="external-link">Action Class Constant Summary</a>.
+</p>
+
+<p>If your app isn’t already configured for the Google Play Services App Indexing API, the Code
+  Editor also modifies your <code>build.gradle</code> and <code>AndroidManifest.xml</code> files
+  to include it. If your app already depends on it but the version is lower than 8.1.0, your app
+  is upgraded to version 8.1.0. For more information and to correct any issues, see
+  <a href="https://developers.google.com/app-indexing/android/publish#add-google-play-services"
+  class="external-link">Add Google Play Services</a>
+  and <a href="https://developers.google.com/android/guides/setup"
+  class="external-link">Setting Up Google Play Services</a>.
+</p>
+
+<li>Customize the skeleton code, as needed.</li>
+
+<p>Pay attention to the comments, which help you find areas that need work, such as setting the
+  title and URLs. For more information, see
+  <a href="https://developers.google.com/app-indexing/android/publish"
+  class="external-link">Add the App Indexing API</a>.
+</p>
+<li><a href="#testindexing">Verify that your app indexing code is working</a> by using
+  the logcat Monitor.</li>
+</ol>
+
+
+
+<p>To test and debug your App Indexing API code, you can use the following Android Studio
+  features:</p>
+<ul>
+<li><a href="#testindexing">Examine logcat Monitor Messages</a>.</li>
+<li><a href="#lint">Enable the following Android Lint category</a>:
+  <strong>Missing Support for Google App Indexing API</strong></li>
+</ul>
+
+<p>In addition, you can
+  <a href="https://developers.google.com/app-indexing/android/test#preview-your-apk-on-search-console"
+  class="external-link">preview your APK in the Google Search Console</a>.</p>
+
+
+<h2 id="testintent">Testing a Deep Link</h2>
+
+<p>When you run your app from Android Studio, you can specify a deep link to launch so you can
+  test it.</p>
+
+<p>To launch a deep link from Android Studio, follow these steps:</p>
+<ol>
+<li>In Android Studio, open your project in
+  <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>.</li>
+<li>After opening a project, select <strong>Run</strong> &gt; <strong>Edit Configurations</strong>.
+</li>
+<li>In the <em>Run/Debug Configurations</em> dialog, beneath <strong>Android Application,</strong>
+  select the module you want to test.</li>
+<li>Select the <strong>General</strong> tab. </li>
+<li>In the <strong>Launch</strong> field, select <strong>Deep Link</strong>. </li>
+<li>In the <strong>Deep Link</strong> field, click <strong>…</strong> to select from a list of
+  defined deep links.</li>
+
+<p>Or type the URL you want to test, for example, <code>http://example.com/gizmos</code>. </p>
+<li>Click <strong>OK</strong>.</li>
+<li>Select <strong>Run</strong> &gt; <strong>Run app</strong> or <strong>Debug app</strong>.</li>
+<li>If the <em>Device Chooser</em> dialog appears, select a connected device or an
+  emulator, and click <strong>OK</strong>.</li>
+
+<p>If the link is successful, the app launches in the device or emulator, and displays the app at
+  the specified activity. Otherwise, an error message appears in the <em>Run</em> window.</p>
+</ol>
+
+<p>For more information about creating run configurations at the project, default, and module
+  levels, see
+  <a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android Studio</a>.
+</p>
+
+<p>You can view App Indexing API log messages while the app is running, as described next.</p>
+
+
+<h2 id="testindexing">Viewing App Indexing API Messages in the logcat Monitor</h2>
+
+<p>The logcat Monitor can display app indexing log messages to determine if your App Indexing API
+  code is pushing the correct data to the cloud. For example, you can check the app title and the
+  URL. The logcat Monitor is part of Android Monitor in Android Studio. </p>
+
+<p>Follow these steps:</p>
+<ol>
+<li>Run your app in Android Studio so it <a href="#testintent">launches a deep link</a>.</li>
+<li><a href="{@docRoot}tools/help/android-monitor.html#displaying">Display Android Monitor</a>
+  and click the <strong>logcat</strong> tab.</li>
+<li><a href="{@docRoot}tools/help/am-logcat.html#level">Set the log level</a> to
+  <strong>Verbose</strong>.</li>
+<li>In the filter menu, select <strong>No Filters</strong>.</li>
+<li><a href="{@docRoot}tools/help/am-logcat.html#searching">Search the log</a> for the string
+  "appindex".</li>
+
+<p>App indexing log messages should appear. If they don’t, check the following items:</p>
+<ul>
+<li>Is Google Play Services installed on the device or emulator? You can check the settings on
+  the device. </li>
+<li>Is the Google Play Services version on the device or emulator lower than the version specified
+  in the <code>build.gradle</code> file? If so, it might be out-of-date and should be upgraded to
+  a higher version.  </li>
+</ul>
+
+<p>For more information, see the
+  <a href="https://play.google.com/store/apps/details?id=com.google.android.gms&hl=en"
+  class="external-link">Google Play Services Download</a>
+  page and <a href="https://developers.google.com/android/guides/setup"
+  class="external-link">Setting Up Google Play Services</a>.
+</p>
+<li>Visit app pages that trigger App Indexing API calls. </li>
+</ol>
+
+
+<h2 id="lint">Configuring Lint</h2>
+
+<p>You can use the Android Studio built-in Lint tool to check whether you have valid deep links
+  defined in the manifest and have implemented the App Indexing API correctly in activities.</p>
+
+<p>You can view deep link and app indexing warnings and errors in two ways: </p>
+<ul>
+<li>As pop-up text in the Code Editor. When Lint finds a problem, it highlights the problematic
+  code in yellow, or underlines the code in red for more serious issues.</li>
+<li>In the Lint <em>Inspection Results</em> window after you select <strong>Analyze</strong> &gt;
+  <strong>Inspect Code</strong>.</li>
+</ul>
+
+
+
+<p>To set default Lint checks for deep links and the App Indexing API, follow these steps:</p>
+<ol>
+<li>In Android Studio, open your project in
+  <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>.
+</li>
+<li>Select <strong>File</strong> &gt; <strong>Other Settings</strong> &gt;
+  <strong>Default Settings</strong>.</li>
+<li>In the <em>Default Preferences</em> dialog, select <strong>Editor</strong> &gt;
+  <strong>Inspections</strong>. </li>
+<li>In the <strong>Profile</strong> field, select <strong>Default</strong> or
+  <strong>Project Default</strong> to set the scope for Android Studio or just for this project,
+  respectively. </li>
+<li>Expand the <strong>Android Lint</strong> category and change the Lint settings as needed:</li>
+<ul>
+<li><strong>Missing Support for Google App Indexing</strong> - Reports a warning if the app hasn’t
+  implemented deep links, which are used by Google Search. This warning setting is enabled by
+  default.</li>
+<li><strong>Missing Support for Google App Indexing API</strong> - Reports if an app hasn’t
+  implemented the App Indexing API at all. This warning setting is disabled by default.</li>
+<li><strong>Incorrect Usage of App Link for Google App Indexing</strong> - Reports deep link
+  errors in manifest code. This error setting is enabled by default.</li>
+</ul>
+
+<p>For example, the following Lint warning appears for the first setting:</p>
+<p><img src="{@docRoot}images/tools/ai-lint.png" /></p>
+
+<li>Click <strong>OK</strong>.</li>
+</ol>
+
+
+
+<p>To produce a list of Lint checks displayed in the <em>Inspection Results</em> window,
+  follow these steps:</p>
+<ol>
+<li>In Android Studio, open your project in
+  <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>
+  and select a portion of your project that you want to test.</li>
+<li>Select <strong>Analyze</strong> &gt; <strong>Inspect Code</strong>.</li>
+<li>In the <em>Specify Inspection Scope </em>dialog, select the inspection scope and profile. </li>
+
+<p>The scope specifies the files you want to analyze, and the profile specifies the Lint checks
+  you’d like to perform.</p>
+<li>If you want to change the Lint settings, click <strong>…</strong>. In the <em>Inspections</em>
+  dialog, optionally click <strong>Manage</strong> to define a new profile, specify the Lint
+  settings you want, and then click <strong>OK</strong>.</li>
+<p>In the <em>Inspections</em>  dialog, you can search for the string "app indexing"
+to find the deep link and App Indexing API Lint checks. Note that changing Lint settings for a
+profile in the <em>Inspections</em> dialog doesn’t change the default settings, as described in
+the previous procedure. It does change the settings for profiles displayed in the
+<em>Inspections</em> dialog, however.</p>
+<li>Click <strong>OK</strong>.</li>
+<p>The results appear in the <em>Inspection Results</em> window.</p>
+
+</ol>
diff --git a/docs/html/tools/help/avd-manager.jd b/docs/html/tools/help/avd-manager.jd
old mode 100644
new mode 100755
index 20f6253..b3dcad5
--- a/docs/html/tools/help/avd-manager.jd
+++ b/docs/html/tools/help/avd-manager.jd
@@ -8,9 +8,6 @@
 
 <p>You can launch the AVD Manager in one of the following ways:</p>
 <ul>
-  <li>In Eclipse: select <strong>Window &gt; Android Virtual Device Manager</strong>, or click
-  the AVD Manager icon in the toolbar.</li>
-
   <li>In Android Studio: select <strong>Tools &gt; Android &gt; AVD Manager</strong>, or click
   the AVD Manager icon in the toolbar.</li>
 
diff --git a/docs/html/tools/help/gltracer.jd b/docs/html/tools/help/gltracer.jd
old mode 100644
new mode 100755
index 700ee39..866bdc9
--- a/docs/html/tools/help/gltracer.jd
+++ b/docs/html/tools/help/gltracer.jd
@@ -26,17 +26,6 @@
 
 <h2 id="running">Running Tracer</h2>
 
-<p>Tracer can be run as part of the Eclipse Android Development Tools (ADT) plugin or as part of the
-Device Monitor tool.</p>
-
-<p>To run Tracer in Eclipse:</p>
-
-<ol>
-  <li>Start Eclipse and open a workspace that contains an Android project.</li>
-  <li>Activate the perspective for Tracer by choosing <strong>Window > Open Perspective >
-Other...</strong></li>
-  <li>Select <strong>Tracer for OpenGL ES</strong> and click <strong>OK</strong>.</li>
-</ol>
 
 <p>To run Tracer in Device Monitor:</p>
 
@@ -64,7 +53,7 @@
 <ol>
   <li>Connect the Android device using a USB cable and make sure it is enabled for debugging. For
 more information, see <a href="{@docRoot}tools/device.html">Using Hardware Devices</a>.</li>
-  <li>In Eclipse or Device Monitor, activate the <strong>Tracer for OpenGL ES</strong>
+  <li>In the Device Monitor, activate the <strong>Tracer for OpenGL ES</strong>
 perspective.</li>
   <li>On the toolbar, click the trace capture button (<img
 src="{@docRoot}images/gltracer/icon-capture.png">).</li>
@@ -94,10 +83,10 @@
 <p>To review a captured trace:</p>
 
 <ol>
-  <li>In Eclipse or Device Monitor, activate the <strong>Tracer for OpenGL ES</strong>
+  <li>In Device Monitor, activate the <strong>Tracer for OpenGL ES</strong>
 perspective.</li>
   <li>On the toolbar, click the trace load button (<img
 src="{@docRoot}images/gltracer/icon-load-trace.png">).</li>
   <li>After loading a trace, select a frame and review the OpenGL ES calls. Drawing commands are
 highlighted in blue.</li>
-</ol>
\ No newline at end of file
+</ol>
diff --git a/docs/html/tools/help/image-asset-studio.jd b/docs/html/tools/help/image-asset-studio.jd
new file mode 100644
index 0000000..818b744
--- /dev/null
+++ b/docs/html/tools/help/image-asset-studio.jd
@@ -0,0 +1,200 @@
+page.title=Image Asset Studio
+parent.title=Tools
+parent.link=index.html
+page.tags=image asset
+@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>In this document</h2>
+<ol>
+  <li><a href="#access">Accessing Image Asset Studio</a></li>
+  <li><a href="#creating">Creating Icons</a></li>
+  <li><a href="#customizing">Customizing Icons</a></li>
+  <li><a href="#saving">Saving Icons</a></li>
+  <li><a href="#configure">Configuring Build Properties</a></li>
+  <li><a href="#referincode">Referring to an Image Resource in Code</a></li>
+ </ol>
+</div>
+</div>
+
+
+<p>Image Asset Studio helps you to generate custom icons for your Android applications from existing
+ image, clipart, or text-string resources. It generates a set of icons at the appropriate resolution
+ for each <a href ="{@docRoot}guide/practices/screens_support.html#range"> generalized screen
+ density</a> that your app supports.
+  The newly generated icons are placed in density-specific folders (for example, <code>mipmap-mdpi/
+  </code> or <code>drawable-xxxhdpi/</code>), which
+ reside in the application’s <code>res/</code> folder. At runtime, Android uses the appropriate
+ resource based on the screen density of the device your application is running on. </p>
+
+<p>Image Asset Studio generates the following asset types:</p>
+<ul>
+<li>Launcher icons.</li>
+<li>Action bar and tab icons.</li>
+<li>Notification icons.</li>
+</ul>
+
+<p>This guide shows how to generate these assets using Image Asset Studio.</p>
+
+<h2 id="access">Accessing Image Asset Studio</h2>
+<p>Follow these steps to access Image Asset Studio:</p>
+<ol>
+<li>In Android Studio, open an Android app project.</li>
+<li>In the <a href= "{@docRoot}sdk/installing/create-project.html#enable-view">project-view-pane</a>
+ on the left side of the screen, select <strong>Android</strong> from the dropdown menu. The Android
+  project view appears in the pane.
+</li>
+<li>Right-click the <code>res/</code>folder and select <strong>New</strong> &gt; <strong>Image
+Asset</strong>. The Image Asset Studio window appears.</li>
+</ol>
+
+
+<h2 id="creating">Creating Icons</h2>
+<p>You can generate icons from <a href="#launch_image">image</a>, <a href="#launch_clipart">clipart
+</a>, or <a href="#launch_text">text-string</a> resources. This section explains how to work with
+each of these resources.
+</p>
+
+
+<h3 id="launch_image">From an image resource</h3>
+<ol>
+<li>Open the <em>Asset Type</em> dropdown menu and select an icon type.</li>
+<li>From the available <em>Foreground</em> options, select <strong>Image</strong>.</li>
+<li>Specify the asset to use by entering a filename in the <em>Image file</em> field or by
+ navigating to and selecting a file via the file browser. Image Asset Studio supports the following
+ file types, in descending order of desirability: PNG, JPG, and GIF.
+ <p>The icon to be generated appears in the <em>Preview</em> pane, displayed at sizes corresponding
+ to different screen densities.</p>
+
+<p>The rest of the settings on this screen are optional.
+To learn how to customize your icons using these options,
+ see <a href="#customizing">Customizing Icons</a>.</p></li>
+<li><a href="#saving">Save your icons</a> to the project folder.
+</li>
+</ol>
+
+
+<h3 id="launch_clipart">From a clipart resource</h3>
+<ol>
+<li>Open the <em>Asset Type</em> dropdown menu and select an icon type.</li>
+<li>From the available <em>Foreground</em> options, select <strong>Clipart</strong>. The <strong>
+Choose</strong> button appears.</li>
+<li>Click <strong>Choose</strong>. A window containing clipart resources appears.</li>
+<li> Select a clipart resource.
+<p>The icon to be generated appears in the <em>Preview</em> pane, displayed at sizes corresponding
+to different screen densities.</p>
+<p>The rest of the settings on this screen are optional.
+ To learn how to customize your icons using these options,
+ see <a href="#customizing">Customizing Icons</a>.</p></li>
+<li><a href="#saving">Save your icons</a> to the project folder.
+</li>
+</ol>
+
+
+
+<h3 id="launch_text"> From a text-string resource</h3>
+<ol>
+<li>Open the <em>Asset Type</em> dropdown menu and select an icon type.</li>
+<li>From the available <em>Foreground </em> options, select <strong>Text</strong>.</li>
+<li>Enter into the <em>Text</em> field the text you want to turn into an icon.
+<p>The icon to be generated appears in the <em> Preview</em> pane, displayed at sizes corresponding
+to different screen densities.</p></li>
+<li>To change the font, select a font from the <em>Font</em> dropdown menu.
+<p>The rest of the settings on this screen are optional.
+To learn how to customize your icons using these options,
+see <a href="#customizing">Customizing Icons</a>.</p></li>
+<li><a href="#saving">Save your icons</a> to the project folder.
+</li>
+</ol>
+
+
+<h2 id="customizing">Customizing Icons</h2>
+<p>Image Asset Studio lets you customize various visual effects for your icons. The following options
+are of particular note.</p>
+
+<ul>
+<li><em>Trim surrounding blank space</em>: This option allows you to adjust the margin between the
+icon graphic and border.
+<figure id="">
+  <img src="{@docRoot}images/tools/trim.png"
+    width="461">
+    <figcaption><strong>Figure 1</strong>: An icon before and after trimming.</figcaption>
+</figure>
+<li><em>Additional Padding</em>: This option allows you to adjust the icon's padding on all four
+sides. Use the slider to select a value between 0 and 100 pixels. For example, for a 100px X 100px
+image with padding of 25px, the resulting image is 150px X 150px.</li>
+ <li><em>Theme</em>: This option allows you to set a theme for your action bar and tab icons.
+ You can tint icons using the HOLO_DARK or HOLO_LIGHT theme or create
+  a custom theme using the color palette.</li>
+ <li><em>Resource name</em>: This option allows you to specify a resource name other than the
+ default one. If an asset with the specified resource name already exists, Image Asset Studio warns
+  you that it is going to overwrite the existing asset with this one.</li></ul>
+
+
+<h2 id="saving">Saving Icons</h2>
+ <p>This section explains how to save your icons to the <code>res/</code> folder. Do so by following
+  these steps:</p>
+ <ol>
+ <li>From the initial screen that appeared when you opened Image Asset Studio, click
+ <strong>Next</strong>. Image Asset Studio opens a new window.</li>
+ <li>Confirm the target module and resource directory settings for the icon.
+ If you don't want to use the default target module or resource directory, you can
+ <a href="#configure">enter your own values</a> for them.
+ </li>
+ <li>Click <strong>Finish</strong>. The Image Asset Studio generates new icon files, in PNG format,
+ according to the options you have chosen.
+ </li>
+ </ol>
+
+ <p class="note"><strong>Note:</strong> Launcher icon files reside in a different location from that
+  of other icons. They are located in the <code>mipmap/</code> folder. All other icon files reside
+  in the <code>drawable/</code> folder of your project.</p>
+
+
+<h2 id="configure">Configuring Build Properties</h2>
+<p>To change the module and resource directory, follow these steps:</p>
+<ol>
+<li>In the <em>Target Module</em> field, select a module to add the resource to.
+For more information,
+see <a href="{@docRoot}sdk/installing/create-project.html#CreatingAModule">
+Creating an Android Module</a>.
+ </li>
+<li>In the <em>Res Directory</em> field, select an option for where to place the image
+ asset:
+ <ul>
+  <li><code>src/main/res</code>: This source set applies to all build variants, including debug
+   and release.</li>
+  <li><code>src/debug/res</code>, <code> src/release/res</code>: These source sets override the main
+   source set and apply to one version of a build. The debug source set is for debugging only.
+   </li>
+   <li>User-defined: To define your own source set, select <strong>File</strong> &gt; <strong>Project
+   Structure</strong> &gt; <strong>app</strong>  &gt; <strong>Build Types</strong>.
+   For example, you could define a beta source set and create a version of an icon that includes the
+    text "BETA” in the bottom right corner. For more information, see
+    <a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants">
+    Work with build variants</a>.</li>
+  </ul>
+</ol>
+
+
+
+
+<h2 id="referincode">Referring to an Image Resource in Code</h2>
+
+<p>After you have an image resource in the <code>res/</code>directory of your project, you can
+ reference it from your Java code or your XML layout using its
+ <a href="{@docRoot}guide/topics/resources/accessing-resources.html#ResourcesFromCode">
+ resource ID</a>. </p>
+
+<p> For example, the following XML references the <code>ic_launcher icon</code> in the
+<code>mipmap/</code> folder.</p>
+<pre>
+&lt;application android:name="ApplicationTitle"
+    android:label="&#64;string/app_label"
+    android:icon="&#64;mipmap/ic_launcher" &gt;</pre>
+
+<p>The following Java code sets an
+<a href="{@docRoot}reference/android/widget/ImageView.html">ImageView</a> to use
+ the <code>drawable/myimage.png</code> resource:</p>
+<pre>ImageView imageView = (ImageView) findViewById(R.id.myimageview);
+imageView.setImageResource(R.drawable.myimage);</pre>
diff --git a/docs/html/tools/help/index.jd b/docs/html/tools/help/index.jd
old mode 100644
new mode 100755
index 53247d1..411f908
--- a/docs/html/tools/help/index.jd
+++ b/docs/html/tools/help/index.jd
@@ -43,6 +43,7 @@
   <dt><a href="{@docRoot}tools/help/android.html">android</a></dt>
     <dd>Lets you manage AVDs, projects, and the installed components of the SDK.</dd>
 
+
   <dt><a href="{@docRoot}tools/help/hierarchy-viewer.html">Hierarchy Viewer (hierarchyviewer)</a></dt>
     <dd>Provides a visual representation of the layout's View hierarchy with performance information
         for each node in the layout, and a magnified view of the display to closely examine the
@@ -58,6 +59,7 @@
   <dt><a href="{@docRoot}tools/help/sqlite3.html">sqlite3</a></dt>
     <dd>Lets you access the SQLite data files created and used by Android applications.</dd>
 
+
 </dl>
 
 
@@ -65,6 +67,10 @@
 <h3 id="tools-debugging">Debugging Tools</h3>
 <dl>
 
+  <dt><a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a></dt>
+    <dd>Android Monitor is integrated into Android Studio and provides logcat, memory, CPU, GPU, and
+      network monitors for app debugging and analysis.</dd>
+
   <dt><a href="{@docRoot}tools/help/adb.html">adb</a></dt>
     <dd>Android Debug Bridge (adb) is a versatile command line tool that lets you communicate with
         an emulator instance or connected Android-powered device. It also provides access to the
@@ -73,9 +79,8 @@
   <dt><a href="{@docRoot}tools/help/shell.html">ADB Shell Commands</a></dt>
     <dd>Learn the commands available for advanced command-line operations.</dd>
 
-  <dt><a href="{@docRoot}tools/debugging/ddms.html">Dalvik Debug Monitor
-Server (ddms)</a></dt>
-    <dd>Lets you debug Android applications.</dd>
+  <dt><a href="{@docRoot}tools/debugging/ddms.html">Dalvik Debug Monitor Server (ddms)</a></dt>
+    <dd>Lets you debug Android apps.</dd>
 
   <dt><a href="{@docRoot}tools/help/monitor.html">Device Monitor</a></dt>
     <dd>Android Device Monitor is a stand-alone tool that provides a graphical user interface for
@@ -100,6 +105,11 @@
   <dt><a href="{@docRoot}tools/help/traceview.html">traceview</a></dt>
     <dd>Provides a graphical viewer for execution logs saved by your application.</dd>
 
+  <dt><a href="{@docRoot}tools/help/gltracer.html">Tracer for OpenGL ES</a></dt>
+    <dd>Allows you to capture <a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL ES</a>
+      commands and frame-by-frame images to help you understand how your app is executing
+      graphics commands.</dd>
+
 </dl>
 
 
@@ -134,10 +144,6 @@
     <dd>A command line utility that lets you encode PNG images to the ETC1 compression standard and
     decode ETC1 compressed images back to PNG.</dd>
 
-  <dt><a href="{@docRoot}tools/help/gltracer.html">Tracer for OpenGL ES</a></dt>
-    <dd>Allows you to capture OpenGL ES commands and frame by frame images to help you understand
-    how your graphics commands are being executed.</dd>
-
 </dl>
 
 
@@ -153,8 +159,8 @@
 
 <p>The other platform tools, such as <a href="{@docRoot}guide/components/aidl.html">aidl</a>,
 <code>aapt</code>, <code>dexdump</code>, and <code>dx</code>, are typically called by the Android
-build tools or Android Development Tools (ADT), so you rarely need to invoke these tools directly.
-As a general rule, you should rely on the build tools or the ADT plugin to call them as needed.</p>
+build tools, so you rarely need to invoke these tools directly.
+As a general rule, you should rely on the build tools to call them as needed.</p>
 
 <p class="note"><strong>Note:</strong> The Android SDK provides additional shell tools that can
 be accessed through <code>adb</code>, such as <a href="{@docRoot}tools/help/bmgr.html">bmgr</a> and
diff --git a/docs/html/tools/help/layoutopt.jd b/docs/html/tools/help/layoutopt.jd
old mode 100644
new mode 100755
index 1a18326..1bc6c64
--- a/docs/html/tools/help/layoutopt.jd
+++ b/docs/html/tools/help/layoutopt.jd
@@ -4,13 +4,18 @@
 @jd:body
 
 
-<p class="note"><strong>Note: </strong>The Android <code>layoutopt</code> tool has been replaced by the {@code lint} tool beginning in ADT and SDK Tools revision 16. The {@code lint} tool reports UI layout performance issues in a similar way as <code>layoutopt</code>, and detects additional problems.</p>
-<p>For more information about using {@code lint}, see <a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a> and the <a  href="{@docRoot}tools/help/lint.html">lint reference documentation</a>.</p>
+<p class="note"><strong>Note: </strong>The Android <code>layoutopt</code> tool has been replaced 
+by the {@code lint} tool beginning in SDK Tools revision 16. The {@code lint} tool reports UI 
+layout performance issues in a similar way as <code>layoutopt</code>, and detects additional problems.</p>
+<p>For more information about using {@code lint}, see 
+<a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with lint</a> and the 
+<a href="{@docRoot}tools/help/lint.html">lint reference documentation</a>.</p>
 
 <p><code>layoutopt</code> is a command-line tool that helps you optimize the
 layouts and layout hierarchies of your applications.<p>
 
-<p>This document is a reference to the available command line options. For more information and sample
+<p>This document is a reference to the available command line options. For more information and 
+sample
 output of the tool, see <a
 href="{@docRoot}tools/debugging/debugging-ui.html#layoutopt">Optimizing layouts with
 layoutopt</a>.</p>
diff --git a/docs/html/tools/help/logcat.jd b/docs/html/tools/help/logcat.jd
index b30971e..1d75848 100644
--- a/docs/html/tools/help/logcat.jd
+++ b/docs/html/tools/help/logcat.jd
@@ -3,15 +3,25 @@
 parent.link=index.html
 @jd:body
 
+  <div id="qv-wrapper">
+    <div id="qv">
+      <h2>See also</h2>
+
+      <ol>
+          <li><a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a></li>
+      </ol>
+    </div>
+  </div>
+
   <p>The Android logging system provides a mechanism for collecting and viewing system debug
   output. Logs from various applications and portions of the system are collected in a series of
-  circular buffers, which then can be viewed and filtered by the <code>logcat</code> command. You can use 
+  circular buffers, which then can be viewed and filtered by the <code>logcat</code> command. You can use
   <code>logcat</code> from an ADB shell to view the log messages.</p>
 
   <p>For complete information about logcat options and filtering specifications, see
   <a href="{@docRoot}tools/debugging/debugging-log.html">Reading and Writing Logs</a>.</p>
 
-  <p>For more information on accessing <code>logcat</code> from DDMS, instead of the command line, see 
+  <p>For more information on accessing <code>logcat</code> from DDMS, instead of the command line, see
   <a href="{@docRoot}tools/debugging/ddms.html">Using DDMS</a>. </p>
 
   <h3>Syntax</h3>
@@ -34,7 +44,7 @@
 
   <h3>Options</h3>
   <p>The following table describes the command line options of <code>logcat</code>.</p>
-  
+
   <table>
     <tr>
       <th>Option</th>
@@ -46,7 +56,7 @@
       <td><code>-b&nbsp;&lt;buffer&gt;</code></td>
 
       <td>Loads an alternate log buffer for viewing, such as <code>events</code> or
-      <code>radio</code>. The <code>main</code> buffer is used by default. See <a href= 
+      <code>radio</code>. The <code>main</code> buffer is used by default. See <a href=
       "{@docRoot}tools/debugging/debugging-log.html#alternativeBuffers">Viewing Alternative Log Buffers</a>.</td>
     </tr>
 
diff --git a/docs/html/tools/help/monitor.jd b/docs/html/tools/help/monitor.jd
old mode 100644
new mode 100755
index 5f7b5ce..3541cc3
--- a/docs/html/tools/help/monitor.jd
+++ b/docs/html/tools/help/monitor.jd
@@ -8,6 +8,7 @@
       <ol>
         <li><a href="{@docRoot}tools/debugging/debugging-memory.html"
           >Investigating Your RAM Usage</a></li>
+          <li><a href="{@docRoot}tools/help/android-monitor.html">Android Monitor</a></li>
       </ol>
     </div>
   </div>
@@ -47,6 +48,4 @@
 <p>Start an Android emulator or connect an Android device via USB cable, and connect Device
 Monitor to the device by selecting it in the <strong>Devices</strong> window.</p>
 
-<p class="note"><strong>Note:</strong> Only one debugger can be connected to your device at a time.
-If you're using ADT, you may need to close the debugging tool before launching the Device Monitor
-in order for the device to be fully debuggable.</p>
+<p class="note"><strong>Note:</strong> Only one debugger can be connected to your device at a time.</p>
diff --git a/docs/html/tools/help/proguard.jd b/docs/html/tools/help/proguard.jd
old mode 100644
new mode 100755
index b5d84ed..e26aca0
--- a/docs/html/tools/help/proguard.jd
+++ b/docs/html/tools/help/proguard.jd
@@ -1,6 +1,7 @@
 page.title=ProGuard
 parent.title=Tools
 parent.link=index.html
+page.metaDescription=Use ProGuard to shrink, optimize, and obfuscate your code prior to release.
 @jd:body
 
  <div id="qv-wrapper">
@@ -117,76 +118,6 @@
   </pre>
 
 
-
-  <h2 id="enabling">Enabling ProGuard (Ant Builds)</h2>
-
-  <p>When you create an Android project, a <code>proguard.cfg</code> file is automatically
-  generated in the root directory of the project. This file defines how ProGuard optimizes and
-  obfuscates your code, so it is very important that you understand how to customize it for your
-  needs. The default configuration file only covers general cases, so you most likely have to edit
-  it for your own needs. See the following section about <a href="#configuring">Configuring
-  ProGuard</a> for information on customizing the ProGuard configuration file.</p>
-
-  <p>To enable ProGuard so that it runs as part of an Ant or Eclipse build, set the
-  <code>proguard.config</code> property in the <code>&lt;project_root&gt;/project.properties</code>
-  file. The path can be an absolute path or a path relative to the project's root.</p>
-
-  <p>If you left the <code>proguard.cfg</code> file in its default location (the project's root
-  directory), you can specify its location like this:</p>
-
-<pre class="no-pretty-print">
-proguard.config=proguard.cfg
-</pre>
-
-<p>
-You can also move the the file to anywhere you want, and specify the absolute path to it:
-</p>
-
-<pre class="no-pretty-print">
-proguard.config=/path/to/proguard.cfg
-</pre>
-
-  <p>When you build your application in release mode, either by running <code>ant release</code> or
-  by using the <em>Export Wizard</em> in Eclipse, the build system automatically checks to see if
-  the <code>proguard.config</code> property is set. If it is, ProGuard automatically processes
-  the application's bytecode before packaging everything into an <code>.apk</code> file. Building in debug mode
-  does not invoke ProGuard, because it makes debugging more cumbersome.</p>
-
-  <p>ProGuard outputs the following files after it runs:</p>
-
-  <dl>
-    <dt><code>dump.txt</code></dt>
-    <dd>Describes the internal structure of all the class files in the <code>.apk</code> file</dd>
-
-    <dt><code>mapping.txt</code></dt>
-    <dd>Lists the mapping between the original and obfuscated class, method, and field names. 
-    This file is important when you receive a bug report from a release build, because it 
-    translates the obfuscated stack trace back to the original class, method, and member names.
-    See <a href="#decoding">Decoding Obfuscated Stack Traces</a> for more information.</dd>
-
-    <dt><code>seeds.txt</code></dt>
-    <dd>Lists the classes and members that are not obfuscated</dd>
-
-    <dt><code>usage.txt</code></dt>
-    <dd>Lists the code that was stripped from the <code>.apk</code></dd>
-  </ul>
-
-  <p>These files are located in the following directories:</p>
-
-  <ul>
-    <li><code>&lt;project_root&gt;/bin/proguard</code> if you are using Ant.</li>
-
-    <li><code>&lt;project_root&gt;/proguard</code> if you are using Eclipse.</li>
-  </ul>
-
-
-  <p class="caution"><strong>Caution:</strong> Every time you run a build in release mode, these files are
-  overwritten with the latest files generated by ProGuard. Save a copy of them each time you release your
-  application in order to de-obfuscate bug reports from your release builds.
-  For more information on why saving these files is important, see
-  <a href="#considerations">Debugging considerations for published applications</a>.
-  </p>
-
   <h2 id="configuring">Configuring ProGuard</h2>
 
   <p>For some situations, the default configurations in the ProGuard configuration file will
@@ -246,9 +177,7 @@
   By retaining a copy of the <code>mapping.txt</code> file for each release build,
   you ensure that you can debug a problem if a user encounters a bug and submits an obfuscated stack trace.
   A project's <code>mapping.txt</code> file is overwritten every time you do a release build, so you must be
-  careful about saving the versions that you need. For Eclipse, this file is stored in
-  <code>&lt;project_root&gt;/bin/proguard/</code>. For Android Studio, this file is stored in
-  the app <code>build/outs/</code> folder. </p>
+  careful about saving the versions that you need. The file is stored in the app <code>build/outs/</code> folder. </p>
 
   <p>For example, say you publish an application and continue developing new features of
   the application for a new version. You then do a release build using ProGuard soon after. The
diff --git a/docs/html/tools/help/project-mgmt.jd b/docs/html/tools/help/project-mgmt.jd
new file mode 100644
index 0000000..693f0de
--- /dev/null
+++ b/docs/html/tools/help/project-mgmt.jd
@@ -0,0 +1,174 @@
+page.title=Project Structure Management
+parent.title=Tools
+parent.link=index.html
+page.tags="android studio,project structure,target sdk,minimum sdk"
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>In this document</h2>
+<ol>
+  <li><a href="#dev-svc">Developer Services</a></li>
+  <li><a href="#modules">Modules</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>
+  You can use the <strong>Android Studio File &gt; Project Structure</strong> dialog box to
+  change configuration settings for your Android Studio project. This dialog
+  box is useful if you need to change some of the settings you chose when you
+  created the project.
+</p>
+
+<p>
+  The Project Structure dialog box contains the following sections:
+</p>
+
+<ul>
+  <li>
+    <strong>SDK Location:</strong> Sets the location of the JDK, Android SDK,
+    and Android NDK that the project uses.
+  </li>
+
+  <li>
+    <strong>Project:</strong> Sets version information for <a
+    href="{@docRoot}tools/building/plugin-for-gradle.html">Gradle</a> and for
+    the <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android plugin
+    for Gradle</a>.
+  </li>
+
+  <li>
+    <strong>Developer Services:</strong> Contains settings for Android Studio
+    add-in components from Google or third parties.
+  </li>
+
+  <li>
+    <strong>Modules:</strong> Used to set or change various module-specific
+    build settings, including the target and minimum SDK, the app signature,
+    and library dependencies. Most importantly, this is where you change
+    the settings for your project's <em>app</em> module.
+  </li>
+</ul>
+
+<p>
+  The following two sections provide information on the <a href=
+  "#dev-svc">Developer Services</a> and <a href="#modules">Modules</a>
+  sections.
+</p>
+
+<h2 id="dev-svc">
+  Developer Services
+</h2>
+
+<p>
+  The <em>Developer Services</em> section of the <em>Project Structure</em>
+  dialog box contains configuration pages
+  for several services that you can be use with your app. This section
+  contains the following pages:
+</p>
+
+<ul>
+  <li>
+    <strong>AdMob:</strong> Allows you to turn on Google's <a href=
+    "https://developers.google.com/admob/" class="external-link">AdMob</a>
+    component, which helps you understand your users and show them tailored
+    advertisements.
+  </li>
+
+  <li>
+    <strong>Analytics:</strong> Allows you to turn on <a href=
+    "https://developers.google.com/analytics/" class="external-link">Google
+    Analytics</a>, which helps you measure user interactions with your app
+    across various devices and environments.
+  </li>
+
+  <li>
+    <strong>Authentication:</strong> Allows users to use <a href=
+    "https://developers.google.com/identity/sign-in/android/" class=
+    "external-link">Google Sign-In</a> to sign in to your app with their Google
+    accounts.
+  </li>
+
+  <li>
+    <strong>Cloud:</strong> Allows you to turn on <a href=
+    "https://www.firebase.com/" class="external-link">Firebase</a> cloud-based
+    services for your app.
+  </li>
+
+  <li>
+    <strong>Notifications:</strong> Allows you to use <a href=
+    "https://developers.google.com/cloud-messaging/" class=
+    "external-link">Google Cloud Messaging</a> to communicate between your app
+    and your server.
+  </li>
+</ul>
+
+<p>
+  Turning on any of these services may cause Android Studio to add necessary
+  dependencies and permissions to your app. Each configuration page lists these
+  and other actions that Android Studio takes if you enable the associated service.
+</p>
+
+<h2 id="modules">
+  Modules
+</h2>
+
+<p>
+  The <em>Modules</em> settings section lets you change configuration
+  options for each of your project's modules. This section contains one page
+  for each module in your app. In many cases, the project has just a single
+  module, named <em>app</em>. However, if your project targets multiple form
+  factors, it might have several modules. For example, if your project contains
+  both a tablet app and a wearable app, it might have two modules, named
+  <em>mobile</em> and <em>wear</em>. For more information about project
+  modules, see <a href=
+  "{@docRoot}tools/projects/index.html#ApplicationModules">Android Application
+  Modules</a>.
+</p>
+
+<p>
+  Each module's settings page is divided into the following panes:
+</p>
+
+<ul>
+  <li>
+    <strong>Properties:</strong> Specifies the versions of the SDK and build
+    tools to use to compile the module.
+  </li>
+
+  <li>
+    <strong>Signing:</strong> Specifies the certificate to use to
+    <a href="{@docRoot}tools/publishing/app-signing.html#sign-auto">sign your
+    APK</a>.
+  </li>
+
+  <li>
+    <strong>Flavors:</strong> Lets you create multiple build <em>flavors</em>, where
+    each flavor specifies a set of configuration settings, such as the
+    module's minimum and target SDK version, and the
+    <a href="{@docRoot}tools/publishing/versioning.html">version code and
+    version name</a>. For example, you might define one flavor that has a
+    minimum SDK of 15 and a target SDK of 21, and another flavor that has a
+    minimum SDK of 19 and a target SDK of 23.
+  </li>
+
+  <li>
+    <strong>Build Types:</strong> Lets you create and modify build
+    configurations, as described in <a href=
+    "{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle
+    Builds</a>. By default, every module has <em>debug</em> and
+    <em>release</em> build types, but you can define more as needed.
+  </li>
+
+  <li>
+    <strong>Dependencies:</strong> Lists the library, file, and module
+    dependencies for this module. You can add, modify, and delete dependencies
+    from this pane. For more information about module dependencies, see
+    <a href="{@docRoot}tools/building/configuring-gradle.html#declareDeps">Declare
+    dependencies</a> in <a href=
+    "{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle
+    Builds</a>.
+  </li>
+</ul>
diff --git a/docs/html/tools/help/sdk-manager.jd b/docs/html/tools/help/sdk-manager.jd
old mode 100644
new mode 100755
index cc95edf..aaa1930
--- a/docs/html/tools/help/sdk-manager.jd
+++ b/docs/html/tools/help/sdk-manager.jd
@@ -34,7 +34,7 @@
 </ul>
 
 <p class="note"><strong>Tip:</strong> The standalone SDK Manager is still available from the
-command line, but we recommend it only for use with Eclipse ADT and standalone SDK installations.</p>
+command line, but we recommend it only for use with standalone SDK installations.</p>
 
 <p>By default, the SDK Manager installs the latest packages and tools. Click the checkbox next to
 each additional SDK platform and tool that you want to install. Clear the
@@ -95,19 +95,27 @@
 <a href="{@docRoot}tools/help/avd-manager.html">AVD Manager</a>. </dd>
 
   <dt>Android Support Library</dt>
-  <dd>Recommended. Includes a static library that allows you to use some of the latest
-Android APIs (such as <a href="{@docRoot}guide/components/fragments.html">fragments</a>,
-plus others not included in the framework at all) on devices running
-a platform version as old as Android 1.6. All of the activity templates available when creating
-a new project with the <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a>
-require this. For more information, read <a
-href="{@docRoot}tools/support-library/index.html">Support Library</a>.</dd>
+  <dd>Recommended. Includes a static library that provides an extended set of
+  APIs that are compatible with most versions of Android. It's required for
+  products such as <a href="{@docRoot}wear/index.html">Android Wear</a>, <a
+  href="{@docRoot}tv/index.html">Android TV</a>, and <a
+  href="https://developers.google.com/cast/">Google Cast</a>. For more
+  information, read <a href="{@docRoot}tools/support-library/index.html">Support
+  Library</a>.
+  </dd>
 
   <dt>Android Support Repository</dt>
   <dd>Recommended. Includes local Maven repository for Support libraries.</dd>
 
   <dt>Google Play services</dt>
-  <dd>Recommended. Includes Google Play services client library and sample code.</dd>
+  <dd>Recommended. Includes the Google Play services client library, which
+  provides a variety of features and services for your 
+  apps, such as <a
+  href="https://developers.google.com/identity/sign-in/android/">Google
+  sign-in</a>,<a
+  href="https://developers.google.com/maps/documentation/android-api/">Google
+  Maps</a>, <a href="https://developers.google.com/games/services/">Games
+  achievements and leaderboards</a>, and much more.</dd>
 
   <dt>Google Repository</dt>
   <dd>Recommended. Includes local Maven repository for Google libraries.</dd>
diff --git a/docs/html/tools/help/shell.jd b/docs/html/tools/help/shell.jd
index 41bef22..fabcf4b 100644
--- a/docs/html/tools/help/shell.jd
+++ b/docs/html/tools/help/shell.jd
@@ -570,6 +570,7 @@
     <li>{@code -s}: Install package on the shared mass storage (such as sdcard).
     <li>{@code -f}: Install package on the internal system memory.
     <li>{@code -d}: Allow version code downgrade.
+    <li>{@code -g}: Grant all permissions listed in the app manifest.
   </ul>
 </td>
 </tr>
@@ -622,21 +623,23 @@
 
 <tr>
 <td><code>
-grant &lt;PACKAGE_PERMISSION>
+grant &lt;PACKAGE_NAME&gt; &lt;PERMISSION&gt;
 </code></td>
-<td>Grant permissions
-  to applications.  Only optional permissions the application has
-  declared can be granted.
+<td>Grant a permission to an app. On devices running Android 6.0 (API level 23)
+and higher, may be any permission declared in the app manifest. On devices
+running Android 5.1 (API level 22) and lower, must be an optional permission defined by the
+app.
 </td>
 </tr>
 
 <tr>
 <td><code>
-revoke &lt;PACKAGE_PERMISSION>
+revoke &lt;PACKAGE_NAME&gt; &lt;PERMISSION&gt;
 </code></td>
-<td>Revoke permissions
-  to applications.  Only optional permissions the application has
-  declared can be revoked.
+<td>Revoke a permission from an app. On devices running Android 6.0 (API level
+23) and higher, may be any permission declared in the app manifest. On devices
+running Android 5.1 (API level 22) and lower, must be an optional permission defined by the
+app.
 </td>
 </tr>
 
@@ -865,7 +868,8 @@
 <td><code>dumpsys</code></td>
 <td>Dumps system data to the screen.</td>
 <td rowspan=4">The <a href="{@docRoot}tools/debugging/ddms.html">Dalvik Debug Monitor Server</a>
-(DDMS) tool offers integrated debug environment that you may find easier to use.</td>
+(DDMS) tool offers an integrated debug environment that you may find easier to use.
+</td>
 </tr>
 
 <tr>
@@ -895,4 +899,4 @@
 <td>&nbsp;</td>
 </tr>
 
-</table>
\ No newline at end of file
+</table>
diff --git a/docs/html/tools/help/systrace.jd b/docs/html/tools/help/systrace.jd
old mode 100644
new mode 100755
index 2a8e86f..236d282
--- a/docs/html/tools/help/systrace.jd
+++ b/docs/html/tools/help/systrace.jd
@@ -30,36 +30,15 @@
 
 <h2 id="gui">User Interface</h2>
 
-<p>The Systrace tool can be run from the
-<a href="{@docRoot}tools/help/adt.html">Android Developer Tools</a> (ADT) in Eclipse,
-<a href="{@docRoot}sdk/installing/studio.html">Android Studio</a>,
+<p>The Systrace tool can be run from
+<a href="{@docRoot}sdk/installing/studio.html">Android Studio</a>
 or the Android <a href="{@docRoot}tools/help/monitor.html">Device Monitor</a>.
 
 <p>To run the Systrace capture user interface:</p>
 
 <div class="toggle-content closed">
 <p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
-  <img src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
-  />Using Eclipse</a></p>
-
-  <div class="toggle-content-toggleme">
-  <ol>
-    <li>In Eclipse, open an Android application project.</li>
-    <li>Switch to the DDMS perspective, by selecting <strong>Window &gt; Perspectives &gt;
-      DDMS</strong>.</li>
-    <li>In the <strong>Devices</strong> tab, select the device on which to run a trace. If no
-      devices are listed, make sure your device is connected via USB cable and that debugging is
-      enabled on the device.</li>
-    <li>Click the Systrace icon <img src="{@docRoot}images/systrace/systrace-button.png"
-      style="margin:0"/> at the top of the <strong>Devices</strong> panel to configure tracing.</li>
-    <li>Set the tracing options and click <strong>OK</strong> to start the trace.</li>
-  </ol>
-  </div>
-</div>
-
-<div class="toggle-content closed">
-<p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
-  <img src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+  <img src="/assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
   />Using Android Studio</a></p>
 
   <div class="toggle-content-toggleme">
@@ -80,7 +59,7 @@
 
 <div class="toggle-content closed">
 <p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
-  <img src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+  <img src="/assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
   />Using Device Monitor</a></p>
 
   <div class="toggle-content-toggleme">
diff --git a/docs/html/tools/help/theme-editor.jd b/docs/html/tools/help/theme-editor.jd
new file mode 100644
index 0000000..19f765f
--- /dev/null
+++ b/docs/html/tools/help/theme-editor.jd
@@ -0,0 +1,166 @@
+page.title=Theme Editor
+parent.title=Tools
+parent.link=index.html
+page.tags=theme
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>In this document</h2>
+<ol>
+  <li><a href="#basics">Theme Editor Basics</a></li>
+  <li><a href="#themes">Themes and Colors</a></li>
+  <li><a href="#device">Device-Specific Configurations</a></li>
+</ol>
+
+
+  <h2>Dependencies and Prerequisites</h2>
+  <ul>
+    <li>Android Studio 1.4.1 or higher</li>
+  </ul>
+
+</div>
+</div>
+
+<p>
+The Theme Editor is a visual assistant that helps you:
+</p>
+   <li>Create and modify
+<a href="{@docRoot}guide/topics/ui/themes.html">
+themes</a> for your app.</li>
+   <li>Adjust themes for different resource classifiers.</li>
+   <li>Visualize the effect of color changes on common UI elements.</li>
+
+<p>
+This page introduces the fundamental tasks that you can perform with the Theme
+Editor, and explains how to do so.
+</p>
+
+
+<h2 id="basics">Theme Editor Basics</h2>
+
+<p>
+This section describes how to access the Theme Editor, and how it is laid out.
+</p>
+
+<h3>Accessing the Theme Editor</h3>
+
+<p>There are two ways to open the Theme Editor:</p>
+
+<li>From an open {@code styles.xml} file, click <strong>Open editor</strong> near the top-right
+of the file window.</li>
+
+<li>From the <strong>Tools</strong> menu, select <strong>Android</strong> &gt;
+<strong>Theme Editor</strong>.</p>
+
+<h3 id="layout">Navigating the Theme Editor</h3>
+<p>
+The Theme Editor's main screen is divided into two sections. The left side of the editor
+shows what specific UI elements, such as the app bar or a raised button, look like
+when you apply the current theme to them. The right side of the editor displays
+the settings for the color resources, such as <strong>Theme parent</strong> and
+<strong>colorPrimary</strong>, that comprise the current theme. You can modify design
+themes by changing these resource settings.
+</p>
+
+<h2 id="themes">Themes and Colors</h2>
+
+<p>
+The Theme Editor allows you to create new themes, modify existing ones, and manage the
+colors that make up the themes.
+</p>
+
+<h3 id="create">Creating New Themes</h3>
+
+<p>
+To create a theme, follow these steps:
+</p>
+   <ol>
+   <li>Open the <strong>Theme</strong> dropdown menu near the top of the right
+side of the Theme Editor.</li>
+   <li>Select <strong>Create New Theme</strong>. The <em>New Theme</em> dialog appears.</li>
+   <li>Enter a name for the new theme.</li>
+   <li>In the <em>Parent theme name:</em> field, select the parent from which the theme
+   inherits initial resources.</li>
+   </ol>
+
+<h3 id="rename">Renaming Themes</h3>
+
+<p>
+To rename a theme, perform the following steps:
+</p>
+   <ol>
+   <li>Open the <strong>Theme</strong> dropdown menu near the top of the right
+side of the Theme Editor.</li>
+   <li>Select <strong>Rename AppTheme</strong>. The <em>Rename</em> dialog appears.</li>
+   <li>Enter a new name for the theme.</li>
+   <li>(optional) To see how the changes will look, click <strong>Preview</strong>.</li>
+   <li>To apply the changes, click <strong>Refactor</strong>.</li>
+   </ol>
+
+<h3 id="changing">Changing Color Resources</h3>
+
+<p>To change an existing color resource, such as <strong>colorPrimary</strong>,
+follow these steps:
+</p>
+<ol>
+<li>Click the colored square next to the name of the resource you want to change.
+The <em>Resources</em> dialog appears, containing a color picker, material-color
+palette, and other settings and information.</li>
+<li>Change the color, opacity, and name of a theme's resources as desired.</p>
+<li>To ensure that your theme uses a color from the material
+palette, click <strong>CLOSEST MATERIAL COLOR</strong>, located next to <em>Custom
+color</em>. Android Studio changes the color you picked to the material color most like it,
+and replaces <em>Custom color</em> with the name of the color from the material palette.</li>
+</ol>
+
+<p>You can also directly select colors from the material palette, which the editor displays
+as two rows of colored squares beneath the color picker.</p>
+
+<h3 id="viewing">Viewing State Lists and Colors</h3>
+
+<p>
+The Theme Editor allows you to preview
+<a href="{@docRoot}guide/topics/resources/color-list-resource.html">
+colors associated with different states.</a> To do so, open the <em>Resource</em> dialog, and click
+the <em>State List</em> tab that appears at the top of the dialog.</p>
+
+<p>
+To more fully control the states themselves, you can directly view and edit their
+properties in the XML file,
+such as {@code colors.xml}, that defines them. For more information, see the
+documentation for the {@link android.content.res.ColorStateList} class.
+</p>
+
+<h2 id="device">Device-Specific Configurations</h2>
+
+<p>
+You can choose
+<a href="{@docRoot}guide/topics/resources/providing-resources.html#Compatibility">
+device-specific</a> configurations for your app to support. Perform
+the following steps to do so:
+</p>
+
+<ol>
+<li>Click the triangle next to <em>Location</em>, near the bottom of the <a href="#changing">
+<em>Resources</em></a> dialog. The <em>Location</em> section expands, revealing
+the name of the XML file containing the
+resource, as well as a list of configuration-specific directories in which to
+place that file.</li>
+<li>If necessary, change the XML file name.</li>
+<li>Check the boxes next to the directories corresponding to the
+device-specific configurations you wish to support. Any configuration
+for which you do not specify a directory defaults to using the
+{@code values} directory.</li>
+</ol>
+
+<p>For more information about the relationship
+between directory names and configurations, see
+<a href="{@docRoot}guide/practices/screens_support.html#ConfigurationExamples">
+Supporting Multiple Screens</a>. For more information about
+supported directory names, see
+<a href="{@docRoot}guide/topics/resources/providing-resources.html#ResourceTypes">
+Providing Resources</a>.
+</p>
+
+
diff --git a/docs/html/tools/help/translations-editor.jd b/docs/html/tools/help/translations-editor.jd
new file mode 100644
index 0000000..ab557e1
--- /dev/null
+++ b/docs/html/tools/help/translations-editor.jd
@@ -0,0 +1,133 @@
+page.title=Translations Editor
+parent.title=Tools
+parent.link=index.html
+page.tags=translations
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>In this document</h2>
+<ol>
+  <li><a href="#about">About the Translations Editor</a></li>
+  <li><a href="#running">Running the Translations Editor</a></li>
+  <li><a href="#managing">Managing String Resources</a></li>
+  <li><a href="#ordering">Ordering Translation Services</a></li>
+</ol>
+
+ <h2>See also</h2>
+  <ol>
+    <li><a href="{@docRoot}training/basics/supporting-devices/languages.html">Supporting Different
+    Languages</a></li>
+    <li><a href="{@docRoot}guide/topics/resources/localization.html">Localizing with Resources</a>
+    </li>
+    <li><a href="{@docRoot}guide/topics/resources/providing-resources.html">Providing Resources</a>
+    </li>
+  </ol>
+
+</div>
+</div>
+
+<p>
+If your application supports multiple languages, you need to properly manage your
+translated string resources. Android Studio provides the Translations Editor to make viewing and
+managing your translated resources easier.
+</p>
+
+<h2 id="about">About the Translations Editor</h2>
+
+<p>
+Translated resources are stored in multiple XML files in multiple directories in your project.
+Manually finding and editing resource files across many translations can be difficult. Because of
+this, your application might have missing translations that go unnoticed until after your
+application has been built and distributed to users.
+</p>
+
+<p>
+The Translations Editor lets you view and update all your string resources in one convenient
+place. The editor gives you a single view of all of your translated resources, making it easy to
+change or add translations, and even find missing translations.
+</p>
+
+<img src="{@docRoot}images/tools/studio-translations-editor.png" />
+<p class="img-caption"><strong>Figure 1.</strong> Manage locales and strings in the
+Translations Editor.</p>
+
+<h2 id="running">Running the Translations Editor</h2>
+
+<p>
+Follow these steps to start the Translations Editor:
+</p>
+
+<ol>
+  <li>In Android Studio, open an Android app project.</li>
+  <li>In the <em>Project</em> window, select the
+  <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>.</li>
+  <li>Open the <strong>res</strong> folder, and then open the <strong>values</strong> folder.</li>
+  <li>If a <strong>strings.xml</strong> folder is present, open this folder.</li>
+  <li>Right-click the <code>strings.xml</code> file (not folder) and select <strong>Open
+    Translations Editor</strong>.</li>
+</ol>
+
+<p>
+You can also access the Translations Editor by opening a <code>strings.xml</code> file for editing
+and clicking the <strong>Open editor</strong> link, or clicking the globe icon
+<img src="{@docRoot}images/tools/studio-globe-icon.png" alt=""/> in the Design layout view and
+choosing <strong>Edit Translations</strong>.
+</p>
+
+<h2 id="managing">Managing String Resources</h2>
+
+<p>
+The Translations Editor provides a view of all your string resources and current locale
+translations. The name of each resource is listed in the Key column, along with a default value
+for the key, a checkbox to mark the key as untranslatable, and values for each locale translation.
+</p>
+
+<p>
+Edit translations by double-clicking on the translation and editing the value directly
+in the list view, or selecting the translation and editing the <strong>Translation</strong> field
+value at the bottom of the editor. The default value can be edited by double-clicking on
+the default value or selecting the default value and updating the <strong>Default Value</strong>
+field.</p>
+
+<p>
+If a resource is missing a translation and isn't marked untranslatable, the key name is
+displayed in red. If you hover over a red resource, Android Studio displays details about the
+missing translations.
+</p>
+
+<h3 id="adding">Adding a new string resource</h3>
+
+<p>
+Add a new resource by clicking the add icon <img src="{@docRoot}images/tools/studio-add-icon.png"
+ alt=""/>. Android Studio prompts you for a key name,
+default value, and resource folder that contains the <code>strings.xml</code> file where the new
+resource is added.
+</p>
+
+<h3 id="adding_locales">Adding additional locales</h3>
+
+<p>
+Add additional locales by pressing the globe icon
+ <img src="{@docRoot}images/tools/studio-globe-icon.png" alt=""/> and selecting the locale you want
+to add. The Translations Editor adds the new locale column and creates the translation strings XML
+file in the appropriate project directory.
+</p>
+
+<p>
+The Translations Editor has
+<a class="external-link" href="https://tools.ietf.org/html/bcp47">BCP 47</a> support, and
+combines language and region codes into a single selection for targeted localizations.
+</p>
+
+<h2 id="ordering">Ordering Translation Services</h2>
+
+<p>
+Clicking the <strong>Order a translation</strong> link opens a page in your browser where you
+can upload string resource XML files and order translation services. App translation services are
+available from Google Play and other vendors. For more information about Google Play App
+Translation Services, see the <a class="external-link"
+href="http://android-developers.blogspot.com/2013/11/app-translation-service-now-available.html">
+Google Play App Translation Service</a> announcement.
+</p>
+
diff --git a/docs/html/tools/help/uiautomator/Configurator.jd b/docs/html/tools/help/uiautomator/Configurator.jd
index c898772..b6e15f6 100644
--- a/docs/html/tools/help/uiautomator/Configurator.jd
+++ b/docs/html/tools/help/uiautomator/Configurator.jd
@@ -281,7 +281,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/tools/help/uiautomator/UiAutomatorTestCase.jd b/docs/html/tools/help/uiautomator/UiAutomatorTestCase.jd
index 0d8d1bc..bd108ab 100644
--- a/docs/html/tools/help/uiautomator/UiAutomatorTestCase.jd
+++ b/docs/html/tools/help/uiautomator/UiAutomatorTestCase.jd
@@ -166,7 +166,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-junit.framework.TestCase" class="jd-expando-trigger closed"
           ><img id="inherited-methods-junit.framework.TestCase-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -304,7 +304,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-junit.framework.Assert" class="jd-expando-trigger closed"
           ><img id="inherited-methods-junit.framework.Assert-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -938,7 +938,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1108,7 +1108,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-junit.framework.Test" class="jd-expando-trigger closed"
           ><img id="inherited-methods-junit.framework.Test-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From interface
 
diff --git a/docs/html/tools/help/uiautomator/UiCollection.jd b/docs/html/tools/help/uiautomator/UiCollection.jd
index 3fc32b7..78c5254 100644
--- a/docs/html/tools/help/uiautomator/UiCollection.jd
+++ b/docs/html/tools/help/uiautomator/UiCollection.jd
@@ -161,7 +161,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.android.uiautomator.core.UiObject" class="jd-expando-trigger closed"
           ><img id="inherited-methods-com.android.uiautomator.core.UiObject-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -826,7 +826,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/tools/help/uiautomator/UiDevice.jd b/docs/html/tools/help/uiautomator/UiDevice.jd
index 574245e..1203841 100644
--- a/docs/html/tools/help/uiautomator/UiDevice.jd
+++ b/docs/html/tools/help/uiautomator/UiDevice.jd
@@ -1015,7 +1015,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/tools/help/uiautomator/UiObject.jd b/docs/html/tools/help/uiautomator/UiObject.jd
index 45007e0..4ce257b 100644
--- a/docs/html/tools/help/uiautomator/UiObject.jd
+++ b/docs/html/tools/help/uiautomator/UiObject.jd
@@ -940,7 +940,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/tools/help/uiautomator/UiObjectNotFoundException.jd b/docs/html/tools/help/uiautomator/UiObjectNotFoundException.jd
index b41cfe5..c34fdfd 100644
--- a/docs/html/tools/help/uiautomator/UiObjectNotFoundException.jd
+++ b/docs/html/tools/help/uiautomator/UiObjectNotFoundException.jd
@@ -111,7 +111,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Throwable" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Throwable-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -313,7 +313,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/tools/help/uiautomator/UiScrollable.jd b/docs/html/tools/help/uiautomator/UiScrollable.jd
index 7405f3b..8f6b1dd 100644
--- a/docs/html/tools/help/uiautomator/UiScrollable.jd
+++ b/docs/html/tools/help/uiautomator/UiScrollable.jd
@@ -38,7 +38,7 @@
 
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-com.android.uiautomator.core.UiObject" class="jd-expando-trigger closed"
           ><img id="inherited-constants-com.android.uiautomator.core.UiObject-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>From class
 <a href="UiObject.html">com.android.uiautomator.core.UiObject</a>
 <div id="inherited-constants-com.android.uiautomator.core.UiObject">
@@ -696,7 +696,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.android.uiautomator.core.UiCollection" class="jd-expando-trigger closed"
           ><img id="inherited-methods-com.android.uiautomator.core.UiCollection-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -798,7 +798,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.android.uiautomator.core.UiObject" class="jd-expando-trigger closed"
           ><img id="inherited-methods-com.android.uiautomator.core.UiObject-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
@@ -1606,7 +1606,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/tools/help/uiautomator/UiSelector.jd b/docs/html/tools/help/uiautomator/UiSelector.jd
index 7084540..1f045fd 100644
--- a/docs/html/tools/help/uiautomator/UiSelector.jd
+++ b/docs/html/tools/help/uiautomator/UiSelector.jd
@@ -650,7 +650,7 @@
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
           ><img id="inherited-methods-java.lang.Object-trigger"
-          src="../../../../../assets/images/triangle-closed.png"
+          src="../../../../../assets/images/styles/disclosure_down.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
diff --git a/docs/html/tools/help/vector-asset-studio.jd b/docs/html/tools/help/vector-asset-studio.jd
new file mode 100644
index 0000000..491a699
--- /dev/null
+++ b/docs/html/tools/help/vector-asset-studio.jd
@@ -0,0 +1,506 @@
+page.title=Vector Asset Studio
+parent.title=Tools
+parent.link=index.html
+page.tags=vector
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+  <h2>In this document</h2>
+<ol>
+  <li><a href="#about">About Vector Asset Studio</a></li>
+  <li><a href="#running">Running Vector Asset Studio</a></li>
+  <li><a href="#importing">Importing a Vector Graphic</a></li>
+  <li><a href="#layout">Adding a Vector Drawable to a Layout</a></li>
+  <li><a href="#referring">Referring to a Vector Drawable in Code</a></li>
+  <li><a href="#code">Modifying XML Code Generated by Vector Asset Studio</a></li>
+  <li><a href="#delete">Deleting a Vector Asset from a Project</a></li>
+  <li><a href="#apk">Delivering an App Containing Vector Drawables</a></li>
+</ol>
+
+ <h2>See also</h2>
+  <ol>
+    <li><a href="{@docRoot}training/material/drawables.html#VectorDrawables">Create Vector Drawables</a></li>
+    <li><a href="http://www.google.com/design/icons" class="external-link">Material Icons</a></li>
+    <li><a href="{@docRoot}reference/android/graphics/drawable/Drawable.html">Drawable Class</a></li>
+    <li><a href="{@docRoot}reference/android/graphics/drawable/VectorDrawable.html">VectorDrawable Class</a></li>
+  </ol>
+
+  <h2>Videos</h2>
+  <ol>
+    <li><a href="http://www.youtube.com/watch?t=126&v=wlFVIIstKmA" class="external-link">DevBytes: Android Vector Graphics</a></li>
+    <li><a href="http://www.youtube.com/watch?v=8e3I-PYJNHg" class="external-link">Android Studio Support for Vector Graphics</a></li>
+  </ol>
+
+  <h2>Dependencies and Prerequisites</h2>
+  <ul>
+    <li><a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin for Gradle</a> 1.5.0 or higher</li>
+  </ul>
+
+</div>
+</div>
+
+<p>Vector Asset Studio helps you add material icons
+and import Scalable Vector Graphic (SVG) files into your app project as a drawable resource.
+Compared to raster images, vector drawables can reduce the size of your app and be resized without
+loss of image quality. They help you to more easily support different Android devices with varying
+screen sizes and resolutions because you can display one vector drawable on all of them. </p>
+
+<h2 id="about">About Vector Asset Studio</h2>
+
+<p>Vector Asset Studio adds a vector graphic to the project as an XML file that describes the image.
+Maintaining one XML file can be easier than updating multiple raster graphics at various resolutions.</p>
+
+<p>Android 4.4 (API level 20) and lower doesn't support vector drawables. If your minimum API level
+is set at one of these API levels, Vector Asset Studio also directs Gradle to generate raster images
+of the vector drawable for backward-compatibility. You can refer to vector assets as
+{@link android.graphics.drawable.Drawable} in Java code or <code>@drawable</code> in XML code; when
+your app runs, the corresponding vector or raster image displays automatically depending on the API
+level.</p>
+
+
+<h3 id="types">Supported vector graphic types</h3>
+
+<p>The Google material design specification provides <a href="http://www.google.com/design/icons" class="external-link">material icons</a>
+that you can use in your Android apps. Vector
+Asset Studio helps you choose, import, and size material icons, as well as define opacity and the
+Right-to-Left (RTL) mirroring setting.</p>
+
+<p>Vector Asset Studio also helps you to import your own SVG files. SVG is an XML-based open
+standard of the World Wide Web Consortium (W3C). Vector Asset Studio supports the essential
+standard, but not all features. When you specify an SVG file, Vector Asset Studio gives immediate
+feedback about whether the graphics code is supported or not. If the SVG code is supported, it
+converts the file into an XML file containing {@link
+android.graphics.drawable.VectorDrawable} code.</p>
+
+<h3 id="when">Considerations for SVG files</h3>
+
+<p>A vector drawable is appropriate for simple icons. The
+<a href="http://www.google.com/design/icons" class="external-link">material icons</a> provide good
+examples of the types
+of images that work well as vector drawables in an app. In contrast, many app launch icons do have
+many details, so they work better as raster images.</p>
+
+<p>The initial loading of a vector graphic can cost more CPU cycles than the corresponding raster
+image. Afterward, memory use and performance are similar between the two. We recommend that you
+limit a vector image to a maximum of 200 x 200 dp; otherwise, it can take too long to draw.</p>
+
+<p>Although vector drawables do support one or more colors, in many cases it makes sense to color
+icons black (<code>android:fillColor="#FF000000"</code>). Using this approach, you can add a
+<a href="{@docRoot}training/material/drawables.html#DrawableTint">tint</a> to the vector drawable
+that you placed in a layout, and the icon color changes to the tint color. If the icon color
+isn't black, the icon color might instead blend with the tint color.</p>
+
+<h3 id="apilevel">Vector drawable support at different API levels</h3>
+
+<p>Android 5.0 (API level 21) and higher provides vector drawable support. If your app has a
+minimum API level that is lower, Vector Asset Studio adds the vector drawable file to your
+project; also, at build time, Gradle creates Portable Network Graphic (PNG) raster images at various
+resolutions. Gradle generates the PNG densities specified by the Domain Specific Language (DSL)
+<a href="http://google.github.io/android-gradle-dsl/1.4/com.android.build.gradle.internal.dsl.ProductFlavor.html#com.android.build.gradle.internal.dsl.ProductFlavor:generatedDensities" class="external-link">generatedDensities</a> property
+in a <code>build.gradle</code> file. To generate PNGs, the build system requires Android
+Plugin for Gradle 1.5.0 or higher.</p>
+
+<p>For Android 5.0 (API level 21) and higher, Vector Asset Studio supports all of the {@link
+android.graphics.drawable.VectorDrawable} elements. For backward compatibility with Android 4.4 (API
+level 20) and lower, Vector Asset Studio supports the following XML elements:</p>
+
+<div class="wrap">
+  <div class="cols">
+    <div class="col-1of3">
+
+<p><code>&lt;vector></code></p>
+<ul>
+  <li><code>android:width</code></li>
+  <li><code>android:height</code></li>
+  <li><code>android:viewportWidth</code></li>
+  <li><code>android:viewportHeight</code></li>
+  <li><code>android:alpha</code></li>
+</ul>
+
+</div>
+
+<div class="col-1of3">
+
+<p><code>&lt;group></code></p>
+<ul>
+  <li><code>android:rotation</code></li>
+  <li><code>android:pivotX</code></li>
+  <li><code>android:pivotY</code></li>
+  <li><code>android:scaleX</code></li>
+  <li><code>android:scaleY</code></li>
+  <li><code>android:translateX</code></li>
+  <li><code>android:translateY</code></li>
+</ul>
+
+</div>
+
+
+<div class="col-1of3">
+
+<p><code>&lt;path></code></p>
+<ul>
+  <li><code>android:pathData</code></li>
+  <li><code>android:fillColor</code></li>
+  <li><code>android:strokeColor</code></li>
+  <li><code>android:strokeWidth</code></li>
+  <li><code>android:strokeAlpha</code></li>
+  <li><code>android:fillAlpha</code></li>
+  <li><code>android:strokeLineCap</code></li>
+  <li><code>android:strokeLineJoin</code></li>
+  <li><code>android:strokeMiterLimit</code></li>
+</ul>
+
+</div>
+
+</div>
+</div>
+
+<p>Only Android 5.0 (API level 21) and higher supports dynamic attributes, for example, <code>android:fillColor="?android:attr/colorControlNormal"</code>.</p>
+
+<p>You can change the XML code that Vector Asset Studio generates, although it’s not a best practice.
+Changing the values in the code should not cause any issues, as long as they’re valid and static. If
+you want to add XML elements, you need to make sure that they’re supported based on your minimum API
+level.</p>
+
+<p>For Android 5.0 (API level 21) and higher, you can use the {@link
+android.graphics.drawable.AnimatedVectorDrawable} class to animate the properties of {@link
+android.graphics.drawable.VectorDrawable}. For more information, see
+<a href="{@docRoot}training/material/animations.html#AnimVector">Animating Vector Drawables</a>.</p>
+
+<h2 id="running">Running Vector Asset Studio</h2>
+
+<p>Follow these steps to start Vector Asset Studio:</p>
+
+<ol>
+  <li>In Android Studio, open an Android app project.</li>
+  <li>In the <em>Project</em> window, select the
+  <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>.</li>
+  <li>Right-click the <strong>res</strong> folder and select <strong>New</strong> >
+  <strong>Vector Asset</strong>.</li>
+  <p>Some other project views and folders have this menu item as well.</p>
+  <p>Vector Asset Studio appears.</p>
+  <img src="{@docRoot}images/tools/vas-materialicon.png" />
+  <li>If a <em>Need newer Android plugin for Gradle</em> dialog appears instead, correct
+  your Gradle version as follows:</li>
+    <ol type="a">
+      <li>Select <strong>File</strong> > <strong>Project Structure</strong>.</li>
+      <li>In the <em>Project Structure</em> dialog, select <strong>Project</strong>.</li>
+      <li>In the <strong>Android Plugin Version</strong> field, change the Android Plugin for Gradle
+      version to <strong>1.5.0</strong> or higher, and click <strong>OK</strong>.</li>
+      <p>Gradle syncs the project.</p>
+      <li>In the <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>
+      of the <em>Project</em> window, right-click the <strong>res</strong> folder and select
+      <strong>New</strong> > <strong>Vector Asset</strong>.</li>
+      <p>Vector Asset Studio appears.</p>
+    </ol>
+  <li>Continue with <a href="#importing">Importing a Vector Graphic</a>.</li>
+</ol>
+
+<h2 id="importing">Importing a Vector Graphic</h2>
+
+<p>Vector Asset Studio helps you to import a vector graphics file into your app project. Follow one
+  of the following procedures:</p>
+<ul>
+  <li><a href="#materialicon">Adding a material icon</a></li>
+  <li><a href="#svg">Importing an SVG file</a></li>
+</ul>
+
+<h3 id="materialicon">Adding a material icon</h3>
+
+<p>After you <a href="#running">open Vector Asset Studio</a>, you can add a material icon as follows:</p>
+
+<ol>
+  <li>In Vector Asset Studio, select <strong>Material Icon</strong>.</li>
+  <li>Click <strong>Choose</strong>.</li>
+  <li>Select a material icon and click <strong>OK</strong>.</li>
+  <p>The icon appears in the <strong>Vector Drawable Preview</strong>.</p>
+  <li>Optionally change the resource name, size, opacity, and Right-To-Left (RTL) mirroring setting:
+    <ul>
+      <li><strong>Resource name</strong> - Type a new name if you don’t want to use the default name.
+      Vector Asset Studio automatically creates a unique name (adds a number to the end of the name)
+      if that resource name already exists in the project. The name can contain lowercase
+      characters, underscores, and digits only.</li>
+      <li><strong>Override default size from material design</strong> - Select this option if you
+      want to adjust the size of the image. When you type a new size, the change appears in the
+      preview area.</li>
+      <p>The default is 24 x 24 dp, which is defined in the
+      <a href="http://www.google.com/design/icons" class="external-link">material design</a>
+      specification. Deselect the checkbox to return to the default.</p>
+      <li><strong>Opacity</strong> - Use the slider to adjust the opacity of the image. The change
+      appears in the preview area.</li>
+      <li><strong>Enable auto mirroring for RTL layout</strong> - Select this option if you want a
+      mirror image to display when the layout is right to left, instead of left to right. For
+      example, some languages are read right to left; if you have an arrow icon, you might want to
+      display a mirror image of it in this case. Note that if you’re working with an older project,
+      you might also
+      need to add <code>android:supportsRtl="true"</code> to your app manifest. Auto-mirroring is
+      supported on Android 5.0 (API level 21) and higher only.</li>
+    </ul>
+  <li>Click <strong>Next</strong>.</li>
+  <li>Optionally change the module and resource directory:</li>
+   <ul>
+      <li><strong>Target Module</strong> - Select a module in the project where you want to add the
+      resource. For more information, see
+      <a href="{@docRoot}sdk/installing/create-project.html#CreatingAModule">Creating an Android Module</a>.</li>
+      <li><strong>Res Directory</strong> - Select the resource source set where you want to add the
+      vector asset: <code>src/main/res</code>, <code>src/debug/res</code>, <code>src/release/res</code>,
+      or a user-defined source set. The main source set applies to all build variants, including
+      debug and release. The debug and release source sets override the main source set and apply
+      to one version of a build. The debug source set is for debugging only. To define a new source
+      set, select <strong>File</strong> > <strong>Project Structure</strong> > <strong>app</strong> >
+      <strong>Build Types</strong>. For example, you could define a beta source set and create a
+      version of an icon that includes the text "BETA” in the bottom right corner. For more information, see
+      <a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants">Working with Build Variants</a>.</li>
+    </ul>
+    <p>The <strong>Output Directories</strong> area displays the vector image and the directory
+    where it will appear.</p>
+  <li>Click <strong>Finish</strong>.</li>
+  <p>Vector Asset Studio adds an XML file defining the vector drawable to the project in the
+  <code>app/src/main/res/drawable/</code> folder. From the
+  <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a> of the <em>Project</em>
+  window, you can view the generated vector XML file in the <strong>drawable</strong> folder.</p>
+  <li>Build the project.</li>
+  <p>If the minimum API level is Android 4.4 (API level 20) and lower, Vector Asset Studio generates
+  PNG files. From the <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Project view</a>
+  of the <em>Project</em> window, you can view the generated PNG and XML files in the
+  <code>app/build/generated/res/pngs/debug/</code> folder.</p>
+  <p>You should not edit these generated raster files, but instead work with the vector XML file. The
+  build system regenerates the raster files automatically when needed so you don’t need to maintain
+  them.</p>
+</ol>
+
+<h3 id="svg">Importing a Scalable Vector Graphic (SVG)</h3>
+
+<p>After you <a href="#running">open Vector Asset Studio</a>, you can import an SVG file as follows:</p>
+
+<ol>
+  <li>In Vector Asset Studio, select <strong>Local SVG file</strong>.</li>
+  <p>The file must be on a local drive. If it’s located on the network, for example, you need to
+  download it to a local drive first.</p>
+  <li>Specify an <strong>Image file</strong> by clicking <strong>…</strong> .</li>
+  <p>The image appears in the <strong>Vector Drawable Preview</strong>.</p>
+  <p>However, if the SVG file contains unsupported features, an error appears at the bottom left of
+  Vector Asset Studio, as shown in the following figure.</p>
+  <img src="{@docRoot}images/tools/vas-svgerror.png" />
+  <p>In this case, you can’t use Vector Asset Studio to add the graphics file. Click
+    <strong>More</strong> to view the errors. For a list of supported elements, see
+  <a href="#apilevel">Vector Drawable Support at Different API Levels</a>.</p>
+  <li>Optionally change the resource name, size, opacity, and Right-To-Left (RTL) mirroring setting:</li>
+    <ul>
+      <li><strong>Resource name</strong> - Type a new name if you don’t want to use the default
+      name. Vector Asset Studio automatically creates a unique name (adds a number to the end of the
+      name) if that resource name already exists in the project. The name can contain lowercase
+      characters, underscores, and digits only.</li>
+      <li><strong>Override default size from material design</strong> - Select this option if you
+      want to adjust the size of the image. After you select it, the size changes to the size of the
+      image itself. Whenever you change the size, the change appears in the preview area.</li>
+      <p>The default is 24 x 24 dp, which is defined in the
+      <a href="http://www.google.com/design/icons" class="external-link">material design</a>
+      specification. Deselect the checkbox to return to the default.</p>
+      <li><strong>Opacity</strong> - Use the slider to adjust the opacity of the image. The change
+      appears in the preview area.</li>
+      <li><strong>Enable auto mirroring for RTL layout</strong> - Select this option if you want a
+      mirror image to display when the layout is right to left, instead of left to right. For
+      example, some languages are read right to left; if you have an arrow icon, you might want to
+      display a mirror image of it in this case. Note that if you’re working with an older project,
+      you might
+      need to add <code>android:supportsRtl="true"</code> to your app manifest.  Auto-mirroring is
+      supported on Android 5.0 (API level 21) and higher only.</li>
+    </ul>
+  <li>Click <strong>Next</strong>.</li>
+  <li>Optionally change the module and resource directory:</li>
+  <ul>
+      <li><strong>Target Module</strong> - Select a module in the project where you want to add the
+      resource. For more information, see
+      <a href="{@docRoot}sdk/installing/create-project.html#CreatingAModule">Creating an Android Module</a>.</li>
+      <li><strong>Res Directory</strong> - Select the resource source set where you want to add the
+      vector asset: <code>src/main/res</code>, <code>src/debug/res</code>, <code>src/release/res</code>,
+      or a user-defined source set. The main source set applies to all build variants, including
+      debug and release. The debug and release source sets override the main source set and apply
+      to one version of a build. The debug source set is for debugging only. To define a new source
+      set, select <strong>File</strong> > <strong>Project Structure</strong> > <strong>app</strong> >
+      <strong>Build Types</strong>. For example, you could define a beta source set and create a
+      version of an icon that includes the text "BETA” in the bottom right corner. For more information, see
+      <a href="{@docRoot}tools/building/configuring-gradle.html#workBuildVariants">Working with Build Variants</a>.</li>
+    </ul>
+    <p>The <strong>Output Directories</strong> area displays the vector image and the directory
+    where it will appear.</p>
+  <li>Click <strong>Finish</strong>.</li>
+  <p>Vector Asset Studio adds an XML file defining the vector drawable to the project in the
+  <code>app/src/main/res/drawable/</code> folder. From the
+  <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a> of the <em>Project</em>
+  window, you can view the generated vector XML file in the <strong>drawable</strong> folder.</p>
+  <li>Build the project.</li>
+  <p>If the minimum API level is Android 4.4 (API level 20) and lower, Vector Asset Studio generates
+  PNG files. From the <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Project view</a>
+  of the <em>Project</em> window, you can view the generated PNG and XML files in the
+  <code>app/build/generated/res/pngs/debug/</code> folder.</p>
+  <p>You should not edit these generated raster files, but instead work with the vector XML file. The
+  build system regenerates the raster files automatically when needed so you don’t need to maintain
+  them.</p>
+</ol>
+
+<h2 id="layout">Adding a Vector Drawable to a Layout</h2>
+
+<p>In a layout file, you can set any icon-related widget, such as {@link android.widget.ImageButton},
+{@link android.widget.ImageView}, and so on, to point to a vector asset. For example, the following
+layout shows a vector asset displayed on a button:</p>
+
+<img src="{@docRoot}images/tools/vas-layout.png" />
+
+<p>Follow these steps to display a vector asset on a widget, as shown in the figure:</p>
+
+<ol>
+  <li>Open a project and <a href="#running">import a vector asset</a>.</li>
+  <li>In the <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a> of
+  the <em>Project</em> window, double-click a layout XML file, such as <code>content_main.xml</code>.</li>
+  <li>Click the <strong>Design</strong> tab to display the
+  <a href="{@docRoot}sdk/installing/studio-layout.html">Layout Editor</a>.</li>
+  <li>Drag the {@link
+android.widget.ImageButton} widget from the <em>Palette</em> window onto the Layout Editor.</li>
+  <li>In the <em>Properties</em> window, locate the <strong>src</strong> property of the
+  <code>ImageButton</code> instance and click <strong>…</strong> .</li>
+  <li>In the <em>Resources</em> dialog, select the <strong>Project</strong> tab, navigate to the
+    <strong>Drawable</strong> folder, and select a vector asset. Click <strong>OK</strong>.</li>
+  <p>The vector asset appears on the <code>ImageButton</code> in the layout.</p>
+  <li>To change the color of the image to the accent color defined in the theme, locate the
+  <strong>tint</strong> property in the <em>Properties</em> window and click <strong>…</strong> .</li>
+  <li>In the <em>Resources</em> dialog, select the <strong>Project</strong> tab, navigate to the
+  <strong>Color</strong> folder, and select <strong>colorAccent</strong>. Click <strong>OK</strong>.</li>
+  <p>The color of the image changes to the accent color in the layout.</p>
+</ol>
+
+<p>The <code>ImageButton</code> code should be similar to the following:</p>
+
+<pre>
+&lt;ImageButton
+  android:id="@+id/imageButton"
+  android:src="@drawable/ic_build_24dp"
+  android:tint="@color/colorAccent"
+  android:layout_width="wrap_content"
+  android:layout_height="wrap_content"
+  android:layout_below="@+id/textView2"
+  android:layout_marginTop="168dp" />
+</pre>
+
+<h2 id="referring">Referring to a Vector Drawable in Code</h2>
+
+<p>You can normally refer to a vector drawable resource in a generic way in your code, and when
+your app runs, the corresponding vector or raster image displays automatically depending on the API
+level:</p>
+
+<ul>
+  <li>In most cases, you can refer to vector assets as <code>@drawable</code> in XML code or
+    {@link android.graphics.drawable.Drawable} in Java code. </li>
+  <p>For example, the following layout XML code applies the image to a view:</p>
+<pre>
+&lt;ImageView
+    android:layout_height="wrap_content"
+    android:layout_width="wrap_content"
+    android:src="@drawable/myimage" />
+</pre>
+  <p>The following Java code retrieves the image as a {@link android.graphics.drawable.Drawable}:</p>
+<pre>
+Resources res = {@link android.content.Context#getResources()};
+Drawable drawable = res.{@link android.content.res.Resources#getDrawable(int) getDrawable}(R.drawable.myimage);
+</pre>
+  <li>Occasionally, you might need to typecast the drawable resource to its exact class, such as
+  when you need to use specific features of the {@link android.graphics.drawable.VectorDrawable}
+  class. To do so, you could use Java code such as the following:</li>
+<pre>
+if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+   VectorDrawable vectorDrawable =  (VectorDrawable) drawable;
+} else {
+   BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
+}
+</pre>
+</ul>
+
+
+<h2 id="code">Modifying XML Code Generated by Vector Asset Studio</h2>
+
+<p>You can modify the vector asset XML code, but not the PNGs and corresponding XML code generated
+at build time. However, we don't recommended it. Vector Asset Studio makes sure that the vector
+drawable and the PNGs match, and that the manifest contains the proper code. If you add code that's
+<a href="#apilevel">not supported</a> on Android 4.4 (API level 20) and lower, your vector and PNG
+images might differ. You also need to make sure that the manifest contains the code to support your
+changes.</p>
+
+<p>Follow these steps to modify the vector XML file:</p>
+
+<ol>
+  <li>In the <em>Project</em> window, double-click the generated vector XML file in the
+  <strong>drawable</strong> folder.</li>
+  <p>The XML file appears in the editor and <em>Preview</em> windows.</p>
+
+  <img src="{@docRoot}images/tools/vas-codepreview.png" />
+
+  <li>Edit the XML code based on what’s supported by the minimum API level:</li>
+    <ul>
+      <li>Android 5.0 (API level 21) and higher - Vector Asset Studio supports all of the
+      {@link android.graphics.drawable.Drawable} and
+      {@link android.graphics.drawable.VectorDrawable} elements. You can add XML elements and
+      change values.</li>
+      <li>Android 4.4 (API level 20) and lower - Vector Asset Studio supports all of the
+      {@link android.graphics.drawable.Drawable} elements and a subset of the
+      {@link android.graphics.drawable.VectorDrawable} elements. See
+      <a href="#apilevel">Support at Different API Levels</a> for a list. You can change values in
+      the generated code and add XML elements that are supported. Dynamic attributes aren't
+      supported.</li>
+   </ul>
+  <p>For example, if you didn’t select the RTL option in Vector Asset Studio but realize you now
+  need it, you can add the <a href="{@docRoot}reference/android/R.attr.html#autoMirrored">autoMirrored</a>
+  attribute later. To view the RTL version, select <strong>Preview Right-to-Left Layout</strong> in
+  the <img src="{@docRoot}images/tools/vas-rtlmenu.png" style="vertical-align:sub;margin:0;height:17px" alt="" />
+  menu of the <em>Preview</em> window. (Select <strong>None</strong> to remove the RTL preview.)</p>
+<img src="{@docRoot}images/tools/vas-rtl.png" />
+  <p class="note"><strong>Note:</strong> If you’re working with an older project, you might need to
+  add <code>android:supportsRtl="true"</code> to your app manifest. Also, because
+  <code>autoMirrored</code> is a dynamic attribute, it's supported on Android 5.0 (API level 21) and
+  higher only.</p>
+  <li>Build the project and check that the vector and raster images look the same.</li>
+  <p>Remember that the generated PNGs could display differently in the <em>Preview</em> window than
+  in the app due to different rendering engines and any changes made to the vector drawable before a
+  build. If you add code to the vector XML file created by Vector Asset Studio, any features
+  unsupported in Android 4.4 (API level 20) and lower don't appear in the generated PNG files. As a
+  result, when you add code, you should always check that the generated PNGs match the vector
+  drawable. To do so, you could double-click the PNG in the
+  <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Project view</a> of the <em>Project</em>
+  window; the left margin of the code editor also displays the PNG image when your code refers to
+  the drawable.</p>
+  <img src="{@docRoot}images/tools/vas-imageincode.png" />
+</ol>
+
+
+<h2 id="delete">Deleting a Vector Asset from a Project</h2>
+
+<p>Follow these steps to remove a vector asset from a project:</p>
+
+<ol>
+  <li>In the <em>Project</em> window, delete the generated vector XML file by selecting the file and
+  pressing the <strong>Delete</strong> key (or select <strong>Edit</strong> > <strong>Delete</strong>).</li>
+  <p>The <em>Safe Delete</em> dialog appears.</p>
+  <li>Optionally select options to find where the file is used in the project, and click
+  <strong>OK</strong>.</li>
+  <p>Android Studio deletes the file from the project and the drive. However, if you chose to search
+  for places in the project where the file is used and some usages are found, you can view them and
+  decide whether to delete the file.</p>
+  <li>Select <strong>Build</strong> > <strong>Clean Project</strong>.</li>
+  <p>Any auto-generated PNG and XML files corresponding to the deleted vector
+  asset are removed from the project and the drive.</p>
+</ol>
+
+<h2 id="apk">Delivering an App Containing Vector Drawables</h2>
+
+<p>When your minimum API level includes Android 4.4 (API level 20) or lower, you have corresponding
+  vector and raster images in your project. In this case, you have two options for delivering your
+  APK files:</p>
+
+<ul>
+  <li>Create one APK that includes both the vector images and the corresponding raster
+    representations. This solution is the simplest to implement.</li>
+  <li>Create separate APKs for different API levels. When you don’t include the corresponding
+    raster images in the APK for Android 5.0 (API level 21) and higher, the APK can be much smaller in
+    size. For more information, see <a href="{@docRoot}google/play/publishing/multiple-apks.html">Multiple APK Support</a>.</li>
+</ul>
diff --git a/docs/html/tools/help/zipalign.jd b/docs/html/tools/help/zipalign.jd
old mode 100644
new mode 100755
index a32a3658..ed82b27
--- a/docs/html/tools/help/zipalign.jd
+++ b/docs/html/tools/help/zipalign.jd
@@ -16,12 +16,12 @@
 
 <p>This tool should always be used to align your .apk file before 
 distributing it to end-users. The Android build tools can handle
-this for you. When using Eclipse with the ADT plugin, the Export Wizard
-will automatically zipalign your .apk after it signs it with your private key. 
+this for you. Android Studio automatically aligns your .apk after it signs it with your 
+private key. 
 The build scripts used
-when compiling your application with Ant will also zipalign your .apk,
+when compiling your application with Gradle also align your .apk,
 as long as you have provided the path to your keystore and the key alias in
-your project {@code ant.properties} file, so that the build tools 
+your project {@code gradle.properties} file, so that the build tools 
 can sign the package first.</p>
 
 <p class="caution"><strong>Caution:</strong> zipalign must only be performed
diff --git a/docs/html/tools/performance/memory-monitor/index.jd b/docs/html/tools/performance/memory-monitor/index.jd
index a083a14..5b9d0c8 100644
--- a/docs/html/tools/performance/memory-monitor/index.jd
+++ b/docs/html/tools/performance/memory-monitor/index.jd
@@ -78,7 +78,7 @@
          alt=""
          width="300px" />
       <p class="img-caption">
-        <strong>Figure 1. </strong>Starting Memory Monitor.
+        <strong>Figure 1. </strong>Enable ADB Integration.
       </p>
     </div>
 
@@ -87,24 +87,63 @@
     <li>Open your application in Android Studio, build the source,
       and run it on your device or emulator.</li>
 
-    <li>In Android Studio, choose <strong> Tools &gt; Android &gt; Memory Monitor</strong>. You
-      can also click the <em>Android</em> tab in the lower-left corner of the application
-      window to launch the Android runtime window. The CPU and Memory Monitor views appear.</li>
- 
+    <li>In Android Studio, choose <strong>Tools &gt; Android &gt; Enable ADB Integration</strong>.
+
  </ol>
 </div></li>
 
+<li><div style="overflow:hidden">
+<hr>
+  <ol class="padded" start="4">
+
+    <div class="figure" style="">
+  <img src="{@docRoot}images/tools/performance/memory-monitor/gettingstarted_image001b.png"
+         alt=""
+         width="240px" />
+      <p class="img-caption">
+        <strong>Figure 2. </strong>The Android Monitor tab.
+      </p>
+    </div>
+
+    <li>Click the <strong>Android Monitor</strong> tab at the bottom of the runtime window.</li>
+
+    <li>Click the <strong>Memory</strong> tab to show the Memory Monitor tool.</li>
+
+ </ol>
+</div></li>
 
 <li><div style="overflow:hidden">
 <hr>
-  <ol class="padded" start="7">
+  <ol class="padded" start="6">
+
+    <div class="figure" style="">
+  <img src="/images/tools/performance/memory-monitor/gettingstarted_image002.png"
+         alt=""
+         width="400px" />
+      <p class="img-caption">
+        <strong>Figure 3. </strong>The Memory Monitor pane.
+      </p>
+    </div>
+
+    <li>Choose your device from the drop-down menu at the top left of the pane.
+    </li>
+
+    <li>Choose the Activity to monitor from the drop-down menu at the top right of the pane.
+    </li>
+
+ </ol>
+</div></li>
+
+<li><div style="overflow:hidden">
+<hr>
+  <ol class="padded" start="8">
 
     <div class="figure" style="">
   <img src="{@docRoot}images/tools/performance/memory-monitor/gettingstarted_image003.png"
          alt=""
          width="400px" />
       <p class="img-caption">
-        <strong>Figure 1. </strong>Allocated and free memory in Memory Monitor.
+        <strong>Figure 4. </strong>Allocated and free memory in Memory Monitor.
       </p>
     </div>
 
@@ -130,14 +169,14 @@
 
 <li><div style="overflow:hidden">
 <hr>
-  <ol class="padded" start="11">
+  <ol class="padded" start="12">
 
     <div class="figure" style="">
   <img src="{@docRoot}images/tools/performance/memory-monitor/gettingstarted_image005.png"
          alt=""
          width="400px" />
       <p class="img-caption">
-        <strong>Figure 2. </strong>Forcing a GC (Garbage Collection) event.
+        <strong>Figure 5. </strong>Forcing a GC (Garbage Collection) event.
       </p>
     </div>
 
diff --git a/docs/html/tools/performance/profile-gpu-rendering/index.jd b/docs/html/tools/performance/profile-gpu-rendering/index.jd
index 74862b5..5d22e8c 100644
--- a/docs/html/tools/performance/profile-gpu-rendering/index.jd
+++ b/docs/html/tools/performance/profile-gpu-rendering/index.jd
@@ -169,7 +169,7 @@
     screen asynchronously. In certain situations, the GPU can have too much work to do,
     and your CPU will have to wait before it can submit new commands.
     When this happens, you'll see spikes in the Process (orange bar) and Execute (red bar)
-    stages, and the sommand submission will block until more room is made on the
+    stages, and the command submission will block until more room is made on the
     GPU command queue.
   </p>
 
diff --git a/docs/html/tools/projects/index.jd b/docs/html/tools/projects/index.jd
index 8665479..344e844 100644
--- a/docs/html/tools/projects/index.jd
+++ b/docs/html/tools/projects/index.jd
@@ -100,7 +100,7 @@
 
    <dt><code>build</code></dt>
 
-   <dd>This directory stories the build output for all project modules.</dd>
+   <dd>This directory stores the build output for all project modules.</dd>
 
 
     <dt><code>gradle</code></dt>
@@ -176,8 +176,9 @@
     <dt><code>src/</code></dt>
 
     <dd>Contains your stub Activity file, which is stored at
-    <code>src<em>/main/java/<namespace.applicationname>/ActivityName></em>.java</code>. All other source
-    code files (such as <code>.java</code> or <code>.aidl</code> files) go here as well.</dd>
+    <code>src<em>/main/java/&lt;namespace.appname&gt;/&lt;ActivityName&gt;</em>.java</code>. All
+    other source code files (such as <code>.java</code> or <code>.aidl</code> files) go here as
+    well.</dd>
 
      <dl>
        <dt><code>androidTest/</code></dt>
@@ -185,7 +186,7 @@
        <dd>Contains the instrumentation tests. For more information, see the
        <a href="{@docRoot}tools/testing/index.html">Android Test documentation</a>.</dd>
 
-       <dt><code>main/java/com.&gt;project&lt;.&gt;app&lt;</code></dt>
+       <dt><code>main/java/com.&lt;project&gt;.&lt;app&gt;</code></dt>
 
        <dd>Contains Java code source for the app activities.</dd>
 
diff --git a/docs/html/tools/projects/projects-eclipse.jd b/docs/html/tools/projects/projects-eclipse.jd
deleted file mode 100644
index af85015..0000000
--- a/docs/html/tools/projects/projects-eclipse.jd
+++ /dev/null
@@ -1,273 +0,0 @@
-page.title=Managing Projects from Eclipse with ADT
-parent.title=Managing Projects
-parent.link=index.html
-@jd:body
-
- <div id="qv-wrapper">
-    <div id="qv">
-      <h2>In this document</h2>
-
-      <ol>
-        <li><a href="#CreatingAProject">Creating an Android Project</a></li>
-
-        <li><a href="#SettingUpLibraryProject">Setting up a Library Project</a></li>
-
-        <li><a href="#ReferencingLibraryProject">Referencing a Library Project</a></li>
-      </ol>
-
-      <h2>See also</h2>
-
-      <ol>
-        <li><a href=
-        "{@docRoot}tools/testing/testing_eclipse.html#CreateTestProjectEclipse">Testing
-        from Eclipse with ADT</a></li>
-      </ol>
-    </div>
-  </div>
-
-  <p>Eclipse and the ADT plugin provide GUIs and wizards to create all three types of projects
-  (Android project, Library project, and Test project):
-
-  <ul>
-    <li>An Android project contains all of the files and resources that are needed to build a project into
-  an .apk file for installation. You need to create an Android project for any application that you
-  want to eventually install on a device.</li>
-
-  <li>You can also designate an Android project as a library project, which allows it to be shared
-  with other projects that depend on it. Once an Android project is designated as a library
-  project, it cannot be installed onto a device.</li>
-
-  <li>Test projects extend JUnit test functionality to include Android specific functionality. For
-  more information on creating a test project, see <a href=
-  "{@docRoot}tools/testing/testing_eclipse.html">Testing from Eclipse with ADT</a>.</li>
-  </ul>
-
-  <h2 id="CreatingAProject">Creating an Android Project</h2>
-
-  <p>The ADT plugin provides a <em>New Project Wizard</em> that you can use to quickly create a new
-  Android project (or a project from existing code). To create a new project:</p>
-
-  <ol>
-    <li>Select <strong>File</strong> &gt; <strong>New</strong> &gt; <strong>Project</strong>.</li>
-
-    <li>Select <strong>Android</strong> &gt; <strong>Android Application Project</strong>, and click
-    <strong>Next</strong>.</li>
-
-    <li>Enter the basic settings for the project:
-
-      <ul>
-        <li>Enter an <strong>Application Name</strong>. This name is used as the title of your
-        application launcher icon when it is installed on a device.</li>
-
-        <li>Enter a <strong>Project Name</strong>. This text is used as the name of the folder where
-        your project is created.</li>
-
-        <li>Enter a <strong>Package Name</strong>. This class package namespace creates the initial
-        package structure for your applications code files and is added as the
-        <a href="{@docRoot}guide/topics/manifest/manifest-element.html#package">{@code package}</a>
-        attribute in your application's
-        <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">Android manifest file</a>.
-        This manifest value serves as the unique identifier for your application app when you
-        distribute it to users. The package name must follow the same rules as packages in the Java
-        programming language.</li>
-
-        <li>Select a <strong>Minimum Required SDK</strong>. This setting indicates the lowest
-        version of the Android platform that your application supports. This value sets the
-        <code>minSdkVersion</code> attribute in the
-        <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt;</a>
-        element of your manifest file.</li>
-
-        <li>Select a <strong>Target SDK</strong>. This setting indicates the highest version of
-        Android with which you have tested with your application and sets the
-        <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code
-        targetSdkVersion}</a> attribute in your application's' manifest file.
-
-          <p class="note"><strong>Note:</strong> You can change the target SDK for your
-          project at any time: Right-click the project in the Package Explorer, select
-          <strong>Properties</strong>, select <strong>Android</strong> and then check the desired
-          <strong>Project Build Target</strong>.</p>
-        </li>
-
-        <li>Select a <strong>Compile With</strong> API version. This setting specifies what version
-        of the SDK to compile your project against. We strongly recommend using the most recent
-        version of the API.</li>
-
-        <li>Select a <strong>Theme</strong>. This setting specifies which standard Android
-        <a href="{@docRoot}design/style/themes.html">visual style</a> is applied to your
-        application.</li>
-
-        <li>Click <strong>Next</strong>.</li>
-      </ul>
-    </li>
-
-    <li>In the <strong>Configure Project</strong> page, select the desired settings and click
-      <strong>Next</strong>. Leave the <strong>Create activity</strong> option checked so you can
-      start your application with some essential components.</li>
-
-    <li>In the <strong>Configure Launcher Icon</strong> page, create an icon and click
-      <strong>Next</strong>.</li>
-
-    <li>In the <strong>Create Activity</strong> page, select activity template and click
-      <strong>Next</strong>. For more information about Android code templates, see
-      <a href="{@docRoot}tools/projects/templates.html">Using Code Templates</a>.
-      </li>
-
-    <li>Click <strong>Finish</strong> and the wizard creates a new project according to the options
-      you have chosen.</li>
-  </ol>
-
-  <p class="note"><strong>Tip:</strong> You can also start the New Project Wizard by clicking the
-  <strong>New</strong> <img src="/images/tools/eclipse-new.png"
-  style="vertical-align:baseline;margin:0"> icon in the toolbar.</p>
-
-
-  <h2 id="SettingUpLibraryProject">Setting up a Library Project</h2>
-
-  <p>A library project is a standard Android project, so you can create a new one in the same way
-  as you would a new application project.</p>
-
-  <p>To create a new library project:</p>
-
-  <ol>
-    <li>Select <strong>File</strong> &gt; <strong>New</strong> &gt; <strong>Project</strong>.</li>
-
-    <li>Select <strong>Android</strong> &gt; <strong>Android Application Project</strong>, and click
-    <strong>Next</strong>.</li>
-
-    <li>Enter the basic settings for the project, including <strong>Application Name</strong>,
-    <strong>Project Name</strong>, <strong>Package Name</strong>, and SDK settings.</li>
-
-    <li>In the <strong>Configure Project</strong> page, select the <strong>Mark this project as a
-    library</strong> option to flag the project as a library.</li>
-
-    <li>Set the other options as desired and click <strong>Next</strong>.</li>
-
-    <li>Follow the instructions to complete the wizard and create a new library project.</li>
-  </ol>
-
-  <p>You can also convert an existing application project into a library. To do so, simply open the
-    Properties for the project and select the <strong>is Library</strong> checkbox, as shown in
-    the figure below.</p>
-
-  <img src= "{@docRoot}images/developing/adt-props-isLib.png">
-  <p class="img-caption"><strong>Figure 1.</strong> Marking a project as an Android library.</p>
-
-  <p>To set the a project's properties to indicate that it is a library project:</p>
-
-  <ol>
-    <li>In the <strong>Package Explorer</strong>, right-click the library project and select
-    <strong>Properties</strong>.</li>
-
-    <li>In the <strong>Properties</strong> window, select the <strong>Android</strong> properties
-    group in the left pane and locate the <strong>Library</strong> properties in the right pane.</li>
-
-    <li>Select the <strong>is Library</strong> check box and click <strong>Apply</strong>.</li>
-
-    <li>Click <strong>OK</strong> to close the <strong>Properties</strong> window.</li>
-  </ol>
-
-  <p>Once you create a library project or mark an existing project as a library, you can reference
-  the library project in other Android application projects. For more information, see the
-  <a href="#ReferencingLibraryProject">Referencing a library project</a> section.
-
-
-  <h3>Creating the manifest file</h3>
-
-  <p>A library project's manifest file must declare all of the shared components that it includes,
-  just as would a standard Android application. For more information, see the documentation for
-  <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>.</p>
-
-  <p>For example, the <a href=
-  "{@docRoot}resources/samples/TicTacToeLib/AndroidManifest.html">TicTacToeLib</a> example library
-  project declares the activity <code>GameActivity</code>:</p>
-  <pre>
-&lt;manifest&gt;
-  ...
-  &lt;application&gt;
-    ...
-    &lt;activity android:name="GameActivity" /&gt;
-    ...
-  &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-  <h2 id="ReferencingLibraryProject">Referencing a library project</h2>
-
-  <p>If you are developing an application and want to include the shared code or resources from a
-  library project, you can do so easily by adding a reference to the library project in the
-  application project's Properties.</p>
-
-  <p>To add a reference to a library project, follow these steps:</p>
-
-  <ol>
-    <li>Make sure that both the project library and the application project that depends on it are
-      in your workspace. If one of the projects is missing, import it into your workspace.</li>
-
-    <li>In the <strong>Package Explorer</strong>, right-click the dependent project and select
-    <strong>Properties</strong>.</li>
-
-    <li>In the <strong>Properties</strong> window, select the "Android" properties group at left
-    and locate the <strong>Library</strong> properties at right.</li>
-
-    <li>Click <strong>Add</strong> to open the <strong>Project Selection</strong> dialog.</li>
-
-    <li>From the list of available library projects, select a project and click
-    <strong>OK</strong>.</li>
-
-    <li>When the dialog closes, click <strong>Apply</strong> in the <strong>Properties</strong>
-    window.</li>
-
-    <li>Click <strong>OK</strong> to close the <strong>Properties</strong> window.</li>
-  </ol>
-
-  <p>As soon as the Properties dialog closes, Eclipse rebuilds the project, including the contents
-  of the library project.</p>
-
-  <p>Figure 2 shows the Properties dialog that lets you add library references and move
-  them up and down in priority.</p><img src="{@docRoot}images/developing/adt-props-libRef.png">
-
-  <p class="img-caption"><strong>Figure 2.</strong> Adding a reference to a
-     library project in the properties of an application project.</p>
-
-  <p>If you are adding references to multiple libraries, note that you can set their relative
-  priority (and merge order) by selecting a library and using the <strong>Up</strong> and
-  <strong>Down</strong> controls. The tools merge the referenced libraries with your application
-  starting from lowest priority (bottom of the list) to highest (top of the list). If more than one
-  library defines the same resource ID, the tools select the resource from the library with higher
-  priority. The application itself has highest priority and its resources are always used in
-  preference to identical resource IDs defined in libraries.</p>
-
-  <h3>Declaring library components in the manifest file</h3>
-
-  <p>In the manifest file of the application project, you must add declarations of all components
-  that the application will use that are imported from a library project. For example, you must
-  declare any <code>&lt;activity&gt;</code>, <code>&lt;service&gt;</code>,
-  <code>&lt;receiver&gt;</code>, <code>&lt;provider&gt;</code>, and so on, as well as
-  <code>&lt;permission&gt;</code>, <code>&lt;uses-library&gt;</code>, and similar elements.</p>
-
-  <p>Declarations should reference the library components by their fully-qualified package names,
-  where appropriate.</p>
-
-  <p>For example, the <a href=
-  "{@docRoot}resources/samples/TicTacToeMain/AndroidManifest.html">TicTacToeMain</a> example
-  application declares the library activity <code>GameActivity</code> like this:</p>
-  <pre>
-&lt;manifest&gt;
-  ...
-  &lt;application&gt;
-    ...
-    &lt;activity android:name="com.example.android.tictactoe.library.GameActivity" /&gt;
-    ...
-  &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-
-  <p>For more information about the manifest file, see the documentation for <a href=
-  "{@docRoot}guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a>.</p>
-
-
-
-
-
-
-
diff --git a/docs/html/tools/projects/templates.jd b/docs/html/tools/projects/templates.jd
index 002e2c5..676ca50 100644
--- a/docs/html/tools/projects/templates.jd
+++ b/docs/html/tools/projects/templates.jd
@@ -1,6 +1,6 @@
 page.title=Using Code Templates
 page.image=images/cards/card-using-code-templates_16x9_2x.png
-page.metaDescription=Quickly create Android app projects with various UI or functional components. 
+page.metaDescription=Quickly create Android app projects with various UI or functional components.
 page.tags=studio,templates,firstapp
 @jd:body
 
@@ -29,7 +29,6 @@
     </div>
   </div>
 
-<img style="float:right" src="{@docRoot}images/cards/card-using-code-templates_16x9_2x.png">
 <p>The SDK tools provide templates for quickly creating Android application projects with the basic
   structure or for adding components to your existing application modules. The code templates
   provided by the Android SDK follow the Android design and development guidelines to get you on the
@@ -45,6 +44,18 @@
   <li><a href="#object-templates">Other Templates</a></li>
 </ul>
 
+<p>
+  The templates use <a href=
+  "{@docRoot}tools/support-library/features.html">support library</a> objects
+  if such objects are available. The support library objects make new features
+  available on the widest range of platforms. For example, since the templates
+  use the <a href=
+  "{@docRoot}tools/support-library/features.html#v7-appcompat">appcompat
+  library</a>, apps based on the templates use <a href=
+  "{@docRoot}design/material/index.html">material design</a> user interface
+  principles even if they are running on older Android devices that do not
+  directly support material design.
+</p>
 
 <h2 id="app-templates">Application Templates</h2>
 
diff --git a/docs/html/tools/publishing/app-signing-eclipse.jd b/docs/html/tools/publishing/app-signing-eclipse.jd
deleted file mode 100644
index 738e488..0000000
--- a/docs/html/tools/publishing/app-signing-eclipse.jd
+++ /dev/null
@@ -1,64 +0,0 @@
-page.title=Signing Your Applications from Eclipse with ADT
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>In this document</h2>
-
-<ol>
-<li><a href="#signing">Signing Your App for Release</a></li>
-</ol>
-
-<h2>See also</h2>
-
-<ol>
-<li><a href="{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a></li>
-</ol>
-
-</div>
-</div>
-
-
-<p>Android requires that all apps be digitally signed with a certificate before they can be
-installed. Android uses this certificate to identify the author of an app, and the certificate
-does not need to be signed by a certificate authority.</p>
-
-<p>This document provides detailed instructions about how to sign your apps in release mode with the
-ADT plugin for Eclipse. For information about how to obtain a certificate for signing your app, see
-<a href="{@docRoot}tools/publishing/app-signing.html">Signing Your Applications</a>.
-</p>
-
-
-<h2 id="signing">Signing Your App for Release</h2>
-
-<p>To sign your app for release with ADT, follow these steps:</p>
-
-<ol>
-<li>Select the project in the Package Explorer and select <strong>File</strong> >
-<strong>Export</strong>.</li>
-<li>On the <em>Export</em> window, select <strong>Export Android Application</strong> and click
-<strong>Next</strong>.</li>
-<li>On the <em>Export Android Application</em> window, select the project you want to sign and
-click <strong>Next</strong>.</li>
-<li>
-<p>On the next window, enter the location to create a keystore and a keystore password. If you
-already have a keystore, select <strong>Use existing keystore</strong>, enter your keystore's
-location and password, and go to step 6.</p>
-<img src="{@docRoot}images/tools/signadt3.png" alt=""
-     width="488" height="270" style="margin-top:15px"/>
-<p class="img-caption"><strong>Figure 6</strong>. Select a keystore in ADT.</p>
-</li>
-<li><p>On the next window, provide the required information as shown in figure 5.<p>
-<p>Your key should be valid for at least 25 years, so you can sign app updates with the same key
-through the lifespan of your app.</p>
-<img src="{@docRoot}images/tools/signadt4.png" alt=""
-     width="488" height="448" style="margin-top:15px"/>
-<p class="img-caption"><strong>Figure 7</strong>. Create a private key in ADT.</p>
-</li>
-<li><p>On the next window, select the location to export the signed APK.</p>
-<img src="{@docRoot}images/tools/signadt5.png" alt=""
-     width="488" height="217" style="margin-top:15px"/>
-<p class="img-caption"><strong>Figure 8</strong>. Export the signed APK in ADT.</p>
-</li>
-</ol>
diff --git a/docs/html/tools/publishing/app-signing.jd b/docs/html/tools/publishing/app-signing.jd
index 4265a63..4b74f5f 100644
--- a/docs/html/tools/publishing/app-signing.jd
+++ b/docs/html/tools/publishing/app-signing.jd
@@ -16,7 +16,7 @@
 </li>
 <li><a href="#studio">Signing Your App in Android Studio</a>
   <ol>
-  	<li><a href="sign-auto">Automatically Signing Your App</a></li>
+  	<li><a href="#sign-auto">Automatically Signing Your App</a></li>
   </ol>
 </li>
 <li><a href="#studio">Signing Your App with Android Studio</a></li>
@@ -60,14 +60,14 @@
 you run or debug your project from the IDE.</p>
 
 <p>You can run and debug an app signed in debug mode on the emulator and on devices connected
-to your development manchine through USB, but you cannot distribute an app signed in debug
+to your development machine through USB, but you cannot distribute an app signed in debug
 mode.</p>
 
 <p>By default, the <em>debug</em> configuration uses a debug keystore, with a known
 password and a default key with a known password.
-The debug keystore is located in $HOME/.android/debug.keystore, and is created if not present.
-
-The debug build type is set to use this debug <code>SigningConfig</code> automatically. </p>
+The debug keystore is located in <code>$HOME/.android/debug.keystore</code>, and
+is created if not present.
+The debug build type is set to use this debug <code>SigningConfig</code> automatically.</p>
 
 <p>For more information about how to build and run apps in debug mode, see
 <a href="{@docRoot}tools/building/index.html">Building and Running</a>.</p>
@@ -82,7 +82,8 @@
 <li><em>Create a private key.</em> A <strong>private key</strong> represents the entity to
 be identified with the app, such as a person or a company.</li>
 <li><p>Add the signing configuration to the build file for the <code>app</code> module:</p>
-        <p><pre>
+
+<pre>
 ...
 android {
     ...
@@ -103,12 +104,13 @@
     }
 }
 ...
-</pre></p>
+</pre>
     </li>
 <li>Invoke the <code>assembleRelease</code> build task from Android Studio.</li>
 </ol>
 
-<p>The package in <code>app/build/apk/app-release.apk</code> is now signed with your release key.</p>
+<p>The package in <code>app/build/apk/app-release.apk</code> is now signed with your release
+key.</p>
 
 <p class="note"><strong>Note:</strong> Including the passwords for your release key and keystore
 inside the build file is not a good security practice. Alternatively, you can configure the build
@@ -156,26 +158,40 @@
 
 <ol>
 <li>On the menu bar, click <strong>Build</strong> &gt; <strong>Generate Signed APK</strong>.</li>
-<li><p>On the <em>Generate Signed APK Wizard</em> window, click <strong>Create new</strong> to create
-a new keystore.</p><p>If you already have a keystore, go to step 4.</p></li>
+<li><p>On the <em>Generate Signed APK Wizard</em> window, click <strong>Create new</strong> to
+create a new keystore.</p>
+<p>If you already have a keystore, go to step 4.</p></li>
 <li><p>On the <em>New Key Store</em> window, provide the required information as shown
-in figure 1.</p><p>Your key should be valid for at least 25 years, so you can sign app updates
+in figure 1.</p>
+<p>Your key should be valid for at least 25 years, so you can sign app updates
 with the same key through the lifespan of your app.</p>
 <img src="{@docRoot}images/tools/signstudio2.png" alt=""
      width="416" height="364" style="margin-top:15px"/>
 <p class="img-caption"><strong>Figure 1</strong>. Create a new keystore in Android Studio.</p>
 </li>
-<li><p>On the <em>Generate Signed APK Wizard</em> window, select a keystore, a private key, and enter
-the passwords for both. Then click <strong>Next</strong>.</p>
+<li><p>On the <em>Generate Signed APK Wizard</em> window, select a keystore, a private key, and
+enter the passwords for both. Then click <strong>Next</strong>.</p>
 <img src="{@docRoot}images/tools/signstudio1.png" alt=""
      width="349" height="232" style="margin-top:15px"/>
 <p class="img-caption"><strong>Figure 2</strong>. Select a private key in Android Studio.</p>
 </li>
-<li><p>On the next window, select a destination for the signed APK and click
-<strong>Finish</strong>.</p>
+<li><p>
+  On the next window, select a destination for the signed APK(s), select the
+  build type, (if applicable) choose the product flavor(s), and click
+  <strong>Finish</strong>.</p>
 <img src="{@docRoot}images/tools/signstudio3.png" alt=""
      width="350" height="175" style="margin-top:15px"/>
-<p class="img-caption"><strong>Figure 3</strong>. Generate a signed APK in Android Studio.</p>
+<p class="img-caption">
+  <strong>Figure 3</strong>. Generate signed APKs for the selected product
+  flavors.
+</p>
+<p class="note">
+  <strong>Note:</strong> If your project uses product flavors, you can select
+  multiple product flavors while holding down the <strong>Ctrl</strong> key on
+  Windown/Linux, or the <strong>Command</strong> key on Mac OSX. Android Studio
+  will generate a separate APK for each selected product flavor.
+</p>
+
 </li>
 </ol>
 
@@ -193,14 +209,16 @@
 more than one), and enter the required information.</p>
 <img src="{@docRoot}images/tools/signstudio10.png" alt=""
      width="623" height="372" style="margin-top:15px"/>
-<p class="img-caption"><strong>Figure 4</strong>. Create a signing configuration in Android Studio.</p>
+<p class="img-caption"><strong>Figure 4</strong>. Create a signing configuration in Android
+Studio.</p>
 </li>
 <li>Click on the <strong>Build Types</strong> tab.</li>
 <li>Select the <strong>release</strong> build.</li>
 <li><p>Under <em>Signing Config</em>, select the signing configuration you just created.</p>
 <img src="{@docRoot}images/tools/signstudio11.png" alt=""
      width="623" height="372" style="margin-top:15px"/>
-<p class="img-caption"><strong>Figure 5</strong>. Select a signing configuration in Android Studio.</p>
+<p class="img-caption"><strong>Figure 5</strong>. Select a signing configuration in Android
+Studio.</p>
 </li>
 <li>Click <strong>OK</strong>.</li>
 </ol>
@@ -299,9 +317,10 @@
 <ol>
 <li>
   <p>Generate a private key using
-  <code><a href="http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html">keytool</a></code>.
+  <code><a href="http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html"
+    >keytool</a></code>.
   For example:</p>
-<pre>
+<pre class="no-pretty-print">
 $ keytool -genkey -v -keystore my-release-key.keystore
 -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
 </pre>
@@ -317,7 +336,7 @@
   <p>Sign your app with your private key using
   <code><a href="http://docs.oracle.com/javase/6/docs/technotes/tools/windows/jarsigner.html">jarsigner</a></code>:
   </p>
-<pre>
+<pre class="no-pretty-print">
 $ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1
 -keystore my-release-key.keystore my_application.apk alias_name
 </pre>
@@ -326,14 +345,14 @@
 </li>
 <li style="margin-top:18px">
   <p>Verify that your APK is signed. For example:</p>
-<pre>
+<pre class="no-pretty-print">
 $ jarsigner -verify -verbose -certs my_application.apk
 </pre>
 </li>
 <li style="margin-top:18px">
   <p>Align the final APK package using
   <code><a href="{@docRoot}tools/help/zipalign.html">zipalign</a></code>.</p>
-<pre>
+<pre class="no-pretty-print">
 $ zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk
 </pre>
   <p><code>zipalign</code> ensures that all uncompressed data starts with a particular byte
diff --git a/docs/html/tools/publishing/preparing.jd b/docs/html/tools/publishing/preparing.jd
index 0b61aa7..3acaedc 100644
--- a/docs/html/tools/publishing/preparing.jd
+++ b/docs/html/tools/publishing/preparing.jd
@@ -1,4 +1,5 @@
 page.title=Preparing for Release
+page.metaDescription=Developer documentation on how to build the signed, release-ready APK. This process is the same for all Android apps.
 @jd:body
 
 <div id="qv-wrapper">
diff --git a/docs/html/tools/publishing/publishing_overview.jd b/docs/html/tools/publishing/publishing_overview.jd
index e42b2fb..167758a 100644
--- a/docs/html/tools/publishing/publishing_overview.jd
+++ b/docs/html/tools/publishing/publishing_overview.jd
@@ -1,4 +1,5 @@
 page.title=Publishing Overview
+page.metaDescription=Start here for an overview of publishing options for Android apps.
 @jd:body
 
 <div id="qv-wrapper">
diff --git a/docs/html/tools/publishing/versioning.jd b/docs/html/tools/publishing/versioning.jd
index 4af6f30..9908d81 100644
--- a/docs/html/tools/publishing/versioning.jd
+++ b/docs/html/tools/publishing/versioning.jd
@@ -80,6 +80,13 @@
 strong resemblance to the application release version that is visible to the
 user (see <code>android:versionName</code>, below). Applications and publishing
 services should not display this version value to users.</p>
+
+<p class="warning">
+    <strong>Warning:</strong> The greatest possible value for <code>
+    android:versionCode</code> is <code>MAXINT</code> (2147483647). However, if
+    you upload an app with this value, your app can't ever be updated.
+</p>
+
 </li>
 <li><code>android:versionName</code> &mdash; A string value that represents the
 release version of the application code, as it should be shown to users.
diff --git a/docs/html/tools/revisions/build-tools.jd b/docs/html/tools/revisions/build-tools.jd
old mode 100644
new mode 100755
index 1912bb2..5d9ba05
--- a/docs/html/tools/revisions/build-tools.jd
+++ b/docs/html/tools/revisions/build-tools.jd
@@ -26,31 +26,7 @@
 
 <p>To use a specific version of the Build Tools in your application project:</p>
 
-<div class="toggle-content closed">
-<p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
-  <img src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
-  />Using Eclipse</a></p>
 
-  <div class="toggle-content-toggleme">
-  <ol>
-    <li>In the root folder of your application project, find the {@code project.properties}
-      file.</li>
-    <li>Open the file and specify the Build Tools version by adding a {@code buildtools} property
-      on a separate line:
-<pre>
-sdk.buildtools=17.0.0
-</pre>
-    </li>
-  </ol>
-  </div>
-</div>
-
-<div class="toggle-content closed">
-<p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
-  <img src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
-  />Using Android Studio</a></p>
-
-  <div class="toggle-content-toggleme">
   <ol>
     <li>In the root folder of your application project, find the {@code build.gradle}
       file.</li>
@@ -65,8 +41,6 @@
 </pre>
     </li>
   </ol>
-  </div>
-</div>
 
 
 <h2 id="notes">Revisions</h2>
@@ -77,7 +51,48 @@
 
 <div class="toggle-content opened">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-content-img"
+      alt=""/>Build Tools, Revision 23.0.3</a> <em>(March 2016)</em>
+  </p>
+  <div class="toggle-content-toggleme">
+    <ul>
+      <li>Fix issues in the <a href="{@docRoot}guide/topics/renderscript/compute.html">RenderScript</a>
+        Support Library on arm64 devices.</li>
+      <li>Fix issues in the <a href="{@docRoot}guide/topics/renderscript/compute.html">RenderScript</a>
+        Support Library on certain Jelly Bean devices.</li>
+      <li>Support <code>renderscriptTargetAPI 21+</code> when using Android
+        Plugin for Gradle, Revision 2.1.0 and above .</li>
+    </ul>
+  </div>
+</div>
+
+<div class="toggle-content opened">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-content-img"
+      alt=""/>Build Tools, Revision 23.0.2</a> <em>(November 2015)</em>
+  </p>
+  <div class="toggle-content-toggleme">
+    <ul>
+      <li>Improved the merging performance of the <code>dx</code> tool.</li>
+      <li>Fixed issues in the <a href="{@docRoot}guide/topics/renderscript/compute.html">RenderScript</a>
+        compiler for Windows.</li>
+    </ul>
+  </div>
+</div>
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
+      alt=""/>Build Tools, Revision 23.0.1</a> <em>(October 2015)</em>
+  </p>
+  <div class="toggle-content-toggleme">
+    <p>Fixed issues in the RenderScript tools.</p>
+  </div>
+</div>
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 23.0.0</a> <em>(August 2015)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -88,7 +103,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 22.0.1</a> <em>(March 2015)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -101,7 +116,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 22.0.0</a> <em>(March 2015)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -112,7 +127,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 21.1.2</a> <em>(February 2015)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -123,7 +138,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 21.1.1</a> <em>(November 2014)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -134,7 +149,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 21.1</a> <em>(October 2014)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -146,7 +161,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 21.0.2</a> <em>(October 2014)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -157,7 +172,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 21.0.1</a> <em>(October 2014)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -168,7 +183,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 21.0.0</a> <em>(October 2014)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -191,7 +206,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 20.0.0</a> <em>(June 2014)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -210,7 +225,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 19.1.0</a> <em>(May 2014)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -230,7 +245,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 19.0.3</a> <em>(March 2014)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -242,7 +257,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 19.0.2</a> <em>(February 2014)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -269,7 +284,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 19.0.1</a> <em>(December 2013)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -292,7 +307,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 19</a> <em>(October 2013)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -304,7 +319,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 18.1.1</a> <em>(September 2013)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -316,7 +331,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 18.1.0</a> <em>(September 2013)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -328,7 +343,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 18.0.1</a> <em>(July 2013)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -340,7 +355,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Build Tools, Revision 17</a> <em>(May 2013)</em>
   </p>
   <div class="toggle-content-toggleme">
diff --git a/docs/html/tools/revisions/gradle-plugin.jd b/docs/html/tools/revisions/gradle-plugin.jd
index 17e6d79..540bbcd 100644
--- a/docs/html/tools/revisions/gradle-plugin.jd
+++ b/docs/html/tools/revisions/gradle-plugin.jd
@@ -36,10 +36,145 @@
 <p>For a summary of known issues in Android Plugin for Gradle, see <a
 href="http://tools.android.com/knownissues">http://tools.android.com/knownissues</a>.</p>
 
-
 <div class="toggle-content opened">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-content-img"
+      alt=""/>Android Plugin for Gradle, Revision 1.5.0</a> <em>(November 2015)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+
+    <dl>
+    <dt>Dependencies:</dt>
+
+    <dd>
+      <ul>
+        <li>Gradle 2.2.1 or higher.</li>
+        <li>Build Tools 21.1.1 or higher.</li>
+      </ul>
+    </dd>
+
+    <dt>General Notes:</dt>
+    <dd>
+      <ul>
+      <li>Integrated the Data Binding Plugin into the Android Plugin for Gradle. To enable it, add
+        the following code to each per-project <code>build.gradle</code> file that uses the
+        plugin:</li>
+<pre>
+android {
+    dataBinding {
+        enabled = true
+    }
+}
+</pre>
+      <li>Added a new <a href="http://google.github.io/android-gradle-dsl/javadoc/1.5/" class="external-link">Transform API</a>
+       to allow third-party plugins to manipulate compiled <code>.class</code> files before they’re
+       converted to <code>.dex</code> files. The Transform API simplifies injecting custom class
+       manipulations while offering more flexibility regarding what you can manipulate. To insert a
+       transform into a build, create a new class implementing one of the <code>Transform</code>
+       interfaces, and register it with <code>android.registerTransform(theTransform)</code> or
+       <code>android.registerTransform(theTransform, dependencies)</code>. There’s no need to
+       wire tasks together. Note the following about the Transform API:</li>
+       <ul>
+        <li>A transform can apply to one or more of the following: the current project, subprojects,
+          and external libraries.</li>
+          <li>A transform must be registered globally, which applies them to all variants.</li>
+          <li>Internal code processing, through the Java Code Coverage Library (JaCoCo), ProGuard,
+            and MultiDex, now uses the Transform API. However, the Java Android Compiler Kit
+            (Jack) doesn’t use this API: only the <code>javac/dx</code> code path does.</li>
+          <li>Gradle executes the transforms in this order: JaCoCo, third-party plugins, ProGuard.
+          The execution order for third-party plugins matches the order in which the transforms are
+          added by the third party plugins; third-party plugin developers can't control the execution
+          order of the transforms through an API.</li>
+      </ul>
+      <li>Deprecated the <code>dex</code> getter from the <code>ApplicationVariant</code> class.
+        You can't access the <code>Dex</code> task through the variant API anymore because it’s now
+        accomplished through a transform. There's
+        currently no replacement for controlling the dex process.</li>
+      <li>Fixed incremental support for assets.</li>
+      <li>Improved MultiDex support by making it available for test projects, and
+        tests now automatically have the <code>com.android.support:multidex-instrumentation</code>
+        dependency.</li>
+      <li>Added the ability to properly fail a Gradle build and report the underlying error cause
+        when the Gradle build invokes asynchronous tasks and there’s a failure in the worker
+        process.</li>
+      <li>Added support for configuring a specific Application Binary Interface (ABI) in variants
+        that contain multiple ABIs.</li>
+      <li>Added support for a comma-separated list of device serial numbers for the
+        <code>ANDROID_SERIAL</code> environment variable when installing or running tests.</li>
+      <li>Fixed an installation failure on devices running Android 5.0 (API level 20) and higher
+        when the APK name contains a space.</li>
+      <li>Fixed various issues related to the Android Asset Packaging Tool (AAPT) error output.</li>
+      <li>Added JaCoCo incremental instrumentation support for faster incremental builds. The
+        Android Plugin for Gradle now invokes the JaCoCo instrumenter directly. To force a newer
+        version of the JaCoCo instrumenter, you need to add it as a build script dependency.</li>
+      <li>Fixed JaCoCo support so it ignores files that aren’t classes.</li>
+      <li>Added vector drawable support for generating PNGs at build time for backward-compatibility.
+        Android Plugin for Gradle generates PNGs for every vector drawable found in a resource
+        directory that doesn’t specify an API version or specifies an
+        <code>android:minSdkVersion</code> attribute of 20 or lower in the
+        <code>&lt;uses-sdk&gt;</code> element in the app manifest. You can set PNG densities by
+        using the <code>generatedDensities</code> property in the <code>defaultConfig</code> or
+        <code>productFlavor</code> sections of a <code>build.gradle</code> file.</li>
+      <li>Added sharing of the mockable <code>android.jar</code>, which the plugin generates only
+        once and uses for unit testing. Multiple modules, such as <code>app</code> and
+        <code>lib</code>, now share it. Delete <code>$rootDir/build</code> to regenerate it. </li>
+      <li>Changed the processing of Java resources to occur before the obfuscation tasks instead of
+        during the packaging of the APK. This change allows the obfuscation tasks to have a chance
+        to adapt the Java resources following packages obfuscation.</li>
+      <li>Fixed an issue with using Java Native Interface (JNI) code in the experimental library
+        plugin.</li>
+      <li>Added the ability to set the platform version separately from the
+        <code>android:compileSdkVersion</code> attribute in the experimental library
+        plugin.</li>
+     </ul>
+    </dd>
+  </div>
+</div>
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
+      alt=""/>Android Plugin for Gradle, Revision 1.3.1</a> <em>(August 2015)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+
+    <dl>
+    <dt>Dependencies:</dt>
+
+    <dd>
+      <ul>
+        <li>Gradle 2.2.1 or higher.</li>
+        <li>Build Tools 21.1.1 or higher.</li>
+      </ul>
+    </dd>
+
+    <dt>General Notes:</dt>
+    <dd>
+      <ul>
+      <li>Fixed the <a href="{@docRoot}tools/help/zipalign.html">ZipAlign</a> task to properly
+        consume the output of the previous task when using a customized filename. </li>
+      <li>Fixed <a href="{@docRoot}guide/topics/renderscript/compute.html">Renderscript</a>
+        packaging with the <a href="{@docRoot}tools/sdk/ndk/index.html">NDK</a>. </li>
+      <li>Maintained support for the <code>createDebugCoverageReport</code> build task. </li>
+      <li>Fixed support for customized use of the <code>archiveBaseName</code> property
+        in the <code>build.gradle</code> build> file. </li>
+      <li>Fixed the <code>Invalid ResourceType</code>
+        <a href="{@docRoot}tools/help/lint.html">lint</a> warning caused by parameter method
+        annotation lookup when running
+        <a href="{@docRoot}tools/help/lint.html">lint</a> outside of Android Studio.</li>
+     </ul>
+    </dd>
+  </div>
+</div>
+
+
+
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Plugin for Gradle, Revision 1.3.0</a> <em>(July 2015)</em>
   </p>
 
@@ -139,7 +274,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Plugin for Gradle, Revision 1.2.0</a> <em>(April 2015)</em>
   </p>
 
@@ -206,7 +341,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Plugin for Gradle, Revision 1.1.3</a> <em>(March 2015)</em>
   </p>
 
@@ -236,7 +371,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Plugin for Gradle, Revision 1.1.2</a> <em>(February 2015)</em>
   </p>
 
@@ -268,7 +403,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Plugin for Gradle, Revision 1.1.1</a> <em>(February 2015)</em>
   </p>
 
@@ -305,7 +440,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Plugin for Gradle, Revision 1.1.0</a> <em>(February 2015)</em>
   </p>
 
@@ -375,7 +510,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Plugin for Gradle, Revision 1.0.1</a> <em>(January 2015)</em>
   </p>
 
@@ -416,7 +551,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Plugin for Gradle, Revision 1.0.0</a> <em>(December 2014)</em>
   </p>
 
@@ -449,9 +584,9 @@
 
 <h2>Updating the Android Plugin for Gradle Version</h2>
 <p>The Android Plugin for Gradle version is specified in the
-<strong>File &gt; Project Structure</strong> menu or the project-level
+<strong>File &gt; Project Structure &gt; Project</strong> menu and the project-level
 <code>build.gradle</code> file. The plugin version applies to all modules built in that
-Android Studio project. This example updates the Android Plugin for Gradle to version 1.1.0:
+Android Studio project. This example sets the Android Plugin for Gradle to version 1.1.0 from the <code>build.gradle</code> file:
 <pre>
 ...
      dependencies {
@@ -465,8 +600,8 @@
 version numbers. Using this feature can cause unexpected version updates and difficulty
 resolving version differences. </p>
 
-<p>If you're building with Gradle but using not Android Studio, the build process downloads the
-latest Android Plugin for Gradle plugin when it runs. </p>
+<p>If you're building with Gradle but not using Android Studio, the build process downloads the
+latest Android Plugin for Gradle when it runs. </p>
 
 
 
@@ -474,8 +609,8 @@
 
 <p>Android Studio requires Gradle version 2.2.1 or later. To view and
 update the Gradle version, edit the Gradle distribution reference in the
-<code>gradle/wrapper/gradle-wrapper.properties</code> file. This example shows the
-Android Plugin for Gradle version set to 2.2.1.</p>
+<code>gradle/wrapper/gradle-wrapper.properties</code> file. This example sets the
+Gradle version to 2.2.1.</p>
 
 <pre>
 ...
@@ -483,14 +618,6 @@
 ...
 </pre>
 
-
-
-
 <p>For more details about the supported Android Plugin for Gradle properties and syntax, click
 the link to the
-<a href="{@docRoot}tools/building/plugin-for-gradle.html">Plugin Language Reference</a>.</p>
-
-
-
-
-
+<a href="{@docRoot}tools/building/plugin-for-gradle.html">Plugin Language Reference</a>.</p>
\ No newline at end of file
diff --git a/docs/html/tools/revisions/platforms.jd b/docs/html/tools/revisions/platforms.jd
index 61bfcbb..b3941ae 100644
--- a/docs/html/tools/revisions/platforms.jd
+++ b/docs/html/tools/revisions/platforms.jd
@@ -26,7 +26,7 @@
 version, instead read the highlights in the <a href="{@docRoot}about/index.html">About</a>
 section.</p>
 
-<p>In order to compile your application against a particular version of Android, you must use the
+<p>To compile your application against a particular version of Android, you must use the
 <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> to download and install the SDK
 Platform for that release. If you want to test your application on an emulator, you must also
 download at least one System Image for that Android version.</p>
@@ -58,7 +58,25 @@
 
 <div class="toggle-content opened">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-opened.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_up.png"
+class="toggle-content-img" alt="" />Revision 2</a> <em>(November 2015)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+
+    <p>Fixed bugs in the layout rendering library used by Android Studio.</p>
+    <p>Dependencies:</p>
+    <ul>
+      <li>Android SDK Platform-tools r23 or higher is required.</li>
+      <li>Android SDK Tools 24.3.4 or higher is required.</li>
+    </ul>
+  </div>
+
+</div>
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 1</a> <em>(August 2015)</em>
   </p>
 
@@ -80,7 +98,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 1</a> <em>(March 2015)</em>
   </p>
 
@@ -102,7 +120,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 2</a> <em>(December 2014)</em>
   </p>
 
@@ -118,7 +136,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 1</a> <em>(October 2014)</em>
   </p>
 
@@ -150,7 +168,7 @@
 
 <div class="toggle-content open">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 2</a> <em>(October 2014)</em>
   </p>
 
@@ -167,7 +185,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 1</a> <em>(June 2014)</em>
   </p>
 
@@ -196,7 +214,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 2</a> <em>(December 2013)</em>
   </p>
 
@@ -215,7 +233,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 1</a> <em>(October 2013)</em>
   </p>
 
@@ -238,7 +256,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 4</a> <em>(March 2014)</em>
   </p>
 
@@ -253,7 +271,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 3</a> <em>(February 2014)</em>
   </p>
 
@@ -268,7 +286,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 2</a> <em>(December 2013)</em>
   </p>
 
@@ -282,7 +300,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 1</a> <em>(October 2013)</em>
   </p>
 
@@ -303,7 +321,7 @@
 <div class="toggle-content closed">
 
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 2</a> <em>(August 2013)</em>
   </p>
 
@@ -322,7 +340,7 @@
 <div class="toggle-content closed">
 
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 1</a> <em>(July 2013)</em>
   </p>
 
@@ -342,7 +360,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 3</a> <em>(September 2013)</em>
   </p>
 
@@ -357,7 +375,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 2</a> <em>(August 2013)</em>
   </p>
 
@@ -372,7 +390,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 1</a> <em>(July 2013)</em>
   </p>
 
@@ -393,7 +411,7 @@
 <div class="toggle-content closed">
 
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 2</a> <em>(February 2013)</em>
   </p>
 
@@ -411,7 +429,7 @@
 <div class="toggle-content closed">
 
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 1</a> <em>(November 2012)</em>
   </p>
 
@@ -499,7 +517,7 @@
 <div class="toggle-content closed">
 
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 3</a> <em>(October 2012)</em>
   </p>
 
@@ -517,7 +535,7 @@
 <div class="toggle-content closed">
 
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 2</a> <em>(July 2012)</em>
   </p>
 
@@ -535,7 +553,7 @@
 <div class="toggle-content closed" >
 
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 1</a> <em>(June 2012)</em>
   </p>
 
@@ -612,7 +630,7 @@
 <div class="toggle-content closed">
 
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 3</a> <em>(March 2012)</em>
   </p>
 
@@ -633,7 +651,7 @@
 <div class="toggle-content closed" >
 
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 2</a> <em>(January 2012)</em>
   </p>
 
@@ -651,7 +669,7 @@
 <div class="toggle-content closed" >
 
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Revision 1</a> <em>(December 2011)</em>
   </p>
 
@@ -721,7 +739,7 @@
 <div class="toggle-content closed">
 
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Android 4.0, Revision 2</a> <em>(December 2011)</em>
   </p>
 
@@ -737,7 +755,7 @@
 <div class="toggle-content closed">
 
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Android 4.0, Revision 1</a> <em>(October 2011)</em>
   </p>
 
@@ -814,7 +832,7 @@
 <div class="toggle-content closed">
 
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Android 3.2, Revision 1</a> <em>(July 2011)</em>
   </p>
 
@@ -868,7 +886,7 @@
 <div class="toggle-content closed">
 
 <p><a href="#" onclick="return toggleContent(this)">
-  <img src="{@docRoot}assets/images/triangle-closed.png"
+  <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Android 3.1, Revision 3</a> <em>(July 2011)</em>
 </p>
 
@@ -896,7 +914,7 @@
 <div class="toggle-content closed" >
 
 <p><a href="#" onclick="return toggleContent(this)">
-  <img src="{@docRoot}assets/images/triangle-closed.png"
+  <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Android 3.1, Revision 2</a> <em>(May 2011)</em>
 </p>
 
@@ -922,7 +940,7 @@
 <div class="toggle-content closed">
 
 <p><a href="#" onclick="return toggleContent(this)">
-  <img src="{@docRoot}assets/images/triangle-closed.png"
+  <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Android 3.1, Revision 1</a> <em>(May 2011)</em>
 </p>
 
@@ -971,7 +989,7 @@
 <div class="toggle-content closed" >
 
 <p><a href="#" onclick="return toggleContent(this)">
-  <img src="{@docRoot}assets/images/triangle-closed.png"
+  <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Android 3.0, Revision 2</a> <em>(July 2011)</em>
 </p>
 
@@ -998,7 +1016,7 @@
 <div class="toggle-content closed">
 
 <p><a href="#" onclick="return toggleContent(this)">
-  <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+  <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
        alt="" />Android 3.0, Revision 1</a> <em>(February 2011)</em>
 </p>
 
@@ -1049,7 +1067,7 @@
 <div class="toggle-content closed" >
 
 <p><a href="#" onclick="return toggleContent(this)">
-  <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+  <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
        alt="" />Android 2.3.4, Revision 1</a> <em>(May 2011)</em>
 </p>
 
@@ -1109,7 +1127,7 @@
 <div class="toggle-content closed" >
 
 <p><a href="#" onclick="return toggleContent(this)">
-  <img src="{@docRoot}assets/images/triangle-closed.png"
+  <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Android 2.3.3, Revision 2</a> <em>(July 2011)</em>
 </p>
 
@@ -1136,7 +1154,7 @@
 <div class="toggle-content closed" >
 
 <p><a href="#" onclick="return toggleContent(this)">
-  <img src="{@docRoot}assets/images/triangle-closed.png"
+  <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Android 2.3.3, Revision 1</a> <em>(February 2011)</em>
 </p>
 
@@ -1196,7 +1214,7 @@
 <div class="toggle-content closed" >
 
 <p><a href="#" onclick="return toggleContent(this)">
-  <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+  <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
        alt="" />Android 2.3, Revision 1</a> <em>(December 2010)</em>
 </p>
 
@@ -1252,7 +1270,7 @@
 <div class="toggle-content closed" >
 
 <p><a href="#" onclick="return toggleContent(this)">
-  <img src="{@docRoot}assets/images/triangle-closed.png"
+  <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Android {@sdkPlatformVersion}, Revision 3</a> <em>(July 2011)</em>
 </p>
 
@@ -1279,7 +1297,7 @@
 <div class="toggle-content closed" >
 
 <p><a href="#" onclick="return toggleContent(this)">
-  <img src="{@docRoot}assets/images/triangle-closed.png"
+  <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Android {@sdkPlatformVersion}, Revision 2</a> <em>(July 2010)</em>
 </p>
 
@@ -1307,7 +1325,7 @@
 <div class="toggle-content closed">
 
 <p><a href="#" onclick="return toggleContent(this)">
-  <img src="{@docRoot}assets/images/triangle-closed.png"
+  <img src="{@docRoot}assets/images/styles/disclosure_down.png"
 class="toggle-content-img" alt="" />Android {@sdkPlatformVersion}, Revision 1</a> <em>(May 2010)</em></p>
 
 <div class="toggle-content-toggleme">
diff --git a/docs/html/tools/revisions/studio.jd b/docs/html/tools/revisions/studio.jd
old mode 100644
new mode 100755
index 298b173..a65c164
--- a/docs/html/tools/revisions/studio.jd
+++ b/docs/html/tools/revisions/studio.jd
@@ -39,10 +39,158 @@
 <p>The sections below provide notes about successive releases of
 Android Studio, as denoted by revision number. </p>
 
-
 <div class="toggle-content opened">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-content-img"
+      alt=""/>Android Studio v1.5.1</a> <em>(December 2015)</em>
+  </p>
+  <div class="toggle-content-toggleme">
+    <p>Fixes and enhancements:</p>
+    <ul>
+    <li>Fixed a rendering failure issue in the Layout Editor.
+      <a href="http://b.android.com/194612">Issue: 194612</a> </li>
+    <li>Added the ability to vary <code>description</code> manifest attributes by configuration.
+      <a href="http://b.android.com/194705">Issue: 194705</a>
+    </li>
+     <li>Improved the contrast of the Android Studio Darcula appearance theme in Vector Asset Studio.
+      <a href="http://b.android.com/191819">Issue: 191819</a>
+    </li>
+    <li>Added <em>Help</em> button support to Vector Asset Studio.
+    </li>
+    <li>Added support for the <code>%</code> operator for data binding. <a href="http://b.android.com/194045">Issue: 194045</a>
+      </li>
+    <li>Fixed a case where launching an app for debugging resulted in the debugger connecting to the
+      wrong device. <a href="http://b.android.com/195167">Issue: 195167</a>
+    </li>
+    <li>Fixed a null pointer exception that could occur when attempting to run an app in
+      certain scenarios.
+    </li>
+  </ul>
+  </div>
+</div>
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
+      alt=""/>Android Studio v1.5.0</a> <em>(November 2015)</em>
+  </p>
+  <div class="toggle-content-toggleme">
+    <p>Fixes and enhancements:</p>
+    <ul>
+    <li>Added new Memory Monitor analysis abilities to Android Monitor. When you view an HPROF file
+      captured from this monitor, the display is now more helpful so you can more quickly locate
+      problems, such as memory leaks. To use this monitor, click <strong>Android Monitor</strong> at
+      the bottom of the main window. In Android Monitor, click the <strong>Memory</strong> tab. While
+      the monitor is running, click the <strong>Dump Java Heap</strong> icon, and then click
+      <strong>Captures</strong> in the main window and double-click the file to view it. Click
+      <em>Capture Analysis</em> on the right. (The
+      Android Device Monitor can't be running at the same time as Android Monitor.)</li>
+    <li>Added new deep link and app link support. The Code Editor can automatically create an
+      intent filter for deep linking in the <code>AndroidManifest.xml</code> file. It can also
+      generate code to help you integrate with the
+      <a href="http://developers.google.com/app-indexing/android/publish" class="external-link">App Indexing API</a>
+      in an activity in a Java file. A deep link testing feature
+      helps you verify that a specified deep link can launch an app. In the <strong>General</strong>
+      tab of the <em>Run/Debug Configurations</em> dialog, you can specify deep link launch
+      options. You can also test App Indexing API calls in an activity by using the Android Monitor
+      <strong>logcat</strong> display. The Android <code>lint</code> tool now has warnings for
+      certain issues involving deep links and the App Indexing API.
+    </li>
+     <li>Added the ability to use short names when code-completing custom views in the Code Editor.
+    </li>
+    <li>Added support for more {@link android.graphics.drawable.VectorDrawable} elements to
+      <a href="{@docRoot}tools/help/vector-asset-studio.html">Vector Asset Studio</a>
+      for backward-compatibility. Vector Asset Studio can use these elements to convert vector
+      drawables into PNG raster images to use with Android 4.4 (API level 20) and lower.
+    </li>
+    <li>Added new <code>lint</code> checks for Android TV and Android Auto to give you
+      immediate, actionable feedback in Android Studio, along with several quick fixes. For example,
+      for Android TV, it can report and provide a quick fix for permissions, unsupported hardware,
+      <code>uses-feature</code> element, and missing banner issues. For Android Auto, it can
+      validate the correct usage in the descriptor file referred from your
+      <code>AndroidManifest.xml</code> file, report if there isn't an intent filter for the
+      <code>MediaBrowserService</code> class, and identify certain voice actions issues.
+      </li>
+    <li>Added new <code>lint</code> checks for insecure broadcast receivers,
+    <code>SSLCertificateSocketFactory</code> and <code>HostnameVerifier</code> class uses, and
+    <code>File.setReadable()</code> and <code>File.setWritable()</code> calls. It also detects
+    invalid manifest resource lookups, especially for resources that vary by configuration.
+    </li>
+    <li>Fixed a number of stability issues.
+    </li>
+  </ul>
+  </div>
+</div>
+
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
+      alt=""/>Android Studio v1.4.1</a> <em>(October 2015)</em>
+  </p>
+  <div class="toggle-content-toggleme">
+    <p>Fixes and enhancements:</p>
+  <ul>
+    <li>Fixed a Gradle model caching issue that could lead to excessive Gradle syncing when the IDE
+    was restarted.
+    </li>
+    <li>Fixed a native debugging deadlock issue.
+    </li>
+    <li>Fixed an issue blocking users of the Subversion 1.9 version control system.
+    </li>
+    <li>Fixed a <em>Device Chooser</em> dialog problem where after connecting a device that was
+    unauthorized you could no longer select the emulator. <a href="http://b.android.com/189658">Issue: 189658</a>
+    </li>
+    <li>Fixed incorrect translation error reporting for locales that have a region qualifier and a
+    translation in the region (but not in the base locale). <a href="http://b.android.com/188577">Issue: 188577</a>
+    </li>
+    <li>Fixed a deadlock issue in the Theme Editor related to its interaction with the Layout
+    Editor. <a href="http://b.android.com/188070">Issue: 188070</a>
+    </li>
+    <li>Fixed a Theme Editor reload and edit conflict causing attributes to not properly update.
+    <a href="http://b.android.com/187726">Issue: 187726</a>
+    </li>
+    <li>Improved Theme Editor performance.
+    </li>
+    <li>Fixed an issue where the <code>android:required</code> attribute was ignored in the manifest.
+    <a href="http://b.android.com/187665">Issue: 187665</a>
+    </li>
+  </ul>
+</div>
+</div>
+
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
+      alt=""/>Android Studio v1.4.0</a> <em>(September 2015)</em>
+  </p>
+  <div class="toggle-content-toggleme">
+    <p>Fixes and enhancements:</p>
+  <ul>
+    <li>Added the <a href="{@docRoot}tools/help/vector-asset-studio.html">Vector Asset Studio</a>
+      tool for importing vector graphics, such as material icons
+      and SVG files. To use this tool, in the Android view of the Project window, right-click the
+      <strong>res</strong> folder and select <strong>New</strong> &gt; <strong>Vector Asset</strong>.
+    </li>
+    <li>Added new Android Monitor functions, GPU and Network. To use these monitors, click
+      <strong>Android Monitor</strong> at the bottom of the main window. The Android Device Monitor
+      can't be running at the same time as Android Monitor.
+    </li>
+    <li>Added an early preview of the new Theme Editor. To use this feature, select
+      <strong>Tools</strong> &gt; <strong>Android</strong> &gt; <strong>Theme Editor</strong>.
+    </li>
+    <li>Updated the Android templates for the Design Support Library. Templates now include support
+      for the Material Design specification, as well as the <code>appcompat</code> Support Library
+      for backwards compatibility.
+    </li>
+  </ul>
+  </div>
+</div>
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v1.3.2</a> <em>(August 2015)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -65,7 +213,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v1.3.1</a> <em>(August 2015)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -85,7 +233,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v1.3.0</a> <em>(July 2015)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -106,7 +254,7 @@
       <li>Integrated the <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>
         into Android Studio to simplify package and tools access and provide update notifications.
         <p class="note"><strong>Note:</strong> The standalone SDK Manager is still available from
-        the command line, but is recommended for use with only Eclipse ADT and standalone SDK
+        the command line, but is recommended for use only with standalone SDK
         installations. </p> </li>
       <li>Added the <code>finger</code> command in the emulator console to simulate
         <a href="{@docRoot}tools/studio/studio-features.html#finger-print">fingerprint</a>
@@ -142,7 +290,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v1.2.2</a> <em>(June 2015)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -156,7 +304,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v1.2.1</a> <em>(May 2015)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -171,7 +319,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v1.2.0</a> <em>(April 2015)</em>
   </p>
 
@@ -218,7 +366,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v1.1.0</a> <em>(February 2015)</em>
   </p>
 
@@ -246,7 +394,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v1.0.1</a> <em>(December 2014)</em>
   </p>
 
@@ -269,7 +417,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v1.0</a> <em>(December 2014)</em>
   </p>
 
@@ -281,7 +429,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v0.8.14</a> <em>(October 2014)</em>
   </p>
 
@@ -294,7 +442,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v0.8.6</a> <em>(August 2014)</em>
   </p>
 
@@ -305,7 +453,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v0.8.0</a> <em>(June 2014)</em>
   </p>
 
@@ -317,7 +465,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v0.5.2</a> <em>(May 2014)</em>
   </p>
 
@@ -330,7 +478,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v0.4.6</a> <em>(March 2014)</em>
   </p>
 
@@ -343,7 +491,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v0.4.2</a> <em>(Jan 2014)</em>
   </p>
 
@@ -356,7 +504,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v0.3.2</a> <em>(Oct 2013)</em>
   </p>
 
@@ -369,7 +517,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v0.2.x</a> <em>(July 2013)</em>
   </p>
 
@@ -430,7 +578,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>Android Studio v0.1.x</a> <em>(May 2013)</em>
   </p>
 
diff --git a/docs/html/tools/sdk/eclipse-adt.jd b/docs/html/tools/sdk/eclipse-adt.jd
index 5a9d9d0..d5f581f 100644
--- a/docs/html/tools/sdk/eclipse-adt.jd
+++ b/docs/html/tools/sdk/eclipse-adt.jd
@@ -52,7 +52,7 @@
 
 <div class="toggle-content opened">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-content-img"
       alt=""/>ADT 23.0.7</a> <em>(August 2015)</em>
   </p>
 
@@ -85,7 +85,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 23.0.6</a> <em>(March 2015)</em>
   </p>
 
@@ -119,7 +119,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 23.0.4</a> <em>(October 2014)</em>
   </p>
 
@@ -153,7 +153,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 23.0.3</a> <em>(August 2014)</em>
   </p>
 
@@ -189,7 +189,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 23.0.2</a> <em>(July 2014)</em>
   </p>
 
@@ -224,7 +224,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 23.0.0</a> <em>(June 2014)</em>
   </p>
 
@@ -256,7 +256,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 22.6.3</a> <em>(April 2014)</em>
   </p>
 
@@ -296,7 +296,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 22.6.2</a> <em>(March 2014)</em>
   </p>
 
@@ -341,7 +341,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 22.6.1</a> <em>(March 2014)</em>
   </p>
 
@@ -389,7 +389,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 22.6.0</a> <em>(March 2014)</em>
   </p>
 
@@ -453,7 +453,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 22.3.0</a> <em>(October 2013)</em>
   </p>
 
@@ -490,7 +490,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 22.2.1</a> <em>(September 2013)</em>
   </p>
 
@@ -524,7 +524,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 22.2</a> <em>(September 2013)</em>
   </p>
 
@@ -562,7 +562,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 22.0.5</a> <em>(July 2013)</em>
   </p>
 
@@ -597,7 +597,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 22.0.4</a> <em>(July 2013)</em>
   </p>
 
@@ -634,7 +634,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 22.0.1</a> <em>(May 2013)</em>
   </p>
 
@@ -671,7 +671,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 22.0.0</a> <em>(May 2013)</em>
   </p>
 
@@ -715,7 +715,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 21.1.0</a> <em>(February 2013)</em>
   </p>
 
@@ -773,7 +773,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 21.0.1</a> <em>(December 2012)</em>
   </p>
 
@@ -893,7 +893,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 21.0.0</a> <em>(November 2012)</em>
   </p>
 
@@ -1015,7 +1015,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 20.0.3</a> <em>(August 2012)</em>
   </p>
 
@@ -1050,7 +1050,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 20.0.2</a> <em>(July 2012)</em>
   </p>
 
@@ -1086,7 +1086,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 20.0.1</a> <em>(July 2012)</em>
   </p>
 
@@ -1128,7 +1128,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 20.0.0</a> <em>(June 2012)</em>
   </p>
 
@@ -1252,7 +1252,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 18.0.0</a> <em>(April 2012)</em>
   </p>
 
@@ -1288,7 +1288,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 17.0.0</a> <em>(March 2012)</em>
   </p>
 
@@ -1391,7 +1391,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 16.0.1</a> <em>(December 2011)</em>
   </p>
 
@@ -1426,7 +1426,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 16.0.0</a> <em>(December 2011)</em>
   </p>
 
@@ -1459,7 +1459,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 15.0.1</a> <em>(November 2011)</em>
   </p>
 
@@ -1494,7 +1494,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 15.0.0</a> <em>(October 2011)</em>
   </p>
 
@@ -1527,7 +1527,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 14.0.0</a> <em>(October 2011)</em>
   </p>
 
@@ -1647,7 +1647,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 12.0.0</a> <em>(July 2011)</em>
   </p>
 
@@ -1701,7 +1701,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 11.0.0</a> <em>(June 2011)</em>
   </p>
 
@@ -1837,7 +1837,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 10.0.1</a> <em>(March 2011)</em>
   </p>
 
@@ -1868,7 +1868,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 10.0.0</a> <em>(February 2011)</em>
   </p>
 
@@ -1918,7 +1918,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 9.0.0</a> <em>(January 2011)</em>
   </p>
 
@@ -2027,7 +2027,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 8.0.1</a> <em>(December 2010)</em>
   </p>
 
@@ -2056,7 +2056,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 8.0.0</a> <em>(December 2010)</em>
   </p>
 
@@ -2103,7 +2103,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 0.9.9</a> <em>(September 2010)</em>
   </p>
 
@@ -2131,7 +2131,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 0.9.8</a> <em>(September 2010)</em>
   </p>
 
@@ -2180,7 +2180,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 0.9.7</a> <em>(May 2010)</em>
   </p>
 
@@ -2206,7 +2206,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 0.9.6</a> <em>(March 2010)</em>
   </p>
 
@@ -2275,7 +2275,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 0.9.5</a> <em>(December 2009)</em>
   </p>
 
@@ -2305,7 +2305,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>ADT 0.9.4</a> <em>(October 2009)</em>
   </p>
 
diff --git a/docs/html/tools/sdk/tools-notes.jd b/docs/html/tools/sdk/tools-notes.jd
index a43c969..1625716 100644
--- a/docs/html/tools/sdk/tools-notes.jd
+++ b/docs/html/tools/sdk/tools-notes.jd
@@ -21,12 +21,95 @@
 <p>For a summary of all known issues in SDK Tools, see <a
 href="http://tools.android.com/knownissues">http://tools.android.com/knownissues</a>.</p>
 
-
-
-
 <div class="toggle-content opened">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-content-img"
+      alt=""/>SDK Platform-tools, Revision 23.1.0</a> <em>(December 2015)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+
+    <dl>
+        <dt>General Notes:</dt>
+    <dd>
+      <ul>
+        <li>Changed Linux requirements for Android SDK Platform-tools revision 23.1.0 and later:
+          it now requires 64-bit Linux.</li>
+      </ul>
+    </dd>
+
+
+
+  </div>
+</div>
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
+      alt=""/>SDK Tools, Revision 24.4.1</a> <em>(October 2015)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+
+    <dl>
+    <dt>Dependencies:</dt>
+
+    <dd>
+      <ul>
+        <li>Android SDK Platform-tools revision 23 or later.</li>
+      </ul>
+    </dd>
+
+    <dt>General Notes:</dt>
+    <dd>
+      <ul>
+        <li>Fixed a problem where the emulator title bar was hidden off screen.
+        (<a href="http://code.google.com/p/android/issues/detail?id=178344">Issue 178344</a>)</li>
+        <li>Enabled the emulator to resize the user data partition by including e2fsprogs binaries.
+        (<a href="http://code.google.com/p/android/issues/detail?id=189030">Issue 189030</a>)</li>
+        <li>Fixed a regression on the 32-bit Windows OS where the emulator fails to boot Android 6.0
+        (API level 23) through Android 5.0 (API level 21) system images.
+        (<a href="http://code.google.com/p/android/issues/detail?id=188326">Issue 188326</a>)</li>
+      </ul>
+    </dd>
+
+  </div>
+</div>
+
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
+      alt=""/>SDK Tools, Revision 24.4.0</a> <em>(October 2015)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+
+    <dl>
+    <dt>Dependencies:</dt>
+
+    <dd>
+      <ul>
+        <li>Android SDK Platform-tools revision 23 or later.</li>
+      </ul>
+    </dd>
+
+    <dt>General Notes:</dt>
+    <dd>
+      <ul>
+        <li>Updated the emulator so it can display an upgrade notification when a new version is
+        available.</li>
+        <li>Added the ability for the emulator to send basic crash reports. You <em>must</em> opt-in
+        through Android Studio preferences to enable crash report transmission.</li>
+      </ul>
+    </dd>
+
+  </div>
+</div>
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 24.3.4</a> <em>(August 2015)</em>
   </p>
 
@@ -78,7 +161,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 24.3.3</a> <em>(June 2015)</em>
   </p>
 
@@ -106,7 +189,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 24.3.2</a> <em>(June 2015)</em>
   </p>
 
@@ -133,7 +216,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 24.3.1</a> <em>(June 2015)</em>
   </p>
 
@@ -163,7 +246,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 24.3.0</a> <em>(June 2015)</em>
   </p>
 
@@ -194,7 +277,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 24.2.0</a> <em>(May 2015)</em>
   </p>
 
@@ -221,7 +304,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 24.1.2</a> <em>(February 2015)</em>
   </p>
 
@@ -250,7 +333,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 24.0.2</a> <em>(December 2014)</em>
   </p>
 
@@ -277,7 +360,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 24.0.1</a> <em>(December 2014)</em>
   </p>
 
@@ -304,7 +387,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 24.0.0</a> <em>(December 2014)</em>
   </p>
 
@@ -332,7 +415,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 23.0.5</a> <em>(October 2014)</em>
   </p>
 
@@ -364,7 +447,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 23.0.4</a> <em>(October 2014)</em>
   </p>
 
@@ -396,7 +479,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 23.0.2</a> <em>(July 2014)</em>
   </p>
 
@@ -430,7 +513,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 23.0.0</a> <em>(June 2014)</em>
   </p>
 
@@ -461,7 +544,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 22.6.4</a> <em>(June 2014)</em>
   </p>
 
@@ -494,7 +577,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 22.6.3</a> <em>(April 2014)</em>
   </p>
 
@@ -534,7 +617,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 22.6.2</a> <em>(March 2014)</em>
   </p>
 
@@ -569,7 +652,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 22.6.1</a> <em>(March 2014)</em>
   </p>
 
@@ -617,7 +700,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 22.6</a> <em>(March 2014)</em>
   </p>
 
@@ -700,7 +783,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 22.3</a> <em>(October 2013)</em>
   </p>
 
@@ -732,7 +815,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 22.2.1</a> <em>(September 2013)</em>
   </p>
 
@@ -766,7 +849,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 22.2</a> <em>(September 2013)</em>
   </p>
 
@@ -814,7 +897,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 22.0.5</a> <em>(July 2013)</em>
   </p>
 
@@ -854,7 +937,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 22.0.4</a> <em>(July 2013)</em>
   </p>
 
@@ -890,7 +973,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 22.0.1</a> <em>(May 2013)</em>
   </p>
 
@@ -931,7 +1014,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 22</a> <em>(May 2013)</em>
   </p>
 
@@ -986,7 +1069,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 21.1</a> <em>(February 2013)</em>
   </p>
 
@@ -1021,7 +1104,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 21.0.1</a> <em>(December 2012)</em>
   </p>
 
@@ -1124,7 +1207,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 21</a> <em>(November 2012)</em>
   </p>
 
@@ -1210,7 +1293,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 20.0.3</a> <em>(August 2012)</em>
   </p>
 
@@ -1241,7 +1324,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 20.0.1</a> <em>(July 2012)</em>
   </p>
 
@@ -1278,7 +1361,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 20</a> <em>(June 2012)</em>
   </p>
 
@@ -1352,7 +1435,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 19</a> <em>(April 2012)</em>
   </p>
 
@@ -1386,7 +1469,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 18</a> <em>(April 2012)</em>
   </p>
 
@@ -1428,7 +1511,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 17</a> <em>(March 2012)</em>
   </p>
 
@@ -1532,7 +1615,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 16</a> <em>(December 2011)</em>
   </p>
 
@@ -1582,7 +1665,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 15</a> <em>(October 2011)</em>
   </p>
 
@@ -1630,7 +1713,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 14</a> <em>(October 2011)</em>
   </p>
 
@@ -1685,7 +1768,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 13</a> <em>(September 2011)</em>
   </p>
 
@@ -1716,7 +1799,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 12</a> <em>(July 2011)</em>
   </p>
 
@@ -1744,7 +1827,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 11</a> <em>(May 2011)</em>
   </p>
 
@@ -1772,7 +1855,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 10</a> <em>(February 2011)</em>
   </p>
 
@@ -1803,7 +1886,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 9</a> <em>(January 2011)</em>
   </p>
 
@@ -1862,7 +1945,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 8</a> <em>(December 2010)</em>
   </p>
 
@@ -1930,7 +2013,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 7</a> <em>(September 2010)</em>
   </p>
 
@@ -1964,7 +2047,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 6</a> <em>(May 2010)</em>
   </p>
 
@@ -1995,7 +2078,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 5</a> <em>(March 2010)</em>
   </p>
 
@@ -2044,7 +2127,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 4</a> <em>(December 2009)</em>
   </p>
 
@@ -2094,7 +2177,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
       alt=""/>SDK Tools, Revision 3</a> <em>(October 2009)</em>
   </p>
 
diff --git a/docs/html/tools/studio/code-tools.jd b/docs/html/tools/studio/code-tools.jd
new file mode 100644
index 0000000..4033bfc
--- /dev/null
+++ b/docs/html/tools/studio/code-tools.jd
@@ -0,0 +1,28 @@
+page.title=Android Studio Code Tools
+
+@jd:body
+
+<p>
+  Android Studio provides a number of coding features to assist with writing and building your
+  app. These tools help you write code faster and improve quality.
+</p>
+
+<dl>
+  <dt><a href="{@docRoot}tools/debugging/improving-w-lint.html">Lint</a></dt>
+    <dd>The Lint tool is a static code analysis tool that checks your Android
+    project source files for potential bugs and optimization improvements.</dd>
+
+  <dt><a href="{@docRoot}tools/debugging/annotations.html">Code Annotations</a></dt>
+    <dd>Annotations help you improve code readability and improve code inspector output,
+      by allowing you to more clearly define method parameter requirements.
+    </dd>
+
+  <dt><a href="{@docRoot}tools/help/app-link-indexing.html">Deep Link and App Indexing</a></dt>
+    <dd>These features help you add deep links, app indexing, and search functionality to your
+      apps. These features can make it easier to find content in an installed app, drive more
+      traffic to your app, discover which app content users view the most, and attract new users.
+    </dd>
+
+</dl>
+
+
diff --git a/docs/html/tools/studio/index.jd b/docs/html/tools/studio/index.jd
index 43cb2fe..b3ed82d 100644
--- a/docs/html/tools/studio/index.jd
+++ b/docs/html/tools/studio/index.jd
@@ -1,6 +1,6 @@
 page.title=Android Studio Overview
 page.image=images/cards/card-android-studio-overview_16x9_2x.jpg
-page.metaDescription=Learn about the official IDE for Android.
+page.metaDescription=The basics of working with Android Studio, from projects to build and performance.
 page.tags=studio,sdk,tools,firstapp
 @jd:body
 
@@ -9,139 +9,105 @@
 
     <h2>In this document</h2>
     <ol>
-      <li><a href="#project-structure">Project and File Structure</a></li>
-      <li><a href="#build-system">Android Build System</a></li>
-      <li><a href="#debug-perf">Debug and Performance</a></li>
-
-
+      <li><a href="#project-structure">Project Structure</a></li>
+      <li><a href="#build-system">Gradle Build System</a></li>
+      <li><a href="#debug-perf">Debug and Profile Tools</a></li>
     </ol>
 
-  <h2>See also</h2>
-  <ol>
-    <li><a class="external-link" href="http://confluence.jetbrains.com/display/IntelliJIDEA/FAQ+on+Migrating+to+IntelliJ+IDEA">IntelliJ FAQ on migrating to IntelliJ IDEA</a></li>
-  </ol>
+
+<a class="button" href="{@docRoot}sdk/index.html" style="margin:15px">
+  Get Android Studio
+</a>
 
 </div>
 </div>
 
 
-<p>Android Studio is the official IDE for Android application development,
-based on <a class="external-link" href="https://www.jetbrains.com/idea/" target="_blank">IntelliJ IDEA</a>.
-On top of the capabilities you expect from IntelliJ,
-Android Studio offers:</p>
+<p>Android Studio is the official IDE for Android app development, based on
+<a class="external-link" href="https://www.jetbrains.com/idea/" target=
+"_blank">IntelliJ IDEA</a>. On top of IntelliJ's powerful code editor and
+developer tools, Android Studio offers even more features that enhance your
+productivity when building Android apps, such as:</p>
+
 
 <ul>
-  <li>Flexible Gradle-based build system</li>
-  <li>Build variants and multiple <code>apk</code> file generation</li>
+  <li>A flexible Gradle-based build system</li>
+  <li>Build variants and multiple APK file generation</li>
   <li>Code templates to help you build common app features</li>
-  <li>Rich layout editor with support for drag and drop theme editing</li>
-  <li>{@code lint} tools to catch performance, usability, version compatibility, and other problems</li>
-  <li>ProGuard and app-signing capabilities</li>
+  <li>A rich layout editor with support for drag and drop theme editing</li>
+  <li>Lint tools to catch performance, usability, version compatibility, and other problems</li>
+  <li>Code shrinking with ProGuard and resource shrinking with Gradle</li>
   <li>Built-in support for
   <a href="http://developers.google.com/cloud/devtools/android_studio_templates/">Google Cloud Platform</a>,
   making it easy to integrate Google Cloud Messaging and App Engine</li>
-  <li>And much more</li>
 </ul>
 
+<p>This page provides an introduction to basic Android Studio features. For
+more detailed guides to using Android Studio, start by browsing pages in the
+<a href="{@docRoot}tools/workflow/index.html">Workflow</a> section.</p>
 
-<p>If you're new to Android Studio or the IntelliJ IDEA interface, this
-page provides an introduction to some key Android
-Studio features.</p>
-
-<p>For specific Android Studio how-to documentation, see the pages in the <a href=
-"{@docRoot}tools/workflow/index.html">Workflow</a> section, such as <a href=
-"{@docRoot}sdk/installing/create-project.html">Managing Projects from Android Studio</a> and
-<a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android
-Studio</a>. For a summary of the latest changes to Android Studio, see the
-<a href="{@docRoot}tools/revisions/studio.html">Android Studio Release Notes</a>.</p>
+<p>For a summary of the latest changes, see the <a href=
+"{@docRoot}tools/revisions/studio.html">Android Studio Release Notes</a>.</p>
 
 
 
+<h2 id="project-structure">Project Structure</h2>
 
-<h2 id="project-structure">Project and File Structure</h2>
+<div class="figure" style="width:230px">
+<img src="{@docRoot}images/tools/studio/studio-project-files.png" width="230" />
+<p class="img-caption"><strong>Figure 1.</strong> The project files in Android
+view.</p>
+</div>
 
-<h3 id="project-view"><em>Android</em> project view</h3>
-<p>By default, Android Studio displays your project files in the <em>Android</em> project view. This
-view shows a flattened version of your project's structure that provides quick access to the key
-source files of Android projects and helps you work with the
-<a href="{@docRoot}sdk/installing/studio-build.html">Gradle-based build system</a>.
-The <em>Android</em> project view:</p>
+<p>Each project in Android Studio contains one or more modules with source code
+files and resource files. Different types of modules include:</p>
 
 <ul>
-  <li>Shows the most important source directories at the top level of the module hierarchy.</li>
-  <li>Groups the build files for all modules in a common folder.</li>
-  <li>Groups all the manifest files for each module in a common folder.</li>
-  <li>Shows resource files from all Gradle source sets.</li>
-  <li>Groups resource files for different locales, orientations, and screen types in a single
-  group per resource type.</li>
+<li>Android app modules</li>
+<li>Test modules</li>
+<li>Library modules</li>
+<li>App Engine modules</li>
 </ul>
 
-     <img src="{@docRoot}images/tools/projectview01.png" />
-     <p class="img-caption"><strong>Figure 1.</strong> Show the Android project view.</p>
-     <img src="{@docRoot}images/tools/studio-projectview_scripts.png"  />
-     <p class="img-caption"><strong>Figure 2.</strong> Show project build files.</p>
+<p>By default, Android Studio displays your project files in the
+<em>Android</em> project view, as shown in figure 1.
+This view is organized by modules to
+provide quick access to the key source files of your
+project.</p>
 
-<p>The <em>Android</em> project view shows all the build files at the top level of the project
-hierarchy under <strong>Gradle Scripts</strong>. Each project module appears as a folder at the
-top level of the project hierarchy and contains these four elements at the top level:</p>
-
+<p>All the build files are visible at the top level
+under <strong>Gradle Scripts</strong> and each app module
+contains the following three elements:</p></p>
 <ul>
-  <li><code>java/</code> - Source files for the module.</li>
-  <li><code>manifests/</code> - Manifest files for the module.</li>
-  <li><code>res/</code> - Resource files for the module.</li>
-  <li><code>Gradle Scripts/</code> - Gradle build and property files.</li>
+  <li><b>manifests</b>: Manifest files.</li>
+  <li><b>java</b>: Source code files.</li>
+  <li><b>res</b>: Resource files.</li>
 </ul>
 
-<p>For example, <em>Android</em> project view groups all the instances of the
-<code>ic_launcher.png</code> resource for different screen densities under the same element.</p>
+<p>The Android project structure on disk differs
+from this flattened representation. To see the actual file structure of the
+project, select <strong>Project</strong> from the <strong>Project</strong>
+drop-down (in figure 1, it's showing as <strong>Android</strong>).</p>
 
-<p class="note"><strong>Note:</strong> The project structure on disk differs from this flattened
-representation. To switch to back to the segregated project view, select <strong>Project</strong>
-from the <strong>Project</strong> drop-down. </p>
-
-
-
-<h3 id="other-views">Other Android Studio views</h3>
-<p>When you use the <em>Project</em> view in Android Studio, you
-should notice that the project structure appears different than you may be used to in Eclipse. Each
-instance of Android Studio contains a project with one or more application modules. Each
-application module folder contains the complete source sets for that module, including
-{@code src/main/} and {@code src/androidTest/} directories, resources, build
-file and the Android manifest. For the most part, you will need to modify the files under each
-module's {@code src/main/} directory for source code updates, the gradle.build file for build
-specification and the files under {@code src/androidTest/} directory for test case creation.
-
-    <p>  <img src="{@docRoot}images/tools/studio-project-layout.png" alt="" /></p>
-    <p>  <class="img-caption"><strong>Figure 3.</strong> View Android Studio <em>Project</em>
-         structure.</p>
-
-<p>You can also customize the view of the project files to focus on specific aspects of your app
-development: </p>
-
-<ul>
-  <li><em>Packages</em> </li>
-  <li><em>Project Files</em> </li>
-  <li><em>Scratches</em> </li>
-  <li><em>Problems</em> </li>
-  <li><em>Production</em> </li>
-  <li><em>Tests</em> </li>
-</ul>
-
-<p>For example, selecting the <strong>Problems</strong> view of your project displays links to the
-source files containing any recognized coding and syntax errors, such as missing an XML element
-closing tag in a layout file.<p>
+<p>You can also customize the view of the project files to focus on specific
+aspects of your app development. For example, selecting the
+<strong>Problems</strong> view of your project displays links to the source
+files containing any recognized coding and syntax errors, such as missing an
+XML element closing tag in a layout file.</p>
 
 <p>For more information, see
 <a class="external-link" href="http://confluence.jetbrains.com/display/IntelliJIDEA/Project+Organization">IntelliJ project organization</a>
 and <a href="{@docRoot}tools/projects/index.html">Managing Projects</a>.</p>
 
 
+<h2 id="build-system">Gradle Build System</h2>
 
-<h2 id="build-system">Android Build System</h2>
-<p>The Android build system is the toolkit you use to build, test, run and package
-your apps. This build system replaces the Ant system used with Eclipse ADT. It can run as an
-integrated tool from the Android Studio menu and independently from the command line. You can use
-the features of the build system to:</p>
+<p>Android Studio uses Gradle as the foundation of the build system, with
+more Android-specific capabilities provided by the <a
+href="{@docRoot}tools/revisions/gradle-plugin.html">Android Plugin for
+Gradle</a>. This build system
+runs as an integrated tool from the Android Studio menu and independently from
+the command line. You can use the features of the build system to:</p>
 
 <ul>
     <li>Customize, configure, and extend the build process.</li>
@@ -150,39 +116,30 @@
     <li>Reuse code and resources across source sets.</li>
 </ul>
 
-<p>The flexibility of the Android build system enables you to achieve all of this without
+<p>The flexibility of Gradle enables you to achieve all of this without
 modifying your app's core source files. To build an Android Studio project, see
-<a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android Studio</a>.
-To configure custom build settings in an Android Studio project, see
-<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.</p>
+<a href="{@docRoot}tools/building/building-studio.html">Building and Running
+from Android Studio</a>. To configure custom build settings in an Android
+Studio project, see <a href=
+"{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle
+Builds</a>.</p>
 
 
 
-<h2 id="debug-perf">Debug and Performance</h2>
-<p>Android Studio provides a number of improvements to assist you in debugging and improving the
-performance of your code, including an improved virtual device management, inline debugging, and
+
+<h2 id="debug-perf">Debug and Profile Tools</h2>
+
+<p>Android Studio assists you in debugging and improving the
+performance of your code, including inline debugging and
 performance analysis tools.</p>
 
-<h3>Android Virtual Device (AVD) Manager</h3>
-<p>AVD Manager has updated screens with links to help you select the most popular device
-configurations, screen sizes and resolutions for your app previews.</p>
-Click the <strong>Android Virtual Device Manager</strong>
-<img src="{@docRoot}images/tools/avd-manager-studio.png"
-style="vertical-align:bottom;margin:0;height:19px" /> in the toolbar to open it and create
-new virtual devices for running your app in the emulator.</p>
-
-<p>The AVD Manager comes with emulators for Nexus 6 and Nexus 9 devices and also supports
-creating custom Android device skins based on specific emulator properties and assigning those
-skins to hardware profiles. Android Studio installs the Intel&#174; x86 Hardware Accelerated Execution
-Manager (HAXM) emulator accelerator and creates a default emulator for quick app prototyping.</p>
-
-<p>For more information, see <a href="{@docRoot}tools/devices/managing-avds.html">Managing AVDs</a>.</p>
-
 
 <h3 id="inline-debug">Inline debugging</h3>
+
 <p>Use inline debugging to enhance your code walk-throughs in the debugger view
-with inline verification of references, expressions, and variable values. Inline debug information
-includes: </p>
+with inline verification of references, expressions, and variable values.
+Inline debug information includes:</p>
+
 <ul>
  <li>Inline variable values</li>
  <li>Referring objects that reference a selected object </li>
@@ -203,8 +160,9 @@
 runtime window to launch the Android runtime window. Click the <strong>Memory</strong> or
 <strong>CPU</strong> tab. </p>
 
-<img src="{@docRoot}images/tools/studio-memory-monitor.png" srcset="{@docRoot}images/tools/studio-memory-monitor_2x.png 2x" width"635" height="171" alt="" />
-    <p class="img-caption"><strong>Figure 4.</strong> Monitor memory and CPU usage.</p>
+<img src="{@docRoot}images/tools/studio-memory-monitor.png"
+srcset="{@docRoot}images/tools/studio-memory-monitor2x.png 2x" width"635" height="171" alt="" />
+    <p class="img-caption"><strong>Figure 2.</strong> Monitor memory and CPU usage.</p>
 
 <h4 id="heap-dump">Heap dump </h4>
 <p>When you're monitoring memory usage in Android Studio you can, at the same time, initiate
@@ -213,7 +171,7 @@
 help you track memory usage and find memory leaks. </p>
 
 <img src="{@docRoot}images/tools/studio-hprof-viewer.png" alt="" />
-    <p class="img-caption"><strong>Figure 5.</strong> HPROF viewer with heap dump.</p>
+    <p class="img-caption"><strong>Figure 3.</strong> HPROF viewer with heap dump.</p>
 
 <p>To create a snapshot of the Android app heap memory, click the
 Dump Java Heap icon (<img src="{@docRoot}images/tools/studio-dump-heap-icon.png" style="vertical-align:bottom;margin:0;height:17px"/>)
@@ -233,21 +191,11 @@
 calls related to those actions to optimize your app's performance and memory use. </p>
 
 <img src="{@docRoot}images/tools/studio-allocation-tracker.png" alt="" />
-    <p class="img-caption"><strong>Figure 6.</strong> Allocation tracker.</p>
+    <p class="img-caption"><strong>Figure 4.</strong> Allocation tracker.</p>
 
-<p>Perform the following steps to track and analyze allocations: </p>
-<ol>
-  <li>Click the Start/Stop Allocation Tracking icon
-    (<img src="{@docRoot}images/tools/studio-allocation-tracker-icon.png" style="vertical-align:bottom;margin:0;height:17px"/>) in the
-    <a href="#mem-cpu">Memory Monitor</a>. Android Studio starts tracking memory allocations.</li>
-  <li>Perform the tasks whose mallocs you want to track. </li> 
-  <li>Click the Start/Stop Allocation Tracking icon again. Android Studio stops tracking mallocs
-    and saves the data to a file named <code>Allocation-yyyy.mm.dd-hh.mm.ss.alloc</code>. The
-    resulting file appears in the <em>Captures</em> tab. </li>
-  <li>Double-click the file to open it in the allocation viewer.
-   <p>The allocation viewer allows you to view and analyze the allocations your app made while
-   running. </p> </li>
-</ol>
+<p>For information about tracking and analyzing allocations, see
+  <a href="{@docRoot}/tools/help/am-memory.html#tracking">Memory Monitor</a>.
+</p>
 
 
 <h3>Data file access</h3>
@@ -324,17 +272,6 @@
 The <em>Inspections Scope</em> dialog appears so you can specify the desired inspection profile and scope.</p>
 
 
-
-<h4>Running inspections from the command line</h4>
-<p>You can also run {@code lint} inspections from the command line in your SDK directory. </p>
-<pre>
-sdk$ lint [flags] <project directories>
-</pre>
-
-<p class="note"><strong>Note:</strong> The {@code lint} <strong>--show</strong> and <strong>--list</strong>
-flags can be used to display the available issues and explanations. </p>
-
-
 <p>For more information, see
 <a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with {@code lint}</a>
 and <a href="{@docRoot}tools/help/lint.html">lint tool</a>.</p>
@@ -359,7 +296,7 @@
  <strong>Library dependency</strong>.</li>
  <li>In the <em>Choose Library Dependency</em> dialog, select <code>support-annotations</code> and
  click <strong>Ok</strong>. </li>
-</ol> 
+</ol>
 
 <p>The <code>build.gradle</code> file is updated with the <code>support-annotations</code>
 dependency.</p>
@@ -432,7 +369,7 @@
 <p>Run <strong>Analyze &gt; Inspect Code</strong> to validate the configured annotations. </p>
 
 <p>For a complete list of the supported annotations, either use the auto-complete feature to display
-the available options for the <code>import android.support.annotation.</code> statement or
+the available options for the <code>import android.support.annotation</code> statement or
 view the contents of the
 {@link android.support.annotation Support-Annotations}
 library. </p>
@@ -440,30 +377,6 @@
 <p>For more details about Android annotations, see
 <a href="{@docRoot}tools/debugging/annotations.html">Improving Code Inspection with Annotations</a>.
 
-
-
-<h3>Dynamic layout preview</h3>
-<p>Android Studio allows you to work with layouts in both a <em>Design View</em> </p>
-<p><img src="{@docRoot}images/tools/studio-helloworld-design.png" alt="" />
-</p>
-    <p class="img-caption"><strong>Figure 6.</strong> Hello World App with Design View.</p>
-
-<p>and a <em>Text View</em>. </p>
-
-    <p><img src="{@docRoot}images/tools/studio-helloworld-text.png" alt="" />
-    <pclass="img-caption"><strong>Figure 7.</strong> Hello World App with text view.</p>
-
-<p>Easily select and preview layout changes for different device images, display
-densities, UI modes, locales, and Android versions (multi-API version rendering).
-    <p><img src="{@docRoot}images/tools/studio-api-version-rendering.png" /></p>
-    <p class="img-caption"><strong>Figure 8.</strong> Multi-API version rendering.</p>
-
-
-<p>From the Design View, you can drag and drop elements from the Palette to the Preview or
-Component Tree. The Text View allows you to directly edit the XML settings, while previewing
-the device display. </p>
-
-
 <h3>Log messages</h3>
 <p>When you build and run your app with Android Studio, you can view adb and device log messages
 (logcat) by clicking <strong>Android</strong> at the bottom of the window.</p>
diff --git a/docs/html/tools/studio/studio-features.jd b/docs/html/tools/studio/studio-features.jd
index 44d6985..080a124 100644
--- a/docs/html/tools/studio/studio-features.jd
+++ b/docs/html/tools/studio/studio-features.jd
@@ -1,6 +1,10 @@
-page.title=Features
-page.metaDescription=Learn about the Android Studio features.
-page.tags=studio, features
+page.title=Android Studio Features
+page.image=images/cards/card-studio-modules_crop_2x.png
+page.metaDescription=A quick look at Android Studio features that make your work faster.
+page.tags=studio, tools, sdk
+meta.tags="studio"
+
+
 @jd:body
 
 <div id="qv-wrapper">
@@ -42,24 +46,24 @@
 
 
 <h2 id="trans-editor">Translations Editor</h2>
-<p>Multi-language support is enhanced with the Translations Editor plugin so you can easily add
-a variety of locales to the app's translation file. With
-<a class="external-link" href="https://tools.ietf.org/html/bcp47">BCP 47</a> support, the editor
-combines language and
-region codes into a single selection for targeted localizations. Color codes indicate whether a
-locale is complete or still missing string translations. </p>
+<p>If your application supports multiple languages, you need to properly manage your
+translated string resources. The Translations Editor lets you view and update all your string
+resources in one convenient place.</p>
 
-<p>To access the Translations Editor, open a <code>strings.xml</code> file and click the
-<strong>Open Editor</strong> link, or click the globe icon
-(<img src="{@docRoot}images/tools/studio-globe-icon.png" style="vertical-align:bottom;margin:0;height:19px" />) in the Design layout view.  </p>
+<p>
+Use the Translations Editor to view all your translated resources, modify translations, and add
+new locales. You can provide default values for your resources and mark resources as
+untranslatable. The Translations Editor also marks resources with missing translations in red,
+and provides a link to a page where you can upload resource files and order translation services.
+</p>
 
+<p>For more details on the Translations Editor, see
+<a href="{@docRoot}tools/help/translations-editor.html">Translations Editor</a>.</p>
 
-    <img src="{@docRoot}images/tools/studio-translationeditoropen.png" />
-    <p class="img-caption"><strong>Figure 1.</strong> Add locales and strings in the
+    <img src="{@docRoot}images/tools/studio-translations-editor.png" />
+    <p class="img-caption"><strong>Figure 1.</strong> Manage locales and strings in the
     Translations Editor.</p>
 
-
-
 <h2 id="git-samples">Android Code Samples on GitHub</h2>
 <p>Clicking <strong>Import Samples</strong> from the <strong>File</strong> menu or <em>Welcome</em>
 page provides seamless access to Google code samples on GitHub.</p>
diff --git a/docs/html/tools/studio/ui-tools.jd b/docs/html/tools/studio/ui-tools.jd
new file mode 100644
index 0000000..2d25de6
--- /dev/null
+++ b/docs/html/tools/studio/ui-tools.jd
@@ -0,0 +1,32 @@
+page.title=Android Studio User Interface Tools
+
+@jd:body
+
+<p>
+  Android Studio provides a number of user interface tools to assist you with creating layouts,
+  implementing style themes, and building graphic or text resources for your app.
+</p>
+
+<dl>
+
+   <dt><a href="{@docRoot}sdk/installing/studio-layout.html">Layout Editor</a></dt>
+        <dd>Drag and drop user interface elements to build layouts for your app.
+        </dd>
+
+   <dt><a href="{@docRoot}tools/help/theme-editor.html">Theme Editor</a></dt>
+        <dd>Build re-usable user interface styles for layouts and widgets in your app.
+        </dd>
+
+    <dt><a href="{@docRoot}tools/help/translations-editor.html">Translations Editor</a></dt>
+        <dd>View and update all your string resource translations in one convenient place.
+        </dd>
+
+    <dt><a href="{@docRoot}tools/help/vector-asset-studio.html">Vector Asset Studio</a></dt>
+        <dd>Add material icons and import Scalable Vector Graphic (SVG) files into your
+        Android Studio project as a drawable resource.</dd>
+
+    <dt><a href="{@docRoot}tools/help/image-asset-studio.html">Image Asset Studio</a></dt>
+      <dd>Generate custom icons for your Android applications from existing images,
+        clipart, or text.</dd>
+
+</dl>
diff --git a/docs/html/tools/support-library/features.jd b/docs/html/tools/support-library/features.jd
old mode 100644
new mode 100755
index f03de77..fa5a8b4
--- a/docs/html/tools/support-library/features.jd
+++ b/docs/html/tools/support-library/features.jd
@@ -38,6 +38,8 @@
         Support Library Revisions</a></li>
       <li><a href="{@docRoot}tools/support-library/setup.html">
         Support Library Setup</a></li>
+      <li><a href="{@docRoot}tools/testing-support-library/index.html">
+        Testing Support Library</a></li>
     </ol>
 
   </div>
@@ -140,7 +142,7 @@
 </p>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code <sdk>/extras/android/support/v4/} directory. The library does not contain user
+{@code &lt;sdk&gt;/extras/android/support/v4/} directory. The library does not contain user
 interface resources. To include it in your application project, follow the instructions for
 <a href="{@docRoot}tools/support-library/setup.html#libs-without-res">Adding libraries without
 resources</a>.</p>
@@ -151,7 +153,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:support-v4:21.0.0
+com.android.support:support-v4:23.2.1
 </pre>
 
 
@@ -167,7 +169,7 @@
 
 <p>
   After you download the Android Support Libraries, this library is located in the
-  {@code <sdk>/extras/android/support/multidex/} directory. The library does not contain
+  {@code &lt;sdk&gt;/extras/android/support/multidex/} directory. The library does not contain
   user interface resources. To include it in your application project, follow the instructions
   for
   <a href= "{@docRoot}tools/support-library/setup.html#libs-without-res">Adding libraries without
@@ -202,8 +204,7 @@
 </p>
 
 <p class="note"><strong>Note:</strong>
-  This library depends on the v4 Support Library. If you are using Ant or Eclipse, make sure
-  you include the v4 Support Library as part of this library's classpath.
+  This library depends on the v4 Support Library.
 </p>
 
 <p>Here are a few of the key classes included in the v7 appcompat library:</p>
@@ -228,7 +229,7 @@
 </ul>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code <sdk>/extras/android/support/v7/appcompat/} directory. The library contains user
+{@code &lt;sdk&gt;/extras/android/support/v7/appcompat/} directory. The library contains user
 interface resources. To include it in your application project, follow the instructions for
 <a href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries with
 resources</a>.</p>
@@ -236,7 +237,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:appcompat-v7:21.0.0
+com.android.support:appcompat-v7:23.2.1
 </pre>
 
 
@@ -249,7 +250,7 @@
 implementations, and are used extensively in layouts for TV apps.</p>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code <sdk>/extras/android/support/v7/cardview/} directory. The library contains user interface
+{@code &lt;sdk&gt;/extras/android/support/v7/cardview/} directory. The library contains user interface
 resources. To include it in your application project, follow the instructions
 for <a href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding
 libraries with resources</a>.</p>
@@ -257,7 +258,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:cardview-v7:21.0.0
+com.android.support:cardview-v7:23.2.1
 </pre>
 
 
@@ -270,7 +271,7 @@
 For detailed information about the v7 gridlayout library APIs, see the
 {@link android.support.v7.widget android.support.v7.widget} package in the API reference.</p>
 
-<p>This library is located in the {@code <sdk>/extras/android/support/v7/gridlayout/}
+<p>This library is located in the {@code &lt;sdk&gt;/extras/android/support/v7/gridlayout/}
   directory . The library contains user
   interface resources. To include it in your application project, follow the instructions for
   <a href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries with
@@ -279,7 +280,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:gridlayout-v7:21.0.0
+com.android.support:gridlayout-v7:23.2.1
 </pre>
 
 
@@ -306,16 +307,14 @@
 libraries in your build path when setting up your project. For more information
 on how to set up your project, follow the instructions in <a
 href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries
-with resources</a>. If you are developing in Eclipse/ADT, make sure to include
-the <code>android-support-v7-mediarouter.jar</code>, <code>android-support-v7-appcompat.jar</code>,
-and <code>android-support-v7-palette.jar</code> files.</p>
+with resources</a>.</p>
 
-<p>If you are using Android Studio, all you need to do is specify the Gradle build
-script dependency identifier <code>com.android.support:support-v7-mediarouter:&lt;revision&gt;</code>,
+<p>The Gradle builder script dependency identifier is as follows:
+<code>com.android.support:support-v7-mediarouter:&lt;revision&gt;</code>,
 where "&lt;revision&gt;" is the minimum revision at which the library is available. For example:</p>
 
 <pre>
-com.android.support:mediarouter-v7:21.0.0
+com.android.support:mediarouter-v7:23.2.1
 </pre>
 
 <p class="caution">The v7 mediarouter library APIs introduced in Support Library
@@ -333,7 +332,7 @@
 title card.</p>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code <sdk>/extras/android/support/v7/palette/} directory. The library does not contain
+{@code &lt;sdk&gt;/extras/android/support/v7/palette/} directory. The library does not contain
 user interface resources. To include it in your application project, follow the instructions for
 <a href="{@docRoot}tools/support-library/setup.html#libs-without-res">Adding libraries without
 resources</a>.</p>
@@ -341,7 +340,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:palette-v7:21.0.0
+com.android.support:palette-v7:23.2.1
 </pre>
 
 
@@ -350,12 +349,12 @@
 
 <p>The recyclerview library adds the {@link android.support.v7.widget.RecyclerView}
 class. This class provides support for the
-<a href="{@docRoot}training/material/lists-cards#RecyclerView">RecyclerView
-widget</a>, a view for efficiently displaying large data sets by providing a
+<a href="{@docRoot}training/material/lists-cards.html">RecyclerView</a>
+widget, a view for efficiently displaying large data sets by providing a
 limited window of data items.</p>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code <sdk>/extras/android/support/v7/recyclerview/} directory. The library contains
+{@code &lt;sdk&gt;/extras/android/support/v7/recyclerview/} directory. The library contains
 user interface resources. To include it in your application project, follow the instructions
 for <a href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding
 libraries with resources</a>.</p>
@@ -363,7 +362,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:recyclerview-v7:21.0.0
+com.android.support:recyclerview-v7:23.2.1
 </pre>
 
 
@@ -384,7 +383,7 @@
 
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code <sdk>/extras/android/support/v7/preference} directory. For more information
+{@code &lt;sdk&gt;/extras/android/support/v7/preference} directory. For more information
 on how to set up your project, follow the instructions in <a
 href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries
 with resources</a>. </p>
@@ -392,7 +391,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:preference-v7:23.0.0
+com.android.support:preference-v7:23.2.1
 </pre>
 
 
@@ -421,7 +420,7 @@
 
 <p class="note">
   <strong>Note:</strong> Use of RenderScript with the support library is supported with Android
-  Studio and Gradle-based builds, as well as the Eclipse plugin and Ant build tools. The
+  Studio and Gradle-based builds. The
   renderscript library is located in the <code>build-tools/$VERSION/renderscript/</code> folder.
 </p>
 
@@ -448,7 +447,7 @@
 </p>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code <sdk>/extras/android/support/v13/} directory. The library does not contain user
+{@code &lt;sdk&gt;/extras/android/support/v13/} directory. The library does not contain user
 interface resources. To include it in your application project, follow the instructions for
 <a href="{@docRoot}tools/support-library/setup.html#libs-without-res">Adding libraries without
 resources</a>.</p>
@@ -456,7 +455,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:support-v13:18.0.0
+com.android.support:support-v13:23.2.1
 </pre>
 
 
@@ -480,7 +479,7 @@
 </p>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code <sdk>/extras/android/support/v14/} directory. The library does not contain user
+{@code &lt;sdk&gt;/extras/android/support/v14/} directory. The library does not contain user
 interface resources. To include it in your application project, follow the instructions for
 <a href="{@docRoot}tools/support-library/setup.html#libs-without-res">Adding libraries without
 resources</a>.</p>
@@ -488,7 +487,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:preference-v14:23.0.0
+com.android.support:preference-v14:23.2.1
 </pre>
 
 
@@ -509,7 +508,7 @@
 </p>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code <sdk>/extras/android/support/v17/} directory. The library does not contain user
+{@code &lt;sdk&gt;/extras/android/support/v17/} directory. The library does not contain user
 interface resources. To include it in your application project, follow the instructions for
 <a href="{@docRoot}tools/support-library/setup.html#libs-without-res">Adding libraries without
 resources</a>.</p>
@@ -517,7 +516,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:preference-v17:23.0.0
+com.android.support:preference-leanback-v17:23.2.1
 </pre>
 
 
@@ -551,7 +550,7 @@
 </ul>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code <sdk>/extras/android/support/v17/leanback} directory. For more information
+{@code &lt;sdk&gt;/extras/android/support/v17/leanback} directory. For more information
 on how to set up your project, follow the instructions in <a
 href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries
 with resources</a>. </p>
@@ -559,7 +558,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:leanback-v17:21.0.0
+com.android.support:leanback-v17:23.2.1
 </pre>
 
 
@@ -572,7 +571,7 @@
 <p></p>
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code <sdk>/extras/android/support/annotations} directory. For more information
+{@code &lt;sdk&gt;/extras/android/support/annotations} directory. For more information
 on how to set up your project, follow the instructions in <a
 href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries
 with resources</a>. </p>
@@ -580,7 +579,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:support-annotations:22.0.0
+com.android.support:support-annotations:23.2.1
 </pre>
 
 
@@ -597,7 +596,7 @@
 
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code <sdk>/extras/android/support/design} directory. For more information
+{@code &lt;sdk&gt;/extras/android/support/design} directory. For more information
 on how to set up your project, follow the instructions in <a
 href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries
 with resources</a>. </p>
@@ -605,7 +604,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:design:22.2.0
+com.android.support:design:23.2.1
 </pre>
 
 
@@ -625,7 +624,7 @@
 
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code <sdk>/extras/android/support/customtabs} directory. For more information
+{@code &lt;sdk&gt;/extras/android/support/customtabs} directory. For more information
 on how to set up your project, follow the instructions in <a
 href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries
 with resources</a>. </p>
@@ -633,7 +632,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:customtabs:23.0.0
+com.android.support:customtabs:23.2.1
 </pre>
 
 
@@ -656,7 +655,7 @@
 
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code <sdk>/extras/android/support/customtabs} directory. For more information
+{@code &lt;sdk&gt;/extras/android/support/percent} directory. For more information
 on how to set up your project, follow the instructions in <a
 href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries
 with resources</a>. </p>
@@ -664,7 +663,7 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:percent:23.0.0
+com.android.support:percent:23.2.1
 </pre>
 
 
@@ -686,7 +685,7 @@
 
 
 <p>After you download the Android Support Libraries, this library is located in the
-{@code <sdk>/extras/android/support/customtabs} directory. For more information
+{@code &lt;sdk&gt;/extras/android/support/recommendation} directory. For more information
 on how to set up your project, follow the instructions in <a
 href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries
 with resources</a>. </p>
@@ -694,5 +693,5 @@
 <p>The Gradle build script dependency identifier for this library is as follows:</p>
 
 <pre>
-com.android.support:app.recommendation-app:23.0.0
+com.android.support:recommendation:23.2.1
 </pre>
diff --git a/docs/html/tools/support-library/index.jd b/docs/html/tools/support-library/index.jd
index 60620e7..1152eac4 100644
--- a/docs/html/tools/support-library/index.jd
+++ b/docs/html/tools/support-library/index.jd
@@ -58,11 +58,945 @@
 
 <p>This section provides details about the Support Library package releases.</p>
 
-
-
 <div class="toggle-content opened">
-  <p id="rev21"><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img" alt=""
+  <p id="rev23-2-1">
+    <a href="#" onclick="return toggleContent(this)"><img src=
+    "{@docRoot}assets/images/styles/disclosure_up.png" class="toggle-content-img"
+    alt="">Android Support Library, revision 23.2.1</a> <em>(March
+    2016)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+    <dl>
+      <dt>
+        Changes for <a href=
+        "{@docRoot}tools/support-library/features.html#v4">v4 Support
+        Library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Fixed an exception in {@link
+          android.support.v4.graphics.drawable.DrawableCompat#wrap
+          DrawableCompat.wrap()} and {@link android.graphics.drawable.LayerDrawable} on
+          API levels 17 to 19. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=201817">Issue 201817</a>)
+          </li>
+
+          <li>Fixed an {@code ArrayIndexOutOfBoundsException} in {@link
+          android.support.v4.widget.ViewDragHelper#shouldInterceptTouchEvent
+          ViewDragHelper.shouldInterceptTouchEvent()}. (<a class="external-link"
+            href="https://code.google.com/p/android/issues/detail?id=182262">Issue
+            182262</a>)
+          </li>
+
+          <li>Fixed a bug in {@link android.support.v4.view.ViewPager} related to
+          scroll calculation for size changes.
+          </li>
+
+          <li>Fixed a {@code NullPointerException} when {@code
+          DrawerLayout.removeDrawerListener()} is called without a set {@link
+          android.support.v4.widget.DrawerLayout.DrawerListener
+          DrawerLayout.DrawerListener}. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=202478">Issue 202478</a>)
+          </li>
+
+          <li>Fixed a bug where {@link android.support.v4.view.ViewPager} does not set
+          {@link android.view.accessibility.AccessibilityEvent} parameters properly
+          when scrolling.
+          </li>
+
+          <li>Fixed an issue that caused lag during device rotation when using
+          {@link android.support.v4.graphics.drawable.DrawableCompat#wrap
+          Drawable.wrap()}. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=201924">Issue 201924</a>)
+          </li>
+        </ul>
+      </dd>
+
+      <dt>
+        Changes for <a href=
+        "{@docRoot}tools/support-library/features.html#v7-appcompat">v7
+        appcompat library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Reverted dependency on vector assets so that developers using the
+            <a href="{@docRoot}tools/support-library/features.html#v7-appcompat">appcompat
+            library</a> are not forced to use {@link
+            android.graphics.drawable.VectorDrawable} and its associated build flags.
+          </li>
+
+          <li>Fixed a compatibility issue with Night Mode and API level 23.
+            (<a class="external-link" href=
+            "https://code.google.com/p/android/issues/detail?id=201910">Issue
+            201910</a>)
+          </li>
+
+          <li>Fixed a compatibility issue with {@link
+          android.support.v7.widget.SwitchCompat} and API level 7. (<a class=
+          "external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=201942">Issue 201942</a>)
+          </li>
+
+          <li>Fixed an issue with propagating configuration values in Resources objects
+          <a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=201928">Issue 201928</a>
+          </li>
+
+          <li>Fixed a compatibility issue where the {@link
+          android.support.v7.app.NotificationCompat.MediaStyle
+          NotificationCompat.MediaStyle} cancel button becomes invisible on API level
+          21 and below. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=202156">Issue 202156</a>)
+          </li>
+
+          <li>Fixed a compatibility crash with {@link
+          android.support.v7.widget.AppCompatSpinner} on API level 21 and below.
+          (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=202246">Issue 202246</a>)
+          </li>
+
+          <li>Fixed an issue where the {@code app:textAllCaps = "false"} style did not
+          work. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=202117">Issue 202117</a>)
+          </li>
+
+          <li>Fixed a crash when restoring {@link android.widget.SearchView}.
+            (<a class="external-link" href=
+            "https://code.google.com/p/android/issues/detail?id=201836">Issue
+            201836</a>)
+          </li>
+
+          <li>Fixed a memory leak that occurs when tinting drawable resources using
+          AppCompat. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=202379">Issue 202379</a>)
+          </li>
+
+          <li>Fixed an issue with {@link android.view.KeyEvent} on API level 11 and
+          lower. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=202939">Issue 202939</a>)
+          </li>
+        </ul>
+      </dd>
+
+      <dt>
+        Changes for <a href=
+        "{@docRoot}tools/support-library/features.html#v7-cardview">v7 cardview
+        library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Added Night Mode support for {@link
+          android.support.v7.widget.CardView}. (<a class="external-link"
+            href="https://code.google.com/p/android/issues/detail?id=194497">Issue
+            194497</a>)
+          </li>
+        </ul>
+      </dd>
+
+      <dt>
+        Changes for <a href=
+        "{@docRoot}tools/support-library/features.html#v7-recyclerview">v7
+        recyclerview library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Fixed bugs related to various measure-spec methods. (<a class=
+          "external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=201856">Issue
+          201856</a>)
+          </li>
+
+          <li>Reduced the lockdown period in which {@link
+          android.support.v7.widget.RecyclerView} does not allow adapter
+          changes while calculating a layout or scroll. (<a class=
+          "external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=202046">Issue
+          202046</a>)
+          </li>
+
+          <li>Fixed a crash when calling {@link
+          android.support.v7.widget.RecyclerView.Adapter#notifyItemChanged
+          notifyItemChanged()} on an item that is out of view. (<a class=
+          "external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=202136">Issue
+          202136</a>)
+          </li>
+
+          <li>Fixed a crash that occurs when {@link
+          android.support.v7.widget.RecyclerView.LayoutManager
+          RecyclerView.LayoutManager} adds and removes a view in the same
+          measurement pass. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=193958">Issue
+          193958</a>)
+          </li>
+        </ul>
+      </dd>
+
+      <dt>
+        Changes for <a href=
+        "{@docRoot}tools/support-library/features.html#v7-mediarouter">v7
+        mediarouter library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Fixed a crash that occurs when calling {@link
+          android.support.v7.media.MediaRouter#getInstance
+          MediaRouter.getInstance()} on API level 17. (<a class="external-link"
+            href=
+            "https://code.google.com/p/android/issues/detail?id=180654">Issue
+            180654</a>)
+          </li>
+        </ul>
+      </dd>
+
+      <dt>
+        Changes for <a href=
+        "{@docRoot}tools/support-library/features.html#v17-leanback">v17
+        Leanback Library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Fixed an issue with {@code GridLayout.onAddFocusables()} that
+          caused the wrong item to be selected.
+          </li>
+
+          <li>Fixed issue with {@link
+          android.support.v17.leanback.app.GuidedStepFragment} actions
+          disappearing after an action was collapsed.
+          </li>
+        </ul>
+      </dd>
+
+      <dt>
+        Changes for <a href=
+        "{@docRoot}tools/support-library/features.html#design">Design Support
+        Library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Fixed a {@link android.support.design.widget.TabLayout} crash
+          caused by tab-pooling. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=201827">Issue
+          201827</a>)
+          </li>
+
+          <li>Fixed a bug in {@link
+          android.support.design.widget.NavigationView} that caused the wrong
+          color to be selected. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=201951">Issue
+          201951</a>)
+          </li>
+
+          <li>Fixed a bug where {@link
+          android.support.design.widget.FloatingActionButton#setBackgroundTintList
+          setBackgroundTintList()} was no longer able to change the background
+          color. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=201873">Issue
+          201873</a>)
+          </li>
+
+          <li>Fixed an issue where {@link
+          android.support.design.widget.AppBarLayout} did not completely scroll
+          out of view when used with {@code android:fitsSystemWindows = “true”}.
+          (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=201822">Issue
+          201822</a>)
+          </li>
+
+          <li>Fixed an issue where {@code BottomSheetDialog} did not display
+          short content views correctly. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=201793">Issue
+          201793</a>)
+          </li>
+
+          <li>Fixed an issue where {@code BottomSheetDialogFragment} moved
+          sporadically when content inside was changed. (<a class=
+          "external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=202125">Issue
+          202125</a>)
+          </li>
+
+          <li>Fixed a crash in TextInputLayout counter <a class="external-link"
+            href=
+            "https://code.google.com/p/android/issues/detail?id=202051">link</a>
+          </li>
+
+          <li>Fixed a crash that occured when {@link
+          android.support.design.widget.TextInputLayout#getCounterMaxLength
+          TextInputLayout.getCounterMaxLength()} restored a saved state.
+          (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=202375">Issue
+          202375</a>)
+          </li>
+
+          <li>Fixed a {@code ClassCastException} that occurred when restoring a
+          {@link android.support.design.widget.CoordinatorLayout} using the
+          saved state of a view that was not a {@link
+          android.support.design.widget.CoordinatorLayout}.
+          </li>
+        </ul>
+      </dd>
+
+      <dt>
+        Changes for VectorDrawableCompat:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Fixed a bug where the wrong variable was read for {@code
+          android:tintMode}. (<a class="external-link" href=
+          "https://code.google.com/p/android/issues/detail?id=201907">Issue
+          201907</a>)
+          </li>
+        </ul>
+      </dd>
+    </dl>
+  </div>
+</div>
+<!-- end of collapsible section -->
+
+<div class="toggle-content closed">
+  <p id="rev23-2-0">
+    <a href="#" onclick="return toggleContent(this)"><img src=
+    "{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img"
+    alt="">Android Support Library, revision 23.2.0</a> <em>(February
+    2016)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+    <dl>
+      <dt>
+        Changes for <a href="features.html#v4">v4 Support library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Added {@code MediaBrowserCompat} for {@link
+          android.media.browse.MediaBrowser} support, and {@code
+          MediaBrowserServiceCompat} for {@link
+          android.service.media.MediaBrowserService} support. This is useful
+          when connecting a media app’s background service with UI components,
+          and integrating with Android Auto and Android Wear without requiring
+          API level 21 or higher.
+          </li>
+
+          <li>The system now calls {@link
+          android.support.v4.app.FragmentActivity#onActivityResult onActivityResult()} for a
+          nested {@link android.support.v4.app.FragmentActivity}.
+          </li>
+        </ul>
+      </dd>
+
+      <dt>
+        Changes for <a href="features.html#v7-appcompat">v7 AppCompat
+        library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Added Night Mode functionality to API level 14 and higher. Switch
+          between <a href="{@docRoot}training/material/theme.html">Material
+          Light and Material Dark Themes</a> based on the time of day or
+          app-specific setting.
+          </li>
+
+          <li style="list-style: none; display: inline">
+            <ul>
+              <li>Day and night themes can be found here: {@code
+              &lt;sdk&gt;/extras/android/support/v7/appcompat/res/values/themes_daynight.xml}
+              </li>
+
+              <li>{@code AppCompatDelegate.setDefaultNightMode()}: sets the
+              app’s default mode by passing one of the following constants:
+              </li>
+
+              <li style="list-style: none; display: inline">
+                <ul>
+                  <li>{@code MODE_NIGHT_AUTO}
+                  </li>
+
+                  <li>{@code MODE_NIGHT_NO}
+                  </li>
+
+                  <li>{@code MODE_NIGHT_YES}
+                  </li>
+
+                  <li>{@code MODE_NIGHT_FOLLOW_SYSTEM}
+                  </li>
+                </ul>
+              </li>
+
+              <li>{@code AppCompatDelegate.setLocalNightMode()}: overrides
+              the night mode setting for the local app component.
+              </li>
+
+              <li>{@code AppCompatDelegate.getDefaultNightMode()}: returns
+              the default night mode.
+              </li>
+            </ul>
+          </li>
+        </ul>
+      </dd>
+
+      <dt>
+        Changes for <a href="features.html#v7-mediarouter">v7 mediarouter
+        library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>{@link android.support.v7.app.MediaRouteControllerDialog} now
+          correctly applies custom app theme colors.
+          </li>
+        </ul>
+      </dd>
+
+      <dt>
+        Changes for <a href="features.html#design">Design support library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Added support for <a href=
+          "https://www.google.com/design/spec/components/bottom-sheets.html">bottom
+          sheets</a>. An interaction plugin, {@code
+          BottomSheetBehavior}, allows a child view of a {@link
+          android.support.design.widget.CoordinatorLayout} to act as
+          a bottom sheet. The base class, {@code BottomSheetCallback}, provides
+          callbacks to monitor bottom sheet events.
+          </li>
+        </ul>
+      </dd>
+
+      <dt>
+        Changes for the <a href="features.html#custom-tabs">CustomTabs support
+        library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>
+            <a href=
+            "https://developer.chrome.com/multidevice/android/customtabs">Chrome
+            Custom Tabs</a> now allows apps to include a bottom bar with action
+            buttons in addition to the existing top action button.
+          </li>
+
+          <li>{@code CustomTabsIntent.Builder.addToolBarItem()}: adds an action
+          button to a custom tab. You can use this to add multiple buttons.
+          </li>
+
+          <li>{@code CustomTabsSession.setToolBarItem()}: updates the visuals
+          for toolbar items. This method will only succeed if it is given a
+          valid id and the browser session is in the foreground.
+          </li>
+        </ul>
+      </dd>
+
+      <dt>
+        Added VectorDrawable support library:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Added Classes:
+          </li>
+
+          <li style="list-style: none; display: inline">
+            <ul>
+              <li>{@code VectorDrawableCompat}
+              </li>
+
+              <li>{@code AnimatedVectorDrawableCompat}
+              </li>
+            </ul>
+          </li>
+
+          <li>Adds support for {@link
+          android.graphics.drawable.VectorDrawable} assets to apps
+          running on API level 7 or higher. {@link
+          android.graphics.drawable.AnimatedVectorDrawable} assets
+          are also supported on API level 11 or higher. Vector assets can be
+          considerably smaller than image assets and should help reduce app
+          size by reducing the amount of assets required to support multiple
+          device screens.
+          </li>
+
+          <li>This library is now a dependency of the <a href=
+          "features.html#v7-appcompat">v7 AppCompat library</a>, allowing
+          developers and <a href="features.html#v7-appcompat">AppCompat </a>
+          to easily use vector drawables. To use {@code
+          VectorDrawableCompat} within an {@link android.widget.ImageButton} or
+          {@link android.widget.ImageView}, use the {@code app:srcCompat} XML
+          attribute or {@code setImageResource()}
+          method.
+          </li>
+
+          <li>To keep referencing attribute IDs on API level 20 or
+          lower, add the following {@code appt} flag to your {@code
+          build,gradle} file:
+          </li>
+
+          <li style="list-style: none; display: inline">
+            <ul>
+              <li>If you are building with Android Plugin for Gradle 1.5.0 or
+              lower, add the following to your {@code build.gradle} file:
+              </li>
+
+              <li style="list-style: none; display: inline">
+                <pre>
+android {
+  defaultConfig {
+    // Stops the Gradle’s automatic rasterization of vectors
+    generatedDensities = []
+  }
+   // Flag that tells aapt to keep the attribute ids
+  aaptOptions {
+    additionalParameters "--no-version-vectors"
+  }
+}
+</pre>
+              </li>
+
+              <li>If you are building with Android Plugin for Gradle 2.0.0 or
+              higher, add the following to your {@code build.gradle} file:
+              </li>
+
+              <li style="list-style: none; display: inline">
+                <pre>
+android {
+  defaultConfig {
+    vectorDrawables.useSupportLibrary = true
+  }
+}
+</pre>
+              </li>
+            </ul>
+          </li>
+        </ul>
+      </dd>
+
+      <dt>
+        Changes for <a href="features.html#v17-leanback">v17 Leanback
+        Library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>Added new capabilities to {@link android.support.v17.leanback.app.GuidedStepFragment},
+          which is a component that guides users through a decision or series of decisions:
+          </li>
+
+          <li style="list-style: none; display: inline">
+            <ul>
+              <li>Added button actions to {@link
+              android.support.v17.leanback.widget.GuidedAction}:
+              </li>
+
+                <ul>
+                  <li>{@code GuidedStepFragment.setButtonActions()}: sets a list of
+                  {@link android.support.v17.leanback.widget.GuidedAction} buttons that
+                  the user may select from the Actions view.
+                  </li>
+                </ul>
+              </li>
+
+              <li>Description fields are now editable:
+              </li>
+
+              <li style="list-style: none; display: inline">
+                <ul>
+                  <li>{@code GuidedAction.Builder.descriptionEditable()}: when passing
+                  {@code true}, sets the action’s description to be editable.
+                  </li>
+
+                  <li>{@code GuidedAction.getEditDescription()}: returns the editable
+                  description as a {@code CharSequence}.
+                  </li>
+                </ul>
+              </li>
+
+              <li>Added drop-down lists of sub-actions:
+              </li>
+
+              <li style="list-style: none; display: inline">
+                <ul>
+                  <li>{@code GuidedAction.setSubActions()}: sets a {@link
+                  android.support.v17.leanback.widget.GuidedAction} list as a drop-down
+                  menu of sub-actions.
+                  </li>
+                </ul>
+              </li>
+            </ul>
+
+          <li>Added the {@code GuidedDatePickerAction} widget for {@link
+          android.widget.DatePicker} functionality:
+          </li>
+
+          <li style="list-style: none; display: inline">
+            <ul>
+              <li>The date is selected using year, month, and day columns and has a
+              customizable range.
+              </li>
+
+              <li>{@code GuidedDatePickerAction.Builder}: builder class for the {@code
+              GuidedDatePickerAction} object.
+              </li>
+
+              <li>{@code GuidedDatePickerAction.Builder.datePickerFormat(String
+              datePickerFormat)}: set the desired date format by passing the
+              appropriate three-character {@code String}, e.g. {@code “YMD”} or {@code
+              “MDY”}. Alternatively, use the {@code datePickerFormat} XML attribute.
+              </li>
+            </ul>
+          </li>
+        </ul>
+      </dd>
+    </dl>
+
+    <dl>
+      <dt>
+        Changes for <a href="features.html#v7-recyclerview">v7 RecyclerView
+        library</a>:
+      </dt>
+
+      <dd>
+        <ul>
+          <li>{@link android.support.v7.widget.RecyclerView} now has an opt-in
+          feature called <em>AutoMeasure</em> which allows {@link
+          android.support.v7.widget.RecyclerView.LayoutManager} to easily wrap
+          content or handle various measurement specifications provided by the
+          parent of the {@link android.support.v7.widget.RecyclerView}. It
+          supports all existing animation capabilities of the {@link
+          android.support.v7.widget.RecyclerView}.
+          </li>
+
+          <li style="list-style: none; display: inline">
+            <ul>
+              <li>If you have a custom {@link
+              android.support.v7.widget.RecyclerView.LayoutManager},
+              call {@code setAutoMeasureEnabled(true)} to start using the new
+              AutoMeasure API. All built-in {@link
+              android.support.v7.widget.RecyclerView.LayoutManager} objects
+              enable auto-measure by default.
+              </li>
+
+              <li>{@link android.support.v7.widget.RecyclerView.LayoutManager}
+              no longer ignores some {@link
+              android.support.v7.widget.RecyclerView.LayoutParams} settings,
+              such as {@code MATCH_PARENT} in the scroll direction.
+                <p class="note">
+                  <strong>Note:</strong> These lifted restrictions may cause
+                  unexpected behavior in your layouts. Make sure you specify
+                  the correct layout parameters.
+                </p>
+              </li>
+            </ul>
+          </li>
+
+          <li>When updating a {@link
+          android.support.v7.widget.RecyclerView.ViewHolder} with payload
+          information, {@link android.support.v7.widget.DefaultItemAnimator}
+          now disables change animations.
+          </li>
+
+          <li>You can now modify the {@link
+          android.support.v7.widget.helper.ItemTouchHelper} escape velocity to
+          control swipe sensitivity. To make it easier or harder to swipe,
+          override {@code getSwipeEscapeVelocity(float defaultValue)} and modify {@code defaultValue}.
+          </li>
+        </ul>
+      </dd>
+    </dl>
+  </div>
+</div>
+<!-- end of collapsible section -->
+
+<div class="toggle-content closed">
+  <p id="rev23-1-1"><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
+/>Android Support Library, revision 23.1.1</a> <em>(November 2015)</em>
+  </p>
+  <div class="toggle-content-toggleme">
+    <dl>
+      <dt>Changes for <a href="features.html#v7-recyclerview">v7 recyclerview library:</a></dt>
+      <dd>
+        <ul>
+          <li>Fixed a crash that occurs when you perform a swipe-to-dismiss action that the
+            {@code ItemTouchHelper} utility class provides, and then add an item.
+            (<a href="http://b.android.com/190500">Issue 190500</a>)</li>
+         </ul>
+      </dd>
+      <dt>Changes for <a href="features.html#v7-preference">v7 preference library:</a></dt>
+      <dd>
+        <ul>
+          <li>Fixed an issue with ProGuard usage.
+          (<a href="http://b.android.com/183261">Issue 183261</a>)</li>
+         </ul>
+      </dd>
+
+      <dt>Changes for <a href="features.html#v17-leanback">v17 Leanback Support library:</a></dt>
+      <dd>
+        <ul>
+          <li>Fixed a number of internal issues in this library.</li>
+         </ul>
+      </dd>
+      <dt>Changes for <a href="features.html#design">Design Support library:</a></dt>
+      <dd>
+        <ul>
+          <li>Added the <code>getHeaderView</code> method to the <code>NavigationView</code> class.</li>
+          <li>Fixed a transparent background issue for a <code>FloatingActionButton</code> object on
+          devices running Android 4.0 (API level 15) and lower.
+          (<a href="http://b.android.com/183315">Issue 183315</a>)</li>
+         </ul>
+       </dd>
+    </dl>
+
+  </div>
+</div> <!-- end of collapsible section -->
+
+
+
+<div class="toggle-content closed">
+  <p id="rev23-1-0"><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
+/>Android Support Library, revision 23.1.0</a> <em>(October 2015)</em>
+  </p>
+  <div class="toggle-content-toggleme">
+    <dl>
+      <dt>Changes for <a href="features.html#v4">v4 Support library:</a></dt>
+       <dd>
+        <ul>
+           <li>Added <code>OnScrollChangedListener</code> interface support to the
+            <code>NestedScrollView</code> widget. It
+            allows you to receive callbacks when the scroll X or Y positions change.</li>
+          <li>Added a <code>MediaButtonReceiver</code> class to forward received playback controls
+            to a service that’s managing the <code>MediaSessionCompat</code> class. The
+            <code>MediaSessionCompat</code> class has a
+            constructor that can automatically find a media button receiver in the manifest. A
+            media button receiver is a key part to <a href=
+          "http://developer.android.com/training/managing-audio/volume-playback.html#PlaybackControls">handling
+          playback controls</a> from hardware or bluetooth controls.</li>
+        </ul>
+       </dd>
+
+
+      <dt>Changes for <a href="features.html#v7-appcompat">v7 appcompat library:</a></dt>
+       <dd>
+        <ul>
+          <li>Added material design <code>Seekbar</code> and <code>ImageButton</code> widgets.</li>
+          <li>Updated the <code>ImageView</code> widget to support the tint feature.</li>
+          <li>Updated the look-and-feel of the <code>SwitchCompat</code> widget.</li>
+         </ul>
+       </dd>
+
+      <dt>Changes for <a href="features.html#v7-mediarouter">v7 mediarouter library:</a></dt>
+       <dd>
+        <ul>
+        <li>Added the following features to the <code>MediaRouteChooserDialog</code> class:</li>
+        <ul>
+          <li>Displays a loading page while discovering media route providers.</li>
+          <li>Includes a device type icon for easier device identification.</li>
+          <li>Sorts the routes according to frequency of use in the current app.</li>
+          <li>Supports landscape mode.</li>
+        </ul>
+        </ul>
+        <ul>
+        <li>Added the following features to the <code>MediaRouteControllerDialog</code> class:</li>
+        <ul>
+           <li>Recognizes screen casting and provides a proper description.</li>
+           <li>Supports various album art sizes and aspect ratios, and loads the art asynchronously.</li>
+           <li>Automatically selects the content color based on the primary color of the app.</li>
+           <li>Adjusts the dialog layout based on available screen space on the device.</li>
+           <li>Supports landscape mode.</li>
+        </ul>
+        </ul>
+       </dd>
+
+      <dt>Changes for <a href="features.html#v7-palette">v7 palette library:</a></dt>
+       <dd>
+        <ul>
+          <li>Added the <code>setRegion()</code> method to support extracting color from a specific
+            region of a <code>Bitmap</code> object.</li>
+         </ul>
+       </dd>
+
+      <dt>Changes for <a href="features.html#v7-recyclerview">v7 recyclerview library:</a></dt>
+       <dd>
+        <ul>
+        <li>Added an improved animation API to the <code>ItemAnimator</code> class for better
+          customizations:</li>
+           <ul>
+           <li>Change animations no longer enforce two copies of the <code>ViewHolder</code> object,
+            which enables item content animations. Also, the <code>ItemAnimator</code> object
+            decides whether it wants to reuse the same <code>ViewHolder</code> object or create a
+            new one.</li>
+           <li>The new information record API gives the <code>ItemAnimator</code> class the flexibility
+            to collect data at the correct point in the layout lifecycle. This information is later
+            passed into the animate callbacks.</li>
+            </ul>
+         </ul>
+          <ul>
+          <li>Provided an easy transition plan for this backward-incompatible API change:</li>
+           <ul>
+           <li>If you’ve previously extended the <code>ItemAnimator</code> class, you can change
+            your base class to <code>SimpleItemAnimator</code> and your code should work as before.
+            The <code>SimpleItemAnimator</code> class provides the old API by wrapping the new API.</li>
+           <li>Some methods were removed from the <code>ItemAnimator</code> class. The following
+            code will no longer compile:</li>
+           <pre>recyclerView.getItemAnimator().setSupportsChangeAnimations(false)</pre>
+           <p>You can replace it with:</p>
+           <pre>
+ItemAnimator animator = recyclerView.getItemAnimator();
+if (animator instanceof SimpleItemAnimator) {
+   ((SimpleItemAnimator) animator).setSupportsChangeAnimations(false);
+}
+           </pre>
+          </ul>
+         </ul>
+       </dd>
+
+
+      <dt>Changes for <a href="features.html#v7-preference">v7</a>,
+          <a href="features.html#v14-preference">v14</a>, and
+          <a href="features.html#v17-preference">v17</a> Preference Support library:</dt>
+       <dd>
+        <ul>
+          <li>Removed APIs for controlling <code>EditText</code> dialogs.</li>
+         </ul>
+       </dd>
+
+     <dt>Changes for <a href="features.html#v17-leanback">v17 Leanback Support library:</a></dt>
+      <dd>
+        <ul>
+          <li>Added a version of the <code>GuidedStepFragment</code> class for the Support library
+            (extends <code>android.support.v4.app.Fragment</code>), and improved animations and
+            transitions.</li>
+          <li>Updated the <code>GuidedStepFragment</code> class so it can be placed on top of
+            existing content.</li>
+          <li>Added the ability to annotate different types of search completions to the
+          <code>SearchFragment</code> class.</li>
+          <li>Added staggered slide transition support to the <code>VerticalGridFragment</code>
+            class.</li>
+         </ul>
+       </dd>
+
+
+     <dt>Changes for <a href="features.html#design">Design Support library:</a></dt>
+      <dd>
+        <ul>
+          <li>Added <a href=
+  "https://www.google.com/design/spec/components/text-fields.html#text-fields-character-counter">
+          character counting</a> support to the <code>TextInputLayout</code> widget.</li>
+          <li>Added edge snapping support to the <code>AppBarLayout</code> class by adding the
+            <code>SCROLL_FLAG_SNAP</code> constant. When scrolling ends, if the view is only
+            partially visible, the view is snapped and scrolled to its closest edge.</li>
+          <li>Added support for custom views to the <code>NavigationView</code> class by using the
+            <code>app:actionLayout</code> attribute or <code>MenuItemCompat.setActionView()</code>
+            method.</li>
+         </ul>
+       </dd>
+
+
+     <dt>Changes for <a href="features.html#custom-tabs">Custom Tabs Support library:</a></dt>
+      <dd>
+        <ul>
+          <li>Added the <code>enableUrlBarHiding()</code> method to the <code>CustomTabsIntent</code>
+            class. It lets the client customize whether the URL bar should be hidden automatically
+            on scroll down.</li>
+          <li>Added the <code>setActionButton()</code> method to the <code>CustomTabsSession</code>
+            class. It lets the client
+            change the icon for a custom action button in an already launched custom tab.</li>
+          <li>Added the <code>TAB_SHOWN</code> and <code>TAB_HIDDEN</code> constants as new events
+            for the <code>onNavigationEvent</code> method of the <code>CustomTabsCallback</code>
+            class.</li>
+         </ul>
+       </dd>
+
+    </dl>
+
+  </div>
+</div> <!-- end of collapsible section -->
+
+
+<div class="toggle-content closed">
+  <p id="rev23-0-1"><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
+/>Android Support Library, revision 23.0.1</a> <em>(September 2015)</em>
+  </p>
+  <div class="toggle-content-toggleme">
+    <dl>
+      <dt>Changes for <a href="features.html#v7-preference">v7</a> and
+          <a href="features.html#v14-preference">v14</a> Preference Support library:</dt>
+       <dd>
+        <ul>
+          <li>Added the material design layout and style files.
+          (<a href="http://b.android.com/183376">Issue 183376</a>)</li>
+         </ul>
+       </dd>
+
+
+      <dt>Changes for <a href="features.html#v7-appcompat">v7 appcompat library:</a></dt>
+       <dd>
+        <ul>
+          <li>Fixed crash issues for the {@link android.app.Fragment} class by limiting the use of
+              hardware layers to Android 4.1 (API level 16) and higher.
+          (<a href="http://b.android.com/183896">Issue 183896</a>)</li>
+          <li>Fixed an issue where hardware buttons did not work when an activity had set the
+            {@link android.widget.Toolbar} class to act as the
+            {@link android.app.ActionBar} by using the <code>setSupportActionBar()</code> method.
+          (<a href="http://b.android.com/183334">Issue 183334</a>)</li>
+          <li>Updated the {@link android.support.v7.app.AppCompatDialogFragment} class so it
+            no longer throws the {@code Windows feature must be requested before adding content}
+            error.
+          (<a href="http://b.android.com/183186">Issue 183186</a>)</li>
+         </ul>
+       </dd>
+
+
+     <dt>Changes for <a href="features.html#design">Design Support library:</a></dt>
+      <dd>
+        <ul>
+          <li>Fixed the
+            {@link android.support.design.widget.AppBarLayout} class so it now draws correctly after
+            rotation.
+          (<a href="http://b.android.com/183109">Issue 183109</a>)</li>
+          <li>Fixed the
+            {@link android.support.design.widget.TabLayout} class so it now behaves correctly when a
+            user clicks after a swipe.
+          (<a href="http://b.android.com/183123">Issue 183123</a>)</li>
+         </ul>
+       </dd>
+
+
+     <dt>Changes for <a href="features.html#custom-tabs">Custom Tabs Support library:</a></dt>
+      <dd>
+        <ul>
+          <li>Lowered the
+          <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code>minSdkVersion</code></a>
+              value from 16 to 15 for version support.</li>
+          <li>Added a way to generate a
+            {@link android.support.customtabs.CustomTabsSessionToken} from an intent.</li>
+         </ul>
+       </dd>
+
+    </dl>
+
+  </div>
+</div> <!-- end of collapsible section -->
+
+
+<div class="toggle-content closed">
+  <p id="rev23"><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 23</a> <em>(August 2015)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -91,8 +1025,8 @@
 
 
 <div class="toggle-content closed">
-  <p id="rev21"><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+  <p id="rev22-2-1"><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 22.2.1</a> <em>(July 2015)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -132,7 +1066,7 @@
 
 <div class="toggle-content closed">
   <p id="rev21"><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 22.2.0</a> <em>(May 2015)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -288,7 +1222,7 @@
 
 <div class="toggle-content closed">
   <p id="rev21"><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 22.1.0</a> <em>(April 2015)</em>
   </p>
 
@@ -512,7 +1446,7 @@
 
 <div class="toggle-content closed">
   <p id="rev21"><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 22</a> <em>(March 2015)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -618,7 +1552,7 @@
 
 <div class="toggle-content closed">
   <p id="rev21"><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 21.0.3</a> <em>(December 2014)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -645,7 +1579,7 @@
 
 <div class="toggle-content closed">
   <p id="rev21"><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 21.0.2</a> <em>(November 2014)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -704,7 +1638,7 @@
 
 <div class="toggle-content closed">
   <p id="rev21"><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 21.0.1</a> <em>(November 2014)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -723,7 +1657,7 @@
 
 <div class="toggle-content closed">
   <p id="rev21"><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 21</a> <em>(October 2014)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -806,7 +1740,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 20</a> <em>(July 2014)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -833,7 +1767,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 19.1.0</a> <em>(March 2014)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -860,7 +1794,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 19.0.1</a> <em>(December 2013)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -903,7 +1837,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 19</a> <em>(October 2013)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -955,7 +1889,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 18</a> <em>(July 2013)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -1056,7 +1990,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 13</a> <em>(May 2013)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -1107,7 +2041,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 12</a> <em>(February 2013)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -1132,7 +2066,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 11</a> <em>(November 2012)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -1194,7 +2128,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 10</a> <em>(August 2012)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -1213,7 +2147,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 9</a> <em>(June 2012)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -1283,7 +2217,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 8</a> <em>(April 2012)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -1306,7 +2240,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 7</a> <em>(March 2012)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -1336,7 +2270,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 6</a> <em>(December 2011)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -1389,7 +2323,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 5</a> <em>(December 2011)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -1448,7 +2382,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 4</a> <em>(October 2011)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -1490,7 +2424,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 3</a> <em>(July 2011)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -1541,7 +2475,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 2</a> <em>(May 2011)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -1561,7 +2495,7 @@
 
 <div class="toggle-content closed">
   <p><a href="#" onclick="return toggleContent(this)">
-    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
+    <img src="{@docRoot}assets/images/styles/disclosure_down.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 1</a> <em>(March 2011)</em>
   </p>
   <div class="toggle-content-toggleme">
diff --git a/docs/html/tools/support-library/setup.jd b/docs/html/tools/support-library/setup.jd
old mode 100644
new mode 100755
index a39e4b0..8fbcee1
--- a/docs/html/tools/support-library/setup.jd
+++ b/docs/html/tools/support-library/setup.jd
@@ -72,7 +72,7 @@
 
 <p>After downloading, the tool installs the Support Library files to your existing Android SDK
   directory. The library files are located in the following subdirectory of your SDK:
-  {@code <sdk>/extras/android/support/} directory.</p>
+  {@code &lt;sdk&gt;/extras/android/support/} directory.</p>
 
 
 <h2 id="choosing">Choosing Support Libraries</h2>
@@ -104,31 +104,6 @@
 
 <p>To add a Support Library without resources to your application project:</p>
 
-<div class="toggle-content closed">
-<p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
-  <img src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
-  />Using Eclipse</a></p>
-
-  <div class="toggle-content-toggleme">
-  <ol>
-    <li>Make sure you have downloaded the <strong>Android Support Library</strong>
-      using the <a href="#download">SDK Manager</a>.</li>
-    <li>Create a {@code libs/} directory in the root of your application project.</li>
-    <li>Copy the JAR file from your Android SDK installation directory (e.g.,
-      {@code <sdk>/extras/android/support/v4/android-support-v4.jar}) into your
-      application's project {@code libs/} directory.
-    <li>Right click the JAR file and select <strong>Build Path &gt; Add to Build Path</strong>.
-      </li>
-  </ol>
-  </div>
-</div>
-
-<div class="toggle-content closed">
-<p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
-  <img src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
-  />Using Android Studio</a></p>
-
-  <div class="toggle-content-toggleme">
     <ol>
       <li>Make sure you have downloaded the <strong>Android Support Repository</strong>
         using the <a href="#download">SDK Manager</a>.</li>
@@ -143,8 +118,6 @@
 </pre>
       </li>
     </ol>
-  </div>
-</div>
 
 
 <h3 id="libs-with-res">Adding libraries with resources</h3>
@@ -153,77 +126,6 @@
   <a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7
   appcompat</a> for action bar) to your application project:</p>
 
-<div class="toggle-content closed">
-  <p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
-  <img src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
-  />Using Eclipse</a></p>
-    <div class="toggle-content-toggleme">
-
-<p>Create a <a href="{@docRoot}tools/projects/index.html#LibraryProjects">library
-project</a> based on the support library code:</p>
-
-<ol>
-  <li>Make sure you have downloaded the <strong>Android Support Library</strong>
-    using the <a href="#download">SDK Manager</a>.</li>
-  <li>Create a library project and ensure the required JAR files are included in the project's
-    build path:
-    <ol>
-      <li>Select <strong>File &gt; Import</strong>.</li>
-      <li>Select <strong>Existing Android Code Into Workspace</strong> and click
-        <strong>Next</strong>.</li>
-      <li>Browse to the SDK installation directory and then to the Support Library folder.
-        For example, if you are adding the {@code appcompat} project, browse to
-        <code>&lt;sdk&gt;/extras/android/support/v7/appcompat/</code>.</li>
-      <li>Click <strong>Finish</strong> to import the project. For the v7 appcompat project, you
-        should now see a new project titled <em>android-support-v7-appcompat</em>.</li>
-      <li>In the new library project, expand the {@code libs/} folder, right-click each {@code .jar}
-        file and select <strong>Build Path &gt; Add to Build Path</strong>. For example, when
-        creating the the v7 appcompat project, add both the {@code android-support-v4.jar} and
-        {@code android-support-v7-appcompat.jar} files to the build path.</li>
-      <li>Right-click the library project folder and select <strong>Build Path &gt; Configure
-        Build Path</strong>.</li>
-      <li>In the <strong>Order and Export</strong> tab, check the <code>.jar</code> files you just
-        added to the build path, so they are available to projects that depend on this library
-        project. For example, the {@code appcompat} project requires you to export both the
-        {@code android-support-v4.jar} and {@code android-support-v7-appcompat.jar} files.</li>
-      <li>Uncheck <strong>Android Dependencies</strong>.</li>
-      <li>Click <strong>OK</strong> to complete the changes.</li>
-    </ol>
-  </li>
-</ol>
-
-<p>You now have a library project for your selected Support Library that you can use with one or
-  more application projects.</p>
-
-<p>Add the library to your application project:</p>
-  <ol>
-    <li>In the Project Explorer, right-click your project and select <strong>Properties</strong>.</li>
-    <li>In the category panel on the left side of the dialog, select <strong>Android</strong>.</li>
-    <li>In the Library pane, click the <strong>Add</strong> button.</li>
-    <li>Select the library project and click <strong>OK</strong>. For example, the
-      {@code appcompat} project should be listed as <strong>android-support-v7-appcompat</strong>.
-      </li>
-    <li>In the properties window, click <strong>OK</strong>.</li>
-  </ol>
-
-<p class="note">
-  <strong>Note:</strong> If you are using the {@code android-support-v7-mediarouter} support
-  library, you should note that it depends on the {@code android-support-v7-appcompat} library.
-  In order for the v7 mediarouter library to compile, you must import both library projects into
-  your development workspace. Then follow the procedure above to add the v7 appcompat project as a
-  library to the v7 mediarouter library project.
-</p>
-
-  </div>
-</div>
-
-
-<div class="toggle-content closed">
-<p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
-    <img src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
-    />Using Android Studio</a></p>
-
-  <div class="toggle-content-toggleme">
     <ol>
       <li>Make sure you have downloaded the <strong>Android Support Repository</strong>
         using the <a href="#download">SDK Manager</a>.</li>
@@ -240,8 +142,6 @@
 </pre>
       </li>
     </ol>
-  </div>
-</div>
 
 
 <h2 id="using-apis">Using Support Library APIs</h2>
@@ -333,9 +233,9 @@
 SDK installation directory, as listed below:</p>
 
 <ul>
-  <li>4v Samples: {@code <sdk>/extras/android/support/samples/Support4Demos/}</li>
-  <li>7v Samples: {@code <sdk>/extras/android/support/samples/Support7Demos/}</li>
-  <li>13v Samples: {@code <sdk>/extras/android/support/samples/Support13Demos/}</li>
-  <li>App Navigation: {@code <sdk>/extras/android/support/samples/SupportAppNavigation/}</li>
+  <li>4v Samples: {@code &lt;sdk&gt;/extras/android/support/samples/Support4Demos/}</li>
+  <li>7v Samples: {@code &lt;sdk&gt;/extras/android/support/samples/Support7Demos/}</li>
+  <li>13v Samples: {@code &lt;sdk&gt;/extras/android/support/samples/Support13Demos/}</li>
+  <li>App Navigation: {@code &lt;sdk&gt;/extras/android/support/samples/SupportAppNavigation/}</li>
 </ul>
 
diff --git a/docs/html/tools/testing-support-library/index.jd b/docs/html/tools/testing-support-library/index.jd
index 97c2dcf..35a3c7d 100644
--- a/docs/html/tools/testing-support-library/index.jd
+++ b/docs/html/tools/testing-support-library/index.jd
@@ -1,4 +1,5 @@
 page.title=Testing Support Library
+page.image=images/tools/studio-test-module.png
 
 @jd:body
 
@@ -585,13 +586,13 @@
 
   <pre>
 dependencies {
-  androidTestCompile 'com.android.support.test:runner:0.3'
+  androidTestCompile 'com.android.support.test:runner:0.4'
   // Set this dependency to use JUnit 4 rules
-  androidTestCompile 'com.android.support.test:rules:0.3'
+  androidTestCompile 'com.android.support.test:rules:0.4'
   // Set this dependency to build and run Espresso tests
-  androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2'
+  androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
   // Set this dependency to build and run UI Automator tests
-  androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
+  androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
 }</pre>
 
   <p>To set
@@ -628,4 +629,4 @@
   <p>
   For more information about Android Studio and to download it, see
   <a href="{@docRoot}sdk/index.html">Download Android Studio and SDK Tools</a>.
-  </p>
\ No newline at end of file
+  </p>
diff --git a/docs/html/tools/testing/activity_test.jd b/docs/html/tools/testing/activity_test.jd
deleted file mode 100644
index 036407a..0000000
--- a/docs/html/tools/testing/activity_test.jd
+++ /dev/null
@@ -1,1321 +0,0 @@
-page.title=Activity Testing Tutorial
-parent.title=Testing
-parent.link=index.html
-@jd:body
- <div id="qv-wrapper">
-  <div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li>
-      <a href="#Prerequisites">Prerequisites</a>
-    </li>
-    <li>
-      <a href="#DownloadCode">Installing the Tutorial Sample Code</a>
-    </li>
-    <li>
-        <a href="#SetupEmulator">Setting Up the Emulator</a>
-    </li>
-    <li>
-        <a href="#SetupProjects">Setting Up the Projects</a>
-    </li>
-    <li>
-      <a href="#CreateTestCaseClass">Creating the Test Case Class</a>
-      <ol>
-        <li>
-          <a href="#AddTestCaseClass">Adding the test case class file</a>
-        </li>
-        <li>
-          <a href="#AddConstructor">Adding the test case constructor</a>
-        </li>
-        <li>
-            <a href="#AddSetupMethod">Adding the setup method</a>
-        </li>
-        <li>
-            <a href="#AddPreConditionsTest">Adding an initial conditions test</a>
-        </li>
-        <li>
-            <a href="#AddUITest">Adding a UI test</a>
-        </li>
-        <li>
-            <a href="#StateManagementTests">Adding state management tests</a>
-        </li>
-      </ol>
-    </li>
-    <li>
-        <a href="#RunTests">Running the Tests and Seeing the Results</a>
-    </li>
-    <li>
-        <a href="#TestFailure">Forcing Some Tests to Fail</a>
-    </li>
-    <li>
-        <a href="#NextSteps">Next Steps</a>
-    </li>
-</ol>
-<h2 id="#Appendix">Appendix</h2>
-<ol>
-    <li>
-        <a href="#InstallCompletedTestApp">Installing the Completed Test Application File</a>
-    </li>
-    <li>
-        <a href="#EditorCommandLine">For Users Not Developing In Eclipse</a>
-    </li>
-</ol>
-<h2>See Also</h2>
-<ol>
-    <li>
-        <a href="{@docRoot}tools/testing/testing_android.html">Testing Fundamentals</a>
-    </li>
-    <li>
-        {@link android.test.ActivityInstrumentationTestCase2}
-    </li>
-    <li>
-        {@link junit.framework.Assert}
-    </li>
-    <li>
-        {@link android.test.InstrumentationTestRunner}
-    </li>
-</ol>
-</div>
-</div>
-<p>
-  Android includes powerful tools for testing applications. The tools extend JUnit with additional features, provide convenience classes for mock Android system objects, and use
-  instrumentation to give you control over your main application while you are testing it. The entire Android testing environment is discussed in the document
-  <a href="{@docRoot}tools/testing/testing_android.html">Testing Fundamentals</a>.
-</p>
-<p>
-  This tutorial demonstrates the Android testing tools by presenting a simple Android application and then leading you step-by-step through the creation of a test application for it.
-  The test application demonstrates these key points:
-</p>
-  <ul>
-    <li>
-      An Android test is itself an Android application that is linked to the application under test by entries in its <code>AndroidManifest.xml</code> file.
-    </li>
-    <li>
-      Instead of Android components, an Android test application contains one or more test cases. Each of these is a separate class definition.
-    </li>
-    <li>
-      Android test case classes extend the JUnit {@link junit.framework.TestCase} class.
-    </li>
-    <li>
-      Android test case classes for activities extend JUnit and also connect you to the application under test with instrumentation. You can send keystroke or touch events directly to the UI.
-    </li>
-    <li>
-      You choose an Android test case class based on the type of component (application, activity, content provider, or service) you are testing.
-    </li>
-    <li>
-      Additional test tools in Eclipse/ADT provide integrated support for creating test applications, running them, and viewing the results.
-    </li>
-  </ul>
-<p>
-  The test application contains methods that perform the following tests:
-</p>
-  <ul>
-    <li>
-      Initial conditions test. Tests that the application under test initializes correctly. This is also a unit test of the application's
-      {@link android.app.Activity#onCreate(android.os.Bundle) onCreate()} method. Testing initial conditions also provides a confidence measure for subsequent tests.
-    </li>
-    <li>
-      UI test. Tests that the main UI operation works correctly. This test demonstrates the instrumentation features available in activity testing.
-      It shows that you can automate UI tests by sending key events from the test application to the main application.
-    </li>
-    <li>
-      State management tests. Test the application's code for saving state. This test demonstrates the instrumentation features of the test runner, which
-      are available for testing any component.
-    </li>
-  </ul>
-<h2 id="Prerequisites">Prerequisites</h2>
-<p>
-  The instructions and code in this tutorial depend on the following:
-</p>
-  <ul>
-    <li>
-      Basic knowledge of Android programming. If you haven't yet written an Android application, 
-      do the class 
-      <a href="{@docRoot}training/basics/firstapp/index.html">Building Your First App</a>. 
-      If you want to learn more about Spinner, the application under test, then you 
-      might want to review the "Spinner" sample app.
-    </li>
-    <li>
-      Some familiarity with the Android testing framework and concepts. If you haven't explored
-      Android testing yet, start by reading the
-      <a href="{@docRoot}tools/testing/testing_android.html">Testing Fundamentals</a>
-      guide.
-    </li>
-    <li>
-        Eclipse with ADT. This tutorial describes how to set up and run a test application using
-        Eclipse with ADT. If you haven't yet installed Eclipse and the ADT plugin,
-        follow the steps in <a href="{@docRoot}sdk/installing/index.html">Installing the SDK</a>
-        to install them before continuing. If you are not developing in Eclipse, you will
-        find instructions for setting up and running the test application in the
-        <a href="#EditorCommandLine">appendix</a> of this document.
-    </li>
-  </ul>
-<h2 id="DownloadCode">Installing the Tutorial Sample Code</h2>
-<p>
-    During this tutorial, you will be working with sample code that is provided as part
-    of the downloadable Samples component of the SDK. Specifically, you will be working
-    with a pair of related sample applications &mdash; an application under test and a test
-    application:
-</p>
-    <ul>
-        <li>
-            Spinner is the application under test. This tutorial focuses on the
-            common situation of writing tests for an application that already exists, so the main
-            application is provided to you.
-        </li>
-        <li>
-             SpinnerTest is the test application. In the tutorial, you create this application
-             step-by-step. If you want to run quickly through the tutorial,
-             you can install the completed SpinnerTest application first, and then follow the
-             text. You may get more from the tutorial, however, if you create the test application
-             as you go. The instructions for installing the completed test application are in the
-             section 
-             <a href="#InstallCompletedTestApp">Installing the Completed Test Application File</a>.
-        </li>
-    </ul>
-<p>
-    The sample applications are described in more detail in the 
-    <a href="{@docRoot}tools/samples/index.html">Samples</a> topic. Follow the instructions to
-    download the version of the samples that's appropriate for the platform you're working with.
-</p>
-<h2 id="SetupEmulator">Setting Up the Emulator</h2>
-<p>
-  In this tutorial, you will use the Android emulator to run applications. The emulator needs
-  an Android Virtual Device (AVD) with an API level equal to or higher than the one you set for the projects in the previous step.
-  To find out how to check this and create the right AVD if necessary, 
-  see <a href="{@docRoot}tools/devices/managing-avds.html">Creating an AVD</a>.
-</p>
-<p>
-    As a test of the AVD and emulator, run the SpinnerActivity application in Eclipse with ADT. When it starts,
-    click the large downward-pointing arrow to the right of the spinner text. You see the spinner expand and display the title &quot;Select a planet&quot; at the top.
-    Click one of the other planets. The spinner closes, and your selection appears below it on the screen.
-</p>
-<h2 id="SetupProjects">Setting Up the Projects</h2>
-<p>
-    When you are ready to get started with the tutorial, begin by setting up Eclipse projects for
-    both Spinner (the application under test) and SpinnerTest (the test application).
-</p>
-<p>
-    You'll be using the Spinner application as-is, without modification, so you'll be loading it
-    into Eclipse as a new Android project from existing source. In the process, you'll be
-    creating a new test project associated with Spinner that will contain the SpinnerTest
-    application. The SpinnerTest application will be completely new and you'll be
-    using the code examples in this tutorial to add test classes and tests to it.
-</p>
-<p>
-    To install the Spinner app in a new Android project from existing source, following these steps:
-</p>
-<ol>
-    <li>
-        In Eclipse, select <strong>File</strong>&nbsp;&gt;&nbsp;<strong>New</strong>&nbsp;&gt;&nbsp;<strong>Project</strong>&nbsp;&gt;&nbsp;<strong>Android</strong>&nbsp;&gt;&nbsp;<strong>Android Project</strong>,
-        then click Next. The <strong>New Android Project</strong> dialog appears.
-    </li>
-    <li>
-        In the <em>Project name</em> text box, enter &quot;SpinnerActivity&quot;. The <em>Properties</em> area is filled in automatically.
-    </li>
-    <li>
-        In the <em>Contents</em> area, set &quot;Create project from existing source&quot;.
-    </li>
-    <li>
-        For <em>Location</em>, click <strong>Browse</strong>, navigate to the directory <code>&lt;SDK_path&gt;/samples/android-8/Spinner</code>,
-        then click Open. The directory name <code>&lt;SDK_path&gt;/samples/android-8/Spinner</code> now appears in the <em>Location</em> text box.
-    </li>
-    <li>
-        In the <em>Build Target</em> area, set a API level of 3 or higher. If you are already developing with a particular target, and it is API level 3 or higher, then use that target.
-    </li>
-    <li>
-        In the <em>Properties</em> area, in the <em>Min SDK Version:</em>, enter &quot;3&quot;.
-    </li>
-    <li>
-        You should now see these values:
-        <ul>
-            <li><em>Project Name:</em> &quot;SpinnerActivity&quot;</li>
-            <li><em>Create project from existing source:</em> set</li>
-            <li><em>Location:</em> &quot;<code>&lt;SDK_path&gt;/samples/android-8/Spinner</code>&quot;</li>
-            <li><em>Build Target:</em> &quot;API level of 3 or higher&quot; (<em>Target Name</em> &quot;Android 1.5 or higher&quot;)</li>
-            <li><em>Package name:</em> (disabled, set to &quot;<code>com.android.example.spinner</code>&quot;)</li>
-            <li><em>Create Activity:</em> (disabled, set to &quot;.SpinnerActivity&quot;)</li>
-            <li><em>Min SDK Version:</em> &quot;3&quot;</li>
-        </ul>
-        <p>
-            The following screenshot summarizes these values:
-        </p>
-            <a href="{@docRoot}images/testing/eclipse_new_android_project_complete_callouts.png">
-                <img src="{@docRoot}images/testing/eclipse_new_android_project_complete_callouts.png" alt="New Android Project dialog with filled-in values" style="height:230px"/>
-            </a>
-
-    </li>
-</ol>
-<p>
-    To create a new test project for the SpinnerTest application, follow these steps:
-</p>
-<ol>
-    <li>
-        Click Next. The <strong>New Android Test Project</strong> dialog appears.
-    </li>
-    <li>
-        Set &quot;Create a Test Project&quot;.
-    </li>
-    <li>
-        Leave the other values unchanged. The result should be:
-        <ul>
-            <li><em>Create a Test Project:</em> checked</li>
-            <li><em>Test Project Name:</em> &quot;SpinnerActivityTest&quot;</li>
-            <li><em>Use default location:</em> checked (this should contain the directory name &quot;<code>workspace/SpinnerActivityTest</code>&quot;).</li>
-            <li><em>Build Target:</em> Use the same API level you used in the previous step.</li>
-            <li><em>Application name:</em> &quot;SpinnerActivityTest&quot;</li>
-            <li><em>Package name:</em> &quot;<code>com.android.example.spinner.test</code>&quot;</li>
-            <li><em>Min SDK Version:</em> &quot;3&quot;</li>
-        </ul>
-        <p>
-            The following screenshot summarizes these values:
-        </p>
-            <a href="{@docRoot}images/testing/eclipse_new_android_testproject_complete_callouts.png">
-            <img src="{@docRoot}images/testing/eclipse_new_android_testproject_complete_callouts.png" alt="New Android Test Project dialog with filled-in values" style="height:230px"/>
-            </a>
-    </li>
-    <li>
-        Click Finish. Entries for SpinnerActivity and SpinnerActivityTest should appear in the
-        <strong>Package Explorer</strong>.
-        <p class="note">
-            <strong>Note:</strong> If you set <em>Build Target</em> to an API level higher than &quot;3&quot;, you will see the warning
-            &quot;The API level for the selected SDK target does not match the Min SDK version&quot;. You do not need to change the API level or the Min SDK version.
-            The message tells you that you are building the projects with one particular API level, but specifying that a lower API level is required. This may
-            occur if you have chosen not to install the optional earlier API levels.
-        </p>
-        <p>
-            If you see errors listed in the <strong>Problems</strong> pane at the bottom of the Eclipse window, or if a red error marker appears next to
-            the entry for SpinnerActivity in the Package Explorer, highlight the SpinnerActivity entry and then select
-            <strong>Project</strong>&nbsp;&gt;&nbsp;<strong>Clean</strong>. This should fix any errors.
-        </p>
-    </li>
-</ol>
-<p>
-    You now have the application under test in the SpinnerActivity project,
-    and an empty test project in SpinnerActivityTest. You may
-    notice that the two projects are in different directories, but Eclipse with
-    ADT handles this automatically. You should have no problem in either building or running them.
-</p>
-<p>
-    Notice that Eclipse and ADT have already done some initial setup for your test application.
-    Expand the SpinnerActivityTest project, and notice that it already has an
-    Android manifest file <code>AndroidManifest.xml</code>.
-    Eclipse with ADT created this when you added the test project.
-    Also, the test application is already set up to use instrumentation. You can see this
-    by examining <code>AndroidManifest.xml</code>.
-    Open it, then at the bottom of the center pane click <strong>AndroidManifest.xml</strong>
-    to display the XML contents:
-</p>
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-      package="com.android.example.spinner.test"
-      android:versionCode="1"
-      android:versionName="1.0"&gt;
-    &lt;uses-sdk android:minSdkVersion="3" /&gt;
-    &lt;instrumentation
-        android:targetPackage="com.android.example.spinner"
-        android:name="android.test.InstrumentationTestRunner" /&gt;
-    &lt;application android:icon="@drawable/icon" android:label="@string/app_name"&gt;
-        &lt;uses-library android:name="android.test.runner" /&gt;
-        ...
-    &lt;/application&gt;
-&lt;/manifest&gt;
-</pre>
-<p>
-    Notice the <code>&lt;instrumentation&gt;</code> element. The attribute
-    <code>android:targetPackage="com.android.example.spinner"</code> tells Android that the
-    application under test is defined in the Android package
-    <code>com.android.example.spinner</code>. Android now knows to use that
-    package's <code>AndroidManifest.xml</code> file to launch the application under test.
-    The <code>&lt;instrumentation&gt;</code> element also contains the attribute
-    <code>android:name="android.test.InstrumentationTestRunner"</code>, which tells Android
-    instrumentation to run the test application with Android's instrumentation-enabled test runner.
-</p>
-<h2 id="CreateTestCaseClass">Creating the Test Case Class</h2>
-
-<p>
-    You now have a test project SpinnerActivityTest, and the basic structure of a test
-    application also called SpinnerActivityTest. The basic structure includes all the files and
-    directories you need to build and run a test application, except for the class that
-    contains your tests (the test case class).
-</p>
-<p>
-    The next step is to define the test case class. In this tutorial, you'll be creating a
-    test case class that includes:
-</p>
-<ul>
-    <li>
-        Test setup. This use of the JUnit {@link junit.framework.TestCase#setUp() setUp()}
-        method demonstrates some of the tasks you might perform before running an Android test.
-    </li>
-    <li>
-        Testing initial conditions. This test demonstrates a good testing technique.
-        It also demonstrates that with Android instrumentation you can look at the application
-        under test <em>before</em> the main activity starts. The test checks that the application's
-        important objects have been initialized.
-        If the test fails, you then know that any other tests against the application are
-        unreliable, since the application was running in an incorrect state.
-        <p class="note">
-            <strong>Note:</strong> The purpose of testing initial conditions is not the same as
-            using <code>setUp()</code>. The JUnit {@link junit.framework.TestCase#setUp()} runs once
-            before <strong>each test method</strong>, and its purpose is to create a clean test
-            environment. The initial conditions test runs once, and its purpose is to verify that the
-            application under test is ready to be tested.
-        </p>
-    </li>
-    <li>
-        Testing the UI. This test shows how to control the main application's UI
-        with instrumentation, a powerful automation feature of Android testing.
-    </li>
-    <li>
-        Testing state management. This test shows some techniques for testing how
-        well the application maintains state in the Android environment. Remember that to
-        provide a satisfactory user experience, your application must never lose its current state,
-        even if it's interrupted by a phone call or destroyed because of memory constraints.
-        The Android activity lifecycle provides ways to maintain state, and the
-        <code>SpinnerActivity</code> application uses them. The test shows the techniques for
-        verifying that they work.
-    </li>
-</ul>
-<p>
-  Android tests are contained in a special type of Android application that contains one or more test class definitions. Each of these contains
-  one or more test methods that do the actual tests. In this tutorial, you will first add a test case class, and then add tests to it.
-</p>
-<p>
- You first choose an Android test case class to extend. You choose from the base test case classes according to the Android component you are testing and the types of tests you are doing.
- In this tutorial, the application under test has a single simple activity, so the test case class will be for an Activity component. Android offers several, but the one that tests in
- the most realistic environment is {@link android.test.ActivityInstrumentationTestCase2}, so you will use it as the base class. Like all activity test case classes,
- <code>ActivityInstrumentationTestCase2</code> offers convenience methods for interacting directly with the UI of the application under test.
-</p>
-<h3 id="AddTestCaseClass">Adding the test case class file</h3>
-<p>
-    To add <code>ActivityInstrumentationTestCase2</code> as the base test case class, follow these steps:
-</p>
-<ol>
-  <li>
-    In the Package Explorer, expand the test project SpinnerActivityTest if it is not open already.
-  </li>
-  <li>
-    Within SpinnerActivityTest, expand the <code>src/</code> folder and then the package marker for
-    <code>com.android.example.spinner.test</code>. Right-click on the package name and select <strong>New</strong> &gt; <strong>Class</strong>:<br/>
-    <a href="{@docRoot}images/testing/spinner_create_test_class_callouts.png">
-      <img alt="Menu for creating a new class in the test application" src="{@docRoot}images/testing/spinner_create_test_class_callouts.png" style="height:230px"/>
-    </a>
-    <p>
-      The <strong>New Java Class</strong> wizard appears:
-    </p>
-    <a href="{@docRoot}images/testing/spinnertest_new_class_callouts.png">
-      <img alt="New Java Class wizard dialog" src="{@docRoot}images/testing/spinnertest_new_class_callouts.png" style="height:230px"/>
-    </a>
-  </li>
-  <li>
-    In the wizard, enter the following:
-    <ul>
-      <li>
-        <em>Name:</em> &quot;SpinnerActivityTest&quot;. This becomes the name of your test class.
-      </li>
-      <li>
-        <em>Superclass:</em> &quot;<code>android.test.ActivityInstrumentationTestCase2&lt;SpinnerActivity&gt;</code>&quot;. The superclass is parameterized, so
-        you have to provide it your main application's class name.
-      </li>
-    </ul>
-    <p>
-      Do not change any of the other settings. Click Finish.
-    </p>
-  </li>
-  <li>
-    You now have a new file <code>SpinnerActivityTest.java</code> in the project.
-  </li>
-  <li>
-    To resolve the reference to SpinnerActivity, add the following import:
-<pre>
-import com.android.example.spinner.SpinnerActivity;
-</pre>
-  </li>
-</ol>
-<h3 id="AddConstructor">Adding the test case constructor</h3>
-  <p>
-    To ensure that the test application is instantiated correctly, you must set up a constructor that the test
-    runner will call when it instantiates your test class. This constructor has no parameters, and its sole
-    purpose is to pass information to the superclass's default constructor. To set up this constructor, enter the
-    following code in the class:
-  </p>
-<pre>
-  public SpinnerActivityTest() {
-    super(SpinnerActivity.class);
-  } // end of SpinnerActivityTest constructor definition
-</pre>
-<p>
-  This calls the superclass constructor with the main activity's class (<code>SpinnerActivity.class</code>) for the application under test. Android uses this information to find the application and activity to test.
-</p>
-<p>
-  You are now ready to add tests, by adding test methods to the class.
-</p>
-<h3 id="AddSetupMethod">Adding the setup method</h3>
-<p>
-    The <code>setUp()</code> method is invoked before every test. You use it to initialize variables and clean up from previous tests. You can also use
-    the JUnit {@link junit.framework.TestCase#tearDown() tearDown()} method, which runs <strong>after</strong> every test method. The tutorial does not use it.
-</p>
-<p>
-    The method you are going to add does the following:
-</p>
-<ul>
-  <li>
-    <code>super.setUp()</code>. Invokes the superclass constructor for <code>setUp()</code>, which is required by JUnit.
-  </li>
-  <li>
-    Calls {@link android.test.ActivityInstrumentationTestCase2#setActivityInitialTouchMode(boolean) setActivityInitialTouchMode(false)}.
-    This turns off <strong>touch mode</strong> in the device or emulator. If any of your test methods send key events to the application,
-    you must turn off touch mode <em>before</em> you start any activities; otherwise, the call is ignored.
-  </li>
-  <li>
-    Stores references to system objects. Retrieves and stores a reference to the activity under test, the <code>Spinner</code>
-    widget used by the activity, the <code>SpinnerAdapter</code> that backs the widget, and the string value of the selection that is
-    set when the application is first installed. These objects are used in the state management test. The methods invoked are:
-    <ul>
-      <li>
-        {@link android.test.ActivityInstrumentationTestCase2#getActivity()}. Gets a reference to the activity under test (<code>SpinnerActivity</code>).
-        This call also starts the activity if it is not already running.
-      </li>
-      <li>
-        {@link android.app.Activity#findViewById(int)}. Gets a reference to the <code>Spinner</code> widget of the application under test.
-      </li>
-      <li>
-        {@link android.widget.AbsSpinner#getAdapter()}. Gets a reference to the adapter (an array of strings) backing the spinner.
-      </li>
-    </ul>
-  </li>
-</ul>
-<p>
-    Add this code to the definition of <code>SpinnerActivityTest</code>, after the constructor definition:
-</p>
-<pre>
-  &#64;Override
-  protected void setUp() throws Exception {
-    super.setUp();
-
-    setActivityInitialTouchMode(false);
-
-    mActivity = getActivity();
-
-    mSpinner =
-      (Spinner) mActivity.findViewById(
-        com.android.example.spinner.R.id.Spinner01
-      );
-
-      mPlanetData = mSpinner.getAdapter();
-
-  } // end of setUp() method definition
-</pre>
-<p>
-    Add these members to the test case class:
-</p>
-<pre>
-  private SpinnerActivity mActivity;
-  private Spinner mSpinner;
-  private SpinnerAdapter mPlanetData;
-</pre>
-<p>
-  Add these imports:
-</p>
-<pre>
-import android.widget.Spinner;
-import android.widget.SpinnerAdapter;
-</pre>
-<p>
-    You now have the complete <code>setUp()</code> method.
-</p>
-<h3 id="AddPreConditionsTest">Adding an initial conditions test</h3>
-<p>
-  The initial conditions test verifies that the application under test is initialized correctly. It is an illustration of the types of tests you can run, so it is not comprehensive.
-  It verifies the following:
-</p>
-<ul>
-  <li>
-    The item select listener is initialized. This listener is called when a selection is made from the spinner.
-  </li>
-  <li>
-    The adapter that provides values to the spinner is initialized.
-  </li>
-  <li>
-    The adapter contains the right number of entries.
-  </li>
-</ul>
-<p>
-  The actual initialization of the application under test is done in <code>setUp()</code>, which the test runner calls automatically before every test. The verifications are
-  done with JUnit {@link junit.framework.Assert} calls. As a useful convention, the method name is <code>testPreConditions()</code>:
-</p>
-<pre>
-  public void testPreConditions() {
-    assertTrue(mSpinner.getOnItemSelectedListener() != null);
-    assertTrue(mPlanetData != null);
-    assertEquals(mPlanetData.getCount(),ADAPTER_COUNT);
-  } // end of testPreConditions() method definition
-</pre>
-<p>
-  Add this member:
-</p>
-<pre>
-  public static final int ADAPTER_COUNT = 9;
-</pre>
-<h3 id="AddUITest">Adding a UI test</h3>
-<p>
-  Now create a UI test that selects an item from the <code>Spinner</code> widget. The test sends key events to the UI with key events.
-  The test confirms that the selection matches the result you expect.
-</p>
-<p>
-  This test demonstrates the power of using instrumentation in Android testing. Only an instrumentation-based test class allows you to send key events (or touch events)
-  to the application under test. With instrumentation, you can test your UI without having to take screenshots, record the screen, or do human-controlled testing.
-</p>
-<p>
-  To work with the spinner, the test has to request focus for it and then set it to a known position. The test uses {@link android.view.View#requestFocus() requestFocus()} and
-  {@link android.widget.AbsSpinner#setSelection(int) setSelection()} to do this. Both of these methods interact with a View in the application under test, so you have to call them
-  in a special way.
-</p>
-<p>
-  Code in a test application that interacts with a View of the application under test must run in the main application's thread, also
-  known as the <em>UI thread</em>. To do this, you use the {@link android.app.Activity#runOnUiThread(java.lang.Runnable) Activity.runOnUiThread()}
-  method. You pass the code to <code>runOnUiThread()</code>in an anonymous {@link java.lang.Runnable Runnable} object. To set
-  the statements in the <code>Runnable</code> object, you override the object's {@link java.lang.Runnable#run()} method.
-</p>
-<p>
-  To send key events to the UI of the application under test, you use the <a href="{@docRoot}reference/android/test/InstrumentationTestCase.html#sendKeys(int...)">sendKeys</a>() method.
-  This method does not have to run on the UI thread, since Android uses instrumentation to pass the key events to the application under test.
-</p>
-<p>
-  The last part of the test compares the selection made by sending the key events to a pre-determined value. This tests that the spinner is working as intended.
-</p>
-<p>
-    The following sections show you how to add the code for this test.
-</p>
-<ol>
-    <li>
-        Get focus and set selection. Create a new method <code>public void testSpinnerUI()</code>. Add
-        code to to request focus for the spinner and set its position to default or initial position, "Earth". This code is run on the UI thread of
-        the application under test:
-<pre>
-  public void testSpinnerUI() {
-
-    mActivity.runOnUiThread(
-      new Runnable() {
-        public void run() {
-          mSpinner.requestFocus();
-          mSpinner.setSelection(INITIAL_POSITION);
-        } // end of run() method definition
-      } // end of anonymous Runnable object instantiation
-    ); // end of invocation of runOnUiThread
-</pre>
-        <p>
-          Add the following member to the test case class.
-        </p>
-<pre>
-  public static final int INITIAL_POSITION = 0;
-</pre>
-    </li>
-    <li>
-      Make a selection. Send key events to the spinner to select one of the items. To do this, open the spinner by
-      "clicking" the center keypad button (sending a DPAD_CENTER key event) and then clicking (sending) the down arrow keypad button five times. Finally,
-      click the center keypad button again to highlight the desired item. Add the following code:
-<pre>
-    this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
-    for (int i = 1; i &lt;= TEST_POSITION; i++) {
-      this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);
-    } // end of for loop
-
-    this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
-</pre>
-    <p>
-      Add the following member to the test case class:
-    </p>
-<pre>
-  public static final int TEST_POSITION = 5;
-</pre>
-    <p>
-      This sets the final position of the spinner to "Saturn" (the spinner's backing adapter is 0-based).
-    </p>
-  </li>
-  <li>
-    Check the result. Query the current state of the spinner, and compare its current selection to the expected value.
-    Call the method {@link android.widget.AdapterView#getSelectedItemPosition() getSelectedItemPosition()} to find out the current selection position, and then
-    {@link android.widget.AdapterView#getItemAtPosition(int) getItemAtPosition()} to get the object corresponding to that position (casting it to a String). Assert that
-    this string value matches the expected value of "Saturn":
-<pre>
-    mPos = mSpinner.getSelectedItemPosition();
-    mSelection = (String)mSpinner.getItemAtPosition(mPos);
-    TextView resultView =
-      (TextView) mActivity.findViewById(
-        com.android.example.spinner.R.id.SpinnerResult
-      );
-
-    String resultText = (String) resultView.getText();
-
-    assertEquals(resultText,mSelection);
-
-  } // end of testSpinnerUI() method definition
-</pre>
-<p>
-  Add the following members to the test case class:
-</p>
-<pre>
-  private String mSelection;
-  private int mPos;
-</pre>
-  <p>
-    Add the following imports to the test case class:
-  </p>
-<pre>
-  import android.view.KeyEvent;
-  import android.widget.TextView;
-</pre>
-  </li>
-</ol>
-<p>
-  Pause here to run the tests you have. The procedure for running a test application is different
-  from running a regular Android application. You run a test application as an Android JUnit
-  application. To see how to do this, see <a href="#RunTests">Running the Tests and Seeing the Results</a>.
-</p>
-<p>
-    Eventually, you will see the <code>SpinnerActivity</code> application start, and the test
-    application controlling it by sending it key events. You will also see a new
-    <strong>JUnit</strong> view in the Explorer pane, showing the results of the
-    test. The JUnit view is documented in a following section,
-    <a href="#RunTests">Running the Test and Seeing the Results</a>.
-</p>
-<h3 id="StateManagementTests">Adding state management tests</h3>
-<p>
-  You now write two tests that verify that SpinnerActivity maintains its state when it is paused or terminated.
-  The state, in this case, is the current selection in the spinner. When users make a selection,
-  pause or terminate the application, and then resume or restart it, they should see
-  the same selection.
-</p>
-<p>
-  Maintaining state is an important feature of an application. Users may switch from the current
-  application temporarily to answer the phone, and then switch back. Android may decide to
-  terminate and restart an activity to change the screen orientation, or terminate an unused
-  activity to regain storage. In each case, users are best served by having the UI return to its
-  previous state (except where the logic of the application dictates otherwise).
-</p>
-<p>
-  SpinnerActivity manages its state in these ways:
-</p>
-  <ul>
-    <li>
-      Activity is hidden. When the spinner screen (the activity) is running but hidden by some other screen, it
-      stores the spinner's position and value in a form that persists while the application is running.
-    </li>
-    <li>
-      Application is terminated. When the activity is terminated, it stores the spinner's position and value in
-      a permanent form. The activity can read the position and value when it restarts, and restore the spinner to its previous state.
-    </li>
-    <li>
-      Activity re-appears. When the user returns to the spinner screen, the previous selection is restored.
-    </li>
-    <li>
-      Application is restarted. When the user starts the application again, the previous selection is restored.
-    </li>
-  </ul>
-<p class="note">
-    <strong>Note:</strong> An application can manage its state in other ways as well, but these are
-    not covered in this tutorial.
-</p>
-<p>
-  When an activity is hidden, it is <strong>paused</strong>. When it re-appears, it
-  <strong>resumes</strong>. Recognizing that these are key points in an activity's life cycle,
-  the Activity class provides two callback methods {@link android.app.Activity#onPause()} and
-  {@link android.app.Activity#onResume()} for handling pauses and resumes.
-  SpinnerActivity uses them for code that saves and restores state.
-</p>
-<p>
-  <strong>Note:</strong> If you would like to learn more about the difference between losing
-  focus/pausing and killing an application,
-  read about the <a href="{@docRoot}guide/components/activities.html#Lifecycle">activity
-lifecycle</a>.
-</p>
-<p>
-  The first test verifies that the spinner selection is maintained after the entire application is shut down and then restarted. The test uses instrumentation to
-  set the spinner's variables outside of the UI. It then terminates the activity by calling {@link android.app.Activity#finish() Activity.finish()}, and restarts it
-  using the instrumentation method {@link android.test.ActivityInstrumentationTestCase2#getActivity()}. The test then asserts that the current spinner state matches
-  the test values.
-</p>
-<p>
-  The second test verifies that the spinner selection is maintained after the activity is paused and then resumed. The test uses instrumentation to
-  set the spinner's variables outside of the UI and then force calls to the <code>onPause()</code> and <code>onResume()</code> methods. The test then
-  asserts that the current spinner state matches the test values.
-</p>
-<p>
-  Notice that these tests make limited assumptions about the mechanism by which the activity manages state. The tests use the activity's getters and
-  setters to control the spinner. The first test also knows that hiding an activity calls <code>onPause()</code>, and bringing it back to the foreground
-  calls <code>onResume()</code>. Other than this, the tests treat the activity as a "black box".
-</p>
-<p>
-    To add the code for testing state management across shutdown and restart, follow these steps:
-</p>
- <ol>
-    <li>
-      Add the test method <code>testStateDestroy()</code>, then
-      set the spinner selection to a test value:
-<pre>
-  public void testStateDestroy() {
-    mActivity.setSpinnerPosition(TEST_STATE_DESTROY_POSITION);
-    mActivity.setSpinnerSelection(TEST_STATE_DESTROY_SELECTION);
-</pre>
-    </li>
-    <li>
-      Terminate the activity and restart it:
-<pre>
-    mActivity.finish();
-    mActivity = this.getActivity();
-</pre>
-    </li>
-    <li>
-      Get the current spinner settings from the activity:
-<pre>
-    int currentPosition = mActivity.getSpinnerPosition();
-    String currentSelection = mActivity.getSpinnerSelection();
-</pre>
-    </li>
-    <li>
-      Test the current settings against the test values:
-<pre>
-    assertEquals(TEST_STATE_DESTROY_POSITION, currentPosition);
-    assertEquals(TEST_STATE_DESTROY_SELECTION, currentSelection);
-  } // end of testStateDestroy() method definition
-</pre>
-<p>
-  Add the following members to the test case class:
-<pre>
-  public static final int TEST_STATE_DESTROY_POSITION = 2;
-  public static final String TEST_STATE_DESTROY_SELECTION = "Earth";
-</pre>
-    </li>
- </ol>
-<p>
-    To add the code for testing state management across a pause and resume, follow these steps:
-</p>
-<ol>
-    <li>
-      Add the test method <code>testStatePause()</code>:
-<pre>
-    &#64;UiThreadTest
-    public void testStatePause() {
-</pre>
-    <p>
-      The <code>@UiThreadTest</code> annotation tells Android to build this method so that it runs
-      on the UI thread. This allows the method to change the state of the spinner widget in the
-      application under test. This use of <code>@UiThreadTest</code> shows that, if necessary, you
-      can run an entire method on the UI thread.
-    </p>
-    </li>
-   <li>
-    Set up instrumentation. Get the instrumentation object
-    that is controlling the application under test. This is used later to
-    invoke the <code>onPause()</code> and <code>onResume()</code> methods:
-<pre>
-    Instrumentation mInstr = this.getInstrumentation();
-</pre>
-  </li>
-  <li>
-    Set the spinner selection to a test value:
-<pre>
-    mActivity.setSpinnerPosition(TEST_STATE_PAUSE_POSITION);
-    mActivity.setSpinnerSelection(TEST_STATE_PAUSE_SELECTION);
-</pre>
-  </li>
-  <li>
-    Use instrumentation to call the Activity's <code>onPause()</code>:
-<pre>
-    mInstr.callActivityOnPause(mActivity);
-</pre>
-    <p>
-      Under test, the activity is waiting for input. The invocation of
-      {@link android.app.Instrumentation#callActivityOnPause(android.app.Activity)}
-      performs a call directly to the activity's <code>onPause()</code> instead
-      of manipulating the activity's UI to force it into a paused state.
-    </p>
-  </li>
-  <li>
-    Force the spinner to a different selection:
-<pre>
-    mActivity.setSpinnerPosition(0);
-    mActivity.setSpinnerSelection("");
-</pre>
-    <p>
-      This ensures that resuming the activity actually restores the
-      spinner's state rather than simply leaving it as it was.
-    </p>
-  </li>
-  <li>
-    Use instrumentation to call the Activity's <code>onResume()</code>:
-<pre>
-    mInstr.callActivityOnResume(mActivity);
-</pre>
-    <p>
-      Invoking {@link android.app.Instrumentation#callActivityOnResume(android.app.Activity)}
-      affects the activity in a way similar to <code>callActivityOnPause</code>. The
-      activity's <code>onResume()</code> method is invoked instead of manipulating the
-      activity's UI to force it to resume.
-    </p>
-  </li>
-  <li>
-    Get the current state of the spinner:
-<pre>
-    int currentPosition = mActivity.getSpinnerPosition();
-    String currentSelection = mActivity.getSpinnerSelection();
-</pre>
-  </li>
-  <li>
-    Test the current spinner state against the test values:
-<pre>
-    assertEquals(TEST_STATE_PAUSE_POSITION,currentPosition);
-    assertEquals(TEST_STATE_PAUSE_SELECTION,currentSelection);
-  } // end of testStatePause() method definition
-</pre>
-    <p>
-      Add the following members to the test case class:
-    </p>
-<pre>
-  public static final int TEST_STATE_PAUSE_POSITION = 4;
-  public static final String TEST_STATE_PAUSE_SELECTION = "Jupiter";
-</pre>
-  </li>
-  <li>
-    Add the following imports:
-<pre>
-  import android.app.Instrumentation;
-  import android.test.UiThreadTest;
-</pre>
-  </li>
-</ol>
-<h2 id="RunTests">Running the Tests and Seeing the Results</h2>
- <p>
-    The most simple way to run the <code>SpinnerActivityTest</code> test case is to run it directly from the Package Explorer.
- </p>
- <p>
-    To run the <code>SpinnerActivityTest</code> test, follow these steps:
-</p>
- <ol>
-    <li>
-      In the Package Explorer, right-click the project SpinnerActivityTest at the top level, and then
-      select <strong>Run As</strong> &gt; <strong>Android JUnit Test</strong>:<br/>
-      <a href="{@docRoot}images/testing/spinnertest_runas_menu_callouts.png">
-        <img alt="Menu to run a test as an Android JUnit test" src="{@docRoot}images/testing/spinnertest_runas_menu_callouts.png" style="height:230px">
-      </a>
-    </li>
-    <li>
-        You will see the emulator start. When the unlock option is displayed (its appearance depends on the API level you specified for the AVD),
-        unlock the home screen.
-    </li>
-    <li>
-      The test application starts. You see a new tab for the <strong>JUnit</strong> view, next to the Package Explorer tab:<br/>
-      <a href="{@docRoot}images/testing/spinnertest_junit_panel.png">
-        <img alt="The JUnit window" src="{@docRoot}images/testing/spinnertest_junit_panel.png" style="height:230px">
-      </a>
-    </li>
-</ol>
-<p>
-    This view contains two sub-panes. The top pane summarizes the tests that were run, and the bottom pane shows failure traces for
-    highlighted tests.
-</p>
-<p>
-   At the conclusion of a successful test run, this is the view's appearance:<br/>
-   <a href="{@docRoot}images/testing/spinnertest_junit_success.png">
-    <img src="{@docRoot}images/testing/spinnertest_junit_success.png" alt="JUnit test run success" style="height:230px"/>
-   </a>
-</p>
-<p>
-    The upper pane summarizes the test:
-</p>
-    <ul>
-        <li>
-            Total time elapsed for the test application(labeled <em>Finished after &lt;x&gt; seconds</em>).
-        </li>
-        <li>
-            Number of runs (<em>Runs:</em>) - the number of tests in the entire test class.
-        </li>
-        <li>
-            Number of errors (<em>Errors:</em>) - the number of program errors and exceptions encountered during
-            the test run.
-        </li>
-        <li>
-            Number of failures (<em>Failures:</em>) - the number of test failures encountered during the test
-            run. This is the number of assertion failures. A test can fail even if the program does not encounter an error.
-        </li>
-        <li>
-            A progress bar. The progress bar extends from left to right as the tests run.
-            <p>
-               If all the tests succeed, the bar remains green. If a test fails, the bar turns from green to red.
-            </p>
-        </li>
-        <li>
-            A test method summary. Below the bar, you see a line for each class in the test application. To look at the results for the individual
-            methods in a test, click the arrow at the left to expand the line. You see the name of each test method. To the
-            right of the name, you see the time taken by the test. You can look at the test's code
-            by double-clicking its name.
-        </li>
-    </ul>
-<p>
-    The lower pane contains the failure trace. If all the tests are successful, this pane is empty. If some tests fail,
-    then if you highlight a failed test in the upper pane, the lower view contains a stack trace for the test. This is
-    demonstrated in the next section.
-</p>
-<p class="note">
-    <strong>Note:</strong> If you run the test application and nothing seems to happen, look for
-    the JUnit view. If you do not see it, you may have run the test application
-    as a regular Android application.
-    Remember that you need to run it as an Android <strong>JUnit</strong>
-    application.
-</p>
-<h2 id="TestFailure">Forcing Some Tests to Fail</h2>
-<p>
-  A test is as useful when it fails as when it succeeds. This section shows what happens in Eclipse with ADT when a test fails. You
-  can quickly see that a test class has failed, find the method or methods that failed, and then use a failure trace to find
-  the exact problem.
-</p>
-<p>
-  The example application SpinnerActivity that you downloaded passes all the tests in the test application SpinnerActivityTest.
-  To force the test to fail, you must modify the example application. You change a line of setup code in the application under test. This
-  causes the <code>testPreConditions()</code> and <code>testTextView()</code> test methods to fail.
-</p>
-<p>
-    To force the tests to fail, follow these steps:
-</p>
-<ol>
-  <li>
-    In Eclipse with ADT, go to the SpinnerActivity project and open the file <code>SpinnerActivity.java</code>.
-  </li>
-  <li>
-    At the top of <code>SpinnerActivity.java</code>, at the end of the <code>onCreate()</code> method, find the following line:
-<pre>
-    // mySpinner.setOnItemSelectedListener(null);
-</pre>
-    <p>Remove the forward slash characters at the beginning of the line to
-    uncomment the line. This sets the listener callback to null:
-    </p>
-<pre>
-    mySpinner.setOnItemSelectedListener(null);
-</pre>
-  </li>
-  <li>
-    The <code>testPreConditions()</code> method in <code>SpinnerActivityTest</code> contains the following test:
-    <code>assertTrue(mSpinner.getOnItemSelectedListener() != null);</code>. This test asserts that the listener callback is <em>not</em> null.
-    Since you have modified the application under test, this assertion now fails.
-  </li>
-  <li>
-    Run the test, as described in the previous section <a href="#RunTests">Running the Tests and Seeing the Results</a>.
-  </li>
-</ol>
-<p>
-    The JUnit view is either created or updated with the results of the test. Now, however, the progress bar is red,
-    the number of failures is 2, and small "x" icons appear in the list icons next to the testPreConditions and
-    TestSpinnerUI tests. This indicates that the tests have failed. The display is similar to this:<br/>
-    <a href="{@docRoot}images/testing/spinnertest_junit_panel_fail_callouts.png">
-      <img src="{@docRoot}images/testing/spinnertest_junit_panel_fail_callouts.png" alt="The JUnit Failure window" style="height:230px"/>
-    </a>
-</p>
-<p>
-  You now want to look at the failures to see exactly where they occurred.
-</p>
-<p>
-    To examine the failures, follow these steps:
-</p>
-<ol>
-  <li>
-    Click the testPreconditions entry. In the lower pane entitled <strong>Failure Trace</strong>,
-    you see a stack trace of the calls that led to the failure. This trace is similar to the following screenshot:<br/>
-    <a href="{@docRoot}images/testing/spinnertest_junit_panel_failtrace_callouts.png">
-      <img src="{@docRoot}images/testing/spinnertest_junit_panel_failtrace_callouts.png" alt="The JUnit failure trace" style="height:230px"/>
-    </a>
-  </li>
-  <li>
-      The first line of the trace tells you the error. In this case, a JUnit assertion failed. To look at the
-      assertion in the test code, double-click the next line (the first line of the trace). In the center pane
-      a new tabbed window opens, containing the code for the test application <code>SpinnerActivityTest</code>. The failed assertion
-      is highlighted in the middle of the window.
-  </li>
-</ol>
-<p>
-    The assertion failed because you modified the main application to set the <code>getOnItemSelectedListener</code> callback to <code>null</code>.
-</p>
-<p>
-    You can look at the failure in <code>testTextView</code> if you want. Remember, though, that <code>testPreConditions</code> is meant to verify the
-    initial setup of the application under test. If testPreConditions() fails, then succeeding tests can't be trusted. The best strategy to follow is to
-    fix the problem and re-run all the tests.
-</p>
-<p>
-    Remember to go back to <code>SpinnerActivity.java</code> and re-comment the line you uncommented in an earlier step.
-</p>
-<p>
-  You have now completed the tutorial.
-</p>
-<h2 id="NextSteps">Next Steps</h2>
-<p>
-    This example test application has shown you how to create a test project and link it to
-    the application you want to test, how to choose and add a test case class, how to write
-    UI and state management tests, and how to run the tests against the application under
-    test. Now that you are familiar with the basics of testing Android applications, here
-    are some suggested next steps:
-</p>
-<p>
-    <strong>Learn more about testing on Android</strong>
-</p>
-<ul>
-    <li>
-        If you haven't done so already, read the
-        <a href="{@docRoot}tools/testing/testing_android.html">Testing Fundamentals</a>
-        document in the <em>Dev Guide</em>. It provides an overview of how testing on Android
-        works. If you are just getting started with Android testing, reading that document will
-        help you understand the tools available to you, so that you can develop effective
-        tests.
-    </li>
-</ul>
-<p>
-    <strong>Review the main Android test case classes</strong>
-</p>
-<ul>
-    <li>
-        {@link android.test.ActivityInstrumentationTestCase2}
-    </li>
-    <li>
-        {@link android.test.ActivityUnitTestCase}
-    </li>
-    <li>
-        {@link android.test.ProviderTestCase2}
-    </li>
-    <li>
-        {@link android.test.ServiceTestCase}
-    </li>
-</ul>
-<p>
-    <strong>Learn more about the assert and utility classes</strong>
-</p>
-<ul>
-    <li>
-        {@link junit.framework.Assert}, the JUnit Assert class.
-    </li>
-    <li>
-        {@link android.test.MoreAsserts}, additional Android assert methods.
-    </li>
-    <li>
-        {@link android.test.ViewAsserts}, useful assertion methods for testing Views.
-    </li>
-    <li>
-        {@link android.test.TouchUtils}, utility methods for simulating touch events in an Activity.
-    </li>
-</ul>
-<p>
-    <strong>Learn about instrumentation and the instrumented test runner</strong>
-</p>
-<ul>
-    <li>
-        {@link android.app.Instrumentation}, the base instrumentation class.
-    </li>
-    <li>
-        {@link android.test.InstrumentationTestCase}, the base instrumentation test case.
-    </li>
-    <li>
-        {@link android.test.InstrumentationTestRunner}, the standard Android test runner.
-    </li>
-</ul>
-<h2 id="Appendix">Appendix</h2>
-<h3 id="InstallCompletedTestApp">Installing the Completed Test Application File</h3>
-<p>
-    The recommended approach to this tutorial is to follow the instructions step-by-step and
-    write the test code as you go. However, if you want to do this tutorial quickly,
-    you can install the entire file for the test application into the test project.
-</p>
-<p>
-    To do this, you first create a test project with the necessary structure and files by using
-    the automated tools in Eclipse. Then you exit Eclipse and copy the test application's file
-    from the SpinnerTest sample project into your test project. The SpinnerTest sample project is
-    part of the Samples component of the SDK.
-</p>
-<p>
-    The result is a complete test application, ready to run against the Spinner sample application.
-</p>
-<p>
-    To install the test application file, follow these steps:
-</p>
-<ol>
-    <li>
-        Set up the projects for the application under test and the test application, as described
-        in the section section <a href="#SetupProjects">Setting Up the Projects</a>.
-    </li>
-    <li>
-        Set up the emulator, as described in the section <a href="#SetupEmulator">Setting Up the Emulator</a>.
-    </li>
-    <li>
-        Add the test case class, as described in the section <a href="#AddTestCaseClass">Adding the test case class file</a>.
-    </li>
-    <li>
-        Close Eclipse with ADT.
-    </li>
-    <li>
-        Copy the file <code>&lt;SDK_path&gt;/samples/android-8/SpinnerTest/src/com/android/example/spinner/test/SpinnerActivityTest.java</code>
-        to the directory <code>workspace/SpinnerActivityTest/src/com/android/example/spinner/test/</code>.
-    </li>
-    <li>
-        Restart Eclipse with ADT.
-    </li>
-    <li>
-        In Eclipse with ADT, re-build the project <code>SpinnerActivityTest</code> by selecting it in the Package Explorer, right-clicking,
-        and selecting <em>Project</em>&nbsp;&gt;&nbsp;<em>Clean</em>.
-    </li>
-    <li>
-        The complete, working test application should now be in the <code>SpinnerActivityTest</code> project.
-    </li>
-</ol>
-<p>
-    You can now continue with the tutorial, starting at the section <a href="#AddConstructor">Adding the test case constructor</a> and
-    following along in the text.
-</p>
-<h3 id="EditorCommandLine">For Users Not Developing In Eclipse</h3>
-<p>
-    If you are not developing in Eclipse, you can still do this tutorial. Android provides tools for
-    creating test applications using a code editor and command-line tools. You use the following tools:
-</p>
-<ul>
-  <li>
-   <a href="{@docRoot}tools/help/adb.html">adb</a> - Installs and uninstalls applications and test applications to a device or the emulator. You
-   also use this tool to run the test application from the command line.
-  </li>
-  <li>
-    <a href="{@docRoot}tools/help/android.html">android</a> - Manages projects and test projects. This tool also manages AVDs and Android platforms.
-  </li>
-</ul>
-  <p>
-    You use the <code>emulator</code> tool to run the emulator from the command line.
-  </p>
-  <p>
-    Here are the general steps for doing this tutorial using an editor and the command line:
-  </p>
-<ol>
-  <li>
-    As described in the section <a href="#DownloadCode">Installing the Tutorial Sample Code</a>, get the sample code. You will then
-    have a directory <code>&lt;SDK_path&gt;/samples/android-8</code>, containing (among others) the directories <code>Spinner</code>
-    and <code>SpinnerTest</code>:
-    <ul>
-        <li>
-            <code>Spinner</code> contains the main application, also known as the <strong>application under test</strong>. This tutorial focuses on the
-            common situation of writing tests for an application that already exists, so the main application is provided to you.
-        </li>
-        <li>
-            <code>SpinnerTest</code> contains all the code for the test application. If you want to run quickly through the tutorial, you can
-            install the test code and then follow the text. You may get more from the tutorial, however, if you write the code as you go. The instructions
-            for installing the test code are in the section <a href="#InstallCompletedTestApp">Appendix: Installing the Completed Test Application File</a>.
-        </li>
-        </ul>
-  </li>
-  <li>
-    Navigate to the directory <code>&lt;SDK_path&gt;/samples/android-8</code>.
-  </li>
-  <li>
-    Create a new Android application project using <code>android create project</code>:
-<pre>
-$ android create project -t &lt;APItarget&gt; -k com.android.example.spinner -a SpinnerActivity -n SpinnerActivity -p Spinner
-</pre>
-    <p>
-        The value of <code>&lt;APItarget&gt;</code> should be &quot;3&quot; (API level 3) or higher. If you are already developing with a particular API level, and it is
-        higher than 3, then use that API level.
-    </p>
-    <p>
-        This a new Android project <code>SpinnerActivity</code> in the existing <code>Spinner</code> directory. The existing source and
-        resource files are not touched, but the <code>android</code> tool adds the necessary build files.
-    </p>
-  </li>
-  <li>
-    Create a new Android test project using <code>android create test-project</code>:
-<pre>
-$ android create test-project -m ../Spinner -n SpinnerActivityTest -p SpinnerActivityTest
-</pre>
-    <p>
-        This will create a new Android test project in the <em>new</em> directory <code>SpinnerActivityTest</code>. You do this
-        so that the solution to the tutorial that is in <code>SpinnerTest</code> is left untouched. If you want to use the solution
-        code instead of entering it as you read through the tutorial, refer to the section
-        <a href="#InstallCompletedTestApp">Appendix: Installing the Completed Test Application File</a>.
-    </p>
-    <p class="Note">
-      <strong>Note:</strong> Running <code>android create test-project</code> will automatically create
-      the file <code>AndroidManifest.xml</code> with the correct <code>&lt;instrumentation&gt;</code> element.
-    </p>
-  </li>
-  <li>
-    Build the sample application. If you are building with Ant, then it is easiest to use the command <code>ant debug</code> to build a debug version, since the SDK comes
-    with a debug signing key. The result will be the file <code>Spinner/bin/SpinnerActivity-debug.apk</code>.
-    You can install this to your device or emulator. Attach your device or start the emulator if you haven't already, and run the command:
-<pre>
-$ adb install Spinner/bin/SpinnerActivity-debug.apk
-</pre>
-  </li>
-  <li>
-    To create the test application, create a file <code>SpinnerActivityTest.java</code> in the directory
-    <code>SpinnerActivityTest/src/com/android/example/spinner/test/</code>.
-  </li>
-  <li>
-    Follow the tutorial, starting with the section <a href="#CreateTestCaseClass">Creating the Test Case Class</a>. When you are prompted to
-    run the sample application, go to the Launcher screen in your device or emulator and select SpinnerActivity.
-    When you are prompted to run the test application, return here to continue with the following instructions.
-  </li>
-  <li>
-    Build the test application. If you are building with Ant, then it is easiest to use the command <code>ant debug</code> to build a
-    debug version, since the SDK comes with a debug signing key. The result will be the Android file
-    <code>SpinnerActivityTest/bin/SpinnerActivityTest-debug.apk</code>. You can install this to your device or emulator.
-    Attach your device or start the emulator if you haven't already, and run the command:
-<pre>
-$ adb install SpinnerActivityTest/bin/SpinnerActivityTest-debug.apk
-</pre>
-  </li>
-  <li>
-    In your device or emulator, check that both the main application <code>SpinnerActivity</code> and the test application
-    <code>SpinnerActivityTest</code> are installed.
-  </li>
-  <li>
-    To run the test application, enter the following at the command line:
-<pre>
-$ adb shell am instrument -w com.android.example.spinner.test/android.test.InstrumentationTestRunner
- </pre>
-  </li>
-</ol>
-<p>
-    The result of a successful test looks like this:
-</p>
-<pre>
-com.android.example.spinner.test.SpinnerActivityTest:....
-Test results for InstrumentationTestRunner=....
-Time: 10.098
-OK (4 tests)
-</pre>
-<p>
-    If you force the test to fail, as described in the previous section <a href="#TestFailure">Forcing Some Tests to Fail</a>, then
-    the output looks like this:
-</p>
-<pre>
-com.android.example.spinner.test.SpinnerActivityTest:
-Failure in testPreConditions:
-junit.framework.AssertionFailedError
-  at com.android.example.spinner.test.SpinnerActivityTest.testPreConditions(SpinnerActivityTest.java:104)
-  at java.lang.reflect.Method.invokeNative(Native Method)
-  at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:205)
-  at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:195)
-  at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:175)
-  at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
-  at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
-  at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:430)
-  at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
-Failure in testSpinnerUI:
-junit.framework.ComparisonFailure: expected:&lt;Result&gt; but was:&lt;Saturn&gt;
-  at com.android.example.spinner.test.SpinnerActivityTest.testSpinnerUI(SpinnerActivityTest.java:153)
-  at java.lang.reflect.Method.invokeNative(Native Method)
-  at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:205)
-  at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:195)
-  at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:175)
-  at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
-  at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
-  at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:430)
-  at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
-..
-Test results for InstrumentationTestRunner=.F.F..
-Time: 9.377
-FAILURES!!!
-Tests run: 4,  Failures: 2,  Errors: 0
-</pre>
diff --git a/docs/html/tools/testing/activity_testing.jd b/docs/html/tools/testing/activity_testing.jd
deleted file mode 100644
index 8baa35d..0000000
--- a/docs/html/tools/testing/activity_testing.jd
+++ /dev/null
@@ -1,375 +0,0 @@
-page.title=Activity Testing
-parent.title=Testing
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li>
-      <a href="#ActivityTestAPI">The Activity Testing API</a>
-      <ol>
-        <li>
-            <a href="#ActivityInstrumentationTestCase2">ActivityInstrumentationTestCase2</a>
-        </li>
-        <li>
-            <a href="#ActivityUnitTestCase">ActivityUnitTestCase</a>
-        </li>
-        <li>
-            <a href="#SingleLaunchActivityTestCase">SingleLaunchActivityTestCase</a>
-        </li>
-        <li>
-            <a href="#MockObjectNotes">Mock objects and activity testing</a>
-        </li>
-        <li>
-            <a href="#AssertionNotes">Assertions for activity testing</a>
-        </li>
-      </ol>
-    </li>
-    <li>
-        <a href="#WhatToTest">What to Test</a>
-    </li>
-    <li>
-        <a href="#NextSteps">Next Steps</a>
-    </li>
-    <li>
-      <a href="#UITesting">Appendix: UI Testing Notes</a>
-      <ol>
-        <li>
-          <a href="#RunOnUIThread">Testing on the UI thread</a>
-        </li>
-        <li>
-          <a href="#NotouchMode">Turning off touch mode</a>
-        </li>
-        <li>
-          <a href="#UnlockDevice">Unlocking the Emulator or Device</a>
-        </li>
-        <li>
-          <a href="#UITestTroubleshooting">Troubleshooting UI tests</a>
-        </li>
-      </ol>
-    </li>
-    </ol>
-<h2>Key Classes</h2>
-    <ol>
-      <li>{@link android.test.InstrumentationTestRunner}</li>
-      <li>{@link android.test.ActivityInstrumentationTestCase2}</li>
-      <li>{@link android.test.ActivityUnitTestCase}</li>
-    </ol>
-<h2>Related Tutorials</h2>
-    <ol>
-      <li>
-         <a href="{@docRoot}tools/testing/activity_test.html">Activity Testing Tutorial</a>
-      </li>
-    </ol>
-<h2>See Also</h2>
-      <ol>
-        <li>
-          <a href="{@docRoot}tools/testing/testing_eclipse.html">
-          Testing from Eclipse with ADT</a>
-        </li>
-        <li>
-          <a href="{@docRoot}tools/testing/testing_otheride.html">
-          Testing from Other IDEs</a>
-        </li>
-      </ol>
-  </div>
-</div>
-<p>
-    Activity testing is particularly dependent on the Android instrumentation framework.
-    Unlike other components, activities have a complex lifecycle based on callback methods; these
-    can't be invoked directly except by instrumentation. Also, the only way to send events to the
-    user interface from a program is through instrumentation.
-</p>
-<p>
-    This document describes how to test activities using instrumentation and other test
-    facilities. The document assumes you have already read
-    <a href="{@docRoot}tools/testing/testing_android.html">Testing Fundamentals</a>,
-    the introduction to the Android testing and instrumentation framework.
-</p>
-<h2 id="ActivityTestAPI">The Activity Testing API</h2>
-<p>
-    The activity testing API base class is {@link android.test.InstrumentationTestCase},
-    which provides instrumentation to the test case subclasses you use for Activities.
-</p>
-<p>
-    For activity testing, this base class provides these functions:
-</p>
-<ul>
-    <li>
-        Lifecycle control: With instrumentation, you can start the activity under test, pause it,
-        and destroy it, using methods provided by the test case classes.
-    </li>
-    <li>
-        Dependency injection: Instrumentation allows you to create mock system objects such as
-        Contexts or Applications and use them to run the activity under test. This
-        helps you control the test environment and isolate it from production systems. You can
-        also set up customized Intents and start an activity with them.
-    </li>
-    <li>
-        User interface interaction: You use instrumentation to send keystrokes or touch events
-        directly to the UI of the activity under test.
-    </li>
-</ul>
-<p>
-    The activity testing classes also provide the JUnit framework by extending
-    {@link junit.framework.TestCase} and {@link junit.framework.Assert}.
-</p>
-<p>
-    The two main testing subclasses are {@link android.test.ActivityInstrumentationTestCase2} and
-    {@link android.test.ActivityUnitTestCase}. To test an Activity that is launched in a mode
-    other than <code>standard</code>, you use {@link android.test.SingleLaunchActivityTestCase}.
-</p>
-<h3 id="ActivityInstrumentationTestCase2">ActivityInstrumentationTestCase2</h3>
-<p>
-    The {@link android.test.ActivityInstrumentationTestCase2} test case class is designed to do
-    functional testing of one or more Activities in an application, using a normal system
-    infrastructure. It runs the Activities in a normal instance of the application under test,
-    using a standard system Context. It allows you to send mock Intents to the activity under
-    test, so you can use it to test an activity that responds to multiple types of intents, or
-    an activity that expects a certain type of data in the intent, or both. Notice, though, that it
-    does not allow mock Contexts or Applications, so you can not isolate the test from the rest of
-    a production system.
-</p>
-<h3 id="ActivityUnitTestCase">ActivityUnitTestCase</h3>
-<p>
-    The {@link android.test.ActivityUnitTestCase} test case class tests a single activity in
-    isolation. Before you start the activity, you can inject a mock Context or Application, or both.
-    You use it to run activity tests in isolation, and to do unit testing of methods
-    that do not interact with Android. You can not send mock Intents to the activity under test,
-    although you can call
-    {@link android.app.Activity#startActivity(Intent) Activity.startActivity(Intent)} and then
-    look at arguments that were received.
-</p>
-<h3 id="SingleLaunchActivityTestCase">SingleLaunchActivityTestCase</h3>
-<p>
-    The {@link android.test.SingleLaunchActivityTestCase} class is a convenience class for
-    testing a single activity in an environment that doesn't change from test to test.
-    It invokes {@link junit.framework.TestCase#setUp() setUp()} and
-    {@link junit.framework.TestCase#tearDown() tearDown()} only once, instead of once per
-    method call. It does not allow you to inject any mock objects.
-</p>
-<p>
-    This test case is useful for testing an activity that runs in a mode other than
-    <code>standard</code>. It ensures that the test fixture is not reset between tests. You
-    can then test that the activity handles multiple calls correctly.
-</p>
-<h3 id="MockObjectNotes">Mock objects and activity testing</h3>
-<p>
-    This section contains notes about the use of the mock objects defined in
-    {@link android.test.mock} with activity tests.
-</p>
-<p>
-    The mock object {@link android.test.mock.MockApplication} is only available for activity
-    testing if you use the {@link android.test.ActivityUnitTestCase} test case class.
-    By default, <code>ActivityUnitTestCase</code>, creates a hidden <code>MockApplication</code>
-    object that is used as the application under test. You can inject your own object using
-    {@link android.test.ActivityUnitTestCase#setApplication(Application) setApplication()}.
-</p>
-<h3 id="AssertionNotes">Assertions for activity testing</h3>
-<p>
-    {@link android.test.ViewAsserts} defines assertions for Views. You use it to verify the
-    alignment and position of View objects, and to look at the state of ViewGroup objects.
-</p>
-<h2 id="WhatToTest">What To Test</h2>
-<ul>
-    <li>
-        Input validation: Test that an activity responds correctly to input values in an
-        EditText View. Set up a keystroke sequence, send it to the activity, and then
-        use {@link android.view.View#findViewById(int)} to examine the state of the View. You can
-        verify that a valid keystroke sequence enables an OK button, while an invalid one leaves the
-        button disabled. You can also verify that the Activity responds to invalid input by
-        setting error messages in the View.
-    </li>
-    <li>
-        Lifecycle events: Test that each of your application's activities handles lifecycle events
-        correctly. In general, lifecycle events are actions, either from the system or from the
-        user, that trigger a callback method such as <code>onCreate()</code> or
-        <code>onClick()</code>. For example, an activity should respond to pause or destroy events
-        by saving its state. Remember that even a change in screen orientation causes the current
-        activity to be destroyed, so you should test that accidental device movements don't
-        accidentally lose the application state.
-    </li>
-    <li>
-        Intents: Test that each activity correctly handles the intents listed in the intent
-        filter specified in its manifest. You can use
-        {@link android.test.ActivityInstrumentationTestCase2} to send mock Intents to the
-        activity under test.
-    </li>
-    <li>
-        Runtime configuration changes: Test that each activity responds correctly to the
-        possible changes in the device's configuration while your application is running. These
-        include a change to the device's orientation, a change to the current language, and so
-        forth. Handling these changes is described in detail in the topic
-        <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Handling Runtime
-        Changes</a>.
-    </li>
-    <li>
-        Screen sizes and resolutions: Before you publish your application, make sure to test it on
-        all of the screen sizes and densities on which you want it to run. You can test the
-        application on multiple sizes and densities using AVDs, or you can test your application
-        directly on the devices that you are targeting. For more information, see the topic
-        <a href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple Screens</a>.
-    </li>
-</ul>
-<h2 id="NextSteps">Next Steps</h2>
-<p>
-    To learn how to set up and run tests in Eclipse, please refer to 
-<a href="{@docRoot}tools/testing/testing_eclipse.html">Testing from Eclipse with ADT</a>.
-    If you're not working in Eclipse, refer to 
-<a href="{@docRoot}tools/testing/testing_otheride.html">Testing from Other IDEs</a>.
-</p>
-<p>
-    If you want a step-by-step introduction to testing activities, try the 
-    <a href="{@docRoot}tools/testing/activity_test.html">Activity Testing Tutorial</a>, which
-    guides you through a testing scenario that you develop against an activity-oriented application.
-</p>
-<h2 id="UITesting">Appendix: UI Testing Notes</h2>
-<p>
-    The following sections have tips for testing the UI of your Android application, specifically
-    to help you handle actions that run in the UI thread, touch screen and keyboard events, and home
-    screen unlock during testing.
-</p>
-<h3 id="RunOnUIThread">Testing on the UI thread</h3>
-<p>
-    An application's activities run on the application's <strong>UI thread</strong>. Once the
-    UI is instantiated, for example in the activity's <code>onCreate()</code> method, then all
-    interactions with the UI must run in the UI thread. When you run the application normally, it
-    has access to the thread and does not have to do anything special.
-</p>
-<p>
-    This changes when you run tests against the application. With instrumentation-based classes,
-    you can invoke methods against the UI of the application under test. The other test classes
-    don't allow this. To run an entire test method on the UI thread, you can annotate the thread
-    with <code>@UiThreadTest</code>. Notice that this will run <em>all</em> of the method statements
-    on the UI thread.  Methods that do not interact with the UI are not allowed; for example, you
-    can't invoke <code>Instrumentation.waitForIdleSync()</code>.
-</p>
-<p>
-    To run a subset of a test method on the UI thread, create an anonymous class of type
-    <code>Runnable</code>, put the statements you want in the <code>run()</code> method, and
-    instantiate a new instance of the class as a parameter to the method
-    <code><em>appActivity</em>.runOnUiThread()</code>, where <code><em>appActivity</em></code> is
-    the instance of the application you are testing.
-</p>
-<p>
-    For example, this code instantiates an activity to test, requests focus (a UI action) for the
-    Spinner displayed by the activity, and then sends a key to it. Notice that the calls to
-    <code>waitForIdleSync</code> and <code>sendKeys</code> aren't allowed to run on the UI thread:
-</p>
-<pre>
-  private MyActivity mActivity; // MyActivity is the class name of the app under test
-  private Spinner mSpinner;
-
-  ...
-
-  protected void setUp() throws Exception {
-      super.setUp();
-      mInstrumentation = getInstrumentation();
-
-      mActivity = getActivity(); // get a references to the app under test
-
-      /*
-       * Get a reference to the main widget of the app under test, a Spinner
-       */
-      mSpinner = (Spinner) mActivity.findViewById(com.android.demo.myactivity.R.id.Spinner01);
-
-  ...
-
-  public void aTest() {
-      /*
-       * request focus for the Spinner, so that the test can send key events to it
-       * This request must be run on the UI thread. To do this, use the runOnUiThread method
-       * and pass it a Runnable that contains a call to requestFocus on the Spinner.
-       */
-      mActivity.runOnUiThread(new Runnable() {
-          public void run() {
-              mSpinner.requestFocus();
-          }
-      });
-
-      mInstrumentation.waitForIdleSync();
-
-      this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
-</pre>
-
-<h3 id="NotouchMode">Turning off touch mode</h3>
-<p>
-    To control the emulator or a device with key events you send from your tests, you must turn off
-    touch mode. If you do not do this, the key events are ignored.
-</p>
-<p>
-    To turn off touch mode, you invoke
-    <code>ActivityInstrumentationTestCase2.setActivityTouchMode(false)</code>
-    <em>before</em> you call <code>getActivity()</code> to start the activity. You must invoke the
-    method in a test method that is <em>not</em> running on the UI thread. For this reason, you
-    can't invoke the touch mode method from a test method that is annotated with
-    <code>@UIThread</code>. Instead, invoke the touch mode method from <code>setUp()</code>.
-</p>
-<h3 id="UnlockDevice">Unlocking the emulator or device</h3>
-<p>
-    You may find that UI tests don't work if the emulator's or device's home screen is disabled with
-    the keyguard pattern. This is because the application under test can't receive key events sent
-    by <code>sendKeys()</code>. The best way to avoid this is to start your emulator or device
-    first and then disable the keyguard for the home screen.
-</p>
-<p>
-    You can also explicitly disable the keyguard. To do this,
-    you need to add a permission in the manifest file (<code>AndroidManifest.xml</code>) and
-    then disable the keyguard in your application under test. Note, though, that you either have to
-    remove this before you publish your application, or you have to disable it with code in
-    the published application.
-</p>
-<p>
-    To add the permission, add the element
-    <code>&lt;uses-permission android:name="android.permission.DISABLE_KEYGUARD"/&gt;</code>
-    as a child of the <code>&lt;manifest&gt;</code> element. To disable the KeyGuard, add the
-    following code to the <code>onCreate()</code> method of activities you intend to test:
-</p>
-<pre>
-  mKeyGuardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
-  mLock = mKeyGuardManager.newKeyguardLock("<em>activity_classname</em>");
-  mLock.disableKeyguard();
-</pre>
-<p>where <code><em>activity_classname</em></code> is the class name of the activity.</p>
-<h3 id="UITestTroubleshooting">Troubleshooting UI tests</h3>
-<p>
-    This section lists some of the common test failures you may encounter in UI testing, and their
-    causes:
-</p>
-<dl>
-    <dt><code>WrongThreadException</code></dt>
-    <dd>
-      <p><strong>Problem:</strong></p>
-      For a failed test, the Failure Trace contains the following error message:
-      <code>
-        android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created
-        a view hierarchy can touch its views.
-      </code>
-      <p><strong>Probable Cause:</strong></p>
-        This error is common if you tried to send UI events to the UI thread from outside the UI
-        thread. This commonly happens if you send UI events from the test application, but you don't
-        use the <code>@UIThread</code> annotation or the <code>runOnUiThread()</code> method. The
-        test method tried to interact with the UI outside the UI thread.
-      <p><strong>Suggested Resolution:</strong></p>
-        Run the interaction on the UI thread. Use a test class that provides instrumentation. See
-        the previous section <a href="#RunOnUIThread">Testing on the UI Thread</a>
-        for more details.
-    </dd>
-    <dt><code>java.lang.RuntimeException</code></dt>
-    <dd>
-      <p><strong>Problem:</strong></p>
-        For a failed test, the Failure Trace contains the following error message:
-      <code>
-        java.lang.RuntimeException: This method can not be called from the main application thread
-      </code>
-      <p><strong>Probable Cause:</strong></p>
-        This error is common if your test method is annotated with <code>@UiThreadTest</code> but
-        then tries to do something outside the UI thread or tries to invoke
-        <code>runOnUiThread()</code>.
-      <p><strong>Suggested Resolution:</strong></p>
-        Remove the <code>@UiThreadTest</code> annotation, remove the <code>runOnUiThread()</code>
-        call, or re-factor your tests.
-    </dd>
-</dl>
diff --git a/docs/html/tools/testing/contentprovider_testing.jd b/docs/html/tools/testing/contentprovider_testing.jd
deleted file mode 100644
index a6440df..0000000
--- a/docs/html/tools/testing/contentprovider_testing.jd
+++ /dev/null
@@ -1,217 +0,0 @@
-page.title=Content Provider Testing
-parent.title=Testing
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li>
-        <a href="#DesignAndTest">Content Provider Design and Testing</a>
-    </li>
-    <li>
-      <a href="#ContentProviderTestAPI">The Content Provider Testing API</a>
-      <ol>
-        <li>
-          <a href="#ProviderTestCase2">ProviderTestCase2 </a>
-        </li>
-        <li>
-          <a href="#MockObjects">Mock object classes</a>
-        </li>
-      </ol>
-    </li>
-    <li>
-        <a href="#WhatToTest">What To Test</a>
-    </li>
-    <li>
-        <a href="#NextSteps">Next Steps</a>
-    </li>
-  </ol>
-  <h2>Key Classes</h2>
-    <ol>
-      <li>{@link android.test.InstrumentationTestRunner}</li>
-      <li>{@link android.test.ProviderTestCase2}</li>
-      <li>{@link android.test.IsolatedContext}</li>
-      <li>{@link android.test.mock.MockContentResolver}</li>
-    </ol>
-  <h2>Related Tutorials</h2>
-    <ol>
-        <li>
-            <a href="{@docRoot}tools/testing/activity_test.html">Activity Testing Tutorial</a>
-        </li>
-    </ol>
-  <h2>See Also</h2>
-      <ol>
-        <li>
-          <a
-          href="{@docRoot}tools/testing/testing_android.html">
-          Testing Fundamentals</a>
-        </li>
-        <li>
-          <a href="{@docRoot}tools/testing/testing_eclipse.html">
-          Testing From Eclipse with ADT</a>
-        </li>
-        <li>
-          <a href="{@docRoot}tools/testing/testing_otheride.html">
-          Testing From Other IDEs</a>
-        </li>
-      </ol>
-  </div>
-</div>
-<p>
-    Content providers, which store and retrieve data and make it accessible across applications,
-    are a key part of the Android API. As an application developer you're allowed to provide your
-    own public providers for use by other applications. If you do, then you should test them
-    using the API you publish.
-</p>
-<p>
-    This document describes how to test public content providers, although the information is
-    also applicable to providers that you keep private to your own application. If you aren't
-    familiar with content  providers or the Android testing framework, please read
-    <a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>,
-    the guide to developing content providers, and
-    <a href="{@docRoot}tools/testing/testing_android.html">Testing Fundamentals</a>,
-    the introduction to the Android testing and instrumentation framework.
-</p>
-<h2 id="DesignAndTest">Content Provider Design and Testing</h2>
-<p>
-    In Android, content providers are viewed externally as data APIs that provide
-    tables of data, with their internals hidden from view. A content provider may have many
-    public constants, but it usually has few if any public methods and no public variables.
-    This suggests that you should write your tests based only on the provider's public members.
-    A content provider that is designed like this is offering a contract between itself and its
-    users.
-</p>
-<p>
-    The base test case class for content providers,
-    {@link android.test.ProviderTestCase2}, allows you to test your content provider in an
-    isolated environment. Android mock objects such as {@link android.test.IsolatedContext} and
-    {@link android.test.mock.MockContentResolver} also help provide an isolated test environment.
-</p>
-<p>
-    As with other Android tests, provider test packages are run under the control of the test
-    runner {@link android.test.InstrumentationTestRunner}. The section
-    <a href="{@docRoot}tools/testing/testing_android.html#InstrumentationTestRunner">
-    Running Tests With InstrumentationTestRunner</a> describes the test runner in
-    more detail. The topic <a href="{@docRoot}tools/testing/testing_eclipse.html">
-    Testing From Eclipse with ADT</a> shows you how to run a test package in Eclipse, and the
-    topic <a href="{@docRoot}tools/testing/testing_otheride.html">
-    Testing From Other IDEs</a>
-    shows you how to run a test package from the command line.
-</p>
-<h2 id="ContentProviderTestAPI">Content Provider Testing API</h2>
-<p>
-    The main focus of the provider testing API is to provide an isolated testing environment. This
-    ensures that tests always run against data dependencies set explicitly in the test case. It
-    also prevents tests from modifying actual user data. For example, you want to avoid writing
-    a test that fails because there was data left over from a previous test, and you want to
-    avoid adding or deleting contact information in a actual provider.
-</p>
-<p>
-    The test case class and mock object classes for provider testing set up this isolated testing
-    environment for you.
-</p>
-<h3 id="ProviderTestCase2">ProviderTestCase2</h3>
-<p>
-    You test a provider with a subclass of {@link android.test.ProviderTestCase2}. This base class
-    extends {@link android.test.AndroidTestCase}, so it provides the JUnit testing framework as well
-    as Android-specific methods for testing application permissions. The most important
-    feature of this class is its initialization, which creates the isolated test environment.
-</p>
-<p>
-    The initialization is done in the constructor for {@link android.test.ProviderTestCase2}, which
-    subclasses call in their own constructors. The {@link android.test.ProviderTestCase2}
-    constructor creates an {@link android.test.IsolatedContext} object that allows file and
-    database operations but stubs out other interactions with the Android system.
-    The file and database operations themselves take place in a directory that is local to the
-    device or emulator and has a special prefix.
-</p>
-<p>
-    The constructor then creates a {@link android.test.mock.MockContentResolver} to use as the
-    resolver for the test. The {@link android.test.mock.MockContentResolver} class is described in
-    detail in the section
-    <a href="{@docRoot}tools/testing/testing_android.html#MockObjectClasses">Mock object
-classes</a>.
-</p>
-<p>
-    Lastly, the constructor creates an instance of the provider under test. This is a normal
-    {@link android.content.ContentProvider} object, but it takes all of its environment information
-    from the {@link android.test.IsolatedContext}, so it is restricted to
-    working in the isolated test environment. All of the tests done in the test case class run
-    against this isolated object.
-</p>
-<h3 id="MockObjects">Mock object classes</h3>
-<p>
-    {@link android.test.ProviderTestCase2} uses {@link android.test.IsolatedContext} and
-    {@link android.test.mock.MockContentResolver}, which are standard mock object classes. To
-    learn more about them, please read
-    <a href="{@docRoot}tools/testing/testing_android.html#MockObjectClasses">
-    Testing Fundamentals</a>.
-</p>
-<h2 id="WhatToTest">What To Test</h2>
-<p>
-    The topic <a href="{@docRoot}tools/testing/what_to_test.html">What To Test</a>
-    lists general considerations for testing Android components.
-    Here are some specific guidelines for testing content providers.
-</p>
-<ul>
-    <li>
-        Test with resolver methods: Even though you can instantiate a provider object in
-        {@link android.test.ProviderTestCase2}, you should always test with a resolver object
-        using the appropriate URI. This ensures that you are testing the provider using the same
-        interaction that a regular application would use.
-    </li>
-    <li>
-        Test a public provider as a contract: If you intent your provider to be public and
-        available to other applications, you should test it as a contract. This includes
-        the following ideas:
-        <ul>
-            <li>
-                Test with constants that your provider publicly exposes. For
-                example, look for constants that refer to column names in one of the provider's
-                data tables. These should always be constants publicly defined by the provider.
-            </li>
-            <li>
-                Test all the URIs offered by your provider. Your provider may offer several URIs,
-                each one referring to a different aspect of the data. The
-                <a href="{@docRoot}resources/samples/NotePad/index.html">Note Pad</a> sample,
-                for example, features a provider that offers one URI for retrieving a list of notes,
-                another for retrieving an individual note by it's database ID, and a third for
-                displaying notes in a live folder.
-            </li>
-            <li>
-                Test invalid URIs: Your unit tests should deliberately call the provider with an
-                invalid URI, and look for errors. Good provider design is to throw an
-                IllegalArgumentException for invalid URIs.
-
-            </li>
-        </ul>
-    </li>
-    <li>
-        Test the standard provider interactions: Most providers offer six access methods:
-        query, insert, delete, update, getType, and onCreate(). Your tests should verify that all
-        of these methods work. These are described in more detail in the topic
-        <a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>.
-    </li>
-    <li>
-        Test business logic: Don't forget to test the business logic that your provider should
-        enforce. Business logic includes handling of invalid values, financial or arithmetic
-        calculations, elimination or combining of duplicates, and so forth. A content provider
-        does not have to have business logic, because it may be implemented by activities that
-        modify the data. If the provider does implement business logic, you should test it.
-    </li>
-</ul>
-<h2 id="NextSteps">Next Steps</h2>
-<p>
-    To learn how to set up and run tests in Eclipse, please refer to 
-<a href="{@docRoot}tools/testing/testing_eclipse.html">Testing from Eclipse with ADT</a>.
-    If you're not working in Eclipse, refer to 
-<a href="{@docRoot}tools/testing/testing_otheride.html">Testing From Other IDEs</a>.
-</p>
-<p>
-    If you want a step-by-step introduction to testing activities, try the 
-    <a href="{@docRoot}tools/testing/activity_test.html">Activity Testing Tutorial</a>, which
-    guides you through a testing scenario that you develop against an activity-oriented application.
-</p>
-
diff --git a/docs/html/tools/testing/index.jd b/docs/html/tools/testing/index.jd
index 56de4cf..a454891 100644
--- a/docs/html/tools/testing/index.jd
+++ b/docs/html/tools/testing/index.jd
@@ -1,40 +1,19 @@
 page.title=Testing
 @jd:body
 
-<p> The Android framework includes an integrated testing framework that helps you test all aspects
-of your application and the SDK tools include tools for setting up and running test applications.
-Whether you are working in Eclipse with ADT or working from the command line, the SDK tools help you
-set up and run your tests within an emulator or the device you are targeting. </p>
+<p>Android provides an integrated testing framework that helps you test all aspects
+of your app. The Android <a href="{@docRoot}sdk/installing/index.html">SDK</a> and
+<a href="{@docRoot}tools/testing-support-library/index.html">Testing Support Library</a> include
+tools and APIs for setting up and running test apps within an emulator or on the device you are
+targeting. You can build and execute tests whether you are working in Android Studio or working
+from the command line.</p>
 
-<p>If you aren't yet familiar with the Android testing framework, start by reading <a
-href="{@docRoot}tools/testing/testing_android.html">Testing Fundamentals</a>. For a step-by-step
-introduction to Android testing, try the <a
-href="{@docRoot}tools/testing/activity_test.html">Activity Testing Tutorial</a>. </p>
-
-
-
-<div class="landing-docs">
-
-  <div class="col-13" style="margin-left:0">
-    <h3>Blog Articles</h3>
-    
-    <a href="http://android-developers.blogspot.com/2010/12/new-gingerbread-api-strictmode.html">
-      <h4>New Gingerbread API: StrictMode</h4>
-      <p>StrictMode is a new API in Gingerbread which primarily lets you set a policy on a thread
-declaring what you’re not allowed to do on that thread, and what the penalty is if you violate the
-policy. Implementation-wise, this policy is simply a thread-local integer bitmask.</p>
-    </a>
-    
-    <a href="http://android-developers.blogspot.com/2010/10/traceview-war-story.html">
-      <h4>Traceview War Story</h4>
-      <p>I recently took my first serious look at Traceview, and it occurred to me, first, that
-there are probably a few other Android developers who haven’t used it and, second, that this is an
-opportunity to lecture sternly on one of my favorite subjects: performance improvement and
-profiling.</p>
-    </a>
-  </div>
-
-
-</div>
-
-
+<p>To familiarize yourself with mobile app testing in Android, start by reading these resources:</p>
+<ul>
+  <li><a href="{@docRoot}tools/testing/testing_android.html">Testing Concepts</a>: Learn key
+    concepts related to Android app testing and get an overview of the testing tools and APIs
+    that Google provides.</li>
+  <li><a href="{@docRoot}training/testing/start/index.html">Getting Started with Testing</a>: Learn
+    how to build and run your tests, step-by-step, using the testing APIs and tools that
+    Google provides.</li>
+</ul>
diff --git a/docs/html/tools/testing/service_testing.jd b/docs/html/tools/testing/service_testing.jd
deleted file mode 100644
index 7c56fd9..0000000
--- a/docs/html/tools/testing/service_testing.jd
+++ /dev/null
@@ -1,176 +0,0 @@
-page.title=Service Testing
-parent.title=Testing
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li>
-        <a href="#DesignAndTest">Service Design and Testing</a>
-    </li>
-    <li>
-        <a href="#ServiceTestCase">ServiceTestCase</a>
-    </li>
-    <li>
-        <a href="#MockObjects">Mock object classes</a>
-    </li>
-    <li>
-        <a href="#TestAreas">What to Test</a>
-    </li>
-  </ol>
-  <h2>Key Classes</h2>
-    <ol>
-      <li>{@link android.test.InstrumentationTestRunner}</li>
-      <li>{@link android.test.ServiceTestCase}</li>
-      <li>{@link android.test.mock.MockApplication}</li>
-      <li>{@link android.test.RenamingDelegatingContext}</li>
-    </ol>
-  <h2>Related Tutorials</h2>
-    <ol>
-        <li>
-            <a href="{@docRoot}tools/testing/activity_test.html">Activity Testing Tutorial</a>
-        </li>
-    </ol>
-  <h2>See Also</h2>
-      <ol>
-        <li>
-          <a href="{@docRoot}tools/testing/testing_eclipse.html">
-          Testing From Eclipse with ADT</a>
-        </li>
-        <li>
-          <a href="{@docRoot}tools/testing/testing_otheride.html">
-          Testing From Other IDEs</a>
-        </li>
-      </ol>
-  </div>
-</div>
-<p>
-    Android provides a testing framework for Service objects that can run them in
-    isolation and provides mock objects. The test case class for Service objects is
-    {@link android.test.ServiceTestCase}. Since the Service class assumes that it is separate
-    from its clients, you can test a Service object without using instrumentation.
-</p>
-<p>
-    This document describes techniques for testing Service objects. If you aren't familiar with the
-    Service class, please read the <a href="{@docRoot}guide/components/services.html">
-    Services</a> document. If you aren't familiar with Android testing, please read
-    <a href="{@docRoot}tools/testing/testing_android.html">Testing Fundamentals</a>,
-    the introduction to the Android testing and instrumentation framework.
-</p>
-<h2 id="DesignAndTest">Service Design and Testing</h2>
-<p>
-    When you design a Service, you should consider how your tests can examine the various states
-    of the Service lifecycle. If the lifecycle methods that start up your Service, such as
-    {@link android.app.Service#onCreate() onCreate()} or
-    {@link android.app.Service#onStartCommand(Intent, int, int) onStartCommand()} do not normally
-    set a global variable to indicate that they were successful, you may want to provide such a
-    variable for testing purposes.
-</p>
-<p>
-    Most other testing is facilitated by the methods in the {@link android.test.ServiceTestCase}
-    test case class. For example, the {@link android.test.ServiceTestCase#getService()} method
-    returns a handle to the Service under test, which you can test to confirm that the Service is
-    running even at the end of your tests.
-</p>
-<h2 id="ServiceTestCase">ServiceTestCase</h2>
-<p>
-    {@link android.test.ServiceTestCase} extends the JUnit {@link junit.framework.TestCase} class
-    with with methods for testing application permissions and for controlling the application and
-    Service under test. It also provides mock application and Context objects that isolate your
-    test from the rest of the system.
-</p>
-<p>
-    {@link android.test.ServiceTestCase} defers initialization of the test environment until you
-    call {@link android.test.ServiceTestCase#startService(Intent) ServiceTestCase.startService()} or
-    {@link android.test.ServiceTestCase#bindService(Intent) ServiceTestCase.bindService()}. This
-    allows you to set up your test environment, particularly your mock objects, before the Service
-    is started.
-</p>
-<p>
-    Notice that the parameters to <code>ServiceTestCase.bindService()</code>are different from
-    those for <code>Service.bindService()</code>. For the <code>ServiceTestCase</code> version,
-    you only provide an Intent. Instead of returning a boolean,
-    <code>ServiceTestCase.bindService()</code> returns an object that subclasses
-    {@link android.os.IBinder}.
-</p>
-<p>
-    The {@link android.test.ServiceTestCase#setUp()} method for {@link android.test.ServiceTestCase}
-    is called before each test. It sets up the test fixture by making a copy of the current system
-    Context before any test methods touch it. You can retrieve this Context by calling
-    {@link android.test.ServiceTestCase#getSystemContext()}. If you override this method, you must
-    call <code>super.setUp()</code> as the first statement in the override.
-</p>
-<p>
-    The methods {@link android.test.ServiceTestCase#setApplication(Application) setApplication()}
-    and {@link android.test.AndroidTestCase#setContext(Context)} setContext()} allow you to set
-    a mock Context or mock Application (or both) for the Service, before you start it. These mock
-    objects are described in <a href="#MockObjects">Mock object classes</a>.
-</p>
-<p>
-    By default, {@link android.test.ServiceTestCase} runs the test method
-    {@link android.test.AndroidTestCase#testAndroidTestCaseSetupProperly()}, which asserts that
-    the base test case class successfully set up a Context before running.
-</p>
-<h2 id="MockObjects">Mock object classes</h2>
-<p>
-    <code>ServiceTestCase</code> assumes that you will use a mock Context or mock Application
-    (or both) for the test environment. These objects isolate the test environment from the
-    rest of the system. If you don't provide your own instances of these objects before you
-    start the Service, then {@link android.test.ServiceTestCase} will create its own internal
-    instances and inject them into the Service. You can override this behavior by creating and
-    injecting your own instances before starting the Service
-</p>
-<p>
-    To inject a mock Application object into the Service under test, first create a subclass of
-    {@link android.test.mock.MockApplication}. <code>MockApplication</code> is a subclass of
-    {@link android.app.Application} in which all the methods throw an Exception, so to use it
-    effectively you subclass it and override the methods you need. You then inject it into the
-    Service with the
-    {@link android.test.ServiceTestCase#setApplication(Application) setApplication()} method.
-    This mock object allows you to control the application values that the Service sees, and
-    isolates it from the real system. In addition, any hidden dependencies your Service has on
-    its application reveal themselves as exceptions when you run the test.
-</p>
-<p>
-    You inject a mock Context into the Service under test with the
-    {@link android.test.AndroidTestCase#setContext(Context) setContext()} method. The mock
-    Context classes you can use are described in more detail in
-    <a href="{@docRoot}tools/testing/testing_android.html#MockObjectClasses">
-    Testing Fundamentals</a>.
-</p>
-<h2 id="TestAreas">What to Test</h2>
-<p>
-    The topic <a href="{@docRoot}tools/testing/what_to_test.html">What To Test</a>
-    lists general considerations for testing Android components.
-    Here are some specific guidelines for testing a Service:
-</p>
-<ul>
-    <li>
-        Ensure that the {@link android.app.Service#onCreate()} is called in response to
-        {@link android.content.Context#startService(Intent) Context.startService()} or
-    {@link android.content.Context#bindService(Intent,ServiceConnection,int) Context.bindService()}.
-        Similarly, you should ensure that {@link android.app.Service#onDestroy()} is called in
-        response to {@link android.content.Context#stopService(Intent) Context.stopService()},
-        {@link android.content.Context#unbindService(ServiceConnection) Context.unbindService()},
-        {@link android.app.Service#stopSelf()}, or
-        {@link android.app.Service#stopSelfResult(int) stopSelfResult()}.
-    </li>
-    <li>
-        Test that your Service correctly handles multiple calls from
-        <code>Context.startService()</code>. Only the first call triggers
-        <code>Service.onCreate()</code>, but all calls trigger a call to
-        <code>Service.onStartCommand()</code>.
-        <p>
-            In addition, remember that <code>startService()</code> calls don't
-            nest, so a single call to <code>Context.stopService()</code> or
-            <code>Service.stopSelf()</code> (but not <code>stopSelf(int)</code>)
-            will stop the Service. You should test that your Service stops at the correct point.
-        </p>
-    </li>
-    <li>
-        Test any business logic that your Service implements. Business logic includes checking for
-        invalid values, financial and arithmetic calculations, and so forth.
-    </li>
-</ul>
diff --git a/docs/html/tools/testing/testing-tools.jd b/docs/html/tools/testing/testing-tools.jd
index 5e0a5bc..c60199f7 100644
--- a/docs/html/tools/testing/testing-tools.jd
+++ b/docs/html/tools/testing/testing-tools.jd
@@ -5,7 +5,7 @@
 <div id="qv">
   <h2>See also</h2>
   <ol>
-    <li><a href="{@docRoot}training/testing.html">Best Practices for Testing</a></li>
+    <li><a href="{@docRoot}training/testing/index.html">Best Practices for Testing</a></li>
   </ol>
 </div>
 </div>
diff --git a/docs/html/tools/testing/testing_accessibility.jd b/docs/html/tools/testing/testing_accessibility.jd
deleted file mode 100644
index 20948fa..0000000
--- a/docs/html/tools/testing/testing_accessibility.jd
+++ /dev/null
@@ -1,255 +0,0 @@
-page.title=Accessibility Testing Checklist
-parent.title=Testing
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-  <h2>In this document</h2>
-  <ol>
-    <li><a href="#goals">Testing Goals</a></li>
-    <li><a href="#requirements">Testing Requirements</a></li>
-    <li><a href="#recommendations">Testing Recommendations</a></li>
-    <li><a href="#special-cases">Special Cases and Considerations</a></li>
-    <li><a href="#how-to">Testing Accessibility Features</a>
-      <ol>
-        <li><a href="#test-audibles">Testing audible feedback</a></li>
-        <li><a href="#test-navigation">Testing focus navigation</a></li>
-        <li><a href="#test-gestures">Testing gesture navigation</a></li>
-      </ol>
-    </li>
-  </ol>
-
-  <h2>See Also</h2>
-    <ol>
-      <li>
-        <a href="{@docRoot}guide/topics/ui/accessibility/checklist.html">
-        Accessibility Developer Checklist</a>
-      </li>
-      <li>
-        <a href="{@docRoot}design/patterns/accessibility.html">
-        Android Design: Accessibility</a>
-      </li>
-      <li>
-        <a href="{@docRoot}guide/topics/ui/accessibility/apps.html">
-        Making Applications Accessible</a>
-      </li>
-    </ol>
-  </div>
-</div>
-<p>
-  Testing is an important part of making your application accessible to users with varying
-  abilities. Following <a href="{@docRoot}design/patterns/accessibility.html">design</a> and
-  <a href="{@docRoot}guide/topics/ui/accessibility/checklist.html">development</a> guidelines for
-  accessibility are important steps toward that goal, but testing for accessibility can uncover
-  problems with user interaction that are not obvious during design and development.</p>
-
-<p>This accessibility testing checklist guides you through the important aspects of
-  accessibility testing, including overall goals, required testing steps, recommended testing and
-  special considerations. This document also discusses how to enable accessibility features on
-  Android devices for testing purposes.</p>
-
-
-<h2 id="goals">Testing Goals</h2>
-
-<p>Your accessibility testing should have the following, high level goals:</p>
-
-<ul>
-  <li>Set up and use the application without sighted assistance</li>
-  <li>All task workflows in the application can be easily navigated using directional controls and
-    provide clear and appropriate feedback</li>
-</ul>
-
-
-<h2 id="requirements">Testing Requirements</h2>
-
-<p>The following tests must be completed in order to ensure a minimum level of application
-  accessibility.</p>
-
-<ol>
-  <li><strong>Directional controls:</strong> Verify that the application can be operated
-    without the use of a touch screen. Attempt to use only directional controls to accomplish the
-    primary tasks in the application. Use the keyboard and directional-pad (D-Pad) controls in the
-    Android <a href="{@docRoot}tools/devices/emulator.html">Emulator</a> or use
-    <a href="http://support.google.com/nexus/bin/answer.py?hl=en&answer=2700718">gesture
-    navigation</a> on devices with Android 4.1 (API Level 16) or higher.
-    <p class="note"><strong>Note:</strong> Keyboards and D-pads provide different navigation paths
-    than accessibility gestures. While gestures allow users to focus on nearly any on-screen
-    content, keyboard and D-pad navigation only allow focus on input fields and buttons.</p>
-    </li>
-  <li><strong>TalkBack audio prompts:</strong> Verify that user interface controls that provide
-    information (graphics or text) or allow user action have clear and accurate audio descriptions
-    when <a href="#testing-talkback">TalkBack is enabled</a> and controls are focused. Use
-    directional controls to move focus between application layout elements.</li>
-  <li><strong>Explore by Touch prompts:</strong> Verify that user interface controls that
-    provide information (graphics or text) or allow user action have appropriate audio descriptions
-    when <a href="#testing-ebt">Explore by Touch is enabled</a>. There should be no
-    regions where contents or controls do not provide an audio description.</li>
-  <li><strong>Touchable control sizes:</strong> All controls where a user can select or take an
-    action must be a minimum of 48 dp (approximately 9mm) in length and width, as recommended by
-    <a href="{@docRoot}design/patterns/accessibility.html">Android Design</a>.</li>
-  <li><strong>Gestures work with TalkBack enabled:</strong> Verify that app-specific gestures,
-    such as zooming images, scrolling lists, swiping between pages or navigating carousel controls
-    continue to work when <a href="#testing-talkback">TalkBack is enabled</a>. If these gestures do
-    not function, then an alternative interface for these actions must be provided.</li>
-  <li><strong>No audio-only feedback:</strong> Audio feedback must always have a secondary
-    feedback mechanism to support users who are deaf or hard of hearing, for example: A sound alert
-    for the arrival of a message should also be accompanied by a system
-    {@link android.app.Notification}, haptic feedback (if available) or another visual alert.</li>
-</ol>
-
-
-<h2 id="recommendations">Testing Recommendations</h2>
-
-<p>The following tests are recommended for ensuring the accessibility of your application. If you
-  do not test these items, it may impact the overall accessibility and quality of your
-  application.</p>
-
-<ol>
-  <li><strong>Repetitive audio prompting:</strong> Check that closely related controls (such as
-    items with multiple components in a list) do not simply repeat the same audio prompt. For
-    example, in a contacts list that contains a contact picture, written name and title, the prompts
-    should not simply repeat “Bob Smith” for each item.</li>
-  <li><strong>Audio prompt overloading or underloading:</strong> Check that closely related
-    controls provide an appropriate level of audio information that enables users to understand and
-    act on a screen element. Too little or too much prompting can make it difficult to understand
-    and use a control.</li>
-</ol>
-
-
-<h2 id="special-cases">Special Cases and Considerations</h2>
-
-<p>The following list describes specific situations that should be tested to ensure an
-  accessible app. Some, none or all of the cases described here may apply to your application. Be
-  sure to review this list to find out if these special cases apply and take appropriate action.</p>
-
-<ol>
-  <li><strong>Review developer special cases and considerations:</strong> Review the list of
-    <a href="{@docRoot}guide/topics/ui/accessibility/checklist.html#special-cases">special cases</a>
-     for accessibility development and test your application for the cases that apply.</li>
-  <li><strong>Prompts for controls that change function:</strong> Buttons or other controls
-    that change function due to application context or workflow must provide audio prompts
-    appropriate to their current function. For example, a button that changes function from play
-    video to pause video should provide an audio prompt which is appropriate to its current state.</li>
-  <li><strong>Video playback and captioning:</strong> If the application provides video
-    playback, verify that it supports captioning and subtitles to assist users who are deaf or hard
-    of hearing. The video playback controls must clearly indicate if captioning is available for a
-    video and provide a clear way of enabling captions.</li>
-</ol>
-
-
-<h2 id="how-to">Testing Accessibility Features</h2>
-
-<p>Testing of accessibility features such as TalkBack, Explore by Touch and accessibility Gestures
-requires setup of your testing device. This section describes how to enable these features for
-accessibility testing.</p>
-
-
-<h3 id="test-audibles">Testing audible feedback</h3>
-
-<p>Audible accessibility feedback features on Android devices provide audio prompts that speaks
-  the screen content as you move around an application. By enabling these features on an Android
-  device, you can test the experience of users with blindness or low-vision using your application.
-</p>
-
-<p>Audible feedback for users on Android is typically provided by TalkBack accessibility service and
-the Explore by Touch system feature. The TalkBack accessibility service comes preinstalled on most
-Android devices and can also be downloaded for free from
-<a href="https://play.google.com/store/apps/details?id=com.google.android.marvin.talkback">Google
-Play</a>. The Explore by Touch system feature is available on devices running Android 4.0 and later.
-</p>
-
-<h4 id="testing-talkback">Testing with TalkBack</h4>
-
-<p>The <em>TalkBack</em> accessibility service works by speaking the contents of user interface
-controls as the user moves focus onto controls. This service should be enabled as part of testing
-focus navigation and audible prompts.</p>
-
-<p>To enable the TalkBack accessibility service:</p>
-<ol>
-  <li>Launch the <strong>Settings</strong> application.</li>
-  <li>Navigate to the <strong>Accessibility</strong> category and select it.</li>
-  <li>Select <strong>Accessibility</strong> to enable it.</li>
-  <li>Select <strong>TalkBack</strong> to enable it.</li>
-</ol>
-
-<p class="note">
-  <strong>Note:</strong> While TalkBack is the most available Android accessibility service for
-  users with disabilities, other accessibility services are available and may be installed by users.
-</p>
-
-<p>For more information about using TalkBack, see
-<a href="https://support.google.com/accessibility/android/topic/3529932">TalkBack</a>.</p>
-
-<h4 id="testing-ebt">Testing with Explore by Touch</h4>
-
-<p>The <em>Explore by Touch</em> system feature is available on devices running Android 4.0 and
-  later, and works by enabling a special accessibility mode that allows users to drag a finger
-  around the interface of an application and hear the contents of the screen spoken. This feature
-  does not require screen elements to be focused using an directional controller, but listens for
-  hover events over user interface controls.
-</p>
-
-<p>To enable Explore by Touch on Android 4.0 and later:</p>
-<ol>
-  <li>Launch the <strong>Settings</strong> application.</li>
-  <li>Navigate to the <strong>Accessibility</strong> category and select it.</li>
-  <li>Select the <strong>TalkBack</strong> to enable it.
-      <p class="note"><strong>Note:</strong> On Android 4.1 (API Level 16) and higher, the system
-      provides a popup message to enable Explore by Touch. On older versions, you must follow the
-      step below.</p>
-  </li>
-  <li>Return to the <strong>Accessibility</strong> category and select <strong>Explore by
-Touch</strong> to enable it.
-    <p class="note"><strong>Note:</strong> You must turn on TalkBack <em>first</em>, otherwise this
-option is not available.</p>
-  </li>
-</ol>
-
-<p>For more information about using the Explore by Touch features, see
-<a href="https://support.google.com/accessibility/android/answer/6006598">Touch Exploration</a>.</p>
-
-<h3 id="test-navigation">Testing focus navigation</h3>
-
-<p>Focus navigation is the use of directional controls to navigate between the individual user
-  interface elements of an application in order to operate it. Users with limited vision or limited
-  manual dexterity often use this mode of navigation instead of touch navigation. As part of
-  accessibility testing, you should verify that your application can be operated using only
-  directional controls.</p>
-
-<p>You can test navigation of your application using only focus controls, even if your test devices
-  does not have a directional controller. The <a href="{@docRoot}tools/help/emulator.html">Android
-  Emulator</a> provides a simulated directional controller that you can use to test navigation. You
-  can also use a software-based directional controller, such as the one provided by the
-  <a href="https://play.google.com/store/apps/details?id=com.googlecode.eyesfree.inputmethod.latin"
-  >Eyes-Free Keyboard</a> to simulate use of a D-pad on a test device that does not have a physical
-  D-pad.</p>
-
-
-<h3 id="test-gestures">Testing gesture navigation</h3>
-
-<p>Gesture navigation is an accessibility navigation mode that allows users to navigate Android
-  devices and applications using specific
-  <a href="https://support.google.com/accessibility/android/answer/6006598">gestures</a>. This
-  navigation mode is available on Android 4.1 (API Level 16) and higher.</p>
-
-<p class="note"><strong>Note:</strong> Accessibility gestures provide a different navigation path
-than keyboards and D-pads. While gestures allow users to focus on nearly any on-screen
-content, keyboard and D-pad navigation only allow focus on input fields and buttons.</p>
-
-<p>To enable gesture navigation on Android 4.1 and later:</p>
-<ul>
-  <li>Enable both TalkBack and the Explore by Touch feature as described in the
-    <a href="#testing-ebt">Testing with Explore by Touch</a>. When <em>both</em> of these
-    features are enabled, accessibility gestures are automatically enabled.</li>
-  <li>You can change gesture settings using <strong>Settings &gt; Accessibility &gt; TalkBack &gt;
-    Settings &gt; Manage shortcut gestures</strong>.
-</ul>
-
-<p>For more information about using Explore by Touch accessibility gestures, see
-<a href="https://support.google.com/accessibility/android/answer/6006598">Touch Exploration</a>.</p>
-
-<p class="note">
-  <strong>Note:</strong> Accessibility services other than TalkBack may map accessibility gestures
-  to different user actions. If gestures are not producing the expected actions during testing, try
-  disabling other accessibility services before proceeding.</p>
\ No newline at end of file
diff --git a/docs/html/tools/testing/testing_android.jd b/docs/html/tools/testing/testing_android.jd
old mode 100644
new mode 100755
index 10843e8..5adb7e9
--- a/docs/html/tools/testing/testing_android.jd
+++ b/docs/html/tools/testing/testing_android.jd
@@ -1,4 +1,4 @@
-page.title=Testing Fundamentals
+page.title=Testing Concepts
 parent.title=Testing
 parent.link=index.html
 @jd:body
@@ -7,14 +7,8 @@
   <div id="qv">
   <h2>In this document</h2>
   <ol>
-    <li>
-        <a href="#TestStructure">Test Structure</a>
-    </li>
-    <li>
-        <a href="#TestProjects">Test Projects</a>
-    </li>
-    <li>
-      <a href="#TestAPI">The Testing API</a>
+    <li><a href="#TestStructure">Test Structure</a></li>
+    <li><a href="#TestAPI">Testing APIs</a>
       <ol>
         <li>
           <a href="#JUnit">JUnit</a>
@@ -23,111 +17,192 @@
           <a href="#Instrumentation">Instrumentation</a>
         </li>
         <li>
-            <a href="#TestCaseClasses">Test case classes</a>
+            <a href="#TestingSupportLibraryClasses">Android Testing Support Library APIs</a>
         </li>
         <li>
           <a href="#AssertionClasses">Assertion classes</a>
         </li>
-        <li>
-          <a href="#MockObjectClasses">Mock object classes</a>
-        </li>
       </ol>
     </li>
     <li>
-        <a href="#InstrumentationTestRunner">Running Tests</a>
-    </li>
-    <li>
-        <a href="#TestResults">Seeing Test Results</a>
-    </li>
-    <li>
-        <a href="#Monkeys">monkey and monkeyrunner</a>
-    </li>
-    <li>
-       <a href="#PackageNames">Working With Package Names</a>
-    </li>
-    <li>
-        <a href="#WhatToTest">What To Test</a>
-    </li>
-    <li>
-        <a href="#NextSteps">Next Steps</a>
+        <a href="#Monkeys">Monkey and Monkeyrunner</a>
     </li>
   </ol>
-  <h2>Key classes</h2>
-    <ol>
-      <li>{@link android.test.InstrumentationTestRunner}</li>
-      <li>{@link android.test}</li>
-      <li>{@link android.test.mock}</li>
-      <li>{@link junit.framework}</li>
-    </ol>
-  <h2>Related tutorials</h2>
-    <ol>
-        <li>
-            <a href="{@docRoot}tools/testing/activity_test.html">Activity Testing Tutorial</a>
-        </li>
-    </ol>
   <h2>See also</h2>
-      <ol>
-        <li>
-          <a href="{@docRoot}tools/testing/testing_eclipse.html">
-          Testing from Eclipse with ADT</a>
-        </li>
-        <li>
-          <a href="{@docRoot}tools/testing/testing_otheride.html">
-          Testing from Other IDEs</a>
-        </li>
-        <li>
-          <a href="{@docRoot}tools/help/monkeyrunner_concepts.html">
-          monkeyrunner</a>
-        </li>
-        <li>
-     <a href="{@docRoot}tools/help/monkey.html">UI/Application Exerciser Monkey</a>
-        </li>
-      </ol>
+  <ol>
+      <li><a href="{@docRoot}training/testing/start/index.html">Getting Started with Testing</a></li>
+  </ol>
   </div>
 </div>
+
 <p>
-    The Android testing framework, an integral part of the development environment,
-    provides an architecture and powerful tools that help you test every aspect of your application
-    at every level from unit to framework.
-</p>
-<p>
-    The testing framework has these key features:
-</p>
+This document describes key concepts related to Android app testing. It assumes you have a basic
+knowledge of the <a href="http://junit.org/" class="external-link">JUnit</a> testing framework.</p>
+
+<h2 id="TestStructure">Test Structure</h2>
+<p>Android testing is based on JUnit. In general, a JUnit test is a method whose statements test a
+part of the application. You organize test methods into classes called
+<em>test cases</em>. You can further organize these classes into <em>test suites</em>.</p>
+<p>In JUnit, you build one or more test classes and use a test runner to
+execute them. In Android, you use <a href="{@docRoot}tools/studio/index.html">
+Android Studio </a>(or the <a href="{@docRoot}tools/building/plugin-for-gradle.html">
+Android Plugin for Gradle</a>) to build one or more test source files into an
+<em>Android test app</em>.</p>
+
+<p>From your testing environment, you can run your test in one of the following ways:</p>
 <ul>
-    <li>
-        Android test suites are based on JUnit. You can use plain JUnit to test a class that doesn't
-        call the Android API, or Android's JUnit extensions to test Android components. If you're
-        new to Android testing, you can start with general-purpose test case classes such as {@link
-        android.test.AndroidTestCase} and then go on to use more sophisticated classes.
-    </li>
-    <li>
-        The Android JUnit extensions provide component-specific test case classes. These classes
-        provide helper methods for creating mock objects and methods that help you control the
-        lifecycle of a component.
-    </li>
-    <li>
-        Test suites are contained in test packages that are similar to main application packages, so
-        you don't need to learn a new set of tools or techniques for designing and building tests.
-    </li>
-    <li>
-        The SDK tools for building and tests are available in Eclipse with ADT, and also in
-        command-line form for use with other IDEs. These tools get information from the project of
-        the application under test and use this information to automatically create the build files,
-        manifest file, and directory structure for the test package.
-    </li>
-    <li>
-        The SDK also provides
-  <a href="{@docRoot}tools/help/monkeyrunner_concepts.html">monkeyrunner</a>, an API
-        for testing devices with Python programs, and <a
-        href="{@docRoot}tools/help/monkey.html">UI/Application Exerciser Monkey</a>,
-        a command-line tool for stress-testing UIs by sending pseudo-random events to a device.
-    </li>
+    <li><strong>On your local machine:</strong> Compile the test classes and
+        execute them locally on the Java Virtual Machine (JVM) using the JUnit test runner.</li>
+    <li><strong>On a device or emulator</strong>: Install the test app and the app
+under test to a physical device or emulator, and then execute your tests using an Android-specific
+test runner (such as <a href="{@docRoot}tools/testing-support-library/index.html#AndroidJUnitRunner">
+{@code AndroidJUnitRunner}</a>).</li>
 </ul>
+
+<p>The structure of your test code and the way you build and run the tests in Android Studio depend
+on the type of testing you are performing. The following table summarizes the common testing types
+for Android:</p>
+
+<table>
+<tr><th>Type</th>
+    <th>Subtype</th>
+    <th>Description</th></tr>
+
+<tr><td rowspan="3">Unit tests</td>
+    <tr><td>Local Unit Tests</td>
+        <td>Unit tests that run on your local machine only. These tests are compiled to run locally
+on the JVM to minimize execution time. Use this approach to run unit tests
+that have no dependencies on the Android framework or have dependencies that mock objects can
+satisfy.</td></tr>
+    <tr><td>Instrumented unit tests</td>
+        <td>Unit tests that run on an Android device or emulator. These tests have access to
+{@link android.app.Instrumentation} information, such as the {@link android.content.Context} of the
+app under test. Use this approach to run unit tests that have Android dependencies which mock
+objects cannot easily satisfy.</td></tr>
+
+<tr><td rowspan="3">Integration Tests</td>
+    <tr><td>Components within your app only</td>
+        <td>This type of test verifies that the target app behaves as expected when a user performs
+a specific action or enters a specific input in its activities. For example, it allows you to check
+that the target app returns the correct UI output in response to user interactions in the app’s
+activities. UI testing frameworks like
+<a href="{@docRoot}tools/testing-support-library/index.html#Espresso">Espresso</a> allow you to
+programmatically simulate user actions and test complex intra-app user interactions.</td></tr>
+    <tr><td>Cross-app Components</td>
+    <td>This type of test verifies the correct behavior of interactions between different user
+apps or between user apps and system apps. For example, you might want to test that your app behaves
+correctly when the user performs an action in the Android Settings menu. UI testing frameworks
+that support cross-app interactions, such as UI Automator, allow you to create tests for such
+scenarios.</td></tr>
+</table>
+
+<p>Based on the type of test you want to create, you need to configure the test code source
+location and the project dependencies in Android Studio as described in
+<a href="{@docRoot}training/testing/start/index.html">Getting Started with Testing</a>.</p>
+
+<h2 id="TestAPI">Testing APIs</h2>
+<p>The following list summarizes the common APIs related to app testing for Android.</p>
+
+<h3 id="JUnit">JUnit</h3>
+
+<p>You should write your unit or integration test class as a JUnit 4 test class.
+<a href="http://junit.org/" class="external-link">JUnit</a> is the most popular
+and widely-used unit testing framework for Java. The framework offers a convenient way to perform
+common setup, teardown, and assertion operations in your test.</p>
+
+<p>JUnit 4 allows you to write tests in a cleaner and more
+flexible way than its predecessor versions. Unlike the previous approach to Android unit testing
+based on JUnit 3, with JUnit 4, you do not need to extend the {@code junit.framework.TestCase}
+class. You also do not need to prepend the {@code test} keyword to your test method name, or
+use any classes in the {@code junit.framework} or {@code junit.extensions} package.</p>
+
+<p>A basic JUnit 4 test class is a Java class that contains one or more test methods.
+A test method begins with the {@code &#64;Test} annotation and contains the code to exercise
+and verify a single functionality (that is, a logical <em>unit</em>) in the component that you want
+to test.</p>
+<p>The following snippet shows an example JUnit 4 integration test that uses the Espresso
+APIs to perform a click action on a UI element, then checks to see if an expected string is
+displayed.</p>
+<pre>
+&#64;RunWith(AndroidJUnit4.class)
+&#64;LargeTest
+public class MainActivityInstrumentationTest {
+
+    &#64;Rule
+    public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(
+            MainActivity.class);
+
+    &#64;Test
+    public void sayHello(){
+        onView(withText("Say hello!")).perform(click());
+
+        onView(withId(R.id.textView)).check(matches(withText("Hello, World!")));
+    }
+}
+</pre>
+<p>In your JUnit 4 test class, you can call out sections in your test code for
+special processing by using the following annotations:</p>
+<ul>
+<li>
+{@code &#64;Before}: Use this annotation to specify a block of code that contains test setup
+operations. The test class invokes this code block before each test. You can have multiple
+{@code &#64;Before} methods but the order in which the test class calls these methods
+is not guaranteed.
+</li>
+<li>
+{@code &#64;After}: This annotation specifies a block of code that contains test
+tear-down operations. The test class calls this code block after every test method. You can define
+multiple {@code &#64;After} operations in your test code. Use this annotation to release any
+resources from memory.
+</li>
+<li>
+{@code &#64;Test}: Use this annotation to mark a test method. A single test class can contain
+multiple test methods, each prefixed with this annotation.
+</li>
+<li>
+{@code &#64;Rule}: Rules allow you to flexibly add or redefine the behavior of each test
+method in a reusable way. In Android testing, use this annotation together with
+one of the test rule classes that the Android Testing Support Library provides, such as
+<a href="{@docRoot}reference/android/support/test/rule/ActivityTestRule.html">
+{@code ActivityTestRule}</a> or
+<a href="{@docRoot}reference/android/support/test/rule/ServiceTestRule.html">
+{@code ServiceTestRule}</a>.
+</li>
+<li>
+{@code &#64;BeforeClass}: Use this annotation to specify static methods for each test class to
+invoke only once. This testing step is useful for expensive operations such as connecting to a
+database.
+</li>
+<li>
+{@code &#64;AfterClass}: Use this annotation to specify static methods for the test class to invoke
+only after all tests in the class have run. This testing step is useful for releasing any
+resources allocated in the {@code &#64;BeforeClass} block.
+</li>
+<li>
+{@code &#64;Test(timeout=&lt;milliseconds&gt;)}: Some annotations support the ability to pass in
+elements for which you can set values. For example, you can specify a timeout period for the test.
+If the test starts but does not complete within the given timeout period, it automatically fails.
+You must specify the timeout period in milliseconds, for example: {@code &#64;Test(timeout=5000)}.
+</li>
+</ul>
+<p>For more annotations, see the documentation for
+<a href="//junit.sourceforge.net/javadoc/org/junit/package-summary.html" class="external-link">
+JUnit annotations</a> and the
+<a href="{@docRoot}android/support/test/annotation/package-summary.html">
+Android-specific annotations</a>.
 <p>
-    This document describes the fundamentals of the Android testing framework, including the
-    structure of tests, the APIs that you use to develop tests, and the tools that you use to run
-    tests and view results. The document assumes you have a basic knowledge of Android application
-    programming and JUnit testing methodology.
+    You use the JUnit {@link junit.framework.Assert} class to verify the correctness of an object's
+    state. The assert methods compare values you expect from a test to the actual results and
+    throw an exception if the comparison fails. <a href="#AssertionClasses">
+    Assertion classes</a> describes these methods in more detail.
+</p>
+
+</p>
+<h3 id="Instrumentation">Instrumentation</h3>
+<p>
+    Android instrumentation is a set of control methods or hooks in the Android system. These
+    hooks control an Android component independently of its normal lifecycle. They also control how
+    Android loads applications.
 </p>
 <p>
     The following diagram summarizes the testing framework:
@@ -138,415 +213,60 @@
         alt="The Android testing framework"/>
 </a>
 </div>
-<h2 id="TestStructure">Test Structure</h2>
 <p>
-    Android's build and test tools assume that test projects are organized into a standard
-    structure of tests, test case classes, test packages, and test projects.
+Normally, an Android component runs in a lifecycle that the system determines. For example, an
+{@link android.app.Activity} object's lifecycle starts when an {@link android.content.Intent}
+activates the {@link android.app.Activity}. The system calls the object's <code>onCreate()</code>
+method, on then the <code>onResume()</code> method. When the user starts another application, the
+system calls the <code>onPause()</code> method. If the {@link android.app.Activity} code calls
+the <code>finish()</code> method, the system calls the <code>onDestroy()</code> method. The Android
+framework API does not provide a way for your code to invoke these callback methods directly, but
+you can do so using instrumentation.
 </p>
 <p>
-    Android testing is based on JUnit. In general, a JUnit test is a method whose
-    statements test a part of the application under test. You organize test methods into classes
-    called test cases (or test suites). Each test is an isolated test of an individual module in
-    the application under test. Each class is a container for related test methods, although it
-    often provides helper methods as well.
+The system runs all the components of an application in the same process. You can allow some
+components, such as content providers, to run in a separate process,
+but you can't force an application to run in the same process as another application that is
+already running.
 </p>
 <p>
-    In JUnit, you build one or more test source files into a class file. Similarly, in Android you
-    use the SDK's build tools to build one or more test source files into class files in an
-    Android test package. In JUnit, you use a test runner to execute test classes. In Android, you
-    use test tools to load the test package and the application under test, and the tools then
-    execute an Android-specific test runner.
+Instrumentation can load both a test package and the app under test into the
+same process. Since the application components and their tests are in the same process, your
+tests can invoke methods in the components, and modify and examine fields in the components.
 </p>
-<h2 id="TestProjects">Test Projects</h2>
+<h3 id="TestingSupportLibraryClasses">Android Testing Support Library APIs</h3>
 <p>
-    Tests, like Android applications, are organized into projects.
-</p>
-<p>
-    A test project is a directory or Eclipse project in which you create the source code, manifest
-    file, and other files for a test package. The Android SDK contains tools for Eclipse with ADT
-    and for the command line that create and update test projects for you. The tools create the
-    directories you use for source code and resources and the manifest file for the test package.
-    The command-line tools also create the Ant build files you need.
-</p>
-<p>
-    You should always use Android tools to create a test project. Among other benefits,
-    the tools:
-</p>
-    <ul>
-        <li>
-            Automatically set up your test package to use
-            {@link android.test.InstrumentationTestRunner} as the test case runner. You must use
-            <code>InstrumentationTestRunner</code> (or a subclass) to run JUnit tests.
-        </li>
-        <li>
-            Create an appropriate name for the test package. If the application
-            under test has a package name of <code>com.mydomain.myapp</code>, then the
-            Android tools set the test package name to <code>com.mydomain.myapp.test</code>. This
-            helps you identify their relationship, while preventing conflicts within the system.
-        </li>
-        <li>
-            Automatically create the proper build files, manifest file, and directory
-            structure for the test project. This helps you to build the test package without
-            having to modify build files and sets up the linkage between your test package and
-            the application under test.
-            The
-        </li>
-    </ul>
-<p>
-    You can create a test project anywhere in your file system, but the best approach is to
-    add the test project so that its root directory <code>tests/</code> is at the same level
-    as the <code>src/</code> directory of the main application's project. This helps you find the
-    tests associated with an application. For example, if your application project's root directory
-    is <code>MyProject</code>, then you should use the following directory structure:
-</p>
-<pre class="classic no-pretty-print">
-  MyProject/
-      AndroidManifest.xml
-      res/
-          ... (resources for main application)
-      src/
-          ... (source code for main application) ...
-      tests/
-          AndroidManifest.xml
-          res/
-              ... (resources for tests)
-          src/
-              ... (source code for tests)
-</pre>
-<h2 id="TestAPI">The Testing API</h2>
-<p>
-    The Android testing API is based on the JUnit API and extended with a instrumentation
-    framework and Android-specific testing classes.
-</p>
-<h3 id="JUnit">JUnit</h3>
-<p>
-    You can use the JUnit {@link junit.framework.TestCase TestCase} class to do unit testing on
-    a class that doesn't call Android APIs. <code>TestCase</code> is also the base class for
-    {@link android.test.AndroidTestCase}, which you can use to test Android-dependent objects.
-    Besides providing the JUnit framework, AndroidTestCase offers Android-specific setup,
-    teardown, and helper methods.
-</p>
-<p>
-    You use the JUnit {@link junit.framework.Assert} class to display test results.
-    The assert methods compare values you expect from a test to the actual results and
-    throw an exception if the comparison fails. Android also provides a class of assertions that
-    extend the possible types of comparisons, and another class of assertions for testing the UI.
-    These are described in more detail in the section <a href="#AssertionClasses">
-    Assertion classes</a>
-</p>
-<p>
-    To learn more about JUnit, you can read the documentation on the
-    <a href="http://www.junit.org">junit.org</a> home page.
-    Note that the Android testing API supports JUnit 3 code style, but not JUnit 4. Also, you must
-    use Android's instrumented test runner {@link android.test.InstrumentationTestRunner} to run
-    your test case classes. This test runner is described in the
-    section <a href="#InstrumentationTestRunner">Running Tests</a>.
-</p>
-<h3 id="Instrumentation">Instrumentation</h3>
-<p>
-    Android instrumentation is a set of control methods or "hooks" in the Android system. These hooks
-    control an Android component independently of its normal lifecycle. They also control how
-    Android loads applications.
-</p>
-<p>
-    Normally, an Android component runs in a lifecycle determined by the system. For example, an
-    Activity object's lifecycle starts when the Activity is activated by an Intent. The object's
-    <code>onCreate()</code> method is called, followed by <code>onResume()</code>. When the user
-    starts another application, the <code>onPause()</code> method is called. If the Activity
-    code calls the <code>finish()</code> method, the <code>onDestroy()</code> method is called.
-    The Android framework API does not provide a way for your code to invoke these callback
-    methods directly, but you can do so using instrumentation.
-</p>
-<p>
-    Also, the system runs all the components of an application into the same
-    process. You can allow some components, such as content providers, to run in a separate process,
-    but you can't force an application to run in the same process as another application that is
-    already running.
-</p>
-<p>
-    With Android instrumentation, though, you can invoke callback methods in your test code.
-    This allows you to run through the lifecycle of a component step by step, as if you were
-    debugging the component. The following test code snippet demonstrates how to use this to
-    test that an Activity saves and restores its state:
-</p>
-<a name="ActivitySnippet"></a>
-<pre>
-    // Start the main activity of the application under test
-    mActivity = getActivity();
-
-    // Get a handle to the Activity object's main UI widget, a Spinner
-    mSpinner = (Spinner)mActivity.findViewById(com.android.example.spinner.R.id.Spinner01);
-
-    // Set the Spinner to a known position
-    mActivity.setSpinnerPosition(TEST_STATE_DESTROY_POSITION);
-
-    // Stop the activity - The onDestroy() method should save the state of the Spinner
-    mActivity.finish();
-
-    // Re-start the Activity - the onResume() method should restore the state of the Spinner
-    mActivity = getActivity();
-
-    // Get the Spinner's current position
-    int currentPosition = mActivity.getSpinnerPosition();
-
-    // Assert that the current position is the same as the starting position
-    assertEquals(TEST_STATE_DESTROY_POSITION, currentPosition);
-</pre>
-<p>
-    The key method used here is
-    {@link android.test.ActivityInstrumentationTestCase2#getActivity()}, which is a
-    part of the instrumentation API. The Activity under test is not started until you call this
-    method. You can set up the test fixture in advance, and then call this method to start the
-    Activity.
-</p>
-<p>
-    Also, instrumentation can load both a test package and the application under test into the
-    same process. Since the application components and their tests are in the same process, the
-    tests can invoke methods in the components, and modify and examine fields in the components.
-</p>
-<h3 id="TestCaseClasses">Test case classes</h3>
-<p>
-    Android provides several test case classes that extend {@link junit.framework.TestCase} and
-    {@link junit.framework.Assert} with Android-specific setup, teardown, and helper methods.
-</p>
-<h4 id="AndroidTestCase">AndroidTestCase</h4>
-<p>
-    A useful general test case class, especially if you are
-    just starting out with Android testing, is {@link android.test.AndroidTestCase}. It extends
-    both {@link junit.framework.TestCase} and {@link junit.framework.Assert}. It provides the
-    JUnit-standard <code>setUp()</code> and <code>tearDown()</code> methods, as well as
-    all of JUnit's Assert methods. In addition, it provides methods for testing permissions, and a
-    method that guards against memory leaks by clearing out certain class references.
-</p>
-<h4 id="ComponentTestCase">Component-specific test cases</h4>
-<p>
-    A key feature of the Android testing framework is its component-specific test case classes.
-    These address specific component testing needs with methods for fixture setup and
-    teardown and component lifecycle control. They also provide methods for setting up mock objects.
-    These classes are described in the component-specific testing topics:
-</p>
+The <a href="{@docRoot}tools/testing-support-library/index.html">Android Testing Support Library</a>
+provides a set of APIs that allow you to quickly build and run test code for your apps, including
+JUnit 4 and functional user interface (UI) tests. The library includes the following
+instrumentation-based APIs that are useful when you want to automate your tests:</p>
 <ul>
-    <li>
-        <a href="{@docRoot}tools/testing/activity_testing.html">Activity Testing</a>
+    <li><a href="{@docRoot}tools/testing-support-library/index.html#AndroidJUnitRunner">
+        {@code AndroidJUnitRunner}</a>:
+      JUnit 4-compatible test runner for Android
     </li>
-    <li>
-        <a href="{@docRoot}tools/testing/contentprovider_testing.html">
-        Content Provider Testing</a>
+
+    <li><a href="{@docRoot}tools/testing-support-library/index.html#Espresso">Espresso</a>:
+    UI testing framework; suitable for functional UI testing within an app
     </li>
-    <li>
-        <a href="{@docRoot}tools/testing/service_testing.html">Service Testing</a>
-    </li>
-</ul>
-<p>
-    Android does not provide a separate test case class for BroadcastReceiver. Instead, test a
-    BroadcastReceiver by testing the component that sends it Intent objects, to verify that the
-    BroadcastReceiver responds correctly.
-</p>
-<h4 id="ApplicationTestCase">ApplicationTestCase</h4>
-<p>
-    You use the {@link android.test.ApplicationTestCase} test case class to test the setup and
-    teardown of {@link android.app.Application} objects. These objects maintain the global state of
-    information that applies to all the components in an application package. The test case can
-    be useful in verifying that the &lt;application&gt; element in the manifest file is correctly
-    set up. Note, however, that this test case does not allow you to control testing of the
-    components within your application package.
-</p>
-<h4 id="InstrumentationTestCase">InstrumentationTestCase</h4>
-<p>
-    If you want to use instrumentation methods in a test case class, you must use
-    {@link android.test.InstrumentationTestCase} or one of its subclasses. The
-    {@link android.app.Activity} test cases extend this base class with other functionality that
-    assists in Activity testing.
-</p>
+
+    <li><a href="{@docRoot}tools/testing-support-library/index.html#UIAutomator">UI Automator</a>:
+    UI testing framework; suitable for cross-app functional UI testing across system and installed
+    apps</li>
+  </ul>
 
 <h3 id="AssertionClasses">Assertion classes</h3>
-<p>
-    Because Android test case classes extend JUnit, you can use assertion methods to display the
-    results of tests. An assertion method compares an actual value returned by a test to an
-    expected value, and throws an AssertionException if the comparison test fails. Using assertions
-    is more convenient than doing logging, and provides better test performance.
+<p>Because Android Testing Support Library APIs extend JUnit, you can use assertion methods to
+display the results of tests. An assertion method compares an actual value returned by a test to an
+expected value, and throws an AssertionException if the comparison test fails. Using assertions
+is more convenient than logging, and provides better test performance.
 </p>
-<p>
-    Besides the JUnit {@link junit.framework.Assert} class methods, the testing API also provides
-    the {@link android.test.MoreAsserts} and {@link android.test.ViewAsserts} classes:
-</p>
-<ul>
-    <li>
-        {@link android.test.MoreAsserts} contains more powerful assertions such as
-        {@link android.test.MoreAsserts#assertContainsRegex}, which does regular expression
-        matching.
-    </li>
-    <li>
-        {@link android.test.ViewAsserts} contains useful assertions about Views. For example
-        it contains {@link android.test.ViewAsserts#assertHasScreenCoordinates} that tests if a View
-        has a particular X and Y position on the visible screen. These asserts simplify testing of
-        geometry and alignment in the UI.
-    </li>
-</ul>
-<h3 id="MockObjectClasses">Mock object classes</h3>
-<p>
-    To facilitate dependency injection in testing, Android provides classes that create mock system
-    objects such as {@link android.content.Context} objects,
-    {@link android.content.ContentProvider} objects, {@link android.content.ContentResolver}
-    objects, and {@link android.app.Service} objects. Some test cases also provide mock
-    {@link android.content.Intent} objects. You use these mocks both to isolate tests
-    from the rest of the system and to facilitate dependency injection for testing. These classes
-    are found in the packages {@link android.test} and {@link android.test.mock}.
-</p>
-<p>
-    Mock objects isolate tests from a running system by stubbing out or overriding
-    normal operations. For example, a {@link android.test.mock.MockContentResolver}
-    replaces the normal resolver framework with its own local framework, which is isolated
-    from the rest of the system. MockContentResolver also stubs out the
-    {@link android.content.ContentResolver#notifyChange(Uri, ContentObserver, boolean)} method
-    so that observer objects outside the test environment are not accidentally triggered.
-</p>
-<p>
-    Mock object classes also facilitate dependency injection by providing a subclass of the
-    normal object that is non-functional except for overrides you define. For example, the
-    {@link android.test.mock.MockResources} object provides a subclass of
-    {@link android.content.res.Resources} in which all the methods throw Exceptions when called.
-    To use it, you override only those methods that must provide information.
-</p>
-<p>
-    These are the mock object classes available in Android:
-</p>
-<h4 id="SimpleMocks">Simple mock object classes</h4>
-<p>
-    {@link android.test.mock.MockApplication}, {@link android.test.mock.MockContext},
-    {@link android.test.mock.MockContentProvider}, {@link android.test.mock.MockCursor},
-    {@link android.test.mock.MockDialogInterface}, {@link android.test.mock.MockPackageManager}, and
-    {@link android.test.mock.MockResources} provide a simple and useful mock strategy. They are
-    stubbed-out versions of the corresponding system object class, and all of their methods throw an
-    {@link java.lang.UnsupportedOperationException} exception if called. To use them, you override
-    the methods you need in order to provide mock dependencies.
-</p>
-<p class="Note"><strong>Note:</strong>
-    {@link android.test.mock.MockContentProvider}
-    and {@link android.test.mock.MockCursor} are new as of API level 8.
-</p>
-<h4 id="ResolverMocks">Resolver mock objects</h4>
-<p>
-    {@link android.test.mock.MockContentResolver} provides isolated testing of content providers by
-    masking out the normal system resolver framework. Instead of looking in the system to find a
-    content provider given an authority string, MockContentResolver uses its own internal table. You
-    must explicitly add providers to this table using
-    {@link android.test.mock.MockContentResolver#addProvider(String,ContentProvider)}.
-</p>
-<p>
-    With this feature, you can associate a mock content provider with an authority. You can create
-    an instance of a real provider but use test data in it. You can even set the provider for an
-    authority to <code>null</code>. In effect, a MockContentResolver object isolates your test
-    from providers that contain real data. You can control the
-    function of the provider, and you can prevent your test from affecting real data.
-</p>
-<h3 id="ContextMocks">Contexts for testing</h3>
-<p>
-    Android provides two Context classes that are useful for testing:
-</p>
-<ul>
-    <li>
-        {@link android.test.IsolatedContext} provides an isolated {@link android.content.Context},
-        File, directory, and database operations that use this Context take place in a test area.
-        Though its functionality is limited, this Context has enough stub code to respond to
-        system calls.
-        <p>
-            This class allows you to test an application's data operations without affecting real
-            data that may be present on the device.
-        </p>
-    </li>
-    <li>
-        {@link android.test.RenamingDelegatingContext} provides a Context in which
-        most functions are handled by an existing {@link android.content.Context}, but
-        file and database operations are handled by a {@link android.test.IsolatedContext}.
-        The isolated part uses a test directory and creates special file and directory names.
-        You can control the naming yourself, or let the constructor determine it automatically.
-        <p>
-            This object provides a quick way to set up an isolated area for data operations,
-            while keeping normal functionality for all other Context operations.
-        </p>
-    </li>
-</ul>
-<h2 id="InstrumentationTestRunner">Running Tests</h2>
-<p>
-    Test cases are run by a test runner class that loads the test case class, set ups,
-    runs, and tears down each test. An Android test runner must also be instrumented, so that
-    the system utility for starting applications can control how the test package
-    loads test cases and the application under test. You tell the Android platform
-    which instrumented test runner to use by setting a value in the test package's manifest file.
-</p>
-<p>
-    {@link android.test.InstrumentationTestRunner} is the primary Android test runner class. It
-    extends the JUnit test runner framework and is also instrumented. It can run any of the test
-    case classes provided by Android and supports all possible types of testing.
-</p>
-<p>
-    You specify <code>InstrumentationTestRunner</code> or a subclass in your test package's
-    manifest file, in the 
-<code><a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">&lt;instrumentation&gt;</a></code> 
-    element. Also, <code>InstrumentationTestRunner</code> code resides
-    in the shared library <code>android.test.runner</code>,  which is not normally linked to
-    Android code. To include it, you must specify it in a
-<code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code>
-    element. You do not have to set up these elements yourself. Both Eclipse with ADT and the
-    <code>android</code> command-line tool construct them automatically and add them to your
-    test package's manifest file.
-</p>
-<p class="Note">
-    <strong>Note:</strong> If you use a test runner other than
-    <code>InstrumentationTestRunner</code>, you must change the &lt;instrumentation&gt;
-    element to point to the class you want to use.
-</p>
-<p>
-    To run {@link android.test.InstrumentationTestRunner}, you use internal system classes called by
-    Android tools. When you run a test in Eclipse with ADT, the classes are called automatically.
-    When you run a test from the command line, you run these classes with
-    <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (adb)</a>.
-</p>
-<p>
-    The system classes load and start the test package, kill any processes that
-    are running an instance of the application under test, and then load a new instance of the
-    application under test. They then pass control to
-    {@link android.test.InstrumentationTestRunner}, which runs
-    each test case class in the test package. You can also control which test cases and
-    methods are run using settings in Eclipse with ADT, or using flags with the command-line tools.
-</p>
-<p>
-    Neither the system classes nor {@link android.test.InstrumentationTestRunner} run
-    the application under test. Instead, the test case does this directly. It either calls methods
-    in the application under test, or it calls its own methods that trigger lifecycle events in
-    the application under test. The application is under the complete control of the test case,
-    which allows it to set up the test environment (the test fixture) before running a test. This
-    is demonstrated in the previous <a href="#ActivitySnippet">code snippet</a> that tests an
-    Activity that displays a Spinner widget.
-</p>
-<p>
-    To learn more about running tests, please read the topics
-    <a href="{@docRoot}tools/testing/testing_eclipse.html">
-    Testing from Eclipse with ADT</a> or
-    <a href="{@docRoot}tools/testing/testing_otheride.html">
-    Testing from Other IDEs</a>.
-</p>
-<h2 id="TestResults">Seeing Test Results</h2>
-<p>
-    The Android testing framework returns test results back to the tool that started the test.
-    If you run a test in Eclipse with ADT, the results are displayed in a new JUnit view pane. If
-    you run a test from the command line, the results are displayed in <code>STDOUT</code>. In
-    both cases, you see a test summary that displays the name of each test case and method that
-    was run. You also see all the assertion failures that occurred. These include pointers to the
-    line in the test code where the failure occurred. Assertion failures also list the expected
-    value and actual value.
-</p>
-<p>
-    The test results have a format that is specific to the IDE that you are using. The test
-    results format for Eclipse with ADT is described in
-    <a href="{@docRoot}tools/testing/testing_eclipse.html#RunTestEclipse">
-    Testing from Eclipse with ADT</a>. The test results format for tests run from the
-    command line is described in
-    <a href="{@docRoot}tools/testing/testing_otheride.html#RunTestsCommand">
-    Testing from Other IDEs</a>.
-</p>
-<h2 id="Monkeys">monkey and monkeyrunner</h2>
+<p>To simplify your test development, we recommend that you use the
+<a href="https://github.com/hamcrest"
+class="external-link">Hamcrest</a> library, which lets you create more flexible tests using the
+Hamcrest matcher APIs.</p>
+
+<h2 id="Monkeys">Monkey and Monkeyrunner</h2>
 <p>
     The SDK provides two tools for functional-level application testing:
 </p>
@@ -569,72 +289,4 @@
             tests. You run programs that use the API with the <code>monkeyrunner</code> command-line
             tool.
         </li>
-    </ul>
-<h2 id="PackageNames">Working With Package names</h2>
-<p>
-    In the test environment, you work with both Android application package names and
-    Java package identifiers. Both use the same naming format, but they represent substantially
-    different entities. You need to know the difference to set up your tests correctly.
-</p>
-<p>
-    An Android package name is a unique system name for a <code>.apk</code> file, set by the
-    &quot;android:package&quot; attribute of the &lt;manifest&gt; element in the package's
-    manifest. The Android package name of your test package must be different from the
-    Android package name of the application under test. By default, Android tools create the
-    test package name by appending ".test" to the package name of the application under test.
-</p>
-<p>
-    The test package also uses an Android package name to target the application package it
-    tests. This is set in the &quot;android:targetPackage&quot; attribute of the
-    &lt;instrumentation&gt; element in the test package's manifest.
-</p>
-<p>
-    A Java package identifier applies to a source file. This package name reflects the directory
-    path of the source file. It also affects the visibility of classes and members to each other.
-</p>
-<p>
-    Android tools that create test projects set up an Android test package name for you.
-    From your input, the tools set up the test package name and the target package name for the
-    application under test. For these tools to work, the application project must already exist.
-</p>
-<p>
-    By default, these tools set the Java package identifier for the test class to be the same
-    as the Android package identifier. You may want to change this if you want to expose
-    members in the application under test by giving them package visibility. If you do this,
-    change only the Java package identifier, not the Android package names, and change only the
-    test case source files. Do not change the Java package name of the generated
-    <code>R.java</code> class in your test package, because it will then conflict with the
-    <code>R.java</code> class in the application under test. Do not change the Android package name
-    of your test package to be the same as the application it tests, because then their names
-    will no longer be unique in the system.
-</p>
-<h2 id="WhatToTest">What to Test</h2>
-<p>
-    The topic <a href="{@docRoot}tools/testing/what_to_test.html">What To Test</a>
-    describes the key functionality you should test in an Android application, and the key
-    situations that might affect that functionality.
-</p>
-<p>
-    Most unit testing is specific to the Android component you are testing.
-    The topics <a href="{@docRoot}tools/testing/activity_testing.html">Activity Testing</a>,
-    <a href="{@docRoot}tools/testing/contentprovider_testing.html">
-    Content Provider Testing</a>, and <a href="{@docRoot}tools/testing/service_testing.html">
-    Service Testing</a> each have a section entitled "What To Test" that lists possible testing
-    areas.
-</p>
-<p>
-    When possible, you should run these tests on an actual device. If this is not possible, you can
-    use the <a href="{@docRoot}tools/devices/emulator.html">Android Emulator</a> with
-    Android Virtual Devices configured for the hardware, screens, and versions you want to test.
-</p>
-<h2 id="NextSteps">Next Steps</h2>
-<p>
-    To learn how to set up and run tests in Eclipse, please refer to 
-<a href="{@docRoot}tools/testing/testing_eclipse.html">Testing from Eclipse with ADT</a>.
-    If you're not working in Eclipse, refer to 
-<a href="{@docRoot}tools/testing/testing_otheride.html">Testing from Other IDEs</a>.
-</p>
-<p>
-    If you want a step-by-step introduction to Android testing, try the
-    <a href="{@docRoot}tools/testing/activity_test.html">Activity Testing Tutorial</a>.
-</p>
+    </ul>
\ No newline at end of file
diff --git a/docs/html/tools/testing/testing_eclipse.jd b/docs/html/tools/testing/testing_eclipse.jd
deleted file mode 100644
index 6c9d55b..0000000
--- a/docs/html/tools/testing/testing_eclipse.jd
+++ /dev/null
@@ -1,535 +0,0 @@
-page.title=Testing from Eclipse with ADT
-parent.title=Testing
-parent.link=index.html
-@jd:body
-<div id="qv-wrapper">
-    <div id="qv">
-        <h2>In this document</h2>
-            <ol>
-                <li><a href="#CreateTestProjectEclipse">Creating a Test Project</a></li>
-                <li><a href="#CreateTestAppEclipse">Creating a Test Package</a></li>
-                <li><a href="#RunTestEclipse">Running Tests</a></li>
-            </ol>
-    </div>
-</div>
-<p>
-    This topic explains how create and run tests of Android applications in Eclipse with ADT.
-    Before you read this topic, you should read about how to create an Android application with the
-    basic processes for creating and running applications with ADT, as described in
-    <a href="{@docRoot}tools/projects/projects-eclipse.html">Managing Projects from
-Eclipse</a>
-    and <a href="{@docRoot}tools/building/building-eclipse.html">Building and Running
-from Eclipse</a>.
-    You may also want to read
-    <a href="{@docRoot}tools/testing/testing_android.html">Testing Fundamentals</a>,
-    which provides an overview of the Android testing framework.
-</p>
-<p>
-    ADT provides several features that help you set up and manage your testing environment
-    effectively:
-</p>
-    <ul>
-        <li>
-            It lets you quickly create a test project and link it to the application under test.
-            When it creates the test project, it automatically inserts the necessary
-            <code>&lt;instrumentation&gt;</code> element in the test package's manifest file.
-        </li>
-        <li>
-            It lets you quickly import the classes of the application under test, so that your
-            tests can inspect them.
-        </li>
-        <li>
-            It lets you create run configurations for your test package and include in
-            them flags that are passed to the Android testing framework.
-        </li>
-        <li>
-            It lets you run your test package without leaving Eclipse. ADT builds both the
-            application under test and the test package automatically, installs them if
-            necessary to your device or emulator, runs the test package, and displays the
-            results in a separate window in Eclipse.
-        </li>
-    </ul>
-<p>
-    If you are not developing in Eclipse or you want to learn how to create and run tests from the
-    command line, see
-    <a href="{@docRoot}tools/testing/testing_otheride.html">Testing from Other IDEs</a>.
-</p>
-<h2 id="CreateTestProjectEclipse">Creating a Test Project</h2>
-<p>
-    To set up a test environment for your Android application, you must first create a separate
-    project that holds the test code. The new project follows the directory structure
-    used for any Android application. It includes the same types of content and files, such as
-    source code, resources, a manifest file, and so forth. The test package you
-    create is connected to the application under test by an
-    <a href="{@docRoot}guide/topics/manifest/instrumentation-element.html">
-    <code>&lt;instrumentation&gt;</code></a> element in its manifest file.
-</p>
-<p>
-    The <em>New Android Test Project</em> dialog makes it easy for you to generate a
-    new test project that has the proper structure, including the
-    <code>&lt;instrumentation&gt;</code> element in the manifest file. You can use the New
-    Android Test Project dialog to generate the test project at any time. The dialog appears
-    just after you create a new Android main application project, but you can also run it to
-    create a test project for a project that you created previously.
-</p>
-<p>
-    To create a test project in Eclipse with ADT:
-</p>
-<ol>
-    <li>
-        In Eclipse, select <strong>File &gt; New &gt; Other</strong>. This opens the <em>Select a
-        Wizard</em> dialog.
-    </li>
-    <li>
-        In the dialog, in the <em>Wizards</em> drop-down list, find the entry for Android, then
-        click the toggle to the left. Select <strong>Android Test Project</strong>, then at the
-        bottom of the dialog click <strong>Next</strong>. The <em>New Android Test Project</em>
-        wizard appears.
-    </li>
-    <li>
-        Next to <em>Test Project Name</em>, enter a name for the project. You may use any name,
-        but you may want to associate the name with the project name for the application under test.
-        One way to do this is to take the application's project name, append the string "Test" to
-        it, and then use this as the test package project name.
-        <p>
-            The name becomes part of the suggested project path, but you can change this in the
-            next step.
-        </p>
-    </li>
-    <li>
-        In the <em>Content</em> panel, examine the suggested path to the project.
-        If <em>Use default location</em> is set, then the wizard will suggest a path that is
-        a concatenation of the workspace path and the project name you entered. For example,
-        if your workspace path is <code>/usr/local/workspace</code> and your project name is
-        <code>MyTestApp</code>, then the wizard will suggest
-        <code>/usr/local/workspace/MyTestApp</code>. To enter your own
-        choice for a path, unselect <em>Use default location</em>, then enter or browse to the
-        path where you want your project.
-        <p>
-            To learn more about choosing the location of test projects, please read
-            <a href="{@docRoot}tools/testing/testing_android.html#TestProjectPaths">
-            Testing Fundamentals</a>.
-        </p>
-    </li>
-    <li>
-        In the Test Target panel, set An Existing Android Project, click Browse, then select your
-        Android application from the list. You now see that the wizard has completed the Test
-        Target Package, Application Name, and Package Name fields for you (the latter two are in
-        the Properties panel).
-    </li>
-    <li>
-        In the Build Target panel, select the Android SDK platform that the application under test
-        uses.
-    </li>
-    <li>
-        Click Finish to complete the wizard. If Finish is disabled, look for error messages at the
-        top of the wizard dialog, and then fix any problems.
-    </li>
-</ol>
-<h2 id="CreateTestAppEclipse">Creating a Test Package</h2>
-<p>
-    Once you have created a test project, you populate it with a test package. This package does not
-    require an Activity, although you can define one if you wish. Although your test package can
-    combine Activity classes, test case classes, or ordinary classes, your main test case
-    should extend one of the Android test case classes or JUnit classes, because these provide the
-    best testing features.
-</p>
-<p>
-    Test packages do not need to have an Android GUI. When you run the package in
-    Eclipse with ADT, its results appear in the JUnit view. Running tests and seeing the results is
-    described in more detail in the section <a href="#RunTestEclipse">Running Tests</a>.
-</p>
-
-<p>
-    To create a test package, start with one of Android's test case classes defined in
-    {@link android.test android.test}. These extend the JUnit
-    {@link junit.framework.TestCase TestCase} class. The Android test classes for Activity objects
-    also provide instrumentation for testing an Activity. To learn more about test case
-    classes, please read the topic <a href="{@docRoot}tools/testing/testing_android.html">
-    Testing Fundamentals</a>.
-</p>
-<p>
-    Before you create your test package, you choose the Java package identifier you want to use
-    for your test case classes and the Android package name you want to use. To learn more
-    about this, please read
-    <a href="{@docRoot}tools/testing/testing_android.html#PackageNames">
-    Testing Fundamentals</a>.
-</p>
-<p>
-    To add a test case class to your project:
-</p>
-<ol>
-    <li>
-        In the <em>Project Explorer</em> tab, open your test project, then open the <em>src</em>
-        folder.
-    </li>
-    <li>
-        Find the Java package identifier set by the projection creation wizard. If you haven't
-        added classes yet, this node won't have any children, and its icon will not be filled in.
-        If you want to change the identifier value, right-click the identifier and select
-        <strong>Refactor</strong> &gt; <strong>Rename</strong>, then enter the new name.
-    </li>
-    <li>
-        When you are ready, right-click the Java package identifier again and select
-        <strong>New</strong> &gt; <strong>Class</strong>. This displays the <em>New Java Class</em>
-        dialog, with the <em>Source folder</em> and <em>Package</em> values already set.
-    </li>
-    <li>
-        In the <em>Name</em> field, enter a name for the test case class. One way to choose a
-        class name is to append the string "Test" to the class of the component you are testing.
-        For example, if you are testing the class MyAppActivity, your test case class
-        name would be MyAppActivityTest. Leave the modifiers set to <em>public</em>.
-    </li>
-    <li>
-        In the <em>Superclass</em> field, enter the name of the Android test case class you
-        are extending. You can also browse the available classes.
-    </li>
-    <li>
-        In <em>Which method stubs would you like to create?</em>, unset all the options, then
-        click <strong>Finish</strong>. You will set up the constructor manually.
-    </li>
-    <li>
-        Your new class appears in a new Java editor pane.
-    </li>
-</ol>
-<p>
-    You now have to ensure that the constructor is set up correctly. Create a constructor for your
-    class that has no arguments; this is required by JUnit. As the first statement in this
-    constructor, add a call to the base class' constructor. Each base test case class has its
-    own constructor signature. Refer to the class documentation in the documentation for
-    {@link android.test} for more information.
-</p>
-<p>
-    To control your test environment, you will want to override the <code>setUp()</code> and
-    <code>tearDown()</code> methods:
-</p>
-<ul>
-    <li>
-        <code>setUp()</code>: This method is invoked before any of the test methods in the class.
-        Use it to set up the environment for the test (the test fixture. You can use
-        <code>setUp()</code> to instantiate a new Intent with the action <code>ACTION_MAIN</code>.
-        You can then use this intent to start the Activity under test.
-    </li>
-    <li>
-        <code>tearDown()</code>: This method is invoked after all the test methods in the class. Use
-        it to do garbage collection and to reset the test fixture.
-    </li>
-</ul>
-<p>
-    Another useful convention is to add the method <code>testPreconditions()</code> to your test
-    class. Use this method to test that the application under test is initialized correctly. If this
-    test fails, you know that the initial conditions were in error. When this happens, further
-    test results are suspect, regardless of whether or not the tests succeeded.
-</p>
-<p>
-    The Resources tab contains an
-    <a href="{@docRoot}tools/testing/activity_test.html">Activity Testing</a>
-    tutorial with more information about creating test classes and methods.
-</p>
-<h2 id="RunTestEclipse">Running Tests</h2>
-    <div class="sidebox-wrapper">
-        <div class="sidebox">
-            <h2>Running tests from the command line</h2>
-                <p>
-                    If you've created your tests in Eclipse, you can still run your tests and test
-                    suites by using command-line tools included with the Android SDK. You may want
-                    to do this, for example, if you have a large number of tests to run, if you
-                    have a large test case, or if you want a fine level of control over which
-                    tests are run at a particular time.
-                </p>
-                <p>
-                    To run tests created in Eclipse with ADT with command-line tools, you must first
-                    install additional files into the test project using the <code>android</code>
-                    tool's "create test-project" option. To see how to do this, read
-                   <a href="{@docRoot}tools/testing/testing_otheride.html#CreateProject">
-                    Testing in Other IDEs</a>.
-                </p>
-        </div>
-    </div>
-<p>
-    When you run a test package in Eclipse with ADT, the output appears in the Eclipse JUnit view.
-    You can run the entire test package or one test case class. To do run tests, Eclipse runs the
-    <code>adb</code> command for running a test package, and displays the output, so there is no
-    difference between running tests inside Eclipse and running them from the command line.
-</p>
-<p>
-    As with any other package, to run a test package in Eclipse with ADT you must either attach a
-    device to your computer or use the Android emulator. If you use the emulator, you must have an
-    Android Virtual Device (AVD) that uses the same target as the test package.
-</p>
-<p>
-    To run a test in Eclipse, you have two choices:</p>
-<ul>
-    <li>
-        Run a test just as you run an application, by selecting
-        <strong>Run As... &gt; Android JUnit Test</strong> from the project's context menu or
-        from the main menu's <strong>Run</strong> item.
-    </li>
-    <li>
-        Create an Eclipse run configuration for your test project. This is useful if you want
-        multiple test suites, each consisting of selected tests from the project. To run
-        a test suite, you run the test configuration.
-        <p>
-            Creating and running test configurations is described in the next section.
-        </p>
-    </li>
-</ul>
-<p>
-    To create and run a test suite using a run configuration:
-</p>
-<ol>
-    <li>
-        In the Package Explorer, select the test project, then from the main menu, select
-        <strong>Run &gt; Run Configurations...</strong>. The Run Configurations dialog appears.
-    </li>
-    <li>
-        In the left-hand pane, find the Android JUnit Test entry. In the right-hand pane, click the
-        Test tab. The Name: text box shows the name of your project. The Test class: dropdown box
-        shows one of the test classes in your project.
-    </li>
-    <li>
-        To run one test class, click  Run a single test, then enter your project name in the
-        Project: text box and the class name in the Test class: text box.
-        <p>
-            To run all the test classes, click Run all tests in the selected project or package,
-            then enter the project or package name in the text box.
-        </p>
-    </li>
-    <li>
-        Now click the Target tab.
-        <ul>
-            <li>
-                Optional: If you are using the emulator, click Automatic, then in the Android
-                Virtual Device (AVD) selection table, select an existing AVD.
-            </li>
-            <li>
-                In the Emulator Launch Parameters pane, set the Android emulator flags you want to
-                use. These are documented in the topic
-                <a href="{@docRoot}tools/help/emulator.html#startup-options">
-                Android Emulator</a>.
-            </li>
-        </ul>
-    </li>
-    <li>
-        Click the Common tab. In the Save As pane, click Local to save this run configuration
-        locally, or click Shared to save it to another project.
-    </li>
-    <li>
-        Optional: Add the configuration to the Run toolbar and the <strong>Favorites</strong>
-        menu: in the Display in Favorites pane click the checkbox next to Run.
-    </li>
-    <li>
-        Optional: To add this configuration to the <strong>Debug</strong> menu and toolbar, click
-        the checkbox next to Debug.
-    </li>
-    <li>
-        To save your settings, click Close.<br/>
-        <p class="note"><strong>Note:</strong>
-            Although you can run the test immediately by clicking Run, you should save the test
-            first and then run it by selecting it from the Eclipse standard toolbar.
-        </p>
-    </li>
-    <li>
-        On the Eclipse standard toolbar, click the down arrow next to the green Run arrow. This
-        displays a menu of saved Run and Debug configurations.
-    </li>
-    <li>
-        Select the test run configuration you just created. The test starts.
-    </li>
-</ol>
-<p>
-    The progress of your test appears in the Console view as a series of messages. Each message is
-    preceded by a timestamp and the <code>.apk</code> filename to which it applies. For example,
-    this message appears when you run a test to the emulator, and the emulator is not yet started:
-</p>
-<div class="sidebox-wrapper">
-    <div class="sidebox">
-        <h2>Message Examples</h2>
-        <p>
-            The examples shown in this section come from the
-            <a href="{@docRoot}resources/samples/SpinnerTest/index.html">SpinnerTest</a>
-            sample test package, which tests the
-            <a href="{@docRoot}resources/samples/Spinner/index.html">Spinner</a>
-            sample application. This test package is also featured in the
-            <a href="{@docRoot}tools/testing/activity_test.html">Activity Testing</a>
-            tutorial.
-        </p>
-    </div>
-</div>
-<pre>
-    [<em>yyyy-mm-dd hh:mm:ss</em> - <em>testfile</em>] Waiting for HOME ('android.process.acore') to be launched...
-</pre>
-<p>
-    In the following description of these messages, <code><em>devicename</em></code> is the name of
-    the device or emulator you are using to run the test, and <code><em>port</em></code> is the
-    port number for the device. The name and port number are in the format used by the
-    <code><a href="{@docRoot}tools/help/adb.html#devicestatus">adb devices</a></code>
-    command. Also, <code><em>testfile</em></code> is the <code>.apk</code> filename of the test
-    package you are running, and <em>appfile</em> is the filename of the application under test.
-</p>
-<ul>
-    <li>
-        If you are using an emulator and you have not yet started it, then Eclipse
-        first starts the emulator. When this is complete, you see
-        the message:
-        <p>
-            <code>HOME is up on device '<em>devicename</em>-<em>port</em>'</code>
-        </p>
-    </li>
-    <li>
-        If you have not already installed your test package, then you see
-        the message:
-        <p>
-            <code>Uploading <em>testfile</em> onto device '<em>devicename</em>-<em>port</em>'
-            </code>
-        </p>
-        <p>
-            then the message <code>Installing <em>testfile</em></code>.
-        </p>
-        <p>
-            and finally the message <code>Success!</code>
-        </p>
-    </li>
-</ul>
-<p>
-    The following lines are an example of this message sequence:
-</p>
-<code>
-[2010-07-01 12:44:40 - MyTest] HOME is up on device 'emulator-5554'<br>
-[2010-07-01 12:44:40 - MyTest] Uploading MyTest.apk onto device 'emulator-5554'<br>
-[2010-07-01 12:44:40 - MyTest] Installing MyTest.apk...<br>
-[2010-07-01 12:44:49 - MyTest] Success!<br>
-</code>
-<br>
-<ul>
-    <li>
-        Next, if you have not yet installed the application under test to the device or
-        emulator, you see the message
-        <p>
-        <code>Project dependency found, installing: <em>appfile</em></code>
-        </p>
-        <p>
-            then the message <code>Uploading <em>appfile</em></code> onto device
-            '<em>devicename</em>-<em>port</em>'
-        </p>
-        <p>
-            then the message <code>Installing <em>appfile</em></code>
-        </p>
-        <p>
-            and finally the message <code>Success!</code>
-        </p>
-    </li>
-</ul>
-<p>
-    The following lines are an example of this message sequence:
-</p>
-<code>
-[2010-07-01 12:44:49 - MyTest] Project dependency found, installing: MyApp<br>
-[2010-07-01 12:44:49 - MyApp] Uploading MyApp.apk onto device 'emulator-5554'<br>
-[2010-07-01 12:44:49 - MyApp] Installing MyApp.apk...<br>
-[2010-07-01 12:44:54 - MyApp] Success!<br>
-</code>
-<br>
-<ul>
-    <li>
-        Next, you see the message
-        <code>Launching instrumentation <em>instrumentation_class</em> on device
-        <em>devicename</em>-<em>port</em></code>
-        <p>
-            <code>instrumentation_class</code> is the fully-qualified class name of the
-            instrumentation test runner you have specified (usually
-            {@link android.test.InstrumentationTestRunner}.
-        </p>
-    </li>
-    <li>
-        Next, as {@link android.test.InstrumentationTestRunner} builds a list of tests to run,
-        you see the message
-        <p>
-            <code>Collecting test information</code>
-        </p>
-        <p>
-            followed by
-        </p>
-        <p>
-            <code>Sending test information to Eclipse</code>
-        </p>
-    </li>
-    <li>
-        Finally, you see the message <code>Running tests</code>, which indicates that your tests
-        are running. At this point, you should start seeing the test results in the JUnit view.
-        When the tests are finished, you see the console message <code>Test run complete</code>.
-        This indicates that your tests are finished.
-    </li>
-</ul>
-<p>
-    The following lines are an example of this message sequence:
-</p>
-<code>
-[2010-01-01 12:45:02 - MyTest] Launching instrumentation android.test.InstrumentationTestRunner on device emulator-5554<br>
-[2010-01-01 12:45:02 - MyTest] Collecting test information<br>
-[2010-01-01 12:45:02 - MyTest] Sending test information to Eclipse<br>
-[2010-01-01 12:45:02 - MyTest] Running tests...<br>
-[2010-01-01 12:45:22 - MyTest] Test run complete<br>
-</code>
-<br>
-<p>
-    The test results appear in the JUnit view. This is divided into an upper summary pane,
-    and a lower stack trace pane.
-</p>
-<p>
-    The upper pane contains test information. In the pane's header, you see the following
-    information:
-</p>
-<ul>
-    <li>
-        Total time elapsed for the test package (labeled Finished after <em>x</em> seconds).
-    </li>
-    <li>
-        Number of runs (Runs:) - the number of tests in the entire test class.
-    </li>
-    <li>
-        Number of errors (Errors:) - the number of program errors and exceptions encountered
-        during the test run.
-    </li>
-    <li>
-        Number of failures (Failures:) - the number of test failures encountered during the test
-        run. This is the number of assertion failures. A test can fail even if the program does
-        not encounter an error.
-    </li>
-    <li>
-        A progress bar. The progress bar extends from left to right as the tests run. If all the
-        tests succeed, the bar remains green. If a test fails, the bar turns from green to red.
-    </li>
-</ul>
-<p>
-    The body of the upper pane contains the details of the test run. For each test case class
-    that was run, you see a line with the class name. To look at the results for the individual
-    test methods in that class, you click the left arrow to expand the line. You now see a
-    line for each test method in the class, and to its right the time it took to run.
-    If you double-click the method name, Eclipse opens the test class source in an editor view
-    pane and moves the focus to the first line of the test method.
-</p>
-<p>
-    The results of a successful test are shown in figure 1.
-</p>
-<a href="{@docRoot}images/testing/eclipse_test_results.png">
-    <img src="{@docRoot}images/testing/eclipse_test_results.png"
-         alt="Messages for a successful test" height="327px" id="TestResults"/>
-</a>
-<p class="img-caption">
-    <strong>Figure 1.</strong> Messages for a successful test.
-</p>
-<p>
-    The lower pane is for stack traces. If you highlight a failed test in the upper pane, the
-    lower pane contains a stack trace for the test. If a line corresponds to a point in your
-    test code, you can double-click it to display the code in an editor view pane, with the
-    line highlighted. For a successful test, the lower pane is empty.
-</p>
-<p>The results of a failed test are shown in figure 2.</p>
-<a href="{@docRoot}images/testing/eclipse_test_run_failure.png">
-    <img src="{@docRoot}images/testing/eclipse_test_run_failure.png"
-         alt="" height="372px" id="TestRun"/>
-</a>
-<p class="img-caption">
-    <strong>Figure 2.</strong> Messages for a test failure.
-</p>
diff --git a/docs/html/tools/testing/testing_otheride.jd b/docs/html/tools/testing/testing_otheride.jd
old mode 100644
new mode 100755
index a774087..4b2a6b1
--- a/docs/html/tools/testing/testing_otheride.jd
+++ b/docs/html/tools/testing/testing_otheride.jd
@@ -1,6 +1,5 @@
-page.title=Testing from Other IDEs
-parent.title=Testing
-parent.link=index.html
+page.title=Testing from the Command-Line
+
 @jd:body
 
 <div id="qv-wrapper">
@@ -8,27 +7,13 @@
         <h2>In this document</h2>
             <ol>
                 <li>
-                    <a href="#CreateTestProjectCommand">Working with Test Projects</a>
-                    <ol>
-                        <li>
-                            <a href="#CreateTestProject">Creating a test project</a>
-                        </li>
-                        <li>
-                            <a href="#UpdateTestProject">Updating a test project</a>
-                        </li>
-                    </ol>
-                </li>
-                <li>
-                    <a href="#CreateTestApp">Creating a Test Package</a>
-                </li>
-                <li>
                     <a href="#RunTestsCommand">Running Tests</a>
                     <ol>
                         <li>
-                            <a href="#RunTestsAnt">Quick build and run with Ant</a>
+                            <a href="#RunTestsGradle">Running unit tests with Gradle</a>
                         </li>
                         <li>
-                            <a href="#RunTestsDevice">Running tests on a device or emulator</a>
+                            <a href="#RunTestsDevice">Running tests with adb</a>
                         </li>
                     </ol>
                 </li>
@@ -47,290 +32,84 @@
         <h2>See Also</h2>
             <ol>
                 <li>
-                    <a href="{@docRoot}tools/testing/testing_android.html">
-                        Testing Fundamentals</a>
-                </li>
-                <li>
                     <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge</a>
                 </li>
             </ol>
     </div>
 </div>
 <p>
-    This document describes how to create and run tests directly from the command line.
-    You can use the techniques described here if you are developing in an IDE other than Eclipse
-    or if you prefer to work from the command line. This document assumes that you already know how
-    to create a Android application in your programming environment. Before you start this
-    document, you should read the topic
-    <a href="{@docRoot}tools/testing/testing_android.html">Testing Fundamentals</a>,
-    which provides an overview of Android testing.
-</p>
-<p>
-    If you are developing in Eclipse with ADT, you can set up and run your tests
-    directly in Eclipse. For more information, please read
-    <a href="{@docRoot}tools/testing/testing_eclipse.html">
-    Testing from Eclipse with ADT</a>.
-</p>
-<h2 id="CreateTestProjectCommand">Working with Test Projects</h2>
-<p>
-    You use the <code>android</code> tool to create test projects.
-    You also use <code>android</code> to convert existing test code into an Android test project,
-    or to add the <code>test</code> Ant target to an existing Android test project.
-    These operations are described in more detail in the section <a href="#UpdateTestProject">
-    Updating a test project</a>. The <code>test</code> target is described in
-    <a href="#RunTestsAnt">Quick build and run with Ant</a>.
-</p>
-<h3 id="CreateTestProject">Creating a test project</h3>
-<p>
-    To create a test project with the <code>android</code> tool, enter:
-</p>
-<pre>
-android create test-project -m &lt;main_path&gt; -n &lt;project_name&gt; -p &lt;test_path&gt;
-</pre>
-<p>
-    You must supply all the flags. The following table explains them in detail:
-</p>
-<table>
-    <tr>
-        <th>Flag</th>
-        <th>Value</th>
-        <th>Description</th>
-    </tr>
-    <tr>
-        <td><code>-m, --main</code></td>
-        <td>
-            Path to the project of the application under test, relative to the test package
-            directory.
-        </td>
-        <td>
-            For example, if the application under test is in <code>source/HelloAndroid</code>, and
-            you want to create the test project in <code>source/HelloAndroidTest</code>, then the
-            value of <code>--main</code> should be <code>../HelloAndroid</code>.
-        <p>
-            To learn more about choosing the location of test projects, please read
-            <a href="{@docRoot}tools/testing/testing_android.html#TestProjects">
-            Testing Fundamentals</a>.
-        </p>
-        </td>
-    </tr>
-    <tr>
-        <td><code>-n, --name</code></td>
-        <td>Name that you want to give the test project.</td>
-        <td>&nbsp;</td>
-    </tr>
-    <tr>
-        <td><code>-p, --path</code></td>
-        <td>Directory in which you want to create the new test project.</td>
-        <td>
-            The <code>android</code> tool creates the test project files and directory structure
-            in this directory. If the directory does not exist, <code>android</code> creates it.
-        </td>
-    </tr>
-</table>
-<p>
-    If the operation is successful, <code>android</code> lists to STDOUT the names of the files
-    and directories it has created.
-</p>
-<p>
-    This creates a new test project with the appropriate directories and build files. The directory
-    structure and build file contents are identical to those in a regular Android application
-    project. They are described in detail in the topic
-    <a href="{@docRoot}tools/projects/index.html">Managing Projects</a>.
-</p>
-<p>
-    The operation also creates an <code>AndroidManifest.xml</code> file with instrumentation
-    information. When you run the test, Android uses this information to load the application you
-    are testing and control it with instrumentation.
-</p>
-<p>
-    For example, suppose you create a project in the directory <code>~/source/HelloAndroid</code>,
-with the package name <code>com.example.helloandroid</code>,
-    and the activity name <code>HelloAndroid</code>. You can to create the test for this in
-    <code>~/source/HelloAndroidTest</code>. To do so, you enter:
-</p>
-<pre>
-$ cd ~/source
-$ android create test-project -m ../HelloAndroid -n HelloAndroidTest -p HelloAndroidTest
-</pre>
-<p>
-    This creates a directory called <code>~/src/HelloAndroidTest</code>. In the new directory you
-    see the file <code>AndroidManifest.xml</code>. This file contains the following
-    instrumentation-related elements and attributes:
-</p>
-<ul>
-    <li>
-        <code>&lt;application&gt;</code>: to contain the
-        <code>&lt;uses-library&gt;</code> element.
-    </li>
-    <li>
-        <code>&lt;uses-library android:name=&quot;android.test.runner&quot;</code>:
-        specifies this testing application uses the <code>android.test.runner</code> library.
-    </li>
-    <li>
-        <code>&lt;instrumentation&gt;</code>: contains attributes that control Android
-        instrumentation. The attributes are:
-        <ul>
-            <li>
-                <code>android:name=&quot;android.test.InstrumentationTestRunner&quot;</code>:
-                {@link android.test.InstrumentationTestRunner} runs test cases. It extends both
-                JUnit test case runner classes and Android instrumentation classes.
-            </li>
-            <li>
-                <code>android:targetPackage=&quot;com.example.helloandroid&quot;</code>: specifies
-                that the tests in HelloAndroidTest should be run against the application with the
-                <em>Android</em> package name <code>com.example.helloandroid</code>.
-            </li>
-            <li>
-                <code>android:label=&quot;Tests for .HelloAndroid&quot;</code>: specifies a
-                user-readable label for the instrumentation class. By default,
-                the <code>android</code> tool gives it the value &quot;Tests for &quot; plus
-                the name of the main Activity of the application under test.
-            </li>
-        </ul>
-    </li>
-</ul>
-<h3 id="UpdateTestProject">Updating a test project</h3>
-<p>
-    You use the <code>android</code> tool when you need to change the path to the
-    project of the application under test. If you are changing an existing test project created in
-    Eclipse with ADT so that you can also build and run it from the command line, you must use the
-    "create" operation. See the section <a href="#CreateTestProject">Creating a test project</a>.
-</p>
-<p class="note">
-    <strong>Note:</strong> If you change the Android package name of the application under test,
-    you must <em>manually</em> change the value of the <code>&lt;android:targetPackage&gt;</code>
-    attribute within the <code>AndroidManifest.xml</code> file of the test package.
-    Running <code>android update test-project</code> does not do this.
-</p>
-<p>
-  To update a test project with the <code>android</code> tool, enter:
-</p>
-<pre>android update test-project -m &lt;main_path&gt; -p &lt;test_path&gt;</pre>
-
-<table>
-    <tr>
-        <th>Flag</th>
-        <th>Value</th>
-        <th>Description</th>
-    </tr>
-    <tr>
-        <td><code>-m, --main</code></td>
-        <td>The path to the project of the application under test, relative to the test project</td>
-        <td>
-            For example, if the application under test is in <code>source/HelloAndroid</code>, and
-            the test project is in <code>source/HelloAndroidTest</code>, then the value for
-            <code>--main</code> is <code>../HelloAndroid</code>.
-        </td>
-    </tr>
-    <tr>
-        <td><code>-p, --path</code></td>
-        <td>The of the test project.</td>
-        <td>
-            For example, if the test project is in <code>source/HelloAndroidTest</code>, then the
-            value for <code>--path</code> is <code>HelloAndroidTest</code>.
-        </td>
-    </tr>
-</table>
-<p>
-    If the operation is successful, <code>android</code> lists to STDOUT the names of the files
-    and directories it has created.
-</p>
-<h2 id="CreateTestApp">Creating a Test Package</h2>
-<p>
-    Once you have created a test project, you populate it with a test package.
-    The application does not require an {@link android.app.Activity Activity},
-    although you can define one if you wish. Although your test package can
-    combine Activities, Android test class extensions, JUnit extensions, or
-    ordinary classes, you should extend one of the Android test classes or JUnit classes,
-    because these provide the best testing features.
-</p>
-<p>
-    If you run your tests with {@link android.test.InstrumentationTestRunner}
-    (or a related test runner), then it will run all the methods in each class. You can modify
-    this behavior by using the {@link junit.framework.TestSuite TestSuite} class.
+    This document describes how to create and run tests directly from the command line. This
+    document assumes that you already know how to create a Android application in your programming
+    environment.
 </p>
 
-<p>
-    To create a test package, start with one of Android's test classes in the Java package
-    {@link android.test android.test}. These extend the JUnit
-    {@link junit.framework.TestCase TestCase} class. With a few exceptions, the Android test
-    classes also provide instrumentation for testing.
-</p>
-<p>
-    For test classes that extend {@link junit.framework.TestCase TestCase}, you probably want to
-    override the <code>setUp()</code> and <code>tearDown()</code> methods:
-</p>
-<ul>
-    <li>
-        <code>setUp()</code>: This method is invoked before any of the test methods in the class.
-        Use it to set up the environment for the test. You can use <code>setUp()</code>
-        to instantiate a new <code>Intent</code> object with the action <code>ACTION_MAIN</code>.
-        You can then use this intent to start the Activity under test.
-        <p class="note">
-            <strong>Note:</strong> If you override this method, call
-            <code>super.setUp()</code> as the first statement in your code.
-        </p>
-    </li>
-    <li>
-        <code>tearDown()</code>: This method is invoked after all the test methods in the class. Use
-        it to do garbage collection and re-setting before moving on to the next set of tests.
-        <p class="note"><strong>Note:</strong> If you override this method, you must call
-        <code>super.tearDown()</code> as the <em>last</em> statement in your code.</p>
-    </li>
-</ul>
-<p>
-    Another useful convention is to add the method <code>testPreConditions()</code> to your test
-    class. Use this method to test that the application under test is initialized correctly. If this
-    test fails, you know that the initial conditions were in error. When this happens, further
-    test results are suspect, regardless of whether or not the tests succeeded.
-</p>
-<p>
-    To learn more about creating test packages, see the topic <a
-    href="{@docRoot}tools/testing/testing_android.html">Testing Fundamentals</a>,
-    which provides an overview of Android testing. If you prefer to follow a tutorial,
-    try the <a href="{@docRoot}tools/testing/activity_test.html">Activity Testing</a>
-    tutorial, which leads you through the creation of tests for an actual Android application.
-</p>
 <h2 id="RunTestsCommand">Running Tests</h2>
 <p>
-    You run tests from the command line, either with Ant or with an
+    You can run tests from the command-line, either with Gradle or with an
     <a href="{@docRoot}tools/help/adb.html">
     Android Debug Bridge (adb)</a> shell.
 </p>
-<h3 id="RunTestsAnt">Quick build and run with Ant</h3>
+<h3 id="RunTestsGradle">Running unit tests with Gradle</h3>
+
+<p>The <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin for Gradle</a>
+lets you run unit tests from your Gradle project via the command-line. For more information on
+how to build unit tests for your app, see
+<a href="{@docRoot}training/testing/unit-testing/index.html">Building Effective Unit Tests</a>.</p>
+
+<p>The table below summarizes how to run your unit tests with Gradle:</p>
+<table>
+    <tr>
+        <th>Unit Test Type</th>
+        <th>Command To Run</th>
+        <th>Test Result Location</th>
+    </tr>
+    <tr>
+        <td>Local unit test</td>
+        <td>Call the {@code test} task:
+<pre>
+./gradlew test
+</pre></td>
+        <td>
+HTML test result files:
+{@code &lt;path_to_your_project&gt;/app/build/reports/tests/} directory.
+<p>XML test result files:
+{@code &lt;path_to_your_project&gt;/app/build/test-results/} directory.
+</p></td>
+    </tr>
+    <tr>
+        <td>Instrumented unit test</td>
+        <td>Call the {@code connectedAndroidTest} (or {@code cAT}) task:
+<pre>
+./gradlew cAT
+</pre>
+        </td>
+        <td>
+HTML test result files:
+{@code &lt;path_to_your_project&gt;/app/build/outputs/reports/androidTests/connected/} directory.
+<p>XML test result files:
+{@code &lt;path_to_your_project&gt;/app/build/outputs/androidTest-results/connected/} directory.
+</p></td>
+    </tr>
+</table>
+
+<h3 id="RunTestsDevice">Running tests with ADB</h3>
 <p>
-    You can use Ant to run all the tests in your test project, using the target
-    <code>test</code>, which is created automatically when you create a test project with
-    the <code>android</code> tool.
-</p>
-<p>
-    This target re-builds your main project and test project if necessary, installs the test
-    application to the current AVD or device, and then runs all the test classes in the test
-    application. The results are directed to <code>STDOUT</code>.
-</p>
-<p>
-    You can update an existing test project to use this feature. To do this, use the
-    <code>android</code> tool with the <code>update test-project</code> option. This is described
-    in the section <a href="#UpdateTestProject">Updating a test project</a>.
-</p>
-<h3 id="RunTestsDevice">Running tests on a device or emulator</h3>
-<p>
-    When you run tests from the command line with
+    When you run tests from the command-line with
     <a href="{@docRoot}tools/help/adb.html">
     Android Debug Bridge (adb)</a>, you get more options for choosing the tests
     to run than with any other method. You can select individual test methods, filter tests
     according to their annotation, or specify testing options. Since the test run is controlled
-    entirely from a command line, you can customize your testing with shell scripts in various ways.
+    entirely from a command-line, you can customize your testing with shell scripts in various ways.
 </p>
 <p>
-    To run a test from the command line, you run <code>adb shell</code> to start a command-line
+    To run a test from the command-line, you run <code>adb shell</code> to start a command-line
     shell on your device or emulator, and then in the shell run the <code>am instrument</code>
     command. You control <code>am</code> and your tests with command-line flags.
 </p>
 <p>
     As a shortcut, you can start an <code>adb</code> shell, call <code>am instrument</code>, and
     specify command-line flags all on one input line. The shell opens on the device or emulator,
-    runs your tests, produces output, and then returns to the command line on your computer.
+    runs your tests, produces output, and then returns to the command-line on your computer.
 </p>
 <p>
     To run a test with <code>am instrument</code>:
@@ -343,7 +122,7 @@
         Install your test package and main application Android package files
         (<code>.apk</code> files) to your current Android device or emulator</li>
     <li>
-        At the command line, enter:
+        At the command-line, enter:
 <pre>
 $ adb shell am instrument -w &lt;test_package_name&gt;/&lt;runner_class&gt;
 </pre>
@@ -353,7 +132,9 @@
             runner class you are using. The Android package name is the value of the
             <code>package</code> attribute of the <code>manifest</code> element in the manifest file
             (<code>AndroidManifest.xml</code>) of your test package. The Android test runner
-            class is usually {@link android.test.InstrumentationTestRunner}.
+            class is usually
+<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
+{@code AndroidJUnitRunner}</a>.
         </p>
         <p>
             Your test results appear in <code>STDOUT</code>.
@@ -371,7 +152,7 @@
     The general syntax of the <code>am instrument</code> command is:
 </p>
 <pre>
-    am instrument [flags] &lt;test_package&gt;/&lt;runner_class&gt;
+am instrument [flags] &lt;test_package&gt;/&lt;runner_class&gt;
 </pre>
 <p>
     The main input parameters to <code>am instrument</code> are described in the following table:
@@ -408,10 +189,13 @@
             The class name of the instrumented test runner you are using.
         </td>
         <td>
-            This is usually {@link android.test.InstrumentationTestRunner}.
+            This is usually
+<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
+{@code AndroidJUnitRunner}</a>.
         </td>
     </tr>
 </table>
+
 <p>
     The flags for <code>am instrument</code> are described in the following table:
 </p>
@@ -467,12 +251,11 @@
             <code>am instrument</code> tool passes these to the specified instrumentation class
             via its <code>onCreate()</code> method. You can specify multiple occurrences of
             <code>-e &lt;test_options&gt;</code>. The keys and values are described in the
-            section <a href="#AMOptionsSyntax">am instrument options</a>.
-            <p>
-                The only instrumentation class that uses these key-value pairs is
-                {@link android.test.InstrumentationTestRunner} (or a subclass). Using them with
-                any other class has no effect.
-            </p>
+            section <a href="#AMOptionsSyntax">am instrument options</a>. You can only use these
+            key-value pairs with
+<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
+{@code AndroidJUnitRunner}</a> or with {@link android.test.InstrumentationTestRunner} and its
+subclasses. Using them with any other class has no effect.
         </td>
     </tr>
 </table>
@@ -480,25 +263,24 @@
 <h3 id="AMOptionsSyntax">am instrument options</h3>
 <p>
     The <code>am instrument</code> tool passes testing options to
-    <code>InstrumentationTestRunner</code> or a subclass in the form of key-value pairs,
-    using the <code>-e</code> flag, with this syntax:
+<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
+{@code AndroidJUnitRunner}</a> or {@link android.test.InstrumentationTestRunner} in the form of
+key-value pairs, using the <code>-e</code> flag, with this syntax:
 </p>
 <pre>
-    -e &lt;key&gt; &lt;value&gt;
+-e &lt;key&gt; &lt;value&gt;
 </pre>
 <p>
     Some keys accept multiple values. You specify multiple values in a comma-separated list.
-    For example, this invocation of <code>InstrumentationTestRunner</code> provides multiple
-    values for the <code>package</code> key:
+    For example, this invocation of
+<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
+{@code AndroidJUnitRunner}</a> provides multiple values for the <code>package</code> key:
 </p>
 <pre>
 $ adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \
-&gt; com.android.test/android.test.InstrumentationTestRunner
+&gt; com.android.test/android.support.test.runner.AndroidJUnitRunner
 </pre>
-<p>
-    The following table describes the key-value pairs and their result. Please review the
-    <strong>Usage Notes</strong> following the table.
-</p>
+<p>The following table lists the key-value pairs you can use with your test runner.</p>
 <table>
     <tr>
         <th>Key</th>
@@ -556,8 +338,8 @@
             [<code>small</code> | <code>medium</code> | <code>large</code>]
         </td>
         <td>
-            Runs a test method annotated by size. The  annotations are <code>@SmallTest</code>,
-            <code>@MediumTest</code>, and <code>@LargeTest</code>.
+            Runs a test method annotated by size. The annotations are <code>&#64;SmallTest</code>,
+            <code>&#64;MediumTest</code>, and <code>&#64;LargeTest</code>.
         </td>
     </tr>
     <tr>
@@ -591,8 +373,9 @@
         <td><code>true</code></td>
         <td>
             Runs an EMMA code coverage analysis and writes the output to
-            <code>/data//coverage.ec</code> on the device. To override the file location, use the
-            <code>coverageFile</code> key that is described in the following entry.
+            <code>/data/&lt;app_package&gt;/coverage.ec</code> on the device. To override the
+            file location, use the <code>coverageFile</code> key that is described in the
+            following entry.
             <p class="note">
                 <strong>Note:</strong> This option requires an EMMA-instrumented build of the test
                 application, which you can generate with the <code>coverage</code> target.
@@ -634,24 +417,16 @@
         The test package has the Android package name <code>com.android.demo.app.tests</code>
     </li>
     <li>
-        There are three test classes:
+        Two instrumented test classes:
         <ul>
-            <li>
-                <code>UnitTests</code>, which contains the methods
-                <code>testPermissions</code> and <code>testSaveState</code>.
-            </li>
-            <li>
-                <code>FunctionTests</code>, which contains the methods
-                <code>testCamera</code>, <code>testXVGA</code>, and <code>testHardKeyboard</code>.
-            </li>
-            <li>
-                <code>IntegrationTests</code>,
-                which contains the method <code>testActivityProvider</code>.
-            </li>
+            <li>{@code Foo1} which contains the test method {@code bar1}, and</li>
+            <li>{@code Foo2} which contains test methods {@code bar2} and {@code bar3}</li>
         </ul>
     </li>
     <li>
-        The test runner is {@link android.test.InstrumentationTestRunner}.
+        The test runner is
+<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
+{@code AndroidJUnitRunner}</a>.
     </li>
 </ul>
 <h4>Running the entire test package</h4>
@@ -659,7 +434,7 @@
     To run all of the test classes in the test package, enter:
 </p>
 <pre>
-$ adb shell am instrument -w com.android.demo.app.tests/android.test.InstrumentationTestRunner
+$ adb shell am instrument -w com.android.demo.app.tests/android.support.test.runner.AndroidJUnitRunner
 </pre>
 <h4>Running all tests in a test case class</h4>
 <p>
@@ -667,8 +442,8 @@
 </p>
 <pre>
 $ adb shell am instrument -w  \
-&gt; -e class com.android.demo.app.tests.UnitTests \
-&gt; com.android.demo.app.tests/android.test.InstrumentationTestRunner
+&gt; -e class com.android.demo.app.tests.Foo \
+&gt; com.android.demo.app.tests/android.support.test.runner.AndroidJUnitRunner
 </pre>
 <p>
   <code>am instrument</code> gets the value of the <code>-e</code> flag, detects the
@@ -676,15 +451,11 @@
 </p>
 <h4>Selecting a subset of tests</h4>
 <p>
-    To run all of the tests in <code>UnitTests</code>, and the <code>testCamera</code> method in
-    <code>FunctionTests</code>, enter:
+    To run all of the tests in <code>Foo1</code>, and the <code>bar3</code> method in
+    <code>Foo2</code>, enter:
 </p>
 <pre>
 $ adb shell am instrument -w \
-&gt; -e class com.android.demo.app.tests.UnitTests,com.android.demo.app.tests.FunctionTests#testCamera \
-&gt; com.android.demo.app.tests/android.test.InstrumentationTestRunner
+&gt; -e class com.android.demo.app.tests.Foo1,com.android.demo.app.tests.Foo2#bar3 \
+&gt; com.android.demo.app.tests/android.support.test.runner.AndroidJUnitRunner
 </pre>
-<p>
-    You can find more examples of the command in the documentation for
-    {@link android.test.InstrumentationTestRunner}.
-</p>
diff --git a/docs/html/tools/testing/testing_ui.jd b/docs/html/tools/testing/testing_ui.jd
deleted file mode 100644
index 3f4bf7a..0000000
--- a/docs/html/tools/testing/testing_ui.jd
+++ /dev/null
@@ -1,356 +0,0 @@
-page.title=UI Testing
-parent.title=Testing
-parent.link=index.html
-@jd:body
-
-<div id="qv-wrapper">
-  <div id="qv">
-     <h2>In this document</h2>
-  <ol>
-     <li><a href="#overview">Overview</a></li>
-        <ul>
-        <li><a href="#workflow">Workflow</a></li>
-        </ul>
-     <li><a href="#uianalysis">Analyzing Your UI</a></li>
-     <li><a href="#prepare">Preparing to Test</a>
-        <ul>
-        <LI><a href="#loading">Load the App</a></LI>
-        <LI><a href="#identifyUI">Identify UI Components</a></LI>
-        <LI><a href="#accessibility">Ensure Accessibility</a></LI>
-        <LI><a href="#configure">Configure Development Environment</a></LI>
-        </ul>
-     </li>
-     <li><a href="#creating">Creating Tests</a>
-       <ul>
-       <LI><a href="#classes">uiautomator API</a></LI>
-        <li><a href="#sample">Sample Test Case</a>
-       </ul>
-     </li>
-     <li><a href="#builddeploy">Building and Deploying Tests</a></li>
-     <li><a href="#running">Running Tests</a></li>
-     <li><a href="#bestpractices">Best Practices</a></li>
-  </ol>
-     <h2>Key classes</h2>
-    <ol>
-      <li><a href="{@docRoot}tools/help/uiautomator/IAutomationSupport.html">IAutomationSupport</a></li>
-      <li><a href="{@docRoot}tools/help/uiautomator/UiAutomatorTestCase.html">UiAutomatorTestCase</a></li>
-      <li><a href="{@docRoot}tools/help/uiautomator/UiCollection.html">UiCollection</a></li>
-      <li><a href="{@docRoot}tools/help/uiautomator/UiDevice.html">UiDevice</a></li>
-      <li><a href="{@docRoot}tools/help/uiautomator/UiObject.html">UiObject</a></li>
-      <li><a href="{@docRoot}tools/help/uiautomator/UiScrollable.html">UiScrollable</a></li>
-      <li><a href="{@docRoot}tools/help/uiautomator/UiSelector.html">UiSelector</a></li>
-    </ol>
-    <h2>See Also</h2>
-      <ol>
-        <li>
-            <a href="{@docRoot}tools/help/uiautomator/index.html">uiautomator (reference)</a>
-        </li>
-      </ol>
-  </div>
-</div>
-
-<p>
-In addition to unit testing the individual components that make up your Android application (such as activities, services, and content providers), it is also important that you test the behavior of your application’s user interface (UI) when it is running on a device. UI testing ensures that your application returns the correct UI output in response to a sequence of user actions on a device, such as entering keyboard input or pressing toolbars, menus, dialogs, images, and other UI controls.
-</p>
-<p>
-Functional or black-box UI testing does not require testers to know the internal implementation details of the app, only its expected output when a user performs a specific action or enters a specific input. This approach allows for better separation of development and testing roles in your organization.
-</p>
-<p>One common approach to UI testing is to run tests manually and verify that the app is behaving as expected. However, this approach can be time-consuming, tedious, and error-prone. A more efficient and reliable approach is to automate the UI testing with a software testing framework. Automated testing involves creating programs to perform testing tasks (test cases) to cover specific usage scenarios, and then using the testing framework to run the test cases automatically and in a repeatable manner.</p>
-
-<h2 id="overview">Overview</h2>
-<p>The Android SDK provides the following tools to support automated, functional UI testing on your application:
-<ul>
-<LI>{@code uiautomatorviewer} - A GUI tool to scan and analyze the UI components of an Android application.</LI>
-<LI>{@code uiautomator} - A Java library containing APIs to create customized functional UI tests, and an execution engine to automate and run the tests.</LI>
-</ul></p>
-
-<p>To use these tools, you must have the following versions of the Android development tools installed:
-<ul>
-<LI>Android SDK Tools, Revision 21 or higher</LI>
-<LI>Android SDK Platform, API 16 or higher</LI>
-</ul>
-</p>
-
-<h3 id="workflow">Workflow for the the uiautomator testing framework</h3>
-<p>Here's a short overview of the steps required to automate UI testing:
-<ol>
-<LI>Prepare to test by installing the app on a test device, analyzing the app’s UI components, and ensuring that your application is accessible by the test automation framework.</LI>
-<li>Create automated tests to simulate specific user interactions on your application.</li>
-<li>Compile your test cases into a JAR file and install it on your test device along with your app.</li>
-<li>Run the tests and view the test results.</li>
-<li>Correct any bugs or defects discovered in testing.</li>
-</ol>
-</p>
-
-<h2 id="uianalysis">Analyzing Your Application's UI</h2>
-<p>Before you start writing your test cases, it's helpful to familiarize yourself with the UI components (including the views and controls) of the targeted application. You can use the {@code uiautomatorviewer} tool to take a snapshot of the foreground UI screen on any Android device that is connected to your development machine.  The {@code uiautomatorviewer} tool provides a convenient visual interface to inspect the layout hierarchy and view the properties of the individual UI components that are displayed on the test device.  Using this information, you can later create {@code uiautomator} tests with selector objects that target specific UI components to test.</p>
-
-<a href="{@docRoot}images/testing/UIAutomatorViewer.png">
-    <img src="{@docRoot}images/testing/UIAutomatorViewer.png"
-         alt="User interface of uiautomatorviewer tool" height="327px" id="figure1"/>
-</a>
-<p class="img-caption">
-    <strong>Figure 1.</strong> The {@code uiautomatorviewer} showing the captured interface of a test device.
-</p>
-
-<p>To analyze the UI components of the application that you want to test:</p>
-<ol>
-<li>Connect your Android device to your development machine.</li>
-<li>Open a terminal window and navigate to {@code <android-sdk>/tools/}.</li>
-<LI>Run the tool with this command:<pre>$ uiautomatorviewer</pre></LI>
-<li><p>To capture a screen for analysis, click the <strong>Device Screenshot</strong> button in the GUI of the {@code uiautomatorviewer} tool.</p>
-<p class="note"><strong>Note: </strong>If you have more than one device connected, specify the device for screen capture by setting the {@code ANDROID_SERIAL} environment variable:  
-   <ol type="a">
-   <li>Find the serial numbers for your connected devices by running this command:<pre>$ adb devices</pre> </li>
-   <li>Set the {@code ANDROID_SERIAL}  environment variable to select the device to test:
-      <ul>
-      <li>In Windows: <pre>set ANDROID_SERIAL=&lt;device serial number&gt;</pre></li>
-      <li>In UNIX: <pre>export ANDROID_SERIAL=&lt;device serial number&gt;</pre></li>
-      </ul>
-   </li>
-   </ol>
-If you are connected to only a single device, you do not need to set the ANDROID_SERIAL environment variable.</p>
-</li>
-<li>View the UI properties for your application:
-  <ul>
-  <LI>Hover over the snapshot in the left-hand panel to see the UI components identified by the {@code uiautomatorviewer} tool. You can view the component’s properties listed in the lower right-hand panel, and the layout hierarchy in the upper right-hand panel.</LI>
-  <li>Optionally, click on the <strong>Toggle NAF Nodes</strong> button to see UI components that are not accessible to the {@code uiautomator} testing framework. Only limited information may be available for these components.</li>
-  </ul>
-</li>
-</ol>
-
-<h2 id="prepare">Preparing to Test</h2>
-<p>Before using the {@code uiautomator} testing framework, complete these pre-flight tasks:
-</p>
-<h3 id="loading">Load the application to a device</h3>
-<p>If you are reading this document, chances are that the Android application that you want to test has not been published yet. If you have a copy of the APK file, you can install the APK onto a test device by using the {@code adb} tool. To learn how to install an APK file using the {@code adb} tool, see the <a href="{@docRoot}tools/help/adb.html#move">{@code adb}</a> documentation. </p>
-
-<h3 id="identifyUI">Identify the application’s UI components</h3>
-<p>Before writing your {@code uiautomator} tests, first identify the UI components in the application that you want to test. Typically, good candidates for testing are UI components that are visible and that users can interact with. The UI components should also have visible text labels, <a href="{@docRoot}reference/android/view/View.html#attr_android:contentDescription">{@code android:contentDescription}</a> values, or both. 
-
-<p>You can inspect the visible screen objects in an application conveniently by using the {@code uiautomatorviewer} tool. For more information about how to analyze an application screen with this tool, see the section <a href="#uianalaysis">Analyzing Your Application’s UI</a>.  For more information about the common types of UI components provided by Android, see <a href="{@docRoot}guide/topics/ui/index.html">User Interface</a>.</p>
-
-<h3 id="accessibility">Ensure that the application is accessible</h3>
-<p>This step is required because the {@code uiautomator} tool depends on the accessibility features of the Android framework to execute your functional UI tests. You should include these minimum optimizations to support the {@code uiautomator} tool:
-<ul>
-<LI>Use the <a href="{@docRoot}reference/android/view/View.html#attr_android:contentDescription">{@code android:contentDescription}</a> attribute to label the {@link android.widget.ImageButton}, {@link android.widget.ImageView}, {@link android.widget.CheckBox} and other user interface controls.</LI>
-<li>Provide an <a href="{@docRoot}reference/android/widget/TextView.html#attr_android:hint">{@code android:hint}</a>  attribute <em>instead</em> of a content description for {@link android.widget.EditText} fields</li>
-<li>Associate an <a href="{@docRoot}reference/android/widget/TextView.html#attr_android:hint">{@code android:hint}</a> attribute with any graphical icons used by controls that provide feedback to the user (for example, status or state information).</li>
-<li>Make sure that all the user interface elements are accessible with a directional controller, such as a trackball or D-pad.</li>
-<li>Use the {@code uiautomatorviewer} tool to ensure that the UI component is accessible to the testing framework. You can also test the application by turning on accessibility services like TalkBack and Explore by Touch, and try using your application using only directional controls. </li>
-</ul>
-</p>
-
-<p>For more information about implementing and testing accessibility, see <a href="{@docRoot}guide/topics/ui/accessibility/apps.html">Making Applications Accessible</a>.</p>
-
-<p class="note"><strong>Note: </strong>To identify the non-accessible components in the UI, click on the <strong>Toggle NAF Nodes</strong> option in the {@code uiautomatorviewer} tool.</p>
-
-<p>Generally, Android application developers get accessibility support for free, courtesy of the {@link android.view.View} and {@link android.view.ViewGroup} classes. However, some applications use custom view components to provide a richer user experience. Such custom components won't get the accessibility support that is provided by the standard Android UI components. If this applies to your application, ensure that the application developer exposes the custom drawn UI components to Android accessibility services, by implementing the {@link android.view.accessibility.AccessibilityNodeProvider} class. For more information about making custom view components accessible, see <a href="{@docRoot}guide/topics/ui/accessibility/apps.html#custom-views">Making Applications Accessible</a>.</p>
-
-<h3 id="configure">Configure your development environment</h3>
-<p>If you're developing in Eclipse, the Android SDK provides additional tools that help you write test cases using {@code uiautomator} and buiild your JAR file. In order to set up Eclipse to assist you, you need to create a project that includes the {@code uiautomator} client library, along with the Android SDK library. To configure Eclipse:</p>
-<ol>
-<li>Create a new Java project in Eclipse, and give your project a name that is relevant to the tests you’re about to create (for example, "MyAppNameTests"). In the project, you will create the test cases that are specific to the application that you want to test.</li>
-<li>From the <strong>Project Explorer</strong>, right-click on the new project that you created, then select <strong>Properties > Java Build Path</strong>, and do the following:
-  <ol type="a">
-  <LI>Click <strong>Add Library > JUnit</strong> then select <strong>JUnit3</strong> to add JUnit support.</LI>
-  <li>Click <strong>Add External JARs...</strong> and navigate to the SDK directory. Under the platforms directory, select the latest SDK version and add both the {@code uiautomator.jar} and {@code android.jar} files.</li>
-  </ol>
-</li>
-</ol>
-<p>If you did not configure Eclipse as your development environment, make sure that the {@code uiautomator.jar} and {@code android.jar} files from the {@code <android-sdk>/platforms/<sdk>} directory are in your Java class path.</p>
-<p>Once you have completed these prerequisite tasks, you're almost ready to start creating your {@code uiautomator} tests. </li>
-
-<h2 id="creating">Creating uiautomator Tests</h2>
-<p>To build a test that runs in the {@code uiautomator} framework, create a test case that extends the <a href="{@docRoot}tools/help/uiautomator/UiAutomatorTestCase.html">{@code UiAutomatorTestCase}</a> class. In Eclipse, the test case file goes under the {@code src} directory in your project.  Later, you will build the test case as a JAR file, then copy this file to the test device. The test JAR file is not an APK file and resides separately from the application that you want to test on the device.</p>
-
-<p>Because the <a href="{@docRoot}tools/help/uiautomator/UiAutomatorTestCase.html">{@code UiAutomatorTestCase}</a> class extends {@code junit.framework.TestCase}, you can use the JUnit {@code Assert} class to test that UI components in the app return the expected results. To learn more about JUnit, you can read the documentation on the <a href="http://www.junit.org/">junit.org</a> home page.</p>
-
-<p>The first thing your test case should do is access the device that contains the target app. It’s also good practice to start the test from the Home screen of the device. From the Home screen (or some other starting location you’ve chosen in the target app), you can use the classes provided by the {@code uiautomator} API to simulate user actions and to test specific UI components. For an example of how to put together a {@code uiautomator} test case, see the <a href="#sample">sample test case</a>.</p>
-
-<h3 id="classes">uiautomator API</h3>
-<p>The {@code uiautomator} API is bundled in the {@code uiautomator.jar} file under the {@code <android-sdk>/platforms/} directory.  The API includes these key classes that allow you to capture and manipulate UI components on the target app:</p>
-<dl>
-<DT><a href="{@docRoot}tools/help/uiautomator/UiDevice.html">{@code UiDevice}</a></DT>
-<dd><p>Represents the device state.  In your tests, you can call methods on the <a href="{@docRoot}tools/help/uiautomator/UiDevice.html">{@code UiDevice}</a> instance to check for the state of various properties, such as current orientation or display size. Your tests also can use the <a href="{@docRoot}tools/help/uiautomator/UiDevice.html">{@code UiDevice}</a> instance to perform device level actions, such as forcing the device into a specific rotation, pressing the d-pad hardware button, or pressing the Home and Menu buttons.</p>
-<p>To get an instance of <a href="{@docRoot}tools/help/uiautomator/UiDevice.html">{@code UiDevice}</a> and simulate a Home button press:
-<pre>
-getUiDevice().pressHome();
-</pre></p></dd>
-
-<dt><a href="{@docRoot}tools/help/uiautomator/UiSelector.html">{@code UiSelector}</a></dt>
-<dd>Represents a search criteria to query and get a handle on specific elements in the currently displayed UI. 	
-If more than one matching element is found, the first matching element in the layout hierarchy is returned as the target {@code UiObject}.  When constructing a <a href="{@docRoot}tools/help/uiautomator/UiSelector.html">{@code UiSelector}</a>, you can chain together multiple properties to refine your search. If no matching UI element is found, a <a href="{@docRoot}tools/help/uiautomator/UiAutomatorObjectNotFoundException.html">{@code UiAutomatorObjectNotFoundException}</a> is thrown. You can use the <a href="{@docRoot}tools/help/uiautomator/UiSelector.html#childSelector(com.android.uiautomator.core.UiSelector)">{@code childSelector()}</a> method to nest multiple <a href="{@docRoot}tools/help/uiautomator/UiSelector.html">{@code UiSelector}</a> instances. For example, the following code example shows how to specify a search to find the first {@link android.widget.ListView} in the currently displayed UI, then search within that {@link android.widget.ListView} to find a UI element with the text property {@code Apps}.
-<pre>
-UiObject appItem = new UiObject(new UiSelector()
-   .className("android.widget.ListView").instance(1)
-   .childSelector(new UiSelector().text("Apps")));
-</pre>
-</dd>
-
-<dt><a href="{@docRoot}tools/help/uiautomator/UiObject.html">{@code UiObject}</a></dt>
-<dd>Represents a UI element. To create a <a href="{@docRoot}tools/help/uiautomator/UiObject.html">{@code UiObject}</a> instance, use a {@code UiSelector} that describes how to search for, or select, the UI element.
-<p>The following code example shows how to construct <a href="{@docRoot}tools/help/uiautomator/UiObject.html">{@code UiObject}</a> instances that represent a <strong>Cancel</strong> button and a <strong>OK</strong> button in your application.</p>
-<pre>
-UiObject cancelButton = new UiObject(new UiSelector().text("Cancel"));
-UiObject okButton = new UiObject(new UiSelector().text("OK"));
-</pre>
-<p>You can reuse the <a href="{@docRoot}tools/help/uiautomator/UiObject.html">{@code UiObject}</a> instances that you have created in other parts of your app testing, as needed.  Note that the {@code uiautomator} test framework searches the current display for a match every time your test uses a <a href="{@docRoot}tools/help/uiautomator/UiObject.html">{@code UiObject}</a> instance to click on a UI element or query a property.</p>
-<p>In the following code example, the {@code uiautomator} test framework searches for a UI element with the text property {@code OK}. If a match is found and if the element is enabled, the framework simulates a user click action on the element.</p>
-<pre>
-if(okButton.exists() && okButton.isEnabled()) 
-{
-  okButton.click();
-}
-</pre>
-<p>You can also restrict the search to find only elements of a specific class. For example, to find matches of the {@link android.widget.Button} class:</p>
-<pre>
-UiObject cancelButton = new UiObject(new UiSelector().text("Cancel")
-   .className("android.widget.Button"));
-UiObject okButton = new UiObject(new UiSelector().text("OK")
-   .className("android.widget.Button"));
-</pre>
-</dd>
-
-<dt><a href="{@docRoot}tools/help/uiautomator/UiCollection.html">{@code UiCollection}</a></dt>
-<dd>Represents a collection of items, for example songs in a music album or a list of emails in an inbox. Similar to a <a href="{@docRoot}tools/help/uiautomator/UiObject.html">{@code UiObject}</a>, you construct a <a href="{@docRoot}tools/help/uiautomator/UiCollection.html">{@code UiCollection}</a> instance by specifying a <a href="{@docRoot}tools/help/uiautomator/UiSelector.html">{@code UiSelector}</a>. The <a href="{@docRoot}tools/help/uiautomator/UiSelector.html">{@code UiSelector}</a> for a <a href="{@docRoot}tools/help/uiautomator/UiCollection.html">{@code UiCollection}</a> should search for a UI element that is a container or wrapper of other child UI elements (such as  a layout view that contains child UI elements).  For example, the following code snippet  shows how to construct a <a href="{@docRoot}tools/help/uiautomator/UiCollection.html">{@code UiCollection}</a> to represent a video album that is displayed within a {@link android.widget.FrameLayout}:
-<pre>
-UiCollection videos = new UiCollection(new UiSelector()
-   .className("android.widget.FrameLayout"));
-</pre>
-<p>If the videos are listed within a {@link android.widget.LinearLayout} view, and you want to to retrieve the number of videos in this collection:</p>
-<pre>
-int count = videos.getChildCount(new UiSelector()
-   .className("android.widget.LinearLayout"));
-</pre>
-<p>If you want to find a specific video that is labeled with the text element {@code Cute Baby Laughing} from the collection and simulate a user-click on the video:</p>
-<pre>
-UiObject video = videos.getChildByText(new UiSelector()
-   .className("android.widget.LinearLayout"), "Cute Baby Laughing");
-video.click();
-</pre>
-<p>Similarly, you can simulate other user actions on the UI object.  For example, if you want 
-to simulate selecting a checkbox that is associated with the video:</p>
-<pre>
-UiObject checkBox = video.getChild(new UiSelector()
-   .className("android.widget.Checkbox"));
-if(!checkBox.isSelected()) checkbox.click();
-</pre>
-</dd>
-
-<dt><a href="{@docRoot}tools/help/uiautomator/UiScrollable.html">{@code UiScrollable}</a></dt>
-<dd>Represents a scrollable collection of UI elements.  You can use the <a href="{@docRoot}tools/help/uiautomator/UiScrollable.html">{@code UiScrollable}</a> class to simulate vertical or horizontal scrolling across a display. This technique is helpful when a UI element is positioned off-screen and you need to scroll to bring it into view.
-<p>For example, the following code shows how to simulate scrolling down the Settings menu and clicking on an <strong>About tablet</strong> option:</p>
-<pre>
-UiScrollable settingsItem = new UiScrollable(new UiSelector()
-   .className("android.widget.ListView"));
-UiObject about = settingsItem.getChildByText(new UiSelector()
-   .className("android.widget.LinearLayout"), "About  tablet");
-about.click()
-</pre>
-</dd>
-</dl>
-<p>For more information about these APIs, see the <a href="{@docRoot}tools/help/uiautomator/index.html">{@code uiautomator}</a> reference.</p>
-
-<h3 id="sample">A sample uiautomator test case</h3>
-<p>The following code example shows a simple test case which simulates a user bringing up the Settings app in a stock Android device.  The test case mimics all the steps that a user would typically take to perform this task, including opening the Home screen, launching the <strong>All Apps</strong> screen, scrolling to the <strong>Settings</strong> app icon, and clicking on the icon to enter the Settings app.</p>
-<pre>
-package com.uia.example.my;
-
-// Import the uiautomator libraries
-import com.android.uiautomator.core.UiObject;
-import com.android.uiautomator.core.UiObjectNotFoundException;
-import com.android.uiautomator.core.UiScrollable;
-import com.android.uiautomator.core.UiSelector;
-import com.android.uiautomator.testrunner.UiAutomatorTestCase;
-
-public class LaunchSettings extends UiAutomatorTestCase {   
-
-   public void testDemo() throws UiObjectNotFoundException {   
-      
-      // Simulate a short press on the HOME button.
-      getUiDevice().pressHome();
-      
-      // We’re now in the home screen. Next, we want to simulate 
-      // a user bringing up the All Apps screen.
-      // If you use the uiautomatorviewer tool to capture a snapshot 
-      // of the Home screen, notice that the All Apps button’s 
-      // content-description property has the value “Apps”.  We can 
-      // use this property to create a UiSelector to find the button. 
-      UiObject allAppsButton = new UiObject(new UiSelector()
-         .description("Apps"));
-      
-      // Simulate a click to bring up the All Apps screen.
-      allAppsButton.clickAndWaitForNewWindow();
-      
-      // In the All Apps screen, the Settings app is located in 
-      // the Apps tab. To simulate the user bringing up the Apps tab,
-      // we create a UiSelector to find a tab with the text 
-      // label “Apps”.
-      UiObject appsTab = new UiObject(new UiSelector()
-         .text("Apps"));
-      
-      // Simulate a click to enter the Apps tab.
-      appsTab.click();
-
-      // Next, in the apps tabs, we can simulate a user swiping until
-      // they come to the Settings app icon.  Since the container view 
-      // is scrollable, we can use a UiScrollable object.
-      UiScrollable appViews = new UiScrollable(new UiSelector()
-         .scrollable(true));
-      
-      // Set the swiping mode to horizontal (the default is vertical)
-      appViews.setAsHorizontalList();
-      
-      // Create a UiSelector to find the Settings app and simulate      
-      // a user click to launch the app. 
-      UiObject settingsApp = appViews.getChildByText(new UiSelector()
-         .className(android.widget.TextView.class.getName()), 
-         "Settings");
-      settingsApp.clickAndWaitForNewWindow();
-      
-      // Validate that the package name is the expected one
-      UiObject settingsValidation = new UiObject(new UiSelector()
-         .packageName("com.android.settings"));
-      assertTrue("Unable to detect Settings", 
-         settingsValidation.exists());   
-  }   
-}
-</pre>
-
-<h2 id="builddeploy">Building and Deploying Your uiautomator Tests</h2>
-<p>Once you have coded your test, follow these steps to build and deploy your test JAR to your target Android test device:</p>
-<ol>
-<li>Create the required build configuration files to build the output JAR. To generate the build configuration files, open a terminal and run the following command:
-<pre>&lt;android-sdk&gt;/tools/android create uitest-project -n &lt;name&gt; -t 1 -p &lt;path&gt;</pre>
-The {@code <name>} is the name of the project that contains your {@code uiautomator} test source files, and the {@code <path>} is the path to the corresponding project directory.
-</li>
-<LI>From the command line, set the {@code ANDROID_HOME} variable: 
-<ul>
-<li>In Windows: 
-<pre>set ANDROID_HOME=&lt;path_to_your_sdk&gt;</pre>
-</li>
-<li>In UNIX: 
-<pre>export ANDROID_HOME=&lt;path_to_your_sdk&gt;</pre>
-</li>
-</ul>
-</LI>
-<li>Go to the project directory where your {@code build.xml} file is located and build your test JAR. <pre>ant build</pre></li>
-<li>Deploy your generated test JAR file to the test device by using the {@code adb push} command: <pre>adb push &lt;path_to_output_jar&gt; /data/local/tmp/</pre>
-<p>Here’s an example: <pre>adb push ~/dev/workspace/LaunchSettings/bin/LaunchSettings.jar /data/local/tmp/</pre></p>
-</li>
-</ol>
-
-<h2 id="running">Running uiautomator Tests</h2>
-<p>Here’s an example of how to run a test that is implemented in the {@code LaunchSettings.jar} file. The tests are bundled in the {@code com.uia.example.my} package:</p>
-<pre>adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings</pre>
-<p>To learn more about the syntax, subcommands, and options for {@code uiautomator}, see the <a href="{@docRoot}tools/help/uiautomator/index.html">{@code uiautomator}</a> reference.</p>
-
-
-<h2 id="bestpractices">Best Practices</h2>
-<p>Here are some best practices for functional UI testing with the {@code uiautomator} framework: </p>
-<ul>
-<LI>Ensure that you validate the same UI functions on your application across the various types of devices that your application might run on (for example, devices with different screen densities).</LI>
-<li>You should also test your UI against common scenarios such as in-coming phone calls, network interruptions, and user-initiated switching to other applications on the device.</li>
-</ul>
-
diff --git a/docs/html/tools/testing/what_to_test.jd b/docs/html/tools/testing/what_to_test.jd
deleted file mode 100644
index 77ae211..0000000
--- a/docs/html/tools/testing/what_to_test.jd
+++ /dev/null
@@ -1,86 +0,0 @@
-page.title=What To Test
-parent.title=Testing
-parent.link=index.html
-@jd:body
-<p>
-    As you develop Android applications, knowing what to test is as important as knowing how to
-    test. This document lists some most common Android-related situations that you should consider
-    when you test, even at the unit test level. This is not an exhaustive list, and you consult the
-    documentation for the features that you use for more ideas. The
-    <a href="http://groups.google.com/group/android-developers">android-developers</a> Google Groups
-    site is another resource for information about testing.
-</p>
-<h2 id="Tests">Ideas for Testing</h2>
-<p>
-    The following sections are organized by behaviors or situations that you should test. Each
-    section contains a scenario that further illustrates the situation and the test or tests you
-    should do.
-</p>
-<h4>Change in orientation</h4>
-<p>
-    For devices that support multiple orientations, Android detects a change in orientation when
-    the user turns the device so that the display is "landscape" (long edge is horizontal) instead
-    of "portrait" (long edge is vertical).
-</p>
-<p>
-    When Android detects a change in orientation, its default behavior is to destroy and then
-    re-start the foreground Activity. You should consider testing the following:
-</p>
-<ul>
-    <li>
-        Is the screen re-drawn correctly? Any custom UI code you have should handle changes in the
-        orientation.
-    </li>
-    <li>
-        Does the application maintain its state? The Activity should not lose anything that the
-        user has already entered into the UI. The application should not "forget" its place in the
-        current transaction.
-    </li>
-</ul>
-<h4>Change in configuration</h4>
-<p>
-    A situation that is more general than a change in orientation is a change in the device's
-    configuration, such as a change in the availability of a keyboard or a change in system
-    language.
-</p>
-<p>
-    A change in configuration also triggers the default behavior of destroying and then restarting
-    the foreground Activity. Besides testing that the application maintains the UI and its
-    transaction state, you should also test that the application updates itself to respond
-    correctly to the new configuration.
-</p>
-<h4>Battery life</h4>
-<p>
-    Mobile devices primarily run on battery power. A device has finite "battery budget", and when it
-    is gone, the device is useless until it is recharged. You need to write your application to
-    minimize battery usage, you need to test its battery performance, and you need to test the
-    methods that manage battery usage.
-</p>
-<p>
-    Techniques for minimizing battery usage were presented at the 2010 Google I/O conference in the
-    presentation
-    <a href="http://code.google.com/events/io/2009/sessions/CodingLifeBatteryLife.html">
-    Coding for Life -- Battery Life, That Is</a>. This presentation describes the impact on battery
-    life of various operations, and the ways you can design your application to minimize these
-    impacts. When you code your application to reduce battery usage, you also write the
-    appropriate unit tests.
-</p>
-<h4>Dependence on external resources</h4>
-<p>
-    If your application depends on network access, SMS, Bluetooth, or GPS, then you should
-    test what happens when the resource or resources are not available.
-</p>
-<p>
-    For example, if your application uses the network,it can notify the user if access is
-    unavailable, or disable network-related features, or do both. For GPS, it can switch to
-    IP-based location awareness. It can also wait for WiFi access before doing large data transfers,
-    since WiFi transfers maximize battery usage compared to transfers over 3G or EDGE.
-</p>
-<p>
-    You can use the emulator to test network access and bandwidth. To learn more, please see
-    <a href="{@docRoot}tools/help/emulator.html#netspeed">Network Speed Emulation</a>.
-    To test GPS, you can use the emulator console and {@link android.location.LocationManager}. To
-    learn more about the emulator console, please see
-    <a href="{@docRoot}tools/help/emulator.html#console">
-    Using the Emulator Console</a>.
-</p>
diff --git a/docs/html/tools/tools_toc.cs b/docs/html/tools/tools_toc.cs
index 72f9f21..3ce0d11 100644
--- a/docs/html/tools/tools_toc.cs
+++ b/docs/html/tools/tools_toc.cs
@@ -5,32 +5,11 @@
 ?>sdk/index.html"><span class="en">Download</span></a></div>
     <ul>
       <li><a href="<?cs var:toroot ?>sdk/installing/index.html">
-          <span class="en">Installing the SDK</span></a></li>
-
-      <li><a href="<?cs var:toroot ?>sdk/installing/adding-packages.html">
-          <span class="en">Adding SDK Packages</span></a></li>
+          <span class="en">Install Android Studio</span></a></li>
     </ul>
   </li>
 
 
-<!-- Android Studio menu-->
-
- <li class="nav-section">
-    <div class="nav-section-header">
-      <a href="<?cs var:toroot?>tools/studio/index.html">Android Studio</a>
-    </div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>tools/studio/studio-config.html">
-          Configuration</a></li>
-      <li><a href="<?cs var:toroot ?>tools/studio/studio-features.html">
-          Features</a></li>
-      <li><a href="<?cs var:toroot ?>sdk/installing/studio-tips.html">
-          Tips and Tricks</a></li>
-    </ul>
-
- </li><!-- End of Android Studio menu -->
-
-
 <!-- Workflow menu-->
 
   <li class="nav-section">
@@ -38,117 +17,157 @@
         <a href="<?cs var:toroot ?>tools/workflow/index.html"><span class="en">Workflow</span></a>
     </div>
     <ul>
-      <li class="nav-section">
-        <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/devices/index.html"><span class="en">Setting Up Virtual Devices</span></a></div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>tools/devices/managing-avds.html"><span class="en">With AVD Manager</span></a></li>
-          <li><a href="<?cs var:toroot ?>tools/devices/managing-avds-cmdline.html"><span class="en">From the Command Line</span></a></li>
-          <li><a href="<?cs var:toroot ?>tools/devices/emulator.html"><span class="en">Using the Emulator</span></a></li>
-        </ul>
+      <li><a href="<?cs var:toroot ?>tools/projects/index.html">
+          <span class="en">Projects</span></a>
       </li>
-      <li class="nav-section">
-        <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/device.html"><span class="en">Using Hardware Devices</span></a></div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>tools/extras/oem-usb.html"><span
-            class="en">USB Drivers</span></a></li>
-        </ul>
+      <li><a href="<?cs var:toroot ?>tools/building/index.html">
+          <span class="en">Build and Run</span></a>
       </li>
+      <li><a href="<?cs var:toroot ?>tools/devices/index.html">
+        <span class="en">Virtual Devices</span></a></li>
+
       <li class="nav-section">
-        <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/projects/index.html"><span class="en">Managing Projects</span></a></div>
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/device.html">
+          <span class="en">Hardware Devices</span></a></div>
         <ul>
-          <li><a href="<?cs var:toroot ?>sdk/installing/create-project.html"><span class="en">From Android Studio</span></a></li>
-          <li><a href="<?cs var:toroot ?>tools/projects/projects-cmdline.html"><span class="en">From the Command Line</span></a></li>
-          <li><a href="<?cs var:toroot ?>tools/projects/templates.html"><span class="en">Using Code Templates</span></a></li>
+          <li><a href="<?cs var:toroot ?>tools/extras/oem-usb.html">
+            <span class="en">USB Drivers</span></a></li>
         </ul>
       </li>
 
-
-      <li class="nav-section">
-        <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>tools/building/index.html">
-          <span class="en">Building and Running</span></a>
-        </div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>tools/building/building-studio.html">
-            <span class="en">From Android Studio</span></a></li>
-          <li><a href="<?cs var:toroot ?>tools/building/building-cmdline.html">
-            <span class="en">From the Command Line</span></a></li>
-        </ul>
+      <li><a href="<?cs var:toroot?>tools/testing/index.html">
+        <span class="en">Testing</span></a>
       </li>
 
+      <li><a href="<?cs var:toroot ?>tools/debugging/index.html">
+          <span class="en">Debugging</span></a></li>
 
-  <li class="nav-section">
-        <div class="nav-section-header"><a href="<?cs var:toroot?>tools/testing/index.html">
-            <span class="en">Testing</span>
-          </a></div>
-        <ul>
-          <li>
-            <a href="<?cs var:toroot?>tools/testing/testing_android.html">
-            <span class="en">Fundamentals</span></a>
-          </li>
-          <li><a href="<?cs var:toroot ?>tools/testing/testing_eclipse.html">
-            <span class="en">From Eclipse</span></a>
-          </li>
-          <li><a href="<?cs var:toroot ?>tools/testing/testing_otheride.html">
-            <span class="en">From Other IDEs</span></a>
-          </li>
-          <li>
-            <a href="<?cs var:toroot?>tools/testing/activity_testing.html">
-            <span class="en">Activity Testing</span></a>
-          </li>
-          <li>
-            <a href="<?cs var:toroot?>tools/testing/service_testing.html">
-            <span class="en">Service Testing</span></a>
-          </li>
-          <li>
-            <a href="<?cs var:toroot?>tools/testing/contentprovider_testing.html">
-            <span class="en">Content Provider Testing</span></a>
-          </li>
-          <li>
-            <a href="<?cs var:toroot?>tools/testing/testing_accessibility.html">
-            <span class="en">Accessibility Testing</span></a>
-          </li>
-           <li>
-            <a href="<?cs var:toroot?>tools/testing/testing_ui.html">
-            <span class="en">UI Testing</span></a>
-          </li>
-          <li>
-            <a href="<?cs var:toroot ?>tools/testing/what_to_test.html">
-            <span class="en">What To Test</span></a>
-          </li>
-          <li>
-            <a href="<?cs var:toroot ?>tools/testing/activity_test.html">
-            <span class="en">Activity Testing Tutorial</span></a>
-          </li>
-        </ul>
-  </li><!-- end of testing -->
-
-  <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/debugging/index.html"><span class="en">Debugging</span></a></div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>tools/debugging/debugging-studio.html"><span class="en">From Android Studio</span></a></li>
-      <li><a href="<?cs var:toroot ?>tools/debugging/debugging-projects-cmdline.html"><span class="en">From Other IDEs</span></a></li>
-      <li><a href="<?cs var:toroot ?>tools/debugging/ddms.html"><span class="en">Using DDMS</span></a></li>
-      <li><a href="<?cs var:toroot ?>tools/debugging/debugging-log.html"><span class="en">Reading and Writing Logs</span></a></li>
-      <li><a href="<?cs var:toroot ?>tools/debugging/improving-w-lint.html"><span class="en">Improving Your Code with lint</span></a></li>
-      <li><a href="<?cs var:toroot ?>tools/debugging/debugging-ui.html"><span class="en">Optimizing your UI</span></a></li>
-      <li><a href="<?cs var:toroot ?>tools/debugging/debugging-tracing.html"><span class="en">Profiling with Traceview and dmtracedump</span></a></li>
-      <li><a href="<?cs var:toroot ?>tools/debugging/annotations.html"><span class="en">Improving Code Inspection with Annotations</span></a></li>
-      <li><a href="<?cs var:toroot ?>tools/debugging/systrace.html"><span class="en">Analyzing UI Performance</span></a></li>
-      <li><a href="<?cs var:toroot ?>tools/debugging/debugging-memory.html">Investigating Your RAM Usage</a></li>
-      <li><a href="<?cs var:toroot ?>tools/debugging/debugging-devtools.html"><span class="en">Using the Dev Tools App</span></a></li>
-    </ul>
-  </li>
       <li class="nav-section">
-        <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/publishing/publishing_overview.html" zh-cn-lang="发布概述"><span class="en">Publishing</span></a></div>
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/publishing/publishing_overview.html"
+          zh-cn-lang="发布概述"><span class="en">Publishing</span></a></div>
         <ul>
           <li><a href="<?cs var:toroot ?>tools/publishing/preparing.html" zh-cn-lang="准备发布"><span class="en">Preparing for Release</span></a></li>
           <li><a href="<?cs var:toroot ?>tools/publishing/versioning.html"><span class="en">Versioning Your Apps</span></a></li>
           <li><a href="<?cs var:toroot ?>tools/publishing/app-signing.html"><span class="en">Signing Your Apps</span></a></li>
         </ul>
       </li>
+
     </ul>
-  </li>
+  </li> <!-- end of Workflow -->
+
+
+<!-- Android Studio menu-->
+
+ <li class="nav-section">
+    <div class="nav-section-header">
+      <a href="<?cs var:toroot?>tools/studio/index.html"><span class="en">Android Studio</span></a>
+    </div>
+    <ul>
+      <li><a href="<?cs var:toroot ?>tools/studio/studio-features.html">
+          Features</a></li>
+
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/studio/studio-config.html">
+          Configuration</a></div>
+          <ul>
+            <li><a href="<?cs var:toroot ?>tools/help/sdk-manager.html">SDK Manager</a></li>
+          </ul>
+      </li>
+
+      <li class="nav-section">
+        <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>sdk/installing/create-project.html">
+          Project Tools</a></div>
+          <ul>
+            <li><a href="<?cs var:toroot ?>tools/help/project-mgmt.html">
+              <span class="en">Project Structure Management</span></a></li>
+            <li><a href="<?cs var:toroot ?>tools/projects/templates.html">
+              <span class="en">Using Code Templates</span></a></li>
+            <li><a href="<?cs var:toroot ?>tools/building/building-studio.html">
+              <span class="en">Building and Running</span></a></li>
+          </ul>
+      </li>
+
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/studio/code-tools.html">
+          Code Tools</a></div>
+          <ul>
+            <li><a href="<?cs var:toroot ?>tools/debugging/improving-w-lint.html">
+              <span class="en">Improving Your Code with lint</span></a></li>
+            <li><a href="<?cs var:toroot ?>tools/debugging/annotations.html">
+              <span class="en">Improving Code Inspection with Annotations</span></a></li>
+            <li><a href="<?cs var:toroot ?>tools/help/app-link-indexing.html">
+              <span class="en">Deep Link and App Indexing API Support</span></a></li>
+          </ul>
+      </li>
+
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/studio/ui-tools.html">
+          UI Tools</a></div>
+          <ul>
+            <li><a href="<?cs var:toroot ?>sdk/installing/studio-layout.html">
+              <span class="en">Layout Editor</span></a></li>
+            <li><a href="<?cs var:toroot ?>tools/help/theme-editor.html">
+              <span class="en">Theme Editor</span></a></li>
+            <li><a href="<?cs var:toroot ?>tools/help/translations-editor.html">
+              <span class="en">Translations Editor</span></a>
+            <li><a href="<?cs var:toroot ?>tools/help/vector-asset-studio.html">
+              <span class="en">Vector Asset Studio</span></a></li>
+            <li><a href="<?cs var:toroot ?>tools/help/image-asset-studio.html">
+              <span class="en">Image Asset Studio</span></a></li>
+          </ul>
+      </li>
+
+      <li><a href="<?cs var:toroot ?>tools/devices/managing-avds.html">
+        <span class="en">AVD Manager</span></a></li>
+
+      <li class="nav-section">
+        <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>tools/debugging/debugging-studio.html">
+            <span class="en">Debugging Tools</span></a></div>
+          <ul>
+            <li><a href="<?cs var:toroot ?>tools/debugging/ddms.html">
+              <span class="en">DDMS</span></a></li>
+          </ul>
+      </li>
+
+      <li class="nav-section">
+        <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>tools/help/android-monitor.html">Android Monitor</a></div>
+        <ul>
+          <li><a href="<?cs var:toroot ?>tools/help/am-logcat.html"><span
+            class="en">logcat Monitor</span></a>
+          </li>
+          <li><a href="<?cs var:toroot ?>tools/help/am-memory.html"><span
+            class="en">Memory Monitor</span></a>
+          </li>
+          <li><a href="<?cs var:toroot ?>tools/help/am-cpu.html"><span
+            class="en">CPU Monitor</span></a>
+          </li>
+          <li><a href="<?cs var:toroot ?>tools/help/am-gpu.html"><span
+            class="en">GPU Monitor</span></a>
+          </li>
+          <li><a href="<?cs var:toroot ?>tools/help/am-network.html"><span
+            class="en">Network Monitor</span></a>
+          </li>
+        </ul>
+      </li>
+
+      <li><a href="<?cs var:toroot ?>sdk/installing/studio-tips.html">
+          Tips and Tricks</a></li>
+
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="<?cs var:toroot ?>sdk/installing/migrate.html">
+        <span class="en">
+          Migrating from Eclipse ADT</span></a></div>
+          <ul>
+            <li><a href="<?cs var:toroot ?>tools/studio/eclipse-transition-guide.html">
+            <span class="en">Transition Guide</span></a></li>
+          </ul>
+      </li>
+    </ul>
+
+ </li><!-- End of Android Studio menu -->
 
 
   <li class="nav-section">
@@ -156,27 +175,60 @@
 class="en">Tools Help</span></a></div>
     <ul>
       <li><a href="<?cs var:toroot ?>tools/help/adb.html">adb</a></li>
-      <li><a href="<?cs var:toroot ?>tools/help/android.html">android</a></li>
+      <li class="nav-section">
+        <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>tools/help/android.html">android</a></div>
+          <ul>
+            <li><a href="<?cs var:toroot ?>tools/devices/managing-avds-cmdline.html"><span class="en">
+              Managing AVDs</span></a></li>
+            <li><a href="<?cs var:toroot ?>tools/projects/projects-cmdline.html"><span class="en">
+              Managing Projects</span></a></li>
+          </ul>
+      </li>
       <li><a href="<?cs var:toroot ?>tools/help/avd-manager.html">AVD Manager</a></li>
       <li><a href="<?cs var:toroot ?>tools/help/bmgr.html">bmgr</a>
-      <li><a href="<?cs var:toroot ?>tools/help/monitor.html">Device Monitor</a></li>
       <li><a href="<?cs var:toroot ?>tools/help/desktop-head-unit.html">Desktop Head Unit</a></li>
+      <li><a href="<?cs var:toroot ?>tools/help/monitor.html">Device Monitor</a></li>
       <li><a href="<?cs var:toroot ?>tools/help/dmtracedump.html">dmtracedump</a></li>
       <li><a href="<?cs var:toroot ?>tools/help/draw9patch.html">Draw 9-Patch</a></li>
-      <li><a href="<?cs var:toroot ?>tools/help/emulator.html">Emulator</a></li>
+
       <li><a href="<?cs var:toroot ?>tools/help/etc1tool.html">etc1tool</a></li>
-      <li><a href="<?cs var:toroot ?>tools/help/hierarchy-viewer.html">Hierarchy Viewer</a></li>
+
+      <li class="nav-section">
+        <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>tools/help/hierarchy-viewer.html">
+            <span class="en">Hierarchy Viewer</span></a></div>
+          <ul>
+            <li><a href="<?cs var:toroot ?>tools/debugging/debugging-ui.html">
+              <span class="en">Optimizing your UI</span></a></li>
+          </ul>
+      </li>
+
       <li><a href="<?cs var:toroot ?>tools/help/hprof-conv.html">hprof-conv</a></li>
       <li><a href="<?cs var:toroot ?>tools/help/jobb.html">jobb</a></li>
       <li><a href="<?cs var:toroot ?>tools/help/lint.html">lint</span></a></li>
-      <li><a href="<?cs var:toroot ?>tools/help/logcat.html">logcat</a></li>
+      <li class="nav-section">
+        <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>tools/help/logcat.html">logcat</a></div>
+          <ul>
+            <li><a href="<?cs var:toroot ?>tools/debugging/debugging-log.html">
+              <span class="en">Reading and Writing Logs</span></a></li>
+          </ul>
+      </li>
       <li><a href="<?cs var:toroot ?>tools/help/mksdcard.html">mksdcard</a></li>
        <li><a href="<?cs var:toroot ?>tools/help/proguard.html" zh-cn-lang="ProGuard">ProGuard</a></li>
-       <li><a href="<?cs var:toroot ?>tools/help/sdk-manager.html">SDK Manager</a></li>
-       <li><a href="<?cs var:toroot ?>tools/help/systrace.html">Systrace</a></li>
        <li><a href="<?cs var:toroot ?>tools/help/gltracer.html">Tracer for OpenGL ES</a></li>
-       <li><a href="<?cs var:toroot ?>tools/help/traceview.html">Traceview</a></li>
+
+       <li class="nav-section">
+        <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>tools/devices/emulator.html">
+            <span class="en">Virtual Device Emulator</span></a></div>
+         <ul>
+           <li><a href="<?cs var:toroot ?>tools/help/emulator.html">Command Reference</a></li>
+         </ul>
+       </li>
        <li><a href="<?cs var:toroot ?>tools/help/zipalign.html">zipalign</a></li>
+
     </ul>
   </li>
 
@@ -190,6 +242,8 @@
       <a href="<?cs var:toroot ?>sdk/installing/studio-build.html">Build System</a>
     </div>
     <ul>
+      <li><a href="<?cs var:toroot ?>tools/building/building-cmdline.html">
+        <span class="en">Running Gradle Builds</span></a></li>
       <li><a href="<?cs var:toroot ?>tools/building/configuring-gradle.html">
         <span class="en">Configuring Gradle Builds</span></a></li>
       <li><a href="<?cs var:toroot ?>tools/building/plugin-for-gradle.html">
@@ -205,7 +259,7 @@
 <!-- Performance Tools menu-->
   <li class="nav-section">
     <div class="nav-section-header">
-      <a href="<?cs var:toroot ?>tools/performance/index.html">Peformance Tools</a>
+      <a href="<?cs var:toroot ?>tools/performance/index.html">Performance Tools</a>
     </div>
     <ul>
       <li><a href="<?cs var:toroot ?>tools/performance/debug-gpu-overdraw/index.html">
@@ -241,14 +295,38 @@
           <li><a href="<?cs var:toroot ?>tools/performance/allocation-tracker/index.html"><span
             class="en">Allocation Tracker</span></a>
           </li>
+          <li><a href="<?cs var:toroot ?>tools/debugging/debugging-memory.html">
+            <span class="en">Investigating Your RAM Usage</span></a></li>
         </ul>
       </li>
-      <li><a href="<?cs var:toroot ?>tools/performance/traceview/index.html">
-        Traceview</a>
+
+      <li class="nav-section">
+        <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>tools/debugging/debugging-tracing.html">
+            <span class="en">Traceview</span></a>
+        </div>
+        <ul>
+          <li><a href="<?cs var:toroot ?>tools/performance/traceview/index.html">
+            Walkthrough</a>
+          </li>
+          <li><a href="<?cs var:toroot ?>tools/help/traceview.html">
+            Command Reference</a></li>
+        </ul>
       </li>
-      <li><a href="<?cs var:toroot ?>tools/performance/systrace/index.html">
-        Systrace</a>
+
+      <li class="nav-section">
+        <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>tools/debugging/systrace.html">
+          <span class="en">Systrace</span></a>
+        </div>
+        <ul>
+          <li><a href="<?cs var:toroot ?>tools/performance/systrace/index.html">
+            Walkthrough</a></li>
+           <li><a href="<?cs var:toroot ?>tools/help/systrace.html">
+            Command Reference</a></li>
+        </ul>
       </li>
+
       <li class="nav-section">
         <div class="nav-section-header">
           <a href="<?cs var:toroot ?>tools/performance/batterystats-battery-historian/index.html">
@@ -266,15 +344,24 @@
   <!-- Testing Tools menu-->
 
   <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/testing/testing-tools.html"><span class="en">Testing Tools</span></a></div>
+    <div class="nav-section-header">
+      <a href="<?cs var:toroot ?>tools/testing/testing-tools.html">
+      <span class="en">Testing Tools</span></a></div>
     <ul>
+      <li><a href="<?cs var:toroot ?>tools/testing/testing_android.html">Testing Concepts</a></li>
       <li class="nav-section">
-         <div class="nav-section-header"><a href="<?cs var:toroot ?>tools/testing-support-library/index.html"><span
+         <div class="nav-section-header">
+         <a href="<?cs var:toroot ?>tools/testing-support-library/index.html"><span
 class="en">Testing Support Library</span></a></div>
          <ul>
-            <li><a href="<?cs var:toroot ?>reference/android/support/test/package-summary.html">API Reference</a></li>
+            <li><a href="<?cs var:toroot ?>reference/android/support/test/package-summary.html">
+            API Reference</a></li>
          </ul>
       </li>
+      <li><a href="<?cs var:toroot ?>training/testing/start/index.html">
+      Testing with Android Studio</a></li>
+      <li><a href="<?cs var:toroot ?>tools/testing/testing_otheride.html">
+      Testing from the Command-Line</a></li>
       <li><a href="<?cs var:toroot ?>tools/help/monkey.html">monkey</a></li>
       <li class="nav-section">
         <div class="nav-section-header"><a href="<?cs var:toroot
@@ -351,38 +438,6 @@
     </ul>
   </li> -->
 
-
-<!-- Eclipse ADT menu-->
-
-  <li class="nav-section">
-    <div class="nav-section-header">
-    <a href="<?cs var:toroot ?>tools/help/adt.html">
-      <span class="en">Eclipse with ADT</span></a>
-    </div>
-    <ul>
-        <li class="nav-section">
-        <div class="nav-section-header"><a href="<?cs var:toroot ?>sdk/installing/migrate.html">
-          <span class="en">Migrating to Android Studio</span></a></div>
-         <ul>
-            <li><a href="<?cs var:toroot ?>tools/studio/eclipse-transition-guide.html">
-            Transition Guide</span></a> </li>
-         </ul>
-        </li>
-
-    <li><a href="<?cs var:toroot ?>sdk/installing/installing-adt.html">
-        <span class="en">Installing the Eclipse Plugin</span></a></li>
-    <li><a href="<?cs var:toroot ?>tools/projects/projects-eclipse.html">Managing Projects</a></li>
-    <li><a href="<?cs var:toroot ?>tools/building/building-eclipse.html">Building and Running</a></li>
-    <li><a href="<?cs var:toroot ?>tools/building/building-cmdline-ant.html">Building with Ant</a></li>
-    <li><a href="<?cs var:toroot ?>tools/testing/testing_eclipse.html">Testing</a></li>
-    <li><a href="<?cs var:toroot ?>tools/debugging/debugging-projects.html">Debugging</a></li>
-    <li><a href="<?cs var:toroot ?>tools/publishing/app-signing-eclipse.html">Signing Your Apps</a></li>
-    </ul>
-  </li><!-- end of Eclipse  -->
-
-
-</ul><!-- nav -->
-
 <script type="text/javascript">
 <!--
     buildToggleLists();
diff --git a/docs/html/tools/workflow.jd b/docs/html/tools/workflow.jd
old mode 100644
new mode 100755
index 4eb5ada..edf7400
--- a/docs/html/tools/workflow.jd
+++ b/docs/html/tools/workflow.jd
@@ -2,14 +2,13 @@
 @jd:body
 
 <p>Developing applications for Android devices is facilitated by a group of tools that are
-  provided with the SDK. You can access these tools through an Eclipse plugin called ADT (Android
-  Development Tools) or from the command line. Developing with Eclipse is the preferred method because
+  provided with the SDK. You can access these tools through Android Studio or from the command line. Developing with Android Studio is the preferred method because
   it can directly invoke the tools that you need while developing applications.</p>
 
   <p>However, you may choose to develop with another IDE or a simple text editor and invoke the
   tools on the command line or with scripts. This is a less streamlined way to develop because you
   will sometimes have to call command line tools manually, but you will have access to the same
-  number of features that you would have in Eclipse.</p>
+  number of features that you would have in Android Studio.</p>
 
 <div class="figure" style="width:461px">
   <img src="{@docRoot}images/developing/developing_overview.png"
@@ -20,7 +19,7 @@
   </p>
 </div>
 
-<p>The basic steps for developing applications (with or without Eclipse) are shown in figure 1. The
+<p>The basic steps for developing applications (with or without Android Studio) are shown in figure 1. The
 development steps encompass four development phases, which include:</p>
 
 <ul>
@@ -39,13 +38,14 @@
   </li>
   <li><strong>Debugging and Testing</strong>
     <p>During this phase you build your project into a debuggable <code>.apk</code> package that you
-    can install and run on the emulator or an Android-powered device. If you are using Eclipse,
-    builds are generated each time you project is saved. If you're using another IDE,
-    you can build your project using Ant and install it on a device using
-    <a href="{@docRoot}tools/help/adb.html">adb</a>. For more information, see
+    can install and run on the emulator or an Android-powered device. Android Studio uses
+    a build system based on <a href="http://www.gradle.org/" target="_android">Gradle</a>
+    that provides flexibility, customized build variants, dependency resolution, and much more.
+    If you're using another IDE, you can build your project using Gradle and install it on a device
+    using <a href="{@docRoot}tools/help/adb.html">adb</a>. For more information, see
     <a href="{@docRoot}tools/building/index.html">Build and run your application</a>.</p>
     <p>Next, you debug your application using a JDWP-compliant debugger along with the debugging
-    and logging tools that are provided with the Android SDK. Eclipse already comes packaged with
+    and logging tools that are provided with the Android SDK. Android Studio already comes packaged with
     a compatible debugger. For more information see,
     <a href="{@docRoot}tools/debugging/index.html">Debug your application with the
       SDK debugging and logging tools</a>.</p>
@@ -62,7 +62,7 @@
 
 <h2 id="EssentialTools">Essential command line tools</h2>
 
-  <p>When developing in IDEs or editors other than Eclipse, be familiar with
+  <p>When developing in IDEs or editors other than Android Studio, be familiar with
   all of the tools below, because you will have to run them from the command line.</p>
 
   <dl>
@@ -84,7 +84,7 @@
   source and third-party tools:</p>
 
   <dl>
-    <dt>Ant</dt>
+    <a href="http://www.gradle.org/">Gradle</a> 
 
     <dd>To compile and build your Android project into an installable .apk file.</dd>
 
@@ -99,13 +99,13 @@
     JDK.</dd>
   </dl>
 
-  <p>If you are using Eclipse and ADT, tools such as <code>adb</code> and <code>android</code>
-  are automatically called by Eclipse and ADT so you don't have to manually invoke these tools.
+  <p>If you are using Android Studio, tools such as <code>adb</code> and <code>android</code>
+  are automatically called by Android Studio, so you don't have to manually invoke these tools.
   You need to be familiar with <code>adb</code>, however, because certain functions are not
 accessible from
-  Eclipse, such as the <code>adb</code> shell commands. You might also need to call Keytool and
+  Android Studio, such as the <code>adb</code> shell commands. You might also need to call Keytool and
 Jarsigner to
-  sign your applications, but you can set up Eclipse to do this automatically as well.</p>
+  sign your applications, but you can set up Android Studio to do this automatically as well.</p>
 
 <p>For more information on the tools provided with the Android SDK, see the
   <a href="{@docRoot}tools/index.html">Tools</a> section of the documentation.</p>
@@ -147,4 +147,3 @@
     	<a href="http://wiki.jetbrains.net/intellij/Android">IntelliJ IDEA Android Tutorials</a>
 	</li>
 </ul>
-
diff --git a/docs/html/training/_book.yaml b/docs/html/training/_book.yaml
new file mode 100644
index 0000000..cd4df43
--- /dev/null
+++ b/docs/html/training/_book.yaml
@@ -0,0 +1,1210 @@
+toc:
+- title: Getting Started
+  path: /training/index.html
+  section:
+  - title: Building Your First App
+    path: /training/basics/firstapp/index.html
+    custom_link_attributes:
+    - description="After you've installed the Android SDK, start with this class to learn the basics about Android app development."
+    section:
+    - title: Creating an Android Project
+      path: /training/basics/firstapp/creating-project.html
+    - title: Running Your Application
+      path: /training/basics/firstapp/running-app.html
+    - title: Building a Simple User Interface
+      path: /training/basics/firstapp/building-ui.html
+    - title: Starting Another Activity
+      path: /training/basics/firstapp/starting-activity.html
+  - title: Supporting Different Devices
+    path: /training/basics/supporting-devices/index.html
+    custom_link_attributes:
+    - description="How to build your app with alternative resources that provide an optimized user experience on multiple device form factors using a single APK."
+    section:
+    - title: Supporting Different Languages
+      path: /training/basics/supporting-devices/languages.html
+    - title: Supporting Different Screens
+      path: /training/basics/supporting-devices/screens.html
+    - title: Supporting Different Platform Versions
+      path: /training/basics/supporting-devices/platforms.html
+  - title: Managing the Activity Lifecycle
+    path: /training/basics/activity-lifecycle/index.html
+    custom_link_attributes:
+    - ja-lang="アクティビティのライフサイクル 管理"
+    - ko-lang="액티비티 수명 주기 관리하기"
+    - pt-br-lang="Como gerenciar o ciclo de vida da atividade"
+    - ru-lang="Управление жизненным циклом операций"
+    - zh-cn-lang="管理活动生命周期"
+    - zh-tw-lang="管理應用行為顯示生命週期"
+    - description="How Android activities live and die and how to create a seamless user experience by implementing lifecycle callback methods."
+    section:
+    - title: Starting an Activity
+      path: /training/basics/activity-lifecycle/starting.html
+      custom_link_attributes:
+      - ja-lang="アクティビティを開始する"
+      - ko-lang="액티비티 시작하기"
+      - pt-br-lang="Iniciando uma atividade"
+      - ru-lang="Запуск операции"
+      - zh-cn-lang="开始活动"
+      - zh-tw-lang="啟動應用行為顯示"
+    - title: Pausing and Resuming an Activity
+      path: /training/basics/activity-lifecycle/pausing.html
+    - title: Stopping and Restarting an Activity
+      path: /training/basics/activity-lifecycle/stopping.html
+      custom_link_attributes:
+      - ja-lang="アクティビティの一時停止と再開"
+      - ko-lang="액티비티 일시정지 및 재개하기"
+      - pt-br-lang="Pausando e reiniciando uma atividade"
+      - ru-lang="Приостановка и возобновление операции"
+      - zh-cn-lang="暂停和继续活动"
+      - zh-tw-lang="暫停並繼續應用行為顯示"
+    - title: Recreating an Activity
+      path: /training/basics/activity-lifecycle/recreating.html
+      custom_link_attributes:
+      - ja-lang="アクティビティを再作成する"
+      - ko-lang="액티비티 재생성하기"
+      - pt-br-lang="Recriando uma atividade"
+      - ru-lang="Воссоздание операции"
+      - zh-cn-lang="重新创建活动"
+      - zh-tw-lang="重新建立應用行為顯示"
+  - title: Building a Dynamic UI with Fragments
+    path: /training/basics/fragments/index.html
+    custom_link_attributes:
+    - description="How to build a user interface for your app that is flexible enough to present multiple UI components on large screens and a more constrained set of UI components on smaller screens—essential for building a single APK for both phones and tablets."
+    section:
+    - title: Creating a Fragment
+      path: /training/basics/fragments/creating.html
+    - title: Building a Flexible UI
+      path: /training/basics/fragments/fragment-ui.html
+      custom_link_attributes:
+      - zh-cn-lang="构建灵活的界面"
+    - title: Communicating with Other Fragments
+      path: /training/basics/fragments/communicating.html
+  - title: Saving Data
+    path: /training/basics/data-storage/index.html
+    custom_link_attributes:
+    - ja-lang="データの保存"
+    - ko-lang="데이터 저장하기"
+    - pt-br-lang="Salvando dados"
+    - ru-lang="Сохранение данных"
+    - zh-cn-lang="保存数据"
+    - zh-tw-lang="儲存資料"
+    - description="How to save data on the device, whether it's temporary files, downloaded app assets, user media, structured data, or something else."
+    section:
+    - title: Saving Key-Value Sets
+      path: /training/basics/data-storage/shared-preferences.html
+      custom_link_attributes:
+      - ja-lang="キー値セットを保存する"
+      - ko-lang="키-값 세트 저장하기"
+      - pt-br-lang="Salvando conjuntos de valor-chave"
+      - ru-lang="Сохранение наборов \"ключ-значение\""
+      - zh-cn-lang="保存键值集"
+      - zh-tw-lang="儲存索引鍵值組"
+    - title: Saving Files
+      path: /training/basics/data-storage/files.html
+      custom_link_attributes:
+      - ja-lang="ファイルを保存する"
+      - ko-lang="파일 저장하기"
+      - pt-br-lang="Salvando arquivos"
+      - ru-lang="Сохранение файлов"
+      - zh-cn-lang="保存文件"
+      - zh-tw-lang="儲存檔案"
+    - title: Saving Data in SQL Databases
+      path: /training/basics/data-storage/databases.html
+      custom_link_attributes:
+      - ja-lang="SQL データベースにデータを保存する"
+      - ko-lang="SQL 데이터베이스에 데이터 저장하기"
+      - pt-br-lang="Salvando dados em bancos de dados do SQL"
+      - ru-lang="Сохранение данных в базах данных SQL"
+      - zh-cn-lang="在 SQL 数据库中保存数据"
+      - zh-tw-lang="在 SQL 資料庫中儲存資料"
+  - title: Interacting with Other Apps
+    path: /training/basics/intents/index.html
+    custom_link_attributes:
+    - ja-lang="他のアプリとの相互操作"
+    - ko-lang="액티비티 수명 주기 관리하기"
+    - pt-br-lang="Interagindo com outros aplicativos"
+    - ru-lang="Взаимодействие с другими приложениями"
+    - zh-cn-lang="与其他应用交互"
+    - zh-tw-lang="與其他應用程式互動"
+    - description="How to build a user experience that leverages other apps available on the device to perform advanced user tasks, such as capture a photo or view an address on a map."
+    section:
+    - title: Sending the User to Another App
+      path: /training/basics/intents/sending.html
+      custom_link_attributes:
+      - ja-lang="別のアプリにユーザーを送る"
+      - ko-lang="다른 앱으로 사용자 보내기"
+      - pt-br-lang="Enviando o usuário para outro aplicativo"
+      - ru-lang="Направление пользователя в другое приложение"
+      - zh-cn-lang="向另一个应用发送用户"
+      - zh-tw-lang="將使用者傳送至其他應用程式"
+    - title: Getting a Result from the Activity
+      path: /training/basics/intents/result.html
+      custom_link_attributes:
+      - ja-lang="アクティビティから結果を取得する"
+      - ko-lang="액티비티로부터 결과 가져오기"
+      - pt-br-lang="Obtendo resultados de uma atividade"
+      - ru-lang="Получение результата операции"
+      - zh-cn-lang="获取活动的结果"
+      - zh-tw-lang="從應用行為顯示取得結果"
+    - title: Allowing Other Apps to Start Your Activity
+      path: /training/basics/intents/filters.html
+      custom_link_attributes:
+      - ja-lang="他のアプリからのアクティビティの開始を許可する"
+      - ko-lang="다른 앱이 자신의 액티비티를 시작하도록 허용하기"
+      - pt-br-lang="Permitindo que outros aplicativos iniciem sua atividade"
+      - ru-lang="Разрешение другим приложениям на запуск вашей операции"
+      - zh-cn-lang="允许其他应用开始您的活动"
+      - zh-tw-lang="允許其他應用程式啟動您的應用行為顯示"
+  - title: Working with System Permissions
+    path: /training/permissions/index.html
+    custom_link_attributes:
+    - description="How to declare that your app needs access to features and resources outside of its 'sandbox', and how to request those privileges at runtime."
+    section:
+    - title: Declaring Permissions
+      path: /training/permissions/declaring.html
+    - title: Requesting Permissions at Run Time
+      path: /training/permissions/requesting.html
+    - title: Best Practices for Runtime Permissions
+      path: /training/permissions/best-practices.html
+
+- title: Building Apps with Content Sharing
+  path: /training/building-content-sharing.html
+  section:
+  - title: Sharing Simple Data
+    path: /training/sharing/index.html
+    custom_link_attributes:
+    - description="How to take your app interaction to the next level by sharing information with other apps, receive information back, and provide a simple and scalable way to perform Share actions with user content."
+    section:
+    - title: Sending Simple Data to Other Apps
+      path: /training/sharing/send.html
+    - title: Receiving Simple Data from Other Apps
+      path: /training/sharing/receive.html
+    - title: Adding an Easy Share Action
+      path: /training/sharing/shareaction.html
+  - title: Sharing Files
+    path: /training/secure-file-sharing/index.html
+    custom_link_attributes:
+    - description="How to provide secure access to a file associated with your app using a content URI and temporary access permissions."
+    section:
+    - title: Setting Up File Sharing
+      path: /training/secure-file-sharing/setup-sharing.html
+    - title: Sharing a File
+      path: /training/secure-file-sharing/share-file.html
+    - title: Requesting a Shared File
+      path: /training/secure-file-sharing/request-file.html
+    - title: Retrieving File Information
+      path: /training/secure-file-sharing/retrieve-info.html
+  - title: Sharing Files with NFC
+    path: /training/beam-files/index.html
+    custom_link_attributes:
+    - description="How to transfer files between devices using the NFC Android Beam feature."
+    section:
+    - title: Sending Files to Another Device
+      path: /training/beam-files/send-files.html
+    - title: Receiving Files from Another Device
+      path: /training/beam-files/receive-files.html
+
+- title: Building Apps with Multimedia
+  path: /training/building-multimedia.html
+  section:
+  - title: Managing Audio Playback
+    path: /training/managing-audio/index.html
+    custom_link_attributes:
+    - description="How to respond to hardware audio key presses, request audio focus when playing audio, and respond appropriately to changes in audio focus."
+    section:
+    - title: Controlling Your App's Volume and Playback
+      path: /training/managing-audio/volume-playback.html
+    - title: Managing Audio Focus
+      path: /training/managing-audio/audio-focus.html
+    - title: Dealing with Audio Output Hardware
+      path: /training/managing-audio/audio-output.html
+  - title: Capturing Photos
+    path: /training/camera/index.html
+    custom_link_attributes:
+    - description="How to leverage existing camera apps on the user's device to capture photos or control the camera hardware directly and build your own camera app."
+    section:
+    - title: Taking Photos Simply
+      path: /training/camera/photobasics.html
+    - title: Recording Videos Simply
+      path: /training/camera/videobasics.html
+    - title: Controlling the Camera
+      path: /training/camera/cameradirect.html
+  - title: Printing Content
+    path: /training/printing/index.html
+    custom_link_attributes:
+    - description="How to print photos, HTML documents, and custom documents from your app."
+    section:
+    - title: Photos
+      path: /training/printing/photos.html
+    - title: HTML Documents
+      path: /training/printing/html-docs.html
+    - title: Custom Documents
+      path: /training/printing/custom-docs.html
+
+- title: Building Apps with Graphics & Animation
+  path: /training/building-graphics.html
+  section:
+  - title: Displaying Bitmaps Efficiently
+    path: /training/displaying-bitmaps/index.html
+    custom_link_attributes:
+    - description="How to load and process bitmaps while keeping your user interface responsive and avoid exceeding memory limits."
+    section:
+    - title: Loading Large Bitmaps Efficiently
+      path: /training/displaying-bitmaps/load-bitmap.html
+    - title: Processing Bitmaps Off the UI Thread
+      path: /training/displaying-bitmaps/process-bitmap.html
+    - title: Caching Bitmaps
+      path: /training/displaying-bitmaps/cache-bitmap.html
+    - title: Managing Bitmap Memory
+      path: /training/displaying-bitmaps/manage-memory.html
+    - title: Displaying Bitmaps in Your UI
+      path: /training/displaying-bitmaps/display-bitmap.html
+  - title: Displaying Graphics with OpenGL ES
+    path: /training/graphics/opengl/index.html
+    custom_link_attributes:
+    - description="How to create OpenGL graphics within the Android app framework and respond to touch input."
+    section:
+    - title: Building an OpenGL ES Environment
+      path: /training/graphics/opengl/environment.html
+    - title: Defining Shapes
+      path: /training/graphics/opengl/shapes.html
+    - title: Drawing Shapes
+      path: /training/graphics/opengl/draw.html
+    - title: Applying Projection and Camera Views
+      path: /training/graphics/opengl/projection.html
+    - title: Adding Motion
+      path: /training/graphics/opengl/motion.html
+    - title: Responding to Touch Events
+      path: /training/graphics/opengl/touch.html
+  - title: Animating Views Using Scenes and Transitions
+    path: /training/transitions/index.html
+    custom_link_attributes:
+    - description="How to animate state changes in a view hierarchy using transitions."
+    section:
+    - title: The Transitions Framework
+      path: /training/transitions/overview.html
+    - title: Creating a Scene
+      path: /training/transitions/scenes.html
+    - title: Applying a Transition
+      path: /training/transitions/transitions.html
+    - title: Creating Custom Transitions
+      path: /training/transitions/custom-transitions.html
+  - title: Adding Animations
+    path: /training/animation/index.html
+    custom_link_attributes:
+    - description="How to add transitional animations to your user interface."
+    section:
+    - title: Crossfading Two Views
+      path: /training/animation/crossfade.html
+    - title: Using ViewPager for Screen Slide
+      path: /training/animation/screen-slide.html
+    - title: Displaying Card Flip Animations
+      path: /training/animation/cardflip.html
+    - title: Zooming a View
+      path: /training/animation/zoom.html
+    - title: Animating Layout Changes
+      path: /training/animation/layout.html
+
+- title: Building Apps with Connectivity & the Cloud
+  path: /training/building-connectivity.html
+  section:
+  - title: Connecting Devices Wirelessly
+    path: /training/connect-devices-wirelessly/index.html
+    custom_link_attributes:
+    - description="How to find and connect to local devices using Network Service Discovery and how to create peer-to-peer connections with Wi-Fi."
+    section:
+    - title: Using Network Service Discovery
+      path: /training/connect-devices-wirelessly/nsd.html
+    - title: Creating P2P Connections with Wi-Fi
+      path: /training/connect-devices-wirelessly/wifi-direct.html
+    - title: Using Wi-Fi P2P for Service Discovery
+      path: /training/connect-devices-wirelessly/nsd-wifi-direct.html
+  - title: Performing Network Operations
+    path: /training/basics/network-ops/index.html
+    custom_link_attributes:
+    - description="How to create a network connection, monitor the connection for changes in connectivity, and perform transactions with XML data."
+    section:
+    - title: Connecting to the Network
+      path: /training/basics/network-ops/connecting.html
+    - title: Managing Network Usage
+      path: /training/basics/network-ops/managing.html
+    - title: Parsing XML Data
+      path: /training/basics/network-ops/xml.html
+  - title: Transferring Data Without Draining the Battery
+    path: /training/efficient-downloads/index.html
+    custom_link_attributes:
+    - description="How to minimize your app's impact on the battery when performing downloads and other network transactions."
+    section:
+    - title: Optimizing Downloads for Efficient Network Access
+      path: /training/efficient-downloads/efficient-network-access.html
+    - title: Minimizing the Effect of Regular Updates
+      path: /training/efficient-downloads/regular_updates.html
+    - title: Redundant Downloads are Redundant
+      path: /training/efficient-downloads/redundant_redundant.html
+    - title: Modifying Patterns Based on the Connectivity Type
+      path: /training/efficient-downloads/connectivity_patterns.html
+  - title: Syncing to the Cloud
+    path: /training/backup/index.html
+    custom_link_attributes:
+    - description="How to sync and back up app and user data to remote web services in the cloud and how to restore the data back to multiple devices."
+    section:
+    - title: Configuring Auto Backup
+      path: /training/backup/autosyncapi.html
+    - title: Using the Backup API
+      path: /training/backup/backupapi.html
+  - title: Resolving Cloud Save Conflicts
+    path: /training/cloudsave/conflict-res.html
+    custom_link_attributes:
+    - description="How to design a robust conflict resolution strategy for apps that save data to the cloud."
+  - title: Transferring Data Using Sync Adapters
+    path: /training/sync-adapters/index.html
+    custom_link_attributes:
+    - description="How to transfer data between the cloud and the device using the Android sync adapter framework"
+    section:
+    - title: Creating a Stub Authenticator
+      path: /training/sync-adapters/creating-authenticator.html
+    - title: Creating a Stub Content Provider
+      path: /training/sync-adapters/creating-stub-provider.html
+    - title: Creating a Sync Adapter
+      path: /training/sync-adapters/creating-sync-adapter.html
+    - title: Running a Sync Adapter
+      path: /training/sync-adapters/running-sync-adapter.html
+  - title: Transmitting Network Data Using Volley
+    path: /training/volley/index.html
+    custom_link_attributes:
+    - description="How to perform fast, scalable UI operations over the network using Volley"
+    section:
+    - title: Sending a Simple Request
+      path: /training/volley/simple.html
+    - title: Setting Up a RequestQueue
+      path: /training/volley/requestqueue.html
+    - title: Making a Standard Request
+      path: /training/volley/request.html
+    - title: Implementing a Custom Request
+      path: /training/volley/request-custom.html
+
+- title: Building Apps with Location & Maps
+  path: /training/building-location.html
+  section:
+  - title: Making Your App Location-Aware
+    path: /training/location/index.html
+    custom_link_attributes:
+    - description="How to add location-aware features to your app by getting the user's current location."
+    section:
+    - title: Getting the Last Known Location
+      path: /training/location/retrieve-current.html
+    - title: Changing Location Settings
+      path: /training/location/change-location-settings.html
+    - title: Receiving Location Updates
+      path: /training/location/receive-location-updates.html
+    - title: Displaying a Location Address
+      path: /training/location/display-address.html
+    - title: Creating and Monitoring Geofences
+      path: /training/location/geofencing.html
+  - title: Adding Maps
+    path: /training/maps/index.html
+    custom_link_attributes:
+    - description="How to add maps and mapping information to your app."
+
+- title: Building Apps with User Info & Sign-In
+  path: /training/building-userinfo.html
+  section:
+  - title: Accessing Contacts Data
+    path: /training/contacts-provider/index.html
+    custom_link_attributes:
+    - description="How to use Android's central address book, the Contacts Provider, to display contacts and their details and modify contact information."
+    section:
+    - title: Retrieving a List of Contacts
+      path: /training/contacts-provider/retrieve-names.html
+    - title: Retrieving Details for a Contact
+      path: /training/contacts-provider/retrieve-details.html
+    - title: Modifying Contacts Using Intents
+      path: /training/contacts-provider/modify-data.html
+    - title: Displaying the Quick Contact Badge
+      path: /training/contacts-provider/display-contact-badge.html
+  - title: Adding Sign-In
+    path: /training/sign-in/index.html
+    custom_link_attributes:
+    - description="How to add user sign-in functionality to your app."
+
+- title: Building Apps for Wearables
+  path: /training/building-wearables.html
+  section:
+  - title: Adding Wearable Features to Notifications
+    path: /training/wearables/notifications/index.html
+    custom_link_attributes:
+    - description="How to build handheld notifications that are synced to and look great on wearables."
+    section:
+    - title: Creating a Notification
+      path: /training/wearables/notifications/creating.html
+    - title: Receiving Voice Input in a Notification
+      path: /training/wearables/notifications/voice-input.html
+    - title: Adding Pages to a Notification
+      path: /training/wearables/notifications/pages.html
+    - title: Stacking Notifications
+      path: /training/wearables/notifications/stacks.html
+  - title: Creating Wearable Apps
+    path: /training/wearables/apps/index.html
+    custom_link_attributes:
+    - description="How to build apps that run directly on wearables."
+    section:
+    - title: Creating and Running a Wearable App
+      path: /training/wearables/apps/creating.html
+    - title: Creating Custom Layouts
+      path: /training/wearables/apps/layouts.html
+    - title: Keeping Your App Visible
+      path: /training/wearables/apps/always-on.html
+    - title: Adding Voice Capabilities
+      path: /training/wearables/apps/voice.html
+    - title: Packaging Wearable Apps
+      path: /training/wearables/apps/packaging.html
+    - title: Debugging over Bluetooth
+      path: /training/wearables/apps/bt-debugging.html
+  - title: Creating Custom UIs
+    path: /training/wearables/ui/index.html
+    custom_link_attributes:
+    - description="How to create custom user interfaces for wearable apps."
+    section:
+    - title: Defining Layouts
+      path: /training/wearables/ui/layouts.html
+    - title: Creating Cards
+      path: /training/wearables/ui/cards.html
+    - title: Creating Lists
+      path: /training/wearables/ui/lists.html
+    - title: Creating a 2D Picker
+      path: /training/wearables/ui/2d-picker.html
+    - title: Showing Confirmations
+      path: /training/wearables/ui/confirm.html
+    - title: Exiting Full-Screen Activities
+      path: /training/wearables/ui/exit.html
+  - title: Sending and Syncing Data
+    path: /training/wearables/data-layer/index.html
+    custom_link_attributes:
+    - description="How to sync data between handhelds and wearables."
+    section:
+    - title: Accessing the Wearable Data Layer
+      path: /training/wearables/data-layer/accessing.html
+    - title: Syncing Data Items
+      path: /training/wearables/data-layer/data-items.html
+    - title: Transferring Assets
+      path: /training/wearables/data-layer/assets.html
+    - title: Sending and Receiving Messages
+      path: /training/wearables/data-layer/messages.html
+    - title: Handling Data Layer Events
+      path: /training/wearables/data-layer/events.html
+  - title: Creating Watch Faces
+    path: /training/wearables/watch-faces/index.html
+    custom_link_attributes:
+    - description="How to create watch faces for wearables."
+    section:
+    - title: Designing Watch Faces
+      path: /training/wearables/watch-faces/designing.html
+    - title: Building a Watch Face Service
+      path: /training/wearables/watch-faces/service.html
+    - title: Drawing Watch Faces
+      path: /training/wearables/watch-faces/drawing.html
+    - title: Showing Information in Watch Faces
+      path: /training/wearables/watch-faces/information.html
+    - title: Creating Interactive Watch Faces
+      path: /training/wearables/watch-faces/interacting.html
+    - title: Providing Configuration Activities
+      path: /training/wearables/watch-faces/configuration.html
+    - title: Addressing Common Issues
+      path: /training/wearables/watch-faces/issues.html
+    - title: Optimizing Performance and Battery Life
+      path: /training/wearables/watch-faces/performance.html
+  - title: Detecting Location
+    path: /training/articles/wear-location-detection.html
+    custom_link_attributes:
+    - description="How to detect location data on Android Wear devices."
+  - title: Requesting Permissions
+    path: /training/articles/wear-permissions.html
+    custom_link_attributes:
+    - description="How to request permissions on Android Wear devices."
+  - title: Using the Speaker
+    path: /training/wearables/wearable-sounds.html
+    custom_link_attributes:
+    - description="How to use the speaker on Android Wear devices."
+
+- title: Building Apps for TV
+  path: /training/tv/index.html
+  section:
+  - title: Building TV Apps
+    path: /training/tv/start/index.html
+    custom_link_attributes:
+    - ja-lang="TV アプリのビルド"
+    - description="How to start building TV apps or extend your existing app to run on TV devices."
+    section:
+    - title: Getting Started with TV Apps
+      path: /training/tv/start/start.html
+      custom_link_attributes:
+      - ja-lang="TV アプリのビルドを開始する"
+    - title: Handling TV Hardware
+      path: /training/tv/start/hardware.html
+      custom_link_attributes:
+      - ja-lang="TV ハードウェアを処理する"
+    - title: Building TV Layouts
+      path: /training/tv/start/layouts.html
+      custom_link_attributes:
+      - ja-lang="TV 向けレイアウトをビルドする"
+    - title: Creating TV Navigation
+      path: /training/tv/start/navigation.html
+      custom_link_attributes:
+      - ja-lang="TV 用のナビゲーションを作成する"
+  - title: Building TV Playback Apps
+    path: /training/tv/playback/index.html
+    custom_link_attributes:
+    - ja-lang="TV 再生アプリのビルド"
+    - description="How to build apps that provide media catalogs and play content."
+    section:
+    - title: Creating a Catalog Browser
+      path: /training/tv/playback/browse.html
+      custom_link_attributes:
+      - ja-lang="カタログ ブラウザを作成する"
+    - title: Providing a Card View
+      path: /training/tv/playback/card.html
+    - title: Building a Details View
+      path: /training/tv/playback/details.html
+      custom_link_attributes:
+      - ja-lang="詳細ビューをビルドする"
+    - title: Displaying a Now Playing Card
+      path: /training/tv/playback/now-playing.html
+      custom_link_attributes:
+      - ja-lang="再生中カードを表示する"
+    - title: Adding a Guided Step
+      path: /training/tv/playback/guided-step.html
+    - title: Enabling Background Playback
+      path: /training/tv/playback/options.html
+  - title: Helping Users Find Content on TV
+    path: /training/tv/discovery/index.html
+    custom_link_attributes:
+    - description="How to help users discover content from your app."
+    section:
+    - title: Recommending TV Content
+      path: /training/tv/discovery/recommendations.html
+    - title: Making TV Apps Searchable
+      path: /training/tv/discovery/searchable.html
+    - title: Searching within TV Apps
+      path: /training/tv/discovery/in-app-search.html
+  - title: Building TV Games
+    path: /training/tv/games/index.html
+    custom_link_attributes:
+    - description="How to build games for TV."
+  - title: Building TV Channels
+    path: /training/tv/tif/index.html
+    custom_link_attributes:
+    - description="How to build channels for TV."
+    section:
+    - title: Developing a TV Input Service
+      path: /training/tv/tif/tvinput.html
+    - title: Working with Channel Data
+      path: /training/tv/tif/channel.html
+    - title: Managing User Interaction
+      path: /training/tv/tif/ui.html
+  - title: TV Apps Checklist
+    path: /training/tv/publishing/checklist.html
+    custom_link_attributes:
+    - description="An itemized list of requirements for TV apps."
+
+- title: Building Apps for Auto
+  path: /training/auto/index.html
+  section:
+  - title: Getting Started with Auto
+    path: /training/auto/start/index.html
+    custom_link_attributes:
+    - description="How to start building or extending apps that work with Auto devices."
+  - title: Playing Audio for Auto
+    path: /training/auto/audio/index.html
+    custom_link_attributes:
+    - description="How to extend audio apps to play content on Auto devices."
+  - title: Messaging for Auto
+    path: /training/auto/messaging/index.html
+    custom_link_attributes:
+    - description="How to extend text messaging apps to work with Auto devices."
+
+- title: Building Apps for Work
+  path: /training/enterprise/index.html
+  section:
+  - title: Ensuring Compatibility with Managed Profiles
+    path: /training/enterprise/app-compatibility.html
+  - title: Implementing App Restrictions
+    path: /training/enterprise/app-restrictions.html
+  - title: Building a Device Policy Controller
+    path: /training/enterprise/work-policy-ctrl.html
+  - title: Configuring Corporate-Owned, Single-Use Devices
+    path: /training/enterprise/cosu.html
+
+- title: Best Practices for Interaction & Engagement
+  path: /training/best-ux.html
+  section:
+  - title: Designing Effective Navigation
+    path: /training/design-navigation/index.html
+    custom_link_attributes:
+    - description="How to plan your app's screen hierarchy and forms of navigation so users can effectively and intuitively traverse your app content using various navigation patterns."
+    section:
+    - title: Planning Screens and Their Relationships
+      path: /training/design-navigation/screen-planning.html
+    - title: Planning for Multiple Touchscreen Sizes
+      path: /training/design-navigation/multiple-sizes.html
+    - title: Providing Descendant and Lateral Navigation
+      path: /training/design-navigation/descendant-lateral.html
+    - title: Providing Ancestral and Temporal Navigation
+      path: /training/design-navigation/ancestral-temporal.html
+    - title: "Putting it All Together: Wireframing the Example App"
+      path: /training/design-navigation/wireframing.html
+  - title: Implementing Effective Navigation
+    path: /training/implementing-navigation/index.html
+    custom_link_attributes:
+    - description="How to implement various navigation patterns such as swipe views, a navigation drawer, and up navigation."
+    section:
+    - title: Creating Swipe Views with Tabs
+      path: /training/implementing-navigation/lateral.html
+    - title: Creating a Navigation Drawer
+      path: /training/implementing-navigation/nav-drawer.html
+    - title: Providing Up Navigation
+      path: /training/implementing-navigation/ancestral.html
+    - title: Providing Proper Back Navigation
+      path: /training/implementing-navigation/temporal.html
+    - title: Implementing Descendant Navigation
+      path: /training/implementing-navigation/descendant.html
+  - title: Notifying the User
+    path: /training/notify-user/index.html
+    custom_link_attributes:
+    - description="How to display messages called notifications outside of your application's UI."
+    section:
+    - title: Building a Notification
+      path: /training/notify-user/build-notification.html
+    - title: Preserving Navigation when Starting an Activity
+      path: /training/notify-user/navigation.html
+    - title: Updating Notifications
+      path: /training/notify-user/managing.html
+    - title: Using Big View Styles
+      path: /training/notify-user/expanded.html
+    - title: Displaying Progress in a Notification
+      path: /training/notify-user/display-progress.html
+  - title: Supporting Swipe-to-Refresh
+    path: /training/swipe/index.html
+    custom_link_attributes:
+    - description="How to modify your app's layout to support manual content updates triggered by the swipe-to-refresh gesture."
+    section:
+    - title: Adding Swipe-to-Refresh To Your App
+      path: /training/swipe/add-swipe-interface.html
+    - title: Responding to a Refresh Gesture
+      path: /training/swipe/respond-refresh-request.html
+  - title: Adding Search Functionality
+    path: /training/search/index.html
+    custom_link_attributes:
+    - description="How to properly add a search interface to your app and create a searchable database."
+    section:
+    - title: Setting up the Search Interface
+      path: /training/search/setup.html
+    - title: Storing and Searching for Data
+      path: /training/search/search.html
+    - title: Remaining Backward Compatible
+      path: /training/search/backward-compat.html
+  - title: Making Your App Content Searchable by Google
+    path: /training/app-indexing/index.html
+    custom_link_attributes:
+    - description="How to enable deep linking and indexing of your application content so that users can open this content directly from their mobile search results."
+    section:
+    - title: Enabling Deep Links for App Content
+      path: /training/app-indexing/deep-linking.html
+    - title: Specifying App Content for Indexing
+      path: /training/app-indexing/enabling-app-indexing.html
+  - title: Optimizing Content for the Assistant
+    path: /training/articles/assistant.html
+    custom_link_attributes:
+    - description="Support contextually relevant actions through the Assist API."
+  - title: Handling App Links
+    path: /training/app-links/index.html
+    custom_link_attributes:
+    - description="How to enable the system to handle web requests by taking the user directly to your app instead of your website."
+
+- title: Best Practices for User Interface
+  path: /training/best-ui.html
+  section:
+  - title: Designing for Multiple Screens
+    path: /training/multiscreen/index.html
+    custom_link_attributes:
+    - es-lang="Cómo diseñar aplicaciones para varias pantallas"
+    - ja-lang="複数画面のデザイン"
+    - zh-cn-lang="针对多种屏幕进行设计"
+    - description="How to build a user interface that's flexible enough to fit perfectly on any screen and how to create different interaction patterns that are optimized for different screen sizes."
+    section:
+    - title: Supporting Different Screen Sizes
+      path: /training/multiscreen/screensizes.html
+      custom_link_attributes:
+      - es-lang="Cómo admitir varios tamaños de pantalla"
+      - ja-lang="さまざまな画面サイズのサポート"
+      - ko-lang="다양한 화면 크기 지원"
+      - zh-cn-lang="支持各种屏幕尺寸"
+    - title: Supporting Different Screen Densities
+      path: /training/multiscreen/screendensities.html
+      custom_link_attributes:
+      - es-lang="Cómo admitir varias densidades de pantalla"
+      - ja-lang="さまざまな画面密度のサポート"
+      - zh-cn-lang="支持各种屏幕密度"
+    - title: Implementing Adaptive UI Flows
+      path: /training/multiscreen/adaptui.html
+      custom_link_attributes:
+      - es-lang="Cómo implementar interfaces de usuario adaptables"
+      - ja-lang="順応性のある UI フローの実装"
+      - zh-cn-lang="实施自适应用户界面流程"
+  - title: Adding the App Bar
+    path: /training/appbar/index.html
+    custom_link_attributes:
+    - description="How to use the support library's toolbar widget to implement an app bar that displays properly on a wide range of devices."
+    section:
+    - title: Setting Up the App Bar
+      path: /training/appbar/setting-up.html
+    - title: Adding and Handling Actions
+      path: /training/appbar/actions.html
+    - title: Adding an Up Action
+      path: /training/appbar/up-action.html
+    - title: Action Views and Action Providers
+      path: /training/appbar/action-views.html
+  - title: Showing Pop-Up Messages
+    path: /training/snackbar/index.html
+    custom_link_attributes:
+    - description="How to use the support library's Snackbar widget to display a brief pop-up message."
+    section:
+    - title: Building and Displaying a Pop-Up Message
+      path: /training/snackbar/showing.html
+    - title: Adding an Action to a Message
+      path: /training/snackbar/action.html
+  - title: Creating Custom Views
+    path: /training/custom-views/index.html
+    custom_link_attributes:
+    - description="How to build custom UI widgets that are interactive and smooth."
+    section:
+    - title: Creating a Custom View Class
+      path: /training/custom-views/create-view.html
+    - title: Implementing Custom Drawing
+      path: /training/custom-views/custom-drawing.html
+    - title: Making the View Interactive
+      path: /training/custom-views/making-interactive.html
+    - title: Optimizing the View
+      path: /training/custom-views/optimizing-view.html
+  - title: Creating Backward-Compatible UIs
+    path: /training/backward-compatible-ui/index.html
+    custom_link_attributes:
+    - description="How to use UI components and other APIs from the more recent versions of Android while remaining compatible with older versions of the platform."
+    section:
+    - title: Abstracting the New APIs
+      path: /training/backward-compatible-ui/abstracting.html
+    - title: Proxying to the New APIs
+      path: /training/backward-compatible-ui/new-implementation.html
+    - title: Creating an Implementation with Older APIs
+      path: /training/backward-compatible-ui/older-implementation.html
+    - title: Using the Version-Aware Component
+      path: /training/backward-compatible-ui/using-component.html
+  - title: Implementing Accessibility
+    path: /training/accessibility/index.html
+    custom_link_attributes:
+    - description="How to make your app accessible to users with vision impairment or other physical disabilities."
+    section:
+    - title: Developing Accessible Applications
+      path: /training/accessibility/accessible-app.html
+    - title: Developing Accessibility Services
+      path: /training/accessibility/service.html
+    - title: Accessibility Testing Checklist
+      path: /training/accessibility/testing.html
+  - title: Managing the System UI
+    path: /training/system-ui/index.html
+    custom_link_attributes:
+    - description="How to hide and show status and navigation bars across different versions of Android, while managing the display of other screen components."
+    section:
+    - title: Dimming the System Bars
+      path: /training/system-ui/dim.html
+    - title: Hiding the Status Bar
+      path: /training/system-ui/status.html
+    - title: Hiding the Navigation Bar
+      path: /training/system-ui/navigation.html
+    - title: Using Immersive Full-Screen Mode
+      path: /training/system-ui/immersive.html
+    - title: Responding to UI Visibility Changes
+      path: /training/system-ui/visibility.html
+  - title: Creating Apps with Material Design
+    path: /training/material/index.html
+    custom_link_attributes:
+    - es-lang="Crear aplicaciones con Material Design"
+    - in-lang="Desain Bahan untuk Pengembang"
+    - ja-lang="マテリアル デザインでのアプリ作成"
+    - ko-lang="개발자를 위한 머티리얼 디자인"
+    - pt-br-lang="Material Design para desenvolvedores"
+    - ru-lang="Создание приложений с помощью Material Design"
+    - vi-lang="Material Design cho Nhà phát triển"
+    - zh-cn-lang="面向开发者的材料设计"
+    - zh-tw-lang="開發人員材料設計"
+    - description="How to implement material design on Android."
+    section:
+    - title: Getting Started
+      path: /training/material/get-started.html
+      custom_link_attributes:
+      - es-lang="Comencemos"
+      - in-lang="Memulai"
+      - ja-lang="スタート ガイド"
+      - ko-lang="시작하기"
+      - pt-br-lang="Como iniciar"
+      - ru-lang="Начало работы"
+      - vi-lang="Bắt đầu"
+      - zh-cn-lang="入门指南"
+      - zh-tw-lang="開始使用"
+    - title: Using the Material Theme
+      path: /training/material/theme.html
+      custom_link_attributes:
+      - es-lang="Usar el tema Material"
+      - in-lang="Menggunakan Tema Bahan"
+      - ja-lang="マテリアル テーマの使用"
+      - ko-lang="머티어리얼 테마 사용"
+      - pt-br-lang="Como usar o tema do Material"
+      - ru-lang="Использование темы Material Design"
+      - vi-lang="Sử dụng Chủ đề Material"
+      - zh-cn-lang="使用材料主题"
+      - zh-tw-lang="使用材料設計風格"
+    - title: Creating Lists and Cards
+      path: /training/material/lists-cards.html
+      custom_link_attributes:
+      - es-lang="Crear listas y tarjetas"
+      - in-lang="Membuat Daftar dan Kartu"
+      - ja-lang="リストとカードの作成"
+      - ko-lang="목록 및 카드 생성"
+      - pt-br-lang="Como criar listas e cartões"
+      - ru-lang="Создание списков и подсказок"
+      - vi-lang="Tạo Danh sách và Thẻ"
+      - zh-cn-lang="创建列表与卡片"
+      - zh-tw-lang="建立清單和卡片"
+    - title: Defining Shadows and Clipping Views
+      path: /training/material/shadows-clipping.html
+      custom_link_attributes:
+      - es-lang="Definir vistas de recorte y sombras"
+      - in-lang="Mendefinisikan Bayangan dan Memangkas Tampilan"
+      - ja-lang="シャドウとクリッピング ビューの定義"
+      - ko-lang="그림자 정의 및 뷰 클리핑"
+      - pt-br-lang="Como definir sombras e recortar visualizações"
+      - ru-lang="Определение теней и обрезка представлений"
+      - vi-lang="Định nghĩa Đổ bóng và Dạng xem Cắt hình"
+      - zh-cn-lang="定义阴影与裁剪视图"
+      - zh-tw-lang="定義陰影和裁剪檢視"
+    - title: Working with Drawables
+      path: /training/material/drawables.html
+      custom_link_attributes:
+      - es-lang="Trabajar con interfaces dibujables"
+      - in-lang="Bekerja dengan Drawable"
+      - ja-lang="ドローアブルの使用"
+      - ko-lang="Drawable 사용"
+      - pt-br-lang="Como trabalhar com desenháveis"
+      - ru-lang="Работа с элементами дизайна"
+      - vi-lang="Làm việc với Nội dung vẽ được"
+      - zh-cn-lang="使用 Drawables"
+      - zh-tw-lang="使用可繪項目"
+    - title: Defining Custom Animations
+      path: /training/material/animations.html
+      custom_link_attributes:
+      - es-lang="Definir animaciones personalizadas"
+      - in-lang="Mendefinisikan Animasi Custom"
+      - ja-lang="カスタム アニメーションの定義"
+      - ko-lang="사용자지정 애니메이션 정의"
+      - pt-br-lang="Como definir animações personalizadas"
+      - ru-lang="Определение настраиваемой анимации"
+      - vi-lang="Định nghĩa Hoạt hình Tùy chỉnh"
+      - zh-cn-lang="定义定制动画"
+      - zh-tw-lang="定義自訂動畫"
+    - title: Maintaining Compatibility
+      path: /training/material/compatibility.html
+      custom_link_attributes:
+      - es-lang="Mantener la compatibilidad"
+      - in-lang="Mempertahankan Kompatibilitas"
+      - ja-lang="互換性の維持"
+      - ko-lang="호환성 유지"
+      - pt-br-lang="Como manter a compatibilidade"
+      - ru-lang="Обеспечение совместимости"
+      - vi-lang="Duy trì Tính tương thích"
+      - zh-cn-lang="维护兼容性"
+      - zh-tw-lang="維持相容性"
+
+- title: Best Practices for User Input
+  path: /training/best-user-input.html
+  section:
+  - title: Using Touch Gestures
+    path: /training/gestures/index.html
+    custom_link_attributes:
+    - description="How to write apps that allow users to interact with the touch screen via touch gestures."
+    section:
+    - title: Detecting Common Gestures
+      path: /training/gestures/detector.html
+    - title: Tracking Movement
+      path: /training/gestures/movement.html
+    - title: Animating a Scroll Gesture
+      path: /training/gestures/scroll.html
+    - title: Handling Multi-Touch Gestures
+      path: /training/gestures/multi.html
+    - title: Dragging and Scaling
+      path: /training/gestures/scale.html
+    - title: Managing Touch Events in a ViewGroup
+      path: /training/gestures/viewgroup.html
+  - title: Handling Keyboard Input
+    path: /training/keyboard-input/index.html
+    custom_link_attributes:
+    - description="How to specify the appearance and behaviors of soft input methods (such as on-screen keyboards) and how to optimize the experience with hardware keyboards."
+    section:
+    - title: Specifying the Input Method Type
+      path: /training/keyboard-input/style.html
+    - title: Handling Input Method Visibility
+      path: /training/keyboard-input/visibility.html
+    - title: Supporting Keyboard Navigation
+      path: /training/keyboard-input/navigation.html
+    - title: Handling Keyboard Actions
+      path: /training/keyboard-input/commands.html
+  - title: Supporting Game Controllers
+    path: /training/game-controllers/index.html
+    custom_link_attributes:
+    - description="How to write apps that support game controllers."
+    section:
+    - title: Handling Controller Actions
+      path: /training/game-controllers/controller-input.html
+    - title: Supporting Controllers Across Android Versions
+      path: /training/game-controllers/compatibility.html
+    - title: Supporting Multiple Game Controllers
+      path: /training/game-controllers/multiple-controllers.html
+
+- title: Best Practices for Background Jobs
+  path: /training/best-background.html
+  section:
+  - title: Running in a Background Service
+    path: /training/run-background-service/index.html
+    custom_link_attributes:
+    - description="How to improve UI performance and responsiveness by sending work to a Service running in the background"
+    section:
+    - title: Creating a Background Service
+      path: /training/run-background-service/create-service.html
+    - title: Sending Work Requests to the Background Service
+      path: /training/run-background-service/send-request.html
+    - title: Reporting Work Status
+      path: /training/run-background-service/report-status.html
+  - title: Loading Data in the Background
+    path: /training/load-data-background/index.html
+    custom_link_attributes:
+    - description="How to use CursorLoader to query data without affecting UI responsiveness."
+    section:
+    - title: Running a Query with a CursorLoader
+      path: /training/load-data-background/setup-loader.html
+    - title: Handling the Results
+      path: /training/load-data-background/handle-results.html
+  - title: Managing Device Awake State
+    path: /training/scheduling/index.html
+    custom_link_attributes:
+    - description="How to use repeating alarms and wake locks to run background jobs."
+    section:
+    - title: Keeping the Device Awake
+      path: /training/scheduling/wakelock.html
+    - title: Scheduling Repeating Alarms
+      path: /training/scheduling/alarms.html
+
+- title: Best Practices for Performance
+  path: /training/best-performance.html
+  section:
+  - title: Managing Your App's Memory
+    path: /training/articles/memory.html
+    custom_link_attributes:
+    - description="How to keep your app's memory footprint small in order to improve performance on a variety of mobile devices."
+  - title: Performance Tips
+    path: /training/articles/perf-tips.html
+    custom_link_attributes:
+    - description="How to optimize your app's performance in various ways to improve its responsiveness and battery efficiency."
+  - title: Improving Layout Performance
+    path: /training/improving-layouts/index.html
+    custom_link_attributes:
+    - description="How to identify problems in your app's layout performance and improve the UI responsiveness."
+    section:
+    - title: Optimizing Layout Hierarchies
+      path: /training/improving-layouts/optimizing-layout.html
+    - title: Re-using Layouts with <include/>
+      path: /training/improving-layouts/reusing-layouts.html
+    - title: Loading Views On Demand
+      path: /training/improving-layouts/loading-ondemand.html
+    - title: Making ListView Scrolling Smooth
+      path: /training/improving-layouts/smooth-scrolling.html
+  - title: Optimizing Battery Life
+    path: /training/monitoring-device-state/index.html
+    custom_link_attributes:
+    - es-lang="Cómo optimizar la duración de la batería"
+    - ja-lang="電池消費量の最適化"
+    - zh-cn-lang="优化电池使用时间"
+    - description="How to minimize the amount of power your app requires by adapting to current power conditions and performing power-hungry tasks at proper intervals."
+    section:
+    - title: Reducing Network Battery Drain
+      path: /training/performance/battery/network/index.html
+      section:
+      - title: Collecting Network Traffic Data
+        path: /training/performance/battery/network/gather-data.html
+      - title: Analyzing Network Traffic Data
+        path: /training/performance/battery/network/analyze-data.html
+      - title: Optimizing User-Initiated Network Use
+        path: /training/performance/battery/network/action-user-traffic.html
+      - title: Optimizing App-Initiated Network Use
+        path: /training/performance/battery/network/action-app-traffic.html
+      - title: Optimizing Server-Initiated Network Use
+        path: /training/performance/battery/network/action-server-traffic.html
+      - title: Optimizing General Network Use
+        path: /training/performance/battery/network/action-any-traffic.html
+    - title: Optimizing for Doze and App Standby
+      path: /training/monitoring-device-state/doze-standby.html
+    - title: Monitoring the Battery Level and Charging State
+      path: /training/monitoring-device-state/battery-monitoring.html
+      custom_link_attributes:
+      - es-lang="Cómo controlar el nivel de batería y el estado de carga"
+      - ja-lang="電池残量と充電状態の監視"
+      - zh-cn-lang="监控电池电量和充电状态"
+    - title: Determining and Monitoring the Docking State and Type
+      path: /training/monitoring-device-state/docking-monitoring.html
+      custom_link_attributes:
+      - es-lang="Cómo determinar y controlar el tipo de conector y el estado de la conexión"
+      - ja-lang="ホルダーの装着状態とタイプの特定と監視"
+      - zh-cn-lang="确定和监控基座对接状态和类型"
+    - title: Determining and Monitoring the Connectivity Status
+      path: /training/monitoring-device-state/connectivity-monitoring.html
+      custom_link_attributes:
+      - es-lang="Cómo determinar y controlar el estado de la conectividad"
+      - ja-lang="接続状態の特定と監視"
+      - zh-cn-lang="确定和监控网络连接状态"
+    - title: Manipulating Broadcast Receivers On Demand
+      path: /training/monitoring-device-state/manifest-receivers.html
+      custom_link_attributes:
+      - es-lang="Cómo manipular los receptores de emisión bajo demanda"
+      - ja-lang="オンデマンドでのブロードキャスト レシーバ操作"
+      - zh-cn-lang="根据需要操作广播接收器"
+  - title: Sending Operations to Multiple Threads
+    path: /training/multiple-threads/index.html
+    custom_link_attributes:
+    - description="How to improve the performance and scalability of long-running operations by dispatching work to multiple threads."
+    section:
+    - title: Specifying the Code to Run on a Thread
+      path: /training/multiple-threads/define-runnable.html
+    - title: Creating a Manager for Multiple Threads
+      path: /training/multiple-threads/create-threadpool.html
+    - title: Running Code on a Thread Pool Thread
+      path: /training/multiple-threads/run-code.html
+    - title: Communicating with the UI Thread
+      path: /training/multiple-threads/communicate-ui.html
+  - title: Keeping Your App Responsive
+    path: /training/articles/perf-anr.html
+    custom_link_attributes:
+    - description="How to keep your app responsive to user interaction so the UI does not lock-up and display an \"Application Not Responding\" dialog."
+  - title: JNI Tips
+    path: /training/articles/perf-jni.html
+    custom_link_attributes:
+    - description="How to efficiently use the Java Native Interface with the Android NDK."
+  - title: SMP Primer for Android
+    path: /training/articles/smp.html
+    custom_link_attributes:
+    - description="Tips for coding Android apps on symmetric multiprocessor systems."
+
+- title: Best Practices for Security & Privacy
+  path: /training/best-security.html
+  section:
+  - title: Security Tips
+    path: /training/articles/security-tips.html
+    custom_link_attributes:
+    - description="How to perform various tasks and keep your app's data and your user's data secure."
+  - title: Security with HTTPS and SSL
+    path: /training/articles/security-ssl.html
+    custom_link_attributes:
+    - description="How to ensure that your app is secure when performing network transactions."
+  - title: Updating Your Security Provider to Protect Against SSL Exploits
+    path: /training/articles/security-gms-provider.html
+    custom_link_attributes:
+    - description="How to use and update Google Play services security provider, to protect against SSL exploits."
+  - title: Checking Device Compatibility with SafetyNet
+    path: /training/safetynet/index.html
+    custom_link_attributes:
+    - description="How to use the SafetyNet service to analyze a device where your app is running and get information about its compatibility with your app."
+  - title: Enhancing Security with Device Management Policies
+    path: /training/enterprise/device-management-policy.html
+    custom_link_attributes:
+    - description="How to create an application that enforces security policies on devices."
+
+- title: Best Practices for Permissions & Identifiers
+  path: /training/best-permissions-ids.html
+  section:
+  - title: Permissions and User Data
+    path: /training/articles/user-data-overview.html
+    custom_link_attributes:
+    - description="Overview of app permissions on Android and how they affect your users."
+  - title: Best Practices for App Permissions
+    path: /training/articles/user-data-permissions.html
+    custom_link_attributes:
+    - description="How to manage permissions the right way for users."
+  - title: Best Practices for Unique Identifiers
+    path: /training/articles/user-data-ids.html
+    custom_link_attributes:
+    - description="Unique identifiers available and how to choose the right one for your use case."
+
+- title: Best Practices for Testing
+  path: /training/testing/index.html
+  section:
+  - title: Getting Started with Testing
+    path: /training/testing/start/index.html
+    custom_link_attributes:
+    - description="How to get started with testing your Android applications."
+  - title: Building Effective Unit Tests
+    path: /training/testing/unit-testing/index.html
+    custom_link_attributes:
+    - description="How to build effective unit tests for Android apps."
+    section:
+    - title: Building Local Unit Tests
+      path: /training/testing/unit-testing/local-unit-tests.html
+    - title: Building Instrumented Unit Tests
+      path: /training/testing/unit-testing/instrumented-unit-tests.html
+  - title: Automating UI Tests
+    path: /training/testing/ui-testing/index.html
+    custom_link_attributes:
+    - description="How to automate your user interface tests for Android apps."
+    section:
+    - title: Testing UI for a Single App
+      path: /training/testing/ui-testing/espresso-testing.html
+    - title: Testing UI for Multiple Apps
+      path: /training/testing/ui-testing/uiautomator-testing.html
+  - title: Testing App Component Integrations
+    path: /training/testing/integration-testing/index.html
+    custom_link_attributes:
+    - description="How to build effective integration tests for Android apps."
+    section:
+    - title: Testing Your Service
+      path: /training/testing/integration-testing/service-testing.html
+    - title: Testing Your Content Provider
+      path: /training/testing/integration-testing/content-provider-testing.html
+  - title: Testing Display Performance
+    path: /training/testing/performance.html
+    custom_link_attributes:
+    - description="How to automate UI performance testing."
+
+- title: Using Google Play to Distribute & Monetize
+  path: /training/distribute.html
+  section:
+  - title: Selling In-app Products
+    path: /training/in-app-billing/index.html
+    custom_link_attributes:
+    - description="How to sell in-app products from your application using In-app Billing."
+    section:
+    - title: Preparing Your App
+      path: /training/in-app-billing/preparing-iab-app.html
+    - title: Establishing Products for Sale
+      path: /training/in-app-billing/list-iab-products.html
+    - title: Purchasing Products
+      path: /training/in-app-billing/purchase-iab-products.html
+    - title: Testing Your App
+      path: /training/in-app-billing/test-iab-app.html
+  - title: Maintaining Multiple APKs
+    path: /training/multiple-apks/index.html
+    custom_link_attributes:
+    - description="How to publish your app on Google Play with separate APKs that target different devices, while using a single app listing."
+    section:
+    - title: Creating Multiple APKs for Different API Levels
+      path: /training/multiple-apks/api.html
+    - title: Creating Multiple APKs for Different Screen Sizes
+      path: /training/multiple-apks/screensize.html
+    - title: Creating Multiple APKs for Different GL Textures
+      path: /training/multiple-apks/texture.html
+    - title: Creating Multiple APKs with 2+ Dimensions
+      path: /training/multiple-apks/multiple.html
diff --git a/docs/html/training/accessibility/index.jd b/docs/html/training/accessibility/index.jd
index ea54dc4..7a5d6d7 100644
--- a/docs/html/training/accessibility/index.jd
+++ b/docs/html/training/accessibility/index.jd
@@ -50,5 +50,7 @@
     and uses that information to communicate with the user.  The example will
     use a text-to-speech engine to speak to the user.</dd>
 
+    <dt><b><a href="testing.html">Accessibility Checklist</a></b></dt>
+    <dd>Learn how to test your app for accessibility.</dd>
 </dl>
 
diff --git a/docs/html/training/accessibility/service.jd b/docs/html/training/accessibility/service.jd
old mode 100644
new mode 100755
index 953c558..5b99c46
--- a/docs/html/training/accessibility/service.jd
+++ b/docs/html/training/accessibility/service.jd
@@ -132,7 +132,7 @@
 }
 </pre>
 
-<p>Starting with Android 4.0, there is a second option available: configure the
+<p>The second option is to configure the
 service using an XML file.  Certain configuration options like
 {@link android.R.attr#canRetrieveWindowContent} are only available if you
 configure your service using XML.  The same configuration options above, defined
@@ -201,8 +201,7 @@
 </pre>
 
 <h2 id="query">Query the View Heirarchy for More Context</h2>
-<p>This step is optional, but highly useful.  One of the new features in Android
-4.0 (API Level 14) is the ability for an
+<p>This step is optional, but highly useful. The Android platform provides the ability for an
 {@link android.accessibilityservice.AccessibilityService} to query the view
 hierarchy, collecting information about the UI component that generated an event, and
 its parent and children.  In order to do this, make sure that you set the
diff --git a/docs/html/training/accessibility/testing.jd b/docs/html/training/accessibility/testing.jd
new file mode 100644
index 0000000..6563f4e
--- /dev/null
+++ b/docs/html/training/accessibility/testing.jd
@@ -0,0 +1,257 @@
+page.title=Accessibility Testing Checklist
+page.tags=testing,accessibility
+
+trainingnavtop=true
+startpage=true
+@jd:body
+
+<div id="tb-wrapper">
+  <div id="tb">
+  <h2>Checklist sections</h2>
+  <ol>
+    <li><a href="#goals">Testing Goals</a></li>
+    <li><a href="#requirements">Testing Requirements</a></li>
+    <li><a href="#recommendations">Testing Recommendations</a></li>
+    <li><a href="#special-cases">Special Cases and Considerations</a></li>
+    <li><a href="#how-to">Testing Accessibility Features</a>
+      <ol>
+        <li><a href="#test-audibles">Testing audible feedback</a></li>
+        <li><a href="#test-navigation">Testing focus navigation</a></li>
+        <li><a href="#test-gestures">Testing gesture navigation</a></li>
+      </ol>
+    </li>
+  </ol>
+
+  <h2>You should also read</h2>
+    <ol>
+      <li>
+        <a href="{@docRoot}guide/topics/ui/accessibility/checklist.html">
+        Accessibility Developer Checklist</a>
+      </li>
+      <li>
+        <a href="{@docRoot}design/patterns/accessibility.html">
+        Android Design: Accessibility</a>
+      </li>
+      <li>
+        <a href="{@docRoot}guide/topics/ui/accessibility/apps.html">
+        Making Applications Accessible</a>
+      </li>
+    </ol>
+  </div>
+</div>
+<p>
+  Testing is an important part of making your application accessible to users with varying
+  abilities. Following <a href="{@docRoot}design/patterns/accessibility.html">design</a> and
+  <a href="{@docRoot}guide/topics/ui/accessibility/checklist.html">development</a> guidelines for
+  accessibility are important steps toward that goal, but testing for accessibility can uncover
+  problems with user interaction that are not obvious during design and development.</p>
+
+<p>This accessibility testing checklist guides you through the important aspects of
+  accessibility testing, including overall goals, required testing steps, recommended testing and
+  special considerations. This document also discusses how to enable accessibility features on
+  Android devices for testing purposes.</p>
+
+
+<h2 id="goals">Testing Goals</h2>
+
+<p>Your accessibility testing should have the following, high level goals:</p>
+
+<ul>
+  <li>Set up and use the application without sighted assistance</li>
+  <li>All task workflows in the application can be easily navigated using directional controls and
+    provide clear and appropriate feedback</li>
+</ul>
+
+
+<h2 id="requirements">Testing Requirements</h2>
+
+<p>The following tests must be completed in order to ensure a minimum level of application
+  accessibility.</p>
+
+<ol>
+  <li><strong>Directional controls:</strong> Verify that the application can be operated
+    without the use of a touch screen. Attempt to use only directional controls to accomplish the
+    primary tasks in the application. Use the keyboard and directional-pad (D-Pad) controls in the
+    Android <a href="{@docRoot}tools/devices/emulator.html">Emulator</a> or use
+    <a href="http://support.google.com/nexus/bin/answer.py?hl=en&answer=2700718">gesture
+    navigation</a> on devices with Android 4.1 (API Level 16) or higher.
+    <p class="note"><strong>Note:</strong> Keyboards and D-pads provide different navigation paths
+    than accessibility gestures. While gestures allow users to focus on nearly any on-screen
+    content, keyboard and D-pad navigation only allow focus on input fields and buttons.</p>
+    </li>
+  <li><strong>TalkBack audio prompts:</strong> Verify that user interface controls that provide
+    information (graphics or text) or allow user action have clear and accurate audio descriptions
+    when <a href="#testing-talkback">TalkBack is enabled</a> and controls are focused. Use
+    directional controls to move focus between application layout elements.</li>
+  <li><strong>Explore by Touch prompts:</strong> Verify that user interface controls that
+    provide information (graphics or text) or allow user action have appropriate audio descriptions
+    when <a href="#testing-ebt">Explore by Touch is enabled</a>. There should be no
+    regions where contents or controls do not provide an audio description.</li>
+  <li><strong>Touchable control sizes:</strong> All controls where a user can select or take an
+    action must be a minimum of 48 dp (approximately 9mm) in length and width, as recommended by
+    <a href="{@docRoot}design/patterns/accessibility.html">Android Design</a>.</li>
+  <li><strong>Gestures work with TalkBack enabled:</strong> Verify that app-specific gestures,
+    such as zooming images, scrolling lists, swiping between pages or navigating carousel controls
+    continue to work when <a href="#testing-talkback">TalkBack is enabled</a>. If these gestures do
+    not function, then an alternative interface for these actions must be provided.</li>
+  <li><strong>No audio-only feedback:</strong> Audio feedback must always have a secondary
+    feedback mechanism to support users who are deaf or hard of hearing, for example: A sound alert
+    for the arrival of a message should also be accompanied by a system
+    {@link android.app.Notification}, haptic feedback (if available) or another visual alert.</li>
+</ol>
+
+
+<h2 id="recommendations">Testing Recommendations</h2>
+
+<p>The following tests are recommended for ensuring the accessibility of your application. If you
+  do not test these items, it may impact the overall accessibility and quality of your
+  application.</p>
+
+<ol>
+  <li><strong>Repetitive audio prompting:</strong> Check that closely related controls (such as
+    items with multiple components in a list) do not simply repeat the same audio prompt. For
+    example, in a contacts list that contains a contact picture, written name and title, the prompts
+    should not simply repeat “Bob Smith” for each item.</li>
+  <li><strong>Audio prompt overloading or underloading:</strong> Check that closely related
+    controls provide an appropriate level of audio information that enables users to understand and
+    act on a screen element. Too little or too much prompting can make it difficult to understand
+    and use a control.</li>
+</ol>
+
+
+<h2 id="special-cases">Special Cases and Considerations</h2>
+
+<p>The following list describes specific situations that should be tested to ensure an
+  accessible app. Some, none or all of the cases described here may apply to your application. Be
+  sure to review this list to find out if these special cases apply and take appropriate action.</p>
+
+<ol>
+  <li><strong>Review developer special cases and considerations:</strong> Review the list of
+    <a href="{@docRoot}guide/topics/ui/accessibility/checklist.html#special-cases">special cases</a>
+     for accessibility development and test your application for the cases that apply.</li>
+  <li><strong>Prompts for controls that change function:</strong> Buttons or other controls
+    that change function due to application context or workflow must provide audio prompts
+    appropriate to their current function. For example, a button that changes function from play
+    video to pause video should provide an audio prompt which is appropriate to its current state.</li>
+  <li><strong>Video playback and captioning:</strong> If the application provides video
+    playback, verify that it supports captioning and subtitles to assist users who are deaf or hard
+    of hearing. The video playback controls must clearly indicate if captioning is available for a
+    video and provide a clear way of enabling captions.</li>
+</ol>
+
+
+<h2 id="how-to">Testing Accessibility Features</h2>
+
+<p>Testing of accessibility features such as TalkBack, Explore by Touch and accessibility Gestures
+requires setup of your testing device. This section describes how to enable these features for
+accessibility testing.</p>
+
+
+<h3 id="test-audibles">Testing audible feedback</h3>
+
+<p>Audible accessibility feedback features on Android devices provide audio prompts that speaks
+  the screen content as you move around an application. By enabling these features on an Android
+  device, you can test the experience of users with blindness or low-vision using your application.
+</p>
+
+<p>Audible feedback for users on Android is typically provided by TalkBack accessibility service and
+the Explore by Touch system feature. The TalkBack accessibility service comes preinstalled on most
+Android devices and can also be downloaded for free from
+<a href="https://play.google.com/store/apps/details?id=com.google.android.marvin.talkback">Google
+Play</a>. The Explore by Touch system feature is available on devices running Android 4.0 and later.
+</p>
+
+<h4 id="testing-talkback">Testing with TalkBack</h4>
+
+<p>The <em>TalkBack</em> accessibility service works by speaking the contents of user interface
+controls as the user moves focus onto controls. This service should be enabled as part of testing
+focus navigation and audible prompts.</p>
+
+<p>To enable the TalkBack accessibility service:</p>
+<ol>
+  <li>Launch the <strong>Settings</strong> application.</li>
+  <li>Navigate to the <strong>Accessibility</strong> category and select it.</li>
+  <li>Select <strong>Accessibility</strong> to enable it.</li>
+  <li>Select <strong>TalkBack</strong> to enable it.</li>
+</ol>
+
+<p class="note">
+  <strong>Note:</strong> While TalkBack is the most available Android accessibility service for
+  users with disabilities, other accessibility services are available and may be installed by users.
+</p>
+
+<p>For more information about using TalkBack, see
+<a href="https://support.google.com/accessibility/android/topic/3529932">TalkBack</a>.</p>
+
+<h4 id="testing-ebt">Testing with Explore by Touch</h4>
+
+<p>The <em>Explore by Touch</em> system feature is available on devices running Android 4.0 and
+  later, and works by enabling a special accessibility mode that allows users to drag a finger
+  around the interface of an application and hear the contents of the screen spoken. This feature
+  does not require screen elements to be focused using an directional controller, but listens for
+  hover events over user interface controls.
+</p>
+
+<p>To enable Explore by Touch on Android 4.0 and later:</p>
+<ol>
+  <li>Launch the <strong>Settings</strong> application.</li>
+  <li>Navigate to the <strong>Accessibility</strong> category and select it.</li>
+  <li>Select the <strong>TalkBack</strong> to enable it.
+      <p class="note"><strong>Note:</strong> On Android 4.1 (API Level 16) and higher, the system
+      provides a popup message to enable Explore by Touch. On older versions, you must follow the
+      step below.</p>
+  </li>
+  <li>Return to the <strong>Accessibility</strong> category and select <strong>Explore by
+Touch</strong> to enable it.
+    <p class="note"><strong>Note:</strong> You must turn on TalkBack <em>first</em>, otherwise this
+option is not available.</p>
+  </li>
+</ol>
+
+<p>For more information about using the Explore by Touch features, see
+<a href="https://support.google.com/accessibility/android/answer/6006598">Touch Exploration</a>.</p>
+
+<h3 id="test-navigation">Testing focus navigation</h3>
+
+<p>Focus navigation is the use of directional controls to navigate between the individual user
+  interface elements of an application in order to operate it. Users with limited vision or limited
+  manual dexterity often use this mode of navigation instead of touch navigation. As part of
+  accessibility testing, you should verify that your application can be operated using only
+  directional controls.</p>
+
+<p>You can test navigation of your application using only focus controls, even if your test devices
+  does not have a directional controller. The <a href="{@docRoot}tools/help/emulator.html">Android
+  Emulator</a> provides a simulated directional controller that you can use to test navigation. You
+  can also use a software-based directional controller, such as the one provided by the
+  <a href="https://play.google.com/store/apps/details?id=com.googlecode.eyesfree.inputmethod.latin"
+  >Eyes-Free Keyboard</a> to simulate use of a D-pad on a test device that does not have a physical
+  D-pad.</p>
+
+
+<h3 id="test-gestures">Testing gesture navigation</h3>
+
+<p>Gesture navigation is an accessibility navigation mode that allows users to navigate Android
+  devices and applications using specific
+  <a href="https://support.google.com/accessibility/android/answer/6006598">gestures</a>. This
+  navigation mode is available on Android 4.1 (API Level 16) and higher.</p>
+
+<p class="note"><strong>Note:</strong> Accessibility gestures provide a different navigation path
+than keyboards and D-pads. While gestures allow users to focus on nearly any on-screen
+content, keyboard and D-pad navigation only allow focus on input fields and buttons.</p>
+
+<p>To enable gesture navigation on Android 4.1 and later:</p>
+<ul>
+  <li>Enable both TalkBack and the Explore by Touch feature as described in the
+    <a href="#testing-ebt">Testing with Explore by Touch</a>. When <em>both</em> of these
+    features are enabled, accessibility gestures are automatically enabled.</li>
+  <li>You can change gesture settings using <strong>Settings &gt; Accessibility &gt; TalkBack &gt;
+    Settings &gt; Manage shortcut gestures</strong>.
+</ul>
+
+<p>For more information about using Explore by Touch accessibility gestures, see
+<a href="https://support.google.com/accessibility/android/answer/6006598">Touch Exploration</a>.</p>
+
+<p class="note">
+  <strong>Note:</strong> Accessibility services other than TalkBack may map accessibility gestures
+  to different user actions. If gestures are not producing the expected actions during testing, try
+  disabling other accessibility services before proceeding.</p>
\ No newline at end of file
diff --git a/docs/html/training/activity-testing/activity-basic-testing.jd b/docs/html/training/activity-testing/activity-basic-testing.jd
deleted file mode 100644
index 6f39bcd..0000000
--- a/docs/html/training/activity-testing/activity-basic-testing.jd
+++ /dev/null
@@ -1,227 +0,0 @@
-page.title=Creating and Running a Test Case
-trainingnavtop=true
-
-@jd:body
-
-<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
-
-<h2>This lesson teaches you to</h2>
-<ol>
-  <li><a href="#testcase">Create a Test Case for Activity Testing</a>
-      <ol>
-      <li><a href="#fixture">Set Up Your Test Fixture</a></li>
-      <li><a href="#preconditions">Add Test Preconditions</a></li>
-      <li><a href="#test_method">Add Test Methods to Verify Your Activity</a></li>
-      </ol>
-  </li>
-  <li><a href="#build_run">Build and Run Your Test</a></li>
-</ol>
-
-<h2>You should also read</h2>
-<ul>
-<li><a href="{@docRoot}tools/testing/testing_android.html">Testing
-Fundamentals</a></li>
-</ul>
-
-</div>
-</div>
-<p>In order to verify that there are no regressions in the layout design and
-functional behavior in your application, it's important to
-create a test for each {@link android.app.Activity} in your application. For
-each test, you need to create the individual parts of a test case, including
-the test fixture, preconditions test method, and {@link android.app.Activity}
-test methods. You can then run your test to get a test report. If any test
-method fails, this might indicate a potential defect in your code.</p>
-<p class="note"><strong>Note:</strong> In the Test-Driven Development (TDD)
-approach, instead of writing most or all of your app code up-front and then
-running tests later in the development cycle, you would progressively write
-just enough production code to satisfy your test dependencies, update your
-test cases to reflect new functional requirements, and iterate repeatedly this
-way.</p>
-
-<h2 id="testcase">Create a Test Case</h2>
-<p>{@link android.app.Activity} tests are written in a structured way.
-Make sure to put your tests in a separate package, distinct from the code under
-test.</p>
-<p>By convention, your test package name should follow the same name as the
-application package, suffixed with <strong>".tests"</strong>. In the test package
-you created, add the Java class for your test case. By convention, your test case
-name should also follow the same name as the Java or Android class that you
-want to test, but suffixed with <strong>“Test”</strong>.</p>
-<p>To create a new test case in Eclipse:</p>
-<ol type="a">
-   <li>In the Package Explorer, right-click on the {@code /src} directory for
-your test project and select <strong>New &gt; Package</strong>.</li>
-   <li>Set the <strong>Name</strong> field to
-{@code <your_app_package_name>.tests} (for example,
-{@code com.example.android.testingfun.tests}) and click
-<strong>Finish</strong>.</li>
-   <li>Right-click on the test package you created, and select
-<strong>New &gt; Class</strong>.</li>
-    <li>Set the <strong>Name</strong> field to
-{@code <your_app_activity_name>Test} (for example,
-{@code MyFirstTestActivityTest}) and click <strong>Finish</strong>.</li>
-</ol>
-
-<h3 id="fixture">Set Up Your Test Fixture</h3>
-<p>A <em>test fixture</em> consists of objects that must be initialized for
-running one or more tests. To set up the test fixture, you can override the
-{@link junit.framework.TestCase#setUp()} and
-{@link junit.framework.TestCase#tearDown()} methods in your test. The
-test runner automatically runs {@link junit.framework.TestCase#setUp()} before
-running any other test methods, and {@link junit.framework.TestCase#tearDown()}
-at the end of each test method execution. You can use these methods to keep
-the code for test initialization and clean up separate from the tests methods.
-</p>
-<p>To set up your test fixture in Eclipse:</p>
-<ol>
-<li>In the Package Explorer, double-click on the test case that you created
-earlier to bring up the Eclipse Java editor, then modify your test case class
-to extend one of the sub-classes of {@link android.test.ActivityTestCase}.
-<p>For example:</p>
-<pre>
-public class MyFirstTestActivityTest
-        extends ActivityInstrumentationTestCase2&lt;MyFirstTestActivity&gt; {
-</pre>
-</li>
-<li>Next, add the constructor and {@link junit.framework.TestCase#setUp()}
-methods to your test case, and add variable declarations for the
-{@link android.app.Activity} that you want to test.</p>
-<p>For example:</p>
-<pre>
-public class MyFirstTestActivityTest
-        extends ActivityInstrumentationTestCase2&lt;MyFirstTestActivity&gt; {
-
-    private MyFirstTestActivity mFirstTestActivity;
-    private TextView mFirstTestText;
-
-    public MyFirstTestActivityTest() {
-        super(MyFirstTestActivity.class);
-    }
-
-    &#64;Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mFirstTestActivity = getActivity();
-        mFirstTestText =
-                (TextView) mFirstTestActivity
-                .findViewById(R.id.my_first_test_text_view);
-    }
-}
-</pre>
-<p>The constructor is invoked by the test runner to instantiate the test
-class, while the {@link junit.framework.TestCase#setUp()} method is invoked by
-the test runner before it runs any tests in the test class.</p>
-</li>
-</ol>
-
-<p>Typically, in the {@link junit.framework.TestCase#setUp()} method, you
-should:</p>
-<ul>
-<li>Invoke the superclass constructor for
-{@link junit.framework.TestCase#setUp()}, which is required by JUnit.</li>
-<li>Initialize your test fixture state by:
-   <ul>
-   <li>Defining the instance variables that store the state of the fixture.</li>
-   <li>Creating and storing a reference to an instance of the
-{@link android.app.Activity} under test.</li>
-   <li>Obtaining a reference to any UI components in the
-{@link android.app.Activity} that you want to test.</li>
-   </ul>
-</ul>
-
-<p>You can use the
-{@link android.test.ActivityInstrumentationTestCase2#getActivity()} method to
-get a reference to the {@link android.app.Activity} under test.</p>
-
-<h3 id="preconditions">Add Test Preconditions</h3>
-<p>As a sanity check, it is good practice to verify that the test fixture has
-been set up correctly, and the objects that you want to test have been correctly
-instantiated or initialized. That way, you won’t have to see
-tests failing because something was wrong with the setup of your test fixture.
-By convention, the method for verifying your test fixture is called
-{@code testPreconditions()}.</p>
-
-<p>For example, you might want to add a {@code testPreconditons()} method like
-this to your test case:</p>
-
-<pre>
-public void testPreconditions() {
-    assertNotNull(“mFirstTestActivity is null”, mFirstTestActivity);
-    assertNotNull(“mFirstTestText is null”, mFirstTestText);
-}
-</pre>
-
-<p>The assertion methods are from the JUnit {@link junit.framework.Assert}
-class. Generally, you can use assertions to
-verify if a specific condition that you want to test is true.
-<ul>
-<li>If the condition is false, the assertion method throws an
-{@link android.test.AssertionFailedError} exception, which is then typically
-reported by the test runner. You can provide a string in the first argument of
-your assertion method to give some contextual details if the assertion fails.</li>
-<li>If the condition is true, the test passes.</li>
-</ul>
-<p>In both cases, the test runner proceeds to run the other test methods in the
-test case.</p>
-
-<h3 id="test_method">Add Test Methods to Verify Your Activity</h3>
-<p>Next, add one or more test methods to verify the layout and functional
-behavior of your {@link android.app.Activity}.</p>
-<p>For example, if your {@link android.app.Activity} includes a
-{@link android.widget.TextView}, you can add a test method like this to check
-that it has the correct label text:</p>
-<pre>
-public void testMyFirstTestTextView_labelText() {
-    final String expected =
-            mFirstTestActivity.getString(R.string.my_first_test);
-    final String actual = mFirstTestText.getText().toString();
-    assertEquals(expected, actual);
-}
-</pre>
-
-<p>The {@code testMyFirstTestTextView_labelText()} method simply checks that the
-default text of the {@link android.widget.TextView} that is set by the layout
-is the same as the expected text defined in the {@code strings.xml} resource.</p>
-<p class="note"><strong>Note:</strong> When naming test methods, you can use
-an underscore to separate what is being tested from the specific case being
-tested. This style makes it easier to see exactly what cases are being tested.</p>
-<p>When doing this type of string value comparison, it’s good practice to read
-the expected string from your resources, instead of hardcoding the string in
-your comparison code. This prevents your test from easily breaking whenever the
-string definitions are modified in the resource file.</p>
-<p>To perform the comparison, pass both the expected and actual strings as
-arguments to the
-{@link junit.framework.Assert#assertEquals(java.lang.String, java.lang.String) assertEquals()}
-method. If the values are not the same, the assertion will throw an
-{@link junit.framework.AssertionFailedError} exception.</p>
-<p>If you added a {@code testPreconditions()} method, put your test methods
-after the {@code testPreconditions()} definition in your Java class.</p>
-<p>For a complete test case example, take a look at
-{@code MyFirstTestActivityTest.java} in the sample app.</p>
-
-<h2 id="build_run">Build and Run Your Test</h2>
-<p>You can build and run your test easily from the Package Explorer in
-Eclipse.</p>
-<p>To build and run your test:</p>
-<ol>
-<li>Connect an Android device to your machine. On the device or emulator, open
-the <strong>Settings</strong> menu, select <strong>Developer options</strong>
-and make sure that USB debugging is enabled.</li>
-<li>In the Project Explorer, right-click on the test class that you created
-earlier and select <strong>Run As &gt; Android Junit Test</strong>.</li>
-<li>In the Android Device Chooser dialog, select the device that you just
-connected, then click <strong>OK</strong>.</li>
-<li>In the JUnit view, verify that the test passes with no errors or failures.</li>
-</ol>
-<p>For example, if the test case passes with no errors, the result should look
-like this:</p>
-<img src="{@docRoot}images/training/activity-testing_lesson2_MyFirstTestActivityTest_result.png" alt="" />
-<p class="img-caption">
-  <strong>Figure 1.</strong> Result of a test with no errors.
-</p>
-
-
-
diff --git a/docs/html/training/activity-testing/activity-functional-testing.jd b/docs/html/training/activity-testing/activity-functional-testing.jd
deleted file mode 100644
index 7c8ff1d..0000000
--- a/docs/html/training/activity-testing/activity-functional-testing.jd
+++ /dev/null
@@ -1,166 +0,0 @@
-page.title=Creating Functional Tests
-trainingnavtop=true
-@jd:body
-
-<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
-
-<h2>This lesson teaches you to</h2>
-<ol>
-   <li><a href="#test_methods">Add Test Method to Validate Functional Behavior</a>
-   <ol>
-      <li><a href="#activitymonitor">Set Up an ActivityMonitor</a></li>
-      <li><a href="#keyinput">Send Keyboard Input Using Instrumentation</a></li>
-   </ol>
-   </li>
-</ol>
-
-<h2>Try it out</h2>
-<div class="download-box">
- <a href="http://developer.android.com/shareables/training/AndroidTestingFun.zip"
-class="button">Download the demo</a>
- <p class="filename">AndroidTestingFun.zip</p>
-</div>
-
-</div>
-</div>
-<p>Functional testing involves verifying that individual application
-components work together as expected by the user. For example, you can create a
-functional test to verify that an {@link android.app.Activity} correctly
-launches a target {@link android.app.Activity} when the user performs a UI
-interaction.</p>
-
-<p>To create a functional test for your {@link android.app.Activity}, your test
-class should extend {@link android.test.ActivityInstrumentationTestCase2}.
-Unlike {@link android.test.ActivityUnitTestCase},
-tests in {@link android.test.ActivityInstrumentationTestCase2} can
-communicate with the Android system and send keyboard input and click events to
-the UI.</p>
-
-<p>For a complete test case example, take a look at
-{@code SenderActivityTest.java} in the sample app.</p>
-
-<h2 id="test_methods">Add Test Method to Validate Functional Behavior</h2>
-<p id="test_goals">Your functional testing goals might include:</p>
-<ul>
-<li>Verifying that a target {@link android.app.Activity} is started when a
-UI control is pushed in the sender {@link android.app.Activity}.</li>
-<li>Verifying that the target {@link android.app.Activity} displays the
-correct data based on the user's input in the sender
-{@link android.app.Activity}.</li>
-</ul>
-<p>You might implement your test method like this:</p>
-
-<pre>
-&#64;MediumTest
-public void testSendMessageToReceiverActivity() {
-    final Button sendToReceiverButton = (Button) 
-            mSenderActivity.findViewById(R.id.send_message_button);
-
-    final EditText senderMessageEditText = (EditText) 
-            mSenderActivity.findViewById(R.id.message_input_edit_text);
-
-    // Set up an ActivityMonitor
-    ...
-
-    // Send string input value
-    ...
-
-    // Validate that ReceiverActivity is started
-    ...
-
-    // Validate that ReceiverActivity has the correct data
-    ...
-
-    // Remove the ActivityMonitor
-    ...
-}
-</pre>
-<p>The test waits for an {@link android.app.Activity} that matches this monitor,
-otherwise returns null after a timeout elapses. If {@code ReceiverActivity} was
-started, the {@link android.app.Instrumentation.ActivityMonitor ActivityMonitor}
-that you set
-up earlier receives a hit. You can use the assertion methods to verify that
-the {@code ReceiverActivity} is indeed started, and that the hit count on the
-{@link android.app.Instrumentation.ActivityMonitor ActivityMonitor} incremented
-as expected.</p>
-
-<h2 id="activitymonitor">Set up an ActivityMonitor</h2>
-<p>To monitor a single {@link android.app.Activity} in your application, you
-can register an {@link android.app.Instrumentation.ActivityMonitor ActivityMonitor}.
-The {@link android.app.Instrumentation.ActivityMonitor ActivityMonitor} is
-notified by the system whenever an {@link android.app.Activity} that matches your criteria is started.
-If a match is found, the monitor’s hit count is updated.</p>
-<p>Generally, to use an
-{@link android.app.Instrumentation.ActivityMonitor ActivityMonitor}, you should:</p>
-<ol>
-<li>Retrieve the {@link android.app.Instrumentation} instance for your test
-case by using the
-{@link android.test.InstrumentationTestCase#getInstrumentation()} method.</li>
-<li>Add an instance of {@link android.app.Instrumentation.ActivityMonitor} to
-the current instrumentation using one of the {@link android.app.Instrumentation}
-{@code addMonitor()} methods. The match criteria can be specified as an
-{@link android.content.IntentFilter} or a class name string.</li>
-<li>Wait for the {@link android.app.Activity} to start.</li>
-<li>Verify that the monitor hits were incremented.</li>
-<li>Remove the monitor.</li>
-</ol>
-<p>For example:</p>
-<pre>
-// Set up an ActivityMonitor
-ActivityMonitor receiverActivityMonitor =
-        getInstrumentation().addMonitor(ReceiverActivity.class.getName(),
-        null, false);
-
-// Validate that ReceiverActivity is started
-TouchUtils.clickView(this, sendToReceiverButton);
-ReceiverActivity receiverActivity = (ReceiverActivity) 
-        receiverActivityMonitor.waitForActivityWithTimeout(TIMEOUT_IN_MS);
-assertNotNull("ReceiverActivity is null", receiverActivity);
-assertEquals("Monitor for ReceiverActivity has not been called",
-        1, receiverActivityMonitor.getHits());
-assertEquals("Activity is of wrong type",
-        ReceiverActivity.class, receiverActivity.getClass());
-
-// Remove the ActivityMonitor
-getInstrumentation().removeMonitor(receiverActivityMonitor);
-</pre>
-
-<h2 id="keyinput">Send Keyboard Input Using Instrumentation</h2>
-<p>If your {@link android.app.Activity} has an {@link android.widget.EditText}
-field, you might want to test that users can enter values into the
-{@link android.widget.EditText} object.</p>
-<p>Generally, to send a string input value to an {@link android.widget.EditText}
-object in {@link android.test.ActivityInstrumentationTestCase2}, you should:</p>
-<ol>
-<li>Use the {@link android.app.Instrumentation#runOnMainSync(java.lang.Runnable) runOnMainSync()}
-method to run the {@link android.view.View#requestFocus()} call synchronously
-in a loop. This way, the UI thread is blocked until focus is received.</li>
-<li>Call {@link android.app.Instrumentation#waitForIdleSync()} method to wait
-for the main thread to become idle (that is, have no more events to process).</li>
-<li>Send a text string to the {@link android.widget.EditText} by calling
-{@link android.app.Instrumentation#sendStringSync(java.lang.String)
-sendStringSync()} and pass your input string as the parameter.</p>
-</ol>
-<p>For example:</p>
-<pre>
-// Send string input value
-getInstrumentation().runOnMainSync(new Runnable() {
-    &#64;Override
-    public void run() {
-        senderMessageEditText.requestFocus();
-    }
-});
-getInstrumentation().waitForIdleSync();
-getInstrumentation().sendStringSync("Hello Android!");
-getInstrumentation().waitForIdleSync();
-</pre>
-
-
-
-
-
-
-
-
diff --git a/docs/html/training/activity-testing/activity-ui-testing.jd b/docs/html/training/activity-testing/activity-ui-testing.jd
deleted file mode 100644
index a47ccf3..0000000
--- a/docs/html/training/activity-testing/activity-ui-testing.jd
+++ /dev/null
@@ -1,216 +0,0 @@
-page.title=Testing UI Components
-trainingnavtop=true
-
-@jd:body
-
-<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
-
-<h2>This lesson teaches you to</h2>
-<ol>
-  <li><a href="#testcase">Create a Test Case for UI Testing with Instrumentation</a>
-  <li><a href="#test_method">Add Test Methods to Verify UI Behavior</a>
-     <ol>
-     <li><a href="#verify_button_display">Verify Button Layout Parameters</a></li>
-     <li><a href="#verify_TextView">Verify TextView Layout Parameters</a></li>
-     <li><a href="#verify_button_behavior">Verify Button Behavior</a></li>
-     </ol>
-  </li>
-  <li><a href="#annotations">Apply Test Annotations</a></li>
-</ol>
-
-<h2>Try it out</h2>
-<div class="download-box">
- <a href="http://developer.android.com/shareables/training/AndroidTestingFun.zip"
-class="button">Download the demo</a>
- <p class="filename">AndroidTestingFun.zip</p>
-</div>
-
-</div>
-</div>
-
-<p>Typically, your {@link android.app.Activity} includes user interface
-components (such as buttons, editable text fields, checkboxes, and pickers) to
-allow users to interact with your Android application. This lesson shows how
-you can test an {@link android.app.Activity} with a simple push-button UI. You
-can use the same general steps to test other, more sophisticated types of UI
-components.</p>
-
-<p class="note"><strong>Note:</strong> The type of UI testing in this lesson is
-called <em>white-box testing</em> because you have the
-source code for the application that you want to test. The Android
-<a href="{@docRoot}tools/testing/testing_android.html#Instrumentation">Instrumentation</a>
-framework is suitable for creating white-box tests for UI components within an
-application. An alternative type of UI testing is <em>black-box testing</em>,
-where you may not have access to the application source. This type of testing
-is useful when you want to test how your app interacts with other apps or with
-the system. Black-box testing is not covered in this training. To learn more
-about how to perform black-box testing on your Android apps, see the
-<a href="{@docRoot}tools/testing/testing_ui.html">UI Testing guide</a>.
-<p>For a complete test case example, take a look at
-{@code ClickFunActivityTest.java} in the sample app.</p>
-
-<h2 id="testcase">Create a Test Case for UI Testing with Instrumentation</h2>
-<p>When testing an {@link android.app.Activity} that has a user interface (UI),
-the {@link android.app.Activity} under test runs in the UI thread. However, the
-test application itself runs in a separate thread in the same process as the
-application under test. This means that your test app can reference objects
-from the UI thread, but if it attempts to change properties on those objects or
-send events to the UI thread, you will usually get a {@code WrongThreadException}
-error.</p>
-<p>To safely inject {@link android.content.Intent} objects into your
-{@link android.app.Activity} or run test methods on the UI thread, you can
-extend your test class to use {@link android.test.ActivityInstrumentationTestCase2}.
-To learn more about how to run test methods on the UI thread, see
-<a href="{@docRoot}tools/testing/activity_testing.html#RunOnUIThread">Testing
-on the UI thread</a>.</p>
-
-<h3 id="fixture">Set Up Your Test Fixture</h3>
-<p>When setting up the test fixture for UI testing, you should specify the
-<a href="{@docRoot}guide/topics/ui/ui-events.html#TouchMode">touch mode</a>
-in your {@link junit.framework.TestCase#setUp()} method. Setting the touch mode
-to {@code true} prevents the UI control from taking focus when you click it
-programmatically in the test method later (for example, a button UI will just
-fire its on-click listener). Make sure that you call
-{@link android.test.ActivityInstrumentationTestCase2#setActivityInitialTouchMode(boolean) setActivityInitialTouchMode()}
-before calling {@link android.test.ActivityInstrumentationTestCase2#getActivity()}.
-</p>
-<p>For example:</ap>
-<pre>
-public class ClickFunActivityTest
-        extends ActivityInstrumentationTestCase2<ClickFunActivity> {
-    ...
-    &#64;Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        setActivityInitialTouchMode(true);
-
-        mClickFunActivity = getActivity();
-        mClickMeButton = (Button) 
-                mClickFunActivity
-                .findViewById(R.id.launch_next_activity_button);
-        mInfoTextView = (TextView) 
-                mClickFunActivity.findViewById(R.id.info_text_view);
-    }
-}
-</pre>
-
-<h2 id="test_methods">Add Test Methods to Validate UI Behavior</h2>
-<p id="test_goals">Your UI testing goals might include:</p>
-<ul>
-<li>Verifying that a button is displayed with the correct layout when the
-{@link android.app.Activity} is launched.</li>
-<li>Verifying that a {@link android.widget.TextView} is initially hidden.</li>
-<li>Verifying that a {@link android.widget.TextView} displays the expected string
-when a button is pushed.</li>
-</ul>
-<p>The following section demonstrates how you can implement test methods
-to perform these verifications.</p>
-
-<h3 id="verify_button_display">Verify Button Layout Parameters</h3>
-<p>You might add a test method like this to verify that a button is displayed
-correctly in your {@link android.app.Activity}:</p>
-<pre>
-&#64;MediumTest
-public void testClickMeButton_layout() {
-    final View decorView = mClickFunActivity.getWindow().getDecorView();
-
-    ViewAsserts.assertOnScreen(decorView, mClickMeButton);
-
-    final ViewGroup.LayoutParams layoutParams =
-            mClickMeButton.getLayoutParams();
-    assertNotNull(layoutParams);
-    assertEquals(layoutParams.width, WindowManager.LayoutParams.MATCH_PARENT);
-    assertEquals(layoutParams.height, WindowManager.LayoutParams.WRAP_CONTENT);
-}
-</pre>
-
-<p>In the {@link android.test.ViewAsserts#assertOnScreen(android.view.View,android.view.View) assertOnScreen()}
-method call, you should pass in the root view and the view that you are
-expecting to be present on the screen. If the expected view is not found in the
-root view, the assertion method throws an {@link junit.framework.AssertionFailedError}
-exception, otherwise the test passes.</p>
-<p>You can also verify that the layout of a {@link android.widget.Button} is
-correct by getting a reference to its {@link android.view.ViewGroup.LayoutParams}
-object, then call assertion methods to verify that the
-{@link android.widget.Button} object's width and height attributes match the
-expected values.</p>
-<p>The {@code @MediumTest} annotation specifies how the test is categorized,
-relative to its absolute execution time. To learn more about using test size
-annotations, see <a href="#annotations">Apply Test Annotations</a>.</p>
-
-<h3 id="verify_TextView">Verify TextView Layout Parameters</h3>
-<p>You might add a test method like this to verify that a
-{@link android.widget.TextView} initially appears hidden in
-your {@link android.app.Activity}:</p>
-<pre>
-&#64;MediumTest
-public void testInfoTextView_layout() {
-    final View decorView = mClickFunActivity.getWindow().getDecorView();
-    ViewAsserts.assertOnScreen(decorView, mInfoTextView);
-    assertTrue(View.GONE == mInfoTextView.getVisibility());
-}
-</pre>
-<p>You can call {@link android.view.Window#getDecorView()} to get a reference
-to the decor view for the {@link android.app.Activity}. The decor view is the
-top-level ViewGroup ({@link android.widget.FrameLayout}) view in the layout
-hierarchy.</p>
-
-<h3 id="verify_button_behavior">Verify Button Behavior</h3>
-<p>You can use a test method like this to verify that a
-{@link android.widget.TextView} becomes visible when a
-{@link android.widget.Button} is pushed:</p>
-
-<pre>
-&#64;MediumTest
-public void testClickMeButton_clickButtonAndExpectInfoText() {
-    String expectedInfoText = mClickFunActivity.getString(R.string.info_text);
-    TouchUtils.clickView(this, mClickMeButton);
-    assertTrue(View.VISIBLE == mInfoTextView.getVisibility());
-    assertEquals(expectedInfoText, mInfoTextView.getText());
-}
-</pre>
-
-<p>To programmatically click a {@link android.widget.Button} in your
-test, call {@link android.test.TouchUtils#clickView(android.test.InstrumentationTestCase,android.view.View) clickView()}.
-You must pass in a reference to the test case that is being run and a reference
-to the {@link android.widget.Button} to manipulate.</p>
-
-<p class="note"><strong>Note: </strong>The {@link android.test.TouchUtils}
-helper class provides convenience methods for simulating touch interactions
-with your application. You can use these methods to simulate clicking, tapping,
-and dragging of Views or the application screen.</p>
-<p class="caution"><strong>Caution: </strong>The {@link android.test.TouchUtils}
-methods are designed to send events to the UI thread safely from the test thread.
-You should not run {@link android.test.TouchUtils} directly in the UI thread or
-any test method annotated with {@code @UIThread}. Doing so might
-raise the {@code WrongThreadException}.</p>
-
-<h2 id="annotations">Apply Test Annotations</h2>
-<p>The following annotations can be applied to indicate the size of a test
-method:</p>
-<dl>
-<dt>{@link
-android.test.suitebuilder.annotation.SmallTest &#64;SmallTest}</dt>
-<dd>Marks a test that should run as part of the small tests.</dd>
-<dt>{@link
-android.test.suitebuilder.annotation.MediumTest &#64;MediumTest}</dt>
-<dd>Marks a test that should run as part of the medium tests.</dd>
-<dt>{@link android.test.suitebuilder.annotation.LargeTest &#64;LargeTest}</dt>
-<dd>Marks a test that should run as part of the large tests.</dd>
-</dl>
-<p>Typically, a short running test that take only a few milliseconds should be
-marked as a {@code @SmallTest}. Longer running tests (100 milliseconds or
-more) are usually marked as {@code @MediumTest}s or {@code @LargeTest}s,
-depending on whether the test accesses resources on the local system only or
-remote resources over a network. For guidance on using test size annotations,
-see this <a href="https://plus.sandbox.google.com/+AndroidDevelopers/posts/TPy1EeSaSg8">Android Tools Protip</a>.</p>
-<p>You can mark up your test methods with other test annotations to control
-how the tests are organized and run. For more information on other annotations,
-see the {@link java.lang.annotation.Annotation} class reference.</p>
-
-
-
-
diff --git a/docs/html/training/activity-testing/activity-unit-testing.jd b/docs/html/training/activity-testing/activity-unit-testing.jd
deleted file mode 100644
index 74dcda9..0000000
--- a/docs/html/training/activity-testing/activity-unit-testing.jd
+++ /dev/null
@@ -1,134 +0,0 @@
-page.title=Creating Unit Tests
-trainingnavtop=true
-@jd:body
-
-<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
-
-<h2>This lesson teaches you to</h2>
-<ol>
-  <li><a href="#testcase">Create a Test Case for Activity Unit Testing</a>
-  <li><a href="#test_method">Validate Launch of Another Activity</a>
-</ol>
-
-<h2>Try it out</h2>
-<div class="download-box">
- <a href="http://developer.android.com/shareables/training/AndroidTestingFun.zip"
-class="button">Download the demo</a>
- <p class="filename">AndroidTestingFun.zip</p>
-</div>
-
-</div>
-</div>
-
-<p>An {@link android.app.Activity} unit test is an excellent way to quickly
-verify the state of an {@link android.app.Activity} and its interactions with
-other components in isolation (that is, disconnected from the rest of the
-system). A unit test generally tests the smallest possible unit of code
-(which could be a method, class, or component), without dependencies on system
-or network resources. For example, you can write a unit test to check
-that an {@link android.app.Activity} has the correct layout or that it
-triggers an {@link android.content.Intent} object correctly.</p>
-<p>Unit tests are generally not suitable for testing complex UI interaction
-events with the system. Instead, you should use
-the {@link android.test.ActivityInstrumentationTestCase2} class, as described
-in <a href="activity-ui-testing.html">Testing UI Components</a>.</p>
-<p>This lesson shows how you can write a unit test to verify that an
-{@link android.content.Intent} is triggered to launch another
-{@link android.app.Activity}.
-Since the test runs in an isolated environment, the
-{@link android.content.Intent}
-is not actually sent to the Android system, but you can inspect that the
-{@link android.content.Intent} object's payload data is accurate.</p>
-<p>For a complete test case example, take a look at
-{@code LaunchActivityTest.java} in the sample app.</p>
-
-<p class="note"><strong>Note: </strong>To test against system or external
-dependencies, you can use mock objects from a mocking
-framework and inject them into your unit tests. To learn more about the mocking
-framework provided by Android, see
-<a href="{@docRoot}tools/testing/testing_android.html#MockObjectClasses}">Mock
-Object Classes</a>.</p>
-
-<h2 id="testcase">Create a Test Case for Activity Unit Testing</h2>
-<p>The {@link android.test.ActivityUnitTestCase} class provides support for
-isolated testing of a single {@link android.app.Activity}. To create a unit
-test for your {@link android.app.Activity}, your test class should extend
-{@link android.test.ActivityUnitTestCase}.</p>
-
-<p>The {@link android.app.Activity} in an {@link android.test.ActivityUnitTestCase}
-is not automatically started by Android Instrumentation. To start the
-{@link android.app.Activity} in isolation, you need to explicitly call the
-{@link android.test.ActivityUnitTestCase#startActivity(android.content.Intent, android.os.Bundle, java.lang.Object) startActivity()}
-method, and pass in the {@link android.content.Intent} to
-launch your target {@link android.app.Activity}.</p>
-
-<p>For example:</p>
-<pre>
-public class LaunchActivityTest
-        extends ActivityUnitTestCase&lt;LaunchActivity&gt; {
-    ...
-
-    &#64;Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mLaunchIntent = new Intent(getInstrumentation()
-                .getTargetContext(), LaunchActivity.class);
-        startActivity(mLaunchIntent, null, null);
-        final Button launchNextButton =
-                (Button) getActivity()
-                .findViewById(R.id.launch_next_activity_button);
-    }
-}
-</pre>
-
-<h2 id="test_method">Validate Launch of Another Activity</h2>
-<p id="test_goals">Your unit testing goals might include:</p>
-<ul>
-<li>Verifying that {@code LaunchActivity} fires an
-{@link android.content.Intent} when a button is pushed clicked.</li>
-<li>Verifying that the launched {@link android.content.Intent} contains the
-correct payload data.</li>
-</ul>
-
-<p>To verify if an {@link android.content.Intent} was triggered
-following the {@link android.widget.Button} click, you can use the
-{@link android.test.ActivityUnitTestCase#getStartedActivityIntent()} method.
-By using assertion methods, you can verify that the returned
-{@link android.content.Intent} is not null, and that it contains the expected
-string value to launch the next {@link android.app.Activity}. If both assertions
-evaluate to {@code true}, you've successfully verified that the
-{@link android.content.Intent} was correctly sent by your
-{@link android.app.Activity}.</p>
-
-<p>You might implement your test method like this:</p>
-<pre>
-&#64;MediumTest
-public void testNextActivityWasLaunchedWithIntent() {
-    startActivity(mLaunchIntent, null, null);
-    final Button launchNextButton =
-            (Button) getActivity()
-            .findViewById(R.id.launch_next_activity_button);
-    launchNextButton.performClick();
-
-    final Intent launchIntent = getStartedActivityIntent();
-    assertNotNull("Intent was null", launchIntent);
-    assertTrue(isFinishCalled());
-
-    final String payload =
-            launchIntent.getStringExtra(NextActivity.EXTRAS_PAYLOAD_KEY);
-    assertEquals("Payload is empty", LaunchActivity.STRING_PAYLOAD, payload);
-}
-</pre>
-<p>Because {@code LaunchActivity} runs in isolation, you cannot use the
-{@link android.test.TouchUtils} library to manipulate UI controls. To directly
-click a {@link android.widget.Button}, you can call the
-{@link android.view.View#performClick()} method instead.</p>
-
-
-
-
-
-
-
diff --git a/docs/html/training/activity-testing/index.jd b/docs/html/training/activity-testing/index.jd
deleted file mode 100644
index b9542b6..0000000
--- a/docs/html/training/activity-testing/index.jd
+++ /dev/null
@@ -1,68 +0,0 @@
-page.title=Testing Your Android Activity
-page.tags=testing
-
-trainingnavtop=true
-startpage=true
-
-@jd:body
-
-<div id="tb-wrapper">
-<div id="tb">
-
-<!-- Required platform, tools, add-ons, devices, knowledge, etc. -->
-<h2>Dependencies and prerequisites</h2>
-<ul>
-  <li>Android 2.2 (API Level 8) or higher.</li>
-</ul>
-
-<h2>You Should Also Read</h2>
-<ul>
-<li><a href="{@docRoot}tools/testing/index.html">Testing
-(Developer's Guide)</a></li>
-</ul>
-
-</div>
-</div>
-
-<p>You should be writing and running tests as part of your Android application
-development cycle. Well-written tests can help you to catch bugs early in
-development and give you confidence in your code.</p>
-
-<p>A <em>test case</em> defines a set of objects and methods to run multiple
-tests independently from each other. Test cases can be organized into
-<em>test suites</em> and run programmatically, in a repeatable manner, with
-a <em>test runner</em> provided by a testing framework.</p>
-
-<p>The lessons in this class teaches you how to use the Android's custom
-testing framework that is based on the popular JUnit framework. You can
-write test cases to verify specific behavior in your application, and check for
-consistency across different Android devices. Your test cases also serve as a
-form of internal code documentation by describing the expected behavior of
-app components.</p>
-
-<h2>Lessons</h2>
-
-<!-- Create a list of the lessons in this class along with a short description
-of each lesson. These should be short and to the point. It should be clear from
-reading the summary whether someone will want to jump to a lesson or not.-->
-
-<dl>
-  <dt><b><a href="preparing-activity-testing.html">Setting Up Your Test
-Environment</a></b></dt>
-    <dd>Learn how to create your test project.</dd>
-  <dt><b><a href="activity-basic-testing.html">Creating and Running a Test 
-Case</a></b></dt>
-    <dd>Learn how to write test cases to verify the
-expected properties of your {@link android.app.Activity}, and run the test
-cases with the {@code Instrumentation} test runner provided by the Android
-framework.</dd>
-  <dt><b><a href="activity-ui-testing.html">Testing UI Components</a></b></dt>
-    <dd>Learn how to test the behavior of specific UI
-components in your {@link android.app.Activity}.</dd>
-  <dt><b><a href="activity-unit-testing.html">Creating Unit Tests</a></b></dt>
-    <dd>Learn how to how to perform unit testing to
-verify the behavior of an Activity in isolation.</dd>
-  <dt><b><a href="activity-functional-testing.html">Creating Functional Tests</a></b></dt>
-    <dd>Learn how to perform functional testing to
-verify the interaction of multiple Activities.</dd>
-
diff --git a/docs/html/training/activity-testing/preparing-activity-testing.jd b/docs/html/training/activity-testing/preparing-activity-testing.jd
deleted file mode 100644
index c43c9ed..0000000
--- a/docs/html/training/activity-testing/preparing-activity-testing.jd
+++ /dev/null
@@ -1,95 +0,0 @@
-page.title=Setting Up Your Test Environment
-trainingnavtop=true
-
-@jd:body
-
-<!-- This is the training bar -->
-<div id="tb-wrapper">
-<div id="tb">
-
-<h2>This lesson teaches you to</h2>
-<ol>
-  <li><a href="#eclipse">Set Up Eclipse for Testing</a></li>
-  <li><a href="#cmdline">Set Up the Command Line Interface for Testing</a></li>
-</ol>
-
-<h2>You should also read</h2>
-<ul>
-<li><a href="{@docRoot}sdk/index.html">Getting the SDK Bundle</a></li>
-<li><a href="{@docRoot}tools/testing/testing_eclipse.html">Testing from Eclipse
-with ADT</a></li>
-<li><a href="{@docRoot}tools/testing/testing_otheride.html">Testing from Other
-IDEs</a></li>
-</ul>
-
-<h2>Try it out</h2>
-<div class="download-box">
- <a href="http://developer.android.com/shareables/training/AndroidTestingFun.zip"
-class="button">Download the demo</a>
- <p class="filename">AndroidTestingFun.zip</p>
-</div>
-
-</div>
-</div>
-
-<p>Before you start writing and running your tests, you should set up your test
-development environment. This lesson teaches you how to set up the Eclipse
-IDE to build and run tests, and how to
-build and run tests with the Gradle framework by using the command line
-interface.</p>
-
-<p class="note"><strong>Note:</strong> To help you get started, the lessons are
-based on Eclipse with the ADT plugin. However, for your own test development, you
-are free to use the IDE of your choice or the command-line.</p>
-
-<h2 id="eclipse">Set Up Eclipse for Testing</h2>
-<p>Eclipse with the Android Developer Tools (ADT) plugin provides an integrated
-development environment for you to create, build, and run Android application
-test cases from a graphical user interface (GUI). A convenient feature that
-Eclipse provides is the ability to auto-generate a new test project that
-corresponds with your Android application project</a>.
-
-<p>To set up your test environment in Eclipse:</p>
-
-<ol>
-<li><a href="{@docRoot}sdk/installing/bundle.html">Download and install the
-Eclipse ADT plugin</a>, if you haven’t installed it yet.</li>
-<li>Import or create the Android application project that you want to test
-against.</li>
-<li>Generate a test project that corresponds to the application project under
-test. To generate a test project for the app project that you imported:</p>
-   <ol type="a">
-   <li>In the Package Explorer, right-click on your app project, then
-select <strong>Android Tools</strong> &gt; <strong>New Test Project</strong>.</li>
-   <li>In the New Android Test Project wizard, set the property
-values for your test project then click <strong>Finish</strong>.</li>
-   </ol>
-</li>
-</ol>
-<p>You should now be able to create, build, and run test
-cases from your Eclipse environment. To learn how to perform these tasks in
-Eclipse, proceed to <a href="activity-basic-testing.html">Creating and Running 
-a Test Case</a>.</p>
-
-<h2 id="cmdline">Set Up the Command Line Interface for Testing</h2>
-<p>If you are using Gradle version 1.6 or higher as your build environment, you
-can build and run your Android application tests from the command line by using
-the Gradle Wrapper. Make sure that in your {@code gradle.build} file, the
-<a href={@docRoot}guide/topics/manifest/uses-sdk-element.html#min>minSdkVersion</a>
-attribute in the {@code defaultConfig} section is set to 8 or higher. You can
-refer to the sample {@code gradle.build} file that is
-included in the download bundle for this training class.</p>
-<p>To run your tests with the Gradle Wrapper:</p>
-<ol>
-   <li>Connect a physical Android device to your machine or launch the Android
-Emulator.</li>
-   <li>Run the following command from your project directory:
-      <pre>./gradlew build connectedCheck</pre>
-   </li>
-</ol>
-<p>To learn more about using Gradle for Android testing, see the
-<a href="//tools.android.com/tech-docs/new-build-system/user-guide#TOC-Testing">Gradle Plugin User Guide</a>.</p>
-<p>To learn more about using command line tools other than Gradle for test
-development, see
-<a href="{@docRoot}tools/testing/testing_otheride.html">Testing from Other IDEs</a>.</p>
-
diff --git a/docs/html/training/animation/cardflip.jd b/docs/html/training/animation/cardflip.jd
index 48fbbd8..721a9a3 100644
--- a/docs/html/training/animation/cardflip.jd
+++ b/docs/html/training/animation/cardflip.jd
@@ -2,98 +2,105 @@
 trainingnavtop=true
 
 @jd:body
-    <div id="tb-wrapper">
-      <div id="tb">
-        <h2>
-          This lesson teaches you to
-        </h2>
-        <ol>
-          <li>
-            <a href="#animators">Create the Animators</a>
-          </li>
-          <li>
-            <a href="#views">Create the Views</a>
-          </li>
-          <li>
-            <a href="#fragment">Create the Fragment</a>
-          </li>
-          <li>
-            <a href="#animate">Animate the Card Flip</a>
-          </li>
-        </ol>
-        <h2>
-          Try it out
-        </h2>
-        <div class="download-box">
-          <a href="{@docRoot}shareables/training/Animations.zip" class=
-          "button">Download the sample app</a>
-          <p class="filename">
-            Animations.zip
-          </p>
-        </div>
-      </div>
-    </div>
-    <p> This lesson shows you how to do a card flip
-      animation with custom fragment animations.
-      Card flips animate between views of content by showing an animation that emulates
-      a card flipping over. 
-    </p>
-    <p>Here's what a card flip looks like:
-    </p>
-
-    <div class="framed-galaxynexus-land-span-8">
-      <video class="play-on-hover" autoplay>
-        <source src="anim_card_flip.mp4" type="video/mp4">
-        <source src="anim_card_flip.webm" type="video/webm">
-        <source src="anim_card_flip.ogv" type="video/ogg">
-      </video>
-    </div>
-    <div class="figure-caption">
-      Card flip animation
-      <div class="video-instructions">&nbsp;</div>
-    </div>
-
-    <p>
-      If you want to jump ahead and see a full working example,
-      <a href="{@docRoot}shareables/training/Animations.zip">download</a> and
-      run the sample app and select the Card Flip example. See the following
-      files for the code implementation:
-    </p>
-    <ul>
-      <li>
-        <code>src/CardFlipActivity.java</code>
-      </li>
-      <li>
-        <code>animator/card_flip_right_in.xml</code>
-      </li>
-      <li>
-        <code>animator/card_flip_right_out.xml</code>
-      </li>
-      <li>
-        <code>animator/card_flip_left_in.xml</code>
-      </li>
-      <li>
-        <code>animator/card_flip_left_out.xml</code>
-      </li>
-      <li>
-        <code>layout/fragment_card_back.xml</code>
-      </li>
-      <li>
-        <code>layout/fragment_card_front.xml</code>
-      </li>
-    </ul>
-
-    <h2 id="animate">
-      Create the Animators
+<div id="tb-wrapper">
+  <div id="tb">
+    <h2>
+      This lesson teaches you to
     </h2>
-    <p>
-      Create the animations for the card flips. You'll need two animators for when the front
-      of the card animates out and to the left and in and from the left. You'll also need two animators
-      for when the back of the card animates in and from the right and out and to the right.
-    </p>
-    <h4>
-      card_flip_left_in.xml
-    </h4>
+    <ol>
+      <li>
+        <a href="#animators">Create the Animators</a>
+      </li>
+      <li>
+        <a href="#views">Create the Views</a>
+      </li>
+      <li>
+        <a href="#fragment">Create the Fragment</a>
+      </li>
+      <li>
+        <a href="#animate">Animate the Card Flip</a>
+      </li>
+    </ol>
+    <h2>
+      Try it out
+    </h2>
+    <div class="download-box">
+      <a href="{@docRoot}shareables/training/Animations.zip" class=
+      "button">Download the sample app</a>
+      <p class="filename">
+        Animations.zip
+      </p>
+    </div>
+  </div>
+</div>
+
+<p> This lesson shows you how to do a card flip
+  animation with custom fragment animations.
+  Card flips animate between views of content by showing an animation that emulates
+  a card flipping over.
+</p>
+
+<p>Here's what a card flip looks like:
+</p>
+
+<div class="framed-galaxynexus-land-span-8">
+  <video class="play-on-hover" autoplay>
+    <source src="anim_card_flip.mp4" type="video/mp4">
+    <source src="anim_card_flip.webm" type="video/webm">
+    <source src="anim_card_flip.ogv" type="video/ogg">
+  </video>
+</div>
+<div class="figure-caption">
+  Card flip animation
+  <div class="video-instructions">&nbsp;</div>
+</div>
+
+<p>
+  If you want to jump ahead and see a full working example,
+  <a href="{@docRoot}shareables/training/Animations.zip">download</a> and
+  run the sample app and select the Card Flip example. See the following
+  files for the code implementation:
+</p>
+
+<ul>
+  <li>
+    <code>src/CardFlipActivity.java</code>
+  </li>
+  <li>
+    <code>animator/card_flip_right_in.xml</code>
+  </li>
+  <li>
+    <code>animator/card_flip_right_out.xml</code>
+  </li>
+  <li>
+    <code>animator/card_flip_left_in.xml</code>
+  </li>
+  <li>
+    <code>animator/card_flip_left_out.xml</code>
+  </li>
+  <li>
+    <code>layout/fragment_card_back.xml</code>
+  </li>
+  <li>
+    <code>layout/fragment_card_front.xml</code>
+  </li>
+</ul>
+
+<h2 id="animate">
+  Create the Animators
+</h2>
+
+<p>
+  Create the animations for the card flips. You'll need two animators for when the front
+  of the card animates out and to the left and in and from the left. You'll also need two
+  animators for when the back of the card animates in and from the right and out and to the
+  right.
+</p>
+
+<h4 id="left-in">
+  card_flip_left_in.xml
+</h4>
+
 <pre>
 &lt;set xmlns:android="http://schemas.android.com/apk/res/android"&gt;
     &lt;!-- Before rotating, immediately set the alpha to 0. --&gt;
@@ -120,10 +127,12 @@
         android:duration="1" /&gt;
 &lt;/set&gt;
 </pre>
-    <h4>
-      card_flip_left_out.xml
-    </h4>
-    <pre>
+
+<h4 id="left-out">
+  card_flip_left_out.xml
+</h4>
+
+<pre>
 &lt;set xmlns:android="http://schemas.android.com/apk/res/android"&gt;
     &lt;!-- Rotate. --&gt;
     &lt;objectAnimator
@@ -141,11 +150,13 @@
         android:startOffset="@integer/card_flip_time_half"
         android:duration="1" /&gt;
 &lt;/set&gt;
-    </pre>
-    <h4>
-      card_flip_right_in.xml
-    </h4>
-    <pre>
+</pre>
+
+<h4 id="right-in">
+  card_flip_right_in.xml
+</h4>
+
+<pre>
 &lt;set xmlns:android="http://schemas.android.com/apk/res/android"&gt;
     &lt;!-- Before rotating, immediately set the alpha to 0. --&gt;
     &lt;objectAnimator
@@ -169,13 +180,14 @@
         android:propertyName="alpha"
         android:startOffset="@integer/card_flip_time_half"
         android:duration="1" /&gt;
-</set>
-
+&lt;/set&gt;
 </pre>
-    <h4>
-      card_flip_right_out.xml
-    </h4>
-    <pre>
+
+<h4  id="right-out">
+  card_flip_right_out.xml
+</h4>
+
+<pre>
 &lt;set xmlns:android="http://schemas.android.com/apk/res/android"&gt;
     &lt;!-- Rotate. --&gt;
     &lt;objectAnimator
@@ -194,17 +206,18 @@
         android:duration="1" /&gt;
 &lt;/set&gt;
 </pre>
-    <h2 id="views">
-      Create the Views
-    </h2>
-    <p>
-      Each side of the "card" is a separate layout that can contain any content you want,
-      such as two screens of text, two images, or any combination of views to flip between. You'll then
-      use the two layouts in the fragments that you'll later animate. The following layouts
-      create one side of a card that shows text:
-    </p>
 
-    <pre>
+<h2 id="views">
+  Create the Views
+</h2>
+<p>
+  Each side of the "card" is a separate layout that can contain any content you want,
+  such as two screens of text, two images, or any combination of views to flip between. You'll then
+  use the two layouts in the fragments that you'll later animate. The following layouts
+  create one side of a card that shows text:
+</p>
+
+<pre>
 &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
@@ -232,9 +245,11 @@
 
 &lt;/LinearLayout&gt;
 </pre>
+
 <p>
 and the other side of the card that displays an {@link android.widget.ImageView}:
 </p>
+
 <pre>
 &lt;ImageView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
@@ -243,17 +258,20 @@
     android:scaleType="centerCrop"
     android:contentDescription="@string/description_image_1" /&gt;
 </pre>
-    <h2 id="fragment">
-      Create the Fragment
-    </h2>
-    <p>
-      Create fragment classes for the front and back of the card. These classes return the layouts
-      that you created previously in the {@link android.app.Fragment#onCreateView onCreateView()} method
-      of each fragment. You can then create instances of this fragment in the parent activity
-      where you want to show the card. The following example shows nested fragment classes inside
-      of the parent activity that uses them:
-    </p>
-    <pre>
+
+<h2 id="fragment">
+  Create the Fragment
+</h2>
+
+<p>
+  Create fragment classes for the front and back of the card. These classes return the layouts
+  that you created previously in the {@link android.app.Fragment#onCreateView onCreateView()} method
+  of each fragment. You can then create instances of this fragment in the parent activity
+  where you want to show the card. The following example shows nested fragment classes inside
+  of the parent activity that uses them:
+</p>
+
+<pre>
 public class CardFlipActivity extends Activity {
     ...
     /**
@@ -279,28 +297,27 @@
     }
 }
 </pre>
-    <h2 id="animate">
-      Animate the Card Flip
-    </h2>
 
-    <p> Now, you'll need to display the fragments inside of a parent activity.
-    To do this, first create the layout for your activity. The following example creates a
-    {@link android.widget.FrameLayout} that you
-    can add fragments to at runtime:</p>
+<h2 id="animate">
+  Animate the Card Flip
+</h2>
 
-    <pre>
+<p> Now, you'll need to display the fragments inside of a parent activity.
+To do this, first create the layout for your activity. The following example creates a
+{@link android.widget.FrameLayout} that you
+can add fragments to at runtime:</p>
+
+<pre>
 &lt;FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/container"
     android:layout_width="match_parent"
     android:layout_height="match_parent" /&gt;
 </pre>
 
-    <p>In the activity code, set the content view to be the layout that you just created. It's also
-      good idea to show a default fragment when the activity is created, so the following example
-      activity shows you how to display the front of the card by default:
-    </p>
-
-
+<p>In the activity code, set the content view to be the layout that you just created. It's also
+  good idea to show a default fragment when the activity is created, so the following example
+  activity shows you how to display the front of the card by default:
+</p>
 
 <pre>
 public class CardFlipActivity extends Activity {
@@ -320,22 +337,25 @@
     ...
 }
 </pre>
-    <p>
-      Now that you have the front of the card showing, you can show the back of the card
-      with the flip animation at an appropriate time. Create a method to show the other
-      side of the card that does the following things:
-    </p>
-    <ul>
-      <li>Sets the custom animations that you created earlier for the fragment transitions.
-      </li>
-      <li>Replaces the currently displayed fragment with a new fragment and animates this event
-      with the custom animations that you created.
-      </li>
-      <li>Adds the previously displayed fragment to the fragment back stack
-      so when the user presses the <em>Back</em> button, the card flips back over.
-      </li>
-    </ul>
-    <pre>
+
+<p>
+  Now that you have the front of the card showing, you can show the back of the card
+  with the flip animation at an appropriate time. Create a method to show the other
+  side of the card that does the following things:
+</p>
+
+<ul>
+  <li>Sets the custom animations that you created earlier for the fragment transitions.
+  </li>
+  <li>Replaces the currently displayed fragment with a new fragment and animates this event
+  with the custom animations that you created.
+  </li>
+  <li>Adds the previously displayed fragment to the fragment back stack
+  so when the user presses the <em>Back</em> button, the card flips back over.
+  </li>
+</ul>
+
+<pre>
 private void flipCard() {
     if (mShowingBack) {
         getFragmentManager().popBackStack();
@@ -346,27 +366,30 @@
 
     mShowingBack = true;
 
-    // Create and commit a new fragment transaction that adds the fragment for the back of
-    // the card, uses custom animations, and is part of the fragment manager's back stack.
+    // Create and commit a new fragment transaction that adds the fragment for
+    // the back of the card, uses custom animations, and is part of the fragment
+    // manager's back stack.
 
     getFragmentManager()
             .beginTransaction()
 
-            // Replace the default fragment animations with animator resources representing
-            // rotations when switching to the back of the card, as well as animator
-            // resources representing rotations when flipping back to the front (e.g. when
-            // the system Back button is pressed).
+            // Replace the default fragment animations with animator resources
+            // representing rotations when switching to the back of the card, as
+            // well as animator resources representing rotations when flipping
+            // back to the front (e.g. when the system Back button is pressed).
             .setCustomAnimations(
-                    R.animator.card_flip_right_in, R.animator.card_flip_right_out,
-                    R.animator.card_flip_left_in, R.animator.card_flip_left_out)
+                    R.animator.card_flip_right_in,
+                    R.animator.card_flip_right_out,
+                    R.animator.card_flip_left_in,
+                    R.animator.card_flip_left_out)
 
-            // Replace any fragments currently in the container view with a fragment
-            // representing the next page (indicated by the just-incremented currentPage
-            // variable).
+            // Replace any fragments currently in the container view with a
+            // fragment representing the next page (indicated by the
+            // just-incremented currentPage variable).
             .replace(R.id.container, new CardBackFragment())
 
-            // Add this transaction to the back stack, allowing users to press Back
-            // to get to the front of the card.
+            // Add this transaction to the back stack, allowing users to press
+            // Back to get to the front of the card.
             .addToBackStack(null)
 
             // Commit the transaction.
diff --git a/docs/html/training/app-indexing/deep-linking.jd b/docs/html/training/app-indexing/deep-linking.jd
index fc67b26..2c4a131 100644
--- a/docs/html/training/app-indexing/deep-linking.jd
+++ b/docs/html/training/app-indexing/deep-linking.jd
@@ -66,10 +66,10 @@
               android:host="www.example.com"
               android:pathPrefix="/gizmos" /&gt;
         &lt;!-- note that the leading "/" is required for pathPrefix--&gt;
-        &lt;!-- Accepts URIs that begin with "example://gizmos”
+        &lt;!-- Accepts URIs that begin with "example://gizmos” --&gt;
         &lt;data android:scheme="example"
               android:host="gizmos" /&gt;
-        --&gt;
+        
     &lt;/intent-filter&gt;
 &lt;/activity&gt;
 </pre>
diff --git a/docs/html/training/app-indexing/index.jd b/docs/html/training/app-indexing/index.jd
index 15a6367..a1a47e9 100644
--- a/docs/html/training/app-indexing/index.jd
+++ b/docs/html/training/app-indexing/index.jd
@@ -22,6 +22,7 @@
 target="_blank">App Indexing for Google Search</a></li>
 <li><a href="{@docRoot}guide/components/intents-filters.html">Intents and Intent
 Filters</a></li>
+<li><a href="{@docRoot}tools/help/app-link-indexing.html">Deep Link and App Indexing API Support in Android Studio</a></li>
 </ul>
 </div>
 </div>
diff --git a/docs/html/training/app-links/index.jd b/docs/html/training/app-links/index.jd
new file mode 100644
index 0000000..27b6480
--- /dev/null
+++ b/docs/html/training/app-links/index.jd
@@ -0,0 +1,585 @@
+page.title=Handling App Links
+page.image=images/cards/card-app-linking_2x.png
+page.keywords=applinking, deeplinks, intents
+page.tags=androidm,marshmallow
+@jd:body
+
+<div id="tb-wrapper">
+  <div id="tb">
+    <h2>This lesson teaches you to</h2>
+    <ol>
+        <li><a href="#url-handling">Understand URI Request Handling</a> </li>
+        <li><a href="#intent-handler">Create an Intent Handler for URIs</a></li>
+        <li><a href="#request-verify">Request App Links Verification</a></li>
+        <li><a href="#web-assoc">Declare Website Associations</a></li>
+        <li><a href="#testing">Test App Links</a></li>
+    </ol>
+  <h2>See also</h2>
+  <ol>
+    <li><a href="{@docRoot}tools/help/app-link-indexing.html">Deep Link and App Indexing API Support in Android Studio</a></li>
+  </ol>
+  </div>
+</div>
+
+
+
+<p>
+  Users following web links on devices are frequently presented with confusing choices. Tapping a
+  link often results in the system asking the user which app should handle that link. For example,
+  clicking a URI in an email from a bank might result in a dialog asking the user whether to use
+  the browser, or the bank's own app, to open the link. Android 6.0 (API level 23) and higher allow
+  an app to designate itself as the default handler of a given type of link. If the user doesn't
+  want the app to be the default handler, they can override this behavior from
+  <strong>Settings</strong>.
+</p>
+
+<p>
+  Automatic handling of links requires the cooperation of app developers and website owners.
+  A developer must configure their app to declare associations with one or more websites, and to
+  request that the system verify those associations. A website owner must, in turn, provide
+  that verification by publishing a <a href="http://developers.google.com/digital-asset-links/"><i>Digital
+  Asset Links</i></a> file. The general steps for creating verified app links are as follows:
+</p>
+
+<ol>
+  <li>In your app manifest, create intent filters for your website URIs.</li>
+  <li>Configure your app to request verification of app links.</li>
+  <li>Publish a Digital Asset Links JSON file on your websites to provide verification.</li>
+</ol>
+
+<h2 id="url-handling">Understand URI Request Handling</h2>
+
+<p>
+  The app links feature allows your app to become the default handler for the website URIs you
+  specify, as long as the user has not already chosen a default app to handle that URI pattern.
+  When a clicked link or programmatic request invokes a web URI intent, the Android system
+  uses the following criteria, in descending order, to determine how to handle the request:
+</p>
+
+<ol>
+  <li>
+    <strong>The user has set app link associations</strong>: If the user has designated an app to
+    handle app links, the system passes the web URI request to that app. A user can set this
+    association in one of two ways: clicking <strong>Always</strong> when selecting an app
+    from an app-selection dialog; or, opening <em>Settings &gt; Apps &gt; (gear icon)
+    &gt; App links</em>, selecting an app to use, and setting the app's
+    <strong>App links</strong> property to the <strong>Open in this app</strong> option.
+  </li>
+
+  <li>
+    <strong>The user has set no association, and there is one supporting app</strong>: If the user
+    has not set a preference that matches the web URI request, and there is only one app declaring
+    support for the intent’s URI pattern, the system automatically passes the request to that app.
+  </li>
+
+  <li>
+    <strong>The user has set no association, and there are multiple supporting apps</strong>: If
+    there are multiple apps declaring support for the web URI pattern, the system displays an
+    app-selection dialog, prompting the user to select the most appropriate app.
+  </li>
+</ol>
+
+<p>
+  In case 2, if the user has newly installed the app, and the system has
+  verified it as a handler for this type of link, the system sets the app as the default handler. In
+  the other two cases, the presence of a verified app link handler has no effect on system behavior.
+</p>
+
+
+<h2 id="intent-handler">Create an Intent Handler for URIs</h2>
+
+<p>
+  App links are based on the <a href="{@docRoot}guide/components/intents-filters.html">Intent</a>
+  framework, which enables apps to handle requests from the system or other apps. Multiple apps may
+  declare the same web link URI patterns in their intent filters. When a user clicks on a web link
+  that does not have a default launch handler, the platform selects an app to handle the request,
+  using the criteria described in <a href="#url-handling">Understanding URI Request Handling</a>.
+</p>
+
+<p>
+  To enable your app to handle links, use intent filters in your app manifest to declare the URI
+  patterns that your app handles. The following example shows an intent filter that can
+  handle links to {@code http://www.android.com} and {@code https://www.android.com}:
+</p>
+
+<pre>
+&lt;activity ...&gt;
+    &lt;intent-filter&gt;
+        &lt;action android:name="android.intent.action.VIEW" /&gt;
+        &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+        &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+        &lt;data android:scheme="http" /&gt;
+        &lt;data android:scheme="https" /&gt;
+        &lt;data android:host="www.android.com" /&gt;
+    &lt;/intent-filter&gt;
+&lt;/activity&gt;
+</pre>
+
+<p>
+  As this example shows, intent filters for app links must declare an {@code android:scheme}
+  value of {@code http}, {@code https}, or both. The filter must not declare
+  any other schemes. The filter must also include the {@code android.intent.action.VIEW} and
+  {@code android.intent.category.BROWSABLE} category names.
+</p>
+
+<p>
+  This manifest declaration defines the connection between your app and a website. However, in
+  order to have the system treat your app as the default handler for a set of URIs, you must
+  also request that the system verify this connection.
+  The next section explains how to implement this verification.
+</p>
+
+
+<h2 id="request-verify">Request App Links Verification</h2>
+
+<p>
+  In addition to using intent filters to declare an association between your app and a website,
+  your manifest must also include an additional declaration for requesting automatic verification.
+  When this declaration is present, the Android system attempts to verify your app after
+  installation. If the verification succeeds, and the user has not set an alternate
+  preference for handling your website URIs, the system automatically routes those URI requests to
+  your app.
+</p>
+
+<p>
+  The system performs app-link verifications by comparing the host names in the data elements of
+  the app’s intent filters against the Digital Asset Links files ({@code assetlinks.json}) hosted
+  on the respective web domains. To enable the system to verify a host, make sure that your intent
+  filter declarations include the {@code android.intent.action.VIEW} intent action and {@code
+  android.intent.category.BROWSABLE} intent category.
+</p>
+
+
+<h3 id="config-verify">Enabling automatic verification</h3>
+
+<p>
+  To enable link handling verification for your app, set the {@code android:autoVerify} attribute to
+  {@code true} on at least one of the web URI intent filters in your app manifest, as shown in the
+  following manifest code snippet:
+</p>
+
+<pre>
+&lt;activity ...&gt;
+
+    &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
+        &lt;action android:name="android.intent.action.VIEW" /&gt;
+        &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+        &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+        &lt;data android:scheme="http" android:host="www.android.com" /&gt;
+        &lt;data android:scheme="https" android:host="www.android.com" /&gt;
+    &lt;/intent-filter&gt;
+
+&lt;/activity&gt;
+</pre>
+
+<p>
+  When the {@code android:autoVerify} attribute is present, installing your app causes the system
+  to attempt to verify all hosts associated with the web URIs in all of your app's intent filters.
+  The system treats your app as the default handler for the specified URI pattern only if it
+  successfully verifies <em>all</em> app link patterns declared in your manifest.
+</p>
+
+
+<h3 id="multi-host">Supporting app linking for multiple hosts</h3>
+
+<p>
+  The system must be able to verify every host specified in the app’s web URI intent filters’ data
+  elements against the Digital Asset Links files hosted on the respective web domains. If any
+  verification fails, the app is not verified to be a default handler for any of the web URI
+  patterns defined in the app's intent filters. For example, an app with the following intent
+  filters would fail verification if an {@code assetlinks.json} file were not found at both
+  {@code https://www.domain1.com/.well-known/assetlinks.json} and
+  {@code https://www.domain2.com/.well-known/assetlinks.json}:
+</p>
+
+<pre>
+&lt;application&gt;
+
+  &lt;activity android:name=”MainActivity”&gt;
+    &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
+      &lt;action android:name="android.intent.action.VIEW" /&gt;
+      &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+      &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+      &lt;data android:scheme="http" android:host="www.domain1.com" /&gt;
+      &lt;data android:scheme="https" android:host="www.domain1.com" /&gt;
+    &lt;/intent-filter&gt;
+  &lt;/activity&gt;
+  &lt;activity android:name=”SecondActivity”&gt;
+    &lt;intent-filter&gt;
+      &lt;action android:name="android.intent.action.VIEW" /&gt;
+      &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+      &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+      &lt;data android:scheme="https" android:host="www.domain2.com" /&gt;
+    &lt;/intent-filter&gt;
+  &lt;/activity&gt;
+
+&lt;/application
+</pre>
+
+
+<h3 id="multi-subdomain">Supporting app linking for multiple subdomains</h3>
+
+<p>
+  The Digital Asset Links protocol treats subdomains as unique, separate hosts. If your intent
+  filter lists both the {@code www.example.com} and {@code mobile.example.com} subdomains as
+  hosts, you must host a separate {@code assetlink.json} file on each subdomain. For example, an
+  app with the following intent filter declaration would pass verification only if the website
+  owner published valid {@code assetlinks.json} files at both
+  {@code https://www.example.com/.well-known/assetlinks.json} and
+  {@code https://mobile.example.com/.well-known/assetlinks.json}:
+</p>
+
+<pre>
+&lt;application&gt;
+  &lt;activity android:name=”MainActivity”&gt;
+    &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
+      &lt;action android:name="android.intent.action.VIEW" /&gt;
+      &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+      &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+      &lt;data android:scheme="http" android:host="www.example.com" /&gt;
+      &lt;data android:scheme="https" android:host="mobile.example.com" /&gt;
+    &lt;/intent-filter&gt;
+  &lt;/activity&gt;
+&lt;/application&gt;
+</pre>
+
+
+<h2 id="web-assoc">Declare Website Associations</h2>
+
+<p>
+  For app link verification to be successful, website owners must declare associations
+  with apps. A site owner declares the relationship to an app by hosting a Digital Asset Links JSON
+  file, with the name {@code assetlinks.json}, at the following well-known location on the domain:
+</p>
+
+<pre>
+https://<em>domain</em>[:<em>optional_port</em>]/.well-known/assetlinks.json
+</pre>
+
+<p class="note">
+  <strong>Important:</strong> The system verifies the JSON file via the encrypted HTTPS protocol.
+  Make sure that your hosted file is accessible over an HTTPS connection, regardless of whether
+  your app's intent filter includes {@code https}.
+</p>
+
+<p>
+  A Digital Asset Links JSON file indicates the Android apps that are associated with the website.
+  The JSON file uses the following fields to identify associated apps:
+</p>
+
+<ul>
+  <li>{@code package_name}: The package name declared in the app's manifest.</li>
+
+  <li>{@code sha256_cert_fingerprints}: The SHA256 fingerprints of your app’s signing certificate.
+    You can use the following command to generate the fingerprint via the Java keytool:
+
+    <pre class="no-pretty-print">
+$ keytool -list -v -keystore my-release-key.keystore
+    </pre>
+
+    This field supports multiple fingerprints, which can be used to support different versions
+    of your app, such as debug and production builds.
+  </li>
+</ul>
+
+<p>
+  The following example {@code assetlinks.json} file grants link-opening rights to a
+  {@code com.example} Android app:
+</p>
+
+<pre>
+[{
+  "relation": ["delegate_permission/common.handle_all_urls"],
+  "target": {
+    "namespace": "android_app",
+    "package_name": "com.example",
+    "sha256_cert_fingerprints":
+    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
+  }
+}]
+</pre>
+
+
+<h3 id="multiple-apps">Associating a website with multiple apps</h3>
+
+<p>
+  A website can declare associations with multiple apps within the same {@code assetlinks.json}
+  file. The following file listing shows an example of a statement file that declares association
+  with two apps, separately, and resides at
+  <code>https://www.example.com/.well-known/assetlinks.json</code>:
+</p>
+
+<pre>
+[{
+  "relation": ["delegate_permission/common.handle_all_urls"],
+  "target": {
+    "namespace": "android_app",
+    "package_name": <strong>"example.com.puppies.app"</strong>,
+    "sha256_cert_fingerprints":
+    ["<strong>14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5</strong>"]
+  }
+  },
+  {
+  "relation": ["delegate_permission/common.handle_all_urls"],
+  "target": {
+    "namespace": "android_app",
+    "package_name": "<strong>example.com.monkeys.app</strong>",
+    "sha256_cert_fingerprints":
+    ["<strong>14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5</strong>"]
+  }
+}]
+</pre>
+
+<p>
+  Different apps may handle links for different resources under the same web host. For example,
+  app1 may declare an intent filter for {@code https://example.com/articles}, and app2 may declare
+  an intent filter for {@code https://example.com/videos}.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> Multiple apps associated with a domain may be signed with the same or
+  different certificates.
+</p>
+
+
+<h3 id="multi-site">Associating multiple websites with a single app</h3>
+
+<p>
+  Multiple websites can declare associations with the same app in their respective {@code
+  assetlinks.json} files. The following file listings show an example of how to declare the
+  association of domain1 and domain2 with app1. The first listing shows the association of
+  domain1 with app1:
+</p>
+
+<pre>
+https://www.domain1.com/.well-known/assetlinks.json
+
+[{
+  "relation": ["delegate_permission/common.handle_all_urls"],
+  "target": {
+    "namespace": "android_app",
+    "package_name": "<strong>com.mycompany.app1</strong>",
+    "sha256_cert_fingerprints":
+    ["<strong>14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5</strong>"]
+  }
+}]
+</pre>
+
+<p>The next listing shows the association of domain2 with app1. Only the very last line, which
+specifies the URL, is different:</p>
+
+<pre>
+https://www.domain2.com/.well-known/assetlinks.json
+
+[{
+  "relation": ["delegate_permission/common.handle_all_urls"],
+  "target": {
+    "namespace": "android_app",
+    "package_name": "<strong>com.mycompany.app1</strong>",
+    "sha256_cert_fingerprints":
+    ["<strong>14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5</strong>"]
+  }
+}]
+</pre>
+
+<h2 id="testing">Test App Links</h2>
+
+<p>
+  When implementing the app linking feature, you should test the linking functionality to
+  make sure the system can associate your app with your websites, and handle URI requests,
+  as you expect.
+</p>
+
+
+<h3 id="test-hosts">Confirm the list of hosts to verify</h3>
+
+<p>
+  When testing, you should confirm the list of associated hosts that the system should verify
+  for your app. Make a list of all web URIs whose corresponding intent filters include the following
+  attributes and elements:
+</p>
+
+<ul>
+  <li>{@code android:scheme} attribute with a value of {@code http} or {@code https}
+  </li>
+  <li>{@code android:host} attribute with a domain URI pattern
+  </li>
+  <li>{@code android.intent.action.VIEW} category element
+  </li>
+  <li>{@code android.intent.category.BROWSABLE} category element
+  </li>
+</ul>
+
+<p>
+  Use this list to check that a Digital Asset Links JSON file is provided on each named host
+  and subdomain.
+</p>
+
+
+<h3 id="test-dal-files">Confirm the Digital Asset Links files</h3>
+
+<p>
+  For each website, use the Digital Asset Links API to confirm that the Digital Asset Links JSON
+  file is properly hosted and defined:
+</p>
+
+<pre>
+https://digitalassetlinks.googleapis.com/v1/statements:list?
+   source.web.site=https://<strong>&lt;domain1&gt;:&lt;port&gt;</strong>&amp;
+   relation=delegate_permission/common.handle_all_urls
+</pre>
+
+
+<h3 id="test-intent">Testing a web URI intent</h3>
+
+<p>
+  Once you have confirmed the list of websites to associate with your app, and you have confirmed
+  that the hosted JSON file is valid, install the app on your device. Wait at least 20 seconds for
+  the asynchronous verification process to complete. Use the following command to check
+  whether the system verified your app and set the correct link handling policies:
+</p>
+
+<pre>
+adb shell am start -a android.intent.action.VIEW \
+    -c android.intent.category.BROWSABLE \
+    -d "http://&lt;domain1&gt;:&lt;port&gt;"
+</pre>
+
+
+<h3 id="check-link-policies">Check link policies</h3>
+
+<p>
+  As part of your testing process, you can check the current system settings for link handling.
+  Use the following command to get a listing of existing link-handling policies for all
+  applications:
+</p>
+
+<pre>
+adb shell dumpsys package domain-preferred-apps
+ --or--
+adb shell dumpsys package d
+</pre>
+
+<p class="note">
+  <strong>Note:</strong> Make sure you wait at least 20 seconds after installation of your app to
+  allow for the system to complete the verification process.
+</p>
+
+<p>
+  The command returns a listing of each user or profile defined on the device,
+  preceded by a header in the following format:
+</p>
+
+<pre>
+App linkages for user 0:
+</pre>
+
+<p>
+  Following this header, the output uses the following format to list the link-handling settings
+  for that user:
+</p>
+
+<pre>
+Package: com.android.vending
+Domains: play.google.com market.android.com
+Status: always : 200000002
+</pre>
+
+<p>This listing indicates which apps are associated with which domains for that user:</p>
+
+<ul>
+  <li>{@code Package} - Identifies an app by its package name, as declared in its manifest.
+  </li>
+  <li>{@code Domains} - Shows the full list of hosts whose web links this app handles, using
+  blank spaces as delimiters.
+  </li>
+  <li>{@code Status} - Shows the current link-handling setting for this app. An app that has
+  passed verification, and whose manifest contains {@code android:autoVerify="true"}, shows a status
+  of {@code always}. The hexadecimal number after this status is related to the Android system's
+  record of the user’s app linkage preferences. This value does not indicate whether verification
+  succeeded.
+  </li>
+</ul>
+
+<p class="note">
+  <strong>Note:</strong> If a user changes the app link settings for an app before verification
+  is complete, you may see a false positive for a successful verification, even though
+  verification has failed. This verification failure, however, does not matter if the user
+  explicitly enabled the app to open supported links without asking. This is because
+  user preferences take precedence over programmatic verification (or lack of it). As a result,
+  the link goes directly to your app, without showing a dialog, just as if verification had
+  succeeded.
+</p>
+
+
+
+<h3 id="test-example">Test example</h3>
+
+<p>
+  For app link verification to succeed, the system must be able to verify your app with all of
+  the websites that you specify in your app’s intent filters, and that meet the criteria for app
+  links. The following example shows a manifest configuration with several app links defined:
+</p>
+
+<pre>
+&lt;application&gt;
+
+    &lt;activity android:name=”MainActivity”&gt;
+        &lt;intent-filter <strong>android:autoVerify="true"</strong>&gt;
+            &lt;action android:name="android.intent.action.VIEW" /&gt;
+            &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+            &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+            &lt;data android:scheme="http" android:host="www.example.com" /&gt;
+            &lt;data android:scheme="https" android:host="mobile.example.com" /&gt;
+        &lt;/intent-filter&gt;
+        &lt;intent-filter&gt;
+            &lt;action android:name="android.intent.action.VIEW" /&gt;
+            &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+            &lt;data android:scheme="http" android:host="www.example2.com" /&gt;
+        &lt;/intent-filter&gt;
+    &lt;/activity&gt;
+
+    &lt;activity android:name=”SecondActivity”&gt;
+        &lt;intent-filter&gt;
+            &lt;action android:name="android.intent.action.VIEW" /&gt;
+            &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+            &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+            &lt;data android:scheme="http" android:host="account.example.com" /&gt;
+        &lt;/intent-filter&gt;
+    &lt;/activity&gt;
+
+      &lt;activity android:name=”ThirdActivity”&gt;
+        &lt;intent-filter&gt;
+            &lt;action android:name="android.intent.action.VIEW" /&gt;
+            &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+            &lt;data android:scheme="http" android:host="map.example.com" /&gt;
+        &lt;/intent-filter&gt;
+        &lt;intent-filter&gt;
+            &lt;action android:name="android.intent.action.VIEW" /&gt;
+            &lt;category android:name="android.intent.category.BROWSABLE" /&gt;
+            &lt;data android:scheme="market" android:host="example.com" /&gt;
+        &lt;/intent-filter&gt;
+      &lt;/activity&gt;
+
+&lt;/application&gt;
+</pre>
+
+<p>
+  The list of hosts that the platform would attempt to verify from the above manifest is:
+</p>
+
+<pre>
+www.example.com
+mobile.example.com
+www.example2.com
+account.example.com
+</pre>
+
+<p>
+  The list of hosts that the platform would not attempt to verify from the above manifest is:
+</p>
+
+<pre>
+map.example.com (it does not have android.intent.category.BROWSABLE)
+market://example.com (it does not have either an “http” or “https” scheme)
+</pre>
diff --git a/docs/html/training/appbar/action-views.jd b/docs/html/training/appbar/action-views.jd
new file mode 100644
index 0000000..37d8a51
--- /dev/null
+++ b/docs/html/training/appbar/action-views.jd
@@ -0,0 +1,248 @@
+page.title=Action Views and Action Providers
+page.tags="action view", "action provider"
+helpoutsWidget=true
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+  <div id="tb">
+
+    <h2>This lesson teaches you to</h2>
+
+    <ol>
+      <li><a href="#action-view">Add an Action View</a></li>
+      <li><a href="#action-provider">Add an Action Provider</a></li>
+    </ol>
+
+<!--
+    <h2>Useful Resources</h2>
+    <ul>
+      <li></li>
+    </ul>
+-->
+
+  </div>
+</div>
+
+<p>
+  The <a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7
+  appcompat</a> support library {@link android.support.v7.widget.Toolbar} provides several
+  different ways for users to interact with your app. Previous lessons
+  described how to define an <em>action</em>, which can be either a button or a
+  menu item. This lesson describes how to add two versatile components:
+</p>
+
+<ul>
+  <li>An <em>action view</em> is an action that provides rich functionality
+  within the app bar. For example, a search action view allows the user to type
+  their search text in the app bar, without having to change activities or
+  fragments.
+  </li>
+
+  <li>An <em>action provider</em> is an action with its own customized layout.
+  The action initially appears as a button or menu item, but when the user clicks the
+  action, the action provider controls the action's behavior in any way you
+  want to define. For example, the action provider might respond to a click by
+  displaying a menu.
+  </li>
+</ul>
+
+<p>
+  The Android support libraries provide several specialized action view and
+  action provider widgets. For example, the {@link
+  android.support.v7.widget.SearchView} widget implements an action view for
+  entering search queries, and the {@link
+  android.support.v7.widget.ShareActionProvider} widget implements an action
+  provider for
+  sharing information with other apps. You can also define your own action
+  views and action providers.
+</p>
+
+<h2 id="action-view">
+  Add an Action View
+</h2>
+
+<p>
+  To add an action view, create an <a href=
+  "{@docRoot}guide/topics/resources/menu-resource.html#item-element"><code>&lt;item&gt;</code></a>
+  element in the toolbar's menu resource, as <a href="actions.html">Add Action
+  Buttons</a> describes. Add one of the following two
+  attributes to the <a href=
+  "{@docRoot}guide/topics/resources/menu-resource.html#item-element"><code>&lt;item&gt;</code></a>
+  element:
+</p>
+
+<ul>
+  <li>
+    <code>actionViewClass</code>: The class of a widget that implements the
+    action.
+  </li>
+
+  <li>
+    <code>actionLayout</code>: A layout resource describing the action's
+    components.
+  </li>
+</ul>
+
+<p>
+  Set the <code>showAsAction</code> attribute to either
+  <code>"ifRoom|collapseActionView"</code> or
+  <code>"never|collapseActionView"</code>. The <code>collapseActionView</code>
+  flag indicates how to display the widget when the user is not interacting with
+  it: If the widget is on the app bar, the app should display the widget as an
+  icon. If the widget is in the overflow menu, the app should display the widget
+  as a menu item. When the user interacts with the action view, it
+  expands to fill the app bar.
+</p>
+
+<p>
+  For example, the following code adds a {@link
+  android.support.v7.widget.SearchView} widget to the app bar:
+</p>
+
+<pre>
+&lt;item android:id="&#64;+id/action_search"
+     android:title="&#64;string/action_search"
+     android:icon="&#64;drawable/ic_search"
+     <strong>app:showAsAction="ifRoom|collapseActionView"</strong>
+     <strong>app:actionViewClass="android.support.v7.widget.SearchView" /&gt;</strong>
+</pre>
+
+<p>
+  If the user is not interacting with the widget, the app displays the widget
+  as the icon specified by <code>android:icon</code>. (If there is not enough
+  room in the app bar, the app adds the action to the overflow menu.) When the
+  user taps the icon or menu item, the widget expands to fill the toolbar,
+  allowing the user to interact with it.
+</p>
+
+<img src="{@docRoot}images/training/appbar/action_view_2x.png"
+    srcset="{@docRoot}images/training/appbar/action_view.png 1x,
+        {@docRoot}images/training/appbar/action_view_2x.png 2x"
+    alt="" width="400" id="figure-action-view">
+<p class="img-caption">
+  <strong>Figure 1.</strong> When the user clicks an action view's icon, the
+  view's UI fills the toolbar.
+</p>
+
+<p>
+  If you need to configure the action, do so in your activity's {@link
+  android.app.Activity#onCreateOptionsMenu onCreateOptionsMenu()} callback. You
+  can get the action view's object reference by calling the static {@link
+  android.support.v4.view.MenuItemCompat#getActionView getActionView()} method.
+  For example, the following code gets the object reference for the {@link
+  android.support.v7.widget.SearchView} widget defined in the previous code
+  example:
+</p>
+
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu) {
+    getMenuInflater().inflate(R.menu.main_activity_actions, menu);
+
+    <strong>MenuItem searchItem = menu.findItem(R.id.action_search);</strong>
+    <strong>SearchView searchView =
+            (SearchView) MenuItemCompat.getActionView(searchItem);</strong>
+
+    // Configure the search info and add any event listeners...
+
+    return super.onCreateOptionsMenu(menu);
+}
+</pre>
+<h3 id="view-expansion">Responding to action view expansion</h3>
+
+<p>
+  If the action's <a href=
+  "{@docRoot}guide/topics/resources/menu-resource.html#item-element"><code>&lt;item&gt;</code></a>
+  element has a <code>collapseActionView</code> flag, the app displays the action
+  view as an icon until the user interacts with the action view.
+  When the user clicks on the icon, the built-in handler for {@link
+  android.app.Activity#onOptionsItemSelected onOptionsItemSelected()} expands
+  the action view. If your activity subclass overrides the {@link
+  android.app.Activity#onOptionsItemSelected onOptionsItemSelected()} method,
+  your override method must call {@link android.app.Activity#onOptionsItemSelected
+  super.onOptionsItemSelected()} so the superclass can expand the action view.
+</p>
+
+<p>
+  If you want to do something when the action is expanded or collapsed, you can
+  define a class that implements
+  {@link android.view.MenuItem.OnActionExpandListener}, and pass a member of
+  that class to
+  {@link android.view.MenuItem#setOnActionExpandListener
+  setOnActionExpandListener()}. For example, you might want to update the
+  activity based on whether an action view is expanded or collapsed. The
+  following snippet shows how to define and pass a listener:
+</p>
+<pre>
+&#64;Override
+public boolean onCreateOptionsMenu(Menu menu) {
+    getMenuInflater().inflate(R.menu.options, menu);
+    // ...
+
+    // Define the listener
+    OnActionExpandListener expandListener = new OnActionExpandListener() {
+        &#64;Override
+        public boolean onMenuItemActionCollapse(MenuItem item) {
+            // Do something when action item collapses
+            return true;  // Return true to collapse action view
+        }
+
+        &#64;Override
+        public boolean onMenuItemActionExpand(MenuItem item) {
+            // Do something when expanded
+            return true;  // Return true to expand action view
+        }
+    };
+
+    // Get the MenuItem for the action item
+    MenuItem actionMenuItem = menu.findItem(R.id.myActionItem);
+
+    // Assign the listener to that action item
+    MenuItemCompat.setOnActionExpandListener(actionMenuItem, expandListener);
+
+    // Any other things you have to do when creating the options menu…
+
+    return true;
+}
+</pre>
+
+<h2 id="action-provider">
+  Add an Action Provider
+</h2>
+
+<p>
+  To declare an action provider, create an <a href=
+  "{@docRoot}guide/topics/resources/menu-resource.html#item-element"><code>&lt;item&gt;</code></a>
+  element in the toolbar's menu resource, as described in <a href=
+  "actions.html">Add Action Buttons</a>. Add an
+  <code>actionProviderClass</code> attribute, and set it to the fully qualified
+  class name for the action provider class.
+</p>
+
+<p>
+  For example, the following code declares a {@link
+  android.support.v7.widget.ShareActionProvider}, which is a widget defined in
+  the support library that allows your app to share data with other apps:
+</p>
+
+<pre>
+&lt;item android:id="&#64;+id/action_share"
+    android:title="&#64;string/share"
+    app:showAsAction="ifRoom"
+    app:actionProviderClass="android.support.v7.widget.ShareActionProvider"/&gt;
+</pre>
+
+<p>
+  In this case, it is not necessary to declare an icon for the widget, since {@link
+  android.support.v7.widget.ShareActionProvider} provides its own graphics. If
+  you are using a custom action, declare an icon.
+</p>
+
+<p>
+  For information about creating a custom action provider, see the {@link
+  android.support.v4.view.ActionProvider} reference. For information about
+  configuring a {@link android.support.v7.widget.ShareActionProvider}, see the
+  reference for that class.
+</p>
diff --git a/docs/html/training/appbar/actions.jd b/docs/html/training/appbar/actions.jd
new file mode 100644
index 0000000..68483ca
--- /dev/null
+++ b/docs/html/training/appbar/actions.jd
@@ -0,0 +1,154 @@
+page.title=Adding and Handling Actions
+page.tags="appbar","actionbar"
+helpoutsWidget=true
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+  <div id="tb">
+
+    <h2>This lesson teaches you to</h2>
+
+    <ol>
+      <li><a href="#add-actions">Add Action Buttons</a></li>
+      <li><a href="#handle-actions">Respond to Actions</a></li>
+    </ol>
+
+    <h2>Useful Resources</h2>
+    <ul>
+      <li><a href="https://www.google.com/design/icons/">Material Icons</a></li>
+    </ul>
+
+
+  </div>
+</div>
+
+
+<a class="notice-designers wide" href="{@docRoot}design/patterns/actionbar.html#ActionButtons">
+  <div>
+    <h3>Design Guide</h3>
+    <p>Action Buttons</p>
+  </div>
+</a>
+
+
+<p>
+  The app bar allows you to add buttons for user actions. This feature lets you
+  put the most important <em>actions</em> for the current context right at the
+  top of the app. For example, a photo browsing app might show <em>share</em>
+  and <em>create album</em> buttons at the top when the user is looking at
+  their photo roll; when the user looks at an individual photo, the app might
+  show <em>crop</em> and <em>filter</em> buttons.
+</p>
+
+<p>
+  Space in the app bar is limited. If an app declares more actions than can
+  fit in the app bar, the app bar send the excess actions to an
+  <em>overflow</em> menu. The app can also specify that an action should always
+  be shown in the overflow menu, instead of being displayed on the app bar.
+</p>
+
+<img src="{@docRoot}images/training/appbar/appbar_with_button_2x.png"
+  srcset="{@docRoot}images/training/appbar/appbar_with_button.png 1x,
+      {@docRoot}images/training/appbar/appbar_with_button_2x.png 2x"
+  width="400" alt="">
+
+<p class="img-caption">
+  <strong>Figure 1.</strong> An app bar with a single action button and an
+  overflow menu.
+</p>
+
+<h2 id="add-actions">Add Action Buttons</h2>
+
+<p>
+  All action buttons and other items available in the action overflow are
+  defined in an XML <a href=
+  "{@docRoot}guide/topics/resources/menu-resource.html">menu resource</a>. To
+  add actions to the action bar, create a new XML file in your project's
+  <code>res/menu/</code> directory.
+</p>
+
+<p>
+  Add an <a href=
+  "{@docRoot}guide/topics/resources/menu-resource.html#item-element"><code>&lt;item&gt;</code></a>
+  element for each item you want to include in the action bar, as shown in this
+  code example of a menu XML file:
+</p>
+
+<pre>
+&lt;menu xmlns:android="http://schemas.android.com/apk/res/android" &gt;
+
+    &lt;!-- "Mark Favorite", should appear as action button if possible --&gt;
+    &lt;item
+        android:id="@+id/action_favorite"
+        android:icon="@drawable/ic_favorite_black_48dp"
+        android:title="@string/action_favorite"
+        app:showAsAction="ifRoom"/&gt;
+
+    &lt;!-- Settings, should always be in the overflow --&gt;
+    &lt;item android:id="@+id/action_settings"
+          android:title="@string/action_settings"
+          app:showAsAction="never"/&gt;
+
+&lt;/menu&gt;
+</pre>
+
+<p>
+  The <code>app:showAsAction</code> attribute specifies whether the action
+  should be shown as a button on the app bar. If you set
+  <code>app:showAsAction="ifRoom"</code> (as in the example code's <em>favorite</em> action), the action is displayed as a button
+  if there is room in the app bar for it; if there is not enough room, excess
+  actions are sent to the overflow menu. If you set
+  <code>app:showAsAction="never"</code> (as in the example code's <em>settings</em> action), the action is always listed in the
+  overflow menu, not displayed in the app bar.
+</p>
+
+<p>
+  The system uses the action's icon as the action button if the action is
+  displayed in the app bar. You can find many useful icons on the <a href=
+  "https://www.google.com/design/icons/">Material Icons</a> page.
+</p>
+
+<h2 id="handle-actions">Respond to Actions</h2>
+
+<p>
+  When the user selects one of the app bar items, the system calls your
+  activity's {@link android.app.Activity#onOptionsItemSelected
+  onOptionsItemSelected()} callback method, and passes a {@link
+  android.view.MenuItem} object to indicate which item was clicked. In your
+  implementation of {@link android.app.Activity#onOptionsItemSelected
+  onOptionsItemSelected()}, call the {@link android.view.MenuItem#getItemId
+  MenuItem.getItemId()} method to determine which item was pressed. The ID returned
+  matches the value you declared in the corresponding <a href=
+  "{@docRoot}guide/topics/resources/menu-resource.html#item-element"><code>&lt;item&gt;</code></a>
+  element's <code>android:id</code> attribute.
+</p>
+
+<p>
+  For example, the following code checks to see which action the user selected.
+  If the method does not recognize the user's action, it invokes the superclass
+  method:
+</p>
+
+<pre>
+&#64;Override
+public boolean onOptionsItemSelected(MenuItem item) {
+    switch (item.getItemId()) {
+        case R.id.action_settings:
+            // User chose the "Settings" item, show the app settings UI...
+            return true;
+
+        case R.id.action_favorite:
+            // User chose the "Favorite" action, mark the current item
+            // as a favorite...
+            return true;
+
+        default:
+            // If we got here, the user's action was not recognized.
+            // Invoke the superclass to handle it.
+            return super.onOptionsItemSelected(item);
+
+    }
+}
+</pre>
diff --git a/docs/html/training/appbar/index.jd b/docs/html/training/appbar/index.jd
new file mode 100755
index 0000000..64ce94d
--- /dev/null
+++ b/docs/html/training/appbar/index.jd
@@ -0,0 +1,101 @@
+page.title=Adding the App Bar
+page.tags="appbar","actionbar"
+helpoutsWidget=true
+trainingnavtop=true
+startpage=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>You should also read</h2>
+<ul>
+  <li><a href="{@docRoot}training/implementing-navigation/index.html">
+    Implementing Effective Navigation</a></li>
+  <li><a href="http://www.google.com/design/spec/layout/structure.html#structure-app-bar">
+    Material Design: App Bar</a></li>
+</ul>
+
+</div>
+</div>
+
+<p>
+  The <em>app bar</em>, also known as the <em>action bar</em>, is one of the most
+  important design elements in your app's activities, because
+  it provides a visual structure and interactive elements that are familiar to
+  users. Using the app bar makes your app consistent with other Android apps,
+  allowing users to quickly understand how to operate your app and have a great
+  experience.
+  The key functions of the app bar
+  are as follows:
+</p>
+
+<ul>
+  <li>A dedicated space for giving your app an identity and indicating the
+  user's location in the app.
+  </li>
+
+  <li>Access to important actions in a predictable way, such as search.
+  </li>
+
+  <li>Support for navigation and view switching (with tabs or drop-down lists).
+  </li>
+</ul>
+
+<img src="{@docRoot}images/training/appbar/appbar_sheets_2x.png"
+    srcset="{@docRoot}images/training/appbar/appbar_sheets.png 1x,
+        {@docRoot}images/training/appbar/appbar_sheets_2x.png 2x"
+    width="400" alt="" />
+
+<p>
+  This class describes how to use the
+  <a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7
+  appcompat</a> support library's {@link
+  android.support.v7.widget.Toolbar} widget as an app bar. There are other ways
+  to implement an app bar—for example, some themes set up an {@link
+  android.app.ActionBar} as an app bar by default—but using the appcompat
+  {@link android.support.v7.widget.Toolbar} makes it easy to set up an app bar
+  that works on the widest range of devices, and also gives you room to
+  customize your app bar later on as your app develops.
+</p>
+
+<h2>Lessons</h2>
+
+<dl>
+  <dt>
+    <b><a href="setting-up.html">Setting Up the App Bar</a></b>
+  </dt>
+
+  <dd>
+    Learn how to add a {@link android.support.v7.widget.Toolbar} widget to your
+    activity, and set it as the activity's app bar.
+  </dd>
+
+  <dt>
+    <b><a href="actions.html">Adding and Handling Actions</a></b>
+  </dt>
+
+  <dd>
+    Learn how to add actions to the app bar and its overflow menu, and how to
+    respond when users choose those actions.
+  </dd>
+
+  <dt>
+    <b><a href="up-action.html">Adding an Up Action</a></b>
+  </dt>
+
+  <dd>
+    Learn how to add an <em>Up</em> button to your app bar, so users
+    can navigate back to the app's home screen.
+  </dd>
+
+  <dt>
+    <b><a href="action-views.html">Action Views and Action Providers</a></b>
+  </dt>
+
+  <dd>
+    Learn how to use these widgets to provide advanced functionality in your
+    app bar.
+  </dd>
+</dl>
diff --git a/docs/html/training/appbar/setting-up.jd b/docs/html/training/appbar/setting-up.jd
new file mode 100644
index 0000000..cc963c6
--- /dev/null
+++ b/docs/html/training/appbar/setting-up.jd
@@ -0,0 +1,181 @@
+page.title=Setting Up the App Bar
+page.tags="appbar","actionbar", "toolbar"
+helpoutsWidget=true
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+  <div id="tb">
+
+    <h2>This lesson teaches you to</h2>
+
+    <ol>
+      <li><a href="#add-toolbar">Add a Toolbar to an Activity</a></li>
+      <li><a href="#utility">Use App Bar Utility Methods</a></li>
+    </ol>
+
+    <h2>You should also read</h2>
+    <ul>
+      <li><a href="{@docRoot}tools/support-library/setup.html"
+    >Setting Up the Support Library</a></li>
+    </ul>
+  </div>
+</div>
+
+
+<p>
+  In its most basic form, the action bar displays the title for the activity on
+  one side and an <em>overflow menu</em> on the other. Even in this simple
+  form, the app bar provides useful information to the users, and helps to give
+  Android apps a consistent look and feel.
+</p>
+
+<img src="{@docRoot}images/training/appbar/appbar_basic_2x.png"
+    srcset="{@docRoot}images/training/appbar/appbar_basic.png 1x,
+        {@docRoot}images/training/appbar/appbar_basic_2x.png 2x"
+    width="400" alt="" />
+<p class="img-caption"><strong>Figure 1.</strong> An app bar with the app
+title and overflow menu.</a>
+
+<p>
+  Beginning with Android 3.0 (API level 11), all
+  activities that use the default theme have an {@link android.app.ActionBar}
+  as an app bar. However, app bar features have gradually been added to the
+  native {@link android.app.ActionBar} over various Android releases. As a
+  result, the native {@link android.app.ActionBar} behaves differently
+  depending on what version of the Android system a device may be using. By
+  contrast, the most recent features are added to the support library's version
+  of {@link android.support.v7.widget.Toolbar}, and they are available on any
+  device that can use the support library.
+</p>
+
+<p>
+  For this reason, you should use the support library's {@link
+  android.support.v7.widget.Toolbar} class to implement your activities' app
+  bars. Using the support library's toolbar helps ensure that your app will
+  have consistent behavior across the widest range of devices. For example, the
+  {@link android.support.v7.widget.Toolbar} widget provides a <a href=
+  "{@docRoot}design/material/index.html">material design</a> experience on
+  devices running Android 2.1 (API level 7) or later, but the native action
+  bar doesn't support material design unless the device is running Android 5.0
+  (API level 21) or later.
+</p>
+
+<h2 id="add-toolbar">Add a Toolbar to an Activity</h2>
+
+These steps describe how to set up a {@link android.support.v7.widget.Toolbar}
+as your activity's app bar:
+
+<ol>
+  <li>Add the the
+  <a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7
+  appcompat</a> support library to your project, as described in <a href=
+  "{@docRoot}tools/support-library/setup.html">Support Library Setup</a>.
+  </li>
+
+  <li>Make sure the activity extends {@link
+  android.support.v7.app.AppCompatActivity}:
+
+    <pre>
+public class MyActivity extends AppCompatActivity {
+  // ...
+}
+</pre>
+    <p class="note">
+      <strong>Note:</strong> Make this change for every activity in your app
+      that uses a {@link android.support.v7.widget.Toolbar} as an app bar.
+    </p>
+  </li>
+
+  <li>In the app manifest, set the <a href=
+  "{@docRoot}guide/topics/manifest/application-element.html"><code>&lt;application&gt;</code></a>
+  element to use one of appcompat's {@link
+  android.support.v7.appcompat.R.style#Theme_AppCompat_NoActionBar NoActionBar}
+  themes. Using one of these themes prevents the app from using the native
+  {@link android.app.ActionBar} class to provide the app bar. For example:
+
+    <pre>
+&lt;application
+    android:theme="&#64;style/Theme.AppCompat.Light.NoActionBar"
+    /&gt;
+</pre>
+  </li>
+
+  <li>Add a {@link android.support.v7.widget.Toolbar} to the activity's layout.
+  For example, the following layout code adds a {@link
+  android.support.v7.widget.Toolbar} and gives it the appearance of floating
+  above the activity:
+
+    <pre>
+&lt;android.support.v7.widget.Toolbar
+   android:id="&#64;+id/my_toolbar"
+   android:layout_width="match_parent"
+   android:layout_height="?attr/actionBarSize"
+   android:background="?attr/colorPrimary"
+   android:elevation="4dp"
+   android:theme="&#64;style/ThemeOverlay.AppCompat.ActionBar"
+   app:popupTheme="&#64;style/ThemeOverlay.AppCompat.Light"/&gt;
+</pre>
+    <p>
+      The <a href=
+      "https://www.google.com/design/spec/what-is-material/elevation-shadows.html#elevation-shadows-shadows">
+      Material Design specification</a> recommends that app bars have an
+      elevation of 4 dp.
+    </p>
+
+    <p>
+      Position the toolbar at the top of the activity's
+      <a href="{@docRoot}guide/topics/ui/declaring-layout.html">layout</a>,
+      since you are using it as an app bar.
+    </p>
+  </li>
+
+  <li>In the activity's {@link android.app.Activity#onCreate onCreate()}
+  method, call the activity's {@link
+  android.support.v7.app.AppCompatActivity#setSupportActionBar
+  setSupportActionBar()} method, and pass the activity's toolbar. This method
+  sets the toolbar as the app bar for the activity. For example:
+
+    <pre>
+&#64;Override
+protected void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_my);
+    <strong>Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
+    setSupportActionBar(myToolbar);</strong>
+    }
+</pre>
+  </li>
+</ol>
+
+<p>
+  Your app now has a basic action bar. By default, the action bar contains just
+  the name of the app and an overflow menu. The options menu initially contains
+  just the <strong>Settings</strong> item. You can add more actions to the
+  action bar and the overflow menu, as described in <a href=
+  "actions.html">Adding and Handling Actions</a>.
+</p>
+
+<h2 id="utility">Use App Bar Utility Methods</h2>
+
+<p>
+  Once you set the toolbar as an activity's app bar, you have access to the
+  various utility methods provided by the
+  <a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7
+  appcompat</a> support library's {@link
+  android.support.v7.app.ActionBar} class. This approach lets you do a number of useful
+  things, like hide and show the app bar.
+</p>
+
+<p>
+  To use the {@link android.support.v7.app.ActionBar} utility methods, call the
+  activity's {@link
+  android.support.v7.app.AppCompatActivity#getSupportActionBar
+  getSupportActionBar()} method. This method returns a reference to an
+  appcompat {@link android.support.v7.app.ActionBar} object.
+  Once you have that reference, you can call any of the {@link
+  android.support.v7.app.ActionBar} methods to adjust the app bar. For example,
+  to hide the app bar, call {@link android.support.v7.app.ActionBar#hide
+  ActionBar.hide()}.
+</p>
diff --git a/docs/html/training/appbar/up-action.jd b/docs/html/training/appbar/up-action.jd
new file mode 100644
index 0000000..1336d20
--- /dev/null
+++ b/docs/html/training/appbar/up-action.jd
@@ -0,0 +1,134 @@
+page.title=Adding an Up Action
+page.tags="appbar","actionbar", "up"
+helpoutsWidget=true
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+  <div id="tb">
+
+    <h2>This lesson teaches you to</h2>
+
+    <ol>
+      <li>
+        <a href="#declare-parent">Declare a Parent Activity</a>
+      </li>
+
+      <li>
+        <a href="#enable-up">Enable the Up Button</a>
+      </li>
+    </ol>
+
+    <h2>See Also</h2>
+    <ul>
+      <li><a href="{@docRoot}training/implementing-navigation/ancestral.html">
+          Providing Up Navigation</a></li>
+    </ul>
+
+
+  </div>
+</div>
+
+<p>
+  Your app should make it easy for users to find their way back to the app's
+  main screen. One simple way to do this is to provide an <em>Up</em>
+  button on the app bar for all activities except the main one. When the user
+  selects the <em>Up</em> button, the app navigates to the parent
+  activity.
+</p>
+
+<p>
+  This lesson shows you how to add an <em>Up</em> button to an activity by
+  declaring the activity's parent in the manifest, and enabling the app bar's
+  <em>Up</em> button.
+</p>
+
+<h2 id="declare-parent">Declare a Parent Activity</h2>
+
+<p>
+  To support the up functionality in an activity, you need to declare the
+  activity's parent. You can do this in the app manifest, by setting an
+  <code>android:parentActivityName</code> attribute.
+</p>
+
+<p>
+  The <code>android:parentActivityName</code> attribute
+  was introduced in Android 4.1 (API level 16). To support devices with older
+  versions of Android, define a <a href=
+  "{@docRoot}guide/topics/manifest/meta-data-element.html"><code>&lt;meta-data&gt;</code></a>
+  name-value pair, where the name is
+  <code>"android.support.PARENT_ACTIVITY"</code> and the value is the name of
+  the parent activity.
+</p>
+
+<p>
+  For example, suppose your app has a main activity named
+  <code>MainActivity</code> and a single child activity. The following manifest
+  code declares both activities, and specifies the parent/child relationship:
+</p>
+<pre>
+&lt;application ... &gt;
+    ...
+
+    &lt;!-- The main/home activity (it has no parent activity) --&gt;
+
+    &lt;activity
+        android:name="com.example.myfirstapp.MainActivity" ...&gt;
+        ...
+    &lt;/activity&gt;
+
+    &lt;!-- A child of the main activity --&gt;
+    &lt;activity
+        android:name="com.example.myfirstapp.MyChildActivity"
+        android:label="@string/title_activity_child"
+        <strong>android:parentActivityName="com.example.myfirstapp.MainActivity"</strong> &gt;
+
+        &lt;!-- Parent activity meta-data to support 4.0 and lower --&gt;
+        &lt;meta-data
+            <strong>android:name="android.support.PARENT_ACTIVITY"
+            android:value="com.example.myfirstapp.MainActivity" /&gt;</strong>
+    &lt;/activity&gt;
+&lt;/application&gt;
+</pre>
+
+<h2 id="enable-up">Enable the Up Button</h2>
+
+<p>
+  To enable the <em>Up</em> button for an activity that has a parent
+  activity, call the app bar's {@link
+  android.support.v7.app.ActionBar#setDisplayHomeAsUpEnabled
+  setDisplayHomeAsUpEnabled()} method. Typically, you would do this when the
+  activity is created. For example, the following {@link
+  android.app.Activity#onCreate onCreate()} method sets a {@link
+  android.support.v7.widget.Toolbar} as the app bar for
+  <code>MyChildActivity</code>, then enables that app bar's <em>Up</em> button:
+</p>
+
+<pre>
+&#64;Override
+protected void onCreate(Bundle savedInstanceState) {
+    super.onCreate(savedInstanceState);
+    setContentView(R.layout.activity_my_child);
+
+    // my_child_toolbar is defined in the layout file
+    Toolbar myChildToolbar =
+        (Toolbar) findViewById(R.id.my_child_toolbar);
+    setSupportActionBar(myChildToolbar);
+
+    // Get a support ActionBar corresponding to this toolbar
+    ActionBar ab = getSupportActionBar();
+
+    // Enable the Up button
+    <strong>ab.setDisplayHomeAsUpEnabled(true);</strong>
+}
+</pre>
+
+<p>
+  You do <em>not</em> need to catch the up action in the activity's {@link
+  android.app.Activity#onOptionsItemSelected onOptionsItemSelected()} method.
+  Instead, that method should call its superclass, as shown in <a href=
+  "actions.html#handle-actions">Respond to Actions</a>. The superclass method
+  responds to the <em>Up</em> selection by navigating to the parent
+  activity, as specified in the app manifest.
+</p>
diff --git a/docs/html/training/articles/assistant.jd b/docs/html/training/articles/assistant.jd
new file mode 100644
index 0000000..a1fbd6b
--- /dev/null
+++ b/docs/html/training/articles/assistant.jd
@@ -0,0 +1,317 @@
+page.title=Optimizing Content for the Assistant
+page.metaDescription=Support contextually relevant actions through the Assist API.
+page.tags=assist, accessibility, now, now on tap
+meta.tags="assistant", "marshmallow", "now"
+page.image=images/cards/card-assist_16-9_2x.png
+
+page.article=true
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+    <h2>In this document</h2>
+    <ol>
+      <li><a href="#assist_api">Using the Assist API</a>
+      <ol>
+        <li><a href="#assist_api_lifecycle">Assist API Lifecycle</a></li>
+        <li><a href="#source_app">Source App</a></li>
+        <li><a href="#destination_app">Destination App</a></li>
+      </ol>
+      </li>
+      <li><a href="#implementing_your_own_assistant">Implementing your
+      own assistant</a></li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  Android 6.0 Marshmallow introduces a new way for users to engage with apps
+  through the assistant.
+</p>
+
+<p>
+  Users summon the assistant with a long-press on the Home button or by saying
+  the {@link android.service.voice.AlwaysOnHotwordDetector keyphrase}. In
+  response to the long-press, the system opens a top-level window that displays
+  contextually relevant actions for the current activity. These potential
+  actions might include deep links to other apps on the device.
+</p>
+
+<p>
+  This guide explains how Android apps use Android's Assist API to improve the
+  assistant user experience.
+</p>
+
+
+<h2 id="assist_api">Using the Assist API</h2>
+
+<p>
+  The example below shows how Google Now integrates with the Android assistant
+  using a feature called Now on Tap.
+</p>
+
+<p>
+  The assistant overlay window in our example (2, 3) is implemented by Google
+  Now through a feature called Now on Tap, which works in concert with the
+  Android platform-level functionality. The system allows the user to select
+  the assistant app (Figure 2) that obtains contextual information from the
+  <em>source</em> app using the Assist API which is a part of the platform.
+</p>
+
+
+<div>
+  <img src="{@docRoot}images/training/assistant/image01.png">
+  <p class="img-caption" style="text-align:center;">
+    Figure 1. Assistant interaction example with the Now on Tap feature of
+    Google Now
+  </p>
+</div>
+
+<p>
+  An Android user first configures the assistant and can change system options
+  such as using text and view hierarchy as well as the screenshot of the
+  current screen (Figure 2).
+</p>
+
+<p>
+  From there, the assistant receives the information only when the user
+  activates assistance, such as when they tap and hold the Home button ( shown
+  in Figure 1, step 1).
+</p>
+
+<div style="float:right;margin:1em;max-width:300px">
+  <img src="{@docRoot}images/training/assistant/image02.png">
+  <p class="img-caption" style="text-align:center;">
+    Figure 2. Assist &amp; voice input settings (<em>Settings/Apps/Default
+    Apps/Assist &amp; voice input</em>)
+  </p>
+</div>
+
+<h3 id="assist_api_lifecycle">Assist API Lifecycle</h3>
+
+<p>
+  Going back to our example from Figure 1, the Assist API callbacks are invoked
+  in the <em>source</em> app after step 1 (user long-presses the Home button)
+  and before step 2 (the assistant renders the overlay window). Once the user
+  selects the action to perform (step 3), the assistant executes it, for
+  example by firing an intent with a deep link to the (<em>destination</em>)
+  restaurant app (step 4).
+</p>
+
+<h3 id="source_app">Source App</h3>
+
+<p>
+  In most cases, your app does not need to do anything extra to integrate with
+  the assistant if you already follow <a href=
+  "{@docRoot}guide/topics/ui/accessibility/apps.html">accessibility best
+  practices</a>. This section describes how to provide additional information
+  to help improve the assistant user experience, as well as scenarios, such as
+  custom Views, that need special handling.
+</p>
+
+<h4 id="share_additional_information_with_the_assistant">Share Additional Information with the Assistant</h4>
+
+<p>
+  In addition to the text and the screenshot, your app can share
+  <em>additional</em> information with the assistant. For example, your music
+  app can choose to pass current album information, so that the assistant can
+  suggest smarter actions tailored to the current activity.
+</p>
+
+<p>
+  To provide additional information to the assistant, your app provides
+  <em>global application context</em> by registering an app listener and
+  supplies activity-specific information with activity callbacks as shown in
+  Figure 3.
+</p>
+
+<div>
+  <img src="{@docRoot}images/training/assistant/image03.png">
+  <p class="img-caption" style="text-align:center;">
+    Figure 3. Assist API lifecycle sequence diagram.
+  </p>
+</div>
+
+<p>
+  To provide global application context, the app creates an implementation of
+  {@link android.app.Application.OnProvideAssistDataListener} and registers it
+  using {@link
+  android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener)}.
+  In order to provide activity-specific contextual information, activity
+  overrides {@link android.app.Activity#onProvideAssistData(android.os.Bundle)}
+  and {@link
+  android.app.Activity#onProvideAssistContent(android.app.assist.AssistContent)}.
+  The two activity methods are called <em>after</em> the optional global
+  callback (registered with {@link
+  android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener)})
+  is invoked. Since the callbacks execute on the main thread, they should
+  complete <a href="{@docRoot}training/articles/perf-anr.html">promptly</a>.
+  The callbacks are invoked only when the activity is <a href=
+  "{@docRoot}reference/android/app/Activity.html#ActivityLifecycle">running</a>.
+</p>
+
+<h5 id="providing_context">Providing Context</h5>
+
+<p>
+  {@link android.app.Activity#onProvideAssistData(android.os.Bundle)} is called
+  when the user is requesting the assistant to build a full {@link
+  android.content.Intent#ACTION_ASSIST} Intent with all of the context of the
+  current application represented as an instance of the {@link
+  android.app.assist.AssistStructure}. You can override this method to place
+  into the bundle anything you would like to appear in the
+  <code>EXTRA_ASSIST_CONTEXT</code> part of the assist Intent.
+</p>
+
+<h5 id="describing_content">Describing Content</h5>
+
+<p>
+  Your app can implement {@link
+  android.app.Activity#onProvideAssistContent(android.app.assist.AssistContent)}
+  to improve assistant user experience by providing references to content
+  related to the current activity. You can describe the app content using the
+  common vocabulary defined by <a href="https://schema.org">Schema.org</a>
+  through a JSON-LD object. In the example below, a music app provides
+  structured data to describe the music album the user is currently
+  looking at.
+</p>
+
+<pre class="prettyprint">
+&commat;Override
+public void onProvideAssistContent(AssistContent <strong>assistContent</strong>) {
+  super.onProvideAssistContent(<strong>assistContent</strong>);
+
+  String structuredJson = <strong>new </strong>JSONObject()
+       .put(<strong>"@type"</strong>, <strong>"MusicRecording"</strong>)
+       .put(<strong>"@id"</strong>, <strong>"https://example.com/music/recording"</strong>)
+       .put(<strong>"name"</strong>, <strong>"Album Title"</strong>)
+       .toString();
+
+  <strong>assistContent</strong>.setStructuredData(structuredJson);
+}
+</pre>
+
+<p>
+  Custom implementations of {@link
+  android.app.Activity#onProvideAssistContent(android.app.assist.AssistContent)}
+  may also adjust the provided {@link
+  android.app.assist.AssistContent#setIntent(android.content.Intent) content
+  intent} to better reflect the top-level context of the activity, supply
+  {@link android.app.assist.AssistContent#setWebUri(android.net.Uri) the URI}
+  of the displayed content, and fill in its {@link
+  android.app.assist.AssistContent#setClipData(android.content.ClipData)} with
+  additional content of interest that the user is currently viewing.
+</p>
+
+<h4 id="default_implementation">Default Implementation</h4>
+
+<p>
+  If neither {@link
+  android.app.Activity#onProvideAssistData(android.os.Bundle)} nor {@link
+  android.app.Activity#onProvideAssistContent(android.app.assist.AssistContent)}
+  callbacks are implemented, the system will still proceed and pass the
+  information collected automatically to the assistant unless the current
+  window is flagged as <a href="#excluding_views">secure</a>.
+  As shown in Figure 3, the system uses the default implementations of {@link
+  android.view.View#onProvideStructure(android.view.ViewStructure)} and {@link
+  android.view.View#onProvideVirtualStructure(android.view.ViewStructure)} to
+  collect text and view hierarchy information. If your view implements custom
+  text drawing, you should override {@link
+  android.view.View#onProvideStructure(android.view.ViewStructure)} to provide
+  the assistant with the text shown to the user by calling {@link
+  android.view.ViewStructure#setText(java.lang.CharSequence)}.
+</p>
+
+<p>
+  <strong>In most cases, implementing accessibility support will enable the
+  assistant to obtain the information it needs.</strong> This includes
+  providing {@link android.R.attr#contentDescription
+  android:contentDescription} attributes, populating {@link
+  android.view.accessibility.AccessibilityNodeInfo} for custom views, making
+  sure custom {@link android.view.ViewGroup ViewGroups} correctly {@link
+  android.view.ViewGroup#getChildAt(int) expose} their children, and following
+  the best practices described in <a href=
+  "{@docRoot}guide/topics/ui/accessibility/apps.html">“Making Applications
+  Accessible”</a>.
+</p>
+
+<h4 id="excluding_views">Excluding views from the assistant</h4>
+
+<p>
+  An activity can exclude the current view from the assistant. This is accomplished
+  by setting the {@link android.view.WindowManager.LayoutParams#FLAG_SECURE
+  FLAG_SECURE} layout parameter of the WindowManager and must be done
+  explicitly for every window created by the activity, including Dialogs. Your
+  app can also use {@link android.view.SurfaceView#setSecure(boolean)
+  SurfaceView.setSecure} to exclude a surface from the assistant. There is no
+  global (app-level) mechanism to exclude all views from the assistant. Note
+  that <code>FLAG_SECURE</code> does not cause the Assist API callbacks to stop
+  firing. The activity which uses <code>FLAG_SECURE</code> can still explicitly
+  provide information to the assistant using the callbacks described earlier
+  this guide.
+</p>
+
+<h4 id="voice_interactions">Voice Interactions</h4>
+
+<p>
+  Assist API callbacks are also invoked upon {@link
+  android.service.voice.AlwaysOnHotwordDetector keyphrase detection}. For more
+  information see the <a href="https://developers.google.com/voice-actions/">voice
+  actions</a> documentation.
+</p>
+
+<h4 id="z-order_considerations">Z-order considerations</h4>
+
+<p>
+  The assistant uses a lightweight overlay window displayed on top of the
+  current activity. The assistant can be summoned by the user at any time.
+  Therefore, apps should not create permanent {@link
+  android.Manifest.permission#SYSTEM_ALERT_WINDOW system alert}
+  windows interfering with the overlay window shown in Figure 4.
+</p>
+
+<div style="">
+  <img src="{@docRoot}images/training/assistant/image04.png">
+  <p class="img-caption" style="text-align:center;">
+    Figure 4. Assist layer Z-order.
+  </p>
+</div>
+
+<p>
+  If your app uses {@link
+  android.Manifest.permission#SYSTEM_ALERT_WINDOW system alert} windows, it
+  must promptly remove them as leaving them on the screen will degrade user
+  experience and annoy the users.
+</p>
+
+<h3 id="destination_app">Destination App</h3>
+
+<p>
+  The matching between the current user context and potential actions displayed
+  in the overlay window (shown in step 3 in Figure 1) is specific to the
+  assistant’s implementation. However, consider adding <a href=
+  "{@docRoot}training/app-indexing/deep-linking.html">deep linking</a> support
+  to your app. The assistant will typically take advantage of deep linking. For
+  example, Google Now uses deep linking and <a href=
+  "https://developers.google.com/app-indexing/">App Indexing</a> in order to
+  drive traffic to destination apps.
+</p>
+
+<h2 id="implementing_your_own_assistant">Implementing your own assistant </h2>
+
+<p>
+  Some developers may wish to implement their own assistant. As shown in Figure
+  2, the active assistant app can be selected by the Android user. The
+  assistant app must provide an implementation of {@link
+  android.service.voice.VoiceInteractionSessionService} and {@link
+  android.service.voice.VoiceInteractionSession} as shown in <a href=
+  "https://android.googlesource.com/platform/frameworks/base/+/android-5.0.1_r1/tests/VoiceInteraction?autodive=0%2F%2F%2F%2F%2F%2F">
+  this</a> example and it requires the {@link
+  android.Manifest.permission#BIND_VOICE_INTERACTION} permission. It can then
+  receive the text and view hierarchy represented as an instance of the {@link
+  android.app.assist.AssistStructure} in {@link
+  android.service.voice.VoiceInteractionSession#onHandleAssist(android.os.Bundle,
+  android.app.assist.AssistStructure,android.app.assist.AssistContent) onHandleAssist()}.
+  The assistant receives the screenshot through {@link
+  android.service.voice.VoiceInteractionSession#onHandleScreenshot(android.graphics.Bitmap)
+  onHandleScreenshot()}.
+</p>
diff --git a/docs/html/training/articles/keystore.jd b/docs/html/training/articles/keystore.jd
index 026f7a0..7d2470d 100644
--- a/docs/html/training/articles/keystore.jd
+++ b/docs/html/training/articles/keystore.jd
@@ -1,8 +1,8 @@
 page.title=Android Keystore System
 @jd:body
 
-<div id="qv-wrapper">
-  <div id="qv">
+<div id="tb-wrapper">
+<div id="tb">
     <h2>In this document</h2>
     <ol>
       <li><a href="#SecurityFeatures">Security Features</a></li>
@@ -444,7 +444,7 @@
       <td>
         <ul>
           <li>Supported sizes: 224, 256, 384, 521</li>
-          <li>Supported named curves: P-224 (secp256r1), P-256 (aka secp256r1 and prime256v1), P-384
+          <li>Supported named curves: P-224 (secp224r1), P-256 (aka secp256r1 and prime256v1), P-384
             (aka secp384r1), P-521 (aka secp521r1)</li>
         </ul>
 
diff --git a/docs/html/training/articles/perf-anr.jd b/docs/html/training/articles/perf-anr.jd
index b32cc4f..bbebec5 100644
--- a/docs/html/training/articles/perf-anr.jd
+++ b/docs/html/training/articles/perf-anr.jd
@@ -91,7 +91,7 @@
 resizing bitmaps should be done in a worker thread (or in the case of databases
 operations, via an asynchronous request).</p>
 
-<p>The most effecive way to create a worker thread for longer
+<p>The most effective way to create a worker thread for longer
 operations is with the {@link android.os.AsyncTask}
 class. Simply extend {@link android.os.AsyncTask} and implement the
 {@link android.os.AsyncTask#doInBackground doInBackground()} method to perform the work.
@@ -168,7 +168,7 @@
 <p class="note"><strong>Tip:</strong>
 You can use {@link android.os.StrictMode} to help find potentially
 long running operations such as network or database operations that
-you might accidentally be doing your main thread.</p>
+you might accidentally be doing on your main thread.</p>
 
 
 
diff --git a/docs/html/training/articles/security-ssl.jd b/docs/html/training/articles/security-ssl.jd
index 7f43d9c..c3a2d9e 100644
--- a/docs/html/training/articles/security-ssl.jd
+++ b/docs/html/training/articles/security-ssl.jd
@@ -376,9 +376,8 @@
 hostname to the server so the proper certificate can be returned.</p>
 
 <p>Fortunately, {@link javax.net.ssl.HttpsURLConnection} supports
-SNI since Android 2.3. Unfortunately, Apache
-HTTP Client does not, which is one of the many reasons we discourage its use. One workaround
-if you need to support Android 2.2 (and older) or Apache HTTP Client is to set up an alternative
+SNI since Android 2.3. One workaround
+if you need to support Android 2.2 (and older) is to set up an alternative
 virtual host on a unique port so that it's unambiguous which server certificate to return.</p>
 
 <p>The more drastic alternative is to replace {@link javax.net.ssl.HostnameVerifier}
diff --git a/docs/html/training/articles/user-data-ids.jd b/docs/html/training/articles/user-data-ids.jd
new file mode 100644
index 0000000..5a4648b
--- /dev/null
+++ b/docs/html/training/articles/user-data-ids.jd
@@ -0,0 +1,741 @@
+page.title=Best Practices for Unique Identifiers
+page.metaDescription=How to manage unique identifiers the right way for users.
+page.tags=ids, user data
+meta.tags="ids", "user data"
+page.image=images/cards/card-user-ids_2x.png
+
+page.article=true
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+    <h2>In this document</h2>
+    <ol>
+      <li><a href="#tenets_of_working_with_android_identifiers">Tenets of Working with
+      Android Identifiers</a></li>
+      <li><a href="#version_specific_details_identifiers_in_m">Identifiers in Android 6.0+</a></li>
+      <li><a href="#working_with_advertising_ids">Working with Advertising IDs</a></li>
+      <li><a href="#working_with_instance_ids_&_guids">Working with Instance IDs and GUIDs</a></li>
+      <li><a href="#understand_identifier_characteristics">Understanding Identifier
+      Characteristics</a>
+      <ol>
+        <li><a href="#scope">Scope</a></li>
+        <li><a href="#resettability_&_persistence">Resettability &amp; persistence</a></li>
+        <li><a href="#uniqueness">Uniqueness</h3>
+        <li><a href="#integrity_protection_and_non-repudiability">Integrity protection and
+        non-repudiability</a></li>
+      </ol>
+      </li>
+      <li><a href="#use_appropriate_identifiers">Common Use Cases and the Identifier to Use</a>
+      <ol>
+        <li><a href="#a_track_signed-out_user_preferences">Tracking signed-out user
+        preferences</a></li>
+        <li><a href="#b_track_signed-out_user_behavior">Tracking signed-out user behavior</a></li>
+        <li><a href="#c_generate_signed-out_anonymous_user_analytics">Generating
+        signed-out/anonymous user analytics</a></li>
+        <li><a href="#d_track_signed-out_user_conversion">Tracking signed-out user
+        conversion</a></li>
+        <li><a href="#e_handle_multiple_installations">Handling multiple installations</a></li>
+        <li><a href="#f_anti-fraud_enforcing_free_content_limits_detecting_sybil_attacks">Anti-fraud:
+        Enforcing free content limits / detecting Sybil attacks</a></li>
+        <li><a href="#g_manage_telephony_&_carrier_functionality">Managing telephony and carrier
+        functionality</a></li>
+        <li><a href="#h_abuse_detection_identifying_bots_and_ddos_attacks">Abuse detection:
+        Identifying bots and DDoS attacks</a></li>
+        <li><a href="#i_abuse_detection_detecting_high_value_stolen_credentials">Abuse detection:
+        Detecting high value stolen credentials</a></li>
+      </ol>
+      </li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  While there are valid reasons why your application may need to identify a
+  device rather than an instance of the application or an authenticated user on
+  the device, for the vast majority of applications, the ultimate goal is to
+  identify a particular <em>installation</em> of your app (not the actual
+  physical device).
+</p>
+
+<p>
+  Fortunately, identifying an installation on Android is straightforward using
+  an Instance ID or by creating your own GUID at install time. This document
+  provides guidance for selecting appropriate identifiers for your application,
+  based on your use-case.
+</p>
+
+<p>
+  For a general look at Android permissions, please see <a href=
+  "{@docRoot}training/articles/user-data-overview.html">Permissions
+  and User Data</a>. For specific best practices for
+  working with Android permissions, please see <a href=
+  "{@docRoot}training/articles/user-data-permissions.html">Best Practices for
+  App Permissions</a>.
+</p>
+
+
+<h2 id="tenets_of_working_with_android_identifiers">Tenets of Working with Android Identifiers</h2>
+
+<p>
+  We recommend that you follow these tenets when working with Android
+  identifiers:
+</p>
+
+<p>
+  <em><strong>#1: Avoid using hardware identifiers.</strong></em> Hardware
+  identifiers such as SSAID (Android ID) and IMEI can be avoided in most
+  use-cases without limiting required functionality.
+</p>
+
+<p>
+  <em><strong>#2: Only use Advertising ID for user profiling or ads
+  use-cases.</strong></em> When using an <a href=
+  "https://support.google.com/googleplay/android-developer/answer/6048248?hl=en">
+  Advertising ID</a>, always respect the <a href=
+  "https://play.google.com/about/developer-content-policy.html#ADID">Limit Ad
+  Tracking</a> flag, ensure the identifier cannot be connected to personally
+  identifiable information (PII) and avoid bridging Advertising ID resets.
+</p>
+
+<p>
+  <em><strong>#3: Use an Instance ID or a privately stored GUID whenever
+  possible for all other use-cases except payment fraud prevention and
+  telephony.</strong></em> For the vast majority of non-ads use-cases, an
+  instance ID or GUID should be sufficient.
+</p>
+
+<p>
+  <em><strong>#4: Use APIs that are appropriate to your use-case to minimize
+  privacy risk.</strong></em> Use the
+  <a href="http://source.android.com/devices/drm.html">DRM
+  API</a> API for high value content
+  protection and the <a href="{@docRoot}training/safetynet/index.html">SafetyNet
+  API</a> for abuse prevention. The Safetynet API is
+  the easiest way to determine whether a device is genuine without incurring
+  privacy risk.
+</p>
+
+<p>
+  The remaining sections of this guide elaborate on these rules in the context
+  of developing Android applications.
+</p>
+
+<h2 id="version_specific_details_identifiers_in_m">Identifiers in Android 6.0+</h2>
+
+<p>
+  MAC addresses are globally unique, not user-resettable and survive factory
+  reset. It is generally not recommended to use MAC address for any form of
+  user identification. As a result, as of Android M, local device MAC addresses
+  (for example, Wifi and Bluetooth) <em><strong>are not available via third party
+  APIs</strong></em>. The {@link android.net.wifi.WifiInfo#getMacAddress WifiInfo.getMacAddress()}
+  method and the {@link android.bluetooth.BluetoothAdapter#getAddress
+  BluetoothAdapter.getDefaultAdapter().getAddress()} method will
+  both return <code>02:00:00:00:00:00</code>..
+</p>
+
+<p>
+  Additionally, you must hold the following permissions to access MAC addresses
+  of nearby external devices available via Bluetooth and Wifi scans:
+</p>
+
+<table>
+ <tr>
+    <th><strong>Method/Property</strong></td>
+    <th><strong>Permissions Required</strong></td>
+ </tr>
+ <tr>
+    <td>
+      <code><a href="{@docRoot}reference/android/net/wifi/WifiManager.html#getScanResults()">WifiManager.getScanResults()</a></code>
+    </td>
+    <td>
+      <code>ACCESS_FINE_LOCATION</code> or <code>ACCESS_COARSE_LOCATION</code>
+    </td>
+ </tr>
+ <tr>
+    <td>
+      <code><a href="{@docRoot}reference/android/bluetooth/BluetoothDevice.html#ACTION_FOUND">BluetoothDevice.ACTION_FOUND</a></code>
+    </td>
+    <td>
+      <code>ACCESS_FINE_LOCATION</code> or <code>ACCESS_COARSE_LOCATION</code>
+    </td>
+ </tr>
+ <tr>
+    <td>
+      <code><a href="{@docRoot}reference/android/bluetooth/le/BluetoothLeScanner.html#startScan(android.bluetooth.le.ScanCallback)">BluetoothLeScanner.startScan(ScanCallback)</a></code>
+    </td>
+    <td>
+      <code>ACCESS_FINE_LOCATION</code> or <code>ACCESS_COARSE_LOCATION</code>
+    </td>
+ </tr>
+</table>
+
+
+<h2 id="working_with_advertising_ids">Working with Advertising IDs</h2>
+
+<p>
+  Advertising ID is a user-resettable identifier and is appropriate for Ads
+  use-cases, but there are some key points to bear in mind when using it:
+</p>
+
+<p>
+  <em><strong>Always respect the user’s intention in resetting the advertising
+  ID</strong></em>. Do not bridge user resets by using a more persistent device
+  identifier or fingerprint to link subsequent Advertising IDs together without
+  the user’s consent. The <a href=
+  "https://play.google.com/about/developer-content-policy.html">Google Play
+  Developer Content Policy</a> states:
+</p>
+
+<div style="padding:.5em 2em;">
+<div style="border-left:4px solid #999;padding:0 1em;font-style:italic;">
+<p>...upon reset, a new advertising
+  identifier must not be connected to a previous advertising identifier or data
+  derived from a previous advertising identifier without the explicit consent
+  of the user</span></p>
+</div>
+</div>
+
+<p>
+  <em><strong>Always respect the associated Interest Based Advertising
+  flag</strong></em>. Advertising IDs are configurable in that users can limit
+  the amount of tracking associated with the ID. Always use the <code><a href=
+  "https://developers.google.com/android/reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.Info.html#isLimitAdTrackingEnabled()">
+  AdvertisingIdClient.Info.isLimitAdTrackingEnabled()</a></code> method to
+  ensure you are not circumventing your users' wishes. The <a href=
+  "https://play.google.com/about/developer-content-policy.html">Google Play
+  Developer Content Policy</a> states:
+</p>
+
+
+<div style="padding:.5em 2em;">
+<div style="border-left:4px solid #999;padding:0 1em;font-style:italic;">
+<p>...you must abide by a user’s ‘opt out of
+  interest-based advertising’ setting. If a user has enabled this setting, you
+  may not use the advertising identifier for creating user profiles for
+  advertising purposes or for targeting users with interest-based advertising.
+  Allowed activities include contextual advertising, frequency capping,
+  conversion tracking, reporting and security and fraud detection.</span></p>
+</div>
+</div>
+
+<p>
+  <em><strong>Be aware of any privacy or security policies associated with SDKs
+  you use that are related to Advertising ID use.</strong></em> For example, if
+  you are using the Google Analytics SDK
+  <code><a href=
+  "https://developers.google.com/android/reference/com/google/android/gms/analytics/Tracker.html#enableAdvertisingIdCollection(boolean)">mTracker.enableAdvertisingIdCollection(true)</a></code>
+  method, make sure to review and adhere to all applicable <a href=
+  "https://developers.google.com/analytics/devguides/collection/android/v4/policy">
+  Analytics SDK policies</a>.
+</p>
+
+<p>
+  Also, be aware that the <a href=
+  "https://play.google.com/about/developer-content-policy.html">Google Play
+  Developer Content Policy</a> requires that the Advertising ID “must not be
+  connected to personally-identifiable information or associated with any
+  persistent device identifier (for example: SSAID, MAC address, IMEI, etc.,)
+  without the explicit consent of the user.”
+</p>
+
+<p>
+  As an example, suppose you want to collect information to populate database
+  tables with the following columns:
+</p>
+
+<table>
+ <tr>
+    <td>
+      <table>
+       <tr>
+          <td class="tab2">
+      <code>timestamp</code></td>
+          <td class="tab2">
+      <code>ad_id</code></td>
+          <td>
+      <code><strong>account_id</strong></code></td>
+          <td class="tab2">
+      <code>clickid</code></td>
+       </tr>
+      </table>
+
+      <p>TABLE-01</p>
+    </td>
+    <td>
+      <table>
+       <tr>
+          <td>
+      <code><strong>account_id</strong></code></td>
+          <td class="tab2">
+      <code>name</code></td>
+          <td class="tab2">
+      <code>dob</code></td>
+          <td class="tab2">
+      <code>country</code></td>
+       </tr>
+      </table>
+      <p>TABLE-02</p>
+    </td>
+ </tr>
+</table>
+
+
+<p>
+  In this example, the <code>ad_id</code> column could be joined to PII via the
+  <code>account_id</code> column in both tables, which would be a violation of
+  the <a href=
+  "https://play.google.com/about/developer-content-policy.html">Google Play
+  Developer Content Policy</a>.
+</p>
+
+<p>
+  Keep in mind that links between Advertiser ID and PII aren't always this
+  explicit. It's possible to have “quasi-identifiers” that appear in both PII
+  and Ad ID keyed tables, which also cause problems. For example, assume we
+  change TABLE-01 and TABLE-02 as follows:
+</p>
+
+<table>
+ <tr>
+    <td><table>
+ <tr>
+    <td>
+      <code><strong>timestamp</strong></code></td>
+          <td class="tab2">
+      <code>ad_id</code></td>
+          <td>
+      <code>clickid</code></td>
+          <td>
+      <code><strong>dev_model</strong></code></td>
+       </tr>
+      </table>
+
+      </pre>
+      <p>TABLE-01</p>
+    </td>
+    <td>
+      <table>
+       <tr>
+          <td>
+      <code><strong>timestamp</strong></code></td>
+          <td class="tab2">
+      <code>demo</code></td>
+          <td class="tab2">
+      <code>account_id</code></td>
+          <td>
+      <code><strong>dev_model</strong></code></td>
+          <td class="tab2">
+      <code>name</code></td>
+       </tr>
+      </table>
+      <p>TABLE-02</p>
+    </td>
+ </tr>
+</table>
+
+
+<p>
+  In this case, with sufficiently rare click events, it's still possible to
+  join between the Advertiser ID TABLE-01 and the PII contained in TABLE-2
+  using the timestamp of the event and the device model.
+</p>
+
+<p>
+  While it is often difficult to guarantee that no such quasi-identifiers exist
+  in a dataset, the most obvious join risks can be prevented by generalizing
+  unique data where possible. In the example, this would mean reducing the
+  accuracy of the timestamp so that multiple devices with the same model appear
+  for every timestamp.
+</p>
+
+<p>
+  Other solutions include:
+</p>
+
+<ul>
+<li><em><strong>Not designing tables that explicitly link PII with Advertising
+IDs</strong></em>. In the first example above this would mean not including the
+account_id column in TABLE-01.</li>
+
+<li><em><strong>Segregating and monitoring access control lists for users or roles
+that have access to both the Advertising ID keyed data and PII</strong></em>. If the
+ability to access both sources simultaneously (for example, to perform
+a join between two tables) is tightly controlled and audited, it reduces the
+risk of association between the Advertising ID and PII. Generally speaking,
+controlling access means:
+
+<ol>
+  <li> Keeping access control lists (ACLs) for Advertiser ID keyed data and PII disjoint to
+  minimize the number of individuals or roles that are in both ACLs, and</li>
+  <li> Implementing access logging and auditing to detect and manage any exceptions to
+  this rule.</li>
+</ol>
+</li>
+</ul>
+
+<p>
+  For more information on working responsibly with Advertising IDs, please see
+  the <a href=
+  "https://support.google.com/googleplay/android-developer/answer/6048248?hl=en">
+  Advertising ID</a> help center article.
+</p>
+
+<h2 id="working_with_instance_ids_&_guids">Working with Instance IDs and GUIDs</h2>
+
+<p>
+  The most straightforward solution to identifying an application instance
+  running on a device is to use an Instance ID, and this is the recommended
+  solution in the majority of non-ads use-cases. Only the app instance for
+  which it was provisioned can access this identifier, and it's (relatively)
+  easily resettable because it only persists as long as the app is installed.
+</p>
+
+<p>
+  As a result, Instance IDs provide better privacy properties compared to
+  non-resettable, device-scoped hardware IDs. They also come with a key-pair
+  for message signing (and similar actions) and are available on Android, iOS
+  and Chrome. Please see the <a href=
+  "https://developers.google.com/instance-id/">What is Instance ID?</a> help
+  center document for more information.
+</p>
+
+<p>
+  In cases where an Instance ID isn't practical, custom globally unique IDs
+  (GUIDs) can also be used to uniquely identify an app instance. The simplest
+  way to do so is by generating your own GUID using the following code.
+</p>
+
+<pre>String uniqueID = UUID.randomUUID().toString();</pre>
+
+<p>
+  Because the identifier is globally unique, it can be used to identify a
+  specific app instance. To avoid concerns related to linking the identifier
+  across applications, GUIDs should be stored in internal storage rather than
+  external (shared) storage. Please see <a href=
+  "{@docRoot}guide/topics/data/data-storage.html">Storage Options</a> guide for
+  more information.
+</p>
+
+
+<h2 id="understand_identifier_characteristics">Understanding Identifier Characteristics</h2>
+
+<p>
+  The Android Operating system offers a number of IDs with different behavior
+  characteristics and which ID you should use depends on how those following
+  characteristics work with your use-case. But these characteristics also come
+  with privacy implications so it's important to understand how these
+  characteristics play together.
+</p>
+
+<h3 id="scope">Scope</h3>
+
+<p>
+  Identifier scope explains which systems can access the identifier. Android
+  identifier scope generally comes in three flavors:
+</p>
+
+<ul>
+  <li> <em>Single app</em>.  the ID is internal to the app and not accessible to other apps.
+  <li> <em>Group of apps</em> - the ID is accessible to a pre-defined group of related apps.
+  <li> <em>Device</em> - the ID is accessible to all apps installed on the device.
+</ul>
+
+<p>
+  The wider the scope granted to an identifier, the greater the risk of it
+  being used for tracking purposes. Conversely, if an identifier can only be
+  accessed by a single app instance, it can’t be used to track a device across
+  transactions in different apps.
+</p>
+<h3 id="resettability_&_persistence">Resettability and persistence</h3>
+
+<p>
+  Resettability and persistence define the lifespan of the identifier and
+  explain how it can be reset. Common reset triggers are: in-app resets, resets
+  via System Settings, resets on launch, and resets on installation. Android
+  Identifiers can have varying lifespans, but the lifespan is usually related
+  to how the ID is reset:
+</p>
+<ul>
+  <li> <em>Session-only</em> - a new ID is used every time the user restarts the app.
+  <li> <em>Install-reset</em> - a new ID is used every time user uninstalls and reinstalls the app.
+  <li> <em>FDR-reset</em> - a new ID is used every time the user factory-resets the device.
+  <li> <em>FDR-persistent</em> - the ID survives factory reset.
+</ul>
+
+<p>
+  Resettability gives users the ability to create a new ID that is
+  disassociated from any existing profile information. This is important
+  because the longer, and more reliably, an identifier persists (e.g. across
+  factory resets etc.), the greater the risk that the user may be subjected to
+  long-term tracking. If the identifier is reset upon app reinstall, this
+  reduces the persistence and provides a means for the ID to be reset, even if
+  there is no explicit user control to reset it from within the app or the
+  System Settings.
+</p>
+<h3 id="uniqueness">Uniqueness</h3>
+
+<p>
+  Uniqueness establishes the likelihood that identical identifiers exist within
+  the associated scope. At the highest level, a globally unique identifier will
+  never have a collision - even on other devices/apps. Otherwise, the level of
+  uniqueness depends on the size of the identifier and the source of randomness
+  used to create it. For example, the chance of a collision is much higher for
+  random identifiers seeded with the calendar date of installation (e.g.,
+  2015-01-05) than for identifiers seeded with the Unix timestamp of
+  installation (e.g., 1445530977).
+</p>
+
+<p>
+  In general, user account identifiers can be considered unique (i.e., each
+  device/account combo has a unique ID). On the other hand, the less unique
+  an identifier is within a population (e.g. of devices), the greater the
+  privacy protection because it's less useful for tracking an individual user.
+</p>
+
+<h3 id="integrity_protection_and_non-repudiability">Integrity protection and
+non-repudiability</h3>
+
+<p>
+  An identifier that is difficult to spoof or replay can be used to prove that
+  the associated device or account has certain properties (e.g. it’s not a
+  virtual device used by a spammer). Difficult to spoof identifiers also
+  provide <em>non-repudiability</em>. If the device signs a message with a
+  secret key, it is difficult to claim someone else’s device sent the message.
+  Non-repudiability could be something a user wants (e.g. authenticating a
+  payment) or it could be an undesirable property (e.g. sending a message they
+  regret).
+</p>
+
+
+<h2 id="use_appropriate_identifiers">Common Use Cases and the Identifier to Use</h2>
+
+<p>
+  This section provides alternatives to using hardware IDs such as IMEI or
+  SSAID for the majority of use-cases. Relying on hardware IDs is discouraged
+  because the user cannot reset them and generally has limited control over
+  their collection.
+</p>
+
+<h3 id="a_track_signed-out_user_preferences">Tracking signed-out user preferences</h3>
+
+<p>
+  <em>In this case, you are saving per-device state on the server side.</em>
+</p>
+
+<p>
+  <strong>We Recommend</strong>: Instance ID or a GUID.
+</p>
+
+<p>
+  <strong>Why this Recommendation?</strong>
+</p>
+
+<p>
+  Persisting information through reinstalls is not recommended because users
+  may want to reset their preferences by reinstalling the app.
+</p>
+
+<h3 id="b_track_signed-out_user_behavior">Tracking signed-out user behavior</h3>
+
+<p>
+  <em>In this case, you have created a profile of a user based on their
+  behavior across different apps/sessions on the same device.</em>
+</p>
+
+<p>
+  <strong>We Recommend</strong>: Advertising ID.
+</p>
+
+<p>
+  <strong>Why this Recommendation?</strong>
+</p>
+
+<p>
+  Use of the Advertising ID is mandatory for Advertising use-cases per the
+  <a href="https://play.google.com/about/developer-content-policy.html">Google
+  Play Developer Content Policy</a> because the user can reset it.
+</p>
+
+<h3 id="c_generate_signed-out_anonymous_user_analytics">Generating signed-out/anonymous user analytics</h3>
+
+<p>
+  <em>In this case, you are measuring usage statistics and analytics for
+  signed-out or anonymous users.</em>
+</p>
+
+<p>
+  <strong>We Recommend</strong>: Instance ID; if an Instance ID is
+  insufficient, you can also use a GUID.
+</p>
+
+<p>
+  <strong>Why this Recommendation?</strong>
+</p>
+
+<p>
+  An Instance ID or a GUID is scoped to the app that creates it, which prevents
+  it from being used to track users across apps. It is also easily reset by
+  clearing app data or reinstalling the app. Creating Instance IDs and GUIDs is
+  straightforward:
+</p>
+
+<ul>
+  <li> Creating an Instance ID: <code>String iid = InstanceID.getInstance(context).getId()</code>
+  <li> Creating a GUID: <code>String uniqueID = UUID.randomUUID().toString</code>
+</ul>
+
+<p>
+  Be aware that if you have told the user that the data you are collecting is
+  anonymous, you should <em><strong>ensure you are not connecting the
+  identifier to PII</strong></em> or other identifiers that may be linked to
+  PII.
+</p>
+
+<p>
+  You can also use Google Analytics for Mobile Apps, which offers a solution
+  for per-app analytics.
+</p>
+
+<h3 id="d_track_signed-out_user_conversion">Tracking signed-out user conversion</h3>
+
+<p>
+  <em>In this case, you are tracking conversions to detect if your marketing
+  strategy was successful.</em>
+</p>
+
+<p>
+  <strong>We Recommend</strong>: Advertising ID.
+</p>
+
+<p>
+  <strong>Why this Recommendation?</strong>
+</p>
+
+<p>
+  This is an ads-related use-case which may require an ID that is available
+  across different apps so using an Advertising ID is the most appropriate
+  solution.
+</p>
+
+<h3 id="e_handle_multiple_installations">Handling multiple installations</h3>
+
+<p>
+  <em>In this case, you need to identify the correct instance of the app when
+  it's installed on multiple devices for the same user.</em>
+</p>
+
+<p>
+  <strong>We Recommend</strong>: Instance ID or GUID.
+</p>
+
+<p>
+  <strong>Why this Recommendation?</strong>
+</p>
+
+<p>
+  Instance ID is designed explicitly for this purpose; its scope is limited to
+  the app so that it cannot be used to track users across different apps and it
+  is reset upon app reinstall. In the rare cases where an Instance ID is
+  insufficient, you can also use a GUID.
+</p>
+
+<h3 id="f_anti-fraud_enforcing_free_content_limits_detecting_sybil_attacks">Anti-fraud: Enforcing free content limits / detecting Sybil attacks</h3>
+
+<p>
+  <em>In this case, you want to limit the number of free content (e.g.
+  articles) a user can see on a device.</em>
+</p>
+
+<p>
+  <strong>We Recommend</strong>: Instance ID or GUID.
+</p>
+
+<p>
+  <strong>Why this Recommendation?</strong>
+</p>
+
+<p>
+  Using a GUID or Instance ID forces the user to reinstall the app in order to
+  overcome the content limits, which is a sufficient burden to deter most
+  people. If this is not sufficient protection, Android provides a
+  <a href="http://source.android.com/devices/drm.html">DRM API</a>
+  which can be used to limit access to content.
+</p>
+
+<h3 id="g_manage_telephony_&_carrier_functionality">Managing telephony and carrier functionality</h3>
+
+<p>
+  <em>In this case, your app is interacting with the device's phone and texting
+  functionality.</em>
+</p>
+
+<p>
+  <strong>We Recommend</strong>: IMEI, IMSI, and Line1 (requires <code>PHONE</code>
+  permission group in Android 6.0 (API level 23) and higher).
+</p>
+
+<p>
+  <strong>Why this Recommendation?</strong>
+</p>
+
+<p>
+  Leveraging hardware identifiers is acceptable if it is required for
+  telephony/carrier related functionality; for example, switching between
+  cellular carriers/SIM slots or delivering SMS messages over IP (for Line1) -
+  SIM-based user accounts. But it's important to note that in Android 6.0+
+  these identifiers can only be used via a runtime permission and that users
+  may toggle off this permission so your app should handle these exceptions
+  gracefully.
+</p>
+
+<h3 id="h_abuse_detection_identifying_bots_and_ddos_attacks">Abuse detection:
+Identifying bots and DDoS attacks</h3>
+
+<p>
+  <em>In this case, you are trying to detect multiple fake devices attacking
+  your backend services.</em>
+</p>
+
+<p>
+  <strong>We Recommend:</strong> The Safetynet API.
+</p>
+
+<p>
+  <strong>Why this Recommendation?</strong>
+</p>
+
+<p>
+  An identifier in isolation does little to indicate that a device is genuine.
+  You can verify that a request comes from a genuine Android device (as opposed
+  to an emulator or other code spoofing another device) using the Safetynet
+  API's <code>SafetyNet.SafetyNetApi.attest(mGoogleApiClient, nonce)</code>
+  method to verify the integrity of a device making a request. For more
+  detailed information, please see <a href=
+  "{@docRoot}training/safetynet/index.html">Safetynet's API documentation</a>.
+</p>
+
+<h3 id="i_abuse_detection_detecting_high_value_stolen_credentials">Abuse detection:
+Detecting high value stolen credentials</h3>
+
+<p>
+  <em>In this case, you are trying to detect if a single device is being used
+  multiple times with high-value, stolen credentials (e.g. to make fraudulent
+  payments).</em>
+</p>
+
+<p>
+  <strong>We Recommend</strong>: IMEI/IMSI (requires <code>PHONE</code>
+  permission group in Android 6.0 (API level 23) and higher.)
+</p>
+
+<p>
+  <strong>Why this Recommendation?</strong>
+</p>
+
+<p>
+  With stolen credentials, devices can be used to monetize multiple high value
+  stolen credentials (such as tokenized credit cards). In these scenarios,
+  software IDs can be reset to avoid detection, so hardware identifiers may be
+  used.
+</p>
\ No newline at end of file
diff --git a/docs/html/training/articles/user-data-overview.jd b/docs/html/training/articles/user-data-overview.jd
new file mode 100644
index 0000000..8715d36
--- /dev/null
+++ b/docs/html/training/articles/user-data-overview.jd
@@ -0,0 +1,269 @@
+page.title=Permissions and User Data
+page.metaDescription=An overview of permissions on Android and how to manage them.
+page.tags="user data","permissions","identifiers"
+page.image=images/cards/card-user_2x.png
+
+page.article=true
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+    <h2>In this document</h2>
+    <ol>
+      <li><a href="#introduction">Introduction</a></li>
+      <li><a href="#permission_groups">Permission Groups</a></li>
+      <li><a href="#permission_requests_and_app_downloads">Permission
+      Requests and App Downloads</a></li>
+      <li><a href="#permission_requests_trend_downward">Permission Requests
+      Trend Downward</a></li>
+    </ol>
+    <h2>You should also read</h2>
+    <ol>
+      <li><a href="{@docRoot}guide/topics/security/permissions.html">System Permissions</a></li>
+      <li><a href="{@docRoot}training/permissions/index.html">Working with System
+      Permissions</a></li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  Permissions protect sensitive information available from a device and should
+  only be used when access to information is necessary for the functioning of
+  your app.
+</p>
+
+<p>
+  This document provides a high-level overview on how permissions work in
+  Android so you can make better, more informed decisions about the permissions
+  you're requesting. The information in this document is not use-case specific
+  and avoids complex, low-level discussions of the underlying code.
+</p>
+
+<p>
+  For specific recommendations on how to manage permissions, please see
+  <a href="{@docRoot}training/articles/user-data-permissions.html">Best
+  Practices for App Permissions</a>. For best practices on using unique
+  identifiers on Android, please see <a href=
+  "{@docRoot}training/articles/user-data-ids.html">Best Practices for Unique
+  Identifiers</a>. For details on how to work with permissions in your code,
+  see <a href="{@docRoot}training/permissions/index.html">Working with System
+  Permissions</a>.
+</p>
+
+
+<h2 id="introduction">Introduction</h2>
+
+<p>
+  Every Android application must have a <em>manifest file</em> that presents
+  essential information about the app to the Android system. The Android system
+  also requires apps to request permission when they want to access sensitive
+  device or user information, and these requests must be documented in advance
+  as a part of your app's manifest. Moreover, accessing sensitive information
+  can affect user behavior, so it's important to make sure you are only making
+  permission requests when that information is necessary for the functioning of
+  your app.
+</p>
+
+
+<h2 id="permission_groups">Permission Groups</h2>
+
+<p>
+  Permissions in Android are organized into <code><a href=
+  "{@docRoot}guide/topics/security/permissions.html#perm-groups">permission
+  groups</a></code> that organize, and group, permissions related to a device's
+  capabilities or features. Under this system, permission requests are handled
+  at the group level and a <em><strong>single permission group</strong></em>
+  corresponds to <em><strong>several permission declarations</strong></em> in
+  the app manifest; for example, the SMS group includes both the
+  <code>READ_SMS</code> and the <code>RECEIVE_SMS</code> declarations.
+</p>
+
+
+<div class="wrap">
+   <img src="{@docRoot}images/training/articles/user-data-overview-permissions-flow01.jpg">
+</div>
+
+<p>
+  This arrangement is simpler and more informative for users; once an app is
+  granted permission to access the group, it can use API calls within that
+  group and users with auto-update enabled will not be asked for additional
+  permissions because they have already granted access to the group. Grouping
+  permissions in this way enables the user to make more meaningful and informed
+  choices, without being overwhelmed by complex and technical permission
+  requests.
+</p>
+
+<p>
+  This also means that when you request access to a particular API call or
+  query a content provider behind a permission, the user will be presented with
+  a request to grant permission for the whole group rather than the specific
+  API call. For example, if you request the <code>WRITE_CALL_LOG</code>
+  permission, the user will be asked to grant access to the <em>PHONE</em>
+  group (in API level 23 and higher), which is composed of the
+  <code>READ_PHONE_STATE</code>, <code>CALL_PHONE</code>,
+   <code>READ_CALL_LOG</code>, <code>WRITE_CALL_LOG</code>,
+  <code>ADD_VOICEMAIL</code>,  <code>USE_SIP</code>, and
+  <code>PROCESS_OUTGOING_CALLS</code> permissions, and
+  all their associated methods.
+</p>
+
+<div class="wrap">
+   <img src="{@docRoot}images/training/articles/user-data-overview-permissions-flow02.png">
+</div>
+
+<p>
+  One consequence of grouping permissions is that a single API call within your
+  app can have a multiplying effect in terms of the number of permissions
+  requested by your app.
+</p>
+
+<ol>
+<li>API Call →</li>
+<li stydle="margin-left:.5em;">Triggers a specific <em>Permission Group</em> access
+request →</li>
+<li stydle="margin-left:1em;">Successful request grants access to all permissions in
+group (if auto-update
+enabled) →</li>
+<li stydle="margin-left:1.5em;">Each permission grants access to all APIs under that
+permission</li>
+</ol>
+
+<p>
+  As another example, let's assume your application uses one or more <a href=
+  "{@docRoot}reference/android/telephony/TelephonyManager.html"><code>TelephonyManager</code></a>
+  methods, such as:
+</p>
+
+<pre class="prettyprint">
+TelephonyManager.getDeviceId()
+TelephonyManager.getSubscriberId()
+TelephonyManager.getSimSerialNumber()
+TelephonyManager.getLine1Number()
+TelephonyManager.getVoiceMailNumber()
+</pre>
+
+<p>
+  To use these methods, the <code>READ_PHONE_STATE</code> permission must be
+  declared in the app's manifest, and the associated permission group,
+  <em>PHONE</em>, will be surfaced to the user. This
+  is important, because it means the user will be asked to grant permission for
+  the relevant group and all its associated permissions and API calls, rather
+  than for the specific API call you're requesting.
+</p>
+
+<p>For a full mapping between permissions and their associated permission groups,
+please refer to the appropriate version-specific documentation below:</p>
+
+<ul>
+  <!--<li> <a href="">pre-M Android OS versions</a>.</li> -->
+  <li> <a href="{@docRoot}guide/topics/security/permissions.html#perm-groups">Permission
+  groups, Android 6.0 Marshmallow (API level 23) and later</a>.</li>
+</ul>
+
+
+<h2 id="permission_requests_and_app_downloads">Permission Requests and App Downloads</h2>
+
+<div style="padding:.5em 2em;">
+<div style="border-left:4px solid #999;padding:0 1em;font-style:italic;">
+<p><em>I'm currently using the READ_PHONE_STATE permission in Android to pause my
+media player when there's a call, and to resume playback when the call is over.
+The permission seems to scare a lot of people</em>...<span
+style="font-size:.8em;color:#777"><sup><em><a
+href="#references" style="color:#777;padding-left:.1em;">1</a></em></sup></span></p>
+</div>
+</div>
+
+<p>
+  Research shows that among apps that are otherwise identical (e.g.,
+  functionality, brand recognition), requesting fewer permissions leads to more
+  downloads. Publicly available sources exist that assign grades to apps based
+  on their permissions usage and allow users to compare related apps by score;
+  such grades exist for many of the current Android apps and users pay close
+  attention to the related rankings.
+</p>
+
+<p>
+  One study<span style="font-size:.8em;color:#777"><sup><em><a href=
+  "#references" style=
+  "color:#777;padding-left:.1em;">2</a></em></sup></span>, in which users
+  were shown two unbranded apps with similar ratings that had the same
+  functionality but different sets of permission requests, showed that users
+  were, on average, 3 times more likely to install the app with fewer
+  permissions requests. And a similar study <span style=
+  "font-size:.8em;color:#777"><sup><em><a href="#references" style=
+  "color:#777;padding-left:.1em;">3</a></em></sup></span> showed that users are 1.7
+  times more likely, on average, to select the application with fewer
+  permission requests.
+</p>
+
+<p>
+  Finally, permissions usage is not evenly distributed across apps within
+  a similar category of Play apps. For example, 39.3% of arcade game apps in
+  the Play store request no permissions that are surfaced to the user while
+  only 1.5% of arcade games request the Phone permission group (see Figure
+  1).
+</p>
+
+<div class="wrap">
+  <div class="cols">
+    <div class="col-16of16">
+   <img src="{@docRoot}images/training/articles/user-data-overview-permissions-groups.png">
+    <p class="figure-caption"><strong>Figure 1.</strong> Distribution of
+    permission groups use across Arcade Games category.</p>
+    </div>
+  </div>
+</div>
+
+<p>
+  Users comparing your app to other similar apps may determine that it is
+  making unusual permission requests for that category - in this case, Arcade
+  Games apps accessing the <em>Phone</em> permission group. As a result, they
+  may install a similar app in that category that avoids those
+  requests.<span style="font-size:.8em;color:#777"><sup><em><a href=
+  "#references" style="color:#777;padding-left:.1em;">4</a></em></sup></span>
+</p>
+
+
+<h2 id="permission_requests_trend_downward">Permission Requests Trend Downward</h2>
+
+<p>
+  A recent analysis of Play store apps over time indicated that many developers
+  trim permissions after first publishing their apps, suggesting that they may
+  be employing more caution around which permission groups they declare.
+</p>
+
+<div class="wrap">
+  <div class="cols">
+    <div class="col-16of16">
+   <img src="{@docRoot}images/training/articles/user-data-overview-permissions-usage.jpg">
+    <p class="figure-caption"><strong>Figure 2.</strong> Developer usage of popular
+    permissions has decreased over time.</p>
+    </div>
+  </div>
+</div>
+
+<p>
+  The graph in <em>Figure 2</em> illustrates this trend. There has been a
+  steady decrease in the average percentage of developers' apps requesting at
+  least one of the three most popular permissions in the Play store
+  (<code>READ_PHONE_STATE</code>, <code>ACCESS_FINE_LOCATION</code>, and
+  <code>ACCESS_COARSE_LOCATION</code>). These results indicate that developers
+  are reducing the permissions their apps request in response to user behavior.
+</p>
+
+<p>
+  The bottom line is that providing the same functionality to the user with
+  minimal access to sensitive information means more downloads for your app.
+  For specific recommendations on how to achieve this, please see <a href=
+  "{@docRoot}training/articles/user-data-permissions.html">Best Practices for
+  Application Permissions</a>.
+</p>
+
+
+<h2 id="references">References</h2>
+
+<p>[1] Developer quote on StackOverflow. <em>(<a
+    href="http://stackoverflow.com/questions/24374701/alternative-to-read-phone-state-permission-for-getting-notified-of-call">source</a>)</em></p>
+<p>[2] <em>Using Personal Examples to Improve Risk Communication for Security and Privacy Decisions</em>, by M. Harbach, M. Hettig, S. Weber, and M. Smith. In Proceedings of ACM CHI 2014.</p>
+<p>[3] <em>Modeling Users’ Mobile App Privacy Preferences: Restoring Usability in a Sea of Permission Settings</em>, by J. Lin B. Liu, N. Sadeh and J. Hong. In Proceedings of SOUPS 2014.</p>
+<p>[4] <em>Teens and Mobile Apps Privacy. (<a href="http://www.pewinternet.org/files/old-media/Files/Reports/2013/PIP_Teens%20and%20Mobile%20Apps%20Privacy.pdf">source</a>)</em></p> 
diff --git a/docs/html/training/articles/user-data-permissions.jd b/docs/html/training/articles/user-data-permissions.jd
new file mode 100644
index 0000000..edc7558
--- /dev/null
+++ b/docs/html/training/articles/user-data-permissions.jd
@@ -0,0 +1,381 @@
+page.title=Best Practices for App Permissions
+page.metaDescription=How to manage permissions to give users context and control.
+page.tags=permissions, user data
+meta.tags="permissions", "user data"
+page.image=images/cards/card-user-permissions_2x.png
+
+page.article=true
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+    <h2>In this document</h2>
+    <ol>
+      <li><a href="#tenets_of_working_with_android_permissions">Tenets</a></li>
+      <li><a href="#version_specific_details_permissions_in_m">Permissions in Android
+      6.0+</h2></a></li>
+      <li><a href="#avoid_requesting_unnecessary_permissions">Avoid Requesting
+Unnecessary Permissions</h2></a>
+      <ol>
+        <li><a href="#a_camera_contact_access_with_real-time_user_requests">Camera/Contact
+        access with realtime user requests</a></li>
+        <li><a href="#b_running_in_the_background_after_losing_audio_focus">Running in
+the background after losing audio focus</a></li>
+        <li><a href="#c_determine_the_device_your_instance_is_running_on">Determine the
+device your instance is running on</a></li>
+        <li><a href="#d_create_a_unique_identifier_for_advertising_or_user_analytics">
+Create a unique identifier for advertising or user analytics</a></li>
+      </ol>
+      </li>
+      <li><a href="#know_the_libraries_you're_working_with">Know the Libraries You're
+Working With</a></li>
+      <li><a href="#be_transparent">Be Transparent</a></li>
+    </ol>
+    <h2>You should also read</h2>
+    <ol>
+      <li><a href="{@docRoot}guide/topics/security/permissions.html">System Permissions</a></li>
+      <li><a href="{@docRoot}training/permissions/index.html">Working with System
+      Permissions</a></li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  Permission requests protect sensitive information available from a device and
+  should only be used when access to information is necessary for the
+  functioning of your app. This document provides tips on ways you might be
+  able to achieve the same (or better) functionality without requiring access
+  to such information; it is not an exhaustive discussion of how permissions
+  work in the Android operating system.
+</p>
+
+<p>
+  For a more general look at Android permissions, please see <a href=
+  "{@docRoot}training/articles/user-data-overview.html">Permissions
+  and User Data</a>. For details on how to work with permissions in your code,
+  see <a href="{@docRoot}training/permissions/index.html">Working with System Permissions</a>.
+  For best practices for working with unique identifiers, please see <a href=
+  "{@docRoot}training/articles/user-data-ids.html">Best Practices for
+  Unique Identifiers</a>. 
+</p>
+
+<h2 id="tenets_of_working_with_android_permissions">Tenets of Working
+with Android Permissions</h2>
+
+<p>
+  We recommend following these tenets when working with Android permissions:
+</p>
+
+<p>
+  <em><strong>#1: Only use the permissions necessary for your app to
+  work</strong></em>. Depending on how you are using the permissions, there may
+  be another way to do what you need (system intents, identifiers,
+  backgrounding for phone calls) without relying on access to sensitive
+  information.
+</p>
+
+<p>
+  <em><strong>#2: Pay attention to permissions required by
+  libraries.</strong></em> When you include a library, you also inherit its
+  permission requirements. You should be aware of what you're including, the
+  permissions they require, and what those permissions are used for.
+</p>
+
+<p>
+  <em><strong>#3: Be transparent.</strong></em> When you make a permissions
+  request, be clear about what you’re accessing, and why, so users can make
+  informed decisions. Make this information available alongside the permission
+  request including install, runtime, or update permission dialogues.
+</p>
+
+<p>
+  <em><strong>#4: Make system accesses explicit.</strong></em> Providing
+  continuous indications when you access sensitive capabilities (for example, the
+  camera or microphone) makes it clear to users when you’re collecting data and
+  avoids the perception that you're collecting data surreptitiously.
+</p>
+
+<p>
+  The remaining sections of this guide elaborate on these rules in the context
+  of developing Android applications.
+</p>
+
+<h2 id="version_specific_details_permissions_in_m">Permissions in Android 6.0+</h2>
+
+<p>
+  Android 6.0 Marshmallow introduced a <a href=
+  "{@docRoot}training/permissions/requesting.html">new permissions model</a> that
+  lets apps request permissions from the user at runtime, rather than prior to
+  installation. Apps that support the new model request permissions when the app
+  actually requires the services or data protected by the services. While this
+  doesn't (necessarily) change overall app behavior, it does create a few
+  changes relevant to the way sensitive user data is handled:
+</p>
+
+<p>
+  <em><strong>Increased situational context</strong></em>: Users are
+  prompted at runtime, in the context of your app, for permission to access the
+  functionality covered by those permission groups. Users are more sensitive to
+  the context in which the permission is requested, and if there’s a mismatch
+  between what you are requesting and the purpose of your app, it's even
+  more important to provide detailed explanation to the user as to why you’re
+  requesting the permission; whenever possible, you should provide an
+  explanation of your request both at the time of the request and in a
+  follow-up dialog if the user denies the request.
+</p>
+
+<p>
+  <em><strong>Greater flexibility in granting permissions</strong></em>: Users
+  can deny access to individual permissions at the time they’re requested
+  <em>and</em> in settings, but they may still be surprised when functionality is
+  broken as a result. It’s a good idea to monitor how many users are denying
+  permissions (e.g. using Google Analytics) so that you can either refactor
+  your app to avoid depending on that permission or provide a better
+  explanation of why you need the permission for your app to work properly. You
+  should also make sure that your app handles exceptions created when users
+  deny permission requests or toggle off permissions in settings.
+</p>
+
+<p>
+  <em><strong>Increased transactional burden</strong></em>: Users will be asked
+  to grant access for permission groups individually and not as a set. This
+  makes it extremely important to minimize the number of permissions you’re
+  requesting because it increases the user burden for granting permissions and
+  increases the probability that at least one of the requests will be denied.
+</p>
+
+<h2 id="avoid_requesting_unnecessary_permissions">Avoid Requesting
+Unnecessary Permissions</h2>
+
+<p>
+  This section provides alternatives to common use-cases that will help you
+  limit the number of permission requests you make. Since the number and type
+  of user-surfaced permissions requested affects downloads compared to other
+  similar apps requesting fewer permissions, it’s best to avoid requesting
+  permissions for unnecessary functionality.
+</p>
+
+<h3 id="a_camera_contact_access_with_real-time_user_requests">Camera/contact
+access with realtime user requests</h3>
+
+<p>
+  <em>In this case, you need occasional access to the device's camera or
+  contact information and don’t mind the user being asked every time you need
+  access.</em>
+</p>
+
+<p>
+  If your requirement for access to user data is infrequent &mdash; in other
+  words, it's not unacceptably disruptive for the user to be presented with a
+  runtime dialogue each time you need to access data &mdash; you can use an
+  <em>intent based request</em>. Android provides some system intents that
+  applications can use without requiring permissions because the user chooses
+  what, if anything, to share with the app at the time the intent based request
+  is issued.
+</p>
+
+<p>
+  For example, an intent action type of <code><a href=
+  "{@docRoot}reference/android/provider/MediaStore.html#ACTION_IMAGE_CAPTURE">MediaStore.ACTION_IMAGE_CAPTURE</a></code>
+  or <code><a href=
+  "{@docRoot}reference/android/provider/MediaStore.html#ACTION_VIDEO_CAPTURE">MediaStore.ACTION_VIDEO_CAPTURE</a></code>
+  can be used to capture images or videos without directly using the <a href=
+  "{@docRoot}reference/android/hardware/Camera.html">Camera</a> object (or
+  requiring the permission). In this case, the system intent will ask for the
+  user’s permission on your behalf every time an image is captured.
+</p>
+
+<h3 id="b_running_in_the_background_after_losing_audio_focus">Running in
+the background after losing audio focus</h3>
+
+<p>
+  <em>In this case, your application needs to go into the background when the
+  user gets a phone call and refocus only once the call stops.</em>
+</p>
+
+<p>
+  The common approach in these cases - for example, a media player muting or
+  pausing during a phone call - is to listen for changes in the call state
+  using <code>PhoneStateListener</code> or listening for the broadcast of
+  <code>android.intent.action.PHONE_STATE</code>. The problem with this
+  solution is that it requires the <code>READ_PHONE_STATE</code> permission,
+  which forces the user to grant access to a wide cross section of sensitive
+  data such as their device and SIM hardware IDs and the phone number of the
+  incoming call.
+</p>
+
+<p>
+  You can avoid this by requesting <code>AudioFocus</code> for your app, which
+  doesn't require explicit permissions (because it does not access sensitive
+  information). Simply put the code required to background your audio in the
+  <code><a href=
+  "{@docRoot}reference/android/media/AudioManager.OnAudioFocusChangeListener.html#onAudioFocusChange(int)">
+  onAudioFocusChange()</a></code> event handler and it will run automatically
+  when the OS shifts its audio focus. More detailed documentation on how to do
+  this can be found <a href=
+  "{@docRoot}training/managing-audio/audio-focus.html">here</a>.
+</p>
+
+<h3 id="c_determine_the_device_your_instance_is_running_on">Determine the
+device your instance is running on</h3>
+
+<p>
+  <em>In this case, you need a unique identifier to determine which device the
+  instance of your app is running on.</em>
+</p>
+
+<p>
+  Applications may have device-specific preferences or messaging (e.g., saving
+  a device-specific playlist for a user in the cloud so that they can have a
+  different playlist for their car and at home). A common solution is to
+  leverage device identifiers such as <code>Device IMEI</code>, but this
+  requires the <code>Device ID and call information</code>
+  permission group (<code>PHONE</code> in M+). It also uses an identifier which
+  cannot be reset and is shared across all apps.
+</p>
+
+<p>
+  There are two alternatives to using these types of identifiers:
+</p>
+
+<ol>
+  <li> Use the <code>com.google.android.gms.iid</code> InstanceID API.
+  <code>getInstance(Context context).getID()<strong></code> </strong>will return a
+  unique device identifier for your application instance. The
+result is an app instance scoped identifier that can be used as a key when
+storing information about the app and is reset if the user re-installs the app.
+  <li> Create your own identifier that’s scoped to your app’s storage using basic
+  system functions like <a
+  href="{@docRoot}reference/java/util/UUID.html#randomUUID()"><code>randomUUID()</code></a>.</li>
+</ol>
+
+<h3 id="d_create_a_unique_identifier_for_advertising_or_user_analytics">Create a unique
+identifier for advertising or user analytics</h3>
+
+<p>
+  <em>In this case, you need a unique identifier for building a profile for
+  users who are not signed in to your app (e.g., for ads targeting or measuring
+  conversions).</em>
+</p>
+
+<p>
+  Building a profile for advertising and user analytics sometimes requires an
+  identifier that is shared across other applications. Common solutions for
+  this involve leveraging device identifiers such as <code>Device IMEI</code>,
+  which requires the <code>Device ID</code> <code>and call information</code>
+  permission group (<code>PHONE</code> in API level 23+) and cannot be reset by
+  the user. In any of these cases, in addition to using a non-resettable
+  identifier and requesting a permission that might seem unusual to users, you
+  will also be in violation of the <a href=
+  "https://play.google.com/about/developer-content-policy.html">Play Developer
+  Program Policies</a>.
+</p>
+
+<p>
+  Unfortunately, in these cases using the
+  <code>com.google.android.gms.iid</code> InstanceID API or system functions to
+  create an app-scoped ID are not appropriate solutions because the ID may need
+  to be shared across apps. An alternative solution is to use the
+  <code>Advertising Identifier</code> available from the <code><a href=
+  "{@docRoot}reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.Info.html">
+  AdvertisingIdClient.Info</a></code> class via the <code>getId()</code>
+  method. You can create an <code>AdvertisingIdClient.Info</code> object using
+  the <code>getAdvertisingIdInfo(Context)</code> method and call the
+  <code>getId()</code> method to use the identifier. <em><strong>Note that this
+  method is blocking</strong></em>, so you should not call it from the main
+  thread; a detailed explanation of this method is available <a href=
+  "{@docRoot}google/play-services/id.html">here</a>.
+</p>
+
+<h2 id="know_the_libraries_you're_working_with">Know the Libraries You're
+Working With</h2>
+
+<p>
+  Sometimes permissions are required by the libraries you use in your app. For
+  example, ads and analytics libraries may require access to the
+  <code>Location</code> or <code>Identity</code> permissions groups to
+  implement the required functionality. But from the user’s point of view, the
+  permission request comes from your app, not the library.
+</p>
+
+<p>
+  Just as users select apps that use fewer permissions for the same
+  functionality, developers should review their libraries and select
+  third-party SDKs that are not using unnecessary permissions. For example, try
+  to avoid libraries that require the <code>Identity</code> permission group
+  unless there is a clear user-facing reason why the app needs those permissions.
+  In particular, for libraries that provide location functionality, make sure you
+  are not required to request the <code>FINE_LOCATION</code> permission unless
+  you are using location-based targeting functionality.
+</p>
+
+<h2 id="be_transparent">Be Transparent</h2>
+
+<p>You should inform your users about what you’re accessing and why. Research shows
+that users are much less uncomfortable with permissions requests if they know
+why the app needs them. A user study showed that:</p>
+
+<div style="padding:.5em 2em;">
+<div style="border-left:4px solid #999;padding:0 1em;font-style:italic;">
+<p>...a user’s willingness to grant a given permission to a given mobile app is
+strongly influenced by the purpose associated with such a permission. For
+instance a user’s willingness to grant access to his or her location will vary
+based on whether the request is required to support the app’s core
+functionality or whether it is to share this information with an advertising
+network or an analytics company.<span
+style="font-size:.8em;color:#777"><sup><em><a
+  href="#references" style="color:#777;padding-left:.1em;">1</a></em></sup></span></p>
+</div>
+</div>
+
+<p>
+  Based on his group’s research, Professor Jason Hong from CMU concluded that,
+  in general:
+</p>
+
+<div style="padding:.5em 2em;">
+<div style="border-left:4px solid #999;padding:0 1em;font-style:italic;">
+<p>...when people know why an app is using something as sensitive as their location &mdash;
+for example, for targeted advertising &mdash; it makes them more comfortable than
+when simply told an app is using their location.<span
+style="font-size:.8em;color:#777"><sup><em><a
+  href="#references" style="color:#777;padding-left:.1em;">1</a></em></sup></span></p>
+</div>
+</div>
+
+<p>
+  As a result, if you’re only using a fraction of the API calls that fall under
+  a permission group, it helps to explicitly list which of those permissions
+  you're using, and why. For example:
+</p>
+
+<ul>
+  <li> If you’re only using coarse location, let the user know this in your app
+  description or in help articles about your app. </li>
+  <li> If you need access to SMS messages to receive authentication codes that
+  protect the user from fraud, let the user know this in your app description
+  and/or the first time you access the data.</li>
+</ul>
+
+<p>
+  Under certain conditions, it's also advantageous to let users know about
+  sensitive data accesses in real-time. For example, if you’re accessing the
+  camera or microphone, it’s usually a good idea to let the user know with a
+  notification icon somewhere in your app, or in the notification tray (if the
+  application is running in the background), so it doesn't seem like you're
+  collecting data surreptitiously.
+</p>
+
+<p>
+  Ultimately, if you need to request a permission to make something in your app
+  work, but the reason is not clear to the user, find a way to let the user
+  know why you need the most sensitive permissions.
+</p>
+
+<h2 id="references">References</h2>
+
+<p>
+  [1] <em>Modeling Users’ Mobile App Privacy Preferences: Restoring Usability
+  in a Sea of Permission Settings</em>, by J. Lin B. Liu, N. Sadeh and J. Hong.
+  In Proceedings of SOUPS 2014.
+</p>
diff --git a/docs/html/training/articles/wear-permissions.jd b/docs/html/training/articles/wear-permissions.jd
new file mode 100644
index 0000000..5f226e4
--- /dev/null
+++ b/docs/html/training/articles/wear-permissions.jd
@@ -0,0 +1,323 @@
+page.title=Requesting Permissions on Android Wear
+page.tags="Permissions"
+
+page.article=true
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>In this document</h2>
+<ol class="nolist">
+  <li><a href="#scenarios">Permission Scenarios</a></li>
+  <li><a href="#requesting">Requesting Permissions</a></li>
+  <li><a href="#services">Permissions for Services</a></li>
+  <li><a href="#settings">Settings</a></li>
+</ol>
+<!-- Required platform, tools, add-ons, devices, knowledge, etc. -->
+<h2>Dependencies and prerequisites</h2>
+<ul>
+  <li><a href="{@docRoot}about/versions/marshmallow/index.html">Android 6.0</a>
+  (API Level 23) or higher on the wearable and accompanying device</li>
+  <li><a href="{@docRoot}google/play-services/index.html">Google Play
+services</a> 8.3 or higher</li>
+  <li>An <a href="{@docRoot}wear/index.html">Android Wear</a> device</li>
+</ul>
+<h2>See also</h2>
+<ul>
+  <li><a href="{@docRoot}guide/topics/security/permissions.html">System Permissions</a></li>
+  <li><a href="{@docRoot}training/permissions/index.html">Working with System Permissions</a></li>
+</ul>
+</div></div>
+
+<p><a href="{@docRoot}about/versions/marshmallow/index.html">Android 6.0</a> (API level 23)
+introduces a new <a href="{@docRoot}training/permissions/requesting.html">permissions model</a>,
+bringing some changes that are specific to Wear, and other changes that apply to all Android-powered
+devices.</p>
+
+<p>The user must now grant permissions to Wear apps separately from the handset versions of the
+apps. Previously, when a user installed a Wear app, it automatically inherited the set of
+permissions that the user had granted to the handset version of the app. However, from Android 6.0
+(API level 23), the Wear app no longer inherits these permissions. Thus, for example,
+a user might grant a handset app permission to use location data, and subsequently
+have to grant the same permission to the Wear version of the app.</p>
+
+<p>For both Wear and handset apps, the Android 6.0 (API level 23) permissions model also
+streamlines app installation and upgrade by eliminating the requirement that the user grant upfront
+every permission an app may ever need. Instead, the app does not request permissions until it
+actually needs them.</p>
+
+<p class="note"><strong>Note: </strong> For an app to use the new permissions model, it must
+specify a value of {@code 23} for both
+<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code uses-sdk-element}</a>
+and <a href="{@docRoot}tools/building/configuring-gradle.html">{@code compileSdkVersion}</a>.</p>
+
+<p>The rest of this document discusses how to use the Android 6.0 (API level 23) permissions model
+when developing Android Wear apps.</p>
+
+<h2 id="scenarios">Permission Scenarios</h2>
+
+<p>Broadly speaking, there are four scenarios you may encounter when requesting
+<a href="{@docRoot}guide/topics/security/permissions.html#normal-dangerous">dangerous permissions</a>
+on Android Wear:</p>
+
+<ul>
+   <li>The <em>Wear app</em> requests permissions for an app running on the <em>wearable</em>
+   device.</li>
+
+   <li>The <em>Wear app</em> requests permissions for an app running on the <em>handset</em>.</li>
+
+   <li>The <em>handset app</em> requests permissions for an app running on the
+   <em>wearable</em> device.</li>
+
+   <li>The wearable app uses a <em>different permission model</em> from its handset counterpart.
+   </li>
+</ul>
+
+<p>The rest of this section explains each of these scenarios. For more detailed information
+about requesting permissions, see <a href="#requesting">Requesting Permissions</a>.</p>
+
+<h3 id="wear-app-wear-perm">Wear app requests permission for an app running on the wearable
+device</h3>
+
+<p>When the Wear app requests a permission for an app running on the wearable device, the system
+displays a dialog to prompt the user for that permission. An app or service can only call the
+{@link android.support.v4.app.ActivityCompat#requestPermissions requestPermissions()}
+method from an activity. If the user interacts with your app
+<a href="#services">via a service</a>, such as
+a watch face, the service must open an activity before requesting the permission.</p>
+
+<p>Your app requests permissions in context when it’s clear why the
+permissions are needed to perform a given operation. If it's obvious that your app requires
+certain permissions, your app can prompt for them on launch. If it may not be so obvious,
+you may choose to provide additional education before prompting for a permission.</p>
+
+<p>If an app or watch face requires more than one permission at a time,
+permission requests appear one after the other.</p>
+
+<img src="{@docRoot}images/training/wear/multiple_permissions.png"
+srcset="{@docRoot}images/training/wear/multiple_permissions.png 1x,
+{@docRoot}images/training/wear/multiple_permissions_2x.png 2x"
+alt="Multiple permission screens, one after another." width="700" height="" id="permission-flow" />
+<p class="img-caption">
+  <strong>Figure 1.</strong> Permission screens appearing in succession.
+</p>
+
+<p class="note"><strong>Note:</strong> From Android 6.0 (API level 23), Android Wear
+automatically syncs Calendar, Contact, and Location data to the Wear device. As a result, this
+scenario is the applicable one when Wear requests this data.</p>
+
+<h3>Wear app requests handset permission</h3>
+
+<p>When the Wear app requests a handset permission, the
+Wear app must send the user to the handset to accept the permission. There, the handset app can
+provide additional education to the user via an activity. The activity should include two buttons:
+one for granting, and one for denying, the permission.</p>
+
+<img src="{@docRoot}images/training/wear/open_on_phone.png"
+srcset="{@docRoot}images/training/wear/open_on_phone.png 1x,
+{@docRoot}images/training/wear/open_on_phone_2x.png 2x"
+alt="The Wear app sends the user to the handset to grant permission." width="700"
+height="" id="permission-flow" />
+<p class="img-caption">
+  <strong>Figure 2.</strong> Sending the user to the handset to grant permission.
+</p>
+<h3>Handset app requests wearable permission</h3>
+
+<p>When the user is in a handset app and the app requires a wearable permission, the
+handset app must send the user to the wearable to accept the permission.
+The handset app uses the
+{@link android.support.v4.app.ActivityCompat#requestPermissions requestPermissions()}
+method on the wearable to trigger the system permissions dialog.</p>
+
+<img src="{@docRoot}images/training/wear/phone_requests_wear.png"
+srcset="{@docRoot}images/training/wear/phone_requests_wear.png 1x,
+{@docRoot}images/training/wear/phone_requests_wear_2x.png 2x"
+alt="The handset app sends the user to the wearable to grant permission."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+  <strong>Figure 3.</strong> Sending the user to the wearable to grant permission.
+</p>
+
+<h3>Mismatching permission models between wearable and handset app</h3>
+
+<p>If your handset app begins using the Android 6.0 (API level 23) model but your
+wearable app does not, the system downloads the Wear app, but does not install it.
+The first time the user launches the app, the system prompts them to grant all pending permissions.
+Once they do so, it installs the app.
+If your app, for example a watch face, does not have a launcher, the system displays a
+stream notification asking the user to grant the permissions the app needs.
+</p>
+
+<h2 id="requesting">Permission-Request Patterns</h2>
+
+<p>There are different patterns for requesting permission from users. In order of
+priority, they are:</p>
+
+<ul>
+   <li><a href="#aic">Ask in context</a> when the permission is obviously necessary for a specific
+   functionality, but is not necessary for the app to run at all.</li>
+
+   <li><a href="#eic">Educate in context</a> when the reason for requesting the permission is
+   not obvious, and the permission is not necessary for the app to run at all.</li>
+
+   <li><a href="#auf">Ask up front</a> when the need for the permission is obvious, and the
+   permission is required in order for the app to run at all.</li>
+
+   <li><a href="#euf">Educate up front</a> when the need for the permission is not obvious, but
+   the permission is required in order for the app to run at all.</li>
+</ul>
+
+<h3 id="aic">Ask in context</h3>
+
+<p>Your app should request permissions when it’s clear why they are needed in order to perform a
+given operation. Users are more likely to grant a permission when they understand its connection to
+the feature they want to use.</p>
+
+<p>For example, an app may require a user’s location in order to show nearby
+places of interest. When the user taps to search for nearby places, the app can
+immediately request the location permission, because there is a clear
+relationship between searching for nearby places and the need for the location
+permission. The obviousness of this relationship makes it unnecessary for the app to display
+additional education screens.</p>
+
+<img src="{@docRoot}images/training/wear/ask_in_context.png"
+srcset="{@docRoot}images/training/wear/ask_in_context.png 1x,
+{@docRoot}images/training/wear/ask_in_context_2x.png 2x"
+alt="The app requests permission when it's obviously necessary."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+  <strong>Figure 4.</strong> Asking in context.
+
+<h3 id="eic">Educate in context</h3>
+
+<p>If necessary, you may choose to provide additional education before prompting
+for a permission. Again, your app should do this in context of a specific
+action, if it’s unclear why your app needs access to the requested permission
+in order to complete that action.</p>
+
+<p>Figure 5 shows an example of in-context education. The app does not require permissions
+in order to start the timer, but an inline educational cue shows that part of the
+activity (location detection) is locked. When the user taps the cue, a permission-request screen
+appears, allowing the user to unlock location-detection.</p>
+
+<p>You can use the {@link
+  android.support.v4.app.ActivityCompat#shouldShowRequestPermissionRationale
+  shouldShowRequestPermissionRationale()} method to help your app decide whether to provide more
+  information. For additional details, see <a
+  href="{@docRoot}training/permissions/requesting.html#explain">Requesting Permissions
+  at Run Time</a>.</p>
+
+
+<img src="{@docRoot}images/training/wear/educate_in_context.png"
+srcset="{@docRoot}images/training/wear/educate_in_context.png 1x,
+{@docRoot}images/training/wear/educate_in_context_2x.png 2x"
+alt="When the need for the permission arises, the app explains why the permission is necessary."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+  <strong>Figure 5.</strong> Educating in context.
+
+<h3 id="auf">Ask up front</h3>
+
+<p>If your app clearly requires a permission in order to work at all, you can prompt for that
+permission when the user launches the app. For example, a maps app clearly requires access
+to the device’s location to run its expected activities. No further education
+is necessary for this permission.</p>
+
+<img src="{@docRoot}images/training/wear/ask_up_front.png"
+srcset="{@docRoot}images/training/wear/ask_up_front.png 1x,
+{@docRoot}images/training/wear/ask_up_front_2x.png 2x"
+alt="If the app obviously needs a permission to run at all, it can ask for it immediately on
+launch."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+  <strong>Figure 6.</strong> Asking up front.
+
+
+<h3 id="euf">Educate up front</h3>
+
+<p>In some cases, the app requires a permission for basic functionality, but the need for that
+permission is not obvious. In these cases, when the user first
+starts the app or sets a watch face, the app or watch face may choose to educate the user and
+ask for the permission.</p>
+
+<img src="{@docRoot}images/training/wear/educate_up_front.png"
+srcset="{@docRoot}images/training/wear/educate_up_front.png 1x,
+{@docRoot}images/training/wear/educate_up_front_2x.png 2x"
+alt="When requesting a permission on launch, the app can explain why it needs the permission."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+  <strong>Figure 7.</strong> Educating up front.
+
+<h3 id="nope">Handling Rejection</h3>
+
+<p>If a user denies a requested permission that is not critical to an intended
+activity, do not block them from continuing the activity.  If certain parts of
+the activity are disabled by the denied permission, provide visual, actionable
+feedback. Figure 8 shows the use of a lock icon to indicate that a feature is
+locked because the user did not grant permission to use it.</p>
+
+<img src="{@docRoot}images/training/wear/deny.png"
+srcset="{@docRoot}images/training/wear/deny.png 1x,
+{@docRoot}images/training/wear/deny_2x.png 2x"
+alt="When the user denies permission, a lock icon is shown alongside the associated feature."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+  <strong>Figure 8.</strong> Lock icon, showing a feature is locked because of denied permission.
+</p>
+<p>When a previously denied wearable permission dialog appears a second
+time, it includes a <strong>Deny, don't show again</strong> option. If the user
+chooses this option, then the only way for them to allow this permission in the
+future is to go into the wearable's Settings app.</p>
+
+<img src="{@docRoot}images/training/wear/ask_again.png"
+srcset="{@docRoot}images/training/wear/ask_again.png 1x,
+{@docRoot}images/training/wear/ask_again_2x.png 2x"
+alt="The system offers to stop requesting permission."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+  <strong>Figure 9.</strong> Offering not to show the permission-request screen anymore.
+
+<h2 id="services">Permissions for Services</h2>
+
+<p>As mentioned above, only an activity can call the
+{@link android.support.v4.app.ActivityCompat#requestPermissions requestPermissions()}
+method, so if the user interacts with your app via a service,
+for example a watch face, the service must open a background activity before requesting
+the permission. This activity could provide additional education, or it could simply
+be an invisible activity that brings up the system dialog.</p>
+
+<p>If your wearable app runs a service that is not a watch face, and the user does not launch
+an app in which it might make sense to request a permission,
+you can post an educational notification on the wearable. The notification can
+provide an action to open an activity that then triggers the system permissions
+dialog.</p>
+
+<p class="note"><strong>Note:</strong> This is the only acceptable use of a stream notification
+for permissions requests.</p>
+
+<img src="{@docRoot}images/training/wear/for_services.png"
+srcset="{@docRoot}images/training/wear/for_services.png 1x,
+{@docRoot}images/training/wear/for_services_2x.png 2x"
+alt="The user may need to grant a permission when indirectly interacting with an app, via a
+service."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+  <strong>Figure 10.</strong> A service requesting permission.
+
+<h2 id="settings">Settings</h2>
+
+<p>As with the handset, the user can change a Wear app’s permissions in Settings at any time.
+Therefore, when the user tries to do something that requires a
+permission, the app should always first call the
+{@link android.support.v4.content.ContextCompat#checkSelfPermission(android.content.Context,java.lang.String) checkSelfPermission()}
+method to see if the app currently has permission to perform this operation. The app should perform
+this check even if it knows the user has previously granted that permission, since the
+user might have subsequently revoked that permission.</p>
+
+<img src="{@docRoot}images/training/wear/for_settings.png"
+srcset="{@docRoot}images/training/wear/for_settings.png 1x,
+{@docRoot}images/training/wear/for_settings_2x.png 2x"
+alt="The user can change permissions through the Settings app."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+  <strong>Figure 11.</strong> Changing settings via the Settings app.
diff --git a/docs/html/training/auto/audio/index.jd b/docs/html/training/auto/audio/index.jd
index f5a797c..9144900 100644
--- a/docs/html/training/auto/audio/index.jd
+++ b/docs/html/training/auto/audio/index.jd
@@ -19,6 +19,7 @@
     <ol>
       <li><a href="#overview">Provide Audio Services</a></li>
       <li><a href="#config_manifest">Configure Your Manifest</a></li>
+      <li><a href="#isconnected">Determine if Your App is Connected</a></li>
       <li><a href="#implement_browser">Build a Browser Service</a></li>
       <li><a href="#implement_callback">Implement Play Controls</a></li>
       <li><a href="#support_voice">Support Voice Actions</a></li>
@@ -29,8 +30,8 @@
     <ul>
       <li><a href="{@docRoot}samples/MediaBrowserService/index.html">
         MediaBrowserService</a></li>
-      <li><a href="//github.com/googlesamples/android-UniversalMusicPlayer">Universal Media
-      Player</a></li>
+      <li><a href="//github.com/googlesamples/android-UniversalMusicPlayer"
+        class="external-link">Universal Media Player</a></li>
     </ul>
 
     <h2>See Also</h2>
@@ -210,6 +211,34 @@
 <p class="note"><strong>Note:</strong> The icon you provide should have transparency enabled, so the
 icon's background gets filled in with the app's primary color.</p>
 
+<h2 id="isconnected">Determine if Your App is Connected</h2>
+<p>
+It is possible to determine if your app is selected as the current media app.</p>
+<p>
+Android Auto broadcasts an intent with <code>com.google.android.gms.car.media.STATUS</code>
+action when a user connects or disconnects from a media app. The broadcast intent is
+scoped to the package name of the media app selected. You can register a broadcast receiver in your
+app, preferably in your <a href="{@docRoot}reference/android/service/media/MediaBrowserService.html">
+MediaBrowserService</a> implementation and listen for this intent
+and adjust advertisements, metadata, and UI buttons in your app to operate safely in a vehicle.</p>
+
+<p>The broadcasted intent has a String extra <code>media_connection_status</code>, that
+contains either <code>media_connected</code> or <code>media_disconnected</code> string that represents
+ the current connection status. </p>
+
+<pre>
+IntentFilter filter = new IntentFilter("com.google.android.gms.car.media.STATUS");
+BroadcastReceiver receiver = new BroadcastReceiver() {
+    ...
+    public void onReceive(Context context, Intent intent) {
+        String status = intent.getStringExtra("media_connection_status");
+        boolean isConnectedToCar = "media_connected".equals(status);
+        // adjust settings based on the connection status
+    }
+};
+registerReceiver(receiver, filter);
+</pre>
+
 
 <h2 id="implement_browser">Build a Browser Service</h2>
 
@@ -290,13 +319,20 @@
 
 <p>Your implementation of {@link android.service.media.MediaBrowserService#onGetRoot
 onGetRoot()} returns information about the root node of the menu
-hierarchy. This root node is the parent of the top items your browse hierarchy.
+hierarchy. This root node is the parent of the top items of your browse hierarchy.
 The method is passed information about the calling client. You can use this
 information to decide if the client should have access to your content at all.
 For example, if you want to limit your app's content to a list of approved
-clients, you can compare the passed {@code clientPackageName} to your whitelist.
-If the caller isn't an approved package, you can return null to deny access to
-your content.</p>
+clients, you can compare the passed {@code clientPackageName} to your whitelist
+and verify the certificate used to sign the caller's APK.
+If the caller can't be verified to be an approved package, return null to deny access to
+your content. For an example of an app that validates that the caller is an
+approved app, see the
+<a href="https://github.com/googlesamples/android-UniversalMusicPlayer/blob/master/mobile/src/main/java/com/example/android/uamp/PackageValidator.java"
+class="external-link"><code>PackageValidator</code></a> class in the
+<a href="https://github.com/googlesamples/android-UniversalMusicPlayer"
+class="external-link">Universal Android Music Player</a> sample app.
+</p>
 
 <p>A typical implementation of {@link
 android.service.media.MediaBrowserService#onGetRoot onGetRoot()} might
@@ -307,28 +343,23 @@
 public BrowserRoot onGetRoot(String clientPackageName, int clientUid,
     Bundle rootHints) {
 
-    // To ensure you are not allowing any arbitrary app to browse your app's
-    // contents, you need to check the origin:
-    if (!PackageValidator.isCallerAllowed(this, clientPackageName, clientUid)) {
+    // Verify that the specified package is allowed to access your
+    // content! You'll need to write your own logic to do this.
+    if (!isValid(clientPackageName, clientUid)) {
         // If the request comes from an untrusted package, return null.
         // No further calls will be made to other media browsing methods.
-        LogHelper.w(TAG, "OnGetRoot: IGNORING request from untrusted package "
-                + clientPackageName);
+
         return null;
     }
-    if (ANDROID_AUTO_PACKAGE_NAME.equals(clientPackageName)) {
-        // Optional: if your app needs to adapt ads, music library or anything
-        // else that needs to run differently when connected to the car, this
-        // is where you should handle it.
-    }
-    return new BrowserRoot(MEDIA_ID_ROOT, null);
+
+    return new BrowserRoot(MY_MEDIA_ROOT_ID, null);
 }
 </pre>
 
 <p>
   The Auto device client builds the top-level menu by calling {@link
   android.service.media.MediaBrowserService#onLoadChildren onLoadChildren()}
-  with the root node object and getting it's children. The client builds
+  with the root node object and getting its children. The client builds
   submenus by calling the same method with other child nodes. The following
   example code shows a simple implementation of {@link
   android.service.media.MediaBrowserService#onLoadChildren onLoadChildren()} method:
@@ -341,21 +372,30 @@
 
     // Assume for example that the music catalog is already loaded/cached.
 
-    List&lt;MediaBrowser.MediaItem&gt; mediaItems = new ArrayList&lt;&gt;();
+    List&lt;MediaItem&gt; mediaItems = new ArrayList&lt;&gt;();
 
     // Check if this is the root menu:
-    if (MEDIA_BROWSER_ROOT.equals(parentMediaId)) {
+    if (MY_MEDIA_ROOT_ID.equals(parentMediaId)) {
 
         // build the MediaItem objects for the top level,
-        // and put them in the &lt;result&gt; list
+        // and put them in the mediaItems list
     } else {
 
         // examine the passed parentMediaId to see which submenu we're at,
-        // and put the children of that menu in the &lt;result&gt; list
+        // and put the children of that menu in the mediaItems list
     }
+    result.sendResult(mediaItems);
 }
 </pre>
 
+<p>
+  For examples of how to implement {@link
+  android.service.media.MediaBrowserService#onLoadChildren onLoadChildren()},
+  see the <a href="{@docRoot}samples/MediaBrowserService/index.html">
+  MediaBrowserService</a> and
+  <a href="https://github.com/googlesamples/android-UniversalMusicPlayer"
+  class="external-link">Universal Android Music Player</a> sample apps.
+</p>
 
 <h2 id="implement_callback">Enable Playback Control</h2>
 
@@ -480,7 +520,13 @@
 <a href="{@docRoot}training/managing-audio/index.html">Managing Audio Playback</a>, and
 <a href="{@docRoot}guide/topics/media/exoplayer.html">ExoPlayer</a>.</p>
 
-
+<a class="notice-developers-video wide"
+href="https://www.youtube.com/watch?v=xc2HZSwPcwM">
+<div>
+    <h3>Video</h3>
+    <p>Devbytes: Android Auto Voice Actions</p>
+</div>
+</a>
 <h2 id="support_voice">Support Voice Actions</h2>
 
 <p>To reduce driver distractions, you can add voice actions in your audio playback app. With voice
@@ -671,4 +717,4 @@
 the
 <a href="//github.com/googlesamples/android-UniversalMusicPlayer/">Universal Media Player</a>
 sample.
-</p>
\ No newline at end of file
+</p>
diff --git a/docs/html/training/auto/index.jd b/docs/html/training/auto/index.jd
index c34911c..0a7ceb3 100644
--- a/docs/html/training/auto/index.jd
+++ b/docs/html/training/auto/index.jd
@@ -27,8 +27,7 @@
   For more information, follow the links below to learn how to extend your Android app to support
   use in vehicles.
 </p>
-
-
+ 
 <h2 id="overview">Get Started</h2>
 
 <p>
@@ -82,3 +81,20 @@
   data-cardSizes="9x3"
   data-maxResults="6">
 </div>
+
+<h2 id="training">Video Training</h2>
+
+<div class="wrap">
+  <div class="cols">
+    <div class="col-1of2">
+      <p>If you prefer to learn through interactive video training,
+      check out this online course about extending your apps to work with Android Auto.</p>
+      <p><a href="https://www.udacity.com/course/ud875C" class="button">
+        Start the video course</a>
+      </p>
+    </div>
+    <div class="col-1of2">
+      <iframe width="300" height="169" src="https://www.youtube.com/embed/pK2HQMTdq6Y?utohide=1&amp;showinfo=0" frameborder="0" allowfullscreen="" style="float: right; margin: 0 0 20px 20px;"></iframe>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/docs/html/training/auto/messaging/index.jd b/docs/html/training/auto/messaging/index.jd
index 0177c84..fa8a8c4 100644
--- a/docs/html/training/auto/messaging/index.jd
+++ b/docs/html/training/auto/messaging/index.jd
@@ -143,17 +143,23 @@
 messages belong to. It is important to use the same tag and ID for all messages in
 a conversation, and to not use that tag for other conversations.</p>
 
-<h3 id="#workflow">Workflow</h3>
+<h3 id="workflow">Workflow</h3>
 
 <p>This section describes how the mobile device interacts with Auto to present
 messages to the user.</p>
 
 <ol>
 
-<li>The app receives a message that it wants to pass on to the user. It attaches
-the message to an  {@link
+<li>The app receives a message that it wants to pass on to the user. The app
+attaches the message to an {@link
+android.support.v4.app.NotificationCompat.CarExtender.UnreadConversation.Builder
+UnreadConversation.Builder} object, then uses the {@link
+android.support.v4.app.NotificationCompat.CarExtender.UnreadConversation.Builder
+UnreadConversation.Builder} to generate an {@link
 android.support.v4.app.NotificationCompat.CarExtender.UnreadConversation
-UnreadConversation} object and attaches it to a notification. That notification
+UnreadConversation}. The app attaches that {@link
+android.support.v4.app.NotificationCompat.CarExtender.UnreadConversation
+UnreadConversation} to a notification. That notification
 is associated with a {@link
 android.support.v4.app.NotificationCompat.CarExtender CarExtender} object, which
 indicates that the notification can be handled by Android Auto.</li>
@@ -176,7 +182,7 @@
 
 </ol>
 
-<h2 id="#manifest">Configure Your Manifest</h2>
+<h2 id="manifest">Configure Your Manifest</h2>
 
 <p>
   You configure your app <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">manifest</a>
diff --git a/docs/html/training/auto/start/index.jd b/docs/html/training/auto/start/index.jd
index 0fdcb2a..ee01fe7 100644
--- a/docs/html/training/auto/start/index.jd
+++ b/docs/html/training/auto/start/index.jd
@@ -22,6 +22,7 @@
  <h2>You should also read</h2>
  <ul>
    <li><a href="{@docRoot}design/auto/index.html">Designing for Auto</a></li>
+   <li><a href="{@docRoot}distribute/googleplay/auto.html">Distribute to Android Auto</a></li>
    <li><a href="{@docRoot}training/auto/audio/index.html">Providing Audio Playback with Auto</a></li>
    <li><a href="{@docRoot}training/auto/messaging/index.html">Providing Messaging for Auto</a></li>
  </ul>
@@ -192,18 +193,24 @@
   </li>
 </ol>
 
-<div class="figure" style="width:330px">
-  <img src="{@docRoot}images/training/auto-desktop-head-unit-server-running.png"
-      alt="" >
-  <p class="img-caption">
-    <strong>Figure 2.</strong> Notification that the head unit server is running.
-  </p>
-</div>
-<img src="{@docRoot}images/training/auto-desktop-head-unit-context-menu-enabled.png"
-    alt="" >
-<p class="img-caption">
-  <strong>Figure 1.</strong> Context menu with developer options.
-</p>
+<div class="cols">
+  <div class="col-6">
+    <img src="{@docRoot}images/training/auto-desktop-head-unit-context-menu-enabled.png"
+        alt="" >
+    <p class="img-caption">
+      <strong>Figure 1.</strong> Context menu with developer options.
+    </p>
+  </div>
+
+  <div class="col-6">
+    <img src="{@docRoot}images/training/auto-desktop-head-unit-server-running.png"
+        alt="" >
+    <p class="img-caption">
+      <strong>Figure 2.</strong> Notification that the head unit server is running.
+    </p>
+  </div>
+</div> <!-- end cols-->
+
 
 <h3 id="connecting-dhu">Connecting the DHU to your mobile device</h3>
 
@@ -213,7 +220,7 @@
 
 <ol>
   <li>On the mobile device, enable Android Auto developer mode by starting the Android Auto
-    companion app, and then tapping the header image 10 times.
+    companion app, and then tapping the <i>Android Auto</i> toolbar title 10 times.
     This step is only required the first time you run the companion app.
   </li>
   <li>If the server is not already running, select <strong>Start head unit server</strong>
@@ -221,9 +228,13 @@
     <p>On the device, a foreground service appears in the notification area. </p>
   </li>
 
-  <li>Connect the mobile device to the development machine via USB. Your device must be unlocked to
-    launch the DHU.
-  </li>
+  <li>In the Android Auto app, make sure the <strong>Only connect to known cars</strong> option
+    is disabled.</li>
+
+  <li>Connect the mobile device to the development machine via USB.</li>
+
+  <li>Make sure the mobile device has its screen unlocked, otherwise it cannot launch the DHU.</li>
+
   <li>On the development machine, run the following {@code adb} command to
     forward socket connections from the
     development machine's port 5277 to the same port number on the Android device.
@@ -241,9 +252,13 @@
 
     <p>
       By default, the head unit server connects over port 5277. To override the host or port
-      (for example, to forward over SSH), use the <code>--adb</code> flag.
+      (for example, to forward over SSH), use the
+      <code>desktop-head-unit --adb &lt;[localhost:]port&gt;</code> flag, as in
+      the following example:
     </p>
 
+    <pre class="no-pretty-print">$ ./desktop-head-unit --adb 5999</pre>
+
   </li>
 </ol>
 
diff --git a/docs/html/training/backup/autosyncapi.jd b/docs/html/training/backup/autosyncapi.jd
new file mode 100644
index 0000000..0e2a9a9
--- /dev/null
+++ b/docs/html/training/backup/autosyncapi.jd
@@ -0,0 +1,370 @@
+page.title=Configuring Auto Backup for Apps
+page.tags=backup, marshmallow, androidm
+page.keywords=backup, autobackup
+page.image=images/cards/card-auto-backup_2x.png
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>This lesson teaches you to</h2>
+<ol>
+        <li><a href="#configuring">Configure Data Backup</a></li>
+        <li><a href="#previous-androids">Support Lower Versions of Android</a></li>
+        <li><a href="#testing">Test Backup Configuration</a></li>
+        <li><a href="#issues">Handle Google Cloud Messaging</a></li>
+</ol>
+    <h2>You should also read</h2>
+    <ul>
+      <li><a href="{@docRoot}guide/topics/data/backup.html">Data Backup</a></li>
+      <li><a href="{@docRoot}training/backup/backupapi.html">Using the Backup API</a>
+      </li>
+    </ul>
+
+</div>
+</div>
+
+<p>
+  Users frequently invest time and effort to configure apps just the way they like them. Switching
+  to a new device can cancel out all that careful configuration. For apps whose <a href=
+  "{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">target SDK version</a>
+  is Android 6.0 (API level 23) and higher, devices running Android 6.0 and higher automatically
+  back up app data to the cloud. The system performs this automatic backup
+  for nearly all app data by default, and does so without your having to write any additional app
+  code.
+</p>
+
+<p class="note">
+<strong>Note:</strong> To protect user privacy, the device user must have opted in to Google
+services for Auto Backup to work. The Google services opt-in dialog appears when the user goes
+through the Setup Wizard or configures the first Google account on the device.
+</p>
+
+<p>
+  When a user installs your app on
+  a new device, or reinstalls your app on one (for example, after a factory reset), the system
+  automatically restores the app data from the cloud. This lesson provides information about how to
+  configure the Auto Backup for Apps feature, explaining its default behavior and how to
+  exclude data that you don't want the system to back up.
+</p>
+
+<p>
+  The automatic backup feature preserves the data your app creates on a user device by uploading it
+  to the user’s Google Drive account and encrypting it. There is no charge to you or the user for
+  data storage, and the saved data does not count towards the user's personal Google Drive quota.
+  Each app can store up to 25MB. Once its backed-up data reaches 25MB, the app no longer sends
+  data to the cloud. If the system performs a data restore, it uses the last data snapshot that
+  the app had sent to the cloud.
+</p>
+
+<p>Automatic backups occur when the following conditions are met:</p>
+  <ul>
+     <li>The device is idle.</li>
+     <li>The device is charging.</li>
+     <li>The device is connected to a Wi-Fi network.</li>
+     <li>At least 24 hours have elapsed since the last backup.</li>
+  </ul>
+</p>
+
+<h2 id="configuring">Configure Data Backup</h2>
+
+<p>
+  On devices running Android 6.0 (API level 23) or higher, the default system behavior is to back up
+  almost all data that an app creates. The exception is <a href="#auto-exclude">
+  automatically excluded data files</a>. This section explains how you can use settings in
+  your app <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">manifest</a> to further
+  limit and configure what data the system backs up.
+</p>
+
+<h3 id="include-exclude">Including or excluding data</h3>
+
+<p>
+  Depending on what data your app needs and how you save it, you may need to set specific
+  rules for including or excluding certain files or directories. Auto Backup for Apps
+  lets you set these backup rules through the app manifest, in which you specify a backup scheme
+  configuration XML file. For example:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:tools="http://schemas.android.com/tools"
+        package="com.my.appexample"&gt;
+    &lt;uses-sdk android:minSdkVersion="23"/&gt;
+    &lt;uses-sdk android:targetSdkVersion="23"/&gt;
+    &lt;application ...
+<strong>        android:fullBackupContent="&#64;xml/mybackupscheme"&gt;</strong>
+    &lt;/app&gt;
+    ...
+&lt;/manifest&gt;
+</pre>
+
+<p>
+  In this example, the <code>android:fullBackupContent</code> attribute specifies an XML file
+  called {@code mybackupscheme.xml}, which resides in the <code>res/xml/</code> directory of your
+  app development project. This configuration file contains rules controlling which files are backed
+  up. The following example code shows a configuration file that excludes a specific file,
+  {@code device_info.db}:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;full-backup-content&gt;
+    &lt;exclude domain="database" path="device_info.db"/&gt;
+&lt;/full-backup-content&gt;
+</pre>
+
+<h3 id="auto-exclude">Automatically excluded data files</h3>
+
+<p>
+  Most apps do not need to, and in fact should not, back up all data. For example, the system
+  should not back up temporary files and caches. For this reason, the automatic backup
+  service excludes certain data files by default:
+</p>
+
+<ul>
+  <li>Files in the directories to which the
+  {@link android.content.Context#getCacheDir getCacheDir()} and
+  {@link android.content.Context#getCodeCacheDir getCodeCacheDir()} methods refer.
+  </li>
+
+  <li>Files located on external storage, unless they reside in the directory to which the
+    {@link android.content.Context#getExternalFilesDir getExternalFilesDir()} method refers.
+  </li>
+
+  <li>Files located in the directory to which the
+    {@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()} method refers.
+  </li>
+</ul>
+<h3>Backup Configuration Syntax</h3>
+
+<p>
+  The backup service configuration allows you to specify what files to include or exclude from
+  backup. The syntax for the data backup configuration XML file is as follows:
+</p>
+
+<pre>
+&lt;full-backup-content&gt;
+    &lt;include domain=["file" | "database" | "sharedpref" | "external" | "root"]
+    path="string" /&gt;
+    &lt;exclude domain=["file" | "database" | "sharedpref" | "external" | "root"]
+    path="string" /&gt;
+&lt;/full-backup-content&gt;
+</pre>
+
+<p>
+  The following elements and attributes allow you to specify the files to include in, and exclude
+  from, backup:
+</p>
+
+<ul>
+  <li>
+  <code>&lt;include&gt;</code>: Specifies a set of resources to
+  back up, instead of having the system back up all data in your app by default. If you specify
+  an <code>&lt;include&gt;</code> element, the system backs up <em>only the resources specified</em>
+  with this element. You can specify multiple sets of resources to back up by using multiple
+  <code>&lt;include&gt;</code> elements
+  </li>
+
+  <li>
+  <code>&lt;exclude&gt;</code>: Specifies any data you want the system to exclude
+  when it does a full backup. If you target the same set of resources with both the
+  <code>&lt;include&gt;</code> and <code>&lt;exclude&gt;</code> elements,
+  <code>&lt;exclude&gt;</code> takes precedence.
+  </li>
+
+  <li>
+  <code>domain</code>: Specifies the type of resource you want to include in,
+  or exclude from, backup. Valid values for this attribute include:
+
+
+
+  <ul>
+    <li>
+    <code>root</code>: Specifies that the resource is in the app’s root directory.
+    </li>
+
+    <li>
+    <code>file</code>: Specifies a resource in the directory returned by the
+    {@link android.content.Context#getFilesDir getFilesDir()} method.
+    </li>
+
+    <li>
+    <code>database</code>: Specifies a database that the
+    {@link android.content.Context#getDatabasePath getDatabasePath()} method returns, or that
+    the app interacts with via the {@link android.database.sqlite.SQLiteOpenHelper} class.
+    </li>
+
+    <li>
+    <code>sharedpref</code>: Specifies a {@link android.content.SharedPreferences} object
+    that the {@link android.content.Context#getSharedPreferences getSharedPreferences()}
+    method returns.
+    </li>
+
+    <li>
+    <code>external</code>: Specifies that the resource is in external storage, and corresponds
+    to a file in the directory that the
+    {@link android.content.Context#getExternalFilesDir getExternalFilesDir()} method returns.
+    </li>
+  </ul>
+  </li>
+    <li>
+    <code>path</code>: Specifies the file path to a resource that you want to include in, or
+    exclude from, backup.
+    </li>
+
+  </li>
+</ul>
+
+
+<h3 id="disabling">Disabling data backups</h3>
+
+<p>
+  You can choose to prevent automatic backups of any of your app data by setting the
+  <code>android:allowBackup</code> attribute to <code>false</code> in the {@code app} element of
+  your manifest. This setting is illustrated in the following example:
+</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:tools="http://schemas.android.com/tools"
+        package="com.my.appexample"&gt;
+    &lt;uses-sdk android:minSdkVersion="23"/&gt;
+    &lt;uses-sdk android:targetSdkVersion="23"/&gt;
+    &lt;application ...
+<strong>        android:allowBackup="false"&gt;</strong>
+    &lt;/application&gt;
+    ...
+&lt;/manifest&gt;
+</pre>
+
+<h2 id="previous-androids">Support Lower Versions of Android</h2>
+
+<p>There are two scenarios in which you may also need to support versions of Android lower
+than 6.0 (API level 23): You may be updating your existing app to take advantage of the
+new auto backup functionality in Android 6.0, while wanting
+to continue supporting earlier versions of Android. Or you may be releasing a new app, but
+want to make sure devices running on versions of Android predating 6.0 also have backup
+functionality.</p>
+
+<h3 id="updating">Updating an existing app to support auto backup</h3>
+
+<p>Earlier versions of Android supported a key/value-pair-based backup mechanism, in which the app
+defines a subclass of {@link android.app.backup.BackupAgent} and sets
+<a href="{@docRoot}guide/topics/manifest/application-element.html#agent">
+{@code android:backupAgent}</a> in its
+<a href="{@docRoot}guide/topics/manifest/application-element.html">app manifest</a>. If your app
+used this legacy approach, you can transition to full-data backups by adding the
+{@code android:fullBackupOnly="true"} attribute to the
+<a href="{@docRoot}guide/topics/manifest/application-element.html">{@code &lt;application/&gt;}</a>
+element in the manifest. When running on a device with Android 5.1
+(API level 22) or lower, your app ignores this value in the manifest, and continues performing
+backups in the previous manner.</p>
+
+<p>Even if you’re not using key/value backups, you can still use the approach described above to do
+any custom processing in {@link android.app.Activity#onCreate(android.os.Bundle) onCreate()}
+or {@link android.app.backup.BackupAgent#onFullBackup onFullBackup()}. You can also use that
+approach to receive a notification when a restore operation happens in
+{@link android.app.backup.BackupAgent#onRestoreFinished onRestoreFinished()}. If you want to retain
+the system's default implementation of
+<a href="#include-exclude">XML include/exclude rules handling</a>, call
+{@link android.app.backup.BackupAgent#onFullBackup super.onFullBackup()}.</p>
+
+<h3 id="lower-versions">Giving your new app support for lower versions of Android</h3>
+
+<p>If you are creating a new app that targets Android 6.0, but you also want to enable cloud backup
+for devices running on Android 5.1 (API level 22) and lower, you must also
+<a href="{@docRoot}training/backup/backupapi.html">implement the Backup API</a>.</p>
+
+<h2 id="testing">Test Backup Configuration</h2>
+
+<p>
+  Once you have created a backup configuration, you should test it to make sure your app saves data
+  and can restore it properly.
+</p>
+
+
+<h3>Enabling Backup Logging</h3>
+
+<p>
+  To help determine how the backup feature is parsing your XML file, enable logging before
+  performing a test backup:
+</p>
+
+<pre class="no-pretty-print">
+$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
+</pre>
+
+<h3>Testing Backup</h3>
+
+<p>To manually run a backup, first initialize the Backup Manager by executing the following
+  command:
+</p>
+
+<pre class="no-pretty-print">
+$ adb shell bmgr run
+</pre>
+
+<p>
+  Next, manually back up your application using the following command. Use the
+  <code>&lt;PACKAGE&gt;</code> parameter to specify the package name for your app:
+</p>
+
+<pre class="no-pretty-print">
+$ adb shell bmgr fullbackup &lt;PACKAGE&gt;</pre>
+
+
+<h3>Testing restore</h3>
+
+<p>
+  To manually initiate a restore after the system has backed up your app data, execute the following
+  command, using the <code>&lt;PACKAGE&gt;</code> parameter to specify the package name for your
+  app:
+</p>
+
+<pre class="noprettyprint">
+$ adb shell bmgr restore &lt;PACKAGE&gt;
+</pre>
+
+<p class="warning">
+  <b>Warning:</b> This action stops your app and wipes its data before performing the restore
+  operation.
+</p>
+
+<p>
+  You can test automatic restore for your app by uninstalling and reinstalling your app. The app
+  data is automatically restored from the cloud once the app installation is complete.
+</p>
+
+
+<h3>Troubleshooting backups</h3>
+
+<p>
+  If backup fails, you can clear the backup data and associated metadata either by turning backup
+  off and on in <strong>Settings &gt; Backup</strong>, factory-resetting the device, or
+  executing this command:
+</p>
+
+<pre>$ adb shell bmgr wipe &lt;TRANSPORT&gt; &lt;PACKAGE&gt;</pre>
+
+<p>
+  You must prepend <code>com.google.android.gms</code> to the {@code &lt;TRANSPORT&gt;} value.
+  To get the list of <a href="{@docRoot}google/backup/index.html">transports</a>, execute the
+  following command:
+</p>
+
+<pre>$ adb shell bmgr list transports</pre>
+
+<h2 id="gcm">Handle Google Cloud Messaging</h2>
+
+  <p>
+  For apps that use <a href="https://developers.google.com/cloud-messaging/gcm">Google Cloud
+  Messaging</a> (GCM) for push notifications, backing up the registration
+  token that Google Cloud Messaging registration returned can cause unexpected behavior in
+  notifications for the restored app. This is because when a user installs your app on a new device,
+  the app must <a href="https://developers.google.com/cloud-messaging/android/client#sample-register">
+  query the GCM API for a new registration token</a>. If the old registration is present, because the
+  system had backed it up and restored it, the app doesn't seek the new token. To prevent this issue
+  from arising, exclude the registration token from the set of backed-up files.
+  </p>
diff --git a/docs/html/training/backup/backupapi.jd b/docs/html/training/backup/backupapi.jd
new file mode 100644
index 0000000..b115b8b
--- /dev/null
+++ b/docs/html/training/backup/backupapi.jd
@@ -0,0 +1,200 @@
+page.title=Using the Backup API
+parent.title=Syncing to the Cloud
+parent.link=index.html
+
+trainingnavtop=true
+
+next.title=Making the Most of Google Cloud Messaging
+next.link=gcm.html
+
+@jd:body
+
+<div id="tb-wrapper">
+  <div id="tb">
+    <h2>This lesson teaches you to</h2>
+    <ol>
+      <li><a href="#register">Register for the Android Backup Service</a></li>
+      <li><a href="#manifest">Configure Your Manifest</a></li>
+      <li><a href="#agent">Write Your Backup Agent</a></li>
+      <li><a href="#backup">Request a Backup</a></li>
+      <li><a href="#restore">Restore from a Backup</a></li>
+    </ol>
+    <h2>You should also read</h2>
+    <ul>
+      <li><a href="{@docRoot}guide/topics/data/backup.html">Data Backup</a></li>
+      <li><a href="{@docRoot}training/backup/autosyncapi.html">Configuring Auto Backup for Apps</a>
+      (Android 6.0 (API level 23) and higher)</li>
+    </ul>
+  </div>
+</div>
+
+<p>When a user purchases a new device or resets their existing one, they might
+expect that when Google Play restores your app back to their device during the
+initial setup, the previous data associated with the app restores as well. On versions of Android
+prior to 6.0 (API level 23), app data is not restored by default, and all the user's accomplishments
+or settings in your app are lost.</p>
+<p>For situations where the volume of data is relatively light (less than a
+megabyte), like the user's preferences, notes, game high scores or other
+stats, the Backup API provides a lightweight solution.  This lesson walks you
+through integrating the Backup API into your application, and restoring data to
+new devices using the Backup API.
+
+<p class="note">
+<strong>Note:</strong> Devices running Android 6.0 and higher
+<a href="{@docRoot}training/backup/autosyncapi.html">automatically back up</a>
+nearly all data by default.
+</p>
+
+<h2 id="register">Register for the Android Backup Service</h2>
+<p>This lesson requires the use of the <a
+  href="{@docRoot}google/backup/index.html">Android Backup
+  Service</a>, which requires registration.  Go ahead and <a
+  href="http://code.google.com/android/backup/signup.html">register here</a>.  Once
+that's done, the service pre-populates an XML tag for insertion in your Android
+Manifest, which looks like this:</p>
+<pre>
+&lt;meta-data android:name="com.google.android.backup.api_key"
+android:value="ABcDe1FGHij2KlmN3oPQRs4TUvW5xYZ" /&gt;
+</pre>
+<p>Note that each backup key works with a specific package name.  If you have
+different applications, register separate keys for each one.</p>
+
+
+<h2 id="manifest">Configure Your Manifest</h2>
+<p>Use of the Android Backup Service requires two additions to your application
+manifest.  First, declare the name of the class that acts as your backup agent,
+then add the snippet above as a child element of the Application tag.  Assuming
+your backup agent is going to be called {@code TheBackupAgent}, here's an example of
+what the manifest looks like with this tag included:</p>
+
+<pre>
+&lt;application android:label="MyApp"
+             android:backupAgent="TheBackupAgent"&gt;
+    ...
+    &lt;meta-data android:name="com.google.android.backup.api_key"
+    android:value="ABcDe1FGHij2KlmN3oPQRs4TUvW5xYZ" /&gt;
+    ...
+&lt;/application&gt;
+</pre>
+<h2 id="agent">Write Your Backup Agent</h2>
+<p>The easiest way to create your backup agent is by extending the wrapper class
+{@link android.app.backup.BackupAgentHelper}.  Creating this helper class is
+actually a very simple process.  Just create a class with the same name as you
+used in the manifest in the previous step (in this example, {@code
+TheBackupAgent}),
+and extend {@code BackupAgentHelper}.  Then override the {@link
+android.app.backup.BackupAgent#onCreate()}.</p>
+
+<p>Inside the {@link android.app.backup.BackupAgent#onCreate()} method, create a {@link
+android.app.backup.BackupHelper}.  These helpers are
+specialized classes for backing up certain kinds of data.  The Android framework
+currently includes two such helpers:  {@link
+android.app.backup.FileBackupHelper} and {@link
+android.app.backup.SharedPreferencesBackupHelper}.  After you create the helper
+and point it at the data you want to back up, just add it to the
+BackupAgentHelper using the {@link android.app.backup.BackupAgentHelper#addHelper(String, BackupHelper) addHelper()}
+method, adding a key which is used to
+retrieve the data later.  In most cases the entire
+implementation is perhaps 10 lines of code.</p>
+
+<p>Here's an example that backs up a high scores file.</p>
+
+<pre>
+import android.app.backup.BackupAgentHelper;
+import android.app.backup.FileBackupHelper;
+
+
+public class TheBackupAgent extends BackupAgentHelper {
+  // The name of the SharedPreferences file
+  static final String HIGH_SCORES_FILENAME = "scores";
+
+  // A key to uniquely identify the set of backup data
+  static final String FILES_BACKUP_KEY = "myfiles";
+
+  // Allocate a helper and add it to the backup agent
+  &#64;Override
+  void onCreate() {
+      FileBackupHelper helper = new FileBackupHelper(this, HIGH_SCORES_FILENAME);
+      addHelper(FILES_BACKUP_KEY, helper);
+  }
+}
+</pre>
+<p>For added flexibility, {@link android.app.backup.FileBackupHelper}'s
+constructor can take a variable number of filenames.  You could just as easily
+have backed up both a high scores file and a game progress file just by adding
+an extra parameter, like this:</p>
+<pre>
+&#64;Override
+  void onCreate() {
+      FileBackupHelper helper = new FileBackupHelper(this, HIGH_SCORES_FILENAME, PROGRESS_FILENAME);
+      addHelper(FILES_BACKUP_KEY, helper);
+  }
+</pre>
+<p>Backing up preferences is similarly easy.  Create a {@link
+android.app.backup.SharedPreferencesBackupHelper}  the same way you did a {@link
+android.app.backup.FileBackupHelper}.  In this case, instead of adding filenames
+to the constructor, add the names of the shared preference groups being used by
+your application.  Here's an example of how your backup agent helper might look if
+high scores are implemented as preferences instead of a flat file:</p>
+
+<pre>
+import android.app.backup.BackupAgentHelper;
+import android.app.backup.SharedPreferencesBackupHelper;
+
+public class TheBackupAgent extends BackupAgentHelper {
+    // The names of the SharedPreferences groups that the application maintains.  These
+    // are the same strings that are passed to getSharedPreferences(String, int).
+    static final String PREFS_DISPLAY = "displayprefs";
+    static final String PREFS_SCORES = "highscores";
+
+    // An arbitrary string used within the BackupAgentHelper implementation to
+    // identify the SharedPreferencesBackupHelper's data.
+    static final String MY_PREFS_BACKUP_KEY = "myprefs";
+
+    // Simply allocate a helper and install it
+    void onCreate() {
+       SharedPreferencesBackupHelper helper =
+                new SharedPreferencesBackupHelper(this, PREFS_DISPLAY, PREFS_SCORES);
+        addHelper(MY_PREFS_BACKUP_KEY, helper);
+    }
+}
+</pre>
+
+<p>You can add as many backup helper instances to your backup agent helper as you
+like, but remember that you only need one of each type.  One {@link
+android.app.backup.FileBackupHelper} handles all the files that you need to back up, and one
+{@link android.app.backup.SharedPreferencesBackupHelper} handles all the shared
+preferencegroups you need backed up.
+</p>
+
+
+<h2 id="backup">Request a Backup</h2>
+<p>In order to request a backup, just create an instance of the {@link
+android.app.backup.BackupManager}, and call it's {@link
+android.app.backup.BackupManager#dataChanged()} method.</p>
+
+<pre>
+import android.app.backup.BackupManager;
+...
+
+public void requestBackup() {
+  BackupManager bm = new BackupManager(this);
+  bm.dataChanged();
+}
+</pre>
+
+<p>This call notifies the backup manager that there is data ready to be backed
+up to the cloud.  At some point in the future, the backup manager then calls
+your backup agent's {@link
+android.app.backup.BackupAgent#onBackup(ParcelFileDescriptor, BackupDataOutput,
+ParcelFileDescriptor) onBackup()} method.  You can make
+the call whenever your data has changed, without having to worry about causing
+excessive network activity.  If you request a backup twice before a backup
+occurs, the backup only occurs once.</p>
+
+
+<h2 id="restore">Restore from a Backup</h2>
+<p>Typically you shouldn't ever have to manually request a restore, as it
+happens automatically when your application is installed on a device.  However,
+if it <em>is</em> necessary to trigger a manual restore, just call the
+{@link android.app.backup.BackupManager#requestRestore(RestoreObserver) requestRestore()} method.</p>
diff --git a/docs/html/training/backup/index.jd b/docs/html/training/backup/index.jd
new file mode 100644
index 0000000..4449fde
--- /dev/null
+++ b/docs/html/training/backup/index.jd
@@ -0,0 +1,47 @@
+page.title=Backing up App Data to the Cloud
+page.tags=cloud,sync,backup
+
+trainingnavtop=true
+startpage=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>Dependencies and prerequisites</h2>
+<ul>
+  <li>Android 2.2 (API level 8) and higher</li>
+</ul>
+</div>
+</div>
+
+<p>Users often invest significant time and effort creating data and setting
+preferences within apps. Preserving that data for users if they replace a broken
+device or upgrade to a new one is an important part of ensuring a great user
+experience.</p>
+
+<p>This class covers techniques for backing up data to the cloud so that
+users can restore their data when recovering from a data loss (such as a factory
+reset) or installing your application on a new device.</p>
+
+<p>It is important to note that the API for cloud backup changed with the
+release of Android 6.0 (API level 23). For your app to support backup both
+on devices running Android 6.0, and those running Android 5.1 (API level
+22) and lower, you must implement both techniques that this class explains.</p>
+
+<h2>Lessons</h2>
+
+<dl>
+	<dt><strong><a href="autosyncapi.html">Configuring Auto Backup for Apps</a></strong></dt>
+	<dd>This lesson applies to Android 6.0 (API level 23) and higher. Learn how to accomplish
+  seamless app data backup and restore with zero additional lines of application code.</dd>
+</dl>
+
+<dl>
+  <dt><strong><a href="backupapi.html">Using the Backup API</a></strong></dt>
+  <dd>This lesson applies to Android 5.1 (API level 22) and lower. Learn how to integrate the Backup
+  API into your Android app, so all of that  app's user data, such as preferences, notes, and high
+  scores, updates seamlessly across all devices linked to that Google account.</dd>
+</dl>
+
diff --git a/docs/html/training/basics/actionbar/adding-buttons.jd b/docs/html/training/basics/actionbar/adding-buttons.jd
deleted file mode 100644
index caee729..0000000
--- a/docs/html/training/basics/actionbar/adding-buttons.jd
+++ /dev/null
@@ -1,226 +0,0 @@
-page.title=Adding Action Buttons
-page.tags=actionbar
-helpoutsWidget=true
-
-trainingnavtop=true
-
-@jd:body
-
-<div id="tb-wrapper">
-  <div id="tb">
-
-<h2>This lesson teaches you to</h2>
-<ol>
-  <li><a href="#XML">Specify the Actions in XML</a></li>
-  <li><a href="#AddActions">Add the Actions to the Action Bar</a></li>
-  <li><a href="#Respond">Respond to Action Buttons</a></li>
-  <li><a href="#UpNav">Add Up Button for Low-level Activities</a></li>
-</ol>
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="{@docRoot}training/implementing-navigation/ancestral.html">Providing Up
-  Navigation</a></li>
-  </div>
-</div>
-
-
-
-<p>The action bar allows you to add buttons for the most important action
-items relating to the app's current
-context. Those that appear directly in the action bar with an icon and/or text are known
-as <em>action buttons</em>. Actions that can't fit in the action bar or aren't
-important enough are hidden in the action overflow.</p>
-
-<img src="{@docRoot}images/training/basics/actionbar-actions.png" height="100" alt=""/>
-<p class="img-caption"><strong>Figure 1.</strong> An action bar with an action button
-for Search and the action overflow, which reveals additional actions.</a>
-
-
-<h2 id="XML">Specify the Actions in XML</h2>
-
-<p>All action buttons and other items available in the action overflow are defined
-in an XML <a
-href="{@docRoot}guide/topics/resources/menu-resource.html">menu resource</a>. To add
-actions to the action bar, create a new XML file in your project's
-{@code res/menu/} directory.</p>
-
-<p>Add an {@code <item>} element for each item you want to include in the action bar.
-For example:</p>
-
-<p class="code-caption">res/menu/main_activity_actions.xml</p>
-<pre>
-&lt;menu xmlns:android="http://schemas.android.com/apk/res/android" >
-    &lt;!-- Search, should appear as action button -->
-    &lt;item android:id="@+id/action_search"
-          android:icon="@drawable/ic_action_search"
-          android:title="@string/action_search"
-          android:showAsAction="ifRoom" /&gt;
-    &lt;!-- Settings, should always be in the overflow -->
-    &lt;item android:id="@+id/action_settings"
-          android:title="@string/action_settings"
-          android:showAsAction="never" /&gt;
-&lt;/menu&gt;
-</pre>
-
-<div class="sidebox">
-<h3>Download action bar icons</h3>
-<p>To best match the Android <a
-href="{@docRoot}design/style/iconography.html#action-bar">iconography</a> guidelines, you should
-use icons provided in the
-<a href="{@docRoot}design/downloads/index.html#action-bar-icon-pack">Action Bar Icon Pack</a>.</p>
-</div>
-
-<p>This declares that the Search action should appear as an action button when room
-is available in the action bar, but the
-Settings action should always appear in the overflow. (By default, all actions appear in the
-overflow, but it's good practice to explicitly declare your design intentions for each action.)
-
-<p>The {@code icon} attribute requires a resource ID for an
-image. The name that follows {@code @drawable/} must be the name of a bitmap image you've
-saved in your project's {@code res/drawable/} directory. For example,
-{@code "@drawable/ic_action_search"} refers to {@code ic_action_search.png}.
-Likewise, the {@code title} attribute uses a string resource that's defined by an XML
-file in your project's {@code res/values/} directory, as discussed in <a
-href="{@docRoot}training/basics/firstapp/building-ui.html#Strings">Building a Simple User
-Interface</a>.
-
-<p class="note"><strong>Note:</strong> When creating icons and other bitmap images for your app,
-it's important that you provide multiple versions that are each optimized for a different screen
-density. This is discussed more in the lesson about <a
-href="{@docRoot}training/basics/supporting-devices/screens.html">Supporting Different Screens</a>.
-
-<p><strong>If your app is using the Support Library</strong> for compatibility on versions
-as low as Android 2.1, the {@code showAsAction} attribute is not available from
-the {@code android:} namespace. Instead this attribute is provided by the Support Library
-and you must define your own XML namespace and use that namespace as the attribute prefix.
-(A custom XML namespace should be based on your app name, but it can be any
-name you want and is only accessible within the scope of the file in which you declare it.)
-For example:</p>
-
-<p class="code-caption">res/menu/main_activity_actions.xml</p>
-<pre>
-&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"
-      <strong>xmlns:yourapp="http://schemas.android.com/apk/res-auto"</strong> >
-    &lt;!-- Search, should appear as action button -->
-    &lt;item android:id="@+id/action_search"
-          android:icon="@drawable/ic_action_search"
-          android:title="@string/action_search"
-          <strong>yourapp:showAsAction="ifRoom"</strong>  /&gt;
-    ...
-&lt;/menu&gt;
-</pre>
-
-
-
-<h2 id="AddActions">Add the Actions to the Action Bar</h2>
-
-<p>To place the menu items into the action bar, implement the
-{@link android.app.Activity#onCreateOptionsMenu onCreateOptionsMenu()} callback
-method in your activity to inflate the menu resource into the given {@link android.view.Menu}
-object. For example:</p>
-
-<pre>
-&#64;Override
-public boolean onCreateOptionsMenu(Menu menu) {
-    // Inflate the menu items for use in the action bar
-    MenuInflater inflater = getMenuInflater();
-    inflater.inflate(R.menu.main_activity_actions, menu);
-    return super.onCreateOptionsMenu(menu);
-}
-</pre>
-
-
-
-<h2 id="Respond">Respond to Action Buttons</h2>
-
-<p>When the user presses one of the action buttons or another item in the action overflow,
-the system calls your activity's {@link android.app.Activity#onOptionsItemSelected
-onOptionsItemSelected()} callback method. In your implementation of this method,
-call {@link android.view.MenuItem#getItemId getItemId()} on the given {@link android.view.MenuItem} to
-determine which item was pressed&mdash;the returned ID matches the value you declared in the
-corresponding {@code <item>} element's {@code android:id} attribute.</p>
-
-<pre>
-&#64;Override
-public boolean onOptionsItemSelected(MenuItem item) {
-    // Handle presses on the action bar items
-    switch (item.getItemId()) {
-        case R.id.action_search:
-            openSearch();
-            return true;
-        case R.id.action_settings:
-            openSettings();
-            return true;
-        default:
-            return super.onOptionsItemSelected(item);
-    }
-}
-</pre>
-
-
-
-<h2 id="UpNav">Add Up Button for Low-level Activities</h2>
-
-<div class="figure" style="width:240px">
-  <img src="{@docRoot}images/ui/actionbar-up.png" width="240" alt="">
-  <p class="img-caption"><strong>Figure 4.</strong> The <em>Up</em> button in Gmail.</p>
-</div>
-
-<p>All screens in your app that are not the main entrance to your app
-(activities that are not the "home" screen) should
-offer the user a way to navigate to the logical parent screen in the app's hierarchy by pressing
-the <em>Up</em> button in the action bar.</p>
-
-<p>When running on Android 4.1 (API level 16) or higher, or when using {@link
-android.support.v7.app.ActionBarActivity} from the Support Library, performing <em>Up</em>
-navigation simply requires that you declare the parent activity in the manifest file and enable
-the <em>Up</em> button for the action bar.</p>
-
-<p>For example, here's how you can declare an activity's parent in the manifest:</p>
-
-<pre>
-&lt;application ... >
-    ...
-    &lt;!-- The main/home activity (it has no parent activity) -->
-    &lt;activity
-        android:name="com.example.myfirstapp.MainActivity" ...>
-        ...
-    &lt;/activity>
-    &lt;!-- A child of the main activity -->
-    &lt;activity
-        android:name="com.example.myfirstapp.DisplayMessageActivity"
-        android:label="@string/title_activity_display_message"
-        android:parentActivityName="com.example.myfirstapp.MainActivity" >
-        &lt;!-- Parent activity meta-data to support 4.0 and lower -->
-        &lt;meta-data
-            android:name="android.support.PARENT_ACTIVITY"
-            android:value="com.example.myfirstapp.MainActivity" />
-    &lt;/activity>
-&lt;/application>
-</pre>
-
-  <p>Then enable the app icon as the <em>Up</em> button by calling
-{@link android.app.ActionBar#setDisplayHomeAsUpEnabled setDisplayHomeAsUpEnabled()}:</p>
-
-<pre>
-{@literal @}Override
-public void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.activity_displaymessage);
-
-    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-    // If your minSdkVersion is 11 or higher, instead use:
-    // getActionBar().setDisplayHomeAsUpEnabled(true);
-}
-</pre>
-
-<p>Because the system now knows {@code MainActivity} is the parent activity for
-{@code DisplayMessageActivity}, when the user presses the
-<em>Up</em> button, the system navigates to
-the parent activity as appropriate&mdash;you <strong>do not</strong> need to handle the
-<em>Up</em> button's event.</p>
-
-<p>For more information about up navigation, see
-<a href="{@docRoot}training/implementing-navigation/ancestral.html">Providing Up
-  Navigation</a>.
\ No newline at end of file
diff --git a/docs/html/training/basics/actionbar/index.jd b/docs/html/training/basics/actionbar/index.jd
deleted file mode 100644
index 6a8eaff..0000000
--- a/docs/html/training/basics/actionbar/index.jd
+++ /dev/null
@@ -1,69 +0,0 @@
-page.title=Adding the Action Bar
-page.tags=actionbar
-helpoutsWidget=true
-
-trainingnavtop=true
-startpage=true
-
-@jd:body
-
-<div id="tb-wrapper">
-<div id="tb">
-
-<h2>Dependencies and prerequisites</h2>
-<ul>
-  <li>Android 2.1 or higher</li>
-</ul>
-
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a></li>
-  <li><a href="{@docRoot}training/implementing-navigation/index.html">Implementing
-  Effective Navigation</a></li>
-</ul>
-
-</div>
-</div>
-
-<a class="notice-designers wide" href="{@docRoot}design/patterns/actionbar.html">
-  <div>
-    <h3>Design Guide</h3>
-    <p>Action Bar</p>
-  </div>
-</a>
-
-<p>The action bar is one of the most important design elements you can implement for your
-app's activities. It provides several user interface features that make your app immediately
-familiar to users by offering consistency between other Android apps. Key functions include:</p>
-
-<ul>
-  <li>A dedicated space for giving your app an identity and indicating the user's location
-  in the app.</li>
-  <li>Access to important actions in a predictable way (such as Search).</li>
-  <li>Support for navigation and view switching (with tabs or drop-down lists).</li>
-</ul>
-
-<img src="{@docRoot}images/training/basics/actionbar-actions.png" height="100" alt="">
-
-<p>This training class offers a quick guide to the action bar's basics. For more information
-about action bar's various features, see the
-<a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> guide.</p>
-
-
-<h2>Lessons</h2>
-
-<dl>
-  <dt><b><a href="setting-up.html">Setting Up the Action Bar</a></b></dt>
-  <dd>Learn how to add a basic action bar to your activity, whether your app
-  supports only Android 3.0 and higher or also supports versions as low as Android 2.1
-  (by using the Android Support Library).</dd>
-  <dt><b><a href="adding-buttons.html">Adding Action Buttons</a></b></dt>
-  <dd>Learn how to add and respond to user actions in the action bar.</dd>
-  <dt><b><a href="styling.html">Styling the Action Bar</a></b></dt>
-  <dd>Learn how to customize the appearance of your action bar.</dd>
-  <dt><b><a href="overlaying.html">Overlaying the Action Bar</a></b></dt>
-  <dd>Learn how to overlay the action bar in front of your layout, allowing for
-  seamless transitions when hiding the action bar.</dd>
-</dl>
-
diff --git a/docs/html/training/basics/actionbar/overlaying.jd b/docs/html/training/basics/actionbar/overlaying.jd
deleted file mode 100644
index 634534e..0000000
--- a/docs/html/training/basics/actionbar/overlaying.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=Overlaying the Action Bar
-page.tags=actionbar
-helpoutsWidget=true
-
-trainingnavtop=true
-
-@jd:body
-
-
-<div id="tb-wrapper">
-  <div id="tb">
-
-<h2>This lesson teaches you to</h2>
-<ol>
-  <li><a href="#EnableOverlay">Enable Overlay Mode</a>
-    <ol>
-      <li><a href="#Overlay11">For Android 3.0 and higher only</a></li>
-      <li><a href="#Overlay7">For Android 2.1 and higher</a></li>
-    </ol>
-  </li>
-  <li><a href="#TopMargin">Specify Layout Top-margin</a></li>
-</ol>
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="{@docRoot}guide/topics/ui/themes.html">Styles and Themes</a></li>
-</ul>
-  </div>
-</div>
-
-
-<p>By default, the action bar appears at the top of your activity window,
-slightly reducing the amount of space available for the rest of your activity's layout.
-If, during the course of user interaction, you want to hide and show the action bar, you can do so
-by calling {@link android.app.ActionBar#hide()} and
-{@link android.app.ActionBar#show()} on the {@link android.app.ActionBar}. However,
-this causes your activity to recompute and redraw the layout based on its new size.</p>
-
-
-<div class="figure" style="width:280px">
-  <img src="{@docRoot}images/training/basics/actionbar-overlay@2x.png" width="280" alt="" />
-  <p class="img-caption"><strong>Figure 1.</strong> Gallery's action bar in overlay mode.</p>
-</div>
-
-<p>To avoid resizing your layout when the action bar hides and shows, you can enable <em>overlay
-mode</em> for the action bar. When in overlay mode, your activity layout uses all the space
-available as if the action bar is not there and the system draws the action bar in front of
-your layout. This obscures some of the layout at the top, but now when the action bar hides or
-appears, the system does not need to resize your layout and the transition is seamless.</p>
-
-<p class="note"><strong>Tip:</strong>
-If you want your layout to be partially visible behind the action bar, create a custom
-style for the action bar with a partially transparent background, such as the one shown
-in figure 1. For information about how to define the action bar background, read
-<a href="{@docRoot}training/basics/actionbar/styling.html">Styling the Action Bar</a>.</p>
-
-
-<h2 id="EnableOverlay">Enable Overlay Mode</h2>
-
-<p>To enable overlay mode for the action bar, you need to create a custom theme that
-extends an existing action bar theme and set the {@code android:windowActionBarOverlay} property to
-{@code true}.</p>
-
-
-<h3 id="Overlay11">For Android 3.0 and higher only</h3>
-
-<p>If your
-<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a>
-is set to {@code 11} or higher, your custom theme should use
-{@link android.R.style#Theme_Holo Theme.Holo} theme (or one of its descendants) as your parent
-theme. For example:</p>
-
-<pre>
-&lt;resources>
-    &lt;!-- the theme applied to the application or activity -->
-    &lt;style name="CustomActionBarTheme"
-           parent="&#64;android:style/Theme.Holo">
-        &lt;item name="android:windowActionBarOverlay">true&lt;/item>
-    &lt;/style>
-&lt;/resources>
-</pre>
-
-
-<h3 id="Overlay7">For Android 2.1 and higher</h3>
-
-<p>If your app is using the Support Library for compatibility on devices
-running versions lower than Android 3.0, your custom theme should use
-{@link android.support.v7.appcompat.R.style#Theme_AppCompat Theme.AppCompat} theme
-(or one of its descendants) as your parent theme. For example:</p>
-
-<pre>
-&lt;resources>
-    &lt;!-- the theme applied to the application or activity -->
-    &lt;style name="CustomActionBarTheme"
-           parent="&#64;android:style/Theme.<strong>AppCompat</strong>">
-        &lt;item name="android:windowActionBarOverlay">true&lt;/item>
-
-        &lt;!-- Support library compatibility -->
-        &lt;item name="windowActionBarOverlay">true&lt;/item>
-    &lt;/style>
-&lt;/resources>
-</pre>
-
-<p>Also notice that this theme includes two definitions for the {@code windowActionBarOverlay}
-style: one with the {@code android:} prefix and one without. The one with the {@code android:}
-prefix is for versions of Android that include the style in the platform and the one
-without the prefix is for older versions that read the style from the Support Library.</p>
-
-
-
-
-
-<h2 id="TopMargin">Specify Layout Top-margin</h2>
-
-<p>When the action bar is in overlay mode, it might obscure some of your layout that should
-remain visible. To ensure that such items remain below the action bar at all times,
-add either margin or padding to the top of the view(s)
-using the height specified by {@link android.R.attr#actionBarSize}. For example:</p>
-
-<pre>
-&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingTop="?android:attr/actionBarSize">
-    ...
-&lt;/RelativeLayout>
-</pre>
-
-<p>If you're using the Support Library for the action bar, you need to remove the
-{@code android:} prefix. For example:</p>
-
-<pre>
-&lt;!-- Support library compatibility -->
-&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingTop="?attr/actionBarSize">
-    ...
-&lt;/RelativeLayout>
-</pre>
-
-<p>In this case, the {@code ?attr/actionBarSize} value without the
-prefix works on all versions, including Android 3.0 and higher.</p>
\ No newline at end of file
diff --git a/docs/html/training/basics/actionbar/setting-up.jd b/docs/html/training/basics/actionbar/setting-up.jd
deleted file mode 100644
index 2cd4140..0000000
--- a/docs/html/training/basics/actionbar/setting-up.jd
+++ /dev/null
@@ -1,114 +0,0 @@
-page.title=Setting Up the Action Bar
-page.tags=actionbar
-helpoutsWidget=true
-
-trainingnavtop=true
-
-@jd:body
-
-<div id="tb-wrapper">
-  <div id="tb">
-
-<h2>This lesson teaches you to</h2>
-<ol>
-  <li><a href="#ApiLevel11">Support Android 3.0 and Above Only</a></li>
-  <li><a href="#ApiLevel7">Support Android 2.1 and Above</a></li>
-</ol>
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="{@docRoot}tools/support-library/setup.html"
->Setting Up the Support Library</a></li>
-</ul>
-  </div>
-</div>
-
-
-<p>In its most basic form, the action bar displays the title for the activity
-and the app icon on the left. Even in this simple form, the action bar
-is useful for all activities to inform
-users about where they are and to maintain a consistent identity for your app.</p>
-
-<img src="{@docRoot}images/training/basics/actionbar-basic.png" height="100" alt=""/>
-<p class="img-caption"><strong>Figure 1.</strong> An action bar with the app icon and
-activity title.</a>
-
-<p>Setting up a basic action bar requires that your app use an activity theme that enables
-the action bar. How to request such a theme depends on which version of Android is the
-lowest supported by your app. So this
-lesson is divided into two sections depending on which Android
-version is your lowest supported.</p>
-
-
-<h2 id="ApiLevel11">Support Android 3.0 and Above Only</h2>
-
-<p>Beginning with Android 3.0 (API level 11), the action bar is included in all
-activities that use the {@link android.R.style#Theme_Holo Theme.Holo} theme (or one of its
-descendants), which is the default theme when either the <a
-href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a> or
-<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a>
-attribute is set to <code>"11"</code> or greater.</p>
-
-<p>So to add the action bar to your activities, simply set either attribute to
-{@code 11} or higher. For example:</p>
-
-<pre>
-&lt;manifest ... &gt;
-    &lt;uses-sdk android:minSdkVersion="11" ... /&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
-
-<p class="note"><strong>Note:</strong> If you've created a custom theme, be sure it uses one
-of the {@link android.R.style#Theme_Holo Theme.Holo} themes as its parent. For details,
-see <a href="{@docRoot}training/basics/actionbar/styling.html">Styling the Action Bar</a>.</p>
-
-<p>Now the {@link android.R.style#Theme_Holo Theme.Holo} theme is applied to your app and
-all activities show the action bar. That's it.</p>
-
-
-
-<h2 id="ApiLevel7">Support Android 2.1 and Above</h2>
-
-<p>Adding the action bar when running on versions older than Android 3.0 (down to Android 2.1)
-requires that you include the Android Support Library in your application.</p>
-
-<p>To get started, read the <a href="{@docRoot}tools/support-library/setup.html"
->Support Library Setup</a> document and set up the <strong>v7 appcompat</strong>
-library (once you've downloaded the library package, follow the instructions for <a
-href="{@docRoot}tools/support-library/setup.html#libs-with-res">Adding libraries with
-resources</a>).</p>
-
-<p>Once you have the Support Library integrated with your app project:</p>
-
-<ol>
-  <li>Update your activity so that it extends {@link android.support.v7.app.ActionBarActivity}.
-  For example:
-<pre>
-public class MainActivity extends ActionBarActivity { ... }
-</pre>
-  </li>
-  <li>In your manifest file, update either the <a
-  href="{@docRoot}guide/topics/manifest/application-element.html">{@code
-  <application>}</a> element or individual
-  <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code <activity>}</a>
-  elements to use one of the {@link android.support.v7.appcompat.R.style#Theme_AppCompat
-  Theme.AppCompat} themes. For example:
-  <pre>&lt;activity android:theme="@style/Theme.AppCompat.Light" ... ></pre>
-  <p class="note"><strong>Note:</strong> If you've created a custom theme, be sure it uses one
-of the {@link android.support.v7.appcompat.R.style#Theme_AppCompat Theme.AppCompat} themes as
-its parent. For details, see <a href="{@docRoot}training/basics/actionbar/styling.html">Styling
-the Action Bar</a>.</p>
-  </li>
-</ol>
-
-<p>Now your activity includes the action bar when running on Android 2.1 (API level 7) or higher.
-</p>
-
-<p>Remember to properly set your app's API level support in the manifest:</p>
-<pre>
-&lt;manifest ... &gt;
-    &lt;uses-sdk android:minSdkVersion="7"  android:targetSdkVersion="18" /&gt;
-    ...
-&lt;/manifest&gt;
-</pre>
\ No newline at end of file
diff --git a/docs/html/training/basics/actionbar/styling.jd b/docs/html/training/basics/actionbar/styling.jd
deleted file mode 100644
index b658423..0000000
--- a/docs/html/training/basics/actionbar/styling.jd
+++ /dev/null
@@ -1,450 +0,0 @@
-page.title=Styling the Action Bar
-page.tags=actionbar
-helpoutsWidget=true
-
-trainingnavtop=true
-
-@jd:body
-
-
-<div id="tb-wrapper">
-  <div id="tb">
-
-<h2>This lesson teaches you to</h2>
-<ol>
-  <li><a href="#AndroidThemes">Use an Android Theme</a></li>
-  <li><a href="#CustomBackground">Customize the Background</a></li>
-  <li><a href="#CustomText">Customize the Text Color</a></li>
-  <li><a href="#CustomTabs">Customize the Tab Indicator</a></li>
-</ol>
-
-<h2>You should also read</h2>
-<ul>
-  <li><a href="{@docRoot}guide/topics/ui/themes.html">Styles and Themes</a></li>
-  <li><a class="external-link" target="_blank"
-  href="http://www.actionbarstylegenerator.com">Android Action Bar Style
-  Generator</a></li>
-</ul>
-
-  </div>
-</div>
-
-
-
-<p>The action bar provides your users a familiar and predictable way to perform
-actions and navigate your app, but that doesn't mean it needs to look exactly the
-same as it does in other apps. If you want to style the action bar to better fit your product
-brand, you can easily do so using Android's <a href="{@docRoot}guide/topics/ui/themes.html">style
-and theme</a> resources.</p>
-
-<p>Android includes a few built-in activity themes that include "dark" or "light" action bar
-styles. You can also extend these themes to further customize the look for your action bar.</p>
-
-<p class="note" style="clear:left"><strong>Note:</strong> If you are using the Support Library APIs
-for the action bar, then you must use (or override) the {@link
-android.support.v7.appcompat.R.style#Theme_AppCompat Theme.AppCompat} family of styles (rather
-than the {@link android.R.style#Theme_Holo Theme.Holo} family, available in API level 11 and
-higher). In doing so, each style property that you declare must be declared twice: once using
-the platform's style properties (the
-{@link android.R.attr android:} properties) and once using the
-style properties included in the Support Library (the {@link android.support.v7.appcompat.R.attr
-appcompat.R.attr} properties&mdash;the context for these properties is actually
-<em>your app</em>). See the examples below for details.</p>
-
-
-
-<h2 id="AndroidThemes">Use an Android Theme</h2>
-
-<div class="figure" style="width:340px">
-  <img src="{@docRoot}images/training/basics/actionbar-theme-dark@2x.png" width="340" alt="" />
-</div>
-
-<div class="figure" style="width:340px">
-  <img src="{@docRoot}images/training/basics/actionbar-theme-light-solid@2x.png" width="340" alt="" />
-</div>
-
-<p>Android includes two baseline activity themes that dictate the color for the action bar:
-</p>
-<ul>
-  <li>{@link android.R.style#Theme_Holo Theme.Holo} for a "dark" theme.
-  </li>
-  <li>{@link android.R.style#Theme_Holo_Light Theme.Holo.Light} for a "light" theme.
-  </li>
-</ul>
-
-<p>You can apply these themes to your entire app or to individual activities by
-declaring them in your manifest file with the {@code android:theme} attribute
-for the <a href="{@docRoot}guide/topics/manifest/application-element.html">{@code
-<application>}</a> element or individual
-<a href="{@docRoot}guide/topics/manifest/application-element.html">{@code <activity>}</a>
-elements.</p>
-
-<p>For example:</p>
-<pre>
-&lt;application android:theme="@android:style/Theme.Holo.Light" ... />
-</pre>
-
-<div class="figure" style="width:340px">
-  <img src="{@docRoot}images/training/basics/actionbar-theme-light-darkactionbar@2x.png" width="340" alt="" />
-</div>
-
-<p>You can also use a dark action bar while the rest of the activity uses the light
-color scheme by declaring the {@link android.R.style#Theme_Holo_Light_DarkActionBar
-Theme.Holo.Light.DarkActionBar} theme.</p>
-
-<p>When using the Support Library, you must instead use the
-{@link android.support.v7.appcompat.R.style#Theme_AppCompat Theme.AppCompat} themes:</p>
-<ul>
-  <li>{@link android.support.v7.appcompat.R.style#Theme_AppCompat Theme.AppCompat} for the
-  "dark" theme.</li>
-  <li>{@link android.support.v7.appcompat.R.style#Theme_AppCompat_Light Theme.AppCompat.Light}
-  for the "light" theme.</li>
-  <li>{@link android.support.v7.appcompat.R.style#Theme_AppCompat_Light_DarkActionBar
-Theme.AppCompat.Light.DarkActionBar} for the light theme with a dark action bar.
-</ul>
-
-<p>Be sure that you use action bar icons that properly contrast with the color of your action
-bar. To help you, the <a href="{@docRoot}design/downloads/index.html#action-bar-icon-pack">Action
-Bar Icon Pack</a> includes standard action icons for use with both the Holo light and Holo dark
-action bar.</p>
-
-
-
-
-
-<h2 id="CustomBackground">Customize the Background</h2>
-
-<div class="figure" style="width:340px">
-  <img src="{@docRoot}images/training/basics/actionbar-theme-custom@2x.png" width="340" alt="" />
-</div>
-
-<p>To change the action bar background, create a custom theme for your activity that overrides the
-{@link android.R.attr#actionBarStyle} property. This property points to another style
-in which you can override the {@link android.R.attr#background} property to specify
-a drawable resource for the action bar background.</p>
-
-<p>If your app uses <a href="{@docRoot}guide/topics/ui/actionbar.html#Tabs">navigation tabs</a>
-or the <a href="{@docRoot}guide/topics/ui/actionbar.html#SplitBar">split
-action bar</a>, then you can also specify the background for these bars using
-the {@link android.R.attr#backgroundStacked} and
-{@link android.R.attr#backgroundSplit} properties, respectively.</p>
-
-<p class="caution"><strong>Caution:</strong> It's important that you declare an appropriate
-parent theme from which your custom theme and style inherit their styles. Without a parent
-style, your action bar will be without many style properties unless you explicitly declare
-them yourself.</p>
-
-
-<h3 id="CustomBackground11">For Android 3.0 and higher only</h3>
-
-<p>When supporting Android 3.0 and higher only, you can define the action bar's
-background like this:</p>
-
-<p class="code-caption">res/values/themes.xml</p>
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;resources>
-    &lt;!-- the theme applied to the application or activity -->
-    &lt;style name="CustomActionBarTheme"
-           parent="&#64;android:style/Theme.Holo.Light.DarkActionBar">
-        &lt;item name="android:actionBarStyle">&#64;style/MyActionBar&lt;/item>
-    &lt;/style>
-
-    &lt;!-- ActionBar styles -->
-    &lt;style name="MyActionBar"
-           parent="&#64;android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
-        &lt;item name="android:background">&#64;drawable/actionbar_background&lt;/item>
-    &lt;/style>
-&lt;/resources>
-</pre>
-
-<p>Then apply your theme to your entire app or individual activities:</p>
-<pre>
-&lt;application android:theme="&#64;style/CustomActionBarTheme" ... />
-</pre>
-
-
-
-<h3 id="CustomBackground7">For Android 2.1 and higher</h3>
-
-<p>When using the Support Library, the same theme as above must instead look like this:</p>
-
-<p class="code-caption">res/values/themes.xml</p>
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;resources>
-    &lt;!-- the theme applied to the application or activity -->
-    &lt;style name="CustomActionBarTheme"
-           parent="&#64;style/Theme.<strong>AppCompat</strong>.Light.DarkActionBar">
-        &lt;item name="android:actionBarStyle">&#64;style/MyActionBar&lt;/item>
-
-        &lt;!-- Support library compatibility -->
-        &lt;item name="actionBarStyle">&#64;style/MyActionBar&lt;/item>
-    &lt;/style>
-
-    &lt;!-- ActionBar styles -->
-    &lt;style name="MyActionBar"
-           parent="&#64;style/Widget.<strong>AppCompat</strong>.Light.ActionBar.Solid.Inverse">
-        &lt;item name="android:background">&#64;drawable/actionbar_background&lt;/item>
-
-        &lt;!-- Support library compatibility -->
-        &lt;item name="background">&#64;drawable/actionbar_background&lt;/item>
-    &lt;/style>
-&lt;/resources>
-</pre>
-
-<p>Then apply your theme to your entire app or individual activities:</p>
-<pre>
-&lt;application android:theme="&#64;style/CustomActionBarTheme" ... />
-</pre>
-
-
-
-
-
-
-
-<h2 id="CustomText">Customize the Text Color</h2>
-
-<p>To modify the color of text in the action bar, you need to override separate properties
-for each text element:</p>
-<ul>
-  <li>Action bar title: Create a custom style that specifies the {@code textColor} property and
-  specify that style for the {@link android.R.attr#titleTextStyle} property in your custom
-  {@link android.R.attr#actionBarStyle}.
-    <p class="note"><strong>Note:</strong>
-    The custom style applied to {@link android.R.attr#titleTextStyle} should use
-    {@link android.R.style#TextAppearance_Holo_Widget_ActionBar_Title
-    TextAppearance.Holo.Widget.ActionBar.Title} as the parent style.</p>
-  </li>
-  <li>Action bar tabs: Override {@link android.R.attr#actionBarTabTextStyle} in your
-  activity theme.</li>
-  <li>Action buttons: Override {@link android.R.attr#actionMenuTextColor} in your
-  activity theme.</li>
-</ul>
-
-
-<h3 id="CustomText11">For Android 3.0 and higher only</h3>
-
-<p>When supporting Android 3.0 and higher only, your style XML file might look like this:</p>
-
-<p class="code-caption">res/values/themes.xml</p>
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;resources>
-    &lt;!-- the theme applied to the application or activity -->
-    &lt;style name="CustomActionBarTheme"
-           parent="&#64;style/Theme.Holo">
-        &lt;item name="android:actionBarStyle">&#64;style/MyActionBar&lt;/item>
-        &lt;item name="android:actionBarTabTextStyle">&#64;style/MyActionBarTabText&lt;/item>
-        &lt;item name="android:actionMenuTextColor">&#64;color/actionbar_text&lt;/item>
-    &lt;/style>
-
-    &lt;!-- ActionBar styles -->
-    &lt;style name="MyActionBar"
-           parent="&#64;style/Widget.Holo.ActionBar">
-        &lt;item name="android:titleTextStyle">&#64;style/MyActionBarTitleText&lt;/item>
-    &lt;/style>
-
-    &lt;!-- ActionBar title text -->
-    &lt;style name="MyActionBarTitleText"
-           parent="&#64;style/TextAppearance.Holo.Widget.ActionBar.Title">
-        &lt;item name="android:textColor">&#64;color/actionbar_text&lt;/item>
-    &lt;/style>
-
-    &lt;!-- ActionBar tabs text styles -->
-    &lt;style name="MyActionBarTabText"
-           parent="&#64;style/Widget.Holo.ActionBar.TabText">
-        &lt;item name="android:textColor">&#64;color/actionbar_text&lt;/item>
-    &lt;/style>
-&lt;/resources>
-</pre>
-
-
-
-
-<h3 id="CustomText7">For Android 2.1 and higher</h3>
-
-<p>When using the Support Library, your style XML file might look like this:</p>
-
-<p class="code-caption">res/values/themes.xml</p>
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;resources>
-    &lt;!-- the theme applied to the application or activity -->
-    &lt;style name="CustomActionBarTheme"
-           parent="&#64;style/Theme.<strong>AppCompat</strong>">
-        &lt;item name="android:actionBarStyle">&#64;style/MyActionBar&lt;/item>
-        &lt;item name="android:actionBarTabTextStyle">&#64;style/MyActionBarTabText&lt;/item>
-        &lt;item name="android:actionMenuTextColor">&#64;color/actionbar_text&lt;/item>
-
-        &lt;!-- Support library compatibility -->
-        &lt;item name="actionBarStyle">&#64;style/MyActionBar&lt;/item>
-        &lt;item name="actionBarTabTextStyle">&#64;style/MyActionBarTabText&lt;/item>
-        &lt;item name="actionMenuTextColor">&#64;color/actionbar_text&lt;/item>
-    &lt;/style>
-
-    &lt;!-- ActionBar styles -->
-    &lt;style name="MyActionBar"
-           parent="&#64;style/Widget.<strong>AppCompat</strong>.ActionBar">
-        &lt;item name="android:titleTextStyle">&#64;style/MyActionBarTitleText&lt;/item>
-
-        &lt;!-- Support library compatibility -->
-        &lt;item name="titleTextStyle">&#64;style/MyActionBarTitleText&lt;/item>
-    &lt;/style>
-
-    &lt;!-- ActionBar title text -->
-    &lt;style name="MyActionBarTitleText"
-           parent="&#64;style/TextAppearance.<strong>AppCompat</strong>.Widget.ActionBar.Title">
-        &lt;item name="android:textColor">&#64;color/actionbar_text&lt;/item>
-        &lt;!-- The textColor property is backward compatible with the Support Library -->
-    &lt;/style>
-
-    &lt;!-- ActionBar tabs text -->
-    &lt;style name="MyActionBarTabText"
-           parent="&#64;style/Widget.<strong>AppCompat</strong>.ActionBar.TabText">
-        &lt;item name="android:textColor">&#64;color/actionbar_text&lt;/item>
-        &lt;!-- The textColor property is backward compatible with the Support Library -->
-    &lt;/style>
-&lt;/resources>
-</pre>
-
-
-
-
-
-
-<h2 id="CustomTabs">Customize the Tab Indicator</h2>
-
-<div class="figure" style="width:340px">
-  <img src="{@docRoot}images/training/basics/actionbar-theme-custom-tabs@2x.png" width="340" alt="" />
-</div>
-
-<p>To change the indicator used for the <a
-href="{@docRoot}guide/topics/ui/actionbar.html#Tabs">navigation tabs</a>,
-create an activity theme that overrides the
-{@link android.R.attr#actionBarTabStyle} property. This property points to another style
-resource in which you override the {@link android.R.attr#background} property that should specify
-a state-list drawable.</p>
-
-<p class="note"><strong>Note:</strong> A state-list drawable is important so that the tab currently
-selected indicates its state with a background different than the other tabs. For more information
-about how to create a drawable resource that handles multiple button states, read the
-<a href="{@docRoot}guide/topics/resources/drawable-resource.html#StateList">State List</a>
-documentation.</p>
-
-<p>For example, here's a state-list drawable that declares a specific background image
-for several different states of an action bar tab:</p>
-
-<p class="code-caption">res/drawable/actionbar_tab_indicator.xml</p>
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;selector xmlns:android="http://schemas.android.com/apk/res/android">
-
-&lt;!-- STATES WHEN BUTTON IS NOT PRESSED -->
-
-    &lt;!-- Non focused states -->
-    &lt;item android:state_focused="false" android:state_selected="false"
-          android:state_pressed="false"
-          android:drawable="&#64;drawable/tab_unselected" />
-    &lt;item android:state_focused="false" android:state_selected="true"
-          android:state_pressed="false"
-          android:drawable="&#64;drawable/tab_selected" />
-
-    &lt;!-- Focused states (such as when focused with a d-pad or mouse hover) -->
-    &lt;item android:state_focused="true" android:state_selected="false"
-          android:state_pressed="false"
-          android:drawable="&#64;drawable/tab_unselected_focused" />
-    &lt;item android:state_focused="true" android:state_selected="true"
-          android:state_pressed="false"
-          android:drawable="&#64;drawable/tab_selected_focused" />
-
-
-&lt;!-- STATES WHEN BUTTON IS PRESSED -->
-
-    &lt;!-- Non focused states -->
-    &lt;item android:state_focused="false" android:state_selected="false"
-          android:state_pressed="true"
-          android:drawable="&#64;drawable/tab_unselected_pressed" />
-    &lt;item android:state_focused="false" android:state_selected="true"
-        android:state_pressed="true"
-        android:drawable="&#64;drawable/tab_selected_pressed" />
-
-    &lt;!-- Focused states (such as when focused with a d-pad or mouse hover) -->
-    &lt;item android:state_focused="true" android:state_selected="false"
-          android:state_pressed="true"
-          android:drawable="&#64;drawable/tab_unselected_pressed" />
-    &lt;item android:state_focused="true" android:state_selected="true"
-          android:state_pressed="true"
-          android:drawable="&#64;drawable/tab_selected_pressed" />
-&lt;/selector>
-</pre>
-
-
-
-<h3 id="CustomTabs11">For Android 3.0 and higher only</h3>
-
-<p>When supporting Android 3.0 and higher only, your style XML file might look like this:</p>
-
-<p class="code-caption">res/values/themes.xml</p>
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;resources>
-    &lt;!-- the theme applied to the application or activity -->
-    &lt;style name="CustomActionBarTheme"
-           parent="&#64;style/Theme.Holo">
-        &lt;item name="android:actionBarTabStyle">&#64;style/MyActionBarTabs&lt;/item>
-    &lt;/style>
-
-    &lt;!-- ActionBar tabs styles -->
-    &lt;style name="MyActionBarTabs"
-           parent="&#64;style/Widget.Holo.ActionBar.TabView">
-        &lt;!-- tab indicator -->
-        &lt;item name="android:background">&#64;drawable/actionbar_tab_indicator&lt;/item>
-    &lt;/style>
-&lt;/resources>
-</pre>
-
-
-
-<h3 id="CustomTabs7">For Android 2.1 and higher</h3>
-
-<p>When using the Support Library, your style XML file might look like this:</p>
-
-<p class="code-caption">res/values/themes.xml</p>
-<pre>
-&lt;?xml version="1.0" encoding="utf-8"?>
-&lt;resources>
-    &lt;!-- the theme applied to the application or activity -->
-    &lt;style name="CustomActionBarTheme"
-           parent="&#64;style/Theme.<strong>AppCompat</strong>">
-        &lt;item name="android:actionBarTabStyle">&#64;style/MyActionBarTabs&lt;/item>
-
-        &lt;!-- Support library compatibility -->
-        &lt;item name="actionBarTabStyle">&#64;style/MyActionBarTabs&lt;/item>
-    &lt;/style>
-
-    &lt;!-- ActionBar tabs styles -->
-    &lt;style name="MyActionBarTabs"
-           parent="&#64;style/Widget.<strong>AppCompat</strong>.ActionBar.TabView">
-        &lt;!-- tab indicator -->
-        &lt;item name="android:background">&#64;drawable/actionbar_tab_indicator&lt;/item>
-
-        &lt;!-- Support library compatibility -->
-        &lt;item name="background">&#64;drawable/actionbar_tab_indicator&lt;/item>
-    &lt;/style>
-&lt;/resources>
-</pre>
-
-<div class="note"><p><strong>More resources</strong></p>
-<ul>
-  <li>See more style properties for the action bar are listed in the <a
-  href="{@docRoot}guide/topics/ui/actionbar.html#Style">Action Bar</a> guide.</li>
-  <li>Learn more about how themes work in the <a
-  href="{@docRoot}guide/topics/ui/themes.html">Styles and Themes</a> guide.</li>
-  <li>For even more complete styling for the action bar,
-try the <a class="external-link" target="_blank"
-  href="http://www.actionbarstylegenerator.com">Android Action Bar Style
-  Generator</a>.</li>
-</ul>
-</div>
\ No newline at end of file
diff --git a/docs/html/training/basics/activity-lifecycle/pausing.jd b/docs/html/training/basics/activity-lifecycle/pausing.jd
index de2c92a..223e41a 100644
--- a/docs/html/training/basics/activity-lifecycle/pausing.jd
+++ b/docs/html/training/basics/activity-lifecycle/pausing.jd
@@ -86,7 +86,7 @@
     // Release the Camera because we don't need it when paused
     // and other activities might need to use it.
     if (mCamera != null) {
-        mCamera.release()
+        mCamera.release();
         mCamera = null;
     }
 }
diff --git a/docs/html/training/basics/firstapp/building-ui.jd b/docs/html/training/basics/firstapp/building-ui.jd
index dcf3a16..402396e 100644
--- a/docs/html/training/basics/firstapp/building-ui.jd
+++ b/docs/html/training/basics/firstapp/building-ui.jd
@@ -71,10 +71,10 @@
 <h2 id="LinearLayout">Create a Linear Layout</h2>
 
 <ol>
-<li>In Android Studio, from the <code>res/layout</code> directory, open the <code>activity_my.xml</code>
+<li>In Android Studio, from the <code>res/layout</code> directory, open the {@code content_my.xml}
 file.
 <p>The BlankActivity template you chose when you created this project includes the
-<code>activity_my.xml</code> file with a {@link android.widget.RelativeLayout} root view and a
+<code>content_my.xml</code> file with a {@link android.widget.RelativeLayout} root view and a
 {@link android.widget.TextView} child view.</p>
 </li>
 <li>In the <strong>Preview</strong> pane, click the Hide icon <img src="{@docRoot}images/tools/as-hide-side.png"
@@ -90,16 +90,17 @@
 <li>Remove the {@code android:padding} attributes and the {@code tools:context} attribute.
 </ol>
 
-</p>The result looks like this:</p>
+<p>The result looks like this:</p>
 
-<p class="code-caption">res/layout/activity_my.xml</p>
 <pre>
 &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
+    android:orientation="horizontal"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:orientation="horizontal" >
-&lt;/LinearLayout>
+    app:layout_behavior="@string/appbar_scrolling_view_behavior"
+    tools:showIn="@layout/activity_my"&gt;
 </pre>
 
 <p>{@link android.widget.LinearLayout} is a view group (a subclass of {@link
@@ -131,7 +132,7 @@
 the {@link android.widget.EditText} object's properties.</p>
 
 <ol>
-<li>In the <code>activity_my.xml</code> file, within the
+<li>In the <code>content_my.xml</code> file, within the
 {@link android.widget.LinearLayout &lt;LinearLayout>} element, define an
 {@link android.widget.EditText &lt;EditText>} element with the <code>id</code> attribute
 set to <code>@+id/edit_message</code>.</li>
@@ -142,7 +143,6 @@
 
 <p>The {@link android.widget.EditText &lt;EditText>} element should read as follows:</p>
 
-<p class="code-caption">res/layout/activity_my.xml</p>
 <pre>
 &lt;EditText android:id="@+id/edit_message"
     android:layout_width="wrap_content"
@@ -232,12 +232,10 @@
 <li>Add a line for a string named <code>"button_send"</code> with the value, "Send".
 <p>You'll create the button that uses this string in the next section.</p>
 </li>
-<li>Remove the line for the <code>"hello world"</code> string.</li>
 </ol>
 
 <p>The result for <code>strings.xml</code> looks like this:</p>
 
-<p class="code-caption">res/values/strings.xml</p>
 <pre>
 &lt;?xml version="1.0" encoding="utf-8"?>
 &lt;resources>
@@ -245,7 +243,6 @@
     &lt;string name="edit_message">Enter a message&lt;/string>
     &lt;string name="button_send">Send&lt;/string>
     &lt;string name="action_settings">Settings&lt;/string>
-    &lt;string name="title_activity_main">MainActivity&lt;/string>
 &lt;/resources>
 </pre>
 
@@ -264,7 +261,7 @@
 <h2 id="Button">Add a Button</h2>
 
 <ol>
-<li>In Android Studio, from the <code>res/layout</code> directory, edit the <code>activity_my.xml</code>
+<li>In Android Studio, from the <code>res/layout</code> directory, edit the <code>content_my.xml</code>
 file.</li>
 <li>Within the
 {@link android.widget.LinearLayout &lt;LinearLayout>} element, define a
@@ -280,21 +277,23 @@
 
 <p>Your {@link android.widget.LinearLayout &lt;LinearLayout>} should look like this:</p>
 
-<p class="code-caption">res/layout/activity_my.xml</p>
 <pre>
 &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
+    android:orientation="horizontal"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:orientation="horizontal" &gt;
-      &lt;EditText android:id="@+id/edit_message"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:hint="@string/edit_message" /&gt;
-      &lt;Button
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/button_send" /&gt;
+    app:layout_behavior="@string/appbar_scrolling_view_behavior"
+    tools:showIn="@layout/activity_my"&gt;
+        &lt;EditText android:id="@+id/edit_message"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content"
+          android:hint="@string/edit_message" /&gt;
+        &lt;Button
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content"
+          android:text="@string/button_send" /&gt;
 &lt;/LinearLayout&gt;
 </pre>
 
@@ -303,8 +302,8 @@
 attribute, because it won't be referenced from the activity code.</p>
 
 <p>The layout is currently designed so that both the {@link android.widget.EditText} and {@link
-android.widget.Button} widgets are only as big as necessary to fit their content, as shown in
-figure 2.</p>
+android.widget.Button} widgets are only as big as necessary to fit their content, as Figure 2 shows.
+</p>
 
 <img src="{@docRoot}images/training/firstapp/edittext_wrap.png" />
 <p class="img-caption"><strong>Figure 2.</strong> The {@link android.widget.EditText} and {@link
@@ -339,13 +338,12 @@
 the following:</p>
 
 <ol>
-<li>In the <code>activity_my.xml</code> file, assign the
+<li>In the <code>content_my.xml</code> file, assign the
 {@link android.widget.EditText &lt;EditText>} element's <code>layout_weight</code> attribute a value
 of <code>1</code>.</li>
 <li>Also, assign {@link android.widget.EditText &lt;EditText>} element's <code>layout_width</code>
 attribute a value of <code>0dp</code>.
 
-<p class="code-caption">res/layout/activity_my.xml</p>
 <pre>
 &lt;EditText
     android:layout_weight="1"
@@ -371,16 +369,18 @@
 </li>
 </ol>
 
-<p>Here’s how your complete <code>activity_my.xml</code>layout file should now look:</p>
+<p>Here’s how your complete <code>content_my.xml</code>layout file should now look:</p>
 
-<p class="code-caption">res/layout/activity_my.xml</p>
 <pre>
 &lt;?xml version="1.0" encoding="utf-8"?>
 &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="horizontal">
+   xmlns:app="http://schemas.android.com/apk/res-auto"
+   xmlns:tools="http://schemas.android.com/tools"
+   android:orientation="horizontal"
+   android:layout_width="match_parent"
+   android:layout_height="match_parent"
+   app:layout_behavior="@string/appbar_scrolling_view_behavior"
+   tools:showIn="@layout/activity_my"&gt;
     &lt;EditText android:id="@+id/edit_message"
         android:layout_weight="1"
         android:layout_width="0dp"
@@ -405,9 +405,9 @@
     style="vertical-align:baseline;margin:0; max-height:1em" />.</li>
   <li>Or from a command line, change directories to the root of your Android project and
 execute:
-<pre>
-ant debug
-adb install bin/MyFirstApp-debug.apk
+<pre class="no-pretty-print">
+$ ant debug
+adb install -r app/build/outputs/apk/app-debug.apk
 </pre></li>
 </ul>
 
diff --git a/docs/html/training/basics/firstapp/creating-project.jd b/docs/html/training/basics/firstapp/creating-project.jd
index 4bd92ee..57118ce 100644
--- a/docs/html/training/basics/firstapp/creating-project.jd
+++ b/docs/html/training/basics/firstapp/creating-project.jd
@@ -18,7 +18,6 @@
 
 <ol>
   <li><a href="#Studio">Create a Project with Android Studio</a></li>
-  <li><a href="#CommandLine">Create a Project with Command Line Tools</a></li>
 </ol>
 
 <h2>You should also read</h2>
@@ -53,16 +52,11 @@
       <li>If you don't have a project opened, in the <strong>Welcome</strong> screen, click <strong>
         New Project</strong>.</li>
       <li>If you have a project opened, from the <strong>File</strong> menu, select <strong>New
-        Project</strong>.</li>
+        Project</strong>. The <em>Create New Project</em> screen appears.</li>
     </ul>
   </li>
-  <div class="figure" style="width:420px">
-    <img src="{@docRoot}images/training/firstapp/studio-setup-1.png" alt="" />
-    <p class="img-caption"><strong>Figure 1.</strong> Configuring a new project in Android Studio.</p>
-  </div>
-  <li>Under <strong>Configure your new project</strong>, fill in the fields as shown in figure 1
-    and click <strong>Next</strong>.
-    <p>It will probably be easier to follow these lessons if you use the same values as shown.</p>
+  <li>Fill out the fields on the screen, and click <strong>Next</strong>.
+    <p>It is easier to follow these lessons if you use the same values as shown.</p>
     <ul>
       <li><strong>Application Name</strong> is the app name that appears to users.
           For this project, use "My First App."</li>
@@ -102,10 +96,10 @@
   </div>
   <li>Under <strong>Add an activity to &lt;<em>template</em>&gt;</strong>, select <strong>Blank
     Activity</strong> and click <strong>Next</strong>.</li>
-  <li>Under <strong>Choose options for your new file</strong>, change the
+  <li>Under <strong>Customize the Activity</strong>, change the
     <strong>Activity Name</strong> to <em>MyActivity</em>. The <strong>Layout Name</strong> changes
     to <em>activity_my</em>, and the <strong>Title</strong> to <em>MyActivity</em>. The
-    <strong>Menu Resource Name</strong> is <em>menu_my</em>. 
+    <strong>Menu Resource Name</strong> is <em>menu_my</em>.
    <li>Click the <strong>Finish</strong> button to create the project.</li>
 </ol>
 
@@ -114,10 +108,18 @@
 
 <dl>
   <dt><code>app/src/main/res/layout/activity_my.xml</code></dt>
-  <dd>This is the XML layout file for the activity you added when you created the project with Android
-    Studio. Following the New Project workflow, Android Studio presents this file with both a text
-    view and a preview of the screen UI. The file includes some default settings and a <code>TextView</code>
-    element that displays the message, "Hello world!"</dd>
+  <dd>This XML layout file is for the activity you added when you created the project
+  with Android Studio. Following the New Project workflow, Android Studio presents this file
+  with both a text
+    view and a preview of the screen UI. The file contains some default interface elements
+    from the material design library, including the
+    <a href="{@docRoot}training/appbar/index.html">app bar</a> and a floating action button.
+    It also includes a separate layout file with the main content.</dd>
+
+  <dt><code>app/src/main/res/layout/content_my.xml</code></dt>
+  <dd>This XML layout file resides in {@code activity_my.xml}, and contains some settings and
+  a {@code TextView} element that displays the message, "Hello world!".</dd>
+
   <dt><code>app/src/main/java/com.mycompany.myfirstapp/MyActivity.java</code></dt>
   <dd>A tab for this file appears in Android Studio when the New Project workflow finishes. When you
     select the file you see the class definition for the activity you created. When you build and
@@ -159,59 +161,24 @@
 <p>Note also the <code>/res</code> subdirectories that contain the
 <a href="{@docRoot}guide/topics/resources/overview.html">resources</a> for your application:</p>
 <dl>
-  <dt><code>drawable<em>&lt;density&gt;</em>/</code></dt>
-    <dd>Directories for drawable objects (such as bitmaps) that are designed for various densities,
-    such as medium-density (mdpi) and high-density (hdpi) screens. Other drawable directories
-    contain assets designed for other screen densities.
-    Here you'll find the ic_launcher.png that appears when you run the default app.</dd>
+  <dt><code>drawable<em>-&lt;density&gt;</em>/</code></dt>
+    <dd>Directories for <a href="{@docRoot}guide/topics/resources/drawable-resource.html">
+    drawable resources</a>, other than launcher icons, designed
+    for various <a href="{@docRoot}training/multiscreen/screendensities.html">densities</a>.
+</dd>
   <dt><code>layout/</code></dt>
-    <dd>Directory for files that define your app's user interface like activity_my.xml,
-      discussed above, which describes a basic layout for the MyActivity class.</dd>
+    <dd>Directory for files that define your app's user interface like {@code activity_my.xml},
+      discussed above, which describes a basic layout for the {@code MyActivity}
+      class.</dd>
   <dt><code>menu/</code></dt>
     <dd>Directory for files that define your app's menu items.</dd>
+  <dt><code>mipmap/</code></dt>
+    <dd>Launcher icons reside in the {@code mipmap/} folder rather than the
+    {@code drawable/} folders. This folder contains the {@code ic_launcher.png} image
+    that appears when you run the default app.</dd>
   <dt><code>values/</code></dt>
     <dd>Directory for other XML files that contain a collection of resources, such as
-      string and color definitions. The strings.xml file defines the "Hello world!" string that
-      displays when you run the default app.</dd>
+      string and color definitions.</dd>
 </dl>
 
 <p>To run the app, continue to the <a href="running-app.html">next lesson</a>.</p>
-
-<h2 id="CommandLine">Create a Project with Command Line Tools</h2>
-
-<p>If you're not using the Android Studio IDE, you can instead create your project
-using the SDK tools from a command line:</p>
-
-<ol>
-  <li>Change directories into the Android SDK’s <code>sdk/</code> path.</li>
-  <li>Execute:
-<pre class="no-pretty-print">tools/android list targets</pre>
-<p>This prints a list of the available Android platforms that you’ve downloaded for your SDK. Find
-the platform against which you want to compile your app. Make a note of the target ID. We
-recommend that you select the highest version possible. You can still build your app to
-support older versions, but setting the build target to the latest version allows you to optimize
-your app for the latest devices.</p>
-<p>If you don't see any targets listed, you need to
-install some using the Android SDK
-Manager tool. See <a href="{@docRoot}sdk/installing/adding-packages.html">Adding SDK
-  Packages</a>.</p></li>
-  <li>Execute:
-<pre class="no-pretty-print">
-android create project --target &lt;target-id> --name MyFirstApp \
---path &lt;path-to-workspace>/MyFirstApp --activity MyActivity \
---package com.example.myfirstapp
-</pre>
-<p>Replace <code>&lt;target-id></code> with an ID from the list of targets (from the previous step)
-and replace
-<code>&lt;path-to-workspace></code> with the location in which you want to save your Android
-projects.</p></li>
-</ol>
-
-<p class="note"><strong>Tip:</strong> Add the <code>platform-tools/</code> as well as the
-<code>tools/</code> directory to your <code>PATH</code> environment variable.</p>
-
-<p>Your Android project is now a basic "Hello World" app that contains some default files.
-To run the app, continue to the <a href="running-app.html">next lesson</a>.</p>
-
-
-
diff --git a/docs/html/training/basics/firstapp/running-app.jd b/docs/html/training/basics/firstapp/running-app.jd
old mode 100644
new mode 100755
index 6e4605f..99b38bf
--- a/docs/html/training/basics/firstapp/running-app.jd
+++ b/docs/html/training/basics/firstapp/running-app.jd
@@ -54,17 +54,12 @@
     If you're developing on Windows, you might need to install the appropriate USB driver for your
     device. For help installing drivers, see the <a href="{@docRoot}tools/extras/oem-usb.html">OEM
     USB Drivers</a> document.</li>
-  <li>Enable <strong>USB debugging</strong> on your device.
-    <ul>
-      <li>On most devices running Android 3.2 or older, you can find the option under
-        <strong>Settings > Applications > Development</strong>.</li>
-      <li>On Android 4.0 and newer, it's in <strong>Settings > Developer options</strong>.
+  <li>Enable <strong>USB debugging</strong> on your device. On Android 4.0 and newer, go to
+    <strong>Settings > Developer options</strong>.
         <p class="note"><strong>Note:</strong> On Android 4.2 and newer, <strong>Developer
         options</strong> is hidden by default. To make it available, go
         to <strong>Settings > About phone</strong> and tap <strong>Build number</strong>
         seven times. Return to the previous screen to find <strong>Developer options</strong>.</p>
-      </li>
-    </ul>
   </li>
 </ol>
 
@@ -88,7 +83,7 @@
   using the Gradle wrapper script (<code>gradlew assembleRelease</code>).
 
   <p>This creates your debug <code>.apk</code> file inside the module <code>build/</code>
-  directory, named <code>MyFirstApp-debug.apk</code>.  </p>
+  directory, named <code>app-debug.apk</code>.  </p>
 
   <p>On Windows platforms, type this command:</p>
 
@@ -112,7 +107,7 @@
 
   <p>Make sure the Android SDK <code>platform-tools/</code> directory is included in your
   <code>PATH</code> environment variable, then execute:
-  <pre class="no-pretty-print">adb install app/build/outputs/MyFirstApp-debug.apk</pre><p>
+  <pre class="no-pretty-print">$ adb install app/build/outputs/apk/app-debug.apk</pre><p>
   <p>On your device, locate <em>MyFirstApp</em> and open it.</p>
 
 <p>That's how you build and run your Android app on a device!
@@ -134,7 +129,9 @@
   <li>Launch the Android Virtual Device Manager:
     <ul>
       <li>In Android Studio, select <strong>Tools &gt; Android &gt; AVD Manager</strong>, or click
-  the AVD Manager icon <img src="{@docRoot}images/tools/avd-manager-studio.png" style="vertical-align:bottom;margin:0;height:19px"> in the toolbar.</li>
+  the AVD Manager icon <img src="{@docRoot}images/tools/avd-manager-studio.png"
+  style="vertical-align:bottom;margin:0;height:19px"> in the toolbar. The
+  <em>AVD Manager</em> screen appears.</li>
       <li>Or, from the command line, change directories to
       <code>sdk/</code> and execute:
         <pre class="no-pretty-print">tools/android avd</pre>
@@ -144,12 +141,8 @@
         </li>
     </ul>
 
-  <img src="{@docRoot}images/studio-avdmgr-firstscreen.png" alt=""
-  style="margin-top:1em">
-  <p class="img-caption"><strong>Figure 1.</strong> The AVD Manager main screen shows your current virtual devices.</p>
-
   </li>
-  <li>On the AVD Manager main screen (figure 1), click <strong>Create Virtual Device</strong>.</li>
+  <li>On the AVD Manager main screen, click <strong>Create Virtual Device</strong>.</li>
   <li>In the Select Hardware window, select a device configuration, such as Nexus 6,
   then click <strong>Next</strong>.
   </li>
@@ -183,8 +176,8 @@
   <code>PATH</code> environment variable.</li>
   <li>Execute this command:
    <p>
-   <pre class="no-pretty-print">adb install app/build/outputs/MyFirstApp-debug.apk</pre>
-   </p> 
+   <pre class="no-pretty-print">$ adb install app/build/outputs/apk/apk-debug.apk</pre>
+   </p>
   </li>
   <li>On the emulator, locate <em>MyFirstApp</em> and open it.</li>
  </ol>
diff --git a/docs/html/training/basics/firstapp/starting-activity.jd b/docs/html/training/basics/firstapp/starting-activity.jd
index 4f43ea0..69cf6f8 100644
--- a/docs/html/training/basics/firstapp/starting-activity.jd
+++ b/docs/html/training/basics/firstapp/starting-activity.jd
@@ -47,13 +47,13 @@
 <h2 id="RespondToButton">Respond to the Send Button</h2>
 
 <ol>
-<li>In Android Studio, from the <code>res/layout</code> directory, edit the <code>activity_my.xml</code>
+<li>In Android Studio, from the <code>res/layout</code> directory, edit the <code>content_my.xml</code>
 file.</li>
-<li>To the {@link android.widget.Button &lt;Button>} element, add the <a
+<li>Add the <a
 href="{@docRoot}reference/android/view/View.html#attr_android:onClick">{@code android:onClick}</a>
-attribute.
+attribute to the {@link android.widget.Button &lt;Button&gt;} element.
 
-<p class="code-caption">res/layout/activity_my.xml</p>
+<p class="code-caption">res/layout/content_my.xml</p>
 <pre>
 &lt;Button
     android:layout_width="wrap_content"
@@ -199,7 +199,7 @@
 follows:
 <p class="code-caption">java/com.mycompany.myfirstapp/MyActivity.java</p>
 <pre>
-public class MyActivity extends ActionBarActivity {
+public class MyActivity extends AppCompatActivity {
     public final static String EXTRA_MESSAGE = "com.mycompany.myfirstapp.MESSAGE";
     ...
 }
@@ -253,13 +253,9 @@
 
 <h3>Create a new activity using Android Studio</h3>
 
-<div class="figure" style="width:400px">
-<img src="{@docRoot}images/training/firstapp/studio-new-activity.png" alt="" />
-<p class="img-caption"><strong>Figure 1.</strong> The new activity wizard in Android Studio.</p>
-</div>
-
 <p>Android Studio includes a stub for the
-{@link android.app.Activity#onCreate onCreate()} method when you create a new activity.</p>
+{@link android.app.Activity#onCreate onCreate()} method when you create a new activity. The
+<em>New Android Activity</em> window appears.</p>
 
 <ol>
   <li>In Android Studio, in the <code>java</code> directory, select the package,
@@ -279,10 +275,8 @@
 <li>Open the {@code DisplayMessageActivity.java} file.
 
 <p>The class already includes an implementation of the required
-{@link android.app.Activity#onCreate onCreate()} method. You will update the implementation of this
-method later. It also includes an implementation of
-{@link android.app.Activity#onOptionsItemSelected onOptionsItemSelected()}, which handles the action
-bar's <em>Up</em> behavior. Keep these two methods as they are for now.</p>
+{@link android.app.Activity#onCreate onCreate()} method. You update the implementation of this
+method later.</p>
 
 <!-- Android Studio does not create a Fragment placeholder
 <p>Also, the file includes a <code>PlaceholderFragment</code> class that extends
@@ -294,10 +288,6 @@
 </p>
 -->
 </li>
-
-<li> Remove the {@link android.app.Activity#onCreateOptionsMenu onCreateOptionsMenu()} method.
-<p>You won't need it for this app.</p>
-</li>
 </ol>
 
 <!-- Not needed for Android Studio
@@ -322,7 +312,7 @@
 <li>Add the following code to the file:
 
 <pre>
-public class DisplayMessageActivity extends ActionBarActivity {
+public class DisplayMessageActivity extends AppCompatActivity {
 
     &#64;Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -337,8 +327,8 @@
 
     &#64;Override
     public boolean onOptionsItemSelected(MenuItem item) {
-        // Handle action bar item clicks here. The action bar will
-        // automatically handle clicks on the Home/Up button, so long
+        // Handle app bar item clicks here. The app bar
+        // automatically handles clicks on the Home/Up button, so long
         // as you specify a parent activity in AndroidManifest.xml.
         int id = item.getItemId();
         if (id == R.id.action_settings) {
@@ -437,10 +427,6 @@
 <ol>
 <li>In the <code>java/com.mycompany.myfirstapp</code> directory, edit the
   {@code DisplayMessageActivity.java} file.</li>
-<li>In the {@link android.app.Activity#onCreate onCreate()} method, remove the following line:
-<pre>
-  setContentView(R.layout.activity_display_message);
-</pre>
 <li>Get the intent and assign it to a local variable.
 <pre>
 Intent intent = getIntent();
@@ -460,6 +446,19 @@
 <h2 id="DisplayMessage">Display the Message</h2>
 
 <ol>
+<li>In the res/layout directory, edit the {@code content_display_message.xml} file.</li>
+<li>Add an {@code android:id} attribute to the {@code RelativeLayout}.
+You need this attribute to reference the object from your app code.</li>
+
+<pre>
+&lt; RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+...
+android:id="@+id/content"&gt;
+&lt;/RelativeLayout&gt;
+</pre>
+<li>Switch back to editing {@code DisplayMessageActivity.java}.</li>
+
+
 <li>In the {@link android.app.Activity#onCreate onCreate()} method, create a {@link android.widget.TextView} object.
 <pre>
 TextView textView = new TextView(this);
@@ -471,10 +470,11 @@
 textView.setText(message);
 </pre>
 </li>
-<li>Then add the {@link android.widget.TextView} as the root view of the activity’s layout by
-passing it to {@link android.app.Activity#setContentView setContentView()}.
+<li>Add the {@link android.widget.TextView} to the {@link android.widget.RelativeLayout}
+identified by {@code R.id.content}.
 <pre>
-setContentView(textView);
+RelativeLayout layout = (RelativeLayout) findViewById(R.id.content);
+layout.addView(textView);
 </pre>
 </li>
 <li>At the top of the file, import the {@link android.widget.TextView} class.
@@ -487,29 +487,36 @@
 
 <pre>
 &#64;Override
-public void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
+protected void onCreate(Bundle savedInstanceState) {
+   super.onCreate(savedInstanceState);
+   setContentView(R.layout.activity_display_message);
+   Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+   setSupportActionBar(toolbar);
 
-    // Get the message from the intent
-    Intent intent = getIntent();
-    String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);
+   FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
+   fab.setOnClickListener(new View.OnClickListener() {
+       &#64;Override
+       public void onClick(View view) {
+           Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
+                   .setAction("Action", null)
+                   .show();
+       }
+   });
+   getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 
-    // Create the text view
-    TextView textView = new TextView(this);
-    textView.setTextSize(40);
-    textView.setText(message);
+   Intent intent = getIntent();
+   String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);
+   TextView textView = new TextView(this);
+   textView.setTextSize(40);
+   textView.setText(message);
 
-    // Set the text view as the activity layout
-    setContentView(textView);
-}
+   RelativeLayout layout = (RelativeLayout) findViewById(R.id.content);
+   layout.addView(textView);
 </pre>
 
-<p>You can now run the app. When it opens, type a message in the text field, click Send,
-  and the message appears on the second activity.</p>
-
-<img src="{@docRoot}images/training/firstapp/firstapp.png" />
-<p class="img-caption"><strong>Figure 2.</strong> Both activities in the final app, running
-on Android 4.4.
+<p>You can now run the app. When it opens, type a message in the text field, and click
+<strong>Send</strong>. The second activity replaces the first one on the screen, showing
+the message you entered in the first activity.</p>
 
 <p>That's it, you've built your first Android app!</p>
 
diff --git a/docs/html/training/basics/fragments/creating.jd b/docs/html/training/basics/fragments/creating.jd
old mode 100644
new mode 100755
index 7afb149..49fb883
--- a/docs/html/training/basics/fragments/creating.jd
+++ b/docs/html/training/basics/fragments/creating.jd
@@ -38,18 +38,11 @@
 href="{@docRoot}tools/support-library/index.html">Support Library</a> so your app
 remains compatible with devices running system versions as low as Android 1.6.</p>
 
-<p class="note"><strong>Note:</strong> If you decide that the minimum
-API level your app requires is 11 or higher, you don't need to use the Support
-Library and can instead use the framework's built in {@link android.app.Fragment} class and related
-APIs. Just be aware that this lesson is focused on using the APIs from the Support Library, which
-use a specific package signature and sometimes slightly different API names than the versions
-included in the platform.</p>
-
 <p>Before you begin this lesson, you must set up your Android project to use the Support Library.
 If you have not used the Support Library before, set up your project to use the <strong>v4</strong>
 library by following the <a href="{@docRoot}tools/support-library/setup.html">Support Library
 Setup</a> document. However, you can also include the <a href=
-"{@docRoot}guide/topics/ui/actionbar.html">action bar</a> in your activities by instead using the
+"{@docRoot}training/appbar/index.html">app bar</a> in your activities by instead using the
 <strong>v7 appcompat</strong> library, which is compatible with Android 2.1 (API level 7)
 and also includes the {@link android.support.v4.app.Fragment} APIs.</p>
 
@@ -152,9 +145,9 @@
 
 <p>If you're using the <a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7
 appcompat library</a>, your activity should instead extend {@link
-android.support.v7.app.ActionBarActivity}, which is a subclass of {@link
-android.support.v4.app.FragmentActivity} (for more information,
-read <a href="{@docRoot}training/basics/actionbar/index.html">Adding the Action Bar</a>).</p>
+android.support.v7.app.AppCompatActivity}, which is a subclass of {@link
+android.support.v4.app.FragmentActivity}. For more information,
+read <a href="{@docRoot}training/appbar/index.html">Adding the App Bar</a>).</p>
 
 
 <p class="note"><strong>Note:</strong> When you add a fragment to an activity layout by defining
diff --git a/docs/html/training/basics/intents/filters.jd b/docs/html/training/basics/intents/filters.jd
index 0a6d401..833825f 100644
--- a/docs/html/training/basics/intents/filters.jd
+++ b/docs/html/training/basics/intents/filters.jd
@@ -197,7 +197,7 @@
 
 <pre>
 // Create intent to deliver some kind of result data
-Intent result = new Intent("com.example.RESULT_ACTION", Uri.parse("content://result_uri");
+Intent result = new Intent("com.example.RESULT_ACTION", Uri.parse("content://result_uri"));
 setResult(Activity.RESULT_OK, result);
 finish();
 </pre>
diff --git a/docs/html/training/basics/intents/result.jd b/docs/html/training/basics/intents/result.jd
old mode 100644
new mode 100755
index b521488..31d5a7c
--- a/docs/html/training/basics/intents/result.jd
+++ b/docs/html/training/basics/intents/result.jd
@@ -107,8 +107,8 @@
 <p>In order to successfully handle the result, you must understand what the format of the result
 {@link android.content.Intent} will be. Doing so is easy when the activity returning a result is
 one of your own activities. Apps included with the Android platform offer their own APIs that
-you can count on for specific result data. For instance, the People app (Contacts app on some older
-versions) always returns a result with the content URI that identifies the selected contact, and the
+you can count on for specific result data. For instance, the People app always returns a result
+with the content URI that identifies the selected contact, and the
 Camera app returns a {@link android.graphics.Bitmap} in the {@code "data"} extra (see the class
 about <a href="{@docRoot}training/camera/index.html">Capturing Photos</a>).</p>
 
diff --git a/docs/html/training/basics/intents/sending.jd b/docs/html/training/basics/intents/sending.jd
index b9463e4..233cf57 100644
--- a/docs/html/training/basics/intents/sending.jd
+++ b/docs/html/training/basics/intents/sending.jd
@@ -54,7 +54,7 @@
 one of several other data types, or the intent might not need data at all.</p>
 
 <p>If your data is a {@link android.net.Uri}, there's a simple {@link
-android.content.Intent#Intent(String,Uri) Intent()} constructor you can use define the action and
+android.content.Intent#Intent(String,Uri) Intent()} constructor you can use to define the action and
 data.</p>
 
 <p>For example, here's how to create an intent to initiate a phone call using the {@link
diff --git a/docs/html/training/basics/network-ops/connecting.jd b/docs/html/training/basics/network-ops/connecting.jd
index 0601480..798a9ee7 100644
--- a/docs/html/training/basics/network-ops/connecting.jd
+++ b/docs/html/training/basics/network-ops/connecting.jd
@@ -49,14 +49,10 @@
 
 <h2 id="http-client">Choose an HTTP Client</h2>
 
-<p>Most network-connected Android apps  use HTTP to send and receive  data.
-Android includes two HTTP clients: {@link java.net.HttpURLConnection} and the Apache HTTP client.
-Both support HTTPS, streaming uploads and downloads,  configurable
-timeouts, IPv6, and connection pooling. We recommend using {@link
-java.net.HttpURLConnection} for applications targeted at Gingerbread and higher. For
-more discussion of this topic, see the blog post <a
-href="http://android-developers.blogspot.com/2011/09/androids-http-clients.html"
->Android's HTTP Clients</a>.</p>
+<p>Most network-connected Android apps use HTTP to send and receive data. The
+Android platform includes the {@link java.net.HttpURLConnection} client, which
+supports HTTPS, streaming uploads and downloads, configurable timeouts,
+IPv6, and connection pooling.</p>
 
 <h2 id="connection">Check the Network Connection</h2>
 
diff --git a/docs/html/training/best-permissions-ids.jd b/docs/html/training/best-permissions-ids.jd
new file mode 100644
index 0000000..e98c095
--- /dev/null
+++ b/docs/html/training/best-permissions-ids.jd
@@ -0,0 +1,9 @@
+page.title=Best Practices for Permissions and Identifiers
+page.trainingcourse=true
+
+@jd:body
+
+
+
+<p>The articles below highlight key guidelines for using permissions
+and identifiers properly in your apps.</p>
\ No newline at end of file
diff --git a/docs/html/training/building-wearables.jd b/docs/html/training/building-wearables.jd
index c9e1856..9044928 100644
--- a/docs/html/training/building-wearables.jd
+++ b/docs/html/training/building-wearables.jd
@@ -12,3 +12,17 @@
 <p class="note"><strong>Note:</strong> For more information about the APIs used in these training
 classes, see the <a href="{@docRoot}reference/packages-wearable-support.html">Wear API reference
 documentation</a>.</p>
+
+<div class="wrap">
+  <div class="cols">
+    <div class="col-1of2">
+      <p>If you prefer to learn through interactive video training, check out this online course
+      about Android Wear Development.</p>
+      <p><a href="https://www.udacity.com/course/ud875A" class="button">
+        Start the video course</a>
+      </p>
+    </div>
+    <div class="col-1of2">
+      <iframe width="300" height="169" src="//www.youtube.com/embed/t2JaW-8WDok?utm_source=dac&utm_medium=video&utm_content=build_wear&utm_campaign=udacint?rel=0&amp;hd=1" frameborder="0" allowfullscreen></iframe>
+  </div>
+</div>
diff --git a/docs/html/training/cloudsync/backupapi.jd b/docs/html/training/cloudsync/backupapi.jd
deleted file mode 100644
index fd35ada..0000000
--- a/docs/html/training/cloudsync/backupapi.jd
+++ /dev/null
@@ -1,194 +0,0 @@
-page.title=Using the Backup API
-parent.title=Syncing to the Cloud
-parent.link=index.html
-
-trainingnavtop=true
-
-next.title=Making the Most of Google Cloud Messaging
-next.link=gcm.html
-
-@jd:body
-
-<div id="tb-wrapper">
-  <div id="tb">
-    <h2>This lesson teaches you to</h2>
-    <ol>
-      <li><a href="#register">Register for the Android Backup Service</a></li>
-      <li><a href="#manifest">Configure Your Manifest</a></li>
-      <li><a href="#agent">Write Your Backup Agent</a></li>
-      <li><a href="#backup">Request a Backup</a></li>
-      <li><a href="#restore">Restore from a Backup</a></li>
-    </ol>
-    <h2>You should also read</h2>
-    <ul>
-      <li><a
-        href="http://developer.android.com/guide/topics/data/backup.html">Data
-        Backup</a></li>
-    </ul>
-  </div>
-</div>
-
-<p>When a user purchases a new device or resets their existing one, they might
-expect that when Google Play restores your app back to their device during the
-initial setup, the previous data associated with the app restores as well.  By
-default, that doesn't happen and all the user's accomplishments or settings in
-your app are lost.</p>
-<p>For situations where the volume of data is relatively light (less than a
-megabyte), like the user's preferences, notes, game high scores or other
-stats, the Backup API provides a lightweight solution.  This lesson walks you
-through integrating the Backup API into your application, and restoring data to
-new devices using the Backup API.</p>
-
-<h2 id="register">Register for the Android Backup Service</h2>
-<p>This lesson requires the use of the <a
-  href="{@docRoot}google/backup/index.html">Android Backup
-  Service</a>, which requires registration.  Go ahead and <a
-  href="http://code.google.com/android/backup/signup.html">register here</a>.  Once
-that's done, the service pre-populates an XML tag for insertion in your Android
-Manifest, which looks like this:</p>
-<pre>
-&lt;meta-data android:name="com.google.android.backup.api_key"
-android:value="ABcDe1FGHij2KlmN3oPQRs4TUvW5xYZ" /&gt;
-</pre>
-<p>Note that each backup key works with a specific package name.  If you have
-different applications, register separate keys for each one.</p>
-
-
-<h2 id="manifest">Configure Your Manifest</h2>
-<p>Use of the Android Backup Service requires two additions to your application
-manifest.  First, declare the name of the class that acts as your backup agent,
-then add the snippet above as a child element of the Application tag.  Assuming
-your backup agent is going to be called {@code TheBackupAgent}, here's an example of
-what the manifest looks like with this tag included:</p>
-
-<pre>
-&lt;application android:label="MyApp"
-             android:backupAgent="TheBackupAgent"&gt;
-    ...
-    &lt;meta-data android:name="com.google.android.backup.api_key"
-    android:value="ABcDe1FGHij2KlmN3oPQRs4TUvW5xYZ" /&gt;
-    ...
-&lt;/application&gt;
-</pre>
-<h2 id="agent">Write Your Backup Agent</h2>
-<p>The easiest way to create your backup agent is by extending the wrapper class
-{@link android.app.backup.BackupAgentHelper}.  Creating this helper class is
-actually a very simple process.  Just create a class with the same name as you
-used in the manifest in the previous step (in this example, {@code
-TheBackupAgent}),
-and extend {@code BackupAgentHelper}.  Then override the {@link
-android.app.backup.BackupAgent#onCreate()}.</p>
-
-<p>Inside the {@link android.app.backup.BackupAgent#onCreate()} method, create a {@link
-android.app.backup.BackupHelper}.  These helpers are
-specialized classes for backing up certain kinds of data.  The Android framework
-currently includes two such helpers:  {@link
-android.app.backup.FileBackupHelper} and {@link
-android.app.backup.SharedPreferencesBackupHelper}.  After you create the helper
-and point it at the data you want to back up, just add it to the
-BackupAgentHelper using the {@link android.app.backup.BackupAgentHelper#addHelper(String, BackupHelper) addHelper()}
-method, adding a key which is used to
-retrieve the data later.  In most cases the entire
-implementation is perhaps 10 lines of code.</p>
-
-<p>Here's an example that backs up a high scores file.</p>
-
-<pre>
- import android.app.backup.BackupAgentHelper;
- import android.app.backup.FileBackupHelper;
-
-
- public class TheBackupAgent extends BackupAgentHelper {
-    // The name of the SharedPreferences file
-    static final String HIGH_SCORES_FILENAME = "scores";
-
-    // A key to uniquely identify the set of backup data
-    static final String FILES_BACKUP_KEY = "myfiles";
-
-    // Allocate a helper and add it to the backup agent
-    &#64;Override
-    void onCreate() {
-        FileBackupHelper helper = new FileBackupHelper(this, HIGH_SCORES_FILENAME);
-        addHelper(FILES_BACKUP_KEY, helper);
-    }
-}
-</pre>
-<p>For added flexibility, {@link android.app.backup.FileBackupHelper}'s
-constructor can take a variable number of filenames.  You could just as easily
-have backed up both a high scores file and a game progress file just by adding
-an extra parameter, like this:</p>
-<pre>
-    &#64;Override
-    void onCreate() {
-        FileBackupHelper helper = new FileBackupHelper(this, HIGH_SCORES_FILENAME, PROGRESS_FILENAME);
-        addHelper(FILES_BACKUP_KEY, helper);
-    }
-</pre>
-<p>Backing up preferences is similarly easy.  Create a {@link
-android.app.backup.SharedPreferencesBackupHelper}  the same way you did a {@link
-android.app.backup.FileBackupHelper}.  In this case, instead of adding filenames
-to the constructor, add the names of the shared preference groups being used by
-your application.  Here's an example of how your backup agent helper might look if
-high scores are implemented as preferences instead of a flat file:</p>
-
-<pre>
- import android.app.backup.BackupAgentHelper;
- import android.app.backup.SharedPreferencesBackupHelper;
-
- public class TheBackupAgent extends BackupAgentHelper {
-     // The names of the SharedPreferences groups that the application maintains.  These
-     // are the same strings that are passed to getSharedPreferences(String, int).
-     static final String PREFS_DISPLAY = "displayprefs";
-     static final String PREFS_SCORES = "highscores";
-
-     // An arbitrary string used within the BackupAgentHelper implementation to
-     // identify the SharedPreferencesBackupHelper's data.
-     static final String MY_PREFS_BACKUP_KEY = "myprefs";
-
-     // Simply allocate a helper and install it
-     void onCreate() {
-         SharedPreferencesBackupHelper helper =
-                 new SharedPreferencesBackupHelper(this, PREFS_DISPLAY, PREFS_SCORES);
-         addHelper(MY_PREFS_BACKUP_KEY, helper);
-     }
- }
-</pre>
-
-<p>You can add as many backup helper instances to your backup agent helper as you
-like, but remember that you only need one of each type.  One {@link
-android.app.backup.FileBackupHelper} handles all the files that you need to back up, and one
-{@link android.app.backup.SharedPreferencesBackupHelper} handles all the shared
-preferencegroups you need backed up.
-</p>
-
-
-<h2 id="backup">Request a Backup</h2>
-<p>In order to request a backup, just create an instance of the {@link
-android.app.backup.BackupManager}, and call it's {@link
-android.app.backup.BackupManager#dataChanged()} method.</p>
-
-<pre>
- import android.app.backup.BackupManager;
- ...
-
- public void requestBackup() {
-   BackupManager bm = new BackupManager(this);
-   bm.dataChanged();
- }
-</pre>
-
-<p>This call notifies the backup manager that there is data ready to be backed
-up to the cloud.  At some point in the future, the backup manager then calls
-your backup agent's {@link
-android.app.backup.BackupAgent#onBackup(ParcelFileDescriptor, BackupDataOutput,
-ParcelFileDescriptor) onBackup()} method.  You can make
-the call whenever your data has changed, without having to worry about causing
-excessive network activity.  If you request a backup twice before a backup
-occurs, the backup only occurs once.</p>
-
-
-<h2 id="restore">Restore from a Backup</h2>
-<p>Typically you shouldn't ever have to manually request a restore, as it
-happens automatically when your application is installed on a device.  However,
-if it <em>is</em> necessary to trigger a manual restore, just call the
-{@link android.app.backup.BackupManager#requestRestore(RestoreObserver) requestRestore()} method.</p>
diff --git a/docs/html/training/cloudsync/index.jd b/docs/html/training/cloudsync/index.jd
deleted file mode 100644
index 082ace5..0000000
--- a/docs/html/training/cloudsync/index.jd
+++ /dev/null
@@ -1,36 +0,0 @@
-page.title=Syncing to the Cloud
-page.tags=cloud,sync,backup
-
-trainingnavtop=true
-startpage=true
-
-@jd:body
-
-<div id="tb-wrapper">
-<div id="tb">
-
-<h2>Dependencies and prerequisites</h2>
-<ul>
-  <li>Android 2.2 (API level 8) and higher</li>
-</ul>
-</div>
-</div>
-
-<p>By providing powerful APIs for internet connectivity, the Android framework
-helps you build rich cloud-enabled apps that sync their data to a remote web
-service, making sure all your devices always stay in sync, and your valuable
-data is always backed up to the cloud.</p>
-
-<p>This class covers strategies for backing up data using the cloud so that
-users can restore their data when installing your application on a new device.
-</p>
-
-<h2>Lessons</h2>
-
-<dl>
-  <dt><strong><a href="backupapi.html">Using the Backup API</a></strong></dt>
-  <dd>Learn how to integrate the Backup API into your Android Application, so
-  that user data such as preferences, notes, and high scores update seamlessly
-  across all of a user's devices</dd>
-</dl>
-
diff --git a/docs/html/training/contacts-provider/display-contact-badge.jd b/docs/html/training/contacts-provider/display-contact-badge.jd
index 041eb58..b00ce0e 100644
--- a/docs/html/training/contacts-provider/display-contact-badge.jd
+++ b/docs/html/training/contacts-provider/display-contact-badge.jd
@@ -293,7 +293,6 @@
             /*
              * Handle file not found errors
              */
-        }
         // In all cases, close the asset file descriptor
         } finally {
             if (afd != null) {
diff --git a/docs/html/training/contacts-provider/retrieve-names.jd b/docs/html/training/contacts-provider/retrieve-names.jd
old mode 100644
new mode 100755
index d97b81b..49d6e95
--- a/docs/html/training/contacts-provider/retrieve-names.jd
+++ b/docs/html/training/contacts-provider/retrieve-names.jd
@@ -230,7 +230,7 @@
     {@link android.provider.ContactsContract.Contacts#DISPLAY_NAME_PRIMARY
     Contacts.DISPLAY_NAME_PRIMARY} requires Android 3.0 (API version 11) or later, setting your
     app's <code>minSdkVersion</code> to 10 or below generates an Android Lint warning in
-    Eclipse with ADK. To turn off this warning, add the annotation
+    Android Studio. To turn off this warning, add the annotation
     <code>@SuppressLint("InlinedApi")</code> before the definition of <code>FROM_COLUMNS</code>.
 </p>
 <h3 id="InitializeFragment">Initialize the Fragment</h3>
diff --git a/docs/html/training/custom-views/create-view.jd b/docs/html/training/custom-views/create-view.jd
old mode 100644
new mode 100755
index a476bbe..7b5cdc3
--- a/docs/html/training/custom-views/create-view.jd
+++ b/docs/html/training/custom-views/create-view.jd
@@ -61,8 +61,7 @@
     existing view
     subclasses, such as {@link android.widget.Button}.</p>
 
-<p>To allow the <a href="{@docRoot}guide/developing/tools/adt.html">Android Developer Tools
-</a> to interact with your view, at a minimum you must provide a constructor that takes a
+<p>To allow Android Studio to interact with your view, at a minimum you must provide a constructor that takes a
 {@link android.content.Context} and an {@link android.util.AttributeSet} object as parameters.
 This constructor allows the layout editor to create and edit an instance of your view.</p>
 
diff --git a/docs/html/training/custom-views/index.jd b/docs/html/training/custom-views/index.jd
old mode 100644
new mode 100755
index 87cd0b0..f732adb
--- a/docs/html/training/custom-views/index.jd
+++ b/docs/html/training/custom-views/index.jd
@@ -48,7 +48,7 @@
 <dl>
 <dt><b><a href="create-view.html">Creating a View Class</a></b></dt>
 <dd>Create a class that acts like a built-in view, with custom
-    attributes and support from the <a href="http://developer.android.com/sdk/eclipse-adt.html">ADT</a> layout editor.
+    attributes and support from the <a href="http://developer.android.com/sdk/installing/studio-layout.html">Android Studio</a> layout editor.
 </dd>
 
 <dt><b><a href="custom-drawing.html">Custom Drawing</a></b></dt>
diff --git a/docs/html/training/custom-views/making-interactive.jd b/docs/html/training/custom-views/making-interactive.jd
old mode 100644
new mode 100755
index 4e9d53a..14163d8
--- a/docs/html/training/custom-views/making-interactive.jd
+++ b/docs/html/training/custom-views/making-interactive.jd
@@ -229,8 +229,8 @@
     is not available prior to API level 11, so this technique cannot be used
 on devices running Android versions lower than 3.0.</p>
 
-<p class="note"><strong>Note:</strong> {@link android.animation.ValueAnimator} isn't available
-        prior to API level 11, but you can still use it in applications that
+<p class="note"><strong>Note:</strong> You can use {@link android.animation.ValueAnimator} in
+applications that
 target lower API levels. You just need to make sure to check the current API level
 at runtime, and omit the calls to the view animation system if the current level is less than 11.</p>
 
diff --git a/docs/html/training/design-navigation/wireframing.jd b/docs/html/training/design-navigation/wireframing.jd
old mode 100644
new mode 100755
index 1801f91..201d9e4
--- a/docs/html/training/design-navigation/wireframing.jd
+++ b/docs/html/training/design-navigation/wireframing.jd
@@ -78,9 +78,6 @@
   <li>What's the learning curve? Professional vector illustration tools may have a steep learning curve, while tools designed for wireframing may offer a smaller set of features that are more relevant to the task.</li>
 </ul>
 
-<p>Lastly, the XML Layout Editor that comes with the <a href="{@docRoot}tools/help/adt.html">Android Development Tools (ADT)</a> plugin for Eclipse can often be used for prototyping. However, you should be careful to focus more on the high-level layout and less on visual design details at this point.</p>
-
-
 <h2 id="wireframe-digital">Create Digital Wireframes</h2>
 
 <p>After sketching out layouts on paper and choosing a digital wireframing tool that works for you, you can create the digital wireframes that will serve as the starting point for your application's visual design. Below are example wireframes for our news application, corresponding one-to-one with our screen maps from earlier in this lesson.</p>
diff --git a/docs/html/training/efficient-downloads/redundant_redundant.jd b/docs/html/training/efficient-downloads/redundant_redundant.jd
index 674298a..0825b5d 100644
--- a/docs/html/training/efficient-downloads/redundant_redundant.jd
+++ b/docs/html/training/efficient-downloads/redundant_redundant.jd
@@ -37,7 +37,7 @@
 
 <p>To ensure that your caching doesn't result in your app displaying stale data, be sure to extract the time at which the requested content was last updated, and when it expires, from within the HTTP response headers. This will allow you to determine when the associated content should be refreshed.</p>
 
-<pre>long currentTime = System.currentTimeMillis());
+<pre>long currentTime = System.currentTimeMillis();
 
 HttpURLConnection conn = (HttpURLConnection) url.openConnection();
 
@@ -54,7 +54,7 @@
 
 <p>Using this approach, you can also effectively cache dynamic content while ensuring it doesn't result in your application displaying stale information.</p>
 
-<p>You can cache non-sensitive data can in the unmanaged external cache directory:</p>
+<p>You can cache non-sensitive data in the unmanaged external cache directory:</p>
 
 <pre>Context.getExternalCacheDir();</pre>
 
@@ -84,4 +84,4 @@
 
 <p>With the cache installed, fully cached HTTP requests can be served directly from local storage, eliminating the need to open a network connection. Conditionally cached responses can validate their freshness from the server, eliminating the bandwidth cost associated with the download.</p>
 
-<p>Uncached responses get stored in the response cache for for future requests.</p>
\ No newline at end of file
+<p>Uncached responses get stored in the response cache for future requests.</p>
diff --git a/docs/html/training/enterprise/app-restrictions.jd b/docs/html/training/enterprise/app-restrictions.jd
index dd2c2c0..07b1de7 100644
--- a/docs/html/training/enterprise/app-restrictions.jd
+++ b/docs/html/training/enterprise/app-restrictions.jd
@@ -152,10 +152,10 @@
 &lt;restrictions xmlns:android="http://schemas.android.com/apk/res/android" &gt;
 
   &lt;restriction
-    android:key="downloadOnCellular"
-    android:title="App is allowed to download data via cellular"
+    android:key="download_on_cell"
+    android:title="@string/download_on_cell_title"
     android:restrictionType="bool"
-    android:description="If 'false', app can only download data via Wi-Fi"
+    android:description="@string/download_on_cell_description"
     android:defaultValue="true" /&gt;
 
 &lt;/restrictions&gt;
@@ -166,6 +166,12 @@
   documented in the reference for {@link android.content.RestrictionsManager}.
 </p>
 
+<p class="note">
+  <strong>Note:</strong> <code>bundle</code> and
+  <code>bundle_array</code> restriction types are not supported by Google Play
+  for Work.
+</p>
+
 <p>
   You use each restriction's <code>android:key</code> attribute to read its
   value from a restrictions bundle. For this reason, each restriction must have
@@ -211,7 +217,7 @@
   </li>
 
   <li>When the app is notified of a restriction change, as described in
-    <a href="#listen">Listen for Device Configuration
+    <a href="#listen">Listen for App Configuration
     Changes</a>
   </li>
 </ul>
@@ -254,9 +260,30 @@
   the {@link android.content.Intent#ACTION_APPLICATION_RESTRICTIONS_CHANGED
   ACTION_APPLICATION_RESTRICTIONS_CHANGED} intent to find out if restrictions
   change while your app is active, as described in <a href="#listen">Listen for
-  Device Configuration Changes</a>.
+  App Restriction Changes</a>.
 </p>
 
+<p>
+  When your app checks for restrictions using
+ {@link android.content.RestrictionsManager#getApplicationRestrictions
+ RestrictionsManager.getApplicationRestrictions()}, we recommend that you
+ check to see if the enterprise administrator has set the key-value pair
+ {@link android.os.UserManager#KEY_RESTRICTIONS_PENDING} to true. If so, you
+ should block the user from using the app, and prompt them to contact their
+ enterprise administrator. The app should then proceed as normal, registering
+ for the {@link android.content.Intent#ACTION_APPLICATION_RESTRICTIONS_CHANGED
+ ACTION_APPLICATION_RESTRICTIONS_CHANGED} broadcast.
+</p>
+
+<img src="{@docRoot}images/training/enterprise/app_restrictions_diagram.png"
+width="620" srcset="{@docRoot}images/training/enterprise/app_restrictions_diagram.png 1x,
+{@docRoot}images/training/enterprise/app_restrictions_diagram_2x.png 2x" />
+
+ <p class="img-caption">
+   <strong>Figure 1.</strong> Checking whether restrictions are pending before
+   registering for the broadcast.
+ </p>
+
 <h3 id="read_restrictions">
   Reading and applying restrictions
 </h3>
@@ -266,11 +293,11 @@
   getApplicationRestrictions()} method returns a {@link android.os.Bundle}
   containing a key-value pair for each restriction that has been set. The
   values are all of type <code>Boolean</code>, <code>int</code>,
-  <code>String</code>, and <code>String[]</code>. Once you have the
-  restrictions {@link android.os.Bundle}, you can check the current
-  restrictions settings with the standard {@link android.os.Bundle} methods for
-  those data types, such as {@link android.os.Bundle#getBoolean getBoolean()}
-  or
+  <code>String</code>, <code>String[]</code>, <code>Bundle</code>, and
+  <code>Bundle[]</code>. Once you have the restrictions {@link android.os.Bundle},
+  you can check the current restrictions settings with the standard
+  {@link android.os.Bundle} methods for those data types, such as
+  {@link android.os.Bundle#getBoolean getBoolean()} or
   {@link android.os.Bundle#getString getString()}.
 </p>
 
@@ -284,10 +311,11 @@
 
 <p>
   It is up to your app to take appropriate action based on the current
-  restrictions settings. For example, if your app has a restriction specifying
-  whether it can download data over a cellular connection, and you find that
-  the restriction is set to <code>false</code>, you would have to disable data
-  download except when the device has a Wi-Fi connection, as shown in the
+  restrictions settings. For example, if your app has a restriction schema
+  to specify whether it can download over a cellular connection (like the
+  example in <a href="#define_restrictions">Define App Restrictions</a>),
+  and you find that the restriction is set to false, you would have to disable
+  data download except when the device has a Wi-Fi connection, as shown in the
   following example code:
 </p>
 
@@ -307,6 +335,13 @@
     // ...show appropriate notices to user
 }</pre>
 
+<p class="note">
+   <strong>Note:</strong> The restrictions schema should be
+   backward and forward compatible, since Google Play for Work
+   gives the EMM only one version of the App Restrictions
+   Schema per app.
+ </p>
+
 <h2 id="listen">
   Listen for App Restriction Changes
 </h2>
@@ -354,8 +389,8 @@
   <strong>Note:</strong> Ordinarily, your app does not need to be notified
   about restriction changes when it is paused. Instead, you should unregister
   your broadcast receiver when the app is paused. When the app resumes, you
-  first check for the current restrictions (as discussed in <a href=
-  "#check_restrictions">Check Device Restrictions</a>), then register your
-  broadcast receiver to make sure you're notified about restriction changes
+  first check for the current restrictions (as discussed in
+  <a href="#check_restrictions">Check App Restrictions</a>), then register
+  your broadcast receiver to make sure you're notified about restriction changes
   that happen while the app is active.
 </p>
diff --git a/docs/html/training/enterprise/cosu.jd b/docs/html/training/enterprise/cosu.jd
new file mode 100644
index 0000000..1d6388b
--- /dev/null
+++ b/docs/html/training/enterprise/cosu.jd
@@ -0,0 +1,503 @@
+page.title=Configuring Corporate-Owned, Single-Use Devices
+page.metaDescription=Learn how to develop single-use solutions for Android devices.
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>This lesson teaches you to</h2>
+<ol>
+ <li><a href="#locktask">How to use LockTask mode</a></li>
+ <li><a href="#cosu-solutions">Build COSU solutions</a></li>
+ <li><a href="#create-dpc">Create your own DPC app</a></li>
+</ol>
+
+<!-- related docs (NOT javadocs) -->
+<h2>You should also read</h2>
+<ul>
+  <li><a href="{@docRoot}training/enterprise/work-policy-ctrl.html">
+Building a Device Policy Controller</a>
+  </li>
+</ul>
+
+</div>
+</div>
+
+<p>
+As an IT administrator, you can configure Android 6.0 Marshmallow and later
+devices as <em>corporate-owned, single-use (COSU)</em> devices. These are Android
+devices used for a single purpose, such as digital signage, ticket printing,
+point of sale, or inventory management. To use Android devices as COSU devices,
+you need to develop Android apps that your customers can manage.
+</p>
+
+<p>
+Your customers can configure COSU devices:
+</p>
+<ul>
+<li>
+To lock a single application to the screen, and hide the
+<strong>Home</strong> and <strong>Recents</strong> buttons to prevent users
+from escaping the app.
+</li>
+
+<li>
+To allow multiple applications to appear on the screen, such as a library kiosk
+with a catalog app and web browser.
+</li>
+</ul>
+
+<h2 id="pinning">
+App pinning vs. lock task mode
+</h2>
+
+<p>Android 5.0 Lollipop introduced two new ways to configure Android devices
+for a single purpose:
+</p>
+
+<ul>
+<li>
+With app pinning, the device user can temporarily pin specific apps to the
+screen.
+</li>
+
+<li>
+With lock task mode, a user can’t escape the app and the Home and Recents
+buttons are hidden. Additionally, lock task mode gives the IT administrator
+a more robust way to manage COSU devices, as discussed below.
+</li>
+</ul>
+
+<p>
+This graphic compares the features of app pinning and lock task mode:
+</p>
+
+<img src="{@docRoot}images/training/enterprise/pinning_vs_locktaskmode.png"
+width="640" srcset="{@docRoot}images/training/enterprise/pinning_vs_locktaskmode.png 1x,
+{@docRoot}images/training/enterprise/pinning_vs_locktaskmode_2x.png 2x" />
+
+ <p class="img-caption">
+   <strong>Figure 1.</strong> Comparing the features of app pinning in Lollipop
+   vs. Lock task mode in Marshmallow and later
+ </p>
+
+<p>
+In Lollipop, you can pin a single application to cover the full screen, but
+only apps whitelisted by the device policy controller (DPC) can be locked.
+</p>
+
+<h2 id="locktask">
+  How to use LockTask mode
+</h2>
+
+<p>
+  To use LockTask mode, and the APIs that manage COSU devices, there must be
+  a device owner application installed on the device. Device owners are a
+  type of device policy controller (DPC) that manages the whole device. For
+  more information about DPCs, see the
+  <a class="external-link" href="https://developers.google.com/android/work/overview">EMM Developer’s Overview</a>.
+</p>
+
+<p>
+If you’re creating a new COSU app, we recommend you develop it for
+Marshmallow or later, which includes the following COSU features:
+</p>
+
+<ul>
+<li>
+Controls system updates
+</li>
+
+<li>
+Sets status and menu bar visibility
+</li>
+
+<li>
+Disables screen lock and sleep functions
+</li>
+
+<li>
+Permits switching between apps while staying in lock task mode
+</li>
+
+<li>
+Prevents restarting in safe mode
+</li>
+</ul>
+
+<p class="note">
+  <strong>Note:</strong> If you develop COSU features targeted for
+  Marshmallow devices, your app can still be compatible with prior
+  versions of Android.
+</p>
+
+<p>
+Additional COSU management features launched with Marshmallow make it easier to
+develop and deploy Android devices as a single-use device. If you want to
+enforce server-side app restrictions or server-side profile policy controls,
+you need to use an EMM or make your application a DPC. Follow the instructions
+below as you create your application.
+</p>
+
+<h2 id="cosu-solutions">
+  Build COSU solutions
+</h2>
+
+<p>
+  There are two different ways to manage COSU devices:
+</p>
+
+<ul>
+<li>
+<strong>Use a third-party enterprise mobility management (EMM)
+solution</strong>: Using an EMM, all you need to do is set up lock task mode.
+For instructions, skip to the next section,
+<a href="#emm-solutions">Solutions managed by a third-party EMM</a>.
+</li>
+
+<li>
+<strong>Advanced setup—Create your own DPC app</strong>: This requires
+more work and is intended for an advanced developer audience. With this
+option, you’ll need to set up the device so that you can manage it, set
+up APIs, and set up a DPC app and test it. For instructions, skip to
+<a href="#create-dpc">Create your own DPC app</a>.
+</li>
+</ul>
+
+<h2 id="emm-solutions">
+Solutions managed by a third-party EMM
+</h2>
+
+<p>
+In this section, you’ll need to do a small amount of development to
+have your device work with a third-party EMM.
+</p>
+
+<h3 id="use-smartlocktask">
+Using startLockTask()
+</h3>
+
+<p>
+If you need to add COSU functionality to an existing app, make sure that
+the customer’s EMM supports {@link android.R.attr#lockTaskMode}.
+</p>
+
+<ul>
+<li>
+The device owner must include your app’s package(s) in
+{@link android.app.admin.DevicePolicyManager#setLockTaskPackages setLockTaskPackages}</li>
+<ul>
+<li>
+Sets the packages that can enter into lock task mode
+</li>
+<li>
+Needs to be set by the EMM
+</li>
+<li>
+You can call {@link android.app.admin.DevicePolicyManager#isLockTaskPermitted isLockTaskPermitted}
+to verify that your package has been whitelisted by
+{@link android.app.admin.DevicePolicyManager#setLockTaskPackages setLockTaskPackages}.
+</li>
+</ul>
+
+<li>
+Your activity calls {@link android.app.Activity#startLockTask()}
+</li>
+<ul>
+<li>
+Requests to lock the user into the current task
+</li>
+<li>
+Prevents launching other apps, settings, and the <strong>Home</strong>
+button
+</li>
+</ul>
+
+<li>
+To exit, your activity must call {@link android.app.Activity#stopLockTask()}
+</li>
+<ul>
+<li>
+Can only be called on an activity that’s previously called
+ {@link android.app.Activity#startLockTask()}
+</li>
+<li>
+Should be called when the app is user-facing between {@link android.app.Activity#onResume()}
+and {@link android.app.Activity#onPause()}
+</li>
+</ul>
+</ul>
+
+<p>
+Starting from Marshmallow, if your app is whitelisted by an EMM using {@link 
+android.app.admin.DevicePolicyManager#setLockTaskPackages setLockTaskPackages},
+your activities can automatically start lock task mode when the app is
+launched.
+</p>
+
+<h3 id="locktaskmode-attribute">
+Set the lockTaskMode attribute
+</h3>
+
+<p>
+  The {@link android.R.attr#lockTaskMode} attribute allows you to define
+  your app’s lock task mode behavior in the AndroidManifest.xml file:
+</p>
+
+<ul>
+<li>
+If you set {@link android.R.attr#lockTaskMode} to <code>if_whitelisted</code>,
+you don’t need to call {@link android.app.Activity#startLockTask()}, and the
+app automatically enters into lock task mode.
+</li>
+
+<li>
+System apps and privileged apps can also set {@link android.R.attr#lockTaskMode}
+to always. This setting causes tasks (rooted at your activity) to always
+launch into lock task mode. Non-privileged apps are treated as normal.
+</li>
+
+<li>
+The default value of the {@link android.R.attr#lockTaskMode} attribute is
+normal. When this attribute is set to normal, tasks don’t launch into 
+{@link android.R.attr#lockTaskMode}, unless {@link android.app.Activity#startLockTask()} 
+is called. To call {@link android.app.Activity#startLockTask()},
+applications still need to be whitelisted using 
+{@link android.app.admin.DevicePolicyManager#setLockTaskPackages setLockTaskPackages}, 
+otherwise, the user sees a dialog to approve entering pinned mode.
+</li>
+</ul>
+  
+<p>To have your activity <em>automatically</em> enter {@link android.R.attr#lockTaskMode},
+change the value of this attribute to <code>if_whitelisted</code>.
+Doing so causes your app to behave in this manner:
+</p>
+
+<ul>
+<li>
+If your app isn’t whitelisted for {@link android.R.attr#lockTaskMode},
+it behaves as normal.
+</li>
+
+<li>
+If your app is a system or privileged app, and it’s whitelisted,
+{@link android.R.attr#lockTaskMode} automatically starts when the app is
+launched.
+</li>
+</ul>
+
+<p>
+Example XML as follows:
+</p>
+
+ <pre>&lt;activity android:name=".MainActivity" android:lockTaskMode="if_whitelisted"&gt;</pre>
+
+<p>
+Given either of these options, you still need to create a mechanism for
+calling {@link android.app.Activity#stopLockTask()} so that users can
+exit {@link android.R.attr#lockTaskMode}. 
+</p>
+
+<h2 id="create-dpc">
+  Advanced setup—Create your own DPC app
+</h2>
+
+<p>
+To manage applications in COSU, you need a DPC running as device
+owner to set several policies on the device. 
+</p>
+
+<p class="note">
+<strong>Note:</strong> This setup is advanced, and requires
+a thorough understanding of the EMM concepts described in the
+<a class="external-link" href="https://developers.google.com/android/work/prov-devices#implementation_considerations_for_device_owner_mode">EMM developer overview</a>.
+For more information about building a DPC, see
+<a class="external-link"
+href="https://developers.google.com/android/work/prov-devices">Provision Customer Devices</a>.
+</p>
+
+<p>
+To create a DPC app that can manage COSU device configuration,
+the DPC needs to:
+</p>
+
+<ol>
+<li>
+Provision the device into device owner mode. We recommend that
+you support provisioning with near field communication (NFC) bump.
+For more information, see
+<a class="external-link" href="https://developers.google.com/android/work/prov-devices#nfc_method"
+>Device Owner Provisioning via NFC</a>.
+</li>
+
+<li>
+Use the following APIs:
+<ul>
+<li>
+Keep devices from locking with the keyguard using
+{@link android.app.admin.DevicePolicyManager#setKeyguardDisabled setKeyguardDisabled()}
+</li>
+
+<li>
+Disable the status bar using
+{@link android.app.admin.DevicePolicyManager#setStatusBarDisabled setStatusBarDisabled()}
+</li>
+
+<li>
+Keep a device’s screen on while plugged in via
+{@link android.provider.Settings.Global#STAY_ON_WHILE_PLUGGED_IN}
+</li>
+
+<li>
+Set default user restrictions via
+{@link android.app.admin.DevicePolicyManager#addUserRestriction addUserRestriction()}
+</li>
+
+<li>
+Set system update policies using
+{@link android.app.admin.DevicePolicyManager#setSystemUpdatePolicy setSystemUpdatePolicy()}
+</li>
+
+<li>
+Ensure your app is launched on reboot by setting it as the default launcher
+</li>
+</ul>
+</li>
+</ol>
+
+<p>
+Here’s an example of how to implement an activity that starts lock task mode
+and implements the relevant COSU device management APIs:
+</p>
+
+<pre>
+public class CosuActivity extends Activity {
+    &#64;Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        mAdminComponentName = DeviceAdminReceiver.getComponentName(this);
+        mDevicePolicyManager = (DevicePolicyManager) getSystemService(
+                Context.DEVICE_POLICY_SERVICE);
+        mPackageManager = getPackageManager();
+        setDefaultCosuPolicies(true);
+    }
+
+    &#64;Override
+    protected void onStart() {
+        super.onStart();
+
+        // start lock task mode if it's not already active
+        ActivityManager am = (ActivityManager) getSystemService(
+            Context.ACTIVITY_SERVICE);
+        // ActivityManager.getLockTaskModeState api is not available in pre-M.
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
+            if (!am.isInLockTaskMode()) {
+                startLockTask();
+            }
+        } else {
+            if (am.getLockTaskModeState() == 
+                ActivityManager.LOCK_TASK_MODE_NONE) {
+                startLockTask();
+            }
+        }
+    }
+
+    private void setDefaultCosuPolicies(boolean active) {
+        // set user restrictions
+        setUserRestriction(DISALLOW_SAFE_BOOT, active);
+        setUserRestriction(DISALLOW_FACTORY_RESET, active);
+        setUserRestriction(DISALLOW_ADD_USER, active);
+        setUserRestriction(DISALLOW_MOUNT_PHYSICAL_MEDIA, active);
+        setUserRestriction(DISALLOW_ADJUST_VOLUME, active);
+
+        // disable keyguard and status bar
+        mDevicePolicyManager.setKeyguardDisabled(mAdminComponentName, active);
+        mDevicePolicyManager.setStatusBarDisabled(mAdminComponentName, active);
+
+        // enable STAY_ON_WHILE_PLUGGED_IN
+        enableStayOnWhilePluggedIn(active);
+
+        // set System Update policy
+
+        if (active){
+        	mDevicePolicyManager.setSystemUpdatePolicy(mAdminComponentName, 
+                SystemUpdatePolicy.createWindowedInstallPolicy(60,120));
+        }
+        else
+        
+
+        // set this Activity as a lock task package
+
+        mDevicePolicyManager.setLockTaskPackages(mAdminComponentName,
+    	    active ? new String[]{getPackageName()} : new String[]{});
+
+        IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MAIN);
+        intentFilter.addCategory(Intent.CATEGORY_HOME);
+        intentFilter.addCategory(Intent.CATEGORY_DEFAULT);
+
+        if (active) {
+            // set Cosu activity as home intent receiver so that it is started
+            // on reboot
+            mDevicePolicyManager.addPersistentPreferredActivity(
+                mAdminComponentName, intentFilter, new ComponentName(
+                getPackageName(), CosuModeActivity.class.getName()))
+        } else {
+            mDevicePolicyManager.clearPackagePersistentPreferredActivities(
+                mAdminComponentName, getPackageName());
+        }
+    }
+
+    private void setUserRestriction(String restriction, boolean disallow) {
+        if (disallow) {
+            mDevicePolicyManager.addUserRestriction(mAdminComponentName, 
+                restriction);
+        } else {
+            mDevicePolicyManager.clearUserRestriction(mAdminComponentName,
+                restriction);
+        }
+    }
+
+    private void enableStayOnWhilePluggedIn(boolean enabled) {
+    	if (enabled) {
+    		mDevicePolicyManager.setGlobalSetting(
+    			mAdminComponentName, 
+                        Settings.Global.STAY_ON_WHILE_PLUGGED_IN,
+    			BatteryManager.BATTERY_PLUGGED_AC 
+    			| BatteryManager.BATTERY_PLUGGED_USB 
+    			| BatteryManager.BATTERY_PLUGGED_WIRELESS);
+    	} else {
+    		mDevicePolicyManager.setGlobalSetting(
+    			mAdminComponentName, 
+                        Settings.Global.STAY_ON_WHILE_PLUGGED_IN, 0);
+    	}
+
+    }
+
+    // TODO: Implement the rest of the Activity
+}
+</pre>
+
+
+<h2 id="testing-plan">
+  Develop a test plan for COSU
+</h2>
+
+<p>
+  If you’re planning to support a third-party EMM, develop an end-to-end
+  testing plan utilizing the EMM’s app. We also provide testing resources,
+  which you can use to create your own Test Device Policy Client (Test DPC):
+</p>
+
+<ul>
+<li>
+<a class="external-link" href="https://play.google.com/store/search?q=testdpc">TestDPC on Google Play</a>
+</li>
+<li>
+<a class="external-link" href="https://github.com/googlesamples/android-testdpc/tree/master/app/src/main/java/com/afwsamples/testdpc/cosu">TestDPC for COSU source code on GitHub</a>
+</li>
+<li>
+<a class="external-link" href="https://github.com/googlesamples/android-testdpc">Test Device Policy Control app source code on GitHub</a>
+</li>
+</ul>
diff --git a/docs/html/training/enterprise/work-policy-ctrl.jd b/docs/html/training/enterprise/work-policy-ctrl.jd
index 5854e65..8225ea3 100644
--- a/docs/html/training/enterprise/work-policy-ctrl.jd
+++ b/docs/html/training/enterprise/work-policy-ctrl.jd
@@ -1,5 +1,6 @@
-page.title=Building a Work Policy Controller
-page.metaDescription=Learn how to develop a Work Policy Controller to create and administer a managed profile on an employee's device.
+page.title=Building a Device Policy Controller
+page.metaDescription=Learn how to develop a device policy controller to create and administer a managed profile on an employee's device.
+page.tags="work policy controller,WPC,device policy controller,DPC"
 @jd:body
 
 <div id="tb-wrapper">
@@ -54,8 +55,9 @@
 </p>
 
 <p>
-  To handle these tasks, an enterprise develops and deploys a Work Policy
-  Controller app. This app is installed on each employee's device. The
+  To handle these tasks, an enterprise develops and deploys
+  a <em>device policy controller</em> app (previously known as a
+  <em>work policy controller</em>). This app is installed on each employee's device. The
   controller app installed on each employee's device and creates a work user
   profile, which accesses enterprise apps and data separately from the user's
   personal account. The controller app also acts as the
@@ -66,7 +68,7 @@
 </p>
 
 <p>
-  This lesson describes how to develop a Work Policy Controller app for devices
+  This lesson describes how to develop a device policy controller app for devices
   in an Android for Work deployment. The lesson describes how to create a work
   user profile, how to set device policies, and how to apply
   restrictions to other apps running on the managed profile.
@@ -85,13 +87,13 @@
   policies to control the behavior of employees' devices and apps. The
   enterprise administrator sets these policies with software provided by their
   Enterprise Mobility Management (EMM) provider. The EMM software communicates
-  with a Work Policy Controller on each device. The Work Policy Controller, in
+  with a device policy controller on each device. The device policy controller, in
   turn, manages the settings and behavior of the work user profile on each
   individual’s device.
 </p>
 
 <p class="note">
-  <strong>Note:</strong> A Work Policy Controller is built on the existing
+  <strong>Note:</strong> A device policy controller is built on the existing
   model used for device administration applications, as described in <a href=
   "{@docRoot}guide/topics/admin/device-admin.html">Device Administration</a>.
   In particular, your app needs to create a subclass of {@link
@@ -177,7 +179,7 @@
   <li>Removes non-required applications from the managed profile.
   </li>
 
-  <li>Copies the Work Policy Controller application into the managed profile and
+  <li>Copies the device policy controller app into the managed profile and
     sets it as the profile owner.
   </li>
 </ul>
@@ -209,9 +211,8 @@
 
 <h3 id="after_creating_profile">After Creating the Managed Profile</h3>
 
-<p>When the profile has been provisioned, the system calls the Work Policy
-Controller app's {@link
-android.app.admin.DeviceAdminReceiver#onProfileProvisioningComplete
+<p>When the profile has been provisioned, the system calls the device policy
+controller app's {@link android.app.admin.DeviceAdminReceiver#onProfileProvisioningComplete
 DeviceAdminReceiver.onProfileProvisioningComplete()} method. Override this
 callback method to finish enabling the managed profile.</p>
 
@@ -257,7 +258,7 @@
 <h2 id="set_up_policies">Set Up Device Policies</h2>
 
 <p>
-  The Work Policy Controller app is responsible for applying the enterprise's
+  The device policy controller app is responsible for applying the enterprise's
   device policies. For example, a particular enterprise might require that all
   devices become locked after a certain number of failed attempts to enter the
   device password. The controller app queries the EMM to find out what
@@ -273,13 +274,12 @@
 
 <h2 id="apply_restrictions">Apply App Restrictions</h2>
 
-<p>Enterprise environments may require that approved apps implement apps
-implement security or feature restrictions. App developers must implement these
-restrictions and declare them for use by enterprise administrators, as described
-in <a href="{@docRoot}training/enterprise/app-restrictions.html">Implementing
-App Restrictions</a>. The Work Policy Controller receives restriction changes
-from the enterprise administrator, and forwards those restriction changes to the
-apps.</p>
+<p>Enterprise environments may require that approved apps implement security
+or feature restrictions. App developers must implement these restrictions
+and declare them for use by enterprise administrators, as described in
+<a href="{@docRoot}training/enterprise/app-restrictions.html">Implementing
+App Restrictions</a>. The device policy controller receives restriction changes
+from the enterprise administrator, and forwards those restriction changes to the apps.</p>
 
 <p>For example, a particular news app might have a restriction setting that
 controls whether the app is allowed to download videos over a cellular
@@ -287,9 +287,9 @@
 notification to the controller app. The controller app, in turn,
 notifies the news app that the restriction setting has changed.</p>
 
-<p class="note"><strong>Note:</strong> This document covers how the Work Policy
-Controller app changes the restriction settings for the other apps on the
-managed profile. Details on how the Work Policy Controller app communicates with
+<p class="note"><strong>Note:</strong> This document covers how the device policy
+controller app changes the restriction settings for the other apps on the
+managed profile. Details on how the device policy controller app communicates with
 the EMM are out of scope for this document.</p>
 
 <p>To change an app's restrictions, call the {@link
@@ -308,7 +308,7 @@
 a cellular network; it must use a Wi-Fi network instead.</p>
 
 <p>
-  If your Work Policy Controller app needs to turn off cellular downloads, it
+  If your device policy controller app needs to turn off cellular downloads, it
   would first fetch the device policy service object, as described above. It
   then assembles a restrictions bundle and passes this bundle to {@link
   android.app.admin.DevicePolicyManager#setApplicationRestrictions
diff --git a/docs/html/training/game-controllers/compatibility.jd b/docs/html/training/game-controllers/compatibility.jd
old mode 100644
new mode 100755
index f68ab1a..51ae9ee
--- a/docs/html/training/game-controllers/compatibility.jd
+++ b/docs/html/training/game-controllers/compatibility.jd
@@ -13,7 +13,7 @@
 Suppport</a></li>
   <li><a href="#abstraction">Add an Interface for Backward Compatibility</a></li>
   <li><a href="#newer">Implement the Interface on Android 4.1 and Higher</a></li>
-  <li><a href="#older">Implement the Interface on Android 2.3 up to Android
+  <li><a href="#older">Implement the Interface on Android 3.1 up to Android
 4.0</a></li>
   <li><a href="#using">Use the Version-Specific Implementations</a></li>
 </ol>
@@ -36,7 +36,7 @@
 
 <p>This lesson demonstrates how to use APIs available in Android 4.1 and higher
 in a backward compatible way, enabling your game to support the following
-features on devices running Android 2.3 and higher:</p>
+features on devices running Android 3.1 and higher:</p>
 <ul>
 <li>The game can detect if a new game controller is added, changed, or removed.</li>
 <li>The game can query the capabilities of a game controller.</li>
@@ -48,20 +48,20 @@
 above. This sample shows how to implement the {@code InputManagerCompat}
 interface to support different versions of Android. To compile the sample, you
 must use Android 4.1 (API level 16) or higher. Once compiled, the sample app
-runs on any device running Android 2.3 (API level 9) or higher as the build
+runs on any device running Android 3.1 (API level 12) or higher as the build
 target.
 </p>
 
 <h2 id="prepare">Prepare to Abstract APIs for Game Controller Support</h2>
 <p>Suppose you want to be able to determine if a game controller's connection
-status has changed on devices running on Android 2.3 (API level 9). However,
+status has changed on devices running on Android 3.1 (API level 12). However,
 the APIs are only available in Android 4.1 (API level 16) and higher, so you
 need to provide an implementation that supports Android 4.1 and higher while
-providing a fallback mechanism that supports Android 2.3 up to Android 4.0.</p>
+providing a fallback mechanism that supports Android 3.1 up to Android 4.0.</p>
 
 <p>To help you determine which features require such a fallback mechanism for
     older versions, table 1 lists the differences in game controller support
-    between Android 2.3 (API level 9), 3.1 (API level 12), and 4.1 (API level
+    between Android 3.1 (API level 12) and 4.1 (API level
     16).</p>
 
 <p class="table-caption" id="game-controller-support-table">
@@ -74,7 +74,6 @@
 <tr>
 <th>Controller Information</th>
 <th>Controller API</th>
-<th>API level 9</th>
 <th>API level 12</th>
 <th>API level 16</th>
 </tr>
@@ -83,34 +82,29 @@
 <td rowspan="5">Device Identification</td>
 <td>{@link android.hardware.input.InputManager#getInputDeviceIds()}</td>
 <td style="text-align: center;"><big>&nbsp;</big></td>
-<td style="text-align: center;"><big>&nbsp;</big></td>
 <td style="text-align: center;"><big>&bull;</big></td>
 </tr>
 
 <tr>
 <td>{@link android.hardware.input.InputManager#getInputDevice(int)
 getInputDevice()}</td>
-<td style="text-align: center;">&nbsp;</td>
 <td style="text-align: center;"><big>&nbsp;</big></td>
 <td style="text-align: center;"><big>&bull;</big></td>
 </tr>
 
 <tr>
 <td>{@link android.view.InputDevice#getVibrator()}</td>
-<td style="text-align: center;">&nbsp;</td>
 <td style="text-align: center;"><big>&nbsp;</big></td>
 <td style="text-align: center;"><big>&bull;</big></td>
 </tr>
 
 <td>{@link android.view.InputDevice#SOURCE_JOYSTICK}</td>
-<td style="text-align: center;">&nbsp;</td>
 <td style="text-align: center;"><big>&bull;</big></td>
 <td style="text-align: center;"><big>&bull;</big></td>
 </tr>
 
 <tr>
 <td>{@link android.view.InputDevice#SOURCE_GAMEPAD}</td>
-<td style="text-align: center;">&nbsp;</td>
 <td style="text-align: center;"><big>&bull;</big></td>
 <td style="text-align: center;"><big>&bull;</big></td>
 </tr>
@@ -119,21 +113,18 @@
 <td rowspan="3">Connection Status</td>
 <td>{@link android.hardware.input.InputManager.InputDeviceListener#onInputDeviceAdded(int) onInputDeviceAdded()}</td>
 <td style="text-align: center;">&nbsp;</td>
-<td style="text-align: center;">&nbsp;</td>
 <td style="text-align: center;"><big>&bull;</big></td>
 </tr>
 
 <tr>
 <td>{@link android.hardware.input.InputManager.InputDeviceListener#onInputDeviceChanged(int) onInputDeviceChanged()}</td>
 <td style="text-align: center;">&nbsp;</td>
-<td style="text-align: center;">&nbsp;</td>
 <td style="text-align: center;"><big>&bull;</big></td>
 </tr>
 
 <tr>
 <td>{@link android.hardware.input.InputManager.InputDeviceListener#onInputDeviceRemoved(int) onInputDeviceRemoved()}</td>
 <td style="text-align: center;">&nbsp;</td>
-<td style="text-align: center;">&nbsp;</td>
 <td style="text-align: center;"><big>&bull;</big></td>
 </tr>
 
@@ -147,7 +138,6 @@
 {@link android.view.KeyEvent#KEYCODE_DPAD_CENTER})</td>
 <td style="text-align: center;"><big>&bull;</big></td>
 <td style="text-align: center;"><big>&bull;</big></td>
-<td style="text-align: center;"><big>&bull;</big></td>
 </tr>
 
 <tr>
@@ -162,7 +152,6 @@
 {@link android.view.KeyEvent#KEYCODE_BUTTON_L1 BUTTON_L1},
 {@link android.view.KeyEvent#KEYCODE_BUTTON_R2 BUTTON_R2},
 {@link android.view.KeyEvent#KEYCODE_BUTTON_L2 BUTTON_L2})</td>
-<td style="text-align: center;">&nbsp;</td>
 <td style="text-align: center;"><big>&bull;</big></td>
 <td style="text-align: center;"><big>&bull;</big></td>
 </tr>
@@ -175,7 +164,6 @@
 {@link android.view.MotionEvent#AXIS_RZ},
 {@link android.view.MotionEvent#AXIS_HAT_X},
 {@link android.view.MotionEvent#AXIS_HAT_Y})</td>
-<td style="text-align: center;">&nbsp;</td>
 <td style="text-align: center;"><big>&bull;</big></td>
 <td style="text-align: center;"><big>&bull;</big></td>
 </tr>
@@ -184,7 +172,6 @@
 <td>Analog trigger press (
 {@link android.view.MotionEvent#AXIS_LTRIGGER},
 {@link android.view.MotionEvent#AXIS_RTRIGGER})</td>
-<td style="text-align: center;">&nbsp;</td>
 <td style="text-align: center;"><big>&bull;</big></td>
 <td style="text-align: center;"><big>&bull;</big></td>
 </tr>
@@ -200,7 +187,7 @@
 <li>Create a proxy implementation of your interface that uses APIs in Android
 4.1 and higher.</li>
 <li>Create a custom implementation of your interface that uses APIs available
-between Android 2.3 up to Android 4.0.</li>
+between Android 3.1 up to Android 4.0.</li>
 <li>Create the logic for switching between these implementations at runtime,
 and begin using the interface in your game.</li>
 </ol>
@@ -284,8 +271,9 @@
 across different platform versions. If your game is running on Android 4.1 or
 higher and calls an {@code InputManagerCompat} method, the proxy implementation
 calls the equivalent method in {@link android.hardware.input.InputManager}.
-However, if your game is running on Android 2.3 up to Android 4.0, the custom implementation processes calls to {@code InputManagerCompat} methods by using
-only APIs introduced no later than Android 2.3. Regardless of which
+However, if your game is running on Android 3.1 up to Android 4.0, the custom implementation
+processes calls to {@code InputManagerCompat} methods by using
+only APIs introduced no later than Android 3.1. Regardless of which
 version-specific implementation is used at runtime, the implementation passes
 the call results back transparently to the game.</p>
 
@@ -377,11 +365,10 @@
 }
 </pre>
 
-<h2 id="older">Implementing the Interface on Android 2.3 up to Android 4.0</h2>
+<h2 id="older">Implementing the Interface on Android 3.1 up to Android 4.0</h2>
 
-<p>The {@code InputManagerV9} implementation uses APIs introduced no later
-than Android 2.3. To create an implementation of {@code
-InputManagerCompat} that supports Android 2.3 up to Android 4.0, you can use
+<p>To create an implementation of {@code
+InputManagerCompat} that supports Android 3.1 up to Android 4.0, you can use
 the following objects:
 <ul>
 <li>A {@link android.util.SparseArray} of device IDs to track the
@@ -586,7 +573,7 @@
 
 <p>You now have two implementations of {@code InputManagerCompat}: one that
 works on devices running Android 4.1 and higher, and another
-that works on devices running Android 2.3 up to Android 4.0.</p>
+that works on devices running Android 3.1 up to Android 4.0.</p>
 
 <h2 id="using">Use the Version-Specific Implementation</h2>
 <p>The version-specific switching logic is implemented in a class that acts as
@@ -626,7 +613,7 @@
 onGenericMotionEvent()} method in your main view, as described in
 <a href="controller-input.html#analog">Handle a MotionEvent from a Game
 Controller</a>. Your game should now be able to process game controller events
-consistently on devices running Android 2.3 (API level 9) and higher.
+consistently on devices running Android 3.1 (API level 12) and higher.
 <p>
 <pre>
 &#64;Override
@@ -640,4 +627,4 @@
 </pre>
 <p>You can find a complete implementation of this compatibility code in the
 {@code GameView} class provided in the sample {@code ControllerSample.zip}
-available for download above.</p>
\ No newline at end of file
+available for download above.</p>
diff --git a/docs/html/training/improving-layouts/reusing-layouts.jd b/docs/html/training/improving-layouts/reusing-layouts.jd
index 7b0185d..b277c8b 100644
--- a/docs/html/training/improving-layouts/reusing-layouts.jd
+++ b/docs/html/training/improving-layouts/reusing-layouts.jd
@@ -43,7 +43,7 @@
 <p>Reusing layouts is particularly powerful as it allows you create reusable complex layouts. For
 example, a yes/no button panel, or custom progress bar with description text.
 It also means that any elements of your application that are common across multiple layouts can be
-extracted, managed separately, then included in each layout. So while 
+extracted, managed separately, then included in each layout. So while
 you can create individual UI components by writing a custom {@link android.view.View}, you can
 do it even more easily by re-using a layout file.</p>
 
@@ -56,14 +56,14 @@
 
 <pre>
 &lt;FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width=”match_parent”
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:background="&#64;color/titlebar_bg">
 
     &lt;ImageView android:layout_width="wrap_content"
-               android:layout_height="wrap_content" 
-               android:src="&#64;drawable/gafricalogo" />
-&lt;/FrameLayout>
+               android:layout_height="wrap_content"
+               android:src="&#64;drawable/gafricalogo" /&gt;
+&lt;/FrameLayout&gt;
 </pre>
 
 <p>The root {@link android.view.View} should be exactly how you'd like it to appear in each
@@ -80,18 +80,18 @@
 
 <pre>
 &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical" 
-    android:layout_width=”match_parent”
-    android:layout_height=”match_parent”
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
     android:background="&#64;color/app_bg"
-    android:gravity="center_horizontal">
+    android:gravity="center_horizontal"&gt;
 
-    <strong>&lt;include layout="&#64;layout/titlebar"/></strong>
+    <strong>&lt;include layout="&#64;layout/titlebar"/&gt;</strong>
 
-    &lt;TextView android:layout_width=”match_parent”
+    &lt;TextView android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:text="&#64;string/hello"
-              android:padding="10dp" />
+              android:padding="10dp" /&gt;
 
     ...
 
@@ -103,10 +103,10 @@
 example:</p>
 
 <pre>
-&lt;include android:id=”&#64;+id/news_title”
-         android:layout_width=”match_parent”
-         android:layout_height=”match_parent”
-         layout=”@layout/title”/>
+&lt;include android:id="&#64;+id/news_title"
+         android:layout_width="match_parent"
+         android:layout_height="match_parent"
+         layout="@layout/title"/&gt;
 </pre>
 
 <p>However, if you want to override layout attributes using
@@ -130,17 +130,17 @@
 {@code <merge>} element as the root view for the re-usable layout. For example:</p>
 
 <pre>
-&lt;merge xmlns:android="http://schemas.android.com/apk/res/android">
+&lt;merge xmlns:android="http://schemas.android.com/apk/res/android"&gt;
 
     &lt;Button
-        android:layout_width="fill_parent" 
+        android:layout_width="fill_parent"
         android:layout_height="wrap_content"
-        android:text="@string/add"/>
+        android:text="@string/add"/&gt;
 
     &lt;Button
-        android:layout_width="fill_parent" 
+        android:layout_width="fill_parent"
         android:layout_height="wrap_content"
-        android:text="@string/delete"/>
+        android:text="@string/delete"/&gt;
 
 &lt;/merge>
 </pre>
diff --git a/docs/html/training/in-app-billing/preparing-iab-app.jd b/docs/html/training/in-app-billing/preparing-iab-app.jd
old mode 100644
new mode 100755
index 42bc947..2c6e9a0
--- a/docs/html/training/in-app-billing/preparing-iab-app.jd
+++ b/docs/html/training/in-app-billing/preparing-iab-app.jd
@@ -30,18 +30,35 @@
 </div>
 </div>
 
+<a class="notice-developers-video wide"
+href="https://www.youtube.com/watch?v=UvCl5Xx7Z5o">
+<div>
+    <h3>Video</h3>
+    <p>Implementing Freemium</p>
+  </div>
+  </a>
+
 <p>Before you can start using the In-app Billing service, you'll need to add the library that contains the In-app Billing Version 3 API to your Android project. You also need to set the permissions for your application to communicate with Google Play. In addition, you'll need to establish a connection between your application and  Google Play. You should also verify that the In-app Billing API version that you are using in your application is supported by Google Play.</p>
 
 <h2 id="GetSample">Download the Sample Application</h2>
 <p>In this training class, you will use a reference implementation for the In-app Billing Version 3 API called the {@code TrivialDrive} sample application. The sample includes convenience classes to quickly set up the In-app Billing service, marshal and unmarshal data types, and handle In-app Billing requests from the main thread of your application.</p>
 <p>To download the sample application:</p>
 <ol>
-<li>Open the <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>.</li>
-<li>In the SDK Manager, expand the {@code Extras} section.</li>
-<li>Select <strong>Google Play Billing Library</strong>.</li>
-<li>Click <strong>Install packages</strong> to complete the download.</li>
+<li>Open Android Studio and then close any open projects until you are
+presented with the welcome screen.</li>
+<li>Choose <strong>Import an Android code sample</strong> from the
+  <strong>Quick Start</strong> list on the right side the window.</li>
+<li>Type {@code Trivial Drive} into the search bar and select the
+  <strong>Trivial Drive</strong> sample.</li>
+<li>Follow the rest of the instructions in the <strong>Import Sample</strong>
+  wizard to import the sample to a directory of your choosing. The sample code
+  is in the <strong>TrivialDrive</strong> subdirectory of the repository.</li>
 </ol>
-<p>The sample files will be installed to {@code <sdk>/extras/google/play_billing/}.</p>
+
+<p>Alternatively, you can use {@code git} to manually clone
+ the repository from <a
+ href="https://github.com/googlesamples/android-play-billing"
+ class="external-link">https://github.com/googlesamples/android-play-billing</a></p>
 
 <h2 id="AddToDevConsole">Add Your Application to the Developer Console</h2>
 <p>The Google Play Developer Console is where you publish your In-app Billing application and  manage the various digital goods that are available for purchase from your application. When you create a new application entry in the Developer Console, it automatically generates a public license key for your application. You will need this key to establish a trusted connection from your application to the Google Play servers. You only need to generate this key once per application, and don’t need to repeat these steps when you update the APK file for your application.</p>
@@ -67,9 +84,9 @@
 <p>To add the In-app Billing Version 3 library to your new In-app Billing project:</p>
 <ol>
 <li>Copy the {@code TrivialDrive} sample files into your Android project.</li>
-<li>Modify the package name in the files you copied to use the package name for your project. In Eclipse, you can use this shortcut: right-click the package name, then  select <strong>Refactor</strong> > <strong>Rename</strong>.</li>
+<li>Modify the package name in the files you copied to use the package name for your project. In Android Studio, you can use this shortcut: right-click the package name, then  select <strong>Refactor</strong> > <strong>Rename</strong>.</li>
 <li>Open the {@code AndroidManifest.xml} file and update the package attribute value to use the package name for your project.</li>
-<li>Fix import statements as needed so that your project compiles correctly.  In Eclipse, you can use this shortcut: press <strong>Ctrl+Shift+O</strong> in each file showing errors.</li>
+<li>Fix import statements as needed so that your project compiles correctly.  In Android Studio, you can use this shortcut: press <strong>Ctrl+Shift+O</strong> in each file showing errors.</li>
 <li>Modify the sample to create your own application. Remember to copy the Base64 public license key for your application from the Developer Console over to your {@code MainActivity.java}.</li>
 </ol>
 
@@ -81,7 +98,6 @@
   <li>In Android Studio: Create a directory named {@code aidl} under {@code src/main}, add a new
   package {@code com.android.vending.billing} in this directory, and import the
   {@code IInAppBillingService.aidl} file into this package.</li>
-  <li>In Eclipse: Import the {@code IInAppBillingService.aidl} file into your {@code /src} directory.</li>
   <li>In other dev environments: Create the following directory {@code /src/com/android/vending/billing} and copy the {@code IInAppBillingService.aidl} file into this directory.</li>
   </ul>
 </li>
diff --git a/docs/html/training/index.jd b/docs/html/training/index.jd
index 1b0b1fe..18971ab 100644
--- a/docs/html/training/index.jd
+++ b/docs/html/training/index.jd
@@ -4,39 +4,46 @@
 
 @jd:body
 
-<p>Welcome to Training for Android developers. Here you'll find sets of lessons within classes
-that describe how to accomplish a specific task with code samples you can re-use in your app.
-Classes are organized into several groups you can see at the top-level of the left navigation.</p>
-
- <p>This first group, <em>Getting Started</em>, teaches you the bare
-    essentials for Android app development. If you're a new Android app developer, you should
-    complete each of these classes in order.</p>
-
 <div class="wrap">
   <div class="cols">
     <div class="col-1of2">
-      <p>If you prefer to learn through interactive video training,
-      check out this trailer for a course about the fundamentals of Android development.</p>
-      <p><a href="https://www.udacity.com/course/ud853" class="button">
-        Start the video course</a>
-      </p>
+<p>Welcome to Training for Android developers. Here you'll find
+training classes that describe how to accomplish a specific task with code
+samples you can re-use in your app. Classes are organized into several groups
+you can see at the top-level of the left navigation.</p>
+
+<p>The first <a href="#class-list">training guides below</a>
+teach you the essentials for Android app development. If you're a new
+Android app developer, you should complete each of these classes in order.</p>
+
+<p>Various online video courses are also available if you'd prefer
+an interactive video experience.</p>
+
     </div>
-    <div class="col-1of2">
-      <iframe width="300" height="169" src="//www.youtube.com/embed/LfVBFFoy9Y0?utm_source=dac&utm_medium=video&utm_content=andfuntrain&utm_campaign=udacint?rel=0&amp;hd=1" frameborder="0" allowfullscreen></iframe>
+    <div class="col-1of2" style="background:#eee;padding-top:10px">
+      <p>Check out this trailer for a course about the fundamentals of
+        Android development on Udacity.</p>
+      </p>
+      <iframe width="338" height="169" src="//www.youtube.com/embed/LfVBFFoy9Y0?utm_source=dac&utm_medium=video&utm_content=andfuntrain&utm_campaign=udacint?rel=0&amp;hd=1" frameborder="0" allowfullscreen></iframe>
+      <p><a href="https://www.udacity.com/course/ud853" class="button"
+        style="width:100%">Start the video course</a>
     </div>
   </div>
 </div>
 
-<div style="clear:left"></div>
-</div>
+<div style="clear:left" id="classes"></div>
 
-  <div><h2 class="norule">Online video courses</h2>
-  <p>If you prefer to learn through interactive video training,
-    check out these free courses.</p>
+<section class="dac-section dac-small" id="latest-games"><div class="wrap">
+  <h2 class="norule" style="margin:20px 0">Online video courses</h2>
   <div class="resource-widget resource-flow-layout col-16"
        data-query="collection:develop/landing/courses"
        data-sortOrder="random"
        data-cardSizes="6x6"
-       data-maxResults="12"
-       data-initial-results="3"></div>
-</div>
\ No newline at end of file
+       data-maxResults="24"
+       data-items-per-page="24"
+       data-initial-results="6"></div>
+  </div>
+</section>
+
+<h2 class="norule" id="class-list"
+  style="margin:0 0 -40px">Training guides</h2>
\ No newline at end of file
diff --git a/docs/html/training/location/change-location-settings.jd b/docs/html/training/location/change-location-settings.jd
new file mode 100644
index 0000000..70733eb
--- /dev/null
+++ b/docs/html/training/location/change-location-settings.jd
@@ -0,0 +1,251 @@
+page.title=Changing Location Settings
+trainingnavtop=true
+@jd:body
+
+<div id="tb-wrapper">
+  <div id="tb">
+
+  <h2>This lesson teaches you how to</h2>
+  <ol>
+    <li><a href="#connect">Connect to Location Services</a></li>
+    <li><a href="#location-request">Set Up a Location Request</a></li>
+    <li><a href="#get-settings">Get Current Location Settings</a></li>
+    <li><a href="#prompt">Prompt the User to Change Location Settings</a></li>
+  </ol>
+
+  <h2>You should also read</h2>
+  <ul>
+    <li>
+      <a href="https://developers.google.com/android/guides/setup"
+      class="external-link">Setting up Google Play Services</a>
+    </li>
+    <li>
+      <a href="retrieve-current.html">Getting the Last Known Location</a>
+    </li>
+   </ul>
+  </div>
+</div>
+
+<p>If your app needs to request location or receive permission updates, the
+  device needs to enable the appropriate system settings, such as GPS or Wi-Fi
+  scanning. Rather than directly enabling services such as the device's GPS,
+  your app specifies the required level of accuracy/power consumption and
+  desired update interval, and the device automatically makes the appropriate
+  changes to system settings. These settings are defined by the
+  <a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest"
+  class="external-link">{@code LocationRequest}</a>
+  data object. </p>
+
+<p>This lesson shows you how to use the
+  <a href="https://developers.google.com/android/reference/com/google/android/gms/location/SettingsApi">Settings API</a>
+  to check which settings are enabled, and present the Location Settings
+  dialog for the user to update their settings with a single tap.</p>
+
+<h2 id="connect">Connect to Location Services</h2>
+
+<p>In order to use the location services provided by Google Play Services and
+  the fused location provider, connect your app using the
+  <a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient">Google API Client</a>,
+  then check the current location settings and prompt the user to enable the
+  required settings if needed. For details on connecting with the
+  Google API client, see <a href="retrieve-current.html">Getting the Last Known Location</a>.</p>
+
+<p>Apps that use location services must request location permissions. For this
+  lesson, coarse location detection is sufficient. Request this permission
+  with the <code>uses-permission</code> element in your app manifest, as shown
+  in the following example:</p>
+
+<pre><code>&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
+  package="com.google.android.gms.location.sample.locationupdates" &gt;
+
+  &lt;uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/&gt;
+&lt;/manifest&gt;
+</code></pre>
+
+<p>If the device is running Android 6.0 or higher, and your app's target
+  SDK is 23 or higher, the app has to list the permissions in the manifest
+  <em>and</em> request those permissions at run time. For more information, see
+<a href="{@docRoot}training/permissions/requesting.html">Requesting Permissions at Run Time</a>.</p>
+
+<h2 id="location-request">Set Up a Location Request</h2>
+
+<p>To store parameters for requests to the fused location provider, create a
+  <a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html">{@code LocationRequest}</a>.
+  The parameters determine the level of accuracy for location requests. For
+  details of all available location request options, see the
+  <a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html">{@code LocationRequest}</a>
+  class reference. This lesson sets the update interval, fastest update
+  interval, and priority, as described below:</p>
+
+<dl>
+  <dt>
+    Update interval
+  </dt>
+  <dd>
+    <a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#setInterval(long)">{@code setInterval()}</a>
+    - This method sets the rate in milliseconds at which your app prefers to
+    receive location updates. Note that the location updates may be faster than
+    this rate if another app is receiving updates at a faster rate, or slower
+    than this rate, or there may be no updates at all (if the device has no
+    connectivity, for example).
+  </dd>
+  <dt>
+    Fastest update interval
+  </dt>
+  <dd>
+    <a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#setFastestInterval(long)">{@code setFastestInterval()}</a>
+    - This method sets the <strong>fastest</strong> rate in milliseconds at which
+    your app can handle location updates. You need to set this rate because
+    other apps also affect the rate at which updates are sent. The Google Play
+    services location APIs send out updates at the fastest rate that any app
+    has requested with
+    <a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#setInterval(long)">{@code setInterval()}</a>.
+    If this rate is faster
+    than your app can handle, you may encounter problems with UI flicker or data
+    overflow. To prevent this, call
+    <a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#setFastestInterval(long)">{@code setFastestInterval()}</a>
+    to set an upper limit to the update rate.
+  </dd>
+  <dt>Priority</dt>
+  <dd>
+    <p>
+      <a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#setPriority(int)">{@code setPriority()}</a>
+      - This method sets the priority of the request, which gives the Google Play
+      services location services a strong hint about which location sources to use.
+      The following values are supported:</p>
+      <ul>
+        <li>
+          <a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_BALANCED_POWER_ACCURACY">{@code PRIORITY_BALANCED_POWER_ACCURACY}</a>
+          - Use this setting to request location precision to within a city
+          block, which is an accuracy of approximately 100 meters. This is
+          considered a coarse level of accuracy, and is likely to consume less
+          power. With this setting, the location services are likely to use WiFi
+          and cell tower positioning. Note, however, that the choice of location
+          provider depends on many other factors, such as which sources are
+          available.</li>
+        <li>
+          <a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_HIGH_ACCURACY">{@code PRIORITY_HIGH_ACCURACY}</a>
+          - Use this setting to request the most precise location possible. With
+          this setting, the location services are more likely to use GPS
+          to determine the location.</li>
+        <li><a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_LOW_POWER">{@code PRIORITY_LOW_POWER}</a>
+          - Use this setting to request city-level precision, which is
+          an accuracy of approximately 10 kilometers. This is considered a
+          coarse level of accuracy, and is likely to consume less power.</li>
+        <li><a href="https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_NO_POWER">{@code PRIORITY_NO_POWER}</a>
+          - Use this setting if you need negligible impact on power consumption,
+          but want to receive location updates when available. With this
+          setting, your app does not trigger any location updates, but
+          receives locations triggered by other apps.</li>
+      </ul>
+  </dd>
+</dl>
+
+<p>Create the location request and set the parameters as shown in this
+  code sample:</p>
+
+<pre>
+protected void createLocationRequest() {
+    LocationRequest mLocationRequest = new LocationRequest();
+    mLocationRequest.setInterval(10000);
+    mLocationRequest.setFastestInterval(5000);
+    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
+}
+</pre>
+
+<p>The priority of
+  <a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_HIGH_ACCURACY">{@code PRIORITY_HIGH_ACCURACY}</a>,
+  combined with the
+  {@link android.Manifest.permission#ACCESS_FINE_LOCATION ACCESS_FINE_LOCATION}
+  permission setting that you've defined in the app manifest, and a fast update
+  interval of 5000 milliseconds (5 seconds), causes the fused location
+  provider to return location updates that are accurate to within a few feet.
+  This approach is appropriate for mapping apps that display the location in
+  real time.</p>
+
+<p class="note"><strong>Performance hint:</strong> If your app accesses the
+  network or does other long-running work after receiving a location update,
+  adjust the fastest interval to a slower value. This adjustment prevents your
+  app from receiving updates it can't use. Once the long-running work is done,
+  set the fastest interval back to a fast value.</p>
+
+<h2 id="get-settings">Get Current Location Settings</h2>
+
+<p>Once you have connected to Google Play services and the location services
+    API, you can get the current location settings of a user's device. To do
+    this, create a
+    <a href="{@docRoot}reference/com/google/android/gms/location/LocationSettingsRequest.Builder"><code>LocationSettingsRequest.Builder</code></a>,
+    and add one or more location requests. The following code snippet shows how
+    to add the location request that was created in the previous step:</p>
+
+<pre>LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
+     .addLocationRequest(mLocationRequest);
+</pre>
+
+<p>Next check whether the current location settings are satisfied:</p>
+
+<pre>PendingResult&lt;LocationSettingsResult&gt; result =
+         LocationServices.SettingsApi.checkLocationSettings(mGoogleClient,
+                 builder.build());</pre>
+
+<p>When the <a href="{@docRoot}reference/com/google/android/gms/common/api/PendingResult"><code>PendingResult</code></a>
+  returns, your app can check the location settings by looking at the status
+  code from the <a href="{@docRoot}reference/com/google/android/gms/location/LocationSettingsResult"><code>LocationSettingsResult</code></a>
+  object. To get even more details about the the current state of the relevant
+  location settings, your app can call the
+  <a href="{@docRoot}reference/com/google/android/gms/location/LocationSettingsResult">{@code LocationSettingsResult}</a>
+  object's
+  <a href="{@docRoot}reference/com/google/android/gms/location/LocationSettingsResult#getLocationSettingsStates"><code>getLocationSettingsStates()</code></a>
+  method.</p>
+
+<h2 id="prompt">Prompt the User to Change Location Settings</h2>
+
+<p>To determine whether the location settings are appropriate for the location
+  request, check the status code from the
+  <a href="{@docRoot}reference/com/google/android/gms/location/LocationSettingsResult">{@code LocationSettingsResult}</a>
+  object. A status code of <code>RESOLUTION_REQUIRED</code> indicates that the
+  settings must be changed. To prompt the user for permission to modify the
+  location settings, call
+  <a href="{@docRoot}reference/com/google/android/gms/common/api/Status#startResolutionForResult(android.app.Activity, int)">
+            {@code startResolutionForResult(Activity, int)}</a>.
+  This method brings up a dialog asking for the user's permission to modify
+  location settings. The following code snippet shows how to check the location
+  settings, and how to call {@code startResolutionForResult(Activity, int)}.
+</p>
+
+<pre>result.setResultCallback(new ResultCallback&lt;LocationSettingsResult&gt;()) {
+     &#64;Override
+     public void onResult(LocationSettingsResult result) {
+         final Status status = result.getStatus();
+         final LocationSettingsStates = result.getLocationSettingsStates();
+         switch (status.getStatusCode()) {
+             case LocationSettingsStatusCodes.SUCCESS:
+                 // All location settings are satisfied. The client can
+                 // initialize location requests here.
+                 ...
+                 break;
+             case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
+                 // Location settings are not satisfied, but this can be fixed
+                 // by showing the user a dialog.
+                 try {
+                     // Show the dialog by calling startResolutionForResult(),
+                     // and check the result in onActivityResult().
+                     status.startResolutionForResult(
+                         OuterClass.this,
+                         REQUEST_CHECK_SETTINGS);
+                 } catch (SendIntentException e) {
+                     // Ignore the error.
+                 }
+                 break;
+             case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
+                 // Location settings are not satisfied. However, we have no way
+                 // to fix the settings so we won't show the dialog.
+                 ...
+                 break;
+         }
+     }
+ });</pre>
+
+  <p>The next lesson,
+    <a href="receive-location-updates.html">Receiving Location Updates</a>, shows
+    you how to receive periodic location updates.</p>
diff --git a/docs/html/training/location/geofencing.jd b/docs/html/training/location/geofencing.jd
index 556329c..1cf89fd 100644
--- a/docs/html/training/location/geofencing.jd
+++ b/docs/html/training/location/geofencing.jd
@@ -13,7 +13,8 @@
     <li><a href="#CreateAdd">Create and Add Geofences</a></li>
     <li><a href="#HandleGeofenceTransitions">Handle Geofence Transitions</a></li>
     <li><a href="#StopGeofenceMonitoring">Stop Geofence Monitoring</a></li>
-
+    <li><a href="#BestPractices">Use Best Practices for Geofencing</a></li>
+    <li><a href="#Troubleshooting">Troubleshoot the Geofence Entrance Event</a></li>
 </ol>
 
 <h2>You should also read</h2>
@@ -56,6 +57,16 @@
     This lesson shows you how to add and remove geofences, and then listen for geofence transitions
     using an {@link android.app.IntentService}.</p>
 
+<p>We recommend upgrading existing apps to use the
+<a href="{@docRoot}reference/com/google/android/gms/location/LocationServices.html">
+LocationServices</a> class, which contains the
+<a href="{@docRoot}reference/com/google/android/gms/location/GeofencingApi.html">
+GeofencingApi</a> interface. The
+<a href="{@docRoot}reference/com/google/android/gms/location/LocationServices.html">
+LocationServices</a> class replaces the
+<a href="{@docRoot}reference/com/google/android/gms/location/LocationClient.html">
+LocationClient</a> (deprecated).</p>
+
 <h2 id="RequestGeofences">Set up for Geofence Monitoring</h2>
 <p>
     The first step in requesting geofence monitoring is to request the necessary permission.
@@ -97,6 +108,8 @@
  {@link android.app.PendingIntent} as shown in this section.
 </p>
 
+<p class="note"><strong>Note:</strong> On single-user devices, there is a limit of 100 geofences per app. For multi-user devices, the limit is 100 geofences per app per device user.</p>
+
 <h3>Create geofence objects</h3>
 
 <p>
@@ -145,25 +158,30 @@
 </pre>
 
 <p>
-    This example shows the use of two geofence triggers. The <code><a href="{@docRoot}reference/com/google/android/gms/location/Geofence.html#GEOFENCE_TRANSITION_ENTER">
+    This example shows the use of two geofence triggers. The <code>
+<a href="{@docRoot}reference/com/google/android/gms/location/Geofence.html#GEOFENCE_TRANSITION_ENTER">
     GEOFENCE_TRANSITION_ENTER</a></code>
-    transition triggers when a device enters a geofence, and the <code><a href="{@docRoot}reference/com/google/android/gms/location/Geofence.html#GEOFENCE_TRANSITION_EXIT">
+    transition triggers when a device enters a geofence, and the <code>
+<a href="{@docRoot}reference/com/google/android/gms/location/Geofence.html#GEOFENCE_TRANSITION_EXIT">
     GEOFENCE_TRANSITION_EXIT</a></code>
     transition triggers when a device exits a geofence. Specifying
-    <code><a href="{@docRoot}reference/com/google/android/gms/location/GeofencingRequest.html#INITIAL_TRIGGER_ENTER">
+    <code>
+<a href="{@docRoot}reference/com/google/android/gms/location/GeofencingRequest.html#INITIAL_TRIGGER_ENTER">
         INITIAL_TRIGGER_ENTER</a></code> tells Location services that
-    <code><a href="{@docRoot}reference/com/google/android/gms/location/Geofence.html#GEOFENCE_TRANSITION_ENTER">
+    <code>
+<a href="{@docRoot}reference/com/google/android/gms/location/Geofence.html#GEOFENCE_TRANSITION_ENTER">
         GEOFENCE_TRANSITION_ENTER</a></code>
     should be triggered if the the device is already inside the geofence.</p>
 </p>
 
-<p>In many cases, it may be preferable to use instead <code><a href="{@docRoot}reference/com/google/android/gms/location/GeofencingRequest.html#INITIAL_TRIGGER_DWELL">
+<p>In many cases, it may be preferable to use instead <code>
+<a href="{@docRoot}reference/com/google/android/gms/location/GeofencingRequest.html#INITIAL_TRIGGER_DWELL">
     INITIAL_TRIGGER_DWELL</a></code>,
     which triggers events only when the user stops for a defined duration within a geofence.
     This approach can help reduce "alert spam" resulting from large numbers notifications when a
     device briefly enters and exits geofences. Another strategy for getting best results from your
     geofences is to set a minimum radius of 100 meters. This helps account for the location accuracy
-    of typical WiFi networks, and also helps reduce device power consumption.
+    of typical Wi-Fi networks, and also helps reduce device power consumption.
 </p>
 
 <h3>Define an Intent for geofence transitions</h3>
@@ -195,11 +213,15 @@
 <h3>Add geofences</h3>
 
 <p>
-    To add geofences, use the <code><a href="{@docRoot}reference/com/google/android/gms/location/GeofencingApi.html#addGeofences(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.GeofencingRequest, android.app.PendingIntent)">{@code GeoencingApi.addGeofences()}</a></code> method.
-    Provide the Google API client, the <code><a href="{@docRoot}reference/com/google/android/gms/location/GeofencingRequest">
+    To add geofences, use the <code>
+<a href="{@docRoot}reference/com/google/android/gms/location/GeofencingApi.html#addGeofences(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.GeofencingRequest, android.app.PendingIntent)">{@code GeoencingApi.addGeofences()}</a></code> method.
+    Provide the Google API client, the <code>
+<a href="{@docRoot}reference/com/google/android/gms/location/GeofencingRequest">
     GeofencingRequest</a></code> object, and the {@link android.app.PendingIntent}.
-    The following snippet, which processes the results in <code><a href="{@docRoot}reference/com/google/android/gms/common/api/ResultCallback.html#onResult(R)">
-    onResult()</a></code>, assumes that the main activity implements <code><a href="{@docRoot}reference/com/google/android/gms/common/api/ResultCallback.html">
+    The following snippet, which processes the results in <code>
+<a href="{@docRoot}reference/com/google/android/gms/common/api/ResultCallback.html#onResult(R)">
+    onResult()</a></code>, assumes that the main activity implements <code>
+<a href="{@docRoot}reference/com/google/android/gms/common/api/ResultCallback.html">
     ResultCallback</a></code>:
 </p>
 <pre>
@@ -304,3 +326,112 @@
     You can combine geofencing with other location-aware features, such as periodic location updates.
     For more information, see the other lessons in this class.
 </p>
+
+<h2 id="BestPractices">Use Best Practices for Geofencing</h2>
+
+<p>This section outlines recommendations for using geofencing with the location
+APIs for Android.</p>
+
+<h3>Reduce power consumption</h3>
+
+<p>You can use the following techniques to optimize power consumption in your apps that use geofencing:</p>
+
+<ul>
+<li><p>Set the <a href="{@docRoot}android/reference/com/google/android/gms/location/Geofence.Builder.html#setNotificationResponsiveness(int)">
+notification responsiveness</a> to a higher value. Doing so improves power consumption by
+increasing the latency of geofence alerts. For example, if you set a responsiveness value of five
+minutes your app only checks for an entrance or exit alert once every five minutes.
+Setting lower values does not necessarily mean that users will be notified within that time period
+(for example, if you set a value of 5 seconds it may take a bit longer than that to receive the
+alert).</p></li>
+<li><p>Use a larger geofence radius for locations where a user spends a significant amount of time,
+such as home or work. While a larger radius doesn't directly reduce power consumption, it reduces
+the frequency at which the app checks for entrance or exit, effectively lowering overall power
+consumption.</p></li>
+</ul>
+
+<h3>Choose the optimal radius for your geofence</h3>
+<p>For best results, the minimium radius of the geofence should be set between 100 - 150 meters.
+When Wi-Fi is available location accuracy is usually between 20 - 50 meters. When indoor
+location is available, the accuracy range can be as small as 5 meters. Unless you know indoor
+location is available inside the geofence, assume that Wi-Fi location accuracy is about
+50 meters.</p>
+
+<p>When Wi-Fi location is not available (for example, when you are driving in rural areas) the
+location accuracy degrades. The accuracy range can be as large as several hundred meters to
+several kilometers. In cases like this, you should create geofences using a larger radius.</p>
+
+<h3>Use the dwell transition type to reduce alert spam</h3>
+
+<p>If you receive a large number of alerts when driving briefly past a geofence, the best way to
+reduce the alerts is to use a transition type of <code>
+<a href="{@docRoot}reference/com/google/android/gms/location/Geofence.html#GEOFENCE_TRANSITION_DWELL">
+GEOFENCE_TRANSITION_DWELL</a></code> instead of <code>
+<a href="{@docRoot}reference/com/google/android/gms/location/Geofence.html#GEOFENCE_TRANSITION_ENTER">
+GEOFENCE_TRANSITION_ENTER</a></code>. This way, the dwelling alert is sent only when the user stops
+inside a geofence for a given period of time. You can choose the duration by setting a 
+<a href="{@docRoot}reference/com/google/android/gms/location/Geofence.Builder.html#setLoiteringDelay(int)">
+loitering delay</a>.</p>
+
+<h3>Re-register geofences only when required</h3>
+
+<p>Registered geofences are kept in the <code>com.google.process.location</code> process owned by
+the <code>com.google.android.gms</code> package.
+The app doesn’t need to do anything to handle the following events, because the system
+restores geofences after these events:</p>
+<ul>
+<li>Google Play services is upgraded.</li>
+<li>Google Play services is killed and restarted by the system due resource restriction.</li>
+<li>The location process crashes.</li>
+</ul>
+<p>The app must re-register geofences if they're still needed after the following events, since
+the system cannot recover the geofences in the following cases:</p>
+
+<ul>
+<li>The device is rebooted. The app should listen for the device's boot complete action, and then re-
+register the geofences required.</li>
+<li>The app is uninstalled and re-installed.</li>
+<li>The app's data is cleared.</li>
+<li>Google Play services data is cleared.</li>
+<li>The app has received a <code><a href="{@docRoot}reference/com/google/android/gms/location/LocationStatusCodes.html#GEOFENCE_NOT_AVAILABLE">GEOFENCE_NOT_AVAILABLE</a></code>
+alert. This typically happens
+after NLP (Android's Network Location Provider) is disabled.</li>
+</ul>
+
+<h2 id="Troubleshooting">Troubleshoot the Geofence Entrance Event</h2>
+
+<p>If geofences are not being triggered when the device enters a geofence
+(the <code><a href="{@docRoot}reference/com/google/android/gms/location/Geofence.html#GEOFENCE_TRANSITION_ENTER">
+GEOFENCE_TRANSITION_ENTER</a></code> alert isn’t triggered), first ensure that your geofences are
+registered properly as described in this guide.</p>
+
+<p>Here are some possible reasons for alerts not working as expected:</p>
+
+<ul>
+<li><strong>Accurate location is not available inside your geofence or your geofence is too
+small.</strong> On most devices, the geofence service uses only network location for geofence
+triggering. The service uses this approach because network location consumes much less
+power, it takes less time to get discrete locations, and most importantly it’s available indoors.
+Starting with Google Play services 3.2, the geofence service calculates the overlapping ratio of
+the location circle and the geofence circle and only generates the entrance alert when the ratio
+is at least 85% for a bigger geofence or 75% for a smaller geofence. For an exit alert, the ratio
+threshold used is 15% or 25%. Any ratio between these thresholds makes the geofence service mark
+the geofence state as <code>INSIDE_LOW_CONFIDENCE</code> or <code>OUTSIDE_LOW_CONFIDENCE</code> and
+no alert is sent.</li>
+<li><strong>Wi-Fi is turned off on the device.</strong> Having Wi-Fi on can significantly improve
+the location accuracy, so if Wi-Fi is turned off, your application might never get geofence alerts
+depending on several settings including the radius of the geofence, the device model, or the
+Android version. Starting from Android 4.3 (API level 18), we added the capability of “Wi-Fi scan
+only mode” which allows users to disable Wi-Fi but still get good network location. It’s good
+practice to prompt the user and provide a shortcut for the user to enable Wi-Fi or Wi-Fi scan only
+mode if both of them are disabled. Use <a href="{@docRoot}reference/com/google/android/gms/location/SettingsApi">
+SettingsApi</a> to ensure that the device's system settings are properly configured for optimal
+location detection.</li>
+<li><strong>There is no reliable network connectivity inside your geofence.</strong> If there is
+no reliable data connection, alerts might not be generated. This is because the geofence service
+depends on the network location provider which in turn requires a data connection.</li>
+<li><strong>Alerts can be late.</strong> The geofence service does not continuously query for
+location, so expect some latency when receiving alerts. Usually the latency is less than 2
+minutes, even less when the device has been moving. If the device has been stationary for a
+significant period of time, the latency may increase (up to 6 minutes).</li>
+</ul>
diff --git a/docs/html/training/location/index.jd b/docs/html/training/location/index.jd
index 8ed2071..dd6825c 100644
--- a/docs/html/training/location/index.jd
+++ b/docs/html/training/location/index.jd
@@ -79,6 +79,10 @@
      Learn how to retrieve the last known location of an Android device, which
      is usually equivalent to the user's current location.
   </dd> <dt>
+    <b><a href="change-location-settings.html">Changing Location Settings</a></b>
+  <dt> <dd>
+    Learn how to detect and apply system settings for location features.
+  </dd> <dt>
     <b><a href="receive-location-updates.html">Receiving Location
     Updates</a></b>
   </dt> <dd>
diff --git a/docs/html/training/location/receive-location-updates.jd b/docs/html/training/location/receive-location-updates.jd
index 208dc17..d82905f 100644
--- a/docs/html/training/location/receive-location-updates.jd
+++ b/docs/html/training/location/receive-location-updates.jd
@@ -7,8 +7,7 @@
 
   <h2>This lesson teaches you how to</h2>
   <ol>
-    <li><a href="#connect">Connect to Location Services</a></li>
-    <li><a href="#location-request">Set Up a Location Request</a></li>
+    <li><a href="#get-last-location">Get the Last Known Location</a></li>
     <li><a href="#updates">Request Location Updates</a></li>
     <li><a href="#callback">Define the Location Update Callback</a></li>
     <li><a href="#stop-updates">Stop Location Updates</a></li>
@@ -19,7 +18,7 @@
   <ul>
     <li>
       <a href="{@docRoot}google/play-services/setup.html">Setting up Google Play
-      Services</a>
+    Services</a>
     </li>
     <li>
       <a href="retrieve-current.html">Getting the Last Known Location</a>
@@ -64,16 +63,7 @@
   <a href="{@docRoot}reference/com/google/android/gms/location/FusedLocationProviderApi.html#requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationRequest, com.google.android.gms.location.LocationListener)">{@code requestLocationUpdates()}</a>
   method in the fused location provider.
 
-<h2 id="connect">Connect to Location Services</h2>
-
-<p>Location services for apps are provided through Google Play services and the
-  fused location provider. In order to use these services, you connect your app
-  using the Google API Client and then request location updates. For details on
-  connecting with the
-  <a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.html">{@code GoogleApiClient}</a>,
-  follow the instructions in
-  <a href="retrieve-current.html">Getting the Last Known Location</a>, including
-  requesting the current location.</p>
+<h2 id="get-last-location">Get the Last Known Location</h2>
 
 <p>The last known location of the device provides a handy base from which to
   start, ensuring that the app has a known location before starting the
@@ -101,112 +91,13 @@
 &lt;/manifest&gt;
 </pre>
 
-<h2 id="location-request">Set Up a Location Request</h2>
-
-<p>To store parameters for requests to the fused location provider, create a
-  <a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html">{@code LocationRequest}</a>.
-  The parameters determine the levels of accuracy requested. For details of all
-  the options available in the location request, see the
-  <a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html">{@code LocationRequest}</a>
-  class reference. This lesson sets the update interval, fastest update
-  interval, and priority, as described below:</p>
-
-<dl>
-  <dt>
-    Update interval
-  </dt>
-  <dd>
-    <a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#setInterval(long)">{@code setInterval()}</a>
-    - This method sets the rate in milliseconds at which your app prefers to
-    receive location updates. Note that the location updates may be faster than
-    this rate if another app is receiving updates at a faster rate, or slower
-    than this rate, or there may be no updates at all (if the device has no
-    connectivity, for example).
-  </dd>
-  <dt>
-    Fastest update interval
-  </dt>
-  <dd>
-    <a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#setFastestInterval(long)">{@code setFastestInterval()}</a>
-    - This method sets the <strong>fastest</strong> rate in milliseconds at which
-    your app can handle location updates. You need to set this rate because
-    other apps also affect the rate at which updates are sent. The Google Play
-    services location APIs send out updates at the fastest rate that any app
-    has requested with
-    <a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#setInterval(long)">{@code setInterval()}</a>.
-    If this rate is faster
-    than your app can handle, you may encounter problems with UI flicker or data
-    overflow. To prevent this, call
-    <a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#setFastestInterval(long)">{@code setFastestInterval()}</a>
-    to set an upper limit to the update rate.
-  </dd>
-  <dt>Priority</dt>
-  <dd>
-    <p>
-      <a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#setPriority(int)">{@code setPriority()}</a>
-      - This method sets the priority of the request, which gives the Google Play
-      services location services a strong hint about which location sources to use.
-      The following values are supported:</p>
-      <ul>
-        <li>
-          <a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_BALANCED_POWER_ACCURACY">{@code PRIORITY_BALANCED_POWER_ACCURACY}</a>
-          - Use this setting to request location precision to within a city
-          block, which is an accuracy of approximately 100 meters. This is
-          considered a coarse level of accuracy, and is likely to consume less
-          power. With this setting, the location services are likely to use WiFi
-          and cell tower positioning. Note, however, that the choice of location
-          provider depends on many other factors, such as which sources are
-          available.</li>
-        <li>
-          <a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_HIGH_ACCURACY">{@code PRIORITY_HIGH_ACCURACY}</a>
-          - Use this setting to request the most precise location possible. With
-          this setting, the location services are more likely to use GPS
-          (Global Positioning System) to determine the location.</li>
-        <li><a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_LOW_POWER">{@code PRIORITY_LOW_POWER}</a>
-          - Use this setting to request city-level precision, which is
-          an accuracy of approximately 10 kilometers. This is considered a
-          coarse level of accuracy, and is likely to consume less power.</li>
-        <li><a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_NO_POWER">{@code PRIORITY_NO_POWER}</a>
-          - Use this setting if you need negligible impact on power consumption,
-          but want to receive location updates when available. With this
-          setting, your app does not trigger any location updates, but
-          receives locations triggered by other apps.</li>
-      </ul>
-  </dd>
-</dl>
-
-<p>Create the location request and set the parameters as shown in this
-  code sample:</p>
-
-<pre>
-protected void createLocationRequest() {
-    LocationRequest mLocationRequest = new LocationRequest();
-    mLocationRequest.setInterval(10000);
-    mLocationRequest.setFastestInterval(5000);
-    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
-}
-</pre>
-
-<p>The priority of
-  <a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_HIGH_ACCURACY">{@code PRIORITY_HIGH_ACCURACY}</a>,
-  combined with the
-  {@link android.Manifest.permission#ACCESS_FINE_LOCATION ACCESS_FINE_LOCATION}
-  permission setting that you've defined in the app manifest, and a fast update
-  interval of 5000 milliseconds (5 seconds), causes the fused location
-  provider to return location updates that are accurate to within a few feet.
-  This approach is appropriate for mapping apps that display the location in
-  real time.</p>
-
-<p class="note"><strong>Performance hint:</strong> If your app accesses the
-  network or does other long-running work after receiving a location update,
-  adjust the fastest interval to a slower value. This adjustment prevents your
-  app from receiving updates it can't use. Once the long-running work is done,
-  set the fastest interval back to a fast value.</p>
-
 <h2 id="updates">Request Location Updates</h2>
 
-<p>Now that you've set up a location request containing your app's requirements
-  for the location updates, you can start the regular updates by calling
+<p>Before requesting location updates, your app must connect to location
+  services and make a location request. The lesson on
+  <a href="change-location-settings.html">Changing Location Settings</a>
+  shows you how to do this. Once a location request is in place you can start
+  the regular updates by calling
   <a href="{@docRoot}reference/com/google/android/gms/location/FusedLocationProviderApi.html#requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationRequest, com.google.android.gms.location.LocationListener)">{@code requestLocationUpdates()}</a>.
   Do this in the
   <a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks.html#onConnected(android.os.Bundle)">{@code onConnected()}</a>
diff --git a/docs/html/training/location/retrieve-current.jd b/docs/html/training/location/retrieve-current.jd
index 5bac3fa..c49b666 100644
--- a/docs/html/training/location/retrieve-current.jd
+++ b/docs/html/training/location/retrieve-current.jd
@@ -71,13 +71,13 @@
   block.</p>
 
 <p>This lesson requires only coarse location. Request this permission with the
-  {@code uses-permission} element in your app manifest, as shown in the
-  following example:
+  {@code uses-permission} element in your app manifest, as the following code
+  snippet shows:
 
 <pre>
 &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.google.android.gms.location.sample.basiclocationsample" &gt;
-  
+
   &lt;uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/&gt;
 &lt;/manifest&gt;
 </pre>
@@ -92,18 +92,15 @@
 </p>
 
 <p>In your activity's {@link android.app.Activity#onCreate onCreate()} method,
-  create an instance of Google API Client using
-  <a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html">{@code GoogleApiClient.Builder}</a>.
-  Use the builder to add the
-  <a href="{@docRoot}reference/com/google/android/gms/location/LocationServices.html">{@code LocationServices}</a>
-  API.</p>
-
-<p>The sample app defines a {@code buildGoogleApiClient()} method, called from
-  the activity's {@link android.app.Activity#onCreate onCreate()} method,
-  which includes the following code.</p>
+  create an instance of Google API Client, using the
+  <a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html">{@code GoogleApiClient.Builder}</a> class to add the
+  <a href="{@docRoot}reference/com/google/android/gms/location/LocationServices.html">
+  {@code LocationServices}</a>
+  API, as the following code snippet shows.</p>
 
 <pre>
-protected synchronized void buildGoogleApiClient() {
+// Create an instance of GoogleAPIClient.
+if (mGoogleApiClient == null) {
     mGoogleApiClient = new GoogleApiClient.Builder(this)
         .addConnectionCallbacks(this)
         .addOnConnectionFailedListener(this)
@@ -112,6 +109,31 @@
 }
 </pre>
 
+<p>To connect, call
+<a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient#connect()">
+  {@code connect()}</a>
+  from the activity's
+  <a href="{@docRoot}reference/android/app/Activity.html#onStart()">{@code onStart()}</a>
+  method. To disconnect, call
+  <a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient#disconnect()">
+  {@code disconnect()}</a> from the activity's
+  <a href="{@docRoot}reference/android/app/Activity.html#onStop()">
+  {@code onStop()}</a> method. The following snippet shows an example of how
+  to use both of these methods.
+  </p>
+
+<pre>
+protected void onStart() {
+    mGoogleApiClient.connect();
+    super.onStart();
+}
+
+protected void onStop() {
+    mGoogleApiClient.disconnect();
+    super.onStop();
+}
+</pre>
+
 <h2 id="last-known">Get the Last Known Location</h2>
 
 <p>Once you have connected to Google Play services and the location services
@@ -130,7 +152,7 @@
   object. Do this in the
   <a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks.html#onConnected(android.os.Bundle)">{@code onConnected()}</a>
   callback provided by Google API Client, which is called when the client is
-  ready. The following code sample illustrates the request and a simple
+  ready. The following code snippet illustrates the request and a simple
   handling of the response:</p>
 
 <pre>
@@ -158,5 +180,6 @@
   when the location is not available.</p>
 
 <p>The next lesson,
-  <a href="receive-location-updates.html">Receiving Location Updates</a>, shows
-  you how to receive periodic location updates.</p>
+  <a href="change-location-settings.html">Changing Location Settings</a>, shows
+  you how to detect the current location settings, and prompt the user to
+  change settings as appropriate for your app's requirements.</p>
diff --git a/docs/html/training/managing-audio/audio-focus.jd b/docs/html/training/managing-audio/audio-focus.jd
index 6dcaa7f..8d820db 100644
--- a/docs/html/training/managing-audio/audio-focus.jd
+++ b/docs/html/training/managing-audio/audio-focus.jd
@@ -11,7 +11,7 @@
 @jd:body
 
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>This lesson teaches you to</h2>
@@ -27,21 +27,21 @@
   <li><a href="{@docRoot}guide/topics/media/mediaplayer.html">Media Playback</a></li>
 </ul>
 
-</div> 
 </div>
- 
+</div>
+
 
 <p>With multiple apps potentially playing audio it's important to think about how they should
 interact. To avoid every music app playing at the same time, Android uses audio focus to moderate
 audio playback&mdash;only apps that hold the audio focus should play audio.</p>
 
-<p>Before your app starts playing audio it should request&mdash;and receive&mdash;the audio focus. 
+<p>Before your app starts playing audio it should request&mdash;and receive&mdash;the audio focus.
 Likewise, it should know how to listen for a loss of audio focus and respond appropriately when that
 happens.</p>
 
- 
-<h2 id="RequestFocus">Request the Audio Focus</h2> 
- 
+
+<h2 id="RequestFocus">Request the Audio Focus</h2>
+
 <p>Before your app starts playing any audio, it should hold the audio focus for the stream
 it will be using. This is done with a call to {@link android.media.AudioManager#requestAudioFocus
 requestAudioFocus()} which returns
@@ -55,7 +55,7 @@
 <p>The following snippet requests permanent audio focus on the music audio stream. You should
 request the audio focus immediately before you begin playback, such as when the user presses
 play or the background music for the next game level begins.</p>
-  
+
 <pre>
 AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);
 ...
@@ -66,7 +66,7 @@
                                  AudioManager.STREAM_MUSIC,
                                  // Request permanent focus.
                                  AudioManager.AUDIOFOCUS_GAIN);
-   
+
 if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
     am.registerMediaButtonEventReceiver(RemoteControlReceiver);
     // Start playback.
@@ -80,7 +80,7 @@
 this allows any interupted app to continue playback.</p>
 
 <pre>
-// Abandon audio focus when playback complete    
+// Abandon audio focus when playback complete
 am.abandonAudioFocus(afChangeListener);
 </pre>
 
@@ -97,7 +97,7 @@
                              AudioManager.STREAM_MUSIC,
                              // Request permanent focus.
                              AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
-   
+
 if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
     // Start playback.
 }
@@ -111,7 +111,7 @@
 registered when requesting focus.</p>
 
 
-<h2 id="HandleFocusLoss">Handle the Loss of Audio Focus</h2> 
+<h2 id="HandleFocusLoss">Handle the Loss of Audio Focus</h2>
 
 <p>If your app can request audio focus, it follows that it will in turn lose that focus when another
 app requests it. How your app responds to a loss of audio focus depends on the manner of that
@@ -139,26 +139,27 @@
 unregisters our media button event receiver and stops monitoring audio focus changes.<p>
 
 <pre>
-OnAudioFocusChangeListener afChangeListener = new OnAudioFocusChangeListener() {
-    public void onAudioFocusChange(int focusChange) {
-        if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT
-            // Pause playback
-        } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
-            // Resume playback 
-        } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
-            am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);
-            am.abandonAudioFocus(afChangeListener);
-            // Stop playback
+AudioManager.OnAudioFocusChangeListener afChangeListener =
+    new AudioManager.OnAudioFocusChangeListener() {
+        public void onAudioFocusChange(int focusChange) {
+            if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT) {
+                // Pause playback
+            } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
+                // Resume playback
+            } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
+                am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);
+                am.abandonAudioFocus(afChangeListener);
+                // Stop playback
+            }
         }
-    }
-};
+    };
 </pre>
- 
+
 <p>In the case of a transient loss of audio focus where ducking is permitted, rather than pausing
 playback, you can "duck" instead.</p>
 
 
-<h2 id="DUCK">Duck!</h2> 
+<h2 id="DUCK">Duck!</h2>
 
 <p>Ducking is the process of lowering your audio stream output volume to make transient audio from
 another app easier to hear without totally disrupting the audio from your own application.</p>
diff --git a/docs/html/training/material/animations.jd b/docs/html/training/material/animations.jd
index 6f263db..9c78545 100644
--- a/docs/html/training/material/animations.jd
+++ b/docs/html/training/material/animations.jd
@@ -85,7 +85,7 @@
 int cy = myView.getHeight() / 2;
 
 // get the final radius for the clipping circle
-int finalRadius = Math.max(myView.getWidth(), myView.getHeight());
+float finalRadius = (float) Math.hypot(cx, cy);
 
 // create the animator for this view (the start radius is zero)
 Animator anim =
@@ -107,7 +107,7 @@
 int cy = myView.getHeight() / 2;
 
 // get the initial radius for the clipping circle
-int initialRadius = myView.getWidth();
+float initialRadius = (float) Math.hypot(cx, cy);
 
 // create the animation (the final radius is zero)
 Animator anim =
@@ -194,16 +194,16 @@
   <strong>Figure 2</strong> - A scene transition with one shared element.
 </p>
 
-<h3>Specify custom transitions</h3>
+<h3 id="custom-trans">Specify custom transitions</h3>
 
-<p>First, enable window content transitions with the <code>android:windowContentTransitions</code>
+<p>First, enable window content transitions with the <code>android:windowActivityTransitions</code>
 attribute when you define a style that inherits from the material theme. You can also specify
 enter, exit, and shared element transitions in your style definition:</p>
 
 <pre>
 &lt;style name="BaseAppTheme" parent="android:Theme.Material">
   &lt;!-- enable window content transitions -->
-  &lt;item name="android:windowContentTransitions">true&lt;/item>
+  &lt;item name="android:windowActivityTransitions">true&lt;/item>
 
   &lt;!-- specify enter and exit transitions -->
   &lt;item name="android:windowEnterTransition">@transition/explode&lt;/item>
diff --git a/docs/html/training/material/drawables.jd b/docs/html/training/material/drawables.jd
index c58075e..eb9d273 100644
--- a/docs/html/training/material/drawables.jd
+++ b/docs/html/training/material/drawables.jd
@@ -14,6 +14,8 @@
 <ul>
   <li><a href="http://www.google.com/design/spec">Material design specification</a></li>
   <li><a href="{@docRoot}design/material/index.html">Material design on Android</a></li>
+  <li><a href="{@docRoot}tools/help/vector-asset-studio.html">Vector Asset Studio</a></li>
+  <li><a href="{@docRoot}tools/help/image-asset-studio.html">Image Asset Studio</a></li>
 </ul>
 </div>
 </div>
diff --git a/docs/html/training/material/index.jd b/docs/html/training/material/index.jd
index 6e07860..4001e6b 100644
--- a/docs/html/training/material/index.jd
+++ b/docs/html/training/material/index.jd
@@ -59,3 +59,22 @@
   <dt><a href="{@docRoot}training/material/compatibility.html">Maintaining Compatibility</a></dt>
   <dd>Learn how to maintain compatibility with platform versions earlier than Android 5.0.</dd>
 </dl>
+
+<h2>Video Training</h2>
+
+<div class="wrap">
+  <div class="cols">
+    <div class="col-1of2">
+      <p>If you prefer to learn through interactive video training, check out this online course
+      about material design for Android developers.</p>
+      <p><a href="https://www.udacity.com/course/ud862" class="button">
+        Start the video course</a>
+      </p>
+    </div>
+    <div class="col-1of2">
+      <iframe width="300" height="169"
+      src="//www.youtube.com/embed/eKJ3aMGM-WM?autohide=1&amp;showinfo=0"
+      frameborder="0" allowfullscreen="" style="float: right; margin: 0 0 20px 20px;"></iframe>
+    </div>
+  </div>
+</div>
diff --git a/docs/html/training/monitoring-device-state/battery-monitoring.jd b/docs/html/training/monitoring-device-state/battery-monitoring.jd
index a202566..db75aaf 100644
--- a/docs/html/training/monitoring-device-state/battery-monitoring.jd
+++ b/docs/html/training/monitoring-device-state/battery-monitoring.jd
@@ -3,12 +3,14 @@
 parent.link=index.html
 
 trainingnavtop=true
-next.title=Determining and Monitoring the Docking State and Type
-next.link=docking-monitoring.html
-
+parent.link=index.html
+previous.title=Optimizing for Doze and App Standby
+previous.link=doze-standby.html
+next.title= Determining and Monitoring the Connectivity Status
+next.link=connectivity-monitoring.html
 @jd:body
- 
-<div id="tb-wrapper"> 
+
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>This lesson teaches you to</h2>
@@ -24,9 +26,9 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters</a>
 </ul>
 
-</div> 
 </div>
- 
+</div>
+
 <p>When you're altering the frequency of your background updates to reduce the effect of those
 updates on battery life, checking the current battery level and charging state is a good place to
 start.</p>
@@ -41,8 +43,8 @@
 even stopping&mdash;your updates when the battery charge is nearly exhausted.</p>
 
 
-<h2 id="DetermineChargeState">Determine the Current Charging State</h2> 
- 
+<h2 id="DetermineChargeState">Determine the Current Charging State</h2>
+
 <p>Start by determining the current charge status. The {@link android.os.BatteryManager}
 broadcasts all battery and charging details in a sticky {@link android.content.Intent} that includes
 the charging status.</p>
@@ -74,13 +76,13 @@
 further if the battery is discharging.</p>
 
 
-<h2 id="MonitorChargeState">Monitor Changes in Charging State</h2> 
+<h2 id="MonitorChargeState">Monitor Changes in Charging State</h2>
 
 <p>The charging status can change as easily as a device can be plugged in, so it's important to
 monitor the charging state for changes and alter your refresh rate accordingly.</p>
 
 <p>The {@link android.os.BatteryManager} broadcasts an action whenever the device is connected or
-disconnected from power. It's important to to receive these events even while your app isn't
+disconnected from power. It's important to receive these events even while your app isn't
 running&mdash;particularly as these events should impact how often you start your app in order to
 initiate a background update&mdash;so you should register a {@link
 android.content.BroadcastReceiver} in your manifest to listen for both events by defining the
@@ -99,11 +101,11 @@
 
 <pre>public class PowerConnectionReceiver extends BroadcastReceiver {
     &#64;Override
-    public void onReceive(Context context, Intent intent) { 
+    public void onReceive(Context context, Intent intent) {
         int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
         boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
                             status == BatteryManager.BATTERY_STATUS_FULL;
-    
+
         int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
         boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
         boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
@@ -111,7 +113,7 @@
 }</pre>
 
 
-<h2 id="CurrentLevel">Determine the Current Battery Level</h2> 
+<h2 id="CurrentLevel">Determine the Current Battery Level</h2>
 
 <p>In some cases it's also useful to determine the current battery level. You may choose to reduce
 the rate of your background updates if the battery charge is below a certain level.</p>
@@ -125,7 +127,7 @@
 float batteryPct = level / (float)scale;</pre>
 
 
-<h2 id="MonitorLevel">Monitor Significant Changes in Battery Level</h2> 
+<h2 id="MonitorLevel">Monitor Significant Changes in Battery Level</h2>
 
 <p>You can't easily continually monitor the battery state, but you don't need to.</p>
 
@@ -154,3 +156,6 @@
 lesson shows you how to determine the current dock state and monitor for changes in device
 docking.</p>
 
+
+
+
diff --git a/docs/html/training/monitoring-device-state/connectivity-monitoring.jd b/docs/html/training/monitoring-device-state/connectivity-monitoring.jd
index fb5096d..d5e7a85 100644
--- a/docs/html/training/monitoring-device-state/connectivity-monitoring.jd
+++ b/docs/html/training/monitoring-device-state/connectivity-monitoring.jd
@@ -87,5 +87,5 @@
 It's generally sufficient to simply check for Internet connectivity before beginning an update and,
 should there be none, suspend further updates until connectivity is restored.</p>
 
-<p>This technique requires toggling broadcast receivers you've declard in the manifest, which is
+<p>This technique requires toggling broadcast receivers you've declared in the manifest, which is
 described in the next lesson.</p>
diff --git a/docs/html/training/monitoring-device-state/docking-monitoring.jd b/docs/html/training/monitoring-device-state/docking-monitoring.jd
index 5c8bfd6..0994b63 100644
--- a/docs/html/training/monitoring-device-state/docking-monitoring.jd
+++ b/docs/html/training/monitoring-device-state/docking-monitoring.jd
@@ -3,14 +3,14 @@
 parent.link=index.html
 
 trainingnavtop=true
-previous.title= Monitoring the Battery Level and Charging State
-previous.link=battery-monitoring.html
+next.title=Optimizing for Power-Saving
+next.link=battery-optimization.html
 next.title= Determining and Monitoring the Connectivity Status
 next.link=connectivity-monitoring.html
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
 <h2>This lesson teaches you to</h2>
@@ -26,7 +26,7 @@
   <li><a href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>Android devices can be docked into several different kinds of docks. These include car or home
@@ -42,8 +42,8 @@
 query if the device is docked or not, and if so, in which kind of dock.</p>
 
 
-<h2 id="CurrentDockState">Determine the Current Docking State</h2> 
- 
+<h2 id="CurrentDockState">Determine the Current Docking State</h2>
+
 <p>The dock-state details are included as an extra in a sticky broadcast of the {@link
 android.content.Intent#ACTION_DOCK_EVENT} action. Because it's sticky, you don't need to register a
 {@link android.content.BroadcastReceiver}. You can simply call {@link
@@ -59,9 +59,9 @@
 boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;</pre>
 
 
-<h2 id="DockType">Determine the Current Dock Type</h2> 
+<h2 id="DockType">Determine the Current Dock Type</h2>
 
-<p>If a device is docked, it can be docked in any one of four different type of dock: 
+<p>If a device is docked, it can be docked in any one of four different type of dock:
 <ul><li>Car</li>
 <li>Desk</li>
 <li>Low-End (Analog) Desk</li>
@@ -72,12 +72,12 @@
 being digital or analog specifically:</p>
 
 <pre>boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
-boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK || 
+boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
                  dockState == EXTRA_DOCK_STATE_LE_DESK ||
                  dockState == EXTRA_DOCK_STATE_HE_DESK;</pre>
 
 
-<h2 id="MonitorDockState">Monitor for Changes in the Dock State or Type</h2> 
+<h2 id="MonitorDockState">Monitor for Changes in the Dock State or Type</h2>
 
 <p>Whenever the device is docked or undocked, the {@link
 android.content.Intent#ACTION_DOCK_EVENT} action is broadcast. To monitor changes in the
diff --git a/docs/html/training/monitoring-device-state/doze-standby.jd b/docs/html/training/monitoring-device-state/doze-standby.jd
new file mode 100644
index 0000000..11e81c1
--- /dev/null
+++ b/docs/html/training/monitoring-device-state/doze-standby.jd
@@ -0,0 +1,493 @@
+page.title=Optimizing for Doze and App Standby
+page.metaDescription=Test and optimize your app for the power-saving features in Android 6.0.
+page.tags=doze, app standby, marshmallow, alarms
+meta.tags="battery", "marshmallow", "alarms"
+page.image=images/cards/card-doze_16-9_2x.png
+
+
+parent.link=index.html
+
+trainingnavtop=true
+next.title=Monitoring the Battery Level and Charging State
+next.link=battery-monitoring.html
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+    <h2>In this document</h2>
+    <ol>
+      <li><a href="#understand_doze">Understanding Doze</a>
+      <ol>
+        <li><a href="#restrictions">Doze restrictions</a></li>
+        <li><a href="#assessing_your_app">Adapting your app to Doze</a></li>
+      </ol>
+      </li>
+      <li><a href="#understand_app_standby">Understanding App Standby</a></li>
+      <li><a href="#using_gcm">Using GCM to Interact with Your App</a></li>
+      <li><a href="#support_for_other_use_cases">Support for Other Use Cases</a></li>
+      <li><a href="#testing_doze_and_app_standby">Testing with Doze and App
+Standby</a>
+      <ol>
+        <li><a href="#testing_doze">Testing your app with Doze</a></li>
+        <li><a href="#testing_your_app_with_app_standby">Testing your app with App Standby</a></li>
+      </ol>
+      </li>
+      <li><a href="#whitelisting-cases">Acceptable Use Cases for Whitelisting</a></li>
+    </ol>
+  </div>
+</div>
+
+<p>
+  Starting from Android 6.0 (API level 23), Android introduces two
+  power-saving features that extend battery life for users by managing how apps behave when a
+  device is not connected to a power source. <em>Doze</em> reduces battery consumption by deferring
+  background CPU and network activity for apps when the device is unused for long periods
+  of time. <em>App Standby</em> defers background network activity for apps
+  with which the user has not recently interacted.
+</p>
+
+<p>
+  Doze and App Standby manage the behavior of all apps running on Android 6.0
+  or higher, regardless whether they are specifically targeting API level 23.
+  To ensure the best experience for users, test your app in Doze and App
+  Standby modes and make any necessary adjustments to your code. The sections
+  below provide details.
+</p>
+
+
+<h2 id="understand_doze">Understanding Doze</h2>
+<p>
+  If a user leaves a device unplugged and stationary for a period of time, with
+  the screen off, the device enters Doze mode. In Doze mode, the system
+  attempts to conserve battery by restricting apps' access to network and
+  CPU-intensive services. It also prevents apps from accessing the network and
+  defers their jobs, syncs, and standard alarms.
+</p>
+
+<p>
+  Periodically, the system exits Doze for a brief time to let apps complete
+  their deferred activities. During this <em>maintenance window</em>, the
+  system runs all pending syncs, jobs, and alarms, and lets apps access the
+  network.
+</p>
+
+<div style="margin:1em 0em;">
+  <img src="{@docRoot}images/training/doze.png">
+  <p class="img-caption" style="text-align:center;">
+    <strong>Figure 1.</strong> Doze provides a recurring maintenance window for apps to use the
+    network and handle pending activities.
+  </p>
+</div>
+
+<p>
+  At the conclusion of each maintenance window, the system again enters Doze,
+  suspending network access and deferring jobs, syncs, and alarms. Over time,
+  the system schedules maintenance windows less and less frequently, helping to
+  reduce battery consumption in cases of longer-term inactivity when the device is not
+  connected to a charger.
+</p>
+
+
+<p>
+  As soon as the user wakes the device by moving it, turning on the screen, or
+  connecting a charger, the system exits Doze and all apps return to normal
+  activity.
+</p>
+
+
+<h3 id="restrictions">Doze restrictions</h3>
+
+<p>
+  The following restrictions apply to your apps while in Doze:
+</p>
+
+<ul>
+  <li>Network access is suspended.
+  </li>
+
+  <li>The system ignores <a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">
+  wake locks</a>.
+  </li>
+
+  <li>Standard {@link android.app.AlarmManager} alarms (including {@link
+  android.app.AlarmManager#setExact(int, long, android.app.PendingIntent) setExact()} and
+  {@link android.app.AlarmManager#setWindow(int, long, long,
+  android.app.PendingIntent) setWindow()}) are deferred to the next maintenance window.
+  </li>
+
+  <li style="list-style: none; display: inline">
+    <ul>
+      <li>If you need to set alarms that fire while in Doze, use {@link
+      android.app.AlarmManager#setAndAllowWhileIdle(int,long,android.app.PendingIntent)
+      setAndAllowWhileIdle()}
+      or {@link android.app.AlarmManager#setExactAndAllowWhileIdle(int, long,
+      android.app.PendingIntent) setExactAndAllowWhileIdle()}.
+      </li>
+
+      <li>Alarms set with {@link
+      android.app.AlarmManager#setAlarmClock(android.app.AlarmManager.AlarmClockInfo,
+      android.app.PendingIntent) setAlarmClock()} continue to fire normally &mdash; the system
+      exits Doze shortly before those alarms fire.
+      </li>
+    </ul>
+  </li>
+
+  <li>The system does not perform Wi-Fi scans.
+  </li>
+
+  <li>The system does not allow
+  <a href="{@docRoot}reference/android/content/AbstractThreadedSyncAdapter.html">sync adapters</a>
+  to run.
+  </li>
+
+  <li>The system does not allow {@link android.app.job.JobScheduler} to run.
+  </li>
+</ul>
+
+
+<div id="qv-wrapper">
+<div id="qv" style="width:300px">
+<h2>Doze checklist</h2>
+<ol>
+<ul>
+  <li>If possible, use GCM for <a href=
+  "https://developers.google.com/cloud-messaging/downstream">downstream
+  messaging</a>.
+  </li>
+
+  <li>If your users must see a notification right away, make sure to use a <a href=
+  "https://developers.google.com/cloud-messaging/concept-options#setting-the-priority-of-a-message">GCM
+  high priority message</a>.
+  </li>
+
+  <li>Provide sufficient information within the initial <a href=
+  "https://developers.google.com/cloud-messaging/concept-options#payload">message
+  payload</a>, so subsequent network access is unnecessary.
+  </li>
+
+  <li>Set critical alarms with {@link
+  android.app.AlarmManager#setAndAllowWhileIdle(int, long,
+  android.app.PendingIntent) setAndAllowWhileIdle()} and {@link
+  android.app.AlarmManager#setExactAndAllowWhileIdle(int, long,
+  android.app.PendingIntent) setExactAndAllowWhileIdle()}.
+  </li>
+
+  <li>
+    <a href="#testing_doze">Test your app in Doze.</a>
+  </li>
+</ul>
+</ol>
+</div>
+</div>
+
+<h3 id="assessing_your_app">Adapting your app to Doze</h3>
+
+<p>
+  Doze can affect apps differently, depending on the capabilities they offer
+  and the services they use. Many apps function normally across Doze
+  cycles without modification. In some cases, you must optimize the way
+  that your app manages network, alarms, jobs, and syncs. Apps should be able
+  to efficiently manage activities during each maintenance window.
+</p>
+<p>
+  Doze is particularly likely to affect activities that {@link android.app.AlarmManager} alarms and
+  timers manage, because alarms in Android 5.1 (API level 22) or lower do not fire when the system
+  is in Doze.
+</p>
+
+<p>
+  To help with scheduling alarms, Android 6.0 (API level 23) introduces two new
+  {@link android.app.AlarmManager} methods: {@link
+  android.app.AlarmManager#setAndAllowWhileIdle(int, long,
+  android.app.PendingIntent) setAndAllowWhileIdle()} and {@link
+  android.app.AlarmManager#setExactAndAllowWhileIdle(int, long,
+  android.app.PendingIntent) setExactAndAllowWhileIdle()}. With these methods,
+  you can set alarms that will fire even if the device is in Doze.
+</p>
+
+<p class="note"><strong>Note:</strong> Neither
+{@link
+  android.app.AlarmManager#setAndAllowWhileIdle(int, long,
+  android.app.PendingIntent) setAndAllowWhileIdle()} nor {@link
+  android.app.AlarmManager#setExactAndAllowWhileIdle(int, long,
+  android.app.PendingIntent) setExactAndAllowWhileIdle()} can fire alarms more than once per 15
+minutes per app.</p>
+
+<p>
+  The Doze restriction on network access is also likely to affect your app,
+  especially if the app relies on real-time messages such as tickles or
+  notifications. If your app requires a persistent connection to the network to
+  receive messages, you should use <a href="#using_gcm">Google Cloud Messaging (GCM)</a>
+  if possible.
+</p>
+
+<p>
+  To confirm that your app behaves as expected with Doze, you can use adb commands to force the
+  system to enter and exit Doze and observe your app’s behavior. For details, see
+  <a href="#testing_doze_and_app_standby">Testing with Doze and App Standby</a>.
+</p>
+
+<h2 id="understand_app_standby">Understanding App Standby</h2>
+
+<p>
+  App Standby allows the system to determine that an app is idle when the user
+  is not actively using it. The system makes this determination when the user
+  does not touch the app for a certain period of time and none of the following
+  conditions applies:
+</p>
+
+<ul>
+  <li>The user explicitly launches the app.
+  </li>
+
+  <li>The app has a process currently in the foreground (either as an activity
+  or foreground service, or in use by another activity or foreground service).
+  </li>
+
+  <li>The app generates a notification that users see on the lock screen or in
+  the notification tray.
+  </li>
+</ul>
+
+<p>
+  When the user plugs the device into a power supply, the system releases apps
+  from the standby state, allowing them to freely access the network and to
+  execute any pending jobs and syncs. If the device is idle for long periods of
+  time, the system allows idle apps network access around once a day.
+</p>
+
+<h2 id="using_gcm">Using GCM to Interact with Your App While the Device is Idle</h2>
+
+<p>
+  <a href="https://developers.google.com/cloud-messaging/">Google Cloud
+  Messaging (GCM)</a> is a cloud-to-device service that lets you support
+  real-time downstream messaging between backend services and apps on
+  Android devices. GCM provides a single, persistent connection to the cloud; all apps needing
+  real-time messaging can share this connection. This shared
+  connection significantly optimizes battery consumption by making it unnecessary for
+  multiple apps to maintain their own, separate persistent connections, which can
+  deplete the battery rapidly. For this reason, if your app requires messaging integration with a
+  backend service, we strongly recommend that you <strong>use GCM if possible</strong>, rather than
+  maintaining your own persistent network connection.
+</p>
+
+<p>
+  GCM is optimized to work with Doze and App Standby idle modes by means of
+  <a href="https://developers.google.com/cloud-messaging/concept-options#setting-the-priority-of-a-message">
+  high-priority GCM messages</a>. GCM high-priority messages let you reliably wake your app to
+  access the network, even if the user’s device is in Doze or the app is in App Standby mode.
+  In Doze or App Standby mode, the system delivers the message and gives the
+  app temporary access to network services and partial wakelocks, then returns the device or app
+  to idle state.
+</p>
+
+<p>
+  High-priority GCM messages do not otherwise affect Doze mode, and they don’t
+  affect the state of any other app. This means that your app can use them to communicate
+  efficiently while minimizing battery impacts across the system and device.
+</p>
+
+<p>
+  As a general best practice, if your app requires downstream messaging, it
+  should use GCM. If your server and client already uses GCM, make sure that your service uses
+  high-priority messages for critical messages, since this will reliably
+  wake apps even when the device is in Doze.
+</p>
+
+<h2 id="support_for_other_use_cases">Support for Other Use Cases</h2>
+
+<p>
+  Almost all apps should be able to support Doze by managing network connectivity, alarms,
+  jobs, and syncs properly, and using GCM high-priority messages. For a narrow
+  set of use cases, this might not be sufficient. For such cases, the system
+  provides a configurable whitelist of apps that are <strong>partially
+  exempt</strong> from Doze and App Standby optimizations.
+</p>
+
+<p>
+  An app that is whitelisted can use the network and hold
+
+  <a href="{@docRoot}reference/android/os/PowerManager.html#PARTIAL_WAKE_LOCK">
+  partial wake locks</a> during Doze and
+  App Standby. However, <strong>other restrictions still apply</strong> to the
+  whitelisted app, just as they do to other apps. For example, the whitelisted
+  app’s jobs and syncs are deferred, and its regular {@link android.app.AlarmManager} alarms do not
+  fire. An app can check whether it is currently on the exemption whitelist by
+  calling {@link
+  android.os.PowerManager#isIgnoringBatteryOptimizations(java.lang.String)
+  isIgnoringBatteryOptimizations()}.
+  </li>
+</p>
+
+<p>
+  Users can manually configure the whitelist in <strong>Settings &gt; Battery
+  &gt; Battery Optimization.</strong> Alternatively, the system provides
+  ways for apps to ask users to whitelist them.
+
+</p>
+
+<ul>
+  <li>An app can fire the {@link
+  android.provider.Settings#ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS} intent
+  to take the user directly to the <strong>Battery Optimization</strong>, where they can
+  add the app.
+  </li>
+
+  <li>An app holding the {@link
+  android.Manifest.permission#REQUEST_IGNORE_BATTERY_OPTIMIZATIONS} permission
+  can trigger a system dialog to let the user add the app to the whitelist
+  directly, without going to settings. The app fires a {@link
+  android.provider.Settings#ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS} Intent
+  to trigger the dialog.
+  </li>
+
+  <li>The user can manually remove apps from the whitelist as needed.
+  </li>
+</ul>
+
+<p>Before asking the user to add your app to the whitelist, make sure the app
+
+matches the <a href="#whitelisting-cases">acceptable use cases</a> for whitelisting.</p>
+
+
+<p class="caution">
+  <strong>Note:</strong> Google Play policies prohibit apps from requesting
+  direct exemption from Power Management features in Android 6.0+ (Doze and App
+  Standby) unless the core function of the app is adversely affected.
+</p>
+
+<h2 id="testing_doze_and_app_standby">Testing with Doze and App Standby</h2>
+
+<p>
+  To ensure a great experience for your users, you should test your app fully
+  in Doze and App Standby.
+</p>
+
+<h3 id="testing_doze">Testing your app with Doze</h4>
+
+<p>You can test Doze mode by following these steps:</p>
+<ol>
+  <li>Configure a hardware device or virtual device with an Android 6.0 (API
+  level 23) or higher system image.
+  </li>
+
+  <li>Connect the device to your development machine and install your app.
+  </li>
+
+  <li>Run your app and leave it active.
+  </li>
+
+  <li>Shut off the device screen. (The app remains active.)
+  </li>
+
+  <li>Force the system to cycle through Doze modes by running the following
+  commands:
+
+  <pre class="no-pretty-print">
+$ adb shell dumpsys battery unplug
+$ adb shell dumpsys deviceidle step</pre>
+
+  <p>You may need to run the second command more than once. Repeat it until
+  the device state changes to idle.</p>
+  </li>
+
+  <li> Observe the behavior of your app after you reactivate the device. Make
+  sure the app recovers gracefully when the device exits Doze.
+  </li>
+</ol>
+
+<h3 id="testing_your_app_with_app_standby">Testing your app with App Standby</h4>
+
+<p>To test the App Standby mode with your app:</p>
+
+<ol>
+  <li> Configure a hardware device or virtual device with an Android 6.0 (API level
+  23) or higher system image.
+  </li>
+  <li> Connect the device to your development machine and install your app.</li>
+  <li> Run your app and leave it active.</li>
+  <li> Force the app into App Standby mode by running the following commands:
+
+  <pre class="no-pretty-print">$ adb shell dumpsys battery unplug
+$ adb shell am set-inactive &lt;packageName&gt; true</pre>
+  <li>Simulate waking your app using the following commands:
+
+  <pre class="no-pretty-print">$ adb shell am set-inactive &lt;packageName&gt; false
+$ adb shell am get-inactive &lt;packageName&gt;</pre>
+  </li>
+  <li>Observe the behavior of your app after waking it. Make sure the app recovers gracefully
+    from standby mode. In particular, you should check if your app's Notifications and background
+    jobs continue to function as expected.
+  </li>
+</ol>
+
+
+<h2 id="whitelisting-cases">Acceptable Use Cases for Whitelisting</h2>
+
+<p>The table below highlights the acceptable use cases for requesting or being on
+   the Battery Optimizations exceptions whitelist. In general, your app should not be on the
+   whitelist unless Doze or App Standby break the core function of the app or there is a
+   technical reason why your app cannot use GCM high-priority messages.</p>
+
+   <p>For more information, see <a href="#support_for_other_use_cases">Support for Other Use Cases
+   </a>.</p>
+
+<table>
+ <tr>
+    <th>Type</td>
+    <th>Use-case</td>
+    <th>Can use GCM?</td>
+    <th>Whitelisting acceptable?</td>
+    <th>Notes</td>
+ </tr>
+
+ <tr>
+    <td rowspan="2">Instant messaging, chat, or calling app. </td>
+    <td rowspan="3">Requires delivery of real-time messages to users while device is in Doze or app
+    is in App Standby.</td>
+    <td>Yes, using GCM</td>
+    <td rowspan="2" style="color:red">Not Acceptable</td>
+    <td rowspan="2">Should use GCM high-priority messages to wake the app and access the network.</td>
+ </tr>
+
+ <tr>
+    <td>Yes, but is not using GCM high-priority messages.</td>
+ </tr>
+
+ <tr>
+    <td rowspan="1">Instant messaging, chat, or calling app;
+    enterprise VOIP apps.</td>
+    <td>No, can not use GCM because of technical dependency on another messaging
+    service or Doze and App Standby break the core function of the app.</td>
+    <td style="color:green">Acceptable</td>
+    <td></td>
+ </tr>
+
+  <tr>
+    <td rowspan="1">Task automation app</td>
+    <td>App's core function is scheduling automated actions, such as for instant
+    messaging, voice calling, new photo management, or location actions.</td>
+    <td>If applicable.</td>
+    <td style="color:green">Acceptable</td>
+    <td></td>
+ </tr>
+
+  <tr>
+    <td rowspan="2">Peripheral device companion app</td>
+    <td>App's core function is maintaining a persistent connection with the peripheral
+    device for the purpose of providing the peripheral device internet access.</td>
+    <td >If applicable.</td>
+    <td style="color:green">Acceptable</td>
+    <td rowspan="2"></td>
+  </tr>
+
+  <tr>
+    <td>App only needs to connect to a peripheral device periodically to sync, or only
+    needs to connect to devices, such as wireless headphones, connected via standard
+    Bluetooth profiles.</td>
+    <td >If applicable.</td>
+    <td style="color:red">Not Acceptable</td>
+  </tr>
+</table>
+
+
diff --git a/docs/html/training/monitoring-device-state/index.jd b/docs/html/training/monitoring-device-state/index.jd
index 949c1da..1e1ce20 100644
--- a/docs/html/training/monitoring-device-state/index.jd
+++ b/docs/html/training/monitoring-device-state/index.jd
@@ -1,17 +1,19 @@
 page.title=Optimizing Battery Life
-page.tags=network,internet
+page.tags=battery,network,internet
+page.metaDescription=Learn how to optimize your app to reduce battery drain and use power-hungry resources efficiently.
+
+page.article=true
 
 trainingnavtop=true
 startpage=true
 
 @jd:body
 
-<div id="tb-wrapper"> 
+<div id="tb-wrapper">
 <div id="tb">
 
-<h2>Dependencies and prerequisites</h2> 
+<h2>Dependencies and prerequisites</h2>
 <ul>
-  <li>Android 2.0 (API level 5) or higher</li>
   <li>Experience with <a href="{@docRoot}guide/components/intents-filters.html">Intents and Intent Filters</a></li>
 </ul>
 
@@ -20,24 +22,34 @@
   <li><a href="{@docRoot}guide/components/services.html">Services</a>
 </ul>
 
-</div> 
+</div>
 </div>
 
 <p>For your app to be a good citizen, it should seek to limit its impact on the battery life of its
-host device. After this class you will be able to build apps that monitor modify their functionality
-and behavior based on the state of the host device.</p>
+device. After this class you will be able to build apps that modify their functionality
+and behavior based on the state of its device.</p>
 
-<p>By taking steps such as disabling background service updates when you lose connectivity, or
-reducing the rate of such updates when the battery level is low, you can ensure that the impact of
-your app on battery life is minimized, without compromising the user experience.</p>
+<p>By taking steps such as batching network requests, disabling background service updates when you
+lose connectivity, or reducing the rate of such updates when the battery level is low, you can
+ensure that the impact of your app on battery life is minimized, without compromising the user
+experience.</p>
 
-<h2>Lessons</h2> 
- 
+<h2>Lessons</h2>
+
 <!-- Create a list of the lessons in this class along with a short description of each lesson.
 These should be short and to the point. It should be clear from reading the summary whether someone
-will want to jump to a lesson or not.--> 
- 
+will want to jump to a lesson or not.-->
+
 <dl>
+  <dt><b><a href="{@docRoot}training/performance/battery/network/index.html">Reducing Network Battery
+Drain</a></b></dt>
+  <dd>Learn how to analyze your app's use of network resources and optimize it to reduce
+power consumption.</dd>
+
+  <dt><b><a href="doze-standby.html">Optimizing for Doze and App Standby</a></b></dt>
+  <dd>Learn how to test and optimize your app for the power-management features introduced in
+  Android 6.0 Marshmallow.</dd>
+
   <dt><b><a href="battery-monitoring.html">Monitoring the Battery Level and Charging State</a></b></dt>
   <dd>Learn how to alter your app's update rate by determining, and monitoring, the current battery
 level and changes in charging state.</dd>
@@ -50,7 +62,7 @@
 
   <dt><b><a href="connectivity-monitoring.html">Determining and Monitoring the Connectivity
 Status</a></b></dt>
-  <dd>Without Internet connectivity you can't update your app from an online source. Learn how to  
+  <dd>Without Internet connectivity you can't update your app from an online source. Learn how to
 check the connectivity status to alter your background update rate. You'll also learn to check for
 Wi-Fi or mobile connectivity before beginning high-bandwidth operations.</dd>
 
@@ -59,4 +71,4 @@
 those that aren't necessary due to the current device state. Learn to improve
 efficiency by toggling and cascading state change receivers and delay actions until the device is in
 a specific state.</dd>
-</dl> 
+</dl>
diff --git a/docs/html/training/monitoring-device-state/manifest-receivers.jd b/docs/html/training/monitoring-device-state/manifest-receivers.jd
index d4aeed3..ca184aa5 100644
--- a/docs/html/training/monitoring-device-state/manifest-receivers.jd
+++ b/docs/html/training/monitoring-device-state/manifest-receivers.jd
@@ -42,7 +42,7 @@
 
 <h2 id="ToggleReceivers">Toggle and Cascade State Change Receivers to Improve Efficiency </h2> 
  
-<p>Use can use the {@link android.content.pm.PackageManager} to toggle the enabled state on any
+<p>You can use the {@link android.content.pm.PackageManager} to toggle the enabled state on any
 component defined in the manifest, including whichever broadcast receivers you wish to enable or
 disable as shown in the snippet below:</p>
 
diff --git a/docs/html/training/multiple-apks/api.jd b/docs/html/training/multiple-apks/api.jd
old mode 100644
new mode 100755
index f43dcae..504b4e3
--- a/docs/html/training/multiple-apks/api.jd
+++ b/docs/html/training/multiple-apks/api.jd
@@ -153,11 +153,11 @@
 their creation at the following links:</p>
 <ul>
 <li><a
-href="{@docRoot}tools/projects/projects-eclipse.html#SettingUpLibraryProject">Setting up
-a library project (Eclipse)</a></li>
+href="{@docRoot}sdk/installing/create-project.html#SettingUpLibraryModule">Managing Projects
+from Android Studio</a></li>
 <li><a
-href="{@docRoot}tools/projects/projects-cmdline.html#SettingUpLibraryProject">Setting up
-a library project (Command line)</a></li>
+href="{@docRoot}tools/projects/projects-cmdline.html#SettingUpLibraryProject">Managing Projects
+from the Command Line</a></li>
 </ul>
 
 
@@ -176,7 +176,7 @@
 
 <h2 id="CreateAPKs">Create New APK Projects</h2>
 <p>There should be a separate Android project for each APK you’re going to release.  For easy
-organization, place the library project and all related APK projects under the same parent folder. 
+organization, place the library project and all related APK projects under the same parent folder.
 Also remember that each APK needs to have the same package name, although they don’t necessarily
 need to share the package name with the library.  If you were to have 3 APKs following the scheme
 described earlier, your root directory might look like this:</p>
@@ -278,7 +278,7 @@
 </table>
 
 <p>
-Now, let’s further assume that the Red APK has some requirement on it that the other two don’t.  
+Now, let’s further assume that the Red APK has some requirement on it that the other two don’t.
 <a href="{@docRoot}google/play/filters.html">Filters on Google Play</a> page of
 the Android Developer guide has a whole list of possible culprits.  For the
 sake of example, let’s assume that red requires a front-facing camera.  In fact, the entire point of
diff --git a/docs/html/training/multiple-apks/multiple.jd b/docs/html/training/multiple-apks/multiple.jd
old mode 100644
new mode 100755
index ccee397..2501564
--- a/docs/html/training/multiple-apks/multiple.jd
+++ b/docs/html/training/multiple-apks/multiple.jd
@@ -169,7 +169,7 @@
 easier to ask your cubie than "Have we tested  the 3-to-10 xlarge APK against the Xoom?"  Print this
 chart out and hand it to every person working on your codebase.  Life just got a lot easier.</p>
 
-<h2 id="CreateLibrary">Put All Common Code and Resources in a Library Project.</h2>
+<h2 id="CreateLibrary">Put All Common Code and Resources in a Library Project</h2>
 
 <p>Whether you’re modifying an existing Android application or starting one from scratch, this is
 the first thing that you should do to the codebase, and by the far the most important.  Everything
@@ -182,11 +182,11 @@
 their creation at the following links:</p>
 <ul>
 <li><a
-href="{@docRoot}tools/projects/projects-eclipse.html#SettingUpLibraryProject">Setting up
-a library project (Eclipse)</a></li>
+href="{@docRoot}sdk/installing/create-project.html#SettingUpLibraryModule">Managing Projects
+from Android Studio</a></li>
 <li><a
-href="{@docRoot}tools/projects/projects-cmdline.html#SettingUpLibraryProject">Setting up
-a library project (Command line)</a></li>
+href="{@docRoot}tools/projects/projects-cmdline.html#SettingUpLibraryProject">Managing Projects
+from the Command Line</a></li>
 </ul>
 
 <p>If you’re converting an existing application to use multiple APK support,
@@ -204,7 +204,7 @@
 
 <h2 id="CreateAPKs">Create New APK Projects</h2>
 <p>There should be a separate Android project for each APK you’re going to release.  For easy
-organization, place the library project and all related APK projects under the same parent folder. 
+organization, place the library project and all related APK projects under the same parent folder.
 Also remember that each APK needs to have the same package name, although they don’t necessarily
 need to share the package name with the library.  If you were to have 3 APKs following the scheme
 described earlier, your root directory might look like this:</p>
diff --git a/docs/html/training/multiple-apks/screensize.jd b/docs/html/training/multiple-apks/screensize.jd
old mode 100644
new mode 100755
index c7941c4..a482f67
--- a/docs/html/training/multiple-apks/screensize.jd
+++ b/docs/html/training/multiple-apks/screensize.jd
@@ -58,7 +58,7 @@
 though multiple APK support is the best solution, but this often isn’t the case.  The <a
 href="{@docRoot}google/play/publishing/multiple-apks.html#ApiLevelOptions">Using Single APK
 Instead</a> section of the multiple APK developer guide includes some useful information on how to
-accomplish this with a single APK, including use of our support library. You should also read the 
+accomplish this with a single APK, including use of our support library. You should also read the
 guide to <a href="{@docRoot}guide/practices/screens_support.html">supporting multiple screens</a>,
 and there’s even a <a
 href="http://android-developers.blogspot.com/2011/03/fragments-for-all.html">support library</a> you
@@ -118,7 +118,7 @@
 now simply refer to each APK as "blue", "green", or "red", no matter how many different screen types
 it covers.</p>
 
-<h2 id="CreateLibrary">Put All Common Code and Resources in a Library Project.</h2>
+<h2 id="CreateLibrary">Put All Common Code and Resources in a Library Project</h2>
 <p>Whether you’re modifying an existing Android application or starting one from scratch, this is
 the first thing that you should do to the codebase, and by the far the most important.  Everything
 that goes into the library project only needs to be updated once (think language-localized strings,
@@ -130,11 +130,11 @@
 their creation at the following links:</p>
 <ul>
 <li><a
-href="{@docRoot}tools/projects/projects-eclipse.html#SettingUpLibraryProject">Setting up
-a library project (Eclipse)</a></li>
+href="{@docRoot}sdk/installing/create-project.html#SettingUpLibraryModule">Managing Projects
+from Android Studio</a></li>
 <li><a
-href="{@docRoot}tools/projects/projects-cmdline.html#SettingUpLibraryProject">Setting up
-a library project (Command line)</a></li>
+href="{@docRoot}tools/projects/projects-cmdline.html#SettingUpLibraryProject">Managing Projects
+from the Command Line</a></li>
 </ul>
 
 
@@ -156,7 +156,7 @@
 
 <h2 id="CreateAPKs">Create New APK Projects</h2>
 <p>There should be a separate Android project for each APK you’re going to release.  For easy
-organization, place the library project and all related APK projects under the same parent folder. 
+organization, place the library project and all related APK projects under the same parent folder.
 Also remember that each APK needs to have the same package name, although they don’t necessarily
 need to share the package name with the library.  If you were to have 3 APKs following the scheme
 described earlier, your root directory might look like this:</p>
@@ -295,7 +295,7 @@
 Also note that instead of taking advantage of the default values (small and
 normal are always true by default), the manifests explicitly set the value for
 each screen size.  This can save you headaches down the line.  For instance, a manifest with a
-target SDK of &lt; 9 will have xlarge automatically set to false, since that size didn’t exist yet. 
+target SDK of &lt; 9 will have xlarge automatically set to false, since that size didn’t exist yet.
 So be explicit!
 </p>
 
diff --git a/docs/html/training/multiple-apks/texture.jd b/docs/html/training/multiple-apks/texture.jd
old mode 100644
new mode 100755
index c49cc95..3ffd64f
--- a/docs/html/training/multiple-apks/texture.jd
+++ b/docs/html/training/multiple-apks/texture.jd
@@ -73,7 +73,7 @@
 
 
 <h2 id="ChartReqs">Chart Your Requirements</h2>
- 
+
 <p>The Android Developer Guide provides a handy reference of some of common supported textures on
 the <a href="{@docRoot}guide/topics/manifest/supports-gl-texture-element.html">supports-gl-texture
 page</a>.  This page also contains some hints as to which phones (or families of phones) support
@@ -113,11 +113,11 @@
 their creation at the following links:</p>
 <ul>
 <li><a
-href="{@docRoot}tools/projects/projects-eclipse.html#SettingUpLibraryProject">Setting up
-a library project (Eclipse)</a></li>
+href="{@docRoot}sdk/installing/create-project.html#SettingUpLibraryModule">Managing Projects
+from Android Studio</a></li>
 <li><a
-href="{@docRoot}tools/projects/projects-cmdline.html#SettingUpLibraryProject">Setting up
-a library project (Command line)</a></li>
+href="{@docRoot}tools/projects/projects-cmdline.html#SettingUpLibraryProject">Managing Projects
+from the Command Line</a></li>
 </ul>
 
 <p>If you’re converting an existing application to use multiple APK support,
@@ -135,7 +135,7 @@
 
 <h2 id="CreateAPKs">Create New APK Projects</h2>
 <p>There should be a separate Android project for each APK you’re going to release.  For easy
-organization, place the library project and all related APK projects under the same parent folder. 
+organization, place the library project and all related APK projects under the same parent folder.
 Also remember that each APK needs to have the same package name, although they don’t necessarily
 need to share the package name with the library.  If you were to have 3 APKs following the scheme
 described earlier, your root directory might look like this:</p>
@@ -194,7 +194,7 @@
     <tr>
       <td class="blueCell">ETC1</td>
       <td class="blueCell">ETC1</td>
-      <td class="blueCell">ETC1</td>      
+      <td class="blueCell">ETC1</td>
     </tr>
     <tr>
       <td></td>
@@ -290,7 +290,7 @@
 supports-screens and compatible-screens, and that you don’t have unintended "uses-feature" values
 that were added as a result of permissions you set in the manifest. In the example above, the APK
 will be invisible to most, if not all devices.</p>
-<p>Why?  By adding the required permission SEND_SMS, the feature requirement of android.hardware.telephony was implicitly added.  Since most (if not all) xlarge devices are tablets without telephony hardware in them, Google Play will filter out this APK in these cases, until future devices come along which are both large enough to report as xlarge screen size, and possess telephony hardware.  
+<p>Why?  By adding the required permission SEND_SMS, the feature requirement of android.hardware.telephony was implicitly added.  Since most (if not all) xlarge devices are tablets without telephony hardware in them, Google Play will filter out this APK in these cases, until future devices come along which are both large enough to report as xlarge screen size, and possess telephony hardware.
 </p>
 <p>Fortunately this is easily fixed by adding the following to your manifest:</p>
 <pre>
diff --git a/docs/html/training/multiscreen/screensizes.jd b/docs/html/training/multiscreen/screensizes.jd
old mode 100644
new mode 100755
index a34c3d5..2cd59ee
--- a/docs/html/training/multiscreen/screensizes.jd
+++ b/docs/html/training/multiscreen/screensizes.jd
@@ -56,9 +56,8 @@
 you should use <code>"wrap_content"</code> and <code>"match_parent"</code> for the width
 and height of some view components. If you use <code>"wrap_content"</code>, the width
 or height of the view is set to the minimum size necessary to fit the content
-within that view, while <code>"match_parent"</code> (also known as
-<code>"fill_parent"</code> before API level 8) makes the component expand to match the size of its
-parent view.</p>
+within that view, while <code>"match_parent"</code> makes the component expand to match the size of
+its parent view.</p>
 
 <p>By using the <code>"wrap_content"</code> and <code>"match_parent"</code> size values instead of
 hard-coded sizes, your views either use only the space required for that
diff --git a/docs/html/training/notepad/codelab/NotepadCodeLab.zip b/docs/html/training/notepad/codelab/NotepadCodeLab.zip
deleted file mode 100644
index cd30f29..0000000
--- a/docs/html/training/notepad/codelab/NotepadCodeLab.zip
+++ /dev/null
Binary files differ
diff --git a/docs/html/training/notepad/index.jd b/docs/html/training/notepad/index.jd
deleted file mode 100644
index 507b232..0000000
--- a/docs/html/training/notepad/index.jd
+++ /dev/null
@@ -1,136 +0,0 @@
-excludeFromSuggestions=true
-page.title=Notepad Tutorial
-parent.title=Tutorials
-@jd:body
-
-
-<p>This tutorial on writing a notepad application gives you a &quot;hands-on&quot; introduction
-to the Android framework and the  tools you use to build  applications on it.
-Starting from a preconfigured project file, it guides you through the process of
-developing a simple notepad application and provides concrete examples of how to
-set up the project,  develop the application logic and user interface, and then
-compile and run the application. </p>
-
-<p>The tutorial presents the application development as a set of 
-exercises (see below), each consisting of several steps. You should follow 
-the steps in each exercise to gradually build and refine your  
-application. The exercises explain each step in detail and provide all the 
-sample code you need to complete the application. </p>
-
-<p><p>When you are finished with the tutorial, you will have created a functioning
-Android application and will have learned many of the most important
-concepts in Android development.</p>
-
-<a name="who"></a>
-<h2>Who Should Use this Tutorial</h2>
-
-<p>This tutorial is designed for  experienced developers, especially those with 
-knowledge of the Java programming language. If you haven't written Java
-applications before, you can still use the tutorial, but you might need to work
-at a slower pace. </p>
-
-<p>Also note that this tutorial uses
-the Eclipse development environment, with the Android plugin installed. If you
-are not using Eclipse, you can  follow  the exercises and build the application,
-but you will need to determine how to accomplish the Eclipse-specific
-steps in your environment. </p>
-
-<a name="preparing"></a>
-<h2>Preparing for the Exercises</h2>
-
-<p>The tutorial  assumes that you have some familiarity with basic Android
-application concepts and terminology. If you are not, you
-should read <a href="{@docRoot}guide/components/fundamentals.html">Application 
-Fundamentals</a> before continuing. </p>
-
-<p>This tutorial also builds on the introductory information provided in the 
-<a href="{@docRoot}training/basics/firstapp/index.html">Building Your First App</a>
-tutorial, which explains how to set up your Eclipse environment
-for building Android applications. We recommend you complete the Hello World
-tutorial before starting this one.</p>
-
-<p>To prepare for this lesson:</p>
-
-<ol>
-  <li>Download the <a href="codelab/NotepadCodeLab.zip">project
-      exercises archive (.zip)</a>.</li>
-  <li>Unpack the archive file to a suitable location on your machine.</li>
-  <li>Open the <code>NotepadCodeLab</code> folder.</li>
-</ol>
-
-<p>Inside the <code>NotepadCodeLab</code> folder, you should see six project
-files: <code>Notepadv1</code>,
-    <code>Notepadv2</code>, <code>Notepadv3</code>,
-    <code>Notepadv1Solution</code>, <code>Notepadv2Solution</code>
-    and <code>Notepadv3Solution</code>. The <code>Notepadv#</code> projects are
-the starting points for each of the exercises, while the
-<code>Notepadv#Solution</code> projects are the exercise
-    solutions. If you are having trouble with a particular exercise, you
-    can compare your current work against the exercise solution.</p>
-
-<a name="exercises"></a>
-<h2> Exercises</h2>
-
-  <p>The table below lists the tutorial exercises and describes the development
-areas that each covers. Each exercise assumes that you have completed any
-previous exercises.</p>
-
-  <table border="0" style="padding:4px;spacing:2px;" summary="This
-table lists the
-tutorial examples and describes what each covers. ">
-    <tr>
-      <th width="120"><a href="{@docRoot}training/notepad/notepad-ex1.html">Exercise
-1</a></th>
-      <td>Start here. Construct a simple notes list that lets the user add new notes but not
-edit them. Demonstrates the basics of <code>ListActivity</code> and creating
-and handling
-      menu options. Uses a SQLite database to store the notes.</td>
-    </tr>
-    <tr>
-      <th><a href="{@docRoot}training/notepad/notepad-ex2.html">Exercise 2</a></th>
-      <td>Add a second Activity to the
-application. Demonstrates constructing a
-new Activity, adding it to the Android manifest, passing data between the
-activities, and using more advanced screen layout. Also shows how to
-invoke another Activity to return a result, using
-<code>startActivityForResult()</code>.</td>
-    </tr>
-    <tr>
-      <th><a href="{@docRoot}training/notepad/notepad-ex3.html">Exercise 3</a></th>
-      <td>Add handling of life-cycle events to
-the application, to let it
-maintain application state across the life cycle. </td>
-    </tr>
-    <tr>
-    <th><a href="{@docRoot}training/notepad/notepad-extra-credit.html">Extra
-Credit</a></th>
-    <td>Demonstrates how to use the Eclipse
-debugger and how you can use it to
-view life-cycle events as they are generated. This section is optional but
-highly recommended.</td>
-    </tr>
-</table>
-
-
-<a name="other"></a>
-<h2>Other Resources and Further Learning</h2>
-<ul>
-<li>For a lighter but broader introduction to concepts not covered in the
-tutorial,
-take a look at <a href="{@docRoot}resources/faq/commontasks.html">Common Android Tasks</a>.</li>
-
-<li>This tutorial draws from the full Notepad application included in the
-<code>samples/legacy/NotePad</code> directory of the SDK, though it does not
-match it exactly. When you are done with the tutorial, it is highly recommended
-that you take a closer look at this version of the Notepad application, as it
-demonstrates a variety of interesting additions for your application, such
-as:</li>
-  <ul>
-    <li>Setting up a custom striped list for the list of notes.</li>
-    <li>Creating a custom text edit view that overrides the <code>draw()</code>
-    method to make it look like a lined notepad.</li>
-    <li>Implementing a full <code>ContentProvider</code> for notes.</li>
-    <li>Reverting and discarding edits instead of just automatically saving
-    them.</li>
-  </ul>
-</ul>
diff --git a/docs/html/training/notepad/notepad-ex1.jd b/docs/html/training/notepad/notepad-ex1.jd
deleted file mode 100644
index f680f15..0000000
--- a/docs/html/training/notepad/notepad-ex1.jd
+++ /dev/null
@@ -1,583 +0,0 @@
-excludeFromSuggestions=true
-page.title=Notepad Exercise 1
-parent.title=Notepad Tutorial
-parent.link=index.html
-@jd:body
-
-
-<p><em>In this exercise, you will construct a simple notes list that lets the
-user add new notes but not edit them. The exercise demonstrates:</em></p>
-<ul>
-<li><em>The basics of <code>ListActivities</code> and creating and handling menu
-options. </em></li>
-<li><em>How to use a SQLite database to store the notes.</em></li>
-<li><em>How to bind data from a database cursor into a ListView using a
-SimpleCursorAdapter.</em></li>
-<li><em>The basics of screen layouts, including how to lay out a list view, how
-you can add items to the activity menu, and how the activity handles those menu
-selections. </em></li>
-</ul>
-
-<div style="float:right;white-space:nowrap">
-<span style="color:#BBB;">
-	[<a href="notepad-ex1.html" style="color:#BBB;">Exercise 1</a>]</span>
-	[<a href="notepad-ex2.html">Exercise 2</a>]
-	[<a href="notepad-ex3.html">Exercise 3</a>]
-	[<a href="notepad-extra-credit.html">Extra Credit</a>]
-</div>
-
-
-
-<h2>Step 1</h2>
-
-	<p>Open up the <code>Notepadv1</code> project in Eclipse.</p>
-    
-    <p><code>Notepadv1</code> is a project that is provided as a starting point. It
-    takes care of some of the boilerplate work that you have already seen if you
-    followed the <a href="{@docRoot}training/basics/firstapp/index.html">Hello,
-    World</a> tutorial.</p>
-    
-  <ol>
-    <li>
-      Start a new Android Project by clicking <strong>File</strong> > 
-      <strong>New</strong> > <strong>Android Project</strong>.</li>
-    <li>
-      In the New Android Project dialog, select <strong>Create project from existing source</strong>.</li>
-    <li>
-      Click <strong>Browse</strong> and navigate to where you copied the <code>NotepadCodeLab</code> 
-      (downloaded during <a href="{@docRoot}training/notepad/index.html#preparing">setup</a>) 
-      and select <code>Notepadv1</code>.</li>
-    <li>
-      The Project Name and other properties should be automatically filled for you. 
-      You must select the Build Target&mdash;we recommend selecting a target with the 
-      lowest platform version available. Also add an integer to the Min SDK Version field 
-      that matches the API Level of the selected Build Target.</li>
-    <li>
-      Click <strong>Finish</strong>. The <code>Notepadv1</code> project should open and be 
-      visible in your Eclipse package explorer.</li>
-  </ol>
-  
-    <p>If you see an error about <code>AndroidManifest.xml</code>, or some
-      problems related to an Android zip file, right click on the project and
-      select <strong>Android Tools</strong> > <strong>Fix Project Properties</strong>.
-      (The project is looking in the wrong location for the library file,
-      this will fix it for you.)</p>
-
-  <h2>Step 2</h2>
-
-  <div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>Accessing and modifying data</h2>
-    <p>For this
-    exercise, we are using a SQLite database to store our data. This is useful
-    if only <em>your</em> application will need to access or modify the data. If you wish for
-    other activities to access or modify the data, you have to expose the data using a 
-    {@link android.content.ContentProvider ContentProvider}.</p>
-    <p>If you are interested, you can find out more about
-    <a href="{@docRoot}guide/topics/providers/content-providers.html">content providers</a> or the
-whole
-    subject of <a href="{@docRoot}guide/topics/data/data-storage.html">Data Storage</a>.
-    The NotePad sample in the <code>samples/</code> folder of the SDK also has an example of how
-    to create a ContentProvider.</p>
-  </div>
-  </div>
-
-    <p>Take a look at the <code>NotesDbAdapter</code> class &mdash; this class is provided to
-    encapsulate data access to a SQLite database that will hold our notes data
-    and allow us to update it.</p>
-    <p>At the top of the class are some constant definitions that will be used in the application
-    to look up data from the proper field names in the database. There is also a database creation
-    string defined, which is used to create a new database schema if one doesn't exist already.</p>
-    <p>Our database will have the name <code>data</code>, and have a single table called 
-    <code>notes</code>, which in turn has three fields: <code>_id</code>, <code>title</code> and 
-    <code>body</code>. The <code>_id</code> is named with an underscore convention used in a number of
-    places inside the Android SDK and helps keep a track of state. The <code>_id</code>
-    usually has to be specified when querying or updating the database (in the column projections
-    and so on). The other two fields are simple text fields that will store data.
-    </p>
-    <p>The constructor for <code>NotesDbAdapter</code> takes a Context, which allows it to communicate with aspects
-    of the Android operating system. This is quite common for classes that need to touch the
-    Android system in some way. The Activity class implements the Context class, so usually you will just pass
-    <code>this</code> from your Activity, when needing a Context.</p>
-    <p>The <code>open()</code> method calls up an instance of DatabaseHelper, which is our local
-    implementation of the SQLiteOpenHelper class. It calls <code>getWritableDatabase()</code>, 
-    which handles creating/opening a database for us.</p>
-    <p><code>close()</code> just closes the database, releasing resources related to the 
-    connection.</p>
-    <p><code>createNote()</code> takes strings for the title and body of a new note,
-    then creates that note in the database. Assuming the new note is created successfully, the
-    method also returns the row <code>_id</code> value for the newly created note.</p>
-    <p><code>deleteNote()</code> takes a <var>rowId</var> for a particular note, and deletes that note from
-    the database.</p>
-
-    <p><code>fetchAllNotes()</code> issues a query to return a {@link android.database.Cursor} over all notes in the
-    database. The <code>query()</code> call is worth examination and understanding. The first field is the 
-    name of the database table to query (in this case <code>DATABASE_TABLE</code> is "notes").
-    The next is the list of columns we want returned, in this case we want the <code>_id</code>, 
-    <code>title</code> and <code>body</code> columns so these are specified in the String array.
-    The remaining fields are, in order: <code>selection</code>, 
-    <code>selectionArgs</code>, <code>groupBy</code>, <code>having</code> and <code>orderBy</code>.
-    Having these all <code>null</code> means we want all data, need no grouping, and will take the default
-    order. See {@link android.database.sqlite.SQLiteDatabase SQLiteDatabase} for more details.</p>
-    <p class="note"><b>Note:</b> A Cursor is returned rather than a collection of rows. This allows
-    Android to use resources efficiently -- instead of putting lots of data straight into memory
-    the cursor will retrieve and release data as it is needed, which is much more efficient for
-    tables with lots of rows.</p>
-
-    <p><code>fetchNote()</code> is similar to <code>fetchAllNotes()</code> but just gets one note
-    with the <var>rowId</var> we specify. It uses a slightly different version of the 
-    {@link android.database.sqlite.SQLiteDatabase} <code>query()</code> method. 
-    The first parameter (set <em>true</em>) indicates that we are interested
-    in one distinct result. The <var>selection</var> parameter (the fourth parameter) has been specified to search
-    only for the row "where _id =" the <var>rowId</var> we passed in. So we are returned a Cursor on
-    the one row.</p>
-    <p>And finally, <code>updateNote()</code> takes a <var>rowId</var>, <var>title</var> and <var>body</var>, and uses a
-    {@link android.content.ContentValues ContentValues} instance to update the note of the given
-    <var>rowId</var>.</p>
-   
-<h2 style="clear:right;">Step 3</h2>
-
-	<div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>Layouts and activities</h2>
-      <p>Most Activity classes will have a layout associated with them. The layout
-    will be the "face" of the Activity to the user. In this case our layout will
-    take over the whole screen and provide a list of notes.</p>
-    <p>Full screen layouts are not the only option for an Activity however. You
-    might also want to use a <a
-href="{@docRoot}resources/faq/commontasks.html#floatingorfull">floating 
-    layout</a> (for example, a <a
-href="{@docRoot}resources/faq/commontasks.html#dialogsandalerts">dialog
-    or alert</a>), 
-    or perhaps you don't need a layout at all (the Activity will be invisible 
-    to the user unless you specify some kind of layout for it to use).</p>
-  </div>
-  </div>
-    
-    <p>Open the <code>notepad_list.xml</code> file in <code>res/layout</code>
-and 
-    take a look at it. (You may have to
-    hit the <em>xml</em> tab, at the bottom, in order to view the XML markup.)</p>
-     
-    <p>This is a mostly-empty layout definition file. Here are some
-    things you should know about a layout file:</p>
-
-   
-  <ul>
-    <li>
-      All Android layout files must start with the XML header line:
-      <code>&lt;?xml version="1.0" encoding="utf-8"?&gt;</code>.    </li>
-    <li>
-      The next definition will often (but not always) be a layout
-      definition of some kind, in this case a <code>LinearLayout</code>.    </li>
-    <li>
-      The XML namespace of Android should always be defined in
-      the top level component or layout in the XML so that <code>android:</code> tags can
-      be used through the rest of the file:
-      <p><code>xmlns:android="http://schemas.android.com/apk/res/android"</code></p>
-    </li>
-  </ul>
-
-  <h2 style="clear:right;">Step 4</h2>
-    <p>We need to create the layout to hold our list. Add code inside
-    of the <code>LinearLayout</code> element so the whole file looks like this: </p>
-    <pre>
-&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
-&lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
-    android:layout_width=&quot;wrap_content&quot;
-    android:layout_height=&quot;wrap_content&quot;&gt;
-
-  &lt;ListView android:id=&quot;@android:id/list&quot;
-        android:layout_width=&quot;wrap_content&quot;
-        android:layout_height=&quot;wrap_content&quot;/&gt;
-  &lt;TextView android:id=&quot;@android:id/empty&quot;
-        android:layout_width=&quot;wrap_content&quot;
-        android:layout_height=&quot;wrap_content&quot;
-        android:text=&quot;@string/no_notes&quot;/&gt;
-
-&lt;/LinearLayout&gt;
-</pre>
-  <ul>
-    <li>
-      The <strong>&#64;</strong> symbol in the id strings of the <code>ListView</code> and 
-      <code>TextView</code> tags means 
-      that the XML parser should parse and expand the rest of
-      the id string and use an ID resource.</li>
-    <li>
-      The <code>ListView</code> and <code>TextView</code> can be
-      thought as two alternative views, only one of which will be displayed at once.
-      ListView will be used when there are notes to be shown, while the TextView
-      (which has a default value of "No Notes Yet!" defined as a string
-      resource in <code>res/values/strings.xml</code>) will be displayed if there 
-      aren't any notes to display.</li>
-    <li>The <code>list</code> and <code>empty</code> IDs are
-      provided for us by the Android platform, so, we must 
-      prefix the <code>id</code> with <code>android:</code> (e.g., <code>@android:id/list</code>).</li>
-    <li>The View with the <code>empty</code> id is used 
-      automatically when the {@link android.widget.ListAdapter} has no data for the ListView. The 
-      ListAdapter knows to look for this name by default. Alternatively, you could change the      
-      default empty view by using {@link android.widget.AdapterView#setEmptyView(View)}
-      on the ListView.
-      <p>
-      More broadly, the <code>android.R</code> class is a set of predefined 
-      resources provided for you by the platform, while your project's 
-      <code>R</code> class is the set of resources your project has defined.
-      Resources found in the <code>android.R</code> resource class can be
-      used in the XML files by using the <code>android:</code> name space prefix      
-      (as we see here).</p>
-    </li>
-  </ul>
-
-  <h2 style="clear:right;">Step 5</h2>
-
-	<div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>Resources and the R class</h2>
-    <p>The folders under res/ in the Eclipse project are for resources.
-     There is a <a href="{@docRoot}resources/faq/commontasks.html#filelist">specific structure</a>
-to the
-     folders and files under res/.</p>
-    <p>Resources defined in these folders and files will have
-    corresponding entries in the R class allowing them to be easily accessed
-    and used from your application. The R class is automatically generated using the contents
-    of the res/ folder by the eclipse plugin (or by aapt if you use the command line tools).
-    Furthermore, they will be bundled and deployed for you as part of the application.</p>
-    </p>
-  </div>
-  </div>
-
-    <p>To make the list of notes in the ListView, we also need to define a View for each row:</p>
-  <ol>
-    <li>
-      Create a new file under <code>res/layout</code> called 
-      <code>notes_row.xml</code>.    </li>
-    <li>
-      Add the following contents (note: again the XML header is used, and the
-      first node defines the Android XML namespace)<br>
-      <pre style="overflow:auto">
-&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
-&lt;TextView android:id=&quot;&#64;+id/text1&quot;
-    xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
-    android:layout_width=&quot;wrap_content&quot;
-    android:layout_height=&quot;wrap_content&quot;/&gt;</pre>
-    <p>
-      This is the View that will be used for each notes title row &mdash; it has only
-      one text field in it.    </p>
-    <p>In this case we create a new id called <code>text1</code>. The
-      <strong>+</strong> after the <strong>@</strong> in the id string indicates that the id should
-      be automatically created as a resource if it does not already exist, so we are defining
-      <code>text1</code> on the fly and then using it.</p>
-    </li>
-    <li>Save the file.</li>
-  </ol>
-      <p>Open the <code>R.java</code> class in the
-      project and look at it, you should see new definitions for
-      <code>notes_row</code> and <code>text1</code> (our new definitions)
-      meaning we can now gain access to these from the our code. </p>
-
-  <h2 style="clear:right;">Step 6</h2>
-<p>Next, open the <code>Notepadv1</code> class in the source. In the following steps, we are going to
-    alter this class to become a list adapter and display our notes, and also
-    allow us to add new notes.</p>
-
-<p><code>Notepadv1</code> will inherit from a subclass
-    of <code>Activity</code> called a <code>ListActivity</code>, 
-    which has extra functionality to accommodate the kinds of 
-    things you might want to do with a list, for
-    example: displaying an arbitrary number of list items in rows on the screen,
-    moving through the list items, and allowing them to be selected.</p>
-
-<p>Take a look through the existing code in <code>Notepadv1</code> class.
-    There is a currently an unused private field called <code>mNoteNumber</code> that
-    we will use to create numbered note titles.</p>
-    <p>There are also three override methods defined:
-    <code>onCreate</code>, <code>onCreateOptionsMenu</code> and
-    <code>onOptionsItemSelected</code>; we need to fill these
-    out:</p>
-    <ul>
-      <li><code>onCreate()</code> is called when the activity is
-      started &mdash; it is a little like the "main" method for an Activity. We use
-      this to set up resources and state for the activity when it is
-      running.</li>
-     <li><code>onCreateOptionsMenu()</code> is used to populate the
-      menu for the Activity. This is shown when the user hits the menu button,
-and
-      has a list of options they can select (like "Create
-      Note"). </li>
-     <li><code>onOptionsItemSelected()</code> is the other half of the
-      menu equation, it is used to handle events generated from the menu (e.g.,
-      when the user selects the "Create Note" item).
-      </li>
-    </ul>
-    
-  <h2>Step 7</h2>
-    <p>Change the inheritance of <code>Notepadv1</code> from
-<code>Activity</code>
-    to <code>ListActivity</code>:</p> 
-    <pre>public class Notepadv1 extends ListActivity</pre>
-    <p>Note: you will have to import <code>ListActivity</code> into the
-Notepadv1
-    class using Eclipse, <strong>ctrl-shift-O</strong> on Windows or Linux, or
-    <strong>cmd-shift-O</strong> on the Mac (organize imports) will do this for you
-    after you've written the above change.</p>
-
-  <h2>Step 8</h2>
-    <p>Fill out the body of the <code>onCreate()</code> method.</p>
-    <p>Here we will set the title for the Activity (shown at the top of the
-    screen), use the <code>notepad_list</code> layout we created in XML, 
-    set up the <code>NotesDbAdapter</code> instance that will
-    access notes data, and populate the list with the available note
-    titles:</p>
-    <ol>
-    <li>
-      In the <code>onCreate</code> method, call <code>super.onCreate()</code> with the 
-      <code>savedInstanceState</code> parameter that's passed in.</li>
-    <li>
-      Call <code>setContentView()</code> and pass <code>R.layout.notepad_list</code>.</li>
-    <li>
-      At the top of the class, create a new private class field called <code>mDbHelper</code> of class
-      <code>NotesDbAdapter</code>.
-    </li>
-    <li>
-      Back in the <code>onCreate</code> method, construct a new
-<code>NotesDbAdapter</code>
-      instance and assign it to the <code>mDbHelper</code> field (pass
-      <code>this</code> into the constructor for <code>DBHelper</code>)
-    </li>
-    <li>
-      Call the <code>open()</code> method on <code>mDbHelper</code> to open (or create) the
-      database.
-    </li>
-    <li>
-      Finally, call a new method <code>fillData()</code>, which will get the data and
-      populate the ListView using the helper &mdash; we haven't defined this method yet.    </li>
-  </ol>
-    <p>
-      <code>onCreate()</code> should now look like this:</p>
-      <pre>
-    &#64;Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.notepad_list);
-        mDbHelper = new NotesDbAdapter(this);
-        mDbHelper.open();
-        fillData();
-    }</pre>
-      <p>And be sure you have the <code>mDbHelper</code> field definition (right
-      under the mNoteNumber definition): </p>
-      <pre>    private NotesDbAdapter mDbHelper;</pre>
-
-  <h2>Step 9</h2>
-
-  <div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>More about menus</h2>
-    <p>The notepad application we are constructing only scratches the
-     surface with <a href="{@docRoot}resources/faq/commontasks.html#addmenuitems">menus</a>. </p>
-    <p>You can also <a href="{@docRoot}resources/faq/commontasks.html#menukeyshortcuts">add
-shortcut keys for menu items</a>, <a
-href="{@docRoot}resources/faq/commontasks.html#menukeyshortcuts">create
-submenus</a> and even <a href="{@docRoot}resources/faq/commontasks.html#addingtoothermenus">add
-menu items to other applications!</a>. </p>
-  </div>
-  </div>
-
-<p>Fill out the body of the <code>onCreateOptionsMenu()</code> method.</p>
-
-<p>We will now create the "Add Item" button that can be accessed by pressing the menu
-button on the device. We'll specify that it occupy the first position in the menu.</p>
-
-  <ol>
-    <li>
-      In <code>strings.xml</code> resource (under <code>res/values</code>), add
-      a new string named "menu_insert" with its value set to <code>Add Item</code>:
-     <pre>&lt;string name="menu_insert"&gt;Add Item&lt;/string&gt;</pre>
-      <p>Then save the file and return to <code>Notepadv1</code>.</p>
-    </li>
-    <li>Create a menu position constant at the top of the  class:
-      <pre>public static final int INSERT_ID = Menu.FIRST;</pre>
-    </li>
-    <li>In the <code>onCreateOptionsMenu()</code> method, change the 
-    <code>super</code> call so we capture the boolean return as <code>result</code>. We'll return this value at the end.</li>
-    <li>Then add the menu item with <code>menu.add()</code>.</li>
-  </ol>
-  <p>The whole method should now look like this: 
-      <pre>
-    &#64;Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        boolean result = super.onCreateOptionsMenu(menu);
-        menu.add(0, INSERT_ID, 0, R.string.menu_insert);
-        return result;
-    }</pre>
-  <p>The arguments passed to <code>add()</code> indicate: a group identifier for this menu (none,
-  in this case), a unique ID (defined above), the order of the item (zero indicates no preference),
-  and the resource of the string to use for the item.</p>
-
-<h2 style="clear:right;">Step 10</h2>
-    <p>Fill out the body of the <code>onOptionsItemSelected()</code> method:</p>
-    <p>This is going
-    to handle our new "Add Note" menu item.  When this is selected, the
-    <code>onOptionsItemSelected()</code> method will be called with the
-    <code>item.getId()</code> set to <code>INSERT_ID</code> (the constant we
-    used to identify the menu item). We can detect this, and take the
-    appropriate actions:</p>
-  <ol>
-    <li>
-      The <code>super.onOptionsItemSelected(item)</code> method call goes at the
-      end of this method &mdash; we want to catch our events first!    </li>
-    <li>
-      Write a switch statement on <code>item.getItemId()</code>.   
-      <p>In the case of <var>INSERT_ID</var>, call a new method, <code>createNote()</code>,
-      and return true, because we have handled this event and do not want to
-      propagate it through the system.</p>
-    </li>
-    <li>Return the result of the superclass' <code>onOptionsItemSelected()</code>
-    method at the end.</li>
-   </ol>
-    <p>
-      The whole <code>onOptionsItemSelect()</code> method should now look like
-      this:</p>
-      <pre>
-    &#64;Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-        case INSERT_ID:
-            createNote();
-            return true;
-        }
-       
-        return super.onOptionsItemSelected(item);
-    }</pre>
-
-<h2>Step 11</h2>
-    <p>Add a new <code>createNote()</code> method:</p>
-    <p>In this first version of
-    our application, <code>createNote()</code> is not going to be very useful.
-We will simply
-    create a new note with a title assigned to it based on a counter ("Note 1",
-    "Note 2"...) and with an empty body. At present we have no way of editing
-    the contents of a note, so for now we will have to be content making one
-    with some default values:</p>
-  <ol>
-    <li>Construct the name using "Note" and the counter we defined in the class: <code>
-      String noteName = "Note " + mNoteNumber++</code></li>
-    <li>
-      Call <code>mDbHelper.createNote()</code> using <code>noteName</code> as the
-      title and <code>""</code> for the body 
-    </li>
-    <li>
-      Call <code>fillData()</code> to populate the list of notes (inefficient but
-      simple) &mdash; we'll create this method next.</li>
-  </ol>
-    <p>
-      The whole <code>createNote()</code> method should look like this: </p>
-      <pre>
-    private void createNote() {
-        String noteName = &quot;Note &quot; + mNoteNumber++;
-        mDbHelper.createNote(noteName, &quot;&quot;);
-        fillData();
-    }</pre>
-
-
-<h2>Step 12</h2>
-  <div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>List adapters</h2>
-    <p>Our example uses a {@link android.widget.SimpleCursorAdapter
-     SimpleCursorAdapter} to bind a database {@link android.database.Cursor Cursor}
-     into a ListView, and this is a common way to use a {@link android.widget.ListAdapter 
-     ListAdapter}. Other options exist like {@link android.widget.ArrayAdapter ArrayAdapter} which 
-     can be used to take a List or Array of in-memory data and bind it in to
-     a list as well.</p>
-  </div>
-  </div>
-  
-  <p>Define the <code>fillData()</code> method:</p>
-   <p>This
-    method uses <code>SimpleCursorAdapter,</code> which takes a database <code>Cursor</code> 
-    and binds it to fields provided in the layout. These fields define the row elements of our list 
-    (in this case we use the <code>text1</code> field in our
-    <code>notes_row.xml</code> layout), so this allows us to easily populate the list with
-    entries from our database.</p>
-    <p>To do this we have to provide a mapping from the <code>title</code> field in the returned Cursor, to
-    our <code>text1</code> TextView, which is done by defining two arrays: the first a string array
-    with the list of columns to map <em>from</em> (just "title" in this case, from the constant 
-    <code>NotesDbAdapter.KEY_TITLE</code>) and, the second, an int array
-    containing references to the views that we'll bind the data <em>into</em> 
-    (the <code>R.id.text1</code> TextView).</p>
-    <p>This is a bigger chunk of code, so let's first take a look at it:</p>
-
-    <pre>
-    private void fillData() {
-        // Get all of the notes from the database and create the item list
-        Cursor c = mDbHelper.fetchAllNotes();
-        startManagingCursor(c);
-
-        String[] from = new String[] { NotesDbAdapter.KEY_TITLE };
-        int[] to = new int[] { R.id.text1 };
-        
-        // Now create an array adapter and set it to display using our row
-        SimpleCursorAdapter notes =
-            new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to);
-        setListAdapter(notes);
-    }</pre>
-    
-  <p>Here's what we've done:</p>
-  <ol>
-    <li>
-      After obtaining the Cursor from <code>mDbHelper.fetchAllNotes()</code>, we 
-      use an Activity method called
-      <code>startManagingCursor()</code> that allows Android to take care of the
-      Cursor lifecycle instead of us needing to worry about it. (We will cover the implications
-      of the lifecycle in exercise 3, but for now just know that this allows Android to do some
-      of our resource management work for us.)</li>
-    <li>
-      Then we create a string array in which we declare the column(s) we want 
-      (just the title, in this case), and an int array that defines the View(s)
-      to which we'd like to bind the columns (these should be in order, respective to 
-      the string array, but here we only have one for each).</li>
-    <li>
-      Next is the SimpleCursorAdapter instantiation. 
-      Like many classes in Android, the SimpleCursorAdapter needs a Context in order to do its
-      work, so we pass in <code>this</code> for the context (since subclasses of Activity 
-      implement Context). We pass the <code>notes_row</code> View we created as the receptacle
-      for the data, the Cursor we just created, and then our arrays.</li>
-   </ol>
-    <p>
-      In the future, remember that the mapping between the <strong>from</strong> columns and <strong>to</strong> resources
-      is done using the respective ordering of the two arrays. If we had more columns we wanted
-      to bind, and more Views to bind them in to, we would specify them in order, for example we
-      might use <code>{ NotesDbAdapter.KEY_TITLE, NotesDbAdapter.KEY_BODY }</code> and
-      <code>{ R.id.text1, R.id.text2 }</code> to bind two fields into the row (and we would also need
-      to define text2 in the notes_row.xml, for the body text). This is how you can bind multiple fields
-      into a single row (and get a custom row layout as well).</p>
-    <p>
-      If you get compiler errors about classes not being found, ctrl-shift-O or
-      (cmd-shift-O on the mac) to organize imports. 
-    </p>
-    
-<h2 style="clear:right;">Step 13</h2>
-    <p>Run it!
-  <ol>
-    <li>
-      Right click on the <code>Notepadv1</code> project.</li>
-    <li>
-      From the popup menu, select <strong>Run As</strong> &gt; 
-      <strong>Android Application</strong>.</li>
-    <li>
-      If you see a dialog come up, select Android Launcher as the way of running
-      the application (you can also use the link near the top of the dialog to
-      set this as your default for the workspace; this is recommended as it will
-      stop the plugin from asking you this every time).</li>
-    <li>Add new notes by hitting the menu button and selecting <em>Add
-    Item</em> from the menu.</li>
-  </ol>
-
-<h2 style="clear:right;">Solution and Next Steps</h2>
-    <p>You can see the solution to this class in <code>Notepadv1Solution</code>
-from
-the zip file to compare with your own.</p>
-
-<p>Once you are ready, move on to <a href="notepad-ex2.html">Tutorial
-Exercise 2</a> to add the ability to create, edit and delete notes.</p>
-
diff --git a/docs/html/training/notepad/notepad-ex2.jd b/docs/html/training/notepad/notepad-ex2.jd
deleted file mode 100644
index d15499b3..0000000
--- a/docs/html/training/notepad/notepad-ex2.jd
+++ /dev/null
@@ -1,646 +0,0 @@
-excludeFromSuggestions=true
-page.title=Notepad Exercise 2
-parent.title=Notepad Tutorial
-parent.link=index.html
-@jd:body
-
-
-<p><em>In this exercise, you will add a second Activity to your notepad application, to let the user
-create and edit notes. You will also allow the user to delete existing notes through a context menu.
-The new Activity assumes responsibility for creating new notes by
-collecting user input and packing it into a return Bundle provided by the intent. This exercise
-demonstrates:</em></p>
-<ul>
-<li><em>Constructing a new Activity and adding it to the Android manifest</em></li>
-<li><em>Invoking another Activity asynchronously using <code>startActivityForResult()</code></em></li>
-<li><em>Passing data between Activity in Bundle objects</em></li>
-<li><em>How to use a more advanced screen layout</em></li>
-<li><em>How to create a context menu</em></li>
-</ul>
-
-<div style="float:right;white-space:nowrap">
-	[<a href="notepad-ex1.html">Exercise 1</a>]
-	<span style="color:#BBB;">
-		[<a href="notepad-ex2.html" style="color:#DDD;">Exercise 2</a>]
-	</span>
-	[<a href="notepad-ex3.html">Exercise 3</a>]
-	[<a href="notepad-extra-credit.html">Extra Credit</a>]
-</div>
-
-<h2>Step 1</h2>
-
-<p>Create a new Android project using the sources from <code>Notepadv2</code> under the
-<code>NotepadCodeLab</code> folder, just like you did for the first exercise. If you see an error about
-<code>AndroidManifest.xml</code>, or some problems related to an
-<code>android.zip</code> file, right click on the project and select <strong>Android
-Tools</strong> &gt; <strong>Fix Project Properties</strong>.</p>
-
-<p>Open the <code>Notepadv2</code> project and take a look around:</p>
-<ul>
-    <li>
-      Open and look at the <code>strings.xml</code> file under
-      <code>res/values</code> &mdash; there are several new strings which we will use
-      for our new functionality
-    </li>
-    <li>
-      Also, open and take a look at the top of the <code>Notepadv2</code> class,
-      you will notice several new constants have been defined along with a new <code>mNotesCursor</code>
-      field used to hold the cursor we are using.
-    </li>
-    <li>
-      Note also that the <code>fillData()</code> method has a few more comments and now uses
-      the new field to store the notes Cursor. The <code>onCreate()</code> method is
-      unchanged from the first exercise. Also notice that the member field used to store the
-      notes Cursor is now called <code>mNotesCursor</code>. The <code>m</code> denotes a member
-      field and is part of the Android coding style standards.
-    </li>
-    <li>
-      There are also a couple of new overridden methods
-      (<code>onCreateContextMenu()</code>, <code>onContextItemSelected()</code>,
-      <code>onListItemClick()</code> and <code>onActivityResult()</code>)
-      which we will be filling in below.
-    </li>
-</ul>
-
-
-<h2>Step 2</h2>
-<div class="sidebox-wrapper">
-<div class="sidebox">
-<p>Context menus should always be used when performing actions upon specific elements in the UI.
-When you register a View to a context menu, the context menu is revealed by performing a "long-click"
-on the UI component (press and hold the touchscreen or highlight and hold down the selection key for about two seconds).</p>
-</div>
-</div>
-
-<p>First, let's create the context menu that will allow users to delete individual notes.
-Open the Notepadv2 class.</p>
-
-<ol>
-    <li>In order for each list item in the ListView to register for the context menu, we call
-    <code>registerForContextMenu()</code> and pass it our ListView. So, at the very end of
-    the <code>onCreate()</code> method add this line:
-    <pre>registerForContextMenu(getListView());</pre>
-    <p>Because our Activity extends the ListActivity class, <code>getListView()</code> will return us
-    the local ListView object for the Activity. Now, each list item in this ListView will activate the
-    context menu.
-    <li>
-      Now fill in the <code>onCreateContextMenu()</code> method. This callback is similar to the other
-    menu callback used for the options menu. Here, we add just one line, which will add a menu item
-    to delete a note. Call <code>menu.add()</code> like so:
-      <pre>
-public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
-    super.onCreateContextMenu(menu, v, menuInfo);
-    menu.add(0, DELETE_ID, 0, R.string.menu_delete);
-}</pre>
-    <p>The <code>onCreateContextMenu()</code> callback passes some other information in addition to the Menu object,
-    such as the View that has been triggered for the menu and
-    an extra object that may contain additional information about the object selected. However, we don't care about
-    these here, because we only have one kind of object in the Activity that uses context menus. In the next
-    step, we'll handle the menu item selection.</p>
-    </li>
-</ol>
-
-<h2>Step 3</h2>
-  <p>Now that we've registered our ListView for a context menu and defined our context menu item, we need
-  to handle the callback when it is selected. For this, we need to identify the list ID of the
-  selected item, then delete it. So fill in the
-  <code>onContextItemSelected()</code> method like this:</p>
-<pre>
-public boolean onContextItemSelected(MenuItem item) {
-    switch(item.getItemId()) {
-    case DELETE_ID:
-        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
-        mDbHelper.deleteNote(info.id);
-        fillData();
-        return true;
-    }
-    return super.onContextItemSelected(item);
-}</pre>
-<p>Here, we retrieve the {@link android.widget.AdapterView.AdapterContextMenuInfo AdapterContextMenuInfo}
-with {@link android.view.MenuItem#getMenuInfo()}. The <var>id</var> field of this object tells us
-the position of the item in the ListView. We then pass this to the <code>deleteNote()</code>
-method of our NotesDbAdapter and the note is deleted. That's it for the context menu &mdash; notes
-can now be deleted.</p>
-
-<h2 style="clear:right;">Step 4</h2>
-  <div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>Starting Other Activities</h2>
-    <p>In this example our Intent uses a class name specifically.
-     As well as
-     <a href="{@docRoot}resources/faq/commontasks.html#intentexamples">starting intents</a> in
-    classes we already know about, be they in our own application or another
-    application, we can also create Intents without knowing exactly which
-    application will handle it.</p>
-    <p>For example, we might want to open a page in a
-    browser, and for this we still use
-    an Intent. But instead of specifying a class to handle it, we use
-    a predefined Intent constant, and a content URI that describes what we
-    want to do. See {@link android.content.Intent
-    android.content.Intent} for more information.</p>
-  </div>
-  </div>
-
-	<p>Fill in the body of the <code>createNote()</code> method:
-    <p>Create a new <code>Intent</code> to create a note
-    (<code>ACTIVITY_CREATE</code>) using the <code>NoteEdit</code> class.
-    Then fire the Intent using the <code>startActivityForResult()</code> method
-    call:</p>
-    <pre style="overflow:auto">
-Intent i = new Intent(this, NoteEdit.class);
-startActivityForResult(i, ACTIVITY_CREATE);</pre>
-      <p>This form of the Intent call targets a specific class in our Activity, in this case
-      <code>NoteEdit</code>. Since the Intent class will need to communicate with the Android
-      operating system to route requests, we also have to provide a Context (<code>this</code>).</p>
-      <p>The <code>startActivityForResult()</code> method fires the Intent in a way that causes a method
-      in our Activity to be called when the new Activity is completed. The method in our Activity
-      that receives the callback is called
-      <code>onActivityResult()</code> and we will implement it in a later step. The other way
-      to call an Activity is using <code>startActivity()</code> but this is a "fire-and-forget" way
-      of calling it &mdash; in this manner, our Activity is not informed when the Activity is completed, and there is
-      no way to return result information from the called Activity with <code>startActivity()</code>.
-      <p>Don't worry about the fact that <code>NoteEdit</code> doesn't exist yet,
-      we will fix that soon. </p>
-  </li>
-
-
-<h2>Step 5</h2>
-
-	<p>Fill in the body of the <code>onListItemClick()</code> override.</p>
-    <p><code>onListItemClick()</code> is a callback method that we'll override. It is called when
-    the user selects an item from the list. It is passed four parameters: the
-    <code>ListView</code> object it was invoked from, the <code>View</code>
-    inside the <code>ListView</code> that was clicked on, the
-    <code>position</code> in the list that was clicked, and the
-    <code>mRowId</code> of the item that was clicked. In this instance we can
-    ignore the first two parameters (we only have one <code>ListView</code> it
-    could be), and we ignore the <code>mRowId</code> as well. All we are
-    interested in is the <code>position</code> that the user selected. We use
-    this to get the data from the correct row, and bundle it up to send to
-    the <code>NoteEdit</code> Activity.</p>
-   <p>In our implementation of the callback, the method creates an
-    <code>Intent</code> to edit the note using
-    the <code>NoteEdit</code> class. It then adds data into the extras Bundle of
-    the Intent, which will be passed to the called Activity. We use it
-    to pass in the title and body text, and the <code>mRowId</code> for the note we are
-    editing. Finally, it will fire the Intent using the
-    <code>startActivityForResult()</code> method call. Here's the code that
-    belongs in <code>onListItemClick()</code>:</p>
-    <pre>
-super.onListItemClick(l, v, position, id);
-Cursor c = mNotesCursor;
-c.moveToPosition(position);
-Intent i = new Intent(this, NoteEdit.class);
-i.putExtra(NotesDbAdapter.KEY_ROWID, id);
-i.putExtra(NotesDbAdapter.KEY_TITLE, c.getString(
-        c.getColumnIndexOrThrow(NotesDbAdapter.KEY_TITLE)));
-i.putExtra(NotesDbAdapter.KEY_BODY, c.getString(
-        c.getColumnIndexOrThrow(NotesDbAdapter.KEY_BODY)));
-startActivityForResult(i, ACTIVITY_EDIT);</pre>
-  <ul>
-    <li>
-      <code>putExtra()</code> is the method to add items into the extras Bundle
-      to pass in to intent invocations. Here, we are
-      using the Bundle to pass in the title, body and mRowId of the note we want to edit.
-    </li>
-    <li>
-      The details of the note are pulled out from our query Cursor, which we move to the
-      proper position for the element that was selected in the list, with
-      the <code>moveToPosition()</code> method.</li>
-    <li>With the extras added to the Intent, we invoke the Intent on the
-      <code>NoteEdit</code> class by passing <code>startActivityForResult()</code>
-      the Intent and the request code. (The request code will be
-      returned to <code>onActivityResult</code> as the <code>requestCode</code> parameter.)</li>
-  </ul>
-    <p class="note"><b>Note:</b> We assign the mNotesCursor field to a local variable at the
-    start of the method. This is done as an optimization of the Android code. Accessing a local
-    variable is much more efficient than accessing a field in the Dalvik VM, so by doing this
-    we make only one access to the field, and five accesses to the local variable, making the
-    routine much more efficient. It is recommended that you use this optimization when possible.</p>
-
-
-<h2>Step 6</h2>
-
-<p>The above <code>createNote()</code> and <code>onListItemClick()</code>
-    methods use an asynchronous Intent invocation. We need a handler for the callback, so here we fill
-    in the body of the <code>onActivityResult()</code>. </p>
-<p><code>onActivityResult()</code> is the overridden method
-    which will be called when an Activity returns with a result. (Remember, an Activity
-    will only return a result if launched with <code>startActivityForResult</code>.) The parameters provided
-    to the callback are: </p>
-  <ul>
-    <li><code>requestCode</code> &mdash; the original request code
-    specified in the Intent invocation (either <code>ACTIVITY_CREATE</code> or
-    <code>ACTIVITY_EDIT</code> for us).
-    </li>
-    <li><code>resultCode</code> &mdash; the result (or error code) of the call, this
-    should be zero if everything was OK, but may have a non-zero code indicating
-    that something failed. There are standard result codes available, and you
-    can also create your own constants to indicate specific problems.
-    </li>
-    <li><code>intent</code> &mdash; this is an Intent created by the Activity returning
-    results. It can be used to return data in the Intent "extras."
-    </li>
-  </ul>
-  <p>The combination of <code>startActivityForResult()</code> and
-  <code>onActivityResult()</code> can be thought of as an asynchronous RPC
-  (remote procedure call) and forms the recommended way for an Activity to invoke
-  another and share services.</p>
-  <p>Here's the code that belongs in your <code>onActivityResult()</code>:</p>
-    <pre>
-super.onActivityResult(requestCode, resultCode, intent);
-Bundle extras = intent.getExtras();
-
-switch(requestCode) {
-case ACTIVITY_CREATE:
-    String title = extras.getString(NotesDbAdapter.KEY_TITLE);
-    String body = extras.getString(NotesDbAdapter.KEY_BODY);
-    mDbHelper.createNote(title, body);
-    fillData();
-    break;
-case ACTIVITY_EDIT:
-    Long mRowId = extras.getLong(NotesDbAdapter.KEY_ROWID);
-    if (mRowId != null) {
-        String editTitle = extras.getString(NotesDbAdapter.KEY_TITLE);
-        String editBody = extras.getString(NotesDbAdapter.KEY_BODY);
-        mDbHelper.updateNote(mRowId, editTitle, editBody);
-    }
-    fillData();
-    break;
-}</pre>
-
-  <ul>
-    <li>
-      We are handling both the <code>ACTIVITY_CREATE</code> and
-      <code>ACTIVITY_EDIT</code> activity results in this method.
-    </li>
-    <li>
-      In the case of a create, we pull the title and body from the extras (retrieved from the
-      returned Intent) and use them to create a new note.
-    </li>
-    <li>
-      In the case of an edit, we pull the mRowId as well, and use that to update
-      the note in the database.
-    </li>
-    <li>
-      <code>fillData()</code> at the end ensures everything is up to date .
-    </li>
-  </ul>
-
-
-<h2>Step 7</h2>
-
-  <div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>The Art of Layout</h2>
-    <p>The provided
-    note_edit.xml layout file is the most sophisticated one in the application we will be building,
-    but that doesn't mean it is even close to the kind of sophistication you will be likely to want
-    in real Android applications.</p>
-    <p>Creating a
-    good UI is part art and part science, and the rest is work. Mastery of <a
-    href="{@docRoot}guide/topics/ui/declaring-layout.html">XML Layouts</a> is an essential part of
-creating
-    a good looking Android application.</p>
-    <p>Take a look at the
-    <a href="{@docRoot}resources/tutorials/views/index.html">Hello Views</a>
-    for some example layouts and how to use them. The ApiDemos sample project is also a
-    great resource from which to learn how to create different layouts.</p>
-  </div>
-  </div>
-
-<p>Open the file <code>note_edit.xml</code> that has been provided and take a
-    look at it. This is the UI code for the Note Editor.</p>
-    <p>This is the most
-    sophisticated UI we have dealt with yet. The file is given to you to avoid
-    problems that may sneak in when typing the code. (The XML is very strict
-    about case sensitivity and structure, mistakes in these are the usual cause
-    of problems with layout.)</p>
-    <p>There is a new parameter used
-    here that we haven't seen before: <code>android:layout_weight</code> (in
-    this case set to use the value 1 in each case).</p>
-    <p><code>layout_weight</code> is used in LinearLayouts
-    to assign "importance" to Views within the layout. All Views have a default
-    <code>layout_weight</code> of zero, meaning they take up only as much room
-    on the screen as they need to be displayed. Assigning a value higher than
-    zero will split up the rest of the available space in the parent View, according
-    to the value of each View's <code>layout_weight</code> and its ratio to the
-    overall <code>layout_weight</code> specified in the current layout for this
-    and other View elements.</p>
-    <p>To give an example: let's say we have a text label
-    and two text edit elements in a horizontal row. The label has no
-    <code>layout_weight</code> specified, so it takes up the minimum space
-    required to render. If the <code>layout_weight</code> of each of the two
-    text edit elements is set to 1, the remaining width in the parent layout will
-    be split equally between them (because we claim they are equally important).
-    If the first one has a <code>layout_weight</code> of 1
-    and the second has a <code>layout_weight</code> of 2, then one third of the
-    remaining space will be given to the first, and two thirds to the
-    second (because we claim the second one is more important).</p>
-    <p>This layout also demonstrates how to nest multiple layouts
-    inside each other to achieve a more complex and pleasant layout. In this
-    example, a horizontal linear layout is nested inside the vertical one to
-    allow the title label and text field to be alongside each other,
-    horizontally.</p>
-
-
-<h2 style="clear:right;">Step 8</h2>
-
-	<p>Create a <code>NoteEdit</code> class that extends
-    <code>android.app.Activity</code>.</p>
-    <p>This is the first time we will have
-    created an Activity without the Android Eclipse plugin doing it for us. When
-    you do so, the <code>onCreate()</code> method is not automatically
-    overridden for you. It is hard to imagine an Activity that doesn't override
-    the <code>onCreate()</code> method, so this should be the first thing you do.</p>
-  <ol>
-    <li>Right click on the <code>com.android.demo.notepad2</code> package
-    in the Package Explorer, and select <strong>New</strong> &gt; <strong>Class</strong> from the popup
-    menu.</li>
-    <li>Fill in <code>NoteEdit</code> for the <code>Name:</code> field in the
-    dialog.</li>
-    <li>In the <code>Superclass:</code> field, enter
-    <code>android.app.Activity</code> (you can also just type Activity and hit
-    Ctrl-Space on Windows and Linux or Cmd-Space on the Mac, to invoke code
-    assist and find the right package and class).</li>
-    <li>Click <strong>Finish</strong>.</li>
-    <li>In the resulting <code>NoteEdit</code> class, right click in the editor
-    window and select <strong>Source</strong> &gt; <strong>Override/Implement Methods...</strong></li>
-    <li>Scroll down through the checklist in the dialog until you see
-    <code>onCreate(Bundle)</code> &mdash; and check the box next to it.</li>
-    <li>Click <strong>OK</strong>.<p>The method should now appear in your class.</p></li>
-  </ol>
-
-<h2>Step 9</h2>
-
-<p>Fill in the body of the <code>onCreate()</code> method for <code>NoteEdit</code>.</p>
-
-<p>This will set the title of our new Activity to say "Edit Note" (one
-    of the strings defined in <code>strings.xml</code>). It will also set the
-    content view to use our <code>note_edit.xml</code> layout file. We can then
-    grab handles to the title and body text edit views, and the confirm button,
-    so that our class can use them to set and get the note title and body,
-    and attach an event to the confirm button for when it is pressed by the
-    user.</p>
-    <p>We can then unbundle the values that were passed in to the Activity
-    with the extras Bundle attached to the calling Intent. We'll use them to pre-populate
-    the title and body text edit views so that the user can edit them.
-    Then we will grab and store the <code>mRowId</code> so we can keep
-    track of what note the user is editing.</p>
-
-  <ol>
-    <li>
-      Inside <code>onCreate()</code>, set up the layout:<br>
-      <pre>setContentView(R.layout.note_edit);</pre>
-    </li>
-    <li>
-      Change the Activity title to the "Edit Note" string:
-      <pre>setTitle(R.string.edit_note);</pre>
-    </li>
-    <li>
-      Find the {@link android.widget.EditText} and {@link android.widget.Button} components we need:
-      <p>These are found by the
-      IDs associated to them in the R class, and need to be cast to the right
-      type of <code>View</code> (<code>EditText</code> for the two text views,
-      and <code>Button</code> for the confirm button):</p>
-      <pre>
-mTitleText = (EditText) findViewById(R.id.title);
-mBodyText = (EditText) findViewById(R.id.body);
-Button confirmButton = (Button) findViewById(R.id.confirm);</pre>
-      <p>Note that <code>mTitleText</code> and <code>mBodyText</code> are member
-      fields (you need to declare them at the top of the class definition).</p>
-    </li>
-    <li>At the top of the class, declare a <code>Long mRowId</code> private field to store
-      the current <code>mRowId</code> being edited (if any).
-    </li>
-    <li>Continuing inside <code>onCreate()</code>,
-      add code to initialize the <code>title</code>, <code>body</code> and
-      <code>mRowId</code> from the extras Bundle in
-      the Intent (if it is present):<br>
-      <pre>
-mRowId = null;
-Bundle extras = getIntent().getExtras();
-if (extras != null) {
-    String title = extras.getString(NotesDbAdapter.KEY_TITLE);
-    String body = extras.getString(NotesDbAdapter.KEY_BODY);
-    mRowId = extras.getLong(NotesDbAdapter.KEY_ROWID);
-
-    if (title != null) {
-        mTitleText.setText(title);
-    }
-    if (body != null) {
-        mBodyText.setText(body);
-    }
-}</pre>
-     <ul>
-      <li>
-        We are pulling the <code>title</code> and
-        <code>body</code> out of the
-        <code>extras</code> Bundle that was set from the
-        Intent invocation.
-      </li><li>
-        We also null-protect the text field setting (i.e., we don't want to set
-        the text fields to null accidentally).</li>
-     </ul>
-    </li>
-    <li>
-      Create an <code>onClickListener()</code> for the button:
-      <p>Listeners can be one of the more confusing aspects of UI
-      implementation, but
-      what we are trying to achieve in this case is simple. We want an
-      <code>onClick()</code> method to be called when the user presses the
-      confirm button, and use that to do some work and return the values
-      of the edited note to the Intent caller. We do this using something called
-      an anonymous inner class. This is a bit confusing to look at unless you
-      have seen them before, but all you really need to take away from this is
-      that you can refer to this code in the future to see how to create a
-      listener and attach it to a button. (Listeners are a common idiom
-      in Java development, particularly for user interfaces.) Here's the empty listener:<br>
-      <pre>
-confirmButton.setOnClickListener(new View.OnClickListener() {
-
-    public void onClick(View view) {
-
-    }
-
-});</pre>
-    </li>
-  </ol>
-<h2>Step 10</h2>
-
-<p>Fill in the body of the <code>onClick()</code> method of the <code>OnClickListener</code> created in the last step.</p>
-
-    <p>This is the code that will be run when the user clicks on the
-    confirm button. We want this to grab the title and body text from the edit
-    text fields, and put them into the return Bundle so that they can be passed
-    back to the Activity that invoked this <code>NoteEdit</code> Activity. If the
-    operation is an edit rather than a create, we also want to put the
-    <code>mRowId</code> into the Bundle so that the
-    <code>Notepadv2</code> class can save the changes back to the correct
-    note.</p>
-  <ol>
-    <li>
-      Create a <code>Bundle</code> and put the title and body text into it using the
-      constants defined in Notepadv2 as keys:<br>
-      <pre>
-Bundle bundle = new Bundle();
-
-bundle.putString(NotesDbAdapter.KEY_TITLE, mTitleText.getText().toString());
-bundle.putString(NotesDbAdapter.KEY_BODY, mBodyText.getText().toString());
-if (mRowId != null) {
-    bundle.putLong(NotesDbAdapter.KEY_ROWID, mRowId);
-}</pre>
-    </li>
-    <li>
-      Set the result information (the Bundle) in a new Intent and finish the Activity:
-      <pre>
-Intent mIntent = new Intent();
-mIntent.putExtras(bundle);
-setResult(RESULT_OK, mIntent);
-finish();</pre>
-      <ul>
-      <li>The Intent is simply our data carrier that carries our Bundle
-      (with the title, body and mRowId).</li>
-      <li>The <code>setResult()</code> method is used to set the result
-      code and return Intent to be passed back to the
-      Intent caller. In this case everything worked, so we return RESULT_OK for the
-      result code.</li>
-      <li>The <code>finish()</code> call is used to signal that the Activity
-      is done (like a return call). Anything set in the Result will then be
-      returned to the caller, along with execution control.</li>
-      </ul>
-    </li>
-   </ol>
-   <p>The full <code>onCreate()</code> method (plus supporting class fields) should
-      now look like this:</p>
-      <pre>
-private EditText mTitleText;
-private EditText mBodyText;
-private Long mRowId;
-
-&#64;Override
-protected void onCreate(Bundle savedInstanceState) {
-    super.onCreate(savedInstanceState);
-    setContentView(R.layout.note_edit);
-
-    mTitleText = (EditText) findViewById(R.id.title);
-    mBodyText = (EditText) findViewById(R.id.body);
-
-    Button confirmButton = (Button) findViewById(R.id.confirm);
-
-    mRowId = null;
-    Bundle extras = getIntent().getExtras();
-    if (extras != null) {
-        String title = extras.getString(NotesDbAdapter.KEY_TITLE);
-        String body = extras.getString(NotesDbAdapter.KEY_BODY);
-        mRowId = extras.getLong(NotesDbAdapter.KEY_ROWID);
-
-        if (title != null) {
-            mTitleText.setText(title);
-        }
-        if (body != null) {
-            mBodyText.setText(body);
-        }
-    }
-
-    confirmButton.setOnClickListener(new View.OnClickListener() {
-
-        public void onClick(View view) {
-            Bundle bundle = new Bundle();
-
-            bundle.putString(NotesDbAdapter.KEY_TITLE, mTitleText.getText().toString());
-            bundle.putString(NotesDbAdapter.KEY_BODY, mBodyText.getText().toString());
-            if (mRowId != null) {
-                bundle.putLong(NotesDbAdapter.KEY_ROWID, mRowId);
-            }
-
-            Intent mIntent = new Intent();
-            mIntent.putExtras(bundle);
-            setResult(RESULT_OK, mIntent);
-            finish();
-        }
-    });
-}</pre>
-    </li>
-  </ol>
-
-<h2>Step 11</h2>
-
-  <div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>The All-Important Android Manifest File</h2>
-  <p>The AndroidManifest.xml file is the way in which Android sees your
-    application. This file defines the category of the application, where
-    it shows up (or even if it shows up) in the launcher or settings, what
-    activities, services, and content providers it defines, what intents it can
-    receive, and more. </p>
-    <p>For more information, see the reference document
-    <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">The AndroidManifest.xml
-File</a></p>
-  </div>
-  </div>
-
-<p>Finally, the new Activity has to be defined in the manifest file:</p>
-    <p>Before the new Activity can be seen by Android, it needs its own
-    Activity entry in the <code>AndroidManifest.xml</code> file. This is to let
-    the system know that it is there and can be called. We could also specify
-    which IntentFilters the activity implements here, but we are going to skip
-    this for now and just let Android know that the Activity is
-    defined.</p>
-    <p>There is a Manifest editor included in the Eclipse plugin that makes it much easier
-    to edit the AndroidManifest file, and we will use this. If you prefer to edit the file directly
-    or are not using the Eclipse plugin, see the box at the end for information on how to do this
-    without using the new Manifest editor.<p>
-    <ol>
-    <li>Double click on the <code>AndroidManifest.xml</code> file in the package explorer to open it.
-    </li>
-    <li>Click the <strong>Application</strong> tab at the bottom of the Manifest editor.</li>
-    <li>Click <strong>Add...</strong> in the Application Nodes section.
-      <p>If you see a dialog with radiobuttons at the top, select the top radio button:
-      "Create a new element at the top level, in Application".</p></li>
-    <li>Make sure "(A) Activity" is selected in the selection pane of the dialog, and click <strong>OK</strong>.</li>
-    <li>Click on the new "Activity" node, in the Application Nodes section, then
-    type <code>.NoteEdit</code> into the <em>Name*</em>
-    field to the right. Press Return/Enter.</li>
-    </ol>
-    <p>The Android Manifest editor helps you add more complex entries into the AndroidManifest.xml
-    file, have a look around at some of the other options available (but be careful not to select
-    them otherwise they will be added to your Manifest). This editor should help you understand
-    and alter the AndroidManifest.xml file as you move on to more advanced Android applications.</p>
-
-    <p class="note">If you prefer to edit this file directly, simply open the
-    <code>AndroidManifest.xml</code> file and look at the source (use the
-    <code>AndroidManifest.xml</code> tab in the eclipse editor to see the source code directly).
-    Then edit the file as follows:<br>
-    <code>&lt;activity android:name=".NoteEdit" /&gt;</code><br><br>
-    This should be placed just below the line that reads:<br>
-    <code>&lt;/activity&gt;</code> for the <code>.Notepadv2</code> activity.</p>
-
-<h2 style="clear:right;">Step 12</h2>
-
-<p>Now Run it!</p>
-<p>You should now be able to add real notes from
-the menu, as well as delete an existing one. Notice that in order to delete, you must
-first use the directional controls on the device to highlight the note.
-Furthermore, selecting a note title from the list should bring up the note
-editor to let you edit it. Press confirm when finished to save the changes
-back to the database.
-
-<h2>Solution and Next Steps</h2>
-
-<p>You can see the solution to this exercise in  <code>Notepadv2Solution</code>
-from the zip file to compare with your own.</p>
-<p>Now try editing a note, and then hitting the back button on the emulator
-instead of the confirm button (the back button is below the menu button). You
-will see an error come up. Clearly our application still has some problems.
-Worse still, if you did make some changes and hit the back button, when you go
-back into the notepad to look at the note you changed, you will find that all
-your changes have been lost. In the next exercise we will fix these
-problems.</p>
-
-<p>
-Once you are ready, move on to <a href="notepad-ex3.html">Tutorial
-Exercise 3</a> where you will fix the problems with the back button and lost
-edits by introducing a proper life cycle into the NoteEdit Activity.</p>
-
-
diff --git a/docs/html/training/notepad/notepad-ex3.jd b/docs/html/training/notepad/notepad-ex3.jd
deleted file mode 100644
index 648f9f2..0000000
--- a/docs/html/training/notepad/notepad-ex3.jd
+++ /dev/null
@@ -1,367 +0,0 @@
-excludeFromSuggestions=true
-page.title=Notepad Exercise 3
-parent.title=Notepad Tutorial
-parent.link=index.html
-@jd:body
-
-
-<p><em>In this exercise, you will use life-cycle event callbacks to store and
-retrieve application state data. This exercise demonstrates:</em></p>
-<ul>
-<li><em>Life-cycle events and how your application can use them</em></li>
-<li><em>Techniques for maintaining application state</em></li>
-</ul>
-
-<div style="float:right;white-space:nowrap">
-	[<a href="notepad-ex1.html">Exercise 1</a>]
-	[<a href="notepad-ex2.html">Exercise 2</a>]
-	<span style="color:#BBB;">
-		[<a href="notepad-ex3.html" style="color:#BBB;">Exercise 3</a>]
-	</span>
-	[<a href="notepad-extra-credit.html">Extra Credit</a>]
-</div>
-
-<h2>Step 1</h2>
-
-<p>Import <code>Notepadv3</code> into Eclipse. If you see an error about
-<code>AndroidManifest.xml,</code> or some problems related to an Android zip
-file, right click on the project and select <strong>Android Tools</strong> &gt;
-<strong>Fix Project Properties</strong> from the popup menu. The starting point for this exercise is
-exactly where we left off at the end of the Notepadv2. </p>
-<p>The current application has some problems &mdash; hitting the back button when editing
-causes a crash, and anything else that happens during editing will cause the
-edits to be lost.</p>
-<p>To fix this, we will move most of the functionality for creating and editing
-the note into the NoteEdit class, and introduce a full life cycle for editing
-notes.</p>
-
-  <ol>
-    <li>Remove the code in <code>NoteEdit</code> that parses the title and body
-    from the extras Bundle.
-    <p>Instead, we are going to use the <code>DBHelper</code> class
-    to access the notes from the database directly. All we need passed into the
-    NoteEdit Activity is a <code>mRowId</code> (but only if we are editing, if creating we pass
-    nothing). Remove these lines:</p>
-      <pre>
-String title = extras.getString(NotesDbAdapter.KEY_TITLE);
-String body = extras.getString(NotesDbAdapter.KEY_BODY);</pre>
-    </li>
-    <li>We will also get rid of the properties that were being passed in
-    the <code>extras</code> Bundle, which we were using to set the title
-    and body text edit values in the UI. So delete:
-    <pre>
-if (title != null) {
-    mTitleText.setText(title);
-}
-if (body != null) {
-    mBodyText.setText(body);
-}</pre>
-    </li>
-  </ol>
-
-<h2>Step 2</h2>
-
-<p>Create a class field for a <code>NotesDbAdapter</code> at the top of the NoteEdit class:</p>
-    <pre>&nbsp;&nbsp;&nbsp; private NotesDbAdapter mDbHelper;</pre>
-<p>Also add an instance of <code>NotesDbAdapter</code> in the
-    <code>onCreate()</code> method (right below the <code>super.onCreate()</code> call):</p>
-    <pre>
-&nbsp;&nbsp;&nbsp; mDbHelper = new NotesDbAdapter(this);<br>
-&nbsp;&nbsp;&nbsp; mDbHelper.open();</pre>
-
-<h2>Step 3</h2>
-
-<p>In <code>NoteEdit</code>, we need to check the <var>savedInstanceState</var> for the
-<code>mRowId</code>, in case the note
-    editing contains a saved state in the Bundle, which we should recover (this would happen
-  if our Activity lost focus and then restarted).</p>
-  <ol>
-    <li>
-      Replace the code that currently initializes the <code>mRowId</code>:<br>
-      <pre>
-        mRowId = null;
-
-        Bundle extras = getIntent().getExtras();
-        if (extras != null) {
-            mRowId = extras.getLong(NotesDbAdapter.KEY_ROWID);
-        }
-        </pre>
-        with this:
-        <pre>
-        mRowId = (savedInstanceState == null) ? null :
-            (Long) savedInstanceState.getSerializable(NotesDbAdapter.KEY_ROWID);
-        if (mRowId == null) {
-            Bundle extras = getIntent().getExtras();
-            mRowId = extras != null ? extras.getLong(NotesDbAdapter.KEY_ROWID)
-                                    : null;
-        }
-        </pre>
-    </li>
-    <li>
-      Note the null check for <code>savedInstanceState</code>, and we still need to load up
-      <code>mRowId</code> from the <code>extras</code> Bundle if it is not
-      provided by the <code>savedInstanceState</code>. This is a ternary operator shorthand
-      to safely either use the value or null if it is not present.
-    </li>
-    <li>
-      Note the use of <code>Bundle.getSerializable()</code> instead of
-      <code>Bundle.getLong()</code>.  The latter encoding returns a <code>long</code> primitive and
-      so can not be used to represent the case when <code>mRowId</code> is <code>null</code>.
-    </li>
-  </ol>
-
-<h2>Step 4</h2>
-
-<p>Next, we need to populate the fields based on the <code>mRowId</code> if we
-    have it:</p>
-    <pre>populateFields();</pre>
-    <p>This goes before the <code>confirmButton.setOnClickListener()</code> line.
-    We'll define this method in a moment.</p>
-
-<h2>Step 5</h2>
-
-<p>Get rid of the Bundle creation and Bundle value settings from the
-    <code>onClick()</code> handler method. The Activity no longer needs to
-    return any extra information to the caller. And because we no longer have
-    an Intent to return, we'll use the shorter version
-    of <code>setResult()</code>:</p>
-    <pre>
-public void onClick(View view) {
-    setResult(RESULT_OK);
-    finish();
-}</pre>
-    <p>We will take care of storing the updates or new notes in the database
-    ourselves, using the life-cycle methods.</p>
-
-    <p>The whole <code>onCreate()</code> method should now look like this:</p>
-    <pre>
-super.onCreate(savedInstanceState);
-
-mDbHelper = new NotesDbAdapter(this);
-mDbHelper.open();
-
-setContentView(R.layout.note_edit);
-
-mTitleText = (EditText) findViewById(R.id.title);
-mBodyText = (EditText) findViewById(R.id.body);
-
-Button confirmButton = (Button) findViewById(R.id.confirm);
-
-mRowId = (savedInstanceState == null) ? null :
-    (Long) savedInstanceState.getSerializable(NotesDbAdapter.KEY_ROWID);
-if (mRowId == null) {
-    Bundle extras = getIntent().getExtras();
-    mRowId = extras != null ? extras.getLong(NotesDbAdapter.KEY_ROWID)
-                            : null;
-}
-
-populateFields();
-
-confirmButton.setOnClickListener(new View.OnClickListener() {
-
-    public void onClick(View view) {
-        setResult(RESULT_OK);
-        finish();
-    }
-
-});</pre>
-
-<h2>Step 6</h2>
-
-<p>Define the <code>populateFields()</code> method.</p>
-    <pre>
-private void populateFields() {
-    if (mRowId != null) {
-        Cursor note = mDbHelper.fetchNote(mRowId);
-        startManagingCursor(note);
-        mTitleText.setText(note.getString(
-	            note.getColumnIndexOrThrow(NotesDbAdapter.KEY_TITLE)));
-        mBodyText.setText(note.getString(
-                note.getColumnIndexOrThrow(NotesDbAdapter.KEY_BODY)));
-    }
-}</pre>
-<p>This method uses the <code>NotesDbAdapter.fetchNote()</code> method to find the right note to
-edit, then it calls <code>startManagingCursor()</code> from the <code>Activity</code> class, which
-is an Android convenience method provided to take care of the Cursor life-cycle. This will release
-and re-create resources as dictated by the Activity life-cycle, so we don't need to worry about
-doing that ourselves. After that, we just look up the title and body values from the Cursor
-and populate the View elements with them.</p>
-
-
-<h2>Step 7</h2>
-
-  <div class="sidebox-wrapper">
-  <div class="sidebox">
-    <h2>Why handling life-cycle events is important</h2>
-    <p>If you are used to always having control in your applications, you
-    might not understand why all this life-cycle work is necessary. The reason
-    is that in Android, you are not in control of your Activity, the
-    operating system is!</p>
-    <p>As we have already seen, the Android model is based around activities
-    calling each other. When one Activity calls another, the current Activity
-    is paused at the very least, and may be killed altogether if the
-    system starts to run low on resources. If this happens, your Activity will
-    have to store enough state to come back up later, preferably in the same
-    state it was in when it was killed.</p>
-    <p>
-    Activities have a <a
-href="{@docRoot}guide/components/activities.html#Lifecycle">well-defined life
-cycle</a>.
-    Lifecycle events can happen even if you are not handing off control to
-    another Activity explicitly. For example, perhaps a call comes in to the
-    handset. If this happens, and your Activity is running, it will be swapped
-    out while the call Activity takes over.</p>
-  </div>
-  </div>
-
-<p>Still in the <code>NoteEdit</code> class, we now override the methods
-   <code>onSaveInstanceState()</code>, <code>onPause()</code> and
-   <code>onResume()</code>. These are our life-cycle methods
-   (along with <code>onCreate()</code> which we already have).</p>
-
-<p><code>onSaveInstanceState()</code> is called by Android if the
-    Activity is being stopped and <strong>may be killed before it is
-    resumed!</strong> This means it should store any state necessary to
-    re-initialize to the same condition when the Activity is restarted. It is
-    the counterpart to the <code>onCreate()</code> method, and in fact the
-    <code>savedInstanceState</code> Bundle passed in to <code>onCreate()</code> is the same
-    Bundle that you construct as <code>outState</code> in the
-    <code>onSaveInstanceState()</code> method.</p>
-
-<p><code>onPause()</code> and <code>onResume()</code> are also
-    complimentary methods. <code>onPause()</code> is always called when the
-    Activity ends, even if we instigated that (with a <code>finish()</code> call for example).
-    We will use this to save the current note back to the database. Good
-    practice is to release any resources that can be released during an
-    <code>onPause()</code> as well, to take up less resources when in the
-    passive state. <code>onResume()</code> will call our <code>populateFields()</code> method
-    to read the note out of the database again and populate the fields.</p>
-
-<p>So, add some space after the <code>populateFields()</code> method
-  and add the following life-cycle methods:</p>
-  <ol type="a">
-    <li><code>
-      onSaveInstanceState()</code>:
-      <pre>
-    &#64;Override
-    protected void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-        saveState();
-        outState.putSerializable(NotesDbAdapter.KEY_ROWID, mRowId);
-    }</pre>
-    <p>We'll define <code>saveState()</code> next.</p>
-    </li>
-    <li><code>
-      onPause()</code>:
-      <pre>
-    &#64;Override
-    protected void onPause() {
-        super.onPause();
-        saveState();
-    }</pre>
-    </li>
-    <li><code>
-      onResume()</code>:
-      <pre>
-    &#64;Override
-    protected void onResume() {
-        super.onResume();
-        populateFields();
-    }</pre>
-    </li>
-  </ol>
-<p>Note that <code>saveState()</code> must be called in both <code>onSaveInstanceState()</code>
-and <code>onPause()</code> to ensure that the data is saved.  This is because there is no
-guarantee that <code>onSaveInstanceState()</code> will be called and because when it <em>is</em>
-called, it is called before <code>onPause()</code>.</p>
-
-
-<h2 style="clear:right;">Step 8</h2>
-
-<p>Define the <code>saveState()</code> method to put the data out to the
-database.</p>
-    <pre>
-     private void saveState() {
-        String title = mTitleText.getText().toString();
-        String body = mBodyText.getText().toString();
-
-        if (mRowId == null) {
-            long id = mDbHelper.createNote(title, body);
-            if (id > 0) {
-                mRowId = id;
-            }
-        } else {
-            mDbHelper.updateNote(mRowId, title, body);
-        }
-    }</pre>
-  <p>Note that we capture the return value from <code>createNote()</code> and if a valid row ID is
-  returned, we store it in the <code>mRowId</code> field so that we can update the note in future
-  rather than create a new one (which otherwise might happen if the life-cycle events are
-  triggered).</p>
-
-
-<h2 style="clear:right;">Step 9</h2>
-
-<p>Now pull out the previous handling code from the
-    <code>onActivityResult()</code> method in the <code>Notepadv3</code>
-    class.</p>
-<p>All of the note retrieval and updating now happens within the
-    <code>NoteEdit</code> life cycle, so all the <code>onActivityResult()</code>
-    method needs to do is update its view of the data, no other work is
-    necessary. The resulting method should look like this:</p>
-<pre>
-&#64;Override
-protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
-    super.onActivityResult(requestCode, resultCode, intent);
-    fillData();
-}</pre>
-
-<p>Because the other class now does the work, all this has to do is refresh
-      the data.</p>
-
-<h2>Step 10</h2>
-
-<p>Also remove the lines which set the title and body from the
-    <code>onListItemClick()</code> method (again they are no longer needed,
-    only the <code>mRowId</code> is):</p>
-<pre>
-    Cursor c = mNotesCursor;
-    c.moveToPosition(position);</pre>
-<br>
-and also remove:
-<br>
-<pre>
-    i.putExtra(NotesDbAdapter.KEY_TITLE, c.getString(
-                    c.getColumnIndex(NotesDbAdapter.KEY_TITLE)));
-    i.putExtra(NotesDbAdapter.KEY_BODY, c.getString(
-                    c.getColumnIndex(NotesDbAdapter.KEY_BODY)));</pre>
-<br>
-so that all that should be left in that method is:
-<br>
-<pre>
-    super.onListItemClick(l, v, position, id);
-    Intent i = new Intent(this, NoteEdit.class);
-    i.putExtra(NotesDbAdapter.KEY_ROWID, id);
-    startActivityForResult(i, ACTIVITY_EDIT);</pre>
-
-  <p>You can also now remove the mNotesCursor field from the class, and set it back to using
-  a local variable in the <code>fillData()</code> method:
-<br><pre>
-    Cursor notesCursor = mDbHelper.fetchAllNotes();</pre></p>
-  <p>Note that the <code>m</code> in <code>mNotesCursor</code> denotes a member field, so when we
-  make <code>notesCursor</code> a local variable, we drop the <code>m</code>. Remember to rename the
-  other occurrences of <code>mNotesCursor</code> in your <code>fillData()</code> method.
-</ol>
-<p>
-Run it! (use <em>Run As -&gt; Android Application</em> on the project right
-click menu again)</p>
-
-<h2>Solution and Next Steps</h2>
-
-<p>You can see the solution to this exercise in <code>Notepadv3Solution</code>
-from
-the zip file to compare with your own.</p>
-<p>
-When you are ready, move on to the <a href="notepad-extra-credit.html">Tutorial
-Extra Credit</a> exercise, where you can use the Eclipse debugger to
-examine the life-cycle events as they happen.</p>
diff --git a/docs/html/training/notepad/notepad-extra-credit.jd b/docs/html/training/notepad/notepad-extra-credit.jd
deleted file mode 100644
index 8ab2021..0000000
--- a/docs/html/training/notepad/notepad-extra-credit.jd
+++ /dev/null
@@ -1,71 +0,0 @@
-excludeFromSuggestions=true
-page.title=Notepad Extra Credit
-parent.title=Notepad Tutorial
-parent.link=index.html
-@jd:body
-
-
-<p><em>In this exercise, you will use the debugger to look at the work you did
-in Exercise 3. This exercise demonstrates:</em></p>
-<ul>
-<li><em>How to set breakpoints to observe execution</em> </li>
-<li><em>How to run your application in debug mode</code></em></li>
-</ul>
-
-<div style="float:right;white-space:nowrap">
-
-	[<a href="notepad-ex1.html">Exercise 1</a>]
-	[<a href="notepad-ex2.html">Exercise 2</a>]
-	[<a href="notepad-ex3.html">Exercise 3</a>]
-	<span style="color:#BBB;">
-		[<a href="notepad-extra-credit.html" style="color:#BBB;">Extra Credit</a>]
-	</span>
-</div>
-
-<h2>Step 1</h2>
-
-<p>Using the working <code>Notepadv3</code>, put breakpoints in the code at the
-    beginning of the <code>onCreate()</code>, <code>onPause()</code>,
-    <code>onSaveInstanceState()</code> and <code>onResume()</code> methods in the
-    <code>NoteEdit</code> class (if you are not familiar with Eclipse, just
-    right click in the narrow grey border on the left of the edit window at the
-    line you want a breakpoint, and select <em>Toggle Breakpoint</em>, you
-should see a blue dot appear).</p>
- 
-<h2>Step 2</h2>
-
-<p>Now start the notepad demo in debug mode:</p>
-
-<ol type="a">
-    <li>
-      Right click on the <code>Notepadv3</code> project and from the Debug menu
-      select <em>Debug As -&gt; Android Application.</em></li>
-    <li>
-      The Android emulator should say <em>"waiting for debugger to connect"</em>
-      briefly and then run the application.</li>
-  <li>
-      If it gets stuck on the waiting... screen, quit the emulator and Eclipse,
-      from the command line do an <code>adb kill-server</code>, and then restart
-Eclipse and try again.</li></ol>
-      
-      <h2>Step 3</h2>
-
-<p>When you edit or create a new note you should see the breakpoints getting
-    hit and the execution stopping.</p>
-    
-    <h2>Step 4</h2>
-
-<p>Hit the Resume button to let execution continue (yellow rectangle with a
-green triangle to its right in the Eclipse toolbars near the top).</p>
-
-<h2>Step 5</h2>
-
-<p>Experiment a bit with the confirm and back buttons, and try pressing Home and
-    making other mode changes. Watch what life-cycle events are generated and
-when.</p>
-
-<p>The Android Eclipse plugin not only offers excellent debugging support for
-your application development, but also superb profiling support. You can also
-try using <a href="{@docRoot}tools/help/traceview.html">Traceview</a> to profile your application. If your application is running too slow, this can help you 
-find the bottlenecks and fix them.</p>
-
diff --git a/docs/html/training/notepad/notepad-index.jd b/docs/html/training/notepad/notepad-index.jd
deleted file mode 100644
index fde43fa..0000000
--- a/docs/html/training/notepad/notepad-index.jd
+++ /dev/null
@@ -1,144 +0,0 @@
-excludeFromSuggestions=true
-page.title=Notepad Tutorial
-@jd:body
-
-
-<p>The  tutorial in this section gives you a &quot;hands-on&quot; introduction
-to the Android framework and the  tools you use to build  applications on it.
-Starting from a preconfigured project file, it guides you through the process of
-developing a simple notepad application and provides concrete examples of how to
-set up the project,  develop the application logic and user interface, and then
-compile and run the application. </p>
-
-<p>The tutorial presents the notepad application development as a set of 
-exercises (see below), each consisting of several steps. You can follow along 
-with the steps in each exercise and gradually build up and refine your  
-application. The exercises explain each step in detail and provide all the 
-sample code you need to complete the application. </p>
-
-<p>When you are finished with the tutorial, you will have created a functioning
-Android application and learned in depth about many of the most important
-concepts in Android development. If you want to add more complex features to
-your application, you can examine the code in an alternative implementation
-of a notepad application, in the 
-<a href="{@docRoot}samples/NotePad/index.html">Sample Code</a> documentation. </p>
-
-
-<a name="who"></a>
-<h2>Who Should Use this Tutorial</h2>
-
-<p>This tutorial is designed for  experienced developers, especially those with 
-knowledge of the Java programming language. If you haven't written Java
-applications before, you can still use the tutorial, but you might need to work
-at a slower pace. </p>
-
-<p>The tutorial  assumes that you have some familiarity with the basic Android
-application concepts and terminology. If you aren't yet familiar with those, you
-should read <a href="{@docRoot}intro/anatomy.html">Overview of an Android 
-Application</a> before continuing. </p>
-
-<p>Also note that this tutorial uses
-the Eclipse development environment, with the Android plugin installed. If you
-are not using Eclipse, you can  follow  the exercises and build the application,
-but you will need to determine how to accomplish the Eclipse-specific
-steps in your environment. </p>
-
-<a name="preparing"></a>
-<h2>Preparing for the Exercises</h2>
-
-<p>This tutorial builds on the information provided in the <a
-href="{@docRoot}intro/installing.html">Installing the SDK</a> and <a 
-href="{@docRoot}intro/hello-android.html">Hello Android</a>
-documents, which explain in detail how to set up your development environment
-for building Android applications. Before you start this tutorial, you should
-read both these documents, have the SDK installed, and your work environment set up.</p>
-
-<p>To prepare for this lesson:</p>
-
-<ol>
-  <li>Download the <a href="codelab/NotepadCodeLab.zip">project
-      exercises archive (.zip)</a></li>
-  <li>Unpack the archive file to a suitable location on your machine</li>
-  <li>Open the <code>NotepadCodeLab</code> folder</li>
-</ol>
-
-<p>Inside the <code>NotepadCodeLab</code> folder, you should see six project
-files: <code>Notepadv1</code>,
-    <code>Notepadv2</code>, <code>Notepadv3</code>,
-    <code>Notepadv1Solution</code>, <code>Notepadv2Solution</code>
-    and <code>Notepadv3Solution</code>. The <code>Notepadv#</code> projects are
-the starting points for each of the exercises, while the
-<code>Notepadv#Solution</code> projects are the exercise
-    solutions. If you are having trouble with a particular exercise, you
-    can compare your current work against the exercise solution.</p>
-
-<a name="exercises"></a>
-<h2> Exercises</h2>
-
-  <p>The table below lists the tutorial exercises and describes the development
-areas that each covers. Each exercise assumes that you have completed any
-previous exercises.</p>
-
-  <table border="0" style="padding:4px;spacing:2px;" summary="This
-table lists the
-tutorial examples and describes what each covers. ">
-    <tr>
-      <th width="120"><a href="{@docRoot}intro/tutorial-ex1.html">Exercise
-1</a></th>
-      <td>Start here. Construct a simple notes list that lets the user add new notes but not
-edit them. Demonstrates the basics of <code>ListActivity</code> and creating
-and handling
-      menu options. Uses a SQLite database to store the notes.</td>
-    </tr>
-    <tr>
-      <th><a href="{@docRoot}intro/tutorial-ex2.html">Exercise 2</a></th>
-      <td>Add a second Activity to the
-application. Demonstrates constructing a
-new Activity, adding it to the Android manifest, passing data between the
-activities, and using more advanced screen layout. Also shows how to
-invoke another Activity to return a result, using
-<code>startActivityForResult()</code>.</td>
-    </tr>
-    <tr>
-      <th><a href="{@docRoot}intro/tutorial-ex3.html">Exercise 3</a></th>
-      <td>Add handling of life-cycle events to
-the application, to let it
-maintain application state across the life cycle. </td>
-    </tr>
-    <tr>
-    <th><a href="{@docRoot}intro/tutorial-extra-credit.html">Extra
-Credit</a></th>
-    <td>Demonstrates how to use the Eclipse
-debugger and how you can use it to
-view life-cycle events as they are generated. This section is optional but
-highly recommended.</td>
-    </tr>
-</table>
-
-
-<a name="other"></a>
-<h2>Other Resources and Further Learning</h2>
-<ul>
-<li>For a lighter but broader introduction to concepts not covered in the
-tutorial,
-take a look at <a href="{@docRoot}kb/commontasks.html">Common Android Tasks</a>.</li>
-<li>The Android SDK includes a variety of fully functioning sample applications
-that make excellent opportunities for further learning. You can find the sample
-applications in the <code>samples/</code> directory of your downloaded SDK.</li>
-<li>This tutorial draws from the full Notepad application included in the
-<code>samples/</code> directory of the SDK, though it does not match it exactly. 
-When you are done with the tutorial,
-it is highly recommended that you take a closer look at this version of the Notepad
-application, 
-as it demonstrates a variety of interesting additions for your application, 
-such as:</li>
-  <ul>
-  <li>Setting up a custom striped list for the list of notes.</li>
-  <li>Creating a custom text edit view that overrides the <code>draw()</code>
-method to
-    make it look like a lined notepad.</li>
-  <li>Implementing a full <code>ContentProvider</code> for notes.</li>
-  <li>Reverting and discarding edits instead of just automatically saving
-them.</li>
-</ul>
-</ul>
diff --git a/docs/html/training/performance/battery/network/action-any-traffic.jd b/docs/html/training/performance/battery/network/action-any-traffic.jd
new file mode 100644
index 0000000..eafb3b8
--- /dev/null
+++ b/docs/html/training/performance/battery/network/action-any-traffic.jd
@@ -0,0 +1,100 @@
+page.title=Optimizing General Network Use
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>This lesson teaches you to</h2>
+<ol>
+  <li><a href="#compress-data">Compress Data</a>
+  <li><a href="#cache-locally">Cache Files Locally</a></li>
+  <li><a href="#pre-fetch">Optimize Pre-Fetch Cache Size</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>
+  In general, reducing the amount of network traffic helps reduce battery drain.
+  In addition to the battery-optimization techniques of the previous lessons,
+  you should look at these general-purpose techniques and see if you can apply
+  them to your app.
+</p>
+
+<p>
+  This lesson briefly covers techniques that you can use to lower network traffic and
+  consequently reduce the battery drain caused by your app.
+</p>
+
+<h2 id="compress-data">Compress Data</h2>
+
+<iframe width="448" height="252"
+    src="//www.youtube.com/embed/IwxIIUypnTE?autohide=1&amp;showinfo=0"
+    frameborder="0" allowfullscreen=""
+    style="float: right; margin: 0 0 20px 20px;"></iframe>
+
+
+<p>
+  Reducing the amount of data sent or received over a network connection also
+  reduces the duration of the connection, which conserves battery. You can:
+</p>
+
+<ul>
+  <li>Compress data, using a compression technique such as GZIP compression.</li>
+
+  <li>Use succinct data protocols. While JSON and XML offer human-readability, and
+    language-flexibility, they are bandwidth-heavy formats, with
+    high serialization costs in the Android platform. Binary serialization formats,
+    such as <a href="https://developers.google.com/protocol-buffers/">Protocol Buffers</a> or
+    <a href="https://google.github.io/flatbuffers/">FlatBuffers</a> offer a smaller on-the-wire
+    packet size, as well as faster encoding and decoding time. If your application transfers a lot
+    of serialized data on a regular basis, these formats can yield benefits for decoding time and
+    transfer size.
+  </li>
+</ul>
+
+
+<h2 id="cache-locally">Cache Files Locally</h2>
+
+<iframe width="448" height="252"
+    src="//www.youtube.com/embed/7lxVqqWwTb0?autohide=1&amp;showinfo=0"
+    frameborder="0" allowfullscreen=""
+    style="float: left; margin: 0 20px 20px 0;"></iframe>
+
+
+<p>
+  Your app can avoid downloading duplicate data by caching. Always cache static resources,
+  including on-demand downloads such as full size images, and cache them for as long as reasonably
+  possible.
+</p>
+
+<p>
+  For example, you should consider this approach for a networked app that displays data from
+  user-initiated network requests as the primary content on the screen. When the user opens this
+  screen the first time, the app should display a splash screen. Subsequent loads should initially
+  load with the data that was cached from the last network request. The screen reloads with
+  new data once the network request is complete.
+</p>
+
+<p>
+  To learn about caching, watch the video. To implement caching in your app, see <a href=
+  "{@docRoot}training/efficient-downloads/redundant_redundant.html#LocalCache">Cache Files
+  Locally</a>.
+</p>
+
+
+<h2 id="pre-fetch">Optimize Pre-Fetch Cache Size</h2>
+
+<p>
+  Optimize pre-fetch cache size based on local file system size and current network connectivity.
+  You can use the connectivity manager to determine what type of networks (Wi-FI, LTE, HSPAP, EDGE,
+  GPRS) are active and modify your pre-fetching routines to minimize battery load.
+</p>
+
+<p>
+  For more information, see
+  <a href="{@docRoot}training/efficient-downloads/connectivity_patterns.html#Bandwidth">Use
+  Modifying your Download Patterns Based on the Connectivity Type</a>.
+</p>
diff --git a/docs/html/training/performance/battery/network/action-app-traffic.jd b/docs/html/training/performance/battery/network/action-app-traffic.jd
new file mode 100644
index 0000000..d62461e
--- /dev/null
+++ b/docs/html/training/performance/battery/network/action-app-traffic.jd
@@ -0,0 +1,134 @@
+page.title=Optimizing App-Initiated Network Use
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>This lesson teaches you to</h2>
+<ol>
+  <li><a href="#batch-schedule">Batch and Schedule Network Requests</a>
+  <li><a href="#check-connect">Allow System to Check for Connectivity</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>
+  Network traffic initiated by your app can usually be significantly optimized, since you can plan
+  for what network resources it needs and set a schedule for accessing them. By applying careful
+  scheduling, you can create significant periods of rest for the device radio and, thereby, save
+  power. There are several Android APIs that can help with network access scheduling, and some of
+  these functions can coordinate network access for other apps, further optimizing battery
+  performance.
+</p>
+
+<p>
+  This lesson teaches you how to reduce battery consumption by applying techniques for
+  optimizing app-initiated network traffic.
+</p>
+
+
+<h2 id="batch-schedule">Batch and Schedule Network Requests</h2>
+
+<iframe width="448" height="252"
+    src="//www.youtube.com/embed/Ecz5WDZoJok?autohide=1&amp;showinfo=0"
+    frameborder="0" allowfullscreen=""
+    style="float: right; margin: 0 0 20px 20px;"></iframe>
+
+
+<p>
+  On a mobile device, the process of turning on the radio, making a connection, and keeping the
+  radio awake uses a large amount of power. For this reason, processing individual requests at
+  random times can consume significant power and reduce battery life. A more efficient approach is
+  to queue a set of network requests and process them together. This allows the system to pay the
+  power cost of turning on the radio just once, and still get all the data requested by an app.
+</p>
+
+
+<iframe width="448" height="252"
+    src="//www.youtube.com/embed/orlRuEwlDoM?autohide=1&amp;showinfo=0"
+    frameborder="0" allowfullscreen=""
+    style="float: left; margin: 0 20px 20px 0;"></iframe>
+
+<p>
+  Using a network access scheduler API for queuing and processing your app data requests can
+  significantly increase the power efficiency of your app. Schedulers conserve battery power by
+  grouping requests together for the system to process. They can further improve efficiency by
+  delaying some requests until other requests wake up the mobile radio, or waiting until the
+  device is charging. Schedulers defer and batch network requests system-wide, across all apps on
+  the device, which gives them an optimizing advantage over what any individual app can do.
+</p>
+
+
+<h3 id="choosing-scheduler">Choosing a batch-and-scheduling API</h3>
+
+<p>
+  Android provides three different APIs for your app to batch and schedule network requests. For
+  most operations, these techniques are functionally equivalent. These APIs are listed in the
+  following table with the most highly recommended first.
+</p>
+
+<table>
+  <tr>
+    <th>Scheduler</th>
+    <th>Requirements</th>
+    <th>Implementation Ease</th>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap;"><a href="https://developers.google.com/cloud-messaging/network-manager">
+      GCM Network Manager</a></td>
+    <td>GCM Network Manager requires that your app use the Google Play services client library,
+      version 6.1.11 or higher &mdash; use the latest available version.</td>
+    <td>Straightforward</td>
+  </tr>
+  <tr>
+    <td><a href="{@docRoot}reference/android/app/job/JobScheduler.html">Job Scheduler</a></td>
+    <td>Job Scheduler does not require Google Play services, but is available only when targeting
+      Android 5.0 (API level 21) or higher.</td>
+    <td>Straightforward</td>
+  </tr>
+  <tr>
+    <td>
+      <a href="{@docRoot}training/sync-adapters/index.html">Sync Adapter for scheduled syncs</a>
+    </td>
+    <td>Sync Adapter does not require the Google Play services client library and has been
+      available since Android 2.0 (API level 5).</td>
+    <td>Complex</td>
+  </tr>
+</table>
+
+
+<p class="note">
+  <strong>Note:</strong> For scheduled data synchronization, you should <em>always</em> prefer GCM
+  Network Manager or Job Scheduler over Sync Adapter if your requirements allow it.
+</p>
+
+
+<h2 id="check-connect">Allow System to Check for Connectivity</h2>
+
+<p>
+  One of the most serious and unexpected causes of battery drain is when a user travels beyond the
+  reach of any cell tower or access point. In this situation, the user is typically not using their
+  device, but they notice the device getting warm, and then see that the battery is low or has run
+  out.
+</p>
+
+<p>
+  In this scenario, the problem is that an app is running a background process that keeps
+  waking up the mobile radio at regular intervals to search for a cellular signal, but finds none.
+  Searching for a cell signal is one of the most power-draining operations there is.
+</p>
+
+<p>
+  The way to avoid causing this kind of problem for a user with your app is to use a
+  battery-efficient method for checking connectivity. For app-initiated network requests, use a
+  <a href="#choosing-scheduler">scheduler</a>, which automatically uses <a href=
+  "{@docRoot}training/monitoring-device-state/connectivity-monitoring.html">Connectivity
+  Manager</a> to check for connectivity before calling into your app. As a result, if there's no
+  network, the Connectivity Manager conserves battery because it performs the connectivity check
+  itself, without loading the app to run the check. Battery is further conserved because schedulers
+  use <a href="http://en.wikipedia.org/wiki/Exponential_backoff" class="external-link">exponential
+  backoff</a> to check for connectivity less frequently as time progresses.
+</p>
diff --git a/docs/html/training/performance/battery/network/action-server-traffic.jd b/docs/html/training/performance/battery/network/action-server-traffic.jd
new file mode 100644
index 0000000..e568c8a
--- /dev/null
+++ b/docs/html/training/performance/battery/network/action-server-traffic.jd
@@ -0,0 +1,78 @@
+page.title=Optimizing Server-Initiated Network Use
+trainingnavtop=true
+
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>This lesson teaches you to</h2>
+<ol>
+  <li><a href="#gcm">Send Server Updates with GCM</a>
+</ol>
+
+</div>
+</div>
+
+<p>
+  Network traffic sent by server programs to your app can be challenging to optimize. A
+  solution to this problem is for your appp to periodically poll the server to check for updates.
+  This approach can waste network connection and power when your app starts up a device's radio,
+  only to receive an answer that no new data is available. A far more efficient approach would be
+  for the to notify your app when it has new data, but figuring out how to send a notification
+  from your server to potentially thousands of devices was previously no easy feat.
+</p>
+
+<p>
+  The <a href="https://developers.google.com/cloud-messaging/gcm">Google Cloud Messaging</a> (GCM)
+  service solves this communication problem by allowing your servers to send notifications to
+  instances of your app wherever they are installed, enabling greater network efficiency and
+  lowering power usage.
+</p>
+
+<p>
+  This lesson teaches you how to apply the GCM service to reduce network use for server-initiated
+  actions and reduce battery consumption.
+</p>
+
+
+<h2 id="gcm">Send Server Updates with GCM</h2>
+
+<p>
+  Google Cloud Messaging (GCM) is a lightweight mechanism used to transmit brief messages from an
+  app server to your app. Using GCM, your app server uses a message-passing
+  mechanism to notify your app that there is new data available. This approach eliminates network
+  traffic that your app would perform, by not contacting a backend server for new data when no
+  data is available.
+</p>
+
+<p>
+  An example use of GCM is an app that lists speaker sessions at a conference. When sessions are
+  updated on your server, the server sends a brief message to your app telling it updates are
+  available. Your app can then call the server to update the sessions on the device only when
+  the server has new data.
+</p>
+
+<p>
+  GCM is more efficient than having your app poll for changes on the server. The GCM service
+  eliminates unnecessary connections where polling would return no updates, and it avoids running
+  periodic network requests that could cause a device's radio to power up. Since GCM can be used by
+  many apps, using it in your app reduces the total number of network connections needed on a
+  device and allows the device radio to sleep more often.
+</p>
+
+<p>
+  For more information about GCM and how to implement it for your app, see
+  <a href="https://developers.google.com/cloud-messaging/gcm">Google Cloud Messaging</a>.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> When using GCM, your app can pass messages in normal or high priority.
+  Your server should typically use <a href=
+  "https://developers.google.com/cloud-messaging/concept-options#setting-the-priority-of-a-message">
+  normal priority</a> to deliver messages. Using this priority level prevents devices from being
+  woken up if they are inactive and in a low-power <a href=
+  "https://developer.android.com/training/monitoring-device-state/doze-standby.html">Doze</a>
+  state. Use high priority messages only if absolutely required.
+</p>
diff --git a/docs/html/training/performance/battery/network/action-user-traffic.jd b/docs/html/training/performance/battery/network/action-user-traffic.jd
new file mode 100644
index 0000000..e3ddaa2
--- /dev/null
+++ b/docs/html/training/performance/battery/network/action-user-traffic.jd
@@ -0,0 +1,128 @@
+page.title=Optimizing User-Initiated Network Use
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>This lesson teaches you to</h2>
+<ol>
+  <li><a href="#pre-fetch-data">Pre-fetch Network Data</a>
+  <li><a href="#check-or-listen">Check for Connectivity or Listen for Changes</a></li>
+  <li><a href="#reduce-connections">Reduce the Number of Connections</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>
+  Quick handling of user requests helps ensure a good user experience, especially when it comes to
+  user actions that require network access. You should prioritize low latency over power
+  conservation to provide the fastest response when optimizing network use that is a direct result
+  of user actions. Attaining an optimal network traffic profile for your app, while making sure
+  that your users get fast responses, can be a bit challenging.
+</p>
+
+<p>
+  This lesson teaches you how to optimize network use for user-initiated
+  actions and reduce battery consumption.
+</p>
+
+
+<h2 id="pre-fetch-data">Pre-fetch Network Data</h2>
+
+<iframe width="448" height="252"
+    src="//www.youtube.com/embed/Rk1u7VVmadE?autohide=1&amp;showinfo=0"
+    frameborder="0" allowfullscreen=""
+    style="float: right; margin: 0 0 20px 20px;"></iframe>
+
+<p>
+  Pre-fetching data is an effective way to reduce the number of independent data transfer sessions
+  that your app runs. With pre-fetching, when the user performs an action in your app, the app
+  anticipates which data will most likely be needed for the next series of user actions and fetches
+  that data in bulk. Battery power consumption is reduced for two reasons:
+  <ul>
+    <li>
+      Because your app pre-fetches data only when the the mobile radio is already awake from
+      the user's action, and so does not incur the overhead of waking up the mobile radio.
+    </li>
+    <li>
+      The app pre-fetches data for anticipated user actions, each of which might otherwise
+      require separate requests that each incur waking up the mobile radio.
+    </li>
+  </ul>
+
+</p>
+
+<p class="note">
+  <strong>Tip:</strong> To explore whether your app might benefit from pre-fetching, review your
+  app's network traffic and look for situations where a specific series of user actions almost
+  always results in multiple network requests over the course of the task. For instance, an app
+  that incrementally downloads article content as a user views it might be able to pre-fetch one or
+  more articles in categories the user is known to view.
+</p>
+
+<p>
+  Watch the video on effective pre-fetching which describes what pre-fetching is, where to
+  use it, and how much data to pre-fetch. For more details, see <a href=
+  "{@docRoot}training/efficient-downloads/efficient-network-access.html#PrefetchData">Optimizing
+  Downloads for Efficient Network Access</a>.
+</p>
+
+
+<h2 id="check-or-listen">Check for Connectivity or Listen for Changes</h2>
+
+<p>
+  Searching for a cell signal is one of the most power-draining operations on a mobile
+  device. Your app should always check for connectivity before sending a user-initiated network
+  request. If you use a scheduling service, <a href=
+  "{@docRoot}training/performance/battery/network/action-app-traffic.html#choosing-scheduler">Schedulers</a>
+  do this automatically for you.
+</p>
+
+<ul>
+  <li>If only certain buttons in your activity depend on a network connection, use <a href=
+  "{@docRoot}reference/android/net/ConnectivityManager.html">Connectivity Manager</a> to check for
+  a network connection before sending the network request, as instructed in <a href=
+  "{@docRoot}training/monitoring-device-state/connectivity-monitoring.html#MonitorChanges">Monitor
+  for Changes in Connectivity</a>. If there's no network, the app can save battery by not forcing
+  the mobile radio to search.
+  </li>
+
+  <li>If your entire activity's user interface is non-functional without network access, then use
+  <a href="{@docRoot}training/monitoring-device-state/manifest-receivers.html">Manipulate Broadcast
+  Receivers on Demand</a>. This technique listens for connectivity changes when your activity is in
+  the foreground, and prevents network requests from proceeding when no connectivity exists. That
+  is, if your app detects that connectivity has been lost, it disables all of its receivers, except
+  for the connectivity-change receiver. An example would be a news app that presents an activity
+  with a full-screen view of news snippets and does no pre-fetching. Any snippet a user taps would
+  require a network connection.
+  </li>
+</ul>
+
+
+<p>
+  A best practice for user-initiated traffic is to first check for a connection using <a href=
+  "{@docRoot}reference/android/net/ConnectivityManager.html">Connectivity Manager</a>, and if there
+  is no connection, <a href="#heading=h.a114i7ic2bxc">schedule</a> the network request for when the
+  connection is made. Schedulers will use techniques such as exponential backoff to save battery,
+  where each time the attempt to connect fails, the scheduler doubles the delay before the next
+  retry.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> To check for connectivity for app-initiated traffic, see <a href=
+  "action-app-traffic.html#check-connect">Optimizing App-Initiated Network Use</a>.
+</p>
+
+
+<h2 id="reduce-connections">Reduce the Number of Connections</h2>
+
+<p>
+  In general, it's more efficient to reuse existing network connections than to initiate new ones.
+  Reusing connections also allows the network to more intelligently react to congestion and related
+  network data issues. For more information on reducing the number of connections used by your app,
+  see <a href="{@docRoot}training/efficient-downloads/efficient-network-access.html#ReduceConnections">
+  Optimizing Downloads for Efficient Network Access</a>.
+</p>
diff --git a/docs/html/training/performance/battery/network/analyze-data.jd b/docs/html/training/performance/battery/network/analyze-data.jd
new file mode 100644
index 0000000..593201a
--- /dev/null
+++ b/docs/html/training/performance/battery/network/analyze-data.jd
@@ -0,0 +1,215 @@
+page.title=Analyzing Network Traffic Data
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>This lesson teaches you to</h2>
+<ol>
+  <li><a href="#general-traffic">Analyze App Network Traffic</a></li>
+  <li><a href="#traffic-types">Analyze Network Traffic Types</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>
+  In the previous section, you tagged your app code with traffic identifiers, ran tests, and
+  collected data. This lesson teaches you how to look at the network traffic data you have
+  collected and directs you to actions for improving your app's networking performance and
+  reducing power consumption.
+</p>
+
+
+<h2 id="general-traffic">Analyze App Network Traffic</h2>
+
+<p>
+  Efficient use of network resources by an app is characterized by significant periods where
+  the network hardware is not in use.
+
+  On mobile devices, there is a significant cost associated with starting up the radio
+  to send or receive data, and with keeping the mobile radio active for long periods. If your app
+  is accessing the network efficiently, you should see that its communications over the network are
+  tightly grouped together, well spaced with periods where the app is making no connection requests.
+</p>
+
+<p>
+  Figure 1 shows suboptimal network traffic from app, as measured by the Network Traffic tool. The
+  app is making frequent network requests. This traffic has few periods of
+  rest where the radio could switch to a standby, low-power mode. The network access behavior of
+  this app is likely to keep the radio on for extended periods of time, which is
+  battery-inefficient.
+</p>
+
+<img src="{@docRoot}images/training/performance/suboptimal_network_traffic_pattern.png"
+  alt="" id="figure1" />
+<p class="img-caption">
+  <strong>Figure 1.</strong> Battery-inefficient network activity measured from an app.
+</p>
+
+<p>
+  Figure 2 shows an optimal network traffic pattern. The app sends network requests in bursts,
+  separated by long periods of no traffic where the radio can switch to standby. This chart shows
+  the same amount of work being done as Figure 1, but the requests have been shifted and grouped to
+  allow the radio to be in standby most of the time.
+</p>
+
+<img src="{@docRoot}images/training/performance/optimal_network_traffic_pattern.png"
+  alt="" id="figure2" />
+<p class="img-caption">
+  <strong>Figure 2.</strong> Battery-efficient network activity measured from an app.
+</p>
+
+<p>
+  If the network traffic for your app looks similar to the graph in Figure 2, you are in good
+  shape! Congratulations! You may want to pursue further networking efficiency by checking out the
+  techniques described in <a href=
+  "{@docRoot}training/performance/battery/network/action-any-traffic.html">Optimizing General Network
+  Use</a>
+</p>
+
+<p>
+  If the network traffic for your app looks more like the graph in Figure 1, it's time to take a
+  harder look at how your app accesses the network. You should start by analyzing what types of
+  network traffic your app is generating.
+</p>
+
+
+<h2 id="traffic-types">Analyze Network Traffic Types</h2>
+
+<p>
+  When you look at the network traffic generated by your app, you need to understand the source of
+  the traffic, so you can optimize it appropriately. Frequent network activity generated by your
+  app may be entirely appropriate if it is responding to user actions, but completely inappropriate
+  if you app is not in the foreground or if the device in a pocket or purse. This section discusses
+  how to analyze the types of network traffic being generated by your app and directs you to
+  actions you can take to improve performance.
+</p>
+
+<p>
+  In the previous lesson, you tagged your app code for different traffic types and used the Network
+  Traffic tool to collect data on your app and produce a graph of activity, as shown in Figure 3.
+</p>
+<img src="{@docRoot}images/training/performance/network_traffic_colors.png" />
+<p class="img-caption">
+  <strong>Figure 3.</strong> Network traffic tagged for the three categories: user, app, and
+  server.
+</p>
+
+<p>
+  The Network Traffic tool colors traffic based on the tags you created in the previous lesson. The
+  colors are based on the traffic type <a href=
+  "{@docRoot}training/performance/battery/network/gather-data.html#constants">constants you defined</a> in
+  your app code. Refer back to your app code to confirm which constants represent user, app, or
+  server-initiated traffic.
+</p>
+
+<p>
+  The following sections discuss how to look at network traffic types and provides recommendations
+  on how to optimize traffic.
+</p>
+
+
+<h3 id="user">Analyzing user-initiated network traffic</h3>
+
+<p>
+  Network activity initiated by the user may be efficiently grouped together while a user is
+  performing a specific activity with your app, or spread out unevenly as the user requests additional
+  information your app needs to get. Your goal in analyzing user-initiated network traffic is to
+  look for patterns of frequent network use over time and attempt to create, or increase the size
+  of, periods where the network is not accessed.
+</p>
+
+<p>
+  The unpredictability of user requests makes it challenging to optimize this type of network use
+  in your app. In addition, users expect fast responses when they are actively using an app, so
+  delaying requests for efficiency can lead to poor user experiences. In general, you should
+  prioritize a quick response to the user over efficient use of the network while a user is
+  directly interacting with your app.
+</p>
+
+<p>
+  Here are some approaches for optimizing user-initiated network traffic:
+</p>
+
+<ul>
+  <li>
+    <a href="{@docRoot}training/performance/battery/network/action-user-traffic.html#pre-fetch-data">
+    Pre-fetch Network Data</a> - When the user performs an action in your app, the app
+    anticipates which data may be needed for the next user actions, fetches it in bulk
+    in a single connection, and holds it until the user requests it.
+  </li>
+
+  <li>
+    <a href="{@docRoot}training/performance/battery/network/action-user-traffic.html#check-or-listen">
+    Check for Connectivity or Listen for Changes</a> - Check for network connectivity or listen
+    for connectivity changes before performing an update.
+  </li>
+
+  <li>
+    <a href="{@docRoot}training/performance/battery/network/action-user-traffic.html#reduce-connections">
+    Reduce the Number of Connections</a> - Use server APIs that allow data to be downloaded in sets.
+  </li>
+</ul>
+
+<p class="caution">
+  <strong>Caution:</strong> Beware of network activity grouping bias in your user activity test
+  data! If you ran a set of user scenarios with your network testing plan, the graph of
+  user-initiated network access may be unrealistically grouped together, potentially causing you to
+  optimize for user behavior that does not actually occur. Make sure your user network test
+  scenarios reflect realistic use of your app.
+</p>
+
+
+<h3 id="app">Analyzing app-initiated network traffic</h3>
+
+<p>
+  Network activity initiated by your app code is typically an area where you can have a significant
+  impact on the efficient use of network bandwidth. In analyzing the network activity of your app,
+  look for periods of inactivity and determine if they can be increased. If you see patterns of
+  consistent network access from your app, look for ways to space out these accesses to allow the
+  device radio to switch into low power mode.
+</p>
+
+<p>
+  Here are some approaches for optimizing app-initiated network traffic:
+</p>
+
+<ul>
+  <li>
+    <a href="{@docRoot}training/performance/battery/network/action-app-traffic.html#batch-schedule">
+    Batch and Schedule Network Requests</a> - Defer your app's network requests so they can be
+    processed together and at a time which is advantageous for battery life.
+  </li>
+
+  <li>
+    <a href="{@docRoot}training/performance/battery/network/action-app-traffic.html#check-connect">
+    Allow System to Check for Connectivity</a> - Avoid the battery cost of running your app just
+    to check for a network connection when you can let the system run the check while your app
+    sleeps.
+  </li>
+</ul>
+
+
+<h3 id="server">Analyzing server-initiated network traffic</h3>
+
+<p>
+  Network activity initiated by servers communicating with your app is also typically an area where
+  you can have a significant impact on the efficient use of network bandwidth. In analyzing the
+  network activity from server connections, look for periods of inactivity and determine if they
+  can be increased. If you see patterns of consistent network activity from servers, look for ways
+  to space out this activity to allow the device radio to switch into low power mode.
+</p>
+
+<p>
+  Here is an approach for optimizing app-initiated network traffic:
+</p>
+
+<ul>
+  <li>
+    <a href="action-server-traffic.html#gcm">Use GCM for Server Updates</a> - Consider using
+    the Google Cloud Messaging service for server side updates instead of polling.
+  </li>
+</ul>
diff --git a/docs/html/training/performance/battery/network/gather-data.jd b/docs/html/training/performance/battery/network/gather-data.jd
new file mode 100644
index 0000000..32edcd5
--- /dev/null
+++ b/docs/html/training/performance/battery/network/gather-data.jd
@@ -0,0 +1,267 @@
+page.title=Collecting Network Traffic Data
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>This lesson teaches you to </h2>
+<ol>
+  <li><a href="#tag-requests">Tag Network Requests</a></li>
+  <li><a href="#build-type">Configure a Network Test Build Type</a></li>
+  <li><a href="#deploy-apk">Deploy the Network Test APK</a></li>
+  <li><a href="#network-tool">Run Network Traffic Tool</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>
+  The network traffic generated by an app can have a significant impact on the battery life of the
+  device where it is running. In order to optimize that traffic, you need to both measure it and
+  identify its source. Network requests can come directly from a user action, requests from your own
+  app code, or from a server communicating with your app.
+</p>
+
+<p>
+  The <a href="{@docRoot}tools/debugging/ddms.html#network">Network Traffic tool</a> (part of the
+  DDMS tools) enables you to view how and when your app transfers data over a network.
+</p>
+
+<p>
+  This lesson shows you how to measure and categorize network requests by tagging your source code,
+  then shows you how to deploy, test and visualize your apps's network traffic.
+</p>
+
+
+<h2 id="tag-requests">Tag Network Requests</h2>
+
+<p>
+  Apps use the networking hardware on a device for various reasons. In order to properly optimize
+  your app's use of networking resources, you must understand how frequently your app is using the
+  network and for what reasons. For performance analysis purposes, you should break down use of
+  network hardware into these categories:
+</p>
+
+<ul>
+  <li>
+    <strong>User-initiated network requests</strong> - Requests initiated by the user, such as a
+    user request for an updated articles list in a news app.
+  </li>
+
+  <li>
+    <strong>App-initiated network requests</strong> - Requests initiated within Android app code
+    that are not used to immediately satisfy a user action, such as an app request to cache the
+    text of unread articles in a news app.
+  </li>
+
+  <li>
+    <strong>Server-initiated network requests</strong> - Requests initiated by a server to your app
+    that are not used to immediately satisfy a user action, such as notification of a newly
+    available article in a news app.
+  </li>
+</ul>
+
+<p>
+  This procedure shows you how to tag your app's source code with constants to categorize traffic
+  as one of these three request types. The Network Traffic tool represents each type of traffic
+  with a different color, so you can visualize and optimize each traffic stream separately.
+  The technique described here reports network traffic based on the execution of threads in your
+  app which you identify as a user, app or server source.
+</p>
+
+<ol>
+  <li>In your app's development project, define three constants to represent the different types
+    of network use:
+
+<pre id="constants">
+public static final int USER_INITIATED = 0x1000;
+public static final int APP_INITIATED = 0x2000;
+public static final int SERVER_INITIATED =0x3000;
+</pre>
+  </li>
+
+  <li>Find networking code in your app by searching for the most common classes used for
+    this purpose:
+    <ol type="a">
+      <li>In Android Studio, choose <strong>Edit &gt; Find &gt; Find in Path</strong>.</li>
+      <li>Paste the following string into the <strong>Text to find</strong> field:<br>
+        <code>extends GcmTaskService|extends JobService|extends
+        AbstractThreadedSyncAdapter|HttpUrlConnection|Volley|Glide|HttpClient</code>
+      </li>
+      <li>Check <strong>Regular expression</strong>.</li>
+      <li>Check <strong>File mask(s)</strong> and type <code>*.java</code>.</li>
+      <li>Click the <strong>Find</strong> button.</li>
+    </ol>
+  </li>
+
+<li>
+  Based on your findings in the previous step, tag your app's use of network traffic by adding the
+  {@link android.net.TrafficStats#setThreadStatsTag} method to each execution thread in your app
+  that uses network resources, as shown in the following code example.
+
+<pre>
+if (BuildConfig.NETWORK-TEST && Build.VERSION.SDK_INT &gt;= 14) {
+    try {
+        TrafficStats.setThreadStatsTag(USER_INITIATED);
+        // make network request using HttpClient.execute()
+    } finally {
+        TrafficStats.clearThreadStatsTag();
+    }
+}
+</pre>
+
+    <p class="note">
+      <strong>Note:</strong> Ensure the tagging does not get into your production code by making
+      inclusion of this code conditional, based on the build type used to generate the APK.
+      In the example above, the <code>BuildConfig.NETWORK-TEST</code> field identifies this
+      APK as a test version.
+    </p>
+
+  </li>
+</ol>
+
+<p class="note">
+  <strong>Note:</strong> This technique for tagging network traffic from your app depends on
+  how the APIs that you are using access and manage network sockets. Some networking libraries
+  may not allow the {@link android.net.TrafficStats} utilities to tag traffic from your app.
+</p>
+
+<p>
+  For more information about tagging and tracking network traffic with the Network Traffic tool,
+  see <a href="http://tools.android.com/recent/detailednetworkusageinddms">Detailed Network Usage
+  in DDMS</a>.
+</p>
+
+
+<h2 id="build-type">Configure a Network Test Build Type</h2>
+
+<p>
+  When you run performance tests, your APK should be as close as possible to the production
+  build. In order to achieve this for your network testing, create a <code>network-test</code>
+  build type, rather than using <code>debug</code> build type.
+</p>
+
+<ol>
+  <li>Open your app in Android Studio.</li>
+  <li>Create a debuggable build type for your network test by modifying your project's
+    <code>build.gradle</code> file as shown in the following code example:
+
+<pre>
+android {
+    ...
+    buildTypes {
+        debug {
+            // debuggable true is default for the debug buildType
+        }
+        <strong>network-test {
+            debuggable true
+        }</strong>
+    }
+    ...
+}
+</pre>
+  </li>
+</ol>
+
+
+<h2 id="deploy-apk">Deploy the Network Test APK</h2>
+
+<p>
+  To deploy the APK generated by the {@code network-test} build type configured in the previous
+  proceedure:
+</p>
+
+<ol>
+  <li>Check that <strong>Developer Options</strong> are enabled on your test device. For
+  information about how to check and enable this option, see <a href=
+  "{@docRoot}tools/device.html#developer-device-options">Using Hardware Devices</a>.
+  </li>
+
+  <li>Using a USB cable, connect your test device to your development computer.
+  </li>
+
+  <li>In Android Studio, select <strong>Build Variants</strong> on the left edge of the window.
+  </li>
+
+  <li>Click the <strong>Sync Project with Gradle Files</strong> button to populate the
+  Build Variants list with <code>network-test</code> for the app module.
+  </li>
+
+  <li>Choose <code>network-test</code> from the list.
+  </li>
+
+  <li>Deploy the debuggable version of your app to your device by choosing
+  <strong>Run</strong> &gt; <strong>Debug</strong>.
+  </li>
+</ol>
+
+
+<h2 id="network-tool">Run Network Traffic Tool</h2>
+
+<p>
+  The Network Traffic tool in Android Studio helps you see how your app uses network resources
+  in real time, while it is running.
+</p>
+
+<p>
+  To improve the repeatability of your testing, you should start with a known initial state for
+  your app by clearing app data. The following procedure includes a step that shows you how to
+  clear <em>all</em> app data including previously cached data and networking data. This step
+  puts your app back to a state where it must re-cache all previously cached data. Do not skip
+  this step.
+</p>
+
+<p>
+  To start the Network Traffic tool and visualize the network requests:
+</p>
+
+<ol>
+  <li>Start the Network Traffic tool by launching Android Studio and choosing <strong>Tools &gt;
+  Android &gt; Android Device Monitor</strong>. When asked, allow incoming network connections.
+  </li>
+
+  <li>In the Android Device Monitor window, click the <strong>DDMS</strong> button along the top
+  and choose the <strong>Network Statistics</strong> tab. If you don't see this tab, widen the
+  window and then try <strong>Window &gt; Reset Perspective</strong>.
+  </li>
+
+  <li>Select your app to debug from the list of debuggable apps on your device in the
+    <strong>Devices</strong> tab, then click the <strong>Start</strong> button in the
+    <strong>Network Statistics</strong> tab.
+
+    <p class="note">
+      <strong>Note:</strong> You may be prompted to <strong>Allow USB Debugging</strong> on your
+      device. Select <strong>OK</strong> to allow debugging to proceed.
+    </p>
+  </li>
+
+  <li>Clear your app data using the following adb command:
+<pre class="no-pretty-print">
+adb shell pm clear <em>package.name.of.app</em>
+</pre>
+  </li>
+
+  <li>Start your app and run a testing plan that exercises your app's primary use cases. Your plan
+    should also allow for app idle time, where the user is not interacting with the app, to allow
+    app-initiated and server-initiated network access to occur.
+  </li>
+
+  <li>Repeat the test by clearing the app data and running your test plan again. You should repeat
+    the test a few times to verify the repeatability of your performance data.
+  </li>
+</ul>
+</ol>
+
+<p>
+  Use of tagging for network traffic helps you visually distinguish each request category by
+  producing a different color for each network traffic in the Network Traffic tool, as shown in
+  Figure 1.
+</p>
+
+<img src="{@docRoot}images/training/performance/network_traffic_colors.png" />
+<p class="img-caption">
+  <strong>Figure 1.</strong> Network traffic tagged for the three categories.
+</p>
+
diff --git a/docs/html/training/performance/battery/network/index.jd b/docs/html/training/performance/battery/network/index.jd
new file mode 100644
index 0000000..1da30cf
--- /dev/null
+++ b/docs/html/training/performance/battery/network/index.jd
@@ -0,0 +1,86 @@
+page.title=Reducing Network Battery Drain
+page.article=true
+
+page.tags=battery
+page.metaDescription=Learn how to optimize your app to reduce battery drain and use network resources efficiently.
+
+@jd:body
+
+
+<iframe width="448" height="252"
+    src="//www.youtube.com/embed/fEEulSk1kNY?autohide=1&amp;showinfo=0"
+    frameborder="0" allowfullscreen=""
+    style="float: right; margin: 0 0 20px 20px;"></iframe>
+
+<p>
+  Requests that your app makes to the network are a major cause of battery drain because they turn
+  on the power-hungry mobile or Wi-Fi radios. Beyond the power needed to send and receive packets,
+  these radios expend extra power just turning on and keeping awake. Something as simple as a
+  network request every 15 seconds can keep the mobile radio on continuously and quickly use up
+  battery power.
+</p>
+
+<p>
+  This lesson shows you how to tag your app's source code to categorize, visualize and color
+  your network requests according to how they are initiated. From there, each category
+  identifies areas of your app that you can make more battery-efficient.
+</p>
+
+
+<h2>Performance Actions</h2>
+
+<dl>
+  <dt>
+    <strong><a href="gather-data.html">
+        Collecting Network Traffic Data</a></strong>
+  </dt>
+  <dd>
+    Learn how to instrument your app's code and gather data on its use of network resources.
+  </dd>
+
+  <dt>
+    <strong><a href="analyze-data.html">
+        Analyzing Network Traffic Data</a></strong>
+  </dt>
+  <dd>
+    Learn how to analyze your app's use of network resources in response to user actions
+    and optimize it to reduce power consumption.
+  </dd>
+
+  <dt>
+    <strong><a href="action-user-traffic.html">
+        Optimizing User-Initiated Network Use</a></strong>
+  </dt>
+  <dd>
+    Learn how to optimize your app's use of network resources in response to user actions
+    to reduce power consumption.
+  </dd>
+
+  <dt>
+    <strong><a href="action-app-traffic.html">
+        Optimizing App-Initiated Network Use</a></strong>
+  </dt>
+  <dd>
+    Learn how to optimize your app's requests for network resources to reduce
+    power consumption.
+  </dd>
+
+  <dt>
+    <strong><a href="action-server-traffic.html">
+        Optimizing Server-Initiated Network Use</a></strong>
+  </dt>
+  <dd>
+    Learn how to optimize your app's requests for network resources and to reduce
+    power consumption.
+  </dd>
+
+  <dt>
+    <strong><a href="action-any-traffic.html">
+        Optimizing General Network Use</a></strong>
+  </dt>
+  <dd>
+    Learn how to optimize your app's requests for network resources and to reduce
+    power consumption.
+  </dd>
+
+</dl>
diff --git a/docs/html/training/permissions/best-practices.jd b/docs/html/training/permissions/best-practices.jd
new file mode 100644
index 0000000..dcdaf94
--- /dev/null
+++ b/docs/html/training/permissions/best-practices.jd
@@ -0,0 +1,247 @@
+page.title=Permissions Best Practices
+page.tags=permissions
+helpoutsWidget=true
+
+@jd:body
+
+<div id="tb-wrapper">
+  <div id="tb">
+
+<h2>In this document</h2>
+<ul>
+  <li><a href="#perms-vs-intents">Consider Using an Intent</a></li>
+
+  <li><a href="#dont-overwhelm">Don't Overwhelm the User</a></li>
+
+  <li><a href="#explain">Explain Why You Need Permissions</a></li>
+
+  <li><a href="#testing">Test for Both Permissions Models</a></li>
+
+</ul>
+
+<h2>You should also read</h2>
+  <ul>
+    <li><a href="{@docRoot}training/basics/intents/index.html">Interacting
+      with Other Apps</a></li>
+  </ul>
+
+</div>
+</div>
+
+
+<p>
+It's easy for an app to overwhelm a user with permission requests. If a user
+finds the app frustrating to use, or the user is worried about what the app
+might be doing with the user's information, they may avoid using the app or
+uninstall it entirely. The following best practices can help you avoid such
+bad user experiences.
+</p>
+
+<h2 id="perms-vs-intents">Consider Using an Intent</h2>
+
+<p>
+  In many cases, you can choose between two ways for your app to perform a
+  task. You can have your app ask for permission to perform the operation
+  itself. Alternatively, you can have the app use an <em>intent</em> to have
+  another app perform the task.
+</p>
+
+<p>
+  For example, suppose your app needs to be able to take pictures with the
+  device camera. Your app can request the {@link
+  android.Manifest.permission#CAMERA CAMERA} permission, which allows your app
+  to access the camera directly. Your app would then use the camera APIs to
+  control the camera and take a picture. This approach gives your app full
+  control over the photography process, and lets you incorporate the camera UI
+  into your app.
+</p>
+
+<p>
+  However, if you don't need such complete control, you can use an {@link
+  android.provider.MediaStore#ACTION_IMAGE_CAPTURE ACTION_IMAGE_CAPTURE} intent
+  to request an image. When you send the intent, the system prompts the user to
+  choose a camera app (if there isn't already a default camera app).
+  The user takes a picture with the selected camera app, and that app returns
+  the picture to your app's {@link
+  android.app.Activity#onActivityResult onActivityResult()} method.
+</p>
+
+<p>
+  Similarly, if you need to make a phone call, access the user's contacts, and
+  so on, you can do that by creating an appropriate intent, or you can request
+  the permission and access the appropriate objects directly. There are
+  advantages and disadvantages to each approach.
+</p>
+
+<p>
+  If you use permissions:
+</p>
+
+<ul>
+  <li>Your app has full control over the user experience when you perform the
+  operation. However, such broad control adds to the complexity of your task,
+  since you need to design an appropriate UI.
+  </li>
+
+  <li>The user is prompted to give permission once, either at run time or at
+  install time (depending on the user's Android version). After that, your app
+  can perform the operation without requiring additional interaction from the
+  user. However, if the user doesn't grant the permission (or revokes it later
+  on), your app becomes unable to perform the operation at all.
+  </li>
+</ul>
+
+<p>
+  If you use an intent:
+</p>
+
+<ul>
+  <li>You do not have to design the UI for the operation. The app that handles
+  the intent provides the UI. However, this means you have
+  no control over the user experience. The user could be interacting with an
+  app you've never seen.
+  </li>
+
+  <li>If the user does not have a default app for the operation, the system
+  prompts the user to choose an app. If the user does not designate a default
+  handler, they may have to go
+  through an extra dialog every time they perform the operation.
+  </li>
+</ul>
+
+<h2 id="ask-neccessary">Only Ask for Permissions You Need</h2>
+
+<p>
+  Every time you ask for a permission, you force the user to make a decision.
+  You should minimize the number of times you make these requests. If the user
+  is running Android 6.0 (API level 23) or later, every time the user tries
+  some new app feature that requires a permission, the app has to interrupt the
+  user's work with a permission request. If the user is running an earlier
+  version of Android, the user has to grant every one of the app's permissions
+  when installing the app; if the list is too long or seems inappropriate, the
+  user may decide not to install your app at all. For these reasons, you should
+  minimize the number of permissions your app needs.
+</p>
+
+<p>
+  Quite often your app can avoid requesting a permission by using an
+  <em>intent</em> instead. If a feature is not a core part of your app's
+  functionality, you should consider handing the work over to another app, as
+  described in <a href="#perms-vs-intents">Consider Using An Intent</a>.
+</p>
+
+<h2 id="dont-overwhelm">Don't Overwhelm the User</h2>
+
+<p>
+  If the user is running Android 6.0 (API level 23) or later, the user has to
+  grant your app its permissions while they are running the app. If you
+  confront the user with a lot of requests for permissions at once, you may
+  overwhelm the user and cause them to quit your app. Instead, you should ask
+  for permissions as you need them.
+</p>
+
+<p>
+  In some cases, one or more permissions might be absolutely essential to your
+  app. It might make sense to ask for all of those permissions as soon as the
+  app launches. For example, if you make a photography app, the app would need
+  access to the device camera. When the user launches the app for the first
+  time, they won't be surprised to be asked for permission to use the camera.
+  But if the same app also had a feature to share photos with the user's
+  contacts, you probably should <em>not</em> ask for the {@link
+  android.Manifest.permission#READ_CONTACTS READ_CONTACTS} permission at first
+  launch. Instead, wait until the user tries to use the "sharing" feature and
+  ask for the permission then.
+</p>
+
+<p>
+  If your app provides a tutorial, it may make sense to request the app's
+  essential permissions at the end of the tutorial sequence.
+</p>
+
+<h2 id="explain">Explain Why You Need Permissions</h2>
+
+<p>
+  The permissions dialog shown by the system when you call
+  {@link android.support.v4.app.ActivityCompat#requestPermissions
+  requestPermissions()} says what permission your app wants, but doesn't say
+  why. In some cases, the user may find that puzzling. It's a good idea to
+  explain to the user why your app wants the permissions before calling
+  {@link android.support.v4.app.ActivityCompat#requestPermissions
+  requestPermissions()}.
+</p>
+
+<p>
+  For example, a photography app might want to use location services so it can
+  geotag the photos. A typical user might not understand that a photo can
+  contain location information, and would be puzzled why their photography app
+  wants to know the location. So in this case, it's a good idea for the app to
+  tell the user about this feature <em>before</em> calling
+  {@link android.support.v4.app.ActivityCompat#requestPermissions
+  requestPermissions()}.
+</p>
+
+<p>
+  One way to inform the user is to incorporate these requests into an app
+  tutorial. The tutorial can show each of the app's features in turn, and as it
+  does this, it can explain what permissions are needed. For example, the
+  photography app's tutorial could demonstrate its "share photos with your
+  contacts" feature, then tell the user that they need to give permission for
+  the app to see the user's contacts. The app could then call {@link
+  android.support.v4.app.ActivityCompat#requestPermissions
+  requestPermissions()} to ask the user for that access. Of course, not every
+  user is going to follow the tutorial, so you still need to check for and
+  request permissions during the app's normal operation.
+</p>
+
+<h2 id="testing">Test for Both Permissions Models</h2>
+
+<p>
+  Beginning with Android 6.0 (API level 23), users grant and revoke app
+  permissions at run time, instead of doing so when they install the app. As a
+  result, you'll have to test your app under a wider range of conditions. Prior
+  to Android 6.0, you could reasonably assume that if your app is running at
+  all, it has all the permissions it declares in the app manifest. Under the
+  new permissions model, you can no longer make that assumption.
+</p>
+
+<p>
+  The following tips will help you identify permissions-related code problems
+  on devices running API level 23 or higher:
+</p>
+
+<ul>
+  <li>Identify your app’s current permissions and the related code paths.
+  </li>
+
+  <li>Test user flows across permission-protected services and data.
+  </li>
+
+  <li>Test with various combinations of granted or revoked permissions. For
+  example, a camera app might list {@link android.Manifest.permission#CAMERA
+  CAMERA}, {@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS}, and
+  {@link android.Manifest.permission#ACCESS_FINE_LOCATION ACCESS_FINE_LOCATION}
+  in its manifest. You should test the app with each of these permissions
+  turned on and off, to make sure the app can handle all permission
+  configurations gracefully. Remember, beginning with Android 6.0 the user can
+  turn permissions on or off for <em>any</em> app, even an app that targets API
+  level 22 or lower.
+  </li>
+
+  <li>Use the <a href="{@docRoot}tools/help/adb.html">adb</a> tool to manage
+  permissions from the command line:
+    <ul>
+      <li>List permissions and status by group:
+
+        <pre class="no-pretty-print">$ adb shell pm list permissions -d -g</pre>
+      </li>
+
+      <li>Grant or revoke one or more permissions:
+
+        <pre class="no-pretty-print">$ adb shell pm [grant|revoke] &lt;permission-name&gt; ...</pre>
+      </li>
+    </ul>
+  </li>
+
+  <li>Analyze your app for services that use permissions.
+  </li>
+</ul>
diff --git a/docs/html/training/permissions/declaring.jd b/docs/html/training/permissions/declaring.jd
new file mode 100644
index 0000000..ae96f81
--- /dev/null
+++ b/docs/html/training/permissions/declaring.jd
@@ -0,0 +1,115 @@
+page.title=Declaring Permissions
+helpoutsWidget=true
+
+@jd:body
+
+<div id="tb-wrapper">
+  <div id="tb">
+  <h2>This lesson teaches you to</h2>
+  <ul>
+    <li>
+      <a href="#perm-needed">Determine What Permissions Your App Needs</a>
+    </li>
+    <li>
+      <a href="#perm-add">Add Permissions to the Manifest</a>
+    </li>
+  </ul>
+
+<!--
+    <h2>Dependencies and Prerequisites</h2>
+    <ul>
+      <li></li>
+    </ul>
+-->
+
+<h2>You should also read</h2>
+  <ul>
+    <li><a href="{@docRoot}guide/topics/security/permissions.html#permissions">
+      Using Permissions</a></li>  <ul>
+    <li><a href="{@docRoot}guide/topics/security/permissions.html#normal-dangerous">
+      Normal and Dangerous Permissions</a></li>
+  </ul>
+</div>
+</div>
+
+<p>
+  Every Android app runs in a limited-access sandbox. If an app needs to use
+  resources or information outside of its own sandbox, the app has to request
+  the appropriate <i>permission.</i> You declare that your app needs a
+  permission by listing the permission in the <a href=
+  "{@docRoot}guide/topics/manifest/manifest-intro.html">App Manifest</a>.
+</p>
+
+<p>
+  Depending on how sensitive the permission is, the system might grant the
+  permission automatically, or the device user might have to grant
+  the request. For example, if your app requests permission to turn on the
+  device's flashlight, the system grants that permission automatically. But
+  if your app needs to read the user's contacts, the system asks the user
+  to approve that permission. Depending on the platform version, the user
+  grants the permission either when they install the app (on Android 5.1 and
+  lower) or while running the app (on Android 6.0 and higher).
+</p>
+
+<h2 id="perm-needed">Determine What Permissions Your App Needs</h2>
+
+<p>
+  As you develop your app, you should note when your app is using capabilities
+  that require a permission. Typically, an app is going to need permissions
+  whenever it uses information or resources that the app doesn't create, or
+  performs actions that affect the behavior of the device or other apps. For
+  example, if an app needs to access the internet, use the device camera, or
+  turn Wi-Fi on or off, the app needs the appropriate permission. For a list of
+  system permissions, see <a href=
+  "{@docRoot}guide/topics/security/permissions.html#normal-dangerous">Normal
+  and Dangerous Permissions</a>.
+</p>
+
+<p>
+  Your app only needs permissions for actions that it performs directly. Your
+  app does not need permission if it is requesting that another app perform the
+  task or provide the information. For example, if your app needs to read the
+  user's address book, the app needs the {@link
+  android.Manifest.permission#READ_CONTACTS READ_CONTACTS} permission. But if
+  your app uses an <em>intent</em> to request information from the user's
+  Contacts app, your app does not need any permissions, but the
+  Contacts app <em>does</em> need to have that permission. For more
+  information, see <a href="best-practices.html#perms-vs-intents">Consider
+  Using an Intent</a>.
+</p>
+
+<h2 id="perm-add">Add Permissions to the Manifest</h2>
+
+<p>
+  To declare that your app needs a permission, put a <a href=
+  "{@docRoot}guide/topics/manifest/uses-permission-element.html"
+  ><code>&lt;uses-permission&gt;</code></a>
+  element in your <a href=
+  "{@docRoot}guide/topics/manifest/manifest-intro.html">app manifest</a>, as a
+  child of the top-level <a href=
+  "{@docRoot}guide/topics/manifest/manifest-element.html"><code>&lt;manifest&gt;</code></a>
+  element. For example, an app that needs to send SMS messages would have this
+  line in the manifest:
+</p>
+
+<pre>&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.example.snazzyapp"&gt;
+
+    <strong>&lt;uses-permission android:name="android.permission.SEND_SMS"/&gt;</strong>
+    <!-- other permissions go here -->
+
+    &lt;application ...&gt;
+        ...
+    &lt;/application&gt;
+
+&lt;/manifest&gt;</pre>
+
+<p>
+  The system's behavior after you declare a permission depends on how sensitive
+  the permission is. If the permission does not affect user privacy, the system
+  grants the permission automatically. If the permission might grant access to
+  sensitive user information, the system asks the user to approve the request.
+  For more information about the different kinds of permissions, see
+  <a href="{@docRoot}guide/topics/security/permissions.html#normal-dangerous">Normal
+  and Dangerous Permissions</a>.
+</p>
diff --git a/docs/html/training/permissions/index.jd b/docs/html/training/permissions/index.jd
new file mode 100644
index 0000000..d1e7f21
--- /dev/null
+++ b/docs/html/training/permissions/index.jd
@@ -0,0 +1,76 @@
+page.title=Working with System Permissions
+page.tags=permissions
+helpoutsWidget=true
+
+@jd:body
+
+<div id="tb-wrapper">
+
+  <div id="tb">
+<!--
+    <h2>Dependencies and Prerequisites</h2>
+    <ul>
+      <li></li>
+    </ul>
+-->
+<h2>You should also read</h2>
+  <ul>
+    <li><a href="{@docRoot}guide/topics/security/permissions.html">
+      System Permissions</a></li>
+    <li><a href="{@docRoot}training/basics/intents/index.html">
+      Interacting with other apps</a></li>
+  </ul>
+  </div>
+</div>
+
+<a class="notice-designers wide"
+  href="https://www.google.com/design/spec/patterns/permissions.html">
+  <div>
+    <h3>Design Patterns</h3>
+    <p>Permissions</p>
+  </div>
+</a>
+
+<p>
+  To protect the system's integrity and the user's privacy, Android runs each
+  app in a limited access sandbox. If the app wants to use resources or
+  information outside of its sandbox, the app has to explicitly request
+  permission. Depending on the type of permission the app requests, the system
+  may grant the permission automatically, or the system may ask the user to
+  grant the permission.
+</p>
+
+<p>
+  This class shows you how to declare and request permissions for your app.
+</p>
+
+<h2>Lessons</h2>
+
+<dl>
+  <dt>
+    <a href="declaring.html">Declaring Permissions</a>
+  </dt>
+
+  <dd>
+    Learn how to declare the permissions you need in your app manifest.
+  </dd>
+
+  <dt>
+    <a href="requesting.html">Requesting Permissions at Run Time</a>
+  </dt>
+
+  <dd>
+    Learn how to request permissions from the user while the app is running.
+    This lesson only applies to apps on devices running Android 6.0 (API level
+    23) and higher.
+  </dd>
+
+  <dt>
+    <a href="best-practices.html">Permissions Best Practices</a>
+  </dt>
+
+  <dd>
+    Guidelines for creating the best user experience in requesting and using
+    permissions.
+  </dd>
+</dl>
diff --git a/docs/html/training/permissions/requesting.jd b/docs/html/training/permissions/requesting.jd
new file mode 100644
index 0000000..e173daf
--- /dev/null
+++ b/docs/html/training/permissions/requesting.jd
@@ -0,0 +1,361 @@
+page.title=Requesting Permissions at Run Time
+page.tags="runtime permissions",androidm,marshmallow
+page.image=images/permissions_check.png
+page.metaDescription=Learn about runtime permissions and how they make it easier for users to install and upgrade your apps.
+@jd:body
+
+<div id="tb-wrapper">
+  <div id="tb">
+  <h2>This lesson teaches you to</h2>
+
+  <ul>
+    <li>
+      <a href="#perm-check">Check For Permissions</a>
+    </li>
+    <li>
+      <a href="#perm-request">Request Permissions</a>
+    </li>
+  </ul>
+
+  <h2>Dependencies and Prerequisites</h2>
+
+  <ul>
+    <li>Android 6.0 (API level 23)
+    </li>
+  </ul>
+
+  <h2>You should also read</h2>
+
+  <ul>
+    <li>
+      <a href=
+      "{@docRoot}guide/topics/security/permissions.html#normal-dangerous">Normal
+      and Dangerous Permissions</a>
+    </li>
+  </ul>
+</div>
+</div>
+
+<p>
+  Beginning in Android 6.0 (API level 23), users grant
+  permissions to apps while the app is running, not when they install the app.
+  This approach streamlines the app
+  install process, since the user does not need to grant permissions when they
+  install or update the app. It also gives the user more control over the app's
+  functionality; for example, a user could choose to give a camera app access
+  to the camera but not to the device location. The user can revoke the
+  permissions at any time, by going to the app's Settings screen.
+</p>
+
+<p>
+  System permissions are divided into two categories, <em>normal</em> and
+  <em>dangerous:</em>
+</p>
+
+<ul>
+  <li>Normal permissions do not directly risk the user's privacy. If your app
+  lists a normal permission in its manifest, the system grants the permission
+  automatically.
+  </li>
+
+  <li>Dangerous permissions can give the app access to the user's confidential
+  data. If your app lists a normal permission in its manifest, the system
+  grants the permission automatically. If you list a dangerous permission, the
+  user has to explicitly give approval to your app.
+  </li>
+</ul>
+
+<p>
+  For more information, see <a href=
+  "{@docRoot}guide/topics/security/permissions.html#normal-dangerous">Normal
+  and Dangerous Permissions</a>.
+</p>
+
+<p>
+  On all versions of Android, your app needs to declare both the normal and the
+  dangerous permissions it needs in its app manifest, as described in <a href=
+  "declaring.html">Declaring Permissions</a>. However, the <em>effect</em> of
+  that declaration is different depending on the system version and your
+  app's target SDK level:
+</p>
+
+<ul>
+  <li>If the device is running Android 5.1 or lower, <strong>or</strong> your app's target SDK
+  is 22 or lower: If you list a dangerous permission in your manifest, the user
+  has to grant the permission when they install the app; if they do not grant
+  the permission, the system does not install the app at all.
+  </li>
+
+  <li>If the device is running Android 6.0 or higher, <strong>and</strong> your app's target SDK
+  is 23 or higher: The app has to list the permissions in the manifest,
+  <em>and</em> it must request each dangerous permission it needs while the app
+  is running. The user can grant or deny each permission, and the app can
+  continue to run with limited capabilities even if the user denies a
+  permission request.
+  </li>
+</ul>
+
+<p class="note">
+  <strong>Note:</strong> Beginning with Android 6.0 (API level 23), users can
+  revoke permissions from any app at any time, even if the app targets a lower
+  API level. You should test your app to verify that it behaves properly when
+  it's missing a needed permission, regardless of what API level your app
+  targets.
+</p>
+
+<p>
+  This lesson describes how to use the Android <a href=
+  "{@docRoot}tools/support-library/index.html">Support Library</a> to check
+  for, and request, permissions. The Android framework provides similar methods
+  as of Android 6.0 (API level 23). However, using the support library is
+  simpler, since your app doesn't need to check which version of Android it's
+  running on before calling the methods.
+</p>
+
+<h2 id="perm-check">Check For Permissions</h2>
+
+<p>
+  If your app needs a dangerous permission, you must check whether you have
+  that permission every time you perform an operation that requires that
+  permission. The user is always free to revoke the permission, so even if the
+  app used the camera yesterday, it can't assume it still has that permission
+  today.
+</p>
+
+<p>
+  To check if you have a permission, call the {@link
+  android.support.v4.content.ContextCompat#checkSelfPermission
+  ContextCompat.checkSelfPermission()} method. For example, this snippet shows how to
+  check if the activity has permission to write to the calendar:
+</p>
+
+<pre>// Assume thisActivity is the current activity
+int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,
+        Manifest.permission.WRITE_CALENDAR);</pre>
+
+<p>
+  If the app has the permission, the method returns {@link
+  android.content.pm.PackageManager#PERMISSION_GRANTED
+  PackageManager.PERMISSION_GRANTED}, and the app can proceed with the
+  operation. If the app does not have the permission, the method returns {@link
+  android.content.pm.PackageManager#PERMISSION_DENIED PERMISSION_DENIED}, and
+  the app has to explicitly ask the user for permission.
+</p>
+
+<h2 id="perm-request">Request Permissions</h2>
+
+<p>
+  If your app needs a dangerous permission that was listed in the app manifest,
+  it must ask the user to grant the permission. Android provides several
+  methods you can use to request a permission. Calling these methods brings up a
+  standard Android dialog, which you cannot customize.
+</p>
+<h3 id="explain">Explain why the app needs permissions</h3>
+
+<div class="figure" style="width:220px" id="fig-perms-dialog">
+  <img src="{@docRoot}images/training/permissions/request_permission_dialog.png"
+      srcset="{@docRoot}images/training/permissions/request_permission_dialog.png 1x,
+      {@docRoot}images/training/permissions/request_permission_dialog_2x.png 2x"
+      alt="" width="220" />
+  <p class="img-caption">
+    <strong>Figure 1.</strong> System dialog prompting the user to grant or deny
+    a permission.
+  </p>
+</div>
+
+<p>
+  In some circumstances, you might want to help the user understand why your
+  app needs a permission. For example, if a user launches a photography app,
+  the user probably won't be surprised that the app asks for permission to use
+  the camera, but the user might not understand why the app wants access to the
+  user's location or contacts. Before you request a permission, you should
+  consider providing an explanation to the user. Keep in mind that you don't
+  want to overwhelm the user with explanations; if you provide too many
+  explanations, the user might find the app frustrating and remove it.
+</p>
+
+<p>
+  One approach you might use is to provide an explanation only if the user has
+  already turned down that permission request. If a user keeps trying to use
+  functionality that requires a permission, but keeps turning down the
+  permission request, that probably shows that the user doesn't understand why
+  the app needs the permission to provide that functionality. In a situation
+  like that, it's probably a good idea to show an explanation.
+</p>
+
+<p>
+  To help find situations where the user might need an explanation, Android
+  provides a utiltity method, {@link
+  android.support.v4.app.ActivityCompat#shouldShowRequestPermissionRationale
+  shouldShowRequestPermissionRationale()}. This method returns <code>true</code> if the app
+  has requested this permission previously and the user denied the request.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> If the user turned down the permission request in the
+  past and chose the <strong>Don't ask again</strong> option in the permission
+  request system dialog, this method returns <code>false</code>. The method
+  also returns <code>false</code> if a device policy prohibits the app from
+  having that permission.
+</p>
+
+<h3 id="make-the-request">Request the permissions you need</h3>
+
+<p>
+  If your app doesn't already have the permission it needs, the app must call
+  one of the {@link android.support.v4.app.ActivityCompat#requestPermissions
+  requestPermissions()} methods to request the appropriate
+  permissions. Your app passes the permissions it wants, and also
+  an integer <em>request code</em> that you specify to identify this permission
+  request. This method functions asynchronously: it
+  returns right away, and after the user responds to the dialog box, the system
+  calls the app's callback method with the results, passing the same request
+  code that the app passed to
+  {@link android.support.v4.app.ActivityCompat#requestPermissions
+  requestPermissions()}.
+</p>
+
+<p>
+  The following code checks if the app has permission to read the user's
+  contacts, and requests the permission if necessary:
+</p>
+
+<pre>// Here, thisActivity is the current activity
+if (ContextCompat.checkSelfPermission(thisActivity,
+                Manifest.permission.READ_CONTACTS)
+        != PackageManager.PERMISSION_GRANTED) {
+
+    // Should we show an explanation?
+    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
+            Manifest.permission.READ_CONTACTS)) {
+
+        // Show an expanation to the user *asynchronously* -- don't block
+        // this thread waiting for the user's response! After the user
+        // sees the explanation, try again to request the permission.
+
+    } else {
+
+        // No explanation needed, we can request the permission.
+
+        ActivityCompat.requestPermissions(thisActivity,
+                new String[]{Manifest.permission.READ_CONTACTS},
+                MY_PERMISSIONS_REQUEST_READ_CONTACTS);
+
+        // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
+        // app-defined int constant. The callback method gets the
+        // result of the request.
+    }
+}</pre>
+
+<p class="note">
+  <strong>Note:</strong> When your app calls {@link
+  android.support.v4.app.ActivityCompat#requestPermissions
+  requestPermissions()}, the system shows a standard dialog box to the user.
+  Your app <em>cannot</em> configure or alter that dialog box. If you need to
+  provide any information or explanation to the user, you should do that before
+  you call {@link android.support.v4.app.ActivityCompat#requestPermissions
+  requestPermissions()}, as described in <a href="#explain">Explain why the app
+  needs permissions</a>.
+</p>
+
+<h3 id="handle-response">Handle the permissions request response
+</h3>
+
+<p>
+  When your app requests permissions, the system presents a dialog box to the
+  user. When the user responds, the system invokes your app's {@link
+  android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult
+  onRequestPermissionsResult()} method, passing it the user response. Your app
+  has to override that method to find out whether the permission was granted.
+  The callback is passed the same request code you passed to
+  {@link android.support.v4.app.ActivityCompat#requestPermissions
+  requestPermissions()}. For example, if an app requests {@link
+  android.Manifest.permission#READ_CONTACTS READ_CONTACTS} access it might have
+  the following callback method:
+</p>
+
+<pre>&#64;Override
+public void onRequestPermissionsResult(int requestCode,
+        String permissions[], int[] grantResults) {
+    switch (requestCode) {
+        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
+            // If request is cancelled, the result arrays are empty.
+            if (grantResults.length > 0
+                &amp;&amp; grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+
+                // permission was granted, yay! Do the
+                // contacts-related task you need to do.
+
+            } else {
+
+                // permission denied, boo! Disable the
+                // functionality that depends on this permission.
+            }
+            return;
+        }
+
+        // other 'case' lines to check for other
+        // permissions this app might request
+    }
+}</pre>
+
+<p>
+  The dialog box shown by the system describes the <a href=
+  "{@docRoot}guide/topics/security/permissions.html#perm-groups">permission
+  group</a> your app needs access to; it does not list the specific permission.
+  For example, if you request the {@link
+  android.Manifest.permission#READ_CONTACTS READ_CONTACTS} permission, the
+  system dialog box just says your app needs access to the device's contacts.
+  The user only needs to grant permission once for each permission group. If
+  your app requests any other permissions in that group (that are listed in
+  your app manifest), the system automatically grants them. When you request
+  the permission, the system calls your {@link
+  android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult
+  onRequestPermissionsResult()} callback method and passes {@link
+  android.content.pm.PackageManager#PERMISSION_GRANTED PERMISSION_GRANTED}, the
+  same way it would if the user had explicitly granted your request through the
+  system dialog box.
+</p>
+
+<p class="note">
+  <strong>Note:</strong> Your app still needs to explicitly request every
+  permission it needs, even if the user has already granted another permission
+  in the same group. In addition, the grouping of permissions into groups may
+  change in future Android releases. Your code should not rely
+  on the assumption that particular permissions are or are not in the
+  same group.
+</p>
+
+<p>
+  For example, suppose you list both {@link
+  android.Manifest.permission#READ_CONTACTS READ_CONTACTS} and {@link
+  android.Manifest.permission#WRITE_CONTACTS WRITE_CONTACTS} in your app
+  manifest. If you request
+  {@link android.Manifest.permission#READ_CONTACTS READ_CONTACTS} and the user
+  grants the permission, and you then request {@link
+  android.Manifest.permission#WRITE_CONTACTS WRITE_CONTACTS}, the system
+  immediately grants you that permission without interacting with the user.
+</p>
+
+<p>
+  If the user denies a permission request, your app should take appropriate
+  action. For example, your app might show a dialog explaining why it could not
+  perform the user's requested action that needs that permission.
+</p>
+
+<p>
+  When the system asks the user to grant a permission, the user has the option
+  of telling the system not to ask for that permission again. In that case, any
+  time an app uses {@link
+  android.support.v4.app.ActivityCompat#requestPermissions
+  requestPermissions()} to ask for that permission again, the system
+  immediately denies the request. The system calls your {@link
+  android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult
+  onRequestPermissionsResult()} callback method and passes {@link
+  android.content.pm.PackageManager#PERMISSION_DENIED PERMISSION_DENIED}, the
+  same way it would if the user had explicitly rejected your request again.
+  This means that when you call {@link
+  android.support.v4.app.ActivityCompat#requestPermissions
+  requestPermissions()}, you cannot assume that any direct interaction with the
+  user has taken place.
+</p>
diff --git a/docs/html/training/scheduling/wakelock.jd b/docs/html/training/scheduling/wakelock.jd
index 0fab7be..61c78a1 100644
--- a/docs/html/training/scheduling/wakelock.jd
+++ b/docs/html/training/scheduling/wakelock.jd
@@ -137,7 +137,7 @@
 
 <pre>
 PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
-Wakelock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
+WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
         "MyWakelockTag");
 wakeLock.acquire();</pre>
 
diff --git a/docs/html/training/search/setup.jd b/docs/html/training/search/setup.jd
index 044e422..5769293 100644
--- a/docs/html/training/search/setup.jd
+++ b/docs/html/training/search/setup.jd
@@ -10,7 +10,7 @@
       <h2>This lesson teaches you to</h2>
 
       <ul>
-        <li><a href="{@docRoot}training/search/setup.html#add-sv">Add the Search View to the Action
+        <li><a href="{@docRoot}training/search/setup.html#add-sv">Add the Search View to the App
         Bar</a></li>
 
         <li><a href="{@docRoot}training/search/setup.html#create-sc">Create a Searchable
@@ -23,30 +23,30 @@
       <h2>You should also read:</h2>
 
       <ul>
-        <li><a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a></li>
+        <li><a href="{@docRoot}training/appbar/index.html">Adding the App Bar</a></li>
       </ul>
     </div>
   </div>
 
   <p>Beginning in Android 3.0, using the {@link android.widget.SearchView} widget as an item in
-  the action bar is the preferred way to provide search in your app. Like with all items in
-  the action bar, you can define the {@link android.widget.SearchView} to show at all times, only
+  the app bar is the preferred way to provide search in your app. Like with all items in
+  the app bar, you can define the {@link android.widget.SearchView} to show at all times, only
   when there is room, or as a collapsible action, which displays the {@link
-  android.widget.SearchView} as an icon initially, then takes up the entire action bar as a search
+  android.widget.SearchView} as an icon initially, then takes up the entire app bar as a search
   field when the user clicks the icon.</p>
 
   <p class="note"><strong>Note:</strong> Later in this class, you will learn how to make your
   app compatible down to Android 2.1 (API level 7) for devices that do not support
   {@link android.widget.SearchView}.</p>
 
-  <h2 id="add-sv">Add the Search View to the Action Bar</h2>
+  <h2 id="add-sv">Add the Search View to the App Bar</h2>
 
-  <p>To add a {@link android.widget.SearchView} widget to the action bar, create a file named
+  <p>To add a {@link android.widget.SearchView} widget to the app bar, create a file named
   <code>res/menu/options_menu.xml</code> in your project and add the following code to the file.
   This code defines how to create the search item, such as the icon to use and the title of the
   item. The <code>collapseActionView</code> attribute allows your {@link android.widget.SearchView}
-  to expand to take up the whole action bar and collapse back down into a
-  normal action bar item when not in use. Because of the limited action bar space on handset devices,
+  to expand to take up the whole app bar and collapse back down into a
+  normal app bar item when not in use. Because of the limited app bar space on handset devices,
   using the <code>collapsibleActionView</code> attribute is recommended to provide a better
   user experience.</p>
   <pre>
@@ -63,7 +63,7 @@
   <p class="note"><strong>Note:</strong> If you already have an existing XML file for your menu
   items, you can add the <code>&lt;item&gt;</code> element to that file instead.</p>
 
-  <p>To display the {@link android.widget.SearchView} in the action bar, inflate the XML menu
+  <p>To display the {@link android.widget.SearchView} in the app bar, inflate the XML menu
   resource (<code>res/menu/options_menu.xml</code>) in the {@link
   android.app.Activity#onCreateOptionsMenu onCreateOptionsMenu()} method of your activity:</p>
   <pre>
@@ -76,7 +76,7 @@
 }
 </pre>
 
-  <p>If you run your app now, the {@link android.widget.SearchView} appears in your app's action
+  <p>If you run your app now, the {@link android.widget.SearchView} appears in your app's app
   bar, but it isn't functional. You now need to define <em>how</em> the {@link
   android.widget.SearchView} behaves.</p>
 
@@ -194,4 +194,4 @@
 
   <p>If you run your app now, the {@link android.widget.SearchView} can accept the user's query and
   start your searchable activity with the {@link android.content.Intent#ACTION_SEARCH} intent. It
-  is now up to you to figure out how to store and search your data given a query.</p>
\ No newline at end of file
+  is now up to you to figure out how to store and search your data given a query.</p>
diff --git a/docs/html/training/secure-file-sharing/share-file.jd b/docs/html/training/secure-file-sharing/share-file.jd
index 6c52770..cc8b2f1 100644
--- a/docs/html/training/secure-file-sharing/share-file.jd
+++ b/docs/html/training/secure-file-sharing/share-file.jd
@@ -78,7 +78,7 @@
         ...
             &lt;activity
                 android:name=".FileSelectActivity"
-                android:label="&#64;"File Selector" &gt;
+                android:label="&#64;File Selector" &gt;
                 &lt;intent-filter&gt;
                     &lt;action
                         android:name="android.intent.action.PICK"/&gt;
diff --git a/docs/html/training/sharing/shareaction.jd b/docs/html/training/sharing/shareaction.jd
index ee811da..53e13d0 100644
--- a/docs/html/training/sharing/shareaction.jd
+++ b/docs/html/training/sharing/shareaction.jd
@@ -21,7 +21,8 @@
 <!-- other docs (NOT javadocs) -->
 <h2>You should also read</h2>
 <ul>
-  <li><a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a></li>
+  <li><a href="{@docRoot}training/appbar/action-views.html">Action Views and
+    Action Providers</a></li>
 </ul>
 
 </div>
@@ -121,7 +122,8 @@
 want to set it and then update it as the UI changes. For example, when you view photos full screen
 in the Gallery app, the sharing intent changes as you flip between photos.</p>
 
-<p>For further discussion about the {@link android.widget.ShareActionProvider} object, see the <a
-href="{@docRoot}guide/topics/ui/actionbar.html#ActionProvider">Action Bar</a> guide.</p>
+<p>For further discussion about the {@link android.widget.ShareActionProvider}
+object, see <a href="{@docRoot}training/appbar/action-views.html">Action Views
+and Action Providers</a>.</p>
 
 
diff --git a/docs/html/training/snackbar/action.jd b/docs/html/training/snackbar/action.jd
new file mode 100644
index 0000000..58a18a5
--- /dev/null
+++ b/docs/html/training/snackbar/action.jd
@@ -0,0 +1,94 @@
+page.title=Adding an Action to a Message
+page.tags="Snackbar" "action" "popup"
+helpoutsWidget=true
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+  <div id="tb">
+
+<!--
+    <h2>This lesson teaches you to</h2>
+
+    <ol>
+      <li>
+        <a href="#id">heading</a>
+      </li>
+
+      <li>
+        <a href="#id">heading</a>
+      </li>
+    </ol>
+-->
+
+    <h2>See Also</h2>
+    <ul>
+      <li><a href="{@docRoot}guide/topics/ui/ui-events.html">
+          Input Events</a></li>
+    </ul>
+
+
+  </div>
+</div>
+
+<p>
+  You can add an action to a {@link android.support.design.widget.Snackbar},
+  allowing the user to respond to your message. If you add an action to a
+  {@link android.support.design.widget.Snackbar}, the
+  {@link android.support.design.widget.Snackbar} puts a button
+  next to the message text. The user can trigger your action by pressing the
+  button. For example, an email app might put an <em>undo</em> button on its
+  "email archived" message; if the user clicks the <em>undo</em> button, the
+  app takes the email back out of the archive.
+</p>
+
+<img src="{@docRoot}images/training/snackbar/snackbar_undo_action_2x.png"
+  srcset="{@docRoot}images/training/snackbar/snackbar_undo_action.png 1x,
+      {@docRoot}images/training/snackbar/snackbar_undo_action_2x.png 2x"
+  width="400" alt="">
+
+<p class="img-caption">
+  <strong>Figure 1.</strong> This Snackbar has an <strong>Undo</strong>
+  button, which restores the item that was just removed.
+</p>
+
+<p>
+  To add an action to a {@link android.support.design.widget.Snackbar} message,
+  you need to define a listener object that implements the {@link
+  android.view.View.OnClickListener} interface. The system calls your
+  listener's {@link android.view.View.OnClickListener#onClick onClick()} method
+  if the user clicks on the message action. For example, this snippet shows a
+  listener for an undo action:
+</p>
+
+<pre>public class MyUndoListener implements View.OnClickListener{
+
+    &amp;Override
+    public void onClick(View v) {
+
+        // Code to undo the user's last action
+    }
+}</pre>
+
+<p>
+  Use one of the
+  {@link android.support.design.widget.Snackbar#setAction(int, android.view.View.OnClickListener)
+  SetAction()} methods to attach the listener to your {@link
+  android.support.design.widget.Snackbar}. Be sure to attach the listener
+  before you call {@link android.support.design.widget.Snackbar#show show()},
+  as shown in this code sample:
+</p>
+
+<pre>Snackbar mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout),
+                                R.string.email_archived, Snackbar.LENGTH_SHORT);
+<strong>mySnackbar.setAction(R.string.undo_string, new MyUndoListener());</strong>
+mySnackbar.show();</pre>
+
+<p class="note">
+  <strong>Note:</strong> A {@link android.support.design.widget.Snackbar}
+  automatically goes away after a short time, so you can't count on the user
+  seeing the message or having a chance to press the button. For this reason,
+  you should consider offering an alternate way to perform any {@link
+  android.support.design.widget.Snackbar} action.
+</p>
diff --git a/docs/html/training/snackbar/index.jd b/docs/html/training/snackbar/index.jd
new file mode 100644
index 0000000..312f10c
--- /dev/null
+++ b/docs/html/training/snackbar/index.jd
@@ -0,0 +1,94 @@
+page.title=Showing Pop-Up Messages
+page.tags="Snackbar","Toast"
+helpoutsWidget=true
+trainingnavtop=true
+startpage=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>Dependencies and prerequisites</h2>
+<ul>
+  <li><a href="{@docRoot}tools/support-library/features.html#design">Design
+    Support Library</a></li>
+</ul>
+
+
+<h2>You should also read</h2>
+<ul>
+  <li><a href="{@docRoot}training/implementing-navigation/index.html">
+    Implementing Effective Navigation</a></li>
+  <li><a href="https://www.google.com/design/spec/components/snackbars-toasts.html">
+    Material Design: Snackbars &amp; toasts</a></li>
+</ul>
+
+</div>
+</div>
+
+<p>
+  There are many situations where you might want your app to show a quick
+  message to the user, without necessarily waiting for the user to respond.
+  For example, when a user performs an action like sending an email or deleting
+  a file, your app should show a quick confirmation to the user. Often the user
+  doesn't need to respond to the message. The message needs to be prominent
+  enough that the user can see it, but not so prominent that it prevents the
+  user from working with your app.
+</p>
+
+<p>
+  Android provides the {@link android.support.design.widget.Snackbar} widget
+  for this common use case.
+  A {@link android.support.design.widget.Snackbar} provides a quick pop-up
+  message to the user. The current activity remains visible and interactive
+  while the {@link android.support.design.widget.Snackbar} is displayed. After a
+  short time, the Snackbar automatically dismisses itself.
+</p>
+
+<p>
+  This class teaches you how to use {@link
+  android.support.design.widget.Snackbar} to show pop-up messages.
+</p>
+
+<div class="figure" style="width:400px">
+  <img src="{@docRoot}images/training/snackbar/snackbar_drive_2x.png"
+    srcset="{@docRoot}images/training/snackbar/snackbar_drive.png 1x,
+        {@docRoot}images/training/snackbar/snackbar_drive_2x.png 2x"
+    width="400" alt="">
+  <p class="img-caption">
+    <strong>Figure 1.</strong> A {@link android.support.design.widget.Snackbar}
+    shows a message at the bottom of the
+    activity, but the rest of the activity is still usable.
+  </p>
+</div>
+
+<p class="note">
+  <strong>Note:</strong> The {@link
+  android.support.design.widget.Snackbar} class supersedes {@link
+  android.widget.Toast}. While {@link android.widget.Toast} is currently still
+  supported, {@link android.support.design.widget.Snackbar} is now the
+  preferred way to display brief, transient messages to the user.
+</p>
+
+<h2>Lessons</h2>
+
+<dl>
+  <dt>
+    <b><a href="showing.html">Using a Snackbar to Show a Message</a></b>
+  </dt>
+
+  <dd>
+    Learn how to use a {@link android.support.design.widget.Snackbar} to display
+    a brief message to the user.
+  </dd>
+
+  <dt>
+    <b><a href="action.html">Adding an Action to a Message</a></b>
+  </dt>
+
+  <dd>
+    Learn how to add an action to a message, allowing the user to respond to
+    the message.
+  </dd>
+</dl>
diff --git a/docs/html/training/snackbar/showing.jd b/docs/html/training/snackbar/showing.jd
new file mode 100644
index 0000000..c178c0b
--- /dev/null
+++ b/docs/html/training/snackbar/showing.jd
@@ -0,0 +1,204 @@
+page.title=Building and Displaying a Pop-Up Message
+page.tags="Snackbar" "popup" "pop-up"
+helpoutsWidget=true
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+  <div id="tb">
+
+    <h2>This lesson teaches you to</h2>
+
+    <ol>
+      <li><a href="#coordinator">Use a CoordinatorLayout</a></li>
+      <li><a href="#display">Display a Message</a></li>
+    </ol>
+
+    <h2>You should also read</h2>
+    <ul>
+      <li><a href="{@docRoot}tools/support-library/setup.html"
+    >Support Library Setup</a></li>
+    </ul>
+  </div>
+</div>
+
+
+<p>
+  You can use a {@link android.support.design.widget.Snackbar} to display a brief
+  message to the user. The message automatically goes away after a short
+  period. A {@link android.support.design.widget.Snackbar} is ideal
+  for brief messages that the user doesn't necessarily need to act on. For
+  example, an email app could use a {@link
+  android.support.design.widget.Snackbar} to tell the user that the app
+  successfully sent an email.
+</p>
+
+<h2 id="coordinator">Use a CoordinatorLayout</h2>
+
+<p>
+  A {@link android.support.design.widget.Snackbar} is attached to a view. The
+  {@link android.support.design.widget.Snackbar} provides basic functionality
+  if it is attached to any object derived from the {@link android.view.View}
+  class, such as any of the common layout objects. However, if the
+  {@link android.support.design.widget.Snackbar}
+  is attached to a {@link android.support.design.widget.CoordinatorLayout}, the
+  {@link android.support.design.widget.Snackbar} gains additional features:
+</p>
+
+<ul>
+  <li>The user can dismiss the {@link android.support.design.widget.Snackbar}
+  by swiping it away.
+  </li>
+
+  <li>The layout moves some other UI elements when the {@link
+  android.support.design.widget.Snackbar} appears. For example, if the layout
+  has a {@link android.support.design.widget.FloatingActionButton}, the layout
+  moves the button up when it shows a {@link
+  android.support.design.widget.Snackbar}, instead of drawing the {@link
+  android.support.design.widget.Snackbar} on top of the button. You can see how
+  this looks in Figure 1.
+  </li>
+</ul>
+
+<p>
+  The {@link android.support.design.widget.CoordinatorLayout} class provides a superset
+  of the functionality of {@link android.widget.FrameLayout}. If your app
+  already uses a {@link android.widget.FrameLayout}, you can just replace that
+  layout with a {@link android.support.design.widget.CoordinatorLayout} to
+  enable the full {@link android.support.design.widget.Snackbar} functionality.
+  If your app uses other layout objects, the simplest thing to do is wrap your
+  existing layout elements in a {@link
+  android.support.design.widget.CoordinatorLayout}, as in this example:
+</p>
+
+<pre>&lt;android.support.design.widget.CoordinatorLayout
+    android:id="@+id/myCoordinatorLayout"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"&gt;
+
+    &lt;!-- Here are the existing layout elements, now wrapped in
+         a CoordinatorLayout --&gt;
+    &lt;LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"&gt;
+
+        &lt;!-- …Toolbar, other layouts, other elements… --&gt;
+
+    &lt;/LinearLayout>
+
+&lt;/android.support.design.widget.CoordinatorLayout&gt;</pre>
+
+<p>
+  Make sure to set an <code>android:id</code> tag for your {@link
+  android.support.design.widget.CoordinatorLayout}. You need the layout's ID
+  when you display the message.
+</p>
+
+<div class="framed-nexus5-port-span-5" id="video-coord">
+  <video class="play-on-hover" autoplay loop
+    alt="If the Snackbar is attached to a CoordinatorLayout, the layout
+        moves other elements up when it shows the Snackbar.">
+  <!-- Preferred video size 216x384 (portrait) -->
+    <source src="{@docRoot}images/training/snackbar/snackbar_button_move.mp4">
+  </video>
+</div>
+
+<p class="img-caption">
+  <strong>Figure 1.</strong> The {@link android.support.design.widget.CoordinatorLayout}
+  moves the {@link android.support.design.widget.FloatingActionButton} up
+  when the {@link android.support.design.widget.Snackbar} appears.
+</p>
+
+<h2 id="display">
+  Display a Message
+</h2>
+
+<p>
+  There are two steps to displaying a message. First, you create a {@link
+  android.support.design.widget.Snackbar} object with the message text. Then,
+  you call that object's {@link android.support.design.widget.Snackbar#show
+  show()} method to display the message to the user.
+</p>
+
+<h3 id="create-snackbar">Creating a Snackbar object</h3>
+
+<p>
+  Create a {@link android.support.design.widget.Snackbar} object by
+  calling the static {@link android.support.design.widget.Snackbar#make
+  Snackbar.make()} method. When you create the {@link
+  android.support.design.widget.Snackbar}, you specify both the message it
+  displays, and the length of time to show the message:
+</p>
+
+<pre>Snackbar mySnackbar = Snackbar.make(viewId, stringId, duration);</pre>
+
+<dl>
+  <dt>
+    <em>viewId</em>
+  </dt>
+
+  <dd>
+    The view to attach the {@link android.support.design.widget.Snackbar} to.
+    The method actually searches up the view hierarchy from the passed
+    <em>viewId</em> until it reaches either a {@link
+    android.support.design.widget.CoordinatorLayout}, or the window decor's
+    content view. Ordinarily, it's simplest to just pass the ID of the {@link
+    android.support.design.widget.CoordinatorLayout} enclosing your content.
+  </dd>
+
+  <dt>
+    <em>stringId</em>
+  </dt>
+
+  <dd>
+    The resource ID of the message you want to display. This can be formatted
+    or unformatted text.
+  </dd>
+
+  <dt>
+    <em>duration</em>
+  </dt>
+
+  <dd>
+    The length of time to show the message. This can be either {@link
+    android.support.design.widget.Snackbar#LENGTH_SHORT LENGTH_SHORT} or {@link
+    android.support.design.widget.Snackbar#LENGTH_LONG LENGTH_LONG}.
+  </dd>
+</dl>
+
+<h3 id="show-snackbar">Showing the message to the user</h3>
+
+<p>
+  Once you have created the {@link android.support.design.widget.Snackbar},
+  call its {@link android.support.design.widget.Snackbar#show show()} method to
+  display the {@link android.support.design.widget.Snackbar} to the user:
+</p>
+
+<pre>mySnackbar.show();</pre>
+
+<p>
+  The system does not show multiple {@link
+  android.support.design.widget.Snackbar} objects at the same time, so if the
+  view is currently displaying another {@link
+  android.support.design.widget.Snackbar}, the system queues your {@link
+  android.support.design.widget.Snackbar} and displays it after the current
+  {@link android.support.design.widget.Snackbar} expires or is dismissed.
+</p>
+
+<p>
+  If you just want to show a message to the user and won't need to call any of
+  the {@link android.support.design.widget.Snackbar} object's utility methods,
+  you don't need to keep the reference to the {@link
+  android.support.design.widget.Snackbar} after you call {@link
+  android.support.design.widget.Snackbar#show show()}. For this reason, it's
+  common to use method chaining to create and show a {@link
+  android.support.design.widget.Snackbar} in one statement:
+</p>
+
+<pre>Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.email_sent,
+                        Snackbar.LENGTH_SHORT)
+        .show();</pre>
diff --git a/docs/html/training/sync-adapters/creating-sync-adapter.jd b/docs/html/training/sync-adapters/creating-sync-adapter.jd
index 9bd17ba..0819c16 100644
--- a/docs/html/training/sync-adapters/creating-sync-adapter.jd
+++ b/docs/html/training/sync-adapters/creating-sync-adapter.jd
@@ -382,7 +382,7 @@
     ...
     // Constants
     // The authority for the sync adapter's content provider
-    public static final String AUTHORITY = "com.example.android.datasync.provider"
+    public static final String AUTHORITY = "com.example.android.datasync.provider";
     // An account type, in the form of a domain name
     public static final String ACCOUNT_TYPE = "example.com";
     // The account name
@@ -416,7 +416,7 @@
          * Add the account and account type, no password or user data
          * If successful, return the Account object, otherwise report an error.
          */
-        if (accountManager.addAccountExplicitly(newAccount, null, null))) {
+        if (accountManager.addAccountExplicitly(newAccount, null, null)) {
             /*
              * If you don't set android:syncable="true" in
              * in your &lt;provider&gt; element in the manifest,
diff --git a/docs/html/training/sync-adapters/running-sync-adapter.jd b/docs/html/training/sync-adapters/running-sync-adapter.jd
index 194e94b..033450f 100644
--- a/docs/html/training/sync-adapters/running-sync-adapter.jd
+++ b/docs/html/training/sync-adapters/running-sync-adapter.jd
@@ -11,7 +11,6 @@
 <ol>
     <li><a href="#RunByMessage">Run the Sync Adapter When Server Data Changes</a>
     <li><a href="#RunDataChange">Run the Sync Adapter When Content Provider Data Changes</a></li>
-    <li><a href="#RunByNetwork">Run the Sync Adapter After a Network Message</a></li>
     <li><a href="#RunPeriodic">Run the Sync Adapter Periodically</a></li>
     <li><a href="#RunOnDemand">Run the Sync Adapter On Demand</a></li>
 </ol>
@@ -69,15 +68,6 @@
         content provider, detecting data changes may be more difficult.
     </dd>
     <dt>
-        When the system sends out a network message
-    </dt>
-    <dd>
-        Run a sync adapter when the Android system sends out a network message that keeps the
-        TCP/IP connection open; this message is a basic part of the networking framework. Using
-        this option is one way to run the sync adapter automatically. Consider using it in
-        conjunction with interval-based sync adapter runs.
-    </dd>
-    <dt>
         At regular intervals
     </dt>
     <dd>
@@ -283,60 +273,6 @@
     ...
 }
 </pre>
-<h2 id="RunByNetwork">Run the Sync Adapter After a Network Message</h2>
-<p>
-    When a network connection is available, the Android system sends out a message
-    every few seconds to keep the device's TCP/IP connection open. This message also goes to
-    the {@link android.content.ContentResolver} of each app. By calling
-    {@link android.content.ContentResolver#setSyncAutomatically setSyncAutomatically()},
-    you can run the sync adapter whenever the {@link android.content.ContentResolver}
-    receives the message.
-</p>
-<p>
-    By scheduling your sync adapter to run when the network message is sent, you ensure that your
-    sync adapter is always scheduled to run while the network is available. Use this option if you
-    don't have to force a data transfer in response to data changes, but you do want to ensure
-    your data is regularly updated. Similarly, you can use this option if you don't want a fixed
-    schedule for your sync adapter, but you do want it to run frequently.
-</p>
-<p>
-    Since the method
-    {@link android.content.ContentResolver#setSyncAutomatically setSyncAutomatically()}
-    doesn't disable {@link android.content.ContentResolver#addPeriodicSync addPeriodicSync()}, your
-    sync adapter may be triggered repeatedly in a short period of time. If you do want to run
-    your sync adapter periodically on a regular schedule, you should disable
-    {@link android.content.ContentResolver#setSyncAutomatically setSyncAutomatically()}.
-</p>
-<p>
-    The following code snippet shows you how to configure your
-    {@link android.content.ContentResolver} to run your sync adapter in response to a network
-    message:
-</p>
-<pre>
-public class MainActivity extends FragmentActivity {
-    ...
-    // Constants
-    // Content provider authority
-    public static final String AUTHORITY = "com.example.android.datasync.provider";
-    // Account
-    public static final String ACCOUNT = "default_account";
-    // Global variables
-    // A content resolver for accessing the provider
-    ContentResolver mResolver;
-    ...
-    &#64;Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        ...
-        // Get the content resolver for your app
-        mResolver = getContentResolver();
-        // Turn on automatic syncing for the default account and authority
-        mResolver.setSyncAutomatically(ACCOUNT, AUTHORITY, true);
-        ...
-    }
-    ...
-}
-</pre>
 <h2 id="RunPeriodic">Run the Sync Adapter Periodically</h2>
 <p>
     You can run your sync adapter periodically by setting a period of time to wait between runs,
diff --git a/docs/html/training/system-ui/dim.jd b/docs/html/training/system-ui/dim.jd
old mode 100644
new mode 100755
index f28c948..be2e6c2
--- a/docs/html/training/system-ui/dim.jd
+++ b/docs/html/training/system-ui/dim.jd
@@ -20,7 +20,7 @@
 
 <ul>
     <li>
-        <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> API Guide
+        <a href="{@docRoot}training/appbar/index.html">Adding the App Bar</a>
     </li>
     <li>
         <a href="{@docRoot}design/index.html">
@@ -53,7 +53,7 @@
 
 <h2 id="dim">Dim the Status and Navigation Bars</h2>
 
-<p>You can dim the status and notification bars on Android 4.0 and higher using the
+<p>You can dim the status and notification bars using the
 {@link android.view.View#SYSTEM_UI_FLAG_LOW_PROFILE} flag, as follows:</p>
 
 <pre>
diff --git a/docs/html/training/system-ui/immersive.jd b/docs/html/training/system-ui/immersive.jd
index 0a1516c..8e4ef09 100644
--- a/docs/html/training/system-ui/immersive.jd
+++ b/docs/html/training/system-ui/immersive.jd
@@ -21,7 +21,7 @@
 
 <ul>
     <li>
-        <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> API Guide
+        <a href="{@docRoot}training/appbar/index.html">Adding the App Bar</a>
     </li>
     <li>
         <a href="{@docRoot}design/patterns/fullscreen.html">
diff --git a/docs/html/training/system-ui/index.jd b/docs/html/training/system-ui/index.jd
index 56fa54b..80d6967 100644
--- a/docs/html/training/system-ui/index.jd
+++ b/docs/html/training/system-ui/index.jd
@@ -24,7 +24,7 @@
 
 <ul>
     <li>
-        <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> API Guide
+        <a href="{@docRoot}training/appbar/index.html">Adding the App Bar</a>
     </li>
     <li>
         <a href="{@docRoot}design/patterns/fullscreen.html">
diff --git a/docs/html/training/system-ui/navigation.jd b/docs/html/training/system-ui/navigation.jd
old mode 100644
new mode 100755
index 1c73c70..87f52c6
--- a/docs/html/training/system-ui/navigation.jd
+++ b/docs/html/training/system-ui/navigation.jd
@@ -10,7 +10,7 @@
 <!-- table of contents -->
 <h2>This lesson teaches you to</h2>
 <ol>
-  <li><a href="#40">Hide the Navigation Bar on 4.0 and Higher</a></li>
+  <li><a href="#40">Hide the Navigation Bar</a></li>
   <li><a href="#behind">Make Content Appear Behind the Navigation Bar</a></li>
 </ol>
 
@@ -20,7 +20,7 @@
 
 <ul>
     <li>
-        <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> API Guide
+        <a href="{@docRoot}training/appbar/index.html">Adding the App Bar</a>
     </li>
     <li>
         <a href="{@docRoot}design/index.html">
@@ -56,9 +56,9 @@
 
 
 
-<h2 id="40">Hide the Navigation Bar on 4.0 and Higher</h2>
+<h2 id="40">Hide the Navigation Bar</h2>
 
-<p>You can hide the navigation bar on Android 4.0 and higher using the
+<p>You can hide the navigation bar using the
 {@link android.view.View#SYSTEM_UI_FLAG_HIDE_NAVIGATION} flag. This snippet hides both
 the navigation bar and the status bar:</p>
 <pre>View decorView = getWindow().getDecorView();
diff --git a/docs/html/training/system-ui/status.jd b/docs/html/training/system-ui/status.jd
old mode 100644
new mode 100755
index 06b6143..8e5b356
--- a/docs/html/training/system-ui/status.jd
+++ b/docs/html/training/system-ui/status.jd
@@ -12,10 +12,7 @@
 <ol>
   <li><a href="#40">Hide the Status Bar on Android 4.0 and Lower</a></li>
   <li><a href="#41">Hide the Status Bar on Android 4.1 and Higher</a></li>
-  <li><a href="#44">Hide the Status Bar on Android 4.4 and Higher</a></li>
-
   <li><a href="#behind">Make Content Appear Behind the Status Bar</a></li>
-  <li><a href="#action-bar">Synchronize the Status Bar with Action Bar Transition</a></li>
 </ol>
 
 <!-- other docs (NOT javadocs) -->
@@ -23,7 +20,7 @@
 
 <ul>
     <li>
-        <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> API Guide
+        <a href="{@docRoot}training/appbar/index.html">Adding the App Bar</a>
     </li>
     <li>
         <a href="{@docRoot}design/index.html">
@@ -104,7 +101,7 @@
         super.onCreate(savedInstanceState);
         // If the Android version is lower than Jellybean, use this call to hide
         // the status bar.
-        if (Build.VERSION.SDK_INT < 16) {
+        if (Build.VERSION.SDK_INT &lt; 16) {
             getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                     WindowManager.LayoutParams.FLAG_FULLSCREEN);
         }
@@ -194,33 +191,3 @@
 view hierarchy when the content insets for a window have changed, to allow the window to
 adjust its content accordingly. By overriding this method you can handle the
 insets (and hence your app's layout) however you want. </p>
-
- <h2 id="action-bar">Synchronize the Status Bar with Action Bar Transition</h2>
-
-  <p>On Android 4.1 and higher, to avoid resizing your layout when the action bar hides and
-  shows, you can enable overlay mode for the <a href="{@docRoot}guide/topics/ui/actionbar.html">action bar</a>.
-  When in overlay mode, your activity layout uses all the
-  space available as if the action bar is not there and the system draws the action bar in
-  front of your layout. This obscures some of the layout at the top, but now when the
-  action bar hides or appears, the system does not need to resize your layout and the
-  transition is seamless.</p>
-
-  <p>To enable overlay mode for the action bar, you need to create a custom theme that
-  extends an existing theme with an action bar and set the
-  {@code android:windowActionBarOverlay} attribute
-  to {@code true}. For more discussion of this topic, see
-  <a href="{@docRoot}training/basics/actionbar/overlaying.html#EnableOverlay">
-  Overlaying the Action Bar</a> in the <a href="{@docRoot}training/basics/actionbar/index.html">
-  Adding the Action Bar</a> class.</p>
-
-
-<p>Then use
-{@link android.view.View#SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN},
-as described above,
-to set  your activity layout to use the same screen area that's available when you've enabled
-{@link android.view.View#SYSTEM_UI_FLAG_FULLSCREEN}.
-
-When you want to hide the system UI, use
-{@link android.view.View#SYSTEM_UI_FLAG_FULLSCREEN}.
-This also hides the action bar (because {@code windowActionBarOverlay=”true”)} and does
-so with a coordinated animation when both hiding and showing the two.</p>
diff --git a/docs/html/training/system-ui/visibility.jd b/docs/html/training/system-ui/visibility.jd
index b562add..14c139e 100644
--- a/docs/html/training/system-ui/visibility.jd
+++ b/docs/html/training/system-ui/visibility.jd
@@ -19,7 +19,7 @@
 
 <ul>
     <li>
-        <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> API Guide
+        <a href="{@docRoot}training/appbar/index.html">Adding the App Bar</a>
     </li>
     <li>
         <a href="{@docRoot}design/index.html">
diff --git a/docs/html/training/testing/index.jd b/docs/html/training/testing/index.jd
new file mode 100644
index 0000000..d6405c8
--- /dev/null
+++ b/docs/html/training/testing/index.jd
@@ -0,0 +1,72 @@
+page.title=Best Practices for Testing
+page.article=true
+page.image=images/testing/hwtest_junit_success.png
+
+meta.tags="testing"
+page.tags="testing"
+
+page.metaDescription=Starting point for testing Android apps, with guidelines, information, and examples.
+
+@jd:body
+
+<img src="/images/testing/testing-icon.png"
+style="float:right; margin:0 0 20px 30px" width="245" height="229" />
+
+<p>
+  Testing your app is an integral part of the app development process. Testing allows you to verify
+  the correctness, functional behavior, and usability of your app before it is released publicly.
+</p>
+<br>
+<br>
+
+<h2 id="start">Get Started</h2>
+
+<p>
+  Learn the basics of testing your app, with information about building and running your tests with
+  Android Studio:
+</p>
+
+<div class="resource-widget resource-flow-layout col-12"
+  data-query="collection:training/testing/overview"
+  data-cardSizes="6x3"
+  data-maxresults="3">
+</div>
+
+
+<h2 id="tools">Testing Tools and APIs</h2>
+
+<p>
+  Learn about the tools provided by the Android platform that help you test every aspect of your app
+  at every level:
+</p>
+
+<div class="resource-widget resource-flow-layout landing col-12"
+  data-query="collection:training/testing/tools"
+  data-cardSizes="15x3, 9x2, 9x2, 9x2, 9x2"
+  data-maxResults="5">
+</div>
+
+
+<h2 id="techniques">App Testing Techniques</h2>
+
+<p>
+  Learn techniques for testing your apps:
+</p>
+
+<div class="resource-widget resource-flow-layout landing col-12"
+  data-query="collection:training/testing/techniques"
+  data-cardSizes="6x3
+  data-maxResults="3">
+</div>
+
+<h2 id="resources">Other Resources</h2>
+
+<p>
+  More resources for app testing:
+</p>
+
+<div class="resource-widget resource-flow-layout landing col-12"
+  data-query="collection:training/testing/resources"
+  data-cardSizes="9x3"
+  data-maxResults="6">
+</div>
\ No newline at end of file
diff --git a/docs/html/training/testing/integration-testing/content-provider-testing.jd b/docs/html/training/testing/integration-testing/content-provider-testing.jd
new file mode 100644
index 0000000..75869d9
--- /dev/null
+++ b/docs/html/training/testing/integration-testing/content-provider-testing.jd
@@ -0,0 +1,174 @@
+page.title=Testing Your Content Provider
+page.tags=testing, content provider
+trainingnavtop=true
+
+@jd:body
+
+<!-- This is the training bar -->
+<div id="tb-wrapper">
+<div id="tb">
+  <h2>Dependencies and Prerequisites</h2>
+
+  <ul>
+    <li>Android 2.2 (API level 8) or higher</li>
+    <li><a href="{@docRoot}tools/testing-support-library/index.html">
+      Android Testing Support Library</a></li>
+    <li><a href="{@docRoot}tools/studio/index.html">Android Studio 1.4.1 or higher</a>.</li>
+  </ul>
+
+  <h2>This lesson teaches you to</h2>
+
+  <ol>
+    <li><a href="#build">Create Integration Tests for Content Providers</a></li>
+    <li><a href="#WhatToTest">What to Test</a></li>
+  </ol>
+
+  <h2>You should also read</h2>
+  <ul>
+      <li><a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>
+      </li>
+  </ul>
+</div>
+</div>
+
+<p>
+    If you are implementing a <a href="{@docRoot}guide/topics/providers/content-providers.html">
+    content provider</a> to store and retrieve data or to make data
+    accessible to other apps, you should test your provider to ensure that it doesn't behave in an
+    unexpected way. This lesson describes how to test public content providers, and is also
+    applicable to providers that you keep private to your own app.
+</p>
+<h2 id="build">Create Integration Tests for Content Providers</h2>
+<p>
+In Android, apps view content providers as data APIs that provide
+tables of data, with their internals hidden from view. A content provider may have many
+public constants, but it usually has few if any public methods and no public variables.
+For this reason, you should write your tests based only on the provider's public members.
+A content provider that is designed like this is offering a contract between itself and its users.
+</p>
+<p>
+Content providers let you access actual user data, so it's important to ensure
+that you test the content provider in an isolated testing environment. This approach allows you to
+only run against data dependencies set explicitly in the test case. It also means that your tests
+do not modify actual user data. For example, you should avoid writing a test that fails because
+there was data left over from a previous test. Similarly, your test should avoid adding or deleting
+actual contact information in a provider.
+</p>
+
+<p>
+To test your content provider in isolation, use the {@link android.test.ProviderTestCase2} class.
+This class allows you to use Android mock object classes such as {@link android.test.IsolatedContext}
+and {@link android.test.mock.MockContentResolver} to access file and database information without
+affecting the actual user data.
+</p>
+
+<p>Your integration test should be written as a JUnit 4 test class. To learn more about creating
+JUnit 4 test classes and using JUnit 4 assertions, see
+<a href="{@docRoot}training/testing/unit-testing/local-unit-tests.html#build">
+Create a Local Unit Test Class</a>.</p>
+
+<p>To create an integration test for your content provider, you must perform these steps:</p>
+<ul>
+    <li>Create your test class as a subclass of {@link android.test.ProviderTestCase2}.</li>
+    <li>Add the
+{@code &#64;RunWith(AndroidJUnit4.class)} annotation at the beginning of your test class
+definition.</li>
+    <li>Specify the
+<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
+{@code AndroidJUnitRunner}</a> class that the
+<a href="{@docRoot}tools/testing-support-library/index.html">Android Testing Support Library</a>
+provides as your default test runner. This step is described in more detail in
+<a href="{@docRoot}training/testing/start/index.html#run-instrumented-tests">
+Getting Started with Testing</a>.</li>
+    <li>Set the {@link android.content.Context} object from the
+<a href="{@docRoot}reference/android/support/test/InstrumentationRegistry.html">
+{@code InstrumentationRegistry}</a> class. See the snippet below for an example.
+    <pre>
+&#64;Override
+protected void setUp() throws Exception {
+    setContext(InstrumentationRegistry.getTargetContext());
+    super.setUp();
+}</pre>
+    </li>
+</ul>
+
+<h3 id="ProviderTestCase2">How ProviderTestCase2 works</h3>
+<p>
+    You test a provider with a subclass of {@link android.test.ProviderTestCase2}. This base class
+    extends {@link android.test.AndroidTestCase}, so it provides the JUnit testing framework as well
+    as Android-specific methods for testing application permissions. The most important
+    feature of this class is its initialization, which creates the isolated test environment.
+</p>
+<p>
+    The initialization is done in the constructor for {@link android.test.ProviderTestCase2}, which
+    subclasses call in their own constructors. The {@link android.test.ProviderTestCase2}
+    constructor creates an {@link android.test.IsolatedContext} object that allows file and
+    database operations but stubs out other interactions with the Android system.
+    The file and database operations themselves take place in a directory that is local to the
+    device or emulator and has a special prefix.
+</p>
+<p>
+    The constructor then creates a {@link android.test.mock.MockContentResolver} to use as the
+    resolver for the test.
+</p>
+<p>
+    Lastly, the constructor creates an instance of the provider under test. This is a normal
+    {@link android.content.ContentProvider} object, but it takes all of its environment information
+    from the {@link android.test.IsolatedContext}, so it is restricted to
+    working in the isolated test environment. All of the tests done in the test case class run
+    against this isolated object.
+</p>
+
+<p>
+You run integration tests for content providers the same way as instrumented unit tests. To run the
+integration test for your content provider, follow the steps described in <a
+href="{@docRoot}training/testing/unit-testing/instrumented-unit-tests.html#run">
+Run Instrumented Unit Tests</a>.
+</p>
+
+<h2 id="WhatToTest">What to Test</h2>
+<p>
+Here are some specific guidelines for testing content providers.
+</p>
+<ul>
+    <li>
+        Test with resolver methods: Even though you can instantiate a provider object in
+        {@link android.test.ProviderTestCase2}, you should always test with a resolver object
+        using the appropriate URI. Doing so ensures that you are testing the provider by performing
+        the same interaction that a regular application would use.
+    </li>
+    <li>
+        Test a public provider as a contract: If you intend your provider to be public and
+        available to other applications, you should test it as a contract. Some examples of how to
+        do so are as follows:
+        <ul>
+            <li>
+                Test with constants that your provider publicly exposes. For
+                example, look for constants that refer to column names in one of the provider's
+                data tables. These should always be constants publicly defined by the provider.
+            </li>
+            <li>
+                Test all the URIs that your provider offers. Your provider may offer several URIs,
+                each one referring to a different aspect of the data.
+            </li>
+            <li>
+                Test invalid URIs: Your unit tests should deliberately call the provider with an
+                invalid URI, and look for errors. A good provider design is to throw an
+                {@code IllegalArgumentException} for invalid URIs.
+
+            </li>
+        </ul>
+    </li>
+    <li>
+        Test the standard provider interactions: Most providers offer six access methods:
+        {@code query()}, {@code insert()}, {@code delete()}, {@code update()},
+        {@code getType()}, and {@code onCreate()}. Your tests should verify that all
+        of these methods work. These methods are described in more detail in the topic
+        <a href="{@docRoot}guide/topics/providers/content-providers.html">Content Providers</a>.
+    </li>
+    <li>
+        Test business logic: If the content provider implements business logic, you should test it.
+        Business logic includes handling of invalid values, financial or arithmetic calculations,
+        elimination or combining of duplicates.
+    </li>
+</ul>
\ No newline at end of file
diff --git a/docs/html/training/testing/integration-testing/index.jd b/docs/html/training/testing/integration-testing/index.jd
new file mode 100644
index 0000000..d7ce899
--- /dev/null
+++ b/docs/html/training/testing/integration-testing/index.jd
@@ -0,0 +1,55 @@
+page.title=Testing App Component Integrations
+page.tags=testing,integration
+
+trainingnavtop=true
+startpage=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+        <h2>
+          You should also read
+        </h2>
+        <ul>
+          <li>
+            <a href="{@docRoot}tools/testing-support-library/index.html">Testing Support Library</a>
+          </li>
+        </ul>
+</div>
+</div>
+
+<p>
+If your app uses components that users do not directly interact with, such as
+a <a href="{@docRoot}guide/components/services.html">Service</a> or
+<a href="{@docRoot}guide/topics/providers/content-providers.html">Content Provider</a>, you
+should validate that these components behave in a correct way with your app.</p>
+<p>When developing such components, you should get into the habit of writing
+<em>integration tests</em> in order to validate the component's behavior when your app runs on a
+device or an emulator.</p>
+
+<p class="note"><strong>Note:</strong> Android does not provide a separate test case class for
+{@link android.content.BroadcastReceiver}. To verify that a
+{@link android.content.BroadcastReceiver} responds correctly, you can test the component that sends
+it an {@link android.content.Intent} object. Alternatively, you can create an instance of your
+{@link android.content.BroadcastReceiver} by calling
+<a href="{@docRoot}reference/android/support/test/InstrumentationRegistry.html#getContext()">
+{@code InstrumentationRegistry.getTargetContext()}</a>, then call the
+{@link android.content.BroadcastReceiver} method that you want to test (usually, this is
+the
+{@link android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)
+onReceive()} method).</p>
+
+<p>This class teaches you to build automated integration tests using the testing APIs and tools
+that the Android platform provides.</p>
+<h2>Lessons</h2>
+<dl>
+  <dt><strong><a href="service-testing.html">
+Testing Your Service</a></strong></dt>
+    <dd>Learn how to build integration tests to verify that a service works correctly with your
+    app.</dd>
+  <dt><strong><a href="content-provider-testing.html">
+Testing Your Content Provider</a></strong></dt>
+    <dd>Learn how to build integration tests to verify that a content provider works correctly with
+    your app.</dd>
+</dl>
\ No newline at end of file
diff --git a/docs/html/training/testing/integration-testing/service-testing.jd b/docs/html/training/testing/integration-testing/service-testing.jd
new file mode 100644
index 0000000..7b420ac
--- /dev/null
+++ b/docs/html/training/testing/integration-testing/service-testing.jd
@@ -0,0 +1,140 @@
+page.title=Testing Your Service
+page.tags=testing, service
+trainingnavtop=true
+
+@jd:body
+
+<!-- This is the training bar -->
+<div id="tb-wrapper">
+<div id="tb">
+  <h2>Dependencies and Prerequisites</h2>
+
+  <ul>
+    <li>Android 2.2 (API level 8) or higher</li>
+    <li><a href="{@docRoot}tools/testing-support-library/index.html">
+      Android Testing Support Library</a></li>
+    <li><a href="{@docRoot}tools/studio/index.html">Android Studio 1.4.1 or higher</a>.</li>
+  </ul>
+
+  <h2>This lesson teaches you to</h2>
+
+  <ol>
+    <li><a href="#setup">Set Up Your Testing Environment</a></li>
+    <li><a href="#build">Create an Integrated Test for Services</a></li>
+    <li><a href="#run">Run Integration Tests for Services</a></li>
+  </ol>
+
+  <h2>You should also read</h2>
+  <ul>
+      <li><a href="{@docRoot}guide/components/services.html">Services</a></li>
+  </ul>
+
+  <h2>Try it out</h2>
+
+  <ul>
+    <li>
+<a href="https://github.com/googlesamples/android-testing/tree/master/integration/ServiceTestRuleSample"
+class="external-link">Service Test Code Samples</a></li>
+  </ul>
+</div>
+</div>
+
+<p>
+If you are implementing a local {@link android.app.Service} as a component of
+your app, you should test the {@link android.app.Service} to ensure that it doesn't behave in an
+unexpected way. You can create
+<a href="{@docRoot}training/testing/unit-testing/instrumented-unit-tests.html">
+instrumented unit tests</a> to verify that the behavior in the {@link android.app.Service}
+is correct; for example, the service stores and returns valid data values and performs
+data operations correctly.
+</p>
+
+<p>
+The <a href="{@docRoot}tools/testing-support-library/index.html">Android Testing Support Library</a>
+provides an API for testing your {@link android.app.Service} objects in isolation.
+The
+<a href="{@docRoot}reference/android/support/test/rule/ServiceTestRule.html">ServiceTestRule</a>
+class is a JUnit 4 rule that starts your service before your unit test methods
+run, and shuts down the service after tests complete. By using this test rule, you ensure that the
+connection to the service is always established before your test method runs. To
+learn more about JUnit 4 rules, see the <a href="https://github.com/junit-team/junit/wiki/Rules"
+class="external-link">JUnit documentation</a>.
+</p>
+
+<p style="note">
+<strong>Note</strong>: The
+<a href="{@docRoot}reference/android/support/test/rule/ServiceTestRule.html">ServiceTestRule</a>
+class does not support testing of {@link android.app.IntentService} objects.
+If you need to test a {@link android.app.IntentService} object, you should encapsulate the logic
+in a separate class and create a corresponding unit test instead.
+</p>
+
+<h2 id="setup">Set Up Your Testing Environment</h2>
+<p>Before building your integration test for the service, make sure to configure your project for
+  instrumented tests, as described in
+<a href="{@docRoot}training/testing/start/index.html#config-instrumented-tests">
+Getting Started with Testing</a>.</p>
+
+<h2 id="build">Create an Integration Test for Services</h2>
+<p>Your integration test should be written as a JUnit 4 test class. To learn more about creating
+JUnit 4 test classes and using JUnit 4 assertion methods, see
+<a href="{@docRoot}training/testing/unit-testing/instrumented-unit-tests.html#build">
+Create an Instrumented Unit Test Class</a>.</p>
+
+<p>To create an integration test for your service, add the {@code &#64;RunWith(AndroidJUnit4.class)}
+annotation at the beginning of your test class definition. You also need to specify the
+<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
+{@code AndroidJUnitRunner}</a> class that the Android Testing Support Library provides as your
+default test runner. This step is described in more detail in
+<a href="{@docRoot}training/testing/unit-testing/instrumented-unit-tests.html#run">
+Run Instrumented Unit Tests</a>.</p>
+
+<p>Next, create a
+<a href="{@docRoot}reference/android/support/test/rule/ServiceTestRule.html">ServiceTestRule</a>
+instance in your test by using the {@code &#64;Rule} annotation.</p>
+
+<pre>
+&#64;Rule
+public final ServiceTestRule mServiceRule = new ServiceTestRule();
+</pre>
+
+<p>The following example shows how you might implement an integration test for a service.
+The test method {@code testWithBoundService} verifies that the app binds successfully to a
+local service and that the service interface behaves correctly.</p>
+
+<pre>
+&#64;Test
+public void testWithBoundService() throws TimeoutException {
+    // Create the service Intent.
+    Intent serviceIntent =
+            new Intent(InstrumentationRegistry.getTargetContext(),
+                LocalService.class);
+
+    // Data can be passed to the service via the Intent.
+    serviceIntent.putExtra(LocalService.SEED_KEY, 42L);
+
+    // Bind the service and grab a reference to the binder.
+    IBinder binder = mServiceRule.bindService(serviceIntent);
+
+    // Get the reference to the service, or you can call
+    // public methods on the binder directly.
+    LocalService service =
+            ((LocalService.LocalBinder) binder).getService();
+
+    // Verify that the service is working correctly.
+    assertThat(service.getRandomInt(), is(any(Integer.class)));
+}
+</pre>
+
+<h2 id="run">Run Integration Tests for Services</h2>
+<p>
+You can run integration tests from <a href="{@docRoot}sdk/index.html">Android Studio</a> or
+from the command-line. Make sure to specify
+<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
+  {@code AndroidJUnitRunner}</a> as the default instrumentation runner in your project.
+</p>
+<p>
+To run the integration test for your service, follow the steps for running instrumented tests
+described in <a href="{@docRoot}training/testing/start/index.html#run-instrumented-tests">
+Getting Started with Testing</a>.
+</p>
diff --git a/docs/html/training/testing/performance.jd b/docs/html/training/testing/performance.jd
new file mode 100644
index 0000000..8592c0f
--- /dev/null
+++ b/docs/html/training/testing/performance.jd
@@ -0,0 +1,686 @@
+page.title=Testing Display Performance
+page.article=true
+page.image=images/cards/card-test-performance_2x.png
+page.keywords=performance, fps, tools
+
+@jd:body
+
+
+<div id="tb-wrapper">
+  <div id="tb">
+    <h2>In this document</h2>
+      <ol>
+        <li><a href="#measure">Measuring UI Performance</a>
+          <ul>
+            <li><a href="#aggregate">Aggregate frame stats</a></li>
+            <li><a href="#timing-info">Precise frame timing info</a></li>
+            <li><a href="#timing-dump">Simple frame timing dump</a></li>
+            <li><a href="#collection-window">Controlling the window of stat collection</a></li>
+            <li><a href="#diagnose">Diagnosing performance regressions</a></li>
+            <li><a href="#resources">Additional resources</a></li>
+          </ul>
+        </li>
+        <li><a href="#automate">Automating UI Perfomance Tests</a>
+          <ul>
+            <li><a href="#ui-tests">Setting up UI tests</a></li>
+            <li><a href="#automated-tests">Setting up automated UI testing</a></li>
+            <li><a href="#triage">Triaging and fixing observed problems</a></li>
+          </ul>
+        </li>
+      </ol>
+
+  </div>
+</div>
+
+
+<p>
+  User interface (UI) performance testing ensures that your app not only meets its functional
+  requirements, but that user interactions with your app are buttery smooth, running at a
+  consistent 60 frames per second (<a href=
+  "https://www.youtube.com/watch?v=CaMTIgxCSqU&amp;index=25&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">why
+  60fps?</a>), without any dropped or delayed frames, or as we like to call it, <em>jank</em>. This
+  document explains tools available to measure UI performance, and lays out an approach to
+  integrate UI performance measurements into your testing practices.
+</p>
+
+
+<h2 id="measure">Measuring UI Performance</h2>
+
+<p>
+  In order to improve performance you first need the ability to measure the performance of
+  your system, and then diagnose and identify problems that may arrive from various parts of your
+  pipeline.
+</p>
+
+<p>
+  <em><a href="https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></em> is an
+  Android tool that runs on the device and dumps interesting information about the status of system
+  services. Passing the <em>gfxinfo</em> command to dumpsys provides an output in logcat with
+  performance information relating to frames of animation that are occurring during the recording
+  phase.
+</p>
+
+<pre>
+&gt; adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt;
+</pre>
+
+<p>
+  This command can produce multiple different variants of frame timing data.
+</p>
+
+<h3 id="aggregate">Aggregate frame stats</h3>
+
+<p>
+  With the M Preview the command prints out aggregated analysis of frame data to logcat, collected
+  across the entire lifetime of the process. For example:
+</p>
+
+<pre class="noprettyprint">
+Stats since: 752958278148ns
+Total frames rendered: 82189
+Janky frames: 35335 (42.99%)
+90th percentile: 34ms
+95th percentile: 42ms
+99th percentile: 69ms
+Number Missed Vsync: 4706
+Number High input latency: 142
+Number Slow UI thread: 17270
+Number Slow bitmap uploads: 1542
+Number Slow draw: 23342
+</pre>
+
+<p>
+  These high level statistics convey at a high level the rendering performance of the app, as well
+  as its stability across many frames.
+</p>
+
+
+<h3 id="timing-info">Precise frame timing info</h3>
+
+<p>
+  With the M Preview comes a new command for gfxinfo, and that’s <em>framestats</em> which provides
+  extremely detailed frame timing information from recent frames, so that you can track down and
+  debug problems more accurately.
+</p>
+
+<pre>
+&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; framestats
+</pre>
+
+<p>
+  This command prints out frame timing information, with nanosecond timestamps, from the last 120
+  frames produced by the app. Below is example raw output from adb dumpsys gfxinfo
+  &lt;PACKAGE_NAME&gt; framestats:
+</p>
+
+<pre class="noprettyprint">
+0,27965466202353,27965466202353,27965449758000,27965461202353,27965467153286,27965471442505,27965471925682,27965474025318,27965474588547,27965474860786,27965475078599,27965479796151,27965480589068,
+0,27965482993342,27965482993342,27965465835000,27965477993342,27965483807401,27965486875630,27965487288443,27965489520682,27965490184380,27965490568703,27965491408078,27965496119641,27965496619641,
+0,27965499784331,27965499784331,27965481404000,27965494784331,27965500785318,27965503736099,27965504201151,27965506776568,27965507298443,27965507515005,27965508405474,27965513495318,27965514061984,
+0,27965516575320,27965516575320,27965497155000,27965511575320,27965517697349,27965521276151,27965521734797,27965524350474,27965524884536,27965525160578,27965526020891,27965531371203,27965532114484,
+</pre>
+
+<p>
+  Each line of this output represents a frame produced by the app. Each line has a fixed number of
+  columns describing time spent in each stage of the frame-producing pipeline. The next section
+  describes this format in detail, including what each column represents.
+</p>
+
+
+<h4 id="fs-data-format">Framestats data format</h4>
+
+<p>
+  Since the block of data is output in CSV format, it's very straightforward to paste it to your
+  spreadsheet tool of choice, or collect and parse with a script. The following table explains the
+  format of the output data columns. All timestamps are in nanoseconds.
+</p>
+
+<ul>
+  <li>FLAGS
+    <ul>
+      <li>Rows with a ‘0’ for the FLAGS column can have their total frame time computed by
+      subtracting the INTENDED_VSYNC column from the FRAME_COMPLETED column.
+      </li>
+
+      <li>If this is non-zero the row should be ignored, as the frame has been determined as being
+      an outlier from normal performance, where it is expected that layout &amp; draw take longer
+      than 16ms. Here are a few reasons this could occur:
+        <ul>
+          <li>The window layout changed (such as the first frame of the application or after a
+          rotation)
+          </li>
+
+          <li>It is also possible the frame was skipped in which case some of the values will have
+          garbage timestamps. A frame can be skipped if for example it is out-running 60fps or if
+          nothing on-screen ended up being dirty, this is not necessarily a sign of a problem in
+          the app.
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </li>
+
+  <li>INTENDED_VSYNC
+    <ul>
+      <li>The intended start point for the frame. If this value is different from VSYNC, there
+      was work occurring on the UI thread that prevented it from responding to the vsync signal
+      in a timely fashion.
+      </li>
+    </ul>
+  </li>
+
+  <li>VSYNC
+    <ul>
+      <li>The time value that was used in all the vsync listeners and drawing for the frame
+      (Choreographer frame callbacks, animations, View.getDrawingTime(), etc…)
+      </li>
+
+      <li>To understand more about VSYNC and how it influences your application, check out the
+      <a href=
+      "https://www.youtube.com/watch?v=1iaHxmfZGGc&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=23">
+        Understanding VSYNC</a> video.
+      </li>
+    </ul>
+  </li>
+
+  <li>OLDEST_INPUT_EVENT
+    <ul>
+      <li>The timestamp of the oldest input event in the input queue, or Long.MAX_VALUE if
+      there were no input events for the frame.
+      </li>
+
+      <li>This value is primarily intended for platform work and has limited usefulness to app
+      developers.
+      </li>
+    </ul>
+  </li>
+
+  <li>NEWEST_INPUT_EVENT
+    <ul>
+      <li>The timestamp of the newest input event in the input queue, or 0 if there were no
+      input events for the frame.
+      </li>
+
+      <li>This value is primarily intended for platform work and has limited usefulness to app
+      developers.
+      </li>
+
+      <li>However it’s possible to get a rough idea of how much latency the app is adding by
+      looking at (FRAME_COMPLETED - NEWEST_INPUT_EVENT).
+      </li>
+    </ul>
+  </li>
+
+  <li>HANDLE_INPUT_START
+    <ul>
+      <li>The timestamp at which input events were dispatched to the application.
+      </li>
+
+      <li>By looking at the time between this and ANIMATION_START it is possible to measure how
+      long the application spent handling input events.
+      </li>
+
+      <li>If this number is high (&gt;2ms), this indicates the app is spending an unusually
+      long time processing input events, such as View.onTouchEvent(), which may indicate this
+      work needs to be optimized, or offloaded to a different thread. Note that there are some
+      scenarios, such as click events that launch new activities or similar, where it is
+      expected and acceptable that this number is large.
+      </li>
+    </ul>
+  </li>
+
+  <li>ANIMATION_START
+    <ul>
+      <li>The timestamp at which animations registered with Choreographer were run.
+      </li>
+
+      <li>By looking at the time between this and PERFORM_TRANVERSALS_START it is possible to
+      determine how long it took to evaluate all the animators (ObjectAnimator,
+      ViewPropertyAnimator, and Transitions being the common ones) that are running.
+      </li>
+
+      <li>If this number is high (&gt;2ms), check to see if your app has written any custom
+      animators or what fields ObjectAnimators are animating and ensure they are appropriate
+      for an animation.
+      </li>
+
+      <li>To learn more about Choreographer, check out the <a href=
+      "https://www.youtube.com/watch?v=Q8m9sHdyXnE">For Butter or Worse</a>
+      video.
+      </li>
+    </ul>
+  </li>
+
+  <li>PERFORM_TRAVERSALS_START
+    <ul>
+      <li>If you subtract out DRAW_START from this value, you can extract how long the layout
+      &amp; measure phases took to complete. (note, during a scroll, or animation, you would
+      hope this should be close to zero..)
+      </li>
+
+      <li>To learn more about the measure &amp; layout phases of the rendering pipeline, check
+      out the <a href=
+      "https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">
+        Invalidations, Layouts and Performance</a> video
+      </li>
+    </ul>
+  </li>
+
+  <li>DRAW_START
+    <ul>
+      <li>The time at which the draw phase of performTraversals started. This is the start
+      point of recording the display lists of any views that were invalidated.
+      </li>
+
+      <li>The time between this and SYNC_START is how long it took to call View.draw() on all
+      the invalidated views in the tree.
+      </li>
+
+      <li>For more information on the drawing model, see <a href=
+      "{@docRoot}guide/topics/graphics/hardware-accel.html#hardware-model">Hardware Acceleration</a>
+      or the <a href=
+      "https://www.youtube.com/watch?v=we6poP0kw6E&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&amp;index=27">
+        Invalidations, Layouts and Performance</a> video
+      </li>
+    </ul>
+  </li>
+
+  <li>SYNC_QUEUED
+    <ul>
+      <li>The time at which a sync request was sent to the RenderThread.
+      </li>
+
+      <li>This marks the point at which a message to start the sync
+      phase was sent to the RenderThread. If the time between this and
+      SYNC_START is substantial (&gt;0.1ms or so), it means that
+      the RenderThread was busy working on a different frame. Internally
+      this is used to differentiate between the frame doing too much work
+      and exceeding the 16ms budget and the frame being stalled due to
+      the previous frame exceeding the 16ms budget.
+      </li>
+    </ul>
+  </li>
+
+  <li>SYNC_START
+    <ul>
+      <li>The time at which the sync phase of the drawing started.
+      </li>
+
+      <li>If the time between this and ISSUE_DRAW_COMMANDS_START is substantial (&gt;0.4ms or
+      so), it typically indicates a lot of new Bitmaps were drawn which must be uploaded to the
+      GPU.
+      </li>
+
+      <li>To understand more about the sync phase, check out the <a href=
+      "https://www.youtube.com/watch?v=VzYkVL1n4M8&amp;index=24&amp;list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">
+        Profile GPU Rendering</a> video
+      </li>
+    </ul>
+  </li>
+
+  <li>ISSUE_DRAW_COMMANDS_START
+    <ul>
+      <li>The time at which the hardware renderer started issuing drawing commands to the GPU.
+      </li>
+
+      <li>The time between this and FRAME_COMPLETED gives a rough idea of how much GPU work the
+      app is producing. Problems like too much overdraw or inefficient rendering effects show
+      up here.
+      </li>
+    </ul>
+  </li>
+
+  <li>SWAP_BUFFERS
+    <ul>
+      <li>The time at which eglSwapBuffers was called, relatively uninteresting outside of
+      platform work.
+      </li>
+    </ul>
+  </li>
+
+  <li>FRAME_COMPLETED
+    <ul>
+      <li>All done! The total time spent working on this frame can be computed by doing
+      FRAME_COMPLETED - INTENDED_VSYNC.
+      </li>
+    </ul>
+  </li>
+
+</ul>
+
+<p>
+  You can use this data in different ways. One simple but useful visualization is a
+  histogram showing the distribution of frames times (FRAME_COMPLETED - INTENDED_VSYNC) in
+  different latency buckets, see figure below. This graph tells us at a glance that most
+  frames were very good - well below the 16ms deadline (depicted in red), but a few frames
+  were significantly over the deadline. We can look at changes in this histogram over time
+  to see wholesale shifts or new outliers being created. You can also graph input latency,
+  time spent in layout, or other similar interesting metrics based on the many timestamps
+  in the data.
+</p>
+
+<img src="{@docRoot}images/performance-testing/perf-test-framestats.png">
+
+
+<h3 id="timing-dump">Simple frame timing dump</h3>
+
+<p>
+  If <strong>Profile GPU rendering</strong> is set to <strong>In adb shell dumpsys gfxinfo</strong>
+  in Developer Options, the <code>adb shell dumpsys gfxinfo</code> command prints out timing
+  information for the most recent 120 frames, broken into a few different categories with
+  tab-separated-values. This data can be useful for indicating which parts of the drawing pipeline
+  may be slow at a high level.
+</p>
+
+<p>
+  Similar to <a href="#fs-data-format">framestats</a> above, it's very
+  straightforward to paste it to your spreadsheet tool of choice, or collect and parse with
+  a script. The following graph shows a breakdown of where many frames produced by the app
+  were spending their time.
+</p>
+
+<img src="{@docRoot}images/performance-testing/perf-test-frame-latency.png">
+
+<p>
+  The result of running gfxinfo, copying the output, pasting it into a spreadsheet
+  application, and graphing the data as stacked bars.
+</p>
+
+<p>
+  Each vertical bar represents one frame of animation; its height represents the number of
+  milliseconds it took to compute that frame of animation. Each colored segment of the bar
+  represents a different stage of the rendering pipeline, so that you can see what parts of
+  your application may be creating a bottleneck. For more information on understanding the
+  rendering pipeline, and how to optimize for it, see the <a href=
+  "https://www.youtube.com/watch?v=we6poP0kw6E&amp;index=27&amp;list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">
+  Invalidations Layouts and Performance</a> video.
+</p>
+
+
+<h3 id="collection-window">Controlling the window of stat collection</h3>
+
+<p>
+  Both the framestats and simple frame timings gather data over a very short window - about
+  two seconds worth of rendering. In order to precisely control this window of time - for
+  example, to constrain the data to a particular animation - you can reset all counters,
+  and aggregate statistics gathered.
+</p>
+
+<pre>
+&gt;adb shell dumpsys gfxinfo &lt;PACKAGE_NAME&gt; reset
+</pre>
+
+<p>
+  This can also be used in conjunction with the dumping commands themselves to collect and
+  reset at a regular cadence, capturing less-than-two-second windows of frames
+  continuously.
+</p>
+
+
+<h3 id="diagnose">Diagnosing performance regressions</h3>
+
+<p>
+  Identification of regressions is a good first step to tracking down problems, and
+  maintaining high application health. However, dumpsys just identifies the existence and
+  relative severity of problems. You still need to diagnose the particular cause of the
+  performance problems, and find appropriate ways to fix them. For that, it’s highly
+  recommended to use the <a href="{@docRoot}tools/help/systrace.html">systrace</a> tool.
+</p>
+
+
+<h3 id="resources">Additional resources</h3>
+
+<p>
+  For more information on how Android’s rendering pipeline works, common problems that you
+  can find there, and how to fix them, some of the following resources may be useful to
+  you:
+</p>
+
+<ul>
+  <li>Rendering Performance 101
+  </li>
+  <li>Why 60fps?
+  </li>
+  <li>Android UI and the GPU
+  </li>
+  <li>Invalidations Layouts and performance
+  </li>
+  <li>Analyzing UI Performance with Systrace
+  </li>
+</ul>
+
+
+<h2 id="automate">Automating UI Perfomance Tests</h2>
+
+<p>
+  One approach to UI Performance testing is to simply have a human tester perform a set of
+  user operations on the target app, and either visually look for jank, or spend an very
+  large amount of time using a tool-driven approach to find it. But this manual approach is
+  fraught with peril - human ability to perceive frame rate changes varies tremendously,
+  and this is also time consuming, tedious, and error prone.
+</p>
+
+<p>
+  A more efficient approach is to log and analyze key performance metrics from automated UI
+  tests. The Android M developer preview includes new logging capabilities which make it
+  easy to determine the amount and severity of jank in your application’s animations, and
+  that can be used to build a rigorous process to determine your current performance and
+  track future performance objectives.
+</p>
+
+<p>
+  This article walks you through a recommended approach to using that data to automate your
+  performance testing.
+</p>
+
+<p>
+  This is mostly broken down into two key actions. Firstly, identifying what you're
+  testing, and how you’re testing it. and Secondly, setting up, and maintaining an
+  automated testing environment.
+</p>
+
+
+<h3 id="ui-tests">Setting up UI tests</h3>
+
+<p>
+  Before you can get started with automated testing, it’s important to determine a few high
+  level decisions, in order to properly understand your test space, and needs you may have.
+</p>
+
+<h4>
+  Identify key animations / flows to test
+</h4>
+
+<p>
+  Remember that bad performance is most visible to users when it interrupts a smooth
+  animation. As such, when identifying what types of UI actions to test for, it’s useful to
+  focus on the key animations that users see most, or are most important to their
+  experience. For example, here are some common scenarios that may be useful to identify:
+</p>
+
+<ul>
+  <li>Scrolling a primary ListView or RecyclerView
+  </li>
+
+  <li>Animations during async wait cycles
+  </li>
+
+  <li>Any animation that may have bitmap loading / manipulation in it
+  </li>
+
+  <li>Animations including Alpha Blending
+  </li>
+
+  <li>Custom View drawing with Canvas
+  </li>
+</ul>
+
+<p>
+  Work with engineers, designers, and product managers on your team to prioritize these key
+  product animations for test coverage.
+</p>
+
+<h4>
+  Define your future objectives and track against them
+</h4>
+
+<p>
+  From a high-level, it may be critical to identify your specific performance goals, and
+  focus on writing tests, and collecting data around them. For example:
+</p>
+
+<ul>
+  <li>Do you just want to begin tracking UI performance for the first time to learn more?
+  </li>
+
+  <li>Do you want to prevent regressions that might be introduced in the future?
+  </li>
+
+  <li>Are you at 90% of smooth frames today and want to get to 98% this quarter?
+  </li>
+
+  <li>Are you at 98% smooth frames and don’t want to regress?
+  </li>
+
+  <li>Is your goal to improve performance on low end devices?
+  </li>
+</ul>
+
+<p>
+  In all of these cases, you’ll want historical tracking which shows performance across
+  multiple versions of your application.
+</p>
+
+<h4>
+  Identify devices to test on
+</h4>
+
+<p>
+  Application performance varies depending on the device it's running on. Some devices may
+  contain less memory, less powerful GPUs, or slower CPU chips. This means that animations
+  which may perform well on one set of hardware, may not on others, and worse, may be a
+  result of a bottleneck in a different part of the pipeline. So, to account for this
+  variation in what a user might see, pick a range of devices to execute tests on, both
+  current high end devices, low end devices, tablets, etc. Look for variation in CPU
+  performance, RAM, screen density, size, and so on. Tests that pass on a high end device
+  may fail on a low end device.
+</p>
+
+<h4>
+  Basic frameworks for UI Testing
+</h4>
+
+<p>
+  Tool suites, like <a href=
+  "{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a> and
+  <a href="{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a>, are
+  built to help automate the action of a user moving through your application. These are simple
+  frameworks which mimic user interaction with your device. To use these frameworks, you
+  effectively create unique scripts, which run through a set of user-actions, and play them
+  out on the device itself.
+</p>
+
+<p>
+  By combining these automated tests, alongside <code>dumpsys gfxinfo</code> you can quickly
+  create a reproducible system that allows you to execute a test, and measure the
+  performance information of that particular condition.
+</p>
+
+
+<h3 id="automated-tests">Setting up automated UI testing</h3>
+
+<p>
+  Once you have the ability to execute a UI test, and a pipeline to gather the data from a
+  single test, the next important step is to embrace a framework which can execute that
+  test multiple times, across multiple devices, and aggregate the resulting performance
+  data for further analysis by your development team.
+</p>
+
+<h4>
+  A framework for test automation
+</h4>
+
+<p>
+  It’s worth noting that UI testing frameworks (like <a href=
+  "{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>)
+  run on the target device/emulator directly. While performance gathering information done
+  by <em>dumpsys gfxinfo</em> is driven by a host machine, sending commands over ADB. To
+  help bridge the automation of these separate entities, <a href=
+  "{@docRoot}tools/help/monkeyrunner_concepts.html">MonkeyRunner</a> framework was
+  developed; A scripting system that runs on your host machine, which can issue commands to
+  a set of connected devices, as well as receive data from them.
+</p>
+
+<p>
+  Building a set of scripts for proper automation of UI Performance testing, at a minimum,
+  should be able to utilize monkeyRunner to accomplish the following tasks:
+</p>
+
+<ul>
+  <li>Load &amp; Launch a desired APK to a target device, devices, or emulator.
+  </li>
+
+  <li>Launch a UI Automator UI test, and allow it to be executed
+  </li>
+
+  <li>Collect performance information through <em>dumpsys gfxinfo</em><em>.</em>
+  </li>
+
+  <li>Aggregate information and display it back in a useful fashion to the developer.
+  </li>
+</ul>
+
+
+<h3 id="triage">Triaging and fixing observed problems</h3>
+
+<p>
+  Once problem patterns or regressions are identified, the next step is identifying and
+  applying the fix. If your automated test framework preserves precise timing breakdowns
+  for frames, it can help you scrutinize recent suspicious code/layout changes (in the case
+  of regression), or narrow down the part of the system you’re analyzing when you switch to
+  manual investigation. For manual investigation, <a href=
+  "{@docRoot}tools/help/systrace.html">systrace</a> is a great place to start, showing
+  precise timing information about every stage of the rendering pipeline, every thread and
+  core in the system, as well as any custom event markers you define.
+</p>
+
+<h4>
+  Properly profiling temporal timings
+</h4>
+
+<p>
+  It is important to note the difficulties in obtaining and measuring timings that come from
+  rendering performance. These numbers are, by nature, non deterministic, and often
+  fluctuate depending on the state of the system, amount of memory available, thermal
+  throttling, and the last time a sun flare hit your area of the earth. The point is that
+  you can run the same test, twice and get slightly different numbers that may be close to
+  each other, but not exact.
+</p>
+
+<p>
+  Properly gathering and profiling data in this manner means running the same test,
+  multiple times, and accumulating the results as an average, or median value. (for the
+  sake of simplicity, let’s call this a ‘batch’) This gives you the rough approximation of
+  the performance of the test, while not needing exact timings.
+</p>
+
+<p>
+  Batches can be used between code changes to see the relative impact of those changes on
+  performance. If the average frame rate for the pre-change Batch is larger than the
+  post-change batch, then you generally have an overall win wrt performance for that
+  particular change.
+</p>
+
+<p>
+  This means that any Automated UI testing you do should take this concept into
+  consideration, and also account for any anomalies that might occur during a test. For
+  example, if your application performance suddenly dips, due to some device issue (that
+  isn’t caused by your application) then you may want to re-run the batch in order to get
+  less chaotic timings.
+</p>
+
+<p>
+  So, how many times should you run a test, before the measurements become meaningful? 10
+  times should be the minimum, with higher numbers like 50 or 100 yielding more accurate
+  results (of course, you’re now trading off time for accuracy)
+</p>
diff --git a/docs/html/training/testing/start/index.jd b/docs/html/training/testing/start/index.jd
new file mode 100644
index 0000000..a4b4aea
--- /dev/null
+++ b/docs/html/training/testing/start/index.jd
@@ -0,0 +1,252 @@
+page.title=Getting Started with Testing
+page.tags="testing"
+page.article=true
+page.image=images/tools/studio-main-screen.png
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<!-- Required platform, tools, add-ons, devices, knowledge, etc. -->
+<h2>Dependencies and prerequisites</h2>
+<ul>
+  <li><a href="{@docRoot}tools/studio/index.html">Android Studio (latest version)</a>.</li>
+</ul>
+
+<h2>This lesson teaches you to</h2>
+<ol>
+<li><a href="#setup">Set Up Your Testing Environment</a></li>
+<li><a href="#build">Build and Run Your Tests</a></li>
+</ol>
+
+<h2>You Should Also Read</h2>
+<ul>
+<li><a href="{@docRoot}tools/testing/testing_android.html">Testing Concepts</a></li>
+<li><a href="https://github.com/googlesamples/android-testing"
+  class="external-link">Android Testing Samples</a></li>
+<li><a href="{@docRoot}about/dashboards/index.html">Android Dashboards</a></li>
+</ul>
+
+</div>
+</div>
+
+<p>You should be writing and running tests as part of your Android app development cycle.
+Well-written tests can help you catch bugs early in development and give you confidence in your
+code.</p>
+
+<p>To verify specific behavior in your app, and to check for consistency across different Android
+devices, you can write a <a href="//en.wikipedia.org/wiki/Test_case"
+class="external-link">test case</a>. This lesson teaches you how to build a test case using the
+JUnit 4 framework and the testing APIs and tools provided by Google, and how to run your
+tests.</p>
+
+<h2 id="setup">Set Up Your Testing Environment</h2>
+
+<p>Before you start writing and running your tests, you must set up your test
+development environment. Android Studio provides an integrated development environment for you to
+create, build, and run Android app test cases from a graphical user interface (GUI).</p>
+
+<p>You must first download the prerequisite Android development tools before proceeding:
+<ul>
+<li><a href="{@docRoot}sdk/index.html">Android Studio</a> (latest version).</li>
+<li>The latest Android Support Repository using the
+  <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>. </li>
+</ul>
+
+<p>Based on the type of test you want to create, configure the test code source location and the
+  project dependencies in Android Studio as described in the following sections.</p>
+
+<h3 id="config-local-tests">Configure Your Project for Local Unit Tests</h3>
+<p><em>Local unit tests</em> are tests that run on your local machine, without needing access to the
+Android framework or an Android device. To learn how to develop local units tests, see
+<a href="{@docRoot}training/testing/unit-testing/local-unit-tests.html">
+Building Local Unit Tests</a>.</p>
+<p>In your Android Studio project, you must store the source files for local unit tests under a
+specific source directory ({@code src/test/java}). This feature improves your project organization
+by letting you group your unit tests together into a single source set.</p>
+<p>As with production code, you can create local unit tests for a
+<a href="http://developer.android.com/tools/building/configuring-gradle.html#workBuildVariants"
+class="external-link">specific flavor or build type</a>. Keep your unit tests in a test
+source tree location that corresponds to your production source tree, such as:</p>
+
+<table>
+<tr>
+<th>Path to Production Class</th>
+<th>Path to Local Unit Test Class</th>
+</tr>
+<tr>
+<td>{@code src/main/java/Foo.java}</td>
+<td>{@code src/test/java/FooTest.java}</td>
+</tr>
+<tr>
+<td>{@code src/debug/java/Foo.java}</td>
+<td>{@code src/testDebug/java/FooTest.java}</td>
+</tr>
+<tr>
+<td>{@code src/myFlavor/java/Foo.java}</td>
+<td>{@code src/testMyFlavor/java/FooTest.java}</td>
+</tr>
+</table>
+
+<p>You'll need to configure the testing dependencies for your project to use the
+  standard APIs provided by the JUnit 4 framework. To simplify your local unit test development,
+  we recommend that you include the <a href="https://github.com/mockito/mockito"
+  class="external-link">Mockito</a> library if your test needs to interact with Android
+  dependencies. To learn more about using mock objects in your local unit tests, see
+<a href="{@docRoot}training/testing/unit-testing/local-unit-tests.html#mocking-dependencies">
+  Mocking Android dependencies</a>.</p>
+<p>In the {@code build.gradle} file of your Android app module, specify your dependencies like
+this:</p>
+
+<pre>
+dependencies {
+    // Required -- JUnit 4 framework
+    testCompile 'junit:junit:4.12'
+    // Optional -- Mockito framework
+    testCompile 'org.mockito:mockito-core:1.10.19'
+}
+</pre>
+
+<h3 id="config-instrumented-tests">Configure Your Project for Instrumented Tests</h3>
+<p><em>Instrumented tests</em> are tests that run on an Android device or emulator. These tests
+have access to {@link android.app.Instrumentation} information, such as the
+{@link android.content.Context} for the app under test. Instrumented tests can be used for unit,
+user interface (UI), or app component integration testing. To learn how to develop instrumented
+tests for your specific needs, see these additional topics:
+<ul>
+<li><a href="{@docRoot}training/testing/unit-testing/instrumented-unit-tests.html">
+    Building Instrumented Unit Tests</a> - Build more complex unit tests that have Android
+    dependencies which cannot be easily filled by using mock objects.</li>
+<li><a href="{@docRoot}training/testing/ui-testing/index.html">
+    Automating User Interface Tests</a> - Create tests to verify that the user interface behaves
+    correctly for user interactions within a single app or for interactions across multiple apps.</li>
+<li><a href="{@docRoot}training/testing/integration-testing/index.html">
+    Testing App Component Integrations</a> - Verify the behavior of components that users do not
+directly interact with, such as a <a href="{@docRoot}guide/components/services.html">Service</a> or
+a <a href="guide/topics/providers/content-providers.html">Content Provider</a>.</li>
+</ul>
+</p>
+<p>
+In your Android Studio project, you must place the source code for your instrumentated tests under
+a specific directory (<code>src/androidTest/java</code>).
+</p>
+<p>
+Download the Android Testing Support Library, which provides APIs that allow you to quickly build and
+run instrumented test code for your apps. The Testing Support Library includes a JUnit 4 test runner
+(<a href="{@docRoot}tools/testing-support-library/index.html#AndroidJUnitRunner">AndroidJUnitRunner
+</a>) and APIs for functional UI tests
+(<a href="{@docRoot}tools/testing-support-library/index.html#Espresso">Espresso</a> and
+<a href="{@docRoot}tools/testing-support-library/index.html#UIAutomator">UI Automator</a>). To
+learn how to install the library, see
+<a href="{@docRoot}tools/testing-support-library/index.html#setup">Testing Support Library Setup</a>.
+</p>
+<p>You'll need to configure the Android testing dependencies for your project to use the test runner
+and the rules APIs provided by the Testing Support Library. To simplify your test development,
+we also recommend that you include the <a href="https://github.com/hamcrest"
+class="external-link">Hamcrest</a> library, which lets you create more flexible assertions using the
+Hamcrest matcher APIs.</p>
+<p>In the {@code build.gradle} file of your Android app module, specify your dependencies like
+this:</p>
+<pre>
+dependencies {
+    androidTestCompile 'com.android.support:support-annotations:23.0.1'
+    androidTestCompile 'com.android.support.test:runner:0.4.1'
+    androidTestCompile 'com.android.support.test:rules:0.4.1'
+    // Optional -- Hamcrest library
+    androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
+    // Optional -- UI testing with Espresso
+    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
+    // Optional -- UI testing with UI Automator
+    androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
+}
+</pre>
+
+<h2 id="build">Build and Run Your Tests</h2>
+
+<p>You can run build and run your tests in a similar way to how you run your Android apps --
+  graphically in Android Studio or from the command-line using the
+<a href="{@docRoot}tools/building/plugin-for-gradle.html">
+Android Plugin for Gradle</a>.</p>
+
+<h3 id="run-local-tests">Run Local Unit Tests</h3>
+<p>
+The Android Plugin for Gradle compiles the local unit test code located in the default directory
+({@code src/test/java}), builds a test app, and executes it locally
+using the default test runner class.
+</p>
+<p>
+To run local unit tests in your Gradle project from Android Studio:
+</p>
+<ol>
+<li>In the <strong>Project</strong> window, right click on the project and synchronize your project.
+</li>
+<li>Open the <strong>Build Variants</strong> window by clicking the left-hand tab, then change the
+test artifact to <em>Unit Tests</em>.
+</li>
+<li>In the <strong>Project</strong> window, drill down to your unit test class or method,
+then right-click and run it. To run all tests in the unit test directory, select the directory then
+right-click and press <strong>Run tests</strong>.
+</li>
+</ol>
+
+<p>Android Studio displays the results of the unit test execution in the <strong>Run</strong>
+window.</p>
+
+<p>To run local unit tests in your Gradle project from the command-line, call the {@code test} task
+command.</p>
+
+<pre>
+./gradlew test
+</pre>
+
+<p>If there are failing tests, the command will display links to HTML reports (one per build
+variant). You can find the generated HTML test result reports in the
+{@code &lt;path_to_your_project&gt;/app/build/reports/tests/} directory, and the corresponding XML
+files in the {@code &lt;path_to_your_project&gt;/app/build/test-results/} directory.</p>
+
+<h3 id="run-instrumented-tests">Run Instrumented Tests</h3>
+<p>
+The Android Plugin for Gradle compiles the instrumented test code located in the default directory
+({@code src/androidTest/java}), builds a test APK and production APK, installs both APKs on the
+connected device or emulator, and executes the tests.</p>
+
+<p>Make sure to specify
+<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
+{@code AndroidJUnitRunner}</a> as the default test instrumentation runner in your project. To do
+this, add the following setting in your {@code build.gradle} file:</p>
+
+<pre>
+android {
+    defaultConfig {
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+    }
+}
+</pre>
+
+<p>To run your instrumented tests in Android Studio:</p>
+<ol>
+<li>Open the <strong>Build Variants</strong> window by clicking the left-hand tab, then set the
+test artifact to <em>Android Instrumentation Tests</em>.
+</li>
+<li>In the <strong>Project</strong> window, drill down to your instrumented test class or method,
+  then right-click and run it using the Android Test configuration. To run all tests in the
+instrumented test directory, select the directory then right-click and press
+<strong>Run tests</strong>.
+</li>
+</ol>
+
+<p>Android Studio displays the results of the instrumented test execution in the
+<strong>Run</strong> window.</p>
+
+<p>To run your instrumented tests from the command-line via Gradle, call the
+  {@code connectedAndroidTest} (or {@code cAT}) task:</p>
+
+<pre>
+./gradlew cAT
+</pre>
+
+<p>You can find the generated HTML test result reports in the
+{@code &lt;path_to_your_project&gt;/app/build/outputs/reports/androidTests/connected/} directory,
+and the corresponding XML files in the
+{@code &lt;path_to_your_project&gt;/app/build/outputs/androidTest-results/connected/} directory.</p>
\ No newline at end of file
diff --git a/docs/html/training/testing/ui-testing/espresso-testing.jd b/docs/html/training/testing/ui-testing/espresso-testing.jd
index 7637547..45a4ceb 100644
--- a/docs/html/training/testing/ui-testing/espresso-testing.jd
+++ b/docs/html/training/testing/ui-testing/espresso-testing.jd
@@ -55,6 +55,8 @@
             <a href="https://github.com/googlesamples/android-testing"
             class="external-link">Espresso Code Samples</a>
           </li>
+          <li><a href="https://www.code-labs.io/codelabs/android-testing/index.html?index=..%2F..%2Findex#0"
+            class="external-link">Android Testing Codelab</a></li>
         </ul>
       </div>
     </div>
@@ -90,72 +92,51 @@
       Set Up Espresso
     </h2>
 
-    <p>
-      Before you begin using Espresso, you must:
-    </p>
+<p>Before building your UI test with Espresso, make sure to configure your test source code
+location and project dependencies, as described in
+<a href="{@docRoot}training/testing/start/index.html#config-instrumented-tests">
+Getting Started with Testing</a>.</p>
 
-    <ul>
-      <li>
-        <strong>Install the Android Testing Support Library</strong>. The Espresso API is
-        located under the {@code com.android.support.test.espresso} package. These classes allow
-        you to create tests that use the Espresso testing framework. To learn how to install the
-        library, see <a href="{@docRoot}tools/testing-support-library/index.html#setup">
-        Testing Support Library Setup</a>.
-      </li>
+<p>In the {@code build.gradle} file of your Android app module, you must set a dependency
+  reference to the Espresso library:</p>
 
-      <li>
-        <strong>Set up your project structure.</strong> In your Gradle project, the source code for
-        the target app that you want to test is typically placed under the {@code app/src/main}
-        folder. The source code for instrumentation tests, including
-        your Espresso tests, must be placed under the <code>app/src/androidTest</code> folder. To
-        learn more about setting up your project directory, see
-        <a href="{@docRoot}tools/projects/index.html">Managing Projects</a>.
-      </li>
-
-      <li>
-        <strong>Specify your Android testing dependencies</strong>. In order for the
-        <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plug-in for Gradle</a> to
-        correctly build and run your Espresso tests, you must specify the following libraries in
-        the {@code build.gradle} file of your Android app module:
-
-        <pre>
+<pre>
 dependencies {
-    androidTestCompile 'com.android.support.test:runner:0.3'
-    androidTestCompile 'com.android.support.test:rules:0.3'
-    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2'
+    ...
+    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
 }
 </pre>
-      </li>
 
-      <li>
-        <strong>Turn off animations on your test device.</strong> Leaving system animations turned
-        on in the test device might cause unexpected results or may lead your test to fail. Turn
-        off animations from <em>Settings</em> by opening <em>Developing Options</em> and
-        turning all the following options off:
+<p>Turn off animations on your test device &mdash; leaving system animations turned on in the test
+device might cause unexpected results or may lead your test to fail. Turn off animations from
+<em>Settings</em> by opening <em>Developing Options</em> and turning all the following options off:
+</p>
         <ul>
           <li>
-            <em>Window animation scale</em>
+            <strong>Window animation scale</strong>
           </li>
 
           <li>
-            <em>Transition animation scale</em>
+            <strong>Transition animation scale</strong>
           </li>
 
           <li>
-            <em>Animator duration scale</em>
+            <strong>Animator duration scale</strong>
           </li>
         </ul>
       </li>
     </ul>
+<p>If you want to set up your project to use Espresso features other than what the core API
+  provides, see this
+  <a href="https://google.github.io/android-testing-support-library/docs/espresso/index.html"
+  class="external-link">resource</a>.</p>
 
     <h2 id="build">
       Create an Espresso Test Class
     </h2>
 
     <p>
-      To create an Espresso test, create a Java class or an
-      {@link android.test.ActivityInstrumentationTestCase2}
-      subclass that follows this programming model:
+      To create an Espresso test, create a Java class that follows this programming model:
     </p>
 
     <ol>
@@ -200,11 +181,70 @@
         .perform(click())               // click() is a ViewAction
         .check(matches(isDisplayed())); // matches(isDisplayed()) is a ViewAssertion
 </pre>
+<h3 id="espresso-atr">Using Espresso with ActivityTestRule</h3>
+<p>
+The following section describes how to create a new Espresso test in the JUnit 4 style and use
+<a href="{@docRoot}reference/android/support/test/rule/ActivityTestRule.html">
+{@code ActivityTestRule}</a> to reduce the amount of boilerplate code you need to write. By using
+<a href="{@docRoot}reference/android/support/test/rule/ActivityTestRule.html">
+{@code ActivityTestRule}</a>, the testing framework launches the activity under test
+before each test method annotated with {@code &#64;Test} and before any method annotated with
+{@code &#64;Before}. The framework handles shutting down the activity after the test finishes
+and all methods annotated with {@code &#64;After} are run.</p>
+
+<pre>
+package com.example.android.testing.espresso.BasicSample;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import android.support.test.rule.ActivityTestRule;
+import android.support.test.runner.AndroidJUnit4;
+...
+
+&#64;RunWith(AndroidJUnit4.class)
+&#64;LargeTest
+public class ChangeTextBehaviorTest {
+
+    private String mStringToBetyped;
+
+    &#64;Rule
+    public ActivityTestRule&lt;MainActivity&gt; mActivityRule = new ActivityTestRule&lt;&gt;(
+            MainActivity.class);
+
+    &#64;Before
+    public void initValidString() {
+        // Specify a valid string.
+        mStringToBetyped = "Espresso";
+    }
+
+    &#64;Test
+    public void changeText_sameActivity() {
+        // Type text and then press the button.
+        onView(withId(R.id.editTextUserInput))
+                .perform(typeText(mStringToBetyped), closeSoftKeyboard());
+        onView(withId(R.id.changeTextBt)).perform(click());
+
+        // Check that the text was changed.
+        onView(withId(R.id.textToBeChanged))
+                .check(matches(withText(mStringToBetyped)));
+    }
+}
+</pre>
 
     <h3 id="espresso-aitc2">
       Using Espresso with ActivityInstrumentationTestCase2
     </h3>
-
+<p>The following section describes how to migrate to Espresso if you have existing test classes
+subclassed from {@link android.test.ActivityInstrumentationTestCase2} and you don't want to rewrite
+them to use JUnit4.</p>
+<p class="note"><strong>Note:</strong> For new UI tests, we strongly recommend that you write your
+test in the JUnit 4 style and use the
+<a href="{@docRoot}reference/android/support/test/rule/ActivityTestRule.html">
+{@code ActivityTestRule}</a> class, instead of
+{@link android.test.ActivityInstrumentationTestCase2}.</p>
     <p>
       If you are subclassing {@link android.test.ActivityInstrumentationTestCase2}
       to create your Espresso test class, you must inject an
@@ -541,40 +581,13 @@
 </pre>
 
 <h2 id="run">Run Espresso Tests on a Device or Emulator</h2>
-
-    <p>
-      To run Espresso tests, you must use the
-      <a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">{@code AndroidJUnitRunner}</a>
-      class provided in the
-      <a href="{@docRoot}tools/testing-support-library/index.html">
-      Android Testing Support Library</a> as your default test runner. The
-      <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plug-in for
-      Gradle</a> provides a default directory ({@code src/androidTest/java}) for you to store the
-      instrumented test classes and test suites that you want to run on a device. The
-      plug-in compiles the test code in that directory and then executes the test app using
-      the configured test runner class.
-    </p>
-
-    <p>
-      To run Espresso tests in your Gradle project:
-    </p>
-
-    <ol>
-      <li>Specify
-        <a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">{@code AndroidJUnitRunner}</a>
-        as the default test instrumentation runner in
-      your {@code build.gradle} file:
-
-  <pre>
-android {
-    defaultConfig {
-        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
-    }
-}</pre>
-      </li>
-      <li>Run your tests from the command-line by calling the the {@code connectedCheck}
-        (or {@code cC}) task:
-  <pre>
-./gradlew cC</pre>
-      </li>
-    </ol>
\ No newline at end of file
+<p>
+You can run Espresso tests from <a href="{@docRoot}sdk/index.html">Android Studio</a> or
+from the command-line. Make sure to specify
+<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
+  {@code AndroidJUnitRunner}</a> as the default instrumentation runner in your project.
+</p>
+<p>
+To run your Espresso test, follow the steps for running instrumented tests
+described in <a href="{@docRoot}training/testing/start/index.html#run-instrumented-tests">
+Getting Started with Testing</a>.</p>
diff --git a/docs/html/training/testing/ui-testing/index.jd b/docs/html/training/testing/ui-testing/index.jd
index d660c60..1aa95a4 100644
--- a/docs/html/training/testing/ui-testing/index.jd
+++ b/docs/html/training/testing/ui-testing/index.jd
@@ -1,5 +1,6 @@
 page.title=Automating User Interface Tests
 page.tags=testing
+page.image=images/testing/UIAutomatorViewer.png
 
 trainingnavtop=true
 startpage=true
diff --git a/docs/html/training/testing/ui-testing/uiautomator-testing.jd b/docs/html/training/testing/ui-testing/uiautomator-testing.jd
index d0defd8..9dac5aa 100644
--- a/docs/html/training/testing/ui-testing/uiautomator-testing.jd
+++ b/docs/html/training/testing/ui-testing/uiautomator-testing.jd
@@ -61,41 +61,21 @@
 </p>
 
 <h2 id="setup">Set Up UI Automator</h2>
-<p>Before you begin using UI Automator, you must:</p>
 
-  <ul>
-      <li>
-        <strong>Install the Android Testing Support Library</strong>. The UI Automator API is
-        located under the {@code com.android.support.test.uiautomator} package. These classes allow
-        you to create tests that use the Espresso testing framework. To learn how to install the
-        library, see <a href="{@docRoot}tools/testing-support-library/index.html#setup">
-        Testing Support Library Setup</a>.
-      </li>
+<p>Before building your UI test with UI Automator, make sure to configure your test source code
+location and project dependencies, as described in
+<a href="{@docRoot}training/testing/start/index.html#config-instrumented-tests">
+Getting Started with Testing</a>.</p>
 
-      <li>
-        <strong>Set up your project structure.</strong> In your Gradle project, the source code for
-        the target app that you want to test is typically placed under the {@code app/src/main}
-        folder. The source code for instrumentation tests, including
-        your UI Automator tests, must be placed under the <code>app/src/androidTest</code> folder.
-        To learn more about setting up your project directory, see
-        <a href="{@docRoot}tools/projects/index.html">Managing Projects</a>.
-      </li>
+<p>In the {@code build.gradle} file of your Android app module, you must set a dependency
+  reference to the UI Automator library:</p>
 
-      <li>
-        <strong>Specify your Android testing dependencies</strong>. In order for the
-        <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plug-in for Gradle</a> to
-        correctly build and run your UI Automator tests, you must specify the following libraries in
-        the {@code build.gradle} file of your Android app module:
-
-        <pre>
+<pre>
 dependencies {
-    androidTestCompile 'com.android.support.test:runner:0.3'
-    androidTestCompile 'com.android.support.test:rules:0.3'
+    ...
     androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
 }
 </pre>
-      </li>
-  </ul>
 
 <p>To optimize your UI Automator testing, you should first inspect the target app’s UI components
 and ensure that they are accessible. These optimization tips are described in the next two
@@ -186,9 +166,21 @@
 
 <h2 id="build">Create a UI Automator Test Class</h2>
 
-<p>To build a UI Automator test, create a class that extends
-{@link android.test.InstrumentationTestCase}. Implement the following programming model in your
-UI Automator test class:</p>
+<p>
+Your UI Automator test class should be written the same way as a JUnit 4 test class. To learn more
+about creating JUnit 4 test classes and using JUnit 4 assertions and annotations, see
+<a href="{@docRoot}training/testing/unit-testing/instrumented-unit-tests.html#build">
+Create an Instrumented Unit Test Class</a>.
+</p>
+<p>Add the {@code &#64;RunWith(AndroidJUnit4.class)} annotation at the beginning of your test class
+definition. You also need to specify the
+<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
+{@code AndroidJUnitRunner}</a> class
+provided in the Android Testing Support Library as your default test runner. This step is described
+in more detail in <a href="#run">Run UI Automator Tests on a Device or Emulator</a>.
+</p>
+
+<p>Implement the following programming model in your UI Automator test class:</p>
 
 <ol>
 <li>Get a
@@ -241,25 +233,56 @@
 and simulate a Home button press:</p>
 
 <pre>
-import android.test.InstrumentationTestCase;
+import org.junit.Before;
+import android.support.test.runner.AndroidJUnit4;
 import android.support.test.uiautomator.UiDevice;
 import android.support.test.uiautomator.By;
+import android.support.test.uiautomator.Until;
+...
 
-public class CalculatorUiTest extends InstrumentationTestCase {
+&#64;RunWith(AndroidJUnit4.class)
+&#64;SdkSuppress(minSdkVersion = 18)
+public class ChangeTextBehaviorTest {
 
+    private static final String BASIC_SAMPLE_PACKAGE
+            = "com.example.android.testing.uiautomator.BasicSample";
+    private static final int LAUNCH_TIMEOUT = 5000;
+    private static final String STRING_TO_BE_TYPED = "UiAutomator";
     private UiDevice mDevice;
 
-    public void setUp() {
+    &#64;Before
+    public void startMainActivityFromHomeScreen() {
         // Initialize UiDevice instance
-        mDevice = UiDevice.getInstance(getInstrumentation());
+        mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
 
         // Start from the home screen
         mDevice.pressHome();
-        mDevice.wait(Until.hasObject(By.pkg(getHomeScreenPackage()).depth(0)),
+
+        // Wait for launcher
+        final String launcherPackage = mDevice.getLauncherPackageName();
+        assertThat(launcherPackage, notNullValue());
+        mDevice.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)),
+                LAUNCH_TIMEOUT);
+
+        // Launch the app
+        Context context = InstrumentationRegistry.getContext();
+        final Intent intent = context.getPackageManager()
+                .getLaunchIntentForPackage(BASIC_SAMPLE_PACKAGE);
+        // Clear out any previous instances
+        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
+        context.startActivity(intent);
+
+        // Wait for the app to appear
+        mDevice.wait(Until.hasObject(By.pkg(BASIC_SAMPLE_PACKAGE).depth(0)),
+                LAUNCH_TIMEOUT);
     }
 }
 </pre>
 
+<p>In the example, the {@code &#64;SdkSuppress(minSdkVersion = 18)} statement helps to ensure that
+  tests will only run on devices with Android 4.3 (API level 18) or higher, as required by the
+  UI Automator framework.</p>
+
 <p>Use the
 <a href="{@docRoot}reference/android/support/test/uiautomator/UiDevice.html#findObject(android.support.test.uiautomator.UiSelector)">{@code findObject()}</a>
 method to retrieve a
@@ -292,8 +315,7 @@
 <h4 id="specifying-selector">Specifying a selector</h4>
 <p>If you want to access a specific UI component in an app, use the
 <a href="{@docRoot}reference/android/support/test/uiautomator/UiSelector.html">{@code UiSelector}</a>
-class. This class represents a query for specific elements in the
-currently displayed UI. </p>
+class. This class represents a query for specific elements in the currently displayed UI. </p>
 
 <p>If more than one matching element is found, the first matching element in the layout hierarchy
 is returned as the target
@@ -306,8 +328,8 @@
 {@code UiAutomatorObjectNotFoundException}</a> is thrown. </p>
 
 <p>You can use the
-<a href="{@docRoot}reference/android/support/test/uiautomator/UiSelector.html#childSelector(android.support.test.uiautomator.UiSelector)">{@code childSelector()}</a>
-method to nest multiple
+<a href="{@docRoot}reference/android/support/test/uiautomator/UiSelector.html#childSelector(android.support.test.uiautomator.UiSelector)">
+{@code childSelector()}</a> method to nest multiple
 <a href="{@docRoot}reference/android/support/test/uiautomator/UiSelector.html">{@code UiSelector}</a>
 instances. For example, the following code example shows how your test might specify a search to
 find the first {@link android.widget.ListView} in the currently displayed UI, then search within that
@@ -489,33 +511,14 @@
 </pre>
 
 <h2 id="run">Run UI Automator Tests on a Device or Emulator</h2>
-<p>UI Automator tests are based on the {@link android.app.Instrumentation} class. The
-<a href="https://developer.android.com/tools/building/plugin-for-gradle.html">
-  Android Plug-in for Gradle</a>
-provides a default directory ({@code src/androidTest/java}) for you to store the instrumented test
-classes and test suites that you want to run on a device. The plug-in compiles the test
-code in that directory and then executes the test app using a test runner class. You are
-strongly encouraged to use the
-<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">{@code AndroidJUnitRunner}</a>
-class provided in the
-<a href="{@docRoot}tools/testing-support-library/index.html">Android Testing Support Library</a>
-as your default test runner. </p>
-
-<p>To run UI Automator tests in your Gradle project:</p>
-
-<ol>
-<li>Specify
-<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">{@code AndroidJUnitRunner}</a>
-as the default test instrumentation runner in your {@code build.gradle} file:
-<pre>
-android {
-    defaultConfig {
-        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
-    }
-}</pre>
-</li>
-<li>Run your tests from the command-line by calling the {@code connectedCheck}
-  (or {@code cC}) task:
-<pre>./gradlew cC</pre>
-</li>
-</ol>
\ No newline at end of file
+<p>
+You can run UI Automator tests from <a href="{@docRoot}sdk/index.html">Android Studio</a> or
+from the command-line. Make sure to specify
+<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
+  {@code AndroidJUnitRunner}</a> as the default instrumentation runner in your project.
+</p>
+<p>
+To run your UI Automator test, follow the steps for running instrumented tests
+described in <a href="{@docRoot}training/testing/start/index.html#run-instrumented-tests">
+Getting Started with Testing</a>.
+</p>
\ No newline at end of file
diff --git a/docs/html/training/testing/unit-testing/index.jd b/docs/html/training/testing/unit-testing/index.jd
index a35ba80..6610761 100644
--- a/docs/html/training/testing/unit-testing/index.jd
+++ b/docs/html/training/testing/unit-testing/index.jd
@@ -1,5 +1,6 @@
 page.title=Building Effective Unit Tests
 page.tags=testing,androidjunitrunner,junit,unit test
+page.image=images/testing/hwtest_junit_success.png
 
 trainingnavtop=true
 startpage=true
diff --git a/docs/html/training/testing/unit-testing/instrumented-unit-tests.jd b/docs/html/training/testing/unit-testing/instrumented-unit-tests.jd
index 9906d8c..38321ee 100644
--- a/docs/html/training/testing/unit-testing/instrumented-unit-tests.jd
+++ b/docs/html/training/testing/unit-testing/instrumented-unit-tests.jd
@@ -13,6 +13,7 @@
     <li>Android 2.2 (API level 8) or higher</li>
     <li><a href="{@docRoot}tools/testing-support-library/index.html">
       Android Testing Support Library</a></li>
+    <li><a href="{@docRoot}tools/studio/index.html">Android Studio (latest version)</a>.</li>
   </ul>
 
   <h2>This lesson teaches you to</h2>
@@ -27,8 +28,10 @@
 
   <ul>
     <li>
-<a href="https://github.com/googlesamples/android-testing/tree/master/unittesting/BasicUnitAndroidTest"
+<a href="https://github.com/googlesamples/android-testing/tree/master/unit/BasicUnitAndroidTest"
 class="external-link">Instrumented Unit Tests Code Samples</a></li>
+    <li><a href="https://www.code-labs.io/codelabs/android-studio-testing/index.html?index=..%2F..%2Findex#0"
+class="external-link">Unit and UI Testing in Android Studio (codelab)</a></li>
   </ul>
 </div>
 </div>
@@ -46,44 +49,10 @@
 </p>
 
 <h2 id="setup">Set Up Your Testing Environment</h2>
-<p>Before building instrumented unit tests, you must:</p>
-
-  <ul>
-      <li>
-        <strong>Install the Android Testing Support Library</strong>. The
-        <a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
-        {@code AndroidJUnitRunner}</a> API, located under the
-        {@code com.android.support.test.runner} package, allows you to
-        create and run instrumented unit tests.  To learn how to install the
-        library, see <a href="{@docRoot}tools/testing-support-library/index.html#setup">
-        Testing Support Library Setup</a>.
-      </li>
-
-      <li>
-        <strong>Set up your project structure.</strong> In your Gradle project, the source code for
-        the target app that you want to test is typically placed under the {@code app/src/main/java}
-        folder. The source code for instrumentatation tests, including your unit tests, must be
-        placed under the <code>app/src/androidTest/java</code> folder.
-        To learn more about setting up your project directory, see
-        <a href="{@docRoot}tools/projects/index.html">Managing Projects</a>.
-      </li>
-
-      <li>
-        <strong>Specify your Android testing dependencies</strong>. In order for the
-        <a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plug-in for Gradle</a> to
-        correctly build and run your instrumented unit tests, you must specify the following
-        libraries in the {@code build.gradle} file of your Android app module:
-
-        <pre>
-dependencies {
-    androidTestCompile 'com.android.support.test:runner:0.3'
-    androidTestCompile 'com.android.support.test:rules:0.3'
-    // Set this dependency if you want to use Hamcrest matching
-    androidTestCompile 'org.hamcrest:hamcrest-library:1.1'
-}
-</pre>
-      </li>
-  </ul>
+<p>Before building your instrumented unit test, make sure to configure your test source code
+location and project dependencies, as described in
+<a href="{@docRoot}training/testing/start/index.html#config-instrumented-tests">
+Getting Started with Testing</a>.</p>
 
 <h2 id="build">Create an Instrumented Unit Test Class</h2>
 <p>
@@ -91,13 +60,13 @@
 creating JUnit 4 test classes and using JUnit 4 assertions and annotations, see
 <a href="local-unit-tests.html#build">Create a Local Unit Test Class</a>.
 </p>
-<p>To create an instrumented JUnit 4 test class, add the {@code @RunWith(AndroidJUnit4.class)}
+<p>To create an instrumented JUnit 4 test class, add the {@code &#64;RunWith(AndroidJUnit4.class)}
 annotation at the beginning of your test class definition. You also need to specify the
 <a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
 {@code AndroidJUnitRunner}</a> class
 provided in the Android Testing Support Library as your default test runner. This step is described
-in more detail in <a href="#run">Run Instrumented Unit Tests</a>.
-</p>
+in more detail in <a href="{@docRoot}training/testing/start/index.html#run-instrumented-tests">
+Getting Started with Testing</p>
 
 <p>The following example shows how you might write an instrumented unit test to test that
 the {@link android.os.Parcelable} interface is implemented correctly for the
@@ -114,6 +83,7 @@
 import static org.junit.Assert.assertThat;
 
 &#64;RunWith(AndroidJUnit4.class)
+&#64;SmallTest
 public class LogHistoryAndroidUnitTest {
 
     public static final String TEST_STRING = "This is a string";
@@ -168,8 +138,8 @@
 class="external-link">{@code RunWith}</a> and
 <a href="http://junit.sourceforge.net/javadoc/org/junit/runners/Suite.html"
 class="external-link">{@code Suite}</a> classes. In your test suite, add the
-{@code @RunWith(Suite.class)} and the {@code @Suite.SuitClasses()} annotations. In
-the {@code @Suite.SuiteClasses()} annotation, list the individual test classes or test
+{@code &#64;RunWith(Suite.class)} and the {@code &#64;Suite.SuitClasses()} annotations. In
+the {@code &#64;Suite.SuiteClasses()} annotation, list the individual test classes or test
 suites as arguments.
 </p>
 
@@ -194,57 +164,7 @@
 
 <h2 id="run">Run Instrumented Unit Tests</h2>
 <p>
-The
-<a href="https://developer.android.com/tools/building/plugin-for-gradle.html">
-  Android Plug-in for Gradle</a>
-provides a default directory ({@code src/androidTest/java}) for you to store the instrumented unit
-and integration test classes and test suites that you want to run on a device. The plug-in compiles
-the test code in that directory and then executes the test app using a test runner class. You must
-set the
-<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
-{@code AndroidJUnitRunner}</a> class provided in the
-<a href="{@docRoot}tools/testing-support-library/index.html">Android Testing Support Library</a>
-as your default test runner.</p>
-</p>
-
-<p>To specify
-<a href="{@docRoot}reference/android/support/test/runner/AndroidJUnitRunner.html">
-{@code AndroidJUnitRunner}</a> as the default test instrumentation runner, add the following
-setting in your {@code build.gradle} file:</p>
-<pre>
-android {
-    defaultConfig {
-        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
-    }
-}
-</pre>
-
-<h3 id="run-from-Android-Studio">Running instrumented unit tests from Android Studio</h3>
-<p>
-To run instrumented unit tests in your Gradle project from Android Studio:
-</p>
-<ol>
-<li>Open the <strong>Build Variants</strong> window by clicking the left-hand tab, then set the
-test artifact to <em>Android Instrumentation Tests</em>.
-</li>
-<li>In the <strong>Project</strong> window, drill down to your unit test class or method, then
-  right-click and run it using the Android Test configuration.
-</li>
-</ol>
-
-<p>Android Studio displays the results of the unit test execution in the <strong>Run</strong>
-window.</p>
-
-<h3 id="run-from-commandline">Running instrumented unit tests from the command-line</h3>
-
-<p>To run instrumented unit tests in your Gradle project from the command-line, call the
-  {@code connectedCheck} (or {@code cC}) task:</p>
-
-<pre>
-./gradlew cC
-</pre>
-
-<p>You can find the generated HTML test result reports in the
-{@code <path_to_your_project>/app/build/outputs/reports/androidTests/connected/} directory,
-and the corresponding XML files in the
-{@code <path_to_your_project>/app/build/outputs/androidTest-results/connected/} directory.</p>
\ No newline at end of file
+To run your test, follow the steps for running instrumented tests
+described in <a href="{@docRoot}training/testing/start/index.html#run-instrumented-tests">
+Getting Started with Testing</a>.
+</p>
\ No newline at end of file
diff --git a/docs/html/training/testing/unit-testing/local-unit-tests.jd b/docs/html/training/testing/unit-testing/local-unit-tests.jd
index 8221a6d..893d957 100644
--- a/docs/html/training/testing/unit-testing/local-unit-tests.jd
+++ b/docs/html/training/testing/unit-testing/local-unit-tests.jd
@@ -10,7 +10,7 @@
   <h2>Dependencies and Prerequisites</h2>
 
   <ul>
-    <li>Android Plug-in for Gradle 1.1.0 or higher</li>
+    <li><a href="{@docRoot}tools/studio/index.html">Android Studio (latest version)</a>.</li>
   </ul>
 
   <h2>This lesson teaches you to</h2>
@@ -25,8 +25,10 @@
 
   <ul>
     <li>
-<a href="https://github.com/googlesamples/android-testing/tree/master/unittesting/BasicSample"
+<a href="https://github.com/googlesamples/android-testing/tree/master/unit/BasicSample"
 class="external-link">Local Unit Tests Code Samples</a></li>
+    <li><a href="https://codelabs.developers.google.com/codelabs/android-testing/index.html?index=..%2F..%2Findex#0"
+class="external-link">Android Testing Codelab</a></li>
   </ul>
 </div>
 </div>
@@ -36,47 +38,15 @@
 you avoid the overhead of loading the target app and unit test code onto a physical device or
 emulator every time your test is run. Consequently, the execution time for running your unit
 test is greatly reduced. With this approach, you normally use a mocking framework, like
-<a href="https://code.google.com/p/mockito/" class="external-link">Mockito</a>, to fulfill any
+<a href="https://github.com/mockito/mockito" class="external-link">Mockito</a>, to fulfill any
 dependency relationships.</p>
 
-<p><a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plug-in for Gradle</a>
-version 1.1.0 and higher allows you to create a source directory ({@code src/test/java}) in your
-project to store JUnit tests that you want to run on a local machine. This feature improves your
-project organization by letting you group your unit tests together into a single source set. You
-can run the tests from Android Studio or the command-line, and the plugin executes them on the
-local Java Virtual Machine (JVM) on your development machine. </p>
-
 <h2 id="setup">Set Up Your Testing Environment</h2>
-<p>Before building local unit tests, you must:</p>
+<p>Before building your local unit test, make sure to configure your test source code location and
+project dependencies, as described in
+<a href="{@docRoot}training/testing/start/index.html#config-local-tests">
+Getting Started with Testing</a>.</p>
 
-  <ul>
-      <li>
-        <strong>Set up your project structure.</strong> In your Gradle project, the source code for
-        the target app that you want to test is typically placed under the {@code app/src/main/java}
-        folder. The source code for your local unit tests must be placed under the
-        <code>app/src/test/java</code> folder.
-        To learn more about setting up your project directory, see
-        <a href="#run">Run Local Unit Tests</a> and
-        <a href="{@docRoot}tools/projects/index.html">Managing Projects</a>.
-      </li>
-
-      <li>
-        <strong>Specify your Android testing dependencies</strong>. In order to use JUnit 4 and
-        Mockito with your local unit tests, specify the following libraries in
-        the {@code build.gradle} file of your Android app module:
-
-        <pre>
-dependencies {
-    // Unit testing dependencies
-    testCompile 'junit:junit:4.12'
-    // Set this dependency if you want to use Mockito
-    testCompile 'org.mockito:mockito-core:1.10.19'
-    // Set this dependency if you want to use Hamcrest matching
-    androidTestCompile 'org.hamcrest:hamcrest-library:1.1'
-}
-</pre>
-      </li>
-  </ul>
 
 <h2 id="build">Create a Local Unit Test Class</h2>
 <p>Your local unit test class should be written as a JUnit 4 test class.
@@ -89,7 +59,7 @@
 {@code junit.extensions} package.</p>
 
 <p>To create a basic JUnit 4 test class, create a Java class that contains one or more test methods.
-A test method begins with the {@code @Test} annotation and contains the code to exercise
+A test method begins with the {@code &#64;Test} annotation and contains the code to exercise
 and verify a single functionality in the component that you want to test.</p>
 
 <p>The following example shows how you might implement a local unit test class. The test method
@@ -116,44 +86,10 @@
 <a href="http://junit.org/javadoc/latest/org/junit/Assert.html" class="external-link">
 junit.Assert</a> methods to perform validation checks (or <em>assertions</em>) to compare the state
 of the component under test against some expected value. To make tests more readable, you
-can use <a href="https://code.google.com/p/hamcrest/wiki/Tutorial" class="external-link">
+can use <a href="https://github.com/hamcrest" class="external-link">
 Hamcrest matchers</a> (such as the {@code is()} and {@code equalTo()} methods) to match the
 returned result against the expected result.</p>
 
-<p>In your JUnit 4 test class, you can use annotations to call out sections in your test code for
-special processing, such as:</p>
-
-<ul>
-<li>
-{@code @Before}: Use this annotation to specify a block of code with test setup operations. This
-code block will be invoked before each test. You can have multiple {@code @Before} methods but
-the order which these methods are called is not fixed.
-</li>
-<li>
-{@code @After}: This annotation specifies a block of code with test tear-down operations. This
-code block will be called after every test method. You can define multiple {@code @After}
-operations in your test code. Use this annotation to release any resources from memory.
-</li>
-<li>
-{@code @Test}: Use this annotation to mark a test method. A single test class can contain
-multiple test methods, each prefixed with this annotation.
-</li>
-<li>
-{@code @BeforeClass}: Use this annotation to specify static methods to be invoked only once per
-test class. This testing step is useful for expensive operations such as connecting to a database.
-</li>
-<li>
-{@code @AfterClass}: Use this annotation to specify static methods to be invoked only after all
-tests in the class have been run. This testing step is useful for releasing any resources allocated
-in the {@code @BeforeClass} block.
-</li>
-<li>
-{@code @Test(timeout=<milliseconds>)}: Specifies a timeout period for the test. If the
-test starts but does not complete within the given timeout period, it automatically fails. You must
-specify the timeout period in milliseconds, for example: {@code @Test(timeout=5000)}.
-</li>
-</ul>
-
 <h3 id="mocking-dependencies">Mocking Android dependencies</h3>
 <p>
 By default, the <a href="{@docRoot}tools/building/plugin-for-gradle.html">
@@ -166,7 +102,7 @@
 your component interacts with a dependency in an expected way. By substituting Android dependencies
 with mock objects, you can isolate your unit test from the rest of the Android system while
 verifying that the correct methods in those dependencies are called. The
-<a href="https://code.google.com/p/mockito/" class="external-link">Mockito</a> mocking framework
+<a href="https://github.com/mockito/mockito" class="external-link">Mockito</a> mocking framework
 for Java (version 1.9.5 and higher) offers compatibility with Android unit testing.
 With Mockito, you can configure mock objects to return some specific value when invoked.</p>
 
@@ -179,11 +115,11 @@
 <a href="#setup">Set Up Your Testing Environment</a>.
 </li>
 <li>At the beginning of your unit test class definition, add the
-{@code @RunWith(MockitoJUnitRunner.class)} annotation. This annotation tells the Mockito test
+{@code &#64;RunWith(MockitoJUnitRunner.class)} annotation. This annotation tells the Mockito test
 runner to validate that your usage of the framework is correct and simplifies the initialization of
 your mock objects.
 </li>
-<li>To create a mock object for an Android dependency, add the {@code @Mock} annotation before
+<li>To create a mock object for an Android dependency, add the {@code &#64;Mock} annotation before
 the field declaration.</li>
 <li>To stub the behavior of the dependency, you can specify a condition and return
 value when the condition is met by using the {@code when()} and {@code thenReturn()} methods.
@@ -234,69 +170,14 @@
 <a href="http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html"
 class="external-link">Mockito API reference</a> and the
 {@code SharedPreferencesHelperTest} class in the
-<a href="https://github.com/googlesamples/android-testing/tree/master/unittesting/BasicSample"
+<a href="https://github.com/googlesamples/android-testing/tree/master/unit/BasicSample"
 class="external-link">sample code</a>.
 </p>
 
 <h2 id="run">Run Local Unit Tests</h2>
 <p>
-The Android Plug-in for Gradle provides a default directory ({@code src/test/java}) for you to
-store unit test classes that you want to run on a local JVM. The plug-in compiles the test code in
-that directory and then executes the test app locally using the default test runner class.
+To run your tests, follow the steps for running local unit tests
+described in <a href="{@docRoot}training/testing/start/index.html#run-local-tests">
+Getting Started with Testing</a>.
 </p>
-<p>
-As with production code, you can create unit tests for a
-<a href="http://developer.android.com/tools/building/configuring-gradle.html#workBuildVariants"
-class="external-link">specific flavor or build type</a>. You should keep unit tests in a test
-source tree location that corresponds to your production source tree, such as:
 
-<table>
-<tr>
-<th>Path to Production Class</th>
-<th>Path to Local Unit Test Class</th>
-</tr>
-<tr>
-<td>{@code src/main/java/Foo.java}</td>
-<td>{@code src/test/java/FooTest.java}</td>
-</tr>
-<tr>
-<td>{@code src/debug/java/Foo.java}</td>
-<td>{@code src/testDebug/java/FooTest.java}</td>
-</tr>
-<tr>
-<td>{@code src/myFlavor/java/Foo.java}</td>
-<td>{@code src/testMyFlavor/java/FooTest.java}</td>
-</tr>
-</table>
-
-<h3 id="run-from-Android-Studio">Running local unit tests from Android Studio</h3>
-<p>
-To run local unit tests in your Gradle project from Android Studio:
-</p>
-<ol>
-<li>In the <strong>Project</strong> window, right click on the project and synchronize your project.
-</li>
-<li>Open the <strong>Build Variants</strong> window by clicking the left-hand tab, then change the
-test artifact to <em>Unit Tests</em>.
-</li>
-<li>In the <strong>Project</strong> window, drill down to your unit test class or method, then
-right-click and run it.
-</li>
-</ol>
-
-<p>Android Studio displays the results of the unit test execution in the <strong>Run</strong>
-window.</p>
-
-<h3 id="run-from-commandline">Running local unit tests from the command-line</h3>
-
-<p>To run local unit tests in your Gradle project from the command-line, call the {@code test} task
-command with the {@code --continue} option.</p>
-
-<pre>
-./gradlew test --continue
-</pre>
-
-<p>If there are failing tests, the command will display links to HTML reports (one per build
-variant). You can find the generated HTML test result reports in the
-{@code <path_to_your_project>/app/build/reports/tests/} directory, and the corresponding XML
-files in the {@code <path_to_your_project>/app/build/test-results/} directory.</p>
\ No newline at end of file
diff --git a/docs/html/training/training_toc.cs b/docs/html/training/training_toc.cs
index 2963345..7561254 100644
--- a/docs/html/training/training_toc.cs
+++ b/docs/html/training/training_toc.cs
@@ -37,35 +37,6 @@
 
       <li class="nav-section">
         <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>training/basics/actionbar/index.html"
-             description=
-             "The action bar is one of the most important design elements you can implement for your
-app's activities. Although first introduced with API level 11, you can use the Support Library to
-include the action bar on devices running Android 2.1 or higher."
-            >Adding the Action Bar</a>
-        </div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>training/basics/actionbar/setting-up.html">
-            Setting Up the Action Bar
-          </a>
-          </li>
-          <li><a href="<?cs var:toroot ?>training/basics/actionbar/adding-buttons.html">
-            Adding Action Buttons
-          </a>
-          </li>
-          <li><a href="<?cs var:toroot ?>training/basics/actionbar/styling.html">
-            Styling the Action Bar
-          </a>
-          </li>
-          <li><a href="<?cs var:toroot ?>training/basics/actionbar/overlaying.html">
-            Overlaying the Action Bar
-          </a>
-          </li>
-        </ul>
-      </li>
-
-      <li class="nav-section">
-        <div class="nav-section-header">
           <a href="<?cs var:toroot ?>training/basics/supporting-devices/index.html"
              description=
              "How to build your app with alternative resources that provide an
@@ -91,7 +62,6 @@
       <li class="nav-section">
         <div class="nav-section-header">
           <a href="<?cs var:toroot ?>training/basics/activity-lifecycle/index.html"
-             es-lang=""
              ja-lang="アクティビティのライフサイクル 管理"
              ko-lang="액티비티 수명 주기 관리하기"
              pt-br-lang="Como gerenciar o ciclo de vida da atividade"
@@ -105,7 +75,6 @@
         </div>
         <ul>
           <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/starting.html"
-             es-lang=""
              ja-lang="アクティビティを開始する"
              ko-lang="액티비티 시작하기"
              pt-br-lang="Iniciando uma atividade"
@@ -115,19 +84,11 @@
             Starting an Activity
           </a>
           </li>
-          <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/pausing.html"
-             es-lang=""
-             ja-lang=""
-             ko-lang=""
-             pt-br-lang=""
-             ru-lang=""
-             zh-cn-lang=""
-             zh-tw-lang="">
+          <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/pausing.html">
             Pausing and Resuming an Activity
           </a>
           </li>
           <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/stopping.html"
-             es-lang=""
              ja-lang="アクティビティの一時停止と再開"
              ko-lang="액티비티 일시정지 및 재개하기"
              pt-br-lang="Pausando e reiniciando uma atividade"
@@ -138,7 +99,6 @@
           </a>
           </li>
           <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/recreating.html"
-             es-lang=""
              ja-lang="アクティビティを再作成する"
              ko-lang="액티비티 재생성하기"
              pt-br-lang="Recriando uma atividade"
@@ -179,7 +139,6 @@
 
       <li class="nav-section">
         <div class="nav-section-header"><a href="<?cs var:toroot?>training/basics/data-storage/index.html"
-             es-lang=""
              ja-lang="データの保存"
              ko-lang="데이터 저장하기"
              pt-br-lang="Salvando dados"
@@ -193,7 +152,6 @@
         </div>
         <ul>
           <li><a href="<?cs var:toroot ?>training/basics/data-storage/shared-preferences.html"
-             es-lang=""
              ja-lang="キー値セットを保存する"
              ko-lang="키-값 세트 저장하기"
              pt-br-lang="Salvando conjuntos de valor-chave"
@@ -204,7 +162,6 @@
           </a>
           </li>
           <li><a href="<?cs var:toroot ?>training/basics/data-storage/files.html"
-             es-lang=""
              ja-lang="ファイルを保存する"
              ko-lang="파일 저장하기"
              pt-br-lang="Salvando arquivos"
@@ -215,7 +172,6 @@
           </a>
           </li>
           <li><a href="<?cs var:toroot ?>training/basics/data-storage/databases.html"
-             es-lang=""
              ja-lang="SQL データベースにデータを保存する"
              ko-lang="SQL 데이터베이스에 데이터 저장하기"
              pt-br-lang="Salvando dados em bancos de dados do SQL"
@@ -231,7 +187,6 @@
       <li class="nav-section">
         <div class="nav-section-header">
           <a href="<?cs var:toroot ?>training/basics/intents/index.html"
-             es-lang=""
              ja-lang="他のアプリとの相互操作"
              ko-lang="액티비티 수명 주기 관리하기"
              pt-br-lang="Interagindo com outros aplicativos"
@@ -246,7 +201,6 @@
         </div>
         <ul>
           <li><a href="<?cs var:toroot ?>training/basics/intents/sending.html"
-             es-lang=""
              ja-lang="別のアプリにユーザーを送る"
              ko-lang="다른 앱으로 사용자 보내기"
              pt-br-lang="Enviando o usuário para outro aplicativo"
@@ -257,7 +211,6 @@
           </a>
           </li>
           <li><a href="<?cs var:toroot ?>training/basics/intents/result.html"
-             es-lang=""
              ja-lang="アクティビティから結果を取得する"
              ko-lang="액티비티로부터 결과 가져오기"
              pt-br-lang="Obtendo resultados de uma atividade"
@@ -268,7 +221,6 @@
           </a>
           </li>
           <li><a href="<?cs var:toroot ?>training/basics/intents/filters.html"
-             es-lang=""
              ja-lang="他のアプリからのアクティビティの開始を許可する"
              ko-lang="다른 앱이 자신의 액티비티를 시작하도록 허용하기"
              pt-br-lang="Permitindo que outros aplicativos iniciem sua atividade"
@@ -280,6 +232,30 @@
           </li>
         </ul>
       </li>
+      <li class="nav-section">
+        <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>training/permissions/index.html"
+             description=
+             "How to declare that your app needs access to features and
+             resources outside of its 'sandbox', and how to request those
+             privileges at runtime."
+            >Working with System Permissions</a>
+        </div>
+        <ul>
+          <li><a href="<?cs var:toroot ?>training/permissions/declaring.html">
+            Declaring Permissions
+          </a>
+          </li>
+          <li><a href="<?cs var:toroot ?>training/permissions/requesting.html">
+            Requesting Permissions at Run Time
+          </a>
+          </li>
+          <li><a href="<?cs var:toroot ?>training/permissions/best-practices.html">
+            Best Practices for Runtime Permissions
+          </a>
+          </li>
+        </ul>
+      </li>
 
     </ul>
   </li><!-- end getting started -->
@@ -676,14 +652,18 @@
 
       <li class="nav-section">
         <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>training/cloudsync/index.html"
+          <a href="<?cs var:toroot ?>training/backup/index.html"
              description=
              "How to sync and back up app and user data to remote web services in the
               cloud and how to restore the data back to multiple devices."
             >Syncing to the Cloud</a>
         </div>
         <ul>
-          <li><a href="<?cs var:toroot ?>training/cloudsync/backupapi.html">
+          <li><a href="<?cs var:toroot ?>training/backup/autosyncapi.html">
+            Configuring Auto Backup
+          </a>
+          </li>
+          <li><a href="<?cs var:toroot ?>training/backup/backupapi.html">
             Using the Backup API
           </a>
           </li>
@@ -781,6 +761,11 @@
             </a>
           </li>
           <li>
+            <a href="<?cs var:toroot ?>training/location/change-location-settings.html">
+            Changing Location Settings
+            </a>
+          </li>
+          <li>
             <a href="<?cs var:toroot ?>training/location/receive-location-updates.html">
             Receiving Location Updates
             </a>
@@ -811,7 +796,7 @@
     <div class="nav-section-header">
       <a href="<?cs var:toroot ?>training/building-userinfo.html">
       <span class="small">Building Apps with</span><br/>
-              Contacts &amp; Sign-In
+              User Info &amp; Sign-In
       </a>
     </div>
     <ul>
@@ -1009,6 +994,21 @@
            "How to detect location data on Android Wear devices."
           >Detecting Location</a>
       </li>
+
+      <li>
+        <a href="<?cs var:toroot ?>training/articles/wear-permissions.html"
+           description=
+           "How to request permissions on Android Wear devices."
+          >Requesting Permissions</a>
+      </li>
+
+      <li>
+        <a href="<?cs var:toroot ?>training/wearables/wearable-sounds.html"
+           description=
+           "How to use the speaker on Android Wear devices."
+          >Using the Speaker</a>
+      </li>
+
     </ul>
   </li>
   <!-- End Building for wearables -->
@@ -1084,6 +1084,14 @@
                ja-lang="再生中カードを表示する">
               Displaying a Now Playing Card</a>
           </li>
+          <li>
+            <a href="<?cs var:toroot ?>training/tv/playback/guided-step.html">
+              Adding a Guided Step</a>
+          </li>
+          <li>
+            <a href="<?cs var:toroot ?>training/tv/playback/options.html">
+              Enabling Background Playback</a>
+          </li>
         </ul>
       </li>
 
@@ -1193,7 +1201,11 @@
       </a>
       </li>
       <li><a href="<?cs var:toroot ?>training/enterprise/work-policy-ctrl.html">
-        Building a Work Policy Controller
+        Building a Device Policy Controller
+      </a>
+      </li>
+      <li><a href="<?cs var:toroot ?>training/enterprise/cosu.html">
+        Configuring Corporate-Owned, Single-Use Devices
       </a>
       </li>
     </ul>
@@ -1311,6 +1323,8 @@
               </li>
           </ul>
       </li>
+
+
       <li class="nav-section">
         <div class="nav-section-header">
             <a href="<?cs var:toroot ?>training/swipe/index.html"
@@ -1329,6 +1343,8 @@
             </li>
         </ul>
       </li>
+
+
       <li class="nav-section">
         <div class="nav-section-header">
           <a href="<?cs var:toroot ?>training/search/index.html"
@@ -1367,17 +1383,30 @@
           </a>
           </li>
           <li><a href="<?cs var:toroot ?>training/app-indexing/enabling-app-indexing.html">
-            Specifying  App Content for Indexing
+            Specifying App Content for Indexing
           </a>
           </li>
         </ul>
-      </li>
-    </ul>
   </li>
+
+      <li>
+        <a href="<?cs var:toroot ?>training/articles/assistant.html"
+           description=
+           "Support contextually relevant actions through the Assist API."
+          >Optimizing Content for the Assistant</a>
+      </li>
+       <li class="nav-section">
+        <div class="nav-section">
+          <a href="<?cs var:toroot ?>training/app-links/index.html"
+             description=
+             "How to enable the system to handle web requests by taking the user directly
+             to your app instead of your website."
+            >Handling App Links</a>
+        </div>
+      </li>
   <!-- End Interaction and Engagement -->
 
-
-
+</ul>
 
   <li class="nav-section">
     <div class="nav-section-header">
@@ -1426,6 +1455,48 @@
 
       <li class="nav-section">
         <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>training/appbar/index.html"
+             description=
+             "How to use the support library's toolbar widget to implement an
+             app bar that displays properly on a wide range of devices."
+            >Adding the App Bar</a>
+        </div>
+        <ul>
+          <li><a href="<?cs var:toroot ?>training/appbar/setting-up.html"
+            >Setting Up the App Bar</a>
+          </li>
+          <li><a href="<?cs var:toroot ?>training/appbar/actions.html"
+            >Adding and Handling Actions</a>
+          </li>
+          <li><a href="<?cs var:toroot ?>training/appbar/up-action.html"
+            >Adding an Up Action</a>
+          </li>
+          <li><a href="<?cs var:toroot ?>training/appbar/action-views.html"
+            >Action Views and Action Providers</a>
+          </li>
+        </ul>
+      </li>
+
+            <li class="nav-section">
+        <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>training/snackbar/index.html"
+             description=
+             "How to use the support library's Snackbar widget to display a
+             brief pop-up message."
+            >Showing Pop-Up Messages</a>
+        </div>
+        <ul>
+          <li><a href="<?cs var:toroot ?>training/snackbar/showing.html"
+            >Building and Displaying a Pop-Up Message</a>
+          </li>
+          <li><a href="<?cs var:toroot ?>training/snackbar/action.html"
+            >Adding an Action to a Message</a>
+          </li>
+        </ul>
+      </li>
+
+      <li class="nav-section">
+        <div class="nav-section-header">
           <a href="<?cs var:toroot ?>training/custom-views/index.html"
              description=
              "How to build custom UI widgets that are interactive and smooth."
@@ -1496,6 +1567,10 @@
             Developing Accessibility Services
           </a>
           </li>
+          <li><a href="<?cs var:toroot ?>training/accessibility/testing.html">
+            Accessibility Testing Checklist
+          </a>
+          </li>
         </ul>
       </li>
 
@@ -1536,34 +1611,113 @@
           <a href="<?cs var:toroot ?>training/material/index.html"
              description=
              "How to implement material design on Android."
+            zh-cn-lang="面向开发者的材料设计"
+            zh-tw-lang="開發人員材料設計"
+            ja-lang="マテリアル デザインでのアプリ作成"
+            es-lang="Crear aplicaciones con Material Design"
+            pt-br-lang="Material Design para desenvolvedores"
+            ko-lang="개발자를 위한 머티리얼 디자인"
+            ru-lang="Создание приложений с помощью Material Design"
+            in-lang="Desain Bahan untuk Pengembang"
+            vi-lang="Material Design cho Nhà phát triển"
             >Creating Apps with Material Design</a>
         </div>
         <ul>
-          <li><a href="<?cs var:toroot ?>training/material/get-started.html">
+          <li><a href="<?cs var:toroot ?>training/material/get-started.html"
+            zh-cn-lang="入门指南"
+            zh-tw-lang="開始使用"
+            ja-lang="スタート ガイド"
+            es-lang="Comencemos"
+            pt-br-lang="Como iniciar"
+            ko-lang="시작하기"
+            ru-lang="Начало работы"
+            in-lang="Memulai"
+            vi-lang="Bắt đầu"
+            >
             Getting Started
           </a>
           </li>
-          <li><a href="<?cs var:toroot ?>training/material/theme.html">
+          <li><a href="<?cs var:toroot ?>training/material/theme.html"
+            zh-cn-lang="使用材料主题"
+            zh-tw-lang="使用材料設計風格"
+            ja-lang="マテリアル テーマの使用"
+            es-lang="Usar el tema Material"
+            pt-br-lang="Como usar o tema do Material"
+            ko-lang="머티어리얼 테마 사용"
+            ru-lang="Использование темы Material Design"
+            in-lang="Menggunakan Tema Bahan"
+            vi-lang="Sử dụng Chủ đề Material"
+            >
             Using the Material Theme
           </a>
           </li>
-          <li><a href="<?cs var:toroot ?>training/material/lists-cards.html">
+          <li><a href="<?cs var:toroot ?>training/material/lists-cards.html"
+            zh-cn-lang="创建列表与卡片"
+            zh-tw-lang="建立清單和卡片"
+            ja-lang="リストとカードの作成"
+            es-lang="Crear listas y tarjetas"
+            pt-br-lang="Como criar listas e cartões"
+            ko-lang="목록 및 카드 생성"
+            ru-lang="Создание списков и подсказок"
+            in-lang="Membuat Daftar dan Kartu"
+            vi-lang="Tạo Danh sách và Thẻ"
+            >
             Creating Lists and Cards
           </a>
           </li>
-          <li><a href="<?cs var:toroot ?>training/material/shadows-clipping.html">
+          <li><a href="<?cs var:toroot ?>training/material/shadows-clipping.html"
+            zh-cn-lang="定义阴影与裁剪视图"
+            zh-tw-lang="定義陰影和裁剪檢視"
+            ja-lang="シャドウとクリッピング ビューの定義"
+            es-lang="Definir vistas de recorte y sombras"
+            pt-br-lang="Como definir sombras e recortar visualizações"
+            ko-lang="그림자 정의 및 뷰 클리핑"
+            ru-lang="Определение теней и обрезка представлений"
+            in-lang="Mendefinisikan Bayangan dan Memangkas Tampilan"
+            vi-lang="Định nghĩa Đổ bóng và Dạng xem Cắt hình"
+            >
             Defining Shadows and Clipping Views
           </a>
           </li>
-          <li><a href="<?cs var:toroot ?>training/material/drawables.html">
+          <li><a href="<?cs var:toroot ?>training/material/drawables.html"
+            zh-cn-lang="使用 Drawables"
+            zh-tw-lang="使用可繪項目"
+            ja-lang="ドローアブルの使用"
+            es-lang="Trabajar con interfaces dibujables"
+            pt-br-lang="Como trabalhar com desenháveis"
+            ko-lang="Drawable 사용"
+            ru-lang="Работа с элементами дизайна"
+            in-lang="Bekerja dengan Drawable"
+            vi-lang="Làm việc với Nội dung vẽ được"
+            >
             Working with Drawables
           </a>
           </li>
-          <li><a href="<?cs var:toroot ?>training/material/animations.html">
+          <li><a href="<?cs var:toroot ?>training/material/animations.html"
+            zh-cn-lang="定义定制动画"
+            zh-tw-lang="定義自訂動畫"
+            ja-lang="カスタム アニメーションの定義"
+            es-lang="Definir animaciones personalizadas"
+            pt-br-lang="Como definir animações personalizadas"
+            ko-lang="사용자지정 애니메이션 정의"
+            ru-lang="Определение настраиваемой анимации"
+            in-lang="Mendefinisikan Animasi Custom"
+            vi-lang="Định nghĩa Hoạt hình Tùy chỉnh"
+            >
             Defining Custom Animations
           </a>
           </li>
-          <li><a href="<?cs var:toroot ?>training/material/compatibility.html">
+          <li><a href="<?cs var:toroot ?>training/material/compatibility.html"
+            zh-cn-lang="维护兼容性"
+            zh-tw-lang="維持相容性"
+            ja-lang="互換性の維持"
+            es-lang="Mantener la compatibilidad"
+            pt-br-lang="Como manter a compatibilidade"
+            ko-lang="호환성 유지"
+            ru-lang="Обеспечение совместимости"
+            in-lang="Mempertahankan Kompatibilitas"
+            vi-lang="Duy trì Tính tương thích"
+            >
             Maintaining Compatibility
           </a>
           </li>
@@ -1793,6 +1947,7 @@
           </li>
         </ul>
       </li>
+
       <li class="nav-section">
         <div class="nav-section-header">
           <a href="<?cs var:toroot ?>training/monitoring-device-state/index.html"
@@ -1806,6 +1961,44 @@
             </a>
         </div>
         <ul>
+
+          <li class="nav-section">
+            <div class="nav-section-header">
+              <a href="<?cs var:toroot ?>training/performance/battery/network/index.html">
+                Reducing Network Battery Drain
+              </a>
+            </div>
+            <ul>
+              <li><a href="<?cs var:toroot ?>training/performance/battery/network/gather-data.html">
+                Collecting Network Traffic Data
+              </a>
+              </li>
+              <li><a href="<?cs var:toroot ?>training/performance/battery/network/analyze-data.html">
+                Analyzing Network Traffic Data
+              </a>
+              </li>
+              <li><a href="<?cs var:toroot ?>training/performance/battery/network/action-user-traffic.html">
+                Optimizing User-Initiated Network Use
+              </a>
+              </li>
+              <li><a href="<?cs var:toroot ?>training/performance/battery/network/action-app-traffic.html">
+                Optimizing App-Initiated Network Use
+              </a>
+              </li>
+              <li><a href="<?cs var:toroot ?>training/performance/battery/network/action-server-traffic.html">
+                Optimizing Server-Initiated Network Use
+              </a>
+              </li>
+              <li><a href="<?cs var:toroot ?>training/performance/battery/network/action-any-traffic.html">
+                Optimizing General Network Use
+              </a>
+              </li>
+            </ul>
+          </li> <!-- End of Reducing Network Battery Drain -->
+
+          <li><a href="<?cs var:toroot ?>training/monitoring-device-state/doze-standby.html"
+            >Optimizing for Doze and App Standby</a>
+          </li>
           <li><a href="<?cs var:toroot ?>training/monitoring-device-state/battery-monitoring.html"
             zh-cn-lang="监控电池电量和充电状态"
             ja-lang="電池残量と充電状態の監視"
@@ -1930,42 +2123,64 @@
 
   <li class="nav-section">
     <div class="nav-section-header">
-      <a href="<?cs var:toroot ?>training/testing.html">
+      <a href="<?cs var:toroot ?>training/best-permissions-ids.html">
+      <span class="small">Best Practices for</span><br/>
+              Permissions &amp; Identifiers
+      </a>
+    </div>
+    <ul>
+      <li>
+        <a href="<?cs var:toroot ?>training/articles/user-data-overview.html"
+           description=
+           "Overview of app permissions on Android and how they affect your users."
+          >Permissions and User Data</a>
+      </li>
+      <li>
+        <a href="<?cs var:toroot ?>training/articles/user-data-permissions.html"
+           description=
+           "How to manage permissions the right way for users."
+          >Best Practices for App Permissions</a>
+      </li>
+      <li>
+        <a href="<?cs var:toroot ?>training/articles/user-data-ids.html"
+           description=
+           "Unique identifiers available and how to choose the right one for your use case."
+          >Best Practices for Unique Identifiers</a>
+      </li>
+    </ul>
+  </li>
+  <!-- End Permissions and identifiers -->
+
+  <li class="nav-section">
+    <div class="nav-section-header">
+      <a href="<?cs var:toroot ?>training/testing/index.html">
       <span class="small">Best Practices for</span><br/>
               Testing
       </a>
     </div>
     <ul>
+      <li>
+      <a href="<?cs var:toroot ?>training/testing/start/index.html"
+         description="How to get started with testing your Android applications.">
+            Getting Started with Testing
+          </a>
+      </li>
       <li class="nav-section">
-      <div class="nav-section-header"><a href="<?cs var:toroot ?>training/activity-testing/index.html"
-         description="How to test Activities in your Android applications.">
-            Testing Your Activity
+      <div class="nav-section-header"><a href="<?cs var:toroot ?>training/testing/unit-testing/index.html"
+         description="How to build effective unit tests for Android apps.">
+            Building Effective Unit Tests
           </a></div>
         <ul>
-          <li><a href="<?cs var:toroot ?>training/activity-testing/preparing-activity-testing.html">
-            <span class="en">Setting Up Your Test Environment</span>
-          </a>
+          <li><a href="<?cs var:toroot ?>training/testing/unit-testing/local-unit-tests.html">
+            <span class="en">Building Local Unit Tests</span>
+            </a>
           </li>
-          <li><a href="<?cs var:toroot ?>training/activity-testing/activity-basic-testing.html">
-            <span class="en">Creating and Running a Test Case</span>
-          </a>
-          </li>
-          <li><a href="<?cs var:toroot ?>training/activity-testing/activity-ui-testing.html">
-            <span class="en">Testing UI Components</span>
-          </a>
-          </li>
-          <li><a href="<?cs var:toroot ?>training/activity-testing/activity-unit-testing.html">
-            <span class="en">Creating Unit Tests</span>
-          </a>
-          </li>
-          <li><a href="<?cs var:toroot ?>training/activity-testing/activity-functional-testing.html">
-            <span class="en">Creating Functional Tests</span>
-          </a>
+          <li><a href="<?cs var:toroot ?>training/testing/unit-testing/instrumented-unit-tests.html">
+            <span class="en">Building Instrumented Unit Tests</span>
+            </a>
           </li>
         </ul>
       </li>
-    </ul>
-    <ul>
       <li class="nav-section">
       <div class="nav-section-header"><a href="<?cs var:toroot ?>training/testing/ui-testing/index.html"
          description="How to automate your user interface tests for Android apps.">
@@ -1982,24 +2197,21 @@
           </li>
         </ul>
       </li>
-    </ul>
-    <ul>
       <li class="nav-section">
-      <div class="nav-section-header"><a href="<?cs var:toroot ?>training/testing/unit-testing/index.html"
-         description="How to build effective unit tests for Android apps.">
-            Building Effective Unit Tests
+      <div class="nav-section-header"><a href="<?cs var:toroot ?>training/testing/integration-testing/index.html"
+         description="How to build effective integration tests for Android apps.">
+            Testing App Component Integrations
           </a></div>
         <ul>
-          <li><a href="<?cs var:toroot ?>training/testing/unit-testing/local-unit-tests.html">
-            <span class="en">Building Local Unit Tests</span>
-            </a>
-          </li>
-          <li><a href="<?cs var:toroot ?>training/testing/unit-testing/instrumented-unit-tests.html">
-            <span class="en">Building Instrumented Unit Tests</span>
-            </a>
-          </li>
+         <li><a href="<?cs var:toroot ?>training/testing/integration-testing/service-testing.html">
+           <span class="en">Testing Your Service</span></a></li>
+         <li><a href="<?cs var:toroot ?>training/testing/integration-testing/content-provider-testing.html">
+           <span class="en">Testing Your Content Provider</span></a></li>
         </ul>
       </li>
+      <li><a href="<?cs var:toroot ?>training/testing/performance.html"
+          description="How to automate UI performance testing.">Testing Display Performance</a>
+      </li>
     </ul>
   </li>
   <!-- End best Testing -->
diff --git a/docs/html/training/tv/discovery/recommendations.jd b/docs/html/training/tv/discovery/recommendations.jd
index ffe33f2..0b0b270 100644
--- a/docs/html/training/tv/discovery/recommendations.jd
+++ b/docs/html/training/tv/discovery/recommendations.jd
@@ -63,10 +63,13 @@
 
 <ul>
 <li><strong>Continuation content</strong> recommendations for the next episode for users to resume
-watching a series.</li>
+watching a series. Or, use continuation recommendations for paused movies, TV shows, or podcasts
+so users can get back to watching paused content in just a few clicks.</li>
 <li><strong>New content</strong> recommendations, such as for a new first-run episode, if the user
-finished watching another series.
-<li><strong>Related content</strong> recommendations based on the users historic viewing behavior.
+finished watching another series. Also, if your app lets users subscribe to, follow, or track
+content, use new content recommendations for unwatched items in their list of tracked content.</li>
+<li><strong>Related content</strong> recommendations based on the users' historic viewing behavior.
+</li>
 </ul>
 
 <p>For more information on how to design recommendation cards for the best user experience, see
@@ -88,6 +91,25 @@
 <a href="https://www.google.com/design/spec-tv/system-overview/recommendation-row.html#recommendation-row-card-customization"
 class="external-link">Recommendation Row</a> in the Android TV Design Spec.</p>
 
+<h3 id="grouping">Grouping Recommendations</h3>
+
+<p>
+You can optionally group recommendations based on recommendation source. For example, your app
+might provide two groups of recommendations: recommendations for content the user is subscribed to,
+and recommendations for new trending content the user might not be aware of.
+</p>
+<p>
+The system ranks and orders recommendations for each group separately when creating or updating
+the recommendation row. By providing group information for your recommendations, you can ensure
+that your recommendations don’t get ordered below unrelated recommendations.
+</p>
+<p>
+Use
+{@link android.support.v4.app.NotificationCompat.Builder#setGroup
+NotificationCompat.Builder.setGroup()} to set the group key string of a recommendation. For
+example, to mark a recommendation as belonging to a group that contains new trending content,
+you might call <code>setGroup("trending")</code>.
+</p>
 
 <h2 id="service">Create a Recommendations Service</h2>
 
diff --git a/docs/html/training/tv/games/index.jd b/docs/html/training/tv/games/index.jd
index 7a3365d..73336d0 100644
--- a/docs/html/training/tv/games/index.jd
+++ b/docs/html/training/tv/games/index.jd
@@ -225,24 +225,20 @@
 
 <p>
   Games controllers may not be available or active for users of a TV device. In order to properly
-  inform users that your game requires (or just supports) a game controller, you must include
-  entries in the app manifest. If your game requires a game controller, you must include the
-  following entry in your app manifest:
-</p>
-
-<pre>
-  &lt;uses-feature android:name="android.hardware.gamepad"/&gt;
-</pre>
-
-<p>
-  If your game uses, but does not require, a game controller, include the following feature
-  entry in your app manifest:
+  inform users that your game supports a game controller, you must include the following entry in
+  your app manifest:
 </p>
 
 <pre>
   &lt;uses-feature android:name="android.hardware.gamepad" android:required="false"/&gt;
 </pre>
 
+<p class="note">
+  <strong>Note:</strong> When specifying {@code android:hardware:gamepad} support, do not set the
+  {@code android:required} attribute to {@code "true"}. If you do this, users won’t be able to
+  install your app on TV devices.
+</p>
+
 <p>For more information about manifest entries, see
   <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">App Manifest</a>.
 </p>
diff --git a/docs/html/training/tv/index.jd b/docs/html/training/tv/index.jd
index ff9f111..4a6bcb8 100644
--- a/docs/html/training/tv/index.jd
+++ b/docs/html/training/tv/index.jd
@@ -9,4 +9,21 @@
 <p>These classes teach you how to build apps for TV devices.</p>
 
 <p class="note"><strong>Note:</strong> For details on how to publish your TV apps in Google Play,
-see <a href="{@docRoot}distribute/googleplay/tv.html">Distribute to Android TV</a>.</p>
\ No newline at end of file
+see <a href="{@docRoot}distribute/googleplay/tv.html">Distribute to Android TV</a>.</p>
+
+<div class="wrap">
+  <div class="cols">
+    <div class="col-1of2">
+      <p>If you prefer to learn through interactive video training, check out this online course
+      about extending your apps to work with Android TV.</p>
+      <p><a href="https://www.udacity.com/course/ud875B" class="button">
+        Start the video course</a>
+      </p>
+    </div>
+    <div class="col-1of2">
+      <iframe width="300" height="169"
+      src="//www.youtube.com/embed/anJtq2rtrA8?autohide=1&amp;showinfo=0"
+      frameborder="0" allowfullscreen="" style="float: right; margin: 0 0 20px 20px;"></iframe>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/docs/html/training/tv/playback/browse.jd b/docs/html/training/tv/playback/browse.jd
index 9c81597..fee6a74 100644
--- a/docs/html/training/tv/playback/browse.jd
+++ b/docs/html/training/tv/playback/browse.jd
@@ -11,25 +11,35 @@
   <h2>This lesson teaches you to</h2>
   <ol>
     <li><a href="#layout">Create a Media Browse Layout</a></li>
+    <li><a href="#header">Customize the Header Views</a></li>
     <li><a href="#lists">Display Media Lists</a></li>
     <li><a href="#background">Update the Background</a></li>
   </ol>
+  <h2>Try it out</h2>
+  <ul>
+    <li><a class="external-link" href="https://github.com/googlesamples/androidtv-Leanback">Android
+    Leanback sample app</a></li>
+  </ul>
 
 </div>
 </div>
 
 <p>
-  Media apps that run on TV need to allow users to browse its content offerings, make a
+  A media app that runs on a TV needs to allow users to browse its content offerings, make a
   selection, and start playing content. The content browsing experience for apps of this type
   should be simple and intuitive, as well as visually pleasing and engaging.
 </p>
 
 <p>
   This lesson discusses how to use the classes provided by the <a href=
-  "{@docRoot}tools/support-library/features.html#v17-leanback">v17 leanback support library</a> to
-  implement a user interface for browsing music or videos from your app's media catalog.
+  "{@docRoot}tools/support-library/features.html#v17-leanback">v17 leanback support library</a>
+  to implement a user interface for browsing music or videos from your app's media catalog.
 </p>
 
+<img itemprop="image" src="{@docRoot}images/tv/app-browse.png" alt="App main screen"/>
+<p class="img-caption"><b>Figure 1.</b> The <a href="https://github.com/googlesamples/androidtv-Leanback">
+Leanback sample app</a> browse fragment displays video catalog data.</p>
+
 
 <h2 id="layout">Create a Media Browse Layout</h2>
 
@@ -37,69 +47,270 @@
   The {@link android.support.v17.leanback.app.BrowseFragment} class in the leanback library
   allows you to create a primary layout for browsing categories and rows of media items with a
   minimum of code. The following example shows how to create a layout that contains a {@link
-  android.support.v17.leanback.app.BrowseFragment}:
+  android.support.v17.leanback.app.BrowseFragment} object:
 </p>
 
 <pre>
-&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-  android:layout_width=&quot;match_parent&quot;
-  android:layout_height=&quot;match_parent&quot;
-  android:orientation=&quot;vertical&quot;
-  &gt;
+&lt;FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/main_frame"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"&gt;
 
-  &lt;fragment
-      <strong>android:name="android.support.v17.leanback.app.BrowseFragment"</strong>
-      android:id=&quot;@+id/browse_fragment&quot;
-      android:layout_width=&quot;match_parent&quot;
-      android:layout_height=&quot;match_parent&quot;
-      /&gt;
+    &lt;fragment
+        android:name="com.example.android.tvleanback.ui.MainFragment"
+        android:id="@+id/main_browse_fragment"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" /&gt;
+
+&lt;/FrameLayout&gt;
+</pre>
+
+<p>The application's main activity sets this view, as shown in the following example:</p>
+
+<pre>
+public class MainActivity extends Activity {
+    &#64;Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+    }
+...
+</pre>
+
+<p>The {@link android.support.v17.leanback.app.BrowseFragment} methods populate the view with the
+video data and UI elements and set the layout parameters such as the icon, title, and whether
+category headers are enabled.</p>
+
+<ul>
+  <li>See <a href="#set-ui">Set UI Elements</a> for more information about setting up UI elements.</li>
+  <li>See <a href="#hide-heads">Hide or Disable Headers</a> for more information about hiding the
+  headers.</li>
+</ul>
+
+<p>The application's subclass that implements the
+{@link android.support.v17.leanback.app.BrowseFragment} methods also sets
+up event listeners for user actions on the UI elements, and prepares the background
+manager, as shown in the following example:</p>
+
+<pre>
+public class MainFragment extends BrowseFragment implements
+        LoaderManager.LoaderCallbacks&lt;HashMap&lt;String, List&lt;Movie&gt;&gt;&gt; {
+
+...
+
+    &#64;Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        loadVideoData();
+
+        prepareBackgroundManager();
+        setupUIElements();
+        setupEventListeners();
+    }
+...
+
+    private void prepareBackgroundManager() {
+        mBackgroundManager = BackgroundManager.getInstance(getActivity());
+        mBackgroundManager.attach(getActivity().getWindow());
+        mDefaultBackground = getResources()
+            .getDrawable(R.drawable.default_background);
+        mMetrics = new DisplayMetrics();
+        getActivity().getWindowManager().getDefaultDisplay().getMetrics(mMetrics);
+    }
+
+    private void setupUIElements() {
+        setBadgeDrawable(getActivity().getResources()
+            .getDrawable(R.drawable.videos_by_google_banner));
+        // Badge, when set, takes precedent over title
+        setTitle(getString(R.string.browse_title));
+        setHeadersState(HEADERS_ENABLED);
+        setHeadersTransitionOnBackEnabled(true);
+        // set headers background color
+        setBrandColor(getResources().getColor(R.color.fastlane_background));
+        // set search icon color
+        setSearchAffordanceColor(getResources().getColor(R.color.search_opaque));
+    }
+
+    private void loadVideoData() {
+        VideoProvider.setContext(getActivity());
+        mVideosUrl = getActivity().getResources().getString(R.string.catalog_url);
+        getLoaderManager().initLoader(0, null, this);
+    }
+
+    private void setupEventListeners() {
+        setOnSearchClickedListener(new View.OnClickListener() {
+
+            &#64;Override
+            public void onClick(View view) {
+                Intent intent = new Intent(getActivity(), SearchActivity.class);
+                startActivity(intent);
+            }
+        });
+
+        setOnItemViewClickedListener(new ItemViewClickedListener());
+        setOnItemViewSelectedListener(new ItemViewSelectedListener());
+    }
+...
+</pre>
+
+<h3 id="set-ui">Set UI Elements</h2>
+
+<p>In the sample above, the private method <code>setupUIElements()</code> calls several of the
+{@link android.support.v17.leanback.app.BrowseFragment} methods to style the media catalog browser:
+</p>
+
+<ul>
+  <li>{@link android.support.v17.leanback.app.BrowseFragment#setBadgeDrawable(android.graphics.drawable.Drawable) setBadgeDrawable()}
+  places the specified drawable resource in the upper-right corner of the browse fragment, as
+  shown in figures 1 and 2. This method replaces the title string with the
+  drawable resource, if {@code setTitle()} is also called. The drawable resource should be 52dps
+  tall.</li>
+  <li>{@link android.support.v17.leanback.app.BrowseFragment#setTitle(java.lang.String) setTitle()}
+  sets the title string in the upper-right corner of the browse fragment, unless
+  {@code setBadgeDrawable()} is called.</li>
+  <li>{@link android.support.v17.leanback.app.BrowseFragment#setHeadersState(int) setHeadersState()}
+  and {@link android.support.v17.leanback.app.BrowseFragment#setHeadersTransitionOnBackEnabled(boolean) setHeadersTransitionOnBackEnabled()} hide or disable the headers. See
+  <a href="#hide-heads">Hide or Disable Headers</a> for more information.
+  </li>
+  <li>{@link android.support.v17.leanback.app.BrowseFragment#setBrandColor(int) setBrandColor()}
+  sets the background color for UI elements in the browse fragment, specifically the header
+  section background color, with the specified color value.</li>
+  <li>{@link android.support.v17.leanback.app.BrowseFragment#setSearchAffordanceColor(int) setSearchAffordanceColor()}
+  sets the color of the search icon with the specified color value. The search icon
+  appears in the upper-left corner of the browse fragment, as shown in figures 1 and 2.</li>
+</ul>
+
+<h2 id="header">Customize the Header Views</h2>
+
+<p>The browse fragment shown in figure 1 lists the video category names (the row headers) in the
+left pane. Text views display these category names from the video database. You can customize the
+header to include additional views in a more complex layout. The following sections show how to
+include an image view that displays an icon next to the category name, as shown in figure 2.</p>
+
+<img itemprop="image" src="{@docRoot}images/tv/custom-head.png" alt="App main screen"/>
+<p class="img-caption"><b>Figure 2.</b> The row headers in the browse fragment, with both an icon
+and a text label.</p>
+
+<p>The layout for the row header is defined as follows:</p>
+
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"&gt;
+
+    &lt;ImageView
+        android:id="@+id/header_icon"
+        android:layout_width="32dp"
+        android:layout_height="32dp" /&gt;
+    &lt;TextView
+        android:id="@+id/header_label"
+        android:layout_marginTop="6dp"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" /&gt;
+
 &lt;/LinearLayout&gt;
 </pre>
 
-<p>
-  In order to work with this layout in an activity, retrieve the {@link
-  android.support.v17.leanback.app.BrowseFragment} element from the layout. Use the methods in this
-  class to set display parameters such as the icon, title, and whether category headers are enabled.
-  The following code sample demonstrates how to set the layout parameters for a {@link
-  android.support.v17.leanback.app.BrowseFragment} in a layout:
+<p>Use a {@link android.support.v17.leanback.widget.Presenter} and implement the
+abstract methods to create, bind, and unbind the view holder. The following
+example shows how to bind the viewholder with two views, an
+{@link android.widget.ImageView} and a {@link android.widget.TextView}.
 </p>
 
 <pre>
-public class BrowseMediaActivity extends Activity {
+public class IconHeaderItemPresenter extends Presenter {
+    &#64;Override
+    public ViewHolder onCreateViewHolder(ViewGroup viewGroup) {
+        LayoutInflater inflater = (LayoutInflater) viewGroup.getContext()
+                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 
-    public static final String TAG ="BrowseActivity";
+        View view = inflater.inflate(R.layout.icon_header_item, null);
 
-    protected BrowseFragment mBrowseFragment;
+        return new ViewHolder(view);
+    }
 
     &#64;Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.browse_fragment);
+    public void onBindViewHolder(ViewHolder viewHolder, Object o) {
+        HeaderItem headerItem = ((ListRow) o).getHeaderItem();
+        View rootView = viewHolder.view;
 
-        final FragmentManager fragmentManager = getFragmentManager();
-        <strong>mBrowseFragment = (BrowseFragment) fragmentManager.findFragmentById(
-                R.id.browse_fragment);</strong>
+        ImageView iconView = (ImageView) rootView.findViewById(R.id.header_icon);
+        Drawable icon = rootView.getResources().getDrawable(R.drawable.ic_action_video, null);
+        iconView.setImageDrawable(icon);
 
-        // Set display parameters for the BrowseFragment
-        mBrowseFragment.setHeadersState(BrowseFragment.HEADERS_ENABLED);
-        mBrowseFragment.setTitle(getString(R.string.app_name));
-        mBrowseFragment.setBadgeDrawable(getResources().getDrawable(
-                R.drawable.ic_launcher));
-        mBrowseFragment.setBrowseParams(params);
+        TextView label = (TextView) rootView.findViewById(R.id.header_label);
+        label.setText(headerItem.getName());
+    }
 
+    &#64;Override
+    public void onUnbindViewHolder(ViewHolder viewHolder) {
+    // no op
     }
 }
 </pre>
 
+<p>This example shows how to define the presenter for a complex layout with
+multiple views, and you could use this pattern to do something even more complex.
+However, an easier way to combine a {@link android.widget.TextView} with a
+drawable resource is to use the <a href="{@docRoot}reference/android/widget/TextView.html#attr_android:drawableLeft">
+{@code TextView.drawableLeft}</a> attribute. Doing it this way, you don't need the
+{@link android.widget.ImageView} shown here.</p>
 
-<h2 id="lists">Displaying Media Lists</h2>
+<p>In the {@link android.support.v17.leanback.app.BrowseFragment} implementation that displays the
+catalog browser, use the {@link android.support.v17.leanback.app.BrowseFragment#setHeaderPresenterSelector(android.support.v17.leanback.widget.PresenterSelector) setHeaderPresenterSelector()}
+method to set the presenter for the row header, as shown in the following example.</p>
+
+<pre>
+setHeaderPresenterSelector(new PresenterSelector() {
+    &#64;Override
+    public Presenter getPresenter(Object o) {
+        return new IconHeaderItemPresenter();
+    }
+});
+</pre>
+
+<h3 id="hide-heads">Hide or Disable Headers</h3>
+
+<p>Sometimes you may not want the row headers to appear: when there aren't enough categories to
+require a scrollable list, for example. Call the {@link android.support.v17.leanback.app.BrowseFragment#setHeadersState(int) BrowseFragment.setHeadersState()}
+method during the fragment's {@link android.app.Fragment#onActivityCreated(android.os.Bundle) onActivityCreated()}
+method to hide or disable the row headers. The {@link android.support.v17.leanback.app.BrowseFragment#setHeadersState(int) setHeadersState()}
+method sets the initial state of the headers in the browse fragment given one of the following
+constants as a parameter:</p>
+
+<ul>
+  <li>{@link android.support.v17.leanback.app.BrowseFragment#HEADERS_ENABLED} - When the browse
+  fragment activity is created, the headers are enabled and shown by default. The headers appear as
+  shown in figures 1 and 2 on this page.</li>
+  <li>{@link android.support.v17.leanback.app.BrowseFragment#HEADERS_HIDDEN} - When the browse
+  fragment activity is created, headers are enabled and hidden by default. The header section of the
+  screen is collapsed, as shown in <a href="{@docRoot}training/tv/playback/card.html#collapsed">
+  figure 1</a> of <a href="{@docRoot}training/tv/playback/card.html">Providing a Card View</a>. The
+  user can select the collapsed header section to expand it.</li>
+  <li>{@link android.support.v17.leanback.app.BrowseFragment#HEADERS_DISABLED} - When the browse
+  fragment activity is created, headers are disabled by default and are never displayed.</li>
+</ul>
+
+<p>If either {@link android.support.v17.leanback.app.BrowseFragment#HEADERS_ENABLED} or
+{@link android.support.v17.leanback.app.BrowseFragment#HEADERS_HIDDEN} is set, you can call
+{@link android.support.v17.leanback.app.BrowseFragment#setHeadersTransitionOnBackEnabled(boolean) setHeadersTransitionOnBackEnabled()}
+to support moving back to the row header from a selected content item in the row. This is enabled by
+default (if you don't call the method), but if you want to handle the back movement yourself, you
+should pass the value <code>false</code> to {@link android.support.v17.leanback.app.BrowseFragment#setHeadersTransitionOnBackEnabled(boolean) setHeadersTransitionOnBackEnabled()}
+and implement your own back stack handling.</p>
+
+<h2 id="lists">Display Media Lists</h2>
 
 <p>
-  The {@link android.support.v17.leanback.app.BrowseFragment} allows you to define and display
-  browsable media content categories and media items from a media catalog using adapters and
-  presenters. Adapters enable you to connect to local or online data sources that contain your
-  media catalog information. Presenters hold data about media items and provide layout information
-  for displaying an item on screen.
+  The {@link android.support.v17.leanback.app.BrowseFragment} class allows you
+  to define and display browsable media content categories and media items from
+  a media catalog using adapters and presenters. Adapters enable you to connect
+  to local or online data sources that contain your media catalog information.
+  Adapters use presenters to create views and bind data to those views for
+  displaying an item on screen.
 </p>
 
 <p>
@@ -131,11 +342,12 @@
 </pre>
 
 <p>
-  Once you have constructed a presenter class for your media items, you can build and attach an
-  adapter to the {@link android.support.v17.leanback.app.BrowseFragment} to display those items on
-  screen for browsing by the user. The following example code demonstrates how to construct an
-  adapter to display categories and items in those categories using the {@code StringPresenter}
-  class shown in the previous code example:
+  Once you have constructed a presenter class for your media items, you can build
+  an adapter and attach it to the {@link android.support.v17.leanback.app.BrowseFragment}
+  to display those items on screen for browsing by the user. The following example
+  code demonstrates how to construct an adapter to display categories and items
+  in those categories using the {@code StringPresenter} class shown in the
+  previous code example:
 </p>
 
 <pre>
@@ -158,7 +370,7 @@
         listRowAdapter.add("Media Item 1");
         listRowAdapter.add("Media Item 2");
         listRowAdapter.add("Media Item 3");
-        HeaderItem header = new HeaderItem(i, "Category " + i, null);
+        HeaderItem header = new HeaderItem(i, "Category " + i);
         mRowsAdapter.add(new ListRow(header, listRowAdapter));
     }
 
@@ -170,15 +382,15 @@
   This example shows a static implementation of the adapters. A typical media browsing application
   uses data from an online database or web service. For an example of a browsing application that
   uses data retrieved from the web, see the
-  <a href="http://github.com/googlesamples/androidtv-leanback">Android TV</a> sample app.
+  <a href="http://github.com/googlesamples/androidtv-leanback">Android Leanback sample app</a>.
 </p>
 
 <h2 id="background">Update the Background</h2>
 
 <p>
   In order to add visual interest to a media-browsing app on TV, you can update the background
-  image as users browse through content. This technique can make interaction with your app feel
-  more cinematic and enjoyable for users.
+  image as users browse through content. This technique can make interaction with your app more
+  cinematic and enjoyable.
 </p>
 
 <p>
@@ -211,8 +423,8 @@
         &#64;Override
         public void onItemSelected(Object item, Row row) {
             if (item instanceof Movie ) {
-                URI uri = ((Movie)item).getBackdropURI();
-                updateBackground(uri);
+                Drawable background = ((Movie)item).getBackdropDrawable();
+                updateBackground(background);
             } else {
                 clearBackground();
             }
diff --git a/docs/html/training/tv/playback/card.jd b/docs/html/training/tv/playback/card.jd
index 8ac75fd..a3a9872 100644
--- a/docs/html/training/tv/playback/card.jd
+++ b/docs/html/training/tv/playback/card.jd
@@ -32,9 +32,10 @@
 Android Leanback sample app</a>, available on GitHub. Use this sample code to start your own
 app.</p>
 
-<img itemprop="image" src="{@docRoot}images/tv/app-browse.png" alt="App main screen"/>
+<img itemprop="image" src="{@docRoot}images/tv/card-view.png" alt="App card view" id="collapsed"/>
 <p class="img-caption"><b>Figure 1.</b> The <a href="https://github.com/googlesamples/androidtv-Leanback">
-Leanback sample app</a> browse fragment with a card presenter displaying card view objects.</p>
+Leanback sample app</a> image card view when selected.</p>
+
 
 <h2 id="presenter">Create a Card Presenter</h2>
 
@@ -147,10 +148,7 @@
 </pre>
 
 <p>When the user selects the {@link android.support.v17.leanback.widget.ImageCardView}, it expands
-to reveal its text area with the background color you specify, as shown in figure 2.</p>
+to reveal its text area with the background color you specify, as shown in figure 1.</p>
 
-<img itemprop="image" src="{@docRoot}images/tv/card-view.png" alt="App card view"/>
-<p class="img-caption"><b>Figure 2.</b> The <a href="https://github.com/googlesamples/androidtv-Leanback">
-Leanback sample app</a> image card view when selected.</p>
 
 
diff --git a/docs/html/training/tv/playback/details.jd b/docs/html/training/tv/playback/details.jd
index bd6d67a..dbe2c84 100644
--- a/docs/html/training/tv/playback/details.jd
+++ b/docs/html/training/tv/playback/details.jd
@@ -111,8 +111,9 @@
     private void buildDetails() {
         ClassPresenterSelector selector = new ClassPresenterSelector();
         // Attach your media item details presenter to the row presenter:
-        DetailsOverviewRowPresenter rowPresenter =
-            new DetailsOverviewRowPresenter(new DetailsDescriptionPresenter());
+        FullWidthDetailsOverviewRowPresenter rowPresenter =
+            new FullWidthDetailsOverviewRowPresenter(
+                new DetailsDescriptionPresenter());
 
         selector.addClassPresenter(DetailsOverviewRow.class, rowPresenter);
         selector.addClassPresenter(ListRow.class,
diff --git a/docs/html/training/tv/playback/guided-step.jd b/docs/html/training/tv/playback/guided-step.jd
new file mode 100644
index 0000000..121961f
--- /dev/null
+++ b/docs/html/training/tv/playback/guided-step.jd
@@ -0,0 +1,259 @@
+page.title=Adding a Guided Step
+page.tags=tv, guided step
+helpoutsWidget=true
+
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+  <h2>This lesson teaches you to</h2>
+  <ol>
+    <li><a href="#details">Provide Details for a Step</a></li>
+    <li><a href="#actions">Create and Handle User Actions</a></li>
+    <li><a href="#sequence">Group Guided Steps Into a Sequence</a></li>
+    <li><a href="#presentation">Customize Step Presentation</a></li>
+  </ol>
+  <h2>Try it out</h2>
+  <ul>
+    <li><a class="external-link" href="https://github.com/googlesamples/androidtv-Leanback">Android
+    Leanback sample app</a></li>
+  </ul>
+</div>
+</div>
+
+<p>
+Your application might have multi-step tasks for users. For example, your app might need to guide
+users through purchasing additional content, or setting up a complex configuration setting, or
+simply confirming a decision. All of these tasks require walking users through one or more ordered
+steps or decisions.
+</p>
+
+<p>
+The <a href=
+"{@docRoot}tools/support-library/features.html#v17-leanback">v17 Leanback support library</a>
+provides classes to implement multi-step user tasks. This lesson discusses how to use the
+{@link android.support.v17.leanback.app.GuidedStepFragment} class to guide a user through a series
+of decisions to accomplish a task. {@link android.support.v17.leanback.app.GuidedStepFragment} uses
+TV UI best practices to make multi-step tasks easy to understand and navigate on TV devices.
+</p>
+
+<h2 id="details">Provide Details for a Step</h2>
+
+<p>
+A {@link android.support.v17.leanback.app.GuidedStepFragment} represents a single step in a series
+of steps. Visually it provides a guidance view on the left with step information. On the right,
+{@link android.support.v17.leanback.app.GuidedStepFragment} provides a view containing a
+list of possible actions or decisions for this step.
+</p>
+
+<img src="{@docRoot}images/training/tv/playback/guided-step-screen.png"
+srcset="{@docRoot}images/training/tv/playback/guided-step-screen.png 1x,
+{@docRoot}images/training/tv/playback/guided-step-screen-2x.png 2x" />
+<p class="img-caption"><strong>Figure 1.</strong> An example guided step.</p>
+
+<p>
+For each step in your multi-step task, extend
+{@link android.support.v17.leanback.app.GuidedStepFragment} and provide context information about
+the step and actions the user can take. Override
+{@link android.support.v17.leanback.app.GuidedStepFragment#onCreateGuidance onCreateGuidance()}
+and return a new
+{@link android.support.v17.leanback.widget.GuidanceStylist.Guidance} that contains context
+information, such as the step title, description, and icon.
+</p>
+
+<pre>
+&#64;Override
+public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) {
+    String title = getString(R.string.guidedstep_first_title);
+    String breadcrumb = getString(R.string.guidedstep_first_breadcrumb);
+    String description = getString(R.string.guidedstep_first_description);
+    Drawable icon = getActivity().getDrawable(R.drawable.guidedstep_main_icon_1);
+    return new GuidanceStylist.Guidance(title, description, breadcrumb, icon);
+}
+</pre>
+
+<p>
+Add your {@link android.support.v17.leanback.app.GuidedStepFragment} subclass to your desired
+activity by calling
+{@link android.support.v17.leanback.app.GuidedStepFragment#add GuidedStepFragment.add()}
+in your activity’s {@link android.app.Activity#onCreate onCreate()} method.
+
+If your activity contains only {@link android.support.v17.leanback.app.GuidedStepFragment}
+objects, use {@link android.support.v17.leanback.app.GuidedStepFragment#addAsRoot
+GuidedStepFragment.addAsRoot()} instead of
+{@link android.support.v17.leanback.app.GuidedStepFragment#add add()} to add the first
+{@link android.support.v17.leanback.app.GuidedStepFragment}. Using
+{@link android.support.v17.leanback.app.GuidedStepFragment#addAsRoot
+addAsRoot()} ensures that if the user presses the Back button on the TV remote when viewing
+the first {@link android.support.v17.leanback.app.GuidedStepFragment}, both the
+{@link android.support.v17.leanback.app.GuidedStepFragment} and the parent activity will close.
+</p>
+
+<p class="note"<strong>Note:</strong> Add
+{@link android.support.v17.leanback.app.GuidedStepFragment} objects programmatically
+and not in your layout XML files.</p>
+
+<h2 id="actions">Create and Handle User Actions</h2>
+
+<p>
+Add user actions by overriding
+{@link android.support.v17.leanback.app.GuidedStepFragment#onCreateActions onCreateActions()}.
+In your override, add a new {@link android.support.v17.leanback.widget.GuidedAction} for each
+action item, and provide the action string, description, and ID. Use
+{@link android.support.v17.leanback.widget.GuidedAction.Builder} to add new actions.
+</p>
+
+<pre>
+&#64;Override
+public void onCreateActions(List<GuidedAction> actions, Bundle savedInstanceState) {
+    // Add "Continue" user action for this step
+    actions.add(new GuidedAction.Builder()
+           .id(CONTINUE)
+           .title(getString(R.string.guidedstep_continue))
+           .description(getString(R.string.guidedstep_letsdoit))
+           .hasNext(true)
+           .build());
+...
+</pre>
+
+<p>
+Actions aren’t limited to single-line selections. Use
+{@link android.support.v17.leanback.widget.GuidedAction} attributes
+to add the following additional types of actions:
+</p>
+
+<ul>
+<li>
+Add a information label action by setting
+{@link android.support.v17.leanback.widget.GuidedAction.Builder#infoOnly infoOnly(true)}.
+If <code>infoOnly</code> is set to true, the action can't be selected by the user. Use label
+actions to provide additional information about user choices.
+</li>
+<li>
+Add an editable text action by setting
+{@link android.support.v17.leanback.widget.GuidedAction.Builder#editable editable(true)}. If
+<code>editable</code> is true, when the action is selected the user can enter text using the
+remote or a connected keyboard.
+</li>
+<li>
+Add a set of actions that behave as checkable radio buttons by using
+{@link android.support.v17.leanback.widget.GuidedAction.Builder#checkSetId checkSetId()}
+with a common ID value to group actions into a set. All actions in the same list with the same
+check-set ID are considered linked. When one of the actions within that set is selected, that
+action becomes checked, while all other actions become unchecked.
+</li>
+</ul>
+
+<p>
+You can also add a visual indicator that indicates selecting the action leads to a new step by
+setting
+{@link android.support.v17.leanback.widget.GuidedAction#hasNext hasNext(true)}.
+See {@link android.support.v17.leanback.widget.GuidedAction} for all the different attributes
+you can set.
+</p>
+
+<p>
+To respond to actions, override
+{@link android.support.v17.leanback.app.GuidedStepFragment#onGuidedActionClicked
+onGuidedActionClicked()} and process the passed-in
+{@link android.support.v17.leanback.widget.GuidedAction}. Identify the selected action by
+examining {@link android.support.v17.leanback.widget.GuidedAction#getId GuidedAction.getId()}.
+</p>
+
+<h2 id="sequence">Group Guided Steps Into a Guided Sequence</h2>
+
+<p>
+A {@link android.support.v17.leanback.app.GuidedStepFragment} represents a single step, however
+you might have several steps in an ordered sequence. Group multiple
+{@link android.support.v17.leanback.app.GuidedStepFragment} objects together by using
+{@link android.support.v17.leanback.app.GuidedStepFragment#add GuidedStepFragment.add()} to add
+the next step in the sequence to the fragment stack.
+</p>
+
+<pre>
+&#64;Override
+public void onGuidedActionClicked(GuidedAction action) {
+    FragmentManager fm = getFragmentManager();
+    if (action.getId() == CONTINUE) {
+       GuidedStepFragment.add(fm, new SecondStepFragment());
+    }
+...
+</pre>
+
+<p>
+If the user presses the Back button on the TV remote, the device shows the previous
+{@link android.support.v17.leanback.app.GuidedStepFragment} on the fragment stack. If you
+decide to provide your own {@link android.support.v17.leanback.widget.GuidedAction} that
+returns to the previous step, you can implement the Back behavior by calling
+{@link android.app.FragmentManager#popBackStack getFragmentManager().popBackStack()}.
+</p>
+
+<h2 id="presentation">Customize Step Presentation</h2>
+
+<p>
+The {@link android.support.v17.leanback.app.GuidedStepFragment} class can use custom
+themes that control presentation aspects such as title text formatting or step transition
+animations. Custom themes must inherit from
+{@link android.support.v17.leanback.R.style#Theme_Leanback_GuidedStep}, and can provide
+overriding values for attributes defined in
+{@link android.support.v17.leanback.widget.GuidanceStylist} and
+{@link android.support.v17.leanback.widget.GuidedActionsStylist}.
+</p>
+
+<p>
+To apply a custom theme to your GuidedStepFragment, do one of the following:
+</p>
+
+<ul>
+<li>
+Apply the theme to the parent activity by setting the <code>android:theme</code> attribute to the
+activity element in the Android manifest. Setting this attribute applies the theme to all child
+views and is the easiest way to apply a custom theme if the parent activity contains only
+{@link android.support.v17.leanback.app.GuidedStepFragment} objects.
+</li>
+<li>
+If your activity already uses a custom theme and you don’t want to apply
+{@link android.support.v17.leanback.app.GuidedStepFragment} styles to other views in the activity,
+add the
+{@link android.support.v17.leanback.R.styleable#LeanbackGuidedStepTheme_guidedStepTheme}
+attribute to your existing custom activity theme. This attribute points to the custom theme that
+only the {@link android.support.v17.leanback.app.GuidedStepFragment} objects in your
+activity will use.
+</li>
+<li>
+If you use {@link android.support.v17.leanback.app.GuidedStepFragment} objects in different
+activities that are part of the same overall multi-step task, and want to use a consistent
+visual theme across all steps, override
+{@link android.support.v17.leanback.app.GuidedStepFragment#onProvideTheme
+GuidedStepFragment.onProvideTheme()} and return your custom theme.
+</li>
+</ul>
+
+<p>
+For more information on how to add styles and themes, see
+<a href="{@docRoot}guide/topics/ui/themes.html">Styles and Themes</a>.
+</p>
+
+<p>
+The {@link android.support.v17.leanback.app.GuidedStepFragment} class uses special
+<em>stylist classes</em> to access and apply theme attributes.
+The {@link android.support.v17.leanback.widget.GuidanceStylist} class uses theme information
+to control presentation of the left guidance view, while the
+{@link android.support.v17.leanback.widget.GuidedActionsStylist} class uses theme information
+to control presentation of the right actions view.
+</p>
+
+<p>
+To customize the visual style of your steps beyond what theme customization can provide, subclass
+{@link android.support.v17.leanback.widget.GuidanceStylist} or
+{@link android.support.v17.leanback.widget.GuidedActionsStylist} and return your subclass in
+{@link android.support.v17.leanback.app.GuidedStepFragment#onCreateGuidanceStylist
+GuidedStepFragment.onCreateGuidanceStylist()} or
+{@link android.support.v17.leanback.app.GuidedStepFragment#onCreateActionsStylist
+GuidedStepFragment.onCreateActionsStylist()}.
+For details on what you can customize in these subclasses, see the documentation on
+{@link android.support.v17.leanback.widget.GuidanceStylist} and
+{@link android.support.v17.leanback.widget.GuidedActionsStylist}.
+</p>
\ No newline at end of file
diff --git a/docs/html/training/tv/playback/index.jd b/docs/html/training/tv/playback/index.jd
index e39e34a..d5e4e67 100644
--- a/docs/html/training/tv/playback/index.jd
+++ b/docs/html/training/tv/playback/index.jd
@@ -64,4 +64,11 @@
 
   <dt><b><a href="now-playing.html">Displaying a Now Playing Card</a></b></dt>
     <dd>Learn how to use a MediaSession to display a Now Playing card on the home screen.</dd>
+
+  <dt><b><a href="guided-step.html">Adding a Guided Step</a></b></dt>
+    <dd>Learn how to use the Leanback support library to guide a user through a series of
+    decisions.</dd>
+
+  <dt><b><a href="options.html">Enabling Background Playback</a></b></dt>
+    <dd>Learn how to continue playback when the user clicks on <strong>Home</strong>.</dd>
 </dl>
diff --git a/docs/html/training/tv/playback/now-playing.jd b/docs/html/training/tv/playback/now-playing.jd
index e158697..2bb628a 100644
--- a/docs/html/training/tv/playback/now-playing.jd
+++ b/docs/html/training/tv/playback/now-playing.jd
@@ -19,52 +19,45 @@
 </div>
 </div>
 
-<p>TV apps may allow users to play music or other media in the background while using other
-applications. If your app allows this type of use, it must must
-provide a means for the user to return to the app to pause the music or switch to a new song. The
-Android framework enables TV apps to do this by displaying a <em>Now Playing</em> card on the home
-screen in the recommendations row.</p>
+<p>TV apps must display a <em>Now Playing</em> card when playing media behind the launcher or in the
+background. This card allows users to return to the app that is currently playing media.</p>
 
-<p>The Now Playing card is a system artifact that displays on the
-home screen in the recommendations row for an active media session. It includes the media metadata
-such as the album art, title, and app icon. When the user selects it, the system opens the the app
-that owns the session.</p>
+<p>The Android framework displays a <em>Now Playing</em> card on the home
+screen when there is an active {@link android.media.session.MediaSession}.
+The card includes media metadata such as album art, title, and app icon.
+When the user selects the card, the system opens the app.</p>
 
 <p>This lesson shows how to use the {@link android.media.session.MediaSession} class to implement
-the Now Playing card.</p>
+the <em>Now Playing</em> card.</p>
+
+<img src="{@docRoot}images/training/tv/playback/now-playing-screen.png" />
+<p class="img-caption"><strong>Figure 1.</strong> Display a <em>Now Playing</em> card when playing
+media in the background.</p>
 
 <h2 id="session">Start a Media Session</h2>
 
-<p>A playback app can run as an <a href="{@docRoot}guide/components/activities">activity</a> or
-as a <a href="{@docRoot}guide/components/services">service</a>. The service is required for
-background playback because it can continue to play media even after the activity that launched it
-has been destroyed. For this discussion, the media playback app is assumed to be running in a
-{@link android.service.media.MediaBrowserService}.</p>
-
-<p>In your service's {@link android.service.media.MediaBrowserService#onCreate() onCreate()}
-method, create a new {@link android.media.session.MediaSession#MediaSession(android.content.Context, java.lang.String) MediaSession},
-set the callback and flags appropriate to a media app, and set the session token for the
-{@link android.service.media.MediaBrowserService}.</p>
+<p>Create a
+{@link android.media.session.MediaSession#MediaSession(android.content.Context, java.lang.String) MediaSession}
+when your app is preparing to play media. The following code snippet
+is an example of how to set the appropriate callback and flags:</p>
 
 <pre>
 mSession = new MediaSession(this, "MusicService");
 mSession.setCallback(new MediaSessionCallback());
 mSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS |
         MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS);
-
-// for the MediaBrowserService
-setSessionToken(mSession.getSessionToken());
 </pre>
 
-<p class="note"<strong>Note:</strong> The Now Playing card will display only for a media session with
+<p class="note"<strong>Note:</strong> The <em>Now Playing</em> card will display
+only for a media session with
 the {@link android.media.session.MediaSession#FLAG_HANDLES_TRANSPORT_CONTROLS} flag set.</p>
 
 <h2 id="card">Display a Now Playing Card</h2>
 
-<p>The Now Playing card shows up after {@link android.media.session.MediaSession#setActive(boolean) setActive(true)}
-is called, if the session is the highest priority session in the system. Also, note that your app
-must request the audio focus, as described in <a href="{@docRoot}training/managing-audio/audio-focus">
-Managing Audio Focus</a>.</p>
+<p>The <em>Now Playing</em> card only appears for active sessions. You must call
+{@link android.media.session.MediaSession#setActive(boolean) setActive(true)}
+when playback begins. Your app must also request audio focus, as described in
+<a href="{@docRoot}training/managing-audio/audio-focus.html">Managing Audio Focus</a>.</p>
 
 <pre>
 private void handlePlayRequest() {
@@ -77,15 +70,19 @@
 ...
 </pre>
 
-<p>The card is removed from the home screen when {@link android.media.session.MediaSession#setActive(boolean) setActive(false)}
-is called or if another app initiates media playback. You may want to remove the card from the home
-screen some time after playback is paused, depending on how long you want to keep the card up,
-usually 5 to 30 minutes.</p>
+<p>The card is removed from the launcher screen when a
+{@link android.media.session.MediaSession#setActive(boolean) setActive(false)}
+call deactivates the media session,
+or when another app initiates media playback.
+If playback is completely stopped and there is no active media,
+your app should deactivate the media session immediately.
+If playback is paused, your app should deactivate the media session
+after a delay, usually between 5 to 30 minutes.</p>
 
 <h2 id="state">Update the Playback State</h2>
 
-<p>As with any media app, update the playback state in the {@link android.media.session.MediaSession}
-so that the card can display the current metadata, as shown in the following example:</p>
+<p>Update the playback state in the {@link android.media.session.MediaSession}
+so the card can show the state of the current media.</p>
 
 <pre>
 private void updatePlaybackState() {
@@ -98,8 +95,9 @@
     stateBuilder.setState(mState, position, 1.0f);
     mSession.setPlaybackState(stateBuilder.build());
 }
+
 private long getAvailableActions() {
-    long actions = PlaybackState.ACTION_PLAY |
+    long actions = PlaybackState.ACTION_PLAY_PAUSE |
             PlaybackState.ACTION_PLAY_FROM_MEDIA_ID |
             PlaybackState.ACTION_PLAY_FROM_SEARCH;
     if (mPlayingQueue == null || mPlayingQueue.isEmpty()) {
@@ -107,6 +105,8 @@
     }
     if (mState == PlaybackState.STATE_PLAYING) {
         actions |= PlaybackState.ACTION_PAUSE;
+    } else {
+        actions |= PlaybackState.ACTION_PLAY;
     }
     if (mCurrentIndexOnQueue &gt; 0) {
         actions |= PlaybackState.ACTION_SKIP_TO_PREVIOUS;
@@ -120,10 +120,11 @@
 
 <h2 id="metadata">Display the Media Metadata</h2>
 
-<p>For the track currently playing, set the {@link android.media.MediaMetadata} with the
+<p>Set the {@link android.media.MediaMetadata} with the
 {@link android.media.session.MediaSession#setMetadata(android.media.MediaMetadata) setMetadata()}
-method. This method of the media session object lets you provide information to the Now Playing card
-about the track such as the title, subtitle, and various icons. The following example assumes your
+method. This method of the media session object lets you provide information to
+the <em>Now Playing</em> card about the track such as the title, subtitle,
+and various icons. The following example assumes your
 track's data is stored in a custom data class, {@code MediaData}.</p>
 
 <pre>
@@ -143,7 +144,7 @@
     metadataBuilder.putString(MediaMetadata.METADATA_KEY_ARTIST,
             myData.artist);
     // A small bitmap for the artwork is also recommended
-    metadataBuilder.putString(MediaMetadata.METADATA_KEY_ART,
+    metadataBuilder.putBitmap(MediaMetadata.METADATA_KEY_ART,
             myData.artBitmap);
     // Add any other fields you have for your data as well
     mSession.setMetadata(metadataBuilder.build());
@@ -152,8 +153,9 @@
 
 <h2 id="respond">Respond to User Action</h2>
 
-<p>When the user selects the Now Playing card, the system opens the app that owns the session.
-If your app provides a {@link android.app.PendingIntent} to pass to
+<p>When the user selects the <em>Now Playing</em> card, the system
+opens the app that owns the session.
+If your app provides a {@link android.app.PendingIntent} to
 {@link android.media.session.MediaSession#setSessionActivity(android.app.PendingIntent) setSessionActivity()},
 the system launches the activity you specify, as demonstrated below. If not, the default system
 intent opens. The activity you specify must provide playback controls that allow users to pause or
diff --git a/docs/html/training/tv/playback/options.jd b/docs/html/training/tv/playback/options.jd
new file mode 100644
index 0000000..c65343d
--- /dev/null
+++ b/docs/html/training/tv/playback/options.jd
@@ -0,0 +1,66 @@
+page.title=Enabling Background Playback
+page.tags=tv, play, playback, background
+helpoutsWidget=true
+
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+  <h2>This lesson teaches you to</h2>
+  <ol>
+    <li><a href="#background">Request Background Playback</a></li>
+  </ol>
+</div>
+</div>
+
+<p>
+A user watching content on a TV device may decide to switch to the TV launcher at any time.
+If a user switches to the launcher while using a TV playback app, by default the app is paused.
+Since the user did not explicitly request to pause playback, the default behavior might seem
+abrupt and unexpected. This lesson describes how to enable background playback in your app,
+which provides a better user experience.
+</p>
+
+<h2 id="background">Request Background Playback</h2>
+
+<p>Normally, when the user clicks on <strong>Home</strong> to display the TV
+launcher, the activity pauses. However, your app can request background playback, in
+which the activity continues playing behind the TV launcher.</p>
+
+<p>To request background playback, call
+{@link android.app.Activity#requestVisibleBehind requestVisibleBehind()}.
+Be sure to clean up media resources if the activity stops being
+visible. For example, you should free media resources if
+{@link android.app.Activity#requestVisibleBehind requestVisibleBehind()}
+returns <code>false</code> to indicate that the request failed, or if the system calls
+your override of {@link android.app.Activity#onVisibleBehindCanceled onVisibleBehindCanceled()}.
+</p>
+
+<pre>
+&commat;Override
+public void onPause() &lbrace;
+  super.onPause();
+  if (mVideoView.isPlaying()) &lbrace;
+    // Argument equals true to notify the system that the activity
+    // wishes to be visible behind other translucent activities
+    if (! requestVisibleBehind(true)) &lbrace;
+      // App-specific method to stop playback and release resources
+      // because call to requestVisibleBehind(true) failed
+      stopPlayback();
+    &rbrace;
+  &rbrace; else &lbrace;
+    // Argument equals false because the activity is not playing
+    requestVisibleBehind(false);
+  &rbrace;
+&rbrace;
+
+&commat;Override
+public void onVisibleBehindCanceled() &lbrace;
+  // App-specific method to stop playback and release resources
+  stopPlayback();
+  super.onVisibleBehindCanceled();
+&rbrace;
+</pre>
+
diff --git a/docs/html/training/tv/publishing/checklist.jd b/docs/html/training/tv/publishing/checklist.jd
index 6259721..c044f0e 100644
--- a/docs/html/training/tv/publishing/checklist.jd
+++ b/docs/html/training/tv/publishing/checklist.jd
@@ -137,6 +137,11 @@
   <p>See <a href="{@docRoot}training/tv/start/layouts.html#advertising">Provide Effective Advertising</a>.</p>
 </li>
 
+<li>
+  Use the Leanback library for guiding the user through a series of decisions.
+  <p>See <a href="{@docRoot}training/tv/playback/guided-step.html">Adding a Guided Step</a>.</p>
+</li>
+
 </ol>
 
 
diff --git a/docs/html/training/tv/start/hardware.jd b/docs/html/training/tv/start/hardware.jd
index 5747b56..9a66c09 100644
--- a/docs/html/training/tv/start/hardware.jd
+++ b/docs/html/training/tv/start/hardware.jd
@@ -100,10 +100,6 @@
     <td>{@code android.hardware.camera}</td>
   </tr>
   <tr>
-    <td>Bluetooth</td>
-    <td>{@code android.hardware.bluetooth}</td>
-  </tr>
-  <tr>
     <td>Near Field Communications (NFC)</td>
     <td>{@code android.hardware.nfc}</td>
   </tr>
@@ -159,8 +155,6 @@
         android:required="false"/&gt;
 &lt;uses-feature android:name="android.hardware.camera"
         android:required="false"/&gt;
-&lt;uses-feature android:name="android.hardware.bluetooth"
-        android:required="false"/&gt;
 &lt;uses-feature android:name="android.hardware.nfc"
         android:required="false"/&gt;
 &lt;uses-feature android:name="android.hardware.location.gps"
@@ -172,7 +166,7 @@
 </pre>
 
 <p class="note"><strong>Note:</strong> Some features have subfeatures like {@code android.hardware.camera.front},
-  as described in the <a href="guide/topics/manifest/uses-feature-element.html#features-reference">
+  as described in the <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html#features-reference">
   Feature Reference</a>. Be sure to mark as {@code required="false"} any subfeatures also used in
   your app.</p>
 
diff --git a/docs/html/training/tv/start/layouts.jd b/docs/html/training/tv/start/layouts.jd
index 2b190b4..4ca77d0 100644
--- a/docs/html/training/tv/start/layouts.jd
+++ b/docs/html/training/tv/start/layouts.jd
@@ -117,25 +117,43 @@
   This behavior is generally referred to as <em>overscan</em>.
 </p>
 
-<p>
-  Avoid screen elements being clipped due to overscan and by incorporating a 10% margin
-  on all sides of your layout. This translates into a 48dp margin on the left and right edges and
-  a 27dp margin on the top and bottom of your base layouts for activities. The following
-  example layout demonstrates how to set these margins in the root layout for a TV app:
+<p>Screen elements that must be visible to the user at all times should be positioned within the
+overscan safe area. Adding a 5% margin of 48dp on the left and right edges and 27dp on the top and
+bottom edges to a layout ensures that screen elements in that layout will be within the overscan
+safe area.
+</p>
+
+<p>Background screen elements that the user doesn't directly interact with should not be adjusted or
+clipped to the overscan safe area. This approach ensures that background screen elements look
+correct on all screens.
+</p>
+
+<p>The following example shows a root layout that can contain background elements, and a nested
+child layout that has a 5% margin and can contain elements within the overscan safe area:
 </p>
 
 <pre>
 &lt;?xml version="1.0" encoding="utf-8"?&gt;
-&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/base_layout"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:orientation="vertical"
-  android:layout_marginTop="27dp"
-  android:layout_marginLeft="48dp"
-  android:layout_marginRight="48dp"
-  android:layout_marginBottom="27dp" &gt;
-&lt;/LinearLayout&gt;
+&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+   android:layout_width="match_parent"
+   android:layout_height="match_parent"
+   &gt;
+
+   &lt;!-- Screen elements that can render outside the overscan safe area go here --&gt;
+
+   &lt;!-- Nested RelativeLayout with overscan-safe margin --&gt;
+   &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+       android:layout_width="match_parent"
+       android:layout_height="match_parent"
+       android:layout_marginTop="27dp"
+       android:layout_marginBottom="27dp"
+       android:layout_marginLeft="48dp"
+       android:layout_marginRight="48dp"&gt;
+
+      &lt;!-- Screen elements that need to be within the overscan safe area go here --&gt;
+
+   &lt;/RelativeLayout&gt;
+&lt;/RelativeLayout&gt;
 </pre>
 
 <p class="caution">
diff --git a/docs/html/training/tv/start/start.jd b/docs/html/training/tv/start/start.jd
old mode 100644
new mode 100755
index 4d04ad6..0c04bfa
--- a/docs/html/training/tv/start/start.jd
+++ b/docs/html/training/tv/start/start.jd
@@ -228,6 +228,27 @@
   design guide.
 </p>
 
+<h3 id="transition-color">Change the launcher color</h3>
+
+<p>When a TV app launches, the system displays an animation that resembles an expanding, filled
+  circle. To customize the color of this animation, set the <code>android:colorPrimary</code>
+  attribute of your TV app or activity to a specific color. You should also set two additional
+  transition overlap attributes to <code>true</code>, as shown in the following snippet from a
+  theme resource XML file:</p>
+
+<pre>
+&lt;resources&gt;
+    &lt;style ... &gt;
+      &lt;item name="android:colorPrimary"&gt;&#64;color/primary&lt;/item&gt;
+      &lt;item name="android:windowAllowReturnTransitionOverlap"&gt;true&lt;/item&gt;
+      &lt;item name="android:windowAllowEnterTransitionOverlap"&gt;true&lt;/item&gt;
+    &lt;/style&gt;
+&lt;/resources&gt;
+</pre>
+
+<p>For more information about working with themes and styles, see
+<a href="{@docRoot}guide/topics/ui/themes.html">Styles and Themes</a>.</p>
+
 <h2 id="tv-libraries">Add TV Support Libraries</h3>
 
 <p>
@@ -346,7 +367,5 @@
   For more information about using emulators see, <a href="{@docRoot}tools/devices/emulator.html">
   Using the Emulator</a>. For more information on deploying apps from Android Studio to virtual
   devices, see <a href="{@docRoot}sdk/installing/studio-debug.html">Debugging with Android
-  Studio</a>. For more information about deploying apps to emulators from Eclipse with ADT, see
-  <a href="{@docRoot}tools/building/building-eclipse.html">Building and Running from Eclipse with
-  ADT</a>.
+  Studio</a>.
 </p>
diff --git a/docs/html/training/tv/tif/tvinput.jd b/docs/html/training/tv/tif/tvinput.jd
index 91f8ded..1a53398 100644
--- a/docs/html/training/tv/tif/tvinput.jd
+++ b/docs/html/training/tv/tif/tvinput.jd
@@ -12,7 +12,7 @@
   <ol>
     <li><a href="#manifest">Declare Your TV Input Service in the Manifest</a></li>
     <li><a href="#tvinput">Define Your TV Input Service</a></li>
-    <li><a href="#setup">Define Setup and Settings Activities</a></li>
+    <li><a href="#setup">Define Your Setup Activity</a></li>
   </ol>
   <h2>You should also read</h2>
   <ul>
@@ -82,18 +82,14 @@
 
 <p>Define the service meta data in separate XML file, as shown in the following example. The service
 meta data must include a setup interface that describes the TV input's initial configuration and
-channel scan. Also, the service meta data may (optionally) describe a settings activity for users to
-modify the TV input's behavior. The service meta data file is located in the XML resources directory
+channel scan. The service meta data file is located in the XML resources directory
 for your application and must match the name of the resource in the manifest. Using the example
 manifest entries above, you would create an XML file in the location
 <code>res/xml/sample_tv_input.xml</code>, with the following contents:</p>
 
 <pre>
 &lt;tv-input xmlns:android="http://schemas.android.com/apk/res/android"
-  &lt;!-- Required: activity for setting up the input --&gt;
-  android:setupActivity="com.example.sampletvinput.SampleTvInputSetupActivity"
-  &lt;!-- Optional: activity for controlling the settings --&gt;
-  android:settingsActivity="com.example.sampletvinput.SampleTvInputSettingsActivity" /&gt;
+  android:setupActivity="com.example.sampletvinput.SampleTvInputSetupActivity" /&gt;
 </pre>
 
 <h2 id="tvinput">Define Your TV Input Service</h2>
@@ -157,21 +153,16 @@
 <p>The {@link android.media.tv.TvInputService.Session} handles the
 {@link android.media.tv.TvInputService.Session#onTune(android.net.Uri) onTune()}
 event when the user selects a channel, and notifies the system TV app for changes in the content and
-content meta data. These <code>notify()</code>code> methods are described in
+content meta data. These <code>notify()</code> methods are described in
 <a href="{@docRoot}training/tv/tif/ui.html#control">
-Control Content</a> and <a href="training/tv/tif/ui.html#track">Handle Track Selection</a> further
-in this training.</p>
+Control Content</a> and <a href="{@docRoot}training/tv/tif/ui.html#track">Handle Track Selection</a>
+further in this training.</p>
 
-<h2 id="setup">Define Setup and Settings Activities</h2>
+<h2 id="setup">Define Your Setup Activity</h2>
 
-<p>The system TV app works with the setup and settings activities you define for your TV input. The
+<p>The system TV app works with the setup activity you define for your TV input. The
 setup activity is required and must provide at least one channel record for the system database. The
 system TV app will invoke the setup activity when it cannot find a channel for the TV input.
 <p>The setup activity describes to the system TV app the channels made available through the TV
 input, as demonstrated in the next lesson, <a href="{@docRoot}training/tv/tif/channel.html">Creating
 and Updating Channel Data</a>.</p>
-
-<p>The settings activity is optional. You can define a settings activity to turn on parental
-controls, enable closed captions, set the display attributes, and so forth.</p>
-
-
diff --git a/docs/html/training/volley/index.jd b/docs/html/training/volley/index.jd
old mode 100644
new mode 100755
index ff74634..31c0ed0
--- a/docs/html/training/volley/index.jd
+++ b/docs/html/training/volley/index.jd
@@ -23,7 +23,7 @@
 </div>
 </div>
 
-<a class="notice-developers-video wide" href="https://developers.google.com/events/io/sessions/325304728">
+<a class="notice-developers-video wide" href="https://www.youtube.com/watch?v=yhv8l9F44qo">
 <div>
     <h3>Video</h3>
     <p>Volley: Easy, Fast Networking for Android</p>
@@ -77,9 +77,9 @@
 </pre>
 </li>
 
-<li>Import the downloaded source into your app project as an Android library project
-(as described in <a href="{@docRoot}tools/projects/projects-eclipse.html">
-Managing Projects from Eclipse with ADT</a>, if you're using Eclipse) or make a
+<li>Import the downloaded source into your app project as an Android library module
+(as described in <a href="{@docRoot}sdk/installing/create-project.html#SettingUpLibraryModule">
+Managing Projects from Android Studio</a>, if you're using Android Studio) or make a
 <a href="{@docRoot}guide/faq/commontasks.html#addexternallibrary"><code>.jar</code> file</a>.</li>
 </ol>
 
diff --git a/docs/html/training/volley/request-custom.jd b/docs/html/training/volley/request-custom.jd
index c62c254..9c3eb57 100644
--- a/docs/html/training/volley/request-custom.jd
+++ b/docs/html/training/volley/request-custom.jd
@@ -16,7 +16,7 @@
 </div>
 </div>
 
-<a class="notice-developers-video wide" href="https://developers.google.com/events/io/sessions/325304728">
+<a class="notice-developers-video wide" href="https://www.youtube.com/watch?v=yhv8l9F44qo">
 <div>
     <h3>Video</h3>
     <p>Volley: Easy, Fast Networking for Android</p>
diff --git a/docs/html/training/volley/request.jd b/docs/html/training/volley/request.jd
index 8a7dc62..a2b2ecd 100644
--- a/docs/html/training/volley/request.jd
+++ b/docs/html/training/volley/request.jd
@@ -17,7 +17,7 @@
 </div>
 </div>
 
-<a class="notice-developers-video wide" href="https://developers.google.com/events/io/sessions/325304728">
+<a class="notice-developers-video wide" href="https://www.youtube.com/watch?v=yhv8l9F44qo">
 <div>
     <h3>Video</h3>
     <p>Volley: Easy, Fast Networking for Android</p>
diff --git a/docs/html/training/volley/requestqueue.jd b/docs/html/training/volley/requestqueue.jd
index 6d19cee..f8c61aa 100644
--- a/docs/html/training/volley/requestqueue.jd
+++ b/docs/html/training/volley/requestqueue.jd
@@ -17,7 +17,7 @@
 </div>
 </div>
 
-<a class="notice-developers-video wide" href="https://developers.google.com/events/io/sessions/325304728">
+<a class="notice-developers-video wide" href="https://www.youtube.com/watch?v=yhv8l9F44qo">
 <div>
     <h3>Video</h3>
     <p>Volley: Easy, Fast Networking for Android</p>
@@ -39,36 +39,11 @@
 of the requests, and a cache to handle caching. There are standard implementations of these
 available in the Volley toolbox: {@code DiskBasedCache} provides a one-file-per-response
 cache with an in-memory index, and {@code BasicNetwork} provides a network transport based
-on your choice of the Apache HTTP client {@code android.net.http.AndroidHttpClient} or
-{@link java.net.HttpURLConnection}.</p>
+on your preferred HTTP client.</p>
 
 <p>{@code BasicNetwork} is Volley's default network implementation. A {@code BasicNetwork}
 must be initialized with the HTTP client your app is using to connect to the network.
-Typically this is a {@link java.net.HttpURLConnection}:</p>
-<ul>
-<li>Use {@code android.net.http.AndroidHttpClient} for apps targeting Android API levels
-lower than API Level 9 (Gingerbread). Prior to Gingerbread, {@link java.net.HttpURLConnection}
-was unreliable. For more discussion of this topic, see
-<a href="http://android-developers.blogspot.com/2011/09/androids-http-clients.html">
-Android's HTTP Clients</a>. </li>
-
-<li>Use {@link java.net.HttpURLConnection} for apps targeting Android API Level 9
-(Gingerbread) and higher.</li>
-</ul>
-<p>To create an app that runs on all versions of Android, you can check the version of
-Android the device is running and choose the appropriate HTTP client, for example:</p>
-
-<pre>
-HttpStack stack;
-...
-// If the device is running a version >= Gingerbread...
-if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
-    // ...use HttpURLConnection for stack.
-} else {
-    // ...use AndroidHttpClient for stack.
-}
-Network network = new BasicNetwork(stack);
-</pre>
+Typically this is an {@link java.net.HttpURLConnection}.</p>
 
 <p>This snippet shows you the steps involved in setting up a
 {@code RequestQueue}:</p>
@@ -88,7 +63,7 @@
 // Start the queue
 mRequestQueue.start();
 
-String url ="http://www.myurl.com";
+String url ="http://www.example.com";
 
 // Formulate the request and handle the response.
 StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
@@ -107,7 +82,8 @@
 
 // Add the request to the RequestQueue.
 mRequestQueue.add(stringRequest);
-...
+
+// ...
 </pre>
 
 <p>If you just need to make a one-time request and don't want to leave the thread pool
@@ -198,7 +174,8 @@
 // Get a RequestQueue
 RequestQueue queue = MySingleton.getInstance(this.getApplicationContext()).
     getRequestQueue();
-...
+
+// ...
 
 // Add a request (in this example, called stringRequest) to your RequestQueue.
 MySingleton.getInstance(this).addToRequestQueue(stringRequest);
diff --git a/docs/html/training/volley/simple.jd b/docs/html/training/volley/simple.jd
index ecb5fde..ab61b9b 100644
--- a/docs/html/training/volley/simple.jd
+++ b/docs/html/training/volley/simple.jd
@@ -19,7 +19,7 @@
 </div>
 </div>
 
-<a class="notice-developers-video wide" href="https://developers.google.com/events/io/sessions/325304728">
+<a class="notice-developers-video wide" href="https://www.youtube.com/watch?v=yhv8l9F44qo">
 <div>
     <h3>Video</h3>
     <p>Volley: Easy, Fast Networking for Android</p>
@@ -101,7 +101,7 @@
 parsed on the cache thread and the parsed response is delivered on the main thread. If the
 request cannot be serviced from cache, it is placed on the network queue. The first
 available network thread takes the request from the queue, performs the HTTP transaction,
-parsse the response on the worker thread, writes the response to cache, and posts the parsed
+parses the response on the worker thread, writes the response to cache, and posts the parsed
 response back to the main thread for delivery.</p>
 
 <p>Note that expensive operations like blocking I/O and parsing/decoding are done on worker
diff --git a/docs/html/training/wearables/apps/always-on.jd b/docs/html/training/wearables/apps/always-on.jd
index d384974..9f28b70 100644
--- a/docs/html/training/wearables/apps/always-on.jd
+++ b/docs/html/training/wearables/apps/always-on.jd
@@ -140,11 +140,16 @@
 <p>If the user does not interact with your app for a period of time while it is displayed, or if
 the user covers the screen with their palm, the system switches the activity to ambient mode.
 After the app switches to ambient mode, update the activity UI to a more basic layout to reduce
-power consumption. You should use a black background with minimal white graphics and text. To
-ease a user into the transition from interactive to ambient mode, try to maintain similar placement
-of items on the screen. For more information on presenting content on an ambient screen, see the
+power consumption. You should use a black background with minimal white graphics and text.
+ To ease a user into the transition from interactive to ambient mode, try to maintain similar
+ placement of items on the screen. For more information on presenting content on an ambient screen,
+ see the
 <a href="{@docRoot}design/wear/watchfaces.html#DisplayModes">Watch Faces for Android Wear</a>
-design guide.
+design guide.</p>
+<p> Note that when your app runs on a device without a hardware button, palming the screen does not
+switch an app into ambient mode. Rather, it causes the app to exit and the home screen to appear.
+This behavior is intended to ensure that users can exit apps gracefully. However, these devices still
+ go to ambient mode when the screen times out.
 </p>
 
 <p class="note"><b>Note:</b> In ambient mode, disable any interactive elements on the
diff --git a/docs/html/training/wearables/apps/creating-app-china.jd b/docs/html/training/wearables/apps/creating-app-china.jd
new file mode 100644
index 0000000..d4b3ab7
--- /dev/null
+++ b/docs/html/training/wearables/apps/creating-app-china.jd
@@ -0,0 +1,157 @@
+page.title=Creating Android Wear Apps for China
+parent.title=Training
+parent.link=creating.html
+page.tags= "wearable", "apps", "china"
+page.article=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>This lesson teaches you to</h2>
+<ol>
+  <li><a href="#ChinaSDK">Support Your App on Android Wear for China</a></li>
+  <li><a href="#other-services">Use Other Google Play Services APIs</a></li>
+</ol>
+<h2>Dependencies and prerequisites</h2>
+<ol>
+<li> Android 4.3 (API Level 18) or higher on the handset and wearable device</li>
+</ol>
+<h2>Downloads</h2>
+<ol>
+<div class="download-box">
+<a href="https://dl.google.com/androidwear/developers/china/google-play-services-7-8-87.zip"
+  class="button">Standalone Client Library</a>
+<p class="filename">google-play-services-7-8-87.zip</p>
+</div>
+</ol>
+</div>
+</div>
+
+
+<p>
+Handsets sold in China do not have Google Play services preinstalled. For this reason, wearable
+apps running on devices in China must communicate with paired handsets through the Android Wear
+companion app.  To enable you to develop a single APK that works with both Android Wear for China and
+ Android Wear in the rest of the world, we provide a special variant of the Google Play services
+client library.</p>
+
+<p>
+This client library is compatible with Android 4.3 (API level 18) and higher, and you can simply
+drop it into your app. You do not need to write any new code. Instead, you change several project
+configuration settings, and re-compile your app.
+</p>
+
+
+<p>The rest of this page explains how to perform this process.</p>
+
+
+
+<h2 id = "ChinaSDK">Support Your App on Android Wear for China</h2>
+
+<p>
+<p>In order to support your wearable app on all handsets, you must download and add the Google Play
+Services 7.8.87 client library as a Maven repository in your project, configure your
+development project to use it, and re-compile your app.
+</p>
+
+<h3>Add the Google Play Services 7.8.87 library</h3>
+
+<p>The Google Play services 7.8.87 client library is distributed as a Maven repository. To add this
+repository to your project:</p>
+
+<ol>
+<li><a href="https://dl.google.com/androidwear/developers/china/google-play-services-7-8-87.zip">
+Download</a> the client library.
+The filename is {@code google-play-services-7-8-87.zip}.</li>
+<li>Create a local Maven repository by extracting the {@code google-play-services-7-8-87/} directory
+from the downloaded zip file, and placing it into the root directory of your project.
+</li>
+<li>In your top-level project {@code build.gradle} file, specify the location of the newly created
+local Maven {@code google-play-services-7-8-87} repository.
+</li>
+<p>
+The following example shows how to do so:
+</p>
+<pre>
+allprojects {
+  repositories {
+
+        maven {
+                url "${rootProject.projectDir}/google-play-services-7-8-87"
+              }
+       // ... other repositories may go here ...
+
+    }</pre>
+</ol>
+<h3>Configure your app to use the library</h3>
+<p>In the {@code build.gradle} file of your <em>mobile</em> module replace the Google Play
+ services dependency with a reference to the client library from the newly added repository. The
+ following example shows how to do so:
+</p>
+
+
+<pre>
+dependencies{
+    ...
+    wearApp project(':wear')
+    compile 'com.google.android.gms:play-services-wearable:7.8.87'
+    ...
+    }
+</pre>
+<p>The {@code build.gradle} file of your <em>wear</em> module must also use this version of the
+client library, for example:
+</p>
+<pre>
+dependencies {
+    compile 'com.google.android.support:wearable:1.3.0'
+    compile 'com.google.android.gms:play-services-wearable:7.8.87'
+}
+</pre>
+
+<p class="note"><strong>Note:</strong> If you are using any other Google Play services APIs in your
+wearable app, you must selectively add those Google Play service APIs into your app and explicitly
+ specify the 7.8.87 version. For example to include the Google location API in your wearable app,
+ add the following line in your {@code build.gradle} file:
+</p>
+<pre>
+compile 'com.google.android.gms:play-services-location:7.8.87'
+</pre>
+</p>
+<h3>Build the project</h3>
+
+
+<p>You can now <a href="{@docRoot}training/wearables/apps/packaging.html">build
+</a>a new version of your app and deploy it to Android handsets globally.</p>
+</ol>
+
+
+<h2 id= "other-services">Use Other Google Play services APIs</h2>
+
+<p>
+If your app uses Google Play services APIs other than the Wearable API, then your app needs to check
+whether these APIs are available to use during runtime and respond appropriately. There are two ways
+to check the availability of Google Play service APIs:
+</p>
+
+<ol>
+<li>Use a separate <a href="https://developers.google.com/android/reference/com/google/android/gms/
+common/api/GoogleApiClient.html">{@code GoogleApiClient}</a> instance for connecting to other APIs.
+This interface contains callbacks to alert your app to the success or failure of the connection.
+To learn how to handle connection failures,
+see <a href="https://developers.google.com/android/guides/api-client">Accessing Google APIs</a>.</li>
+
+<li>Use the <a href="https://developers.google.com/android/reference/com/google/android/gms/common/
+api/GoogleApiClient.Builder.html#addApiIfAvailable(com.google.android.gms.common.api.Api<O>, O,
+com.google.android.gms.common.api.Scope...)"> {@code addApiIfAvailable()}</a> method of
+<a href="https://developers.google.com/android/
+reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html">{@code GoogleApiClient.Builder}
+</a>
+to connect to the required APIs. After the <a href = "https://developers.google.com/android/reference/
+com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks#onConnected(android.os.Bundle)">
+{@code onConnected()}</a> callback fires, check if each of the requested API is connected correctly
+using the <a href="https://developers.google.com/android/reference/com/google/android/gms/common/api/
+GoogleApiClient.html#hasConnectedApi(com.google.android.gms.common.api.Api<?>)">
+ {@code hasConnectedApi()}</a> method.
+
+</ol>
diff --git a/docs/html/training/wearables/apps/creating.jd b/docs/html/training/wearables/apps/creating.jd
index f1491e4..db91b67 100644
--- a/docs/html/training/wearables/apps/creating.jd
+++ b/docs/html/training/wearables/apps/creating.jd
@@ -51,6 +51,13 @@
 <p>To update your SDK with these components, see
 <a href="{@docRoot}sdk/installing/adding-packages.html#GetTools"> Get the latest SDK tools</a>.</p>
 
+<p class="note"><strong>Note:</strong> If you plan to make your Wear apps available for China,
+  you must use the special release version 7.8.87 of the Google Play services client library to handle
+  communication between handset and wearable.
+
+ For information on how to configure Wear apps for China, see
+ <a href="{@docRoot}training/wearables/apps/creating-app-china.html"> Creating Android Wear Apps for
+ China</a>.</p>
 
 <h2 id="SetupEmulator">Set Up an Android Wear Emulator or Device</h2>
 <p>We recommend that you develop on real hardware so you can better
diff --git a/docs/html/training/wearables/apps/index.jd b/docs/html/training/wearables/apps/index.jd
old mode 100644
new mode 100755
index e2a71de..da83cfa
--- a/docs/html/training/wearables/apps/index.jd
+++ b/docs/html/training/wearables/apps/index.jd
@@ -66,10 +66,9 @@
 need to show persistent content on versions prior to Android 5.1, create a notification in the
 context stream instead.</p>
 
-<p class="note"><b>Note:</b> We recommend using Android Studio for Android Wear development
-as it provides project setup, library inclusion, and packaging conveniences that aren't available
-in ADT. The rest of this training assumes you're using Android Studio.
-</p>
+<p class="note"><b>Note:</b> We recommend using Android Studio for Android Wear development,
+as it provides project setup, library inclusion, and packaging conveniences. The rest of this
+training assumes you're using Android Studio.</p>
 
 <h2>Lessons</h2>
   <dl>
@@ -92,4 +91,4 @@
       users install the companion handheld app from the Google Play store.</dd>
     <dt><a href="{@docRoot}training/wearables/apps/bt-debugging.html">Debugging over Bluetooth</a></dt>
       <dd>Learn how to debug your wearable over Bluetooth instead of USB.</dd>
-  </dl>
\ No newline at end of file
+  </dl>
diff --git a/docs/html/training/wearables/apps/layouts.jd b/docs/html/training/wearables/apps/layouts.jd
old mode 100644
new mode 100755
index 197b94b0c..6480e63
--- a/docs/html/training/wearables/apps/layouts.jd
+++ b/docs/html/training/wearables/apps/layouts.jd
@@ -199,12 +199,6 @@
 <a href="{@docRoot}reference/android/support/wearable/view/package-summary.html">Wear API
 reference documentation</a> for the classes above.</p>
 
-<h3 id="UiLibEclipse">Download the Wearable UI library for Eclipse ADT</h3>
-
-<p>If you are using the ADT plugin for Eclipse, download the
-<a href="{@docRoot}shareables/training/wearable-support-lib.zip">Wearable UI library</a> to
-include the Wearable UI library as a dependency in your project.</p>
-
-<p class="note"><strong>Note:</strong> We recommend
-<a href="{@docRoot}sdk/index.html">Android Studio</a> for Android Wear app
-development.</p>
+<p class="note"><strong>Note:</strong> We recommend using <a
+href="{@docRoot}sdk/index.html">Android Studio</a> for Android Wear development, as
+it provides project setup, library inclusion, and packaging conveniences.</p>
diff --git a/docs/html/training/wearables/data-layer/data-items.jd b/docs/html/training/wearables/data-layer/data-items.jd
index 49a8d32..b526946 100644
--- a/docs/html/training/wearables/data-layer/data-items.jd
+++ b/docs/html/training/wearables/data-layer/data-items.jd
@@ -38,25 +38,34 @@
   <li>Call <a href="{@docRoot}reference/com/google/android/gms/wearable/PutDataRequest.html#setData(byte[])">
   <code>setData()</code></a> to set the payload.
   </li>
+
+  <li>
+  If a delay in syncing would negatively impact user experience, call
+  <a href="{@docRoot}reference/com/google/android/gms/wearable/PutDataRequest#setUrgent()">
+  {@code setUrgent()}</a>.
+  </li>
+
   <li>Call <a href="{@docRoot}reference/com/google/android/gms/wearable/DataApi.html#putDataItem(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.PutDataRequest)"><code>DataApi.putDataItem()</code></a> to request the system to create the data item.
   </li>
-  <li>When requesting data items, the system returns objects
-  that properly implement the <a href="{@docRoot}reference/com/google/android/gms/wearable/DataItem.html"><code>DataItem</code></a> interface.
-  </li>
-</ol>
+  </ol>
 
 <p>
-However, instead of working with raw bytes using <a href="{@docRoot}reference/com/google/android/gms/wearable/PutDataRequest.html#setData(byte[])"><code>setData()</code></a>,
-we recommend you <a href="#SyncData">use a data map</a>, which exposes
+When requesting data items, the system returns objects that properly implement the
+<a href="{@docRoot}reference/com/google/android/gms/wearable/DataItem.html"><code>DataItem</code>
+</a> interface. However, instead of working with raw bytes using
+<a href="{@docRoot}reference/com/google/android/gms/wearable/PutDataRequest.html#setData(byte[])">
+<code>setData()</code></a>, we recommend you <a href="#SyncData">use a data map</a>, which exposes
 a data item in an easy-to-use {@link android.os.Bundle}-like interface.
 </p>
 
 
 <h2 id="SyncData">Sync Data with a Data Map</h2>
 <p>
-When possible, use the <a href="{@docRoot}reference/com/google/android/gms/wearable/DataMap.html"><code>DataMap</code></a> class.
+When possible, use the <a href="{@docRoot}reference/com/google/android/gms/wearable/DataMap.html">
+<code>DataMap</code></a> class.
 This approach lets you work with data items in the form of an Android {@link android.os.Bundle},
-so object serialization and de-serialization is done for you, and you can manipulate data with key-value pairs.
+so the system does object serialization and deserialization for you, and you can manipulate data
+with key-value pairs.
 </p>
 
 <p>To use a data map:</p>
@@ -77,11 +86,23 @@
   <li>Set any desired values for the data map using the <code>put...()</code> methods, such as
   <a href="{@docRoot}reference/com/google/android/gms/wearable/DataMap.html#putString(java.lang.String, java.lang.String)"><code>putString()</code></a>.
   </li>
+
+   <li>
+   If a delay in syncing would negatively impact user experience, call
+   <a href="{@docRoot}reference/com/google/android/gms/wearable/PutDataRequest#setUrgent()">
+   {@code setUrgent()}</a>.
+   </li>
+
+
   <li>Call <a href="{@docRoot}reference/com/google/android/gms/wearable/PutDataMapRequest.html#asPutDataRequest()"><code>PutDataMapRequest.asPutDataRequest()</code></a>
   to obtain a <a href="{@docRoot}reference/com/google/android/gms/wearable/PutDataRequest.html"><code>PutDataRequest</code></a> object.
    </li>
+
+
   <li>Call <a href="{@docRoot}reference/com/google/android/gms/wearable/DataApi.html#putDataItem(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.PutDataRequest)"><code>DataApi.putDataItem()</code></a> to request the system to create the data item.
+
   <p class="note"><b>Note:</b>
+
   If the handset and wearable devices are disconnected,
   the data is buffered and synced when the connection is re-established.
   </p>
@@ -124,6 +145,40 @@
 Layer Calls</a>.</p>
 
 
+<h3>Set DataItem priority</h3>
+
+<p>
+In <a href="https://developers.google.com/android/guides/releases">Google Play services 8.3 and later</a>,
+the
+<a href="{@docRoot}reference/com/google/android/gms/wearable/DataApi">{@code DataApi}</a> interface
+allows urgent requests for syncing of
+<a href="{@docRoot}reference/com/google/android/gms/wearable/DataItem">{@code DataItems}</a>.
+Normally, the system may delay delivery of
+<a href="{@docRoot}reference/com/google/android/gms/wearable/DataItem">{@code DataItems}</a>
+to the Wear network in order to improve battery life
+for user devices, but if a delay in syncing
+<a href="{@docRoot}reference/com/google/android/gms/wearable/DataItem">{@code DataItems}</a>
+would negatively impact user experience, you
+can mark them as urgent. For example, in a remote control app where the user expects their actions to be
+reflected immediately, you can have the system sync your
+<a href="{@docRoot}reference/com/google/android/gms/wearable/DataItem">{@code DataItems}</a>
+immediately by calling
+<a href="{@docRoot}reference/com/google/android/gms/wearable/PutDataRequest#setUrgent()">
+{@code setUrgent()}</a>.
+</p>
+
+<p>
+If you do not call
+<a href="{@docRoot}reference/com/google/android/gms/wearable/PutDataRequest#setUrgent()">
+{@code setUrgent()}</a>, the system may delay up to 30 minutes before syncing non-urgent
+<a href="{@docRoot}reference/com/google/android/gms/wearable/DataItem">{@code DataItems}</a>,
+but you can usually expect the delay to be a few minutes, if at all.
+The default urgency is now non-urgent, so you must use
+<a href="{@docRoot}reference/com/google/android/gms/wearable/PutDataRequest#setUrgent()">
+{@code setUrgent()}</a> if you wish to retain the immediate-sync behavior that
+existed in previous versions of the Wear API.
+</p>
+
 <h2 id="ListenEvents">Listen for Data Item Events</h2>
 
 <p>If one side of the data layer connection changes a data item, you probably want
@@ -158,7 +213,7 @@
 
     &#64;Override
     protected void onResume() {
-        super.onStart();
+        super.onResume();
         mGoogleApiClient.connect();
     }
 
diff --git a/docs/html/training/wearables/data-layer/events.jd b/docs/html/training/wearables/data-layer/events.jd
index c797f68..9bed9d5 100644
--- a/docs/html/training/wearables/data-layer/events.jd
+++ b/docs/html/training/wearables/data-layer/events.jd
@@ -68,72 +68,100 @@
 </pre>
 
 
-<h2 id="Listen">Listen for Data Layer Events </h2>
-<p>Because the data layer synchronizes and sends data across the handheld and
-wearable, you normally want to listen for important events, such as when data items
-are created, messages are received, or when the wearable and handset are connected.
+<h2 id="Listen">Listen for Data Layer Events</h2>
+<p>
+Because the data layer synchronizes and sends data across the handheld and
+wearable, it is usually necessary to listen for important events. Examples of
+such events include creation of data items and receipt of messages.
 </p>
-<p>To listen for data layer events, you have two options:</p>
-
+<p>
+To listen for data layer events, you have two options:
+</p>
 <ul>
-  <li>Create a service that extends
-  <a href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html"><code>WearableListenerService</code></a>.
-  </li>
-  <li>Create an activity that implements
-  <a href="{@docRoot}reference/com/google/android/gms/wearable/DataApi.DataListener.html"><code>DataApi.DataListener</code></a>.
-  </li>
+   <li>Create a service that extends <a href
+="https://developer.android.com/reference/com/google/android/gms/wearable/WearableListenerService.html">
+{@code WearableListenerService}</a>.</li>
+   <li>Create an activity that implements <a
+href="https://developer.android.com/reference/com/google/android/gms/wearable/DataApi.DataListener.html">
+{@code DataApi.DataListener}</a>.</li>
 </ul>
-
-<p>With both these options, you override the data event callback methods for the events you
-are interested in handling.</p>
-
-<h3 id="listener-service">With a WearableListenerService</h3>
+<p>
+With both these options, you override the data event callback methods for the
+events you are interested in handling.
+</p>
+<h3>With a WearableListenerService</h3>
+<p>
+You typically create instances of this service in both your wearable and
+handheld apps. If you are not interested in data events in one of these apps,
+then you don't need to implement this service in that particular app.
+</p>
+<p>
+For example, you can have a handheld app that sets and gets data item objects
+and a wearable app that listens for these updates to update its UI. The
+wearable never updates any of the data items, so the handheld app doesn't
+listen for any data events from the wearable app.
+</p>
+<p>
+Some of the events you can listen for using <a
+href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html">
+{@code WearableListenerService}</a> are as follows:
+</p>
+<ul>
+  <li><a
+href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html#onDataChanged(com.google.android.gms.wearable.DataEventBuffer)">
+{@code onDataChanged()}</a>:
+Whenever a data item object is created, deleted, or changed, the system triggers
+this callback on all connected nodes.
+</li>
+<li><a
+href="http://developer.android.com/reference/com/google/android/gms/wearable/WearableListenerService.html#onMessageReceived(com.google.android.gms.wearable.MessageEvent)">
+{@code onMessageReceived()}</a>:  A message sent from a node triggers
+this callback on the target node.</li>
+<li><a
+href="https://developers.google.com/android/reference/com/google/android/gms/wearable/WearableListenerService.html#onCapabilityChanged(com.google.android.gms.wearable.CapabilityInfo)">
+{@code onCapabilityChanged()}</a>:
+When a capability that an instance of your app advertises becomes available
+on the network, that event triggers this callback. If you're looking for a
+nearby node you can query the
+<a
+href="https://developers.google.com/android/reference/com/google/android/gms/wearable/Node.html#isNearby()">
+{@code isNearby()}</a> method of the nodes provided in the callback.</li>
 
 <p>
-You typically create instances of this service in both your wearable and handheld apps. If you
-are not interested in data events in one of these apps, then you don't need to implement this
-service in that particular app.</p>
-
-<p>For example, you can have a handheld app that sets and gets data item objects and a wearable app
-that listens for these updates to update it's UI. The wearable never updates any of the data items,
-so the handheld app doesn't listen for any data events from the wearable app.</p>
-
-<p>You can listen for the following events with
-<a href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html"><code>WearableListenerService</code></a>:</p>
-
-<ul>
-  <li><a href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html#onDataChanged(com.google.android.gms.wearable.DataEventBuffer)"><code>onDataChanged()</code></a>
-- Called when data item objects are created, changed, or deleted. An event on one side of a connection
-triggers this callback on both sides.</li>
-  <li><a href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html#onMessageReceived(com.google.android.gms.wearable.MessageEvent)"><code>onMessageReceived()</code></a>
--  A message sent from one side of a connection triggers this callback on the other side of the connection.</li>
-  <li><a href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html#onMessageReceived(com.google.android.gms.wearable.MessageEvent)"><code>onPeerConnected()</code></a>
-  and <a href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html#onPeerDisconnected(com.google.android.gms.wearable.Node)"><code>onPeerDisconnected()</code></a> -
-  Called when the connection with the handheld or wearable is connected or disconnected.
-  Changes in connection state on one side of the connection trigger these callbacks on both sides
-  of the connection.
-  </li>
+In addition to those on this list, you can listen for events from
+<a href="https://developers.google.com/android/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener">
+{@code ChannelApi.ChannelListener}</a>, such as
+<a href="https://developers.google.com/android/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelOpened(com.google.android.gms.wearable.Channel)">
+{@code onChannelOpened()}</a>.
+</p>
 </ul>
-
-<p>To create a <a href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html"><code>WearableListenerService</code></a>:</p>
+<p>To create a <a
+href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html"><code>WearableListenerService</code></a>, follow these steps:</p>
 
 <ol>
   <li>Create a class that extends
-  <a href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html"><code>WearableListenerService</code></a>.
+  <a
+href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html"><code>WearableListenerService</code></a>.
   </li>
   <li>Listen for the events that you're interested in, such as
-  <a href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html#onDataChanged(com.google.android.gms.wearable.DataEventBuffer)"><code>onDataChanged()</code></a>.
+  <a
+href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html#onDataChanged(com.google.android.gms.wearable.DataEventBuffer)">
+<code>onDataChanged()</code></a>.
   </li>
-  <li>Declare an intent filter in your Android manifest to notify the system about your
-  <a href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html"><code>WearableListenerService</code></a>.
-  This allows the system to bind your service as needed.
+  <li>Declare an intent filter in your Android manifest to notify the system
+about your
+  <a
+href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html"><code>
+WearableListenerService</code></a>.
+  This declaration allows the system to bind your service as needed.
   </li>
 </ol>
 
   <p>The following example shows how to implement a simple
-  <a href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html"><code>WearableListenerService</code></a>:
+  <a
+href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html"><code>
+WearableListenerService</code></a>:
   </p>
-
 <pre>
 public class DataLayerListenerService extends WearableListenerService {
 
@@ -146,7 +174,7 @@
         if (Log.isLoggable(TAG, Log.DEBUG)) {
             Log.d(TAG, "onDataChanged: " + dataEvents);
         }
-        final List<DataEvent> events = FreezableUtils
+        final List events = FreezableUtils
                 .freezeIterable(dataEvents);
 
         GoogleApiClient googleApiClient = new GoogleApiClient.Builder(this)
@@ -179,85 +207,139 @@
 }
 </pre>
 
-<p>Here's the corresponding intent filter in the Android manifest file:</p>
+<p>
+The next section explains how to use an intent filter with this listener.
+</p>
+
+<h3>Using filters with WearableListenerService</h3>
+
+<p>
+An intent filter for the
+<a href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html">
+{@code WearableListenerService}</a> example shown in the previous section might look like this:
 
 <pre>
 &lt;service android:name=".DataLayerListenerService"&gt;
-  &lt;intent-filter&gt;
-      &lt;action android:name="com.google.android.gms.wearable.BIND_LISTENER" /&gt;
+  &lt;intent-filter>
+      &lt;action android:name="com.google.android.gms.wearable.DATA_CHANGED" /&gt;
+      &lt;data android:scheme="wear" android:host="*"
+               android:path="/start-activity" /&gt;
   &lt;/intent-filter&gt;
 &lt;/service&gt;
 </pre>
 
-
-<h4>Permissions within Data Layer Callbacks</h4>
-
 <p>
-To deliver callbacks to your application for data layer events, Google Play services
-binds to your <a href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html"><code>WearableListenerService</code></a>,
-and calls your callbacks via IPC. This has the consequence
-that your callbacks inherit the permissions of the calling process.</p>
-
-<p>If you try to perform a privileged operation within a callback, the security check fails because your callback is
-running with the identity of the calling process, instead of the identity of your app's
-process.</p>
-
-<p>To fix this, call {@link android.os.Binder#clearCallingIdentity} </a>,
-to reset identity after crossing the IPC boundary, and then restore identity with
-{@link android.os.Binder#restoreCallingIdentity restoreCallingIdentity()} when
-you've completed the privileged operation:
+In this filter, the {@code DATA_CHANGED} action replaces the
+previously recommended {@code BIND_LISTENER} action so that only specific
+events wake or launch your application. This change improves system efficiency
+and reduces battery consumption and other overhead associated with your
+application. In this example, the watch listens for the
+{@code /start-activity} data item, and the
+phone listens for the {@code /data-item-received} message response.
+</p>
+<p>
+Standard Android filter matching rules apply. You can specify multiple services
+per manifest, multiple intent filters per service, multiple actions per filter,
+and multiple data stanzas per filter. Filters can match on a wildcard host or on
+a specific one. To match on a wildcard host, use {@code host="*"}. To match
+on a specific host, specify {@code host=&lt;node_id&gt;}.
 </p>
 
-<pre>
-long token = Binder.clearCallingIdentity();
-try {
-    performOperationRequiringPermissions();
-} finally {
-    Binder.restoreCallingIdentity(token);
-}
-</pre>
-
-<h3 id="Listen">With a Listener Activity</h3>
-
 <p>
-If your app only cares about data layer events when the user is interacting
-with the app and does not need a long-running service to handle every data
-change, you can listen for events in an activity by implementing one or more
-of the following interfaces:
+You can also match a literal path or path prefix. If you are matching by path
+or path prefix, you must specify a wildcard or specific host.
+If you do not do so, the system ignores the path you specified.
+</p>
+<p>
+For more information on the filter types that Wear supports, see the
+API reference documentation for <a
+href="https://developers.google.com/android/reference/com/google/android/gms/wearable/WearableListenerService">
+{@code WearableListenerService}</a>.
 
+
+</p>
+<p>
+For more information on data filters and matching rules, see the API reference
+documentation for the <a
+href="{@docRoot}guide/topics/manifest/data-element.html">{@code data}</a>
+manifest element.
+</p>
+
+
+<p>When matching intent filters, there are two important rules to remember:</p>
 <ul>
-  <li><a href="{@docRoot}reference/com/google/android/gms/wearable/DataApi.DataListener.html"><code>DataApi.DataListener</code></a></li>
-  <li><a href="{@docRoot}reference/com/google/android/gms/wearable/MessageApi.MessageListener.html"><code>MessageApi.MessageListener</code></a></li>
-  <li><a href="{@docRoot}reference/com/google/android/gms/wearable/NodeApi.NodeListener.html"><code>NodeApi.NodeListener</code></a></li>
+    <li>If a scheme is not specified for the intent filter, the system ignores
+    all the other URI attributes.</li>
+    <li>If no host is specified for the filter, the system ignores the
+    port attribute and all the path attributes.</li>
 </ul>
+
+<h3>With a listener activity</h3>
+<p>
+If your app only cares about data-layer events when the user is interacting
+with the app, it may not need a long-running service to handle every data
+change. In such a case, you can listen for events in an activity by
+implementing one or more of the following interfaces:
 </p>
+<ul>
+  <li><a href="{@docRoot}reference/com/google/android/gms/wearable/DataApi.DataListener.html"><code>
+  DataApi.DataListener</code></a></li>
+
+  <li><a href="{@docRoot}reference/com/google/android/gms/wearable/MessageApi.MessageListener.html">
+  <code>MessageApi.MessageListener</code></a></li>
+
+  <li><a href="https://developers.google.com/android/reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener.html">{@code CapabilityApi.CapabilityListener}</a></li>
+</ul>
 
 <p>To create an activity that listens for data events:</p>
 <ol>
 <li>Implement the desired interfaces.</li>
-<li>In {@link android.app.Activity#onCreate}, create an instance of
-<a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.html"><code>GoogleApiClient</code></a>
-to work with the Data Layer API.
+<li>In {@link android.app.Activity#onCreate onCreate()}, create an instance of
+<a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.html"><code>GoogleApiClient</code>
+</a>to work with the Data Layer API.</li>
+
 <li>
-In {@link android.app.Activity#onStart onStart()}, call <a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.html#connect()"><code>connect()</code></a> to connect the client to Google Play services.
+In {@link android.app.Activity#onStart onStart()}, call <a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.html#connect()">
+<code>connect()</code></a> to connect the client to Google Play services.
 </li>
+
 <li>When the connection to Google Play services is established, the system calls
 <a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks.html#onConnected(android.os.Bundle)"><code>onConnected()</code></a>. This is where you call
-<a href="{@docRoot}reference/com/google/android/gms/wearable/DataApi.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.DataApi.DataListener)"><code>DataApi.addListener()</code></a>,
-  <a href="{@docRoot}reference/com/google/android/gms/wearable/MessageApi.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.MessageApi.MessageListener)"><code>MessageApi.addListener()</code></a>,
-  or <a href="{@docRoot}reference/com/google/android/gms/wearable/NodeApi.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.NodeApi.NodeListener)"><code>NodeApi.addListener()</code></a>
-  to notify Google Play services that your activity is interested in listening for data layer events.
-</li>
+
+<a href="{@docRoot}reference/com/google/android/gms/wearable/DataApi.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.DataApi.DataListener)">
+<code>DataApi.addListener()</code></a>,
+
+<a href="{@docRoot}android/reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener">
+<code>MessageApi.addListener()</code></a>, or
+
+<a href="https://developers.google.com/android/reference/com/google/android/gms/wearable/CapabilityApi.html#addListener(com.google.android.gms.common.api.GoogleApiClient,%20com.google.android.gms.wearable.CapabilityApi.CapabilityListener,%20android.net.Uri,%20int)">
+{@code CapabilityApi.addListener()}</a> to notify Google Play services that your activity is
+interested in listening for data layer events.</li>
+
 <li>In {@link android.app.Activity#onStop onStop()}, unregister any listeners with
 <a href="{@docRoot}reference/com/google/android/gms/wearable/DataApi.html#removeListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.DataApi.DataListener)"><code>DataApi.removeListener()</code></a>,
-<a href="{@docRoot}reference/com/google/android/gms/wearable/MessageApi.html#removeListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.MessageApi.MessageListener)"><code>MessageApi.removeListener()</code></a>,
-or <a href="{@docRoot}reference/com/google/android/gms/wearable/NodeApi.html#removeListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.NodeApi.NodeListener)"><code>NodeApi.removeListener()</code></a>.
-</li>
-<li>Implement <a href="{@docRoot}reference/com/google/android/gms/wearable/DataApi.DataListener.html#onDataChanged(com.google.android.gms.wearable.DataEventBuffer)"><code>onDataChanged()</code>,
-  <a href="{@docRoot}reference/com/google/android/gms/wearable/NodeApi.NodeListener.html#onPeerConnected(com.google.android.gms.wearable.Node)"><code>onMessageReceived()</code></a>,
-    <a href="{@docRoot}reference/com/google/android/gms/wearable/NodeApi.NodeListener.html#onPeerConnected(com.google.android.gms.wearable.Node)"><code>onPeerConnected()</code></a>, and
-  <a href="{@docRoot}reference/com/google/android/gms/wearable/NodeApi.NodeListener.html#onPeerDisconnected(com.google.android.gms.wearable.Node)"><code>onPeerDisconnected()</code></a>, depending on the interfaces that you implemented.
-</li>
+<a href="{@docRoot}reference/com/google/android/gms/wearable/MessageApi.html#removeListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.MessageApi.MessageListener)"><code>MessageApi.removeListener()</code></a>, or
+<a href="http://developer.android.com/reference/com/google/android/gms/wearable/MessageApi.html#removeListener(com.google.android.gms.common.api.GoogleApiClient,%20com.google.android.gms.wearable.MessageApi.MessageListener)">
+{@code CapabilityApi.removeListener()}</a>.</li>
+
+
+<p>An alternative to adding listeners in
+<a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks.html#onConnected(android.os.Bundle)"><code>onConnected()</code></a>
+and removing them in
+{@link android.app.Activity#onStop onStop()} is to add a filtered listener in an activity’s {@link android.app.Activity#onResume onResume()} and
+remove it in {@link android.app.Activity#onPause onPause()}, so as to only receive data that is relevant to the
+current application state.</p>
+
+
+<li>Implement
+<a href="{@docRoot}reference/com/google/android/gms/wearable/DataApi.DataListener.html#onDataChanged(com.google.android.gms.wearable.DataEventBuffer)">
+<code>onDataChanged()</code></a>,
+  <a href="https://developers.google.com/android/reference/com/google/android/gms/wearable/MessageApi.MessageListener.html#onMessageReceived(com.google.android.gms.wearable.MessageEvent)">
+  <code>onMessageReceived()</code></a>,
+  <a href="https://developers.google.com/android/reference/com/google/android/gms/wearable/WearableListenerService.html#onCapabilityChanged(com.google.android.gms.wearable.CapabilityInfo)">
+{@code onCapabilityChanged()}</a>,
+or methods from <a href="http://developer.android.com/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">
+Channel API listener methods</a>, depending on the interfaces that you implemented.</li>
 </ol>
 
 <p>Here's an example that implements
@@ -318,3 +400,19 @@
     }
 }
 </pre>
+<h3>Using Filters with Listener Activities</h3>
+<p>
+Just as you can specify intent filters for manifest-based
+<a href="{@docRoot}reference/com/google/android/gms/wearable/WearableListenerService.html">
+<code>WearableListenerService</code></a> objects, you can also use intent filters when registering a
+listener through the Wearable API. The same rules are applicable to both
+API-based listeners manifest-based listeners.
+</p>
+
+<p>
+A common pattern is to register a listener with a specific path or path prefix
+in an activity’s{@link android.app.Activity#onResume onResume()} method, and to
+remove the listener in the activity’s {@link android.app.Activity#onPause onPause()} method.
+Implementing listeners in this fashion allows your application to more selectively receive events,
+improving its design and efficiency.
+</p>
diff --git a/docs/html/training/wearables/ui/index.jd b/docs/html/training/wearables/ui/index.jd
old mode 100644
new mode 100755
index f82d29c..c43e165
--- a/docs/html/training/wearables/ui/index.jd
+++ b/docs/html/training/wearables/ui/index.jd
@@ -36,9 +36,9 @@
 provides classes that help you implement these patterns and create layouts that work on
 both round and square Android Wear devices.</p>
 
-<p class="note"><b>Note:</b> We recommend using Android Studio for Android Wear development
-as it provides project setup, library inclusion, and packaging conveniences that aren't available
-in ADT. This training assumes you are using Android Studio.</p>
+<p class="note"><b>Note:</b> We recommend using Android Studio for Android Wear development,
+as it provides project setup, library inclusion, and packaging conveniences. This training assumes
+you are using Android Studio.</p>
 
 <h2>Lessons</h2>
 
@@ -55,4 +55,4 @@
   <dd>Learn how to display confirmation animations when users complete actions.</dd>
   <dt><a href="{@docRoot}training/wearables/ui/exit.html">Exiting Full-Screen Activities</a></dt>
   <dd>Learn how to implement the long-press-to-dismiss UI pattern to exit full-screen activities.</dd>
-</dl>
\ No newline at end of file
+</dl>
diff --git a/docs/html/training/wearables/watch-faces/designing.jd b/docs/html/training/wearables/watch-faces/designing.jd
index 1033fed..564203c 100644
--- a/docs/html/training/wearables/watch-faces/designing.jd
+++ b/docs/html/training/wearables/watch-faces/designing.jd
@@ -65,7 +65,7 @@
 technology, you may need to avoid large blocks of white pixels, use only black and white, and
 disable anti-aliasing.</dd>
 
-<dt><em>Accomodate system UI elements</em></dt>
+<dt><em>Accommodate system UI elements</em></dt>
 <dd>Your design should ensure that system indicators remain visible and that users can still
 read the time when notification cards appear on the screen.</dd>
 
diff --git a/docs/html/training/wearables/watch-faces/index.jd b/docs/html/training/wearables/watch-faces/index.jd
old mode 100644
new mode 100755
index a329fda..aac49d3
--- a/docs/html/training/wearables/watch-faces/index.jd
+++ b/docs/html/training/wearables/watch-faces/index.jd
@@ -45,9 +45,9 @@
 designs integrate with system UI elements and are power-efficient.</p>
 
 <p class="note"><strong>Note:</strong> We recommend using <a
-href="{@docRoot}sdk/index.html">Android Studio</a> for Android Wear development as
-it provides project setup, library inclusion, and packaging conveniences that aren't available
-in the Eclipse Android Developer Tools. This training assumes you are using Android Studio.</p>
+href="{@docRoot}sdk/index.html">Android Studio</a> for Android Wear development, as
+it provides project setup, library inclusion, and packaging conveniences. This training assumes
+you are using Android Studio.</p>
 
 
 <h2>Lessons</h2>
diff --git a/docs/html/training/wearables/watch-faces/performance.jd b/docs/html/training/wearables/watch-faces/performance.jd
index c2c411c..4a96545 100644
--- a/docs/html/training/wearables/watch-faces/performance.jd
+++ b/docs/html/training/wearables/watch-faces/performance.jd
@@ -15,6 +15,8 @@
 <h2>You should also read</h2>
 <ul>
   <li><a href="{@docRoot}design/wear/watchfaces.html">Watch Faces for Android Wear</a></li>
+  <li><a href="http://android-developers.blogspot.com/2014/12/making-performant-watch-face.html">
+Making a performant watch face</a></li>
 </ul>
 </div>
 </div>
diff --git a/docs/html/training/wearables/watch-faces/service.jd b/docs/html/training/wearables/watch-faces/service.jd
old mode 100644
new mode 100755
index 578e8c0..e94ee56
--- a/docs/html/training/wearables/watch-faces/service.jd
+++ b/docs/html/training/wearables/watch-faces/service.jd
@@ -87,11 +87,9 @@
 <a href="{@docRoot}reference/android/support/wearable/watchface/package-summary.html">API reference
 documentation</a> for the Wearable Support Library.</p>
 
-<h3 id="LibEclipse">Download the Wearable Support Library for Eclipse ADT</h3>
-
-<p>If you are using the ADT plugin for Eclipse, download the
-<a href="{@docRoot}shareables/training/wearable-support-lib.zip">Wearable Support Library</a> and
-include it as a dependency in your project.</p>
+<p class="note"><strong>Note:</strong> We recommend using <a
+href="{@docRoot}sdk/index.html">Android Studio</a> for Android Wear development, as
+it provides project setup, library inclusion, and packaging conveniences.</p>
 
 <h3 id="Permissions">Declare Permissions</h3>
 
diff --git a/docs/html/training/wearables/wearable-sounds.jd b/docs/html/training/wearables/wearable-sounds.jd
new file mode 100644
index 0000000..3c3c135
--- /dev/null
+++ b/docs/html/training/wearables/wearable-sounds.jd
@@ -0,0 +1,63 @@
+page.title=Using Speakers on Wearables
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>This lesson teaches you to</h2>
+<ol>
+  <li><a href="#Detect">Detect the Speaker</a></li>
+  <li><a href="#Play">Play Sounds</a></li>
+</ol>
+<h2>You should also read</h2>
+<ul>
+  <li><a href="{@docRoot}design/wear/watchfaces.html">Watch Faces for Android Wear</a></li>
+</ul>
+</div>
+</div>
+
+<p>Some Android Wear devices include speakers, enabling them to incorporate sound into their
+apps and offer an extra dimension of engagement with the user. A speaker-equipped Wear device might
+trigger a clock or timer alarm, complete with audio notification. Games on Wear become become more
+entertaining by offering not just sight, but sound.</p>
+
+<p>This page describes how apps on Wear devices running Android 6.0 (API level 23) can use
+familiar Android APIs to play sounds through the device speaker.</p>
+
+<h2 id="Detect">Detect the Speaker</h2>
+
+<p>A Wear app must first detect whether the wearable device has a speaker. In the following example,
+the app uses the {@link android.media.AudioManager#getDevices(int) getDevices() } method in
+conjunction with the value of {@link android.content.pm.PackageManager#FEATURE_AUDIO_OUTPUT} to
+confirm that the device is equipped with a speaker.</p>
+
+<pre>
+PackageManager packageManager = context.getPackageManager();
+AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+
+// Check whether the device has a speaker.
+if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+    // Check FEATURE_AUDIO_OUTPUT to guard against false positives.
+    if (!packageManager.hasSystemFeature(PackageManager.FEATURE_AUDIO_OUTPUT)) {
+        return false;
+    }
+
+    AudioDeviceInfo[] devices = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS);
+    for (AudioDeviceInfo device : devices) {
+        if (device.getType() == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) {
+            return true;
+        }
+    }
+}
+return false;
+</pre>
+
+<h2 id="Play">Play Sounds</h2>
+
+<p>Once you've detected the speaker, the process for playing sound on Android Wear is the
+same as for a handset or other device. For more information, see
+<a href="{@docRoot}guide/topics/media/mediaplayer.html">Media Playback</a>.</p>
+
+<p>If you also want to record audio from the microphone on the wearable, your app must also get
+permission to use the microphone. To learn more, see
+<a href="{@docRoot}training/articles/wear-permissions.html">Permissions on Android Wear.</a></p>
\ No newline at end of file
diff --git a/docs/html/tv/adt-1/index.jd b/docs/html/tv/adt-1/index.jd
index 4f62796..0b6cc235 100644
--- a/docs/html/tv/adt-1/index.jd
+++ b/docs/html/tv/adt-1/index.jd
@@ -1,6 +1,7 @@
 page.title=ADT-1 Developer Kit
 page.tags="emote","e-mote","adt"
 fullpage=1
+nonavpage=true
 
 @jd:body
 
diff --git a/docs/html/tv/adt-1/regulatory.jd b/docs/html/tv/adt-1/regulatory.jd
index f92ce3e..bd97df2 100644
--- a/docs/html/tv/adt-1/regulatory.jd
+++ b/docs/html/tv/adt-1/regulatory.jd
@@ -1,5 +1,6 @@
 page.title=Regulatory Disclosures for ADT-1
 fullpage=1
+nonavpage=true
 
 @jd:body
 
diff --git a/docs/html/tv/adt-1/safety.jd b/docs/html/tv/adt-1/safety.jd
index 79a9736..211220f 100644
--- a/docs/html/tv/adt-1/safety.jd
+++ b/docs/html/tv/adt-1/safety.jd
@@ -1,5 +1,6 @@
 page.title=Important Safety Instructions for ADT-1
 fullpage=1
+nonavpage=true
 
 @jd:body
 
diff --git a/docs/html/tv/index.jd b/docs/html/tv/index.jd
index 73b3435..7c958c0 100644
--- a/docs/html/tv/index.jd
+++ b/docs/html/tv/index.jd
@@ -7,6 +7,7 @@
 fullpage=true
 no_footer_links=true
 page.type=about
+nonavpage=true
 
 @jd:body
 
@@ -260,24 +261,6 @@
 
     </div> <!-- end .landing-rest-of-page -->
 
-    <div class="content-footer wrap" itemscope="" itemtype="http://schema.org/SiteNavigationElement">
-      <div class="layout-content-col col-16" style="padding-top:4px">
-        <style>#___plusone_0 {float:right !important;}</style>
-        <div class="g-plusone" data-size="medium"></div>
-      </div>
-    </div>
-    <div id="footer" class="wrap" style="width:940px;position:relative;top:-35px;z-index:-1">
-      <div id="copyright">
-        Except as noted, this content is
-        licensed under <a href="http://creativecommons.org/licenses/by/2.5/">
-        Creative Commons Attribution 2.5</a>. For details and
-        restrictions, see the <a href="/license.html">Content
-        License</a>.
-      </div>
-    </div>
-
-  </div> <!-- end .landing-hero-container -->
-
   <script>
   $("a.landing-down-arrow").on("click", function(e) {
     $("body").animate({
diff --git a/docs/html/wear/_book.yaml b/docs/html/wear/_book.yaml
new file mode 100644
index 0000000..35b9e2e
--- /dev/null
+++ b/docs/html/wear/_book.yaml
@@ -0,0 +1,46 @@
+toc:
+- title: Get Started
+  path: /wear/preview/start.html
+
+- title: UI Overview
+  path: /wear/design/user-interface.html
+
+- title: Design Principles
+  path: /wear/design/index.html
+
+- title: Creating Notifications for Android Wear
+  path: /wear/notifications/creating.html
+
+- title: Receiving Voice Input from a Notification
+  path: /wear/notifications/remote-input.html
+
+- title: Adding Pages to a Notification
+  path: /wear/notifications/pages.html
+
+- title: Stacking Notifications
+  path: /wear/notifications/stacks.html
+
+- title: Notification Reference
+  path: /reference/android/preview/support/package-summary.html
+  section:
+  - title: android.preview.support.v4.app
+    section:
+    - title: NotificationManagerCompat
+      path: /reference/android/preview/support/v4/app/NotificationManagerCompat.html
+  - title: android.preview.support.wearable.notifications
+    section:
+    - title: RemoteInput
+      path: /reference/android/preview/support/wearable/notifications/RemoteInput.html
+    - title: RemoteInput.Builder
+      path: /reference/android/preview/support/wearable/notifications/RemoteInput.Builder.html
+    - title: WearableNotifications
+      path: /reference/android/preview/support/wearable/notifications/WearableNotifications.html
+    - title: WearableNotifications.Action
+      path: /reference/android/preview/support/wearable/notifications/WearableNotifications.Action.html
+    - title: WearableNotifications.Action.Builder
+      path: /reference/android/preview/support/wearable/notifications/WearableNotifications.Action.Builder.html
+    - title: WearableNotifications.Builder
+      path: /reference/android/preview/support/wearable/notifications/WearableNotifications.Builder.html
+
+- title: License Agreement
+  path: /wear/license.html
diff --git a/docs/html/wear/images/partners/casio.png b/docs/html/wear/images/partners/casio.png
new file mode 100644
index 0000000..41f36d8
--- /dev/null
+++ b/docs/html/wear/images/partners/casio.png
Binary files differ
diff --git a/docs/html/wear/images/partners/mobvoi.png b/docs/html/wear/images/partners/mobvoi.png
new file mode 100644
index 0000000..9a2eb4d
--- /dev/null
+++ b/docs/html/wear/images/partners/mobvoi.png
Binary files differ
diff --git a/docs/html/wear/images/partners/nb.png b/docs/html/wear/images/partners/nb.png
new file mode 100644
index 0000000..224b27e
--- /dev/null
+++ b/docs/html/wear/images/partners/nb.png
Binary files differ
diff --git a/docs/html/wear/index.jd b/docs/html/wear/index.jd
index e18ada4..62c0253 100644
--- a/docs/html/wear/index.jd
+++ b/docs/html/wear/index.jd
@@ -4,6 +4,7 @@
 no_footer_links=true
 page.type=about
 page.image=images/cards/android-wear_2x.png
+nonavpage=true
 @jd:body
 
 <style>
@@ -213,6 +214,9 @@
             <div class="col-4">
               <img src="/wear/images/partners/broadcom.png" alt="Broadcom">
             </div>
+             <div class="col-4">
+              <img src="/wear/images/partners/casio.png" alt="Casio">
+            </div>
             <div class="col-4">
               <img src="/wear/images/partners/fossil.png" alt="Fossil">
             </div>
@@ -234,9 +238,15 @@
             <div class="col-4">
               <img src="/wear/images/partners/mips.png" alt="MIPS">
             </div>
+             <div class="col-4">
+              <img src="/wear/images/partners/mobvoi.png" alt="Mobvoi">
+            </div>
             <div class="col-4">
               <img src="/wear/images/partners/motorola.png" alt="Motorola">
             </div>
+             <div class="col-4">
+              <img src="/wear/images/partners/nb.png" alt="New Balance">
+            </div>
             <div class="col-4">
               <img src="/wear/images/partners/qualcomm.png" alt="Qualcomm">
             </div>
@@ -249,6 +259,7 @@
             <div class="col-4">
               <img src="/wear/images/partners/tagheuer.png" alt="Tag Heuer">
             </div>
+
           </div>
         </div> <!-- end .wrap -->
       </div>
@@ -332,22 +343,6 @@
         </div> <!-- end .wrap -->
       </div> <!-- end .landing-section -->
     </div> <!-- end .landing-rest-of-page -->
-    <div class="content-footer wrap" itemscope="" itemtype="http://schema.org/SiteNavigationElement">
-      <div class="layout-content-col col-16" style="padding-top:4px">
-        <style>#___plusone_0 {float:right !important;}</style>
-        <div class="g-plusone" data-size="medium"></div>
-      </div>
-    </div>
-    <div id="footer" class="wrap" style="width:940px;position:relative;top:-35px;z-index:-1">
-      <div id="copyright">
-        Except as noted, this content is
-        licensed under <a href="http://creativecommons.org/licenses/by/2.5/">
-        Creative Commons Attribution 2.5</a>. For details and
-        restrictions, see the <a href="{@docRoot}license.html">Content
-        License</a>.
-      </div>
-    </div>
-  </div> <!-- end .landing-hero-container -->
 
   <script>
   $("a.landing-down-arrow").on("click", function(e) {
diff --git a/docs/image_sources/distribute/googleplay/about_developer_page_original.png b/docs/image_sources/distribute/googleplay/about_developer_page_original.png
new file mode 100644
index 0000000..4ccbfe9
--- /dev/null
+++ b/docs/image_sources/distribute/googleplay/about_developer_page_original.png
Binary files differ
diff --git a/docs/image_sources/distribute/googleplay/about_personalized_home_orig.png b/docs/image_sources/distribute/googleplay/about_personalized_home_orig.png
new file mode 100644
index 0000000..a5214d6
--- /dev/null
+++ b/docs/image_sources/distribute/googleplay/about_personalized_home_orig.png
Binary files differ
diff --git a/docs/image_sources/distribute/googleplay/about_play_store_home_original.png b/docs/image_sources/distribute/googleplay/about_play_store_home_original.png
new file mode 100644
index 0000000..3a4cba4
--- /dev/null
+++ b/docs/image_sources/distribute/googleplay/about_play_store_home_original.png
Binary files differ
diff --git a/docs/image_sources/distribute/googleplay/about_play_store_listing_original.png b/docs/image_sources/distribute/googleplay/about_play_store_listing_original.png
new file mode 100644
index 0000000..63d6e9b
--- /dev/null
+++ b/docs/image_sources/distribute/googleplay/about_play_store_listing_original.png
Binary files differ
diff --git a/docs/image_sources/distribute/googleplay/about_search_results_orig.png b/docs/image_sources/distribute/googleplay/about_search_results_orig.png
new file mode 100644
index 0000000..af775d3
--- /dev/null
+++ b/docs/image_sources/distribute/googleplay/about_search_results_orig.png
Binary files differ
diff --git a/docs/image_sources/distribute/stories/concrete-bowling-screenshot.png b/docs/image_sources/distribute/stories/concrete-bowling-screenshot.png
new file mode 100644
index 0000000..0f76df6
--- /dev/null
+++ b/docs/image_sources/distribute/stories/concrete-bowling-screenshot.png
Binary files differ
diff --git a/docs/image_sources/distribute/stories/doctor-who-legacy-screenshot.png b/docs/image_sources/distribute/stories/doctor-who-legacy-screenshot.png
new file mode 100644
index 0000000..556bfcd
--- /dev/null
+++ b/docs/image_sources/distribute/stories/doctor-who-legacy-screenshot.png
Binary files differ
diff --git a/docs/image_sources/distribute/stories/dots-screenshot.png b/docs/image_sources/distribute/stories/dots-screenshot.png
new file mode 100644
index 0000000..17edb12
--- /dev/null
+++ b/docs/image_sources/distribute/stories/dots-screenshot.png
Binary files differ
diff --git a/docs/image_sources/distribute/stories/gameloft-asphalt8-screenshot.png b/docs/image_sources/distribute/stories/gameloft-asphalt8-screenshot.png
new file mode 100644
index 0000000..2b0c1e3
--- /dev/null
+++ b/docs/image_sources/distribute/stories/gameloft-asphalt8-screenshot.png
Binary files differ
diff --git a/docs/image_sources/distribute/stories/glu-dh-screenshot_orig.png b/docs/image_sources/distribute/stories/glu-dh-screenshot_orig.png
new file mode 100644
index 0000000..a29f567
--- /dev/null
+++ b/docs/image_sources/distribute/stories/glu-dh-screenshot_orig.png
Binary files differ
diff --git a/docs/image_sources/distribute/stories/glu-eternity-warriors-screenshot.png b/docs/image_sources/distribute/stories/glu-eternity-warriors-screenshot.png
new file mode 100644
index 0000000..b41e917
--- /dev/null
+++ b/docs/image_sources/distribute/stories/glu-eternity-warriors-screenshot.png
Binary files differ
diff --git a/docs/image_sources/distribute/stories/glu-tap-baseball-screenshot.png b/docs/image_sources/distribute/stories/glu-tap-baseball-screenshot.png
new file mode 100644
index 0000000..df6c8a8
--- /dev/null
+++ b/docs/image_sources/distribute/stories/glu-tap-baseball-screenshot.png
Binary files differ
diff --git a/docs/image_sources/distribute/stories/hotheadgames-firefight-screenshot.png b/docs/image_sources/distribute/stories/hotheadgames-firefight-screenshot.png
new file mode 100644
index 0000000..4761715
--- /dev/null
+++ b/docs/image_sources/distribute/stories/hotheadgames-firefight-screenshot.png
Binary files differ
diff --git a/docs/image_sources/distribute/stories/indian-rummy-screenshot.jpg b/docs/image_sources/distribute/stories/indian-rummy-screenshot.jpg
new file mode 100644
index 0000000..61943fc
--- /dev/null
+++ b/docs/image_sources/distribute/stories/indian-rummy-screenshot.jpg
Binary files differ
diff --git a/docs/image_sources/distribute/stories/intuit-mint-screenshot.png b/docs/image_sources/distribute/stories/intuit-mint-screenshot.png
new file mode 100644
index 0000000..39b8f11
--- /dev/null
+++ b/docs/image_sources/distribute/stories/intuit-mint-screenshot.png
Binary files differ
diff --git a/docs/image_sources/distribute/stories/kongregate-adv-cap-screenshot.png b/docs/image_sources/distribute/stories/kongregate-adv-cap-screenshot.png
new file mode 100644
index 0000000..cff67dc
--- /dev/null
+++ b/docs/image_sources/distribute/stories/kongregate-adv-cap-screenshot.png
Binary files differ
diff --git a/docs/image_sources/distribute/stories/kongregate-global-assault-screenshot.png b/docs/image_sources/distribute/stories/kongregate-global-assault-screenshot.png
new file mode 100644
index 0000000..d0709a3
--- /dev/null
+++ b/docs/image_sources/distribute/stories/kongregate-global-assault-screenshot.png
Binary files differ
diff --git a/docs/image_sources/distribute/stories/leos-fortune-screenshot.png b/docs/image_sources/distribute/stories/leos-fortune-screenshot.png
new file mode 100644
index 0000000..d67c9af
--- /dev/null
+++ b/docs/image_sources/distribute/stories/leos-fortune-screenshot.png
Binary files differ
diff --git a/docs/image_sources/distribute/stories/noodlecake-super-stickman-screenshot.png b/docs/image_sources/distribute/stories/noodlecake-super-stickman-screenshot.png
new file mode 100644
index 0000000..c1e8824
--- /dev/null
+++ b/docs/image_sources/distribute/stories/noodlecake-super-stickman-screenshot.png
Binary files differ
diff --git a/docs/image_sources/distribute/stories/rememberthemilk-screenshot.png b/docs/image_sources/distribute/stories/rememberthemilk-screenshot.png
new file mode 100644
index 0000000..25d0391
--- /dev/null
+++ b/docs/image_sources/distribute/stories/rememberthemilk-screenshot.png
Binary files differ
diff --git a/docs/image_sources/distribute/stories/rvappstudios-zombie-screenshot.jpg b/docs/image_sources/distribute/stories/rvappstudios-zombie-screenshot.jpg
new file mode 100644
index 0000000..e2bf6b5
--- /dev/null
+++ b/docs/image_sources/distribute/stories/rvappstudios-zombie-screenshot.jpg
Binary files differ
diff --git a/docs/image_sources/distribute/stories/sayhichat-screenshot.jpg b/docs/image_sources/distribute/stories/sayhichat-screenshot.jpg
new file mode 100644
index 0000000..b93e983
--- /dev/null
+++ b/docs/image_sources/distribute/stories/sayhichat-screenshot.jpg
Binary files differ
diff --git a/docs/image_sources/distribute/stories/tinyvillage-screenshot.png b/docs/image_sources/distribute/stories/tinyvillage-screenshot.png
new file mode 100644
index 0000000..51948b9
--- /dev/null
+++ b/docs/image_sources/distribute/stories/tinyvillage-screenshot.png
Binary files differ
diff --git a/docs/image_sources/distribute/stories/two-dots-screenshot.png b/docs/image_sources/distribute/stories/two-dots-screenshot.png
new file mode 100644
index 0000000..2e34a68
--- /dev/null
+++ b/docs/image_sources/distribute/stories/two-dots-screenshot.png
Binary files differ
diff --git a/docs/image_sources/preview/features/bundles-orig.png b/docs/image_sources/preview/features/bundles-orig.png
new file mode 100644
index 0000000..298d1c0
--- /dev/null
+++ b/docs/image_sources/preview/features/bundles-orig.png
Binary files differ
diff --git a/docs/image_sources/preview/features/inline-reply_orig.png b/docs/image_sources/preview/features/inline-reply_orig.png
new file mode 100644
index 0000000..ae7cd30
--- /dev/null
+++ b/docs/image_sources/preview/features/inline-reply_orig.png
Binary files differ
diff --git a/docs/image_sources/preview/features/inline-type-reply-orig.png b/docs/image_sources/preview/features/inline-type-reply-orig.png
new file mode 100644
index 0000000..bb176f8
--- /dev/null
+++ b/docs/image_sources/preview/features/inline-type-reply-orig.png
Binary files differ
diff --git a/docs/image_sources/preview/features/mw-splitscreen-orig.png b/docs/image_sources/preview/features/mw-splitscreen-orig.png
new file mode 100644
index 0000000..658c7f9
--- /dev/null
+++ b/docs/image_sources/preview/features/mw-splitscreen-orig.png
Binary files differ
diff --git a/docs/image_sources/training/appbar/action_view.graffle b/docs/image_sources/training/appbar/action_view.graffle
new file mode 100644
index 0000000..5e35879
--- /dev/null
+++ b/docs/image_sources/training/appbar/action_view.graffle
Binary files differ
diff --git a/docs/image_sources/training/appbar/appbar_basic_fullrez.png b/docs/image_sources/training/appbar/appbar_basic_fullrez.png
new file mode 100644
index 0000000..4f596a7
--- /dev/null
+++ b/docs/image_sources/training/appbar/appbar_basic_fullrez.png
Binary files differ
diff --git a/docs/image_sources/training/appbar/appbar_sheets_full.png b/docs/image_sources/training/appbar/appbar_sheets_full.png
new file mode 100644
index 0000000..c662a6d
--- /dev/null
+++ b/docs/image_sources/training/appbar/appbar_sheets_full.png
Binary files differ
diff --git a/docs/image_sources/training/appbar/appbar_with_button_full.png b/docs/image_sources/training/appbar/appbar_with_button_full.png
new file mode 100644
index 0000000..802e29e
--- /dev/null
+++ b/docs/image_sources/training/appbar/appbar_with_button_full.png
Binary files differ
diff --git a/docs/image_sources/training/enterprise/app_restrictions_diagram.txt b/docs/image_sources/training/enterprise/app_restrictions_diagram.txt
new file mode 100644
index 0000000..19fbfc8
--- /dev/null
+++ b/docs/image_sources/training/enterprise/app_restrictions_diagram.txt
@@ -0,0 +1,5 @@
+The source file for app_restrictions_diagram.png is a
+Google Doc owned by Matt Werner, mattwerner@google.com.
+You can access the diagram in this doc:
+
+https://docs.google.com/document/d/1qffQfciilSYHHJxpWCs-VEsANnbIt69Zz1qmQuGe0Wc/edit
\ No newline at end of file
diff --git a/docs/image_sources/training/enterprise/pinning_vs_locktaskmode.txt b/docs/image_sources/training/enterprise/pinning_vs_locktaskmode.txt
new file mode 100644
index 0000000..0c1ef37
--- /dev/null
+++ b/docs/image_sources/training/enterprise/pinning_vs_locktaskmode.txt
@@ -0,0 +1,5 @@
+The source file for pinning_vs_locktaskmode.png is a
+Google Doc owned by Matt Werner, mattwerner@google.com.
+You can access the diagram in this doc:
+
+https://docs.google.com/document/d/1boC0uWSPxEDNGt6iCC6N3QxrvP1siwoZLXdD379Gmzs/edit
\ No newline at end of file
diff --git a/docs/image_sources/training/permissions/request_permission_dialog_original.png b/docs/image_sources/training/permissions/request_permission_dialog_original.png
new file mode 100644
index 0000000..49bff5b
--- /dev/null
+++ b/docs/image_sources/training/permissions/request_permission_dialog_original.png
Binary files differ
diff --git a/docs/image_sources/training/snackbar/snackbar_drive_original.png b/docs/image_sources/training/snackbar/snackbar_drive_original.png
new file mode 100644
index 0000000..7094a11
--- /dev/null
+++ b/docs/image_sources/training/snackbar/snackbar_drive_original.png
Binary files differ
diff --git a/docs/image_sources/training/snackbar/snackbar_undo_action_original.png b/docs/image_sources/training/snackbar/snackbar_undo_action_original.png
new file mode 100644
index 0000000..ec50c13
--- /dev/null
+++ b/docs/image_sources/training/snackbar/snackbar_undo_action_original.png
Binary files differ
diff --git a/docs/image_sources/training/tv/playback/guided-step-screen-orig.png b/docs/image_sources/training/tv/playback/guided-step-screen-orig.png
new file mode 100644
index 0000000..c39099c
--- /dev/null
+++ b/docs/image_sources/training/tv/playback/guided-step-screen-orig.png
Binary files differ
diff --git a/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java b/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java
index 35385eb..6762bea 100644
--- a/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java
+++ b/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java
@@ -310,6 +310,15 @@
 
     @Override
     public boolean setVisible(boolean visible, boolean restart) {
+        if (mAnimatorSet.isInfinite() && mAnimatorSet.isStarted()) {
+            if (visible) {
+                // Resume the infinite animation when the drawable becomes visible again.
+                mAnimatorSet.resume();
+            } else {
+                // Pause the infinite animation once the drawable is no longer visible.
+                mAnimatorSet.pause();
+            }
+        }
         mAnimatedVectorState.mVectorDrawable.setVisible(visible, restart);
         return super.setVisible(visible, restart);
     }
@@ -815,6 +824,9 @@
         void onDraw(Canvas canvas);
         boolean isStarted();
         boolean isRunning();
+        boolean isInfinite();
+        void pause();
+        void resume();
     }
 
     private static class VectorDrawableAnimatorUI implements VectorDrawableAnimator {
@@ -825,6 +837,7 @@
         // Caching the listener in the case when listener operation is called before the mSet is
         // setup by init().
         private ArrayList<AnimatorListener> mListenerArray = null;
+        private boolean mIsInfinite = false;
 
         VectorDrawableAnimatorUI(@NonNull AnimatedVectorDrawable drawable) {
             mDrawable = drawable;
@@ -840,6 +853,7 @@
             // Keep a deep copy of the set, such that set can be still be constantly representing
             // the static content from XML file.
             mSet = set.clone();
+            mIsInfinite = mSet.getTotalDuration() == Animator.DURATION_INFINITE;
 
             // If there are listeners added before calling init(), now they should be setup.
             if (mListenerArray != null && !mListenerArray.isEmpty()) {
@@ -934,6 +948,27 @@
             return mSet != null && mSet.isRunning();
         }
 
+        @Override
+        public boolean isInfinite() {
+            return mIsInfinite;
+        }
+
+        @Override
+        public void pause() {
+            if (mSet == null) {
+                return;
+            }
+            mSet.pause();
+        }
+
+        @Override
+        public void resume() {
+            if (mSet == null) {
+                return;
+            }
+            mSet.resume();
+        }
+
         private void invalidateOwningView() {
             mDrawable.invalidateSelf();
         }
@@ -956,6 +991,7 @@
         private boolean mStarted = false;
         private boolean mInitialized = false;
         private boolean mIsReversible = false;
+        private boolean mIsInfinite = false;
         // This needs to be set before parsing starts.
         private boolean mShouldIgnoreInvalidAnim;
         // TODO: Consider using NativeAllocationRegistery to track native allocation
@@ -983,6 +1019,7 @@
             mShouldIgnoreInvalidAnim = shouldIgnoreInvalidAnimation();
             parseAnimatorSet(set, 0);
             mInitialized = true;
+            mIsInfinite = set.getTotalDuration() == Animator.DURATION_INFINITE;
 
             // Check reversible.
             mIsReversible = true;
@@ -1408,6 +1445,21 @@
             }
         }
 
+        @Override
+        public boolean isInfinite() {
+            return mIsInfinite;
+        }
+
+        @Override
+        public void pause() {
+            // TODO: Implement pause for Animator On RT.
+        }
+
+        @Override
+        public void resume() {
+            // TODO: Implement resume for Animator On RT.
+        }
+
         private void onAnimationEnd(int listenerId) {
             if (listenerId != mLastListenerId) {
                 return;
diff --git a/keystore/java/android/security/keystore/KeyGenParameterSpec.java b/keystore/java/android/security/keystore/KeyGenParameterSpec.java
index 127d756..c3dd223 100644
--- a/keystore/java/android/security/keystore/KeyGenParameterSpec.java
+++ b/keystore/java/android/security/keystore/KeyGenParameterSpec.java
@@ -41,9 +41,9 @@
  * {@link KeyGenerator} of the <a href="{@docRoot}training/articles/keystore.html">Android Keystore
  * system</a>. The spec determines authorized uses of the key, such as whether user authentication
  * is required for using the key, what operations are authorized (e.g., signing, but not
- * decryption) and with what parameters (e.g., only with a particular padding scheme or digest), the
- * key's validity start and end dates. Key use authorizations expressed in the spec apply only to
- * secret keys and private keys -- public keys can be used for any supported operations.
+ * decryption), with what parameters (e.g., only with a particular padding scheme or digest), and
+ * the key's validity start and end dates. Key use authorizations expressed in the spec apply
+ * only to secret keys and private keys -- public keys can be used for any supported operations.
  *
  * <p>To generate an asymmetric key pair or a symmetric key, create an instance of this class using
  * the {@link Builder}, initialize a {@code KeyPairGenerator} or a {@code KeyGenerator} of the
@@ -91,13 +91,22 @@
  *
  * <p>Instances of this class are immutable.
  *
+ * <p><h3>Known issues</h3>
+ * A known bug in Android 6.0 (API Level 23) causes user authentication-related authorizations to be
+ * enforced even for public keys. To work around this issue extract the public key material to use
+ * outside of Android Keystore. For example:
+ * <pre> {@code
+ * PublicKey unrestrictedPublicKey =
+ *         KeyFactory.getInstance(publicKey.getAlgorithm()).generatePublic(
+ *                 new X509EncodedKeySpec(publicKey.getEncoded()));
+ * }</pre>
+ *
  * <p><h3>Example: NIST P-256 EC key pair for signing/verification using ECDSA</h3>
  * This example illustrates how to generate a NIST P-256 (aka secp256r1 aka prime256v1) EC key pair
  * in the Android KeyStore system under alias {@code key1} where the private key is authorized to be
  * used only for signing using SHA-256, SHA-384, or SHA-512 digest and only if the user has been
- * authenticated within the last five minutes. The use of public key is unrestricted, thus
- * permitting signature verification using any padding schemes and digests, and without user
- * authentication.
+ * authenticated within the last five minutes. The use of the public key is unrestricted (See Known
+ * Issues).
  * <pre> {@code
  * KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(
  *         KeyProperties.KEY_ALGORITHM_EC, "AndroidKeyStore");
@@ -129,8 +138,7 @@
  * <p><h3>Example: RSA key pair for signing/verification using RSA-PSS</h3>
  * This example illustrates how to generate an RSA key pair in the Android KeyStore system under
  * alias {@code key1} authorized to be used only for signing using the RSA-PSS signature padding
- * scheme with SHA-256 or SHA-512 digests. The use of public key is unrestricted, thus permitting
- * signature verification using any padding schemes and digests.
+ * scheme with SHA-256 or SHA-512 digests. The use of the public key is unrestricted.
  * <pre> {@code
  * KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(
  *         KeyProperties.KEY_ALGORITHM_RSA, "AndroidKeyStore");
@@ -156,8 +164,8 @@
  * <p><h3>Example: RSA key pair for encryption/decryption using RSA OAEP</h3>
  * This example illustrates how to generate an RSA key pair in the Android KeyStore system under
  * alias {@code key1} where the private key is authorized to be used only for decryption using RSA
- * OAEP encryption padding scheme with SHA-256 or SHA-512 digests. The use of public key is
- * unrestricted, thus permitting encryption using any padding schemes and digests.
+ * OAEP encryption padding scheme with SHA-256 or SHA-512 digests. The use of the public key is
+ * unrestricted.
  * <pre> {@code
  * KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(
  *         KeyProperties.KEY_ALGORITHM_RSA, "AndroidKeyStore");
diff --git a/keystore/java/android/security/keystore/KeyProtection.java b/keystore/java/android/security/keystore/KeyProtection.java
index fa57bdb..a5fb833 100644
--- a/keystore/java/android/security/keystore/KeyProtection.java
+++ b/keystore/java/android/security/keystore/KeyProtection.java
@@ -36,7 +36,7 @@
  * <a href="{@docRoot}training/articles/keystore.html">Android Keystore system</a>. This class
  * specifies authorized uses of the imported key, such as whether user authentication is required
  * for using the key, what operations the key is authorized for (e.g., decryption, but not signing)
- * and with what parameters (e.g., only with a particular padding scheme or digest), the key's and
+ * with what parameters (e.g., only with a particular padding scheme or digest), and the key's
  * validity start and end dates. Key use authorizations expressed in this class apply only to secret
  * keys and private keys -- public keys can be used for any supported operations.
  *
@@ -61,6 +61,16 @@
  *
  * <p>Instances of this class are immutable.
  *
+ * <p><h3>Known issues</h3>
+ * A known bug in Android 6.0 (API Level 23) causes user authentication-related authorizations to be
+ * enforced even for public keys. To work around this issue extract the public key material to use
+ * outside of Android Keystore. For example:
+ * <pre> {@code
+ * PublicKey unrestrictedPublicKey =
+ *         KeyFactory.getInstance(publicKey.getAlgorithm()).generatePublic(
+ *                 new X509EncodedKeySpec(publicKey.getEncoded()));
+ * }</pre>
+ *
  * <p><h3>Example: AES key for encryption/decryption in GCM mode</h3>
  * This example illustrates how to import an AES key into the Android KeyStore under alias
  * {@code key1} authorized to be used only for encryption/decryption in GCM mode with no padding.
@@ -111,9 +121,9 @@
  * <p><h3>Example: EC key pair for signing/verification using ECDSA</h3>
  * This example illustrates how to import an EC key pair into the Android KeyStore under alias
  * {@code key2} with the private key authorized to be used only for signing with SHA-256 or SHA-512
- * digests. The use of public key is unrestricted, thus permitting signature verification using any
- * digests. Both the private and the public key must export their key material via
- * {@link Key#getEncoded()} in {@code PKCS#8} and {@code X.509} format respectively.
+ * digests. The use of the public key is unrestricted. Both the private and the public key must
+ * export their key material via {@link Key#getEncoded()} in {@code PKCS#8} and {@code X.509} format
+ * respectively.
  * <pre> {@code
  * PrivateKey privateKey = ...;   // EC private key
  * Certificate[] certChain = ...; // Certificate chain with the first certificate
@@ -141,8 +151,7 @@
  * This example illustrates how to import an RSA key pair into the Android KeyStore under alias
  * {@code key2} with the private key authorized to be used only for signing using the PKCS#1
  * signature padding scheme with SHA-256 digest and only if the user has been authenticated within
- * the last ten minutes. The use of public key is unrestricted, thus permitting signature
- * verification using any padding schemes and digests, and without user authentication. Both the
+ * the last ten minutes. The use of the public key is unrestricted (see Known Issues). Both the
  * private and the public key must export their key material via {@link Key#getEncoded()} in
  * {@code PKCS#8} and {@code X.509} format respectively.
  * <pre> {@code
diff --git a/media/jni/android_mtp_MtpDatabase.cpp b/media/jni/android_mtp_MtpDatabase.cpp
index d6bf9ad..7217832 100644
--- a/media/jni/android_mtp_MtpDatabase.cpp
+++ b/media/jni/android_mtp_MtpDatabase.cpp
@@ -933,7 +933,7 @@
                 }
 
                 if (image_data.thumbnail.length == 0
-                        || image_data.thumbnail.format == ::piex::Image::kJpegCompressed) {
+                        || image_data.thumbnail.format != ::piex::Image::kJpegCompressed) {
                     // No thumbnail or non jpeg thumbnail.
                     break;
                 }
diff --git a/packages/DocumentsUI/res/values/strings.xml b/packages/DocumentsUI/res/values/strings.xml
index be21b55..e67cc8a 100644
--- a/packages/DocumentsUI/res/values/strings.xml
+++ b/packages/DocumentsUI/res/values/strings.xml
@@ -247,4 +247,9 @@
         <item quantity="one">Delete <xliff:g id="count" example="1">%1$d</xliff:g> item?</item>
         <item quantity="other">Delete <xliff:g id="count" example="3">%1$d</xliff:g> items?</item>
     </plurals>
+    <!-- Snackbar shown to users who wanted to select more than 1000 items (files or directories). -->
+    <string name="too_many_selected">Sorry, you can only select up to 1000 items at a time</string>
+    <!-- Snackbar shown to users who wanted to select all, but there were too many items (files or directories).
+         Only the first 1000 items are selected in such case. -->
+    <string name="too_many_in_select_all">Could only select 1000 items</string>
 </resources>
diff --git a/packages/DocumentsUI/src/com/android/documentsui/QuickViewIntentBuilder.java b/packages/DocumentsUI/src/com/android/documentsui/QuickViewIntentBuilder.java
index babde99..c78face 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/QuickViewIntentBuilder.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/QuickViewIntentBuilder.java
@@ -17,6 +17,7 @@
 package com.android.documentsui;
 
 import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.Shared.MAX_DOCS_IN_INTENT;
 import static com.android.documentsui.model.DocumentInfo.getCursorString;
 
 import android.content.ClipData;
@@ -46,7 +47,6 @@
 final class QuickViewIntentBuilder {
 
     private static final String TAG = "QuickViewIntentBuilder";
-    private static final int MAX_CLIP_ITEMS = 1000;
 
     private final DocumentInfo mDocument;
     private final Model mModel;
@@ -165,11 +165,11 @@
         int firstSibling;
         int lastSibling;
         if (documentLocation < uris.size() / 2) {
-            firstSibling = Math.max(0, documentLocation - MAX_CLIP_ITEMS / 2);
-            lastSibling = Math.min(uris.size() - 1, firstSibling + MAX_CLIP_ITEMS - 1);
+            firstSibling = Math.max(0, documentLocation - MAX_DOCS_IN_INTENT / 2);
+            lastSibling = Math.min(uris.size() - 1, firstSibling + MAX_DOCS_IN_INTENT - 1);
         } else {
-            lastSibling = Math.min(uris.size() - 1, documentLocation + MAX_CLIP_ITEMS / 2);
-            firstSibling = Math.max(0, lastSibling - MAX_CLIP_ITEMS + 1);
+            lastSibling = Math.min(uris.size() - 1, documentLocation + MAX_DOCS_IN_INTENT / 2);
+            firstSibling = Math.max(0, lastSibling - MAX_DOCS_IN_INTENT + 1);
         }
 
         if (DEBUG) Log.d(TAG, "Copmuted siblings from index: " + firstSibling
diff --git a/packages/DocumentsUI/src/com/android/documentsui/Shared.java b/packages/DocumentsUI/src/com/android/documentsui/Shared.java
index 1ba836a..07c3cdbc 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/Shared.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/Shared.java
@@ -104,6 +104,11 @@
      */
     public static final String EXTRA_BENCHMARK = "com.android.documentsui.benchmark";
 
+    /**
+     * Maximum number of items in a Binder transaction packet.
+     */
+    public static final int MAX_DOCS_IN_INTENT = 1000;
+
     private static final Collator sCollator;
 
     static {
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
index 8c073c9c..297fbc7 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
@@ -17,6 +17,7 @@
 package com.android.documentsui.dirlist;
 
 import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.Shared.MAX_DOCS_IN_INTENT;
 import static com.android.documentsui.State.MODE_GRID;
 import static com.android.documentsui.State.MODE_LIST;
 import static com.android.documentsui.State.SORT_ORDER_UNKNOWN;
@@ -108,9 +109,11 @@
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Objects;
+import java.util.Set;
 
 /**
  * Display the documents inside a single directory.
@@ -475,8 +478,18 @@
 
                 final String docMimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
                 final int docFlags = getCursorInt(cursor, Document.COLUMN_FLAGS);
+                if (!mTuner.canSelectType(docMimeType, docFlags)) {
+                    return false;
+                }
 
-                return mTuner.canSelectType(docMimeType, docFlags);
+                if (mSelected.size() >= MAX_DOCS_IN_INTENT) {
+                    Snackbars.makeSnackbar(
+                            getActivity(),
+                            R.string.too_many_selected,
+                            Snackbar.LENGTH_SHORT)
+                            .show();
+                    return false;
+                }
             }
             return true;
         }
@@ -1108,9 +1121,17 @@
     public void selectAllFiles() {
         Metrics.logUserAction(getContext(), Metrics.USER_ACTION_SELECT_ALL);
 
-        // Exclude disabled files
-        List<String> enabled = new ArrayList<String>();
-        for (String id : mAdapter.getModelIds()) {
+        // Exclude disabled files.
+        Set<String> enabled = new HashSet<String>();
+        List<String> modelIds = mAdapter.getModelIds();
+
+        // Get the current selection.
+        String[] alreadySelected = mSelectionManager.getSelection().getAll();
+        for (String id : alreadySelected) {
+           enabled.add(id);
+        }
+
+        for (String id : modelIds) {
             Cursor cursor = getModel().getItem(id);
             if (cursor == null) {
                 Log.w(TAG, "Skipping selection. Can't obtain cursor for modeId: " + id);
@@ -1118,7 +1139,15 @@
             }
             String docMimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
             int docFlags = getCursorInt(cursor, Document.COLUMN_FLAGS);
-            if (isDocumentEnabled(docMimeType, docFlags)) {
+            if (mTuner.canSelectType(docMimeType, docFlags)) {
+                if (enabled.size() >= MAX_DOCS_IN_INTENT) {
+                    Snackbars.makeSnackbar(
+                        getActivity(),
+                        R.string.too_many_in_select_all,
+                        Snackbar.LENGTH_SHORT)
+                        .show();
+                    break;
+                }
                 enabled.add(id);
             }
         }
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java
index e3eae33..ecdbe63 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java
@@ -154,7 +154,8 @@
             MenuItem rename = menu.findItem(R.id.menu_rename);
             MenuItem selectAll = menu.findItem(R.id.menu_select_all);
 
-            open.setVisible(true);
+            open.setVisible(mState.action == ACTION_GET_CONTENT ||
+                    mState.action == ACTION_OPEN);
             share.setVisible(false);
             delete.setVisible(false);
             rename.setVisible(false);
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/MultiSelectManager.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/MultiSelectManager.java
index 35d8988..8852985 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/MultiSelectManager.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/MultiSelectManager.java
@@ -154,6 +154,10 @@
                         // Update the selection to remove any disappeared IDs.
                         mSelection.cancelProvisionalSelection();
                         mSelection.intersect(mModelIds);
+
+                        if (mBandManager != null && mBandManager.isActive()) {
+                            mBandManager.endBandSelect();
+                        }
                     }
 
                     @Override
@@ -940,6 +944,10 @@
          * Layout items are excluded from the GridModel.
          */
         boolean isLayoutItem(int adapterPosition);
+        /**
+         * Items may be in the adapter, but without an attached view.
+         */
+        boolean hasView(int adapterPosition);
     }
 
     /** Recycler view facade implementation backed by good ol' RecyclerView. */
@@ -1061,6 +1069,11 @@
                     return true;
             }
         }
+
+        @Override
+        public boolean hasView(int pos) {
+            return mView.findViewHolderForAdapterPosition(pos) != null;
+        }
     }
 
     public interface Callback {
@@ -1473,10 +1486,14 @@
          *     y-value.
          */
         void startSelection(Point relativeOrigin) {
+            recordVisibleChildren();
+            if (isEmpty()) {
+                // The selection band logic works only if there is at least one visible child.
+                return;
+            }
+
             mIsActive = true;
             mPointer = mHelper.createAbsolutePoint(relativeOrigin);
-
-            recordVisibleChildren();
             mRelativeOrigin = new RelativePoint(mPointer);
             mRelativePointer = new RelativePoint(mPointer);
             computeCurrentSelection();
@@ -1530,7 +1547,11 @@
         private void recordVisibleChildren() {
             for (int i = 0; i < mHelper.getVisibleChildCount(); i++) {
                 int adapterPosition = mHelper.getAdapterPositionAt(i);
-                if (!mHelper.isLayoutItem(adapterPosition) &&
+                // Sometimes the view is not attached, as we notify the multi selection manager
+                // synchronously, while views are attached asynchronously. As a result items which
+                // are in the adapter may not actually have a corresponding view (yet).
+                if (mHelper.hasView(adapterPosition) &&
+                        !mHelper.isLayoutItem(adapterPosition) &&
                         !mKnownPositions.get(adapterPosition)) {
                     mKnownPositions.put(adapterPosition, true);
                     recordItemData(mHelper.getAbsoluteRectForChildViewAt(i), adapterPosition);
@@ -1539,6 +1560,13 @@
         }
 
         /**
+         * Checks if there are any recorded children.
+         */
+        private boolean isEmpty() {
+            return mColumnBounds.size() == 0 || mRowBounds.size() == 0;
+        }
+
+        /**
          * Updates the limits lists and column map with the given item metadata.
          * @param absoluteChildRect The absolute rectangle for the child view being processed.
          * @param adapterPosition The position of the child view being processed.
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManager_GridModelTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManager_GridModelTest.java
index cc119fe..e401de1 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManager_GridModelTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManager_GridModelTest.java
@@ -448,6 +448,11 @@
             return false;
         }
 
+        @Override
+        public boolean hasView(int adapterPosition) {
+            return true;
+        }
+
         public static final class Item {
             public String name;
             public Rect rect;
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestSelectionEnvironment.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestSelectionEnvironment.java
index 56e54a6..f564769 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestSelectionEnvironment.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestSelectionEnvironment.java
@@ -100,4 +100,9 @@
     public boolean isLayoutItem(int adapterPosition) {
         return false;
     }
+
+    @Override
+    public boolean hasView(int adapterPosition) {
+        return true;
+    }
 }
diff --git a/packages/PrintServiceRecommendationService/Android.mk b/packages/PrintRecommendationService/Android.mk
similarity index 100%
rename from packages/PrintServiceRecommendationService/Android.mk
rename to packages/PrintRecommendationService/Android.mk
diff --git a/packages/PrintServiceRecommendationService/AndroidManifest.xml b/packages/PrintRecommendationService/AndroidManifest.xml
similarity index 100%
rename from packages/PrintServiceRecommendationService/AndroidManifest.xml
rename to packages/PrintRecommendationService/AndroidManifest.xml
diff --git a/packages/PrintRecommendationService/CleanSpec.mk b/packages/PrintRecommendationService/CleanSpec.mk
new file mode 100644
index 0000000..c087cb8
--- /dev/null
+++ b/packages/PrintRecommendationService/CleanSpec.mk
@@ -0,0 +1,49 @@
+# Copyright (C) 2016 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.
+#
+
+# If you don't need to do a full clean build but would like to touch
+# a file or delete some intermediate files, add a clean step to the end
+# of the list.  These steps will only be run once, if they haven't been
+# run before.
+#
+# E.g.:
+#     $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
+#     $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
+#
+# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
+# files that are missing or have been moved.
+#
+# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
+# Use $(OUT_DIR) to refer to the "out" directory.
+#
+# If you need to re-do something that's already mentioned, just copy
+# the command and add it to the bottom of the list.  E.g., if a change
+# that you made last week required touching a file and a change you
+# made today requires touching the same file, just copy the old
+# touch step and add it to the end of the list.
+#
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
+
+# For example:
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
+#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
+
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
diff --git a/packages/PrintServiceRecommendationService/MODULE_LICENSE_APACHE2 b/packages/PrintRecommendationService/MODULE_LICENSE_APACHE2
similarity index 100%
rename from packages/PrintServiceRecommendationService/MODULE_LICENSE_APACHE2
rename to packages/PrintRecommendationService/MODULE_LICENSE_APACHE2
diff --git a/packages/PrintServiceRecommendationService/NOTICE b/packages/PrintRecommendationService/NOTICE
similarity index 100%
rename from packages/PrintServiceRecommendationService/NOTICE
rename to packages/PrintRecommendationService/NOTICE
diff --git a/packages/PrintServiceRecommendationService/res/values/donottranslate.xml b/packages/PrintRecommendationService/res/values/donottranslate.xml
similarity index 100%
rename from packages/PrintServiceRecommendationService/res/values/donottranslate.xml
rename to packages/PrintRecommendationService/res/values/donottranslate.xml
diff --git a/packages/PrintServiceRecommendationService/res/values/strings.xml b/packages/PrintRecommendationService/res/values/strings.xml
similarity index 100%
rename from packages/PrintServiceRecommendationService/res/values/strings.xml
rename to packages/PrintRecommendationService/res/values/strings.xml
diff --git a/packages/PrintServiceRecommendationService/res/xml/vendorconfigs.xml b/packages/PrintRecommendationService/res/xml/vendorconfigs.xml
similarity index 100%
rename from packages/PrintServiceRecommendationService/res/xml/vendorconfigs.xml
rename to packages/PrintRecommendationService/res/xml/vendorconfigs.xml
diff --git a/packages/PrintServiceRecommendationService/src/com/android/printservice/recommendation/PrintServicePlugin.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/PrintServicePlugin.java
similarity index 100%
rename from packages/PrintServiceRecommendationService/src/com/android/printservice/recommendation/PrintServicePlugin.java
rename to packages/PrintRecommendationService/src/com/android/printservice/recommendation/PrintServicePlugin.java
diff --git a/packages/PrintServiceRecommendationService/src/com/android/printservice/recommendation/RecommendationServiceImpl.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/RecommendationServiceImpl.java
similarity index 100%
rename from packages/PrintServiceRecommendationService/src/com/android/printservice/recommendation/RecommendationServiceImpl.java
rename to packages/PrintRecommendationService/src/com/android/printservice/recommendation/RecommendationServiceImpl.java
diff --git a/packages/PrintServiceRecommendationService/src/com/android/printservice/recommendation/RemotePrintServicePlugin.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/RemotePrintServicePlugin.java
similarity index 100%
rename from packages/PrintServiceRecommendationService/src/com/android/printservice/recommendation/RemotePrintServicePlugin.java
rename to packages/PrintRecommendationService/src/com/android/printservice/recommendation/RemotePrintServicePlugin.java
diff --git a/packages/PrintServiceRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/MDNSFilterPlugin.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/MDNSFilterPlugin.java
similarity index 100%
rename from packages/PrintServiceRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/MDNSFilterPlugin.java
rename to packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/MDNSFilterPlugin.java
diff --git a/packages/PrintServiceRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/VendorConfig.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/VendorConfig.java
similarity index 100%
rename from packages/PrintServiceRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/VendorConfig.java
rename to packages/PrintRecommendationService/src/com/android/printservice/recommendation/plugin/mdnsFilter/VendorConfig.java
diff --git a/packages/PrintServiceRecommendationService/src/com/android/printservice/recommendation/util/MDNSUtils.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/MDNSUtils.java
similarity index 100%
rename from packages/PrintServiceRecommendationService/src/com/android/printservice/recommendation/util/MDNSUtils.java
rename to packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/MDNSUtils.java
diff --git a/packages/PrintServiceRecommendationService/src/com/android/printservice/recommendation/util/NsdResolveQueue.java b/packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/NsdResolveQueue.java
similarity index 100%
rename from packages/PrintServiceRecommendationService/src/com/android/printservice/recommendation/util/NsdResolveQueue.java
rename to packages/PrintRecommendationService/src/com/android/printservice/recommendation/util/NsdResolveQueue.java
diff --git a/packages/SettingsLib/res/layout/drawer_category.xml b/packages/SettingsLib/res/layout/drawer_category.xml
index b7b50d0..582821b 100644
--- a/packages/SettingsLib/res/layout/drawer_category.xml
+++ b/packages/SettingsLib/res/layout/drawer_category.xml
@@ -28,7 +28,8 @@
     <TextView
         android:id="@android:id/title"
         android:layout_width="match_parent"
-        android:layout_height="48dp"
+        android:layout_height="wrap_content"
+        android:minHeight="48dp"
         android:paddingTop="16dp"
         android:paddingBottom="16dp"
         android:paddingStart="16dp"
diff --git a/packages/SettingsLib/res/layout/drawer_item.xml b/packages/SettingsLib/res/layout/drawer_item.xml
index 4b53049..e1f1ae5 100644
--- a/packages/SettingsLib/res/layout/drawer_item.xml
+++ b/packages/SettingsLib/res/layout/drawer_item.xml
@@ -17,7 +17,8 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/tile_item"
     android:layout_width="match_parent"
-    android:layout_height="48dp"
+    android:layout_height="wrap_content"
+    android:minHeight="48dp"
     android:orientation="horizontal" >
 
     <ImageView
diff --git a/packages/SettingsLib/res/layout/restricted_switch_widget.xml b/packages/SettingsLib/res/layout/restricted_switch_widget.xml
index 6183812..b286df0 100644
--- a/packages/SettingsLib/res/layout/restricted_switch_widget.xml
+++ b/packages/SettingsLib/res/layout/restricted_switch_widget.xml
@@ -22,7 +22,7 @@
         android:gravity="end|center_vertical" />
     <!-- Based off frameworks/base/core/res/res/layout/preference_widget_switch.xml -->
     <Switch xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+android:id/switch_widget"
+        android:id="@android:id/switch_widget"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:focusable="false"
diff --git a/packages/SettingsLib/res/values/attrs.xml b/packages/SettingsLib/res/values/attrs.xml
index 4cdc177..f064e4e 100644
--- a/packages/SettingsLib/res/values/attrs.xml
+++ b/packages/SettingsLib/res/values/attrs.xml
@@ -21,10 +21,16 @@
         <attr name="userRestriction" format="string" />
         <!-- If true then we can use enabled/disabled by admin strings for summary (android.R.id.summary). -->
         <attr name="useAdminDisabledSummary" format="boolean" />
+    </declare-styleable>
+
+    <declare-styleable name="RestrictedSwitchPreference">
         <!-- If true, an additional summary will be added in addition to the existing summary and
         this will be used for enabled/disabled by admin strings leaving android.R.id.summary untouched.
         As such when this is true, useAdminDisabledSummary will be overwritten to false. -->
         <attr name="useAdditionalSummary" format="boolean" />
+        <!-- This is used as summary for restricted switch preferences, default value is
+        @string/disabled_by_admin (Disabled by administrator). -->
+        <attr name="restrictedSwitchSummary" format="reference" />
     </declare-styleable>
 
     <declare-styleable name="WifiEncryptionState">
diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedSwitchPreference.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedSwitchPreference.java
index e300f45..1ad710a 100644
--- a/packages/SettingsLib/src/com/android/settingslib/RestrictedSwitchPreference.java
+++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedSwitchPreference.java
@@ -37,6 +37,7 @@
 public class RestrictedSwitchPreference extends SwitchPreference {
     RestrictedPreferenceHelper mHelper;
     boolean mUseAdditionalSummary = false;
+    String mRestrictedSwitchSummary = null;
 
     public RestrictedSwitchPreference(Context context, AttributeSet attrs,
             int defStyleAttr, int defStyleRes) {
@@ -45,14 +46,30 @@
         mHelper = new RestrictedPreferenceHelper(context, this, attrs);
         if (attrs != null) {
             final TypedArray attributes = context.obtainStyledAttributes(attrs,
-                    R.styleable.RestrictedPreference);
-            final TypedValue useAdditionalSummary =
-                    attributes.peekValue(R.styleable.RestrictedPreference_useAdditionalSummary);
+                    R.styleable.RestrictedSwitchPreference);
+            final TypedValue useAdditionalSummary = attributes.peekValue(
+                    R.styleable.RestrictedSwitchPreference_useAdditionalSummary);
             if (useAdditionalSummary != null) {
                 mUseAdditionalSummary =
                         (useAdditionalSummary.type == TypedValue.TYPE_INT_BOOLEAN
                                 && useAdditionalSummary.data != 0);
             }
+
+            final TypedValue restrictedSwitchSummary = attributes.peekValue(
+                    R.styleable.RestrictedSwitchPreference_restrictedSwitchSummary);
+            CharSequence data = null;
+            if (restrictedSwitchSummary != null
+                    && restrictedSwitchSummary.type == TypedValue.TYPE_STRING) {
+                if (restrictedSwitchSummary.resourceId != 0) {
+                    data = context.getString(restrictedSwitchSummary.resourceId);
+                } else {
+                    data = restrictedSwitchSummary.string;
+                }
+            }
+            mRestrictedSwitchSummary = data == null ? null : data.toString();
+        }
+        if (mRestrictedSwitchSummary == null) {
+            mRestrictedSwitchSummary = context.getString(R.string.disabled_by_admin);
         }
         if (mUseAdditionalSummary) {
             setLayoutResource(R.layout.restricted_switch_preference);
@@ -91,24 +108,22 @@
                     R.id.additional_summary);
             if (additionalSummaryView != null) {
                 if (isDisabledByAdmin()) {
-                    additionalSummaryView.setText(
-                            isChecked() ? R.string.enabled_by_admin : R.string.disabled_by_admin);
+                    additionalSummaryView.setText(mRestrictedSwitchSummary);
                     additionalSummaryView.setVisibility(View.VISIBLE);
+                } else {
+                    additionalSummaryView.setVisibility(View.GONE);
                 }
-            } else {
-                additionalSummaryView.setVisibility(View.GONE);
             }
         } else {
             final TextView summaryView = (TextView) holder.findViewById(android.R.id.summary);
             if (summaryView != null) {
                 if (isDisabledByAdmin()) {
-                    summaryView.setText(
-                            isChecked() ? R.string.enabled_by_admin : R.string.disabled_by_admin);
+                    summaryView.setText(mRestrictedSwitchSummary);
                     summaryView.setVisibility(View.VISIBLE);
                 }
+                // No need to change the visibility to GONE in the else case here since Preference
+                // class would have already changed it if there is no summary to display.
             }
-            // No need to change the visibility to GONE in the else case here since Preference class
-            // would have already changed it if there is no summary to display.
         }
     }
 
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
index 2b1c66d..7d279eb 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
@@ -504,20 +504,7 @@
     }
 
     private void updateWifiState(int state) {
-        if (state == WifiManager.WIFI_STATE_ENABLED) {
-            if (mScanner != null) {
-                // We only need to resume if mScanner isn't null because
-                // that means we want to be scanning.
-                mScanner.resume();
-            }
-        } else {
-            mLastInfo = null;
-            mLastNetworkInfo = null;
-            if (mScanner != null) {
-                mScanner.pause();
-            }
-        }
-        mMainHandler.obtainMessage(MainHandler.MSG_WIFI_STATE_CHANGED, state, 0).sendToTarget();
+        mWorkHandler.obtainMessage(WorkHandler.MSG_UPDATE_WIFI_STATE, state, 0).sendToTarget();
     }
 
     public static List<AccessPoint> getCurrentAccessPoints(Context context, boolean includeSaved,
@@ -609,6 +596,7 @@
         private static final int MSG_UPDATE_ACCESS_POINTS = 0;
         private static final int MSG_UPDATE_NETWORK_INFO = 1;
         private static final int MSG_RESUME = 2;
+        private static final int MSG_UPDATE_WIFI_STATE = 3;
 
         public WorkHandler(Looper looper) {
             super(looper);
@@ -626,6 +614,23 @@
                 case MSG_RESUME:
                     handleResume();
                     break;
+                case MSG_UPDATE_WIFI_STATE:
+                    if (msg.arg1 == WifiManager.WIFI_STATE_ENABLED) {
+                        if (mScanner != null) {
+                            // We only need to resume if mScanner isn't null because
+                            // that means we want to be scanning.
+                            mScanner.resume();
+                        }
+                    } else {
+                        mLastInfo = null;
+                        mLastNetworkInfo = null;
+                        if (mScanner != null) {
+                            mScanner.pause();
+                        }
+                    }
+                    mMainHandler.obtainMessage(MainHandler.MSG_WIFI_STATE_CHANGED, msg.arg1, 0)
+                            .sendToTarget();
+                    break;
             }
         }
     }
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index b557dc4..4e9b59f 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -111,6 +111,8 @@
     <uses-permission android:name="android.permission.VIBRATE" />
     <uses-permission android:name="android.permission.MANAGE_ACTIVITY_STACKS" />
     <uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
+    <!-- Permission needed to rename bugreport notifications (so they're not shown as Shell) -->
+    <uses-permission android:name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME" />
 
     <application android:label="@string/app_label"
                  android:defaultToDeviceProtectedStorage="true"
diff --git a/packages/Shell/src/com/android/shell/BugreportProgressService.java b/packages/Shell/src/com/android/shell/BugreportProgressService.java
index c541bbc..ec3a7fc 100644
--- a/packages/Shell/src/com/android/shell/BugreportProgressService.java
+++ b/packages/Shell/src/com/android/shell/BugreportProgressService.java
@@ -62,6 +62,7 @@
 import android.content.res.Configuration;
 import android.net.Uri;
 import android.os.AsyncTask;
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.IBinder;
@@ -204,6 +205,8 @@
      */
     private boolean mTakingScreenshot;
 
+    private static final Bundle sNotificationBundle = new Bundle();
+
     @Override
     public void onCreate() {
         mContext = getApplicationContext();
@@ -979,7 +982,13 @@
     }
 
     private static Notification.Builder newBaseNotification(Context context) {
+        if (sNotificationBundle.isEmpty()) {
+            // Rename notifcations from "Shell" to "Android System"
+            sNotificationBundle.putString(Notification.EXTRA_SUBSTITUTE_APP_NAME,
+                    context.getString(com.android.internal.R.string.android_system_label));
+        }
         return new Notification.Builder(context)
+                .addExtras(sNotificationBundle)
                 .setCategory(Notification.CATEGORY_SYSTEM)
                 .setSmallIcon(com.android.internal.R.drawable.stat_sys_adb)
                 .setLocalOnly(true)
diff --git a/packages/SystemUI/res/layout/qs_detail.xml b/packages/SystemUI/res/layout/qs_detail.xml
index af2a285..32839d8 100644
--- a/packages/SystemUI/res/layout/qs_detail.xml
+++ b/packages/SystemUI/res/layout/qs_detail.xml
@@ -44,11 +44,15 @@
         android:layout_height="wrap_content"
         />
 
-    <FrameLayout
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1">
+        <FrameLayout
             android:id="@android:id/content"
             android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_weight="1" />
+            android:layout_height="wrap_content" />
+    </ScrollView>
 
     <include layout="@layout/qs_detail_buttons" />
 
diff --git a/packages/SystemUI/res/values-sw410dp/config.xml b/packages/SystemUI/res/values-sw410dp/config.xml
index 08b2f88..049a535 100644
--- a/packages/SystemUI/res/values-sw410dp/config.xml
+++ b/packages/SystemUI/res/values-sw410dp/config.xml
@@ -21,4 +21,6 @@
      for different hardware and product builds. -->
 <resources>
     <integer name="quick_settings_num_rows">2</integer>
+
+    <bool name="quick_settings_show_date">true</bool>
 </resources>
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index c54db37..ef84c76 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -268,5 +268,7 @@
     <!-- Nav bar button default ordering/layout -->
     <string name="config_navBarLayout" translatable="false">space,back;home;recent,menu_ime</string>
 
+    <bool name="quick_settings_show_date">false</bool>
+
 </resources>
 
diff --git a/packages/SystemUI/res/values/ids.xml b/packages/SystemUI/res/values/ids.xml
index 9697ea6..94d79f2 100644
--- a/packages/SystemUI/res/values/ids.xml
+++ b/packages/SystemUI/res/values/ids.xml
@@ -63,9 +63,10 @@
     <item type="id" name="is_clicked_heads_up_tag" />
 
     <!-- Accessibility actions for the docked stack divider -->
-    <item type="id" name="action_move_left" />
-    <item type="id" name="action_move_right" />
-    <item type="id" name="action_move_up" />
-    <item type="id" name="action_move_down" />
+    <item type="id" name="action_move_tl_full" />
+    <item type="id" name="action_move_tl_70" />
+    <item type="id" name="action_move_tl_50" />
+    <item type="id" name="action_move_tl_30" />
+    <item type="id" name="action_move_rb_full" />
 </resources>
 
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index a03aa28..ea55ac2 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -605,7 +605,7 @@
     <string name="dessert_case">Dessert Case</string>
 
     <!-- Name of the launcher shortcut icon that allows dreams to be started immediately [CHAR LIMIT=20] -->
-    <string name="start_dreams">Daydream</string>
+    <string name="start_dreams">Screen saver</string>
 
     <!-- Textual description of Ethernet connections -->
     <string name="ethernet_label">Ethernet</string>
@@ -1580,17 +1580,27 @@
     <!-- Accessibility label for the divider that separates the windows in split-screen mode [CHAR LIMIT=NONE] -->
     <string name="accessibility_divider">Split-screen divider</string>
 
-    <!-- Accessibility action for moving down the docked stack divider [CHAR LIMIT=NONE] -->
-    <string name="accessibility_action_divider_move_down">Move down</string>
+    <!-- Accessibility action for moving docked stack divider to make the left screen full screen [CHAR LIMIT=NONE] -->
+    <string name="accessibility_action_divider_left_full">Left full screen</string>
+    <!-- Accessibility action for moving docked stack divider to make the left screen 70% [CHAR LIMIT=NONE] -->
+    <string name="accessibility_action_divider_left_70">Left 70%</string>
+    <!-- Accessibility action for moving docked stack divider to make the left screen 50% [CHAR LIMIT=NONE] -->
+    <string name="accessibility_action_divider_left_50">Left 50%</string>
+    <!-- Accessibility action for moving docked stack divider to make the left screen 30% [CHAR LIMIT=NONE] -->
+    <string name="accessibility_action_divider_left_30">Left 30%</string>
+    <!-- Accessibility action for moving docked stack divider to make the right screen full screen [CHAR LIMIT=NONE] -->
+    <string name="accessibility_action_divider_right_full">Right full screen</string>
 
-    <!-- Accessibility action for moving down the docked stack divider [CHAR LIMIT=NONE] -->
-    <string name="accessibility_action_divider_move_up">Move up</string>
-
-    <!-- Accessibility action for moving down the docked stack divider [CHAR LIMIT=NONE] -->
-    <string name="accessibility_action_divider_move_left">Move left</string>
-
-    <!-- Accessibility action for moving down the docked stack divider [CHAR LIMIT=NONE] -->
-    <string name="accessibility_action_divider_move_right">Move right</string>
+    <!-- Accessibility action for moving docked stack divider to make the top screen full screen [CHAR LIMIT=NONE] -->
+    <string name="accessibility_action_divider_top_full">Top full screen</string>
+    <!-- Accessibility action for moving docked stack divider to make the top screen 70% [CHAR LIMIT=NONE] -->
+    <string name="accessibility_action_divider_top_70">Top 70%</string>
+    <!-- Accessibility action for moving docked stack divider to make the top screen 50% [CHAR LIMIT=NONE] -->
+    <string name="accessibility_action_divider_top_50">Top 50%</string>
+    <!-- Accessibility action for moving docked stack divider to make the top screen 30% [CHAR LIMIT=NONE] -->
+    <string name="accessibility_action_divider_top_30">Top 30%</string>
+    <!-- Accessibility action for moving docked stack divider to make the bottom screen full screen [CHAR LIMIT=NONE] -->
+    <string name="accessibility_action_divider_bottom_full">Bottom full screen</string>
 
     <!-- Accessibility description of a QS tile while editing positions [CHAR LIMIT=NONE] -->
     <string name="accessibility_qs_edit_tile_label">Position <xliff:g id="position" example="2">%1$d</xliff:g>, <xliff:g id="tile_name" example="Wi-Fi">%2$s</xliff:g>. Double tap to edit.</string>
diff --git a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
index d12ab29..cecbfcb 100644
--- a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java
@@ -317,8 +317,8 @@
                     mResizedView = null;
                     mWatchingForPull = false;
                 }
-                mInitialTouchY = ev.getY();
-                mInitialTouchX = ev.getX();
+                mInitialTouchY = ev.getRawY();
+                mInitialTouchX = ev.getRawX();
                 break;
 
             case MotionEvent.ACTION_CANCEL:
@@ -412,8 +412,8 @@
                 mWatchingForPull = mScrollAdapter != null &&
                         isInside(mScrollAdapter.getHostView(), x, y);
                 mResizedView = findView(x, y);
-                mInitialTouchX = ev.getX();
-                mInitialTouchY = ev.getY();
+                mInitialTouchX = ev.getRawX();
+                mInitialTouchY = ev.getRawY();
                 break;
             case MotionEvent.ACTION_MOVE: {
                 if (mWatchingForPull) {
diff --git a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
index 1306284..c72f5d2 100644
--- a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
+++ b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
@@ -29,6 +29,7 @@
 import android.graphics.RectF;
 import android.graphics.Region.Op;
 import android.opengl.GLUtils;
+import android.os.AsyncTask;
 import android.os.SystemProperties;
 import android.renderscript.Matrix4f;
 import android.service.wallpaper.WallpaperService;
@@ -155,6 +156,8 @@
 
         private int mLastRequestedWidth = -1;
         private int mLastRequestedHeight = -1;
+        private AsyncTask<Void, Void, Bitmap> mLoader;
+        private boolean mNeedsDrawAfterLoadingWallpaper;
 
         public DrawableEngine() {
             super();
@@ -184,10 +187,9 @@
             super.onCreate(surfaceHolder);
 
             mDefaultDisplay = getSystemService(WindowManager.class).getDefaultDisplay();
-
-            updateSurfaceSize(surfaceHolder, getDefaultDisplayInfo());
-
             setOffsetNotificationsEnabled(false);
+
+            updateSurfaceSize(surfaceHolder, getDefaultDisplayInfo(), false /* forDraw */);
         }
 
         @Override
@@ -197,17 +199,19 @@
             mWallpaperManager.forgetLoadedWallpaper();
         }
 
-        void updateSurfaceSize(SurfaceHolder surfaceHolder, DisplayInfo displayInfo) {
+        boolean updateSurfaceSize(SurfaceHolder surfaceHolder, DisplayInfo displayInfo,
+                boolean forDraw) {
+            boolean hasWallpaper = true;
+
             // Load background image dimensions, if we haven't saved them yet
             if (mBackgroundWidth <= 0 || mBackgroundHeight <= 0) {
                 // Need to load the image to get dimensions
                 mWallpaperManager.forgetLoadedWallpaper();
-                updateWallpaperLocked();
-                if (mBackgroundWidth <= 0 || mBackgroundHeight <= 0) {
-                    // Default to the display size if we can't find the dimensions
-                    mBackgroundWidth = displayInfo.logicalWidth;
-                    mBackgroundHeight = displayInfo.logicalHeight;
+                loadWallpaper(forDraw);
+                if (DEBUG) {
+                    Log.d(TAG, "Reloading, redoing updateSurfaceSize later.");
                 }
+                hasWallpaper = false;
             }
 
             // Force the wallpaper to cover the screen in both dimensions
@@ -224,6 +228,7 @@
             } else {
                 surfaceHolder.setSizeFromLayout();
             }
+            return hasWallpaper;
         }
 
         @Override
@@ -299,6 +304,7 @@
             }
             super.onSurfaceRedrawNeeded(holder);
 
+            mLastSurfaceHeight = mLastSurfaceWidth = -1;
             drawFrame();
         }
 
@@ -317,7 +323,9 @@
                 // should change
                 if (newRotation != mLastRotation) {
                     // Update surface size (if necessary)
-                    updateSurfaceSize(getSurfaceHolder(), displayInfo);
+                    if (!updateSurfaceSize(getSurfaceHolder(), displayInfo, true /* forDraw */)) {
+                        return; // had to reload wallpaper, will retry later
+                    }
                     mRotationAtLastSurfaceSizeUpdate = newRotation;
                     mDisplayWidthAtLastSurfaceSizeUpdate = displayInfo.logicalWidth;
                     mDisplayHeightAtLastSurfaceSizeUpdate = displayInfo.logicalHeight;
@@ -339,8 +347,8 @@
                 }
                 mLastRotation = newRotation;
 
-                // Load bitmap if it is not yet loaded or if it was loaded at a different size
-                if (mBackground == null || surfaceDimensionsChanged) {
+                // Load bitmap if it is not yet loaded
+                if (mBackground == null) {
                     if (DEBUG) {
                         Log.d(TAG, "Reloading bitmap: mBackground, bgw, bgh, dw, dh = " +
                                 mBackground + ", " +
@@ -349,20 +357,11 @@
                                 dw + ", " + dh);
                     }
                     mWallpaperManager.forgetLoadedWallpaper();
-                    updateWallpaperLocked();
-                    if (mBackground == null) {
-                        if (DEBUG) {
-                            Log.d(TAG, "Unable to load bitmap");
-                        }
-                        return;
-                    }
+                    loadWallpaper(true /* needDraw */);
                     if (DEBUG) {
-                        if (dw != mBackground.getWidth() || dh != mBackground.getHeight()) {
-                            Log.d(TAG, "Surface != bitmap dimensions: surface w/h, bitmap w/h: " +
-                                    dw + ", " + dh + ", " + mBackground.getWidth() + ", " +
-                                    mBackground.getHeight());
-                        }
+                        Log.d(TAG, "Reloading, resuming draw later");
                     }
+                    return;
                 }
 
                 // Center the scaled image
@@ -422,36 +421,77 @@
             }
         }
 
-        private void updateWallpaperLocked() {
-            Throwable exception = null;
-            try {
-                mBackground = null;
-                mBackgroundWidth = -1;
-                mBackgroundHeight = -1;
-                mBackground = mWallpaperManager.getBitmap();
-                mBackgroundWidth = mBackground.getWidth();
-                mBackgroundHeight = mBackground.getHeight();
-            } catch (RuntimeException e) {
-                exception = e;
-            } catch (OutOfMemoryError e) {
-                exception = e;
-            }
-
-            if (exception != null) {
-                mBackground = null;
-                mBackgroundWidth = -1;
-                mBackgroundHeight = -1;
-                // Note that if we do fail at this, and the default wallpaper can't
-                // be loaded, we will go into a cycle.  Don't do a build where the
-                // default wallpaper can't be loaded.
-                Log.w(TAG, "Unable to load wallpaper!", exception);
-                try {
-                    mWallpaperManager.clear();
-                } catch (IOException ex) {
-                    // now we're really screwed.
-                    Log.w(TAG, "Unable reset to default wallpaper!", ex);
+        /**
+         * Loads the wallpaper on background thread and schedules updating the surface frame,
+         * and if {@param needsDraw} is set also draws a frame.
+         *
+         * If loading is already in-flight, subsequent loads are ignored (but needDraw is or-ed to
+         * the active request).
+         */
+        private void loadWallpaper(boolean needsDraw) {
+            mNeedsDrawAfterLoadingWallpaper |= needsDraw;
+            if (mLoader != null) {
+                if (DEBUG) {
+                    Log.d(TAG, "Skipping loadWallpaper, already in flight ");
                 }
+                return;
             }
+            mLoader = new AsyncTask<Void, Void, Bitmap>() {
+                @Override
+                protected Bitmap doInBackground(Void... params) {
+                    Throwable exception;
+                    try {
+                        return mWallpaperManager.getBitmap();
+                    } catch (RuntimeException | OutOfMemoryError e) {
+                        exception = e;
+                    }
+
+                    if (exception != null) {
+                        // Note that if we do fail at this, and the default wallpaper can't
+                        // be loaded, we will go into a cycle.  Don't do a build where the
+                        // default wallpaper can't be loaded.
+                        Log.w(TAG, "Unable to load wallpaper!", exception);
+                        try {
+                            mWallpaperManager.clear();
+                        } catch (IOException ex) {
+                            // now we're really screwed.
+                            Log.w(TAG, "Unable reset to default wallpaper!", ex);
+                        }
+
+                        try {
+                            return mWallpaperManager.getBitmap();
+                        } catch (RuntimeException | OutOfMemoryError e) {
+                            Log.w(TAG, "Unable to load default wallpaper!", e);
+                        }
+                    }
+                    return null;
+                }
+
+                @Override
+                protected void onPostExecute(Bitmap b) {
+                    mBackground = null;
+                    mBackgroundWidth = -1;
+                    mBackgroundHeight = -1;
+
+                    if (b != null) {
+                        mBackground = b;
+                        mBackgroundWidth = mBackground.getWidth();
+                        mBackgroundHeight = mBackground.getHeight();
+                    }
+
+                    if (DEBUG) {
+                        Log.d(TAG, "Wallpaper loaded: " + mBackground);
+                    }
+                    updateSurfaceSize(getSurfaceHolder(), getDefaultDisplayInfo(),
+                            false /* forDraw */);
+                    if (mNeedsDrawAfterLoadingWallpaper) {
+                        drawFrame();
+                    }
+
+                    mLoader = null;
+                    mNeedsDrawAfterLoadingWallpaper = false;
+                }
+            }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
         }
 
         @Override
diff --git a/packages/SystemUI/src/com/android/systemui/RecentsComponent.java b/packages/SystemUI/src/com/android/systemui/RecentsComponent.java
index eaafafa..94b2fdb 100644
--- a/packages/SystemUI/src/com/android/systemui/RecentsComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/RecentsComponent.java
@@ -21,9 +21,9 @@
 import android.view.View;
 
 public interface RecentsComponent {
-    void showRecents(boolean triggeredFromAltTab, boolean fromHome, View statusBarView);
+    void showRecents(boolean triggeredFromAltTab, boolean fromHome);
     void hideRecents(boolean triggeredFromAltTab, boolean triggeredFromHomeKey);
-    void toggleRecents(Display display, int layoutDirection, View statusBarView);
+    void toggleRecents(Display display);
     void preloadRecents();
     void cancelPreloadingRecents();
     void showNextAffiliatedTask();
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUISecondaryUserService.java b/packages/SystemUI/src/com/android/systemui/SystemUISecondaryUserService.java
index f619bfb..c8a2e17 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUISecondaryUserService.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUISecondaryUserService.java
@@ -16,11 +16,9 @@
 
 package com.android.systemui;
 
-import android.app.ActivityManager;
 import android.app.Service;
 import android.content.Intent;
 import android.os.IBinder;
-import android.os.Process;
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
@@ -43,15 +41,19 @@
         SystemUI[] services = ((SystemUIApplication) getApplication()).getServices();
         if (args == null || args.length == 0) {
             for (SystemUI ui: services) {
-                pw.println("dumping service: " + ui.getClass().getName());
-                ui.dump(fd, pw, args);
+                if (ui != null) {
+                    pw.println("dumping service: " + ui.getClass().getName());
+                    ui.dump(fd, pw, args);
+                }
             }
         } else {
             String svc = args[0];
             for (SystemUI ui: services) {
-                String name = ui.getClass().getName();
-                if (name.endsWith(svc)) {
-                    ui.dump(fd, pw, args);
+                if (ui != null) {
+                    String name = ui.getClass().getName();
+                    if (name.endsWith(svc)) {
+                        ui.dump(fd, pw, args);
+                    }
                 }
             }
         }
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManager.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManager.java
index 0798590..1ac5992 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManager.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManager.java
@@ -27,6 +27,7 @@
 import android.os.UserHandle;
 import android.provider.Settings;
 import android.view.MotionEvent;
+import android.view.accessibility.AccessibilityManager;
 
 import com.android.systemui.analytics.DataCollector;
 import com.android.systemui.statusbar.StatusBarState;
@@ -60,6 +61,7 @@
     private final SensorManager mSensorManager;
     private final DataCollector mDataCollector;
     private final HumanInteractionClassifier mHumanInteractionClassifier;
+    private final AccessibilityManager mAccessibilityManager;
 
     private static FalsingManager sInstance = null;
 
@@ -78,7 +80,8 @@
 
     private FalsingManager(Context context) {
         mContext = context;
-        mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
+        mSensorManager = mContext.getSystemService(SensorManager.class);
+        mAccessibilityManager = context.getSystemService(AccessibilityManager.class);
         mDataCollector = DataCollector.getInstance(mContext);
         mHumanInteractionClassifier = HumanInteractionClassifier.getInstance(mContext);
         mScreenOn = context.getSystemService(PowerManager.class).isInteractive();
@@ -177,6 +180,11 @@
                         .toString());
             }
         }
+        if (mAccessibilityManager.isTouchExplorationEnabled()) {
+            // Touch exploration triggers false positives in the classifier and
+            // already sufficiently prevents false unlocks.
+            return false;
+        }
         return mHumanInteractionClassifier.isFalseTouch();
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
index 1149c59..74f1b80 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
@@ -70,6 +70,7 @@
 
     private QSCustomizer mCustomizePanel;
     private Record mDetailRecord;
+    private boolean mTriggeredExpand;
 
     public QSPanel(Context context) {
         this(context, null);
@@ -384,8 +385,16 @@
     }
 
     protected void handleShowDetail(Record r, boolean show) {
-        if (show && !mExpanded) {
-            mHost.animateExpandQS();
+        if (show) {
+            if (!mExpanded) {
+                mTriggeredExpand = true;
+                mHost.animateToggleQSExpansion();
+            } else {
+                mTriggeredExpand = false;
+            }
+        } else if (mTriggeredExpand) {
+            mHost.animateToggleQSExpansion();
+            mTriggeredExpand = false;
         }
         if (r instanceof TileRecord) {
             handleShowDetailTile((TileRecord) r, show);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
index 3e32905..7692598 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
@@ -389,7 +389,7 @@
         void startRunnableDismissingKeyguard(Runnable runnable);
         void warn(String message, Throwable t);
         void collapsePanels();
-        void animateExpandQS();
+        void animateToggleQSExpansion();
         void openPanels();
         Looper getLooper();
         Context getContext();
diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
index faa5283..41b49d8 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
@@ -279,6 +279,7 @@
 
     private void selectPosition(int position, View v) {
         // Remove the placeholder.
+        notifyItemRemoved(mEditIndex);
         mTiles.remove(mEditIndex--);
         mAccessibilityMoving = false;
         move(mAccessibilityFromIndex, position, v);
@@ -323,7 +324,7 @@
     }
 
     private boolean move(int from, int to, View v) {
-        if (to >= mEditIndex) {
+        if (to > mEditIndex) {
             if (from >= mEditIndex) {
                 return false;
             }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java
index d04a2fc..9bc85c8 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java
@@ -144,14 +144,18 @@
                 String packageName = info.serviceInfo.packageName;
                 ComponentName componentName = new ComponentName(packageName, info.serviceInfo.name);
                 String spec = CustomTile.toSpec(componentName);
+                if (info.serviceInfo.icon == 0) {
+                    continue;
+                }
                 Drawable icon = info.serviceInfo.loadIcon(pm);
                 if (!permission.BIND_QUICK_SETTINGS_TILE.equals(info.serviceInfo.permission)) {
                     continue;
                 }
-                if (icon != null) {
-                    icon.mutate();
-                    icon.setTint(mContext.getColor(android.R.color.white));
+                if (icon == null) {
+                    continue;
                 }
+                icon.mutate();
+                icon.setTint(mContext.getColor(android.R.color.white));
                 CharSequence label = info.serviceInfo.loadLabel(pm);
                 final CharSequence appLabel = info.serviceInfo.applicationInfo.loadLabel(pm);
                 addTile(spec, icon, label != null ? label.toString() : "null", appLabel, mContext);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java b/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
index 6b20681..54dd015 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
@@ -36,7 +36,6 @@
 import android.view.IWindowManager;
 import android.view.WindowManager;
 import android.view.WindowManagerGlobal;
-
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.systemui.R;
@@ -59,6 +58,7 @@
     private final IQSTileService mService;
     private final TileServiceManager mServiceManager;
     private final int mUser;
+    private final android.graphics.drawable.Icon mDefaultIcon;
 
     private boolean mListening;
     private boolean mBound;
@@ -73,15 +73,19 @@
         mService = mServiceManager.getTileService();
         mTile = new Tile(mComponent);
         mUser = ActivityManager.getCurrentUser();
+        android.graphics.drawable.Icon defaultIcon;
         try {
             PackageManager pm = mContext.getPackageManager();
             ServiceInfo info = pm.getServiceInfo(mComponent,
                     PackageManager.MATCH_ENCRYPTION_AWARE_AND_UNAWARE);
-            mTile.setIcon(android.graphics.drawable.Icon
-                    .createWithResource(mComponent.getPackageName(), info.icon));
+            defaultIcon = info.icon != 0 ? android.graphics.drawable.Icon
+                    .createWithResource(mComponent.getPackageName(), info.icon) : null;
+            mTile.setIcon(defaultIcon);
             mTile.setLabel(info.loadLabel(pm));
         } catch (Exception e) {
+            defaultIcon = null;
         }
+        mDefaultIcon = defaultIcon;
         try {
             mService.setQSTile(mTile);
         } catch (RemoteException e) {
@@ -91,13 +95,7 @@
 
     @Override
     public boolean isAvailable() {
-        try {
-            ServiceInfo info = mContext.getPackageManager().getServiceInfo(mComponent,
-                    PackageManager.MATCH_ENCRYPTION_AWARE_AND_UNAWARE);
-            return true;
-        } catch (Exception e) {
-            return false;
-        }
+        return mDefaultIcon != null;
     }
 
     public int getUser() {
@@ -227,11 +225,18 @@
 
     @Override
     protected void handleUpdateState(State state, Object arg) {
-        Drawable drawable = mTile.getIcon().loadDrawable(mContext);
         int tileState = mTile.getState();
         if (mServiceManager.hasPendingBind()) {
             tileState = Tile.STATE_UNAVAILABLE;
         }
+        Drawable drawable;
+        try {
+            drawable = mTile.getIcon().loadDrawable(mContext);
+        } catch (Exception e) {
+            Log.w(TAG, "Invalid icon, forcing into unavailable state");
+            tileState = Tile.STATE_UNAVAILABLE;
+            drawable = mDefaultIcon.loadDrawable(mContext);
+        }
         int color = mContext.getColor(getColor(tileState));
         drawable.setTint(color);
         state.icon = new DrawableIcon(drawable);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
index 5a26a4a..5903218 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
@@ -148,13 +148,20 @@
         if (DEBUG) Log.d(TAG, "onServiceConnected " + name);
         // Got a connection, set the binding count to 0.
         mBindTryCount = 0;
-        mWrapper = new QSTileServiceWrapper(Stub.asInterface(service));
+        final QSTileServiceWrapper wrapper = new QSTileServiceWrapper(Stub.asInterface(service));
         try {
             service.linkToDeath(this, 0);
         } catch (RemoteException e) {
         }
-        setQSService(mService);
-        setQSTile(mTile);
+        if (!wrapper.setQSService(mService)) {
+            handleDeath();
+            return;
+        }
+        if (!wrapper.setQSTile(mTile)) {
+            handleDeath();
+            return;
+        }
+        mWrapper = wrapper;
         handlePendingMessages();
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/recents/IRecentsNonSystemUserCallbacks.aidl b/packages/SystemUI/src/com/android/systemui/recents/IRecentsNonSystemUserCallbacks.aidl
index 7ce9384..9403664 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/IRecentsNonSystemUserCallbacks.aidl
+++ b/packages/SystemUI/src/com/android/systemui/recents/IRecentsNonSystemUserCallbacks.aidl
@@ -27,9 +27,9 @@
     void preloadRecents();
     void cancelPreloadingRecents();
     void showRecents(boolean triggeredFromAltTab, boolean draggingInRecents, boolean animate,
-            boolean reloadTasks, boolean fromHome);
+            boolean reloadTasks, boolean fromHome, int recentsGrowTarget);
     void hideRecents(boolean triggeredFromAltTab, boolean triggeredFromHomeKey);
-    void toggleRecents();
+    void toggleRecents(int recentsGrowTarget);
     void onConfigurationChanged();
     void dockTopTask(int topTaskId, int dragMode, int stackCreateMode,
             in Rect initialBounds);
diff --git a/packages/SystemUI/src/com/android/systemui/recents/Recents.java b/packages/SystemUI/src/com/android/systemui/recents/Recents.java
index bb709c5..630cb66 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/Recents.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/Recents.java
@@ -37,9 +37,7 @@
 import android.provider.Settings;
 import android.util.EventLog;
 import android.util.Log;
-import android.util.MutableBoolean;
 import android.view.Display;
-import android.view.View;
 import android.widget.Toast;
 
 import com.android.internal.logging.MetricsLogger;
@@ -59,6 +57,7 @@
 import com.android.systemui.recents.misc.SystemServicesProxy;
 import com.android.systemui.recents.model.RecentsTaskLoader;
 import com.android.systemui.recents.tv.RecentsTvImpl;
+import com.android.systemui.stackdivider.Divider;
 
 import java.util.ArrayList;
 
@@ -75,6 +74,7 @@
 
     public final static int EVENT_BUS_PRIORITY = 1;
     public final static int BIND_TO_SYSTEM_USER_RETRY_DELAY = 5000;
+    public final static int RECENTS_GROW_TARGET_INVALID = -1;
 
     // Purely for experimentation
     private final static String RECENTS_OVERRIDE_SYSPROP_KEY = "persist.recents_override_pkg";
@@ -238,7 +238,7 @@
      * Shows the Recents.
      */
     @Override
-    public void showRecents(boolean triggeredFromAltTab, boolean fromHome, View statusBarView) {
+    public void showRecents(boolean triggeredFromAltTab, boolean fromHome) {
         // Ensure the device has been provisioned before allowing the user to interact with
         // recents
         if (!isUserSetup()) {
@@ -249,10 +249,12 @@
             return;
         }
 
+        int recentsGrowTarget = getComponent(Divider.class).getView().growsRecents();
+
         int currentUser = sSystemServicesProxy.getCurrentUser();
         if (sSystemServicesProxy.isSystemUser(currentUser)) {
             mImpl.showRecents(triggeredFromAltTab, false /* draggingInRecents */,
-                    true /* animate */, false /* reloadTasks */, fromHome);
+                    true /* animate */, false /* reloadTasks */, fromHome, recentsGrowTarget);
         } else {
             if (mSystemToUserCallbacks != null) {
                 IRecentsNonSystemUserCallbacks callbacks =
@@ -260,7 +262,8 @@
                 if (callbacks != null) {
                     try {
                         callbacks.showRecents(triggeredFromAltTab, false /* draggingInRecents */,
-                                true /* animate */, false /* reloadTasks */, fromHome);
+                                true /* animate */, false /* reloadTasks */, fromHome,
+                                recentsGrowTarget);
                     } catch (RemoteException e) {
                         Log.e(TAG, "Callback failed", e);
                     }
@@ -310,7 +313,7 @@
      * Toggles the Recents activity.
      */
     @Override
-    public void toggleRecents(Display display, int layoutDirection, View statusBarView) {
+    public void toggleRecents(Display display) {
         // Ensure the device has been provisioned before allowing the user to interact with
         // recents
         if (!isUserSetup()) {
@@ -321,16 +324,18 @@
             return;
         }
 
+        int growTarget = getComponent(Divider.class).getView().growsRecents();
+
         int currentUser = sSystemServicesProxy.getCurrentUser();
         if (sSystemServicesProxy.isSystemUser(currentUser)) {
-            mImpl.toggleRecents();
+            mImpl.toggleRecents(growTarget);
         } else {
             if (mSystemToUserCallbacks != null) {
                 IRecentsNonSystemUserCallbacks callbacks =
                         mSystemToUserCallbacks.getNonSystemUserRecentsForUser(currentUser);
                 if (callbacks != null) {
                     try {
-                        callbacks.toggleRecents();
+                        callbacks.toggleRecents(growTarget);
                     } catch (RemoteException e) {
                         Log.e(TAG, "Callback failed", e);
                     }
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
index 3ecada9..f961390 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
@@ -38,8 +38,10 @@
 import android.view.AppTransitionAnimationSpec;
 import android.view.LayoutInflater;
 import android.view.ViewConfiguration;
+import android.view.WindowManager;
 
 import com.android.internal.logging.MetricsLogger;
+import com.android.internal.policy.DockedDividerUtils;
 import com.android.systemui.R;
 import com.android.systemui.SystemUIApplication;
 import com.android.systemui.recents.events.EventBus;
@@ -68,6 +70,7 @@
 import com.android.systemui.recents.views.TaskStackViewScroller;
 import com.android.systemui.recents.views.TaskViewHeader;
 import com.android.systemui.recents.views.TaskViewTransform;
+import com.android.systemui.stackdivider.DividerView;
 import com.android.systemui.statusbar.BaseStatusBar;
 import com.android.systemui.statusbar.phone.NavigationBarGestureHelper;
 import com.android.systemui.statusbar.phone.PhoneStatusBar;
@@ -156,7 +159,8 @@
             // When this fires, then the user has not released alt-tab for at least
             // FAST_ALT_TAB_DELAY_MS milliseconds
             showRecents(mTriggeredFromAltTab, false /* draggingInRecents */, true /* animate */,
-                    false /* reloadTasks */, false /* fromHome */);
+                    false /* reloadTasks */, false /* fromHome */,
+                    DividerView.INVALID_RECENTS_GROW_TARGET);
         }
     });
 
@@ -230,7 +234,8 @@
     }
 
     public void showRecents(boolean triggeredFromAltTab, boolean draggingInRecents,
-            boolean animate, boolean launchedWhileDockingTask, boolean fromHome) {
+            boolean animate, boolean launchedWhileDockingTask, boolean fromHome,
+            int growTarget) {
         mTriggeredFromAltTab = triggeredFromAltTab;
         mDraggingInRecents = draggingInRecents;
         mLaunchedWhileDocking = launchedWhileDockingTask;
@@ -260,7 +265,7 @@
             ActivityManager.RunningTaskInfo topTask = ssp.getTopMostTask();
             MutableBoolean isTopTaskHome = new MutableBoolean(true);
             if (topTask == null || !ssp.isRecentsTopMost(topTask, isTopTaskHome)) {
-                startRecentsActivity(topTask, isTopTaskHome.value || fromHome, animate);
+                startRecentsActivity(topTask, isTopTaskHome.value || fromHome, animate, growTarget);
             }
         } catch (ActivityNotFoundException e) {
             Log.e(TAG, "Failed to launch RecentsActivity", e);
@@ -284,7 +289,7 @@
                 triggeredFromHomeKey));
     }
 
-    public void toggleRecents() {
+    public void toggleRecents(int growTarget) {
         // Skip this toggle if we are already waiting to trigger recents via alt-tab
         if (mFastAltTabTrigger.isDozing()) {
             return;
@@ -338,7 +343,7 @@
                 }
 
                 // Otherwise, start the recents activity
-                startRecentsActivity(topTask, isTopTaskHome.value, true /* animate */);
+                startRecentsActivity(topTask, isTopTaskHome.value, true /* animate */, growTarget);
 
                 // Only close the other system windows if we are actually showing recents
                 ssp.sendCloseSystemWindows(BaseStatusBar.SYSTEM_DIALOG_REASON_RECENT_APPS);
@@ -369,7 +374,7 @@
                 // At this point, we don't know anything about the stack state.  So only calculate
                 // the dimensions of the thumbnail that we need for the transition into Recents, but
                 // do not draw it until we construct the activity options when we start Recents
-                updateHeaderBarLayout(stack);
+                updateHeaderBarLayout(stack, null /* window rect override*/);
             }
         }
     }
@@ -535,7 +540,8 @@
                     dragMode == NavigationBarGestureHelper.DRAG_MODE_RECENTS,
                     false /* animate */,
                     true /* launchedWhileDockingTask*/,
-                    false /* fromHome */);
+                    false /* fromHome */,
+                    DividerView.INVALID_RECENTS_GROW_TARGET);
         }
     }
 
@@ -574,12 +580,17 @@
      * since the last call, it will attempt to re-measure and layout the header bar to the new size.
      *
      * @param stack the stack to initialize the stack layout with
+     * @param windowRectOverride the rectangle to use when calculating the stack state which can
+     *                           be different from the current window rect if recents is resizing
+     *                           while being launched
      */
-    private void updateHeaderBarLayout(TaskStack stack) {
+    private void updateHeaderBarLayout(TaskStack stack, Rect windowRectOverride) {
         SystemServicesProxy ssp = Recents.getSystemServices();
         Rect systemInsets = new Rect();
         ssp.getStableInsets(systemInsets);
-        Rect windowRect = ssp.getWindowRect();
+        Rect windowRect = windowRectOverride != null
+                ? new Rect(windowRectOverride)
+                : ssp.getWindowRect();
         // When docked, the nav bar insets are consumed and the activity is measured without insets.
         // However, the window bounds include the insets, so we need to subtract them here to make
         // them identical.
@@ -682,7 +693,8 @@
      * Creates the activity options for an app->recents transition.
      */
     private ActivityOptions getThumbnailTransitionActivityOptions(
-            ActivityManager.RunningTaskInfo topTask, TaskStackView stackView) {
+            ActivityManager.RunningTaskInfo topTask, TaskStackView stackView,
+            Rect windowOverrideRect) {
         if (topTask.stackId == FREEFORM_WORKSPACE_STACK_ID) {
             ArrayList<AppTransitionAnimationSpec> specs = new ArrayList<>();
             ArrayList<Task> tasks = stackView.getStack().getStackTasks();
@@ -696,7 +708,8 @@
                 Task task = tasks.get(i);
                 if (task.isFreeformTask()) {
                     mTmpTransform = stackLayout.getStackTransformScreenCoordinates(task,
-                                    stackScroller.getStackScroll(), mTmpTransform, null);
+                            stackScroller.getStackScroll(), mTmpTransform, null,
+                            windowOverrideRect);
                     Bitmap thumbnail = drawThumbnailTransitionBitmap(task, mTmpTransform,
                             mThumbTransitionBitmapCache);
                     Rect toTaskRect = new Rect();
@@ -711,7 +724,8 @@
         } else {
             // Update the destination rect
             Task toTask = new Task();
-            TaskViewTransform toTransform = getThumbnailTransitionTransform(stackView, toTask);
+            TaskViewTransform toTransform = getThumbnailTransitionTransform(stackView, toTask,
+                    windowOverrideRect);
             Bitmap thumbnail = drawThumbnailTransitionBitmap(toTask, toTransform,
                     mThumbTransitionBitmapCache);
             if (thumbnail != null) {
@@ -729,7 +743,7 @@
      * Returns the transition rect for the given task id.
      */
     private TaskViewTransform getThumbnailTransitionTransform(TaskStackView stackView,
-            Task runningTaskOut) {
+            Task runningTaskOut, Rect windowOverrideRect) {
         // Find the running task in the TaskStack
         TaskStack stack = stackView.getStack();
         Task launchTask = stack.getLaunchTarget();
@@ -745,7 +759,7 @@
         stackView.updateLayoutAlgorithm(true /* boundScroll */);
         stackView.updateToInitialState();
         stackView.getStackAlgorithm().getStackTransformScreenCoordinates(launchTask,
-                stackView.getScroller().getStackScroll(), mTmpTransform, null);
+                stackView.getScroller().getStackScroll(), mTmpTransform, null, windowOverrideRect);
         return mTmpTransform;
     }
 
@@ -788,7 +802,7 @@
      * Shows the recents activity
      */
     protected void startRecentsActivity(ActivityManager.RunningTaskInfo topTask,
-            boolean isTopTaskHome, boolean animate) {
+            boolean isTopTaskHome, boolean animate, int growTarget) {
         RecentsTaskLoader loader = Recents.getTaskLoader();
         RecentsActivityLaunchState launchState = Recents.getConfiguration().getLaunchState();
 
@@ -820,7 +834,8 @@
         preloadIcon(topTask);
 
         // Update the header bar if necessary
-        updateHeaderBarLayout(stack);
+        Rect windowOverrideRect = getWindowRectOverride(growTarget);
+        updateHeaderBarLayout(stack, windowOverrideRect);
 
         // Prepare the dummy stack for the transition
         TaskStackLayoutAlgorithm.VisibilityReport stackVr =
@@ -838,7 +853,8 @@
         ActivityOptions opts;
         if (useThumbnailTransition) {
             // Try starting with a thumbnail transition
-            opts = getThumbnailTransitionActivityOptions(topTask, mDummyStackView);
+            opts = getThumbnailTransitionActivityOptions(topTask, mDummyStackView,
+                    windowOverrideRect);
         } else {
             // If there is no thumbnail transition, but is launching from home into recents, then
             // use a quick home transition
@@ -850,6 +866,18 @@
         mLastToggleTime = SystemClock.elapsedRealtime();
     }
 
+    private Rect getWindowRectOverride(int growTarget) {
+        if (growTarget == DividerView.INVALID_RECENTS_GROW_TARGET) {
+            return null;
+        }
+        Rect result = new Rect();
+        Rect displayRect = Recents.getSystemServices().getDisplayRect();
+        DockedDividerUtils.calculateBoundsForPosition(growTarget, WindowManager.DOCKED_BOTTOM,
+                result, displayRect.width(), displayRect.height(),
+                Recents.getSystemServices().getDockedDividerSize(mContext));
+        return result;
+    }
+
     /**
      * Starts the recents activity.
      */
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImplProxy.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsImplProxy.java
index 257bda2..defc6ed 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsImplProxy.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsImplProxy.java
@@ -57,13 +57,15 @@
 
     @Override
     public void showRecents(boolean triggeredFromAltTab, boolean draggingInRecents, boolean animate,
-            boolean reloadTasks, boolean fromHome) throws RemoteException {
+            boolean reloadTasks, boolean fromHome, int growTarget)
+            throws RemoteException {
         SomeArgs args = SomeArgs.obtain();
         args.argi1 = triggeredFromAltTab ? 1 : 0;
         args.argi2 = draggingInRecents ? 1 : 0;
         args.argi3 = animate ? 1 : 0;
         args.argi4 = reloadTasks ? 1 : 0;
         args.argi5 = fromHome ? 1 : 0;
+        args.argi6 = growTarget;
         mHandler.sendMessage(mHandler.obtainMessage(MSG_SHOW_RECENTS, args));
     }
 
@@ -75,8 +77,8 @@
     }
 
     @Override
-    public void toggleRecents() throws RemoteException {
-        mHandler.sendEmptyMessage(MSG_TOGGLE_RECENTS);
+    public void toggleRecents(int growTarget) throws RemoteException {
+        mHandler.sendMessage(mHandler.obtainMessage(MSG_TOGGLE_RECENTS, growTarget));
     }
 
     @Override
@@ -119,13 +121,13 @@
                 case MSG_SHOW_RECENTS:
                     SomeArgs args = (SomeArgs) msg.obj;
                     mImpl.showRecents(args.argi1 != 0, args.argi2 != 0, args.argi3 != 0,
-                            args.argi4 != 0, args.argi5 != 0);
+                            args.argi4 != 0, args.argi5 != 0, args.argi6);
                     break;
                 case MSG_HIDE_RECENTS:
                     mImpl.hideRecents(msg.arg1 != 0, msg.arg2 != 0);
                     break;
                 case MSG_TOGGLE_RECENTS:
-                    mImpl.toggleRecents();
+                    mImpl.toggleRecents(msg.arg1);
                     break;
                 case MSG_ON_CONFIGURATION_CHANGED:
                     mImpl.onConfigurationChanged();
diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/RecentsGrowingEvent.java b/packages/SystemUI/src/com/android/systemui/recents/events/ui/RecentsGrowingEvent.java
new file mode 100644
index 0000000..d9b0027
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/recents/events/ui/RecentsGrowingEvent.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2016 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.recents.events.ui;
+
+import com.android.systemui.recents.events.EventBus;
+
+/**
+ * Sent when recents is about to grow in multi-window mode when entering recents.
+ */
+public class RecentsGrowingEvent extends EventBus.Event {
+
+}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/tv/RecentsTvImpl.java b/packages/SystemUI/src/com/android/systemui/recents/tv/RecentsTvImpl.java
index dc0d1f1..18b9263 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/tv/RecentsTvImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/tv/RecentsTvImpl.java
@@ -49,7 +49,7 @@
 
     @Override
     protected void startRecentsActivity(ActivityManager.RunningTaskInfo topTask,
-            boolean isTopTaskHome, boolean animate) {
+            boolean isTopTaskHome, boolean animate, int growTarget) {
         RecentsTaskLoader loader = Recents.getTaskLoader();
 
         // In the case where alt-tab is triggered, we never get a preloadRecents() call, so we
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionHelper.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionHelper.java
index 04f10ef8..1238c63 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionHelper.java
@@ -302,7 +302,8 @@
                 specs.add(composeOffscreenAnimationSpec(task, offscreenTaskRect));
             } else {
                 mTmpTransform.fillIn(taskView);
-                stackLayout.transformToScreenCoordinates(mTmpTransform);
+                stackLayout.transformToScreenCoordinates(mTmpTransform,
+                        null /* windowOverrideRect */);
                 specs.add(composeAnimationSpec(stackView, taskView, mTmpTransform,
                         true /* addHeaderBitmap */));
             }
@@ -324,7 +325,8 @@
                     specs.add(composeOffscreenAnimationSpec(t, offscreenTaskRect));
                 } else {
                     mTmpTransform.fillIn(taskView);
-                    stackLayout.transformToScreenCoordinates(mTmpTransform);
+                    stackLayout.transformToScreenCoordinates(mTmpTransform,
+                            null /* windowOverrideRect */);
                     specs.add(composeAnimationSpec(stackView, tv, mTmpTransform,
                             true /* addHeaderBitmap */));
                 }
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java
index 774e4e9..0022d66 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java
@@ -830,18 +830,23 @@
      * Like {@link #getStackTransform}, but in screen coordinates
      */
     public TaskViewTransform getStackTransformScreenCoordinates(Task task, float stackScroll,
-            TaskViewTransform transformOut, TaskViewTransform frontTransform) {
+            TaskViewTransform transformOut, TaskViewTransform frontTransform,
+            Rect windowOverrideRect) {
         TaskViewTransform transform = getStackTransform(task, stackScroll, mFocusState,
                 transformOut, frontTransform, true /* forceUpdate */,
                 false /* ignoreTaskOverrides */);
-        return transformToScreenCoordinates(transform);
+        return transformToScreenCoordinates(transform, windowOverrideRect);
     }
 
     /**
-     * Transforms the given {@param transformOut} to the screen coordinates.
+     * Transforms the given {@param transformOut} to the screen coordinates, overriding the current
+     * window rectangle with {@param windowOverrideRect} if non-null.
      */
-    public TaskViewTransform transformToScreenCoordinates(TaskViewTransform transformOut) {
-        Rect windowRect = Recents.getSystemServices().getWindowRect();
+    public TaskViewTransform transformToScreenCoordinates(TaskViewTransform transformOut,
+            Rect windowOverrideRect) {
+        Rect windowRect = windowOverrideRect != null
+                ? windowOverrideRect
+                : Recents.getSystemServices().getWindowRect();
         transformOut.rect.offset(windowRect.left, windowRect.top);
         return transformOut;
     }
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
index 6176d99..610b4e1 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java
@@ -72,6 +72,7 @@
 import com.android.systemui.recents.events.ui.DeleteTaskDataEvent;
 import com.android.systemui.recents.events.ui.DismissAllTaskViewsEvent;
 import com.android.systemui.recents.events.ui.DismissTaskViewEvent;
+import com.android.systemui.recents.events.ui.RecentsGrowingEvent;
 import com.android.systemui.recents.events.ui.TaskViewDismissedEvent;
 import com.android.systemui.recents.events.ui.UpdateFreeformTaskViewVisibilityEvent;
 import com.android.systemui.recents.events.ui.UserInteractionEvent;
@@ -189,6 +190,9 @@
     private TaskViewTransform mTmpTransform = new TaskViewTransform();
     private ArrayList<TaskViewTransform> mTmpTaskTransforms = new ArrayList<>();
     private int[] mTmpIntPair = new int[2];
+    private boolean mResetToInitialStateWhenResized;
+    private int mLastWidth;
+    private int mLastHeight;
 
     // A convenience update listener to request updating clipping of tasks
     private ValueAnimator.AnimatorUpdateListener mRequestUpdateClippingListener =
@@ -1164,9 +1168,13 @@
 
         // If this is the first layout, then scroll to the front of the stack, then update the
         // TaskViews with the stack so that we can lay them out
-        if (mAwaitingFirstLayout || mInitialState != INITIAL_STATE_UPDATE_NONE) {
-            if (mInitialState != INITIAL_STATE_UPDATE_LAYOUT_ONLY) {
+        boolean resetToInitialState = (width != mLastWidth || height != mLastHeight)
+                && mResetToInitialStateWhenResized;
+        if (mAwaitingFirstLayout || mInitialState != INITIAL_STATE_UPDATE_NONE
+                || resetToInitialState) {
+            if (mInitialState != INITIAL_STATE_UPDATE_LAYOUT_ONLY || resetToInitialState) {
                 updateToInitialState();
+                mResetToInitialStateWhenResized = false;
             }
             if (!mAwaitingFirstLayout) {
                 mInitialState = INITIAL_STATE_UPDATE_NONE;
@@ -1186,6 +1194,8 @@
         }
 
         setMeasuredDimension(width, height);
+        mLastWidth = width;
+        mLastHeight = height;
         mInMeasureLayout = false;
     }
 
@@ -1765,6 +1775,7 @@
                 mTmpTransform, null);
         mTmpTransform.scale = finalScale;
         mTmpTransform.translationZ = mLayoutAlgorithm.mMaxTranslationZ + 1;
+        mTmpTransform.dimAlpha = 0f;
         updateTaskViewToTransform(event.taskView, mTmpTransform,
                 new AnimationProps(DRAG_SCALE_DURATION, Interpolators.FAST_OUT_SLOW_IN));
     }
@@ -1972,6 +1983,10 @@
         }
     }
 
+    public final void onBusEvent(RecentsGrowingEvent event) {
+        mResetToInitialStateWhenResized = true;
+    }
+
     public void reloadOnConfigurationChange() {
         mStableLayoutAlgorithm.reloadOnConfigurationChange(getContext());
         mLayoutAlgorithm.reloadOnConfigurationChange(getContext());
diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java
index 67c4008..44a167b 100644
--- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java
+++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java
@@ -32,6 +32,7 @@
 import android.hardware.display.DisplayManager;
 import android.os.Bundle;
 import android.util.AttributeSet;
+import android.util.MutableInt;
 import android.view.Display;
 import android.view.DisplayInfo;
 import android.view.GestureDetector;
@@ -66,6 +67,7 @@
 import com.android.systemui.recents.events.activity.RecentsActivityStartingEvent;
 import com.android.systemui.recents.events.activity.UndockingTaskEvent;
 import com.android.systemui.recents.events.ui.RecentsDrawnEvent;
+import com.android.systemui.recents.events.ui.RecentsGrowingEvent;
 import com.android.systemui.recents.misc.SystemServicesProxy;
 import com.android.systemui.stackdivider.events.StartedDragingEvent;
 import com.android.systemui.stackdivider.events.StoppedDragingEvent;
@@ -81,6 +83,8 @@
     static final long TOUCH_ANIMATION_DURATION = 150;
     static final long TOUCH_RELEASE_ANIMATION_DURATION = 200;
 
+    public static final int INVALID_RECENTS_GROW_TARGET = -1;
+
     private static final int LOG_VALUE_RESIZE_50_50 = 0;
     private static final int LOG_VALUE_RESIZE_DOCKED_SMALLER = 1;
     private static final int LOG_VALUE_RESIZE_DOCKED_LARGER = 2;
@@ -88,7 +92,6 @@
     private static final int LOG_VALUE_UNDOCK_MAX_DOCKED = 0;
     private static final int LOG_VALUE_UNDOCK_MAX_OTHER = 1;
 
-
     private static final int TASK_POSITION_SAME = Integer.MAX_VALUE;
     private static final boolean SWAPPING_ENABLED = false;
 
@@ -154,31 +157,62 @@
         public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
             super.onInitializeAccessibilityNodeInfo(host, info);
             if (isHorizontalDivision()) {
-                info.addAction(new AccessibilityAction(R.id.action_move_up,
-                        mContext.getString(R.string.accessibility_action_divider_move_up)));
-                info.addAction(new AccessibilityAction(R.id.action_move_down,
-                        mContext.getString(R.string.accessibility_action_divider_move_down)));
+                info.addAction(new AccessibilityAction(R.id.action_move_tl_full,
+                        mContext.getString(R.string.accessibility_action_divider_top_full)));
+                if (mSnapAlgorithm.isFirstSplitTargetAvailable()) {
+                    info.addAction(new AccessibilityAction(R.id.action_move_tl_70,
+                            mContext.getString(R.string.accessibility_action_divider_top_70)));
+                }
+                info.addAction(new AccessibilityAction(R.id.action_move_tl_50,
+                        mContext.getString(R.string.accessibility_action_divider_top_50)));
+                if (mSnapAlgorithm.isLastSplitTargetAvailable()) {
+                    info.addAction(new AccessibilityAction(R.id.action_move_tl_30,
+                            mContext.getString(R.string.accessibility_action_divider_top_30)));
+                }
+                info.addAction(new AccessibilityAction(R.id.action_move_rb_full,
+                        mContext.getString(R.string.accessibility_action_divider_bottom_full)));
             } else {
-                info.addAction(new AccessibilityAction(R.id.action_move_left,
-                        mContext.getString(R.string.accessibility_action_divider_move_left)));
-                info.addAction(new AccessibilityAction(R.id.action_move_right,
-                        mContext.getString(R.string.accessibility_action_divider_move_right)));
+                info.addAction(new AccessibilityAction(R.id.action_move_tl_full,
+                        mContext.getString(R.string.accessibility_action_divider_left_full)));
+                if (mSnapAlgorithm.isFirstSplitTargetAvailable()) {
+                    info.addAction(new AccessibilityAction(R.id.action_move_tl_70,
+                            mContext.getString(R.string.accessibility_action_divider_left_70)));
+                }
+                info.addAction(new AccessibilityAction(R.id.action_move_tl_50,
+                        mContext.getString(R.string.accessibility_action_divider_left_50)));
+                if (mSnapAlgorithm.isLastSplitTargetAvailable()) {
+                    info.addAction(new AccessibilityAction(R.id.action_move_tl_30,
+                            mContext.getString(R.string.accessibility_action_divider_left_30)));
+                }
+                info.addAction(new AccessibilityAction(R.id.action_move_rb_full,
+                        mContext.getString(R.string.accessibility_action_divider_right_full)));
             }
         }
 
         @Override
         public boolean performAccessibilityAction(View host, int action, Bundle args) {
-            if (action == R.id.action_move_up || action == R.id.action_move_down
-                    || action == R.id.action_move_left || action == R.id.action_move_right) {
-                int position = getCurrentPosition();
-                SnapTarget currentTarget = mSnapAlgorithm.calculateSnapTarget(
-                        position, 0 /* velocity */);
-                SnapTarget nextTarget =
-                        action == R.id.action_move_up || action == R.id.action_move_left
-                                ? mSnapAlgorithm.getPreviousTarget(currentTarget)
-                                : mSnapAlgorithm.getNextTarget(currentTarget);
+            int currentPosition = getCurrentPosition();
+            SnapTarget nextTarget = null;
+            switch (action) {
+                case R.id.action_move_tl_full:
+                    nextTarget = mSnapAlgorithm.getDismissEndTarget();
+                    break;
+                case R.id.action_move_tl_70:
+                    nextTarget = mSnapAlgorithm.getLastSplitTarget();
+                    break;
+                case R.id.action_move_tl_50:
+                    nextTarget = mSnapAlgorithm.getMiddleTarget();
+                    break;
+                case R.id.action_move_tl_30:
+                    nextTarget = mSnapAlgorithm.getFirstSplitTarget();
+                    break;
+                case R.id.action_move_rb_full:
+                    nextTarget = mSnapAlgorithm.getDismissStartTarget();
+                    break;
+            }
+            if (nextTarget != null) {
                 startDragging(true /* animate */, false /* touching */);
-                stopDragging(getCurrentPosition(), nextTarget, 250, Interpolators.FAST_OUT_SLOW_IN);
+                stopDragging(currentPosition, nextTarget, 250, Interpolators.FAST_OUT_SLOW_IN);
                 return true;
             }
             return super.performAccessibilityAction(host, action, args);
@@ -997,6 +1031,24 @@
                 mBackground.getRight(), mBackground.getBottom(), Op.UNION);
     }
 
+    /**
+     * Checks whether recents will grow when invoked. This happens in multi-window when recents is
+     * very small. When invoking recents, we shrink the docked stack so recents has more space.
+     *
+     * @return the position of the divider when recents grows, or
+     *         {@link #INVALID_RECENTS_GROW_TARGET} if recents won't grow
+     */
+    public int growsRecents() {
+        boolean result = mGrowRecents
+                && mWindowManagerProxy.getDockSide() == WindowManager.DOCKED_TOP
+                && getCurrentPosition() == getSnapAlgorithm().getLastSplitTarget().position;
+        if (result) {
+            return getSnapAlgorithm().getMiddleTarget().position;
+        } else {
+            return INVALID_RECENTS_GROW_TARGET;
+        }
+    }
+
     public final void onBusEvent(RecentsActivityStartingEvent recentsActivityStartingEvent) {
         if (mGrowRecents && getWindowManagerProxy().getDockSide() == WindowManager.DOCKED_TOP
                 && getCurrentPosition() == getSnapAlgorithm().getLastSplitTarget().position) {
@@ -1036,7 +1088,8 @@
         if (mGrowAfterRecentsDrawn) {
             mGrowAfterRecentsDrawn = false;
             updateDockSide();
-            stopDragging(getCurrentPosition(), mSnapAlgorithm.getMiddleTarget(), 250,
+            EventBus.getDefault().send(new RecentsGrowingEvent());
+            stopDragging(getCurrentPosition(), mSnapAlgorithm.getMiddleTarget(), 336,
                     Interpolators.FAST_OUT_SLOW_IN);
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/ForcedResizableInfoActivity.java b/packages/SystemUI/src/com/android/systemui/stackdivider/ForcedResizableInfoActivity.java
index 177296b..18834ed 100644
--- a/packages/SystemUI/src/com/android/systemui/stackdivider/ForcedResizableInfoActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/stackdivider/ForcedResizableInfoActivity.java
@@ -18,6 +18,7 @@
 
 import android.annotation.Nullable;
 import android.app.Activity;
+import android.app.ActivityManager;
 import android.os.Bundle;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
@@ -75,4 +76,9 @@
         finish();
         return true;
     }
+
+    @Override
+    public void setTaskDescription(ActivityManager.TaskDescription taskDescription) {
+        // Do nothing
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index cb1128b..2d5b6d4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -1318,7 +1318,7 @@
     protected void showRecents(boolean triggeredFromAltTab, boolean fromHome) {
         if (mRecents != null) {
             sendCloseSystemWindows(SYSTEM_DIALOG_REASON_RECENT_APPS);
-            mRecents.showRecents(triggeredFromAltTab, fromHome, getStatusBarView());
+            mRecents.showRecents(triggeredFromAltTab, fromHome);
         }
     }
 
@@ -1330,7 +1330,7 @@
 
     protected void toggleRecents() {
         if (mRecents != null) {
-            mRecents.toggleRecents(mDisplay, mLayoutDirection, getStatusBarView());
+            mRecents.toggleRecents(mDisplay);
         }
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/FakeShadowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/FakeShadowView.java
index 32c26ba..0c1891e1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/FakeShadowView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/FakeShadowView.java
@@ -25,6 +25,7 @@
 import android.view.ViewOutlineProvider;
 import android.widget.LinearLayout;
 
+import com.android.systemui.R;
 import com.android.systemui.statusbar.AlphaOptimizedFrameLayout;
 
 /**
@@ -32,6 +33,7 @@
  */
 public class FakeShadowView extends AlphaOptimizedFrameLayout {
     public static final float SHADOW_SIBLING_TRESHOLD = 0.1f;
+    private final int mShadowMinHeight;
 
     private View mFakeShadow;
     private float mOutlineAlpha;
@@ -64,6 +66,8 @@
             }
         });
         addView(mFakeShadow);
+        mShadowMinHeight = Math.max(1, context.getResources()
+                .getDimensionPixelSize(R.dimen.notification_divider_height));
     }
 
     public void setFakeShadowTranslationZ(float fakeShadowTranslationZ, float outlineAlpha,
@@ -72,6 +76,7 @@
             mFakeShadow.setVisibility(INVISIBLE);
         } else {
             mFakeShadow.setVisibility(VISIBLE);
+            fakeShadowTranslationZ = Math.max(mShadowMinHeight, fakeShadowTranslationZ);
             mFakeShadow.setTranslationZ(fakeShadowTranslationZ);
             mFakeShadow.setTranslationX(outlineTranslation);
             mFakeShadow.setTranslationY(shadowYEnd - mFakeShadow.getHeight());
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java
index 915b565..1a9a40b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java
@@ -43,9 +43,9 @@
     private static final int HINT_CIRCLE_OPEN_DURATION = 500;
 
     private final Context mContext;
+    private final Callback mCallback;
 
     private FlingAnimationUtils mFlingAnimationUtils;
-    private Callback mCallback;
     private VelocityTracker mVelocityTracker;
     private boolean mSwipingInProgress;
     private float mInitialTouchX;
@@ -318,12 +318,11 @@
         float vel = getCurrentVelocity(lastX, lastY);
 
         // We snap back if the current translation is not far enough
-        boolean snapBack;
-        if (mFalsingManager.isFalseTouch()) {
-            snapBack = mFalsingManager.isFalseTouch();
-        } else {
-            snapBack = isBelowFalsingThreshold();
+        boolean snapBack = false;
+        if (mCallback.needsAntiFalsing()) {
+            snapBack = snapBack || mFalsingManager.isFalseTouch();
         }
+        snapBack = snapBack || isBelowFalsingThreshold();
 
         // or if the velocity is in the opposite direction.
         boolean velIsInWrongDirection = vel * mTranslation < 0;
@@ -582,5 +581,7 @@
          * @return The factor the minimum swipe amount should be multiplied with.
          */
         float getAffordanceFalsingFactor();
+
+        boolean needsAntiFalsing();
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java
index 92f3585..ef19d95 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java
@@ -16,6 +16,7 @@
 
 package com.android.systemui.statusbar.phone;
 
+import android.annotation.Nullable;
 import android.app.ActivityManager;
 import android.app.IWallpaperManager;
 import android.app.IWallpaperManagerCallback;
@@ -26,8 +27,9 @@
 import android.graphics.BitmapFactory;
 import android.graphics.Rect;
 import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
 import android.graphics.drawable.DrawableWrapper;
-import android.os.Bundle;
+import android.os.AsyncTask;
 import android.os.Handler;
 import android.os.ParcelFileDescriptor;
 import android.os.RemoteException;
@@ -46,9 +48,7 @@
 
     private static final String TAG = "LockscreenWallpaper";
 
-    private final Context mContext;
     private final PhoneStatusBar mBar;
-    private final IWallpaperManager mService;
     private final WallpaperManager mWallpaperManager;
     private final Handler mH;
 
@@ -58,69 +58,75 @@
     // The user selected in the UI, or null if no user is selected or UI doesn't support selecting
     // users.
     private UserHandle mSelectedUser;
+    private AsyncTask<Void, Void, LoaderResult> mLoader;
 
     public LockscreenWallpaper(Context ctx, PhoneStatusBar bar, Handler h) {
-        mContext = ctx;
         mBar = bar;
         mH = h;
-        mService = IWallpaperManager.Stub.asInterface(
-                ServiceManager.getService(Context.WALLPAPER_SERVICE));
         mWallpaperManager = (WallpaperManager) ctx.getSystemService(Context.WALLPAPER_SERVICE);
         mCurrentUserId = ActivityManager.getCurrentUser();
 
+        IWallpaperManager service = IWallpaperManager.Stub.asInterface(
+                ServiceManager.getService(Context.WALLPAPER_SERVICE));
         try {
-            mService.setLockWallpaperCallback(this);
+            service.setLockWallpaperCallback(this);
         } catch (RemoteException e) {
             Log.e(TAG, "System dead?" + e);
         }
     }
 
     public Bitmap getBitmap() {
-        try {
-            if (mCached) {
-                return mCache;
-            }
-            if (!mService.isWallpaperSupported(mContext.getOpPackageName())) {
-                mCached = true;
-                mCache = null;
-                return null;
-            }
-            // Prefer the selected user (when specified) over the current user for the FLAG_SET_LOCK
-            // wallpaper.
-            final int lockWallpaperUserId =
-                    mSelectedUser != null ? mSelectedUser.getIdentifier() : mCurrentUserId;
-            ParcelFileDescriptor fd = mService.getWallpaper(null, WallpaperManager.FLAG_LOCK,
-                    new Bundle(), lockWallpaperUserId);
-            if (fd != null) {
-                try {
-                    BitmapFactory.Options options = new BitmapFactory.Options();
-                    mCache = BitmapFactory.decodeFileDescriptor(
-                            fd.getFileDescriptor(), null, options);
-                    mCached = true;
-                    return mCache;
-                } catch (OutOfMemoryError e) {
-                    Log.w(TAG, "Can't decode file", e);
-                    return null;
-                } finally {
-                    IoUtils.closeQuietly(fd);
-                }
-            } else {
-                mCached = true;
-                if (mSelectedUser != null && mSelectedUser.getIdentifier() != mCurrentUserId) {
-                    // When selected user is different from the current user, show the selected
-                    // user's static wallpaper.
-                    mCache = mWallpaperManager.getBitmapAsUser(mSelectedUser.getIdentifier());
-                } else {
-                    // When there is no selected user, or it's same as the current user, show the
-                    // system (possibly dynamic) wallpaper for the selected user.
-                    mCache = null;
-                }
-                return mCache;
-            }
-        } catch (RemoteException e) {
-            Log.e(TAG, "System dead?" + e);
+        if (mCached) {
+            return mCache;
+        }
+        if (!mWallpaperManager.isWallpaperSupported()) {
+            mCached = true;
+            mCache = null;
             return null;
         }
+
+        LoaderResult result = loadBitmap(mCurrentUserId, mSelectedUser);
+        if (result.success) {
+            mCached = true;
+            mCache = result.bitmap;
+        }
+        return mCache;
+    }
+
+    public LoaderResult loadBitmap(int currentUserId, UserHandle selectedUser) {
+        // May be called on any thread - only use thread safe operations.
+
+        // Prefer the selected user (when specified) over the current user for the FLAG_SET_LOCK
+        // wallpaper.
+        final int lockWallpaperUserId =
+                selectedUser != null ? selectedUser.getIdentifier() : currentUserId;
+        ParcelFileDescriptor fd = mWallpaperManager.getWallpaperFile(
+                WallpaperManager.FLAG_LOCK, lockWallpaperUserId);
+
+        if (fd != null) {
+            try {
+                BitmapFactory.Options options = new BitmapFactory.Options();
+                return LoaderResult.success(BitmapFactory.decodeFileDescriptor(
+                        fd.getFileDescriptor(), null, options));
+            } catch (OutOfMemoryError e) {
+                Log.w(TAG, "Can't decode file", e);
+                return LoaderResult.fail();
+            } finally {
+                IoUtils.closeQuietly(fd);
+            }
+        } else {
+            if (selectedUser != null && selectedUser.getIdentifier() != currentUserId) {
+                // When selected user is different from the current user, show the selected
+                // user's static wallpaper.
+                return LoaderResult.success(
+                        mWallpaperManager.getBitmapAsUser(selectedUser.getIdentifier()));
+
+            } else {
+                // When there is no selected user, or it's same as the current user, show the
+                // system (possibly dynamic) wallpaper for the selected user.
+                return LoaderResult.success(null);
+            }
+        }
     }
 
     public void setCurrentUser(int user) {
@@ -135,14 +141,16 @@
             return;
         }
         mSelectedUser = selectedUser;
-
-        mH.removeCallbacks(this);
-        mH.post(this);
+        postUpdateWallpaper();
     }
 
     @Override
     public void onWallpaperChanged() {
         // Called on Binder thread.
+        postUpdateWallpaper();
+    }
+
+    private void postUpdateWallpaper() {
         mH.removeCallbacks(this);
         mH.post(this);
     }
@@ -150,10 +158,52 @@
     @Override
     public void run() {
         // Called in response to onWallpaperChanged on the main thread.
-        mCached = false;
-        mCache = null;
-        getBitmap();
-        mBar.updateMediaMetaData(true /* metaDataChanged */, true /* allowEnterAnimation */);
+
+        if (mLoader != null) {
+            mLoader.cancel(false /* interrupt */);
+        }
+
+        final int currentUser = mCurrentUserId;
+        final UserHandle selectedUser = mSelectedUser;
+        mLoader = new AsyncTask<Void, Void, LoaderResult>() {
+            @Override
+            protected LoaderResult doInBackground(Void... params) {
+                return loadBitmap(currentUser, selectedUser);
+            }
+
+            @Override
+            protected void onPostExecute(LoaderResult result) {
+                super.onPostExecute(result);
+                if (isCancelled()) {
+                    return;
+                }
+                if (result.success) {
+                    mCached = true;
+                    mCache = result.bitmap;
+                    mBar.updateMediaMetaData(
+                            true /* metaDataChanged */, true /* allowEnterAnimation */);
+                }
+                mLoader = null;
+            }
+        }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+    }
+
+    private static class LoaderResult {
+        public final boolean success;
+        public final Bitmap bitmap;
+
+        LoaderResult(boolean success, Bitmap bitmap) {
+            this.success = success;
+            this.bitmap = bitmap;
+        }
+
+        static LoaderResult success(Bitmap b) {
+            return new LoaderResult(true, b);
+        }
+
+        static LoaderResult fail() {
+            return new LoaderResult(false, null);
+        }
     }
 
     /**
@@ -161,12 +211,16 @@
      */
     public static class WallpaperDrawable extends DrawableWrapper {
 
-        private Bitmap mBackground;
-        private Rect mTmpRect = new Rect();
+        private final ConstantState mState;
+        private final Rect mTmpRect = new Rect();
 
         public WallpaperDrawable(Resources r, Bitmap b) {
-            super(new BitmapDrawable(r, b));
-            mBackground = b;
+            this(r, new ConstantState(b));
+        }
+
+        private WallpaperDrawable(Resources r, ConstantState state) {
+            super(new BitmapDrawable(r, state.mBackground));
+            mState = state;
         }
 
         @Override
@@ -183,8 +237,8 @@
         protected void onBoundsChange(Rect bounds) {
             int vwidth = getBounds().width();
             int vheight = getBounds().height();
-            int dwidth = mBackground.getWidth();
-            int dheight = mBackground.getHeight();
+            int dwidth = mState.mBackground.getWidth();
+            int dheight = mState.mBackground.getHeight();
             float scale;
             float dx = 0, dy = 0;
 
@@ -207,5 +261,35 @@
 
             super.onBoundsChange(mTmpRect);
         }
+
+        @Override
+        public ConstantState getConstantState() {
+            return mState;
+        }
+
+        static class ConstantState extends Drawable.ConstantState {
+
+            private final Bitmap mBackground;
+
+            ConstantState(Bitmap background) {
+                mBackground = background;
+            }
+
+            @Override
+            public Drawable newDrawable() {
+                return newDrawable(null);
+            }
+
+            @Override
+            public Drawable newDrawable(@Nullable Resources res) {
+                return new WallpaperDrawable(res, this);
+            }
+
+            @Override
+            public int getChangingConfigurations() {
+                // DrawableWrapper already handles this for us.
+                return 0;
+            }
+        }
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index 62c0fa9..48cf631 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -701,7 +701,7 @@
     }
 
     private boolean isFalseTouch() {
-        if (mStatusBarState != StatusBarState.KEYGUARD) {
+        if (!needsAntiFalsing()) {
             return false;
         }
         if (mFalsingManager.isClassiferEnabled()) {
@@ -1941,6 +1941,11 @@
     }
 
     @Override
+    public boolean needsAntiFalsing() {
+        return mStatusBarState == StatusBarState.KEYGUARD;
+    }
+
+    @Override
     protected float getPeekHeight() {
         if (mNotificationStackScroller.getNotGoneChildCount() > 0) {
             return mNotificationStackScroller.getPeekHeight();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index d3f3b2d..712f814 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -2021,7 +2021,8 @@
             if (metaDataChanged) {
                 if (mBackdropBack.getDrawable() != null) {
                     Drawable drawable =
-                            mBackdropBack.getDrawable().getConstantState().newDrawable().mutate();
+                            mBackdropBack.getDrawable().getConstantState()
+                                    .newDrawable(mBackdropFront.getResources()).mutate();
                     mBackdropFront.setImageDrawable(drawable);
                     if (mScrimSrcModeEnabled) {
                         mBackdropFront.getDrawable().mutate().setXfermode(mSrcOverXferMode);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java
index 82496ac..493b23f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QSTileHost.java
@@ -209,7 +209,7 @@
         // already logged
     }
 
-    public void animateExpandQS() {
+    public void animateToggleQSExpansion() {
         // TODO: Better path to animated panel expansion.
         mHeader.performClick();
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
index 2b03dfb..b8e069d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStatusBarHeader.java
@@ -106,6 +106,8 @@
         mDateTimeGroup = (ViewGroup) findViewById(R.id.date_time_group);
         mDateTimeGroup.setPivotX(0);
         mDateTimeGroup.setPivotY(0);
+        boolean showDate = getResources().getBoolean(R.bool.quick_settings_show_date);
+        findViewById(R.id.date).setVisibility(showDate ? View.VISIBLE : View.GONE);
 
         mExpandIndicator = (ExpandableIndicator) findViewById(R.id.expand_indicator);
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DataSaverController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DataSaverController.java
index c4c64e7..e6e189f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DataSaverController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DataSaverController.java
@@ -89,6 +89,10 @@
                 }
             });
         }
+
+        @Override
+        public void onRestrictBackgroundWhitelistChanged(int uid, boolean whitelisted) {
+        }
     };
 
     public interface Listener {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
index 40eb71d..40dacd3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
@@ -791,7 +791,7 @@
 
     private SubscriptionInfo addSignalController(int id, int simSlotIndex) {
         SubscriptionInfo info = new SubscriptionInfo(id, "", simSlotIndex, "", "", 0, 0, "", 0,
-                null, 0, 0, "");
+                null, 0, 0, "", SubscriptionManager.SIM_PROVISIONED);
         mMobileSignalControllers.put(id, new MobileSignalController(mContext,
                 mConfig, mHasMobileDataFeature, mPhone, mCallbackHandler, this, info,
                 mSubDefaults, mReceiverHandler.getLooper()));
diff --git a/preloaded-classes b/preloaded-classes
index d854769..32b692a 100644
--- a/preloaded-classes
+++ b/preloaded-classes
@@ -1613,6 +1613,7 @@
 android.os.AsyncTask$WorkerRunnable
 android.os.BadParcelableException
 android.os.BaseBundle
+android.os.BaseBundle$NoImagePreloadHolder
 android.os.BatteryManager
 android.os.Binder
 android.os.BinderProxy
diff --git a/rs/java/android/renderscript/Element.java b/rs/java/android/renderscript/Element.java
index 50226ac..9d2f750 100644
--- a/rs/java/android/renderscript/Element.java
+++ b/rs/java/android/renderscript/Element.java
@@ -311,8 +311,12 @@
      * @return Element
      */
     public static Element BOOLEAN(RenderScript rs) {
-        if(rs.mElement_BOOLEAN == null) {
-            rs.mElement_BOOLEAN = createUser(rs, DataType.BOOLEAN);
+        if (rs.mElement_BOOLEAN == null) {
+            synchronized (rs) {
+                if (rs.mElement_BOOLEAN == null) {
+                    rs.mElement_BOOLEAN = createUser(rs, DataType.BOOLEAN);
+                }
+            }
         }
         return rs.mElement_BOOLEAN;
     }
@@ -325,8 +329,12 @@
      * @return Element
      */
     public static Element U8(RenderScript rs) {
-        if(rs.mElement_U8 == null) {
-            rs.mElement_U8 = createUser(rs, DataType.UNSIGNED_8);
+        if (rs.mElement_U8 == null) {
+            synchronized (rs) {
+                if (rs.mElement_U8 == null) {
+                    rs.mElement_U8 = createUser(rs, DataType.UNSIGNED_8);
+                }
+            }
         }
         return rs.mElement_U8;
     }
@@ -339,436 +347,683 @@
      * @return Element
      */
     public static Element I8(RenderScript rs) {
-        if(rs.mElement_I8 == null) {
-            rs.mElement_I8 = createUser(rs, DataType.SIGNED_8);
+        if (rs.mElement_I8 == null) {
+            synchronized (rs) {
+                if (rs.mElement_I8 == null) {
+                    rs.mElement_I8 = createUser(rs, DataType.SIGNED_8);
+                }
+            }
         }
         return rs.mElement_I8;
     }
 
     public static Element U16(RenderScript rs) {
-        if(rs.mElement_U16 == null) {
-            rs.mElement_U16 = createUser(rs, DataType.UNSIGNED_16);
+        if (rs.mElement_U16 == null) {
+            synchronized (rs) {
+                if (rs.mElement_U16 == null) {
+                    rs.mElement_U16 = createUser(rs, DataType.UNSIGNED_16);
+                }
+            }
         }
         return rs.mElement_U16;
     }
 
     public static Element I16(RenderScript rs) {
-        if(rs.mElement_I16 == null) {
-            rs.mElement_I16 = createUser(rs, DataType.SIGNED_16);
+        if (rs.mElement_I16 == null) {
+            synchronized (rs) {
+                if (rs.mElement_I16 == null) {
+                    rs.mElement_I16 = createUser(rs, DataType.SIGNED_16);
+                }
+            }
         }
         return rs.mElement_I16;
     }
 
     public static Element U32(RenderScript rs) {
-        if(rs.mElement_U32 == null) {
-            rs.mElement_U32 = createUser(rs, DataType.UNSIGNED_32);
+        if (rs.mElement_U32 == null) {
+            synchronized (rs) {
+                if (rs.mElement_U32 == null) {
+                    rs.mElement_U32 = createUser(rs, DataType.UNSIGNED_32);
+                }
+            }
         }
         return rs.mElement_U32;
     }
 
     public static Element I32(RenderScript rs) {
-        if(rs.mElement_I32 == null) {
-            rs.mElement_I32 = createUser(rs, DataType.SIGNED_32);
+        if (rs.mElement_I32 == null) {
+            synchronized (rs) {
+                if (rs.mElement_I32 == null) {
+                    rs.mElement_I32 = createUser(rs, DataType.SIGNED_32);
+                }
+            }
         }
         return rs.mElement_I32;
     }
 
     public static Element U64(RenderScript rs) {
-        if(rs.mElement_U64 == null) {
-            rs.mElement_U64 = createUser(rs, DataType.UNSIGNED_64);
+        if (rs.mElement_U64 == null) {
+            synchronized (rs) {
+                if (rs.mElement_U64 == null) {
+                    rs.mElement_U64 = createUser(rs, DataType.UNSIGNED_64);
+                }
+            }
         }
         return rs.mElement_U64;
     }
 
     public static Element I64(RenderScript rs) {
-        if(rs.mElement_I64 == null) {
-            rs.mElement_I64 = createUser(rs, DataType.SIGNED_64);
+        if (rs.mElement_I64 == null) {
+            synchronized (rs) {
+                if (rs.mElement_I64 == null) {
+                    rs.mElement_I64 = createUser(rs, DataType.SIGNED_64);
+                }
+            }
         }
         return rs.mElement_I64;
     }
 
     public static Element F16(RenderScript rs) {
-        if(rs.mElement_F16 == null) {
-            rs.mElement_F16 = createUser(rs, DataType.FLOAT_16);
+        if (rs.mElement_F16 == null) {
+            synchronized (rs) {
+                if (rs.mElement_F16 == null) {
+                    rs.mElement_F16 = createUser(rs, DataType.FLOAT_16);
+                }
+            }
         }
         return rs.mElement_F16;
     }
 
     public static Element F32(RenderScript rs) {
-        if(rs.mElement_F32 == null) {
-            rs.mElement_F32 = createUser(rs, DataType.FLOAT_32);
+        if (rs.mElement_F32 == null) {
+            synchronized (rs) {
+                if (rs.mElement_F32 == null) {
+                    rs.mElement_F32 = createUser(rs, DataType.FLOAT_32);
+                }
+            }
         }
         return rs.mElement_F32;
     }
 
     public static Element F64(RenderScript rs) {
-        if(rs.mElement_F64 == null) {
-            rs.mElement_F64 = createUser(rs, DataType.FLOAT_64);
+        if (rs.mElement_F64 == null) {
+            synchronized (rs) {
+                if (rs.mElement_F64 == null) {
+                    rs.mElement_F64 = createUser(rs, DataType.FLOAT_64);
+                }
+            }
         }
         return rs.mElement_F64;
     }
 
     public static Element ELEMENT(RenderScript rs) {
-        if(rs.mElement_ELEMENT == null) {
-            rs.mElement_ELEMENT = createUser(rs, DataType.RS_ELEMENT);
+        if (rs.mElement_ELEMENT == null) {
+            synchronized (rs) {
+                if (rs.mElement_ELEMENT == null) {
+                    rs.mElement_ELEMENT = createUser(rs, DataType.RS_ELEMENT);
+                }
+            }
         }
         return rs.mElement_ELEMENT;
     }
 
     public static Element TYPE(RenderScript rs) {
-        if(rs.mElement_TYPE == null) {
-            rs.mElement_TYPE = createUser(rs, DataType.RS_TYPE);
+        if (rs.mElement_TYPE == null) {
+            synchronized (rs) {
+                if (rs.mElement_TYPE == null) {
+                    rs.mElement_TYPE = createUser(rs, DataType.RS_TYPE);
+                }
+            }
         }
         return rs.mElement_TYPE;
     }
 
     public static Element ALLOCATION(RenderScript rs) {
-        if(rs.mElement_ALLOCATION == null) {
-            rs.mElement_ALLOCATION = createUser(rs, DataType.RS_ALLOCATION);
+        if (rs.mElement_ALLOCATION == null) {
+            synchronized (rs) {
+                if (rs.mElement_ALLOCATION == null) {
+                    rs.mElement_ALLOCATION = createUser(rs, DataType.RS_ALLOCATION);
+                }
+            }
         }
         return rs.mElement_ALLOCATION;
     }
 
     public static Element SAMPLER(RenderScript rs) {
-        if(rs.mElement_SAMPLER == null) {
-            rs.mElement_SAMPLER = createUser(rs, DataType.RS_SAMPLER);
+        if (rs.mElement_SAMPLER == null) {
+            synchronized (rs) {
+                if (rs.mElement_SAMPLER == null) {
+                    rs.mElement_SAMPLER = createUser(rs, DataType.RS_SAMPLER);
+                }
+            }
         }
         return rs.mElement_SAMPLER;
     }
 
     public static Element SCRIPT(RenderScript rs) {
-        if(rs.mElement_SCRIPT == null) {
-            rs.mElement_SCRIPT = createUser(rs, DataType.RS_SCRIPT);
+        if (rs.mElement_SCRIPT == null) {
+            synchronized (rs) {
+                if (rs.mElement_SCRIPT == null) {
+                    rs.mElement_SCRIPT = createUser(rs, DataType.RS_SCRIPT);
+                }
+            }
         }
         return rs.mElement_SCRIPT;
     }
 
     public static Element MESH(RenderScript rs) {
-        if(rs.mElement_MESH == null) {
-            rs.mElement_MESH = createUser(rs, DataType.RS_MESH);
+        if (rs.mElement_MESH == null) {
+            synchronized (rs) {
+                if (rs.mElement_MESH == null) {
+                    rs.mElement_MESH = createUser(rs, DataType.RS_MESH);
+                }
+            }
         }
         return rs.mElement_MESH;
     }
 
     public static Element PROGRAM_FRAGMENT(RenderScript rs) {
-        if(rs.mElement_PROGRAM_FRAGMENT == null) {
-            rs.mElement_PROGRAM_FRAGMENT = createUser(rs, DataType.RS_PROGRAM_FRAGMENT);
+        if (rs.mElement_PROGRAM_FRAGMENT == null) {
+            synchronized (rs) {
+                if (rs.mElement_PROGRAM_FRAGMENT == null) {
+                    rs.mElement_PROGRAM_FRAGMENT = createUser(rs, DataType.RS_PROGRAM_FRAGMENT);
+                }
+            }
         }
         return rs.mElement_PROGRAM_FRAGMENT;
     }
 
     public static Element PROGRAM_VERTEX(RenderScript rs) {
-        if(rs.mElement_PROGRAM_VERTEX == null) {
-            rs.mElement_PROGRAM_VERTEX = createUser(rs, DataType.RS_PROGRAM_VERTEX);
+        if (rs.mElement_PROGRAM_VERTEX == null) {
+            synchronized (rs) {
+                if (rs.mElement_PROGRAM_VERTEX == null) {
+                    rs.mElement_PROGRAM_VERTEX = createUser(rs, DataType.RS_PROGRAM_VERTEX);
+                }
+            }
         }
         return rs.mElement_PROGRAM_VERTEX;
     }
 
     public static Element PROGRAM_RASTER(RenderScript rs) {
-        if(rs.mElement_PROGRAM_RASTER == null) {
-            rs.mElement_PROGRAM_RASTER = createUser(rs, DataType.RS_PROGRAM_RASTER);
+        if (rs.mElement_PROGRAM_RASTER == null) {
+            synchronized (rs) {
+                if (rs.mElement_PROGRAM_RASTER == null) {
+                    rs.mElement_PROGRAM_RASTER = createUser(rs, DataType.RS_PROGRAM_RASTER);
+                }
+            }
         }
         return rs.mElement_PROGRAM_RASTER;
     }
 
     public static Element PROGRAM_STORE(RenderScript rs) {
-        if(rs.mElement_PROGRAM_STORE == null) {
-            rs.mElement_PROGRAM_STORE = createUser(rs, DataType.RS_PROGRAM_STORE);
+        if (rs.mElement_PROGRAM_STORE == null) {
+            synchronized (rs) {
+                if (rs.mElement_PROGRAM_STORE == null) {
+                    rs.mElement_PROGRAM_STORE = createUser(rs, DataType.RS_PROGRAM_STORE);
+                }
+            }
         }
         return rs.mElement_PROGRAM_STORE;
     }
 
     public static Element FONT(RenderScript rs) {
-        if(rs.mElement_FONT == null) {
-            rs.mElement_FONT = createUser(rs, DataType.RS_FONT);
+        if (rs.mElement_FONT == null) {
+            synchronized (rs) {
+                if (rs.mElement_FONT == null) {
+                    rs.mElement_FONT = createUser(rs, DataType.RS_FONT);
+                }
+            }
         }
         return rs.mElement_FONT;
     }
 
-
     public static Element A_8(RenderScript rs) {
-        if(rs.mElement_A_8 == null) {
-            rs.mElement_A_8 = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_A);
+        if (rs.mElement_A_8 == null) {
+            synchronized (rs) {
+                if (rs.mElement_A_8 == null) {
+                    rs.mElement_A_8 = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_A);
+                }
+            }
         }
         return rs.mElement_A_8;
     }
 
     public static Element RGB_565(RenderScript rs) {
-        if(rs.mElement_RGB_565 == null) {
-            rs.mElement_RGB_565 = createPixel(rs, DataType.UNSIGNED_5_6_5, DataKind.PIXEL_RGB);
+        if (rs.mElement_RGB_565 == null) {
+            synchronized (rs) {
+                if (rs.mElement_RGB_565 == null) {
+                    rs.mElement_RGB_565 = createPixel(rs, DataType.UNSIGNED_5_6_5, DataKind.PIXEL_RGB);
+                }
+            }
         }
         return rs.mElement_RGB_565;
     }
 
     public static Element RGB_888(RenderScript rs) {
-        if(rs.mElement_RGB_888 == null) {
-            rs.mElement_RGB_888 = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_RGB);
+        if (rs.mElement_RGB_888 == null) {
+            synchronized (rs) {
+                if (rs.mElement_RGB_888 == null) {
+                    rs.mElement_RGB_888 = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_RGB);
+                }
+            }
         }
         return rs.mElement_RGB_888;
     }
 
     public static Element RGBA_5551(RenderScript rs) {
-        if(rs.mElement_RGBA_5551 == null) {
-            rs.mElement_RGBA_5551 = createPixel(rs, DataType.UNSIGNED_5_5_5_1, DataKind.PIXEL_RGBA);
+        if (rs.mElement_RGBA_5551 == null) {
+            synchronized (rs) {
+                if (rs.mElement_RGBA_5551 == null) {
+                    rs.mElement_RGBA_5551 = createPixel(rs, DataType.UNSIGNED_5_5_5_1, DataKind.PIXEL_RGBA);
+                }
+            }
         }
         return rs.mElement_RGBA_5551;
     }
 
     public static Element RGBA_4444(RenderScript rs) {
-        if(rs.mElement_RGBA_4444 == null) {
-            rs.mElement_RGBA_4444 = createPixel(rs, DataType.UNSIGNED_4_4_4_4, DataKind.PIXEL_RGBA);
+        if (rs.mElement_RGBA_4444 == null) {
+            synchronized (rs) {
+                if (rs.mElement_RGBA_4444 == null) {
+                    rs.mElement_RGBA_4444 = createPixel(rs, DataType.UNSIGNED_4_4_4_4, DataKind.PIXEL_RGBA);
+                }
+            }
         }
         return rs.mElement_RGBA_4444;
     }
 
     public static Element RGBA_8888(RenderScript rs) {
-        if(rs.mElement_RGBA_8888 == null) {
-            rs.mElement_RGBA_8888 = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_RGBA);
+        if (rs.mElement_RGBA_8888 == null) {
+            synchronized (rs) {
+                if (rs.mElement_RGBA_8888 == null) {
+                    rs.mElement_RGBA_8888 = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_RGBA);
+                }
+            }
         }
         return rs.mElement_RGBA_8888;
     }
 
     public static Element F16_2(RenderScript rs) {
-        if(rs.mElement_HALF_2 == null) {
-            rs.mElement_HALF_2 = createVector(rs, DataType.FLOAT_16, 2);
+        if (rs.mElement_HALF_2 == null) {
+            synchronized (rs) {
+                if (rs.mElement_HALF_2 == null) {
+                    rs.mElement_HALF_2 = createVector(rs, DataType.FLOAT_16, 2);
+                }
+            }
         }
         return rs.mElement_HALF_2;
     }
 
     public static Element F16_3(RenderScript rs) {
-        if(rs.mElement_HALF_3 == null) {
-            rs.mElement_HALF_3 = createVector(rs, DataType.FLOAT_16, 3);
+        if (rs.mElement_HALF_3 == null) {
+            synchronized (rs) {
+                if (rs.mElement_HALF_3 == null) {
+                    rs.mElement_HALF_3 = createVector(rs, DataType.FLOAT_16, 3);
+                }
+            }
         }
         return rs.mElement_HALF_3;
     }
 
     public static Element F16_4(RenderScript rs) {
-        if(rs.mElement_HALF_4 == null) {
-            rs.mElement_HALF_4 = createVector(rs, DataType.FLOAT_16, 4);
+        if (rs.mElement_HALF_4 == null) {
+            synchronized (rs) {
+                if (rs.mElement_HALF_4 == null) {
+                    rs.mElement_HALF_4 = createVector(rs, DataType.FLOAT_16, 4);
+                }
+            }
         }
         return rs.mElement_HALF_4;
     }
 
     public static Element F32_2(RenderScript rs) {
-        if(rs.mElement_FLOAT_2 == null) {
-            rs.mElement_FLOAT_2 = createVector(rs, DataType.FLOAT_32, 2);
+        if (rs.mElement_FLOAT_2 == null) {
+            synchronized (rs) {
+                if (rs.mElement_FLOAT_2 == null) {
+                    rs.mElement_FLOAT_2 = createVector(rs, DataType.FLOAT_32, 2);
+                }
+            }
         }
         return rs.mElement_FLOAT_2;
     }
 
     public static Element F32_3(RenderScript rs) {
-        if(rs.mElement_FLOAT_3 == null) {
-            rs.mElement_FLOAT_3 = createVector(rs, DataType.FLOAT_32, 3);
+        if (rs.mElement_FLOAT_3 == null) {
+            synchronized (rs) {
+                if (rs.mElement_FLOAT_3 == null) {
+                    rs.mElement_FLOAT_3 = createVector(rs, DataType.FLOAT_32, 3);
+                }
+            }
         }
         return rs.mElement_FLOAT_3;
     }
 
     public static Element F32_4(RenderScript rs) {
-        if(rs.mElement_FLOAT_4 == null) {
-            rs.mElement_FLOAT_4 = createVector(rs, DataType.FLOAT_32, 4);
+        if (rs.mElement_FLOAT_4 == null) {
+            synchronized (rs) {
+                if (rs.mElement_FLOAT_4 == null) {
+                    rs.mElement_FLOAT_4 = createVector(rs, DataType.FLOAT_32, 4);
+                }
+            }
         }
         return rs.mElement_FLOAT_4;
     }
 
     public static Element F64_2(RenderScript rs) {
-        if(rs.mElement_DOUBLE_2 == null) {
-            rs.mElement_DOUBLE_2 = createVector(rs, DataType.FLOAT_64, 2);
+        if (rs.mElement_DOUBLE_2 == null) {
+            synchronized (rs) {
+                if (rs.mElement_DOUBLE_2 == null) {
+                    rs.mElement_DOUBLE_2 = createVector(rs, DataType.FLOAT_64, 2);
+                }
+            }
         }
         return rs.mElement_DOUBLE_2;
     }
 
     public static Element F64_3(RenderScript rs) {
-        if(rs.mElement_DOUBLE_3 == null) {
-            rs.mElement_DOUBLE_3 = createVector(rs, DataType.FLOAT_64, 3);
+        if (rs.mElement_DOUBLE_3 == null) {
+            synchronized (rs) {
+                if (rs.mElement_DOUBLE_3 == null) {
+                    rs.mElement_DOUBLE_3 = createVector(rs, DataType.FLOAT_64, 3);
+                }
+            }
         }
         return rs.mElement_DOUBLE_3;
     }
 
     public static Element F64_4(RenderScript rs) {
-        if(rs.mElement_DOUBLE_4 == null) {
-            rs.mElement_DOUBLE_4 = createVector(rs, DataType.FLOAT_64, 4);
+        if (rs.mElement_DOUBLE_4 == null) {
+            synchronized (rs) {
+                if (rs.mElement_DOUBLE_4 == null) {
+                    rs.mElement_DOUBLE_4 = createVector(rs, DataType.FLOAT_64, 4);
+                }
+            }
         }
         return rs.mElement_DOUBLE_4;
     }
 
     public static Element U8_2(RenderScript rs) {
-        if(rs.mElement_UCHAR_2 == null) {
-            rs.mElement_UCHAR_2 = createVector(rs, DataType.UNSIGNED_8, 2);
+        if (rs.mElement_UCHAR_2 == null) {
+            synchronized (rs) {
+                if (rs.mElement_UCHAR_2 == null) {
+                    rs.mElement_UCHAR_2 = createVector(rs, DataType.UNSIGNED_8, 2);
+                }
+            }
         }
         return rs.mElement_UCHAR_2;
     }
 
     public static Element U8_3(RenderScript rs) {
-        if(rs.mElement_UCHAR_3 == null) {
-            rs.mElement_UCHAR_3 = createVector(rs, DataType.UNSIGNED_8, 3);
+        if (rs.mElement_UCHAR_3 == null) {
+            synchronized (rs) {
+                if (rs.mElement_UCHAR_3 == null) {
+                    rs.mElement_UCHAR_3 = createVector(rs, DataType.UNSIGNED_8, 3);
+                }
+            }
         }
         return rs.mElement_UCHAR_3;
     }
 
     public static Element U8_4(RenderScript rs) {
-        if(rs.mElement_UCHAR_4 == null) {
-            rs.mElement_UCHAR_4 = createVector(rs, DataType.UNSIGNED_8, 4);
+        if (rs.mElement_UCHAR_4 == null) {
+            synchronized (rs) {
+                if (rs.mElement_UCHAR_4 == null) {
+                    rs.mElement_UCHAR_4 = createVector(rs, DataType.UNSIGNED_8, 4);
+                }
+            }
         }
         return rs.mElement_UCHAR_4;
     }
 
     public static Element I8_2(RenderScript rs) {
-        if(rs.mElement_CHAR_2 == null) {
-            rs.mElement_CHAR_2 = createVector(rs, DataType.SIGNED_8, 2);
+        if (rs.mElement_CHAR_2 == null) {
+            synchronized (rs) {
+                if (rs.mElement_CHAR_2 == null) {
+                    rs.mElement_CHAR_2 = createVector(rs, DataType.SIGNED_8, 2);
+                }
+            }
         }
         return rs.mElement_CHAR_2;
     }
 
     public static Element I8_3(RenderScript rs) {
-        if(rs.mElement_CHAR_3 == null) {
-            rs.mElement_CHAR_3 = createVector(rs, DataType.SIGNED_8, 3);
+        if (rs.mElement_CHAR_3 == null) {
+            synchronized (rs) {
+                if (rs.mElement_CHAR_3 == null) {
+                    rs.mElement_CHAR_3 = createVector(rs, DataType.SIGNED_8, 3);
+                }
+            }
         }
         return rs.mElement_CHAR_3;
     }
 
     public static Element I8_4(RenderScript rs) {
-        if(rs.mElement_CHAR_4 == null) {
-            rs.mElement_CHAR_4 = createVector(rs, DataType.SIGNED_8, 4);
+        if (rs.mElement_CHAR_4 == null) {
+            synchronized (rs) {
+                if (rs.mElement_CHAR_4 == null) {
+                    rs.mElement_CHAR_4 = createVector(rs, DataType.SIGNED_8, 4);
+                }
+            }
         }
         return rs.mElement_CHAR_4;
     }
 
     public static Element U16_2(RenderScript rs) {
-        if(rs.mElement_USHORT_2 == null) {
-            rs.mElement_USHORT_2 = createVector(rs, DataType.UNSIGNED_16, 2);
+        if (rs.mElement_USHORT_2 == null) {
+            synchronized (rs) {
+                if (rs.mElement_USHORT_2 == null) {
+                    rs.mElement_USHORT_2 = createVector(rs, DataType.UNSIGNED_16, 2);
+                }
+            }
         }
         return rs.mElement_USHORT_2;
     }
 
     public static Element U16_3(RenderScript rs) {
-        if(rs.mElement_USHORT_3 == null) {
-            rs.mElement_USHORT_3 = createVector(rs, DataType.UNSIGNED_16, 3);
+        if (rs.mElement_USHORT_3 == null) {
+            synchronized (rs) {
+                if (rs.mElement_USHORT_3 == null) {
+                    rs.mElement_USHORT_3 = createVector(rs, DataType.UNSIGNED_16, 3);
+                }
+            }
         }
         return rs.mElement_USHORT_3;
     }
 
     public static Element U16_4(RenderScript rs) {
-        if(rs.mElement_USHORT_4 == null) {
-            rs.mElement_USHORT_4 = createVector(rs, DataType.UNSIGNED_16, 4);
+        if (rs.mElement_USHORT_4 == null) {
+            synchronized (rs) {
+                if (rs.mElement_USHORT_4 == null) {
+                    rs.mElement_USHORT_4 = createVector(rs, DataType.UNSIGNED_16, 4);
+                }
+            }
         }
         return rs.mElement_USHORT_4;
     }
 
     public static Element I16_2(RenderScript rs) {
-        if(rs.mElement_SHORT_2 == null) {
-            rs.mElement_SHORT_2 = createVector(rs, DataType.SIGNED_16, 2);
+        if (rs.mElement_SHORT_2 == null) {
+            synchronized (rs) {
+                if (rs.mElement_SHORT_2 == null) {
+                    rs.mElement_SHORT_2 = createVector(rs, DataType.SIGNED_16, 2);
+                }
+            }
         }
         return rs.mElement_SHORT_2;
     }
 
     public static Element I16_3(RenderScript rs) {
-        if(rs.mElement_SHORT_3 == null) {
-            rs.mElement_SHORT_3 = createVector(rs, DataType.SIGNED_16, 3);
+        if (rs.mElement_SHORT_3 == null) {
+            synchronized (rs) {
+                if (rs.mElement_SHORT_3 == null) {
+                    rs.mElement_SHORT_3 = createVector(rs, DataType.SIGNED_16, 3);
+                }
+            }
         }
         return rs.mElement_SHORT_3;
     }
 
     public static Element I16_4(RenderScript rs) {
-        if(rs.mElement_SHORT_4 == null) {
-            rs.mElement_SHORT_4 = createVector(rs, DataType.SIGNED_16, 4);
+        if (rs.mElement_SHORT_4 == null) {
+            synchronized (rs) {
+                if (rs.mElement_SHORT_4 == null) {
+                    rs.mElement_SHORT_4 = createVector(rs, DataType.SIGNED_16, 4);
+                }
+            }
         }
         return rs.mElement_SHORT_4;
     }
 
     public static Element U32_2(RenderScript rs) {
-        if(rs.mElement_UINT_2 == null) {
-            rs.mElement_UINT_2 = createVector(rs, DataType.UNSIGNED_32, 2);
+        if (rs.mElement_UINT_2 == null) {
+            synchronized (rs) {
+                if (rs.mElement_UINT_2 == null) {
+                    rs.mElement_UINT_2 = createVector(rs, DataType.UNSIGNED_32, 2);
+                }
+            }
         }
         return rs.mElement_UINT_2;
     }
 
     public static Element U32_3(RenderScript rs) {
-        if(rs.mElement_UINT_3 == null) {
-            rs.mElement_UINT_3 = createVector(rs, DataType.UNSIGNED_32, 3);
+        if (rs.mElement_UINT_3 == null) {
+            synchronized (rs) {
+                if (rs.mElement_UINT_3 == null) {
+                    rs.mElement_UINT_3 = createVector(rs, DataType.UNSIGNED_32, 3);
+                }
+            }
         }
         return rs.mElement_UINT_3;
     }
 
     public static Element U32_4(RenderScript rs) {
-        if(rs.mElement_UINT_4 == null) {
-            rs.mElement_UINT_4 = createVector(rs, DataType.UNSIGNED_32, 4);
+        if (rs.mElement_UINT_4 == null) {
+            synchronized (rs) {
+                if (rs.mElement_UINT_4 == null) {
+                    rs.mElement_UINT_4 = createVector(rs, DataType.UNSIGNED_32, 4);
+                }
+            }
         }
         return rs.mElement_UINT_4;
     }
 
     public static Element I32_2(RenderScript rs) {
-        if(rs.mElement_INT_2 == null) {
-            rs.mElement_INT_2 = createVector(rs, DataType.SIGNED_32, 2);
+        if (rs.mElement_INT_2 == null) {
+            synchronized (rs) {
+                if (rs.mElement_INT_2 == null) {
+                    rs.mElement_INT_2 = createVector(rs, DataType.SIGNED_32, 2);
+                }
+            }
         }
         return rs.mElement_INT_2;
     }
 
     public static Element I32_3(RenderScript rs) {
-        if(rs.mElement_INT_3 == null) {
-            rs.mElement_INT_3 = createVector(rs, DataType.SIGNED_32, 3);
+        if (rs.mElement_INT_3 == null) {
+            synchronized (rs) {
+                if (rs.mElement_INT_3 == null) {
+                    rs.mElement_INT_3 = createVector(rs, DataType.SIGNED_32, 3);
+                }
+            }
         }
         return rs.mElement_INT_3;
     }
 
     public static Element I32_4(RenderScript rs) {
-        if(rs.mElement_INT_4 == null) {
-            rs.mElement_INT_4 = createVector(rs, DataType.SIGNED_32, 4);
+        if (rs.mElement_INT_4 == null) {
+            synchronized (rs) {
+                if (rs.mElement_INT_4 == null) {
+                    rs.mElement_INT_4 = createVector(rs, DataType.SIGNED_32, 4);
+                }
+            }
         }
         return rs.mElement_INT_4;
     }
 
     public static Element U64_2(RenderScript rs) {
-        if(rs.mElement_ULONG_2 == null) {
-            rs.mElement_ULONG_2 = createVector(rs, DataType.UNSIGNED_64, 2);
+        if (rs.mElement_ULONG_2 == null) {
+            synchronized (rs) {
+                if (rs.mElement_ULONG_2 == null) {
+                    rs.mElement_ULONG_2 = createVector(rs, DataType.UNSIGNED_64, 2);
+                }
+            }
         }
         return rs.mElement_ULONG_2;
     }
 
     public static Element U64_3(RenderScript rs) {
-        if(rs.mElement_ULONG_3 == null) {
-            rs.mElement_ULONG_3 = createVector(rs, DataType.UNSIGNED_64, 3);
+        if (rs.mElement_ULONG_3 == null) {
+            synchronized (rs) {
+                if (rs.mElement_ULONG_3 == null) {
+                    rs.mElement_ULONG_3 = createVector(rs, DataType.UNSIGNED_64, 3);
+                }
+            }
         }
         return rs.mElement_ULONG_3;
     }
 
     public static Element U64_4(RenderScript rs) {
-        if(rs.mElement_ULONG_4 == null) {
-            rs.mElement_ULONG_4 = createVector(rs, DataType.UNSIGNED_64, 4);
+        if (rs.mElement_ULONG_4 == null) {
+            synchronized (rs) {
+                if (rs.mElement_ULONG_4 == null) {
+                    rs.mElement_ULONG_4 = createVector(rs, DataType.UNSIGNED_64, 4);
+                }
+            }
         }
         return rs.mElement_ULONG_4;
     }
 
     public static Element I64_2(RenderScript rs) {
-        if(rs.mElement_LONG_2 == null) {
-            rs.mElement_LONG_2 = createVector(rs, DataType.SIGNED_64, 2);
+        if (rs.mElement_LONG_2 == null) {
+            synchronized (rs) {
+                if (rs.mElement_LONG_2 == null) {
+                    rs.mElement_LONG_2 = createVector(rs, DataType.SIGNED_64, 2);
+                }
+            }
         }
         return rs.mElement_LONG_2;
     }
 
     public static Element I64_3(RenderScript rs) {
-        if(rs.mElement_LONG_3 == null) {
-            rs.mElement_LONG_3 = createVector(rs, DataType.SIGNED_64, 3);
+        if (rs.mElement_LONG_3 == null) {
+            synchronized (rs) {
+                if (rs.mElement_LONG_3 == null) {
+                    rs.mElement_LONG_3 = createVector(rs, DataType.SIGNED_64, 3);
+                }
+            }
         }
         return rs.mElement_LONG_3;
     }
 
     public static Element I64_4(RenderScript rs) {
-        if(rs.mElement_LONG_4 == null) {
-            rs.mElement_LONG_4 = createVector(rs, DataType.SIGNED_64, 4);
+        if (rs.mElement_LONG_4 == null) {
+            synchronized (rs) {
+                if (rs.mElement_LONG_4 == null) {
+                    rs.mElement_LONG_4 = createVector(rs, DataType.SIGNED_64, 4);
+                }
+            }
         }
         return rs.mElement_LONG_4;
     }
 
     public static Element YUV(RenderScript rs) {
         if (rs.mElement_YUV == null) {
-            rs.mElement_YUV = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_YUV);
+            synchronized (rs) {
+                if (rs.mElement_YUV == null) {
+                    rs.mElement_YUV = createPixel(rs, DataType.UNSIGNED_8, DataKind.PIXEL_YUV);
+                }
+            }
         }
         return rs.mElement_YUV;
     }
 
     public static Element MATRIX_4X4(RenderScript rs) {
-        if(rs.mElement_MATRIX_4X4 == null) {
-            rs.mElement_MATRIX_4X4 = createUser(rs, DataType.MATRIX_4X4);
+        if (rs.mElement_MATRIX_4X4 == null) {
+            synchronized (rs) {
+                if (rs.mElement_MATRIX_4X4 == null) {
+                    rs.mElement_MATRIX_4X4 = createUser(rs, DataType.MATRIX_4X4);
+                }
+            }
         }
         return rs.mElement_MATRIX_4X4;
     }
@@ -780,15 +1035,23 @@
     }
 
     public static Element MATRIX_3X3(RenderScript rs) {
-        if(rs.mElement_MATRIX_3X3 == null) {
-            rs.mElement_MATRIX_3X3 = createUser(rs, DataType.MATRIX_3X3);
+        if (rs.mElement_MATRIX_3X3 == null) {
+            synchronized (rs) {
+                if (rs.mElement_MATRIX_3X3 == null) {
+                    rs.mElement_MATRIX_3X3 = createUser(rs, DataType.MATRIX_3X3);
+                }
+            }
         }
         return rs.mElement_MATRIX_3X3;
     }
 
     public static Element MATRIX_2X2(RenderScript rs) {
-        if(rs.mElement_MATRIX_2X2 == null) {
-            rs.mElement_MATRIX_2X2 = createUser(rs, DataType.MATRIX_2X2);
+        if (rs.mElement_MATRIX_2X2 == null) {
+            synchronized (rs) {
+                if (rs.mElement_MATRIX_2X2 == null) {
+                    rs.mElement_MATRIX_2X2 = createUser(rs, DataType.MATRIX_2X2);
+                }
+            }
         }
         return rs.mElement_MATRIX_2X2;
     }
diff --git a/rs/java/android/renderscript/RenderScript.java b/rs/java/android/renderscript/RenderScript.java
index 2650e5a..3d1370a 100644
--- a/rs/java/android/renderscript/RenderScript.java
+++ b/rs/java/android/renderscript/RenderScript.java
@@ -1037,97 +1037,97 @@
     @SuppressWarnings({"FieldCanBeLocal"})
     MessageThread mMessageThread;
 
-    Element mElement_U8;
-    Element mElement_I8;
-    Element mElement_U16;
-    Element mElement_I16;
-    Element mElement_U32;
-    Element mElement_I32;
-    Element mElement_U64;
-    Element mElement_I64;
-    Element mElement_F16;
-    Element mElement_F32;
-    Element mElement_F64;
-    Element mElement_BOOLEAN;
+    volatile Element mElement_U8;
+    volatile Element mElement_I8;
+    volatile Element mElement_U16;
+    volatile Element mElement_I16;
+    volatile Element mElement_U32;
+    volatile Element mElement_I32;
+    volatile Element mElement_U64;
+    volatile Element mElement_I64;
+    volatile Element mElement_F16;
+    volatile Element mElement_F32;
+    volatile Element mElement_F64;
+    volatile Element mElement_BOOLEAN;
 
-    Element mElement_ELEMENT;
-    Element mElement_TYPE;
-    Element mElement_ALLOCATION;
-    Element mElement_SAMPLER;
-    Element mElement_SCRIPT;
-    Element mElement_MESH;
-    Element mElement_PROGRAM_FRAGMENT;
-    Element mElement_PROGRAM_VERTEX;
-    Element mElement_PROGRAM_RASTER;
-    Element mElement_PROGRAM_STORE;
-    Element mElement_FONT;
+    volatile Element mElement_ELEMENT;
+    volatile Element mElement_TYPE;
+    volatile Element mElement_ALLOCATION;
+    volatile Element mElement_SAMPLER;
+    volatile Element mElement_SCRIPT;
+    volatile Element mElement_MESH;
+    volatile Element mElement_PROGRAM_FRAGMENT;
+    volatile Element mElement_PROGRAM_VERTEX;
+    volatile Element mElement_PROGRAM_RASTER;
+    volatile Element mElement_PROGRAM_STORE;
+    volatile Element mElement_FONT;
 
-    Element mElement_A_8;
-    Element mElement_RGB_565;
-    Element mElement_RGB_888;
-    Element mElement_RGBA_5551;
-    Element mElement_RGBA_4444;
-    Element mElement_RGBA_8888;
+    volatile Element mElement_A_8;
+    volatile Element mElement_RGB_565;
+    volatile Element mElement_RGB_888;
+    volatile Element mElement_RGBA_5551;
+    volatile Element mElement_RGBA_4444;
+    volatile Element mElement_RGBA_8888;
 
-    Element mElement_HALF_2;
-    Element mElement_HALF_3;
-    Element mElement_HALF_4;
+    volatile Element mElement_HALF_2;
+    volatile Element mElement_HALF_3;
+    volatile Element mElement_HALF_4;
 
-    Element mElement_FLOAT_2;
-    Element mElement_FLOAT_3;
-    Element mElement_FLOAT_4;
+    volatile Element mElement_FLOAT_2;
+    volatile Element mElement_FLOAT_3;
+    volatile Element mElement_FLOAT_4;
 
-    Element mElement_DOUBLE_2;
-    Element mElement_DOUBLE_3;
-    Element mElement_DOUBLE_4;
+    volatile Element mElement_DOUBLE_2;
+    volatile Element mElement_DOUBLE_3;
+    volatile Element mElement_DOUBLE_4;
 
-    Element mElement_UCHAR_2;
-    Element mElement_UCHAR_3;
-    Element mElement_UCHAR_4;
+    volatile Element mElement_UCHAR_2;
+    volatile Element mElement_UCHAR_3;
+    volatile Element mElement_UCHAR_4;
 
-    Element mElement_CHAR_2;
-    Element mElement_CHAR_3;
-    Element mElement_CHAR_4;
+    volatile Element mElement_CHAR_2;
+    volatile Element mElement_CHAR_3;
+    volatile Element mElement_CHAR_4;
 
-    Element mElement_USHORT_2;
-    Element mElement_USHORT_3;
-    Element mElement_USHORT_4;
+    volatile Element mElement_USHORT_2;
+    volatile Element mElement_USHORT_3;
+    volatile Element mElement_USHORT_4;
 
-    Element mElement_SHORT_2;
-    Element mElement_SHORT_3;
-    Element mElement_SHORT_4;
+    volatile Element mElement_SHORT_2;
+    volatile Element mElement_SHORT_3;
+    volatile Element mElement_SHORT_4;
 
-    Element mElement_UINT_2;
-    Element mElement_UINT_3;
-    Element mElement_UINT_4;
+    volatile Element mElement_UINT_2;
+    volatile Element mElement_UINT_3;
+    volatile Element mElement_UINT_4;
 
-    Element mElement_INT_2;
-    Element mElement_INT_3;
-    Element mElement_INT_4;
+    volatile Element mElement_INT_2;
+    volatile Element mElement_INT_3;
+    volatile Element mElement_INT_4;
 
-    Element mElement_ULONG_2;
-    Element mElement_ULONG_3;
-    Element mElement_ULONG_4;
+    volatile Element mElement_ULONG_2;
+    volatile Element mElement_ULONG_3;
+    volatile Element mElement_ULONG_4;
 
-    Element mElement_LONG_2;
-    Element mElement_LONG_3;
-    Element mElement_LONG_4;
+    volatile Element mElement_LONG_2;
+    volatile Element mElement_LONG_3;
+    volatile Element mElement_LONG_4;
 
-    Element mElement_YUV;
+    volatile Element mElement_YUV;
 
-    Element mElement_MATRIX_4X4;
-    Element mElement_MATRIX_3X3;
-    Element mElement_MATRIX_2X2;
+    volatile Element mElement_MATRIX_4X4;
+    volatile Element mElement_MATRIX_3X3;
+    volatile Element mElement_MATRIX_2X2;
 
-    Sampler mSampler_CLAMP_NEAREST;
-    Sampler mSampler_CLAMP_LINEAR;
-    Sampler mSampler_CLAMP_LINEAR_MIP_LINEAR;
-    Sampler mSampler_WRAP_NEAREST;
-    Sampler mSampler_WRAP_LINEAR;
-    Sampler mSampler_WRAP_LINEAR_MIP_LINEAR;
-    Sampler mSampler_MIRRORED_REPEAT_NEAREST;
-    Sampler mSampler_MIRRORED_REPEAT_LINEAR;
-    Sampler mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR;
+    volatile Sampler mSampler_CLAMP_NEAREST;
+    volatile Sampler mSampler_CLAMP_LINEAR;
+    volatile Sampler mSampler_CLAMP_LINEAR_MIP_LINEAR;
+    volatile Sampler mSampler_WRAP_NEAREST;
+    volatile Sampler mSampler_WRAP_LINEAR;
+    volatile Sampler mSampler_WRAP_LINEAR_MIP_LINEAR;
+    volatile Sampler mSampler_MIRRORED_REPEAT_NEAREST;
+    volatile Sampler mSampler_MIRRORED_REPEAT_LINEAR;
+    volatile Sampler mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR;
 
     ProgramStore mProgramStore_BLEND_NONE_DEPTH_TEST;
     ProgramStore mProgramStore_BLEND_NONE_DEPTH_NO_DEPTH;
diff --git a/rs/java/android/renderscript/Sampler.java b/rs/java/android/renderscript/Sampler.java
index 5c4bae9..70e88bc 100644
--- a/rs/java/android/renderscript/Sampler.java
+++ b/rs/java/android/renderscript/Sampler.java
@@ -98,13 +98,17 @@
      * @return Sampler
      */
     public static Sampler CLAMP_NEAREST(RenderScript rs) {
-        if(rs.mSampler_CLAMP_NEAREST == null) {
-            Builder b = new Builder(rs);
-            b.setMinification(Value.NEAREST);
-            b.setMagnification(Value.NEAREST);
-            b.setWrapS(Value.CLAMP);
-            b.setWrapT(Value.CLAMP);
-            rs.mSampler_CLAMP_NEAREST = b.create();
+        if (rs.mSampler_CLAMP_NEAREST == null) {
+            synchronized (rs) {
+                if (rs.mSampler_CLAMP_NEAREST == null) {
+                    Builder b = new Builder(rs);
+                    b.setMinification(Value.NEAREST);
+                    b.setMagnification(Value.NEAREST);
+                    b.setWrapS(Value.CLAMP);
+                    b.setWrapT(Value.CLAMP);
+                    rs.mSampler_CLAMP_NEAREST = b.create();
+                }
+            }
         }
         return rs.mSampler_CLAMP_NEAREST;
     }
@@ -118,13 +122,17 @@
      * @return Sampler
      */
     public static Sampler CLAMP_LINEAR(RenderScript rs) {
-        if(rs.mSampler_CLAMP_LINEAR == null) {
-            Builder b = new Builder(rs);
-            b.setMinification(Value.LINEAR);
-            b.setMagnification(Value.LINEAR);
-            b.setWrapS(Value.CLAMP);
-            b.setWrapT(Value.CLAMP);
-            rs.mSampler_CLAMP_LINEAR = b.create();
+        if (rs.mSampler_CLAMP_LINEAR == null) {
+            synchronized (rs) {
+                if (rs.mSampler_CLAMP_LINEAR == null) {
+                    Builder b = new Builder(rs);
+                    b.setMinification(Value.LINEAR);
+                    b.setMagnification(Value.LINEAR);
+                    b.setWrapS(Value.CLAMP);
+                    b.setWrapT(Value.CLAMP);
+                    rs.mSampler_CLAMP_LINEAR = b.create();
+                }
+            }
         }
         return rs.mSampler_CLAMP_LINEAR;
     }
@@ -138,13 +146,17 @@
      * @return Sampler
      */
     public static Sampler CLAMP_LINEAR_MIP_LINEAR(RenderScript rs) {
-        if(rs.mSampler_CLAMP_LINEAR_MIP_LINEAR == null) {
-            Builder b = new Builder(rs);
-            b.setMinification(Value.LINEAR_MIP_LINEAR);
-            b.setMagnification(Value.LINEAR);
-            b.setWrapS(Value.CLAMP);
-            b.setWrapT(Value.CLAMP);
-            rs.mSampler_CLAMP_LINEAR_MIP_LINEAR = b.create();
+        if (rs.mSampler_CLAMP_LINEAR_MIP_LINEAR == null) {
+            synchronized (rs) {
+                if (rs.mSampler_CLAMP_LINEAR_MIP_LINEAR == null) {
+                    Builder b = new Builder(rs);
+                    b.setMinification(Value.LINEAR_MIP_LINEAR);
+                    b.setMagnification(Value.LINEAR);
+                    b.setWrapS(Value.CLAMP);
+                    b.setWrapT(Value.CLAMP);
+                    rs.mSampler_CLAMP_LINEAR_MIP_LINEAR = b.create();
+                }
+            }
         }
         return rs.mSampler_CLAMP_LINEAR_MIP_LINEAR;
     }
@@ -158,13 +170,17 @@
      * @return Sampler
      */
     public static Sampler WRAP_NEAREST(RenderScript rs) {
-        if(rs.mSampler_WRAP_NEAREST == null) {
-            Builder b = new Builder(rs);
-            b.setMinification(Value.NEAREST);
-            b.setMagnification(Value.NEAREST);
-            b.setWrapS(Value.WRAP);
-            b.setWrapT(Value.WRAP);
-            rs.mSampler_WRAP_NEAREST = b.create();
+        if (rs.mSampler_WRAP_NEAREST == null) {
+            synchronized (rs) {
+                if (rs.mSampler_WRAP_NEAREST == null) {
+                    Builder b = new Builder(rs);
+                    b.setMinification(Value.NEAREST);
+                    b.setMagnification(Value.NEAREST);
+                    b.setWrapS(Value.WRAP);
+                    b.setWrapT(Value.WRAP);
+                    rs.mSampler_WRAP_NEAREST = b.create();
+                }
+            }
         }
         return rs.mSampler_WRAP_NEAREST;
     }
@@ -178,13 +194,17 @@
      * @return Sampler
      */
     public static Sampler WRAP_LINEAR(RenderScript rs) {
-        if(rs.mSampler_WRAP_LINEAR == null) {
-            Builder b = new Builder(rs);
-            b.setMinification(Value.LINEAR);
-            b.setMagnification(Value.LINEAR);
-            b.setWrapS(Value.WRAP);
-            b.setWrapT(Value.WRAP);
-            rs.mSampler_WRAP_LINEAR = b.create();
+        if (rs.mSampler_WRAP_LINEAR == null) {
+            synchronized (rs) {
+                if (rs.mSampler_WRAP_LINEAR == null) {
+                    Builder b = new Builder(rs);
+                    b.setMinification(Value.LINEAR);
+                    b.setMagnification(Value.LINEAR);
+                    b.setWrapS(Value.WRAP);
+                    b.setWrapT(Value.WRAP);
+                    rs.mSampler_WRAP_LINEAR = b.create();
+                }
+            }
         }
         return rs.mSampler_WRAP_LINEAR;
     }
@@ -198,13 +218,17 @@
      * @return Sampler
      */
     public static Sampler WRAP_LINEAR_MIP_LINEAR(RenderScript rs) {
-        if(rs.mSampler_WRAP_LINEAR_MIP_LINEAR == null) {
-            Builder b = new Builder(rs);
-            b.setMinification(Value.LINEAR_MIP_LINEAR);
-            b.setMagnification(Value.LINEAR);
-            b.setWrapS(Value.WRAP);
-            b.setWrapT(Value.WRAP);
-            rs.mSampler_WRAP_LINEAR_MIP_LINEAR = b.create();
+        if (rs.mSampler_WRAP_LINEAR_MIP_LINEAR == null) {
+            synchronized (rs) {
+                if (rs.mSampler_WRAP_LINEAR_MIP_LINEAR == null) {
+                    Builder b = new Builder(rs);
+                    b.setMinification(Value.LINEAR_MIP_LINEAR);
+                    b.setMagnification(Value.LINEAR);
+                    b.setWrapS(Value.WRAP);
+                    b.setWrapT(Value.WRAP);
+                    rs.mSampler_WRAP_LINEAR_MIP_LINEAR = b.create();
+                }
+            }
         }
         return rs.mSampler_WRAP_LINEAR_MIP_LINEAR;
     }
@@ -218,13 +242,17 @@
      * @return Sampler
      */
     public static Sampler MIRRORED_REPEAT_NEAREST(RenderScript rs) {
-        if(rs.mSampler_MIRRORED_REPEAT_NEAREST == null) {
-            Builder b = new Builder(rs);
-            b.setMinification(Value.NEAREST);
-            b.setMagnification(Value.NEAREST);
-            b.setWrapS(Value.MIRRORED_REPEAT);
-            b.setWrapT(Value.MIRRORED_REPEAT);
-            rs.mSampler_MIRRORED_REPEAT_NEAREST = b.create();
+        if (rs.mSampler_MIRRORED_REPEAT_NEAREST == null) {
+            synchronized (rs) {
+                if (rs.mSampler_MIRRORED_REPEAT_NEAREST == null) {
+                    Builder b = new Builder(rs);
+                    b.setMinification(Value.NEAREST);
+                    b.setMagnification(Value.NEAREST);
+                    b.setWrapS(Value.MIRRORED_REPEAT);
+                    b.setWrapT(Value.MIRRORED_REPEAT);
+                    rs.mSampler_MIRRORED_REPEAT_NEAREST = b.create();
+                }
+            }
         }
         return rs.mSampler_MIRRORED_REPEAT_NEAREST;
     }
@@ -238,13 +266,17 @@
      * @return Sampler
      */
     public static Sampler MIRRORED_REPEAT_LINEAR(RenderScript rs) {
-        if(rs.mSampler_MIRRORED_REPEAT_LINEAR == null) {
-            Builder b = new Builder(rs);
-            b.setMinification(Value.LINEAR);
-            b.setMagnification(Value.LINEAR);
-            b.setWrapS(Value.MIRRORED_REPEAT);
-            b.setWrapT(Value.MIRRORED_REPEAT);
-            rs.mSampler_MIRRORED_REPEAT_LINEAR = b.create();
+        if (rs.mSampler_MIRRORED_REPEAT_LINEAR == null) {
+            synchronized (rs) {
+                if (rs.mSampler_MIRRORED_REPEAT_LINEAR == null) {
+                    Builder b = new Builder(rs);
+                    b.setMinification(Value.LINEAR);
+                    b.setMagnification(Value.LINEAR);
+                    b.setWrapS(Value.MIRRORED_REPEAT);
+                    b.setWrapT(Value.MIRRORED_REPEAT);
+                    rs.mSampler_MIRRORED_REPEAT_LINEAR = b.create();
+                }
+            }
         }
         return rs.mSampler_MIRRORED_REPEAT_LINEAR;
     }
@@ -258,13 +290,17 @@
      * @return Sampler
      */
     public static Sampler MIRRORED_REPEAT_LINEAR_MIP_LINEAR(RenderScript rs) {
-        if(rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR == null) {
-            Builder b = new Builder(rs);
-            b.setMinification(Value.LINEAR_MIP_LINEAR);
-            b.setMagnification(Value.LINEAR);
-            b.setWrapS(Value.MIRRORED_REPEAT);
-            b.setWrapT(Value.MIRRORED_REPEAT);
-            rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR = b.create();
+        if (rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR == null) {
+            synchronized (rs) {
+                if (rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR == null) {
+                    Builder b = new Builder(rs);
+                    b.setMinification(Value.LINEAR_MIP_LINEAR);
+                    b.setMagnification(Value.LINEAR);
+                    b.setWrapS(Value.MIRRORED_REPEAT);
+                    b.setWrapT(Value.MIRRORED_REPEAT);
+                    rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR = b.create();
+                }
+            }
         }
         return rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR;
     }
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index d900b37..1b85016 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -60,7 +60,6 @@
 import android.os.Process;
 import android.os.RemoteCallbackList;
 import android.os.RemoteException;
-import android.os.ServiceManager;
 import android.os.SystemClock;
 import android.os.UserHandle;
 import android.os.UserManager;
@@ -92,7 +91,6 @@
 import com.android.internal.R;
 import com.android.internal.content.PackageMonitor;
 import com.android.internal.os.SomeArgs;
-import com.android.internal.statusbar.IStatusBarService;
 import com.android.server.LocalServices;
 
 import com.android.server.statusbar.StatusBarManagerInternal;
@@ -2298,11 +2296,16 @@
         public boolean bindLocked() {
             UserState userState = getUserStateLocked(mUserId);
             if (!mIsAutomation) {
-                if (mService == null && mContext.bindServiceAsUser(
-                        mIntent, this,
-                        Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE,
-                        new UserHandle(mUserId))) {
-                    userState.mBindingServices.add(mComponentName);
+                final long identity = Binder.clearCallingIdentity();
+                try {
+                    if (mService == null && mContext.bindServiceAsUser(
+                            mIntent, this,
+                            Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE,
+                            new UserHandle(mUserId))) {
+                        userState.mBindingServices.add(mComponentName);
+                    }
+                } finally {
+                    Binder.restoreCallingIdentity(identity);
                 }
             } else {
                 userState.mBindingServices.add(mComponentName);
@@ -3315,13 +3318,9 @@
         private void openRecents() {
             final long token = Binder.clearCallingIdentity();
 
-            IStatusBarService statusBarService = IStatusBarService.Stub.asInterface(
-                    ServiceManager.getService("statusbar"));
-            try {
-                statusBarService.toggleRecentApps();
-            } catch (RemoteException e) {
-                Slog.e(LOG_TAG, "Error toggling recent apps.");
-            }
+            StatusBarManagerInternal statusBarService = LocalServices.getService(
+                    StatusBarManagerInternal.class);
+            statusBarService.toggleRecentApps();
 
             Binder.restoreCallingIdentity(token);
         }
diff --git a/services/core/Android.mk b/services/core/Android.mk
index a248aa3..860f60a 100644
--- a/services/core/Android.mk
+++ b/services/core/Android.mk
@@ -13,6 +13,9 @@
     ../../../../system/netd/server/binder/android/net/INetd.aidl \
     ../../../../system/netd/server/binder/android/net/metrics/IDnsEventListener.aidl \
 
+LOCAL_AIDL_INCLUDES += \
+    system/netd/server/binder
+
 LOCAL_JAVA_LIBRARIES := services.net telephony-common
 LOCAL_STATIC_JAVA_LIBRARIES := tzdata_update
 
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 40d44b4..71506be 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -1419,6 +1419,15 @@
                 log("onRestrictBackgroundChanged(restrictBackground=" + restrictBackground + ")");
             }
         }
+
+        @Override
+        public void onRestrictBackgroundWhitelistChanged(int uid, boolean whitelisted) {
+            if (LOGD_RULES) {
+                // caller is NPMS, since we only register with them
+                log("onRestrictBackgroundWhitelistChanged(uid=" + uid + ", whitelisted="
+                        + whitelisted + ")");
+            }
+        }
     };
 
     /**
diff --git a/services/core/java/com/android/server/LockSettingsService.java b/services/core/java/com/android/server/LockSettingsService.java
index d61b561..6c05173 100644
--- a/services/core/java/com/android/server/LockSettingsService.java
+++ b/services/core/java/com/android/server/LockSettingsService.java
@@ -690,17 +690,17 @@
         final IProgressListener listener = new IProgressListener.Stub() {
             @Override
             public void onStarted(int id, Bundle extras) throws RemoteException {
-                // Ignored
+                Log.d(TAG, "unlockUser started");
             }
 
             @Override
             public void onProgress(int id, int progress, Bundle extras) throws RemoteException {
-                // Ignored
+                Log.d(TAG, "unlockUser progress " + progress);
             }
 
             @Override
             public void onFinished(int id, Bundle extras) throws RemoteException {
-                Log.d(TAG, "unlockUser finished!");
+                Log.d(TAG, "unlockUser finished");
                 latch.countDown();
             }
         };
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 5d83a6e..d7afc13 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -1945,6 +1945,9 @@
                     startPersistentApps(PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
                 }
                 installEncryptionUnawareProviders(userId);
+                if (msg.obj instanceof ProgressReporter) {
+                    ((ProgressReporter) msg.obj).finish();
+                }
                 break;
             }
             case SYSTEM_USER_CURRENT_MSG: {
@@ -20103,6 +20106,9 @@
                 if (DEBUG_OOM_ADJ) Slog.d(TAG_OOM_ADJ, "Keeping last mem factor!");
             }
         }
+        if (memFactor != mLastMemoryLevel) {
+            EventLogTags.writeAmMemFactor(memFactor, mLastMemoryLevel);
+        }
         mLastMemoryLevel = memFactor;
         mLastNumProcesses = mLruProcesses.size();
         boolean allChanged = mProcessStats.setMemFactorLocked(memFactor, !isSleeping(), now);
@@ -20979,6 +20985,36 @@
                 mStackSupervisor.setDockedStackMinimized(minimized);
             }
         }
+
+        @Override
+        public void killForegroundAppsForUser(int userHandle) {
+            synchronized (ActivityManagerService.this) {
+                final ArrayList<ProcessRecord> procs = new ArrayList<>();
+                final int NP = mProcessNames.getMap().size();
+                for (int ip = 0; ip < NP; ip++) {
+                    final SparseArray<ProcessRecord> apps = mProcessNames.getMap().valueAt(ip);
+                    final int NA = apps.size();
+                    for (int ia = 0; ia < NA; ia++) {
+                        final ProcessRecord app = apps.valueAt(ia);
+                        if (app.persistent) {
+                            // We don't kill persistent processes.
+                            continue;
+                        }
+                        if (app.removed) {
+                            procs.add(app);
+                        } else if (app.userId == userHandle && app.foregroundActivities) {
+                            app.removed = true;
+                            procs.add(app);
+                        }
+                    }
+                }
+
+                final int N = procs.size();
+                for (int i = 0; i < N; i++) {
+                    removeProcessLocked(procs.get(i), false, true, "kill all fg");
+                }
+            }
+        }
     }
 
     private final class SleepTokenImpl extends SleepToken {
diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java
index 6cd6ff4..2516f5d 100644
--- a/services/core/java/com/android/server/am/BatteryStatsService.java
+++ b/services/core/java/com/android/server/am/BatteryStatsService.java
@@ -58,8 +58,8 @@
 import com.android.internal.os.BatteryStatsHelper;
 import com.android.internal.os.BatteryStatsImpl;
 import com.android.internal.os.PowerProfile;
-import com.android.server.FgThread;
 import com.android.server.LocalServices;
+import com.android.server.ServiceThread;
 
 import java.io.File;
 import java.io.FileDescriptor;
@@ -176,7 +176,10 @@
     BatteryStatsService(File systemDir, Handler handler) {
         // Our handler here will be accessing the disk, use a different thread than
         // what the ActivityManagerService gave us (no I/O on that one!).
-        mHandler = new BatteryStatsHandler(FgThread.getHandler().getLooper());
+        final ServiceThread thread = new ServiceThread("batterystats-sync",
+                Process.THREAD_PRIORITY_DEFAULT, true);
+        thread.start();
+        mHandler = new BatteryStatsHandler(thread.getLooper());
 
         // BatteryStatsImpl expects the ActivityManagerService handler, so pass that one through.
         mStats = new BatteryStatsImpl(systemDir, handler, mHandler);
@@ -209,6 +212,9 @@
         synchronized (mStats) {
             mStats.shutdownLocked();
         }
+
+        // Shutdown the thread we made.
+        mHandler.getLooper().quit();
     }
     
     public static IBatteryStats getService() {
diff --git a/services/core/java/com/android/server/am/EventLogTags.logtags b/services/core/java/com/android/server/am/EventLogTags.logtags
index 2329b2f..2762df6 100644
--- a/services/core/java/com/android/server/am/EventLogTags.logtags
+++ b/services/core/java/com/android/server/am/EventLogTags.logtags
@@ -108,3 +108,7 @@
 30048 am_stop_activity (User|1|5),(Token|1|5),(Component Name|3)
 # The activity's onStop has been called.
 30049 am_on_stop_called (User|1|5),(Component Name|3),(Reason|3)
+
+# Report changing memory conditions (Values are ProcessStats.ADJ_MEM_FACTOR* constants)
+30050 am_mem_factor (Current|1|5),(Previous|1|5)
+
diff --git a/services/core/java/com/android/server/am/HealthStatsBatteryStatsWriter.java b/services/core/java/com/android/server/am/HealthStatsBatteryStatsWriter.java
index 9fb51c1..4a87941 100644
--- a/services/core/java/com/android/server/am/HealthStatsBatteryStatsWriter.java
+++ b/services/core/java/com/android/server/am/HealthStatsBatteryStatsWriter.java
@@ -35,12 +35,12 @@
 
 public class HealthStatsBatteryStatsWriter {
 
-    private final long mNowRealtime;
-    private final long mNowUptime;
+    private final long mNowRealtimeMs;
+    private final long mNowUptimeMs;
 
     public HealthStatsBatteryStatsWriter() {
-        mNowRealtime = SystemClock.elapsedRealtime();
-        mNowUptime = SystemClock.uptimeMillis();
+        mNowRealtimeMs = SystemClock.elapsedRealtime();
+        mNowUptimeMs = SystemClock.uptimeMillis();
     }
 
     /**
@@ -62,19 +62,20 @@
 
         // MEASUREMENT_REALTIME_BATTERY_MS
         uidWriter.addMeasurement(UidHealthStats.MEASUREMENT_REALTIME_BATTERY_MS,
-                bs.computeBatteryRealtime(mNowRealtime*1000, STATS_SINCE_UNPLUGGED)/1000);
+                bs.computeBatteryRealtime(mNowRealtimeMs*1000, STATS_SINCE_UNPLUGGED)/1000);
 
         // MEASUREMENT_UPTIME_BATTERY_MS
         uidWriter.addMeasurement(UidHealthStats.MEASUREMENT_UPTIME_BATTERY_MS,
-                bs.computeBatteryUptime(mNowUptime*1000, STATS_SINCE_UNPLUGGED)/1000);
+                bs.computeBatteryUptime(mNowUptimeMs*1000, STATS_SINCE_UNPLUGGED)/1000);
 
         // MEASUREMENT_REALTIME_SCREEN_OFF_BATTERY_MS
         uidWriter.addMeasurement(UidHealthStats.MEASUREMENT_REALTIME_SCREEN_OFF_BATTERY_MS,
-                bs.computeBatteryScreenOffRealtime(mNowRealtime*1000, STATS_SINCE_UNPLUGGED)/1000);
+                bs.computeBatteryScreenOffRealtime(
+                    mNowRealtimeMs*1000, STATS_SINCE_UNPLUGGED)/1000);
 
         // MEASUREMENT_UPTIME_SCREEN_OFF_BATTERY_MS
         uidWriter.addMeasurement(UidHealthStats.MEASUREMENT_UPTIME_SCREEN_OFF_BATTERY_MS,
-                bs.computeBatteryScreenOffUptime(mNowUptime*1000, STATS_SINCE_UNPLUGGED)/1000);
+                bs.computeBatteryScreenOffUptime(mNowUptimeMs*1000, STATS_SINCE_UNPLUGGED)/1000);
 
         //
         // Now on to the real per-uid stats...
@@ -214,20 +215,20 @@
 
         // MEASUREMENT_WIFI_RUNNING_MS
         uidWriter.addMeasurement(UidHealthStats.MEASUREMENT_WIFI_RUNNING_MS,
-                uid.getWifiRunningTime(mNowRealtime, STATS_SINCE_UNPLUGGED));
+                uid.getWifiRunningTime(mNowRealtimeMs*1000, STATS_SINCE_UNPLUGGED)/1000);
 
         // MEASUREMENT_WIFI_FULL_LOCK_MS
         uidWriter.addMeasurement(UidHealthStats.MEASUREMENT_WIFI_FULL_LOCK_MS,
-                uid.getFullWifiLockTime(mNowRealtime, STATS_SINCE_UNPLUGGED));
+                uid.getFullWifiLockTime(mNowRealtimeMs*1000, STATS_SINCE_UNPLUGGED)/1000);
 
         // TIMER_WIFI_SCAN
         uidWriter.addTimer(UidHealthStats.TIMER_WIFI_SCAN,
                 uid.getWifiScanCount(STATS_SINCE_UNPLUGGED),
-                uid.getWifiScanTime(mNowRealtime, STATS_SINCE_UNPLUGGED));
+                uid.getWifiScanTime(mNowRealtimeMs*1000, STATS_SINCE_UNPLUGGED)/1000);
 
         // MEASUREMENT_WIFI_MULTICAST_MS
         uidWriter.addMeasurement(UidHealthStats.MEASUREMENT_WIFI_MULTICAST_MS,
-                uid.getWifiMulticastTime(mNowRealtime, STATS_SINCE_UNPLUGGED));
+                uid.getWifiMulticastTime(mNowRealtimeMs*1000, STATS_SINCE_UNPLUGGED)/1000);
 
         // TIMER_AUDIO
         addTimer(uidWriter, UidHealthStats.TIMER_AUDIO, uid.getAudioTurnedOnTimer());
@@ -355,17 +356,17 @@
                 uid.getMobileRadioActiveCount(STATS_SINCE_UNPLUGGED),
                 uid.getMobileRadioActiveTime(STATS_SINCE_UNPLUGGED));
 
-        // MEASUREMENT_USER_CPU_TIME_US
-        uidWriter.addMeasurement(UidHealthStats.MEASUREMENT_USER_CPU_TIME_US,
-                uid.getUserCpuTimeUs(STATS_SINCE_UNPLUGGED));
+        // MEASUREMENT_USER_CPU_TIME_MS
+        uidWriter.addMeasurement(UidHealthStats.MEASUREMENT_USER_CPU_TIME_MS,
+                uid.getUserCpuTimeUs(STATS_SINCE_UNPLUGGED)/1000);
 
-        // MEASUREMENT_SYSTEM_CPU_TIME_US
-        uidWriter.addMeasurement(UidHealthStats.MEASUREMENT_SYSTEM_CPU_TIME_US,
-                uid.getSystemCpuTimeUs(STATS_SINCE_UNPLUGGED));
+        // MEASUREMENT_SYSTEM_CPU_TIME_MS
+        uidWriter.addMeasurement(UidHealthStats.MEASUREMENT_SYSTEM_CPU_TIME_MS,
+                uid.getSystemCpuTimeUs(STATS_SINCE_UNPLUGGED)/1000);
 
-        // MEASUREMENT_CPU_POWER_MAUS
-        uidWriter.addMeasurement(UidHealthStats.MEASUREMENT_CPU_POWER_MAUS,
-                uid.getCpuPowerMaUs(STATS_SINCE_UNPLUGGED));
+        // MEASUREMENT_CPU_POWER_MAMS
+        uidWriter.addMeasurement(UidHealthStats.MEASUREMENT_CPU_POWER_MAMS,
+                uid.getCpuPowerMaUs(STATS_SINCE_UNPLUGGED)/1000);
     }
 
     /**
@@ -457,7 +458,7 @@
     private void addTimer(HealthStatsWriter writer, int key, BatteryStats.Timer timer) {
         if (timer != null) {
             writer.addTimer(key, timer.getCountLocked(STATS_SINCE_UNPLUGGED),
-                    timer.getTotalTimeLocked(mNowRealtime, STATS_SINCE_UNPLUGGED));
+                    timer.getTotalTimeLocked(mNowRealtimeMs*1000, STATS_SINCE_UNPLUGGED) / 1000);
         }
     }
 
@@ -468,7 +469,7 @@
             BatteryStats.Timer timer) {
         if (timer != null) {
             writer.addTimers(key, name, new TimerStat(timer.getCountLocked(STATS_SINCE_UNPLUGGED),
-                    timer.getTotalTimeLocked(mNowRealtime, STATS_SINCE_UNPLUGGED)));
+                    timer.getTotalTimeLocked(mNowRealtimeMs*1000, STATS_SINCE_UNPLUGGED) / 1000));
         }
     }
 }
diff --git a/services/core/java/com/android/server/am/PreBootBroadcaster.java b/services/core/java/com/android/server/am/PreBootBroadcaster.java
index 0e192ea..1f3ccf5 100644
--- a/services/core/java/com/android/server/am/PreBootBroadcaster.java
+++ b/services/core/java/com/android/server/am/PreBootBroadcaster.java
@@ -78,9 +78,12 @@
         final ResolveInfo ri = mTargets.get(mIndex++);
         final ComponentName componentName = ri.activityInfo.getComponentName();
 
-        final CharSequence label = ri.activityInfo.loadLabel(mService.mContext.getPackageManager());
-        mProgress.setProgress(mIndex, mTargets.size(),
-                mService.mContext.getString(R.string.android_preparing_apk, label));
+        if (mProgress != null) {
+            final CharSequence label = ri.activityInfo
+                    .loadLabel(mService.mContext.getPackageManager());
+            mProgress.setProgress(mIndex, mTargets.size(),
+                    mService.mContext.getString(R.string.android_preparing_apk, label));
+        }
 
         Slog.i(TAG, "Pre-boot of " + componentName.toShortString() + " for user " + mUserId);
         EventLogTags.writeAmPreBoot(mUserId, componentName.getPackageName());
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index 4c050c4..75d49c3 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -101,6 +101,7 @@
  */
 final class UserController {
     private static final String TAG = TAG_WITH_CLASS_NAME ? "UserController" : TAG_AM;
+
     // Maximum number of users we allow to be running at a time.
     static final int MAX_RUNNING_USERS = 3;
 
@@ -279,7 +280,8 @@
                 uss.mUnlockProgress.setProgress(20);
 
                 // Dispatch unlocked to system services
-                mHandler.sendMessage(mHandler.obtainMessage(SYSTEM_USER_UNLOCK_MSG, userId, 0));
+                mHandler.obtainMessage(SYSTEM_USER_UNLOCK_MSG, userId, 0, uss.mUnlockProgress)
+                        .sendToTarget();
 
                 // Dispatch unlocked to external apps
                 final Intent unlockedIntent = new Intent(Intent.ACTION_USER_UNLOCKED);
@@ -309,8 +311,7 @@
                 // Send PRE_BOOT broadcasts if fingerprint changed
                 final UserInfo info = getUserInfo(userId);
                 if (!Objects.equals(info.lastLoggedInFingerprint, Build.FINGERPRINT)) {
-                    uss.mUnlockProgress.startSegment(80);
-                    new PreBootBroadcaster(mService, userId, uss.mUnlockProgress) {
+                    new PreBootBroadcaster(mService, userId, null) {
                         @Override
                         public void onFinished() {
                             finishUserUnlocked(uss);
@@ -328,14 +329,6 @@
      * {@link UserState#STATE_RUNNING_UNLOCKED}.
      */
     private void finishUserUnlocked(UserState uss) {
-        try {
-            finishUserUnlockedInternal(uss);
-        } finally {
-            uss.mUnlockProgress.finish();
-        }
-    }
-
-    private void finishUserUnlockedInternal(UserState uss) {
         final int userId = uss.mHandle.getIdentifier();
         synchronized (mService) {
             // Bail if we ended up with a stale user
diff --git a/services/core/java/com/android/server/fingerprint/AuthenticationClient.java b/services/core/java/com/android/server/fingerprint/AuthenticationClient.java
index d2f015f..10284bb 100644
--- a/services/core/java/com/android/server/fingerprint/AuthenticationClient.java
+++ b/services/core/java/com/android/server/fingerprint/AuthenticationClient.java
@@ -39,9 +39,9 @@
     public abstract void resetFailedAttempts();
 
     public AuthenticationClient(Context context, long halDeviceId, IBinder token,
-            IFingerprintServiceReceiver receiver, int userId, int groupId, long opId,
+            IFingerprintServiceReceiver receiver, int callingUserId, int groupId, long opId,
             boolean restricted, String owner) {
-        super(context, halDeviceId, token, receiver, userId, groupId, restricted, owner);
+        super(context, halDeviceId, token, receiver, callingUserId, groupId, restricted, owner);
         mOpId = opId;
     }
 
diff --git a/services/core/java/com/android/server/fingerprint/ClientMonitor.java b/services/core/java/com/android/server/fingerprint/ClientMonitor.java
index 90998ed..45b6d3e 100644
--- a/services/core/java/com/android/server/fingerprint/ClientMonitor.java
+++ b/services/core/java/com/android/server/fingerprint/ClientMonitor.java
@@ -38,7 +38,7 @@
     protected static final boolean DEBUG = FingerprintService.DEBUG;
     private IBinder mToken;
     private IFingerprintServiceReceiver mReceiver;
-    private int mUserId;
+    private int mCallingUserId;
     private int mGroupId;
     private boolean mIsRestricted; // True if client does not have MANAGE_FINGERPRINT permission
     private String mOwner;
@@ -50,20 +50,20 @@
      * @param halDeviceId the HAL device ID of the associated fingerprint hardware
      * @param token a unique token for the client
      * @param receiver recipient of related events (e.g. authentication)
-     * @param userId userId for the fingerprint set
+     * @param callingUserId user id of calling user
      * @param groupId groupId for the fingerprint set
      * @param restricted whether or not client has the {@link Manifest#MANAGE_FINGERPRINT}
      * permission
      * @param owner name of the client that owns this
      */
     public ClientMonitor(Context context, long halDeviceId, IBinder token,
-            IFingerprintServiceReceiver receiver, int userId, int groupId,boolean restricted,
+            IFingerprintServiceReceiver receiver, int callingUserId, int groupId,boolean restricted,
             String owner) {
         mContext = context;
         mHalDeviceId = halDeviceId;
         mToken = token;
         mReceiver = receiver;
-        mUserId = userId;
+        mCallingUserId = callingUserId;
         mGroupId = groupId;
         mIsRestricted = restricted;
         mOwner = owner;
@@ -197,8 +197,8 @@
         return mIsRestricted;
     }
 
-    public final int getUserId() {
-        return mUserId;
+    public final int getCallingUserId() {
+        return mCallingUserId;
     }
 
     public final int getGroupId() {
diff --git a/services/core/java/com/android/server/fingerprint/EnrollClient.java b/services/core/java/com/android/server/fingerprint/EnrollClient.java
index ce5b890..b636ce5 100644
--- a/services/core/java/com/android/server/fingerprint/EnrollClient.java
+++ b/services/core/java/com/android/server/fingerprint/EnrollClient.java
@@ -46,9 +46,12 @@
 
     @Override
     public boolean onEnrollResult(int fingerId, int groupId, int remaining) {
+        if (groupId != getGroupId()) {
+            Slog.w(TAG, "groupId != getGroupId(), groupId: " + groupId +
+                    " getGroupId():" + getGroupId());
+        }
         if (remaining == 0) {
-            FingerprintUtils.getInstance().addFingerprintForUser(getContext(), fingerId,
-                    getUserId());
+            FingerprintUtils.getInstance().addFingerprintForUser(getContext(), fingerId, groupId);
         }
         return sendEnrollResult(fingerId, groupId, remaining);
     }
diff --git a/services/core/java/com/android/server/fingerprint/EnumerateClient.java b/services/core/java/com/android/server/fingerprint/EnumerateClient.java
index b2e4099..e826fee 100644
--- a/services/core/java/com/android/server/fingerprint/EnumerateClient.java
+++ b/services/core/java/com/android/server/fingerprint/EnumerateClient.java
@@ -41,7 +41,7 @@
         try {
             final int result = daemon.enumerate();
             if (result != 0) {
-                Slog.w(TAG, "start enumerate for user " + getUserId()
+                Slog.w(TAG, "start enumerate for user " + getCallingUserId()
                     + " failed, result=" + result);
                 onError(FingerprintManager.FINGERPRINT_ERROR_HW_UNAVAILABLE);
                 return result;
diff --git a/services/core/java/com/android/server/fingerprint/FingerprintService.java b/services/core/java/com/android/server/fingerprint/FingerprintService.java
index c770620..fcf7bf5 100644
--- a/services/core/java/com/android/server/fingerprint/FingerprintService.java
+++ b/services/core/java/com/android/server/fingerprint/FingerprintService.java
@@ -356,7 +356,7 @@
         }
     }
 
-    void startRemove(IBinder token, int fingerId, int userId, int groupId,
+    void startRemove(IBinder token, int fingerId, int callingUserId, int groupId,
             IFingerprintServiceReceiver receiver, boolean restricted) {
         IFingerprintDaemon daemon = getFingerprintDaemon();
         if (daemon == null) {
@@ -364,7 +364,7 @@
             return;
         }
         RemovalClient client = new RemovalClient(getContext(), mHalDeviceId, token,
-                receiver, userId, groupId, fingerId, restricted, token.toString()) {
+                receiver, callingUserId, groupId, fingerId, restricted, token.toString()) {
             @Override
             public void notifyUserActivity() {
                 FingerprintService.this.userActivity();
@@ -372,8 +372,7 @@
 
             @Override
             public IFingerprintDaemon getFingerprintDaemon() {
-                FingerprintService.this.getFingerprintDaemon();
-                return null;
+                return FingerprintService.this.getFingerprintDaemon();
             }
         };
         startClient(client, true);
@@ -494,7 +493,7 @@
         }
     }
 
-    private void startAuthentication(IBinder token, long opId, int realUserId, int groupId,
+    private void startAuthentication(IBinder token, long opId, int callingUserId, int groupId,
                 IFingerprintServiceReceiver receiver, int flags, boolean restricted,
                 String opPackageName) {
         updateActiveGroup(groupId, opPackageName);
@@ -502,7 +501,7 @@
         if (DEBUG) Slog.v(TAG, "startAuthentication(" + opPackageName + ")");
 
         AuthenticationClient client = new AuthenticationClient(getContext(), mHalDeviceId, token,
-                receiver, realUserId, groupId, opId, restricted, opPackageName) {
+                receiver, callingUserId, groupId, opId, restricted, opPackageName) {
             @Override
             public boolean handleFailedAttempt() {
                 mFailedAttempts++;
@@ -541,13 +540,13 @@
         startClient(client, true /* initiatedByClient */);
     }
 
-    private void startEnrollment(IBinder token, byte [] cryptoToken, int userId, int groupId,
+    private void startEnrollment(IBinder token, byte [] cryptoToken, int callingUserId, int groupId,
             IFingerprintServiceReceiver receiver, int flags, boolean restricted,
             String opPackageName) {
         updateActiveGroup(groupId, opPackageName);
 
         EnrollClient client = new EnrollClient(getContext(), mHalDeviceId, token, receiver,
-                userId, groupId, cryptoToken, restricted, opPackageName) {
+                callingUserId, groupId, cryptoToken, restricted, opPackageName) {
 
             @Override
             public IFingerprintDaemon getFingerprintDaemon() {
@@ -687,9 +686,9 @@
             checkPermission(MANAGE_FINGERPRINT);
             final int limit =  mContext.getResources().getInteger(
                     com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);
-            final int callingUid = Binder.getCallingUid();
-            final int userId = UserHandle.getUserId(callingUid);
-            final int enrolled = FingerprintService.this.getEnrolledFingerprints(userId).size();
+            final int callingUserId = UserHandle.getCallingUserId();
+            final int enrolled = FingerprintService.this.
+                    getEnrolledFingerprints(callingUserId).size();
             if (enrolled >= limit) {
                 Slog.w(TAG, "Too many fingerprints registered");
                 return;
@@ -705,7 +704,7 @@
             mHandler.post(new Runnable() {
                 @Override
                 public void run() {
-                    startEnrollment(token, cryptoToken, userId, groupId, receiver, flags,
+                    startEnrollment(token, cryptoToken, callingUserId, groupId, receiver, flags,
                             restricted, opPackageName);
                 }
             });
@@ -735,7 +734,8 @@
         public void authenticate(final IBinder token, final long opId, final int groupId,
                 final IFingerprintServiceReceiver receiver, final int flags,
                 final String opPackageName) {
-            final int realUserId = Binder.getCallingUid();
+            final int callingUid = Binder.getCallingUid();
+            final int callingUserId = UserHandle.getCallingUserId();
             final int pid = Binder.getCallingPid();
             final boolean restricted = isRestricted();
             mHandler.post(new Runnable() {
@@ -743,11 +743,11 @@
                 public void run() {
                     MetricsLogger.histogram(mContext, "fingerprint_token", opId != 0L ? 1 : 0);
                     if (!canUseFingerprint(opPackageName, true /* foregroundOnly */,
-                            realUserId, pid)) {
+                            callingUid, pid)) {
                         if (DEBUG) Slog.v(TAG, "authenticate(): reject " + opPackageName);
                         return;
                     }
-                    startAuthentication(token, opId, realUserId, groupId, receiver,
+                    startAuthentication(token, opId, callingUserId, groupId, receiver,
                             flags, restricted, opPackageName);
                 }
             });
@@ -797,11 +797,11 @@
                 final IFingerprintServiceReceiver receiver) {
             checkPermission(MANAGE_FINGERPRINT); // TODO: Maybe have another permission
             final boolean restricted = isRestricted();
-            final int realUserId = Binder.getCallingUid();
+            final int callingUserId = UserHandle.getCallingUserId();
             mHandler.post(new Runnable() {
                 @Override
                 public void run() {
-                    startRemove(token, fingerId, realUserId, groupId, receiver, restricted);
+                    startRemove(token, fingerId, callingUserId, groupId, receiver, restricted);
                 }
             });
 
diff --git a/services/core/java/com/android/server/fingerprint/RemovalClient.java b/services/core/java/com/android/server/fingerprint/RemovalClient.java
index 69a96e1..ffa3c3f 100644
--- a/services/core/java/com/android/server/fingerprint/RemovalClient.java
+++ b/services/core/java/com/android/server/fingerprint/RemovalClient.java
@@ -45,7 +45,7 @@
         IFingerprintDaemon daemon = getFingerprintDaemon();
         // The fingerprint template ids will be removed when we get confirmation from the HAL
         try {
-            final int result = daemon.remove(mFingerId, getUserId());
+            final int result = daemon.remove(mFingerId, getGroupId());
             if (result != 0) {
                 Slog.w(TAG, "startRemove with id = " + mFingerId + " failed, result=" + result);
                 onError(FingerprintManager.FINGERPRINT_ERROR_HW_UNAVAILABLE);
diff --git a/services/core/java/com/android/server/input/PersistentDataStore.java b/services/core/java/com/android/server/input/PersistentDataStore.java
index e97aca8..f67e0fd 100644
--- a/services/core/java/com/android/server/input/PersistentDataStore.java
+++ b/services/core/java/com/android/server/input/PersistentDataStore.java
@@ -25,6 +25,7 @@
 import org.xmlpull.v1.XmlPullParserException;
 import org.xmlpull.v1.XmlSerializer;
 
+import android.annotation.Nullable;
 import android.view.Surface;
 import android.hardware.input.TouchCalibration;
 import android.text.TextUtils;
@@ -342,6 +343,7 @@
                 "x_ymix", "x_offset", "y_xmix", "y_scale", "y_offset" };
 
         private TouchCalibration[] mTouchCalibration = new TouchCalibration[4];
+        @Nullable
         private String mCurrentKeyboardLayout;
         private List<String> mUnassociatedKeyboardLayouts = new ArrayList<>();
         private ArrayMap<InputMethodSubtypeHandle, String> mKeyboardLayouts = new ArrayMap<>();
@@ -368,6 +370,7 @@
             }
         }
 
+        @Nullable
         public String getCurrentKeyboardLayout() {
             return mCurrentKeyboardLayout;
         }
@@ -443,7 +446,7 @@
 
         public boolean switchKeyboardLayout(InputMethodSubtypeHandle imeHandle) {
             final String layout = mKeyboardLayouts.get(imeHandle);
-            if (layout != null && !TextUtils.equals(mCurrentKeyboardLayout, layout)) {
+            if (!TextUtils.equals(mCurrentKeyboardLayout, layout)) {
                 mCurrentKeyboardLayout = layout;
                 return true;
             }
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index 3fb786b..433c056 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -1678,7 +1678,7 @@
         // Checks if app was added or removed to the blacklist.
         if ((oldPolicy == POLICY_NONE && policy == POLICY_REJECT_METERED_BACKGROUND)
                 || (oldPolicy == POLICY_REJECT_METERED_BACKGROUND && policy == POLICY_NONE)) {
-            mHandler.obtainMessage(MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED, uid, 0)
+            mHandler.obtainMessage(MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED, uid, 1, null)
                     .sendToTarget();
         }
     }
@@ -1970,10 +1970,9 @@
             // ...but always persists the whitelist request.
             writePolicyLocked();
         }
-        if (mRestrictBackground && !oldStatus && needFirewallRules) {
-            mHandler.obtainMessage(MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED, uid, 0)
-                    .sendToTarget();
-        }
+        int changed = (mRestrictBackground && !oldStatus && needFirewallRules) ? 1 : 0;
+        mHandler.obtainMessage(MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED, uid, changed,
+                Boolean.TRUE).sendToTarget();
     }
 
     @Override
@@ -1983,10 +1982,8 @@
         synchronized (mRulesLock) {
             changed = removeRestrictBackgroundWhitelistedUidLocked(uid, false, true);
         }
-        if (changed) {
-            mHandler.obtainMessage(MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED, uid, 0)
-                    .sendToTarget();
-        }
+        mHandler.obtainMessage(MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED, uid, changed ? 1 : 0,
+                Boolean.FALSE).sendToTarget();
     }
 
     /**
@@ -2924,10 +2921,40 @@
                     return true;
                 }
                 case MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED: {
+                    // MSG_RESTRICT_BACKGROUND_WHITELIST_CHANGED can be called in 2 occasions:
+                    // - when an app is whitelisted
+                    // - when an app is blacklisted
+                    //
+                    // Whether the internal listeners (INetworkPolicyListener implementations) or
+                    // app broadcast receivers are notified depend on the following rules:
+                    //
+                    // - App receivers are only notified when the app status changed (msg.arg2 = 1)
+                    // - Listeners are only notified when app was whitelisted (msg.obj is not null),
+                    //   since blacklist notifications are handled through MSG_RULES_CHANGED).
                     final int uid = msg.arg1;
+                    final boolean changed = msg.arg2 == 1;
+                    final Boolean whitelisted = (Boolean) msg.obj;
+
+                    if (whitelisted != null) {
+                        final int length = mListeners.beginBroadcast();
+                        for (int i = 0; i < length; i++) {
+                            // First notify internal listeners...
+                            final INetworkPolicyListener listener = mListeners.getBroadcastItem(i);
+                            if (listener != null) {
+                                try {
+                                    listener.onRestrictBackgroundWhitelistChanged(uid,
+                                            whitelisted.booleanValue());
+                                } catch (RemoteException e) {
+                                }
+                            }
+                        }
+                        mListeners.finishBroadcast();
+                    }
+
                     final PackageManager pm = mContext.getPackageManager();
                     final String[] packages = pm.getPackagesForUid(uid);
-                    if (packages != null) {
+                    if (changed && packages != null) {
+                        // ...then notify apps listening to ACTION_RESTRICT_BACKGROUND_CHANGED
                         final int userId = UserHandle.getUserId(uid);
                         for (String packageName : packages) {
                             final Intent intent = new Intent(
@@ -2936,8 +2963,6 @@
                             intent.setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
                             mContext.sendBroadcastAsUser(intent, UserHandle.of(userId));
                         }
-                    } else {
-                        Slog.w(TAG, "no packages for uid " + uid);
                     }
                     return true;
                 }
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 43250ba..0633625 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -216,6 +216,7 @@
 import android.util.SparseBooleanArray;
 import android.util.SparseIntArray;
 import android.util.Xml;
+import android.util.jar.StrictJarFile;
 import android.view.Display;
 
 import com.android.internal.R;
@@ -7643,6 +7644,52 @@
         }
     }
 
+    /**
+     * Returns {@code true} if the given file contains code. Otherwise {@code false}.
+     */
+    private static boolean apkHasCode(String fileName) {
+        StrictJarFile jarFile = null;
+        try {
+            jarFile = new StrictJarFile(fileName,
+                    false /*verify*/, false /*signatureSchemeRollbackProtectionsEnforced*/);
+            return jarFile.findEntry("classes.dex") != null;
+        } catch (IOException ignore) {
+        } finally {
+            try {
+                jarFile.close();
+            } catch (IOException ignore) {}
+        }
+        return false;
+    }
+
+    /**
+     * Enforces code policy for the package. This ensures that if an APK has
+     * declared hasCode="true" in its manifest that the APK actually contains
+     * code.
+     *
+     * @throws PackageManagerException If bytecode could not be found when it should exist
+     */
+    private static void enforceCodePolicy(PackageParser.Package pkg)
+            throws PackageManagerException {
+        final boolean shouldHaveCode =
+                (pkg.applicationInfo.flags & ApplicationInfo.FLAG_HAS_CODE) != 0;
+        if (shouldHaveCode && !apkHasCode(pkg.baseCodePath)) {
+            throw new PackageManagerException(INSTALL_FAILED_INVALID_APK,
+                    "Package " + pkg.baseCodePath + " code is missing");
+        }
+
+        if (!ArrayUtils.isEmpty(pkg.splitCodePaths)) {
+            for (int i = 0; i < pkg.splitCodePaths.length; i++) {
+                final boolean splitShouldHaveCode =
+                        (pkg.splitFlags[i] & ApplicationInfo.FLAG_HAS_CODE) != 0;
+                if (splitShouldHaveCode && !apkHasCode(pkg.splitCodePaths[i])) {
+                    throw new PackageManagerException(INSTALL_FAILED_INVALID_APK,
+                            "Package " + pkg.splitCodePaths[i] + " code is missing");
+                }
+            }
+        }
+    }
+
     private PackageParser.Package scanPackageDirtyLI(PackageParser.Package pkg,
             final int policyFlags, final int scanFlags, long currentTime, UserHandle user)
             throws PackageManagerException {
@@ -7687,6 +7734,10 @@
             pkg.applicationInfo.privateFlags |= ApplicationInfo.PRIVATE_FLAG_PRIVILEGED;
         }
 
+        if ((policyFlags & PackageParser.PARSE_ENFORCE_CODE) != 0) {
+            enforceCodePolicy(pkg);
+        }
+
         if (mCustomResolverComponentName != null &&
                 mCustomResolverComponentName.getPackageName().equals(pkg.packageName)) {
             setUpCustomResolverActivity(pkg);
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 42f7166..93e4d31 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -667,6 +667,8 @@
             long identity = Binder.clearCallingIdentity();
             try {
                 if (enableQuietMode) {
+                    LocalServices.getService(ActivityManagerInternal.class)
+                            .killForegroundAppsForUser(userHandle);
                     ActivityManagerNative.getDefault().stopUser(userHandle, /* force */true, null);
                 } else {
                     ActivityManagerNative.getDefault().startUserInBackground(userHandle);
@@ -2359,11 +2361,13 @@
     public void setApplicationRestrictions(String packageName, Bundle restrictions,
             int userId) {
         checkSystemOrRoot("set application restrictions");
+        if (restrictions != null) {
+            restrictions.setDefusable(true);
+        }
         synchronized (mPackagesLock) {
             if (restrictions == null || restrictions.isEmpty()) {
                 cleanAppRestrictionsForPackage(packageName, userId);
             } else {
-                restrictions.setDefusable(true);
                 // Write the restrictions to XML
                 writeApplicationRestrictionsLP(packageName, restrictions, userId);
             }
diff --git a/services/core/java/com/android/server/policy/BarController.java b/services/core/java/com/android/server/policy/BarController.java
index 0c80ffa..5878709 100644
--- a/services/core/java/com/android/server/policy/BarController.java
+++ b/services/core/java/com/android/server/policy/BarController.java
@@ -18,15 +18,14 @@
 
 import android.app.StatusBarManager;
 import android.os.Handler;
-import android.os.RemoteException;
-import android.os.ServiceManager;
 import android.os.SystemClock;
 import android.util.Slog;
 import android.view.View;
 import android.view.WindowManager;
 import android.view.WindowManagerPolicy.WindowState;
 
-import com.android.internal.statusbar.IStatusBarService;
+import com.android.server.LocalServices;
+import com.android.server.statusbar.StatusBarManagerInternal;
 
 import java.io.PrintWriter;
 
@@ -52,7 +51,7 @@
     private final int mTranslucentWmFlag;
     protected final Handler mHandler;
     private final Object mServiceAquireLock = new Object();
-    protected IStatusBarService mStatusBarService;
+    protected StatusBarManagerInternal mStatusBarInternal;
 
     private WindowState mWin;
     private int mState = StatusBarManager.WINDOW_STATE_SHOWING;
@@ -182,15 +181,9 @@
             mHandler.post(new Runnable() {
                 @Override
                 public void run() {
-                    try {
-                        IStatusBarService statusbar = getStatusBarService();
-                        if (statusbar != null) {
-                            statusbar.setWindowState(mStatusBarManagerId, state);
-                        }
-                    } catch (RemoteException e) {
-                        if (DEBUG) Slog.w(mTag, "Error posting window state", e);
-                        // re-acquire status bar service next time it is needed.
-                        mStatusBarService = null;
+                    StatusBarManagerInternal statusbar = getStatusBarInternal();
+                    if (statusbar != null) {
+                        statusbar.setWindowState(mStatusBarManagerId, state);
                     }
                 }
             });
@@ -276,13 +269,12 @@
         }
     }
 
-    protected IStatusBarService getStatusBarService() {
+    protected StatusBarManagerInternal getStatusBarInternal() {
         synchronized (mServiceAquireLock) {
-            if (mStatusBarService == null) {
-                mStatusBarService = IStatusBarService.Stub.asInterface(
-                        ServiceManager.getService("statusbar"));
+            if (mStatusBarInternal == null) {
+                mStatusBarInternal = LocalServices.getService(StatusBarManagerInternal.class);
             }
-            return mStatusBarService;
+            return mStatusBarInternal;
         }
     }
 
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 1686f14..007190d 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -1467,14 +1467,12 @@
 
     private void requestTvPictureInPictureInternal() {
         try {
-            IStatusBarService statusbar = getStatusBarService();
+            StatusBarManagerInternal statusbar = getStatusBarManagerInternal();
             if (statusbar != null) {
                 statusbar.requestTvPictureInPicture();
             }
-        } catch (RemoteException|IllegalArgumentException e) {
+        } catch (IllegalArgumentException e) {
             Slog.e(TAG, "Cannot handle picture-in-picture key", e);
-            // re-acquire status bar service next time it is needed.
-            mStatusBarService = null;
         }
     }
 
@@ -3562,21 +3560,15 @@
             ((SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE))
                     .launchLegacyAssist(hint, UserHandle.myUserId(), args);
         } else {
-            try {
-                if (hint != null) {
-                    if (args == null) {
-                        args = new Bundle();
-                    }
-                    args.putBoolean(hint, true);
+            if (hint != null) {
+                if (args == null) {
+                    args = new Bundle();
                 }
-                IStatusBarService statusbar = getStatusBarService();
-                if (statusbar != null) {
-                    statusbar.startAssist(args);
-                }
-            } catch (RemoteException e) {
-                Slog.e(TAG, "RemoteException when starting assist", e);
-                // re-acquire status bar service next time it is needed.
-                mStatusBarService = null;
+                args.putBoolean(hint, true);
+            }
+            StatusBarManagerInternal statusbar = getStatusBarManagerInternal();
+            if (statusbar != null) {
+                statusbar.startAssist(args);
             }
         }
     }
@@ -3598,45 +3590,27 @@
 
     private void preloadRecentApps() {
         mPreloadedRecentApps = true;
-        try {
-            IStatusBarService statusbar = getStatusBarService();
-            if (statusbar != null) {
-                statusbar.preloadRecentApps();
-            }
-        } catch (RemoteException e) {
-            Slog.e(TAG, "RemoteException when preloading recent apps", e);
-            // re-acquire status bar service next time it is needed.
-            mStatusBarService = null;
+        StatusBarManagerInternal statusbar = getStatusBarManagerInternal();
+        if (statusbar != null) {
+            statusbar.preloadRecentApps();
         }
     }
 
     private void cancelPreloadRecentApps() {
         if (mPreloadedRecentApps) {
             mPreloadedRecentApps = false;
-            try {
-                IStatusBarService statusbar = getStatusBarService();
-                if (statusbar != null) {
-                    statusbar.cancelPreloadRecentApps();
-                }
-            } catch (RemoteException e) {
-                Slog.e(TAG, "RemoteException when cancelling recent apps preload", e);
-                // re-acquire status bar service next time it is needed.
-                mStatusBarService = null;
+            StatusBarManagerInternal statusbar = getStatusBarManagerInternal();
+            if (statusbar != null) {
+                statusbar.cancelPreloadRecentApps();
             }
         }
     }
 
     private void toggleRecentApps() {
         mPreloadedRecentApps = false; // preloading no longer needs to be canceled
-        try {
-            IStatusBarService statusbar = getStatusBarService();
-            if (statusbar != null) {
-                statusbar.toggleRecentApps();
-            }
-        } catch (RemoteException e) {
-            Slog.e(TAG, "RemoteException when toggling recent apps", e);
-            // re-acquire status bar service next time it is needed.
-            mStatusBarService = null;
+        StatusBarManagerInternal statusbar = getStatusBarManagerInternal();
+        if (statusbar != null) {
+            statusbar.toggleRecentApps();
         }
     }
 
@@ -3648,40 +3622,24 @@
 
     private void showRecentApps(boolean triggeredFromAltTab, boolean fromHome) {
         mPreloadedRecentApps = false; // preloading no longer needs to be canceled
-        try {
-            IStatusBarService statusbar = getStatusBarService();
-            if (statusbar != null) {
-                statusbar.showRecentApps(triggeredFromAltTab, fromHome);
-            }
-        } catch (RemoteException e) {
-            Slog.e(TAG, "RemoteException when showing recent apps", e);
-            // re-acquire status bar service next time it is needed.
-            mStatusBarService = null;
+        StatusBarManagerInternal statusbar = getStatusBarManagerInternal();
+        if (statusbar != null) {
+            statusbar.showRecentApps(triggeredFromAltTab, fromHome);
         }
     }
 
     private void toggleKeyboardShortcutsMenu(int deviceId) {
-        try {
-            IStatusBarService statusbar = getStatusBarService();
-            if (statusbar != null) {
-                statusbar.toggleKeyboardShortcutsMenu(deviceId);
-            }
-        } catch (RemoteException e) {
-            Slog.e(TAG, "RemoteException when showing keyboard shortcuts menu", e);
+        StatusBarManagerInternal statusbar = getStatusBarManagerInternal();
+        if (statusbar != null) {
+            statusbar.toggleKeyboardShortcutsMenu(deviceId);
         }
     }
 
     private void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHome) {
         mPreloadedRecentApps = false; // preloading no longer needs to be canceled
-        try {
-            IStatusBarService statusbar = getStatusBarService();
-            if (statusbar != null) {
-                statusbar.hideRecentApps(triggeredFromAltTab, triggeredFromHome);
-            }
-        } catch (RemoteException e) {
-            Slog.e(TAG, "RemoteException when closing recent apps", e);
-            // re-acquire status bar service next time it is needed.
-            mStatusBarService = null;
+        StatusBarManagerInternal statusbar = getStatusBarManagerInternal();
+        if (statusbar != null) {
+            statusbar.hideRecentApps(triggeredFromAltTab, triggeredFromHome);
         }
     }
 
@@ -7483,13 +7441,9 @@
         if (mKeyguardDelegate != null) {
             mKeyguardDelegate.setCurrentUser(newUserId);
         }
-        IStatusBarService statusBar = getStatusBarService();
+        StatusBarManagerInternal statusBar = getStatusBarManagerInternal();
         if (statusBar != null) {
-            try {
-                statusBar.setCurrentUser(newUserId);
-            } catch (RemoteException e) {
-                // oh well
-            }
+            statusBar.setCurrentUser(newUserId);
         }
         setLastInputMethodWindowLw(null, null);
     }
diff --git a/services/core/java/com/android/server/policy/StatusBarController.java b/services/core/java/com/android/server/policy/StatusBarController.java
index 86d0468..245518c 100644
--- a/services/core/java/com/android/server/policy/StatusBarController.java
+++ b/services/core/java/com/android/server/policy/StatusBarController.java
@@ -18,9 +18,7 @@
 
 import android.app.StatusBarManager;
 import android.os.IBinder;
-import android.os.RemoteException;
 import android.os.SystemClock;
-import android.util.Slog;
 import android.view.View;
 import android.view.WindowManager;
 import android.view.animation.Animation;
@@ -28,7 +26,6 @@
 import android.view.animation.Interpolator;
 import android.view.animation.TranslateAnimation;
 
-import com.android.internal.statusbar.IStatusBarService;
 import com.android.server.LocalServices;
 import com.android.server.statusbar.StatusBarManagerInternal;
 
@@ -49,15 +46,9 @@
             mHandler.post(new Runnable() {
                 @Override
                 public void run() {
-                    try {
-                        IStatusBarService statusbar = getStatusBarService();
-                        if (statusbar != null) {
-                            statusbar.appTransitionPending();
-                        }
-                    } catch (RemoteException e) {
-                        Slog.e(mTag, "RemoteException when app transition is pending", e);
-                        // re-acquire status bar service next time it is needed.
-                        mStatusBarService = null;
+                    StatusBarManagerInternal statusbar = getStatusBarInternal();
+                    if (statusbar != null) {
+                        statusbar.appTransitionPending();
                     }
                 }
             });
@@ -69,19 +60,13 @@
             mHandler.post(new Runnable() {
                 @Override
                 public void run() {
-                    try {
-                        IStatusBarService statusbar = getStatusBarService();
-                        if (statusbar != null) {
-                            long startTime = calculateStatusBarTransitionStartTime(openAnimation,
-                                    closeAnimation);
-                            long duration = closeAnimation != null || openAnimation != null
-                                    ? TRANSITION_DURATION : 0;
-                            statusbar.appTransitionStarting(startTime, duration);
-                        }
-                    } catch (RemoteException e) {
-                        Slog.e(mTag, "RemoteException when app transition is starting", e);
-                        // re-acquire status bar service next time it is needed.
-                        mStatusBarService = null;
+                    StatusBarManagerInternal statusbar = getStatusBarInternal();
+                    if (statusbar != null) {
+                        long startTime = calculateStatusBarTransitionStartTime(openAnimation,
+                                closeAnimation);
+                        long duration = closeAnimation != null || openAnimation != null
+                                ? TRANSITION_DURATION : 0;
+                        statusbar.appTransitionStarting(startTime, duration);
                     }
                 }
             });
@@ -92,15 +77,9 @@
             mHandler.post(new Runnable() {
                 @Override
                 public void run() {
-                    try {
-                        IStatusBarService statusbar = getStatusBarService();
-                        if (statusbar != null) {
-                            statusbar.appTransitionCancelled();
-                        }
-                    } catch (RemoteException e) {
-                        Slog.e(mTag, "RemoteException when app transition is cancelled", e);
-                        // re-acquire status bar service next time it is needed.
-                        mStatusBarService = null;
+                    StatusBarManagerInternal statusbar = getStatusBarInternal();
+                    if (statusbar != null) {
+                        statusbar.appTransitionCancelled();
                     }
                 }
             });
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
index 95923fe..38a3d01 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
@@ -28,6 +28,50 @@
     void notificationLightOff();
     void showScreenPinningRequest(int taskId);
     void showAssistDisclosure();
+
+    void preloadRecentApps();
+
+    void cancelPreloadRecentApps();
+
+    void showRecentApps(boolean triggeredFromAltTab, boolean fromHome);
+
+    void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey);
+
+    void toggleKeyboardShortcutsMenu(int deviceId);
+
+    /**
+     * Request picture-in-picture.
+     *
+     * <p>
+     * This is called when an user presses picture-in-picture key or equivalent.
+     * TV device may start picture-in-picture from foreground activity if there's none.
+     * Picture-in-picture overlay menu will be shown instead otherwise.
+     */
+    void requestTvPictureInPicture();
+
+    void setWindowState(int window, int state);
+
+    /**
+     * Notifies the status bar that an app transition is pending to delay applying some flags with
+     * visual impact until {@link #appTransitionReady} is called.
+     */
+    void appTransitionPending();
+
+    /**
+     * Notifies the status bar that a pending app transition has been cancelled.
+     */
+    void appTransitionCancelled();
+
+    /**
+     * Notifies the status bar that an app transition is now being executed.
+     *
+     * @param statusBarAnimationsStartTime the desired start time for all visual animations in the
+     *        status bar caused by this app transition in uptime millis
+     * @param statusBarAnimationsDuration the duration for all visual animations in the status
+     *        bar caused by this app transition in millis
+     */
+    void appTransitionStarting(long statusBarAnimationsStartTime, long statusBarAnimationsDuration);
+
     void startAssist(Bundle args);
     void onCameraLaunchGestureDetected(int source);
     void topAppWindowChanged(boolean menuVisible);
@@ -35,4 +79,8 @@
             Rect fullscreenBounds, Rect dockedBounds, String cause);
     void toggleSplitScreen();
     void appTransitionFinished();
+
+    void toggleRecentApps();
+
+    void setCurrentUser(int newUserId);
 }
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
index 981b75a..9020677 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
@@ -223,6 +223,114 @@
                 } catch (RemoteException ex) {}
             }
         }
+
+        @Override
+        public void toggleRecentApps() {
+            if (mBar != null) {
+                try {
+                    mBar.toggleRecentApps();
+                } catch (RemoteException ex) {}
+            }
+        }
+
+        @Override
+        public void setCurrentUser(int newUserId) {
+            if (SPEW) Slog.d(TAG, "Setting current user to user " + newUserId);
+            mCurrentUserId = newUserId;
+        }
+
+
+        @Override
+        public void preloadRecentApps() {
+            if (mBar != null) {
+                try {
+                    mBar.preloadRecentApps();
+                } catch (RemoteException ex) {}
+            }
+        }
+
+        @Override
+        public void cancelPreloadRecentApps() {
+            if (mBar != null) {
+                try {
+                    mBar.cancelPreloadRecentApps();
+                } catch (RemoteException ex) {}
+            }
+        }
+
+        @Override
+        public void showRecentApps(boolean triggeredFromAltTab, boolean fromHome) {
+            if (mBar != null) {
+                try {
+                    mBar.showRecentApps(triggeredFromAltTab, fromHome);
+                } catch (RemoteException ex) {}
+            }
+        }
+
+        @Override
+        public void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) {
+            if (mBar != null) {
+                try {
+                    mBar.hideRecentApps(triggeredFromAltTab, triggeredFromHomeKey);
+                } catch (RemoteException ex) {}
+            }
+        }
+
+        @Override
+        public void toggleKeyboardShortcutsMenu(int deviceId) {
+            if (mBar != null) {
+                try {
+                    mBar.toggleKeyboardShortcutsMenu(deviceId);
+                } catch (RemoteException ex) {}
+            }
+        }
+
+        @Override
+        public void requestTvPictureInPicture() {
+            if (mBar != null) {
+                try {
+                    mBar.requestTvPictureInPicture();
+                } catch (RemoteException ex) {}
+            }
+        }
+
+        @Override
+        public void setWindowState(int window, int state) {
+            if (mBar != null) {
+                try {
+                    mBar.setWindowState(window, state);
+                } catch (RemoteException ex) {}
+            }
+        }
+
+        @Override
+        public void appTransitionPending() {
+            if (mBar != null) {
+                try {
+                    mBar.appTransitionPending();
+                } catch (RemoteException ex) {}
+            }
+        }
+
+        @Override
+        public void appTransitionCancelled() {
+            if (mBar != null) {
+                try {
+                    mBar.appTransitionCancelled();
+                } catch (RemoteException ex) {}
+            }
+        }
+
+        @Override
+        public void appTransitionStarting(long statusBarAnimationsStartTime,
+                long statusBarAnimationsDuration) {
+            if (mBar != null) {
+                try {
+                    mBar.appTransitionStarting(
+                            statusBarAnimationsStartTime, statusBarAnimationsDuration);
+                } catch (RemoteException ex) {}
+            }
+        }
     };
 
     // ================================================================================
@@ -527,122 +635,6 @@
         }
     }
 
-    @Override
-    public void toggleRecentApps() {
-        if (mBar != null) {
-            try {
-                mBar.toggleRecentApps();
-            } catch (RemoteException ex) {}
-        }
-    }
-
-    @Override
-    public void preloadRecentApps() {
-        if (mBar != null) {
-            try {
-                mBar.preloadRecentApps();
-            } catch (RemoteException ex) {}
-        }
-    }
-
-    @Override
-    public void cancelPreloadRecentApps() {
-        if (mBar != null) {
-            try {
-                mBar.cancelPreloadRecentApps();
-            } catch (RemoteException ex) {}
-        }
-    }
-
-    @Override
-    public void showRecentApps(boolean triggeredFromAltTab, boolean fromHome) {
-        if (mBar != null) {
-            try {
-                mBar.showRecentApps(triggeredFromAltTab, fromHome);
-            } catch (RemoteException ex) {}
-        }
-    }
-
-    @Override
-    public void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) {
-        if (mBar != null) {
-            try {
-                mBar.hideRecentApps(triggeredFromAltTab, triggeredFromHomeKey);
-            } catch (RemoteException ex) {}
-        }
-    }
-
-    @Override
-    public void toggleKeyboardShortcutsMenu(int deviceId) {
-        if (mBar != null) {
-            try {
-                mBar.toggleKeyboardShortcutsMenu(deviceId);
-            } catch (RemoteException ex) {}
-        }
-    }
-
-    @Override
-    public void requestTvPictureInPicture() {
-        if (mBar != null) {
-            try {
-                mBar.requestTvPictureInPicture();
-            } catch (RemoteException ex) {}
-        }
-    }
-
-    @Override
-    public void setCurrentUser(int newUserId) {
-        if (SPEW) Slog.d(TAG, "Setting current user to user " + newUserId);
-        mCurrentUserId = newUserId;
-    }
-
-    @Override
-    public void setWindowState(int window, int state) {
-        if (mBar != null) {
-            try {
-                mBar.setWindowState(window, state);
-            } catch (RemoteException ex) {}
-        }
-    }
-
-    @Override
-    public void appTransitionPending() {
-        if (mBar != null) {
-            try {
-                mBar.appTransitionPending();
-            } catch (RemoteException ex) {}
-        }
-    }
-
-    @Override
-    public void appTransitionCancelled() {
-        if (mBar != null) {
-            try {
-                mBar.appTransitionCancelled();
-            } catch (RemoteException ex) {}
-        }
-    }
-
-    @Override
-    public void appTransitionStarting(long statusBarAnimationsStartTime,
-            long statusBarAnimationsDuration) {
-        if (mBar != null) {
-            try {
-                mBar.appTransitionStarting(
-                        statusBarAnimationsStartTime, statusBarAnimationsDuration);
-            } catch (RemoteException ex) {}
-        }
-    }
-
-    @Override
-    public void startAssist(Bundle args) {
-        if (mBar != null) {
-            try {
-                mBar.startAssist(args);
-            } catch (RemoteException ex) {}
-        }
-    }
-
     private void enforceStatusBarOrShell() {
         if (Binder.getCallingUid() == Process.SHELL_UID) {
             return;
diff --git a/services/core/java/com/android/server/wm/BoundsAnimationController.java b/services/core/java/com/android/server/wm/BoundsAnimationController.java
index b7d6062..eacdd81 100644
--- a/services/core/java/com/android/server/wm/BoundsAnimationController.java
+++ b/services/core/java/com/android/server/wm/BoundsAnimationController.java
@@ -129,13 +129,16 @@
         public void onAnimationStart(Animator animation) {
             if (DEBUG) Slog.d(TAG, "onAnimationStart: mTarget=" + mTarget
                     + " mReplacement=" + mReplacement);
-            if (animatingToLargerSize()) {
-                mTarget.setPinnedStackSize(mFrom, mTo);
-            }
-
             if (!mReplacement) {
                 mTarget.onAnimationStart();
             }
+
+            // Ensure that we have prepared the target for animation before
+            // we trigger any size changes, so it can swap surfaces
+            // in to appropriate modes, or do as it wishes otherwise.
+            if (animatingToLargerSize()) {
+                mTarget.setPinnedStackSize(mFrom, mTo);
+            }
         }
 
         @Override
diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java
index 0039c0a..b90d0d1 100644
--- a/services/core/java/com/android/server/wm/DockedStackDividerController.java
+++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java
@@ -663,4 +663,8 @@
     public String toShortString() {
         return TAG;
     }
-}
\ No newline at end of file
+
+    WindowState getWindow() {
+        return mWindow;
+    }
+}
diff --git a/services/core/java/com/android/server/wm/DragState.java b/services/core/java/com/android/server/wm/DragState.java
index aace5e7..ffe0336 100644
--- a/services/core/java/com/android/server/wm/DragState.java
+++ b/services/core/java/com/android/server/wm/DragState.java
@@ -420,12 +420,7 @@
     void notifyLocationLw(float x, float y) {
         // Tell the affected window
         WindowState touchedWin = mDisplayContent.getTouchableWinAtPointLocked(x, y);
-        if (touchedWin == null) {
-            if (DEBUG_DRAG) Slog.d(TAG_WM, "No touched win at x=" + x + " y=" + y);
-            return;
-        }
-
-        if (!isWindowNotified(touchedWin)) {
+        if (touchedWin != null && !isWindowNotified(touchedWin)) {
             // The drag point is over a window which was not notified about a drag start.
             // Pretend it's over empty space.
             touchedWin = null;
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 46a8dff..4f49eed 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -600,7 +600,8 @@
                     //
                     // Anyway we don't need to synchronize position and content updates for these
                     // windows since they aren't at the base layer and could be moved around anyway.
-                    if (!win.computeDragResizing() && win.mAttrs.type == TYPE_BASE_APPLICATION) {
+                    if (!win.computeDragResizing() && win.mAttrs.type == TYPE_BASE_APPLICATION &&
+                            !mStack.getBoundsAnimating()) {
                         win.mResizedWhileNotDragResizing = true;
                     }
                 }
diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java
index 872bc6d..1fd2b1f 100644
--- a/services/core/java/com/android/server/wm/TaskStack.java
+++ b/services/core/java/com/android/server/wm/TaskStack.java
@@ -42,6 +42,7 @@
 import android.view.DisplayInfo;
 import android.view.Surface;
 import android.view.animation.PathInterpolator;
+import android.view.SurfaceControl;
 
 import com.android.internal.policy.DividerSnapAlgorithm;
 import com.android.internal.policy.DividerSnapAlgorithm.SnapTarget;
@@ -127,10 +128,12 @@
     private float mAdjustImeAmount;
     private final int mDockedStackMinimizeThickness;
 
-    // If this is true, the task will be down or upscaled
-    // to perfectly fit the region it would have been cropped
-    // to.
-    private boolean mForceScaleToCrop = false;
+    // If this is true, we are in the bounds animating mode.
+    // The task will be down or upscaled to perfectly fit the
+    // region it would have been cropped to. We may also avoid
+    // certain logic we would otherwise apply while resizing,
+    // while resizing in the bounds animating mode.
+    private boolean mBoundsAnimating = false;
     // By default, movement animations are applied to all
     // window movement. If this is true, animations will not
     // be applied within this stack. This is useful for example
@@ -1269,11 +1272,36 @@
         return true;
     }
 
+    void forceWindowsScaleable(boolean force) {
+        SurfaceControl.openTransaction();
+        try {
+            for (int taskNdx = mTasks.size() - 1; taskNdx >= 0; --taskNdx) {
+                final ArrayList<AppWindowToken> activities = mTasks.get(taskNdx).mAppTokens;
+                for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
+                    final ArrayList<WindowState> windows = activities.get(activityNdx).allAppWindows;
+                    for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) {
+                        final WindowStateAnimator winAnimator = windows.get(winNdx).mWinAnimator;
+                        if (winAnimator == null || !winAnimator.hasSurface()) {
+                            continue;
+                        }
+                        winAnimator.mSurfaceController.forceScaleableInTransaction(force);
+                    }
+                }
+            }
+        } finally {
+            SurfaceControl.closeTransaction();
+        }
+    }
+
     @Override  // AnimatesBounds
     public void onAnimationStart() {
         synchronized (mService.mWindowMap) {
+            // We force windows out of SCALING_MODE_FREEZE
+            // so that we can continue to animate them
+            // while a resize is pending.
+            forceWindowsScaleable(true);
             mFreezeMovementAnimations = true;
-            mForceScaleToCrop = true;
+            mBoundsAnimating = true;
         }
     }
 
@@ -1281,7 +1309,8 @@
     public void onAnimationEnd() {
         synchronized (mService.mWindowMap) {
             mFreezeMovementAnimations = false;
-            mForceScaleToCrop = false;
+            mBoundsAnimating = false;
+            forceWindowsScaleable(false);
             mService.requestTraversal();
         }
         if (mStackId == PINNED_STACK_ID) {
@@ -1312,6 +1341,10 @@
     }
 
     public boolean getForceScaleToCrop() {
-        return mForceScaleToCrop;
+        return mBoundsAnimating;
+    }
+
+    public boolean getBoundsAnimating() {
+        return mBoundsAnimating;
     }
 }
diff --git a/services/core/java/com/android/server/wm/WindowLayersController.java b/services/core/java/com/android/server/wm/WindowLayersController.java
index ed1f428..8608967 100644
--- a/services/core/java/com/android/server/wm/WindowLayersController.java
+++ b/services/core/java/com/android/server/wm/WindowLayersController.java
@@ -59,6 +59,7 @@
     private int mHighestApplicationLayer = 0;
     private ArrayDeque<WindowState> mPinnedWindows = new ArrayDeque<>();
     private ArrayDeque<WindowState> mDockedWindows = new ArrayDeque<>();
+    private ArrayDeque<WindowState> mInputMethodWindows = new ArrayDeque<>();
     private WindowState mDockDivider = null;
     private ArrayDeque<WindowState> mReplacingWindows = new ArrayDeque<>();
 
@@ -166,6 +167,7 @@
     private void clear() {
         mHighestApplicationLayer = 0;
         mPinnedWindows.clear();
+        mInputMethodWindows.clear();
         mDockedWindows.clear();
         mReplacingWindows.clear();
         mDockDivider = null;
@@ -179,6 +181,10 @@
         if (w.mWillReplaceWindow) {
             mReplacingWindows.add(w);
         }
+        if (w.mIsImWindow) {
+            mInputMethodWindows.add(w);
+            return;
+        }
         final TaskStack stack = w.getStack();
         if (stack == null) {
             return;
@@ -200,12 +206,9 @@
 
         layer = assignAndIncreaseLayerIfNeeded(mDockDivider, layer);
 
-        if (mDockDivider != null && mDockDivider.isVisibleLw()
-                && mService.mInputMethodWindow != null) {
-            layer = assignAndIncreaseLayerIfNeeded(mService.mInputMethodWindow, layer);
-            for (int i = mService.mInputMethodDialogs.size() - 1; i >= 0; i--) {
-                final WindowState dialog = mService.mInputMethodDialogs.get(i);
-                layer = assignAndIncreaseLayerIfNeeded(dialog, layer);
+        if (mDockDivider != null && mDockDivider.isVisibleLw()) {
+            while (!mInputMethodWindows.isEmpty()) {
+                layer = assignAndIncreaseLayerIfNeeded(mInputMethodWindows.remove(), layer);
             }
         }
 
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 79ff78e..38f12a1 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -1563,6 +1563,16 @@
                     mLayersController.setInputMethodAnimLayerAdjustment(0);
                 }
             }
+
+            // If the docked divider is visible, we still need to go through this whole
+            // excercise to find the appropriate input method target (used for animations
+            // and dialog adjustments), but for purposes of Z ordering we simply wish to
+            // place it above the docked divider.
+            WindowState dockedDivider = w.mDisplayContent.mDividerControllerLocked.getWindow();
+            if (dockedDivider != null && dockedDivider.isVisibleLw()) {
+                int dividerIndex = windows.indexOf(dockedDivider);
+                return dividerIndex > 0 ? dividerIndex + 1 : i + 1;
+            }
             return i+1;
         }
         if (willMove) {
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 5077f32..76fdda01 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -2382,6 +2382,9 @@
                 if (stack != null) {
                     pw.print(" stackId="); pw.print(stack.mStackId);
                 }
+                if (mNotOnAppsDisplay) {
+                    pw.print(" mNotOnAppsDisplay="); pw.print(mNotOnAppsDisplay);
+                }
                 pw.print(" mSession="); pw.print(mSession);
                 pw.print(" mClient="); pw.println(mClient.asBinder());
         pw.print(prefix); pw.print("mOwnerUid="); pw.print(mOwnerUid);
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index 1f76f31..8c29c9b 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -562,6 +562,7 @@
             Slog.v(TAG, "Finishing drawing window " + mWin + ": mDrawState="
                     + drawStateToString());
         }
+
         if (mWin.mAppToken != null && mWin.mAppToken.mAnimatingWithSavedSurface) {
             // App has drawn something to its windows, we're no longer animating with
             // the saved surfaces. If the user exits now, we only want to save again
@@ -1290,6 +1291,17 @@
     }
     private void adjustCropToStackBounds(WindowState w, Rect clipRect, Rect finalClipRect,
             boolean isFreeformResizing) {
+
+        final DisplayContent displayContent = w.getDisplayContent();
+        if (displayContent != null && !displayContent.isDefaultDisplay) {
+            // There are some windows that live on other displays while their app and main window
+            // live on the default display (e.g. casting...). We don't want to crop this windows
+            // to the stack bounds which is only currently supported on the default display.
+            // TODO(multi-display): Need to support cropping to stack bounds on other displays
+            // when we have stacks on other displays.
+            return;
+        }
+
         final Task task = w.getTask();
         if (task == null || !task.cropWindowsToStackBounds()) {
             return;
@@ -1352,7 +1364,7 @@
         final Task task = w.getTask();
 
         // We got resized, so block all updates until we got the new surface.
-        if (w.mResizedWhileNotDragResizing) {
+        if (w.mResizedWhileNotDragResizing && !w.isGoneForLayoutLw()) {
             return;
         }
 
diff --git a/services/core/java/com/android/server/wm/WindowSurfaceController.java b/services/core/java/com/android/server/wm/WindowSurfaceController.java
index 8799c61..6eed5e7 100644
--- a/services/core/java/com/android/server/wm/WindowSurfaceController.java
+++ b/services/core/java/com/android/server/wm/WindowSurfaceController.java
@@ -23,6 +23,8 @@
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_VISIBILITY;
 import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
 import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
+import static android.view.Surface.SCALING_MODE_FREEZE;
+import static android.view.Surface.SCALING_MODE_SCALE_TO_WINDOW;
 
 import android.graphics.Point;
 import android.graphics.PointF;
@@ -392,6 +394,13 @@
         mSurfaceControl.deferTransactionUntil(handle, frame);
     }
 
+    void forceScaleableInTransaction(boolean force) {
+        // -1 means we don't override the default or client specified
+        // scaling mode.
+        int scalingMode = force ? SCALING_MODE_SCALE_TO_WINDOW : -1;
+        mSurfaceControl.setOverrideScalingMode(scalingMode);
+    }
+
     boolean clearWindowContentFrameStats() {
         if (mSurfaceControl == null) {
             return false;
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index d3d05f3..45a7311 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -2909,6 +2909,54 @@
         }
     }
 
+    public void forceRemoveActiveAdmin(ComponentName adminReceiver, int userHandle) {
+        if (!mHasFeature) {
+            return;
+        }
+        Preconditions.checkNotNull(adminReceiver, "ComponentName is null");
+        enforceShell("forceRemoveActiveAdmin");
+        long ident = mInjector.binderClearCallingIdentity();
+        try {
+            final ApplicationInfo ai;
+            try {
+                ai = mIPackageManager.getApplicationInfo(adminReceiver.getPackageName(),
+                        0, userHandle);
+            } catch (RemoteException e) {
+                throw new IllegalStateException(e);
+            }
+            if (ai == null) {
+                throw new IllegalStateException("Couldn't find package to remove admin "
+                        + adminReceiver.getPackageName() + " " + userHandle);
+            }
+            if ((ai.flags & ApplicationInfo.FLAG_TEST_ONLY) == 0) {
+                throw new SecurityException("Attempt to remove non-test admin " + adminReceiver
+                        + adminReceiver + " " + userHandle);
+            }
+            // If admin is a device or profile owner tidy that up first.
+            synchronized (this)  {
+                if (isDeviceOwner(adminReceiver, userHandle)) {
+                    clearDeviceOwnerLocked(getDeviceOwnerAdminLocked(), userHandle);
+                }
+                if (isProfileOwner(adminReceiver, userHandle)) {
+                    final ActiveAdmin admin = getActiveAdminUncheckedLocked(adminReceiver,
+                            userHandle, /* parent */ false);
+                    clearProfileOwnerLocked(admin, userHandle);
+                }
+            }
+            // Remove the admin skipping sending the broadcast.
+            removeAdminArtifacts(adminReceiver, userHandle);
+        } finally {
+            mInjector.binderRestoreCallingIdentity(ident);
+        }
+    }
+
+    private void enforceShell(String method) {
+        final int callingUid = Binder.getCallingUid();
+        if (callingUid != Process.SHELL_UID && callingUid != Process.ROOT_UID) {
+            throw new SecurityException("Non-shell user attempted to call " + method);
+        }
+    }
+
     @Override
     public void removeActiveAdmin(ComponentName adminReceiver, int userHandle) {
         if (!mHasFeature) {
@@ -5732,32 +5780,37 @@
             enforceUserUnlocked(deviceOwnerUserId);
 
             final ActiveAdmin admin = getDeviceOwnerAdminLocked();
-            if (admin != null) {
-                admin.disableCamera = false;
-                admin.userRestrictions = null;
-                admin.forceEphemeralUsers = false;
-                mUserManagerInternal.setForceEphemeralUsers(admin.forceEphemeralUsers);
-            }
-            clearUserPoliciesLocked(deviceOwnerUserId);
-
-            mOwners.clearDeviceOwner();
-            mOwners.writeDeviceOwner();
-            updateDeviceOwnerLocked();
-            disableSecurityLoggingIfNotCompliant();
-            // Reactivate backup service.
             long ident = mInjector.binderClearCallingIdentity();
             try {
-                mInjector.getIBackupManager().setBackupServiceActive(UserHandle.USER_SYSTEM, true);
-
+                clearDeviceOwnerLocked(admin, deviceOwnerUserId);
                 removeActiveAdminLocked(deviceOwnerComponent, deviceOwnerUserId);
-            } catch (RemoteException e) {
-                throw new IllegalStateException("Failed reactivating backup service.", e);
             } finally {
                 mInjector.binderRestoreCallingIdentity(ident);
             }
         }
     }
 
+    private void clearDeviceOwnerLocked(ActiveAdmin admin, int userId) {
+        if (admin != null) {
+            admin.disableCamera = false;
+            admin.userRestrictions = null;
+            admin.forceEphemeralUsers = false;
+            mUserManagerInternal.setForceEphemeralUsers(admin.forceEphemeralUsers);
+        }
+        clearUserPoliciesLocked(userId);
+
+        mOwners.clearDeviceOwner();
+        mOwners.writeDeviceOwner();
+        updateDeviceOwnerLocked();
+        disableSecurityLoggingIfNotCompliant();
+        try {
+            // Reactivate backup service.
+            mInjector.getIBackupManager().setBackupServiceActive(UserHandle.USER_SYSTEM, true);
+        } catch (RemoteException e) {
+            throw new IllegalStateException("Failed reactivating backup service.", e);
+        }
+    }
+
     @Override
     public boolean setProfileOwner(ComponentName who, String ownerName, int userHandle) {
         if (!mHasFeature) {
@@ -5794,14 +5847,9 @@
         final ActiveAdmin admin =
                 getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
         synchronized (this) {
-            admin.disableCamera = false;
-            admin.userRestrictions = null;
-            clearUserPoliciesLocked(userId);
-            mOwners.removeProfileOwner(userId);
-            mOwners.writeProfileOwner(userId);
-
             final long ident = mInjector.binderClearCallingIdentity();
             try {
+                clearProfileOwnerLocked(admin, userId);
                 removeActiveAdminLocked(who, userId);
             } finally {
                 mInjector.binderRestoreCallingIdentity(ident);
@@ -5809,6 +5857,16 @@
         }
     }
 
+    public void clearProfileOwnerLocked(ActiveAdmin admin, int userId) {
+        if (admin != null) {
+            admin.disableCamera = false;
+            admin.userRestrictions = null;
+        }
+        clearUserPoliciesLocked(userId);
+        mOwners.removeProfileOwner(userId);
+        mOwners.writeProfileOwner(userId);
+    }
+
     @Override
     public void setDeviceOwnerLockScreenInfo(ComponentName who, CharSequence info) {
         Preconditions.checkNotNull(who, "ComponentName is null");
@@ -5842,15 +5900,13 @@
         policy.mUserProvisioningState = DevicePolicyManager.STATE_USER_UNMANAGED;
         saveSettingsLocked(userId);
 
-        final long ident = mInjector.binderClearCallingIdentity();
         try {
             mIPackageManager.updatePermissionFlagsForAllApps(
                     PackageManager.FLAG_PERMISSION_POLICY_FIXED,
                     0  /* flagValues */, userId);
             pushUserRestrictions(userId);
         } catch (RemoteException re) {
-        } finally {
-            mInjector.binderRestoreCallingIdentity(ident);
+            // Shouldn't happen.
         }
     }
 
diff --git a/services/tests/servicestests/Android.mk b/services/tests/servicestests/Android.mk
index 7ffdb35..59c6970 100644
--- a/services/tests/servicestests/Android.mk
+++ b/services/tests/servicestests/Android.mk
@@ -28,10 +28,22 @@
 
 LOCAL_CERTIFICATE := platform
 
-LOCAL_JNI_SHARED_LIBRARIES := \
-    libapfjni \
+# These are not normally accessible from apps so they must be explicitly included.
+LOCAL_JNI_SHARED_LIBRARIES := libservicestestsjni \
+    libbacktrace \
+    libbase \
+    libbinder \
     libc++ \
-    libnativehelper
+    libcutils \
+    liblog \
+    liblzma \
+    libnativehelper \
+    libnetdaidl \
+    libui \
+    libunwind \
+    libutils
+
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
 
 include $(BUILD_PACKAGE)
 
@@ -45,22 +57,24 @@
 
 LOCAL_MODULE_TAGS := tests
 
-LOCAL_CFLAGS := -Wall -Werror
+LOCAL_CFLAGS := -Wall -Wextra -Werror
 
 LOCAL_C_INCLUDES := \
   libpcap \
   hardware/google/apf
 
-LOCAL_SRC_FILES := apf_jni.cpp
+LOCAL_SRC_FILES := $(call all-cpp-files-under)
 
 LOCAL_SHARED_LIBRARIES := \
+  libbinder \
+  libcutils \
   libnativehelper \
-  liblog
+  libnetdaidl
 
 LOCAL_STATIC_LIBRARIES := \
   libpcap \
   libapf
 
-LOCAL_MODULE := libapfjni
+LOCAL_MODULE := libservicestestsjni
 
 include $(BUILD_SHARED_LIBRARY)
diff --git a/services/tests/servicestests/jni/UidRangeTest.cpp b/services/tests/servicestests/jni/UidRangeTest.cpp
new file mode 100644
index 0000000..7941731
--- /dev/null
+++ b/services/tests/servicestests/jni/UidRangeTest.cpp
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2016 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 <memory>
+
+#include <binder/Parcel.h>
+
+#include "UidRangeTest.h"
+
+using android::net::UidRange;
+
+extern "C"
+JNIEXPORT jbyteArray Java_android_net_UidRangeTest_readAndWriteNative(JNIEnv* env, jclass,
+        jbyteArray inParcel) {
+    const UidRange range = unmarshall(env, inParcel);
+    return marshall(env, range);
+}
+
+extern "C"
+JNIEXPORT jint Java_android_net_UidRangeTest_getStart(JNIEnv* env, jclass, jbyteArray inParcel) {
+    const UidRange range = unmarshall(env, inParcel);
+    return range.getStart();
+}
+
+extern "C"
+JNIEXPORT jint Java_android_net_UidRangeTest_getStop(JNIEnv* env, jclass, jbyteArray inParcel) {
+    const UidRange range = unmarshall(env, inParcel);
+    return range.getStop();
+}
+
+
+/**
+ * Reads exactly one UidRange from 'parcelData' assuming that it is a Parcel. Any bytes afterward
+ * are ignored.
+ */
+UidRange unmarshall(JNIEnv* env, jbyteArray parcelData) {
+    const int length = env->GetArrayLength(parcelData);
+
+    std::unique_ptr<uint8_t> bytes(new uint8_t[length]);
+    env->GetByteArrayRegion(parcelData, 0, length, reinterpret_cast<jbyte*>(bytes.get()));
+
+    android::Parcel p;
+    p.setData(bytes.get(), length);
+
+    UidRange range;
+    range.readFromParcel(&p);
+    return range;
+}
+
+/**
+ * Creates a Java byte[] array and writes the contents of 'range' to it as a Parcel containing
+ * exactly one object.
+ *
+ * Every UidRange maps to a unique parcel object, so both 'marshall(e, unmarshall(e, x))' and
+ * 'unmarshall(e, marshall(e, x))' should be fixed points.
+ */
+jbyteArray marshall(JNIEnv* env, const UidRange& range) {
+    android::Parcel p;
+    range.writeToParcel(&p);
+    const int length = p.dataSize();
+
+    jbyteArray parcelData = env->NewByteArray(length);
+    env->SetByteArrayRegion(parcelData, 0, length, reinterpret_cast<const jbyte*>(p.data()));
+
+    return parcelData;
+}
diff --git a/services/tests/servicestests/jni/UidRangeTest.h b/services/tests/servicestests/jni/UidRangeTest.h
new file mode 100644
index 0000000..b7e7453
--- /dev/null
+++ b/services/tests/servicestests/jni/UidRangeTest.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2016 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_NET_UIDRANGETEST_H_
+#define _ANDROID_NET_UIDRANGETEST_H_
+
+#include <jni.h>
+
+#include "android/net/UidRange.h"
+
+android::net::UidRange unmarshall(JNIEnv* env, jbyteArray parcelData);
+
+jbyteArray marshall(JNIEnv* env, const android::net::UidRange& range);
+
+extern "C"
+JNIEXPORT jbyteArray Java_android_net_UidRangeTest_readAndWriteNative(JNIEnv* env, jclass,
+        jbyteArray inParcel);
+
+extern "C"
+JNIEXPORT jint Java_android_net_UidRangeTest_getStart(JNIEnv* env, jclass, jbyteArray inParcel);
+
+extern "C"
+JNIEXPORT jint Java_android_net_UidRangeTest_getStop(JNIEnv* env, jclass, jbyteArray inParcel);
+
+#endif  //  _ANDROID_NET_UIDRANGETEST_H_
diff --git a/services/tests/servicestests/src/android/net/UidRangeTest.java b/services/tests/servicestests/src/android/net/UidRangeTest.java
new file mode 100644
index 0000000..221fe0f
--- /dev/null
+++ b/services/tests/servicestests/src/android/net/UidRangeTest.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2016 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.net;
+
+import android.os.Parcel;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import junit.framework.TestCase;
+
+import static org.junit.Assert.assertArrayEquals;
+
+public class UidRangeTest extends TestCase {
+
+    static {
+        System.loadLibrary("servicestestsjni");
+    }
+
+    private static native byte[] readAndWriteNative(byte[] inParcel);
+    private static native int getStart(byte[] inParcel);
+    private static native int getStop(byte[] inParcel);
+
+    @SmallTest
+    public void testNativeParcelUnparcel() {
+        UidRange original = new UidRange(1234, Integer.MAX_VALUE);
+
+        byte[] inParcel = marshall(original);
+        byte[] outParcel = readAndWriteNative(inParcel);
+        UidRange roundTrip = unmarshall(outParcel);
+
+        assertEquals(original, roundTrip);
+        assertArrayEquals(inParcel, outParcel);
+    }
+
+    @SmallTest
+    public void testIndividualNativeFields() {
+        UidRange original = new UidRange(0x11115678, 0x22224321);
+        byte[] originalBytes = marshall(original);
+
+        assertEquals(original.start, getStart(originalBytes));
+        assertEquals(original.stop, getStop(originalBytes));
+    }
+
+    @SmallTest
+    public void testSingleItemUidRangeAllowed() {
+        new UidRange(123, 123);
+        new UidRange(0, 0);
+        new UidRange(Integer.MAX_VALUE, Integer.MAX_VALUE);
+    }
+
+    @SmallTest
+    public void testNegativeUidsDisallowed() {
+        try {
+            new UidRange(-2, 100);
+            fail("Exception not thrown for negative start UID");
+        } catch (IllegalArgumentException expected) {
+        }
+
+        try {
+            new UidRange(-200, -100);
+            fail("Exception not thrown for negative stop UID");
+        } catch (IllegalArgumentException expected) {
+        }
+    }
+
+    @SmallTest
+    public void testStopLessThanStartDisallowed() {
+        final int x = 4195000;
+        try {
+            new UidRange(x, x - 1);
+            fail("Exception not thrown for negative-length UID range");
+        } catch (IllegalArgumentException expected) {
+        }
+    }
+
+    /**
+     * Write a {@link UidRange} into an empty parcel and return the underlying data.
+     *
+     * @see unmarshall(byte[])
+     */
+    private static byte[] marshall(UidRange range) {
+        Parcel p = Parcel.obtain();
+        range.writeToParcel(p, /* flags */ 0);
+        p.setDataPosition(0);
+        return p.marshall();
+    }
+
+    /**
+     * Read raw bytes into a parcel, and read a {@link UidRange} back out of them.
+     *
+     * @see marshall(UidRange)
+     */
+    private static UidRange unmarshall(byte[] data) {
+        Parcel p = Parcel.obtain();
+        p.unmarshall(data, 0, data.length);
+        p.setDataPosition(0);
+        return UidRange.CREATOR.createFromParcel(p);
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/ApfTest.java b/services/tests/servicestests/src/com/android/server/ApfTest.java
index 640a6c9..9ba27cb 100644
--- a/services/tests/servicestests/src/com/android/server/ApfTest.java
+++ b/services/tests/servicestests/src/com/android/server/ApfTest.java
@@ -43,7 +43,7 @@
     public void setUp() throws Exception {
         super.setUp();
         // Load up native shared library containing APF interpreter exposed via JNI.
-        System.loadLibrary("apfjni");
+        System.loadLibrary("servicestestsjni");
     }
 
     // Expected return codes from APF interpreter.
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
index 837b4a4..386c3aa 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
@@ -128,6 +128,12 @@
     }
 
     @Override
+    public void onUnlockUser(int userHandle) {
+        mServiceStub.initForUser(userHandle);
+        mServiceStub.switchImplementationIfNeeded(false);
+    }
+
+    @Override
     public void onSwitchUser(int userHandle) {
         mServiceStub.switchUser(userHandle);
     }
@@ -362,6 +368,12 @@
             }
         }
 
+        void switchImplementationIfNeeded(boolean force) {
+            synchronized (this) {
+                switchImplementationIfNeededLocked(force);
+            }
+        }
+
         void switchImplementationIfNeededLocked(boolean force) {
             if (!mSafeMode) {
                 String curService = Settings.Secure.getStringForUser(
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index 5ac697f..15d76fd 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -630,6 +630,20 @@
     public static final String KEY_MMS_USER_AGENT_STRING = "userAgent";
 
     /**
+     * If carriers require differentiate un-provisioned status: cold sim or out of credit sim
+     * a package name and activity name can be provided to launch a supported carrier application
+     * that check the sim provisioning status
+     * The first element is the package name and the second element is the activity name
+     * of the provisioning app
+     * example:
+     * <item>com.google.android.carrierPackageName</item>
+     * <item>com.google.android.carrierPackageName.CarrierActivityName</item>
+     * @hide
+     */
+     public static final String KEY_SIM_PROVISIONING_STATUS_DETECTION_CARRIER_APP_STRING_ARRAY =
+            "sim_state_detection_carrier_app_string_array";
+
+    /**
      * Determines whether the carrier supports making non-emergency phone calls while the phone is
      * in emergency callback mode.  Default value is {@code true}, meaning that non-emergency calls
      * are allowed in emergency callback mode.
@@ -798,6 +812,10 @@
         sDefaults.putString(KEY_MMS_USER_AGENT_STRING, "");
         sDefaults.putBoolean(KEY_ALLOW_NON_EMERGENCY_CALLS_IN_ECM_BOOL, true);
         sDefaults.putBoolean(KEY_USE_RCS_PRESENCE_BOOL, false);
+
+        // Used for Sim card State detection app
+        sDefaults.putStringArray(KEY_SIM_PROVISIONING_STATUS_DETECTION_CARRIER_APP_STRING_ARRAY,
+                null);
     }
 
     /**
diff --git a/telephony/java/android/telephony/SubscriptionInfo.java b/telephony/java/android/telephony/SubscriptionInfo.java
index 6229ed9..b5cf212 100644
--- a/telephony/java/android/telephony/SubscriptionInfo.java
+++ b/telephony/java/android/telephony/SubscriptionInfo.java
@@ -90,6 +90,14 @@
     private int mDataRoaming;
 
     /**
+     * Sim Provisioning Status:
+     * {@See SubscriptionManager#SIM_PROVISIONED}
+     * {@See SubscriptionManager#SIM_UNPROVISIONED_COLD}
+     * {@See SubscriptionManager#SIM_UNPROVISIONED_OUT_OF_CREDIT}
+     */
+    private int mSimProvisioningStatus;
+
+    /**
      * SIM Icon bitmap
      */
     private Bitmap mIconBitmap;
@@ -114,7 +122,7 @@
      */
     public SubscriptionInfo(int id, String iccId, int simSlotIndex, CharSequence displayName,
             CharSequence carrierName, int nameSource, int iconTint, String number, int roaming,
-            Bitmap icon, int mcc, int mnc, String countryIso) {
+            Bitmap icon, int mcc, int mnc, String countryIso, int simProvisioningStatus) {
         this.mId = id;
         this.mIccId = iccId;
         this.mSimSlotIndex = simSlotIndex;
@@ -128,6 +136,7 @@
         this.mMcc = mcc;
         this.mMnc = mnc;
         this.mCountryIso = countryIso;
+        this.mSimProvisioningStatus = simProvisioningStatus;
     }
 
     /**
@@ -264,6 +273,17 @@
     }
 
     /**
+     * @return Sim Provisioning Status
+     * {@See SubscriptionManager#SIM_PROVISIONED}
+     * {@See SubscriptionManager#SIM_UNPROVISIONED_COLD}
+     * {@See SubscriptionManager#SIM_UNPROVISIONED_OUT_OF_CREDIT}
+     * @hide
+     */
+    public int getSimProvisioningStatus() {
+        return this.mSimProvisioningStatus;
+    }
+
+    /**
      * @return the MCC.
      */
     public int getMcc() {
@@ -299,10 +319,12 @@
             int mcc = source.readInt();
             int mnc = source.readInt();
             String countryIso = source.readString();
+            int simProvisioningStatus = source.readInt();
             Bitmap iconBitmap = Bitmap.CREATOR.createFromParcel(source);
 
             return new SubscriptionInfo(id, iccId, simSlotIndex, displayName, carrierName,
-                    nameSource, iconTint, number, dataRoaming, iconBitmap, mcc, mnc, countryIso);
+                    nameSource, iconTint, number, dataRoaming, iconBitmap, mcc, mnc, countryIso,
+                    simProvisioningStatus);
         }
 
         @Override
@@ -325,6 +347,7 @@
         dest.writeInt(mMcc);
         dest.writeInt(mMnc);
         dest.writeString(mCountryIso);
+        dest.writeInt(mSimProvisioningStatus);
         mIconBitmap.writeToParcel(dest, flags);
     }
 
@@ -355,6 +378,6 @@
                 + " displayName=" + mDisplayName + " carrierName=" + mCarrierName
                 + " nameSource=" + mNameSource + " iconTint=" + mIconTint
                 + " dataRoaming=" + mDataRoaming + " iconBitmap=" + mIconBitmap + " mcc " + mMcc
-                + " mnc " + mMnc + "}";
+                + " mnc " + mMnc + " SimProvisioningStatus " + mSimProvisioningStatus +"}";
     }
 }
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
index f3b0ce2..c49966a 100644
--- a/telephony/java/android/telephony/SubscriptionManager.java
+++ b/telephony/java/android/telephony/SubscriptionManager.java
@@ -232,6 +232,22 @@
     /** Indicates that data roaming is disabled for a subscription */
     public static final int DATA_ROAMING_DISABLE = 0;
 
+    /** Sim provisioning status: provisioned */
+    /** @hide */
+    public static final int SIM_PROVISIONED = 0;
+
+    /** Sim provisioning status: un-provisioned due to cold sim */
+    /** @hide */
+    public static final int SIM_UNPROVISIONED_COLD = 1;
+
+    /** Sim provisioning status: un-provisioned due to out of credit */
+    /** @hide */
+    public static final int SIM_UNPROVISIONED_OUT_OF_CREDIT = 2;
+
+    /** Maximum possible sim provisioning status */
+    /** @hide */
+    public static final int MAX_SIM_PROVISIONING_STATUS = SIM_UNPROVISIONED_OUT_OF_CREDIT;
+
     /** @hide */
     public static final int DATA_ROAMING_DEFAULT = DATA_ROAMING_DISABLE;
 
@@ -250,6 +266,13 @@
     public static final String MNC = "mnc";
 
     /**
+     * TelephonyProvider column name for the sim provisioning status associated with a SIM.
+     * <P>Type: INTEGER (int)</P>
+     * @hide
+     */
+    public static final String SIM_PROVISIONING_STATUS = "sim_provisioning_status";
+
+    /**
      *  TelephonyProvider column name for extreme threat in CB settings
      * @hide
      */
@@ -820,6 +843,40 @@
     }
 
     /**
+     * Set Sim Provisioning Status by subscription ID
+     * @param simProvisioningStatus with the subscription
+     * {@See SubscriptionManager#SIM_PROVISIONED}
+     * {@See SubscriptionManager#SIM_UNPROVISIONED_COLD}
+     * {@See SubscriptionManager#SIM_UNPROVISIONED_OUT_OF_CREDIT}
+     * @param subId the unique SubInfoRecord index in database
+     * @return the number of records updated
+     * Permissions android.Manifest.permission.MODIFY_PHONE_STATE is required
+     * @hide
+     */
+    public int setSimProvisioningStatus(int simProvisioningStatus, int subId) {
+        if (VDBG) {
+            logd("[setSimProvisioningStatus]+ status:" + simProvisioningStatus + " subId:" + subId);
+        }
+        if (simProvisioningStatus < 0 || simProvisioningStatus > MAX_SIM_PROVISIONING_STATUS ||
+                !isValidSubscriptionId(subId)) {
+            logd("[setSimProvisioningStatus]- fail");
+            return -1;
+        }
+
+        int result = 0;
+
+        try {
+            ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub"));
+            if (iSub != null) {
+                result = iSub.setSimProvisioningStatus(simProvisioningStatus, subId);
+            }
+        } catch (RemoteException ex) {
+            // ignore it
+        }
+        return result;
+    }
+
+    /**
      * Get slotId associated with the subscription.
      * @return slotId as a positive integer or a negative value if an error either
      * SIM_NOT_INSERTED or < 0 if an invalid slot index
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 394fc27..69fdadf 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -2869,27 +2869,40 @@
 
     /**
      * Returns all observed cell information from all radios on the
-     * device including the primary and neighboring cells. This does
-     * not cause or change the rate of PhoneStateListener#onCellInfoChanged.
-     *<p>
-     * The list can include one or more of {@link android.telephony.CellInfoGsm CellInfoGsm},
-     * {@link android.telephony.CellInfoCdma CellInfoCdma},
-     * {@link android.telephony.CellInfoLte CellInfoLte} and
-     * {@link android.telephony.CellInfoWcdma CellInfoWcdma} in any combination.
-     * Specifically on devices with multiple radios it is typical to see instances of
-     * one or more of any these in the list. In addition 0, 1 or more CellInfo
-     * objects may return isRegistered() true.
-     *<p>
-     * This is preferred over using getCellLocation although for older
-     * devices this may return null in which case getCellLocation should
-     * be called.
-     *<p>
-     * This API will return valid data for registered cells on devices with
-     * {@link android.content.pm.PackageManager#FEATURE_TELEPHONY}
-     *<p>
-     * @return List of CellInfo or null if info unavailable.
+     * device including the primary and neighboring cells. Calling this method does
+     * not trigger a call to {@link android.telephony.PhoneStateListener#onCellInfoChanged
+     * onCellInfoChanged()}, or change the rate at which
+     * {@link android.telephony.PhoneStateListener#onCellInfoChanged
+     * onCellInfoChanged()} is called.
      *
-     * <p>Requires Permission: {@link android.Manifest.permission#ACCESS_COARSE_LOCATION}
+     *<p>
+     * The list can include one or more {@link android.telephony.CellInfoGsm CellInfoGsm},
+     * {@link android.telephony.CellInfoCdma CellInfoCdma},
+     * {@link android.telephony.CellInfoLte CellInfoLte}, and
+     * {@link android.telephony.CellInfoWcdma CellInfoWcdma} objects, in any combination.
+     * On devices with multiple radios it is typical to see instances of
+     * one or more of any these in the list. In addition, zero, one, or more
+     * of the returned objects may be considered registered; that is, their
+     * {@link android.telephony.CellInfo#isRegistered CellInfo.isRegistered()}
+     * methods may return true.
+     *
+     * <p>This method returns valid data for registered cells on devices with
+     * {@link android.content.pm.PackageManager#FEATURE_TELEPHONY}.
+     *
+     *<p>
+     * This method is preferred over using {@link
+     * android.telephony.TelephonyManager#getCellLocation getCellLocation()}.
+     * However, for older devices, <code>getAllCellInfo()</code> may return
+     * null. In these cases, you should call {@link
+     * android.telephony.TelephonyManager#getCellLocation getCellLocation()}
+     * instead.
+     *
+     * <p>Requires permission:
+     * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION}
+     *
+     * @return List of {@link android.telephony.CellInfo}; null if cell
+     * information is unavailable.
+     *
      */
     public List<CellInfo> getAllCellInfo() {
         try {
diff --git a/telephony/java/com/android/internal/telephony/DctConstants.java b/telephony/java/com/android/internal/telephony/DctConstants.java
index ccabace..e4981ce 100644
--- a/telephony/java/com/android/internal/telephony/DctConstants.java
+++ b/telephony/java/com/android/internal/telephony/DctConstants.java
@@ -103,6 +103,7 @@
     public static final int EVENT_DATA_RAT_CHANGED = BASE + 41;
     public static final int CMD_CLEAR_PROVISIONING_SPINNER = BASE + 42;
     public static final int EVENT_DEVICE_PROVISIONED_CHANGE = BASE + 43;
+    public static final int EVENT_REDIRECTION_DETECTED = BASE + 44;
 
     /***** Constants *****/
 
diff --git a/telephony/java/com/android/internal/telephony/ISub.aidl b/telephony/java/com/android/internal/telephony/ISub.aidl
index f6aef08..c61ed2a 100755
--- a/telephony/java/com/android/internal/telephony/ISub.aidl
+++ b/telephony/java/com/android/internal/telephony/ISub.aidl
@@ -118,6 +118,17 @@
     int setDisplayName(String displayName, int subId);
 
     /**
+     * Set Sim Provisioning Status by subscription ID
+     * @param simProvisionStatus with the subscription:
+     * {@See SubscriptionManager#SIM_PROVISIONED}
+     * {@See SubscriptionManager#SIM_UNPROVISIONED_COLD}
+     * {@See SubscriptionManager#SIM_UNPROVISIONED_OUT_OF_CREDIT}
+     * @param subId the unique SubInfoRecord index in database
+     * @return the number of records updated
+     */
+    int setSimProvisioningStatus(int simProvisioningStatus, int subId);
+
+    /**
      * Set display name by simInfo index with name source
      * @param displayName the display name of SIM card
      * @param subId the unique SubscriptionInfo index in database
diff --git a/telephony/java/com/android/internal/telephony/TelephonyIntents.java b/telephony/java/com/android/internal/telephony/TelephonyIntents.java
index c70f8cf..eafb3d4 100644
--- a/telephony/java/com/android/internal/telephony/TelephonyIntents.java
+++ b/telephony/java/com/android/internal/telephony/TelephonyIntents.java
@@ -395,4 +395,32 @@
      */
     public static final String ACTION_SET_RADIO_CAPABILITY_FAILED =
             "android.intent.action.ACTION_SET_RADIO_CAPABILITY_FAILED";
+
+    /**
+     * <p>Broadcast Action: when data connections get redirected with validation failure.
+     * intended for sim/account status checks and only sent to the specified carrier app
+     * feedback is via carrier/system APIs to report cold-sim, out-of-credit-sim, etc
+     * The intent will have the following extra values:</p>
+     * <ul>
+     *   <li>redirectUrl</li><dd>A string with the redirection url info.</dd>
+     *   <li>subId</li><dd>Sub Id which associated the data redirection.</dd>
+     * </ul>
+     * <p class="note">This is a protected intent that can only be sent by the system.</p>
+     */
+    public static final String ACTION_DATA_CONNECTION_REDIRECTED =
+            "android.intent.action.REDIRECTION_DETECTED";
+    /**
+     * <p>Broadcast Action: when data connections setup fails.
+     * intended for sim/account status checks and only sent to the specified carrier app
+     * feedback is via carrier/system APIs to report cold-sim, out-of-credit-sim, etc
+     * The intent will have the following extra values:</p>
+     * <ul>
+     *   <li>apnType</li><dd>A string with the apn type.</dd>
+     *   <li>errorCode</li><dd>A integer with dataFailCause.</dd>
+     *   <li>subId</dt><li>Sub Id which associated the data redirection.</dd>
+     * </ul>
+     * <p class="note">This is a protected intent that can only be sent by the system. </p>
+     */
+    public static final String ACTION_REQUEST_NETWORK_FAILED =
+            "android.intent.action.REQUEST_NETWORK_FAILED";
 }